diff --git a/.github/workflows/attach_build_products.yml b/.github/workflows/attach_build_products.yml new file mode 100644 index 0000000000..40e1a969b8 --- /dev/null +++ b/.github/workflows/attach_build_products.yml @@ -0,0 +1,22 @@ +name: Add artifact links to pull request and related issues +on: + workflow_run: + workflows: [Build and Upload Provenance] + types: [completed] + +jobs: + artifacts-url-comments: + name: add artifact links to pull request and related issues job + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - name: add artifact links to pull request and related issues step + uses: tonyhallett/artifacts-url-comments@v1.1.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + prefix: Builds for this Pull Request are available at + suffix: Have a nice day. + format: name + addTo: pull + # addTo: pullandissues \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..191eed0d41 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,93 @@ +name: Build and Upload Provenance +on: + push: + branches: + - master + - develop + pull_request: + branches: + - master + - develop + +env: + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + +jobs: + build: + name: Build and upload Provenance + strategy: + fail-fast: false + matrix: + include: + - os: 'macos-12' + version: '14.1' + + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: recursive + + # - name: Install Xcode + # uses: maxim-lobanov/setup-xcode@v1 + # with: + # xcode-version: ${{ matrix.version }} + + - name: Setup Xcode + uses: maxim-lobanov/setup-xcode@v1.5.1 + with: + xcode-version: ${{ matrix.version }} + # xcode-select-path: /Applications/Xcode_${{ matrix.version }}.app/Contents/Developer + + - name: Install dependencies + run: brew install ldid + + - name: Build Provenance + run: | + xcodebuild -workspace Provenance.xcworkspace -scheme Provenance-Release -sdk iphoneos archive -archivePath ./archive CODE_SIGNING_REQUIRED=NO AD_HOC_CODE_SIGNING_ALLOWED=YES CODE_SIGNING_ALLOWED=NO DEVELOPMENT_TEAM=XYZ0123456 ORG_IDENTIFIER=org.provenance-emu | xcpretty && exit ${PIPESTATUS[0]} + + # - name: Build Provenance + # run: | + # rm -rf ~/Library/Developer/Xcode/DerivedData/ + # rm ./Provenance.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved + # rm ./Provenance.xcworkspace/xcshareddata/swiftpm/Package.resolved + # xcodebuild -workspace Provenance.xcworkspace -scheme Provenance-Release -sdk iphoneos archive -archivePath ./archive CODE_SIGNING_REQUIRED=NO AD_HOC_CODE_SIGNING_ALLOWED=YES CODE_SIGNING_ALLOWED=NO DEVELOPMENT_TEAM=XYZ0123456 ORG_IDENTIFIER=org.provenance-emu | xcpretty && exit ${PIPESTATUS[0]} + + - name: Fakesign app + run: | + rm -rf archive.xcarchive/Products/Applications/Provenance.app/Frameworks/*.framework/Frameworks/ + ldid -SProvenance/Provenance.entitlements archive.xcarchive/Products/Applications/Provenance.app/Provenance + + - name: Convert to IPA + run: | + mkdir Payload + mkdir Payload/Provenance.app + cp -R archive.xcarchive/Products/Applications/Provenance.app/ Payload/Provenance.app/ + zip -r Provenance.ipa Payload + + - name: Upload Artifact + uses: actions/upload-artifact@v3.1.0 + with: + name: Provenance.ipa + path: Provenance.ipa + + # - name: Upload IPA to S3 + # if: ${{ github.branch == 'develop' }} + # uses: ebuckthal/s3-upload-artifact@v7 + # with: + # bucket: 'sh-sysops' + # key: ${AWS_SECRET_ACCESS_KEY} + # path: 'Provenance.ipa' + + # - name: Upload IPA to App Center + # uses: wzieba/AppCenter-Github-Action@v1 + # if: ${{ github.branch == 'develop' }} + # with: + # appName: wzieba/Sample-App + # token: ${{secrets.APP_CENTER_TOKEN}} + # group: Testers + # file: Provenance.ipa + # notifyTesters: true + # debug: false \ No newline at end of file diff --git a/.github/workflows/codesee-arch-diagram.yml b/.github/workflows/codesee-arch-diagram.yml new file mode 100644 index 0000000000..4f81759a5c --- /dev/null +++ b/.github/workflows/codesee-arch-diagram.yml @@ -0,0 +1,91 @@ +# This workflow was added by CodeSee. Learn more at https://codesee.io/ +# This is v2.0 of this workflow file +on: + push: + branches: + - develop + pull_request_target: + types: [opened, synchronize, reopened] + +name: CodeSee Map + +permissions: read-all + +jobs: + test_map_action: + runs-on: ubuntu-latest + continue-on-error: true + name: Run CodeSee Map Analysis + steps: + - name: checkout + id: checkout + uses: actions/checkout@v3 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + fetch-depth: 0 + + # codesee-detect-languages has an output with id languages. + - name: Detect Languages + id: detect-languages + uses: Codesee-io/codesee-detect-languages-action@latest + + - name: Configure JDK 16 + uses: actions/setup-java@v3 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).java }} + with: + java-version: '16' + distribution: 'zulu' + + # CodeSee Maps Go support uses a static binary so there's no setup step required. + + - name: Configure Node.js 16 + uses: actions/setup-node@v3 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).javascript }} + with: + node-version: '16' + + - name: Configure Python 3.x + uses: actions/setup-python@v4 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).python }} + with: + python-version: '3.x' + architecture: 'x64' + + - name: Configure Ruby '3.x' + uses: ruby/setup-ruby@v1 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).ruby }} + with: + ruby-version: '3.0' + + # We need the rust toolchain because it uses rustc and cargo to inspect the package + - name: Configure Rust 1.x stable + uses: actions-rs/toolchain@v1 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).rust }} + with: + toolchain: stable + + - name: Generate Map + id: generate-map + uses: Codesee-io/codesee-map-action@latest + with: + step: map + api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} + github_ref: ${{ github.ref }} + languages: ${{ steps.detect-languages.outputs.languages }} + + - name: Upload Map + id: upload-map + uses: Codesee-io/codesee-map-action@latest + with: + step: mapUpload + api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} + github_ref: ${{ github.ref }} + + - name: Insights + id: insights + uses: Codesee-io/codesee-map-action@latest + with: + step: insights + api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} + github_ref: ${{ github.ref }} diff --git a/.github/workflows/autosquash.yml b/.github/workflows/disabled/autosquash.yml similarity index 100% rename from .github/workflows/autosquash.yml rename to .github/workflows/disabled/autosquash.yml diff --git a/.github/workflows/contributors.yml b/.github/workflows/disabled/contributors.yml similarity index 100% rename from .github/workflows/contributors.yml rename to .github/workflows/disabled/contributors.yml diff --git a/.github/workflows/greet-contributors.yml b/.github/workflows/disabled/greet-contributors.yml similarity index 100% rename from .github/workflows/greet-contributors.yml rename to .github/workflows/disabled/greet-contributors.yml diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index f13dc6158c..378e72370a 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -15,6 +15,6 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} fetch-depth: 0 # otherwise, you will fail to push refs to dest repo - name: Automatic Rebase - uses: cirrus-actions/rebase@1.4 + uses: cirrus-actions/rebase@1.7 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 5d6fdfbc05..b2f5864e5e 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ report.xml /Cores/PPSSPP/cmake/lib/Debug/libSPIRV.a Cores/PPSSPP/cmake/lib/ /CodeSigning.xcconfig +*.xcarchive diff --git a/.gitmodules b/.gitmodules index 1bbfdede95..a9c3876c8a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,9 +7,6 @@ [submodule "PVMupen64Plus/Plugins/mupen64plus-rsp-hle"] path = Cores/Mupen64Plus/Plugins/rsp/hle url = https://github.com/mupen64plus/mupen64plus-rsp-hle.git -[submodule "PVMupen64Plus/Plugins/mupen64plus-rsp-cxd4"] - path = Cores/Mupen64Plus/Plugins/rsp/cxd4 - url = https://github.com/Provenance-Emu/mupen64plus-rsp-cxd4.git [submodule "PVMupen64Plus/Plugins/mupen64plus-video-rice"] path = Cores/Mupen64Plus/Plugins/Video/rice url = https://github.com/Provenance-Emu/mupen64plus-video-rice.git @@ -49,9 +46,6 @@ [submodule "Cores/O2EM"] path = Cores/O2EM url = https://github.com/Provenance-Emu/O2EM-Core.git -[submodule "Cores/VecXGL"] - path = Cores/VecXGL - url = https://github.com/Provenance-Emu/VecXGL-Core.git [submodule "Cores/CrabEMU"] path = Cores/CrabEMU url = https://github.com/Provenance-Emu/CrabEmu-Core.git @@ -82,3 +76,75 @@ [submodule "Cores/DosBox/dosbox-pure"] path = Cores/DosBox/dosbox-pure url = https://github.com/Provenance-Emu/dosbox-pure.git +[submodule "Cores/Mini_vMac/libretro-minivmac"] + path = Cores/Mini_vMac/libretro-minivmac + url = https://github.com/Provenance-Emu/libretro-minivmac.git +[submodule "Cores/BeetlePSX/beetle-psx-libretro"] + path = Cores/BeetlePSX/beetle-psx-libretro + url = https://github.com/Provenance-Emu/beetle-psx-libretro.git +[submodule "Cores/Potator/potator"] + path = Cores/Potator/potator + url = https://github.com/Provenance-Emu/potator.git +[submodule "Cores/ep128emu/ep128emu-core"] + path = Cores/ep128emu/ep128emu-core + url = https://github.com/Provenance-Emu/ep128emu-core.git +[submodule "Cores/hatari/hatari"] + path = Cores/hatari/hatari + url = https://github.com/Provenance-Emu/hatari.git +[submodule "Cores/fmsx/fmsx-libretro"] + path = Cores/fmsx/fmsx-libretro + url = https://github.com/Provenance-Emu/fmsx-libretro.git +[submodule "Cores/pcsx_rearmed/pcsx_rearmed"] + path = Cores/pcsx_rearmed/pcsx_rearmed + url = https://github.com/Provenance-Emu/pcsx_rearmed.git +[submodule "Cores/opera/opera-libretro"] + path = Cores/opera/opera-libretro + url = https://github.com/Provenance-Emu/opera-libretro.git +[submodule "Cores/Mu/Mu"] + path = Cores/Mu/Mu + url = https://github.com/Provenance-Emu/Mu.git +[submodule "Cores/Yabause/yabause"] + path = Cores/Yabause/yabause + url = https://github.com/Provenance-Emu/yabause.git +[submodule "Cores/melonDS/melonDS"] + path = Cores/melonDS/melonDS + url = https://github.com/Provenance-Emu/melonDS.git +[submodule "Cores/Mupen64Plus-NX/mupen64plus-libretro-nx"] + path = Cores/Mupen64Plus-NX/mupen64plus-libretro-nx + url = https://github.com/Provenance-Emu/mupen64plus-libretro-nx.git +[submodule "Cores/GameMusicEmu/libretro-gme"] + path = Cores/GameMusicEmu/libretro-gme + url = https://github.com/Provenance-Emu/libretro-gme.git +[submodule "Cores/VecX/libretro-vecx"] + path = Cores/VecX/libretro-vecx + url = https://github.com/Provenance-Emu/libretro-vecx.git +[submodule "Cores/Stella/Stella/stella"] + path = Cores/Stella/Stella/stella + url = https://github.com/Provenance-Emu/stella.git +[submodule "Cores/SameDuck/SameBoy"] + path = Cores/SameDuck/SameBoy + url = https://github.com/Provenance-Emu/SameBoy.git +[submodule "Cores/blueMSX/blueMSX-libretro"] + path = Cores/blueMSX/blueMSX-libretro + url = https://github.com/Provenance-Emu/blueMSX-libretro.git +[submodule "Cores/fuse/fuse-libretro"] + path = Cores/fuse/fuse-libretro + url = https://github.com/Provenance-Emu/fuse-libretro.git +[submodule "Cores/Gearcoleco/Gearcoleco"] + path = Cores/Gearcoleco/Gearcoleco + url = https://github.com/Provenance-Emu/Gearcoleco.git +[submodule "Cores/Citra/citra"] + path = Cores/Citra/citra + url = https://github.com/Provenance-Emu/citra.git +[submodule "Cores/FreeIntv/FreeIntv"] + path = Cores/FreeIntv/FreeIntv + url = https://github.com/Provenance-Emu/FreeIntv.git +[submodule "Cores/Genesis-Plus-GX/PVGenesis/Deps/Genesis-Plus-GX"] + path = Cores/Genesis-Plus-GX/PVGenesis/Deps/Genesis-Plus-GX + url = https://github.com/Provenance-Emu/Genesis-Plus-GX.git +[submodule "Cores/Mupen64Plus/Plugins/rsp/cxd4"] + path = Cores/Mupen64Plus/Plugins/rsp/cxd4 + url = https://github.com/Provenance-Emu/mupen64plus-rsp-cxd4.git +[submodule "Cores/TIC80/TIC-80"] + path = Cores/TIC80/TIC-80 + url = https://github.com/Provenance-Emu/TIC-80.git diff --git a/Build-iOS.xcconfig b/Build-iOS.xcconfig index 7816cc9a11..a5cc2b1a3d 100644 --- a/Build-iOS.xcconfig +++ b/Build-iOS.xcconfig @@ -1 +1,4 @@ #include "Build.xcconfig" + +IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*] = 14.2 +IPHONEOS_DEPLOYMENT_TARGET = 13.0 diff --git a/Build-tvOS.xcconfig b/Build-tvOS.xcconfig index 7816cc9a11..c3b0b56ac6 100644 --- a/Build-tvOS.xcconfig +++ b/Build-tvOS.xcconfig @@ -1 +1,3 @@ #include "Build.xcconfig" + +TVOS_DEPLOYMENT_TARGET = 13.0 diff --git a/Build.xcconfig b/Build.xcconfig index 9739ebe9d3..700254f692 100644 --- a/Build.xcconfig +++ b/Build.xcconfig @@ -1,8 +1,10 @@ // Configuration settings file format documentation can be found at: // https://help.apple.com/xcode/#/dev745c5c974 -MARKETING_VERSION = 2.1.1 -CURRENT_PROJECT_VERSION = 2781 +MARKETING_VERSION = 2.2.0 +CURRENT_PROJECT_VERSION = 2795 + +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) GLES_SILENCE_DEPRECATION=1 // Vars to be overwritten by `CodeSigning.xcconfig` if exists DEVELOPMENT_TEAM = S32Z3HMYVQ @@ -38,6 +40,8 @@ TVOS_CODE_SIGN_ENTITLEMENTS_NO = TOPSHELF_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower).topshelf SPOTLIGHT_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower).spotlight +EXTENSION_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower).$(PRODUCT_NAME:lower) + WATCH_PRODUCT_BUNDLE_IDENTIFIER = $(ORG_PREFIX).$(PROJECT_NAME:lower)-watch WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER = $(WATCH_PRODUCT_BUNDLE_IDENTIFIER).watchkitapp WATCH_APP_EXTENSION_PRODUCT_BUNDLE_IDENTIFIER = $(WATCH_APP_PRODUCT_BUNDLE_IDENTIFIER).watchkitextension diff --git a/CHANGELOG.md b/CHANGELOG.md index a38adcce6a..4aac3efbb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,465 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.2.0] - 2022-12-02 + +Super special thanks to @Carter1190 @dnicolson @ianclawson @mrjschulte @stuartcarnie for providing pull requests. +Special thanks for all the Patreon and Discord members that provided testing feedback and support. + +### Added + +- Light/Dark theme +- tvOS artwork options +- Saturn Core options +- Option for onscreen joystick with keyboard on/off, or never. +- add build.yml for github actions +- stella: joystick deadzone + +### Fixed + +- tvOS various layout, styling improvements +- fixes #1915 joystick layout busted +- BoxArt fix nil crash +- add sfc extension +- Catalyst, fix crash on game load +- catalyst: remove broken bliss +- fixes #1973 incorrect paths in xcworkspace +- fixes #1991 Fixes mupen plugin paths +- fixes #1997 update ios launch storyboard +- fixes #2010 remove unused codesign settings +- disable broken contributors.yml +- fix various tvos targets with wrong target platfrm +- fixes #1814 Use documents for image cache +- Fixes #1814, lib deletion and icloud fixes +- fixes #1986 adds ways to press start in SS +- fixes #1986 Saturn start MFi, I think. +- fixes #2019 Mednafen SNES A/B swap +- fixes #2026 joyPad move works, clear BG +- fixes #2027 importer double run and deleting +- fix archive step +- fix artwork download +- stella: don’t crash on 2nd load +- stella: updated and cheats,save support +- closes #1765 map dualsense home to pause on saturn +- closes #1765 map dualsense home to pause on saturn +- closes #1888 fix n64 scaling +- closes #1903 tvos build broken +- conflicts manager add delete option +### Updated + +- Min target iOS 13 all around +- More localised strings and xib's +- SwiftUI additions and fixes +### PRs + +- Merge branch 'feature/dos-box' into develop +- Merge branch 'remove-unneeded-styling' into develop +- Merge branch 'remove-unneeded-table-generics' into develop +- Merge pull request #1919 from Provenance-Emu/feature/dos-box +- Merge pull request #1995 from dnicolson/style-fixes +- Merge pull request #2006 from Provenance-Emu/pullrequests/dnicolson/general-cleanup +- Merge pull request #2015 from dnicolson/fix-constraint-warnings +- Merge pull request #2016 from dnicolson/use-tvalertcontroller +- Merge pull request #2017 from dnicolson/remove-unneeded-styling +- Merge pull request #2018 from dnicolson/use-system-background-for-settings +- Merge pull request #2025 from Provenance-Emu/largeGameArt-Support +- Merge pull request #2028 from dnicolson/add-light-theme +- Merge pull request #2029 from Provenance-Emu/tvOS-GameInfo-Tweaks +- Merge pull request #2030 from Provenance-Emu/feature/JoystickFixes +- Merge pull request #2033 from dnicolson/fix-library-bottom-separators +- Merge pull request #2036 from Provenance-Emu/feature/gh_build_action +- Merge pull request #2038 from Provenance-Emu/mrjschulte_section_header_fix_tvOS + +### GitLog + +- Add theme switcher +- Add ThemeOptions enum +- Adjust cell height as needed +- AppDelegate refactor code, improve URL open +- AppDelegate start of save open +- azure 14.1 +- azure pipeline macos-12 +- azure turn off xcode pretty +- azure update to newer xcode/macos +- cdx4 fix submodule +- cicd remove UIBrackgroundModes processing +- citra: combine platforms +- core 4do updates to fix tvos +- cores framework don’t embed +- cores table view, hide unsupported cores unless on +- Cores, add .core.name to ones that didn’t +- cxd4 fix submodule bs +- delete dup schemes, new shaders, blissemu framewk +- delete old tvos schemes and rename others +- desmume2015 readd and fix debug +- duckstation: fix some build stuff +- entitlements remove ones that break xc cloud +- Extend navigation bar +- Extensions placeholders for new ones +- fastlane update +- Fix 4do build and almost works, bad gfx freedo +- Fix and update Marketing Version 2.1.2 +- Fix button height constraint warning +- fix catalyst builds +- Fix cell background color +- Fix cell font sizes +- Fix controller selection table cell focus +- Fix entitlement paths for 2 extions +- Fix extensions in build +- Fix iCade controller cell background +- Fix iCloud, Spotlight entitlement, re-import path +- fix ios/tvos build +- Fix library options cell background color +- Fix logs crash +- fix macos/catalyst build and export +- Fix navigation bar tint color +- Fix PVFile iCloud paths incorrect +- Fix slider cell text alignment +- fix some warnings and self capture +- Fix stack spacing constraint warning +- fix submodules +- Fix SwiftUI crash on iOS 16 +- fix tvos availability +- Fix tvOS build +- flycast builds +- flycast, fbneo, dolphin fix some build stuff +- Frameworks combined into single multi-platform! +- fuse fix some build stuff +- game view cell, hide delete text on start +- GameLibVC fix potential crash +- gba remove driverkit +- gcdweb fix QOS +- genesis: reflector2static libs, submodule 4 upstrm +- gh action fix xcodebuild command +- gh action macos-12 +- git insists on touching these submodules +- github action build test +- GitHub actions disable broken ones +- gitignore .xcarchive +- Hide unsupported cores from conflicts unless on +- iCloud containers fix thread issue/warning +- icloud sync catch exception +- Improve how theme is set +- Info.plist add ITSAppUsesNonExemptEncryption +- Info.plist fix xcode cloud issues +- Install the CodeSee workflow. Learn more at https://docs.codesee.io +- intellivision respond protocol fixes +- ios fix gliden compile +- iOS settings menu replace (i) with > +- jaguar: core update video fixes +- Launch screen add brazil locale +- libretro build flags update +- Make web server alerts consistent +- mednafen fix targeted device families +- mednafen refactor controls to catagory +- mednafen: refactor compiler flags to xcconfig +- mednafen: remove broken options,controller reorder +- melon DLOG for nslog +- melonds build flags update +- MetalVC minor catalyst chagnes +- mu fixed embedded framework +- mupen audio on/off callbacks +- mupen speed option +- mupen: fix crash on load +- mupen: hi res off by default, fix catalyst +- n64 controller fix warning +- obscure cores various build fixes +- On screen controller adjustments +- option lcd filter +- Patreon features +- pcsx reamred builds +- pcsx submodule +- pcsx, fix submodule again +- PCSXRearmed added to build +- play: builds with gfx and audio callbacks +- play: fix build +- play: fix release build +- Prevent bottom separators from disappearing +- project remove nil file +- ps2: add bios info +- PVGenesis -Os +- PVLIBRARY fix copy/embed +- PVLogVC fix tvOS color error +- Reduce width of log buttons +- Remove Bliss, its breaking CI +- remove broken cores from build +- Remove cancel action from alert +- Remove cell background color +- remove duckstation from build +- Remove forced dark interface style +- Remove iOS 11 conditional +- Remove iOS 13 conditionals +- remove old vibrate for xccloud +- Remove PVRadioOptionRow and PVRadioOptionCell +- Remove red cell background +- Remove redundant style +- Remove SettingsTableView class +- Remove styles in favor of defaults +- Remove SystemSettingsCell +- Remove SystemSettingsHeaderCell +- Remove unimplimented extensions from app target +- Remove unneeded code +- Remove unneeded guard clause +- Remove unneeded ifdef +- Remove unneeded QuickTableView generics (#2031) +- Remove unneeded section header styles +- Remove unneeded styling +- Remove unused code +- Remove unused file +- remove unused macos xib +- Remove unused styling +- Remove unused variable +- Remove VecXGL submodule +- rename o2em and jaguar cores to PV.. +- Replace remaining com.provenance-emu with org +- Replace sync network with async for artwork +- Replace UIWebView with WKWebView +- retro: add bliss, 4do, some organization +- retro: add game music and vicx +- retro: all the cores +- retro: fix build missing #endif +- retro: fix framework dyload +- retro: fix tvos bitcode +- retro: gme builds and links +- retro: gme fix tvos build +- retro: gme loads +- retro: gme plays +- retro: ios biulds +- retro: metal video doesn’t crash but still odd +- retro: potator loads, fix static rom buffer copy +- retro: remove VecXGL for libretro version +- retro: software fb callback and pixl fmt fixes +- retro: split core into categories, add cores +- retro: the final cores! for now +- retro: tvOS builds +- retro: update core submodules +- retro: video callback pitchshift work +- rice: use newer branch, fixes catalyst +- Set library header background +- Set navigation bar style only for game library +- Set overrideUserInterfaceStyle +- Set settings button font only on tvOS +- Settings webDav always tvOS and sim +- Settings, disable swiftUI in iOS 13 +- shaders add support for lcd/crt screen option +- Simplify code +- Single frameworks, catalyst, macos +- snes n64 fix a/b and deadzone +- snesticle builds +- snesticle: remove from app, needs work +- snesticle: tvos, add to ios build +- spotlight scheme update depends +- stella module fix +- stella snapshot +- stella xcconfig +- stella: delete duplicate files +- stella: use a submodule and static libs +- submodules: Single framework, macos +- swap experimentalCores option with unsupported +- swiftpm updates +- swiftpm update depends +- SwiftUI flow — make landing screen the console carousel if any consoles available, reduce side menu open width +- systems.plist update ext and bios for new cores +- tic80 add submodule +- tic80 submodule +- tvos add missing enums +- tvOS don’t copy glsl to docs +- tvOS fix duplicate symbols in mupen/gliden +- tvOS Fix jaguar compile +- tvOS fix missing target warnings, introspect err +- tvOS hide metadata edit behind #if TVOS_HAS_EDIT +- tweak previous commit +- update bliss +- Update bliss submodule, 2 targets +- Update deployment targets +- Update MednafenGameCore.mm +- Update PVGameLibrarySectionHeaderView.swift +- Update PVGameLibraryViewController.swift +- Update PVGameLibraryViewController.swift +- Update PVGameLibraryViewController.swift +- Update PVGameLibraryViewController+CollectionView.swift +- Update PVGameLibraryViewController+CollectionView.swift +- Update PVGameMoreInfoViewController.swift +- Update PVMetalViewController.m +- Update PVSettingsModel.swift +- Update PVSettingsModel.swift +- Update realm schema version +- Update rebase.yml +- Update save game alert +- update some core repos +- Update stella to upstream +- Update styles on theme change +- Update various cores and ios target includes +- Use different yellow that works with both themes +- Use ellipsis +- Use system alert system background color +- Use system background color for game library +- Use system background for game info +- Use system background for settings +- Use system color for “Game library empty” +- Use system colors for file logs +- Use system colors for live log +- Use system colors for save states +- Use system gear image +- Use system sort libray options background colors +- Use theme for section header style +- Use TVAlertController everywhere +- uupdate cores ios version and target platforms +- WebServer fix hardcoded 8080 +- webserver fix queue QOS warning +- webserver nslog to logger +- whitespace +- xcodebuild action remove cache clear +- yabause: update c flags +- Add .all-contributorsrc config file +- add a working project for dosbox +- Add dosbox-pure +- Add fceux netplay server +- add framework targets for cores and expermnt cores +- add libretro framework +- add libretro target to framework +- beetle: it runs but no video +- bridging-header remove superfulous import availaiblity +- bump version to 2.1.1 +- Cancel as localized string +- clean up window rootViewController assignment for SwiftUI path +- desmume use prov upstream +- desume builds with libretro +- dosbox add libretro library +- dosbox builds +- dosbox technically it builds +- dosbox: av tweaks +- dosbox: link correclty +- dosbox: some overwrides +- ds: add controls callbacks +- ds: melon and extensions tweaks +- duckstation: rebase +- Emu VC defer gesture .bottom to b,l,r +- Enable MTL fast math support +- ep128: fix c++ issue +- fbneo minor shit +- fceux add upstream submodule +- fceux update core to 2.6.2 +- filters: add simple crt demo +- filters: metal filter menu +- First version of movable buttons +- Fix broken wiki link, minor UX improvements +- fix build +- fix compile +- fix gles shaders and add other framework core targetrs +- fix some tvos build issues +- fixes #1849 tgbdual crash on ios fixed +- fuck git sometimes +- fucking around with app clips and associated domai +- fxeux swift to 2.2.3 +- gameimporter hacky override 4 updated gamefaq url +- gameimporter throw less by pre-checking +- gitignore dsstore +- gitignore newrelic file +- glescore: did i loop wrong? +- hacks: placeholder 4 volumebutton and carplay hax +- include assets +- iOS 13 target in xcconfig +- jag: add CD library support and loading +- jaguar: update core for memory fix +- libretro refactor and add files +- make a libretro and it builds +- mednafen: fix a build issue with switch statement +- Merge branch 'feature/dos-box' into develop +- Merge branch 'release/2.1.0' into develop +- Merge pull request #1761 from ianclawson/ian/swiftui-menu-path +- Merge pull request #1764 from Provenance-Emu/feature/MoveableButtons +- Merge pull request #1810 from Provenance-Emu/feature/fceuxUpdate +- Merge pull request #1900 from Provenance-Emu/feature/1888_N64_19x9 +- Merge pull request #1901 from Provenance-Emu/feature/snes9xControllerFix +- Merge pull request #1909 from rrroyal/develop +- Merge pull request #1926 from Provenance-Emu/feature/JoystickLayoutFix +- Merge pull request #1933 from Provenance-Emu/feature/filtermanager +- movebuttons: fix some buttons from resetting +- mupen add more core options +- mupen fix type-o in option +- mupenx: core compile updates +- NOTICKET core options enum default fixed +- NOTICKET Options tableview popover rect fixed +- options onscreen joypad as beta setting +- package resolve update +- pblibretro base code +- prov: yabause hacks +- pvdosbox use retro core as base +- pvgenesis m68kcpu.c compiler flags +- pvretrocore start point +- refs #1765 fix non-dualshock start in Saturn +- refs #1797 refactor fceux into static libs +- refs #1915 fixes psx start button layout +- remove appclip from build +- reto: video init code +- retro add more files +- retro: start to add mupenNX +- retro: a bunch of fixes, build flag updates, controllers, gles core +- retro: add a beetle core cause y not +- retro: add hatari build +- retro: Add melonDS start of core +- retro: add minivmac core +- retro: add Mupen64Plus-NX +- retro: add potator cause y not +- retro: add potator core +- retro: add proper projects for test forks +- retro: add submodules and blank projects for more +- retro: add vmac and fix other stuff +- retro: add Yabause core +- retro: beetle builds?! +- retro: beetlepsx builds +- retro: better code to find cores +- retro: better wrapper +- retro: callbacks set +- retro: CORES OPEN MSX! +- retro: desmeme2015 prov patches +- retro: desmume, dosbox, neo, msx, genesis udates +- retro: double buffer and real screen dimensions +- retro: fbneo builds +- retro: fbneo builds shockingly +- retro: fix embedding framework +- retro: fix loading gles cores +- retro: fix paths, desumeme runs now +- retro: fix release builds +- retro: fix tvos build with melon,msx +- retro: i more linking stuff, fbneo start +- retro: kind of loads +- retro: more cores +- retro: more fb neo +- retro: more linking, libretro.h into build +- retro: mupen-nx has proper build, though errors +- retro: pbbeetle additions +- retro: pcsx rearmed some progress +- retro: remove broken beetle from build +- retro: reset targets, builds but empty +- retro: schemes for ep128, msx +- retro: stuff almost runs +- retro: submodules update +- retro: supervision works with new callbacks +- retro: tvos builds, refactor cores into frameworks +- retro: various fixes, tvos builds +- retro: vecrex +- retro: video work +- retro: yabause update +- shader manager +- shaders metal are wrong +- swiftlint corrections +- SwiftUI menu design revamp - bulk add all changes from fubar'ed branch +- systems.plist add DOS +- systems.plist fill in all openvgdb system ids +- systems.plist psx add compresed formats +- test adding dos to build +- Themes.swift cleanup some re-used code +- tvOS add debug setting to use themes +- tvOS fix swift ui build +- Update Atari8bit bios sizes +- Update blit_ps.metal +- Update PVSearchViewController.swift +- Update PVSNESEmulatorCore.mm +- xcconfig: GLES_SILENCE_DEPRECATION=1 +- yabause: fix release build + ## [2.1.1] - 2022-06-15 ### Added diff --git a/Cores/4DO b/Cores/4DO index 2633d07910..d4dc127819 160000 --- a/Cores/4DO +++ b/Cores/4DO @@ -1 +1 @@ -Subproject commit 2633d07910c78062edbcd9baef0f739ec2bb1c77 +Subproject commit d4dc1278198c4b235c2753b2b8167d39905ce922 diff --git a/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m b/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m index 065fcd147d..57edd2ccb6 100644 --- a/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m +++ b/Cores/Atari800/Atari800Core/Source/ATR800GameCore.m @@ -29,7 +29,7 @@ @import PVSupport; //#import //#import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -579,6 +579,30 @@ - (void)didPush5200Button:(PV5200Button)button forPlayer:(NSUInteger)player } } +- (void)didMove5200JoystickDirection:(PV5200Button)button withValue:(CGFloat)value forPlayer:(NSUInteger)player { +// if (self.dualJoystickOption && player == 0) { +// player = 1; +// } +// switch (button) { +// case PV5200ButtonAnalogUp: +//// NSLog(@"Up: %f", round(value * N64_ANALOG_MAX)); +// yAxis[player] = round(value * N64_ANALOG_MAX); +// break; +// case PV5200ButtonAnalogDown: +//// NSLog(@"Down: %f", value * -N64_ANALOG_MAX); +// yAxis[player] = value * -N64_ANALOG_MAX; +// break; +// case PV5200ButtonAnalogLeft: +// xAxis[player] = value * -N64_ANALOG_MAX; +// break; +// case PV5200ButtonAnalogRight: +// xAxis[player] = value * N64_ANALOG_MAX; +// break; +// default: +// break; +// } +} + - (void)didRelease5200Button:(PV5200Button)button forPlayer:(NSUInteger)player { switch (button) diff --git a/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj b/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj index f15a6d54b6..cd1c116df4 100644 --- a/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj +++ b/Cores/Atari800/PVAtari800.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ B324C64021920EB9009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63F21920EB9009F4EDC /* PVSupport.framework */; }; B35469341DECD70A0018B6F3 /* ATR800GameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0269544614317D34003A07D4 /* ATR800GameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3547B512058581E00CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B502058581E00CFF7D8 /* Core.plist */; }; - B3547B522058581E00CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B502058581E00CFF7D8 /* Core.plist */; }; B36DE74B1D6AB19C002EE3ED /* PVAtari800.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DE74A1D6AB19C002EE3ED /* PVAtari800.h */; settings = {ATTRIBUTES = (Public, ); }; }; B36DE7501D6AB1B4002EE3ED /* default.act in Resources */ = {isa = PBXBuildFile; fileRef = 9491E465198C11A10075135C /* default.act */; }; B36DE7511D6AB1B4002EE3ED /* gray.act in Resources */ = {isa = PBXBuildFile; fileRef = 9491E466198C11A10075135C /* gray.act */; }; @@ -65,62 +64,6 @@ B36DE7831D6AB43A002EE3ED /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7821D6AB43A002EE3ED /* libz.tbd */; }; B36DE7851D6AB44D002EE3ED /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7841D6AB44D002EE3ED /* Foundation.framework */; }; B36DE79A1D6AD049002EE3ED /* libedit.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7991D6AD049002EE3ED /* libedit.tbd */; }; - B38526A82108264D00434945 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38526A72108264D00434945 /* PVSupport.framework */; }; - B3D73CF31E9EAF1C0023925B /* rtime.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269540F143177DF003A07D4 /* rtime.c */; }; - B3D73CF41E9EAF1C0023925B /* ide.c in Sources */ = {isa = PBXBuildFile; fileRef = 02695425143179E9003A07D4 /* ide.c */; }; - B3D73CF51E9EAF1C0023925B /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 94DEA00F171918A200073397 /* crc32.c */; }; - B3D73CF61E9EAF1C0023925B /* cycle_map.c in Sources */ = {isa = PBXBuildFile; fileRef = 9491E460198B0A8C0075135C /* cycle_map.c */; }; - B3D73CF71E9EAF1C0023925B /* colours_pal.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269545014318515003A07D4 /* colours_pal.c */; }; - B3D73CF81E9EAF1C0023925B /* pbi_mio.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269542E14317A63003A07D4 /* pbi_mio.c */; }; - B3D73CF91E9EAF1C0023925B /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = 02695412143177EF003A07D4 /* log.c */; }; - B3D73CFA1E9EAF1C0023925B /* afile.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953E214317379003A07D4 /* afile.c */; }; - B3D73CFB1E9EAF1C0023925B /* img_tape.c in Sources */ = {isa = PBXBuildFile; fileRef = 94DEA0091719186E00073397 /* img_tape.c */; }; - B3D73CFC1E9EAF1C0023925B /* pokeysnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 02695402143176F4003A07D4 /* pokeysnd.c */; }; - B3D73CFD1E9EAF1C0023925B /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 026954091431771D003A07D4 /* util.c */; }; - B3D73CFE1E9EAF1C0023925B /* colours_external.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269544C14318515003A07D4 /* colours_external.c */; }; - B3D73CFF1E9EAF1C0023925B /* pbi_scsi.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269543414317AAF003A07D4 /* pbi_scsi.c */; }; - B3D73D001E9EAF1C0023925B /* artifact.c in Sources */ = {isa = PBXBuildFile; fileRef = 9491E45C1989B1CA0075135C /* artifact.c */; }; - B3D73D011E9EAF1C0023925B /* ui_basic.c in Sources */ = {isa = PBXBuildFile; fileRef = 02E763C014319545008050EA /* ui_basic.c */; }; - B3D73D021E9EAF1C0023925B /* pbi_bb.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269543114317A76003A07D4 /* pbi_bb.c */; }; - B3D73D031E9EAF1C0023925B /* binload.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953F414317689003A07D4 /* binload.c */; }; - B3D73D041E9EAF1C0023925B /* colours.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269545214318515003A07D4 /* colours.c */; }; - B3D73D051E9EAF1C0023925B /* statesav.c in Sources */ = {isa = PBXBuildFile; fileRef = 02E763AF143194CF008050EA /* statesav.c */; }; - B3D73D061E9EAF1C0023925B /* cartridge.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953EB14317649003A07D4 /* cartridge.c */; }; - B3D73D071E9EAF1C0023925B /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953F9143176AE003A07D4 /* memory.c */; }; - B3D73D081E9EAF1C0023925B /* mzpokeysnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269543C14317B11003A07D4 /* mzpokeysnd.c */; }; - B3D73D091E9EAF1C0023925B /* sio.c in Sources */ = {isa = PBXBuildFile; fileRef = 026954061431770E003A07D4 /* sio.c */; }; - B3D73D0A1E9EAF1C0023925B /* pbi.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953FD143176E6003A07D4 /* pbi.c */; }; - B3D73D0B1E9EAF1C0023925B /* monitor.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269543714317AC8003A07D4 /* monitor.c */; }; - B3D73D0C1E9EAF1C0023925B /* ATR800GameCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 0269544714317D34003A07D4 /* ATR800GameCore.m */; }; - B3D73D0D1E9EAF1C0023925B /* pokey.c in Sources */ = {isa = PBXBuildFile; fileRef = 02695400143176F4003A07D4 /* pokey.c */; }; - B3D73D0E1E9EAF1C0023925B /* esc.c in Sources */ = {isa = PBXBuildFile; fileRef = 02695421143179A2003A07D4 /* esc.c */; }; - B3D73D0F1E9EAF1C0023925B /* compfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269543F14317B21003A07D4 /* compfile.c */; }; - B3D73D101E9EAF1C0023925B /* pia.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269542814317A43003A07D4 /* pia.c */; }; - B3D73D111E9EAF1C0023925B /* remez.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269544214317B42003A07D4 /* remez.c */; }; - B3D73D121E9EAF1C0023925B /* cassette.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953ED14317649003A07D4 /* cassette.c */; }; - B3D73D131E9EAF1C0023925B /* cfg.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269542B14317A53003A07D4 /* cfg.c */; }; - B3D73D141E9EAF1C0023925B /* sndsave.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269540C1431775C003A07D4 /* sndsave.c */; }; - B3D73D151E9EAF1C0023925B /* antic.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269541814317864003A07D4 /* antic.c */; }; - B3D73D161E9EAF1C0023925B /* atari.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953E514317379003A07D4 /* atari.c */; }; - B3D73D171E9EAF1C0023925B /* screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 02695449143184CD003A07D4 /* screen.c */; }; - B3D73D181E9EAF1C0023925B /* sysrom.c in Sources */ = {isa = PBXBuildFile; fileRef = 94DEA00B1719186E00073397 /* sysrom.c */; }; - B3D73D191E9EAF1C0023925B /* colours_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269544E14318515003A07D4 /* colours_ntsc.c */; }; - B3D73D1A1E9EAF1C0023925B /* emuos.c in Sources */ = {isa = PBXBuildFile; fileRef = 94DEA012171918D200073397 /* emuos.c */; }; - B3D73D1B1E9EAF1C0023925B /* devices.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269541E1431797A003A07D4 /* devices.c */; }; - B3D73D1C1E9EAF1C0023925B /* input.c in Sources */ = {isa = PBXBuildFile; fileRef = 02E763C61431958E008050EA /* input.c */; }; - B3D73D1D1E9EAF1C0023925B /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 9491E45A1989AF050075135C /* sound.c */; }; - B3D73D1E1E9EAF1C0023925B /* cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 0269541B1431793F003A07D4 /* cpu.c */; }; - B3D73D1F1E9EAF1C0023925B /* gtia.c in Sources */ = {isa = PBXBuildFile; fileRef = 026953F7143176AE003A07D4 /* gtia.c */; }; - B3D73D211E9EAF1C0023925B /* libedit.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7991D6AD049002EE3ED /* libedit.tbd */; }; - B3D73D231E9EAF1C0023925B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7841D6AB44D002EE3ED /* Foundation.framework */; }; - B3D73D241E9EAF1C0023925B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7821D6AB43A002EE3ED /* libz.tbd */; }; - B3D73D261E9EAF1C0023925B /* PVAtari800.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DE74A1D6AB19C002EE3ED /* PVAtari800.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3D73D271E9EAF1C0023925B /* ATR800GameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0269544614317D34003A07D4 /* ATR800GameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3D73D2B1E9EAF1C0023925B /* jakub.act in Resources */ = {isa = PBXBuildFile; fileRef = 9491E467198C11A10075135C /* jakub.act */; }; - B3D73D2C1E9EAF1C0023925B /* default.act in Resources */ = {isa = PBXBuildFile; fileRef = 9491E465198C11A10075135C /* default.act */; }; - B3D73D2D1E9EAF1C0023925B /* Real.act in Resources */ = {isa = PBXBuildFile; fileRef = 9491E468198C11A10075135C /* Real.act */; }; - B3D73D2E1E9EAF1C0023925B /* gray.act in Resources */ = {isa = PBXBuildFile; fileRef = 9491E466198C11A10075135C /* gray.act */; }; - B3D73D2F1E9EAF1C0023925B /* XFormer.act in Resources */ = {isa = PBXBuildFile; fileRef = 9491E469198C11A10075135C /* XFormer.act */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -237,7 +180,6 @@ B36DE7841D6AB44D002EE3ED /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B36DE7991D6AD049002EE3ED /* libedit.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libedit.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/usr/lib/libedit.tbd; sourceTree = DEVELOPER_DIR; }; B38526A72108264D00434945 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3D73D331E9EAF1C0023925B /* PVAtari800-tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "PVAtari800-tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -252,17 +194,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73D201E9EAF1C0023925B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B38526A82108264D00434945 /* PVSupport.framework in Frameworks */, - B3D73D211E9EAF1C0023925B /* libedit.tbd in Frameworks */, - B3D73D231E9EAF1C0023925B /* Foundation.framework in Frameworks */, - B3D73D241E9EAF1C0023925B /* libz.tbd in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -281,7 +212,6 @@ isa = PBXGroup; children = ( B36DE7481D6AB19C002EE3ED /* PVAtari800.framework */, - B3D73D331E9EAF1C0023925B /* PVAtari800-tvOS.framework */, ); name = Products; sourceTree = ""; @@ -465,21 +395,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73D251E9EAF1C0023925B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D73D261E9EAF1C0023925B /* PVAtari800.h in Headers */, - B3D73D271E9EAF1C0023925B /* ATR800GameCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B36DE7471D6AB19C002EE3ED /* PVAtari800-iOS */ = { + B36DE7471D6AB19C002EE3ED /* PVAtari800 */ = { isa = PBXNativeTarget; - buildConfigurationList = B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVAtari800-iOS" */; + buildConfigurationList = B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVAtari800" */; buildPhases = ( B36DE7451D6AB19C002EE3ED /* Headers */, B36DE7431D6AB19C002EE3ED /* Sources */, @@ -490,29 +411,11 @@ ); dependencies = ( ); - name = "PVAtari800-iOS"; + name = PVAtari800; productName = PVAtari800; productReference = B36DE7481D6AB19C002EE3ED /* PVAtari800.framework */; productType = "com.apple.product-type.framework"; }; - B3D73CF11E9EAF1C0023925B /* PVAtari800-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3D73D301E9EAF1C0023925B /* Build configuration list for PBXNativeTarget "PVAtari800-tvOS" */; - buildPhases = ( - B3D73D251E9EAF1C0023925B /* Headers */, - B3D73CF21E9EAF1C0023925B /* Sources */, - B3D73D201E9EAF1C0023925B /* Frameworks */, - B3D73D2A1E9EAF1C0023925B /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVAtari800-tvOS"; - productName = PVAtari800; - productReference = B3D73D331E9EAF1C0023925B /* PVAtari800-tvOS.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -542,8 +445,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B36DE7471D6AB19C002EE3ED /* PVAtari800-iOS */, - B3D73CF11E9EAF1C0023925B /* PVAtari800-tvOS */, + B36DE7471D6AB19C002EE3ED /* PVAtari800 */, ); }; /* End PBXProject section */ @@ -562,19 +464,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73D2A1E9EAF1C0023925B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D73D2B1E9EAF1C0023925B /* jakub.act in Resources */, - B3D73D2C1E9EAF1C0023925B /* default.act in Resources */, - B3D73D2D1E9EAF1C0023925B /* Real.act in Resources */, - B3D73D2E1E9EAF1C0023925B /* gray.act in Resources */, - B3D73D2F1E9EAF1C0023925B /* XFormer.act in Resources */, - B3547B522058581E00CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -630,58 +519,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73CF21E9EAF1C0023925B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D73CF31E9EAF1C0023925B /* rtime.c in Sources */, - B3D73CF41E9EAF1C0023925B /* ide.c in Sources */, - B3D73CF51E9EAF1C0023925B /* crc32.c in Sources */, - B3D73CF61E9EAF1C0023925B /* cycle_map.c in Sources */, - B3D73CF71E9EAF1C0023925B /* colours_pal.c in Sources */, - B3D73CF81E9EAF1C0023925B /* pbi_mio.c in Sources */, - B3D73CF91E9EAF1C0023925B /* log.c in Sources */, - B3D73CFA1E9EAF1C0023925B /* afile.c in Sources */, - B3D73CFB1E9EAF1C0023925B /* img_tape.c in Sources */, - B3D73CFC1E9EAF1C0023925B /* pokeysnd.c in Sources */, - B3D73CFD1E9EAF1C0023925B /* util.c in Sources */, - B3D73CFE1E9EAF1C0023925B /* colours_external.c in Sources */, - B3D73CFF1E9EAF1C0023925B /* pbi_scsi.c in Sources */, - B3D73D001E9EAF1C0023925B /* artifact.c in Sources */, - B3D73D011E9EAF1C0023925B /* ui_basic.c in Sources */, - B3D73D021E9EAF1C0023925B /* pbi_bb.c in Sources */, - B3D73D031E9EAF1C0023925B /* binload.c in Sources */, - B3D73D041E9EAF1C0023925B /* colours.c in Sources */, - B3D73D051E9EAF1C0023925B /* statesav.c in Sources */, - B3D73D061E9EAF1C0023925B /* cartridge.c in Sources */, - B3D73D071E9EAF1C0023925B /* memory.c in Sources */, - B3D73D081E9EAF1C0023925B /* mzpokeysnd.c in Sources */, - B3D73D091E9EAF1C0023925B /* sio.c in Sources */, - B3D73D0A1E9EAF1C0023925B /* pbi.c in Sources */, - B3D73D0B1E9EAF1C0023925B /* monitor.c in Sources */, - B3D73D0C1E9EAF1C0023925B /* ATR800GameCore.m in Sources */, - B3D73D0D1E9EAF1C0023925B /* pokey.c in Sources */, - B3D73D0E1E9EAF1C0023925B /* esc.c in Sources */, - B3D73D0F1E9EAF1C0023925B /* compfile.c in Sources */, - B3D73D101E9EAF1C0023925B /* pia.c in Sources */, - B3D73D111E9EAF1C0023925B /* remez.c in Sources */, - B3D73D121E9EAF1C0023925B /* cassette.c in Sources */, - B3D73D131E9EAF1C0023925B /* cfg.c in Sources */, - B3D73D141E9EAF1C0023925B /* sndsave.c in Sources */, - B3D73D151E9EAF1C0023925B /* antic.c in Sources */, - B3D73D161E9EAF1C0023925B /* atari.c in Sources */, - B3D73D171E9EAF1C0023925B /* screen.c in Sources */, - B3D73D181E9EAF1C0023925B /* sysrom.c in Sources */, - B3D73D191E9EAF1C0023925B /* colours_ntsc.c in Sources */, - B3D73D1A1E9EAF1C0023925B /* emuos.c in Sources */, - B3D73D1B1E9EAF1C0023925B /* devices.c in Sources */, - B3D73D1C1E9EAF1C0023925B /* input.c in Sources */, - B3D73D1D1E9EAF1C0023925B /* sound.c in Sources */, - B3D73D1E1E9EAF1C0023925B /* cpu.c in Sources */, - B3D73D1F1E9EAF1C0023925B /* gtia.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ @@ -742,9 +579,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Debug; }; @@ -789,9 +627,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Release; }; @@ -836,8 +675,9 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Archive; }; @@ -863,7 +703,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVAtari800/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -875,49 +715,10 @@ PRODUCT_NAME = PVAtari800; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5132191A38D009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVAtari800/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVAtari800"; - PRODUCT_MODULE_NAME = PVAtari800; - PRODUCT_NAME = "PVAtari800-tvOS"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -947,7 +748,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVAtari800/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -959,7 +760,10 @@ PRODUCT_NAME = PVAtari800; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -987,7 +791,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVAtari800/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -999,91 +803,10 @@ PRODUCT_NAME = PVAtari800; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B3D73D311E9EAF1C0023925B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CODE_SIGN_IDENTITY = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_TESTABILITY = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVAtari800/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVAtari800"; - PRODUCT_MODULE_NAME = PVAtari800; - PRODUCT_NAME = "PVAtari800-tvOS"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3D73D321E9EAF1C0023925B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVAtari800/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVAtari800"; - PRODUCT_MODULE_NAME = PVAtari800; - PRODUCT_NAME = "PVAtari800-tvOS"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1103,7 +826,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVAtari800-iOS" */ = { + B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVAtari800" */ = { isa = XCConfigurationList; buildConfigurations = ( B36DE74E1D6AB19C002EE3ED /* Debug */, @@ -1113,16 +836,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3D73D301E9EAF1C0023925B /* Build configuration list for PBXNativeTarget "PVAtari800-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3D73D311E9EAF1C0023925B /* Debug */, - B3D73D321E9EAF1C0023925B /* Release */, - B324C5132191A38D009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 02695358143169EA003A07D4 /* Project object */; diff --git a/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800.xcscheme b/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800.xcscheme index adf8c89cd4..bc512a6d1e 100644 --- a/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800.xcscheme +++ b/Cores/Atari800/PVAtari800.xcodeproj/xcshareddata/xcschemes/PVAtari800.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B36DE7471D6AB19C002EE3ED" BuildableName = "PVAtari800.framework" - BlueprintName = "PVAtari800-iOS" + BlueprintName = "PVAtari800" ReferencedContainer = "container:PVAtari800.xcodeproj"> @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -59,7 +59,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B36DE7471D6AB19C002EE3ED" BuildableName = "PVAtari800.framework" - BlueprintName = "PVAtari800-iOS" + BlueprintName = "PVAtari800" ReferencedContainer = "container:PVAtari800.xcodeproj"> @@ -75,7 +75,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B36DE7471D6AB19C002EE3ED" BuildableName = "PVAtari800.framework" - BlueprintName = "PVAtari800-iOS" + BlueprintName = "PVAtari800" ReferencedContainer = "container:PVAtari800.xcodeproj"> diff --git a/Cores/Atari800/PVAtari800/PVAtari800.h b/Cores/Atari800/PVAtari800/PVAtari800.h index 291ca81fc4..6f7e2934fd 100644 --- a/Cores/Atari800/PVAtari800/PVAtari800.h +++ b/Cores/Atari800/PVAtari800/PVAtari800.h @@ -6,7 +6,7 @@ // // -#import +#import //! Project version number for PVAtari800. FOUNDATION_EXPORT double PVAtari800VersionNumber; diff --git a/Cores/BeetlePSX/BuildFlags.xcconfig b/Cores/BeetlePSX/BuildFlags.xcconfig new file mode 100644 index 0000000000..bbf54030ba --- /dev/null +++ b/Cores/BeetlePSX/BuildFlags.xcconfig @@ -0,0 +1,32 @@ +// +// BuildFlags.xcconfig +// PVBeetlePSX +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 HAVE_PBP=1 HAVE_CHD=1 _7ZIP_ST=1 WANT_THREADING=1 HAVE_THREADS=1 ENABLE_THREADED_COMPILER=1 HAVE_OPENGLES=1 HAVE_OPENGLES2=1 SIZEOF_DOUBLE=8 MEDNAFEN_VERSION=0.9.38.6 PACKAGE=mednafen MEDNAFEN_VERSION_NUMERIC=9386 PSS_STYLE=1 MPC_FIXED_POINT STDC_HEADERS __STDC_LIMIT_MACROS _LOW_ACCURACY_ _FILE_OFFSET_BITS=64 __STDC_CONSTANT_MACROS HAVE_GRIFFIN=0 FRONTEND_SUPPORTS_RGB565=1 HAVE_CHD=1 LINK_STATIC_LIBCPLUSPLUS=1 THREADED_RECOMPILER=1 LIGHTREC_LOG_LEVEL=3 NEED_THREADING=1 HAVE_LIBRETRO=1 WANT_32BPP=1 NEED_CD=1 ENABLE_DISASSEMBLER=0 HAS_DEFAULT_ELM=0 LIGHTREC_STATIC=1 NEED_TREMOR=1 NEED_BPP=32 NEED_DEINTERLACER=1 HAVE_HW=1 SET_HAVE_HW=1 WANT_PSX_EMU=1 HAVE_UNISTD_H=1 +// HAVE_VULKAN=0 HAVE_JIT=0 WANT_16BPP=0 WANT_8BPP=1 LIGHTREC_DEBUG=0 HAVE_OPENGL=0 HAVE_SHM=1 USE_FIXED +// HAVE_CDROM=1 +OTHER_CFLAGS = $(inherited) -ObjC +// -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + +// EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*] = $(inherited) + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 NEON=1 IOS=1 HAVE_OPENGLES3=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -mfpu=neon -D__VEC4_OPT -D__NEON_OPT +EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 IOS=1 HAVE_OPENGLES3=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 IOS=1 HAVE_OPENGLES3=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 IOS=1 HAVE_OPENGLES3=1 diff --git a/Cores/BeetlePSX/PVBeetlePSX-Prefix.pch b/Cores/BeetlePSX/PVBeetlePSX-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/BeetlePSX/PVBeetlePSX.h b/Cores/BeetlePSX/PVBeetlePSX.h new file mode 100644 index 0000000000..47f150bc8b --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX.h @@ -0,0 +1,19 @@ +// +// PVBeetlePSX.h +// PVBeetlePSX +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVBeetlePSX. +FOUNDATION_EXPORT double PVBeetlePSXVersionNumber; + +//! Project version string for PVBeetlePSX. +FOUNDATION_EXPORT const unsigned char PVBeetlePSXVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.pbxproj b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..ca378b237f --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.pbxproj @@ -0,0 +1,3623 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libbeetle_psx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libbeetle_psx.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B3607AA428922A9900509A68 /* error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0D72872978C00EAEB37 /* error.cpp */; }; + B3607AA528922A9900509A68 /* mednafen-endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0D32872978C00EAEB37 /* mednafen-endian.cpp */; }; + B3607AA628922A9900509A68 /* MemoryStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1192872978C00EAEB37 /* MemoryStream.cpp */; }; + B3607AA728922A9900509A68 /* mempatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0892872978C00EAEB37 /* mempatcher.cpp */; }; + B3607AA828922A9900509A68 /* general.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB08A2872978C00EAEB37 /* general.cpp */; }; + B3607AA928922A9900509A68 /* FileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB11E2872978C00EAEB37 /* FileStream.cpp */; }; + B3607AAA28922A9900509A68 /* Stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1212872978C00EAEB37 /* Stream.cpp */; }; + B3607AB228922AA800509A68 /* settings.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1222872978C00EAEB37 /* settings.c */; }; + B3607AB428922AC500509A68 /* file_stream_transforms.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE7C2872978A00EAEB37 /* file_stream_transforms.c */; }; + B3607AB528922AC500509A68 /* file_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE7D2872978A00EAEB37 /* file_stream.c */; }; + B3607AC628922B0B00509A68 /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAECE2872978B00EAEB37 /* stdstring.c */; }; + B3607AC728922B0B00509A68 /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE672872978A00EAEB37 /* compat_posix_string.c */; }; + B3607AC828922B0B00509A68 /* rhash.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE7A2872978A00EAEB37 /* rhash.c */; }; + B3607AC928922B0B00509A68 /* rtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAEC32872978A00EAEB37 /* rtime.c */; }; + B3607ACA28922B0B00509A68 /* retro_dirent.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE782872978A00EAEB37 /* retro_dirent.c */; }; + B3607ACB28922B0B00509A68 /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE662872978A00EAEB37 /* compat_strl.c */; }; + B3607ACC28922B0B00509A68 /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE6A2872978A00EAEB37 /* fopen_utf8.c */; }; + B3607ACD28922B0B00509A68 /* compat_strcasestr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE682872978A00EAEB37 /* compat_strcasestr.c */; }; + B3607ACE28922B0B00509A68 /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE5F2872978A00EAEB37 /* encoding_utf.c */; }; + B3607ACF28922B0B00509A68 /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE772872978A00EAEB37 /* file_path.c */; }; + B3607AD028922B0B00509A68 /* dir_list.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE742872978A00EAEB37 /* dir_list.c */; }; + B3607AD128922B0B00509A68 /* memalign.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAEC12872978A00EAEB37 /* memalign.c */; }; + B3607AD228922B0B00509A68 /* vfs_implementation.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE612872978A00EAEB37 /* vfs_implementation.c */; }; + B3607AD328922B0B00509A68 /* string_list.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE752872978A00EAEB37 /* string_list.c */; }; + B3607AD428922B3900509A68 /* rthreads.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAEC82872978B00EAEB37 /* rthreads.c */; }; + B3607AD628922BCE00509A68 /* CDAccess_Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0BF2872978C00EAEB37 /* CDAccess_Image.cpp */; }; + B3607AD728922BCE00509A68 /* CDAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0CF2872978C00EAEB37 /* CDAccess.cpp */; }; + B3607AD828922BCE00509A68 /* CDAccess_PBP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0C82872978C00EAEB37 /* CDAccess_PBP.cpp */; }; + B3607AD928922BCE00509A68 /* cdromif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0C92872978C00EAEB37 /* cdromif.cpp */; }; + B3607ADA28922BCE00509A68 /* CDUtility.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0C32872978C00EAEB37 /* CDUtility.c */; }; + B3607ADB28922BCE00509A68 /* recover-raw.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0D12872978C00EAEB37 /* recover-raw.c */; }; + B3607ADC28922BCE00509A68 /* galois.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0CB2872978C00EAEB37 /* galois.c */; }; + B3607ADD28922BCE00509A68 /* lec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0BE2872978C00EAEB37 /* lec.c */; }; + B3607ADE28922BCE00509A68 /* CDAccess_CCD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0C12872978C00EAEB37 /* CDAccess_CCD.cpp */; }; + B3607ADF28922BCE00509A68 /* audioreader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0C22872978C00EAEB37 /* audioreader.cpp */; }; + B3607AE028922BCE00509A68 /* misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0BC2872978C00EAEB37 /* misc.cpp */; }; + B3607AE128922BCE00509A68 /* CDAccess_CHD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0B92872978C00EAEB37 /* CDAccess_CHD.cpp */; }; + B3607AE228922BCE00509A68 /* edc_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0BA2872978C00EAEB37 /* edc_crc32.c */; }; + B3607AE328922BCE00509A68 /* l-ec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0CA2872978C00EAEB37 /* l-ec.c */; }; + B3607AF228922BEF00509A68 /* libretro_cbs.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE4C2872978A00EAEB37 /* libretro_cbs.c */; }; + B3607AF528922C0300509A68 /* ugui_tools.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE4D2872978A00EAEB37 /* ugui_tools.c */; }; + B3607AFD28922C8500509A68 /* gte.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0FD2872978C00EAEB37 /* gte.cpp */; }; + B3607AFE28922C8500509A68 /* frontio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1032872978C00EAEB37 /* frontio.cpp */; }; + B3607AFF28922C8500509A68 /* mdec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0FF2872978C00EAEB37 /* mdec.cpp */; }; + B3607B0028922C8500509A68 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0FC2872978C00EAEB37 /* timer.cpp */; }; + B3607B0128922C8500509A68 /* gpu_polygon_sub.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0DE2872978C00EAEB37 /* gpu_polygon_sub.cpp */; }; + B3607B0228922C8500509A68 /* irq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1162872978C00EAEB37 /* irq.cpp */; }; + B3607B0428922C9C00509A68 /* justifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0EE2872978C00EAEB37 /* justifier.cpp */; }; + B3607B0528922C9C00509A68 /* guncon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0EC2872978C00EAEB37 /* guncon.cpp */; }; + B3607B0628922C9C00509A68 /* multitap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0F12872978C00EAEB37 /* multitap.cpp */; }; + B3607B0728922C9C00509A68 /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0EF2872978C00EAEB37 /* mouse.cpp */; }; + B3607B0828922C9C00509A68 /* gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0F02872978C00EAEB37 /* gamepad.cpp */; }; + B3607B0928922C9C00509A68 /* memcard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0EB2872978C00EAEB37 /* memcard.cpp */; }; + B3607B0A28922C9C00509A68 /* dualshock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0F42872978C00EAEB37 /* dualshock.cpp */; }; + B3607B0B28922C9C00509A68 /* dualanalog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0EA2872978C00EAEB37 /* dualanalog.cpp */; }; + B3607B0C28922C9C00509A68 /* negcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0F62872978C00EAEB37 /* negcon.cpp */; }; + B3607B1A28922D3600509A68 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD622872978900EAEB37 /* input.cpp */; }; + B3607B1C28922D4100509A68 /* rsx_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0602872978C00EAEB37 /* rsx_intf.cpp */; }; + B3607B1E28922E0E00509A68 /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB04E2872978C00EAEB37 /* aes.c */; }; + B3607B2028922E1800509A68 /* des.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0512872978C00EAEB37 /* des.c */; }; + B3607B2128922E1800509A68 /* bn.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0542872978C00EAEB37 /* bn.c */; }; + B3607B2228922E1800509A68 /* ec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB04F2872978C00EAEB37 /* ec.c */; }; + B3607B2328922E1800509A68 /* sha1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0532872978C00EAEB37 /* sha1.c */; }; + B3607B2428922E1800509A68 /* amctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0582872978C00EAEB37 /* amctrl.c */; }; + B3607B2528922E1800509A68 /* kirk_engine.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB05A2872978C00EAEB37 /* kirk_engine.c */; }; + B3607B2C28922E3300509A68 /* pgxp_debug.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB07A2872978C00EAEB37 /* pgxp_debug.c */; }; + B3607B2D28922E3300509A68 /* pgxp_value.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0742872978C00EAEB37 /* pgxp_value.c */; }; + B3607B2E28922E3300509A68 /* pgxp_gte.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0812872978C00EAEB37 /* pgxp_gte.c */; }; + B3607B2F28922E3300509A68 /* pgxp_main.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0802872978C00EAEB37 /* pgxp_main.c */; }; + B3607B3428922ECA00509A68 /* surface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0B22872978C00EAEB37 /* surface.cpp */; }; + B3607B3528922ECA00509A68 /* Deinterlacer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0B02872978C00EAEB37 /* Deinterlacer.cpp */; }; + B3607B3828922FC700509A68 /* optimizer.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0322872978C00EAEB37 /* optimizer.c */; }; + B3607B3928922FC700509A68 /* reaper.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0432872978C00EAEB37 /* reaper.c */; }; + B3607B3A28922FC700509A68 /* blockcache.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB04C2872978C00EAEB37 /* blockcache.c */; }; + B3607B3B28922FC700509A68 /* interpreter.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB04A2872978C00EAEB37 /* interpreter.c */; }; + B3607B3C28922FC700509A68 /* lightrec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB04B2872978C00EAEB37 /* lightrec.c */; }; + B3607B3D28922FC700509A68 /* emitter.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0472872978C00EAEB37 /* emitter.c */; }; + B3607B3E28922FC700509A68 /* memmanager.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0452872978C00EAEB37 /* memmanager.c */; }; + B3607B3F28922FC700509A68 /* regcache.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0482872978C00EAEB37 /* regcache.c */; }; + B3607B4828922FFC00509A68 /* jit_memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAF032872978B00EAEB37 /* jit_memory.c */; }; + B3607B4928922FFC00509A68 /* lightning.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAF302872978B00EAEB37 /* lightning.c */; }; + B3607B4A28922FFC00509A68 /* jit_print.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAF242872978B00EAEB37 /* jit_print.c */; }; + B3607B4B28922FFC00509A68 /* jit_note.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAF1C2872978B00EAEB37 /* jit_note.c */; }; + B3607B4C28922FFC00509A68 /* jit_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAF0A2872978B00EAEB37 /* jit_disasm.c */; }; + B3607B4D28922FFC00509A68 /* jit_names.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAF2D2872978B00EAEB37 /* jit_names.c */; }; + B3607B4E28922FFC00509A68 /* jit_size.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAF072872978B00EAEB37 /* jit_size.c */; }; + B3607B562892310A00509A68 /* vorbisfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0A92872978C00EAEB37 /* vorbisfile.c */; }; + B3607B582892327600509A68 /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0E72872978C00EAEB37 /* dma.cpp */; }; + B3607B5A289232B200509A68 /* sio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1102872978C00EAEB37 /* sio.cpp */; }; + B3607B5C289233B400509A68 /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB08F2872978C00EAEB37 /* block.c */; }; + B3607B5E289233C400509A68 /* framing.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0902872978C00EAEB37 /* framing.c */; }; + B3607B60289233FA00509A68 /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0932872978C00EAEB37 /* info.c */; }; + B3607B622892340400509A68 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0AA2872978C00EAEB37 /* window.c */; }; + B3607B642892341000509A68 /* codebook.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0982872978C00EAEB37 /* codebook.c */; }; + B3607B662892342300509A68 /* bitwise.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0A72872978C00EAEB37 /* bitwise.c */; }; + B3607B682892343900509A68 /* registry.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0A82872978C00EAEB37 /* registry.c */; }; + B3607B6A2892344600509A68 /* mapping0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0A62872978C00EAEB37 /* mapping0.c */; }; + B3607B6C2892346300509A68 /* res012.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB09E2872978C00EAEB37 /* res012.c */; }; + B3607B6E2892348400509A68 /* floor1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0A22872978C00EAEB37 /* floor1.c */; }; + B3607B702892349600509A68 /* synthesis.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0A32872978C00EAEB37 /* synthesis.c */; }; + B3607B72289234A900509A68 /* mdct.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0952872978C00EAEB37 /* mdct.c */; }; + B3607B74289234C100509A68 /* recompiler.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0412872978C00EAEB37 /* recompiler.c */; }; + B3607B76289234DA00509A68 /* sharedbook.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0A12872978C00EAEB37 /* sharedbook.c */; }; + B3607B78289234EC00509A68 /* floor0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0992872978C00EAEB37 /* floor0.c */; }; + B3681B7C287412DC00C0136F /* beetle_psx_globals.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0722872978C00EAEB37 /* beetle_psx_globals.c */; }; + B3681B7E2874130B00C0136F /* gpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1142872978C00EAEB37 /* gpu.cpp */; }; + B3681B81287413CE00C0136F /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB05C2872978C00EAEB37 /* libretro.cpp */; }; + B3681B89287415D200C0136F /* spu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0FE2872978C00EAEB37 /* spu.cpp */; }; + B3681B8B287415E300C0136F /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0D82872978C00EAEB37 /* state.c */; }; + B3681B8F2874162700C0136F /* cdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1152872978C00EAEB37 /* cdc.cpp */; }; + B3681B912874165100C0136F /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB1112872978C00EAEB37 /* cpu.cpp */; }; + B3681B932874167800C0136F /* pgxp_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0752872978C00EAEB37 /* pgxp_mem.c */; }; + B3681B952874167A00C0136F /* pgxp_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0782872978C00EAEB37 /* pgxp_cpu.c */; }; + B3681B972874168A00C0136F /* pgxp_gpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0792872978C00EAEB37 /* pgxp_gpu.c */; }; + B37022C82872553E00B3F6DA /* PVBeetlePSXCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVBeetlePSXCore.mm */; }; + B37022C92872554300B3F6DA /* PVBeetlePSXCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVBeetlePSXCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVBeetlePSX.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVBeetlePSX.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libbeetle_psx-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libbeetle_psx-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3CE8003287404B200B6BB5A /* LzmaDec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0292872978C00EAEB37 /* LzmaDec.c */; }; + B3CE8004287404B200B6BB5A /* CpuArch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB02E2872978C00EAEB37 /* CpuArch.c */; }; + B3CE8005287404B200B6BB5A /* Alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0282872978C00EAEB37 /* Alloc.c */; }; + B3CE8006287404B200B6BB5A /* Bra86.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0272872978C00EAEB37 /* Bra86.c */; }; + B3CE8007287404B200B6BB5A /* BraIA64.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB02A2872978C00EAEB37 /* BraIA64.c */; }; + B3CE8008287404B200B6BB5A /* Delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB02C2872978C00EAEB37 /* Delta.c */; }; + B3CE8009287404B200B6BB5A /* LzFind.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0252872978C00EAEB37 /* LzFind.c */; }; + B3CE800A287404B200B6BB5A /* Lzma86Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB02B2872978C00EAEB37 /* Lzma86Dec.c */; }; + B3CE800B287404B200B6BB5A /* LzmaEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0242872978C00EAEB37 /* LzmaEnc.c */; }; + B3CE8015287404EE00B6BB5A /* libchdr_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFD82872978B00EAEB37 /* libchdr_flac.c */; }; + B3CE8016287404EE00B6BB5A /* libchdr_bitstream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFD62872978B00EAEB37 /* libchdr_bitstream.c */; }; + B3CE8017287404EE00B6BB5A /* libchdr_huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFD72872978B00EAEB37 /* libchdr_huffman.c */; }; + B3CE8018287404EE00B6BB5A /* libchdr_cdrom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFDA2872978B00EAEB37 /* libchdr_cdrom.c */; }; + B3CE8019287404EE00B6BB5A /* libchdr_chd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFD52872978B00EAEB37 /* libchdr_chd.c */; }; + B3CE801F2874050000B6BB5A /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB00A2872978C00EAEB37 /* inffast.c */; }; + B3CE80202874050000B6BB5A /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFFA2872978C00EAEB37 /* inflate.c */; }; + B3CE80212874050000B6BB5A /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0022872978C00EAEB37 /* inftrees.c */; }; + B3CE80222874050000B6BB5A /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFFE2872978C00EAEB37 /* zutil.c */; }; + B3CE80232874050000B6BB5A /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAFFC2872978C00EAEB37 /* crc32.c */; }; + B3CE80242874050000B6BB5A /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB00B2872978C00EAEB37 /* adler32.c */; }; + B3CE802B2874052A00B6BB5A /* glsym_es2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE6F2872978A00EAEB37 /* glsym_es2.c */; }; + B3CE802D2874055800B6BB5A /* rglgen.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAE702872978A00EAEB37 /* rglgen.c */; }; + B3CE802F2874056100B6BB5A /* glsm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAEC52872978B00EAEB37 /* glsm.c */; }; + B3CE80312874057400B6BB5A /* rsx_lib_gl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBB0652872978C00EAEB37 /* rsx_lib_gl.cpp */; }; + B3CE80332874059500B6BB5A /* ugui.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAED42872978B00EAEB37 /* ugui.c */; }; + B3CE8039287405DC00B6BB5A /* liblzma.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CE8037287405DC00B6BB5A /* liblzma.tbd */; }; + B3CE803A287405DC00B6BB5A /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CE8038287405DC00B6BB5A /* libz.tbd */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libbeetle_psx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libbeetle_psx.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libbeetle_psx-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libbeetle_psx-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVBeetlePSX-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVBeetlePSX-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVBeetlePSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVBeetlePSX.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVBeetlePSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVBeetlePSX.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVBeetlePSXCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVBeetlePSXCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVBeetlePSXCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVBeetlePSXCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVBeetlePSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVBeetlePSX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3CE8037287405DC00B6BB5A /* liblzma.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = liblzma.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/liblzma.tbd; sourceTree = DEVELOPER_DIR; }; + B3CE8038287405DC00B6BB5A /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; + B3EBAD602872978900EAEB37 /* .dir-locals.el */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".dir-locals.el"; sourceTree = ""; }; + B3EBAD612872978900EAEB37 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B3EBAD622872978900EAEB37 /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; + B3EBAD642872978900EAEB37 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3EBAD652872978900EAEB37 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3EBAD662872978900EAEB37 /* lightning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lightning.h; sourceTree = ""; }; + B3EBAD682872978900EAEB37 /* crowdin_translate.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_translate.py; sourceTree = ""; }; + B3EBAD692872978900EAEB37 /* download_workflow.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = download_workflow.py; sourceTree = ""; }; + B3EBAD6A2872978900EAEB37 /* core_option_regex.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = core_option_regex.py; sourceTree = ""; }; + B3EBAD6B2872978900EAEB37 /* upload_workflow.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = upload_workflow.py; sourceTree = ""; }; + B3EBAD6C2872978900EAEB37 /* crowdin_source_upload.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_source_upload.py; sourceTree = ""; }; + B3EBAD6D2872978900EAEB37 /* crowdin.yaml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = crowdin.yaml; sourceTree = ""; }; + B3EBAD6E2872978900EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAD6F2872978900EAEB37 /* core_option_translation.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = core_option_translation.py; sourceTree = ""; }; + B3EBAD702872978900EAEB37 /* initial_sync.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = initial_sync.py; sourceTree = ""; }; + B3EBAD712872978900EAEB37 /* v1_to_v2_converter.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = v1_to_v2_converter.py; sourceTree = ""; }; + B3EBAD722872978900EAEB37 /* crowdin_translation_download.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_translation_download.py; sourceTree = ""; }; + B3EBAD732872978900EAEB37 /* crowdin_prep.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_prep.py; sourceTree = ""; }; + B3EBAD762872978900EAEB37 /* renderer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = renderer.hpp; sourceTree = ""; }; + B3EBAD772872978900EAEB37 /* renderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = renderer.cpp; sourceTree = ""; }; + B3EBAD782872978900EAEB37 /* renderer_pipelines.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = renderer_pipelines.hpp; sourceTree = ""; }; + B3EBAD7A2872978900EAEB37 /* spirv_parser.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spirv_parser.hpp; sourceTree = ""; }; + B3EBAD7B2872978900EAEB37 /* spirv.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spirv.hpp; sourceTree = ""; }; + B3EBAD7C2872978900EAEB37 /* spirv_cfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cfg.cpp; sourceTree = ""; }; + B3EBAD7D2872978900EAEB37 /* spirv_cross_parsed_ir.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spirv_cross_parsed_ir.hpp; sourceTree = ""; }; + B3EBAD7E2872978900EAEB37 /* spirv_cross.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cross.cpp; sourceTree = ""; }; + B3EBAD7F2872978900EAEB37 /* spirv_cfg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spirv_cfg.hpp; sourceTree = ""; }; + B3EBAD802872978900EAEB37 /* spirv_cross_parsed_ir.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cross_parsed_ir.cpp; sourceTree = ""; }; + B3EBAD812872978900EAEB37 /* spirv_cross.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spirv_cross.hpp; sourceTree = ""; }; + B3EBAD822872978900EAEB37 /* GLSL.std.450.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLSL.std.450.h; sourceTree = ""; }; + B3EBAD832872978900EAEB37 /* spirv_parser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_parser.cpp; sourceTree = ""; }; + B3EBAD842872978900EAEB37 /* spirv_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spirv_common.hpp; sourceTree = ""; }; + B3EBAD862872978900EAEB37 /* hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = hash.hpp; sourceTree = ""; }; + B3EBAD872872978900EAEB37 /* intrusive.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = intrusive.hpp; sourceTree = ""; }; + B3EBAD882872978900EAEB37 /* array_view.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = array_view.hpp; sourceTree = ""; }; + B3EBAD892872978900EAEB37 /* util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = util.cpp; sourceTree = ""; }; + B3EBAD8A2872978900EAEB37 /* intrusive_hash_map.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = intrusive_hash_map.hpp; sourceTree = ""; }; + B3EBAD8B2872978900EAEB37 /* read_write_lock.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = read_write_lock.hpp; sourceTree = ""; }; + B3EBAD8C2872978900EAEB37 /* dynamic_library.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dynamic_library.cpp; sourceTree = ""; }; + B3EBAD8D2872978900EAEB37 /* timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + B3EBAD8E2872978900EAEB37 /* variant.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = variant.hpp; sourceTree = ""; }; + B3EBAD8F2872978900EAEB37 /* cli_parser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cli_parser.cpp; sourceTree = ""; }; + B3EBAD902872978A00EAEB37 /* intrusive_list.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = intrusive_list.hpp; sourceTree = ""; }; + B3EBAD912872978A00EAEB37 /* dynamic_library.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = dynamic_library.hpp; sourceTree = ""; }; + B3EBAD922872978A00EAEB37 /* object_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = object_pool.hpp; sourceTree = ""; }; + B3EBAD932872978A00EAEB37 /* timer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = timer.hpp; sourceTree = ""; }; + B3EBAD942872978A00EAEB37 /* volatile_source.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = volatile_source.hpp; sourceTree = ""; }; + B3EBAD952872978A00EAEB37 /* async_object_sink.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = async_object_sink.hpp; sourceTree = ""; }; + B3EBAD962872978A00EAEB37 /* compile_time_hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = compile_time_hash.hpp; sourceTree = ""; }; + B3EBAD972872978A00EAEB37 /* cli_parser.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cli_parser.hpp; sourceTree = ""; }; + B3EBAD982872978A00EAEB37 /* temporary_hashmap.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = temporary_hashmap.hpp; sourceTree = ""; }; + B3EBAD992872978A00EAEB37 /* hashmap.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = hashmap.hpp; sourceTree = ""; }; + B3EBAD9A2872978A00EAEB37 /* enum_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = enum_cast.hpp; sourceTree = ""; }; + B3EBAD9B2872978A00EAEB37 /* stack_allocator.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = stack_allocator.hpp; sourceTree = ""; }; + B3EBAD9C2872978A00EAEB37 /* util.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = util.hpp; sourceTree = ""; }; + B3EBAD9D2872978A00EAEB37 /* unstable_remove_if.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = unstable_remove_if.hpp; sourceTree = ""; }; + B3EBAD9F2872978A00EAEB37 /* volk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = volk.c; sourceTree = ""; }; + B3EBADA02872978A00EAEB37 /* volk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = volk.h; sourceTree = ""; }; + B3EBADA22872978A00EAEB37 /* texture_tracker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture_tracker.cpp; sourceTree = ""; }; + B3EBADA32872978A00EAEB37 /* image_io.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = image_io.hpp; sourceTree = ""; }; + B3EBADA42872978A00EAEB37 /* config_parser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config_parser.cpp; sourceTree = ""; }; + B3EBADA52872978A00EAEB37 /* config_parser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_parser.h; sourceTree = ""; }; + B3EBADA62872978A00EAEB37 /* dbg_input_callback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbg_input_callback.h; sourceTree = ""; }; + B3EBADA72872978A00EAEB37 /* texture_tracker.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = texture_tracker.hpp; sourceTree = ""; }; + B3EBADA82872978A00EAEB37 /* image_io.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = image_io.cpp; sourceTree = ""; }; + B3EBADAA2872978A00EAEB37 /* stb_image_write.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stb_image_write.h; sourceTree = ""; }; + B3EBADAB2872978A00EAEB37 /* stb_image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stb_image.h; sourceTree = ""; }; + B3EBADAC2872978A00EAEB37 /* stb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stb.c; sourceTree = ""; }; + B3EBADAD2872978A00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBADAF2872978A00EAEB37 /* primitive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = primitive.h; sourceTree = ""; }; + B3EBADB02872978A00EAEB37 /* hdtextures.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hdtextures.h; sourceTree = ""; }; + B3EBADB12872978A00EAEB37 /* dither.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dither.h; sourceTree = ""; }; + B3EBADB22872978A00EAEB37 /* vram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vram.h; sourceTree = ""; }; + B3EBADB32872978A00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBADB42872978A00EAEB37 /* quad.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = quad.vert; sourceTree = ""; }; + B3EBADB52872978A00EAEB37 /* primitive.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = primitive.frag; sourceTree = ""; }; + B3EBADB62872978A00EAEB37 /* copy_vram.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = copy_vram.comp; sourceTree = ""; }; + B3EBADB72872978A00EAEB37 /* blit_vram.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = blit_vram.comp; sourceTree = ""; }; + B3EBADB92872978A00EAEB37 /* copy_vram.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = copy_vram.comp.inc; sourceTree = ""; }; + B3EBADBA2872978A00EAEB37 /* blit_vram.cached.masked.unscaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.cached.masked.unscaled.comp.inc; sourceTree = ""; }; + B3EBADBB2872978A00EAEB37 /* flat.unscaled.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = flat.unscaled.vert.inc; sourceTree = ""; }; + B3EBADBC2872978A00EAEB37 /* blit_vram.unscaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.unscaled.comp.inc; sourceTree = ""; }; + B3EBADBD2872978A00EAEB37 /* feedback.msaa.unscaled.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = feedback.msaa.unscaled.frag.inc; sourceTree = ""; }; + B3EBADBE2872978A00EAEB37 /* bpp24.yuv.quad.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = bpp24.yuv.quad.frag.inc; sourceTree = ""; }; + B3EBADBF2872978A00EAEB37 /* blit_vram.msaa.cached.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.msaa.cached.scaled.comp.inc; sourceTree = ""; }; + B3EBADC02872978A00EAEB37 /* mipmap.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = mipmap.vert.inc; sourceTree = ""; }; + B3EBADC12872978A00EAEB37 /* flat.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = flat.frag.inc; sourceTree = ""; }; + B3EBADC22872978A00EAEB37 /* mipmap.energy.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = mipmap.energy.frag.inc; sourceTree = ""; }; + B3EBADC32872978A00EAEB37 /* blit_vram.cached.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.cached.scaled.comp.inc; sourceTree = ""; }; + B3EBADC42872978A00EAEB37 /* resolve.msaa.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = resolve.msaa.scaled.comp.inc; sourceTree = ""; }; + B3EBADC52872978A00EAEB37 /* mipmap.energy.first.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = mipmap.energy.first.frag.inc; sourceTree = ""; }; + B3EBADC62872978A00EAEB37 /* textured.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = textured.frag.inc; sourceTree = ""; }; + B3EBADC72872978A00EAEB37 /* blit_vram.cached.masked.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.cached.masked.scaled.comp.inc; sourceTree = ""; }; + B3EBADC82872978A00EAEB37 /* blit_vram.cached.unscaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.cached.unscaled.comp.inc; sourceTree = ""; }; + B3EBADC92872978A00EAEB37 /* textured.msaa.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = textured.msaa.frag.inc; sourceTree = ""; }; + B3EBADCA2872978A00EAEB37 /* scaled.dither.quad.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = scaled.dither.quad.frag.inc; sourceTree = ""; }; + B3EBADCB2872978A00EAEB37 /* mipmap.energy.blur.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = mipmap.energy.blur.frag.inc; sourceTree = ""; }; + B3EBADCC2872978A00EAEB37 /* blit_vram.msaa.cached.masked.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.msaa.cached.masked.scaled.comp.inc; sourceTree = ""; }; + B3EBADCD2872978A00EAEB37 /* mipmap.resolve.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = mipmap.resolve.frag.inc; sourceTree = ""; }; + B3EBADCE2872978A00EAEB37 /* unscaled.quad.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = unscaled.quad.frag.inc; sourceTree = ""; }; + B3EBADCF2872978A00EAEB37 /* resolve.unscaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = resolve.unscaled.comp.inc; sourceTree = ""; }; + B3EBADD02872978A00EAEB37 /* textured.unscaled.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = textured.unscaled.frag.inc; sourceTree = ""; }; + B3EBADD12872978A00EAEB37 /* unscaled.dither.quad.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = unscaled.dither.quad.frag.inc; sourceTree = ""; }; + B3EBADD22872978A00EAEB37 /* blit_vram.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.scaled.comp.inc; sourceTree = ""; }; + B3EBADD32872978A00EAEB37 /* mipmap.dither.resolve.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = mipmap.dither.resolve.frag.inc; sourceTree = ""; }; + B3EBADD42872978A00EAEB37 /* blit_vram.masked.unscaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.masked.unscaled.comp.inc; sourceTree = ""; }; + B3EBADD52872978A00EAEB37 /* blit_vram.msaa.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.msaa.scaled.comp.inc; sourceTree = ""; }; + B3EBADD62872978A00EAEB37 /* feedback.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = feedback.frag.inc; sourceTree = ""; }; + B3EBADD72872978A00EAEB37 /* feedback.unscaled.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = feedback.unscaled.frag.inc; sourceTree = ""; }; + B3EBADD82872978A00EAEB37 /* blit_vram.masked.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.masked.scaled.comp.inc; sourceTree = ""; }; + B3EBADD92872978A00EAEB37 /* resolve.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = resolve.scaled.comp.inc; sourceTree = ""; }; + B3EBADDA2872978A00EAEB37 /* resolve.msaa.unscaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = resolve.msaa.unscaled.comp.inc; sourceTree = ""; }; + B3EBADDB2872978A00EAEB37 /* textured.unscaled.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = textured.unscaled.vert.inc; sourceTree = ""; }; + B3EBADDC2872978A00EAEB37 /* blit_vram.msaa.masked.scaled.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = blit_vram.msaa.masked.scaled.comp.inc; sourceTree = ""; }; + B3EBADDD2872978A00EAEB37 /* feedback.flat.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = feedback.flat.frag.inc; sourceTree = ""; }; + B3EBADDE2872978A00EAEB37 /* copy_vram.masked.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = copy_vram.masked.comp.inc; sourceTree = ""; }; + B3EBADDF2872978A00EAEB37 /* mipmap.shifted.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = mipmap.shifted.vert.inc; sourceTree = ""; }; + B3EBADE02872978A00EAEB37 /* textured.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = textured.vert.inc; sourceTree = ""; }; + B3EBADE12872978A00EAEB37 /* flat.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = flat.vert.inc; sourceTree = ""; }; + B3EBADE22872978A00EAEB37 /* scaled.quad.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = scaled.quad.frag.inc; sourceTree = ""; }; + B3EBADE32872978A00EAEB37 /* textured.msaa.unscaled.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = textured.msaa.unscaled.frag.inc; sourceTree = ""; }; + B3EBADE42872978A00EAEB37 /* feedback.msaa.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = feedback.msaa.frag.inc; sourceTree = ""; }; + B3EBADE52872978A00EAEB37 /* bpp24.quad.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = bpp24.quad.frag.inc; sourceTree = ""; }; + B3EBADE62872978A00EAEB37 /* feedback.msaa.flat.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = feedback.msaa.flat.frag.inc; sourceTree = ""; }; + B3EBADE72872978A00EAEB37 /* quad.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = quad.vert.inc; sourceTree = ""; }; + B3EBADE82872978A00EAEB37 /* mipmap_blur.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mipmap_blur.frag; sourceTree = ""; }; + B3EBADE92872978A00EAEB37 /* primitive_feedback.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = primitive_feedback.frag; sourceTree = ""; }; + B3EBADEA2872978A00EAEB37 /* mipmap_resolve.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mipmap_resolve.frag; sourceTree = ""; }; + B3EBADEB2872978A00EAEB37 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B3EBADEC2872978A00EAEB37 /* mipmap_energy.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mipmap_energy.frag; sourceTree = ""; }; + B3EBADED2872978A00EAEB37 /* mipmap.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mipmap.vert; sourceTree = ""; }; + B3EBADEE2872978A00EAEB37 /* blit_vram_cached.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = blit_vram_cached.comp; sourceTree = ""; }; + B3EBADEF2872978A00EAEB37 /* resolve.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = resolve.comp; sourceTree = ""; }; + B3EBADF02872978A00EAEB37 /* primitive.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = primitive.vert; sourceTree = ""; }; + B3EBADF12872978A00EAEB37 /* quad.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = quad.frag; sourceTree = ""; }; + B3EBADF22872978A00EAEB37 /* rebuild_shaders.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = rebuild_shaders.sh; sourceTree = ""; }; + B3EBADF32872978A00EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBADF42872978A00EAEB37 /* format_all.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = format_all.sh; sourceTree = ""; }; + B3EBADF62872978A00EAEB37 /* render_pass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = render_pass.cpp; sourceTree = ""; }; + B3EBADF72872978A00EAEB37 /* buffer_pool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = buffer_pool.cpp; sourceTree = ""; }; + B3EBADF82872978A00EAEB37 /* query_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = query_pool.hpp; sourceTree = ""; }; + B3EBADF92872978A00EAEB37 /* fence.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fence.hpp; sourceTree = ""; }; + B3EBADFA2872978A00EAEB37 /* semaphore.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = semaphore.hpp; sourceTree = ""; }; + B3EBADFB2872978A00EAEB37 /* vulkan.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vulkan.hpp; sourceTree = ""; }; + B3EBADFC2872978A00EAEB37 /* event_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = event_manager.cpp; sourceTree = ""; }; + B3EBADFD2872978A00EAEB37 /* image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = ""; }; + B3EBADFE2872978A00EAEB37 /* texture_format.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = texture_format.hpp; sourceTree = ""; }; + B3EBADFF2872978A00EAEB37 /* wsi_timing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wsi_timing.cpp; sourceTree = ""; }; + B3EBAE002872978A00EAEB37 /* quirks.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quirks.hpp; sourceTree = ""; }; + B3EBAE012872978A00EAEB37 /* memory_allocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_allocator.cpp; sourceTree = ""; }; + B3EBAE022872978A00EAEB37 /* vulkan_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vulkan_common.hpp; sourceTree = ""; }; + B3EBAE032872978A00EAEB37 /* wsi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wsi.cpp; sourceTree = ""; }; + B3EBAE042872978A00EAEB37 /* command_pool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = command_pool.cpp; sourceTree = ""; }; + B3EBAE052872978A00EAEB37 /* cookie.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cookie.hpp; sourceTree = ""; }; + B3EBAE072872978A00EAEB37 /* texture_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture_manager.cpp; sourceTree = ""; }; + B3EBAE082872978A00EAEB37 /* shader_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = shader_manager.hpp; sourceTree = ""; }; + B3EBAE092872978A00EAEB37 /* shader_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader_manager.cpp; sourceTree = ""; }; + B3EBAE0A2872978A00EAEB37 /* texture_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = texture_manager.hpp; sourceTree = ""; }; + B3EBAE0B2872978A00EAEB37 /* pipeline_event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pipeline_event.cpp; sourceTree = ""; }; + B3EBAE0C2872978A00EAEB37 /* descriptor_set.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = descriptor_set.cpp; sourceTree = ""; }; + B3EBAE0D2872978A00EAEB37 /* device.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = device.cpp; sourceTree = ""; }; + B3EBAE0E2872978A00EAEB37 /* sampler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sampler.cpp; sourceTree = ""; }; + B3EBAE0F2872978A00EAEB37 /* command_buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = command_buffer.cpp; sourceTree = ""; }; + B3EBAE102872978A00EAEB37 /* semaphore_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = semaphore_manager.cpp; sourceTree = ""; }; + B3EBAE112872978A00EAEB37 /* fence_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fence_manager.cpp; sourceTree = ""; }; + B3EBAE122872978A00EAEB37 /* shader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = ""; }; + B3EBAE132872978A00EAEB37 /* buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = buffer.cpp; sourceTree = ""; }; + B3EBAE142872978A00EAEB37 /* limits.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = limits.hpp; sourceTree = ""; }; + B3EBAE152872978A00EAEB37 /* command_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = command_pool.hpp; sourceTree = ""; }; + B3EBAE162872978A00EAEB37 /* wsi.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wsi.hpp; sourceTree = ""; }; + B3EBAE172872978A00EAEB37 /* cookie.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cookie.cpp; sourceTree = ""; }; + B3EBAE182872978A00EAEB37 /* pipeline_event.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pipeline_event.hpp; sourceTree = ""; }; + B3EBAE192872978A00EAEB37 /* descriptor_set.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = descriptor_set.hpp; sourceTree = ""; }; + B3EBAE1A2872978A00EAEB37 /* device.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = device.hpp; sourceTree = ""; }; + B3EBAE1B2872978A00EAEB37 /* semaphore_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = semaphore_manager.hpp; sourceTree = ""; }; + B3EBAE1C2872978A00EAEB37 /* command_buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = command_buffer.hpp; sourceTree = ""; }; + B3EBAE1D2872978A00EAEB37 /* sampler.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = sampler.hpp; sourceTree = ""; }; + B3EBAE1E2872978A00EAEB37 /* fence_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fence_manager.hpp; sourceTree = ""; }; + B3EBAE1F2872978A00EAEB37 /* buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = buffer.hpp; sourceTree = ""; }; + B3EBAE202872978A00EAEB37 /* shader.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = shader.hpp; sourceTree = ""; }; + B3EBAE212872978A00EAEB37 /* render_pass.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = render_pass.hpp; sourceTree = ""; }; + B3EBAE222872978A00EAEB37 /* type_to_string.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_to_string.hpp; sourceTree = ""; }; + B3EBAE232872978A00EAEB37 /* buffer_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = buffer_pool.hpp; sourceTree = ""; }; + B3EBAE242872978A00EAEB37 /* query_pool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = query_pool.cpp; sourceTree = ""; }; + B3EBAE252872978A00EAEB37 /* fence.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fence.cpp; sourceTree = ""; }; + B3EBAE262872978A00EAEB37 /* semaphore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = semaphore.cpp; sourceTree = ""; }; + B3EBAE272872978A00EAEB37 /* vulkan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vulkan.cpp; sourceTree = ""; }; + B3EBAE282872978A00EAEB37 /* event_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = event_manager.hpp; sourceTree = ""; }; + B3EBAE292872978A00EAEB37 /* image.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = image.hpp; sourceTree = ""; }; + B3EBAE2A2872978A00EAEB37 /* format.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = format.hpp; sourceTree = ""; }; + B3EBAE2B2872978A00EAEB37 /* texture_format.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture_format.cpp; sourceTree = ""; }; + B3EBAE2C2872978A00EAEB37 /* wsi_timing.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wsi_timing.hpp; sourceTree = ""; }; + B3EBAE2D2872978A00EAEB37 /* memory_allocator.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = memory_allocator.hpp; sourceTree = ""; }; + B3EBAE2E2872978A00EAEB37 /* .clang-format */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".clang-format"; sourceTree = ""; }; + B3EBAE322872978A00EAEB37 /* vk_layer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_layer.h; sourceTree = ""; }; + B3EBAE332872978A00EAEB37 /* vk_icd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_icd.h; sourceTree = ""; }; + B3EBAE342872978A00EAEB37 /* vulkan_vi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_vi.h; sourceTree = ""; }; + B3EBAE352872978A00EAEB37 /* vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = ""; }; + B3EBAE362872978A00EAEB37 /* vk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = ""; }; + B3EBAE372872978A00EAEB37 /* vulkan_fuchsia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_fuchsia.h; sourceTree = ""; }; + B3EBAE382872978A00EAEB37 /* vk_platform_old.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_platform_old.h; sourceTree = ""; }; + B3EBAE392872978A00EAEB37 /* vulkan_wayland.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_wayland.h; sourceTree = ""; }; + B3EBAE3A2872978A00EAEB37 /* vulkan_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_win32.h; sourceTree = ""; }; + B3EBAE3B2872978A00EAEB37 /* vulkan_macos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_macos.h; sourceTree = ""; }; + B3EBAE3C2872978A00EAEB37 /* vulkan_xlib_xrandr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib_xrandr.h; sourceTree = ""; }; + B3EBAE3D2872978A00EAEB37 /* vulkan_xcb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xcb.h; sourceTree = ""; }; + B3EBAE3E2872978A00EAEB37 /* vulkan_mir.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_mir.h; sourceTree = ""; }; + B3EBAE3F2872978A00EAEB37 /* vulkan_old.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_old.h; sourceTree = ""; }; + B3EBAE402872978A00EAEB37 /* vulkan_xlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib.h; sourceTree = ""; }; + B3EBAE412872978A00EAEB37 /* vulkan_intel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_intel.h; sourceTree = ""; }; + B3EBAE422872978A00EAEB37 /* vulkan_ios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_ios.h; sourceTree = ""; }; + B3EBAE432872978A00EAEB37 /* vulkan_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_core.h; sourceTree = ""; }; + B3EBAE442872978A00EAEB37 /* vk_sdk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_sdk_platform.h; sourceTree = ""; }; + B3EBAE452872978A00EAEB37 /* vulkan_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_android.h; sourceTree = ""; }; + B3EBAE472872978A00EAEB37 /* atlas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = atlas.cpp; sourceTree = ""; }; + B3EBAE482872978A00EAEB37 /* atlas.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = atlas.hpp; sourceTree = ""; }; + B3EBAE492872978A00EAEB37 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3EBAE4A2872978A00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBAE4B2872978A00EAEB37 /* beetle_psx_globals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = beetle_psx_globals.h; sourceTree = ""; }; + B3EBAE4C2872978A00EAEB37 /* libretro_cbs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro_cbs.c; sourceTree = ""; }; + B3EBAE4D2872978A00EAEB37 /* ugui_tools.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ugui_tools.c; sourceTree = ""; }; + B3EBAE4E2872978A00EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EBAE4F2872978A00EAEB37 /* scrc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scrc32.h; sourceTree = ""; }; + B3EBAE502872978A00EAEB37 /* libretro_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_options.h; sourceTree = ""; }; + B3EBAE512872978A00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBAE522872978A00EAEB37 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B3EBAE532872978A00EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBAE542872978A00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAE552872978A00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EBAE562872978A00EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EBAE572872978A00EAEB37 /* beetle_psx_griffin_c.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = beetle_psx_griffin_c.c; sourceTree = ""; }; + B3EBAE5A2872978A00EAEB37 /* crowdin_prep.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = crowdin_prep.yml; sourceTree = ""; }; + B3EBAE5B2872978A00EAEB37 /* crowdin_translate.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = crowdin_translate.yml; sourceTree = ""; }; + B3EBAE5C2872978A00EAEB37 /* ISSUE_TEMPLATE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ISSUE_TEMPLATE.md; sourceTree = ""; }; + B3EBAE5F2872978A00EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EBAE612872978A00EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EBAE622872978A00EAEB37 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3EBAE642872978A00EAEB37 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3EBAE662872978A00EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EBAE672872978A00EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EBAE682872978A00EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EBAE692872978A00EAEB37 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3EBAE6A2872978A00EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EBAE6C2872978A00EAEB37 /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B3EBAE6D2872978A00EAEB37 /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B3EBAE6E2872978A00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBAE6F2872978A00EAEB37 /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B3EBAE702872978A00EAEB37 /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B3EBAE712872978A00EAEB37 /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B3EBAE722872978A00EAEB37 /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B3EBAE742872978A00EAEB37 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3EBAE752872978A00EAEB37 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3EBAE772872978A00EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EBAE782872978A00EAEB37 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3EBAE7A2872978A00EAEB37 /* rhash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rhash.c; sourceTree = ""; }; + B3EBAE7C2872978A00EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EBAE7D2872978A00EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EBAE802872978A00EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBAE812872978A00EAEB37 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3EBAE832872978A00EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBAE842872978A00EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBAE852872978A00EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EBAE872872978A00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBAE892872978A00EAEB37 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B3EBAE8A2872978A00EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBAE8B2872978A00EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBAE8D2872978A00EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBAE8E2872978A00EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBAE8F2872978A00EAEB37 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B3EBAE902872978A00EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBAE912872978A00EAEB37 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B3EBAE922872978A00EAEB37 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B3EBAE932872978A00EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBAE942872978A00EAEB37 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B3EBAE952872978A00EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBAE962872978A00EAEB37 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3EBAE982872978A00EAEB37 /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B3EBAE992872978A00EAEB37 /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B3EBAE9A2872978A00EAEB37 /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B3EBAE9B2872978A00EAEB37 /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B3EBAE9C2872978A00EAEB37 /* rglgen_private_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_private_headers.h; sourceTree = ""; }; + B3EBAE9D2872978A00EAEB37 /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B3EBAE9E2872978A00EAEB37 /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B3EBAEA02872978A00EAEB37 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3EBAEA12872978A00EAEB37 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3EBAEA32872978A00EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBAEA42872978A00EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EBAEA52872978A00EAEB37 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3EBAEA62872978A00EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBAEA72872978A00EAEB37 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3EBAEA92872978A00EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBAEAA2872978A00EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBAEAB2872978A00EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EBAEAD2872978A00EAEB37 /* float_minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_minmax.h; sourceTree = ""; }; + B3EBAEAF2872978A00EAEB37 /* rtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtime.h; sourceTree = ""; }; + B3EBAEB02872978A00EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EBAEB22872978A00EAEB37 /* glsm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm.h; sourceTree = ""; }; + B3EBAEB32872978A00EAEB37 /* glsmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsmsym.h; sourceTree = ""; }; + B3EBAEB42872978A00EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBAEB52872978A00EAEB37 /* rhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rhash.h; sourceTree = ""; }; + B3EBAEB72872978A00EAEB37 /* rsemaphore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsemaphore.h; sourceTree = ""; }; + B3EBAEB82872978A00EAEB37 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3EBAEB92872978A00EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBAEBA2872978A00EAEB37 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3EBAEBB2872978A00EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EBAEBD2872978A00EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBAEBE2872978A00EAEB37 /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B3EBAEBF2872978A00EAEB37 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3EBAEC12872978A00EAEB37 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3EBAEC32872978A00EAEB37 /* rtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtime.c; sourceTree = ""; }; + B3EBAEC52872978B00EAEB37 /* glsm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsm.c; sourceTree = ""; }; + B3EBAEC72872978B00EAEB37 /* wiiu_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiiu_pthread.h; sourceTree = ""; }; + B3EBAEC82872978B00EAEB37 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3EBAEC92872978B00EAEB37 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3EBAECA2872978B00EAEB37 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3EBAECB2872978B00EAEB37 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3EBAECC2872978B00EAEB37 /* rsemaphore.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rsemaphore.c; sourceTree = ""; }; + B3EBAECE2872978B00EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EBAED12872978B00EAEB37 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B3EBAED22872978B00EAEB37 /* ugui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui.h; sourceTree = ""; }; + B3EBAED32872978B00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBAED42872978B00EAEB37 /* ugui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ugui.c; sourceTree = ""; }; + B3EBAED52872978B00EAEB37 /* ugui_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui_config.h; sourceTree = ""; }; + B3EBAED72872978B00EAEB37 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3EBAED82872978B00EAEB37 /* bootstrap */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = bootstrap; sourceTree = ""; }; + B3EBAED92872978B00EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBAEDA2872978B00EAEB37 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3EBAEDD2872978B00EAEB37 /* jit_aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_aarch64.h; sourceTree = ""; }; + B3EBAEDE2872978B00EAEB37 /* jit_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_arm.h; sourceTree = ""; }; + B3EBAEDF2872978B00EAEB37 /* jit_riscv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_riscv.h; sourceTree = ""; }; + B3EBAEE02872978B00EAEB37 /* jit_s390.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_s390.h; sourceTree = ""; }; + B3EBAEE12872978B00EAEB37 /* jit_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_x86.h; sourceTree = ""; }; + B3EBAEE22872978B00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBAEE32872978B00EAEB37 /* jit_alpha.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_alpha.h; sourceTree = ""; }; + B3EBAEE42872978B00EAEB37 /* jit_ppc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_ppc.h; sourceTree = ""; }; + B3EBAEE52872978B00EAEB37 /* jit_hppa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_hppa.h; sourceTree = ""; }; + B3EBAEE62872978B00EAEB37 /* jit_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_private.h; sourceTree = ""; }; + B3EBAEE72872978B00EAEB37 /* jit_mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_mips.h; sourceTree = ""; }; + B3EBAEE82872978B00EAEB37 /* jit_ia64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_ia64.h; sourceTree = ""; }; + B3EBAEE92872978B00EAEB37 /* jit_sparc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_sparc.h; sourceTree = ""; }; + B3EBAEEA2872978B00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBAEEB2872978B00EAEB37 /* lightning.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.h.in; sourceTree = ""; }; + B3EBAEEC2872978B00EAEB37 /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; + B3EBAEED2872978B00EAEB37 /* COPYING.LESSER */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.LESSER; sourceTree = ""; }; + B3EBAEEE2872978B00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBAEEF2872978B00EAEB37 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3EBAEF02872978B00EAEB37 /* COPYING.DOC */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.DOC; sourceTree = ""; }; + B3EBAEF12872978B00EAEB37 /* bootstrap.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = bootstrap.conf; sourceTree = ""; }; + B3EBAEF22872978B00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBAEF32872978B00EAEB37 /* lightning.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.pc.in; sourceTree = ""; }; + B3EBAEF42872978B00EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBAEF52872978B00EAEB37 /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + B3EBAEF62872978B00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAEF72872978B00EAEB37 /* size.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = size.c; sourceTree = ""; }; + B3EBAEF82872978B00EAEB37 /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B3EBAEFA2872978B00EAEB37 /* jit_riscv-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-sz.c"; sourceTree = ""; }; + B3EBAEFB2872978B00EAEB37 /* jit_alpha-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-fpu.c"; sourceTree = ""; }; + B3EBAEFC2872978B00EAEB37 /* jit_sparc-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-fpu.c"; sourceTree = ""; }; + B3EBAEFD2872978B00EAEB37 /* jit_alpha-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-cpu.c"; sourceTree = ""; }; + B3EBAEFE2872978B00EAEB37 /* jit_sparc-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-cpu.c"; sourceTree = ""; }; + B3EBAEFF2872978B00EAEB37 /* jit_ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_ppc.c; sourceTree = ""; }; + B3EBAF002872978B00EAEB37 /* jit_hppa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_hppa.c; sourceTree = ""; }; + B3EBAF012872978B00EAEB37 /* jit_alpha.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_alpha.c; sourceTree = ""; }; + B3EBAF022872978B00EAEB37 /* jit_alpha-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-sz.c"; sourceTree = ""; }; + B3EBAF032872978B00EAEB37 /* jit_memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_memory.c; sourceTree = ""; }; + B3EBAF042872978B00EAEB37 /* jit_hppa-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-fpu.c"; sourceTree = ""; }; + B3EBAF052872978B00EAEB37 /* jit_arm-swf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-swf.c"; sourceTree = ""; }; + B3EBAF062872978B00EAEB37 /* jit_ia64-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-fpu.c"; sourceTree = ""; }; + B3EBAF072872978B00EAEB37 /* jit_size.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_size.c; sourceTree = ""; }; + B3EBAF082872978B00EAEB37 /* jit_mips.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_mips.c; sourceTree = ""; }; + B3EBAF092872978B00EAEB37 /* jit_ppc-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-fpu.c"; sourceTree = ""; }; + B3EBAF0A2872978B00EAEB37 /* jit_disasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_disasm.c; sourceTree = ""; }; + B3EBAF0B2872978B00EAEB37 /* jit_s390-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-fpu.c"; sourceTree = ""; }; + B3EBAF0C2872978B00EAEB37 /* jit_sparc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_sparc.c; sourceTree = ""; }; + B3EBAF0D2872978B00EAEB37 /* jit_ppc-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-cpu.c"; sourceTree = ""; }; + B3EBAF0E2872978B00EAEB37 /* jit_hppa-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-sz.c"; sourceTree = ""; }; + B3EBAF0F2872978B00EAEB37 /* jit_ia64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_ia64.c; sourceTree = ""; }; + B3EBAF102872978B00EAEB37 /* jit_mips-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-sz.c"; sourceTree = ""; }; + B3EBAF112872978B00EAEB37 /* jit_s390-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-cpu.c"; sourceTree = ""; }; + B3EBAF122872978B00EAEB37 /* jit_ia64-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-sz.c"; sourceTree = ""; }; + B3EBAF132872978B00EAEB37 /* jit_arm-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-cpu.c"; sourceTree = ""; }; + B3EBAF142872978B00EAEB37 /* jit_hppa-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-cpu.c"; sourceTree = ""; }; + B3EBAF152872978B00EAEB37 /* jit_sparc-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-sz.c"; sourceTree = ""; }; + B3EBAF162872978B00EAEB37 /* jit_ia64-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-cpu.c"; sourceTree = ""; }; + B3EBAF172872978B00EAEB37 /* jit_aarch64-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-sz.c"; sourceTree = ""; }; + B3EBAF182872978B00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBAF192872978B00EAEB37 /* jit_riscv-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-fpu.c"; sourceTree = ""; }; + B3EBAF1A2872978B00EAEB37 /* jit_aarch64-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-cpu.c"; sourceTree = ""; }; + B3EBAF1B2872978B00EAEB37 /* jit_x86-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-sz.c"; sourceTree = ""; }; + B3EBAF1C2872978B00EAEB37 /* jit_note.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_note.c; sourceTree = ""; }; + B3EBAF1D2872978B00EAEB37 /* jit_aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_aarch64.c; sourceTree = ""; }; + B3EBAF1E2872978B00EAEB37 /* jit_x86-x87.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-x87.c"; sourceTree = ""; }; + B3EBAF1F2872978B00EAEB37 /* jit_rewind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_rewind.c; sourceTree = ""; }; + B3EBAF202872978B00EAEB37 /* jit_riscv-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-cpu.c"; sourceTree = ""; }; + B3EBAF212872978B00EAEB37 /* jit_aarch64-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-fpu.c"; sourceTree = ""; }; + B3EBAF222872978B00EAEB37 /* jit_x86-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-cpu.c"; sourceTree = ""; }; + B3EBAF232872978B00EAEB37 /* jit_s390.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_s390.c; sourceTree = ""; }; + B3EBAF242872978B00EAEB37 /* jit_print.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_print.c; sourceTree = ""; }; + B3EBAF252872978B00EAEB37 /* jit_riscv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_riscv.c; sourceTree = ""; }; + B3EBAF262872978B00EAEB37 /* jit_mips-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-cpu.c"; sourceTree = ""; }; + B3EBAF272872978B00EAEB37 /* jit_x86-sse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-sse.c"; sourceTree = ""; }; + B3EBAF282872978B00EAEB37 /* jit_arm-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-sz.c"; sourceTree = ""; }; + B3EBAF292872978B00EAEB37 /* jit_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_arm.c; sourceTree = ""; }; + B3EBAF2A2872978B00EAEB37 /* jit_arm-vfp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-vfp.c"; sourceTree = ""; }; + B3EBAF2B2872978B00EAEB37 /* jit_s390-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-sz.c"; sourceTree = ""; }; + B3EBAF2C2872978B00EAEB37 /* jit_mips-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-fpu.c"; sourceTree = ""; }; + B3EBAF2D2872978B00EAEB37 /* jit_names.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_names.c; sourceTree = ""; }; + B3EBAF2E2872978B00EAEB37 /* jit_ppc-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-sz.c"; sourceTree = ""; }; + B3EBAF2F2872978B00EAEB37 /* jit_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_x86.c; sourceTree = ""; }; + B3EBAF302872978B00EAEB37 /* lightning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightning.c; sourceTree = ""; }; + B3EBAF322872978B00EAEB37 /* gnulib-cache.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gnulib-cache.m4"; sourceTree = ""; }; + B3EBAF332872978B00EAEB37 /* .gitkeep */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitkeep; sourceTree = ""; }; + B3EBAF342872978B00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAF352872978B00EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBAF372872978B00EAEB37 /* fact.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fact.c; sourceTree = ""; }; + B3EBAF382872978B00EAEB37 /* printf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printf.c; sourceTree = ""; }; + B3EBAF392872978B00EAEB37 /* rfib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rfib.c; sourceTree = ""; }; + B3EBAF3A2872978B00EAEB37 /* rpn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpn.c; sourceTree = ""; }; + B3EBAF3B2872978B00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBAF3C2872978B00EAEB37 /* incr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = incr.c; sourceTree = ""; }; + B3EBAF3D2872978B00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAF3E2872978B00EAEB37 /* ifib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ifib.c; sourceTree = ""; }; + B3EBAF3F2872978B00EAEB37 /* lightning.texi */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.texi; sourceTree = ""; }; + B3EBAF402872978B00EAEB37 /* .cvsignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .cvsignore; sourceTree = ""; }; + B3EBAF412872978B00EAEB37 /* body.texi */ = {isa = PBXFileReference; lastKnownFileType = text; path = body.texi; sourceTree = ""; }; + B3EBAF422872978B00EAEB37 /* THANKS */ = {isa = PBXFileReference; lastKnownFileType = text; path = THANKS; sourceTree = ""; }; + B3EBAF432872978B00EAEB37 /* README-hacking */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-hacking"; sourceTree = ""; }; + B3EBAF452872978B00EAEB37 /* check.arm.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm.sh; sourceTree = ""; }; + B3EBAF462872978B00EAEB37 /* range.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = range.ok; sourceTree = ""; }; + B3EBAF472872978B00EAEB37 /* ldsti.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldsti.ok; sourceTree = ""; }; + B3EBAF482872978B00EAEB37 /* call.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = call.tst; sourceTree = ""; }; + B3EBAF492872978B00EAEB37 /* alu_rsh.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsh.ok; sourceTree = ""; }; + B3EBAF4A2872978B00EAEB37 /* carry.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = carry.tst; sourceTree = ""; }; + B3EBAF4B2872978B00EAEB37 /* cvt.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = cvt.ok; sourceTree = ""; }; + B3EBAF4C2872978B00EAEB37 /* stack.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = stack.tst; sourceTree = ""; }; + B3EBAF4D2872978B00EAEB37 /* jmpr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = jmpr.ok; sourceTree = ""; }; + B3EBAF4E2872978B00EAEB37 /* alu_and.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_and.ok; sourceTree = ""; }; + B3EBAF4F2872978B00EAEB37 /* float.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = float.ok; sourceTree = ""; }; + B3EBAF502872978B00EAEB37 /* varargs.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = varargs.ok; sourceTree = ""; }; + B3EBAF512872978B00EAEB37 /* alu_neg.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_neg.tst; sourceTree = ""; }; + B3EBAF522872978B00EAEB37 /* tramp.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = tramp.ok; sourceTree = ""; }; + B3EBAF532872978B00EAEB37 /* alu_lsh.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_lsh.tst; sourceTree = ""; }; + B3EBAF542872978B00EAEB37 /* ldstxr-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxr-c.ok"; sourceTree = ""; }; + B3EBAF552872978B00EAEB37 /* fib.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fib.ok; sourceTree = ""; }; + B3EBAF562872978B00EAEB37 /* ldstxr-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxr-c.tst"; sourceTree = ""; }; + B3EBAF572872978B00EAEB37 /* bp.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = bp.ok; sourceTree = ""; }; + B3EBAF582872978B00EAEB37 /* check.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.swf.sh; sourceTree = ""; }; + B3EBAF592872978B00EAEB37 /* alu_com.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_com.tst; sourceTree = ""; }; + B3EBAF5A2872978B00EAEB37 /* alu_mul.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_mul.tst; sourceTree = ""; }; + B3EBAF5B2872978B00EAEB37 /* ldstxi-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxi-c.tst"; sourceTree = ""; }; + B3EBAF5C2872978B00EAEB37 /* branch.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = branch.tst; sourceTree = ""; }; + B3EBAF5D2872978B00EAEB37 /* check.nodata.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.nodata.sh; sourceTree = ""; }; + B3EBAF5E2872978B00EAEB37 /* ldstr-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstr-c.ok"; sourceTree = ""; }; + B3EBAF5F2872978B00EAEB37 /* alux_add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_add.ok; sourceTree = ""; }; + B3EBAF602872978B00EAEB37 /* branch.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = branch.ok; sourceTree = ""; }; + B3EBAF612872978B00EAEB37 /* allocai.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocai.tst; sourceTree = ""; }; + B3EBAF622872978B00EAEB37 /* ldstxi.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxi.ok; sourceTree = ""; }; + B3EBAF632872978B00EAEB37 /* alu_rem.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rem.ok; sourceTree = ""; }; + B3EBAF642872978B00EAEB37 /* fop_abs.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_abs.ok; sourceTree = ""; }; + B3EBAF652872978B00EAEB37 /* ccall.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ccall.c; sourceTree = ""; }; + B3EBAF662872978B00EAEB37 /* bp.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = bp.tst; sourceTree = ""; }; + B3EBAF672872978B00EAEB37 /* alu_sub.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_sub.ok; sourceTree = ""; }; + B3EBAF682872978B00EAEB37 /* carry.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = carry.ok; sourceTree = ""; }; + B3EBAF692872978B00EAEB37 /* live.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = live.tst; sourceTree = ""; }; + B3EBAF6A2872978B00EAEB37 /* clobber.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = clobber.tst; sourceTree = ""; }; + B3EBAF6B2872978B00EAEB37 /* check.arm.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm.swf.sh; sourceTree = ""; }; + B3EBAF6C2872978B00EAEB37 /* alu_xor.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_xor.ok; sourceTree = ""; }; + B3EBAF6D2872978B00EAEB37 /* alu_rsb.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsb.ok; sourceTree = ""; }; + B3EBAF6E2872978B00EAEB37 /* run-test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "run-test"; sourceTree = ""; }; + B3EBAF6F2872978B00EAEB37 /* va_list.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = va_list.tst; sourceTree = ""; }; + B3EBAF702872978B00EAEB37 /* put.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = put.ok; sourceTree = ""; }; + B3EBAF712872978B00EAEB37 /* alux_sub.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_sub.tst; sourceTree = ""; }; + B3EBAF722872978B00EAEB37 /* fop_sqrt.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_sqrt.tst; sourceTree = ""; }; + B3EBAF732872978B00EAEB37 /* setcode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = setcode.c; sourceTree = ""; }; + B3EBAF742872978B00EAEB37 /* ret.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ret.tst; sourceTree = ""; }; + B3EBAF752872978B00EAEB37 /* alu_lsh.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_lsh.ok; sourceTree = ""; }; + B3EBAF762872978B00EAEB37 /* qalu.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = qalu.inc; sourceTree = ""; }; + B3EBAF772872978B00EAEB37 /* va_list.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = va_list.ok; sourceTree = ""; }; + B3EBAF782872978B00EAEB37 /* allocar.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocar.ok; sourceTree = ""; }; + B3EBAF792872978B00EAEB37 /* ldstxi.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxi.tst; sourceTree = ""; }; + B3EBAF7A2872978B00EAEB37 /* alu_mul.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_mul.ok; sourceTree = ""; }; + B3EBAF7B2872978B00EAEB37 /* qalu_div.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_div.tst; sourceTree = ""; }; + B3EBAF7C2872978B00EAEB37 /* align.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = align.ok; sourceTree = ""; }; + B3EBAF7D2872978B00EAEB37 /* alu_rsh.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsh.tst; sourceTree = ""; }; + B3EBAF7E2872978B00EAEB37 /* add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = add.ok; sourceTree = ""; }; + B3EBAF7F2872978B00EAEB37 /* fop_sqrt.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_sqrt.ok; sourceTree = ""; }; + B3EBAF802872978B00EAEB37 /* ldsti.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldsti.tst; sourceTree = ""; }; + B3EBAF812872978B00EAEB37 /* rpn.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = rpn.ok; sourceTree = ""; }; + B3EBAF822872978B00EAEB37 /* qalu_mul.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_mul.ok; sourceTree = ""; }; + B3EBAF832872978B00EAEB37 /* self.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = self.c; sourceTree = ""; }; + B3EBAF842872978B00EAEB37 /* range.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = range.tst; sourceTree = ""; }; + B3EBAF852872978B00EAEB37 /* jmpr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = jmpr.tst; sourceTree = ""; }; + B3EBAF862872978B00EAEB37 /* check.x87.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.x87.sh; sourceTree = ""; }; + B3EBAF872872978B00EAEB37 /* alu_com.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_com.ok; sourceTree = ""; }; + B3EBAF882872978B00EAEB37 /* alux_add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_add.tst; sourceTree = ""; }; + B3EBAF892872978B00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBAF8A2872978B00EAEB37 /* allocai.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocai.ok; sourceTree = ""; }; + B3EBAF8B2872978B00EAEB37 /* alu_add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_add.tst; sourceTree = ""; }; + B3EBAF8C2872978B00EAEB37 /* ldstr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstr.tst; sourceTree = ""; }; + B3EBAF8D2872978B00EAEB37 /* call.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = call.ok; sourceTree = ""; }; + B3EBAF8E2872978B00EAEB37 /* 3to2.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = 3to2.ok; sourceTree = ""; }; + B3EBAF8F2872978B00EAEB37 /* rpn.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = rpn.tst; sourceTree = ""; }; + B3EBAF902872978B00EAEB37 /* ldstxr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxr.tst; sourceTree = ""; }; + B3EBAF912872978B00EAEB37 /* alu_rsb.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsb.tst; sourceTree = ""; }; + B3EBAF922872978B00EAEB37 /* alu_sub.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_sub.tst; sourceTree = ""; }; + B3EBAF932872978B00EAEB37 /* cva_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cva_list.c; sourceTree = ""; }; + B3EBAF942872978B00EAEB37 /* divi.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = divi.ok; sourceTree = ""; }; + B3EBAF952872978B00EAEB37 /* ldstr-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstr-c.tst"; sourceTree = ""; }; + B3EBAF962872978B00EAEB37 /* alux_sub.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_sub.ok; sourceTree = ""; }; + B3EBAF972872978B00EAEB37 /* ldst.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ldst.inc; sourceTree = ""; }; + B3EBAF982872978B00EAEB37 /* add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = add.tst; sourceTree = ""; }; + B3EBAF992872978B00EAEB37 /* check.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.sh; sourceTree = ""; }; + B3EBAF9A2872978B00EAEB37 /* ret.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ret.ok; sourceTree = ""; }; + B3EBAF9B2872978B00EAEB37 /* qalu_mul.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_mul.tst; sourceTree = ""; }; + B3EBAF9C2872978B00EAEB37 /* check.x87.nodata.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.x87.nodata.sh; sourceTree = ""; }; + B3EBAF9D2872978B00EAEB37 /* alu_rem.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rem.tst; sourceTree = ""; }; + B3EBAF9E2872978B00EAEB37 /* alu_or.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_or.tst; sourceTree = ""; }; + B3EBAF9F2872978B00EAEB37 /* alu_neg.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_neg.ok; sourceTree = ""; }; + B3EBAFA02872978B00EAEB37 /* alu_and.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_and.tst; sourceTree = ""; }; + B3EBAFA12872978B00EAEB37 /* hton.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = hton.tst; sourceTree = ""; }; + B3EBAFA22872978B00EAEB37 /* allocar.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocar.tst; sourceTree = ""; }; + B3EBAFA32872978B00EAEB37 /* hton.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = hton.ok; sourceTree = ""; }; + B3EBAFA42872978B00EAEB37 /* qalu_div.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_div.ok; sourceTree = ""; }; + B3EBAFA52872978B00EAEB37 /* fib.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fib.tst; sourceTree = ""; }; + B3EBAFA62872978B00EAEB37 /* alu_add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_add.ok; sourceTree = ""; }; + B3EBAFA72872978B00EAEB37 /* alu.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = alu.inc; sourceTree = ""; }; + B3EBAFA82872978B00EAEB37 /* put.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = put.tst; sourceTree = ""; }; + B3EBAFA92872978B00EAEB37 /* alu_or.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_or.ok; sourceTree = ""; }; + B3EBAFAA2872978B00EAEB37 /* divi.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = divi.tst; sourceTree = ""; }; + B3EBAFAB2872978B00EAEB37 /* ldstxr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxr.ok; sourceTree = ""; }; + B3EBAFAC2872978B00EAEB37 /* ctramp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctramp.c; sourceTree = ""; }; + B3EBAFAD2872978B00EAEB37 /* alu_div.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_div.ok; sourceTree = ""; }; + B3EBAFAE2872978B00EAEB37 /* check.arm4.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm4.swf.sh; sourceTree = ""; }; + B3EBAFAF2872978B00EAEB37 /* clobber.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = clobber.ok; sourceTree = ""; }; + B3EBAFB02872978B00EAEB37 /* nodata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nodata.c; sourceTree = ""; }; + B3EBAFB12872978B00EAEB37 /* align.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = align.tst; sourceTree = ""; }; + B3EBAFB22872978B00EAEB37 /* cvt.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = cvt.tst; sourceTree = ""; }; + B3EBAFB32872978B00EAEB37 /* ranger.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ranger.tst; sourceTree = ""; }; + B3EBAFB42872978B00EAEB37 /* ldstr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstr.ok; sourceTree = ""; }; + B3EBAFB52872978B00EAEB37 /* carg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = carg.c; sourceTree = ""; }; + B3EBAFB62872978B00EAEB37 /* alu_xor.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_xor.tst; sourceTree = ""; }; + B3EBAFB72872978B00EAEB37 /* live.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = live.ok; sourceTree = ""; }; + B3EBAFB82872978B00EAEB37 /* fop_abs.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_abs.tst; sourceTree = ""; }; + B3EBAFB92872978B00EAEB37 /* float.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = float.tst; sourceTree = ""; }; + B3EBAFBA2872978B00EAEB37 /* tramp.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = tramp.tst; sourceTree = ""; }; + B3EBAFBB2872978B00EAEB37 /* varargs.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = varargs.tst; sourceTree = ""; }; + B3EBAFBC2872978B00EAEB37 /* ldstxi-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxi-c.ok"; sourceTree = ""; }; + B3EBAFBD2872978B00EAEB37 /* all.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = all.tst; sourceTree = ""; }; + B3EBAFBE2872978B00EAEB37 /* alu_div.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_div.tst; sourceTree = ""; }; + B3EBAFBF2872978B00EAEB37 /* lightning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightning.c; sourceTree = ""; }; + B3EBAFC02872978B00EAEB37 /* stack.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = stack.ok; sourceTree = ""; }; + B3EBAFC12872978B00EAEB37 /* 3to2.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = 3to2.tst; sourceTree = ""; }; + B3EBAFC22872978B00EAEB37 /* ranger.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ranger.ok; sourceTree = ""; }; + B3EBAFC42872978B00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAFC62872978B00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAFC92872978B00EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBAFCA2872978B00EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBAFCB2872978B00EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBAFCC2872978B00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBAFCD2872978B00EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBAFCE2872978B00EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBAFCF2872978B00EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBAFD12872978B00EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBAFD22872978B00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBAFD32872978B00EAEB37 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B3EBAFD52872978B00EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EBAFD62872978B00EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EBAFD72872978B00EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EBAFD82872978B00EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EBAFD92872978B00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBAFDA2872978B00EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EBAFDC2872978B00EAEB37 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B3EBAFDE2872978B00EAEB37 /* time.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = time.h; sourceTree = ""; }; + B3EBAFDF2872978B00EAEB37 /* condition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = condition.h; sourceTree = ""; }; + B3EBAFE02872978B00EAEB37 /* thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = ""; }; + B3EBAFE12872978B00EAEB37 /* mutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mutex.h; sourceTree = ""; }; + B3EBAFE42872978B00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAFE52872978B00EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBAFE62872978B00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBAFE72872978B00EAEB37 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3EBAFEB2872978C00EAEB37 /* .suo */ = {isa = PBXFileReference; lastKnownFileType = file; path = .suo; sourceTree = ""; }; + B3EBAFEC2872978C00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBAFED2872978C00EAEB37 /* mman.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj; sourceTree = ""; }; + B3EBAFEE2872978C00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAFEF2872978C00EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBAFF02872978C00EAEB37 /* test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = ""; }; + B3EBAFF12872978C00EAEB37 /* mman.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj.user; sourceTree = ""; }; + B3EBAFF22872978C00EAEB37 /* mman.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj.filters; sourceTree = ""; }; + B3EBAFF32872978C00EAEB37 /* mman.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = mman.sln; sourceTree = ""; }; + B3EBAFF42872978C00EAEB37 /* mman-win32.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = "mman-win32.pro"; sourceTree = ""; }; + B3EBAFF52872978C00EAEB37 /* UpgradeLog.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = UpgradeLog.htm; sourceTree = ""; }; + B3EBAFF62872978C00EAEB37 /* mman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mman.c; sourceTree = ""; }; + B3EBAFF82872978C00EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBAFF92872978C00EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EBAFFA2872978C00EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EBAFFB2872978C00EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EBAFFC2872978C00EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EBAFFD2872978C00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBAFFE2872978C00EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EBAFFF2872978C00EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EBB0002872978C00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBB0012872978C00EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EBB0022872978C00EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EBB0042872978C00EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EBB0052872978C00EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EBB0062872978C00EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EBB0072872978C00EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EBB0082872978C00EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EBB0092872978C00EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EBB00A2872978C00EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EBB00B2872978C00EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EBB00C2872978C00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBB00E2872978C00EAEB37 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B3EBB00F2872978C00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBB0102872978C00EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBB0122872978C00EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EBB0132872978C00EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EBB0142872978C00EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EBB0152872978C00EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EBB0162872978C00EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EBB0172872978C00EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EBB0182872978C00EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EBB0192872978C00EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EBB01A2872978C00EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EBB01B2872978C00EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EBB01C2872978C00EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EBB01D2872978C00EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EBB01E2872978C00EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EBB01F2872978C00EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EBB0202872978C00EAEB37 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B3EBB0212872978C00EAEB37 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B3EBB0222872978C00EAEB37 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B3EBB0242872978C00EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EBB0252872978C00EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EBB0262872978C00EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EBB0272872978C00EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EBB0282872978C00EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EBB0292872978C00EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EBB02A2872978C00EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EBB02B2872978C00EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EBB02C2872978C00EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EBB02D2872978C00EAEB37 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3EBB02E2872978C00EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EBB0302872978C00EAEB37 /* recompiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recompiler.h; sourceTree = ""; }; + B3EBB0312872978C00EAEB37 /* reaper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reaper.h; sourceTree = ""; }; + B3EBB0322872978C00EAEB37 /* optimizer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = optimizer.c; sourceTree = ""; }; + B3EBB0332872978C00EAEB37 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3EBB0342872978C00EAEB37 /* regcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; + B3EBB0352872978C00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBB0362872978C00EAEB37 /* emitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emitter.h; sourceTree = ""; }; + B3EBB0372872978C00EAEB37 /* disassembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disassembler.h; sourceTree = ""; }; + B3EBB0382872978C00EAEB37 /* memmanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmanager.h; sourceTree = ""; }; + B3EBB0392872978C00EAEB37 /* config.h.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.h.cmakein; sourceTree = ""; }; + B3EBB03A2872978C00EAEB37 /* interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interpreter.h; sourceTree = ""; }; + B3EBB03B2872978C00EAEB37 /* blockcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blockcache.h; sourceTree = ""; }; + B3EBB03C2872978C00EAEB37 /* lightrec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lightrec.h; sourceTree = ""; }; + B3EBB03D2872978C00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBB03E2872978C00EAEB37 /* optimizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = optimizer.h; sourceTree = ""; }; + B3EBB03F2872978C00EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBB0402872978C00EAEB37 /* lightrec-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "lightrec-private.h"; sourceTree = ""; }; + B3EBB0412872978C00EAEB37 /* recompiler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = recompiler.c; sourceTree = ""; }; + B3EBB0422872978C00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBB0432872978C00EAEB37 /* reaper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reaper.c; sourceTree = ""; }; + B3EBB0442872978C00EAEB37 /* slist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = slist.h; sourceTree = ""; }; + B3EBB0452872978C00EAEB37 /* memmanager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmanager.c; sourceTree = ""; }; + B3EBB0462872978C00EAEB37 /* disassembler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disassembler.c; sourceTree = ""; }; + B3EBB0472872978C00EAEB37 /* emitter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emitter.c; sourceTree = ""; }; + B3EBB0482872978C00EAEB37 /* regcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = regcache.c; sourceTree = ""; }; + B3EBB0492872978C00EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBB04A2872978C00EAEB37 /* interpreter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interpreter.c; sourceTree = ""; }; + B3EBB04B2872978C00EAEB37 /* lightrec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightrec.c; sourceTree = ""; }; + B3EBB04C2872978C00EAEB37 /* blockcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blockcache.c; sourceTree = ""; }; + B3EBB04E2872978C00EAEB37 /* aes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aes.c; sourceTree = ""; }; + B3EBB04F2872978C00EAEB37 /* ec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ec.c; sourceTree = ""; }; + B3EBB0502872978C00EAEB37 /* amctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = amctrl.h; sourceTree = ""; }; + B3EBB0512872978C00EAEB37 /* des.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = des.c; sourceTree = ""; }; + B3EBB0522872978C00EAEB37 /* kirk_engine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kirk_engine.h; sourceTree = ""; }; + B3EBB0532872978C00EAEB37 /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = ""; }; + B3EBB0542872978C00EAEB37 /* bn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bn.c; sourceTree = ""; }; + B3EBB0552872978C00EAEB37 /* aes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; + B3EBB0562872978C00EAEB37 /* psp_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_headers.h; sourceTree = ""; }; + B3EBB0572872978C00EAEB37 /* des.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = des.h; sourceTree = ""; }; + B3EBB0582872978C00EAEB37 /* amctrl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = amctrl.c; sourceTree = ""; }; + B3EBB0592872978C00EAEB37 /* sha1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sha1.h; sourceTree = ""; }; + B3EBB05A2872978C00EAEB37 /* kirk_engine.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = kirk_engine.c; sourceTree = ""; }; + B3EBB05B2872978C00EAEB37 /* key_vault.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = key_vault.h; sourceTree = ""; }; + B3EBB05C2872978C00EAEB37 /* libretro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cpp; sourceTree = ""; }; + B3EBB05D2872978C00EAEB37 /* libretro_cbs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_cbs.h; sourceTree = ""; }; + B3EBB05F2872978C00EAEB37 /* rsx_dump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsx_dump.h; sourceTree = ""; }; + B3EBB0602872978C00EAEB37 /* rsx_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsx_intf.cpp; sourceTree = ""; }; + B3EBB0612872978C00EAEB37 /* rsx_lib_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsx_lib_vulkan.h; sourceTree = ""; }; + B3EBB0622872978C00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBB0632872978C00EAEB37 /* rsx_lib_vulkan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsx_lib_vulkan.cpp; sourceTree = ""; }; + B3EBB0642872978C00EAEB37 /* rsx_dump.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsx_dump.cpp; sourceTree = ""; }; + B3EBB0652872978C00EAEB37 /* rsx_lib_gl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsx_lib_gl.cpp; sourceTree = ""; }; + B3EBB0662872978C00EAEB37 /* rsx_lib_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsx_lib_gl.h; sourceTree = ""; }; + B3EBB0672872978C00EAEB37 /* rsx_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsx_intf.h; sourceTree = ""; }; + B3EBB0692872978C00EAEB37 /* shaders_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shaders_common.h; sourceTree = ""; }; + B3EBB06A2872978C00EAEB37 /* output_vertex.glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = output_vertex.glsl.h; sourceTree = ""; }; + B3EBB06B2872978C00EAEB37 /* image_load_vertex.glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image_load_vertex.glsl.h; sourceTree = ""; }; + B3EBB06C2872978C00EAEB37 /* output_fragment.glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = output_fragment.glsl.h; sourceTree = ""; }; + B3EBB06D2872978C00EAEB37 /* image_load_fragment.glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image_load_fragment.glsl.h; sourceTree = ""; }; + B3EBB06E2872978C00EAEB37 /* command_fragment.glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = command_fragment.glsl.h; sourceTree = ""; }; + B3EBB06F2872978C00EAEB37 /* command_vertex.glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = command_vertex.glsl.h; sourceTree = ""; }; + B3EBB0702872978C00EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBB0712872978C00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBB0722872978C00EAEB37 /* beetle_psx_globals.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = beetle_psx_globals.c; sourceTree = ""; }; + B3EBB0742872978C00EAEB37 /* pgxp_value.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_value.c; sourceTree = ""; }; + B3EBB0752872978C00EAEB37 /* pgxp_mem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_mem.c; sourceTree = ""; }; + B3EBB0762872978C00EAEB37 /* pgxp_gte.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_gte.h; sourceTree = ""; }; + B3EBB0772872978C00EAEB37 /* pgxp_main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_main.h; sourceTree = ""; }; + B3EBB0782872978C00EAEB37 /* pgxp_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_cpu.c; sourceTree = ""; }; + B3EBB0792872978C00EAEB37 /* pgxp_gpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_gpu.c; sourceTree = ""; }; + B3EBB07A2872978C00EAEB37 /* pgxp_debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_debug.c; sourceTree = ""; }; + B3EBB07B2872978C00EAEB37 /* pgxp_value.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_value.h; sourceTree = ""; }; + B3EBB07C2872978C00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBB07D2872978C00EAEB37 /* pgxp_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_mem.h; sourceTree = ""; }; + B3EBB07E2872978C00EAEB37 /* pgxp_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_cpu.h; sourceTree = ""; }; + B3EBB07F2872978C00EAEB37 /* pgxp_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_types.h; sourceTree = ""; }; + B3EBB0802872978C00EAEB37 /* pgxp_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_main.c; sourceTree = ""; }; + B3EBB0812872978C00EAEB37 /* pgxp_gte.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_gte.c; sourceTree = ""; }; + B3EBB0822872978C00EAEB37 /* pgxp_debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_debug.h; sourceTree = ""; }; + B3EBB0832872978C00EAEB37 /* pgxp_gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgxp_gpu.h; sourceTree = ""; }; + B3EBB0852872978C00EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBB0862872978C00EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBB0872872978C00EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3EBB0892872978C00EAEB37 /* mempatcher.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mempatcher.cpp; sourceTree = ""; }; + B3EBB08A2872978C00EAEB37 /* general.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = general.cpp; sourceTree = ""; }; + B3EBB08C2872978C00EAEB37 /* asm_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_arm.h; sourceTree = ""; }; + B3EBB08D2872978C00EAEB37 /* ogg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ogg.h; sourceTree = ""; }; + B3EBB08E2872978C00EAEB37 /* ivorbiscodec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ivorbiscodec.h; sourceTree = ""; }; + B3EBB08F2872978C00EAEB37 /* block.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = block.c; sourceTree = ""; }; + B3EBB0902872978C00EAEB37 /* framing.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = framing.c; sourceTree = ""; }; + B3EBB0912872978C00EAEB37 /* mdct_lookup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdct_lookup.h; sourceTree = ""; }; + B3EBB0922872978C00EAEB37 /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + B3EBB0932872978C00EAEB37 /* info.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = info.c; sourceTree = ""; }; + B3EBB0942872978C00EAEB37 /* lsp_lookup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lsp_lookup.h; sourceTree = ""; }; + B3EBB0952872978C00EAEB37 /* mdct.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mdct.c; sourceTree = ""; }; + B3EBB0962872978C00EAEB37 /* os.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = os.h; sourceTree = ""; }; + B3EBB0972872978C00EAEB37 /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = ""; }; + B3EBB0982872978C00EAEB37 /* codebook.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = codebook.c; sourceTree = ""; }; + B3EBB0992872978C00EAEB37 /* floor0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floor0.c; sourceTree = ""; }; + B3EBB09A2872978C00EAEB37 /* backends.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backends.h; sourceTree = ""; }; + B3EBB09B2872978C00EAEB37 /* registry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = registry.h; sourceTree = ""; }; + B3EBB09C2872978C00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBB09D2872978C00EAEB37 /* window_lookup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window_lookup.h; sourceTree = ""; }; + B3EBB09E2872978C00EAEB37 /* res012.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = res012.c; sourceTree = ""; }; + B3EBB09F2872978C00EAEB37 /* ivorbisfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ivorbisfile.h; sourceTree = ""; }; + B3EBB0A02872978C00EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBB0A12872978C00EAEB37 /* sharedbook.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sharedbook.c; sourceTree = ""; }; + B3EBB0A22872978C00EAEB37 /* floor1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floor1.c; sourceTree = ""; }; + B3EBB0A32872978C00EAEB37 /* synthesis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = synthesis.c; sourceTree = ""; }; + B3EBB0A42872978C00EAEB37 /* block.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = block.h; sourceTree = ""; }; + B3EBB0A52872978C00EAEB37 /* mdct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdct.h; sourceTree = ""; }; + B3EBB0A62872978C00EAEB37 /* mapping0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mapping0.c; sourceTree = ""; }; + B3EBB0A72872978C00EAEB37 /* bitwise.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitwise.c; sourceTree = ""; }; + B3EBB0A82872978C00EAEB37 /* registry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = registry.c; sourceTree = ""; }; + B3EBB0A92872978C00EAEB37 /* vorbisfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vorbisfile.c; sourceTree = ""; }; + B3EBB0AA2872978C00EAEB37 /* window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = window.c; sourceTree = ""; }; + B3EBB0AB2872978C00EAEB37 /* codec_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codec_internal.h; sourceTree = ""; }; + B3EBB0AC2872978C00EAEB37 /* codebook.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codebook.h; sourceTree = ""; }; + B3EBB0AD2872978C00EAEB37 /* error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + B3EBB0AE2872978C00EAEB37 /* MemoryStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemoryStream.h; sourceTree = ""; }; + B3EBB0B02872978C00EAEB37 /* Deinterlacer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Deinterlacer.cpp; sourceTree = ""; }; + B3EBB0B12872978C00EAEB37 /* surface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = surface.h; sourceTree = ""; }; + B3EBB0B22872978C00EAEB37 /* surface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = surface.cpp; sourceTree = ""; }; + B3EBB0B32872978C00EAEB37 /* Deinterlacer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Deinterlacer.h; sourceTree = ""; }; + B3EBB0B52872978C00EAEB37 /* CDAccess_CCD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDAccess_CCD.h; sourceTree = ""; }; + B3EBB0B62872978C00EAEB37 /* audioreader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audioreader.h; sourceTree = ""; }; + B3EBB0B72872978C00EAEB37 /* galois.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = galois.h; sourceTree = ""; }; + B3EBB0B82872978C00EAEB37 /* l-ec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "l-ec.h"; sourceTree = ""; }; + B3EBB0B92872978C00EAEB37 /* CDAccess_CHD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CDAccess_CHD.cpp; sourceTree = ""; }; + B3EBB0BA2872978C00EAEB37 /* edc_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = edc_crc32.c; sourceTree = ""; }; + B3EBB0BB2872978C00EAEB37 /* CDAccess_Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDAccess_Image.h; sourceTree = ""; }; + B3EBB0BC2872978C00EAEB37 /* misc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = misc.cpp; sourceTree = ""; }; + B3EBB0BD2872978C00EAEB37 /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + B3EBB0BE2872978C00EAEB37 /* lec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lec.c; sourceTree = ""; }; + B3EBB0BF2872978C00EAEB37 /* CDAccess_Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CDAccess_Image.cpp; sourceTree = ""; }; + B3EBB0C02872978C00EAEB37 /* recover-raw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "recover-raw.h"; sourceTree = ""; }; + B3EBB0C12872978C00EAEB37 /* CDAccess_CCD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CDAccess_CCD.cpp; sourceTree = ""; }; + B3EBB0C22872978C00EAEB37 /* audioreader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audioreader.cpp; sourceTree = ""; }; + B3EBB0C32872978C00EAEB37 /* CDUtility.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CDUtility.c; sourceTree = ""; }; + B3EBB0C42872978C00EAEB37 /* cdromif.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdromif.h; sourceTree = ""; }; + B3EBB0C52872978C00EAEB37 /* CDAccess_CHD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDAccess_CHD.h; sourceTree = ""; }; + B3EBB0C62872978C00EAEB37 /* CDAccess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDAccess.h; sourceTree = ""; }; + B3EBB0C72872978C00EAEB37 /* edc_crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = edc_crc32.h; sourceTree = ""; }; + B3EBB0C82872978C00EAEB37 /* CDAccess_PBP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CDAccess_PBP.cpp; sourceTree = ""; }; + B3EBB0C92872978C00EAEB37 /* cdromif.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdromif.cpp; sourceTree = ""; }; + B3EBB0CA2872978C00EAEB37 /* l-ec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "l-ec.c"; sourceTree = ""; }; + B3EBB0CB2872978C00EAEB37 /* galois.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = galois.c; sourceTree = ""; }; + B3EBB0CC2872978C00EAEB37 /* CDAccess_PBP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDAccess_PBP.h; sourceTree = ""; }; + B3EBB0CD2872978C00EAEB37 /* lec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lec.h; sourceTree = ""; }; + B3EBB0CE2872978C00EAEB37 /* SimpleFIFO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimpleFIFO.h; sourceTree = ""; }; + B3EBB0CF2872978C00EAEB37 /* CDAccess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CDAccess.cpp; sourceTree = ""; }; + B3EBB0D02872978C00EAEB37 /* CDUtility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDUtility.h; sourceTree = ""; }; + B3EBB0D12872978C00EAEB37 /* recover-raw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "recover-raw.c"; sourceTree = ""; }; + B3EBB0D22872978C00EAEB37 /* mednafen-types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "mednafen-types.h"; sourceTree = ""; }; + B3EBB0D32872978C00EAEB37 /* mednafen-endian.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "mednafen-endian.cpp"; sourceTree = ""; }; + B3EBB0D42872978C00EAEB37 /* clamp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamp.h; sourceTree = ""; }; + B3EBB0D52872978C00EAEB37 /* settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = settings.h; sourceTree = ""; }; + B3EBB0D62872978C00EAEB37 /* masmem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = masmem.h; sourceTree = ""; }; + B3EBB0D72872978C00EAEB37 /* error.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = error.cpp; sourceTree = ""; }; + B3EBB0D82872978C00EAEB37 /* state.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = state.c; sourceTree = ""; }; + B3EBB0D92872978C00EAEB37 /* mempatcher-driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "mempatcher-driver.h"; sourceTree = ""; }; + B3EBB0DA2872978C00EAEB37 /* general.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = general.h; sourceTree = ""; }; + B3EBB0DC2872978C00EAEB37 /* frontio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frontio.h; sourceTree = ""; }; + B3EBB0DD2872978C00EAEB37 /* dma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dma.h; sourceTree = ""; }; + B3EBB0DE2872978C00EAEB37 /* gpu_polygon_sub.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpu_polygon_sub.cpp; sourceTree = ""; }; + B3EBB0DF2872978C00EAEB37 /* decomp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decomp.cpp; sourceTree = ""; }; + B3EBB0E02872978C00EAEB37 /* cdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdc.h; sourceTree = ""; }; + B3EBB0E12872978C00EAEB37 /* sio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sio.h; sourceTree = ""; }; + B3EBB0E22872978C00EAEB37 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3EBB0E32872978C00EAEB37 /* gte.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gte.h; sourceTree = ""; }; + B3EBB0E42872978C00EAEB37 /* psx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psx.h; sourceTree = ""; }; + B3EBB0E52872978C00EAEB37 /* dis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dis.h; sourceTree = ""; }; + B3EBB0E62872978C00EAEB37 /* gpu_line.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpu_line.cpp; sourceTree = ""; }; + B3EBB0E72872978C00EAEB37 /* dma.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dma.cpp; sourceTree = ""; }; + B3EBB0E82872978C00EAEB37 /* gpu_sprite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpu_sprite.cpp; sourceTree = ""; }; + B3EBB0EA2872978C00EAEB37 /* dualanalog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dualanalog.cpp; sourceTree = ""; }; + B3EBB0EB2872978C00EAEB37 /* memcard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memcard.cpp; sourceTree = ""; }; + B3EBB0EC2872978C00EAEB37 /* guncon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = guncon.cpp; sourceTree = ""; }; + B3EBB0ED2872978C00EAEB37 /* justifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = justifier.h; sourceTree = ""; }; + B3EBB0EE2872978C00EAEB37 /* justifier.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = justifier.cpp; sourceTree = ""; }; + B3EBB0EF2872978C00EAEB37 /* mouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mouse.cpp; sourceTree = ""; }; + B3EBB0F02872978C00EAEB37 /* gamepad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gamepad.cpp; sourceTree = ""; }; + B3EBB0F12872978C00EAEB37 /* multitap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = multitap.cpp; sourceTree = ""; }; + B3EBB0F22872978C00EAEB37 /* negcon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = negcon.h; sourceTree = ""; }; + B3EBB0F32872978C00EAEB37 /* mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mouse.h; sourceTree = ""; }; + B3EBB0F42872978C00EAEB37 /* dualshock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dualshock.cpp; sourceTree = ""; }; + B3EBB0F52872978C00EAEB37 /* multitap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = multitap.h; sourceTree = ""; }; + B3EBB0F62872978C00EAEB37 /* negcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = negcon.cpp; sourceTree = ""; }; + B3EBB0F72872978C00EAEB37 /* guncon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = guncon.h; sourceTree = ""; }; + B3EBB0F82872978C00EAEB37 /* memcard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memcard.h; sourceTree = ""; }; + B3EBB0F92872978C00EAEB37 /* dualshock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dualshock.h; sourceTree = ""; }; + B3EBB0FA2872978C00EAEB37 /* dualanalog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dualanalog.h; sourceTree = ""; }; + B3EBB0FB2872978C00EAEB37 /* gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gamepad.h; sourceTree = ""; }; + B3EBB0FC2872978C00EAEB37 /* timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + B3EBB0FD2872978C00EAEB37 /* gte.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gte.cpp; sourceTree = ""; }; + B3EBB0FE2872978C00EAEB37 /* spu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spu.cpp; sourceTree = ""; }; + B3EBB0FF2872978C00EAEB37 /* mdec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mdec.cpp; sourceTree = ""; }; + B3EBB1002872978C00EAEB37 /* spu_fir_table.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = spu_fir_table.inc; sourceTree = ""; }; + B3EBB1012872978C00EAEB37 /* spu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spu.h; sourceTree = ""; }; + B3EBB1022872978C00EAEB37 /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + B3EBB1032872978C00EAEB37 /* frontio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = frontio.cpp; sourceTree = ""; }; + B3EBB1042872978C00EAEB37 /* gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu.h; sourceTree = ""; }; + B3EBB1062872978C00EAEB37 /* PSX-TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = "PSX-TODO"; sourceTree = ""; }; + B3EBB1072872978C00EAEB37 /* SPU-IRQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = "SPU-IRQ"; sourceTree = ""; }; + B3EBB1082872978C00EAEB37 /* tristep.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tristep.cpp; sourceTree = ""; }; + B3EBB1092872978C00EAEB37 /* NOTES */ = {isa = PBXFileReference; lastKnownFileType = text; path = NOTES; sourceTree = ""; }; + B3EBB10A2872978C00EAEB37 /* SOURCES */ = {isa = PBXFileReference; lastKnownFileType = text; path = SOURCES; sourceTree = ""; }; + B3EBB10B2872978C00EAEB37 /* dis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dis.cpp; sourceTree = ""; }; + B3EBB10C2872978C00EAEB37 /* cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; + B3EBB10D2872978C00EAEB37 /* debug.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debug.cpp; sourceTree = ""; }; + B3EBB10E2872978C00EAEB37 /* irq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = irq.h; sourceTree = ""; }; + B3EBB10F2872978C00EAEB37 /* gpu_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_common.h; sourceTree = ""; }; + B3EBB1102872978C00EAEB37 /* sio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sio.cpp; sourceTree = ""; }; + B3EBB1112872978C00EAEB37 /* cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpu.cpp; sourceTree = ""; }; + B3EBB1122872978C00EAEB37 /* FastFIFO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FastFIFO.h; sourceTree = ""; }; + B3EBB1132872978C00EAEB37 /* mdec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdec.h; sourceTree = ""; }; + B3EBB1142872978C00EAEB37 /* gpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpu.cpp; sourceTree = ""; }; + B3EBB1152872978C00EAEB37 /* cdc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdc.cpp; sourceTree = ""; }; + B3EBB1162872978C00EAEB37 /* irq.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = irq.cpp; sourceTree = ""; }; + B3EBB1172872978C00EAEB37 /* gpu_polygon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpu_polygon.cpp; sourceTree = ""; }; + B3EBB1182872978C00EAEB37 /* mednafen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mednafen.h; sourceTree = ""; }; + B3EBB1192872978C00EAEB37 /* MemoryStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStream.cpp; sourceTree = ""; }; + B3EBB11A2872978C00EAEB37 /* mempatcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mempatcher.h; sourceTree = ""; }; + B3EBB11B2872978C00EAEB37 /* Stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Stream.h; sourceTree = ""; }; + B3EBB11C2872978C00EAEB37 /* git.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = git.h; sourceTree = ""; }; + B3EBB11D2872978C00EAEB37 /* state_helpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = state_helpers.h; sourceTree = ""; }; + B3EBB11E2872978C00EAEB37 /* FileStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FileStream.cpp; sourceTree = ""; }; + B3EBB11F2872978C00EAEB37 /* mednafen-endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "mednafen-endian.h"; sourceTree = ""; }; + B3EBB1202872978C00EAEB37 /* FileStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FileStream.h; sourceTree = ""; }; + B3EBB1212872978C00EAEB37 /* Stream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Stream.cpp; sourceTree = ""; }; + B3EBB1222872978C00EAEB37 /* settings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = settings.c; sourceTree = ""; }; + B3EBB1232872978C00EAEB37 /* math_ops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = math_ops.h; sourceTree = ""; }; + B3EBB1242872978C00EAEB37 /* state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = state.h; sourceTree = ""; }; + B3EBB1252872978C00EAEB37 /* beetle_psx_griffin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = beetle_psx_griffin.cpp; sourceTree = ""; }; + B3EBB1262872978C00EAEB37 /* ugui_tools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui_tools.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3CE8039287405DC00B6BB5A /* liblzma.tbd in Frameworks */, + B3CE803A287405DC00B6BB5A /* libz.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libbeetle_psx.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libbeetle_psx-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVBeetlePSX */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVBeetlePSX.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVBeetlePSX; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVBeetlePSXCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVBeetlePSXCore.h */, + B37022C6287253B300B3F6DA /* PVBeetlePSXCore.mm */, + ); + path = PVBeetlePSXCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EBAD5F2872978900EAEB37 /* beetle-psx-libretro */, + B37022BE287253B300B3F6DA /* PVBeetlePSX */, + B37022C4287253B300B3F6DA /* PVBeetlePSXCore */, + B37022C3287253B300B3F6DA /* PVBeetlePSX.h */, + B37022BD287253B300B3F6DA /* PVBeetlePSX-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVBeetlePSX.framework */, + B30178D3207C901D0051B93D /* libbeetle_psx.a */, + B3344BC32859E088006E6B3A /* libbeetle_psx-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3CE8037287405DC00B6BB5A /* liblzma.tbd */, + B3CE8038287405DC00B6BB5A /* libz.tbd */, + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EBAD5F2872978900EAEB37 /* beetle-psx-libretro */ = { + isa = PBXGroup; + children = ( + B3EBAE542872978A00EAEB37 /* .gitignore */, + B3EBAE532872978A00EAEB37 /* COPYING */, + B3EBAE4A2872978A00EAEB37 /* Makefile */, + B3EBB0722872978C00EAEB37 /* beetle_psx_globals.c */, + B3EBAE572872978A00EAEB37 /* beetle_psx_griffin_c.c */, + B3EBAE4C2872978A00EAEB37 /* libretro_cbs.c */, + B3EBAE4D2872978A00EAEB37 /* ugui_tools.c */, + B3EBAE4E2872978A00EAEB37 /* Makefile.common */, + B3EBB1252872978C00EAEB37 /* beetle_psx_griffin.cpp */, + B3EBAD622872978900EAEB37 /* input.cpp */, + B3EBB05C2872978C00EAEB37 /* libretro.cpp */, + B3EBAD602872978900EAEB37 /* .dir-locals.el */, + B3EBAE4B2872978A00EAEB37 /* beetle_psx_globals.h */, + B3EBAD612872978900EAEB37 /* input.h */, + B3EBB05D2872978C00EAEB37 /* libretro_cbs.h */, + B3EBAE562872978A00EAEB37 /* libretro_core_options_intl.h */, + B3EBAE552872978A00EAEB37 /* libretro_core_options.h */, + B3EBAE502872978A00EAEB37 /* libretro_options.h */, + B3EBAE4F2872978A00EAEB37 /* scrc32.h */, + B3EBB1262872978C00EAEB37 /* ugui_tools.h */, + B3EBAE512872978A00EAEB37 /* README.md */, + B3EBB0712872978C00EAEB37 /* link.T */, + B3EBB0702872978C00EAEB37 /* .gitlab-ci.yml */, + B3EBB0872872978C00EAEB37 /* .travis.yml */, + B3EBAE522872978A00EAEB37 /* appveyor.yml */, + B3EBAE582872978A00EAEB37 /* .github */, + B3EBAECF2872978B00EAEB37 /* deps */, + B3EBAD672872978900EAEB37 /* intl */, + B3EBB0842872978C00EAEB37 /* jni */, + B3EBAE5D2872978A00EAEB37 /* libretro-common */, + B3EBAD632872978900EAEB37 /* lightning-lightrec-include */, + B3EBB0882872978C00EAEB37 /* mednafen */, + B3EBAD742872978900EAEB37 /* parallel-psx */, + B3EBB0732872978C00EAEB37 /* pgxp */, + B3EBB05E2872978C00EAEB37 /* rsx */, + ); + path = "beetle-psx-libretro"; + sourceTree = ""; + }; + B3EBAD632872978900EAEB37 /* lightning-lightrec-include */ = { + isa = PBXGroup; + children = ( + B3EBAD642872978900EAEB37 /* debug.h */, + B3EBAD652872978900EAEB37 /* config.h */, + B3EBAD662872978900EAEB37 /* lightning.h */, + ); + path = "lightning-lightrec-include"; + sourceTree = ""; + }; + B3EBAD672872978900EAEB37 /* intl */ = { + isa = PBXGroup; + children = ( + B3EBAD682872978900EAEB37 /* crowdin_translate.py */, + B3EBAD692872978900EAEB37 /* download_workflow.py */, + B3EBAD6A2872978900EAEB37 /* core_option_regex.py */, + B3EBAD6B2872978900EAEB37 /* upload_workflow.py */, + B3EBAD6C2872978900EAEB37 /* crowdin_source_upload.py */, + B3EBAD6D2872978900EAEB37 /* crowdin.yaml */, + B3EBAD6E2872978900EAEB37 /* .gitignore */, + B3EBAD6F2872978900EAEB37 /* core_option_translation.py */, + B3EBAD702872978900EAEB37 /* initial_sync.py */, + B3EBAD712872978900EAEB37 /* v1_to_v2_converter.py */, + B3EBAD722872978900EAEB37 /* crowdin_translation_download.py */, + B3EBAD732872978900EAEB37 /* crowdin_prep.py */, + ); + path = intl; + sourceTree = ""; + }; + B3EBAD742872978900EAEB37 /* parallel-psx */ = { + isa = PBXGroup; + children = ( + B3EBAD752872978900EAEB37 /* renderer */, + B3EBAD792872978900EAEB37 /* SPIRV-Cross */, + B3EBAD852872978900EAEB37 /* util */, + B3EBAD9E2872978A00EAEB37 /* volk */, + B3EBADA12872978A00EAEB37 /* custom-textures */, + B3EBADA92872978A00EAEB37 /* stb */, + B3EBADAD2872978A00EAEB37 /* README.md */, + B3EBADAE2872978A00EAEB37 /* glsl */, + B3EBADF32872978A00EAEB37 /* COPYING */, + B3EBADF42872978A00EAEB37 /* format_all.sh */, + B3EBADF52872978A00EAEB37 /* vulkan */, + B3EBAE2E2872978A00EAEB37 /* .clang-format */, + B3EBAE2F2872978A00EAEB37 /* khronos */, + B3EBAE462872978A00EAEB37 /* atlas */, + B3EBAE492872978A00EAEB37 /* main.cpp */, + ); + path = "parallel-psx"; + sourceTree = ""; + }; + B3EBAD752872978900EAEB37 /* renderer */ = { + isa = PBXGroup; + children = ( + B3EBAD762872978900EAEB37 /* renderer.hpp */, + B3EBAD772872978900EAEB37 /* renderer.cpp */, + B3EBAD782872978900EAEB37 /* renderer_pipelines.hpp */, + ); + path = renderer; + sourceTree = ""; + }; + B3EBAD792872978900EAEB37 /* SPIRV-Cross */ = { + isa = PBXGroup; + children = ( + B3EBAD7A2872978900EAEB37 /* spirv_parser.hpp */, + B3EBAD7B2872978900EAEB37 /* spirv.hpp */, + B3EBAD7C2872978900EAEB37 /* spirv_cfg.cpp */, + B3EBAD7D2872978900EAEB37 /* spirv_cross_parsed_ir.hpp */, + B3EBAD7E2872978900EAEB37 /* spirv_cross.cpp */, + B3EBAD7F2872978900EAEB37 /* spirv_cfg.hpp */, + B3EBAD802872978900EAEB37 /* spirv_cross_parsed_ir.cpp */, + B3EBAD812872978900EAEB37 /* spirv_cross.hpp */, + B3EBAD822872978900EAEB37 /* GLSL.std.450.h */, + B3EBAD832872978900EAEB37 /* spirv_parser.cpp */, + B3EBAD842872978900EAEB37 /* spirv_common.hpp */, + ); + path = "SPIRV-Cross"; + sourceTree = ""; + }; + B3EBAD852872978900EAEB37 /* util */ = { + isa = PBXGroup; + children = ( + B3EBAD862872978900EAEB37 /* hash.hpp */, + B3EBAD872872978900EAEB37 /* intrusive.hpp */, + B3EBAD882872978900EAEB37 /* array_view.hpp */, + B3EBAD892872978900EAEB37 /* util.cpp */, + B3EBAD8A2872978900EAEB37 /* intrusive_hash_map.hpp */, + B3EBAD8B2872978900EAEB37 /* read_write_lock.hpp */, + B3EBAD8C2872978900EAEB37 /* dynamic_library.cpp */, + B3EBAD8D2872978900EAEB37 /* timer.cpp */, + B3EBAD8E2872978900EAEB37 /* variant.hpp */, + B3EBAD8F2872978900EAEB37 /* cli_parser.cpp */, + B3EBAD902872978A00EAEB37 /* intrusive_list.hpp */, + B3EBAD912872978A00EAEB37 /* dynamic_library.hpp */, + B3EBAD922872978A00EAEB37 /* object_pool.hpp */, + B3EBAD932872978A00EAEB37 /* timer.hpp */, + B3EBAD942872978A00EAEB37 /* volatile_source.hpp */, + B3EBAD952872978A00EAEB37 /* async_object_sink.hpp */, + B3EBAD962872978A00EAEB37 /* compile_time_hash.hpp */, + B3EBAD972872978A00EAEB37 /* cli_parser.hpp */, + B3EBAD982872978A00EAEB37 /* temporary_hashmap.hpp */, + B3EBAD992872978A00EAEB37 /* hashmap.hpp */, + B3EBAD9A2872978A00EAEB37 /* enum_cast.hpp */, + B3EBAD9B2872978A00EAEB37 /* stack_allocator.hpp */, + B3EBAD9C2872978A00EAEB37 /* util.hpp */, + B3EBAD9D2872978A00EAEB37 /* unstable_remove_if.hpp */, + ); + path = util; + sourceTree = ""; + }; + B3EBAD9E2872978A00EAEB37 /* volk */ = { + isa = PBXGroup; + children = ( + B3EBAD9F2872978A00EAEB37 /* volk.c */, + B3EBADA02872978A00EAEB37 /* volk.h */, + ); + path = volk; + sourceTree = ""; + }; + B3EBADA12872978A00EAEB37 /* custom-textures */ = { + isa = PBXGroup; + children = ( + B3EBADA22872978A00EAEB37 /* texture_tracker.cpp */, + B3EBADA32872978A00EAEB37 /* image_io.hpp */, + B3EBADA42872978A00EAEB37 /* config_parser.cpp */, + B3EBADA52872978A00EAEB37 /* config_parser.h */, + B3EBADA62872978A00EAEB37 /* dbg_input_callback.h */, + B3EBADA72872978A00EAEB37 /* texture_tracker.hpp */, + B3EBADA82872978A00EAEB37 /* image_io.cpp */, + ); + path = "custom-textures"; + sourceTree = ""; + }; + B3EBADA92872978A00EAEB37 /* stb */ = { + isa = PBXGroup; + children = ( + B3EBADAA2872978A00EAEB37 /* stb_image_write.h */, + B3EBADAB2872978A00EAEB37 /* stb_image.h */, + B3EBADAC2872978A00EAEB37 /* stb.c */, + ); + path = stb; + sourceTree = ""; + }; + B3EBADAE2872978A00EAEB37 /* glsl */ = { + isa = PBXGroup; + children = ( + B3EBADAF2872978A00EAEB37 /* primitive.h */, + B3EBADB02872978A00EAEB37 /* hdtextures.h */, + B3EBADB12872978A00EAEB37 /* dither.h */, + B3EBADB22872978A00EAEB37 /* vram.h */, + B3EBADB32872978A00EAEB37 /* Makefile */, + B3EBADB42872978A00EAEB37 /* quad.vert */, + B3EBADB52872978A00EAEB37 /* primitive.frag */, + B3EBADB62872978A00EAEB37 /* copy_vram.comp */, + B3EBADB72872978A00EAEB37 /* blit_vram.comp */, + B3EBADB82872978A00EAEB37 /* prebuilt */, + B3EBADE82872978A00EAEB37 /* mipmap_blur.frag */, + B3EBADE92872978A00EAEB37 /* primitive_feedback.frag */, + B3EBADEA2872978A00EAEB37 /* mipmap_resolve.frag */, + B3EBADEB2872978A00EAEB37 /* common.h */, + B3EBADEC2872978A00EAEB37 /* mipmap_energy.frag */, + B3EBADED2872978A00EAEB37 /* mipmap.vert */, + B3EBADEE2872978A00EAEB37 /* blit_vram_cached.comp */, + B3EBADEF2872978A00EAEB37 /* resolve.comp */, + B3EBADF02872978A00EAEB37 /* primitive.vert */, + B3EBADF12872978A00EAEB37 /* quad.frag */, + B3EBADF22872978A00EAEB37 /* rebuild_shaders.sh */, + ); + path = glsl; + sourceTree = ""; + }; + B3EBADB82872978A00EAEB37 /* prebuilt */ = { + isa = PBXGroup; + children = ( + B3EBADB92872978A00EAEB37 /* copy_vram.comp.inc */, + B3EBADBA2872978A00EAEB37 /* blit_vram.cached.masked.unscaled.comp.inc */, + B3EBADBB2872978A00EAEB37 /* flat.unscaled.vert.inc */, + B3EBADBC2872978A00EAEB37 /* blit_vram.unscaled.comp.inc */, + B3EBADBD2872978A00EAEB37 /* feedback.msaa.unscaled.frag.inc */, + B3EBADBE2872978A00EAEB37 /* bpp24.yuv.quad.frag.inc */, + B3EBADBF2872978A00EAEB37 /* blit_vram.msaa.cached.scaled.comp.inc */, + B3EBADC02872978A00EAEB37 /* mipmap.vert.inc */, + B3EBADC12872978A00EAEB37 /* flat.frag.inc */, + B3EBADC22872978A00EAEB37 /* mipmap.energy.frag.inc */, + B3EBADC32872978A00EAEB37 /* blit_vram.cached.scaled.comp.inc */, + B3EBADC42872978A00EAEB37 /* resolve.msaa.scaled.comp.inc */, + B3EBADC52872978A00EAEB37 /* mipmap.energy.first.frag.inc */, + B3EBADC62872978A00EAEB37 /* textured.frag.inc */, + B3EBADC72872978A00EAEB37 /* blit_vram.cached.masked.scaled.comp.inc */, + B3EBADC82872978A00EAEB37 /* blit_vram.cached.unscaled.comp.inc */, + B3EBADC92872978A00EAEB37 /* textured.msaa.frag.inc */, + B3EBADCA2872978A00EAEB37 /* scaled.dither.quad.frag.inc */, + B3EBADCB2872978A00EAEB37 /* mipmap.energy.blur.frag.inc */, + B3EBADCC2872978A00EAEB37 /* blit_vram.msaa.cached.masked.scaled.comp.inc */, + B3EBADCD2872978A00EAEB37 /* mipmap.resolve.frag.inc */, + B3EBADCE2872978A00EAEB37 /* unscaled.quad.frag.inc */, + B3EBADCF2872978A00EAEB37 /* resolve.unscaled.comp.inc */, + B3EBADD02872978A00EAEB37 /* textured.unscaled.frag.inc */, + B3EBADD12872978A00EAEB37 /* unscaled.dither.quad.frag.inc */, + B3EBADD22872978A00EAEB37 /* blit_vram.scaled.comp.inc */, + B3EBADD32872978A00EAEB37 /* mipmap.dither.resolve.frag.inc */, + B3EBADD42872978A00EAEB37 /* blit_vram.masked.unscaled.comp.inc */, + B3EBADD52872978A00EAEB37 /* blit_vram.msaa.scaled.comp.inc */, + B3EBADD62872978A00EAEB37 /* feedback.frag.inc */, + B3EBADD72872978A00EAEB37 /* feedback.unscaled.frag.inc */, + B3EBADD82872978A00EAEB37 /* blit_vram.masked.scaled.comp.inc */, + B3EBADD92872978A00EAEB37 /* resolve.scaled.comp.inc */, + B3EBADDA2872978A00EAEB37 /* resolve.msaa.unscaled.comp.inc */, + B3EBADDB2872978A00EAEB37 /* textured.unscaled.vert.inc */, + B3EBADDC2872978A00EAEB37 /* blit_vram.msaa.masked.scaled.comp.inc */, + B3EBADDD2872978A00EAEB37 /* feedback.flat.frag.inc */, + B3EBADDE2872978A00EAEB37 /* copy_vram.masked.comp.inc */, + B3EBADDF2872978A00EAEB37 /* mipmap.shifted.vert.inc */, + B3EBADE02872978A00EAEB37 /* textured.vert.inc */, + B3EBADE12872978A00EAEB37 /* flat.vert.inc */, + B3EBADE22872978A00EAEB37 /* scaled.quad.frag.inc */, + B3EBADE32872978A00EAEB37 /* textured.msaa.unscaled.frag.inc */, + B3EBADE42872978A00EAEB37 /* feedback.msaa.frag.inc */, + B3EBADE52872978A00EAEB37 /* bpp24.quad.frag.inc */, + B3EBADE62872978A00EAEB37 /* feedback.msaa.flat.frag.inc */, + B3EBADE72872978A00EAEB37 /* quad.vert.inc */, + ); + path = prebuilt; + sourceTree = ""; + }; + B3EBADF52872978A00EAEB37 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3EBADF62872978A00EAEB37 /* render_pass.cpp */, + B3EBADF72872978A00EAEB37 /* buffer_pool.cpp */, + B3EBADF82872978A00EAEB37 /* query_pool.hpp */, + B3EBADF92872978A00EAEB37 /* fence.hpp */, + B3EBADFA2872978A00EAEB37 /* semaphore.hpp */, + B3EBADFB2872978A00EAEB37 /* vulkan.hpp */, + B3EBADFC2872978A00EAEB37 /* event_manager.cpp */, + B3EBADFD2872978A00EAEB37 /* image.cpp */, + B3EBADFE2872978A00EAEB37 /* texture_format.hpp */, + B3EBADFF2872978A00EAEB37 /* wsi_timing.cpp */, + B3EBAE002872978A00EAEB37 /* quirks.hpp */, + B3EBAE012872978A00EAEB37 /* memory_allocator.cpp */, + B3EBAE022872978A00EAEB37 /* vulkan_common.hpp */, + B3EBAE032872978A00EAEB37 /* wsi.cpp */, + B3EBAE042872978A00EAEB37 /* command_pool.cpp */, + B3EBAE052872978A00EAEB37 /* cookie.hpp */, + B3EBAE062872978A00EAEB37 /* managers */, + B3EBAE0B2872978A00EAEB37 /* pipeline_event.cpp */, + B3EBAE0C2872978A00EAEB37 /* descriptor_set.cpp */, + B3EBAE0D2872978A00EAEB37 /* device.cpp */, + B3EBAE0E2872978A00EAEB37 /* sampler.cpp */, + B3EBAE0F2872978A00EAEB37 /* command_buffer.cpp */, + B3EBAE102872978A00EAEB37 /* semaphore_manager.cpp */, + B3EBAE112872978A00EAEB37 /* fence_manager.cpp */, + B3EBAE122872978A00EAEB37 /* shader.cpp */, + B3EBAE132872978A00EAEB37 /* buffer.cpp */, + B3EBAE142872978A00EAEB37 /* limits.hpp */, + B3EBAE152872978A00EAEB37 /* command_pool.hpp */, + B3EBAE162872978A00EAEB37 /* wsi.hpp */, + B3EBAE172872978A00EAEB37 /* cookie.cpp */, + B3EBAE182872978A00EAEB37 /* pipeline_event.hpp */, + B3EBAE192872978A00EAEB37 /* descriptor_set.hpp */, + B3EBAE1A2872978A00EAEB37 /* device.hpp */, + B3EBAE1B2872978A00EAEB37 /* semaphore_manager.hpp */, + B3EBAE1C2872978A00EAEB37 /* command_buffer.hpp */, + B3EBAE1D2872978A00EAEB37 /* sampler.hpp */, + B3EBAE1E2872978A00EAEB37 /* fence_manager.hpp */, + B3EBAE1F2872978A00EAEB37 /* buffer.hpp */, + B3EBAE202872978A00EAEB37 /* shader.hpp */, + B3EBAE212872978A00EAEB37 /* render_pass.hpp */, + B3EBAE222872978A00EAEB37 /* type_to_string.hpp */, + B3EBAE232872978A00EAEB37 /* buffer_pool.hpp */, + B3EBAE242872978A00EAEB37 /* query_pool.cpp */, + B3EBAE252872978A00EAEB37 /* fence.cpp */, + B3EBAE262872978A00EAEB37 /* semaphore.cpp */, + B3EBAE272872978A00EAEB37 /* vulkan.cpp */, + B3EBAE282872978A00EAEB37 /* event_manager.hpp */, + B3EBAE292872978A00EAEB37 /* image.hpp */, + B3EBAE2A2872978A00EAEB37 /* format.hpp */, + B3EBAE2B2872978A00EAEB37 /* texture_format.cpp */, + B3EBAE2C2872978A00EAEB37 /* wsi_timing.hpp */, + B3EBAE2D2872978A00EAEB37 /* memory_allocator.hpp */, + ); + path = vulkan; + sourceTree = ""; + }; + B3EBAE062872978A00EAEB37 /* managers */ = { + isa = PBXGroup; + children = ( + B3EBAE072872978A00EAEB37 /* texture_manager.cpp */, + B3EBAE082872978A00EAEB37 /* shader_manager.hpp */, + B3EBAE092872978A00EAEB37 /* shader_manager.cpp */, + B3EBAE0A2872978A00EAEB37 /* texture_manager.hpp */, + ); + path = managers; + sourceTree = ""; + }; + B3EBAE2F2872978A00EAEB37 /* khronos */ = { + isa = PBXGroup; + children = ( + B3EBAE302872978A00EAEB37 /* include */, + ); + path = khronos; + sourceTree = ""; + }; + B3EBAE302872978A00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBAE312872978A00EAEB37 /* vulkan */, + ); + path = include; + sourceTree = ""; + }; + B3EBAE312872978A00EAEB37 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3EBAE322872978A00EAEB37 /* vk_layer.h */, + B3EBAE332872978A00EAEB37 /* vk_icd.h */, + B3EBAE342872978A00EAEB37 /* vulkan_vi.h */, + B3EBAE352872978A00EAEB37 /* vulkan.h */, + B3EBAE362872978A00EAEB37 /* vk_platform.h */, + B3EBAE372872978A00EAEB37 /* vulkan_fuchsia.h */, + B3EBAE382872978A00EAEB37 /* vk_platform_old.h */, + B3EBAE392872978A00EAEB37 /* vulkan_wayland.h */, + B3EBAE3A2872978A00EAEB37 /* vulkan_win32.h */, + B3EBAE3B2872978A00EAEB37 /* vulkan_macos.h */, + B3EBAE3C2872978A00EAEB37 /* vulkan_xlib_xrandr.h */, + B3EBAE3D2872978A00EAEB37 /* vulkan_xcb.h */, + B3EBAE3E2872978A00EAEB37 /* vulkan_mir.h */, + B3EBAE3F2872978A00EAEB37 /* vulkan_old.h */, + B3EBAE402872978A00EAEB37 /* vulkan_xlib.h */, + B3EBAE412872978A00EAEB37 /* vulkan_intel.h */, + B3EBAE422872978A00EAEB37 /* vulkan_ios.h */, + B3EBAE432872978A00EAEB37 /* vulkan_core.h */, + B3EBAE442872978A00EAEB37 /* vk_sdk_platform.h */, + B3EBAE452872978A00EAEB37 /* vulkan_android.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B3EBAE462872978A00EAEB37 /* atlas */ = { + isa = PBXGroup; + children = ( + B3EBAE472872978A00EAEB37 /* atlas.cpp */, + B3EBAE482872978A00EAEB37 /* atlas.hpp */, + ); + path = atlas; + sourceTree = ""; + }; + B3EBAE582872978A00EAEB37 /* .github */ = { + isa = PBXGroup; + children = ( + B3EBAE592872978A00EAEB37 /* workflows */, + B3EBAE5C2872978A00EAEB37 /* ISSUE_TEMPLATE.md */, + ); + path = .github; + sourceTree = ""; + }; + B3EBAE592872978A00EAEB37 /* workflows */ = { + isa = PBXGroup; + children = ( + B3EBAE5A2872978A00EAEB37 /* crowdin_prep.yml */, + B3EBAE5B2872978A00EAEB37 /* crowdin_translate.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B3EBAE5D2872978A00EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBAE632872978A00EAEB37 /* cdrom */, + B3EBAE652872978A00EAEB37 /* compat */, + B3EBAE5E2872978A00EAEB37 /* encodings */, + B3EBAE762872978A00EAEB37 /* file */, + B3EBAEC42872978A00EAEB37 /* glsm */, + B3EBAE6B2872978A00EAEB37 /* glsym */, + B3EBAE792872978A00EAEB37 /* hash */, + B3EBAE7E2872978A00EAEB37 /* include */, + B3EBAE732872978A00EAEB37 /* lists */, + B3EBAEC02872978A00EAEB37 /* memmap */, + B3EBAEC62872978B00EAEB37 /* rthreads */, + B3EBAE7B2872978A00EAEB37 /* streams */, + B3EBAECD2872978B00EAEB37 /* string */, + B3EBAEC22872978A00EAEB37 /* time */, + B3EBAE602872978A00EAEB37 /* vfs */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBAE5E2872978A00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBAE5F2872978A00EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBAE602872978A00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBAE612872978A00EAEB37 /* vfs_implementation.c */, + B3EBAE622872978A00EAEB37 /* vfs_implementation_cdrom.c */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBAE632872978A00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBAE642872978A00EAEB37 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBAE652872978A00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBAE662872978A00EAEB37 /* compat_strl.c */, + B3EBAE672872978A00EAEB37 /* compat_posix_string.c */, + B3EBAE682872978A00EAEB37 /* compat_strcasestr.c */, + B3EBAE692872978A00EAEB37 /* compat_snprintf.c */, + B3EBAE6A2872978A00EAEB37 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EBAE6B2872978A00EAEB37 /* glsym */ = { + isa = PBXGroup; + children = ( + B3EBAE6C2872978A00EAEB37 /* glsym_es3.c */, + B3EBAE6D2872978A00EAEB37 /* glsym_gl.c */, + B3EBAE6E2872978A00EAEB37 /* README.md */, + B3EBAE6F2872978A00EAEB37 /* glsym_es2.c */, + B3EBAE702872978A00EAEB37 /* rglgen.c */, + B3EBAE712872978A00EAEB37 /* glgen.py */, + B3EBAE722872978A00EAEB37 /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B3EBAE732872978A00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBAE742872978A00EAEB37 /* dir_list.c */, + B3EBAE752872978A00EAEB37 /* string_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3EBAE762872978A00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBAE772872978A00EAEB37 /* file_path.c */, + B3EBAE782872978A00EAEB37 /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B3EBAE792872978A00EAEB37 /* hash */ = { + isa = PBXGroup; + children = ( + B3EBAE7A2872978A00EAEB37 /* rhash.c */, + ); + path = hash; + sourceTree = ""; + }; + B3EBAE7B2872978A00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBAE7C2872978A00EAEB37 /* file_stream_transforms.c */, + B3EBAE7D2872978A00EAEB37 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EBAE7E2872978A00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBAE7F2872978A00EAEB37 /* encodings */, + B3EBAE812872978A00EAEB37 /* memalign.h */, + B3EBAE822872978A00EAEB37 /* vfs */, + B3EBAE862872978A00EAEB37 /* cdrom */, + B3EBAE882872978A00EAEB37 /* compat */, + B3EBAE952872978A00EAEB37 /* retro_common_api.h */, + B3EBAE962872978A00EAEB37 /* retro_timers.h */, + B3EBAE972872978A00EAEB37 /* glsym */, + B3EBAE9F2872978A00EAEB37 /* lists */, + B3EBAEA22872978A00EAEB37 /* file */, + B3EBAEA42872978A00EAEB37 /* retro_environment.h */, + B3EBAEA52872978A00EAEB37 /* retro_dirent.h */, + B3EBAEA62872978A00EAEB37 /* retro_inline.h */, + B3EBAEA72872978A00EAEB37 /* retro_math.h */, + B3EBAEA82872978A00EAEB37 /* streams */, + B3EBAEAB2872978A00EAEB37 /* retro_miscellaneous.h */, + B3EBAEAC2872978A00EAEB37 /* math */, + B3EBAEAE2872978A00EAEB37 /* time */, + B3EBAEB02872978A00EAEB37 /* boolean.h */, + B3EBAEB12872978A00EAEB37 /* glsm */, + B3EBAEB42872978A00EAEB37 /* memmap.h */, + B3EBAEB52872978A00EAEB37 /* rhash.h */, + B3EBAEB62872978A00EAEB37 /* rthreads */, + B3EBAEB92872978A00EAEB37 /* libretro.h */, + B3EBAEBA2872978A00EAEB37 /* retro_common.h */, + B3EBAEBB2872978A00EAEB37 /* retro_assert.h */, + B3EBAEBC2872978A00EAEB37 /* string */, + B3EBAEBE2872978A00EAEB37 /* libretro_vulkan.h */, + B3EBAEBF2872978A00EAEB37 /* retro_endianness.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBAE7F2872978A00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBAE802872978A00EAEB37 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBAE822872978A00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBAE832872978A00EAEB37 /* vfs.h */, + B3EBAE842872978A00EAEB37 /* vfs_implementation.h */, + B3EBAE852872978A00EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBAE862872978A00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBAE872872978A00EAEB37 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBAE882872978A00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBAE892872978A00EAEB37 /* apple_compat.h */, + B3EBAE8A2872978A00EAEB37 /* strl.h */, + B3EBAE8B2872978A00EAEB37 /* strcasestr.h */, + B3EBAE8C2872978A00EAEB37 /* msvc */, + B3EBAE8E2872978A00EAEB37 /* fopen_utf8.h */, + B3EBAE8F2872978A00EAEB37 /* intrinsics.h */, + B3EBAE902872978A00EAEB37 /* posix_string.h */, + B3EBAE912872978A00EAEB37 /* getopt.h */, + B3EBAE922872978A00EAEB37 /* fnmatch.h */, + B3EBAE932872978A00EAEB37 /* msvc.h */, + B3EBAE942872978A00EAEB37 /* ifaddrs.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBAE8C2872978A00EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBAE8D2872978A00EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBAE972872978A00EAEB37 /* glsym */ = { + isa = PBXGroup; + children = ( + B3EBAE982872978A00EAEB37 /* rglgen.h */, + B3EBAE992872978A00EAEB37 /* glsym_es2.h */, + B3EBAE9A2872978A00EAEB37 /* glsym.h */, + B3EBAE9B2872978A00EAEB37 /* rglgen_headers.h */, + B3EBAE9C2872978A00EAEB37 /* rglgen_private_headers.h */, + B3EBAE9D2872978A00EAEB37 /* glsym_es3.h */, + B3EBAE9E2872978A00EAEB37 /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B3EBAE9F2872978A00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBAEA02872978A00EAEB37 /* string_list.h */, + B3EBAEA12872978A00EAEB37 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3EBAEA22872978A00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBAEA32872978A00EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBAEA82872978A00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBAEA92872978A00EAEB37 /* file_stream.h */, + B3EBAEAA2872978A00EAEB37 /* file_stream_transforms.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBAEAC2872978A00EAEB37 /* math */ = { + isa = PBXGroup; + children = ( + B3EBAEAD2872978A00EAEB37 /* float_minmax.h */, + ); + path = math; + sourceTree = ""; + }; + B3EBAEAE2872978A00EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EBAEAF2872978A00EAEB37 /* rtime.h */, + ); + path = time; + sourceTree = ""; + }; + B3EBAEB12872978A00EAEB37 /* glsm */ = { + isa = PBXGroup; + children = ( + B3EBAEB22872978A00EAEB37 /* glsm.h */, + B3EBAEB32872978A00EAEB37 /* glsmsym.h */, + ); + path = glsm; + sourceTree = ""; + }; + B3EBAEB62872978A00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBAEB72872978A00EAEB37 /* rsemaphore.h */, + B3EBAEB82872978A00EAEB37 /* rthreads.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBAEBC2872978A00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBAEBD2872978A00EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBAEC02872978A00EAEB37 /* memmap */ = { + isa = PBXGroup; + children = ( + B3EBAEC12872978A00EAEB37 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3EBAEC22872978A00EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EBAEC32872978A00EAEB37 /* rtime.c */, + ); + path = time; + sourceTree = ""; + }; + B3EBAEC42872978A00EAEB37 /* glsm */ = { + isa = PBXGroup; + children = ( + B3EBAEC52872978B00EAEB37 /* glsm.c */, + ); + path = glsm; + sourceTree = ""; + }; + B3EBAEC62872978B00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBAECC2872978B00EAEB37 /* rsemaphore.c */, + B3EBAEC82872978B00EAEB37 /* rthreads.c */, + B3EBAECB2872978B00EAEB37 /* xenon_sdl_threads.c */, + B3EBAEC92872978B00EAEB37 /* gx_pthread.h */, + B3EBAECA2872978B00EAEB37 /* psp_pthread.h */, + B3EBAEC72872978B00EAEB37 /* wiiu_pthread.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBAECD2872978B00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBAECE2872978B00EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EBAECF2872978B00EAEB37 /* deps */ = { + isa = PBXGroup; + children = ( + B3EBAFC52872978B00EAEB37 /* libchdr */, + B3EBB04D2872978C00EAEB37 /* libkirk */, + B3EBAED62872978B00EAEB37 /* lightning */, + B3EBB02F2872978C00EAEB37 /* lightrec */, + B3EBB00D2872978C00EAEB37 /* lzma-19.00 */, + B3EBAFE22872978B00EAEB37 /* mman */, + B3EBAED02872978B00EAEB37 /* ugui */, + B3EBAFDB2872978B00EAEB37 /* wiiu */, + B3EBAFF72872978C00EAEB37 /* zlib-1.2.11 */, + ); + path = deps; + sourceTree = ""; + }; + B3EBAED02872978B00EAEB37 /* ugui */ = { + isa = PBXGroup; + children = ( + B3EBAED12872978B00EAEB37 /* LICENSE.md */, + B3EBAED22872978B00EAEB37 /* ugui.h */, + B3EBAED32872978B00EAEB37 /* README.md */, + B3EBAED42872978B00EAEB37 /* ugui.c */, + B3EBAED52872978B00EAEB37 /* ugui_config.h */, + ); + path = ugui; + sourceTree = ""; + }; + B3EBAED62872978B00EAEB37 /* lightning */ = { + isa = PBXGroup; + children = ( + B3EBAEF82872978B00EAEB37 /* .gitattributes */, + B3EBAEF62872978B00EAEB37 /* .gitignore */, + B3EBAEEC2872978B00EAEB37 /* .gitmodules */, + B3EBAF352872978B00EAEB37 /* .gitrepo */, + B3EBAEDA2872978B00EAEB37 /* AUTHORS */, + B3EBAED82872978B00EAEB37 /* bootstrap */, + B3EBAED92872978B00EAEB37 /* ChangeLog */, + B3EBAEF42872978B00EAEB37 /* COPYING */, + B3EBAEF52872978B00EAEB37 /* NEWS */, + B3EBAEEE2872978B00EAEB37 /* README */, + B3EBAF432872978B00EAEB37 /* README-hacking */, + B3EBAF422872978B00EAEB37 /* THANKS */, + B3EBAEEF2872978B00EAEB37 /* TODO */, + B3EBAED72872978B00EAEB37 /* configure.ac */, + B3EBAEF22872978B00EAEB37 /* Makefile.am */, + B3EBAEF72872978B00EAEB37 /* size.c */, + B3EBAEF12872978B00EAEB37 /* bootstrap.conf */, + B3EBAEF02872978B00EAEB37 /* COPYING.DOC */, + B3EBAEF32872978B00EAEB37 /* lightning.pc.in */, + B3EBAEED2872978B00EAEB37 /* COPYING.LESSER */, + B3EBAF442872978B00EAEB37 /* check */, + B3EBAF362872978B00EAEB37 /* doc */, + B3EBAFC32872978B00EAEB37 /* gnulib-lib */, + B3EBAEDB2872978B00EAEB37 /* include */, + B3EBAEF92872978B00EAEB37 /* lib */, + B3EBAF312872978B00EAEB37 /* m4 */, + ); + path = lightning; + sourceTree = ""; + }; + B3EBAEDB2872978B00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBAEDC2872978B00EAEB37 /* lightning */, + B3EBAEEA2872978B00EAEB37 /* Makefile.am */, + B3EBAEEB2872978B00EAEB37 /* lightning.h.in */, + ); + path = include; + sourceTree = ""; + }; + B3EBAEDC2872978B00EAEB37 /* lightning */ = { + isa = PBXGroup; + children = ( + B3EBAEDD2872978B00EAEB37 /* jit_aarch64.h */, + B3EBAEDE2872978B00EAEB37 /* jit_arm.h */, + B3EBAEDF2872978B00EAEB37 /* jit_riscv.h */, + B3EBAEE02872978B00EAEB37 /* jit_s390.h */, + B3EBAEE12872978B00EAEB37 /* jit_x86.h */, + B3EBAEE22872978B00EAEB37 /* Makefile.am */, + B3EBAEE32872978B00EAEB37 /* jit_alpha.h */, + B3EBAEE42872978B00EAEB37 /* jit_ppc.h */, + B3EBAEE52872978B00EAEB37 /* jit_hppa.h */, + B3EBAEE62872978B00EAEB37 /* jit_private.h */, + B3EBAEE72872978B00EAEB37 /* jit_mips.h */, + B3EBAEE82872978B00EAEB37 /* jit_ia64.h */, + B3EBAEE92872978B00EAEB37 /* jit_sparc.h */, + ); + path = lightning; + sourceTree = ""; + }; + B3EBAEF92872978B00EAEB37 /* lib */ = { + isa = PBXGroup; + children = ( + B3EBAF182872978B00EAEB37 /* Makefile.am */, + B3EBAF1A2872978B00EAEB37 /* jit_aarch64-cpu.c */, + B3EBAF212872978B00EAEB37 /* jit_aarch64-fpu.c */, + B3EBAF172872978B00EAEB37 /* jit_aarch64-sz.c */, + B3EBAF1D2872978B00EAEB37 /* jit_aarch64.c */, + B3EBAEFD2872978B00EAEB37 /* jit_alpha-cpu.c */, + B3EBAEFB2872978B00EAEB37 /* jit_alpha-fpu.c */, + B3EBAF022872978B00EAEB37 /* jit_alpha-sz.c */, + B3EBAF012872978B00EAEB37 /* jit_alpha.c */, + B3EBAF132872978B00EAEB37 /* jit_arm-cpu.c */, + B3EBAF052872978B00EAEB37 /* jit_arm-swf.c */, + B3EBAF282872978B00EAEB37 /* jit_arm-sz.c */, + B3EBAF2A2872978B00EAEB37 /* jit_arm-vfp.c */, + B3EBAF292872978B00EAEB37 /* jit_arm.c */, + B3EBAF0A2872978B00EAEB37 /* jit_disasm.c */, + B3EBAF142872978B00EAEB37 /* jit_hppa-cpu.c */, + B3EBAF042872978B00EAEB37 /* jit_hppa-fpu.c */, + B3EBAF0E2872978B00EAEB37 /* jit_hppa-sz.c */, + B3EBAF002872978B00EAEB37 /* jit_hppa.c */, + B3EBAF162872978B00EAEB37 /* jit_ia64-cpu.c */, + B3EBAF062872978B00EAEB37 /* jit_ia64-fpu.c */, + B3EBAF122872978B00EAEB37 /* jit_ia64-sz.c */, + B3EBAF0F2872978B00EAEB37 /* jit_ia64.c */, + B3EBAF032872978B00EAEB37 /* jit_memory.c */, + B3EBAF262872978B00EAEB37 /* jit_mips-cpu.c */, + B3EBAF2C2872978B00EAEB37 /* jit_mips-fpu.c */, + B3EBAF102872978B00EAEB37 /* jit_mips-sz.c */, + B3EBAF082872978B00EAEB37 /* jit_mips.c */, + B3EBAF2D2872978B00EAEB37 /* jit_names.c */, + B3EBAF1C2872978B00EAEB37 /* jit_note.c */, + B3EBAF0D2872978B00EAEB37 /* jit_ppc-cpu.c */, + B3EBAF092872978B00EAEB37 /* jit_ppc-fpu.c */, + B3EBAF2E2872978B00EAEB37 /* jit_ppc-sz.c */, + B3EBAEFF2872978B00EAEB37 /* jit_ppc.c */, + B3EBAF242872978B00EAEB37 /* jit_print.c */, + B3EBAF1F2872978B00EAEB37 /* jit_rewind.c */, + B3EBAF202872978B00EAEB37 /* jit_riscv-cpu.c */, + B3EBAF192872978B00EAEB37 /* jit_riscv-fpu.c */, + B3EBAEFA2872978B00EAEB37 /* jit_riscv-sz.c */, + B3EBAF252872978B00EAEB37 /* jit_riscv.c */, + B3EBAF112872978B00EAEB37 /* jit_s390-cpu.c */, + B3EBAF0B2872978B00EAEB37 /* jit_s390-fpu.c */, + B3EBAF2B2872978B00EAEB37 /* jit_s390-sz.c */, + B3EBAF232872978B00EAEB37 /* jit_s390.c */, + B3EBAF072872978B00EAEB37 /* jit_size.c */, + B3EBAEFE2872978B00EAEB37 /* jit_sparc-cpu.c */, + B3EBAEFC2872978B00EAEB37 /* jit_sparc-fpu.c */, + B3EBAF152872978B00EAEB37 /* jit_sparc-sz.c */, + B3EBAF0C2872978B00EAEB37 /* jit_sparc.c */, + B3EBAF222872978B00EAEB37 /* jit_x86-cpu.c */, + B3EBAF272872978B00EAEB37 /* jit_x86-sse.c */, + B3EBAF1B2872978B00EAEB37 /* jit_x86-sz.c */, + B3EBAF1E2872978B00EAEB37 /* jit_x86-x87.c */, + B3EBAF2F2872978B00EAEB37 /* jit_x86.c */, + B3EBAF302872978B00EAEB37 /* lightning.c */, + ); + path = lib; + sourceTree = ""; + }; + B3EBAF312872978B00EAEB37 /* m4 */ = { + isa = PBXGroup; + children = ( + B3EBAF322872978B00EAEB37 /* gnulib-cache.m4 */, + B3EBAF332872978B00EAEB37 /* .gitkeep */, + B3EBAF342872978B00EAEB37 /* .gitignore */, + ); + path = m4; + sourceTree = ""; + }; + B3EBAF362872978B00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBAF372872978B00EAEB37 /* fact.c */, + B3EBAF382872978B00EAEB37 /* printf.c */, + B3EBAF392872978B00EAEB37 /* rfib.c */, + B3EBAF3A2872978B00EAEB37 /* rpn.c */, + B3EBAF3B2872978B00EAEB37 /* Makefile.am */, + B3EBAF3C2872978B00EAEB37 /* incr.c */, + B3EBAF3D2872978B00EAEB37 /* .gitignore */, + B3EBAF3E2872978B00EAEB37 /* ifib.c */, + B3EBAF3F2872978B00EAEB37 /* lightning.texi */, + B3EBAF402872978B00EAEB37 /* .cvsignore */, + B3EBAF412872978B00EAEB37 /* body.texi */, + ); + path = doc; + sourceTree = ""; + }; + B3EBAF442872978B00EAEB37 /* check */ = { + isa = PBXGroup; + children = ( + B3EBAF452872978B00EAEB37 /* check.arm.sh */, + B3EBAF462872978B00EAEB37 /* range.ok */, + B3EBAF472872978B00EAEB37 /* ldsti.ok */, + B3EBAF482872978B00EAEB37 /* call.tst */, + B3EBAF492872978B00EAEB37 /* alu_rsh.ok */, + B3EBAF4A2872978B00EAEB37 /* carry.tst */, + B3EBAF4B2872978B00EAEB37 /* cvt.ok */, + B3EBAF4C2872978B00EAEB37 /* stack.tst */, + B3EBAF4D2872978B00EAEB37 /* jmpr.ok */, + B3EBAF4E2872978B00EAEB37 /* alu_and.ok */, + B3EBAF4F2872978B00EAEB37 /* float.ok */, + B3EBAF502872978B00EAEB37 /* varargs.ok */, + B3EBAF512872978B00EAEB37 /* alu_neg.tst */, + B3EBAF522872978B00EAEB37 /* tramp.ok */, + B3EBAF532872978B00EAEB37 /* alu_lsh.tst */, + B3EBAF542872978B00EAEB37 /* ldstxr-c.ok */, + B3EBAF552872978B00EAEB37 /* fib.ok */, + B3EBAF562872978B00EAEB37 /* ldstxr-c.tst */, + B3EBAF572872978B00EAEB37 /* bp.ok */, + B3EBAF582872978B00EAEB37 /* check.swf.sh */, + B3EBAF592872978B00EAEB37 /* alu_com.tst */, + B3EBAF5A2872978B00EAEB37 /* alu_mul.tst */, + B3EBAF5B2872978B00EAEB37 /* ldstxi-c.tst */, + B3EBAF5C2872978B00EAEB37 /* branch.tst */, + B3EBAF5D2872978B00EAEB37 /* check.nodata.sh */, + B3EBAF5E2872978B00EAEB37 /* ldstr-c.ok */, + B3EBAF5F2872978B00EAEB37 /* alux_add.ok */, + B3EBAF602872978B00EAEB37 /* branch.ok */, + B3EBAF612872978B00EAEB37 /* allocai.tst */, + B3EBAF622872978B00EAEB37 /* ldstxi.ok */, + B3EBAF632872978B00EAEB37 /* alu_rem.ok */, + B3EBAF642872978B00EAEB37 /* fop_abs.ok */, + B3EBAF652872978B00EAEB37 /* ccall.c */, + B3EBAF662872978B00EAEB37 /* bp.tst */, + B3EBAF672872978B00EAEB37 /* alu_sub.ok */, + B3EBAF682872978B00EAEB37 /* carry.ok */, + B3EBAF692872978B00EAEB37 /* live.tst */, + B3EBAF6A2872978B00EAEB37 /* clobber.tst */, + B3EBAF6B2872978B00EAEB37 /* check.arm.swf.sh */, + B3EBAF6C2872978B00EAEB37 /* alu_xor.ok */, + B3EBAF6D2872978B00EAEB37 /* alu_rsb.ok */, + B3EBAF6E2872978B00EAEB37 /* run-test */, + B3EBAF6F2872978B00EAEB37 /* va_list.tst */, + B3EBAF702872978B00EAEB37 /* put.ok */, + B3EBAF712872978B00EAEB37 /* alux_sub.tst */, + B3EBAF722872978B00EAEB37 /* fop_sqrt.tst */, + B3EBAF732872978B00EAEB37 /* setcode.c */, + B3EBAF742872978B00EAEB37 /* ret.tst */, + B3EBAF752872978B00EAEB37 /* alu_lsh.ok */, + B3EBAF762872978B00EAEB37 /* qalu.inc */, + B3EBAF772872978B00EAEB37 /* va_list.ok */, + B3EBAF782872978B00EAEB37 /* allocar.ok */, + B3EBAF792872978B00EAEB37 /* ldstxi.tst */, + B3EBAF7A2872978B00EAEB37 /* alu_mul.ok */, + B3EBAF7B2872978B00EAEB37 /* qalu_div.tst */, + B3EBAF7C2872978B00EAEB37 /* align.ok */, + B3EBAF7D2872978B00EAEB37 /* alu_rsh.tst */, + B3EBAF7E2872978B00EAEB37 /* add.ok */, + B3EBAF7F2872978B00EAEB37 /* fop_sqrt.ok */, + B3EBAF802872978B00EAEB37 /* ldsti.tst */, + B3EBAF812872978B00EAEB37 /* rpn.ok */, + B3EBAF822872978B00EAEB37 /* qalu_mul.ok */, + B3EBAF832872978B00EAEB37 /* self.c */, + B3EBAF842872978B00EAEB37 /* range.tst */, + B3EBAF852872978B00EAEB37 /* jmpr.tst */, + B3EBAF862872978B00EAEB37 /* check.x87.sh */, + B3EBAF872872978B00EAEB37 /* alu_com.ok */, + B3EBAF882872978B00EAEB37 /* alux_add.tst */, + B3EBAF892872978B00EAEB37 /* Makefile.am */, + B3EBAF8A2872978B00EAEB37 /* allocai.ok */, + B3EBAF8B2872978B00EAEB37 /* alu_add.tst */, + B3EBAF8C2872978B00EAEB37 /* ldstr.tst */, + B3EBAF8D2872978B00EAEB37 /* call.ok */, + B3EBAF8E2872978B00EAEB37 /* 3to2.ok */, + B3EBAF8F2872978B00EAEB37 /* rpn.tst */, + B3EBAF902872978B00EAEB37 /* ldstxr.tst */, + B3EBAF912872978B00EAEB37 /* alu_rsb.tst */, + B3EBAF922872978B00EAEB37 /* alu_sub.tst */, + B3EBAF932872978B00EAEB37 /* cva_list.c */, + B3EBAF942872978B00EAEB37 /* divi.ok */, + B3EBAF952872978B00EAEB37 /* ldstr-c.tst */, + B3EBAF962872978B00EAEB37 /* alux_sub.ok */, + B3EBAF972872978B00EAEB37 /* ldst.inc */, + B3EBAF982872978B00EAEB37 /* add.tst */, + B3EBAF992872978B00EAEB37 /* check.sh */, + B3EBAF9A2872978B00EAEB37 /* ret.ok */, + B3EBAF9B2872978B00EAEB37 /* qalu_mul.tst */, + B3EBAF9C2872978B00EAEB37 /* check.x87.nodata.sh */, + B3EBAF9D2872978B00EAEB37 /* alu_rem.tst */, + B3EBAF9E2872978B00EAEB37 /* alu_or.tst */, + B3EBAF9F2872978B00EAEB37 /* alu_neg.ok */, + B3EBAFA02872978B00EAEB37 /* alu_and.tst */, + B3EBAFA12872978B00EAEB37 /* hton.tst */, + B3EBAFA22872978B00EAEB37 /* allocar.tst */, + B3EBAFA32872978B00EAEB37 /* hton.ok */, + B3EBAFA42872978B00EAEB37 /* qalu_div.ok */, + B3EBAFA52872978B00EAEB37 /* fib.tst */, + B3EBAFA62872978B00EAEB37 /* alu_add.ok */, + B3EBAFA72872978B00EAEB37 /* alu.inc */, + B3EBAFA82872978B00EAEB37 /* put.tst */, + B3EBAFA92872978B00EAEB37 /* alu_or.ok */, + B3EBAFAA2872978B00EAEB37 /* divi.tst */, + B3EBAFAB2872978B00EAEB37 /* ldstxr.ok */, + B3EBAFAC2872978B00EAEB37 /* ctramp.c */, + B3EBAFAD2872978B00EAEB37 /* alu_div.ok */, + B3EBAFAE2872978B00EAEB37 /* check.arm4.swf.sh */, + B3EBAFAF2872978B00EAEB37 /* clobber.ok */, + B3EBAFB02872978B00EAEB37 /* nodata.c */, + B3EBAFB12872978B00EAEB37 /* align.tst */, + B3EBAFB22872978B00EAEB37 /* cvt.tst */, + B3EBAFB32872978B00EAEB37 /* ranger.tst */, + B3EBAFB42872978B00EAEB37 /* ldstr.ok */, + B3EBAFB52872978B00EAEB37 /* carg.c */, + B3EBAFB62872978B00EAEB37 /* alu_xor.tst */, + B3EBAFB72872978B00EAEB37 /* live.ok */, + B3EBAFB82872978B00EAEB37 /* fop_abs.tst */, + B3EBAFB92872978B00EAEB37 /* float.tst */, + B3EBAFBA2872978B00EAEB37 /* tramp.tst */, + B3EBAFBB2872978B00EAEB37 /* varargs.tst */, + B3EBAFBC2872978B00EAEB37 /* ldstxi-c.ok */, + B3EBAFBD2872978B00EAEB37 /* all.tst */, + B3EBAFBE2872978B00EAEB37 /* alu_div.tst */, + B3EBAFBF2872978B00EAEB37 /* lightning.c */, + B3EBAFC02872978B00EAEB37 /* stack.ok */, + B3EBAFC12872978B00EAEB37 /* 3to2.tst */, + B3EBAFC22872978B00EAEB37 /* ranger.ok */, + ); + path = check; + sourceTree = ""; + }; + B3EBAFC32872978B00EAEB37 /* gnulib-lib */ = { + isa = PBXGroup; + children = ( + B3EBAFC42872978B00EAEB37 /* .gitignore */, + ); + path = "gnulib-lib"; + sourceTree = ""; + }; + B3EBAFC52872978B00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBAFD22872978B00EAEB37 /* README.md */, + B3EBAFC62872978B00EAEB37 /* CMakeLists.txt */, + B3EBAFD32872978B00EAEB37 /* LICENSE.txt */, + B3EBAFC72872978B00EAEB37 /* include */, + B3EBAFD42872978B00EAEB37 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBAFC72872978B00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBAFC82872978B00EAEB37 /* libchdr */, + B3EBAFD02872978B00EAEB37 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3EBAFC82872978B00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBAFC92872978B00EAEB37 /* flac.h */, + B3EBAFCA2872978B00EAEB37 /* chdconfig.h */, + B3EBAFCB2872978B00EAEB37 /* bitstream.h */, + B3EBAFCC2872978B00EAEB37 /* cdrom.h */, + B3EBAFCD2872978B00EAEB37 /* chd.h */, + B3EBAFCE2872978B00EAEB37 /* huffman.h */, + B3EBAFCF2872978B00EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBAFD02872978B00EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBAFD12872978B00EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBAFD42872978B00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBAFD62872978B00EAEB37 /* libchdr_bitstream.c */, + B3EBAFDA2872978B00EAEB37 /* libchdr_cdrom.c */, + B3EBAFD52872978B00EAEB37 /* libchdr_chd.c */, + B3EBAFD82872978B00EAEB37 /* libchdr_flac.c */, + B3EBAFD72872978B00EAEB37 /* libchdr_huffman.c */, + B3EBAFD92872978B00EAEB37 /* link.T */, + ); + path = src; + sourceTree = ""; + }; + B3EBAFDB2872978B00EAEB37 /* wiiu */ = { + isa = PBXGroup; + children = ( + B3EBAFDC2872978B00EAEB37 /* types.h */, + B3EBAFDD2872978B00EAEB37 /* os */, + ); + path = wiiu; + sourceTree = ""; + }; + B3EBAFDD2872978B00EAEB37 /* os */ = { + isa = PBXGroup; + children = ( + B3EBAFDE2872978B00EAEB37 /* time.h */, + B3EBAFDF2872978B00EAEB37 /* condition.h */, + B3EBAFE02872978B00EAEB37 /* thread.h */, + B3EBAFE12872978B00EAEB37 /* mutex.h */, + ); + path = os; + sourceTree = ""; + }; + B3EBAFE22872978B00EAEB37 /* mman */ = { + isa = PBXGroup; + children = ( + B3EBAFE32872978B00EAEB37 /* sys */, + ); + path = mman; + sourceTree = ""; + }; + B3EBAFE32872978B00EAEB37 /* sys */ = { + isa = PBXGroup; + children = ( + B3EBAFE42872978B00EAEB37 /* CMakeLists.txt */, + B3EBAFE52872978B00EAEB37 /* configure */, + B3EBAFE62872978B00EAEB37 /* Makefile */, + B3EBAFE72872978B00EAEB37 /* mman.h */, + B3EBAFE82872978B00EAEB37 /* .vs */, + B3EBAFEC2872978C00EAEB37 /* README.md */, + B3EBAFED2872978C00EAEB37 /* mman.vcxproj */, + B3EBAFEE2872978C00EAEB37 /* .gitignore */, + B3EBAFEF2872978C00EAEB37 /* .gitrepo */, + B3EBAFF02872978C00EAEB37 /* test.c */, + B3EBAFF12872978C00EAEB37 /* mman.vcxproj.user */, + B3EBAFF22872978C00EAEB37 /* mman.vcxproj.filters */, + B3EBAFF32872978C00EAEB37 /* mman.sln */, + B3EBAFF42872978C00EAEB37 /* mman-win32.pro */, + B3EBAFF52872978C00EAEB37 /* UpgradeLog.htm */, + B3EBAFF62872978C00EAEB37 /* mman.c */, + ); + path = sys; + sourceTree = ""; + }; + B3EBAFE82872978B00EAEB37 /* .vs */ = { + isa = PBXGroup; + children = ( + B3EBAFE92872978C00EAEB37 /* mman */, + ); + path = .vs; + sourceTree = ""; + }; + B3EBAFE92872978C00EAEB37 /* mman */ = { + isa = PBXGroup; + children = ( + B3EBAFEA2872978C00EAEB37 /* v14 */, + ); + path = mman; + sourceTree = ""; + }; + B3EBAFEA2872978C00EAEB37 /* v14 */ = { + isa = PBXGroup; + children = ( + B3EBAFEB2872978C00EAEB37 /* .suo */, + ); + path = v14; + sourceTree = ""; + }; + B3EBAFF72872978C00EAEB37 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3EBAFFD2872978C00EAEB37 /* README */, + B3EBB00B2872978C00EAEB37 /* adler32.c */, + B3EBAFFC2872978C00EAEB37 /* crc32.c */, + B3EBB00A2872978C00EAEB37 /* inffast.c */, + B3EBAFFA2872978C00EAEB37 /* inflate.c */, + B3EBB0022872978C00EAEB37 /* inftrees.c */, + B3EBAFFE2872978C00EAEB37 /* zutil.c */, + B3EBB0092872978C00EAEB37 /* crc32.h */, + B3EBAFFF2872978C00EAEB37 /* gzguts.h */, + B3EBAFFB2872978C00EAEB37 /* inffast.h */, + B3EBB0012872978C00EAEB37 /* inflate.h */, + B3EBAFF92872978C00EAEB37 /* inftrees.h */, + B3EBB00C2872978C00EAEB37 /* zconf.h */, + B3EBB0002872978C00EAEB37 /* zlib.h */, + B3EBAFF82872978C00EAEB37 /* zutil.h */, + B3EBB0032872978C00EAEB37 /* doc */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3EBB0032872978C00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBB0042872978C00EAEB37 /* rfc1952.txt */, + B3EBB0052872978C00EAEB37 /* rfc1950.txt */, + B3EBB0062872978C00EAEB37 /* algorithm.txt */, + B3EBB0072872978C00EAEB37 /* rfc1951.txt */, + B3EBB0082872978C00EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBB00D2872978C00EAEB37 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B3EBB0102872978C00EAEB37 /* LICENSE */, + B3EBB00E2872978C00EAEB37 /* lzma.vcxproj.filters */, + B3EBB00F2872978C00EAEB37 /* CMakeLists.txt */, + B3EBB0222872978C00EAEB37 /* lzma-history.txt */, + B3EBB0212872978C00EAEB37 /* lzma.txt */, + B3EBB0202872978C00EAEB37 /* lzma.vcxproj */, + B3EBB0112872978C00EAEB37 /* include */, + B3EBB0232872978C00EAEB37 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B3EBB0112872978C00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBB0122872978C00EAEB37 /* LzHash.h */, + B3EBB0132872978C00EAEB37 /* 7zTypes.h */, + B3EBB0142872978C00EAEB37 /* Compiler.h */, + B3EBB0152872978C00EAEB37 /* Precomp.h */, + B3EBB0162872978C00EAEB37 /* CpuArch.h */, + B3EBB0172872978C00EAEB37 /* Delta.h */, + B3EBB0182872978C00EAEB37 /* LzmaLib.h */, + B3EBB0192872978C00EAEB37 /* Lzma86.h */, + B3EBB01A2872978C00EAEB37 /* LzmaEnc.h */, + B3EBB01B2872978C00EAEB37 /* LzFind.h */, + B3EBB01C2872978C00EAEB37 /* Bra.h */, + B3EBB01D2872978C00EAEB37 /* Sort.h */, + B3EBB01E2872978C00EAEB37 /* LzmaDec.h */, + B3EBB01F2872978C00EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBB0232872978C00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBB0282872978C00EAEB37 /* Alloc.c */, + B3EBB0272872978C00EAEB37 /* Bra86.c */, + B3EBB02A2872978C00EAEB37 /* BraIA64.c */, + B3EBB02E2872978C00EAEB37 /* CpuArch.c */, + B3EBB02C2872978C00EAEB37 /* Delta.c */, + B3EBB0252872978C00EAEB37 /* LzFind.c */, + B3EBB02B2872978C00EAEB37 /* Lzma86Dec.c */, + B3EBB02D2872978C00EAEB37 /* Lzma86Enc.c */, + B3EBB0292872978C00EAEB37 /* LzmaDec.c */, + B3EBB0242872978C00EAEB37 /* LzmaEnc.c */, + B3EBB0262872978C00EAEB37 /* Sort.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBB02F2872978C00EAEB37 /* lightrec */ = { + isa = PBXGroup; + children = ( + B3EBB0422872978C00EAEB37 /* .gitignore */, + B3EBB0492872978C00EAEB37 /* .gitrepo */, + B3EBB03F2872978C00EAEB37 /* COPYING */, + B3EBB04C2872978C00EAEB37 /* blockcache.c */, + B3EBB0462872978C00EAEB37 /* disassembler.c */, + B3EBB0472872978C00EAEB37 /* emitter.c */, + B3EBB04A2872978C00EAEB37 /* interpreter.c */, + B3EBB04B2872978C00EAEB37 /* lightrec.c */, + B3EBB0452872978C00EAEB37 /* memmanager.c */, + B3EBB0322872978C00EAEB37 /* optimizer.c */, + B3EBB0432872978C00EAEB37 /* reaper.c */, + B3EBB0412872978C00EAEB37 /* recompiler.c */, + B3EBB0482872978C00EAEB37 /* regcache.c */, + B3EBB0392872978C00EAEB37 /* config.h.cmakein */, + B3EBB03B2872978C00EAEB37 /* blockcache.h */, + B3EBB0332872978C00EAEB37 /* debug.h */, + B3EBB0372872978C00EAEB37 /* disassembler.h */, + B3EBB0362872978C00EAEB37 /* emitter.h */, + B3EBB03A2872978C00EAEB37 /* interpreter.h */, + B3EBB0402872978C00EAEB37 /* lightrec-private.h */, + B3EBB03C2872978C00EAEB37 /* lightrec.h */, + B3EBB0382872978C00EAEB37 /* memmanager.h */, + B3EBB03E2872978C00EAEB37 /* optimizer.h */, + B3EBB0312872978C00EAEB37 /* reaper.h */, + B3EBB0302872978C00EAEB37 /* recompiler.h */, + B3EBB0342872978C00EAEB37 /* regcache.h */, + B3EBB0442872978C00EAEB37 /* slist.h */, + B3EBB03D2872978C00EAEB37 /* README.md */, + B3EBB0352872978C00EAEB37 /* CMakeLists.txt */, + ); + path = lightrec; + sourceTree = ""; + }; + B3EBB04D2872978C00EAEB37 /* libkirk */ = { + isa = PBXGroup; + children = ( + B3EBB04E2872978C00EAEB37 /* aes.c */, + B3EBB0582872978C00EAEB37 /* amctrl.c */, + B3EBB0542872978C00EAEB37 /* bn.c */, + B3EBB0512872978C00EAEB37 /* des.c */, + B3EBB04F2872978C00EAEB37 /* ec.c */, + B3EBB05A2872978C00EAEB37 /* kirk_engine.c */, + B3EBB0532872978C00EAEB37 /* sha1.c */, + B3EBB0552872978C00EAEB37 /* aes.h */, + B3EBB0502872978C00EAEB37 /* amctrl.h */, + B3EBB0572872978C00EAEB37 /* des.h */, + B3EBB05B2872978C00EAEB37 /* key_vault.h */, + B3EBB0522872978C00EAEB37 /* kirk_engine.h */, + B3EBB0562872978C00EAEB37 /* psp_headers.h */, + B3EBB0592872978C00EAEB37 /* sha1.h */, + ); + path = libkirk; + sourceTree = ""; + }; + B3EBB05E2872978C00EAEB37 /* rsx */ = { + isa = PBXGroup; + children = ( + B3EBB0642872978C00EAEB37 /* rsx_dump.cpp */, + B3EBB0602872978C00EAEB37 /* rsx_intf.cpp */, + B3EBB0652872978C00EAEB37 /* rsx_lib_gl.cpp */, + B3EBB0632872978C00EAEB37 /* rsx_lib_vulkan.cpp */, + B3EBB05F2872978C00EAEB37 /* rsx_dump.h */, + B3EBB0672872978C00EAEB37 /* rsx_intf.h */, + B3EBB0662872978C00EAEB37 /* rsx_lib_gl.h */, + B3EBB0612872978C00EAEB37 /* rsx_lib_vulkan.h */, + B3EBB0622872978C00EAEB37 /* README.md */, + B3EBB0682872978C00EAEB37 /* shaders_gl */, + ); + path = rsx; + sourceTree = ""; + }; + B3EBB0682872978C00EAEB37 /* shaders_gl */ = { + isa = PBXGroup; + children = ( + B3EBB0692872978C00EAEB37 /* shaders_common.h */, + B3EBB06A2872978C00EAEB37 /* output_vertex.glsl.h */, + B3EBB06B2872978C00EAEB37 /* image_load_vertex.glsl.h */, + B3EBB06C2872978C00EAEB37 /* output_fragment.glsl.h */, + B3EBB06D2872978C00EAEB37 /* image_load_fragment.glsl.h */, + B3EBB06E2872978C00EAEB37 /* command_fragment.glsl.h */, + B3EBB06F2872978C00EAEB37 /* command_vertex.glsl.h */, + ); + path = shaders_gl; + sourceTree = ""; + }; + B3EBB0732872978C00EAEB37 /* pgxp */ = { + isa = PBXGroup; + children = ( + B3EBB0782872978C00EAEB37 /* pgxp_cpu.c */, + B3EBB07A2872978C00EAEB37 /* pgxp_debug.c */, + B3EBB0792872978C00EAEB37 /* pgxp_gpu.c */, + B3EBB0812872978C00EAEB37 /* pgxp_gte.c */, + B3EBB0802872978C00EAEB37 /* pgxp_main.c */, + B3EBB0752872978C00EAEB37 /* pgxp_mem.c */, + B3EBB0742872978C00EAEB37 /* pgxp_value.c */, + B3EBB07E2872978C00EAEB37 /* pgxp_cpu.h */, + B3EBB0822872978C00EAEB37 /* pgxp_debug.h */, + B3EBB0832872978C00EAEB37 /* pgxp_gpu.h */, + B3EBB0762872978C00EAEB37 /* pgxp_gte.h */, + B3EBB0772872978C00EAEB37 /* pgxp_main.h */, + B3EBB07D2872978C00EAEB37 /* pgxp_mem.h */, + B3EBB07F2872978C00EAEB37 /* pgxp_types.h */, + B3EBB07B2872978C00EAEB37 /* pgxp_value.h */, + B3EBB07C2872978C00EAEB37 /* README.md */, + ); + path = pgxp; + sourceTree = ""; + }; + B3EBB0842872978C00EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBB0852872978C00EAEB37 /* Android.mk */, + B3EBB0862872978C00EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3EBB0882872978C00EAEB37 /* mednafen */ = { + isa = PBXGroup; + children = ( + B3EBB1222872978C00EAEB37 /* settings.c */, + B3EBB0D82872978C00EAEB37 /* state.c */, + B3EBB0D72872978C00EAEB37 /* error.cpp */, + B3EBB11E2872978C00EAEB37 /* FileStream.cpp */, + B3EBB08A2872978C00EAEB37 /* general.cpp */, + B3EBB0D32872978C00EAEB37 /* mednafen-endian.cpp */, + B3EBB1192872978C00EAEB37 /* MemoryStream.cpp */, + B3EBB0892872978C00EAEB37 /* mempatcher.cpp */, + B3EBB1212872978C00EAEB37 /* Stream.cpp */, + B3EBB0D42872978C00EAEB37 /* clamp.h */, + B3EBB0AD2872978C00EAEB37 /* error.h */, + B3EBB1202872978C00EAEB37 /* FileStream.h */, + B3EBB0DA2872978C00EAEB37 /* general.h */, + B3EBB11C2872978C00EAEB37 /* git.h */, + B3EBB0D62872978C00EAEB37 /* masmem.h */, + B3EBB1232872978C00EAEB37 /* math_ops.h */, + B3EBB11F2872978C00EAEB37 /* mednafen-endian.h */, + B3EBB0D22872978C00EAEB37 /* mednafen-types.h */, + B3EBB1182872978C00EAEB37 /* mednafen.h */, + B3EBB0AE2872978C00EAEB37 /* MemoryStream.h */, + B3EBB0D92872978C00EAEB37 /* mempatcher-driver.h */, + B3EBB11A2872978C00EAEB37 /* mempatcher.h */, + B3EBB0D52872978C00EAEB37 /* settings.h */, + B3EBB11D2872978C00EAEB37 /* state_helpers.h */, + B3EBB1242872978C00EAEB37 /* state.h */, + B3EBB11B2872978C00EAEB37 /* Stream.h */, + B3EBB0B42872978C00EAEB37 /* cdrom */, + B3EBB0DB2872978C00EAEB37 /* psx */, + B3EBB08B2872978C00EAEB37 /* tremor */, + B3EBB0AF2872978C00EAEB37 /* video */, + ); + path = mednafen; + sourceTree = ""; + }; + B3EBB08B2872978C00EAEB37 /* tremor */ = { + isa = PBXGroup; + children = ( + B3EBB0A02872978C00EAEB37 /* COPYING */, + B3EBB09C2872978C00EAEB37 /* README */, + B3EBB0A72872978C00EAEB37 /* bitwise.c */, + B3EBB08F2872978C00EAEB37 /* block.c */, + B3EBB0982872978C00EAEB37 /* codebook.c */, + B3EBB0992872978C00EAEB37 /* floor0.c */, + B3EBB0A22872978C00EAEB37 /* floor1.c */, + B3EBB0902872978C00EAEB37 /* framing.c */, + B3EBB0932872978C00EAEB37 /* info.c */, + B3EBB0A62872978C00EAEB37 /* mapping0.c */, + B3EBB0952872978C00EAEB37 /* mdct.c */, + B3EBB0A82872978C00EAEB37 /* registry.c */, + B3EBB09E2872978C00EAEB37 /* res012.c */, + B3EBB0A12872978C00EAEB37 /* sharedbook.c */, + B3EBB0A32872978C00EAEB37 /* synthesis.c */, + B3EBB0A92872978C00EAEB37 /* vorbisfile.c */, + B3EBB0AA2872978C00EAEB37 /* window.c */, + B3EBB08C2872978C00EAEB37 /* asm_arm.h */, + B3EBB09A2872978C00EAEB37 /* backends.h */, + B3EBB0A42872978C00EAEB37 /* block.h */, + B3EBB0AC2872978C00EAEB37 /* codebook.h */, + B3EBB0AB2872978C00EAEB37 /* codec_internal.h */, + B3EBB08E2872978C00EAEB37 /* ivorbiscodec.h */, + B3EBB09F2872978C00EAEB37 /* ivorbisfile.h */, + B3EBB0942872978C00EAEB37 /* lsp_lookup.h */, + B3EBB0912872978C00EAEB37 /* mdct_lookup.h */, + B3EBB0A52872978C00EAEB37 /* mdct.h */, + B3EBB0922872978C00EAEB37 /* misc.h */, + B3EBB08D2872978C00EAEB37 /* ogg.h */, + B3EBB0962872978C00EAEB37 /* os.h */, + B3EBB09B2872978C00EAEB37 /* registry.h */, + B3EBB09D2872978C00EAEB37 /* window_lookup.h */, + B3EBB0972872978C00EAEB37 /* window.h */, + ); + path = tremor; + sourceTree = ""; + }; + B3EBB0AF2872978C00EAEB37 /* video */ = { + isa = PBXGroup; + children = ( + B3EBB0B02872978C00EAEB37 /* Deinterlacer.cpp */, + B3EBB0B22872978C00EAEB37 /* surface.cpp */, + B3EBB0B32872978C00EAEB37 /* Deinterlacer.h */, + B3EBB0B12872978C00EAEB37 /* surface.h */, + ); + path = video; + sourceTree = ""; + }; + B3EBB0B42872978C00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBB0C32872978C00EAEB37 /* CDUtility.c */, + B3EBB0BA2872978C00EAEB37 /* edc_crc32.c */, + B3EBB0CB2872978C00EAEB37 /* galois.c */, + B3EBB0CA2872978C00EAEB37 /* l-ec.c */, + B3EBB0BE2872978C00EAEB37 /* lec.c */, + B3EBB0D12872978C00EAEB37 /* recover-raw.c */, + B3EBB0C22872978C00EAEB37 /* audioreader.cpp */, + B3EBB0C12872978C00EAEB37 /* CDAccess_CCD.cpp */, + B3EBB0B92872978C00EAEB37 /* CDAccess_CHD.cpp */, + B3EBB0BF2872978C00EAEB37 /* CDAccess_Image.cpp */, + B3EBB0C82872978C00EAEB37 /* CDAccess_PBP.cpp */, + B3EBB0CF2872978C00EAEB37 /* CDAccess.cpp */, + B3EBB0C92872978C00EAEB37 /* cdromif.cpp */, + B3EBB0BC2872978C00EAEB37 /* misc.cpp */, + B3EBB0B62872978C00EAEB37 /* audioreader.h */, + B3EBB0B52872978C00EAEB37 /* CDAccess_CCD.h */, + B3EBB0C52872978C00EAEB37 /* CDAccess_CHD.h */, + B3EBB0BB2872978C00EAEB37 /* CDAccess_Image.h */, + B3EBB0CC2872978C00EAEB37 /* CDAccess_PBP.h */, + B3EBB0C62872978C00EAEB37 /* CDAccess.h */, + B3EBB0C42872978C00EAEB37 /* cdromif.h */, + B3EBB0D02872978C00EAEB37 /* CDUtility.h */, + B3EBB0C72872978C00EAEB37 /* edc_crc32.h */, + B3EBB0B72872978C00EAEB37 /* galois.h */, + B3EBB0B82872978C00EAEB37 /* l-ec.h */, + B3EBB0CD2872978C00EAEB37 /* lec.h */, + B3EBB0BD2872978C00EAEB37 /* misc.h */, + B3EBB0C02872978C00EAEB37 /* recover-raw.h */, + B3EBB0CE2872978C00EAEB37 /* SimpleFIFO.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBB0DB2872978C00EAEB37 /* psx */ = { + isa = PBXGroup; + children = ( + B3EBB1152872978C00EAEB37 /* cdc.cpp */, + B3EBB1112872978C00EAEB37 /* cpu.cpp */, + B3EBB10D2872978C00EAEB37 /* debug.cpp */, + B3EBB0DF2872978C00EAEB37 /* decomp.cpp */, + B3EBB10B2872978C00EAEB37 /* dis.cpp */, + B3EBB0E72872978C00EAEB37 /* dma.cpp */, + B3EBB1032872978C00EAEB37 /* frontio.cpp */, + B3EBB0E62872978C00EAEB37 /* gpu_line.cpp */, + B3EBB0DE2872978C00EAEB37 /* gpu_polygon_sub.cpp */, + B3EBB1172872978C00EAEB37 /* gpu_polygon.cpp */, + B3EBB0E82872978C00EAEB37 /* gpu_sprite.cpp */, + B3EBB1142872978C00EAEB37 /* gpu.cpp */, + B3EBB0FD2872978C00EAEB37 /* gte.cpp */, + B3EBB1162872978C00EAEB37 /* irq.cpp */, + B3EBB0FF2872978C00EAEB37 /* mdec.cpp */, + B3EBB1102872978C00EAEB37 /* sio.cpp */, + B3EBB0FE2872978C00EAEB37 /* spu.cpp */, + B3EBB0FC2872978C00EAEB37 /* timer.cpp */, + B3EBB0E02872978C00EAEB37 /* cdc.h */, + B3EBB10C2872978C00EAEB37 /* cpu.h */, + B3EBB0E22872978C00EAEB37 /* debug.h */, + B3EBB0E52872978C00EAEB37 /* dis.h */, + B3EBB0DD2872978C00EAEB37 /* dma.h */, + B3EBB1122872978C00EAEB37 /* FastFIFO.h */, + B3EBB0DC2872978C00EAEB37 /* frontio.h */, + B3EBB10F2872978C00EAEB37 /* gpu_common.h */, + B3EBB1042872978C00EAEB37 /* gpu.h */, + B3EBB0E32872978C00EAEB37 /* gte.h */, + B3EBB10E2872978C00EAEB37 /* irq.h */, + B3EBB1132872978C00EAEB37 /* mdec.h */, + B3EBB0E42872978C00EAEB37 /* psx.h */, + B3EBB0E12872978C00EAEB37 /* sio.h */, + B3EBB1012872978C00EAEB37 /* spu.h */, + B3EBB1022872978C00EAEB37 /* timer.h */, + B3EBB1002872978C00EAEB37 /* spu_fir_table.inc */, + B3EBB0E92872978C00EAEB37 /* input */, + B3EBB1052872978C00EAEB37 /* notes */, + ); + path = psx; + sourceTree = ""; + }; + B3EBB0E92872978C00EAEB37 /* input */ = { + isa = PBXGroup; + children = ( + B3EBB0EA2872978C00EAEB37 /* dualanalog.cpp */, + B3EBB0F42872978C00EAEB37 /* dualshock.cpp */, + B3EBB0F02872978C00EAEB37 /* gamepad.cpp */, + B3EBB0EC2872978C00EAEB37 /* guncon.cpp */, + B3EBB0EE2872978C00EAEB37 /* justifier.cpp */, + B3EBB0EB2872978C00EAEB37 /* memcard.cpp */, + B3EBB0EF2872978C00EAEB37 /* mouse.cpp */, + B3EBB0F12872978C00EAEB37 /* multitap.cpp */, + B3EBB0F62872978C00EAEB37 /* negcon.cpp */, + B3EBB0FA2872978C00EAEB37 /* dualanalog.h */, + B3EBB0F92872978C00EAEB37 /* dualshock.h */, + B3EBB0FB2872978C00EAEB37 /* gamepad.h */, + B3EBB0F72872978C00EAEB37 /* guncon.h */, + B3EBB0ED2872978C00EAEB37 /* justifier.h */, + B3EBB0F82872978C00EAEB37 /* memcard.h */, + B3EBB0F32872978C00EAEB37 /* mouse.h */, + B3EBB0F52872978C00EAEB37 /* multitap.h */, + B3EBB0F22872978C00EAEB37 /* negcon.h */, + ); + path = input; + sourceTree = ""; + }; + B3EBB1052872978C00EAEB37 /* notes */ = { + isa = PBXGroup; + children = ( + B3EBB1062872978C00EAEB37 /* PSX-TODO */, + B3EBB1072872978C00EAEB37 /* SPU-IRQ */, + B3EBB1082872978C00EAEB37 /* tristep.cpp */, + B3EBB1092872978C00EAEB37 /* NOTES */, + B3EBB10A2872978C00EAEB37 /* SOURCES */, + ); + path = notes; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVBeetlePSX.h in Headers */, + B37022C92872554300B3F6DA /* PVBeetlePSXCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* beetle_psx */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "beetle_psx" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = beetle_psx; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libbeetle_psx.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* beetle_psx-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "beetle_psx-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "beetle_psx-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libbeetle_psx-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVBeetlePSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVBeetlePSX" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVBeetlePSX; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVBeetlePSX.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVBeetlePSX" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVBeetlePSX */, + B3344B522859E088006E6B3A /* beetle_psx-libretro */, + B30178D2207C901D0051B93D /* beetle_psx */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3607B0528922C9C00509A68 /* guncon.cpp in Sources */, + B3607B2528922E1800509A68 /* kirk_engine.c in Sources */, + B3681B912874165100C0136F /* cpu.cpp in Sources */, + B3607B3828922FC700509A68 /* optimizer.c in Sources */, + B3607B4C28922FFC00509A68 /* jit_disasm.c in Sources */, + B3CE80222874050000B6BB5A /* zutil.c in Sources */, + B3607AFE28922C8500509A68 /* frontio.cpp in Sources */, + B3607AFF28922C8500509A68 /* mdec.cpp in Sources */, + B3607B3528922ECA00509A68 /* Deinterlacer.cpp in Sources */, + B3607AAA28922A9900509A68 /* Stream.cpp in Sources */, + B3607B5C289233B400509A68 /* block.c in Sources */, + B3CE8019287404EE00B6BB5A /* libchdr_chd.c in Sources */, + B3607B4928922FFC00509A68 /* lightning.c in Sources */, + B3607B3C28922FC700509A68 /* lightrec.c in Sources */, + B3607B0B28922C9C00509A68 /* dualanalog.cpp in Sources */, + B3607B72289234A900509A68 /* mdct.c in Sources */, + B3607B2228922E1800509A68 /* ec.c in Sources */, + B3681B8F2874162700C0136F /* cdc.cpp in Sources */, + B3CE8008287404B200B6BB5A /* Delta.c in Sources */, + B3CE8016287404EE00B6BB5A /* libchdr_bitstream.c in Sources */, + B3681B8B287415E300C0136F /* state.c in Sources */, + B3607B5A289232B200509A68 /* sio.cpp in Sources */, + B3607B0028922C8500509A68 /* timer.cpp in Sources */, + B3681B89287415D200C0136F /* spu.cpp in Sources */, + B3607B3F28922FC700509A68 /* regcache.c in Sources */, + B3681B952874167A00C0136F /* pgxp_cpu.c in Sources */, + B3607B0228922C8500509A68 /* irq.cpp in Sources */, + B3607B76289234DA00509A68 /* sharedbook.c in Sources */, + B3607B5E289233C400509A68 /* framing.c in Sources */, + B3607B2E28922E3300509A68 /* pgxp_gte.c in Sources */, + B3607AD928922BCE00509A68 /* cdromif.cpp in Sources */, + B3607AA828922A9900509A68 /* general.cpp in Sources */, + B3607B1E28922E0E00509A68 /* aes.c in Sources */, + B3CE80312874057400B6BB5A /* rsx_lib_gl.cpp in Sources */, + B3607B4828922FFC00509A68 /* jit_memory.c in Sources */, + B3681B932874167800C0136F /* pgxp_mem.c in Sources */, + B3607B0C28922C9C00509A68 /* negcon.cpp in Sources */, + B3607B562892310A00509A68 /* vorbisfile.c in Sources */, + B3607B0428922C9C00509A68 /* justifier.cpp in Sources */, + B3607B4D28922FFC00509A68 /* jit_names.c in Sources */, + B3607AD628922BCE00509A68 /* CDAccess_Image.cpp in Sources */, + B3CE802B2874052A00B6BB5A /* glsym_es2.c in Sources */, + B3681B7E2874130B00C0136F /* gpu.cpp in Sources */, + B3CE8009287404B200B6BB5A /* LzFind.c in Sources */, + B3CE802D2874055800B6BB5A /* rglgen.c in Sources */, + B3681B972874168A00C0136F /* pgxp_gpu.c in Sources */, + B3607B0628922C9C00509A68 /* multitap.cpp in Sources */, + B3607B2428922E1800509A68 /* amctrl.c in Sources */, + B3607B2C28922E3300509A68 /* pgxp_debug.c in Sources */, + B3CE8015287404EE00B6BB5A /* libchdr_flac.c in Sources */, + B3CE801F2874050000B6BB5A /* inffast.c in Sources */, + B3607B622892340400509A68 /* window.c in Sources */, + B3607ADA28922BCE00509A68 /* CDUtility.c in Sources */, + B3CE80332874059500B6BB5A /* ugui.c in Sources */, + B3607AA728922A9900509A68 /* mempatcher.cpp in Sources */, + B3CE8018287404EE00B6BB5A /* libchdr_cdrom.c in Sources */, + B3607ADE28922BCE00509A68 /* CDAccess_CCD.cpp in Sources */, + B3607B2328922E1800509A68 /* sha1.c in Sources */, + B3607B6E2892348400509A68 /* floor1.c in Sources */, + B3607B3928922FC700509A68 /* reaper.c in Sources */, + B3CE802F2874056100B6BB5A /* glsm.c in Sources */, + B3607B2D28922E3300509A68 /* pgxp_value.c in Sources */, + B3607AE028922BCE00509A68 /* misc.cpp in Sources */, + B3607B2128922E1800509A68 /* bn.c in Sources */, + B3607B0728922C9C00509A68 /* mouse.cpp in Sources */, + B3CE800B287404B200B6BB5A /* LzmaEnc.c in Sources */, + B3CE800A287404B200B6BB5A /* Lzma86Dec.c in Sources */, + B3607B4E28922FFC00509A68 /* jit_size.c in Sources */, + B3607B3E28922FC700509A68 /* memmanager.c in Sources */, + B3607B74289234C100509A68 /* recompiler.c in Sources */, + B3607B4B28922FFC00509A68 /* jit_note.c in Sources */, + B3607B0128922C8500509A68 /* gpu_polygon_sub.cpp in Sources */, + B3607ADC28922BCE00509A68 /* galois.c in Sources */, + B3607B3428922ECA00509A68 /* surface.cpp in Sources */, + B3607AA528922A9900509A68 /* mednafen-endian.cpp in Sources */, + B3607B662892342300509A68 /* bitwise.c in Sources */, + B3CE80232874050000B6BB5A /* crc32.c in Sources */, + B3CE8017287404EE00B6BB5A /* libchdr_huffman.c in Sources */, + B3607AE228922BCE00509A68 /* edc_crc32.c in Sources */, + B3607ADF28922BCE00509A68 /* audioreader.cpp in Sources */, + B3607B0828922C9C00509A68 /* gamepad.cpp in Sources */, + B3607AD728922BCE00509A68 /* CDAccess.cpp in Sources */, + B3607B3B28922FC700509A68 /* interpreter.c in Sources */, + B3607AD828922BCE00509A68 /* CDAccess_PBP.cpp in Sources */, + B3607AA628922A9900509A68 /* MemoryStream.cpp in Sources */, + B3607B0A28922C9C00509A68 /* dualshock.cpp in Sources */, + B3607AE328922BCE00509A68 /* l-ec.c in Sources */, + B3CE8005287404B200B6BB5A /* Alloc.c in Sources */, + B3CE80212874050000B6BB5A /* inftrees.c in Sources */, + B3607B60289233FA00509A68 /* info.c in Sources */, + B3607B642892341000509A68 /* codebook.c in Sources */, + B3607B702892349600509A68 /* synthesis.c in Sources */, + B3607B2F28922E3300509A68 /* pgxp_main.c in Sources */, + B3607ADB28922BCE00509A68 /* recover-raw.c in Sources */, + B3607B4A28922FFC00509A68 /* jit_print.c in Sources */, + B3607B682892343900509A68 /* registry.c in Sources */, + B3607B2028922E1800509A68 /* des.c in Sources */, + B3607B0928922C9C00509A68 /* memcard.cpp in Sources */, + B3CE8007287404B200B6BB5A /* BraIA64.c in Sources */, + B3607B3A28922FC700509A68 /* blockcache.c in Sources */, + B3607ADD28922BCE00509A68 /* lec.c in Sources */, + B3CE8004287404B200B6BB5A /* CpuArch.c in Sources */, + B3607AB228922AA800509A68 /* settings.c in Sources */, + B3607B3D28922FC700509A68 /* emitter.c in Sources */, + B3CE80202874050000B6BB5A /* inflate.c in Sources */, + B3607AA428922A9900509A68 /* error.cpp in Sources */, + B3CE8003287404B200B6BB5A /* LzmaDec.c in Sources */, + B3CE8006287404B200B6BB5A /* Bra86.c in Sources */, + B3607B78289234EC00509A68 /* floor0.c in Sources */, + B3CE80242874050000B6BB5A /* adler32.c in Sources */, + B3607AFD28922C8500509A68 /* gte.cpp in Sources */, + B3607B6C2892346300509A68 /* res012.c in Sources */, + B3607AE128922BCE00509A68 /* CDAccess_CHD.cpp in Sources */, + B3607AA928922A9900509A68 /* FileStream.cpp in Sources */, + B3607B6A2892344600509A68 /* mapping0.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3607AB428922AC500509A68 /* file_stream_transforms.c in Sources */, + B3607AC928922B0B00509A68 /* rtime.c in Sources */, + B3607AD328922B0B00509A68 /* string_list.c in Sources */, + B3607AD028922B0B00509A68 /* dir_list.c in Sources */, + B3607AB528922AC500509A68 /* file_stream.c in Sources */, + B3607AC728922B0B00509A68 /* compat_posix_string.c in Sources */, + B3607AD128922B0B00509A68 /* memalign.c in Sources */, + B3607AF528922C0300509A68 /* ugui_tools.c in Sources */, + B3607ACF28922B0B00509A68 /* file_path.c in Sources */, + B3607AC628922B0B00509A68 /* stdstring.c in Sources */, + B3607ACD28922B0B00509A68 /* compat_strcasestr.c in Sources */, + B3607AD428922B3900509A68 /* rthreads.c in Sources */, + B3607B1A28922D3600509A68 /* input.cpp in Sources */, + B3607B1C28922D4100509A68 /* rsx_intf.cpp in Sources */, + B3681B81287413CE00C0136F /* libretro.cpp in Sources */, + B3607AD228922B0B00509A68 /* vfs_implementation.c in Sources */, + B3607AC828922B0B00509A68 /* rhash.c in Sources */, + B3681B7C287412DC00C0136F /* beetle_psx_globals.c in Sources */, + B3607B582892327600509A68 /* dma.cpp in Sources */, + B3607ACB28922B0B00509A68 /* compat_strl.c in Sources */, + B3607ACC28922B0B00509A68 /* fopen_utf8.c in Sources */, + B3607AF228922BEF00509A68 /* libretro_cbs.c in Sources */, + B3607ACA28922B0B00509A68 /* retro_dirent.c in Sources */, + B3607ACE28922B0B00509A68 /* encoding_utf.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVBeetlePSXCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* beetle_psx-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = beetle_psx; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = beetle_psx; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/beetle-psx-libretro/libretro-common/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps\"", + "\"$(SRCROOT)/beetle-psx-libretro/mednafen\"", + "\"$(SRCROOT)/beetle-psx-libretro/parallel-psx\"", + "\"$(SRCROOT)/beetle-psx-libretro/pgxp\"", + "\"$(SRCROOT)/beetle-psx-libretro/rsx\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/libchdr/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lzma-19.00/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightning/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightrec\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/ugui\"", + "\"$(SRCROOT)/beetle-psx-libretro\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightning/include/lightning\"", + "\"$(SRCROOT)/beetle-psx-libretro/lightning-lightrec-include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVBeetlePSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVBeetlePSX"; + PRODUCT_NAME = PVBeetlePSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = beetle_psx; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "beetle_psx-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "beetle_psx-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "beetle_psx-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/beetle-psx-libretro/libretro-common/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps\"", + "\"$(SRCROOT)/beetle-psx-libretro/mednafen\"", + "\"$(SRCROOT)/beetle-psx-libretro/parallel-psx\"", + "\"$(SRCROOT)/beetle-psx-libretro/pgxp\"", + "\"$(SRCROOT)/beetle-psx-libretro/rsx\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/libchdr/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lzma-19.00/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightning/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightrec\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/ugui\"", + "\"$(SRCROOT)/beetle-psx-libretro\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightning/include/lightning\"", + "\"$(SRCROOT)/beetle-psx-libretro/lightning-lightrec-include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/beetle-psx-libretro/libretro-common/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps\"", + "\"$(SRCROOT)/beetle-psx-libretro/mednafen\"", + "\"$(SRCROOT)/beetle-psx-libretro/parallel-psx\"", + "\"$(SRCROOT)/beetle-psx-libretro/pgxp\"", + "\"$(SRCROOT)/beetle-psx-libretro/rsx\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/libchdr/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lzma-19.00/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightning/include\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightrec\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/ugui\"", + "\"$(SRCROOT)/beetle-psx-libretro\"", + "\"$(SRCROOT)/beetle-psx-libretro/deps/lightning/include/lightning\"", + "\"$(SRCROOT)/beetle-psx-libretro/lightning-lightrec-include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVBeetlePSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVBeetlePSX"; + PRODUCT_NAME = PVBeetlePSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVBeetlePSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVBeetlePSX"; + PRODUCT_NAME = PVBeetlePSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "beetle_psx" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "beetle_psx-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVBeetlePSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVBeetlePSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/xcshareddata/xcschemes/PVBeetlePSX.xcscheme b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/xcshareddata/xcschemes/PVBeetlePSX.xcscheme new file mode 100644 index 0000000000..4310e536d8 --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX.xcodeproj/xcshareddata/xcschemes/PVBeetlePSX.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/BeetlePSX/PVBeetlePSX/Core.plist b/Cores/BeetlePSX/PVBeetlePSX/Core.plist new file mode 100644 index 0000000000..ab0230261c --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.beetlepsx + PVPrincipleClass + PVBeetlePSXCore + PVSupportedSystems + + com.provenance.psx + + PVProjectName + BeetlePSX + PVProjectURL + https://github.com/libretro/beetle-psx-libretro + PVProjectVersion + 0 + + diff --git a/Cores/BeetlePSX/PVBeetlePSX/Info.plist b/Cores/BeetlePSX/PVBeetlePSX/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/BeetlePSX/PVBeetlePSX/PVBeetlePSX.h b/Cores/BeetlePSX/PVBeetlePSX/PVBeetlePSX.h new file mode 100644 index 0000000000..f4650c02b4 --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSX/PVBeetlePSX.h @@ -0,0 +1,18 @@ +// +// PVBeetlePSX.h +// PVBeetlePSX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVBeetlePSX. +FOUNDATION_EXPORT double PVBeetlePSXVersionNumber; + +//! Project version string for PVBeetlePSX. +FOUNDATION_EXPORT const unsigned char PVBeetlePSXVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/BeetlePSX/PVBeetlePSXCore/PVBeetlePSXCore.h b/Cores/BeetlePSX/PVBeetlePSXCore/PVBeetlePSXCore.h new file mode 100644 index 0000000000..65686060ac --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSXCore/PVBeetlePSXCore.h @@ -0,0 +1,43 @@ +// +// PVBeetlePSXCore.h +// PVBeetlePSX +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVBeetlePSXCore : PVLibRetroGLESCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/BeetlePSX/PVBeetlePSXCore/PVBeetlePSXCore.mm b/Cores/BeetlePSX/PVBeetlePSXCore/PVBeetlePSXCore.mm new file mode 100644 index 0000000000..48b55bd23b --- /dev/null +++ b/Cores/BeetlePSX/PVBeetlePSXCore/PVBeetlePSXCore.mm @@ -0,0 +1,332 @@ +// +// PVBeetlePSXCore.m +// PVBeetlePSX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVBeetlePSXCore.h" +#include +//#import "PVBeetlePSXCore+Controls.h" +//#import "PVBeetlePSXCore+Audio.h" +//#import "PVBeetlePSXCore+Video.h" +// +//#import "PVBeetlePSXCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVBeetlePSXCore() { + +} + +@end + +#pragma mark - PVBeetlePSXCore Begin + +@implementation PVBeetlePSXCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// + +- (BOOL)supportsSaveStates { return NO; } +- (BOOL)supportsRumble { return YES; } +- (BOOL)supportsCheatCode { return YES; } + +//- (NSTimeInterval)frameInterval { +// return 60; +//} +// +//- (CGSize)aspectSize { +// return CGSizeMake(10, 7); +//} +// +//- (CGSize)bufferSize { +// return CGSizeMake(1024, 1024); +//} +// +//- (GLenum)pixelFormat { +// return GL_RGBA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} + +//- (BOOL)isDoubleBuffered { +// return YES; +//} +// +//- (void)swapBuffers +//{ +// Mednafen::MDFN_Surface *tempSurf = backBufferSurf; +// backBufferSurf = frontBufferSurf; +// frontBufferSurf = tempSurf; +//} + + +# pragma mark - Audio + +- (double)audioSampleRate { + return 44100; +} + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + +#define V(x) strcmp(variable, x) == 0 + if (V("beetle_psx_hw_renderer")) { + // hardware, hardware_gl, hardware_vk, software + char *value = strdup("software"); + return value; + } else if (V("beetle_psx_hw_renderer_software_fb")) { +// "Enable accurate emulation of framebuffer effects (e.g. motion blur, FF7 battle swirl) when using hardware renderers by running a copy of the software renderer at native resolution in the background. If disabled, these operations are omitted (OpenGL) or rendered on the GPU (Vulkan). Disabling can improve performance but may cause severe graphical errors. Leave enabled if unsure.", +// NULL, +// "video", +// { +// { "enabled", NULL }, +// { "disabled", NULL }, +// { NULL, NULL }, +// }, + char *value = strdup("disabled"); + return value; + } else if (V("dosbox_pure_perfstats")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("dosbox_pure_savestate")) { + // on,rewind,disable + char *value = strdup("on"); + return value; + } else if (V("dosbox_pure_on_screen_keyboard")) { + // true,false + // Enable the On Screen Keyboard feature which can be activated with the L3 button on the controller. + char *value = strdup("true"); + return value; + } else if (V("dosbox_pure_audiorate")) { + // "This should match the frontend audio output rate (Hz) setting.", NULL, +// char * value = [[NSString stringWithFormat:@"%i", self.audioSampleRate] cStringUsingEncoding:NSUTF8StringEncoding]; + char *value = strdup("44100"); + return value; + } else if (V("dosbox_pure_machine")) { +// { "svga", "SVGA (Super Video Graphics Array) (default)" }, +// { "vga", "VGA (Video Graphics Array)" }, +// { "ega", "EGA (Enhanced Graphics Adapter" }, +// { "cga", "CGA (Color Graphics Adapter)" }, +// { "tandy", "Tandy (Tandy Graphics Adapter" }, +// { "hercules", "Hercules (Hercules Graphics Card)" }, +// { "pcjr", "PCjr" }, + char *value = strdup("svga"); + return value; + } else if (V("dosbox_pure_cga")) { + char *value = strdup("early_auto"); + return value; + } else if (V("dosbox_pure_hercules")) { + char *value = strdup("white"); + return value; + } else if (V("dosbox_pure_svga")) { + char *value = strdup("svga_s3"); + return value; + } else if (V("dosbox_pure_aspect_correction")) { + char *value = strdup("false"); + return value; + } else if (V("dosbox_pure_memory_size")) { + char *value = strdup("16"); + return value; + } else if (V("dosbox_pure_cpu_type")) { + char *value = strdup("pentium_slow"); // auto + return value; + } else if (V("dosbox_pure_cpu_core")) { + char *value = strdup("auto"); + return value; + } else if (V("dosbox_pure_keyboard_layout")) { + char *value = strdup("us"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + + /* + "dosbox_pure_mouse_wheel", + "Bind Mouse Wheel To Key", NULL, + "Bind mouse wheel up and down to two keyboard keys to be able to use it in DOS games.", NULL, + "Input", + { + { "67/68", "Left-Bracket/Right-Bracket" }, + { "72/71", "Comma/Period" }, + { "79/82", "Page-Up/Page-Down" }, + { "78/81", "Home/End" }, + { "80/82", "Delete/Page-Down" }, + { "64/65", "Minus/Equals" }, + { "69/70", "Semicolon/Quote" }, + { "99/100", "Numpad Minus/Plus" }, + { "97/98", "Numpad Divide/Multiply" }, + { "84/85", "Up/Down" }, + { "83/86", "Left/Right" }, + { "11/13", "Q/E" }, + { "none", "Disable" }, + }, + "67/68" + + "dosbox_pure_cycles", + "Emulated Performance", NULL, + "The raw performance that DOSBox will try to emulate." "\n\n", NULL, //end of Performance section + "Performance", + { + { "auto", "AUTO - DOSBox will try to detect performance needs (default)" }, + { "max", "MAX - Emulate as many instructions as possible" }, + { "315", "8086/8088, 4.77 MHz from 1980 (315 cps)" }, + { "1320", "286, 6 MHz from 1982 (1320 cps)" }, + { "2750", "286, 12.5 MHz from 1985 (2750 cps)" }, + { "4720", "386, 20 MHz from 1987 (4720 cps)" }, + { "7800", "386DX, 33 MHz from 1989 (7800 cps)" }, + { "13400", "486DX, 33 MHz from 1990 (13400 cps)" }, + { "26800", "486DX2, 66 MHz from 1992 (26800 cps)" }, + { "77000", "Pentium, 100 MHz from 1995 (77000 cps)" }, + { "200000", "Pentium II, 300 MHz from 1997 (200000 cps)" }, + { "500000", "Pentium III, 600 MHz from 1999 (500000 cps)" }, + { "1000000", "AMD Athlon, 1.2 GHz from 2000 (1000000 cps)" }, + }, + + "dosbox_pure_cpu_type", + "CPU Type", NULL, + "Emulated CPU type. Auto is the fastest choice." "\n" + "Games that require specific CPU type selection:" "\n" + "386 (prefetch): X-Men: Madness in The Murderworld, Terminator 1, Contra, Fifa International Soccer 1994" "\n" + "486 (slow): Betrayal in Antara" "\n" + "Pentium (slow): Fifa International Soccer 1994, Windows 95/Windows 3.x games" "\n\n", NULL, //end of System section + "System", + { + { "auto", "Auto - Mixed feature set with maximum performance and compatibility" }, + { "386", "386 - 386 instruction with fast memory access" }, + { "386_slow", "386 (slow) - 386 instruction set with memory privilege checks" }, + { "386_prefetch", "386 (prefetch) - With prefetch queue emulation (only on 'auto' and 'normal' core)" }, + { "486_slow", "486 (slow) - 486 instruction set with memory privilege checks" }, + { "pentium_slow", "Pentium (slow) - 586 instruction set with memory privilege checks" }, + }, + "auto" + }, + { + "dosbox_pure_cpu_core", + "Advanced > CPU Core", NULL, + "Emulation method (DOSBox CPU core) used.", NULL, + "System", + { + #if defined(C_DYNAMIC_X86) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynamic_x86 implementation)" }, + #elif defined(C_DYNREC) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynrec implementation)" }, + #endif + { "normal", "Normal (interpreter)" }, + { "simple", "Simple (interpreter optimized for old real-mode games)" }, + }, + #if defined(C_DYNAMIC_X86) || defined(C_DYNREC) + "auto" + #else + "normal" + #endif + }, + */ +#undef V + return NULL; +} + +@end diff --git a/Cores/BeetlePSX/beetle-psx-libretro b/Cores/BeetlePSX/beetle-psx-libretro new file mode 160000 index 0000000000..4674700f0c --- /dev/null +++ b/Cores/BeetlePSX/beetle-psx-libretro @@ -0,0 +1 @@ +Subproject commit 4674700f0c46dbe610f3d860cddf4aad44ff2f7f diff --git a/Cores/Bliss b/Cores/Bliss index 3b59d97cff..603bcd31a5 160000 --- a/Cores/Bliss +++ b/Cores/Bliss @@ -1 +1 @@ -Subproject commit 3b59d97cff093c3079bc4339ff967732849a6cb7 +Subproject commit 603bcd31a56ec84a9c8219aadb60b031818ba265 diff --git a/Cores/Citra/BuildFlags.xcconfig b/Cores/Citra/BuildFlags.xcconfig new file mode 100644 index 0000000000..7af7800736 --- /dev/null +++ b/Cores/Citra/BuildFlags.xcconfig @@ -0,0 +1,26 @@ +// +// BuildFlags.xcconfig +// PVCitra +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/Citra/PVCitra-Prefix.pch b/Cores/Citra/PVCitra-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/Citra/PVCitra-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/Citra/PVCitra.xcodeproj/project.pbxproj b/Cores/Citra/PVCitra.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..2c179d3dd9 --- /dev/null +++ b/Cores/Citra/PVCitra.xcodeproj/project.pbxproj @@ -0,0 +1,6617 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVCitraCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVCitraCore.mm */; }; + B37022C92872554300B3F6DA /* PVCitraCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVCitraCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVCitra.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVCitra.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libCitra-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libCitra-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3EBB1FD2872B1A000EAEB37 /* libCitra.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libCitra.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libCitra.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCitra.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B30F142C28967728004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F142F28967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F143028967728004D40BF /* docker.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = docker.sh; sourceTree = ""; }; + B30F143128967728004D40BF /* install_package.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = install_package.py; sourceTree = ""; }; + B30F143328967728004D40BF /* deps.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = deps.sh; sourceTree = ""; }; + B30F143428967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F143528967728004D40BF /* upload.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = upload.sh; sourceTree = ""; }; + B30F143728967728004D40BF /* deps.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = deps.sh; sourceTree = ""; }; + B30F143828967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F143A28967728004D40BF /* scan_dll.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = scan_dll.py; sourceTree = ""; }; + B30F143B28967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F143C28967728004D40BF /* upload.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = upload.sh; sourceTree = ""; }; + B30F143D28967728004D40BF /* docker.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = docker.sh; sourceTree = ""; }; + B30F143F28967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F144028967728004D40BF /* docker.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = docker.sh; sourceTree = ""; }; + B30F144228967728004D40BF /* post-upload.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "post-upload.sh"; sourceTree = ""; }; + B30F144328967728004D40BF /* pre-upload.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "pre-upload.sh"; sourceTree = ""; }; + B30F144528967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F144628967728004D40BF /* upload.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = upload.sh; sourceTree = ""; }; + B30F144728967728004D40BF /* docker.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = docker.sh; sourceTree = ""; }; + B30F144928967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F144A28967728004D40BF /* upload.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = upload.sh; sourceTree = ""; }; + B30F144C28967728004D40BF /* script.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = script.sh; sourceTree = ""; }; + B30F144D28967728004D40BF /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B30F144E28967728004D40BF /* docker.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = docker.sh; sourceTree = ""; }; + B30F144F28967728004D40BF /* bitrise.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = bitrise.yml; sourceTree = ""; }; + B30F145128967728004D40BF /* citra.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = citra.xml; sourceTree = ""; }; + B30F145228967728004D40BF /* license.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = license.md; sourceTree = ""; }; + B30F145328967728004D40BF /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B30F145428967728004D40BF /* citra.6 */ = {isa = PBXFileReference; lastKnownFileType = text; path = citra.6; sourceTree = ""; }; + B30F145628967728004D40BF /* citra.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = citra.py; sourceTree = ""; }; + B30F145828967728004D40BF /* compatibility_list.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = compatibility_list.qrc; sourceTree = ""; }; + B30F145928967728004D40BF /* citra.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = citra.desktop; sourceTree = ""; }; + B30F145C28967728004D40BF /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B30F145D28967728004D40BF /* style.qss */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qss; sourceTree = ""; }; + B30F145F28967728004D40BF /* index.theme */ = {isa = PBXFileReference; lastKnownFileType = text; path = index.theme; sourceTree = ""; }; + B30F146128967728004D40BF /* connected_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected_notification.png; sourceTree = ""; }; + B30F146228967728004D40BF /* connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected.png; sourceTree = ""; }; + B30F146328967728004D40BF /* lock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lock.png; sourceTree = ""; }; + B30F146428967728004D40BF /* disconnected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disconnected.png; sourceTree = ""; }; + B30F146628967728004D40BF /* plus_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus_folder.png; sourceTree = ""; }; + B30F146828967728004D40BF /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus.png; sourceTree = ""; }; + B30F146928967728004D40BF /* no_avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = no_avatar.png; sourceTree = ""; }; + B30F146A28967728004D40BF /* chip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chip.png; sourceTree = ""; }; + B30F146B28967728004D40BF /* folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folder.png; sourceTree = ""; }; + B30F146C28967728004D40BF /* sd_card.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sd_card.png; sourceTree = ""; }; + B30F146D28967728004D40BF /* bad_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bad_folder.png; sourceTree = ""; }; + B30F146F28967728004D40BF /* down_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = down_arrow.png; sourceTree = ""; }; + B30F147028967728004D40BF /* branch_closed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_closed.png; sourceTree = ""; }; + B30F147128967728004D40BF /* close-hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close-hover.png"; sourceTree = ""; }; + B30F147228967728004D40BF /* radio_checked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_checked_disabled.png; sourceTree = ""; }; + B30F147328967728004D40BF /* Vsepartoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Vsepartoolbar.png; sourceTree = ""; }; + B30F147428967728004D40BF /* radio_unchecked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_unchecked_focus.png; sourceTree = ""; }; + B30F147528967728004D40BF /* Vmovetoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Vmovetoolbar.png; sourceTree = ""; }; + B30F147628967728004D40BF /* checkbox_checked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_checked_focus.png; sourceTree = ""; }; + B30F147728967728004D40BF /* radio_checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_checked.png; sourceTree = ""; }; + B30F147828967728004D40BF /* up_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = up_arrow_disabled.png; sourceTree = ""; }; + B30F147928967728004D40BF /* left_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = left_arrow.png; sourceTree = ""; }; + B30F147A28967728004D40BF /* checkbox_unchecked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_unchecked.png; sourceTree = ""; }; + B30F147B28967728004D40BF /* right_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = right_arrow.png; sourceTree = ""; }; + B30F147C28967728004D40BF /* stylesheet-branch-end.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stylesheet-branch-end.png"; sourceTree = ""; }; + B30F147D28967728004D40BF /* checkbox_indeterminate_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_indeterminate_disabled.png; sourceTree = ""; }; + B30F147E28967728004D40BF /* branch_open.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_open.png; sourceTree = ""; }; + B30F147F28967728004D40BF /* radio_checked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_checked_focus.png; sourceTree = ""; }; + B30F148028967728004D40BF /* checkbox_unchecked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_unchecked_focus.png; sourceTree = ""; }; + B30F148128967728004D40BF /* checkbox_checked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_checked_disabled.png; sourceTree = ""; }; + B30F148228967728004D40BF /* stylesheet-vline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stylesheet-vline.png"; sourceTree = ""; }; + B30F148328967728004D40BF /* Hsepartoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Hsepartoolbar.png; sourceTree = ""; }; + B30F148428967728004D40BF /* checkbox_checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_checked.png; sourceTree = ""; }; + B30F148528967728004D40BF /* right_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = right_arrow_disabled.png; sourceTree = ""; }; + B30F148628967728004D40BF /* radio_unchecked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_unchecked.png; sourceTree = ""; }; + B30F148728967728004D40BF /* Hmovetoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Hmovetoolbar.png; sourceTree = ""; }; + B30F148828967728004D40BF /* undock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = undock.png; sourceTree = ""; }; + B30F148928967728004D40BF /* branch_open-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_open-on.png"; sourceTree = ""; }; + B30F148A28967728004D40BF /* stylesheet-branch-more.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stylesheet-branch-more.png"; sourceTree = ""; }; + B30F148B28967728004D40BF /* up_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = up_arrow.png; sourceTree = ""; }; + B30F148C28967728004D40BF /* checkbox_indeterminate_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_indeterminate_focus.png; sourceTree = ""; }; + B30F148D28967728004D40BF /* close-pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close-pressed.png"; sourceTree = ""; }; + B30F148E28967728004D40BF /* checkbox_indeterminate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_indeterminate.png; sourceTree = ""; }; + B30F148F28967728004D40BF /* left_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = left_arrow_disabled.png; sourceTree = ""; }; + B30F149028967728004D40BF /* transparent.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = transparent.png; sourceTree = ""; }; + B30F149128967728004D40BF /* radio_unchecked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_unchecked_disabled.png; sourceTree = ""; }; + B30F149228967728004D40BF /* down_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = down_arrow_disabled.png; sourceTree = ""; }; + B30F149328967728004D40BF /* checkbox_unchecked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_unchecked_disabled.png; sourceTree = ""; }; + B30F149428967728004D40BF /* branch_closed-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_closed-on.png"; sourceTree = ""; }; + B30F149528967728004D40BF /* close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = close.png; sourceTree = ""; }; + B30F149628967728004D40BF /* sizegrip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sizegrip.png; sourceTree = ""; }; + B30F149728967728004D40BF /* style.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qrc; sourceTree = ""; }; + B30F149A28967728004D40BF /* index.theme */ = {isa = PBXFileReference; lastKnownFileType = text; path = index.theme; sourceTree = ""; }; + B30F149C28967728004D40BF /* lock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lock.png; sourceTree = ""; }; + B30F149D28967728004D40BF /* style.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qrc; sourceTree = ""; }; + B30F14A028967728004D40BF /* index.theme */ = {isa = PBXFileReference; lastKnownFileType = text; path = index.theme; sourceTree = ""; }; + B30F14A228967728004D40BF /* connected_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected_notification.png; sourceTree = ""; }; + B30F14A328967728004D40BF /* connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected.png; sourceTree = ""; }; + B30F14A428967728004D40BF /* lock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lock.png; sourceTree = ""; }; + B30F14A528967728004D40BF /* failed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = failed.png; sourceTree = ""; }; + B30F14A628967728004D40BF /* disconnected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disconnected.png; sourceTree = ""; }; + B30F14A728967728004D40BF /* checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checked.png; sourceTree = ""; }; + B30F14A928967728004D40BF /* citra.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = citra.png; sourceTree = ""; }; + B30F14AA28967728004D40BF /* plus_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus_folder.png; sourceTree = ""; }; + B30F14AC28967728004D40BF /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus.png; sourceTree = ""; }; + B30F14AD28967728004D40BF /* no_avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = no_avatar.png; sourceTree = ""; }; + B30F14AE28967728004D40BF /* chip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chip.png; sourceTree = ""; }; + B30F14AF28967728004D40BF /* folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folder.png; sourceTree = ""; }; + B30F14B028967728004D40BF /* sd_card.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sd_card.png; sourceTree = ""; }; + B30F14B128967728004D40BF /* bad_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bad_folder.png; sourceTree = ""; }; + B30F14B228967728004D40BF /* default.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = default.qrc; sourceTree = ""; }; + B30F14B428967728004D40BF /* style.qss */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qss; sourceTree = ""; }; + B30F14B628967728004D40BF /* index.theme */ = {isa = PBXFileReference; lastKnownFileType = text; path = index.theme; sourceTree = ""; }; + B30F14B828967728004D40BF /* connected_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected_notification.png; sourceTree = ""; }; + B30F14B928967728004D40BF /* connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected.png; sourceTree = ""; }; + B30F14BA28967728004D40BF /* lock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lock.png; sourceTree = ""; }; + B30F14BB28967728004D40BF /* disconnected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disconnected.png; sourceTree = ""; }; + B30F14BD28967728004D40BF /* plus_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus_folder.png; sourceTree = ""; }; + B30F14BF28967728004D40BF /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus.png; sourceTree = ""; }; + B30F14C028967728004D40BF /* chip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chip.png; sourceTree = ""; }; + B30F14C128967728004D40BF /* folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folder.png; sourceTree = ""; }; + B30F14C228967728004D40BF /* sd_card.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sd_card.png; sourceTree = ""; }; + B30F14C328967728004D40BF /* bad_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bad_folder.png; sourceTree = ""; }; + B30F14C428967728004D40BF /* style.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qrc; sourceTree = ""; }; + B30F14C628967728004D40BF /* style.qss */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qss; sourceTree = ""; }; + B30F14C828967728004D40BF /* index.theme */ = {isa = PBXFileReference; lastKnownFileType = text; path = index.theme; sourceTree = ""; }; + B30F14CA28967728004D40BF /* connected_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected_notification.png; sourceTree = ""; }; + B30F14CB28967728004D40BF /* connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = connected.png; sourceTree = ""; }; + B30F14CC28967728004D40BF /* lock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lock.png; sourceTree = ""; }; + B30F14CD28967728004D40BF /* view-refresh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "view-refresh.png"; sourceTree = ""; }; + B30F14CE28967728004D40BF /* disconnected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disconnected.png; sourceTree = ""; }; + B30F14CF28967728004D40BF /* refresh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = refresh.png; sourceTree = ""; }; + B30F14D128967728004D40BF /* plus_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus_folder.png; sourceTree = ""; }; + B30F14D328967728004D40BF /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus.png; sourceTree = ""; }; + B30F14D428967728004D40BF /* no_avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = no_avatar.png; sourceTree = ""; }; + B30F14D528967728004D40BF /* chip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chip.png; sourceTree = ""; }; + B30F14D628967728004D40BF /* folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folder.png; sourceTree = ""; }; + B30F14D728967728004D40BF /* sd_card.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sd_card.png; sourceTree = ""; }; + B30F14D828967728004D40BF /* bad_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bad_folder.png; sourceTree = ""; }; + B30F14D928967728004D40BF /* LICENSE.rst */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.rst; sourceTree = ""; }; + B30F14DB28967729004D40BF /* down_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = down_arrow.png; sourceTree = ""; }; + B30F14DC28967729004D40BF /* branch_closed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_closed.png; sourceTree = ""; }; + B30F14DD28967729004D40BF /* branch_end.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_end.png; sourceTree = ""; }; + B30F14DE28967729004D40BF /* line_horizontal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_horizontal.png; sourceTree = ""; }; + B30F14DF28967729004D40BF /* close-hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close-hover.png"; sourceTree = ""; }; + B30F14E028967729004D40BF /* arrow_up_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_up_disabled@2x.png"; sourceTree = ""; }; + B30F14E128967729004D40BF /* branch_line_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_line_pressed.png; sourceTree = ""; }; + B30F14E228967729004D40BF /* arrow_right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_right.png; sourceTree = ""; }; + B30F14E328967729004D40BF /* toolbar_move_vertical_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_vertical_disabled.png; sourceTree = ""; }; + B30F14E428967729004D40BF /* radio_checked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_checked_disabled.png; sourceTree = ""; }; + B30F14E528967729004D40BF /* toolbar_separator_horizontal_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_horizontal_disabled.png; sourceTree = ""; }; + B30F14E628967729004D40BF /* toolbar_separator_horizontal_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_horizontal_pressed.png; sourceTree = ""; }; + B30F14E728967729004D40BF /* base_icon_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "base_icon_focus@2x.png"; sourceTree = ""; }; + B30F14E828967729004D40BF /* branch_end_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_end_disabled@2x.png"; sourceTree = ""; }; + B30F14E928967729004D40BF /* base_icon_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "base_icon_disabled@2x.png"; sourceTree = ""; }; + B30F14EA28967729004D40BF /* line_horizontal_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_horizontal_disabled@2x.png"; sourceTree = ""; }; + B30F14EB28967729004D40BF /* checkbox_indeterminate_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_indeterminate_pressed.png; sourceTree = ""; }; + B30F14EC28967729004D40BF /* arrow_up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_up.png; sourceTree = ""; }; + B30F14ED28967729004D40BF /* toolbar_move_horizontal_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_horizontal_disabled@2x.png"; sourceTree = ""; }; + B30F14EE28967729004D40BF /* branch_more_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_more_focus.png; sourceTree = ""; }; + B30F14EF28967729004D40BF /* Vsepartoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Vsepartoolbar.png; sourceTree = ""; }; + B30F14F028967729004D40BF /* toolbar_move_horizontal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_horizontal.png; sourceTree = ""; }; + B30F14F128967729004D40BF /* radio_unchecked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_unchecked_focus.png; sourceTree = ""; }; + B30F14F228967729004D40BF /* toolbar_move_horizontal_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_horizontal_pressed.png; sourceTree = ""; }; + B30F14F328967729004D40BF /* branch_closed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_closed@2x.png"; sourceTree = ""; }; + B30F14F428967729004D40BF /* branch_end_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_end_pressed.png; sourceTree = ""; }; + B30F14F528967729004D40BF /* checkbox_checked_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_checked_pressed@2x.png"; sourceTree = ""; }; + B30F14F628967729004D40BF /* Vmovetoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Vmovetoolbar.png; sourceTree = ""; }; + B30F14F728967729004D40BF /* checkbox_checked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_checked_focus.png; sourceTree = ""; }; + B30F14F828967729004D40BF /* radio_checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_checked.png; sourceTree = ""; }; + B30F14F928967729004D40BF /* branch_more_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_more_pressed.png; sourceTree = ""; }; + B30F14FA28967729004D40BF /* toolbar_move_horizontal_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_horizontal_disabled.png; sourceTree = ""; }; + B30F14FB28967729004D40BF /* checkbox_indeterminate_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_indeterminate_focus@2x.png"; sourceTree = ""; }; + B30F14FC28967729004D40BF /* line_horizontal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_horizontal@2x.png"; sourceTree = ""; }; + B30F14FD28967729004D40BF /* arrow_left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_left@2x.png"; sourceTree = ""; }; + B30F14FE28967729004D40BF /* branch_open_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_open_focus@2x.png"; sourceTree = ""; }; + B30F14FF28967729004D40BF /* window_undock_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_undock_focus.png; sourceTree = ""; }; + B30F150028967729004D40BF /* arrow_up_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_up_pressed.png; sourceTree = ""; }; + B30F150128967729004D40BF /* arrow_left_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_left_disabled@2x.png"; sourceTree = ""; }; + B30F150228967729004D40BF /* up_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = up_arrow_disabled.png; sourceTree = ""; }; + B30F150328967729004D40BF /* transparent_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "transparent_focus@2x.png"; sourceTree = ""; }; + B30F150428967729004D40BF /* radio_unchecked_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_unchecked_pressed.png; sourceTree = ""; }; + B30F150528967729004D40BF /* branch_end_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_end_pressed@2x.png"; sourceTree = ""; }; + B30F150628967729004D40BF /* checkbox_checked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_checked@2x.png"; sourceTree = ""; }; + B30F150728967729004D40BF /* line_horizontal_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_horizontal_focus.png; sourceTree = ""; }; + B30F150828967729004D40BF /* window_grip_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_grip_pressed.png; sourceTree = ""; }; + B30F150928967729004D40BF /* left_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = left_arrow.png; sourceTree = ""; }; + B30F150A28967729004D40BF /* arrow_left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_left.png; sourceTree = ""; }; + B30F150B28967729004D40BF /* arrow_left_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_left_disabled.png; sourceTree = ""; }; + B30F150C28967729004D40BF /* branch_line_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_line_focus.png; sourceTree = ""; }; + B30F150D28967729004D40BF /* window_undock_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_undock_disabled@2x.png"; sourceTree = ""; }; + B30F150E28967729004D40BF /* arrow_left_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_left_pressed@2x.png"; sourceTree = ""; }; + B30F150F28967729004D40BF /* window_grip_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_grip_pressed@2x.png"; sourceTree = ""; }; + B30F151028967729004D40BF /* toolbar_move_vertical@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_vertical@2x.png"; sourceTree = ""; }; + B30F151128967729004D40BF /* checkbox_unchecked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_unchecked.png; sourceTree = ""; }; + B30F151228967729004D40BF /* radio_checked_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_checked_pressed@2x.png"; sourceTree = ""; }; + B30F151328967729004D40BF /* arrow_down@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_down@2x.png"; sourceTree = ""; }; + B30F151428967729004D40BF /* window_minimize_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_minimize_pressed@2x.png"; sourceTree = ""; }; + B30F151528967729004D40BF /* window_close_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_close_pressed@2x.png"; sourceTree = ""; }; + B30F151628967729004D40BF /* branch_open_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_open_focus.png; sourceTree = ""; }; + B30F151728967729004D40BF /* checkbox_indeterminate_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_indeterminate_pressed@2x.png"; sourceTree = ""; }; + B30F151828967729004D40BF /* arrow_left_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_left_focus@2x.png"; sourceTree = ""; }; + B30F151928967729004D40BF /* arrow_down_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_down_pressed.png; sourceTree = ""; }; + B30F151A28967729004D40BF /* right_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = right_arrow.png; sourceTree = ""; }; + B30F151B28967729004D40BF /* stylesheet-branch-end.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stylesheet-branch-end.png"; sourceTree = ""; }; + B30F151C28967729004D40BF /* toolbar_separator_vertical_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_vertical_focus.png; sourceTree = ""; }; + B30F151D28967729004D40BF /* toolbar_move_vertical_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_vertical_pressed.png; sourceTree = ""; }; + B30F151E28967729004D40BF /* checkbox_checked_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_checked_pressed.png; sourceTree = ""; }; + B30F151F28967729004D40BF /* base_icon_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "base_icon_pressed@2x.png"; sourceTree = ""; }; + B30F152028967729004D40BF /* transparent@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "transparent@2x.png"; sourceTree = ""; }; + B30F152128967729004D40BF /* line_vertical_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_vertical_focus.png; sourceTree = ""; }; + B30F152228967729004D40BF /* branch_line@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_line@2x.png"; sourceTree = ""; }; + B30F152328967729004D40BF /* toolbar_separator_horizontal_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_horizontal_disabled@2x.png"; sourceTree = ""; }; + B30F152428967729004D40BF /* checkbox_indeterminate_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_indeterminate_disabled.png; sourceTree = ""; }; + B30F152528967729004D40BF /* branch_open_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_open_disabled.png; sourceTree = ""; }; + B30F152628967729004D40BF /* transparent_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = transparent_disabled.png; sourceTree = ""; }; + B30F152728967729004D40BF /* toolbar_separator_horizontal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_horizontal.png; sourceTree = ""; }; + B30F152828967729004D40BF /* window_close_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_close_pressed.png; sourceTree = ""; }; + B30F152928967729004D40BF /* toolbar_move_vertical.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_vertical.png; sourceTree = ""; }; + B30F152A28967729004D40BF /* window_grip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_grip.png; sourceTree = ""; }; + B30F152B28967729004D40BF /* toolbar_move_horizontal_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_horizontal_focus@2x.png"; sourceTree = ""; }; + B30F152C28967729004D40BF /* branch_open.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_open.png; sourceTree = ""; }; + B30F152D28967729004D40BF /* base_icon_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = base_icon_disabled.png; sourceTree = ""; }; + B30F152E28967729004D40BF /* arrow_right_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_right_pressed@2x.png"; sourceTree = ""; }; + B30F152F28967729004D40BF /* branch_open_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_open_pressed@2x.png"; sourceTree = ""; }; + B30F153028967729004D40BF /* line_vertical.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_vertical.png; sourceTree = ""; }; + B30F153128967729004D40BF /* branch_open_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_open_pressed.png; sourceTree = ""; }; + B30F153228967729004D40BF /* toolbar_separator_horizontal_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_horizontal_focus@2x.png"; sourceTree = ""; }; + B30F153328967729004D40BF /* window_close_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_close_focus.png; sourceTree = ""; }; + B30F153428967729004D40BF /* radio_checked_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_checked_focus@2x.png"; sourceTree = ""; }; + B30F153528967729004D40BF /* toolbar_move_vertical_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_vertical_focus@2x.png"; sourceTree = ""; }; + B30F153628967729004D40BF /* branch_open@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_open@2x.png"; sourceTree = ""; }; + B30F153728967729004D40BF /* window_undock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_undock.png; sourceTree = ""; }; + B30F153828967729004D40BF /* radio_checked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_checked@2x.png"; sourceTree = ""; }; + B30F153928967729004D40BF /* toolbar_separator_vertical@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_vertical@2x.png"; sourceTree = ""; }; + B30F153A28967729004D40BF /* branch_more.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_more.png; sourceTree = ""; }; + B30F153B28967729004D40BF /* branch_line.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_line.png; sourceTree = ""; }; + B30F153C28967729004D40BF /* branch_line_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_line_pressed@2x.png"; sourceTree = ""; }; + B30F153D28967729004D40BF /* branch_open_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_open_disabled@2x.png"; sourceTree = ""; }; + B30F153E28967729004D40BF /* window_minimize.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_minimize.png; sourceTree = ""; }; + B30F153F28967729004D40BF /* branch_more@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_more@2x.png"; sourceTree = ""; }; + B30F154028967729004D40BF /* arrow_right_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_right_disabled@2x.png"; sourceTree = ""; }; + B30F154128967729004D40BF /* toolbar_separator_vertical_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_vertical_pressed.png; sourceTree = ""; }; + B30F154228967729004D40BF /* branch_closed_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_closed_focus.png; sourceTree = ""; }; + B30F154328967729004D40BF /* line_vertical_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_vertical_pressed@2x.png"; sourceTree = ""; }; + B30F154428967729004D40BF /* window_grip_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_grip_disabled@2x.png"; sourceTree = ""; }; + B30F154528967729004D40BF /* arrow_up_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_up_pressed@2x.png"; sourceTree = ""; }; + B30F154628967729004D40BF /* branch_closed_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_closed_pressed.png; sourceTree = ""; }; + B30F154728967729004D40BF /* radio_checked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_checked_focus.png; sourceTree = ""; }; + B30F154828967729004D40BF /* branch_end_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_end_focus.png; sourceTree = ""; }; + B30F154928967729004D40BF /* arrow_down_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_down_disabled.png; sourceTree = ""; }; + B30F154A28967729004D40BF /* toolbar_separator_horizontal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_horizontal@2x.png"; sourceTree = ""; }; + B30F154B28967729004D40BF /* window_minimize@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_minimize@2x.png"; sourceTree = ""; }; + B30F154C28967729004D40BF /* checkbox_unchecked_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_unchecked_focus.png; sourceTree = ""; }; + B30F154D28967729004D40BF /* window_minimize_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_minimize_pressed.png; sourceTree = ""; }; + B30F154E28967729004D40BF /* window_grip_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_grip_focus@2x.png"; sourceTree = ""; }; + B30F154F28967729004D40BF /* radio_checked_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_checked_disabled@2x.png"; sourceTree = ""; }; + B30F155028967729004D40BF /* window_minimize_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_minimize_disabled.png; sourceTree = ""; }; + B30F155128967729004D40BF /* checkbox_checked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_checked_disabled.png; sourceTree = ""; }; + B30F155228967729004D40BF /* checkbox_indeterminate@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_indeterminate@2x.png"; sourceTree = ""; }; + B30F155328967729004D40BF /* stylesheet-vline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stylesheet-vline.png"; sourceTree = ""; }; + B30F155428967729004D40BF /* checkbox_unchecked_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_unchecked_focus@2x.png"; sourceTree = ""; }; + B30F155528967729004D40BF /* window_grip_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_grip_focus.png; sourceTree = ""; }; + B30F155628967729004D40BF /* line_vertical_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_vertical_disabled@2x.png"; sourceTree = ""; }; + B30F155728967729004D40BF /* branch_line_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_line_disabled@2x.png"; sourceTree = ""; }; + B30F155828967729004D40BF /* toolbar_separator_horizontal_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_horizontal_focus.png; sourceTree = ""; }; + B30F155928967729004D40BF /* arrow_down_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_down_disabled@2x.png"; sourceTree = ""; }; + B30F155A28967729004D40BF /* branch_closed_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_closed_focus@2x.png"; sourceTree = ""; }; + B30F155B28967729004D40BF /* branch_closed_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_closed_pressed@2x.png"; sourceTree = ""; }; + B30F155C28967729004D40BF /* window_grip@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_grip@2x.png"; sourceTree = ""; }; + B30F155D28967729004D40BF /* radio_unchecked_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_unchecked_focus@2x.png"; sourceTree = ""; }; + B30F155E28967729004D40BF /* line_horizontal_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_horizontal_disabled.png; sourceTree = ""; }; + B30F155F28967729004D40BF /* arrow_right_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_right_focus@2x.png"; sourceTree = ""; }; + B30F156028967729004D40BF /* line_vertical@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_vertical@2x.png"; sourceTree = ""; }; + B30F15612896772A004D40BF /* arrow_right_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_right_pressed.png; sourceTree = ""; }; + B30F15622896772A004D40BF /* Hsepartoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Hsepartoolbar.png; sourceTree = ""; }; + B30F15632896772A004D40BF /* checkbox_unchecked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_unchecked@2x.png"; sourceTree = ""; }; + B30F15642896772A004D40BF /* toolbar_separator_horizontal_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_horizontal_pressed@2x.png"; sourceTree = ""; }; + B30F15652896772A004D40BF /* window_close_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_close_disabled.png; sourceTree = ""; }; + B30F15662896772A004D40BF /* checkbox_unchecked_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_unchecked_pressed.png; sourceTree = ""; }; + B30F15672896772A004D40BF /* transparent_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = transparent_focus.png; sourceTree = ""; }; + B30F15682896772A004D40BF /* window_close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_close.png; sourceTree = ""; }; + B30F15692896772A004D40BF /* toolbar_separator_vertical_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_vertical_disabled.png; sourceTree = ""; }; + B30F156A2896772A004D40BF /* checkbox_checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_checked.png; sourceTree = ""; }; + B30F156B2896772A004D40BF /* branch_line_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_line_disabled.png; sourceTree = ""; }; + B30F156C2896772A004D40BF /* radio_unchecked_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_unchecked_disabled@2x.png"; sourceTree = ""; }; + B30F156D2896772A004D40BF /* right_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = right_arrow_disabled.png; sourceTree = ""; }; + B30F156E2896772A004D40BF /* arrow_up_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_up_focus@2x.png"; sourceTree = ""; }; + B30F156F2896772A004D40BF /* radio_unchecked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_unchecked.png; sourceTree = ""; }; + B30F15702896772A004D40BF /* Hmovetoolbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Hmovetoolbar.png; sourceTree = ""; }; + B30F15712896772A004D40BF /* checkbox_unchecked_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_unchecked_pressed@2x.png"; sourceTree = ""; }; + B30F15722896772A004D40BF /* checkbox_indeterminate_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_indeterminate_disabled@2x.png"; sourceTree = ""; }; + B30F15732896772A004D40BF /* arrow_left_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_left_pressed.png; sourceTree = ""; }; + B30F15742896772A004D40BF /* base_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "base_icon@2x.png"; sourceTree = ""; }; + B30F15752896772A004D40BF /* line_vertical_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_vertical_focus@2x.png"; sourceTree = ""; }; + B30F15762896772A004D40BF /* transparent_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = transparent_pressed.png; sourceTree = ""; }; + B30F15772896772A004D40BF /* undock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = undock.png; sourceTree = ""; }; + B30F15782896772A004D40BF /* window_undock_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_undock_disabled.png; sourceTree = ""; }; + B30F15792896772A004D40BF /* window_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_close@2x.png"; sourceTree = ""; }; + B30F157A2896772A004D40BF /* checkbox_checked_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_checked_disabled@2x.png"; sourceTree = ""; }; + B30F157B2896772A004D40BF /* line_horizontal_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_horizontal_pressed@2x.png"; sourceTree = ""; }; + B30F157C2896772A004D40BF /* window_minimize_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_minimize_disabled@2x.png"; sourceTree = ""; }; + B30F157D2896772A004D40BF /* toolbar_move_vertical_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_vertical_focus.png; sourceTree = ""; }; + B30F157E2896772A004D40BF /* window_undock_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_undock_pressed@2x.png"; sourceTree = ""; }; + B30F157F2896772A004D40BF /* branch_end_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_end_focus@2x.png"; sourceTree = ""; }; + B30F15802896772A004D40BF /* toolbar_move_horizontal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_horizontal@2x.png"; sourceTree = ""; }; + B30F15812896772A004D40BF /* line_horizontal_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_horizontal_pressed.png; sourceTree = ""; }; + B30F15822896772A004D40BF /* toolbar_separator_vertical.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_separator_vertical.png; sourceTree = ""; }; + B30F15832896772A004D40BF /* arrow_up@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_up@2x.png"; sourceTree = ""; }; + B30F15842896772A004D40BF /* transparent_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "transparent_disabled@2x.png"; sourceTree = ""; }; + B30F15852896772A004D40BF /* branch_open-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_open-on.png"; sourceTree = ""; }; + B30F15862896772A004D40BF /* window_undock_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_undock_pressed.png; sourceTree = ""; }; + B30F15872896772A004D40BF /* branch_more_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_more_disabled.png; sourceTree = ""; }; + B30F15882896772A004D40BF /* branch_more_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_more_pressed@2x.png"; sourceTree = ""; }; + B30F15892896772A004D40BF /* toolbar_move_horizontal_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toolbar_move_horizontal_focus.png; sourceTree = ""; }; + B30F158A2896772A004D40BF /* arrow_up_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_up_focus.png; sourceTree = ""; }; + B30F158B2896772A004D40BF /* line_vertical_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_vertical_pressed.png; sourceTree = ""; }; + B30F158C2896772A004D40BF /* branch_more_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_more_focus@2x.png"; sourceTree = ""; }; + B30F158D2896772A004D40BF /* toolbar_move_horizontal_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_horizontal_pressed@2x.png"; sourceTree = ""; }; + B30F158E2896772A004D40BF /* stylesheet-branch-more.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stylesheet-branch-more.png"; sourceTree = ""; }; + B30F158F2896772A004D40BF /* up_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = up_arrow.png; sourceTree = ""; }; + B30F15902896772A004D40BF /* toolbar_separator_vertical_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_vertical_disabled@2x.png"; sourceTree = ""; }; + B30F15912896772A004D40BF /* window_undock_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_undock_focus@2x.png"; sourceTree = ""; }; + B30F15922896772A004D40BF /* branch_closed_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_closed_disabled@2x.png"; sourceTree = ""; }; + B30F15932896772A004D40BF /* toolbar_move_vertical_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_vertical_pressed@2x.png"; sourceTree = ""; }; + B30F15942896772A004D40BF /* branch_end_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_end_disabled.png; sourceTree = ""; }; + B30F15952896772A004D40BF /* window_close_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_close_disabled@2x.png"; sourceTree = ""; }; + B30F15962896772A004D40BF /* radio_unchecked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_unchecked@2x.png"; sourceTree = ""; }; + B30F15972896772A004D40BF /* arrow_up_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_up_disabled.png; sourceTree = ""; }; + B30F15982896772A004D40BF /* branch_end@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_end@2x.png"; sourceTree = ""; }; + B30F15992896772A004D40BF /* checkbox_indeterminate_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_indeterminate_focus.png; sourceTree = ""; }; + B30F159A2896772A004D40BF /* base_icon_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = base_icon_focus.png; sourceTree = ""; }; + B30F159B2896772A004D40BF /* line_vertical_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = line_vertical_disabled.png; sourceTree = ""; }; + B30F159C2896772A004D40BF /* close-pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close-pressed.png"; sourceTree = ""; }; + B30F159D2896772A004D40BF /* radio_unchecked_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radio_unchecked_pressed@2x.png"; sourceTree = ""; }; + B30F159E2896772A004D40BF /* branch_more_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_more_disabled@2x.png"; sourceTree = ""; }; + B30F159F2896772A004D40BF /* arrow_left_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_left_focus.png; sourceTree = ""; }; + B30F15A02896772A004D40BF /* checkbox_unchecked_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_unchecked_disabled@2x.png"; sourceTree = ""; }; + B30F15A12896772A004D40BF /* branch_line_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_line_focus@2x.png"; sourceTree = ""; }; + B30F15A22896772A004D40BF /* window_close_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_close_focus@2x.png"; sourceTree = ""; }; + B30F15A32896772A004D40BF /* checkbox_indeterminate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_indeterminate.png; sourceTree = ""; }; + B30F15A42896772A004D40BF /* radio_checked_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_checked_pressed.png; sourceTree = ""; }; + B30F15A52896772A004D40BF /* arrow_down_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_down_focus.png; sourceTree = ""; }; + B30F15A62896772A004D40BF /* toolbar_separator_vertical_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_vertical_focus@2x.png"; sourceTree = ""; }; + B30F15A72896772A004D40BF /* arrow_right_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_right_focus.png; sourceTree = ""; }; + B30F15A82896772A004D40BF /* left_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = left_arrow_disabled.png; sourceTree = ""; }; + B30F15A92896772A004D40BF /* transparent.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = transparent.png; sourceTree = ""; }; + B30F15AA2896772A004D40BF /* window_minimize_focus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_minimize_focus.png; sourceTree = ""; }; + B30F15AB2896772A004D40BF /* base_icon_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = base_icon_pressed.png; sourceTree = ""; }; + B30F15AC2896772A004D40BF /* transparent_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "transparent_pressed@2x.png"; sourceTree = ""; }; + B30F15AD2896772A004D40BF /* toolbar_move_vertical_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_move_vertical_disabled@2x.png"; sourceTree = ""; }; + B30F15AE2896772A004D40BF /* arrow_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_down.png; sourceTree = ""; }; + B30F15AF2896772A004D40BF /* base_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = base_icon.png; sourceTree = ""; }; + B30F15B02896772A004D40BF /* branch_closed_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = branch_closed_disabled.png; sourceTree = ""; }; + B30F15B12896772A004D40BF /* radio_unchecked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radio_unchecked_disabled.png; sourceTree = ""; }; + B30F15B22896772A004D40BF /* down_arrow_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = down_arrow_disabled.png; sourceTree = ""; }; + B30F15B32896772A004D40BF /* arrow_right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_right@2x.png"; sourceTree = ""; }; + B30F15B42896772A004D40BF /* arrow_right_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_right_disabled.png; sourceTree = ""; }; + B30F15B52896772A004D40BF /* line_horizontal_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line_horizontal_focus@2x.png"; sourceTree = ""; }; + B30F15B62896772A004D40BF /* window_minimize_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_minimize_focus@2x.png"; sourceTree = ""; }; + B30F15B72896772A004D40BF /* window_grip_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = window_grip_disabled.png; sourceTree = ""; }; + B30F15B82896772A004D40BF /* checkbox_unchecked_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox_unchecked_disabled.png; sourceTree = ""; }; + B30F15B92896772A004D40BF /* checkbox_checked_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checkbox_checked_focus@2x.png"; sourceTree = ""; }; + B30F15BA2896772A004D40BF /* branch_closed-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch_closed-on.png"; sourceTree = ""; }; + B30F15BB2896772A004D40BF /* window_undock@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "window_undock@2x.png"; sourceTree = ""; }; + B30F15BC2896772A004D40BF /* close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = close.png; sourceTree = ""; }; + B30F15BD2896772A004D40BF /* sizegrip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sizegrip.png; sourceTree = ""; }; + B30F15BE2896772A004D40BF /* toolbar_separator_vertical_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "toolbar_separator_vertical_pressed@2x.png"; sourceTree = ""; }; + B30F15BF2896772A004D40BF /* arrow_down_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_down_pressed@2x.png"; sourceTree = ""; }; + B30F15C02896772A004D40BF /* arrow_down_focus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow_down_focus@2x.png"; sourceTree = ""; }; + B30F15C12896772A004D40BF /* style.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qrc; sourceTree = ""; }; + B30F15C42896772A004D40BF /* index.theme */ = {isa = PBXFileReference; lastKnownFileType = text; path = index.theme; sourceTree = ""; }; + B30F15C62896772A004D40BF /* lock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lock.png; sourceTree = ""; }; + B30F15C72896772A004D40BF /* style.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = style.qrc; sourceTree = ""; }; + B30F15C82896772A004D40BF /* citra.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = citra.svg; sourceTree = ""; }; + B30F15C92896772A004D40BF /* citra.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = citra.icns; sourceTree = ""; }; + B30F15CC2896772A004D40BF /* config */ = {isa = PBXFileReference; lastKnownFileType = text; path = config; sourceTree = ""; }; + B30F15CD2896772A004D40BF /* lt_LT.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lt_LT.ts; sourceTree = ""; }; + B30F15CE2896772A004D40BF /* de.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = de.ts; sourceTree = ""; }; + B30F15CF2896772A004D40BF /* tr_TR.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = tr_TR.ts; sourceTree = ""; }; + B30F15D02896772A004D40BF /* vi_VN.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = vi_VN.ts; sourceTree = ""; }; + B30F15D12896772A004D40BF /* nb.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = nb.ts; sourceTree = ""; }; + B30F15D22896772A004D40BF /* ko_KR.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ko_KR.ts; sourceTree = ""; }; + B30F15D32896772A004D40BF /* it.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = it.ts; sourceTree = ""; }; + B30F15D42896772A004D40BF /* zh_TW.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zh_TW.ts; sourceTree = ""; }; + B30F15D52896772A004D40BF /* pt_BR.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = pt_BR.ts; sourceTree = ""; }; + B30F15D62896772A004D40BF /* zh_CN.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zh_CN.ts; sourceTree = ""; }; + B30F15D72896772A004D40BF /* ro_RO.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ro_RO.ts; sourceTree = ""; }; + B30F15D82896772A004D40BF /* fr.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fr.ts; sourceTree = ""; }; + B30F15D92896772A004D40BF /* nl.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = nl.ts; sourceTree = ""; }; + B30F15DA2896772A004D40BF /* fi.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fi.ts; sourceTree = ""; }; + B30F15DB2896772A004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F15DC2896772A004D40BF /* fi_FI.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fi_FI.ts; sourceTree = ""; }; + B30F15DD2896772A004D40BF /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B30F15DE2896772A004D40BF /* ja_JP.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ja_JP.ts; sourceTree = ""; }; + B30F15DF2896772A004D40BF /* es_ES.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = es_ES.ts; sourceTree = ""; }; + B30F15E02896772A004D40BF /* da_DK.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = da_DK.ts; sourceTree = ""; }; + B30F15E12896772A004D40BF /* el.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = el.ts; sourceTree = ""; }; + B30F15E22896772A004D40BF /* id.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = id.ts; sourceTree = ""; }; + B30F15E32896772A004D40BF /* ru_RU.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ru_RU.ts; sourceTree = ""; }; + B30F15E42896772A004D40BF /* pl_PL.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = pl_PL.ts; sourceTree = ""; }; + B30F15E52896772A004D40BF /* citra-qt.6 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "citra-qt.6"; sourceTree = ""; }; + B30F15E62896772A004D40BF /* citra.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = citra.ico; sourceTree = ""; }; + B30F15E72896772A004D40BF /* doc-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "doc-icon.png"; sourceTree = ""; }; + B30F15E92896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F15EB2896772A004D40BF /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B30F15EC2896772A004D40BF /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = ""; }; + B30F15ED2896772A004D40BF /* icon.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon.ico; sourceTree = ""; }; + B30F15EE2896772A004D40BF /* config_linux.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config_linux.xml; sourceTree = ""; }; + B30F15EF2896772A004D40BF /* config_mac.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config_mac.xml; sourceTree = ""; }; + B30F15F02896772A004D40BF /* config_windows.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config_windows.xml; sourceTree = ""; }; + B30F15F12896772A004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F15F22896772A004D40BF /* citra.manifest */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = citra.manifest; sourceTree = ""; }; + B30F15F62896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F15FA2896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F15FD2896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F15FE2896772A004D40BF /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B30F15FF2896772A004D40BF /* getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = getopt.c; sourceTree = ""; }; + B30F16032896772A004D40BF /* FindSDL2.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindSDL2.cmake; sourceTree = ""; }; + B30F16042896772A004D40BF /* FindFFmpeg.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindFFmpeg.cmake; sourceTree = ""; }; + B30F16052896772A004D40BF /* GetGitRevisionDescription.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetGitRevisionDescription.cmake; sourceTree = ""; }; + B30F16062896772A004D40BF /* GetGitRevisionDescription.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetGitRevisionDescription.cmake.in; sourceTree = ""; }; + B30F16072896772A004D40BF /* WindowsCopyFiles.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = WindowsCopyFiles.cmake; sourceTree = ""; }; + B30F16082896772A004D40BF /* FindLibUSB.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindLibUSB.cmake; sourceTree = ""; }; + B30F160A2896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F160F2896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F16102896772A004D40BF /* ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ifaddrs.c; sourceTree = ""; }; + B30F16112896772A004D40BF /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B30F16132896772A004D40BF /* httplib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = httplib.h; sourceTree = ""; }; + B30F16142896772A004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F16172896772A004D40BF /* json.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = json.hpp; sourceTree = ""; }; + B30F16182896772A004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F161D2896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F16202896772A004D40BF /* khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; + B30F16222896772A004D40BF /* glad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glad.h; sourceTree = ""; }; + B30F16232896772A004D40BF /* Readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Readme.md; sourceTree = ""; }; + B30F16252896772A004D40BF /* glad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glad.c; sourceTree = ""; }; + B30F16282896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F162B2896772A004D40BF /* microprofile_html.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microprofile_html.h; sourceTree = ""; }; + B30F162C2896772A004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F162D2896772A004D40BF /* microprofile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microprofile.h; sourceTree = ""; }; + B30F162E2896772A004D40BF /* microprofileui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microprofileui.h; sourceTree = ""; }; + B30F16312896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F16332896772A004D40BF /* shared_font.app.romfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shared_font.app.romfs.h; sourceTree = ""; }; + B30F16342896772A004D40BF /* mii.app.romfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mii.app.romfs.h; sourceTree = ""; }; + B30F16352896772A004D40BF /* country_list.app.romfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = country_list.app.romfs.h; sourceTree = ""; }; + B30F16362896772A004D40BF /* bad_word_list.app.romfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bad_word_list.app.romfs.h; sourceTree = ""; }; + B30F16372896772A004D40BF /* Readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Readme.md; sourceTree = ""; }; + B30F16392896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F163A2896772A004D40BF /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.h.in; sourceTree = ""; }; + B30F163D2896772A004D40BF /* keys.tar.enc */ = {isa = PBXFileReference; lastKnownFileType = file; path = keys.tar.enc; sourceTree = ""; }; + B30F163E2896772A004D40BF /* .lgtm.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .lgtm.yml; sourceTree = ""; }; + B30F163F2896772A004D40BF /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; + B30F16402896772A004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F16412896772A004D40BF /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B30F16422896772A004D40BF /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; + B30F16442896772A004D40BF /* pre-commit */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "pre-commit"; sourceTree = ""; }; + B30F16462896772A004D40BF /* FUNDING.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = FUNDING.yml; sourceTree = ""; }; + B30F16482896772A004D40BF /* publish.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = publish.yml; sourceTree = ""; }; + B30F16492896772A004D40BF /* ci-merge.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "ci-merge.js"; sourceTree = ""; }; + B30F164A2896772A004D40BF /* ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ci.yml; sourceTree = ""; }; + B30F164C2896772A004D40BF /* bug-report-feature-request.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "bug-report-feature-request.md"; sourceTree = ""; }; + B30F164D2896772A004D40BF /* config.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = config.yml; sourceTree = ""; }; + B30F164E2896772A004D40BF /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B30F164F2896772A004D40BF /* Doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile; sourceTree = ""; }; + B30F16502896772A004D40BF /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B30F16522896772A004D40BF /* CopyCitraFFmpegDeps.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = CopyCitraFFmpegDeps.cmake; sourceTree = ""; }; + B30F16532896772A004D40BF /* MinGWCross.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = MinGWCross.cmake; sourceTree = ""; }; + B30F16542896772A004D40BF /* CopyCitraQt5Deps.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = CopyCitraQt5Deps.cmake; sourceTree = ""; }; + B30F16552896772A004D40BF /* BuildInstaller.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = BuildInstaller.cmake; sourceTree = ""; }; + B30F16562896772A004D40BF /* AndroidNdkModules.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = AndroidNdkModules.cmake; sourceTree = ""; }; + B30F16572896772A004D40BF /* GenerateSCMRev.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = GenerateSCMRev.cmake; sourceTree = ""; }; + B30F16582896772A004D40BF /* DownloadExternals.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = DownloadExternals.cmake; sourceTree = ""; }; + B30F16592896772A004D40BF /* CopyCitraSDLDeps.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = CopyCitraSDLDeps.cmake; sourceTree = ""; }; + B30F165A2896772A004D40BF /* MSVCCache.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = MSVCCache.cmake; sourceTree = ""; }; + B30F165D2896772A004D40BF /* dsp_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_interface.h; sourceTree = ""; }; + B30F165E2896772A004D40BF /* cubeb_input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cubeb_input.cpp; sourceTree = ""; }; + B30F165F2896772A004D40BF /* time_stretch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = time_stretch.h; sourceTree = ""; }; + B30F16602896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F16612896772A004D40BF /* cubeb_sink.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cubeb_sink.cpp; sourceTree = ""; }; + B30F16632896772A004D40BF /* source.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = source.cpp; sourceTree = ""; }; + B30F16642896772A004D40BF /* ffmpeg_dl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ffmpeg_dl.h; sourceTree = ""; }; + B30F16652896772A004D40BF /* adts_reader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = adts_reader.cpp; sourceTree = ""; }; + B30F16662896772A004D40BF /* wmf_decoder_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wmf_decoder_utils.cpp; sourceTree = ""; }; + B30F16672896772A004D40BF /* decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decoder.h; sourceTree = ""; }; + B30F16682896772A004D40BF /* source.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = source.h; sourceTree = ""; }; + B30F16692896772A004D40BF /* filter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = filter.cpp; sourceTree = ""; }; + B30F166A2896772A004D40BF /* mixers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mixers.cpp; sourceTree = ""; }; + B30F166B2896772A004D40BF /* mediandk_decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mediandk_decoder.cpp; sourceTree = ""; }; + B30F166C2896772A004D40BF /* ffmpeg_decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ffmpeg_decoder.cpp; sourceTree = ""; }; + B30F166D2896772A004D40BF /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B30F166E2896772A004D40BF /* mediandk_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mediandk_decoder.h; sourceTree = ""; }; + B30F166F2896772A004D40BF /* mixers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mixers.h; sourceTree = ""; }; + B30F16702896772A004D40BF /* wmf_decoder_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wmf_decoder_utils.h; sourceTree = ""; }; + B30F16712896772A004D40BF /* ffmpeg_dl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ffmpeg_dl.cpp; sourceTree = ""; }; + B30F16722896772A004D40BF /* ffmpeg_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ffmpeg_decoder.h; sourceTree = ""; }; + B30F16732896772A004D40BF /* pipe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipe.h; sourceTree = ""; }; + B30F16742896772A004D40BF /* decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decoder.cpp; sourceTree = ""; }; + B30F16752896772A004D40BF /* wmf_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wmf_decoder.h; sourceTree = ""; }; + B30F16762896772A004D40BF /* fdk_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fdk_decoder.h; sourceTree = ""; }; + B30F16772896772A004D40BF /* hle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hle.cpp; sourceTree = ""; }; + B30F16782896772A004D40BF /* hle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hle.h; sourceTree = ""; }; + B30F16792896772A004D40BF /* wmf_decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wmf_decoder.cpp; sourceTree = ""; }; + B30F167A2896772A004D40BF /* filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + B30F167B2896772A004D40BF /* fdk_decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fdk_decoder.cpp; sourceTree = ""; }; + B30F167C2896772A004D40BF /* shared_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shared_memory.h; sourceTree = ""; }; + B30F167D2896772A004D40BF /* adts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = adts.h; sourceTree = ""; }; + B30F167F2896772A004D40BF /* lle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lle.h; sourceTree = ""; }; + B30F16802896772A004D40BF /* lle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lle.cpp; sourceTree = ""; }; + B30F16812896772A004D40BF /* time_stretch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = time_stretch.cpp; sourceTree = ""; }; + B30F16822896772A004D40BF /* interpolate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interpolate.h; sourceTree = ""; }; + B30F16832896772A004D40BF /* codec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codec.h; sourceTree = ""; }; + B30F16842896772A004D40BF /* interpolate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = interpolate.cpp; sourceTree = ""; }; + B30F16852896772A004D40BF /* sink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sink.h; sourceTree = ""; }; + B30F16862896772A004D40BF /* cubeb_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cubeb_input.h; sourceTree = ""; }; + B30F16872896772A004D40BF /* cubeb_sink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cubeb_sink.h; sourceTree = ""; }; + B30F16882896772A004D40BF /* sdl2_sink.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl2_sink.cpp; sourceTree = ""; }; + B30F16892896772A004D40BF /* audio_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_types.h; sourceTree = ""; }; + B30F168A2896772A004D40BF /* dsp_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp_interface.cpp; sourceTree = ""; }; + B30F168B2896772A004D40BF /* sink_details.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sink_details.h; sourceTree = ""; }; + B30F168C2896772A004D40BF /* codec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = codec.cpp; sourceTree = ""; }; + B30F168D2896772A004D40BF /* sdl2_sink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl2_sink.h; sourceTree = ""; }; + B30F168E2896772A004D40BF /* sink_details.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sink_details.cpp; sourceTree = ""; }; + B30F168F2896772A004D40BF /* null_sink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = null_sink.h; sourceTree = ""; }; + B30F16912896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F16922896772A004D40BF /* lodepng_image_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lodepng_image_interface.h; sourceTree = ""; }; + B30F16932896772A004D40BF /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B30F16942896772A004D40BF /* citra.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = citra.rc; sourceTree = ""; }; + B30F16952896772A004D40BF /* config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config.cpp; sourceTree = ""; }; + B30F16962896772A004D40BF /* default_ini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = default_ini.h; sourceTree = ""; }; + B30F16972896772A004D40BF /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B30F16982896772A004D40BF /* citra.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = citra.cpp; sourceTree = ""; }; + B30F16992896772A004D40BF /* lodepng_image_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lodepng_image_interface.cpp; sourceTree = ""; }; + B30F169B2896772A004D40BF /* emu_window_sdl2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emu_window_sdl2.cpp; sourceTree = ""; }; + B30F169C2896772A004D40BF /* emu_window_sdl2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emu_window_sdl2.h; sourceTree = ""; }; + B30F169D2896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F16A02896772A004D40BF /* recorder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recorder.h; sourceTree = ""; }; + B30F16A12896772A004D40BF /* citrace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = citrace.h; sourceTree = ""; }; + B30F16A22896772A004D40BF /* recorder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = recorder.cpp; sourceTree = ""; }; + B30F16A32896772A004D40BF /* memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory.cpp; sourceTree = ""; }; + B30F16A42896772A004D40BF /* core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; + B30F16A52896772A004D40BF /* telemetry_session.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = telemetry_session.h; sourceTree = ""; }; + B30F16A62896772A004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F16A82896772A004D40BF /* lcd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lcd.cpp; sourceTree = ""; }; + B30F16A92896772A004D40BF /* hw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hw.cpp; sourceTree = ""; }; + B30F16AA2896772A004D40BF /* lcd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lcd.h; sourceTree = ""; }; + B30F16AC2896772A004D40BF /* rsa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsa.h; sourceTree = ""; }; + B30F16AD2896772A004D40BF /* rsa.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsa.cpp; sourceTree = ""; }; + B30F16AE2896772A004D40BF /* gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu.h; sourceTree = ""; }; + B30F16AF2896772A004D40BF /* y2r.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = y2r.h; sourceTree = ""; }; + B30F16B02896772A004D40BF /* y2r.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = y2r.cpp; sourceTree = ""; }; + B30F16B12896772A004D40BF /* hw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hw.h; sourceTree = ""; }; + B30F16B22896772A004D40BF /* gpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpu.cpp; sourceTree = ""; }; + B30F16B42896772A004D40BF /* arithmetic128.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arithmetic128.cpp; sourceTree = ""; }; + B30F16B52896772A004D40BF /* key.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = key.h; sourceTree = ""; }; + B30F16B62896772A004D40BF /* ccm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ccm.cpp; sourceTree = ""; }; + B30F16B72896772A004D40BF /* key.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = key.cpp; sourceTree = ""; }; + B30F16B82896772A004D40BF /* ccm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ccm.h; sourceTree = ""; }; + B30F16B92896772A004D40BF /* arithmetic128.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arithmetic128.h; sourceTree = ""; }; + B30F16BC2896772A004D40BF /* mii_selector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mii_selector.h; sourceTree = ""; }; + B30F16BD2896772A004D40BF /* mii_selector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mii_selector.cpp; sourceTree = ""; }; + B30F16BE2896772A004D40BF /* erreula.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = erreula.h; sourceTree = ""; }; + B30F16BF2896772A004D40BF /* swkbd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = swkbd.h; sourceTree = ""; }; + B30F16C02896772A004D40BF /* mint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mint.h; sourceTree = ""; }; + B30F16C12896772A004D40BF /* erreula.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = erreula.cpp; sourceTree = ""; }; + B30F16C22896772A004D40BF /* mint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mint.cpp; sourceTree = ""; }; + B30F16C32896772A004D40BF /* swkbd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = swkbd.cpp; sourceTree = ""; }; + B30F16C42896772A004D40BF /* applet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = applet.h; sourceTree = ""; }; + B30F16C52896772A004D40BF /* applet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = applet.cpp; sourceTree = ""; }; + B30F16C62896772A004D40BF /* lock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lock.h; sourceTree = ""; }; + B30F16C72896772A004D40BF /* ipc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ipc.h; sourceTree = ""; }; + B30F16C82896772A004D40BF /* romfs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = romfs.cpp; sourceTree = ""; }; + B30F16C92896772A004D40BF /* result.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = result.h; sourceTree = ""; }; + B30F16CA2896772A004D40BF /* ipc_helpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ipc_helpers.h; sourceTree = ""; }; + B30F16CD2896772A004D40BF /* pm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pm.h; sourceTree = ""; }; + B30F16CE2896772A004D40BF /* pm_app.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pm_app.cpp; sourceTree = ""; }; + B30F16CF2896772A004D40BF /* pm_dbg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pm_dbg.cpp; sourceTree = ""; }; + B30F16D02896772A004D40BF /* pm_app.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pm_app.h; sourceTree = ""; }; + B30F16D12896772A004D40BF /* pm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pm.cpp; sourceTree = ""; }; + B30F16D22896772A004D40BF /* pm_dbg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pm_dbg.h; sourceTree = ""; }; + B30F16D42896772A004D40BF /* cecd_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cecd_s.h; sourceTree = ""; }; + B30F16D52896772A004D40BF /* cecd_ndm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cecd_ndm.cpp; sourceTree = ""; }; + B30F16D62896772A004D40BF /* cecd_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cecd_u.cpp; sourceTree = ""; }; + B30F16D72896772A004D40BF /* cecd_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cecd_s.cpp; sourceTree = ""; }; + B30F16D82896772A004D40BF /* cecd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cecd.cpp; sourceTree = ""; }; + B30F16D92896772A004D40BF /* cecd_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cecd_u.h; sourceTree = ""; }; + B30F16DA2896772A004D40BF /* cecd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cecd.h; sourceTree = ""; }; + B30F16DB2896772A004D40BF /* cecd_ndm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cecd_ndm.h; sourceTree = ""; }; + B30F16DC2896772A004D40BF /* err_f.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = err_f.h; sourceTree = ""; }; + B30F16DD2896772A004D40BF /* err_f.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = err_f.cpp; sourceTree = ""; }; + B30F16DF2896772A004D40BF /* srv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = srv.h; sourceTree = ""; }; + B30F16E02896772A004D40BF /* sm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sm.cpp; sourceTree = ""; }; + B30F16E12896772A004D40BF /* srv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = srv.cpp; sourceTree = ""; }; + B30F16E22896772A004D40BF /* sm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sm.h; sourceTree = ""; }; + B30F16E42896772A004D40BF /* ptm_sets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ptm_sets.h; sourceTree = ""; }; + B30F16E52896772A004D40BF /* ptm_gets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ptm_gets.h; sourceTree = ""; }; + B30F16E62896772A004D40BF /* ptm_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ptm_u.cpp; sourceTree = ""; }; + B30F16E72896772A004D40BF /* ptm_sysm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ptm_sysm.cpp; sourceTree = ""; }; + B30F16E82896772A004D40BF /* ptm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ptm.cpp; sourceTree = ""; }; + B30F16E92896772A004D40BF /* ptm_play.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ptm_play.cpp; sourceTree = ""; }; + B30F16EA2896772A004D40BF /* ptm_gets.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ptm_gets.cpp; sourceTree = ""; }; + B30F16EB2896772A004D40BF /* ptm_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ptm_u.h; sourceTree = ""; }; + B30F16EC2896772A004D40BF /* ptm_play.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ptm_play.h; sourceTree = ""; }; + B30F16ED2896772A004D40BF /* ptm_sets.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ptm_sets.cpp; sourceTree = ""; }; + B30F16EE2896772A004D40BF /* ptm_sysm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ptm_sysm.h; sourceTree = ""; }; + B30F16EF2896772A004D40BF /* ptm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ptm.h; sourceTree = ""; }; + B30F16F12896772A004D40BF /* ac_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ac_u.h; sourceTree = ""; }; + B30F16F22896772A004D40BF /* ac_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ac_u.cpp; sourceTree = ""; }; + B30F16F32896772A004D40BF /* ac_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ac_i.h; sourceTree = ""; }; + B30F16F42896772A004D40BF /* ac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ac.h; sourceTree = ""; }; + B30F16F52896772A004D40BF /* ac_i.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ac_i.cpp; sourceTree = ""; }; + B30F16F62896772A004D40BF /* ac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ac.cpp; sourceTree = ""; }; + B30F16F82896772A004D40BF /* nim_aoc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nim_aoc.cpp; sourceTree = ""; }; + B30F16F92896772A004D40BF /* nim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nim.h; sourceTree = ""; }; + B30F16FA2896772A004D40BF /* nim_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nim_u.h; sourceTree = ""; }; + B30F16FB2896772A004D40BF /* nim.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nim.cpp; sourceTree = ""; }; + B30F16FC2896772A004D40BF /* nim_aoc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nim_aoc.h; sourceTree = ""; }; + B30F16FD2896772A004D40BF /* nim_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nim_u.cpp; sourceTree = ""; }; + B30F16FE2896772A004D40BF /* nim_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nim_s.cpp; sourceTree = ""; }; + B30F16FF2896772A004D40BF /* nim_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nim_s.h; sourceTree = ""; }; + B30F17012896772A004D40BF /* am.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = am.cpp; sourceTree = ""; }; + B30F17022896772A004D40BF /* am_net.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = am_net.cpp; sourceTree = ""; }; + B30F17032896772A004D40BF /* am_sys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = am_sys.h; sourceTree = ""; }; + B30F17042896772A004D40BF /* am_app.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = am_app.h; sourceTree = ""; }; + B30F17052896772A004D40BF /* am_app.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = am_app.cpp; sourceTree = ""; }; + B30F17062896772A004D40BF /* am_sys.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = am_sys.cpp; sourceTree = ""; }; + B30F17072896772A004D40BF /* am.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = am.h; sourceTree = ""; }; + B30F17082896772A004D40BF /* am_net.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = am_net.h; sourceTree = ""; }; + B30F17092896772A004D40BF /* am_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = am_u.h; sourceTree = ""; }; + B30F170A2896772A004D40BF /* am_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = am_u.cpp; sourceTree = ""; }; + B30F170C2896772A004D40BF /* pxi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxi.h; sourceTree = ""; }; + B30F170D2896772A004D40BF /* pxi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pxi.cpp; sourceTree = ""; }; + B30F170E2896772A004D40BF /* dev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dev.h; sourceTree = ""; }; + B30F170F2896772A004D40BF /* dev.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dev.cpp; sourceTree = ""; }; + B30F17112896772A004D40BF /* mvd_std.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mvd_std.h; sourceTree = ""; }; + B30F17122896772A004D40BF /* mvd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mvd.cpp; sourceTree = ""; }; + B30F17132896772A004D40BF /* mvd_std.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mvd_std.cpp; sourceTree = ""; }; + B30F17142896772A004D40BF /* mvd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mvd.h; sourceTree = ""; }; + B30F17152896772A004D40BF /* service.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = service.h; sourceTree = ""; }; + B30F17172896772A004D40BF /* ndm_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ndm_u.h; sourceTree = ""; }; + B30F17182896772A004D40BF /* ndm_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ndm_u.cpp; sourceTree = ""; }; + B30F171A2896772A004D40BF /* ir_rst.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ir_rst.h; sourceTree = ""; }; + B30F171B2896772A004D40BF /* ir_user.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ir_user.cpp; sourceTree = ""; }; + B30F171C2896772A004D40BF /* ir.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ir.cpp; sourceTree = ""; }; + B30F171D2896772A004D40BF /* ir.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ir.h; sourceTree = ""; }; + B30F171E2896772A004D40BF /* ir_rst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ir_rst.cpp; sourceTree = ""; }; + B30F171F2896772A004D40BF /* extra_hid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = extra_hid.cpp; sourceTree = ""; }; + B30F17202896772A004D40BF /* extra_hid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = extra_hid.h; sourceTree = ""; }; + B30F17212896772A004D40BF /* ir_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ir_u.cpp; sourceTree = ""; }; + B30F17222896772A004D40BF /* ir_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ir_u.h; sourceTree = ""; }; + B30F17232896772A004D40BF /* ir_user.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ir_user.h; sourceTree = ""; }; + B30F17252896772A004D40BF /* csnd_snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = csnd_snd.cpp; sourceTree = ""; }; + B30F17262896772A004D40BF /* csnd_snd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = csnd_snd.h; sourceTree = ""; }; + B30F17272896772A004D40BF /* soc_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = soc_u.cpp; sourceTree = ""; }; + B30F17282896772A004D40BF /* y2r_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = y2r_u.h; sourceTree = ""; }; + B30F17292896772A004D40BF /* http_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http_c.h; sourceTree = ""; }; + B30F172B2896772A004D40BF /* boss.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boss.h; sourceTree = ""; }; + B30F172C2896772A004D40BF /* boss_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boss_u.h; sourceTree = ""; }; + B30F172D2896772A004D40BF /* boss_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = boss_u.cpp; sourceTree = ""; }; + B30F172E2896772A004D40BF /* boss.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = boss.cpp; sourceTree = ""; }; + B30F172F2896772A004D40BF /* boss_p.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boss_p.h; sourceTree = ""; }; + B30F17302896772A004D40BF /* boss_p.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = boss_p.cpp; sourceTree = ""; }; + B30F17322896772A004D40BF /* act.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = act.h; sourceTree = ""; }; + B30F17332896772A004D40BF /* act_a.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = act_a.cpp; sourceTree = ""; }; + B30F17342896772A004D40BF /* act_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = act_u.cpp; sourceTree = ""; }; + B30F17352896772A004D40BF /* act_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = act_u.h; sourceTree = ""; }; + B30F17362896772A004D40BF /* act.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = act.cpp; sourceTree = ""; }; + B30F17372896772A004D40BF /* act_a.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = act_a.h; sourceTree = ""; }; + B30F17382896772A004D40BF /* y2r_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = y2r_u.cpp; sourceTree = ""; }; + B30F17392896772A004D40BF /* mic_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mic_u.cpp; sourceTree = ""; }; + B30F173B2896772A004D40BF /* cfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg.cpp; sourceTree = ""; }; + B30F173C2896772A004D40BF /* cfg_nor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_nor.cpp; sourceTree = ""; }; + B30F173D2896772A004D40BF /* cfg_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_s.cpp; sourceTree = ""; }; + B30F173E2896772A004D40BF /* cfg_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfg_s.h; sourceTree = ""; }; + B30F173F2896772A004D40BF /* cfg_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_u.cpp; sourceTree = ""; }; + B30F17402896772A004D40BF /* cfg_nor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfg_nor.h; sourceTree = ""; }; + B30F17412896772A004D40BF /* cfg_i.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_i.cpp; sourceTree = ""; }; + B30F17422896772A004D40BF /* cfg_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfg_i.h; sourceTree = ""; }; + B30F17432896772A004D40BF /* cfg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfg.h; sourceTree = ""; }; + B30F17442896772A004D40BF /* cfg_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfg_u.h; sourceTree = ""; }; + B30F17452896772A004D40BF /* ssl_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ssl_c.cpp; sourceTree = ""; }; + B30F17472896772A004D40BF /* frd_a.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frd_a.h; sourceTree = ""; }; + B30F17482896772A004D40BF /* frd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frd.h; sourceTree = ""; }; + B30F17492896772A004D40BF /* frd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = frd.cpp; sourceTree = ""; }; + B30F174A2896772A004D40BF /* frd_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frd_u.h; sourceTree = ""; }; + B30F174B2896772A004D40BF /* frd_a.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = frd_a.cpp; sourceTree = ""; }; + B30F174C2896772A004D40BF /* frd_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = frd_u.cpp; sourceTree = ""; }; + B30F174D2896772A004D40BF /* http_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = http_c.cpp; sourceTree = ""; }; + B30F174F2896772A004D40BF /* nwm_tst.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm_tst.h; sourceTree = ""; }; + B30F17502896772A004D40BF /* uds_connection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uds_connection.cpp; sourceTree = ""; }; + B30F17512896772A004D40BF /* nwm_uds.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm_uds.h; sourceTree = ""; }; + B30F17522896772A004D40BF /* nwm_tst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm_tst.cpp; sourceTree = ""; }; + B30F17532896772A004D40BF /* nwm_cec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm_cec.cpp; sourceTree = ""; }; + B30F17542896772A004D40BF /* nwm_ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm_ext.h; sourceTree = ""; }; + B30F17552896772A004D40BF /* nwm_sap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm_sap.cpp; sourceTree = ""; }; + B30F17562896772A004D40BF /* nwm_sap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm_sap.h; sourceTree = ""; }; + B30F17572896772A004D40BF /* nwm_soc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm_soc.cpp; sourceTree = ""; }; + B30F17582896772A004D40BF /* nwm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm.h; sourceTree = ""; }; + B30F17592896772A004D40BF /* uds_beacon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uds_beacon.h; sourceTree = ""; }; + B30F175A2896772A004D40BF /* uds_data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uds_data.h; sourceTree = ""; }; + B30F175B2896772A004D40BF /* nwm_cec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm_cec.h; sourceTree = ""; }; + B30F175C2896772A004D40BF /* uds_beacon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uds_beacon.cpp; sourceTree = ""; }; + B30F175D2896772A004D40BF /* uds_data.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uds_data.cpp; sourceTree = ""; }; + B30F175E2896772A004D40BF /* nwm_soc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm_soc.h; sourceTree = ""; }; + B30F175F2896772A004D40BF /* nwm_inf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nwm_inf.h; sourceTree = ""; }; + B30F17602896772A004D40BF /* uds_connection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uds_connection.h; sourceTree = ""; }; + B30F17612896772A004D40BF /* nwm_inf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm_inf.cpp; sourceTree = ""; }; + B30F17622896772A004D40BF /* nwm_ext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm_ext.cpp; sourceTree = ""; }; + B30F17632896772A004D40BF /* nwm_uds.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm_uds.cpp; sourceTree = ""; }; + B30F17642896772A004D40BF /* nwm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nwm.cpp; sourceTree = ""; }; + B30F17662896772A004D40BF /* ldr_ro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ldr_ro.cpp; sourceTree = ""; }; + B30F17672896772A004D40BF /* ldr_ro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ldr_ro.h; sourceTree = ""; }; + B30F17682896772A004D40BF /* cro_helper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cro_helper.cpp; sourceTree = ""; }; + B30F17692896772A004D40BF /* cro_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cro_helper.h; sourceTree = ""; }; + B30F176B2896772A004D40BF /* ps_ps.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ps_ps.cpp; sourceTree = ""; }; + B30F176C2896772A004D40BF /* ps_ps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps_ps.h; sourceTree = ""; }; + B30F176E2896772A004D40BF /* cam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cam.h; sourceTree = ""; }; + B30F176F2896772A004D40BF /* cam_q.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cam_q.cpp; sourceTree = ""; }; + B30F17702896772A004D40BF /* cam_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cam_u.h; sourceTree = ""; }; + B30F17712896772A004D40BF /* cam_q.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cam_q.h; sourceTree = ""; }; + B30F17722896772A004D40BF /* cam_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cam_s.cpp; sourceTree = ""; }; + B30F17732896772A004D40BF /* cam_params.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cam_params.h; sourceTree = ""; }; + B30F17742896772A004D40BF /* cam_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cam_u.cpp; sourceTree = ""; }; + B30F17752896772A004D40BF /* cam_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cam_c.cpp; sourceTree = ""; }; + B30F17762896772A004D40BF /* cam_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cam_c.h; sourceTree = ""; }; + B30F17772896772A004D40BF /* cam.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cam.cpp; sourceTree = ""; }; + B30F17782896772A004D40BF /* cam_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cam_s.h; sourceTree = ""; }; + B30F17792896772A004D40BF /* ssl_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ssl_c.h; sourceTree = ""; }; + B30F177A2896772A004D40BF /* service.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = service.cpp; sourceTree = ""; }; + B30F177C2896772A004D40BF /* news_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = news_u.h; sourceTree = ""; }; + B30F177D2896772A004D40BF /* news_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = news_s.h; sourceTree = ""; }; + B30F177E2896772A004D40BF /* news_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = news_u.cpp; sourceTree = ""; }; + B30F177F2896772A004D40BF /* news.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = news.cpp; sourceTree = ""; }; + B30F17802896772A004D40BF /* news_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = news_s.cpp; sourceTree = ""; }; + B30F17812896772A004D40BF /* news.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = news.h; sourceTree = ""; }; + B30F17832896772A004D40BF /* ns_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ns_s.cpp; sourceTree = ""; }; + B30F17842896772A004D40BF /* ns.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ns.cpp; sourceTree = ""; }; + B30F17852896772A004D40BF /* applet_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = applet_manager.h; sourceTree = ""; }; + B30F17862896772A004D40BF /* apt_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apt_u.h; sourceTree = ""; }; + B30F17882896772A004D40BF /* bcfnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bcfnt.h; sourceTree = ""; }; + B30F17892896772A004D40BF /* bcfnt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bcfnt.cpp; sourceTree = ""; }; + B30F178A2896772A004D40BF /* ns_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ns_s.h; sourceTree = ""; }; + B30F178B2896772A004D40BF /* ns.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ns.h; sourceTree = ""; }; + B30F178C2896772A004D40BF /* errors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = errors.h; sourceTree = ""; }; + B30F178D2896772A004D40BF /* apt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apt.h; sourceTree = ""; }; + B30F178E2896772A004D40BF /* apt_a.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apt_a.h; sourceTree = ""; }; + B30F178F2896772A004D40BF /* apt_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apt_s.h; sourceTree = ""; }; + B30F17902896772A004D40BF /* applet_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = applet_manager.cpp; sourceTree = ""; }; + B30F17912896772A004D40BF /* apt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = apt.cpp; sourceTree = ""; }; + B30F17922896772A004D40BF /* apt_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = apt_s.cpp; sourceTree = ""; }; + B30F17932896772A004D40BF /* apt_a.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = apt_a.cpp; sourceTree = ""; }; + B30F17942896772A004D40BF /* apt_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = apt_u.cpp; sourceTree = ""; }; + B30F17962896772A004D40BF /* nfc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nfc.h; sourceTree = ""; }; + B30F17972896772A004D40BF /* nfc_m.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nfc_m.h; sourceTree = ""; }; + B30F17982896772A004D40BF /* nfc_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nfc_u.h; sourceTree = ""; }; + B30F17992896772A004D40BF /* nfc_m.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nfc_m.cpp; sourceTree = ""; }; + B30F179A2896772A004D40BF /* nfc_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nfc_u.cpp; sourceTree = ""; }; + B30F179B2896772A004D40BF /* nfc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nfc.cpp; sourceTree = ""; }; + B30F179D2896772A004D40BF /* gsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gsp.cpp; sourceTree = ""; }; + B30F179E2896772A004D40BF /* gsp_gpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gsp_gpu.cpp; sourceTree = ""; }; + B30F179F2896772A004D40BF /* gsp_gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gsp_gpu.h; sourceTree = ""; }; + B30F17A02896772A004D40BF /* gsp_lcd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gsp_lcd.h; sourceTree = ""; }; + B30F17A12896772A004D40BF /* gsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gsp.h; sourceTree = ""; }; + B30F17A22896772A004D40BF /* gsp_lcd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gsp_lcd.cpp; sourceTree = ""; }; + B30F17A42896772A004D40BF /* dlp_fkcl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dlp_fkcl.cpp; sourceTree = ""; }; + B30F17A52896772A004D40BF /* dlp_srvr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dlp_srvr.h; sourceTree = ""; }; + B30F17A62896772A004D40BF /* dlp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dlp.cpp; sourceTree = ""; }; + B30F17A72896772A004D40BF /* dlp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dlp.h; sourceTree = ""; }; + B30F17A82896772A004D40BF /* dlp_srvr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dlp_srvr.cpp; sourceTree = ""; }; + B30F17A92896772A004D40BF /* dlp_clnt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dlp_clnt.cpp; sourceTree = ""; }; + B30F17AA2896772A004D40BF /* dlp_clnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dlp_clnt.h; sourceTree = ""; }; + B30F17AB2896772A004D40BF /* dlp_fkcl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dlp_fkcl.h; sourceTree = ""; }; + B30F17AD2896772A004D40BF /* hid_spvr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hid_spvr.cpp; sourceTree = ""; }; + B30F17AE2896772A004D40BF /* hid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hid.h; sourceTree = ""; }; + B30F17AF2896772A004D40BF /* hid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hid.cpp; sourceTree = ""; }; + B30F17B02896772A004D40BF /* hid_user.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hid_user.cpp; sourceTree = ""; }; + B30F17B12896772A004D40BF /* hid_spvr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hid_spvr.h; sourceTree = ""; }; + B30F17B22896772B004D40BF /* hid_user.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hid_user.h; sourceTree = ""; }; + B30F17B32896772B004D40BF /* mic_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mic_u.h; sourceTree = ""; }; + B30F17B52896772B004D40BF /* archive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive.h; sourceTree = ""; }; + B30F17B62896772B004D40BF /* file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file.h; sourceTree = ""; }; + B30F17B72896772B004D40BF /* directory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = directory.cpp; sourceTree = ""; }; + B30F17B82896772B004D40BF /* fs_user.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fs_user.cpp; sourceTree = ""; }; + B30F17B92896772B004D40BF /* fs_user.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fs_user.h; sourceTree = ""; }; + B30F17BA2896772B004D40BF /* directory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = directory.h; sourceTree = ""; }; + B30F17BB2896772B004D40BF /* file.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file.cpp; sourceTree = ""; }; + B30F17BC2896772B004D40BF /* archive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive.cpp; sourceTree = ""; }; + B30F17BE2896772B004D40BF /* qtm_sp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qtm_sp.h; sourceTree = ""; }; + B30F17BF2896772B004D40BF /* qtm_sp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qtm_sp.cpp; sourceTree = ""; }; + B30F17C02896772B004D40BF /* qtm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qtm.cpp; sourceTree = ""; }; + B30F17C12896772B004D40BF /* qtm_s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qtm_s.h; sourceTree = ""; }; + B30F17C22896772B004D40BF /* qtm_s.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qtm_s.cpp; sourceTree = ""; }; + B30F17C32896772B004D40BF /* qtm_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qtm_c.cpp; sourceTree = ""; }; + B30F17C42896772B004D40BF /* qtm_u.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qtm_u.cpp; sourceTree = ""; }; + B30F17C52896772B004D40BF /* qtm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qtm.h; sourceTree = ""; }; + B30F17C62896772B004D40BF /* qtm_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qtm_u.h; sourceTree = ""; }; + B30F17C72896772B004D40BF /* qtm_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qtm_c.h; sourceTree = ""; }; + B30F17C92896772B004D40BF /* dsp_dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_dsp.h; sourceTree = ""; }; + B30F17CA2896772B004D40BF /* dsp_dsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp_dsp.cpp; sourceTree = ""; }; + B30F17CB2896772B004D40BF /* soc_u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = soc_u.h; sourceTree = ""; }; + B30F17CC2896772B004D40BF /* romfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romfs.h; sourceTree = ""; }; + B30F17CD2896772B004D40BF /* lock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lock.cpp; sourceTree = ""; }; + B30F17CF2896772B004D40BF /* client_session.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = client_session.cpp; sourceTree = ""; }; + B30F17D02896772B004D40BF /* svc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = svc.cpp; sourceTree = ""; }; + B30F17D12896772B004D40BF /* semaphore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = semaphore.h; sourceTree = ""; }; + B30F17D22896772B004D40BF /* ipc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ipc.cpp; sourceTree = ""; }; + B30F17D32896772B004D40BF /* memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory.cpp; sourceTree = ""; }; + B30F17D42896772B004D40BF /* hle_ipc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hle_ipc.h; sourceTree = ""; }; + B30F17D52896772B004D40BF /* mutex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mutex.cpp; sourceTree = ""; }; + B30F17D62896772B004D40BF /* thread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = thread.cpp; sourceTree = ""; }; + B30F17D72896772B004D40BF /* server_port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = server_port.h; sourceTree = ""; }; + B30F17D82896772B004D40BF /* resource_limit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource_limit.h; sourceTree = ""; }; + B30F17D92896772B004D40BF /* process.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = process.cpp; sourceTree = ""; }; + B30F17DA2896772B004D40BF /* client_session.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client_session.h; sourceTree = ""; }; + B30F17DB2896772B004D40BF /* kernel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = kernel.cpp; sourceTree = ""; }; + B30F17DC2896772B004D40BF /* shared_memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shared_memory.cpp; sourceTree = ""; }; + B30F17DD2896772B004D40BF /* event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = ""; }; + B30F17DE2896772B004D40BF /* shared_page.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shared_page.cpp; sourceTree = ""; }; + B30F17DF2896772B004D40BF /* config_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config_mem.cpp; sourceTree = ""; }; + B30F17E02896772B004D40BF /* server_session.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = server_session.cpp; sourceTree = ""; }; + B30F17E12896772B004D40BF /* client_port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client_port.h; sourceTree = ""; }; + B30F17E22896772B004D40BF /* wait_object.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wait_object.h; sourceTree = ""; }; + B30F17E32896772B004D40BF /* ipc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ipc.h; sourceTree = ""; }; + B30F17E42896772B004D40BF /* vm_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vm_manager.cpp; sourceTree = ""; }; + B30F17E52896772B004D40BF /* object.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = object.cpp; sourceTree = ""; }; + B30F17E62896772B004D40BF /* timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + B30F17E72896772B004D40BF /* client_port.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = client_port.cpp; sourceTree = ""; }; + B30F17E82896772B004D40BF /* errors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = errors.h; sourceTree = ""; }; + B30F17E92896772B004D40BF /* address_arbiter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = address_arbiter.h; sourceTree = ""; }; + B30F17EA2896772B004D40BF /* svc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svc.h; sourceTree = ""; }; + B30F17EB2896772B004D40BF /* hle_ipc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hle_ipc.cpp; sourceTree = ""; }; + B30F17EC2896772B004D40BF /* address_arbiter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = address_arbiter.cpp; sourceTree = ""; }; + B30F17ED2896772B004D40BF /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + B30F17EE2896772B004D40BF /* session.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = session.h; sourceTree = ""; }; + B30F17EF2896772B004D40BF /* thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = ""; }; + B30F17F02896772B004D40BF /* session.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = session.cpp; sourceTree = ""; }; + B30F17F12896772B004D40BF /* resource_limit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = resource_limit.cpp; sourceTree = ""; }; + B30F17F22896772B004D40BF /* svc_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svc_wrapper.h; sourceTree = ""; }; + B30F17F32896772B004D40BF /* handle_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = handle_table.h; sourceTree = ""; }; + B30F17F42896772B004D40BF /* kernel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kernel.h; sourceTree = ""; }; + B30F17F52896772B004D40BF /* wait_object.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wait_object.cpp; sourceTree = ""; }; + B30F17F62896772B004D40BF /* process.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = process.h; sourceTree = ""; }; + B30F17F72896772B004D40BF /* config_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_mem.h; sourceTree = ""; }; + B30F17F82896772B004D40BF /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B30F17F92896772B004D40BF /* object.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = object.h; sourceTree = ""; }; + B30F17FA2896772B004D40BF /* handle_table.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = handle_table.cpp; sourceTree = ""; }; + B30F17FB2896772B004D40BF /* shared_page.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shared_page.h; sourceTree = ""; }; + B30F17FC2896772B004D40BF /* mutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mutex.h; sourceTree = ""; }; + B30F17FD2896772B004D40BF /* event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = event.cpp; sourceTree = ""; }; + B30F17FE2896772B004D40BF /* semaphore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = semaphore.cpp; sourceTree = ""; }; + B30F17FF2896772B004D40BF /* server_port.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = server_port.cpp; sourceTree = ""; }; + B30F18002896772B004D40BF /* server_session.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = server_session.h; sourceTree = ""; }; + B30F18012896772B004D40BF /* shared_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shared_memory.h; sourceTree = ""; }; + B30F18032896772B004D40BF /* recorder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recorder.h; sourceTree = ""; }; + B30F18042896772B004D40BF /* recorder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = recorder.cpp; sourceTree = ""; }; + B30F18052896772B004D40BF /* vm_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_manager.h; sourceTree = ""; }; + B30F18072896772B004D40BF /* emu_window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emu_window.cpp; sourceTree = ""; }; + B30F18082896772B004D40BF /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B30F18092896772B004D40BF /* mic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mic.cpp; sourceTree = ""; }; + B30F180B2896772B004D40BF /* mii_selector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mii_selector.h; sourceTree = ""; }; + B30F180C2896772B004D40BF /* mii_selector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mii_selector.cpp; sourceTree = ""; }; + B30F180D2896772B004D40BF /* swkbd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = swkbd.h; sourceTree = ""; }; + B30F180E2896772B004D40BF /* default_applets.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = default_applets.cpp; sourceTree = ""; }; + B30F180F2896772B004D40BF /* swkbd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = swkbd.cpp; sourceTree = ""; }; + B30F18102896772B004D40BF /* default_applets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = default_applets.h; sourceTree = ""; }; + B30F18122896772B004D40BF /* blank_camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blank_camera.h; sourceTree = ""; }; + B30F18132896772B004D40BF /* interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface.h; sourceTree = ""; }; + B30F18142896772B004D40BF /* interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = interface.cpp; sourceTree = ""; }; + B30F18152896772B004D40BF /* blank_camera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = blank_camera.cpp; sourceTree = ""; }; + B30F18162896772B004D40BF /* factory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = factory.cpp; sourceTree = ""; }; + B30F18172896772B004D40BF /* factory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = factory.h; sourceTree = ""; }; + B30F18182896772B004D40BF /* mic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mic.h; sourceTree = ""; }; + B30F18192896772B004D40BF /* framebuffer_layout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = framebuffer_layout.h; sourceTree = ""; }; + B30F181A2896772B004D40BF /* scope_acquire_context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scope_acquire_context.h; sourceTree = ""; }; + B30F181B2896772B004D40BF /* image_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image_interface.h; sourceTree = ""; }; + B30F181C2896772B004D40BF /* framebuffer_layout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = framebuffer_layout.cpp; sourceTree = ""; }; + B30F181D2896772B004D40BF /* scope_acquire_context.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = scope_acquire_context.cpp; sourceTree = ""; }; + B30F181E2896772B004D40BF /* emu_window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emu_window.h; sourceTree = ""; }; + B30F181F2896772B004D40BF /* mmio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mmio.h; sourceTree = ""; }; + B30F18202896772B004D40BF /* core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core.cpp; sourceTree = ""; }; + B30F18212896772B004D40BF /* settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = settings.h; sourceTree = ""; }; + B30F18222896772B004D40BF /* custom_tex_cache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = custom_tex_cache.cpp; sourceTree = ""; }; + B30F18232896772B004D40BF /* global.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = global.h; sourceTree = ""; }; + B30F18242896772B004D40BF /* movie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; + B30F18262896772B004D40BF /* archive_ncch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_ncch.h; sourceTree = ""; }; + B30F18272896772B004D40BF /* ivfc_archive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ivfc_archive.h; sourceTree = ""; }; + B30F18282896772B004D40BF /* archive_other_savedata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_other_savedata.h; sourceTree = ""; }; + B30F18292896772B004D40BF /* ticket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ticket.h; sourceTree = ""; }; + B30F182A2896772B004D40BF /* archive_savedata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_savedata.h; sourceTree = ""; }; + B30F182B2896772B004D40BF /* archive_sdmc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_sdmc.cpp; sourceTree = ""; }; + B30F182C2896772B004D40BF /* path_parser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = path_parser.h; sourceTree = ""; }; + B30F182D2896772B004D40BF /* archive_other_savedata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_other_savedata.cpp; sourceTree = ""; }; + B30F182E2896772B004D40BF /* archive_sdmcwriteonly.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_sdmcwriteonly.h; sourceTree = ""; }; + B30F182F2896772B004D40BF /* archive_sdmc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_sdmc.h; sourceTree = ""; }; + B30F18302896772B004D40BF /* layered_fs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = layered_fs.h; sourceTree = ""; }; + B30F18312896772B004D40BF /* patch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = patch.cpp; sourceTree = ""; }; + B30F18322896772B004D40BF /* disk_archive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disk_archive.h; sourceTree = ""; }; + B30F18332896772B004D40BF /* savedata_archive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = savedata_archive.h; sourceTree = ""; }; + B30F18342896772B004D40BF /* directory_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = directory_backend.h; sourceTree = ""; }; + B30F18352896772B004D40BF /* savedata_archive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = savedata_archive.cpp; sourceTree = ""; }; + B30F18362896772B004D40BF /* seed_db.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seed_db.h; sourceTree = ""; }; + B30F18372896772B004D40BF /* cia_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cia_common.h; sourceTree = ""; }; + B30F18382896772B004D40BF /* seed_db.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = seed_db.cpp; sourceTree = ""; }; + B30F18392896772B004D40BF /* errors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = errors.h; sourceTree = ""; }; + B30F183A2896772B004D40BF /* archive_systemsavedata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_systemsavedata.cpp; sourceTree = ""; }; + B30F183B2896772B004D40BF /* delay_generator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = delay_generator.h; sourceTree = ""; }; + B30F183C2896772B004D40BF /* cia_container.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cia_container.cpp; sourceTree = ""; }; + B30F183D2896772B004D40BF /* archive_backend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_backend.cpp; sourceTree = ""; }; + B30F183E2896772B004D40BF /* ivfc_archive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ivfc_archive.cpp; sourceTree = ""; }; + B30F183F2896772B004D40BF /* ticket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ticket.cpp; sourceTree = ""; }; + B30F18402896772B004D40BF /* file_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_backend.h; sourceTree = ""; }; + B30F18412896772B004D40BF /* delay_generator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = delay_generator.cpp; sourceTree = ""; }; + B30F18422896772B004D40BF /* layered_fs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = layered_fs.cpp; sourceTree = ""; }; + B30F18432896772B004D40BF /* title_metadata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = title_metadata.cpp; sourceTree = ""; }; + B30F18442896772B004D40BF /* archive_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_backend.h; sourceTree = ""; }; + B30F18452896772B004D40BF /* archive_selfncch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_selfncch.cpp; sourceTree = ""; }; + B30F18462896772B004D40BF /* disk_archive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disk_archive.cpp; sourceTree = ""; }; + B30F18472896772B004D40BF /* archive_source_sd_savedata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_source_sd_savedata.h; sourceTree = ""; }; + B30F18482896772B004D40BF /* archive_sdmcwriteonly.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_sdmcwriteonly.cpp; sourceTree = ""; }; + B30F18492896772B004D40BF /* archive_source_sd_savedata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_source_sd_savedata.cpp; sourceTree = ""; }; + B30F184A2896772B004D40BF /* archive_systemsavedata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_systemsavedata.h; sourceTree = ""; }; + B30F184B2896772B004D40BF /* title_metadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = title_metadata.h; sourceTree = ""; }; + B30F184C2896772B004D40BF /* archive_ncch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_ncch.cpp; sourceTree = ""; }; + B30F184D2896772B004D40BF /* patch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = patch.h; sourceTree = ""; }; + B30F184E2896772B004D40BF /* path_parser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = path_parser.cpp; sourceTree = ""; }; + B30F184F2896772B004D40BF /* archive_extsavedata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_extsavedata.cpp; sourceTree = ""; }; + B30F18502896772B004D40BF /* ncch_container.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ncch_container.cpp; sourceTree = ""; }; + B30F18512896772B004D40BF /* archive_extsavedata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_extsavedata.h; sourceTree = ""; }; + B30F18522896772B004D40BF /* archive_selfncch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_selfncch.h; sourceTree = ""; }; + B30F18532896772B004D40BF /* romfs_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romfs_reader.h; sourceTree = ""; }; + B30F18542896772B004D40BF /* cia_container.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cia_container.h; sourceTree = ""; }; + B30F18552896772B004D40BF /* romfs_reader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = romfs_reader.cpp; sourceTree = ""; }; + B30F18562896772B004D40BF /* archive_savedata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive_savedata.cpp; sourceTree = ""; }; + B30F18572896772B004D40BF /* ncch_container.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ncch_container.h; sourceTree = ""; }; + B30F18592896772B004D40BF /* backend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = backend.cpp; sourceTree = ""; }; + B30F185A2896772B004D40BF /* ffmpeg_backend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ffmpeg_backend.cpp; sourceTree = ""; }; + B30F185B2896772B004D40BF /* backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backend.h; sourceTree = ""; }; + B30F185C2896772B004D40BF /* ffmpeg_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ffmpeg_backend.h; sourceTree = ""; }; + B30F185D2896772B004D40BF /* 3ds.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 3ds.h; sourceTree = ""; }; + B30F185E2896772B004D40BF /* core_timing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_timing.cpp; sourceTree = ""; }; + B30F185F2896772B004D40BF /* custom_tex_cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = custom_tex_cache.h; sourceTree = ""; }; + B30F18612896772B004D40BF /* cheats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cheats.cpp; sourceTree = ""; }; + B30F18622896772B004D40BF /* cheats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheats.h; sourceTree = ""; }; + B30F18632896772B004D40BF /* gateway_cheat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gateway_cheat.cpp; sourceTree = ""; }; + B30F18642896772B004D40BF /* cheat_base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheat_base.h; sourceTree = ""; }; + B30F18652896772B004D40BF /* cheat_base.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cheat_base.cpp; sourceTree = ""; }; + B30F18662896772B004D40BF /* gateway_cheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gateway_cheat.h; sourceTree = ""; }; + B30F18682896772B004D40BF /* ncch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ncch.h; sourceTree = ""; }; + B30F18692896772B004D40BF /* ncch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ncch.cpp; sourceTree = ""; }; + B30F186A2896772B004D40BF /* smdh.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smdh.cpp; sourceTree = ""; }; + B30F186B2896772B004D40BF /* elf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf.cpp; sourceTree = ""; }; + B30F186C2896772B004D40BF /* 3dsx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 3dsx.cpp; sourceTree = ""; }; + B30F186D2896772B004D40BF /* elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = ""; }; + B30F186E2896772B004D40BF /* 3dsx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 3dsx.h; sourceTree = ""; }; + B30F186F2896772B004D40BF /* loader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = loader.h; sourceTree = ""; }; + B30F18702896772B004D40BF /* smdh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smdh.h; sourceTree = ""; }; + B30F18712896772B004D40BF /* loader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = loader.cpp; sourceTree = ""; }; + B30F18722896772B004D40BF /* core_timing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_timing.h; sourceTree = ""; }; + B30F18732896772B004D40BF /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B30F18742896772B004D40BF /* savestate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = savestate.cpp; sourceTree = ""; }; + B30F18762896772B004D40BF /* arm_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_interface.h; sourceTree = ""; }; + B30F18782896772B004D40BF /* arm_dynarmic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dynarmic.cpp; sourceTree = ""; }; + B30F18792896772B004D40BF /* arm_dynarmic_cp15.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dynarmic_cp15.h; sourceTree = ""; }; + B30F187A2896772B004D40BF /* arm_dynarmic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dynarmic.h; sourceTree = ""; }; + B30F187B2896772B004D40BF /* arm_dynarmic_cp15.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dynarmic_cp15.cpp; sourceTree = ""; }; + B30F187D2896772B004D40BF /* arm_dyncom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dyncom.cpp; sourceTree = ""; }; + B30F187E2896772B004D40BF /* arm_dyncom_dec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dyncom_dec.cpp; sourceTree = ""; }; + B30F187F2896772B004D40BF /* arm_dyncom_run.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dyncom_run.h; sourceTree = ""; }; + B30F18802896772B004D40BF /* arm_dyncom_trans.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dyncom_trans.h; sourceTree = ""; }; + B30F18812896772B004D40BF /* arm_dyncom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dyncom.h; sourceTree = ""; }; + B30F18822896772B004D40BF /* arm_dyncom_dec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dyncom_dec.h; sourceTree = ""; }; + B30F18832896772B004D40BF /* arm_dyncom_trans.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dyncom_trans.cpp; sourceTree = ""; }; + B30F18842896772B004D40BF /* arm_dyncom_interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dyncom_interpreter.h; sourceTree = ""; }; + B30F18852896772B004D40BF /* arm_dyncom_interpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dyncom_interpreter.cpp; sourceTree = ""; }; + B30F18862896772B004D40BF /* arm_dyncom_thumb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dyncom_thumb.cpp; sourceTree = ""; }; + B30F18872896772B004D40BF /* arm_dyncom_thumb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_dyncom_thumb.h; sourceTree = ""; }; + B30F18892896772B004D40BF /* armstate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = armstate.cpp; sourceTree = ""; }; + B30F188A2896772B004D40BF /* armsupp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armsupp.h; sourceTree = ""; }; + B30F188C2896772B004D40BF /* vfp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfp.h; sourceTree = ""; }; + B30F188D2896772B004D40BF /* vfpdouble.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfpdouble.cpp; sourceTree = ""; }; + B30F188E2896772B004D40BF /* vfpinstr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfpinstr.cpp; sourceTree = ""; }; + B30F188F2896772B004D40BF /* asm_vfp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_vfp.h; sourceTree = ""; }; + B30F18902896772B004D40BF /* vfp_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfp_helper.h; sourceTree = ""; }; + B30F18912896772B004D40BF /* vfpsingle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfpsingle.cpp; sourceTree = ""; }; + B30F18922896772B004D40BF /* vfp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfp.cpp; sourceTree = ""; }; + B30F18932896772B004D40BF /* arm_regformat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_regformat.h; sourceTree = ""; }; + B30F18942896772B004D40BF /* armstate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armstate.h; sourceTree = ""; }; + B30F18952896772B004D40BF /* armsupp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = armsupp.cpp; sourceTree = ""; }; + B30F18962896772B004D40BF /* perf_stats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = perf_stats.h; sourceTree = ""; }; + B30F18982896772B004D40BF /* udp_server.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = udp_server.cpp; sourceTree = ""; }; + B30F18992896772B004D40BF /* packet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = packet.cpp; sourceTree = ""; }; + B30F189A2896772B004D40BF /* rpc_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpc_server.h; sourceTree = ""; }; + B30F189B2896772B004D40BF /* packet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = packet.h; sourceTree = ""; }; + B30F189C2896772B004D40BF /* rpc_server.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rpc_server.cpp; sourceTree = ""; }; + B30F189D2896772B004D40BF /* server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = server.h; sourceTree = ""; }; + B30F189E2896772B004D40BF /* udp_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = udp_server.h; sourceTree = ""; }; + B30F189F2896772B004D40BF /* server.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = server.cpp; sourceTree = ""; }; + B30F18A02896772B004D40BF /* perf_stats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = perf_stats.cpp; sourceTree = ""; }; + B30F18A22896772B004D40BF /* gdbstub.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdbstub.cpp; sourceTree = ""; }; + B30F18A32896772B004D40BF /* gdbstub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdbstub.h; sourceTree = ""; }; + B30F18A42896772B004D40BF /* savestate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = savestate.h; sourceTree = ""; }; + B30F18A52896772B004D40BF /* settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = settings.cpp; sourceTree = ""; }; + B30F18A62896772B004D40BF /* telemetry_session.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = telemetry_session.cpp; sourceTree = ""; }; + B30F18A72896772B004D40BF /* movie.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = movie.cpp; sourceTree = ""; }; + B30F18A92896772B004D40BF /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B30F18AA2896772B004D40BF /* compatdb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = compatdb.cpp; sourceTree = ""; }; + B30F18AB2896772B004D40BF /* loading_screen.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = loading_screen.ui; sourceTree = ""; }; + B30F18AC2896772B004D40BF /* hotkeys.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hotkeys.cpp; sourceTree = ""; }; + B30F18AE2896772B004D40BF /* configure_web.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_web.cpp; sourceTree = ""; }; + B30F18AF2896772B004D40BF /* configure_system.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_system.cpp; sourceTree = ""; }; + B30F18B02896772B004D40BF /* configure_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_audio.h; sourceTree = ""; }; + B30F18B12896772B004D40BF /* configure_hotkeys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_hotkeys.h; sourceTree = ""; }; + B30F18B22896772B004D40BF /* configure_general.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_general.h; sourceTree = ""; }; + B30F18B32896772B004D40BF /* configure_storage.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_storage.ui; sourceTree = ""; }; + B30F18B42896772B004D40BF /* configure_motion_touch.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_motion_touch.ui; sourceTree = ""; }; + B30F18B52896772B004D40BF /* configure_enhancements.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_enhancements.h; sourceTree = ""; }; + B30F18B62896772B004D40BF /* configure_general.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_general.cpp; sourceTree = ""; }; + B30F18B72896772B004D40BF /* configure_system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_system.h; sourceTree = ""; }; + B30F18B82896772B004D40BF /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B30F18B92896772B004D40BF /* configure_hotkeys.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_hotkeys.cpp; sourceTree = ""; }; + B30F18BA2896772B004D40BF /* configure_graphics.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_graphics.ui; sourceTree = ""; }; + B30F18BB2896772B004D40BF /* configure_audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_audio.cpp; sourceTree = ""; }; + B30F18BC2896772B004D40BF /* configure_audio.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_audio.ui; sourceTree = ""; }; + B30F18BD2896772B004D40BF /* configure.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure.ui; sourceTree = ""; }; + B30F18BE2896772B004D40BF /* configure_general.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_general.ui; sourceTree = ""; }; + B30F18BF2896772B004D40BF /* configure_input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_input.cpp; sourceTree = ""; }; + B30F18C02896772B004D40BF /* configure_input.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_input.ui; sourceTree = ""; }; + B30F18C12896772B004D40BF /* configure_system.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_system.ui; sourceTree = ""; }; + B30F18C22896772B004D40BF /* configure_storage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_storage.cpp; sourceTree = ""; }; + B30F18C32896772B004D40BF /* configure_debug.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_debug.ui; sourceTree = ""; }; + B30F18C42896772B004D40BF /* configure_graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_graphics.h; sourceTree = ""; }; + B30F18C52896772B004D40BF /* configure_debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_debug.h; sourceTree = ""; }; + B30F18C62896772B004D40BF /* configure_ui.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_ui.ui; sourceTree = ""; }; + B30F18C72896772B004D40BF /* configure_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_input.h; sourceTree = ""; }; + B30F18C82896772B004D40BF /* configure_motion_touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_motion_touch.h; sourceTree = ""; }; + B30F18C92896772B004D40BF /* configure_camera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_camera.cpp; sourceTree = ""; }; + B30F18CA2896772B004D40BF /* configure_ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_ui.h; sourceTree = ""; }; + B30F18CB2896772B004D40BF /* config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config.cpp; sourceTree = ""; }; + B30F18CC2896772B004D40BF /* configure_camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_camera.h; sourceTree = ""; }; + B30F18CD2896772B004D40BF /* configure_touch_from_button.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_touch_from_button.ui; sourceTree = ""; }; + B30F18CE2896772B004D40BF /* configure_touch_widget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_touch_widget.h; sourceTree = ""; }; + B30F18CF2896772B004D40BF /* configure_web.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_web.ui; sourceTree = ""; }; + B30F18D02896772B004D40BF /* configure_touch_from_button.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_touch_from_button.cpp; sourceTree = ""; }; + B30F18D12896772B004D40BF /* configure_ui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_ui.cpp; sourceTree = ""; }; + B30F18D22896772B004D40BF /* configure_hotkeys.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_hotkeys.ui; sourceTree = ""; }; + B30F18D32896772B004D40BF /* configure_touch_from_button.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_touch_from_button.h; sourceTree = ""; }; + B30F18D42896772B004D40BF /* configure_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_dialog.h; sourceTree = ""; }; + B30F18D52896772B004D40BF /* configure_enhancements.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_enhancements.cpp; sourceTree = ""; }; + B30F18D62896772B004D40BF /* configure_web.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_web.h; sourceTree = ""; }; + B30F18D72896772B004D40BF /* configure_motion_touch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_motion_touch.cpp; sourceTree = ""; }; + B30F18D82896772B004D40BF /* configure_camera.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_camera.ui; sourceTree = ""; }; + B30F18D92896772B004D40BF /* configure_graphics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_graphics.cpp; sourceTree = ""; }; + B30F18DA2896772B004D40BF /* configure_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_dialog.cpp; sourceTree = ""; }; + B30F18DB2896772B004D40BF /* configure_debug.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = configure_debug.cpp; sourceTree = ""; }; + B30F18DC2896772B004D40BF /* configure_storage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configure_storage.h; sourceTree = ""; }; + B30F18DD2896772B004D40BF /* configure_enhancements.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_enhancements.ui; sourceTree = ""; }; + B30F18DE2896772B004D40BF /* cheats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cheats.cpp; sourceTree = ""; }; + B30F18E02896772B004D40BF /* movie_record_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = movie_record_dialog.cpp; sourceTree = ""; }; + B30F18E12896772B004D40BF /* movie_play_dialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = movie_play_dialog.ui; sourceTree = ""; }; + B30F18E22896772B004D40BF /* movie_record_dialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = movie_record_dialog.ui; sourceTree = ""; }; + B30F18E32896772B004D40BF /* movie_record_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = movie_record_dialog.h; sourceTree = ""; }; + B30F18E42896772B004D40BF /* movie_play_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = movie_play_dialog.cpp; sourceTree = ""; }; + B30F18E52896772B004D40BF /* movie_play_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = movie_play_dialog.h; sourceTree = ""; }; + B30F18E62896772B004D40BF /* loading_screen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = loading_screen.cpp; sourceTree = ""; }; + B30F18E82896772B004D40BF /* mii_selector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mii_selector.h; sourceTree = ""; }; + B30F18E92896772B004D40BF /* mii_selector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mii_selector.cpp; sourceTree = ""; }; + B30F18EA2896772B004D40BF /* swkbd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = swkbd.h; sourceTree = ""; }; + B30F18EB2896772B004D40BF /* swkbd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = swkbd.cpp; sourceTree = ""; }; + B30F18EC2896772B004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F18ED2896772B004D40BF /* macos_authorization.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = macos_authorization.mm; sourceTree = ""; }; + B30F18EE2896772B004D40BF /* uisettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uisettings.h; sourceTree = ""; }; + B30F18F12896772B004D40BF /* sequence_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sequence_dialog.h; sourceTree = ""; }; + B30F18F22896772B004D40BF /* sequence_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sequence_dialog.cpp; sourceTree = ""; }; + B30F18F32896772B004D40BF /* util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = util.cpp; sourceTree = ""; }; + B30F18F42896772B004D40BF /* clickable_label.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = clickable_label.cpp; sourceTree = ""; }; + B30F18F52896772B004D40BF /* spinbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spinbox.h; sourceTree = ""; }; + B30F18F62896772B004D40BF /* clickable_label.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clickable_label.h; sourceTree = ""; }; + B30F18F72896772B004D40BF /* spinbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spinbox.cpp; sourceTree = ""; }; + B30F18F82896772B004D40BF /* util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; + B30F18F92896772B004D40BF /* aboutdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aboutdialog.cpp; sourceTree = ""; }; + B30F18FA2896772B004D40BF /* cheats.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = cheats.ui; sourceTree = ""; }; + B30F18FB2896772B004D40BF /* qt_image_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qt_image_interface.h; sourceTree = ""; }; + B30F18FD2896772B004D40BF /* still_image_camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = still_image_camera.h; sourceTree = ""; }; + B30F18FE2896772B004D40BF /* qt_multimedia_camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qt_multimedia_camera.h; sourceTree = ""; }; + B30F18FF2896772B004D40BF /* still_image_camera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = still_image_camera.cpp; sourceTree = ""; }; + B30F19002896772B004D40BF /* qt_camera_base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qt_camera_base.h; sourceTree = ""; }; + B30F19012896772B004D40BF /* qt_camera_base.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qt_camera_base.cpp; sourceTree = ""; }; + B30F19022896772B004D40BF /* qt_multimedia_camera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qt_multimedia_camera.cpp; sourceTree = ""; }; + B30F19032896772B004D40BF /* camera_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera_util.h; sourceTree = ""; }; + B30F19042896772B004D40BF /* camera_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = camera_util.cpp; sourceTree = ""; }; + B30F19052896772B004D40BF /* compatdb.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = compatdb.ui; sourceTree = ""; }; + B30F19062896772B004D40BF /* discord.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = discord.h; sourceTree = ""; }; + B30F19072896772B004D40BF /* hotkeys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hotkeys.h; sourceTree = ""; }; + B30F19082896772B004D40BF /* game_list.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = game_list.cpp; sourceTree = ""; }; + B30F19092896772B004D40BF /* compatibility_list.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = compatibility_list.cpp; sourceTree = ""; }; + B30F190A2896772B004D40BF /* bootmanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bootmanager.h; sourceTree = ""; }; + B30F190B2896772B004D40BF /* game_list_p.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_list_p.h; sourceTree = ""; }; + B30F190C2896772B004D40BF /* aboutdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = aboutdialog.ui; sourceTree = ""; }; + B30F190D2896772B004D40BF /* bootmanager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bootmanager.cpp; sourceTree = ""; }; + B30F190F2896772B004D40BF /* updater.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = updater.cpp; sourceTree = ""; }; + B30F19102896772B004D40BF /* updater_p.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = updater_p.h; sourceTree = ""; }; + B30F19112896772B004D40BF /* updater.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = updater.h; sourceTree = ""; }; + B30F19122896772B004D40BF /* qt_image_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qt_image_interface.cpp; sourceTree = ""; }; + B30F19132896772B004D40BF /* discord_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = discord_impl.h; sourceTree = ""; }; + B30F19142896772B004D40BF /* game_list_worker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_list_worker.h; sourceTree = ""; }; + B30F19162896772B004D40BF /* option_set_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = option_set_dialog.cpp; sourceTree = ""; }; + B30F19172896772B004D40BF /* dumping_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dumping_dialog.h; sourceTree = ""; }; + B30F19182896772B004D40BF /* option_set_dialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = option_set_dialog.ui; sourceTree = ""; }; + B30F19192896772B004D40BF /* dumping_dialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dumping_dialog.ui; sourceTree = ""; }; + B30F191A2896772B004D40BF /* options_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = options_dialog.h; sourceTree = ""; }; + B30F191B2896772B004D40BF /* options_dialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = options_dialog.ui; sourceTree = ""; }; + B30F191C2896772B004D40BF /* dumping_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dumping_dialog.cpp; sourceTree = ""; }; + B30F191D2896772B004D40BF /* option_set_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = option_set_dialog.h; sourceTree = ""; }; + B30F191E2896772B004D40BF /* options_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = options_dialog.cpp; sourceTree = ""; }; + B30F191F2896772B004D40BF /* aboutdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aboutdialog.h; sourceTree = ""; }; + B30F19202896772B004D40BF /* cheats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheats.h; sourceTree = ""; }; + B30F19212896772B004D40BF /* citra-qt.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "citra-qt.rc"; sourceTree = ""; }; + B30F19222896772B004D40BF /* compatibility_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compatibility_list.h; sourceTree = ""; }; + B30F19232896772B004D40BF /* uisettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uisettings.cpp; sourceTree = ""; }; + B30F19242896772B004D40BF /* game_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_list.h; sourceTree = ""; }; + B30F19262896772B004D40BF /* registers.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = registers.ui; sourceTree = ""; }; + B30F19272896772B004D40BF /* console.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = ""; }; + B30F19282896772B004D40BF /* profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cpp; sourceTree = ""; }; + B30F19292896772B004D40BF /* lle_service_modules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lle_service_modules.h; sourceTree = ""; }; + B30F192A2896772B004D40BF /* console.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = console.cpp; sourceTree = ""; }; + B30F192B2896772B004D40BF /* lle_service_modules.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lle_service_modules.cpp; sourceTree = ""; }; + B30F192C2896772B004D40BF /* registers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = registers.cpp; sourceTree = ""; }; + B30F192D2896772B004D40BF /* registers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = registers.h; sourceTree = ""; }; + B30F192E2896772B004D40BF /* wait_tree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wait_tree.cpp; sourceTree = ""; }; + B30F192F2896772B004D40BF /* wait_tree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wait_tree.h; sourceTree = ""; }; + B30F19312896772B004D40BF /* record_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = record_dialog.h; sourceTree = ""; }; + B30F19322896772B004D40BF /* recorder.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = recorder.ui; sourceTree = ""; }; + B30F19332896772B004D40BF /* recorder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recorder.h; sourceTree = ""; }; + B30F19342896772B004D40BF /* record_dialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = record_dialog.ui; sourceTree = ""; }; + B30F19352896772B004D40BF /* record_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = record_dialog.cpp; sourceTree = ""; }; + B30F19362896772B004D40BF /* recorder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = recorder.cpp; sourceTree = ""; }; + B30F19382896772B004D40BF /* graphics_tracing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_tracing.cpp; sourceTree = ""; }; + B30F19392896772B004D40BF /* graphics_cmdlists.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics_cmdlists.h; sourceTree = ""; }; + B30F193A2896772B004D40BF /* graphics_vertex_shader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_vertex_shader.cpp; sourceTree = ""; }; + B30F193B2896772B004D40BF /* graphics_tracing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics_tracing.h; sourceTree = ""; }; + B30F193C2896772B004D40BF /* graphics_breakpoints.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_breakpoints.cpp; sourceTree = ""; }; + B30F193D2896772B004D40BF /* graphics_breakpoints_p.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics_breakpoints_p.h; sourceTree = ""; }; + B30F193E2896772B004D40BF /* graphics_vertex_shader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics_vertex_shader.h; sourceTree = ""; }; + B30F193F2896772B004D40BF /* graphics_breakpoint_observer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics_breakpoint_observer.h; sourceTree = ""; }; + B30F19402896772B004D40BF /* graphics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = graphics.cpp; sourceTree = ""; }; + B30F19412896772B004D40BF /* graphics_surface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics_surface.h; sourceTree = ""; }; + B30F19422896772B004D40BF /* graphics_surface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_surface.cpp; sourceTree = ""; }; + B30F19432896772B004D40BF /* graphics_cmdlists.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_cmdlists.cpp; sourceTree = ""; }; + B30F19442896772B004D40BF /* graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics.h; sourceTree = ""; }; + B30F19452896772B004D40BF /* graphics_breakpoint_observer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_breakpoint_observer.cpp; sourceTree = ""; }; + B30F19462896772B004D40BF /* graphics_breakpoints.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics_breakpoints.h; sourceTree = ""; }; + B30F19472896772B004D40BF /* profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = ""; }; + B30F19482896772B004D40BF /* main.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = main.ui; sourceTree = ""; }; + B30F19492896772B004D40BF /* discord_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = discord_impl.cpp; sourceTree = ""; }; + B30F194A2896772B004D40BF /* compatdb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compatdb.h; sourceTree = ""; }; + B30F194B2896772B004D40BF /* game_list_worker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = game_list_worker.cpp; sourceTree = ""; }; + B30F194C2896772B004D40BF /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B30F194E2896772B004D40BF /* chat_room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chat_room.h; sourceTree = ""; }; + B30F194F2896772B004D40BF /* client_room.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = client_room.cpp; sourceTree = ""; }; + B30F19502896772B004D40BF /* chat_room.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = chat_room.ui; sourceTree = ""; }; + B30F19512896772B004D40BF /* direct_connect.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = direct_connect.ui; sourceTree = ""; }; + B30F19522896772B004D40BF /* host_room.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = host_room.cpp; sourceTree = ""; }; + B30F19532896772B004D40BF /* moderation_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = moderation_dialog.h; sourceTree = ""; }; + B30F19542896772B004D40BF /* message.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = message.cpp; sourceTree = ""; }; + B30F19552896772B004D40BF /* moderation_dialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = moderation_dialog.ui; sourceTree = ""; }; + B30F19562896772B004D40BF /* client_room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client_room.h; sourceTree = ""; }; + B30F19572896772B004D40BF /* lobby.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lobby.h; sourceTree = ""; }; + B30F19582896772B004D40BF /* moderation_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = moderation_dialog.cpp; sourceTree = ""; }; + B30F19592896772B004D40BF /* state.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = state.cpp; sourceTree = ""; }; + B30F195A2896772B004D40BF /* message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message.h; sourceTree = ""; }; + B30F195B2896772B004D40BF /* client_room.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = client_room.ui; sourceTree = ""; }; + B30F195C2896772B004D40BF /* validation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = validation.h; sourceTree = ""; }; + B30F195D2896772B004D40BF /* direct_connect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = direct_connect.cpp; sourceTree = ""; }; + B30F195E2896772B004D40BF /* host_room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = host_room.h; sourceTree = ""; }; + B30F195F2896772B004D40BF /* direct_connect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = direct_connect.h; sourceTree = ""; }; + B30F19602896772B004D40BF /* lobby.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lobby.ui; sourceTree = ""; }; + B30F19612896772B004D40BF /* lobby.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lobby.cpp; sourceTree = ""; }; + B30F19622896772B004D40BF /* chat_room.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = chat_room.cpp; sourceTree = ""; }; + B30F19632896772B004D40BF /* state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = state.h; sourceTree = ""; }; + B30F19642896772B004D40BF /* lobby_p.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lobby_p.h; sourceTree = ""; }; + B30F19652896772B004D40BF /* host_room.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = host_room.ui; sourceTree = ""; }; + B30F19662896772B004D40BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B30F19672896772B004D40BF /* macos_authorization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macos_authorization.h; sourceTree = ""; }; + B30F19682896772B004D40BF /* loading_screen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = loading_screen.h; sourceTree = ""; }; + B30F196A2896772B004D40BF /* network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = network.cpp; sourceTree = ""; }; + B30F196B2896772B004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F196C2896772B004D40BF /* verify_user.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = verify_user.cpp; sourceTree = ""; }; + B30F196D2896772B004D40BF /* announce_multiplayer_session.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = announce_multiplayer_session.cpp; sourceTree = ""; }; + B30F196E2896772B004D40BF /* room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = room.h; sourceTree = ""; }; + B30F196F2896772B004D40BF /* room_member.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = room_member.cpp; sourceTree = ""; }; + B30F19702896772B004D40BF /* verify_user.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = verify_user.h; sourceTree = ""; }; + B30F19712896772B004D40BF /* packet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = packet.cpp; sourceTree = ""; }; + B30F19722896772B004D40BF /* room.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = room.cpp; sourceTree = ""; }; + B30F19732896772B004D40BF /* network.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = network.h; sourceTree = ""; }; + B30F19742896772B004D40BF /* room_member.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = room_member.h; sourceTree = ""; }; + B30F19752896772B004D40BF /* packet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = packet.h; sourceTree = ""; }; + B30F19762896772B004D40BF /* announce_multiplayer_session.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = announce_multiplayer_session.h; sourceTree = ""; }; + B30F19772896772B004D40BF /* network_settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = network_settings.cpp; sourceTree = ""; }; + B30F19782896772B004D40BF /* network_settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = network_settings.h; sourceTree = ""; }; + B30F197B2896772B004D40BF /* audio_fixures.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_fixures.h; sourceTree = ""; }; + B30F197C2896772B004D40BF /* decoder_tests.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decoder_tests.cpp; sourceTree = ""; }; + B30F197D2896772B004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F19802896772B004D40BF /* memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory.cpp; sourceTree = ""; }; + B30F19812896772B004D40BF /* vm_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vm_manager.cpp; sourceTree = ""; }; + B30F19842896772B004D40BF /* hle_ipc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hle_ipc.cpp; sourceTree = ""; }; + B30F19862896772B004D40BF /* path_parser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = path_parser.cpp; sourceTree = ""; }; + B30F19872896772B004D40BF /* core_timing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_timing.cpp; sourceTree = ""; }; + B30F19892896772B004D40BF /* arm_test_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_test_common.h; sourceTree = ""; }; + B30F198A2896772B004D40BF /* arm_test_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_test_common.cpp; sourceTree = ""; }; + B30F198C2896772B004D40BF /* arm_dyncom_vfp_tests.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_dyncom_vfp_tests.cpp; sourceTree = ""; }; + B30F198D2896772B004D40BF /* vfp_vadd_f32.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = vfp_vadd_f32.inc; sourceTree = ""; }; + B30F19902896772B004D40BF /* shader_jit_x64_compiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader_jit_x64_compiler.cpp; sourceTree = ""; }; + B30F19922896772B004D40BF /* param_package.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = param_package.cpp; sourceTree = ""; }; + B30F19932896772B004D40BF /* bit_field.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bit_field.cpp; sourceTree = ""; }; + B30F19942896772B004D40BF /* tests.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tests.cpp; sourceTree = ""; }; + B30F19962896772B004D40BF /* primitive_assembly.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = primitive_assembly.cpp; sourceTree = ""; }; + B30F19972896772B004D40BF /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B30F19982896772B004D40BF /* regs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = regs.cpp; sourceTree = ""; }; + B30F19992896772B004D40BF /* regs_texturing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regs_texturing.h; sourceTree = ""; }; + B30F199A2896772B004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F199B2896772B004D40BF /* vertex_loader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vertex_loader.h; sourceTree = ""; }; + B30F199C2896772B004D40BF /* pica_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pica_types.h; sourceTree = ""; }; + B30F199D2896772B004D40BF /* command_processor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = command_processor.cpp; sourceTree = ""; }; + B30F199E2896772B004D40BF /* geometry_pipeline.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = geometry_pipeline.cpp; sourceTree = ""; }; + B30F199F2896772B004D40BF /* renderer_base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = renderer_base.h; sourceTree = ""; }; + B30F19A12896772B004D40BF /* texture_downloader_es.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture_downloader_es.h; sourceTree = ""; }; + B30F19A22896772B004D40BF /* gl_vars.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_vars.cpp; sourceTree = ""; }; + B30F19A32896772B004D40BF /* gl_shader_gen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_shader_gen.cpp; sourceTree = ""; }; + B30F19A42896772B004D40BF /* gl_shader_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_shader_manager.cpp; sourceTree = ""; }; + B30F19A52896772B004D40BF /* gl_vars.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_vars.h; sourceTree = ""; }; + B30F19A62896772B004D40BF /* gl_shader_disk_cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_shader_disk_cache.h; sourceTree = ""; }; + B30F19A72896772B004D40BF /* frame_dumper_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frame_dumper_opengl.h; sourceTree = ""; }; + B30F19A82896772B004D40BF /* post_processing_opengl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = post_processing_opengl.cpp; sourceTree = ""; }; + B30F19A92896772B004D40BF /* depth_to_color.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = depth_to_color.vert; sourceTree = ""; }; + B30F19AA2896772B004D40BF /* texture_downloader_es.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture_downloader_es.cpp; sourceTree = ""; }; + B30F19AB2896772B004D40BF /* post_processing_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = post_processing_opengl.h; sourceTree = ""; }; + B30F19AC2896772B004D40BF /* gl_rasterizer_cache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_rasterizer_cache.cpp; sourceTree = ""; }; + B30F19AD2896772B004D40BF /* renderer_opengl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = renderer_opengl.cpp; sourceTree = ""; }; + B30F19B02896772B004D40BF /* bicubic.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = bicubic.frag; sourceTree = ""; }; + B30F19B12896772B004D40BF /* bicubic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bicubic.cpp; sourceTree = ""; }; + B30F19B22896772B004D40BF /* bicubic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bicubic.h; sourceTree = ""; }; + B30F19B32896772B004D40BF /* texture_filter_base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture_filter_base.h; sourceTree = ""; }; + B30F19B52896772B004D40BF /* x_gradient.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = x_gradient.frag; sourceTree = ""; }; + B30F19B62896772B004D40BF /* anime4k_ultrafast.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = anime4k_ultrafast.cpp; sourceTree = ""; }; + B30F19B72896772B004D40BF /* anime4k_ultrafast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = anime4k_ultrafast.h; sourceTree = ""; }; + B30F19B82896772B004D40BF /* y_gradient.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = y_gradient.frag; sourceTree = ""; }; + B30F19B92896772B004D40BF /* refine.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = refine.frag; sourceTree = ""; }; + B30F19BB2896772B004D40BF /* xbrz_freescale.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = xbrz_freescale.frag; sourceTree = ""; }; + B30F19BC2896772B004D40BF /* xbrz_freescale.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbrz_freescale.h; sourceTree = ""; }; + B30F19BD2896772B004D40BF /* xbrz_freescale.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = xbrz_freescale.cpp; sourceTree = ""; }; + B30F19BE2896772B004D40BF /* xbrz_freescale.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = xbrz_freescale.vert; sourceTree = ""; }; + B30F19C02896772B004D40BF /* scale_force.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = scale_force.cpp; sourceTree = ""; }; + B30F19C12896772B004D40BF /* scale_force.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = scale_force.frag; sourceTree = ""; }; + B30F19C22896772B004D40BF /* scale_force.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scale_force.h; sourceTree = ""; }; + B30F19C32896772B004D40BF /* tex_coord.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = tex_coord.vert; sourceTree = ""; }; + B30F19C42896772B004D40BF /* texture_filterer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture_filterer.cpp; sourceTree = ""; }; + B30F19C52896772B004D40BF /* texture_filterer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture_filterer.h; sourceTree = ""; }; + B30F19C62896772B004D40BF /* gl_surface_params.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_surface_params.h; sourceTree = ""; }; + B30F19C72896772B004D40BF /* gl_format_reinterpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_format_reinterpreter.h; sourceTree = ""; }; + B30F19C82896772B004D40BF /* gl_surface_params.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_surface_params.cpp; sourceTree = ""; }; + B30F19C92896772B004D40BF /* gl_shader_decompiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_shader_decompiler.h; sourceTree = ""; }; + B30F19CA2896772B004D40BF /* depth_to_color.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = depth_to_color.frag; sourceTree = ""; }; + B30F19CB2896772B004D40BF /* gl_shader_decompiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_shader_decompiler.cpp; sourceTree = ""; }; + B30F19CC2896772B004D40BF /* gl_shader_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_shader_util.cpp; sourceTree = ""; }; + B30F19CD2896772B004D40BF /* gl_shader_gen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_shader_gen.h; sourceTree = ""; }; + B30F19CE2896772B004D40BF /* gl_shader_disk_cache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_shader_disk_cache.cpp; sourceTree = ""; }; + B30F19CF2896772B004D40BF /* gl_format_reinterpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_format_reinterpreter.cpp; sourceTree = ""; }; + B30F19D02896772B004D40BF /* ds_to_color.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = ds_to_color.frag; sourceTree = ""; }; + B30F19D12896772B004D40BF /* gl_rasterizer_cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_rasterizer_cache.h; sourceTree = ""; }; + B30F19D22896772B004D40BF /* gl_shader_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_shader_manager.h; sourceTree = ""; }; + B30F19D32896772B004D40BF /* gl_stream_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_stream_buffer.h; sourceTree = ""; }; + B30F19D42896772B004D40BF /* gl_rasterizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_rasterizer.cpp; sourceTree = ""; }; + B30F19D52896772B004D40BF /* gl_shader_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_shader_util.h; sourceTree = ""; }; + B30F19D62896772B004D40BF /* gl_resource_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_resource_manager.h; sourceTree = ""; }; + B30F19D72896772B004D40BF /* gl_rasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_rasterizer.h; sourceTree = ""; }; + B30F19D82896772B004D40BF /* frame_dumper_opengl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = frame_dumper_opengl.cpp; sourceTree = ""; }; + B30F19D92896772B004D40BF /* gl_resource_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_resource_manager.cpp; sourceTree = ""; }; + B30F19DA2896772B004D40BF /* pica_to_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pica_to_gl.h; sourceTree = ""; }; + B30F19DB2896772B004D40BF /* renderer_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = renderer_opengl.h; sourceTree = ""; }; + B30F19DC2896772B004D40BF /* gl_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_state.h; sourceTree = ""; }; + B30F19DD2896772B004D40BF /* gl_stream_buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_stream_buffer.cpp; sourceTree = ""; }; + B30F19DE2896772B004D40BF /* gl_state.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_state.cpp; sourceTree = ""; }; + B30F19DF2896772B004D40BF /* rasterizer_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rasterizer_interface.h; sourceTree = ""; }; + B30F19E02896772B004D40BF /* pica.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pica.cpp; sourceTree = ""; }; + B30F19E12896772B004D40BF /* video_core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = video_core.cpp; sourceTree = ""; }; + B30F19E22896772B004D40BF /* regs_pipeline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regs_pipeline.h; sourceTree = ""; }; + B30F19E32896772B004D40BF /* command_processor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = command_processor.h; sourceTree = ""; }; + B30F19E52896772B004D40BF /* debug_utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debug_utils.cpp; sourceTree = ""; }; + B30F19E62896772B004D40BF /* debug_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug_utils.h; sourceTree = ""; }; + B30F19E72896772B004D40BF /* gpu_debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_debugger.h; sourceTree = ""; }; + B30F19E82896772B004D40BF /* regs_rasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regs_rasterizer.h; sourceTree = ""; }; + B30F19E92896772B004D40BF /* video_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_core.h; sourceTree = ""; }; + B30F19EA2896772B004D40BF /* geometry_pipeline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = geometry_pipeline.h; sourceTree = ""; }; + B30F19EB2896772B004D40BF /* renderer_base.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = renderer_base.cpp; sourceTree = ""; }; + B30F19EC2896772B004D40BF /* regs_lighting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regs_lighting.h; sourceTree = ""; }; + B30F19EE2896772B004D40BF /* etc1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = etc1.h; sourceTree = ""; }; + B30F19EF2896772B004D40BF /* texture_decode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture_decode.h; sourceTree = ""; }; + B30F19F02896772B004D40BF /* texture_decode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture_decode.cpp; sourceTree = ""; }; + B30F19F12896772B004D40BF /* etc1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = etc1.cpp; sourceTree = ""; }; + B30F19F22896772B004D40BF /* primitive_assembly.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = primitive_assembly.h; sourceTree = ""; }; + B30F19F42896772B004D40BF /* shader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader.h; sourceTree = ""; }; + B30F19F52896772B004D40BF /* shader_jit_x64_compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader_jit_x64_compiler.h; sourceTree = ""; }; + B30F19F62896772B004D40BF /* shader_jit_x64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader_jit_x64.h; sourceTree = ""; }; + B30F19F72896772B004D40BF /* shader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = ""; }; + B30F19F82896772B004D40BF /* shader_jit_x64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader_jit_x64.cpp; sourceTree = ""; }; + B30F19F92896772B004D40BF /* shader_interpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader_interpreter.cpp; sourceTree = ""; }; + B30F19FA2896772B004D40BF /* shader_interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader_interpreter.h; sourceTree = ""; }; + B30F19FB2896772B004D40BF /* debug_data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug_data.h; sourceTree = ""; }; + B30F19FC2896772B004D40BF /* shader_jit_x64_compiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader_jit_x64_compiler.cpp; sourceTree = ""; }; + B30F19FD2896772B004D40BF /* regs_shader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regs_shader.h; sourceTree = ""; }; + B30F19FE2896772B004D40BF /* regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regs.h; sourceTree = ""; }; + B30F19FF2896772B004D40BF /* pica.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pica.h; sourceTree = ""; }; + B30F1A002896772B004D40BF /* regs_framebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regs_framebuffer.h; sourceTree = ""; }; + B30F1A012896772B004D40BF /* pica_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pica_state.h; sourceTree = ""; }; + B30F1A022896772B004D40BF /* vertex_loader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vertex_loader.cpp; sourceTree = ""; }; + B30F1A042896772B004D40BF /* proctex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = proctex.h; sourceTree = ""; }; + B30F1A052896772B004D40BF /* texturing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texturing.cpp; sourceTree = ""; }; + B30F1A062896772B004D40BF /* clipper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = clipper.cpp; sourceTree = ""; }; + B30F1A072896772B004D40BF /* framebuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = framebuffer.cpp; sourceTree = ""; }; + B30F1A082896772B004D40BF /* swrasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = swrasterizer.h; sourceTree = ""; }; + B30F1A092896772B004D40BF /* framebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = framebuffer.h; sourceTree = ""; }; + B30F1A0A2896772B004D40BF /* swrasterizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = swrasterizer.cpp; sourceTree = ""; }; + B30F1A0B2896772B004D40BF /* lighting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lighting.cpp; sourceTree = ""; }; + B30F1A0C2896772B004D40BF /* rasterizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rasterizer.cpp; sourceTree = ""; }; + B30F1A0D2896772B004D40BF /* rasterizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rasterizer.h; sourceTree = ""; }; + B30F1A0E2896772B004D40BF /* clipper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clipper.h; sourceTree = ""; }; + B30F1A0F2896772B004D40BF /* texturing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texturing.h; sourceTree = ""; }; + B30F1A102896772B004D40BF /* proctex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = proctex.cpp; sourceTree = ""; }; + B30F1A112896772B004D40BF /* lighting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lighting.h; sourceTree = ""; }; + B30F1A122896772B004D40BF /* generate_shaders.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = generate_shaders.cmake; sourceTree = ""; }; + B30F1A142896772B004D40BF /* common_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common_types.h; sourceTree = ""; }; + B30F1A152896772B004D40BF /* string_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = string_util.cpp; sourceTree = ""; }; + B30F1A162896772B004D40BF /* thread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = thread.cpp; sourceTree = ""; }; + B30F1A172896772B004D40BF /* construct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = construct.h; sourceTree = ""; }; + B30F1A182896772B004D40BF /* param_package.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = param_package.cpp; sourceTree = ""; }; + B30F1A192896772B004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F1A1A2896772B004D40BF /* web_result.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = web_result.h; sourceTree = ""; }; + B30F1A1B2896772B004D40BF /* detached_tasks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = detached_tasks.h; sourceTree = ""; }; + B30F1A1C2896772B004D40BF /* threadsafe_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = threadsafe_queue.h; sourceTree = ""; }; + B30F1A1D2896772B004D40BF /* alignment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = alignment.h; sourceTree = ""; }; + B30F1A1E2896772B004D40BF /* string_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_util.h; sourceTree = ""; }; + B30F1A1F2896772B004D40BF /* file_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file_util.cpp; sourceTree = ""; }; + B30F1A202896772B004D40BF /* misc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = misc.cpp; sourceTree = ""; }; + B30F1A222896772B004D40BF /* cpu_detect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpu_detect.cpp; sourceTree = ""; }; + B30F1A232896772B004D40BF /* xbyak_abi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_abi.h; sourceTree = ""; }; + B30F1A242896772B004D40BF /* cpu_detect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu_detect.h; sourceTree = ""; }; + B30F1A252896772B004D40BF /* xbyak_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_util.h; sourceTree = ""; }; + B30F1A262896772B004D40BF /* scm_rev.cpp.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = scm_rev.cpp.in; sourceTree = ""; }; + B30F1A272896772B004D40BF /* ring_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ring_buffer.h; sourceTree = ""; }; + B30F1A292896772B004D40BF /* boost_interval_set.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = boost_interval_set.hpp; sourceTree = ""; }; + B30F1A2A2896772B004D40BF /* boost_vector.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = boost_vector.hpp; sourceTree = ""; }; + B30F1A2B2896772B004D40BF /* boost_small_vector.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = boost_small_vector.hpp; sourceTree = ""; }; + B30F1A2C2896772B004D40BF /* boost_flat_set.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boost_flat_set.h; sourceTree = ""; }; + B30F1A2D2896772B004D40BF /* boost_discrete_interval.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = boost_discrete_interval.hpp; sourceTree = ""; }; + B30F1A2E2896772B004D40BF /* atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atomic.h; sourceTree = ""; }; + B30F1A2F2896772B004D40BF /* zstd_compression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zstd_compression.cpp; sourceTree = ""; }; + B30F1A302896772B004D40BF /* bit_field.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bit_field.h; sourceTree = ""; }; + B30F1A312896772B004D40BF /* swap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = swap.h; sourceTree = ""; }; + B30F1A322896772B004D40BF /* timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + B30F1A332896772B004D40BF /* param_package.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = param_package.h; sourceTree = ""; }; + B30F1A342896772B004D40BF /* memory_ref.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_ref.h; sourceTree = ""; }; + B30F1A352896772C004D40BF /* file_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_util.h; sourceTree = ""; }; + B30F1A362896772C004D40BF /* detached_tasks.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = detached_tasks.cpp; sourceTree = ""; }; + B30F1A372896772C004D40BF /* texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture.cpp; sourceTree = ""; }; + B30F1A382896772C004D40BF /* quaternion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = quaternion.h; sourceTree = ""; }; + B30F1A392896772C004D40BF /* cityhash.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cityhash.cpp; sourceTree = ""; }; + B30F1A3A2896772C004D40BF /* color.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = color.h; sourceTree = ""; }; + B30F1A3B2896772C004D40BF /* scope_exit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scope_exit.h; sourceTree = ""; }; + B30F1A3C2896772C004D40BF /* linear_disk_cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linear_disk_cache.h; sourceTree = ""; }; + B30F1A3D2896772C004D40BF /* thread_queue_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread_queue_list.h; sourceTree = ""; }; + B30F1A3E2896772C004D40BF /* microprofile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = microprofile.cpp; sourceTree = ""; }; + B30F1A3F2896772C004D40BF /* common_funcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common_funcs.h; sourceTree = ""; }; + B30F1A402896772C004D40BF /* zstd_compression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zstd_compression.h; sourceTree = ""; }; + B30F1A412896772C004D40BF /* math_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = math_util.h; sourceTree = ""; }; + B30F1A422896772C004D40BF /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + B30F1A432896772C004D40BF /* thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = ""; }; + B30F1A442896772C004D40BF /* common_paths.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common_paths.h; sourceTree = ""; }; + B30F1A452896772C004D40BF /* announce_multiplayer_room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = announce_multiplayer_room.h; sourceTree = ""; }; + B30F1A462896772C004D40BF /* cityhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cityhash.h; sourceTree = ""; }; + B30F1A472896772C004D40BF /* memory_ref.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_ref.cpp; sourceTree = ""; }; + B30F1A482896772C004D40BF /* texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture.h; sourceTree = ""; }; + B30F1A492896772C004D40BF /* telemetry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = telemetry.cpp; sourceTree = ""; }; + B30F1A4A2896772C004D40BF /* vector_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_math.h; sourceTree = ""; }; + B30F1A4B2896772C004D40BF /* microprofile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microprofile.h; sourceTree = ""; }; + B30F1A4C2896772C004D40BF /* microprofileui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microprofileui.h; sourceTree = ""; }; + B30F1A4D2896772C004D40BF /* bit_set.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bit_set.h; sourceTree = ""; }; + B30F1A4E2896772C004D40BF /* scm_rev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scm_rev.h; sourceTree = ""; }; + B30F1A4F2896772C004D40BF /* assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assert.h; sourceTree = ""; }; + B30F1A512896772C004D40BF /* cpu_detect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpu_detect.cpp; sourceTree = ""; }; + B30F1A522896772C004D40BF /* cpu_detect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu_detect.h; sourceTree = ""; }; + B30F1A542896772C004D40BF /* backend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = backend.cpp; sourceTree = ""; }; + B30F1A552896772C004D40BF /* text_formatter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = text_formatter.cpp; sourceTree = ""; }; + B30F1A562896772C004D40BF /* backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backend.h; sourceTree = ""; }; + B30F1A572896772C004D40BF /* text_formatter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = text_formatter.h; sourceTree = ""; }; + B30F1A582896772C004D40BF /* filter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = filter.cpp; sourceTree = ""; }; + B30F1A592896772C004D40BF /* log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + B30F1A5A2896772C004D40BF /* filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + B30F1A5B2896772C004D40BF /* hash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = ""; }; + B30F1A5C2896772C004D40BF /* telemetry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = telemetry.h; sourceTree = ""; }; + B30F1A5D2896772C004D40BF /* archives.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archives.h; sourceTree = ""; }; + B30F1A5F2896772C004D40BF /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B30F1A602896772C004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F1A612896772C004D40BF /* motion_emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = motion_emu.cpp; sourceTree = ""; }; + B30F1A632896772C004D40BF /* protocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = protocol.h; sourceTree = ""; }; + B30F1A642896772C004D40BF /* client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client.h; sourceTree = ""; }; + B30F1A652896772C004D40BF /* client.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = client.cpp; sourceTree = ""; }; + B30F1A662896772C004D40BF /* udp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = udp.cpp; sourceTree = ""; }; + B30F1A672896772C004D40BF /* protocol.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = protocol.cpp; sourceTree = ""; }; + B30F1A682896772C004D40BF /* udp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = udp.h; sourceTree = ""; }; + B30F1A692896772C004D40BF /* analog_from_button.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = analog_from_button.h; sourceTree = ""; }; + B30F1A6A2896772C004D40BF /* analog_from_button.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = analog_from_button.cpp; sourceTree = ""; }; + B30F1A6B2896772C004D40BF /* touch_from_button.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = touch_from_button.h; sourceTree = ""; }; + B30F1A6C2896772C004D40BF /* touch_from_button.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = touch_from_button.cpp; sourceTree = ""; }; + B30F1A6E2896772C004D40BF /* sdl_impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl_impl.cpp; sourceTree = ""; }; + B30F1A6F2896772C004D40BF /* sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl.cpp; sourceTree = ""; }; + B30F1A702896772C004D40BF /* sdl_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl_impl.h; sourceTree = ""; }; + B30F1A712896772C004D40BF /* sdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl.h; sourceTree = ""; }; + B30F1A722896772C004D40BF /* keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard.h; sourceTree = ""; }; + B30F1A732896772C004D40BF /* motion_emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = motion_emu.h; sourceTree = ""; }; + B30F1A752896772C004D40BF /* gc_adapter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gc_adapter.cpp; sourceTree = ""; }; + B30F1A762896772C004D40BF /* gc_poller.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gc_poller.cpp; sourceTree = ""; }; + B30F1A772896772C004D40BF /* gc_adapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gc_adapter.h; sourceTree = ""; }; + B30F1A782896772C004D40BF /* gc_poller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gc_poller.h; sourceTree = ""; }; + B30F1A792896772C004D40BF /* keyboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = keyboard.cpp; sourceTree = ""; }; + B30F1A7A2896772C004D40BF /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B30F1A7D2896772C004D40BF /* proguard-rules.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = "proguard-rules.pro"; sourceTree = ""; }; + B30F1A7E2896772C004D40BF /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B30F1A852896772C004D40BF /* ExampleInstrumentedTest.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = ExampleInstrumentedTest.java; sourceTree = ""; }; + B30F1A8B2896772C004D40BF /* ExampleUnitTest.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = ExampleUnitTest.java; sourceTree = ""; }; + B30F1A8F2896772C004D40BF /* ic_launcher_foreground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher_foreground.png; sourceTree = ""; }; + B30F1A902896772C004D40BF /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B30F1A922896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1A932896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1A942896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1A952896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1A972896772C004D40BF /* integers.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = integers.xml; sourceTree = ""; }; + B30F1A992896772C004D40BF /* ic_launcher_foreground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher_foreground.png; sourceTree = ""; }; + B30F1A9A2896772C004D40BF /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B30F1A9C2896772C004D40BF /* dimens.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dimens.xml; sourceTree = ""; }; + B30F1A9E2896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1AA02896772C004D40BF /* no_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = no_icon.png; sourceTree = ""; }; + B30F1AA22896772C004D40BF /* integers.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = integers.xml; sourceTree = ""; }; + B30F1AA42896772C004D40BF /* gamelist_divider.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gamelist_divider.xml; sourceTree = ""; }; + B30F1AA52896772C004D40BF /* no_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = no_icon.png; sourceTree = ""; }; + B30F1AA72896772C004D40BF /* ic_launcher_foreground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher_foreground.png; sourceTree = ""; }; + B30F1AA82896772C004D40BF /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B30F1AAA2896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1AAC2896772C004D40BF /* list_item_setting.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = list_item_setting.xml; sourceTree = ""; }; + B30F1AAD2896772C004D40BF /* dialog_progress_bar.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dialog_progress_bar.xml; sourceTree = ""; }; + B30F1AAE2896772C004D40BF /* card_game.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = card_game.xml; sourceTree = ""; }; + B30F1AAF2896772C004D40BF /* activity_settings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = activity_settings.xml; sourceTree = ""; }; + B30F1AB02896772C004D40BF /* fragment_grid.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fragment_grid.xml; sourceTree = ""; }; + B30F1AB12896772C004D40BF /* sysclock_datetime_picker.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = sysclock_datetime_picker.xml; sourceTree = ""; }; + B30F1AB22896772C004D40BF /* dialog_seekbar.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dialog_seekbar.xml; sourceTree = ""; }; + B30F1AB32896772C004D40BF /* premium_item_setting.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = premium_item_setting.xml; sourceTree = ""; }; + B30F1AB42896772C004D40BF /* list_item_setting_checkbox.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = list_item_setting_checkbox.xml; sourceTree = ""; }; + B30F1AB52896772C004D40BF /* filepicker_toolbar.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = filepicker_toolbar.xml; sourceTree = ""; }; + B30F1AB62896772C004D40BF /* fragment_settings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fragment_settings.xml; sourceTree = ""; }; + B30F1AB72896772C004D40BF /* activity_emulation.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = activity_emulation.xml; sourceTree = ""; }; + B30F1AB82896772C004D40BF /* list_item_settings_header.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = list_item_settings_header.xml; sourceTree = ""; }; + B30F1AB92896772C004D40BF /* fragment_emulation.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fragment_emulation.xml; sourceTree = ""; }; + B30F1ABA2896772C004D40BF /* dialog_checkbox.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dialog_checkbox.xml; sourceTree = ""; }; + B30F1ABB2896772C004D40BF /* activity_main.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = activity_main.xml; sourceTree = ""; }; + B30F1ABD2896772C004D40BF /* ic_launcher_foreground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher_foreground.png; sourceTree = ""; }; + B30F1ABE2896772C004D40BF /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B30F1AC02896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1AC12896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1AC22896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1AC42896772C004D40BF /* colors.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = colors.xml; sourceTree = ""; }; + B30F1AC52896772C004D40BF /* styles_filepicker.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = styles_filepicker.xml; sourceTree = ""; }; + B30F1AC72896772C004D40BF /* colors.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = colors.xml; sourceTree = ""; }; + B30F1AC82896772C004D40BF /* dimens.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dimens.xml; sourceTree = ""; }; + B30F1AC92896772C004D40BF /* arrays.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = arrays.xml; sourceTree = ""; }; + B30F1ACA2896772C004D40BF /* styles_filepicker.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = styles_filepicker.xml; sourceTree = ""; }; + B30F1ACB2896772C004D40BF /* styles.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = styles.xml; sourceTree = ""; }; + B30F1ACC2896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1ACD2896772C004D40BF /* integers.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = integers.xml; sourceTree = ""; }; + B30F1ACE2896772C004D40BF /* ic_launcher_background.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ic_launcher_background.xml; sourceTree = ""; }; + B30F1AD02896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1AD12896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1AD22896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1AD32896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1AD52896772C004D40BF /* settings_enter.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = settings_enter.xml; sourceTree = ""; }; + B30F1AD62896772C004D40BF /* setttings_pop_exit.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = setttings_pop_exit.xml; sourceTree = ""; }; + B30F1AD72896772C004D40BF /* settings_pop_enter.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = settings_pop_enter.xml; sourceTree = ""; }; + B30F1AD82896772C004D40BF /* settings_exit.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = settings_exit.xml; sourceTree = ""; }; + B30F1ADA2896772C004D40BF /* button_r.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r.png; sourceTree = ""; }; + B30F1ADB2896772C004D40BF /* stick_c_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_range.png; sourceTree = ""; }; + B30F1ADC2896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1ADD2896772C004D40BF /* stick_main_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_pressed.png; sourceTree = ""; }; + B30F1ADE2896772C004D40BF /* button_y_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y_pressed.png; sourceTree = ""; }; + B30F1ADF2896772C004D40BF /* button_b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b.png; sourceTree = ""; }; + B30F1AE02896772C004D40BF /* stick_main_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_range.png; sourceTree = ""; }; + B30F1AE12896772C004D40BF /* button_a.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a.png; sourceTree = ""; }; + B30F1AE22896772C004D40BF /* dpad_pressed_one_direction.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_one_direction.png; sourceTree = ""; }; + B30F1AE32896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1AE42896772C004D40BF /* dpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad.png; sourceTree = ""; }; + B30F1AE52896772C004D40BF /* stick_main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main.png; sourceTree = ""; }; + B30F1AE62896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1AE72896772C004D40BF /* button_zl_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl_pressed.png; sourceTree = ""; }; + B30F1AE82896772C004D40BF /* button_zr.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr.png; sourceTree = ""; }; + B30F1AE92896772C004D40BF /* button_l_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l_pressed.png; sourceTree = ""; }; + B30F1AEA2896772C004D40BF /* ic_stat_notification_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_stat_notification_logo.png; sourceTree = ""; }; + B30F1AEB2896772C004D40BF /* stick_c_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_pressed.png; sourceTree = ""; }; + B30F1AEC2896772C004D40BF /* button_b_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b_pressed.png; sourceTree = ""; }; + B30F1AED2896772C004D40BF /* button_select.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select.png; sourceTree = ""; }; + B30F1AEE2896772C004D40BF /* button_start_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start_pressed.png; sourceTree = ""; }; + B30F1AEF2896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1AF02896772C004D40BF /* button_zl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl.png; sourceTree = ""; }; + B30F1AF12896772C004D40BF /* button_x_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x_pressed.png; sourceTree = ""; }; + B30F1AF22896772C004D40BF /* button_r_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r_pressed.png; sourceTree = ""; }; + B30F1AF32896772C004D40BF /* stick_c.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c.png; sourceTree = ""; }; + B30F1AF42896772C004D40BF /* button_l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l.png; sourceTree = ""; }; + B30F1AF52896772C004D40BF /* button_select_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select_pressed.png; sourceTree = ""; }; + B30F1AF62896772C004D40BF /* button_y.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y.png; sourceTree = ""; }; + B30F1AF72896772C004D40BF /* dpad_pressed_two_directions.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_two_directions.png; sourceTree = ""; }; + B30F1AF82896772C004D40BF /* button_x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x.png; sourceTree = ""; }; + B30F1AF92896772C004D40BF /* button_a_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a_pressed.png; sourceTree = ""; }; + B30F1AFA2896772C004D40BF /* button_zr_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr_pressed.png; sourceTree = ""; }; + B30F1AFB2896772C004D40BF /* button_start.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start.png; sourceTree = ""; }; + B30F1AFD2896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1AFE2896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1AFF2896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1B002896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1B022896772C004D40BF /* button_r.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r.png; sourceTree = ""; }; + B30F1B032896772C004D40BF /* stick_c_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_range.png; sourceTree = ""; }; + B30F1B042896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1B052896772C004D40BF /* stick_main_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_pressed.png; sourceTree = ""; }; + B30F1B062896772C004D40BF /* button_y_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y_pressed.png; sourceTree = ""; }; + B30F1B072896772C004D40BF /* button_b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b.png; sourceTree = ""; }; + B30F1B082896772C004D40BF /* stick_main_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_range.png; sourceTree = ""; }; + B30F1B092896772C004D40BF /* button_a.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a.png; sourceTree = ""; }; + B30F1B0A2896772C004D40BF /* dpad_pressed_one_direction.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_one_direction.png; sourceTree = ""; }; + B30F1B0B2896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1B0C2896772C004D40BF /* dpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad.png; sourceTree = ""; }; + B30F1B0D2896772C004D40BF /* stick_main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main.png; sourceTree = ""; }; + B30F1B0E2896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1B0F2896772C004D40BF /* button_zl_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl_pressed.png; sourceTree = ""; }; + B30F1B102896772C004D40BF /* button_zr.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr.png; sourceTree = ""; }; + B30F1B112896772C004D40BF /* button_l_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l_pressed.png; sourceTree = ""; }; + B30F1B122896772C004D40BF /* ic_stat_notification_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_stat_notification_logo.png; sourceTree = ""; }; + B30F1B132896772C004D40BF /* stick_c_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_pressed.png; sourceTree = ""; }; + B30F1B142896772C004D40BF /* button_b_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b_pressed.png; sourceTree = ""; }; + B30F1B152896772C004D40BF /* button_select.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select.png; sourceTree = ""; }; + B30F1B162896772C004D40BF /* button_start_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start_pressed.png; sourceTree = ""; }; + B30F1B172896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1B182896772C004D40BF /* button_zl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl.png; sourceTree = ""; }; + B30F1B192896772C004D40BF /* button_x_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x_pressed.png; sourceTree = ""; }; + B30F1B1A2896772C004D40BF /* button_r_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r_pressed.png; sourceTree = ""; }; + B30F1B1B2896772C004D40BF /* stick_c.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c.png; sourceTree = ""; }; + B30F1B1C2896772C004D40BF /* button_l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l.png; sourceTree = ""; }; + B30F1B1D2896772C004D40BF /* button_select_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select_pressed.png; sourceTree = ""; }; + B30F1B1E2896772C004D40BF /* button_y.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y.png; sourceTree = ""; }; + B30F1B1F2896772C004D40BF /* dpad_pressed_two_directions.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_two_directions.png; sourceTree = ""; }; + B30F1B202896772C004D40BF /* button_x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x.png; sourceTree = ""; }; + B30F1B212896772C004D40BF /* button_a_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a_pressed.png; sourceTree = ""; }; + B30F1B222896772C004D40BF /* button_zr_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr_pressed.png; sourceTree = ""; }; + B30F1B232896772C004D40BF /* button_start.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start.png; sourceTree = ""; }; + B30F1B252896772C004D40BF /* button_r.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r.png; sourceTree = ""; }; + B30F1B262896772C004D40BF /* stick_c_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_range.png; sourceTree = ""; }; + B30F1B272896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1B282896772C004D40BF /* stick_main_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_pressed.png; sourceTree = ""; }; + B30F1B292896772C004D40BF /* button_y_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y_pressed.png; sourceTree = ""; }; + B30F1B2A2896772C004D40BF /* button_b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b.png; sourceTree = ""; }; + B30F1B2B2896772C004D40BF /* stick_main_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_range.png; sourceTree = ""; }; + B30F1B2C2896772C004D40BF /* button_a.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a.png; sourceTree = ""; }; + B30F1B2D2896772C004D40BF /* dpad_pressed_one_direction.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_one_direction.png; sourceTree = ""; }; + B30F1B2E2896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1B2F2896772C004D40BF /* dpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad.png; sourceTree = ""; }; + B30F1B302896772C004D40BF /* stick_main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main.png; sourceTree = ""; }; + B30F1B312896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1B322896772C004D40BF /* button_zl_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl_pressed.png; sourceTree = ""; }; + B30F1B332896772C004D40BF /* button_zr.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr.png; sourceTree = ""; }; + B30F1B342896772C004D40BF /* button_l_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l_pressed.png; sourceTree = ""; }; + B30F1B352896772C004D40BF /* ic_stat_notification_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_stat_notification_logo.png; sourceTree = ""; }; + B30F1B362896772C004D40BF /* stick_c_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_pressed.png; sourceTree = ""; }; + B30F1B372896772C004D40BF /* button_b_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b_pressed.png; sourceTree = ""; }; + B30F1B382896772C004D40BF /* button_select.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select.png; sourceTree = ""; }; + B30F1B392896772C004D40BF /* button_start_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start_pressed.png; sourceTree = ""; }; + B30F1B3A2896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1B3B2896772C004D40BF /* button_zl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl.png; sourceTree = ""; }; + B30F1B3C2896772C004D40BF /* button_x_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x_pressed.png; sourceTree = ""; }; + B30F1B3D2896772C004D40BF /* button_r_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r_pressed.png; sourceTree = ""; }; + B30F1B3E2896772C004D40BF /* stick_c.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c.png; sourceTree = ""; }; + B30F1B3F2896772C004D40BF /* button_l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l.png; sourceTree = ""; }; + B30F1B402896772C004D40BF /* button_select_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select_pressed.png; sourceTree = ""; }; + B30F1B412896772C004D40BF /* button_y.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y.png; sourceTree = ""; }; + B30F1B422896772C004D40BF /* dpad_pressed_two_directions.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_two_directions.png; sourceTree = ""; }; + B30F1B432896772C004D40BF /* button_x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x.png; sourceTree = ""; }; + B30F1B442896772C004D40BF /* button_a_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a_pressed.png; sourceTree = ""; }; + B30F1B452896772C004D40BF /* button_zr_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr_pressed.png; sourceTree = ""; }; + B30F1B462896772C004D40BF /* button_start.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start.png; sourceTree = ""; }; + B30F1B482896772C004D40BF /* menu_settings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = menu_settings.xml; sourceTree = ""; }; + B30F1B492896772C004D40BF /* menu_game_grid.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = menu_game_grid.xml; sourceTree = ""; }; + B30F1B4A2896772C004D40BF /* menu_emulation.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = menu_emulation.xml; sourceTree = ""; }; + B30F1B4C2896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1B4D2896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1B4E2896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1B502896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B522896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1B532896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1B542896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1B552896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1B572896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B592896772C004D40BF /* ic_launcher_foreground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher_foreground.png; sourceTree = ""; }; + B30F1B5A2896772C004D40BF /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B30F1B5C2896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B5E2896772C004D40BF /* button_r.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r.png; sourceTree = ""; }; + B30F1B5F2896772C004D40BF /* stick_c_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_range.png; sourceTree = ""; }; + B30F1B602896772C004D40BF /* ic_settings_core.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_settings_core.png; sourceTree = ""; }; + B30F1B612896772C004D40BF /* stick_main_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_pressed.png; sourceTree = ""; }; + B30F1B622896772C004D40BF /* button_y_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y_pressed.png; sourceTree = ""; }; + B30F1B632896772C004D40BF /* button_b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b.png; sourceTree = ""; }; + B30F1B642896772C004D40BF /* stick_main_range.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main_range.png; sourceTree = ""; }; + B30F1B652896772C004D40BF /* button_a.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a.png; sourceTree = ""; }; + B30F1B662896772C004D40BF /* dpad_pressed_one_direction.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_one_direction.png; sourceTree = ""; }; + B30F1B672896772C004D40BF /* ic_premium.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_premium.png; sourceTree = ""; }; + B30F1B682896772C004D40BF /* dpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad.png; sourceTree = ""; }; + B30F1B692896772C004D40BF /* stick_main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_main.png; sourceTree = ""; }; + B30F1B6A2896772C004D40BF /* ic_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_folder.png; sourceTree = ""; }; + B30F1B6B2896772C004D40BF /* button_zl_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl_pressed.png; sourceTree = ""; }; + B30F1B6C2896772C004D40BF /* button_zr.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr.png; sourceTree = ""; }; + B30F1B6D2896772C004D40BF /* button_l_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l_pressed.png; sourceTree = ""; }; + B30F1B6E2896772C004D40BF /* stick_c_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c_pressed.png; sourceTree = ""; }; + B30F1B6F2896772C004D40BF /* button_b_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_b_pressed.png; sourceTree = ""; }; + B30F1B702896772C004D40BF /* button_select.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select.png; sourceTree = ""; }; + B30F1B712896772C004D40BF /* button_start_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start_pressed.png; sourceTree = ""; }; + B30F1B722896772C004D40BF /* ic_cia_install.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_cia_install.png; sourceTree = ""; }; + B30F1B732896772C004D40BF /* button_zl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zl.png; sourceTree = ""; }; + B30F1B742896772C004D40BF /* button_x_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x_pressed.png; sourceTree = ""; }; + B30F1B752896772C004D40BF /* button_r_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_r_pressed.png; sourceTree = ""; }; + B30F1B762896772C004D40BF /* stick_c.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stick_c.png; sourceTree = ""; }; + B30F1B772896772C004D40BF /* button_l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_l.png; sourceTree = ""; }; + B30F1B782896772C004D40BF /* button_select_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_select_pressed.png; sourceTree = ""; }; + B30F1B792896772C004D40BF /* button_y.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_y.png; sourceTree = ""; }; + B30F1B7A2896772C004D40BF /* dpad_pressed_two_directions.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dpad_pressed_two_directions.png; sourceTree = ""; }; + B30F1B7B2896772C004D40BF /* button_x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_x.png; sourceTree = ""; }; + B30F1B7C2896772C004D40BF /* button_a_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_a_pressed.png; sourceTree = ""; }; + B30F1B7D2896772C004D40BF /* button_zr_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_zr_pressed.png; sourceTree = ""; }; + B30F1B7E2896772C004D40BF /* button_start.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_start.png; sourceTree = ""; }; + B30F1B802896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B822896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B842896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B862896772C004D40BF /* dimens.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dimens.xml; sourceTree = ""; }; + B30F1B882896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B8A2896772C004D40BF /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B30F1B8C2896772C004D40BF /* integers.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = integers.xml; sourceTree = ""; }; + B30F1B8E2896772C004D40BF /* ic_launcher.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ic_launcher.xml; sourceTree = ""; }; + B30F1B8F2896772C004D40BF /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; + B30F1B962896772C004D40BF /* PlatformGamesPresenter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PlatformGamesPresenter.java; sourceTree = ""; }; + B30F1B972896772C004D40BF /* PlatformGamesFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PlatformGamesFragment.java; sourceTree = ""; }; + B30F1B982896772C004D40BF /* PlatformGamesView.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PlatformGamesView.java; sourceTree = ""; }; + B30F1B992896772C004D40BF /* DividerItemDecoration.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = DividerItemDecoration.java; sourceTree = ""; }; + B30F1B9B2896772C004D40BF /* MainActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MainActivity.java; sourceTree = ""; }; + B30F1B9C2896772C004D40BF /* MainView.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MainView.java; sourceTree = ""; }; + B30F1B9D2896772C004D40BF /* MainPresenter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MainPresenter.java; sourceTree = ""; }; + B30F1B9F2896772C004D40BF /* MiiSelector.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MiiSelector.java; sourceTree = ""; }; + B30F1BA02896772C004D40BF /* SoftwareKeyboard.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SoftwareKeyboard.java; sourceTree = ""; }; + B30F1BA22896772C004D40BF /* CustomFilePickerFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = CustomFilePickerFragment.java; sourceTree = ""; }; + B30F1BA32896772C004D40BF /* EmulationFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = EmulationFragment.java; sourceTree = ""; }; + B30F1BA42896772C004D40BF /* NativeLibrary.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = NativeLibrary.java; sourceTree = ""; }; + B30F1BA62896772C004D40BF /* StillImageCameraHelper.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = StillImageCameraHelper.java; sourceTree = ""; }; + B30F1BAA2896772C004D40BF /* SettingsAdapter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsAdapter.java; sourceTree = ""; }; + B30F1BAB2896772C004D40BF /* SettingsFragmentPresenter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsFragmentPresenter.java; sourceTree = ""; }; + B30F1BAC2896772C004D40BF /* SettingsFragmentView.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsFragmentView.java; sourceTree = ""; }; + B30F1BAD2896772C004D40BF /* SettingsFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsFragment.java; sourceTree = ""; }; + B30F1BAE2896772C004D40BF /* SettingsActivityPresenter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsActivityPresenter.java; sourceTree = ""; }; + B30F1BAF2896772C004D40BF /* SettingsFrameLayout.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsFrameLayout.java; sourceTree = ""; }; + B30F1BB02896772C004D40BF /* SettingsActivityView.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsActivityView.java; sourceTree = ""; }; + B30F1BB22896772C004D40BF /* SliderViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SliderViewHolder.java; sourceTree = ""; }; + B30F1BB32896772C004D40BF /* SubmenuViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SubmenuViewHolder.java; sourceTree = ""; }; + B30F1BB42896772C004D40BF /* HeaderViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HeaderViewHolder.java; sourceTree = ""; }; + B30F1BB52896772C004D40BF /* SingleChoiceViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SingleChoiceViewHolder.java; sourceTree = ""; }; + B30F1BB62896772C004D40BF /* PremiumViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PremiumViewHolder.java; sourceTree = ""; }; + B30F1BB72896772C004D40BF /* CheckBoxSettingViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = CheckBoxSettingViewHolder.java; sourceTree = ""; }; + B30F1BB82896772C004D40BF /* SettingViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingViewHolder.java; sourceTree = ""; }; + B30F1BB92896772C004D40BF /* InputBindingSettingViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputBindingSettingViewHolder.java; sourceTree = ""; }; + B30F1BBA2896772C004D40BF /* DateTimeViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = DateTimeViewHolder.java; sourceTree = ""; }; + B30F1BBB2896772C004D40BF /* SettingsActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsActivity.java; sourceTree = ""; }; + B30F1BBD2896772C004D40BF /* SettingsFile.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsFile.java; sourceTree = ""; }; + B30F1BBF2896772C004D40BF /* SettingSection.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingSection.java; sourceTree = ""; }; + B30F1BC02896772C004D40BF /* FloatSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = FloatSetting.java; sourceTree = ""; }; + B30F1BC12896772C004D40BF /* IntSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = IntSetting.java; sourceTree = ""; }; + B30F1BC22896772C004D40BF /* BooleanSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = BooleanSetting.java; sourceTree = ""; }; + B30F1BC42896772C004D40BF /* CheckBoxSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = CheckBoxSetting.java; sourceTree = ""; }; + B30F1BC52896772C004D40BF /* SingleChoiceSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SingleChoiceSetting.java; sourceTree = ""; }; + B30F1BC62896772C004D40BF /* SubmenuSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SubmenuSetting.java; sourceTree = ""; }; + B30F1BC72896772C004D40BF /* InputBindingSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputBindingSetting.java; sourceTree = ""; }; + B30F1BC82896772C004D40BF /* DateTimeSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = DateTimeSetting.java; sourceTree = ""; }; + B30F1BC92896772C004D40BF /* PremiumSingleChoiceSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PremiumSingleChoiceSetting.java; sourceTree = ""; }; + B30F1BCA2896772C004D40BF /* StringSingleChoiceSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = StringSingleChoiceSetting.java; sourceTree = ""; }; + B30F1BCB2896772C004D40BF /* SliderSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SliderSetting.java; sourceTree = ""; }; + B30F1BCC2896772C004D40BF /* PremiumHeader.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PremiumHeader.java; sourceTree = ""; }; + B30F1BCD2896772C004D40BF /* HeaderSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HeaderSetting.java; sourceTree = ""; }; + B30F1BCE2896772C004D40BF /* SettingsItem.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SettingsItem.java; sourceTree = ""; }; + B30F1BCF2896772C004D40BF /* Setting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Setting.java; sourceTree = ""; }; + B30F1BD02896772C004D40BF /* Settings.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Settings.java; sourceTree = ""; }; + B30F1BD12896772C004D40BF /* StringSetting.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = StringSetting.java; sourceTree = ""; }; + B30F1BD32896772C004D40BF /* Action1.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Action1.java; sourceTree = ""; }; + B30F1BD42896772C004D40BF /* ForegroundService.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = ForegroundService.java; sourceTree = ""; }; + B30F1BD52896772C004D40BF /* AddDirectoryHelper.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = AddDirectoryHelper.java; sourceTree = ""; }; + B30F1BD62896772C004D40BF /* DirectoryInitialization.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = DirectoryInitialization.java; sourceTree = ""; }; + B30F1BD72896772C004D40BF /* StartupHandler.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = StartupHandler.java; sourceTree = ""; }; + B30F1BD82896772C004D40BF /* PermissionsHandler.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PermissionsHandler.java; sourceTree = ""; }; + B30F1BD92896772C004D40BF /* FileUtil.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = FileUtil.java; sourceTree = ""; }; + B30F1BDA2896772C004D40BF /* PicassoRoundedCornersTransformation.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PicassoRoundedCornersTransformation.java; sourceTree = ""; }; + B30F1BDB2896772C004D40BF /* BillingManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = BillingManager.java; sourceTree = ""; }; + B30F1BDC2896772C004D40BF /* Log.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Log.java; sourceTree = ""; }; + B30F1BDD2896772C004D40BF /* FileBrowserHelper.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = FileBrowserHelper.java; sourceTree = ""; }; + B30F1BDE2896772C004D40BF /* DirectoryStateReceiver.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = DirectoryStateReceiver.java; sourceTree = ""; }; + B30F1BDF2896772C004D40BF /* EmulationMenuSettings.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = EmulationMenuSettings.java; sourceTree = ""; }; + B30F1BE02896772C004D40BF /* ThemeUtil.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = ThemeUtil.java; sourceTree = ""; }; + B30F1BE12896772C004D40BF /* ControllerMappingHelper.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = ControllerMappingHelper.java; sourceTree = ""; }; + B30F1BE22896772C004D40BF /* BiMap.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = BiMap.java; sourceTree = ""; }; + B30F1BE32896772C004D40BF /* GameIconRequestHandler.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameIconRequestHandler.java; sourceTree = ""; }; + B30F1BE42896772C004D40BF /* PicassoUtils.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PicassoUtils.java; sourceTree = ""; }; + B30F1BE62896772C004D40BF /* GameAdapter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameAdapter.java; sourceTree = ""; }; + B30F1BE82896772C004D40BF /* DiskShaderCacheProgress.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = DiskShaderCacheProgress.java; sourceTree = ""; }; + B30F1BEA2896772C004D40BF /* GameViewHolder.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameViewHolder.java; sourceTree = ""; }; + B30F1BEC2896772C004D40BF /* GameDatabase.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameDatabase.java; sourceTree = ""; }; + B30F1BED2896772C004D40BF /* Game.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Game.java; sourceTree = ""; }; + B30F1BEE2896772C004D40BF /* GameProvider.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameProvider.java; sourceTree = ""; }; + B30F1BF02896772C004D40BF /* MotionAlertDialog.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MotionAlertDialog.java; sourceTree = ""; }; + B30F1BF22896772C004D40BF /* EmulationActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = EmulationActivity.java; sourceTree = ""; }; + B30F1BF32896772C004D40BF /* CustomFilePickerActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = CustomFilePickerActivity.java; sourceTree = ""; }; + B30F1BF52896772C004D40BF /* InputOverlayDrawableDpad.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputOverlayDrawableDpad.java; sourceTree = ""; }; + B30F1BF62896772C004D40BF /* InputOverlayDrawableJoystick.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputOverlayDrawableJoystick.java; sourceTree = ""; }; + B30F1BF72896772C004D40BF /* InputOverlayDrawableButton.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputOverlayDrawableButton.java; sourceTree = ""; }; + B30F1BF82896772C004D40BF /* InputOverlay.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputOverlay.java; sourceTree = ""; }; + B30F1BF92896772C004D40BF /* CitraApplication.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = CitraApplication.java; sourceTree = ""; }; + B30F1BFB2896772C004D40BF /* mic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mic.cpp; sourceTree = ""; }; + B30F1BFD2896772C004D40BF /* mii_selector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mii_selector.h; sourceTree = ""; }; + B30F1BFE2896772C004D40BF /* mii_selector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mii_selector.cpp; sourceTree = ""; }; + B30F1BFF2896772C004D40BF /* swkbd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = swkbd.h; sourceTree = ""; }; + B30F1C002896772C004D40BF /* swkbd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = swkbd.cpp; sourceTree = ""; }; + B30F1C012896772C004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F1C022896772C004D40BF /* game_info.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = game_info.cpp; sourceTree = ""; }; + B30F1C032896772C004D40BF /* native.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = native.h; sourceTree = ""; }; + B30F1C042896772C004D40BF /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B30F1C052896772C004D40BF /* id_cache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = id_cache.cpp; sourceTree = ""; }; + B30F1C062896772C004D40BF /* input_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_manager.h; sourceTree = ""; }; + B30F1C082896772C004D40BF /* still_image_camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = still_image_camera.h; sourceTree = ""; }; + B30F1C092896772C004D40BF /* ndk_camera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ndk_camera.cpp; sourceTree = ""; }; + B30F1C0A2896772C004D40BF /* still_image_camera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = still_image_camera.cpp; sourceTree = ""; }; + B30F1C0B2896772C004D40BF /* ndk_camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ndk_camera.h; sourceTree = ""; }; + B30F1C0C2896772C004D40BF /* mic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mic.h; sourceTree = ""; }; + B30F1C0D2896772C004D40BF /* ndk_motion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ndk_motion.h; sourceTree = ""; }; + B30F1C0E2896772C004D40BF /* game_settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = game_settings.cpp; sourceTree = ""; }; + B30F1C0F2896772C004D40BF /* ndk_motion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ndk_motion.cpp; sourceTree = ""; }; + B30F1C102896772C004D40BF /* native.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = native.cpp; sourceTree = ""; }; + B30F1C112896772C004D40BF /* id_cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = id_cache.h; sourceTree = ""; }; + B30F1C122896772C004D40BF /* config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config.cpp; sourceTree = ""; }; + B30F1C132896772C004D40BF /* default_ini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = default_ini.h; sourceTree = ""; }; + B30F1C142896772C004D40BF /* game_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_info.h; sourceTree = ""; }; + B30F1C152896772C004D40BF /* input_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input_manager.cpp; sourceTree = ""; }; + B30F1C162896772C004D40BF /* game_settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_settings.h; sourceTree = ""; }; + B30F1C182896772C004D40BF /* emu_window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emu_window.cpp; sourceTree = ""; }; + B30F1C192896772C004D40BF /* emu_window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emu_window.h; sourceTree = ""; }; + B30F1C1A2896772C004D40BF /* code-style-java.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "code-style-java.xml"; sourceTree = ""; }; + B30F1C1D2896772C004D40BF /* gradle-wrapper.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "gradle-wrapper.jar"; sourceTree = ""; }; + B30F1C1E2896772C004D40BF /* gradle-wrapper.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gradle-wrapper.properties"; sourceTree = ""; }; + B30F1C1F2896772C004D40BF /* gradlew */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew; sourceTree = ""; }; + B30F1C202896772C004D40BF /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B30F1C212896772C004D40BF /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B30F1C222896772C004D40BF /* gradle.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradle.properties; sourceTree = ""; }; + B30F1C232896772C004D40BF /* gradlew.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew.bat; sourceTree = ""; }; + B30F1C242896772C004D40BF /* settings.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = settings.gradle; sourceTree = ""; }; + B30F1C252896772D004D40BF /* .clang-format */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".clang-format"; sourceTree = ""; }; + B30F1C272896772D004D40BF /* verify_login.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = verify_login.h; sourceTree = ""; }; + B30F1C282896772D004D40BF /* verify_user_jwt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = verify_user_jwt.h; sourceTree = ""; }; + B30F1C292896772D004D40BF /* announce_room_json.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = announce_room_json.h; sourceTree = ""; }; + B30F1C2A2896772D004D40BF /* verify_user_jwt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = verify_user_jwt.cpp; sourceTree = ""; }; + B30F1C2B2896772D004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F1C2C2896772D004D40BF /* verify_login.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = verify_login.cpp; sourceTree = ""; }; + B30F1C2D2896772D004D40BF /* web_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = web_backend.h; sourceTree = ""; }; + B30F1C2E2896772D004D40BF /* announce_room_json.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = announce_room_json.cpp; sourceTree = ""; }; + B30F1C2F2896772D004D40BF /* telemetry_json.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = telemetry_json.cpp; sourceTree = ""; }; + B30F1C302896772D004D40BF /* telemetry_json.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = telemetry_json.h; sourceTree = ""; }; + B30F1C312896772D004D40BF /* web_backend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = web_backend.cpp; sourceTree = ""; }; + B30F1C332896772D004D40BF /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30F1C342896772D004D40BF /* citra-room.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "citra-room.cpp"; sourceTree = ""; }; + B30F1C352896772D004D40BF /* citra-room.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "citra-room.rc"; sourceTree = ""; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libCitra-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libCitra-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVCitra-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVCitra-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVCitra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVCitra.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVCitraCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVCitraCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVCitraCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVCitraCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVCitra.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVCitra.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1FD2872B1A000EAEB37 /* libCitra.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libCitra-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B30F142B28967728004D40BF /* citra */ = { + isa = PBXGroup; + children = ( + B30F164E2896772A004D40BF /* .gitattributes */, + B30F16412896772A004D40BF /* .gitignore */, + B30F163F2896772A004D40BF /* .gitmodules */, + B30F164F2896772A004D40BF /* Doxyfile */, + B30F163D2896772A004D40BF /* keys.tar.enc */, + B30F16422896772A004D40BF /* CONTRIBUTING.md */, + B30F16402896772A004D40BF /* README.md */, + B30F142C28967728004D40BF /* CMakeLists.txt */, + B30F16502896772A004D40BF /* license.txt */, + B30F163E2896772A004D40BF /* .lgtm.yml */, + B30F144F28967728004D40BF /* bitrise.yml */, + B30F142D28967728004D40BF /* .ci */, + B30F16452896772A004D40BF /* .github */, + B30F16512896772A004D40BF /* CMakeModules */, + B30F145028967728004D40BF /* dist */, + B30F15F32896772A004D40BF /* externals */, + B30F16432896772A004D40BF /* hooks */, + B30F165B2896772A004D40BF /* src */, + ); + path = citra; + sourceTree = ""; + }; + B30F142D28967728004D40BF /* .ci */ = { + isa = PBXGroup; + children = ( + B30F142E28967728004D40BF /* linux-frozen */, + B30F143228967728004D40BF /* macos */, + B30F143628967728004D40BF /* windows-msvc */, + B30F143928967728004D40BF /* linux-mingw */, + B30F143E28967728004D40BF /* transifex */, + B30F144128967728004D40BF /* common */, + B30F144428967728004D40BF /* linux-fresh */, + B30F144828967728004D40BF /* android */, + B30F144B28967728004D40BF /* linux-clang-format */, + ); + path = .ci; + sourceTree = ""; + }; + B30F142E28967728004D40BF /* linux-frozen */ = { + isa = PBXGroup; + children = ( + B30F142F28967728004D40BF /* build.sh */, + B30F143028967728004D40BF /* docker.sh */, + B30F143128967728004D40BF /* install_package.py */, + ); + path = "linux-frozen"; + sourceTree = ""; + }; + B30F143228967728004D40BF /* macos */ = { + isa = PBXGroup; + children = ( + B30F143328967728004D40BF /* deps.sh */, + B30F143428967728004D40BF /* build.sh */, + B30F143528967728004D40BF /* upload.sh */, + ); + path = macos; + sourceTree = ""; + }; + B30F143628967728004D40BF /* windows-msvc */ = { + isa = PBXGroup; + children = ( + B30F143728967728004D40BF /* deps.sh */, + B30F143828967728004D40BF /* build.sh */, + ); + path = "windows-msvc"; + sourceTree = ""; + }; + B30F143928967728004D40BF /* linux-mingw */ = { + isa = PBXGroup; + children = ( + B30F143A28967728004D40BF /* scan_dll.py */, + B30F143B28967728004D40BF /* build.sh */, + B30F143C28967728004D40BF /* upload.sh */, + B30F143D28967728004D40BF /* docker.sh */, + ); + path = "linux-mingw"; + sourceTree = ""; + }; + B30F143E28967728004D40BF /* transifex */ = { + isa = PBXGroup; + children = ( + B30F143F28967728004D40BF /* build.sh */, + B30F144028967728004D40BF /* docker.sh */, + ); + path = transifex; + sourceTree = ""; + }; + B30F144128967728004D40BF /* common */ = { + isa = PBXGroup; + children = ( + B30F144228967728004D40BF /* post-upload.sh */, + B30F144328967728004D40BF /* pre-upload.sh */, + ); + path = common; + sourceTree = ""; + }; + B30F144428967728004D40BF /* linux-fresh */ = { + isa = PBXGroup; + children = ( + B30F144528967728004D40BF /* build.sh */, + B30F144628967728004D40BF /* upload.sh */, + B30F144728967728004D40BF /* docker.sh */, + ); + path = "linux-fresh"; + sourceTree = ""; + }; + B30F144828967728004D40BF /* android */ = { + isa = PBXGroup; + children = ( + B30F144928967728004D40BF /* build.sh */, + B30F144A28967728004D40BF /* upload.sh */, + ); + path = android; + sourceTree = ""; + }; + B30F144B28967728004D40BF /* linux-clang-format */ = { + isa = PBXGroup; + children = ( + B30F144C28967728004D40BF /* script.sh */, + B30F144D28967728004D40BF /* build.sh */, + B30F144E28967728004D40BF /* docker.sh */, + ); + path = "linux-clang-format"; + sourceTree = ""; + }; + B30F145028967728004D40BF /* dist */ = { + isa = PBXGroup; + children = ( + B30F145128967728004D40BF /* citra.xml */, + B30F145228967728004D40BF /* license.md */, + B30F145328967728004D40BF /* icon.png */, + B30F145428967728004D40BF /* citra.6 */, + B30F145528967728004D40BF /* scripting */, + B30F145728967728004D40BF /* compatibility_list */, + B30F145928967728004D40BF /* citra.desktop */, + B30F145A28967728004D40BF /* qt_themes */, + B30F15C82896772A004D40BF /* citra.svg */, + B30F15C92896772A004D40BF /* citra.icns */, + B30F15CA2896772A004D40BF /* languages */, + B30F15E52896772A004D40BF /* citra-qt.6 */, + B30F15E62896772A004D40BF /* citra.ico */, + B30F15E72896772A004D40BF /* doc-icon.png */, + B30F15E82896772A004D40BF /* installer */, + B30F15F22896772A004D40BF /* citra.manifest */, + ); + path = dist; + sourceTree = ""; + }; + B30F145528967728004D40BF /* scripting */ = { + isa = PBXGroup; + children = ( + B30F145628967728004D40BF /* citra.py */, + ); + path = scripting; + sourceTree = ""; + }; + B30F145728967728004D40BF /* compatibility_list */ = { + isa = PBXGroup; + children = ( + B30F145828967728004D40BF /* compatibility_list.qrc */, + ); + path = compatibility_list; + sourceTree = ""; + }; + B30F145A28967728004D40BF /* qt_themes */ = { + isa = PBXGroup; + children = ( + B30F145B28967728004D40BF /* qdarkstyle */, + B30F149828967728004D40BF /* colorful_midnight_blue */, + B30F149E28967728004D40BF /* default */, + B30F14B328967728004D40BF /* colorful */, + B30F14C528967728004D40BF /* qdarkstyle_midnight_blue */, + B30F15C22896772A004D40BF /* colorful_dark */, + ); + path = qt_themes; + sourceTree = ""; + }; + B30F145B28967728004D40BF /* qdarkstyle */ = { + isa = PBXGroup; + children = ( + B30F145C28967728004D40BF /* LICENSE.md */, + B30F145D28967728004D40BF /* style.qss */, + B30F145E28967728004D40BF /* icons */, + B30F146E28967728004D40BF /* rc */, + B30F149728967728004D40BF /* style.qrc */, + ); + path = qdarkstyle; + sourceTree = ""; + }; + B30F145E28967728004D40BF /* icons */ = { + isa = PBXGroup; + children = ( + B30F145F28967728004D40BF /* index.theme */, + B30F146028967728004D40BF /* 16x16 */, + B30F146528967728004D40BF /* 256x256 */, + B30F146728967728004D40BF /* 48x48 */, + ); + path = icons; + sourceTree = ""; + }; + B30F146028967728004D40BF /* 16x16 */ = { + isa = PBXGroup; + children = ( + B30F146128967728004D40BF /* connected_notification.png */, + B30F146228967728004D40BF /* connected.png */, + B30F146328967728004D40BF /* lock.png */, + B30F146428967728004D40BF /* disconnected.png */, + ); + path = 16x16; + sourceTree = ""; + }; + B30F146528967728004D40BF /* 256x256 */ = { + isa = PBXGroup; + children = ( + B30F146628967728004D40BF /* plus_folder.png */, + ); + path = 256x256; + sourceTree = ""; + }; + B30F146728967728004D40BF /* 48x48 */ = { + isa = PBXGroup; + children = ( + B30F146828967728004D40BF /* plus.png */, + B30F146928967728004D40BF /* no_avatar.png */, + B30F146A28967728004D40BF /* chip.png */, + B30F146B28967728004D40BF /* folder.png */, + B30F146C28967728004D40BF /* sd_card.png */, + B30F146D28967728004D40BF /* bad_folder.png */, + ); + path = 48x48; + sourceTree = ""; + }; + B30F146E28967728004D40BF /* rc */ = { + isa = PBXGroup; + children = ( + B30F146F28967728004D40BF /* down_arrow.png */, + B30F147028967728004D40BF /* branch_closed.png */, + B30F147128967728004D40BF /* close-hover.png */, + B30F147228967728004D40BF /* radio_checked_disabled.png */, + B30F147328967728004D40BF /* Vsepartoolbar.png */, + B30F147428967728004D40BF /* radio_unchecked_focus.png */, + B30F147528967728004D40BF /* Vmovetoolbar.png */, + B30F147628967728004D40BF /* checkbox_checked_focus.png */, + B30F147728967728004D40BF /* radio_checked.png */, + B30F147828967728004D40BF /* up_arrow_disabled.png */, + B30F147928967728004D40BF /* left_arrow.png */, + B30F147A28967728004D40BF /* checkbox_unchecked.png */, + B30F147B28967728004D40BF /* right_arrow.png */, + B30F147C28967728004D40BF /* stylesheet-branch-end.png */, + B30F147D28967728004D40BF /* checkbox_indeterminate_disabled.png */, + B30F147E28967728004D40BF /* branch_open.png */, + B30F147F28967728004D40BF /* radio_checked_focus.png */, + B30F148028967728004D40BF /* checkbox_unchecked_focus.png */, + B30F148128967728004D40BF /* checkbox_checked_disabled.png */, + B30F148228967728004D40BF /* stylesheet-vline.png */, + B30F148328967728004D40BF /* Hsepartoolbar.png */, + B30F148428967728004D40BF /* checkbox_checked.png */, + B30F148528967728004D40BF /* right_arrow_disabled.png */, + B30F148628967728004D40BF /* radio_unchecked.png */, + B30F148728967728004D40BF /* Hmovetoolbar.png */, + B30F148828967728004D40BF /* undock.png */, + B30F148928967728004D40BF /* branch_open-on.png */, + B30F148A28967728004D40BF /* stylesheet-branch-more.png */, + B30F148B28967728004D40BF /* up_arrow.png */, + B30F148C28967728004D40BF /* checkbox_indeterminate_focus.png */, + B30F148D28967728004D40BF /* close-pressed.png */, + B30F148E28967728004D40BF /* checkbox_indeterminate.png */, + B30F148F28967728004D40BF /* left_arrow_disabled.png */, + B30F149028967728004D40BF /* transparent.png */, + B30F149128967728004D40BF /* radio_unchecked_disabled.png */, + B30F149228967728004D40BF /* down_arrow_disabled.png */, + B30F149328967728004D40BF /* checkbox_unchecked_disabled.png */, + B30F149428967728004D40BF /* branch_closed-on.png */, + B30F149528967728004D40BF /* close.png */, + B30F149628967728004D40BF /* sizegrip.png */, + ); + path = rc; + sourceTree = ""; + }; + B30F149828967728004D40BF /* colorful_midnight_blue */ = { + isa = PBXGroup; + children = ( + B30F149928967728004D40BF /* icons */, + B30F149D28967728004D40BF /* style.qrc */, + ); + path = colorful_midnight_blue; + sourceTree = ""; + }; + B30F149928967728004D40BF /* icons */ = { + isa = PBXGroup; + children = ( + B30F149A28967728004D40BF /* index.theme */, + B30F149B28967728004D40BF /* 16x16 */, + ); + path = icons; + sourceTree = ""; + }; + B30F149B28967728004D40BF /* 16x16 */ = { + isa = PBXGroup; + children = ( + B30F149C28967728004D40BF /* lock.png */, + ); + path = 16x16; + sourceTree = ""; + }; + B30F149E28967728004D40BF /* default */ = { + isa = PBXGroup; + children = ( + B30F149F28967728004D40BF /* icons */, + B30F14B228967728004D40BF /* default.qrc */, + ); + path = default; + sourceTree = ""; + }; + B30F149F28967728004D40BF /* icons */ = { + isa = PBXGroup; + children = ( + B30F14A028967728004D40BF /* index.theme */, + B30F14A128967728004D40BF /* 16x16 */, + B30F14A828967728004D40BF /* 256x256 */, + B30F14AB28967728004D40BF /* 48x48 */, + ); + path = icons; + sourceTree = ""; + }; + B30F14A128967728004D40BF /* 16x16 */ = { + isa = PBXGroup; + children = ( + B30F14A228967728004D40BF /* connected_notification.png */, + B30F14A328967728004D40BF /* connected.png */, + B30F14A428967728004D40BF /* lock.png */, + B30F14A528967728004D40BF /* failed.png */, + B30F14A628967728004D40BF /* disconnected.png */, + B30F14A728967728004D40BF /* checked.png */, + ); + path = 16x16; + sourceTree = ""; + }; + B30F14A828967728004D40BF /* 256x256 */ = { + isa = PBXGroup; + children = ( + B30F14A928967728004D40BF /* citra.png */, + B30F14AA28967728004D40BF /* plus_folder.png */, + ); + path = 256x256; + sourceTree = ""; + }; + B30F14AB28967728004D40BF /* 48x48 */ = { + isa = PBXGroup; + children = ( + B30F14AC28967728004D40BF /* plus.png */, + B30F14AD28967728004D40BF /* no_avatar.png */, + B30F14AE28967728004D40BF /* chip.png */, + B30F14AF28967728004D40BF /* folder.png */, + B30F14B028967728004D40BF /* sd_card.png */, + B30F14B128967728004D40BF /* bad_folder.png */, + ); + path = 48x48; + sourceTree = ""; + }; + B30F14B328967728004D40BF /* colorful */ = { + isa = PBXGroup; + children = ( + B30F14B428967728004D40BF /* style.qss */, + B30F14B528967728004D40BF /* icons */, + B30F14C428967728004D40BF /* style.qrc */, + ); + path = colorful; + sourceTree = ""; + }; + B30F14B528967728004D40BF /* icons */ = { + isa = PBXGroup; + children = ( + B30F14B628967728004D40BF /* index.theme */, + B30F14B728967728004D40BF /* 16x16 */, + B30F14BC28967728004D40BF /* 256x256 */, + B30F14BE28967728004D40BF /* 48x48 */, + ); + path = icons; + sourceTree = ""; + }; + B30F14B728967728004D40BF /* 16x16 */ = { + isa = PBXGroup; + children = ( + B30F14B828967728004D40BF /* connected_notification.png */, + B30F14B928967728004D40BF /* connected.png */, + B30F14BA28967728004D40BF /* lock.png */, + B30F14BB28967728004D40BF /* disconnected.png */, + ); + path = 16x16; + sourceTree = ""; + }; + B30F14BC28967728004D40BF /* 256x256 */ = { + isa = PBXGroup; + children = ( + B30F14BD28967728004D40BF /* plus_folder.png */, + ); + path = 256x256; + sourceTree = ""; + }; + B30F14BE28967728004D40BF /* 48x48 */ = { + isa = PBXGroup; + children = ( + B30F14BF28967728004D40BF /* plus.png */, + B30F14C028967728004D40BF /* chip.png */, + B30F14C128967728004D40BF /* folder.png */, + B30F14C228967728004D40BF /* sd_card.png */, + B30F14C328967728004D40BF /* bad_folder.png */, + ); + path = 48x48; + sourceTree = ""; + }; + B30F14C528967728004D40BF /* qdarkstyle_midnight_blue */ = { + isa = PBXGroup; + children = ( + B30F14C628967728004D40BF /* style.qss */, + B30F14C728967728004D40BF /* icons */, + B30F14D928967728004D40BF /* LICENSE.rst */, + B30F14DA28967729004D40BF /* rc */, + B30F15C12896772A004D40BF /* style.qrc */, + ); + path = qdarkstyle_midnight_blue; + sourceTree = ""; + }; + B30F14C728967728004D40BF /* icons */ = { + isa = PBXGroup; + children = ( + B30F14C828967728004D40BF /* index.theme */, + B30F14C928967728004D40BF /* 16x16 */, + B30F14D028967728004D40BF /* 256x256 */, + B30F14D228967728004D40BF /* 48x48 */, + ); + path = icons; + sourceTree = ""; + }; + B30F14C928967728004D40BF /* 16x16 */ = { + isa = PBXGroup; + children = ( + B30F14CA28967728004D40BF /* connected_notification.png */, + B30F14CB28967728004D40BF /* connected.png */, + B30F14CC28967728004D40BF /* lock.png */, + B30F14CD28967728004D40BF /* view-refresh.png */, + B30F14CE28967728004D40BF /* disconnected.png */, + B30F14CF28967728004D40BF /* refresh.png */, + ); + path = 16x16; + sourceTree = ""; + }; + B30F14D028967728004D40BF /* 256x256 */ = { + isa = PBXGroup; + children = ( + B30F14D128967728004D40BF /* plus_folder.png */, + ); + path = 256x256; + sourceTree = ""; + }; + B30F14D228967728004D40BF /* 48x48 */ = { + isa = PBXGroup; + children = ( + B30F14D328967728004D40BF /* plus.png */, + B30F14D428967728004D40BF /* no_avatar.png */, + B30F14D528967728004D40BF /* chip.png */, + B30F14D628967728004D40BF /* folder.png */, + B30F14D728967728004D40BF /* sd_card.png */, + B30F14D828967728004D40BF /* bad_folder.png */, + ); + path = 48x48; + sourceTree = ""; + }; + B30F14DA28967729004D40BF /* rc */ = { + isa = PBXGroup; + children = ( + B30F14DB28967729004D40BF /* down_arrow.png */, + B30F14DC28967729004D40BF /* branch_closed.png */, + B30F14DD28967729004D40BF /* branch_end.png */, + B30F14DE28967729004D40BF /* line_horizontal.png */, + B30F14DF28967729004D40BF /* close-hover.png */, + B30F14E028967729004D40BF /* arrow_up_disabled@2x.png */, + B30F14E128967729004D40BF /* branch_line_pressed.png */, + B30F14E228967729004D40BF /* arrow_right.png */, + B30F14E328967729004D40BF /* toolbar_move_vertical_disabled.png */, + B30F14E428967729004D40BF /* radio_checked_disabled.png */, + B30F14E528967729004D40BF /* toolbar_separator_horizontal_disabled.png */, + B30F14E628967729004D40BF /* toolbar_separator_horizontal_pressed.png */, + B30F14E728967729004D40BF /* base_icon_focus@2x.png */, + B30F14E828967729004D40BF /* branch_end_disabled@2x.png */, + B30F14E928967729004D40BF /* base_icon_disabled@2x.png */, + B30F14EA28967729004D40BF /* line_horizontal_disabled@2x.png */, + B30F14EB28967729004D40BF /* checkbox_indeterminate_pressed.png */, + B30F14EC28967729004D40BF /* arrow_up.png */, + B30F14ED28967729004D40BF /* toolbar_move_horizontal_disabled@2x.png */, + B30F14EE28967729004D40BF /* branch_more_focus.png */, + B30F14EF28967729004D40BF /* Vsepartoolbar.png */, + B30F14F028967729004D40BF /* toolbar_move_horizontal.png */, + B30F14F128967729004D40BF /* radio_unchecked_focus.png */, + B30F14F228967729004D40BF /* toolbar_move_horizontal_pressed.png */, + B30F14F328967729004D40BF /* branch_closed@2x.png */, + B30F14F428967729004D40BF /* branch_end_pressed.png */, + B30F14F528967729004D40BF /* checkbox_checked_pressed@2x.png */, + B30F14F628967729004D40BF /* Vmovetoolbar.png */, + B30F14F728967729004D40BF /* checkbox_checked_focus.png */, + B30F14F828967729004D40BF /* radio_checked.png */, + B30F14F928967729004D40BF /* branch_more_pressed.png */, + B30F14FA28967729004D40BF /* toolbar_move_horizontal_disabled.png */, + B30F14FB28967729004D40BF /* checkbox_indeterminate_focus@2x.png */, + B30F14FC28967729004D40BF /* line_horizontal@2x.png */, + B30F14FD28967729004D40BF /* arrow_left@2x.png */, + B30F14FE28967729004D40BF /* branch_open_focus@2x.png */, + B30F14FF28967729004D40BF /* window_undock_focus.png */, + B30F150028967729004D40BF /* arrow_up_pressed.png */, + B30F150128967729004D40BF /* arrow_left_disabled@2x.png */, + B30F150228967729004D40BF /* up_arrow_disabled.png */, + B30F150328967729004D40BF /* transparent_focus@2x.png */, + B30F150428967729004D40BF /* radio_unchecked_pressed.png */, + B30F150528967729004D40BF /* branch_end_pressed@2x.png */, + B30F150628967729004D40BF /* checkbox_checked@2x.png */, + B30F150728967729004D40BF /* line_horizontal_focus.png */, + B30F150828967729004D40BF /* window_grip_pressed.png */, + B30F150928967729004D40BF /* left_arrow.png */, + B30F150A28967729004D40BF /* arrow_left.png */, + B30F150B28967729004D40BF /* arrow_left_disabled.png */, + B30F150C28967729004D40BF /* branch_line_focus.png */, + B30F150D28967729004D40BF /* window_undock_disabled@2x.png */, + B30F150E28967729004D40BF /* arrow_left_pressed@2x.png */, + B30F150F28967729004D40BF /* window_grip_pressed@2x.png */, + B30F151028967729004D40BF /* toolbar_move_vertical@2x.png */, + B30F151128967729004D40BF /* checkbox_unchecked.png */, + B30F151228967729004D40BF /* radio_checked_pressed@2x.png */, + B30F151328967729004D40BF /* arrow_down@2x.png */, + B30F151428967729004D40BF /* window_minimize_pressed@2x.png */, + B30F151528967729004D40BF /* window_close_pressed@2x.png */, + B30F151628967729004D40BF /* branch_open_focus.png */, + B30F151728967729004D40BF /* checkbox_indeterminate_pressed@2x.png */, + B30F151828967729004D40BF /* arrow_left_focus@2x.png */, + B30F151928967729004D40BF /* arrow_down_pressed.png */, + B30F151A28967729004D40BF /* right_arrow.png */, + B30F151B28967729004D40BF /* stylesheet-branch-end.png */, + B30F151C28967729004D40BF /* toolbar_separator_vertical_focus.png */, + B30F151D28967729004D40BF /* toolbar_move_vertical_pressed.png */, + B30F151E28967729004D40BF /* checkbox_checked_pressed.png */, + B30F151F28967729004D40BF /* base_icon_pressed@2x.png */, + B30F152028967729004D40BF /* transparent@2x.png */, + B30F152128967729004D40BF /* line_vertical_focus.png */, + B30F152228967729004D40BF /* branch_line@2x.png */, + B30F152328967729004D40BF /* toolbar_separator_horizontal_disabled@2x.png */, + B30F152428967729004D40BF /* checkbox_indeterminate_disabled.png */, + B30F152528967729004D40BF /* branch_open_disabled.png */, + B30F152628967729004D40BF /* transparent_disabled.png */, + B30F152728967729004D40BF /* toolbar_separator_horizontal.png */, + B30F152828967729004D40BF /* window_close_pressed.png */, + B30F152928967729004D40BF /* toolbar_move_vertical.png */, + B30F152A28967729004D40BF /* window_grip.png */, + B30F152B28967729004D40BF /* toolbar_move_horizontal_focus@2x.png */, + B30F152C28967729004D40BF /* branch_open.png */, + B30F152D28967729004D40BF /* base_icon_disabled.png */, + B30F152E28967729004D40BF /* arrow_right_pressed@2x.png */, + B30F152F28967729004D40BF /* branch_open_pressed@2x.png */, + B30F153028967729004D40BF /* line_vertical.png */, + B30F153128967729004D40BF /* branch_open_pressed.png */, + B30F153228967729004D40BF /* toolbar_separator_horizontal_focus@2x.png */, + B30F153328967729004D40BF /* window_close_focus.png */, + B30F153428967729004D40BF /* radio_checked_focus@2x.png */, + B30F153528967729004D40BF /* toolbar_move_vertical_focus@2x.png */, + B30F153628967729004D40BF /* branch_open@2x.png */, + B30F153728967729004D40BF /* window_undock.png */, + B30F153828967729004D40BF /* radio_checked@2x.png */, + B30F153928967729004D40BF /* toolbar_separator_vertical@2x.png */, + B30F153A28967729004D40BF /* branch_more.png */, + B30F153B28967729004D40BF /* branch_line.png */, + B30F153C28967729004D40BF /* branch_line_pressed@2x.png */, + B30F153D28967729004D40BF /* branch_open_disabled@2x.png */, + B30F153E28967729004D40BF /* window_minimize.png */, + B30F153F28967729004D40BF /* branch_more@2x.png */, + B30F154028967729004D40BF /* arrow_right_disabled@2x.png */, + B30F154128967729004D40BF /* toolbar_separator_vertical_pressed.png */, + B30F154228967729004D40BF /* branch_closed_focus.png */, + B30F154328967729004D40BF /* line_vertical_pressed@2x.png */, + B30F154428967729004D40BF /* window_grip_disabled@2x.png */, + B30F154528967729004D40BF /* arrow_up_pressed@2x.png */, + B30F154628967729004D40BF /* branch_closed_pressed.png */, + B30F154728967729004D40BF /* radio_checked_focus.png */, + B30F154828967729004D40BF /* branch_end_focus.png */, + B30F154928967729004D40BF /* arrow_down_disabled.png */, + B30F154A28967729004D40BF /* toolbar_separator_horizontal@2x.png */, + B30F154B28967729004D40BF /* window_minimize@2x.png */, + B30F154C28967729004D40BF /* checkbox_unchecked_focus.png */, + B30F154D28967729004D40BF /* window_minimize_pressed.png */, + B30F154E28967729004D40BF /* window_grip_focus@2x.png */, + B30F154F28967729004D40BF /* radio_checked_disabled@2x.png */, + B30F155028967729004D40BF /* window_minimize_disabled.png */, + B30F155128967729004D40BF /* checkbox_checked_disabled.png */, + B30F155228967729004D40BF /* checkbox_indeterminate@2x.png */, + B30F155328967729004D40BF /* stylesheet-vline.png */, + B30F155428967729004D40BF /* checkbox_unchecked_focus@2x.png */, + B30F155528967729004D40BF /* window_grip_focus.png */, + B30F155628967729004D40BF /* line_vertical_disabled@2x.png */, + B30F155728967729004D40BF /* branch_line_disabled@2x.png */, + B30F155828967729004D40BF /* toolbar_separator_horizontal_focus.png */, + B30F155928967729004D40BF /* arrow_down_disabled@2x.png */, + B30F155A28967729004D40BF /* branch_closed_focus@2x.png */, + B30F155B28967729004D40BF /* branch_closed_pressed@2x.png */, + B30F155C28967729004D40BF /* window_grip@2x.png */, + B30F155D28967729004D40BF /* radio_unchecked_focus@2x.png */, + B30F155E28967729004D40BF /* line_horizontal_disabled.png */, + B30F155F28967729004D40BF /* arrow_right_focus@2x.png */, + B30F156028967729004D40BF /* line_vertical@2x.png */, + B30F15612896772A004D40BF /* arrow_right_pressed.png */, + B30F15622896772A004D40BF /* Hsepartoolbar.png */, + B30F15632896772A004D40BF /* checkbox_unchecked@2x.png */, + B30F15642896772A004D40BF /* toolbar_separator_horizontal_pressed@2x.png */, + B30F15652896772A004D40BF /* window_close_disabled.png */, + B30F15662896772A004D40BF /* checkbox_unchecked_pressed.png */, + B30F15672896772A004D40BF /* transparent_focus.png */, + B30F15682896772A004D40BF /* window_close.png */, + B30F15692896772A004D40BF /* toolbar_separator_vertical_disabled.png */, + B30F156A2896772A004D40BF /* checkbox_checked.png */, + B30F156B2896772A004D40BF /* branch_line_disabled.png */, + B30F156C2896772A004D40BF /* radio_unchecked_disabled@2x.png */, + B30F156D2896772A004D40BF /* right_arrow_disabled.png */, + B30F156E2896772A004D40BF /* arrow_up_focus@2x.png */, + B30F156F2896772A004D40BF /* radio_unchecked.png */, + B30F15702896772A004D40BF /* Hmovetoolbar.png */, + B30F15712896772A004D40BF /* checkbox_unchecked_pressed@2x.png */, + B30F15722896772A004D40BF /* checkbox_indeterminate_disabled@2x.png */, + B30F15732896772A004D40BF /* arrow_left_pressed.png */, + B30F15742896772A004D40BF /* base_icon@2x.png */, + B30F15752896772A004D40BF /* line_vertical_focus@2x.png */, + B30F15762896772A004D40BF /* transparent_pressed.png */, + B30F15772896772A004D40BF /* undock.png */, + B30F15782896772A004D40BF /* window_undock_disabled.png */, + B30F15792896772A004D40BF /* window_close@2x.png */, + B30F157A2896772A004D40BF /* checkbox_checked_disabled@2x.png */, + B30F157B2896772A004D40BF /* line_horizontal_pressed@2x.png */, + B30F157C2896772A004D40BF /* window_minimize_disabled@2x.png */, + B30F157D2896772A004D40BF /* toolbar_move_vertical_focus.png */, + B30F157E2896772A004D40BF /* window_undock_pressed@2x.png */, + B30F157F2896772A004D40BF /* branch_end_focus@2x.png */, + B30F15802896772A004D40BF /* toolbar_move_horizontal@2x.png */, + B30F15812896772A004D40BF /* line_horizontal_pressed.png */, + B30F15822896772A004D40BF /* toolbar_separator_vertical.png */, + B30F15832896772A004D40BF /* arrow_up@2x.png */, + B30F15842896772A004D40BF /* transparent_disabled@2x.png */, + B30F15852896772A004D40BF /* branch_open-on.png */, + B30F15862896772A004D40BF /* window_undock_pressed.png */, + B30F15872896772A004D40BF /* branch_more_disabled.png */, + B30F15882896772A004D40BF /* branch_more_pressed@2x.png */, + B30F15892896772A004D40BF /* toolbar_move_horizontal_focus.png */, + B30F158A2896772A004D40BF /* arrow_up_focus.png */, + B30F158B2896772A004D40BF /* line_vertical_pressed.png */, + B30F158C2896772A004D40BF /* branch_more_focus@2x.png */, + B30F158D2896772A004D40BF /* toolbar_move_horizontal_pressed@2x.png */, + B30F158E2896772A004D40BF /* stylesheet-branch-more.png */, + B30F158F2896772A004D40BF /* up_arrow.png */, + B30F15902896772A004D40BF /* toolbar_separator_vertical_disabled@2x.png */, + B30F15912896772A004D40BF /* window_undock_focus@2x.png */, + B30F15922896772A004D40BF /* branch_closed_disabled@2x.png */, + B30F15932896772A004D40BF /* toolbar_move_vertical_pressed@2x.png */, + B30F15942896772A004D40BF /* branch_end_disabled.png */, + B30F15952896772A004D40BF /* window_close_disabled@2x.png */, + B30F15962896772A004D40BF /* radio_unchecked@2x.png */, + B30F15972896772A004D40BF /* arrow_up_disabled.png */, + B30F15982896772A004D40BF /* branch_end@2x.png */, + B30F15992896772A004D40BF /* checkbox_indeterminate_focus.png */, + B30F159A2896772A004D40BF /* base_icon_focus.png */, + B30F159B2896772A004D40BF /* line_vertical_disabled.png */, + B30F159C2896772A004D40BF /* close-pressed.png */, + B30F159D2896772A004D40BF /* radio_unchecked_pressed@2x.png */, + B30F159E2896772A004D40BF /* branch_more_disabled@2x.png */, + B30F159F2896772A004D40BF /* arrow_left_focus.png */, + B30F15A02896772A004D40BF /* checkbox_unchecked_disabled@2x.png */, + B30F15A12896772A004D40BF /* branch_line_focus@2x.png */, + B30F15A22896772A004D40BF /* window_close_focus@2x.png */, + B30F15A32896772A004D40BF /* checkbox_indeterminate.png */, + B30F15A42896772A004D40BF /* radio_checked_pressed.png */, + B30F15A52896772A004D40BF /* arrow_down_focus.png */, + B30F15A62896772A004D40BF /* toolbar_separator_vertical_focus@2x.png */, + B30F15A72896772A004D40BF /* arrow_right_focus.png */, + B30F15A82896772A004D40BF /* left_arrow_disabled.png */, + B30F15A92896772A004D40BF /* transparent.png */, + B30F15AA2896772A004D40BF /* window_minimize_focus.png */, + B30F15AB2896772A004D40BF /* base_icon_pressed.png */, + B30F15AC2896772A004D40BF /* transparent_pressed@2x.png */, + B30F15AD2896772A004D40BF /* toolbar_move_vertical_disabled@2x.png */, + B30F15AE2896772A004D40BF /* arrow_down.png */, + B30F15AF2896772A004D40BF /* base_icon.png */, + B30F15B02896772A004D40BF /* branch_closed_disabled.png */, + B30F15B12896772A004D40BF /* radio_unchecked_disabled.png */, + B30F15B22896772A004D40BF /* down_arrow_disabled.png */, + B30F15B32896772A004D40BF /* arrow_right@2x.png */, + B30F15B42896772A004D40BF /* arrow_right_disabled.png */, + B30F15B52896772A004D40BF /* line_horizontal_focus@2x.png */, + B30F15B62896772A004D40BF /* window_minimize_focus@2x.png */, + B30F15B72896772A004D40BF /* window_grip_disabled.png */, + B30F15B82896772A004D40BF /* checkbox_unchecked_disabled.png */, + B30F15B92896772A004D40BF /* checkbox_checked_focus@2x.png */, + B30F15BA2896772A004D40BF /* branch_closed-on.png */, + B30F15BB2896772A004D40BF /* window_undock@2x.png */, + B30F15BC2896772A004D40BF /* close.png */, + B30F15BD2896772A004D40BF /* sizegrip.png */, + B30F15BE2896772A004D40BF /* toolbar_separator_vertical_pressed@2x.png */, + B30F15BF2896772A004D40BF /* arrow_down_pressed@2x.png */, + B30F15C02896772A004D40BF /* arrow_down_focus@2x.png */, + ); + path = rc; + sourceTree = ""; + }; + B30F15C22896772A004D40BF /* colorful_dark */ = { + isa = PBXGroup; + children = ( + B30F15C32896772A004D40BF /* icons */, + B30F15C72896772A004D40BF /* style.qrc */, + ); + path = colorful_dark; + sourceTree = ""; + }; + B30F15C32896772A004D40BF /* icons */ = { + isa = PBXGroup; + children = ( + B30F15C42896772A004D40BF /* index.theme */, + B30F15C52896772A004D40BF /* 16x16 */, + ); + path = icons; + sourceTree = ""; + }; + B30F15C52896772A004D40BF /* 16x16 */ = { + isa = PBXGroup; + children = ( + B30F15C62896772A004D40BF /* lock.png */, + ); + path = 16x16; + sourceTree = ""; + }; + B30F15CA2896772A004D40BF /* languages */ = { + isa = PBXGroup; + children = ( + B30F15CB2896772A004D40BF /* .tx */, + B30F15CD2896772A004D40BF /* lt_LT.ts */, + B30F15CE2896772A004D40BF /* de.ts */, + B30F15CF2896772A004D40BF /* tr_TR.ts */, + B30F15D02896772A004D40BF /* vi_VN.ts */, + B30F15D12896772A004D40BF /* nb.ts */, + B30F15D22896772A004D40BF /* ko_KR.ts */, + B30F15D32896772A004D40BF /* it.ts */, + B30F15D42896772A004D40BF /* zh_TW.ts */, + B30F15D52896772A004D40BF /* pt_BR.ts */, + B30F15D62896772A004D40BF /* zh_CN.ts */, + B30F15D72896772A004D40BF /* ro_RO.ts */, + B30F15D82896772A004D40BF /* fr.ts */, + B30F15D92896772A004D40BF /* nl.ts */, + B30F15DA2896772A004D40BF /* fi.ts */, + B30F15DB2896772A004D40BF /* README.md */, + B30F15DC2896772A004D40BF /* fi_FI.ts */, + B30F15DD2896772A004D40BF /* .gitignore */, + B30F15DE2896772A004D40BF /* ja_JP.ts */, + B30F15DF2896772A004D40BF /* es_ES.ts */, + B30F15E02896772A004D40BF /* da_DK.ts */, + B30F15E12896772A004D40BF /* el.ts */, + B30F15E22896772A004D40BF /* id.ts */, + B30F15E32896772A004D40BF /* ru_RU.ts */, + B30F15E42896772A004D40BF /* pl_PL.ts */, + ); + path = languages; + sourceTree = ""; + }; + B30F15CB2896772A004D40BF /* .tx */ = { + isa = PBXGroup; + children = ( + B30F15CC2896772A004D40BF /* config */, + ); + path = .tx; + sourceTree = ""; + }; + B30F15E82896772A004D40BF /* installer */ = { + isa = PBXGroup; + children = ( + B30F15E92896772A004D40BF /* CMakeLists.txt */, + B30F15EA2896772A004D40BF /* config */, + B30F15F12896772A004D40BF /* README.md */, + ); + path = installer; + sourceTree = ""; + }; + B30F15EA2896772A004D40BF /* config */ = { + isa = PBXGroup; + children = ( + B30F15EB2896772A004D40BF /* icon.png */, + B30F15EC2896772A004D40BF /* icon.icns */, + B30F15ED2896772A004D40BF /* icon.ico */, + B30F15EE2896772A004D40BF /* config_linux.xml */, + B30F15EF2896772A004D40BF /* config_mac.xml */, + B30F15F02896772A004D40BF /* config_windows.xml */, + ); + path = config; + sourceTree = ""; + }; + B30F15F32896772A004D40BF /* externals */ = { + isa = PBXGroup; + children = ( + B30F15F42896772A004D40BF /* inih */, + B30F15F72896772A004D40BF /* soundtouch */, + B30F15F82896772A004D40BF /* cubeb */, + B30F15F92896772A004D40BF /* enet */, + B30F15FA2896772A004D40BF /* CMakeLists.txt */, + B30F15FB2896772A004D40BF /* teakra */, + B30F15FC2896772A004D40BF /* getopt */, + B30F16002896772A004D40BF /* boost */, + B30F16012896772A004D40BF /* fmt */, + B30F16022896772A004D40BF /* cmake-modules */, + B30F16092896772A004D40BF /* cryptopp */, + B30F160C2896772A004D40BF /* dynarmic */, + B30F160D2896772A004D40BF /* nihstro */, + B30F160E2896772A004D40BF /* android-ifaddrs */, + B30F16122896772A004D40BF /* httplib */, + B30F16152896772A004D40BF /* xbyak */, + B30F16162896772A004D40BF /* json */, + B30F16192896772A004D40BF /* cpp-jwt */, + B30F161A2896772A004D40BF /* zstd */, + B30F161B2896772A004D40BF /* catch */, + B30F161C2896772A004D40BF /* glad */, + B30F16262896772A004D40BF /* libressl */, + B30F16272896772A004D40BF /* lodepng */, + B30F162A2896772A004D40BF /* microprofile */, + B30F162F2896772A004D40BF /* libyuv */, + B30F16302896772A004D40BF /* open_source_archives */, + B30F16382896772A004D40BF /* libusb */, + B30F163C2896772A004D40BF /* discord-rpc */, + ); + path = externals; + sourceTree = ""; + }; + B30F15F42896772A004D40BF /* inih */ = { + isa = PBXGroup; + children = ( + B30F15F52896772A004D40BF /* inih */, + B30F15F62896772A004D40BF /* CMakeLists.txt */, + ); + path = inih; + sourceTree = ""; + }; + B30F15F52896772A004D40BF /* inih */ = { + isa = PBXGroup; + children = ( + ); + path = inih; + sourceTree = ""; + }; + B30F15F72896772A004D40BF /* soundtouch */ = { + isa = PBXGroup; + children = ( + ); + path = soundtouch; + sourceTree = ""; + }; + B30F15F82896772A004D40BF /* cubeb */ = { + isa = PBXGroup; + children = ( + ); + path = cubeb; + sourceTree = ""; + }; + B30F15F92896772A004D40BF /* enet */ = { + isa = PBXGroup; + children = ( + ); + path = enet; + sourceTree = ""; + }; + B30F15FB2896772A004D40BF /* teakra */ = { + isa = PBXGroup; + children = ( + ); + path = teakra; + sourceTree = ""; + }; + B30F15FC2896772A004D40BF /* getopt */ = { + isa = PBXGroup; + children = ( + B30F15FD2896772A004D40BF /* CMakeLists.txt */, + B30F15FE2896772A004D40BF /* getopt.h */, + B30F15FF2896772A004D40BF /* getopt.c */, + ); + path = getopt; + sourceTree = ""; + }; + B30F16002896772A004D40BF /* boost */ = { + isa = PBXGroup; + children = ( + ); + path = boost; + sourceTree = ""; + }; + B30F16012896772A004D40BF /* fmt */ = { + isa = PBXGroup; + children = ( + ); + path = fmt; + sourceTree = ""; + }; + B30F16022896772A004D40BF /* cmake-modules */ = { + isa = PBXGroup; + children = ( + B30F16032896772A004D40BF /* FindSDL2.cmake */, + B30F16042896772A004D40BF /* FindFFmpeg.cmake */, + B30F16052896772A004D40BF /* GetGitRevisionDescription.cmake */, + B30F16062896772A004D40BF /* GetGitRevisionDescription.cmake.in */, + B30F16072896772A004D40BF /* WindowsCopyFiles.cmake */, + B30F16082896772A004D40BF /* FindLibUSB.cmake */, + ); + path = "cmake-modules"; + sourceTree = ""; + }; + B30F16092896772A004D40BF /* cryptopp */ = { + isa = PBXGroup; + children = ( + B30F160A2896772A004D40BF /* CMakeLists.txt */, + B30F160B2896772A004D40BF /* cryptopp */, + ); + path = cryptopp; + sourceTree = ""; + }; + B30F160B2896772A004D40BF /* cryptopp */ = { + isa = PBXGroup; + children = ( + ); + path = cryptopp; + sourceTree = ""; + }; + B30F160C2896772A004D40BF /* dynarmic */ = { + isa = PBXGroup; + children = ( + ); + path = dynarmic; + sourceTree = ""; + }; + B30F160D2896772A004D40BF /* nihstro */ = { + isa = PBXGroup; + children = ( + ); + path = nihstro; + sourceTree = ""; + }; + B30F160E2896772A004D40BF /* android-ifaddrs */ = { + isa = PBXGroup; + children = ( + B30F160F2896772A004D40BF /* CMakeLists.txt */, + B30F16102896772A004D40BF /* ifaddrs.c */, + B30F16112896772A004D40BF /* ifaddrs.h */, + ); + path = "android-ifaddrs"; + sourceTree = ""; + }; + B30F16122896772A004D40BF /* httplib */ = { + isa = PBXGroup; + children = ( + B30F16132896772A004D40BF /* httplib.h */, + B30F16142896772A004D40BF /* README.md */, + ); + path = httplib; + sourceTree = ""; + }; + B30F16152896772A004D40BF /* xbyak */ = { + isa = PBXGroup; + children = ( + ); + path = xbyak; + sourceTree = ""; + }; + B30F16162896772A004D40BF /* json */ = { + isa = PBXGroup; + children = ( + B30F16172896772A004D40BF /* json.hpp */, + B30F16182896772A004D40BF /* README.md */, + ); + path = json; + sourceTree = ""; + }; + B30F16192896772A004D40BF /* cpp-jwt */ = { + isa = PBXGroup; + children = ( + ); + path = "cpp-jwt"; + sourceTree = ""; + }; + B30F161A2896772A004D40BF /* zstd */ = { + isa = PBXGroup; + children = ( + ); + path = zstd; + sourceTree = ""; + }; + B30F161B2896772A004D40BF /* catch */ = { + isa = PBXGroup; + children = ( + ); + path = catch; + sourceTree = ""; + }; + B30F161C2896772A004D40BF /* glad */ = { + isa = PBXGroup; + children = ( + B30F161D2896772A004D40BF /* CMakeLists.txt */, + B30F161E2896772A004D40BF /* include */, + B30F16232896772A004D40BF /* Readme.md */, + B30F16242896772A004D40BF /* src */, + ); + path = glad; + sourceTree = ""; + }; + B30F161E2896772A004D40BF /* include */ = { + isa = PBXGroup; + children = ( + B30F161F2896772A004D40BF /* KHR */, + B30F16212896772A004D40BF /* glad */, + ); + path = include; + sourceTree = ""; + }; + B30F161F2896772A004D40BF /* KHR */ = { + isa = PBXGroup; + children = ( + B30F16202896772A004D40BF /* khrplatform.h */, + ); + path = KHR; + sourceTree = ""; + }; + B30F16212896772A004D40BF /* glad */ = { + isa = PBXGroup; + children = ( + B30F16222896772A004D40BF /* glad.h */, + ); + path = glad; + sourceTree = ""; + }; + B30F16242896772A004D40BF /* src */ = { + isa = PBXGroup; + children = ( + B30F16252896772A004D40BF /* glad.c */, + ); + path = src; + sourceTree = ""; + }; + B30F16262896772A004D40BF /* libressl */ = { + isa = PBXGroup; + children = ( + ); + path = libressl; + sourceTree = ""; + }; + B30F16272896772A004D40BF /* lodepng */ = { + isa = PBXGroup; + children = ( + B30F16282896772A004D40BF /* CMakeLists.txt */, + B30F16292896772A004D40BF /* lodepng */, + ); + path = lodepng; + sourceTree = ""; + }; + B30F16292896772A004D40BF /* lodepng */ = { + isa = PBXGroup; + children = ( + ); + path = lodepng; + sourceTree = ""; + }; + B30F162A2896772A004D40BF /* microprofile */ = { + isa = PBXGroup; + children = ( + B30F162B2896772A004D40BF /* microprofile_html.h */, + B30F162C2896772A004D40BF /* README.md */, + B30F162D2896772A004D40BF /* microprofile.h */, + B30F162E2896772A004D40BF /* microprofileui.h */, + ); + path = microprofile; + sourceTree = ""; + }; + B30F162F2896772A004D40BF /* libyuv */ = { + isa = PBXGroup; + children = ( + ); + path = libyuv; + sourceTree = ""; + }; + B30F16302896772A004D40BF /* open_source_archives */ = { + isa = PBXGroup; + children = ( + B30F16312896772A004D40BF /* CMakeLists.txt */, + B30F16322896772A004D40BF /* include */, + B30F16372896772A004D40BF /* Readme.md */, + ); + path = open_source_archives; + sourceTree = ""; + }; + B30F16322896772A004D40BF /* include */ = { + isa = PBXGroup; + children = ( + B30F16332896772A004D40BF /* shared_font.app.romfs.h */, + B30F16342896772A004D40BF /* mii.app.romfs.h */, + B30F16352896772A004D40BF /* country_list.app.romfs.h */, + B30F16362896772A004D40BF /* bad_word_list.app.romfs.h */, + ); + path = include; + sourceTree = ""; + }; + B30F16382896772A004D40BF /* libusb */ = { + isa = PBXGroup; + children = ( + B30F16392896772A004D40BF /* CMakeLists.txt */, + B30F163A2896772A004D40BF /* config.h.in */, + B30F163B2896772A004D40BF /* libusb */, + ); + path = libusb; + sourceTree = ""; + }; + B30F163B2896772A004D40BF /* libusb */ = { + isa = PBXGroup; + children = ( + ); + path = libusb; + sourceTree = ""; + }; + B30F163C2896772A004D40BF /* discord-rpc */ = { + isa = PBXGroup; + children = ( + ); + path = "discord-rpc"; + sourceTree = ""; + }; + B30F16432896772A004D40BF /* hooks */ = { + isa = PBXGroup; + children = ( + B30F16442896772A004D40BF /* pre-commit */, + ); + path = hooks; + sourceTree = ""; + }; + B30F16452896772A004D40BF /* .github */ = { + isa = PBXGroup; + children = ( + B30F16462896772A004D40BF /* FUNDING.yml */, + B30F16472896772A004D40BF /* workflows */, + B30F164B2896772A004D40BF /* ISSUE_TEMPLATE */, + ); + path = .github; + sourceTree = ""; + }; + B30F16472896772A004D40BF /* workflows */ = { + isa = PBXGroup; + children = ( + B30F16482896772A004D40BF /* publish.yml */, + B30F16492896772A004D40BF /* ci-merge.js */, + B30F164A2896772A004D40BF /* ci.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B30F164B2896772A004D40BF /* ISSUE_TEMPLATE */ = { + isa = PBXGroup; + children = ( + B30F164C2896772A004D40BF /* bug-report-feature-request.md */, + B30F164D2896772A004D40BF /* config.yml */, + ); + path = ISSUE_TEMPLATE; + sourceTree = ""; + }; + B30F16512896772A004D40BF /* CMakeModules */ = { + isa = PBXGroup; + children = ( + B30F16522896772A004D40BF /* CopyCitraFFmpegDeps.cmake */, + B30F16532896772A004D40BF /* MinGWCross.cmake */, + B30F16542896772A004D40BF /* CopyCitraQt5Deps.cmake */, + B30F16552896772A004D40BF /* BuildInstaller.cmake */, + B30F16562896772A004D40BF /* AndroidNdkModules.cmake */, + B30F16572896772A004D40BF /* GenerateSCMRev.cmake */, + B30F16582896772A004D40BF /* DownloadExternals.cmake */, + B30F16592896772A004D40BF /* CopyCitraSDLDeps.cmake */, + B30F165A2896772A004D40BF /* MSVCCache.cmake */, + ); + path = CMakeModules; + sourceTree = ""; + }; + B30F165B2896772A004D40BF /* src */ = { + isa = PBXGroup; + children = ( + B30F1C252896772D004D40BF /* .clang-format */, + B30F169D2896772A004D40BF /* CMakeLists.txt */, + B30F1A7B2896772C004D40BF /* android */, + B30F165C2896772A004D40BF /* audio_core */, + B30F16902896772A004D40BF /* citra */, + B30F18A82896772B004D40BF /* citra_qt */, + B30F1A132896772B004D40BF /* common */, + B30F169E2896772A004D40BF /* core */, + B30F1C322896772D004D40BF /* dedicated_room */, + B30F1A5E2896772C004D40BF /* input_common */, + B30F19692896772B004D40BF /* network */, + B30F19792896772B004D40BF /* tests */, + B30F19952896772B004D40BF /* video_core */, + B30F1C262896772D004D40BF /* web_service */, + ); + path = src; + sourceTree = ""; + }; + B30F165C2896772A004D40BF /* audio_core */ = { + isa = PBXGroup; + children = ( + B30F165D2896772A004D40BF /* dsp_interface.h */, + B30F165E2896772A004D40BF /* cubeb_input.cpp */, + B30F165F2896772A004D40BF /* time_stretch.h */, + B30F16602896772A004D40BF /* CMakeLists.txt */, + B30F16612896772A004D40BF /* cubeb_sink.cpp */, + B30F16622896772A004D40BF /* hle */, + B30F167E2896772A004D40BF /* lle */, + B30F16812896772A004D40BF /* time_stretch.cpp */, + B30F16822896772A004D40BF /* interpolate.h */, + B30F16832896772A004D40BF /* codec.h */, + B30F16842896772A004D40BF /* interpolate.cpp */, + B30F16852896772A004D40BF /* sink.h */, + B30F16862896772A004D40BF /* cubeb_input.h */, + B30F16872896772A004D40BF /* cubeb_sink.h */, + B30F16882896772A004D40BF /* sdl2_sink.cpp */, + B30F16892896772A004D40BF /* audio_types.h */, + B30F168A2896772A004D40BF /* dsp_interface.cpp */, + B30F168B2896772A004D40BF /* sink_details.h */, + B30F168C2896772A004D40BF /* codec.cpp */, + B30F168D2896772A004D40BF /* sdl2_sink.h */, + B30F168E2896772A004D40BF /* sink_details.cpp */, + B30F168F2896772A004D40BF /* null_sink.h */, + ); + path = audio_core; + sourceTree = ""; + }; + B30F16622896772A004D40BF /* hle */ = { + isa = PBXGroup; + children = ( + B30F16632896772A004D40BF /* source.cpp */, + B30F16642896772A004D40BF /* ffmpeg_dl.h */, + B30F16652896772A004D40BF /* adts_reader.cpp */, + B30F16662896772A004D40BF /* wmf_decoder_utils.cpp */, + B30F16672896772A004D40BF /* decoder.h */, + B30F16682896772A004D40BF /* source.h */, + B30F16692896772A004D40BF /* filter.cpp */, + B30F166A2896772A004D40BF /* mixers.cpp */, + B30F166B2896772A004D40BF /* mediandk_decoder.cpp */, + B30F166C2896772A004D40BF /* ffmpeg_decoder.cpp */, + B30F166D2896772A004D40BF /* common.h */, + B30F166E2896772A004D40BF /* mediandk_decoder.h */, + B30F166F2896772A004D40BF /* mixers.h */, + B30F16702896772A004D40BF /* wmf_decoder_utils.h */, + B30F16712896772A004D40BF /* ffmpeg_dl.cpp */, + B30F16722896772A004D40BF /* ffmpeg_decoder.h */, + B30F16732896772A004D40BF /* pipe.h */, + B30F16742896772A004D40BF /* decoder.cpp */, + B30F16752896772A004D40BF /* wmf_decoder.h */, + B30F16762896772A004D40BF /* fdk_decoder.h */, + B30F16772896772A004D40BF /* hle.cpp */, + B30F16782896772A004D40BF /* hle.h */, + B30F16792896772A004D40BF /* wmf_decoder.cpp */, + B30F167A2896772A004D40BF /* filter.h */, + B30F167B2896772A004D40BF /* fdk_decoder.cpp */, + B30F167C2896772A004D40BF /* shared_memory.h */, + B30F167D2896772A004D40BF /* adts.h */, + ); + path = hle; + sourceTree = ""; + }; + B30F167E2896772A004D40BF /* lle */ = { + isa = PBXGroup; + children = ( + B30F167F2896772A004D40BF /* lle.h */, + B30F16802896772A004D40BF /* lle.cpp */, + ); + path = lle; + sourceTree = ""; + }; + B30F16902896772A004D40BF /* citra */ = { + isa = PBXGroup; + children = ( + B30F16982896772A004D40BF /* citra.cpp */, + B30F16952896772A004D40BF /* config.cpp */, + B30F16992896772A004D40BF /* lodepng_image_interface.cpp */, + B30F16932896772A004D40BF /* config.h */, + B30F16962896772A004D40BF /* default_ini.h */, + B30F16922896772A004D40BF /* lodepng_image_interface.h */, + B30F16972896772A004D40BF /* resource.h */, + B30F16942896772A004D40BF /* citra.rc */, + B30F16912896772A004D40BF /* CMakeLists.txt */, + B30F169A2896772A004D40BF /* emu_window */, + ); + path = citra; + sourceTree = ""; + }; + B30F169A2896772A004D40BF /* emu_window */ = { + isa = PBXGroup; + children = ( + B30F169B2896772A004D40BF /* emu_window_sdl2.cpp */, + B30F169C2896772A004D40BF /* emu_window_sdl2.h */, + ); + path = emu_window; + sourceTree = ""; + }; + B30F169E2896772A004D40BF /* core */ = { + isa = PBXGroup; + children = ( + B30F169F2896772A004D40BF /* tracer */, + B30F16A32896772A004D40BF /* memory.cpp */, + B30F16A42896772A004D40BF /* core.h */, + B30F16A52896772A004D40BF /* telemetry_session.h */, + B30F16A62896772A004D40BF /* CMakeLists.txt */, + B30F16A72896772A004D40BF /* hw */, + B30F16BA2896772A004D40BF /* hle */, + B30F18062896772B004D40BF /* frontend */, + B30F181F2896772B004D40BF /* mmio.h */, + B30F18202896772B004D40BF /* core.cpp */, + B30F18212896772B004D40BF /* settings.h */, + B30F18222896772B004D40BF /* custom_tex_cache.cpp */, + B30F18232896772B004D40BF /* global.h */, + B30F18242896772B004D40BF /* movie.h */, + B30F18252896772B004D40BF /* file_sys */, + B30F18582896772B004D40BF /* dumping */, + B30F185D2896772B004D40BF /* 3ds.h */, + B30F185E2896772B004D40BF /* core_timing.cpp */, + B30F185F2896772B004D40BF /* custom_tex_cache.h */, + B30F18602896772B004D40BF /* cheats */, + B30F18672896772B004D40BF /* loader */, + B30F18722896772B004D40BF /* core_timing.h */, + B30F18732896772B004D40BF /* memory.h */, + B30F18742896772B004D40BF /* savestate.cpp */, + B30F18752896772B004D40BF /* arm */, + B30F18962896772B004D40BF /* perf_stats.h */, + B30F18972896772B004D40BF /* rpc */, + B30F18A02896772B004D40BF /* perf_stats.cpp */, + B30F18A12896772B004D40BF /* gdbstub */, + B30F18A42896772B004D40BF /* savestate.h */, + B30F18A52896772B004D40BF /* settings.cpp */, + B30F18A62896772B004D40BF /* telemetry_session.cpp */, + B30F18A72896772B004D40BF /* movie.cpp */, + ); + path = core; + sourceTree = ""; + }; + B30F169F2896772A004D40BF /* tracer */ = { + isa = PBXGroup; + children = ( + B30F16A02896772A004D40BF /* recorder.h */, + B30F16A12896772A004D40BF /* citrace.h */, + B30F16A22896772A004D40BF /* recorder.cpp */, + ); + path = tracer; + sourceTree = ""; + }; + B30F16A72896772A004D40BF /* hw */ = { + isa = PBXGroup; + children = ( + B30F16A82896772A004D40BF /* lcd.cpp */, + B30F16A92896772A004D40BF /* hw.cpp */, + B30F16AA2896772A004D40BF /* lcd.h */, + B30F16AB2896772A004D40BF /* rsa */, + B30F16AE2896772A004D40BF /* gpu.h */, + B30F16AF2896772A004D40BF /* y2r.h */, + B30F16B02896772A004D40BF /* y2r.cpp */, + B30F16B12896772A004D40BF /* hw.h */, + B30F16B22896772A004D40BF /* gpu.cpp */, + B30F16B32896772A004D40BF /* aes */, + ); + path = hw; + sourceTree = ""; + }; + B30F16AB2896772A004D40BF /* rsa */ = { + isa = PBXGroup; + children = ( + B30F16AC2896772A004D40BF /* rsa.h */, + B30F16AD2896772A004D40BF /* rsa.cpp */, + ); + path = rsa; + sourceTree = ""; + }; + B30F16B32896772A004D40BF /* aes */ = { + isa = PBXGroup; + children = ( + B30F16B42896772A004D40BF /* arithmetic128.cpp */, + B30F16B52896772A004D40BF /* key.h */, + B30F16B62896772A004D40BF /* ccm.cpp */, + B30F16B72896772A004D40BF /* key.cpp */, + B30F16B82896772A004D40BF /* ccm.h */, + B30F16B92896772A004D40BF /* arithmetic128.h */, + ); + path = aes; + sourceTree = ""; + }; + B30F16BA2896772A004D40BF /* hle */ = { + isa = PBXGroup; + children = ( + B30F16BB2896772A004D40BF /* applets */, + B30F16C62896772A004D40BF /* lock.h */, + B30F16C72896772A004D40BF /* ipc.h */, + B30F16C82896772A004D40BF /* romfs.cpp */, + B30F16C92896772A004D40BF /* result.h */, + B30F16CA2896772A004D40BF /* ipc_helpers.h */, + B30F16CB2896772A004D40BF /* service */, + B30F17CC2896772B004D40BF /* romfs.h */, + B30F17CD2896772B004D40BF /* lock.cpp */, + B30F17CE2896772B004D40BF /* kernel */, + ); + path = hle; + sourceTree = ""; + }; + B30F16BB2896772A004D40BF /* applets */ = { + isa = PBXGroup; + children = ( + B30F16BC2896772A004D40BF /* mii_selector.h */, + B30F16BD2896772A004D40BF /* mii_selector.cpp */, + B30F16BE2896772A004D40BF /* erreula.h */, + B30F16BF2896772A004D40BF /* swkbd.h */, + B30F16C02896772A004D40BF /* mint.h */, + B30F16C12896772A004D40BF /* erreula.cpp */, + B30F16C22896772A004D40BF /* mint.cpp */, + B30F16C32896772A004D40BF /* swkbd.cpp */, + B30F16C42896772A004D40BF /* applet.h */, + B30F16C52896772A004D40BF /* applet.cpp */, + ); + path = applets; + sourceTree = ""; + }; + B30F16CB2896772A004D40BF /* service */ = { + isa = PBXGroup; + children = ( + B30F16CC2896772A004D40BF /* pm */, + B30F16D32896772A004D40BF /* cecd */, + B30F16DC2896772A004D40BF /* err_f.h */, + B30F16DD2896772A004D40BF /* err_f.cpp */, + B30F16DE2896772A004D40BF /* sm */, + B30F16E32896772A004D40BF /* ptm */, + B30F16F02896772A004D40BF /* ac */, + B30F16F72896772A004D40BF /* nim */, + B30F17002896772A004D40BF /* am */, + B30F170B2896772A004D40BF /* pxi */, + B30F17102896772A004D40BF /* mvd */, + B30F17152896772A004D40BF /* service.h */, + B30F17162896772A004D40BF /* ndm */, + B30F17192896772A004D40BF /* ir */, + B30F17242896772A004D40BF /* csnd */, + B30F17272896772A004D40BF /* soc_u.cpp */, + B30F17282896772A004D40BF /* y2r_u.h */, + B30F17292896772A004D40BF /* http_c.h */, + B30F172A2896772A004D40BF /* boss */, + B30F17312896772A004D40BF /* act */, + B30F17382896772A004D40BF /* y2r_u.cpp */, + B30F17392896772A004D40BF /* mic_u.cpp */, + B30F173A2896772A004D40BF /* cfg */, + B30F17452896772A004D40BF /* ssl_c.cpp */, + B30F17462896772A004D40BF /* frd */, + B30F174D2896772A004D40BF /* http_c.cpp */, + B30F174E2896772A004D40BF /* nwm */, + B30F17652896772A004D40BF /* ldr_ro */, + B30F176A2896772A004D40BF /* ps */, + B30F176D2896772A004D40BF /* cam */, + B30F17792896772A004D40BF /* ssl_c.h */, + B30F177A2896772A004D40BF /* service.cpp */, + B30F177B2896772A004D40BF /* news */, + B30F17822896772A004D40BF /* apt */, + B30F17952896772A004D40BF /* nfc */, + B30F179C2896772A004D40BF /* gsp */, + B30F17A32896772A004D40BF /* dlp */, + B30F17AC2896772A004D40BF /* hid */, + B30F17B32896772B004D40BF /* mic_u.h */, + B30F17B42896772B004D40BF /* fs */, + B30F17BD2896772B004D40BF /* qtm */, + B30F17C82896772B004D40BF /* dsp */, + B30F17CB2896772B004D40BF /* soc_u.h */, + ); + path = service; + sourceTree = ""; + }; + B30F16CC2896772A004D40BF /* pm */ = { + isa = PBXGroup; + children = ( + B30F16CD2896772A004D40BF /* pm.h */, + B30F16CE2896772A004D40BF /* pm_app.cpp */, + B30F16CF2896772A004D40BF /* pm_dbg.cpp */, + B30F16D02896772A004D40BF /* pm_app.h */, + B30F16D12896772A004D40BF /* pm.cpp */, + B30F16D22896772A004D40BF /* pm_dbg.h */, + ); + path = pm; + sourceTree = ""; + }; + B30F16D32896772A004D40BF /* cecd */ = { + isa = PBXGroup; + children = ( + B30F16D42896772A004D40BF /* cecd_s.h */, + B30F16D52896772A004D40BF /* cecd_ndm.cpp */, + B30F16D62896772A004D40BF /* cecd_u.cpp */, + B30F16D72896772A004D40BF /* cecd_s.cpp */, + B30F16D82896772A004D40BF /* cecd.cpp */, + B30F16D92896772A004D40BF /* cecd_u.h */, + B30F16DA2896772A004D40BF /* cecd.h */, + B30F16DB2896772A004D40BF /* cecd_ndm.h */, + ); + path = cecd; + sourceTree = ""; + }; + B30F16DE2896772A004D40BF /* sm */ = { + isa = PBXGroup; + children = ( + B30F16DF2896772A004D40BF /* srv.h */, + B30F16E02896772A004D40BF /* sm.cpp */, + B30F16E12896772A004D40BF /* srv.cpp */, + B30F16E22896772A004D40BF /* sm.h */, + ); + path = sm; + sourceTree = ""; + }; + B30F16E32896772A004D40BF /* ptm */ = { + isa = PBXGroup; + children = ( + B30F16E42896772A004D40BF /* ptm_sets.h */, + B30F16E52896772A004D40BF /* ptm_gets.h */, + B30F16E62896772A004D40BF /* ptm_u.cpp */, + B30F16E72896772A004D40BF /* ptm_sysm.cpp */, + B30F16E82896772A004D40BF /* ptm.cpp */, + B30F16E92896772A004D40BF /* ptm_play.cpp */, + B30F16EA2896772A004D40BF /* ptm_gets.cpp */, + B30F16EB2896772A004D40BF /* ptm_u.h */, + B30F16EC2896772A004D40BF /* ptm_play.h */, + B30F16ED2896772A004D40BF /* ptm_sets.cpp */, + B30F16EE2896772A004D40BF /* ptm_sysm.h */, + B30F16EF2896772A004D40BF /* ptm.h */, + ); + path = ptm; + sourceTree = ""; + }; + B30F16F02896772A004D40BF /* ac */ = { + isa = PBXGroup; + children = ( + B30F16F12896772A004D40BF /* ac_u.h */, + B30F16F22896772A004D40BF /* ac_u.cpp */, + B30F16F32896772A004D40BF /* ac_i.h */, + B30F16F42896772A004D40BF /* ac.h */, + B30F16F52896772A004D40BF /* ac_i.cpp */, + B30F16F62896772A004D40BF /* ac.cpp */, + ); + path = ac; + sourceTree = ""; + }; + B30F16F72896772A004D40BF /* nim */ = { + isa = PBXGroup; + children = ( + B30F16F82896772A004D40BF /* nim_aoc.cpp */, + B30F16F92896772A004D40BF /* nim.h */, + B30F16FA2896772A004D40BF /* nim_u.h */, + B30F16FB2896772A004D40BF /* nim.cpp */, + B30F16FC2896772A004D40BF /* nim_aoc.h */, + B30F16FD2896772A004D40BF /* nim_u.cpp */, + B30F16FE2896772A004D40BF /* nim_s.cpp */, + B30F16FF2896772A004D40BF /* nim_s.h */, + ); + path = nim; + sourceTree = ""; + }; + B30F17002896772A004D40BF /* am */ = { + isa = PBXGroup; + children = ( + B30F17012896772A004D40BF /* am.cpp */, + B30F17022896772A004D40BF /* am_net.cpp */, + B30F17032896772A004D40BF /* am_sys.h */, + B30F17042896772A004D40BF /* am_app.h */, + B30F17052896772A004D40BF /* am_app.cpp */, + B30F17062896772A004D40BF /* am_sys.cpp */, + B30F17072896772A004D40BF /* am.h */, + B30F17082896772A004D40BF /* am_net.h */, + B30F17092896772A004D40BF /* am_u.h */, + B30F170A2896772A004D40BF /* am_u.cpp */, + ); + path = am; + sourceTree = ""; + }; + B30F170B2896772A004D40BF /* pxi */ = { + isa = PBXGroup; + children = ( + B30F170C2896772A004D40BF /* pxi.h */, + B30F170D2896772A004D40BF /* pxi.cpp */, + B30F170E2896772A004D40BF /* dev.h */, + B30F170F2896772A004D40BF /* dev.cpp */, + ); + path = pxi; + sourceTree = ""; + }; + B30F17102896772A004D40BF /* mvd */ = { + isa = PBXGroup; + children = ( + B30F17112896772A004D40BF /* mvd_std.h */, + B30F17122896772A004D40BF /* mvd.cpp */, + B30F17132896772A004D40BF /* mvd_std.cpp */, + B30F17142896772A004D40BF /* mvd.h */, + ); + path = mvd; + sourceTree = ""; + }; + B30F17162896772A004D40BF /* ndm */ = { + isa = PBXGroup; + children = ( + B30F17172896772A004D40BF /* ndm_u.h */, + B30F17182896772A004D40BF /* ndm_u.cpp */, + ); + path = ndm; + sourceTree = ""; + }; + B30F17192896772A004D40BF /* ir */ = { + isa = PBXGroup; + children = ( + B30F171A2896772A004D40BF /* ir_rst.h */, + B30F171B2896772A004D40BF /* ir_user.cpp */, + B30F171C2896772A004D40BF /* ir.cpp */, + B30F171D2896772A004D40BF /* ir.h */, + B30F171E2896772A004D40BF /* ir_rst.cpp */, + B30F171F2896772A004D40BF /* extra_hid.cpp */, + B30F17202896772A004D40BF /* extra_hid.h */, + B30F17212896772A004D40BF /* ir_u.cpp */, + B30F17222896772A004D40BF /* ir_u.h */, + B30F17232896772A004D40BF /* ir_user.h */, + ); + path = ir; + sourceTree = ""; + }; + B30F17242896772A004D40BF /* csnd */ = { + isa = PBXGroup; + children = ( + B30F17252896772A004D40BF /* csnd_snd.cpp */, + B30F17262896772A004D40BF /* csnd_snd.h */, + ); + path = csnd; + sourceTree = ""; + }; + B30F172A2896772A004D40BF /* boss */ = { + isa = PBXGroup; + children = ( + B30F172B2896772A004D40BF /* boss.h */, + B30F172C2896772A004D40BF /* boss_u.h */, + B30F172D2896772A004D40BF /* boss_u.cpp */, + B30F172E2896772A004D40BF /* boss.cpp */, + B30F172F2896772A004D40BF /* boss_p.h */, + B30F17302896772A004D40BF /* boss_p.cpp */, + ); + path = boss; + sourceTree = ""; + }; + B30F17312896772A004D40BF /* act */ = { + isa = PBXGroup; + children = ( + B30F17322896772A004D40BF /* act.h */, + B30F17332896772A004D40BF /* act_a.cpp */, + B30F17342896772A004D40BF /* act_u.cpp */, + B30F17352896772A004D40BF /* act_u.h */, + B30F17362896772A004D40BF /* act.cpp */, + B30F17372896772A004D40BF /* act_a.h */, + ); + path = act; + sourceTree = ""; + }; + B30F173A2896772A004D40BF /* cfg */ = { + isa = PBXGroup; + children = ( + B30F173B2896772A004D40BF /* cfg.cpp */, + B30F173C2896772A004D40BF /* cfg_nor.cpp */, + B30F173D2896772A004D40BF /* cfg_s.cpp */, + B30F173E2896772A004D40BF /* cfg_s.h */, + B30F173F2896772A004D40BF /* cfg_u.cpp */, + B30F17402896772A004D40BF /* cfg_nor.h */, + B30F17412896772A004D40BF /* cfg_i.cpp */, + B30F17422896772A004D40BF /* cfg_i.h */, + B30F17432896772A004D40BF /* cfg.h */, + B30F17442896772A004D40BF /* cfg_u.h */, + ); + path = cfg; + sourceTree = ""; + }; + B30F17462896772A004D40BF /* frd */ = { + isa = PBXGroup; + children = ( + B30F17472896772A004D40BF /* frd_a.h */, + B30F17482896772A004D40BF /* frd.h */, + B30F17492896772A004D40BF /* frd.cpp */, + B30F174A2896772A004D40BF /* frd_u.h */, + B30F174B2896772A004D40BF /* frd_a.cpp */, + B30F174C2896772A004D40BF /* frd_u.cpp */, + ); + path = frd; + sourceTree = ""; + }; + B30F174E2896772A004D40BF /* nwm */ = { + isa = PBXGroup; + children = ( + B30F174F2896772A004D40BF /* nwm_tst.h */, + B30F17502896772A004D40BF /* uds_connection.cpp */, + B30F17512896772A004D40BF /* nwm_uds.h */, + B30F17522896772A004D40BF /* nwm_tst.cpp */, + B30F17532896772A004D40BF /* nwm_cec.cpp */, + B30F17542896772A004D40BF /* nwm_ext.h */, + B30F17552896772A004D40BF /* nwm_sap.cpp */, + B30F17562896772A004D40BF /* nwm_sap.h */, + B30F17572896772A004D40BF /* nwm_soc.cpp */, + B30F17582896772A004D40BF /* nwm.h */, + B30F17592896772A004D40BF /* uds_beacon.h */, + B30F175A2896772A004D40BF /* uds_data.h */, + B30F175B2896772A004D40BF /* nwm_cec.h */, + B30F175C2896772A004D40BF /* uds_beacon.cpp */, + B30F175D2896772A004D40BF /* uds_data.cpp */, + B30F175E2896772A004D40BF /* nwm_soc.h */, + B30F175F2896772A004D40BF /* nwm_inf.h */, + B30F17602896772A004D40BF /* uds_connection.h */, + B30F17612896772A004D40BF /* nwm_inf.cpp */, + B30F17622896772A004D40BF /* nwm_ext.cpp */, + B30F17632896772A004D40BF /* nwm_uds.cpp */, + B30F17642896772A004D40BF /* nwm.cpp */, + ); + path = nwm; + sourceTree = ""; + }; + B30F17652896772A004D40BF /* ldr_ro */ = { + isa = PBXGroup; + children = ( + B30F17662896772A004D40BF /* ldr_ro.cpp */, + B30F17672896772A004D40BF /* ldr_ro.h */, + B30F17682896772A004D40BF /* cro_helper.cpp */, + B30F17692896772A004D40BF /* cro_helper.h */, + ); + path = ldr_ro; + sourceTree = ""; + }; + B30F176A2896772A004D40BF /* ps */ = { + isa = PBXGroup; + children = ( + B30F176B2896772A004D40BF /* ps_ps.cpp */, + B30F176C2896772A004D40BF /* ps_ps.h */, + ); + path = ps; + sourceTree = ""; + }; + B30F176D2896772A004D40BF /* cam */ = { + isa = PBXGroup; + children = ( + B30F176E2896772A004D40BF /* cam.h */, + B30F176F2896772A004D40BF /* cam_q.cpp */, + B30F17702896772A004D40BF /* cam_u.h */, + B30F17712896772A004D40BF /* cam_q.h */, + B30F17722896772A004D40BF /* cam_s.cpp */, + B30F17732896772A004D40BF /* cam_params.h */, + B30F17742896772A004D40BF /* cam_u.cpp */, + B30F17752896772A004D40BF /* cam_c.cpp */, + B30F17762896772A004D40BF /* cam_c.h */, + B30F17772896772A004D40BF /* cam.cpp */, + B30F17782896772A004D40BF /* cam_s.h */, + ); + path = cam; + sourceTree = ""; + }; + B30F177B2896772A004D40BF /* news */ = { + isa = PBXGroup; + children = ( + B30F177C2896772A004D40BF /* news_u.h */, + B30F177D2896772A004D40BF /* news_s.h */, + B30F177E2896772A004D40BF /* news_u.cpp */, + B30F177F2896772A004D40BF /* news.cpp */, + B30F17802896772A004D40BF /* news_s.cpp */, + B30F17812896772A004D40BF /* news.h */, + ); + path = news; + sourceTree = ""; + }; + B30F17822896772A004D40BF /* apt */ = { + isa = PBXGroup; + children = ( + B30F17832896772A004D40BF /* ns_s.cpp */, + B30F17842896772A004D40BF /* ns.cpp */, + B30F17852896772A004D40BF /* applet_manager.h */, + B30F17862896772A004D40BF /* apt_u.h */, + B30F17872896772A004D40BF /* bcfnt */, + B30F178A2896772A004D40BF /* ns_s.h */, + B30F178B2896772A004D40BF /* ns.h */, + B30F178C2896772A004D40BF /* errors.h */, + B30F178D2896772A004D40BF /* apt.h */, + B30F178E2896772A004D40BF /* apt_a.h */, + B30F178F2896772A004D40BF /* apt_s.h */, + B30F17902896772A004D40BF /* applet_manager.cpp */, + B30F17912896772A004D40BF /* apt.cpp */, + B30F17922896772A004D40BF /* apt_s.cpp */, + B30F17932896772A004D40BF /* apt_a.cpp */, + B30F17942896772A004D40BF /* apt_u.cpp */, + ); + path = apt; + sourceTree = ""; + }; + B30F17872896772A004D40BF /* bcfnt */ = { + isa = PBXGroup; + children = ( + B30F17882896772A004D40BF /* bcfnt.h */, + B30F17892896772A004D40BF /* bcfnt.cpp */, + ); + path = bcfnt; + sourceTree = ""; + }; + B30F17952896772A004D40BF /* nfc */ = { + isa = PBXGroup; + children = ( + B30F17962896772A004D40BF /* nfc.h */, + B30F17972896772A004D40BF /* nfc_m.h */, + B30F17982896772A004D40BF /* nfc_u.h */, + B30F17992896772A004D40BF /* nfc_m.cpp */, + B30F179A2896772A004D40BF /* nfc_u.cpp */, + B30F179B2896772A004D40BF /* nfc.cpp */, + ); + path = nfc; + sourceTree = ""; + }; + B30F179C2896772A004D40BF /* gsp */ = { + isa = PBXGroup; + children = ( + B30F179D2896772A004D40BF /* gsp.cpp */, + B30F179E2896772A004D40BF /* gsp_gpu.cpp */, + B30F179F2896772A004D40BF /* gsp_gpu.h */, + B30F17A02896772A004D40BF /* gsp_lcd.h */, + B30F17A12896772A004D40BF /* gsp.h */, + B30F17A22896772A004D40BF /* gsp_lcd.cpp */, + ); + path = gsp; + sourceTree = ""; + }; + B30F17A32896772A004D40BF /* dlp */ = { + isa = PBXGroup; + children = ( + B30F17A42896772A004D40BF /* dlp_fkcl.cpp */, + B30F17A52896772A004D40BF /* dlp_srvr.h */, + B30F17A62896772A004D40BF /* dlp.cpp */, + B30F17A72896772A004D40BF /* dlp.h */, + B30F17A82896772A004D40BF /* dlp_srvr.cpp */, + B30F17A92896772A004D40BF /* dlp_clnt.cpp */, + B30F17AA2896772A004D40BF /* dlp_clnt.h */, + B30F17AB2896772A004D40BF /* dlp_fkcl.h */, + ); + path = dlp; + sourceTree = ""; + }; + B30F17AC2896772A004D40BF /* hid */ = { + isa = PBXGroup; + children = ( + B30F17AD2896772A004D40BF /* hid_spvr.cpp */, + B30F17AE2896772A004D40BF /* hid.h */, + B30F17AF2896772A004D40BF /* hid.cpp */, + B30F17B02896772A004D40BF /* hid_user.cpp */, + B30F17B12896772A004D40BF /* hid_spvr.h */, + B30F17B22896772B004D40BF /* hid_user.h */, + ); + path = hid; + sourceTree = ""; + }; + B30F17B42896772B004D40BF /* fs */ = { + isa = PBXGroup; + children = ( + B30F17B52896772B004D40BF /* archive.h */, + B30F17B62896772B004D40BF /* file.h */, + B30F17B72896772B004D40BF /* directory.cpp */, + B30F17B82896772B004D40BF /* fs_user.cpp */, + B30F17B92896772B004D40BF /* fs_user.h */, + B30F17BA2896772B004D40BF /* directory.h */, + B30F17BB2896772B004D40BF /* file.cpp */, + B30F17BC2896772B004D40BF /* archive.cpp */, + ); + path = fs; + sourceTree = ""; + }; + B30F17BD2896772B004D40BF /* qtm */ = { + isa = PBXGroup; + children = ( + B30F17BE2896772B004D40BF /* qtm_sp.h */, + B30F17BF2896772B004D40BF /* qtm_sp.cpp */, + B30F17C02896772B004D40BF /* qtm.cpp */, + B30F17C12896772B004D40BF /* qtm_s.h */, + B30F17C22896772B004D40BF /* qtm_s.cpp */, + B30F17C32896772B004D40BF /* qtm_c.cpp */, + B30F17C42896772B004D40BF /* qtm_u.cpp */, + B30F17C52896772B004D40BF /* qtm.h */, + B30F17C62896772B004D40BF /* qtm_u.h */, + B30F17C72896772B004D40BF /* qtm_c.h */, + ); + path = qtm; + sourceTree = ""; + }; + B30F17C82896772B004D40BF /* dsp */ = { + isa = PBXGroup; + children = ( + B30F17C92896772B004D40BF /* dsp_dsp.h */, + B30F17CA2896772B004D40BF /* dsp_dsp.cpp */, + ); + path = dsp; + sourceTree = ""; + }; + B30F17CE2896772B004D40BF /* kernel */ = { + isa = PBXGroup; + children = ( + B30F17CF2896772B004D40BF /* client_session.cpp */, + B30F17D02896772B004D40BF /* svc.cpp */, + B30F17D12896772B004D40BF /* semaphore.h */, + B30F17D22896772B004D40BF /* ipc.cpp */, + B30F17D32896772B004D40BF /* memory.cpp */, + B30F17D42896772B004D40BF /* hle_ipc.h */, + B30F17D52896772B004D40BF /* mutex.cpp */, + B30F17D62896772B004D40BF /* thread.cpp */, + B30F17D72896772B004D40BF /* server_port.h */, + B30F17D82896772B004D40BF /* resource_limit.h */, + B30F17D92896772B004D40BF /* process.cpp */, + B30F17DA2896772B004D40BF /* client_session.h */, + B30F17DB2896772B004D40BF /* kernel.cpp */, + B30F17DC2896772B004D40BF /* shared_memory.cpp */, + B30F17DD2896772B004D40BF /* event.h */, + B30F17DE2896772B004D40BF /* shared_page.cpp */, + B30F17DF2896772B004D40BF /* config_mem.cpp */, + B30F17E02896772B004D40BF /* server_session.cpp */, + B30F17E12896772B004D40BF /* client_port.h */, + B30F17E22896772B004D40BF /* wait_object.h */, + B30F17E32896772B004D40BF /* ipc.h */, + B30F17E42896772B004D40BF /* vm_manager.cpp */, + B30F17E52896772B004D40BF /* object.cpp */, + B30F17E62896772B004D40BF /* timer.cpp */, + B30F17E72896772B004D40BF /* client_port.cpp */, + B30F17E82896772B004D40BF /* errors.h */, + B30F17E92896772B004D40BF /* address_arbiter.h */, + B30F17EA2896772B004D40BF /* svc.h */, + B30F17EB2896772B004D40BF /* hle_ipc.cpp */, + B30F17EC2896772B004D40BF /* address_arbiter.cpp */, + B30F17ED2896772B004D40BF /* timer.h */, + B30F17EE2896772B004D40BF /* session.h */, + B30F17EF2896772B004D40BF /* thread.h */, + B30F17F02896772B004D40BF /* session.cpp */, + B30F17F12896772B004D40BF /* resource_limit.cpp */, + B30F17F22896772B004D40BF /* svc_wrapper.h */, + B30F17F32896772B004D40BF /* handle_table.h */, + B30F17F42896772B004D40BF /* kernel.h */, + B30F17F52896772B004D40BF /* wait_object.cpp */, + B30F17F62896772B004D40BF /* process.h */, + B30F17F72896772B004D40BF /* config_mem.h */, + B30F17F82896772B004D40BF /* memory.h */, + B30F17F92896772B004D40BF /* object.h */, + B30F17FA2896772B004D40BF /* handle_table.cpp */, + B30F17FB2896772B004D40BF /* shared_page.h */, + B30F17FC2896772B004D40BF /* mutex.h */, + B30F17FD2896772B004D40BF /* event.cpp */, + B30F17FE2896772B004D40BF /* semaphore.cpp */, + B30F17FF2896772B004D40BF /* server_port.cpp */, + B30F18002896772B004D40BF /* server_session.h */, + B30F18012896772B004D40BF /* shared_memory.h */, + B30F18022896772B004D40BF /* ipc_debugger */, + B30F18052896772B004D40BF /* vm_manager.h */, + ); + path = kernel; + sourceTree = ""; + }; + B30F18022896772B004D40BF /* ipc_debugger */ = { + isa = PBXGroup; + children = ( + B30F18032896772B004D40BF /* recorder.h */, + B30F18042896772B004D40BF /* recorder.cpp */, + ); + path = ipc_debugger; + sourceTree = ""; + }; + B30F18062896772B004D40BF /* frontend */ = { + isa = PBXGroup; + children = ( + B30F18072896772B004D40BF /* emu_window.cpp */, + B30F18082896772B004D40BF /* input.h */, + B30F18092896772B004D40BF /* mic.cpp */, + B30F180A2896772B004D40BF /* applets */, + B30F18112896772B004D40BF /* camera */, + B30F18182896772B004D40BF /* mic.h */, + B30F18192896772B004D40BF /* framebuffer_layout.h */, + B30F181A2896772B004D40BF /* scope_acquire_context.h */, + B30F181B2896772B004D40BF /* image_interface.h */, + B30F181C2896772B004D40BF /* framebuffer_layout.cpp */, + B30F181D2896772B004D40BF /* scope_acquire_context.cpp */, + B30F181E2896772B004D40BF /* emu_window.h */, + ); + path = frontend; + sourceTree = ""; + }; + B30F180A2896772B004D40BF /* applets */ = { + isa = PBXGroup; + children = ( + B30F180B2896772B004D40BF /* mii_selector.h */, + B30F180C2896772B004D40BF /* mii_selector.cpp */, + B30F180D2896772B004D40BF /* swkbd.h */, + B30F180E2896772B004D40BF /* default_applets.cpp */, + B30F180F2896772B004D40BF /* swkbd.cpp */, + B30F18102896772B004D40BF /* default_applets.h */, + ); + path = applets; + sourceTree = ""; + }; + B30F18112896772B004D40BF /* camera */ = { + isa = PBXGroup; + children = ( + B30F18122896772B004D40BF /* blank_camera.h */, + B30F18132896772B004D40BF /* interface.h */, + B30F18142896772B004D40BF /* interface.cpp */, + B30F18152896772B004D40BF /* blank_camera.cpp */, + B30F18162896772B004D40BF /* factory.cpp */, + B30F18172896772B004D40BF /* factory.h */, + ); + path = camera; + sourceTree = ""; + }; + B30F18252896772B004D40BF /* file_sys */ = { + isa = PBXGroup; + children = ( + B30F18262896772B004D40BF /* archive_ncch.h */, + B30F18272896772B004D40BF /* ivfc_archive.h */, + B30F18282896772B004D40BF /* archive_other_savedata.h */, + B30F18292896772B004D40BF /* ticket.h */, + B30F182A2896772B004D40BF /* archive_savedata.h */, + B30F182B2896772B004D40BF /* archive_sdmc.cpp */, + B30F182C2896772B004D40BF /* path_parser.h */, + B30F182D2896772B004D40BF /* archive_other_savedata.cpp */, + B30F182E2896772B004D40BF /* archive_sdmcwriteonly.h */, + B30F182F2896772B004D40BF /* archive_sdmc.h */, + B30F18302896772B004D40BF /* layered_fs.h */, + B30F18312896772B004D40BF /* patch.cpp */, + B30F18322896772B004D40BF /* disk_archive.h */, + B30F18332896772B004D40BF /* savedata_archive.h */, + B30F18342896772B004D40BF /* directory_backend.h */, + B30F18352896772B004D40BF /* savedata_archive.cpp */, + B30F18362896772B004D40BF /* seed_db.h */, + B30F18372896772B004D40BF /* cia_common.h */, + B30F18382896772B004D40BF /* seed_db.cpp */, + B30F18392896772B004D40BF /* errors.h */, + B30F183A2896772B004D40BF /* archive_systemsavedata.cpp */, + B30F183B2896772B004D40BF /* delay_generator.h */, + B30F183C2896772B004D40BF /* cia_container.cpp */, + B30F183D2896772B004D40BF /* archive_backend.cpp */, + B30F183E2896772B004D40BF /* ivfc_archive.cpp */, + B30F183F2896772B004D40BF /* ticket.cpp */, + B30F18402896772B004D40BF /* file_backend.h */, + B30F18412896772B004D40BF /* delay_generator.cpp */, + B30F18422896772B004D40BF /* layered_fs.cpp */, + B30F18432896772B004D40BF /* title_metadata.cpp */, + B30F18442896772B004D40BF /* archive_backend.h */, + B30F18452896772B004D40BF /* archive_selfncch.cpp */, + B30F18462896772B004D40BF /* disk_archive.cpp */, + B30F18472896772B004D40BF /* archive_source_sd_savedata.h */, + B30F18482896772B004D40BF /* archive_sdmcwriteonly.cpp */, + B30F18492896772B004D40BF /* archive_source_sd_savedata.cpp */, + B30F184A2896772B004D40BF /* archive_systemsavedata.h */, + B30F184B2896772B004D40BF /* title_metadata.h */, + B30F184C2896772B004D40BF /* archive_ncch.cpp */, + B30F184D2896772B004D40BF /* patch.h */, + B30F184E2896772B004D40BF /* path_parser.cpp */, + B30F184F2896772B004D40BF /* archive_extsavedata.cpp */, + B30F18502896772B004D40BF /* ncch_container.cpp */, + B30F18512896772B004D40BF /* archive_extsavedata.h */, + B30F18522896772B004D40BF /* archive_selfncch.h */, + B30F18532896772B004D40BF /* romfs_reader.h */, + B30F18542896772B004D40BF /* cia_container.h */, + B30F18552896772B004D40BF /* romfs_reader.cpp */, + B30F18562896772B004D40BF /* archive_savedata.cpp */, + B30F18572896772B004D40BF /* ncch_container.h */, + ); + path = file_sys; + sourceTree = ""; + }; + B30F18582896772B004D40BF /* dumping */ = { + isa = PBXGroup; + children = ( + B30F18592896772B004D40BF /* backend.cpp */, + B30F185A2896772B004D40BF /* ffmpeg_backend.cpp */, + B30F185B2896772B004D40BF /* backend.h */, + B30F185C2896772B004D40BF /* ffmpeg_backend.h */, + ); + path = dumping; + sourceTree = ""; + }; + B30F18602896772B004D40BF /* cheats */ = { + isa = PBXGroup; + children = ( + B30F18612896772B004D40BF /* cheats.cpp */, + B30F18622896772B004D40BF /* cheats.h */, + B30F18632896772B004D40BF /* gateway_cheat.cpp */, + B30F18642896772B004D40BF /* cheat_base.h */, + B30F18652896772B004D40BF /* cheat_base.cpp */, + B30F18662896772B004D40BF /* gateway_cheat.h */, + ); + path = cheats; + sourceTree = ""; + }; + B30F18672896772B004D40BF /* loader */ = { + isa = PBXGroup; + children = ( + B30F18682896772B004D40BF /* ncch.h */, + B30F18692896772B004D40BF /* ncch.cpp */, + B30F186A2896772B004D40BF /* smdh.cpp */, + B30F186B2896772B004D40BF /* elf.cpp */, + B30F186C2896772B004D40BF /* 3dsx.cpp */, + B30F186D2896772B004D40BF /* elf.h */, + B30F186E2896772B004D40BF /* 3dsx.h */, + B30F186F2896772B004D40BF /* loader.h */, + B30F18702896772B004D40BF /* smdh.h */, + B30F18712896772B004D40BF /* loader.cpp */, + ); + path = loader; + sourceTree = ""; + }; + B30F18752896772B004D40BF /* arm */ = { + isa = PBXGroup; + children = ( + B30F18762896772B004D40BF /* arm_interface.h */, + B30F18772896772B004D40BF /* dynarmic */, + B30F187C2896772B004D40BF /* dyncom */, + B30F18882896772B004D40BF /* skyeye_common */, + ); + path = arm; + sourceTree = ""; + }; + B30F18772896772B004D40BF /* dynarmic */ = { + isa = PBXGroup; + children = ( + B30F18782896772B004D40BF /* arm_dynarmic.cpp */, + B30F18792896772B004D40BF /* arm_dynarmic_cp15.h */, + B30F187A2896772B004D40BF /* arm_dynarmic.h */, + B30F187B2896772B004D40BF /* arm_dynarmic_cp15.cpp */, + ); + path = dynarmic; + sourceTree = ""; + }; + B30F187C2896772B004D40BF /* dyncom */ = { + isa = PBXGroup; + children = ( + B30F187D2896772B004D40BF /* arm_dyncom.cpp */, + B30F187E2896772B004D40BF /* arm_dyncom_dec.cpp */, + B30F187F2896772B004D40BF /* arm_dyncom_run.h */, + B30F18802896772B004D40BF /* arm_dyncom_trans.h */, + B30F18812896772B004D40BF /* arm_dyncom.h */, + B30F18822896772B004D40BF /* arm_dyncom_dec.h */, + B30F18832896772B004D40BF /* arm_dyncom_trans.cpp */, + B30F18842896772B004D40BF /* arm_dyncom_interpreter.h */, + B30F18852896772B004D40BF /* arm_dyncom_interpreter.cpp */, + B30F18862896772B004D40BF /* arm_dyncom_thumb.cpp */, + B30F18872896772B004D40BF /* arm_dyncom_thumb.h */, + ); + path = dyncom; + sourceTree = ""; + }; + B30F18882896772B004D40BF /* skyeye_common */ = { + isa = PBXGroup; + children = ( + B30F18892896772B004D40BF /* armstate.cpp */, + B30F188A2896772B004D40BF /* armsupp.h */, + B30F188B2896772B004D40BF /* vfp */, + B30F18932896772B004D40BF /* arm_regformat.h */, + B30F18942896772B004D40BF /* armstate.h */, + B30F18952896772B004D40BF /* armsupp.cpp */, + ); + path = skyeye_common; + sourceTree = ""; + }; + B30F188B2896772B004D40BF /* vfp */ = { + isa = PBXGroup; + children = ( + B30F188C2896772B004D40BF /* vfp.h */, + B30F188D2896772B004D40BF /* vfpdouble.cpp */, + B30F188E2896772B004D40BF /* vfpinstr.cpp */, + B30F188F2896772B004D40BF /* asm_vfp.h */, + B30F18902896772B004D40BF /* vfp_helper.h */, + B30F18912896772B004D40BF /* vfpsingle.cpp */, + B30F18922896772B004D40BF /* vfp.cpp */, + ); + path = vfp; + sourceTree = ""; + }; + B30F18972896772B004D40BF /* rpc */ = { + isa = PBXGroup; + children = ( + B30F18982896772B004D40BF /* udp_server.cpp */, + B30F18992896772B004D40BF /* packet.cpp */, + B30F189A2896772B004D40BF /* rpc_server.h */, + B30F189B2896772B004D40BF /* packet.h */, + B30F189C2896772B004D40BF /* rpc_server.cpp */, + B30F189D2896772B004D40BF /* server.h */, + B30F189E2896772B004D40BF /* udp_server.h */, + B30F189F2896772B004D40BF /* server.cpp */, + ); + path = rpc; + sourceTree = ""; + }; + B30F18A12896772B004D40BF /* gdbstub */ = { + isa = PBXGroup; + children = ( + B30F18A22896772B004D40BF /* gdbstub.cpp */, + B30F18A32896772B004D40BF /* gdbstub.h */, + ); + path = gdbstub; + sourceTree = ""; + }; + B30F18A82896772B004D40BF /* citra_qt */ = { + isa = PBXGroup; + children = ( + B30F18A92896772B004D40BF /* main.h */, + B30F18AA2896772B004D40BF /* compatdb.cpp */, + B30F18AB2896772B004D40BF /* loading_screen.ui */, + B30F18AC2896772B004D40BF /* hotkeys.cpp */, + B30F18AD2896772B004D40BF /* configuration */, + B30F18DE2896772B004D40BF /* cheats.cpp */, + B30F18DF2896772B004D40BF /* movie */, + B30F18E62896772B004D40BF /* loading_screen.cpp */, + B30F18E72896772B004D40BF /* applets */, + B30F18EC2896772B004D40BF /* CMakeLists.txt */, + B30F18ED2896772B004D40BF /* macos_authorization.mm */, + B30F18EE2896772B004D40BF /* uisettings.h */, + B30F18EF2896772B004D40BF /* util */, + B30F18F92896772B004D40BF /* aboutdialog.cpp */, + B30F18FA2896772B004D40BF /* cheats.ui */, + B30F18FB2896772B004D40BF /* qt_image_interface.h */, + B30F18FC2896772B004D40BF /* camera */, + B30F19052896772B004D40BF /* compatdb.ui */, + B30F19062896772B004D40BF /* discord.h */, + B30F19072896772B004D40BF /* hotkeys.h */, + B30F19082896772B004D40BF /* game_list.cpp */, + B30F19092896772B004D40BF /* compatibility_list.cpp */, + B30F190A2896772B004D40BF /* bootmanager.h */, + B30F190B2896772B004D40BF /* game_list_p.h */, + B30F190C2896772B004D40BF /* aboutdialog.ui */, + B30F190D2896772B004D40BF /* bootmanager.cpp */, + B30F190E2896772B004D40BF /* updater */, + B30F19122896772B004D40BF /* qt_image_interface.cpp */, + B30F19132896772B004D40BF /* discord_impl.h */, + B30F19142896772B004D40BF /* game_list_worker.h */, + B30F19152896772B004D40BF /* dumping */, + B30F191F2896772B004D40BF /* aboutdialog.h */, + B30F19202896772B004D40BF /* cheats.h */, + B30F19212896772B004D40BF /* citra-qt.rc */, + B30F19222896772B004D40BF /* compatibility_list.h */, + B30F19232896772B004D40BF /* uisettings.cpp */, + B30F19242896772B004D40BF /* game_list.h */, + B30F19252896772B004D40BF /* debugger */, + B30F19482896772B004D40BF /* main.ui */, + B30F19492896772B004D40BF /* discord_impl.cpp */, + B30F194A2896772B004D40BF /* compatdb.h */, + B30F194B2896772B004D40BF /* game_list_worker.cpp */, + B30F194C2896772B004D40BF /* main.cpp */, + B30F194D2896772B004D40BF /* multiplayer */, + B30F19662896772B004D40BF /* Info.plist */, + B30F19672896772B004D40BF /* macos_authorization.h */, + B30F19682896772B004D40BF /* loading_screen.h */, + ); + path = citra_qt; + sourceTree = ""; + }; + B30F18AD2896772B004D40BF /* configuration */ = { + isa = PBXGroup; + children = ( + B30F18AE2896772B004D40BF /* configure_web.cpp */, + B30F18AF2896772B004D40BF /* configure_system.cpp */, + B30F18B02896772B004D40BF /* configure_audio.h */, + B30F18B12896772B004D40BF /* configure_hotkeys.h */, + B30F18B22896772B004D40BF /* configure_general.h */, + B30F18B32896772B004D40BF /* configure_storage.ui */, + B30F18B42896772B004D40BF /* configure_motion_touch.ui */, + B30F18B52896772B004D40BF /* configure_enhancements.h */, + B30F18B62896772B004D40BF /* configure_general.cpp */, + B30F18B72896772B004D40BF /* configure_system.h */, + B30F18B82896772B004D40BF /* config.h */, + B30F18B92896772B004D40BF /* configure_hotkeys.cpp */, + B30F18BA2896772B004D40BF /* configure_graphics.ui */, + B30F18BB2896772B004D40BF /* configure_audio.cpp */, + B30F18BC2896772B004D40BF /* configure_audio.ui */, + B30F18BD2896772B004D40BF /* configure.ui */, + B30F18BE2896772B004D40BF /* configure_general.ui */, + B30F18BF2896772B004D40BF /* configure_input.cpp */, + B30F18C02896772B004D40BF /* configure_input.ui */, + B30F18C12896772B004D40BF /* configure_system.ui */, + B30F18C22896772B004D40BF /* configure_storage.cpp */, + B30F18C32896772B004D40BF /* configure_debug.ui */, + B30F18C42896772B004D40BF /* configure_graphics.h */, + B30F18C52896772B004D40BF /* configure_debug.h */, + B30F18C62896772B004D40BF /* configure_ui.ui */, + B30F18C72896772B004D40BF /* configure_input.h */, + B30F18C82896772B004D40BF /* configure_motion_touch.h */, + B30F18C92896772B004D40BF /* configure_camera.cpp */, + B30F18CA2896772B004D40BF /* configure_ui.h */, + B30F18CB2896772B004D40BF /* config.cpp */, + B30F18CC2896772B004D40BF /* configure_camera.h */, + B30F18CD2896772B004D40BF /* configure_touch_from_button.ui */, + B30F18CE2896772B004D40BF /* configure_touch_widget.h */, + B30F18CF2896772B004D40BF /* configure_web.ui */, + B30F18D02896772B004D40BF /* configure_touch_from_button.cpp */, + B30F18D12896772B004D40BF /* configure_ui.cpp */, + B30F18D22896772B004D40BF /* configure_hotkeys.ui */, + B30F18D32896772B004D40BF /* configure_touch_from_button.h */, + B30F18D42896772B004D40BF /* configure_dialog.h */, + B30F18D52896772B004D40BF /* configure_enhancements.cpp */, + B30F18D62896772B004D40BF /* configure_web.h */, + B30F18D72896772B004D40BF /* configure_motion_touch.cpp */, + B30F18D82896772B004D40BF /* configure_camera.ui */, + B30F18D92896772B004D40BF /* configure_graphics.cpp */, + B30F18DA2896772B004D40BF /* configure_dialog.cpp */, + B30F18DB2896772B004D40BF /* configure_debug.cpp */, + B30F18DC2896772B004D40BF /* configure_storage.h */, + B30F18DD2896772B004D40BF /* configure_enhancements.ui */, + ); + path = configuration; + sourceTree = ""; + }; + B30F18DF2896772B004D40BF /* movie */ = { + isa = PBXGroup; + children = ( + B30F18E02896772B004D40BF /* movie_record_dialog.cpp */, + B30F18E12896772B004D40BF /* movie_play_dialog.ui */, + B30F18E22896772B004D40BF /* movie_record_dialog.ui */, + B30F18E32896772B004D40BF /* movie_record_dialog.h */, + B30F18E42896772B004D40BF /* movie_play_dialog.cpp */, + B30F18E52896772B004D40BF /* movie_play_dialog.h */, + ); + path = movie; + sourceTree = ""; + }; + B30F18E72896772B004D40BF /* applets */ = { + isa = PBXGroup; + children = ( + B30F18E82896772B004D40BF /* mii_selector.h */, + B30F18E92896772B004D40BF /* mii_selector.cpp */, + B30F18EA2896772B004D40BF /* swkbd.h */, + B30F18EB2896772B004D40BF /* swkbd.cpp */, + ); + path = applets; + sourceTree = ""; + }; + B30F18EF2896772B004D40BF /* util */ = { + isa = PBXGroup; + children = ( + B30F18F02896772B004D40BF /* sequence_dialog */, + B30F18F32896772B004D40BF /* util.cpp */, + B30F18F42896772B004D40BF /* clickable_label.cpp */, + B30F18F52896772B004D40BF /* spinbox.h */, + B30F18F62896772B004D40BF /* clickable_label.h */, + B30F18F72896772B004D40BF /* spinbox.cpp */, + B30F18F82896772B004D40BF /* util.h */, + ); + path = util; + sourceTree = ""; + }; + B30F18F02896772B004D40BF /* sequence_dialog */ = { + isa = PBXGroup; + children = ( + B30F18F12896772B004D40BF /* sequence_dialog.h */, + B30F18F22896772B004D40BF /* sequence_dialog.cpp */, + ); + path = sequence_dialog; + sourceTree = ""; + }; + B30F18FC2896772B004D40BF /* camera */ = { + isa = PBXGroup; + children = ( + B30F18FD2896772B004D40BF /* still_image_camera.h */, + B30F18FE2896772B004D40BF /* qt_multimedia_camera.h */, + B30F18FF2896772B004D40BF /* still_image_camera.cpp */, + B30F19002896772B004D40BF /* qt_camera_base.h */, + B30F19012896772B004D40BF /* qt_camera_base.cpp */, + B30F19022896772B004D40BF /* qt_multimedia_camera.cpp */, + B30F19032896772B004D40BF /* camera_util.h */, + B30F19042896772B004D40BF /* camera_util.cpp */, + ); + path = camera; + sourceTree = ""; + }; + B30F190E2896772B004D40BF /* updater */ = { + isa = PBXGroup; + children = ( + B30F190F2896772B004D40BF /* updater.cpp */, + B30F19102896772B004D40BF /* updater_p.h */, + B30F19112896772B004D40BF /* updater.h */, + ); + path = updater; + sourceTree = ""; + }; + B30F19152896772B004D40BF /* dumping */ = { + isa = PBXGroup; + children = ( + B30F19162896772B004D40BF /* option_set_dialog.cpp */, + B30F19172896772B004D40BF /* dumping_dialog.h */, + B30F19182896772B004D40BF /* option_set_dialog.ui */, + B30F19192896772B004D40BF /* dumping_dialog.ui */, + B30F191A2896772B004D40BF /* options_dialog.h */, + B30F191B2896772B004D40BF /* options_dialog.ui */, + B30F191C2896772B004D40BF /* dumping_dialog.cpp */, + B30F191D2896772B004D40BF /* option_set_dialog.h */, + B30F191E2896772B004D40BF /* options_dialog.cpp */, + ); + path = dumping; + sourceTree = ""; + }; + B30F19252896772B004D40BF /* debugger */ = { + isa = PBXGroup; + children = ( + B30F19262896772B004D40BF /* registers.ui */, + B30F19272896772B004D40BF /* console.h */, + B30F19282896772B004D40BF /* profiler.cpp */, + B30F19292896772B004D40BF /* lle_service_modules.h */, + B30F192A2896772B004D40BF /* console.cpp */, + B30F192B2896772B004D40BF /* lle_service_modules.cpp */, + B30F192C2896772B004D40BF /* registers.cpp */, + B30F192D2896772B004D40BF /* registers.h */, + B30F192E2896772B004D40BF /* wait_tree.cpp */, + B30F192F2896772B004D40BF /* wait_tree.h */, + B30F19302896772B004D40BF /* ipc */, + B30F19372896772B004D40BF /* graphics */, + B30F19472896772B004D40BF /* profiler.h */, + ); + path = debugger; + sourceTree = ""; + }; + B30F19302896772B004D40BF /* ipc */ = { + isa = PBXGroup; + children = ( + B30F19312896772B004D40BF /* record_dialog.h */, + B30F19322896772B004D40BF /* recorder.ui */, + B30F19332896772B004D40BF /* recorder.h */, + B30F19342896772B004D40BF /* record_dialog.ui */, + B30F19352896772B004D40BF /* record_dialog.cpp */, + B30F19362896772B004D40BF /* recorder.cpp */, + ); + path = ipc; + sourceTree = ""; + }; + B30F19372896772B004D40BF /* graphics */ = { + isa = PBXGroup; + children = ( + B30F19382896772B004D40BF /* graphics_tracing.cpp */, + B30F19392896772B004D40BF /* graphics_cmdlists.h */, + B30F193A2896772B004D40BF /* graphics_vertex_shader.cpp */, + B30F193B2896772B004D40BF /* graphics_tracing.h */, + B30F193C2896772B004D40BF /* graphics_breakpoints.cpp */, + B30F193D2896772B004D40BF /* graphics_breakpoints_p.h */, + B30F193E2896772B004D40BF /* graphics_vertex_shader.h */, + B30F193F2896772B004D40BF /* graphics_breakpoint_observer.h */, + B30F19402896772B004D40BF /* graphics.cpp */, + B30F19412896772B004D40BF /* graphics_surface.h */, + B30F19422896772B004D40BF /* graphics_surface.cpp */, + B30F19432896772B004D40BF /* graphics_cmdlists.cpp */, + B30F19442896772B004D40BF /* graphics.h */, + B30F19452896772B004D40BF /* graphics_breakpoint_observer.cpp */, + B30F19462896772B004D40BF /* graphics_breakpoints.h */, + ); + path = graphics; + sourceTree = ""; + }; + B30F194D2896772B004D40BF /* multiplayer */ = { + isa = PBXGroup; + children = ( + B30F194E2896772B004D40BF /* chat_room.h */, + B30F194F2896772B004D40BF /* client_room.cpp */, + B30F19502896772B004D40BF /* chat_room.ui */, + B30F19512896772B004D40BF /* direct_connect.ui */, + B30F19522896772B004D40BF /* host_room.cpp */, + B30F19532896772B004D40BF /* moderation_dialog.h */, + B30F19542896772B004D40BF /* message.cpp */, + B30F19552896772B004D40BF /* moderation_dialog.ui */, + B30F19562896772B004D40BF /* client_room.h */, + B30F19572896772B004D40BF /* lobby.h */, + B30F19582896772B004D40BF /* moderation_dialog.cpp */, + B30F19592896772B004D40BF /* state.cpp */, + B30F195A2896772B004D40BF /* message.h */, + B30F195B2896772B004D40BF /* client_room.ui */, + B30F195C2896772B004D40BF /* validation.h */, + B30F195D2896772B004D40BF /* direct_connect.cpp */, + B30F195E2896772B004D40BF /* host_room.h */, + B30F195F2896772B004D40BF /* direct_connect.h */, + B30F19602896772B004D40BF /* lobby.ui */, + B30F19612896772B004D40BF /* lobby.cpp */, + B30F19622896772B004D40BF /* chat_room.cpp */, + B30F19632896772B004D40BF /* state.h */, + B30F19642896772B004D40BF /* lobby_p.h */, + B30F19652896772B004D40BF /* host_room.ui */, + ); + path = multiplayer; + sourceTree = ""; + }; + B30F19692896772B004D40BF /* network */ = { + isa = PBXGroup; + children = ( + B30F196A2896772B004D40BF /* network.cpp */, + B30F196B2896772B004D40BF /* CMakeLists.txt */, + B30F196C2896772B004D40BF /* verify_user.cpp */, + B30F196D2896772B004D40BF /* announce_multiplayer_session.cpp */, + B30F196E2896772B004D40BF /* room.h */, + B30F196F2896772B004D40BF /* room_member.cpp */, + B30F19702896772B004D40BF /* verify_user.h */, + B30F19712896772B004D40BF /* packet.cpp */, + B30F19722896772B004D40BF /* room.cpp */, + B30F19732896772B004D40BF /* network.h */, + B30F19742896772B004D40BF /* room_member.h */, + B30F19752896772B004D40BF /* packet.h */, + B30F19762896772B004D40BF /* announce_multiplayer_session.h */, + B30F19772896772B004D40BF /* network_settings.cpp */, + B30F19782896772B004D40BF /* network_settings.h */, + ); + path = network; + sourceTree = ""; + }; + B30F19792896772B004D40BF /* tests */ = { + isa = PBXGroup; + children = ( + B30F197A2896772B004D40BF /* audio_core */, + B30F197D2896772B004D40BF /* CMakeLists.txt */, + B30F197E2896772B004D40BF /* core */, + B30F198E2896772B004D40BF /* video_core */, + B30F19912896772B004D40BF /* common */, + B30F19942896772B004D40BF /* tests.cpp */, + ); + path = tests; + sourceTree = ""; + }; + B30F197A2896772B004D40BF /* audio_core */ = { + isa = PBXGroup; + children = ( + B30F197B2896772B004D40BF /* audio_fixures.h */, + B30F197C2896772B004D40BF /* decoder_tests.cpp */, + ); + path = audio_core; + sourceTree = ""; + }; + B30F197E2896772B004D40BF /* core */ = { + isa = PBXGroup; + children = ( + B30F197F2896772B004D40BF /* memory */, + B30F19822896772B004D40BF /* hle */, + B30F19852896772B004D40BF /* file_sys */, + B30F19872896772B004D40BF /* core_timing.cpp */, + B30F19882896772B004D40BF /* arm */, + ); + path = core; + sourceTree = ""; + }; + B30F197F2896772B004D40BF /* memory */ = { + isa = PBXGroup; + children = ( + B30F19802896772B004D40BF /* memory.cpp */, + B30F19812896772B004D40BF /* vm_manager.cpp */, + ); + path = memory; + sourceTree = ""; + }; + B30F19822896772B004D40BF /* hle */ = { + isa = PBXGroup; + children = ( + B30F19832896772B004D40BF /* kernel */, + ); + path = hle; + sourceTree = ""; + }; + B30F19832896772B004D40BF /* kernel */ = { + isa = PBXGroup; + children = ( + B30F19842896772B004D40BF /* hle_ipc.cpp */, + ); + path = kernel; + sourceTree = ""; + }; + B30F19852896772B004D40BF /* file_sys */ = { + isa = PBXGroup; + children = ( + B30F19862896772B004D40BF /* path_parser.cpp */, + ); + path = file_sys; + sourceTree = ""; + }; + B30F19882896772B004D40BF /* arm */ = { + isa = PBXGroup; + children = ( + B30F19892896772B004D40BF /* arm_test_common.h */, + B30F198A2896772B004D40BF /* arm_test_common.cpp */, + B30F198B2896772B004D40BF /* dyncom */, + ); + path = arm; + sourceTree = ""; + }; + B30F198B2896772B004D40BF /* dyncom */ = { + isa = PBXGroup; + children = ( + B30F198C2896772B004D40BF /* arm_dyncom_vfp_tests.cpp */, + B30F198D2896772B004D40BF /* vfp_vadd_f32.inc */, + ); + path = dyncom; + sourceTree = ""; + }; + B30F198E2896772B004D40BF /* video_core */ = { + isa = PBXGroup; + children = ( + B30F198F2896772B004D40BF /* shader */, + ); + path = video_core; + sourceTree = ""; + }; + B30F198F2896772B004D40BF /* shader */ = { + isa = PBXGroup; + children = ( + B30F19902896772B004D40BF /* shader_jit_x64_compiler.cpp */, + ); + path = shader; + sourceTree = ""; + }; + B30F19912896772B004D40BF /* common */ = { + isa = PBXGroup; + children = ( + B30F19922896772B004D40BF /* param_package.cpp */, + B30F19932896772B004D40BF /* bit_field.cpp */, + ); + path = common; + sourceTree = ""; + }; + B30F19952896772B004D40BF /* video_core */ = { + isa = PBXGroup; + children = ( + B30F19962896772B004D40BF /* primitive_assembly.cpp */, + B30F19972896772B004D40BF /* utils.h */, + B30F19982896772B004D40BF /* regs.cpp */, + B30F19992896772B004D40BF /* regs_texturing.h */, + B30F199A2896772B004D40BF /* CMakeLists.txt */, + B30F199B2896772B004D40BF /* vertex_loader.h */, + B30F199C2896772B004D40BF /* pica_types.h */, + B30F199D2896772B004D40BF /* command_processor.cpp */, + B30F199E2896772B004D40BF /* geometry_pipeline.cpp */, + B30F199F2896772B004D40BF /* renderer_base.h */, + B30F19A02896772B004D40BF /* renderer_opengl */, + B30F19DF2896772B004D40BF /* rasterizer_interface.h */, + B30F19E02896772B004D40BF /* pica.cpp */, + B30F19E12896772B004D40BF /* video_core.cpp */, + B30F19E22896772B004D40BF /* regs_pipeline.h */, + B30F19E32896772B004D40BF /* command_processor.h */, + B30F19E42896772B004D40BF /* debug_utils */, + B30F19E72896772B004D40BF /* gpu_debugger.h */, + B30F19E82896772B004D40BF /* regs_rasterizer.h */, + B30F19E92896772B004D40BF /* video_core.h */, + B30F19EA2896772B004D40BF /* geometry_pipeline.h */, + B30F19EB2896772B004D40BF /* renderer_base.cpp */, + B30F19EC2896772B004D40BF /* regs_lighting.h */, + B30F19ED2896772B004D40BF /* texture */, + B30F19F22896772B004D40BF /* primitive_assembly.h */, + B30F19F32896772B004D40BF /* shader */, + B30F19FD2896772B004D40BF /* regs_shader.h */, + B30F19FE2896772B004D40BF /* regs.h */, + B30F19FF2896772B004D40BF /* pica.h */, + B30F1A002896772B004D40BF /* regs_framebuffer.h */, + B30F1A012896772B004D40BF /* pica_state.h */, + B30F1A022896772B004D40BF /* vertex_loader.cpp */, + B30F1A032896772B004D40BF /* swrasterizer */, + B30F1A122896772B004D40BF /* generate_shaders.cmake */, + ); + path = video_core; + sourceTree = ""; + }; + B30F19A02896772B004D40BF /* renderer_opengl */ = { + isa = PBXGroup; + children = ( + B30F19A12896772B004D40BF /* texture_downloader_es.h */, + B30F19A22896772B004D40BF /* gl_vars.cpp */, + B30F19A32896772B004D40BF /* gl_shader_gen.cpp */, + B30F19A42896772B004D40BF /* gl_shader_manager.cpp */, + B30F19A52896772B004D40BF /* gl_vars.h */, + B30F19A62896772B004D40BF /* gl_shader_disk_cache.h */, + B30F19A72896772B004D40BF /* frame_dumper_opengl.h */, + B30F19A82896772B004D40BF /* post_processing_opengl.cpp */, + B30F19A92896772B004D40BF /* depth_to_color.vert */, + B30F19AA2896772B004D40BF /* texture_downloader_es.cpp */, + B30F19AB2896772B004D40BF /* post_processing_opengl.h */, + B30F19AC2896772B004D40BF /* gl_rasterizer_cache.cpp */, + B30F19AD2896772B004D40BF /* renderer_opengl.cpp */, + B30F19AE2896772B004D40BF /* texture_filters */, + B30F19C62896772B004D40BF /* gl_surface_params.h */, + B30F19C72896772B004D40BF /* gl_format_reinterpreter.h */, + B30F19C82896772B004D40BF /* gl_surface_params.cpp */, + B30F19C92896772B004D40BF /* gl_shader_decompiler.h */, + B30F19CA2896772B004D40BF /* depth_to_color.frag */, + B30F19CB2896772B004D40BF /* gl_shader_decompiler.cpp */, + B30F19CC2896772B004D40BF /* gl_shader_util.cpp */, + B30F19CD2896772B004D40BF /* gl_shader_gen.h */, + B30F19CE2896772B004D40BF /* gl_shader_disk_cache.cpp */, + B30F19CF2896772B004D40BF /* gl_format_reinterpreter.cpp */, + B30F19D02896772B004D40BF /* ds_to_color.frag */, + B30F19D12896772B004D40BF /* gl_rasterizer_cache.h */, + B30F19D22896772B004D40BF /* gl_shader_manager.h */, + B30F19D32896772B004D40BF /* gl_stream_buffer.h */, + B30F19D42896772B004D40BF /* gl_rasterizer.cpp */, + B30F19D52896772B004D40BF /* gl_shader_util.h */, + B30F19D62896772B004D40BF /* gl_resource_manager.h */, + B30F19D72896772B004D40BF /* gl_rasterizer.h */, + B30F19D82896772B004D40BF /* frame_dumper_opengl.cpp */, + B30F19D92896772B004D40BF /* gl_resource_manager.cpp */, + B30F19DA2896772B004D40BF /* pica_to_gl.h */, + B30F19DB2896772B004D40BF /* renderer_opengl.h */, + B30F19DC2896772B004D40BF /* gl_state.h */, + B30F19DD2896772B004D40BF /* gl_stream_buffer.cpp */, + B30F19DE2896772B004D40BF /* gl_state.cpp */, + ); + path = renderer_opengl; + sourceTree = ""; + }; + B30F19AE2896772B004D40BF /* texture_filters */ = { + isa = PBXGroup; + children = ( + B30F19AF2896772B004D40BF /* bicubic */, + B30F19B32896772B004D40BF /* texture_filter_base.h */, + B30F19B42896772B004D40BF /* anime4k */, + B30F19BA2896772B004D40BF /* xbrz */, + B30F19BF2896772B004D40BF /* scale_force */, + B30F19C32896772B004D40BF /* tex_coord.vert */, + B30F19C42896772B004D40BF /* texture_filterer.cpp */, + B30F19C52896772B004D40BF /* texture_filterer.h */, + ); + path = texture_filters; + sourceTree = ""; + }; + B30F19AF2896772B004D40BF /* bicubic */ = { + isa = PBXGroup; + children = ( + B30F19B02896772B004D40BF /* bicubic.frag */, + B30F19B12896772B004D40BF /* bicubic.cpp */, + B30F19B22896772B004D40BF /* bicubic.h */, + ); + path = bicubic; + sourceTree = ""; + }; + B30F19B42896772B004D40BF /* anime4k */ = { + isa = PBXGroup; + children = ( + B30F19B52896772B004D40BF /* x_gradient.frag */, + B30F19B62896772B004D40BF /* anime4k_ultrafast.cpp */, + B30F19B72896772B004D40BF /* anime4k_ultrafast.h */, + B30F19B82896772B004D40BF /* y_gradient.frag */, + B30F19B92896772B004D40BF /* refine.frag */, + ); + path = anime4k; + sourceTree = ""; + }; + B30F19BA2896772B004D40BF /* xbrz */ = { + isa = PBXGroup; + children = ( + B30F19BB2896772B004D40BF /* xbrz_freescale.frag */, + B30F19BC2896772B004D40BF /* xbrz_freescale.h */, + B30F19BD2896772B004D40BF /* xbrz_freescale.cpp */, + B30F19BE2896772B004D40BF /* xbrz_freescale.vert */, + ); + path = xbrz; + sourceTree = ""; + }; + B30F19BF2896772B004D40BF /* scale_force */ = { + isa = PBXGroup; + children = ( + B30F19C02896772B004D40BF /* scale_force.cpp */, + B30F19C12896772B004D40BF /* scale_force.frag */, + B30F19C22896772B004D40BF /* scale_force.h */, + ); + path = scale_force; + sourceTree = ""; + }; + B30F19E42896772B004D40BF /* debug_utils */ = { + isa = PBXGroup; + children = ( + B30F19E52896772B004D40BF /* debug_utils.cpp */, + B30F19E62896772B004D40BF /* debug_utils.h */, + ); + path = debug_utils; + sourceTree = ""; + }; + B30F19ED2896772B004D40BF /* texture */ = { + isa = PBXGroup; + children = ( + B30F19EE2896772B004D40BF /* etc1.h */, + B30F19EF2896772B004D40BF /* texture_decode.h */, + B30F19F02896772B004D40BF /* texture_decode.cpp */, + B30F19F12896772B004D40BF /* etc1.cpp */, + ); + path = texture; + sourceTree = ""; + }; + B30F19F32896772B004D40BF /* shader */ = { + isa = PBXGroup; + children = ( + B30F19F42896772B004D40BF /* shader.h */, + B30F19F52896772B004D40BF /* shader_jit_x64_compiler.h */, + B30F19F62896772B004D40BF /* shader_jit_x64.h */, + B30F19F72896772B004D40BF /* shader.cpp */, + B30F19F82896772B004D40BF /* shader_jit_x64.cpp */, + B30F19F92896772B004D40BF /* shader_interpreter.cpp */, + B30F19FA2896772B004D40BF /* shader_interpreter.h */, + B30F19FB2896772B004D40BF /* debug_data.h */, + B30F19FC2896772B004D40BF /* shader_jit_x64_compiler.cpp */, + ); + path = shader; + sourceTree = ""; + }; + B30F1A032896772B004D40BF /* swrasterizer */ = { + isa = PBXGroup; + children = ( + B30F1A042896772B004D40BF /* proctex.h */, + B30F1A052896772B004D40BF /* texturing.cpp */, + B30F1A062896772B004D40BF /* clipper.cpp */, + B30F1A072896772B004D40BF /* framebuffer.cpp */, + B30F1A082896772B004D40BF /* swrasterizer.h */, + B30F1A092896772B004D40BF /* framebuffer.h */, + B30F1A0A2896772B004D40BF /* swrasterizer.cpp */, + B30F1A0B2896772B004D40BF /* lighting.cpp */, + B30F1A0C2896772B004D40BF /* rasterizer.cpp */, + B30F1A0D2896772B004D40BF /* rasterizer.h */, + B30F1A0E2896772B004D40BF /* clipper.h */, + B30F1A0F2896772B004D40BF /* texturing.h */, + B30F1A102896772B004D40BF /* proctex.cpp */, + B30F1A112896772B004D40BF /* lighting.h */, + ); + path = swrasterizer; + sourceTree = ""; + }; + B30F1A132896772B004D40BF /* common */ = { + isa = PBXGroup; + children = ( + B30F1A142896772B004D40BF /* common_types.h */, + B30F1A152896772B004D40BF /* string_util.cpp */, + B30F1A162896772B004D40BF /* thread.cpp */, + B30F1A172896772B004D40BF /* construct.h */, + B30F1A182896772B004D40BF /* param_package.cpp */, + B30F1A192896772B004D40BF /* CMakeLists.txt */, + B30F1A1A2896772B004D40BF /* web_result.h */, + B30F1A1B2896772B004D40BF /* detached_tasks.h */, + B30F1A1C2896772B004D40BF /* threadsafe_queue.h */, + B30F1A1D2896772B004D40BF /* alignment.h */, + B30F1A1E2896772B004D40BF /* string_util.h */, + B30F1A1F2896772B004D40BF /* file_util.cpp */, + B30F1A202896772B004D40BF /* misc.cpp */, + B30F1A212896772B004D40BF /* x64 */, + B30F1A262896772B004D40BF /* scm_rev.cpp.in */, + B30F1A272896772B004D40BF /* ring_buffer.h */, + B30F1A282896772B004D40BF /* serialization */, + B30F1A2F2896772B004D40BF /* zstd_compression.cpp */, + B30F1A302896772B004D40BF /* bit_field.h */, + B30F1A312896772B004D40BF /* swap.h */, + B30F1A322896772B004D40BF /* timer.cpp */, + B30F1A332896772B004D40BF /* param_package.h */, + B30F1A342896772B004D40BF /* memory_ref.h */, + B30F1A352896772C004D40BF /* file_util.h */, + B30F1A362896772C004D40BF /* detached_tasks.cpp */, + B30F1A372896772C004D40BF /* texture.cpp */, + B30F1A382896772C004D40BF /* quaternion.h */, + B30F1A392896772C004D40BF /* cityhash.cpp */, + B30F1A3A2896772C004D40BF /* color.h */, + B30F1A3B2896772C004D40BF /* scope_exit.h */, + B30F1A3C2896772C004D40BF /* linear_disk_cache.h */, + B30F1A3D2896772C004D40BF /* thread_queue_list.h */, + B30F1A3E2896772C004D40BF /* microprofile.cpp */, + B30F1A3F2896772C004D40BF /* common_funcs.h */, + B30F1A402896772C004D40BF /* zstd_compression.h */, + B30F1A412896772C004D40BF /* math_util.h */, + B30F1A422896772C004D40BF /* timer.h */, + B30F1A432896772C004D40BF /* thread.h */, + B30F1A442896772C004D40BF /* common_paths.h */, + B30F1A452896772C004D40BF /* announce_multiplayer_room.h */, + B30F1A462896772C004D40BF /* cityhash.h */, + B30F1A472896772C004D40BF /* memory_ref.cpp */, + B30F1A482896772C004D40BF /* texture.h */, + B30F1A492896772C004D40BF /* telemetry.cpp */, + B30F1A4A2896772C004D40BF /* vector_math.h */, + B30F1A4B2896772C004D40BF /* microprofile.h */, + B30F1A4C2896772C004D40BF /* microprofileui.h */, + B30F1A4D2896772C004D40BF /* bit_set.h */, + B30F1A4E2896772C004D40BF /* scm_rev.h */, + B30F1A4F2896772C004D40BF /* assert.h */, + B30F1A502896772C004D40BF /* aarch64 */, + B30F1A532896772C004D40BF /* logging */, + B30F1A5B2896772C004D40BF /* hash.h */, + B30F1A5C2896772C004D40BF /* telemetry.h */, + B30F1A5D2896772C004D40BF /* archives.h */, + ); + path = common; + sourceTree = ""; + }; + B30F1A212896772B004D40BF /* x64 */ = { + isa = PBXGroup; + children = ( + B30F1A222896772B004D40BF /* cpu_detect.cpp */, + B30F1A232896772B004D40BF /* xbyak_abi.h */, + B30F1A242896772B004D40BF /* cpu_detect.h */, + B30F1A252896772B004D40BF /* xbyak_util.h */, + ); + path = x64; + sourceTree = ""; + }; + B30F1A282896772B004D40BF /* serialization */ = { + isa = PBXGroup; + children = ( + B30F1A292896772B004D40BF /* boost_interval_set.hpp */, + B30F1A2A2896772B004D40BF /* boost_vector.hpp */, + B30F1A2B2896772B004D40BF /* boost_small_vector.hpp */, + B30F1A2C2896772B004D40BF /* boost_flat_set.h */, + B30F1A2D2896772B004D40BF /* boost_discrete_interval.hpp */, + B30F1A2E2896772B004D40BF /* atomic.h */, + ); + path = serialization; + sourceTree = ""; + }; + B30F1A502896772C004D40BF /* aarch64 */ = { + isa = PBXGroup; + children = ( + B30F1A512896772C004D40BF /* cpu_detect.cpp */, + B30F1A522896772C004D40BF /* cpu_detect.h */, + ); + path = aarch64; + sourceTree = ""; + }; + B30F1A532896772C004D40BF /* logging */ = { + isa = PBXGroup; + children = ( + B30F1A542896772C004D40BF /* backend.cpp */, + B30F1A552896772C004D40BF /* text_formatter.cpp */, + B30F1A562896772C004D40BF /* backend.h */, + B30F1A572896772C004D40BF /* text_formatter.h */, + B30F1A582896772C004D40BF /* filter.cpp */, + B30F1A592896772C004D40BF /* log.h */, + B30F1A5A2896772C004D40BF /* filter.h */, + ); + path = logging; + sourceTree = ""; + }; + B30F1A5E2896772C004D40BF /* input_common */ = { + isa = PBXGroup; + children = ( + B30F1A5F2896772C004D40BF /* main.h */, + B30F1A602896772C004D40BF /* CMakeLists.txt */, + B30F1A612896772C004D40BF /* motion_emu.cpp */, + B30F1A622896772C004D40BF /* udp */, + B30F1A692896772C004D40BF /* analog_from_button.h */, + B30F1A6A2896772C004D40BF /* analog_from_button.cpp */, + B30F1A6B2896772C004D40BF /* touch_from_button.h */, + B30F1A6C2896772C004D40BF /* touch_from_button.cpp */, + B30F1A6D2896772C004D40BF /* sdl */, + B30F1A722896772C004D40BF /* keyboard.h */, + B30F1A732896772C004D40BF /* motion_emu.h */, + B30F1A742896772C004D40BF /* gcadapter */, + B30F1A792896772C004D40BF /* keyboard.cpp */, + B30F1A7A2896772C004D40BF /* main.cpp */, + ); + path = input_common; + sourceTree = ""; + }; + B30F1A622896772C004D40BF /* udp */ = { + isa = PBXGroup; + children = ( + B30F1A632896772C004D40BF /* protocol.h */, + B30F1A642896772C004D40BF /* client.h */, + B30F1A652896772C004D40BF /* client.cpp */, + B30F1A662896772C004D40BF /* udp.cpp */, + B30F1A672896772C004D40BF /* protocol.cpp */, + B30F1A682896772C004D40BF /* udp.h */, + ); + path = udp; + sourceTree = ""; + }; + B30F1A6D2896772C004D40BF /* sdl */ = { + isa = PBXGroup; + children = ( + B30F1A6E2896772C004D40BF /* sdl_impl.cpp */, + B30F1A6F2896772C004D40BF /* sdl.cpp */, + B30F1A702896772C004D40BF /* sdl_impl.h */, + B30F1A712896772C004D40BF /* sdl.h */, + ); + path = sdl; + sourceTree = ""; + }; + B30F1A742896772C004D40BF /* gcadapter */ = { + isa = PBXGroup; + children = ( + B30F1A752896772C004D40BF /* gc_adapter.cpp */, + B30F1A762896772C004D40BF /* gc_poller.cpp */, + B30F1A772896772C004D40BF /* gc_adapter.h */, + B30F1A782896772C004D40BF /* gc_poller.h */, + ); + path = gcadapter; + sourceTree = ""; + }; + B30F1A7B2896772C004D40BF /* android */ = { + isa = PBXGroup; + children = ( + B30F1A7C2896772C004D40BF /* app */, + B30F1C1A2896772C004D40BF /* code-style-java.xml */, + B30F1C1B2896772C004D40BF /* gradle */, + B30F1C1F2896772C004D40BF /* gradlew */, + B30F1C202896772C004D40BF /* .gitignore */, + B30F1C212896772C004D40BF /* build.gradle */, + B30F1C222896772C004D40BF /* gradle.properties */, + B30F1C232896772C004D40BF /* gradlew.bat */, + B30F1C242896772C004D40BF /* settings.gradle */, + ); + path = android; + sourceTree = ""; + }; + B30F1A7C2896772C004D40BF /* app */ = { + isa = PBXGroup; + children = ( + B30F1A7D2896772C004D40BF /* proguard-rules.pro */, + B30F1A7E2896772C004D40BF /* build.gradle */, + B30F1A7F2896772C004D40BF /* src */, + ); + path = app; + sourceTree = ""; + }; + B30F1A7F2896772C004D40BF /* src */ = { + isa = PBXGroup; + children = ( + B30F1A802896772C004D40BF /* androidTest */, + B30F1A862896772C004D40BF /* test */, + B30F1A8C2896772C004D40BF /* main */, + ); + path = src; + sourceTree = ""; + }; + B30F1A802896772C004D40BF /* androidTest */ = { + isa = PBXGroup; + children = ( + B30F1A812896772C004D40BF /* java */, + ); + path = androidTest; + sourceTree = ""; + }; + B30F1A812896772C004D40BF /* java */ = { + isa = PBXGroup; + children = ( + B30F1A822896772C004D40BF /* org */, + ); + path = java; + sourceTree = ""; + }; + B30F1A822896772C004D40BF /* org */ = { + isa = PBXGroup; + children = ( + B30F1A832896772C004D40BF /* citra */, + ); + path = org; + sourceTree = ""; + }; + B30F1A832896772C004D40BF /* citra */ = { + isa = PBXGroup; + children = ( + B30F1A842896772C004D40BF /* citra_emu */, + ); + path = citra; + sourceTree = ""; + }; + B30F1A842896772C004D40BF /* citra_emu */ = { + isa = PBXGroup; + children = ( + B30F1A852896772C004D40BF /* ExampleInstrumentedTest.java */, + ); + path = citra_emu; + sourceTree = ""; + }; + B30F1A862896772C004D40BF /* test */ = { + isa = PBXGroup; + children = ( + B30F1A872896772C004D40BF /* java */, + ); + path = test; + sourceTree = ""; + }; + B30F1A872896772C004D40BF /* java */ = { + isa = PBXGroup; + children = ( + B30F1A882896772C004D40BF /* org */, + ); + path = java; + sourceTree = ""; + }; + B30F1A882896772C004D40BF /* org */ = { + isa = PBXGroup; + children = ( + B30F1A892896772C004D40BF /* citra */, + ); + path = org; + sourceTree = ""; + }; + B30F1A892896772C004D40BF /* citra */ = { + isa = PBXGroup; + children = ( + B30F1A8A2896772C004D40BF /* citra_emu */, + ); + path = citra; + sourceTree = ""; + }; + B30F1A8A2896772C004D40BF /* citra_emu */ = { + isa = PBXGroup; + children = ( + B30F1A8B2896772C004D40BF /* ExampleUnitTest.java */, + ); + path = citra_emu; + sourceTree = ""; + }; + B30F1A8C2896772C004D40BF /* main */ = { + isa = PBXGroup; + children = ( + B30F1A8D2896772C004D40BF /* res */, + B30F1B8F2896772C004D40BF /* AndroidManifest.xml */, + B30F1B902896772C004D40BF /* java */, + B30F1BFA2896772C004D40BF /* jni */, + ); + path = main; + sourceTree = ""; + }; + B30F1A8D2896772C004D40BF /* res */ = { + isa = PBXGroup; + children = ( + B30F1A8E2896772C004D40BF /* mipmap-mdpi */, + B30F1A912896772C004D40BF /* drawable-night-xxhdpi */, + B30F1A962896772C004D40BF /* values-w500dp */, + B30F1A982896772C004D40BF /* mipmap-hdpi */, + B30F1A9B2896772C004D40BF /* values-w820dp */, + B30F1A9D2896772C004D40BF /* values-it */, + B30F1A9F2896772C004D40BF /* drawable-night */, + B30F1AA12896772C004D40BF /* values-w750dp */, + B30F1AA32896772C004D40BF /* drawable */, + B30F1AA62896772C004D40BF /* mipmap-xxxhdpi */, + B30F1AA92896772C004D40BF /* values-ja */, + B30F1AAB2896772C004D40BF /* layout */, + B30F1ABC2896772C004D40BF /* mipmap-xxhdpi */, + B30F1ABF2896772C004D40BF /* drawable-night-mdpi */, + B30F1AC32896772C004D40BF /* values-night */, + B30F1AC62896772C004D40BF /* values */, + B30F1ACF2896772C004D40BF /* drawable-night-hdpi */, + B30F1AD42896772C004D40BF /* animator */, + B30F1AD92896772C004D40BF /* drawable-xhdpi */, + B30F1AFC2896772C004D40BF /* drawable-night-xhdpi */, + B30F1B012896772C004D40BF /* drawable-xxhdpi */, + B30F1B242896772C004D40BF /* drawable-hdpi */, + B30F1B472896772C004D40BF /* menu */, + B30F1B4B2896772C004D40BF /* drawable-mdpi */, + B30F1B4F2896772C004D40BF /* values-fi */, + B30F1B512896772C004D40BF /* drawable-night-xxxhdpi */, + B30F1B562896772C004D40BF /* values-fr */, + B30F1B582896772C004D40BF /* mipmap-xhdpi */, + B30F1B5B2896772C004D40BF /* values-es */, + B30F1B5D2896772C004D40BF /* drawable-xxxhdpi */, + B30F1B7F2896772C004D40BF /* values-nb */, + B30F1B812896772C004D40BF /* values-de */, + B30F1B832896772C004D40BF /* values-ko */, + B30F1B852896772C004D40BF /* values-w1050dp */, + B30F1B872896772C004D40BF /* values-pt */, + B30F1B892896772C004D40BF /* values-zh */, + B30F1B8B2896772C004D40BF /* values-w1000dp */, + B30F1B8D2896772C004D40BF /* mipmap-anydpi-v26 */, + ); + path = res; + sourceTree = ""; + }; + B30F1A8E2896772C004D40BF /* mipmap-mdpi */ = { + isa = PBXGroup; + children = ( + B30F1A8F2896772C004D40BF /* ic_launcher_foreground.png */, + B30F1A902896772C004D40BF /* ic_launcher.png */, + ); + path = "mipmap-mdpi"; + sourceTree = ""; + }; + B30F1A912896772C004D40BF /* drawable-night-xxhdpi */ = { + isa = PBXGroup; + children = ( + B30F1A922896772C004D40BF /* ic_settings_core.png */, + B30F1A932896772C004D40BF /* ic_premium.png */, + B30F1A942896772C004D40BF /* ic_folder.png */, + B30F1A952896772C004D40BF /* ic_cia_install.png */, + ); + path = "drawable-night-xxhdpi"; + sourceTree = ""; + }; + B30F1A962896772C004D40BF /* values-w500dp */ = { + isa = PBXGroup; + children = ( + B30F1A972896772C004D40BF /* integers.xml */, + ); + path = "values-w500dp"; + sourceTree = ""; + }; + B30F1A982896772C004D40BF /* mipmap-hdpi */ = { + isa = PBXGroup; + children = ( + B30F1A992896772C004D40BF /* ic_launcher_foreground.png */, + B30F1A9A2896772C004D40BF /* ic_launcher.png */, + ); + path = "mipmap-hdpi"; + sourceTree = ""; + }; + B30F1A9B2896772C004D40BF /* values-w820dp */ = { + isa = PBXGroup; + children = ( + B30F1A9C2896772C004D40BF /* dimens.xml */, + ); + path = "values-w820dp"; + sourceTree = ""; + }; + B30F1A9D2896772C004D40BF /* values-it */ = { + isa = PBXGroup; + children = ( + B30F1A9E2896772C004D40BF /* strings.xml */, + ); + path = "values-it"; + sourceTree = ""; + }; + B30F1A9F2896772C004D40BF /* drawable-night */ = { + isa = PBXGroup; + children = ( + B30F1AA02896772C004D40BF /* no_icon.png */, + ); + path = "drawable-night"; + sourceTree = ""; + }; + B30F1AA12896772C004D40BF /* values-w750dp */ = { + isa = PBXGroup; + children = ( + B30F1AA22896772C004D40BF /* integers.xml */, + ); + path = "values-w750dp"; + sourceTree = ""; + }; + B30F1AA32896772C004D40BF /* drawable */ = { + isa = PBXGroup; + children = ( + B30F1AA42896772C004D40BF /* gamelist_divider.xml */, + B30F1AA52896772C004D40BF /* no_icon.png */, + ); + path = drawable; + sourceTree = ""; + }; + B30F1AA62896772C004D40BF /* mipmap-xxxhdpi */ = { + isa = PBXGroup; + children = ( + B30F1AA72896772C004D40BF /* ic_launcher_foreground.png */, + B30F1AA82896772C004D40BF /* ic_launcher.png */, + ); + path = "mipmap-xxxhdpi"; + sourceTree = ""; + }; + B30F1AA92896772C004D40BF /* values-ja */ = { + isa = PBXGroup; + children = ( + B30F1AAA2896772C004D40BF /* strings.xml */, + ); + path = "values-ja"; + sourceTree = ""; + }; + B30F1AAB2896772C004D40BF /* layout */ = { + isa = PBXGroup; + children = ( + B30F1AAC2896772C004D40BF /* list_item_setting.xml */, + B30F1AAD2896772C004D40BF /* dialog_progress_bar.xml */, + B30F1AAE2896772C004D40BF /* card_game.xml */, + B30F1AAF2896772C004D40BF /* activity_settings.xml */, + B30F1AB02896772C004D40BF /* fragment_grid.xml */, + B30F1AB12896772C004D40BF /* sysclock_datetime_picker.xml */, + B30F1AB22896772C004D40BF /* dialog_seekbar.xml */, + B30F1AB32896772C004D40BF /* premium_item_setting.xml */, + B30F1AB42896772C004D40BF /* list_item_setting_checkbox.xml */, + B30F1AB52896772C004D40BF /* filepicker_toolbar.xml */, + B30F1AB62896772C004D40BF /* fragment_settings.xml */, + B30F1AB72896772C004D40BF /* activity_emulation.xml */, + B30F1AB82896772C004D40BF /* list_item_settings_header.xml */, + B30F1AB92896772C004D40BF /* fragment_emulation.xml */, + B30F1ABA2896772C004D40BF /* dialog_checkbox.xml */, + B30F1ABB2896772C004D40BF /* activity_main.xml */, + ); + path = layout; + sourceTree = ""; + }; + B30F1ABC2896772C004D40BF /* mipmap-xxhdpi */ = { + isa = PBXGroup; + children = ( + B30F1ABD2896772C004D40BF /* ic_launcher_foreground.png */, + B30F1ABE2896772C004D40BF /* ic_launcher.png */, + ); + path = "mipmap-xxhdpi"; + sourceTree = ""; + }; + B30F1ABF2896772C004D40BF /* drawable-night-mdpi */ = { + isa = PBXGroup; + children = ( + B30F1AC02896772C004D40BF /* ic_premium.png */, + B30F1AC12896772C004D40BF /* ic_folder.png */, + B30F1AC22896772C004D40BF /* ic_cia_install.png */, + ); + path = "drawable-night-mdpi"; + sourceTree = ""; + }; + B30F1AC32896772C004D40BF /* values-night */ = { + isa = PBXGroup; + children = ( + B30F1AC42896772C004D40BF /* colors.xml */, + B30F1AC52896772C004D40BF /* styles_filepicker.xml */, + ); + path = "values-night"; + sourceTree = ""; + }; + B30F1AC62896772C004D40BF /* values */ = { + isa = PBXGroup; + children = ( + B30F1AC72896772C004D40BF /* colors.xml */, + B30F1AC82896772C004D40BF /* dimens.xml */, + B30F1AC92896772C004D40BF /* arrays.xml */, + B30F1ACA2896772C004D40BF /* styles_filepicker.xml */, + B30F1ACB2896772C004D40BF /* styles.xml */, + B30F1ACC2896772C004D40BF /* strings.xml */, + B30F1ACD2896772C004D40BF /* integers.xml */, + B30F1ACE2896772C004D40BF /* ic_launcher_background.xml */, + ); + path = values; + sourceTree = ""; + }; + B30F1ACF2896772C004D40BF /* drawable-night-hdpi */ = { + isa = PBXGroup; + children = ( + B30F1AD02896772C004D40BF /* ic_settings_core.png */, + B30F1AD12896772C004D40BF /* ic_premium.png */, + B30F1AD22896772C004D40BF /* ic_folder.png */, + B30F1AD32896772C004D40BF /* ic_cia_install.png */, + ); + path = "drawable-night-hdpi"; + sourceTree = ""; + }; + B30F1AD42896772C004D40BF /* animator */ = { + isa = PBXGroup; + children = ( + B30F1AD52896772C004D40BF /* settings_enter.xml */, + B30F1AD62896772C004D40BF /* setttings_pop_exit.xml */, + B30F1AD72896772C004D40BF /* settings_pop_enter.xml */, + B30F1AD82896772C004D40BF /* settings_exit.xml */, + ); + path = animator; + sourceTree = ""; + }; + B30F1AD92896772C004D40BF /* drawable-xhdpi */ = { + isa = PBXGroup; + children = ( + B30F1ADA2896772C004D40BF /* button_r.png */, + B30F1ADB2896772C004D40BF /* stick_c_range.png */, + B30F1ADC2896772C004D40BF /* ic_settings_core.png */, + B30F1ADD2896772C004D40BF /* stick_main_pressed.png */, + B30F1ADE2896772C004D40BF /* button_y_pressed.png */, + B30F1ADF2896772C004D40BF /* button_b.png */, + B30F1AE02896772C004D40BF /* stick_main_range.png */, + B30F1AE12896772C004D40BF /* button_a.png */, + B30F1AE22896772C004D40BF /* dpad_pressed_one_direction.png */, + B30F1AE32896772C004D40BF /* ic_premium.png */, + B30F1AE42896772C004D40BF /* dpad.png */, + B30F1AE52896772C004D40BF /* stick_main.png */, + B30F1AE62896772C004D40BF /* ic_folder.png */, + B30F1AE72896772C004D40BF /* button_zl_pressed.png */, + B30F1AE82896772C004D40BF /* button_zr.png */, + B30F1AE92896772C004D40BF /* button_l_pressed.png */, + B30F1AEA2896772C004D40BF /* ic_stat_notification_logo.png */, + B30F1AEB2896772C004D40BF /* stick_c_pressed.png */, + B30F1AEC2896772C004D40BF /* button_b_pressed.png */, + B30F1AED2896772C004D40BF /* button_select.png */, + B30F1AEE2896772C004D40BF /* button_start_pressed.png */, + B30F1AEF2896772C004D40BF /* ic_cia_install.png */, + B30F1AF02896772C004D40BF /* button_zl.png */, + B30F1AF12896772C004D40BF /* button_x_pressed.png */, + B30F1AF22896772C004D40BF /* button_r_pressed.png */, + B30F1AF32896772C004D40BF /* stick_c.png */, + B30F1AF42896772C004D40BF /* button_l.png */, + B30F1AF52896772C004D40BF /* button_select_pressed.png */, + B30F1AF62896772C004D40BF /* button_y.png */, + B30F1AF72896772C004D40BF /* dpad_pressed_two_directions.png */, + B30F1AF82896772C004D40BF /* button_x.png */, + B30F1AF92896772C004D40BF /* button_a_pressed.png */, + B30F1AFA2896772C004D40BF /* button_zr_pressed.png */, + B30F1AFB2896772C004D40BF /* button_start.png */, + ); + path = "drawable-xhdpi"; + sourceTree = ""; + }; + B30F1AFC2896772C004D40BF /* drawable-night-xhdpi */ = { + isa = PBXGroup; + children = ( + B30F1AFD2896772C004D40BF /* ic_settings_core.png */, + B30F1AFE2896772C004D40BF /* ic_premium.png */, + B30F1AFF2896772C004D40BF /* ic_folder.png */, + B30F1B002896772C004D40BF /* ic_cia_install.png */, + ); + path = "drawable-night-xhdpi"; + sourceTree = ""; + }; + B30F1B012896772C004D40BF /* drawable-xxhdpi */ = { + isa = PBXGroup; + children = ( + B30F1B022896772C004D40BF /* button_r.png */, + B30F1B032896772C004D40BF /* stick_c_range.png */, + B30F1B042896772C004D40BF /* ic_settings_core.png */, + B30F1B052896772C004D40BF /* stick_main_pressed.png */, + B30F1B062896772C004D40BF /* button_y_pressed.png */, + B30F1B072896772C004D40BF /* button_b.png */, + B30F1B082896772C004D40BF /* stick_main_range.png */, + B30F1B092896772C004D40BF /* button_a.png */, + B30F1B0A2896772C004D40BF /* dpad_pressed_one_direction.png */, + B30F1B0B2896772C004D40BF /* ic_premium.png */, + B30F1B0C2896772C004D40BF /* dpad.png */, + B30F1B0D2896772C004D40BF /* stick_main.png */, + B30F1B0E2896772C004D40BF /* ic_folder.png */, + B30F1B0F2896772C004D40BF /* button_zl_pressed.png */, + B30F1B102896772C004D40BF /* button_zr.png */, + B30F1B112896772C004D40BF /* button_l_pressed.png */, + B30F1B122896772C004D40BF /* ic_stat_notification_logo.png */, + B30F1B132896772C004D40BF /* stick_c_pressed.png */, + B30F1B142896772C004D40BF /* button_b_pressed.png */, + B30F1B152896772C004D40BF /* button_select.png */, + B30F1B162896772C004D40BF /* button_start_pressed.png */, + B30F1B172896772C004D40BF /* ic_cia_install.png */, + B30F1B182896772C004D40BF /* button_zl.png */, + B30F1B192896772C004D40BF /* button_x_pressed.png */, + B30F1B1A2896772C004D40BF /* button_r_pressed.png */, + B30F1B1B2896772C004D40BF /* stick_c.png */, + B30F1B1C2896772C004D40BF /* button_l.png */, + B30F1B1D2896772C004D40BF /* button_select_pressed.png */, + B30F1B1E2896772C004D40BF /* button_y.png */, + B30F1B1F2896772C004D40BF /* dpad_pressed_two_directions.png */, + B30F1B202896772C004D40BF /* button_x.png */, + B30F1B212896772C004D40BF /* button_a_pressed.png */, + B30F1B222896772C004D40BF /* button_zr_pressed.png */, + B30F1B232896772C004D40BF /* button_start.png */, + ); + path = "drawable-xxhdpi"; + sourceTree = ""; + }; + B30F1B242896772C004D40BF /* drawable-hdpi */ = { + isa = PBXGroup; + children = ( + B30F1B252896772C004D40BF /* button_r.png */, + B30F1B262896772C004D40BF /* stick_c_range.png */, + B30F1B272896772C004D40BF /* ic_settings_core.png */, + B30F1B282896772C004D40BF /* stick_main_pressed.png */, + B30F1B292896772C004D40BF /* button_y_pressed.png */, + B30F1B2A2896772C004D40BF /* button_b.png */, + B30F1B2B2896772C004D40BF /* stick_main_range.png */, + B30F1B2C2896772C004D40BF /* button_a.png */, + B30F1B2D2896772C004D40BF /* dpad_pressed_one_direction.png */, + B30F1B2E2896772C004D40BF /* ic_premium.png */, + B30F1B2F2896772C004D40BF /* dpad.png */, + B30F1B302896772C004D40BF /* stick_main.png */, + B30F1B312896772C004D40BF /* ic_folder.png */, + B30F1B322896772C004D40BF /* button_zl_pressed.png */, + B30F1B332896772C004D40BF /* button_zr.png */, + B30F1B342896772C004D40BF /* button_l_pressed.png */, + B30F1B352896772C004D40BF /* ic_stat_notification_logo.png */, + B30F1B362896772C004D40BF /* stick_c_pressed.png */, + B30F1B372896772C004D40BF /* button_b_pressed.png */, + B30F1B382896772C004D40BF /* button_select.png */, + B30F1B392896772C004D40BF /* button_start_pressed.png */, + B30F1B3A2896772C004D40BF /* ic_cia_install.png */, + B30F1B3B2896772C004D40BF /* button_zl.png */, + B30F1B3C2896772C004D40BF /* button_x_pressed.png */, + B30F1B3D2896772C004D40BF /* button_r_pressed.png */, + B30F1B3E2896772C004D40BF /* stick_c.png */, + B30F1B3F2896772C004D40BF /* button_l.png */, + B30F1B402896772C004D40BF /* button_select_pressed.png */, + B30F1B412896772C004D40BF /* button_y.png */, + B30F1B422896772C004D40BF /* dpad_pressed_two_directions.png */, + B30F1B432896772C004D40BF /* button_x.png */, + B30F1B442896772C004D40BF /* button_a_pressed.png */, + B30F1B452896772C004D40BF /* button_zr_pressed.png */, + B30F1B462896772C004D40BF /* button_start.png */, + ); + path = "drawable-hdpi"; + sourceTree = ""; + }; + B30F1B472896772C004D40BF /* menu */ = { + isa = PBXGroup; + children = ( + B30F1B482896772C004D40BF /* menu_settings.xml */, + B30F1B492896772C004D40BF /* menu_game_grid.xml */, + B30F1B4A2896772C004D40BF /* menu_emulation.xml */, + ); + path = menu; + sourceTree = ""; + }; + B30F1B4B2896772C004D40BF /* drawable-mdpi */ = { + isa = PBXGroup; + children = ( + B30F1B4C2896772C004D40BF /* ic_premium.png */, + B30F1B4D2896772C004D40BF /* ic_folder.png */, + B30F1B4E2896772C004D40BF /* ic_cia_install.png */, + ); + path = "drawable-mdpi"; + sourceTree = ""; + }; + B30F1B4F2896772C004D40BF /* values-fi */ = { + isa = PBXGroup; + children = ( + B30F1B502896772C004D40BF /* strings.xml */, + ); + path = "values-fi"; + sourceTree = ""; + }; + B30F1B512896772C004D40BF /* drawable-night-xxxhdpi */ = { + isa = PBXGroup; + children = ( + B30F1B522896772C004D40BF /* ic_settings_core.png */, + B30F1B532896772C004D40BF /* ic_premium.png */, + B30F1B542896772C004D40BF /* ic_folder.png */, + B30F1B552896772C004D40BF /* ic_cia_install.png */, + ); + path = "drawable-night-xxxhdpi"; + sourceTree = ""; + }; + B30F1B562896772C004D40BF /* values-fr */ = { + isa = PBXGroup; + children = ( + B30F1B572896772C004D40BF /* strings.xml */, + ); + path = "values-fr"; + sourceTree = ""; + }; + B30F1B582896772C004D40BF /* mipmap-xhdpi */ = { + isa = PBXGroup; + children = ( + B30F1B592896772C004D40BF /* ic_launcher_foreground.png */, + B30F1B5A2896772C004D40BF /* ic_launcher.png */, + ); + path = "mipmap-xhdpi"; + sourceTree = ""; + }; + B30F1B5B2896772C004D40BF /* values-es */ = { + isa = PBXGroup; + children = ( + B30F1B5C2896772C004D40BF /* strings.xml */, + ); + path = "values-es"; + sourceTree = ""; + }; + B30F1B5D2896772C004D40BF /* drawable-xxxhdpi */ = { + isa = PBXGroup; + children = ( + B30F1B5E2896772C004D40BF /* button_r.png */, + B30F1B5F2896772C004D40BF /* stick_c_range.png */, + B30F1B602896772C004D40BF /* ic_settings_core.png */, + B30F1B612896772C004D40BF /* stick_main_pressed.png */, + B30F1B622896772C004D40BF /* button_y_pressed.png */, + B30F1B632896772C004D40BF /* button_b.png */, + B30F1B642896772C004D40BF /* stick_main_range.png */, + B30F1B652896772C004D40BF /* button_a.png */, + B30F1B662896772C004D40BF /* dpad_pressed_one_direction.png */, + B30F1B672896772C004D40BF /* ic_premium.png */, + B30F1B682896772C004D40BF /* dpad.png */, + B30F1B692896772C004D40BF /* stick_main.png */, + B30F1B6A2896772C004D40BF /* ic_folder.png */, + B30F1B6B2896772C004D40BF /* button_zl_pressed.png */, + B30F1B6C2896772C004D40BF /* button_zr.png */, + B30F1B6D2896772C004D40BF /* button_l_pressed.png */, + B30F1B6E2896772C004D40BF /* stick_c_pressed.png */, + B30F1B6F2896772C004D40BF /* button_b_pressed.png */, + B30F1B702896772C004D40BF /* button_select.png */, + B30F1B712896772C004D40BF /* button_start_pressed.png */, + B30F1B722896772C004D40BF /* ic_cia_install.png */, + B30F1B732896772C004D40BF /* button_zl.png */, + B30F1B742896772C004D40BF /* button_x_pressed.png */, + B30F1B752896772C004D40BF /* button_r_pressed.png */, + B30F1B762896772C004D40BF /* stick_c.png */, + B30F1B772896772C004D40BF /* button_l.png */, + B30F1B782896772C004D40BF /* button_select_pressed.png */, + B30F1B792896772C004D40BF /* button_y.png */, + B30F1B7A2896772C004D40BF /* dpad_pressed_two_directions.png */, + B30F1B7B2896772C004D40BF /* button_x.png */, + B30F1B7C2896772C004D40BF /* button_a_pressed.png */, + B30F1B7D2896772C004D40BF /* button_zr_pressed.png */, + B30F1B7E2896772C004D40BF /* button_start.png */, + ); + path = "drawable-xxxhdpi"; + sourceTree = ""; + }; + B30F1B7F2896772C004D40BF /* values-nb */ = { + isa = PBXGroup; + children = ( + B30F1B802896772C004D40BF /* strings.xml */, + ); + path = "values-nb"; + sourceTree = ""; + }; + B30F1B812896772C004D40BF /* values-de */ = { + isa = PBXGroup; + children = ( + B30F1B822896772C004D40BF /* strings.xml */, + ); + path = "values-de"; + sourceTree = ""; + }; + B30F1B832896772C004D40BF /* values-ko */ = { + isa = PBXGroup; + children = ( + B30F1B842896772C004D40BF /* strings.xml */, + ); + path = "values-ko"; + sourceTree = ""; + }; + B30F1B852896772C004D40BF /* values-w1050dp */ = { + isa = PBXGroup; + children = ( + B30F1B862896772C004D40BF /* dimens.xml */, + ); + path = "values-w1050dp"; + sourceTree = ""; + }; + B30F1B872896772C004D40BF /* values-pt */ = { + isa = PBXGroup; + children = ( + B30F1B882896772C004D40BF /* strings.xml */, + ); + path = "values-pt"; + sourceTree = ""; + }; + B30F1B892896772C004D40BF /* values-zh */ = { + isa = PBXGroup; + children = ( + B30F1B8A2896772C004D40BF /* strings.xml */, + ); + path = "values-zh"; + sourceTree = ""; + }; + B30F1B8B2896772C004D40BF /* values-w1000dp */ = { + isa = PBXGroup; + children = ( + B30F1B8C2896772C004D40BF /* integers.xml */, + ); + path = "values-w1000dp"; + sourceTree = ""; + }; + B30F1B8D2896772C004D40BF /* mipmap-anydpi-v26 */ = { + isa = PBXGroup; + children = ( + B30F1B8E2896772C004D40BF /* ic_launcher.xml */, + ); + path = "mipmap-anydpi-v26"; + sourceTree = ""; + }; + B30F1B902896772C004D40BF /* java */ = { + isa = PBXGroup; + children = ( + B30F1B912896772C004D40BF /* org */, + ); + path = java; + sourceTree = ""; + }; + B30F1B912896772C004D40BF /* org */ = { + isa = PBXGroup; + children = ( + B30F1B922896772C004D40BF /* citra */, + ); + path = org; + sourceTree = ""; + }; + B30F1B922896772C004D40BF /* citra */ = { + isa = PBXGroup; + children = ( + B30F1B932896772C004D40BF /* citra_emu */, + ); + path = citra; + sourceTree = ""; + }; + B30F1B932896772C004D40BF /* citra_emu */ = { + isa = PBXGroup; + children = ( + B30F1B942896772C004D40BF /* ui */, + B30F1B9E2896772C004D40BF /* applets */, + B30F1BA12896772C004D40BF /* fragments */, + B30F1BA42896772C004D40BF /* NativeLibrary.java */, + B30F1BA52896772C004D40BF /* camera */, + B30F1BA72896772C004D40BF /* features */, + B30F1BD22896772C004D40BF /* utils */, + B30F1BE52896772C004D40BF /* adapters */, + B30F1BE72896772C004D40BF /* disk_shader_cache */, + B30F1BE92896772C004D40BF /* viewholders */, + B30F1BEB2896772C004D40BF /* model */, + B30F1BEF2896772C004D40BF /* dialogs */, + B30F1BF12896772C004D40BF /* activities */, + B30F1BF42896772C004D40BF /* overlay */, + B30F1BF92896772C004D40BF /* CitraApplication.java */, + ); + path = citra_emu; + sourceTree = ""; + }; + B30F1B942896772C004D40BF /* ui */ = { + isa = PBXGroup; + children = ( + B30F1B952896772C004D40BF /* platform */, + B30F1B992896772C004D40BF /* DividerItemDecoration.java */, + B30F1B9A2896772C004D40BF /* main */, + ); + path = ui; + sourceTree = ""; + }; + B30F1B952896772C004D40BF /* platform */ = { + isa = PBXGroup; + children = ( + B30F1B962896772C004D40BF /* PlatformGamesPresenter.java */, + B30F1B972896772C004D40BF /* PlatformGamesFragment.java */, + B30F1B982896772C004D40BF /* PlatformGamesView.java */, + ); + path = platform; + sourceTree = ""; + }; + B30F1B9A2896772C004D40BF /* main */ = { + isa = PBXGroup; + children = ( + B30F1B9B2896772C004D40BF /* MainActivity.java */, + B30F1B9C2896772C004D40BF /* MainView.java */, + B30F1B9D2896772C004D40BF /* MainPresenter.java */, + ); + path = main; + sourceTree = ""; + }; + B30F1B9E2896772C004D40BF /* applets */ = { + isa = PBXGroup; + children = ( + B30F1B9F2896772C004D40BF /* MiiSelector.java */, + B30F1BA02896772C004D40BF /* SoftwareKeyboard.java */, + ); + path = applets; + sourceTree = ""; + }; + B30F1BA12896772C004D40BF /* fragments */ = { + isa = PBXGroup; + children = ( + B30F1BA22896772C004D40BF /* CustomFilePickerFragment.java */, + B30F1BA32896772C004D40BF /* EmulationFragment.java */, + ); + path = fragments; + sourceTree = ""; + }; + B30F1BA52896772C004D40BF /* camera */ = { + isa = PBXGroup; + children = ( + B30F1BA62896772C004D40BF /* StillImageCameraHelper.java */, + ); + path = camera; + sourceTree = ""; + }; + B30F1BA72896772C004D40BF /* features */ = { + isa = PBXGroup; + children = ( + B30F1BA82896772C004D40BF /* settings */, + ); + path = features; + sourceTree = ""; + }; + B30F1BA82896772C004D40BF /* settings */ = { + isa = PBXGroup; + children = ( + B30F1BA92896772C004D40BF /* ui */, + B30F1BBC2896772C004D40BF /* utils */, + B30F1BBE2896772C004D40BF /* model */, + ); + path = settings; + sourceTree = ""; + }; + B30F1BA92896772C004D40BF /* ui */ = { + isa = PBXGroup; + children = ( + B30F1BAA2896772C004D40BF /* SettingsAdapter.java */, + B30F1BAB2896772C004D40BF /* SettingsFragmentPresenter.java */, + B30F1BAC2896772C004D40BF /* SettingsFragmentView.java */, + B30F1BAD2896772C004D40BF /* SettingsFragment.java */, + B30F1BAE2896772C004D40BF /* SettingsActivityPresenter.java */, + B30F1BAF2896772C004D40BF /* SettingsFrameLayout.java */, + B30F1BB02896772C004D40BF /* SettingsActivityView.java */, + B30F1BB12896772C004D40BF /* viewholder */, + B30F1BBB2896772C004D40BF /* SettingsActivity.java */, + ); + path = ui; + sourceTree = ""; + }; + B30F1BB12896772C004D40BF /* viewholder */ = { + isa = PBXGroup; + children = ( + B30F1BB22896772C004D40BF /* SliderViewHolder.java */, + B30F1BB32896772C004D40BF /* SubmenuViewHolder.java */, + B30F1BB42896772C004D40BF /* HeaderViewHolder.java */, + B30F1BB52896772C004D40BF /* SingleChoiceViewHolder.java */, + B30F1BB62896772C004D40BF /* PremiumViewHolder.java */, + B30F1BB72896772C004D40BF /* CheckBoxSettingViewHolder.java */, + B30F1BB82896772C004D40BF /* SettingViewHolder.java */, + B30F1BB92896772C004D40BF /* InputBindingSettingViewHolder.java */, + B30F1BBA2896772C004D40BF /* DateTimeViewHolder.java */, + ); + path = viewholder; + sourceTree = ""; + }; + B30F1BBC2896772C004D40BF /* utils */ = { + isa = PBXGroup; + children = ( + B30F1BBD2896772C004D40BF /* SettingsFile.java */, + ); + path = utils; + sourceTree = ""; + }; + B30F1BBE2896772C004D40BF /* model */ = { + isa = PBXGroup; + children = ( + B30F1BBF2896772C004D40BF /* SettingSection.java */, + B30F1BC02896772C004D40BF /* FloatSetting.java */, + B30F1BC12896772C004D40BF /* IntSetting.java */, + B30F1BC22896772C004D40BF /* BooleanSetting.java */, + B30F1BC32896772C004D40BF /* view */, + B30F1BCF2896772C004D40BF /* Setting.java */, + B30F1BD02896772C004D40BF /* Settings.java */, + B30F1BD12896772C004D40BF /* StringSetting.java */, + ); + path = model; + sourceTree = ""; + }; + B30F1BC32896772C004D40BF /* view */ = { + isa = PBXGroup; + children = ( + B30F1BC42896772C004D40BF /* CheckBoxSetting.java */, + B30F1BC52896772C004D40BF /* SingleChoiceSetting.java */, + B30F1BC62896772C004D40BF /* SubmenuSetting.java */, + B30F1BC72896772C004D40BF /* InputBindingSetting.java */, + B30F1BC82896772C004D40BF /* DateTimeSetting.java */, + B30F1BC92896772C004D40BF /* PremiumSingleChoiceSetting.java */, + B30F1BCA2896772C004D40BF /* StringSingleChoiceSetting.java */, + B30F1BCB2896772C004D40BF /* SliderSetting.java */, + B30F1BCC2896772C004D40BF /* PremiumHeader.java */, + B30F1BCD2896772C004D40BF /* HeaderSetting.java */, + B30F1BCE2896772C004D40BF /* SettingsItem.java */, + ); + path = view; + sourceTree = ""; + }; + B30F1BD22896772C004D40BF /* utils */ = { + isa = PBXGroup; + children = ( + B30F1BD32896772C004D40BF /* Action1.java */, + B30F1BD42896772C004D40BF /* ForegroundService.java */, + B30F1BD52896772C004D40BF /* AddDirectoryHelper.java */, + B30F1BD62896772C004D40BF /* DirectoryInitialization.java */, + B30F1BD72896772C004D40BF /* StartupHandler.java */, + B30F1BD82896772C004D40BF /* PermissionsHandler.java */, + B30F1BD92896772C004D40BF /* FileUtil.java */, + B30F1BDA2896772C004D40BF /* PicassoRoundedCornersTransformation.java */, + B30F1BDB2896772C004D40BF /* BillingManager.java */, + B30F1BDC2896772C004D40BF /* Log.java */, + B30F1BDD2896772C004D40BF /* FileBrowserHelper.java */, + B30F1BDE2896772C004D40BF /* DirectoryStateReceiver.java */, + B30F1BDF2896772C004D40BF /* EmulationMenuSettings.java */, + B30F1BE02896772C004D40BF /* ThemeUtil.java */, + B30F1BE12896772C004D40BF /* ControllerMappingHelper.java */, + B30F1BE22896772C004D40BF /* BiMap.java */, + B30F1BE32896772C004D40BF /* GameIconRequestHandler.java */, + B30F1BE42896772C004D40BF /* PicassoUtils.java */, + ); + path = utils; + sourceTree = ""; + }; + B30F1BE52896772C004D40BF /* adapters */ = { + isa = PBXGroup; + children = ( + B30F1BE62896772C004D40BF /* GameAdapter.java */, + ); + path = adapters; + sourceTree = ""; + }; + B30F1BE72896772C004D40BF /* disk_shader_cache */ = { + isa = PBXGroup; + children = ( + B30F1BE82896772C004D40BF /* DiskShaderCacheProgress.java */, + ); + path = disk_shader_cache; + sourceTree = ""; + }; + B30F1BE92896772C004D40BF /* viewholders */ = { + isa = PBXGroup; + children = ( + B30F1BEA2896772C004D40BF /* GameViewHolder.java */, + ); + path = viewholders; + sourceTree = ""; + }; + B30F1BEB2896772C004D40BF /* model */ = { + isa = PBXGroup; + children = ( + B30F1BEC2896772C004D40BF /* GameDatabase.java */, + B30F1BED2896772C004D40BF /* Game.java */, + B30F1BEE2896772C004D40BF /* GameProvider.java */, + ); + path = model; + sourceTree = ""; + }; + B30F1BEF2896772C004D40BF /* dialogs */ = { + isa = PBXGroup; + children = ( + B30F1BF02896772C004D40BF /* MotionAlertDialog.java */, + ); + path = dialogs; + sourceTree = ""; + }; + B30F1BF12896772C004D40BF /* activities */ = { + isa = PBXGroup; + children = ( + B30F1BF22896772C004D40BF /* EmulationActivity.java */, + B30F1BF32896772C004D40BF /* CustomFilePickerActivity.java */, + ); + path = activities; + sourceTree = ""; + }; + B30F1BF42896772C004D40BF /* overlay */ = { + isa = PBXGroup; + children = ( + B30F1BF52896772C004D40BF /* InputOverlayDrawableDpad.java */, + B30F1BF62896772C004D40BF /* InputOverlayDrawableJoystick.java */, + B30F1BF72896772C004D40BF /* InputOverlayDrawableButton.java */, + B30F1BF82896772C004D40BF /* InputOverlay.java */, + ); + path = overlay; + sourceTree = ""; + }; + B30F1BFA2896772C004D40BF /* jni */ = { + isa = PBXGroup; + children = ( + B30F1BFB2896772C004D40BF /* mic.cpp */, + B30F1BFC2896772C004D40BF /* applets */, + B30F1C012896772C004D40BF /* CMakeLists.txt */, + B30F1C022896772C004D40BF /* game_info.cpp */, + B30F1C032896772C004D40BF /* native.h */, + B30F1C042896772C004D40BF /* config.h */, + B30F1C052896772C004D40BF /* id_cache.cpp */, + B30F1C062896772C004D40BF /* input_manager.h */, + B30F1C072896772C004D40BF /* camera */, + B30F1C0C2896772C004D40BF /* mic.h */, + B30F1C0D2896772C004D40BF /* ndk_motion.h */, + B30F1C0E2896772C004D40BF /* game_settings.cpp */, + B30F1C0F2896772C004D40BF /* ndk_motion.cpp */, + B30F1C102896772C004D40BF /* native.cpp */, + B30F1C112896772C004D40BF /* id_cache.h */, + B30F1C122896772C004D40BF /* config.cpp */, + B30F1C132896772C004D40BF /* default_ini.h */, + B30F1C142896772C004D40BF /* game_info.h */, + B30F1C152896772C004D40BF /* input_manager.cpp */, + B30F1C162896772C004D40BF /* game_settings.h */, + B30F1C172896772C004D40BF /* emu_window */, + ); + path = jni; + sourceTree = ""; + }; + B30F1BFC2896772C004D40BF /* applets */ = { + isa = PBXGroup; + children = ( + B30F1BFD2896772C004D40BF /* mii_selector.h */, + B30F1BFE2896772C004D40BF /* mii_selector.cpp */, + B30F1BFF2896772C004D40BF /* swkbd.h */, + B30F1C002896772C004D40BF /* swkbd.cpp */, + ); + path = applets; + sourceTree = ""; + }; + B30F1C072896772C004D40BF /* camera */ = { + isa = PBXGroup; + children = ( + B30F1C082896772C004D40BF /* still_image_camera.h */, + B30F1C092896772C004D40BF /* ndk_camera.cpp */, + B30F1C0A2896772C004D40BF /* still_image_camera.cpp */, + B30F1C0B2896772C004D40BF /* ndk_camera.h */, + ); + path = camera; + sourceTree = ""; + }; + B30F1C172896772C004D40BF /* emu_window */ = { + isa = PBXGroup; + children = ( + B30F1C182896772C004D40BF /* emu_window.cpp */, + B30F1C192896772C004D40BF /* emu_window.h */, + ); + path = emu_window; + sourceTree = ""; + }; + B30F1C1B2896772C004D40BF /* gradle */ = { + isa = PBXGroup; + children = ( + B30F1C1C2896772C004D40BF /* wrapper */, + ); + path = gradle; + sourceTree = ""; + }; + B30F1C1C2896772C004D40BF /* wrapper */ = { + isa = PBXGroup; + children = ( + B30F1C1D2896772C004D40BF /* gradle-wrapper.jar */, + B30F1C1E2896772C004D40BF /* gradle-wrapper.properties */, + ); + path = wrapper; + sourceTree = ""; + }; + B30F1C262896772D004D40BF /* web_service */ = { + isa = PBXGroup; + children = ( + B30F1C272896772D004D40BF /* verify_login.h */, + B30F1C282896772D004D40BF /* verify_user_jwt.h */, + B30F1C292896772D004D40BF /* announce_room_json.h */, + B30F1C2A2896772D004D40BF /* verify_user_jwt.cpp */, + B30F1C2B2896772D004D40BF /* CMakeLists.txt */, + B30F1C2C2896772D004D40BF /* verify_login.cpp */, + B30F1C2D2896772D004D40BF /* web_backend.h */, + B30F1C2E2896772D004D40BF /* announce_room_json.cpp */, + B30F1C2F2896772D004D40BF /* telemetry_json.cpp */, + B30F1C302896772D004D40BF /* telemetry_json.h */, + B30F1C312896772D004D40BF /* web_backend.cpp */, + ); + path = web_service; + sourceTree = ""; + }; + B30F1C322896772D004D40BF /* dedicated_room */ = { + isa = PBXGroup; + children = ( + B30F1C332896772D004D40BF /* CMakeLists.txt */, + B30F1C342896772D004D40BF /* citra-room.cpp */, + B30F1C352896772D004D40BF /* citra-room.rc */, + ); + path = dedicated_room; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVCitra */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVCitra.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVCitra; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVCitraCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVCitraCore.h */, + B37022C6287253B300B3F6DA /* PVCitraCore.mm */, + ); + path = PVCitraCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B30F142B28967728004D40BF /* citra */, + B37022BE287253B300B3F6DA /* PVCitra */, + B37022C4287253B300B3F6DA /* PVCitraCore */, + B37022BD287253B300B3F6DA /* PVCitra-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVCitra.framework */, + B30178D3207C901D0051B93D /* libCitra.a */, + B3344BC32859E088006E6B3A /* libCitra-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVCitra.h in Headers */, + B37022C92872554300B3F6DA /* PVCitraCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* Citra */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "Citra" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Citra; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libCitra.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* Citra-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "Citra-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Citra-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libCitra-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVCitra */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVCitra" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVCitra; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVCitra.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVCitra" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVCitra */, + B3344B522859E088006E6B3A /* Citra-libretro */, + B30178D2207C901D0051B93D /* Citra */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVCitraCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* Citra-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Citra; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Citra; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Citra-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVCitra/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVCitra"; + PRODUCT_NAME = PVCitra; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Citra; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Citra-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Citra-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Citra-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Citra-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Citra-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVCitra/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVCitra"; + PRODUCT_NAME = PVCitra; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVCitra/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVCitra"; + PRODUCT_NAME = PVCitra; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "Citra" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "Citra-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVCitra" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVCitra" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/Citra/PVCitra.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/Citra/PVCitra.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/Citra/PVCitra.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/Citra/PVCitra.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/Citra/PVCitra.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/Citra/PVCitra.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/Citra/PVCitra.xcodeproj/xcshareddata/xcschemes/PVCitra.xcscheme b/Cores/Citra/PVCitra.xcodeproj/xcshareddata/xcschemes/PVCitra.xcscheme new file mode 100644 index 0000000000..a0101794f3 --- /dev/null +++ b/Cores/Citra/PVCitra.xcodeproj/xcshareddata/xcschemes/PVCitra.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Citra/PVCitra/Core.plist b/Cores/Citra/PVCitra/Core.plist new file mode 100644 index 0000000000..2a61a1f8ea --- /dev/null +++ b/Cores/Citra/PVCitra/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.Citra + PVPrincipleClass + PVCitraCore + PVSupportedSystems + + com.provenance.3ds + + PVProjectName + Citra + PVProjectURL + https://github.com/libretro/libretro-core-info/blob/master/citra_libretro.info + PVProjectVersion + Git + + diff --git a/Cores/Citra/PVCitra/Info.plist b/Cores/Citra/PVCitra/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/Citra/PVCitra/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/Citra/PVCitra/PVCitra.h b/Cores/Citra/PVCitra/PVCitra.h new file mode 100644 index 0000000000..0f052c8538 --- /dev/null +++ b/Cores/Citra/PVCitra/PVCitra.h @@ -0,0 +1,18 @@ +// +// PVCitra.h +// PVCitra +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVCitra. +FOUNDATION_EXPORT double PVCitraVersionNumber; + +//! Project version string for PVCitra. +FOUNDATION_EXPORT const unsigned char PVCitraVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/Citra/PVCitraCore/PVCitraCore.h b/Cores/Citra/PVCitraCore/PVCitraCore.h new file mode 100644 index 0000000000..2fbfd0d72e --- /dev/null +++ b/Cores/Citra/PVCitraCore/PVCitraCore.h @@ -0,0 +1,43 @@ +// +// PVCitraCore.h +// PVCitra +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVCitraCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/Citra/PVCitraCore/PVCitraCore.mm b/Cores/Citra/PVCitraCore/PVCitraCore.mm new file mode 100644 index 0000000000..8c1e4d7718 --- /dev/null +++ b/Cores/Citra/PVCitraCore/PVCitraCore.mm @@ -0,0 +1,257 @@ +// +// PVCitraCore.m +// PVCitra +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVCitraCore.h" +#include +//#import "PVCitraCore+Controls.h" +//#import "PVCitraCore+Audio.h" +//#import "PVCitraCore+Video.h" +// +//#import "PVCitraCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVCitraCore() { + +} + +@end + +#pragma mark - PVCitraCore Begin + +@implementation PVCitraCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1024, 768); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT + return GL_RGB565; +} + + +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +# pragma mark - Audio + +- (double)audioSampleRate { + return 48000; +} + +#if 0 +const struct retro_variable vars[] = { + { "Citra_mode", "MSX Mode; MSX2+|MSX1|MSX2" }, + { "Citra_video_mode", "MSX Video Mode; NTSC|PAL|Dynamic" }, + { "Citra_hires", "Support high resolution; Off|Interlaced|Progressive" }, + { "Citra_overscan", "Support overscan; No|Yes" }, + { "Citra_mapper_type_mode", "MSX Mapper Type Mode; " + "Guess|" + "Generic 8kB|" + "Generic 16kB|" + "Konami5 8kB|" + "Konami4 8kB|" + "ASCII 8kB|" + "ASCII 16kB|" + "GameMaster2|" + "FMPAC" + }, + { "Citra_ram_pages", "MSX Main Memory; Auto|64KB|128KB|256KB|512KB|4MB" }, + { "Citra_vram_pages", "MSX Video Memory; Auto|32KB|64KB|128KB|192KB" }, + { "Citra_log_level", "Citra logging; Off|Info|Debug|Spam" }, + { "Citra_game_master", "Support Game Master; No|Yes" }, + { "Citra_simbdos", "Simulate DiskROM disk access calls; No|Yes" }, + { "Citra_autospace", "Use autofire on SPACE; No|Yes" }, + { "Citra_allsprites", "Show all sprites; No|Yes" }, + { "Citra_font", "Text font; standard|DEFAULT.FNT|ITALIC.FNT|INTERNAT.FNT|CYRILLIC.FNT|KOREAN.FNT|JAPANESE.FNT" }, + { "Citra_flush_disk", "Save disk changes; Never|Immediate|On close|To/From SRAM" }, + { "Citra_phantom_disk", "Create empty disk when none loaded; No|Yes" }, + { "Citra_custom_keyboard_up", up_value}, + { "Citra_custom_keyboard_down", down_value}, + { "Citra_custom_keyboard_left", left_value}, + { "Citra_custom_keyboard_right", right_value}, + { "Citra_custom_keyboard_a", a_value}, + { "Citra_custom_keyboard_b", b_value}, + { "Citra_custom_keyboard_y", y_value}, + { "Citra_custom_keyboard_x", x_value}, + { "Citra_custom_keyboard_start", start_value}, + { "Citra_custom_keyboard_select", select_value}, + { "Citra_custom_keyboard_l", l_value}, + { "Citra_custom_keyboard_r", r_value}, + { "Citra_custom_keyboard_l2", l2_value}, + { "Citra_custom_keyboard_r2", r2_value}, + { "Citra_custom_keyboard_l3", l3_value}, + { "Citra_custom_keyboard_r3", r3_value}, + { NULL, NULL }, +}; +#endif + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + if (V("Citra_video_mode")) { + // NTSC|PAL|Dynamic + char *value = strdup("Dynamic"); + return value; + } else if (V("Citra_mode")) { + // MSX2+|MSX1|MSX2 + char * value = strdup("MSX2+"); + return value; + } else if (V("Citra_hires")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("Citra_overscan")) { + // No|Yes + char *value = strdup("Yes"); + return value; + } else if (V("Citra_mapper_type_mode")) { +// { "Citra_mapper_type_mode", "MSX Mapper Type Mode; " +// "Guess|" +// "Generic 8kB|" +// "Generic 16kB|" +// "Konami5 8kB|" +// "Konami4 8kB|" +// "ASCII 8kB|" +// "ASCII 16kB|" +// "GameMaster2|" +// "FMPAC" +// }, + char *value = strdup("FMPAC"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} +@end diff --git a/Cores/Citra/citra b/Cores/Citra/citra new file mode 160000 index 0000000000..6764264488 --- /dev/null +++ b/Cores/Citra/citra @@ -0,0 +1 @@ +Subproject commit 6764264488488a97ddb60be07f59c0750cc173a7 diff --git a/Cores/Cores.h b/Cores/Cores.h index 228be8210d..3a3bd7812d 100644 --- a/Cores/Cores.h +++ b/Cores/Cores.h @@ -1,19 +1,45 @@ // -// Cores.h -// Cores +// CoresRetro.h +// CoresRetro // -// Created by Joseph Mattiello on 3/12/22. +// Created by Joseph Mattiello on 7/8/22. // Copyright © 2022 Provenance Emu. All rights reserved. // #import -//! Project version number for Cores. -FOUNDATION_EXPORT double CoresVersionNumber; - -//! Project version string for Cores. -FOUNDATION_EXPORT const unsigned char CoresVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import +//! Project version number for CoresRetro. +FOUNDATION_EXPORT double CoresRetroVersionNumber; +//! Project version string for CoresRetro. +FOUNDATION_EXPORT const unsigned char CoresRetroVersionString[]; +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#if BROKEN_CORES +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#endif diff --git a/Cores/CrabEMU b/Cores/CrabEMU index 1554524745..dbce6b26e3 160000 --- a/Cores/CrabEMU +++ b/Cores/CrabEMU @@ -1 +1 @@ -Subproject commit 155452474595765aae8fd68221f591f484a5173c +Subproject commit dbce6b26e39d315fb4b8e2ab5603d2e1c5ec4aa5 diff --git a/Cores/Desmume2015/BuildFlags.xcconfig b/Cores/Desmume2015/BuildFlags.xcconfig index efb1c17a23..3f96c2225e 100644 --- a/Cores/Desmume2015/BuildFlags.xcconfig +++ b/Cores/Desmume2015/BuildFlags.xcconfig @@ -7,19 +7,27 @@ // // All -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) REICAST_VERSION=15.0 TARGET_NO_WEBUI=1 TARGET_NO_REC=1 GLES=1 NO_ASM=1 -OTHER_CFLAGS = $(inherited) -mno-thumb -mfpu=neon -fno-operator-names -fno-rtti -ffast-math -ftree-vectorize -fno-strict-aliasing -frename-registers -fno-rtti -fpermissive -fno-operator-names -fsingle-precision-constant +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) OBJ_C IOS __LIBRETRO__ USE_POSIX_MEMALIGN USE_POSIX_MEMALIGN HAVE_STATIC_CODE_BUFFER=1 HAVE_THREADS=1 +OTHER_CFLAGS = $(inherited) -ObjC -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + +GCC_PREPROCESSOR_DEFINITIONS[arch=armv7] = $(inherited) __RETRO_ARM__ +GCC_PREPROCESSOR_DEFINITIONS[arch=armv72] = $(inherited) __RETRO_ARM__ +GCC_PREPROCESSOR_DEFINITIONS[arch=arm64] = $(inherited) __RETRO_ARM__ HOST_64=1 +GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64] = $(inherited) HOST_64=1 + +//OTHER_CFLAGS = $(inherited) -mno-thumb -mfpu=neon -fno-operator-names -fno-rtti -ffast-math -ftree-vectorize -fno-strict-aliasing -frename-registers -fno-rtti -fpermissive -fno-operator-names -fsingle-precision-constant // Device GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 -OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -fomit-frame-pointer +//OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -fomit-frame-pointer // Simulator GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 // tvOS Device GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 -OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -fomit-frame-pointer +//OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -fomit-frame-pointer // tvOS Simulator GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/Desmume2015/PVDesmume2015.xcodeproj/project.pbxproj b/Cores/Desmume2015/PVDesmume2015.xcodeproj/project.pbxproj index 488500e0ca..c0ede335b7 100644 --- a/Cores/Desmume2015/PVDesmume2015.xcodeproj/project.pbxproj +++ b/Cores/Desmume2015/PVDesmume2015.xcodeproj/project.pbxproj @@ -7,148 +7,129 @@ objects = { /* Begin PBXBuildFile section */ - B301797F207C909E0051B93D /* libdesmume2015-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libdesmume2015-iOS.a */; }; B316B4E721926FE500693472 /* emu.cfg in Resources */ = {isa = PBXBuildFile; fileRef = B316B4E621926FE500693472 /* emu.cfg */; }; - B316B4E821926FE500693472 /* emu.cfg in Resources */ = {isa = PBXBuildFile; fileRef = B316B4E621926FE500693472 /* emu.cfg */; }; - B31B3036272E2CAC00FF72B9 /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E89272E2C9800FF72B9 /* rtc.cpp */; }; - B31B3037272E2CAC00FF72B9 /* rasterize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E76272E2C9800FF72B9 /* rasterize.cpp */; }; - B31B3038272E2CAC00FF72B9 /* render3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB4272E2C9900FF72B9 /* render3D.cpp */; }; - B31B3039272E2CAC00FF72B9 /* armcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB7272E2C9900FF72B9 /* armcpu.cpp */; }; - B31B303A272E2CAC00FF72B9 /* GPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBA272E2C9900FF72B9 /* GPU.cpp */; }; - B31B303B272E2CAC00FF72B9 /* NDSSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E77272E2C9800FF72B9 /* NDSSystem.cpp */; }; - B31B303C272E2CAC00FF72B9 /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8B272E2C9800FF72B9 /* driver.cpp */; }; - B31B303D272E2CAC00FF72B9 /* mic_openal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E92272E2C9800FF72B9 /* mic_openal.cpp */; }; - B31B303E272E2CAC00FF72B9 /* texcache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAA272E2C9900FF72B9 /* texcache.cpp */; }; - B31B303F272E2CAC00FF72B9 /* wifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB5272E2C9900FF72B9 /* wifi.cpp */; }; - B31B3040272E2CAC00FF72B9 /* MMU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E94272E2C9800FF72B9 /* MMU.cpp */; }; - B31B3041272E2CAC00FF72B9 /* readwrite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC8272E2C9800FF72B9 /* readwrite.cpp */; }; - B31B3042272E2CAC00FF72B9 /* mc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBF272E2C9900FF72B9 /* mc.cpp */; }; - B31B3043272E2CAC00FF72B9 /* mic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC1272E2C9800FF72B9 /* mic.cpp */; }; - B31B3044272E2CAC00FF72B9 /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB6272E2C9800FF72B9 /* bios.cpp */; }; - B31B3045272E2CAC00FF72B9 /* firmware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB9272E2C9800FF72B9 /* firmware.cpp */; }; - B31B3046272E2CAC00FF72B9 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB8272E2C9800FF72B9 /* common.c */; }; - B31B3047272E2CAC00FF72B9 /* emufile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB8272E2C9900FF72B9 /* emufile.cpp */; }; - B31B3048272E2CAC00FF72B9 /* saves.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E91272E2C9800FF72B9 /* saves.cpp */; }; - B31B3049272E2CAC00FF72B9 /* thumb_instructions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB9272E2C9900FF72B9 /* thumb_instructions.cpp */; }; - B31B304A272E2CAC00FF72B9 /* OGLRender_3_2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBE272E2C9900FF72B9 /* OGLRender_3_2.cpp */; }; - B31B304B272E2CAC00FF72B9 /* arm_instructions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC6272E2C9800FF72B9 /* arm_instructions.cpp */; }; - B31B304C272E2CAC00FF72B9 /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC5272E2C9800FF72B9 /* Disassembler.cpp */; }; - B31B304D272E2CAC00FF72B9 /* FIFO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB5272E2C9800FF72B9 /* FIFO.cpp */; }; - B31B304E272E2CAC00FF72B9 /* OGLRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBC272E2C9900FF72B9 /* OGLRender.cpp */; }; - B31B304F272E2CAC00FF72B9 /* slot2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAC272E2C9900FF72B9 /* slot2.cpp */; }; - B31B3050272E2CAC00FF72B9 /* SPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE7272E2C9800FF72B9 /* SPU.cpp */; }; - B31B3051272E2CAC00FF72B9 /* matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8D272E2C9800FF72B9 /* matrix.cpp */; }; - B31B3052272E2CAC00FF72B9 /* arm_jit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E7A272E2C9800FF72B9 /* arm_jit.cpp */; }; - B31B3053272E2CAC00FF72B9 /* cp15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB7272E2C9800FF72B9 /* cp15.cpp */; }; - B31B3054272E2CAC00FF72B9 /* encrypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DBE272E2C9800FF72B9 /* encrypt.cpp */; }; - B31B3055272E2CAC00FF72B9 /* gfx3d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E88272E2C9800FF72B9 /* gfx3d.cpp */; }; - B31B3056272E2CAC00FF72B9 /* mic_alsa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB1272E2C9900FF72B9 /* mic_alsa.cpp */; }; - B31B3057272E2CAC00FF72B9 /* slot1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E90272E2C9800FF72B9 /* slot1.cpp */; }; - B31B3058272E2CAC00FF72B9 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAB272E2C9900FF72B9 /* version.c */; }; - B31B3059272E2CAC00FF72B9 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8C272E2C9800FF72B9 /* debug.cpp */; }; - B31B305A272E2CAC00FF72B9 /* path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FA9272E2C9900FF72B9 /* path.cpp */; }; - B31B305B272E2CAC00FF72B9 /* cheatSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB4272E2C9800FF72B9 /* cheatSystem.cpp */; }; - B31B305C272E2CAD00FF72B9 /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E89272E2C9800FF72B9 /* rtc.cpp */; }; - B31B305D272E2CAD00FF72B9 /* rasterize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E76272E2C9800FF72B9 /* rasterize.cpp */; }; - B31B305E272E2CAD00FF72B9 /* render3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB4272E2C9900FF72B9 /* render3D.cpp */; }; - B31B305F272E2CAD00FF72B9 /* armcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB7272E2C9900FF72B9 /* armcpu.cpp */; }; - B31B3060272E2CAD00FF72B9 /* GPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBA272E2C9900FF72B9 /* GPU.cpp */; }; - B31B3061272E2CAD00FF72B9 /* NDSSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E77272E2C9800FF72B9 /* NDSSystem.cpp */; }; - B31B3062272E2CAD00FF72B9 /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8B272E2C9800FF72B9 /* driver.cpp */; }; - B31B3063272E2CAD00FF72B9 /* mic_openal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E92272E2C9800FF72B9 /* mic_openal.cpp */; }; - B31B3064272E2CAD00FF72B9 /* texcache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAA272E2C9900FF72B9 /* texcache.cpp */; }; - B31B3065272E2CAD00FF72B9 /* wifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB5272E2C9900FF72B9 /* wifi.cpp */; }; - B31B3066272E2CAD00FF72B9 /* MMU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E94272E2C9800FF72B9 /* MMU.cpp */; }; - B31B3067272E2CAD00FF72B9 /* readwrite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC8272E2C9800FF72B9 /* readwrite.cpp */; }; - B31B3068272E2CAD00FF72B9 /* mc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBF272E2C9900FF72B9 /* mc.cpp */; }; - B31B3069272E2CAD00FF72B9 /* mic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC1272E2C9800FF72B9 /* mic.cpp */; }; - B31B306A272E2CAD00FF72B9 /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB6272E2C9800FF72B9 /* bios.cpp */; }; - B31B306B272E2CAD00FF72B9 /* firmware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB9272E2C9800FF72B9 /* firmware.cpp */; }; - B31B306C272E2CAD00FF72B9 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB8272E2C9800FF72B9 /* common.c */; }; - B31B306D272E2CAD00FF72B9 /* emufile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB8272E2C9900FF72B9 /* emufile.cpp */; }; - B31B306E272E2CAD00FF72B9 /* saves.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E91272E2C9800FF72B9 /* saves.cpp */; }; - B31B306F272E2CAD00FF72B9 /* thumb_instructions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB9272E2C9900FF72B9 /* thumb_instructions.cpp */; }; - B31B3070272E2CAD00FF72B9 /* OGLRender_3_2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBE272E2C9900FF72B9 /* OGLRender_3_2.cpp */; }; - B31B3071272E2CAD00FF72B9 /* arm_instructions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC6272E2C9800FF72B9 /* arm_instructions.cpp */; }; - B31B3072272E2CAD00FF72B9 /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC5272E2C9800FF72B9 /* Disassembler.cpp */; }; - B31B3073272E2CAD00FF72B9 /* FIFO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB5272E2C9800FF72B9 /* FIFO.cpp */; }; - B31B3074272E2CAD00FF72B9 /* OGLRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBC272E2C9900FF72B9 /* OGLRender.cpp */; }; - B31B3075272E2CAD00FF72B9 /* slot2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAC272E2C9900FF72B9 /* slot2.cpp */; }; - B31B3076272E2CAD00FF72B9 /* SPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE7272E2C9800FF72B9 /* SPU.cpp */; }; - B31B3077272E2CAD00FF72B9 /* matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8D272E2C9800FF72B9 /* matrix.cpp */; }; - B31B3078272E2CAD00FF72B9 /* arm_jit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E7A272E2C9800FF72B9 /* arm_jit.cpp */; }; - B31B3079272E2CAD00FF72B9 /* cp15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB7272E2C9800FF72B9 /* cp15.cpp */; }; - B31B307A272E2CAD00FF72B9 /* encrypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DBE272E2C9800FF72B9 /* encrypt.cpp */; }; - B31B307B272E2CAD00FF72B9 /* gfx3d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E88272E2C9800FF72B9 /* gfx3d.cpp */; }; - B31B307C272E2CAD00FF72B9 /* mic_alsa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB1272E2C9900FF72B9 /* mic_alsa.cpp */; }; - B31B307D272E2CAD00FF72B9 /* slot1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E90272E2C9800FF72B9 /* slot1.cpp */; }; - B31B307E272E2CAD00FF72B9 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAB272E2C9900FF72B9 /* version.c */; }; - B31B307F272E2CAD00FF72B9 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8C272E2C9800FF72B9 /* debug.cpp */; }; - B31B3080272E2CAD00FF72B9 /* path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FA9272E2C9900FF72B9 /* path.cpp */; }; - B31B3081272E2CAD00FF72B9 /* cheatSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB4272E2C9800FF72B9 /* cheatSystem.cpp */; }; - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; + B338055B28757C3A0009C732 /* PVDesmume2015Core+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDesmume2015Core+Controls.mm */; }; + B338055D287582CE0009C732 /* PVDesmume2015Core+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDesmume2015Core+Audio.m */; }; + B338055F287583AD0009C732 /* PVDesmume2015Core+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDesmume2015Core+Video.m */; }; B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; B3447E9C218B826F00557ACE /* PVDesmume2015+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E9A218B826F00557ACE /* PVDesmume2015+Audio.h */; }; - B3447E9D218B826F00557ACE /* PVDesmume2015+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E9B218B826F00557ACE /* PVDesmume2015+Audio.mm */; }; - B3447E9E218B857A00557ACE /* PVDesmume2015Core+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDesmume2015Core+Controls.mm */; }; B3447E9F218B858100557ACE /* PVDesmume2015Core+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVDesmume2015Core+Controls.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447EA1218B881000557ACE /* PVDesmume2015.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVDesmume2015.mm */; }; B3447EA3218BBFBC00557ACE /* PVDesmume2015+AudioTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA2218BBFB700557ACE /* PVDesmume2015+AudioTypes.h */; }; - B3447EA5218BC36B00557ACE /* PVDesmume2015+CoreAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA4218BC36B00557ACE /* PVDesmume2015+CoreAudio.mm */; }; B3447EA7218BC3A600557ACE /* PVDesmume2015+CoreAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA6218BC3A600557ACE /* PVDesmume2015+CoreAudio.h */; }; B3447EAB218BC59D00557ACE /* PVDesmume2015Core+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVDesmume2015Core+Saves.h */; }; - B3447EAC218BC59D00557ACE /* PVDesmume2015Core+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVDesmume2015Core+Saves.m */; }; B3447EAF218BC5C500557ACE /* PVDesmume2015Core+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EAD218BC5C500557ACE /* PVDesmume2015Core+Video.h */; }; - B3447EB0218BC5C500557ACE /* PVDesmume2015Core+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDesmume2015Core+Video.m */; }; B3447EB3218BC69700557ACE /* PVDesmume2015Core+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVDesmume2015Core+Audio.h */; }; - B3447EB4218BC69700557ACE /* PVDesmume2015Core+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDesmume2015Core+Audio.m */; }; - B3447EC2218BEDD200557ACE /* PVDesmume2015+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E9B218B826F00557ACE /* PVDesmume2015+Audio.mm */; }; - B3447EC3218BEDD200557ACE /* PVDesmume2015Core+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDesmume2015Core+Controls.mm */; }; - B3447EC4218BEDD200557ACE /* PVDesmume2015Core.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVDesmume2015Core.mm */; }; - B3447EC5218BEDD200557ACE /* PVDesmume2015Core+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVDesmume2015Core+Saves.m */; }; - B3447EC6218BEDD200557ACE /* PVDesmume2015.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVDesmume2015.mm */; }; - B3447EC7218BEDD200557ACE /* PVDesmume2015Core+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDesmume2015Core+Video.m */; }; - B3447EC8218BEDD200557ACE /* PVDesmume2015+CoreAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA4218BC36B00557ACE /* PVDesmume2015+CoreAudio.mm */; }; - B3447EC9218BEDD200557ACE /* PVDesmume2015Core+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDesmume2015Core+Audio.m */; }; - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; - B3447ED6218BEDD200557ACE /* PVDesmume2015.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVDesmume2015.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447ED7218BEDD200557ACE /* PVDesmume2015Core.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVDesmume2015Core.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447ED8218BEDD200557ACE /* PVDesmume2015+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E9A218B826F00557ACE /* PVDesmume2015+Audio.h */; }; - B3447ED9218BEDD200557ACE /* PVDesmume2015Core+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVDesmume2015Core+Audio.h */; }; - B3447EDA218BEDD200557ACE /* PVDesmume2015Core+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVDesmume2015Core+Saves.h */; }; - B3447EDB218BEDD200557ACE /* PVDesmume2015+AudioTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA2218BBFB700557ACE /* PVDesmume2015+AudioTypes.h */; }; - B3447EDC218BEDD200557ACE /* PVDesmume2015+CoreAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA6218BC3A600557ACE /* PVDesmume2015+CoreAudio.h */; }; - B3447EDD218BEDD200557ACE /* PVDesmume2015Core+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVDesmume2015Core+Controls.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447EDE218BEDD200557ACE /* PVDesmume2015Core+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EAD218BC5C500557ACE /* PVDesmume2015Core+Video.h */; }; - B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; + B364D4B72870E7D300B93A4B /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364D4B62870E7D300B93A4B /* PVLibRetro.framework */; }; + B39312F32870FB8E00372EBB /* matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8D272E2C9800FF72B9 /* matrix.cpp */; }; + B39312F42870FB8E00372EBB /* readwrite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC8272E2C9800FF72B9 /* readwrite.cpp */; }; + B39312F52870FB8E00372EBB /* slot2_gbagame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE5272E2C9800FF72B9 /* slot2_gbagame.cpp */; }; + B39312F62870FB8E00372EBB /* slot2_guitarGrip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE3272E2C9800FF72B9 /* slot2_guitarGrip.cpp */; }; + B39312F72870FB8E00372EBB /* memmap.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2F66272E2C9900FF72B9 /* memmap.c */; }; + B39312F82870FB8E00372EBB /* directory.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E49272E2C9800FF72B9 /* directory.c */; }; + B39312F92870FB8F00372EBB /* disc.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E56272E2C9800FF72B9 /* disc.c */; }; + B39312FA2870FB8F00372EBB /* emufat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E67272E2C9800FF72B9 /* emufat.cpp */; }; + B39312FB2870FB8F00372EBB /* firmware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB9272E2C9800FF72B9 /* firmware.cpp */; }; + B39312FC2870FB8F00372EBB /* texcache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAA272E2C9900FF72B9 /* texcache.cpp */; }; + B39312FD2870FB8F00372EBB /* slot1comp_mc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD6272E2C9800FF72B9 /* slot1comp_mc.cpp */; }; + B39312FE2870FB8F00372EBB /* slot2_piano.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DDC272E2C9800FF72B9 /* slot2_piano.cpp */; }; + B39312FF2870FB8F00372EBB /* fatfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E4C272E2C9800FF72B9 /* fatfile.c */; }; + B39313002870FB8F00372EBB /* advanscene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E6E272E2C9800FF72B9 /* advanscene.cpp */; }; + B39313012870FB8F00372EBB /* encrypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DBE272E2C9800FF72B9 /* encrypt.cpp */; }; + B39313022870FB8F00372EBB /* slot1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E90272E2C9800FF72B9 /* slot1.cpp */; }; + B39313032870FB8F00372EBB /* slot2_paddle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD3272E2C9800FF72B9 /* slot2_paddle.cpp */; }; + B39313042870FB8F00372EBB /* slot1_retail_nand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE4272E2C9800FF72B9 /* slot1_retail_nand.cpp */; }; + B39313052870FB8F00372EBB /* saves.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E91272E2C9800FF72B9 /* saves.cpp */; }; + B39313062870FB8F00372EBB /* datetime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E6A272E2C9800FF72B9 /* datetime.cpp */; }; + B39313072870FB8F00372EBB /* armcpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB7272E2C9900FF72B9 /* armcpu.cpp */; }; + B39313082870FB8F00372EBB /* SPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE7272E2C9800FF72B9 /* SPU.cpp */; }; + B39313092870FB8F00372EBB /* memalign.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2F67272E2C9900FF72B9 /* memalign.c */; }; + B393130A2870FB8F00372EBB /* cp15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB7272E2C9800FF72B9 /* cp15.cpp */; }; + B393130B2870FB8F00372EBB /* task.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E65272E2C9800FF72B9 /* task.cpp */; }; + B393130C2870FB8F00372EBB /* path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FA9272E2C9900FF72B9 /* path.cpp */; }; + B393130D2870FB8F00372EBB /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DF5272E2C9800FF72B9 /* tinyxml.cpp */; }; + B393130E2870FB8F00372EBB /* partition.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E50272E2C9800FF72B9 /* partition.c */; }; + B393130F2870FB8F00372EBB /* MMU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E94272E2C9800FF72B9 /* MMU.cpp */; }; + B39313102870FB8F00372EBB /* libfat.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E51272E2C9800FF72B9 /* libfat.c */; }; + B39313112870FB8F00372EBB /* slot1comp_protocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE6272E2C9800FF72B9 /* slot1comp_protocol.cpp */; }; + B39313122870FB8F00372EBB /* slot2_passme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD7272E2C9800FF72B9 /* slot2_passme.cpp */; }; + B39313132870FB8F00372EBB /* cheatSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB4272E2C9800FF72B9 /* cheatSystem.cpp */; }; + B39313142870FB8F00372EBB /* slot2_auto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD9272E2C9800FF72B9 /* slot2_auto.cpp */; }; + B39313152870FB8F00372EBB /* slot1_retail_auto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE2272E2C9800FF72B9 /* slot1_retail_auto.cpp */; }; + B39313162870FB8F00372EBB /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E80272E2C9800FF72B9 /* libretro.cpp */; }; + B39313172870FB8F00372EBB /* slot2_mpcf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD5272E2C9800FF72B9 /* slot2_mpcf.cpp */; }; + B39313182870FB8F00372EBB /* filetime.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E55272E2C9800FF72B9 /* filetime.c */; }; + B39313192870FB8F00372EBB /* lock.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E5F272E2C9800FF72B9 /* lock.c */; }; + B393131A2870FB8F00372EBB /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAB272E2C9900FF72B9 /* version.c */; }; + B393131B2870FB8F00372EBB /* crc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E70272E2C9800FF72B9 /* crc.cpp */; }; + B393131C2870FB8F00372EBB /* slot2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FAC272E2C9900FF72B9 /* slot2.cpp */; }; + B393131D2870FB8F00372EBB /* mic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC1272E2C9800FF72B9 /* mic.cpp */; }; + B393131E2870FB8F00372EBB /* rthreads.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2F7B272E2C9900FF72B9 /* rthreads.c */; }; + B393131F2870FB8F00372EBB /* retro_stat.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2ED4272E2C9900FF72B9 /* retro_stat.c */; }; + B39313202870FB8F00372EBB /* gfx3d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E88272E2C9800FF72B9 /* gfx3d.cpp */; }; + B39313212870FB8F00372EBB /* file_allocation_table.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E5A272E2C9800FF72B9 /* file_allocation_table.c */; }; + B39313222870FB8F00372EBB /* fsnitro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E66272E2C9800FF72B9 /* fsnitro.cpp */; }; + B39313232870FB8F00372EBB /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB8272E2C9800FF72B9 /* common.c */; }; + B39313242870FB8F00372EBB /* FIFO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB5272E2C9800FF72B9 /* FIFO.cpp */; }; + B39313252870FB8F00372EBB /* libfat_public_api.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E5D272E2C9800FF72B9 /* libfat_public_api.c */; }; + B39313262870FB8F00372EBB /* GPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBA272E2C9900FF72B9 /* GPU.cpp */; }; + B39313272870FB8F00372EBB /* header.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E74272E2C9800FF72B9 /* header.cpp */; }; + B39313282870FB8F00372EBB /* decrypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E73272E2C9800FF72B9 /* decrypt.cpp */; }; + B39313292870FB8F00372EBB /* tinyxmlparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DF3272E2C9800FF72B9 /* tinyxmlparser.cpp */; }; + B393132A2870FB8F00372EBB /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DB6272E2C9800FF72B9 /* bios.cpp */; }; + B393132B2870FB8F00372EBB /* render3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB4272E2C9900FF72B9 /* render3D.cpp */; }; + B393132C2870FB8F00372EBB /* arm_instructions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC6272E2C9800FF72B9 /* arm_instructions.cpp */; }; + B393132D2870FB8F00372EBB /* rasterize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E76272E2C9800FF72B9 /* rasterize.cpp */; }; + B393132E2870FB8F00372EBB /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DC5272E2C9800FF72B9 /* Disassembler.cpp */; }; + B393132F2870FB8F00372EBB /* features_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2F5B272E2C9900FF72B9 /* features_cpu.c */; }; + B39313302870FB8F00372EBB /* fatdir.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E4F272E2C9800FF72B9 /* fatdir.c */; }; + B39313312870FB8F00372EBB /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E89272E2C9800FF72B9 /* rtc.cpp */; }; + B39313322870FB8F00372EBB /* slot1_r4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD1272E2C9800FF72B9 /* slot1_r4.cpp */; }; + B39313332870FB8F00372EBB /* slot1_retail_mcrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DDB272E2C9800FF72B9 /* slot1_retail_mcrom.cpp */; }; + B39313342870FB8F00372EBB /* scrc32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E7F272E2C9800FF72B9 /* scrc32.cpp */; }; + B39313352870FB8F00372EBB /* vfat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E41272E2C9800FF72B9 /* vfat.cpp */; }; + B39313362870FB8F00372EBB /* slot1comp_rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE1272E2C9800FF72B9 /* slot1comp_rom.cpp */; }; + B39313372870FB8F00372EBB /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DF4272E2C9800FF72B9 /* tinyxmlerror.cpp */; }; + B39313382870FB8F00372EBB /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8B272E2C9800FF72B9 /* driver.cpp */; }; + B39313392870FB8F00372EBB /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DF2272E2C9800FF72B9 /* tinystr.cpp */; }; + B393133A2870FB8F00372EBB /* cache.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E5E272E2C9800FF72B9 /* cache.c */; }; + B393133B2870FB8F00372EBB /* xstring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E69272E2C9800FF72B9 /* xstring.cpp */; }; + B393133C2870FB8F00372EBB /* retro_dirent.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2EDF272E2C9900FF72B9 /* retro_dirent.c */; }; + B393133D2870FB8F00372EBB /* arm_jit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E7A272E2C9800FF72B9 /* arm_jit.cpp */; }; + B393133E2870FB8F00372EBB /* wifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB5272E2C9900FF72B9 /* wifi.cpp */; }; + B393133F2870FB8F00372EBB /* slot1_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD2272E2C9800FF72B9 /* slot1_none.cpp */; }; + B39313402870FB8F00372EBB /* slot2_rumblepak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DD8272E2C9800FF72B9 /* slot2_rumblepak.cpp */; }; + B39313412870FB8F00372EBB /* emufile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB8272E2C9900FF72B9 /* emufile.cpp */; }; + B39313422870FB8F00372EBB /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E8C272E2C9800FF72B9 /* debug.cpp */; }; + B39313432870FB8F00372EBB /* slot2_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DDE272E2C9800FF72B9 /* slot2_none.cpp */; }; + B39313442870FB8F00372EBB /* slot2_expMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DE0272E2C9800FF72B9 /* slot2_expMemory.cpp */; }; + B39313452870FB8F00372EBB /* thumb_instructions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FB9272E2C9900FF72B9 /* thumb_instructions.cpp */; }; + B39313462870FB8F00372EBB /* mc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2FBF272E2C9900FF72B9 /* mc.cpp */; }; + B39313472870FB8F00372EBB /* NDSSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E77272E2C9800FF72B9 /* NDSSystem.cpp */; }; + B39313482870FB8F00372EBB /* slot1_retail_mcrom_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DDA272E2C9800FF72B9 /* slot1_retail_mcrom_debug.cpp */; }; + B39313492870FB8F00372EBB /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2F8D272E2C9900FF72B9 /* stdstring.c */; }; + B393134A2870FB8F00372EBB /* dlditool.c in Sources */ = {isa = PBXBuildFile; fileRef = B31B2DEE272E2C9800FF72B9 /* dlditool.c */; }; + B39313802870FB9A00372EBB /* libdesmume2015.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libdesmume2015.a */; }; + B393138628710F9100372EBB /* arm_gen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B31B2E46272E2C9800FF72B9 /* arm_gen.cpp */; }; B3C7621520783162009950E4 /* PVDesmume2015.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVDesmume2015.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; B3C76225207833DE009950E4 /* PVDesmume2015Core.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVDesmume2015Core.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C76226207833DE009950E4 /* PVDesmume2015Core.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVDesmume2015Core.mm */; }; - B3DDF56D26E9B90400CE47F0 /* libdesmume2015-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libdesmume2015-tvOS.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B3DDF56E26E9B90400CE47F0 /* PBXContainerItemProxy */ = { + B39313812870FB9A00372EBB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B3C7620720783162009950E4 /* Project object */; proxyType = 1; - remoteGlobalIDString = B3447EE8218BEE3F00557ACE; - remoteInfo = "desmume2015-tvOS"; + remoteGlobalIDString = B30178D2207C901D0051B93D; + remoteInfo = "desmume2015-iOS"; }; /* End PBXContainerItemProxy section */ @@ -162,19 +143,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447F8D218BEE3F00557ACE /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - B30178D3207C901D0051B93D /* libdesmume2015-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdesmume2015-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B30178D3207C901D0051B93D /* libdesmume2015.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libdesmume2015.a; sourceTree = BUILT_PRODUCTS_DIR; }; B316B4E621926FE500693472 /* emu.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emu.cfg; sourceTree = ""; }; B31B2D54272E2C9800FF72B9 /* template.pnproj */ = {isa = PBXFileReference; lastKnownFileType = text; path = template.pnproj; sourceTree = ""; }; B31B2D55272E2C9800FF72B9 /* template.prj */ = {isa = PBXFileReference; lastKnownFileType = text; path = template.prj; sourceTree = ""; }; @@ -704,13 +676,13 @@ B3447EB1218BC69700557ACE /* PVDesmume2015Core+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVDesmume2015Core+Audio.h"; sourceTree = ""; }; B3447EB2218BC69700557ACE /* PVDesmume2015Core+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVDesmume2015Core+Audio.m"; sourceTree = ""; }; B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; - B3447EE6218BEDD200557ACE /* PVDesmume2015.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDesmume2015.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3447F91218BEE3F00557ACE /* libdesmume2015-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdesmume2015-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B364D4B62870E7D300B93A4B /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B364D4BA2870E7DE00B93A4B /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7621020783162009950E4 /* PVDesmume2015.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDesmume2015.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7621320783162009950E4 /* PVDesmume2015.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVDesmume2015.h; sourceTree = ""; }; @@ -731,40 +703,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447ECA218BEDD200557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, - B3DDF56D26E9B90400CE47F0 /* libdesmume2015-tvOS.a in Frameworks */, - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447F8C218BEE3F00557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620C20783162009950E4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, - B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, - B301797F207C909E0051B93D /* libdesmume2015-iOS.a in Frameworks */, B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39313802870FB9A00372EBB /* libdesmume2015.a in Frameworks */, B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B364D4B72870E7D300B93A4B /* PVLibRetro.framework in Frameworks */, B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, @@ -1309,50 +1258,50 @@ B31B2DFB272E2C9800FF72B9 /* core */ = { isa = PBXGroup; children = ( - B31B2DFC272E2C9800FF72B9 /* func.cpp */, - B31B2DFD272E2C9800FF72B9 /* cpuinfo.cpp */, - B31B2DFE272E2C9800FF72B9 /* assembler.h */, - B31B2DFF272E2C9800FF72B9 /* defs.cpp */, - B31B2E00272E2C9800FF72B9 /* defs.h */, - B31B2E01272E2C9800FF72B9 /* compiler.h */, - B31B2E02272E2C9800FF72B9 /* compiler.cpp */, - B31B2E03272E2C9800FF72B9 /* compilerfunc.h */, - B31B2E04272E2C9800FF72B9 /* build.h */, - B31B2E05272E2C9800FF72B9 /* memorymarker.h */, - B31B2E06272E2C9800FF72B9 /* compilercontext.h */, - B31B2E07272E2C9800FF72B9 /* context.cpp */, - B31B2E08272E2C9800FF72B9 /* memorymanager.h */, - B31B2E09272E2C9800FF72B9 /* intutil.h */, - B31B2E0A272E2C9800FF72B9 /* lock.h */, - B31B2E0B272E2C9800FF72B9 /* apibegin.h */, - B31B2E0C272E2C9800FF72B9 /* context.h */, - B31B2E0D272E2C9800FF72B9 /* assert.cpp */, - B31B2E0E272E2C9800FF72B9 /* operand.h */, - B31B2E0F272E2C9800FF72B9 /* cpuinfo.h */, - B31B2E10272E2C9800FF72B9 /* stringutil.h */, B31B2E11272E2C9800FF72B9 /* assembler.cpp */, + B31B2E0D272E2C9800FF72B9 /* assert.cpp */, B31B2E12272E2C9800FF72B9 /* buffer.cpp */, + B31B2E02272E2C9800FF72B9 /* compiler.cpp */, + B31B2E16272E2C9800FF72B9 /* compilercontext.cpp */, + B31B2E1B272E2C9800FF72B9 /* compilerfunc.cpp */, + B31B2E20272E2C9800FF72B9 /* compileritem.cpp */, + B31B2E07272E2C9800FF72B9 /* context.cpp */, + B31B2DFD272E2C9800FF72B9 /* cpuinfo.cpp */, + B31B2DFF272E2C9800FF72B9 /* defs.cpp */, + B31B2DFC272E2C9800FF72B9 /* func.cpp */, + B31B2E1D272E2C9800FF72B9 /* logger.cpp */, + B31B2E17272E2C9800FF72B9 /* memorymanager.cpp */, + B31B2E26272E2C9800FF72B9 /* memorymarker.cpp */, + B31B2E25272E2C9800FF72B9 /* operand.cpp */, B31B2E13272E2C9800FF72B9 /* stringbuilder.cpp */, + B31B2E1F272E2C9800FF72B9 /* stringutil.cpp */, B31B2E14272E2C9800FF72B9 /* virtualmemory.cpp */, + B31B2E24272E2C9800FF72B9 /* zonememory.cpp */, + B31B2E0B272E2C9800FF72B9 /* apibegin.h */, + B31B2E27272E2C9800FF72B9 /* apiend.h */, + B31B2DFE272E2C9800FF72B9 /* assembler.h */, + B31B2E23272E2C9800FF72B9 /* assert.h */, B31B2E15272E2C9800FF72B9 /* buffer.h */, - B31B2E16272E2C9800FF72B9 /* compilercontext.cpp */, - B31B2E17272E2C9800FF72B9 /* memorymanager.cpp */, - B31B2E18272E2C9800FF72B9 /* zonememory.h */, + B31B2E04272E2C9800FF72B9 /* build.h */, + B31B2E01272E2C9800FF72B9 /* compiler.h */, + B31B2E06272E2C9800FF72B9 /* compilercontext.h */, + B31B2E03272E2C9800FF72B9 /* compilerfunc.h */, B31B2E19272E2C9800FF72B9 /* compileritem.h */, - B31B2E1A272E2C9800FF72B9 /* virtualmemory.h */, - B31B2E1B272E2C9800FF72B9 /* compilerfunc.cpp */, - B31B2E1C272E2C9800FF72B9 /* stringbuilder.h */, - B31B2E1D272E2C9800FF72B9 /* logger.cpp */, + B31B2E0C272E2C9800FF72B9 /* context.h */, + B31B2E0F272E2C9800FF72B9 /* cpuinfo.h */, + B31B2E00272E2C9800FF72B9 /* defs.h */, B31B2E1E272E2C9800FF72B9 /* func.h */, - B31B2E1F272E2C9800FF72B9 /* stringutil.cpp */, - B31B2E20272E2C9800FF72B9 /* compileritem.cpp */, + B31B2E09272E2C9800FF72B9 /* intutil.h */, + B31B2E0A272E2C9800FF72B9 /* lock.h */, B31B2E21272E2C9800FF72B9 /* logger.h */, + B31B2E08272E2C9800FF72B9 /* memorymanager.h */, + B31B2E05272E2C9800FF72B9 /* memorymarker.h */, + B31B2E0E272E2C9800FF72B9 /* operand.h */, B31B2E22272E2C9800FF72B9 /* podvector.h */, - B31B2E23272E2C9800FF72B9 /* assert.h */, - B31B2E24272E2C9800FF72B9 /* zonememory.cpp */, - B31B2E25272E2C9800FF72B9 /* operand.cpp */, - B31B2E26272E2C9800FF72B9 /* memorymarker.cpp */, - B31B2E27272E2C9800FF72B9 /* apiend.h */, + B31B2E1C272E2C9800FF72B9 /* stringbuilder.h */, + B31B2E10272E2C9800FF72B9 /* stringutil.h */, + B31B2E1A272E2C9800FF72B9 /* virtualmemory.h */, + B31B2E18272E2C9800FF72B9 /* zonememory.h */, ); path = core; sourceTree = ""; @@ -1398,33 +1347,33 @@ B31B2E48272E2C9800FF72B9 /* libfat */ = { isa = PBXGroup; children = ( + B31B2E5E272E2C9800FF72B9 /* cache.c */, B31B2E49272E2C9800FF72B9 /* directory.c */, - B31B2E4A272E2C9800FF72B9 /* disc_io.h */, - B31B2E4B272E2C9800FF72B9 /* mem_allocate.h */, - B31B2E4C272E2C9800FF72B9 /* fatfile.c */, - B31B2E4D272E2C9800FF72B9 /* libfat_pc.h */, - B31B2E4E272E2C9800FF72B9 /* file_allocation_table.h */, - B31B2E4F272E2C9800FF72B9 /* fatdir.c */, - B31B2E50272E2C9800FF72B9 /* partition.c */, - B31B2E51272E2C9800FF72B9 /* libfat.c */, - B31B2E52272E2C9800FF72B9 /* lock.h */, - B31B2E53272E2C9800FF72B9 /* libfat_public_api.h */, - B31B2E54272E2C9800FF72B9 /* cache.h */, - B31B2E55272E2C9800FF72B9 /* filetime.c */, B31B2E56272E2C9800FF72B9 /* disc.c */, - B31B2E57272E2C9800FF72B9 /* directory.h */, - B31B2E58272E2C9800FF72B9 /* common.h */, - B31B2E59272E2C9800FF72B9 /* partition.h */, + B31B2E4F272E2C9800FF72B9 /* fatdir.c */, + B31B2E4C272E2C9800FF72B9 /* fatfile.c */, B31B2E5A272E2C9800FF72B9 /* file_allocation_table.c */, - B31B2E5B272E2C9800FF72B9 /* fatdir.h */, - B31B2E5C272E2C9800FF72B9 /* fatfile.h */, + B31B2E55272E2C9800FF72B9 /* filetime.c */, B31B2E5D272E2C9800FF72B9 /* libfat_public_api.c */, - B31B2E5E272E2C9800FF72B9 /* cache.c */, + B31B2E51272E2C9800FF72B9 /* libfat.c */, B31B2E5F272E2C9800FF72B9 /* lock.c */, + B31B2E50272E2C9800FF72B9 /* partition.c */, B31B2E60272E2C9800FF72B9 /* bit_ops.h */, + B31B2E54272E2C9800FF72B9 /* cache.h */, + B31B2E58272E2C9800FF72B9 /* common.h */, + B31B2E57272E2C9800FF72B9 /* directory.h */, + B31B2E4A272E2C9800FF72B9 /* disc_io.h */, B31B2E61272E2C9800FF72B9 /* disc.h */, B31B2E62272E2C9800FF72B9 /* fat.h */, + B31B2E5B272E2C9800FF72B9 /* fatdir.h */, + B31B2E5C272E2C9800FF72B9 /* fatfile.h */, + B31B2E4E272E2C9800FF72B9 /* file_allocation_table.h */, B31B2E63272E2C9800FF72B9 /* filetime.h */, + B31B2E4D272E2C9800FF72B9 /* libfat_pc.h */, + B31B2E53272E2C9800FF72B9 /* libfat_public_api.h */, + B31B2E52272E2C9800FF72B9 /* lock.h */, + B31B2E4B272E2C9800FF72B9 /* mem_allocate.h */, + B31B2E59272E2C9800FF72B9 /* partition.h */, ); path = libfat; sourceTree = ""; @@ -2272,9 +2221,7 @@ isa = PBXGroup; children = ( B3C7621020783162009950E4 /* PVDesmume2015.framework */, - B30178D3207C901D0051B93D /* libdesmume2015-iOS.a */, - B3447EE6218BEDD200557ACE /* PVDesmume2015.framework */, - B3447F91218BEE3F00557ACE /* libdesmume2015-tvOS.a */, + B30178D3207C901D0051B93D /* libdesmume2015.a */, ); name = Products; sourceTree = ""; @@ -2293,6 +2240,8 @@ B3C7621B20783242009950E4 /* Frameworks */ = { isa = PBXGroup; children = ( + B364D4BA2870E7DE00B93A4B /* PVLibRetro.framework */, + B364D4B62870E7D300B93A4B /* PVLibRetro.framework */, B35E6BF1207CD2670040709A /* AudioToolbox.framework */, B35E6BEF207CD2610040709A /* AudioUnit.framework */, B324C31B2191964F009F4EDC /* AVFoundation.framework */, @@ -2322,22 +2271,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B3447ED5218BEDD200557ACE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447ED6218BEDD200557ACE /* PVDesmume2015.h in Headers */, - B3447ED7218BEDD200557ACE /* PVDesmume2015Core.h in Headers */, - B3447ED8218BEDD200557ACE /* PVDesmume2015+Audio.h in Headers */, - B3447ED9218BEDD200557ACE /* PVDesmume2015Core+Audio.h in Headers */, - B3447EDA218BEDD200557ACE /* PVDesmume2015Core+Saves.h in Headers */, - B3447EDB218BEDD200557ACE /* PVDesmume2015+AudioTypes.h in Headers */, - B3447EDC218BEDD200557ACE /* PVDesmume2015+CoreAudio.h in Headers */, - B3447EDD218BEDD200557ACE /* PVDesmume2015Core+Controls.h in Headers */, - B3447EDE218BEDD200557ACE /* PVDesmume2015Core+Video.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620D20783162009950E4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2357,9 +2290,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B30178D2207C901D0051B93D /* desmume2015-iOS */ = { + B30178D2207C901D0051B93D /* desmume2015 */ = { isa = PBXNativeTarget; - buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "desmume2015-iOS" */; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "desmume2015" */; buildPhases = ( B30178CF207C901D0051B93D /* Sources */, B30178D0207C901D0051B93D /* Frameworks */, @@ -2369,50 +2302,14 @@ ); dependencies = ( ); - name = "desmume2015-iOS"; - productName = desmume2015; - productReference = B30178D3207C901D0051B93D /* libdesmume2015-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3447EC0218BEDD200557ACE /* PVDesmume2015-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVDesmume2015-tvOS" */; - buildPhases = ( - B3447EC1218BEDD200557ACE /* Sources */, - B3447ECA218BEDD200557ACE /* Frameworks */, - B3447ED5218BEDD200557ACE /* Headers */, - B3447EDF218BEDD200557ACE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3DDF56F26E9B90400CE47F0 /* PBXTargetDependency */, - ); - name = "PVDesmume2015-tvOS"; - productName = PVDesmume2015; - productReference = B3447EE6218BEDD200557ACE /* PVDesmume2015.framework */; - productType = "com.apple.product-type.framework"; - }; - B3447EE8218BEE3F00557ACE /* desmume2015-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "desmume2015-tvOS" */; - buildPhases = ( - B3447EE9218BEE3F00557ACE /* Sources */, - B3447F8C218BEE3F00557ACE /* Frameworks */, - B3447F8D218BEE3F00557ACE /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "desmume2015-tvOS"; + name = desmume2015; productName = desmume2015; - productReference = B3447F91218BEE3F00557ACE /* libdesmume2015-tvOS.a */; + productReference = B30178D3207C901D0051B93D /* libdesmume2015.a */; productType = "com.apple.product-type.library.static"; }; - B3C7620F20783162009950E4 /* PVDesmume2015-iOS */ = { + B3C7620F20783162009950E4 /* PVDesmume2015 */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDesmume2015-iOS" */; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDesmume2015" */; buildPhases = ( B3C7620B20783162009950E4 /* Sources */, B3C7620C20783162009950E4 /* Frameworks */, @@ -2422,8 +2319,9 @@ buildRules = ( ); dependencies = ( + B39313822870FB9A00372EBB /* PBXTargetDependency */, ); - name = "PVDesmume2015-iOS"; + name = PVDesmume2015; productName = PVDesmume2015; productReference = B3C7621020783162009950E4 /* PVDesmume2015.framework */; productType = "com.apple.product-type.framework"; @@ -2461,24 +2359,13 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C7620F20783162009950E4 /* PVDesmume2015-iOS */, - B3447EC0218BEDD200557ACE /* PVDesmume2015-tvOS */, - B30178D2207C901D0051B93D /* desmume2015-iOS */, - B3447EE8218BEE3F00557ACE /* desmume2015-tvOS */, + B3C7620F20783162009950E4 /* PVDesmume2015 */, + B30178D2207C901D0051B93D /* desmume2015 */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B3447EDF218BEDD200557ACE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B316B4E821926FE500693472 /* emu.cfg in Resources */, - B3447EE2218BEDD200557ACE /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620E20783162009950E4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2495,104 +2382,94 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B31B3068272E2CAD00FF72B9 /* mc.cpp in Sources */, - B31B3066272E2CAD00FF72B9 /* MMU.cpp in Sources */, - B31B305C272E2CAD00FF72B9 /* rtc.cpp in Sources */, - B31B306D272E2CAD00FF72B9 /* emufile.cpp in Sources */, - B31B306E272E2CAD00FF72B9 /* saves.cpp in Sources */, - B31B3064272E2CAD00FF72B9 /* texcache.cpp in Sources */, - B31B3075272E2CAD00FF72B9 /* slot2.cpp in Sources */, - B31B307D272E2CAD00FF72B9 /* slot1.cpp in Sources */, - B31B3060272E2CAD00FF72B9 /* GPU.cpp in Sources */, - B31B3079272E2CAD00FF72B9 /* cp15.cpp in Sources */, - B31B3080272E2CAD00FF72B9 /* path.cpp in Sources */, - B31B3071272E2CAD00FF72B9 /* arm_instructions.cpp in Sources */, - B31B3076272E2CAD00FF72B9 /* SPU.cpp in Sources */, - B31B3062272E2CAD00FF72B9 /* driver.cpp in Sources */, - B31B3061272E2CAD00FF72B9 /* NDSSystem.cpp in Sources */, - B31B305E272E2CAD00FF72B9 /* render3D.cpp in Sources */, - B31B3072272E2CAD00FF72B9 /* Disassembler.cpp in Sources */, - B31B306A272E2CAD00FF72B9 /* bios.cpp in Sources */, - B31B307A272E2CAD00FF72B9 /* encrypt.cpp in Sources */, - B31B305D272E2CAD00FF72B9 /* rasterize.cpp in Sources */, - B31B306C272E2CAD00FF72B9 /* common.c in Sources */, - B31B306B272E2CAD00FF72B9 /* firmware.cpp in Sources */, - B31B3063272E2CAD00FF72B9 /* mic_openal.cpp in Sources */, - B31B3074272E2CAD00FF72B9 /* OGLRender.cpp in Sources */, - B31B307B272E2CAD00FF72B9 /* gfx3d.cpp in Sources */, - B31B306F272E2CAD00FF72B9 /* thumb_instructions.cpp in Sources */, - B31B307F272E2CAD00FF72B9 /* debug.cpp in Sources */, - B31B307E272E2CAD00FF72B9 /* version.c in Sources */, - B31B3081272E2CAD00FF72B9 /* cheatSystem.cpp in Sources */, - B31B3067272E2CAD00FF72B9 /* readwrite.cpp in Sources */, - B31B3069272E2CAD00FF72B9 /* mic.cpp in Sources */, - B31B3065272E2CAD00FF72B9 /* wifi.cpp in Sources */, - B31B3077272E2CAD00FF72B9 /* matrix.cpp in Sources */, - B31B3078272E2CAD00FF72B9 /* arm_jit.cpp in Sources */, - B31B307C272E2CAD00FF72B9 /* mic_alsa.cpp in Sources */, - B31B3073272E2CAD00FF72B9 /* FIFO.cpp in Sources */, - B31B3070272E2CAD00FF72B9 /* OGLRender_3_2.cpp in Sources */, - B31B305F272E2CAD00FF72B9 /* armcpu.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EC1218BEDD200557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EC2218BEDD200557ACE /* PVDesmume2015+Audio.mm in Sources */, - B3447EC3218BEDD200557ACE /* PVDesmume2015Core+Controls.mm in Sources */, - B3447EC4218BEDD200557ACE /* PVDesmume2015Core.mm in Sources */, - B3447EC5218BEDD200557ACE /* PVDesmume2015Core+Saves.m in Sources */, - B3447EC6218BEDD200557ACE /* PVDesmume2015.mm in Sources */, - B3447EC7218BEDD200557ACE /* PVDesmume2015Core+Video.m in Sources */, - B3447EC8218BEDD200557ACE /* PVDesmume2015+CoreAudio.mm in Sources */, - B3447EC9218BEDD200557ACE /* PVDesmume2015Core+Audio.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EE9218BEE3F00557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B31B3042272E2CAC00FF72B9 /* mc.cpp in Sources */, - B31B3040272E2CAC00FF72B9 /* MMU.cpp in Sources */, - B31B3036272E2CAC00FF72B9 /* rtc.cpp in Sources */, - B31B3047272E2CAC00FF72B9 /* emufile.cpp in Sources */, - B31B3048272E2CAC00FF72B9 /* saves.cpp in Sources */, - B31B303E272E2CAC00FF72B9 /* texcache.cpp in Sources */, - B31B304F272E2CAC00FF72B9 /* slot2.cpp in Sources */, - B31B3057272E2CAC00FF72B9 /* slot1.cpp in Sources */, - B31B303A272E2CAC00FF72B9 /* GPU.cpp in Sources */, - B31B3053272E2CAC00FF72B9 /* cp15.cpp in Sources */, - B31B305A272E2CAC00FF72B9 /* path.cpp in Sources */, - B31B304B272E2CAC00FF72B9 /* arm_instructions.cpp in Sources */, - B31B3050272E2CAC00FF72B9 /* SPU.cpp in Sources */, - B31B303C272E2CAC00FF72B9 /* driver.cpp in Sources */, - B31B303B272E2CAC00FF72B9 /* NDSSystem.cpp in Sources */, - B31B3038272E2CAC00FF72B9 /* render3D.cpp in Sources */, - B31B304C272E2CAC00FF72B9 /* Disassembler.cpp in Sources */, - B31B3044272E2CAC00FF72B9 /* bios.cpp in Sources */, - B31B3054272E2CAC00FF72B9 /* encrypt.cpp in Sources */, - B31B3037272E2CAC00FF72B9 /* rasterize.cpp in Sources */, - B31B3046272E2CAC00FF72B9 /* common.c in Sources */, - B31B3045272E2CAC00FF72B9 /* firmware.cpp in Sources */, - B31B303D272E2CAC00FF72B9 /* mic_openal.cpp in Sources */, - B31B304E272E2CAC00FF72B9 /* OGLRender.cpp in Sources */, - B31B3055272E2CAC00FF72B9 /* gfx3d.cpp in Sources */, - B31B3049272E2CAC00FF72B9 /* thumb_instructions.cpp in Sources */, - B31B3059272E2CAC00FF72B9 /* debug.cpp in Sources */, - B31B3058272E2CAC00FF72B9 /* version.c in Sources */, - B31B305B272E2CAC00FF72B9 /* cheatSystem.cpp in Sources */, - B31B3041272E2CAC00FF72B9 /* readwrite.cpp in Sources */, - B31B3043272E2CAC00FF72B9 /* mic.cpp in Sources */, - B31B303F272E2CAC00FF72B9 /* wifi.cpp in Sources */, - B31B3051272E2CAC00FF72B9 /* matrix.cpp in Sources */, - B31B3052272E2CAC00FF72B9 /* arm_jit.cpp in Sources */, - B31B3056272E2CAC00FF72B9 /* mic_alsa.cpp in Sources */, - B31B304D272E2CAC00FF72B9 /* FIFO.cpp in Sources */, - B31B304A272E2CAC00FF72B9 /* OGLRender_3_2.cpp in Sources */, - B31B3039272E2CAC00FF72B9 /* armcpu.cpp in Sources */, + B39313472870FB8F00372EBB /* NDSSystem.cpp in Sources */, + B393131D2870FB8F00372EBB /* mic.cpp in Sources */, + B39313222870FB8F00372EBB /* fsnitro.cpp in Sources */, + B393131A2870FB8F00372EBB /* version.c in Sources */, + B39313212870FB8F00372EBB /* file_allocation_table.c in Sources */, + B39313262870FB8F00372EBB /* GPU.cpp in Sources */, + B39313392870FB8F00372EBB /* tinystr.cpp in Sources */, + B39312FF2870FB8F00372EBB /* fatfile.c in Sources */, + B39313002870FB8F00372EBB /* advanscene.cpp in Sources */, + B393130E2870FB8F00372EBB /* partition.c in Sources */, + B393130A2870FB8F00372EBB /* cp15.cpp in Sources */, + B393132D2870FB8F00372EBB /* rasterize.cpp in Sources */, + B39312F32870FB8E00372EBB /* matrix.cpp in Sources */, + B393133F2870FB8F00372EBB /* slot1_none.cpp in Sources */, + B393133A2870FB8F00372EBB /* cache.c in Sources */, + B393131F2870FB8F00372EBB /* retro_stat.c in Sources */, + B393133B2870FB8F00372EBB /* xstring.cpp in Sources */, + B39312F42870FB8E00372EBB /* readwrite.cpp in Sources */, + B393133C2870FB8F00372EBB /* retro_dirent.c in Sources */, + B39313452870FB8F00372EBB /* thumb_instructions.cpp in Sources */, + B39313052870FB8F00372EBB /* saves.cpp in Sources */, + B39313432870FB8F00372EBB /* slot2_none.cpp in Sources */, + B393133D2870FB8F00372EBB /* arm_jit.cpp in Sources */, + B39313402870FB8F00372EBB /* slot2_rumblepak.cpp in Sources */, + B39313462870FB8F00372EBB /* mc.cpp in Sources */, + B39313012870FB8F00372EBB /* encrypt.cpp in Sources */, + B39313062870FB8F00372EBB /* datetime.cpp in Sources */, + B393131C2870FB8F00372EBB /* slot2.cpp in Sources */, + B39313332870FB8F00372EBB /* slot1_retail_mcrom.cpp in Sources */, + B393131E2870FB8F00372EBB /* rthreads.c in Sources */, + B39313112870FB8F00372EBB /* slot1comp_protocol.cpp in Sources */, + B39313412870FB8F00372EBB /* emufile.cpp in Sources */, + B393130C2870FB8F00372EBB /* path.cpp in Sources */, + B393132C2870FB8F00372EBB /* arm_instructions.cpp in Sources */, + B39312F92870FB8F00372EBB /* disc.c in Sources */, + B39313242870FB8F00372EBB /* FIFO.cpp in Sources */, + B393132E2870FB8F00372EBB /* Disassembler.cpp in Sources */, + B39313252870FB8F00372EBB /* libfat_public_api.c in Sources */, + B393132F2870FB8F00372EBB /* features_cpu.c in Sources */, + B393133E2870FB8F00372EBB /* wifi.cpp in Sources */, + B39313442870FB8F00372EBB /* slot2_expMemory.cpp in Sources */, + B39313482870FB8F00372EBB /* slot1_retail_mcrom_debug.cpp in Sources */, + B39313352870FB8F00372EBB /* vfat.cpp in Sources */, + B393132A2870FB8F00372EBB /* bios.cpp in Sources */, + B39313312870FB8F00372EBB /* rtc.cpp in Sources */, + B39312F62870FB8E00372EBB /* slot2_guitarGrip.cpp in Sources */, + B393134A2870FB8F00372EBB /* dlditool.c in Sources */, + B39313292870FB8F00372EBB /* tinyxmlparser.cpp in Sources */, + B39312F82870FB8E00372EBB /* directory.c in Sources */, + B39313092870FB8F00372EBB /* memalign.c in Sources */, + B39312FB2870FB8F00372EBB /* firmware.cpp in Sources */, + B393131B2870FB8F00372EBB /* crc.cpp in Sources */, + B39313302870FB8F00372EBB /* fatdir.c in Sources */, + B39313032870FB8F00372EBB /* slot2_paddle.cpp in Sources */, + B393130F2870FB8F00372EBB /* MMU.cpp in Sources */, + B39313172870FB8F00372EBB /* slot2_mpcf.cpp in Sources */, + B39313422870FB8F00372EBB /* debug.cpp in Sources */, + B39313152870FB8F00372EBB /* slot1_retail_auto.cpp in Sources */, + B39312FE2870FB8F00372EBB /* slot2_piano.cpp in Sources */, + B39313342870FB8F00372EBB /* scrc32.cpp in Sources */, + B39313232870FB8F00372EBB /* common.c in Sources */, + B39313042870FB8F00372EBB /* slot1_retail_nand.cpp in Sources */, + B39312FC2870FB8F00372EBB /* texcache.cpp in Sources */, + B39312FA2870FB8F00372EBB /* emufat.cpp in Sources */, + B393130D2870FB8F00372EBB /* tinyxml.cpp in Sources */, + B39313162870FB8F00372EBB /* libretro.cpp in Sources */, + B39313192870FB8F00372EBB /* lock.c in Sources */, + B39312FD2870FB8F00372EBB /* slot1comp_mc.cpp in Sources */, + B39313132870FB8F00372EBB /* cheatSystem.cpp in Sources */, + B39313022870FB8F00372EBB /* slot1.cpp in Sources */, + B39313082870FB8F00372EBB /* SPU.cpp in Sources */, + B39313282870FB8F00372EBB /* decrypt.cpp in Sources */, + B39313142870FB8F00372EBB /* slot2_auto.cpp in Sources */, + B39313492870FB8F00372EBB /* stdstring.c in Sources */, + B39313322870FB8F00372EBB /* slot1_r4.cpp in Sources */, + B39313102870FB8F00372EBB /* libfat.c in Sources */, + B39313272870FB8F00372EBB /* header.cpp in Sources */, + B393132B2870FB8F00372EBB /* render3D.cpp in Sources */, + B39312F72870FB8E00372EBB /* memmap.c in Sources */, + B39312F52870FB8E00372EBB /* slot2_gbagame.cpp in Sources */, + B39313182870FB8F00372EBB /* filetime.c in Sources */, + B39313202870FB8F00372EBB /* gfx3d.cpp in Sources */, + B39313122870FB8F00372EBB /* slot2_passme.cpp in Sources */, + B39313382870FB8F00372EBB /* driver.cpp in Sources */, + B39313362870FB8F00372EBB /* slot1comp_rom.cpp in Sources */, + B39313372870FB8F00372EBB /* tinyxmlerror.cpp in Sources */, + B393130B2870FB8F00372EBB /* task.cpp in Sources */, + B39313072870FB8F00372EBB /* armcpu.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2600,24 +2477,21 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3447E9D218B826F00557ACE /* PVDesmume2015+Audio.mm in Sources */, - B3447E9E218B857A00557ACE /* PVDesmume2015Core+Controls.mm in Sources */, + B338055D287582CE0009C732 /* PVDesmume2015Core+Audio.m in Sources */, + B338055B28757C3A0009C732 /* PVDesmume2015Core+Controls.mm in Sources */, + B338055F287583AD0009C732 /* PVDesmume2015Core+Video.m in Sources */, B3C76226207833DE009950E4 /* PVDesmume2015Core.mm in Sources */, - B3447EAC218BC59D00557ACE /* PVDesmume2015Core+Saves.m in Sources */, - B3447EA1218B881000557ACE /* PVDesmume2015.mm in Sources */, - B3447EB0218BC5C500557ACE /* PVDesmume2015Core+Video.m in Sources */, - B3447EA5218BC36B00557ACE /* PVDesmume2015+CoreAudio.mm in Sources */, - B3447EB4218BC69700557ACE /* PVDesmume2015Core+Audio.m in Sources */, + B393138628710F9100372EBB /* arm_gen.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - B3DDF56F26E9B90400CE47F0 /* PBXTargetDependency */ = { + B39313822870FB9A00372EBB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3447EE8218BEE3F00557ACE /* desmume2015-tvOS */; - targetProxy = B3DDF56E26E9B90400CE47F0 /* PBXContainerItemProxy */; + target = B30178D2207C901D0051B93D /* desmume2015 */; + targetProxy = B39313812870FB9A00372EBB /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -2625,14 +2499,25 @@ B30178DA207C901D0051B93D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + DEAD_CODE_STRIPPING = NO; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-Wl,-all_load", + "-all_load", + ); + PRODUCT_NAME = desmume2015; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -2640,14 +2525,25 @@ B30178DB207C901D0051B93D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + DEAD_CODE_STRIPPING = NO; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-Wl,-all_load", + "-all_load", + ); + PRODUCT_NAME = desmume2015; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -2709,31 +2605,16 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/desmume2015/desmume/src/libretro-common/include\"", "\"$(SRCROOT)/desmume2015-emulator/core/hw\"", "\"$(SRCROOT)/desmume2015-emulator/core\"", "\"$(SRCROOT)/desmume2015-emulator/core/deps\"", "\"$(SRCROOT)/desmume2015-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -2744,176 +2625,71 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVDesmume2015/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDesmume2015"; - PRODUCT_NAME = PVDesmume2015; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Archive; - }; - B324C5032191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVDesmume2015/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( + MACH_O_TYPE = mh_dylib; + OTHER_CFLAGS = "$(inherited)"; + OTHER_LDFLAGS = ( "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + "-ObjC", + "-all_load", + "-ldesmume2015", ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDesmume2015"; PRODUCT_NAME = PVDesmume2015; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; - B324C5042191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + STRIP_SWIFT_SYMBOLS = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Archive; }; - B324C5052191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; - B3447EE4218BEDD200557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVDesmume2015/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDesmume2015"; - PRODUCT_NAME = PVDesmume2015; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447EE5218BEDD200557ACE /* Release */ = { + B324C5042191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; + DEAD_CODE_STRIPPING = NO; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVDesmume2015/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( + OTHER_LDFLAGS = ( "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + "-ObjC", + "-Wl,-all_load", + "-all_load", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDesmume2015"; - PRODUCT_NAME = PVDesmume2015; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - B3447F8F218BEE3F00557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + PRODUCT_NAME = desmume2015; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447F90218BEE3F00557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Archive; }; B3C7621620783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; @@ -2974,17 +2750,17 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/desmume2015/desmume/src/libretro-common/include\"", "\"$(SRCROOT)/desmume2015-emulator/core/hw\"", "\"$(SRCROOT)/desmume2015-emulator/core\"", "\"$(SRCROOT)/desmume2015-emulator/core/deps\"", "\"$(SRCROOT)/desmume2015-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -3048,32 +2824,17 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/desmume2015/desmume/src/libretro-common/include\"", "\"$(SRCROOT)/desmume2015-emulator/core/hw\"", "\"$(SRCROOT)/desmume2015-emulator/core\"", "\"$(SRCROOT)/desmume2015-emulator/core/deps\"", "\"$(SRCROOT)/desmume2015-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -3084,26 +2845,42 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVDesmume2015/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MACH_O_TYPE = mh_dylib; + OTHER_CFLAGS = "$(inherited)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-all_load", + "-ldesmume2015", + ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDesmume2015"; PRODUCT_NAME = PVDesmume2015; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_SWIFT_SYMBOLS = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -3111,26 +2888,42 @@ B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVDesmume2015/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MACH_O_TYPE = mh_dylib; + OTHER_CFLAGS = "$(inherited)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-all_load", + "-ldesmume2015", + ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDesmume2015"; PRODUCT_NAME = PVDesmume2015; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_SWIFT_SYMBOLS = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -3138,7 +2931,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "desmume2015-iOS" */ = { + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "desmume2015" */ = { isa = XCConfigurationList; buildConfigurations = ( B30178DA207C901D0051B93D /* Debug */, @@ -3148,26 +2941,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVDesmume2015-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447EE4218BEDD200557ACE /* Debug */, - B3447EE5218BEDD200557ACE /* Release */, - B324C5032191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "desmume2015-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447F8F218BEE3F00557ACE /* Debug */, - B3447F90218BEE3F00557ACE /* Release */, - B324C5052191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVDesmume2015" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -3178,7 +2951,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDesmume2015-iOS" */ = { + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDesmume2015" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C7621920783162009950E4 /* Debug */, diff --git a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/Desmume2015.xcscheme b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/Desmume2015.xcscheme new file mode 100644 index 0000000000..869a57f840 --- /dev/null +++ b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/Desmume2015.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-iOS 1.xcscheme b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-iOS 1.xcscheme deleted file mode 100644 index a62d458858..0000000000 --- a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-iOS 1.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-iOS.xcscheme b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-iOS.xcscheme deleted file mode 100644 index f035304ec8..0000000000 --- a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-iOS.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-tvOS.xcscheme b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-tvOS.xcscheme deleted file mode 100644 index f828c70c42..0000000000 --- a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015.xcscheme b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015.xcscheme new file mode 100644 index 0000000000..23925b0de0 --- /dev/null +++ b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVDesmume2015.xcscheme @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVPVDesmume2015-tvOS.xcscheme b/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVPVDesmume2015-tvOS.xcscheme deleted file mode 100644 index c42ac7b1e7..0000000000 --- a/Cores/Desmume2015/PVDesmume2015.xcodeproj/xcshareddata/xcschemes/PVPVDesmume2015-tvOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Desmume2015/PVDesmume2015/Core.plist b/Cores/Desmume2015/PVDesmume2015/Core.plist index cb83bddef7..7a206acc53 100644 --- a/Cores/Desmume2015/PVDesmume2015/Core.plist +++ b/Cores/Desmume2015/PVDesmume2015/Core.plist @@ -3,12 +3,12 @@ PVCoreIdentifier - org.provenance.core.desmume2015 + com.provenance.core.desmume2015 PVPrincipleClass PVDesmume2015Core PVSupportedSystems - com.provenance.dreamcast + com.provenance.ds PVProjectName Desmume2015 @@ -17,6 +17,6 @@ PVProjectVersion 1.1 PVDisabled - + diff --git a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Audio.m b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Audio.m index d71e308635..37507fb37a 100644 --- a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Audio.m +++ b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Audio.m @@ -11,7 +11,7 @@ @implementation PVDesmume2015Core (Audio) - (NSTimeInterval)frameInterval { - return isNTSC ? 60 : 50; + return 60; } - (NSUInteger)channelCount { @@ -19,7 +19,7 @@ - (NSUInteger)channelCount { } - (double)audioSampleRate { - return sampleRate; + return 44100; } @end diff --git a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.h b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.h index 58dff0a266..7dd2d2981a 100644 --- a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.h +++ b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.h @@ -10,16 +10,16 @@ NS_ASSUME_NONNULL_BEGIN -@interface PVDesmume2015Core (Controls) +@interface PVDesmume2015Core (Controls) - (void)initControllBuffers; - (void)pollControllers; #pragma mark - Control -- (void)didPushDreamcastButton:(enum PVDreamcastButton)button forPlayer:(NSInteger)player; -- (void)didReleaseDreamcastButton:(enum PVDreamcastButton)button forPlayer:(NSInteger)player; -- (void)didMoveDreamcastJoystickDirection:(enum PVDreamcastButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didPushDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player; +- (void)didReleaseDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player; +- (void)didMoveDSJoystickDirection:(enum PVDSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; - (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; - (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; diff --git a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.mm b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.mm index 45af1c9ffa..69a6e57845 100644 --- a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.mm +++ b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Controls.mm @@ -32,7 +32,7 @@ #define DC_AXIS_X (0X20000) #define DC_AXIS_Y (0X20001) -static const int DreamcastMap[] = { +static const int DSMap[] = { DC_DPAD_UP, DC_DPAD_DOWN, DC_DPAD_LEFT, DC_DPAD_RIGHT, DC_BTN_A, DC_BTN_B, DC_BTN_X, DC_BTN_Y, DC_AXIS_LT, DC_AXIS_RT, @@ -45,123 +45,123 @@ typedef unsigned int u32; // Desmume2015 controller data -u16 kcode[4]; -u8 rt[4]; -u8 lt[4]; -u32 vks[4]; -s8 joyx[4], joyy[4]; +//u16 kcode[4]; +//u8 rt[4]; +//u8 lt[4]; +//u32 vks[4]; +//s8 joyx[4], joyy[4]; @implementation PVDesmume2015Core (Controls) - (void)initControllBuffers { - memset(&kcode, 0xFFFF, sizeof(kcode)); - bzero(&rt, sizeof(rt)); - bzero(<, sizeof(lt)); +// memset(&kcode, 0xFFFF, sizeof(kcode)); +// bzero(&rt, sizeof(rt)); +// bzero(<, sizeof(lt)); } #pragma mark - Control - -- (void)pollControllers { - for (NSInteger playerIndex = 0; playerIndex < 4; playerIndex++) - { - GCController *controller = nil; - - if (self.controller1 && playerIndex == 0) - { - controller = self.controller1; - } - else if (self.controller2 && playerIndex == 1) - { - controller = self.controller2; - } - else if (self.controller3 && playerIndex == 3) - { - controller = self.controller3; - } - else if (self.controller4 && playerIndex == 4) - { - controller = self.controller4; - } - - if ([controller extendedGamepad]) - { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); - dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); - dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); - dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); - - gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); - gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); - gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); - gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); - - gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); - gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); - - gamepad.leftTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Z) : kcode[playerIndex] |= (DC_BTN_Z); - gamepad.rightTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_START) : kcode[playerIndex] |= (DC_BTN_START); - - - float xvalue = gamepad.leftThumbstick.xAxis.value; - s8 x=(s8)(xvalue*127); - joyx[0] = x; - - float yvalue = gamepad.leftThumbstick.yAxis.value; - s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range - joyy[0] = y; - - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); - dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); - dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); - dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); - - gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); - gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); - gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); - gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); - - gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); - gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); - } -#if TARGET_OS_TV - else if ([controller microGamepad]) { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - } -#endif - } -} - --(void)didPushDreamcastButton:(enum PVDreamcastButton)button forPlayer:(NSInteger)player { - if (button == PVDreamcastButtonL) { - lt[player] |= 0xff * true; - } else if (button == PVDreamcastButtonR) { - rt[player] |= 0xff * true; - } else { - int mapped = DreamcastMap[button]; - kcode[player] &= ~(mapped); - } +// +//- (void)pollControllers { +// for (NSInteger playerIndex = 0; playerIndex < 4; playerIndex++) +// { +// GCController *controller = nil; +// +// if (self.controller1 && playerIndex == 0) +// { +// controller = self.controller1; +// } +// else if (self.controller2 && playerIndex == 1) +// { +// controller = self.controller2; +// } +// else if (self.controller3 && playerIndex == 3) +// { +// controller = self.controller3; +// } +// else if (self.controller4 && playerIndex == 4) +// { +// controller = self.controller4; +// } +// +// if ([controller extendedGamepad]) +// { +// GCExtendedGamepad *gamepad = [controller extendedGamepad]; +// GCControllerDirectionPad *dpad = [gamepad dpad]; +// +// dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); +// dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); +// dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); +// dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); +// +// gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); +// gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); +// gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); +// gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); +// +// gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); +// gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); +// +// gamepad.leftTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Z) : kcode[playerIndex] |= (DC_BTN_Z); +// gamepad.rightTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_START) : kcode[playerIndex] |= (DC_BTN_START); +// +// +// float xvalue = gamepad.leftThumbstick.xAxis.value; +// s8 x=(s8)(xvalue*127); +// joyx[0] = x; +// +// float yvalue = gamepad.leftThumbstick.yAxis.value; +// s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range +// joyy[0] = y; +// +// } else if ([controller gamepad]) { +// GCGamepad *gamepad = [controller gamepad]; +// GCControllerDirectionPad *dpad = [gamepad dpad]; +// +// dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); +// dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); +// dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); +// dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); +// +// gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); +// gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); +// gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); +// gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); +// +// gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); +// gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); +// } +//#if TARGET_OS_TV +// else if ([controller microGamepad]) { +// GCMicroGamepad *gamepad = [controller microGamepad]; +// GCControllerDirectionPad *dpad = [gamepad dpad]; +// } +//#endif +// } +//} + +-(void)didPushDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player { +// if (button == PVDSButtonL) { +// lt[player] |= 0xff * true; +// } else if (button == PVDSButtonR) { +// rt[player] |= 0xff * true; +// } else { +// int mapped = DSMap[button]; +// kcode[player] &= ~(mapped); +// } } --(void)didReleaseDreamcastButton:(enum PVDreamcastButton)button forPlayer:(NSInteger)player { - if (button == PVDreamcastButtonL) { - lt[player] |= 0xff * false; - } else if (button == PVDreamcastButtonR) { - rt[player] |= 0xff * false; - } else { - int mapped = DreamcastMap[button]; - kcode[player] |= (mapped); - } +-(void)didReleaseDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player { +// if (button == PVDSButtonL) { +// lt[player] |= 0xff * false; +// } else if (button == PVDSButtonR) { +// rt[player] |= 0xff * false; +// } else { +// int mapped = DSMap[button]; +// kcode[player] |= (mapped); +// } } -- (void)didMoveDreamcastJoystickDirection:(enum PVDreamcastButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { +- (void)didMoveDSJoystickDirection:(enum PVDSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { /* float xvalue = gamepad.leftThumbstick.xAxis.value; s8 x=(s8)(xvalue*127); @@ -174,15 +174,15 @@ - (void)didMoveDreamcastJoystickDirection:(enum PVDreamcastButton)button withVal } -(void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { - [self didMoveDreamcastJoystickDirection:(enum PVDreamcastButton)button withValue:value forPlayer:player]; + [self didMoveDSJoystickDirection:(enum PVDSButton)button withValue:value forPlayer:player]; } - (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { - [self didPushDreamcastButton:(PVDreamcastButton)button forPlayer:player]; + [self didPushDSButton:(PVDSButton)button forPlayer:player]; } - (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { - [self didReleaseDreamcastButton:(PVDreamcastButton)button forPlayer:player]; + [self didReleaseDSButton:(PVDSButton)button forPlayer:player]; } @end diff --git a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Options.swift b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Options.swift new file mode 100644 index 0000000000..517b8330ed --- /dev/null +++ b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Options.swift @@ -0,0 +1,9 @@ +// +// PVDesmume2015Core+Options.swift +// PVDesmume2015 +// +// Created by Joseph Mattiello on 11/21/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation diff --git a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Video.m b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Video.m index b60ede144c..150d0ae98c 100644 --- a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Video.m +++ b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core+Video.m @@ -9,74 +9,143 @@ #import "PVDesmume2015Core+Video.h" #import "PVDesmume2015Core.h" +#if !__has_include() #import #import #import - +#else +#import +#import +#endif @implementation PVDesmume2015Core (Video) # pragma mark - Methods -- (void)videoInterrupt { - //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); - - //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); -} - -- (void)swapBuffers { - [self.renderDelegate didRenderFrameOnAlternateThread]; -} - -- (void)executeFrameSkippingFrame:(BOOL)skip { - //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - - //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); -} - -- (void)executeFrame { - [self executeFrameSkippingFrame:NO]; -} +//- (void)videoInterrupt { +// //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)swapBuffers { +// [self.renderDelegate didRenderFrameOnAlternateThread]; +//} +// +//- (void)executeFrameSkippingFrame:(BOOL)skip { +// //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// +// //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)executeFrame { +// [self executeFrameSkippingFrame:NO]; +//} # pragma mark - Properties - -- (CGSize)bufferSize { - return CGSizeMake(1024, 512); -} - -- (CGRect)screenRect { - return CGRectMake(0, 0, self.videoWidth, self.videoHeight); -} - -- (CGSize)aspectSize { - return CGSizeMake(self.videoWidth, self.videoHeight); -} - -- (BOOL)rendersToOpenGL { - return YES; -} - -- (BOOL)isDoubleBuffered { - return YES; -} - -- (const void *)videoBuffer { - return NULL; -} +// +//- (CGSize)bufferSize { +// return CGSizeMake(1024, 512); +//} +// +//- (CGRect)screenRect { +// return CGRectMake(0, 0, self.videoWidth, self.videoHeight); +//} +// +//- (CGSize)aspectSize { +// return CGSizeMake(256, 192); +//} +// +//- (BOOL)rendersToOpenGL { +// return YES; +//} +// +//- (void)swapBuffers +//{ +// if (bitmap.data == (uint8_t*)videoBufferA) +// { +// videoBuffer = videoBufferA; +// bitmap.data = (uint8_t*)videoBufferB; +// } +// else +// { +// videoBuffer = videoBufferB; +// bitmap.data = (uint8_t*)videoBufferA; +// } +//} +// +//-(BOOL)isDoubleBuffered { +// return YES; +//} + +//- (const void *)videoBuffer { +// return videoBuffer; +//} + +#define USE_565 0 + +#if 0 +// For reference @JoeMatt + /* DataType */ + #define GL_BYTE 0x1400 + #define GL_UNSIGNED_BYTE 0x1401 + #define GL_SHORT 0x1402 + #define GL_UNSIGNED_SHORT 0x1403 + #define GL_INT 0x1404 + #define GL_UNSIGNED_INT 0x1405 + #define GL_FLOAT 0x1406 + #define GL_FIXED 0x140C + + /* PixelFormat */ + #define GL_DEPTH_COMPONENT 0x1902 + #define GL_ALPHA 0x1906 + #define GL_RGB 0x1907 + #define GL_RGBA 0x1908 + #define GL_LUMINANCE 0x1909 + #define GL_LUMINANCE_ALPHA 0x190A + + /* PixelType */ + /* GL_UNSIGNED_BYTE */ + #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 + #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 + #define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#endif - (GLenum)pixelFormat { +#if USE_565 + return GL_RGB; +#else return GL_RGBA; +// return GL_RGB5_A1; +#endif +// return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT; +// return GL_UNSIGNED_SHORT_1_5_5_5_REV; } - (GLenum)pixelType { - return GL_UNSIGNED_BYTE; +#if USE_565 + return GL_UNSIGNED_SHORT_5_6_5; +#else + return GL_UNSIGNED_SHORT_5_5_5_1; +#endif +// return GL_UNSIGNED_SHORT_5_6_5; } - (GLenum)internalPixelFormat { - return GL_RGBA; + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT +#if __has_include() + return GL_UNSIGNED_SHORT_5_6_5; +#else +#if USE_565 + return GL_RGB565; +#else +// return GL_RGBA; + return GL_RGB5_A1; // RETRO_PIXEL_FORMAT_0RGB1555 +#endif +#endif } -- (GLenum)depthFormat { - // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 - return GL_DEPTH_COMPONENT24; -} +//- (GLenum)depthFormat { +// // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 +// return GL_DEPTH_COMPONENT24; +//} @end diff --git a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.h b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.h index c999cdddf6..452bf049ee 100644 --- a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.h +++ b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.h @@ -10,31 +10,17 @@ #import #import #import +#import #define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; #define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; -@interface PVDesmume2015Core : PVEmulatorCore +__attribute__((visibility("default"))) +@interface PVDesmume2015Core : PVLibRetroCore { uint8_t padData[4][PVDSButtonCount]; - int8_t xAxis[4]; - int8_t yAxis[4]; - // int videoWidth; - // int videoHeight; - // int videoBitDepth; - int videoDepthBitDepth; // eh - - float sampleRate; - - BOOL isNTSC; @public dispatch_queue_t _callbackQueue; } -@property (nonatomic, assign) int videoWidth; -@property (nonatomic, assign) int videoHeight; -@property (nonatomic, assign) int videoBitDepth; - @end - -extern __weak PVDesmume2015Core *_current; diff --git a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.mm b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.mm index 60221644cf..4862f65427 100644 --- a/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.mm +++ b/Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.mm @@ -17,361 +17,434 @@ #import // Desmume2015 imports -#include "types.h" -#include "profiler/profiler.h" -#include "cfg/cfg.h" -#include "rend/rend.h" -#include "rend/TexCache.h" -#include "hw/maple/maple_devs.h" -#include "hw/maple/maple_if.h" -#include "hw/maple/maple_cfg.h" - -__weak PVDesmume2015Core *_current = 0; - -@interface PVDesmume2015Core() { - -} - -@property(nonatomic, strong, nullable) NSString *diskPath; - -@end - -// Desmume2015 function declerations -extern int screen_width,screen_height; -bool rend_single_frame(); -bool gles_init(); -extern int desmume2015_main(int argc, char* argv[]); -void common_linux_setup(); -int dc_init(int argc,wchar* argv[]); -void dc_run(); -void dc_term(); -void dc_stop(); -extern void MakeCurrentThreadRealTime(); - -bool inside_loop = true; -static bool first_run = true;; -volatile bool has_init = false; - +//#include "types.h" +////#include "profiler/profiler.h" +//#include "cfg/cfg.h" +//#include "rend/rend.h" +//#include "rend/TexCache.h" +//#include "hw/maple/maple_devs.h" +//#include "hw/maple/maple_if.h" +//#include "hw/maple/maple_cfg.h" + +//__weak PVDesmume2015Core *_current = 0; +// +//@interface PVDesmume2015Core() { +// +//} +// +//@property(nonatomic, strong, nullable) NSString *diskPath; +// +//@end +// +//// Desmume2015 function declerations +//extern int screen_width,screen_height; +//bool rend_single_frame(); +//bool gles_init(); +//extern int desmume2015_main(int argc, char* argv[]); +//void common_linux_setup(); +//int dc_init(int argc,wchar* argv[]); +//void dc_run(); +//void dc_term(); +//void dc_stop(); +//extern void MakeCurrentThreadRealTime(); +// +//bool inside_loop = true; +//static bool first_run = true;; +//volatile bool has_init = false; +// #pragma mark - PVDesmume2015Core Begin +#import +#import +#import +#import +#import + +//static void *dlopen_myself() +//{ +// Dl_info info; +// +// dladdr(dlopen_myself, &info); +// +// return dlopen(info.dli_fname, RTLD_LAZY | RTLD_GLOBAL); +//} @implementation PVDesmume2015Core { - dispatch_semaphore_t mupenWaitToBeginFrameSemaphore; - dispatch_semaphore_t coreWaitToEndFrameSemaphore; - dispatch_semaphore_t coreWaitForExitSemaphore; - - NSMutableDictionary *_callbackHandlers; +// dispatch_semaphore_t mupenWaitToBeginFrameSemaphore; +// dispatch_semaphore_t coreWaitToEndFrameSemaphore; +// dispatch_semaphore_t coreWaitForExitSemaphore; +// +// NSMutableDictionary *_callbackHandlers; } - (instancetype)init { if (self = [super init]) { - mupenWaitToBeginFrameSemaphore = dispatch_semaphore_create(0); - coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); - coreWaitForExitSemaphore = dispatch_semaphore_create(0); - - _videoWidth = screen_width = 640; - _videoHeight = screen_height = 480; - _videoBitDepth = 32; // ignored - videoDepthBitDepth = 0; // TODO - - sampleRate = 44100; - - isNTSC = YES; - - dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); - - _callbackQueue = dispatch_queue_create("org.openemu.Desmume2015.CallbackHandlerQueue", queueAttributes); - _callbackHandlers = [[NSMutableDictionary alloc] init]; +// mupenWaitToBeginFrameSemaphore = dispatch_semaphore_create(0); +// coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); +// coreWaitForExitSemaphore = dispatch_semaphore_create(0); +// +// _videoWidth = screen_width = 640; +// _videoHeight = screen_height = 480; +// _videoBitDepth = 32; // ignored +// videoDepthBitDepth = 0; // TODO +// +// sampleRate = 44100; +// +// isNTSC = YES; +// +// dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); +// +// _callbackQueue = dispatch_queue_create("org.openemu.Desmume2015.CallbackHandlerQueue", queueAttributes); +// _callbackHandlers = [[NSMutableDictionary alloc] init]; + _current = self; } - - _current = self; return self; } - -- (void)dealloc { -#if !__has_feature(objc_arc) - dispatch_release(mupenWaitToBeginFrameSemaphore); - dispatch_release(coreWaitToEndFrameSemaphore); - dispatch_release(coreWaitForExitSemaphore); -#endif - - _current = nil; -} - -#pragma mark - PVEmulatorCore -- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { - NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; - const char *dataPath; - - [self copyCFGIfMissing]; - [self copyShadersIfMissing]; - [self initControllBuffers]; - - // TODO: Proper path - NSString *configPath = self.saveStatesPath; - dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; - - [[NSFileManager defaultManager] createDirectoryAtPath:configPath - withIntermediateDirectories:YES - attributes:nil - error:nil]; - - NSString *batterySavesDirectory = self.batterySavesPath; - [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory - withIntermediateDirectories:YES - attributes:nil - error:NULL]; - - -// if (!success) { -// NSDictionary *userInfo = @{ -// NSLocalizedDescriptionKey: @"Failed to load game.", -// NSLocalizedFailureReasonErrorKey: @"Desmume2015 failed to load GLES graphics.", -// NSLocalizedRecoverySuggestionErrorKey: @"Provenance may not be compiled correctly." -// }; -// -// NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain -// code:PVEmulatorCoreErrorCodeCouldNotLoadRom -// userInfo:userInfo]; -// -// *error = newError; -// return NO; +// +//- (void)dealloc { +//#if !__has_feature(objc_arc) +// dispatch_release(mupenWaitToBeginFrameSemaphore); +// dispatch_release(coreWaitToEndFrameSemaphore); +// dispatch_release(coreWaitForExitSemaphore); +//#endif +// +// _current = nil; +//} +// +//#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self copyCFGIfMissing]; +// [self copyShadersIfMissing]; +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// +//// if (!success) { +//// NSDictionary *userInfo = @{ +//// NSLocalizedDescriptionKey: @"Failed to load game.", +//// NSLocalizedFailureReasonErrorKey: @"Desmume2015 failed to load GLES graphics.", +//// NSLocalizedRecoverySuggestionErrorKey: @"Provenance may not be compiled correctly." +//// }; +//// +//// NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain +//// code:PVEmulatorCoreErrorCodeCouldNotLoadRom +//// userInfo:userInfo]; +//// +//// *error = newError; +//// return NO; +//// } +// +// self.diskPath = path; +// +// return YES; +//} +// +//- (void)printSettings { +//#define LIST_OF_VARIABLES \ +//X(dynarec.Enable) \ +//X(dynarec.idleskip) \ +//X(DS.region) \ +//X(DS.region) \ +//X(aica.LimitFPS) \ +//X(aica.NoSound) \ +//X(aica.NoBatch) \ +//X(aica.GlobalFocus) \ +//X(aica.BufferSize) \ +//X(aica.OldSyncronousDma) \ +//X(bios.UseReios) \ +//X(rend.WideScreen) \ +//X(rend.UseMipmaps) \ +//X(pvr.MaxThreads) \ +//X(pvr.SynchronousRender) +// +// +// NSMutableString *s = [NSMutableString stringWithFormat:@"----------\nDesmume2015 Settings:\n---------\n"]; +//#define X(name) \ +//[s appendString: [NSString stringWithFormat:@"%@ : %i\n", @#name , settings.name ]]; +//LIST_OF_VARIABLES +//#undef X +// +// ILOG(@"%@", s); +//} +// +// +//- (void)copyShadersIfMissing { +// +// NSArray *shaders = @[@"Shader.vsh",@"Shader.fsh"]; +// NSString *destinationFolder = self.BIOSPath; +// NSFileManager *fm = [NSFileManager defaultManager]; +// +// for (NSString* shader in shaders) { +// NSString *destinationPath = [destinationFolder stringByAppendingPathComponent:shader]; +// ILOG(@"Checking for shader %@", destinationPath); +// if( ![fm fileExistsAtPath:destinationPath] ) { +// NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:[shader stringByDeletingPathExtension] ofType:[shader pathExtension]]; +// [fm copyItemAtPath:source +// toPath:destinationPath +// error:nil]; +// ILOG(@"Copied %@ from %@ to %@", shader, source, destinationPath); +// } // } - - self.diskPath = path; - - return YES; -} - -- (void)printSettings { -#define LIST_OF_VARIABLES \ -X(dynarec.Enable) \ -X(dynarec.idleskip) \ -X(DS.region) \ -X(DS.region) \ -X(aica.LimitFPS) \ -X(aica.NoSound) \ -X(aica.NoBatch) \ -X(aica.GlobalFocus) \ -X(aica.BufferSize) \ -X(aica.OldSyncronousDma) \ -X(bios.UseReios) \ -X(rend.WideScreen) \ -X(rend.UseMipmaps) \ -X(pvr.MaxThreads) \ -X(pvr.SynchronousRender) - - - NSMutableString *s = [NSMutableString stringWithFormat:@"----------\nDesmume2015 Settings:\n---------\n"]; -#define X(name) \ -[s appendString: [NSString stringWithFormat:@"%@ : %i\n", @#name , settings.name ]]; -LIST_OF_VARIABLES -#undef X - - ILOG(@"%@", s); -} - - -- (void)copyShadersIfMissing { - - NSArray *shaders = @[@"Shader.vsh",@"Shader.fsh"]; - NSString *destinationFolder = self.BIOSPath; - NSFileManager *fm = [NSFileManager defaultManager]; - - for (NSString* shader in shaders) { - NSString *destinationPath = [destinationFolder stringByAppendingPathComponent:shader]; - ILOG(@"Checking for shader %@", destinationPath); - if( ![fm fileExistsAtPath:destinationPath] ) { - NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:[shader stringByDeletingPathExtension] ofType:[shader pathExtension]]; - [fm copyItemAtPath:source - toPath:destinationPath - error:nil]; - ILOG(@"Copied %@ from %@ to %@", shader, source, destinationPath); - } - } -} - -- (void)copyCFGIfMissing { - - NSString *cfg = @"emu.cfg"; - -// Whcih one is it again? - NSString *destinationFolder = self.BIOSPath; -// NSString *destinationFolder = self.diskPath; - - NSFileManager *fm = [NSFileManager defaultManager]; - NSString *destinationPath = [destinationFolder stringByAppendingPathComponent:cfg]; - - if( ![fm fileExistsAtPath:destinationPath] ) { - NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:@"emu" ofType:@"cfg"]; - [fm copyItemAtPath:source - toPath:destinationPath - error:nil]; - ILOG(@"Copied %@ from %@ to %@", cfg, source, destinationPath); - } else { - ILOG(@"emu.cfg already exists at path (%@). Skipping installing default version.", destinationFolder); - } -} - -#pragma mark - Running -- (void)startEmulation { - if(!self.isRunning) { - [super startEmulation]; - [NSThread detachNewThreadSelector:@selector(runDesmume2015RenderThread) toTarget:self withObject:nil]; - } -} - -- (void)runDesmume2015EmuThread { - @autoreleasepool - { - [self desmume2015Main]; - - // Core returns - - // Unlock rendering thread - dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); - - [super stopEmulation]; - } -} - -- (void)runDesmume2015RenderThread { - @autoreleasepool - { - [self.renderDelegate startRenderingOnAlternateThread]; - BOOL success = gles_init(); - assert(success); - [NSThread detachNewThreadSelector:@selector(runDesmume2015EmuThread) toTarget:self withObject:nil]; - - CFAbsoluteTime lastTime = CFAbsoluteTimeGetCurrent(); - - while (!has_init) {} - while ( !shouldStop ) - { - [self.frontBufferCondition lock]; - while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; - [self.frontBufferCondition unlock]; - - CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); - CFTimeInterval deltaTime = now - lastTime; - while ( !shouldStop && !rend_single_frame() ) {} - [self swapBuffers]; - lastTime = now; - } - } -} - -- (void)desmume2015Main { - // #if !TARGET_OS_SIMULATOR - // install_prof_handler(1); - // #endif - - char *Args[3]; - const char *P; - - P = (const char *)[self.diskPath UTF8String]; - Args[0] = "dc"; - Args[1] = "-config"; - Args[2] = P&&P[0]? (char *)malloc(strlen(P)+32):0; - - if(Args[2]) - { - strcpy(Args[2],"config:image="); - strcat(Args[2],P); - } - - MakeCurrentThreadRealTime(); - - int argc = Args[2]? 3:1; - - // Set directories - set_user_config_dir(self.BIOSPath.UTF8String); - set_user_data_dir(self.BIOSPath.UTF8String); - // Shouuld be this, but it looks for BIOS there too and have to copy BIOS into battery saves dir of every game then - // set_user_data_dir(self.batterySavesPath.UTF8String); - - add_system_data_dir(self.BIOSPath.UTF8String); - add_system_config_dir(self.BIOSPath.UTF8String); - - NSString *systemPath = [self.diskPath stringByDeletingLastPathComponent]; - - NSString *configDirs = [NSString stringWithFormat:@"%@", systemPath]; - NSString *dataDirs = [NSString stringWithFormat:@"%@", systemPath]; - - setenv("XDG_CONFIG_DIRS", configDirs.UTF8String, true); - setenv("XDG_DATA_DIRS", dataDirs.UTF8String, true); - - ILOG(@"Config dir is: %s\n", get_writable_config_path("/").c_str()); - ILOG(@"Data dir is: %s\n", get_writable_data_path("/").c_str()); - - common_linux_setup(); - - settings.profile.run_counts=0; - - desmume2015_main(argc, Args); - - dispatch_semaphore_signal(coreWaitForExitSemaphore); -} - -int desmume2015_main(int argc, wchar* argv[]) { - int status = dc_init(argc, argv); - if (status != 0) { - ELOG(@"Desmume2015 dc_init failed with code: %i", status); - return status; - } - - ILOG(@"Desmume2015 init status: %i", status); - - [_current printSettings]; - - has_init = true; - - dc_run(); - - has_init = false; -// _current->shouldStop = true; - - dc_term(); - - return 0; -} - -- (void)setPauseEmulation:(BOOL)flag { - [super setPauseEmulation:flag]; - - if (flag) - { - dc_stop(); - dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; +//} +// +//- (void)copyCFGIfMissing { +// +// NSString *cfg = @"emu.cfg"; +// +//// Whcih one is it again? +// NSString *destinationFolder = self.BIOSPath; +//// NSString *destinationFolder = self.diskPath; +// +// NSFileManager *fm = [NSFileManager defaultManager]; +// NSString *destinationPath = [destinationFolder stringByAppendingPathComponent:cfg]; +// +// if( ![fm fileExistsAtPath:destinationPath] ) { +// NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:@"emu" ofType:@"cfg"]; +// [fm copyItemAtPath:source +// toPath:destinationPath +// error:nil]; +// ILOG(@"Copied %@ from %@ to %@", cfg, source, destinationPath); +// } else { +// ILOG(@"emu.cfg already exists at path (%@). Skipping installing default version.", destinationFolder); +// } +//} +// +//#pragma mark - Running +//- (void)startEmulation { +// if(!self.isRunning) { +// [super startEmulation]; +// [NSThread detachNewThreadSelector:@selector(runDesmume2015RenderThread) toTarget:self withObject:nil]; +// } +//} +// +//- (void)runDesmume2015EmuThread { +// @autoreleasepool +// { +// [self desmume2015Main]; +// +// // Core returns +// +// // Unlock rendering thread +// dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// [super stopEmulation]; +// } +//} +// +//- (void)runDesmume2015RenderThread { +// @autoreleasepool +// { +// [self.renderDelegate startRenderingOnAlternateThread]; +// BOOL success = gles_init(); +// assert(success); +// [NSThread detachNewThreadSelector:@selector(runDesmume2015EmuThread) toTarget:self withObject:nil]; +// +// CFAbsoluteTime lastTime = CFAbsoluteTimeGetCurrent(); +// +// while (!has_init) {} +// while ( !shouldStop ) +// { +// [self.frontBufferCondition lock]; +// while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; +// [self.frontBufferCondition unlock]; +// +// CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); +// CFTimeInterval deltaTime = now - lastTime; +// while ( !shouldStop && !rend_single_frame() ) {} +// [self swapBuffers]; +// lastTime = now; +// } +// } +//} +// +//- (void)desmume2015Main { +// // #if !TARGET_OS_SIMULATOR +// // install_prof_handler(1); +// // #endif +// +// char *Args[3]; +// const char *P; +// +// P = (const char *)[self.diskPath UTF8String]; +// Args[0] = "dc"; +// Args[1] = "-config"; +// Args[2] = P&&P[0]? (char *)malloc(strlen(P)+32):0; +// +// if(Args[2]) +// { +// strcpy(Args[2],"config:image="); +// strcat(Args[2],P); +// } +// +// MakeCurrentThreadRealTime(); +// +// int argc = Args[2]? 3:1; +// +// // Set directories +// set_user_config_dir(self.BIOSPath.UTF8String); +// set_user_data_dir(self.BIOSPath.UTF8String); +// // Shouuld be this, but it looks for BIOS there too and have to copy BIOS into battery saves dir of every game then +// // set_user_data_dir(self.batterySavesPath.UTF8String); +// +// add_system_data_dir(self.BIOSPath.UTF8String); +// add_system_config_dir(self.BIOSPath.UTF8String); +// +// NSString *systemPath = [self.diskPath stringByDeletingLastPathComponent]; +// +// NSString *configDirs = [NSString stringWithFormat:@"%@", systemPath]; +// NSString *dataDirs = [NSString stringWithFormat:@"%@", systemPath]; +// +// setenv("XDG_CONFIG_DIRS", configDirs.UTF8String, true); +// setenv("XDG_DATA_DIRS", dataDirs.UTF8String, true); +// +// ILOG(@"Config dir is: %s\n", get_writable_config_path("/").c_str()); +// ILOG(@"Data dir is: %s\n", get_writable_data_path("/").c_str()); +// +// common_linux_setup(); +// +// settings.profile.run_counts=0; +// +// desmume2015_main(argc, Args); +// +// dispatch_semaphore_signal(coreWaitForExitSemaphore); +//} +// +//int desmume2015_main(int argc, wchar* argv[]) { +// int status = dc_init(argc, argv); +// if (status != 0) { +// ELOG(@"Desmume2015 dc_init failed with code: %i", status); +// return status; +// } +// +// ILOG(@"Desmume2015 init status: %i", status); +// +// [_current printSettings]; +// +// has_init = true; +// +// dc_run(); +// +// has_init = false; +//// _current->shouldStop = true; +// +// dc_term(); +// +// return 0; +//} +// +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +// +// if (flag) +// { +// dc_stop(); +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// } else { +// dc_run(); +// } +//} +// +//- (void)stopEmulation { +// has_init = false; +// +// // TODO: Call desmume2015 stop command here +// dc_term(); +// self->shouldStop = YES; +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // TODO: Call desmume2015 reset command here +// plugins_Reset(true); +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + + if (V("desmume_cpu_mode")) { + // interpreter|jit + char * value = strdup("interpreter"); + return value; + } else if (V("desmume_internal_resolution")) { + // 256x192|512x384|768x576|1024x768|1280x960|1536x1152|1792x1344|2048x1536|2304x1728|2560x1920 + char * value = strdup("1024x768"); + return value; + } else if (V("desmume_num_cores")) { + // CPU cores; 1|2|3|4 + char * value = strdup("4"); + return value; + } else if (V("desmume_pointer_type")) { + // mouse|touch + char * value = strdup("touch"); + return value; + } else if (V("desmume_load_to_memory")) { + // disabled|enabled + char * value = strdup("enabled"); + return value; + } else if (V("desmume_gfx_txthack")) { + // disabled|enabled + char * value = strdup("disabled"); + return value; + } else if (V("desmume_mic_mode")) { + // internal|sample|random|physical + char * value = strdup("physical"); + return value; + } else if (V("desmume_pointer_colour")) { + // white|black|red|blue|yellow + char * value = strdup("blue"); + return value; + } else if (V("desmume_screens_layout")) { + // top/bottom|bottom/top|left/right|right/left|top only|bottom only|quick switch|hybrid/top|hybrid/bottom + char * value = strdup("top/bottom"); + return value; + } else if (V("desmume_hybrid_showboth_screens")) { + // Hybrid layout show both screens; enabled|disabled + char * value = strdup("enabled"); + return value; + } else if (V("desmume_hybrid_layout_scale")) { + // 1|3 + char * value = strdup("3"); + return value; } else { - dc_run(); + ELOG(@"Unprocessed var: %s", variable); + return NULL; } -} - -- (void)stopEmulation { - has_init = false; - - // TODO: Call desmume2015 stop command here - dc_term(); - self->shouldStop = YES; - dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; - - [super stopEmulation]; -} -- (void)resetEmulation { - // TODO: Call desmume2015 reset command here - plugins_Reset(true); - dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; +#undef V + return NULL; } @end diff --git a/Cores/Desmume2015/desmume2015 b/Cores/Desmume2015/desmume2015 index cd89fb7c48..17cbf673ec 160000 --- a/Cores/Desmume2015/desmume2015 +++ b/Cores/Desmume2015/desmume2015 @@ -1 +1 @@ -Subproject commit cd89fb7c48c735cb321311fbce7e6e9889dda1ce +Subproject commit 17cbf673ec0bdcd744c24756c6082b3608cf65d5 diff --git a/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj b/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj index 38cebbb1a4..77c75c9bf3 100644 --- a/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj +++ b/Cores/Dolphin/PVDolphin.xcodeproj/project.pbxproj @@ -7,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - B301797F207C909E0051B93D /* libdolphin-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libdolphin-iOS.a */; }; + B301797F207C909E0051B93D /* libdolphin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libdolphin.a */; }; B3135B9B26E4CAD40047F338 /* PVDolphinCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVDolphinCore.mm */; }; B3135B9C26E4CC290047F338 /* PVDolphinCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVDolphinCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3135B9D26E4CC330047F338 /* PVDolphinCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVDolphinCore+Audio.h */; }; @@ -15,39 +15,20 @@ B3135B9F26E4CC330047F338 /* PVDolphinCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVDolphinCore+Saves.h */; }; B3135BA026E4CC330047F338 /* PVDolphinCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVDolphinCore+Controls.h */; }; B3135BA126E4CC620047F338 /* PVDolphin.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVDolphin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3135BA226E4CC650047F338 /* PVDolphin.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVDolphin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3135BA326E4CD080047F338 /* PVDolphinCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVDolphinCore.mm */; }; - B3135BA426E4CD500047F338 /* PVDolphinCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVDolphinCore+Saves.m */; }; B3135BA526E4CD500047F338 /* PVDolphinCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVDolphinCore+Saves.m */; }; - B3135BA626E4CD5A0047F338 /* PVDolphinCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDolphinCore+Video.m */; }; B3135BA726E4CD5A0047F338 /* PVDolphinCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDolphinCore+Video.m */; }; - B3135BA826E4CD600047F338 /* PVDolphinCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDolphinCore+Audio.m */; }; B3135BA926E4CD600047F338 /* PVDolphinCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDolphinCore+Audio.m */; }; B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; - B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; - B3A3204227209ED700F338F6 /* PVDolphinCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVDolphinCore+Controls.h */; }; B3A3204527209EE100F338F6 /* PVDolphinCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDolphinCore+Controls.mm */; }; - B3A3204627209EE100F338F6 /* PVDolphinCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDolphinCore+Controls.mm */; }; B3A320492720A06D00F338F6 /* DolHost.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A320472720A06C00F338F6 /* DolHost.h */; }; - B3A3204A2720A06D00F338F6 /* DolHost.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A320472720A06C00F338F6 /* DolHost.h */; }; B3A3204B2720A06D00F338F6 /* DolHost.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3A320482720A06D00F338F6 /* DolHost.mm */; }; - B3A3204C2720A06D00F338F6 /* DolHost.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3A320482720A06D00F338F6 /* DolHost.mm */; }; - B3B104AF218F26F400210C39 /* libdolphin-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libdolphin-tvOS.a */; }; - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; @@ -80,22 +61,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447F8D218BEE3F00557ACE /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - B30178D3207C901D0051B93D /* libdolphin-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdolphin-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B30178D3207C901D0051B93D /* libdolphin.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libdolphin.a; sourceTree = BUILT_PRODUCTS_DIR; }; B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - B316BAD026E5C66D0077FE46 /* .git-blame-ignore-revs */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".git-blame-ignore-revs"; sourceTree = ""; }; - B316BAD226E5C66D0077FE46 /* config */ = {isa = PBXFileReference; lastKnownFileType = text; path = config; sourceTree = ""; }; B316BAD426E5C66D0077FE46 /* gameini-ratings-from-wiki.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "gameini-ratings-from-wiki.sh"; sourceTree = ""; }; B316BAD526E5C66D0077FE46 /* check-includes.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "check-includes.py"; sourceTree = ""; }; B316BAD626E5C66D0077FE46 /* CleanFiles.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = CleanFiles.py; sourceTree = ""; }; @@ -12636,8 +12606,6 @@ B316F02C26E5C69B0077FE46 /* GBA-CrystalChronicles-log.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "GBA-CrystalChronicles-log.txt"; sourceTree = ""; }; B316F02D26E5C69B0077FE46 /* GBA-MetroidPrime-log.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "GBA-MetroidPrime-log.txt"; sourceTree = ""; }; B316F02E26E5C69B0077FE46 /* dsp_rom.ds */ = {isa = PBXFileReference; lastKnownFileType = text; path = dsp_rom.ds; sourceTree = ""; }; - B316F02F26E5C69B0077FE46 /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; - B316F03026E5C69C0077FE46 /* .editorconfig */ = {isa = PBXFileReference; lastKnownFileType = text; path = .editorconfig; sourceTree = ""; }; B316F03226E5C69C0077FE46 /* po.targets */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = po.targets; sourceTree = ""; }; B316F03326E5C69C0077FE46 /* po.rules */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = po.rules; sourceTree = ""; }; B316F03426E5C69C0077FE46 /* po.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = po.xml; sourceTree = ""; }; @@ -12676,10 +12644,7 @@ B316F05626E5C69C0077FE46 /* update-source-strings.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "update-source-strings.sh"; sourceTree = ""; }; B316F05726E5C69C0077FE46 /* po.props */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = po.props; sourceTree = ""; }; B316F05826E5C69C0077FE46 /* Readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Readme.md; sourceTree = ""; }; - B316F05926E5C69D0077FE46 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; B316F05A26E5C69D0077FE46 /* Contributing.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Contributing.md; sourceTree = ""; }; - B316F05D26E5C69E0077FE46 /* build.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = build.yml; sourceTree = ""; }; - B316F05E26E5C69E0077FE46 /* .mailmap */ = {isa = PBXFileReference; lastKnownFileType = text; path = .mailmap; sourceTree = ""; }; B316F05F26E5C69F0077FE46 /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; B316F06126E5C69F0077FE46 /* dolphin-emu.spec */ = {isa = PBXFileReference; lastKnownFileType = text; path = "dolphin-emu.spec"; sourceTree = ""; }; B316F06226E5C69F0077FE46 /* Dolphin.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Dolphin.ico; sourceTree = ""; }; @@ -14722,8 +14687,6 @@ B3447EB1218BC69700557ACE /* PVDolphinCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVDolphinCore+Audio.h"; sourceTree = ""; }; B3447EB2218BC69700557ACE /* PVDolphinCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVDolphinCore+Audio.m"; sourceTree = ""; }; B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; - B3447EE6218BEDD200557ACE /* PVDolphin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDolphin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3447F91218BEE3F00557ACE /* libdolphin-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdolphin-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; @@ -14752,29 +14715,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447ECA218BEDD200557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, - B3B104AF218F26F400210C39 /* libdolphin-tvOS.a in Frameworks */, - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447F8C218BEE3F00557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620C20783162009950E4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -14784,7 +14724,7 @@ B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, - B301797F207C909E0051B93D /* libdolphin-iOS.a in Frameworks */, + B301797F207C909E0051B93D /* libdolphin.a in Frameworks */, B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, @@ -14799,11 +14739,6 @@ B316BACF26E5C66D0077FE46 /* dolphin-ios */ = { isa = PBXGroup; children = ( - B316F03026E5C69C0077FE46 /* .editorconfig */, - B316BAD026E5C66D0077FE46 /* .git-blame-ignore-revs */, - B316F05926E5C69D0077FE46 /* .gitignore */, - B316F02F26E5C69B0077FE46 /* .gitmodules */, - B316F05E26E5C69E0077FE46 /* .mailmap */, B316F86326E5C6BC0077FE46 /* CMakeSettings.json */, B316BAE726E5C66D0077FE46 /* AndroidSetup.md */, B316F05A26E5C69D0077FE46 /* Contributing.md */, @@ -14811,8 +14746,6 @@ B316C71326E5C6750077FE46 /* BuildMacOSUniversalBinary.py */, B316BAE626E5C66D0077FE46 /* CMakeLists.txt */, B316F05F26E5C69F0077FE46 /* license.txt */, - B316F05B26E5C69E0077FE46 /* .github */, - B316BAD126E5C66D0077FE46 /* .tx */, B316BAE826E5C66D0077FE46 /* CMake */, B316F06E26E5C69F0077FE46 /* Data */, B316EFF826E5C69A0077FE46 /* docs */, @@ -14825,14 +14758,6 @@ path = "dolphin-ios"; sourceTree = ""; }; - B316BAD126E5C66D0077FE46 /* .tx */ = { - isa = PBXGroup; - children = ( - B316BAD226E5C66D0077FE46 /* config */, - ); - path = .tx; - sourceTree = ""; - }; B316BAD326E5C66D0077FE46 /* Tools */ = { isa = PBXGroup; children = ( @@ -36100,22 +36025,6 @@ path = po; sourceTree = ""; }; - B316F05B26E5C69E0077FE46 /* .github */ = { - isa = PBXGroup; - children = ( - B316F05C26E5C69E0077FE46 /* workflows */, - ); - path = .github; - sourceTree = ""; - }; - B316F05C26E5C69E0077FE46 /* workflows */ = { - isa = PBXGroup; - children = ( - B316F05D26E5C69E0077FE46 /* build.yml */, - ); - path = workflows; - sourceTree = ""; - }; B316F06026E5C69F0077FE46 /* Installer */ = { isa = PBXGroup; children = ( @@ -38375,9 +38284,7 @@ isa = PBXGroup; children = ( B3C7621020783162009950E4 /* PVDolphin.framework */, - B30178D3207C901D0051B93D /* libdolphin-iOS.a */, - B3447EE6218BEDD200557ACE /* PVDolphin.framework */, - B3447F91218BEE3F00557ACE /* libdolphin-tvOS.a */, + B30178D3207C901D0051B93D /* libdolphin.a */, ); name = Products; sourceTree = ""; @@ -38426,16 +38333,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B3447ED5218BEDD200557ACE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3A3204227209ED700F338F6 /* PVDolphinCore+Controls.h in Headers */, - B3135BA226E4CC650047F338 /* PVDolphin.h in Headers */, - B3A3204A2720A06D00F338F6 /* DolHost.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620D20783162009950E4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -38453,9 +38350,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B30178D2207C901D0051B93D /* dolphin-iOS */ = { + B30178D2207C901D0051B93D /* dolphin */ = { isa = PBXNativeTarget; - buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dolphin-iOS" */; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dolphin" */; buildPhases = ( B30178CF207C901D0051B93D /* Sources */, B30178D0207C901D0051B93D /* Frameworks */, @@ -38465,49 +38362,14 @@ ); dependencies = ( ); - name = "dolphin-iOS"; - productName = reicast; - productReference = B30178D3207C901D0051B93D /* libdolphin-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3447EC0218BEDD200557ACE /* PVDolphin-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVDolphin-tvOS" */; - buildPhases = ( - B3447EC1218BEDD200557ACE /* Sources */, - B3447ECA218BEDD200557ACE /* Frameworks */, - B3447ED5218BEDD200557ACE /* Headers */, - B3447EDF218BEDD200557ACE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVDolphin-tvOS"; - productName = PVReicast; - productReference = B3447EE6218BEDD200557ACE /* PVDolphin.framework */; - productType = "com.apple.product-type.framework"; - }; - B3447EE8218BEE3F00557ACE /* dolphin-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "dolphin-tvOS" */; - buildPhases = ( - B3447EE9218BEE3F00557ACE /* Sources */, - B3447F8C218BEE3F00557ACE /* Frameworks */, - B3447F8D218BEE3F00557ACE /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "dolphin-tvOS"; + name = dolphin; productName = reicast; - productReference = B3447F91218BEE3F00557ACE /* libdolphin-tvOS.a */; + productReference = B30178D3207C901D0051B93D /* libdolphin.a */; productType = "com.apple.product-type.library.static"; }; - B3C7620F20783162009950E4 /* PVDolphin-iOS */ = { + B3C7620F20783162009950E4 /* PVDolphin */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDolphin-iOS" */; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDolphin" */; buildPhases = ( B3C7620B20783162009950E4 /* Sources */, B3C7620C20783162009950E4 /* Frameworks */, @@ -38518,7 +38380,7 @@ ); dependencies = ( ); - name = "PVDolphin-iOS"; + name = PVDolphin; productName = PVReicast; productReference = B3C7621020783162009950E4 /* PVDolphin.framework */; productType = "com.apple.product-type.framework"; @@ -38573,10 +38435,8 @@ ); projectRoot = ""; targets = ( - B3C7620F20783162009950E4 /* PVDolphin-iOS */, - B3447EC0218BEDD200557ACE /* PVDolphin-tvOS */, - B30178D2207C901D0051B93D /* dolphin-iOS */, - B3447EE8218BEE3F00557ACE /* dolphin-tvOS */, + B3C7620F20783162009950E4 /* PVDolphin */, + B30178D2207C901D0051B93D /* dolphin */, ); }; /* End PBXProject section */ @@ -38599,14 +38459,6 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - B3447EDF218BEDD200557ACE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EE2218BEDD200557ACE /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620E20783162009950E4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -38625,26 +38477,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447EC1218BEDD200557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3135BA626E4CD5A0047F338 /* PVDolphinCore+Video.m in Sources */, - B3A3204C2720A06D00F338F6 /* DolHost.mm in Sources */, - B3135BA426E4CD500047F338 /* PVDolphinCore+Saves.m in Sources */, - B3A3204627209EE100F338F6 /* PVDolphinCore+Controls.mm in Sources */, - B3135BA326E4CD080047F338 /* PVDolphinCore.mm in Sources */, - B3135BA826E4CD600047F338 /* PVDolphinCore+Audio.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EE9218BEE3F00557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620B20783162009950E4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -38921,6 +38753,7 @@ B30178DA207C901D0051B93D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -38935,6 +38768,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -38942,6 +38777,7 @@ B30178DB207C901D0051B93D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -38956,6 +38792,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -39020,7 +38858,7 @@ "\"$(SRCROOT)/PVDolphinCore/Compatibility\"", "\"$(SRCROOT)/dolphin-ios/Source/Core\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_CFLAGS = ( "$(inherited)", @@ -39050,6 +38888,7 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -39067,7 +38906,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDolphin/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -39077,47 +38916,16 @@ PRODUCT_NAME = PVDolphin; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Archive; }; - B324C5032191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVDolphin/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDolphin"; - PRODUCT_NAME = PVDolphin; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; B324C5042191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -39132,141 +38940,12 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Archive; }; - B324C5052191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; - B3447EE4218BEDD200557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVDolphin/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDolphin"; - PRODUCT_NAME = PVDolphin; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447EE5218BEDD200557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVDolphin/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDolphin"; - PRODUCT_NAME = PVDolphin; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - B3447F8F218BEE3F00557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447F90218BEE3F00557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; B3C7621620783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; @@ -39329,7 +39008,7 @@ "\"$(SRCROOT)/PVDolphinCore/Compatibility\"", "\"$(SRCROOT)/dolphin-ios/Source/Core\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; @@ -39401,7 +39080,7 @@ "\"$(SRCROOT)/PVDolphinCore/Compatibility\"", "\"$(SRCROOT)/dolphin-ios/Source/Core\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( @@ -39432,6 +39111,7 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -39449,7 +39129,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDolphin/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -39459,6 +39139,8 @@ PRODUCT_NAME = PVDolphin; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -39466,6 +39148,7 @@ B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -39483,7 +39166,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDolphin/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -39493,6 +39176,8 @@ PRODUCT_NAME = PVDolphin; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -39500,7 +39185,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dolphin-iOS" */ = { + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dolphin" */ = { isa = XCConfigurationList; buildConfigurations = ( B30178DA207C901D0051B93D /* Debug */, @@ -39510,26 +39195,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVDolphin-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447EE4218BEDD200557ACE /* Debug */, - B3447EE5218BEDD200557ACE /* Release */, - B324C5032191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "dolphin-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447F8F218BEE3F00557ACE /* Debug */, - B3447F90218BEE3F00557ACE /* Release */, - B324C5052191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVDolphin" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -39540,7 +39205,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDolphin-iOS" */ = { + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDolphin" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C7621920783162009950E4 /* Debug */, diff --git a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme b/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme deleted file mode 100644 index dc284006b2..0000000000 --- a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme b/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme deleted file mode 100644 index f868ab7064..0000000000 --- a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme b/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme deleted file mode 100644 index dfab77b214..0000000000 --- a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme b/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme deleted file mode 100644 index 6b5b16f37e..0000000000 --- a/Cores/Dolphin/PVDolphin.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Dolphin/PVDolphin/PVDolphin.h b/Cores/Dolphin/PVDolphin/PVDolphin.h index 3675160587..2b53f768dd 100644 --- a/Cores/Dolphin/PVDolphin/PVDolphin.h +++ b/Cores/Dolphin/PVDolphin/PVDolphin.h @@ -6,7 +6,7 @@ // Copyright © 2021 Provenance. All rights reserved. // -#import +#import //! Project version number for PVDolphin. FOUNDATION_EXPORT double PVDolphinVersionNumber; diff --git a/Cores/Dolphin/PVDolphinCore/DolHost.h b/Cores/Dolphin/PVDolphinCore/DolHost.h index 499a036c02..26c235acac 100755 --- a/Cores/Dolphin/PVDolphinCore/DolHost.h +++ b/Cores/Dolphin/PVDolphinCore/DolHost.h @@ -24,7 +24,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#import +#import //#import "OEGCSystemResponderClient.h" //#import "Wii/OEWiiSystemResponderClient.h" diff --git a/Cores/DosBox/BuildFlags.xcconfig b/Cores/DosBox/BuildFlags.xcconfig index 8df90ae642..9365710cd6 100644 --- a/Cores/DosBox/BuildFlags.xcconfig +++ b/Cores/DosBox/BuildFlags.xcconfig @@ -7,8 +7,14 @@ // // All -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) -OTHER_CFLAGS = $(inherited) +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) C_DYNREC=1 _FILE_OFFSET_BITS=64 __LIBRETRO__ +GCC_PREPROCESSOR_DEFINITIONS[configuration=Debug] = $(inherited) DEBUG=1 +GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = $(inherited) NDEBUG=1 + +// DISABLE_DYNAREC=1 +OTHER_CFLAGS = $(inherited) -ObjC -Wno-ignored-optimization-argument -Wno-unknown-warning-option -fomit-frame-pointer -fno-exceptions -fno-non-call-exceptions -Wno-address-of-packed-member -Wno-format -Wno-switch -Wno-psabi -fpic -fvisibility=hidden -ffunction-sections -Iinclude +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load -lpthread + // Device GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 diff --git a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Audio.m b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Audio.m index 19e3f0f16d..aef7f0c217 100644 --- a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Audio.m +++ b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Audio.m @@ -11,7 +11,7 @@ @implementation PVDosBoxCore (Audio) - (NSTimeInterval)frameInterval { - return isNTSC ? 60 : 50; + return 60; } - (NSUInteger)channelCount { @@ -19,7 +19,7 @@ - (NSUInteger)channelCount { } - (double)audioSampleRate { - return sampleRate; + return 44100; } @end diff --git a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.h b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.h index a43905a35b..40ec819dc8 100644 --- a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.h +++ b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.h @@ -10,16 +10,16 @@ NS_ASSUME_NONNULL_BEGIN -@interface PVDosBoxCore (Controls) +@interface PVDosBoxCore (Controls) - (void)initControllBuffers; - (void)pollControllers; #pragma mark - Control -- (void)didPushGameCubeButton:(enum PVGameCubeButton)button forPlayer:(NSInteger)player; -- (void)didReleaseGameCubeButton:(enum PVGameCubeButton)button forPlayer:(NSInteger)player; -- (void)didMoveGameCubeJoystickDirection:(enum PVGameCubeButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; - (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; - (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; diff --git a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.mm b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.mm index 8a63fda020..766bcbcfcb 100644 --- a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.mm +++ b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Controls.mm @@ -32,7 +32,7 @@ #define DC_AXIS_X (0X20000) #define DC_AXIS_Y (0X20001) -static const int GameCubeMap[] = { +static const int DOSMap[] = { DC_DPAD_UP, DC_DPAD_DOWN, DC_DPAD_LEFT, DC_DPAD_RIGHT, DC_BTN_A, DC_BTN_B, DC_BTN_X, DC_BTN_Y, DC_AXIS_LT, DC_AXIS_RT, @@ -139,34 +139,34 @@ - (void)pollControllers { } } --(void)didPushGameCubeButton:(enum PVGameCubeButton)button forPlayer:(NSInteger)player { +-(void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { // if(_isInitialized) // { // } } --(void)didReleaseGameCubeButton:(enum PVGameCubeButton)button forPlayer:(NSInteger)player { +-(void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { // if(_isInitialized) // { // } } -- (void)didMoveGameCubeJoystickDirection:(enum PVGameCubeButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { // if(_isInitialized) // { // } } -(void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { - [self didMoveGameCubeJoystickDirection:(enum PVGameCubeButton)button withValue:value forPlayer:player]; + [self didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:value forPlayer:player]; } - (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { - [self didPushGameCubeButton:(PVGameCubeButton)button forPlayer:player]; + [self didPushDOSButton:(PVDOSButton)button forPlayer:player]; } - (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { - [self didReleaseGameCubeButton:(PVGameCubeButton)button forPlayer:player]; + [self didReleaseDOSButton:(PVDOSButton)button forPlayer:player]; } diff --git a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Saves.m b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Saves.m index f76a6feb45..4a5d0617e7 100644 --- a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Saves.m +++ b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Saves.m @@ -13,7 +13,7 @@ @implementation PVDosBoxCore (Saves) #pragma mark - Properties -(BOOL)supportsSaveStates { - return YES; + return NO; } #pragma mark - Methods diff --git a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Video.m b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Video.m index 928ef63ae9..e0895db99b 100644 --- a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Video.m +++ b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore+Video.m @@ -9,78 +9,89 @@ #import "PVDosBoxCore+Video.h" #import "PVDosBoxCore.h" +#if !__has_include() #import #import #import +#else +#import +#import +#endif @implementation PVDosBoxCore (Video) # pragma mark - Methods -- (void)videoInterrupt { - //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); - - //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); -} - -- (void)swapBuffers { - [self.renderDelegate didRenderFrameOnAlternateThread]; -} - -- (void)executeFrameSkippingFrame:(BOOL)skip { - - if (![self isEmulationPaused]) - { - } - //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - - //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); -} - -- (void)executeFrame { - [self executeFrameSkippingFrame:NO]; -} +//- (void)videoInterrupt { +// //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)swapBuffers { +// [self.renderDelegate didRenderFrameOnAlternateThread]; +//} +// +//- (void)executeFrameSkippingFrame:(BOOL)skip { +// +// if (![self isEmulationPaused]) +// { +// } +// //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// +// //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)executeFrame { +// [self executeFrameSkippingFrame:NO]; +//} # pragma mark - Properties -- (CGSize)bufferSize { - return CGSizeMake(1024, 512); -} - -- (CGRect)screenRect { - return CGRectMake(0, 0, self.videoWidth, self.videoHeight); -} - -- (CGSize)aspectSize { - return CGSizeMake(self.videoWidth, self.videoHeight); -} - -- (BOOL)rendersToOpenGL { - return YES; -} - -- (BOOL)isDoubleBuffered { - return YES; -} - -- (const void *)videoBuffer { - return NULL; -} - -- (GLenum)pixelFormat { - return GL_RGBA; -} - -- (GLenum)pixelType { - return GL_UNSIGNED_BYTE; -} +//- (CGSize)bufferSize { +// CGSize size = CGSizeMake(av_info.geometry.max_width, av_info.geometry.max_height); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} +// +//- (CGRect)screenRect { +// CGRect rect = CGRectMake(0, 0, av_info.geometry.base_width, av_info.geometry.base_height); +// DLOG(@"<%i, %i>", rect.size.width, rect.size.height); +// return rect; +//} +// +//- (CGSize)aspectSize { +// CGSize size = CGSizeMake(1, av_info.geometry.aspect_ratio); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} + +//- (BOOL)rendersToOpenGL { +// return YES; +//} +// +//- (BOOL)isDoubleBuffered { +// return YES; +//} -- (GLenum)internalPixelFormat { - return GL_RGBA; -} +//- (const void *)videoBuffer { +// return NULL; +//} -- (GLenum)depthFormat { - // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 - return GL_DEPTH_COMPONENT24; -} +//- (GLenum)pixelFormat { +// return GL_RGBA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +// +//- (GLenum)depthFormat { +// // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 +// return GL_DEPTH_COMPONENT24; +//} @end diff --git a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.h b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.h index b9c4e6909a..843dea7eaa 100644 --- a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.h +++ b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.h @@ -10,35 +10,34 @@ #import #import #import +#import #define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; #define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; -@interface PVDosBoxCore : PVEmulatorCore -{ - uint8_t padData[4][PVDreamcastButtonCount]; - int8_t xAxis[4]; - int8_t yAxis[4]; - // int videoWidth; - // int videoHeight; - // int videoBitDepth; - int videoDepthBitDepth; // eh - - float sampleRate; - - BOOL isNTSC; -@public - dispatch_queue_t _callbackQueue; +__attribute__((visibility("default"))) +@interface PVDosBoxCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; } - -@property (nonatomic, assign) int videoWidth; -@property (nonatomic, assign) int videoHeight; -@property (nonatomic, assign) int videoBitDepth; - -- (void) swapBuffers; -- (const char *) getBundlePath; -- (void) SetScreenSize:(int)width :(int)height; +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; @end - -extern __weak PVDosBoxCore *_current; diff --git a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.mm b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.mm index 0601e6f6d4..bd0348de89 100644 --- a/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.mm +++ b/Cores/DosBox/PBDosBoxCore/Core/PVDosBoxCore.mm @@ -21,8 +21,6 @@ #define SIZESOUNDBUFFER 48000 / 60 * 4 #define OpenEmu 1 -__weak PVDosBoxCore *_current = 0; - #pragma mark - Private @interface PVDosBoxCore() { @@ -34,28 +32,11 @@ @interface PVDosBoxCore() { @implementation PVDosBoxCore { - uint16_t *_soundBuffer; - atomic_bool _isInitialized; - float _frameInterval; - - NSString *autoLoadStatefileName; } - (instancetype)init { if (self = [super init]) { - _videoWidth = 640; - _videoHeight = 480; - _videoBitDepth = 32; // ignored - videoDepthBitDepth = 0; // TODO - - sampleRate = 44100; - - isNTSC = YES; - _frameInterval = 60; - - dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); - - _callbackQueue = dispatch_queue_create("org.provenance-emu.dosbox.CallbackHandlerQueue", queueAttributes); + pitch_shift = 4; } _current = self; @@ -67,91 +48,219 @@ - (void)dealloc { } #pragma mark - PVEmulatorCore -- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { - NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; - const char *dataPath; - - [self initControllBuffers]; - - // TODO: Proper path - NSString *configPath = self.saveStatesPath; - dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; - - [[NSFileManager defaultManager] createDirectoryAtPath:configPath - withIntermediateDirectories:YES - attributes:nil - error:nil]; - - NSString *batterySavesDirectory = self.batterySavesPath; - [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory - withIntermediateDirectories:YES - attributes:nil - error:NULL]; - - return YES; -} +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// BOOL loaded = [super loadFileAtPath:path completionHandler:error]; +// +// return loaded; +//} #pragma mark - Running -- (void)startEmulation { - if (!_isInitialized) - { +//- (void)startEmulation { +// if (!_isInitialized) +// { // [self.renderDelegate willRenderFrameOnAlternateThread]; - _isInitialized = true; +// _isInitialized = true; // _frameInterval = dol_host->GetFrameInterval(); - } - [super startEmulation]; - +// } +// [super startEmulation]; +// //Disable the OE framelimiting // [self.renderDelegate suspendFPSLimiting]; // if(!self.isRunning) { // [super startEmulation]; //// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; // } -} - -- (void)runReicastEmuThread { - @autoreleasepool - { -// [self reicastMain]; - - // Core returns - - // Unlock rendering thread -// dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); - - [super stopEmulation]; - } -} - -- (void)setPauseEmulation:(BOOL)flag { - [super setPauseEmulation:flag]; -} - -- (void)stopEmulation { - _isInitialized = false; - - self->shouldStop = YES; -// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); -// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; - - [super stopEmulation]; -} +//} -- (void)resetEmulation { - // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; -} +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} //# pragma mark - Cheats //- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { //} // //- (BOOL)supportsRumble { return NO; } -//- (BOOL)supportsCheatCodes { return NO; } +//- (BOOL)supportsCheatCode { return NO; } +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + +#define V(x) strcmp(variable, x) == 0 + if (V("dosbox_pure_force60fps")) { + // true|false + // "Enable this to force output at 60FPS. Use this if you encounter screen tearing or vsync issues.", NULL + + char *value = strdup("true"); + return value; + } else if (V("dosbox_pure_perfstats")) { + // none,simple,detailed + char *value = strdup("none"); + return value; + } else if (V("dosbox_pure_perfstats")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("dosbox_pure_savestate")) { + // on,rewind,disable + char *value = strdup("on"); + return value; + } else if (V("dosbox_pure_on_screen_keyboard")) { + // true,false + // Enable the On Screen Keyboard feature which can be activated with the L3 button on the controller. + char *value = strdup("true"); + return value; + } else if (V("dosbox_pure_audiorate")) { + // "This should match the frontend audio output rate (Hz) setting.", NULL, +// char * value = [[NSString stringWithFormat:@"%i", self.audioSampleRate] cStringUsingEncoding:NSUTF8StringEncoding]; + char *value = strdup("44100"); + return value; + } else if (V("dosbox_pure_machine")) { +// { "svga", "SVGA (Super Video Graphics Array) (default)" }, +// { "vga", "VGA (Video Graphics Array)" }, +// { "ega", "EGA (Enhanced Graphics Adapter" }, +// { "cga", "CGA (Color Graphics Adapter)" }, +// { "tandy", "Tandy (Tandy Graphics Adapter" }, +// { "hercules", "Hercules (Hercules Graphics Card)" }, +// { "pcjr", "PCjr" }, + char *value = strdup("svga"); + return value; + } else if (V("dosbox_pure_cga")) { + char *value = strdup("early_auto"); + return value; + } else if (V("dosbox_pure_hercules")) { + char *value = strdup("white"); + return value; + } else if (V("dosbox_pure_svga")) { + char *value = strdup("svga_s3"); + return value; + } else if (V("dosbox_pure_aspect_correction")) { + char *value = strdup("false"); + return value; + } else if (V("dosbox_pure_memory_size")) { + char *value = strdup("16"); + return value; + } else if (V("dosbox_pure_cpu_type")) { + char *value = strdup("pentium_slow"); // auto + return value; + } else if (V("dosbox_pure_cpu_core")) { + char *value = strdup("auto"); + return value; + } else if (V("dosbox_pure_keyboard_layout")) { + char *value = strdup("us"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + + /* + "dosbox_pure_mouse_wheel", + "Bind Mouse Wheel To Key", NULL, + "Bind mouse wheel up and down to two keyboard keys to be able to use it in DOS games.", NULL, + "Input", + { + { "67/68", "Left-Bracket/Right-Bracket" }, + { "72/71", "Comma/Period" }, + { "79/82", "Page-Up/Page-Down" }, + { "78/81", "Home/End" }, + { "80/82", "Delete/Page-Down" }, + { "64/65", "Minus/Equals" }, + { "69/70", "Semicolon/Quote" }, + { "99/100", "Numpad Minus/Plus" }, + { "97/98", "Numpad Divide/Multiply" }, + { "84/85", "Up/Down" }, + { "83/86", "Left/Right" }, + { "11/13", "Q/E" }, + { "none", "Disable" }, + }, + "67/68" + + "dosbox_pure_cycles", + "Emulated Performance", NULL, + "The raw performance that DOSBox will try to emulate." "\n\n", NULL, //end of Performance section + "Performance", + { + { "auto", "AUTO - DOSBox will try to detect performance needs (default)" }, + { "max", "MAX - Emulate as many instructions as possible" }, + { "315", "8086/8088, 4.77 MHz from 1980 (315 cps)" }, + { "1320", "286, 6 MHz from 1982 (1320 cps)" }, + { "2750", "286, 12.5 MHz from 1985 (2750 cps)" }, + { "4720", "386, 20 MHz from 1987 (4720 cps)" }, + { "7800", "386DX, 33 MHz from 1989 (7800 cps)" }, + { "13400", "486DX, 33 MHz from 1990 (13400 cps)" }, + { "26800", "486DX2, 66 MHz from 1992 (26800 cps)" }, + { "77000", "Pentium, 100 MHz from 1995 (77000 cps)" }, + { "200000", "Pentium II, 300 MHz from 1997 (200000 cps)" }, + { "500000", "Pentium III, 600 MHz from 1999 (500000 cps)" }, + { "1000000", "AMD Athlon, 1.2 GHz from 2000 (1000000 cps)" }, + }, + + "dosbox_pure_cpu_type", + "CPU Type", NULL, + "Emulated CPU type. Auto is the fastest choice." "\n" + "Games that require specific CPU type selection:" "\n" + "386 (prefetch): X-Men: Madness in The Murderworld, Terminator 1, Contra, Fifa International Soccer 1994" "\n" + "486 (slow): Betrayal in Antara" "\n" + "Pentium (slow): Fifa International Soccer 1994, Windows 95/Windows 3.x games" "\n\n", NULL, //end of System section + "System", + { + { "auto", "Auto - Mixed feature set with maximum performance and compatibility" }, + { "386", "386 - 386 instruction with fast memory access" }, + { "386_slow", "386 (slow) - 386 instruction set with memory privilege checks" }, + { "386_prefetch", "386 (prefetch) - With prefetch queue emulation (only on 'auto' and 'normal' core)" }, + { "486_slow", "486 (slow) - 486 instruction set with memory privilege checks" }, + { "pentium_slow", "Pentium (slow) - 586 instruction set with memory privilege checks" }, + }, + "auto" + }, + { + "dosbox_pure_cpu_core", + "Advanced > CPU Core", NULL, + "Emulation method (DOSBox CPU core) used.", NULL, + "System", + { + #if defined(C_DYNAMIC_X86) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynamic_x86 implementation)" }, + #elif defined(C_DYNREC) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynrec implementation)" }, + #endif + { "normal", "Normal (interpreter)" }, + { "simple", "Simple (interpreter optimized for old real-mode games)" }, + }, + #if defined(C_DYNAMIC_X86) || defined(C_DYNREC) + "auto" + #else + "normal" + #endif + }, + */ +#undef V + return NULL; +} + @end diff --git a/Cores/DosBox/PBDosBoxCore/DosBoxGameCore.h b/Cores/DosBox/PBDosBoxCore/DosBoxGameCore.h deleted file mode 100755 index b2b4bb0d56..0000000000 --- a/Cores/DosBox/PBDosBoxCore/DosBoxGameCore.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright (c) 2013, OpenEmu Team - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the OpenEmu Team nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import -#import -#import -#import -#import "OEGCSystemResponderClient.h" -#import "Wii/OEWiiSystemResponderClient.h" - -@class OERingBuffer; - -OE_EXPORTED_CLASS -@interface DolphinGameCore : OEGameCore - -- (void) swapBuffers; -- (const char *) getBundlePath; -- (void) SetScreenSize:(int)width :(int)height; - -@end - -extern DolphinGameCore *_current; diff --git a/Cores/DosBox/PBDosBoxCore/DosBoxGameCore.mm b/Cores/DosBox/PBDosBoxCore/DosBoxGameCore.mm deleted file mode 100755 index 598be40094..0000000000 --- a/Cores/DosBox/PBDosBoxCore/DosBoxGameCore.mm +++ /dev/null @@ -1,410 +0,0 @@ -/* - Copyright (c) 2013, OpenEmu Team - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the OpenEmu Team nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - What doesn't work: - I got everything in GC working - - */ - -// Changed includes to -// Added iRenderFBO to Videoconfig, OGL postprocessing and renderer -// Added SetState to device.h for input and FullAnalogControl -// Added Render on alternate thread in Core.cpp in EmuThread() Video Thread -// Added Render on alternate thread in Cope.cpp in CPUThread() to support single thread mode CPU/GPU - -#import "DolphinGameCore.h" -#include "DolHost.h" -#include "AudioCommon/SoundStream.h" -#include "OpenEmuAudioStream.h" -#include - -#import -#include -#include - -#define SAMPLERATE 48000 -#define SIZESOUNDBUFFER 48000 / 60 * 4 -#define OpenEmu 1 - -@interface DolphinGameCore () -@property (copy) NSString *filePath; -@end - -DolphinGameCore *_current = 0; - -extern std::unique_ptr g_sound_stream; - -@implementation DolphinGameCore -{ - DolHost *dol_host; - - uint16_t *_soundBuffer; - bool _isWii; - atomic_bool _isInitialized; - float _frameInterval; - - NSString *autoLoadStatefileName; - NSString *_dolphinCoreModule; - OEIntSize _dolphinCoreAspect; - OEIntSize _dolphinCoreScreen; -} - -- (instancetype)init -{ - if(self = [super init]){ - dol_host = DolHost::GetInstance(); - } - - _current = self; - - return self; -} - -- (void)dealloc -{ - delete dol_host; - free(_soundBuffer); -} - -# pragma mark - Execution -- (BOOL)loadFileAtPath:(NSString *)path -{ - self.filePath = path; - - if([[self systemIdentifier] isEqualToString:@"openemu.system.gc"]) - { - _dolphinCoreModule = @"gc"; - _isWii = false; - _dolphinCoreAspect = OEIntSizeMake(4, 3); - _dolphinCoreScreen = OEIntSizeMake(640, 480); - } - else - { - _dolphinCoreModule = @"Wii"; - _isWii = true; - _dolphinCoreAspect = OEIntSizeMake(16,9); - _dolphinCoreScreen = OEIntSizeMake(854, 480); - } - - dol_host->Init([[self supportDirectoryPath] fileSystemRepresentation], [path fileSystemRepresentation] ); - - usleep(5000); - return YES; -} - -- (void)setPauseEmulation:(BOOL)flag -{ - dol_host->Pause(flag); - - [super setPauseEmulation:flag]; -} - -- (void)stopEmulation -{ - _isInitialized = false; - - dol_host->RequestStop(); - - [super stopEmulation]; -} - -- (void)startEmulation -{ - if (!_isInitialized) - { - [self.renderDelegate willRenderFrameOnAlternateThread]; - - dol_host->SetPresentationFBO((int)[[self.renderDelegate presentationFramebuffer] integerValue]); - - if(dol_host->LoadFileAtPath()) - _isInitialized = true; - - _frameInterval = dol_host->GetFrameInterval(); - - } - [super startEmulation]; - - //Disable the OE framelimiting - [self.renderDelegate suspendFPSLimiting]; -} - -- (void)resetEmulation -{ - dol_host->Reset(); -} - -- (void)executeFrame -{ - if (![self isEmulationPaused]) - { - if(!dol_host->CoreRunning()) { - dol_host->Pause(false); - } - - dol_host->UpdateFrame(); - } -} - -# pragma mark - Nand directory Callback -- (const char *)getBundlePath -{ - NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; - const char *dataPath; - dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; - - return dataPath; -} - -# pragma mark - Video -- (OEGameCoreRendering)gameCoreRendering -{ - return OEGameCoreRenderingOpenGL3Video; -} - -- (BOOL)hasAlternateRenderingThread -{ - return YES; -} - -- (BOOL)needsDoubleBufferedFBO -{ - return NO; -} - -- (const void *)videoBuffer -{ - return NULL; -} - -- (NSTimeInterval)frameInterval -{ - return _frameInterval ?: 60; -} - -- (OEIntSize)bufferSize -{ - return _dolphinCoreScreen; -} - -- (OEIntSize)aspectSize -{ - return _dolphinCoreAspect; -} - -- (void) SetScreenSize:(int)width :(int)height -{ -} - -- (GLenum)pixelFormat -{ - return GL_RGBA; -} - -- (GLenum)pixelType -{ - return GL_UNSIGNED_BYTE; -} - -- (GLenum)internalPixelFormat -{ - return GL_RGBA; -} - -# pragma mark - Audio -- (NSUInteger)channelCount -{ - return 2; -} - -- (double)audioSampleRate -{ - return OE_SAMPLERATE; -} - -- (id)audioBufferAtIndex:(NSUInteger)index -{ - return self; -} - -- (NSUInteger)length -{ - return OE_SIZESOUNDBUFFER; -} - -- (NSUInteger)read:(void *)buffer maxLength:(NSUInteger)len -{ - if (_isInitialized && g_sound_stream) - return static_cast(g_sound_stream.get())->readAudio(buffer, (int)len); - return 0; -} - -- (NSUInteger)write:(const void *)buffer maxLength:(NSUInteger)length -{ - return 0; -} - -# pragma mark - Save States -- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block -{ - // we need to make sure we are initialized before attempting to save a state - while (! _isInitialized) - usleep (1000); - - block(dol_host->SaveState([fileName UTF8String]),nil); - -} - -- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block -{ - if (!_isInitialized) - { - //Start a separate thread to load - autoLoadStatefileName = fileName; - - [NSThread detachNewThreadSelector:@selector(autoloadWaitThread) toTarget:self withObject:nil]; - block(true, nil); - } else { - block(dol_host->LoadState([fileName UTF8String]),nil); - } -} - -- (void)autoloadWaitThread -{ - @autoreleasepool - { - //Wait here until we get the signal for full initialization - while (!_isInitialized) - usleep (100); - - dol_host->LoadState([autoLoadStatefileName UTF8String]); - } -} - -# pragma mark - Input GC -- (oneway void)didMoveGCJoystickDirection:(OEGCButton)button withValue:(CGFloat)value forPlayer:(NSUInteger)player -{ - if(_isInitialized) - { - dol_host->SetAxis(button, value, (int)player); - } -} - -- (oneway void)didPushGCButton:(OEGCButton)button forPlayer:(NSUInteger)player -{ - if(_isInitialized) - { - dol_host->setButtonState(button, 1, (int)player); - } -} - -- (oneway void)didReleaseGCButton:(OEGCButton)button forPlayer:(NSUInteger)player -{ - if(_isInitialized) - { - dol_host->setButtonState(button, 0, (int)player); - } -} - -# pragma mark - Input Wii -- (oneway void)didMoveWiiJoystickDirection:(OEWiiButton)button withValue:(CGFloat)value forPlayer:(NSUInteger)player -{ - if(_isInitialized) - { - dol_host->SetAxis(button, value, (int)player); - } -} - -- (oneway void)didPushWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player -{ - if(_isInitialized) - { - if (button > OEWiiButtonCount) { - dol_host->processSpecialKeys(button , (int)player); - } else { - dol_host->setButtonState(button, 1, (int)player); - } - } -} - -- (oneway void)didReleaseWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player -{ - if(_isInitialized && button != OEWiimoteSideways && button != OEWiimoteUpright) - { - dol_host->setButtonState(button, 0, (int)player); - } -} - -//- (oneway void) didMoveWiiAccelerometer:(OEWiiAccelerometer)accelerometer withValue:(CGFloat)X withValue:(CGFloat)Y withValue:(CGFloat)Z forPlayer:(NSUInteger)player -//{ -// if(_isInitialized) -// { -// if (accelerometer == OEWiiNunchuk) -// { -// dol_host->setNunchukAccel(X,Y,Z,(int)player); -// } -// else -// { -// dol_host->setWiimoteAccel(X,Y,Z,(int)player); -// } -// } -//} - -//- (oneway void)didMoveWiiIR:(OEWiiButton)button IRinfo:(OEwiimoteIRinfo)IRinfo forPlayer:(NSUInteger)player -//{ -// if(_isInitialized) -// { -// dol_host->setIRdata(IRinfo ,(int)player); -// } -//} - -- (oneway void)didChangeWiiExtension:(OEWiimoteExtension)extension forPlayer:(NSUInteger)player -{ - if(_isInitialized) - { - dol_host->changeWiimoteExtension(extension, (int)player); - } -} - -- (oneway void)IRMovedAtPoint:(int)X withValue:(int)Y -{ -// if (_isInitialized) -// { -// int dX = (1023.0 / 854.0) * X; -// int dY = (767.0 / 480.0) * Y; -// -//// dol_host->DisplayMessage([[NSString stringWithFormat:@"X: %d, Y: %d",dX,dY ] UTF8String]); -// -// dol_host->SetIR(0, dX,dY); -// } -} - -# pragma mark - Cheats -- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled -{ - dol_host->SetCheat([code UTF8String], [type UTF8String], enabled); -} -@end diff --git a/Cores/DosBox/PVDosBox.xcodeproj/project.pbxproj b/Cores/DosBox/PVDosBox.xcodeproj/project.pbxproj index 569f457bef..b8222bf08f 100644 --- a/Cores/DosBox/PVDosBox.xcodeproj/project.pbxproj +++ b/Cores/DosBox/PVDosBox.xcodeproj/project.pbxproj @@ -7,24 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - B301797F207C909E0051B93D /* libdos-box-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libdos-box-iOS.a */; }; + B301797F207C909E0051B93D /* libdos-box.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libdos-box.a */; }; B3135B9B26E4CAD40047F338 /* PVDosBoxCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVDosBoxCore.mm */; }; B3135B9C26E4CC290047F338 /* PVDosBoxCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVDosBoxCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3135B9D26E4CC330047F338 /* PVDosBoxCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVDosBoxCore+Audio.h */; }; - B3135B9E26E4CC330047F338 /* PVDosBoxCore+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EAD218BC5C500557ACE /* PVDosBoxCore+Video.h */; }; - B3135B9F26E4CC330047F338 /* PVDosBoxCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVDosBoxCore+Saves.h */; }; - B3135BA026E4CC330047F338 /* PVDosBoxCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVDosBoxCore+Controls.h */; }; B3135BA126E4CC620047F338 /* PVDosBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVDosBox.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3135BA226E4CC650047F338 /* PVDosBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVDosBox.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3135BA326E4CD080047F338 /* PVDosBoxCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVDosBoxCore.mm */; }; - B3135BA426E4CD500047F338 /* PVDosBoxCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVDosBoxCore+Saves.m */; }; - B3135BA526E4CD500047F338 /* PVDosBoxCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVDosBoxCore+Saves.m */; }; - B3135BA626E4CD5A0047F338 /* PVDosBoxCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDosBoxCore+Video.m */; }; - B3135BA726E4CD5A0047F338 /* PVDosBoxCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDosBoxCore+Video.m */; }; - B3135BA826E4CD600047F338 /* PVDosBoxCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDosBoxCore+Audio.m */; }; - B3135BA926E4CD600047F338 /* PVDosBoxCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDosBoxCore+Audio.m */; }; B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B3344A802859D5CF006E6B3A /* core_normal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A1A2859D566006E6B3A /* core_normal.cpp */; }; B3344A812859D5CF006E6B3A /* dosbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A502859D566006E6B3A /* dosbox.cpp */; }; @@ -131,134 +118,33 @@ B3344AE62859D5FF006E6B3A /* shell_cmds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A4E2859D566006E6B3A /* shell_cmds.cpp */; }; B3344AE72859D5FF006E6B3A /* shell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A4F2859D566006E6B3A /* shell.cpp */; }; B3344AE82859D5FF006E6B3A /* shell_batch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A4C2859D566006E6B3A /* shell_batch.cpp */; }; - B3344AE92859D664006E6B3A /* int10_pal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A6A2859D566006E6B3A /* int10_pal.cpp */; }; - B3344AEA2859D664006E6B3A /* gus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449C92859D566006E6B3A /* gus.cpp */; }; - B3344AEB2859D664006E6B3A /* dos_keyboard_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449FA2859D566006E6B3A /* dos_keyboard_layout.cpp */; }; - B3344AEC2859D664006E6B3A /* vga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449EB2859D566006E6B3A /* vga.cpp */; }; - B3344AED2859D664006E6B3A /* drive_virtual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449FE2859D566006E6B3A /* drive_virtual.cpp */; }; - B3344AEE2859D664006E6B3A /* shell_cmds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A4E2859D566006E6B3A /* shell_cmds.cpp */; }; - B3344AEF2859D664006E6B3A /* bios_keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A792859D566006E6B3A /* bios_keyboard.cpp */; }; - B3344AF02859D664006E6B3A /* render_scalers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A5A2859D566006E6B3A /* render_scalers.cpp */; }; - B3344AF12859D664006E6B3A /* keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449E92859D566006E6B3A /* keyboard.cpp */; }; - B3344AF22859D664006E6B3A /* messages.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449B32859D566006E6B3A /* messages.cpp */; }; - B3344AF32859D664006E6B3A /* bios_disk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A7A2859D566006E6B3A /* bios_disk.cpp */; }; - B3344AF42859D664006E6B3A /* core_prefetch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A2B2859D566006E6B3A /* core_prefetch.cpp */; }; - B3344AF52859D664006E6B3A /* vga_crtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449DC2859D566006E6B3A /* vga_crtc.cpp */; }; - B3344AF62859D664006E6B3A /* core_full.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A392859D566006E6B3A /* core_full.cpp */; }; - B3344AF72859D664006E6B3A /* fpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A7E2859D566006E6B3A /* fpu.cpp */; }; - B3344AF82859D664006E6B3A /* int10.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A702859D566006E6B3A /* int10.cpp */; }; - B3344AF92859D664006E6B3A /* int10_char.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A6E2859D566006E6B3A /* int10_char.cpp */; }; - B3344AFA2859D664006E6B3A /* dos_classes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A012859D566006E6B3A /* dos_classes.cpp */; }; - B3344AFB2859D664006E6B3A /* callback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A1C2859D566006E6B3A /* callback.cpp */; }; - B3344AFC2859D664006E6B3A /* serialport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449DF2859D566006E6B3A /* serialport.cpp */; }; - B3344AFD2859D664006E6B3A /* vga_s3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449ED2859D566006E6B3A /* vga_s3.cpp */; }; - B3344AFE2859D664006E6B3A /* drive_overlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F62859D566006E6B3A /* drive_overlay.cpp */; }; - B3344AFF2859D664006E6B3A /* vga_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449BA2859D566006E6B3A /* vga_memory.cpp */; }; - B3344B002859D664006E6B3A /* core_dynrec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A212859D566006E6B3A /* core_dynrec.cpp */; }; - B3344B012859D664006E6B3A /* modrm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A202859D566006E6B3A /* modrm.cpp */; }; - B3344B022859D664006E6B3A /* int10_vesa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A6B2859D566006E6B3A /* int10_vesa.cpp */; }; - B3344B032859D664006E6B3A /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449BB2859D566006E6B3A /* memory.cpp */; }; - B3344B042859D664006E6B3A /* vga_xga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D32859D566006E6B3A /* vga_xga.cpp */; }; - B3344B052859D664006E6B3A /* int10_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A752859D566006E6B3A /* int10_memory.cpp */; }; - B3344B062859D664006E6B3A /* vga_paradise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449E72859D566006E6B3A /* vga_paradise.cpp */; }; - B3344B072859D664006E6B3A /* dbopl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449DD2859D566006E6B3A /* dbopl.cpp */; }; - B3344B082859D664006E6B3A /* int10_modes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A722859D566006E6B3A /* int10_modes.cpp */; }; - B3344B092859D664006E6B3A /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A542859D566006E6B3A /* render.cpp */; }; - B3344B0A2859D664006E6B3A /* drive_cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F02859D566006E6B3A /* drive_cache.cpp */; }; - B3344B0B2859D664006E6B3A /* shell_batch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A4C2859D566006E6B3A /* shell_batch.cpp */; }; - B3344B0C2859D664006E6B3A /* core_simple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A1E2859D566006E6B3A /* core_simple.cpp */; }; - B3344B0D2859D664006E6B3A /* drive_iso.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A0B2859D566006E6B3A /* drive_iso.cpp */; }; - B3344B0E2859D664006E6B3A /* cross.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449B52859D566006E6B3A /* cross.cpp */; }; - B3344B0F2859D664006E6B3A /* xms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A732859D566006E6B3A /* xms.cpp */; }; - B3344B102859D664006E6B3A /* vga_tseng.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D52859D566006E6B3A /* vga_tseng.cpp */; }; - B3344B112859D664006E6B3A /* cmos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D72859D566006E6B3A /* cmos.cpp */; }; - B3344B122859D664006E6B3A /* iohandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D42859D566006E6B3A /* iohandler.cpp */; }; - B3344B132859D664006E6B3A /* dos_files.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F12859D566006E6B3A /* dos_files.cpp */; }; - B3344B142859D664006E6B3A /* drive_fat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A0D2859D566006E6B3A /* drive_fat.cpp */; }; - B3344B152859D664006E6B3A /* shell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A4F2859D566006E6B3A /* shell.cpp */; }; - B3344B162859D664006E6B3A /* dos_ioctl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F32859D566006E6B3A /* dos_ioctl.cpp */; }; - B3344B172859D664006E6B3A /* drive_zip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F72859D566006E6B3A /* drive_zip.cpp */; }; - B3344B182859D664006E6B3A /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449BE2859D566006E6B3A /* dma.cpp */; }; - B3344B192859D664006E6B3A /* sn76496.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449C32859D566006E6B3A /* sn76496.cpp */; }; - B3344B1A2859D664006E6B3A /* mpu401.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449E82859D566006E6B3A /* mpu401.cpp */; }; - B3344B1B2859D664006E6B3A /* midi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A572859D566006E6B3A /* midi.cpp */; }; - B3344B1C2859D664006E6B3A /* support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449B72859D566006E6B3A /* support.cpp */; }; - B3344B1D2859D664006E6B3A /* int10_put_pixel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A6C2859D566006E6B3A /* int10_put_pixel.cpp */; }; - B3344B1E2859D664006E6B3A /* programs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449B62859D566006E6B3A /* programs.cpp */; }; - B3344B1F2859D664006E6B3A /* dos_programs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449FB2859D566006E6B3A /* dos_programs.cpp */; }; - B3344B202859D664006E6B3A /* shell_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A4D2859D566006E6B3A /* shell_misc.cpp */; }; - B3344B212859D664006E6B3A /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F42859D566006E6B3A /* cdrom.cpp */; }; - B3344B222859D664006E6B3A /* vga_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449EC2859D566006E6B3A /* vga_misc.cpp */; }; - B3344B232859D664006E6B3A /* adlib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D62859D566006E6B3A /* adlib.cpp */; }; - B3344B242859D664006E6B3A /* gameblaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449CA2859D566006E6B3A /* gameblaster.cpp */; }; - B3344B252859D664006E6B3A /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A382859D566006E6B3A /* cpu.cpp */; }; - B3344B262859D664006E6B3A /* tandy_sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449CE2859D566006E6B3A /* tandy_sound.cpp */; }; - B3344B272859D664006E6B3A /* nukedopl3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D82859D566006E6B3A /* nukedopl3.cpp */; }; - B3344B282859D664006E6B3A /* int10_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A712859D566006E6B3A /* int10_misc.cpp */; }; - B3344B292859D664006E6B3A /* core_normal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A1A2859D566006E6B3A /* core_normal.cpp */; }; - B3344B2A2859D664006E6B3A /* int10_video_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A742859D566006E6B3A /* int10_video_state.cpp */; }; - B3344B2B2859D664006E6B3A /* vga_gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D02859D566006E6B3A /* vga_gfx.cpp */; }; - B3344B2C2859D664006E6B3A /* saa1099.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449C22859D566006E6B3A /* saa1099.cpp */; }; - B3344B2D2859D664006E6B3A /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449C62859D566006E6B3A /* timer.cpp */; }; - B3344B2E2859D664006E6B3A /* dosbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A502859D566006E6B3A /* dosbox.cpp */; }; - B3344B2F2859D664006E6B3A /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A692859D566006E6B3A /* bios.cpp */; }; - B3344B302859D664006E6B3A /* dos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A0A2859D566006E6B3A /* dos.cpp */; }; - B3344B312859D664006E6B3A /* pic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449B92859D566006E6B3A /* pic.cpp */; }; - B3344B322859D664006E6B3A /* pci_bus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449C52859D566006E6B3A /* pci_bus.cpp */; }; - B3344B332859D664006E6B3A /* drive_local.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A0F2859D566006E6B3A /* drive_local.cpp */; }; - B3344B342859D664006E6B3A /* dos_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449FD2859D566006E6B3A /* dos_memory.cpp */; }; - B3344B352859D664006E6B3A /* drive_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A092859D566006E6B3A /* drive_memory.cpp */; }; - B3344B362859D664006E6B3A /* setup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449B42859D566006E6B3A /* setup.cpp */; }; - B3344B372859D664006E6B3A /* joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449EA2859D566006E6B3A /* joystick.cpp */; }; - B3344B382859D664006E6B3A /* disney.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D12859D566006E6B3A /* disney.cpp */; }; - B3344B392859D664006E6B3A /* pcspeaker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449DA2859D566006E6B3A /* pcspeaker.cpp */; }; - B3344B3A2859D664006E6B3A /* dos_execute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A062859D566006E6B3A /* dos_execute.cpp */; }; - B3344B3B2859D664006E6B3A /* int10_vptable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A782859D566006E6B3A /* int10_vptable.cpp */; }; - B3344B3C2859D664006E6B3A /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A6D2859D566006E6B3A /* mouse.cpp */; }; - B3344B3D2859D664006E6B3A /* drive_union.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A002859D566006E6B3A /* drive_union.cpp */; }; - B3344B3E2859D664006E6B3A /* ems.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A6F2859D566006E6B3A /* ems.cpp */; }; - B3344B3F2859D664006E6B3A /* paging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A1F2859D566006E6B3A /* paging.cpp */; }; - B3344B402859D664006E6B3A /* vga_other.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449BD2859D566006E6B3A /* vga_other.cpp */; }; - B3344B412859D664006E6B3A /* dos_mscdex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F92859D566006E6B3A /* dos_mscdex.cpp */; }; - B3344B422859D664006E6B3A /* vga_draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449CB2859D566006E6B3A /* vga_draw.cpp */; }; - B3344B432859D664006E6B3A /* vga_dac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D92859D566006E6B3A /* vga_dac.cpp */; }; - B3344B442859D664006E6B3A /* dos_devices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A072859D566006E6B3A /* dos_devices.cpp */; }; - B3344B452859D664006E6B3A /* dbp_serialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A7B2859D566006E6B3A /* dbp_serialize.cpp */; }; - B3344B462859D664006E6B3A /* core_dyn_x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A372859D566006E6B3A /* core_dyn_x86.cpp */; }; - B3344B472859D664006E6B3A /* sblaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449CD2859D566006E6B3A /* sblaster.cpp */; }; - B3344B482859D664006E6B3A /* dos_tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F22859D566006E6B3A /* dos_tables.cpp */; }; - B3344B492859D664006E6B3A /* flags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A112859D566006E6B3A /* flags.cpp */; }; - B3344B4A2859D664006E6B3A /* dos_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A0C2859D566006E6B3A /* dos_misc.cpp */; }; - B3344B4B2859D664006E6B3A /* hardware.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449BC2859D566006E6B3A /* hardware.cpp */; }; - B3344B4C2859D664006E6B3A /* vga_attr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449D22859D566006E6B3A /* vga_attr.cpp */; }; - B3344B4D2859D664006E6B3A /* vga_seq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449EE2859D566006E6B3A /* vga_seq.cpp */; }; - B3344B4E2859D664006E6B3A /* mixer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449C72859D566006E6B3A /* mixer.cpp */; }; - B3344B4F2859D664006E6B3A /* cdrom_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449F52859D566006E6B3A /* cdrom_image.cpp */; }; - B3344B502859D664006E6B3A /* drives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3344A052859D566006E6B3A /* drives.cpp */; }; - B3344B512859D664006E6B3A /* serialdummy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449E42859D566006E6B3A /* serialdummy.cpp */; }; + B3344BC42859E0C0006E6B3A /* dosbox_pure_libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33448CE2859D566006E6B3A /* dosbox_pure_libretro.cpp */; }; + B3344BC52859E0E5006E6B3A /* keyb2joypad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33449B02859D566006E6B3A /* keyb2joypad.cpp */; }; B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; - B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; - B3A3204227209ED700F338F6 /* PVDosBoxCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVDosBoxCore+Controls.h */; }; - B3A3204527209EE100F338F6 /* PVDosBoxCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDosBoxCore+Controls.mm */; }; - B3A3204627209EE100F338F6 /* PVDosBoxCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDosBoxCore+Controls.mm */; }; - B3B104AF218F26F400210C39 /* libdos-box-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libdos-box-tvOS.a */; }; - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; - B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B39768F82859E23200558958 /* libdos-box-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libdos-box-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3C8A65F2877D6350037A946 /* PVDosBoxCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVDosBoxCore+Controls.mm */; }; + B3C8A6612877D6B30037A946 /* PVDosBoxCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVDosBoxCore+Audio.m */; }; + B3EBB2032872B65700EAEB37 /* PVDosBoxCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVDosBoxCore+Video.m */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ B30178D1207C901D0051B93D /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -269,7 +155,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447F8D218BEE3F00557ACE /* CopyFiles */ = { + B3344BBE2859E088006E6B3A /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -281,7 +167,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - B30178D3207C901D0051B93D /* libdos-box-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdos-box-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B30178D3207C901D0051B93D /* libdos-box.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdos-box.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; B33448842859D565006E6B3A /* core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_options.h; sourceTree = ""; }; @@ -331,7 +217,6 @@ B33448B22859D566006E6B3A /* dbp_serialize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbp_serialize.h; sourceTree = ""; }; B33448B32859D566006E6B3A /* support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = support.h; sourceTree = ""; }; B33448B42859D566006E6B3A /* keyb2joypad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyb2joypad.h; sourceTree = ""; }; - B33448B52859D566006E6B3A /* dosbox_pure_libretro.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = dosbox_pure_libretro.dylib; sourceTree = ""; }; B33448B62859D566006E6B3A /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; B33448B72859D566006E6B3A /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; B33448B82859D566006E6B3A /* DOSBOX-AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = "DOSBOX-AUTHORS"; sourceTree = ""; }; @@ -551,6 +436,7 @@ B3344A7D2859D566006E6B3A /* fpu_instructions_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fpu_instructions_x86.h; sourceTree = ""; }; B3344A7E2859D566006E6B3A /* fpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fpu.cpp; sourceTree = ""; }; B3344A7F2859D566006E6B3A /* fpu_instructions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fpu_instructions.h; sourceTree = ""; }; + B3344BC32859E088006E6B3A /* libdos-box-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdos-box-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; B3447E96218B809200557ACE /* PVDosBoxCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVDosBoxCore+Controls.h"; sourceTree = ""; }; @@ -563,13 +449,16 @@ B3447EB1218BC69700557ACE /* PVDosBoxCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVDosBoxCore+Audio.h"; sourceTree = ""; }; B3447EB2218BC69700557ACE /* PVDosBoxCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVDosBoxCore+Audio.m"; sourceTree = ""; }; B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; - B3447EE6218BEDD200557ACE /* PVDosBox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDosBox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3447F91218BEE3F00557ACE /* libdos-box-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdos-box-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7621020783162009950E4 /* PVDosBox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDosBox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7621320783162009950E4 /* PVDosBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVDosBox.h; sourceTree = ""; }; @@ -590,23 +479,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447ECA218BEDD200557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, - B3B104AF218F26F400210C39 /* libdos-box-tvOS.a in Frameworks */, - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447F8C218BEE3F00557ACE /* Frameworks */ = { + B3344BBD2859E088006E6B3A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -618,16 +491,17 @@ buildActionMask = 2147483647; files = ( B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, - B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, - B301797F207C909E0051B93D /* libdos-box-iOS.a in Frameworks */, + B301797F207C909E0051B93D /* libdos-box.a in Frameworks */, B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libdos-box-libretro.a in Frameworks */, B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -644,7 +518,6 @@ B334488B2859D566006E6B3A /* Makefile */, B33448CE2859D566006E6B3A /* dosbox_pure_libretro.cpp */, B33449B02859D566006E6B3A /* keyb2joypad.cpp */, - B33448B52859D566006E6B3A /* dosbox_pure_libretro.dylib */, B33449AB2859D566006E6B3A /* dosbox_pure_libretro.vcxproj.filters */, B33448842859D565006E6B3A /* core_options.h */, B33448B42859D566006E6B3A /* keyb2joypad.h */, @@ -1141,9 +1014,8 @@ isa = PBXGroup; children = ( B3C7621020783162009950E4 /* PVDosBox.framework */, - B30178D3207C901D0051B93D /* libdos-box-iOS.a */, - B3447EE6218BEDD200557ACE /* PVDosBox.framework */, - B3447F91218BEE3F00557ACE /* libdos-box-tvOS.a */, + B30178D3207C901D0051B93D /* libdos-box.a */, + B3344BC32859E088006E6B3A /* libdos-box-libretro.a */, ); name = Products; sourceTree = ""; @@ -1161,6 +1033,11 @@ B3C7621B20783242009950E4 /* Frameworks */ = { isa = PBXGroup; children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, B35E6BF1207CD2670040709A /* AudioToolbox.framework */, B35E6BEF207CD2610040709A /* AudioUnit.framework */, @@ -1191,34 +1068,21 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B3447ED5218BEDD200557ACE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3A3204227209ED700F338F6 /* PVDosBoxCore+Controls.h in Headers */, - B3135BA226E4CC650047F338 /* PVDosBox.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620D20783162009950E4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B3135B9D26E4CC330047F338 /* PVDosBoxCore+Audio.h in Headers */, - B3135BA026E4CC330047F338 /* PVDosBoxCore+Controls.h in Headers */, B3135B9C26E4CC290047F338 /* PVDosBoxCore.h in Headers */, - B3135B9F26E4CC330047F338 /* PVDosBoxCore+Saves.h in Headers */, B3135BA126E4CC620047F338 /* PVDosBox.h in Headers */, - B3135B9E26E4CC330047F338 /* PVDosBoxCore+Video.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B30178D2207C901D0051B93D /* dos-box-iOS */ = { + B30178D2207C901D0051B93D /* dos-box */ = { isa = PBXNativeTarget; - buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dos-box-iOS" */; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dos-box" */; buildPhases = ( B30178CF207C901D0051B93D /* Sources */, B30178D0207C901D0051B93D /* Frameworks */, @@ -1228,49 +1092,31 @@ ); dependencies = ( ); - name = "dos-box-iOS"; + name = "dos-box"; productName = reicast; - productReference = B30178D3207C901D0051B93D /* libdos-box-iOS.a */; + productReference = B30178D3207C901D0051B93D /* libdos-box.a */; productType = "com.apple.product-type.library.static"; }; - B3447EC0218BEDD200557ACE /* PVDosBox-tvOS */ = { + B3344B522859E088006E6B3A /* dos-box-libretro */ = { isa = PBXNativeTarget; - buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVDosBox-tvOS" */; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "dos-box-libretro" */; buildPhases = ( - B3447EC1218BEDD200557ACE /* Sources */, - B3447ECA218BEDD200557ACE /* Frameworks */, - B3447ED5218BEDD200557ACE /* Headers */, - B3447EDF218BEDD200557ACE /* Resources */, + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "PVDosBox-tvOS"; - productName = PVReicast; - productReference = B3447EE6218BEDD200557ACE /* PVDosBox.framework */; - productType = "com.apple.product-type.framework"; - }; - B3447EE8218BEE3F00557ACE /* dos-box-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "dos-box-tvOS" */; - buildPhases = ( - B3447EE9218BEE3F00557ACE /* Sources */, - B3447F8C218BEE3F00557ACE /* Frameworks */, - B3447F8D218BEE3F00557ACE /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "dos-box-tvOS"; + name = "dos-box-libretro"; productName = reicast; - productReference = B3447F91218BEE3F00557ACE /* libdos-box-tvOS.a */; + productReference = B3344BC32859E088006E6B3A /* libdos-box-libretro.a */; productType = "com.apple.product-type.library.static"; }; - B3C7620F20783162009950E4 /* PVDosBox-iOS */ = { + B3C7620F20783162009950E4 /* PVDosBox */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDosBox-iOS" */; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDosBox" */; buildPhases = ( B3C7620B20783162009950E4 /* Sources */, B3C7620C20783162009950E4 /* Frameworks */, @@ -1280,8 +1126,9 @@ buildRules = ( ); dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, ); - name = "PVDosBox-iOS"; + name = PVDosBox; productName = PVReicast; productReference = B3C7621020783162009950E4 /* PVDosBox.framework */; productType = "com.apple.product-type.framework"; @@ -1330,23 +1177,14 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C7620F20783162009950E4 /* PVDosBox-iOS */, - B3447EC0218BEDD200557ACE /* PVDosBox-tvOS */, - B30178D2207C901D0051B93D /* dos-box-iOS */, - B3447EE8218BEE3F00557ACE /* dos-box-tvOS */, + B3C7620F20783162009950E4 /* PVDosBox */, + B3344B522859E088006E6B3A /* dos-box-libretro */, + B30178D2207C901D0051B93D /* dos-box */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B3447EDF218BEDD200557ACE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EE2218BEDD200557ACE /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620E20783162009950E4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1470,127 +1308,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447EC1218BEDD200557ACE /* Sources */ = { + B3344B532859E088006E6B3A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3135BA626E4CD5A0047F338 /* PVDosBoxCore+Video.m in Sources */, - B3135BA426E4CD500047F338 /* PVDosBoxCore+Saves.m in Sources */, - B3A3204627209EE100F338F6 /* PVDosBoxCore+Controls.mm in Sources */, - B3135BA326E4CD080047F338 /* PVDosBoxCore.mm in Sources */, - B3135BA826E4CD600047F338 /* PVDosBoxCore+Audio.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EE9218BEE3F00557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3344B162859D664006E6B3A /* dos_ioctl.cpp in Sources */, - B3344AF32859D664006E6B3A /* bios_disk.cpp in Sources */, - B3344B152859D664006E6B3A /* shell.cpp in Sources */, - B3344B022859D664006E6B3A /* int10_vesa.cpp in Sources */, - B3344B2E2859D664006E6B3A /* dosbox.cpp in Sources */, - B3344B3B2859D664006E6B3A /* int10_vptable.cpp in Sources */, - B3344B472859D664006E6B3A /* sblaster.cpp in Sources */, - B3344B422859D664006E6B3A /* vga_draw.cpp in Sources */, - B3344B502859D664006E6B3A /* drives.cpp in Sources */, - B3344B3F2859D664006E6B3A /* paging.cpp in Sources */, - B3344B142859D664006E6B3A /* drive_fat.cpp in Sources */, - B3344B2D2859D664006E6B3A /* timer.cpp in Sources */, - B3344B382859D664006E6B3A /* disney.cpp in Sources */, - B3344B1B2859D664006E6B3A /* midi.cpp in Sources */, - B3344B0D2859D664006E6B3A /* drive_iso.cpp in Sources */, - B3344B4B2859D664006E6B3A /* hardware.cpp in Sources */, - B3344AFE2859D664006E6B3A /* drive_overlay.cpp in Sources */, - B3344B1F2859D664006E6B3A /* dos_programs.cpp in Sources */, - B3344B092859D664006E6B3A /* render.cpp in Sources */, - B3344B292859D664006E6B3A /* core_normal.cpp in Sources */, - B3344B082859D664006E6B3A /* int10_modes.cpp in Sources */, - B3344B2A2859D664006E6B3A /* int10_video_state.cpp in Sources */, - B3344AE92859D664006E6B3A /* int10_pal.cpp in Sources */, - B3344AF52859D664006E6B3A /* vga_crtc.cpp in Sources */, - B3344B132859D664006E6B3A /* dos_files.cpp in Sources */, - B3344B032859D664006E6B3A /* memory.cpp in Sources */, - B3344B272859D664006E6B3A /* nukedopl3.cpp in Sources */, - B3344B512859D664006E6B3A /* serialdummy.cpp in Sources */, - B3344B0F2859D664006E6B3A /* xms.cpp in Sources */, - B3344B462859D664006E6B3A /* core_dyn_x86.cpp in Sources */, - B3344B3C2859D664006E6B3A /* mouse.cpp in Sources */, - B3344B4F2859D664006E6B3A /* cdrom_image.cpp in Sources */, - B3344B342859D664006E6B3A /* dos_memory.cpp in Sources */, - B3344B172859D664006E6B3A /* drive_zip.cpp in Sources */, - B3344B072859D664006E6B3A /* dbopl.cpp in Sources */, - B3344B482859D664006E6B3A /* dos_tables.cpp in Sources */, - B3344B0E2859D664006E6B3A /* cross.cpp in Sources */, - B3344B0A2859D664006E6B3A /* drive_cache.cpp in Sources */, - B3344B4E2859D664006E6B3A /* mixer.cpp in Sources */, - B3344AFD2859D664006E6B3A /* vga_s3.cpp in Sources */, - B3344B1E2859D664006E6B3A /* programs.cpp in Sources */, - B3344B4A2859D664006E6B3A /* dos_misc.cpp in Sources */, - B3344AEE2859D664006E6B3A /* shell_cmds.cpp in Sources */, - B3344B242859D664006E6B3A /* gameblaster.cpp in Sources */, - B3344AEF2859D664006E6B3A /* bios_keyboard.cpp in Sources */, - B3344B302859D664006E6B3A /* dos.cpp in Sources */, - B3344B312859D664006E6B3A /* pic.cpp in Sources */, - B3344B3D2859D664006E6B3A /* drive_union.cpp in Sources */, - B3344AF62859D664006E6B3A /* core_full.cpp in Sources */, - B3344B112859D664006E6B3A /* cmos.cpp in Sources */, - B3344AF82859D664006E6B3A /* int10.cpp in Sources */, - B3344AFF2859D664006E6B3A /* vga_memory.cpp in Sources */, - B3344AF72859D664006E6B3A /* fpu.cpp in Sources */, - B3344AFC2859D664006E6B3A /* serialport.cpp in Sources */, - B3344B3E2859D664006E6B3A /* ems.cpp in Sources */, - B3344B402859D664006E6B3A /* vga_other.cpp in Sources */, - B3344B192859D664006E6B3A /* sn76496.cpp in Sources */, - B3344B2F2859D664006E6B3A /* bios.cpp in Sources */, - B3344B492859D664006E6B3A /* flags.cpp in Sources */, - B3344B372859D664006E6B3A /* joystick.cpp in Sources */, - B3344AEA2859D664006E6B3A /* gus.cpp in Sources */, - B3344AEC2859D664006E6B3A /* vga.cpp in Sources */, - B3344B1A2859D664006E6B3A /* mpu401.cpp in Sources */, - B3344B202859D664006E6B3A /* shell_misc.cpp in Sources */, - B3344B332859D664006E6B3A /* drive_local.cpp in Sources */, - B3344B2B2859D664006E6B3A /* vga_gfx.cpp in Sources */, - B3344B4D2859D664006E6B3A /* vga_seq.cpp in Sources */, - B3344B452859D664006E6B3A /* dbp_serialize.cpp in Sources */, - B3344AED2859D664006E6B3A /* drive_virtual.cpp in Sources */, - B3344B042859D664006E6B3A /* vga_xga.cpp in Sources */, - B3344AEB2859D664006E6B3A /* dos_keyboard_layout.cpp in Sources */, - B3344B392859D664006E6B3A /* pcspeaker.cpp in Sources */, - B3344AF92859D664006E6B3A /* int10_char.cpp in Sources */, - B3344B0B2859D664006E6B3A /* shell_batch.cpp in Sources */, - B3344B1C2859D664006E6B3A /* support.cpp in Sources */, - B3344B102859D664006E6B3A /* vga_tseng.cpp in Sources */, - B3344AF02859D664006E6B3A /* render_scalers.cpp in Sources */, - B3344B012859D664006E6B3A /* modrm.cpp in Sources */, - B3344AF12859D664006E6B3A /* keyboard.cpp in Sources */, - B3344B262859D664006E6B3A /* tandy_sound.cpp in Sources */, - B3344AFA2859D664006E6B3A /* dos_classes.cpp in Sources */, - B3344AF22859D664006E6B3A /* messages.cpp in Sources */, - B3344B4C2859D664006E6B3A /* vga_attr.cpp in Sources */, - B3344B252859D664006E6B3A /* cpu.cpp in Sources */, - B3344B002859D664006E6B3A /* core_dynrec.cpp in Sources */, - B3344B212859D664006E6B3A /* cdrom.cpp in Sources */, - B3344B2C2859D664006E6B3A /* saa1099.cpp in Sources */, - B3344AFB2859D664006E6B3A /* callback.cpp in Sources */, - B3344B352859D664006E6B3A /* drive_memory.cpp in Sources */, - B3344B322859D664006E6B3A /* pci_bus.cpp in Sources */, - B3344B282859D664006E6B3A /* int10_misc.cpp in Sources */, - B3344B1D2859D664006E6B3A /* int10_put_pixel.cpp in Sources */, - B3344B182859D664006E6B3A /* dma.cpp in Sources */, - B3344B432859D664006E6B3A /* vga_dac.cpp in Sources */, - B3344B222859D664006E6B3A /* vga_misc.cpp in Sources */, - B3344AF42859D664006E6B3A /* core_prefetch.cpp in Sources */, - B3344B052859D664006E6B3A /* int10_memory.cpp in Sources */, - B3344B3A2859D664006E6B3A /* dos_execute.cpp in Sources */, - B3344B362859D664006E6B3A /* setup.cpp in Sources */, - B3344B0C2859D664006E6B3A /* core_simple.cpp in Sources */, - B3344B412859D664006E6B3A /* dos_mscdex.cpp in Sources */, - B3344B442859D664006E6B3A /* dos_devices.cpp in Sources */, - B3344B122859D664006E6B3A /* iohandler.cpp in Sources */, - B3344B232859D664006E6B3A /* adlib.cpp in Sources */, - B3344B062859D664006E6B3A /* vga_paradise.cpp in Sources */, + B3344BC42859E0C0006E6B3A /* dosbox_pure_libretro.cpp in Sources */, + B3344BC52859E0E5006E6B3A /* keyb2joypad.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1598,20 +1321,28 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3135BA726E4CD5A0047F338 /* PVDosBoxCore+Video.m in Sources */, - B3135BA526E4CD500047F338 /* PVDosBoxCore+Saves.m in Sources */, - B3A3204527209EE100F338F6 /* PVDosBoxCore+Controls.mm in Sources */, B3135B9B26E4CAD40047F338 /* PVDosBoxCore.mm in Sources */, - B3135BA926E4CD600047F338 /* PVDosBoxCore+Audio.m in Sources */, + B3C8A65F2877D6350037A946 /* PVDosBoxCore+Controls.mm in Sources */, + B3C8A6612877D6B30037A946 /* PVDosBoxCore+Audio.m in Sources */, + B3EBB2032872B65700EAEB37 /* PVDosBoxCore+Video.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* dos-box-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ B30178DA207C901D0051B93D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -1622,9 +1353,11 @@ "\"$(SRCROOT)/dosbox-pure/include\"", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "dos-box"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -1632,6 +1365,7 @@ B30178DB207C901D0051B93D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -1642,9 +1376,11 @@ "\"$(SRCROOT)/dosbox-pure/include\"", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "dos-box"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -1690,13 +1426,10 @@ ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - RELEASE, - "$(inherited)", - ); + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -1706,27 +1439,12 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/dosbox-pure/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -1737,6 +1455,7 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -1754,7 +1473,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDosBox/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1764,47 +1483,16 @@ PRODUCT_NAME = PVDosBox; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Archive; }; - B324C5032191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVDosBox/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDosBox"; - PRODUCT_NAME = PVDosBox; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; B324C5042191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -1815,16 +1503,19 @@ "\"$(SRCROOT)/dosbox-pure/include\"", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "dos-box"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Archive; }; - B324C5052191A2A2009F4EDC /* Archive */ = { + B3344BC02859E088006E6B3A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -1835,85 +1526,19 @@ "\"$(SRCROOT)/dosbox-pure/include\"", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + PRODUCT_NAME = "dos-box-libretro"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; - B3447EE4218BEDD200557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVDosBox/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDosBox"; - PRODUCT_NAME = PVDosBox; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - B3447EE5218BEDD200557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVDosBox/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVDosBox"; - PRODUCT_NAME = PVDosBox; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - B3447F8F218BEE3F00557ACE /* Debug */ = { + B3344BC12859E088006E6B3A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -1924,17 +1549,19 @@ "\"$(SRCROOT)/dosbox-pure/include\"", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + PRODUCT_NAME = "dos-box-libretro"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Debug; + name = Release; }; - B3447F90218BEE3F00557ACE /* Release */ = { + B3344BC22859E088006E6B3A /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -1945,13 +1572,14 @@ "\"$(SRCROOT)/dosbox-pure/include\"", ); OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + PRODUCT_NAME = "dos-box-libretro"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Archive; }; B3C7621620783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; @@ -1994,7 +1622,7 @@ ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -2012,13 +1640,13 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/dosbox-pure/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -2066,13 +1694,10 @@ ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - RELEASE, - "$(inherited)", - ); + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -2082,28 +1707,13 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/dosbox-pure/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -2114,6 +1724,7 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -2131,7 +1742,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDosBox/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2141,6 +1752,8 @@ PRODUCT_NAME = PVDosBox; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -2148,6 +1761,7 @@ B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -2165,7 +1779,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDosBox/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2175,6 +1789,8 @@ PRODUCT_NAME = PVDosBox; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -2182,7 +1798,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dos-box-iOS" */ = { + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "dos-box" */ = { isa = XCConfigurationList; buildConfigurations = ( B30178DA207C901D0051B93D /* Debug */, @@ -2192,22 +1808,12 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVDosBox-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447EE4218BEDD200557ACE /* Debug */, - B3447EE5218BEDD200557ACE /* Release */, - B324C5032191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "dos-box-tvOS" */ = { + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "dos-box-libretro" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3447F8F218BEE3F00557ACE /* Debug */, - B3447F90218BEE3F00557ACE /* Release */, - B324C5052191A2A2009F4EDC /* Archive */, + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -2222,7 +1828,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDosBox-iOS" */ = { + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVDosBox" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C7621920783162009950E4 /* Debug */, diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox-iOS.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox-iOS.xcscheme deleted file mode 100644 index 8cd17cc9b5..0000000000 --- a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox-tvOS.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox-tvOS.xcscheme deleted file mode 100644 index 04503613eb..0000000000 --- a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox.xcscheme new file mode 100644 index 0000000000..5d8cb39818 --- /dev/null +++ b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVDosBox.xcscheme @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme deleted file mode 100644 index dc284006b2..0000000000 --- a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme deleted file mode 100644 index f868ab7064..0000000000 --- a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/dos-box-iOS.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/dos-box-iOS.xcscheme deleted file mode 100644 index 8e9cab685c..0000000000 --- a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/dos-box-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme deleted file mode 100644 index dfab77b214..0000000000 --- a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme b/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme deleted file mode 100644 index 6b5b16f37e..0000000000 --- a/Cores/DosBox/PVDosBox.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DosBox/PVDosBox/Core.plist b/Cores/DosBox/PVDosBox/Core.plist index a5e70e4c2c..35e4c31e88 100644 --- a/Cores/DosBox/PVDosBox/Core.plist +++ b/Cores/DosBox/PVDosBox/Core.plist @@ -3,7 +3,7 @@ PVCoreIdentifier - com.provenance.dosbox + com.provenance.core.dosbox PVPrincipleClass PVDosBoxCore PVSupportedSystems diff --git a/Cores/DosBox/PVDosBox/PVDosBox.h b/Cores/DosBox/PVDosBox/PVDosBox.h index 390d826dcc..3f2ccf09c4 100644 --- a/Cores/DosBox/PVDosBox/PVDosBox.h +++ b/Cores/DosBox/PVDosBox/PVDosBox.h @@ -6,7 +6,7 @@ // Copyright © 2021 Provenance. All rights reserved. // -#import +#import //! Project version number for PVDosBox. FOUNDATION_EXPORT double PVDosBoxVersionNumber; diff --git a/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj b/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj index 42c65563f1..7f2c04ce7a 100644 --- a/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj +++ b/Cores/DuckStation/PVDuckStation.xcodeproj/project.pbxproj @@ -7,300 +7,10 @@ objects = { /* Begin PBXBuildFile section */ - B301711E274A335500B0E695 /* staging_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAAB26BE55D30096A354 /* staging_buffer.cpp */; }; - B301711F274A335500B0E695 /* analog_controller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A95526BE55D10096A354 /* analog_controller.cpp */; }; - B3017120274A335500B0E695 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAC326BE55D30096A354 /* texture.cpp */; }; - B3017121274A335500B0E695 /* log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5A26BE55D30096A354 /* log.cpp */; }; - B3017122274A335500B0E695 /* system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A98526BE55D20096A354 /* system.cpp */; }; - B3017123274A335500B0E695 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA8026BE55D30096A354 /* timer.cpp */; }; - B3017124274A335500B0E695 /* iso_reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9826BE55D30096A354 /* iso_reader.cpp */; }; - B3017125274A335500B0E695 /* cd_subchannel_replacement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA8E26BE55D30096A354 /* cd_subchannel_replacement.cpp */; }; - B3017126274A335500B0E695 /* wav_writer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5C26BE55D30096A354 /* wav_writer.cpp */; }; - B3017127274A335500B0E695 /* host_interface_progress_callback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97E26BE55D20096A354 /* host_interface_progress_callback.cpp */; }; - B3017128274A335500B0E695 /* shader_cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAA726BE55D30096A354 /* shader_cache.cpp */; }; - B3017129274A335500B0E695 /* cd_image_m3u.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5626BE55D30096A354 /* cd_image_m3u.cpp */; }; - B301712A274A335500B0E695 /* cdrom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A94026BE55D10096A354 /* cdrom.cpp */; }; - B301712B274A335500B0E695 /* cpu_core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97926BE55D20096A354 /* cpu_core.cpp */; }; - B301712C274A335500B0E695 /* program.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AABB26BE55D30096A354 /* program.cpp */; }; - B301712D274A335500B0E695 /* libcrypt_game_codes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96E26BE55D20096A354 /* libcrypt_game_codes.cpp */; }; - B301712E274A335500B0E695 /* cpu_disasm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96526BE55D20096A354 /* cpu_disasm.cpp */; }; - B301712F274A335500B0E695 /* postprocessing_chain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA0326BE55D20096A354 /* postprocessing_chain.cpp */; }; - B3017130274A335500B0E695 /* context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAA626BE55D30096A354 /* context.cpp */; }; - B3017131274A335500B0E695 /* gpu_sw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A95826BE55D10096A354 /* gpu_sw.cpp */; }; - B3017133274A335500B0E695 /* shader_cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAC026BE55D30096A354 /* shader_cache.cpp */; }; - B3017134274A335500B0E695 /* cd_image_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5726BE55D30096A354 /* cd_image_memory.cpp */; }; - B3017135274A335500B0E695 /* context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AABF26BE55D30096A354 /* context.cpp */; }; - B3017136274A335500B0E695 /* thread_pool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAFF26BE55D30096A354 /* thread_pool.cpp */; }; - B3017137274A335500B0E695 /* psf_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A95726BE55D10096A354 /* psf_loader.cpp */; }; - B3017138274A335500B0E695 /* cd_image_hasher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA6226BE55D30096A354 /* cd_image_hasher.cpp */; }; - B3017139274A335500B0E695 /* window_info.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAF826BE55D30096A354 /* window_info.cpp */; }; - B301713A274A335500B0E695 /* namco_guncon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97526BE55D20096A354 /* namco_guncon.cpp */; }; - B301713B274A335500B0E695 /* cd_image_ecm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA7E26BE55D30096A354 /* cd_image_ecm.cpp */; }; - B301713C274A335500B0E695 /* cd_image_device.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA8526BE55D30096A354 /* cd_image_device.cpp */; }; - B301713D274A335500B0E695 /* staging_texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAA826BE55D30096A354 /* staging_texture.cpp */; }; - B301713E274A335500B0E695 /* gpu_commands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97626BE55D20096A354 /* gpu_commands.cpp */; }; - B301713F274A335500B0E695 /* gpu_hw_vulkan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99226BE55D20096A354 /* gpu_hw_vulkan.cpp */; }; - B3017140274A335500B0E695 /* jit_code_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9726BE55D30096A354 /* jit_code_buffer.cpp */; }; - B3017141274A335500B0E695 /* controller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99426BE55D20096A354 /* controller.cpp */; }; - B3017142274A335500B0E695 /* crash_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA6526BE55D30096A354 /* crash_handler.cpp */; }; - B3017143274A335500B0E695 /* timing_event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9A526BE55D20096A354 /* timing_event.cpp */; }; - B3017144274A335500B0E695 /* cd_image_cue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA7A26BE55D30096A354 /* cd_image_cue.cpp */; }; - B3017145274A335500B0E695 /* postprocessing_shader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9EE26BE55D20096A354 /* postprocessing_shader.cpp */; }; - B3017146274A335500B0E695 /* assert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA8126BE55D30096A354 /* assert.cpp */; }; - B3017147274A335500B0E695 /* memory_card.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A98826BE55D20096A354 /* memory_card.cpp */; }; - B3017148274A335500B0E695 /* error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA7826BE55D30096A354 /* error.cpp */; }; - B301714A274A335500B0E695 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2907026DDD854003CB9D4 /* OpenGLES.framework */; }; - B3017153274A335900B0E695 /* metadata_iterators.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70726BE55CF0096A354 /* metadata_iterators.c */; }; - B3017154274A335900B0E695 /* bitreader.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70826BE55CF0096A354 /* bitreader.c */; }; - B3017155274A335900B0E695 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70D26BE55CF0096A354 /* md5.c */; }; - B3017156274A335900B0E695 /* lpc_intrin_avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A71226BE55CF0096A354 /* lpc_intrin_avx2.c */; }; - B3017157274A335900B0E695 /* fixed_intrin_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70E26BE55CF0096A354 /* fixed_intrin_sse2.c */; }; - B3017158274A335900B0E695 /* lpc_intrin_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70926BE55CF0096A354 /* lpc_intrin_sse2.c */; }; - B3017159274A335900B0E695 /* fixed_intrin_ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A71026BE55CF0096A354 /* fixed_intrin_ssse3.c */; }; - B301715A274A335900B0E695 /* metadata_object.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6E526BE55CF0096A354 /* metadata_object.c */; }; - B301715B274A335900B0E695 /* bitmath.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70626BE55CF0096A354 /* bitmath.c */; }; - B301715C274A335900B0E695 /* lpc_intrin_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6E926BE55CF0096A354 /* lpc_intrin_sse41.c */; }; - B301715D274A335900B0E695 /* float.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70C26BE55CF0096A354 /* float.c */; }; - B301715E274A335900B0E695 /* crc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70F26BE55CF0096A354 /* crc.c */; }; - B301715F274A335900B0E695 /* lpc_intrin_sse.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70526BE55CF0096A354 /* lpc_intrin_sse.c */; }; - B3017160274A335900B0E695 /* format.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6E826BE55CF0096A354 /* format.c */; }; - B3017161274A335900B0E695 /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A71126BE55CF0096A354 /* lpc.c */; }; - B3017162274A335900B0E695 /* fixed.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A70A26BE55CF0096A354 /* fixed.c */; }; - B3017163274A335900B0E695 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6E626BE55CF0096A354 /* memory.c */; }; - B3017164274A335900B0E695 /* cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6E726BE55CF0096A354 /* cpu.c */; }; - B3017165274A335900B0E695 /* stream_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6EA26BE55CF0096A354 /* stream_decoder.c */; }; - B301716F274A335900B0E695 /* libchdr_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6CD26BE55CF0096A354 /* libchdr_flac.c */; }; - B3017170274A335900B0E695 /* libchdr_huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6CC26BE55CF0096A354 /* libchdr_huffman.c */; }; - B3017171274A335900B0E695 /* libchdr_bitstream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6CB26BE55CF0096A354 /* libchdr_bitstream.c */; }; - B3017172274A335900B0E695 /* libchdr_cdrom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6CE26BE55CF0096A354 /* libchdr_cdrom.c */; }; - B3017173274A335900B0E695 /* libchdr_chd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6CA26BE55CF0096A354 /* libchdr_chd.c */; }; - B301717D274A335A00B0E695 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A72126BE55CF0096A354 /* unzip.c */; }; - B301717E274A335A00B0E695 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A72226BE55CF0096A354 /* zip.c */; }; - B301717F274A335A00B0E695 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A72426BE55CF0096A354 /* mztools.c */; }; - B3017180274A335A00B0E695 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A72326BE55CF0096A354 /* ioapi.c */; }; - B301718A274A335B00B0E695 /* src_sinc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A69A26BE55CF0096A354 /* src_sinc.c */; }; - B301718B274A335B00B0E695 /* src_zoh.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A69B26BE55CF0096A354 /* src_zoh.c */; }; - B301718C274A335B00B0E695 /* samplerate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A69826BE55CF0096A354 /* samplerate.c */; }; - B301718D274A335B00B0E695 /* src_linear.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A69C26BE55CF0096A354 /* src_linear.c */; }; - B3017197274A335C00B0E695 /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A60926BE55CE0096A354 /* ConvertUTF.c */; }; - B30171A1274A335D00B0E695 /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76226BE55CF0096A354 /* gzread.c */; }; - B30171A2274A335D00B0E695 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A75F26BE55CF0096A354 /* compress.c */; }; - B30171A3274A335D00B0E695 /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76626BE55CF0096A354 /* infback.c */; }; - B30171A4274A335D00B0E695 /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76A26BE55CF0096A354 /* gzlib.c */; }; - B30171A5274A335D00B0E695 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A77226BE55D00096A354 /* inffast.c */; }; - B30171A6274A335D00B0E695 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76726BE55CF0096A354 /* zutil.c */; }; - B30171A7274A335D00B0E695 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A75E26BE55CF0096A354 /* inflate.c */; }; - B30171A8274A335D00B0E695 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76F26BE55D00096A354 /* trees.c */; }; - B30171A9274A335D00B0E695 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76526BE55CF0096A354 /* crc32.c */; }; - B30171AA274A335D00B0E695 /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76D26BE55D00096A354 /* uncompr.c */; }; - B30171AB274A335D00B0E695 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76026BE55CF0096A354 /* deflate.c */; }; - B30171AC274A335D00B0E695 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A77326BE55D00096A354 /* adler32.c */; }; - B30171AD274A335D00B0E695 /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A77026BE55D00096A354 /* gzclose.c */; }; - B30171AE274A335D00B0E695 /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76E26BE55D00096A354 /* gzwrite.c */; }; - B30171AF274A335D00B0E695 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A76C26BE55CF0096A354 /* inftrees.c */; }; - B30171B9274A335E00B0E695 /* disasm-aarch32.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A426BE55CE0096A354 /* disasm-aarch32.cc */; }; - B30171BA274A335E00B0E695 /* operands-aarch32.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A526BE55CE0096A354 /* operands-aarch32.cc */; }; - B30171BB274A335E00B0E695 /* decoder-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5B326BE55CE0096A354 /* decoder-aarch64.cc */; }; - B30171BC274A335E00B0E695 /* cpu-features-auditor-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5AB26BE55CE0096A354 /* cpu-features-auditor-aarch64.cc */; }; - B30171BD274A335E00B0E695 /* utils-vixl.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A59F26BE55CE0096A354 /* utils-vixl.cc */; }; - B30171BE274A335E00B0E695 /* simulator-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5AF26BE55CE0096A354 /* simulator-aarch64.cc */; }; - B30171BF274A335E00B0E695 /* compiler-intrinsics-vixl.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A026BE55CE0096A354 /* compiler-intrinsics-vixl.cc */; }; - B30171C0274A335E00B0E695 /* logic-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5AE26BE55CE0096A354 /* logic-aarch64.cc */; }; - B30171C1274A335E00B0E695 /* cpu-features.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A59E26BE55CE0096A354 /* cpu-features.cc */; }; - B30171C2274A335E00B0E695 /* instrument-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5AA26BE55CE0096A354 /* instrument-aarch64.cc */; }; - B30171C3274A335E00B0E695 /* operands-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5B226BE55CE0096A354 /* operands-aarch64.cc */; }; - B30171C4274A335E00B0E695 /* cpu-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5B426BE55CE0096A354 /* cpu-aarch64.cc */; }; - B30171C5274A335E00B0E695 /* code-buffer-vixl.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5B626BE55CE0096A354 /* code-buffer-vixl.cc */; }; - B30171C6274A335E00B0E695 /* macro-assembler-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5B026BE55CE0096A354 /* macro-assembler-aarch64.cc */; }; - B30171C7274A335E00B0E695 /* disasm-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5B126BE55CE0096A354 /* disasm-aarch64.cc */; }; - B30171C8274A335E00B0E695 /* constants-aarch32.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A826BE55CE0096A354 /* constants-aarch32.cc */; }; - B30171C9274A335E00B0E695 /* instructions-aarch32.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A726BE55CE0096A354 /* instructions-aarch32.cc */; }; - B30171CA274A335E00B0E695 /* pointer-auth-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5AC26BE55CE0096A354 /* pointer-auth-aarch64.cc */; }; - B30171CB274A335E00B0E695 /* macro-assembler-aarch32.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A626BE55CE0096A354 /* macro-assembler-aarch32.cc */; }; - B30171CC274A335E00B0E695 /* assembler-aarch32.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A226BE55CE0096A354 /* assembler-aarch32.cc */; }; - B30171CD274A335E00B0E695 /* location-aarch32.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5A326BE55CE0096A354 /* location-aarch32.cc */; }; - B30171CE274A335E00B0E695 /* instructions-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5AD26BE55CE0096A354 /* instructions-aarch64.cc */; }; - B30171CF274A335E00B0E695 /* assembler-aarch64.cc in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5B526BE55CE0096A354 /* assembler-aarch64.cc */; }; - B30171D9274A335E00B0E695 /* Delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8C126BE55D10096A354 /* Delta.c */; }; - B30171DA274A335E00B0E695 /* BraIA64.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8BF26BE55D10096A354 /* BraIA64.c */; }; - B30171DB274A335E00B0E695 /* LzmaDec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8BE26BE55D10096A354 /* LzmaDec.c */; }; - B30171DC274A335E00B0E695 /* Lzma86Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8C026BE55D10096A354 /* Lzma86Dec.c */; }; - B30171DD274A335E00B0E695 /* Alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8BD26BE55D10096A354 /* Alloc.c */; }; - B30171DE274A335E00B0E695 /* Bra86.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8BC26BE55D10096A354 /* Bra86.c */; }; - B30171DF274A335E00B0E695 /* Sort.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8BB26BE55D10096A354 /* Sort.c */; }; - B30171E0274A335E00B0E695 /* LzFind.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8BA26BE55D10096A354 /* LzFind.c */; }; - B30171E1274A335E00B0E695 /* LzmaEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8B926BE55D10096A354 /* LzmaEnc.c */; }; - B30171E2274A335E00B0E695 /* CpuArch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8C326BE55D10096A354 /* CpuArch.c */; }; - B30171E3274A335E00B0E695 /* LzmaLib.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8C426BE55D10096A354 /* LzmaLib.c */; }; - B30171E4274A335E00B0E695 /* Lzma86Enc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8C226BE55D10096A354 /* Lzma86Enc.c */; }; - B30171EE274A335F00B0E695 /* condset.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74326BE55CF0096A354 /* condset.c */; }; - B30171EF274A335F00B0E695 /* runtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A73D26BE55CF0096A354 /* runtime.c */; }; - B30171F0274A335F00B0E695 /* alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74526BE55CF0096A354 /* alloc.c */; }; - B30171F1274A335F00B0E695 /* value.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74926BE55CF0096A354 /* value.c */; }; - B30171F2274A335F00B0E695 /* richpresence.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74B26BE55CF0096A354 /* richpresence.c */; }; - B30171F3274A335F00B0E695 /* lboard.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A73C26BE55CF0096A354 /* lboard.c */; }; - B30171F4274A335F00B0E695 /* memref.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74826BE55CF0096A354 /* memref.c */; }; - B30171F5274A335F00B0E695 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A75026BE55CF0096A354 /* md5.c */; }; - B30171F6274A335F00B0E695 /* url.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A73A26BE55CF0096A354 /* url.c */; }; - B30171F7274A335F00B0E695 /* format.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74026BE55CF0096A354 /* format.c */; }; - B30171F8274A335F00B0E695 /* compat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A73E26BE55CF0096A354 /* compat.c */; }; - B30171F9274A335F00B0E695 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74E26BE55CF0096A354 /* hash.c */; }; - B30171FA274A335F00B0E695 /* cdreader.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74F26BE55CF0096A354 /* cdreader.c */; }; - B30171FB274A335F00B0E695 /* trigger.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74726BE55CF0096A354 /* trigger.c */; }; - B30171FC274A335F00B0E695 /* consoleinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74226BE55CF0096A354 /* consoleinfo.c */; }; - B30171FD274A335F00B0E695 /* runtime_progress.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74426BE55CF0096A354 /* runtime_progress.c */; }; - B30171FE274A335F00B0E695 /* condition.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A74626BE55CF0096A354 /* condition.c */; }; - B3017208274A336000B0E695 /* tinyxml2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A81C26BE55D00096A354 /* tinyxml2.cpp */; }; - B3017212274A336100B0E695 /* stb_image.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7F926BE55D00096A354 /* stb_image.c */; }; - B3017213274A336100B0E695 /* stb_image_resize.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7FA26BE55D00096A354 /* stb_image_resize.c */; }; - B3017214274A336100B0E695 /* stb_image_write.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7FB26BE55D00096A354 /* stb_image_write.c */; }; - B301721E274A336200B0E695 /* vulkan_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A8A126BE55D10096A354 /* vulkan_loader.cpp */; }; - B3017228274A336300B0E695 /* CodeGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7E726BE55D00096A354 /* CodeGen.cpp */; }; - B3017229274A336300B0E695 /* RemoveTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7D226BE55D00096A354 /* RemoveTree.cpp */; }; - B301722A274A336300B0E695 /* intermOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7C526BE55D00096A354 /* intermOut.cpp */; }; - B301722B274A336300B0E695 /* SpvBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A78B26BE55D00096A354 /* SpvBuilder.cpp */; }; - B301722C274A336300B0E695 /* glslang_c_interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7A326BE55D00096A354 /* glslang_c_interface.cpp */; }; - B301722D274A336300B0E695 /* PpScanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7E026BE55D00096A354 /* PpScanner.cpp */; }; - B301722E274A336300B0E695 /* ParseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7B426BE55D00096A354 /* ParseHelper.cpp */; }; - B301722F274A336300B0E695 /* iomapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7C626BE55D00096A354 /* iomapper.cpp */; }; - B3017230274A336300B0E695 /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7EB26BE55D00096A354 /* InitializeDll.cpp */; }; - B3017231274A336300B0E695 /* ShaderLang.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7C826BE55D00096A354 /* ShaderLang.cpp */; }; - B3017232274A336300B0E695 /* PpTokens.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7DE26BE55D00096A354 /* PpTokens.cpp */; }; - B3017233274A336300B0E695 /* Intermediate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7CB26BE55D00096A354 /* Intermediate.cpp */; }; - B3017234274A336300B0E695 /* GlslangToSpv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A78F26BE55D00096A354 /* GlslangToSpv.cpp */; }; - B3017235274A336300B0E695 /* ResourceLimits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A77C26BE55D00096A354 /* ResourceLimits.cpp */; }; - B3017236274A336300B0E695 /* propagateNoContraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7B726BE55D00096A354 /* propagateNoContraction.cpp */; }; - B3017237274A336300B0E695 /* PoolAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7C726BE55D00096A354 /* PoolAlloc.cpp */; }; - B3017238274A336300B0E695 /* SpvTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A78626BE55D00096A354 /* SpvTools.cpp */; }; - B3017239274A336300B0E695 /* doc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A79926BE55D00096A354 /* doc.cpp */; }; - B301723A274A336300B0E695 /* IntermTraverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7C426BE55D00096A354 /* IntermTraverse.cpp */; }; - B301723B274A336300B0E695 /* limits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7C026BE55D00096A354 /* limits.cpp */; }; - B301723C274A336300B0E695 /* Link.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7E826BE55D00096A354 /* Link.cpp */; }; - B301723D274A336300B0E695 /* Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A79626BE55D00096A354 /* Logger.cpp */; }; - B301723E274A336300B0E695 /* linkValidate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7D626BE55D00096A354 /* linkValidate.cpp */; }; - B301723F274A336300B0E695 /* Scan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7BB26BE55D00096A354 /* Scan.cpp */; }; - B3017240274A336300B0E695 /* ParseContextBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7E126BE55D00096A354 /* ParseContextBase.cpp */; }; - B3017241274A336300B0E695 /* PpContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7DF26BE55D00096A354 /* PpContext.cpp */; }; - B3017242274A336300B0E695 /* SPVRemapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A79526BE55D00096A354 /* SPVRemapper.cpp */; }; - B3017243274A336300B0E695 /* glslang_tab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7BF26BE55D00096A354 /* glslang_tab.cpp */; }; - B3017244274A336300B0E695 /* parseConst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7C126BE55D00096A354 /* parseConst.cpp */; }; - B3017245274A336300B0E695 /* reflection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7D126BE55D00096A354 /* reflection.cpp */; }; - B3017246274A336300B0E695 /* InfoSink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7CA26BE55D00096A354 /* InfoSink.cpp */; }; - B3017247274A336300B0E695 /* attribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7D026BE55D00096A354 /* attribute.cpp */; }; - B3017248274A336300B0E695 /* resource_limits_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A77B26BE55D00096A354 /* resource_limits_c.cpp */; }; - B3017249274A336300B0E695 /* ossource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A79E26BE55D00096A354 /* ossource.cpp */; }; - B301724A274A336300B0E695 /* SymbolTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7CC26BE55D00096A354 /* SymbolTable.cpp */; }; - B301724B274A336300B0E695 /* Constant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7D526BE55D00096A354 /* Constant.cpp */; }; - B301724C274A336300B0E695 /* Versions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7D426BE55D00096A354 /* Versions.cpp */; }; - B301724D274A336300B0E695 /* SpvPostProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A78426BE55D00096A354 /* SpvPostProcess.cpp */; }; - B301724E274A336300B0E695 /* InReadableOrder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A78726BE55D00096A354 /* InReadableOrder.cpp */; }; - B301724F274A336300B0E695 /* PpAtom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7DA26BE55D00096A354 /* PpAtom.cpp */; }; - B3017250274A336300B0E695 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A79A26BE55D00096A354 /* disassemble.cpp */; }; - B3017251274A336300B0E695 /* Initialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7BE26BE55D00096A354 /* Initialize.cpp */; }; - B3017252274A336300B0E695 /* Pp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A7DC26BE55D00096A354 /* Pp.cpp */; }; - B3017265274A336400B0E695 /* cubeb_mixer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5E326BE55CE0096A354 /* cubeb_mixer.cpp */; }; - B3017266274A336400B0E695 /* cubeb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5D226BE55CE0096A354 /* cubeb.c */; }; - B3017267274A336400B0E695 /* cubeb_log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5F626BE55CE0096A354 /* cubeb_log.cpp */; }; - B3017268274A336400B0E695 /* cubeb_strings.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5CE26BE55CE0096A354 /* cubeb_strings.c */; }; - B3017269274A336400B0E695 /* cubeb_resampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5E426BE55CE0096A354 /* cubeb_resampler.cpp */; }; - B301726A274A336400B0E695 /* cubeb_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A5D026BE55CE0096A354 /* cubeb_utils.cpp */; }; - B3017274274A336500B0E695 /* glad.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A81226BE55D00096A354 /* glad.c */; }; - B301727E274A336600B0E695 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A88226BE55D10096A354 /* xxhash.c */; }; - B3017286274A33AD00B0E695 /* libchdr-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B301717A274A335900B0E695 /* libchdr-tvOS.a */; }; - B3017289274A33AD00B0E695 /* libcubeb-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017271274A336400B0E695 /* libcubeb-tvOS.a */; }; - B301728C274A33AD00B0E695 /* libduckstation-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017150274A335500B0E695 /* libduckstation-tvOS.a */; }; - B301728F274A33AD00B0E695 /* libdxxhash-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017285274A336600B0E695 /* libdxxhash-tvOS.a */; }; - B3017292274A33AD00B0E695 /* libFLAC-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B301716C274A335900B0E695 /* libFLAC-tvOS.a */; }; - B3017295274A33AD00B0E695 /* libglad-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B301727B274A336500B0E695 /* libglad-tvOS.a */; }; - B3017298274A33AD00B0E695 /* libglslangd-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017259274A336300B0E695 /* libglslangd-tvOS.a */; }; - B301729B274A33AD00B0E695 /* libllzma-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30171EB274A335E00B0E695 /* libllzma-tvOS.a */; }; - B301729E274A33AD00B0E695 /* libminizip-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017187274A335A00B0E695 /* libminizip-tvOS.a */; }; - B30172A4274A33AD00B0E695 /* librcheevos-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017205274A335F00B0E695 /* librcheevos-tvOS.a */; }; - B30172A7274A33AD00B0E695 /* libsamplerate-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017194274A335B00B0E695 /* libsamplerate-tvOS.a */; }; - B30172AA274A33AD00B0E695 /* libSimpleINI-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B301719E274A335C00B0E695 /* libSimpleINI-tvOS.a */; }; - B30172AD274A33AD00B0E695 /* libstb-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B301721B274A336100B0E695 /* libstb-tvOS.a */; }; - B30172B0274A33AD00B0E695 /* libtinyxml-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B301720F274A336000B0E695 /* libtinyxml-tvOS.a */; }; - B30172B3274A33AD00B0E695 /* libvixl-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30171D6274A335E00B0E695 /* libvixl-tvOS.a */; }; - B30172B6274A33AD00B0E695 /* libvulkan-loader-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3017225274A336200B0E695 /* libvulkan-loader-tvOS.a */; }; - B30172B9274A33AD00B0E695 /* libzlib-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30171B6274A335D00B0E695 /* libzlib-tvOS.a */; }; - B30172BE274A33BB00B0E695 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30172BC274A33BB00B0E695 /* GLKit.framework */; }; - B30172BF274A33BB00B0E695 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30172BD274A33BB00B0E695 /* OpenGLES.framework */; }; - B30172C3274A33C600B0E695 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30172C0274A33C600B0E695 /* Metal.framework */; }; - B30172C4274A33C600B0E695 /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30172C1274A33C600B0E695 /* MetalKit.framework */; }; - B30172C5274A33C600B0E695 /* MetalPerformanceShaders.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30172C2274A33C600B0E695 /* MetalPerformanceShaders.framework */; }; B30172CC274A389400B0E695 /* cpu_disasm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96526BE55D20096A354 /* cpu_disasm.cpp */; }; B30172CD274A397000B0E695 /* cheats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A93B26BE55D10096A354 /* cheats.cpp */; }; B30172CF274A397F00B0E695 /* bus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A93226BE55D10096A354 /* bus.cpp */; }; B30172D0274A399000B0E695 /* cpu_code_cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9A426BE55D20096A354 /* cpu_code_cache.cpp */; }; - B30172D1274A3A3C00B0E695 /* pad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A98326BE55D20096A354 /* pad.cpp */; }; - B30172D2274A3A3C00B0E695 /* timestamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAE626BE55D30096A354 /* timestamp.cpp */; }; - B30172D3274A3A3C00B0E695 /* memory_card_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99C26BE55D20096A354 /* memory_card_image.cpp */; }; - B30172D4274A3A3C00B0E695 /* cpu_code_cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9A426BE55D20096A354 /* cpu_code_cache.cpp */; }; - B30172D5274A3A3C00B0E695 /* sio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99126BE55D20096A354 /* sio.cpp */; }; - B30172D6274A3A3C00B0E695 /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A93326BE55D10096A354 /* bios.cpp */; }; - B30172D7274A3A3C00B0E695 /* swap_chain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAAC26BE55D30096A354 /* swap_chain.cpp */; }; - B30172D8274A3A3C00B0E695 /* game_settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA1426BE55D20096A354 /* game_settings.cpp */; }; - B30172D9274A3A3C00B0E695 /* multitap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A95E26BE55D10096A354 /* multitap.cpp */; }; - B30172DA274A3A3C00B0E695 /* texture_replacements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A98726BE55D20096A354 /* texture_replacements.cpp */; }; - B30172DB274A3A3C00B0E695 /* cubeb_audio_stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA1026BE55D20096A354 /* cubeb_audio_stream.cpp */; }; - B30172DC274A3A3C00B0E695 /* byte_stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAEB26BE55D30096A354 /* byte_stream.cpp */; }; - B30172DD274A3A3C00B0E695 /* event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAE926BE55D30096A354 /* event.cpp */; }; - B30172DE274A3A3C00B0E695 /* cd_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAF626BE55D30096A354 /* cd_image.cpp */; }; - B30172DF274A3A3C00B0E695 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAAA26BE55D30096A354 /* texture.cpp */; }; - B30172E0274A3A3C00B0E695 /* builders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAA126BE55D30096A354 /* builders.cpp */; }; - B30172E1274A3A3C00B0E695 /* cpu_types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9A026BE55D20096A354 /* cpu_types.cpp */; }; - B30172E2274A3A3C00B0E695 /* gdb_protocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96426BE55D20096A354 /* gdb_protocol.cpp */; }; - B30172E3274A3A3C00B0E695 /* resources.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96326BE55D20096A354 /* resources.cpp */; }; - B30172E4274A3A3C00B0E695 /* shader_compiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAAD26BE55D30096A354 /* shader_compiler.cpp */; }; - B30172E5274A3A3C00B0E695 /* gpu_hw_opengl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99826BE55D20096A354 /* gpu_hw_opengl.cpp */; }; - B30172E6274A3A3C00B0E695 /* gpu_backend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A94F26BE55D10096A354 /* gpu_backend.cpp */; }; - B30172E7274A3A3C00B0E695 /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A94826BE55D10096A354 /* dma.cpp */; }; - B30172E8274A3A3C00B0E695 /* gpu_hw_shadergen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99326BE55D20096A354 /* gpu_hw_shadergen.cpp */; }; - B30172E9274A3A3C00B0E695 /* gpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99F26BE55D20096A354 /* gpu.cpp */; }; - B30172EA274A3A3C00B0E695 /* audio_stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5F26BE55D30096A354 /* audio_stream.cpp */; }; - B30172EB274A3A3C00B0E695 /* cd_xa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9A26BE55D30096A354 /* cd_xa.cpp */; }; - B30172EC274A3A3C00B0E695 /* gpu_hw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97426BE55D20096A354 /* gpu_hw.cpp */; }; - B30172ED274A3A3C00B0E695 /* shadergen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97F26BE55D20096A354 /* shadergen.cpp */; }; - B30172EE274A3A3D00B0E695 /* host_interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96926BE55D20096A354 /* host_interface.cpp */; }; - B30172EF274A3A3D00B0E695 /* playstation_mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9A826BE55D20096A354 /* playstation_mouse.cpp */; }; - B30172F0274A3A3D00B0E695 /* string.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA8626BE55D30096A354 /* string.cpp */; }; - B30172F1274A3A3D00B0E695 /* stream_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAD526BE55D30096A354 /* stream_buffer.cpp */; }; - B30172F2274A3A3D00B0E695 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAA326BE55D30096A354 /* util.cpp */; }; - B30172F3274A3A3D00B0E695 /* stream_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAB426BE55D30096A354 /* stream_buffer.cpp */; }; - B30172F4274A3A3D00B0E695 /* negcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97D26BE55D20096A354 /* negcon.cpp */; }; - B30172F5274A3A3D00B0E695 /* mdec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96226BE55D10096A354 /* mdec.cpp */; }; - B30172F6274A3A3D00B0E695 /* memory_arena.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA7C26BE55D30096A354 /* memory_arena.cpp */; }; - B30172F7274A3A3D00B0E695 /* minizip_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAF026BE55D30096A354 /* minizip_helpers.cpp */; }; - B30172F8274A3A3D00B0E695 /* image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA6126BE55D30096A354 /* image.cpp */; }; - B30172F9274A3A3D00B0E695 /* pgxp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96026BE55D10096A354 /* pgxp.cpp */; }; - B30172FA274A3A3D00B0E695 /* spu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A95D26BE55D10096A354 /* spu.cpp */; }; - B30172FB274A3A3D00B0E695 /* postprocessing_shadergen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA2126BE55D20096A354 /* postprocessing_shadergen.cpp */; }; - B30172FC274A3A3D00B0E695 /* cd_image_chd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAE726BE55D30096A354 /* cd_image_chd.cpp */; }; - B30172FD274A3A3D00B0E695 /* state_wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9326BE55D30096A354 /* state_wrapper.cpp */; }; - B30172FE274A3A3D00B0E695 /* analog_joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A93C26BE55D10096A354 /* analog_joystick.cpp */; }; - B30172FF274A3A3D00B0E695 /* page_fault_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9F26BE55D30096A354 /* page_fault_handler.cpp */; }; - B3017300274A3A3D00B0E695 /* progress_callback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAE526BE55D30096A354 /* progress_callback.cpp */; }; - B3017301274A3A3D00B0E695 /* interrupt_controller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A98226BE55D20096A354 /* interrupt_controller.cpp */; }; - B3017302274A3A3D00B0E695 /* file_system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAB526BE55D30096A354 /* file_system.cpp */; }; - B3017303274A3A3D00B0E695 /* cd_image_bin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA8926BE55D30096A354 /* cd_image_bin.cpp */; }; - B3017304274A3A3D00B0E695 /* cd_image_pbp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA8326BE55D30096A354 /* cd_image_pbp.cpp */; }; - B3017305274A3A3D00B0E695 /* string_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5826BE55D30096A354 /* string_util.cpp */; }; - B3017306274A3A3D00B0E695 /* cd_image_ppf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA6726BE55D30096A354 /* cd_image_ppf.cpp */; }; - B3017307274A3A3D00B0E695 /* settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9A126BE55D20096A354 /* settings.cpp */; }; - B3017308274A3A3D00B0E695 /* null_audio_stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA5926BE55D30096A354 /* null_audio_stream.cpp */; }; - B3017309274A3A3D00B0E695 /* gpu_sw_backend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A99B26BE55D20096A354 /* gpu_sw_backend.cpp */; }; - B301730A274A3A3D00B0E695 /* cdrom_async_reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A93A26BE55D10096A354 /* cdrom_async_reader.cpp */; }; - B301730B274A3A3D00B0E695 /* digital_controller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96D26BE55D20096A354 /* digital_controller.cpp */; }; - B301730C274A3A3D00B0E695 /* gte.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A95A26BE55D10096A354 /* gte.cpp */; }; - B301730D274A3A3D00B0E695 /* cue_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA9226BE55D30096A354 /* cue_parser.cpp */; }; - B301730E274A3A3D00B0E695 /* host_display.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A98926BE55D20096A354 /* host_display.cpp */; }; - B301730F274A3A3D00B0E695 /* timers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A98B26BE55D20096A354 /* timers.cpp */; }; - B3017310274A3A3D00B0E695 /* md5_digest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAE826BE55D30096A354 /* md5_digest.cpp */; }; - B3017311274A3A3D00B0E695 /* ini_settings_interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9F226BE55D20096A354 /* ini_settings_interface.cpp */; }; - B3017312274A3A3D00B0E695 /* cd_image_mds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA6926BE55D30096A354 /* cd_image_mds.cpp */; }; - B3017313274A3A3D00B0E695 /* shiftjis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AB0026BE55D30096A354 /* shiftjis.cpp */; }; - B3017317274A3E4A00B0E695 /* bus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A93226BE55D10096A354 /* bus.cpp */; }; - B3017318274A3E5A00B0E695 /* cheats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A93B26BE55D10096A354 /* cheats.cpp */; }; B304F50726BE566700A4F549 /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A94826BE55D10096A354 /* dma.cpp */; }; B304F50826BE566700A4F549 /* resources.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96326BE55D20096A354 /* resources.cpp */; }; B304F50926BE566700A4F549 /* gdb_protocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A96426BE55D20096A354 /* gdb_protocol.cpp */; }; @@ -383,16 +93,12 @@ B30A200A278FC9FF009E08C9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30A2009278FC9FF009E08C9 /* OpenGL.framework */; platformFilter = maccatalyst; settings = {ATTRIBUTES = (Weak, ); }; }; B3203C1026DB126F00B016C6 /* thread_pool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAFF26BE55D30096A354 /* thread_pool.cpp */; }; B324C64021920EB9009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63F21920EB9009F4EDC /* PVSupport.framework */; }; - B3375ECE278EA4B8004B0DC0 /* xxh_x86dispatch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A88326BE55D10096A354 /* xxh_x86dispatch.c */; }; B36455E9278E809800B6E87A /* xxh_x86dispatch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A88326BE55D10096A354 /* xxh_x86dispatch.c */; }; B36DE7831D6AB43A002EE3ED /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7821D6AB43A002EE3ED /* libz.tbd */; }; B36DE7851D6AB44D002EE3ED /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7841D6AB44D002EE3ED /* Foundation.framework */; }; B36DE79A1D6AD049002EE3ED /* libedit.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7991D6AD049002EE3ED /* libedit.tbd */; }; - B38526A82108264D00434945 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38526A72108264D00434945 /* PVSupport.framework */; }; - B3C2906126DDD28C003CB9D4 /* OpenGLHostDisplay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D527C326DDCCC300991E84 /* OpenGLHostDisplay.mm */; }; B3C2906226DDD28D003CB9D4 /* OpenGLHostDisplay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D527C326DDCCC300991E84 /* OpenGLHostDisplay.mm */; }; B3C2907126DDD854003CB9D4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2907026DDD854003CB9D4 /* OpenGLES.framework */; platformFilter = ios; settings = {ATTRIBUTES = (Weak, ); }; }; - B3C2907326DDD85D003CB9D4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C2907226DDD85D003CB9D4 /* OpenGLES.framework */; }; B3C290B326DDDB36003CB9D4 /* shadergen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A97F26BE55D20096A354 /* shadergen.cpp */; }; B3C290B426DDDC06003CB9D4 /* cd_image_chd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AAE726BE55D30096A354 /* cd_image_chd.cpp */; }; B3C290D426DE95CD003CB9D4 /* stream_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A6EA26BE55CF0096A354 /* stream_decoder.c */; }; @@ -595,149 +301,18 @@ B3D0143026DF167600860FF9 /* postprocessing_shadergen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8AA2126BE55D20096A354 /* postprocessing_shadergen.cpp */; }; B3D0143126DF167600860FF9 /* postprocessing_shader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A9EE26BE55D20096A354 /* postprocessing_shader.cpp */; }; B3D0143626DF190300860FF9 /* context_agl_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D0143426DF18F600860FF9 /* context_agl_ios.mm */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B3D0143726DF190400860FF9 /* context_agl_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D0143426DF18F600860FF9 /* context_agl_ios.mm */; }; B3D0143A26E05F6500860FF9 /* OEOverrides.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3D0143926E05F6500860FF9 /* OEOverrides.ini */; }; - B3D0143B26E05F6500860FF9 /* OEOverrides.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3D0143926E05F6500860FF9 /* OEOverrides.ini */; }; - B3D73D211E9EAF1C0023925B /* libedit.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7991D6AD049002EE3ED /* libedit.tbd */; }; - B3D73D231E9EAF1C0023925B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7841D6AB44D002EE3ED /* Foundation.framework */; }; - B3D73D241E9EAF1C0023925B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B36DE7821D6AB43A002EE3ED /* libz.tbd */; }; B3D8A52B26BE48CA0096A354 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B3D8A52226BE48C90096A354 /* InfoPlist.strings */; }; - B3D8A52C26BE48CA0096A354 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B3D8A52226BE48C90096A354 /* InfoPlist.strings */; }; B3D8A52D26BE48CA0096A354 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3D8A52426BE48C90096A354 /* Core.plist */; }; - B3D8A52E26BE48CA0096A354 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3D8A52426BE48C90096A354 /* Core.plist */; }; B3D8A52F26BE48CA0096A354 /* PVDuckStation.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D8A52526BE48C90096A354 /* PVDuckStation.h */; }; - B3D8A53026BE48CA0096A354 /* PVDuckStation.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D8A52526BE48C90096A354 /* PVDuckStation.h */; }; B3D8A53126BE48CA0096A354 /* DuckStation-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3D8A52626BE48C90096A354 /* DuckStation-Info.plist */; }; - B3D8A53226BE48CA0096A354 /* DuckStation-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3D8A52626BE48C90096A354 /* DuckStation-Info.plist */; }; B3D8A53326BE48CA0096A354 /* PVDuckStation.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D8A52826BE48C90096A354 /* PVDuckStation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3D8A53426BE48CA0096A354 /* PVDuckStation.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D8A52826BE48C90096A354 /* PVDuckStation.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3D8A53526BE48CA0096A354 /* PVDuckStation.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A52926BE48CA0096A354 /* PVDuckStation.mm */; }; - B3D8A53626BE48CA0096A354 /* PVDuckStation.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A52926BE48CA0096A354 /* PVDuckStation.mm */; }; - B3D8A53A26BE4A6D0096A354 /* PVDuckStation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A53926BE4A6D0096A354 /* PVDuckStation.swift */; }; B3D8A53B26BE4A6D0096A354 /* PVDuckStation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D8A53926BE4A6D0096A354 /* PVDuckStation.swift */; }; B3D8AD4D26BE55E20096A354 /* libduckstation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D8A54026BE55780096A354 /* libduckstation.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B3017287274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B301716D274A335900B0E695; - remoteInfo = "chdr-tvOS"; - }; - B301728A274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017263274A336400B0E695; - remoteInfo = "cubeb-tvOS"; - }; - B301728D274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B30170D3274A335500B0E695; - remoteInfo = "duckstation-tvOS"; - }; - B3017290274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B301727C274A336600B0E695; - remoteInfo = "dxxhash-tvOS"; - }; - B3017293274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017151274A335900B0E695; - remoteInfo = "FLAC-tvOS"; - }; - B3017296274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017272274A336500B0E695; - remoteInfo = "glad-tvOS"; - }; - B3017299274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017226274A336300B0E695; - remoteInfo = "glslangd-tvOS"; - }; - B301729C274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B30171D7274A335E00B0E695; - remoteInfo = "llzma-tvOS"; - }; - B301729F274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B301717B274A335A00B0E695; - remoteInfo = "minizip-tvOS"; - }; - B30172A5274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B30171EC274A335F00B0E695; - remoteInfo = "rcheevos-tvOS"; - }; - B30172A8274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017188274A335B00B0E695; - remoteInfo = "samplerate-tvOS"; - }; - B30172AB274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017195274A335C00B0E695; - remoteInfo = "SimpleINI-tvOS"; - }; - B30172AE274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017210274A336100B0E695; - remoteInfo = "stb-tvOS"; - }; - B30172B1274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3017206274A336000B0E695; - remoteInfo = "tinyxml-tvOS"; - }; - B30172B4274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B30171B7274A335E00B0E695; - remoteInfo = "vixl-tvOS"; - }; - B30172B7274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B301721C274A336200B0E695; - remoteInfo = "vulkan-loader-tvOS"; - }; - B30172BA274A33AD00B0E695 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 02695358143169EA003A07D4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B301719F274A335D00B0E695; - remoteInfo = "zlib-tvOS"; - }; B3C2919826DEECB8003CB9D4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 02695358143169EA003A07D4 /* Project object */; @@ -846,159 +421,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - B301714B274A335500B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017167274A335900B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017175274A335900B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017182274A335A00B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B301718F274A335B00B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017199274A335C00B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B30171B1274A335D00B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B30171D1274A335E00B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B30171E6274A335E00B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017200274A335F00B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B301720A274A336000B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017216274A336100B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017220274A336200B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017254274A336300B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B301726C274A336400B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017276274A336500B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017280274A336600B0E695 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C290C826DE95AE003CB9D4 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -1164,23 +586,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - B3017150274A335500B0E695 /* libduckstation-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libduckstation-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B301716C274A335900B0E695 /* libFLAC-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libFLAC-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B301717A274A335900B0E695 /* libchdr-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libchdr-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3017187274A335A00B0E695 /* libminizip-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libminizip-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3017194274A335B00B0E695 /* libsamplerate-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsamplerate-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B301719E274A335C00B0E695 /* libSimpleINI-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSimpleINI-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B30171B6274A335D00B0E695 /* libzlib-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libzlib-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B30171D6274A335E00B0E695 /* libvixl-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libvixl-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B30171EB274A335E00B0E695 /* libllzma-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libllzma-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3017205274A335F00B0E695 /* librcheevos-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "librcheevos-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B301720F274A336000B0E695 /* libtinyxml-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libtinyxml-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B301721B274A336100B0E695 /* libstb-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libstb-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3017225274A336200B0E695 /* libvulkan-loader-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libvulkan-loader-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3017259274A336300B0E695 /* libglslangd-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libglslangd-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3017271274A336400B0E695 /* libcubeb-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcubeb-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B301727B274A336500B0E695 /* libglad-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libglad-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3017285274A336600B0E695 /* libdxxhash-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libdxxhash-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B30172BC274A33BB00B0E695 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/GLKit.framework; sourceTree = DEVELOPER_DIR; }; B30172BD274A33BB00B0E695 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B30172C0274A33C600B0E695 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; }; @@ -1226,7 +631,6 @@ B3D527C426DDCCC300991E84 /* PlayStationGameCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlayStationGameCore.mm; sourceTree = ""; }; B3D527C526DDCCC300991E84 /* OpenGLHostDisplay.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = OpenGLHostDisplay.hpp; sourceTree = ""; }; B3D527C626DDCCC300991E84 /* PlayStationGameHacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlayStationGameHacks.m; sourceTree = ""; }; - B3D73D331E9EAF1C0023925B /* PVDuckStation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVDuckStation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3D8A52326BE48C90096A354 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B3D8A52426BE48C90096A354 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; B3D8A52526BE48C90096A354 /* PVDuckStation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVDuckStation.h; sourceTree = ""; }; @@ -3131,311 +2535,157 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B3017149274A335500B0E695 /* Frameworks */ = { + B36DE7441D6AB19C002EE3ED /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B301714A274A335500B0E695 /* OpenGLES.framework in Frameworks */, + B3C2930A26DF0CB1003CB9D4 /* libglad.a in Frameworks */, + B324C64021920EB9009F4EDC /* PVSupport.framework in Frameworks */, + B3C291EE26DEEDF9003CB9D4 /* libllzma.a in Frameworks */, + B36DE79A1D6AD049002EE3ED /* libedit.tbd in Frameworks */, + B3C291A626DEECB8003CB9D4 /* libvixl.a in Frameworks */, + B3C2919D26DEECB8003CB9D4 /* libminizip.a in Frameworks */, + B36DE7851D6AB44D002EE3ED /* Foundation.framework in Frameworks */, + B3C2927C26DF02B5003CB9D4 /* libvulkan-loader.a in Frameworks */, + B30A200A278FC9FF009E08C9 /* OpenGL.framework in Frameworks */, + B3C2920426DEF8B6003CB9D4 /* libtinyxml.a in Frameworks */, + B36DE7831D6AB43A002EE3ED /* libz.tbd in Frameworks */, + B3C2919726DEECB8003CB9D4 /* libchdr.a in Frameworks */, + B3C2924626DEFFD8003CB9D4 /* GLKit.framework in Frameworks */, + B3C2924E26DEFFE8003CB9D4 /* Metal.framework in Frameworks */, + B3C291A326DEECB8003CB9D4 /* libSimpleINI.a in Frameworks */, + B3C2919A26DEECB8003CB9D4 /* libFLAC.a in Frameworks */, + B3C292F826DF0C3C003CB9D4 /* libcubeb.a in Frameworks */, + B3C2924C26DEFFE8003CB9D4 /* MetalKit.framework in Frameworks */, + B3C291A026DEECB8003CB9D4 /* libsamplerate.a in Frameworks */, + B3C2929026DF031B003CB9D4 /* libglslangd.a in Frameworks */, + B3D8AD4D26BE55E20096A354 /* libduckstation.a in Frameworks */, + B3D0140B26DF155800860FF9 /* UIKit.framework in Frameworks */, + B3C2931D26DF0D9E003CB9D4 /* libdxxhash.a in Frameworks */, + B3C2924126DEFEE6003CB9D4 /* libstb.a in Frameworks */, + B3C2907126DDD854003CB9D4 /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3017166274A335900B0E695 /* Frameworks */ = { + B3C290C726DE95AE003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3017174274A335900B0E695 /* Frameworks */ = { + B3C290FF26DEB78F003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3017181274A335A00B0E695 /* Frameworks */ = { + B3C2911026DEC8D9003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B301718E274A335B00B0E695 /* Frameworks */ = { + B3C2913A26DEC91C003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3017198274A335C00B0E695 /* Frameworks */ = { + B3C2914826DEC93D003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B30171B0274A335D00B0E695 /* Frameworks */ = { + B3C2916426DEC963003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B30171D0274A335E00B0E695 /* Frameworks */ = { + B3C2917226DEC978003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B30171E5274A335E00B0E695 /* Frameworks */ = { + B3C291AD26DEED30003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B30171FF274A335F00B0E695 /* Frameworks */ = { + B3C291C726DEED68003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3017209274A336000B0E695 /* Frameworks */ = { + B3C291F626DEF88C003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3017215274A336100B0E695 /* Frameworks */ = { + B3C2923126DEFECD003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B301721F274A336200B0E695 /* Frameworks */ = { + B3C2926E26DF0271003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3017253274A336300B0E695 /* Frameworks */ = { + B3C2928326DF0311003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B301726B274A336400B0E695 /* Frameworks */ = { + B3C292C226DF04D2003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3017275274A336500B0E695 /* Frameworks */ = { + B3C292E226DF0BDC003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B301727F274A336600B0E695 /* Frameworks */ = { + B3C292FC26DF0C9E003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B36DE7441D6AB19C002EE3ED /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C2930A26DF0CB1003CB9D4 /* libglad.a in Frameworks */, - B324C64021920EB9009F4EDC /* PVSupport.framework in Frameworks */, - B3C291EE26DEEDF9003CB9D4 /* libllzma.a in Frameworks */, - B36DE79A1D6AD049002EE3ED /* libedit.tbd in Frameworks */, - B3C291A626DEECB8003CB9D4 /* libvixl.a in Frameworks */, - B3C2919D26DEECB8003CB9D4 /* libminizip.a in Frameworks */, - B36DE7851D6AB44D002EE3ED /* Foundation.framework in Frameworks */, - B3C2927C26DF02B5003CB9D4 /* libvulkan-loader.a in Frameworks */, - B30A200A278FC9FF009E08C9 /* OpenGL.framework in Frameworks */, - B3C2920426DEF8B6003CB9D4 /* libtinyxml.a in Frameworks */, - B36DE7831D6AB43A002EE3ED /* libz.tbd in Frameworks */, - B3C2919726DEECB8003CB9D4 /* libchdr.a in Frameworks */, - B3C2924626DEFFD8003CB9D4 /* GLKit.framework in Frameworks */, - B3C2924E26DEFFE8003CB9D4 /* Metal.framework in Frameworks */, - B3C291A326DEECB8003CB9D4 /* libSimpleINI.a in Frameworks */, - B3C2919A26DEECB8003CB9D4 /* libFLAC.a in Frameworks */, - B3C292F826DF0C3C003CB9D4 /* libcubeb.a in Frameworks */, - B3C2924C26DEFFE8003CB9D4 /* MetalKit.framework in Frameworks */, - B3C291A026DEECB8003CB9D4 /* libsamplerate.a in Frameworks */, - B3C2929026DF031B003CB9D4 /* libglslangd.a in Frameworks */, - B3D8AD4D26BE55E20096A354 /* libduckstation.a in Frameworks */, - B3D0140B26DF155800860FF9 /* UIKit.framework in Frameworks */, - B3C2931D26DF0D9E003CB9D4 /* libdxxhash.a in Frameworks */, - B3C2924126DEFEE6003CB9D4 /* libstb.a in Frameworks */, - B3C2907126DDD854003CB9D4 /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C290C726DE95AE003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C290FF26DEB78F003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2911026DEC8D9003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2913A26DEC91C003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2914826DEC93D003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2916426DEC963003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2917226DEC978003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C291AD26DEED30003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C291C726DEED68003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C291F626DEF88C003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2923126DEFECD003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2926E26DF0271003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2928326DF0311003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C292C226DF04D2003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C292E226DF0BDC003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C292FC26DF0C9E003CB9D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C2930E26DF0D83003CB9D4 /* Frameworks */ = { + B3C2930E26DF0D83003CB9D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73D201E9EAF1C0023925B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B30172B3274A33AD00B0E695 /* libvixl-tvOS.a in Frameworks */, - B30172C3274A33C600B0E695 /* Metal.framework in Frameworks */, - B3017286274A33AD00B0E695 /* libchdr-tvOS.a in Frameworks */, - B30172A7274A33AD00B0E695 /* libsamplerate-tvOS.a in Frameworks */, - B30172BF274A33BB00B0E695 /* OpenGLES.framework in Frameworks */, - B30172C4274A33C600B0E695 /* MetalKit.framework in Frameworks */, - B30172B6274A33AD00B0E695 /* libvulkan-loader-tvOS.a in Frameworks */, - B3017295274A33AD00B0E695 /* libglad-tvOS.a in Frameworks */, - B38526A82108264D00434945 /* PVSupport.framework in Frameworks */, - B3D73D211E9EAF1C0023925B /* libedit.tbd in Frameworks */, - B3D73D231E9EAF1C0023925B /* Foundation.framework in Frameworks */, - B30172BE274A33BB00B0E695 /* GLKit.framework in Frameworks */, - B3017292274A33AD00B0E695 /* libFLAC-tvOS.a in Frameworks */, - B301728F274A33AD00B0E695 /* libdxxhash-tvOS.a in Frameworks */, - B30172A4274A33AD00B0E695 /* librcheevos-tvOS.a in Frameworks */, - B30172B0274A33AD00B0E695 /* libtinyxml-tvOS.a in Frameworks */, - B30172AD274A33AD00B0E695 /* libstb-tvOS.a in Frameworks */, - B3D73D241E9EAF1C0023925B /* libz.tbd in Frameworks */, - B30172B9274A33AD00B0E695 /* libzlib-tvOS.a in Frameworks */, - B301728C274A33AD00B0E695 /* libduckstation-tvOS.a in Frameworks */, - B30172AA274A33AD00B0E695 /* libSimpleINI-tvOS.a in Frameworks */, - B3C2907326DDD85D003CB9D4 /* OpenGLES.framework in Frameworks */, - B30172C5274A33C600B0E695 /* MetalPerformanceShaders.framework in Frameworks */, - B3017298274A33AD00B0E695 /* libglslangd-tvOS.a in Frameworks */, - B301729E274A33AD00B0E695 /* libminizip-tvOS.a in Frameworks */, - B301729B274A33AD00B0E695 /* libllzma-tvOS.a in Frameworks */, - B3017289274A33AD00B0E695 /* libcubeb-tvOS.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3D8A53D26BE55780096A354 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -3461,7 +2711,6 @@ isa = PBXGroup; children = ( B36DE7481D6AB19C002EE3ED /* PVDuckStation.framework */, - B3D73D331E9EAF1C0023925B /* PVDuckStation.framework */, B3D8A54026BE55780096A354 /* libduckstation.a */, B3C290CA26DE95AE003CB9D4 /* libFLAC.a */, B3C2910526DEB78F003CB9D4 /* libchdr.a */, @@ -3480,23 +2729,6 @@ B3C292E526DF0BDC003CB9D4 /* libcubeb.a */, B3C292FF26DF0C9E003CB9D4 /* libglad.a */, B3C2931126DF0D83003CB9D4 /* libdxxhash.a */, - B3017150274A335500B0E695 /* libduckstation-tvOS.a */, - B301716C274A335900B0E695 /* libFLAC-tvOS.a */, - B301717A274A335900B0E695 /* libchdr-tvOS.a */, - B3017187274A335A00B0E695 /* libminizip-tvOS.a */, - B3017194274A335B00B0E695 /* libsamplerate-tvOS.a */, - B301719E274A335C00B0E695 /* libSimpleINI-tvOS.a */, - B30171B6274A335D00B0E695 /* libzlib-tvOS.a */, - B30171D6274A335E00B0E695 /* libvixl-tvOS.a */, - B30171EB274A335E00B0E695 /* libllzma-tvOS.a */, - B3017205274A335F00B0E695 /* librcheevos-tvOS.a */, - B301720F274A336000B0E695 /* libtinyxml-tvOS.a */, - B301721B274A336100B0E695 /* libstb-tvOS.a */, - B3017225274A336200B0E695 /* libvulkan-loader-tvOS.a */, - B3017259274A336300B0E695 /* libglslangd-tvOS.a */, - B3017271274A336400B0E695 /* libcubeb-tvOS.a */, - B301727B274A336500B0E695 /* libglad-tvOS.a */, - B3017285274A336600B0E695 /* libdxxhash-tvOS.a */, ); name = Products; sourceTree = ""; @@ -3558,27 +2790,27 @@ B3D8A54A26BE55CD0096A354 /* duckstation */ = { isa = PBXGroup; children = ( - B3D8A54B26BE55CD0096A354 /* gamedb */, - B3D8A56726BE55CE0096A354 /* CMakeLists.txt */, + B3D8A8E726BE55D10096A354 /* .clang-format */, + B3D8A8EF26BE55D10096A354 /* .gitattributes */, + B3D8A56E26BE55CE0096A354 /* .gitignore */, + B3D8A56B26BE55CE0096A354 /* .gitmodules */, B3D8A56826BE55CE0096A354 /* LICENSE */, + B3D8A92326BE55D10096A354 /* CMakeSettings.json */, + B3D8A56F26BE55CE0096A354 /* CONTRIBUTORS.md */, B3D8A56926BE55CE0096A354 /* NEWS.md */, - B3D8A56A26BE55CE0096A354 /* duckstation-uwp.sln */, - B3D8A56B26BE55CE0096A354 /* .gitmodules */, B3D8A56C26BE55CE0096A354 /* README.md */, B3D8A56D26BE55CE0096A354 /* README.pt-br.md */, - B3D8A56E26BE55CE0096A354 /* .gitignore */, - B3D8A56F26BE55CE0096A354 /* CONTRIBUTORS.md */, - B3D8A57026BE55CE0096A354 /* dep */, - B3D8A8DC26BE55D10096A354 /* scripts */, - B3D8A8E726BE55D10096A354 /* .clang-format */, + B3D8A56A26BE55CE0096A354 /* duckstation-uwp.sln */, + B3D8A92426BE55D10096A354 /* duckstation.sln */, + B3D8A56726BE55CE0096A354 /* CMakeLists.txt */, B3D8A8E826BE55D10096A354 /* .github */, - B3D8A8EF26BE55D10096A354 /* .gitattributes */, B3D8A8F026BE55D10096A354 /* CMakeModules */, B3D8A8FD26BE55D10096A354 /* data */, - B3D8A92326BE55D10096A354 /* CMakeSettings.json */, - B3D8A92426BE55D10096A354 /* duckstation.sln */, - B3D8A92526BE55D10096A354 /* src */, + B3D8A57026BE55CE0096A354 /* dep */, B3D8AD2C26BE55D60096A354 /* extras */, + B3D8A54B26BE55CD0096A354 /* gamedb */, + B3D8A8DC26BE55D10096A354 /* scripts */, + B3D8A92526BE55D10096A354 /* src */, ); path = duckstation; sourceTree = ""; @@ -5428,17 +4660,17 @@ B3D8A92526BE55D10096A354 /* src */ = { isa = PBXGroup; children = ( - B3D8A92626BE55D10096A354 /* scmversion */, B3D8A92E26BE55D10096A354 /* CMakeLists.txt */, + B3D8AA5326BE55D30096A354 /* common */, + B3D8AA4326BE55D20096A354 /* common-tests */, B3D8A92F26BE55D10096A354 /* core */, + B3D8AD1626BE55D60096A354 /* duckstation-nogui */, + B3D8AB0626BE55D30096A354 /* duckstation-qt */, + B3D8AD0C26BE55D60096A354 /* duckstation-regtest */, B3D8A9A926BE55D20096A354 /* duckstation-uwp */, B3D8A9EA26BE55D20096A354 /* frontend-common */, - B3D8AA4326BE55D20096A354 /* common-tests */, + B3D8A92626BE55D10096A354 /* scmversion */, B3D8AA4B26BE55D30096A354 /* updater */, - B3D8AA5326BE55D30096A354 /* common */, - B3D8AB0626BE55D30096A354 /* duckstation-qt */, - B3D8AD0C26BE55D60096A354 /* duckstation-regtest */, - B3D8AD1626BE55D60096A354 /* duckstation-nogui */, ); path = src; sourceTree = ""; @@ -6732,432 +5964,134 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73D251E9EAF1C0023925B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D8A53426BE48CA0096A354 /* PVDuckStation.h in Headers */, - B3D8A53026BE48CA0096A354 /* PVDuckStation.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B30170D3274A335500B0E695 /* duckstation-tvOS */ = { + B36DE7471D6AB19C002EE3ED /* PVDuckStation */ = { isa = PBXNativeTarget; - buildConfigurationList = B301714C274A335500B0E695 /* Build configuration list for PBXNativeTarget "duckstation-tvOS" */; + buildConfigurationList = B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVDuckStation" */; buildPhases = ( - B30170D4274A335500B0E695 /* Sources */, - B3017149274A335500B0E695 /* Frameworks */, - B301714B274A335500B0E695 /* CopyFiles */, + B36DE7451D6AB19C002EE3ED /* Headers */, + B36DE7431D6AB19C002EE3ED /* Sources */, + B36DE7441D6AB19C002EE3ED /* Frameworks */, + B36DE7461D6AB19C002EE3ED /* Resources */, ); buildRules = ( ); dependencies = ( + B3D8AD4F26BE55E20096A354 /* PBXTargetDependency */, + B3C2919926DEECB8003CB9D4 /* PBXTargetDependency */, + B3C2919C26DEECB8003CB9D4 /* PBXTargetDependency */, + B3C2919F26DEECB8003CB9D4 /* PBXTargetDependency */, + B3C291A226DEECB8003CB9D4 /* PBXTargetDependency */, + B3C291A526DEECB8003CB9D4 /* PBXTargetDependency */, + B3C291A826DEECB8003CB9D4 /* PBXTargetDependency */, + B3C291F026DEEDF9003CB9D4 /* PBXTargetDependency */, + B3C2920626DEF8B6003CB9D4 /* PBXTargetDependency */, + B3C2924326DEFEE6003CB9D4 /* PBXTargetDependency */, + B3C2927E26DF02B5003CB9D4 /* PBXTargetDependency */, + B3C2929226DF031B003CB9D4 /* PBXTargetDependency */, + B3C292FA26DF0C3C003CB9D4 /* PBXTargetDependency */, + B3C2930C26DF0CB1003CB9D4 /* PBXTargetDependency */, + B3C2931F26DF0D9E003CB9D4 /* PBXTargetDependency */, ); - name = "duckstation-tvOS"; - productName = duckstation; - productReference = B3017150274A335500B0E695 /* libduckstation-tvOS.a */; - productType = "com.apple.product-type.library.static"; + name = PVDuckStation; + productName = PVAtari800; + productReference = B36DE7481D6AB19C002EE3ED /* PVDuckStation.framework */; + productType = "com.apple.product-type.framework"; }; - B3017151274A335900B0E695 /* FLAC-tvOS */ = { + B3C290C926DE95AE003CB9D4 /* FLAC */ = { isa = PBXNativeTarget; - buildConfigurationList = B3017168274A335900B0E695 /* Build configuration list for PBXNativeTarget "FLAC-tvOS" */; + buildConfigurationList = B3C290D026DE95AE003CB9D4 /* Build configuration list for PBXNativeTarget "FLAC" */; buildPhases = ( - B3017152274A335900B0E695 /* Sources */, - B3017166274A335900B0E695 /* Frameworks */, - B3017167274A335900B0E695 /* CopyFiles */, + B3C290C626DE95AE003CB9D4 /* Sources */, + B3C290C726DE95AE003CB9D4 /* Frameworks */, + B3C290C826DE95AE003CB9D4 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "FLAC-tvOS"; + name = FLAC; productName = flac; - productReference = B301716C274A335900B0E695 /* libFLAC-tvOS.a */; + productReference = B3C290CA26DE95AE003CB9D4 /* libFLAC.a */; productType = "com.apple.product-type.library.static"; }; - B301716D274A335900B0E695 /* chdr-tvOS */ = { + B3C290EA26DEB78F003CB9D4 /* chdr */ = { isa = PBXNativeTarget; - buildConfigurationList = B3017176274A335900B0E695 /* Build configuration list for PBXNativeTarget "chdr-tvOS" */; + buildConfigurationList = B3C2910126DEB78F003CB9D4 /* Build configuration list for PBXNativeTarget "chdr" */; buildPhases = ( - B301716E274A335900B0E695 /* Sources */, - B3017174274A335900B0E695 /* Frameworks */, - B3017175274A335900B0E695 /* CopyFiles */, + B3C290EB26DEB78F003CB9D4 /* Sources */, + B3C290FF26DEB78F003CB9D4 /* Frameworks */, + B3C2910026DEB78F003CB9D4 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "chdr-tvOS"; + name = chdr; productName = flac; - productReference = B301717A274A335900B0E695 /* libchdr-tvOS.a */; + productReference = B3C2910526DEB78F003CB9D4 /* libchdr.a */; productType = "com.apple.product-type.library.static"; }; - B301717B274A335A00B0E695 /* minizip-tvOS */ = { + B3C2911226DEC8D9003CB9D4 /* minizip */ = { isa = PBXNativeTarget; - buildConfigurationList = B3017183274A335A00B0E695 /* Build configuration list for PBXNativeTarget "minizip-tvOS" */; + buildConfigurationList = B3C2911926DEC8DA003CB9D4 /* Build configuration list for PBXNativeTarget "minizip" */; buildPhases = ( - B301717C274A335A00B0E695 /* Sources */, - B3017181274A335A00B0E695 /* Frameworks */, - B3017182274A335A00B0E695 /* CopyFiles */, + B3C2910F26DEC8D9003CB9D4 /* Sources */, + B3C2911026DEC8D9003CB9D4 /* Frameworks */, + B3C2911126DEC8D9003CB9D4 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "minizip-tvOS"; + name = minizip; productName = minizip; - productReference = B3017187274A335A00B0E695 /* libminizip-tvOS.a */; + productReference = B3C2911326DEC8D9003CB9D4 /* libminizip.a */; productType = "com.apple.product-type.library.static"; }; - B3017188274A335B00B0E695 /* samplerate-tvOS */ = { + B3C2913C26DEC91C003CB9D4 /* SimpleINI */ = { isa = PBXNativeTarget; - buildConfigurationList = B3017190274A335B00B0E695 /* Build configuration list for PBXNativeTarget "samplerate-tvOS" */; + buildConfigurationList = B3C2914326DEC91C003CB9D4 /* Build configuration list for PBXNativeTarget "SimpleINI" */; buildPhases = ( - B3017189274A335B00B0E695 /* Sources */, - B301718E274A335B00B0E695 /* Frameworks */, - B301718F274A335B00B0E695 /* CopyFiles */, + B3C2913926DEC91C003CB9D4 /* Sources */, + B3C2913A26DEC91C003CB9D4 /* Frameworks */, + B3C2913B26DEC91C003CB9D4 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "samplerate-tvOS"; - productName = samplerate; - productReference = B3017194274A335B00B0E695 /* libsamplerate-tvOS.a */; + name = SimpleINI; + productName = simpleini; + productReference = B3C2913D26DEC91C003CB9D4 /* libSimpleINI.a */; productType = "com.apple.product-type.library.static"; }; - B3017195274A335C00B0E695 /* SimpleINI-tvOS */ = { + B3C2914A26DEC93D003CB9D4 /* zlib */ = { isa = PBXNativeTarget; - buildConfigurationList = B301719A274A335C00B0E695 /* Build configuration list for PBXNativeTarget "SimpleINI-tvOS" */; + buildConfigurationList = B3C2915126DEC93E003CB9D4 /* Build configuration list for PBXNativeTarget "zlib" */; buildPhases = ( - B3017196274A335C00B0E695 /* Sources */, - B3017198274A335C00B0E695 /* Frameworks */, - B3017199274A335C00B0E695 /* CopyFiles */, + B3C2914726DEC93D003CB9D4 /* Sources */, + B3C2914826DEC93D003CB9D4 /* Frameworks */, + B3C2914926DEC93D003CB9D4 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "SimpleINI-tvOS"; - productName = simpleini; - productReference = B301719E274A335C00B0E695 /* libSimpleINI-tvOS.a */; + name = zlib; + productName = zlib; + productReference = B3C2914B26DEC93D003CB9D4 /* libzlib.a */; productType = "com.apple.product-type.library.static"; }; - B301719F274A335D00B0E695 /* zlib-tvOS */ = { + B3C2916626DEC963003CB9D4 /* vixl */ = { isa = PBXNativeTarget; - buildConfigurationList = B30171B2274A335D00B0E695 /* Build configuration list for PBXNativeTarget "zlib-tvOS" */; + buildConfigurationList = B3C2916D26DEC963003CB9D4 /* Build configuration list for PBXNativeTarget "vixl" */; buildPhases = ( - B30171A0274A335D00B0E695 /* Sources */, - B30171B0274A335D00B0E695 /* Frameworks */, - B30171B1274A335D00B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "zlib-tvOS"; - productName = zlib; - productReference = B30171B6274A335D00B0E695 /* libzlib-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B30171B7274A335E00B0E695 /* vixl-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B30171D2274A335E00B0E695 /* Build configuration list for PBXNativeTarget "vixl-tvOS" */; - buildPhases = ( - B30171B8274A335E00B0E695 /* Sources */, - B30171D0274A335E00B0E695 /* Frameworks */, - B30171D1274A335E00B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "vixl-tvOS"; - productName = vixl; - productReference = B30171D6274A335E00B0E695 /* libvixl-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B30171D7274A335E00B0E695 /* llzma-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B30171E7274A335E00B0E695 /* Build configuration list for PBXNativeTarget "llzma-tvOS" */; - buildPhases = ( - B30171D8274A335E00B0E695 /* Sources */, - B30171E5274A335E00B0E695 /* Frameworks */, - B30171E6274A335E00B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "llzma-tvOS"; - productName = lzma; - productReference = B30171EB274A335E00B0E695 /* libllzma-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B30171EC274A335F00B0E695 /* rcheevos-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3017201274A335F00B0E695 /* Build configuration list for PBXNativeTarget "rcheevos-tvOS" */; - buildPhases = ( - B30171ED274A335F00B0E695 /* Sources */, - B30171FF274A335F00B0E695 /* Frameworks */, - B3017200274A335F00B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "rcheevos-tvOS"; - productName = cheevos; - productReference = B3017205274A335F00B0E695 /* librcheevos-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3017206274A336000B0E695 /* tinyxml-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B301720B274A336000B0E695 /* Build configuration list for PBXNativeTarget "tinyxml-tvOS" */; - buildPhases = ( - B3017207274A336000B0E695 /* Sources */, - B3017209274A336000B0E695 /* Frameworks */, - B301720A274A336000B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "tinyxml-tvOS"; - productName = tinyxml; - productReference = B301720F274A336000B0E695 /* libtinyxml-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3017210274A336100B0E695 /* stb-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3017217274A336100B0E695 /* Build configuration list for PBXNativeTarget "stb-tvOS" */; - buildPhases = ( - B3017211274A336100B0E695 /* Sources */, - B3017215274A336100B0E695 /* Frameworks */, - B3017216274A336100B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "stb-tvOS"; - productName = stb; - productReference = B301721B274A336100B0E695 /* libstb-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B301721C274A336200B0E695 /* vulkan-loader-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3017221274A336200B0E695 /* Build configuration list for PBXNativeTarget "vulkan-loader-tvOS" */; - buildPhases = ( - B301721D274A336200B0E695 /* Sources */, - B301721F274A336200B0E695 /* Frameworks */, - B3017220274A336200B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "vulkan-loader-tvOS"; - productName = "vulkan-loader"; - productReference = B3017225274A336200B0E695 /* libvulkan-loader-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3017226274A336300B0E695 /* glslangd-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3017255274A336300B0E695 /* Build configuration list for PBXNativeTarget "glslangd-tvOS" */; - buildPhases = ( - B3017227274A336300B0E695 /* Sources */, - B3017253274A336300B0E695 /* Frameworks */, - B3017254274A336300B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "glslangd-tvOS"; - productName = glslang; - productReference = B3017259274A336300B0E695 /* libglslangd-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3017263274A336400B0E695 /* cubeb-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B301726D274A336400B0E695 /* Build configuration list for PBXNativeTarget "cubeb-tvOS" */; - buildPhases = ( - B3017264274A336400B0E695 /* Sources */, - B301726B274A336400B0E695 /* Frameworks */, - B301726C274A336400B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "cubeb-tvOS"; - productName = cubeb; - productReference = B3017271274A336400B0E695 /* libcubeb-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3017272274A336500B0E695 /* glad-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3017277274A336500B0E695 /* Build configuration list for PBXNativeTarget "glad-tvOS" */; - buildPhases = ( - B3017273274A336500B0E695 /* Sources */, - B3017275274A336500B0E695 /* Frameworks */, - B3017276274A336500B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "glad-tvOS"; - productName = glad; - productReference = B301727B274A336500B0E695 /* libglad-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B301727C274A336600B0E695 /* dxxhash-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3017281274A336600B0E695 /* Build configuration list for PBXNativeTarget "dxxhash-tvOS" */; - buildPhases = ( - B301727D274A336600B0E695 /* Sources */, - B301727F274A336600B0E695 /* Frameworks */, - B3017280274A336600B0E695 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "dxxhash-tvOS"; - productName = dxxhash; - productReference = B3017285274A336600B0E695 /* libdxxhash-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B36DE7471D6AB19C002EE3ED /* PVDuckStation-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVDuckStation-iOS" */; - buildPhases = ( - B36DE7451D6AB19C002EE3ED /* Headers */, - B36DE7431D6AB19C002EE3ED /* Sources */, - B36DE7441D6AB19C002EE3ED /* Frameworks */, - B36DE7461D6AB19C002EE3ED /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3D8AD4F26BE55E20096A354 /* PBXTargetDependency */, - B3C2919926DEECB8003CB9D4 /* PBXTargetDependency */, - B3C2919C26DEECB8003CB9D4 /* PBXTargetDependency */, - B3C2919F26DEECB8003CB9D4 /* PBXTargetDependency */, - B3C291A226DEECB8003CB9D4 /* PBXTargetDependency */, - B3C291A526DEECB8003CB9D4 /* PBXTargetDependency */, - B3C291A826DEECB8003CB9D4 /* PBXTargetDependency */, - B3C291F026DEEDF9003CB9D4 /* PBXTargetDependency */, - B3C2920626DEF8B6003CB9D4 /* PBXTargetDependency */, - B3C2924326DEFEE6003CB9D4 /* PBXTargetDependency */, - B3C2927E26DF02B5003CB9D4 /* PBXTargetDependency */, - B3C2929226DF031B003CB9D4 /* PBXTargetDependency */, - B3C292FA26DF0C3C003CB9D4 /* PBXTargetDependency */, - B3C2930C26DF0CB1003CB9D4 /* PBXTargetDependency */, - B3C2931F26DF0D9E003CB9D4 /* PBXTargetDependency */, - ); - name = "PVDuckStation-iOS"; - productName = PVAtari800; - productReference = B36DE7481D6AB19C002EE3ED /* PVDuckStation.framework */; - productType = "com.apple.product-type.framework"; - }; - B3C290C926DE95AE003CB9D4 /* FLAC */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C290D026DE95AE003CB9D4 /* Build configuration list for PBXNativeTarget "FLAC" */; - buildPhases = ( - B3C290C626DE95AE003CB9D4 /* Sources */, - B3C290C726DE95AE003CB9D4 /* Frameworks */, - B3C290C826DE95AE003CB9D4 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FLAC; - productName = flac; - productReference = B3C290CA26DE95AE003CB9D4 /* libFLAC.a */; - productType = "com.apple.product-type.library.static"; - }; - B3C290EA26DEB78F003CB9D4 /* chdr */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C2910126DEB78F003CB9D4 /* Build configuration list for PBXNativeTarget "chdr" */; - buildPhases = ( - B3C290EB26DEB78F003CB9D4 /* Sources */, - B3C290FF26DEB78F003CB9D4 /* Frameworks */, - B3C2910026DEB78F003CB9D4 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = chdr; - productName = flac; - productReference = B3C2910526DEB78F003CB9D4 /* libchdr.a */; - productType = "com.apple.product-type.library.static"; - }; - B3C2911226DEC8D9003CB9D4 /* minizip */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C2911926DEC8DA003CB9D4 /* Build configuration list for PBXNativeTarget "minizip" */; - buildPhases = ( - B3C2910F26DEC8D9003CB9D4 /* Sources */, - B3C2911026DEC8D9003CB9D4 /* Frameworks */, - B3C2911126DEC8D9003CB9D4 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = minizip; - productName = minizip; - productReference = B3C2911326DEC8D9003CB9D4 /* libminizip.a */; - productType = "com.apple.product-type.library.static"; - }; - B3C2913C26DEC91C003CB9D4 /* SimpleINI */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C2914326DEC91C003CB9D4 /* Build configuration list for PBXNativeTarget "SimpleINI" */; - buildPhases = ( - B3C2913926DEC91C003CB9D4 /* Sources */, - B3C2913A26DEC91C003CB9D4 /* Frameworks */, - B3C2913B26DEC91C003CB9D4 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SimpleINI; - productName = simpleini; - productReference = B3C2913D26DEC91C003CB9D4 /* libSimpleINI.a */; - productType = "com.apple.product-type.library.static"; - }; - B3C2914A26DEC93D003CB9D4 /* zlib */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C2915126DEC93E003CB9D4 /* Build configuration list for PBXNativeTarget "zlib" */; - buildPhases = ( - B3C2914726DEC93D003CB9D4 /* Sources */, - B3C2914826DEC93D003CB9D4 /* Frameworks */, - B3C2914926DEC93D003CB9D4 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = zlib; - productName = zlib; - productReference = B3C2914B26DEC93D003CB9D4 /* libzlib.a */; - productType = "com.apple.product-type.library.static"; - }; - B3C2916626DEC963003CB9D4 /* vixl */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C2916D26DEC963003CB9D4 /* Build configuration list for PBXNativeTarget "vixl" */; - buildPhases = ( - B3C2916326DEC963003CB9D4 /* Sources */, - B3C2916426DEC963003CB9D4 /* Frameworks */, - B3C2916526DEC963003CB9D4 /* CopyFiles */, + B3C2916326DEC963003CB9D4 /* Sources */, + B3C2916426DEC963003CB9D4 /* Frameworks */, + B3C2916526DEC963003CB9D4 /* CopyFiles */, ); buildRules = ( ); @@ -7355,41 +6289,6 @@ productReference = B3C2931126DF0D83003CB9D4 /* libdxxhash.a */; productType = "com.apple.product-type.library.static"; }; - B3D73CF11E9EAF1C0023925B /* PVDuckStation-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3D73D301E9EAF1C0023925B /* Build configuration list for PBXNativeTarget "PVDuckStation-tvOS" */; - buildPhases = ( - B3D73D251E9EAF1C0023925B /* Headers */, - B3D73CF21E9EAF1C0023925B /* Sources */, - B3D73D201E9EAF1C0023925B /* Frameworks */, - B3D73D2A1E9EAF1C0023925B /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3017288274A33AD00B0E695 /* PBXTargetDependency */, - B301728B274A33AD00B0E695 /* PBXTargetDependency */, - B301728E274A33AD00B0E695 /* PBXTargetDependency */, - B3017291274A33AD00B0E695 /* PBXTargetDependency */, - B3017294274A33AD00B0E695 /* PBXTargetDependency */, - B3017297274A33AD00B0E695 /* PBXTargetDependency */, - B301729A274A33AD00B0E695 /* PBXTargetDependency */, - B301729D274A33AD00B0E695 /* PBXTargetDependency */, - B30172A0274A33AD00B0E695 /* PBXTargetDependency */, - B30172A6274A33AD00B0E695 /* PBXTargetDependency */, - B30172A9274A33AD00B0E695 /* PBXTargetDependency */, - B30172AC274A33AD00B0E695 /* PBXTargetDependency */, - B30172AF274A33AD00B0E695 /* PBXTargetDependency */, - B30172B2274A33AD00B0E695 /* PBXTargetDependency */, - B30172B5274A33AD00B0E695 /* PBXTargetDependency */, - B30172B8274A33AD00B0E695 /* PBXTargetDependency */, - B30172BB274A33AD00B0E695 /* PBXTargetDependency */, - ); - name = "PVDuckStation-tvOS"; - productName = PVAtari800; - productReference = B3D73D331E9EAF1C0023925B /* PVDuckStation.framework */; - productType = "com.apple.product-type.framework"; - }; B3D8A53F26BE55780096A354 /* duckstation */ = { isa = PBXNativeTarget; buildConfigurationList = B3D8A54626BE55780096A354 /* Build configuration list for PBXNativeTarget "duckstation" */; @@ -7487,8 +6386,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B36DE7471D6AB19C002EE3ED /* PVDuckStation-iOS */, - B3D73CF11E9EAF1C0023925B /* PVDuckStation-tvOS */, + B36DE7471D6AB19C002EE3ED /* PVDuckStation */, B3D8A53F26BE55780096A354 /* duckstation */, B3C290C926DE95AE003CB9D4 /* FLAC */, B3C290EA26DEB78F003CB9D4 /* chdr */, @@ -7507,23 +6405,6 @@ B3C292E426DF0BDC003CB9D4 /* cubeb */, B3C292FE26DF0C9E003CB9D4 /* glad */, B3C2931026DF0D83003CB9D4 /* dxxhash */, - B301727C274A336600B0E695 /* dxxhash-tvOS */, - B30170D3274A335500B0E695 /* duckstation-tvOS */, - B3017151274A335900B0E695 /* FLAC-tvOS */, - B301716D274A335900B0E695 /* chdr-tvOS */, - B301717B274A335A00B0E695 /* minizip-tvOS */, - B3017188274A335B00B0E695 /* samplerate-tvOS */, - B3017195274A335C00B0E695 /* SimpleINI-tvOS */, - B301719F274A335D00B0E695 /* zlib-tvOS */, - B30171B7274A335E00B0E695 /* vixl-tvOS */, - B30171D7274A335E00B0E695 /* llzma-tvOS */, - B30171EC274A335F00B0E695 /* rcheevos-tvOS */, - B3017206274A336000B0E695 /* tinyxml-tvOS */, - B3017210274A336100B0E695 /* stb-tvOS */, - B301721C274A336200B0E695 /* vulkan-loader-tvOS */, - B3017226274A336300B0E695 /* glslangd-tvOS */, - B3017263274A336400B0E695 /* cubeb-tvOS */, - B3017272274A336500B0E695 /* glad-tvOS */, ); }; /* End PBXProject section */ @@ -7540,419 +6421,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73D2A1E9EAF1C0023925B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D0143B26E05F6500860FF9 /* OEOverrides.ini in Resources */, - B3D8A52C26BE48CA0096A354 /* InfoPlist.strings in Resources */, - B3D8A52E26BE48CA0096A354 /* Core.plist in Resources */, - B3D8A53226BE48CA0096A354 /* DuckStation-Info.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B30170D4274A335500B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3017302274A3A3D00B0E695 /* file_system.cpp in Sources */, - B30172D1274A3A3C00B0E695 /* pad.cpp in Sources */, - B301711E274A335500B0E695 /* staging_buffer.cpp in Sources */, - B30172FC274A3A3D00B0E695 /* cd_image_chd.cpp in Sources */, - B30172E9274A3A3C00B0E695 /* gpu.cpp in Sources */, - B30172D2274A3A3C00B0E695 /* timestamp.cpp in Sources */, - B30172FE274A3A3D00B0E695 /* analog_joystick.cpp in Sources */, - B30172E1274A3A3C00B0E695 /* cpu_types.cpp in Sources */, - B3017310274A3A3D00B0E695 /* md5_digest.cpp in Sources */, - B301711F274A335500B0E695 /* analog_controller.cpp in Sources */, - B30172E7274A3A3C00B0E695 /* dma.cpp in Sources */, - B3017120274A335500B0E695 /* texture.cpp in Sources */, - B3017121274A335500B0E695 /* log.cpp in Sources */, - B30172E2274A3A3C00B0E695 /* gdb_protocol.cpp in Sources */, - B3017122274A335500B0E695 /* system.cpp in Sources */, - B30172F3274A3A3D00B0E695 /* stream_buffer.cpp in Sources */, - B3017123274A335500B0E695 /* timer.cpp in Sources */, - B3017124274A335500B0E695 /* iso_reader.cpp in Sources */, - B3017304274A3A3D00B0E695 /* cd_image_pbp.cpp in Sources */, - B30172E3274A3A3C00B0E695 /* resources.cpp in Sources */, - B30172DF274A3A3C00B0E695 /* texture.cpp in Sources */, - B3017303274A3A3D00B0E695 /* cd_image_bin.cpp in Sources */, - B30172F6274A3A3D00B0E695 /* memory_arena.cpp in Sources */, - B3017125274A335500B0E695 /* cd_subchannel_replacement.cpp in Sources */, - B30172DB274A3A3C00B0E695 /* cubeb_audio_stream.cpp in Sources */, - B3017126274A335500B0E695 /* wav_writer.cpp in Sources */, - B3017127274A335500B0E695 /* host_interface_progress_callback.cpp in Sources */, - B30172DA274A3A3C00B0E695 /* texture_replacements.cpp in Sources */, - B30172E0274A3A3C00B0E695 /* builders.cpp in Sources */, - B30172E5274A3A3C00B0E695 /* gpu_hw_opengl.cpp in Sources */, - B30172DD274A3A3C00B0E695 /* event.cpp in Sources */, - B30172D4274A3A3C00B0E695 /* cpu_code_cache.cpp in Sources */, - B30172E8274A3A3C00B0E695 /* gpu_hw_shadergen.cpp in Sources */, - B3017128274A335500B0E695 /* shader_cache.cpp in Sources */, - B30172F1274A3A3D00B0E695 /* stream_buffer.cpp in Sources */, - B3017129274A335500B0E695 /* cd_image_m3u.cpp in Sources */, - B301712A274A335500B0E695 /* cdrom.cpp in Sources */, - B301712B274A335500B0E695 /* cpu_core.cpp in Sources */, - B301712C274A335500B0E695 /* program.cpp in Sources */, - B30172D7274A3A3C00B0E695 /* swap_chain.cpp in Sources */, - B3017305274A3A3D00B0E695 /* string_util.cpp in Sources */, - B30172F4274A3A3D00B0E695 /* negcon.cpp in Sources */, - B3017308274A3A3D00B0E695 /* null_audio_stream.cpp in Sources */, - B301712D274A335500B0E695 /* libcrypt_game_codes.cpp in Sources */, - B301712E274A335500B0E695 /* cpu_disasm.cpp in Sources */, - B3017318274A3E5A00B0E695 /* cheats.cpp in Sources */, - B3017301274A3A3D00B0E695 /* interrupt_controller.cpp in Sources */, - B30172EE274A3A3D00B0E695 /* host_interface.cpp in Sources */, - B301712F274A335500B0E695 /* postprocessing_chain.cpp in Sources */, - B30172D5274A3A3C00B0E695 /* sio.cpp in Sources */, - B3017312274A3A3D00B0E695 /* cd_image_mds.cpp in Sources */, - B30172FD274A3A3D00B0E695 /* state_wrapper.cpp in Sources */, - B30172FB274A3A3D00B0E695 /* postprocessing_shadergen.cpp in Sources */, - B3017130274A335500B0E695 /* context.cpp in Sources */, - B30172EB274A3A3C00B0E695 /* cd_xa.cpp in Sources */, - B30172F7274A3A3D00B0E695 /* minizip_helpers.cpp in Sources */, - B30172F0274A3A3D00B0E695 /* string.cpp in Sources */, - B3017131274A335500B0E695 /* gpu_sw.cpp in Sources */, - B3017133274A335500B0E695 /* shader_cache.cpp in Sources */, - B30172F5274A3A3D00B0E695 /* mdec.cpp in Sources */, - B30172EA274A3A3C00B0E695 /* audio_stream.cpp in Sources */, - B3017134274A335500B0E695 /* cd_image_memory.cpp in Sources */, - B3017135274A335500B0E695 /* context.cpp in Sources */, - B301730E274A3A3D00B0E695 /* host_display.cpp in Sources */, - B3017136274A335500B0E695 /* thread_pool.cpp in Sources */, - B30172EF274A3A3D00B0E695 /* playstation_mouse.cpp in Sources */, - B301730B274A3A3D00B0E695 /* digital_controller.cpp in Sources */, - B30172DC274A3A3C00B0E695 /* byte_stream.cpp in Sources */, - B3017137274A335500B0E695 /* psf_loader.cpp in Sources */, - B3017138274A335500B0E695 /* cd_image_hasher.cpp in Sources */, - B30172F8274A3A3D00B0E695 /* image.cpp in Sources */, - B3017139274A335500B0E695 /* window_info.cpp in Sources */, - B30172F2274A3A3D00B0E695 /* util.cpp in Sources */, - B3017311274A3A3D00B0E695 /* ini_settings_interface.cpp in Sources */, - B3017313274A3A3D00B0E695 /* shiftjis.cpp in Sources */, - B301713A274A335500B0E695 /* namco_guncon.cpp in Sources */, - B30172D3274A3A3C00B0E695 /* memory_card_image.cpp in Sources */, - B30172FA274A3A3D00B0E695 /* spu.cpp in Sources */, - B301713B274A335500B0E695 /* cd_image_ecm.cpp in Sources */, - B30172F9274A3A3D00B0E695 /* pgxp.cpp in Sources */, - B301713C274A335500B0E695 /* cd_image_device.cpp in Sources */, - B30172E4274A3A3C00B0E695 /* shader_compiler.cpp in Sources */, - B301713D274A335500B0E695 /* staging_texture.cpp in Sources */, - B301730D274A3A3D00B0E695 /* cue_parser.cpp in Sources */, - B301713E274A335500B0E695 /* gpu_commands.cpp in Sources */, - B3017317274A3E4A00B0E695 /* bus.cpp in Sources */, - B301713F274A335500B0E695 /* gpu_hw_vulkan.cpp in Sources */, - B30172D6274A3A3C00B0E695 /* bios.cpp in Sources */, - B301730A274A3A3D00B0E695 /* cdrom_async_reader.cpp in Sources */, - B301730F274A3A3D00B0E695 /* timers.cpp in Sources */, - B3017300274A3A3D00B0E695 /* progress_callback.cpp in Sources */, - B3017306274A3A3D00B0E695 /* cd_image_ppf.cpp in Sources */, - B30172E6274A3A3C00B0E695 /* gpu_backend.cpp in Sources */, - B301730C274A3A3D00B0E695 /* gte.cpp in Sources */, - B30172EC274A3A3C00B0E695 /* gpu_hw.cpp in Sources */, - B3017140274A335500B0E695 /* jit_code_buffer.cpp in Sources */, - B30172ED274A3A3C00B0E695 /* shadergen.cpp in Sources */, - B3017141274A335500B0E695 /* controller.cpp in Sources */, - B3017142274A335500B0E695 /* crash_handler.cpp in Sources */, - B30172FF274A3A3D00B0E695 /* page_fault_handler.cpp in Sources */, - B3017143274A335500B0E695 /* timing_event.cpp in Sources */, - B3017144274A335500B0E695 /* cd_image_cue.cpp in Sources */, - B3017145274A335500B0E695 /* postprocessing_shader.cpp in Sources */, - B3017309274A3A3D00B0E695 /* gpu_sw_backend.cpp in Sources */, - B30172D8274A3A3C00B0E695 /* game_settings.cpp in Sources */, - B3017146274A335500B0E695 /* assert.cpp in Sources */, - B30172D9274A3A3C00B0E695 /* multitap.cpp in Sources */, - B3017307274A3A3D00B0E695 /* settings.cpp in Sources */, - B3017147274A335500B0E695 /* memory_card.cpp in Sources */, - B30172DE274A3A3C00B0E695 /* cd_image.cpp in Sources */, - B3017148274A335500B0E695 /* error.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017152274A335900B0E695 /* Sources */ = { + B36DE7431D6AB19C002EE3ED /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3017153274A335900B0E695 /* metadata_iterators.c in Sources */, - B3017154274A335900B0E695 /* bitreader.c in Sources */, - B3017155274A335900B0E695 /* md5.c in Sources */, - B3017156274A335900B0E695 /* lpc_intrin_avx2.c in Sources */, - B3017157274A335900B0E695 /* fixed_intrin_sse2.c in Sources */, - B3017158274A335900B0E695 /* lpc_intrin_sse2.c in Sources */, - B3017159274A335900B0E695 /* fixed_intrin_ssse3.c in Sources */, - B301715A274A335900B0E695 /* metadata_object.c in Sources */, - B301715B274A335900B0E695 /* bitmath.c in Sources */, - B301715C274A335900B0E695 /* lpc_intrin_sse41.c in Sources */, - B301715D274A335900B0E695 /* float.c in Sources */, - B301715E274A335900B0E695 /* crc.c in Sources */, - B301715F274A335900B0E695 /* lpc_intrin_sse.c in Sources */, - B3017160274A335900B0E695 /* format.c in Sources */, - B3017161274A335900B0E695 /* lpc.c in Sources */, - B3017162274A335900B0E695 /* fixed.c in Sources */, - B3017163274A335900B0E695 /* memory.c in Sources */, - B3017164274A335900B0E695 /* cpu.c in Sources */, - B3017165274A335900B0E695 /* stream_decoder.c in Sources */, + B3D0143626DF190300860FF9 /* context_agl_ios.mm in Sources */, + B3C2906226DDD28D003CB9D4 /* OpenGLHostDisplay.mm in Sources */, + B3D8A53B26BE4A6D0096A354 /* PVDuckStation.swift in Sources */, + B3D8A53526BE48CA0096A354 /* PVDuckStation.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B301716E274A335900B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B301716F274A335900B0E695 /* libchdr_flac.c in Sources */, - B3017170274A335900B0E695 /* libchdr_huffman.c in Sources */, - B3017171274A335900B0E695 /* libchdr_bitstream.c in Sources */, - B3017172274A335900B0E695 /* libchdr_cdrom.c in Sources */, - B3017173274A335900B0E695 /* libchdr_chd.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B301717C274A335A00B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B301717D274A335A00B0E695 /* unzip.c in Sources */, - B301717E274A335A00B0E695 /* zip.c in Sources */, - B301717F274A335A00B0E695 /* mztools.c in Sources */, - B3017180274A335A00B0E695 /* ioapi.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017189274A335B00B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B301718A274A335B00B0E695 /* src_sinc.c in Sources */, - B301718B274A335B00B0E695 /* src_zoh.c in Sources */, - B301718C274A335B00B0E695 /* samplerate.c in Sources */, - B301718D274A335B00B0E695 /* src_linear.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017196274A335C00B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3017197274A335C00B0E695 /* ConvertUTF.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B30171A0274A335D00B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B30171A1274A335D00B0E695 /* gzread.c in Sources */, - B30171A2274A335D00B0E695 /* compress.c in Sources */, - B30171A3274A335D00B0E695 /* infback.c in Sources */, - B30171A4274A335D00B0E695 /* gzlib.c in Sources */, - B30171A5274A335D00B0E695 /* inffast.c in Sources */, - B30171A6274A335D00B0E695 /* zutil.c in Sources */, - B30171A7274A335D00B0E695 /* inflate.c in Sources */, - B30171A8274A335D00B0E695 /* trees.c in Sources */, - B30171A9274A335D00B0E695 /* crc32.c in Sources */, - B30171AA274A335D00B0E695 /* uncompr.c in Sources */, - B30171AB274A335D00B0E695 /* deflate.c in Sources */, - B30171AC274A335D00B0E695 /* adler32.c in Sources */, - B30171AD274A335D00B0E695 /* gzclose.c in Sources */, - B30171AE274A335D00B0E695 /* gzwrite.c in Sources */, - B30171AF274A335D00B0E695 /* inftrees.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B30171B8274A335E00B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B30171B9274A335E00B0E695 /* disasm-aarch32.cc in Sources */, - B30171BA274A335E00B0E695 /* operands-aarch32.cc in Sources */, - B30171BB274A335E00B0E695 /* decoder-aarch64.cc in Sources */, - B30171BC274A335E00B0E695 /* cpu-features-auditor-aarch64.cc in Sources */, - B30171BD274A335E00B0E695 /* utils-vixl.cc in Sources */, - B30171BE274A335E00B0E695 /* simulator-aarch64.cc in Sources */, - B30171BF274A335E00B0E695 /* compiler-intrinsics-vixl.cc in Sources */, - B30171C0274A335E00B0E695 /* logic-aarch64.cc in Sources */, - B30171C1274A335E00B0E695 /* cpu-features.cc in Sources */, - B30171C2274A335E00B0E695 /* instrument-aarch64.cc in Sources */, - B30171C3274A335E00B0E695 /* operands-aarch64.cc in Sources */, - B30171C4274A335E00B0E695 /* cpu-aarch64.cc in Sources */, - B30171C5274A335E00B0E695 /* code-buffer-vixl.cc in Sources */, - B30171C6274A335E00B0E695 /* macro-assembler-aarch64.cc in Sources */, - B30171C7274A335E00B0E695 /* disasm-aarch64.cc in Sources */, - B30171C8274A335E00B0E695 /* constants-aarch32.cc in Sources */, - B30171C9274A335E00B0E695 /* instructions-aarch32.cc in Sources */, - B30171CA274A335E00B0E695 /* pointer-auth-aarch64.cc in Sources */, - B30171CB274A335E00B0E695 /* macro-assembler-aarch32.cc in Sources */, - B30171CC274A335E00B0E695 /* assembler-aarch32.cc in Sources */, - B30171CD274A335E00B0E695 /* location-aarch32.cc in Sources */, - B30171CE274A335E00B0E695 /* instructions-aarch64.cc in Sources */, - B30171CF274A335E00B0E695 /* assembler-aarch64.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B30171D8274A335E00B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B30171D9274A335E00B0E695 /* Delta.c in Sources */, - B30171DA274A335E00B0E695 /* BraIA64.c in Sources */, - B30171DB274A335E00B0E695 /* LzmaDec.c in Sources */, - B30171DC274A335E00B0E695 /* Lzma86Dec.c in Sources */, - B30171DD274A335E00B0E695 /* Alloc.c in Sources */, - B30171DE274A335E00B0E695 /* Bra86.c in Sources */, - B30171DF274A335E00B0E695 /* Sort.c in Sources */, - B30171E0274A335E00B0E695 /* LzFind.c in Sources */, - B30171E1274A335E00B0E695 /* LzmaEnc.c in Sources */, - B30171E2274A335E00B0E695 /* CpuArch.c in Sources */, - B30171E3274A335E00B0E695 /* LzmaLib.c in Sources */, - B30171E4274A335E00B0E695 /* Lzma86Enc.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B30171ED274A335F00B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B30171EE274A335F00B0E695 /* condset.c in Sources */, - B30171EF274A335F00B0E695 /* runtime.c in Sources */, - B30171F0274A335F00B0E695 /* alloc.c in Sources */, - B30171F1274A335F00B0E695 /* value.c in Sources */, - B30171F2274A335F00B0E695 /* richpresence.c in Sources */, - B30171F3274A335F00B0E695 /* lboard.c in Sources */, - B30171F4274A335F00B0E695 /* memref.c in Sources */, - B30171F5274A335F00B0E695 /* md5.c in Sources */, - B30171F6274A335F00B0E695 /* url.c in Sources */, - B30171F7274A335F00B0E695 /* format.c in Sources */, - B30171F8274A335F00B0E695 /* compat.c in Sources */, - B30171F9274A335F00B0E695 /* hash.c in Sources */, - B30171FA274A335F00B0E695 /* cdreader.c in Sources */, - B30171FB274A335F00B0E695 /* trigger.c in Sources */, - B30171FC274A335F00B0E695 /* consoleinfo.c in Sources */, - B30171FD274A335F00B0E695 /* runtime_progress.c in Sources */, - B30171FE274A335F00B0E695 /* condition.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017207274A336000B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3017208274A336000B0E695 /* tinyxml2.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017211274A336100B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3017212274A336100B0E695 /* stb_image.c in Sources */, - B3017213274A336100B0E695 /* stb_image_resize.c in Sources */, - B3017214274A336100B0E695 /* stb_image_write.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B301721D274A336200B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B301721E274A336200B0E695 /* vulkan_loader.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017227274A336300B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3017228274A336300B0E695 /* CodeGen.cpp in Sources */, - B3017229274A336300B0E695 /* RemoveTree.cpp in Sources */, - B301722A274A336300B0E695 /* intermOut.cpp in Sources */, - B301722B274A336300B0E695 /* SpvBuilder.cpp in Sources */, - B301722C274A336300B0E695 /* glslang_c_interface.cpp in Sources */, - B301722D274A336300B0E695 /* PpScanner.cpp in Sources */, - B301722E274A336300B0E695 /* ParseHelper.cpp in Sources */, - B301722F274A336300B0E695 /* iomapper.cpp in Sources */, - B3017230274A336300B0E695 /* InitializeDll.cpp in Sources */, - B3017231274A336300B0E695 /* ShaderLang.cpp in Sources */, - B3017232274A336300B0E695 /* PpTokens.cpp in Sources */, - B3017233274A336300B0E695 /* Intermediate.cpp in Sources */, - B3017234274A336300B0E695 /* GlslangToSpv.cpp in Sources */, - B3017235274A336300B0E695 /* ResourceLimits.cpp in Sources */, - B3017236274A336300B0E695 /* propagateNoContraction.cpp in Sources */, - B3017237274A336300B0E695 /* PoolAlloc.cpp in Sources */, - B3017238274A336300B0E695 /* SpvTools.cpp in Sources */, - B3017239274A336300B0E695 /* doc.cpp in Sources */, - B301723A274A336300B0E695 /* IntermTraverse.cpp in Sources */, - B301723B274A336300B0E695 /* limits.cpp in Sources */, - B301723C274A336300B0E695 /* Link.cpp in Sources */, - B301723D274A336300B0E695 /* Logger.cpp in Sources */, - B301723E274A336300B0E695 /* linkValidate.cpp in Sources */, - B301723F274A336300B0E695 /* Scan.cpp in Sources */, - B3017240274A336300B0E695 /* ParseContextBase.cpp in Sources */, - B3017241274A336300B0E695 /* PpContext.cpp in Sources */, - B3017242274A336300B0E695 /* SPVRemapper.cpp in Sources */, - B3017243274A336300B0E695 /* glslang_tab.cpp in Sources */, - B3017244274A336300B0E695 /* parseConst.cpp in Sources */, - B3017245274A336300B0E695 /* reflection.cpp in Sources */, - B3017246274A336300B0E695 /* InfoSink.cpp in Sources */, - B3017247274A336300B0E695 /* attribute.cpp in Sources */, - B3017248274A336300B0E695 /* resource_limits_c.cpp in Sources */, - B3017249274A336300B0E695 /* ossource.cpp in Sources */, - B301724A274A336300B0E695 /* SymbolTable.cpp in Sources */, - B301724B274A336300B0E695 /* Constant.cpp in Sources */, - B301724C274A336300B0E695 /* Versions.cpp in Sources */, - B301724D274A336300B0E695 /* SpvPostProcess.cpp in Sources */, - B301724E274A336300B0E695 /* InReadableOrder.cpp in Sources */, - B301724F274A336300B0E695 /* PpAtom.cpp in Sources */, - B3017250274A336300B0E695 /* disassemble.cpp in Sources */, - B3017251274A336300B0E695 /* Initialize.cpp in Sources */, - B3017252274A336300B0E695 /* Pp.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017264274A336400B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3017265274A336400B0E695 /* cubeb_mixer.cpp in Sources */, - B3017266274A336400B0E695 /* cubeb.c in Sources */, - B3017267274A336400B0E695 /* cubeb_log.cpp in Sources */, - B3017268274A336400B0E695 /* cubeb_strings.c in Sources */, - B3017269274A336400B0E695 /* cubeb_resampler.cpp in Sources */, - B301726A274A336400B0E695 /* cubeb_utils.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3017273274A336500B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3017274274A336500B0E695 /* glad.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B301727D274A336600B0E695 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B301727E274A336600B0E695 /* xxhash.c in Sources */, - B3375ECE278EA4B8004B0DC0 /* xxh_x86dispatch.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B36DE7431D6AB19C002EE3ED /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D0143626DF190300860FF9 /* context_agl_ios.mm in Sources */, - B3C2906226DDD28D003CB9D4 /* OpenGLHostDisplay.mm in Sources */, - B3D8A53B26BE4A6D0096A354 /* PVDuckStation.swift in Sources */, - B3D8A53526BE48CA0096A354 /* PVDuckStation.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C290C626DE95AE003CB9D4 /* Sources */ = { + B3C290C626DE95AE003CB9D4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -8228,17 +6711,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D73CF21E9EAF1C0023925B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D0143726DF190400860FF9 /* context_agl_ios.mm in Sources */, - B3C2906126DDD28C003CB9D4 /* OpenGLHostDisplay.mm in Sources */, - B3D8A53A26BE4A6D0096A354 /* PVDuckStation.swift in Sources */, - B3D8A53626BE48CA0096A354 /* PVDuckStation.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3D8A53C26BE55780096A354 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -8360,91 +6832,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - B3017288274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B301716D274A335900B0E695 /* chdr-tvOS */; - targetProxy = B3017287274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B301728B274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017263274A336400B0E695 /* cubeb-tvOS */; - targetProxy = B301728A274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B301728E274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B30170D3274A335500B0E695 /* duckstation-tvOS */; - targetProxy = B301728D274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B3017291274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B301727C274A336600B0E695 /* dxxhash-tvOS */; - targetProxy = B3017290274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B3017294274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017151274A335900B0E695 /* FLAC-tvOS */; - targetProxy = B3017293274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B3017297274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017272274A336500B0E695 /* glad-tvOS */; - targetProxy = B3017296274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B301729A274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017226274A336300B0E695 /* glslangd-tvOS */; - targetProxy = B3017299274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B301729D274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B30171D7274A335E00B0E695 /* llzma-tvOS */; - targetProxy = B301729C274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172A0274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B301717B274A335A00B0E695 /* minizip-tvOS */; - targetProxy = B301729F274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172A6274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B30171EC274A335F00B0E695 /* rcheevos-tvOS */; - targetProxy = B30172A5274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172A9274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017188274A335B00B0E695 /* samplerate-tvOS */; - targetProxy = B30172A8274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172AC274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017195274A335C00B0E695 /* SimpleINI-tvOS */; - targetProxy = B30172AB274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172AF274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017210274A336100B0E695 /* stb-tvOS */; - targetProxy = B30172AE274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172B2274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3017206274A336000B0E695 /* tinyxml-tvOS */; - targetProxy = B30172B1274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172B5274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B30171B7274A335E00B0E695 /* vixl-tvOS */; - targetProxy = B30172B4274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172B8274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B301721C274A336200B0E695 /* vulkan-loader-tvOS */; - targetProxy = B30172B7274A33AD00B0E695 /* PBXContainerItemProxy */; - }; - B30172BB274A33AD00B0E695 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B301719F274A335D00B0E695 /* zlib-tvOS */; - targetProxy = B30172BA274A33AD00B0E695 /* PBXContainerItemProxy */; - }; B3C2919926DEECB8003CB9D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = B3C290EA26DEB78F003CB9D4 /* chdr */; @@ -8588,10 +6975,11 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Debug; }; @@ -8636,1718 +7024,25 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - B301714D274A335500B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEAD_CODE_STRIPPING = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - SI_CONVERT_GENERIC, - "$(inherited)", - WITH_RECOMPILER, - GL_SILENCE_DEPRECATION, - WITH_FASTMEM, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep\"", - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/glslang\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", - "\"$(SRCROOT)/duckstation/dep/xbyak\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DWITH_RECOMPILER", - "-DVIXL_CODE_BUFFER_MALLOC", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B301714E274A335500B0E695 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_PREPROCESSOR_DEFINITIONS = ( - SI_CONVERT_GENERIC, - "$(inherited)", - WITH_RECOMPILER, - GL_SILENCE_DEPRECATION, - WITH_FASTMEM, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep\"", - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/glslang\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", - "\"$(SRCROOT)/duckstation/dep/xbyak\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DWITH_RECOMPILER", - "-DVIXL_CODE_BUFFER_MALLOC", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B301714F274A335500B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_PREPROCESSOR_DEFINITIONS = ( - SI_CONVERT_GENERIC, - "$(inherited)", - WITH_RECOMPILER, - GL_SILENCE_DEPRECATION, - WITH_FASTMEM, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep\"", - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/glslang\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", - "\"$(SRCROOT)/duckstation/dep/xbyak\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DWITH_RECOMPILER", - "-DVIXL_CODE_BUFFER_MALLOC", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017169274A335900B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "PACKAGE_VERSION=\\\"1.3.2\\\"", - "FLAC__HAS_OGG=0", - HAVE_LROUND, - HAVE_STDINT_H, - HAVE_STDLIB_H, - HAVE_STDDEF_H, - FLAC__NO_DLL, - "NDEBUG=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DNDEBUG", - "-DFLAC__HAS_OGG=0", - "-DHAVE_LROUND", - "-DPACKAGE_VERSION=\\\"1\\\"", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B301716A274A335900B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "PACKAGE_VERSION=\\\"1.3.2\\\"", - "FLAC__HAS_OGG=0", - HAVE_LROUND, - HAVE_STDINT_H, - HAVE_STDLIB_H, - HAVE_STDDEF_H, - FLAC__NO_DLL, - "NDEBUG=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DNDEBUG", - "-DFLAC__HAS_OGG=0", - "-DHAVE_LROUND", - "-DPACKAGE_VERSION=\\\"1\\\"", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B301716B274A335900B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include/FLAC\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/src/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DNDEBUG", - "-DFLAC__HAS_OGG=0", - "-DHAVE_LROUND", - "-DPACKAGE_VERSION=\\\"1\\\"", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017177274A335900B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017178274A335900B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3017179274A335900B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017184274A335A00B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017185274A335A00B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3017186274A335A00B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017191274A335B00B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = "-DHAVE_CONFIG_H"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017192274A335B00B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = "-DHAVE_CONFIG_H"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3017193274A335B00B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/src\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = "-DHAVE_CONFIG_H"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B301719B274A335C00B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "HAVE_CONFIG_H=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B301719C274A335C00B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "HAVE_CONFIG_H=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B301719D274A335C00B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "HAVE_CONFIG_H=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B30171B3274A335D00B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/zlib/include\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B30171B4274A335D00B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/zlib/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B30171B5274A335D00B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/libchdr/include\"", - "\"$(SRCROOT)/duckstation/dep/libFLAC/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/minizip/include\"", - "\"$(SRCROOT)/duckstation/dep/lzma/include\"", - "\"$(SRCROOT)/duckstation/dep/libsamplerate/include\"", - "\"$(SRCROOT)/duckstation/dep/zlib/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B30171D3274A335E00B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DVIXL_CODE_BUFFER_MALLOC", - "$(inherited)", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B30171D4274A335E00B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DVIXL_CODE_BUFFER_MALLOC", - "$(inherited)", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B30171D5274A335E00B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include\"", - "\"$(SRCROOT)/duckstation/dep/vixl/include/vixl\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-DVIXL_CODE_BUFFER_MALLOC", - "$(inherited)", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B30171E8274A335E00B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = "-D_7ZIP_ST"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - }; - name = Debug; - }; - B30171E9274A335E00B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = "-D_7ZIP_ST"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B30171EA274A335E00B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = "-D_7ZIP_ST"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017202274A335F00B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017203274A335F00B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3017204274A335F00B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B301720C274A336000B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B301720D274A336000B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B301720E274A336000B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017218274A336100B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017219274A336100B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B301721A274A336100B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017222274A336200B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017223274A336200B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3017224274A336200B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/vulkan-loader/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017256274A336300B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/glslang\"", - "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017257274A336300B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/glslang\"", - "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3017258274A336300B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/glslang\"", - "\"$(SRCROOT)/duckstation/dep/glslang/glslang/Include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B301726E274A336400B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "RANDOM_PREFIX=speex", - "EXPORT=", - FLOATING_POINT, - OUTSIDE_SPEEX, - "$(inherited)", - "TARGET_OS_IPHONE=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B301726F274A336400B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "RANDOM_PREFIX=speex", - "EXPORT=", - FLOATING_POINT, - OUTSIDE_SPEEX, - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3017270274A336400B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "RANDOM_PREFIX=speex", - "EXPORT=", - FLOATING_POINT, - OUTSIDE_SPEEX, - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", - "\"$(SRCROOT)/duckstation/dep/cubeb/src\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017278274A336500B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017279274A336500B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B301727A274A336500B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/duckstation/src\"", - "\"$(SRCROOT)/duckstation/dep/glad/include\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3017282274A336600B0E695 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3017283274A336600B0E695 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/duckstation/src\"", + "\"$(SRCROOT)/duckstation/dep/glad/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Release; }; - B3017284274A336600B0E695 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; B324C5112191A38D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; @@ -10400,9 +7095,10 @@ "\"$(SRCROOT)/duckstation/src\"", "\"$(SRCROOT)/duckstation/dep/glad/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = iphoneos; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Archive; }; @@ -10410,6 +7106,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -10422,6 +7119,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; + EXCLUDED_ARCHS = ""; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( SI_CONVERT_GENERIC, @@ -10441,7 +7139,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -10453,7 +7151,8 @@ PRODUCT_NAME = PVDuckStation; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -10461,52 +7160,11 @@ }; name = Archive; }; - B324C5132191A38D009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.duckstation"; - PRODUCT_NAME = PVDuckStation; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; B36DE74E1D6AB19C002EE3ED /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -10519,6 +7177,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_BITCODE = NO; ENABLE_TESTABILITY = YES; + EXCLUDED_ARCHS = ""; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -10539,7 +7198,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -10551,7 +7210,8 @@ PRODUCT_NAME = PVDuckStation; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -10562,6 +7222,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -10574,6 +7235,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; + EXCLUDED_ARCHS = ""; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( SI_CONVERT_GENERIC, @@ -10593,7 +7255,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -10605,7 +7267,8 @@ PRODUCT_NAME = PVDuckStation; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -10617,6 +7280,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10656,6 +7320,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -10663,6 +7329,7 @@ B3C290D226DE95AE003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10702,6 +7369,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -10711,6 +7380,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10740,6 +7410,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -10749,6 +7421,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10777,6 +7450,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -10784,6 +7459,7 @@ B3C2910326DEB78F003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10812,6 +7488,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -10821,6 +7499,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10849,6 +7528,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -10857,6 +7538,7 @@ B3C2911A26DEC8DA003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10878,6 +7560,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -10885,6 +7569,7 @@ B3C2911B26DEC8DA003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10906,6 +7591,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -10915,6 +7602,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10936,6 +7624,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -10944,6 +7634,7 @@ B3C2914426DEC91C003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10965,6 +7656,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -10972,6 +7665,7 @@ B3C2914526DEC91C003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -10993,6 +7687,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11002,6 +7698,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11023,6 +7720,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11031,6 +7730,7 @@ B3C2915226DEC93E003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11059,6 +7759,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11066,6 +7768,7 @@ B3C2915326DEC93E003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11094,6 +7797,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11102,6 +7807,7 @@ B3C2915426DEC93E003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11130,6 +7836,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11138,6 +7846,7 @@ B3C2916E26DEC963003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11164,6 +7873,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11171,6 +7882,7 @@ B3C2916F26DEC963003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11197,6 +7909,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11205,6 +7919,7 @@ B3C2917026DEC963003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11231,6 +7946,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11239,6 +7956,7 @@ B3C2917C26DEC978003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11269,6 +7987,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11276,6 +7996,7 @@ B3C2917D26DEC978003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11306,6 +8027,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11315,6 +8038,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11345,6 +8069,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11353,6 +8079,7 @@ B3C291B726DEED30003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11372,6 +8099,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; }; @@ -11380,6 +8109,7 @@ B3C291B826DEED30003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11399,6 +8129,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; VALIDATE_PRODUCT = YES; @@ -11408,6 +8140,7 @@ B3C291B926DEED30003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11427,6 +8160,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/duckstation/dep/lzma/include\""; VALIDATE_PRODUCT = YES; @@ -11436,6 +8171,7 @@ B3C291D126DEED68003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11453,6 +8189,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11460,6 +8198,7 @@ B3C291D226DEED68003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11477,6 +8216,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11485,6 +8226,7 @@ B3C291D326DEED68003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11502,6 +8244,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11510,6 +8254,7 @@ B3C2920026DEF88C003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11527,6 +8272,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11534,6 +8281,7 @@ B3C2920126DEF88C003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11551,6 +8299,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11559,6 +8309,7 @@ B3C2920226DEF88C003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11576,6 +8327,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11584,6 +8337,7 @@ B3C2923B26DEFECD003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11601,6 +8355,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11608,6 +8364,7 @@ B3C2923C26DEFECD003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11625,6 +8382,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11633,6 +8392,7 @@ B3C2923D26DEFECD003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11650,6 +8410,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11658,6 +8420,7 @@ B3C2927826DF0271003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11679,6 +8442,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11686,6 +8451,7 @@ B3C2927926DF0271003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11707,6 +8473,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11715,6 +8483,7 @@ B3C2927A26DF0271003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11736,6 +8505,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11744,6 +8515,7 @@ B3C2928D26DF0311003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11766,6 +8538,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11773,6 +8547,7 @@ B3C2928E26DF0311003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11795,6 +8570,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11803,6 +8580,7 @@ B3C2928F26DF0311003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11825,6 +8603,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11833,6 +8613,7 @@ B3C292CC26DF04D2003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11854,6 +8635,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11861,6 +8644,7 @@ B3C292CD26DF04D2003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11882,6 +8666,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11890,6 +8676,7 @@ B3C292CE26DF04D2003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11911,6 +8698,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11919,6 +8708,7 @@ B3C292EC26DF0BDD003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11949,6 +8739,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -11956,6 +8748,7 @@ B3C292ED26DF0BDD003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -11985,6 +8778,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -11993,6 +8788,7 @@ B3C292EE26DF0BDD003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -12022,6 +8818,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -12030,6 +8828,7 @@ B3C2930626DF0C9E003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -12051,6 +8850,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -12058,6 +8859,7 @@ B3C2930726DF0C9E003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -12079,6 +8881,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -12087,6 +8891,7 @@ B3C2930826DF0C9E003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -12108,6 +8913,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -12116,6 +8923,7 @@ B3C2931826DF0D83003CB9D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -12133,6 +8941,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -12140,6 +8950,7 @@ B3C2931926DF0D83003CB9D4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -12157,6 +8968,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -12165,6 +8978,7 @@ B3C2931A26DF0D83003CB9D4 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -12182,99 +8996,18 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Archive; }; - B3D73D311E9EAF1C0023925B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CODE_SIGN_IDENTITY = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_TESTABILITY = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.duckstation"; - PRODUCT_NAME = PVDuckStation; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3D73D321E9EAF1C0023925B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "$(SRCROOT)/PVDuckStation/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.duckstation"; - PRODUCT_NAME = PVDuckStation; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; B3D8A54726BE55780096A354 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -12309,7 +9042,7 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/xbyak\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -12319,6 +9052,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -12327,6 +9062,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -12361,7 +9097,7 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/xbyak\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -12371,6 +9107,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -12380,6 +9118,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = B3203C2226DB19CC00B016C6 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -12414,7 +9153,7 @@ "\"$(SRCROOT)/duckstation/dep/cubeb/include\"", "\"$(SRCROOT)/duckstation/dep/xbyak\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -12424,6 +9163,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -12442,177 +9183,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B301714C274A335500B0E695 /* Build configuration list for PBXNativeTarget "duckstation-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B301714D274A335500B0E695 /* Debug */, - B301714E274A335500B0E695 /* Release */, - B301714F274A335500B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017168274A335900B0E695 /* Build configuration list for PBXNativeTarget "FLAC-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017169274A335900B0E695 /* Debug */, - B301716A274A335900B0E695 /* Release */, - B301716B274A335900B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017176274A335900B0E695 /* Build configuration list for PBXNativeTarget "chdr-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017177274A335900B0E695 /* Debug */, - B3017178274A335900B0E695 /* Release */, - B3017179274A335900B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017183274A335A00B0E695 /* Build configuration list for PBXNativeTarget "minizip-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017184274A335A00B0E695 /* Debug */, - B3017185274A335A00B0E695 /* Release */, - B3017186274A335A00B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017190274A335B00B0E695 /* Build configuration list for PBXNativeTarget "samplerate-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017191274A335B00B0E695 /* Debug */, - B3017192274A335B00B0E695 /* Release */, - B3017193274A335B00B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B301719A274A335C00B0E695 /* Build configuration list for PBXNativeTarget "SimpleINI-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B301719B274A335C00B0E695 /* Debug */, - B301719C274A335C00B0E695 /* Release */, - B301719D274A335C00B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B30171B2274A335D00B0E695 /* Build configuration list for PBXNativeTarget "zlib-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B30171B3274A335D00B0E695 /* Debug */, - B30171B4274A335D00B0E695 /* Release */, - B30171B5274A335D00B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B30171D2274A335E00B0E695 /* Build configuration list for PBXNativeTarget "vixl-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B30171D3274A335E00B0E695 /* Debug */, - B30171D4274A335E00B0E695 /* Release */, - B30171D5274A335E00B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B30171E7274A335E00B0E695 /* Build configuration list for PBXNativeTarget "llzma-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B30171E8274A335E00B0E695 /* Debug */, - B30171E9274A335E00B0E695 /* Release */, - B30171EA274A335E00B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017201274A335F00B0E695 /* Build configuration list for PBXNativeTarget "rcheevos-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017202274A335F00B0E695 /* Debug */, - B3017203274A335F00B0E695 /* Release */, - B3017204274A335F00B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B301720B274A336000B0E695 /* Build configuration list for PBXNativeTarget "tinyxml-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B301720C274A336000B0E695 /* Debug */, - B301720D274A336000B0E695 /* Release */, - B301720E274A336000B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017217274A336100B0E695 /* Build configuration list for PBXNativeTarget "stb-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017218274A336100B0E695 /* Debug */, - B3017219274A336100B0E695 /* Release */, - B301721A274A336100B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017221274A336200B0E695 /* Build configuration list for PBXNativeTarget "vulkan-loader-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017222274A336200B0E695 /* Debug */, - B3017223274A336200B0E695 /* Release */, - B3017224274A336200B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017255274A336300B0E695 /* Build configuration list for PBXNativeTarget "glslangd-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017256274A336300B0E695 /* Debug */, - B3017257274A336300B0E695 /* Release */, - B3017258274A336300B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B301726D274A336400B0E695 /* Build configuration list for PBXNativeTarget "cubeb-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B301726E274A336400B0E695 /* Debug */, - B301726F274A336400B0E695 /* Release */, - B3017270274A336400B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017277274A336500B0E695 /* Build configuration list for PBXNativeTarget "glad-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017278274A336500B0E695 /* Debug */, - B3017279274A336500B0E695 /* Release */, - B301727A274A336500B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3017281274A336600B0E695 /* Build configuration list for PBXNativeTarget "dxxhash-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3017282274A336600B0E695 /* Debug */, - B3017283274A336600B0E695 /* Release */, - B3017284274A336600B0E695 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVDuckStation-iOS" */ = { + B36DE74D1D6AB19C002EE3ED /* Build configuration list for PBXNativeTarget "PVDuckStation" */ = { isa = XCConfigurationList; buildConfigurations = ( B36DE74E1D6AB19C002EE3ED /* Debug */, @@ -12792,16 +9363,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3D73D301E9EAF1C0023925B /* Build configuration list for PBXNativeTarget "PVDuckStation-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3D73D311E9EAF1C0023925B /* Debug */, - B3D73D321E9EAF1C0023925B /* Release */, - B324C5132191A38D009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3D8A54626BE55780096A354 /* Build configuration list for PBXNativeTarget "duckstation" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVAtari800 tvOS.xcscheme b/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVAtari800 tvOS.xcscheme deleted file mode 100644 index 28f1608839..0000000000 --- a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVAtari800 tvOS.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVAtari800.xcscheme b/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVAtari800.xcscheme deleted file mode 100644 index b90f959bdf..0000000000 --- a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVAtari800.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation-iOS.xcscheme b/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation-iOS.xcscheme deleted file mode 100644 index 674634f083..0000000000 --- a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation-tvOS.xcscheme b/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation-tvOS.xcscheme deleted file mode 100644 index 18b65e60c6..0000000000 --- a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation.xcscheme b/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation.xcscheme new file mode 100644 index 0000000000..d9c17557cb --- /dev/null +++ b/Cores/DuckStation/PVDuckStation.xcodeproj/xcshareddata/xcschemes/PVDuckStation.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/DuckStation/PVDuckStation/PVDuckStation.h b/Cores/DuckStation/PVDuckStation/PVDuckStation.h index db82620853..48806d0d1a 100644 --- a/Cores/DuckStation/PVDuckStation/PVDuckStation.h +++ b/Cores/DuckStation/PVDuckStation/PVDuckStation.h @@ -6,7 +6,7 @@ // // -#import +#import //! Project version number for PVDuckStation. FOUNDATION_EXPORT double PVDuckStationVersionNumber; diff --git a/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm b/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm index df3d6478cc..1c30da4ece 100644 --- a/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm +++ b/Cores/DuckStation/PVDuckStation/Source/OpenGLHostDisplay.mm @@ -39,7 +39,7 @@ #include -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import //#import //#import diff --git a/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm b/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm index ddac34bb0f..93e3ede8f7 100644 --- a/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm +++ b/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.mm @@ -29,7 +29,7 @@ #import //#import //#import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -576,14 +576,14 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error { } bootPath = [path copy]; -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX EAGLContext* context = [self bestContext]; #endif return true; } -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX -(EAGLContext*)bestContext { EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; self.glesVersion = GLESVersion3; diff --git a/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.swift b/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.swift index 54892ee446..b5635a4012 100644 --- a/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.swift +++ b/Cores/DuckStation/PVDuckStation/Source/PVDuckStation.swift @@ -6,7 +6,7 @@ // import PVSupport -import UIKit +import Foundation extension PVDuckStationCore: DiscSwappable { public var numberOfDiscs: UInt { diff --git a/Cores/DuckStation/duckstation b/Cores/DuckStation/duckstation index 0774910d26..ed5f6387c8 160000 --- a/Cores/DuckStation/duckstation +++ b/Cores/DuckStation/duckstation @@ -1 +1 @@ -Subproject commit 0774910d26e7dbf1f8f846f842b1d9f43724b24a +Subproject commit ed5f6387c82b89b99b91a6e26d98f1ce937974a6 diff --git a/Cores/FCEU/PVFCEU-Prefix.pch b/Cores/FCEU/PVFCEU-Prefix.pch index de8331b163..efa9da4465 100644 --- a/Cores/FCEU/PVFCEU-Prefix.pch +++ b/Cores/FCEU/PVFCEU-Prefix.pch @@ -7,6 +7,10 @@ // #ifdef __OBJC__ +#if __has_include() #import +#else + #import +#endif #import #endif diff --git a/Cores/FCEU/PVFCEU.xcodeproj/project.pbxproj b/Cores/FCEU/PVFCEU.xcodeproj/project.pbxproj index 4334452d43..ae64e0cd76 100644 --- a/Cores/FCEU/PVFCEU.xcodeproj/project.pbxproj +++ b/Cores/FCEU/PVFCEU.xcodeproj/project.pbxproj @@ -10,10 +10,7 @@ B30614EC218D5F8D0041AD4F /* PVFCEUEmulatorCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B30614EA218D5F8D0041AD4F /* PVFCEUEmulatorCore+Controls.h */; }; B30614ED218D5F8D0041AD4F /* PVFCEUEmulatorCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B30614EB218D5F8D0041AD4F /* PVFCEUEmulatorCore+Controls.mm */; }; B30614F7218D60CB0041AD4F /* PVFCEU+Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = B30614F6218D60CB0041AD4F /* PVFCEU+Swift.h */; }; - B30614F8218D60CB0041AD4F /* PVFCEU+Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = B30614F6218D60CB0041AD4F /* PVFCEU+Swift.h */; }; - B306150C218D6F330041AD4F /* PVFCEUEmulatorCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B30614EB218D5F8D0041AD4F /* PVFCEUEmulatorCore+Controls.mm */; }; B30C093827C0AB5A009F25D0 /* asm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53427C09C5B0012118D /* asm.cpp */; }; - B30C093927C0AB5A009F25D0 /* asm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53427C09C5B0012118D /* asm.cpp */; }; B30C093C27C0AB6F009F25D0 /* movie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53B27C09C5B0012118D /* movie.cpp */; }; B30C093D27C0AB6F009F25D0 /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53227C09C5B0012118D /* cheat.cpp */; }; B30C093E27C0AB6F009F25D0 /* wave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C927C09C5B0012118D /* wave.cpp */; }; @@ -40,32 +37,6 @@ B30C095427C0AB6F009F25D0 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53C27C09C5B0012118D /* cart.cpp */; }; B30C095527C0AB6F009F25D0 /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47527C09C5B0012118D /* config.cpp */; }; B30C095627C0AB6F009F25D0 /* netplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53927C09C5B0012118D /* netplay.cpp */; }; - B30C095727C0AB6F009F25D0 /* movie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53B27C09C5B0012118D /* movie.cpp */; }; - B30C095827C0AB6F009F25D0 /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53227C09C5B0012118D /* cheat.cpp */; }; - B30C095927C0AB6F009F25D0 /* wave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C927C09C5B0012118D /* wave.cpp */; }; - B30C095A27C0AB6F009F25D0 /* ines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53A27C09C5B0012118D /* ines.cpp */; }; - B30C095B27C0AB6F009F25D0 /* state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D327C09C5B0012118D /* state.cpp */; }; - B30C095C27C0AB6F009F25D0 /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB16C27C09C5A0012118D /* ppu.cpp */; }; - B30C095D27C0AB6F009F25D0 /* unif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47427C09C5B0012118D /* unif.cpp */; }; - B30C095E27C0AB6F009F25D0 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB17027C09C5A0012118D /* input.cpp */; }; - B30C095F27C0AB6F009F25D0 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47827C09C5B0012118D /* debug.cpp */; }; - B30C096027C0AB6F009F25D0 /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB43927C09C5B0012118D /* file.cpp */; }; - B30C096127C0AB6F009F25D0 /* oldmovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53027C09C5B0012118D /* oldmovie.cpp */; }; - B30C096227C0AB6F009F25D0 /* nsf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52B27C09C5B0012118D /* nsf.cpp */; }; - B30C096327C0AB6F009F25D0 /* fds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47A27C09C5B0012118D /* fds.cpp */; }; - B30C096427C0AB6F009F25D0 /* conddebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB43027C09C5B0012118D /* conddebug.cpp */; }; - B30C096527C0AB6F009F25D0 /* x6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB43A27C09C5B0012118D /* x6502.cpp */; }; - B30C096627C0AB6F009F25D0 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47927C09C5B0012118D /* sound.cpp */; }; - B30C096727C0AB6F009F25D0 /* drawing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB43327C09C5B0012118D /* drawing.cpp */; }; - B30C096927C0AB6F009F25D0 /* emufile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53627C09C5B0012118D /* emufile.cpp */; }; - B30C096A27C0AB6F009F25D0 /* filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3EF27C09C5B0012118D /* filter.cpp */; }; - B30C096B27C0AB6F009F25D0 /* vsuni.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52E27C09C5B0012118D /* vsuni.cpp */; }; - B30C096C27C0AB6F009F25D0 /* fceu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52F27C09C5B0012118D /* fceu.cpp */; }; - B30C096D27C0AB6F009F25D0 /* palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53327C09C5B0012118D /* palette.cpp */; }; - B30C096E27C0AB6F009F25D0 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3EE27C09C5B0012118D /* video.cpp */; }; - B30C096F27C0AB6F009F25D0 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53C27C09C5B0012118D /* cart.cpp */; }; - B30C097027C0AB6F009F25D0 /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47527C09C5B0012118D /* config.cpp */; }; - B30C097127C0AB6F009F25D0 /* netplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB53927C09C5B0012118D /* netplay.cpp */; }; B30C097227C0ABC4009F25D0 /* endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E027C09C5B0012118D /* endian.cpp */; }; B30C097327C0ABC4009F25D0 /* crc32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E127C09C5B0012118D /* crc32.cpp */; }; B30C097427C0ABC4009F25D0 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D727C09C5B0012118D /* memory.cpp */; }; @@ -77,48 +48,26 @@ B30C097A27C0ABC4009F25D0 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D827C09C5B0012118D /* md5.cpp */; }; B30C097B27C0ABC4009F25D0 /* guid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E827C09C5B0012118D /* guid.cpp */; }; B30C097C27C0ABC4009F25D0 /* general.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D627C09C5B0012118D /* general.cpp */; }; - B30C097D27C0ABC4009F25D0 /* endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E027C09C5B0012118D /* endian.cpp */; }; - B30C097E27C0ABC4009F25D0 /* crc32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E127C09C5B0012118D /* crc32.cpp */; }; - B30C097F27C0ABC4009F25D0 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D727C09C5B0012118D /* memory.cpp */; }; - B30C098027C0ABC4009F25D0 /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D927C09C5B0012118D /* ConvertUTF.c */; }; - B30C098127C0ABC4009F25D0 /* ioapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3DA27C09C5B0012118D /* ioapi.cpp */; }; - B30C098227C0ABC4009F25D0 /* backward.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3DB27C09C5B0012118D /* backward.cpp */; }; - B30C098327C0ABC4009F25D0 /* unzip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E227C09C5B0012118D /* unzip.cpp */; }; - B30C098427C0ABC4009F25D0 /* xstring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E727C09C5B0012118D /* xstring.cpp */; }; - B30C098527C0ABC4009F25D0 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D827C09C5B0012118D /* md5.cpp */; }; - B30C098627C0ABC4009F25D0 /* guid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3E827C09C5B0012118D /* guid.cpp */; }; - B30C098727C0ABC4009F25D0 /* general.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3D627C09C5B0012118D /* general.cpp */; }; B30C098827C0ADD1009F25D0 /* ppu.h in Headers */ = {isa = PBXBuildFile; fileRef = B3BCB43827C09C5B0012118D /* ppu.h */; }; - B30C098927C0ADD1009F25D0 /* ppu.h in Headers */ = {isa = PBXBuildFile; fileRef = B3BCB43827C09C5B0012118D /* ppu.h */; }; B3341F5427C1B18C00E001C6 /* fceux_netplay_server.m in Sources */ = {isa = PBXBuildFile; fileRef = B3341F5327C1B18C00E001C6 /* fceux_netplay_server.m */; }; B3341F5527C1B18C00E001C6 /* fceux_netplay_server.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B3341F5227C1B18C00E001C6 /* fceux_netplay_server.h */; }; B3341F6D27C1B1E600E001C6 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F5B27C1B1CC00E001C6 /* md5.cpp */; }; B3341F6E27C1B1E600E001C6 /* server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F6C27C1B1CD00E001C6 /* server.cpp */; }; B3341F6F27C1B1E600E001C6 /* throttle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F6A27C1B1CD00E001C6 /* throttle.cpp */; }; - B3341F7227C1B23A00E001C6 /* server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F6C27C1B1CD00E001C6 /* server.cpp */; }; - B3341F7327C1B23A00E001C6 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F5B27C1B1CC00E001C6 /* md5.cpp */; }; - B3341F7427C1B23A00E001C6 /* fceux_netplay_server.m in Sources */ = {isa = PBXBuildFile; fileRef = B3341F5327C1B18C00E001C6 /* fceux_netplay_server.m */; }; - B3341F7527C1B23A00E001C6 /* throttle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F6A27C1B1CD00E001C6 /* throttle.cpp */; }; - B3341F7827C1B23A00E001C6 /* fceux_netplay_server.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B3341F5227C1B18C00E001C6 /* fceux_netplay_server.h */; }; - B3341F7E27C1B2CF00E001C6 /* libfceux-netplay-server-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3341F5027C1B18C00E001C6 /* libfceux-netplay-server-iOS.a */; }; - B3341F8127C1B2D400E001C6 /* libfceux-netplay-server-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3341F7D27C1B23A00E001C6 /* libfceux-netplay-server-tvOS.a */; }; + B3341F7E27C1B2CF00E001C6 /* libfceux-netplay-server.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3341F5027C1B18C00E001C6 /* libfceux-netplay-server.a */; }; B3341F8527C1B34100E001C6 /* fceux-server.conf in Resources */ = {isa = PBXBuildFile; fileRef = B3341F8427C1B34000E001C6 /* fceux-server.conf */; }; - B3341F8627C1B34100E001C6 /* fceux-server.conf in Resources */ = {isa = PBXBuildFile; fileRef = B3341F8427C1B34000E001C6 /* fceux-server.conf */; }; B3341F8E27C1B39200E001C6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B3341F8D27C1B39200E001C6 /* main.m */; }; B3341F9327C1B39A00E001C6 /* throttle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F6A27C1B1CD00E001C6 /* throttle.cpp */; }; B3341F9427C1B39A00E001C6 /* server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F6C27C1B1CD00E001C6 /* server.cpp */; }; B3341F9527C1B39A00E001C6 /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3341F5B27C1B1CC00E001C6 /* md5.cpp */; }; B34AB55A2106D57B00C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5592106D57B00C45F09 /* PVSupport.framework */; }; - B34AB5822106DDCC00C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5812106DDCC00C45F09 /* PVSupport.framework */; }; B3547B4B205857B900CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B4A205857B900CFF7D8 /* Core.plist */; }; - B3547B4C205857B900CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B4A205857B900CFF7D8 /* Core.plist */; }; B391F2D427C1695700730B53 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B391F2D227C1695700730B53 /* CoreFoundation.framework */; }; B391F2D527C1695700730B53 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B391F2D327C1695700730B53 /* Foundation.framework */; }; B391F2D727C1696A00730B53 /* liblzma.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B391F2D627C1696A00730B53 /* liblzma.tbd */; }; B391F2D927C16AC200730B53 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B391F2D827C16AC100730B53 /* OpenGL.framework */; platformFilter = maccatalyst; }; B391F2DA27C16ACA00730B53 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A3A79AF1ABF1D41002274A3 /* OpenGLES.framework */; }; B391F2DC27C1710400730B53 /* hypershot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B327C09C5B0012118D /* hypershot.cpp */; }; - B391F2DD27C1710400730B53 /* hypershot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B327C09C5B0012118D /* hypershot.cpp */; }; B391F2DE27C1715000730B53 /* fns.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C627C09C5B0012118D /* fns.cpp */; }; B391F2DF27C1715000730B53 /* ftrainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B627C09C5B0012118D /* ftrainer.cpp */; }; B391F2E027C1715000730B53 /* arkanoid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C227C09C5B0012118D /* arkanoid.cpp */; }; @@ -138,41 +87,13 @@ B391F2EE27C1715000730B53 /* snesmouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B227C09C5B0012118D /* snesmouse.cpp */; }; B391F2EF27C1715000730B53 /* suborkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3BF27C09C5B0012118D /* suborkb.cpp */; }; B391F2F027C1715000730B53 /* quiz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B427C09C5B0012118D /* quiz.cpp */; }; - B391F2F127C1715000730B53 /* fns.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C627C09C5B0012118D /* fns.cpp */; }; - B391F2F227C1715000730B53 /* ftrainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B627C09C5B0012118D /* ftrainer.cpp */; }; - B391F2F327C1715000730B53 /* arkanoid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C227C09C5B0012118D /* arkanoid.cpp */; }; - B391F2F427C1715000730B53 /* cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C427C09C5B0012118D /* cursor.cpp */; }; - B391F2F527C1715000730B53 /* virtualboy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B527C09C5B0012118D /* virtualboy.cpp */; }; - B391F2F627C1715000730B53 /* oekakids.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B727C09C5B0012118D /* oekakids.cpp */; }; - B391F2F727C1715000730B53 /* zapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3BB27C09C5B0012118D /* zapper.cpp */; }; - B391F2F827C1715000730B53 /* toprider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3BD27C09C5B0012118D /* toprider.cpp */; }; - B391F2F927C1715000730B53 /* powerpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3BA27C09C5B0012118D /* powerpad.cpp */; }; - B391F2FA27C1715000730B53 /* pec586kb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C127C09C5B0012118D /* pec586kb.cpp */; }; - B391F2FB27C1715000730B53 /* shadow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B127C09C5B0012118D /* shadow.cpp */; }; - B391F2FC27C1715000730B53 /* bworld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C527C09C5B0012118D /* bworld.cpp */; }; - B391F2FD27C1715000730B53 /* lcdcompzapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C727C09C5B0012118D /* lcdcompzapper.cpp */; }; - B391F2FE27C1715000730B53 /* fkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B927C09C5B0012118D /* fkb.cpp */; }; - B391F2FF27C1715000730B53 /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B827C09C5B0012118D /* mouse.cpp */; }; - B391F30027C1715000730B53 /* mahjong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3C027C09C5B0012118D /* mahjong.cpp */; }; - B391F30127C1715000730B53 /* snesmouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B227C09C5B0012118D /* snesmouse.cpp */; }; - B391F30227C1715000730B53 /* suborkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3BF27C09C5B0012118D /* suborkb.cpp */; }; - B391F30327C1715000730B53 /* quiz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB3B427C09C5B0012118D /* quiz.cpp */; }; B391F30427C172B600730B53 /* vidblit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37C27C09C5B0012118D /* vidblit.cpp */; }; - B391F30527C172B700730B53 /* vidblit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37C27C09C5B0012118D /* vidblit.cpp */; }; B39E8CB320539B2500380DCD /* PVFCEUEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39E8CB220539B2500380DCD /* PVFCEUEmulatorCore.swift */; }; - B39E8CB420539B2500380DCD /* PVFCEUEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39E8CB220539B2500380DCD /* PVFCEUEmulatorCore.swift */; }; B3A9F43A1DE877B4008450F5 /* PVFCEU.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A9F4381DE877B4008450F5 /* PVFCEU.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3A9F44F1DE87827008450F5 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A3A79AF1ABF1D41002274A3 /* OpenGLES.framework */; platformFilter = ios; }; B3A9F4501DE87833008450F5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A3A79AE1ABF1D41002274A3 /* Foundation.framework */; }; - B3A9F4551DE87840008450F5 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A9F4541DE87840008450F5 /* OpenGLES.framework */; }; - B3A9F4591DE8784B008450F5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A9F4581DE8784B008450F5 /* Foundation.framework */; }; - B3A9F45A1DE8785A008450F5 /* PVFCEU.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A9F4381DE877B4008450F5 /* PVFCEU.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3A9F4931DE87E09008450F5 /* PVFCEUEmulatorCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A79AC1ABF1CE8002274A3 /* PVFCEUEmulatorCore.mm */; }; - B3A9F57A1DE87E09008450F5 /* PVFCEUEmulatorCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A79AC1ABF1CE8002274A3 /* PVFCEUEmulatorCore.mm */; }; - B3A9F6301DE883F1008450F5 /* PVFCEUEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3A79AB1ABF1CE8002274A3 /* PVFCEUEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3A9F6311DE883FC008450F5 /* PVFCEUEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3A79AB1ABF1CE8002274A3 /* PVFCEUEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3A9F6331DE88425008450F5 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A9F6321DE88425008450F5 /* libz.tbd */; }; - B3A9F6351DE8842C008450F5 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A9F6341DE8842C008450F5 /* libz.tbd */; }; B3AAF51627C0A94B001CAE1F /* 15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E727C09C5B0012118D /* 15.cpp */; }; B3AAF51727C0A94B001CAE1F /* 80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48D27C09C5B0012118D /* 80.cpp */; }; B3AAF51827C0A94B001CAE1F /* 112.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F827C09C5B0012118D /* 112.cpp */; }; @@ -342,176 +263,7 @@ B3AAF5BC27C0A94B001CAE1F /* h2288.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49E27C09C5B0012118D /* h2288.cpp */; }; B3AAF5BD27C0A94B001CAE1F /* mmc3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E227C09C5B0012118D /* mmc3.cpp */; }; B3AAF5BE27C0A94B001CAE1F /* unrom512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4DE27C09C5B0012118D /* unrom512.cpp */; }; - B3AAF5BF27C0A94B001CAE1F /* 15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E727C09C5B0012118D /* 15.cpp */; }; - B3AAF5C027C0A94B001CAE1F /* 80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48D27C09C5B0012118D /* 80.cpp */; }; - B3AAF5C127C0A94B001CAE1F /* 112.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F827C09C5B0012118D /* 112.cpp */; }; - B3AAF5C227C0A94B001CAE1F /* 88.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50E27C09C5B0012118D /* 88.cpp */; }; - B3AAF5C327C0A94B001CAE1F /* 177.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50427C09C5B0012118D /* 177.cpp */; }; - B3AAF5C427C0A94B001CAE1F /* 8157.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48827C09C5B0012118D /* 8157.cpp */; }; - B3AAF5C527C0A94B001CAE1F /* addrlatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4EC27C09C5B0012118D /* addrlatch.cpp */; }; - B3AAF5C627C0A94B001CAE1F /* bs-5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C627C09C5B0012118D /* bs-5.cpp */; }; - B3AAF5C727C0A94B001CAE1F /* cityfighter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E127C09C5B0012118D /* cityfighter.cpp */; }; - B3AAF5C827C0A94B001CAE1F /* sl1632.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48F27C09C5B0012118D /* sl1632.cpp */; }; - B3AAF5C927C0A94B001CAE1F /* pec-586.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48927C09C5B0012118D /* pec-586.cpp */; }; - B3AAF5CA27C0A94B001CAE1F /* supervision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E627C09C5B0012118D /* supervision.cpp */; }; - B3AAF5CB27C0A94B001CAE1F /* ghostbusters63in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B427C09C5B0012118D /* ghostbusters63in1.cpp */; }; - B3AAF5CC27C0A94B001CAE1F /* sa-9602b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A027C09C5B0012118D /* sa-9602b.cpp */; }; - B3AAF5CD27C0A94B001CAE1F /* 235.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49627C09C5B0012118D /* 235.cpp */; }; - B3AAF5CE27C0A94B001CAE1F /* famicombox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50027C09C5B0012118D /* famicombox.cpp */; }; - B3AAF5CF27C0A94B001CAE1F /* gs-2004.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4BE27C09C5B0012118D /* gs-2004.cpp */; }; - B3AAF5D027C0A94B001CAE1F /* 09-034a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F527C09C5B0012118D /* 09-034a.cpp */; }; - B3AAF5D127C0A94B001CAE1F /* 103.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4DC27C09C5B0012118D /* 103.cpp */; }; - B3AAF5D227C0A94B001CAE1F /* 603-5052.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51627C09C5B0012118D /* 603-5052.cpp */; }; - B3AAF5D327C0A94B001CAE1F /* 208.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49527C09C5B0012118D /* 208.cpp */; }; - B3AAF5D427C0A94B001CAE1F /* 170.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52427C09C5B0012118D /* 170.cpp */; }; - B3AAF5D527C0A94B001CAE1F /* 62.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50527C09C5B0012118D /* 62.cpp */; }; - B3AAF5D627C0A94B001CAE1F /* 36.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B727C09C5B0012118D /* 36.cpp */; }; - B3AAF5D727C0A94B001CAE1F /* 68.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47C27C09C5B0012118D /* 68.cpp */; }; - B3AAF5D827C0A94B001CAE1F /* dance2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51827C09C5B0012118D /* dance2000.cpp */; }; - B3AAF5D927C0A94B001CAE1F /* 106.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F727C09C5B0012118D /* 106.cpp */; }; - B3AAF5DA27C0A94B001CAE1F /* __dummy_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49727C09C5B0012118D /* __dummy_mapper.cpp */; }; - B3AAF5DB27C0A94B001CAE1F /* 77.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50B27C09C5B0012118D /* 77.cpp */; }; - B3AAF5DC27C0A94B001CAE1F /* 186.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4AF27C09C5B0012118D /* 186.cpp */; }; - B3AAF5DD27C0A94B001CAE1F /* 232.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4AD27C09C5B0012118D /* 232.cpp */; }; - B3AAF5DE27C0A94B001CAE1F /* sheroes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4ED27C09C5B0012118D /* sheroes.cpp */; }; - B3AAF5DF27C0A94B001CAE1F /* t-262.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51E27C09C5B0012118D /* t-262.cpp */; }; - B3AAF5E027C0A94B001CAE1F /* 71.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52227C09C5B0012118D /* 71.cpp */; }; - B3AAF5E127C0A94B001CAE1F /* 225.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49D27C09C5B0012118D /* 225.cpp */; }; - B3AAF5E227C0A94B001CAE1F /* 164.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52527C09C5B0012118D /* 164.cpp */; }; - B3AAF5E327C0A94B001CAE1F /* ks7057.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48E27C09C5B0012118D /* ks7057.cpp */; }; - B3AAF5E427C0A94B001CAE1F /* emu2413.c in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52727C09C5B0012118D /* emu2413.c */; }; - B3AAF5E527C0A94B001CAE1F /* 99.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51A27C09C5B0012118D /* 99.cpp */; }; - B3AAF5E627C0A94B001CAE1F /* et-100.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F427C09C5B0012118D /* et-100.cpp */; }; - B3AAF5E727C0A94B001CAE1F /* 230.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49F27C09C5B0012118D /* 230.cpp */; }; - B3AAF5E827C0A94B001CAE1F /* ks7012.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4FE27C09C5B0012118D /* ks7012.cpp */; }; - B3AAF5E927C0A94B001CAE1F /* lh32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48727C09C5B0012118D /* lh32.cpp */; }; - B3AAF5EA27C0A94B001CAE1F /* bonza.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4CB27C09C5B0012118D /* bonza.cpp */; }; - B3AAF5EB27C0A94B001CAE1F /* 28.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4EF27C09C5B0012118D /* 28.cpp */; }; - B3AAF5EC27C0A94B001CAE1F /* ffe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D227C09C5B0012118D /* ffe.cpp */; }; - B3AAF5ED27C0A94B001CAE1F /* 72.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51927C09C5B0012118D /* 72.cpp */; }; - B3AAF5EE27C0A94B001CAE1F /* ks7032.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D627C09C5B0012118D /* ks7032.cpp */; }; - B3AAF5EF27C0A94B001CAE1F /* vrc1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48A27C09C5B0012118D /* vrc1.cpp */; }; - B3AAF5F027C0A94B001CAE1F /* gs-2013.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B527C09C5B0012118D /* gs-2013.cpp */; }; - B3AAF5F127C0A94B001CAE1F /* 189.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50C27C09C5B0012118D /* 189.cpp */; }; - B3AAF5F227C0A94B001CAE1F /* ks7030.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D027C09C5B0012118D /* ks7030.cpp */; }; - B3AAF5F327C0A94B001CAE1F /* 116.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E527C09C5B0012118D /* 116.cpp */; }; - B3AAF5F427C0A94B001CAE1F /* 51.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A727C09C5B0012118D /* 51.cpp */; }; - B3AAF5F527C0A94B001CAE1F /* vrc2and4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B227C09C5B0012118D /* vrc2and4.cpp */; }; - B3AAF5F627C0A94B001CAE1F /* 228.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50A27C09C5B0012118D /* 228.cpp */; }; - B3AAF5F727C0A94B001CAE1F /* 199.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51427C09C5B0012118D /* 199.cpp */; }; - B3AAF5F827C0A94B001CAE1F /* 178.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A627C09C5B0012118D /* 178.cpp */; }; - B3AAF5F927C0A94B001CAE1F /* vrc3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48B27C09C5B0012118D /* vrc3.cpp */; }; - B3AAF5FA27C0A94B001CAE1F /* 32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D527C09C5B0012118D /* 32.cpp */; }; - B3AAF5FB27C0A94B001CAE1F /* edu2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C027C09C5B0012118D /* edu2000.cpp */; }; - B3AAF5FC27C0A94B001CAE1F /* 193.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4AA27C09C5B0012118D /* 193.cpp */; }; - B3AAF5FD27C0A94B001CAE1F /* 8237.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49327C09C5B0012118D /* 8237.cpp */; }; - B3AAF5FE27C0A94B001CAE1F /* BMW8544.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C927C09C5B0012118D /* BMW8544.cpp */; }; - B3AAF5FF27C0A94B001CAE1F /* hp898f.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50327C09C5B0012118D /* hp898f.cpp */; }; - B3AAF60027C0A94B001CAE1F /* bs4xxxr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50127C09C5B0012118D /* bs4xxxr.cpp */; }; - B3AAF60127C0A94B001CAE1F /* 156.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48C27C09C5B0012118D /* 156.cpp */; }; - B3AAF60227C0A94B001CAE1F /* 234.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49427C09C5B0012118D /* 234.cpp */; }; - B3AAF60327C0A94B001CAE1F /* a9746.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4CC27C09C5B0012118D /* a9746.cpp */; }; - B3AAF60427C0A94B001CAE1F /* eh8813a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50727C09C5B0012118D /* eh8813a.cpp */; }; - B3AAF60527C0A94B001CAE1F /* dream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F027C09C5B0012118D /* dream.cpp */; }; - B3AAF60627C0A94B001CAE1F /* sb-2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50627C09C5B0012118D /* sb-2000.cpp */; }; - B3AAF60727C0A94B001CAE1F /* sc-127.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4FA27C09C5B0012118D /* sc-127.cpp */; }; - B3AAF60827C0A94B001CAE1F /* n106.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50927C09C5B0012118D /* n106.cpp */; }; - B3AAF60927C0A94B001CAE1F /* 187.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A827C09C5B0012118D /* 187.cpp */; }; - B3AAF60A27C0A94B001CAE1F /* sachen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D727C09C5B0012118D /* sachen.cpp */; }; - B3AAF60B27C0A94B001CAE1F /* vrc5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A427C09C5B0012118D /* vrc5.cpp */; }; - B3AAF60C27C0A94B001CAE1F /* fns.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51B27C09C5B0012118D /* fns.cpp */; }; - B3AAF60D27C0A94B001CAE1F /* 46.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49B27C09C5B0012118D /* 46.cpp */; }; - B3AAF60E27C0A94B001CAE1F /* 82.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48627C09C5B0012118D /* 82.cpp */; }; - B3AAF60F27C0A94B001CAE1F /* ac-08.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4AB27C09C5B0012118D /* ac-08.cpp */; }; - B3AAF61027C0A94B001CAE1F /* bmc70in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C727C09C5B0012118D /* bmc70in1.cpp */; }; - B3AAF61127C0A94B001CAE1F /* ks7037.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B327C09C5B0012118D /* ks7037.cpp */; }; - B3AAF61227C0A94B001CAE1F /* 185.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A127C09C5B0012118D /* 185.cpp */; }; - B3AAF61327C0A94B001CAE1F /* 206.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51F27C09C5B0012118D /* 206.cpp */; }; - B3AAF61427C0A94B001CAE1F /* 120.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C427C09C5B0012118D /* 120.cpp */; }; - B3AAF61527C0A94B001CAE1F /* 42.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49827C09C5B0012118D /* 42.cpp */; }; - B3AAF61627C0A94B001CAE1F /* 222.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48027C09C5B0012118D /* 222.cpp */; }; - B3AAF61727C0A94B001CAE1F /* 108.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C327C09C5B0012118D /* 108.cpp */; }; - B3AAF61827C0A94B001CAE1F /* 80013-B.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B627C09C5B0012118D /* 80013-B.cpp */; }; - B3AAF61927C0A94B001CAE1F /* 67.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51327C09C5B0012118D /* 67.cpp */; }; - B3AAF61A27C0A94B001CAE1F /* 183.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48327C09C5B0012118D /* 183.cpp */; }; - B3AAF61B27C0A94B001CAE1F /* hp10xx_hp20xx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51027C09C5B0012118D /* hp10xx_hp20xx.cpp */; }; - B3AAF61C27C0A94B001CAE1F /* inlnsf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E927C09C5B0012118D /* inlnsf.cpp */; }; - B3AAF61D27C0A94B001CAE1F /* le05.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D927C09C5B0012118D /* le05.cpp */; }; - B3AAF61E27C0A94B001CAE1F /* mmc2and4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D427C09C5B0012118D /* mmc2and4.cpp */; }; - B3AAF61F27C0A94B001CAE1F /* onebus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4FB27C09C5B0012118D /* onebus.cpp */; }; - B3AAF62027C0A94B001CAE1F /* ks7013.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F927C09C5B0012118D /* ks7013.cpp */; }; - B3AAF62127C0A94B001CAE1F /* tf-1201.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50827C09C5B0012118D /* tf-1201.cpp */; }; - B3AAF62227C0A94B001CAE1F /* 158B.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52027C09C5B0012118D /* 158B.cpp */; }; - B3AAF62327C0A94B001CAE1F /* 253.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4CF27C09C5B0012118D /* 253.cpp */; }; - B3AAF62427C0A94B001CAE1F /* ks7010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F127C09C5B0012118D /* ks7010.cpp */; }; - B3AAF62527C0A94B001CAE1F /* 190.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49C27C09C5B0012118D /* 190.cpp */; }; - B3AAF62627C0A94B001CAE1F /* 176.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50F27C09C5B0012118D /* 176.cpp */; }; - B3AAF62727C0A94B001CAE1F /* ks7016.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4DF27C09C5B0012118D /* ks7016.cpp */; }; - B3AAF62827C0A94B001CAE1F /* ks7017.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E427C09C5B0012118D /* ks7017.cpp */; }; - B3AAF62927C0A94B001CAE1F /* 01-222.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A527C09C5B0012118D /* 01-222.cpp */; }; - B3AAF62A27C0A94B001CAE1F /* karaoke.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C227C09C5B0012118D /* karaoke.cpp */; }; - B3AAF62B27C0A94B001CAE1F /* 69.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48227C09C5B0012118D /* 69.cpp */; }; - B3AAF62C27C0A94B001CAE1F /* ax5705.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E327C09C5B0012118D /* ax5705.cpp */; }; - B3AAF62D27C0A94B001CAE1F /* 43.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49227C09C5B0012118D /* 43.cpp */; }; - B3AAF62E27C0A94B001CAE1F /* cheapocabra.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C127C09C5B0012118D /* cheapocabra.cpp */; }; - B3AAF62F27C0A94B001CAE1F /* super24.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F227C09C5B0012118D /* super24.cpp */; }; - B3AAF63027C0A94B001CAE1F /* 175.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB50227C09C5B0012118D /* 175.cpp */; }; - B3AAF63127C0A94B001CAE1F /* bmc13in1jy110.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47E27C09C5B0012118D /* bmc13in1jy110.cpp */; }; - B3AAF63227C0A94B001CAE1F /* 12in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51C27C09C5B0012118D /* 12in1.cpp */; }; - B3AAF63327C0A94B001CAE1F /* bmc42in1r.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F627C09C5B0012118D /* bmc42in1r.cpp */; }; - B3AAF63427C0A94B001CAE1F /* vrc6.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49927C09C5B0012118D /* vrc6.cpp */; }; - B3AAF63527C0A94B001CAE1F /* novel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D327C09C5B0012118D /* novel.cpp */; }; - B3AAF63627C0A94B001CAE1F /* 168.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48427C09C5B0012118D /* 168.cpp */; }; - B3AAF63727C0A94B001CAE1F /* 79.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A927C09C5B0012118D /* 79.cpp */; }; - B3AAF63827C0A94B001CAE1F /* bb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49127C09C5B0012118D /* bb.cpp */; }; - B3AAF63927C0A94B001CAE1F /* 8in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4BF27C09C5B0012118D /* 8in1.cpp */; }; - B3AAF63A27C0A94B001CAE1F /* 34.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4BC27C09C5B0012118D /* 34.cpp */; }; - B3AAF63B27C0A94B001CAE1F /* ks7031.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C827C09C5B0012118D /* ks7031.cpp */; }; - B3AAF63C27C0A94B001CAE1F /* rt-01.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52627C09C5B0012118D /* rt-01.cpp */; }; - B3AAF63D27C0A94B001CAE1F /* coolboy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4AE27C09C5B0012118D /* coolboy.cpp */; }; - B3AAF63E27C0A94B001CAE1F /* 3d-block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B827C09C5B0012118D /* 3d-block.cpp */; }; - B3AAF63F27C0A94B001CAE1F /* n625092.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47F27C09C5B0012118D /* n625092.cpp */; }; - B3AAF64027C0A94B001CAE1F /* 246.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4CD27C09C5B0012118D /* 246.cpp */; }; - B3AAF64127C0A94B001CAE1F /* 41.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48127C09C5B0012118D /* 41.cpp */; }; - B3AAF64227C0A94B001CAE1F /* malee.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4DB27C09C5B0012118D /* malee.cpp */; }; - B3AAF64327C0A94B001CAE1F /* subor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4C527C09C5B0012118D /* subor.cpp */; }; - B3AAF64427C0A94B001CAE1F /* t-227-1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51527C09C5B0012118D /* t-227-1.cpp */; }; - B3AAF64527C0A94B001CAE1F /* lh53.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B927C09C5B0012118D /* lh53.cpp */; }; - B3AAF64627C0A94B001CAE1F /* bmc64in1nr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4FD27C09C5B0012118D /* bmc64in1nr.cpp */; }; - B3AAF64727C0A94B001CAE1F /* vrc7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A327C09C5B0012118D /* vrc7.cpp */; }; - B3AAF64827C0A94B001CAE1F /* 40.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB47D27C09C5B0012118D /* 40.cpp */; }; - B3AAF64927C0A94B001CAE1F /* yoko.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4FF27C09C5B0012118D /* yoko.cpp */; }; - B3AAF64A27C0A94B001CAE1F /* mmc1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4EB27C09C5B0012118D /* mmc1.cpp */; }; - B3AAF64B27C0A94B001CAE1F /* 121.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4BA27C09C5B0012118D /* 121.cpp */; }; - B3AAF64C27C0A94B001CAE1F /* 411120-c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E027C09C5B0012118D /* 411120-c.cpp */; }; - B3AAF64D27C0A94B001CAE1F /* fk23c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51D27C09C5B0012118D /* fk23c.cpp */; }; - B3AAF64E27C0A94B001CAE1F /* 244.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D827C09C5B0012118D /* 244.cpp */; }; - B3AAF64F27C0A94B001CAE1F /* bandai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4BD27C09C5B0012118D /* bandai.cpp */; }; - B3AAF65027C0A94B001CAE1F /* vrc7p.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51127C09C5B0012118D /* vrc7p.cpp */; }; - B3AAF65127C0A94B001CAE1F /* 96.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB48527C09C5B0012118D /* 96.cpp */; }; - B3AAF65227C0A94B001CAE1F /* mmc5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4F327C09C5B0012118D /* mmc5.cpp */; }; - B3AAF65327C0A94B001CAE1F /* 90.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4A227C09C5B0012118D /* 90.cpp */; }; - B3AAF65427C0A94B001CAE1F /* 33.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4DA27C09C5B0012118D /* 33.cpp */; }; - B3AAF65527C0A94B001CAE1F /* F-15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51227C09C5B0012118D /* F-15.cpp */; }; - B3AAF65627C0A94B001CAE1F /* tengen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52127C09C5B0012118D /* tengen.cpp */; }; - B3AAF65727C0A94B001CAE1F /* 91.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49A27C09C5B0012118D /* 91.cpp */; }; - B3AAF65827C0A94B001CAE1F /* transformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4FC27C09C5B0012118D /* transformer.cpp */; }; - B3AAF65927C0A94B001CAE1F /* kof97.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E827C09C5B0012118D /* kof97.cpp */; }; - B3AAF65A27C0A94B001CAE1F /* 252.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4CE27C09C5B0012118D /* 252.cpp */; }; - B3AAF65B27C0A94B001CAE1F /* 65.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB52327C09C5B0012118D /* 65.cpp */; }; - B3AAF65C27C0A94B001CAE1F /* mihunche.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4EA27C09C5B0012118D /* mihunche.cpp */; }; - B3AAF65D27C0A94B001CAE1F /* et-4320.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4BB27C09C5B0012118D /* et-4320.cpp */; }; - B3AAF65E27C0A94C001CAE1F /* 117.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4DD27C09C5B0012118D /* 117.cpp */; }; - B3AAF65F27C0A94C001CAE1F /* datalatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4AC27C09C5B0012118D /* datalatch.cpp */; }; - B3AAF66027C0A94C001CAE1F /* 18.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4D127C09C5B0012118D /* 18.cpp */; }; - B3AAF66127C0A94C001CAE1F /* 50.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B027C09C5B0012118D /* 50.cpp */; }; - B3AAF66227C0A94C001CAE1F /* 830118C.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB51727C09C5B0012118D /* 830118C.cpp */; }; - B3AAF66327C0A94C001CAE1F /* 57.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49027C09C5B0012118D /* 57.cpp */; }; - B3AAF66427C0A94C001CAE1F /* 151.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4B127C09C5B0012118D /* 151.cpp */; }; - B3AAF66527C0A94C001CAE1F /* h2288.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB49E27C09C5B0012118D /* h2288.cpp */; }; - B3AAF66627C0A94C001CAE1F /* mmc3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4E227C09C5B0012118D /* mmc3.cpp */; }; - B3AAF66727C0A94C001CAE1F /* unrom512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB4DE27C09C5B0012118D /* unrom512.cpp */; }; - B3AAF66827C0A95C001CAE1F /* libfceux-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3BCA9BC27C09C230012118D /* libfceux-iOS.a */; }; + B3AAF66827C0A95C001CAE1F /* libfceux.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3BCA9BC27C09C230012118D /* libfceux.a */; }; B3AAF66B27C0AA43001CAE1F /* os_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38827C09C5B0012118D /* os_utils.cpp */; }; B3AAF66C27C0AA43001CAE1F /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38627C09C5B0012118D /* cheat.cpp */; }; B3AAF66D27C0AA43001CAE1F /* hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38027C09C5B0012118D /* hq2x.cpp */; }; @@ -523,17 +275,6 @@ B3AAF67427C0AA43001CAE1F /* scalebit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37427C09C5B0012118D /* scalebit.cpp */; }; B3AAF67527C0AA43001CAE1F /* scale2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37027C09C5B0012118D /* scale2x.cpp */; }; B3AAF67627C0AA43001CAE1F /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38127C09C5B0012118D /* config.cpp */; }; - B3AAF68327C0AA51001CAE1F /* os_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38827C09C5B0012118D /* os_utils.cpp */; }; - B3AAF68427C0AA51001CAE1F /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38627C09C5B0012118D /* cheat.cpp */; }; - B3AAF68527C0AA51001CAE1F /* hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38027C09C5B0012118D /* hq2x.cpp */; }; - B3AAF68627C0AA51001CAE1F /* hq3x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38227C09C5B0012118D /* hq3x.cpp */; }; - B3AAF68727C0AA51001CAE1F /* configSys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB36F27C09C5B0012118D /* configSys.cpp */; }; - B3AAF68827C0AA51001CAE1F /* scale3x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37827C09C5B0012118D /* scale3x.cpp */; }; - B3AAF68A27C0AA51001CAE1F /* nes_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38527C09C5B0012118D /* nes_ntsc.c */; }; - B3AAF68B27C0AA51001CAE1F /* args.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37527C09C5B0012118D /* args.cpp */; }; - B3AAF68C27C0AA51001CAE1F /* scalebit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37427C09C5B0012118D /* scalebit.cpp */; }; - B3AAF68D27C0AA51001CAE1F /* scale2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB37027C09C5B0012118D /* scale2x.cpp */; }; - B3AAF68E27C0AA51001CAE1F /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3BCB38127C09C5B0012118D /* config.cpp */; }; B3BCA6F227C098C00012118D /* emufile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77301ABF16A4002274A3 /* emufile.cpp */; }; B3BCA6F327C098C00012118D /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77DE1ABF16A5002274A3 /* md5.cpp */; }; B3BCA6F427C098C00012118D /* powerpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77641ABF16A4002274A3 /* powerpad.cpp */; }; @@ -763,236 +504,6 @@ B3BCA7D427C098C10012118D /* 01-222.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDEC1D6ECD7500742D04 /* 01-222.cpp */; }; B3BCA7D527C098C10012118D /* F-15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE531D6ECD7500742D04 /* F-15.cpp */; }; B3BCA7D627C098C10012118D /* 28.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF31D6ECD7500742D04 /* 28.cpp */; }; - B3BCA7D927C099700012118D /* 72.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE061D6ECD7500742D04 /* 72.cpp */; }; - B3BCA7DA27C099700012118D /* 90.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE0C1D6ECD7500742D04 /* 90.cpp */; }; - B3BCA7DB27C099700012118D /* 176.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE1F1D6ECD7500742D04 /* 176.cpp */; }; - B3BCA7DC27C099700012118D /* 34.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF61D6ECD7500742D04 /* 34.cpp */; }; - B3BCA7DD27C099700012118D /* 183.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE221D6ECD7500742D04 /* 183.cpp */; }; - B3BCA7DE27C099700012118D /* guid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77DA1ABF16A5002274A3 /* guid.cpp */; }; - B3BCA7DF27C099700012118D /* 253.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE351D6ECD7500742D04 /* 253.cpp */; }; - B3BCA7E027C099700012118D /* dance2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE4A1D6ECD7500742D04 /* dance2000.cpp */; }; - B3BCA7E127C099700012118D /* coolboy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE491D6ECD7500742D04 /* coolboy.cpp */; }; - B3BCA7E227C099700012118D /* 18.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF21D6ECD7500742D04 /* 18.cpp */; }; - B3BCA7E327C099700012118D /* 67.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE021D6ECD7500742D04 /* 67.cpp */; }; - B3BCA7E427C099700012118D /* 33.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF51D6ECD7500742D04 /* 33.cpp */; }; - B3BCA7E527C099700012118D /* snesmouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFDB1D6ED02100742D04 /* snesmouse.cpp */; }; - B3BCA7E627C099700012118D /* nes_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFF91D6ED36300742D04 /* nes_ntsc.c */; }; - B3BCA7E727C099700012118D /* bworld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A775B1ABF16A4002274A3 /* bworld.cpp */; }; - B3BCA7E827C099700012118D /* ax5705.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE3E1D6ECD7500742D04 /* ax5705.cpp */; }; - B3BCA7E927C099700012118D /* mmc1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE6F1D6ECD7500742D04 /* mmc1.cpp */; }; - B3BCA7EA27C099700012118D /* scalebit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFFF1D6ED36300742D04 /* scalebit.cpp */; }; - B3BCA7EB27C099700012118D /* 178.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE211D6ECD7500742D04 /* 178.cpp */; }; - B3BCA7EC27C099700012118D /* transformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE881D6ECD7500742D04 /* transformer.cpp */; }; - B3BCA7ED27C099700012118D /* ffe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE551D6ECD7500742D04 /* ffe.cpp */; }; - B3BCA7EE27C099700012118D /* movie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77B01ABF16A4002274A3 /* movie.cpp */; }; - B3BCA7EF27C099700012118D /* 228.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE2D1D6ECD7500742D04 /* 228.cpp */; }; - B3BCA7F027C099700012118D /* famicombox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE541D6ECD7500742D04 /* famicombox.cpp */; }; - B3BCA7F127C099700012118D /* 830118C.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE3A1D6ECD7500742D04 /* 830118C.cpp */; }; - B3BCA7F227C099700012118D /* ks7030.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE641D6ECD7500742D04 /* ks7030.cpp */; }; - B3BCA7F327C099700012118D /* 168.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE1C1D6ECD7500742D04 /* 168.cpp */; }; - B3BCA7F427C099700012118D /* unrom512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE891D6ECD7500742D04 /* unrom512.cpp */; }; - B3BCA7F527C099700012118D /* oldmovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77B61ABF16A4002274A3 /* oldmovie.cpp */; }; - B3BCA7F627C099700012118D /* karaoke.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE5D1D6ECD7500742D04 /* karaoke.cpp */; }; - B3BCA7F727C099700012118D /* mahjong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77611ABF16A4002274A3 /* mahjong.cpp */; }; - B3BCA7F827C099700012118D /* mmc5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE731D6ECD7500742D04 /* mmc5.cpp */; }; - B3BCA7F927C099700012118D /* ks7037.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE671D6ECD7500742D04 /* ks7037.cpp */; }; - B3BCA7FA27C099700012118D /* 208.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE2A1D6ECD7500742D04 /* 208.cpp */; }; - B3BCA7FB27C099700012118D /* 82.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE0A1D6ECD7500742D04 /* 82.cpp */; }; - B3BCA7FC27C099700012118D /* vrc6.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE8E1D6ECD7500742D04 /* vrc6.cpp */; }; - B3BCA7FD27C099700012118D /* 62.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE001D6ECD7500742D04 /* 62.cpp */; }; - B3BCA7FE27C099700012118D /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFED1D6ED36300742D04 /* cheat.cpp */; }; - B3BCA7FF27C099700012118D /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77DE1ABF16A5002274A3 /* md5.cpp */; }; - B3BCA80027C099700012118D /* 09-034a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDEF1D6ECD7500742D04 /* 09-034a.cpp */; }; - B3BCA80127C099700012118D /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A75A21ABF16A3002274A3 /* cart.cpp */; }; - B3BCA80227C099700012118D /* sheroes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE7F1D6ECD7500742D04 /* sheroes.cpp */; }; - B3BCA80327C099700012118D /* 91.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE0D1D6ECD7500742D04 /* 91.cpp */; }; - B3BCA80427C099700012118D /* 603-5052.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE361D6ECD7500742D04 /* 603-5052.cpp */; }; - B3BCA80527C099700012118D /* 151.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE181D6ECD7500742D04 /* 151.cpp */; }; - B3BCA80627C099700012118D /* cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A775C1ABF16A4002274A3 /* cursor.cpp */; }; - B3BCA80727C099700012118D /* 99.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE0F1D6ECD7500742D04 /* 99.cpp */; }; - B3BCA80827C099700012118D /* drawing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A75AC1ABF16A3002274A3 /* drawing.cpp */; }; - B3BCA80927C099700012118D /* hypershot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77601ABF16A4002274A3 /* hypershot.cpp */; }; - B3BCA80A27C099700012118D /* zapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A776C1ABF16A4002274A3 /* zapper.cpp */; }; - B3BCA80B27C099700012118D /* ghostbusters63in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE571D6ECD7500742D04 /* ghostbusters63in1.cpp */; }; - B3BCA80C27C099700012118D /* mihunche.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE6E1D6ECD7500742D04 /* mihunche.cpp */; }; - B3BCA80D27C099700012118D /* sb-2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE7C1D6ECD7500742D04 /* sb-2000.cpp */; }; - B3BCA80E27C099700012118D /* ks7013.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE611D6ECD7500742D04 /* ks7013.cpp */; }; - B3BCA80F27C099700012118D /* cityfighter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE481D6ECD7500742D04 /* cityfighter.cpp */; }; - B3BCA81027C099700012118D /* 36.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF71D6ECD7500742D04 /* 36.cpp */; }; - B3BCA81127C099700012118D /* ks7031.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE651D6ECD7500742D04 /* ks7031.cpp */; }; - B3BCA81227C099700012118D /* 170.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE1D1D6ECD7500742D04 /* 170.cpp */; }; - B3BCA81327C099700012118D /* 244.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE321D6ECD7500742D04 /* 244.cpp */; }; - B3BCA81427C099700012118D /* crc32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77D41ABF16A5002274A3 /* crc32.cpp */; }; - B3BCA81527C099700012118D /* sa-9602b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE7A1D6ECD7500742D04 /* sa-9602b.cpp */; }; - B3BCA81627C099700012118D /* et-100.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE511D6ECD7500742D04 /* et-100.cpp */; }; - B3BCA81727C099700012118D /* oekakids.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77631ABF16A4002274A3 /* oekakids.cpp */; }; - B3BCA81827C099700012118D /* 164.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE1B1D6ECD7500742D04 /* 164.cpp */; }; - B3BCA81927C099700012118D /* sc-127.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE7D1D6ECD7500742D04 /* sc-127.cpp */; }; - B3BCA81A27C099700012118D /* 28.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF31D6ECD7500742D04 /* 28.cpp */; }; - B3BCA81B27C099700012118D /* ks7016.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE621D6ECD7500742D04 /* ks7016.cpp */; }; - B3BCA81C27C099700012118D /* 77.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE071D6ECD7500742D04 /* 77.cpp */; }; - B3BCA81D27C099700012118D /* vidblit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8C0021D6ED36300742D04 /* vidblit.cpp */; }; - B3BCA81E27C099700012118D /* 225.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE2C1D6ECD7500742D04 /* 225.cpp */; }; - B3BCA81F27C099700012118D /* tf-1201.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE871D6ECD7500742D04 /* tf-1201.cpp */; }; - B3BCA82027C099700012118D /* 234.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE301D6ECD7500742D04 /* 234.cpp */; }; - B3BCA82127C099700012118D /* args.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFEB1D6ED36300742D04 /* args.cpp */; }; - B3BCA82227C099700012118D /* scale3x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFFD1D6ED36300742D04 /* scale3x.cpp */; }; - B3BCA82327C099700012118D /* 187.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE251D6ECD7500742D04 /* 187.cpp */; }; - B3BCA82427C099700012118D /* 50.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDFD1D6ECD7500742D04 /* 50.cpp */; }; - B3BCA82527C099700012118D /* pec586kb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFD81D6ECFC200742D04 /* pec586kb.cpp */; }; - B3BCA82627C099700012118D /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77E91ABF16A5002274A3 /* video.cpp */; }; - B3BCA82727C099700012118D /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77391ABF16A4002274A3 /* file.cpp */; }; - B3BCA82827C099700012118D /* vrc3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE8C1D6ECD7500742D04 /* vrc3.cpp */; }; - B3BCA82927C099700012118D /* 69.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE041D6ECD7500742D04 /* 69.cpp */; }; - B3BCA82A27C099700012118D /* 43.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDFB1D6ECD7500742D04 /* 43.cpp */; }; - B3BCA82B27C099700012118D /* unif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77CD1ABF16A5002274A3 /* unif.cpp */; }; - B3BCA82C27C099700012118D /* bb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE401D6ECD7500742D04 /* bb.cpp */; }; - B3BCA82E27C099700012118D /* ines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77571ABF16A4002274A3 /* ines.cpp */; }; - B3BCA82F27C099700012118D /* BMW8544.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE451D6ECD7500742D04 /* BMW8544.cpp */; }; - B3BCA83027C099700012118D /* bandai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE3F1D6ECD7500742D04 /* bandai.cpp */; }; - B3BCA83127C099700012118D /* bmc70in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE441D6ECD7500742D04 /* bmc70in1.cpp */; }; - B3BCA83227C099700012118D /* 68.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE031D6ECD7500742D04 /* 68.cpp */; }; - B3BCA83327C099700012118D /* emufile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77301ABF16A4002274A3 /* emufile.cpp */; }; - B3BCA83427C099700012118D /* __dummy_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDEB1D6ECD7500742D04 /* __dummy_mapper.cpp */; }; - B3BCA83527C099700012118D /* hp898f.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE5B1D6ECD7500742D04 /* hp898f.cpp */; }; - B3BCA83627C099700012118D /* 41.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF91D6ECD7500742D04 /* 41.cpp */; }; - B3BCA83727C099700012118D /* 96.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE0E1D6ECD7500742D04 /* 96.cpp */; }; - B3BCA83827C099700012118D /* 12in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF01D6ECD7500742D04 /* 12in1.cpp */; }; - B3BCA83927C099700012118D /* 108.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE121D6ECD7500742D04 /* 108.cpp */; }; - B3BCA83A27C099700012118D /* 88.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE0B1D6ECD7500742D04 /* 88.cpp */; }; - B3BCA83B27C099700012118D /* F-15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE531D6ECD7500742D04 /* F-15.cpp */; }; - B3BCA83C27C099700012118D /* subor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE811D6ECD7500742D04 /* subor.cpp */; }; - B3BCA83D27C099700012118D /* emu2413.c in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE4F1D6ECD7500742D04 /* emu2413.c */; }; - B3BCA83E27C099700012118D /* nsf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77B41ABF16A4002274A3 /* nsf.cpp */; }; - B3BCA83F27C099700012118D /* sachen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE7B1D6ECD7500742D04 /* sachen.cpp */; }; - B3BCA84027C099700012118D /* 8157.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE371D6ECD7500742D04 /* 8157.cpp */; }; - B3BCA84127C099700012118D /* filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A773B1ABF16A4002274A3 /* filter.cpp */; }; - B3BCA84227C099700012118D /* 117.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE151D6ECD7500742D04 /* 117.cpp */; }; - B3BCA84327C099700012118D /* a9746.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE3B1D6ECD7500742D04 /* a9746.cpp */; }; - B3BCA84427C099700012118D /* 42.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDFA1D6ECD7500742D04 /* 42.cpp */; }; - B3BCA84527C099700012118D /* 51.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDFE1D6ECD7500742D04 /* 51.cpp */; }; - B3BCA84627C099700012118D /* 8in1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDEE1D6ECD7500742D04 /* 8in1.cpp */; }; - B3BCA84727C099700012118D /* ac-08.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE3C1D6ECD7500742D04 /* ac-08.cpp */; }; - B3BCA84827C099700012118D /* n625092.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE751D6ECD7500742D04 /* n625092.cpp */; }; - B3BCA84927C099700012118D /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77D21ABF16A5002274A3 /* ConvertUTF.c */; }; - B3BCA84A27C099700012118D /* 120.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE161D6ECD7500742D04 /* 120.cpp */; }; - B3BCA84B27C099700012118D /* quiz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77651ABF16A4002274A3 /* quiz.cpp */; }; - B3BCA84C27C099700012118D /* vrc5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE8D1D6ECD7500742D04 /* vrc5.cpp */; }; - B3BCA84D27C099700012118D /* ks7057.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE681D6ECD7500742D04 /* ks7057.cpp */; }; - B3BCA84E27C099700012118D /* state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77C91ABF16A5002274A3 /* state.cpp */; }; - B3BCA84F27C099700012118D /* t-227-1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE841D6ECD7500742D04 /* t-227-1.cpp */; }; - B3BCA85027C099700012118D /* shadow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77671ABF16A4002274A3 /* shadow.cpp */; }; - B3BCA85127C099700012118D /* powerpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77641ABF16A4002274A3 /* powerpad.cpp */; }; - B3BCA85227C099700012118D /* 156.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE191D6ECD7500742D04 /* 156.cpp */; }; - B3BCA85327C099700012118D /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77C71ABF16A5002274A3 /* sound.cpp */; }; - B3BCA85427C099700012118D /* 185.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE231D6ECD7500742D04 /* 185.cpp */; }; - B3BCA85527C099700012118D /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFEF1D6ED36300742D04 /* config.cpp */; }; - B3BCA85627C099700012118D /* vrc2and4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE8B1D6ECD7500742D04 /* vrc2and4.cpp */; }; - B3BCA85727C099700012118D /* sl1632.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE801D6ECD7500742D04 /* sl1632.cpp */; }; - B3BCA85827C099700012118D /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A75A41ABF16A3002274A3 /* cheat.cpp */; }; - B3BCA85927C099700012118D /* 112.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE131D6ECD7500742D04 /* 112.cpp */; }; - B3BCA85A27C099700012118D /* le05.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE691D6ECD7500742D04 /* le05.cpp */; }; - B3BCA85B27C099700012118D /* fceu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77331ABF16A4002274A3 /* fceu.cpp */; }; - B3BCA85C27C099700012118D /* general.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77D81ABF16A5002274A3 /* general.cpp */; }; - B3BCA85D27C099700012118D /* 230.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE2E1D6ECD7500742D04 /* 230.cpp */; }; - B3BCA85E27C099700012118D /* 57.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDFF1D6ECD7500742D04 /* 57.cpp */; }; - B3BCA85F27C099700012118D /* edu2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE4D1D6ECD7500742D04 /* edu2000.cpp */; }; - B3BCA86027C099700012118D /* endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77D61ABF16A5002274A3 /* endian.cpp */; }; - B3BCA86127C099700012118D /* 65.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE011D6ECD7500742D04 /* 65.cpp */; }; - B3BCA86227C099700012118D /* x6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77EF1ABF16A5002274A3 /* x6502.cpp */; }; - B3BCA86327C099700012118D /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A776E1ABF16A4002274A3 /* input.cpp */; }; - B3BCA86427C099700012118D /* t-262.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE851D6ECD7500742D04 /* t-262.cpp */; }; - B3BCA86527C099700012118D /* novel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE761D6ECD7500742D04 /* novel.cpp */; }; - B3BCA86627C099700012118D /* palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77B91ABF16A4002274A3 /* palette.cpp */; }; - B3BCA86727C099700012118D /* 246.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE331D6ECD7500742D04 /* 246.cpp */; }; - B3BCA86827C099700012118D /* netplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77B21ABF16A4002274A3 /* netplay.cpp */; }; - B3BCA86927C099700012118D /* ks7032.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE661D6ECD7500742D04 /* ks7032.cpp */; }; - B3BCA86A27C099700012118D /* yoko.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE911D6ECD7500742D04 /* yoko.cpp */; }; - B3BCA86B27C099700012118D /* bmc64in1nr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE431D6ECD7500742D04 /* bmc64in1nr.cpp */; }; - B3BCA86C27C099700012118D /* 235.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE311D6ECD7500742D04 /* 235.cpp */; }; - B3BCA86D27C099700012118D /* 106.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE111D6ECD7500742D04 /* 106.cpp */; }; - B3BCA86E27C099700012118D /* h2288.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE5A1D6ECD7500742D04 /* h2288.cpp */; }; - B3BCA86F27C099700012118D /* super24.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE821D6ECD7500742D04 /* super24.cpp */; }; - B3BCA87027C099700012118D /* eh8813a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE4E1D6ECD7500742D04 /* eh8813a.cpp */; }; - B3BCA87127C099700012118D /* scale2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFFB1D6ED36300742D04 /* scale2x.cpp */; }; - B3BCA87227C099700012118D /* 01-222.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDEC1D6ECD7500742D04 /* 01-222.cpp */; }; - B3BCA87327C099700012118D /* 103.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE101D6ECD7500742D04 /* 103.cpp */; }; - B3BCA87427C099700012118D /* supervision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE831D6ECD7500742D04 /* supervision.cpp */; }; - B3BCA87527C099700012118D /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77C31ABF16A5002274A3 /* ppu.cpp */; }; - B3BCA87627C099700012118D /* hq3x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFF51D6ED36300742D04 /* hq3x.cpp */; }; - B3BCA87727C099700012118D /* fk23c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE561D6ECD7500742D04 /* fk23c.cpp */; }; - B3BCA87827C099700012118D /* 79.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE081D6ECD7500742D04 /* 79.cpp */; }; - B3BCA87927C099700012118D /* 175.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE1E1D6ECD7500742D04 /* 175.cpp */; }; - B3BCA87A27C099700012118D /* bs-5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE471D6ECD7500742D04 /* bs-5.cpp */; }; - B3BCA87B27C099700012118D /* configSys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFF11D6ED36300742D04 /* configSys.cpp */; }; - B3BCA87C27C099700012118D /* malee.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE6C1D6ECD7500742D04 /* malee.cpp */; }; - B3BCA87D27C099700012118D /* 46.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDFC1D6ECD7500742D04 /* 46.cpp */; }; - B3BCA87E27C099700012118D /* addrlatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE3D1D6ECD7500742D04 /* addrlatch.cpp */; }; - B3BCA87F27C099700012118D /* mmc2and4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE701D6ECD7500742D04 /* mmc2and4.cpp */; }; - B3BCA88027C099700012118D /* lh53.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE6B1D6ECD7500742D04 /* lh53.cpp */; }; - B3BCA88127C099700012118D /* arkanoid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A775A1ABF16A4002274A3 /* arkanoid.cpp */; }; - B3BCA88227C099700012118D /* pec-586.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE781D6ECD7500742D04 /* pec-586.cpp */; }; - B3BCA88327C099700012118D /* 158B.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE1A1D6ECD7500742D04 /* 158B.cpp */; }; - B3BCA88427C099700012118D /* 189.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE261D6ECD7500742D04 /* 189.cpp */; }; - B3BCA88527C099700012118D /* suborkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77691ABF16A4002274A3 /* suborkb.cpp */; }; - B3BCA88627C099700012118D /* bonza.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE461D6ECD7500742D04 /* bonza.cpp */; }; - B3BCA88727C099700012118D /* ks7010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE5F1D6ECD7500742D04 /* ks7010.cpp */; }; - B3BCA88827C099700012118D /* mmc3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE711D6ECD7500742D04 /* mmc3.cpp */; }; - B3BCA88927C099700012118D /* rt-01.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE791D6ECD7500742D04 /* rt-01.cpp */; }; - B3BCA88A27C099700012118D /* vrc7p.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE901D6ECD7500742D04 /* vrc7p.cpp */; }; - B3BCA88B27C099700012118D /* conddebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A75A61ABF16A3002274A3 /* conddebug.cpp */; }; - B3BCA88C27C099700012118D /* wave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77ED1ABF16A5002274A3 /* wave.cpp */; }; - B3BCA88D27C099700012118D /* 206.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE291D6ECD7500742D04 /* 206.cpp */; }; - B3BCA88E27C099700012118D /* 222.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE2B1D6ECD7500742D04 /* 222.cpp */; }; - B3BCA88F27C099700012118D /* 232.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE2F1D6ECD7500742D04 /* 232.cpp */; }; - B3BCA89027C099700012118D /* onebus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE771D6ECD7500742D04 /* onebus.cpp */; }; - B3BCA89127C099700012118D /* inlnsf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE5C1D6ECD7500742D04 /* inlnsf.cpp */; }; - B3BCA89227C099700012118D /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77621ABF16A4002274A3 /* mouse.cpp */; }; - B3BCA89327C099700012118D /* ioapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77DC1ABF16A5002274A3 /* ioapi.cpp */; }; - B3BCA89427C099700012118D /* 15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF11D6ECD7500742D04 /* 15.cpp */; }; - B3BCA89527C099700012118D /* lh32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE6A1D6ECD7500742D04 /* lh32.cpp */; }; - B3BCA89627C099700012118D /* toprider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A776B1ABF16A4002274A3 /* toprider.cpp */; }; - B3BCA89727C099700012118D /* gs-2013.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE591D6ECD7500742D04 /* gs-2013.cpp */; }; - B3BCA89827C099700012118D /* 116.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE141D6ECD7500742D04 /* 116.cpp */; }; - B3BCA89927C099700012118D /* 80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE091D6ECD7500742D04 /* 80.cpp */; }; - B3BCA89A27C099700012118D /* ftrainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A775F1ABF16A4002274A3 /* ftrainer.cpp */; }; - B3BCA89B27C099700012118D /* 71.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE051D6ECD7500742D04 /* 71.cpp */; }; - B3BCA89C27C099700012118D /* kof97.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE5E1D6ECD7500742D04 /* kof97.cpp */; }; - B3BCA89D27C099700012118D /* vsuni.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77EB1ABF16A5002274A3 /* vsuni.cpp */; }; - B3BCA89E27C099700012118D /* 186.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE241D6ECD7500742D04 /* 186.cpp */; }; - B3BCA89F27C099700012118D /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77E01ABF16A5002274A3 /* memory.cpp */; }; - B3BCA8A027C099700012118D /* 121.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE171D6ECD7500742D04 /* 121.cpp */; }; - B3BCA8A127C099700012118D /* 32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF41D6ECD7500742D04 /* 32.cpp */; }; - B3BCA8A227C099700012118D /* asm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A75061ABF16A3002274A3 /* asm.cpp */; }; - B3BCA8A327C099700012118D /* 193.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE271D6ECD7500742D04 /* 193.cpp */; }; - B3BCA8A427C099700012118D /* bmc13in1jy110.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE411D6ECD7500742D04 /* bmc13in1jy110.cpp */; }; - B3BCA8A527C099700012118D /* tengen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE861D6ECD7500742D04 /* tengen.cpp */; }; - B3BCA8A627C099700012118D /* n106.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE741D6ECD7500742D04 /* n106.cpp */; }; - B3BCA8A727C099700012118D /* 3d-block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDED1D6ECD7500742D04 /* 3d-block.cpp */; }; - B3BCA8A827C099700012118D /* bmc42in1r.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE421D6ECD7500742D04 /* bmc42in1r.cpp */; }; - B3BCA8A927C099700012118D /* 8237.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE381D6ECD7500742D04 /* 8237.cpp */; }; - B3BCA8AA27C099700012118D /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A75AA1ABF16A3002274A3 /* debug.cpp */; }; - B3BCA8AB27C099700012118D /* xstring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77E61ABF16A5002274A3 /* xstring.cpp */; }; - B3BCA8AC27C099700012118D /* hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BFF31D6ED36300742D04 /* hq2x.cpp */; }; - B3BCA8AD27C099700012118D /* 199.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE281D6ECD7500742D04 /* 199.cpp */; }; - B3BCA8AE27C099700012118D /* 252.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE341D6ECD7500742D04 /* 252.cpp */; }; - B3BCA8AF27C099700012118D /* vrc1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE8A1D6ECD7500742D04 /* vrc1.cpp */; }; - B3BCA8B027C099700012118D /* vrc7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE8F1D6ECD7500742D04 /* vrc7.cpp */; }; - B3BCA8B127C099700012118D /* fkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A775D1ABF16A4002274A3 /* fkb.cpp */; }; - B3BCA8B227C099700012118D /* dream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE4C1D6ECD7500742D04 /* dream.cpp */; }; - B3BCA8B327C099700012118D /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A75A81ABF16A3002274A3 /* config.cpp */; }; - B3BCA8B427C099700012118D /* ks7017.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE631D6ECD7500742D04 /* ks7017.cpp */; }; - B3BCA8B527C099700012118D /* ks7012.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE601D6ECD7500742D04 /* ks7012.cpp */; }; - B3BCA8B627C099700012118D /* backward.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77D01ABF16A5002274A3 /* backward.cpp */; }; - B3BCA8B727C099700012118D /* fds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77371ABF16A4002274A3 /* fds.cpp */; }; - B3BCA8B827C099700012118D /* gs-2004.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE581D6ECD7500742D04 /* gs-2004.cpp */; }; - B3BCA8B927C099700012118D /* unzip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3A77E31ABF16A5002274A3 /* unzip.cpp */; }; - B3BCA8BA27C099700012118D /* et-4320.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE521D6ECD7500742D04 /* et-4320.cpp */; }; - B3BCA8BB27C099700012118D /* 411120-c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE391D6ECD7500742D04 /* 411120-c.cpp */; }; - B3BCA8BC27C099700012118D /* 40.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BDF81D6ECD7500742D04 /* 40.cpp */; }; - B3BCA8BD27C099700012118D /* datalatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE4B1D6ECD7500742D04 /* datalatch.cpp */; }; - B3BCA8BE27C099700012118D /* 177.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8BE201D6ECD7500742D04 /* 177.cpp */; }; - B3BCB54427C09C820012118D /* libfceux-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3BCAAAC27C09C2D0012118D /* libfceux-tvOS.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1003,13 +514,6 @@ remoteGlobalIDString = B3341F4F27C1B18C00E001C6; remoteInfo = "fceux-netplay-server-iOS"; }; - B3341F8227C1B2D400E001C6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1A3A74E01ABF11AC002274A3 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3341F7027C1B23A00E001C6; - remoteInfo = "fceux-netplay-server-tvOS"; - }; B3AAF66927C0A95C001CAE1F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1A3A74E01ABF11AC002274A3 /* Project object */; @@ -1017,13 +521,6 @@ remoteGlobalIDString = B3BCA8CD27C09C230012118D; remoteInfo = "fceux-iOS"; }; - B3BCB54527C09C820012118D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1A3A74E01ABF11AC002274A3 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3BCA9BD27C09C2D0012118D; - remoteInfo = "fceux-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -1037,16 +534,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3341F7727C1B23A00E001C6 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - B3341F7827C1B23A00E001C6 /* fceux_netplay_server.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3341F8927C1B39100E001C6 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -1065,15 +552,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3BCA8C027C099700012118D /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3BCA9B627C09C230012118D /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -1083,15 +561,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3BCAAA627C09C2D0012118D /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -1212,7 +681,7 @@ B30614EA218D5F8D0041AD4F /* PVFCEUEmulatorCore+Controls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFCEUEmulatorCore+Controls.h"; sourceTree = ""; }; B30614EB218D5F8D0041AD4F /* PVFCEUEmulatorCore+Controls.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVFCEUEmulatorCore+Controls.mm"; sourceTree = ""; }; B30614F6218D60CB0041AD4F /* PVFCEU+Swift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFCEU+Swift.h"; sourceTree = ""; }; - B3341F5027C1B18C00E001C6 /* libfceux-netplay-server-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-netplay-server-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3341F5027C1B18C00E001C6 /* libfceux-netplay-server.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-netplay-server.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B3341F5227C1B18C00E001C6 /* fceux_netplay_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fceux_netplay_server.h; sourceTree = ""; }; B3341F5327C1B18C00E001C6 /* fceux_netplay_server.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = fceux_netplay_server.m; sourceTree = ""; }; B3341F5B27C1B1CC00E001C6 /* md5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = md5.cpp; sourceTree = ""; }; @@ -1229,7 +698,6 @@ B3341F6A27C1B1CD00E001C6 /* throttle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = throttle.cpp; sourceTree = ""; }; B3341F6B27C1B1CD00E001C6 /* throttle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = throttle.h; sourceTree = ""; }; B3341F6C27C1B1CD00E001C6 /* server.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = server.cpp; sourceTree = ""; }; - B3341F7D27C1B23A00E001C6 /* libfceux-netplay-server-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-netplay-server-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B3341F8427C1B34000E001C6 /* fceux-server.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "fceux-server.conf"; sourceTree = ""; }; B3341F8B27C1B39100E001C6 /* fceux-server */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "fceux-server"; sourceTree = BUILT_PRODUCTS_DIR; }; B3341F8D27C1B39200E001C6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -1245,15 +713,12 @@ B3A9F4361DE877B4008450F5 /* PVFCEU.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFCEU.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3A9F4381DE877B4008450F5 /* PVFCEU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFCEU.h; sourceTree = ""; }; B3A9F4391DE877B4008450F5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3A9F4441DE877E4008450F5 /* PVFCEU.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFCEU.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3A9F4541DE87840008450F5 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B3A9F4581DE8784B008450F5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B3A9F6321DE88425008450F5 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; B3A9F6341DE8842C008450F5 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; - B3BCA6E827C098710012118D /* libfceux-2.2.3-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-2.2.3-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3BCA8C627C099700012118D /* libfceux-2.2.3-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-2.2.3-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3BCA9BC27C09C230012118D /* libfceux-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3BCAAAC27C09C2D0012118D /* libfceux-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3BCA6E827C098710012118D /* libfceux-2.2.3.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfceux-2.2.3.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3BCA9BC27C09C230012118D /* libfceux.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libfceux.a; sourceTree = BUILT_PRODUCTS_DIR; }; B3BCB16727C09C5A0012118D /* oldmovie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oldmovie.h; sourceTree = ""; }; B3BCB16827C09C5A0012118D /* sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; B3BCB16927C09C5A0012118D /* cheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheat.h; sourceTree = ""; }; @@ -2417,13 +1882,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3341F7627C1B23A00E001C6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3341F8827C1B39100E001C6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2437,23 +1895,9 @@ files = ( B34AB55A2106D57B00C45F09 /* PVSupport.framework in Frameworks */, B3A9F6331DE88425008450F5 /* libz.tbd in Frameworks */, - B3341F7E27C1B2CF00E001C6 /* libfceux-netplay-server-iOS.a in Frameworks */, + B3341F7E27C1B2CF00E001C6 /* libfceux-netplay-server.a in Frameworks */, B3A9F4501DE87833008450F5 /* Foundation.framework in Frameworks */, - B3A9F44F1DE87827008450F5 /* OpenGLES.framework in Frameworks */, - B3AAF66827C0A95C001CAE1F /* libfceux-iOS.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3A9F4401DE877E4008450F5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B34AB5822106DDCC00C45F09 /* PVSupport.framework in Frameworks */, - B3A9F6351DE8842C008450F5 /* libz.tbd in Frameworks */, - B3341F8127C1B2D400E001C6 /* libfceux-netplay-server-tvOS.a in Frameworks */, - B3A9F4591DE8784B008450F5 /* Foundation.framework in Frameworks */, - B3BCB54427C09C820012118D /* libfceux-tvOS.a in Frameworks */, - B3A9F4551DE87840008450F5 /* OpenGLES.framework in Frameworks */, + B3AAF66827C0A95C001CAE1F /* libfceux.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2464,13 +1908,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3BCA8BF27C099700012118D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3BCA9B527C09C230012118D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2483,13 +1920,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3BCAAA527C09C2D0012118D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -2510,13 +1940,9 @@ isa = PBXGroup; children = ( B3A9F4361DE877B4008450F5 /* PVFCEU.framework */, - B3A9F4441DE877E4008450F5 /* PVFCEU.framework */, - B3BCA6E827C098710012118D /* libfceux-2.2.3-iOS.a */, - B3BCA8C627C099700012118D /* libfceux-2.2.3-tvOS.a */, - B3BCA9BC27C09C230012118D /* libfceux-iOS.a */, - B3BCAAAC27C09C2D0012118D /* libfceux-tvOS.a */, - B3341F5027C1B18C00E001C6 /* libfceux-netplay-server-iOS.a */, - B3341F7D27C1B23A00E001C6 /* libfceux-netplay-server-tvOS.a */, + B3BCA6E827C098710012118D /* libfceux-2.2.3.a */, + B3BCA9BC27C09C230012118D /* libfceux.a */, + B3341F5027C1B18C00E001C6 /* libfceux-netplay-server.a */, B3341F8B27C1B39100E001C6 /* fceux-server */, ); name = Products; @@ -4186,23 +3612,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3A9F4411DE877E4008450F5 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B30C098927C0ADD1009F25D0 /* ppu.h in Headers */, - B30614F8218D60CB0041AD4F /* PVFCEU+Swift.h in Headers */, - B3A9F45A1DE8785A008450F5 /* PVFCEU.h in Headers */, - B3A9F6301DE883F1008450F5 /* PVFCEUEmulatorCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B3341F4F27C1B18C00E001C6 /* fceux-netplay-server-iOS */ = { + B3341F4F27C1B18C00E001C6 /* fceux-netplay-server */ = { isa = PBXNativeTarget; - buildConfigurationList = B3341F5927C1B18C00E001C6 /* Build configuration list for PBXNativeTarget "fceux-netplay-server-iOS" */; + buildConfigurationList = B3341F5927C1B18C00E001C6 /* Build configuration list for PBXNativeTarget "fceux-netplay-server" */; buildPhases = ( B3341F4C27C1B18C00E001C6 /* Sources */, B3341F4D27C1B18C00E001C6 /* Frameworks */, @@ -4212,26 +3627,9 @@ ); dependencies = ( ); - name = "fceux-netplay-server-iOS"; - productName = "fceux-netplay-server"; - productReference = B3341F5027C1B18C00E001C6 /* libfceux-netplay-server-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3341F7027C1B23A00E001C6 /* fceux-netplay-server-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3341F7927C1B23A00E001C6 /* Build configuration list for PBXNativeTarget "fceux-netplay-server-tvOS" */; - buildPhases = ( - B3341F7127C1B23A00E001C6 /* Sources */, - B3341F7627C1B23A00E001C6 /* Frameworks */, - B3341F7727C1B23A00E001C6 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "fceux-netplay-server-tvOS"; + name = "fceux-netplay-server"; productName = "fceux-netplay-server"; - productReference = B3341F7D27C1B23A00E001C6 /* libfceux-netplay-server-tvOS.a */; + productReference = B3341F5027C1B18C00E001C6 /* libfceux-netplay-server.a */; productType = "com.apple.product-type.library.static"; }; B3341F8A27C1B39100E001C6 /* fceux-server */ = { @@ -4251,9 +3649,9 @@ productReference = B3341F8B27C1B39100E001C6 /* fceux-server */; productType = "com.apple.product-type.tool"; }; - B3A9F4351DE877B4008450F5 /* PVFCEU-iOS */ = { + B3A9F4351DE877B4008450F5 /* PVFCEU */ = { isa = PBXNativeTarget; - buildConfigurationList = B3A9F43B1DE877B4008450F5 /* Build configuration list for PBXNativeTarget "PVFCEU-iOS" */; + buildConfigurationList = B3A9F43B1DE877B4008450F5 /* Build configuration list for PBXNativeTarget "PVFCEU" */; buildPhases = ( B3A9F4331DE877B4008450F5 /* Headers */, B3A9F4311DE877B4008450F5 /* Sources */, @@ -4266,34 +3664,14 @@ B3AAF66A27C0A95C001CAE1F /* PBXTargetDependency */, B3341F8027C1B2CF00E001C6 /* PBXTargetDependency */, ); - name = "PVFCEU-iOS"; + name = PVFCEU; productName = PVNES; productReference = B3A9F4361DE877B4008450F5 /* PVFCEU.framework */; productType = "com.apple.product-type.framework"; }; - B3A9F4431DE877E4008450F5 /* PVFCEU-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3A9F4491DE877E4008450F5 /* Build configuration list for PBXNativeTarget "PVFCEU-tvOS" */; - buildPhases = ( - B3A9F4411DE877E4008450F5 /* Headers */, - B3A9F43F1DE877E4008450F5 /* Sources */, - B3A9F4401DE877E4008450F5 /* Frameworks */, - B3A9F4421DE877E4008450F5 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3BCB54627C09C820012118D /* PBXTargetDependency */, - B3341F8327C1B2D400E001C6 /* PBXTargetDependency */, - ); - name = "PVFCEU-tvOS"; - productName = "PVNES tvOS"; - productReference = B3A9F4441DE877E4008450F5 /* PVFCEU.framework */; - productType = "com.apple.product-type.framework"; - }; - B3BCA6E727C098710012118D /* fceux-2.2.3-iOS */ = { + B3BCA6E727C098710012118D /* fceux-2.2.3 */ = { isa = PBXNativeTarget; - buildConfigurationList = B3BCA6EE27C098720012118D /* Build configuration list for PBXNativeTarget "fceux-2.2.3-iOS" */; + buildConfigurationList = B3BCA6EE27C098720012118D /* Build configuration list for PBXNativeTarget "fceux-2.2.3" */; buildPhases = ( B3BCA6E427C098710012118D /* Sources */, B3BCA6E527C098710012118D /* Frameworks */, @@ -4303,31 +3681,14 @@ ); dependencies = ( ); - name = "fceux-2.2.3-iOS"; - productName = "fceux-2.2.3"; - productReference = B3BCA6E827C098710012118D /* libfceux-2.2.3-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3BCA7D727C099700012118D /* fceux-2.2.3-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3BCA8C227C099700012118D /* Build configuration list for PBXNativeTarget "fceux-2.2.3-tvOS" */; - buildPhases = ( - B3BCA7D827C099700012118D /* Sources */, - B3BCA8BF27C099700012118D /* Frameworks */, - B3BCA8C027C099700012118D /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "fceux-2.2.3-tvOS"; + name = "fceux-2.2.3"; productName = "fceux-2.2.3"; - productReference = B3BCA8C627C099700012118D /* libfceux-2.2.3-tvOS.a */; + productReference = B3BCA6E827C098710012118D /* libfceux-2.2.3.a */; productType = "com.apple.product-type.library.static"; }; - B3BCA8CD27C09C230012118D /* fceux-iOS */ = { + B3BCA8CD27C09C230012118D /* fceux */ = { isa = PBXNativeTarget; - buildConfigurationList = B3BCA9B827C09C230012118D /* Build configuration list for PBXNativeTarget "fceux-iOS" */; + buildConfigurationList = B3BCA9B827C09C230012118D /* Build configuration list for PBXNativeTarget "fceux" */; buildPhases = ( B3BCA8CE27C09C230012118D /* Sources */, B3BCA9B527C09C230012118D /* Frameworks */, @@ -4337,26 +3698,9 @@ ); dependencies = ( ); - name = "fceux-iOS"; - productName = "fceux-2.2.3"; - productReference = B3BCA9BC27C09C230012118D /* libfceux-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3BCA9BD27C09C2D0012118D /* fceux-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3BCAAA827C09C2D0012118D /* Build configuration list for PBXNativeTarget "fceux-tvOS" */; - buildPhases = ( - B3BCA9BE27C09C2D0012118D /* Sources */, - B3BCAAA527C09C2D0012118D /* Frameworks */, - B3BCAAA627C09C2D0012118D /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "fceux-tvOS"; + name = fceux; productName = "fceux-2.2.3"; - productReference = B3BCAAAC27C09C2D0012118D /* libfceux-tvOS.a */; + productReference = B3BCA9BC27C09C230012118D /* libfceux.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -4380,10 +3724,6 @@ CreatedOnToolsVersion = 8.1; LastSwiftMigration = 1020; }; - B3A9F4431DE877E4008450F5 = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 0920; - }; B3BCA6E727C098710012118D = { CreatedOnToolsVersion = 13.2.1; }; @@ -4402,14 +3742,10 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3A9F4351DE877B4008450F5 /* PVFCEU-iOS */, - B3A9F4431DE877E4008450F5 /* PVFCEU-tvOS */, - B3BCA6E727C098710012118D /* fceux-2.2.3-iOS */, - B3BCA7D727C099700012118D /* fceux-2.2.3-tvOS */, - B3BCA8CD27C09C230012118D /* fceux-iOS */, - B3BCA9BD27C09C2D0012118D /* fceux-tvOS */, - B3341F4F27C1B18C00E001C6 /* fceux-netplay-server-iOS */, - B3341F7027C1B23A00E001C6 /* fceux-netplay-server-tvOS */, + B3A9F4351DE877B4008450F5 /* PVFCEU */, + B3BCA6E727C098710012118D /* fceux-2.2.3 */, + B3BCA8CD27C09C230012118D /* fceux */, + B3341F4F27C1B18C00E001C6 /* fceux-netplay-server */, B3341F8A27C1B39100E001C6 /* fceux-server */, ); }; @@ -4425,15 +3761,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3A9F4421DE877E4008450F5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3341F8627C1B34100E001C6 /* fceux-server.conf in Resources */, - B3547B4C205857B900CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -4448,17 +3775,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3341F7127C1B23A00E001C6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3341F7227C1B23A00E001C6 /* server.cpp in Sources */, - B3341F7327C1B23A00E001C6 /* md5.cpp in Sources */, - B3341F7427C1B23A00E001C6 /* fceux_netplay_server.m in Sources */, - B3341F7527C1B23A00E001C6 /* throttle.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3341F8727C1B39100E001C6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4480,16 +3796,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3A9F43F1DE877E4008450F5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B39E8CB420539B2500380DCD /* PVFCEUEmulatorCore.swift in Sources */, - B3A9F57A1DE87E09008450F5 /* PVFCEUEmulatorCore.mm in Sources */, - B306150C218D6F330041AD4F /* PVFCEUEmulatorCore+Controls.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3BCA6E427C098710012118D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4726,242 +4032,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3BCA7D827C099700012118D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3BCA7D927C099700012118D /* 72.cpp in Sources */, - B3BCA7DA27C099700012118D /* 90.cpp in Sources */, - B3BCA7DB27C099700012118D /* 176.cpp in Sources */, - B3BCA7DC27C099700012118D /* 34.cpp in Sources */, - B3BCA7DD27C099700012118D /* 183.cpp in Sources */, - B3BCA7DE27C099700012118D /* guid.cpp in Sources */, - B3BCA7DF27C099700012118D /* 253.cpp in Sources */, - B3BCA7E027C099700012118D /* dance2000.cpp in Sources */, - B3BCA7E127C099700012118D /* coolboy.cpp in Sources */, - B3BCA7E227C099700012118D /* 18.cpp in Sources */, - B3BCA7E327C099700012118D /* 67.cpp in Sources */, - B3BCA7E427C099700012118D /* 33.cpp in Sources */, - B3BCA7E527C099700012118D /* snesmouse.cpp in Sources */, - B3BCA7E627C099700012118D /* nes_ntsc.c in Sources */, - B3BCA7E727C099700012118D /* bworld.cpp in Sources */, - B3BCA7E827C099700012118D /* ax5705.cpp in Sources */, - B3BCA7E927C099700012118D /* mmc1.cpp in Sources */, - B3BCA7EA27C099700012118D /* scalebit.cpp in Sources */, - B3BCA7EB27C099700012118D /* 178.cpp in Sources */, - B3BCA7EC27C099700012118D /* transformer.cpp in Sources */, - B3BCA7ED27C099700012118D /* ffe.cpp in Sources */, - B3BCA7EE27C099700012118D /* movie.cpp in Sources */, - B3BCA7EF27C099700012118D /* 228.cpp in Sources */, - B3BCA7F027C099700012118D /* famicombox.cpp in Sources */, - B3BCA7F127C099700012118D /* 830118C.cpp in Sources */, - B3BCA7F227C099700012118D /* ks7030.cpp in Sources */, - B3BCA7F327C099700012118D /* 168.cpp in Sources */, - B3BCA7F427C099700012118D /* unrom512.cpp in Sources */, - B3BCA7F527C099700012118D /* oldmovie.cpp in Sources */, - B3BCA7F627C099700012118D /* karaoke.cpp in Sources */, - B3BCA7F727C099700012118D /* mahjong.cpp in Sources */, - B3BCA7F827C099700012118D /* mmc5.cpp in Sources */, - B3BCA7F927C099700012118D /* ks7037.cpp in Sources */, - B3BCA7FA27C099700012118D /* 208.cpp in Sources */, - B3BCA7FB27C099700012118D /* 82.cpp in Sources */, - B3BCA7FC27C099700012118D /* vrc6.cpp in Sources */, - B3BCA7FD27C099700012118D /* 62.cpp in Sources */, - B3BCA7FE27C099700012118D /* cheat.cpp in Sources */, - B3BCA7FF27C099700012118D /* md5.cpp in Sources */, - B3BCA80027C099700012118D /* 09-034a.cpp in Sources */, - B3BCA80127C099700012118D /* cart.cpp in Sources */, - B3BCA80227C099700012118D /* sheroes.cpp in Sources */, - B3BCA80327C099700012118D /* 91.cpp in Sources */, - B3BCA80427C099700012118D /* 603-5052.cpp in Sources */, - B3BCA80527C099700012118D /* 151.cpp in Sources */, - B3BCA80627C099700012118D /* cursor.cpp in Sources */, - B3BCA80727C099700012118D /* 99.cpp in Sources */, - B3BCA80827C099700012118D /* drawing.cpp in Sources */, - B3BCA80927C099700012118D /* hypershot.cpp in Sources */, - B3BCA80A27C099700012118D /* zapper.cpp in Sources */, - B3BCA80B27C099700012118D /* ghostbusters63in1.cpp in Sources */, - B3BCA80C27C099700012118D /* mihunche.cpp in Sources */, - B3BCA80D27C099700012118D /* sb-2000.cpp in Sources */, - B3BCA80E27C099700012118D /* ks7013.cpp in Sources */, - B3BCA80F27C099700012118D /* cityfighter.cpp in Sources */, - B3BCA81027C099700012118D /* 36.cpp in Sources */, - B3BCA81127C099700012118D /* ks7031.cpp in Sources */, - B3BCA81227C099700012118D /* 170.cpp in Sources */, - B3BCA81327C099700012118D /* 244.cpp in Sources */, - B3BCA81427C099700012118D /* crc32.cpp in Sources */, - B3BCA81527C099700012118D /* sa-9602b.cpp in Sources */, - B3BCA81627C099700012118D /* et-100.cpp in Sources */, - B3BCA81727C099700012118D /* oekakids.cpp in Sources */, - B3BCA81827C099700012118D /* 164.cpp in Sources */, - B3BCA81927C099700012118D /* sc-127.cpp in Sources */, - B3BCA81A27C099700012118D /* 28.cpp in Sources */, - B3BCA81B27C099700012118D /* ks7016.cpp in Sources */, - B3BCA81C27C099700012118D /* 77.cpp in Sources */, - B3BCA81D27C099700012118D /* vidblit.cpp in Sources */, - B3BCA81E27C099700012118D /* 225.cpp in Sources */, - B3BCA81F27C099700012118D /* tf-1201.cpp in Sources */, - B3BCA82027C099700012118D /* 234.cpp in Sources */, - B3BCA82127C099700012118D /* args.cpp in Sources */, - B3BCA82227C099700012118D /* scale3x.cpp in Sources */, - B3BCA82327C099700012118D /* 187.cpp in Sources */, - B3BCA82427C099700012118D /* 50.cpp in Sources */, - B3BCA82527C099700012118D /* pec586kb.cpp in Sources */, - B3BCA82627C099700012118D /* video.cpp in Sources */, - B3BCA82727C099700012118D /* file.cpp in Sources */, - B3BCA82827C099700012118D /* vrc3.cpp in Sources */, - B3BCA82927C099700012118D /* 69.cpp in Sources */, - B3BCA82A27C099700012118D /* 43.cpp in Sources */, - B3BCA82B27C099700012118D /* unif.cpp in Sources */, - B3BCA82C27C099700012118D /* bb.cpp in Sources */, - B3BCA82E27C099700012118D /* ines.cpp in Sources */, - B3BCA82F27C099700012118D /* BMW8544.cpp in Sources */, - B3BCA83027C099700012118D /* bandai.cpp in Sources */, - B3BCA83127C099700012118D /* bmc70in1.cpp in Sources */, - B3BCA83227C099700012118D /* 68.cpp in Sources */, - B3BCA83327C099700012118D /* emufile.cpp in Sources */, - B3BCA83427C099700012118D /* __dummy_mapper.cpp in Sources */, - B3BCA83527C099700012118D /* hp898f.cpp in Sources */, - B3BCA83627C099700012118D /* 41.cpp in Sources */, - B3BCA83727C099700012118D /* 96.cpp in Sources */, - B3BCA83827C099700012118D /* 12in1.cpp in Sources */, - B3BCA83927C099700012118D /* 108.cpp in Sources */, - B3BCA83A27C099700012118D /* 88.cpp in Sources */, - B3BCA83B27C099700012118D /* F-15.cpp in Sources */, - B3BCA83C27C099700012118D /* subor.cpp in Sources */, - B3BCA83D27C099700012118D /* emu2413.c in Sources */, - B3BCA83E27C099700012118D /* nsf.cpp in Sources */, - B3BCA83F27C099700012118D /* sachen.cpp in Sources */, - B3BCA84027C099700012118D /* 8157.cpp in Sources */, - B3BCA84127C099700012118D /* filter.cpp in Sources */, - B3BCA84227C099700012118D /* 117.cpp in Sources */, - B3BCA84327C099700012118D /* a9746.cpp in Sources */, - B3BCA84427C099700012118D /* 42.cpp in Sources */, - B3BCA84527C099700012118D /* 51.cpp in Sources */, - B3BCA84627C099700012118D /* 8in1.cpp in Sources */, - B3BCA84727C099700012118D /* ac-08.cpp in Sources */, - B3BCA84827C099700012118D /* n625092.cpp in Sources */, - B3BCA84927C099700012118D /* ConvertUTF.c in Sources */, - B3BCA84A27C099700012118D /* 120.cpp in Sources */, - B3BCA84B27C099700012118D /* quiz.cpp in Sources */, - B3BCA84C27C099700012118D /* vrc5.cpp in Sources */, - B3BCA84D27C099700012118D /* ks7057.cpp in Sources */, - B3BCA84E27C099700012118D /* state.cpp in Sources */, - B3BCA84F27C099700012118D /* t-227-1.cpp in Sources */, - B3BCA85027C099700012118D /* shadow.cpp in Sources */, - B3BCA85127C099700012118D /* powerpad.cpp in Sources */, - B3BCA85227C099700012118D /* 156.cpp in Sources */, - B3BCA85327C099700012118D /* sound.cpp in Sources */, - B3BCA85427C099700012118D /* 185.cpp in Sources */, - B3BCA85527C099700012118D /* config.cpp in Sources */, - B3BCA85627C099700012118D /* vrc2and4.cpp in Sources */, - B3BCA85727C099700012118D /* sl1632.cpp in Sources */, - B3BCA85827C099700012118D /* cheat.cpp in Sources */, - B3BCA85927C099700012118D /* 112.cpp in Sources */, - B3BCA85A27C099700012118D /* le05.cpp in Sources */, - B3BCA85B27C099700012118D /* fceu.cpp in Sources */, - B3BCA85C27C099700012118D /* general.cpp in Sources */, - B3BCA85D27C099700012118D /* 230.cpp in Sources */, - B3BCA85E27C099700012118D /* 57.cpp in Sources */, - B3BCA85F27C099700012118D /* edu2000.cpp in Sources */, - B3BCA86027C099700012118D /* endian.cpp in Sources */, - B3BCA86127C099700012118D /* 65.cpp in Sources */, - B3BCA86227C099700012118D /* x6502.cpp in Sources */, - B3BCA86327C099700012118D /* input.cpp in Sources */, - B3BCA86427C099700012118D /* t-262.cpp in Sources */, - B3BCA86527C099700012118D /* novel.cpp in Sources */, - B3BCA86627C099700012118D /* palette.cpp in Sources */, - B3BCA86727C099700012118D /* 246.cpp in Sources */, - B3BCA86827C099700012118D /* netplay.cpp in Sources */, - B3BCA86927C099700012118D /* ks7032.cpp in Sources */, - B3BCA86A27C099700012118D /* yoko.cpp in Sources */, - B3BCA86B27C099700012118D /* bmc64in1nr.cpp in Sources */, - B3BCA86C27C099700012118D /* 235.cpp in Sources */, - B3BCA86D27C099700012118D /* 106.cpp in Sources */, - B3BCA86E27C099700012118D /* h2288.cpp in Sources */, - B3BCA86F27C099700012118D /* super24.cpp in Sources */, - B3BCA87027C099700012118D /* eh8813a.cpp in Sources */, - B3BCA87127C099700012118D /* scale2x.cpp in Sources */, - B3BCA87227C099700012118D /* 01-222.cpp in Sources */, - B3BCA87327C099700012118D /* 103.cpp in Sources */, - B3BCA87427C099700012118D /* supervision.cpp in Sources */, - B3BCA87527C099700012118D /* ppu.cpp in Sources */, - B3BCA87627C099700012118D /* hq3x.cpp in Sources */, - B3BCA87727C099700012118D /* fk23c.cpp in Sources */, - B3BCA87827C099700012118D /* 79.cpp in Sources */, - B3BCA87927C099700012118D /* 175.cpp in Sources */, - B3BCA87A27C099700012118D /* bs-5.cpp in Sources */, - B3BCA87B27C099700012118D /* configSys.cpp in Sources */, - B3BCA87C27C099700012118D /* malee.cpp in Sources */, - B3BCA87D27C099700012118D /* 46.cpp in Sources */, - B3BCA87E27C099700012118D /* addrlatch.cpp in Sources */, - B3BCA87F27C099700012118D /* mmc2and4.cpp in Sources */, - B3BCA88027C099700012118D /* lh53.cpp in Sources */, - B3BCA88127C099700012118D /* arkanoid.cpp in Sources */, - B3BCA88227C099700012118D /* pec-586.cpp in Sources */, - B3BCA88327C099700012118D /* 158B.cpp in Sources */, - B3BCA88427C099700012118D /* 189.cpp in Sources */, - B3BCA88527C099700012118D /* suborkb.cpp in Sources */, - B3BCA88627C099700012118D /* bonza.cpp in Sources */, - B3BCA88727C099700012118D /* ks7010.cpp in Sources */, - B3BCA88827C099700012118D /* mmc3.cpp in Sources */, - B3BCA88927C099700012118D /* rt-01.cpp in Sources */, - B3BCA88A27C099700012118D /* vrc7p.cpp in Sources */, - B3BCA88B27C099700012118D /* conddebug.cpp in Sources */, - B3BCA88C27C099700012118D /* wave.cpp in Sources */, - B3BCA88D27C099700012118D /* 206.cpp in Sources */, - B3BCA88E27C099700012118D /* 222.cpp in Sources */, - B3BCA88F27C099700012118D /* 232.cpp in Sources */, - B3BCA89027C099700012118D /* onebus.cpp in Sources */, - B3BCA89127C099700012118D /* inlnsf.cpp in Sources */, - B3BCA89227C099700012118D /* mouse.cpp in Sources */, - B3BCA89327C099700012118D /* ioapi.cpp in Sources */, - B3BCA89427C099700012118D /* 15.cpp in Sources */, - B3BCA89527C099700012118D /* lh32.cpp in Sources */, - B3BCA89627C099700012118D /* toprider.cpp in Sources */, - B3BCA89727C099700012118D /* gs-2013.cpp in Sources */, - B3BCA89827C099700012118D /* 116.cpp in Sources */, - B3BCA89927C099700012118D /* 80.cpp in Sources */, - B3BCA89A27C099700012118D /* ftrainer.cpp in Sources */, - B3BCA89B27C099700012118D /* 71.cpp in Sources */, - B3BCA89C27C099700012118D /* kof97.cpp in Sources */, - B3BCA89D27C099700012118D /* vsuni.cpp in Sources */, - B3BCA89E27C099700012118D /* 186.cpp in Sources */, - B3BCA89F27C099700012118D /* memory.cpp in Sources */, - B3BCA8A027C099700012118D /* 121.cpp in Sources */, - B3BCA8A127C099700012118D /* 32.cpp in Sources */, - B3BCA8A227C099700012118D /* asm.cpp in Sources */, - B3BCA8A327C099700012118D /* 193.cpp in Sources */, - B3BCA8A427C099700012118D /* bmc13in1jy110.cpp in Sources */, - B3BCA8A527C099700012118D /* tengen.cpp in Sources */, - B3BCA8A627C099700012118D /* n106.cpp in Sources */, - B3BCA8A727C099700012118D /* 3d-block.cpp in Sources */, - B3BCA8A827C099700012118D /* bmc42in1r.cpp in Sources */, - B3BCA8A927C099700012118D /* 8237.cpp in Sources */, - B3BCA8AA27C099700012118D /* debug.cpp in Sources */, - B3BCA8AB27C099700012118D /* xstring.cpp in Sources */, - B3BCA8AC27C099700012118D /* hq2x.cpp in Sources */, - B3BCA8AD27C099700012118D /* 199.cpp in Sources */, - B3BCA8AE27C099700012118D /* 252.cpp in Sources */, - B3BCA8AF27C099700012118D /* vrc1.cpp in Sources */, - B3BCA8B027C099700012118D /* vrc7.cpp in Sources */, - B3BCA8B127C099700012118D /* fkb.cpp in Sources */, - B3BCA8B227C099700012118D /* dream.cpp in Sources */, - B3BCA8B327C099700012118D /* config.cpp in Sources */, - B3BCA8B427C099700012118D /* ks7017.cpp in Sources */, - B3BCA8B527C099700012118D /* ks7012.cpp in Sources */, - B3BCA8B627C099700012118D /* backward.cpp in Sources */, - B3BCA8B727C099700012118D /* fds.cpp in Sources */, - B3BCA8B827C099700012118D /* gs-2004.cpp in Sources */, - B3BCA8B927C099700012118D /* unzip.cpp in Sources */, - B3BCA8BA27C099700012118D /* et-4320.cpp in Sources */, - B3BCA8BB27C099700012118D /* 411120-c.cpp in Sources */, - B3BCA8BC27C099700012118D /* 40.cpp in Sources */, - B3BCA8BD27C099700012118D /* datalatch.cpp in Sources */, - B3BCA8BE27C099700012118D /* 177.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3BCA8CE27C09C230012118D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -5208,275 +4278,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3BCA9BE27C09C2D0012118D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3AAF5FC27C0A94B001CAE1F /* 193.cpp in Sources */, - B3AAF61C27C0A94B001CAE1F /* inlnsf.cpp in Sources */, - B391F30527C172B700730B53 /* vidblit.cpp in Sources */, - B3AAF5D127C0A94B001CAE1F /* 103.cpp in Sources */, - B3AAF5EB27C0A94B001CAE1F /* 28.cpp in Sources */, - B3AAF62227C0A94B001CAE1F /* 158B.cpp in Sources */, - B3AAF65427C0A94B001CAE1F /* 33.cpp in Sources */, - B3AAF68A27C0AA51001CAE1F /* nes_ntsc.c in Sources */, - B3AAF5C427C0A94B001CAE1F /* 8157.cpp in Sources */, - B391F2F827C1715000730B53 /* toprider.cpp in Sources */, - B3AAF5D527C0A94B001CAE1F /* 62.cpp in Sources */, - B30C096427C0AB6F009F25D0 /* conddebug.cpp in Sources */, - B3AAF68D27C0AA51001CAE1F /* scale2x.cpp in Sources */, - B3AAF64527C0A94B001CAE1F /* lh53.cpp in Sources */, - B3AAF5F527C0A94B001CAE1F /* vrc2and4.cpp in Sources */, - B391F2FD27C1715000730B53 /* lcdcompzapper.cpp in Sources */, - B3AAF65D27C0A94B001CAE1F /* et-4320.cpp in Sources */, - B3AAF60F27C0A94B001CAE1F /* ac-08.cpp in Sources */, - B3AAF5C927C0A94B001CAE1F /* pec-586.cpp in Sources */, - B391F2F527C1715000730B53 /* virtualboy.cpp in Sources */, - B3AAF62627C0A94B001CAE1F /* 176.cpp in Sources */, - B391F2F427C1715000730B53 /* cursor.cpp in Sources */, - B3AAF5E127C0A94B001CAE1F /* 225.cpp in Sources */, - B3AAF5F427C0A94B001CAE1F /* 51.cpp in Sources */, - B30C098527C0ABC4009F25D0 /* md5.cpp in Sources */, - B391F2F927C1715000730B53 /* powerpad.cpp in Sources */, - B3AAF5CD27C0A94B001CAE1F /* 235.cpp in Sources */, - B30C095927C0AB6F009F25D0 /* wave.cpp in Sources */, - B3AAF60727C0A94B001CAE1F /* sc-127.cpp in Sources */, - B30C096C27C0AB6F009F25D0 /* fceu.cpp in Sources */, - B3AAF5E327C0A94B001CAE1F /* ks7057.cpp in Sources */, - B3AAF5D027C0A94B001CAE1F /* 09-034a.cpp in Sources */, - B3AAF63727C0A94B001CAE1F /* 79.cpp in Sources */, - B3AAF60D27C0A94B001CAE1F /* 46.cpp in Sources */, - B3AAF5C127C0A94B001CAE1F /* 112.cpp in Sources */, - B3AAF60827C0A94B001CAE1F /* n106.cpp in Sources */, - B3AAF60627C0A94B001CAE1F /* sb-2000.cpp in Sources */, - B3AAF5D627C0A94B001CAE1F /* 36.cpp in Sources */, - B391F2FE27C1715000730B53 /* fkb.cpp in Sources */, - B3AAF5FA27C0A94B001CAE1F /* 32.cpp in Sources */, - B3AAF5E227C0A94B001CAE1F /* 164.cpp in Sources */, - B30C097E27C0ABC4009F25D0 /* crc32.cpp in Sources */, - B30C098227C0ABC4009F25D0 /* backward.cpp in Sources */, - B30C095E27C0AB6F009F25D0 /* input.cpp in Sources */, - B3AAF65B27C0A94B001CAE1F /* 65.cpp in Sources */, - B3AAF5F627C0A94B001CAE1F /* 228.cpp in Sources */, - B30C096E27C0AB6F009F25D0 /* video.cpp in Sources */, - B30C098627C0ABC4009F25D0 /* guid.cpp in Sources */, - B3AAF64C27C0A94B001CAE1F /* 411120-c.cpp in Sources */, - B3AAF68C27C0AA51001CAE1F /* scalebit.cpp in Sources */, - B3AAF64127C0A94B001CAE1F /* 41.cpp in Sources */, - B3AAF66127C0A94C001CAE1F /* 50.cpp in Sources */, - B3AAF63027C0A94B001CAE1F /* 175.cpp in Sources */, - B3AAF66327C0A94C001CAE1F /* 57.cpp in Sources */, - B3AAF63B27C0A94B001CAE1F /* ks7031.cpp in Sources */, - B3AAF61527C0A94B001CAE1F /* 42.cpp in Sources */, - B3AAF5FF27C0A94B001CAE1F /* hp898f.cpp in Sources */, - B3AAF62827C0A94B001CAE1F /* ks7017.cpp in Sources */, - B3AAF65627C0A94B001CAE1F /* tengen.cpp in Sources */, - B3AAF61727C0A94B001CAE1F /* 108.cpp in Sources */, - B3AAF61027C0A94B001CAE1F /* bmc70in1.cpp in Sources */, - B30C098327C0ABC4009F25D0 /* unzip.cpp in Sources */, - B3AAF61A27C0A94B001CAE1F /* 183.cpp in Sources */, - B3AAF5C527C0A94B001CAE1F /* addrlatch.cpp in Sources */, - B3AAF63F27C0A94B001CAE1F /* n625092.cpp in Sources */, - B3AAF62127C0A94B001CAE1F /* tf-1201.cpp in Sources */, - B3AAF65A27C0A94B001CAE1F /* 252.cpp in Sources */, - B3AAF5EE27C0A94B001CAE1F /* ks7032.cpp in Sources */, - B3AAF66527C0A94C001CAE1F /* h2288.cpp in Sources */, - B30C095B27C0AB6F009F25D0 /* state.cpp in Sources */, - B30C096927C0AB6F009F25D0 /* emufile.cpp in Sources */, - B3AAF68827C0AA51001CAE1F /* scale3x.cpp in Sources */, - B3AAF63927C0A94B001CAE1F /* 8in1.cpp in Sources */, - B3AAF5DA27C0A94B001CAE1F /* __dummy_mapper.cpp in Sources */, - B3AAF65F27C0A94C001CAE1F /* datalatch.cpp in Sources */, - B3AAF60327C0A94B001CAE1F /* a9746.cpp in Sources */, - B3AAF5E427C0A94B001CAE1F /* emu2413.c in Sources */, - B3AAF5D427C0A94B001CAE1F /* 170.cpp in Sources */, - B3AAF62C27C0A94B001CAE1F /* ax5705.cpp in Sources */, - B391F2F327C1715000730B53 /* arkanoid.cpp in Sources */, - B30C096F27C0AB6F009F25D0 /* cart.cpp in Sources */, - B3AAF65827C0A94B001CAE1F /* transformer.cpp in Sources */, - B3AAF64927C0A94B001CAE1F /* yoko.cpp in Sources */, - B3AAF63127C0A94B001CAE1F /* bmc13in1jy110.cpp in Sources */, - B3AAF64A27C0A94B001CAE1F /* mmc1.cpp in Sources */, - B3AAF5BF27C0A94B001CAE1F /* 15.cpp in Sources */, - B3AAF61427C0A94B001CAE1F /* 120.cpp in Sources */, - B3AAF61B27C0A94B001CAE1F /* hp10xx_hp20xx.cpp in Sources */, - B3AAF61F27C0A94B001CAE1F /* onebus.cpp in Sources */, - B3AAF62F27C0A94B001CAE1F /* super24.cpp in Sources */, - B3AAF65E27C0A94C001CAE1F /* 117.cpp in Sources */, - B3AAF62927C0A94B001CAE1F /* 01-222.cpp in Sources */, - B30C093927C0AB5A009F25D0 /* asm.cpp in Sources */, - B3AAF60C27C0A94B001CAE1F /* fns.cpp in Sources */, - B3AAF5E827C0A94B001CAE1F /* ks7012.cpp in Sources */, - B3AAF61927C0A94B001CAE1F /* 67.cpp in Sources */, - B3AAF5DE27C0A94B001CAE1F /* sheroes.cpp in Sources */, - B3AAF64827C0A94B001CAE1F /* 40.cpp in Sources */, - B3AAF68627C0AA51001CAE1F /* hq3x.cpp in Sources */, - B30C098727C0ABC4009F25D0 /* general.cpp in Sources */, - B30C095C27C0AB6F009F25D0 /* ppu.cpp in Sources */, - B3AAF63A27C0A94B001CAE1F /* 34.cpp in Sources */, - B3AAF68327C0AA51001CAE1F /* os_utils.cpp in Sources */, - B3AAF60227C0A94B001CAE1F /* 234.cpp in Sources */, - B30C098127C0ABC4009F25D0 /* ioapi.cpp in Sources */, - B391F30327C1715000730B53 /* quiz.cpp in Sources */, - B3AAF61E27C0A94B001CAE1F /* mmc2and4.cpp in Sources */, - B3AAF63827C0A94B001CAE1F /* bb.cpp in Sources */, - B3AAF65027C0A94B001CAE1F /* vrc7p.cpp in Sources */, - B3AAF68B27C0AA51001CAE1F /* args.cpp in Sources */, - B3AAF5DB27C0A94B001CAE1F /* 77.cpp in Sources */, - B3AAF64227C0A94B001CAE1F /* malee.cpp in Sources */, - B3AAF68E27C0AA51001CAE1F /* config.cpp in Sources */, - B3AAF5D327C0A94B001CAE1F /* 208.cpp in Sources */, - B391F30027C1715000730B53 /* mahjong.cpp in Sources */, - B391F2DD27C1710400730B53 /* hypershot.cpp in Sources */, - B30C095727C0AB6F009F25D0 /* movie.cpp in Sources */, - B3AAF5DC27C0A94B001CAE1F /* 186.cpp in Sources */, - B3AAF64027C0A94B001CAE1F /* 246.cpp in Sources */, - B3AAF60927C0A94B001CAE1F /* 187.cpp in Sources */, - B3AAF5CE27C0A94B001CAE1F /* famicombox.cpp in Sources */, - B391F30227C1715000730B53 /* suborkb.cpp in Sources */, - B3AAF5E527C0A94B001CAE1F /* 99.cpp in Sources */, - B3AAF60A27C0A94B001CAE1F /* sachen.cpp in Sources */, - B3AAF5C827C0A94B001CAE1F /* sl1632.cpp in Sources */, - B3AAF5C227C0A94B001CAE1F /* 88.cpp in Sources */, - B3AAF5E927C0A94B001CAE1F /* lh32.cpp in Sources */, - B3AAF63327C0A94B001CAE1F /* bmc42in1r.cpp in Sources */, - B3AAF5EF27C0A94B001CAE1F /* vrc1.cpp in Sources */, - B30C097F27C0ABC4009F25D0 /* memory.cpp in Sources */, - B3AAF5C627C0A94B001CAE1F /* bs-5.cpp in Sources */, - B3AAF5D227C0A94B001CAE1F /* 603-5052.cpp in Sources */, - B3AAF68527C0AA51001CAE1F /* hq2x.cpp in Sources */, - B30C097D27C0ABC4009F25D0 /* endian.cpp in Sources */, - B3AAF62D27C0A94B001CAE1F /* 43.cpp in Sources */, - B3AAF5CC27C0A94B001CAE1F /* sa-9602b.cpp in Sources */, - B3AAF5D727C0A94B001CAE1F /* 68.cpp in Sources */, - B3AAF5F327C0A94B001CAE1F /* 116.cpp in Sources */, - B3AAF63227C0A94B001CAE1F /* 12in1.cpp in Sources */, - B3AAF64B27C0A94B001CAE1F /* 121.cpp in Sources */, - B3AAF66627C0A94C001CAE1F /* mmc3.cpp in Sources */, - B3AAF68727C0AA51001CAE1F /* configSys.cpp in Sources */, - B3AAF64F27C0A94B001CAE1F /* bandai.cpp in Sources */, - B3AAF5CB27C0A94B001CAE1F /* ghostbusters63in1.cpp in Sources */, - B30C095D27C0AB6F009F25D0 /* unif.cpp in Sources */, - B30C098427C0ABC4009F25D0 /* xstring.cpp in Sources */, - B3AAF60027C0A94B001CAE1F /* bs4xxxr.cpp in Sources */, - B3AAF5F127C0A94B001CAE1F /* 189.cpp in Sources */, - B3AAF65327C0A94B001CAE1F /* 90.cpp in Sources */, - B30C096027C0AB6F009F25D0 /* file.cpp in Sources */, - B3AAF5F227C0A94B001CAE1F /* ks7030.cpp in Sources */, - B3AAF62527C0A94B001CAE1F /* 190.cpp in Sources */, - B3AAF65C27C0A94B001CAE1F /* mihunche.cpp in Sources */, - B3AAF63427C0A94B001CAE1F /* vrc6.cpp in Sources */, - B30C096A27C0AB6F009F25D0 /* filter.cpp in Sources */, - B391F30127C1715000730B53 /* snesmouse.cpp in Sources */, - B3AAF5FD27C0A94B001CAE1F /* 8237.cpp in Sources */, - B391F2FC27C1715000730B53 /* bworld.cpp in Sources */, - B3AAF63527C0A94B001CAE1F /* novel.cpp in Sources */, - B30C095A27C0AB6F009F25D0 /* ines.cpp in Sources */, - B3AAF62B27C0A94B001CAE1F /* 69.cpp in Sources */, - B3AAF62327C0A94B001CAE1F /* 253.cpp in Sources */, - B3AAF5F827C0A94B001CAE1F /* 178.cpp in Sources */, - B3AAF66027C0A94C001CAE1F /* 18.cpp in Sources */, - B3AAF5CF27C0A94B001CAE1F /* gs-2004.cpp in Sources */, - B3AAF5D927C0A94B001CAE1F /* 106.cpp in Sources */, - B30C096527C0AB6F009F25D0 /* x6502.cpp in Sources */, - B3AAF65527C0A94B001CAE1F /* F-15.cpp in Sources */, - B3AAF64427C0A94B001CAE1F /* t-227-1.cpp in Sources */, - B3AAF5F027C0A94B001CAE1F /* gs-2013.cpp in Sources */, - B3AAF61327C0A94B001CAE1F /* 206.cpp in Sources */, - B30C096B27C0AB6F009F25D0 /* vsuni.cpp in Sources */, - B3AAF62427C0A94B001CAE1F /* ks7010.cpp in Sources */, - B3AAF64327C0A94B001CAE1F /* subor.cpp in Sources */, - B30C096127C0AB6F009F25D0 /* oldmovie.cpp in Sources */, - B30C097027C0AB6F009F25D0 /* config.cpp in Sources */, - B3AAF5D827C0A94B001CAE1F /* dance2000.cpp in Sources */, - B3AAF5EC27C0A94B001CAE1F /* ffe.cpp in Sources */, - B30C097127C0AB6F009F25D0 /* netplay.cpp in Sources */, - B391F2FA27C1715000730B53 /* pec586kb.cpp in Sources */, - B3AAF64727C0A94B001CAE1F /* vrc7.cpp in Sources */, - B391F2F127C1715000730B53 /* fns.cpp in Sources */, - B30C096227C0AB6F009F25D0 /* nsf.cpp in Sources */, - B30C098027C0ABC4009F25D0 /* ConvertUTF.c in Sources */, - B3AAF5DF27C0A94B001CAE1F /* t-262.cpp in Sources */, - B3AAF62E27C0A94B001CAE1F /* cheapocabra.cpp in Sources */, - B30C096D27C0AB6F009F25D0 /* palette.cpp in Sources */, - B30C096627C0AB6F009F25D0 /* sound.cpp in Sources */, - B3AAF5F927C0A94B001CAE1F /* vrc3.cpp in Sources */, - B391F2F627C1715000730B53 /* oekakids.cpp in Sources */, - B391F2F727C1715000730B53 /* zapper.cpp in Sources */, - B3AAF5CA27C0A94B001CAE1F /* supervision.cpp in Sources */, - B3AAF62727C0A94B001CAE1F /* ks7016.cpp in Sources */, - B3AAF61127C0A94B001CAE1F /* ks7037.cpp in Sources */, - B3AAF5DD27C0A94B001CAE1F /* 232.cpp in Sources */, - B3AAF64D27C0A94B001CAE1F /* fk23c.cpp in Sources */, - B391F2FF27C1715000730B53 /* mouse.cpp in Sources */, - B3AAF5C027C0A94B001CAE1F /* 80.cpp in Sources */, - B3AAF64E27C0A94B001CAE1F /* 244.cpp in Sources */, - B3AAF63E27C0A94B001CAE1F /* 3d-block.cpp in Sources */, - B3AAF5FE27C0A94B001CAE1F /* BMW8544.cpp in Sources */, - B3AAF60527C0A94B001CAE1F /* dream.cpp in Sources */, - B3AAF64627C0A94B001CAE1F /* bmc64in1nr.cpp in Sources */, - B3AAF61627C0A94B001CAE1F /* 222.cpp in Sources */, - B391F2FB27C1715000730B53 /* shadow.cpp in Sources */, - B3AAF66727C0A94C001CAE1F /* unrom512.cpp in Sources */, - B3AAF5E727C0A94B001CAE1F /* 230.cpp in Sources */, - B3AAF61D27C0A94B001CAE1F /* le05.cpp in Sources */, - B3AAF63627C0A94B001CAE1F /* 168.cpp in Sources */, - B3AAF63C27C0A94B001CAE1F /* rt-01.cpp in Sources */, - B3AAF66227C0A94C001CAE1F /* 830118C.cpp in Sources */, - B30C095F27C0AB6F009F25D0 /* debug.cpp in Sources */, - B3AAF5C327C0A94B001CAE1F /* 177.cpp in Sources */, - B3AAF5E627C0A94B001CAE1F /* et-100.cpp in Sources */, - B3AAF65127C0A94B001CAE1F /* 96.cpp in Sources */, - B3AAF5ED27C0A94B001CAE1F /* 72.cpp in Sources */, - B3AAF5E027C0A94B001CAE1F /* 71.cpp in Sources */, - B30C096327C0AB6F009F25D0 /* fds.cpp in Sources */, - B3AAF5F727C0A94B001CAE1F /* 199.cpp in Sources */, - B3AAF60127C0A94B001CAE1F /* 156.cpp in Sources */, - B3AAF62A27C0A94B001CAE1F /* karaoke.cpp in Sources */, - B3AAF5EA27C0A94B001CAE1F /* bonza.cpp in Sources */, - B3AAF5C727C0A94B001CAE1F /* cityfighter.cpp in Sources */, - B3AAF65727C0A94B001CAE1F /* 91.cpp in Sources */, - B3AAF65927C0A94B001CAE1F /* kof97.cpp in Sources */, - B3AAF60E27C0A94B001CAE1F /* 82.cpp in Sources */, - B3AAF62027C0A94B001CAE1F /* ks7013.cpp in Sources */, - B3AAF61827C0A94B001CAE1F /* 80013-B.cpp in Sources */, - B391F2F227C1715000730B53 /* ftrainer.cpp in Sources */, - B3AAF60B27C0A94B001CAE1F /* vrc5.cpp in Sources */, - B3AAF66427C0A94C001CAE1F /* 151.cpp in Sources */, - B30C095827C0AB6F009F25D0 /* cheat.cpp in Sources */, - B3AAF60427C0A94B001CAE1F /* eh8813a.cpp in Sources */, - B30C096727C0AB6F009F25D0 /* drawing.cpp in Sources */, - B3AAF63D27C0A94B001CAE1F /* coolboy.cpp in Sources */, - B3AAF68427C0AA51001CAE1F /* cheat.cpp in Sources */, - B3AAF5FB27C0A94B001CAE1F /* edu2000.cpp in Sources */, - B3AAF61227C0A94B001CAE1F /* 185.cpp in Sources */, - B3AAF65227C0A94B001CAE1F /* mmc5.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ B3341F8027C1B2CF00E001C6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3341F4F27C1B18C00E001C6 /* fceux-netplay-server-iOS */; + target = B3341F4F27C1B18C00E001C6 /* fceux-netplay-server */; targetProxy = B3341F7F27C1B2CF00E001C6 /* PBXContainerItemProxy */; }; - B3341F8327C1B2D400E001C6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3341F7027C1B23A00E001C6 /* fceux-netplay-server-tvOS */; - targetProxy = B3341F8227C1B2D400E001C6 /* PBXContainerItemProxy */; - }; B3AAF66A27C0A95C001CAE1F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3BCA8CD27C09C230012118D /* fceux-iOS */; + target = B3BCA8CD27C09C230012118D /* fceux */; targetProxy = B3AAF66927C0A95C001CAE1F /* PBXContainerItemProxy */; }; - B3BCB54627C09C820012118D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3BCA9BD27C09C2D0012118D /* fceux-tvOS */; - targetProxy = B3BCB54527C09C820012118D /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -5530,7 +4344,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -5594,7 +4408,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -5660,7 +4474,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -5711,7 +4525,7 @@ ); INFOPLIST_FILE = PVFCEU/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -5728,8 +4542,12 @@ PRODUCT_NAME = PVFCEU; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; WARNING_CFLAGS = ( @@ -5739,63 +4557,10 @@ }; name = Archive; }; - B324C5102191A366009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SRCROOT)/PVFCEU-Prefix.pch"; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - INFOPLIST_FILE = PVFCEU/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/directx", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/win32", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/x64", - ); - OTHER_CFLAGS = ( - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.fceu"; - PRODUCT_NAME = PVFCEU; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - WARNING_CFLAGS = "-Wno-write-strings"; - }; - name = Archive; - }; B3341F5627C1B18C00E001C6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -5804,11 +4569,14 @@ CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.2; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; @@ -5816,6 +4584,7 @@ B3341F5727C1B18C00E001C6 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -5824,10 +4593,13 @@ CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.2; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; @@ -5835,6 +4607,7 @@ B3341F5827C1B18C00E001C6 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ENABLE_OBJC_WEAK = YES; @@ -5843,78 +4616,17 @@ CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.2; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Archive; }; - B3341F7A27C1B23A00E001C6 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.0; - }; - name = Debug; - }; - B3341F7B27C1B23A00E001C6 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.0; - }; - name = Release; - }; - B3341F7C27C1B23A00E001C6 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.0; - }; - name = Archive; - }; B3341F9027C1B39200E001C6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5929,6 +4641,7 @@ DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_HARDENED_RUNTIME = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; MACOSX_DEPLOYMENT_TARGET = 12.1; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -5950,6 +4663,7 @@ DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_HARDENED_RUNTIME = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; MACOSX_DEPLOYMENT_TARGET = 12.1; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -5970,6 +4684,7 @@ DEVELOPMENT_TEAM = S32Z3HMYVQ; ENABLE_HARDENED_RUNTIME = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; MACOSX_DEPLOYMENT_TARGET = 12.1; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -6005,7 +4720,7 @@ ); INFOPLIST_FILE = PVFCEU/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -6022,10 +4737,14 @@ PRODUCT_NAME = PVFCEU; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = singlefile; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; WARNING_CFLAGS = ( @@ -6064,7 +4783,7 @@ ); INFOPLIST_FILE = PVFCEU/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -6081,8 +4800,12 @@ PRODUCT_NAME = PVFCEU; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; WARNING_CFLAGS = ( @@ -6092,126 +4815,17 @@ }; name = Release; }; - B3A9F44A1DE877E4008450F5 /* Debug */ = { + B3BCA6EF27C098720012118D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SRCROOT)/PVFCEU-Prefix.pch"; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - INFOPLIST_FILE = PVFCEU/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/directx", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/win32", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/x64", - ); - OTHER_CFLAGS = ( - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.fceu"; - PRODUCT_NAME = PVFCEU; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = singlefile; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - WARNING_CFLAGS = "-Wno-write-strings"; - }; - name = Debug; - }; - B3A9F44B1DE877E4008450F5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SRCROOT)/PVFCEU-Prefix.pch"; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - INFOPLIST_FILE = PVFCEU/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/directx", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/win32", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/x64", - ); - OTHER_CFLAGS = ( - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.fceu"; - PRODUCT_NAME = PVFCEU; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - WARNING_CFLAGS = "-Wno-write-strings"; - }; - name = Release; - }; - B3BCA6EF27C098720012118D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -6220,7 +4834,7 @@ "$(inherited)", "$(SRCROOT)/**", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6238,8 +4852,10 @@ ); PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; WARNING_CFLAGS = ( "$(inherited)", "-Wno-write-strings", @@ -6250,6 +4866,7 @@ B3BCA6F027C098720012118D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -6265,7 +4882,7 @@ "$(inherited)", "$(SRCROOT)/**", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6282,7 +4899,9 @@ ); PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; WARNING_CFLAGS = ( "$(inherited)", "-Wno-write-strings", @@ -6293,6 +4912,7 @@ B3BCA6F127C098720012118D /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -6308,142 +4928,7 @@ "$(inherited)", "$(SRCROOT)/**", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/directx", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/win32", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/x64", - ); - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - WARNING_CFLAGS = ( - "$(inherited)", - "-Wno-write-strings", - ); - }; - name = Archive; - }; - B3BCA8C327C099700012118D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/directx", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/win32", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/x64", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - WARNING_CFLAGS = ( - "$(inherited)", - "-Wno-write-strings", - ); - }; - name = Debug; - }; - B3BCA8C427C099700012118D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/directx", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/win32", - "$(PROJECT_DIR)/FCEU-2.2.3/drivers/win/lua/x64", - ); - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - WARNING_CFLAGS = ( - "$(inherited)", - "-Wno-write-strings", - ); - }; - name = Release; - }; - B3BCA8C527C099700012118D /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6459,10 +4944,10 @@ "-DLSB_FIRST", ); PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; WARNING_CFLAGS = ( "$(inherited)", "-Wno-write-strings", @@ -6473,6 +4958,7 @@ B3BCA9B927C09C230012118D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -6492,7 +4978,7 @@ "\"$(SRCROOT)/fceux/src/attic\"", "\"$(SRCROOT)/fceux/src/drivers\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -6504,6 +4990,8 @@ ); PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2,6"; WARNING_CFLAGS = ( @@ -6516,6 +5004,7 @@ B3BCA9BA27C09C230012118D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -6535,7 +5024,7 @@ "\"$(SRCROOT)/fceux/src/attic\"", "\"$(SRCROOT)/fceux/src/drivers\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -6546,6 +5035,8 @@ ); PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; WARNING_CFLAGS = ( "$(inherited)", @@ -6557,6 +5048,7 @@ B3BCA9BB27C09C230012118D /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -6576,7 +5068,7 @@ "\"$(SRCROOT)/fceux/src/attic\"", "\"$(SRCROOT)/fceux/src/drivers\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_FAST_MATH = YES; OTHER_CFLAGS = ( @@ -6587,6 +5079,8 @@ ); PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; WARNING_CFLAGS = ( "$(inherited)", @@ -6595,137 +5089,6 @@ }; name = Archive; }; - B3BCAAA927C09C2D0012118D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/fceux/src\"", - "\"$(SRCROOT)/fceux/src/drivers/sdl\"", - "\"$(SRCROOT)/fceux/src/boards\"", - "\"$(SRCROOT)/fceux/src/attic\"", - "\"$(SRCROOT)/fceux/src/drivers\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - WARNING_CFLAGS = ( - "$(inherited)", - "-Wno-write-strings", - ); - }; - name = Debug; - }; - B3BCAAAA27C09C2D0012118D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/fceux/src\"", - "\"$(SRCROOT)/fceux/src/drivers/sdl\"", - "\"$(SRCROOT)/fceux/src/boards\"", - "\"$(SRCROOT)/fceux/src/attic\"", - "\"$(SRCROOT)/fceux/src/drivers\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - WARNING_CFLAGS = ( - "$(inherited)", - "-Wno-write-strings", - ); - }; - name = Release; - }; - B3BCAAAB27C09C2D0012118D /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/fceux/src\"", - "\"$(SRCROOT)/fceux/src/drivers/sdl\"", - "\"$(SRCROOT)/fceux/src/boards\"", - "\"$(SRCROOT)/fceux/src/attic\"", - "\"$(SRCROOT)/fceux/src/drivers\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DHAVE_ASPRINTF", - "-DPSS_STYLE=1", - "-DLSB_FIRST", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - WARNING_CFLAGS = ( - "$(inherited)", - "-Wno-write-strings", - ); - }; - name = Archive; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -6739,7 +5102,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3341F5927C1B18C00E001C6 /* Build configuration list for PBXNativeTarget "fceux-netplay-server-iOS" */ = { + B3341F5927C1B18C00E001C6 /* Build configuration list for PBXNativeTarget "fceux-netplay-server" */ = { isa = XCConfigurationList; buildConfigurations = ( B3341F5627C1B18C00E001C6 /* Debug */, @@ -6749,16 +5112,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3341F7927C1B23A00E001C6 /* Build configuration list for PBXNativeTarget "fceux-netplay-server-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3341F7A27C1B23A00E001C6 /* Debug */, - B3341F7B27C1B23A00E001C6 /* Release */, - B3341F7C27C1B23A00E001C6 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3341F8F27C1B39200E001C6 /* Build configuration list for PBXNativeTarget "fceux-server" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6769,7 +5122,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3A9F43B1DE877B4008450F5 /* Build configuration list for PBXNativeTarget "PVFCEU-iOS" */ = { + B3A9F43B1DE877B4008450F5 /* Build configuration list for PBXNativeTarget "PVFCEU" */ = { isa = XCConfigurationList; buildConfigurations = ( B3A9F43C1DE877B4008450F5 /* Debug */, @@ -6779,17 +5132,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3A9F4491DE877E4008450F5 /* Build configuration list for PBXNativeTarget "PVFCEU-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3A9F44A1DE877E4008450F5 /* Debug */, - B3A9F44B1DE877E4008450F5 /* Release */, - B324C5102191A366009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3BCA6EE27C098720012118D /* Build configuration list for PBXNativeTarget "fceux-2.2.3-iOS" */ = { + B3BCA6EE27C098720012118D /* Build configuration list for PBXNativeTarget "fceux-2.2.3" */ = { isa = XCConfigurationList; buildConfigurations = ( B3BCA6EF27C098720012118D /* Debug */, @@ -6799,17 +5142,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3BCA8C227C099700012118D /* Build configuration list for PBXNativeTarget "fceux-2.2.3-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3BCA8C327C099700012118D /* Debug */, - B3BCA8C427C099700012118D /* Release */, - B3BCA8C527C099700012118D /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3BCA9B827C09C230012118D /* Build configuration list for PBXNativeTarget "fceux-iOS" */ = { + B3BCA9B827C09C230012118D /* Build configuration list for PBXNativeTarget "fceux" */ = { isa = XCConfigurationList; buildConfigurations = ( B3BCA9B927C09C230012118D /* Debug */, @@ -6819,16 +5152,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3BCAAA827C09C2D0012118D /* Build configuration list for PBXNativeTarget "fceux-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3BCAAA927C09C2D0012118D /* Debug */, - B3BCAAAA27C09C2D0012118D /* Release */, - B3BCAAAB27C09C2D0012118D /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 1A3A74E01ABF11AC002274A3 /* Project object */; diff --git a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/PVFCEU.xcscheme b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/PVFCEU.xcscheme index e156746531..0e07defb71 100644 --- a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/PVFCEU.xcscheme +++ b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/PVFCEU.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3A9F4351DE877B4008450F5" BuildableName = "PVFCEU.framework" - BlueprintName = "PVFCEU-iOS" + BlueprintName = "PVFCEU" ReferencedContainer = "container:PVFCEU.xcodeproj"> @@ -59,7 +59,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3A9F4351DE877B4008450F5" BuildableName = "PVFCEU.framework" - BlueprintName = "PVFCEU-iOS" + BlueprintName = "PVFCEU" ReferencedContainer = "container:PVFCEU.xcodeproj"> @@ -75,7 +75,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3A9F4351DE877B4008450F5" BuildableName = "PVFCEU.framework" - BlueprintName = "PVFCEU-iOS" + BlueprintName = "PVFCEU" ReferencedContainer = "container:PVFCEU.xcodeproj"> diff --git a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-2.2.3-iOS.xcscheme b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-2.2.3-iOS.xcscheme deleted file mode 100644 index f45f5f847d..0000000000 --- a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-2.2.3-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-2.2.3.xcscheme b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-2.2.3.xcscheme new file mode 100644 index 0000000000..f9e38c3806 --- /dev/null +++ b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-2.2.3.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-iOS.xcscheme b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-iOS.xcscheme deleted file mode 100644 index f6e830cb62..0000000000 --- a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-netplay-server-tvOS.xcscheme b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-netplay-server-tvOS.xcscheme deleted file mode 100644 index 24ee534f9d..0000000000 --- a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-netplay-server-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-netplay-server.xcscheme b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-netplay-server.xcscheme index cedd4467fc..20eeaaf667 100644 --- a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-netplay-server.xcscheme +++ b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux-netplay-server.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux.xcscheme b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux.xcscheme new file mode 100644 index 0000000000..26dd71e304 --- /dev/null +++ b/Cores/FCEU/PVFCEU.xcodeproj/xcshareddata/xcschemes/fceux.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/FCEU/PVFCEUEmulatorCore+Controls.mm b/Cores/FCEU/PVFCEUEmulatorCore+Controls.mm index 75ae4ffb25..c46e629cb7 100644 --- a/Cores/FCEU/PVFCEUEmulatorCore+Controls.mm +++ b/Cores/FCEU/PVFCEUEmulatorCore+Controls.mm @@ -18,6 +18,7 @@ #include "fceux/src/state.h" #include "fceux/src/emufile.h" +#define DEADZONE 0.1f static const int NESMap[] = {JOY_UP, JOY_DOWN, JOY_LEFT, JOY_RIGHT, JOY_A, JOY_B, JOY_START, JOY_SELECT}; @implementation PVFCEUEmulatorCore (Controls) @@ -56,10 +57,10 @@ - (void)updateControllers { GCExtendedGamepad *gamepad = [controller extendedGamepad]; GCControllerDirectionPad *dpad = [gamepad dpad]; - (dpad.up.isPressed || gamepad.leftThumbstick.up.isPressed) ? pad[playerIndex][0] |= JOY_UP << playerShift : pad[playerIndex][0] &= ~JOY_UP << playerShift; - (dpad.down.isPressed || gamepad.leftThumbstick.down.isPressed) ? pad[playerIndex][0] |= JOY_DOWN << playerShift : pad[playerIndex][0] &= ~JOY_DOWN << playerShift; - (dpad.left.isPressed || gamepad.leftThumbstick.left.isPressed) ? pad[playerIndex][0] |= JOY_LEFT << playerShift : pad[playerIndex][0] &= ~JOY_LEFT << playerShift; - (dpad.right.isPressed || gamepad.leftThumbstick.right.isPressed) ? pad[playerIndex][0] |= JOY_RIGHT << playerShift : pad[playerIndex][0] &= ~JOY_RIGHT << playerShift; + (dpad.up.isPressed || gamepad.leftThumbstick.up.value > DEADZONE) ? pad[playerIndex][0] |= JOY_UP << playerShift : pad[playerIndex][0] &= ~JOY_UP << playerShift; + (dpad.down.isPressed || gamepad.leftThumbstick.down.value > DEADZONE) ? pad[playerIndex][0] |= JOY_DOWN << playerShift : pad[playerIndex][0] &= ~JOY_DOWN << playerShift; + (dpad.left.isPressed || gamepad.leftThumbstick.left.value > DEADZONE) ? pad[playerIndex][0] |= JOY_LEFT << playerShift : pad[playerIndex][0] &= ~JOY_LEFT << playerShift; + (dpad.right.isPressed || gamepad.leftThumbstick.right.value > DEADZONE) ? pad[playerIndex][0] |= JOY_RIGHT << playerShift : pad[playerIndex][0] &= ~JOY_RIGHT << playerShift; (gamepad.buttonA.isPressed || gamepad.buttonY.isPressed) ? pad[playerIndex][0] |= JOY_B << playerShift : pad[playerIndex][0] &= ~JOY_B << playerShift; (gamepad.buttonX.isPressed || gamepad.buttonB.isPressed) ? pad[playerIndex][0] |= JOY_A << playerShift : pad[playerIndex][0] &= ~JOY_A << playerShift; diff --git a/Cores/FCEU/PVFCEUEmulatorCore.mm b/Cores/FCEU/PVFCEUEmulatorCore.mm index 636f272b68..d9b01928e5 100644 --- a/Cores/FCEU/PVFCEUEmulatorCore.mm +++ b/Cores/FCEU/PVFCEUEmulatorCore.mm @@ -27,7 +27,7 @@ #import "PVFCEUEmulatorCore.h" #import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import diff --git a/Cores/FinalBurnNeo/BuildFlags.xcconfig b/Cores/FinalBurnNeo/BuildFlags.xcconfig new file mode 100644 index 0000000000..97e9dab60e --- /dev/null +++ b/Cores/FinalBurnNeo/BuildFlags.xcconfig @@ -0,0 +1,44 @@ +// +// BuildFlags.xcconfig +// PVFBNeo +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 OBJ_C IOS USE_POSIX_MEMALIGN __RETRO_ARM__ USE_POSIX_MEMALIGN +OTHER_CFLAGS = $(inherited) -frtti -ObjC +// -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + + +GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = $(inherited) NDEBUG=1 + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/FinalBurnNeo/Core.plist b/Cores/FinalBurnNeo/Core.plist index 51f150cda1..a16cc0a8c0 100644 --- a/Cores/FinalBurnNeo/Core.plist +++ b/Cores/FinalBurnNeo/Core.plist @@ -9,6 +9,11 @@ PVSupportedSystems com.provenance.neogeo + com.provenance.msx + com.provenance.msx2 + com.provenance.arcade + com.provenance.nes + com.provenance.colecovision PVProjectName Final Burn Neo diff --git a/Cores/FinalBurnNeo/FBNeo b/Cores/FinalBurnNeo/FBNeo index 71101fbd16..0225275d7e 160000 --- a/Cores/FinalBurnNeo/FBNeo +++ b/Cores/FinalBurnNeo/FBNeo @@ -1 +1 @@ -Subproject commit 71101fbd16455207d2c40cdc91ce8b91853ec4cf +Subproject commit 0225275d7ee0daabdb857150ed3eabdb4bbe6d35 diff --git a/Cores/FinalBurnNeo/PVFBNeo-Prefix.pch b/Cores/FinalBurnNeo/PVFBNeo-Prefix.pch index b5ffd7806e..37fdbe6793 100644 --- a/Cores/FinalBurnNeo/PVFBNeo-Prefix.pch +++ b/Cores/FinalBurnNeo/PVFBNeo-Prefix.pch @@ -5,6 +5,5 @@ // #ifdef __OBJC__ - #import #import #endif diff --git a/Cores/FinalBurnNeo/PVFBNeo.h b/Cores/FinalBurnNeo/PVFBNeo.h index 6aeea9bbfd..1476a4e184 100644 --- a/Cores/FinalBurnNeo/PVFBNeo.h +++ b/Cores/FinalBurnNeo/PVFBNeo.h @@ -6,7 +6,7 @@ // Copyright © 2022 Provenance-EMU. All rights reserved. // -#import +#import //! Project version number for PVFBNeo. FOUNDATION_EXPORT double PVFBNeoVersionNumber; @@ -16,4 +16,3 @@ FOUNDATION_EXPORT const unsigned char PVFBNeoVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import #import - diff --git a/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.pbxproj b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..ffdd65050d --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.pbxproj @@ -0,0 +1,9885 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B322914C2878322A00585AD8 /* d_xorworld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A32871354E008A0E2F /* d_xorworld.cpp */; }; + B322914D2878322A00585AD8 /* d_diverboy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2772871354E008A0E2F /* d_diverboy.cpp */; }; + B322914E2878322A00585AD8 /* tc0100scn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4642871354F008A0E2F /* tc0100scn.cpp */; }; + B322914F2878322A00585AD8 /* d_zodiack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52128713550008A0E2F /* d_zodiack.cpp */; }; + B32291502878322A00585AD8 /* d_lastduel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B628713550008A0E2F /* d_lastduel.cpp */; }; + B32291512878322A00585AD8 /* pgm_asic27a_type2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D46F2871354F008A0E2F /* pgm_asic27a_type2.cpp */; }; + B32291522878322A00585AD8 /* d_slapshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D43D2871354F008A0E2F /* d_slapshot.cpp */; }; + B32291532878322A00585AD8 /* d_seibuspi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2762871354E008A0E2F /* d_seibuspi.cpp */; }; + B32291542878322A00585AD8 /* d_gstream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D28F2871354E008A0E2F /* d_gstream.cpp */; }; + B32291552878322A00585AD8 /* d_senjyo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52928713550008A0E2F /* d_senjyo.cpp */; }; + B32291562878322A00585AD8 /* d_sf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4AF2871354F008A0E2F /* d_sf.cpp */; }; + B32291572878322A00585AD8 /* fd1089.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3032871354E008A0E2F /* fd1089.cpp */; }; + B32291582878322A00585AD8 /* taitof3_snd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4492871354F008A0E2F /* taitof3_snd.cpp */; }; + B32291592878322A00585AD8 /* d_kbash2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3ED2871354F008A0E2F /* d_kbash2.cpp */; }; + B322915A2878322A00585AD8 /* d_darkmist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4572871354F008A0E2F /* d_darkmist.cpp */; }; + B322915B2878322A00585AD8 /* d_jack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D628713550008A0E2F /* d_jack.cpp */; }; + B322915C2878322A00585AD8 /* d_ambush.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55428713550008A0E2F /* d_ambush.cpp */; }; + B322915D2878322A00585AD8 /* d_asuka.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D42E2871354F008A0E2F /* d_asuka.cpp */; }; + B322915E2878322A00585AD8 /* d_btime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50828713550008A0E2F /* d_btime.cpp */; }; + B322915F2878322A00585AD8 /* d_foodf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A82871354F008A0E2F /* d_foodf.cpp */; }; + B32291602878322A00585AD8 /* d_ddragon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53C28713550008A0E2F /* d_ddragon.cpp */; }; + B32291612878322A00585AD8 /* d_blktiger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A22871354F008A0E2F /* d_blktiger.cpp */; }; + B32291622878322A00585AD8 /* d_qbert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50528713550008A0E2F /* d_qbert.cpp */; }; + B32291632878322A00585AD8 /* d_epos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54A28713550008A0E2F /* d_epos.cpp */; }; + B32291642878322A00585AD8 /* d_starwars.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E728713550008A0E2F /* d_starwars.cpp */; }; + B32291652878322A00585AD8 /* d_sandscrp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B42871354E008A0E2F /* d_sandscrp.cpp */; }; + B32291662878322A00585AD8 /* d_othunder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4332871354F008A0E2F /* d_othunder.cpp */; }; + B32291672878322A00585AD8 /* d_undrfire.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4612871354F008A0E2F /* d_undrfire.cpp */; }; + B32291682878322A00585AD8 /* d_1943.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4842871354F008A0E2F /* d_1943.cpp */; }; + B32291692878322A00585AD8 /* tc0360pri.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4272871354F008A0E2F /* tc0360pri.cpp */; }; + B322916A2878322A00585AD8 /* tc0180vcu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4422871354F008A0E2F /* tc0180vcu.cpp */; }; + B322916B2878322A00585AD8 /* d_gng.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4BC28713550008A0E2F /* d_gng.cpp */; }; + B322916C2878322A00585AD8 /* yawdim_sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3AA2871354F008A0E2F /* yawdim_sound.cpp */; }; + B322916D2878322A00585AD8 /* d_flipjack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54D28713550008A0E2F /* d_flipjack.cpp */; }; + B322916E2878322A00585AD8 /* d_chaknpop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4242871354F008A0E2F /* d_chaknpop.cpp */; }; + B322916F2878322A00585AD8 /* d_cps2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4052871354F008A0E2F /* d_cps2.cpp */; }; + B32291702878322A00585AD8 /* d_battlex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54228713550008A0E2F /* d_battlex.cpp */; }; + B32291712878322A00585AD8 /* d_bbusters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4CA28713550008A0E2F /* d_bbusters.cpp */; }; + B32291722878322A00585AD8 /* d_sonson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D128713550008A0E2F /* d_sonson.cpp */; }; + B32291732878322A00585AD8 /* d_gaplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F028713550008A0E2F /* d_gaplus.cpp */; }; + B32291742878322A00585AD8 /* d_1945kiii.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2AD2871354E008A0E2F /* d_1945kiii.cpp */; }; + B32291752878322A00585AD8 /* toaplan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3DF2871354F008A0E2F /* toaplan.cpp */; }; + B32291762878322A00585AD8 /* d_esprade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2482871354E008A0E2F /* d_esprade.cpp */; }; + B32291772878322A00585AD8 /* d_metro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2982871354E008A0E2F /* d_metro.cpp */; }; + B32291782878322A00585AD8 /* d_hyperpac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2BF2871354E008A0E2F /* d_hyperpac.cpp */; }; + B32291792878322A00585AD8 /* d_dreamwld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2952871354E008A0E2F /* d_dreamwld.cpp */; }; + B322917A2878322A00585AD8 /* d_cyclemb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D43B2871354F008A0E2F /* d_cyclemb.cpp */; }; + B322917B2878322A00585AD8 /* d_dcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A02871354E008A0E2F /* d_dcon.cpp */; }; + B322917C2878322A00585AD8 /* d_tail2nose.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4DC28713550008A0E2F /* d_tail2nose.cpp */; }; + B322917D2878322A00585AD8 /* d_naughtyb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53328713550008A0E2F /* d_naughtyb.cpp */; }; + B322917E2878322A00585AD8 /* d_commando.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52428713550008A0E2F /* d_commando.cpp */; }; + B322917F2878322A00585AD8 /* d_spacefb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51328713550008A0E2F /* d_spacefb.cpp */; }; + B32291802878322A00585AD8 /* d_pkunwar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54B28713550008A0E2F /* d_pkunwar.cpp */; }; + B32291812878322A00585AD8 /* d_megasys1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4942871354F008A0E2F /* d_megasys1.cpp */; }; + B32291822878322A00585AD8 /* d_dribling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4BA28713550008A0E2F /* d_dribling.cpp */; }; + B32291832878322A00585AD8 /* d_artmagic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D29F2871354E008A0E2F /* d_artmagic.cpp */; }; + B32291842878322A00585AD8 /* d_tigeroad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51228713550008A0E2F /* d_tigeroad.cpp */; }; + B32291852878322A00585AD8 /* sms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2422871354E008A0E2F /* sms.cpp */; }; + B32291862878322A00585AD8 /* d_blackt96.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E32871354E008A0E2F /* d_blackt96.cpp */; }; + B32291872878322A00585AD8 /* d_groundfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D44C2871354F008A0E2F /* d_groundfx.cpp */; }; + B32291882878322A00585AD8 /* d_hvyunit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4EA28713550008A0E2F /* d_hvyunit.cpp */; }; + B32291892878322A00585AD8 /* smssound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2332871354E008A0E2F /* smssound.cpp */; }; + B322918A2878322A00585AD8 /* d_mosaic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C12871354E008A0E2F /* d_mosaic.cpp */; }; + B322918B2878322A00585AD8 /* d_williams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4852871354F008A0E2F /* d_williams.cpp */; }; + B322918C2878322A00585AD8 /* tnzs_prot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4652871354F008A0E2F /* tnzs_prot.cpp */; }; + B322918D2878322A00585AD8 /* d_parent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D26F2871354E008A0E2F /* d_parent.cpp */; }; + B322918E2878322A00585AD8 /* d_taitof2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4432871354F008A0E2F /* d_taitof2.cpp */; }; + B322918F2878322A00585AD8 /* d_lwings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A62871354F008A0E2F /* d_lwings.cpp */; }; + B32291902878322A00585AD8 /* d_vastar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51528713550008A0E2F /* d_vastar.cpp */; }; + B32291912878322A00585AD8 /* d_dday.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52E28713550008A0E2F /* d_dday.cpp */; }; + B32291922878322A00585AD8 /* d_cop01.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4DA28713550008A0E2F /* d_cop01.cpp */; }; + B32291932878322A00585AD8 /* d_seta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2DD2871354E008A0E2F /* d_seta.cpp */; }; + B32291942878322A00585AD8 /* d_airbustr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B02871354E008A0E2F /* d_airbustr.cpp */; }; + B32291952878322A00585AD8 /* d_xbrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2EF2871354E008A0E2F /* d_xbrd.cpp */; }; + B32291962878322A00585AD8 /* d_xain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B12871354F008A0E2F /* d_xain.cpp */; }; + B32291972878322A00585AD8 /* d_ksayakyu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4262871354F008A0E2F /* d_ksayakyu.cpp */; }; + B32291982878322A00585AD8 /* d_hangon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3052871354E008A0E2F /* d_hangon.cpp */; }; + B32291992878322A00585AD8 /* d_ladybug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54528713550008A0E2F /* d_ladybug.cpp */; }; + B322919A2878322A00585AD8 /* d_mitchell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D49B2871354F008A0E2F /* d_mitchell.cpp */; }; + B322919B2878322A00585AD8 /* d_deadang.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C528713550008A0E2F /* d_deadang.cpp */; }; + B322919C2878322A00585AD8 /* d_mcr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51828713550008A0E2F /* d_mcr.cpp */; }; + B322919D2878322A00585AD8 /* d_pturn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53928713550008A0E2F /* d_pturn.cpp */; }; + B322919E2878322A00585AD8 /* d_speedspn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2822871354E008A0E2F /* d_speedspn.cpp */; }; + B322919F2878322A00585AD8 /* d_quizo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4EC28713550008A0E2F /* d_quizo.cpp */; }; + B32291A02878322A00585AD8 /* pgm_asic25.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D46A2871354F008A0E2F /* pgm_asic25.cpp */; }; + B32291A12878322A00585AD8 /* d_stuntair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A12871354F008A0E2F /* d_stuntair.cpp */; }; + B32291A22878322A00585AD8 /* d_wwfwfest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A52871354E008A0E2F /* d_wwfwfest.cpp */; }; + B32291A32878322A00585AD8 /* d_tceptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53828713550008A0E2F /* d_tceptor.cpp */; }; + B32291A42878322A00585AD8 /* d_hyprduel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2DE2871354E008A0E2F /* d_hyprduel.cpp */; }; + B32291A52878322A00585AD8 /* d_taitol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D42D2871354F008A0E2F /* d_taitol.cpp */; }; + B32291A62878322A00585AD8 /* d_wallc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B02871354F008A0E2F /* d_wallc.cpp */; }; + B32291A72878322A00585AD8 /* d_sys16b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D30A2871354E008A0E2F /* d_sys16b.cpp */; }; + B32291A82878322A00585AD8 /* d_legionna.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C82871354E008A0E2F /* d_legionna.cpp */; }; + B32291A92878322A00585AD8 /* pc080sn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4522871354F008A0E2F /* pc080sn.cpp */; }; + B32291AA2878322A00585AD8 /* d_crbaloon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4562871354F008A0E2F /* d_crbaloon.cpp */; }; + B32291AB2878322A00585AD8 /* d_mhavoc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55628713550008A0E2F /* d_mhavoc.cpp */; }; + B32291AC2878322A00585AD8 /* d_pbaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50128713550008A0E2F /* d_pbaction.cpp */; }; + B32291AD2878322A00585AD8 /* d_segac2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3012871354E008A0E2F /* d_segac2.cpp */; }; + B32291AE2878322A00585AD8 /* d_amspdwy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A52871354F008A0E2F /* d_amspdwy.cpp */; }; + B32291AF2878322A00585AD8 /* d_dorachan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53728713550008A0E2F /* d_dorachan.cpp */; }; + B32291B02878322A00585AD8 /* d_batrider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3EF2871354F008A0E2F /* d_batrider.cpp */; }; + B32291B12878322A00585AD8 /* d_nitedrvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50E28713550008A0E2F /* d_nitedrvr.cpp */; }; + B32291B22878322A00585AD8 /* smsrender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D23B2871354E008A0E2F /* smsrender.cpp */; }; + B32291B32878322A00585AD8 /* d_rollrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4442871354F008A0E2F /* d_rollrace.cpp */; }; + B32291B42878322A00585AD8 /* d_nmg5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2CA2871354E008A0E2F /* d_nmg5.cpp */; }; + B32291B52878322A00585AD8 /* d_rpunch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F128713550008A0E2F /* d_rpunch.cpp */; }; + B32291B62878322A00585AD8 /* d_kbash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E82871354F008A0E2F /* d_kbash.cpp */; }; + B32291B72878322A00585AD8 /* d_flstory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4282871354F008A0E2F /* d_flstory.cpp */; }; + B32291B82878322A00585AD8 /* d_seicross.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F228713550008A0E2F /* d_seicross.cpp */; }; + B32291B92878322A00585AD8 /* d_itech32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A12871354E008A0E2F /* d_itech32.cpp */; }; + B32291BA2878322A00585AD8 /* d_momoko.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D48A2871354F008A0E2F /* d_momoko.cpp */; }; + B32291BB2878322A00585AD8 /* d_timelimt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54F28713550008A0E2F /* d_timelimt.cpp */; }; + B32291BC2878322A00585AD8 /* toaplan1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3EE2871354F008A0E2F /* toaplan1.cpp */; }; + B32291BD2878322A00585AD8 /* d_psychic5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54328713550008A0E2F /* d_psychic5.cpp */; }; + B32291BE2878322A00585AD8 /* d_20pacgal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2852871354E008A0E2F /* d_20pacgal.cpp */; }; + B32291BF2878322A00585AD8 /* d_galpanic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2AE2871354E008A0E2F /* d_galpanic.cpp */; }; + B32291C02878322A00585AD8 /* d_oneshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B92871354E008A0E2F /* d_oneshot.cpp */; }; + B32291C12878322A00585AD8 /* d_clshroad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D49F2871354F008A0E2F /* d_clshroad.cpp */; }; + B32291C22878322A00585AD8 /* d_go2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2932871354E008A0E2F /* d_go2000.cpp */; }; + B32291C32878322A00585AD8 /* cpsrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4042871354F008A0E2F /* cpsrd.cpp */; }; + B32291C42878322A00585AD8 /* d_pengadvb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D48D2871354F008A0E2F /* d_pengadvb.cpp */; }; + B32291C52878322A00585AD8 /* d_funkybee.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4CE28713550008A0E2F /* d_funkybee.cpp */; }; + B32291C62878322A00585AD8 /* d_ohmygod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2742871354E008A0E2F /* d_ohmygod.cpp */; }; + B32291C72878322A00585AD8 /* d_argus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D928713550008A0E2F /* d_argus.cpp */; }; + B32291C82878322A00585AD8 /* d_dkong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4802871354F008A0E2F /* d_dkong.cpp */; }; + B32291C92878322A00585AD8 /* cps_pal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4202871354F008A0E2F /* cps_pal.cpp */; }; + B32291CA2878322A00585AD8 /* d_sailormn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2592871354E008A0E2F /* d_sailormn.cpp */; }; + B32291CB2878322A00585AD8 /* d_solomon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53528713550008A0E2F /* d_solomon.cpp */; }; + B32291CC2878322A00585AD8 /* d_mirage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2972871354E008A0E2F /* d_mirage.cpp */; }; + B32291CD2878322A00585AD8 /* d_vfive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D62871354F008A0E2F /* d_vfive.cpp */; }; + B32291CE2878322A00585AD8 /* d_vulgus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51128713550008A0E2F /* d_vulgus.cpp */; }; + B32291CF2878322A00585AD8 /* d_ssv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2912871354E008A0E2F /* d_ssv.cpp */; }; + B32291D02878322A00585AD8 /* d_mole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4AB2871354F008A0E2F /* d_mole.cpp */; }; + B32291D12878322A00585AD8 /* toa_palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E12871354F008A0E2F /* toa_palette.cpp */; }; + B32291D22878322A00585AD8 /* d_copsnrob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C828713550008A0E2F /* d_copsnrob.cpp */; }; + B32291D32878322A00585AD8 /* d_kncljoe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4DE28713550008A0E2F /* d_kncljoe.cpp */; }; + B32291D42878322A00585AD8 /* d_espial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D49E2871354F008A0E2F /* d_espial.cpp */; }; + B32291D52878322A00585AD8 /* d_gunsmoke.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D028713550008A0E2F /* d_gunsmoke.cpp */; }; + B32291D62878322A00585AD8 /* d_segae.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2FE2871354E008A0E2F /* d_segae.cpp */; }; + B32291D72878322A00585AD8 /* d_prehisle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D828713550008A0E2F /* d_prehisle.cpp */; }; + B32291D82878322A00585AD8 /* d_discoboy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C42871354E008A0E2F /* d_discoboy.cpp */; }; + B32291D92878322A00585AD8 /* d_raiden.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2BB2871354E008A0E2F /* d_raiden.cpp */; }; + B32291DA2878322A00585AD8 /* d_twincobr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D92871354F008A0E2F /* d_twincobr.cpp */; }; + B32291DB2878322A00585AD8 /* d_shisen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E528713550008A0E2F /* d_shisen.cpp */; }; + B32291DC2878322A00585AD8 /* d_tunit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3B92871354F008A0E2F /* d_tunit.cpp */; }; + B32291DD2878322A00585AD8 /* d_ghox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3DB2871354F008A0E2F /* d_ghox.cpp */; }; + B32291DE2878322A00585AD8 /* kabuki.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4132871354F008A0E2F /* kabuki.cpp */; }; + B32291DF2878322A00585AD8 /* d_crshrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D28D2871354E008A0E2F /* d_crshrace.cpp */; }; + B32291E02878322A00585AD8 /* smspio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D23C2871354E008A0E2F /* smspio.cpp */; }; + B32291E12878322A00585AD8 /* d_docastle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53228713550008A0E2F /* d_docastle.cpp */; }; + B32291E22878322A00585AD8 /* d_atetris.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4BE28713550008A0E2F /* d_atetris.cpp */; }; + B32291E32878322A00585AD8 /* d_bestleag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2CE2871354E008A0E2F /* d_bestleag.cpp */; }; + B32291E42878322A00585AD8 /* d_tecmosys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D42871354E008A0E2F /* d_tecmosys.cpp */; }; + B32291E52878322A00585AD8 /* cps_run.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D41A2871354F008A0E2F /* cps_run.cpp */; }; + B32291E62878322A00585AD8 /* d_invaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51028713550008A0E2F /* d_invaders.cpp */; }; + B32291E72878322A00585AD8 /* d_cultures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2812871354E008A0E2F /* d_cultures.cpp */; }; + B32291E82878322A00585AD8 /* d_glass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E22871354E008A0E2F /* d_glass.cpp */; }; + B32291E92878322A00585AD8 /* d_korokoro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D24B2871354E008A0E2F /* d_korokoro.cpp */; }; + B32291EA2878322A00585AD8 /* williams_cvsd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3BD2871354F008A0E2F /* williams_cvsd.cpp */; }; + B32291EB2878322A00585AD8 /* d_madmotor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4EE28713550008A0E2F /* d_madmotor.cpp */; }; + B32291EC2878322A00585AD8 /* d_bzone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B428713550008A0E2F /* d_bzone.cpp */; }; + B32291ED2878322A00585AD8 /* d_vicdual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4FD28713550008A0E2F /* d_vicdual.cpp */; }; + B32291EE2878322A00585AD8 /* d_usgames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4FF28713550008A0E2F /* d_usgames.cpp */; }; + B32291EF2878322A00585AD8 /* d_namconb1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2832871354E008A0E2F /* d_namconb1.cpp */; }; + B32291F02878322A00585AD8 /* d_cabal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4BB28713550008A0E2F /* d_cabal.cpp */; }; + B32291F12878322A00585AD8 /* d_donpachi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2512871354E008A0E2F /* d_donpachi.cpp */; }; + B32291F22878322A00585AD8 /* d_galpani3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2992871354E008A0E2F /* d_galpani3.cpp */; }; + B32291F32878322A00585AD8 /* d_mastboyo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B228713550008A0E2F /* d_mastboyo.cpp */; }; + B32291F42878322A00585AD8 /* pgm_asic27a_type1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D46E2871354F008A0E2F /* pgm_asic27a_type1.cpp */; }; + B32291F52878322A00585AD8 /* d_dodonpachi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D24C2871354E008A0E2F /* d_dodonpachi.cpp */; }; + B32291F62878322A00585AD8 /* d_bublbobl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D45A2871354F008A0E2F /* d_bublbobl.cpp */; }; + B32291F72878322A00585AD8 /* d_silkroad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D29A2871354E008A0E2F /* d_silkroad.cpp */; }; + B32291F82878322A00585AD8 /* d_cybertnk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4792871354F008A0E2F /* d_cybertnk.cpp */; }; + B32291F92878322A00585AD8 /* d_namcos1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51C28713550008A0E2F /* d_namcos1.cpp */; }; + B32291FA2878322A00585AD8 /* ide.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3A72871354F008A0E2F /* ide.cpp */; }; + B32291FB2878322A00585AD8 /* d_welltris.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2EC2871354E008A0E2F /* d_welltris.cpp */; }; + B32291FC2878322A00585AD8 /* d_zaxxon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3112871354E008A0E2F /* d_zaxxon.cpp */; }; + B32291FD2878322A00585AD8 /* d_seta2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C52871354E008A0E2F /* d_seta2.cpp */; }; + B32291FE2878322A00585AD8 /* d_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D27A2871354E008A0E2F /* d_pass.cpp */; }; + B32291FF2878322A00585AD8 /* d_asteroids.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4DD28713550008A0E2F /* d_asteroids.cpp */; }; + B32292002878322A00585AD8 /* d_mcr3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52F28713550008A0E2F /* d_mcr3.cpp */; }; + B32292012878322A00585AD8 /* d_mcatadv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B62871354E008A0E2F /* d_mcatadv.cpp */; }; + B32292022878322A00585AD8 /* d_lkage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D44A2871354F008A0E2F /* d_lkage.cpp */; }; + B32292032878322A00585AD8 /* d_alinvade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D47E2871354F008A0E2F /* d_alinvade.cpp */; }; + B32292042878322A00585AD8 /* d_dogyuun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E52871354F008A0E2F /* d_dogyuun.cpp */; }; + B32292052878322A00585AD8 /* d_bionicc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D47C2871354F008A0E2F /* d_bionicc.cpp */; }; + B32292062878322A00585AD8 /* d_markham.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4FB28713550008A0E2F /* d_markham.cpp */; }; + B32292072878322A00585AD8 /* d_metmqstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2472871354E008A0E2F /* d_metmqstr.cpp */; }; + B32292082878322B00585AD8 /* d_sys1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D30E2871354E008A0E2F /* d_sys1.cpp */; }; + B32292092878322B00585AD8 /* d_mrdo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A72871354F008A0E2F /* d_mrdo.cpp */; }; + B322920A2878322B00585AD8 /* d_phoenix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C728713550008A0E2F /* d_phoenix.cpp */; }; + B322920B2878322B00585AD8 /* d_armedf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51B28713550008A0E2F /* d_armedf.cpp */; }; + B322920C2878322B00585AD8 /* d_exerion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C428713550008A0E2F /* d_exerion.cpp */; }; + B322920D2878322B00585AD8 /* d_millipede.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52828713550008A0E2F /* d_millipede.cpp */; }; + B322920E2878322B00585AD8 /* ps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D40E2871354F008A0E2F /* ps.cpp */; }; + B322920F2878322B00585AD8 /* d_snk6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50328713550008A0E2F /* d_snk6502.cpp */; }; + B32292102878322B00585AD8 /* sys16_run.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2FD2871354E008A0E2F /* sys16_run.cpp */; }; + B32292112878322B00585AD8 /* d_3x3puzzl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D29B2871354E008A0E2F /* d_3x3puzzl.cpp */; }; + B32292122878322B00585AD8 /* taito_ic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D45C2871354F008A0E2F /* taito_ic.cpp */; }; + B32292132878322B00585AD8 /* d_munchmo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52628713550008A0E2F /* d_munchmo.cpp */; }; + B32292142878322B00585AD8 /* d_aeroboto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55528713550008A0E2F /* d_aeroboto.cpp */; }; + B32292152878322B00585AD8 /* d_psikyo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4022871354F008A0E2F /* d_psikyo.cpp */; }; + B32292162878322B00585AD8 /* smstms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2402871354E008A0E2F /* smstms.cpp */; }; + B32292172878322B00585AD8 /* cps_obj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4092871354F008A0E2F /* cps_obj.cpp */; }; + B32292182878322B00585AD8 /* cave_tile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D24E2871354E008A0E2F /* cave_tile.cpp */; }; + B32292192878322B00585AD8 /* d_goindol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E028713550008A0E2F /* d_goindol.cpp */; }; + B322921A2878322B00585AD8 /* d_warpsped.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51A28713550008A0E2F /* d_warpsped.cpp */; }; + B322921B2878322B00585AD8 /* d_kaneko16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C02871354E008A0E2F /* d_kaneko16.cpp */; }; + B322921C2878322B00585AD8 /* d_superchs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4552871354F008A0E2F /* d_superchs.cpp */; }; + B322921D2878322B00585AD8 /* cps2_crpt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4102871354F008A0E2F /* cps2_crpt.cpp */; }; + B322921E2878322B00585AD8 /* d_pacland.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53E28713550008A0E2F /* d_pacland.cpp */; }; + B322921F2878322B00585AD8 /* ctv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4112871354F008A0E2F /* ctv.cpp */; }; + B32292202878322B00585AD8 /* taito.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4382871354F008A0E2F /* taito.cpp */; }; + B32292212878322B00585AD8 /* d_dynduke.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D228713550008A0E2F /* d_dynduke.cpp */; }; + B32292222878322B00585AD8 /* d_pirates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D22871354E008A0E2F /* d_pirates.cpp */; }; + B32292232878322B00585AD8 /* d_minivdr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D42C2871354F008A0E2F /* d_minivdr.cpp */; }; + B32292242878322B00585AD8 /* d_galaga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4862871354F008A0E2F /* d_galaga.cpp */; }; + B32292252878322B00585AD8 /* usb_snd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F42871354E008A0E2F /* usb_snd.cpp */; }; + B32292262878322B00585AD8 /* tc0220ioc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4512871354F008A0E2F /* tc0220ioc.cpp */; }; + B32292272878322B00585AD8 /* d_taitoh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D42B2871354F008A0E2F /* d_taitoh.cpp */; }; + B32292282878322B00585AD8 /* toa_gp9001.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E92871354F008A0E2F /* toa_gp9001.cpp */; }; + B32292292878322B00585AD8 /* d_wwfsstar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50928713550008A0E2F /* d_wwfsstar.cpp */; }; + B322922A2878322B00585AD8 /* psikyo_sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3FA2871354F008A0E2F /* psikyo_sprite.cpp */; }; + B322922B2878322B00585AD8 /* toa_extratext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3DE2871354F008A0E2F /* toa_extratext.cpp */; }; + B322922C2878322B00585AD8 /* d_darius2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4542871354F008A0E2F /* d_darius2.cpp */; }; + B322922D2878322B00585AD8 /* d_taitomisc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D43C2871354F008A0E2F /* d_taitomisc.cpp */; }; + B322922E2878322B00585AD8 /* tc0510nio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4472871354F008A0E2F /* tc0510nio.cpp */; }; + B322922F2878322B00585AD8 /* d_pgm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4732871354F008A0E2F /* d_pgm.cpp */; }; + B32292302878322B00585AD8 /* d_mazinger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D24D2871354E008A0E2F /* d_mazinger.cpp */; }; + B32292312878322B00585AD8 /* d_chinagat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55028713550008A0E2F /* d_chinagat.cpp */; }; + B32292322878322B00585AD8 /* d_feversos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2442871354E008A0E2F /* d_feversos.cpp */; }; + B32292332878322B00585AD8 /* d_metlfrzr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A42871354F008A0E2F /* d_metlfrzr.cpp */; }; + B32292342878322B00585AD8 /* d_slapfght.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D72871354F008A0E2F /* d_slapfght.cpp */; }; + B32292352878322B00585AD8 /* d_alpha68k1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4DB28713550008A0E2F /* d_alpha68k1.cpp */; }; + B32292362878322B00585AD8 /* psikyo_palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3FD2871354F008A0E2F /* psikyo_palette.cpp */; }; + B32292372878322B00585AD8 /* cps_rw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D41C2871354F008A0E2F /* cps_rw.cpp */; }; + B32292382878322B00585AD8 /* d_efdt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4892871354F008A0E2F /* d_efdt.cpp */; }; + B32292392878322B00585AD8 /* d_capbowl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C028713550008A0E2F /* d_capbowl.cpp */; }; + B322923A2878322B00585AD8 /* d_powerbal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2BE2871354E008A0E2F /* d_powerbal.cpp */; }; + B322923B2878322B00585AD8 /* psikyo_tile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3F82871354F008A0E2F /* psikyo_tile.cpp */; }; + B322923C2878322B00585AD8 /* d_vmetal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C72871354E008A0E2F /* d_vmetal.cpp */; }; + B322923D2878322B00585AD8 /* d_pasha2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C92871354E008A0E2F /* d_pasha2.cpp */; }; + B322923E2878322B00585AD8 /* d_toypop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D49D2871354F008A0E2F /* d_toypop.cpp */; }; + B322923F2878322B00585AD8 /* smsfmintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2322871354E008A0E2F /* smsfmintf.cpp */; }; + B32292402878322B00585AD8 /* d_xunit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3AB2871354F008A0E2F /* d_xunit.cpp */; }; + B32292412878322B00585AD8 /* d_speedbal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E628713550008A0E2F /* d_speedbal.cpp */; }; + B32292422878322B00585AD8 /* d_unico.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2EA2871354E008A0E2F /* d_unico.cpp */; }; + B32292432878322B00585AD8 /* d_segas32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2FA2871354E008A0E2F /* d_segas32.cpp */; }; + B32292442878322B00585AD8 /* d_exzisus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D45F2871354F008A0E2F /* d_exzisus.cpp */; }; + B32292452878322B00585AD8 /* d_fantland.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51D28713550008A0E2F /* d_fantland.cpp */; }; + B32292462878322B00585AD8 /* d_tankbust.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D48B2871354F008A0E2F /* d_tankbust.cpp */; }; + B32292472878322B00585AD8 /* d_kickgoal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2792871354E008A0E2F /* d_kickgoal.cpp */; }; + B32292482878322B00585AD8 /* d_spdodgeb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D49A2871354F008A0E2F /* d_spdodgeb.cpp */; }; + B32292492878322B00585AD8 /* d_tekipaki.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D52871354F008A0E2F /* d_tekipaki.cpp */; }; + B322924A2878322B00585AD8 /* d_psikyosh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4012871354F008A0E2F /* d_psikyosh.cpp */; }; + B322924B2878322B00585AD8 /* d_magmax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F328713550008A0E2F /* d_magmax.cpp */; }; + B322924C2878322B00585AD8 /* ctv_make.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D40F2871354F008A0E2F /* ctv_make.cpp */; }; + B322924D2878322B00585AD8 /* d_supridr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D43A2871354F008A0E2F /* d_supridr.cpp */; }; + B322924E2878322B00585AD8 /* d_aerofgt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2842871354E008A0E2F /* d_aerofgt.cpp */; }; + B322924F2878322B00585AD8 /* d_esd16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2712871354E008A0E2F /* d_esd16.cpp */; }; + B32292502878322B00585AD8 /* d_route16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C128713550008A0E2F /* d_route16.cpp */; }; + B32292512878322B00585AD8 /* d_taitob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D45D2871354F008A0E2F /* d_taitob.cpp */; }; + B32292522878322B00585AD8 /* d_jrpacman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4822871354F008A0E2F /* d_jrpacman.cpp */; }; + B32292532878322B00585AD8 /* d_mirax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A02871354F008A0E2F /* d_mirax.cpp */; }; + B32292542878322B00585AD8 /* d_blmbycar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D72871354E008A0E2F /* d_blmbycar.cpp */; }; + B32292552878322B00585AD8 /* d_berzerk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55A28713550008A0E2F /* d_berzerk.cpp */; }; + B32292562878322B00585AD8 /* d_buggychl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4232871354F008A0E2F /* d_buggychl.cpp */; }; + B32292572878322B00585AD8 /* d_bwidow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4EF28713550008A0E2F /* d_bwidow.cpp */; }; + B32292582878322B00585AD8 /* d_toki.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B728713550008A0E2F /* d_toki.cpp */; }; + B32292592878322B00585AD8 /* d_ccastles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55928713550008A0E2F /* d_ccastles.cpp */; }; + B322925A2878322B00585AD8 /* d_cischeat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2AA2871354E008A0E2F /* d_cischeat.cpp */; }; + B322925B2878322B00585AD8 /* d_msisaac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4302871354F008A0E2F /* d_msisaac.cpp */; }; + B322925C2878322B00585AD8 /* d_thepit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51928713550008A0E2F /* d_thepit.cpp */; }; + B322925D2878322B00585AD8 /* d_blockout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55828713550008A0E2F /* d_blockout.cpp */; }; + B322925E2878322B00585AD8 /* sys16_fd1094.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F82871354E008A0E2F /* sys16_fd1094.cpp */; }; + B322925F2878322B00585AD8 /* d_bankp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2EE2871354E008A0E2F /* d_bankp.cpp */; }; + B32292602878322B00585AD8 /* d_mugsmash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2BC2871354E008A0E2F /* d_mugsmash.cpp */; }; + B32292612878322B00585AD8 /* d_ms32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C62871354E008A0E2F /* d_ms32.cpp */; }; + B32292622878322B00585AD8 /* fd1094_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F72871354E008A0E2F /* fd1094_intf.cpp */; }; + B32292632878322B00585AD8 /* cave_palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2492871354E008A0E2F /* cave_palette.cpp */; }; + B32292642878322B00585AD8 /* midwayic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3B02871354F008A0E2F /* midwayic.cpp */; }; + B32292652878322B00585AD8 /* pgm_sprite_create.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4712871354F008A0E2F /* pgm_sprite_create.cpp */; }; + B32292662878322B00585AD8 /* pgm_run.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D46B2871354F008A0E2F /* pgm_run.cpp */; }; + B32292672878322B00585AD8 /* d_bagman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4BD28713550008A0E2F /* d_bagman.cpp */; }; + B32292682878322B00585AD8 /* d_dogfgt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F828713550008A0E2F /* d_dogfgt.cpp */; }; + B32292692878322B00585AD8 /* d_pitnrun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54C28713550008A0E2F /* d_pitnrun.cpp */; }; + B322926A2878322B00585AD8 /* d_mahoudai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D22871354F008A0E2F /* d_mahoudai.cpp */; }; + B322926B2878322B00585AD8 /* pgm_asic3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D46D2871354F008A0E2F /* pgm_asic3.cpp */; }; + B322926C2878322B00585AD8 /* fd1094.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2FC2871354E008A0E2F /* fd1094.cpp */; }; + B322926D2878322B00585AD8 /* cchip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4252871354F008A0E2F /* cchip.cpp */; }; + B322926E2878322B00585AD8 /* d_vegaeo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E12871354E008A0E2F /* d_vegaeo.cpp */; }; + B322926F2878322B00585AD8 /* d_wyvernf0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4482871354F008A0E2F /* d_wyvernf0.cpp */; }; + B32292702878322B00585AD8 /* d_missb2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E82871354E008A0E2F /* d_missb2.cpp */; }; + B32292712878322B00585AD8 /* d_eolith16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D29E2871354E008A0E2F /* d_eolith16.cpp */; }; + B32292722878322B00585AD8 /* d_suprnova.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D27C2871354E008A0E2F /* d_suprnova.cpp */; }; + B32292732878322B00585AD8 /* d_appoooh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3042871354E008A0E2F /* d_appoooh.cpp */; }; + B32292742878322B00585AD8 /* pgm_asic27a_type3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4702871354F008A0E2F /* pgm_asic27a_type3.cpp */; }; + B32292752878322B00585AD8 /* d_warpwarp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53F28713550008A0E2F /* d_warpwarp.cpp */; }; + B32292762878322B00585AD8 /* d_taitof3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D43E2871354F008A0E2F /* d_taitof3.cpp */; }; + B32292772878322B00585AD8 /* tc0110pcr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4372871354F008A0E2F /* tc0110pcr.cpp */; }; + B32292782878322B00585AD8 /* d_shangkid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51728713550008A0E2F /* d_shangkid.cpp */; }; + B32292792878322B00585AD8 /* d_silvmil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A42871354E008A0E2F /* d_silvmil.cpp */; }; + B322927A2878322B00585AD8 /* d_arkanoid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4662871354F008A0E2F /* d_arkanoid.cpp */; }; + B322927B2878322B00585AD8 /* d_ginganin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50728713550008A0E2F /* d_ginganin.cpp */; }; + B322927C2878322B00585AD8 /* d_fuukifg3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2782871354E008A0E2F /* d_fuukifg3.cpp */; }; + B322927D2878322B00585AD8 /* d_ettrivia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A32871354F008A0E2F /* d_ettrivia.cpp */; }; + B322927E2878322B00585AD8 /* d_taitosj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4592871354F008A0E2F /* d_taitosj.cpp */; }; + B322927F2878322B00585AD8 /* ps_m.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4162871354F008A0E2F /* ps_m.cpp */; }; + B32292802878322B00585AD8 /* d_olibochu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50228713550008A0E2F /* d_olibochu.cpp */; }; + B32292812878322B00585AD8 /* d_turbo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F92871354E008A0E2F /* d_turbo.cpp */; }; + B32292822878322B00585AD8 /* d_shangha3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2AB2871354E008A0E2F /* d_shangha3.cpp */; }; + B32292832878322B00585AD8 /* d_baraduke.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50628713550008A0E2F /* d_baraduke.cpp */; }; + B32292842878322B00585AD8 /* cps_draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4122871354F008A0E2F /* cps_draw.cpp */; }; + B32292852878322B00585AD8 /* d_cloud9.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4782871354F008A0E2F /* d_cloud9.cpp */; }; + B32292862878322B00585AD8 /* d_flower.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4992871354F008A0E2F /* d_flower.cpp */; }; + B32292872878322B00585AD8 /* d_safarir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53428713550008A0E2F /* d_safarir.cpp */; }; + B32292882878322B00585AD8 /* d_mainsnk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D49C2871354F008A0E2F /* d_mainsnk.cpp */; }; + B32292892878322B00585AD8 /* cps_scr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4192871354F008A0E2F /* cps_scr.cpp */; }; + B322928A2878322B00585AD8 /* d_raiden2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2922871354E008A0E2F /* d_raiden2.cpp */; }; + B322928B2878322B00585AD8 /* taito_m68705.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4292871354F008A0E2F /* taito_m68705.cpp */; }; + B322928C2878322B00585AD8 /* d_patapata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D52871354E008A0E2F /* d_patapata.cpp */; }; + B322928D2878322B00585AD8 /* d_pkscram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B22871354E008A0E2F /* d_pkscram.cpp */; }; + B322928E2878322B00585AD8 /* d_taitox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4322871354F008A0E2F /* d_taitox.cpp */; }; + B322928F2878322B00585AD8 /* d_1942.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D47F2871354F008A0E2F /* d_1942.cpp */; }; + B32292902878322B00585AD8 /* d_dacholer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F628713550008A0E2F /* d_dacholer.cpp */; }; + B32292912878322B00585AD8 /* d_wardner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3EA2871354F008A0E2F /* d_wardner.cpp */; }; + B32292922878322B00585AD8 /* d_galastrm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D44D2871354F008A0E2F /* d_galastrm.cpp */; }; + B32292932878322B00585AD8 /* d_ssozumo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4902871354F008A0E2F /* d_ssozumo.cpp */; }; + B32292942878322B00585AD8 /* d_tetrisp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2BA2871354E008A0E2F /* d_tetrisp2.cpp */; }; + B32292952878322B00585AD8 /* d_canyon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52D28713550008A0E2F /* d_canyon.cpp */; }; + B32292962878322B00585AD8 /* d_namcos86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4962871354F008A0E2F /* d_namcos86.cpp */; }; + B32292972878322B00585AD8 /* d_macrossp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B12871354E008A0E2F /* d_macrossp.cpp */; }; + B32292982878322B00585AD8 /* d_rallyx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D48C2871354F008A0E2F /* d_rallyx.cpp */; }; + B32292992878322B00585AD8 /* d_xxmissio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54E28713550008A0E2F /* d_xxmissio.cpp */; }; + B322929A2878322B00585AD8 /* d_pipedrm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2892871354E008A0E2F /* d_pipedrm.cpp */; }; + B322929B2878322B00585AD8 /* d_ninjakd2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D328713550008A0E2F /* d_ninjakd2.cpp */; }; + B322929C2878322B00585AD8 /* d_mario.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53128713550008A0E2F /* d_mario.cpp */; }; + B322929D2878322B00585AD8 /* d_exedexes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4832871354F008A0E2F /* d_exedexes.cpp */; }; + B322929E2878322B00585AD8 /* d_alpha68k2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E828713550008A0E2F /* d_alpha68k2.cpp */; }; + B322929F2878322B00585AD8 /* ps_z.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4152871354F008A0E2F /* ps_z.cpp */; }; + B32292A02878322B00585AD8 /* d_carjmbre.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D728713550008A0E2F /* d_carjmbre.cpp */; }; + B32292A12878322B00585AD8 /* d_f1gp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D02871354E008A0E2F /* d_f1gp.cpp */; }; + B32292A22878322B00585AD8 /* d_lordgun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D27F2871354E008A0E2F /* d_lordgun.cpp */; }; + B32292A32878322B00585AD8 /* d_gaiden.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D62871354E008A0E2F /* d_gaiden.cpp */; }; + B32292A42878322B00585AD8 /* d_pacman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4DF28713550008A0E2F /* d_pacman.cpp */; }; + B32292A52878322B00585AD8 /* d_marineb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55328713550008A0E2F /* d_marineb.cpp */; }; + B32292A62878322B00585AD8 /* d_sys18.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F02871354E008A0E2F /* d_sys18.cpp */; }; + B32292A72878322B00585AD8 /* smssystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2342871354E008A0E2F /* smssystem.cpp */; }; + B32292A82878322B00585AD8 /* d_mystston.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C328713550008A0E2F /* d_mystston.cpp */; }; + B32292A92878322B00585AD8 /* qs_z.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4072871354F008A0E2F /* qs_z.cpp */; }; + B32292AA2878322B00585AD8 /* d_snk68.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F928713550008A0E2F /* d_snk68.cpp */; }; + B32292AB2878322B00585AD8 /* d_drgnmst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A72871354E008A0E2F /* d_drgnmst.cpp */; }; + B32292AC2878322B00585AD8 /* d_gladiatr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4402871354F008A0E2F /* d_gladiatr.cpp */; }; + B32292AD2878322B00585AD8 /* d_bbakraid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D82871354F008A0E2F /* d_bbakraid.cpp */; }; + B32292AE2878322B00585AD8 /* d_fixeight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E72871354F008A0E2F /* d_fixeight.cpp */; }; + B32292AF2878322B00585AD8 /* qs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4142871354F008A0E2F /* qs.cpp */; }; + B32292B02878322B00585AD8 /* d_popeye.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4872871354F008A0E2F /* d_popeye.cpp */; }; + B32292B12878322B00585AD8 /* d_battlane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50F28713550008A0E2F /* d_battlane.cpp */; }; + B32292B22878322B00585AD8 /* toa_bcu2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3DD2871354F008A0E2F /* toa_bcu2.cpp */; }; + B32292B32878322B00585AD8 /* d_limenko.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A92871354E008A0E2F /* d_limenko.cpp */; }; + B32292B42878322B00585AD8 /* d_wrally.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E92871354E008A0E2F /* d_wrally.cpp */; }; + B32292B52878322B00585AD8 /* d_pac2650.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4972871354F008A0E2F /* d_pac2650.cpp */; }; + B32292B62878322B00585AD8 /* d_terracre.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52A28713550008A0E2F /* d_terracre.cpp */; }; + B32292B72878322B00585AD8 /* d_wc90b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51F28713550008A0E2F /* d_wc90b.cpp */; }; + B32292B82878322B00585AD8 /* d_aztarac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D428713550008A0E2F /* d_aztarac.cpp */; }; + B32292B92878322B00585AD8 /* d_holeland.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F528713550008A0E2F /* d_holeland.cpp */; }; + B32292BA2878322B00585AD8 /* d_gumbo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D92871354E008A0E2F /* d_gumbo.cpp */; }; + B32292BB2878322B00585AD8 /* d_omegrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53B28713550008A0E2F /* d_omegrace.cpp */; }; + B32292BC2878322B00585AD8 /* cpst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4062871354F008A0E2F /* cpst.cpp */; }; + B32292BD2878322B00585AD8 /* d_himesiki.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54828713550008A0E2F /* d_himesiki.cpp */; }; + B32292BE2878322B00585AD8 /* d_btoads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2CF2871354E008A0E2F /* d_btoads.cpp */; }; + B32292BF2878322B00585AD8 /* d_playmark.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2802871354E008A0E2F /* d_playmark.cpp */; }; + B32292C02878322B00585AD8 /* d_tecmo16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2AF2871354E008A0E2F /* d_tecmo16.cpp */; }; + B32292C12878322B00585AD8 /* d_egghunt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B72871354E008A0E2F /* d_egghunt.cpp */; }; + B32292C22878322B00585AD8 /* cps_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D41B2871354F008A0E2F /* cps_config.cpp */; }; + B32292C32878322B00585AD8 /* d_ashnojoe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D42A2871354F008A0E2F /* d_ashnojoe.cpp */; }; + B32292C42878322B00585AD8 /* d_tnzs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D44B2871354F008A0E2F /* d_tnzs.cpp */; }; + B32292C52878322B00585AD8 /* cps_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D40D2871354F008A0E2F /* cps_mem.cpp */; }; + B32292C62878322B00585AD8 /* d_stfight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4D528713550008A0E2F /* d_stfight.cpp */; }; + B32292C72878322B00585AD8 /* d_pushman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2CD2871354E008A0E2F /* d_pushman.cpp */; }; + B32292C82878322B00585AD8 /* d_gotcha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2AC2871354E008A0E2F /* d_gotcha.cpp */; }; + B32292C92878322B00585AD8 /* d_sstrangr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51428713550008A0E2F /* d_sstrangr.cpp */; }; + B32292CA2878322B00585AD8 /* d_tsamurai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E428713550008A0E2F /* d_tsamurai.cpp */; }; + B32292CB2878322B00585AD8 /* d_sys16a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3072871354E008A0E2F /* d_sys16a.cpp */; }; + B32292CC2878322B00585AD8 /* sega_315_5195.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F22871354E008A0E2F /* sega_315_5195.cpp */; }; + B32292CD2878322B00585AD8 /* d_crospang.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D28B2871354E008A0E2F /* d_crospang.cpp */; }; + B32292CE2878322B00585AD8 /* d_suprloco.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3082871354E008A0E2F /* d_suprloco.cpp */; }; + B32292CF2878322B00585AD8 /* d_cclimber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B828713550008A0E2F /* d_cclimber.cpp */; }; + B32292D02878322B00585AD8 /* d_rabbit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2C32871354E008A0E2F /* d_rabbit.cpp */; }; + B32292D12878322B00585AD8 /* d_pwrinst2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2532871354E008A0E2F /* d_pwrinst2.cpp */; }; + B32292D22878322B00585AD8 /* d_batsugun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E02871354F008A0E2F /* d_batsugun.cpp */; }; + B32292D32878322B00585AD8 /* d_nycaptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4352871354F008A0E2F /* d_nycaptor.cpp */; }; + B32292D42878322B00585AD8 /* d_dotrikun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F52871354E008A0E2F /* d_dotrikun.cpp */; }; + B32292D52878322B00585AD8 /* d_sprcros2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E128713550008A0E2F /* d_sprcros2.cpp */; }; + B32292D62878322B00585AD8 /* d_segag80v.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3002871354E008A0E2F /* d_segag80v.cpp */; }; + B32292D72878322B00585AD8 /* cave_sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2462871354E008A0E2F /* cave_sprite.cpp */; }; + B32292D82878322B00585AD8 /* d_tumbleb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D27B2871354E008A0E2F /* d_tumbleb.cpp */; }; + B32292D92878322B00585AD8 /* neo_sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3CB2871354F008A0E2F /* neo_sprite.cpp */; }; + B32292DA2878322B00585AD8 /* d_toaplan1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E62871354F008A0E2F /* d_toaplan1.cpp */; }; + B32292DB2878322B00585AD8 /* d_lasso.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4AA2871354F008A0E2F /* d_lasso.cpp */; }; + B32292DC2878322B00585AD8 /* d_jchan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D12871354E008A0E2F /* d_jchan.cpp */; }; + B32292DD2878322B00585AD8 /* d_uopoko.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2522871354E008A0E2F /* d_uopoko.cpp */; }; + B32292DE2878322B00585AD8 /* d_guwange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2542871354E008A0E2F /* d_guwange.cpp */; }; + B32292DF2878322B00585AD8 /* d_mustache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4922871354F008A0E2F /* d_mustache.cpp */; }; + B32292E02878322B00585AD8 /* d_srumbler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53028713550008A0E2F /* d_srumbler.cpp */; }; + B32292E12878322B00585AD8 /* d_skyfox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54728713550008A0E2F /* d_skyfox.cpp */; }; + B32292E22878322B00585AD8 /* d_sauro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4952871354F008A0E2F /* d_sauro.cpp */; }; + B32292E32878322B00585AD8 /* d_funybubl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2732871354E008A0E2F /* d_funybubl.cpp */; }; + B32292E42878322B00585AD8 /* d_namcos2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2CB2871354E008A0E2F /* d_namcos2.cpp */; }; + B32292E52878322B00585AD8 /* pc090oj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4532871354F008A0E2F /* pc090oj.cpp */; }; + B32292E62878322B00585AD8 /* d_thief.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D47B2871354F008A0E2F /* d_thief.cpp */; }; + B32292E72878322B00585AD8 /* tc0480scp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4602871354F008A0E2F /* tc0480scp.cpp */; }; + B32292E82878322B00585AD8 /* d_tjumpman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2582871354E008A0E2F /* d_tjumpman.cpp */; }; + B32292E92878322B00585AD8 /* d_mrflea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4ED28713550008A0E2F /* d_mrflea.cpp */; }; + B32292EA2878322B00585AD8 /* d_kyugo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52728713550008A0E2F /* d_kyugo.cpp */; }; + B32292EB2878322B00585AD8 /* mc8123.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F32871354E008A0E2F /* mc8123.cpp */; }; + B32292EC2878322B00585AD8 /* d_meijinsn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50428713550008A0E2F /* d_meijinsn.cpp */; }; + B32292ED2878322B00585AD8 /* d_gunbuster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4682871354F008A0E2F /* d_gunbuster.cpp */; }; + B32292EE2878322B00585AD8 /* d_skykid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52228713550008A0E2F /* d_skykid.cpp */; }; + B32292EF2878322B00585AD8 /* d_beaminv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4CD28713550008A0E2F /* d_beaminv.cpp */; }; + B32292F02878322B00585AD8 /* d_supduck.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B52871354E008A0E2F /* d_supduck.cpp */; }; + B32292F12878322B00585AD8 /* d_ppmast93.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D82871354E008A0E2F /* d_ppmast93.cpp */; }; + B32292F22878322B00585AD8 /* d_yunit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3B42871354F008A0E2F /* d_yunit.cpp */; }; + B32292F32878322B00585AD8 /* d_thedeep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4AE2871354F008A0E2F /* d_thedeep.cpp */; }; + B32292F42878322B00585AD8 /* d_mwarr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2862871354E008A0E2F /* d_mwarr.cpp */; }; + B32292F52878322B00585AD8 /* d_mouser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4CB28713550008A0E2F /* d_mouser.cpp */; }; + B32292F62878322B00585AD8 /* sys16_gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D30D2871354E008A0E2F /* sys16_gfx.cpp */; }; + B32292F72878322B00585AD8 /* d_punchout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50D28713550008A0E2F /* d_punchout.cpp */; }; + B32292F82878322B00585AD8 /* d_vamphalf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E72871354E008A0E2F /* d_vamphalf.cpp */; }; + B32292F92878322B00585AD8 /* d_mjkjidai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D48F2871354F008A0E2F /* d_mjkjidai.cpp */; }; + B32292FA2878322B00585AD8 /* d_matmania.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E228713550008A0E2F /* d_matmania.cpp */; }; + B32292FB2878322B00585AD8 /* d_wc90.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B528713550008A0E2F /* d_wc90.cpp */; }; + B32292FC2878322B00585AD8 /* d_exprraid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54028713550008A0E2F /* d_exprraid.cpp */; }; + B32292FD2878322B00585AD8 /* d_nmk16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2BD2871354E008A0E2F /* d_nmk16.cpp */; }; + B32292FE2878322B00585AD8 /* d_sys24.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F12871354E008A0E2F /* d_sys24.cpp */; }; + B32292FF2878322B00585AD8 /* d_powerins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D28A2871354E008A0E2F /* d_powerins.cpp */; }; + B32293002878322B00585AD8 /* d_inufuku.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B32871354E008A0E2F /* d_inufuku.cpp */; }; + B32293012878322B00585AD8 /* d_firetrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4AD2871354F008A0E2F /* d_firetrap.cpp */; }; + B32293022878322B00585AD8 /* d_ybrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3022871354E008A0E2F /* d_ybrd.cpp */; }; + B32293032878322B00585AD8 /* pgm_crypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D46C2871354F008A0E2F /* pgm_crypt.cpp */; }; + B32293042878322B00585AD8 /* d_jollyjgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4452871354F008A0E2F /* d_jollyjgr.cpp */; }; + B32293052878322B00585AD8 /* d_suna8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4AC2871354F008A0E2F /* d_suna8.cpp */; }; + B32293062878322B00585AD8 /* sf2mdt_snd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4182871354F008A0E2F /* sf2mdt_snd.cpp */; }; + B32293072878322B00585AD8 /* d_retofinv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D45B2871354F008A0E2F /* d_retofinv.cpp */; }; + B32293082878322B00585AD8 /* d_scregg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4882871354F008A0E2F /* d_scregg.cpp */; }; + B32293092878322B00585AD8 /* d_wiping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54928713550008A0E2F /* d_wiping.cpp */; }; + B322930A2878322B00585AD8 /* d_gaia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D24F2871354E008A0E2F /* d_gaia.cpp */; }; + B322930B2878322B00585AD8 /* d_4enraya.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C928713550008A0E2F /* d_4enraya.cpp */; }; + B322930C2878322B00585AD8 /* d_skyarmy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51E28713550008A0E2F /* d_skyarmy.cpp */; }; + B322930D2878322B00585AD8 /* d_psikyo4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3FE2871354F008A0E2F /* d_psikyo4.cpp */; }; + B322930E2878322B00585AD8 /* fcrash_snd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D40A2871354F008A0E2F /* fcrash_snd.cpp */; }; + B322930F2878322B00585AD8 /* tc0640fio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4632871354F008A0E2F /* tc0640fio.cpp */; }; + B32293102878322B00585AD8 /* dcs2k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3AF2871354F008A0E2F /* dcs2k.cpp */; }; + B32293112878322B00585AD8 /* d_tubep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E328713550008A0E2F /* d_tubep.cpp */; }; + B32293122878322B00585AD8 /* midtunit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3BB2871354F008A0E2F /* midtunit.cpp */; }; + B32293132878322B00585AD8 /* cps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D41F2871354F008A0E2F /* cps.cpp */; }; + B32293142878322B00585AD8 /* d_travrusa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50C28713550008A0E2F /* d_travrusa.cpp */; }; + B32293152878322B00585AD8 /* d_yunsun16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D28C2871354E008A0E2F /* d_yunsun16.cpp */; }; + B32293162878322B00585AD8 /* d_tempest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53628713550008A0E2F /* d_tempest.cpp */; }; + B32293172878322B00585AD8 /* d_renegade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4A92871354F008A0E2F /* d_renegade.cpp */; }; + B32293182878322B00585AD8 /* d_cloak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B328713550008A0E2F /* d_cloak.cpp */; }; + B32293192878322B00585AD8 /* d_wiz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4CC28713550008A0E2F /* d_wiz.cpp */; }; + B322931A2878322B00585AD8 /* d_blueprnt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55128713550008A0E2F /* d_blueprnt.cpp */; }; + B322931B2878322B00585AD8 /* d_iqblock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4CF28713550008A0E2F /* d_iqblock.cpp */; }; + B322931C2878322B00585AD8 /* d_thoop2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E42871354E008A0E2F /* d_thoop2.cpp */; }; + B322931D2878322B00585AD8 /* williams_adpcm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3BC2871354F008A0E2F /* williams_adpcm.cpp */; }; + B322931E2878322B00585AD8 /* d_tbowl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52C28713550008A0E2F /* d_tbowl.cpp */; }; + B322931F2878322B00585AD8 /* d_battleg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D42871354F008A0E2F /* d_battleg.cpp */; }; + B32293202878322B00585AD8 /* d_kinst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3AE2871354F008A0E2F /* d_kinst.cpp */; }; + B32293212878322B00585AD8 /* d_qix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4412871354F008A0E2F /* d_qix.cpp */; }; + B32293222878322B00585AD8 /* d_tecmo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4812871354F008A0E2F /* d_tecmo.cpp */; }; + B32293232878322B00585AD8 /* d_fuukifg2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2752871354E008A0E2F /* d_fuukifg2.cpp */; }; + B32293242878322B00585AD8 /* d_quantum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D48E2871354F008A0E2F /* d_quantum.cpp */; }; + B32293252878322B00585AD8 /* d_djboy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52B28713550008A0E2F /* d_djboy.cpp */; }; + B32293262878322B00585AD8 /* d_targeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2962871354E008A0E2F /* d_targeth.cpp */; }; + B32293272878322B00585AD8 /* smsvdp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2392871354E008A0E2F /* smsvdp.cpp */; }; + B32293282878322B00585AD8 /* d_wunit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3BE2871354F008A0E2F /* d_wunit.cpp */; }; + B32293292878322B00585AD8 /* d_news.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E52871354E008A0E2F /* d_news.cpp */; }; + B322932A2878322B00585AD8 /* d_pipibibs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3EC2871354F008A0E2F /* d_pipibibs.cpp */; }; + B322932B2878322B00585AD8 /* d_mmagic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4EB28713550008A0E2F /* d_mmagic.cpp */; }; + B322932C2878322B00585AD8 /* d_tagteam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50028713550008A0E2F /* d_tagteam.cpp */; }; + B322932D2878322B00585AD8 /* d_redclash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D47A2871354F008A0E2F /* d_redclash.cpp */; }; + B322932E2878322B00585AD8 /* d_popper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4BF28713550008A0E2F /* d_popper.cpp */; }; + B322932F2878322B00585AD8 /* d_gaelco.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D27D2871354E008A0E2F /* d_gaelco.cpp */; }; + B32293302878322B00585AD8 /* d_bombjack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55728713550008A0E2F /* d_bombjack.cpp */; }; + B32293312878322B00585AD8 /* d_citycon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C228713550008A0E2F /* d_citycon.cpp */; }; + B32293322878322B00585AD8 /* d_cheekyms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54628713550008A0E2F /* d_cheekyms.cpp */; }; + B32293332878322B00585AD8 /* d_ddragon3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2DA2871354E008A0E2F /* d_ddragon3.cpp */; }; + B32293342878322B00585AD8 /* d_sub.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D47D2871354F008A0E2F /* d_sub.cpp */; }; + B32293352878322B00585AD8 /* d_ddayjlc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53A28713550008A0E2F /* d_ddayjlc.cpp */; }; + B32293362878322B00585AD8 /* d_snowbro2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D32871354F008A0E2F /* d_snowbro2.cpp */; }; + B32293372878322B00585AD8 /* d_kangaroo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52328713550008A0E2F /* d_kangaroo.cpp */; }; + B32293382878322B00585AD8 /* d_sidearms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4E928713550008A0E2F /* d_sidearms.cpp */; }; + B32293392878322B00585AD8 /* d_mappy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52528713550008A0E2F /* d_mappy.cpp */; }; + B322933A2878322B00585AD8 /* d_galivan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54128713550008A0E2F /* d_galivan.cpp */; }; + B322933B2878322B00585AD8 /* taitof3_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4312871354F008A0E2F /* taitof3_video.cpp */; }; + B322933C2878322B00585AD8 /* tc0280grd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D44F2871354F008A0E2F /* tc0280grd.cpp */; }; + B322933D2878322B00585AD8 /* d_jedi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4982871354F008A0E2F /* d_jedi.cpp */; }; + B322933E2878322B00585AD8 /* d_exterm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F428713550008A0E2F /* d_exterm.cpp */; }; + B322933F2878322B00585AD8 /* d_shippumd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3DA2871354F008A0E2F /* d_shippumd.cpp */; }; + B32293402878322B00585AD8 /* d_freekick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55228713550008A0E2F /* d_freekick.cpp */; }; + B32293412878322B00585AD8 /* d_snk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4912871354F008A0E2F /* d_snk.cpp */; }; + B32293422878322B00585AD8 /* d_vball.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4FC28713550008A0E2F /* d_vball.cpp */; }; + B32293432878322B00585AD8 /* d_drmicro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D54428713550008A0E2F /* d_drmicro.cpp */; }; + B32293442878322B00585AD8 /* d_deniam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D27E2871354E008A0E2F /* d_deniam.cpp */; }; + B32293452878322B00585AD8 /* d_mexico86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4392871354F008A0E2F /* d_mexico86.cpp */; }; + B32293462878322B00585AD8 /* cpsr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D40B2871354F008A0E2F /* cpsr.cpp */; }; + B32293472878322B00585AD8 /* d_ngp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A82871354E008A0E2F /* d_ngp.cpp */; }; + B32293482878322B00585AD8 /* midwunit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3B72871354F008A0E2F /* midwunit.cpp */; }; + B32293492878322B00585AD8 /* d_midas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D29C2871354E008A0E2F /* d_midas.cpp */; }; + B322934A2878322B00585AD8 /* d_galspnbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2902871354E008A0E2F /* d_galspnbl.cpp */; }; + B322934B2878322B00585AD8 /* d_hotdogst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2552871354E008A0E2F /* d_hotdogst.cpp */; }; + B322934C2878322B00585AD8 /* d_bigstrkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2DC2871354E008A0E2F /* d_bigstrkb.cpp */; }; + B322934D2878322B00585AD8 /* d_blockade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50A28713550008A0E2F /* d_blockade.cpp */; }; + B322934E2878322B00585AD8 /* tc0150rod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4502871354F008A0E2F /* tc0150rod.cpp */; }; + B322934F2878322B00585AD8 /* d_angelkds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D30B2871354E008A0E2F /* d_angelkds.cpp */; }; + B32293502878322B00585AD8 /* d_suna16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2722871354E008A0E2F /* d_suna16.cpp */; }; + B32293512878322B00585AD8 /* d_shadfrce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2882871354E008A0E2F /* d_shadfrce.cpp */; }; + B32293522878322B00585AD8 /* d_arabian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4F728713550008A0E2F /* d_arabian.cpp */; }; + B32293532878322B00585AD8 /* d_taotaido.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2D32871354E008A0E2F /* d_taotaido.cpp */; }; + B32293542878322B00585AD8 /* qs_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D41E2871354F008A0E2F /* qs_c.cpp */; }; + B32293552878322B00585AD8 /* d_sms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2312871354E008A0E2F /* d_sms.cpp */; }; + B32293562878322B00585AD8 /* tc0140syt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4362871354F008A0E2F /* tc0140syt.cpp */; }; + B32293572878322B00585AD8 /* pgm_draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4722871354F008A0E2F /* pgm_draw.cpp */; }; + B32293582878322B00585AD8 /* d_bogeyman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D51628713550008A0E2F /* d_bogeyman.cpp */; }; + B32293592878322B00585AD8 /* d_cps1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4082871354F008A0E2F /* d_cps1.cpp */; }; + B322935A2878322B00585AD8 /* d_headonb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D53D28713550008A0E2F /* d_headonb.cpp */; }; + B322935B2878322B00585AD8 /* d_eolith.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A22871354E008A0E2F /* d_eolith.cpp */; }; + B322935C2878322B00585AD8 /* genesis_vid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2F62871354E008A0E2F /* genesis_vid.cpp */; }; + B322935D2878322B00585AD8 /* d_gaelco2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2DB2871354E008A0E2F /* d_gaelco2.cpp */; }; + B322935E2878322B00585AD8 /* d_higemaru.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4FE28713550008A0E2F /* d_higemaru.cpp */; }; + B322935F2878322B00585AD8 /* d_zerozone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E62871354E008A0E2F /* d_zerozone.cpp */; }; + B32293602878322B00585AD8 /* d_enmadaio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3EB2871354F008A0E2F /* d_enmadaio.cpp */; }; + B32293612878322B00585AD8 /* d_xyonix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D52028713550008A0E2F /* d_xyonix.cpp */; }; + B32293622878322B00585AD8 /* d_aquarium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D28E2871354E008A0E2F /* d_aquarium.cpp */; }; + B32293632878322B00585AD8 /* d_fastfred.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D50B28713550008A0E2F /* d_fastfred.cpp */; }; + B32293642878322B00585AD8 /* d_calorie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4B928713550008A0E2F /* d_calorie.cpp */; }; + B32293652878322B00585AD8 /* d_yunsung8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2EB2871354E008A0E2F /* d_yunsung8.cpp */; }; + B32293662878322B00585AD8 /* d_outrun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3092871354E008A0E2F /* d_outrun.cpp */; }; + B32293672878322B00585AD8 /* narc_sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3B52871354F008A0E2F /* narc_sound.cpp */; }; + B32293682878322B00585AD8 /* psikyosh_render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3FB2871354F008A0E2F /* psikyosh_render.cpp */; }; + B32293692878322B00585AD8 /* d_x2222.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2CC2871354E008A0E2F /* d_x2222.cpp */; }; + B322936A2878322B00585AD8 /* cave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D24A2871354E008A0E2F /* cave.cpp */; }; + B322936B2878322B00585AD8 /* d_bloodbro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2B82871354E008A0E2F /* d_bloodbro.cpp */; }; + B322936C2878322B00585AD8 /* d_ssrj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4672871354F008A0E2F /* d_ssrj.cpp */; }; + B322936D2878322B00585AD8 /* d_kingofbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4C628713550008A0E2F /* d_kingofbox.cpp */; }; + B322936E2878322B00585AD8 /* d_alpha68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4932871354F008A0E2F /* d_alpha68k.cpp */; }; + B322936F2878322B00585AD8 /* d_f-32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2872871354E008A0E2F /* d_f-32.cpp */; }; + B32293702878322B00585AD8 /* d_truxton2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3E42871354F008A0E2F /* d_truxton2.cpp */; }; + B32293712878322B00585AD8 /* d_goori.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2A62871354E008A0E2F /* d_goori.cpp */; }; + B32293722878322B00585AD8 /* d_dooyong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2E02871354E008A0E2F /* d_dooyong.cpp */; }; + B32293732878322B00585AD8 /* d_onetwo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2942871354E008A0E2F /* d_onetwo.cpp */; }; + B32293742878322B00585AD8 /* d_namcona1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2DF2871354E008A0E2F /* d_namcona1.cpp */; }; + B32293752878322B00585AD8 /* d_lsasquad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4342871354F008A0E2F /* d_lsasquad.cpp */; }; + B32293762878322B00585AD8 /* d_mrjong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4FA28713550008A0E2F /* d_mrjong.cpp */; }; + B32293772878322B00585AD8 /* d_taitoz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D42F2871354F008A0E2F /* d_taitoz.cpp */; }; + B32293782878322B00585AD8 /* d_drtomy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D29D2871354E008A0E2F /* d_drtomy.cpp */; }; + B32296A1287833F700585AD8 /* lowpass2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D92028713553008A0E2F /* lowpass2.cpp */; }; + B32296A32878342200585AD8 /* zipfn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D9D928713554008A0E2F /* zipfn.cpp */; }; + B32296A52878344900585AD8 /* m68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D68B28713551008A0E2F /* m68kcpu.c */; }; + B32296A9287834EF00585AD8 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D95228713554008A0E2F /* unzip.c */; }; + B32296AB287834FA00585AD8 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D95728713554008A0E2F /* ioapi.c */; }; + B32296BD2878360300585AD8 /* m68kops.c in Sources */ = {isa = PBXBuildFile; fileRef = B32296B1287835FB00585AD8 /* m68kops.c */; }; + B32296C32878371D00585AD8 /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3DDCB2871408F008A0E2F /* libretro.cpp */; }; + B32296C52878373200585AD8 /* retro_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3DBD72871408D008A0E2F /* retro_common.cpp */; }; + B32296C72878373900585AD8 /* retro_input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3DBCE2871408D008A0E2F /* retro_input.cpp */; }; + B32296C92878373E00585AD8 /* retro_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3DBD92871408D008A0E2F /* retro_memory.cpp */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3B3DA27287136A0008A0E2F /* PVFBNeoCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3B3DA25287136A0008A0E2F /* PVFBNeoCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3B3DA29287136A0008A0E2F /* PVFBNeoCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3B3DA26287136A0008A0E2F /* PVFBNeoCore.mm */; }; + B3B3DA2B287136D6008A0E2F /* tilemap_generic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55C28713550008A0E2F /* tilemap_generic.cpp */; }; + B3B3DA2C287136D6008A0E2F /* burn_shift.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61B28713551008A0E2F /* burn_shift.cpp */; }; + B3B3DA2D287136D6008A0E2F /* burn_bitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57328713550008A0E2F /* burn_bitmap.cpp */; }; + B3B3DA2F287136D6008A0E2F /* debug_track.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D55F28713550008A0E2F /* debug_track.cpp */; }; + B3B3DA30287136D6008A0E2F /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61428713551008A0E2F /* cheat.cpp */; }; + B3B3DA31287136D6008A0E2F /* burn_gun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61928713551008A0E2F /* burn_gun.cpp */; }; + B3B3DA32287136D6008A0E2F /* burn_led.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2142871354D008A0E2F /* burn_led.cpp */; }; + B3B3DA33287136D6008A0E2F /* burn_sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61828713551008A0E2F /* burn_sound.cpp */; }; + B3B3DA34287136D6008A0E2F /* burn_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57428713550008A0E2F /* burn_memory.cpp */; }; + B3B3DA35287136D6008A0E2F /* burn_sound_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61728713551008A0E2F /* burn_sound_c.cpp */; }; + B3B3DA36287136D6008A0E2F /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57228713550008A0E2F /* vector.cpp */; }; + B3B3DA37287136D6008A0E2F /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D56928713550008A0E2F /* timer.cpp */; }; + B3B3DA38287136D6008A0E2F /* burn_pal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D56328713550008A0E2F /* burn_pal.cpp */; }; + B3B3DA39287136D6008A0E2F /* load.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61228713551008A0E2F /* load.cpp */; }; + B3B3DA3A287136D6008A0E2F /* hiscore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D56528713550008A0E2F /* hiscore.cpp */; }; + B3B3DA3B287136D6008A0E2F /* tiles_generic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61A28713551008A0E2F /* tiles_generic.cpp */; }; + B3B3DA3C287136EC008A0E2F /* midcsd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61F28713551008A0E2F /* midcsd.cpp */; }; + B3B3DA3D287136EC008A0E2F /* resnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D62328713551008A0E2F /* resnet.cpp */; }; + B3B3DA3E287136EC008A0E2F /* mathbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D67028713551008A0E2F /* mathbox.cpp */; }; + B3B3DA3F287136EC008A0E2F /* atarivad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65328713551008A0E2F /* atarivad.cpp */; }; + B3B3DA40287136EC008A0E2F /* earom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63928713551008A0E2F /* earom.cpp */; }; + B3B3DA41287136EC008A0E2F /* nmk112.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64928713551008A0E2F /* nmk112.cpp */; }; + B3B3DA42287136EC008A0E2F /* sknsspr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66328713551008A0E2F /* sknsspr.cpp */; }; + B3B3DA43287136EC008A0E2F /* timekpr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63A28713551008A0E2F /* timekpr.cpp */; }; + B3B3DA44287136EC008A0E2F /* nb1414m4_8bit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D62128713551008A0E2F /* nb1414m4_8bit.cpp */; }; + B3B3DA45287136EC008A0E2F /* mermaid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65528713551008A0E2F /* mermaid.cpp */; }; + B3B3DA46287136EC008A0E2F /* pandora.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63B28713551008A0E2F /* pandora.cpp */; }; + B3B3DA47287136EC008A0E2F /* tlc34076.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64E28713551008A0E2F /* tlc34076.cpp */; }; + B3B3DA48287136EC008A0E2F /* atariic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65E28713551008A0E2F /* atariic.cpp */; }; + B3B3DA49287136EC008A0E2F /* namco_c45.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D68128713551008A0E2F /* namco_c45.cpp */; }; + B3B3DA4A287136EC008A0E2F /* t5182.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64D28713551008A0E2F /* t5182.cpp */; }; + B3B3DA4B287136EC008A0E2F /* midsat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66C28713551008A0E2F /* midsat.cpp */; }; + B3B3DA4C287136EC008A0E2F /* mb87078.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66628713551008A0E2F /* mb87078.cpp */; }; + B3B3DA4D287136EC008A0E2F /* nb1414m4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63328713551008A0E2F /* nb1414m4.cpp */; }; + B3B3DA4E287136EC008A0E2F /* st0020.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63F28713551008A0E2F /* st0020.cpp */; }; + B3B3DA4F287136EC008A0E2F /* 8257dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64428713551008A0E2F /* 8257dma.cpp */; }; + B3B3DA50287136EC008A0E2F /* joyprocess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65828713551008A0E2F /* joyprocess.cpp */; }; + B3B3DA51287136EC008A0E2F /* avgdvg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64328713551008A0E2F /* avgdvg.cpp */; }; + B3B3DA52287136EC008A0E2F /* namcoio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D67528713551008A0E2F /* namcoio.cpp */; }; + B3B3DA53287136EC008A0E2F /* k1ge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D61D28713551008A0E2F /* k1ge.cpp */; }; + B3B3DA54287136EC008A0E2F /* midssio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66B28713551008A0E2F /* midssio.cpp */; }; + B3B3DA55287136EC008A0E2F /* 8255ppi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65928713551008A0E2F /* 8255ppi.cpp */; }; + B3B3DA56287136EC008A0E2F /* gaelco_crypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63228713551008A0E2F /* gaelco_crypt.cpp */; }; + B3B3DA57287136EC008A0E2F /* v3021.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64128713551008A0E2F /* v3021.cpp */; }; + B3B3DA58287136EC008A0E2F /* x2212.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66828713551008A0E2F /* x2212.cpp */; }; + B3B3DA59287136EC008A0E2F /* i4x00.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D67E28713551008A0E2F /* i4x00.cpp */; }; + B3B3DA5A287136EC008A0E2F /* atarirle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64728713551008A0E2F /* atarirle.cpp */; }; + B3B3DA5B287136EC008A0E2F /* ds2404.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66028713551008A0E2F /* ds2404.cpp */; }; + B3B3DA5C287136EC008A0E2F /* slapstic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63428713551008A0E2F /* slapstic.cpp */; }; + B3B3DA5D287136EC008A0E2F /* c169.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D68528713551008A0E2F /* c169.cpp */; }; + B3B3DA5E287136EC008A0E2F /* seibusnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D67728713551008A0E2F /* seibusnd.cpp */; }; + B3B3DA5F287136EC008A0E2F /* vdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D62228713551008A0E2F /* vdc.cpp */; }; + B3B3DA60287136EC008A0E2F /* midsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D67228713551008A0E2F /* midsg.cpp */; }; + B3B3DA61287136EC008A0E2F /* kaneko_tmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64A28713551008A0E2F /* kaneko_tmap.cpp */; }; + B3B3DA62287136EC008A0E2F /* nmk004.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63028713551008A0E2F /* nmk004.cpp */; }; + B3B3DA63287136EC008A0E2F /* 6821pia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64F28713551008A0E2F /* 6821pia.cpp */; }; + B3B3DA64287136EC008A0E2F /* bsmt2000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65728713551008A0E2F /* bsmt2000.cpp */; }; + B3B3DA65287136EC008A0E2F /* decobsmt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D67B28713551008A0E2F /* decobsmt.cpp */; }; + B3B3DA66287136EC008A0E2F /* watchdog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65028713551008A0E2F /* watchdog.cpp */; }; + B3B3DA67287136EC008A0E2F /* atarimo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66F28713551008A0E2F /* atarimo.cpp */; }; + B3B3DA68287136EC008A0E2F /* seibucop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D65128713551008A0E2F /* seibucop.cpp */; }; + B3B3DA69287136EC008A0E2F /* tms9928a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D68628713551008A0E2F /* tms9928a.cpp */; }; + B3B3DA6A287136EC008A0E2F /* poly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D63E28713551008A0E2F /* poly.cpp */; }; + B3B3DA6B287136EC008A0E2F /* qs1000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D62E28713551008A0E2F /* qs1000.cpp */; }; + B3B3DA6C287136EC008A0E2F /* intelfsh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64B28713551008A0E2F /* intelfsh.cpp */; }; + B3B3DA6D287136EC008A0E2F /* midtcs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64028713551008A0E2F /* midtcs.cpp */; }; + B3B3DA6E287136EC008A0E2F /* eeprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D67A28713551008A0E2F /* eeprom.cpp */; }; + B3B3DA6F287136EC008A0E2F /* tms34061.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D66E28713551008A0E2F /* tms34061.cpp */; }; + B3B3DA70287136EC008A0E2F /* atarijsa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D64628713551008A0E2F /* atarijsa.cpp */; }; + B3B3DA7128713710008A0E2F /* burn_ym2612.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60A28713551008A0E2F /* burn_ym2612.cpp */; }; + B3B3DA7228713710008A0E2F /* ym2151.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D59D28713550008A0E2F /* ym2151.c */; }; + B3B3DA7328713710008A0E2F /* bzone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5DA28713551008A0E2F /* bzone.cpp */; }; + B3B3DA7428713710008A0E2F /* iremga20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5E028713551008A0E2F /* iremga20.cpp */; }; + B3B3DA7528713710008A0E2F /* k051649.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5D828713551008A0E2F /* k051649.cpp */; }; + B3B3DA7628713710008A0E2F /* fm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5ED28713551008A0E2F /* fm.c */; }; + B3B3DA7728713710008A0E2F /* tms5110.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5A528713550008A0E2F /* tms5110.cpp */; }; + B3B3DA7828713710008A0E2F /* pleiadssound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58728713550008A0E2F /* pleiadssound.cpp */; }; + B3B3DA7928713710008A0E2F /* k007232.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5BF28713551008A0E2F /* k007232.cpp */; }; + B3B3DA7A28713710008A0E2F /* sn76477.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57C28713550008A0E2F /* sn76477.cpp */; }; + B3B3DA7B28713710008A0E2F /* msm5205.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57928713550008A0E2F /* msm5205.cpp */; }; + B3B3DA7C28713710008A0E2F /* pokey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D59A28713550008A0E2F /* pokey.cpp */; }; + B3B3DA7D28713710008A0E2F /* es8712.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5D328713551008A0E2F /* es8712.cpp */; }; + B3B3DA7E28713710008A0E2F /* ym2612.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5A228713550008A0E2F /* ym2612.c */; }; + B3B3DA7F28713710008A0E2F /* i5000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5C128713551008A0E2F /* i5000.cpp */; }; + B3B3DA8028713710008A0E2F /* upd7759.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5DD28713551008A0E2F /* upd7759.cpp */; }; + B3B3DA8128713710008A0E2F /* llander.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58428713550008A0E2F /* llander.cpp */; }; + B3B3DA8228713710008A0E2F /* nes_apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5B028713551008A0E2F /* nes_apu.cpp */; }; + B3B3DA8328713710008A0E2F /* ay8910.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5F928713551008A0E2F /* ay8910.c */; }; + B3B3DA8428713710008A0E2F /* burn_md2612.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5EB28713551008A0E2F /* burn_md2612.cpp */; }; + B3B3DA8528713710008A0E2F /* fmopl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57E28713550008A0E2F /* fmopl.c */; }; + B3B3DA8628713710008A0E2F /* burn_ym3812.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5C328713551008A0E2F /* burn_ym3812.cpp */; }; + B3B3DA8728713710008A0E2F /* burn_ymf271.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5EA28713551008A0E2F /* burn_ymf271.cpp */; }; + B3B3DA8828713710008A0E2F /* c140.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60928713551008A0E2F /* c140.cpp */; }; + B3B3DA8928713710008A0E2F /* c352.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5E628713551008A0E2F /* c352.cpp */; }; + B3B3DA8A28713710008A0E2F /* sn76496.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5F628713551008A0E2F /* sn76496.cpp */; }; + B3B3DA8B28713710008A0E2F /* x1010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58528713550008A0E2F /* x1010.cpp */; }; + B3B3DA8C28713710008A0E2F /* ymz280b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57828713550008A0E2F /* ymz280b.cpp */; }; + B3B3DA8D28713710008A0E2F /* tms5220.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60528713551008A0E2F /* tms5220.cpp */; }; + B3B3DA8E28713710008A0E2F /* burn_ymf262.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5FB28713551008A0E2F /* burn_ymf262.cpp */; }; + B3B3DA8F28713710008A0E2F /* tms36xx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5F328713551008A0E2F /* tms36xx.cpp */; }; + B3B3DA9028713710008A0E2F /* rf5c68.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5C728713551008A0E2F /* rf5c68.cpp */; }; + B3B3DA9128713710008A0E2F /* k054539.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5BA28713551008A0E2F /* k054539.cpp */; }; + B3B3DA9228713710008A0E2F /* es5506.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58F28713550008A0E2F /* es5506.cpp */; }; + B3B3DA9328713710008A0E2F /* ymf278b.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5A728713550008A0E2F /* ymf278b.c */; }; + B3B3DA9428713710008A0E2F /* ics2115.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5D028713551008A0E2F /* ics2115.cpp */; }; + B3B3DA9528713710008A0E2F /* msm5232.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5F428713551008A0E2F /* msm5232.cpp */; }; + B3B3DA9628713710008A0E2F /* samples.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5A928713550008A0E2F /* samples.cpp */; }; + B3B3DA9728713710008A0E2F /* k053260.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5D628713551008A0E2F /* k053260.cpp */; }; + B3B3DA9828713710008A0E2F /* ymdeltat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60328713551008A0E2F /* ymdeltat.c */; }; + B3B3DA9928713710008A0E2F /* saa1099.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5D528713551008A0E2F /* saa1099.cpp */; }; + B3B3DA9A28713710008A0E2F /* sp0256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5EC28713551008A0E2F /* sp0256.cpp */; }; + B3B3DA9B28713710008A0E2F /* burn_ym3526.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5FE28713551008A0E2F /* burn_ym3526.cpp */; }; + B3B3DA9C28713710008A0E2F /* hc55516.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5AE28713550008A0E2F /* hc55516.cpp */; }; + B3B3DA9D28713710008A0E2F /* burn_y8950.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5CF28713551008A0E2F /* burn_y8950.cpp */; }; + B3B3DA9E28713710008A0E2F /* k005289.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58628713550008A0E2F /* k005289.cpp */; }; + B3B3DA9F28713710008A0E2F /* t6w28.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5A128713550008A0E2F /* t6w28.cpp */; }; + B3B3DAA028713710008A0E2F /* gaelco.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5AC28713550008A0E2F /* gaelco.cpp */; }; + B3B3DAA128713710008A0E2F /* phoenixsound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58D28713550008A0E2F /* phoenixsound.cpp */; }; + B3B3DAA228713710008A0E2F /* ym2413.c in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5CB28713551008A0E2F /* ym2413.c */; }; + B3B3DAA328713710008A0E2F /* redbaron.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5E128713551008A0E2F /* redbaron.cpp */; }; + B3B3DAA428713710008A0E2F /* burn_ymf278b.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57F28713550008A0E2F /* burn_ymf278b.cpp */; }; + B3B3DAA528713710008A0E2F /* namco_snd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5A828713550008A0E2F /* namco_snd.cpp */; }; + B3B3DAA628713710008A0E2F /* wiping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5D928713551008A0E2F /* wiping.cpp */; }; + B3B3DAA728713710008A0E2F /* flower.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5AB28713550008A0E2F /* flower.cpp */; }; + B3B3DAA828713710008A0E2F /* snk6502_sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5DE28713551008A0E2F /* snk6502_sound.cpp */; }; + B3B3DAA928713710008A0E2F /* asteroids.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5C528713551008A0E2F /* asteroids.cpp */; }; + B3B3DAAA28713710008A0E2F /* burn_ym2413.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5FC28713551008A0E2F /* burn_ym2413.cpp */; }; + B3B3DAAB28713710008A0E2F /* msm6295.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58C28713550008A0E2F /* msm6295.cpp */; }; + B3B3DAAC28713710008A0E2F /* multipcm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5BC28713551008A0E2F /* multipcm.cpp */; }; + B3B3DAAD28713710008A0E2F /* ymf271.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5B428713551008A0E2F /* ymf271.cpp */; }; + B3B3DAAE28713710008A0E2F /* burn_ym2608.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D58928713550008A0E2F /* burn_ym2608.cpp */; }; + B3B3DAAF28713710008A0E2F /* segapcm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60128713551008A0E2F /* segapcm.cpp */; }; + B3B3DAB028713711008A0E2F /* sp0250.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60628713551008A0E2F /* sp0250.cpp */; }; + B3B3DAB128713711008A0E2F /* burn_ym2151.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D57A28713550008A0E2F /* burn_ym2151.cpp */; }; + B3B3DAB228713711008A0E2F /* digitalk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5CA28713551008A0E2F /* digitalk.cpp */; }; + B3B3DAB328713711008A0E2F /* burn_ym2203.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60D28713551008A0E2F /* burn_ym2203.cpp */; }; + B3B3DAB428713711008A0E2F /* c6280.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60828713551008A0E2F /* c6280.cpp */; }; + B3B3DAB528713711008A0E2F /* ymf262.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D59E28713550008A0E2F /* ymf262.cpp */; }; + B3B3DAB628713711008A0E2F /* s14001a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D5B528713551008A0E2F /* s14001a.cpp */; }; + B3B3DAB728713711008A0E2F /* dac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D59C28713550008A0E2F /* dac.cpp */; }; + B3B3DAB828713711008A0E2F /* flt_rc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60728713551008A0E2F /* flt_rc.cpp */; }; + B3B3DAB928713711008A0E2F /* burn_ym2610.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D60028713551008A0E2F /* burn_ym2610.cpp */; }; + B3B3DABA28713711008A0E2F /* vlm5030.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D59728713550008A0E2F /* vlm5030.cpp */; }; + B3B3DABE28713B3B008A0E2F /* hd6309_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D7A028713552008A0E2F /* hd6309_intf.cpp */; }; + B3B3DABF28713B3B008A0E2F /* m6809_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D73F28713552008A0E2F /* m6809_intf.cpp */; }; + B3B3DAC028713B3B008A0E2F /* m6502_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D74028713552008A0E2F /* m6502_intf.cpp */; }; + B3B3DAC128713B3B008A0E2F /* s2650_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D73A28713552008A0E2F /* s2650_intf.cpp */; }; + B3B3DAC228713B3B008A0E2F /* z180_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D69128713551008A0E2F /* z180_intf.cpp */; }; + B3B3DAC328713B3B008A0E2F /* m68000_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6A428713551008A0E2F /* m68000_intf.cpp */; }; + B3B3DAC428713B3B008A0E2F /* z80_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D69228713551008A0E2F /* z80_intf.cpp */; }; + B3B3DAC528713B3B008A0E2F /* m6805_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D78A28713552008A0E2F /* m6805_intf.cpp */; }; + B3B3DAC628713B3B008A0E2F /* h6280_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6E428713552008A0E2F /* h6280_intf.cpp */; }; + B3B3DAC728713B3B008A0E2F /* tlcs90_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D76128713552008A0E2F /* tlcs90_intf.cpp */; }; + B3B3DAC828713B3B008A0E2F /* konami_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D76028713552008A0E2F /* konami_intf.cpp */; }; + B3B3DAC928713B3B008A0E2F /* nec_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6BA28713552008A0E2F /* nec_intf.cpp */; }; + B3B3DACA28713B3B008A0E2F /* mips3_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D69C28713551008A0E2F /* mips3_intf.cpp */; }; + B3B3DACB28713B3B008A0E2F /* tms34_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D73028713552008A0E2F /* tms34_intf.cpp */; }; + B3B3DACC28713B3B008A0E2F /* m6800_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D69628713551008A0E2F /* m6800_intf.cpp */; }; + B3B3DACD28713B3B008A0E2F /* pic16c5x_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6B028713552008A0E2F /* pic16c5x_intf.cpp */; }; + B3B3DACE28713B3B008A0E2F /* tms34010_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6A128713551008A0E2F /* tms34010_intf.cpp */; }; + B3B3DACF28713B3B008A0E2F /* adsp2100_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D74C28713552008A0E2F /* adsp2100_intf.cpp */; }; + B3B3DAD028713B3B008A0E2F /* arm_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6D228713552008A0E2F /* arm_intf.cpp */; }; + B3B3DAD128713B3B008A0E2F /* arm7_intf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D76228713552008A0E2F /* arm7_intf.cpp */; }; + B3B3DAD228713B7B008A0E2F /* d_msx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3C42871354F008A0E2F /* d_msx.cpp */; }; + B3B3DAD328713B9E008A0E2F /* neo_upd4990a.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3D02871354F008A0E2F /* neo_upd4990a.cpp */; }; + B3B3DAD428713B9E008A0E2F /* neo_palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3CD2871354F008A0E2F /* neo_palette.cpp */; }; + B3B3DAD528713B9E008A0E2F /* neo_decrypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3C72871354F008A0E2F /* neo_decrypt.cpp */; }; + B3B3DAD628713B9E008A0E2F /* neo_text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3CA2871354F008A0E2F /* neo_text.cpp */; }; + B3B3DAD728713B9E008A0E2F /* d_neogeo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3CE2871354F008A0E2F /* d_neogeo.cpp */; }; + B3B3DAD828713B9E008A0E2F /* neo_run.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3CF2871354F008A0E2F /* neo_run.cpp */; }; + B3B3DAD928713B9E008A0E2F /* neogeo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3CC2871354F008A0E2F /* neogeo.cpp */; }; + B3B3DADB28713BFA008A0E2F /* pce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3472871354E008A0E2F /* pce.cpp */; }; + B3B3DADC28713BFA008A0E2F /* d_sg1000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3C02871354F008A0E2F /* d_sg1000.cpp */; }; + B3B3DADD28713BFA008A0E2F /* d_pce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3482871354E008A0E2F /* d_pce.cpp */; }; + B3B3DADE28713BFA008A0E2F /* d_nes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D21F2871354E008A0E2F /* d_nes.cpp */; }; + B3B3DADF28713BFA008A0E2F /* d_spectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3F62871354F008A0E2F /* d_spectrum.cpp */; }; + B3B3DAE028713C21008A0E2F /* d_channelf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D4762871354F008A0E2F /* d_channelf.cpp */; }; + B3B3DAE128713C21008A0E2F /* d_coleco.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3C22871354F008A0E2F /* d_coleco.cpp */; }; + B3B3DAE228713C21008A0E2F /* cps3snd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3F32871354F008A0E2F /* cps3snd.cpp */; }; + B3B3DAE328713C21008A0E2F /* d_cps3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3F12871354F008A0E2F /* d_cps3.cpp */; }; + B3B3DAE428713C21008A0E2F /* cps3run.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3F42871354F008A0E2F /* cps3run.cpp */; }; + B3B3DAE528713C2A008A0E2F /* d_galaxian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3132871354E008A0E2F /* d_galaxian.cpp */; }; + B3B3DAE628713C2A008A0E2F /* gal_gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3142871354E008A0E2F /* gal_gfx.cpp */; }; + B3B3DAE728713C2A008A0E2F /* gal_sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3172871354E008A0E2F /* gal_sound.cpp */; }; + B3B3DAE828713C2A008A0E2F /* gal_run.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3182871354E008A0E2F /* gal_run.cpp */; }; + B3B3DAE928713C2A008A0E2F /* gal_stars.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3152871354E008A0E2F /* gal_stars.cpp */; }; + B3B3DAF828713C52008A0E2F /* stm95.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D21B2871354E008A0E2F /* stm95.cpp */; }; + B3B3DAF928713C52008A0E2F /* megadrive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D21C2871354E008A0E2F /* megadrive.cpp */; }; + B3B3DAFA28713C52008A0E2F /* mdeeprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2192871354E008A0E2F /* mdeeprom.cpp */; }; + B3B3DAFB28713C52008A0E2F /* d_mdarcbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2172871354E008A0E2F /* d_mdarcbl.cpp */; }; + B3B3DAFC28713C52008A0E2F /* d_megadrive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D21A2871354E008A0E2F /* d_megadrive.cpp */; }; + B3B3DAFD28713C77008A0E2F /* d_bishi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3632871354E008A0E2F /* d_bishi.cpp */; }; + B3B3DAFE28713C77008A0E2F /* d_combatsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D34B2871354E008A0E2F /* d_combatsc.cpp */; }; + B3B3DAFF28713C77008A0E2F /* d_gberet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D38E2871354F008A0E2F /* d_gberet.cpp */; }; + B3B3DB0028713C77008A0E2F /* d_junofrst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3772871354F008A0E2F /* d_junofrst.cpp */; }; + B3B3DB0128713C77008A0E2F /* d_88games.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3572871354E008A0E2F /* d_88games.cpp */; }; + B3B3DB0228713C77008A0E2F /* d_kontest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D37A2871354F008A0E2F /* d_kontest.cpp */; }; + B3B3DB0328713C77008A0E2F /* d_lethal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D39A2871354F008A0E2F /* d_lethal.cpp */; }; + B3B3DB0428713C77008A0E2F /* d_rockrage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3822871354F008A0E2F /* d_rockrage.cpp */; }; + B3B3DB0528713C77008A0E2F /* d_bladestl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3592871354E008A0E2F /* d_bladestl.cpp */; }; + B3B3DB0628713C77008A0E2F /* d_mainevt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D36C2871354E008A0E2F /* d_mainevt.cpp */; }; + B3B3DB0728713C77008A0E2F /* d_thunderx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D38B2871354F008A0E2F /* d_thunderx.cpp */; }; + B3B3DB0828713C77008A0E2F /* d_tmnt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D34C2871354E008A0E2F /* d_tmnt.cpp */; }; + B3B3DB0928713C77008A0E2F /* d_jackal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3832871354F008A0E2F /* d_jackal.cpp */; }; + B3B3DB0A28713C77008A0E2F /* k051733.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D35C2871354E008A0E2F /* k051733.cpp */; }; + B3B3DB0B28713C77008A0E2F /* d_simpsons.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3852871354F008A0E2F /* d_simpsons.cpp */; }; + B3B3DB0C28713C77008A0E2F /* d_tp84.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3502871354E008A0E2F /* d_tp84.cpp */; }; + B3B3DB0D28713C77008A0E2F /* k053247.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3602871354E008A0E2F /* k053247.cpp */; }; + B3B3DB0E28713C77008A0E2F /* k053250.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3692871354E008A0E2F /* k053250.cpp */; }; + B3B3DB0F28713C77008A0E2F /* k053251.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3682871354E008A0E2F /* k053251.cpp */; }; + B3B3DB1028713C77008A0E2F /* k054000.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D34F2871354E008A0E2F /* k054000.cpp */; }; + B3B3DB1128713C77008A0E2F /* d_gradius3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D38C2871354F008A0E2F /* d_gradius3.cpp */; }; + B3B3DB1228713C77008A0E2F /* d_xexex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D36D2871354E008A0E2F /* d_xexex.cpp */; }; + B3B3DB1328713C77008A0E2F /* k055555.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D35D2871354E008A0E2F /* k055555.cpp */; }; + B3B3DB1428713C77008A0E2F /* konamigx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3712871354F008A0E2F /* konamigx.cpp */; }; + B3B3DB1528713C77008A0E2F /* d_mikie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D36F2871354E008A0E2F /* d_mikie.cpp */; }; + B3B3DB1628713C77008A0E2F /* d_rollerg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3902871354F008A0E2F /* d_rollerg.cpp */; }; + B3B3DB1728713C77008A0E2F /* d_ajax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3932871354F008A0E2F /* d_ajax.cpp */; }; + B3B3DB1828713C77008A0E2F /* d_crimfght.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D36B2871354E008A0E2F /* d_crimfght.cpp */; }; + B3B3DB1928713C77008A0E2F /* d_gijoe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3522871354E008A0E2F /* d_gijoe.cpp */; }; + B3B3DB1A28713C77008A0E2F /* d_mystwarr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D37B2871354F008A0E2F /* d_mystwarr.cpp */; }; + B3B3DB1B28713C77008A0E2F /* d_hexion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3892871354F008A0E2F /* d_hexion.cpp */; }; + B3B3DB1C28713C77008A0E2F /* k007342_k007420.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3562871354E008A0E2F /* k007342_k007420.cpp */; }; + B3B3DB1D28713C77008A0E2F /* k056832.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D35A2871354E008A0E2F /* k056832.cpp */; }; + B3B3DB1E28713C77008A0E2F /* d_fastlane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D35E2871354E008A0E2F /* d_fastlane.cpp */; }; + B3B3DB1F28713C77008A0E2F /* d_gyruss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3542871354E008A0E2F /* d_gyruss.cpp */; }; + B3B3DB2028713C77008A0E2F /* d_gbusters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3642871354E008A0E2F /* d_gbusters.cpp */; }; + B3B3DB2128713C77008A0E2F /* d_pingpong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D34E2871354E008A0E2F /* d_pingpong.cpp */; }; + B3B3DB2228713C77008A0E2F /* k052109.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D39C2871354F008A0E2F /* k052109.cpp */; }; + B3B3DB2328713C77008A0E2F /* d_battlnts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3992871354F008A0E2F /* d_battlnts.cpp */; }; + B3B3DB2428713C77008A0E2F /* d_nemesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D38F2871354F008A0E2F /* d_nemesis.cpp */; }; + B3B3DB2528713C77008A0E2F /* k007452.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3A22871354F008A0E2F /* k007452.cpp */; }; + B3B3DB2628713C77008A0E2F /* k051316.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3782871354F008A0E2F /* k051316.cpp */; }; + B3B3DB2728713C77008A0E2F /* d_scotrsht.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3552871354E008A0E2F /* d_scotrsht.cpp */; }; + B3B3DB2828713C77008A0E2F /* konamiic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D36A2871354E008A0E2F /* konamiic.cpp */; }; + B3B3DB2928713C77008A0E2F /* d_spy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3652871354E008A0E2F /* d_spy.cpp */; }; + B3B3DB2A28713C77008A0E2F /* d_labyrunr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D39F2871354F008A0E2F /* d_labyrunr.cpp */; }; + B3B3DB2B28713C77008A0E2F /* d_twin16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3702871354E008A0E2F /* d_twin16.cpp */; }; + B3B3DB2C28713C77008A0E2F /* d_ultraman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3982871354F008A0E2F /* d_ultraman.cpp */; }; + B3B3DB2D28713C77008A0E2F /* k053936.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3872871354F008A0E2F /* k053936.cpp */; }; + B3B3DB2E28713C77008A0E2F /* k054338.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3622871354E008A0E2F /* k054338.cpp */; }; + B3B3DB2F28713C77008A0E2F /* d_divebomb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D39D2871354F008A0E2F /* d_divebomb.cpp */; }; + B3B3DB3028713C77008A0E2F /* d_bottom9.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3972871354F008A0E2F /* d_bottom9.cpp */; }; + B3B3DB3128713C77008A0E2F /* d_moo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3722871354F008A0E2F /* d_moo.cpp */; }; + B3B3DB3228713C77008A0E2F /* d_trackfld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3762871354F008A0E2F /* d_trackfld.cpp */; }; + B3B3DB3328713C77008A0E2F /* d_surpratk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3662871354E008A0E2F /* d_surpratk.cpp */; }; + B3B3DB3428713C77008A0E2F /* d_dbz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3942871354F008A0E2F /* d_dbz.cpp */; }; + B3B3DB3528713C78008A0E2F /* d_hyperspt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3612871354E008A0E2F /* d_hyperspt.cpp */; }; + B3B3DB3628713C78008A0E2F /* d_pandoras.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D37F2871354F008A0E2F /* d_pandoras.cpp */; }; + B3B3DB3728713C78008A0E2F /* d_xmen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D38A2871354F008A0E2F /* d_xmen.cpp */; }; + B3B3DB3828713C78008A0E2F /* d_parodius.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D37C2871354F008A0E2F /* d_parodius.cpp */; }; + B3B3DB3928713C78008A0E2F /* d_yiear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3582871354E008A0E2F /* d_yiear.cpp */; }; + B3B3DB3A28713C78008A0E2F /* d_wecleman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3842871354F008A0E2F /* d_wecleman.cpp */; }; + B3B3DB3B28713C78008A0E2F /* timeplt_snd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D34D2871354E008A0E2F /* timeplt_snd.cpp */; }; + B3B3DB3C28713C78008A0E2F /* d_circusc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3512871354E008A0E2F /* d_circusc.cpp */; }; + B3B3DB3D28713C78008A0E2F /* d_megazone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3952871354F008A0E2F /* d_megazone.cpp */; }; + B3B3DB3E28713C78008A0E2F /* k053245.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3672871354E008A0E2F /* k053245.cpp */; }; + B3B3DB3F28713C78008A0E2F /* k051960.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D34A2871354E008A0E2F /* k051960.cpp */; }; + B3B3DB4028713C78008A0E2F /* d_ddribble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3752871354F008A0E2F /* d_ddribble.cpp */; }; + B3B3DB4128713C78008A0E2F /* d_tutankhm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3862871354F008A0E2F /* d_tutankhm.cpp */; }; + B3B3DB4228713C78008A0E2F /* d_contra.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3792871354F008A0E2F /* d_contra.cpp */; }; + B3B3DB4328713C78008A0E2F /* d_timeplt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D37D2871354F008A0E2F /* d_timeplt.cpp */; }; + B3B3DB4428713C78008A0E2F /* d_rocnrope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3732871354F008A0E2F /* d_rocnrope.cpp */; }; + B3B3DB4528713C78008A0E2F /* d_chqflag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3912871354F008A0E2F /* d_chqflag.cpp */; }; + B3B3DB4628713C78008A0E2F /* d_mogura.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D39E2871354F008A0E2F /* d_mogura.cpp */; }; + B3B3DB4728713C78008A0E2F /* d_asterix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3962871354F008A0E2F /* d_asterix.cpp */; }; + B3B3DB4828713C78008A0E2F /* d_ironhors.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3532871354E008A0E2F /* d_ironhors.cpp */; }; + B3B3DB4928713C78008A0E2F /* d_vendetta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3882871354F008A0E2F /* d_vendetta.cpp */; }; + B3B3DB4A28713C78008A0E2F /* d_sbasketb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3802871354F008A0E2F /* d_sbasketb.cpp */; }; + B3B3DB4B28713C78008A0E2F /* k007121.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D39B2871354F008A0E2F /* k007121.cpp */; }; + B3B3DB4C28713C78008A0E2F /* d_finalzr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D36E2871354E008A0E2F /* d_finalzr.cpp */; }; + B3B3DB4D28713C78008A0E2F /* d_pooyan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D35F2871354E008A0E2F /* d_pooyan.cpp */; }; + B3B3DB4E28713C78008A0E2F /* d_aliens.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3A42871354F008A0E2F /* d_aliens.cpp */; }; + B3B3DB4F28713C78008A0E2F /* d_blockhl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3922871354F008A0E2F /* d_blockhl.cpp */; }; + B3B3DB5028713C78008A0E2F /* d_flkatck.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3A32871354F008A0E2F /* d_flkatck.cpp */; }; + B3B3DB5128713C78008A0E2F /* d_jailbrek.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3812871354F008A0E2F /* d_jailbrek.cpp */; }; + B3B3DB5228713C78008A0E2F /* d_shaolins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D35B2871354E008A0E2F /* d_shaolins.cpp */; }; + B3B3DB5328713C78008A0E2F /* d_hcastle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3A52871354F008A0E2F /* d_hcastle.cpp */; }; + B3B3DB5428713C89008A0E2F /* d_m57.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D22D2871354E008A0E2F /* d_m57.cpp */; }; + B3B3DB5528713C89008A0E2F /* d_m72.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2262871354E008A0E2F /* d_m72.cpp */; }; + B3B3DB5628713C89008A0E2F /* d_m107.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2232871354E008A0E2F /* d_m107.cpp */; }; + B3B3DB5728713C89008A0E2F /* irem_cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D22E2871354E008A0E2F /* irem_cpu.cpp */; }; + B3B3DB5828713C89008A0E2F /* irem_sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2212871354E008A0E2F /* irem_sound.cpp */; }; + B3B3DB5928713C89008A0E2F /* d_m63.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2272871354E008A0E2F /* d_m63.cpp */; }; + B3B3DB5A28713C89008A0E2F /* d_m52.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D22C2871354E008A0E2F /* d_m52.cpp */; }; + B3B3DB5B28713C89008A0E2F /* d_m62.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2282871354E008A0E2F /* d_m62.cpp */; }; + B3B3DB5C28713C89008A0E2F /* d_m90.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D22B2871354E008A0E2F /* d_m90.cpp */; }; + B3B3DB5D28713C89008A0E2F /* d_m58.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2242871354E008A0E2F /* d_m58.cpp */; }; + B3B3DB5E28713C89008A0E2F /* d_m92.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D22A2871354E008A0E2F /* d_m92.cpp */; }; + B3B3DB5F28713C89008A0E2F /* d_vigilant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2292871354E008A0E2F /* d_vigilant.cpp */; }; + B3B3DB6028713C9D008A0E2F /* d_chanbara.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3332871354E008A0E2F /* d_chanbara.cpp */; }; + B3B3DB6128713C9D008A0E2F /* d_liberate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D32E2871354E008A0E2F /* d_liberate.cpp */; }; + B3B3DB6228713C9D008A0E2F /* d_actfancr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3292871354E008A0E2F /* d_actfancr.cpp */; }; + B3B3DB6328713C9D008A0E2F /* d_boogwing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D32D2871354E008A0E2F /* d_boogwing.cpp */; }; + B3B3DB6428713C9D008A0E2F /* d_bwing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3422871354E008A0E2F /* d_bwing.cpp */; }; + B3B3DB6528713C9D008A0E2F /* d_rohga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D33D2871354E008A0E2F /* d_rohga.cpp */; }; + B3B3DB6628713C9D008A0E2F /* d_dreambal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3272871354E008A0E2F /* d_dreambal.cpp */; }; + B3B3DB6728713C9D008A0E2F /* decobac06.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D33C2871354E008A0E2F /* decobac06.cpp */; }; + B3B3DB6828713C9D008A0E2F /* d_lemmings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3382871354E008A0E2F /* d_lemmings.cpp */; }; + B3B3DB6928713C9D008A0E2F /* d_vaportra.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D33A2871354E008A0E2F /* d_vaportra.cpp */; }; + B3B3DB6A28713C9D008A0E2F /* d_darkseal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3362871354E008A0E2F /* d_darkseal.cpp */; }; + B3B3DB6B28713C9D008A0E2F /* d_decocass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3442871354E008A0E2F /* d_decocass.cpp */; }; + B3B3DB6C28713C9D008A0E2F /* deco16ic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3392871354E008A0E2F /* deco16ic.cpp */; }; + B3B3DB6D28713C9D008A0E2F /* d_funkyjet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3342871354E008A0E2F /* d_funkyjet.cpp */; }; + B3B3DB6E28713C9D008A0E2F /* d_karnov.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D31E2871354E008A0E2F /* d_karnov.cpp */; }; + B3B3DB6F28713C9D008A0E2F /* d_dietgogo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3222871354E008A0E2F /* d_dietgogo.cpp */; }; + B3B3DB7028713C9D008A0E2F /* deco146.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3212871354E008A0E2F /* deco146.cpp */; }; + B3B3DB7128713C9D008A0E2F /* d_brkthru.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D33B2871354E008A0E2F /* d_brkthru.cpp */; }; + B3B3DB7228713C9D008A0E2F /* d_cninja.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D31C2871354E008A0E2F /* d_cninja.cpp */; }; + B3B3DB7328713C9D008A0E2F /* d_metlclsh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3412871354E008A0E2F /* d_metlclsh.cpp */; }; + B3B3DB7428713C9D008A0E2F /* d_backfire.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3282871354E008A0E2F /* d_backfire.cpp */; }; + B3B3DB7528713C9D008A0E2F /* d_supbtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D31F2871354E008A0E2F /* d_supbtime.cpp */; }; + B3B3DB7628713C9D008A0E2F /* d_sidepckt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D33E2871354E008A0E2F /* d_sidepckt.cpp */; }; + B3B3DB7728713C9D008A0E2F /* d_simpl156.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D31A2871354E008A0E2F /* d_simpl156.cpp */; }; + B3B3DB7828713C9D008A0E2F /* d_tumblep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3242871354E008A0E2F /* d_tumblep.cpp */; }; + B3B3DB7928713C9D008A0E2F /* d_dblewing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D32A2871354E008A0E2F /* d_dblewing.cpp */; }; + B3B3DB7A28713C9E008A0E2F /* d_sshangha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3312871354E008A0E2F /* d_sshangha.cpp */; }; + B3B3DB7B28713C9E008A0E2F /* d_dec8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D32C2871354E008A0E2F /* d_dec8.cpp */; }; + B3B3DB7C28713C9E008A0E2F /* d_stadhero.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D31B2871354E008A0E2F /* d_stadhero.cpp */; }; + B3B3DB7D28713C9E008A0E2F /* d_dec0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3372871354E008A0E2F /* d_dec0.cpp */; }; + B3B3DB7E28713C9E008A0E2F /* d_decomlc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3432871354E008A0E2F /* d_decomlc.cpp */; }; + B3B3DB7F28713C9E008A0E2F /* d_deco32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3402871354E008A0E2F /* d_deco32.cpp */; }; + B3B3DB8028713C9E008A0E2F /* d_kchamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3202871354E008A0E2F /* d_kchamp.cpp */; }; + B3B3DB8128713C9E008A0E2F /* d_cbuster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3262871354E008A0E2F /* d_cbuster.cpp */; }; + B3B3DB8228713C9E008A0E2F /* d_pktgaldx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3322871354E008A0E2F /* d_pktgaldx.cpp */; }; + B3B3DB8328713C9E008A0E2F /* d_progolf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3352871354E008A0E2F /* d_progolf.cpp */; }; + B3B3DB8428713C9E008A0E2F /* d_shootout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3232871354E008A0E2F /* d_shootout.cpp */; }; + B3B3DB8528713C9E008A0E2F /* d_pcktgal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D32B2871354E008A0E2F /* d_pcktgal.cpp */; }; + B3B3DB8628713C9E008A0E2F /* d_dassault.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D32F2871354E008A0E2F /* d_dassault.cpp */; }; + B3B3DB8728713C9E008A0E2F /* d_deco156.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D3302871354E008A0E2F /* d_deco156.cpp */; }; + B3B3DBB428713CE3008A0E2F /* d_vindictr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2622871354E008A0E2F /* d_vindictr.cpp */; }; + B3B3DBB528713CE3008A0E2F /* d_shuuz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2692871354E008A0E2F /* d_shuuz.cpp */; }; + B3B3DBB628713CE3008A0E2F /* d_toobin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D25F2871354E008A0E2F /* d_toobin.cpp */; }; + B3B3DBB728713CE3008A0E2F /* d_badlands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D26E2871354E008A0E2F /* d_badlands.cpp */; }; + B3B3DBB828713CE3008A0E2F /* d_batman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2662871354E008A0E2F /* d_batman.cpp */; }; + B3B3DBB928713CE3008A0E2F /* d_eprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2652871354E008A0E2F /* d_eprom.cpp */; }; + B3B3DBBA28713CE3008A0E2F /* d_akkaarrh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D25B2871354E008A0E2F /* d_akkaarrh.cpp */; }; + B3B3DBBB28713CE3008A0E2F /* d_offtwall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2602871354E008A0E2F /* d_offtwall.cpp */; }; + B3B3DBBC28713CE3008A0E2F /* d_klax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D26A2871354E008A0E2F /* d_klax.cpp */; }; + B3B3DBBD28713CE3008A0E2F /* d_atarig1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D25D2871354E008A0E2F /* d_atarig1.cpp */; }; + B3B3DBBE28713CE3008A0E2F /* d_gauntlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D26C2871354E008A0E2F /* d_gauntlet.cpp */; }; + B3B3DBBF28713CE3008A0E2F /* d_blstroid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D25E2871354E008A0E2F /* d_blstroid.cpp */; }; + B3B3DBC128713CE3008A0E2F /* d_rampart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2612871354E008A0E2F /* d_rampart.cpp */; }; + B3B3DBC228713CE3008A0E2F /* d_relief.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D26D2871354E008A0E2F /* d_relief.cpp */; }; + B3B3DBC328713CE3008A0E2F /* d_thunderj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2672871354E008A0E2F /* d_thunderj.cpp */; }; + B3B3DBC428713CE3008A0E2F /* d_xybots.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2632871354E008A0E2F /* d_xybots.cpp */; }; + B3B3DBC528713CE3008A0E2F /* d_missile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D26B2871354E008A0E2F /* d_missile.cpp */; }; + B3B3DBC628713CE3008A0E2F /* d_skullxbo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2682871354E008A0E2F /* d_skullxbo.cpp */; }; + B3B3DBCB28713EC0008A0E2F /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3B3DBCA28713D66008A0E2F /* Core.plist */; }; + B3B3DDDE2871410F008A0E2F /* d_arcadecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D2642871354E008A0E2F /* d_arcadecl.cpp */; }; + B3B3DDE428714430008A0E2F /* m6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6DB28713552008A0E2F /* m6502.cpp */; }; + B3B3DDE528714491008A0E2F /* upd7810.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D79B28713552008A0E2F /* upd7810.cpp */; }; + B3B3DDE628714491008A0E2F /* e132xs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D7A428713552008A0E2F /* e132xs.cpp */; }; + B3B3DDE728714491008A0E2F /* i8039.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6E128713552008A0E2F /* i8039.cpp */; }; + B3B3DDE828714491008A0E2F /* arm7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D76D28713552008A0E2F /* arm7.cpp */; }; + B3B3DDE928714491008A0E2F /* h6280.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6BF28713552008A0E2F /* h6280.cpp */; }; + B3B3DDEA28714491008A0E2F /* tlcs900.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6E628713552008A0E2F /* tlcs900.cpp */; }; + B3B3DDEB28714491008A0E2F /* f8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D78C28713552008A0E2F /* f8.cpp */; }; + B3B3DDEC28714491008A0E2F /* nec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D75728713552008A0E2F /* nec.cpp */; }; + B3B3DDED28714491008A0E2F /* v60.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D77D28713552008A0E2F /* v60.cpp */; }; + B3B3DDEE28714491008A0E2F /* s2650.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D78F28713552008A0E2F /* s2650.cpp */; }; + B3B3DDEF28714491008A0E2F /* mcs51.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D79428713552008A0E2F /* mcs51.cpp */; }; + B3B3DDF028714491008A0E2F /* z80ctc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6B428713552008A0E2F /* z80ctc.cpp */; }; + B3B3DDF128714491008A0E2F /* m6805.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D69928713551008A0E2F /* m6805.cpp */; }; + B3B3DDF228714491008A0E2F /* cop0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D71628713552008A0E2F /* cop0.cpp */; }; + B3B3DDF328714491008A0E2F /* z80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6B528713552008A0E2F /* z80.cpp */; }; + B3B3DDF428714491008A0E2F /* v25.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D75428713552008A0E2F /* v25.cpp */; }; + B3B3DDF628714491008A0E2F /* m6800.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D72228713552008A0E2F /* m6800.cpp */; }; + B3B3DDF728714491008A0E2F /* arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D78428713552008A0E2F /* arm.cpp */; }; + B3B3DDF828714491008A0E2F /* cop1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D71528713552008A0E2F /* cop1.cpp */; }; + B3B3DDF928714491008A0E2F /* hd6309.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D78628713552008A0E2F /* hd6309.cpp */; }; + B3B3DDFA28714491008A0E2F /* z80pio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6B228713552008A0E2F /* z80pio.cpp */; }; + B3B3DDFC28714491008A0E2F /* z80daisy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6B828713552008A0E2F /* z80daisy.cpp */; }; + B3B3DDFD28714491008A0E2F /* z180.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D74628713552008A0E2F /* z180.cpp */; }; + B3B3DDFE28714491008A0E2F /* i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6CB28713552008A0E2F /* i386.cpp */; }; + B3B3DDFF28714491008A0E2F /* tms32010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D75028713552008A0E2F /* tms32010.cpp */; }; + B3B3DE0028714491008A0E2F /* tms34010_optable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6F528713552008A0E2F /* tms34010_optable.cpp */; }; + B3B3DE0128714491008A0E2F /* m37710.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D76528713552008A0E2F /* m37710.cpp */; }; + B3B3DE0228714491008A0E2F /* sh2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6A628713552008A0E2F /* sh2.cpp */; }; + B3B3DE0328714491008A0E2F /* tms34010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6AC28713552008A0E2F /* tms34010.cpp */; }; + B3B3DE0428714491008A0E2F /* adsp2100.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D73328713552008A0E2F /* adsp2100.cpp */; }; + B3B3DE0528714491008A0E2F /* konami.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D72B28713552008A0E2F /* konami.cpp */; }; + B3B3DE0628714491008A0E2F /* pic16c5x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D77128713552008A0E2F /* pic16c5x.cpp */; }; + B3B3DE0728714491008A0E2F /* tms34010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D6F428713552008A0E2F /* tms34010.cpp */; }; + B3B3DE0828714491008A0E2F /* 2100dasm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D73528713552008A0E2F /* 2100dasm.cpp */; }; + B3B3DE0A28714491008A0E2F /* upd7725.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D73D28713552008A0E2F /* upd7725.cpp */; }; + B3B3DE0B28714491008A0E2F /* mcs48.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D69428713551008A0E2F /* mcs48.cpp */; }; + B3B3DE0C28714491008A0E2F /* m6809.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D72928713552008A0E2F /* m6809.cpp */; }; + B3B3DE0D28714491008A0E2F /* mips3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D71028713552008A0E2F /* mips3.cpp */; }; + B3B3DE0E28714491008A0E2F /* mips3_dasm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D71328713552008A0E2F /* mips3_dasm.cpp */; }; + B3B3DE0F28714491008A0E2F /* tlcs90.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D79928713552008A0E2F /* tlcs90.cpp */; }; + B3B3DE10287144D0008A0E2F /* libfbneo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libfbneo.a */; }; + B3B3DE13287144D0008A0E2F /* libfbneo-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libfbneo-libretro.a */; }; + B3B3DE162871456F008A0E2F /* burn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3B3D56428713550008A0E2F /* burn.cpp */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B3B3DA2228713555008A0E2F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3B3D1842871354D008A0E2F /* Emulator.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FE1B108D235615940065200C; + remoteInfo = Emulator; + }; + B3B3DE11287144D0008A0E2F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B30178D2207C901D0051B93D; + remoteInfo = "fbneo-iOS"; + }; + B3B3DE14287144D0008A0E2F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "fbneo-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libfbneo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libfbneo.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B32296AE287835FB00585AD8 /* neo_sprite_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = neo_sprite_func.h; sourceTree = ""; }; + B32296AF287835FB00585AD8 /* neo_sprite_func_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = neo_sprite_func_table.h; sourceTree = ""; }; + B32296B0287835FB00585AD8 /* toa_gp9001_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = toa_gp9001_func.h; sourceTree = ""; }; + B32296B1287835FB00585AD8 /* m68kops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kops.c; sourceTree = ""; }; + B32296B2287835FB00585AD8 /* driverlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = driverlist.h; sourceTree = ""; }; + B32296B3287835FB00585AD8 /* psikyo_tile_func_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psikyo_tile_func_table.h; sourceTree = ""; }; + B32296B4287835FB00585AD8 /* psikyo_tile_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psikyo_tile_func.h; sourceTree = ""; }; + B32296B5287835FB00585AD8 /* cave_tile_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave_tile_func.h; sourceTree = ""; }; + B32296B6287835FB00585AD8 /* driverlist copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "driverlist copy.h"; sourceTree = ""; }; + B32296B7287835FB00585AD8 /* cave_sprite_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave_sprite_func.h; sourceTree = ""; }; + B32296B8287835FB00585AD8 /* cave_sprite_func_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave_sprite_func_table.h; sourceTree = ""; }; + B32296B9287835FB00585AD8 /* toa_gp9001_func_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = toa_gp9001_func_table.h; sourceTree = ""; }; + B32296BA287835FB00585AD8 /* pgm_sprite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgm_sprite.h; sourceTree = ""; }; + B32296BB287835FB00585AD8 /* ctv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctv.h; sourceTree = ""; }; + B32296BC287835FB00585AD8 /* cave_tile_func_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave_tile_func_table.h; sourceTree = ""; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libfbneo-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfbneo-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B3D1782871354D008A0E2F /* appveyor.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = appveyor.yml.ignore; sourceTree = ""; }; + B3B3D1792871354D008A0E2F /* makefile.sdl */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.sdl; sourceTree = ""; }; + B3B3D17A2871354D008A0E2F /* README-macOS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-macOS.md"; sourceTree = ""; }; + B3B3D17B2871354D008A0E2F /* makefile.mingw */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.mingw; sourceTree = ""; }; + B3B3D17C2871354D008A0E2F /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B3B3D17D2871354D008A0E2F /* README-PI.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-PI.md"; sourceTree = ""; }; + B3B3D17E2871354D008A0E2F /* makefile.mamemingw */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.mamemingw; sourceTree = ""; }; + B3B3D17F2871354D008A0E2F /* makefile.pi */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.pi; sourceTree = ""; }; + B3B3D1802871354D008A0E2F /* makefile.vc */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.vc; sourceTree = ""; }; + B3B3D1812871354D008A0E2F /* makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = ""; }; + B3B3D1842871354D008A0E2F /* Emulator.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = Emulator.xcodeproj; sourceTree = ""; }; + B3B3D1872871354D008A0E2F /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; + B3B3D1892871354D008A0E2F /* License.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = License.rtf; sourceTree = ""; }; + B3B3D18B2871354D008A0E2F /* Defaults.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Defaults.plist; sourceTree = ""; }; + B3B3D18C2871354D008A0E2F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + B3B3D18D2871354D008A0E2F /* FinalBurnNeo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = FinalBurnNeo.entitlements; sourceTree = ""; }; + B3B3D18E2871354D008A0E2F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B3B3D1902871354D008A0E2F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LogViewer.xib; sourceTree = ""; }; + B3B3D1922871354D008A0E2F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Launcher.xib; sourceTree = ""; }; + B3B3D1942871354D008A0E2F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Preferences.xib; sourceTree = ""; }; + B3B3D1962871354D008A0E2F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/About.xib; sourceTree = ""; }; + B3B3D1982871354D008A0E2F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + B3B3D19A2871354D008A0E2F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Emulator.xib; sourceTree = ""; }; + B3B3D19B2871354D008A0E2F /* FinalBurn NeoDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "FinalBurn NeoDebug.entitlements"; sourceTree = ""; }; + B3B3D19C2871354D008A0E2F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B3B3D19D2871354D008A0E2F /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + B3B3D19E2871354D008A0E2F /* dsa_pub.pem */ = {isa = PBXFileReference; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = ""; }; + B3B3D1A02871354D008A0E2F /* FBPreferencesController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBPreferencesController.h; sourceTree = ""; }; + B3B3D1A12871354D008A0E2F /* FBLauncherController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBLauncherController.m; sourceTree = ""; }; + B3B3D1A22871354D008A0E2F /* FBLogViewerController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBLogViewerController.h; sourceTree = ""; }; + B3B3D1A32871354D008A0E2F /* NSWindowController+Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSWindowController+Core.h"; sourceTree = ""; }; + B3B3D1A42871354D008A0E2F /* FBEmulatorController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBEmulatorController.h; sourceTree = ""; }; + B3B3D1A52871354D008A0E2F /* FBAboutController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBAboutController.m; sourceTree = ""; }; + B3B3D1A62871354D008A0E2F /* FBPreferencesController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FBPreferencesController.mm; sourceTree = ""; }; + B3B3D1A72871354D008A0E2F /* FBLauncherController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBLauncherController.h; sourceTree = ""; }; + B3B3D1A82871354D008A0E2F /* NSWindowController+Core.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSWindowController+Core.m"; sourceTree = ""; }; + B3B3D1A92871354D008A0E2F /* FBLogViewerController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBLogViewerController.m; sourceTree = ""; }; + B3B3D1AA2871354D008A0E2F /* FBAboutController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBAboutController.h; sourceTree = ""; }; + B3B3D1AB2871354D008A0E2F /* FBEmulatorController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBEmulatorController.m; sourceTree = ""; }; + B3B3D1AD2871354D008A0E2F /* FBJoyCaptureView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBJoyCaptureView.h; sourceTree = ""; }; + B3B3D1AE2871354D008A0E2F /* FBRomSetStatusAsNSImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBRomSetStatusAsNSImage.m; sourceTree = ""; }; + B3B3D1AF2871354D008A0E2F /* AKCaptureFieldCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AKCaptureFieldCell.m; sourceTree = ""; }; + B3B3D1B02871354D008A0E2F /* FBScreenView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBScreenView.h; sourceTree = ""; }; + B3B3D1B12871354D008A0E2F /* FBScreenView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FBScreenView.mm; sourceTree = ""; }; + B3B3D1B22871354D008A0E2F /* FBDropFileScrollView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBDropFileScrollView.m; sourceTree = ""; }; + B3B3D1B32871354D008A0E2F /* FBJoyCaptureView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBJoyCaptureView.m; sourceTree = ""; }; + B3B3D1B42871354D008A0E2F /* AKCaptureFieldCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AKCaptureFieldCell.h; sourceTree = ""; }; + B3B3D1B52871354D008A0E2F /* FBRomSetStatusAsNSImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBRomSetStatusAsNSImage.h; sourceTree = ""; }; + B3B3D1B62871354D008A0E2F /* FBDropFileScrollView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBDropFileScrollView.h; sourceTree = ""; }; + B3B3D1B72871354D008A0E2F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3B3D1B92871354D008A0E2F /* fba_vs2010.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = fba_vs2010.sln; sourceTree = ""; }; + B3B3D1BA2871354D008A0E2F /* fba_vs2010.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010.vcxproj; sourceTree = ""; }; + B3B3D1BB2871354D008A0E2F /* fba_vs2010.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010.vcxproj.filters; sourceTree = ""; }; + B3B3D1BC2871354D008A0E2F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3B3D1BE2871354D008A0E2F /* fba_vs2010.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010.vcxproj; sourceTree = ""; }; + B3B3D1BF2871354D008A0E2F /* fba_vs2010.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010.vcxproj.filters; sourceTree = ""; }; + B3B3D1C02871354D008A0E2F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3B3D1C12871354D008A0E2F /* building.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = building.txt; sourceTree = ""; }; + B3B3D1C22871354D008A0E2F /* fba_vs2019.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = fba_vs2019.sln; sourceTree = ""; }; + B3B3D1C42871354D008A0E2F /* fba_qt.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = fba_qt.pro; sourceTree = ""; }; + B3B3D1C52871354D008A0E2F /* fba_sdl.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = fba_sdl.pro; sourceTree = ""; }; + B3B3D1C72871354D008A0E2F /* fba_vs2010.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010.vcxproj; sourceTree = ""; }; + B3B3D1C82871354D008A0E2F /* fba_vs2015.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = fba_vs2015.sln; sourceTree = ""; }; + B3B3D1C92871354D008A0E2F /* fba_vs2010.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010.vcxproj.filters; sourceTree = ""; }; + B3B3D1CA2871354D008A0E2F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3B3D1CB2871354D008A0E2F /* building.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = building.txt; sourceTree = ""; }; + B3B3D1CD2871354D008A0E2F /* fba_vs2010_libretro_360.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = fba_vs2010_libretro_360.sln; sourceTree = ""; }; + B3B3D1CE2871354D008A0E2F /* fba_vs2010_libretro_360.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010_libretro_360.vcxproj.filters; sourceTree = ""; }; + B3B3D1CF2871354D008A0E2F /* fba_vs2010_libretro_360.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2010_libretro_360.vcxproj; sourceTree = ""; }; + B3B3D1D12871354D008A0E2F /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3B3D1D22871354D008A0E2F /* fba_vs2003_libretro_xbox1.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = fba_vs2003_libretro_xbox1.sln; sourceTree = ""; }; + B3B3D1D32871354D008A0E2F /* fba_vs2003_libretro_xbox1.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fba_vs2003_libretro_xbox1.vcproj; sourceTree = ""; }; + B3B3D1D42871354D008A0E2F /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3B3D1D52871354D008A0E2F /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3B3D1D62871354D008A0E2F /* whatsnew.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = whatsnew.html; sourceTree = ""; }; + B3B3D1D72871354D008A0E2F /* .editorconfig */ = {isa = PBXFileReference; lastKnownFileType = text; path = .editorconfig; sourceTree = ""; }; + B3B3D1D82871354D008A0E2F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3B3D1D92871354D008A0E2F /* makefile.burn_rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.burn_rules; sourceTree = ""; }; + B3B3D1DA2871354D008A0E2F /* README-SDL.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-SDL.md"; sourceTree = ""; }; + B3B3D1DB2871354D008A0E2F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3B3D1DE2871354D008A0E2F /* macos.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = macos.yml.ignore; sourceTree = ""; }; + B3B3D1DF2871354D008A0E2F /* vs2019-x64.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = "vs2019-x64.yml.ignore"; sourceTree = ""; }; + B3B3D1E02871354D008A0E2F /* vs2019-win32.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = "vs2019-win32.yml.ignore"; sourceTree = ""; }; + B3B3D1E12871354D008A0E2F /* sdl1.2.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdl1.2.yml.ignore; sourceTree = ""; }; + B3B3D1E22871354D008A0E2F /* code.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = code.yml.ignore; sourceTree = ""; }; + B3B3D1E32871354D008A0E2F /* nightly-release.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "nightly-release.yml"; sourceTree = ""; }; + B3B3D1E42871354D008A0E2F /* sdl2.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdl2.yml.ignore; sourceTree = ""; }; + B3B3D1E52871354D008A0E2F /* mingw-win32.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = "mingw-win32.yml.ignore"; sourceTree = ""; }; + B3B3D1E62871354D008A0E2F /* AutoBuild.yml.ignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = AutoBuild.yml.ignore; sourceTree = ""; }; + B3B3D1E82871354D008A0E2F /* bug_report.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = bug_report.md; sourceTree = ""; }; + B3B3D1EA2871354D008A0E2F /* dialog_multislot.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_multislot.htm; sourceTree = ""; }; + B3B3D1EB2871354D008A0E2F /* intro.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = intro.htm; sourceTree = ""; }; + B3B3D1EC2871354D008A0E2F /* acknowledgments.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = acknowledgments.htm; sourceTree = ""; }; + B3B3D1ED2871354D008A0E2F /* dialog_choose_monitor.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_choose_monitor.htm; sourceTree = ""; }; + B3B3D1EE2871354D008A0E2F /* Table of Contents.hhc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Table of Contents.hhc"; sourceTree = ""; }; + B3B3D1EF2871354D008A0E2F /* dialog_shot_factory.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_shot_factory.htm; sourceTree = ""; }; + B3B3D1F02871354D008A0E2F /* dialog_rom_paths.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_rom_paths.htm; sourceTree = ""; }; + B3B3D1F22871354D008A0E2F /* tv not found.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "tv not found.ico"; sourceTree = ""; }; + B3B3D1F32871354D008A0E2F /* misc.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = misc.bmp; sourceTree = ""; }; + B3B3D1F42871354D008A0E2F /* tv not working.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "tv not working.ico"; sourceTree = ""; }; + B3B3D1F52871354D008A0E2F /* tv not found non essential.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "tv not found non essential.ico"; sourceTree = ""; }; + B3B3D1F62871354D008A0E2F /* dialog_neocdz.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_neocdz.htm; sourceTree = ""; }; + B3B3D1F72871354D008A0E2F /* dialog_inputs.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_inputs.htm; sourceTree = ""; }; + B3B3D1F82871354D008A0E2F /* dialog_ips_manager.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_ips_manager.htm; sourceTree = ""; }; + B3B3D1F92871354D008A0E2F /* keys.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = keys.htm; sourceTree = ""; }; + B3B3D1FA2871354D008A0E2F /* fbneo.hhp */ = {isa = PBXFileReference; lastKnownFileType = text; path = fbneo.hhp; sourceTree = ""; }; + B3B3D1FB2871354D008A0E2F /* menu_game.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = menu_game.htm; sourceTree = ""; }; + B3B3D1FC2871354D008A0E2F /* localise_app.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = localise_app.htm; sourceTree = ""; }; + B3B3D1FD2871354D008A0E2F /* fbneo.hhk */ = {isa = PBXFileReference; lastKnownFileType = text; path = fbneo.hhk; sourceTree = ""; }; + B3B3D1FE2871354D008A0E2F /* dialog_game_info.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_game_info.htm; sourceTree = ""; }; + B3B3D1FF2871354D008A0E2F /* cheat_format.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = cheat_format.htm; sourceTree = ""; }; + B3B3D2002871354D008A0E2F /* dialog_game_select.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_game_select.htm; sourceTree = ""; }; + B3B3D2012871354D008A0E2F /* menu_misc.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = menu_misc.htm; sourceTree = ""; }; + B3B3D2022871354D008A0E2F /* menu_input.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = menu_input.htm; sourceTree = ""; }; + B3B3D2032871354D008A0E2F /* fbneo.chm */ = {isa = PBXFileReference; lastKnownFileType = file; path = fbneo.chm; sourceTree = ""; }; + B3B3D2042871354D008A0E2F /* menu_video.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = menu_video.htm; sourceTree = ""; }; + B3B3D2052871354D008A0E2F /* dialog_dips.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_dips.htm; sourceTree = ""; }; + B3B3D2062871354D008A0E2F /* presets.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = presets.htm; sourceTree = ""; }; + B3B3D2072871354D008A0E2F /* command.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = command.htm; sourceTree = ""; }; + B3B3D2082871354D008A0E2F /* dialog_cheats.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_cheats.htm; sourceTree = ""; }; + B3B3D2092871354D008A0E2F /* menu_audio.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = menu_audio.htm; sourceTree = ""; }; + B3B3D20A2871354D008A0E2F /* dialog_support_path.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_support_path.htm; sourceTree = ""; }; + B3B3D20B2871354D008A0E2F /* menu_help.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = menu_help.htm; sourceTree = ""; }; + B3B3D20C2871354D008A0E2F /* localise_gamelist.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = localise_gamelist.htm; sourceTree = ""; }; + B3B3D20D2871354D008A0E2F /* dialog_palette_viewer.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dialog_palette_viewer.htm; sourceTree = ""; }; + B3B3D20E2871354D008A0E2F /* sysreq.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = sysreq.htm; sourceTree = ""; }; + B3B3D20F2871354D008A0E2F /* makefile.sdl2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.sdl2; sourceTree = ""; }; + B3B3D2102871354D008A0E2F /* fba.chm */ = {isa = PBXFileReference; lastKnownFileType = file; path = fba.chm; sourceTree = ""; }; + B3B3D2112871354D008A0E2F /* makefile.burner_win32_rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.burner_win32_rules; sourceTree = ""; }; + B3B3D2142871354D008A0E2F /* burn_led.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_led.cpp; sourceTree = ""; }; + B3B3D2172871354E008A0E2F /* d_mdarcbl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mdarcbl.cpp; sourceTree = ""; }; + B3B3D2182871354E008A0E2F /* megadrive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = megadrive.h; sourceTree = ""; }; + B3B3D2192871354E008A0E2F /* mdeeprom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mdeeprom.cpp; sourceTree = ""; }; + B3B3D21A2871354E008A0E2F /* d_megadrive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_megadrive.cpp; sourceTree = ""; }; + B3B3D21B2871354E008A0E2F /* stm95.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stm95.cpp; sourceTree = ""; }; + B3B3D21C2871354E008A0E2F /* megadrive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = megadrive.cpp; sourceTree = ""; }; + B3B3D21D2871354E008A0E2F /* mdeeprom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdeeprom.h; sourceTree = ""; }; + B3B3D21F2871354E008A0E2F /* d_nes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_nes.cpp; sourceTree = ""; }; + B3B3D2212871354E008A0E2F /* irem_sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = irem_sound.cpp; sourceTree = ""; }; + B3B3D2222871354E008A0E2F /* irem_sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = irem_sound.h; sourceTree = ""; }; + B3B3D2232871354E008A0E2F /* d_m107.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m107.cpp; sourceTree = ""; }; + B3B3D2242871354E008A0E2F /* d_m58.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m58.cpp; sourceTree = ""; }; + B3B3D2252871354E008A0E2F /* irem_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = irem_cpu.h; sourceTree = ""; }; + B3B3D2262871354E008A0E2F /* d_m72.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m72.cpp; sourceTree = ""; }; + B3B3D2272871354E008A0E2F /* d_m63.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m63.cpp; sourceTree = ""; }; + B3B3D2282871354E008A0E2F /* d_m62.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m62.cpp; sourceTree = ""; }; + B3B3D2292871354E008A0E2F /* d_vigilant.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vigilant.cpp; sourceTree = ""; }; + B3B3D22A2871354E008A0E2F /* d_m92.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m92.cpp; sourceTree = ""; }; + B3B3D22B2871354E008A0E2F /* d_m90.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m90.cpp; sourceTree = ""; }; + B3B3D22C2871354E008A0E2F /* d_m52.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m52.cpp; sourceTree = ""; }; + B3B3D22D2871354E008A0E2F /* d_m57.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_m57.cpp; sourceTree = ""; }; + B3B3D22E2871354E008A0E2F /* irem_cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = irem_cpu.cpp; sourceTree = ""; }; + B3B3D2302871354E008A0E2F /* smsshared.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smsshared.h; sourceTree = ""; }; + B3B3D2312871354E008A0E2F /* d_sms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sms.cpp; sourceTree = ""; }; + B3B3D2322871354E008A0E2F /* smsfmintf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smsfmintf.cpp; sourceTree = ""; }; + B3B3D2332871354E008A0E2F /* smssound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smssound.cpp; sourceTree = ""; }; + B3B3D2342871354E008A0E2F /* smssystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smssystem.cpp; sourceTree = ""; }; + B3B3D2352871354E008A0E2F /* sms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sms.h; sourceTree = ""; }; + B3B3D2362871354E008A0E2F /* smspio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smspio.h; sourceTree = ""; }; + B3B3D2372871354E008A0E2F /* smssound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smssound.h; sourceTree = ""; }; + B3B3D2382871354E008A0E2F /* smstms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smstms.h; sourceTree = ""; }; + B3B3D2392871354E008A0E2F /* smsvdp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smsvdp.cpp; sourceTree = ""; }; + B3B3D23A2871354E008A0E2F /* smsfmintf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smsfmintf.h; sourceTree = ""; }; + B3B3D23B2871354E008A0E2F /* smsrender.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smsrender.cpp; sourceTree = ""; }; + B3B3D23C2871354E008A0E2F /* smspio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smspio.cpp; sourceTree = ""; }; + B3B3D23D2871354E008A0E2F /* smsvdp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smsvdp.h; sourceTree = ""; }; + B3B3D23E2871354E008A0E2F /* smshvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smshvc.h; sourceTree = ""; }; + B3B3D23F2871354E008A0E2F /* smssystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smssystem.h; sourceTree = ""; }; + B3B3D2402871354E008A0E2F /* smstms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = smstms.cpp; sourceTree = ""; }; + B3B3D2412871354E008A0E2F /* smsrender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smsrender.h; sourceTree = ""; }; + B3B3D2422871354E008A0E2F /* sms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sms.cpp; sourceTree = ""; }; + B3B3D2442871354E008A0E2F /* d_feversos.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_feversos.cpp; sourceTree = ""; }; + B3B3D2452871354E008A0E2F /* cave_sprite_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave_sprite_render.h; sourceTree = ""; }; + B3B3D2462871354E008A0E2F /* cave_sprite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cave_sprite.cpp; sourceTree = ""; }; + B3B3D2472871354E008A0E2F /* d_metmqstr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_metmqstr.cpp; sourceTree = ""; }; + B3B3D2482871354E008A0E2F /* d_esprade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_esprade.cpp; sourceTree = ""; }; + B3B3D2492871354E008A0E2F /* cave_palette.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cave_palette.cpp; sourceTree = ""; }; + B3B3D24A2871354E008A0E2F /* cave.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cave.cpp; sourceTree = ""; }; + B3B3D24B2871354E008A0E2F /* d_korokoro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_korokoro.cpp; sourceTree = ""; }; + B3B3D24C2871354E008A0E2F /* d_dodonpachi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dodonpachi.cpp; sourceTree = ""; }; + B3B3D24D2871354E008A0E2F /* d_mazinger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mazinger.cpp; sourceTree = ""; }; + B3B3D24E2871354E008A0E2F /* cave_tile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cave_tile.cpp; sourceTree = ""; }; + B3B3D24F2871354E008A0E2F /* d_gaia.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gaia.cpp; sourceTree = ""; }; + B3B3D2502871354E008A0E2F /* cave_tile_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave_tile_render.h; sourceTree = ""; }; + B3B3D2512871354E008A0E2F /* d_donpachi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_donpachi.cpp; sourceTree = ""; }; + B3B3D2522871354E008A0E2F /* d_uopoko.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_uopoko.cpp; sourceTree = ""; }; + B3B3D2532871354E008A0E2F /* d_pwrinst2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pwrinst2.cpp; sourceTree = ""; }; + B3B3D2542871354E008A0E2F /* d_guwange.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_guwange.cpp; sourceTree = ""; }; + B3B3D2552871354E008A0E2F /* d_hotdogst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hotdogst.cpp; sourceTree = ""; }; + B3B3D2562871354E008A0E2F /* cave_sprite_render_zoom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave_sprite_render_zoom.h; sourceTree = ""; }; + B3B3D2572871354E008A0E2F /* cave.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cave.h; sourceTree = ""; }; + B3B3D2582871354E008A0E2F /* d_tjumpman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tjumpman.cpp; sourceTree = ""; }; + B3B3D2592871354E008A0E2F /* d_sailormn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sailormn.cpp; sourceTree = ""; }; + B3B3D25B2871354E008A0E2F /* d_akkaarrh.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_akkaarrh.cpp; sourceTree = ""; }; + B3B3D25C2871354E008A0E2F /* WHATSNEW.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = WHATSNEW.txt; sourceTree = ""; }; + B3B3D25D2871354E008A0E2F /* d_atarig1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_atarig1.cpp; sourceTree = ""; }; + B3B3D25E2871354E008A0E2F /* d_blstroid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blstroid.cpp; sourceTree = ""; }; + B3B3D25F2871354E008A0E2F /* d_toobin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_toobin.cpp; sourceTree = ""; }; + B3B3D2602871354E008A0E2F /* d_offtwall.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_offtwall.cpp; sourceTree = ""; }; + B3B3D2612871354E008A0E2F /* d_rampart.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rampart.cpp; sourceTree = ""; }; + B3B3D2622871354E008A0E2F /* d_vindictr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vindictr.cpp; sourceTree = ""; }; + B3B3D2632871354E008A0E2F /* d_xybots.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xybots.cpp; sourceTree = ""; }; + B3B3D2642871354E008A0E2F /* d_arcadecl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_arcadecl.cpp; sourceTree = ""; }; + B3B3D2652871354E008A0E2F /* d_eprom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_eprom.cpp; sourceTree = ""; }; + B3B3D2662871354E008A0E2F /* d_batman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_batman.cpp; sourceTree = ""; }; + B3B3D2672871354E008A0E2F /* d_thunderj.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_thunderj.cpp; sourceTree = ""; }; + B3B3D2682871354E008A0E2F /* d_skullxbo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_skullxbo.cpp; sourceTree = ""; }; + B3B3D2692871354E008A0E2F /* d_shuuz.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shuuz.cpp; sourceTree = ""; }; + B3B3D26A2871354E008A0E2F /* d_klax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_klax.cpp; sourceTree = ""; }; + B3B3D26B2871354E008A0E2F /* d_missile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_missile.cpp; sourceTree = ""; }; + B3B3D26C2871354E008A0E2F /* d_gauntlet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gauntlet.cpp; sourceTree = ""; }; + B3B3D26D2871354E008A0E2F /* d_relief.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_relief.cpp; sourceTree = ""; }; + B3B3D26E2871354E008A0E2F /* d_badlands.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_badlands.cpp; sourceTree = ""; }; + B3B3D26F2871354E008A0E2F /* d_parent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_parent.cpp; sourceTree = ""; }; + B3B3D2712871354E008A0E2F /* d_esd16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_esd16.cpp; sourceTree = ""; }; + B3B3D2722871354E008A0E2F /* d_suna16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_suna16.cpp; sourceTree = ""; }; + B3B3D2732871354E008A0E2F /* d_funybubl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_funybubl.cpp; sourceTree = ""; }; + B3B3D2742871354E008A0E2F /* d_ohmygod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ohmygod.cpp; sourceTree = ""; }; + B3B3D2752871354E008A0E2F /* d_fuukifg2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_fuukifg2.cpp; sourceTree = ""; }; + B3B3D2762871354E008A0E2F /* d_seibuspi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_seibuspi.cpp; sourceTree = ""; }; + B3B3D2772871354E008A0E2F /* d_diverboy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_diverboy.cpp; sourceTree = ""; }; + B3B3D2782871354E008A0E2F /* d_fuukifg3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_fuukifg3.cpp; sourceTree = ""; }; + B3B3D2792871354E008A0E2F /* d_kickgoal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kickgoal.cpp; sourceTree = ""; }; + B3B3D27A2871354E008A0E2F /* d_pass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pass.cpp; sourceTree = ""; }; + B3B3D27B2871354E008A0E2F /* d_tumbleb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tumbleb.cpp; sourceTree = ""; }; + B3B3D27C2871354E008A0E2F /* d_suprnova.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_suprnova.cpp; sourceTree = ""; }; + B3B3D27D2871354E008A0E2F /* d_gaelco.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gaelco.cpp; sourceTree = ""; }; + B3B3D27E2871354E008A0E2F /* d_deniam.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_deniam.cpp; sourceTree = ""; }; + B3B3D27F2871354E008A0E2F /* d_lordgun.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lordgun.cpp; sourceTree = ""; }; + B3B3D2802871354E008A0E2F /* d_playmark.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_playmark.cpp; sourceTree = ""; }; + B3B3D2812871354E008A0E2F /* d_cultures.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cultures.cpp; sourceTree = ""; }; + B3B3D2822871354E008A0E2F /* d_speedspn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_speedspn.cpp; sourceTree = ""; }; + B3B3D2832871354E008A0E2F /* d_namconb1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_namconb1.cpp; sourceTree = ""; }; + B3B3D2842871354E008A0E2F /* d_aerofgt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_aerofgt.cpp; sourceTree = ""; }; + B3B3D2852871354E008A0E2F /* d_20pacgal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_20pacgal.cpp; sourceTree = ""; }; + B3B3D2862871354E008A0E2F /* d_mwarr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mwarr.cpp; sourceTree = ""; }; + B3B3D2872871354E008A0E2F /* d_f-32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "d_f-32.cpp"; sourceTree = ""; }; + B3B3D2882871354E008A0E2F /* d_shadfrce.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shadfrce.cpp; sourceTree = ""; }; + B3B3D2892871354E008A0E2F /* d_pipedrm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pipedrm.cpp; sourceTree = ""; }; + B3B3D28A2871354E008A0E2F /* d_powerins.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_powerins.cpp; sourceTree = ""; }; + B3B3D28B2871354E008A0E2F /* d_crospang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_crospang.cpp; sourceTree = ""; }; + B3B3D28C2871354E008A0E2F /* d_yunsun16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_yunsun16.cpp; sourceTree = ""; }; + B3B3D28D2871354E008A0E2F /* d_crshrace.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_crshrace.cpp; sourceTree = ""; }; + B3B3D28E2871354E008A0E2F /* d_aquarium.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_aquarium.cpp; sourceTree = ""; }; + B3B3D28F2871354E008A0E2F /* d_gstream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gstream.cpp; sourceTree = ""; }; + B3B3D2902871354E008A0E2F /* d_galspnbl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_galspnbl.cpp; sourceTree = ""; }; + B3B3D2912871354E008A0E2F /* d_ssv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ssv.cpp; sourceTree = ""; }; + B3B3D2922871354E008A0E2F /* d_raiden2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_raiden2.cpp; sourceTree = ""; }; + B3B3D2932871354E008A0E2F /* d_go2000.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_go2000.cpp; sourceTree = ""; }; + B3B3D2942871354E008A0E2F /* d_onetwo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_onetwo.cpp; sourceTree = ""; }; + B3B3D2952871354E008A0E2F /* d_dreamwld.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dreamwld.cpp; sourceTree = ""; }; + B3B3D2962871354E008A0E2F /* d_targeth.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_targeth.cpp; sourceTree = ""; }; + B3B3D2972871354E008A0E2F /* d_mirage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mirage.cpp; sourceTree = ""; }; + B3B3D2982871354E008A0E2F /* d_metro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_metro.cpp; sourceTree = ""; }; + B3B3D2992871354E008A0E2F /* d_galpani3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_galpani3.cpp; sourceTree = ""; }; + B3B3D29A2871354E008A0E2F /* d_silkroad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_silkroad.cpp; sourceTree = ""; }; + B3B3D29B2871354E008A0E2F /* d_3x3puzzl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_3x3puzzl.cpp; sourceTree = ""; }; + B3B3D29C2871354E008A0E2F /* d_midas.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_midas.cpp; sourceTree = ""; }; + B3B3D29D2871354E008A0E2F /* d_drtomy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_drtomy.cpp; sourceTree = ""; }; + B3B3D29E2871354E008A0E2F /* d_eolith16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_eolith16.cpp; sourceTree = ""; }; + B3B3D29F2871354E008A0E2F /* d_artmagic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_artmagic.cpp; sourceTree = ""; }; + B3B3D2A02871354E008A0E2F /* d_dcon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dcon.cpp; sourceTree = ""; }; + B3B3D2A12871354E008A0E2F /* d_itech32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_itech32.cpp; sourceTree = ""; }; + B3B3D2A22871354E008A0E2F /* d_eolith.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_eolith.cpp; sourceTree = ""; }; + B3B3D2A32871354E008A0E2F /* d_xorworld.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xorworld.cpp; sourceTree = ""; }; + B3B3D2A42871354E008A0E2F /* d_silvmil.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_silvmil.cpp; sourceTree = ""; }; + B3B3D2A52871354E008A0E2F /* d_wwfwfest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wwfwfest.cpp; sourceTree = ""; }; + B3B3D2A62871354E008A0E2F /* d_goori.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_goori.cpp; sourceTree = ""; }; + B3B3D2A72871354E008A0E2F /* d_drgnmst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_drgnmst.cpp; sourceTree = ""; }; + B3B3D2A82871354E008A0E2F /* d_ngp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ngp.cpp; sourceTree = ""; }; + B3B3D2A92871354E008A0E2F /* d_limenko.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_limenko.cpp; sourceTree = ""; }; + B3B3D2AA2871354E008A0E2F /* d_cischeat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cischeat.cpp; sourceTree = ""; }; + B3B3D2AB2871354E008A0E2F /* d_shangha3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shangha3.cpp; sourceTree = ""; }; + B3B3D2AC2871354E008A0E2F /* d_gotcha.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gotcha.cpp; sourceTree = ""; }; + B3B3D2AD2871354E008A0E2F /* d_1945kiii.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_1945kiii.cpp; sourceTree = ""; }; + B3B3D2AE2871354E008A0E2F /* d_galpanic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_galpanic.cpp; sourceTree = ""; }; + B3B3D2AF2871354E008A0E2F /* d_tecmo16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tecmo16.cpp; sourceTree = ""; }; + B3B3D2B02871354E008A0E2F /* d_airbustr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_airbustr.cpp; sourceTree = ""; }; + B3B3D2B12871354E008A0E2F /* d_macrossp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_macrossp.cpp; sourceTree = ""; }; + B3B3D2B22871354E008A0E2F /* d_pkscram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pkscram.cpp; sourceTree = ""; }; + B3B3D2B32871354E008A0E2F /* d_inufuku.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_inufuku.cpp; sourceTree = ""; }; + B3B3D2B42871354E008A0E2F /* d_sandscrp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sandscrp.cpp; sourceTree = ""; }; + B3B3D2B52871354E008A0E2F /* d_supduck.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_supduck.cpp; sourceTree = ""; }; + B3B3D2B62871354E008A0E2F /* d_mcatadv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mcatadv.cpp; sourceTree = ""; }; + B3B3D2B72871354E008A0E2F /* d_egghunt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_egghunt.cpp; sourceTree = ""; }; + B3B3D2B82871354E008A0E2F /* d_bloodbro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bloodbro.cpp; sourceTree = ""; }; + B3B3D2B92871354E008A0E2F /* d_oneshot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_oneshot.cpp; sourceTree = ""; }; + B3B3D2BA2871354E008A0E2F /* d_tetrisp2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tetrisp2.cpp; sourceTree = ""; }; + B3B3D2BB2871354E008A0E2F /* d_raiden.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_raiden.cpp; sourceTree = ""; }; + B3B3D2BC2871354E008A0E2F /* d_mugsmash.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mugsmash.cpp; sourceTree = ""; }; + B3B3D2BD2871354E008A0E2F /* d_nmk16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_nmk16.cpp; sourceTree = ""; }; + B3B3D2BE2871354E008A0E2F /* d_powerbal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_powerbal.cpp; sourceTree = ""; }; + B3B3D2BF2871354E008A0E2F /* d_hyperpac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hyperpac.cpp; sourceTree = ""; }; + B3B3D2C02871354E008A0E2F /* d_kaneko16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kaneko16.cpp; sourceTree = ""; }; + B3B3D2C12871354E008A0E2F /* d_mosaic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mosaic.cpp; sourceTree = ""; }; + B3B3D2C22871354E008A0E2F /* kanekotb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kanekotb.h; sourceTree = ""; }; + B3B3D2C32871354E008A0E2F /* d_rabbit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rabbit.cpp; sourceTree = ""; }; + B3B3D2C42871354E008A0E2F /* d_discoboy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_discoboy.cpp; sourceTree = ""; }; + B3B3D2C52871354E008A0E2F /* d_seta2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_seta2.cpp; sourceTree = ""; }; + B3B3D2C62871354E008A0E2F /* d_ms32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ms32.cpp; sourceTree = ""; }; + B3B3D2C72871354E008A0E2F /* d_vmetal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vmetal.cpp; sourceTree = ""; }; + B3B3D2C82871354E008A0E2F /* d_legionna.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_legionna.cpp; sourceTree = ""; }; + B3B3D2C92871354E008A0E2F /* d_pasha2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pasha2.cpp; sourceTree = ""; }; + B3B3D2CA2871354E008A0E2F /* d_nmg5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_nmg5.cpp; sourceTree = ""; }; + B3B3D2CB2871354E008A0E2F /* d_namcos2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_namcos2.cpp; sourceTree = ""; }; + B3B3D2CC2871354E008A0E2F /* d_x2222.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_x2222.cpp; sourceTree = ""; }; + B3B3D2CD2871354E008A0E2F /* d_pushman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pushman.cpp; sourceTree = ""; }; + B3B3D2CE2871354E008A0E2F /* d_bestleag.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bestleag.cpp; sourceTree = ""; }; + B3B3D2CF2871354E008A0E2F /* d_btoads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_btoads.cpp; sourceTree = ""; }; + B3B3D2D02871354E008A0E2F /* d_f1gp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_f1gp.cpp; sourceTree = ""; }; + B3B3D2D12871354E008A0E2F /* d_jchan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_jchan.cpp; sourceTree = ""; }; + B3B3D2D22871354E008A0E2F /* d_pirates.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pirates.cpp; sourceTree = ""; }; + B3B3D2D32871354E008A0E2F /* d_taotaido.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taotaido.cpp; sourceTree = ""; }; + B3B3D2D42871354E008A0E2F /* d_tecmosys.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tecmosys.cpp; sourceTree = ""; }; + B3B3D2D52871354E008A0E2F /* d_patapata.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_patapata.cpp; sourceTree = ""; }; + B3B3D2D62871354E008A0E2F /* d_gaiden.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gaiden.cpp; sourceTree = ""; }; + B3B3D2D72871354E008A0E2F /* d_blmbycar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blmbycar.cpp; sourceTree = ""; }; + B3B3D2D82871354E008A0E2F /* d_ppmast93.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ppmast93.cpp; sourceTree = ""; }; + B3B3D2D92871354E008A0E2F /* d_gumbo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gumbo.cpp; sourceTree = ""; }; + B3B3D2DA2871354E008A0E2F /* d_ddragon3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ddragon3.cpp; sourceTree = ""; }; + B3B3D2DB2871354E008A0E2F /* d_gaelco2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gaelco2.cpp; sourceTree = ""; }; + B3B3D2DC2871354E008A0E2F /* d_bigstrkb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bigstrkb.cpp; sourceTree = ""; }; + B3B3D2DD2871354E008A0E2F /* d_seta.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_seta.cpp; sourceTree = ""; }; + B3B3D2DE2871354E008A0E2F /* d_hyprduel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hyprduel.cpp; sourceTree = ""; }; + B3B3D2DF2871354E008A0E2F /* d_namcona1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_namcona1.cpp; sourceTree = ""; }; + B3B3D2E02871354E008A0E2F /* d_dooyong.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dooyong.cpp; sourceTree = ""; }; + B3B3D2E12871354E008A0E2F /* d_vegaeo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vegaeo.cpp; sourceTree = ""; }; + B3B3D2E22871354E008A0E2F /* d_glass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_glass.cpp; sourceTree = ""; }; + B3B3D2E32871354E008A0E2F /* d_blackt96.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blackt96.cpp; sourceTree = ""; }; + B3B3D2E42871354E008A0E2F /* d_thoop2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_thoop2.cpp; sourceTree = ""; }; + B3B3D2E52871354E008A0E2F /* d_news.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_news.cpp; sourceTree = ""; }; + B3B3D2E62871354E008A0E2F /* d_zerozone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_zerozone.cpp; sourceTree = ""; }; + B3B3D2E72871354E008A0E2F /* d_vamphalf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vamphalf.cpp; sourceTree = ""; }; + B3B3D2E82871354E008A0E2F /* d_missb2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_missb2.cpp; sourceTree = ""; }; + B3B3D2E92871354E008A0E2F /* d_wrally.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wrally.cpp; sourceTree = ""; }; + B3B3D2EA2871354E008A0E2F /* d_unico.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_unico.cpp; sourceTree = ""; }; + B3B3D2EB2871354E008A0E2F /* d_yunsung8.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_yunsung8.cpp; sourceTree = ""; }; + B3B3D2EC2871354E008A0E2F /* d_welltris.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_welltris.cpp; sourceTree = ""; }; + B3B3D2EE2871354E008A0E2F /* d_bankp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bankp.cpp; sourceTree = ""; }; + B3B3D2EF2871354E008A0E2F /* d_xbrd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xbrd.cpp; sourceTree = ""; }; + B3B3D2F02871354E008A0E2F /* d_sys18.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sys18.cpp; sourceTree = ""; }; + B3B3D2F12871354E008A0E2F /* d_sys24.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sys24.cpp; sourceTree = ""; }; + B3B3D2F22871354E008A0E2F /* sega_315_5195.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sega_315_5195.cpp; sourceTree = ""; }; + B3B3D2F32871354E008A0E2F /* mc8123.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mc8123.cpp; sourceTree = ""; }; + B3B3D2F42871354E008A0E2F /* usb_snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = usb_snd.cpp; sourceTree = ""; }; + B3B3D2F52871354E008A0E2F /* d_dotrikun.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dotrikun.cpp; sourceTree = ""; }; + B3B3D2F62871354E008A0E2F /* genesis_vid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = genesis_vid.cpp; sourceTree = ""; }; + B3B3D2F72871354E008A0E2F /* fd1094_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fd1094_intf.cpp; sourceTree = ""; }; + B3B3D2F82871354E008A0E2F /* sys16_fd1094.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sys16_fd1094.cpp; sourceTree = ""; }; + B3B3D2F92871354E008A0E2F /* d_turbo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_turbo.cpp; sourceTree = ""; }; + B3B3D2FA2871354E008A0E2F /* d_segas32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_segas32.cpp; sourceTree = ""; }; + B3B3D2FB2871354E008A0E2F /* fd1094.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fd1094.h; sourceTree = ""; }; + B3B3D2FC2871354E008A0E2F /* fd1094.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fd1094.cpp; sourceTree = ""; }; + B3B3D2FD2871354E008A0E2F /* sys16_run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sys16_run.cpp; sourceTree = ""; }; + B3B3D2FE2871354E008A0E2F /* d_segae.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_segae.cpp; sourceTree = ""; }; + B3B3D2FF2871354E008A0E2F /* mc8123.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mc8123.h; sourceTree = ""; }; + B3B3D3002871354E008A0E2F /* d_segag80v.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_segag80v.cpp; sourceTree = ""; }; + B3B3D3012871354E008A0E2F /* d_segac2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_segac2.cpp; sourceTree = ""; }; + B3B3D3022871354E008A0E2F /* d_ybrd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ybrd.cpp; sourceTree = ""; }; + B3B3D3032871354E008A0E2F /* fd1089.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fd1089.cpp; sourceTree = ""; }; + B3B3D3042871354E008A0E2F /* d_appoooh.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_appoooh.cpp; sourceTree = ""; }; + B3B3D3052871354E008A0E2F /* d_hangon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hangon.cpp; sourceTree = ""; }; + B3B3D3062871354E008A0E2F /* genesis_vid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = genesis_vid.h; sourceTree = ""; }; + B3B3D3072871354E008A0E2F /* d_sys16a.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sys16a.cpp; sourceTree = ""; }; + B3B3D3082871354E008A0E2F /* d_suprloco.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_suprloco.cpp; sourceTree = ""; }; + B3B3D3092871354E008A0E2F /* d_outrun.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_outrun.cpp; sourceTree = ""; }; + B3B3D30A2871354E008A0E2F /* d_sys16b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sys16b.cpp; sourceTree = ""; }; + B3B3D30B2871354E008A0E2F /* d_angelkds.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_angelkds.cpp; sourceTree = ""; }; + B3B3D30C2871354E008A0E2F /* fd1094_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fd1094_intf.h; sourceTree = ""; }; + B3B3D30D2871354E008A0E2F /* sys16_gfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sys16_gfx.cpp; sourceTree = ""; }; + B3B3D30E2871354E008A0E2F /* d_sys1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sys1.cpp; sourceTree = ""; }; + B3B3D30F2871354E008A0E2F /* sys16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sys16.h; sourceTree = ""; }; + B3B3D3102871354E008A0E2F /* usb_snd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = usb_snd.h; sourceTree = ""; }; + B3B3D3112871354E008A0E2F /* d_zaxxon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_zaxxon.cpp; sourceTree = ""; }; + B3B3D3132871354E008A0E2F /* d_galaxian.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_galaxian.cpp; sourceTree = ""; }; + B3B3D3142871354E008A0E2F /* gal_gfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gal_gfx.cpp; sourceTree = ""; }; + B3B3D3152871354E008A0E2F /* gal_stars.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gal_stars.cpp; sourceTree = ""; }; + B3B3D3162871354E008A0E2F /* gal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gal.h; sourceTree = ""; }; + B3B3D3172871354E008A0E2F /* gal_sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gal_sound.cpp; sourceTree = ""; }; + B3B3D3182871354E008A0E2F /* gal_run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gal_run.cpp; sourceTree = ""; }; + B3B3D31A2871354E008A0E2F /* d_simpl156.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_simpl156.cpp; sourceTree = ""; }; + B3B3D31B2871354E008A0E2F /* d_stadhero.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_stadhero.cpp; sourceTree = ""; }; + B3B3D31C2871354E008A0E2F /* d_cninja.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cninja.cpp; sourceTree = ""; }; + B3B3D31D2871354E008A0E2F /* deco146.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deco146.h; sourceTree = ""; }; + B3B3D31E2871354E008A0E2F /* d_karnov.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_karnov.cpp; sourceTree = ""; }; + B3B3D31F2871354E008A0E2F /* d_supbtime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_supbtime.cpp; sourceTree = ""; }; + B3B3D3202871354E008A0E2F /* d_kchamp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kchamp.cpp; sourceTree = ""; }; + B3B3D3212871354E008A0E2F /* deco146.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = deco146.cpp; sourceTree = ""; }; + B3B3D3222871354E008A0E2F /* d_dietgogo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dietgogo.cpp; sourceTree = ""; }; + B3B3D3232871354E008A0E2F /* d_shootout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shootout.cpp; sourceTree = ""; }; + B3B3D3242871354E008A0E2F /* d_tumblep.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tumblep.cpp; sourceTree = ""; }; + B3B3D3252871354E008A0E2F /* decobac06.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decobac06.h; sourceTree = ""; }; + B3B3D3262871354E008A0E2F /* d_cbuster.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cbuster.cpp; sourceTree = ""; }; + B3B3D3272871354E008A0E2F /* d_dreambal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dreambal.cpp; sourceTree = ""; }; + B3B3D3282871354E008A0E2F /* d_backfire.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_backfire.cpp; sourceTree = ""; }; + B3B3D3292871354E008A0E2F /* d_actfancr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_actfancr.cpp; sourceTree = ""; }; + B3B3D32A2871354E008A0E2F /* d_dblewing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dblewing.cpp; sourceTree = ""; }; + B3B3D32B2871354E008A0E2F /* d_pcktgal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pcktgal.cpp; sourceTree = ""; }; + B3B3D32C2871354E008A0E2F /* d_dec8.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dec8.cpp; sourceTree = ""; }; + B3B3D32D2871354E008A0E2F /* d_boogwing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_boogwing.cpp; sourceTree = ""; }; + B3B3D32E2871354E008A0E2F /* d_liberate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_liberate.cpp; sourceTree = ""; }; + B3B3D32F2871354E008A0E2F /* d_dassault.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dassault.cpp; sourceTree = ""; }; + B3B3D3302871354E008A0E2F /* d_deco156.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_deco156.cpp; sourceTree = ""; }; + B3B3D3312871354E008A0E2F /* d_sshangha.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sshangha.cpp; sourceTree = ""; }; + B3B3D3322871354E008A0E2F /* d_pktgaldx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pktgaldx.cpp; sourceTree = ""; }; + B3B3D3332871354E008A0E2F /* d_chanbara.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_chanbara.cpp; sourceTree = ""; }; + B3B3D3342871354E008A0E2F /* d_funkyjet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_funkyjet.cpp; sourceTree = ""; }; + B3B3D3352871354E008A0E2F /* d_progolf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_progolf.cpp; sourceTree = ""; }; + B3B3D3362871354E008A0E2F /* d_darkseal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_darkseal.cpp; sourceTree = ""; }; + B3B3D3372871354E008A0E2F /* d_dec0.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dec0.cpp; sourceTree = ""; }; + B3B3D3382871354E008A0E2F /* d_lemmings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lemmings.cpp; sourceTree = ""; }; + B3B3D3392871354E008A0E2F /* deco16ic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = deco16ic.cpp; sourceTree = ""; }; + B3B3D33A2871354E008A0E2F /* d_vaportra.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vaportra.cpp; sourceTree = ""; }; + B3B3D33B2871354E008A0E2F /* d_brkthru.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_brkthru.cpp; sourceTree = ""; }; + B3B3D33C2871354E008A0E2F /* decobac06.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decobac06.cpp; sourceTree = ""; }; + B3B3D33D2871354E008A0E2F /* d_rohga.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rohga.cpp; sourceTree = ""; }; + B3B3D33E2871354E008A0E2F /* d_sidepckt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sidepckt.cpp; sourceTree = ""; }; + B3B3D33F2871354E008A0E2F /* deco16ic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deco16ic.h; sourceTree = ""; }; + B3B3D3402871354E008A0E2F /* d_deco32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_deco32.cpp; sourceTree = ""; }; + B3B3D3412871354E008A0E2F /* d_metlclsh.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_metlclsh.cpp; sourceTree = ""; }; + B3B3D3422871354E008A0E2F /* d_bwing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bwing.cpp; sourceTree = ""; }; + B3B3D3432871354E008A0E2F /* d_decomlc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_decomlc.cpp; sourceTree = ""; }; + B3B3D3442871354E008A0E2F /* d_decocass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_decocass.cpp; sourceTree = ""; }; + B3B3D3462871354E008A0E2F /* pce.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pce.h; sourceTree = ""; }; + B3B3D3472871354E008A0E2F /* pce.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pce.cpp; sourceTree = ""; }; + B3B3D3482871354E008A0E2F /* d_pce.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pce.cpp; sourceTree = ""; }; + B3B3D34A2871354E008A0E2F /* k051960.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k051960.cpp; sourceTree = ""; }; + B3B3D34B2871354E008A0E2F /* d_combatsc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_combatsc.cpp; sourceTree = ""; }; + B3B3D34C2871354E008A0E2F /* d_tmnt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tmnt.cpp; sourceTree = ""; }; + B3B3D34D2871354E008A0E2F /* timeplt_snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timeplt_snd.cpp; sourceTree = ""; }; + B3B3D34E2871354E008A0E2F /* d_pingpong.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pingpong.cpp; sourceTree = ""; }; + B3B3D34F2871354E008A0E2F /* k054000.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k054000.cpp; sourceTree = ""; }; + B3B3D3502871354E008A0E2F /* d_tp84.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tp84.cpp; sourceTree = ""; }; + B3B3D3512871354E008A0E2F /* d_circusc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_circusc.cpp; sourceTree = ""; }; + B3B3D3522871354E008A0E2F /* d_gijoe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gijoe.cpp; sourceTree = ""; }; + B3B3D3532871354E008A0E2F /* d_ironhors.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ironhors.cpp; sourceTree = ""; }; + B3B3D3542871354E008A0E2F /* d_gyruss.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gyruss.cpp; sourceTree = ""; }; + B3B3D3552871354E008A0E2F /* d_scotrsht.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_scotrsht.cpp; sourceTree = ""; }; + B3B3D3562871354E008A0E2F /* k007342_k007420.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k007342_k007420.cpp; sourceTree = ""; }; + B3B3D3572871354E008A0E2F /* d_88games.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_88games.cpp; sourceTree = ""; }; + B3B3D3582871354E008A0E2F /* d_yiear.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_yiear.cpp; sourceTree = ""; }; + B3B3D3592871354E008A0E2F /* d_bladestl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bladestl.cpp; sourceTree = ""; }; + B3B3D35A2871354E008A0E2F /* k056832.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k056832.cpp; sourceTree = ""; }; + B3B3D35B2871354E008A0E2F /* d_shaolins.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shaolins.cpp; sourceTree = ""; }; + B3B3D35C2871354E008A0E2F /* k051733.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k051733.cpp; sourceTree = ""; }; + B3B3D35D2871354E008A0E2F /* k055555.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k055555.cpp; sourceTree = ""; }; + B3B3D35E2871354E008A0E2F /* d_fastlane.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_fastlane.cpp; sourceTree = ""; }; + B3B3D35F2871354E008A0E2F /* d_pooyan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pooyan.cpp; sourceTree = ""; }; + B3B3D3602871354E008A0E2F /* k053247.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k053247.cpp; sourceTree = ""; }; + B3B3D3612871354E008A0E2F /* d_hyperspt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hyperspt.cpp; sourceTree = ""; }; + B3B3D3622871354E008A0E2F /* k054338.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k054338.cpp; sourceTree = ""; }; + B3B3D3632871354E008A0E2F /* d_bishi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bishi.cpp; sourceTree = ""; }; + B3B3D3642871354E008A0E2F /* d_gbusters.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gbusters.cpp; sourceTree = ""; }; + B3B3D3652871354E008A0E2F /* d_spy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_spy.cpp; sourceTree = ""; }; + B3B3D3662871354E008A0E2F /* d_surpratk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_surpratk.cpp; sourceTree = ""; }; + B3B3D3672871354E008A0E2F /* k053245.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k053245.cpp; sourceTree = ""; }; + B3B3D3682871354E008A0E2F /* k053251.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k053251.cpp; sourceTree = ""; }; + B3B3D3692871354E008A0E2F /* k053250.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k053250.cpp; sourceTree = ""; }; + B3B3D36A2871354E008A0E2F /* konamiic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = konamiic.cpp; sourceTree = ""; }; + B3B3D36B2871354E008A0E2F /* d_crimfght.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_crimfght.cpp; sourceTree = ""; }; + B3B3D36C2871354E008A0E2F /* d_mainevt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mainevt.cpp; sourceTree = ""; }; + B3B3D36D2871354E008A0E2F /* d_xexex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xexex.cpp; sourceTree = ""; }; + B3B3D36E2871354E008A0E2F /* d_finalzr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_finalzr.cpp; sourceTree = ""; }; + B3B3D36F2871354E008A0E2F /* d_mikie.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mikie.cpp; sourceTree = ""; }; + B3B3D3702871354E008A0E2F /* d_twin16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_twin16.cpp; sourceTree = ""; }; + B3B3D3712871354F008A0E2F /* konamigx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = konamigx.cpp; sourceTree = ""; }; + B3B3D3722871354F008A0E2F /* d_moo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_moo.cpp; sourceTree = ""; }; + B3B3D3732871354F008A0E2F /* d_rocnrope.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rocnrope.cpp; sourceTree = ""; }; + B3B3D3742871354F008A0E2F /* k007452.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k007452.h; sourceTree = ""; }; + B3B3D3752871354F008A0E2F /* d_ddribble.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ddribble.cpp; sourceTree = ""; }; + B3B3D3762871354F008A0E2F /* d_trackfld.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_trackfld.cpp; sourceTree = ""; }; + B3B3D3772871354F008A0E2F /* d_junofrst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_junofrst.cpp; sourceTree = ""; }; + B3B3D3782871354F008A0E2F /* k051316.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k051316.cpp; sourceTree = ""; }; + B3B3D3792871354F008A0E2F /* d_contra.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_contra.cpp; sourceTree = ""; }; + B3B3D37A2871354F008A0E2F /* d_kontest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kontest.cpp; sourceTree = ""; }; + B3B3D37B2871354F008A0E2F /* d_mystwarr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mystwarr.cpp; sourceTree = ""; }; + B3B3D37C2871354F008A0E2F /* d_parodius.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_parodius.cpp; sourceTree = ""; }; + B3B3D37D2871354F008A0E2F /* d_timeplt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_timeplt.cpp; sourceTree = ""; }; + B3B3D37E2871354F008A0E2F /* k007342_k007420.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k007342_k007420.h; sourceTree = ""; }; + B3B3D37F2871354F008A0E2F /* d_pandoras.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pandoras.cpp; sourceTree = ""; }; + B3B3D3802871354F008A0E2F /* d_sbasketb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sbasketb.cpp; sourceTree = ""; }; + B3B3D3812871354F008A0E2F /* d_jailbrek.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_jailbrek.cpp; sourceTree = ""; }; + B3B3D3822871354F008A0E2F /* d_rockrage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rockrage.cpp; sourceTree = ""; }; + B3B3D3832871354F008A0E2F /* d_jackal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_jackal.cpp; sourceTree = ""; }; + B3B3D3842871354F008A0E2F /* d_wecleman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wecleman.cpp; sourceTree = ""; }; + B3B3D3852871354F008A0E2F /* d_simpsons.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_simpsons.cpp; sourceTree = ""; }; + B3B3D3862871354F008A0E2F /* d_tutankhm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tutankhm.cpp; sourceTree = ""; }; + B3B3D3872871354F008A0E2F /* k053936.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k053936.cpp; sourceTree = ""; }; + B3B3D3882871354F008A0E2F /* d_vendetta.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vendetta.cpp; sourceTree = ""; }; + B3B3D3892871354F008A0E2F /* d_hexion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hexion.cpp; sourceTree = ""; }; + B3B3D38A2871354F008A0E2F /* d_xmen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xmen.cpp; sourceTree = ""; }; + B3B3D38B2871354F008A0E2F /* d_thunderx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_thunderx.cpp; sourceTree = ""; }; + B3B3D38C2871354F008A0E2F /* d_gradius3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gradius3.cpp; sourceTree = ""; }; + B3B3D38D2871354F008A0E2F /* konamiic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = konamiic.h; sourceTree = ""; }; + B3B3D38E2871354F008A0E2F /* d_gberet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gberet.cpp; sourceTree = ""; }; + B3B3D38F2871354F008A0E2F /* d_nemesis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_nemesis.cpp; sourceTree = ""; }; + B3B3D3902871354F008A0E2F /* d_rollerg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rollerg.cpp; sourceTree = ""; }; + B3B3D3912871354F008A0E2F /* d_chqflag.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_chqflag.cpp; sourceTree = ""; }; + B3B3D3922871354F008A0E2F /* d_blockhl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blockhl.cpp; sourceTree = ""; }; + B3B3D3932871354F008A0E2F /* d_ajax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ajax.cpp; sourceTree = ""; }; + B3B3D3942871354F008A0E2F /* d_dbz.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dbz.cpp; sourceTree = ""; }; + B3B3D3952871354F008A0E2F /* d_megazone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_megazone.cpp; sourceTree = ""; }; + B3B3D3962871354F008A0E2F /* d_asterix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_asterix.cpp; sourceTree = ""; }; + B3B3D3972871354F008A0E2F /* d_bottom9.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bottom9.cpp; sourceTree = ""; }; + B3B3D3982871354F008A0E2F /* d_ultraman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ultraman.cpp; sourceTree = ""; }; + B3B3D3992871354F008A0E2F /* d_battlnts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_battlnts.cpp; sourceTree = ""; }; + B3B3D39A2871354F008A0E2F /* d_lethal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lethal.cpp; sourceTree = ""; }; + B3B3D39B2871354F008A0E2F /* k007121.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k007121.cpp; sourceTree = ""; }; + B3B3D39C2871354F008A0E2F /* k052109.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k052109.cpp; sourceTree = ""; }; + B3B3D39D2871354F008A0E2F /* d_divebomb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_divebomb.cpp; sourceTree = ""; }; + B3B3D39E2871354F008A0E2F /* d_mogura.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mogura.cpp; sourceTree = ""; }; + B3B3D39F2871354F008A0E2F /* d_labyrunr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_labyrunr.cpp; sourceTree = ""; }; + B3B3D3A02871354F008A0E2F /* k007121.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k007121.h; sourceTree = ""; }; + B3B3D3A12871354F008A0E2F /* timeplt_snd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timeplt_snd.h; sourceTree = ""; }; + B3B3D3A22871354F008A0E2F /* k007452.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k007452.cpp; sourceTree = ""; }; + B3B3D3A32871354F008A0E2F /* d_flkatck.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_flkatck.cpp; sourceTree = ""; }; + B3B3D3A42871354F008A0E2F /* d_aliens.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_aliens.cpp; sourceTree = ""; }; + B3B3D3A52871354F008A0E2F /* d_hcastle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hcastle.cpp; sourceTree = ""; }; + B3B3D3A72871354F008A0E2F /* ide.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ide.cpp; sourceTree = ""; }; + B3B3D3A82871354F008A0E2F /* yawdim_sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yawdim_sound.h; sourceTree = ""; }; + B3B3D3A92871354F008A0E2F /* midtunit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midtunit.h; sourceTree = ""; }; + B3B3D3AA2871354F008A0E2F /* yawdim_sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = yawdim_sound.cpp; sourceTree = ""; }; + B3B3D3AB2871354F008A0E2F /* d_xunit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xunit.cpp; sourceTree = ""; }; + B3B3D3AC2871354F008A0E2F /* williams_cvsd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = williams_cvsd.h; sourceTree = ""; }; + B3B3D3AD2871354F008A0E2F /* ide.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ide.h; sourceTree = ""; }; + B3B3D3AE2871354F008A0E2F /* d_kinst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kinst.cpp; sourceTree = ""; }; + B3B3D3AF2871354F008A0E2F /* dcs2k.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dcs2k.cpp; sourceTree = ""; }; + B3B3D3B02871354F008A0E2F /* midwayic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midwayic.cpp; sourceTree = ""; }; + B3B3D3B12871354F008A0E2F /* dcs2k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dcs2k.h; sourceTree = ""; }; + B3B3D3B22871354F008A0E2F /* narc_sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = narc_sound.h; sourceTree = ""; }; + B3B3D3B32871354F008A0E2F /* midwunit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midwunit.h; sourceTree = ""; }; + B3B3D3B42871354F008A0E2F /* d_yunit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_yunit.cpp; sourceTree = ""; }; + B3B3D3B52871354F008A0E2F /* narc_sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = narc_sound.cpp; sourceTree = ""; }; + B3B3D3B62871354F008A0E2F /* williams_adpcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = williams_adpcm.h; sourceTree = ""; }; + B3B3D3B72871354F008A0E2F /* midwunit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midwunit.cpp; sourceTree = ""; }; + B3B3D3B82871354F008A0E2F /* midtunit_dma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midtunit_dma.h; sourceTree = ""; }; + B3B3D3B92871354F008A0E2F /* d_tunit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tunit.cpp; sourceTree = ""; }; + B3B3D3BA2871354F008A0E2F /* midwayic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midwayic.h; sourceTree = ""; }; + B3B3D3BB2871354F008A0E2F /* midtunit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midtunit.cpp; sourceTree = ""; }; + B3B3D3BC2871354F008A0E2F /* williams_adpcm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = williams_adpcm.cpp; sourceTree = ""; }; + B3B3D3BD2871354F008A0E2F /* williams_cvsd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = williams_cvsd.cpp; sourceTree = ""; }; + B3B3D3BE2871354F008A0E2F /* d_wunit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wunit.cpp; sourceTree = ""; }; + B3B3D3C02871354F008A0E2F /* d_sg1000.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sg1000.cpp; sourceTree = ""; }; + B3B3D3C22871354F008A0E2F /* d_coleco.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_coleco.cpp; sourceTree = ""; }; + B3B3D3C42871354F008A0E2F /* d_msx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_msx.cpp; sourceTree = ""; }; + B3B3D3C62871354F008A0E2F /* neo_text_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = neo_text_render.h; sourceTree = ""; }; + B3B3D3C72871354F008A0E2F /* neo_decrypt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neo_decrypt.cpp; sourceTree = ""; }; + B3B3D3C82871354F008A0E2F /* neo_sprite_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = neo_sprite_render.h; sourceTree = ""; }; + B3B3D3C92871354F008A0E2F /* neogeo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = neogeo.h; sourceTree = ""; }; + B3B3D3CA2871354F008A0E2F /* neo_text.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neo_text.cpp; sourceTree = ""; }; + B3B3D3CB2871354F008A0E2F /* neo_sprite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neo_sprite.cpp; sourceTree = ""; }; + B3B3D3CC2871354F008A0E2F /* neogeo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neogeo.cpp; sourceTree = ""; }; + B3B3D3CD2871354F008A0E2F /* neo_palette.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neo_palette.cpp; sourceTree = ""; }; + B3B3D3CE2871354F008A0E2F /* d_neogeo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_neogeo.cpp; sourceTree = ""; }; + B3B3D3CF2871354F008A0E2F /* neo_run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neo_run.cpp; sourceTree = ""; }; + B3B3D3D02871354F008A0E2F /* neo_upd4990a.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neo_upd4990a.cpp; sourceTree = ""; }; + B3B3D3D22871354F008A0E2F /* d_mahoudai.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mahoudai.cpp; sourceTree = ""; }; + B3B3D3D32871354F008A0E2F /* d_snowbro2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_snowbro2.cpp; sourceTree = ""; }; + B3B3D3D42871354F008A0E2F /* d_battleg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_battleg.cpp; sourceTree = ""; }; + B3B3D3D52871354F008A0E2F /* d_tekipaki.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tekipaki.cpp; sourceTree = ""; }; + B3B3D3D62871354F008A0E2F /* d_vfive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vfive.cpp; sourceTree = ""; }; + B3B3D3D72871354F008A0E2F /* d_slapfght.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_slapfght.cpp; sourceTree = ""; }; + B3B3D3D82871354F008A0E2F /* d_bbakraid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bbakraid.cpp; sourceTree = ""; }; + B3B3D3D92871354F008A0E2F /* d_twincobr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_twincobr.cpp; sourceTree = ""; }; + B3B3D3DA2871354F008A0E2F /* d_shippumd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shippumd.cpp; sourceTree = ""; }; + B3B3D3DB2871354F008A0E2F /* d_ghox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ghox.cpp; sourceTree = ""; }; + B3B3D3DC2871354F008A0E2F /* toaplan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = toaplan.h; sourceTree = ""; }; + B3B3D3DD2871354F008A0E2F /* toa_bcu2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = toa_bcu2.cpp; sourceTree = ""; }; + B3B3D3DE2871354F008A0E2F /* toa_extratext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = toa_extratext.cpp; sourceTree = ""; }; + B3B3D3DF2871354F008A0E2F /* toaplan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = toaplan.cpp; sourceTree = ""; }; + B3B3D3E02871354F008A0E2F /* d_batsugun.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_batsugun.cpp; sourceTree = ""; }; + B3B3D3E12871354F008A0E2F /* toa_palette.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = toa_palette.cpp; sourceTree = ""; }; + B3B3D3E22871354F008A0E2F /* toa_gp9001_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = toa_gp9001_render.h; sourceTree = ""; }; + B3B3D3E32871354F008A0E2F /* toa_extratext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = toa_extratext.h; sourceTree = ""; }; + B3B3D3E42871354F008A0E2F /* d_truxton2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_truxton2.cpp; sourceTree = ""; }; + B3B3D3E52871354F008A0E2F /* d_dogyuun.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dogyuun.cpp; sourceTree = ""; }; + B3B3D3E62871354F008A0E2F /* d_toaplan1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_toaplan1.cpp; sourceTree = ""; }; + B3B3D3E72871354F008A0E2F /* d_fixeight.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_fixeight.cpp; sourceTree = ""; }; + B3B3D3E82871354F008A0E2F /* d_kbash.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kbash.cpp; sourceTree = ""; }; + B3B3D3E92871354F008A0E2F /* toa_gp9001.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = toa_gp9001.cpp; sourceTree = ""; }; + B3B3D3EA2871354F008A0E2F /* d_wardner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wardner.cpp; sourceTree = ""; }; + B3B3D3EB2871354F008A0E2F /* d_enmadaio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_enmadaio.cpp; sourceTree = ""; }; + B3B3D3EC2871354F008A0E2F /* d_pipibibs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pipibibs.cpp; sourceTree = ""; }; + B3B3D3ED2871354F008A0E2F /* d_kbash2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kbash2.cpp; sourceTree = ""; }; + B3B3D3EE2871354F008A0E2F /* toaplan1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = toaplan1.cpp; sourceTree = ""; }; + B3B3D3EF2871354F008A0E2F /* d_batrider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_batrider.cpp; sourceTree = ""; }; + B3B3D3F12871354F008A0E2F /* d_cps3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cps3.cpp; sourceTree = ""; }; + B3B3D3F22871354F008A0E2F /* cps3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cps3.h; sourceTree = ""; }; + B3B3D3F32871354F008A0E2F /* cps3snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps3snd.cpp; sourceTree = ""; }; + B3B3D3F42871354F008A0E2F /* cps3run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps3run.cpp; sourceTree = ""; }; + B3B3D3F62871354F008A0E2F /* d_spectrum.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_spectrum.cpp; sourceTree = ""; }; + B3B3D3F82871354F008A0E2F /* psikyo_tile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = psikyo_tile.cpp; sourceTree = ""; }; + B3B3D3F92871354F008A0E2F /* psikyo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psikyo.h; sourceTree = ""; }; + B3B3D3FA2871354F008A0E2F /* psikyo_sprite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = psikyo_sprite.cpp; sourceTree = ""; }; + B3B3D3FB2871354F008A0E2F /* psikyosh_render.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = psikyosh_render.cpp; sourceTree = ""; }; + B3B3D3FC2871354F008A0E2F /* psikyo_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psikyo_render.h; sourceTree = ""; }; + B3B3D3FD2871354F008A0E2F /* psikyo_palette.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = psikyo_palette.cpp; sourceTree = ""; }; + B3B3D3FE2871354F008A0E2F /* d_psikyo4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_psikyo4.cpp; sourceTree = ""; }; + B3B3D3FF2871354F008A0E2F /* psikyosh_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psikyosh_render.h; sourceTree = ""; }; + B3B3D4002871354F008A0E2F /* psikyo_sprite_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psikyo_sprite_func.h; sourceTree = ""; }; + B3B3D4012871354F008A0E2F /* d_psikyosh.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_psikyosh.cpp; sourceTree = ""; }; + B3B3D4022871354F008A0E2F /* d_psikyo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_psikyo.cpp; sourceTree = ""; }; + B3B3D4042871354F008A0E2F /* cpsrd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpsrd.cpp; sourceTree = ""; }; + B3B3D4052871354F008A0E2F /* d_cps2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cps2.cpp; sourceTree = ""; }; + B3B3D4062871354F008A0E2F /* cpst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpst.cpp; sourceTree = ""; }; + B3B3D4072871354F008A0E2F /* qs_z.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qs_z.cpp; sourceTree = ""; }; + B3B3D4082871354F008A0E2F /* d_cps1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cps1.cpp; sourceTree = ""; }; + B3B3D4092871354F008A0E2F /* cps_obj.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_obj.cpp; sourceTree = ""; }; + B3B3D40A2871354F008A0E2F /* fcrash_snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fcrash_snd.cpp; sourceTree = ""; }; + B3B3D40B2871354F008A0E2F /* cpsr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpsr.cpp; sourceTree = ""; }; + B3B3D40C2871354F008A0E2F /* cps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cps.h; sourceTree = ""; }; + B3B3D40D2871354F008A0E2F /* cps_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_mem.cpp; sourceTree = ""; }; + B3B3D40E2871354F008A0E2F /* ps.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ps.cpp; sourceTree = ""; }; + B3B3D40F2871354F008A0E2F /* ctv_make.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ctv_make.cpp; sourceTree = ""; }; + B3B3D4102871354F008A0E2F /* cps2_crpt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps2_crpt.cpp; sourceTree = ""; }; + B3B3D4112871354F008A0E2F /* ctv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ctv.cpp; sourceTree = ""; }; + B3B3D4122871354F008A0E2F /* cps_draw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_draw.cpp; sourceTree = ""; }; + B3B3D4132871354F008A0E2F /* kabuki.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = kabuki.cpp; sourceTree = ""; }; + B3B3D4142871354F008A0E2F /* qs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qs.cpp; sourceTree = ""; }; + B3B3D4152871354F008A0E2F /* ps_z.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ps_z.cpp; sourceTree = ""; }; + B3B3D4162871354F008A0E2F /* ps_m.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ps_m.cpp; sourceTree = ""; }; + B3B3D4172871354F008A0E2F /* ctv_do.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctv_do.h; sourceTree = ""; }; + B3B3D4182871354F008A0E2F /* sf2mdt_snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sf2mdt_snd.cpp; sourceTree = ""; }; + B3B3D4192871354F008A0E2F /* cps_scr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_scr.cpp; sourceTree = ""; }; + B3B3D41A2871354F008A0E2F /* cps_run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_run.cpp; sourceTree = ""; }; + B3B3D41B2871354F008A0E2F /* cps_config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_config.cpp; sourceTree = ""; }; + B3B3D41C2871354F008A0E2F /* cps_rw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_rw.cpp; sourceTree = ""; }; + B3B3D41D2871354F008A0E2F /* d_kenseim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d_kenseim.h; sourceTree = ""; }; + B3B3D41E2871354F008A0E2F /* qs_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qs_c.cpp; sourceTree = ""; }; + B3B3D41F2871354F008A0E2F /* cps.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps.cpp; sourceTree = ""; }; + B3B3D4202871354F008A0E2F /* cps_pal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cps_pal.cpp; sourceTree = ""; }; + B3B3D4222871354F008A0E2F /* cchip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cchip.h; sourceTree = ""; }; + B3B3D4232871354F008A0E2F /* d_buggychl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_buggychl.cpp; sourceTree = ""; }; + B3B3D4242871354F008A0E2F /* d_chaknpop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_chaknpop.cpp; sourceTree = ""; }; + B3B3D4252871354F008A0E2F /* cchip.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cchip.cpp; sourceTree = ""; }; + B3B3D4262871354F008A0E2F /* d_ksayakyu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ksayakyu.cpp; sourceTree = ""; }; + B3B3D4272871354F008A0E2F /* tc0360pri.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0360pri.cpp; sourceTree = ""; }; + B3B3D4282871354F008A0E2F /* d_flstory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_flstory.cpp; sourceTree = ""; }; + B3B3D4292871354F008A0E2F /* taito_m68705.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = taito_m68705.cpp; sourceTree = ""; }; + B3B3D42A2871354F008A0E2F /* d_ashnojoe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ashnojoe.cpp; sourceTree = ""; }; + B3B3D42B2871354F008A0E2F /* d_taitoh.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitoh.cpp; sourceTree = ""; }; + B3B3D42C2871354F008A0E2F /* d_minivdr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_minivdr.cpp; sourceTree = ""; }; + B3B3D42D2871354F008A0E2F /* d_taitol.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitol.cpp; sourceTree = ""; }; + B3B3D42E2871354F008A0E2F /* d_asuka.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_asuka.cpp; sourceTree = ""; }; + B3B3D42F2871354F008A0E2F /* d_taitoz.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitoz.cpp; sourceTree = ""; }; + B3B3D4302871354F008A0E2F /* d_msisaac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_msisaac.cpp; sourceTree = ""; }; + B3B3D4312871354F008A0E2F /* taitof3_video.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = taitof3_video.cpp; sourceTree = ""; }; + B3B3D4322871354F008A0E2F /* d_taitox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitox.cpp; sourceTree = ""; }; + B3B3D4332871354F008A0E2F /* d_othunder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_othunder.cpp; sourceTree = ""; }; + B3B3D4342871354F008A0E2F /* d_lsasquad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lsasquad.cpp; sourceTree = ""; }; + B3B3D4352871354F008A0E2F /* d_nycaptor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_nycaptor.cpp; sourceTree = ""; }; + B3B3D4362871354F008A0E2F /* tc0140syt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0140syt.cpp; sourceTree = ""; }; + B3B3D4372871354F008A0E2F /* tc0110pcr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0110pcr.cpp; sourceTree = ""; }; + B3B3D4382871354F008A0E2F /* taito.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = taito.cpp; sourceTree = ""; }; + B3B3D4392871354F008A0E2F /* d_mexico86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mexico86.cpp; sourceTree = ""; }; + B3B3D43A2871354F008A0E2F /* d_supridr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_supridr.cpp; sourceTree = ""; }; + B3B3D43B2871354F008A0E2F /* d_cyclemb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cyclemb.cpp; sourceTree = ""; }; + B3B3D43C2871354F008A0E2F /* d_taitomisc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitomisc.cpp; sourceTree = ""; }; + B3B3D43D2871354F008A0E2F /* d_slapshot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_slapshot.cpp; sourceTree = ""; }; + B3B3D43E2871354F008A0E2F /* d_taitof3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitof3.cpp; sourceTree = ""; }; + B3B3D43F2871354F008A0E2F /* tnzs_prot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tnzs_prot.h; sourceTree = ""; }; + B3B3D4402871354F008A0E2F /* d_gladiatr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gladiatr.cpp; sourceTree = ""; }; + B3B3D4412871354F008A0E2F /* d_qix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_qix.cpp; sourceTree = ""; }; + B3B3D4422871354F008A0E2F /* tc0180vcu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0180vcu.cpp; sourceTree = ""; }; + B3B3D4432871354F008A0E2F /* d_taitof2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitof2.cpp; sourceTree = ""; }; + B3B3D4442871354F008A0E2F /* d_rollrace.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rollrace.cpp; sourceTree = ""; }; + B3B3D4452871354F008A0E2F /* d_jollyjgr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_jollyjgr.cpp; sourceTree = ""; }; + B3B3D4462871354F008A0E2F /* taito.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = taito.h; sourceTree = ""; }; + B3B3D4472871354F008A0E2F /* tc0510nio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0510nio.cpp; sourceTree = ""; }; + B3B3D4482871354F008A0E2F /* d_wyvernf0.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wyvernf0.cpp; sourceTree = ""; }; + B3B3D4492871354F008A0E2F /* taitof3_snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = taitof3_snd.cpp; sourceTree = ""; }; + B3B3D44A2871354F008A0E2F /* d_lkage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lkage.cpp; sourceTree = ""; }; + B3B3D44B2871354F008A0E2F /* d_tnzs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tnzs.cpp; sourceTree = ""; }; + B3B3D44C2871354F008A0E2F /* d_groundfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_groundfx.cpp; sourceTree = ""; }; + B3B3D44D2871354F008A0E2F /* d_galastrm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_galastrm.cpp; sourceTree = ""; }; + B3B3D44E2871354F008A0E2F /* taito_m68705.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = taito_m68705.h; sourceTree = ""; }; + B3B3D44F2871354F008A0E2F /* tc0280grd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0280grd.cpp; sourceTree = ""; }; + B3B3D4502871354F008A0E2F /* tc0150rod.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0150rod.cpp; sourceTree = ""; }; + B3B3D4512871354F008A0E2F /* tc0220ioc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0220ioc.cpp; sourceTree = ""; }; + B3B3D4522871354F008A0E2F /* pc080sn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pc080sn.cpp; sourceTree = ""; }; + B3B3D4532871354F008A0E2F /* pc090oj.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pc090oj.cpp; sourceTree = ""; }; + B3B3D4542871354F008A0E2F /* d_darius2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_darius2.cpp; sourceTree = ""; }; + B3B3D4552871354F008A0E2F /* d_superchs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_superchs.cpp; sourceTree = ""; }; + B3B3D4562871354F008A0E2F /* d_crbaloon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_crbaloon.cpp; sourceTree = ""; }; + B3B3D4572871354F008A0E2F /* d_darkmist.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_darkmist.cpp; sourceTree = ""; }; + B3B3D4582871354F008A0E2F /* taito_ic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = taito_ic.h; sourceTree = ""; }; + B3B3D4592871354F008A0E2F /* d_taitosj.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitosj.cpp; sourceTree = ""; }; + B3B3D45A2871354F008A0E2F /* d_bublbobl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bublbobl.cpp; sourceTree = ""; }; + B3B3D45B2871354F008A0E2F /* d_retofinv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_retofinv.cpp; sourceTree = ""; }; + B3B3D45C2871354F008A0E2F /* taito_ic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = taito_ic.cpp; sourceTree = ""; }; + B3B3D45D2871354F008A0E2F /* d_taitob.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_taitob.cpp; sourceTree = ""; }; + B3B3D45E2871354F008A0E2F /* taitof3_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = taitof3_video.h; sourceTree = ""; }; + B3B3D45F2871354F008A0E2F /* d_exzisus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_exzisus.cpp; sourceTree = ""; }; + B3B3D4602871354F008A0E2F /* tc0480scp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0480scp.cpp; sourceTree = ""; }; + B3B3D4612871354F008A0E2F /* d_undrfire.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_undrfire.cpp; sourceTree = ""; }; + B3B3D4622871354F008A0E2F /* taitof3_snd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = taitof3_snd.h; sourceTree = ""; }; + B3B3D4632871354F008A0E2F /* tc0640fio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0640fio.cpp; sourceTree = ""; }; + B3B3D4642871354F008A0E2F /* tc0100scn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tc0100scn.cpp; sourceTree = ""; }; + B3B3D4652871354F008A0E2F /* tnzs_prot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tnzs_prot.cpp; sourceTree = ""; }; + B3B3D4662871354F008A0E2F /* d_arkanoid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_arkanoid.cpp; sourceTree = ""; }; + B3B3D4672871354F008A0E2F /* d_ssrj.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ssrj.cpp; sourceTree = ""; }; + B3B3D4682871354F008A0E2F /* d_gunbuster.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gunbuster.cpp; sourceTree = ""; }; + B3B3D46A2871354F008A0E2F /* pgm_asic25.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_asic25.cpp; sourceTree = ""; }; + B3B3D46B2871354F008A0E2F /* pgm_run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_run.cpp; sourceTree = ""; }; + B3B3D46C2871354F008A0E2F /* pgm_crypt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_crypt.cpp; sourceTree = ""; }; + B3B3D46D2871354F008A0E2F /* pgm_asic3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_asic3.cpp; sourceTree = ""; }; + B3B3D46E2871354F008A0E2F /* pgm_asic27a_type1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_asic27a_type1.cpp; sourceTree = ""; }; + B3B3D46F2871354F008A0E2F /* pgm_asic27a_type2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_asic27a_type2.cpp; sourceTree = ""; }; + B3B3D4702871354F008A0E2F /* pgm_asic27a_type3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_asic27a_type3.cpp; sourceTree = ""; }; + B3B3D4712871354F008A0E2F /* pgm_sprite_create.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_sprite_create.cpp; sourceTree = ""; }; + B3B3D4722871354F008A0E2F /* pgm_draw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pgm_draw.cpp; sourceTree = ""; }; + B3B3D4732871354F008A0E2F /* d_pgm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pgm.cpp; sourceTree = ""; }; + B3B3D4742871354F008A0E2F /* pgm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pgm.h; sourceTree = ""; }; + B3B3D4762871354F008A0E2F /* d_channelf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_channelf.cpp; sourceTree = ""; }; + B3B3D4782871354F008A0E2F /* d_cloud9.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cloud9.cpp; sourceTree = ""; }; + B3B3D4792871354F008A0E2F /* d_cybertnk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cybertnk.cpp; sourceTree = ""; }; + B3B3D47A2871354F008A0E2F /* d_redclash.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_redclash.cpp; sourceTree = ""; }; + B3B3D47B2871354F008A0E2F /* d_thief.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_thief.cpp; sourceTree = ""; }; + B3B3D47C2871354F008A0E2F /* d_bionicc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bionicc.cpp; sourceTree = ""; }; + B3B3D47D2871354F008A0E2F /* d_sub.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sub.cpp; sourceTree = ""; }; + B3B3D47E2871354F008A0E2F /* d_alinvade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_alinvade.cpp; sourceTree = ""; }; + B3B3D47F2871354F008A0E2F /* d_1942.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_1942.cpp; sourceTree = ""; }; + B3B3D4802871354F008A0E2F /* d_dkong.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dkong.cpp; sourceTree = ""; }; + B3B3D4812871354F008A0E2F /* d_tecmo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tecmo.cpp; sourceTree = ""; }; + B3B3D4822871354F008A0E2F /* d_jrpacman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_jrpacman.cpp; sourceTree = ""; }; + B3B3D4832871354F008A0E2F /* d_exedexes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_exedexes.cpp; sourceTree = ""; }; + B3B3D4842871354F008A0E2F /* d_1943.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_1943.cpp; sourceTree = ""; }; + B3B3D4852871354F008A0E2F /* d_williams.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_williams.cpp; sourceTree = ""; }; + B3B3D4862871354F008A0E2F /* d_galaga.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_galaga.cpp; sourceTree = ""; }; + B3B3D4872871354F008A0E2F /* d_popeye.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_popeye.cpp; sourceTree = ""; }; + B3B3D4882871354F008A0E2F /* d_scregg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_scregg.cpp; sourceTree = ""; }; + B3B3D4892871354F008A0E2F /* d_efdt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_efdt.cpp; sourceTree = ""; }; + B3B3D48A2871354F008A0E2F /* d_momoko.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_momoko.cpp; sourceTree = ""; }; + B3B3D48B2871354F008A0E2F /* d_tankbust.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tankbust.cpp; sourceTree = ""; }; + B3B3D48C2871354F008A0E2F /* d_rallyx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rallyx.cpp; sourceTree = ""; }; + B3B3D48D2871354F008A0E2F /* d_pengadvb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pengadvb.cpp; sourceTree = ""; }; + B3B3D48E2871354F008A0E2F /* d_quantum.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_quantum.cpp; sourceTree = ""; }; + B3B3D48F2871354F008A0E2F /* d_mjkjidai.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mjkjidai.cpp; sourceTree = ""; }; + B3B3D4902871354F008A0E2F /* d_ssozumo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ssozumo.cpp; sourceTree = ""; }; + B3B3D4912871354F008A0E2F /* d_snk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_snk.cpp; sourceTree = ""; }; + B3B3D4922871354F008A0E2F /* d_mustache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mustache.cpp; sourceTree = ""; }; + B3B3D4932871354F008A0E2F /* d_alpha68k.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_alpha68k.cpp; sourceTree = ""; }; + B3B3D4942871354F008A0E2F /* d_megasys1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_megasys1.cpp; sourceTree = ""; }; + B3B3D4952871354F008A0E2F /* d_sauro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sauro.cpp; sourceTree = ""; }; + B3B3D4962871354F008A0E2F /* d_namcos86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_namcos86.cpp; sourceTree = ""; }; + B3B3D4972871354F008A0E2F /* d_pac2650.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pac2650.cpp; sourceTree = ""; }; + B3B3D4982871354F008A0E2F /* d_jedi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_jedi.cpp; sourceTree = ""; }; + B3B3D4992871354F008A0E2F /* d_flower.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_flower.cpp; sourceTree = ""; }; + B3B3D49A2871354F008A0E2F /* d_spdodgeb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_spdodgeb.cpp; sourceTree = ""; }; + B3B3D49B2871354F008A0E2F /* d_mitchell.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mitchell.cpp; sourceTree = ""; }; + B3B3D49C2871354F008A0E2F /* d_mainsnk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mainsnk.cpp; sourceTree = ""; }; + B3B3D49D2871354F008A0E2F /* d_toypop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_toypop.cpp; sourceTree = ""; }; + B3B3D49E2871354F008A0E2F /* d_espial.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_espial.cpp; sourceTree = ""; }; + B3B3D49F2871354F008A0E2F /* d_clshroad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_clshroad.cpp; sourceTree = ""; }; + B3B3D4A02871354F008A0E2F /* d_mirax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mirax.cpp; sourceTree = ""; }; + B3B3D4A12871354F008A0E2F /* d_stuntair.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_stuntair.cpp; sourceTree = ""; }; + B3B3D4A22871354F008A0E2F /* d_blktiger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blktiger.cpp; sourceTree = ""; }; + B3B3D4A32871354F008A0E2F /* d_ettrivia.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ettrivia.cpp; sourceTree = ""; }; + B3B3D4A42871354F008A0E2F /* d_metlfrzr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_metlfrzr.cpp; sourceTree = ""; }; + B3B3D4A52871354F008A0E2F /* d_amspdwy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_amspdwy.cpp; sourceTree = ""; }; + B3B3D4A62871354F008A0E2F /* d_lwings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lwings.cpp; sourceTree = ""; }; + B3B3D4A72871354F008A0E2F /* d_mrdo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mrdo.cpp; sourceTree = ""; }; + B3B3D4A82871354F008A0E2F /* d_foodf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_foodf.cpp; sourceTree = ""; }; + B3B3D4A92871354F008A0E2F /* d_renegade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_renegade.cpp; sourceTree = ""; }; + B3B3D4AA2871354F008A0E2F /* d_lasso.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lasso.cpp; sourceTree = ""; }; + B3B3D4AB2871354F008A0E2F /* d_mole.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mole.cpp; sourceTree = ""; }; + B3B3D4AC2871354F008A0E2F /* d_suna8.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_suna8.cpp; sourceTree = ""; }; + B3B3D4AD2871354F008A0E2F /* d_firetrap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_firetrap.cpp; sourceTree = ""; }; + B3B3D4AE2871354F008A0E2F /* d_thedeep.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_thedeep.cpp; sourceTree = ""; }; + B3B3D4AF2871354F008A0E2F /* d_sf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sf.cpp; sourceTree = ""; }; + B3B3D4B02871354F008A0E2F /* d_wallc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wallc.cpp; sourceTree = ""; }; + B3B3D4B12871354F008A0E2F /* d_xain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xain.cpp; sourceTree = ""; }; + B3B3D4B228713550008A0E2F /* d_mastboyo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mastboyo.cpp; sourceTree = ""; }; + B3B3D4B328713550008A0E2F /* d_cloak.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cloak.cpp; sourceTree = ""; }; + B3B3D4B428713550008A0E2F /* d_bzone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bzone.cpp; sourceTree = ""; }; + B3B3D4B528713550008A0E2F /* d_wc90.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wc90.cpp; sourceTree = ""; }; + B3B3D4B628713550008A0E2F /* d_lastduel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_lastduel.cpp; sourceTree = ""; }; + B3B3D4B728713550008A0E2F /* d_toki.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_toki.cpp; sourceTree = ""; }; + B3B3D4B828713550008A0E2F /* d_cclimber.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cclimber.cpp; sourceTree = ""; }; + B3B3D4B928713550008A0E2F /* d_calorie.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_calorie.cpp; sourceTree = ""; }; + B3B3D4BA28713550008A0E2F /* d_dribling.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dribling.cpp; sourceTree = ""; }; + B3B3D4BB28713550008A0E2F /* d_cabal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cabal.cpp; sourceTree = ""; }; + B3B3D4BC28713550008A0E2F /* d_gng.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gng.cpp; sourceTree = ""; }; + B3B3D4BD28713550008A0E2F /* d_bagman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bagman.cpp; sourceTree = ""; }; + B3B3D4BE28713550008A0E2F /* d_atetris.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_atetris.cpp; sourceTree = ""; }; + B3B3D4BF28713550008A0E2F /* d_popper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_popper.cpp; sourceTree = ""; }; + B3B3D4C028713550008A0E2F /* d_capbowl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_capbowl.cpp; sourceTree = ""; }; + B3B3D4C128713550008A0E2F /* d_route16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_route16.cpp; sourceTree = ""; }; + B3B3D4C228713550008A0E2F /* d_citycon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_citycon.cpp; sourceTree = ""; }; + B3B3D4C328713550008A0E2F /* d_mystston.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mystston.cpp; sourceTree = ""; }; + B3B3D4C428713550008A0E2F /* d_exerion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_exerion.cpp; sourceTree = ""; }; + B3B3D4C528713550008A0E2F /* d_deadang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_deadang.cpp; sourceTree = ""; }; + B3B3D4C628713550008A0E2F /* d_kingofbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kingofbox.cpp; sourceTree = ""; }; + B3B3D4C728713550008A0E2F /* d_phoenix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_phoenix.cpp; sourceTree = ""; }; + B3B3D4C828713550008A0E2F /* d_copsnrob.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_copsnrob.cpp; sourceTree = ""; }; + B3B3D4C928713550008A0E2F /* d_4enraya.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_4enraya.cpp; sourceTree = ""; }; + B3B3D4CA28713550008A0E2F /* d_bbusters.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bbusters.cpp; sourceTree = ""; }; + B3B3D4CB28713550008A0E2F /* d_mouser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mouser.cpp; sourceTree = ""; }; + B3B3D4CC28713550008A0E2F /* d_wiz.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wiz.cpp; sourceTree = ""; }; + B3B3D4CD28713550008A0E2F /* d_beaminv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_beaminv.cpp; sourceTree = ""; }; + B3B3D4CE28713550008A0E2F /* d_funkybee.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_funkybee.cpp; sourceTree = ""; }; + B3B3D4CF28713550008A0E2F /* d_iqblock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_iqblock.cpp; sourceTree = ""; }; + B3B3D4D028713550008A0E2F /* d_gunsmoke.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gunsmoke.cpp; sourceTree = ""; }; + B3B3D4D128713550008A0E2F /* d_sonson.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sonson.cpp; sourceTree = ""; }; + B3B3D4D228713550008A0E2F /* d_dynduke.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dynduke.cpp; sourceTree = ""; }; + B3B3D4D328713550008A0E2F /* d_ninjakd2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ninjakd2.cpp; sourceTree = ""; }; + B3B3D4D428713550008A0E2F /* d_aztarac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_aztarac.cpp; sourceTree = ""; }; + B3B3D4D528713550008A0E2F /* d_stfight.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_stfight.cpp; sourceTree = ""; }; + B3B3D4D628713550008A0E2F /* d_jack.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_jack.cpp; sourceTree = ""; }; + B3B3D4D728713550008A0E2F /* d_carjmbre.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_carjmbre.cpp; sourceTree = ""; }; + B3B3D4D828713550008A0E2F /* d_prehisle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_prehisle.cpp; sourceTree = ""; }; + B3B3D4D928713550008A0E2F /* d_argus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_argus.cpp; sourceTree = ""; }; + B3B3D4DA28713550008A0E2F /* d_cop01.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cop01.cpp; sourceTree = ""; }; + B3B3D4DB28713550008A0E2F /* d_alpha68k1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_alpha68k1.cpp; sourceTree = ""; }; + B3B3D4DC28713550008A0E2F /* d_tail2nose.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tail2nose.cpp; sourceTree = ""; }; + B3B3D4DD28713550008A0E2F /* d_asteroids.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_asteroids.cpp; sourceTree = ""; }; + B3B3D4DE28713550008A0E2F /* d_kncljoe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kncljoe.cpp; sourceTree = ""; }; + B3B3D4DF28713550008A0E2F /* d_pacman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pacman.cpp; sourceTree = ""; }; + B3B3D4E028713550008A0E2F /* d_goindol.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_goindol.cpp; sourceTree = ""; }; + B3B3D4E128713550008A0E2F /* d_sprcros2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sprcros2.cpp; sourceTree = ""; }; + B3B3D4E228713550008A0E2F /* d_matmania.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_matmania.cpp; sourceTree = ""; }; + B3B3D4E328713550008A0E2F /* d_tubep.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tubep.cpp; sourceTree = ""; }; + B3B3D4E428713550008A0E2F /* d_tsamurai.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tsamurai.cpp; sourceTree = ""; }; + B3B3D4E528713550008A0E2F /* d_shisen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shisen.cpp; sourceTree = ""; }; + B3B3D4E628713550008A0E2F /* d_speedbal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_speedbal.cpp; sourceTree = ""; }; + B3B3D4E728713550008A0E2F /* d_starwars.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_starwars.cpp; sourceTree = ""; }; + B3B3D4E828713550008A0E2F /* d_alpha68k2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_alpha68k2.cpp; sourceTree = ""; }; + B3B3D4E928713550008A0E2F /* d_sidearms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sidearms.cpp; sourceTree = ""; }; + B3B3D4EA28713550008A0E2F /* d_hvyunit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_hvyunit.cpp; sourceTree = ""; }; + B3B3D4EB28713550008A0E2F /* d_mmagic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mmagic.cpp; sourceTree = ""; }; + B3B3D4EC28713550008A0E2F /* d_quizo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_quizo.cpp; sourceTree = ""; }; + B3B3D4ED28713550008A0E2F /* d_mrflea.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mrflea.cpp; sourceTree = ""; }; + B3B3D4EE28713550008A0E2F /* d_madmotor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_madmotor.cpp; sourceTree = ""; }; + B3B3D4EF28713550008A0E2F /* d_bwidow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bwidow.cpp; sourceTree = ""; }; + B3B3D4F028713550008A0E2F /* d_gaplus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_gaplus.cpp; sourceTree = ""; }; + B3B3D4F128713550008A0E2F /* d_rpunch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_rpunch.cpp; sourceTree = ""; }; + B3B3D4F228713550008A0E2F /* d_seicross.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_seicross.cpp; sourceTree = ""; }; + B3B3D4F328713550008A0E2F /* d_magmax.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_magmax.cpp; sourceTree = ""; }; + B3B3D4F428713550008A0E2F /* d_exterm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_exterm.cpp; sourceTree = ""; }; + B3B3D4F528713550008A0E2F /* d_holeland.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_holeland.cpp; sourceTree = ""; }; + B3B3D4F628713550008A0E2F /* d_dacholer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dacholer.cpp; sourceTree = ""; }; + B3B3D4F728713550008A0E2F /* d_arabian.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_arabian.cpp; sourceTree = ""; }; + B3B3D4F828713550008A0E2F /* d_dogfgt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dogfgt.cpp; sourceTree = ""; }; + B3B3D4F928713550008A0E2F /* d_snk68.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_snk68.cpp; sourceTree = ""; }; + B3B3D4FA28713550008A0E2F /* d_mrjong.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mrjong.cpp; sourceTree = ""; }; + B3B3D4FB28713550008A0E2F /* d_markham.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_markham.cpp; sourceTree = ""; }; + B3B3D4FC28713550008A0E2F /* d_vball.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vball.cpp; sourceTree = ""; }; + B3B3D4FD28713550008A0E2F /* d_vicdual.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vicdual.cpp; sourceTree = ""; }; + B3B3D4FE28713550008A0E2F /* d_higemaru.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_higemaru.cpp; sourceTree = ""; }; + B3B3D4FF28713550008A0E2F /* d_usgames.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_usgames.cpp; sourceTree = ""; }; + B3B3D50028713550008A0E2F /* d_tagteam.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tagteam.cpp; sourceTree = ""; }; + B3B3D50128713550008A0E2F /* d_pbaction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pbaction.cpp; sourceTree = ""; }; + B3B3D50228713550008A0E2F /* d_olibochu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_olibochu.cpp; sourceTree = ""; }; + B3B3D50328713550008A0E2F /* d_snk6502.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_snk6502.cpp; sourceTree = ""; }; + B3B3D50428713550008A0E2F /* d_meijinsn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_meijinsn.cpp; sourceTree = ""; }; + B3B3D50528713550008A0E2F /* d_qbert.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_qbert.cpp; sourceTree = ""; }; + B3B3D50628713550008A0E2F /* d_baraduke.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_baraduke.cpp; sourceTree = ""; }; + B3B3D50728713550008A0E2F /* d_ginganin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ginganin.cpp; sourceTree = ""; }; + B3B3D50828713550008A0E2F /* d_btime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_btime.cpp; sourceTree = ""; }; + B3B3D50928713550008A0E2F /* d_wwfsstar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wwfsstar.cpp; sourceTree = ""; }; + B3B3D50A28713550008A0E2F /* d_blockade.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blockade.cpp; sourceTree = ""; }; + B3B3D50B28713550008A0E2F /* d_fastfred.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_fastfred.cpp; sourceTree = ""; }; + B3B3D50C28713550008A0E2F /* d_travrusa.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_travrusa.cpp; sourceTree = ""; }; + B3B3D50D28713550008A0E2F /* d_punchout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_punchout.cpp; sourceTree = ""; }; + B3B3D50E28713550008A0E2F /* d_nitedrvr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_nitedrvr.cpp; sourceTree = ""; }; + B3B3D50F28713550008A0E2F /* d_battlane.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_battlane.cpp; sourceTree = ""; }; + B3B3D51028713550008A0E2F /* d_invaders.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_invaders.cpp; sourceTree = ""; }; + B3B3D51128713550008A0E2F /* d_vulgus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vulgus.cpp; sourceTree = ""; }; + B3B3D51228713550008A0E2F /* d_tigeroad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tigeroad.cpp; sourceTree = ""; }; + B3B3D51328713550008A0E2F /* d_spacefb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_spacefb.cpp; sourceTree = ""; }; + B3B3D51428713550008A0E2F /* d_sstrangr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_sstrangr.cpp; sourceTree = ""; }; + B3B3D51528713550008A0E2F /* d_vastar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_vastar.cpp; sourceTree = ""; }; + B3B3D51628713550008A0E2F /* d_bogeyman.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bogeyman.cpp; sourceTree = ""; }; + B3B3D51728713550008A0E2F /* d_shangkid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_shangkid.cpp; sourceTree = ""; }; + B3B3D51828713550008A0E2F /* d_mcr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mcr.cpp; sourceTree = ""; }; + B3B3D51928713550008A0E2F /* d_thepit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_thepit.cpp; sourceTree = ""; }; + B3B3D51A28713550008A0E2F /* d_warpsped.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_warpsped.cpp; sourceTree = ""; }; + B3B3D51B28713550008A0E2F /* d_armedf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_armedf.cpp; sourceTree = ""; }; + B3B3D51C28713550008A0E2F /* d_namcos1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_namcos1.cpp; sourceTree = ""; }; + B3B3D51D28713550008A0E2F /* d_fantland.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_fantland.cpp; sourceTree = ""; }; + B3B3D51E28713550008A0E2F /* d_skyarmy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_skyarmy.cpp; sourceTree = ""; }; + B3B3D51F28713550008A0E2F /* d_wc90b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wc90b.cpp; sourceTree = ""; }; + B3B3D52028713550008A0E2F /* d_xyonix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xyonix.cpp; sourceTree = ""; }; + B3B3D52128713550008A0E2F /* d_zodiack.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_zodiack.cpp; sourceTree = ""; }; + B3B3D52228713550008A0E2F /* d_skykid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_skykid.cpp; sourceTree = ""; }; + B3B3D52328713550008A0E2F /* d_kangaroo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kangaroo.cpp; sourceTree = ""; }; + B3B3D52428713550008A0E2F /* d_commando.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_commando.cpp; sourceTree = ""; }; + B3B3D52528713550008A0E2F /* d_mappy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mappy.cpp; sourceTree = ""; }; + B3B3D52628713550008A0E2F /* d_munchmo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_munchmo.cpp; sourceTree = ""; }; + B3B3D52728713550008A0E2F /* d_kyugo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_kyugo.cpp; sourceTree = ""; }; + B3B3D52828713550008A0E2F /* d_millipede.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_millipede.cpp; sourceTree = ""; }; + B3B3D52928713550008A0E2F /* d_senjyo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_senjyo.cpp; sourceTree = ""; }; + B3B3D52A28713550008A0E2F /* d_terracre.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_terracre.cpp; sourceTree = ""; }; + B3B3D52B28713550008A0E2F /* d_djboy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_djboy.cpp; sourceTree = ""; }; + B3B3D52C28713550008A0E2F /* d_tbowl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tbowl.cpp; sourceTree = ""; }; + B3B3D52D28713550008A0E2F /* d_canyon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_canyon.cpp; sourceTree = ""; }; + B3B3D52E28713550008A0E2F /* d_dday.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dday.cpp; sourceTree = ""; }; + B3B3D52F28713550008A0E2F /* d_mcr3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mcr3.cpp; sourceTree = ""; }; + B3B3D53028713550008A0E2F /* d_srumbler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_srumbler.cpp; sourceTree = ""; }; + B3B3D53128713550008A0E2F /* d_mario.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mario.cpp; sourceTree = ""; }; + B3B3D53228713550008A0E2F /* d_docastle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_docastle.cpp; sourceTree = ""; }; + B3B3D53328713550008A0E2F /* d_naughtyb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_naughtyb.cpp; sourceTree = ""; }; + B3B3D53428713550008A0E2F /* d_safarir.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_safarir.cpp; sourceTree = ""; }; + B3B3D53528713550008A0E2F /* d_solomon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_solomon.cpp; sourceTree = ""; }; + B3B3D53628713550008A0E2F /* d_tempest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tempest.cpp; sourceTree = ""; }; + B3B3D53728713550008A0E2F /* d_dorachan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_dorachan.cpp; sourceTree = ""; }; + B3B3D53828713550008A0E2F /* d_tceptor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_tceptor.cpp; sourceTree = ""; }; + B3B3D53928713550008A0E2F /* d_pturn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pturn.cpp; sourceTree = ""; }; + B3B3D53A28713550008A0E2F /* d_ddayjlc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ddayjlc.cpp; sourceTree = ""; }; + B3B3D53B28713550008A0E2F /* d_omegrace.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_omegrace.cpp; sourceTree = ""; }; + B3B3D53C28713550008A0E2F /* d_ddragon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ddragon.cpp; sourceTree = ""; }; + B3B3D53D28713550008A0E2F /* d_headonb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_headonb.cpp; sourceTree = ""; }; + B3B3D53E28713550008A0E2F /* d_pacland.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pacland.cpp; sourceTree = ""; }; + B3B3D53F28713550008A0E2F /* d_warpwarp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_warpwarp.cpp; sourceTree = ""; }; + B3B3D54028713550008A0E2F /* d_exprraid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_exprraid.cpp; sourceTree = ""; }; + B3B3D54128713550008A0E2F /* d_galivan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_galivan.cpp; sourceTree = ""; }; + B3B3D54228713550008A0E2F /* d_battlex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_battlex.cpp; sourceTree = ""; }; + B3B3D54328713550008A0E2F /* d_psychic5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_psychic5.cpp; sourceTree = ""; }; + B3B3D54428713550008A0E2F /* d_drmicro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_drmicro.cpp; sourceTree = ""; }; + B3B3D54528713550008A0E2F /* d_ladybug.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ladybug.cpp; sourceTree = ""; }; + B3B3D54628713550008A0E2F /* d_cheekyms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_cheekyms.cpp; sourceTree = ""; }; + B3B3D54728713550008A0E2F /* d_skyfox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_skyfox.cpp; sourceTree = ""; }; + B3B3D54828713550008A0E2F /* d_himesiki.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_himesiki.cpp; sourceTree = ""; }; + B3B3D54928713550008A0E2F /* d_wiping.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_wiping.cpp; sourceTree = ""; }; + B3B3D54A28713550008A0E2F /* d_epos.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_epos.cpp; sourceTree = ""; }; + B3B3D54B28713550008A0E2F /* d_pkunwar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pkunwar.cpp; sourceTree = ""; }; + B3B3D54C28713550008A0E2F /* d_pitnrun.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_pitnrun.cpp; sourceTree = ""; }; + B3B3D54D28713550008A0E2F /* d_flipjack.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_flipjack.cpp; sourceTree = ""; }; + B3B3D54E28713550008A0E2F /* d_xxmissio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_xxmissio.cpp; sourceTree = ""; }; + B3B3D54F28713550008A0E2F /* d_timelimt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_timelimt.cpp; sourceTree = ""; }; + B3B3D55028713550008A0E2F /* d_chinagat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_chinagat.cpp; sourceTree = ""; }; + B3B3D55128713550008A0E2F /* d_blueprnt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blueprnt.cpp; sourceTree = ""; }; + B3B3D55228713550008A0E2F /* d_freekick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_freekick.cpp; sourceTree = ""; }; + B3B3D55328713550008A0E2F /* d_marineb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_marineb.cpp; sourceTree = ""; }; + B3B3D55428713550008A0E2F /* d_ambush.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ambush.cpp; sourceTree = ""; }; + B3B3D55528713550008A0E2F /* d_aeroboto.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_aeroboto.cpp; sourceTree = ""; }; + B3B3D55628713550008A0E2F /* d_mhavoc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_mhavoc.cpp; sourceTree = ""; }; + B3B3D55728713550008A0E2F /* d_bombjack.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_bombjack.cpp; sourceTree = ""; }; + B3B3D55828713550008A0E2F /* d_blockout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_blockout.cpp; sourceTree = ""; }; + B3B3D55928713550008A0E2F /* d_ccastles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_ccastles.cpp; sourceTree = ""; }; + B3B3D55A28713550008A0E2F /* d_berzerk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d_berzerk.cpp; sourceTree = ""; }; + B3B3D55B28713550008A0E2F /* cheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheat.h; sourceTree = ""; }; + B3B3D55C28713550008A0E2F /* tilemap_generic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tilemap_generic.cpp; sourceTree = ""; }; + B3B3D55D28713550008A0E2F /* burn_led.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_led.h; sourceTree = ""; }; + B3B3D55E28713550008A0E2F /* burn_bitmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_bitmap.h; sourceTree = ""; }; + B3B3D55F28713550008A0E2F /* debug_track.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debug_track.cpp; sourceTree = ""; }; + B3B3D56028713550008A0E2F /* burn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn.h; sourceTree = ""; }; + B3B3D56128713550008A0E2F /* bitswap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitswap.h; sourceTree = ""; }; + B3B3D56228713550008A0E2F /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; + B3B3D56328713550008A0E2F /* burn_pal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_pal.cpp; sourceTree = ""; }; + B3B3D56428713550008A0E2F /* burn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn.cpp; sourceTree = ""; }; + B3B3D56528713550008A0E2F /* hiscore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hiscore.cpp; sourceTree = ""; }; + B3B3D56628713550008A0E2F /* stdfunc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdfunc.h; sourceTree = ""; }; + B3B3D56728713550008A0E2F /* burn_sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_sound.h; sourceTree = ""; }; + B3B3D56828713550008A0E2F /* burn_gun.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_gun.h; sourceTree = ""; }; + B3B3D56928713550008A0E2F /* timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + B3B3D56A28713550008A0E2F /* burn_pal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_pal.h; sourceTree = ""; }; + B3B3D56B28713550008A0E2F /* tiles_generic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tiles_generic.h; sourceTree = ""; }; + B3B3D56C28713550008A0E2F /* burnint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burnint.h; sourceTree = ""; }; + B3B3D56D28713550008A0E2F /* hiscore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hiscore.h; sourceTree = ""; }; + B3B3D56E28713550008A0E2F /* driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = driver.h; sourceTree = ""; }; + B3B3D56F28713550008A0E2F /* burn_sound_a.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = burn_sound_a.asm; sourceTree = ""; }; + B3B3D57028713550008A0E2F /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + B3B3D57128713550008A0E2F /* burn_endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_endian.h; sourceTree = ""; }; + B3B3D57228713550008A0E2F /* vector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vector.cpp; sourceTree = ""; }; + B3B3D57328713550008A0E2F /* burn_bitmap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_bitmap.cpp; sourceTree = ""; }; + B3B3D57428713550008A0E2F /* burn_memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_memory.cpp; sourceTree = ""; }; + B3B3D57628713550008A0E2F /* nes_apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nes_apu.h; sourceTree = ""; }; + B3B3D57728713550008A0E2F /* msm5232.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msm5232.h; sourceTree = ""; }; + B3B3D57828713550008A0E2F /* ymz280b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ymz280b.cpp; sourceTree = ""; }; + B3B3D57928713550008A0E2F /* msm5205.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = msm5205.cpp; sourceTree = ""; }; + B3B3D57A28713550008A0E2F /* burn_ym2151.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym2151.cpp; sourceTree = ""; }; + B3B3D57B28713550008A0E2F /* ym2413.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym2413.h; sourceTree = ""; }; + B3B3D57C28713550008A0E2F /* sn76477.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sn76477.cpp; sourceTree = ""; }; + B3B3D57D28713550008A0E2F /* namco_snd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = namco_snd.h; sourceTree = ""; }; + B3B3D57E28713550008A0E2F /* fmopl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fmopl.c; sourceTree = ""; }; + B3B3D57F28713550008A0E2F /* burn_ymf278b.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ymf278b.cpp; sourceTree = ""; }; + B3B3D58028713550008A0E2F /* hc55516.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hc55516.h; sourceTree = ""; }; + B3B3D58128713550008A0E2F /* pokey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pokey.h; sourceTree = ""; }; + B3B3D58228713550008A0E2F /* phoenixsound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = phoenixsound.h; sourceTree = ""; }; + B3B3D58328713550008A0E2F /* rf5c68.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rf5c68.h; sourceTree = ""; }; + B3B3D58428713550008A0E2F /* llander.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = llander.cpp; sourceTree = ""; }; + B3B3D58528713550008A0E2F /* x1010.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x1010.cpp; sourceTree = ""; }; + B3B3D58628713550008A0E2F /* k005289.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k005289.cpp; sourceTree = ""; }; + B3B3D58728713550008A0E2F /* pleiadssound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pleiadssound.cpp; sourceTree = ""; }; + B3B3D58828713550008A0E2F /* dac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dac.h; sourceTree = ""; }; + B3B3D58928713550008A0E2F /* burn_ym2608.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym2608.cpp; sourceTree = ""; }; + B3B3D58A28713550008A0E2F /* tms5110_tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms5110_tables.h; sourceTree = ""; }; + B3B3D58B28713550008A0E2F /* burn_ym2612.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym2612.h; sourceTree = ""; }; + B3B3D58C28713550008A0E2F /* msm6295.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = msm6295.cpp; sourceTree = ""; }; + B3B3D58D28713550008A0E2F /* phoenixsound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = phoenixsound.cpp; sourceTree = ""; }; + B3B3D58E28713550008A0E2F /* upd7759.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upd7759.h; sourceTree = ""; }; + B3B3D58F28713550008A0E2F /* es5506.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = es5506.cpp; sourceTree = ""; }; + B3B3D59028713550008A0E2F /* biquad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = biquad.h; sourceTree = ""; }; + B3B3D59128713550008A0E2F /* flt_rc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flt_rc.h; sourceTree = ""; }; + B3B3D59228713550008A0E2F /* nes_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nes_defs.h; sourceTree = ""; }; + B3B3D59328713550008A0E2F /* burn_ym2608.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym2608.h; sourceTree = ""; }; + B3B3D59428713550008A0E2F /* s14001a.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s14001a.h; sourceTree = ""; }; + B3B3D59528713550008A0E2F /* c352.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = c352.h; sourceTree = ""; }; + B3B3D59628713550008A0E2F /* tms36xx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms36xx.h; sourceTree = ""; }; + B3B3D59728713550008A0E2F /* vlm5030.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vlm5030.cpp; sourceTree = ""; }; + B3B3D59828713550008A0E2F /* burn_ymf262.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ymf262.h; sourceTree = ""; }; + B3B3D59928713550008A0E2F /* tms5220_tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms5220_tables.h; sourceTree = ""; }; + B3B3D59A28713550008A0E2F /* pokey.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pokey.cpp; sourceTree = ""; }; + B3B3D59B28713550008A0E2F /* ics2115.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ics2115.h; sourceTree = ""; }; + B3B3D59C28713550008A0E2F /* dac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dac.cpp; sourceTree = ""; }; + B3B3D59D28713550008A0E2F /* ym2151.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ym2151.c; sourceTree = ""; }; + B3B3D59E28713550008A0E2F /* ymf262.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ymf262.cpp; sourceTree = ""; }; + B3B3D59F28713550008A0E2F /* asteroids.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asteroids.h; sourceTree = ""; }; + B3B3D5A028713550008A0E2F /* ay8910.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ay8910.h; sourceTree = ""; }; + B3B3D5A128713550008A0E2F /* t6w28.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = t6w28.cpp; sourceTree = ""; }; + B3B3D5A228713550008A0E2F /* ym2612.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ym2612.c; sourceTree = ""; }; + B3B3D5A328713550008A0E2F /* fm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fm.h; sourceTree = ""; }; + B3B3D5A428713550008A0E2F /* burn_ymf271.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ymf271.h; sourceTree = ""; }; + B3B3D5A528713550008A0E2F /* tms5110.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms5110.cpp; sourceTree = ""; }; + B3B3D5A628713550008A0E2F /* sp0256.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sp0256.h; sourceTree = ""; }; + B3B3D5A728713550008A0E2F /* ymf278b.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ymf278b.c; sourceTree = ""; }; + B3B3D5A828713550008A0E2F /* namco_snd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = namco_snd.cpp; sourceTree = ""; }; + B3B3D5A928713550008A0E2F /* samples.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = samples.cpp; sourceTree = ""; }; + B3B3D5AA28713550008A0E2F /* sn76496.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sn76496.h; sourceTree = ""; }; + B3B3D5AB28713550008A0E2F /* flower.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = flower.cpp; sourceTree = ""; }; + B3B3D5AC28713550008A0E2F /* gaelco.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gaelco.cpp; sourceTree = ""; }; + B3B3D5AD28713550008A0E2F /* tms5220.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms5220.h; sourceTree = ""; }; + B3B3D5AE28713550008A0E2F /* hc55516.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hc55516.cpp; sourceTree = ""; }; + B3B3D5AF28713550008A0E2F /* iremga20.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iremga20.h; sourceTree = ""; }; + B3B3D5B028713551008A0E2F /* nes_apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nes_apu.cpp; sourceTree = ""; }; + B3B3D5B128713551008A0E2F /* burn_ym2151.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym2151.h; sourceTree = ""; }; + B3B3D5B228713551008A0E2F /* flower.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flower.h; sourceTree = ""; }; + B3B3D5B328713551008A0E2F /* stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream.h; sourceTree = ""; }; + B3B3D5B428713551008A0E2F /* ymf271.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ymf271.cpp; sourceTree = ""; }; + B3B3D5B528713551008A0E2F /* s14001a.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = s14001a.cpp; sourceTree = ""; }; + B3B3D5B628713551008A0E2F /* ymdeltat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ymdeltat.h; sourceTree = ""; }; + B3B3D5B728713551008A0E2F /* t6w28.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = t6w28.h; sourceTree = ""; }; + B3B3D5B828713551008A0E2F /* c6280.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = c6280.h; sourceTree = ""; }; + B3B3D5B928713551008A0E2F /* segapcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = segapcm.h; sourceTree = ""; }; + B3B3D5BA28713551008A0E2F /* k054539.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k054539.cpp; sourceTree = ""; }; + B3B3D5BB28713551008A0E2F /* wiping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiping.h; sourceTree = ""; }; + B3B3D5BC28713551008A0E2F /* multipcm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = multipcm.cpp; sourceTree = ""; }; + B3B3D5BD28713551008A0E2F /* pleiadssound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pleiadssound.h; sourceTree = ""; }; + B3B3D5BE28713551008A0E2F /* burn_md2612.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_md2612.h; sourceTree = ""; }; + B3B3D5BF28713551008A0E2F /* k007232.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k007232.cpp; sourceTree = ""; }; + B3B3D5C028713551008A0E2F /* ymf271.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ymf271.h; sourceTree = ""; }; + B3B3D5C128713551008A0E2F /* i5000.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = i5000.cpp; sourceTree = ""; }; + B3B3D5C228713551008A0E2F /* es5506.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = es5506.h; sourceTree = ""; }; + B3B3D5C328713551008A0E2F /* burn_ym3812.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym3812.cpp; sourceTree = ""; }; + B3B3D5C428713551008A0E2F /* es8712.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = es8712.h; sourceTree = ""; }; + B3B3D5C528713551008A0E2F /* asteroids.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = asteroids.cpp; sourceTree = ""; }; + B3B3D5C628713551008A0E2F /* digitalk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = digitalk.h; sourceTree = ""; }; + B3B3D5C728713551008A0E2F /* rf5c68.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rf5c68.cpp; sourceTree = ""; }; + B3B3D5C828713551008A0E2F /* fmopl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fmopl.h; sourceTree = ""; }; + B3B3D5C928713551008A0E2F /* multipcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = multipcm.h; sourceTree = ""; }; + B3B3D5CA28713551008A0E2F /* digitalk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = digitalk.cpp; sourceTree = ""; }; + B3B3D5CB28713551008A0E2F /* ym2413.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ym2413.c; sourceTree = ""; }; + B3B3D5CC28713551008A0E2F /* c140.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = c140.h; sourceTree = ""; }; + B3B3D5CD28713551008A0E2F /* burn_ym2610.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym2610.h; sourceTree = ""; }; + B3B3D5CE28713551008A0E2F /* k007232.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k007232.h; sourceTree = ""; }; + B3B3D5CF28713551008A0E2F /* burn_y8950.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_y8950.cpp; sourceTree = ""; }; + B3B3D5D028713551008A0E2F /* ics2115.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ics2115.cpp; sourceTree = ""; }; + B3B3D5D128713551008A0E2F /* tms5110.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms5110.h; sourceTree = ""; }; + B3B3D5D228713551008A0E2F /* llander.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = llander.h; sourceTree = ""; }; + B3B3D5D328713551008A0E2F /* es8712.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = es8712.cpp; sourceTree = ""; }; + B3B3D5D428713551008A0E2F /* ym2151.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym2151.h; sourceTree = ""; }; + B3B3D5D528713551008A0E2F /* saa1099.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = saa1099.cpp; sourceTree = ""; }; + B3B3D5D628713551008A0E2F /* k053260.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k053260.cpp; sourceTree = ""; }; + B3B3D5D728713551008A0E2F /* k051649.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k051649.h; sourceTree = ""; }; + B3B3D5D828713551008A0E2F /* k051649.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k051649.cpp; sourceTree = ""; }; + B3B3D5D928713551008A0E2F /* wiping.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wiping.cpp; sourceTree = ""; }; + B3B3D5DA28713551008A0E2F /* bzone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bzone.cpp; sourceTree = ""; }; + B3B3D5DB28713551008A0E2F /* x1010.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x1010.h; sourceTree = ""; }; + B3B3D5DC28713551008A0E2F /* msm5205.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msm5205.h; sourceTree = ""; }; + B3B3D5DD28713551008A0E2F /* upd7759.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = upd7759.cpp; sourceTree = ""; }; + B3B3D5DE28713551008A0E2F /* snk6502_sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snk6502_sound.cpp; sourceTree = ""; }; + B3B3D5DF28713551008A0E2F /* burn_ymf278b.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ymf278b.h; sourceTree = ""; }; + B3B3D5E028713551008A0E2F /* iremga20.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = iremga20.cpp; sourceTree = ""; }; + B3B3D5E128713551008A0E2F /* redbaron.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = redbaron.cpp; sourceTree = ""; }; + B3B3D5E228713551008A0E2F /* burn_ym2413.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym2413.h; sourceTree = ""; }; + B3B3D5E328713551008A0E2F /* rescap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rescap.h; sourceTree = ""; }; + B3B3D5E428713551008A0E2F /* sp0250.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sp0250.h; sourceTree = ""; }; + B3B3D5E528713551008A0E2F /* k053260.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k053260.h; sourceTree = ""; }; + B3B3D5E628713551008A0E2F /* c352.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = c352.cpp; sourceTree = ""; }; + B3B3D5E728713551008A0E2F /* burn_ym3526.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym3526.h; sourceTree = ""; }; + B3B3D5E828713551008A0E2F /* burn_ym3812.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym3812.h; sourceTree = ""; }; + B3B3D5E928713551008A0E2F /* redbaron.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = redbaron.h; sourceTree = ""; }; + B3B3D5EA28713551008A0E2F /* burn_ymf271.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ymf271.cpp; sourceTree = ""; }; + B3B3D5EB28713551008A0E2F /* burn_md2612.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_md2612.cpp; sourceTree = ""; }; + B3B3D5EC28713551008A0E2F /* sp0256.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sp0256.cpp; sourceTree = ""; }; + B3B3D5ED28713551008A0E2F /* fm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fm.c; sourceTree = ""; }; + B3B3D5EE28713551008A0E2F /* ym2612.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym2612.h; sourceTree = ""; }; + B3B3D5EF28713551008A0E2F /* burn_ym2203.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_ym2203.h; sourceTree = ""; }; + B3B3D5F028713551008A0E2F /* burn_y8950.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_y8950.h; sourceTree = ""; }; + B3B3D5F128713551008A0E2F /* vlm5030.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vlm5030.h; sourceTree = ""; }; + B3B3D5F228713551008A0E2F /* downsample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = downsample.h; sourceTree = ""; }; + B3B3D5F328713551008A0E2F /* tms36xx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms36xx.cpp; sourceTree = ""; }; + B3B3D5F428713551008A0E2F /* msm5232.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = msm5232.cpp; sourceTree = ""; }; + B3B3D5F528713551008A0E2F /* i5000.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i5000.h; sourceTree = ""; }; + B3B3D5F628713551008A0E2F /* sn76496.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sn76496.cpp; sourceTree = ""; }; + B3B3D5F728713551008A0E2F /* gaelco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gaelco.h; sourceTree = ""; }; + B3B3D5F828713551008A0E2F /* saa1099.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = saa1099.h; sourceTree = ""; }; + B3B3D5F928713551008A0E2F /* ay8910.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ay8910.c; sourceTree = ""; }; + B3B3D5FA28713551008A0E2F /* k005289.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k005289.h; sourceTree = ""; }; + B3B3D5FB28713551008A0E2F /* burn_ymf262.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ymf262.cpp; sourceTree = ""; }; + B3B3D5FC28713551008A0E2F /* burn_ym2413.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym2413.cpp; sourceTree = ""; }; + B3B3D5FD28713551008A0E2F /* msm6295.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msm6295.h; sourceTree = ""; }; + B3B3D5FE28713551008A0E2F /* burn_ym3526.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym3526.cpp; sourceTree = ""; }; + B3B3D5FF28713551008A0E2F /* k054539.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k054539.h; sourceTree = ""; }; + B3B3D60028713551008A0E2F /* burn_ym2610.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym2610.cpp; sourceTree = ""; }; + B3B3D60128713551008A0E2F /* segapcm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = segapcm.cpp; sourceTree = ""; }; + B3B3D60228713551008A0E2F /* bzone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bzone.h; sourceTree = ""; }; + B3B3D60328713551008A0E2F /* ymdeltat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ymdeltat.c; sourceTree = ""; }; + B3B3D60428713551008A0E2F /* snk6502_sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snk6502_sound.h; sourceTree = ""; }; + B3B3D60528713551008A0E2F /* tms5220.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms5220.cpp; sourceTree = ""; }; + B3B3D60628713551008A0E2F /* sp0250.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sp0250.cpp; sourceTree = ""; }; + B3B3D60728713551008A0E2F /* flt_rc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = flt_rc.cpp; sourceTree = ""; }; + B3B3D60828713551008A0E2F /* c6280.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = c6280.cpp; sourceTree = ""; }; + B3B3D60928713551008A0E2F /* c140.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = c140.cpp; sourceTree = ""; }; + B3B3D60A28713551008A0E2F /* burn_ym2612.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym2612.cpp; sourceTree = ""; }; + B3B3D60B28713551008A0E2F /* sn76477.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sn76477.h; sourceTree = ""; }; + B3B3D60C28713551008A0E2F /* ymf278b.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ymf278b.h; sourceTree = ""; }; + B3B3D60D28713551008A0E2F /* burn_ym2203.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_ym2203.cpp; sourceTree = ""; }; + B3B3D60E28713551008A0E2F /* ymf262.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ymf262.h; sourceTree = ""; }; + B3B3D60F28713551008A0E2F /* ymz280b.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ymz280b.h; sourceTree = ""; }; + B3B3D61028713551008A0E2F /* samples.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = samples.h; sourceTree = ""; }; + B3B3D61128713551008A0E2F /* burn_shift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burn_shift.h; sourceTree = ""; }; + B3B3D61228713551008A0E2F /* load.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = load.cpp; sourceTree = ""; }; + B3B3D61328713551008A0E2F /* tilemap_generic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tilemap_generic.h; sourceTree = ""; }; + B3B3D61428713551008A0E2F /* cheat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cheat.cpp; sourceTree = ""; }; + B3B3D61528713551008A0E2F /* vector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = ""; }; + B3B3D61628713551008A0E2F /* state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = state.h; sourceTree = ""; }; + B3B3D61728713551008A0E2F /* burn_sound_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_sound_c.cpp; sourceTree = ""; }; + B3B3D61828713551008A0E2F /* burn_sound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_sound.cpp; sourceTree = ""; }; + B3B3D61928713551008A0E2F /* burn_gun.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_gun.cpp; sourceTree = ""; }; + B3B3D61A28713551008A0E2F /* tiles_generic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tiles_generic.cpp; sourceTree = ""; }; + B3B3D61B28713551008A0E2F /* burn_shift.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = burn_shift.cpp; sourceTree = ""; }; + B3B3D61D28713551008A0E2F /* k1ge.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = k1ge.cpp; sourceTree = ""; }; + B3B3D61E28713551008A0E2F /* midsat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midsat.h; sourceTree = ""; }; + B3B3D61F28713551008A0E2F /* midcsd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midcsd.cpp; sourceTree = ""; }; + B3B3D62028713551008A0E2F /* vdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdc.h; sourceTree = ""; }; + B3B3D62128713551008A0E2F /* nb1414m4_8bit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nb1414m4_8bit.cpp; sourceTree = ""; }; + B3B3D62228713551008A0E2F /* vdc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vdc.cpp; sourceTree = ""; }; + B3B3D62328713551008A0E2F /* resnet.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = resnet.cpp; sourceTree = ""; }; + B3B3D62428713551008A0E2F /* c169.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = c169.h; sourceTree = ""; }; + B3B3D62528713551008A0E2F /* watchdog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = watchdog.h; sourceTree = ""; }; + B3B3D62628713551008A0E2F /* nb1414m4_8bit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nb1414m4_8bit.h; sourceTree = ""; }; + B3B3D62728713551008A0E2F /* eeprom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eeprom.h; sourceTree = ""; }; + B3B3D62828713551008A0E2F /* st0020.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = st0020.h; sourceTree = ""; }; + B3B3D62928713551008A0E2F /* bsmt2000.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bsmt2000.h; sourceTree = ""; }; + B3B3D62A28713551008A0E2F /* earom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = earom.h; sourceTree = ""; }; + B3B3D62B28713551008A0E2F /* i4x00.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i4x00.h; sourceTree = ""; }; + B3B3D62C28713551008A0E2F /* namcoio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = namcoio.h; sourceTree = ""; }; + B3B3D62D28713551008A0E2F /* kaneko_tmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kaneko_tmap.h; sourceTree = ""; }; + B3B3D62E28713551008A0E2F /* qs1000.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qs1000.cpp; sourceTree = ""; }; + B3B3D62F28713551008A0E2F /* nb1414m4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nb1414m4.h; sourceTree = ""; }; + B3B3D63028713551008A0E2F /* nmk004.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nmk004.cpp; sourceTree = ""; }; + B3B3D63128713551008A0E2F /* resnet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resnet.h; sourceTree = ""; }; + B3B3D63228713551008A0E2F /* gaelco_crypt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gaelco_crypt.cpp; sourceTree = ""; }; + B3B3D63328713551008A0E2F /* nb1414m4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nb1414m4.cpp; sourceTree = ""; }; + B3B3D63428713551008A0E2F /* slapstic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = slapstic.cpp; sourceTree = ""; }; + B3B3D63528713551008A0E2F /* nmk004.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nmk004.h; sourceTree = ""; }; + B3B3D63628713551008A0E2F /* tms9928a.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms9928a.h; sourceTree = ""; }; + B3B3D63728713551008A0E2F /* 8255ppi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 8255ppi.h; sourceTree = ""; }; + B3B3D63828713551008A0E2F /* 8257dma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 8257dma.h; sourceTree = ""; }; + B3B3D63928713551008A0E2F /* earom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = earom.cpp; sourceTree = ""; }; + B3B3D63A28713551008A0E2F /* timekpr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timekpr.cpp; sourceTree = ""; }; + B3B3D63B28713551008A0E2F /* pandora.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pandora.cpp; sourceTree = ""; }; + B3B3D63C28713551008A0E2F /* avgdvg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = avgdvg.h; sourceTree = ""; }; + B3B3D63D28713551008A0E2F /* atarimo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atarimo.h; sourceTree = ""; }; + B3B3D63E28713551008A0E2F /* poly.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = poly.cpp; sourceTree = ""; }; + B3B3D63F28713551008A0E2F /* st0020.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = st0020.cpp; sourceTree = ""; }; + B3B3D64028713551008A0E2F /* midtcs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midtcs.cpp; sourceTree = ""; }; + B3B3D64128713551008A0E2F /* v3021.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = v3021.cpp; sourceTree = ""; }; + B3B3D64228713551008A0E2F /* timekpr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timekpr.h; sourceTree = ""; }; + B3B3D64328713551008A0E2F /* avgdvg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = avgdvg.cpp; sourceTree = ""; }; + B3B3D64428713551008A0E2F /* 8257dma.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 8257dma.cpp; sourceTree = ""; }; + B3B3D64528713551008A0E2F /* seibusnd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seibusnd.h; sourceTree = ""; }; + B3B3D64628713551008A0E2F /* atarijsa.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = atarijsa.cpp; sourceTree = ""; }; + B3B3D64728713551008A0E2F /* atarirle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = atarirle.cpp; sourceTree = ""; }; + B3B3D64828713551008A0E2F /* namco_c45.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = namco_c45.h; sourceTree = ""; }; + B3B3D64928713551008A0E2F /* nmk112.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nmk112.cpp; sourceTree = ""; }; + B3B3D64A28713551008A0E2F /* kaneko_tmap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = kaneko_tmap.cpp; sourceTree = ""; }; + B3B3D64B28713551008A0E2F /* intelfsh.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = intelfsh.cpp; sourceTree = ""; }; + B3B3D64C28713551008A0E2F /* slapstic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = slapstic.h; sourceTree = ""; }; + B3B3D64D28713551008A0E2F /* t5182.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = t5182.cpp; sourceTree = ""; }; + B3B3D64E28713551008A0E2F /* tlc34076.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tlc34076.cpp; sourceTree = ""; }; + B3B3D64F28713551008A0E2F /* 6821pia.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 6821pia.cpp; sourceTree = ""; }; + B3B3D65028713551008A0E2F /* watchdog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = watchdog.cpp; sourceTree = ""; }; + B3B3D65128713551008A0E2F /* seibucop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = seibucop.cpp; sourceTree = ""; }; + B3B3D65228713551008A0E2F /* midsg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midsg.h; sourceTree = ""; }; + B3B3D65328713551008A0E2F /* atarivad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = atarivad.cpp; sourceTree = ""; }; + B3B3D65428713551008A0E2F /* pandora.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pandora.h; sourceTree = ""; }; + B3B3D65528713551008A0E2F /* mermaid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mermaid.cpp; sourceTree = ""; }; + B3B3D65628713551008A0E2F /* tlc34076.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tlc34076.h; sourceTree = ""; }; + B3B3D65728713551008A0E2F /* bsmt2000.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bsmt2000.cpp; sourceTree = ""; }; + B3B3D65828713551008A0E2F /* joyprocess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = joyprocess.cpp; sourceTree = ""; }; + B3B3D65928713551008A0E2F /* 8255ppi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 8255ppi.cpp; sourceTree = ""; }; + B3B3D65A28713551008A0E2F /* nmk112.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nmk112.h; sourceTree = ""; }; + B3B3D65B28713551008A0E2F /* atarirle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atarirle.h; sourceTree = ""; }; + B3B3D65C28713551008A0E2F /* atarijsa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atarijsa.h; sourceTree = ""; }; + B3B3D65D28713551008A0E2F /* gaelco_crypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gaelco_crypt.h; sourceTree = ""; }; + B3B3D65E28713551008A0E2F /* atariic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = atariic.cpp; sourceTree = ""; }; + B3B3D65F28713551008A0E2F /* v3021.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = v3021.h; sourceTree = ""; }; + B3B3D66028713551008A0E2F /* ds2404.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ds2404.cpp; sourceTree = ""; }; + B3B3D66128713551008A0E2F /* sknsspr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sknsspr.h; sourceTree = ""; }; + B3B3D66228713551008A0E2F /* midtcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midtcs.h; sourceTree = ""; }; + B3B3D66328713551008A0E2F /* sknsspr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sknsspr.cpp; sourceTree = ""; }; + B3B3D66428713551008A0E2F /* decobsmt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decobsmt.h; sourceTree = ""; }; + B3B3D66528713551008A0E2F /* 6821pia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 6821pia.h; sourceTree = ""; }; + B3B3D66628713551008A0E2F /* mb87078.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mb87078.cpp; sourceTree = ""; }; + B3B3D66728713551008A0E2F /* tms34061.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34061.h; sourceTree = ""; }; + B3B3D66828713551008A0E2F /* x2212.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x2212.cpp; sourceTree = ""; }; + B3B3D66928713551008A0E2F /* qs1000.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qs1000.h; sourceTree = ""; }; + B3B3D66A28713551008A0E2F /* poly.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = poly.h; sourceTree = ""; }; + B3B3D66B28713551008A0E2F /* midssio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midssio.cpp; sourceTree = ""; }; + B3B3D66C28713551008A0E2F /* midsat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midsat.cpp; sourceTree = ""; }; + B3B3D66D28713551008A0E2F /* midcsd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midcsd.h; sourceTree = ""; }; + B3B3D66E28713551008A0E2F /* tms34061.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34061.cpp; sourceTree = ""; }; + B3B3D66F28713551008A0E2F /* atarimo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = atarimo.cpp; sourceTree = ""; }; + B3B3D67028713551008A0E2F /* mathbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mathbox.cpp; sourceTree = ""; }; + B3B3D67128713551008A0E2F /* x2212.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x2212.h; sourceTree = ""; }; + B3B3D67228713551008A0E2F /* midsg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = midsg.cpp; sourceTree = ""; }; + B3B3D67328713551008A0E2F /* atarivad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atarivad.h; sourceTree = ""; }; + B3B3D67428713551008A0E2F /* atariic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atariic.h; sourceTree = ""; }; + B3B3D67528713551008A0E2F /* namcoio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = namcoio.cpp; sourceTree = ""; }; + B3B3D67628713551008A0E2F /* mermaid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mermaid.h; sourceTree = ""; }; + B3B3D67728713551008A0E2F /* seibusnd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = seibusnd.cpp; sourceTree = ""; }; + B3B3D67828713551008A0E2F /* mathbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mathbox.h; sourceTree = ""; }; + B3B3D67928713551008A0E2F /* mb87078.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mb87078.h; sourceTree = ""; }; + B3B3D67A28713551008A0E2F /* eeprom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = eeprom.cpp; sourceTree = ""; }; + B3B3D67B28713551008A0E2F /* decobsmt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decobsmt.cpp; sourceTree = ""; }; + B3B3D67C28713551008A0E2F /* k1ge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = k1ge.h; sourceTree = ""; }; + B3B3D67D28713551008A0E2F /* t5182.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = t5182.h; sourceTree = ""; }; + B3B3D67E28713551008A0E2F /* i4x00.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = i4x00.cpp; sourceTree = ""; }; + B3B3D67F28713551008A0E2F /* joyprocess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joyprocess.h; sourceTree = ""; }; + B3B3D68028713551008A0E2F /* intelfsh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intelfsh.h; sourceTree = ""; }; + B3B3D68128713551008A0E2F /* namco_c45.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = namco_c45.cpp; sourceTree = ""; }; + B3B3D68228713551008A0E2F /* midssio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midssio.h; sourceTree = ""; }; + B3B3D68328713551008A0E2F /* ds2404.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ds2404.h; sourceTree = ""; }; + B3B3D68428713551008A0E2F /* seibucop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seibucop.h; sourceTree = ""; }; + B3B3D68528713551008A0E2F /* c169.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = c169.cpp; sourceTree = ""; }; + B3B3D68628713551008A0E2F /* tms9928a.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms9928a.cpp; sourceTree = ""; }; + B3B3D68928713551008A0E2F /* m68kfpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kfpu.c; sourceTree = ""; }; + B3B3D68A28713551008A0E2F /* m68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; + B3B3D68B28713551008A0E2F /* m68kcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kcpu.c; sourceTree = ""; }; + B3B3D68C28713551008A0E2F /* m68kdasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kdasm.c; sourceTree = ""; }; + B3B3D68D28713551008A0E2F /* m68kmake.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kmake.c; sourceTree = ""; }; + B3B3D68E28713551008A0E2F /* m68kcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kcpu.h; sourceTree = ""; }; + B3B3D68F28713551008A0E2F /* m68kconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kconf.h; sourceTree = ""; }; + B3B3D69028713551008A0E2F /* m68k_in.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68k_in.c; sourceTree = ""; }; + B3B3D69128713551008A0E2F /* z180_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z180_intf.cpp; sourceTree = ""; }; + B3B3D69228713551008A0E2F /* z80_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z80_intf.cpp; sourceTree = ""; }; + B3B3D69428713551008A0E2F /* mcs48.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mcs48.cpp; sourceTree = ""; }; + B3B3D69528713551008A0E2F /* mcs48.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mcs48.h; sourceTree = ""; }; + B3B3D69628713551008A0E2F /* m6800_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6800_intf.cpp; sourceTree = ""; }; + B3B3D69828713551008A0E2F /* m6805.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6805.h; sourceTree = ""; }; + B3B3D69928713551008A0E2F /* m6805.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6805.cpp; sourceTree = ""; }; + B3B3D69A28713551008A0E2F /* 6805ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 6805ops.c; sourceTree = ""; }; + B3B3D69B28713551008A0E2F /* v60_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = v60_intf.h; sourceTree = ""; }; + B3B3D69C28713551008A0E2F /* mips3_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mips3_intf.cpp; sourceTree = ""; }; + B3B3D69D28713551008A0E2F /* e132xs_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = e132xs_intf.h; sourceTree = ""; }; + B3B3D69E28713551008A0E2F /* m6502_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6502_intf.h; sourceTree = ""; }; + B3B3D69F28713551008A0E2F /* mips3_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_intf.h; sourceTree = ""; }; + B3B3D6A028713551008A0E2F /* arm_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_intf.h; sourceTree = ""; }; + B3B3D6A128713551008A0E2F /* tms34010_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34010_intf.cpp; sourceTree = ""; }; + B3B3D6A228713551008A0E2F /* adsp2100_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = adsp2100_intf.h; sourceTree = ""; }; + B3B3D6A328713551008A0E2F /* i386_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i386_intf.h; sourceTree = ""; }; + B3B3D6A428713551008A0E2F /* m68000_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m68000_intf.cpp; sourceTree = ""; }; + B3B3D6A628713552008A0E2F /* sh2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh2.cpp; sourceTree = ""; }; + B3B3D6A828713552008A0E2F /* 34010gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 34010gfx.c; sourceTree = ""; }; + B3B3D6A928713552008A0E2F /* 34010fld.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 34010fld.c; sourceTree = ""; }; + B3B3D6AA28713552008A0E2F /* 34010ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 34010ops.c; sourceTree = ""; }; + B3B3D6AB28713552008A0E2F /* tms34010.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010.h; sourceTree = ""; }; + B3B3D6AC28713552008A0E2F /* tms34010.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34010.cpp; sourceTree = ""; }; + B3B3D6AD28713552008A0E2F /* 34010tbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 34010tbl.c; sourceTree = ""; }; + B3B3D6AE28713552008A0E2F /* 34010ops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 34010ops.h; sourceTree = ""; }; + B3B3D6AF28713552008A0E2F /* m68000_debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68000_debug.h; sourceTree = ""; }; + B3B3D6B028713552008A0E2F /* pic16c5x_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pic16c5x_intf.cpp; sourceTree = ""; }; + B3B3D6B228713552008A0E2F /* z80pio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z80pio.cpp; sourceTree = ""; }; + B3B3D6B328713552008A0E2F /* z80pio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80pio.h; sourceTree = ""; }; + B3B3D6B428713552008A0E2F /* z80ctc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z80ctc.cpp; sourceTree = ""; }; + B3B3D6B528713552008A0E2F /* z80.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z80.cpp; sourceTree = ""; }; + B3B3D6B628713552008A0E2F /* z80ctc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80ctc.h; sourceTree = ""; }; + B3B3D6B728713552008A0E2F /* z80daisy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80daisy.h; sourceTree = ""; }; + B3B3D6B828713552008A0E2F /* z80daisy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z80daisy.cpp; sourceTree = ""; }; + B3B3D6B928713552008A0E2F /* z80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80.h; sourceTree = ""; }; + B3B3D6BA28713552008A0E2F /* nec_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nec_intf.cpp; sourceTree = ""; }; + B3B3D6BB28713552008A0E2F /* tlcs90_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tlcs90_intf.h; sourceTree = ""; }; + B3B3D6BC28713552008A0E2F /* tms34_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34_intf.h; sourceTree = ""; }; + B3B3D6BE28713552008A0E2F /* tblh6280.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tblh6280.c; sourceTree = ""; }; + B3B3D6BF28713552008A0E2F /* h6280.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = h6280.cpp; sourceTree = ""; }; + B3B3D6C028713552008A0E2F /* h6280.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = h6280.h; sourceTree = ""; }; + B3B3D6C128713552008A0E2F /* h6280ops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = h6280ops.h; sourceTree = ""; }; + B3B3D6C228713552008A0E2F /* tms34010_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_intf.h; sourceTree = ""; }; + B3B3D6C428713552008A0E2F /* i386intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i386intf.h; sourceTree = ""; }; + B3B3D6C528713552008A0E2F /* pentops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pentops.c; sourceTree = ""; }; + B3B3D6C628713552008A0E2F /* i386ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = i386ops.c; sourceTree = ""; }; + B3B3D6C728713552008A0E2F /* x87ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x87ops.c; sourceTree = ""; }; + B3B3D6C828713552008A0E2F /* cycles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cycles.h; sourceTree = ""; }; + B3B3D6C928713552008A0E2F /* i386op16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = i386op16.c; sourceTree = ""; }; + B3B3D6CA28713552008A0E2F /* i386dasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = i386dasm.c; sourceTree = ""; }; + B3B3D6CB28713552008A0E2F /* i386.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = i386.cpp; sourceTree = ""; }; + B3B3D6CC28713552008A0E2F /* i386op32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = i386op32.c; sourceTree = ""; }; + B3B3D6CD28713552008A0E2F /* i386ops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i386ops.h; sourceTree = ""; }; + B3B3D6CE28713552008A0E2F /* i386.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i386.h; sourceTree = ""; }; + B3B3D6CF28713552008A0E2F /* i486ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = i486ops.c; sourceTree = ""; }; + B3B3D6D028713552008A0E2F /* m6800_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6800_intf.h; sourceTree = ""; }; + B3B3D6D128713552008A0E2F /* h6280_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = h6280_intf.h; sourceTree = ""; }; + B3B3D6D228713552008A0E2F /* arm_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_intf.cpp; sourceTree = ""; }; + B3B3D6D428713552008A0E2F /* opsc02.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opsc02.h; sourceTree = ""; }; + B3B3D6D528713552008A0E2F /* ops02.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ops02.h; sourceTree = ""; }; + B3B3D6D628713552008A0E2F /* t6502.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = t6502.c; sourceTree = ""; }; + B3B3D6D728713552008A0E2F /* tdeco16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tdeco16.c; sourceTree = ""; }; + B3B3D6D828713552008A0E2F /* ill02.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ill02.h; sourceTree = ""; }; + B3B3D6D928713552008A0E2F /* opsn2a03.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opsn2a03.h; sourceTree = ""; }; + B3B3D6DA28713552008A0E2F /* tn2a03.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tn2a03.c; sourceTree = ""; }; + B3B3D6DB28713552008A0E2F /* m6502.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6502.cpp; sourceTree = ""; }; + B3B3D6DC28713552008A0E2F /* t65c02.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = t65c02.c; sourceTree = ""; }; + B3B3D6DD28713552008A0E2F /* m6502.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6502.h; sourceTree = ""; }; + B3B3D6DE28713552008A0E2F /* t65sc02.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = t65sc02.c; sourceTree = ""; }; + B3B3D6DF28713552008A0E2F /* hd6309_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hd6309_intf.h; sourceTree = ""; }; + B3B3D6E128713552008A0E2F /* i8039.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = i8039.cpp; sourceTree = ""; }; + B3B3D6E228713552008A0E2F /* i8039.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i8039.h; sourceTree = ""; }; + B3B3D6E328713552008A0E2F /* sh2_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2_intf.h; sourceTree = ""; }; + B3B3D6E428713552008A0E2F /* h6280_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = h6280_intf.cpp; sourceTree = ""; }; + B3B3D6E628713552008A0E2F /* tlcs900.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tlcs900.cpp; sourceTree = ""; }; + B3B3D6E728713552008A0E2F /* tlcs900.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tlcs900.h; sourceTree = ""; }; + B3B3D6E828713552008A0E2F /* 900tbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 900tbl.c; sourceTree = ""; }; + B3B3D6EA28713552008A0E2F /* tms34010_gfx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_gfx.h; sourceTree = ""; }; + B3B3D6EB28713552008A0E2F /* tms34010_arithm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_arithm.h; sourceTree = ""; }; + B3B3D6EC28713552008A0E2F /* tms34010_ctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_ctrl.h; sourceTree = ""; }; + B3B3D6ED28713552008A0E2F /* tms34010_memacc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_memacc.h; sourceTree = ""; }; + B3B3D6EE28713552008A0E2F /* tms34010_jump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_jump.h; sourceTree = ""; }; + B3B3D6EF28713552008A0E2F /* tms34010_mov.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_mov.h; sourceTree = ""; }; + B3B3D6F028713552008A0E2F /* tms34010_shift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_shift.h; sourceTree = ""; }; + B3B3D6F128713552008A0E2F /* tms34010_dasm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34010_dasm.cpp; sourceTree = ""; }; + B3B3D6F228713552008A0E2F /* tms34010_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010_defs.h; sourceTree = ""; }; + B3B3D6F328713552008A0E2F /* tms34010.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms34010.h; sourceTree = ""; }; + B3B3D6F428713552008A0E2F /* tms34010.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34010.cpp; sourceTree = ""; }; + B3B3D6F528713552008A0E2F /* tms34010_optable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34010_optable.cpp; sourceTree = ""; }; + B3B3D6F628713552008A0E2F /* tms34010_newdasm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34010_newdasm.cpp; sourceTree = ""; }; + B3B3D6F728713552008A0E2F /* m68000_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68000_intf.h; sourceTree = ""; }; + B3B3D6F928713552008A0E2F /* mips3_rw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_rw.h; sourceTree = ""; }; + B3B3D6FA28713552008A0E2F /* mips3_arithm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_arithm.h; sourceTree = ""; }; + B3B3D6FC28713552008A0E2F /* mips3_x64_rw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_rw.h; sourceTree = ""; }; + B3B3D6FD28713552008A0E2F /* mips3_x64_cop1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_cop1.h; sourceTree = ""; }; + B3B3D6FF28713552008A0E2F /* xbyak_mnemonic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_mnemonic.h; sourceTree = ""; }; + B3B3D70028713552008A0E2F /* xbyak_bin2hex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_bin2hex.h; sourceTree = ""; }; + B3B3D70128713552008A0E2F /* xbyak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak.h; sourceTree = ""; }; + B3B3D70228713552008A0E2F /* xbyak_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_util.h; sourceTree = ""; }; + B3B3D70328713552008A0E2F /* mips3_x64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mips3_x64.cpp; sourceTree = ""; }; + B3B3D70428713552008A0E2F /* mips3_x64_arithm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_arithm.h; sourceTree = ""; }; + B3B3D70528713552008A0E2F /* mips3_x64_misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_misc.h; sourceTree = ""; }; + B3B3D70628713552008A0E2F /* mips3_x64_shift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_shift.h; sourceTree = ""; }; + B3B3D70728713552008A0E2F /* mips3_x64_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_defs.h; sourceTree = ""; }; + B3B3D70828713552008A0E2F /* mips3_x64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64.h; sourceTree = ""; }; + B3B3D70928713552008A0E2F /* mips3_x64_cop0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_cop0.h; sourceTree = ""; }; + B3B3D70A28713552008A0E2F /* mips3_x64_bitops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_bitops.h; sourceTree = ""; }; + B3B3D70B28713552008A0E2F /* mips3_x64_branch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_x64_branch.h; sourceTree = ""; }; + B3B3D70C28713552008A0E2F /* mips3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3.h; sourceTree = ""; }; + B3B3D70D28713552008A0E2F /* mips3_bitops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_bitops.h; sourceTree = ""; }; + B3B3D70E28713552008A0E2F /* mips3_shift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_shift.h; sourceTree = ""; }; + B3B3D70F28713552008A0E2F /* mips3_branch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_branch.h; sourceTree = ""; }; + B3B3D71028713552008A0E2F /* mips3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mips3.cpp; sourceTree = ""; }; + B3B3D71128713552008A0E2F /* mips3_misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_misc.h; sourceTree = ""; }; + B3B3D71228713552008A0E2F /* mipsdef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mipsdef.h; sourceTree = ""; }; + B3B3D71328713552008A0E2F /* mips3_dasm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mips3_dasm.cpp; sourceTree = ""; }; + B3B3D71428713552008A0E2F /* mips3_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_memory.h; sourceTree = ""; }; + B3B3D71528713552008A0E2F /* cop1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cop1.cpp; sourceTree = ""; }; + B3B3D71628713552008A0E2F /* cop0.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cop0.cpp; sourceTree = ""; }; + B3B3D71728713552008A0E2F /* mips3_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mips3_common.h; sourceTree = ""; }; + B3B3D71A28713552008A0E2F /* a68k.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = a68k.s; sourceTree = ""; }; + B3B3D71B28713552008A0E2F /* fba_make68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fba_make68k.c; sourceTree = ""; }; + B3B3D71C28713552008A0E2F /* a68ktbl.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = a68ktbl.inc; sourceTree = ""; }; + B3B3D71D28713552008A0E2F /* builda68k.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = builda68k.bat; sourceTree = ""; }; + B3B3D71E28713552008A0E2F /* fba_make68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fba_make68k.c; sourceTree = ""; }; + B3B3D71F28713552008A0E2F /* nec_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nec_intf.h; sourceTree = ""; }; + B3B3D72128713552008A0E2F /* 6800tbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 6800tbl.c; sourceTree = ""; }; + B3B3D72228713552008A0E2F /* m6800.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6800.cpp; sourceTree = ""; }; + B3B3D72328713552008A0E2F /* 6800ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 6800ops.c; sourceTree = ""; }; + B3B3D72428713552008A0E2F /* m6800.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6800.h; sourceTree = ""; }; + B3B3D72628713552008A0E2F /* 6809ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 6809ops.c; sourceTree = ""; }; + B3B3D72728713552008A0E2F /* m6809.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6809.h; sourceTree = ""; }; + B3B3D72828713552008A0E2F /* 6809tbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 6809tbl.c; sourceTree = ""; }; + B3B3D72928713552008A0E2F /* m6809.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6809.cpp; sourceTree = ""; }; + B3B3D72B28713552008A0E2F /* konami.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = konami.cpp; sourceTree = ""; }; + B3B3D72C28713552008A0E2F /* konamtbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = konamtbl.c; sourceTree = ""; }; + B3B3D72D28713552008A0E2F /* konami.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = konami.h; sourceTree = ""; }; + B3B3D72E28713552008A0E2F /* konamops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = konamops.c; sourceTree = ""; }; + B3B3D72F28713552008A0E2F /* pic16c5x_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pic16c5x_intf.h; sourceTree = ""; }; + B3B3D73028713552008A0E2F /* tms34_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms34_intf.cpp; sourceTree = ""; }; + B3B3D73128713552008A0E2F /* arm7_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm7_intf.h; sourceTree = ""; }; + B3B3D73328713552008A0E2F /* adsp2100.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = adsp2100.cpp; sourceTree = ""; }; + B3B3D73428713552008A0E2F /* adsp2100.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = adsp2100.h; sourceTree = ""; }; + B3B3D73528713552008A0E2F /* 2100dasm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 2100dasm.cpp; sourceTree = ""; }; + B3B3D73628713552008A0E2F /* adsp2100_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = adsp2100_defs.h; sourceTree = ""; }; + B3B3D73728713552008A0E2F /* 2100ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 2100ops.c; sourceTree = ""; }; + B3B3D73828713552008A0E2F /* m6809_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6809_intf.h; sourceTree = ""; }; + B3B3D73928713552008A0E2F /* m377_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m377_intf.h; sourceTree = ""; }; + B3B3D73A28713552008A0E2F /* s2650_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = s2650_intf.cpp; sourceTree = ""; }; + B3B3D73B28713552008A0E2F /* m6805_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6805_intf.h; sourceTree = ""; }; + B3B3D73D28713552008A0E2F /* upd7725.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = upd7725.cpp; sourceTree = ""; }; + B3B3D73E28713552008A0E2F /* upd7725.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upd7725.h; sourceTree = ""; }; + B3B3D73F28713552008A0E2F /* m6809_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6809_intf.cpp; sourceTree = ""; }; + B3B3D74028713552008A0E2F /* m6502_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6502_intf.cpp; sourceTree = ""; }; + B3B3D74228713552008A0E2F /* z180.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z180.h; sourceTree = ""; }; + B3B3D74328713552008A0E2F /* z180xy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z180xy.c; sourceTree = ""; }; + B3B3D74428713552008A0E2F /* z180ops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z180ops.h; sourceTree = ""; }; + B3B3D74528713552008A0E2F /* z180fd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z180fd.c; sourceTree = ""; }; + B3B3D74628713552008A0E2F /* z180.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z180.cpp; sourceTree = ""; }; + B3B3D74728713552008A0E2F /* z180op.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z180op.c; sourceTree = ""; }; + B3B3D74828713552008A0E2F /* z180ed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z180ed.c; sourceTree = ""; }; + B3B3D74928713552008A0E2F /* z180tbl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z180tbl.h; sourceTree = ""; }; + B3B3D74A28713552008A0E2F /* z180dd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z180dd.c; sourceTree = ""; }; + B3B3D74B28713552008A0E2F /* z180cb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z180cb.c; sourceTree = ""; }; + B3B3D74C28713552008A0E2F /* adsp2100_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = adsp2100_intf.cpp; sourceTree = ""; }; + B3B3D74D28713552008A0E2F /* upd7810_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upd7810_intf.h; sourceTree = ""; }; + B3B3D74F28713552008A0E2F /* tms32010.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tms32010.h; sourceTree = ""; }; + B3B3D75028713552008A0E2F /* tms32010.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tms32010.cpp; sourceTree = ""; }; + B3B3D75228713552008A0E2F /* v25instr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = v25instr.c; sourceTree = ""; }; + B3B3D75328713552008A0E2F /* v25sfr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = v25sfr.c; sourceTree = ""; }; + B3B3D75428713552008A0E2F /* v25.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = v25.cpp; sourceTree = ""; }; + B3B3D75528713552008A0E2F /* necinstr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = necinstr.h; sourceTree = ""; }; + B3B3D75628713552008A0E2F /* v25priv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = v25priv.h; sourceTree = ""; }; + B3B3D75728713552008A0E2F /* nec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nec.cpp; sourceTree = ""; }; + B3B3D75828713552008A0E2F /* v25instr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = v25instr.h; sourceTree = ""; }; + B3B3D75928713552008A0E2F /* necmodrm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = necmodrm.h; sourceTree = ""; }; + B3B3D75A28713552008A0E2F /* necinstr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = necinstr.c; sourceTree = ""; }; + B3B3D75B28713552008A0E2F /* necea.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = necea.h; sourceTree = ""; }; + B3B3D75C28713552008A0E2F /* necpriv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = necpriv.h; sourceTree = ""; }; + B3B3D75D28713552008A0E2F /* nec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nec.h; sourceTree = ""; }; + B3B3D75E28713552008A0E2F /* necmacro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = necmacro.h; sourceTree = ""; }; + B3B3D75F28713552008A0E2F /* tlcs900_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tlcs900_intf.h; sourceTree = ""; }; + B3B3D76028713552008A0E2F /* konami_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = konami_intf.cpp; sourceTree = ""; }; + B3B3D76128713552008A0E2F /* tlcs90_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tlcs90_intf.cpp; sourceTree = ""; }; + B3B3D76228713552008A0E2F /* arm7_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7_intf.cpp; sourceTree = ""; }; + B3B3D76428713552008A0E2F /* m37710il.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m37710il.h; sourceTree = ""; }; + B3B3D76528713552008A0E2F /* m37710.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m37710.cpp; sourceTree = ""; }; + B3B3D76628713552008A0E2F /* m37710.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m37710.h; sourceTree = ""; }; + B3B3D76728713552008A0E2F /* m37710cm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m37710cm.h; sourceTree = ""; }; + B3B3D76828713552008A0E2F /* m37710op.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m37710op.h; sourceTree = ""; }; + B3B3D76928713552008A0E2F /* s2650_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s2650_intf.h; sourceTree = ""; }; + B3B3D76B28713552008A0E2F /* arm7exec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = arm7exec.c; sourceTree = ""; }; + B3B3D76C28713552008A0E2F /* arm7core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm7core.h; sourceTree = ""; }; + B3B3D76D28713552008A0E2F /* arm7.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7.cpp; sourceTree = ""; }; + B3B3D76E28713552008A0E2F /* arm7core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = arm7core.c; sourceTree = ""; }; + B3B3D77028713552008A0E2F /* pic16c5x.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pic16c5x.h; sourceTree = ""; }; + B3B3D77128713552008A0E2F /* pic16c5x.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pic16c5x.cpp; sourceTree = ""; }; + B3B3D77328713552008A0E2F /* op7a.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = op7a.c; sourceTree = ""; }; + B3B3D77428713552008A0E2F /* op2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = op2.c; sourceTree = ""; }; + B3B3D77528713552008A0E2F /* am3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = am3.c; sourceTree = ""; }; + B3B3D77628713552008A0E2F /* op6.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = op6.c; sourceTree = ""; }; + B3B3D77728713552008A0E2F /* v60d.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = v60d.c; sourceTree = ""; }; + B3B3D77828713552008A0E2F /* am.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = am.c; sourceTree = ""; }; + B3B3D77928713552008A0E2F /* v60.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = v60.h; sourceTree = ""; }; + B3B3D77A28713552008A0E2F /* op5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = op5.c; sourceTree = ""; }; + B3B3D77B28713552008A0E2F /* optable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = optable.c; sourceTree = ""; }; + B3B3D77C28713552008A0E2F /* am1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = am1.c; sourceTree = ""; }; + B3B3D77D28713552008A0E2F /* v60.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = v60.cpp; sourceTree = ""; }; + B3B3D77E28713552008A0E2F /* op4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = op4.c; sourceTree = ""; }; + B3B3D77F28713552008A0E2F /* op12.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = op12.c; sourceTree = ""; }; + B3B3D78028713552008A0E2F /* am2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = am2.c; sourceTree = ""; }; + B3B3D78128713552008A0E2F /* op3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = op3.c; sourceTree = ""; }; + B3B3D78228713552008A0E2F /* v60mem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = v60mem.c; sourceTree = ""; }; + B3B3D78428713552008A0E2F /* arm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm.cpp; sourceTree = ""; }; + B3B3D78628713552008A0E2F /* hd6309.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hd6309.cpp; sourceTree = ""; }; + B3B3D78728713552008A0E2F /* 6309tbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 6309tbl.c; sourceTree = ""; }; + B3B3D78828713552008A0E2F /* 6309ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 6309ops.c; sourceTree = ""; }; + B3B3D78928713552008A0E2F /* hd6309.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hd6309.h; sourceTree = ""; }; + B3B3D78A28713552008A0E2F /* m6805_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m6805_intf.cpp; sourceTree = ""; }; + B3B3D78C28713552008A0E2F /* f8.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = f8.cpp; sourceTree = ""; }; + B3B3D78D28713552008A0E2F /* f8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = f8.h; sourceTree = ""; }; + B3B3D78F28713552008A0E2F /* s2650.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = s2650.cpp; sourceTree = ""; }; + B3B3D79028713552008A0E2F /* s2650.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s2650.h; sourceTree = ""; }; + B3B3D79228713552008A0E2F /* mcs51ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mcs51ops.c; sourceTree = ""; }; + B3B3D79328713552008A0E2F /* mcs51.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mcs51.h; sourceTree = ""; }; + B3B3D79428713552008A0E2F /* mcs51.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mcs51.cpp; sourceTree = ""; }; + B3B3D79528713552008A0E2F /* konami_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = konami_intf.h; sourceTree = ""; }; + B3B3D79628713552008A0E2F /* z180_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z180_intf.h; sourceTree = ""; }; + B3B3D79728713552008A0E2F /* z80_intf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80_intf.h; sourceTree = ""; }; + B3B3D79928713552008A0E2F /* tlcs90.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tlcs90.cpp; sourceTree = ""; }; + B3B3D79B28713552008A0E2F /* upd7810.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = upd7810.cpp; sourceTree = ""; }; + B3B3D79C28713552008A0E2F /* 7810tbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7810tbl.c; sourceTree = ""; }; + B3B3D79D28713552008A0E2F /* upd7810.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upd7810.h; sourceTree = ""; }; + B3B3D79E28713552008A0E2F /* 7810ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7810ops.c; sourceTree = ""; }; + B3B3D79F28713552008A0E2F /* 7810dasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7810dasm.c; sourceTree = ""; }; + B3B3D7A028713552008A0E2F /* hd6309_intf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hd6309_intf.cpp; sourceTree = ""; }; + B3B3D7A228713552008A0E2F /* e132xs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = e132xs.h; sourceTree = ""; }; + B3B3D7A328713552008A0E2F /* e132xsop.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = e132xsop.inc; sourceTree = ""; }; + B3B3D7A428713552008A0E2F /* e132xs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = e132xs.cpp; sourceTree = ""; }; + B3B3D7A728713552008A0E2F /* pre2015.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = pre2015.bat; sourceTree = ""; }; + B3B3D7A828713552008A0E2F /* pre.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = pre.bat; sourceTree = ""; }; + B3B3D7A928713552008A0E2F /* pre2019.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = pre2019.bat; sourceTree = ""; }; + B3B3D7AA28713552008A0E2F /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3B3D7AD28713552008A0E2F /* AKGamepad.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AKGamepad.m; sourceTree = ""; }; + B3B3D7AE28713552008A0E2F /* AKGamepadEventData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AKGamepadEventData.h; sourceTree = ""; }; + B3B3D7AF28713552008A0E2F /* AKGamepadManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AKGamepadManager.m; sourceTree = ""; }; + B3B3D7B028713552008A0E2F /* AKGamepadEventData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AKGamepadEventData.m; sourceTree = ""; }; + B3B3D7B128713552008A0E2F /* AKGamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AKGamepad.h; sourceTree = ""; }; + B3B3D7B228713552008A0E2F /* AKGamepadManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AKGamepadManager.h; sourceTree = ""; }; + B3B3D7B428713552008A0E2F /* SDL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = ""; }; + B3B3D7B828713552008A0E2F /* xaudio2fx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xaudio2fx.h; sourceTree = ""; }; + B3B3D7B928713552008A0E2F /* xma2defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xma2defs.h; sourceTree = ""; }; + B3B3D7BA28713552008A0E2F /* audiodefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiodefs.h; sourceTree = ""; }; + B3B3D7BB28713552008A0E2F /* sal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sal.h; sourceTree = ""; }; + B3B3D7BC28713552008A0E2F /* xaudio2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xaudio2.h; sourceTree = ""; }; + B3B3D7BE28713552008A0E2F /* d3dx9tex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9tex.h; sourceTree = ""; }; + B3B3D7BF28713552008A0E2F /* d3dx9mesh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9mesh.h; sourceTree = ""; }; + B3B3D7C028713552008A0E2F /* d3dx9xof.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9xof.h; sourceTree = ""; }; + B3B3D7C128713552008A0E2F /* d3dx9math.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = d3dx9math.inl; sourceTree = ""; }; + B3B3D7C228713552008A0E2F /* d3dx9effect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9effect.h; sourceTree = ""; }; + B3B3D7C328713552008A0E2F /* d3dx9core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9core.h; sourceTree = ""; }; + B3B3D7C428713552008A0E2F /* d3dx9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9.h; sourceTree = ""; }; + B3B3D7C528713552008A0E2F /* d3dx9shader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9shader.h; sourceTree = ""; }; + B3B3D7C628713552008A0E2F /* d3dx9anim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9anim.h; sourceTree = ""; }; + B3B3D7C728713552008A0E2F /* d3dx9math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9math.h; sourceTree = ""; }; + B3B3D7C828713552008A0E2F /* d3dx9shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9shape.h; sourceTree = ""; }; + B3B3D7C928713552008A0E2F /* mingw_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mingw_win32.h; sourceTree = ""; }; + B3B3D7CA28713552008A0E2F /* dxsdk.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = dxsdk.7z; sourceTree = ""; }; + B3B3D7CB28713552008A0E2F /* DirectX SDK EULA.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "DirectX SDK EULA.txt"; sourceTree = ""; }; + B3B3D7CE28713552008A0E2F /* pnginfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnginfo.h; sourceTree = ""; }; + B3B3D7CF28713552008A0E2F /* pngrio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrio.c; sourceTree = ""; }; + B3B3D7D028713552008A0E2F /* pngerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngerror.c; sourceTree = ""; }; + B3B3D7D128713552008A0E2F /* pngwio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwio.c; sourceTree = ""; }; + B3B3D7D228713552008A0E2F /* pngstruct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; + B3B3D7D328713552008A0E2F /* pngtrans.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngtrans.c; sourceTree = ""; }; + B3B3D7D428713552008A0E2F /* pngpriv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngpriv.h; sourceTree = ""; }; + B3B3D7D528713552008A0E2F /* pngwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwrite.c; sourceTree = ""; }; + B3B3D7D628713552008A0E2F /* png.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; + B3B3D7D728713552008A0E2F /* pngwutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwutil.c; sourceTree = ""; }; + B3B3D7D828713552008A0E2F /* pngwtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwtran.c; sourceTree = ""; }; + B3B3D7D928713552008A0E2F /* pnglibconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnglibconf.h; sourceTree = ""; }; + B3B3D7DA28713552008A0E2F /* pngconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; + B3B3D7DB28713552008A0E2F /* pngpread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngpread.c; sourceTree = ""; }; + B3B3D7DC28713552008A0E2F /* pngdebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngdebug.h; sourceTree = ""; }; + B3B3D7DD28713552008A0E2F /* _fba_libpng_v1635.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = _fba_libpng_v1635.txt; sourceTree = ""; }; + B3B3D7DE28713552008A0E2F /* pngread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngread.c; sourceTree = ""; }; + B3B3D7E028713552008A0E2F /* filter_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = filter_neon.S; sourceTree = ""; }; + B3B3D7E128713552008A0E2F /* filter_neon_intrinsics.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = filter_neon_intrinsics.c; sourceTree = ""; }; + B3B3D7E228713552008A0E2F /* arm_init.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = arm_init.c; sourceTree = ""; }; + B3B3D7E328713552008A0E2F /* palette_neon_intrinsics.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = palette_neon_intrinsics.c; sourceTree = ""; }; + B3B3D7E428713552008A0E2F /* pngmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngmem.c; sourceTree = ""; }; + B3B3D7E528713552008A0E2F /* pngget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngget.c; sourceTree = ""; }; + B3B3D7E628713552008A0E2F /* png.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = png.c; sourceTree = ""; }; + B3B3D7E728713552008A0E2F /* pngrtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrtran.c; sourceTree = ""; }; + B3B3D7E828713552008A0E2F /* pngrutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrutil.c; sourceTree = ""; }; + B3B3D7E928713552008A0E2F /* pngset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngset.c; sourceTree = ""; }; + B3B3D7EB28713553008A0E2F /* Lzma2Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma2Dec.c; sourceTree = ""; }; + B3B3D7EC28713553008A0E2F /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3B3D7ED28713553008A0E2F /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3B3D7EE28713553008A0E2F /* Ppmd7Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Ppmd7Dec.c; sourceTree = ""; }; + B3B3D7EF28713553008A0E2F /* Aes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Aes.c; sourceTree = ""; }; + B3B3D7F028713553008A0E2F /* Ppmd8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ppmd8.h; sourceTree = ""; }; + B3B3D7F128713553008A0E2F /* LzFindMt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFindMt.c; sourceTree = ""; }; + B3B3D7F228713553008A0E2F /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3B3D7F328713553008A0E2F /* HuffEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HuffEnc.h; sourceTree = ""; }; + B3B3D7F428713553008A0E2F /* XzDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = XzDec.c; sourceTree = ""; }; + B3B3D7F528713553008A0E2F /* MtDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MtDec.c; sourceTree = ""; }; + B3B3D7F628713553008A0E2F /* MtCoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MtCoder.c; sourceTree = ""; }; + B3B3D7F728713553008A0E2F /* Bcj2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bcj2.c; sourceTree = ""; }; + B3B3D7F828713553008A0E2F /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3B3D7F928713553008A0E2F /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3B3D7FA28713553008A0E2F /* XzCrc64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XzCrc64.h; sourceTree = ""; }; + B3B3D7FB28713553008A0E2F /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3B3D7FC28713553008A0E2F /* DllSecur.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = DllSecur.c; sourceTree = ""; }; + B3B3D7FD28713553008A0E2F /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3B3D7FE28713553008A0E2F /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3B3D7FF28713553008A0E2F /* 7zCrc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zCrc.h; sourceTree = ""; }; + B3B3D80028713553008A0E2F /* Ppmd7.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Ppmd7.c; sourceTree = ""; }; + B3B3D80128713553008A0E2F /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3B3D80228713553008A0E2F /* Bra.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra.c; sourceTree = ""; }; + B3B3D80328713553008A0E2F /* BwtSort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BwtSort.c; sourceTree = ""; }; + B3B3D80428713553008A0E2F /* 7zFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zFile.h; sourceTree = ""; }; + B3B3D80528713553008A0E2F /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3B3D80628713553008A0E2F /* Sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sha1.c; sourceTree = ""; }; + B3B3D80728713553008A0E2F /* 7zArcIn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zArcIn.c; sourceTree = ""; }; + B3B3D80828713553008A0E2F /* 7zAlloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zAlloc.c; sourceTree = ""; }; + B3B3D80928713553008A0E2F /* Sha256.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sha256.h; sourceTree = ""; }; + B3B3D80A28713553008A0E2F /* XzIn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = XzIn.c; sourceTree = ""; }; + B3B3D80B28713553008A0E2F /* XzEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = XzEnc.c; sourceTree = ""; }; + B3B3D80C28713553008A0E2F /* Lzma2DecMt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma2DecMt.c; sourceTree = ""; }; + B3B3D80D28713553008A0E2F /* Threads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Threads.h; sourceTree = ""; }; + B3B3D80E28713553008A0E2F /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3B3D80F28713553008A0E2F /* 7zBuf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zBuf.h; sourceTree = ""; }; + B3B3D81028713553008A0E2F /* 7z.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7z.h; sourceTree = ""; }; + B3B3D81128713553008A0E2F /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3B3D81228713553008A0E2F /* Xz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xz.h; sourceTree = ""; }; + B3B3D81328713553008A0E2F /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3B3D81428713553008A0E2F /* Lzma2Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma2Enc.c; sourceTree = ""; }; + B3B3D81528713553008A0E2F /* Ppmd7Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Ppmd7Enc.c; sourceTree = ""; }; + B3B3D81628713553008A0E2F /* HuffEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = HuffEnc.c; sourceTree = ""; }; + B3B3D81728713553008A0E2F /* Ppmd8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Ppmd8.c; sourceTree = ""; }; + B3B3D81828713553008A0E2F /* LzFindMt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFindMt.h; sourceTree = ""; }; + B3B3D81928713553008A0E2F /* 7zDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zDec.c; sourceTree = ""; }; + B3B3D81A28713553008A0E2F /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3B3D81B28713553008A0E2F /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3B3D81C28713553008A0E2F /* Lzma2Dec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma2Dec.h; sourceTree = ""; }; + B3B3D81D28713553008A0E2F /* Ppmd8Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Ppmd8Enc.c; sourceTree = ""; }; + B3B3D81E28713553008A0E2F /* Aes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Aes.h; sourceTree = ""; }; + B3B3D81F28713553008A0E2F /* Blake2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Blake2.h; sourceTree = ""; }; + B3B3D82028713553008A0E2F /* DllSecur.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DllSecur.h; sourceTree = ""; }; + B3B3D82128713553008A0E2F /* 7zBuf2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zBuf2.c; sourceTree = ""; }; + B3B3D82228713553008A0E2F /* XzCrc64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = XzCrc64.c; sourceTree = ""; }; + B3B3D82328713553008A0E2F /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3B3D82428713553008A0E2F /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3B3D82528713553008A0E2F /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3B3D82628713553008A0E2F /* 7zStream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zStream.c; sourceTree = ""; }; + B3B3D82728713553008A0E2F /* Bcj2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bcj2.h; sourceTree = ""; }; + B3B3D82828713553008A0E2F /* 7zVersion.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 7zVersion.rc; sourceTree = ""; }; + B3B3D82928713553008A0E2F /* Ppmd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ppmd.h; sourceTree = ""; }; + B3B3D82A28713553008A0E2F /* MtDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MtDec.h; sourceTree = ""; }; + B3B3D82B28713553008A0E2F /* MtCoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MtCoder.h; sourceTree = ""; }; + B3B3D82C28713553008A0E2F /* Sha1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sha1.h; sourceTree = ""; }; + B3B3D82D28713553008A0E2F /* Sha256.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sha256.c; sourceTree = ""; }; + B3B3D82E28713553008A0E2F /* 7zAlloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zAlloc.h; sourceTree = ""; }; + B3B3D82F28713553008A0E2F /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3B3D83028713553008A0E2F /* 7zVersion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zVersion.h; sourceTree = ""; }; + B3B3D83128713553008A0E2F /* BwtSort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BwtSort.h; sourceTree = ""; }; + B3B3D83228713553008A0E2F /* 7zFile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zFile.c; sourceTree = ""; }; + B3B3D83328713553008A0E2F /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3B3D83428713553008A0E2F /* 7zCrc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zCrc.c; sourceTree = ""; }; + B3B3D83528713553008A0E2F /* Blake2s.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Blake2s.c; sourceTree = ""; }; + B3B3D83628713553008A0E2F /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3B3D83728713553008A0E2F /* AesOpt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = AesOpt.c; sourceTree = ""; }; + B3B3D83828713553008A0E2F /* RotateDefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RotateDefs.h; sourceTree = ""; }; + B3B3D83928713553008A0E2F /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3B3D83A28713553008A0E2F /* Ppmd7.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ppmd7.h; sourceTree = ""; }; + B3B3D83B28713553008A0E2F /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3B3D83C28713553008A0E2F /* Lzma2Enc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma2Enc.h; sourceTree = ""; }; + B3B3D83D28713553008A0E2F /* Bcj2Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bcj2Enc.c; sourceTree = ""; }; + B3B3D83E28713553008A0E2F /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3B3D83F28713553008A0E2F /* XzCrc64Opt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = XzCrc64Opt.c; sourceTree = ""; }; + B3B3D84028713553008A0E2F /* Ppmd8Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Ppmd8Dec.c; sourceTree = ""; }; + B3B3D84128713553008A0E2F /* Xz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Xz.c; sourceTree = ""; }; + B3B3D84228713553008A0E2F /* 7zCrcOpt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zCrcOpt.c; sourceTree = ""; }; + B3B3D84328713553008A0E2F /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3B3D84428713553008A0E2F /* Threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Threads.c; sourceTree = ""; }; + B3B3D84528713553008A0E2F /* Lzma2DecMt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma2DecMt.h; sourceTree = ""; }; + B3B3D84628713553008A0E2F /* 7zBuf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zBuf.c; sourceTree = ""; }; + B3B3D84728713553008A0E2F /* LzmaLib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaLib.c; sourceTree = ""; }; + B3B3D84828713553008A0E2F /* XzEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XzEnc.h; sourceTree = ""; }; + B3B3D84A28713553008A0E2F /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3B3D84B28713553008A0E2F /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3B3D84C28713553008A0E2F /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3B3D84D28713553008A0E2F /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3B3D84E28713553008A0E2F /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3B3D84F28713553008A0E2F /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3B3D85028713553008A0E2F /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3B3D85128713553008A0E2F /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3B3D85228713553008A0E2F /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3B3D85328713553008A0E2F /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3B3D85428713553008A0E2F /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3B3D85528713553008A0E2F /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3B3D85628713553008A0E2F /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3B3D85728713553008A0E2F /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3B3D85828713553008A0E2F /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3B3D85928713553008A0E2F /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3B3D85A28713553008A0E2F /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3B3D85B28713553008A0E2F /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3B3D85C28713553008A0E2F /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3B3D85D28713553008A0E2F /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B3B3D85E28713553008A0E2F /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B3B3D85F28713553008A0E2F /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B3B3D86028713553008A0E2F /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B3B3D86128713553008A0E2F /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3B3D86228713553008A0E2F /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3B3D86328713553008A0E2F /* _fba_zlib_v1211.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = _fba_zlib_v1211.txt; sourceTree = ""; }; + B3B3D86428713553008A0E2F /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3B3D86528713553008A0E2F /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3B3D86728713553008A0E2F /* lauxlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lauxlib.c; sourceTree = ""; }; + B3B3D86828713553008A0E2F /* lmem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lmem.h; sourceTree = ""; }; + B3B3D86928713553008A0E2F /* llimits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = llimits.h; sourceTree = ""; }; + B3B3D86A28713553008A0E2F /* luaconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = luaconf.h; sourceTree = ""; }; + B3B3D86B28713553008A0E2F /* lzio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lzio.h; sourceTree = ""; }; + B3B3D86C28713553008A0E2F /* lgc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lgc.h; sourceTree = ""; }; + B3B3D86D28713553008A0E2F /* liolib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = liolib.c; sourceTree = ""; }; + B3B3D86E28713553008A0E2F /* lopcodes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lopcodes.c; sourceTree = ""; }; + B3B3D86F28713553008A0E2F /* lstate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lstate.c; sourceTree = ""; }; + B3B3D87028713553008A0E2F /* lobject.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lobject.c; sourceTree = ""; }; + B3B3D87128713553008A0E2F /* lualib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lualib.h; sourceTree = ""; }; + B3B3D87228713553008A0E2F /* print.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = print.c; sourceTree = ""; }; + B3B3D87328713553008A0E2F /* lmathlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lmathlib.c; sourceTree = ""; }; + B3B3D87428713553008A0E2F /* loadlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loadlib.c; sourceTree = ""; }; + B3B3D87528713553008A0E2F /* lvm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lvm.c; sourceTree = ""; }; + B3B3D87628713553008A0E2F /* lfunc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lfunc.c; sourceTree = ""; }; + B3B3D87728713553008A0E2F /* lstrlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lstrlib.c; sourceTree = ""; }; + B3B3D87828713553008A0E2F /* ldebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ldebug.h; sourceTree = ""; }; + B3B3D87928713553008A0E2F /* linit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linit.c; sourceTree = ""; }; + B3B3D87A28713553008A0E2F /* lcode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lcode.h; sourceTree = ""; }; + B3B3D87B28713553008A0E2F /* lapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lapi.h; sourceTree = ""; }; + B3B3D87C28713553008A0E2F /* lstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lstring.c; sourceTree = ""; }; + B3B3D87D28713553008A0E2F /* ldo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ldo.h; sourceTree = ""; }; + B3B3D87E28713553008A0E2F /* lundump.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lundump.c; sourceTree = ""; }; + B3B3D87F28713553008A0E2F /* llex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = llex.h; sourceTree = ""; }; + B3B3D88028713553008A0E2F /* luac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = luac.c; sourceTree = ""; }; + B3B3D88128713553008A0E2F /* ltm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ltm.h; sourceTree = ""; }; + B3B3D88228713553008A0E2F /* ltable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ltable.c; sourceTree = ""; }; + B3B3D88328713553008A0E2F /* lparser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lparser.h; sourceTree = ""; }; + B3B3D88428713553008A0E2F /* ldump.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ldump.c; sourceTree = ""; }; + B3B3D88528713553008A0E2F /* lobject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lobject.h; sourceTree = ""; }; + B3B3D88628713553008A0E2F /* lstate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lstate.h; sourceTree = ""; }; + B3B3D88728713553008A0E2F /* lopcodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lopcodes.h; sourceTree = ""; }; + B3B3D88828713553008A0E2F /* loslib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loslib.c; sourceTree = ""; }; + B3B3D88928713553008A0E2F /* lgc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lgc.c; sourceTree = ""; }; + B3B3D88A28713553008A0E2F /* lzio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lzio.c; sourceTree = ""; }; + B3B3D88B28713553008A0E2F /* ldblib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ldblib.c; sourceTree = ""; }; + B3B3D88C28713553008A0E2F /* lmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lmem.c; sourceTree = ""; }; + B3B3D88D28713553008A0E2F /* lauxlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lauxlib.h; sourceTree = ""; }; + B3B3D88E28713553008A0E2F /* lvm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lvm.h; sourceTree = ""; }; + B3B3D88F28713553008A0E2F /* lstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lstring.h; sourceTree = ""; }; + B3B3D89028713553008A0E2F /* lcode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lcode.c; sourceTree = ""; }; + B3B3D89128713553008A0E2F /* ltablib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ltablib.c; sourceTree = ""; }; + B3B3D89228713553008A0E2F /* lapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lapi.c; sourceTree = ""; }; + B3B3D89328713553008A0E2F /* lbaselib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lbaselib.c; sourceTree = ""; }; + B3B3D89428713553008A0E2F /* lua.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lua.h; sourceTree = ""; }; + B3B3D89528713553008A0E2F /* ldebug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ldebug.c; sourceTree = ""; }; + B3B3D89628713553008A0E2F /* lfunc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lfunc.h; sourceTree = ""; }; + B3B3D89728713553008A0E2F /* lparser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lparser.c; sourceTree = ""; }; + B3B3D89828713553008A0E2F /* llex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = llex.c; sourceTree = ""; }; + B3B3D89928713553008A0E2F /* ltable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ltable.h; sourceTree = ""; }; + B3B3D89A28713553008A0E2F /* ltm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ltm.c; sourceTree = ""; }; + B3B3D89B28713553008A0E2F /* ldo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ldo.c; sourceTree = ""; }; + B3B3D89C28713553008A0E2F /* lundump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lundump.h; sourceTree = ""; }; + B3B3D89F28713553008A0E2F /* pigl_dmx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pigl_dmx.c; sourceTree = ""; }; + B3B3D8A028713553008A0E2F /* matrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; + B3B3D8A128713553008A0E2F /* pigl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pigl.h; sourceTree = ""; }; + B3B3D8A228713553008A0E2F /* pigl_drm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pigl_drm.c; sourceTree = ""; }; + B3B3D8A328713553008A0E2F /* matrix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = matrix.c; sourceTree = ""; }; + B3B3D8A628713553008A0E2F /* d3dcaps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dcaps.h; sourceTree = ""; }; + B3B3D8A828713553008A0E2F /* XAudio2fx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XAudio2fx.h; sourceTree = ""; }; + B3B3D8A928713553008A0E2F /* xma2defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xma2defs.h; sourceTree = ""; }; + B3B3D8AA28713553008A0E2F /* audiodefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiodefs.h; sourceTree = ""; }; + B3B3D8AB28713553008A0E2F /* XAudio2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XAudio2.h; sourceTree = ""; }; + B3B3D8AC28713553008A0E2F /* afxres.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = afxres.h; sourceTree = ""; }; + B3B3D8AD28713553008A0E2F /* d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d.h; sourceTree = ""; }; + B3B3D8AE28713553008A0E2F /* d3dvec.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = d3dvec.inl; sourceTree = ""; }; + B3B3D8AF28713553008A0E2F /* d3dtypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dtypes.h; sourceTree = ""; }; + B3B3D8B128713553008A0E2F /* cave_tile_func.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = cave_tile_func.pl; sourceTree = ""; }; + B3B3D8B228713553008A0E2F /* psikyo_tile_func.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = psikyo_tile_func.pl; sourceTree = ""; }; + B3B3D8B328713553008A0E2F /* cave_sprite_func.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = cave_sprite_func.pl; sourceTree = ""; }; + B3B3D8B428713553008A0E2F /* license2rtf.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = license2rtf.pl; sourceTree = ""; }; + B3B3D8B528713553008A0E2F /* toa_gp9001_func.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = toa_gp9001_func.pl; sourceTree = ""; }; + B3B3D8B628713553008A0E2F /* neo_sprite_func.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = neo_sprite_func.pl; sourceTree = ""; }; + B3B3D8B728713553008A0E2F /* fixrc.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = fixrc.pl; sourceTree = ""; }; + B3B3D8B828713553008A0E2F /* build_details.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = build_details.cpp; sourceTree = ""; }; + B3B3D8B928713553008A0E2F /* gamelist.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = gamelist.pl; sourceTree = ""; }; + B3B3D8BC28713553008A0E2F /* net.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net.h; sourceTree = ""; }; + B3B3D8BD28713553008A0E2F /* net.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = net.cpp; sourceTree = ""; }; + B3B3D8BE28713553008A0E2F /* kailleraclient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kailleraclient.h; sourceTree = ""; }; + B3B3D8C228713553008A0E2F /* vid_switchres.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vid_switchres.h; sourceTree = ""; }; + B3B3D8C328713553008A0E2F /* vid_switchres.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_switchres.cpp; sourceTree = ""; }; + B3B3D8C528713553008A0E2F /* FBVideo.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FBVideo.mm; sourceTree = ""; }; + B3B3D8C628713553008A0E2F /* FBVideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBVideo.h; sourceTree = ""; }; + B3B3D8C728713553008A0E2F /* vid_softfx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vid_softfx.h; sourceTree = ""; }; + B3B3D8C828713553008A0E2F /* vid_support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_support.cpp; sourceTree = ""; }; + B3B3D8CA28713553008A0E2F /* epx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = epx.cpp; sourceTree = ""; }; + B3B3D8CB28713553008A0E2F /* hq2x32.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = hq2x32.asm; sourceTree = ""; }; + B3B3D8CC28713553008A0E2F /* xbr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbr.h; sourceTree = ""; }; + B3B3D8CD28713553008A0E2F /* eagle_fm.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = eagle_fm.asm; sourceTree = ""; }; + B3B3D8CE28713553008A0E2F /* hq_shared32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hq_shared32.cpp; sourceTree = ""; }; + B3B3D8CF28713553008A0E2F /* xbr32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = xbr32.cpp; sourceTree = ""; }; + B3B3D8D028713553008A0E2F /* hq4x32.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = hq4x32.asm; sourceTree = ""; }; + B3B3D8D128713553008A0E2F /* 2xpm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 2xpm.cpp; sourceTree = ""; }; + B3B3D8D228713553008A0E2F /* scale2x.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scale2x.h; sourceTree = ""; }; + B3B3D8D328713553008A0E2F /* 2xsaimmx.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = 2xsaimmx.asm; sourceTree = ""; }; + B3B3D8D428713553008A0E2F /* hq3xs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hq3xs.cpp; sourceTree = ""; }; + B3B3D8D528713553008A0E2F /* xbr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = xbr.cpp; sourceTree = ""; }; + B3B3D8D628713553008A0E2F /* hq3x32.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = hq3x32.asm; sourceTree = ""; }; + B3B3D8D728713553008A0E2F /* scale3x.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scale3x.h; sourceTree = ""; }; + B3B3D8D828713553008A0E2F /* hq2xs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hq2xs.cpp; sourceTree = ""; }; + B3B3D8D928713553008A0E2F /* hq2xs_16.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hq2xs_16.cpp; sourceTree = ""; }; + B3B3D8DA28713553008A0E2F /* scale2x_vc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scale2x_vc.h; sourceTree = ""; }; + B3B3D8DB28713553008A0E2F /* ddt3x.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ddt3x.cpp; sourceTree = ""; }; + B3B3D8DC28713553008A0E2F /* interp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interp.h; sourceTree = ""; }; + B3B3D8DD28713553008A0E2F /* hq3xs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hq3xs.h; sourceTree = ""; }; + B3B3D8DE28713553008A0E2F /* 2xsai.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 2xsai.cpp; sourceTree = ""; }; + B3B3D8DF28713553008A0E2F /* hq_shared32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hq_shared32.h; sourceTree = ""; }; + B3B3D8E028713553008A0E2F /* superscale.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = superscale.asm; sourceTree = ""; }; + B3B3D8E128713553008A0E2F /* hq2xs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hq2xs.h; sourceTree = ""; }; + B3B3D8E228713553008A0E2F /* vid_softfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_softfx.cpp; sourceTree = ""; }; + B3B3D8E428713553008A0E2F /* vid_psp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vid_psp.h; sourceTree = ""; }; + B3B3D8E528713553008A0E2F /* vid_psp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vid_psp.c; sourceTree = ""; }; + B3B3D8E628713553008A0E2F /* vid_pspfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_pspfx.cpp; sourceTree = ""; }; + B3B3D8E828713553008A0E2F /* vid_pi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_pi.cpp; sourceTree = ""; }; + B3B3D8EA28713553008A0E2F /* vid_sdl2opengl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_sdl2opengl.cpp; sourceTree = ""; }; + B3B3D8EB28713553008A0E2F /* vid_sdlfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_sdlfx.cpp; sourceTree = ""; }; + B3B3D8EC28713553008A0E2F /* vid_sdl2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_sdl2.cpp; sourceTree = ""; }; + B3B3D8ED28713553008A0E2F /* vid_sdlopengl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_sdlopengl.cpp; sourceTree = ""; }; + B3B3D8EE28713553008A0E2F /* vid_support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vid_support.h; sourceTree = ""; }; + B3B3D8EF28713553008A0E2F /* vid_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_interface.cpp; sourceTree = ""; }; + B3B3D8F128713553008A0E2F /* vid_d3d.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_d3d.cpp; sourceTree = ""; }; + B3B3D8F228713553008A0E2F /* vid_effect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vid_effect.h; sourceTree = ""; }; + B3B3D8F328713553008A0E2F /* directx9_core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = directx9_core.cpp; sourceTree = ""; }; + B3B3D8F428713553008A0E2F /* vid_ddrawfx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_ddrawfx.cpp; sourceTree = ""; }; + B3B3D8F528713553008A0E2F /* ddraw_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ddraw_core.h; sourceTree = ""; }; + B3B3D8F628713553008A0E2F /* vid_directx9.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_directx9.cpp; sourceTree = ""; }; + B3B3D8F728713553008A0E2F /* vid_effect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_effect.cpp; sourceTree = ""; }; + B3B3D8F828713553008A0E2F /* rgb_pattern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rgb_pattern.h; sourceTree = ""; }; + B3B3D8F928713553008A0E2F /* vid_directx_support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_directx_support.cpp; sourceTree = ""; }; + B3B3D8FA28713553008A0E2F /* vid_directx_support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vid_directx_support.h; sourceTree = ""; }; + B3B3D8FB28713553008A0E2F /* ddraw_core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ddraw_core.cpp; sourceTree = ""; }; + B3B3D8FD28713553008A0E2F /* bicubic.fx */ = {isa = PBXFileReference; lastKnownFileType = text; path = bicubic.fx; sourceTree = ""; }; + B3B3D8FE28713553008A0E2F /* vid_ddraw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_ddraw.cpp; sourceTree = ""; }; + B3B3D8FF28713553008A0E2F /* directx9_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = directx9_core.h; sourceTree = ""; }; + B3B3D90128713553008A0E2F /* shader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader.h; sourceTree = ""; }; + B3B3D90228713553008A0E2F /* vid_opengl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vid_opengl.cpp; sourceTree = ""; }; + B3B3D90328713553008A0E2F /* shader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = ""; }; + B3B3D90528713553008A0E2F /* prf_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = prf_interface.cpp; sourceTree = ""; }; + B3B3D90728713553008A0E2F /* prf_performance_counter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = prf_performance_counter.cpp; sourceTree = ""; }; + B3B3D90A28713553008A0E2F /* FBInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBInput.h; sourceTree = ""; }; + B3B3D90B28713553008A0E2F /* FBInputMap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBInputMap.m; sourceTree = ""; }; + B3B3D90C28713553008A0E2F /* FBInput.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FBInput.mm; sourceTree = ""; }; + B3B3D90D28713553008A0E2F /* FBInputConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBInputConstants.h; sourceTree = ""; }; + B3B3D90E28713553008A0E2F /* FBInputMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBInputMap.h; sourceTree = ""; }; + B3B3D91028713553008A0E2F /* inp_psp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inp_psp.cpp; sourceTree = ""; }; + B3B3D91128713553008A0E2F /* inp_keys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inp_keys.h; sourceTree = ""; }; + B3B3D91328713553008A0E2F /* inp_pi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inp_pi.cpp; sourceTree = ""; }; + B3B3D91528713553008A0E2F /* inp_sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inp_sdl.cpp; sourceTree = ""; }; + B3B3D91628713553008A0E2F /* inp_sdl_keys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inp_sdl_keys.h; sourceTree = ""; }; + B3B3D91728713553008A0E2F /* inp_sdl2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inp_sdl2.cpp; sourceTree = ""; }; + B3B3D91828713553008A0E2F /* inp_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inp_interface.cpp; sourceTree = ""; }; + B3B3D91A28713553008A0E2F /* inp_dinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inp_dinput.cpp; sourceTree = ""; }; + B3B3D91B28713553008A0E2F /* dinput_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dinput_core.h; sourceTree = ""; }; + B3B3D91C28713553008A0E2F /* dinput_core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dinput_core.cpp; sourceTree = ""; }; + B3B3D91D28713553008A0E2F /* interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface.h; sourceTree = ""; }; + B3B3D91E28713553008A0E2F /* interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = interface.cpp; sourceTree = ""; }; + B3B3D92028713553008A0E2F /* lowpass2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lowpass2.cpp; sourceTree = ""; }; + B3B3D92228713553008A0E2F /* SDLAudioEngine.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAudioEngine.m; sourceTree = ""; }; + B3B3D92328713553008A0E2F /* FBAudio.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FBAudio.mm; sourceTree = ""; }; + B3B3D92428713554008A0E2F /* FBAudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBAudio.h; sourceTree = ""; }; + B3B3D92528713554008A0E2F /* SDLAudioEngine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAudioEngine.h; sourceTree = ""; }; + B3B3D92628713554008A0E2F /* aud_dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aud_dsp.h; sourceTree = ""; }; + B3B3D92728713554008A0E2F /* lowpass2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lowpass2.h; sourceTree = ""; }; + B3B3D92928713554008A0E2F /* aud_psp_a.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = aud_psp_a.s; sourceTree = ""; }; + B3B3D92A28713554008A0E2F /* aud_psp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aud_psp.cpp; sourceTree = ""; }; + B3B3D92C28713554008A0E2F /* aud_sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aud_sdl.cpp; sourceTree = ""; }; + B3B3D92E28713554008A0E2F /* aud_pulse_simple.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aud_pulse_simple.cpp; sourceTree = ""; }; + B3B3D92F28713554008A0E2F /* ringbuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ringbuffer.h; sourceTree = ""; }; + B3B3D93028713554008A0E2F /* aud_dsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aud_dsp.cpp; sourceTree = ""; }; + B3B3D93228713554008A0E2F /* aud_xaudio2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aud_xaudio2.cpp; sourceTree = ""; }; + B3B3D93328713554008A0E2F /* aud_dsound3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aud_dsound3.cpp; sourceTree = ""; }; + B3B3D93428713554008A0E2F /* dsound_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsound_core.h; sourceTree = ""; }; + B3B3D93528713554008A0E2F /* dsound_core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsound_core.cpp; sourceTree = ""; }; + B3B3D93628713554008A0E2F /* aud_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aud_interface.cpp; sourceTree = ""; }; + B3B3D93828713554008A0E2F /* cd_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cd_interface.cpp; sourceTree = ""; }; + B3B3D93A28713554008A0E2F /* cd_sdl2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cd_sdl2.cpp; sourceTree = ""; }; + B3B3D93B28713554008A0E2F /* cd_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cd_interface.h; sourceTree = ""; }; + B3B3D93D28713554008A0E2F /* cd_img.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cd_img.cpp; sourceTree = ""; }; + B3B3D93E28713554008A0E2F /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B3B3D94028713554008A0E2F /* gami.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gami.cpp; sourceTree = ""; }; + B3B3D94128713554008A0E2F /* dynhuff.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dynhuff.cpp; sourceTree = ""; }; + B3B3D94328713554008A0E2F /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B3B3D94428713554008A0E2F /* FBMainThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBMainThread.h; sourceTree = ""; }; + B3B3D94528713554008A0E2F /* FBImporter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FBImporter.m; sourceTree = ""; }; + B3B3D94628713554008A0E2F /* FBScanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBScanner.h; sourceTree = ""; }; + B3B3D94728713554008A0E2F /* NSString+Etc.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+Etc.m"; sourceTree = ""; }; + B3B3D94828713554008A0E2F /* burner_macos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burner_macos.h; sourceTree = ""; }; + B3B3D94928713554008A0E2F /* misc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = misc.cpp; sourceTree = ""; }; + B3B3D94A28713554008A0E2F /* FBImporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBImporter.h; sourceTree = ""; }; + B3B3D94B28713554008A0E2F /* FBScanner.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FBScanner.mm; sourceTree = ""; }; + B3B3D94C28713554008A0E2F /* FBMainThread.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FBMainThread.mm; sourceTree = ""; }; + B3B3D94D28713554008A0E2F /* NSString+Etc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+Etc.h"; sourceTree = ""; }; + B3B3D94E28713554008A0E2F /* FBMainThread+Etc.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "FBMainThread+Etc.mm"; sourceTree = ""; }; + B3B3D94F28713554008A0E2F /* tchar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tchar.h; sourceTree = ""; }; + B3B3D95028713554008A0E2F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3B3D95128713554008A0E2F /* image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = ""; }; + B3B3D95228713554008A0E2F /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B3B3D95328713554008A0E2F /* luasav.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = luasav.cpp; sourceTree = ""; }; + B3B3D95428713554008A0E2F /* title.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = title.h; sourceTree = ""; }; + B3B3D95528713554008A0E2F /* dat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dat.cpp; sourceTree = ""; }; + B3B3D95628713554008A0E2F /* misc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = misc.cpp; sourceTree = ""; }; + B3B3D95728713554008A0E2F /* ioapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + B3B3D95828713554008A0E2F /* nvram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nvram.cpp; sourceTree = ""; }; + B3B3D95928713554008A0E2F /* state.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = state.cpp; sourceTree = ""; }; + B3B3D95B28713554008A0E2F /* pg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pg.h; sourceTree = ""; }; + B3B3D95C28713554008A0E2F /* inpdipsw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inpdipsw.cpp; sourceTree = ""; }; + B3B3D95D28713554008A0E2F /* select.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = select.cpp; sourceTree = ""; }; + B3B3D95E28713554008A0E2F /* font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font.c; sourceTree = ""; }; + B3B3D95F28713554008A0E2F /* run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = run.cpp; sourceTree = ""; }; + B3B3D96028713554008A0E2F /* drv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = drv.cpp; sourceTree = ""; }; + B3B3D96128713554008A0E2F /* pg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pg.c; sourceTree = ""; }; + B3B3D96228713554008A0E2F /* config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config.cpp; sourceTree = ""; }; + B3B3D96328713554008A0E2F /* burner_psp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burner_psp.h; sourceTree = ""; }; + B3B3D96428713554008A0E2F /* tchar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tchar.h; sourceTree = ""; }; + B3B3D96528713554008A0E2F /* stated.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stated.cpp; sourceTree = ""; }; + B3B3D96628713554008A0E2F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3B3D96828713554008A0E2F /* qutil.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qutil.cpp; sourceTree = ""; }; + B3B3D96928713554008A0E2F /* selectdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = selectdialog.cpp; sourceTree = ""; }; + B3B3D96A28713554008A0E2F /* rominfodialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rominfodialog.h; sourceTree = ""; }; + B3B3D96B28713554008A0E2F /* rominfodialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = rominfodialog.ui; sourceTree = ""; }; + B3B3D96C28713554008A0E2F /* inputsetdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inputsetdialog.cpp; sourceTree = ""; }; + B3B3D96D28713554008A0E2F /* stringset.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stringset.cpp; sourceTree = ""; }; + B3B3D96E28713554008A0E2F /* dipswitchdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dipswitchdialog.ui; sourceTree = ""; }; + B3B3D96F28713554008A0E2F /* romdirsdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = romdirsdialog.ui; sourceTree = ""; }; + B3B3D97028713554008A0E2F /* mainwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mainwindow.h; sourceTree = ""; }; + B3B3D97128713554008A0E2F /* aboutdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aboutdialog.cpp; sourceTree = ""; }; + B3B3D97228713554008A0E2F /* neocdlist.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neocdlist.cpp; sourceTree = ""; }; + B3B3D97328713554008A0E2F /* qinputinterface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qinputinterface.cpp; sourceTree = ""; }; + B3B3D97428713554008A0E2F /* burner_qt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burner_qt.h; sourceTree = ""; }; + B3B3D97528713554008A0E2F /* romdirsdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romdirsdialog.h; sourceTree = ""; }; + B3B3D97628713554008A0E2F /* romscandialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = romscandialog.ui; sourceTree = ""; }; + B3B3D97728713554008A0E2F /* supportdirsdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = supportdirsdialog.ui; sourceTree = ""; }; + B3B3D97828713554008A0E2F /* aboutdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = aboutdialog.ui; sourceTree = ""; }; + B3B3D97928713554008A0E2F /* dipswitchdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dipswitchdialog.h; sourceTree = ""; }; + B3B3D97A28713554008A0E2F /* inputdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = inputdialog.ui; sourceTree = ""; }; + B3B3D97B28713554008A0E2F /* mainwindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainwindow.cpp; sourceTree = ""; }; + B3B3D97C28713554008A0E2F /* aboutdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aboutdialog.h; sourceTree = ""; }; + B3B3D97D28713554008A0E2F /* qutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qutil.h; sourceTree = ""; }; + B3B3D97E28713554008A0E2F /* qinputinterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qinputinterface.h; sourceTree = ""; }; + B3B3D97F28713554008A0E2F /* bzip.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bzip.cpp; sourceTree = ""; }; + B3B3D98028713554008A0E2F /* selectdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = selectdialog.h; sourceTree = ""; }; + B3B3D98128713554008A0E2F /* qaudiointerface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = qaudiointerface.cpp; sourceTree = ""; }; + B3B3D98228713554008A0E2F /* romscandialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = romscandialog.cpp; sourceTree = ""; }; + B3B3D98328713554008A0E2F /* supportdirsdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = supportdirsdialog.h; sourceTree = ""; }; + B3B3D98428713554008A0E2F /* romdirsdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = romdirsdialog.cpp; sourceTree = ""; }; + B3B3D98528713554008A0E2F /* dipswitchdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dipswitchdialog.cpp; sourceTree = ""; }; + B3B3D98628713554008A0E2F /* logdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = logdialog.ui; sourceTree = ""; }; + B3B3D98728713554008A0E2F /* driver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = driver.cpp; sourceTree = ""; }; + B3B3D98828713554008A0E2F /* selectdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = selectdialog.ui; sourceTree = ""; }; + B3B3D98928713554008A0E2F /* inputsetdialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = inputsetdialog.ui; sourceTree = ""; }; + B3B3D98A28713554008A0E2F /* inputdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inputdialog.cpp; sourceTree = ""; }; + B3B3D98B28713554008A0E2F /* oglviewport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oglviewport.h; sourceTree = ""; }; + B3B3D98C28713554008A0E2F /* progress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = progress.cpp; sourceTree = ""; }; + B3B3D98D28713554008A0E2F /* oglviewport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oglviewport.cpp; sourceTree = ""; }; + B3B3D98E28713554008A0E2F /* logdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logdialog.h; sourceTree = ""; }; + B3B3D98F28713554008A0E2F /* romscandialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romscandialog.h; sourceTree = ""; }; + B3B3D99028713554008A0E2F /* supportdirsdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = supportdirsdialog.cpp; sourceTree = ""; }; + B3B3D99128713554008A0E2F /* logdialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = logdialog.cpp; sourceTree = ""; }; + B3B3D99328713554008A0E2F /* down_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = down_arrow.png; sourceTree = ""; }; + B3B3D99428713554008A0E2F /* branch-closed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch-closed.png"; sourceTree = ""; }; + B3B3D99528713554008A0E2F /* tv-not-found.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "tv-not-found.ico"; sourceTree = ""; }; + B3B3D99628713554008A0E2F /* splash.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = splash.bmp; sourceTree = ""; }; + B3B3D99728713554008A0E2F /* left_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = left_arrow.png; sourceTree = ""; }; + B3B3D99828713554008A0E2F /* right_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = right_arrow.png; sourceTree = ""; }; + B3B3D99928713554008A0E2F /* misc.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = misc.bmp; sourceTree = ""; }; + B3B3D99A28713554008A0E2F /* vline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vline.png; sourceTree = ""; }; + B3B3D99B28713554008A0E2F /* branch-end.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch-end.png"; sourceTree = ""; }; + B3B3D99C28713554008A0E2F /* tv-not-found-non-essential.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "tv-not-found-non-essential.ico"; sourceTree = ""; }; + B3B3D99D28713554008A0E2F /* checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checked.png; sourceTree = ""; }; + B3B3D99E28713554008A0E2F /* dark-flat-bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "dark-flat-bg.png"; sourceTree = ""; }; + B3B3D99F28713554008A0E2F /* about.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = about.bmp; sourceTree = ""; }; + B3B3D9A028713554008A0E2F /* up_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = up_arrow.png; sourceTree = ""; }; + B3B3D9A128713554008A0E2F /* dark-flat.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = "dark-flat.css"; sourceTree = ""; }; + B3B3D9A228713554008A0E2F /* branch-more.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch-more.png"; sourceTree = ""; }; + B3B3D9A328713554008A0E2F /* branch-open.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "branch-open.png"; sourceTree = ""; }; + B3B3D9A428713554008A0E2F /* tv-not-working.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "tv-not-working.ico"; sourceTree = ""; }; + B3B3D9A528713554008A0E2F /* rominfodialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rominfodialog.cpp; sourceTree = ""; }; + B3B3D9A628713554008A0E2F /* tchar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tchar.h; sourceTree = ""; }; + B3B3D9A728713554008A0E2F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3B3D9A828713554008A0E2F /* qaudiointerface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qaudiointerface.h; sourceTree = ""; }; + B3B3D9A928713554008A0E2F /* emuworker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emuworker.cpp; sourceTree = ""; }; + B3B3D9AA28713554008A0E2F /* inputdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inputdialog.h; sourceTree = ""; }; + B3B3D9AB28713554008A0E2F /* emuworker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emuworker.h; sourceTree = ""; }; + B3B3D9AD28713554008A0E2F /* hexspinbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hexspinbox.h; sourceTree = ""; }; + B3B3D9AE28713554008A0E2F /* hexspinbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hexspinbox.cpp; sourceTree = ""; }; + B3B3D9AF28713554008A0E2F /* rscr.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = rscr.qrc; sourceTree = ""; }; + B3B3D9B028713554008A0E2F /* inputsetdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inputsetdialog.h; sourceTree = ""; }; + B3B3D9B128713554008A0E2F /* burner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burner.h; sourceTree = ""; }; + B3B3D9B228713554008A0E2F /* dynhuff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dynhuff.h; sourceTree = ""; }; + B3B3D9B428713554008A0E2F /* run_pi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = run_pi.cpp; sourceTree = ""; }; + B3B3D9B528713554008A0E2F /* main_pi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main_pi.cpp; sourceTree = ""; }; + B3B3D9B628713554008A0E2F /* cong.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cong.cpp; sourceTree = ""; }; + B3B3D9B828713554008A0E2F /* media.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = media.cpp; sourceTree = ""; }; + B3B3D9B928713554008A0E2F /* sdl2_inprint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl2_inprint.cpp; sourceTree = ""; }; + B3B3D9BA28713554008A0E2F /* ips_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ips_manager.cpp; sourceTree = ""; }; + B3B3D9BB28713554008A0E2F /* sdl2_gui_ingame.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl2_gui_ingame.cpp; sourceTree = ""; }; + B3B3D9BC28713554008A0E2F /* inpdipsw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inpdipsw.cpp; sourceTree = ""; }; + B3B3D9BD28713554008A0E2F /* sdl2_inprint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl2_inprint.h; sourceTree = ""; }; + B3B3D9BE28713554008A0E2F /* stringset.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stringset.cpp; sourceTree = ""; }; + B3B3D9BF28713554008A0E2F /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; + B3B3D9C028713554008A0E2F /* sdl2_gui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl2_gui.h; sourceTree = ""; }; + B3B3D9C128713554008A0E2F /* neocdlist.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neocdlist.cpp; sourceTree = ""; }; + B3B3D9C228713554008A0E2F /* run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = run.cpp; sourceTree = ""; }; + B3B3D9C328713554008A0E2F /* scrn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = scrn.cpp; sourceTree = ""; }; + B3B3D9C428713554008A0E2F /* drv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = drv.cpp; sourceTree = ""; }; + B3B3D9C528713554008A0E2F /* bzip.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bzip.cpp; sourceTree = ""; }; + B3B3D9C628713554008A0E2F /* sdl2_gui_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl2_gui_common.cpp; sourceTree = ""; }; + B3B3D9C728713554008A0E2F /* misc_image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc_image.h; sourceTree = ""; }; + B3B3D9C828713554008A0E2F /* input_sdl2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input_sdl2.cpp; sourceTree = ""; }; + B3B3D9C928713554008A0E2F /* support_paths.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = support_paths.cpp; sourceTree = ""; }; + B3B3D9CA28713554008A0E2F /* config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config.cpp; sourceTree = ""; }; + B3B3D9CB28713554008A0E2F /* sdl2_gui_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl2_gui_common.h; sourceTree = ""; }; + B3B3D9CC28713554008A0E2F /* replay.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = replay.cpp; sourceTree = ""; }; + B3B3D9CD28713554008A0E2F /* tchar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tchar.h; sourceTree = ""; }; + B3B3D9CE28713554008A0E2F /* stated.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stated.cpp; sourceTree = ""; }; + B3B3D9CF28713554008A0E2F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3B3D9D028713554008A0E2F /* burner_sdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burner_sdl.h; sourceTree = ""; }; + B3B3D9D128713554008A0E2F /* sdl2_gui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl2_gui.cpp; sourceTree = ""; }; + B3B3D9D228713554008A0E2F /* conc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = conc.cpp; sourceTree = ""; }; + B3B3D9D328713554008A0E2F /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B3B3D9D428713554008A0E2F /* luaengine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = luaengine.h; sourceTree = ""; }; + B3B3D9D528713554008A0E2F /* luasav.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = luasav.h; sourceTree = ""; }; + B3B3D9D628713554008A0E2F /* statec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = statec.cpp; sourceTree = ""; }; + B3B3D9D728713554008A0E2F /* gameinp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gameinp.h; sourceTree = ""; }; + B3B3D9D828713554008A0E2F /* un7z.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = un7z.h; sourceTree = ""; }; + B3B3D9D928713554008A0E2F /* zipfn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zipfn.cpp; sourceTree = ""; }; + B3B3D9DA28713554008A0E2F /* gamc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gamc.cpp; sourceTree = ""; }; + B3B3D9DC28713554008A0E2F /* TV Not Found.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "TV Not Found.ico"; sourceTree = ""; }; + B3B3D9DD28713554008A0E2F /* splash.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = splash.bmp; sourceTree = ""; }; + B3B3D9DE28713554008A0E2F /* misc.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = misc.bmp; sourceTree = ""; }; + B3B3D9DF28713554008A0E2F /* TV Plus.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "TV Plus.ico"; sourceTree = ""; }; + B3B3D9E028713554008A0E2F /* TV Minus.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "TV Minus.ico"; sourceTree = ""; }; + B3B3D9E128713554008A0E2F /* manifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = manifest.xml; sourceTree = ""; }; + B3B3D9E228713554008A0E2F /* about.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = about.bmp; sourceTree = ""; }; + B3B3D9E328713554008A0E2F /* fba.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = fba.ico; sourceTree = ""; }; + B3B3D9E428713554008A0E2F /* TV Not Working.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "TV Not Working.ico"; sourceTree = ""; }; + B3B3D9E528713554008A0E2F /* TV Not Found Non Essential.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "TV Not Found Non Essential.ico"; sourceTree = ""; }; + B3B3D9E728713554008A0E2F /* media.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = media.cpp; sourceTree = ""; }; + B3B3D9E828713554008A0E2F /* localise.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = localise.cpp; sourceTree = ""; }; + B3B3D9E928713554008A0E2F /* about.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = about.cpp; sourceTree = ""; }; + B3B3D9EA28713554008A0E2F /* paletteviewer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = paletteviewer.cpp; sourceTree = ""; }; + B3B3D9EB28713554008A0E2F /* ips_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ips_manager.cpp; sourceTree = ""; }; + B3B3D9EC28713554008A0E2F /* fba_kaillera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fba_kaillera.cpp; sourceTree = ""; }; + B3B3D9ED28713554008A0E2F /* inpdipsw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inpdipsw.cpp; sourceTree = ""; }; + B3B3D9EE28713554008A0E2F /* sfactd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sfactd.cpp; sourceTree = ""; }; + B3B3D9EF28713554008A0E2F /* choose_monitor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = choose_monitor.cpp; sourceTree = ""; }; + B3B3D9F028713554008A0E2F /* neocdsel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neocdsel.cpp; sourceTree = ""; }; + B3B3D9F128713554008A0E2F /* res.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = res.cpp; sourceTree = ""; }; + B3B3D9F228713554008A0E2F /* memcard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memcard.cpp; sourceTree = ""; }; + B3B3D9F328713554008A0E2F /* resource_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource_string.h; sourceTree = ""; }; + B3B3D9F428713554008A0E2F /* burner_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burner_win32.h; sourceTree = ""; }; + B3B3D9F528713554008A0E2F /* string.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = string.rc; sourceTree = ""; }; + B3B3D9F628713554008A0E2F /* luaconsole.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = luaconsole.cpp; sourceTree = ""; }; + B3B3D9F728713554008A0E2F /* avi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = avi.cpp; sourceTree = ""; }; + B3B3D9F828713554008A0E2F /* gameinfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gameinfo.cpp; sourceTree = ""; }; + B3B3D9F928713554008A0E2F /* neocdlist.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = neocdlist.cpp; sourceTree = ""; }; + B3B3D9FA28713554008A0E2F /* wave.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wave.cpp; sourceTree = ""; }; + B3B3D9FB28713554008A0E2F /* app.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = app.rc; sourceTree = ""; }; + B3B3D9FC28713554008A0E2F /* menu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = menu.cpp; sourceTree = ""; }; + B3B3D9FD28713554008A0E2F /* splash.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = splash.cpp; sourceTree = ""; }; + B3B3D9FE28713554008A0E2F /* image_win32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = image_win32.cpp; sourceTree = ""; }; + B3B3D9FF28713554008A0E2F /* run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = run.cpp; sourceTree = ""; }; + B3B3DA0028713554008A0E2F /* popup_win32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = popup_win32.cpp; sourceTree = ""; }; + B3B3DA0128713554008A0E2F /* placeholder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = placeholder.cpp; sourceTree = ""; }; + B3B3DA0228713554008A0E2F /* scrn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = scrn.cpp; sourceTree = ""; }; + B3B3DA0328713554008A0E2F /* localise_gamelist.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = localise_gamelist.cpp; sourceTree = ""; }; + B3B3DA0428713554008A0E2F /* misc_win32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = misc_win32.cpp; sourceTree = ""; }; + B3B3DA0528713554008A0E2F /* drv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = drv.cpp; sourceTree = ""; }; + B3B3DA0628713554008A0E2F /* bzip.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bzip.cpp; sourceTree = ""; }; + B3B3DA0728713554008A0E2F /* numdial.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = numdial.cpp; sourceTree = ""; }; + B3B3DA0828713554008A0E2F /* d3dkmt_sync.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dkmt_sync.h; sourceTree = ""; }; + B3B3DA0928713554008A0E2F /* systeminfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = systeminfo.cpp; sourceTree = ""; }; + B3B3DA0A28713554008A0E2F /* roms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = roms.cpp; sourceTree = ""; }; + B3B3DA0B28713554008A0E2F /* inpcheat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inpcheat.cpp; sourceTree = ""; }; + B3B3DA0C28713554008A0E2F /* d3dkmt_sync.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3dkmt_sync.cpp; sourceTree = ""; }; + B3B3DA0D28713554008A0E2F /* resource.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = resource.rc; sourceTree = ""; }; + B3B3DA0E28713554008A0E2F /* support_paths.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = support_paths.cpp; sourceTree = ""; }; + B3B3DA0F28713554008A0E2F /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B3B3DA1028713554008A0E2F /* cona.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cona.cpp; sourceTree = ""; }; + B3B3DA1128713554008A0E2F /* debugger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debugger.cpp; sourceTree = ""; }; + B3B3DA1228713554008A0E2F /* localise_download.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = localise_download.cpp; sourceTree = ""; }; + B3B3DA1328713554008A0E2F /* sel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sel.cpp; sourceTree = ""; }; + B3B3DA1428713554008A0E2F /* progress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = progress.cpp; sourceTree = ""; }; + B3B3DA1528713554008A0E2F /* inpc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inpc.cpp; sourceTree = ""; }; + B3B3DA1628713554008A0E2F /* version.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.rc; sourceTree = ""; }; + B3B3DA1728713554008A0E2F /* replay.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = replay.cpp; sourceTree = ""; }; + B3B3DA1828713554008A0E2F /* stated.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stated.cpp; sourceTree = ""; }; + B3B3DA1928713554008A0E2F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3B3DA1A28713554008A0E2F /* inps.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inps.cpp; sourceTree = ""; }; + B3B3DA1B28713554008A0E2F /* inpd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = inpd.cpp; sourceTree = ""; }; + B3B3DA1C28713554008A0E2F /* ioapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + B3B3DA1D28713554008A0E2F /* un7z.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = un7z.cpp; sourceTree = ""; }; + B3B3DA1E28713554008A0E2F /* luaengine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = luaengine.cpp; sourceTree = ""; }; + B3B3DA1F28713554008A0E2F /* neocdlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = neocdlist.h; sourceTree = ""; }; + B3B3DA2028713554008A0E2F /* sshot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sshot.cpp; sourceTree = ""; }; + B3B3DA25287136A0008A0E2F /* PVFBNeoCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVFBNeoCore.h; sourceTree = ""; }; + B3B3DA26287136A0008A0E2F /* PVFBNeoCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PVFBNeoCore.mm; sourceTree = ""; }; + B3B3DBC728713D66008A0E2F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3B3DBC828713D66008A0E2F /* PVFBNeo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFBNeo.h; sourceTree = ""; }; + B3B3DBC928713D66008A0E2F /* PVFBNeo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFBNeo-Prefix.pch"; sourceTree = ""; }; + B3B3DBCA28713D66008A0E2F /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B3B3DBCE2871408D008A0E2F /* retro_input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = retro_input.cpp; sourceTree = ""; }; + B3B3DBCF2871408D008A0E2F /* net.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net.h; sourceTree = ""; }; + B3B3DBD02871408D008A0E2F /* retro_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_input.h; sourceTree = ""; }; + B3B3DBD12871408D008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DBD22871408D008A0E2F /* Makefile.neogeo */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.neogeo; sourceTree = ""; }; + B3B3DBD32871408D008A0E2F /* ugui_tools.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ugui_tools.c; sourceTree = ""; }; + B3B3DBD42871408D008A0E2F /* retro_cdemu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_cdemu.h; sourceTree = ""; }; + B3B3DBD52871408D008A0E2F /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3B3DBD62871408D008A0E2F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3B3DBD72871408D008A0E2F /* retro_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = retro_common.cpp; sourceTree = ""; }; + B3B3DBD82871408D008A0E2F /* retro_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_memory.h; sourceTree = ""; }; + B3B3DBD92871408D008A0E2F /* retro_memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = retro_memory.cpp; sourceTree = ""; }; + B3B3DBDA2871408D008A0E2F /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3B3DBDD2871408D008A0E2F /* encoding_base64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_base64.c; sourceTree = ""; }; + B3B3DBDE2871408D008A0E2F /* encoding_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_crc32.c; sourceTree = ""; }; + B3B3DBDF2871408D008A0E2F /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3B3DBE12871408D008A0E2F /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3B3DBE22871408D008A0E2F /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3B3DBE32871408D008A0E2F /* vfs_implementation_uwp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfs_implementation_uwp.cpp; sourceTree = ""; }; + B3B3DBE52871408D008A0E2F /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3B3DBE72871408D008A0E2F /* compat_ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_ifaddrs.c; sourceTree = ""; }; + B3B3DBE82871408D008A0E2F /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3B3DBE92871408D008A0E2F /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3B3DBEA2871408D008A0E2F /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3B3DBEB2871408D008A0E2F /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3B3DBEC2871408D008A0E2F /* compat_getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_getopt.c; sourceTree = ""; }; + B3B3DBED2871408D008A0E2F /* compat_fnmatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch.c; sourceTree = ""; }; + B3B3DBEE2871408D008A0E2F /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3B3DBEF2871408D008A0E2F /* compat_vscprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_vscprintf.c; sourceTree = ""; }; + B3B3DBF12871408D008A0E2F /* label_sanitization.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = label_sanitization.c; sourceTree = ""; }; + B3B3DBF32871408D008A0E2F /* dylib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dylib.c; sourceTree = ""; }; + B3B3DBF52871408D008A0E2F /* net_natt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_natt.c; sourceTree = ""; }; + B3B3DBF62871408D008A0E2F /* net_socket_ssl_mbed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket_ssl_mbed.c; sourceTree = ""; }; + B3B3DBF72871408D008A0E2F /* net_http.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http.c; sourceTree = ""; }; + B3B3DBF82871408D008A0E2F /* net_http_parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_parse.c; sourceTree = ""; }; + B3B3DBF92871408D008A0E2F /* net_ifinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo.c; sourceTree = ""; }; + B3B3DBFA2871408D008A0E2F /* net_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_compat.c; sourceTree = ""; }; + B3B3DBFB2871408D008A0E2F /* net_socket_ssl_bear.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket_ssl_bear.c; sourceTree = ""; }; + B3B3DBFC2871408D008A0E2F /* net_socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket.c; sourceTree = ""; }; + B3B3DBFD2871408D008A0E2F /* Makefile.test */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.test; sourceTree = ""; }; + B3B3DC002871408D008A0E2F /* rwav.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwav.c; sourceTree = ""; }; + B3B3DC022871408D008A0E2F /* m3u_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m3u_file.c; sourceTree = ""; }; + B3B3DC042871408D008A0E2F /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3B3DC052871408D008A0E2F /* libchdr_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_zlib.c; sourceTree = ""; }; + B3B3DC062871408D008A0E2F /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3B3DC072871408D008A0E2F /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3B3DC082871408D008A0E2F /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3B3DC092871408D008A0E2F /* libchdr_flac_codec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac_codec.c; sourceTree = ""; }; + B3B3DC0A2871408D008A0E2F /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3B3DC0B2871408D008A0E2F /* libchdr_lzma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_lzma.c; sourceTree = ""; }; + B3B3DC0C2871408D008A0E2F /* image_texture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_texture.c; sourceTree = ""; }; + B3B3DC0E2871408D008A0E2F /* rtga.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtga.c; sourceTree = ""; }; + B3B3DC102871408D008A0E2F /* rpng.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng.c; sourceTree = ""; }; + B3B3DC112871408D008A0E2F /* rpng_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng_internal.h; sourceTree = ""; }; + B3B3DC122871408D008A0E2F /* rpng_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_encode.c; sourceTree = ""; }; + B3B3DC152871408D008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DC162871408D008A0E2F /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B3B3DC172871408D008A0E2F /* rxml.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml.c; sourceTree = ""; }; + B3B3DC192871408D008A0E2F /* jsonsax_full.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax_full.c; sourceTree = ""; }; + B3B3DC1A2871408D008A0E2F /* rjson.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjson.c; sourceTree = ""; }; + B3B3DC1B2871408D008A0E2F /* jsonsax.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax.c; sourceTree = ""; }; + B3B3DC1D2871408D008A0E2F /* logiqx_dat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = logiqx_dat.c; sourceTree = ""; }; + B3B3DC1F2871408D008A0E2F /* cdfs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdfs.c; sourceTree = ""; }; + B3B3DC212871408D008A0E2F /* rjpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjpeg.c; sourceTree = ""; }; + B3B3DC232871408D008A0E2F /* rbmp_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp_encode.c; sourceTree = ""; }; + B3B3DC242871408D008A0E2F /* rbmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp.c; sourceTree = ""; }; + B3B3DC252871408D008A0E2F /* image_transfer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_transfer.c; sourceTree = ""; }; + B3B3DC282871408D008A0E2F /* test_linked_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_linked_list.c; sourceTree = ""; }; + B3B3DC2A2871408D008A0E2F /* test_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_hash.c; sourceTree = ""; }; + B3B3DC2C2871408D008A0E2F /* test_utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_utils.c; sourceTree = ""; }; + B3B3DC2E2871408D008A0E2F /* test_generic_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_generic_queue.c; sourceTree = ""; }; + B3B3DC302871408D008A0E2F /* test_stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_stdstring.c; sourceTree = ""; }; + B3B3DC322871408D008A0E2F /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B3B3DC332871408D008A0E2F /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B3B3DC342871408D008A0E2F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3B3DC352871408D008A0E2F /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B3B3DC362871408D008A0E2F /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B3B3DC372871408D008A0E2F /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B3B3DC382871408D008A0E2F /* xglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = xglgen.py; sourceTree = ""; }; + B3B3DC392871408D008A0E2F /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B3B3DC3B2871408D008A0E2F /* nested_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nested_list.c; sourceTree = ""; }; + B3B3DC3C2871408D008A0E2F /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3B3DC3D2871408D008A0E2F /* vector_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vector_list.c; sourceTree = ""; }; + B3B3DC3E2871408D008A0E2F /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3B3DC3F2871408D008A0E2F /* linked_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linked_list.c; sourceTree = ""; }; + B3B3DC402871408D008A0E2F /* file_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_list.c; sourceTree = ""; }; + B3B3DC422871408D008A0E2F /* file_path_io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path_io.c; sourceTree = ""; }; + B3B3DC432871408D008A0E2F /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3B3DC442871408D008A0E2F /* config_file_userdata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file_userdata.c; sourceTree = ""; }; + B3B3DC462871408D008A0E2F /* nbio_unixmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_unixmmap.c; sourceTree = ""; }; + B3B3DC472871408D008A0E2F /* nbio_linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_linux.c; sourceTree = ""; }; + B3B3DC482871408D008A0E2F /* nbio_orbis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_orbis.c; sourceTree = ""; }; + B3B3DC492871408D008A0E2F /* nbio_windowsmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_windowsmmap.c; sourceTree = ""; }; + B3B3DC4A2871408D008A0E2F /* nbio_intf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_intf.c; sourceTree = ""; }; + B3B3DC4B2871408D008A0E2F /* nbio_stdio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_stdio.c; sourceTree = ""; }; + B3B3DC4C2871408D008A0E2F /* archive_file_7z.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_7z.c; sourceTree = ""; }; + B3B3DC4D2871408D008A0E2F /* archive_file_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_zlib.c; sourceTree = ""; }; + B3B3DC4E2871408D008A0E2F /* config_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file.c; sourceTree = ""; }; + B3B3DC4F2871408D008A0E2F /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3B3DC502871408D008A0E2F /* archive_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file.c; sourceTree = ""; }; + B3B3DC522871408D008A0E2F /* lrc_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lrc_hash.c; sourceTree = ""; }; + B3B3DC542871408D008A0E2F /* stdin_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdin_stream.c; sourceTree = ""; }; + B3B3DC552871408D008A0E2F /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3B3DC562871408D008A0E2F /* trans_stream_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_zlib.c; sourceTree = ""; }; + B3B3DC572871408D008A0E2F /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B3B3DC582871408D008A0E2F /* trans_stream_pipe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_pipe.c; sourceTree = ""; }; + B3B3DC592871408D008A0E2F /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B3B3DC5A2871408D008A0E2F /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B3B3DC5B2871408D008A0E2F /* trans_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream.c; sourceTree = ""; }; + B3B3DC5C2871408D008A0E2F /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3B3DC5D2871408D008A0E2F /* rzip_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzip_stream.c; sourceTree = ""; }; + B3B3DC602871408D008A0E2F /* base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = ""; }; + B3B3DC612871408D008A0E2F /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3B3DC622871408D008A0E2F /* win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32.h; sourceTree = ""; }; + B3B3DC632871408D008A0E2F /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3B3DC642871408D008A0E2F /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3B3DC652871408D008A0E2F /* libretro_dspfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_dspfilter.h; sourceTree = ""; }; + B3B3DC672871408D008A0E2F /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3B3DC682871408D008A0E2F /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3B3DC692871408D008A0E2F /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3B3DC6B2871408D008A0E2F /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3B3DC6C2871408D008A0E2F /* libco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; + B3B3DC6E2871408D008A0E2F /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B3B3DC6F2871408D008A0E2F /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3B3DC702871408D008A0E2F /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3B3DC712871408D008A0E2F /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3B3DC732871408D008A0E2F /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3B3DC742871408D008A0E2F /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3B3DC752871408D008A0E2F /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3B3DC762871408E008A0E2F /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B3B3DC772871408E008A0E2F /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3B3DC792871408E008A0E2F /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3B3DC7A2871408E008A0E2F /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3B3DC7B2871408E008A0E2F /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3B3DC7C2871408E008A0E2F /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3B3DC7D2871408E008A0E2F /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B3B3DC7E2871408E008A0E2F /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B3B3DC7F2871408E008A0E2F /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3B3DC802871408E008A0E2F /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3B3DC812871408E008A0E2F /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B3B3DC822871408E008A0E2F /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3B3DC832871408E008A0E2F /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3B3DC852871408E008A0E2F /* label_sanitization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = label_sanitization.h; sourceTree = ""; }; + B3B3DC872871408E008A0E2F /* dylib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dylib.h; sourceTree = ""; }; + B3B3DC892871408E008A0E2F /* net_ifinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_ifinfo.h; sourceTree = ""; }; + B3B3DC8A2871408E008A0E2F /* net_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_compat.h; sourceTree = ""; }; + B3B3DC8B2871408E008A0E2F /* net_socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket.h; sourceTree = ""; }; + B3B3DC8C2871408E008A0E2F /* net_natt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_natt.h; sourceTree = ""; }; + B3B3DC8D2871408E008A0E2F /* net_socket_ssl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket_ssl.h; sourceTree = ""; }; + B3B3DC8E2871408E008A0E2F /* net_http.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http.h; sourceTree = ""; }; + B3B3DC8F2871408E008A0E2F /* net_http_parse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http_parse.h; sourceTree = ""; }; + B3B3DC902871408E008A0E2F /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3B3DC922871408E008A0E2F /* m3u_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m3u_file.h; sourceTree = ""; }; + B3B3DC932871408E008A0E2F /* jsonsax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax.h; sourceTree = ""; }; + B3B3DC942871408E008A0E2F /* rxml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rxml.h; sourceTree = ""; }; + B3B3DC952871408E008A0E2F /* cdfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdfs.h; sourceTree = ""; }; + B3B3DC962871408E008A0E2F /* rpng.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng.h; sourceTree = ""; }; + B3B3DC972871408E008A0E2F /* rtga.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtga.h; sourceTree = ""; }; + B3B3DC982871408E008A0E2F /* rjson.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjson.h; sourceTree = ""; }; + B3B3DC992871408E008A0E2F /* image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = ""; }; + B3B3DC9A2871408E008A0E2F /* logiqx_dat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logiqx_dat.h; sourceTree = ""; }; + B3B3DC9B2871408E008A0E2F /* rbmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbmp.h; sourceTree = ""; }; + B3B3DC9C2871408E008A0E2F /* rwav.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rwav.h; sourceTree = ""; }; + B3B3DC9D2871408E008A0E2F /* jsonsax_full.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax_full.h; sourceTree = ""; }; + B3B3DC9E2871408E008A0E2F /* rjpeg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjpeg.h; sourceTree = ""; }; + B3B3DCA02871408E008A0E2F /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B3B3DCA12871408E008A0E2F /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B3B3DCA22871408E008A0E2F /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B3B3DCA32871408E008A0E2F /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B3B3DCA52871408E008A0E2F /* nx_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_gl.h; sourceTree = ""; }; + B3B3DCA62871408E008A0E2F /* nx_glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_glsym.h; sourceTree = ""; }; + B3B3DCA72871408E008A0E2F /* rglgen_private_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_private_headers.h; sourceTree = ""; }; + B3B3DCA82871408E008A0E2F /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B3B3DCA92871408E008A0E2F /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B3B3DCAB2871408E008A0E2F /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3B3DCAC2871408E008A0E2F /* linked_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linked_list.h; sourceTree = ""; }; + B3B3DCAD2871408E008A0E2F /* file_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_list.h; sourceTree = ""; }; + B3B3DCAE2871408E008A0E2F /* nested_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nested_list.h; sourceTree = ""; }; + B3B3DCAF2871408E008A0E2F /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3B3DCB12871408E008A0E2F /* nbio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nbio.h; sourceTree = ""; }; + B3B3DCB22871408E008A0E2F /* config_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file.h; sourceTree = ""; }; + B3B3DCB32871408E008A0E2F /* archive_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_file.h; sourceTree = ""; }; + B3B3DCB42871408E008A0E2F /* config_file_userdata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file_userdata.h; sourceTree = ""; }; + B3B3DCB52871408E008A0E2F /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3B3DCB62871408E008A0E2F /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3B3DCB82871408E008A0E2F /* rhmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rhmap.h; sourceTree = ""; }; + B3B3DCB92871408E008A0E2F /* rbuf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbuf.h; sourceTree = ""; }; + B3B3DCBA2871408E008A0E2F /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3B3DCBB2871408E008A0E2F /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3B3DCBC2871408E008A0E2F /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3B3DCBE2871408E008A0E2F /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3B3DCBF2871408E008A0E2F /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3B3DCC02871408E008A0E2F /* trans_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trans_stream.h; sourceTree = ""; }; + B3B3DCC12871408E008A0E2F /* rzip_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rzip_stream.h; sourceTree = ""; }; + B3B3DCC22871408E008A0E2F /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3B3DCC32871408E008A0E2F /* stdin_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdin_stream.h; sourceTree = ""; }; + B3B3DCC42871408E008A0E2F /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3B3DCC52871408E008A0E2F /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3B3DCC62871408E008A0E2F /* fastcpy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fastcpy.h; sourceTree = ""; }; + B3B3DCC82871408E008A0E2F /* lzma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lzma.h; sourceTree = ""; }; + B3B3DCC92871408E008A0E2F /* minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minmax.h; sourceTree = ""; }; + B3B3DCCA2871408E008A0E2F /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3B3DCCB2871408E008A0E2F /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3B3DCCC2871408E008A0E2F /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3B3DCCD2871408E008A0E2F /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3B3DCCE2871408E008A0E2F /* libchdr_zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libchdr_zlib.h; sourceTree = ""; }; + B3B3DCCF2871408E008A0E2F /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3B3DCD02871408E008A0E2F /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3B3DCD22871408E008A0E2F /* features_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = features_cpu.h; sourceTree = ""; }; + B3B3DCD32871408E008A0E2F /* lrc_hash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lrc_hash.h; sourceTree = ""; }; + B3B3DCD52871408E008A0E2F /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3B3DCD62871408E008A0E2F /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3B3DCD72871408E008A0E2F /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B3B3DCD92871408E008A0E2F /* float_minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_minmax.h; sourceTree = ""; }; + B3B3DCDA2871408E008A0E2F /* fxp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fxp.h; sourceTree = ""; }; + B3B3DCDB2871408E008A0E2F /* complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = complex.h; sourceTree = ""; }; + B3B3DCDD2871408E008A0E2F /* rtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtime.h; sourceTree = ""; }; + B3B3DCDF2871408E008A0E2F /* d3d_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_defines.h; sourceTree = ""; }; + B3B3DCE02871408E008A0E2F /* gx_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_defines.h; sourceTree = ""; }; + B3B3DCE12871408E008A0E2F /* cocoa_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cocoa_defines.h; sourceTree = ""; }; + B3B3DCE22871408E008A0E2F /* psp_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_defines.h; sourceTree = ""; }; + B3B3DCE32871408E008A0E2F /* ps3_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps3_defines.h; sourceTree = ""; }; + B3B3DCE42871408E008A0E2F /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3B3DCE52871408E008A0E2F /* libretro_gskit_ps2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_gskit_ps2.h; sourceTree = ""; }; + B3B3DCE72871408E008A0E2F /* glsm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm.h; sourceTree = ""; }; + B3B3DCE82871408E008A0E2F /* glsmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsmsym.h; sourceTree = ""; }; + B3B3DCEA2871408E008A0E2F /* dsp_filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_filter.h; sourceTree = ""; }; + B3B3DCEB2871408E008A0E2F /* audio_resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_resampler.h; sourceTree = ""; }; + B3B3DCEC2871408E008A0E2F /* audio_mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mixer.h; sourceTree = ""; }; + B3B3DCEE2871408E008A0E2F /* s16_to_float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s16_to_float.h; sourceTree = ""; }; + B3B3DCEF2871408E008A0E2F /* float_to_s16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_to_s16.h; sourceTree = ""; }; + B3B3DCF02871408E008A0E2F /* audio_mix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mix.h; sourceTree = ""; }; + B3B3DCF12871408E008A0E2F /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3B3DCF32871408E008A0E2F /* tpool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tpool.h; sourceTree = ""; }; + B3B3DCF42871408E008A0E2F /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3B3DCF52871408E008A0E2F /* async_job.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = async_job.h; sourceTree = ""; }; + B3B3DCF62871408E008A0E2F /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3B3DCF82871408E008A0E2F /* vulkan_symbol_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_symbol_wrapper.h; sourceTree = ""; }; + B3B3DCF92871408E008A0E2F /* retro_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; + B3B3DCFA2871408E008A0E2F /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3B3DCFC2871408E008A0E2F /* generic_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = generic_queue.h; sourceTree = ""; }; + B3B3DCFD2871408E008A0E2F /* task_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = task_queue.h; sourceTree = ""; }; + B3B3DCFE2871408E008A0E2F /* fifo_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fifo_queue.h; sourceTree = ""; }; + B3B3DCFF2871408E008A0E2F /* message_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message_queue.h; sourceTree = ""; }; + B3B3DD002871408E008A0E2F /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3B3DD022871408E008A0E2F /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3B3DD032871408E008A0E2F /* libretro_d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_d3d.h; sourceTree = ""; }; + B3B3DD042871408E008A0E2F /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B3B3DD062871408E008A0E2F /* video_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_frame.h; sourceTree = ""; }; + B3B3DD082871408E008A0E2F /* vector_4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_4.h; sourceTree = ""; }; + B3B3DD092871408E008A0E2F /* vector_3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_3.h; sourceTree = ""; }; + B3B3DD0A2871408E008A0E2F /* vector_2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_2.h; sourceTree = ""; }; + B3B3DD0B2871408E008A0E2F /* matrix_3x3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_3x3.h; sourceTree = ""; }; + B3B3DD0C2871408E008A0E2F /* matrix_4x4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_4x4.h; sourceTree = ""; }; + B3B3DD0E2871408E008A0E2F /* scaler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; + B3B3DD0F2871408E008A0E2F /* pixconv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pixconv.h; sourceTree = ""; }; + B3B3DD102871408E008A0E2F /* scaler_int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler_int.h; sourceTree = ""; }; + B3B3DD112871408E008A0E2F /* filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + B3B3DD122871408E008A0E2F /* gl_capabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_capabilities.h; sourceTree = ""; }; + B3B3DD132871408E008A0E2F /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3B3DD142871408E008A0E2F /* filters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + B3B3DD162871408E008A0E2F /* media_detect_cd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = media_detect_cd.h; sourceTree = ""; }; + B3B3DD182871408E008A0E2F /* features_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = features_cpu.c; sourceTree = ""; }; + B3B3DD1A2871408E008A0E2F /* djb2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = djb2.c; sourceTree = ""; }; + B3B3DD1B2871408E008A0E2F /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = ""; }; + B3B3DD1D2871408E008A0E2F /* debugbreak.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugbreak.c; sourceTree = ""; }; + B3B3DD1E2871408E008A0E2F /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B3B3DD202871408E008A0E2F /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3B3DD212871408E008A0E2F /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3B3DD232871408E008A0E2F /* rtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtime.c; sourceTree = ""; }; + B3B3DD282871408E008A0E2F /* core_option_regex.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = core_option_regex.py; sourceTree = ""; }; + B3B3DD292871408E008A0E2F /* v1_to_v2_converter.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = v1_to_v2_converter.py; sourceTree = ""; }; + B3B3DD2A2871408E008A0E2F /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3B3DD2B2871408E008A0E2F /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3B3DD2D2871408E008A0E2F /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3B3DD2E2871408E008A0E2F /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3B3DD2F2871408E008A0E2F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3B3DD312871408E008A0E2F /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3B3DD322871408E008A0E2F /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3B3DD342871408E008A0E2F /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3B3DD352871408E008A0E2F /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3B3DD382871408E008A0E2F /* compat_fnmatch_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch_test.c; sourceTree = ""; }; + B3B3DD392871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD3B2871408E008A0E2F /* strl_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = strl_test.c; sourceTree = ""; }; + B3B3DD3C2871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD3E2871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD3F2871408E008A0E2F /* snprintf_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snprintf_test.c; sourceTree = ""; }; + B3B3DD412871408E008A0E2F /* net_ifinfo_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo_test.c; sourceTree = ""; }; + B3B3DD422871408E008A0E2F /* udp-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "udp-test.c"; sourceTree = ""; }; + B3B3DD432871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD442871408E008A0E2F /* net_http_parse_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_parse_test.c; sourceTree = ""; }; + B3B3DD452871408E008A0E2F /* net_ifinfo */ = {isa = PBXFileReference; lastKnownFileType = text; path = net_ifinfo; sourceTree = ""; }; + B3B3DD462871408E008A0E2F /* http_test */ = {isa = PBXFileReference; lastKnownFileType = text; path = http_test; sourceTree = ""; }; + B3B3DD472871408E008A0E2F /* net_http_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_test.c; sourceTree = ""; }; + B3B3DD4A2871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD4B2871408E008A0E2F /* rpng_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_test.c; sourceTree = ""; }; + B3B3DD4D2871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD4E2871408E008A0E2F /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B3B3DD512871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD522871408E008A0E2F /* nbio_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_test.c; sourceTree = ""; }; + B3B3DD542871408E008A0E2F /* config_file_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file_test.c; sourceTree = ""; }; + B3B3DD552871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD582871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD592871408E008A0E2F /* rzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzip.c; sourceTree = ""; }; + B3B3DD5B2871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD5C2871408E008A0E2F /* md5_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5_test.c; sourceTree = ""; }; + B3B3DD5D2871408E008A0E2F /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3B3DD5E2871408E008A0E2F /* sha1_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1_main.c; sourceTree = ""; }; + B3B3DD602871408E008A0E2F /* glsm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsm.c; sourceTree = ""; }; + B3B3DD632871408E008A0E2F /* eq.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eq.c; sourceTree = ""; }; + B3B3DD642871408E008A0E2F /* EQ.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EQ.dsp; sourceTree = ""; }; + B3B3DD652871408E008A0E2F /* Vibrato.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Vibrato.dsp; sourceTree = ""; }; + B3B3DD662871408E008A0E2F /* ChipTuneEnhance.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChipTuneEnhance.dsp; sourceTree = ""; }; + B3B3DD672871408E008A0E2F /* phaser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = phaser.c; sourceTree = ""; }; + B3B3DD682871408E008A0E2F /* Crystalizer.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Crystalizer.dsp; sourceTree = ""; }; + B3B3DD692871408E008A0E2F /* Mono.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Mono.dsp; sourceTree = ""; }; + B3B3DD6A2871408E008A0E2F /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3B3DD6B2871408E008A0E2F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3B3DD6C2871408E008A0E2F /* chorus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chorus.c; sourceTree = ""; }; + B3B3DD6D2871408E008A0E2F /* ChipTune-Lowpass.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ChipTune-Lowpass.dsp"; sourceTree = ""; }; + B3B3DD6E2871408E008A0E2F /* Phaser.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Phaser.dsp; sourceTree = ""; }; + B3B3DD6F2871408E008A0E2F /* wahwah.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wahwah.c; sourceTree = ""; }; + B3B3DD702871408E008A0E2F /* IIR.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = IIR.dsp; sourceTree = ""; }; + B3B3DD712871408E008A0E2F /* HighShelfDampen.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = HighShelfDampen.dsp; sourceTree = ""; }; + B3B3DD722871408E008A0E2F /* EchoReverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EchoReverb.dsp; sourceTree = ""; }; + B3B3DD732871408E008A0E2F /* iir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iir.c; sourceTree = ""; }; + B3B3DD742871408E008A0E2F /* reverb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reverb.c; sourceTree = ""; }; + B3B3DD752871408E008A0E2F /* crystalizer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crystalizer.c; sourceTree = ""; }; + B3B3DD762871408E008A0E2F /* WahWah.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = WahWah.dsp; sourceTree = ""; }; + B3B3DD782871408E008A0E2F /* fft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = ""; }; + B3B3DD792871408E008A0E2F /* fft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fft.c; sourceTree = ""; }; + B3B3DD7A2871408E008A0E2F /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3B3DD7B2871408E008A0E2F /* BassBoost.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = BassBoost.dsp; sourceTree = ""; }; + B3B3DD7C2871408E008A0E2F /* vibrato.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vibrato.c; sourceTree = ""; }; + B3B3DD7D2871408E008A0E2F /* Echo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Echo.dsp; sourceTree = ""; }; + B3B3DD7E2871408E008A0E2F /* LowPassCPS.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = LowPassCPS.dsp; sourceTree = ""; }; + B3B3DD7F2871408E008A0E2F /* Panning.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Panning.dsp; sourceTree = ""; }; + B3B3DD802871408E008A0E2F /* tremolo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tremolo.c; sourceTree = ""; }; + B3B3DD812871408E008A0E2F /* panning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = panning.c; sourceTree = ""; }; + B3B3DD822871408E008A0E2F /* Chorus.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Chorus.dsp; sourceTree = ""; }; + B3B3DD832871408E008A0E2F /* Tremolo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tremolo.dsp; sourceTree = ""; }; + B3B3DD842871408E008A0E2F /* Reverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Reverb.dsp; sourceTree = ""; }; + B3B3DD852871408E008A0E2F /* echo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = echo.c; sourceTree = ""; }; + B3B3DD862871408E008A0E2F /* audio_mix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mix.c; sourceTree = ""; }; + B3B3DD892871408E008A0E2F /* sinc_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sinc_resampler.c; sourceTree = ""; }; + B3B3DD8A2871408F008A0E2F /* nearest_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nearest_resampler.c; sourceTree = ""; }; + B3B3DD8B2871408F008A0E2F /* sinc_resampler_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sinc_resampler_neon.S; sourceTree = ""; }; + B3B3DD8C2871408F008A0E2F /* audio_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_resampler.c; sourceTree = ""; }; + B3B3DD8D2871408F008A0E2F /* dsp_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp_filter.c; sourceTree = ""; }; + B3B3DD8F2871408F008A0E2F /* s16_to_float.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float.c; sourceTree = ""; }; + B3B3DD902871408F008A0E2F /* float_to_s16_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16_neon.c; sourceTree = ""; }; + B3B3DD912871408F008A0E2F /* s16_to_float_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float_neon.c; sourceTree = ""; }; + B3B3DD922871408F008A0E2F /* float_to_s16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16.c; sourceTree = ""; }; + B3B3DD932871408F008A0E2F /* float_to_s16_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = float_to_s16_neon.S; sourceTree = ""; }; + B3B3DD942871408F008A0E2F /* s16_to_float_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = s16_to_float_neon.S; sourceTree = ""; }; + B3B3DD952871408F008A0E2F /* audio_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mixer.c; sourceTree = ""; }; + B3B3DD972871408F008A0E2F /* wiiu_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiiu_pthread.h; sourceTree = ""; }; + B3B3DD982871408F008A0E2F /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3B3DD992871408F008A0E2F /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3B3DD9A2871408F008A0E2F /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3B3DD9B2871408F008A0E2F /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3B3DD9C2871408F008A0E2F /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B3B3DD9D2871408F008A0E2F /* tpool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tpool.c; sourceTree = ""; }; + B3B3DD9E2871408F008A0E2F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3B3DDA02871408F008A0E2F /* vulkan_symbol_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_symbol_wrapper.c; sourceTree = ""; }; + B3B3DDA22871408F008A0E2F /* fifo_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fifo_queue.c; sourceTree = ""; }; + B3B3DDA32871408F008A0E2F /* message_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = message_queue.c; sourceTree = ""; }; + B3B3DDA42871408F008A0E2F /* generic_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = generic_queue.c; sourceTree = ""; }; + B3B3DDA52871408F008A0E2F /* task_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_queue.c; sourceTree = ""; }; + B3B3DDA72871408F008A0E2F /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3B3DDAA2871408F008A0E2F /* string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string.h; sourceTree = ""; }; + B3B3DDAB2871408F008A0E2F /* string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = ""; }; + B3B3DDAD2871408F008A0E2F /* gl_capabilities.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl_capabilities.c; sourceTree = ""; }; + B3B3DDAF2871408F008A0E2F /* scaler_int.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_int.c; sourceTree = ""; }; + B3B3DDB02871408F008A0E2F /* pixconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; + B3B3DDB12871408F008A0E2F /* scaler_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_filter.c; sourceTree = ""; }; + B3B3DDB22871408F008A0E2F /* scaler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + B3B3DDB42871408F008A0E2F /* sjlj.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjlj.c; sourceTree = ""; }; + B3B3DDB52871408F008A0E2F /* ps2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps2.c; sourceTree = ""; }; + B3B3DDB62871408F008A0E2F /* ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ppc.c; sourceTree = ""; }; + B3B3DDB72871408F008A0E2F /* ucontext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ucontext.c; sourceTree = ""; }; + B3B3DDB82871408F008A0E2F /* fiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fiber.c; sourceTree = ""; }; + B3B3DDB92871408F008A0E2F /* aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aarch64.c; sourceTree = ""; }; + B3B3DDBA2871408F008A0E2F /* libco.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libco.c; sourceTree = ""; }; + B3B3DDBB2871408F008A0E2F /* scefiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scefiber.c; sourceTree = ""; }; + B3B3DDBC2871408F008A0E2F /* genode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = genode.cpp; sourceTree = ""; }; + B3B3DDBD2871408F008A0E2F /* armeabi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armeabi.c; sourceTree = ""; }; + B3B3DDBE2871408F008A0E2F /* amd64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = amd64.c; sourceTree = ""; }; + B3B3DDBF2871408F008A0E2F /* psp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp2.c; sourceTree = ""; }; + B3B3DDC02871408F008A0E2F /* x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = ""; }; + B3B3DDC12871408F008A0E2F /* psp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp1.c; sourceTree = ""; }; + B3B3DDC32871408F008A0E2F /* media_detect_cd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = media_detect_cd.c; sourceTree = ""; }; + B3B3DDC62871408F008A0E2F /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B3B3DDC72871408F008A0E2F /* ugui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui.h; sourceTree = ""; }; + B3B3DDC82871408F008A0E2F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3B3DDC92871408F008A0E2F /* ugui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ugui.c; sourceTree = ""; }; + B3B3DDCA2871408F008A0E2F /* ugui_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui_config.h; sourceTree = ""; }; + B3B3DDCB2871408F008A0E2F /* libretro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cpp; sourceTree = ""; }; + B3B3DDCC2871408F008A0E2F /* burner_libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = burner_libretro.h; sourceTree = ""; }; + B3B3DDCD2871408F008A0E2F /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3B3DDCE2871408F008A0E2F /* retro_cdemu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = retro_cdemu.cpp; sourceTree = ""; }; + B3B3DDD02871408F008A0E2F /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3B3DDD12871408F008A0E2F /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3B3DDD22871408F008A0E2F /* tchar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tchar.h; sourceTree = ""; }; + B3B3DDD32871408F008A0E2F /* ugui_tools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui_tools.h; sourceTree = ""; }; + B3C7621020783162009950E4 /* PVFBNeo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFBNeo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B3B3DE13287144D0008A0E2F /* libfbneo-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3B3DE10287144D0008A0E2F /* libfbneo.a in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B32296AD287835FB00585AD8 /* generated */ = { + isa = PBXGroup; + children = ( + B32296AE287835FB00585AD8 /* neo_sprite_func.h */, + B32296AF287835FB00585AD8 /* neo_sprite_func_table.h */, + B32296B0287835FB00585AD8 /* toa_gp9001_func.h */, + B32296B1287835FB00585AD8 /* m68kops.c */, + B32296B2287835FB00585AD8 /* driverlist.h */, + B32296B3287835FB00585AD8 /* psikyo_tile_func_table.h */, + B32296B4287835FB00585AD8 /* psikyo_tile_func.h */, + B32296B5287835FB00585AD8 /* cave_tile_func.h */, + B32296B6287835FB00585AD8 /* driverlist copy.h */, + B32296B7287835FB00585AD8 /* cave_sprite_func.h */, + B32296B8287835FB00585AD8 /* cave_sprite_func_table.h */, + B32296B9287835FB00585AD8 /* toa_gp9001_func_table.h */, + B32296BA287835FB00585AD8 /* pgm_sprite.h */, + B32296BB287835FB00585AD8 /* ctv.h */, + B32296BC287835FB00585AD8 /* cave_tile_func_table.h */, + ); + path = generated; + sourceTree = ""; + }; + B3B3D1772871354D008A0E2F /* FBNeo */ = { + isa = PBXGroup; + children = ( + B3B3D1D72871354D008A0E2F /* .editorconfig */, + B3B3D1DB2871354D008A0E2F /* .gitignore */, + B3B3D1812871354D008A0E2F /* makefile */, + B3B3D1D92871354D008A0E2F /* makefile.burn_rules */, + B3B3D2112871354D008A0E2F /* makefile.burner_win32_rules */, + B3B3D2102871354D008A0E2F /* fba.chm */, + B3B3D1D62871354D008A0E2F /* whatsnew.html */, + B3B3D1782871354D008A0E2F /* appveyor.yml.ignore */, + B3B3D17E2871354D008A0E2F /* makefile.mamemingw */, + B3B3D17C2871354D008A0E2F /* LICENSE.md */, + B3B3D17A2871354D008A0E2F /* README-macOS.md */, + B3B3D17D2871354D008A0E2F /* README-PI.md */, + B3B3D1DA2871354D008A0E2F /* README-SDL.md */, + B3B3D1D82871354D008A0E2F /* README.md */, + B3B3D17B2871354D008A0E2F /* makefile.mingw */, + B3B3D17F2871354D008A0E2F /* makefile.pi */, + B3B3D1792871354D008A0E2F /* makefile.sdl */, + B3B3D20F2871354D008A0E2F /* makefile.sdl2 */, + B3B3D1802871354D008A0E2F /* makefile.vc */, + B3B3D1DC2871354D008A0E2F /* .github */, + B3B3D1E92871354D008A0E2F /* fbahelpfilesrc */, + B3B3D1822871354D008A0E2F /* projectfiles */, + B3B3D2122871354D008A0E2F /* src */, + ); + path = FBNeo; + sourceTree = ""; + }; + B3B3D1822871354D008A0E2F /* projectfiles */ = { + isa = PBXGroup; + children = ( + B3B3D1832871354D008A0E2F /* xcode */, + B3B3D1B82871354D008A0E2F /* visualstudio-2010 */, + B3B3D1BD2871354D008A0E2F /* visualstudio-2019 */, + B3B3D1C32871354D008A0E2F /* qtcreator */, + B3B3D1C62871354D008A0E2F /* visualstudio-2015 */, + B3B3D1CC2871354D008A0E2F /* visualstudio-2010-libretro-360 */, + B3B3D1D02871354D008A0E2F /* visualstudio-2003-libretro-xbox1 */, + ); + path = projectfiles; + sourceTree = ""; + }; + B3B3D1832871354D008A0E2F /* xcode */ = { + isa = PBXGroup; + children = ( + B3B3D1842871354D008A0E2F /* Emulator.xcodeproj */, + B3B3D1872871354D008A0E2F /* Sparkle.framework */, + B3B3D1882871354D008A0E2F /* Doc */, + B3B3D18A2871354D008A0E2F /* Emulator */, + ); + path = xcode; + sourceTree = ""; + }; + B3B3D1852871354D008A0E2F /* Products */ = { + isa = PBXGroup; + children = ( + B3B3DA2328713555008A0E2F /* FinalBurn Neo.app */, + ); + name = Products; + sourceTree = ""; + }; + B3B3D1882871354D008A0E2F /* Doc */ = { + isa = PBXGroup; + children = ( + B3B3D1892871354D008A0E2F /* License.rtf */, + ); + path = Doc; + sourceTree = ""; + }; + B3B3D18A2871354D008A0E2F /* Emulator */ = { + isa = PBXGroup; + children = ( + B3B3D18B2871354D008A0E2F /* Defaults.plist */, + B3B3D18C2871354D008A0E2F /* AppDelegate.h */, + B3B3D18D2871354D008A0E2F /* FinalBurnNeo.entitlements */, + B3B3D18E2871354D008A0E2F /* Assets.xcassets */, + B3B3D18F2871354D008A0E2F /* LogViewer.xib */, + B3B3D1912871354D008A0E2F /* Launcher.xib */, + B3B3D1932871354D008A0E2F /* Preferences.xib */, + B3B3D1952871354D008A0E2F /* About.xib */, + B3B3D1972871354D008A0E2F /* MainMenu.xib */, + B3B3D1992871354D008A0E2F /* Emulator.xib */, + B3B3D19B2871354D008A0E2F /* FinalBurn NeoDebug.entitlements */, + B3B3D19C2871354D008A0E2F /* main.m */, + B3B3D19D2871354D008A0E2F /* AppDelegate.m */, + B3B3D19E2871354D008A0E2F /* dsa_pub.pem */, + B3B3D19F2871354D008A0E2F /* Controllers */, + B3B3D1AC2871354D008A0E2F /* Views */, + B3B3D1B72871354D008A0E2F /* Info.plist */, + ); + path = Emulator; + sourceTree = ""; + }; + B3B3D19F2871354D008A0E2F /* Controllers */ = { + isa = PBXGroup; + children = ( + B3B3D1A02871354D008A0E2F /* FBPreferencesController.h */, + B3B3D1A12871354D008A0E2F /* FBLauncherController.m */, + B3B3D1A22871354D008A0E2F /* FBLogViewerController.h */, + B3B3D1A32871354D008A0E2F /* NSWindowController+Core.h */, + B3B3D1A42871354D008A0E2F /* FBEmulatorController.h */, + B3B3D1A52871354D008A0E2F /* FBAboutController.m */, + B3B3D1A62871354D008A0E2F /* FBPreferencesController.mm */, + B3B3D1A72871354D008A0E2F /* FBLauncherController.h */, + B3B3D1A82871354D008A0E2F /* NSWindowController+Core.m */, + B3B3D1A92871354D008A0E2F /* FBLogViewerController.m */, + B3B3D1AA2871354D008A0E2F /* FBAboutController.h */, + B3B3D1AB2871354D008A0E2F /* FBEmulatorController.m */, + ); + path = Controllers; + sourceTree = ""; + }; + B3B3D1AC2871354D008A0E2F /* Views */ = { + isa = PBXGroup; + children = ( + B3B3D1AD2871354D008A0E2F /* FBJoyCaptureView.h */, + B3B3D1AE2871354D008A0E2F /* FBRomSetStatusAsNSImage.m */, + B3B3D1AF2871354D008A0E2F /* AKCaptureFieldCell.m */, + B3B3D1B02871354D008A0E2F /* FBScreenView.h */, + B3B3D1B12871354D008A0E2F /* FBScreenView.mm */, + B3B3D1B22871354D008A0E2F /* FBDropFileScrollView.m */, + B3B3D1B32871354D008A0E2F /* FBJoyCaptureView.m */, + B3B3D1B42871354D008A0E2F /* AKCaptureFieldCell.h */, + B3B3D1B52871354D008A0E2F /* FBRomSetStatusAsNSImage.h */, + B3B3D1B62871354D008A0E2F /* FBDropFileScrollView.h */, + ); + path = Views; + sourceTree = ""; + }; + B3B3D1B82871354D008A0E2F /* visualstudio-2010 */ = { + isa = PBXGroup; + children = ( + B3B3D1B92871354D008A0E2F /* fba_vs2010.sln */, + B3B3D1BA2871354D008A0E2F /* fba_vs2010.vcxproj */, + B3B3D1BB2871354D008A0E2F /* fba_vs2010.vcxproj.filters */, + B3B3D1BC2871354D008A0E2F /* .gitignore */, + ); + path = "visualstudio-2010"; + sourceTree = ""; + }; + B3B3D1BD2871354D008A0E2F /* visualstudio-2019 */ = { + isa = PBXGroup; + children = ( + B3B3D1BE2871354D008A0E2F /* fba_vs2010.vcxproj */, + B3B3D1BF2871354D008A0E2F /* fba_vs2010.vcxproj.filters */, + B3B3D1C02871354D008A0E2F /* .gitignore */, + B3B3D1C12871354D008A0E2F /* building.txt */, + B3B3D1C22871354D008A0E2F /* fba_vs2019.sln */, + ); + path = "visualstudio-2019"; + sourceTree = ""; + }; + B3B3D1C32871354D008A0E2F /* qtcreator */ = { + isa = PBXGroup; + children = ( + B3B3D1C42871354D008A0E2F /* fba_qt.pro */, + B3B3D1C52871354D008A0E2F /* fba_sdl.pro */, + ); + path = qtcreator; + sourceTree = ""; + }; + B3B3D1C62871354D008A0E2F /* visualstudio-2015 */ = { + isa = PBXGroup; + children = ( + B3B3D1C72871354D008A0E2F /* fba_vs2010.vcxproj */, + B3B3D1C82871354D008A0E2F /* fba_vs2015.sln */, + B3B3D1C92871354D008A0E2F /* fba_vs2010.vcxproj.filters */, + B3B3D1CA2871354D008A0E2F /* .gitignore */, + B3B3D1CB2871354D008A0E2F /* building.txt */, + ); + path = "visualstudio-2015"; + sourceTree = ""; + }; + B3B3D1CC2871354D008A0E2F /* visualstudio-2010-libretro-360 */ = { + isa = PBXGroup; + children = ( + B3B3D1CD2871354D008A0E2F /* fba_vs2010_libretro_360.sln */, + B3B3D1CE2871354D008A0E2F /* fba_vs2010_libretro_360.vcxproj.filters */, + B3B3D1CF2871354D008A0E2F /* fba_vs2010_libretro_360.vcxproj */, + ); + path = "visualstudio-2010-libretro-360"; + sourceTree = ""; + }; + B3B3D1D02871354D008A0E2F /* visualstudio-2003-libretro-xbox1 */ = { + isa = PBXGroup; + children = ( + B3B3D1D12871354D008A0E2F /* zlib.h */, + B3B3D1D22871354D008A0E2F /* fba_vs2003_libretro_xbox1.sln */, + B3B3D1D32871354D008A0E2F /* fba_vs2003_libretro_xbox1.vcproj */, + B3B3D1D42871354D008A0E2F /* stdint.h */, + B3B3D1D52871354D008A0E2F /* zconf.h */, + ); + path = "visualstudio-2003-libretro-xbox1"; + sourceTree = ""; + }; + B3B3D1DC2871354D008A0E2F /* .github */ = { + isa = PBXGroup; + children = ( + B3B3D1DD2871354D008A0E2F /* workflows */, + B3B3D1E72871354D008A0E2F /* ISSUE_TEMPLATE */, + ); + path = .github; + sourceTree = ""; + }; + B3B3D1DD2871354D008A0E2F /* workflows */ = { + isa = PBXGroup; + children = ( + B3B3D1DE2871354D008A0E2F /* macos.yml.ignore */, + B3B3D1DF2871354D008A0E2F /* vs2019-x64.yml.ignore */, + B3B3D1E02871354D008A0E2F /* vs2019-win32.yml.ignore */, + B3B3D1E12871354D008A0E2F /* sdl1.2.yml.ignore */, + B3B3D1E22871354D008A0E2F /* code.yml.ignore */, + B3B3D1E32871354D008A0E2F /* nightly-release.yml */, + B3B3D1E42871354D008A0E2F /* sdl2.yml.ignore */, + B3B3D1E52871354D008A0E2F /* mingw-win32.yml.ignore */, + B3B3D1E62871354D008A0E2F /* AutoBuild.yml.ignore */, + ); + path = workflows; + sourceTree = ""; + }; + B3B3D1E72871354D008A0E2F /* ISSUE_TEMPLATE */ = { + isa = PBXGroup; + children = ( + B3B3D1E82871354D008A0E2F /* bug_report.md */, + ); + path = ISSUE_TEMPLATE; + sourceTree = ""; + }; + B3B3D1E92871354D008A0E2F /* fbahelpfilesrc */ = { + isa = PBXGroup; + children = ( + B3B3D1EA2871354D008A0E2F /* dialog_multislot.htm */, + B3B3D1EB2871354D008A0E2F /* intro.htm */, + B3B3D1EC2871354D008A0E2F /* acknowledgments.htm */, + B3B3D1ED2871354D008A0E2F /* dialog_choose_monitor.htm */, + B3B3D1EE2871354D008A0E2F /* Table of Contents.hhc */, + B3B3D1EF2871354D008A0E2F /* dialog_shot_factory.htm */, + B3B3D1F02871354D008A0E2F /* dialog_rom_paths.htm */, + B3B3D1F12871354D008A0E2F /* images */, + B3B3D1F62871354D008A0E2F /* dialog_neocdz.htm */, + B3B3D1F72871354D008A0E2F /* dialog_inputs.htm */, + B3B3D1F82871354D008A0E2F /* dialog_ips_manager.htm */, + B3B3D1F92871354D008A0E2F /* keys.htm */, + B3B3D1FA2871354D008A0E2F /* fbneo.hhp */, + B3B3D1FB2871354D008A0E2F /* menu_game.htm */, + B3B3D1FC2871354D008A0E2F /* localise_app.htm */, + B3B3D1FD2871354D008A0E2F /* fbneo.hhk */, + B3B3D1FE2871354D008A0E2F /* dialog_game_info.htm */, + B3B3D1FF2871354D008A0E2F /* cheat_format.htm */, + B3B3D2002871354D008A0E2F /* dialog_game_select.htm */, + B3B3D2012871354D008A0E2F /* menu_misc.htm */, + B3B3D2022871354D008A0E2F /* menu_input.htm */, + B3B3D2032871354D008A0E2F /* fbneo.chm */, + B3B3D2042871354D008A0E2F /* menu_video.htm */, + B3B3D2052871354D008A0E2F /* dialog_dips.htm */, + B3B3D2062871354D008A0E2F /* presets.htm */, + B3B3D2072871354D008A0E2F /* command.htm */, + B3B3D2082871354D008A0E2F /* dialog_cheats.htm */, + B3B3D2092871354D008A0E2F /* menu_audio.htm */, + B3B3D20A2871354D008A0E2F /* dialog_support_path.htm */, + B3B3D20B2871354D008A0E2F /* menu_help.htm */, + B3B3D20C2871354D008A0E2F /* localise_gamelist.htm */, + B3B3D20D2871354D008A0E2F /* dialog_palette_viewer.htm */, + B3B3D20E2871354D008A0E2F /* sysreq.htm */, + ); + path = fbahelpfilesrc; + sourceTree = ""; + }; + B3B3D1F12871354D008A0E2F /* images */ = { + isa = PBXGroup; + children = ( + B3B3D1F22871354D008A0E2F /* tv not found.ico */, + B3B3D1F32871354D008A0E2F /* misc.bmp */, + B3B3D1F42871354D008A0E2F /* tv not working.ico */, + B3B3D1F52871354D008A0E2F /* tv not found non essential.ico */, + ); + path = images; + sourceTree = ""; + }; + B3B3D2122871354D008A0E2F /* src */ = { + isa = PBXGroup; + children = ( + B3B3D2132871354D008A0E2F /* burn */, + B3B3D68728713551008A0E2F /* cpu */, + B3B3D7A528713552008A0E2F /* dep */, + B3B3D8BF28713553008A0E2F /* intf */, + B3B3D93E28713554008A0E2F /* license.txt */, + B3B3D93F28713554008A0E2F /* burner */, + ); + path = src; + sourceTree = ""; + }; + B3B3D2132871354D008A0E2F /* burn */ = { + isa = PBXGroup; + children = ( + B3B3D56F28713550008A0E2F /* burn_sound_a.asm */, + B3B3D57328713550008A0E2F /* burn_bitmap.cpp */, + B3B3D61928713551008A0E2F /* burn_gun.cpp */, + B3B3D2142871354D008A0E2F /* burn_led.cpp */, + B3B3D57428713550008A0E2F /* burn_memory.cpp */, + B3B3D56328713550008A0E2F /* burn_pal.cpp */, + B3B3D61B28713551008A0E2F /* burn_shift.cpp */, + B3B3D61728713551008A0E2F /* burn_sound_c.cpp */, + B3B3D61828713551008A0E2F /* burn_sound.cpp */, + B3B3D56428713550008A0E2F /* burn.cpp */, + B3B3D61428713551008A0E2F /* cheat.cpp */, + B3B3D55F28713550008A0E2F /* debug_track.cpp */, + B3B3D56528713550008A0E2F /* hiscore.cpp */, + B3B3D61228713551008A0E2F /* load.cpp */, + B3B3D55C28713550008A0E2F /* tilemap_generic.cpp */, + B3B3D61A28713551008A0E2F /* tiles_generic.cpp */, + B3B3D56928713550008A0E2F /* timer.cpp */, + B3B3D57228713550008A0E2F /* vector.cpp */, + B3B3D56128713550008A0E2F /* bitswap.h */, + B3B3D55E28713550008A0E2F /* burn_bitmap.h */, + B3B3D57128713550008A0E2F /* burn_endian.h */, + B3B3D56828713550008A0E2F /* burn_gun.h */, + B3B3D55D28713550008A0E2F /* burn_led.h */, + B3B3D56A28713550008A0E2F /* burn_pal.h */, + B3B3D61128713551008A0E2F /* burn_shift.h */, + B3B3D56728713550008A0E2F /* burn_sound.h */, + B3B3D56028713550008A0E2F /* burn.h */, + B3B3D56C28713550008A0E2F /* burnint.h */, + B3B3D55B28713550008A0E2F /* cheat.h */, + B3B3D56E28713550008A0E2F /* driver.h */, + B3B3D56D28713550008A0E2F /* hiscore.h */, + B3B3D61628713551008A0E2F /* state.h */, + B3B3D56628713550008A0E2F /* stdfunc.h */, + B3B3D61328713551008A0E2F /* tilemap_generic.h */, + B3B3D56B28713550008A0E2F /* tiles_generic.h */, + B3B3D57028713550008A0E2F /* timer.h */, + B3B3D61528713551008A0E2F /* vector.h */, + B3B3D56228713550008A0E2F /* version.h */, + B3B3D61C28713551008A0E2F /* devices */, + B3B3D2152871354E008A0E2F /* drv */, + B3B3D57528713550008A0E2F /* snd */, + ); + path = burn; + sourceTree = ""; + }; + B3B3D2152871354E008A0E2F /* drv */ = { + isa = PBXGroup; + children = ( + B3B3D26F2871354E008A0E2F /* d_parent.cpp */, + B3B3D25A2871354E008A0E2F /* atari */, + B3B3D4032871354F008A0E2F /* capcom */, + B3B3D2432871354E008A0E2F /* cave */, + B3B3D4752871354F008A0E2F /* channelf */, + B3B3D3C12871354F008A0E2F /* coleco */, + B3B3D3F02871354F008A0E2F /* cps3 */, + B3B3D3192871354E008A0E2F /* dataeast */, + B3B3D3122871354E008A0E2F /* galaxian */, + B3B3D2202871354E008A0E2F /* irem */, + B3B3D3492871354E008A0E2F /* konami */, + B3B3D2162871354E008A0E2F /* megadrive */, + B3B3D3A62871354F008A0E2F /* midway */, + B3B3D3C32871354F008A0E2F /* msx */, + B3B3D3C52871354F008A0E2F /* neogeo */, + B3B3D21E2871354E008A0E2F /* nes */, + B3B3D3452871354E008A0E2F /* pce */, + B3B3D4692871354F008A0E2F /* pgm */, + B3B3D4772871354F008A0E2F /* pre90s */, + B3B3D3F72871354F008A0E2F /* psikyo */, + B3B3D2702871354E008A0E2F /* pst90s */, + B3B3D2ED2871354E008A0E2F /* sega */, + B3B3D3BF2871354F008A0E2F /* sg1000 */, + B3B3D22F2871354E008A0E2F /* sms */, + B3B3D3F52871354F008A0E2F /* spectrum */, + B3B3D4212871354F008A0E2F /* taito */, + B3B3D3D12871354F008A0E2F /* toaplan */, + ); + path = drv; + sourceTree = ""; + }; + B3B3D2162871354E008A0E2F /* megadrive */ = { + isa = PBXGroup; + children = ( + B3B3D2172871354E008A0E2F /* d_mdarcbl.cpp */, + B3B3D21A2871354E008A0E2F /* d_megadrive.cpp */, + B3B3D2192871354E008A0E2F /* mdeeprom.cpp */, + B3B3D21C2871354E008A0E2F /* megadrive.cpp */, + B3B3D21B2871354E008A0E2F /* stm95.cpp */, + B3B3D21D2871354E008A0E2F /* mdeeprom.h */, + B3B3D2182871354E008A0E2F /* megadrive.h */, + ); + path = megadrive; + sourceTree = ""; + }; + B3B3D21E2871354E008A0E2F /* nes */ = { + isa = PBXGroup; + children = ( + B3B3D21F2871354E008A0E2F /* d_nes.cpp */, + ); + path = nes; + sourceTree = ""; + }; + B3B3D2202871354E008A0E2F /* irem */ = { + isa = PBXGroup; + children = ( + B3B3D22C2871354E008A0E2F /* d_m52.cpp */, + B3B3D22D2871354E008A0E2F /* d_m57.cpp */, + B3B3D2242871354E008A0E2F /* d_m58.cpp */, + B3B3D2282871354E008A0E2F /* d_m62.cpp */, + B3B3D2272871354E008A0E2F /* d_m63.cpp */, + B3B3D2262871354E008A0E2F /* d_m72.cpp */, + B3B3D22B2871354E008A0E2F /* d_m90.cpp */, + B3B3D22A2871354E008A0E2F /* d_m92.cpp */, + B3B3D2232871354E008A0E2F /* d_m107.cpp */, + B3B3D2292871354E008A0E2F /* d_vigilant.cpp */, + B3B3D22E2871354E008A0E2F /* irem_cpu.cpp */, + B3B3D2212871354E008A0E2F /* irem_sound.cpp */, + B3B3D2252871354E008A0E2F /* irem_cpu.h */, + B3B3D2222871354E008A0E2F /* irem_sound.h */, + ); + path = irem; + sourceTree = ""; + }; + B3B3D22F2871354E008A0E2F /* sms */ = { + isa = PBXGroup; + children = ( + B3B3D2302871354E008A0E2F /* smsshared.h */, + B3B3D2312871354E008A0E2F /* d_sms.cpp */, + B3B3D2322871354E008A0E2F /* smsfmintf.cpp */, + B3B3D2332871354E008A0E2F /* smssound.cpp */, + B3B3D2342871354E008A0E2F /* smssystem.cpp */, + B3B3D2352871354E008A0E2F /* sms.h */, + B3B3D2362871354E008A0E2F /* smspio.h */, + B3B3D2372871354E008A0E2F /* smssound.h */, + B3B3D2382871354E008A0E2F /* smstms.h */, + B3B3D2392871354E008A0E2F /* smsvdp.cpp */, + B3B3D23A2871354E008A0E2F /* smsfmintf.h */, + B3B3D23B2871354E008A0E2F /* smsrender.cpp */, + B3B3D23C2871354E008A0E2F /* smspio.cpp */, + B3B3D23D2871354E008A0E2F /* smsvdp.h */, + B3B3D23E2871354E008A0E2F /* smshvc.h */, + B3B3D23F2871354E008A0E2F /* smssystem.h */, + B3B3D2402871354E008A0E2F /* smstms.cpp */, + B3B3D2412871354E008A0E2F /* smsrender.h */, + B3B3D2422871354E008A0E2F /* sms.cpp */, + ); + path = sms; + sourceTree = ""; + }; + B3B3D2432871354E008A0E2F /* cave */ = { + isa = PBXGroup; + children = ( + B3B3D2492871354E008A0E2F /* cave_palette.cpp */, + B3B3D2462871354E008A0E2F /* cave_sprite.cpp */, + B3B3D24E2871354E008A0E2F /* cave_tile.cpp */, + B3B3D24A2871354E008A0E2F /* cave.cpp */, + B3B3D24C2871354E008A0E2F /* d_dodonpachi.cpp */, + B3B3D2512871354E008A0E2F /* d_donpachi.cpp */, + B3B3D2482871354E008A0E2F /* d_esprade.cpp */, + B3B3D2442871354E008A0E2F /* d_feversos.cpp */, + B3B3D24F2871354E008A0E2F /* d_gaia.cpp */, + B3B3D2542871354E008A0E2F /* d_guwange.cpp */, + B3B3D2552871354E008A0E2F /* d_hotdogst.cpp */, + B3B3D24B2871354E008A0E2F /* d_korokoro.cpp */, + B3B3D24D2871354E008A0E2F /* d_mazinger.cpp */, + B3B3D2472871354E008A0E2F /* d_metmqstr.cpp */, + B3B3D2532871354E008A0E2F /* d_pwrinst2.cpp */, + B3B3D2592871354E008A0E2F /* d_sailormn.cpp */, + B3B3D2582871354E008A0E2F /* d_tjumpman.cpp */, + B3B3D2522871354E008A0E2F /* d_uopoko.cpp */, + B3B3D2562871354E008A0E2F /* cave_sprite_render_zoom.h */, + B3B3D2452871354E008A0E2F /* cave_sprite_render.h */, + B3B3D2502871354E008A0E2F /* cave_tile_render.h */, + B3B3D2572871354E008A0E2F /* cave.h */, + ); + path = cave; + sourceTree = ""; + }; + B3B3D25A2871354E008A0E2F /* atari */ = { + isa = PBXGroup; + children = ( + B3B3D25B2871354E008A0E2F /* d_akkaarrh.cpp */, + B3B3D2642871354E008A0E2F /* d_arcadecl.cpp */, + B3B3D25D2871354E008A0E2F /* d_atarig1.cpp */, + B3B3D26E2871354E008A0E2F /* d_badlands.cpp */, + B3B3D2662871354E008A0E2F /* d_batman.cpp */, + B3B3D25E2871354E008A0E2F /* d_blstroid.cpp */, + B3B3D2652871354E008A0E2F /* d_eprom.cpp */, + B3B3D26C2871354E008A0E2F /* d_gauntlet.cpp */, + B3B3D26A2871354E008A0E2F /* d_klax.cpp */, + B3B3D26B2871354E008A0E2F /* d_missile.cpp */, + B3B3D2602871354E008A0E2F /* d_offtwall.cpp */, + B3B3D2612871354E008A0E2F /* d_rampart.cpp */, + B3B3D26D2871354E008A0E2F /* d_relief.cpp */, + B3B3D2692871354E008A0E2F /* d_shuuz.cpp */, + B3B3D2682871354E008A0E2F /* d_skullxbo.cpp */, + B3B3D2672871354E008A0E2F /* d_thunderj.cpp */, + B3B3D25F2871354E008A0E2F /* d_toobin.cpp */, + B3B3D2622871354E008A0E2F /* d_vindictr.cpp */, + B3B3D2632871354E008A0E2F /* d_xybots.cpp */, + B3B3D25C2871354E008A0E2F /* WHATSNEW.txt */, + ); + path = atari; + sourceTree = ""; + }; + B3B3D2702871354E008A0E2F /* pst90s */ = { + isa = PBXGroup; + children = ( + B3B3D2712871354E008A0E2F /* d_esd16.cpp */, + B3B3D2722871354E008A0E2F /* d_suna16.cpp */, + B3B3D2732871354E008A0E2F /* d_funybubl.cpp */, + B3B3D2742871354E008A0E2F /* d_ohmygod.cpp */, + B3B3D2752871354E008A0E2F /* d_fuukifg2.cpp */, + B3B3D2762871354E008A0E2F /* d_seibuspi.cpp */, + B3B3D2772871354E008A0E2F /* d_diverboy.cpp */, + B3B3D2782871354E008A0E2F /* d_fuukifg3.cpp */, + B3B3D2792871354E008A0E2F /* d_kickgoal.cpp */, + B3B3D27A2871354E008A0E2F /* d_pass.cpp */, + B3B3D27B2871354E008A0E2F /* d_tumbleb.cpp */, + B3B3D27C2871354E008A0E2F /* d_suprnova.cpp */, + B3B3D27D2871354E008A0E2F /* d_gaelco.cpp */, + B3B3D27E2871354E008A0E2F /* d_deniam.cpp */, + B3B3D27F2871354E008A0E2F /* d_lordgun.cpp */, + B3B3D2802871354E008A0E2F /* d_playmark.cpp */, + B3B3D2812871354E008A0E2F /* d_cultures.cpp */, + B3B3D2822871354E008A0E2F /* d_speedspn.cpp */, + B3B3D2832871354E008A0E2F /* d_namconb1.cpp */, + B3B3D2842871354E008A0E2F /* d_aerofgt.cpp */, + B3B3D2852871354E008A0E2F /* d_20pacgal.cpp */, + B3B3D2862871354E008A0E2F /* d_mwarr.cpp */, + B3B3D2872871354E008A0E2F /* d_f-32.cpp */, + B3B3D2882871354E008A0E2F /* d_shadfrce.cpp */, + B3B3D2892871354E008A0E2F /* d_pipedrm.cpp */, + B3B3D28A2871354E008A0E2F /* d_powerins.cpp */, + B3B3D28B2871354E008A0E2F /* d_crospang.cpp */, + B3B3D28C2871354E008A0E2F /* d_yunsun16.cpp */, + B3B3D28D2871354E008A0E2F /* d_crshrace.cpp */, + B3B3D28E2871354E008A0E2F /* d_aquarium.cpp */, + B3B3D28F2871354E008A0E2F /* d_gstream.cpp */, + B3B3D2902871354E008A0E2F /* d_galspnbl.cpp */, + B3B3D2912871354E008A0E2F /* d_ssv.cpp */, + B3B3D2922871354E008A0E2F /* d_raiden2.cpp */, + B3B3D2932871354E008A0E2F /* d_go2000.cpp */, + B3B3D2942871354E008A0E2F /* d_onetwo.cpp */, + B3B3D2952871354E008A0E2F /* d_dreamwld.cpp */, + B3B3D2962871354E008A0E2F /* d_targeth.cpp */, + B3B3D2972871354E008A0E2F /* d_mirage.cpp */, + B3B3D2982871354E008A0E2F /* d_metro.cpp */, + B3B3D2992871354E008A0E2F /* d_galpani3.cpp */, + B3B3D29A2871354E008A0E2F /* d_silkroad.cpp */, + B3B3D29B2871354E008A0E2F /* d_3x3puzzl.cpp */, + B3B3D29C2871354E008A0E2F /* d_midas.cpp */, + B3B3D29D2871354E008A0E2F /* d_drtomy.cpp */, + B3B3D29E2871354E008A0E2F /* d_eolith16.cpp */, + B3B3D29F2871354E008A0E2F /* d_artmagic.cpp */, + B3B3D2A02871354E008A0E2F /* d_dcon.cpp */, + B3B3D2A12871354E008A0E2F /* d_itech32.cpp */, + B3B3D2A22871354E008A0E2F /* d_eolith.cpp */, + B3B3D2A32871354E008A0E2F /* d_xorworld.cpp */, + B3B3D2A42871354E008A0E2F /* d_silvmil.cpp */, + B3B3D2A52871354E008A0E2F /* d_wwfwfest.cpp */, + B3B3D2A62871354E008A0E2F /* d_goori.cpp */, + B3B3D2A72871354E008A0E2F /* d_drgnmst.cpp */, + B3B3D2A82871354E008A0E2F /* d_ngp.cpp */, + B3B3D2A92871354E008A0E2F /* d_limenko.cpp */, + B3B3D2AA2871354E008A0E2F /* d_cischeat.cpp */, + B3B3D2AB2871354E008A0E2F /* d_shangha3.cpp */, + B3B3D2AC2871354E008A0E2F /* d_gotcha.cpp */, + B3B3D2AD2871354E008A0E2F /* d_1945kiii.cpp */, + B3B3D2AE2871354E008A0E2F /* d_galpanic.cpp */, + B3B3D2AF2871354E008A0E2F /* d_tecmo16.cpp */, + B3B3D2B02871354E008A0E2F /* d_airbustr.cpp */, + B3B3D2B12871354E008A0E2F /* d_macrossp.cpp */, + B3B3D2B22871354E008A0E2F /* d_pkscram.cpp */, + B3B3D2B32871354E008A0E2F /* d_inufuku.cpp */, + B3B3D2B42871354E008A0E2F /* d_sandscrp.cpp */, + B3B3D2B52871354E008A0E2F /* d_supduck.cpp */, + B3B3D2B62871354E008A0E2F /* d_mcatadv.cpp */, + B3B3D2B72871354E008A0E2F /* d_egghunt.cpp */, + B3B3D2B82871354E008A0E2F /* d_bloodbro.cpp */, + B3B3D2B92871354E008A0E2F /* d_oneshot.cpp */, + B3B3D2BA2871354E008A0E2F /* d_tetrisp2.cpp */, + B3B3D2BB2871354E008A0E2F /* d_raiden.cpp */, + B3B3D2BC2871354E008A0E2F /* d_mugsmash.cpp */, + B3B3D2BD2871354E008A0E2F /* d_nmk16.cpp */, + B3B3D2BE2871354E008A0E2F /* d_powerbal.cpp */, + B3B3D2BF2871354E008A0E2F /* d_hyperpac.cpp */, + B3B3D2C02871354E008A0E2F /* d_kaneko16.cpp */, + B3B3D2C12871354E008A0E2F /* d_mosaic.cpp */, + B3B3D2C22871354E008A0E2F /* kanekotb.h */, + B3B3D2C32871354E008A0E2F /* d_rabbit.cpp */, + B3B3D2C42871354E008A0E2F /* d_discoboy.cpp */, + B3B3D2C52871354E008A0E2F /* d_seta2.cpp */, + B3B3D2C62871354E008A0E2F /* d_ms32.cpp */, + B3B3D2C72871354E008A0E2F /* d_vmetal.cpp */, + B3B3D2C82871354E008A0E2F /* d_legionna.cpp */, + B3B3D2C92871354E008A0E2F /* d_pasha2.cpp */, + B3B3D2CA2871354E008A0E2F /* d_nmg5.cpp */, + B3B3D2CB2871354E008A0E2F /* d_namcos2.cpp */, + B3B3D2CC2871354E008A0E2F /* d_x2222.cpp */, + B3B3D2CD2871354E008A0E2F /* d_pushman.cpp */, + B3B3D2CE2871354E008A0E2F /* d_bestleag.cpp */, + B3B3D2CF2871354E008A0E2F /* d_btoads.cpp */, + B3B3D2D02871354E008A0E2F /* d_f1gp.cpp */, + B3B3D2D12871354E008A0E2F /* d_jchan.cpp */, + B3B3D2D22871354E008A0E2F /* d_pirates.cpp */, + B3B3D2D32871354E008A0E2F /* d_taotaido.cpp */, + B3B3D2D42871354E008A0E2F /* d_tecmosys.cpp */, + B3B3D2D52871354E008A0E2F /* d_patapata.cpp */, + B3B3D2D62871354E008A0E2F /* d_gaiden.cpp */, + B3B3D2D72871354E008A0E2F /* d_blmbycar.cpp */, + B3B3D2D82871354E008A0E2F /* d_ppmast93.cpp */, + B3B3D2D92871354E008A0E2F /* d_gumbo.cpp */, + B3B3D2DA2871354E008A0E2F /* d_ddragon3.cpp */, + B3B3D2DB2871354E008A0E2F /* d_gaelco2.cpp */, + B3B3D2DC2871354E008A0E2F /* d_bigstrkb.cpp */, + B3B3D2DD2871354E008A0E2F /* d_seta.cpp */, + B3B3D2DE2871354E008A0E2F /* d_hyprduel.cpp */, + B3B3D2DF2871354E008A0E2F /* d_namcona1.cpp */, + B3B3D2E02871354E008A0E2F /* d_dooyong.cpp */, + B3B3D2E12871354E008A0E2F /* d_vegaeo.cpp */, + B3B3D2E22871354E008A0E2F /* d_glass.cpp */, + B3B3D2E32871354E008A0E2F /* d_blackt96.cpp */, + B3B3D2E42871354E008A0E2F /* d_thoop2.cpp */, + B3B3D2E52871354E008A0E2F /* d_news.cpp */, + B3B3D2E62871354E008A0E2F /* d_zerozone.cpp */, + B3B3D2E72871354E008A0E2F /* d_vamphalf.cpp */, + B3B3D2E82871354E008A0E2F /* d_missb2.cpp */, + B3B3D2E92871354E008A0E2F /* d_wrally.cpp */, + B3B3D2EA2871354E008A0E2F /* d_unico.cpp */, + B3B3D2EB2871354E008A0E2F /* d_yunsung8.cpp */, + B3B3D2EC2871354E008A0E2F /* d_welltris.cpp */, + ); + path = pst90s; + sourceTree = ""; + }; + B3B3D2ED2871354E008A0E2F /* sega */ = { + isa = PBXGroup; + children = ( + B3B3D2EE2871354E008A0E2F /* d_bankp.cpp */, + B3B3D2EF2871354E008A0E2F /* d_xbrd.cpp */, + B3B3D2F02871354E008A0E2F /* d_sys18.cpp */, + B3B3D2F12871354E008A0E2F /* d_sys24.cpp */, + B3B3D2F22871354E008A0E2F /* sega_315_5195.cpp */, + B3B3D2F32871354E008A0E2F /* mc8123.cpp */, + B3B3D2F42871354E008A0E2F /* usb_snd.cpp */, + B3B3D2F52871354E008A0E2F /* d_dotrikun.cpp */, + B3B3D2F62871354E008A0E2F /* genesis_vid.cpp */, + B3B3D2F72871354E008A0E2F /* fd1094_intf.cpp */, + B3B3D2F82871354E008A0E2F /* sys16_fd1094.cpp */, + B3B3D2F92871354E008A0E2F /* d_turbo.cpp */, + B3B3D2FA2871354E008A0E2F /* d_segas32.cpp */, + B3B3D2FB2871354E008A0E2F /* fd1094.h */, + B3B3D2FC2871354E008A0E2F /* fd1094.cpp */, + B3B3D2FD2871354E008A0E2F /* sys16_run.cpp */, + B3B3D2FE2871354E008A0E2F /* d_segae.cpp */, + B3B3D2FF2871354E008A0E2F /* mc8123.h */, + B3B3D3002871354E008A0E2F /* d_segag80v.cpp */, + B3B3D3012871354E008A0E2F /* d_segac2.cpp */, + B3B3D3022871354E008A0E2F /* d_ybrd.cpp */, + B3B3D3032871354E008A0E2F /* fd1089.cpp */, + B3B3D3042871354E008A0E2F /* d_appoooh.cpp */, + B3B3D3052871354E008A0E2F /* d_hangon.cpp */, + B3B3D3062871354E008A0E2F /* genesis_vid.h */, + B3B3D3072871354E008A0E2F /* d_sys16a.cpp */, + B3B3D3082871354E008A0E2F /* d_suprloco.cpp */, + B3B3D3092871354E008A0E2F /* d_outrun.cpp */, + B3B3D30A2871354E008A0E2F /* d_sys16b.cpp */, + B3B3D30B2871354E008A0E2F /* d_angelkds.cpp */, + B3B3D30C2871354E008A0E2F /* fd1094_intf.h */, + B3B3D30D2871354E008A0E2F /* sys16_gfx.cpp */, + B3B3D30E2871354E008A0E2F /* d_sys1.cpp */, + B3B3D30F2871354E008A0E2F /* sys16.h */, + B3B3D3102871354E008A0E2F /* usb_snd.h */, + B3B3D3112871354E008A0E2F /* d_zaxxon.cpp */, + ); + path = sega; + sourceTree = ""; + }; + B3B3D3122871354E008A0E2F /* galaxian */ = { + isa = PBXGroup; + children = ( + B3B3D3132871354E008A0E2F /* d_galaxian.cpp */, + B3B3D3142871354E008A0E2F /* gal_gfx.cpp */, + B3B3D3182871354E008A0E2F /* gal_run.cpp */, + B3B3D3172871354E008A0E2F /* gal_sound.cpp */, + B3B3D3152871354E008A0E2F /* gal_stars.cpp */, + B3B3D3162871354E008A0E2F /* gal.h */, + ); + path = galaxian; + sourceTree = ""; + }; + B3B3D3192871354E008A0E2F /* dataeast */ = { + isa = PBXGroup; + children = ( + B3B3D3292871354E008A0E2F /* d_actfancr.cpp */, + B3B3D3282871354E008A0E2F /* d_backfire.cpp */, + B3B3D32D2871354E008A0E2F /* d_boogwing.cpp */, + B3B3D33B2871354E008A0E2F /* d_brkthru.cpp */, + B3B3D3422871354E008A0E2F /* d_bwing.cpp */, + B3B3D3262871354E008A0E2F /* d_cbuster.cpp */, + B3B3D3332871354E008A0E2F /* d_chanbara.cpp */, + B3B3D31C2871354E008A0E2F /* d_cninja.cpp */, + B3B3D3362871354E008A0E2F /* d_darkseal.cpp */, + B3B3D32F2871354E008A0E2F /* d_dassault.cpp */, + B3B3D32A2871354E008A0E2F /* d_dblewing.cpp */, + B3B3D3372871354E008A0E2F /* d_dec0.cpp */, + B3B3D32C2871354E008A0E2F /* d_dec8.cpp */, + B3B3D3402871354E008A0E2F /* d_deco32.cpp */, + B3B3D3302871354E008A0E2F /* d_deco156.cpp */, + B3B3D3442871354E008A0E2F /* d_decocass.cpp */, + B3B3D3432871354E008A0E2F /* d_decomlc.cpp */, + B3B3D3222871354E008A0E2F /* d_dietgogo.cpp */, + B3B3D3272871354E008A0E2F /* d_dreambal.cpp */, + B3B3D3342871354E008A0E2F /* d_funkyjet.cpp */, + B3B3D31E2871354E008A0E2F /* d_karnov.cpp */, + B3B3D3202871354E008A0E2F /* d_kchamp.cpp */, + B3B3D3382871354E008A0E2F /* d_lemmings.cpp */, + B3B3D32E2871354E008A0E2F /* d_liberate.cpp */, + B3B3D3412871354E008A0E2F /* d_metlclsh.cpp */, + B3B3D32B2871354E008A0E2F /* d_pcktgal.cpp */, + B3B3D3322871354E008A0E2F /* d_pktgaldx.cpp */, + B3B3D3352871354E008A0E2F /* d_progolf.cpp */, + B3B3D33D2871354E008A0E2F /* d_rohga.cpp */, + B3B3D3232871354E008A0E2F /* d_shootout.cpp */, + B3B3D33E2871354E008A0E2F /* d_sidepckt.cpp */, + B3B3D31A2871354E008A0E2F /* d_simpl156.cpp */, + B3B3D3312871354E008A0E2F /* d_sshangha.cpp */, + B3B3D31B2871354E008A0E2F /* d_stadhero.cpp */, + B3B3D31F2871354E008A0E2F /* d_supbtime.cpp */, + B3B3D3242871354E008A0E2F /* d_tumblep.cpp */, + B3B3D33A2871354E008A0E2F /* d_vaportra.cpp */, + B3B3D3392871354E008A0E2F /* deco16ic.cpp */, + B3B3D3212871354E008A0E2F /* deco146.cpp */, + B3B3D33C2871354E008A0E2F /* decobac06.cpp */, + B3B3D33F2871354E008A0E2F /* deco16ic.h */, + B3B3D31D2871354E008A0E2F /* deco146.h */, + B3B3D3252871354E008A0E2F /* decobac06.h */, + ); + path = dataeast; + sourceTree = ""; + }; + B3B3D3452871354E008A0E2F /* pce */ = { + isa = PBXGroup; + children = ( + B3B3D3462871354E008A0E2F /* pce.h */, + B3B3D3472871354E008A0E2F /* pce.cpp */, + B3B3D3482871354E008A0E2F /* d_pce.cpp */, + ); + path = pce; + sourceTree = ""; + }; + B3B3D3492871354E008A0E2F /* konami */ = { + isa = PBXGroup; + children = ( + B3B3D3572871354E008A0E2F /* d_88games.cpp */, + B3B3D3932871354F008A0E2F /* d_ajax.cpp */, + B3B3D3A42871354F008A0E2F /* d_aliens.cpp */, + B3B3D3962871354F008A0E2F /* d_asterix.cpp */, + B3B3D3992871354F008A0E2F /* d_battlnts.cpp */, + B3B3D3632871354E008A0E2F /* d_bishi.cpp */, + B3B3D3592871354E008A0E2F /* d_bladestl.cpp */, + B3B3D3922871354F008A0E2F /* d_blockhl.cpp */, + B3B3D3972871354F008A0E2F /* d_bottom9.cpp */, + B3B3D3912871354F008A0E2F /* d_chqflag.cpp */, + B3B3D3512871354E008A0E2F /* d_circusc.cpp */, + B3B3D34B2871354E008A0E2F /* d_combatsc.cpp */, + B3B3D3792871354F008A0E2F /* d_contra.cpp */, + B3B3D36B2871354E008A0E2F /* d_crimfght.cpp */, + B3B3D3942871354F008A0E2F /* d_dbz.cpp */, + B3B3D3752871354F008A0E2F /* d_ddribble.cpp */, + B3B3D39D2871354F008A0E2F /* d_divebomb.cpp */, + B3B3D35E2871354E008A0E2F /* d_fastlane.cpp */, + B3B3D36E2871354E008A0E2F /* d_finalzr.cpp */, + B3B3D3A32871354F008A0E2F /* d_flkatck.cpp */, + B3B3D38E2871354F008A0E2F /* d_gberet.cpp */, + B3B3D3642871354E008A0E2F /* d_gbusters.cpp */, + B3B3D3522871354E008A0E2F /* d_gijoe.cpp */, + B3B3D38C2871354F008A0E2F /* d_gradius3.cpp */, + B3B3D3542871354E008A0E2F /* d_gyruss.cpp */, + B3B3D3A52871354F008A0E2F /* d_hcastle.cpp */, + B3B3D3892871354F008A0E2F /* d_hexion.cpp */, + B3B3D3612871354E008A0E2F /* d_hyperspt.cpp */, + B3B3D3532871354E008A0E2F /* d_ironhors.cpp */, + B3B3D3832871354F008A0E2F /* d_jackal.cpp */, + B3B3D3812871354F008A0E2F /* d_jailbrek.cpp */, + B3B3D3772871354F008A0E2F /* d_junofrst.cpp */, + B3B3D37A2871354F008A0E2F /* d_kontest.cpp */, + B3B3D39F2871354F008A0E2F /* d_labyrunr.cpp */, + B3B3D39A2871354F008A0E2F /* d_lethal.cpp */, + B3B3D36C2871354E008A0E2F /* d_mainevt.cpp */, + B3B3D3952871354F008A0E2F /* d_megazone.cpp */, + B3B3D36F2871354E008A0E2F /* d_mikie.cpp */, + B3B3D39E2871354F008A0E2F /* d_mogura.cpp */, + B3B3D3722871354F008A0E2F /* d_moo.cpp */, + B3B3D37B2871354F008A0E2F /* d_mystwarr.cpp */, + B3B3D38F2871354F008A0E2F /* d_nemesis.cpp */, + B3B3D37F2871354F008A0E2F /* d_pandoras.cpp */, + B3B3D37C2871354F008A0E2F /* d_parodius.cpp */, + B3B3D34E2871354E008A0E2F /* d_pingpong.cpp */, + B3B3D35F2871354E008A0E2F /* d_pooyan.cpp */, + B3B3D3822871354F008A0E2F /* d_rockrage.cpp */, + B3B3D3732871354F008A0E2F /* d_rocnrope.cpp */, + B3B3D3902871354F008A0E2F /* d_rollerg.cpp */, + B3B3D3802871354F008A0E2F /* d_sbasketb.cpp */, + B3B3D3552871354E008A0E2F /* d_scotrsht.cpp */, + B3B3D35B2871354E008A0E2F /* d_shaolins.cpp */, + B3B3D3852871354F008A0E2F /* d_simpsons.cpp */, + B3B3D3652871354E008A0E2F /* d_spy.cpp */, + B3B3D3662871354E008A0E2F /* d_surpratk.cpp */, + B3B3D38B2871354F008A0E2F /* d_thunderx.cpp */, + B3B3D37D2871354F008A0E2F /* d_timeplt.cpp */, + B3B3D34C2871354E008A0E2F /* d_tmnt.cpp */, + B3B3D3502871354E008A0E2F /* d_tp84.cpp */, + B3B3D3762871354F008A0E2F /* d_trackfld.cpp */, + B3B3D3862871354F008A0E2F /* d_tutankhm.cpp */, + B3B3D3702871354E008A0E2F /* d_twin16.cpp */, + B3B3D3982871354F008A0E2F /* d_ultraman.cpp */, + B3B3D3882871354F008A0E2F /* d_vendetta.cpp */, + B3B3D3842871354F008A0E2F /* d_wecleman.cpp */, + B3B3D36D2871354E008A0E2F /* d_xexex.cpp */, + B3B3D38A2871354F008A0E2F /* d_xmen.cpp */, + B3B3D3582871354E008A0E2F /* d_yiear.cpp */, + B3B3D39B2871354F008A0E2F /* k007121.cpp */, + B3B3D3562871354E008A0E2F /* k007342_k007420.cpp */, + B3B3D3A22871354F008A0E2F /* k007452.cpp */, + B3B3D3782871354F008A0E2F /* k051316.cpp */, + B3B3D35C2871354E008A0E2F /* k051733.cpp */, + B3B3D34A2871354E008A0E2F /* k051960.cpp */, + B3B3D39C2871354F008A0E2F /* k052109.cpp */, + B3B3D3672871354E008A0E2F /* k053245.cpp */, + B3B3D3602871354E008A0E2F /* k053247.cpp */, + B3B3D3692871354E008A0E2F /* k053250.cpp */, + B3B3D3682871354E008A0E2F /* k053251.cpp */, + B3B3D3872871354F008A0E2F /* k053936.cpp */, + B3B3D34F2871354E008A0E2F /* k054000.cpp */, + B3B3D3622871354E008A0E2F /* k054338.cpp */, + B3B3D35D2871354E008A0E2F /* k055555.cpp */, + B3B3D35A2871354E008A0E2F /* k056832.cpp */, + B3B3D3712871354F008A0E2F /* konamigx.cpp */, + B3B3D36A2871354E008A0E2F /* konamiic.cpp */, + B3B3D34D2871354E008A0E2F /* timeplt_snd.cpp */, + B3B3D3A02871354F008A0E2F /* k007121.h */, + B3B3D37E2871354F008A0E2F /* k007342_k007420.h */, + B3B3D3742871354F008A0E2F /* k007452.h */, + B3B3D38D2871354F008A0E2F /* konamiic.h */, + B3B3D3A12871354F008A0E2F /* timeplt_snd.h */, + ); + path = konami; + sourceTree = ""; + }; + B3B3D3A62871354F008A0E2F /* midway */ = { + isa = PBXGroup; + children = ( + B3B3D3AE2871354F008A0E2F /* d_kinst.cpp */, + B3B3D3B92871354F008A0E2F /* d_tunit.cpp */, + B3B3D3BE2871354F008A0E2F /* d_wunit.cpp */, + B3B3D3AB2871354F008A0E2F /* d_xunit.cpp */, + B3B3D3B42871354F008A0E2F /* d_yunit.cpp */, + B3B3D3AF2871354F008A0E2F /* dcs2k.cpp */, + B3B3D3A72871354F008A0E2F /* ide.cpp */, + B3B3D3BB2871354F008A0E2F /* midtunit.cpp */, + B3B3D3B02871354F008A0E2F /* midwayic.cpp */, + B3B3D3B72871354F008A0E2F /* midwunit.cpp */, + B3B3D3B52871354F008A0E2F /* narc_sound.cpp */, + B3B3D3BC2871354F008A0E2F /* williams_adpcm.cpp */, + B3B3D3BD2871354F008A0E2F /* williams_cvsd.cpp */, + B3B3D3AA2871354F008A0E2F /* yawdim_sound.cpp */, + B3B3D3B12871354F008A0E2F /* dcs2k.h */, + B3B3D3AD2871354F008A0E2F /* ide.h */, + B3B3D3B82871354F008A0E2F /* midtunit_dma.h */, + B3B3D3A92871354F008A0E2F /* midtunit.h */, + B3B3D3BA2871354F008A0E2F /* midwayic.h */, + B3B3D3B32871354F008A0E2F /* midwunit.h */, + B3B3D3B22871354F008A0E2F /* narc_sound.h */, + B3B3D3B62871354F008A0E2F /* williams_adpcm.h */, + B3B3D3AC2871354F008A0E2F /* williams_cvsd.h */, + B3B3D3A82871354F008A0E2F /* yawdim_sound.h */, + ); + path = midway; + sourceTree = ""; + }; + B3B3D3BF2871354F008A0E2F /* sg1000 */ = { + isa = PBXGroup; + children = ( + B3B3D3C02871354F008A0E2F /* d_sg1000.cpp */, + ); + path = sg1000; + sourceTree = ""; + }; + B3B3D3C12871354F008A0E2F /* coleco */ = { + isa = PBXGroup; + children = ( + B3B3D3C22871354F008A0E2F /* d_coleco.cpp */, + ); + path = coleco; + sourceTree = ""; + }; + B3B3D3C32871354F008A0E2F /* msx */ = { + isa = PBXGroup; + children = ( + B3B3D3C42871354F008A0E2F /* d_msx.cpp */, + ); + path = msx; + sourceTree = ""; + }; + B3B3D3C52871354F008A0E2F /* neogeo */ = { + isa = PBXGroup; + children = ( + B3B3D3C62871354F008A0E2F /* neo_text_render.h */, + B3B3D3C72871354F008A0E2F /* neo_decrypt.cpp */, + B3B3D3C82871354F008A0E2F /* neo_sprite_render.h */, + B3B3D3C92871354F008A0E2F /* neogeo.h */, + B3B3D3CA2871354F008A0E2F /* neo_text.cpp */, + B3B3D3CB2871354F008A0E2F /* neo_sprite.cpp */, + B3B3D3CC2871354F008A0E2F /* neogeo.cpp */, + B3B3D3CD2871354F008A0E2F /* neo_palette.cpp */, + B3B3D3CE2871354F008A0E2F /* d_neogeo.cpp */, + B3B3D3CF2871354F008A0E2F /* neo_run.cpp */, + B3B3D3D02871354F008A0E2F /* neo_upd4990a.cpp */, + ); + path = neogeo; + sourceTree = ""; + }; + B3B3D3D12871354F008A0E2F /* toaplan */ = { + isa = PBXGroup; + children = ( + B3B3D3D22871354F008A0E2F /* d_mahoudai.cpp */, + B3B3D3D32871354F008A0E2F /* d_snowbro2.cpp */, + B3B3D3D42871354F008A0E2F /* d_battleg.cpp */, + B3B3D3D52871354F008A0E2F /* d_tekipaki.cpp */, + B3B3D3D62871354F008A0E2F /* d_vfive.cpp */, + B3B3D3D72871354F008A0E2F /* d_slapfght.cpp */, + B3B3D3D82871354F008A0E2F /* d_bbakraid.cpp */, + B3B3D3D92871354F008A0E2F /* d_twincobr.cpp */, + B3B3D3DA2871354F008A0E2F /* d_shippumd.cpp */, + B3B3D3DB2871354F008A0E2F /* d_ghox.cpp */, + B3B3D3DC2871354F008A0E2F /* toaplan.h */, + B3B3D3DD2871354F008A0E2F /* toa_bcu2.cpp */, + B3B3D3DE2871354F008A0E2F /* toa_extratext.cpp */, + B3B3D3DF2871354F008A0E2F /* toaplan.cpp */, + B3B3D3E02871354F008A0E2F /* d_batsugun.cpp */, + B3B3D3E12871354F008A0E2F /* toa_palette.cpp */, + B3B3D3E22871354F008A0E2F /* toa_gp9001_render.h */, + B3B3D3E32871354F008A0E2F /* toa_extratext.h */, + B3B3D3E42871354F008A0E2F /* d_truxton2.cpp */, + B3B3D3E52871354F008A0E2F /* d_dogyuun.cpp */, + B3B3D3E62871354F008A0E2F /* d_toaplan1.cpp */, + B3B3D3E72871354F008A0E2F /* d_fixeight.cpp */, + B3B3D3E82871354F008A0E2F /* d_kbash.cpp */, + B3B3D3E92871354F008A0E2F /* toa_gp9001.cpp */, + B3B3D3EA2871354F008A0E2F /* d_wardner.cpp */, + B3B3D3EB2871354F008A0E2F /* d_enmadaio.cpp */, + B3B3D3EC2871354F008A0E2F /* d_pipibibs.cpp */, + B3B3D3ED2871354F008A0E2F /* d_kbash2.cpp */, + B3B3D3EE2871354F008A0E2F /* toaplan1.cpp */, + B3B3D3EF2871354F008A0E2F /* d_batrider.cpp */, + ); + path = toaplan; + sourceTree = ""; + }; + B3B3D3F02871354F008A0E2F /* cps3 */ = { + isa = PBXGroup; + children = ( + B3B3D3F12871354F008A0E2F /* d_cps3.cpp */, + B3B3D3F22871354F008A0E2F /* cps3.h */, + B3B3D3F32871354F008A0E2F /* cps3snd.cpp */, + B3B3D3F42871354F008A0E2F /* cps3run.cpp */, + ); + path = cps3; + sourceTree = ""; + }; + B3B3D3F52871354F008A0E2F /* spectrum */ = { + isa = PBXGroup; + children = ( + B3B3D3F62871354F008A0E2F /* d_spectrum.cpp */, + ); + path = spectrum; + sourceTree = ""; + }; + B3B3D3F72871354F008A0E2F /* psikyo */ = { + isa = PBXGroup; + children = ( + B3B3D3F82871354F008A0E2F /* psikyo_tile.cpp */, + B3B3D3F92871354F008A0E2F /* psikyo.h */, + B3B3D3FA2871354F008A0E2F /* psikyo_sprite.cpp */, + B3B3D3FB2871354F008A0E2F /* psikyosh_render.cpp */, + B3B3D3FC2871354F008A0E2F /* psikyo_render.h */, + B3B3D3FD2871354F008A0E2F /* psikyo_palette.cpp */, + B3B3D3FE2871354F008A0E2F /* d_psikyo4.cpp */, + B3B3D3FF2871354F008A0E2F /* psikyosh_render.h */, + B3B3D4002871354F008A0E2F /* psikyo_sprite_func.h */, + B3B3D4012871354F008A0E2F /* d_psikyosh.cpp */, + B3B3D4022871354F008A0E2F /* d_psikyo.cpp */, + ); + path = psikyo; + sourceTree = ""; + }; + B3B3D4032871354F008A0E2F /* capcom */ = { + isa = PBXGroup; + children = ( + B3B3D41B2871354F008A0E2F /* cps_config.cpp */, + B3B3D4122871354F008A0E2F /* cps_draw.cpp */, + B3B3D40D2871354F008A0E2F /* cps_mem.cpp */, + B3B3D4092871354F008A0E2F /* cps_obj.cpp */, + B3B3D4202871354F008A0E2F /* cps_pal.cpp */, + B3B3D41A2871354F008A0E2F /* cps_run.cpp */, + B3B3D41C2871354F008A0E2F /* cps_rw.cpp */, + B3B3D4192871354F008A0E2F /* cps_scr.cpp */, + B3B3D41F2871354F008A0E2F /* cps.cpp */, + B3B3D4102871354F008A0E2F /* cps2_crpt.cpp */, + B3B3D40B2871354F008A0E2F /* cpsr.cpp */, + B3B3D4042871354F008A0E2F /* cpsrd.cpp */, + B3B3D4062871354F008A0E2F /* cpst.cpp */, + B3B3D40F2871354F008A0E2F /* ctv_make.cpp */, + B3B3D4112871354F008A0E2F /* ctv.cpp */, + B3B3D4082871354F008A0E2F /* d_cps1.cpp */, + B3B3D4052871354F008A0E2F /* d_cps2.cpp */, + B3B3D40A2871354F008A0E2F /* fcrash_snd.cpp */, + B3B3D4132871354F008A0E2F /* kabuki.cpp */, + B3B3D4162871354F008A0E2F /* ps_m.cpp */, + B3B3D4152871354F008A0E2F /* ps_z.cpp */, + B3B3D40E2871354F008A0E2F /* ps.cpp */, + B3B3D41E2871354F008A0E2F /* qs_c.cpp */, + B3B3D4072871354F008A0E2F /* qs_z.cpp */, + B3B3D4142871354F008A0E2F /* qs.cpp */, + B3B3D4182871354F008A0E2F /* sf2mdt_snd.cpp */, + B3B3D40C2871354F008A0E2F /* cps.h */, + B3B3D4172871354F008A0E2F /* ctv_do.h */, + B3B3D41D2871354F008A0E2F /* d_kenseim.h */, + ); + path = capcom; + sourceTree = ""; + }; + B3B3D4212871354F008A0E2F /* taito */ = { + isa = PBXGroup; + children = ( + B3B3D4222871354F008A0E2F /* cchip.h */, + B3B3D4232871354F008A0E2F /* d_buggychl.cpp */, + B3B3D4242871354F008A0E2F /* d_chaknpop.cpp */, + B3B3D4252871354F008A0E2F /* cchip.cpp */, + B3B3D4262871354F008A0E2F /* d_ksayakyu.cpp */, + B3B3D4272871354F008A0E2F /* tc0360pri.cpp */, + B3B3D4282871354F008A0E2F /* d_flstory.cpp */, + B3B3D4292871354F008A0E2F /* taito_m68705.cpp */, + B3B3D42A2871354F008A0E2F /* d_ashnojoe.cpp */, + B3B3D42B2871354F008A0E2F /* d_taitoh.cpp */, + B3B3D42C2871354F008A0E2F /* d_minivdr.cpp */, + B3B3D42D2871354F008A0E2F /* d_taitol.cpp */, + B3B3D42E2871354F008A0E2F /* d_asuka.cpp */, + B3B3D42F2871354F008A0E2F /* d_taitoz.cpp */, + B3B3D4302871354F008A0E2F /* d_msisaac.cpp */, + B3B3D4312871354F008A0E2F /* taitof3_video.cpp */, + B3B3D4322871354F008A0E2F /* d_taitox.cpp */, + B3B3D4332871354F008A0E2F /* d_othunder.cpp */, + B3B3D4342871354F008A0E2F /* d_lsasquad.cpp */, + B3B3D4352871354F008A0E2F /* d_nycaptor.cpp */, + B3B3D4362871354F008A0E2F /* tc0140syt.cpp */, + B3B3D4372871354F008A0E2F /* tc0110pcr.cpp */, + B3B3D4382871354F008A0E2F /* taito.cpp */, + B3B3D4392871354F008A0E2F /* d_mexico86.cpp */, + B3B3D43A2871354F008A0E2F /* d_supridr.cpp */, + B3B3D43B2871354F008A0E2F /* d_cyclemb.cpp */, + B3B3D43C2871354F008A0E2F /* d_taitomisc.cpp */, + B3B3D43D2871354F008A0E2F /* d_slapshot.cpp */, + B3B3D43E2871354F008A0E2F /* d_taitof3.cpp */, + B3B3D43F2871354F008A0E2F /* tnzs_prot.h */, + B3B3D4402871354F008A0E2F /* d_gladiatr.cpp */, + B3B3D4412871354F008A0E2F /* d_qix.cpp */, + B3B3D4422871354F008A0E2F /* tc0180vcu.cpp */, + B3B3D4432871354F008A0E2F /* d_taitof2.cpp */, + B3B3D4442871354F008A0E2F /* d_rollrace.cpp */, + B3B3D4452871354F008A0E2F /* d_jollyjgr.cpp */, + B3B3D4462871354F008A0E2F /* taito.h */, + B3B3D4472871354F008A0E2F /* tc0510nio.cpp */, + B3B3D4482871354F008A0E2F /* d_wyvernf0.cpp */, + B3B3D4492871354F008A0E2F /* taitof3_snd.cpp */, + B3B3D44A2871354F008A0E2F /* d_lkage.cpp */, + B3B3D44B2871354F008A0E2F /* d_tnzs.cpp */, + B3B3D44C2871354F008A0E2F /* d_groundfx.cpp */, + B3B3D44D2871354F008A0E2F /* d_galastrm.cpp */, + B3B3D44E2871354F008A0E2F /* taito_m68705.h */, + B3B3D44F2871354F008A0E2F /* tc0280grd.cpp */, + B3B3D4502871354F008A0E2F /* tc0150rod.cpp */, + B3B3D4512871354F008A0E2F /* tc0220ioc.cpp */, + B3B3D4522871354F008A0E2F /* pc080sn.cpp */, + B3B3D4532871354F008A0E2F /* pc090oj.cpp */, + B3B3D4542871354F008A0E2F /* d_darius2.cpp */, + B3B3D4552871354F008A0E2F /* d_superchs.cpp */, + B3B3D4562871354F008A0E2F /* d_crbaloon.cpp */, + B3B3D4572871354F008A0E2F /* d_darkmist.cpp */, + B3B3D4582871354F008A0E2F /* taito_ic.h */, + B3B3D4592871354F008A0E2F /* d_taitosj.cpp */, + B3B3D45A2871354F008A0E2F /* d_bublbobl.cpp */, + B3B3D45B2871354F008A0E2F /* d_retofinv.cpp */, + B3B3D45C2871354F008A0E2F /* taito_ic.cpp */, + B3B3D45D2871354F008A0E2F /* d_taitob.cpp */, + B3B3D45E2871354F008A0E2F /* taitof3_video.h */, + B3B3D45F2871354F008A0E2F /* d_exzisus.cpp */, + B3B3D4602871354F008A0E2F /* tc0480scp.cpp */, + B3B3D4612871354F008A0E2F /* d_undrfire.cpp */, + B3B3D4622871354F008A0E2F /* taitof3_snd.h */, + B3B3D4632871354F008A0E2F /* tc0640fio.cpp */, + B3B3D4642871354F008A0E2F /* tc0100scn.cpp */, + B3B3D4652871354F008A0E2F /* tnzs_prot.cpp */, + B3B3D4662871354F008A0E2F /* d_arkanoid.cpp */, + B3B3D4672871354F008A0E2F /* d_ssrj.cpp */, + B3B3D4682871354F008A0E2F /* d_gunbuster.cpp */, + ); + path = taito; + sourceTree = ""; + }; + B3B3D4692871354F008A0E2F /* pgm */ = { + isa = PBXGroup; + children = ( + B3B3D46A2871354F008A0E2F /* pgm_asic25.cpp */, + B3B3D46B2871354F008A0E2F /* pgm_run.cpp */, + B3B3D46C2871354F008A0E2F /* pgm_crypt.cpp */, + B3B3D46D2871354F008A0E2F /* pgm_asic3.cpp */, + B3B3D46E2871354F008A0E2F /* pgm_asic27a_type1.cpp */, + B3B3D46F2871354F008A0E2F /* pgm_asic27a_type2.cpp */, + B3B3D4702871354F008A0E2F /* pgm_asic27a_type3.cpp */, + B3B3D4712871354F008A0E2F /* pgm_sprite_create.cpp */, + B3B3D4722871354F008A0E2F /* pgm_draw.cpp */, + B3B3D4732871354F008A0E2F /* d_pgm.cpp */, + B3B3D4742871354F008A0E2F /* pgm.h */, + ); + path = pgm; + sourceTree = ""; + }; + B3B3D4752871354F008A0E2F /* channelf */ = { + isa = PBXGroup; + children = ( + B3B3D4762871354F008A0E2F /* d_channelf.cpp */, + ); + path = channelf; + sourceTree = ""; + }; + B3B3D4772871354F008A0E2F /* pre90s */ = { + isa = PBXGroup; + children = ( + B3B3D4782871354F008A0E2F /* d_cloud9.cpp */, + B3B3D4792871354F008A0E2F /* d_cybertnk.cpp */, + B3B3D47A2871354F008A0E2F /* d_redclash.cpp */, + B3B3D47B2871354F008A0E2F /* d_thief.cpp */, + B3B3D47C2871354F008A0E2F /* d_bionicc.cpp */, + B3B3D47D2871354F008A0E2F /* d_sub.cpp */, + B3B3D47E2871354F008A0E2F /* d_alinvade.cpp */, + B3B3D47F2871354F008A0E2F /* d_1942.cpp */, + B3B3D4802871354F008A0E2F /* d_dkong.cpp */, + B3B3D4812871354F008A0E2F /* d_tecmo.cpp */, + B3B3D4822871354F008A0E2F /* d_jrpacman.cpp */, + B3B3D4832871354F008A0E2F /* d_exedexes.cpp */, + B3B3D4842871354F008A0E2F /* d_1943.cpp */, + B3B3D4852871354F008A0E2F /* d_williams.cpp */, + B3B3D4862871354F008A0E2F /* d_galaga.cpp */, + B3B3D4872871354F008A0E2F /* d_popeye.cpp */, + B3B3D4882871354F008A0E2F /* d_scregg.cpp */, + B3B3D4892871354F008A0E2F /* d_efdt.cpp */, + B3B3D48A2871354F008A0E2F /* d_momoko.cpp */, + B3B3D48B2871354F008A0E2F /* d_tankbust.cpp */, + B3B3D48C2871354F008A0E2F /* d_rallyx.cpp */, + B3B3D48D2871354F008A0E2F /* d_pengadvb.cpp */, + B3B3D48E2871354F008A0E2F /* d_quantum.cpp */, + B3B3D48F2871354F008A0E2F /* d_mjkjidai.cpp */, + B3B3D4902871354F008A0E2F /* d_ssozumo.cpp */, + B3B3D4912871354F008A0E2F /* d_snk.cpp */, + B3B3D4922871354F008A0E2F /* d_mustache.cpp */, + B3B3D4932871354F008A0E2F /* d_alpha68k.cpp */, + B3B3D4942871354F008A0E2F /* d_megasys1.cpp */, + B3B3D4952871354F008A0E2F /* d_sauro.cpp */, + B3B3D4962871354F008A0E2F /* d_namcos86.cpp */, + B3B3D4972871354F008A0E2F /* d_pac2650.cpp */, + B3B3D4982871354F008A0E2F /* d_jedi.cpp */, + B3B3D4992871354F008A0E2F /* d_flower.cpp */, + B3B3D49A2871354F008A0E2F /* d_spdodgeb.cpp */, + B3B3D49B2871354F008A0E2F /* d_mitchell.cpp */, + B3B3D49C2871354F008A0E2F /* d_mainsnk.cpp */, + B3B3D49D2871354F008A0E2F /* d_toypop.cpp */, + B3B3D49E2871354F008A0E2F /* d_espial.cpp */, + B3B3D49F2871354F008A0E2F /* d_clshroad.cpp */, + B3B3D4A02871354F008A0E2F /* d_mirax.cpp */, + B3B3D4A12871354F008A0E2F /* d_stuntair.cpp */, + B3B3D4A22871354F008A0E2F /* d_blktiger.cpp */, + B3B3D4A32871354F008A0E2F /* d_ettrivia.cpp */, + B3B3D4A42871354F008A0E2F /* d_metlfrzr.cpp */, + B3B3D4A52871354F008A0E2F /* d_amspdwy.cpp */, + B3B3D4A62871354F008A0E2F /* d_lwings.cpp */, + B3B3D4A72871354F008A0E2F /* d_mrdo.cpp */, + B3B3D4A82871354F008A0E2F /* d_foodf.cpp */, + B3B3D4A92871354F008A0E2F /* d_renegade.cpp */, + B3B3D4AA2871354F008A0E2F /* d_lasso.cpp */, + B3B3D4AB2871354F008A0E2F /* d_mole.cpp */, + B3B3D4AC2871354F008A0E2F /* d_suna8.cpp */, + B3B3D4AD2871354F008A0E2F /* d_firetrap.cpp */, + B3B3D4AE2871354F008A0E2F /* d_thedeep.cpp */, + B3B3D4AF2871354F008A0E2F /* d_sf.cpp */, + B3B3D4B02871354F008A0E2F /* d_wallc.cpp */, + B3B3D4B12871354F008A0E2F /* d_xain.cpp */, + B3B3D4B228713550008A0E2F /* d_mastboyo.cpp */, + B3B3D4B328713550008A0E2F /* d_cloak.cpp */, + B3B3D4B428713550008A0E2F /* d_bzone.cpp */, + B3B3D4B528713550008A0E2F /* d_wc90.cpp */, + B3B3D4B628713550008A0E2F /* d_lastduel.cpp */, + B3B3D4B728713550008A0E2F /* d_toki.cpp */, + B3B3D4B828713550008A0E2F /* d_cclimber.cpp */, + B3B3D4B928713550008A0E2F /* d_calorie.cpp */, + B3B3D4BA28713550008A0E2F /* d_dribling.cpp */, + B3B3D4BB28713550008A0E2F /* d_cabal.cpp */, + B3B3D4BC28713550008A0E2F /* d_gng.cpp */, + B3B3D4BD28713550008A0E2F /* d_bagman.cpp */, + B3B3D4BE28713550008A0E2F /* d_atetris.cpp */, + B3B3D4BF28713550008A0E2F /* d_popper.cpp */, + B3B3D4C028713550008A0E2F /* d_capbowl.cpp */, + B3B3D4C128713550008A0E2F /* d_route16.cpp */, + B3B3D4C228713550008A0E2F /* d_citycon.cpp */, + B3B3D4C328713550008A0E2F /* d_mystston.cpp */, + B3B3D4C428713550008A0E2F /* d_exerion.cpp */, + B3B3D4C528713550008A0E2F /* d_deadang.cpp */, + B3B3D4C628713550008A0E2F /* d_kingofbox.cpp */, + B3B3D4C728713550008A0E2F /* d_phoenix.cpp */, + B3B3D4C828713550008A0E2F /* d_copsnrob.cpp */, + B3B3D4C928713550008A0E2F /* d_4enraya.cpp */, + B3B3D4CA28713550008A0E2F /* d_bbusters.cpp */, + B3B3D4CB28713550008A0E2F /* d_mouser.cpp */, + B3B3D4CC28713550008A0E2F /* d_wiz.cpp */, + B3B3D4CD28713550008A0E2F /* d_beaminv.cpp */, + B3B3D4CE28713550008A0E2F /* d_funkybee.cpp */, + B3B3D4CF28713550008A0E2F /* d_iqblock.cpp */, + B3B3D4D028713550008A0E2F /* d_gunsmoke.cpp */, + B3B3D4D128713550008A0E2F /* d_sonson.cpp */, + B3B3D4D228713550008A0E2F /* d_dynduke.cpp */, + B3B3D4D328713550008A0E2F /* d_ninjakd2.cpp */, + B3B3D4D428713550008A0E2F /* d_aztarac.cpp */, + B3B3D4D528713550008A0E2F /* d_stfight.cpp */, + B3B3D4D628713550008A0E2F /* d_jack.cpp */, + B3B3D4D728713550008A0E2F /* d_carjmbre.cpp */, + B3B3D4D828713550008A0E2F /* d_prehisle.cpp */, + B3B3D4D928713550008A0E2F /* d_argus.cpp */, + B3B3D4DA28713550008A0E2F /* d_cop01.cpp */, + B3B3D4DB28713550008A0E2F /* d_alpha68k1.cpp */, + B3B3D4DC28713550008A0E2F /* d_tail2nose.cpp */, + B3B3D4DD28713550008A0E2F /* d_asteroids.cpp */, + B3B3D4DE28713550008A0E2F /* d_kncljoe.cpp */, + B3B3D4DF28713550008A0E2F /* d_pacman.cpp */, + B3B3D4E028713550008A0E2F /* d_goindol.cpp */, + B3B3D4E128713550008A0E2F /* d_sprcros2.cpp */, + B3B3D4E228713550008A0E2F /* d_matmania.cpp */, + B3B3D4E328713550008A0E2F /* d_tubep.cpp */, + B3B3D4E428713550008A0E2F /* d_tsamurai.cpp */, + B3B3D4E528713550008A0E2F /* d_shisen.cpp */, + B3B3D4E628713550008A0E2F /* d_speedbal.cpp */, + B3B3D4E728713550008A0E2F /* d_starwars.cpp */, + B3B3D4E828713550008A0E2F /* d_alpha68k2.cpp */, + B3B3D4E928713550008A0E2F /* d_sidearms.cpp */, + B3B3D4EA28713550008A0E2F /* d_hvyunit.cpp */, + B3B3D4EB28713550008A0E2F /* d_mmagic.cpp */, + B3B3D4EC28713550008A0E2F /* d_quizo.cpp */, + B3B3D4ED28713550008A0E2F /* d_mrflea.cpp */, + B3B3D4EE28713550008A0E2F /* d_madmotor.cpp */, + B3B3D4EF28713550008A0E2F /* d_bwidow.cpp */, + B3B3D4F028713550008A0E2F /* d_gaplus.cpp */, + B3B3D4F128713550008A0E2F /* d_rpunch.cpp */, + B3B3D4F228713550008A0E2F /* d_seicross.cpp */, + B3B3D4F328713550008A0E2F /* d_magmax.cpp */, + B3B3D4F428713550008A0E2F /* d_exterm.cpp */, + B3B3D4F528713550008A0E2F /* d_holeland.cpp */, + B3B3D4F628713550008A0E2F /* d_dacholer.cpp */, + B3B3D4F728713550008A0E2F /* d_arabian.cpp */, + B3B3D4F828713550008A0E2F /* d_dogfgt.cpp */, + B3B3D4F928713550008A0E2F /* d_snk68.cpp */, + B3B3D4FA28713550008A0E2F /* d_mrjong.cpp */, + B3B3D4FB28713550008A0E2F /* d_markham.cpp */, + B3B3D4FC28713550008A0E2F /* d_vball.cpp */, + B3B3D4FD28713550008A0E2F /* d_vicdual.cpp */, + B3B3D4FE28713550008A0E2F /* d_higemaru.cpp */, + B3B3D4FF28713550008A0E2F /* d_usgames.cpp */, + B3B3D50028713550008A0E2F /* d_tagteam.cpp */, + B3B3D50128713550008A0E2F /* d_pbaction.cpp */, + B3B3D50228713550008A0E2F /* d_olibochu.cpp */, + B3B3D50328713550008A0E2F /* d_snk6502.cpp */, + B3B3D50428713550008A0E2F /* d_meijinsn.cpp */, + B3B3D50528713550008A0E2F /* d_qbert.cpp */, + B3B3D50628713550008A0E2F /* d_baraduke.cpp */, + B3B3D50728713550008A0E2F /* d_ginganin.cpp */, + B3B3D50828713550008A0E2F /* d_btime.cpp */, + B3B3D50928713550008A0E2F /* d_wwfsstar.cpp */, + B3B3D50A28713550008A0E2F /* d_blockade.cpp */, + B3B3D50B28713550008A0E2F /* d_fastfred.cpp */, + B3B3D50C28713550008A0E2F /* d_travrusa.cpp */, + B3B3D50D28713550008A0E2F /* d_punchout.cpp */, + B3B3D50E28713550008A0E2F /* d_nitedrvr.cpp */, + B3B3D50F28713550008A0E2F /* d_battlane.cpp */, + B3B3D51028713550008A0E2F /* d_invaders.cpp */, + B3B3D51128713550008A0E2F /* d_vulgus.cpp */, + B3B3D51228713550008A0E2F /* d_tigeroad.cpp */, + B3B3D51328713550008A0E2F /* d_spacefb.cpp */, + B3B3D51428713550008A0E2F /* d_sstrangr.cpp */, + B3B3D51528713550008A0E2F /* d_vastar.cpp */, + B3B3D51628713550008A0E2F /* d_bogeyman.cpp */, + B3B3D51728713550008A0E2F /* d_shangkid.cpp */, + B3B3D51828713550008A0E2F /* d_mcr.cpp */, + B3B3D51928713550008A0E2F /* d_thepit.cpp */, + B3B3D51A28713550008A0E2F /* d_warpsped.cpp */, + B3B3D51B28713550008A0E2F /* d_armedf.cpp */, + B3B3D51C28713550008A0E2F /* d_namcos1.cpp */, + B3B3D51D28713550008A0E2F /* d_fantland.cpp */, + B3B3D51E28713550008A0E2F /* d_skyarmy.cpp */, + B3B3D51F28713550008A0E2F /* d_wc90b.cpp */, + B3B3D52028713550008A0E2F /* d_xyonix.cpp */, + B3B3D52128713550008A0E2F /* d_zodiack.cpp */, + B3B3D52228713550008A0E2F /* d_skykid.cpp */, + B3B3D52328713550008A0E2F /* d_kangaroo.cpp */, + B3B3D52428713550008A0E2F /* d_commando.cpp */, + B3B3D52528713550008A0E2F /* d_mappy.cpp */, + B3B3D52628713550008A0E2F /* d_munchmo.cpp */, + B3B3D52728713550008A0E2F /* d_kyugo.cpp */, + B3B3D52828713550008A0E2F /* d_millipede.cpp */, + B3B3D52928713550008A0E2F /* d_senjyo.cpp */, + B3B3D52A28713550008A0E2F /* d_terracre.cpp */, + B3B3D52B28713550008A0E2F /* d_djboy.cpp */, + B3B3D52C28713550008A0E2F /* d_tbowl.cpp */, + B3B3D52D28713550008A0E2F /* d_canyon.cpp */, + B3B3D52E28713550008A0E2F /* d_dday.cpp */, + B3B3D52F28713550008A0E2F /* d_mcr3.cpp */, + B3B3D53028713550008A0E2F /* d_srumbler.cpp */, + B3B3D53128713550008A0E2F /* d_mario.cpp */, + B3B3D53228713550008A0E2F /* d_docastle.cpp */, + B3B3D53328713550008A0E2F /* d_naughtyb.cpp */, + B3B3D53428713550008A0E2F /* d_safarir.cpp */, + B3B3D53528713550008A0E2F /* d_solomon.cpp */, + B3B3D53628713550008A0E2F /* d_tempest.cpp */, + B3B3D53728713550008A0E2F /* d_dorachan.cpp */, + B3B3D53828713550008A0E2F /* d_tceptor.cpp */, + B3B3D53928713550008A0E2F /* d_pturn.cpp */, + B3B3D53A28713550008A0E2F /* d_ddayjlc.cpp */, + B3B3D53B28713550008A0E2F /* d_omegrace.cpp */, + B3B3D53C28713550008A0E2F /* d_ddragon.cpp */, + B3B3D53D28713550008A0E2F /* d_headonb.cpp */, + B3B3D53E28713550008A0E2F /* d_pacland.cpp */, + B3B3D53F28713550008A0E2F /* d_warpwarp.cpp */, + B3B3D54028713550008A0E2F /* d_exprraid.cpp */, + B3B3D54128713550008A0E2F /* d_galivan.cpp */, + B3B3D54228713550008A0E2F /* d_battlex.cpp */, + B3B3D54328713550008A0E2F /* d_psychic5.cpp */, + B3B3D54428713550008A0E2F /* d_drmicro.cpp */, + B3B3D54528713550008A0E2F /* d_ladybug.cpp */, + B3B3D54628713550008A0E2F /* d_cheekyms.cpp */, + B3B3D54728713550008A0E2F /* d_skyfox.cpp */, + B3B3D54828713550008A0E2F /* d_himesiki.cpp */, + B3B3D54928713550008A0E2F /* d_wiping.cpp */, + B3B3D54A28713550008A0E2F /* d_epos.cpp */, + B3B3D54B28713550008A0E2F /* d_pkunwar.cpp */, + B3B3D54C28713550008A0E2F /* d_pitnrun.cpp */, + B3B3D54D28713550008A0E2F /* d_flipjack.cpp */, + B3B3D54E28713550008A0E2F /* d_xxmissio.cpp */, + B3B3D54F28713550008A0E2F /* d_timelimt.cpp */, + B3B3D55028713550008A0E2F /* d_chinagat.cpp */, + B3B3D55128713550008A0E2F /* d_blueprnt.cpp */, + B3B3D55228713550008A0E2F /* d_freekick.cpp */, + B3B3D55328713550008A0E2F /* d_marineb.cpp */, + B3B3D55428713550008A0E2F /* d_ambush.cpp */, + B3B3D55528713550008A0E2F /* d_aeroboto.cpp */, + B3B3D55628713550008A0E2F /* d_mhavoc.cpp */, + B3B3D55728713550008A0E2F /* d_bombjack.cpp */, + B3B3D55828713550008A0E2F /* d_blockout.cpp */, + B3B3D55928713550008A0E2F /* d_ccastles.cpp */, + B3B3D55A28713550008A0E2F /* d_berzerk.cpp */, + ); + path = pre90s; + sourceTree = ""; + }; + B3B3D57528713550008A0E2F /* snd */ = { + isa = PBXGroup; + children = ( + B3B3D5F928713551008A0E2F /* ay8910.c */, + B3B3D5ED28713551008A0E2F /* fm.c */, + B3B3D57E28713550008A0E2F /* fmopl.c */, + B3B3D59D28713550008A0E2F /* ym2151.c */, + B3B3D5CB28713551008A0E2F /* ym2413.c */, + B3B3D5A228713550008A0E2F /* ym2612.c */, + B3B3D60328713551008A0E2F /* ymdeltat.c */, + B3B3D5A728713550008A0E2F /* ymf278b.c */, + B3B3D5C528713551008A0E2F /* asteroids.cpp */, + B3B3D5EB28713551008A0E2F /* burn_md2612.cpp */, + B3B3D5CF28713551008A0E2F /* burn_y8950.cpp */, + B3B3D57A28713550008A0E2F /* burn_ym2151.cpp */, + B3B3D60D28713551008A0E2F /* burn_ym2203.cpp */, + B3B3D5FC28713551008A0E2F /* burn_ym2413.cpp */, + B3B3D58928713550008A0E2F /* burn_ym2608.cpp */, + B3B3D60028713551008A0E2F /* burn_ym2610.cpp */, + B3B3D60A28713551008A0E2F /* burn_ym2612.cpp */, + B3B3D5FE28713551008A0E2F /* burn_ym3526.cpp */, + B3B3D5C328713551008A0E2F /* burn_ym3812.cpp */, + B3B3D5FB28713551008A0E2F /* burn_ymf262.cpp */, + B3B3D5EA28713551008A0E2F /* burn_ymf271.cpp */, + B3B3D57F28713550008A0E2F /* burn_ymf278b.cpp */, + B3B3D5DA28713551008A0E2F /* bzone.cpp */, + B3B3D60928713551008A0E2F /* c140.cpp */, + B3B3D5E628713551008A0E2F /* c352.cpp */, + B3B3D60828713551008A0E2F /* c6280.cpp */, + B3B3D59C28713550008A0E2F /* dac.cpp */, + B3B3D5CA28713551008A0E2F /* digitalk.cpp */, + B3B3D58F28713550008A0E2F /* es5506.cpp */, + B3B3D5D328713551008A0E2F /* es8712.cpp */, + B3B3D5AB28713550008A0E2F /* flower.cpp */, + B3B3D60728713551008A0E2F /* flt_rc.cpp */, + B3B3D5AC28713550008A0E2F /* gaelco.cpp */, + B3B3D5AE28713550008A0E2F /* hc55516.cpp */, + B3B3D5C128713551008A0E2F /* i5000.cpp */, + B3B3D5D028713551008A0E2F /* ics2115.cpp */, + B3B3D5E028713551008A0E2F /* iremga20.cpp */, + B3B3D58628713550008A0E2F /* k005289.cpp */, + B3B3D5BF28713551008A0E2F /* k007232.cpp */, + B3B3D5D828713551008A0E2F /* k051649.cpp */, + B3B3D5D628713551008A0E2F /* k053260.cpp */, + B3B3D5BA28713551008A0E2F /* k054539.cpp */, + B3B3D58428713550008A0E2F /* llander.cpp */, + B3B3D57928713550008A0E2F /* msm5205.cpp */, + B3B3D5F428713551008A0E2F /* msm5232.cpp */, + B3B3D58C28713550008A0E2F /* msm6295.cpp */, + B3B3D5BC28713551008A0E2F /* multipcm.cpp */, + B3B3D5A828713550008A0E2F /* namco_snd.cpp */, + B3B3D5B028713551008A0E2F /* nes_apu.cpp */, + B3B3D58D28713550008A0E2F /* phoenixsound.cpp */, + B3B3D58728713550008A0E2F /* pleiadssound.cpp */, + B3B3D59A28713550008A0E2F /* pokey.cpp */, + B3B3D5E128713551008A0E2F /* redbaron.cpp */, + B3B3D5C728713551008A0E2F /* rf5c68.cpp */, + B3B3D5B528713551008A0E2F /* s14001a.cpp */, + B3B3D5D528713551008A0E2F /* saa1099.cpp */, + B3B3D5A928713550008A0E2F /* samples.cpp */, + B3B3D60128713551008A0E2F /* segapcm.cpp */, + B3B3D57C28713550008A0E2F /* sn76477.cpp */, + B3B3D5F628713551008A0E2F /* sn76496.cpp */, + B3B3D5DE28713551008A0E2F /* snk6502_sound.cpp */, + B3B3D60628713551008A0E2F /* sp0250.cpp */, + B3B3D5EC28713551008A0E2F /* sp0256.cpp */, + B3B3D5A128713550008A0E2F /* t6w28.cpp */, + B3B3D5F328713551008A0E2F /* tms36xx.cpp */, + B3B3D5A528713550008A0E2F /* tms5110.cpp */, + B3B3D60528713551008A0E2F /* tms5220.cpp */, + B3B3D5DD28713551008A0E2F /* upd7759.cpp */, + B3B3D59728713550008A0E2F /* vlm5030.cpp */, + B3B3D5D928713551008A0E2F /* wiping.cpp */, + B3B3D58528713550008A0E2F /* x1010.cpp */, + B3B3D59E28713550008A0E2F /* ymf262.cpp */, + B3B3D5B428713551008A0E2F /* ymf271.cpp */, + B3B3D57828713550008A0E2F /* ymz280b.cpp */, + B3B3D59F28713550008A0E2F /* asteroids.h */, + B3B3D5A028713550008A0E2F /* ay8910.h */, + B3B3D59028713550008A0E2F /* biquad.h */, + B3B3D5BE28713551008A0E2F /* burn_md2612.h */, + B3B3D5F028713551008A0E2F /* burn_y8950.h */, + B3B3D5B128713551008A0E2F /* burn_ym2151.h */, + B3B3D5EF28713551008A0E2F /* burn_ym2203.h */, + B3B3D5E228713551008A0E2F /* burn_ym2413.h */, + B3B3D59328713550008A0E2F /* burn_ym2608.h */, + B3B3D5CD28713551008A0E2F /* burn_ym2610.h */, + B3B3D58B28713550008A0E2F /* burn_ym2612.h */, + B3B3D5E728713551008A0E2F /* burn_ym3526.h */, + B3B3D5E828713551008A0E2F /* burn_ym3812.h */, + B3B3D59828713550008A0E2F /* burn_ymf262.h */, + B3B3D5A428713550008A0E2F /* burn_ymf271.h */, + B3B3D5DF28713551008A0E2F /* burn_ymf278b.h */, + B3B3D60228713551008A0E2F /* bzone.h */, + B3B3D5CC28713551008A0E2F /* c140.h */, + B3B3D59528713550008A0E2F /* c352.h */, + B3B3D5B828713551008A0E2F /* c6280.h */, + B3B3D58828713550008A0E2F /* dac.h */, + B3B3D5C628713551008A0E2F /* digitalk.h */, + B3B3D5F228713551008A0E2F /* downsample.h */, + B3B3D5C228713551008A0E2F /* es5506.h */, + B3B3D5C428713551008A0E2F /* es8712.h */, + B3B3D5B228713551008A0E2F /* flower.h */, + B3B3D59128713550008A0E2F /* flt_rc.h */, + B3B3D5A328713550008A0E2F /* fm.h */, + B3B3D5C828713551008A0E2F /* fmopl.h */, + B3B3D5F728713551008A0E2F /* gaelco.h */, + B3B3D58028713550008A0E2F /* hc55516.h */, + B3B3D5F528713551008A0E2F /* i5000.h */, + B3B3D59B28713550008A0E2F /* ics2115.h */, + B3B3D5AF28713550008A0E2F /* iremga20.h */, + B3B3D5FA28713551008A0E2F /* k005289.h */, + B3B3D5CE28713551008A0E2F /* k007232.h */, + B3B3D5D728713551008A0E2F /* k051649.h */, + B3B3D5E528713551008A0E2F /* k053260.h */, + B3B3D5FF28713551008A0E2F /* k054539.h */, + B3B3D5D228713551008A0E2F /* llander.h */, + B3B3D5DC28713551008A0E2F /* msm5205.h */, + B3B3D57728713550008A0E2F /* msm5232.h */, + B3B3D5FD28713551008A0E2F /* msm6295.h */, + B3B3D5C928713551008A0E2F /* multipcm.h */, + B3B3D57D28713550008A0E2F /* namco_snd.h */, + B3B3D57628713550008A0E2F /* nes_apu.h */, + B3B3D59228713550008A0E2F /* nes_defs.h */, + B3B3D58228713550008A0E2F /* phoenixsound.h */, + B3B3D5BD28713551008A0E2F /* pleiadssound.h */, + B3B3D58128713550008A0E2F /* pokey.h */, + B3B3D5E928713551008A0E2F /* redbaron.h */, + B3B3D5E328713551008A0E2F /* rescap.h */, + B3B3D58328713550008A0E2F /* rf5c68.h */, + B3B3D59428713550008A0E2F /* s14001a.h */, + B3B3D5F828713551008A0E2F /* saa1099.h */, + B3B3D61028713551008A0E2F /* samples.h */, + B3B3D5B928713551008A0E2F /* segapcm.h */, + B3B3D60B28713551008A0E2F /* sn76477.h */, + B3B3D5AA28713550008A0E2F /* sn76496.h */, + B3B3D60428713551008A0E2F /* snk6502_sound.h */, + B3B3D5E428713551008A0E2F /* sp0250.h */, + B3B3D5A628713550008A0E2F /* sp0256.h */, + B3B3D5B328713551008A0E2F /* stream.h */, + B3B3D5B728713551008A0E2F /* t6w28.h */, + B3B3D59628713550008A0E2F /* tms36xx.h */, + B3B3D58A28713550008A0E2F /* tms5110_tables.h */, + B3B3D5D128713551008A0E2F /* tms5110.h */, + B3B3D59928713550008A0E2F /* tms5220_tables.h */, + B3B3D5AD28713550008A0E2F /* tms5220.h */, + B3B3D58E28713550008A0E2F /* upd7759.h */, + B3B3D5F128713551008A0E2F /* vlm5030.h */, + B3B3D5BB28713551008A0E2F /* wiping.h */, + B3B3D5DB28713551008A0E2F /* x1010.h */, + B3B3D5D428713551008A0E2F /* ym2151.h */, + B3B3D57B28713550008A0E2F /* ym2413.h */, + B3B3D5EE28713551008A0E2F /* ym2612.h */, + B3B3D5B628713551008A0E2F /* ymdeltat.h */, + B3B3D60E28713551008A0E2F /* ymf262.h */, + B3B3D5C028713551008A0E2F /* ymf271.h */, + B3B3D60C28713551008A0E2F /* ymf278b.h */, + B3B3D60F28713551008A0E2F /* ymz280b.h */, + ); + path = snd; + sourceTree = ""; + }; + B3B3D61C28713551008A0E2F /* devices */ = { + isa = PBXGroup; + children = ( + B3B3D64F28713551008A0E2F /* 6821pia.cpp */, + B3B3D65928713551008A0E2F /* 8255ppi.cpp */, + B3B3D64428713551008A0E2F /* 8257dma.cpp */, + B3B3D65E28713551008A0E2F /* atariic.cpp */, + B3B3D64628713551008A0E2F /* atarijsa.cpp */, + B3B3D66F28713551008A0E2F /* atarimo.cpp */, + B3B3D64728713551008A0E2F /* atarirle.cpp */, + B3B3D65328713551008A0E2F /* atarivad.cpp */, + B3B3D64328713551008A0E2F /* avgdvg.cpp */, + B3B3D65728713551008A0E2F /* bsmt2000.cpp */, + B3B3D68528713551008A0E2F /* c169.cpp */, + B3B3D67B28713551008A0E2F /* decobsmt.cpp */, + B3B3D66028713551008A0E2F /* ds2404.cpp */, + B3B3D63928713551008A0E2F /* earom.cpp */, + B3B3D67A28713551008A0E2F /* eeprom.cpp */, + B3B3D63228713551008A0E2F /* gaelco_crypt.cpp */, + B3B3D67E28713551008A0E2F /* i4x00.cpp */, + B3B3D64B28713551008A0E2F /* intelfsh.cpp */, + B3B3D65828713551008A0E2F /* joyprocess.cpp */, + B3B3D61D28713551008A0E2F /* k1ge.cpp */, + B3B3D64A28713551008A0E2F /* kaneko_tmap.cpp */, + B3B3D67028713551008A0E2F /* mathbox.cpp */, + B3B3D66628713551008A0E2F /* mb87078.cpp */, + B3B3D65528713551008A0E2F /* mermaid.cpp */, + B3B3D61F28713551008A0E2F /* midcsd.cpp */, + B3B3D66C28713551008A0E2F /* midsat.cpp */, + B3B3D67228713551008A0E2F /* midsg.cpp */, + B3B3D66B28713551008A0E2F /* midssio.cpp */, + B3B3D64028713551008A0E2F /* midtcs.cpp */, + B3B3D68128713551008A0E2F /* namco_c45.cpp */, + B3B3D67528713551008A0E2F /* namcoio.cpp */, + B3B3D62128713551008A0E2F /* nb1414m4_8bit.cpp */, + B3B3D63328713551008A0E2F /* nb1414m4.cpp */, + B3B3D63028713551008A0E2F /* nmk004.cpp */, + B3B3D64928713551008A0E2F /* nmk112.cpp */, + B3B3D63B28713551008A0E2F /* pandora.cpp */, + B3B3D63E28713551008A0E2F /* poly.cpp */, + B3B3D62E28713551008A0E2F /* qs1000.cpp */, + B3B3D62328713551008A0E2F /* resnet.cpp */, + B3B3D65128713551008A0E2F /* seibucop.cpp */, + B3B3D67728713551008A0E2F /* seibusnd.cpp */, + B3B3D66328713551008A0E2F /* sknsspr.cpp */, + B3B3D63428713551008A0E2F /* slapstic.cpp */, + B3B3D63F28713551008A0E2F /* st0020.cpp */, + B3B3D64D28713551008A0E2F /* t5182.cpp */, + B3B3D63A28713551008A0E2F /* timekpr.cpp */, + B3B3D64E28713551008A0E2F /* tlc34076.cpp */, + B3B3D68628713551008A0E2F /* tms9928a.cpp */, + B3B3D66E28713551008A0E2F /* tms34061.cpp */, + B3B3D64128713551008A0E2F /* v3021.cpp */, + B3B3D62228713551008A0E2F /* vdc.cpp */, + B3B3D65028713551008A0E2F /* watchdog.cpp */, + B3B3D66828713551008A0E2F /* x2212.cpp */, + B3B3D66528713551008A0E2F /* 6821pia.h */, + B3B3D63728713551008A0E2F /* 8255ppi.h */, + B3B3D63828713551008A0E2F /* 8257dma.h */, + B3B3D67428713551008A0E2F /* atariic.h */, + B3B3D65C28713551008A0E2F /* atarijsa.h */, + B3B3D63D28713551008A0E2F /* atarimo.h */, + B3B3D65B28713551008A0E2F /* atarirle.h */, + B3B3D67328713551008A0E2F /* atarivad.h */, + B3B3D63C28713551008A0E2F /* avgdvg.h */, + B3B3D62928713551008A0E2F /* bsmt2000.h */, + B3B3D62428713551008A0E2F /* c169.h */, + B3B3D66428713551008A0E2F /* decobsmt.h */, + B3B3D68328713551008A0E2F /* ds2404.h */, + B3B3D62A28713551008A0E2F /* earom.h */, + B3B3D62728713551008A0E2F /* eeprom.h */, + B3B3D65D28713551008A0E2F /* gaelco_crypt.h */, + B3B3D62B28713551008A0E2F /* i4x00.h */, + B3B3D68028713551008A0E2F /* intelfsh.h */, + B3B3D67F28713551008A0E2F /* joyprocess.h */, + B3B3D67C28713551008A0E2F /* k1ge.h */, + B3B3D62D28713551008A0E2F /* kaneko_tmap.h */, + B3B3D67828713551008A0E2F /* mathbox.h */, + B3B3D67928713551008A0E2F /* mb87078.h */, + B3B3D67628713551008A0E2F /* mermaid.h */, + B3B3D66D28713551008A0E2F /* midcsd.h */, + B3B3D61E28713551008A0E2F /* midsat.h */, + B3B3D65228713551008A0E2F /* midsg.h */, + B3B3D68228713551008A0E2F /* midssio.h */, + B3B3D66228713551008A0E2F /* midtcs.h */, + B3B3D64828713551008A0E2F /* namco_c45.h */, + B3B3D62C28713551008A0E2F /* namcoio.h */, + B3B3D62628713551008A0E2F /* nb1414m4_8bit.h */, + B3B3D62F28713551008A0E2F /* nb1414m4.h */, + B3B3D63528713551008A0E2F /* nmk004.h */, + B3B3D65A28713551008A0E2F /* nmk112.h */, + B3B3D65428713551008A0E2F /* pandora.h */, + B3B3D66A28713551008A0E2F /* poly.h */, + B3B3D66928713551008A0E2F /* qs1000.h */, + B3B3D63128713551008A0E2F /* resnet.h */, + B3B3D68428713551008A0E2F /* seibucop.h */, + B3B3D64528713551008A0E2F /* seibusnd.h */, + B3B3D66128713551008A0E2F /* sknsspr.h */, + B3B3D64C28713551008A0E2F /* slapstic.h */, + B3B3D62828713551008A0E2F /* st0020.h */, + B3B3D67D28713551008A0E2F /* t5182.h */, + B3B3D64228713551008A0E2F /* timekpr.h */, + B3B3D65628713551008A0E2F /* tlc34076.h */, + B3B3D63628713551008A0E2F /* tms9928a.h */, + B3B3D66728713551008A0E2F /* tms34061.h */, + B3B3D65F28713551008A0E2F /* v3021.h */, + B3B3D62028713551008A0E2F /* vdc.h */, + B3B3D62528713551008A0E2F /* watchdog.h */, + B3B3D67128713551008A0E2F /* x2212.h */, + ); + path = devices; + sourceTree = ""; + }; + B3B3D68728713551008A0E2F /* cpu */ = { + isa = PBXGroup; + children = ( + B3B3D74C28713552008A0E2F /* adsp2100_intf.cpp */, + B3B3D6D228713552008A0E2F /* arm_intf.cpp */, + B3B3D76228713552008A0E2F /* arm7_intf.cpp */, + B3B3D6E428713552008A0E2F /* h6280_intf.cpp */, + B3B3D7A028713552008A0E2F /* hd6309_intf.cpp */, + B3B3D76028713552008A0E2F /* konami_intf.cpp */, + B3B3D74028713552008A0E2F /* m6502_intf.cpp */, + B3B3D69628713551008A0E2F /* m6800_intf.cpp */, + B3B3D78A28713552008A0E2F /* m6805_intf.cpp */, + B3B3D73F28713552008A0E2F /* m6809_intf.cpp */, + B3B3D6A428713551008A0E2F /* m68000_intf.cpp */, + B3B3D69C28713551008A0E2F /* mips3_intf.cpp */, + B3B3D6BA28713552008A0E2F /* nec_intf.cpp */, + B3B3D6B028713552008A0E2F /* pic16c5x_intf.cpp */, + B3B3D73A28713552008A0E2F /* s2650_intf.cpp */, + B3B3D76128713552008A0E2F /* tlcs90_intf.cpp */, + B3B3D73028713552008A0E2F /* tms34_intf.cpp */, + B3B3D6A128713551008A0E2F /* tms34010_intf.cpp */, + B3B3D69228713551008A0E2F /* z80_intf.cpp */, + B3B3D69128713551008A0E2F /* z180_intf.cpp */, + B3B3D6A228713551008A0E2F /* adsp2100_intf.h */, + B3B3D6A028713551008A0E2F /* arm_intf.h */, + B3B3D73128713552008A0E2F /* arm7_intf.h */, + B3B3D69D28713551008A0E2F /* e132xs_intf.h */, + B3B3D6D128713552008A0E2F /* h6280_intf.h */, + B3B3D6DF28713552008A0E2F /* hd6309_intf.h */, + B3B3D6A328713551008A0E2F /* i386_intf.h */, + B3B3D79528713552008A0E2F /* konami_intf.h */, + B3B3D73928713552008A0E2F /* m377_intf.h */, + B3B3D69E28713551008A0E2F /* m6502_intf.h */, + B3B3D6D028713552008A0E2F /* m6800_intf.h */, + B3B3D73B28713552008A0E2F /* m6805_intf.h */, + B3B3D73828713552008A0E2F /* m6809_intf.h */, + B3B3D6AF28713552008A0E2F /* m68000_debug.h */, + B3B3D6F728713552008A0E2F /* m68000_intf.h */, + B3B3D69F28713551008A0E2F /* mips3_intf.h */, + B3B3D71F28713552008A0E2F /* nec_intf.h */, + B3B3D72F28713552008A0E2F /* pic16c5x_intf.h */, + B3B3D76928713552008A0E2F /* s2650_intf.h */, + B3B3D6E328713552008A0E2F /* sh2_intf.h */, + B3B3D6BB28713552008A0E2F /* tlcs90_intf.h */, + B3B3D75F28713552008A0E2F /* tlcs900_intf.h */, + B3B3D6BC28713552008A0E2F /* tms34_intf.h */, + B3B3D6C228713552008A0E2F /* tms34010_intf.h */, + B3B3D74D28713552008A0E2F /* upd7810_intf.h */, + B3B3D69B28713551008A0E2F /* v60_intf.h */, + B3B3D79728713552008A0E2F /* z80_intf.h */, + B3B3D79628713552008A0E2F /* z180_intf.h */, + B3B3D71828713552008A0E2F /* a68k */, + B3B3D73228713552008A0E2F /* adsp2100 */, + B3B3D78328713552008A0E2F /* arm */, + B3B3D76A28713552008A0E2F /* arm7 */, + B3B3D7A128713552008A0E2F /* e132xs */, + B3B3D78B28713552008A0E2F /* f8 */, + B3B3D6BD28713552008A0E2F /* h6280 */, + B3B3D78528713552008A0E2F /* hd6309 */, + B3B3D69328713551008A0E2F /* i8x41 */, + B3B3D6C328713552008A0E2F /* i386 */, + B3B3D6E028713552008A0E2F /* i8039 */, + B3B3D79128713552008A0E2F /* i8051 */, + B3B3D72A28713552008A0E2F /* konami */, + B3B3D68828713551008A0E2F /* m68k */, + B3B3D76328713552008A0E2F /* m377 */, + B3B3D6D328713552008A0E2F /* m6502 */, + B3B3D72028713552008A0E2F /* m6800 */, + B3B3D69728713551008A0E2F /* m6805 */, + B3B3D72528713552008A0E2F /* m6809 */, + B3B3D6F828713552008A0E2F /* mips3 */, + B3B3D75128713552008A0E2F /* nec */, + B3B3D76F28713552008A0E2F /* pic16c5x */, + B3B3D78E28713552008A0E2F /* s2650 */, + B3B3D6A528713552008A0E2F /* sh2 */, + B3B3D79828713552008A0E2F /* tlcs90 */, + B3B3D6E528713552008A0E2F /* tlcs900 */, + B3B3D6A728713552008A0E2F /* tms34 */, + B3B3D74E28713552008A0E2F /* tms32010 */, + B3B3D6E928713552008A0E2F /* tms34010 */, + B3B3D73C28713552008A0E2F /* upd7725 */, + B3B3D79A28713552008A0E2F /* upd7810 */, + B3B3D77228713552008A0E2F /* v60 */, + B3B3D6B128713552008A0E2F /* z80 */, + B3B3D74128713552008A0E2F /* z180 */, + ); + path = cpu; + sourceTree = ""; + }; + B3B3D68828713551008A0E2F /* m68k */ = { + isa = PBXGroup; + children = ( + B3B3D68928713551008A0E2F /* m68kfpu.c */, + B3B3D68A28713551008A0E2F /* m68k.h */, + B3B3D68B28713551008A0E2F /* m68kcpu.c */, + B3B3D68C28713551008A0E2F /* m68kdasm.c */, + B3B3D68D28713551008A0E2F /* m68kmake.c */, + B3B3D68E28713551008A0E2F /* m68kcpu.h */, + B3B3D68F28713551008A0E2F /* m68kconf.h */, + B3B3D69028713551008A0E2F /* m68k_in.c */, + ); + path = m68k; + sourceTree = ""; + }; + B3B3D69328713551008A0E2F /* i8x41 */ = { + isa = PBXGroup; + children = ( + B3B3D69428713551008A0E2F /* mcs48.cpp */, + B3B3D69528713551008A0E2F /* mcs48.h */, + ); + path = i8x41; + sourceTree = ""; + }; + B3B3D69728713551008A0E2F /* m6805 */ = { + isa = PBXGroup; + children = ( + B3B3D69828713551008A0E2F /* m6805.h */, + B3B3D69928713551008A0E2F /* m6805.cpp */, + B3B3D69A28713551008A0E2F /* 6805ops.c */, + ); + path = m6805; + sourceTree = ""; + }; + B3B3D6A528713552008A0E2F /* sh2 */ = { + isa = PBXGroup; + children = ( + B3B3D6A628713552008A0E2F /* sh2.cpp */, + ); + path = sh2; + sourceTree = ""; + }; + B3B3D6A728713552008A0E2F /* tms34 */ = { + isa = PBXGroup; + children = ( + B3B3D6A828713552008A0E2F /* 34010gfx.c */, + B3B3D6A928713552008A0E2F /* 34010fld.c */, + B3B3D6AA28713552008A0E2F /* 34010ops.c */, + B3B3D6AB28713552008A0E2F /* tms34010.h */, + B3B3D6AC28713552008A0E2F /* tms34010.cpp */, + B3B3D6AD28713552008A0E2F /* 34010tbl.c */, + B3B3D6AE28713552008A0E2F /* 34010ops.h */, + ); + path = tms34; + sourceTree = ""; + }; + B3B3D6B128713552008A0E2F /* z80 */ = { + isa = PBXGroup; + children = ( + B3B3D6B228713552008A0E2F /* z80pio.cpp */, + B3B3D6B328713552008A0E2F /* z80pio.h */, + B3B3D6B428713552008A0E2F /* z80ctc.cpp */, + B3B3D6B528713552008A0E2F /* z80.cpp */, + B3B3D6B628713552008A0E2F /* z80ctc.h */, + B3B3D6B728713552008A0E2F /* z80daisy.h */, + B3B3D6B828713552008A0E2F /* z80daisy.cpp */, + B3B3D6B928713552008A0E2F /* z80.h */, + ); + path = z80; + sourceTree = ""; + }; + B3B3D6BD28713552008A0E2F /* h6280 */ = { + isa = PBXGroup; + children = ( + B3B3D6BE28713552008A0E2F /* tblh6280.c */, + B3B3D6BF28713552008A0E2F /* h6280.cpp */, + B3B3D6C028713552008A0E2F /* h6280.h */, + B3B3D6C128713552008A0E2F /* h6280ops.h */, + ); + path = h6280; + sourceTree = ""; + }; + B3B3D6C328713552008A0E2F /* i386 */ = { + isa = PBXGroup; + children = ( + B3B3D6C428713552008A0E2F /* i386intf.h */, + B3B3D6C528713552008A0E2F /* pentops.c */, + B3B3D6C628713552008A0E2F /* i386ops.c */, + B3B3D6C728713552008A0E2F /* x87ops.c */, + B3B3D6C828713552008A0E2F /* cycles.h */, + B3B3D6C928713552008A0E2F /* i386op16.c */, + B3B3D6CA28713552008A0E2F /* i386dasm.c */, + B3B3D6CB28713552008A0E2F /* i386.cpp */, + B3B3D6CC28713552008A0E2F /* i386op32.c */, + B3B3D6CD28713552008A0E2F /* i386ops.h */, + B3B3D6CE28713552008A0E2F /* i386.h */, + B3B3D6CF28713552008A0E2F /* i486ops.c */, + ); + path = i386; + sourceTree = ""; + }; + B3B3D6D328713552008A0E2F /* m6502 */ = { + isa = PBXGroup; + children = ( + B3B3D6D428713552008A0E2F /* opsc02.h */, + B3B3D6D528713552008A0E2F /* ops02.h */, + B3B3D6D628713552008A0E2F /* t6502.c */, + B3B3D6D728713552008A0E2F /* tdeco16.c */, + B3B3D6D828713552008A0E2F /* ill02.h */, + B3B3D6D928713552008A0E2F /* opsn2a03.h */, + B3B3D6DA28713552008A0E2F /* tn2a03.c */, + B3B3D6DB28713552008A0E2F /* m6502.cpp */, + B3B3D6DC28713552008A0E2F /* t65c02.c */, + B3B3D6DD28713552008A0E2F /* m6502.h */, + B3B3D6DE28713552008A0E2F /* t65sc02.c */, + ); + path = m6502; + sourceTree = ""; + }; + B3B3D6E028713552008A0E2F /* i8039 */ = { + isa = PBXGroup; + children = ( + B3B3D6E128713552008A0E2F /* i8039.cpp */, + B3B3D6E228713552008A0E2F /* i8039.h */, + ); + path = i8039; + sourceTree = ""; + }; + B3B3D6E528713552008A0E2F /* tlcs900 */ = { + isa = PBXGroup; + children = ( + B3B3D6E628713552008A0E2F /* tlcs900.cpp */, + B3B3D6E728713552008A0E2F /* tlcs900.h */, + B3B3D6E828713552008A0E2F /* 900tbl.c */, + ); + path = tlcs900; + sourceTree = ""; + }; + B3B3D6E928713552008A0E2F /* tms34010 */ = { + isa = PBXGroup; + children = ( + B3B3D6EA28713552008A0E2F /* tms34010_gfx.h */, + B3B3D6EB28713552008A0E2F /* tms34010_arithm.h */, + B3B3D6EC28713552008A0E2F /* tms34010_ctrl.h */, + B3B3D6ED28713552008A0E2F /* tms34010_memacc.h */, + B3B3D6EE28713552008A0E2F /* tms34010_jump.h */, + B3B3D6EF28713552008A0E2F /* tms34010_mov.h */, + B3B3D6F028713552008A0E2F /* tms34010_shift.h */, + B3B3D6F128713552008A0E2F /* tms34010_dasm.cpp */, + B3B3D6F228713552008A0E2F /* tms34010_defs.h */, + B3B3D6F328713552008A0E2F /* tms34010.h */, + B3B3D6F428713552008A0E2F /* tms34010.cpp */, + B3B3D6F528713552008A0E2F /* tms34010_optable.cpp */, + B3B3D6F628713552008A0E2F /* tms34010_newdasm.cpp */, + ); + path = tms34010; + sourceTree = ""; + }; + B3B3D6F828713552008A0E2F /* mips3 */ = { + isa = PBXGroup; + children = ( + B3B3D6F928713552008A0E2F /* mips3_rw.h */, + B3B3D6FA28713552008A0E2F /* mips3_arithm.h */, + B3B3D6FB28713552008A0E2F /* x64 */, + B3B3D70C28713552008A0E2F /* mips3.h */, + B3B3D70D28713552008A0E2F /* mips3_bitops.h */, + B3B3D70E28713552008A0E2F /* mips3_shift.h */, + B3B3D70F28713552008A0E2F /* mips3_branch.h */, + B3B3D71028713552008A0E2F /* mips3.cpp */, + B3B3D71128713552008A0E2F /* mips3_misc.h */, + B3B3D71228713552008A0E2F /* mipsdef.h */, + B3B3D71328713552008A0E2F /* mips3_dasm.cpp */, + B3B3D71428713552008A0E2F /* mips3_memory.h */, + B3B3D71528713552008A0E2F /* cop1.cpp */, + B3B3D71628713552008A0E2F /* cop0.cpp */, + B3B3D71728713552008A0E2F /* mips3_common.h */, + ); + path = mips3; + sourceTree = ""; + }; + B3B3D6FB28713552008A0E2F /* x64 */ = { + isa = PBXGroup; + children = ( + B3B3D6FC28713552008A0E2F /* mips3_x64_rw.h */, + B3B3D6FD28713552008A0E2F /* mips3_x64_cop1.h */, + B3B3D6FE28713552008A0E2F /* xbyak */, + B3B3D70328713552008A0E2F /* mips3_x64.cpp */, + B3B3D70428713552008A0E2F /* mips3_x64_arithm.h */, + B3B3D70528713552008A0E2F /* mips3_x64_misc.h */, + B3B3D70628713552008A0E2F /* mips3_x64_shift.h */, + B3B3D70728713552008A0E2F /* mips3_x64_defs.h */, + B3B3D70828713552008A0E2F /* mips3_x64.h */, + B3B3D70928713552008A0E2F /* mips3_x64_cop0.h */, + B3B3D70A28713552008A0E2F /* mips3_x64_bitops.h */, + B3B3D70B28713552008A0E2F /* mips3_x64_branch.h */, + ); + path = x64; + sourceTree = ""; + }; + B3B3D6FE28713552008A0E2F /* xbyak */ = { + isa = PBXGroup; + children = ( + B3B3D6FF28713552008A0E2F /* xbyak_mnemonic.h */, + B3B3D70028713552008A0E2F /* xbyak_bin2hex.h */, + B3B3D70128713552008A0E2F /* xbyak.h */, + B3B3D70228713552008A0E2F /* xbyak_util.h */, + ); + path = xbyak; + sourceTree = ""; + }; + B3B3D71828713552008A0E2F /* a68k */ = { + isa = PBXGroup; + children = ( + B3B3D71928713552008A0E2F /* mips */, + B3B3D71E28713552008A0E2F /* fba_make68k.c */, + ); + path = a68k; + sourceTree = ""; + }; + B3B3D71928713552008A0E2F /* mips */ = { + isa = PBXGroup; + children = ( + B3B3D71A28713552008A0E2F /* a68k.s */, + B3B3D71B28713552008A0E2F /* fba_make68k.c */, + B3B3D71C28713552008A0E2F /* a68ktbl.inc */, + B3B3D71D28713552008A0E2F /* builda68k.bat */, + ); + path = mips; + sourceTree = ""; + }; + B3B3D72028713552008A0E2F /* m6800 */ = { + isa = PBXGroup; + children = ( + B3B3D72128713552008A0E2F /* 6800tbl.c */, + B3B3D72228713552008A0E2F /* m6800.cpp */, + B3B3D72328713552008A0E2F /* 6800ops.c */, + B3B3D72428713552008A0E2F /* m6800.h */, + ); + path = m6800; + sourceTree = ""; + }; + B3B3D72528713552008A0E2F /* m6809 */ = { + isa = PBXGroup; + children = ( + B3B3D72628713552008A0E2F /* 6809ops.c */, + B3B3D72728713552008A0E2F /* m6809.h */, + B3B3D72828713552008A0E2F /* 6809tbl.c */, + B3B3D72928713552008A0E2F /* m6809.cpp */, + ); + path = m6809; + sourceTree = ""; + }; + B3B3D72A28713552008A0E2F /* konami */ = { + isa = PBXGroup; + children = ( + B3B3D72B28713552008A0E2F /* konami.cpp */, + B3B3D72C28713552008A0E2F /* konamtbl.c */, + B3B3D72D28713552008A0E2F /* konami.h */, + B3B3D72E28713552008A0E2F /* konamops.c */, + ); + path = konami; + sourceTree = ""; + }; + B3B3D73228713552008A0E2F /* adsp2100 */ = { + isa = PBXGroup; + children = ( + B3B3D73328713552008A0E2F /* adsp2100.cpp */, + B3B3D73428713552008A0E2F /* adsp2100.h */, + B3B3D73528713552008A0E2F /* 2100dasm.cpp */, + B3B3D73628713552008A0E2F /* adsp2100_defs.h */, + B3B3D73728713552008A0E2F /* 2100ops.c */, + ); + path = adsp2100; + sourceTree = ""; + }; + B3B3D73C28713552008A0E2F /* upd7725 */ = { + isa = PBXGroup; + children = ( + B3B3D73D28713552008A0E2F /* upd7725.cpp */, + B3B3D73E28713552008A0E2F /* upd7725.h */, + ); + path = upd7725; + sourceTree = ""; + }; + B3B3D74128713552008A0E2F /* z180 */ = { + isa = PBXGroup; + children = ( + B3B3D74228713552008A0E2F /* z180.h */, + B3B3D74328713552008A0E2F /* z180xy.c */, + B3B3D74428713552008A0E2F /* z180ops.h */, + B3B3D74528713552008A0E2F /* z180fd.c */, + B3B3D74628713552008A0E2F /* z180.cpp */, + B3B3D74728713552008A0E2F /* z180op.c */, + B3B3D74828713552008A0E2F /* z180ed.c */, + B3B3D74928713552008A0E2F /* z180tbl.h */, + B3B3D74A28713552008A0E2F /* z180dd.c */, + B3B3D74B28713552008A0E2F /* z180cb.c */, + ); + path = z180; + sourceTree = ""; + }; + B3B3D74E28713552008A0E2F /* tms32010 */ = { + isa = PBXGroup; + children = ( + B3B3D74F28713552008A0E2F /* tms32010.h */, + B3B3D75028713552008A0E2F /* tms32010.cpp */, + ); + path = tms32010; + sourceTree = ""; + }; + B3B3D75128713552008A0E2F /* nec */ = { + isa = PBXGroup; + children = ( + B3B3D75228713552008A0E2F /* v25instr.c */, + B3B3D75328713552008A0E2F /* v25sfr.c */, + B3B3D75428713552008A0E2F /* v25.cpp */, + B3B3D75528713552008A0E2F /* necinstr.h */, + B3B3D75628713552008A0E2F /* v25priv.h */, + B3B3D75728713552008A0E2F /* nec.cpp */, + B3B3D75828713552008A0E2F /* v25instr.h */, + B3B3D75928713552008A0E2F /* necmodrm.h */, + B3B3D75A28713552008A0E2F /* necinstr.c */, + B3B3D75B28713552008A0E2F /* necea.h */, + B3B3D75C28713552008A0E2F /* necpriv.h */, + B3B3D75D28713552008A0E2F /* nec.h */, + B3B3D75E28713552008A0E2F /* necmacro.h */, + ); + path = nec; + sourceTree = ""; + }; + B3B3D76328713552008A0E2F /* m377 */ = { + isa = PBXGroup; + children = ( + B3B3D76428713552008A0E2F /* m37710il.h */, + B3B3D76528713552008A0E2F /* m37710.cpp */, + B3B3D76628713552008A0E2F /* m37710.h */, + B3B3D76728713552008A0E2F /* m37710cm.h */, + B3B3D76828713552008A0E2F /* m37710op.h */, + ); + path = m377; + sourceTree = ""; + }; + B3B3D76A28713552008A0E2F /* arm7 */ = { + isa = PBXGroup; + children = ( + B3B3D76B28713552008A0E2F /* arm7exec.c */, + B3B3D76C28713552008A0E2F /* arm7core.h */, + B3B3D76D28713552008A0E2F /* arm7.cpp */, + B3B3D76E28713552008A0E2F /* arm7core.c */, + ); + path = arm7; + sourceTree = ""; + }; + B3B3D76F28713552008A0E2F /* pic16c5x */ = { + isa = PBXGroup; + children = ( + B3B3D77028713552008A0E2F /* pic16c5x.h */, + B3B3D77128713552008A0E2F /* pic16c5x.cpp */, + ); + path = pic16c5x; + sourceTree = ""; + }; + B3B3D77228713552008A0E2F /* v60 */ = { + isa = PBXGroup; + children = ( + B3B3D77328713552008A0E2F /* op7a.c */, + B3B3D77428713552008A0E2F /* op2.c */, + B3B3D77528713552008A0E2F /* am3.c */, + B3B3D77628713552008A0E2F /* op6.c */, + B3B3D77728713552008A0E2F /* v60d.c */, + B3B3D77828713552008A0E2F /* am.c */, + B3B3D77928713552008A0E2F /* v60.h */, + B3B3D77A28713552008A0E2F /* op5.c */, + B3B3D77B28713552008A0E2F /* optable.c */, + B3B3D77C28713552008A0E2F /* am1.c */, + B3B3D77D28713552008A0E2F /* v60.cpp */, + B3B3D77E28713552008A0E2F /* op4.c */, + B3B3D77F28713552008A0E2F /* op12.c */, + B3B3D78028713552008A0E2F /* am2.c */, + B3B3D78128713552008A0E2F /* op3.c */, + B3B3D78228713552008A0E2F /* v60mem.c */, + ); + path = v60; + sourceTree = ""; + }; + B3B3D78328713552008A0E2F /* arm */ = { + isa = PBXGroup; + children = ( + B3B3D78428713552008A0E2F /* arm.cpp */, + ); + path = arm; + sourceTree = ""; + }; + B3B3D78528713552008A0E2F /* hd6309 */ = { + isa = PBXGroup; + children = ( + B3B3D78628713552008A0E2F /* hd6309.cpp */, + B3B3D78728713552008A0E2F /* 6309tbl.c */, + B3B3D78828713552008A0E2F /* 6309ops.c */, + B3B3D78928713552008A0E2F /* hd6309.h */, + ); + path = hd6309; + sourceTree = ""; + }; + B3B3D78B28713552008A0E2F /* f8 */ = { + isa = PBXGroup; + children = ( + B3B3D78C28713552008A0E2F /* f8.cpp */, + B3B3D78D28713552008A0E2F /* f8.h */, + ); + path = f8; + sourceTree = ""; + }; + B3B3D78E28713552008A0E2F /* s2650 */ = { + isa = PBXGroup; + children = ( + B3B3D78F28713552008A0E2F /* s2650.cpp */, + B3B3D79028713552008A0E2F /* s2650.h */, + ); + path = s2650; + sourceTree = ""; + }; + B3B3D79128713552008A0E2F /* i8051 */ = { + isa = PBXGroup; + children = ( + B3B3D79228713552008A0E2F /* mcs51ops.c */, + B3B3D79328713552008A0E2F /* mcs51.h */, + B3B3D79428713552008A0E2F /* mcs51.cpp */, + ); + path = i8051; + sourceTree = ""; + }; + B3B3D79828713552008A0E2F /* tlcs90 */ = { + isa = PBXGroup; + children = ( + B3B3D79928713552008A0E2F /* tlcs90.cpp */, + ); + path = tlcs90; + sourceTree = ""; + }; + B3B3D79A28713552008A0E2F /* upd7810 */ = { + isa = PBXGroup; + children = ( + B3B3D79B28713552008A0E2F /* upd7810.cpp */, + B3B3D79C28713552008A0E2F /* 7810tbl.c */, + B3B3D79D28713552008A0E2F /* upd7810.h */, + B3B3D79E28713552008A0E2F /* 7810ops.c */, + B3B3D79F28713552008A0E2F /* 7810dasm.c */, + ); + path = upd7810; + sourceTree = ""; + }; + B3B3D7A128713552008A0E2F /* e132xs */ = { + isa = PBXGroup; + children = ( + B3B3D7A228713552008A0E2F /* e132xs.h */, + B3B3D7A328713552008A0E2F /* e132xsop.inc */, + B3B3D7A428713552008A0E2F /* e132xs.cpp */, + ); + path = e132xs; + sourceTree = ""; + }; + B3B3D7A528713552008A0E2F /* dep */ = { + isa = PBXGroup; + children = ( + B32296AD287835FB00585AD8 /* generated */, + B3B3D7A628713552008A0E2F /* vs2010 */, + B3B3D7AB28713552008A0E2F /* macos */, + B3B3D7B328713552008A0E2F /* qtcreator */, + B3B3D7B528713552008A0E2F /* mingw */, + B3B3D7CC28713552008A0E2F /* libs */, + B3B3D89D28713553008A0E2F /* pi */, + B3B3D8A428713553008A0E2F /* vc */, + B3B3D8B028713553008A0E2F /* scripts */, + B3B3D8BA28713553008A0E2F /* kaillera */, + ); + path = dep; + sourceTree = ""; + }; + B3B3D7A628713552008A0E2F /* vs2010 */ = { + isa = PBXGroup; + children = ( + B3B3D7A728713552008A0E2F /* pre2015.bat */, + B3B3D7A828713552008A0E2F /* pre.bat */, + B3B3D7A928713552008A0E2F /* pre2019.bat */, + B3B3D7AA28713552008A0E2F /* readme.txt */, + ); + path = vs2010; + sourceTree = ""; + }; + B3B3D7AB28713552008A0E2F /* macos */ = { + isa = PBXGroup; + children = ( + B3B3D7AC28713552008A0E2F /* hid */, + ); + path = macos; + sourceTree = ""; + }; + B3B3D7AC28713552008A0E2F /* hid */ = { + isa = PBXGroup; + children = ( + B3B3D7AD28713552008A0E2F /* AKGamepad.m */, + B3B3D7AE28713552008A0E2F /* AKGamepadEventData.h */, + B3B3D7AF28713552008A0E2F /* AKGamepadManager.m */, + B3B3D7B028713552008A0E2F /* AKGamepadEventData.m */, + B3B3D7B128713552008A0E2F /* AKGamepad.h */, + B3B3D7B228713552008A0E2F /* AKGamepadManager.h */, + ); + path = hid; + sourceTree = ""; + }; + B3B3D7B328713552008A0E2F /* qtcreator */ = { + isa = PBXGroup; + children = ( + B3B3D7B428713552008A0E2F /* SDL.h */, + ); + path = qtcreator; + sourceTree = ""; + }; + B3B3D7B528713552008A0E2F /* mingw */ = { + isa = PBXGroup; + children = ( + B3B3D7B628713552008A0E2F /* include */, + B3B3D7CA28713552008A0E2F /* dxsdk.7z */, + B3B3D7CB28713552008A0E2F /* DirectX SDK EULA.txt */, + ); + path = mingw; + sourceTree = ""; + }; + B3B3D7B628713552008A0E2F /* include */ = { + isa = PBXGroup; + children = ( + B3B3D7B728713552008A0E2F /* xaudio2 */, + B3B3D7BD28713552008A0E2F /* directx9 */, + B3B3D7C928713552008A0E2F /* mingw_win32.h */, + ); + path = include; + sourceTree = ""; + }; + B3B3D7B728713552008A0E2F /* xaudio2 */ = { + isa = PBXGroup; + children = ( + B3B3D7B828713552008A0E2F /* xaudio2fx.h */, + B3B3D7B928713552008A0E2F /* xma2defs.h */, + B3B3D7BA28713552008A0E2F /* audiodefs.h */, + B3B3D7BB28713552008A0E2F /* sal.h */, + B3B3D7BC28713552008A0E2F /* xaudio2.h */, + ); + path = xaudio2; + sourceTree = ""; + }; + B3B3D7BD28713552008A0E2F /* directx9 */ = { + isa = PBXGroup; + children = ( + B3B3D7BE28713552008A0E2F /* d3dx9tex.h */, + B3B3D7BF28713552008A0E2F /* d3dx9mesh.h */, + B3B3D7C028713552008A0E2F /* d3dx9xof.h */, + B3B3D7C128713552008A0E2F /* d3dx9math.inl */, + B3B3D7C228713552008A0E2F /* d3dx9effect.h */, + B3B3D7C328713552008A0E2F /* d3dx9core.h */, + B3B3D7C428713552008A0E2F /* d3dx9.h */, + B3B3D7C528713552008A0E2F /* d3dx9shader.h */, + B3B3D7C628713552008A0E2F /* d3dx9anim.h */, + B3B3D7C728713552008A0E2F /* d3dx9math.h */, + B3B3D7C828713552008A0E2F /* d3dx9shape.h */, + ); + path = directx9; + sourceTree = ""; + }; + B3B3D7CC28713552008A0E2F /* libs */ = { + isa = PBXGroup; + children = ( + B3B3D7CD28713552008A0E2F /* libpng */, + B3B3D7EA28713553008A0E2F /* lib7z */, + B3B3D84928713553008A0E2F /* zlib */, + B3B3D86628713553008A0E2F /* lua */, + ); + path = libs; + sourceTree = ""; + }; + B3B3D7CD28713552008A0E2F /* libpng */ = { + isa = PBXGroup; + children = ( + B3B3D7CE28713552008A0E2F /* pnginfo.h */, + B3B3D7CF28713552008A0E2F /* pngrio.c */, + B3B3D7D028713552008A0E2F /* pngerror.c */, + B3B3D7D128713552008A0E2F /* pngwio.c */, + B3B3D7D228713552008A0E2F /* pngstruct.h */, + B3B3D7D328713552008A0E2F /* pngtrans.c */, + B3B3D7D428713552008A0E2F /* pngpriv.h */, + B3B3D7D528713552008A0E2F /* pngwrite.c */, + B3B3D7D628713552008A0E2F /* png.h */, + B3B3D7D728713552008A0E2F /* pngwutil.c */, + B3B3D7D828713552008A0E2F /* pngwtran.c */, + B3B3D7D928713552008A0E2F /* pnglibconf.h */, + B3B3D7DA28713552008A0E2F /* pngconf.h */, + B3B3D7DB28713552008A0E2F /* pngpread.c */, + B3B3D7DC28713552008A0E2F /* pngdebug.h */, + B3B3D7DD28713552008A0E2F /* _fba_libpng_v1635.txt */, + B3B3D7DE28713552008A0E2F /* pngread.c */, + B3B3D7DF28713552008A0E2F /* arm */, + B3B3D7E428713552008A0E2F /* pngmem.c */, + B3B3D7E528713552008A0E2F /* pngget.c */, + B3B3D7E628713552008A0E2F /* png.c */, + B3B3D7E728713552008A0E2F /* pngrtran.c */, + B3B3D7E828713552008A0E2F /* pngrutil.c */, + B3B3D7E928713552008A0E2F /* pngset.c */, + ); + path = libpng; + sourceTree = ""; + }; + B3B3D7DF28713552008A0E2F /* arm */ = { + isa = PBXGroup; + children = ( + B3B3D7E028713552008A0E2F /* filter_neon.S */, + B3B3D7E128713552008A0E2F /* filter_neon_intrinsics.c */, + B3B3D7E228713552008A0E2F /* arm_init.c */, + B3B3D7E328713552008A0E2F /* palette_neon_intrinsics.c */, + ); + path = arm; + sourceTree = ""; + }; + B3B3D7EA28713553008A0E2F /* lib7z */ = { + isa = PBXGroup; + children = ( + B3B3D7EB28713553008A0E2F /* Lzma2Dec.c */, + B3B3D7EC28713553008A0E2F /* LzHash.h */, + B3B3D7ED28713553008A0E2F /* LzmaEnc.c */, + B3B3D7EE28713553008A0E2F /* Ppmd7Dec.c */, + B3B3D7EF28713553008A0E2F /* Aes.c */, + B3B3D7F028713553008A0E2F /* Ppmd8.h */, + B3B3D7F128713553008A0E2F /* LzFindMt.c */, + B3B3D7F228713553008A0E2F /* 7zTypes.h */, + B3B3D7F328713553008A0E2F /* HuffEnc.h */, + B3B3D7F428713553008A0E2F /* XzDec.c */, + B3B3D7F528713553008A0E2F /* MtDec.c */, + B3B3D7F628713553008A0E2F /* MtCoder.c */, + B3B3D7F728713553008A0E2F /* Bcj2.c */, + B3B3D7F828713553008A0E2F /* Compiler.h */, + B3B3D7F928713553008A0E2F /* LzFind.c */, + B3B3D7FA28713553008A0E2F /* XzCrc64.h */, + B3B3D7FB28713553008A0E2F /* Precomp.h */, + B3B3D7FC28713553008A0E2F /* DllSecur.c */, + B3B3D7FD28713553008A0E2F /* CpuArch.h */, + B3B3D7FE28713553008A0E2F /* Sort.c */, + B3B3D7FF28713553008A0E2F /* 7zCrc.h */, + B3B3D80028713553008A0E2F /* Ppmd7.c */, + B3B3D80128713553008A0E2F /* Delta.h */, + B3B3D80228713553008A0E2F /* Bra.c */, + B3B3D80328713553008A0E2F /* BwtSort.c */, + B3B3D80428713553008A0E2F /* 7zFile.h */, + B3B3D80528713553008A0E2F /* Bra86.c */, + B3B3D80628713553008A0E2F /* Sha1.c */, + B3B3D80728713553008A0E2F /* 7zArcIn.c */, + B3B3D80828713553008A0E2F /* 7zAlloc.c */, + B3B3D80928713553008A0E2F /* Sha256.h */, + B3B3D80A28713553008A0E2F /* XzIn.c */, + B3B3D80B28713553008A0E2F /* XzEnc.c */, + B3B3D80C28713553008A0E2F /* Lzma2DecMt.c */, + B3B3D80D28713553008A0E2F /* Threads.h */, + B3B3D80E28713553008A0E2F /* LzmaLib.h */, + B3B3D80F28713553008A0E2F /* 7zBuf.h */, + B3B3D81028713553008A0E2F /* 7z.h */, + B3B3D81128713553008A0E2F /* Alloc.c */, + B3B3D81228713553008A0E2F /* Xz.h */, + B3B3D81328713553008A0E2F /* LzmaDec.c */, + B3B3D81428713553008A0E2F /* Lzma2Enc.c */, + B3B3D81528713553008A0E2F /* Ppmd7Enc.c */, + B3B3D81628713553008A0E2F /* HuffEnc.c */, + B3B3D81728713553008A0E2F /* Ppmd8.c */, + B3B3D81828713553008A0E2F /* LzFindMt.h */, + B3B3D81928713553008A0E2F /* 7zDec.c */, + B3B3D81A28713553008A0E2F /* Lzma86.h */, + B3B3D81B28713553008A0E2F /* LzmaEnc.h */, + B3B3D81C28713553008A0E2F /* Lzma2Dec.h */, + B3B3D81D28713553008A0E2F /* Ppmd8Enc.c */, + B3B3D81E28713553008A0E2F /* Aes.h */, + B3B3D81F28713553008A0E2F /* Blake2.h */, + B3B3D82028713553008A0E2F /* DllSecur.h */, + B3B3D82128713553008A0E2F /* 7zBuf2.c */, + B3B3D82228713553008A0E2F /* XzCrc64.c */, + B3B3D82328713553008A0E2F /* LzFind.h */, + B3B3D82428713553008A0E2F /* BraIA64.c */, + B3B3D82528713553008A0E2F /* Lzma86Dec.c */, + B3B3D82628713553008A0E2F /* 7zStream.c */, + B3B3D82728713553008A0E2F /* Bcj2.h */, + B3B3D82828713553008A0E2F /* 7zVersion.rc */, + B3B3D82928713553008A0E2F /* Ppmd.h */, + B3B3D82A28713553008A0E2F /* MtDec.h */, + B3B3D82B28713553008A0E2F /* MtCoder.h */, + B3B3D82C28713553008A0E2F /* Sha1.h */, + B3B3D82D28713553008A0E2F /* Sha256.c */, + B3B3D82E28713553008A0E2F /* 7zAlloc.h */, + B3B3D82F28713553008A0E2F /* Delta.c */, + B3B3D83028713553008A0E2F /* 7zVersion.h */, + B3B3D83128713553008A0E2F /* BwtSort.h */, + B3B3D83228713553008A0E2F /* 7zFile.c */, + B3B3D83328713553008A0E2F /* Bra.h */, + B3B3D83428713553008A0E2F /* 7zCrc.c */, + B3B3D83528713553008A0E2F /* Blake2s.c */, + B3B3D83628713553008A0E2F /* Sort.h */, + B3B3D83728713553008A0E2F /* AesOpt.c */, + B3B3D83828713553008A0E2F /* RotateDefs.h */, + B3B3D83928713553008A0E2F /* Lzma86Enc.c */, + B3B3D83A28713553008A0E2F /* Ppmd7.h */, + B3B3D83B28713553008A0E2F /* CpuArch.c */, + B3B3D83C28713553008A0E2F /* Lzma2Enc.h */, + B3B3D83D28713553008A0E2F /* Bcj2Enc.c */, + B3B3D83E28713553008A0E2F /* LzmaDec.h */, + B3B3D83F28713553008A0E2F /* XzCrc64Opt.c */, + B3B3D84028713553008A0E2F /* Ppmd8Dec.c */, + B3B3D84128713553008A0E2F /* Xz.c */, + B3B3D84228713553008A0E2F /* 7zCrcOpt.c */, + B3B3D84328713553008A0E2F /* Alloc.h */, + B3B3D84428713553008A0E2F /* Threads.c */, + B3B3D84528713553008A0E2F /* Lzma2DecMt.h */, + B3B3D84628713553008A0E2F /* 7zBuf.c */, + B3B3D84728713553008A0E2F /* LzmaLib.c */, + B3B3D84828713553008A0E2F /* XzEnc.h */, + ); + path = lib7z; + sourceTree = ""; + }; + B3B3D84928713553008A0E2F /* zlib */ = { + isa = PBXGroup; + children = ( + B3B3D84A28713553008A0E2F /* zutil.h */, + B3B3D84B28713553008A0E2F /* inftrees.h */, + B3B3D84C28713553008A0E2F /* inflate.c */, + B3B3D84D28713553008A0E2F /* compress.c */, + B3B3D84E28713553008A0E2F /* deflate.c */, + B3B3D84F28713553008A0E2F /* inffixed.h */, + B3B3D85028713553008A0E2F /* gzread.c */, + B3B3D85128713553008A0E2F /* zconf.h.in */, + B3B3D85228713553008A0E2F /* trees.h */, + B3B3D85328713553008A0E2F /* inffast.h */, + B3B3D85428713553008A0E2F /* crc32.c */, + B3B3D85528713553008A0E2F /* infback.c */, + B3B3D85628713553008A0E2F /* zutil.c */, + B3B3D85728713553008A0E2F /* deflate.h */, + B3B3D85828713553008A0E2F /* gzguts.h */, + B3B3D85928713553008A0E2F /* zlib.h */, + B3B3D85A28713553008A0E2F /* gzlib.c */, + B3B3D85B28713553008A0E2F /* inflate.h */, + B3B3D85C28713553008A0E2F /* inftrees.c */, + B3B3D85D28713553008A0E2F /* uncompr.c */, + B3B3D85E28713553008A0E2F /* gzwrite.c */, + B3B3D85F28713553008A0E2F /* trees.c */, + B3B3D86028713553008A0E2F /* gzclose.c */, + B3B3D86128713553008A0E2F /* crc32.h */, + B3B3D86228713553008A0E2F /* inffast.c */, + B3B3D86328713553008A0E2F /* _fba_zlib_v1211.txt */, + B3B3D86428713553008A0E2F /* adler32.c */, + B3B3D86528713553008A0E2F /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B3B3D86628713553008A0E2F /* lua */ = { + isa = PBXGroup; + children = ( + B3B3D86728713553008A0E2F /* lauxlib.c */, + B3B3D86828713553008A0E2F /* lmem.h */, + B3B3D86928713553008A0E2F /* llimits.h */, + B3B3D86A28713553008A0E2F /* luaconf.h */, + B3B3D86B28713553008A0E2F /* lzio.h */, + B3B3D86C28713553008A0E2F /* lgc.h */, + B3B3D86D28713553008A0E2F /* liolib.c */, + B3B3D86E28713553008A0E2F /* lopcodes.c */, + B3B3D86F28713553008A0E2F /* lstate.c */, + B3B3D87028713553008A0E2F /* lobject.c */, + B3B3D87128713553008A0E2F /* lualib.h */, + B3B3D87228713553008A0E2F /* print.c */, + B3B3D87328713553008A0E2F /* lmathlib.c */, + B3B3D87428713553008A0E2F /* loadlib.c */, + B3B3D87528713553008A0E2F /* lvm.c */, + B3B3D87628713553008A0E2F /* lfunc.c */, + B3B3D87728713553008A0E2F /* lstrlib.c */, + B3B3D87828713553008A0E2F /* ldebug.h */, + B3B3D87928713553008A0E2F /* linit.c */, + B3B3D87A28713553008A0E2F /* lcode.h */, + B3B3D87B28713553008A0E2F /* lapi.h */, + B3B3D87C28713553008A0E2F /* lstring.c */, + B3B3D87D28713553008A0E2F /* ldo.h */, + B3B3D87E28713553008A0E2F /* lundump.c */, + B3B3D87F28713553008A0E2F /* llex.h */, + B3B3D88028713553008A0E2F /* luac.c */, + B3B3D88128713553008A0E2F /* ltm.h */, + B3B3D88228713553008A0E2F /* ltable.c */, + B3B3D88328713553008A0E2F /* lparser.h */, + B3B3D88428713553008A0E2F /* ldump.c */, + B3B3D88528713553008A0E2F /* lobject.h */, + B3B3D88628713553008A0E2F /* lstate.h */, + B3B3D88728713553008A0E2F /* lopcodes.h */, + B3B3D88828713553008A0E2F /* loslib.c */, + B3B3D88928713553008A0E2F /* lgc.c */, + B3B3D88A28713553008A0E2F /* lzio.c */, + B3B3D88B28713553008A0E2F /* ldblib.c */, + B3B3D88C28713553008A0E2F /* lmem.c */, + B3B3D88D28713553008A0E2F /* lauxlib.h */, + B3B3D88E28713553008A0E2F /* lvm.h */, + B3B3D88F28713553008A0E2F /* lstring.h */, + B3B3D89028713553008A0E2F /* lcode.c */, + B3B3D89128713553008A0E2F /* ltablib.c */, + B3B3D89228713553008A0E2F /* lapi.c */, + B3B3D89328713553008A0E2F /* lbaselib.c */, + B3B3D89428713553008A0E2F /* lua.h */, + B3B3D89528713553008A0E2F /* ldebug.c */, + B3B3D89628713553008A0E2F /* lfunc.h */, + B3B3D89728713553008A0E2F /* lparser.c */, + B3B3D89828713553008A0E2F /* llex.c */, + B3B3D89928713553008A0E2F /* ltable.h */, + B3B3D89A28713553008A0E2F /* ltm.c */, + B3B3D89B28713553008A0E2F /* ldo.c */, + B3B3D89C28713553008A0E2F /* lundump.h */, + ); + path = lua; + sourceTree = ""; + }; + B3B3D89D28713553008A0E2F /* pi */ = { + isa = PBXGroup; + children = ( + B3B3D89E28713553008A0E2F /* gles */, + ); + path = pi; + sourceTree = ""; + }; + B3B3D89E28713553008A0E2F /* gles */ = { + isa = PBXGroup; + children = ( + B3B3D89F28713553008A0E2F /* pigl_dmx.c */, + B3B3D8A028713553008A0E2F /* matrix.h */, + B3B3D8A128713553008A0E2F /* pigl.h */, + B3B3D8A228713553008A0E2F /* pigl_drm.c */, + B3B3D8A328713553008A0E2F /* matrix.c */, + ); + path = gles; + sourceTree = ""; + }; + B3B3D8A428713553008A0E2F /* vc */ = { + isa = PBXGroup; + children = ( + B3B3D8A528713553008A0E2F /* include */, + ); + path = vc; + sourceTree = ""; + }; + B3B3D8A528713553008A0E2F /* include */ = { + isa = PBXGroup; + children = ( + B3B3D8A628713553008A0E2F /* d3dcaps.h */, + B3B3D8A728713553008A0E2F /* xaudio2 */, + B3B3D8AC28713553008A0E2F /* afxres.h */, + B3B3D8AD28713553008A0E2F /* d3d.h */, + B3B3D8AE28713553008A0E2F /* d3dvec.inl */, + B3B3D8AF28713553008A0E2F /* d3dtypes.h */, + ); + path = include; + sourceTree = ""; + }; + B3B3D8A728713553008A0E2F /* xaudio2 */ = { + isa = PBXGroup; + children = ( + B3B3D8A828713553008A0E2F /* XAudio2fx.h */, + B3B3D8A928713553008A0E2F /* xma2defs.h */, + B3B3D8AA28713553008A0E2F /* audiodefs.h */, + B3B3D8AB28713553008A0E2F /* XAudio2.h */, + ); + path = xaudio2; + sourceTree = ""; + }; + B3B3D8B028713553008A0E2F /* scripts */ = { + isa = PBXGroup; + children = ( + B3B3D8B128713553008A0E2F /* cave_tile_func.pl */, + B3B3D8B228713553008A0E2F /* psikyo_tile_func.pl */, + B3B3D8B328713553008A0E2F /* cave_sprite_func.pl */, + B3B3D8B428713553008A0E2F /* license2rtf.pl */, + B3B3D8B528713553008A0E2F /* toa_gp9001_func.pl */, + B3B3D8B628713553008A0E2F /* neo_sprite_func.pl */, + B3B3D8B728713553008A0E2F /* fixrc.pl */, + B3B3D8B828713553008A0E2F /* build_details.cpp */, + B3B3D8B928713553008A0E2F /* gamelist.pl */, + ); + path = scripts; + sourceTree = ""; + }; + B3B3D8BA28713553008A0E2F /* kaillera */ = { + isa = PBXGroup; + children = ( + B3B3D8BB28713553008A0E2F /* client */, + ); + path = kaillera; + sourceTree = ""; + }; + B3B3D8BB28713553008A0E2F /* client */ = { + isa = PBXGroup; + children = ( + B3B3D8BC28713553008A0E2F /* net.h */, + B3B3D8BD28713553008A0E2F /* net.cpp */, + B3B3D8BE28713553008A0E2F /* kailleraclient.h */, + ); + path = client; + sourceTree = ""; + }; + B3B3D8BF28713553008A0E2F /* intf */ = { + isa = PBXGroup; + children = ( + B3B3D8C028713553008A0E2F /* video */, + B3B3D90428713553008A0E2F /* perfcount */, + B3B3D90828713553008A0E2F /* input */, + B3B3D91D28713553008A0E2F /* interface.h */, + B3B3D91E28713553008A0E2F /* interface.cpp */, + B3B3D91F28713553008A0E2F /* audio */, + B3B3D93728713554008A0E2F /* cd */, + ); + path = intf; + sourceTree = ""; + }; + B3B3D8C028713553008A0E2F /* video */ = { + isa = PBXGroup; + children = ( + B3B3D8C128713553008A0E2F /* switchres */, + B3B3D8C428713553008A0E2F /* macos */, + B3B3D8C728713553008A0E2F /* vid_softfx.h */, + B3B3D8C828713553008A0E2F /* vid_support.cpp */, + B3B3D8C928713553008A0E2F /* scalers */, + B3B3D8E228713553008A0E2F /* vid_softfx.cpp */, + B3B3D8E328713553008A0E2F /* psp */, + B3B3D8E728713553008A0E2F /* pi */, + B3B3D8E928713553008A0E2F /* sdl */, + B3B3D8EE28713553008A0E2F /* vid_support.h */, + B3B3D8EF28713553008A0E2F /* vid_interface.cpp */, + B3B3D8F028713553008A0E2F /* win32 */, + B3B3D90028713553008A0E2F /* opengl */, + ); + path = video; + sourceTree = ""; + }; + B3B3D8C128713553008A0E2F /* switchres */ = { + isa = PBXGroup; + children = ( + B3B3D8C228713553008A0E2F /* vid_switchres.h */, + B3B3D8C328713553008A0E2F /* vid_switchres.cpp */, + ); + path = switchres; + sourceTree = ""; + }; + B3B3D8C428713553008A0E2F /* macos */ = { + isa = PBXGroup; + children = ( + B3B3D8C528713553008A0E2F /* FBVideo.mm */, + B3B3D8C628713553008A0E2F /* FBVideo.h */, + ); + path = macos; + sourceTree = ""; + }; + B3B3D8C928713553008A0E2F /* scalers */ = { + isa = PBXGroup; + children = ( + B3B3D8CA28713553008A0E2F /* epx.cpp */, + B3B3D8CB28713553008A0E2F /* hq2x32.asm */, + B3B3D8CC28713553008A0E2F /* xbr.h */, + B3B3D8CD28713553008A0E2F /* eagle_fm.asm */, + B3B3D8CE28713553008A0E2F /* hq_shared32.cpp */, + B3B3D8CF28713553008A0E2F /* xbr32.cpp */, + B3B3D8D028713553008A0E2F /* hq4x32.asm */, + B3B3D8D128713553008A0E2F /* 2xpm.cpp */, + B3B3D8D228713553008A0E2F /* scale2x.h */, + B3B3D8D328713553008A0E2F /* 2xsaimmx.asm */, + B3B3D8D428713553008A0E2F /* hq3xs.cpp */, + B3B3D8D528713553008A0E2F /* xbr.cpp */, + B3B3D8D628713553008A0E2F /* hq3x32.asm */, + B3B3D8D728713553008A0E2F /* scale3x.h */, + B3B3D8D828713553008A0E2F /* hq2xs.cpp */, + B3B3D8D928713553008A0E2F /* hq2xs_16.cpp */, + B3B3D8DA28713553008A0E2F /* scale2x_vc.h */, + B3B3D8DB28713553008A0E2F /* ddt3x.cpp */, + B3B3D8DC28713553008A0E2F /* interp.h */, + B3B3D8DD28713553008A0E2F /* hq3xs.h */, + B3B3D8DE28713553008A0E2F /* 2xsai.cpp */, + B3B3D8DF28713553008A0E2F /* hq_shared32.h */, + B3B3D8E028713553008A0E2F /* superscale.asm */, + B3B3D8E128713553008A0E2F /* hq2xs.h */, + ); + path = scalers; + sourceTree = ""; + }; + B3B3D8E328713553008A0E2F /* psp */ = { + isa = PBXGroup; + children = ( + B3B3D8E428713553008A0E2F /* vid_psp.h */, + B3B3D8E528713553008A0E2F /* vid_psp.c */, + B3B3D8E628713553008A0E2F /* vid_pspfx.cpp */, + ); + path = psp; + sourceTree = ""; + }; + B3B3D8E728713553008A0E2F /* pi */ = { + isa = PBXGroup; + children = ( + B3B3D8E828713553008A0E2F /* vid_pi.cpp */, + ); + path = pi; + sourceTree = ""; + }; + B3B3D8E928713553008A0E2F /* sdl */ = { + isa = PBXGroup; + children = ( + B3B3D8EA28713553008A0E2F /* vid_sdl2opengl.cpp */, + B3B3D8EB28713553008A0E2F /* vid_sdlfx.cpp */, + B3B3D8EC28713553008A0E2F /* vid_sdl2.cpp */, + B3B3D8ED28713553008A0E2F /* vid_sdlopengl.cpp */, + ); + path = sdl; + sourceTree = ""; + }; + B3B3D8F028713553008A0E2F /* win32 */ = { + isa = PBXGroup; + children = ( + B3B3D8F128713553008A0E2F /* vid_d3d.cpp */, + B3B3D8F228713553008A0E2F /* vid_effect.h */, + B3B3D8F328713553008A0E2F /* directx9_core.cpp */, + B3B3D8F428713553008A0E2F /* vid_ddrawfx.cpp */, + B3B3D8F528713553008A0E2F /* ddraw_core.h */, + B3B3D8F628713553008A0E2F /* vid_directx9.cpp */, + B3B3D8F728713553008A0E2F /* vid_effect.cpp */, + B3B3D8F828713553008A0E2F /* rgb_pattern.h */, + B3B3D8F928713553008A0E2F /* vid_directx_support.cpp */, + B3B3D8FA28713553008A0E2F /* vid_directx_support.h */, + B3B3D8FB28713553008A0E2F /* ddraw_core.cpp */, + B3B3D8FC28713553008A0E2F /* resource */, + B3B3D8FE28713553008A0E2F /* vid_ddraw.cpp */, + B3B3D8FF28713553008A0E2F /* directx9_core.h */, + ); + path = win32; + sourceTree = ""; + }; + B3B3D8FC28713553008A0E2F /* resource */ = { + isa = PBXGroup; + children = ( + B3B3D8FD28713553008A0E2F /* bicubic.fx */, + ); + path = resource; + sourceTree = ""; + }; + B3B3D90028713553008A0E2F /* opengl */ = { + isa = PBXGroup; + children = ( + B3B3D90128713553008A0E2F /* shader.h */, + B3B3D90228713553008A0E2F /* vid_opengl.cpp */, + B3B3D90328713553008A0E2F /* shader.cpp */, + ); + path = opengl; + sourceTree = ""; + }; + B3B3D90428713553008A0E2F /* perfcount */ = { + isa = PBXGroup; + children = ( + B3B3D90528713553008A0E2F /* prf_interface.cpp */, + B3B3D90628713553008A0E2F /* win32 */, + ); + path = perfcount; + sourceTree = ""; + }; + B3B3D90628713553008A0E2F /* win32 */ = { + isa = PBXGroup; + children = ( + B3B3D90728713553008A0E2F /* prf_performance_counter.cpp */, + ); + path = win32; + sourceTree = ""; + }; + B3B3D90828713553008A0E2F /* input */ = { + isa = PBXGroup; + children = ( + B3B3D90928713553008A0E2F /* macos */, + B3B3D90F28713553008A0E2F /* psp */, + B3B3D91128713553008A0E2F /* inp_keys.h */, + B3B3D91228713553008A0E2F /* pi */, + B3B3D91428713553008A0E2F /* sdl */, + B3B3D91828713553008A0E2F /* inp_interface.cpp */, + B3B3D91928713553008A0E2F /* win32 */, + ); + path = input; + sourceTree = ""; + }; + B3B3D90928713553008A0E2F /* macos */ = { + isa = PBXGroup; + children = ( + B3B3D90A28713553008A0E2F /* FBInput.h */, + B3B3D90B28713553008A0E2F /* FBInputMap.m */, + B3B3D90C28713553008A0E2F /* FBInput.mm */, + B3B3D90D28713553008A0E2F /* FBInputConstants.h */, + B3B3D90E28713553008A0E2F /* FBInputMap.h */, + ); + path = macos; + sourceTree = ""; + }; + B3B3D90F28713553008A0E2F /* psp */ = { + isa = PBXGroup; + children = ( + B3B3D91028713553008A0E2F /* inp_psp.cpp */, + ); + path = psp; + sourceTree = ""; + }; + B3B3D91228713553008A0E2F /* pi */ = { + isa = PBXGroup; + children = ( + B3B3D91328713553008A0E2F /* inp_pi.cpp */, + ); + path = pi; + sourceTree = ""; + }; + B3B3D91428713553008A0E2F /* sdl */ = { + isa = PBXGroup; + children = ( + B3B3D91528713553008A0E2F /* inp_sdl.cpp */, + B3B3D91628713553008A0E2F /* inp_sdl_keys.h */, + B3B3D91728713553008A0E2F /* inp_sdl2.cpp */, + ); + path = sdl; + sourceTree = ""; + }; + B3B3D91928713553008A0E2F /* win32 */ = { + isa = PBXGroup; + children = ( + B3B3D91A28713553008A0E2F /* inp_dinput.cpp */, + B3B3D91B28713553008A0E2F /* dinput_core.h */, + B3B3D91C28713553008A0E2F /* dinput_core.cpp */, + ); + path = win32; + sourceTree = ""; + }; + B3B3D91F28713553008A0E2F /* audio */ = { + isa = PBXGroup; + children = ( + B3B3D92028713553008A0E2F /* lowpass2.cpp */, + B3B3D92128713553008A0E2F /* macos */, + B3B3D92628713554008A0E2F /* aud_dsp.h */, + B3B3D92728713554008A0E2F /* lowpass2.h */, + B3B3D92828713554008A0E2F /* psp */, + B3B3D92B28713554008A0E2F /* sdl */, + B3B3D92D28713554008A0E2F /* linux */, + B3B3D93028713554008A0E2F /* aud_dsp.cpp */, + B3B3D93128713554008A0E2F /* win32 */, + B3B3D93628713554008A0E2F /* aud_interface.cpp */, + ); + path = audio; + sourceTree = ""; + }; + B3B3D92128713553008A0E2F /* macos */ = { + isa = PBXGroup; + children = ( + B3B3D92228713553008A0E2F /* SDLAudioEngine.m */, + B3B3D92328713553008A0E2F /* FBAudio.mm */, + B3B3D92428713554008A0E2F /* FBAudio.h */, + B3B3D92528713554008A0E2F /* SDLAudioEngine.h */, + ); + path = macos; + sourceTree = ""; + }; + B3B3D92828713554008A0E2F /* psp */ = { + isa = PBXGroup; + children = ( + B3B3D92928713554008A0E2F /* aud_psp_a.s */, + B3B3D92A28713554008A0E2F /* aud_psp.cpp */, + ); + path = psp; + sourceTree = ""; + }; + B3B3D92B28713554008A0E2F /* sdl */ = { + isa = PBXGroup; + children = ( + B3B3D92C28713554008A0E2F /* aud_sdl.cpp */, + ); + path = sdl; + sourceTree = ""; + }; + B3B3D92D28713554008A0E2F /* linux */ = { + isa = PBXGroup; + children = ( + B3B3D92E28713554008A0E2F /* aud_pulse_simple.cpp */, + B3B3D92F28713554008A0E2F /* ringbuffer.h */, + ); + path = linux; + sourceTree = ""; + }; + B3B3D93128713554008A0E2F /* win32 */ = { + isa = PBXGroup; + children = ( + B3B3D93228713554008A0E2F /* aud_xaudio2.cpp */, + B3B3D93328713554008A0E2F /* aud_dsound3.cpp */, + B3B3D93428713554008A0E2F /* dsound_core.h */, + B3B3D93528713554008A0E2F /* dsound_core.cpp */, + ); + path = win32; + sourceTree = ""; + }; + B3B3D93728713554008A0E2F /* cd */ = { + isa = PBXGroup; + children = ( + B3B3D93828713554008A0E2F /* cd_interface.cpp */, + B3B3D93928713554008A0E2F /* sdl */, + B3B3D93B28713554008A0E2F /* cd_interface.h */, + B3B3D93C28713554008A0E2F /* win32 */, + ); + path = cd; + sourceTree = ""; + }; + B3B3D93928713554008A0E2F /* sdl */ = { + isa = PBXGroup; + children = ( + B3B3D93A28713554008A0E2F /* cd_sdl2.cpp */, + ); + path = sdl; + sourceTree = ""; + }; + B3B3D93C28713554008A0E2F /* win32 */ = { + isa = PBXGroup; + children = ( + B3B3D93D28713554008A0E2F /* cd_img.cpp */, + ); + path = win32; + sourceTree = ""; + }; + B3B3D93F28713554008A0E2F /* burner */ = { + isa = PBXGroup; + children = ( + B3B3D95728713554008A0E2F /* ioapi.c */, + B3B3D95228713554008A0E2F /* unzip.c */, + B3B3D9D228713554008A0E2F /* conc.cpp */, + B3B3D9B628713554008A0E2F /* cong.cpp */, + B3B3D95528713554008A0E2F /* dat.cpp */, + B3B3D94128713554008A0E2F /* dynhuff.cpp */, + B3B3D9DA28713554008A0E2F /* gamc.cpp */, + B3B3D94028713554008A0E2F /* gami.cpp */, + B3B3D95128713554008A0E2F /* image.cpp */, + B3B3DA1E28713554008A0E2F /* luaengine.cpp */, + B3B3D95328713554008A0E2F /* luasav.cpp */, + B3B3D95628713554008A0E2F /* misc.cpp */, + B3B3D95828713554008A0E2F /* nvram.cpp */, + B3B3DA2028713554008A0E2F /* sshot.cpp */, + B3B3D95928713554008A0E2F /* state.cpp */, + B3B3D9D628713554008A0E2F /* statec.cpp */, + B3B3DA1D28713554008A0E2F /* un7z.cpp */, + B3B3D9D928713554008A0E2F /* zipfn.cpp */, + B3B3D9B128713554008A0E2F /* burner.h */, + B3B3D9B228713554008A0E2F /* dynhuff.h */, + B3B3D9D728713554008A0E2F /* gameinp.h */, + B3B3DA1C28713554008A0E2F /* ioapi.h */, + B3B3D9D428713554008A0E2F /* luaengine.h */, + B3B3D9D528713554008A0E2F /* luasav.h */, + B3B3DA1F28713554008A0E2F /* neocdlist.h */, + B3B3D95428713554008A0E2F /* title.h */, + B3B3D9D828713554008A0E2F /* un7z.h */, + B3B3D9D328713554008A0E2F /* unzip.h */, + B3B3DBCD2871408D008A0E2F /* libretro */, + B3B3D94228713554008A0E2F /* macos */, + B3B3D9B328713554008A0E2F /* pi */, + B3B3D95A28713554008A0E2F /* psp */, + B3B3D96728713554008A0E2F /* qt */, + B3B3D9DB28713554008A0E2F /* resource */, + B3B3D9B728713554008A0E2F /* sdl */, + B3B3D9E628713554008A0E2F /* win32 */, + ); + path = burner; + sourceTree = ""; + }; + B3B3D94228713554008A0E2F /* macos */ = { + isa = PBXGroup; + children = ( + B3B3D94328713554008A0E2F /* main.h */, + B3B3D94428713554008A0E2F /* FBMainThread.h */, + B3B3D94528713554008A0E2F /* FBImporter.m */, + B3B3D94628713554008A0E2F /* FBScanner.h */, + B3B3D94728713554008A0E2F /* NSString+Etc.m */, + B3B3D94828713554008A0E2F /* burner_macos.h */, + B3B3D94928713554008A0E2F /* misc.cpp */, + B3B3D94A28713554008A0E2F /* FBImporter.h */, + B3B3D94B28713554008A0E2F /* FBScanner.mm */, + B3B3D94C28713554008A0E2F /* FBMainThread.mm */, + B3B3D94D28713554008A0E2F /* NSString+Etc.h */, + B3B3D94E28713554008A0E2F /* FBMainThread+Etc.mm */, + B3B3D94F28713554008A0E2F /* tchar.h */, + B3B3D95028713554008A0E2F /* main.cpp */, + ); + path = macos; + sourceTree = ""; + }; + B3B3D95A28713554008A0E2F /* psp */ = { + isa = PBXGroup; + children = ( + B3B3D95B28713554008A0E2F /* pg.h */, + B3B3D95C28713554008A0E2F /* inpdipsw.cpp */, + B3B3D95D28713554008A0E2F /* select.cpp */, + B3B3D95E28713554008A0E2F /* font.c */, + B3B3D95F28713554008A0E2F /* run.cpp */, + B3B3D96028713554008A0E2F /* drv.cpp */, + B3B3D96128713554008A0E2F /* pg.c */, + B3B3D96228713554008A0E2F /* config.cpp */, + B3B3D96328713554008A0E2F /* burner_psp.h */, + B3B3D96428713554008A0E2F /* tchar.h */, + B3B3D96528713554008A0E2F /* stated.cpp */, + B3B3D96628713554008A0E2F /* main.cpp */, + ); + path = psp; + sourceTree = ""; + }; + B3B3D96728713554008A0E2F /* qt */ = { + isa = PBXGroup; + children = ( + B3B3D96828713554008A0E2F /* qutil.cpp */, + B3B3D96928713554008A0E2F /* selectdialog.cpp */, + B3B3D96A28713554008A0E2F /* rominfodialog.h */, + B3B3D96B28713554008A0E2F /* rominfodialog.ui */, + B3B3D96C28713554008A0E2F /* inputsetdialog.cpp */, + B3B3D96D28713554008A0E2F /* stringset.cpp */, + B3B3D96E28713554008A0E2F /* dipswitchdialog.ui */, + B3B3D96F28713554008A0E2F /* romdirsdialog.ui */, + B3B3D97028713554008A0E2F /* mainwindow.h */, + B3B3D97128713554008A0E2F /* aboutdialog.cpp */, + B3B3D97228713554008A0E2F /* neocdlist.cpp */, + B3B3D97328713554008A0E2F /* qinputinterface.cpp */, + B3B3D97428713554008A0E2F /* burner_qt.h */, + B3B3D97528713554008A0E2F /* romdirsdialog.h */, + B3B3D97628713554008A0E2F /* romscandialog.ui */, + B3B3D97728713554008A0E2F /* supportdirsdialog.ui */, + B3B3D97828713554008A0E2F /* aboutdialog.ui */, + B3B3D97928713554008A0E2F /* dipswitchdialog.h */, + B3B3D97A28713554008A0E2F /* inputdialog.ui */, + B3B3D97B28713554008A0E2F /* mainwindow.cpp */, + B3B3D97C28713554008A0E2F /* aboutdialog.h */, + B3B3D97D28713554008A0E2F /* qutil.h */, + B3B3D97E28713554008A0E2F /* qinputinterface.h */, + B3B3D97F28713554008A0E2F /* bzip.cpp */, + B3B3D98028713554008A0E2F /* selectdialog.h */, + B3B3D98128713554008A0E2F /* qaudiointerface.cpp */, + B3B3D98228713554008A0E2F /* romscandialog.cpp */, + B3B3D98328713554008A0E2F /* supportdirsdialog.h */, + B3B3D98428713554008A0E2F /* romdirsdialog.cpp */, + B3B3D98528713554008A0E2F /* dipswitchdialog.cpp */, + B3B3D98628713554008A0E2F /* logdialog.ui */, + B3B3D98728713554008A0E2F /* driver.cpp */, + B3B3D98828713554008A0E2F /* selectdialog.ui */, + B3B3D98928713554008A0E2F /* inputsetdialog.ui */, + B3B3D98A28713554008A0E2F /* inputdialog.cpp */, + B3B3D98B28713554008A0E2F /* oglviewport.h */, + B3B3D98C28713554008A0E2F /* progress.cpp */, + B3B3D98D28713554008A0E2F /* oglviewport.cpp */, + B3B3D98E28713554008A0E2F /* logdialog.h */, + B3B3D98F28713554008A0E2F /* romscandialog.h */, + B3B3D99028713554008A0E2F /* supportdirsdialog.cpp */, + B3B3D99128713554008A0E2F /* logdialog.cpp */, + B3B3D99228713554008A0E2F /* resource */, + B3B3D9A528713554008A0E2F /* rominfodialog.cpp */, + B3B3D9A628713554008A0E2F /* tchar.h */, + B3B3D9A728713554008A0E2F /* main.cpp */, + B3B3D9A828713554008A0E2F /* qaudiointerface.h */, + B3B3D9A928713554008A0E2F /* emuworker.cpp */, + B3B3D9AA28713554008A0E2F /* inputdialog.h */, + B3B3D9AB28713554008A0E2F /* emuworker.h */, + B3B3D9AC28713554008A0E2F /* widgets */, + B3B3D9AF28713554008A0E2F /* rscr.qrc */, + B3B3D9B028713554008A0E2F /* inputsetdialog.h */, + ); + path = qt; + sourceTree = ""; + }; + B3B3D99228713554008A0E2F /* resource */ = { + isa = PBXGroup; + children = ( + B3B3D99328713554008A0E2F /* down_arrow.png */, + B3B3D99428713554008A0E2F /* branch-closed.png */, + B3B3D99528713554008A0E2F /* tv-not-found.ico */, + B3B3D99628713554008A0E2F /* splash.bmp */, + B3B3D99728713554008A0E2F /* left_arrow.png */, + B3B3D99828713554008A0E2F /* right_arrow.png */, + B3B3D99928713554008A0E2F /* misc.bmp */, + B3B3D99A28713554008A0E2F /* vline.png */, + B3B3D99B28713554008A0E2F /* branch-end.png */, + B3B3D99C28713554008A0E2F /* tv-not-found-non-essential.ico */, + B3B3D99D28713554008A0E2F /* checked.png */, + B3B3D99E28713554008A0E2F /* dark-flat-bg.png */, + B3B3D99F28713554008A0E2F /* about.bmp */, + B3B3D9A028713554008A0E2F /* up_arrow.png */, + B3B3D9A128713554008A0E2F /* dark-flat.css */, + B3B3D9A228713554008A0E2F /* branch-more.png */, + B3B3D9A328713554008A0E2F /* branch-open.png */, + B3B3D9A428713554008A0E2F /* tv-not-working.ico */, + ); + path = resource; + sourceTree = ""; + }; + B3B3D9AC28713554008A0E2F /* widgets */ = { + isa = PBXGroup; + children = ( + B3B3D9AD28713554008A0E2F /* hexspinbox.h */, + B3B3D9AE28713554008A0E2F /* hexspinbox.cpp */, + ); + path = widgets; + sourceTree = ""; + }; + B3B3D9B328713554008A0E2F /* pi */ = { + isa = PBXGroup; + children = ( + B3B3D9B428713554008A0E2F /* run_pi.cpp */, + B3B3D9B528713554008A0E2F /* main_pi.cpp */, + ); + path = pi; + sourceTree = ""; + }; + B3B3D9B728713554008A0E2F /* sdl */ = { + isa = PBXGroup; + children = ( + B3B3D9B828713554008A0E2F /* media.cpp */, + B3B3D9B928713554008A0E2F /* sdl2_inprint.cpp */, + B3B3D9BA28713554008A0E2F /* ips_manager.cpp */, + B3B3D9BB28713554008A0E2F /* sdl2_gui_ingame.cpp */, + B3B3D9BC28713554008A0E2F /* inpdipsw.cpp */, + B3B3D9BD28713554008A0E2F /* sdl2_inprint.h */, + B3B3D9BE28713554008A0E2F /* stringset.cpp */, + B3B3D9BF28713554008A0E2F /* input.cpp */, + B3B3D9C028713554008A0E2F /* sdl2_gui.h */, + B3B3D9C128713554008A0E2F /* neocdlist.cpp */, + B3B3D9C228713554008A0E2F /* run.cpp */, + B3B3D9C328713554008A0E2F /* scrn.cpp */, + B3B3D9C428713554008A0E2F /* drv.cpp */, + B3B3D9C528713554008A0E2F /* bzip.cpp */, + B3B3D9C628713554008A0E2F /* sdl2_gui_common.cpp */, + B3B3D9C728713554008A0E2F /* misc_image.h */, + B3B3D9C828713554008A0E2F /* input_sdl2.cpp */, + B3B3D9C928713554008A0E2F /* support_paths.cpp */, + B3B3D9CA28713554008A0E2F /* config.cpp */, + B3B3D9CB28713554008A0E2F /* sdl2_gui_common.h */, + B3B3D9CC28713554008A0E2F /* replay.cpp */, + B3B3D9CD28713554008A0E2F /* tchar.h */, + B3B3D9CE28713554008A0E2F /* stated.cpp */, + B3B3D9CF28713554008A0E2F /* main.cpp */, + B3B3D9D028713554008A0E2F /* burner_sdl.h */, + B3B3D9D128713554008A0E2F /* sdl2_gui.cpp */, + ); + path = sdl; + sourceTree = ""; + }; + B3B3D9DB28713554008A0E2F /* resource */ = { + isa = PBXGroup; + children = ( + B3B3D9DC28713554008A0E2F /* TV Not Found.ico */, + B3B3D9DD28713554008A0E2F /* splash.bmp */, + B3B3D9DE28713554008A0E2F /* misc.bmp */, + B3B3D9DF28713554008A0E2F /* TV Plus.ico */, + B3B3D9E028713554008A0E2F /* TV Minus.ico */, + B3B3D9E128713554008A0E2F /* manifest.xml */, + B3B3D9E228713554008A0E2F /* about.bmp */, + B3B3D9E328713554008A0E2F /* fba.ico */, + B3B3D9E428713554008A0E2F /* TV Not Working.ico */, + B3B3D9E528713554008A0E2F /* TV Not Found Non Essential.ico */, + ); + path = resource; + sourceTree = ""; + }; + B3B3D9E628713554008A0E2F /* win32 */ = { + isa = PBXGroup; + children = ( + B3B3D9E728713554008A0E2F /* media.cpp */, + B3B3D9E828713554008A0E2F /* localise.cpp */, + B3B3D9E928713554008A0E2F /* about.cpp */, + B3B3D9EA28713554008A0E2F /* paletteviewer.cpp */, + B3B3D9EB28713554008A0E2F /* ips_manager.cpp */, + B3B3D9EC28713554008A0E2F /* fba_kaillera.cpp */, + B3B3D9ED28713554008A0E2F /* inpdipsw.cpp */, + B3B3D9EE28713554008A0E2F /* sfactd.cpp */, + B3B3D9EF28713554008A0E2F /* choose_monitor.cpp */, + B3B3D9F028713554008A0E2F /* neocdsel.cpp */, + B3B3D9F128713554008A0E2F /* res.cpp */, + B3B3D9F228713554008A0E2F /* memcard.cpp */, + B3B3D9F328713554008A0E2F /* resource_string.h */, + B3B3D9F428713554008A0E2F /* burner_win32.h */, + B3B3D9F528713554008A0E2F /* string.rc */, + B3B3D9F628713554008A0E2F /* luaconsole.cpp */, + B3B3D9F728713554008A0E2F /* avi.cpp */, + B3B3D9F828713554008A0E2F /* gameinfo.cpp */, + B3B3D9F928713554008A0E2F /* neocdlist.cpp */, + B3B3D9FA28713554008A0E2F /* wave.cpp */, + B3B3D9FB28713554008A0E2F /* app.rc */, + B3B3D9FC28713554008A0E2F /* menu.cpp */, + B3B3D9FD28713554008A0E2F /* splash.cpp */, + B3B3D9FE28713554008A0E2F /* image_win32.cpp */, + B3B3D9FF28713554008A0E2F /* run.cpp */, + B3B3DA0028713554008A0E2F /* popup_win32.cpp */, + B3B3DA0128713554008A0E2F /* placeholder.cpp */, + B3B3DA0228713554008A0E2F /* scrn.cpp */, + B3B3DA0328713554008A0E2F /* localise_gamelist.cpp */, + B3B3DA0428713554008A0E2F /* misc_win32.cpp */, + B3B3DA0528713554008A0E2F /* drv.cpp */, + B3B3DA0628713554008A0E2F /* bzip.cpp */, + B3B3DA0728713554008A0E2F /* numdial.cpp */, + B3B3DA0828713554008A0E2F /* d3dkmt_sync.h */, + B3B3DA0928713554008A0E2F /* systeminfo.cpp */, + B3B3DA0A28713554008A0E2F /* roms.cpp */, + B3B3DA0B28713554008A0E2F /* inpcheat.cpp */, + B3B3DA0C28713554008A0E2F /* d3dkmt_sync.cpp */, + B3B3DA0D28713554008A0E2F /* resource.rc */, + B3B3DA0E28713554008A0E2F /* support_paths.cpp */, + B3B3DA0F28713554008A0E2F /* resource.h */, + B3B3DA1028713554008A0E2F /* cona.cpp */, + B3B3DA1128713554008A0E2F /* debugger.cpp */, + B3B3DA1228713554008A0E2F /* localise_download.cpp */, + B3B3DA1328713554008A0E2F /* sel.cpp */, + B3B3DA1428713554008A0E2F /* progress.cpp */, + B3B3DA1528713554008A0E2F /* inpc.cpp */, + B3B3DA1628713554008A0E2F /* version.rc */, + B3B3DA1728713554008A0E2F /* replay.cpp */, + B3B3DA1828713554008A0E2F /* stated.cpp */, + B3B3DA1928713554008A0E2F /* main.cpp */, + B3B3DA1A28713554008A0E2F /* inps.cpp */, + B3B3DA1B28713554008A0E2F /* inpd.cpp */, + ); + path = win32; + sourceTree = ""; + }; + B3B3DA24287136A0008A0E2F /* PVFBNeoCore */ = { + isa = PBXGroup; + children = ( + B3B3DA25287136A0008A0E2F /* PVFBNeoCore.h */, + B3B3DA26287136A0008A0E2F /* PVFBNeoCore.mm */, + ); + path = PVFBNeoCore; + sourceTree = ""; + }; + B3B3DBCD2871408D008A0E2F /* libretro */ = { + isa = PBXGroup; + children = ( + B3B3DBD12871408D008A0E2F /* Makefile */, + B3B3DBD32871408D008A0E2F /* ugui_tools.c */, + B3B3DBD52871408D008A0E2F /* Makefile.common */, + B3B3DDCB2871408F008A0E2F /* libretro.cpp */, + B3B3DDCE2871408F008A0E2F /* retro_cdemu.cpp */, + B3B3DBD72871408D008A0E2F /* retro_common.cpp */, + B3B3DBCE2871408D008A0E2F /* retro_input.cpp */, + B3B3DBD92871408D008A0E2F /* retro_memory.cpp */, + B3B3DDCC2871408F008A0E2F /* burner_libretro.h */, + B3B3DBCF2871408D008A0E2F /* net.h */, + B3B3DBD42871408D008A0E2F /* retro_cdemu.h */, + B3B3DBDA2871408D008A0E2F /* retro_common.h */, + B3B3DBD02871408D008A0E2F /* retro_input.h */, + B3B3DBD82871408D008A0E2F /* retro_memory.h */, + B3B3DDD22871408F008A0E2F /* tchar.h */, + B3B3DDD32871408F008A0E2F /* ugui_tools.h */, + B3B3DBD62871408D008A0E2F /* README.md */, + B3B3DBD22871408D008A0E2F /* Makefile.neogeo */, + B3B3DDCD2871408F008A0E2F /* link.T */, + B3B3DDC42871408F008A0E2F /* deps */, + B3B3DDCF2871408F008A0E2F /* jni */, + B3B3DBDB2871408D008A0E2F /* libretro-common */, + ); + path = libretro; + sourceTree = ""; + }; + B3B3DBDB2871408D008A0E2F /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3B3DBDC2871408D008A0E2F /* encodings */, + B3B3DBE02871408D008A0E2F /* vfs */, + B3B3DBE42871408D008A0E2F /* cdrom */, + B3B3DBE62871408D008A0E2F /* compat */, + B3B3DBF02871408D008A0E2F /* playlists */, + B3B3DBF22871408D008A0E2F /* dynamic */, + B3B3DBF42871408D008A0E2F /* net */, + B3B3DBFD2871408D008A0E2F /* Makefile.test */, + B3B3DBFE2871408D008A0E2F /* formats */, + B3B3DC262871408D008A0E2F /* test */, + B3B3DC312871408D008A0E2F /* glsym */, + B3B3DC3A2871408D008A0E2F /* lists */, + B3B3DC412871408D008A0E2F /* file */, + B3B3DC512871408D008A0E2F /* hash */, + B3B3DC532871408D008A0E2F /* streams */, + B3B3DC5E2871408D008A0E2F /* include */, + B3B3DD172871408E008A0E2F /* features */, + B3B3DD192871408E008A0E2F /* utils */, + B3B3DD1F2871408E008A0E2F /* memmap */, + B3B3DD222871408E008A0E2F /* time */, + B3B3DD242871408E008A0E2F /* samples */, + B3B3DD5F2871408E008A0E2F /* glsm */, + B3B3DD612871408E008A0E2F /* audio */, + B3B3DD962871408F008A0E2F /* rthreads */, + B3B3DD9E2871408F008A0E2F /* .gitignore */, + B3B3DD9F2871408F008A0E2F /* vulkan */, + B3B3DDA12871408F008A0E2F /* queues */, + B3B3DDA62871408F008A0E2F /* string */, + B3B3DDA82871408F008A0E2F /* crt */, + B3B3DDAC2871408F008A0E2F /* gfx */, + B3B3DDB32871408F008A0E2F /* libco */, + B3B3DDC22871408F008A0E2F /* media */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3B3DBDC2871408D008A0E2F /* encodings */ = { + isa = PBXGroup; + children = ( + B3B3DBDD2871408D008A0E2F /* encoding_base64.c */, + B3B3DBDE2871408D008A0E2F /* encoding_crc32.c */, + B3B3DBDF2871408D008A0E2F /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3B3DBE02871408D008A0E2F /* vfs */ = { + isa = PBXGroup; + children = ( + B3B3DBE12871408D008A0E2F /* vfs_implementation.c */, + B3B3DBE22871408D008A0E2F /* vfs_implementation_cdrom.c */, + B3B3DBE32871408D008A0E2F /* vfs_implementation_uwp.cpp */, + ); + path = vfs; + sourceTree = ""; + }; + B3B3DBE42871408D008A0E2F /* cdrom */ = { + isa = PBXGroup; + children = ( + B3B3DBE52871408D008A0E2F /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3B3DBE62871408D008A0E2F /* compat */ = { + isa = PBXGroup; + children = ( + B3B3DBE72871408D008A0E2F /* compat_ifaddrs.c */, + B3B3DBE82871408D008A0E2F /* compat_strl.c */, + B3B3DBE92871408D008A0E2F /* compat_posix_string.c */, + B3B3DBEA2871408D008A0E2F /* compat_strcasestr.c */, + B3B3DBEB2871408D008A0E2F /* compat_snprintf.c */, + B3B3DBEC2871408D008A0E2F /* compat_getopt.c */, + B3B3DBED2871408D008A0E2F /* compat_fnmatch.c */, + B3B3DBEE2871408D008A0E2F /* fopen_utf8.c */, + B3B3DBEF2871408D008A0E2F /* compat_vscprintf.c */, + ); + path = compat; + sourceTree = ""; + }; + B3B3DBF02871408D008A0E2F /* playlists */ = { + isa = PBXGroup; + children = ( + B3B3DBF12871408D008A0E2F /* label_sanitization.c */, + ); + path = playlists; + sourceTree = ""; + }; + B3B3DBF22871408D008A0E2F /* dynamic */ = { + isa = PBXGroup; + children = ( + B3B3DBF32871408D008A0E2F /* dylib.c */, + ); + path = dynamic; + sourceTree = ""; + }; + B3B3DBF42871408D008A0E2F /* net */ = { + isa = PBXGroup; + children = ( + B3B3DBF52871408D008A0E2F /* net_natt.c */, + B3B3DBF62871408D008A0E2F /* net_socket_ssl_mbed.c */, + B3B3DBF72871408D008A0E2F /* net_http.c */, + B3B3DBF82871408D008A0E2F /* net_http_parse.c */, + B3B3DBF92871408D008A0E2F /* net_ifinfo.c */, + B3B3DBFA2871408D008A0E2F /* net_compat.c */, + B3B3DBFB2871408D008A0E2F /* net_socket_ssl_bear.c */, + B3B3DBFC2871408D008A0E2F /* net_socket.c */, + ); + path = net; + sourceTree = ""; + }; + B3B3DBFE2871408D008A0E2F /* formats */ = { + isa = PBXGroup; + children = ( + B3B3DBFF2871408D008A0E2F /* wav */, + B3B3DC012871408D008A0E2F /* m3u */, + B3B3DC032871408D008A0E2F /* libchdr */, + B3B3DC0C2871408D008A0E2F /* image_texture.c */, + B3B3DC0D2871408D008A0E2F /* tga */, + B3B3DC0F2871408D008A0E2F /* png */, + B3B3DC132871408D008A0E2F /* xml */, + B3B3DC182871408D008A0E2F /* json */, + B3B3DC1C2871408D008A0E2F /* logiqx_dat */, + B3B3DC1E2871408D008A0E2F /* cdfs */, + B3B3DC202871408D008A0E2F /* jpeg */, + B3B3DC222871408D008A0E2F /* bmp */, + B3B3DC252871408D008A0E2F /* image_transfer.c */, + ); + path = formats; + sourceTree = ""; + }; + B3B3DBFF2871408D008A0E2F /* wav */ = { + isa = PBXGroup; + children = ( + B3B3DC002871408D008A0E2F /* rwav.c */, + ); + path = wav; + sourceTree = ""; + }; + B3B3DC012871408D008A0E2F /* m3u */ = { + isa = PBXGroup; + children = ( + B3B3DC022871408D008A0E2F /* m3u_file.c */, + ); + path = m3u; + sourceTree = ""; + }; + B3B3DC032871408D008A0E2F /* libchdr */ = { + isa = PBXGroup; + children = ( + B3B3DC042871408D008A0E2F /* libchdr_chd.c */, + B3B3DC052871408D008A0E2F /* libchdr_zlib.c */, + B3B3DC062871408D008A0E2F /* libchdr_bitstream.c */, + B3B3DC072871408D008A0E2F /* libchdr_huffman.c */, + B3B3DC082871408D008A0E2F /* libchdr_flac.c */, + B3B3DC092871408D008A0E2F /* libchdr_flac_codec.c */, + B3B3DC0A2871408D008A0E2F /* libchdr_cdrom.c */, + B3B3DC0B2871408D008A0E2F /* libchdr_lzma.c */, + ); + path = libchdr; + sourceTree = ""; + }; + B3B3DC0D2871408D008A0E2F /* tga */ = { + isa = PBXGroup; + children = ( + B3B3DC0E2871408D008A0E2F /* rtga.c */, + ); + path = tga; + sourceTree = ""; + }; + B3B3DC0F2871408D008A0E2F /* png */ = { + isa = PBXGroup; + children = ( + B3B3DC102871408D008A0E2F /* rpng.c */, + B3B3DC112871408D008A0E2F /* rpng_internal.h */, + B3B3DC122871408D008A0E2F /* rpng_encode.c */, + ); + path = png; + sourceTree = ""; + }; + B3B3DC132871408D008A0E2F /* xml */ = { + isa = PBXGroup; + children = ( + B3B3DC142871408D008A0E2F /* test */, + B3B3DC172871408D008A0E2F /* rxml.c */, + ); + path = xml; + sourceTree = ""; + }; + B3B3DC142871408D008A0E2F /* test */ = { + isa = PBXGroup; + children = ( + B3B3DC152871408D008A0E2F /* Makefile */, + B3B3DC162871408D008A0E2F /* rxml_test.c */, + ); + path = test; + sourceTree = ""; + }; + B3B3DC182871408D008A0E2F /* json */ = { + isa = PBXGroup; + children = ( + B3B3DC192871408D008A0E2F /* jsonsax_full.c */, + B3B3DC1A2871408D008A0E2F /* rjson.c */, + B3B3DC1B2871408D008A0E2F /* jsonsax.c */, + ); + path = json; + sourceTree = ""; + }; + B3B3DC1C2871408D008A0E2F /* logiqx_dat */ = { + isa = PBXGroup; + children = ( + B3B3DC1D2871408D008A0E2F /* logiqx_dat.c */, + ); + path = logiqx_dat; + sourceTree = ""; + }; + B3B3DC1E2871408D008A0E2F /* cdfs */ = { + isa = PBXGroup; + children = ( + B3B3DC1F2871408D008A0E2F /* cdfs.c */, + ); + path = cdfs; + sourceTree = ""; + }; + B3B3DC202871408D008A0E2F /* jpeg */ = { + isa = PBXGroup; + children = ( + B3B3DC212871408D008A0E2F /* rjpeg.c */, + ); + path = jpeg; + sourceTree = ""; + }; + B3B3DC222871408D008A0E2F /* bmp */ = { + isa = PBXGroup; + children = ( + B3B3DC232871408D008A0E2F /* rbmp_encode.c */, + B3B3DC242871408D008A0E2F /* rbmp.c */, + ); + path = bmp; + sourceTree = ""; + }; + B3B3DC262871408D008A0E2F /* test */ = { + isa = PBXGroup; + children = ( + B3B3DC272871408D008A0E2F /* lists */, + B3B3DC292871408D008A0E2F /* hash */, + B3B3DC2B2871408D008A0E2F /* utils */, + B3B3DC2D2871408D008A0E2F /* queues */, + B3B3DC2F2871408D008A0E2F /* string */, + ); + path = test; + sourceTree = ""; + }; + B3B3DC272871408D008A0E2F /* lists */ = { + isa = PBXGroup; + children = ( + B3B3DC282871408D008A0E2F /* test_linked_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3B3DC292871408D008A0E2F /* hash */ = { + isa = PBXGroup; + children = ( + B3B3DC2A2871408D008A0E2F /* test_hash.c */, + ); + path = hash; + sourceTree = ""; + }; + B3B3DC2B2871408D008A0E2F /* utils */ = { + isa = PBXGroup; + children = ( + B3B3DC2C2871408D008A0E2F /* test_utils.c */, + ); + path = utils; + sourceTree = ""; + }; + B3B3DC2D2871408D008A0E2F /* queues */ = { + isa = PBXGroup; + children = ( + B3B3DC2E2871408D008A0E2F /* test_generic_queue.c */, + ); + path = queues; + sourceTree = ""; + }; + B3B3DC2F2871408D008A0E2F /* string */ = { + isa = PBXGroup; + children = ( + B3B3DC302871408D008A0E2F /* test_stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3B3DC312871408D008A0E2F /* glsym */ = { + isa = PBXGroup; + children = ( + B3B3DC322871408D008A0E2F /* glsym_es3.c */, + B3B3DC332871408D008A0E2F /* glsym_gl.c */, + B3B3DC342871408D008A0E2F /* README.md */, + B3B3DC352871408D008A0E2F /* glsym_es2.c */, + B3B3DC362871408D008A0E2F /* rglgen.c */, + B3B3DC372871408D008A0E2F /* glgen.py */, + B3B3DC382871408D008A0E2F /* xglgen.py */, + B3B3DC392871408D008A0E2F /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B3B3DC3A2871408D008A0E2F /* lists */ = { + isa = PBXGroup; + children = ( + B3B3DC3B2871408D008A0E2F /* nested_list.c */, + B3B3DC3C2871408D008A0E2F /* dir_list.c */, + B3B3DC3D2871408D008A0E2F /* vector_list.c */, + B3B3DC3E2871408D008A0E2F /* string_list.c */, + B3B3DC3F2871408D008A0E2F /* linked_list.c */, + B3B3DC402871408D008A0E2F /* file_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3B3DC412871408D008A0E2F /* file */ = { + isa = PBXGroup; + children = ( + B3B3DC422871408D008A0E2F /* file_path_io.c */, + B3B3DC432871408D008A0E2F /* file_path.c */, + B3B3DC442871408D008A0E2F /* config_file_userdata.c */, + B3B3DC452871408D008A0E2F /* nbio */, + B3B3DC4C2871408D008A0E2F /* archive_file_7z.c */, + B3B3DC4D2871408D008A0E2F /* archive_file_zlib.c */, + B3B3DC4E2871408D008A0E2F /* config_file.c */, + B3B3DC4F2871408D008A0E2F /* retro_dirent.c */, + B3B3DC502871408D008A0E2F /* archive_file.c */, + ); + path = file; + sourceTree = ""; + }; + B3B3DC452871408D008A0E2F /* nbio */ = { + isa = PBXGroup; + children = ( + B3B3DC462871408D008A0E2F /* nbio_unixmmap.c */, + B3B3DC472871408D008A0E2F /* nbio_linux.c */, + B3B3DC482871408D008A0E2F /* nbio_orbis.c */, + B3B3DC492871408D008A0E2F /* nbio_windowsmmap.c */, + B3B3DC4A2871408D008A0E2F /* nbio_intf.c */, + B3B3DC4B2871408D008A0E2F /* nbio_stdio.c */, + ); + path = nbio; + sourceTree = ""; + }; + B3B3DC512871408D008A0E2F /* hash */ = { + isa = PBXGroup; + children = ( + B3B3DC522871408D008A0E2F /* lrc_hash.c */, + ); + path = hash; + sourceTree = ""; + }; + B3B3DC532871408D008A0E2F /* streams */ = { + isa = PBXGroup; + children = ( + B3B3DC542871408D008A0E2F /* stdin_stream.c */, + B3B3DC552871408D008A0E2F /* file_stream_transforms.c */, + B3B3DC562871408D008A0E2F /* trans_stream_zlib.c */, + B3B3DC572871408D008A0E2F /* interface_stream.c */, + B3B3DC582871408D008A0E2F /* trans_stream_pipe.c */, + B3B3DC592871408D008A0E2F /* memory_stream.c */, + B3B3DC5A2871408D008A0E2F /* chd_stream.c */, + B3B3DC5B2871408D008A0E2F /* trans_stream.c */, + B3B3DC5C2871408D008A0E2F /* file_stream.c */, + B3B3DC5D2871408D008A0E2F /* rzip_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3B3DC5E2871408D008A0E2F /* include */ = { + isa = PBXGroup; + children = ( + B3B3DC5F2871408D008A0E2F /* encodings */, + B3B3DC642871408D008A0E2F /* memalign.h */, + B3B3DC652871408D008A0E2F /* libretro_dspfilter.h */, + B3B3DC662871408D008A0E2F /* vfs */, + B3B3DC6A2871408D008A0E2F /* cdrom */, + B3B3DC6C2871408D008A0E2F /* libco.h */, + B3B3DC6D2871408D008A0E2F /* compat */, + B3B3DC832871408E008A0E2F /* retro_common_api.h */, + B3B3DC842871408E008A0E2F /* playlists */, + B3B3DC862871408E008A0E2F /* dynamic */, + B3B3DC882871408E008A0E2F /* net */, + B3B3DC902871408E008A0E2F /* retro_timers.h */, + B3B3DC912871408E008A0E2F /* formats */, + B3B3DC9F2871408E008A0E2F /* glsym */, + B3B3DCAA2871408E008A0E2F /* lists */, + B3B3DCB02871408E008A0E2F /* file */, + B3B3DCB62871408E008A0E2F /* retro_environment.h */, + B3B3DCB72871408E008A0E2F /* array */, + B3B3DCBA2871408E008A0E2F /* retro_dirent.h */, + B3B3DCBB2871408E008A0E2F /* retro_inline.h */, + B3B3DCBC2871408E008A0E2F /* retro_math.h */, + B3B3DCBD2871408E008A0E2F /* streams */, + B3B3DCC62871408E008A0E2F /* fastcpy.h */, + B3B3DCC72871408E008A0E2F /* libchdr */, + B3B3DCD12871408E008A0E2F /* features */, + B3B3DCD32871408E008A0E2F /* lrc_hash.h */, + B3B3DCD42871408E008A0E2F /* utils */, + B3B3DCD62871408E008A0E2F /* retro_miscellaneous.h */, + B3B3DCD72871408E008A0E2F /* clamping.h */, + B3B3DCD82871408E008A0E2F /* math */, + B3B3DCDC2871408E008A0E2F /* time */, + B3B3DCDE2871408E008A0E2F /* defines */, + B3B3DCE42871408E008A0E2F /* boolean.h */, + B3B3DCE52871408E008A0E2F /* libretro_gskit_ps2.h */, + B3B3DCE62871408E008A0E2F /* glsm */, + B3B3DCE92871408E008A0E2F /* audio */, + B3B3DCF12871408E008A0E2F /* memmap.h */, + B3B3DCF22871408E008A0E2F /* rthreads */, + B3B3DCF62871408E008A0E2F /* libretro.h */, + B3B3DCF72871408E008A0E2F /* vulkan */, + B3B3DCF92871408E008A0E2F /* retro_stat.h */, + B3B3DCFA2871408E008A0E2F /* retro_common.h */, + B3B3DCFB2871408E008A0E2F /* queues */, + B3B3DD002871408E008A0E2F /* retro_assert.h */, + B3B3DD012871408E008A0E2F /* string */, + B3B3DD032871408E008A0E2F /* libretro_d3d.h */, + B3B3DD042871408E008A0E2F /* libretro_vulkan.h */, + B3B3DD052871408E008A0E2F /* gfx */, + B3B3DD132871408E008A0E2F /* retro_endianness.h */, + B3B3DD142871408E008A0E2F /* filters.h */, + B3B3DD152871408E008A0E2F /* media */, + ); + path = include; + sourceTree = ""; + }; + B3B3DC5F2871408D008A0E2F /* encodings */ = { + isa = PBXGroup; + children = ( + B3B3DC602871408D008A0E2F /* base64.h */, + B3B3DC612871408D008A0E2F /* utf.h */, + B3B3DC622871408D008A0E2F /* win32.h */, + B3B3DC632871408D008A0E2F /* crc32.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3B3DC662871408D008A0E2F /* vfs */ = { + isa = PBXGroup; + children = ( + B3B3DC672871408D008A0E2F /* vfs.h */, + B3B3DC682871408D008A0E2F /* vfs_implementation.h */, + B3B3DC692871408D008A0E2F /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3B3DC6A2871408D008A0E2F /* cdrom */ = { + isa = PBXGroup; + children = ( + B3B3DC6B2871408D008A0E2F /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3B3DC6D2871408D008A0E2F /* compat */ = { + isa = PBXGroup; + children = ( + B3B3DC6E2871408D008A0E2F /* apple_compat.h */, + B3B3DC6F2871408D008A0E2F /* zutil.h */, + B3B3DC702871408D008A0E2F /* strl.h */, + B3B3DC712871408D008A0E2F /* strcasestr.h */, + B3B3DC722871408D008A0E2F /* msvc */, + B3B3DC742871408D008A0E2F /* fopen_utf8.h */, + B3B3DC752871408D008A0E2F /* zconf.h.in */, + B3B3DC762871408E008A0E2F /* intrinsics.h */, + B3B3DC772871408E008A0E2F /* posix_string.h */, + B3B3DC782871408E008A0E2F /* zlib */, + B3B3DC7D2871408E008A0E2F /* getopt.h */, + B3B3DC7E2871408E008A0E2F /* fnmatch.h */, + B3B3DC7F2871408E008A0E2F /* msvc.h */, + B3B3DC802871408E008A0E2F /* zlib.h */, + B3B3DC812871408E008A0E2F /* ifaddrs.h */, + B3B3DC822871408E008A0E2F /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B3B3DC722871408D008A0E2F /* msvc */ = { + isa = PBXGroup; + children = ( + B3B3DC732871408D008A0E2F /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3B3DC782871408E008A0E2F /* zlib */ = { + isa = PBXGroup; + children = ( + B3B3DC792871408E008A0E2F /* zutil.h */, + B3B3DC7A2871408E008A0E2F /* zconf.h.in */, + B3B3DC7B2871408E008A0E2F /* zlib.h */, + B3B3DC7C2871408E008A0E2F /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B3B3DC842871408E008A0E2F /* playlists */ = { + isa = PBXGroup; + children = ( + B3B3DC852871408E008A0E2F /* label_sanitization.h */, + ); + path = playlists; + sourceTree = ""; + }; + B3B3DC862871408E008A0E2F /* dynamic */ = { + isa = PBXGroup; + children = ( + B3B3DC872871408E008A0E2F /* dylib.h */, + ); + path = dynamic; + sourceTree = ""; + }; + B3B3DC882871408E008A0E2F /* net */ = { + isa = PBXGroup; + children = ( + B3B3DC892871408E008A0E2F /* net_ifinfo.h */, + B3B3DC8A2871408E008A0E2F /* net_compat.h */, + B3B3DC8B2871408E008A0E2F /* net_socket.h */, + B3B3DC8C2871408E008A0E2F /* net_natt.h */, + B3B3DC8D2871408E008A0E2F /* net_socket_ssl.h */, + B3B3DC8E2871408E008A0E2F /* net_http.h */, + B3B3DC8F2871408E008A0E2F /* net_http_parse.h */, + ); + path = net; + sourceTree = ""; + }; + B3B3DC912871408E008A0E2F /* formats */ = { + isa = PBXGroup; + children = ( + B3B3DC922871408E008A0E2F /* m3u_file.h */, + B3B3DC932871408E008A0E2F /* jsonsax.h */, + B3B3DC942871408E008A0E2F /* rxml.h */, + B3B3DC952871408E008A0E2F /* cdfs.h */, + B3B3DC962871408E008A0E2F /* rpng.h */, + B3B3DC972871408E008A0E2F /* rtga.h */, + B3B3DC982871408E008A0E2F /* rjson.h */, + B3B3DC992871408E008A0E2F /* image.h */, + B3B3DC9A2871408E008A0E2F /* logiqx_dat.h */, + B3B3DC9B2871408E008A0E2F /* rbmp.h */, + B3B3DC9C2871408E008A0E2F /* rwav.h */, + B3B3DC9D2871408E008A0E2F /* jsonsax_full.h */, + B3B3DC9E2871408E008A0E2F /* rjpeg.h */, + ); + path = formats; + sourceTree = ""; + }; + B3B3DC9F2871408E008A0E2F /* glsym */ = { + isa = PBXGroup; + children = ( + B3B3DCA02871408E008A0E2F /* rglgen.h */, + B3B3DCA12871408E008A0E2F /* glsym_es2.h */, + B3B3DCA22871408E008A0E2F /* glsym.h */, + B3B3DCA32871408E008A0E2F /* rglgen_headers.h */, + B3B3DCA42871408E008A0E2F /* switch */, + B3B3DCA72871408E008A0E2F /* rglgen_private_headers.h */, + B3B3DCA82871408E008A0E2F /* glsym_es3.h */, + B3B3DCA92871408E008A0E2F /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B3B3DCA42871408E008A0E2F /* switch */ = { + isa = PBXGroup; + children = ( + B3B3DCA52871408E008A0E2F /* nx_gl.h */, + B3B3DCA62871408E008A0E2F /* nx_glsym.h */, + ); + path = switch; + sourceTree = ""; + }; + B3B3DCAA2871408E008A0E2F /* lists */ = { + isa = PBXGroup; + children = ( + B3B3DCAB2871408E008A0E2F /* string_list.h */, + B3B3DCAC2871408E008A0E2F /* linked_list.h */, + B3B3DCAD2871408E008A0E2F /* file_list.h */, + B3B3DCAE2871408E008A0E2F /* nested_list.h */, + B3B3DCAF2871408E008A0E2F /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3B3DCB02871408E008A0E2F /* file */ = { + isa = PBXGroup; + children = ( + B3B3DCB12871408E008A0E2F /* nbio.h */, + B3B3DCB22871408E008A0E2F /* config_file.h */, + B3B3DCB32871408E008A0E2F /* archive_file.h */, + B3B3DCB42871408E008A0E2F /* config_file_userdata.h */, + B3B3DCB52871408E008A0E2F /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3B3DCB72871408E008A0E2F /* array */ = { + isa = PBXGroup; + children = ( + B3B3DCB82871408E008A0E2F /* rhmap.h */, + B3B3DCB92871408E008A0E2F /* rbuf.h */, + ); + path = array; + sourceTree = ""; + }; + B3B3DCBD2871408E008A0E2F /* streams */ = { + isa = PBXGroup; + children = ( + B3B3DCBE2871408E008A0E2F /* memory_stream.h */, + B3B3DCBF2871408E008A0E2F /* chd_stream.h */, + B3B3DCC02871408E008A0E2F /* trans_stream.h */, + B3B3DCC12871408E008A0E2F /* rzip_stream.h */, + B3B3DCC22871408E008A0E2F /* file_stream.h */, + B3B3DCC32871408E008A0E2F /* stdin_stream.h */, + B3B3DCC42871408E008A0E2F /* file_stream_transforms.h */, + B3B3DCC52871408E008A0E2F /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3B3DCC72871408E008A0E2F /* libchdr */ = { + isa = PBXGroup; + children = ( + B3B3DCC82871408E008A0E2F /* lzma.h */, + B3B3DCC92871408E008A0E2F /* minmax.h */, + B3B3DCCA2871408E008A0E2F /* flac.h */, + B3B3DCCB2871408E008A0E2F /* bitstream.h */, + B3B3DCCC2871408E008A0E2F /* cdrom.h */, + B3B3DCCD2871408E008A0E2F /* chd.h */, + B3B3DCCE2871408E008A0E2F /* libchdr_zlib.h */, + B3B3DCCF2871408E008A0E2F /* huffman.h */, + B3B3DCD02871408E008A0E2F /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3B3DCD12871408E008A0E2F /* features */ = { + isa = PBXGroup; + children = ( + B3B3DCD22871408E008A0E2F /* features_cpu.h */, + ); + path = features; + sourceTree = ""; + }; + B3B3DCD42871408E008A0E2F /* utils */ = { + isa = PBXGroup; + children = ( + B3B3DCD52871408E008A0E2F /* md5.h */, + ); + path = utils; + sourceTree = ""; + }; + B3B3DCD82871408E008A0E2F /* math */ = { + isa = PBXGroup; + children = ( + B3B3DCD92871408E008A0E2F /* float_minmax.h */, + B3B3DCDA2871408E008A0E2F /* fxp.h */, + B3B3DCDB2871408E008A0E2F /* complex.h */, + ); + path = math; + sourceTree = ""; + }; + B3B3DCDC2871408E008A0E2F /* time */ = { + isa = PBXGroup; + children = ( + B3B3DCDD2871408E008A0E2F /* rtime.h */, + ); + path = time; + sourceTree = ""; + }; + B3B3DCDE2871408E008A0E2F /* defines */ = { + isa = PBXGroup; + children = ( + B3B3DCDF2871408E008A0E2F /* d3d_defines.h */, + B3B3DCE02871408E008A0E2F /* gx_defines.h */, + B3B3DCE12871408E008A0E2F /* cocoa_defines.h */, + B3B3DCE22871408E008A0E2F /* psp_defines.h */, + B3B3DCE32871408E008A0E2F /* ps3_defines.h */, + ); + path = defines; + sourceTree = ""; + }; + B3B3DCE62871408E008A0E2F /* glsm */ = { + isa = PBXGroup; + children = ( + B3B3DCE72871408E008A0E2F /* glsm.h */, + B3B3DCE82871408E008A0E2F /* glsmsym.h */, + ); + path = glsm; + sourceTree = ""; + }; + B3B3DCE92871408E008A0E2F /* audio */ = { + isa = PBXGroup; + children = ( + B3B3DCEA2871408E008A0E2F /* dsp_filter.h */, + B3B3DCEB2871408E008A0E2F /* audio_resampler.h */, + B3B3DCEC2871408E008A0E2F /* audio_mixer.h */, + B3B3DCED2871408E008A0E2F /* conversion */, + B3B3DCF02871408E008A0E2F /* audio_mix.h */, + ); + path = audio; + sourceTree = ""; + }; + B3B3DCED2871408E008A0E2F /* conversion */ = { + isa = PBXGroup; + children = ( + B3B3DCEE2871408E008A0E2F /* s16_to_float.h */, + B3B3DCEF2871408E008A0E2F /* float_to_s16.h */, + ); + path = conversion; + sourceTree = ""; + }; + B3B3DCF22871408E008A0E2F /* rthreads */ = { + isa = PBXGroup; + children = ( + B3B3DCF32871408E008A0E2F /* tpool.h */, + B3B3DCF42871408E008A0E2F /* rthreads.h */, + B3B3DCF52871408E008A0E2F /* async_job.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3B3DCF72871408E008A0E2F /* vulkan */ = { + isa = PBXGroup; + children = ( + B3B3DCF82871408E008A0E2F /* vulkan_symbol_wrapper.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B3B3DCFB2871408E008A0E2F /* queues */ = { + isa = PBXGroup; + children = ( + B3B3DCFC2871408E008A0E2F /* generic_queue.h */, + B3B3DCFD2871408E008A0E2F /* task_queue.h */, + B3B3DCFE2871408E008A0E2F /* fifo_queue.h */, + B3B3DCFF2871408E008A0E2F /* message_queue.h */, + ); + path = queues; + sourceTree = ""; + }; + B3B3DD012871408E008A0E2F /* string */ = { + isa = PBXGroup; + children = ( + B3B3DD022871408E008A0E2F /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3B3DD052871408E008A0E2F /* gfx */ = { + isa = PBXGroup; + children = ( + B3B3DD062871408E008A0E2F /* video_frame.h */, + B3B3DD072871408E008A0E2F /* math */, + B3B3DD0D2871408E008A0E2F /* scaler */, + B3B3DD122871408E008A0E2F /* gl_capabilities.h */, + ); + path = gfx; + sourceTree = ""; + }; + B3B3DD072871408E008A0E2F /* math */ = { + isa = PBXGroup; + children = ( + B3B3DD082871408E008A0E2F /* vector_4.h */, + B3B3DD092871408E008A0E2F /* vector_3.h */, + B3B3DD0A2871408E008A0E2F /* vector_2.h */, + B3B3DD0B2871408E008A0E2F /* matrix_3x3.h */, + B3B3DD0C2871408E008A0E2F /* matrix_4x4.h */, + ); + path = math; + sourceTree = ""; + }; + B3B3DD0D2871408E008A0E2F /* scaler */ = { + isa = PBXGroup; + children = ( + B3B3DD0E2871408E008A0E2F /* scaler.h */, + B3B3DD0F2871408E008A0E2F /* pixconv.h */, + B3B3DD102871408E008A0E2F /* scaler_int.h */, + B3B3DD112871408E008A0E2F /* filter.h */, + ); + path = scaler; + sourceTree = ""; + }; + B3B3DD152871408E008A0E2F /* media */ = { + isa = PBXGroup; + children = ( + B3B3DD162871408E008A0E2F /* media_detect_cd.h */, + ); + path = media; + sourceTree = ""; + }; + B3B3DD172871408E008A0E2F /* features */ = { + isa = PBXGroup; + children = ( + B3B3DD182871408E008A0E2F /* features_cpu.c */, + ); + path = features; + sourceTree = ""; + }; + B3B3DD192871408E008A0E2F /* utils */ = { + isa = PBXGroup; + children = ( + B3B3DD1A2871408E008A0E2F /* djb2.c */, + B3B3DD1B2871408E008A0E2F /* sha1.c */, + B3B3DD1C2871408E008A0E2F /* debugbreak */, + B3B3DD1E2871408E008A0E2F /* md5.c */, + ); + path = utils; + sourceTree = ""; + }; + B3B3DD1C2871408E008A0E2F /* debugbreak */ = { + isa = PBXGroup; + children = ( + B3B3DD1D2871408E008A0E2F /* debugbreak.c */, + ); + path = debugbreak; + sourceTree = ""; + }; + B3B3DD1F2871408E008A0E2F /* memmap */ = { + isa = PBXGroup; + children = ( + B3B3DD202871408E008A0E2F /* memmap.c */, + B3B3DD212871408E008A0E2F /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3B3DD222871408E008A0E2F /* time */ = { + isa = PBXGroup; + children = ( + B3B3DD232871408E008A0E2F /* rtime.c */, + ); + path = time; + sourceTree = ""; + }; + B3B3DD242871408E008A0E2F /* samples */ = { + isa = PBXGroup; + children = ( + B3B3DD252871408E008A0E2F /* core_options */, + B3B3DD362871408E008A0E2F /* compat */, + B3B3DD402871408E008A0E2F /* net */, + B3B3DD482871408E008A0E2F /* formats */, + B3B3DD4F2871408E008A0E2F /* file */, + B3B3DD562871408E008A0E2F /* streams */, + B3B3DD5A2871408E008A0E2F /* utils */, + ); + path = samples; + sourceTree = ""; + }; + B3B3DD252871408E008A0E2F /* core_options */ = { + isa = PBXGroup; + children = ( + B3B3DD262871408E008A0E2F /* example_categories */, + B3B3DD2C2871408E008A0E2F /* example_default */, + B3B3DD2F2871408E008A0E2F /* README.md */, + B3B3DD302871408E008A0E2F /* example_hide_option */, + B3B3DD332871408E008A0E2F /* example_translation */, + ); + path = core_options; + sourceTree = ""; + }; + B3B3DD262871408E008A0E2F /* example_categories */ = { + isa = PBXGroup; + children = ( + B3B3DD272871408E008A0E2F /* conversion_scripts */, + B3B3DD2A2871408E008A0E2F /* libretro_core_options.h */, + B3B3DD2B2871408E008A0E2F /* libretro_core_options_intl.h */, + ); + path = example_categories; + sourceTree = ""; + }; + B3B3DD272871408E008A0E2F /* conversion_scripts */ = { + isa = PBXGroup; + children = ( + B3B3DD282871408E008A0E2F /* core_option_regex.py */, + B3B3DD292871408E008A0E2F /* v1_to_v2_converter.py */, + ); + path = conversion_scripts; + sourceTree = ""; + }; + B3B3DD2C2871408E008A0E2F /* example_default */ = { + isa = PBXGroup; + children = ( + B3B3DD2D2871408E008A0E2F /* libretro_core_options.h */, + B3B3DD2E2871408E008A0E2F /* libretro_core_options_intl.h */, + ); + path = example_default; + sourceTree = ""; + }; + B3B3DD302871408E008A0E2F /* example_hide_option */ = { + isa = PBXGroup; + children = ( + B3B3DD312871408E008A0E2F /* libretro_core_options.h */, + B3B3DD322871408E008A0E2F /* libretro_core_options_intl.h */, + ); + path = example_hide_option; + sourceTree = ""; + }; + B3B3DD332871408E008A0E2F /* example_translation */ = { + isa = PBXGroup; + children = ( + B3B3DD342871408E008A0E2F /* libretro_core_options.h */, + B3B3DD352871408E008A0E2F /* libretro_core_options_intl.h */, + ); + path = example_translation; + sourceTree = ""; + }; + B3B3DD362871408E008A0E2F /* compat */ = { + isa = PBXGroup; + children = ( + B3B3DD372871408E008A0E2F /* fnmatch */, + B3B3DD3A2871408E008A0E2F /* strl */, + B3B3DD3D2871408E008A0E2F /* snprintf */, + ); + path = compat; + sourceTree = ""; + }; + B3B3DD372871408E008A0E2F /* fnmatch */ = { + isa = PBXGroup; + children = ( + B3B3DD382871408E008A0E2F /* compat_fnmatch_test.c */, + B3B3DD392871408E008A0E2F /* Makefile */, + ); + path = fnmatch; + sourceTree = ""; + }; + B3B3DD3A2871408E008A0E2F /* strl */ = { + isa = PBXGroup; + children = ( + B3B3DD3B2871408E008A0E2F /* strl_test.c */, + B3B3DD3C2871408E008A0E2F /* Makefile */, + ); + path = strl; + sourceTree = ""; + }; + B3B3DD3D2871408E008A0E2F /* snprintf */ = { + isa = PBXGroup; + children = ( + B3B3DD3E2871408E008A0E2F /* Makefile */, + B3B3DD3F2871408E008A0E2F /* snprintf_test.c */, + ); + path = snprintf; + sourceTree = ""; + }; + B3B3DD402871408E008A0E2F /* net */ = { + isa = PBXGroup; + children = ( + B3B3DD412871408E008A0E2F /* net_ifinfo_test.c */, + B3B3DD422871408E008A0E2F /* udp-test.c */, + B3B3DD432871408E008A0E2F /* Makefile */, + B3B3DD442871408E008A0E2F /* net_http_parse_test.c */, + B3B3DD452871408E008A0E2F /* net_ifinfo */, + B3B3DD462871408E008A0E2F /* http_test */, + B3B3DD472871408E008A0E2F /* net_http_test.c */, + ); + path = net; + sourceTree = ""; + }; + B3B3DD482871408E008A0E2F /* formats */ = { + isa = PBXGroup; + children = ( + B3B3DD492871408E008A0E2F /* png */, + B3B3DD4C2871408E008A0E2F /* xml */, + ); + path = formats; + sourceTree = ""; + }; + B3B3DD492871408E008A0E2F /* png */ = { + isa = PBXGroup; + children = ( + B3B3DD4A2871408E008A0E2F /* Makefile */, + B3B3DD4B2871408E008A0E2F /* rpng_test.c */, + ); + path = png; + sourceTree = ""; + }; + B3B3DD4C2871408E008A0E2F /* xml */ = { + isa = PBXGroup; + children = ( + B3B3DD4D2871408E008A0E2F /* Makefile */, + B3B3DD4E2871408E008A0E2F /* rxml_test.c */, + ); + path = xml; + sourceTree = ""; + }; + B3B3DD4F2871408E008A0E2F /* file */ = { + isa = PBXGroup; + children = ( + B3B3DD502871408E008A0E2F /* nbio */, + B3B3DD532871408E008A0E2F /* config_file */, + ); + path = file; + sourceTree = ""; + }; + B3B3DD502871408E008A0E2F /* nbio */ = { + isa = PBXGroup; + children = ( + B3B3DD512871408E008A0E2F /* Makefile */, + B3B3DD522871408E008A0E2F /* nbio_test.c */, + ); + path = nbio; + sourceTree = ""; + }; + B3B3DD532871408E008A0E2F /* config_file */ = { + isa = PBXGroup; + children = ( + B3B3DD542871408E008A0E2F /* config_file_test.c */, + B3B3DD552871408E008A0E2F /* Makefile */, + ); + path = config_file; + sourceTree = ""; + }; + B3B3DD562871408E008A0E2F /* streams */ = { + isa = PBXGroup; + children = ( + B3B3DD572871408E008A0E2F /* rzip */, + ); + path = streams; + sourceTree = ""; + }; + B3B3DD572871408E008A0E2F /* rzip */ = { + isa = PBXGroup; + children = ( + B3B3DD582871408E008A0E2F /* Makefile */, + B3B3DD592871408E008A0E2F /* rzip.c */, + ); + path = rzip; + sourceTree = ""; + }; + B3B3DD5A2871408E008A0E2F /* utils */ = { + isa = PBXGroup; + children = ( + B3B3DD5B2871408E008A0E2F /* Makefile */, + B3B3DD5C2871408E008A0E2F /* md5_test.c */, + B3B3DD5D2871408E008A0E2F /* crc32.c */, + B3B3DD5E2871408E008A0E2F /* sha1_main.c */, + ); + path = utils; + sourceTree = ""; + }; + B3B3DD5F2871408E008A0E2F /* glsm */ = { + isa = PBXGroup; + children = ( + B3B3DD602871408E008A0E2F /* glsm.c */, + ); + path = glsm; + sourceTree = ""; + }; + B3B3DD612871408E008A0E2F /* audio */ = { + isa = PBXGroup; + children = ( + B3B3DD622871408E008A0E2F /* dsp_filters */, + B3B3DD862871408E008A0E2F /* audio_mix.c */, + B3B3DD872871408E008A0E2F /* resampler */, + B3B3DD8D2871408F008A0E2F /* dsp_filter.c */, + B3B3DD8E2871408F008A0E2F /* conversion */, + B3B3DD952871408F008A0E2F /* audio_mixer.c */, + ); + path = audio; + sourceTree = ""; + }; + B3B3DD622871408E008A0E2F /* dsp_filters */ = { + isa = PBXGroup; + children = ( + B3B3DD632871408E008A0E2F /* eq.c */, + B3B3DD642871408E008A0E2F /* EQ.dsp */, + B3B3DD652871408E008A0E2F /* Vibrato.dsp */, + B3B3DD662871408E008A0E2F /* ChipTuneEnhance.dsp */, + B3B3DD672871408E008A0E2F /* phaser.c */, + B3B3DD682871408E008A0E2F /* Crystalizer.dsp */, + B3B3DD692871408E008A0E2F /* Mono.dsp */, + B3B3DD6A2871408E008A0E2F /* configure */, + B3B3DD6B2871408E008A0E2F /* Makefile */, + B3B3DD6C2871408E008A0E2F /* chorus.c */, + B3B3DD6D2871408E008A0E2F /* ChipTune-Lowpass.dsp */, + B3B3DD6E2871408E008A0E2F /* Phaser.dsp */, + B3B3DD6F2871408E008A0E2F /* wahwah.c */, + B3B3DD702871408E008A0E2F /* IIR.dsp */, + B3B3DD712871408E008A0E2F /* HighShelfDampen.dsp */, + B3B3DD722871408E008A0E2F /* EchoReverb.dsp */, + B3B3DD732871408E008A0E2F /* iir.c */, + B3B3DD742871408E008A0E2F /* reverb.c */, + B3B3DD752871408E008A0E2F /* crystalizer.c */, + B3B3DD762871408E008A0E2F /* WahWah.dsp */, + B3B3DD772871408E008A0E2F /* fft */, + B3B3DD7A2871408E008A0E2F /* link.T */, + B3B3DD7B2871408E008A0E2F /* BassBoost.dsp */, + B3B3DD7C2871408E008A0E2F /* vibrato.c */, + B3B3DD7D2871408E008A0E2F /* Echo.dsp */, + B3B3DD7E2871408E008A0E2F /* LowPassCPS.dsp */, + B3B3DD7F2871408E008A0E2F /* Panning.dsp */, + B3B3DD802871408E008A0E2F /* tremolo.c */, + B3B3DD812871408E008A0E2F /* panning.c */, + B3B3DD822871408E008A0E2F /* Chorus.dsp */, + B3B3DD832871408E008A0E2F /* Tremolo.dsp */, + B3B3DD842871408E008A0E2F /* Reverb.dsp */, + B3B3DD852871408E008A0E2F /* echo.c */, + ); + path = dsp_filters; + sourceTree = ""; + }; + B3B3DD772871408E008A0E2F /* fft */ = { + isa = PBXGroup; + children = ( + B3B3DD782871408E008A0E2F /* fft.h */, + B3B3DD792871408E008A0E2F /* fft.c */, + ); + path = fft; + sourceTree = ""; + }; + B3B3DD872871408E008A0E2F /* resampler */ = { + isa = PBXGroup; + children = ( + B3B3DD882871408E008A0E2F /* drivers */, + B3B3DD8C2871408F008A0E2F /* audio_resampler.c */, + ); + path = resampler; + sourceTree = ""; + }; + B3B3DD882871408E008A0E2F /* drivers */ = { + isa = PBXGroup; + children = ( + B3B3DD892871408E008A0E2F /* sinc_resampler.c */, + B3B3DD8A2871408F008A0E2F /* nearest_resampler.c */, + B3B3DD8B2871408F008A0E2F /* sinc_resampler_neon.S */, + ); + path = drivers; + sourceTree = ""; + }; + B3B3DD8E2871408F008A0E2F /* conversion */ = { + isa = PBXGroup; + children = ( + B3B3DD8F2871408F008A0E2F /* s16_to_float.c */, + B3B3DD902871408F008A0E2F /* float_to_s16_neon.c */, + B3B3DD912871408F008A0E2F /* s16_to_float_neon.c */, + B3B3DD922871408F008A0E2F /* float_to_s16.c */, + B3B3DD932871408F008A0E2F /* float_to_s16_neon.S */, + B3B3DD942871408F008A0E2F /* s16_to_float_neon.S */, + ); + path = conversion; + sourceTree = ""; + }; + B3B3DD962871408F008A0E2F /* rthreads */ = { + isa = PBXGroup; + children = ( + B3B3DD972871408F008A0E2F /* wiiu_pthread.h */, + B3B3DD982871408F008A0E2F /* rthreads.c */, + B3B3DD992871408F008A0E2F /* gx_pthread.h */, + B3B3DD9A2871408F008A0E2F /* psp_pthread.h */, + B3B3DD9B2871408F008A0E2F /* xenon_sdl_threads.c */, + B3B3DD9C2871408F008A0E2F /* ctr_pthread.h */, + B3B3DD9D2871408F008A0E2F /* tpool.c */, + ); + path = rthreads; + sourceTree = ""; + }; + B3B3DD9F2871408F008A0E2F /* vulkan */ = { + isa = PBXGroup; + children = ( + B3B3DDA02871408F008A0E2F /* vulkan_symbol_wrapper.c */, + ); + path = vulkan; + sourceTree = ""; + }; + B3B3DDA12871408F008A0E2F /* queues */ = { + isa = PBXGroup; + children = ( + B3B3DDA22871408F008A0E2F /* fifo_queue.c */, + B3B3DDA32871408F008A0E2F /* message_queue.c */, + B3B3DDA42871408F008A0E2F /* generic_queue.c */, + B3B3DDA52871408F008A0E2F /* task_queue.c */, + ); + path = queues; + sourceTree = ""; + }; + B3B3DDA62871408F008A0E2F /* string */ = { + isa = PBXGroup; + children = ( + B3B3DDA72871408F008A0E2F /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3B3DDA82871408F008A0E2F /* crt */ = { + isa = PBXGroup; + children = ( + B3B3DDA92871408F008A0E2F /* include */, + B3B3DDAB2871408F008A0E2F /* string.c */, + ); + path = crt; + sourceTree = ""; + }; + B3B3DDA92871408F008A0E2F /* include */ = { + isa = PBXGroup; + children = ( + B3B3DDAA2871408F008A0E2F /* string.h */, + ); + path = include; + sourceTree = ""; + }; + B3B3DDAC2871408F008A0E2F /* gfx */ = { + isa = PBXGroup; + children = ( + B3B3DDAD2871408F008A0E2F /* gl_capabilities.c */, + B3B3DDAE2871408F008A0E2F /* scaler */, + ); + path = gfx; + sourceTree = ""; + }; + B3B3DDAE2871408F008A0E2F /* scaler */ = { + isa = PBXGroup; + children = ( + B3B3DDAF2871408F008A0E2F /* scaler_int.c */, + B3B3DDB02871408F008A0E2F /* pixconv.c */, + B3B3DDB12871408F008A0E2F /* scaler_filter.c */, + B3B3DDB22871408F008A0E2F /* scaler.c */, + ); + path = scaler; + sourceTree = ""; + }; + B3B3DDB32871408F008A0E2F /* libco */ = { + isa = PBXGroup; + children = ( + B3B3DDB42871408F008A0E2F /* sjlj.c */, + B3B3DDB52871408F008A0E2F /* ps2.c */, + B3B3DDB62871408F008A0E2F /* ppc.c */, + B3B3DDB72871408F008A0E2F /* ucontext.c */, + B3B3DDB82871408F008A0E2F /* fiber.c */, + B3B3DDB92871408F008A0E2F /* aarch64.c */, + B3B3DDBA2871408F008A0E2F /* libco.c */, + B3B3DDBB2871408F008A0E2F /* scefiber.c */, + B3B3DDBC2871408F008A0E2F /* genode.cpp */, + B3B3DDBD2871408F008A0E2F /* armeabi.c */, + B3B3DDBE2871408F008A0E2F /* amd64.c */, + B3B3DDBF2871408F008A0E2F /* psp2.c */, + B3B3DDC02871408F008A0E2F /* x86.c */, + B3B3DDC12871408F008A0E2F /* psp1.c */, + ); + path = libco; + sourceTree = ""; + }; + B3B3DDC22871408F008A0E2F /* media */ = { + isa = PBXGroup; + children = ( + B3B3DDC32871408F008A0E2F /* media_detect_cd.c */, + ); + path = media; + sourceTree = ""; + }; + B3B3DDC42871408F008A0E2F /* deps */ = { + isa = PBXGroup; + children = ( + B3B3DDC52871408F008A0E2F /* ugui */, + ); + path = deps; + sourceTree = ""; + }; + B3B3DDC52871408F008A0E2F /* ugui */ = { + isa = PBXGroup; + children = ( + B3B3DDC62871408F008A0E2F /* LICENSE.md */, + B3B3DDC72871408F008A0E2F /* ugui.h */, + B3B3DDC82871408F008A0E2F /* README.md */, + B3B3DDC92871408F008A0E2F /* ugui.c */, + B3B3DDCA2871408F008A0E2F /* ugui_config.h */, + ); + path = ugui; + sourceTree = ""; + }; + B3B3DDCF2871408F008A0E2F /* jni */ = { + isa = PBXGroup; + children = ( + B3B3DDD02871408F008A0E2F /* Android.mk */, + B3B3DDD12871408F008A0E2F /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3B3D1772871354D008A0E2F /* FBNeo */, + B3B3DA24287136A0008A0E2F /* PVFBNeoCore */, + B3B3DBC828713D66008A0E2F /* PVFBNeo.h */, + B3B3DBC928713D66008A0E2F /* PVFBNeo-Prefix.pch */, + B3B3DBCA28713D66008A0E2F /* Core.plist */, + B3B3DBC728713D66008A0E2F /* Info.plist */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVFBNeo.framework */, + B30178D3207C901D0051B93D /* libfbneo.a */, + B3344BC32859E088006E6B3A /* libfbneo-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3B3DA27287136A0008A0E2F /* PVFBNeoCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* fbneo */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "fbneo" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = fbneo; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libfbneo.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* fbneo-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "fbneo-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "fbneo-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libfbneo-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVFBNeo */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFBNeo" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B3B3DE12287144D0008A0E2F /* PBXTargetDependency */, + B3B3DE15287144D0008A0E2F /* PBXTargetDependency */, + ); + name = PVFBNeo; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVFBNeo.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFBNeo" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B3B3D1852871354D008A0E2F /* Products */; + ProjectRef = B3B3D1842871354D008A0E2F /* Emulator.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVFBNeo */, + B3344B522859E088006E6B3A /* fbneo-libretro */, + B30178D2207C901D0051B93D /* fbneo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + B3B3DA2328713555008A0E2F /* FinalBurn Neo.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "FinalBurn Neo.app"; + remoteRef = B3B3DA2228713555008A0E2F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3B3DBCB28713EC0008A0E2F /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B322931D2878322B00585AD8 /* williams_adpcm.cpp in Sources */, + B32292212878322B00585AD8 /* d_dynduke.cpp in Sources */, + B3B3DADB28713BFA008A0E2F /* pce.cpp in Sources */, + B3B3DDEF28714491008A0E2F /* mcs51.cpp in Sources */, + B3B3DA42287136EC008A0E2F /* sknsspr.cpp in Sources */, + B3B3DB4428713C78008A0E2F /* d_rocnrope.cpp in Sources */, + B32293062878322B00585AD8 /* sf2mdt_snd.cpp in Sources */, + B32293522878322B00585AD8 /* d_arabian.cpp in Sources */, + B3B3DA6D287136EC008A0E2F /* midtcs.cpp in Sources */, + B3B3DA58287136EC008A0E2F /* x2212.cpp in Sources */, + B3B3DB2028713C77008A0E2F /* d_gbusters.cpp in Sources */, + B3B3DAE228713C21008A0E2F /* cps3snd.cpp in Sources */, + B3B3DB5428713C89008A0E2F /* d_m57.cpp in Sources */, + B32291EA2878322A00585AD8 /* williams_cvsd.cpp in Sources */, + B32292CE2878322B00585AD8 /* d_suprloco.cpp in Sources */, + B32292F02878322B00585AD8 /* d_supduck.cpp in Sources */, + B3B3DDF028714491008A0E2F /* z80ctc.cpp in Sources */, + B32291F12878322A00585AD8 /* d_donpachi.cpp in Sources */, + B3B3DAB928713711008A0E2F /* burn_ym2610.cpp in Sources */, + B322929D2878322B00585AD8 /* d_exedexes.cpp in Sources */, + B322929A2878322B00585AD8 /* d_pipedrm.cpp in Sources */, + B32291532878322A00585AD8 /* d_seibuspi.cpp in Sources */, + B322926D2878322B00585AD8 /* cchip.cpp in Sources */, + B3B3DB1528713C77008A0E2F /* d_mikie.cpp in Sources */, + B32291F52878322A00585AD8 /* d_dodonpachi.cpp in Sources */, + B3B3DAE928713C2A008A0E2F /* gal_stars.cpp in Sources */, + B32291DA2878322A00585AD8 /* d_twincobr.cpp in Sources */, + B32291BB2878322A00585AD8 /* d_timelimt.cpp in Sources */, + B32291A62878322A00585AD8 /* d_wallc.cpp in Sources */, + B3B3DB2528713C77008A0E2F /* k007452.cpp in Sources */, + B32292672878322B00585AD8 /* d_bagman.cpp in Sources */, + B32291E02878322A00585AD8 /* smspio.cpp in Sources */, + B3B3DAA728713710008A0E2F /* flower.cpp in Sources */, + B32292002878322A00585AD8 /* d_mcr3.cpp in Sources */, + B32292CC2878322B00585AD8 /* sega_315_5195.cpp in Sources */, + B32291C32878322A00585AD8 /* cpsrd.cpp in Sources */, + B3B3DAE328713C21008A0E2F /* d_cps3.cpp in Sources */, + B3B3DB6628713C9D008A0E2F /* d_dreambal.cpp in Sources */, + B3B3DBB828713CE3008A0E2F /* d_batman.cpp in Sources */, + B32293372878322B00585AD8 /* d_kangaroo.cpp in Sources */, + B3B3DA8828713710008A0E2F /* c140.cpp in Sources */, + B32291E42878322A00585AD8 /* d_tecmosys.cpp in Sources */, + B32291542878322A00585AD8 /* d_gstream.cpp in Sources */, + B32292A02878322B00585AD8 /* d_carjmbre.cpp in Sources */, + B322914C2878322A00585AD8 /* d_xorworld.cpp in Sources */, + B32291D92878322A00585AD8 /* d_raiden.cpp in Sources */, + B3B3DA6E287136EC008A0E2F /* eeprom.cpp in Sources */, + B3B3DB4C28713C78008A0E2F /* d_finalzr.cpp in Sources */, + B32292D22878322B00585AD8 /* d_batsugun.cpp in Sources */, + B3B3DDEA28714491008A0E2F /* tlcs900.cpp in Sources */, + B3B3DDF328714491008A0E2F /* z80.cpp in Sources */, + B32292872878322B00585AD8 /* d_safarir.cpp in Sources */, + B32291B22878322A00585AD8 /* smsrender.cpp in Sources */, + B3B3DB0E28713C77008A0E2F /* k053250.cpp in Sources */, + B3B3DA7428713710008A0E2F /* iremga20.cpp in Sources */, + B3B3DAAB28713710008A0E2F /* msm6295.cpp in Sources */, + B32292EF2878322B00585AD8 /* d_beaminv.cpp in Sources */, + B3B3DB3228713C77008A0E2F /* d_trackfld.cpp in Sources */, + B322922C2878322B00585AD8 /* d_darius2.cpp in Sources */, + B32291FE2878322A00585AD8 /* d_pass.cpp in Sources */, + B3B3DB7328713C9D008A0E2F /* d_metlclsh.cpp in Sources */, + B32292772878322B00585AD8 /* tc0110pcr.cpp in Sources */, + B3B3DA60287136EC008A0E2F /* midsg.cpp in Sources */, + B32292B02878322B00585AD8 /* d_popeye.cpp in Sources */, + B32291CD2878322A00585AD8 /* d_vfive.cpp in Sources */, + B3B3DAFD28713C77008A0E2F /* d_bishi.cpp in Sources */, + B322930F2878322B00585AD8 /* tc0640fio.cpp in Sources */, + B32293332878322B00585AD8 /* d_ddragon3.cpp in Sources */, + B32291B12878322A00585AD8 /* d_nitedrvr.cpp in Sources */, + B32291AC2878322A00585AD8 /* d_pbaction.cpp in Sources */, + B322924B2878322B00585AD8 /* d_magmax.cpp in Sources */, + B32291EC2878322A00585AD8 /* d_bzone.cpp in Sources */, + B32291E92878322A00585AD8 /* d_korokoro.cpp in Sources */, + B3B3DAFB28713C52008A0E2F /* d_mdarcbl.cpp in Sources */, + B322919A2878322A00585AD8 /* d_mitchell.cpp in Sources */, + B32293762878322B00585AD8 /* d_mrjong.cpp in Sources */, + B322924D2878322B00585AD8 /* d_supridr.cpp in Sources */, + B32291D82878322A00585AD8 /* d_discoboy.cpp in Sources */, + B32293162878322B00585AD8 /* d_tempest.cpp in Sources */, + B322935D2878322B00585AD8 /* d_gaelco2.cpp in Sources */, + B32291EE2878322A00585AD8 /* d_usgames.cpp in Sources */, + B3B3DB2E28713C77008A0E2F /* k054338.cpp in Sources */, + B32291F62878322A00585AD8 /* d_bublbobl.cpp in Sources */, + B32292852878322B00585AD8 /* d_cloud9.cpp in Sources */, + B32292342878322B00585AD8 /* d_slapfght.cpp in Sources */, + B3B3DA55287136EC008A0E2F /* 8255ppi.cpp in Sources */, + B322920F2878322B00585AD8 /* d_snk6502.cpp in Sources */, + B3B3DB6228713C9D008A0E2F /* d_actfancr.cpp in Sources */, + B322931F2878322B00585AD8 /* d_battleg.cpp in Sources */, + B322936C2878322B00585AD8 /* d_ssrj.cpp in Sources */, + B32291B62878322A00585AD8 /* d_kbash.cpp in Sources */, + B32292142878322B00585AD8 /* d_aeroboto.cpp in Sources */, + B3B3DA46287136EC008A0E2F /* pandora.cpp in Sources */, + B32292BD2878322B00585AD8 /* d_himesiki.cpp in Sources */, + B3B3DB0328713C77008A0E2F /* d_lethal.cpp in Sources */, + B32293682878322B00585AD8 /* psikyosh_render.cpp in Sources */, + B3B3DA8528713710008A0E2F /* fmopl.c in Sources */, + B32292B82878322B00585AD8 /* d_aztarac.cpp in Sources */, + B3B3DA65287136EC008A0E2F /* decobsmt.cpp in Sources */, + B3B3DDFD28714491008A0E2F /* z180.cpp in Sources */, + B32292A42878322B00585AD8 /* d_pacman.cpp in Sources */, + B3B3DB3A28713C78008A0E2F /* d_wecleman.cpp in Sources */, + B3B3DB4728713C78008A0E2F /* d_asterix.cpp in Sources */, + B32291722878322A00585AD8 /* d_sonson.cpp in Sources */, + B322922D2878322B00585AD8 /* d_taitomisc.cpp in Sources */, + B3B3DA3F287136EC008A0E2F /* atarivad.cpp in Sources */, + B32296A52878344900585AD8 /* m68kcpu.c in Sources */, + B32292422878322B00585AD8 /* d_unico.cpp in Sources */, + B32292D02878322B00585AD8 /* d_rabbit.cpp in Sources */, + B32293752878322B00585AD8 /* d_lsasquad.cpp in Sources */, + B32292542878322B00585AD8 /* d_blmbycar.cpp in Sources */, + B3B3DACA28713B3B008A0E2F /* mips3_intf.cpp in Sources */, + B3B3DA9528713710008A0E2F /* msm5232.cpp in Sources */, + B32291912878322A00585AD8 /* d_dday.cpp in Sources */, + B32292062878322A00585AD8 /* d_markham.cpp in Sources */, + B3B3DA38287136D6008A0E2F /* burn_pal.cpp in Sources */, + B3B3DA9928713710008A0E2F /* saa1099.cpp in Sources */, + B32292E22878322B00585AD8 /* d_sauro.cpp in Sources */, + B3B3DDFF28714491008A0E2F /* tms32010.cpp in Sources */, + B3B3DB1428713C77008A0E2F /* konamigx.cpp in Sources */, + B32291D22878322A00585AD8 /* d_copsnrob.cpp in Sources */, + B32292962878322B00585AD8 /* d_namcos86.cpp in Sources */, + B3B3DAB428713711008A0E2F /* c6280.cpp in Sources */, + B3B3DB8628713C9E008A0E2F /* d_dassault.cpp in Sources */, + B32292722878322B00585AD8 /* d_suprnova.cpp in Sources */, + B32293042878322B00585AD8 /* d_jollyjgr.cpp in Sources */, + B3B3DDF828714491008A0E2F /* cop1.cpp in Sources */, + B3B3DBC428713CE3008A0E2F /* d_xybots.cpp in Sources */, + B32291752878322A00585AD8 /* toaplan.cpp in Sources */, + B3B3DAB728713711008A0E2F /* dac.cpp in Sources */, + B3B3DB8028713C9E008A0E2F /* d_kchamp.cpp in Sources */, + B3B3DA8928713710008A0E2F /* c352.cpp in Sources */, + B3B3DAC528713B3B008A0E2F /* m6805_intf.cpp in Sources */, + B32292972878322B00585AD8 /* d_macrossp.cpp in Sources */, + B32291AA2878322A00585AD8 /* d_crbaloon.cpp in Sources */, + B32291DE2878322A00585AD8 /* kabuki.cpp in Sources */, + B322919C2878322A00585AD8 /* d_mcr.cpp in Sources */, + B3B3DB6F28713C9D008A0E2F /* d_dietgogo.cpp in Sources */, + B32293582878322B00585AD8 /* d_bogeyman.cpp in Sources */, + B32291862878322A00585AD8 /* d_blackt96.cpp in Sources */, + B322923D2878322B00585AD8 /* d_pasha2.cpp in Sources */, + B32292C82878322B00585AD8 /* d_gotcha.cpp in Sources */, + B32292522878322B00585AD8 /* d_jrpacman.cpp in Sources */, + B32292F52878322B00585AD8 /* d_mouser.cpp in Sources */, + B32293012878322B00585AD8 /* d_firetrap.cpp in Sources */, + B3B3DB0B28713C77008A0E2F /* d_simpsons.cpp in Sources */, + B32292B62878322B00585AD8 /* d_terracre.cpp in Sources */, + B32292932878322B00585AD8 /* d_ssozumo.cpp in Sources */, + B32292822878322B00585AD8 /* d_shangha3.cpp in Sources */, + B3B3DA32287136D6008A0E2F /* burn_led.cpp in Sources */, + B32292EA2878322B00585AD8 /* d_kyugo.cpp in Sources */, + B32292AE2878322B00585AD8 /* d_fixeight.cpp in Sources */, + B32292C52878322B00585AD8 /* cps_mem.cpp in Sources */, + B32292132878322B00585AD8 /* d_munchmo.cpp in Sources */, + B3B3DA51287136EC008A0E2F /* avgdvg.cpp in Sources */, + B32292052878322A00585AD8 /* d_bionicc.cpp in Sources */, + B322924E2878322B00585AD8 /* d_aerofgt.cpp in Sources */, + B32293002878322B00585AD8 /* d_inufuku.cpp in Sources */, + B3B3DDDE2871410F008A0E2F /* d_arcadecl.cpp in Sources */, + B32292D72878322B00585AD8 /* cave_sprite.cpp in Sources */, + B3B3DA7728713710008A0E2F /* tms5110.cpp in Sources */, + B32292FD2878322B00585AD8 /* d_nmk16.cpp in Sources */, + B3B3DE0728714491008A0E2F /* tms34010.cpp in Sources */, + B322921F2878322B00585AD8 /* ctv.cpp in Sources */, + B3B3DB7928713C9D008A0E2F /* d_dblewing.cpp in Sources */, + B32291AB2878322A00585AD8 /* d_mhavoc.cpp in Sources */, + B322929C2878322B00585AD8 /* d_mario.cpp in Sources */, + B3B3DB1028713C77008A0E2F /* k054000.cpp in Sources */, + B3B3DA70287136EC008A0E2F /* atarijsa.cpp in Sources */, + B3B3DB6D28713C9D008A0E2F /* d_funkyjet.cpp in Sources */, + B3B3DA7928713710008A0E2F /* k007232.cpp in Sources */, + B32292022878322A00585AD8 /* d_lkage.cpp in Sources */, + B32291F02878322A00585AD8 /* d_cabal.cpp in Sources */, + B32292102878322B00585AD8 /* sys16_run.cpp in Sources */, + B32291CF2878322A00585AD8 /* d_ssv.cpp in Sources */, + B32291FF2878322A00585AD8 /* d_asteroids.cpp in Sources */, + B32291F42878322A00585AD8 /* pgm_asic27a_type1.cpp in Sources */, + B322921D2878322B00585AD8 /* cps2_crpt.cpp in Sources */, + B32292E02878322B00585AD8 /* d_srumbler.cpp in Sources */, + B3B3DB2828713C77008A0E2F /* konamiic.cpp in Sources */, + B32293292878322B00585AD8 /* d_news.cpp in Sources */, + B3B3DB0F28713C77008A0E2F /* k053251.cpp in Sources */, + B322917B2878322A00585AD8 /* d_dcon.cpp in Sources */, + B32292702878322B00585AD8 /* d_missb2.cpp in Sources */, + B32292AC2878322B00585AD8 /* d_gladiatr.cpp in Sources */, + B3B3DDF728714491008A0E2F /* arm.cpp in Sources */, + B32293592878322B00585AD8 /* d_cps1.cpp in Sources */, + B3B3DB1228713C77008A0E2F /* d_xexex.cpp in Sources */, + B32291A52878322A00585AD8 /* d_taitol.cpp in Sources */, + B32293632878322B00585AD8 /* d_fastfred.cpp in Sources */, + B32291E32878322A00585AD8 /* d_bestleag.cpp in Sources */, + B3B3DB5228713C78008A0E2F /* d_shaolins.cpp in Sources */, + B32292D62878322B00585AD8 /* d_segag80v.cpp in Sources */, + B3B3DA9228713710008A0E2F /* es5506.cpp in Sources */, + B3B3DACB28713B3B008A0E2F /* tms34_intf.cpp in Sources */, + B3B3DAD928713B9E008A0E2F /* neogeo.cpp in Sources */, + B32292F32878322B00585AD8 /* d_thedeep.cpp in Sources */, + B3B3DB4D28713C78008A0E2F /* d_pooyan.cpp in Sources */, + B322936F2878322B00585AD8 /* d_f-32.cpp in Sources */, + B3B3DDE828714491008A0E2F /* arm7.cpp in Sources */, + B322915F2878322A00585AD8 /* d_foodf.cpp in Sources */, + B3B3DE0228714491008A0E2F /* sh2.cpp in Sources */, + B322925C2878322B00585AD8 /* d_thepit.cpp in Sources */, + B32291B02878322A00585AD8 /* d_batrider.cpp in Sources */, + B32292902878322B00585AD8 /* d_dacholer.cpp in Sources */, + B3B3DB1E28713C77008A0E2F /* d_fastlane.cpp in Sources */, + B32291C82878322A00585AD8 /* d_dkong.cpp in Sources */, + B32293312878322B00585AD8 /* d_citycon.cpp in Sources */, + B3B3DACE28713B3B008A0E2F /* tms34010_intf.cpp in Sources */, + B3B3DB3328713C77008A0E2F /* d_surpratk.cpp in Sources */, + B3B3DB5128713C78008A0E2F /* d_jailbrek.cpp in Sources */, + B3B3DA3E287136EC008A0E2F /* mathbox.cpp in Sources */, + B32291DD2878322A00585AD8 /* d_ghox.cpp in Sources */, + B3B3DA5E287136EC008A0E2F /* seibusnd.cpp in Sources */, + B3B3DB7028713C9D008A0E2F /* deco146.cpp in Sources */, + B32292E12878322B00585AD8 /* d_skyfox.cpp in Sources */, + B32291562878322A00585AD8 /* d_sf.cpp in Sources */, + B3B3DAF928713C52008A0E2F /* megadrive.cpp in Sources */, + B322935B2878322B00585AD8 /* d_eolith.cpp in Sources */, + B32291822878322A00585AD8 /* d_dribling.cpp in Sources */, + B322930B2878322B00585AD8 /* d_4enraya.cpp in Sources */, + B32292ED2878322B00585AD8 /* d_gunbuster.cpp in Sources */, + B322927F2878322B00585AD8 /* ps_m.cpp in Sources */, + B32291B52878322A00585AD8 /* d_rpunch.cpp in Sources */, + B32291C62878322A00585AD8 /* d_ohmygod.cpp in Sources */, + B3B3DB4028713C78008A0E2F /* d_ddribble.cpp in Sources */, + B3B3DA4C287136EC008A0E2F /* mb87078.cpp in Sources */, + B32292A12878322B00585AD8 /* d_f1gp.cpp in Sources */, + B322921A2878322B00585AD8 /* d_warpsped.cpp in Sources */, + B3B3DB3F28713C78008A0E2F /* k051960.cpp in Sources */, + B32292612878322B00585AD8 /* d_ms32.cpp in Sources */, + B32292282878322B00585AD8 /* toa_gp9001.cpp in Sources */, + B32291622878322A00585AD8 /* d_qbert.cpp in Sources */, + B322936E2878322B00585AD8 /* d_alpha68k.cpp in Sources */, + B3B3DB6B28713C9D008A0E2F /* d_decocass.cpp in Sources */, + B32293572878322B00585AD8 /* pgm_draw.cpp in Sources */, + B32291F92878322A00585AD8 /* d_namcos1.cpp in Sources */, + B32293562878322B00585AD8 /* tc0140syt.cpp in Sources */, + B32291C22878322A00585AD8 /* d_go2000.cpp in Sources */, + B322925A2878322B00585AD8 /* d_cischeat.cpp in Sources */, + B32293772878322B00585AD8 /* d_taitoz.cpp in Sources */, + B32291F82878322A00585AD8 /* d_cybertnk.cpp in Sources */, + B32291ED2878322A00585AD8 /* d_vicdual.cpp in Sources */, + B3B3DB0628713C77008A0E2F /* d_mainevt.cpp in Sources */, + B32292472878322B00585AD8 /* d_kickgoal.cpp in Sources */, + B32291992878322A00585AD8 /* d_ladybug.cpp in Sources */, + B32292F62878322B00585AD8 /* sys16_gfx.cpp in Sources */, + B3B3DA9D28713710008A0E2F /* burn_y8950.cpp in Sources */, + B3B3DB2A28713C77008A0E2F /* d_labyrunr.cpp in Sources */, + B3B3DB6028713C9D008A0E2F /* d_chanbara.cpp in Sources */, + B322931C2878322B00585AD8 /* d_thoop2.cpp in Sources */, + B32293232878322B00585AD8 /* d_fuukifg2.cpp in Sources */, + B32292252878322B00585AD8 /* usb_snd.cpp in Sources */, + B3B3DA69287136EC008A0E2F /* tms9928a.cpp in Sources */, + B322934D2878322B00585AD8 /* d_blockade.cpp in Sources */, + B32292C32878322B00585AD8 /* d_ashnojoe.cpp in Sources */, + B32292BC2878322B00585AD8 /* cpst.cpp in Sources */, + B3B3DA66287136EC008A0E2F /* watchdog.cpp in Sources */, + B3B3DAD228713B7B008A0E2F /* d_msx.cpp in Sources */, + B3B3DDEB28714491008A0E2F /* f8.cpp in Sources */, + B32291FC2878322A00585AD8 /* d_zaxxon.cpp in Sources */, + B3B3DAD828713B9E008A0E2F /* neo_run.cpp in Sources */, + B32291AE2878322A00585AD8 /* d_amspdwy.cpp in Sources */, + B322916B2878322A00585AD8 /* d_gng.cpp in Sources */, + B3B3DB1728713C77008A0E2F /* d_ajax.cpp in Sources */, + B3B3DB3528713C78008A0E2F /* d_hyperspt.cpp in Sources */, + B322921E2878322B00585AD8 /* d_pacland.cpp in Sources */, + B322926E2878322B00585AD8 /* d_vegaeo.cpp in Sources */, + B3B3DE0A28714491008A0E2F /* upd7725.cpp in Sources */, + B3B3DA9828713710008A0E2F /* ymdeltat.c in Sources */, + B32293192878322B00585AD8 /* d_wiz.cpp in Sources */, + B32292A22878322B00585AD8 /* d_lordgun.cpp in Sources */, + B322932C2878322B00585AD8 /* d_tagteam.cpp in Sources */, + B32292E52878322B00585AD8 /* pc090oj.cpp in Sources */, + B322935C2878322B00585AD8 /* genesis_vid.cpp in Sources */, + B3B3DB4228713C78008A0E2F /* d_contra.cpp in Sources */, + B32292D12878322B00585AD8 /* d_pwrinst2.cpp in Sources */, + B32291772878322A00585AD8 /* d_metro.cpp in Sources */, + B3B3DB8328713C9E008A0E2F /* d_progolf.cpp in Sources */, + B32291C42878322A00585AD8 /* d_pengadvb.cpp in Sources */, + B3B3DA62287136EC008A0E2F /* nmk004.cpp in Sources */, + B3B3DA4E287136EC008A0E2F /* st0020.cpp in Sources */, + B322923E2878322B00585AD8 /* d_toypop.cpp in Sources */, + B3B3DA9628713710008A0E2F /* samples.cpp in Sources */, + B322925D2878322B00585AD8 /* d_blockout.cpp in Sources */, + B3B3DA7D28713710008A0E2F /* es8712.cpp in Sources */, + B32293492878322B00585AD8 /* d_midas.cpp in Sources */, + B3B3DAA928713710008A0E2F /* asteroids.cpp in Sources */, + B32292172878322B00585AD8 /* cps_obj.cpp in Sources */, + B32292BA2878322B00585AD8 /* d_gumbo.cpp in Sources */, + B3B3DAFA28713C52008A0E2F /* mdeeprom.cpp in Sources */, + B3B3DA57287136EC008A0E2F /* v3021.cpp in Sources */, + B3B3DB2C28713C77008A0E2F /* d_ultraman.cpp in Sources */, + B3B3DA36287136D6008A0E2F /* vector.cpp in Sources */, + B3B3DB0728713C77008A0E2F /* d_thunderx.cpp in Sources */, + B3B3DA9728713710008A0E2F /* k053260.cpp in Sources */, + B3B3DACD28713B3B008A0E2F /* pic16c5x_intf.cpp in Sources */, + B32292622878322B00585AD8 /* fd1094_intf.cpp in Sources */, + B32292092878322B00585AD8 /* d_mrdo.cpp in Sources */, + B32293022878322B00585AD8 /* d_ybrd.cpp in Sources */, + B3B3DAD128713B3B008A0E2F /* arm7_intf.cpp in Sources */, + B32292602878322B00585AD8 /* d_mugsmash.cpp in Sources */, + B3B3DBBF28713CE3008A0E2F /* d_blstroid.cpp in Sources */, + B3B3DA35287136D6008A0E2F /* burn_sound_c.cpp in Sources */, + B3B3DB0528713C77008A0E2F /* d_bladestl.cpp in Sources */, + B322917A2878322A00585AD8 /* d_cyclemb.cpp in Sources */, + B32291DC2878322A00585AD8 /* d_tunit.cpp in Sources */, + B3B3DB7828713C9D008A0E2F /* d_tumblep.cpp in Sources */, + B32291A02878322A00585AD8 /* pgm_asic25.cpp in Sources */, + B3B3DA9B28713710008A0E2F /* burn_ym3526.cpp in Sources */, + B3B3DB6928713C9D008A0E2F /* d_vaportra.cpp in Sources */, + B32292652878322B00585AD8 /* pgm_sprite_create.cpp in Sources */, + B32291D12878322A00585AD8 /* toa_palette.cpp in Sources */, + B3B3DB5328713C78008A0E2F /* d_hcastle.cpp in Sources */, + B32292B22878322B00585AD8 /* toa_bcu2.cpp in Sources */, + B32293502878322B00585AD8 /* d_suna16.cpp in Sources */, + B3B3DB7F28713C9E008A0E2F /* d_deco32.cpp in Sources */, + B3B3DA7528713710008A0E2F /* k051649.cpp in Sources */, + B3B3DAD428713B9E008A0E2F /* neo_palette.cpp in Sources */, + B32292592878322B00585AD8 /* d_ccastles.cpp in Sources */, + B3B3DB8528713C9E008A0E2F /* d_pcktgal.cpp in Sources */, + B32291E52878322A00585AD8 /* cps_run.cpp in Sources */, + B32293442878322B00585AD8 /* d_deniam.cpp in Sources */, + B322920E2878322B00585AD8 /* ps.cpp in Sources */, + B3B3DA9128713710008A0E2F /* k054539.cpp in Sources */, + B32292442878322B00585AD8 /* d_exzisus.cpp in Sources */, + B3B3DDE428714430008A0E2F /* m6502.cpp in Sources */, + B322915C2878322A00585AD8 /* d_ambush.cpp in Sources */, + B3B3DA8E28713710008A0E2F /* burn_ymf262.cpp in Sources */, + B32291612878322A00585AD8 /* d_blktiger.cpp in Sources */, + B32292162878322B00585AD8 /* smstms.cpp in Sources */, + B32291952878322A00585AD8 /* d_xbrd.cpp in Sources */, + B3B3DA8628713710008A0E2F /* burn_ym3812.cpp in Sources */, + B32291572878322A00585AD8 /* fd1089.cpp in Sources */, + B32291922878322A00585AD8 /* d_cop01.cpp in Sources */, + B32292B72878322B00585AD8 /* d_wc90b.cpp in Sources */, + B32291552878322A00585AD8 /* d_senjyo.cpp in Sources */, + B32292562878322B00585AD8 /* d_buggychl.cpp in Sources */, + B3B3DAC728713B3B008A0E2F /* tlcs90_intf.cpp in Sources */, + B32293052878322B00585AD8 /* d_suna8.cpp in Sources */, + B3B3DB2428713C77008A0E2F /* d_nemesis.cpp in Sources */, + B32296A1287833F700585AD8 /* lowpass2.cpp in Sources */, + B3B3DADE28713BFA008A0E2F /* d_nes.cpp in Sources */, + B32292582878322B00585AD8 /* d_toki.cpp in Sources */, + B32292DB2878322B00585AD8 /* d_lasso.cpp in Sources */, + B3B3DB0828713C77008A0E2F /* d_tmnt.cpp in Sources */, + B32293472878322B00585AD8 /* d_ngp.cpp in Sources */, + B322924A2878322B00585AD8 /* d_psikyosh.cpp in Sources */, + B322931A2878322B00585AD8 /* d_blueprnt.cpp in Sources */, + B32292AF2878322B00585AD8 /* qs.cpp in Sources */, + B322934C2878322B00585AD8 /* d_bigstrkb.cpp in Sources */, + B3B3DB7A28713C9E008A0E2F /* d_sshangha.cpp in Sources */, + B32291932878322A00585AD8 /* d_seta.cpp in Sources */, + B3B3DE0028714491008A0E2F /* tms34010_optable.cpp in Sources */, + B3B3DB3B28713C78008A0E2F /* timeplt_snd.cpp in Sources */, + B32292C22878322B00585AD8 /* cps_config.cpp in Sources */, + B3B3DB1928713C77008A0E2F /* d_gijoe.cpp in Sources */, + B32292B32878322B00585AD8 /* d_limenko.cpp in Sources */, + B32291D32878322A00585AD8 /* d_kncljoe.cpp in Sources */, + B3B3DB3C28713C78008A0E2F /* d_circusc.cpp in Sources */, + B322927D2878322B00585AD8 /* d_ettrivia.cpp in Sources */, + B32293242878322B00585AD8 /* d_quantum.cpp in Sources */, + B32293732878322B00585AD8 /* d_onetwo.cpp in Sources */, + B3B3DDE628714491008A0E2F /* e132xs.cpp in Sources */, + B322918E2878322A00585AD8 /* d_taitof2.cpp in Sources */, + B32293482878322B00585AD8 /* midwunit.cpp in Sources */, + B322915B2878322A00585AD8 /* d_jack.cpp in Sources */, + B3B3DA9328713710008A0E2F /* ymf278b.c in Sources */, + B3B3DA53287136EC008A0E2F /* k1ge.cpp in Sources */, + B3B3DAC328713B3B008A0E2F /* m68000_intf.cpp in Sources */, + B3B3DA2B287136D6008A0E2F /* tilemap_generic.cpp in Sources */, + B32291962878322A00585AD8 /* d_xain.cpp in Sources */, + B32292EB2878322B00585AD8 /* mc8123.cpp in Sources */, + B3B3DB1C28713C77008A0E2F /* k007342_k007420.cpp in Sources */, + B322933F2878322B00585AD8 /* d_shippumd.cpp in Sources */, + B32291702878322A00585AD8 /* d_battlex.cpp in Sources */, + B32292982878322B00585AD8 /* d_rallyx.cpp in Sources */, + B322922A2878322B00585AD8 /* psikyo_sprite.cpp in Sources */, + B32291C12878322A00585AD8 /* d_clshroad.cpp in Sources */, + B32291872878322A00585AD8 /* d_groundfx.cpp in Sources */, + B32293612878322B00585AD8 /* d_xyonix.cpp in Sources */, + B32292A82878322B00585AD8 /* d_mystston.cpp in Sources */, + B3B3DA40287136EC008A0E2F /* earom.cpp in Sources */, + B32291D62878322A00585AD8 /* d_segae.cpp in Sources */, + B322933D2878322B00585AD8 /* d_jedi.cpp in Sources */, + B32292742878322B00585AD8 /* pgm_asic27a_type3.cpp in Sources */, + B32292FE2878322B00585AD8 /* d_sys24.cpp in Sources */, + B3B3DAC828713B3B008A0E2F /* konami_intf.cpp in Sources */, + B32291802878322A00585AD8 /* d_pkunwar.cpp in Sources */, + B3B3DDE728714491008A0E2F /* i8039.cpp in Sources */, + B322931E2878322B00585AD8 /* d_tbowl.cpp in Sources */, + B32291AD2878322A00585AD8 /* d_segac2.cpp in Sources */, + B322923C2878322B00585AD8 /* d_vmetal.cpp in Sources */, + B322919D2878322A00585AD8 /* d_pturn.cpp in Sources */, + B3B3DB0128713C77008A0E2F /* d_88games.cpp in Sources */, + B3B3DB1128713C77008A0E2F /* d_gradius3.cpp in Sources */, + B3B3DB1A28713C77008A0E2F /* d_mystwarr.cpp in Sources */, + B32291CE2878322A00585AD8 /* d_vulgus.cpp in Sources */, + B3B3DA48287136EC008A0E2F /* atariic.cpp in Sources */, + B32292CF2878322B00585AD8 /* d_cclimber.cpp in Sources */, + B3B3DABF28713B3B008A0E2F /* m6809_intf.cpp in Sources */, + B3B3DBBC28713CE3008A0E2F /* d_klax.cpp in Sources */, + B3B3DA54287136EC008A0E2F /* midssio.cpp in Sources */, + B32291BD2878322A00585AD8 /* d_psychic5.cpp in Sources */, + B3B3DB3E28713C78008A0E2F /* k053245.cpp in Sources */, + B322931B2878322B00585AD8 /* d_iqblock.cpp in Sources */, + B3B3DB0228713C77008A0E2F /* d_kontest.cpp in Sources */, + B3B3DA7E28713710008A0E2F /* ym2612.c in Sources */, + B32293622878322B00585AD8 /* d_aquarium.cpp in Sources */, + B32291A12878322A00585AD8 /* d_stuntair.cpp in Sources */, + B3B3DAB828713711008A0E2F /* flt_rc.cpp in Sources */, + B3B3DA68287136EC008A0E2F /* seibucop.cpp in Sources */, + B32296BD2878360300585AD8 /* m68kops.c in Sources */, + B32291682878322A00585AD8 /* d_1943.cpp in Sources */, + B32292FA2878322B00585AD8 /* d_matmania.cpp in Sources */, + B3B3DAC428713B3B008A0E2F /* z80_intf.cpp in Sources */, + B32291672878322A00585AD8 /* d_undrfire.cpp in Sources */, + B3B3DB0028713C77008A0E2F /* d_junofrst.cpp in Sources */, + B32292CA2878322B00585AD8 /* d_tsamurai.cpp in Sources */, + B32291512878322A00585AD8 /* pgm_asic27a_type2.cpp in Sources */, + B322915A2878322A00585AD8 /* d_darkmist.cpp in Sources */, + B322915E2878322A00585AD8 /* d_btime.cpp in Sources */, + B32291B82878322A00585AD8 /* d_seicross.cpp in Sources */, + B3B3DA8C28713710008A0E2F /* ymz280b.cpp in Sources */, + B322919F2878322A00585AD8 /* d_quizo.cpp in Sources */, + B3B3DAA028713710008A0E2F /* gaelco.cpp in Sources */, + B32291CB2878322A00585AD8 /* d_solomon.cpp in Sources */, + B3B3DA61287136EC008A0E2F /* kaneko_tmap.cpp in Sources */, + B3B3DA8B28713710008A0E2F /* x1010.cpp in Sources */, + B3B3DA59287136EC008A0E2F /* i4x00.cpp in Sources */, + B3B3DB2128713C77008A0E2F /* d_pingpong.cpp in Sources */, + B322932F2878322B00585AD8 /* d_gaelco.cpp in Sources */, + B3B3DE0528714491008A0E2F /* konami.cpp in Sources */, + B32291A82878322A00585AD8 /* d_legionna.cpp in Sources */, + B32292712878322B00585AD8 /* d_eolith16.cpp in Sources */, + B32291CA2878322A00585AD8 /* d_sailormn.cpp in Sources */, + B3B3DB1F28713C77008A0E2F /* d_gyruss.cpp in Sources */, + B3B3DB6328713C9D008A0E2F /* d_boogwing.cpp in Sources */, + B32291A22878322A00585AD8 /* d_wwfwfest.cpp in Sources */, + B3B3DDED28714491008A0E2F /* v60.cpp in Sources */, + B3B3DAE428713C21008A0E2F /* cps3run.cpp in Sources */, + B322928B2878322B00585AD8 /* taito_m68705.cpp in Sources */, + B32292992878322B00585AD8 /* d_xxmissio.cpp in Sources */, + B32291DF2878322A00585AD8 /* d_crshrace.cpp in Sources */, + B322922F2878322B00585AD8 /* d_pgm.cpp in Sources */, + B322928F2878322B00585AD8 /* d_1942.cpp in Sources */, + B32291FA2878322A00585AD8 /* ide.cpp in Sources */, + B3B3DABE28713B3B008A0E2F /* hd6309_intf.cpp in Sources */, + B32292492878322B00585AD8 /* d_tekipaki.cpp in Sources */, + B32293722878322B00585AD8 /* d_dooyong.cpp in Sources */, + B3B3DA34287136D6008A0E2F /* burn_memory.cpp in Sources */, + B32292842878322B00585AD8 /* cps_draw.cpp in Sources */, + B32292CD2878322B00585AD8 /* d_crospang.cpp in Sources */, + B32293542878322B00585AD8 /* qs_c.cpp in Sources */, + B322923F2878322B00585AD8 /* smsfmintf.cpp in Sources */, + B32292452878322B00585AD8 /* d_fantland.cpp in Sources */, + B3B3DAA228713710008A0E2F /* ym2413.c in Sources */, + B32293202878322B00585AD8 /* d_kinst.cpp in Sources */, + B3B3DAA828713710008A0E2F /* snk6502_sound.cpp in Sources */, + B3B3DE0828714491008A0E2F /* 2100dasm.cpp in Sources */, + B3B3DB2628713C77008A0E2F /* k051316.cpp in Sources */, + B3B3DBC628713CE3008A0E2F /* d_skullxbo.cpp in Sources */, + B32291C02878322A00585AD8 /* d_oneshot.cpp in Sources */, + B32292BF2878322B00585AD8 /* d_playmark.cpp in Sources */, + B32293072878322B00585AD8 /* d_retofinv.cpp in Sources */, + B32292942878322B00585AD8 /* d_tetrisp2.cpp in Sources */, + B32292322878322B00585AD8 /* d_feversos.cpp in Sources */, + B32292862878322B00585AD8 /* d_flower.cpp in Sources */, + B32291742878322A00585AD8 /* d_1945kiii.cpp in Sources */, + B32292C92878322B00585AD8 /* d_sstrangr.cpp in Sources */, + B3B3DA43287136EC008A0E2F /* timekpr.cpp in Sources */, + B32296A9287834EF00585AD8 /* unzip.c in Sources */, + B322923B2878322B00585AD8 /* psikyo_tile.cpp in Sources */, + B3B3DA3B287136D6008A0E2F /* tiles_generic.cpp in Sources */, + B3B3DAE628713C2A008A0E2F /* gal_gfx.cpp in Sources */, + B32292C02878322B00585AD8 /* d_tecmo16.cpp in Sources */, + B3B3DDE528714491008A0E2F /* upd7810.cpp in Sources */, + B3B3DB3628713C78008A0E2F /* d_pandoras.cpp in Sources */, + B32292BE2878322B00585AD8 /* d_btoads.cpp in Sources */, + B32291E22878322A00585AD8 /* d_atetris.cpp in Sources */, + B322918C2878322A00585AD8 /* tnzs_prot.cpp in Sources */, + B3B3DB4A28713C78008A0E2F /* d_sbasketb.cpp in Sources */, + B3B3DB4328713C78008A0E2F /* d_timeplt.cpp in Sources */, + B322918F2878322A00585AD8 /* d_lwings.cpp in Sources */, + B3B3DDF628714491008A0E2F /* m6800.cpp in Sources */, + B3B3DB0928713C77008A0E2F /* d_jackal.cpp in Sources */, + B322934F2878322B00585AD8 /* d_angelkds.cpp in Sources */, + B3B3DB7B28713C9E008A0E2F /* d_dec8.cpp in Sources */, + B32292572878322B00585AD8 /* d_bwidow.cpp in Sources */, + B322933E2878322B00585AD8 /* d_exterm.cpp in Sources */, + B32293102878322B00585AD8 /* dcs2k.cpp in Sources */, + B32291522878322A00585AD8 /* d_slapshot.cpp in Sources */, + B32292F42878322B00585AD8 /* d_mwarr.cpp in Sources */, + B32292E82878322B00585AD8 /* d_tjumpman.cpp in Sources */, + B32292202878322B00585AD8 /* taito.cpp in Sources */, + B322928D2878322B00585AD8 /* d_pkscram.cpp in Sources */, + B32292242878322B00585AD8 /* d_galaga.cpp in Sources */, + B3B3DA7328713710008A0E2F /* bzone.cpp in Sources */, + B32291782878322A00585AD8 /* d_hyperpac.cpp in Sources */, + B32292F82878322B00585AD8 /* d_vamphalf.cpp in Sources */, + B322926B2878322B00585AD8 /* pgm_asic3.cpp in Sources */, + B322921B2878322B00585AD8 /* d_kaneko16.cpp in Sources */, + B32291692878322A00585AD8 /* tc0360pri.cpp in Sources */, + B32293742878322B00585AD8 /* d_namcona1.cpp in Sources */, + B322928C2878322B00585AD8 /* d_patapata.cpp in Sources */, + B3B3DA67287136EC008A0E2F /* atarimo.cpp in Sources */, + B32291DB2878322A00585AD8 /* d_shisen.cpp in Sources */, + B32292FC2878322B00585AD8 /* d_exprraid.cpp in Sources */, + B322925B2878322B00585AD8 /* d_msisaac.cpp in Sources */, + B3B3DA8328713710008A0E2F /* ay8910.c in Sources */, + B3B3DA5F287136EC008A0E2F /* vdc.cpp in Sources */, + B32292192878322B00585AD8 /* d_goindol.cpp in Sources */, + B322926F2878322B00585AD8 /* d_wyvernf0.cpp in Sources */, + B3B3DBC328713CE3008A0E2F /* d_thunderj.cpp in Sources */, + B3B3DB5D28713C89008A0E2F /* d_m58.cpp in Sources */, + B32292882878322B00585AD8 /* d_mainsnk.cpp in Sources */, + B3B3DDF428714491008A0E2F /* v25.cpp in Sources */, + B3B3DAC928713B3B008A0E2F /* nec_intf.cpp in Sources */, + B3B3DB7428713C9D008A0E2F /* d_backfire.cpp in Sources */, + B3B3DB2B28713C77008A0E2F /* d_twin16.cpp in Sources */, + B3B3DA4D287136EC008A0E2F /* nb1414m4.cpp in Sources */, + B3B3DB7628713C9D008A0E2F /* d_sidepckt.cpp in Sources */, + B3B3DDE928714491008A0E2F /* h6280.cpp in Sources */, + B32292AA2878322B00585AD8 /* d_snk68.cpp in Sources */, + B32292352878322B00585AD8 /* d_alpha68k1.cpp in Sources */, + B32291BC2878322A00585AD8 /* toaplan1.cpp in Sources */, + B32292F72878322B00585AD8 /* d_punchout.cpp in Sources */, + B322914E2878322A00585AD8 /* tc0100scn.cpp in Sources */, + B32292222878322B00585AD8 /* d_pirates.cpp in Sources */, + B32291FB2878322A00585AD8 /* d_welltris.cpp in Sources */, + B32292382878322B00585AD8 /* d_efdt.cpp in Sources */, + B3B3DE0328714491008A0E2F /* tms34010.cpp in Sources */, + B3B3DBBA28713CE3008A0E2F /* d_akkaarrh.cpp in Sources */, + B3B3DA4F287136EC008A0E2F /* 8257dma.cpp in Sources */, + B32292912878322B00585AD8 /* d_wardner.cpp in Sources */, + B32293412878322B00585AD8 /* d_snk.cpp in Sources */, + B322916D2878322A00585AD8 /* d_flipjack.cpp in Sources */, + B3B3DB5528713C89008A0E2F /* d_m72.cpp in Sources */, + B322930C2878322B00585AD8 /* d_skyarmy.cpp in Sources */, + B32293182878322B00585AD8 /* d_cloak.cpp in Sources */, + B3B3DAA428713710008A0E2F /* burn_ymf278b.cpp in Sources */, + B3B3DAD528713B9E008A0E2F /* neo_decrypt.cpp in Sources */, + B32292482878322B00585AD8 /* d_spdodgeb.cpp in Sources */, + B3B3DB2328713C77008A0E2F /* d_battlnts.cpp in Sources */, + B32292D32878322B00585AD8 /* d_nycaptor.cpp in Sources */, + B322932A2878322B00585AD8 /* d_pipibibs.cpp in Sources */, + B32292032878322A00585AD8 /* d_alinvade.cpp in Sources */, + B3B3DB3828713C78008A0E2F /* d_parodius.cpp in Sources */, + B3B3DAB528713711008A0E2F /* ymf262.cpp in Sources */, + B32292B52878322B00585AD8 /* d_pac2650.cpp in Sources */, + B3B3DB5728713C89008A0E2F /* irem_cpu.cpp in Sources */, + B3B3DB3428713C77008A0E2F /* d_dbz.cpp in Sources */, + B3B3DAAA28713710008A0E2F /* burn_ym2413.cpp in Sources */, + B322935F2878322B00585AD8 /* d_zerozone.cpp in Sources */, + B32293552878322B00585AD8 /* d_sms.cpp in Sources */, + B3B3DBBE28713CE3008A0E2F /* d_gauntlet.cpp in Sources */, + B322933C2878322B00585AD8 /* tc0280grd.cpp in Sources */, + B3B3DB6528713C9D008A0E2F /* d_rohga.cpp in Sources */, + B3B3DA7A28713710008A0E2F /* sn76477.cpp in Sources */, + B3B3DB6828713C9D008A0E2F /* d_lemmings.cpp in Sources */, + B32292232878322B00585AD8 /* d_minivdr.cpp in Sources */, + B322935A2878322B00585AD8 /* d_headonb.cpp in Sources */, + B3B3DA5C287136EC008A0E2F /* slapstic.cpp in Sources */, + B322927B2878322B00585AD8 /* d_ginganin.cpp in Sources */, + B3B3DA33287136D6008A0E2F /* burn_sound.cpp in Sources */, + B3B3DE0128714491008A0E2F /* m37710.cpp in Sources */, + B3B3DB4128713C78008A0E2F /* d_tutankhm.cpp in Sources */, + B3B3DB5028713C78008A0E2F /* d_flkatck.cpp in Sources */, + B3B3DAC128713B3B008A0E2F /* s2650_intf.cpp in Sources */, + B3B3DB5C28713C89008A0E2F /* d_m90.cpp in Sources */, + B3B3DB3D28713C78008A0E2F /* d_megazone.cpp in Sources */, + B32293782878322B00585AD8 /* d_drtomy.cpp in Sources */, + B3B3DBBD28713CE3008A0E2F /* d_atarig1.cpp in Sources */, + B32292EC2878322B00585AD8 /* d_meijinsn.cpp in Sources */, + B3B3DAC028713B3B008A0E2F /* m6502_intf.cpp in Sources */, + B3B3DADF28713BFA008A0E2F /* d_spectrum.cpp in Sources */, + B322914D2878322A00585AD8 /* d_diverboy.cpp in Sources */, + B3B3DB4828713C78008A0E2F /* d_ironhors.cpp in Sources */, + B3B3DE0F28714491008A0E2F /* tlcs90.cpp in Sources */, + B322917E2878322A00585AD8 /* d_commando.cpp in Sources */, + B3B3DA39287136D6008A0E2F /* load.cpp in Sources */, + B3B3DB6128713C9D008A0E2F /* d_liberate.cpp in Sources */, + B322927A2878322B00585AD8 /* d_arkanoid.cpp in Sources */, + B3B3DB6A28713C9D008A0E2F /* d_darkseal.cpp in Sources */, + B3B3DE0B28714491008A0E2F /* mcs48.cpp in Sources */, + B32292792878322B00585AD8 /* d_silvmil.cpp in Sources */, + B3B3DDF228714491008A0E2F /* cop0.cpp in Sources */, + B32291502878322A00585AD8 /* d_lastduel.cpp in Sources */, + B3B3DA3A287136D6008A0E2F /* hiscore.cpp in Sources */, + B3B3DB3928713C78008A0E2F /* d_yiear.cpp in Sources */, + B3B3DA31287136D6008A0E2F /* burn_gun.cpp in Sources */, + B32292D82878322B00585AD8 /* d_tumbleb.cpp in Sources */, + B32293282878322B00585AD8 /* d_wunit.cpp in Sources */, + B32292A32878322B00585AD8 /* d_gaiden.cpp in Sources */, + B3B3DAA628713710008A0E2F /* wiping.cpp in Sources */, + B3B3DA44287136EC008A0E2F /* nb1414m4_8bit.cpp in Sources */, + B322916C2878322A00585AD8 /* yawdim_sound.cpp in Sources */, + B32293382878322B00585AD8 /* d_sidearms.cpp in Sources */, + B32296A32878342200585AD8 /* zipfn.cpp in Sources */, + B3B3DA9028713710008A0E2F /* rf5c68.cpp in Sources */, + B3B3DA3D287136EC008A0E2F /* resnet.cpp in Sources */, + B32291892878322A00585AD8 /* smssound.cpp in Sources */, + B32292662878322B00585AD8 /* pgm_run.cpp in Sources */, + B3B3DA2C287136D6008A0E2F /* burn_shift.cpp in Sources */, + B3B3DB8728713C9E008A0E2F /* d_deco156.cpp in Sources */, + B3B3DA7F28713710008A0E2F /* i5000.cpp in Sources */, + B32293152878322B00585AD8 /* d_yunsun16.cpp in Sources */, + B3B3DBB528713CE3008A0E2F /* d_shuuz.cpp in Sources */, + B3B3DACC28713B3B008A0E2F /* m6800_intf.cpp in Sources */, + B3B3DA6B287136EC008A0E2F /* qs1000.cpp in Sources */, + B3B3DAB028713711008A0E2F /* sp0250.cpp in Sources */, + B32292C12878322B00585AD8 /* d_egghunt.cpp in Sources */, + B32291B32878322A00585AD8 /* d_rollrace.cpp in Sources */, + B3B3DB1628713C77008A0E2F /* d_rollerg.cpp in Sources */, + B3B3DDF128714491008A0E2F /* m6805.cpp in Sources */, + B322934E2878322B00585AD8 /* tc0150rod.cpp in Sources */, + B3B3DA9F28713710008A0E2F /* t6w28.cpp in Sources */, + B32291FD2878322A00585AD8 /* d_seta2.cpp in Sources */, + B32291942878322A00585AD8 /* d_airbustr.cpp in Sources */, + B3B3DB1B28713C77008A0E2F /* d_hexion.cpp in Sources */, + B32291582878322A00585AD8 /* taitof3_snd.cpp in Sources */, + B32293142878322B00585AD8 /* d_travrusa.cpp in Sources */, + B32293652878322B00585AD8 /* d_yunsung8.cpp in Sources */, + B322916F2878322A00585AD8 /* d_cps2.cpp in Sources */, + B32291AF2878322A00585AD8 /* d_dorachan.cpp in Sources */, + B32292112878322B00585AD8 /* d_3x3puzzl.cpp in Sources */, + B32291EB2878322A00585AD8 /* d_madmotor.cpp in Sources */, + B322917D2878322A00585AD8 /* d_naughtyb.cpp in Sources */, + B3B3DB5828713C89008A0E2F /* irem_sound.cpp in Sources */, + B32292072878322A00585AD8 /* d_metmqstr.cpp in Sources */, + B3B3DAE128713C21008A0E2F /* d_coleco.cpp in Sources */, + B322936D2878322B00585AD8 /* d_kingofbox.cpp in Sources */, + B3B3DA7228713710008A0E2F /* ym2151.c in Sources */, + B32293602878322B00585AD8 /* d_enmadaio.cpp in Sources */, + B3B3DA5A287136EC008A0E2F /* atarirle.cpp in Sources */, + B3B3DADD28713BFA008A0E2F /* d_pce.cpp in Sources */, + B322927E2878322B00585AD8 /* d_taitosj.cpp in Sources */, + B32291C72878322A00585AD8 /* d_argus.cpp in Sources */, + B3B3DA49287136EC008A0E2F /* namco_c45.cpp in Sources */, + B32292AB2878322B00585AD8 /* d_drgnmst.cpp in Sources */, + B3B3DB4528713C78008A0E2F /* d_chqflag.cpp in Sources */, + B3B3DA8128713710008A0E2F /* llander.cpp in Sources */, + B32292042878322A00585AD8 /* d_dogyuun.cpp in Sources */, + B32291632878322A00585AD8 /* d_epos.cpp in Sources */, + B32292C42878322B00585AD8 /* d_tnzs.cpp in Sources */, + B322935E2878322B00585AD8 /* d_higemaru.cpp in Sources */, + B32293352878322B00585AD8 /* d_ddayjlc.cpp in Sources */, + B32293032878322B00585AD8 /* pgm_crypt.cpp in Sources */, + B32292EE2878322B00585AD8 /* d_skykid.cpp in Sources */, + B3B3DB0A28713C77008A0E2F /* k051733.cpp in Sources */, + B32293252878322B00585AD8 /* d_djboy.cpp in Sources */, + B3B3DB0C28713C77008A0E2F /* d_tp84.cpp in Sources */, + B3B3DB5F28713C89008A0E2F /* d_vigilant.cpp in Sources */, + B32291792878322A00585AD8 /* d_dreamwld.cpp in Sources */, + B3B3DAE828713C2A008A0E2F /* gal_run.cpp in Sources */, + B32292312878322B00585AD8 /* d_chinagat.cpp in Sources */, + B32292332878322B00585AD8 /* d_metlfrzr.cpp in Sources */, + B322932E2878322B00585AD8 /* d_popper.cpp in Sources */, + B3B3DB7528713C9D008A0E2F /* d_supbtime.cpp in Sources */, + B3B3DB2228713C77008A0E2F /* k052109.cpp in Sources */, + B32292892878322B00585AD8 /* cps_scr.cpp in Sources */, + B3B3DE0C28714491008A0E2F /* m6809.cpp in Sources */, + B32293222878322B00585AD8 /* d_tecmo.cpp in Sources */, + B3B3DAB128713711008A0E2F /* burn_ym2151.cpp in Sources */, + B322930E2878322B00585AD8 /* fcrash_snd.cpp in Sources */, + B32291E62878322A00585AD8 /* d_invaders.cpp in Sources */, + B3B3DB4E28713C78008A0E2F /* d_aliens.cpp in Sources */, + B32291CC2878322A00585AD8 /* d_mirage.cpp in Sources */, + B3B3DA5B287136EC008A0E2F /* ds2404.cpp in Sources */, + B3B3DAFF28713C77008A0E2F /* d_gberet.cpp in Sources */, + B3B3DB1D28713C77008A0E2F /* k056832.cpp in Sources */, + B3B3DA9428713710008A0E2F /* ics2115.cpp in Sources */, + B3B3DDEE28714491008A0E2F /* s2650.cpp in Sources */, + B322932D2878322B00585AD8 /* d_redclash.cpp in Sources */, + B32291A32878322A00585AD8 /* d_tceptor.cpp in Sources */, + B32292372878322B00585AD8 /* cps_rw.cpp in Sources */, + B3B3DBBB28713CE3008A0E2F /* d_offtwall.cpp in Sources */, + B3B3DB5E28713C89008A0E2F /* d_m92.cpp in Sources */, + B32292A62878322B00585AD8 /* d_sys18.cpp in Sources */, + B3B3DB6E28713C9D008A0E2F /* d_karnov.cpp in Sources */, + B3B3DB3728713C78008A0E2F /* d_xmen.cpp in Sources */, + B32293082878322B00585AD8 /* d_scregg.cpp in Sources */, + B32291D42878322A00585AD8 /* d_espial.cpp in Sources */, + B32292E72878322B00585AD8 /* tc0480scp.cpp in Sources */, + B32292D52878322B00585AD8 /* d_sprcros2.cpp in Sources */, + B3B3DB5628713C89008A0E2F /* d_m107.cpp in Sources */, + B3B3DAD028713B3B008A0E2F /* arm_intf.cpp in Sources */, + B32292122878322B00585AD8 /* taito_ic.cpp in Sources */, + B32292762878322B00585AD8 /* d_taitof3.cpp in Sources */, + B322929B2878322B00585AD8 /* d_ninjakd2.cpp in Sources */, + B32292082878322B00585AD8 /* d_sys1.cpp in Sources */, + B3B3DA7C28713710008A0E2F /* pokey.cpp in Sources */, + B3B3DB4B28713C78008A0E2F /* k007121.cpp in Sources */, + B3B3DB7228713C9D008A0E2F /* d_cninja.cpp in Sources */, + B322917F2878322A00585AD8 /* d_spacefb.cpp in Sources */, + B322920B2878322B00585AD8 /* d_armedf.cpp in Sources */, + B32293212878322B00585AD8 /* d_qix.cpp in Sources */, + B3B3DB1828713C77008A0E2F /* d_crimfght.cpp in Sources */, + B32293422878322B00585AD8 /* d_vball.cpp in Sources */, + B32292DA2878322B00585AD8 /* d_toaplan1.cpp in Sources */, + B32292D42878322B00585AD8 /* d_dotrikun.cpp in Sources */, + B3B3DB2D28713C77008A0E2F /* k053936.cpp in Sources */, + B3B3DA30287136D6008A0E2F /* cheat.cpp in Sources */, + B32291642878322A00585AD8 /* d_starwars.cpp in Sources */, + B3B3DAAC28713710008A0E2F /* multipcm.cpp in Sources */, + B3B3DB4F28713C78008A0E2F /* d_blockhl.cpp in Sources */, + B32292642878322B00585AD8 /* midwayic.cpp in Sources */, + B32291842878322A00585AD8 /* d_tigeroad.cpp in Sources */, + B3B3DB3028713C77008A0E2F /* d_bottom9.cpp in Sources */, + B3B3DDF928714491008A0E2F /* hd6309.cpp in Sources */, + B3B3DDFA28714491008A0E2F /* z80pio.cpp in Sources */, + B3B3DA7628713710008A0E2F /* fm.c in Sources */, + B32293402878322B00585AD8 /* d_freekick.cpp in Sources */, + B32293122878322B00585AD8 /* midtunit.cpp in Sources */, + B3B3DA8F28713710008A0E2F /* tms36xx.cpp in Sources */, + B32291852878322A00585AD8 /* sms.cpp in Sources */, + B3B3DBC528713CE3008A0E2F /* d_missile.cpp in Sources */, + B3B3DAD628713B9E008A0E2F /* neo_text.cpp in Sources */, + B3B3DA8728713710008A0E2F /* burn_ymf271.cpp in Sources */, + B32291762878322A00585AD8 /* d_esprade.cpp in Sources */, + B322936A2878322B00585AD8 /* cave.cpp in Sources */, + B3B3DB1328713C77008A0E2F /* k055555.cpp in Sources */, + B322923A2878322B00585AD8 /* d_powerbal.cpp in Sources */, + B32293642878322B00585AD8 /* d_calorie.cpp in Sources */, + B3B3DAC628713B3B008A0E2F /* h6280_intf.cpp in Sources */, + B3B3DA6F287136EC008A0E2F /* tms34061.cpp in Sources */, + B32291902878322A00585AD8 /* d_vastar.cpp in Sources */, + B32292E62878322B00585AD8 /* d_thief.cpp in Sources */, + B3B3DA8028713710008A0E2F /* upd7759.cpp in Sources */, + B3B3DBB928713CE3008A0E2F /* d_eprom.cpp in Sources */, + B32292432878322B00585AD8 /* d_segas32.cpp in Sources */, + B32291E72878322A00585AD8 /* d_cultures.cpp in Sources */, + B32292752878322B00585AD8 /* d_warpwarp.cpp in Sources */, + B3B3DE0628714491008A0E2F /* pic16c5x.cpp in Sources */, + B32292632878322B00585AD8 /* cave_palette.cpp in Sources */, + B32291B42878322A00585AD8 /* d_nmg5.cpp in Sources */, + B32292462878322B00585AD8 /* d_tankbust.cpp in Sources */, + B3B3DA47287136EC008A0E2F /* tlc34076.cpp in Sources */, + B32296AB287834FA00585AD8 /* ioapi.c in Sources */, + B3B3DB0428713C77008A0E2F /* d_rockrage.cpp in Sources */, + B32292292878322B00585AD8 /* d_wwfsstar.cpp in Sources */, + B3B3DB6428713C9D008A0E2F /* d_bwing.cpp in Sources */, + B322916A2878322A00585AD8 /* tc0180vcu.cpp in Sources */, + B3B3DB3128713C77008A0E2F /* d_moo.cpp in Sources */, + B32291832878322A00585AD8 /* d_artmagic.cpp in Sources */, + B3B3DA4B287136EC008A0E2F /* midsat.cpp in Sources */, + B32291C52878322A00585AD8 /* d_funkybee.cpp in Sources */, + B32292DE2878322B00585AD8 /* d_guwange.cpp in Sources */, + B32291732878322A00585AD8 /* d_gaplus.cpp in Sources */, + B32292B12878322B00585AD8 /* d_battlane.cpp in Sources */, + B32291652878322A00585AD8 /* d_sandscrp.cpp in Sources */, + B3B3DA45287136EC008A0E2F /* mermaid.cpp in Sources */, + B32292F12878322B00585AD8 /* d_ppmast93.cpp in Sources */, + B32291F22878322A00585AD8 /* d_galpani3.cpp in Sources */, + B3B3DAD728713B9E008A0E2F /* d_neogeo.cpp in Sources */, + B3B3DB2928713C77008A0E2F /* d_spy.cpp in Sources */, + B32292272878322B00585AD8 /* d_taitoh.cpp in Sources */, + B3B3DA2D287136D6008A0E2F /* burn_bitmap.cpp in Sources */, + B3B3DB5A28713C89008A0E2F /* d_m52.cpp in Sources */, + B3B3DA8A28713710008A0E2F /* sn76496.cpp in Sources */, + B322924C2878322B00585AD8 /* ctv_make.cpp in Sources */, + B322930A2878322B00585AD8 /* d_gaia.cpp in Sources */, + B3B3DADC28713BFA008A0E2F /* d_sg1000.cpp in Sources */, + B32291982878322A00585AD8 /* d_hangon.cpp in Sources */, + B3B3DA50287136EC008A0E2F /* joyprocess.cpp in Sources */, + B32291E82878322A00585AD8 /* d_glass.cpp in Sources */, + B32292AD2878322B00585AD8 /* d_bbakraid.cpp in Sources */, + B32293532878322B00585AD8 /* d_taotaido.cpp in Sources */, + B322927C2878322B00585AD8 /* d_fuukifg3.cpp in Sources */, + B3B3DE162871456F008A0E2F /* burn.cpp in Sources */, + B32293092878322B00585AD8 /* d_wiping.cpp in Sources */, + B3B3DA52287136EC008A0E2F /* namcoio.cpp in Sources */, + B32292512878322B00585AD8 /* d_taitob.cpp in Sources */, + B322924F2878322B00585AD8 /* d_esd16.cpp in Sources */, + B32292402878322B00585AD8 /* d_xunit.cpp in Sources */, + B322918A2878322A00585AD8 /* d_mosaic.cpp in Sources */, + B32293662878322B00585AD8 /* d_outrun.cpp in Sources */, + B3B3DB4628713C78008A0E2F /* d_mogura.cpp in Sources */, + B32292F22878322B00585AD8 /* d_yunit.cpp in Sources */, + B3B3DA41287136EC008A0E2F /* nmk112.cpp in Sources */, + B32291A92878322A00585AD8 /* pc080sn.cpp in Sources */, + B32293462878322B00585AD8 /* cpsr.cpp in Sources */, + B32292B42878322B00585AD8 /* d_wrally.cpp in Sources */, + B3B3DBB628713CE3008A0E2F /* d_toobin.cpp in Sources */, + B3B3DB7E28713C9E008A0E2F /* d_decomlc.cpp in Sources */, + B322918D2878322A00585AD8 /* d_parent.cpp in Sources */, + B32291C92878322A00585AD8 /* cps_pal.cpp in Sources */, + B3B3DB2728713C77008A0E2F /* d_scotrsht.cpp in Sources */, + B32292D92878322B00585AD8 /* neo_sprite.cpp in Sources */, + B3B3DA8D28713710008A0E2F /* tms5220.cpp in Sources */, + B3B3DB5928713C89008A0E2F /* d_m63.cpp in Sources */, + B32291972878322A00585AD8 /* d_ksayakyu.cpp in Sources */, + B32291712878322A00585AD8 /* d_bbusters.cpp in Sources */, + B322925E2878322B00585AD8 /* sys16_fd1094.cpp in Sources */, + B322925F2878322B00585AD8 /* d_bankp.cpp in Sources */, + B3B3DA6C287136EC008A0E2F /* intelfsh.cpp in Sources */, + B3B3DB8428713C9E008A0E2F /* d_shootout.cpp in Sources */, + B32292812878322B00585AD8 /* d_turbo.cpp in Sources */, + B322920D2878322B00585AD8 /* d_millipede.cpp in Sources */, + B3B3DAAD28713710008A0E2F /* ymf271.cpp in Sources */, + B32293132878322B00585AD8 /* cps.cpp in Sources */, + B3B3DAAF28713710008A0E2F /* segapcm.cpp in Sources */, + B3B3DAD328713B9E008A0E2F /* neo_upd4990a.cpp in Sources */, + B3B3DAE728713C2A008A0E2F /* gal_sound.cpp in Sources */, + B3B3DB8128713C9E008A0E2F /* d_cbuster.cpp in Sources */, + B32292FF2878322B00585AD8 /* d_powerins.cpp in Sources */, + B322929F2878322B00585AD8 /* ps_z.cpp in Sources */, + B32291D02878322A00585AD8 /* d_mole.cpp in Sources */, + B322917C2878322A00585AD8 /* d_tail2nose.cpp in Sources */, + B322928E2878322B00585AD8 /* d_taitox.cpp in Sources */, + B3B3DA9E28713710008A0E2F /* k005289.cpp in Sources */, + B32292682878322B00585AD8 /* d_dogfgt.cpp in Sources */, + B3B3DAA528713710008A0E2F /* namco_snd.cpp in Sources */, + B32292E92878322B00585AD8 /* d_mrflea.cpp in Sources */, + B3B3DB7128713C9D008A0E2F /* d_brkthru.cpp in Sources */, + B322922B2878322B00585AD8 /* toa_extratext.cpp in Sources */, + B322914F2878322A00585AD8 /* d_zodiack.cpp in Sources */, + B322930D2878322B00585AD8 /* d_psikyo4.cpp in Sources */, + B322926A2878322B00585AD8 /* d_mahoudai.cpp in Sources */, + B32292182878322B00585AD8 /* cave_tile.cpp in Sources */, + B32293432878322B00585AD8 /* d_drmicro.cpp in Sources */, + B32292502878322B00585AD8 /* d_route16.cpp in Sources */, + B3B3DB2F28713C77008A0E2F /* d_divebomb.cpp in Sources */, + B32292E42878322B00585AD8 /* d_namcos2.cpp in Sources */, + B32291D52878322A00585AD8 /* d_gunsmoke.cpp in Sources */, + B32292692878322B00585AD8 /* d_pitnrun.cpp in Sources */, + B3B3DB7D28713C9E008A0E2F /* d_dec0.cpp in Sources */, + B3B3DA37287136D6008A0E2F /* timer.cpp in Sources */, + B32292732878322B00585AD8 /* d_appoooh.cpp in Sources */, + B3B3DA7B28713710008A0E2F /* msm5205.cpp in Sources */, + B3B3DB8228713C9E008A0E2F /* d_pktgaldx.cpp in Sources */, + B3B3DA7828713710008A0E2F /* pleiadssound.cpp in Sources */, + B3B3DA2F287136D6008A0E2F /* debug_track.cpp in Sources */, + B3B3DA5D287136EC008A0E2F /* c169.cpp in Sources */, + B32291EF2878322A00585AD8 /* d_namconb1.cpp in Sources */, + B32292CB2878322B00585AD8 /* d_sys16a.cpp in Sources */, + B32293672878322B00585AD8 /* narc_sound.cpp in Sources */, + B32292FB2878322B00585AD8 /* d_wc90.cpp in Sources */, + B32293712878322B00585AD8 /* d_goori.cpp in Sources */, + B32292952878322B00585AD8 /* d_canyon.cpp in Sources */, + B3B3DE0D28714491008A0E2F /* mips3.cpp in Sources */, + B322922E2878322B00585AD8 /* tc0510nio.cpp in Sources */, + B32292302878322B00585AD8 /* d_mazinger.cpp in Sources */, + B32292922878322B00585AD8 /* d_galastrm.cpp in Sources */, + B32292A92878322B00585AD8 /* qs_z.cpp in Sources */, + B3B3DE0E28714491008A0E2F /* mips3_dasm.cpp in Sources */, + B3B3DAA328713710008A0E2F /* redbaron.cpp in Sources */, + B3B3DAFC28713C52008A0E2F /* d_megadrive.cpp in Sources */, + B322919E2878322A00585AD8 /* d_speedspn.cpp in Sources */, + B32293392878322B00585AD8 /* d_mappy.cpp in Sources */, + B3B3DA64287136EC008A0E2F /* bsmt2000.cpp in Sources */, + B3B3DA56287136EC008A0E2F /* gaelco_crypt.cpp in Sources */, + B32292782878322B00585AD8 /* d_shangkid.cpp in Sources */, + B322933A2878322B00585AD8 /* d_galivan.cpp in Sources */, + B3B3DAB628713711008A0E2F /* s14001a.cpp in Sources */, + B3B3DDEC28714491008A0E2F /* nec.cpp in Sources */, + B32293362878322B00585AD8 /* d_snowbro2.cpp in Sources */, + B3B3DA7128713710008A0E2F /* burn_ym2612.cpp in Sources */, + B32291E12878322A00585AD8 /* d_docastle.cpp in Sources */, + B32292392878322B00585AD8 /* d_capbowl.cpp in Sources */, + B32291662878322A00585AD8 /* d_othunder.cpp in Sources */, + B3B3DABA28713711008A0E2F /* vlm5030.cpp in Sources */, + B32292532878322B00585AD8 /* d_mirax.cpp in Sources */, + B32293302878322B00585AD8 /* d_bombjack.cpp in Sources */, + B32292152878322B00585AD8 /* d_psikyo.cpp in Sources */, + B32293692878322B00585AD8 /* d_x2222.cpp in Sources */, + B32292362878322B00585AD8 /* psikyo_palette.cpp in Sources */, + B3B3DA8428713710008A0E2F /* burn_md2612.cpp in Sources */, + B322932B2878322B00585AD8 /* d_mmagic.cpp in Sources */, + B3B3DAB228713711008A0E2F /* digitalk.cpp in Sources */, + B32293272878322B00585AD8 /* smsvdp.cpp in Sources */, + B3B3DBB728713CE3008A0E2F /* d_badlands.cpp in Sources */, + B32291BA2878322A00585AD8 /* d_momoko.cpp in Sources */, + B3B3DDFC28714491008A0E2F /* z80daisy.cpp in Sources */, + B322926C2878322B00585AD8 /* fd1094.cpp in Sources */, + B3B3DAC228713B3B008A0E2F /* z180_intf.cpp in Sources */, + B32292E32878322B00585AD8 /* d_funybubl.cpp in Sources */, + B32292BB2878322B00585AD8 /* d_omegrace.cpp in Sources */, + B32292DC2878322B00585AD8 /* d_jchan.cpp in Sources */, + B3B3DAE528713C2A008A0E2F /* d_galaxian.cpp in Sources */, + B322916E2878322A00585AD8 /* d_chaknpop.cpp in Sources */, + B3B3DA4A287136EC008A0E2F /* t5182.cpp in Sources */, + B32292552878322B00585AD8 /* d_berzerk.cpp in Sources */, + B32291602878322A00585AD8 /* d_ddragon.cpp in Sources */, + B3B3DAAE28713710008A0E2F /* burn_ym2608.cpp in Sources */, + B322918B2878322A00585AD8 /* d_williams.cpp in Sources */, + B3B3DA9A28713710008A0E2F /* sp0256.cpp in Sources */, + B32293172878322B00585AD8 /* d_renegade.cpp in Sources */, + B3B3DA9C28713710008A0E2F /* hc55516.cpp in Sources */, + B32291592878322A00585AD8 /* d_kbash2.cpp in Sources */, + B32293512878322B00585AD8 /* d_shadfrce.cpp in Sources */, + B3B3DA6A287136EC008A0E2F /* poly.cpp in Sources */, + B3B3DB4928713C78008A0E2F /* d_vendetta.cpp in Sources */, + B32291812878322A00585AD8 /* d_megasys1.cpp in Sources */, + B3B3DBB428713CE3008A0E2F /* d_vindictr.cpp in Sources */, + B32291BF2878322A00585AD8 /* d_galpanic.cpp in Sources */, + B32292B92878322B00585AD8 /* d_holeland.cpp in Sources */, + B32291D72878322A00585AD8 /* d_prehisle.cpp in Sources */, + B32291F72878322A00585AD8 /* d_silkroad.cpp in Sources */, + B32292DD2878322B00585AD8 /* d_uopoko.cpp in Sources */, + B322934A2878322B00585AD8 /* d_galspnbl.cpp in Sources */, + B3B3DBC128713CE3008A0E2F /* d_rampart.cpp in Sources */, + B322919B2878322A00585AD8 /* d_deadang.cpp in Sources */, + B3B3DBC228713CE3008A0E2F /* d_relief.cpp in Sources */, + B3B3DACF28713B3B008A0E2F /* adsp2100_intf.cpp in Sources */, + B3B3DB5B28713C89008A0E2F /* d_m62.cpp in Sources */, + B32293112878322B00585AD8 /* d_tubep.cpp in Sources */, + B3B3DB6C28713C9D008A0E2F /* deco16ic.cpp in Sources */, + B32293342878322B00585AD8 /* d_sub.cpp in Sources */, + B32291A42878322A00585AD8 /* d_hyprduel.cpp in Sources */, + B32293262878322B00585AD8 /* d_targeth.cpp in Sources */, + B3B3DDFE28714491008A0E2F /* i386.cpp in Sources */, + B3B3DAF828713C52008A0E2F /* stm95.cpp in Sources */, + B3B3DAFE28713C77008A0E2F /* d_combatsc.cpp in Sources */, + B322920C2878322B00585AD8 /* d_exerion.cpp in Sources */, + B322933B2878322B00585AD8 /* taitof3_video.cpp in Sources */, + B32292832878322B00585AD8 /* d_baraduke.cpp in Sources */, + B322915D2878322A00585AD8 /* d_asuka.cpp in Sources */, + B322928A2878322B00585AD8 /* d_raiden2.cpp in Sources */, + B32291882878322A00585AD8 /* d_hvyunit.cpp in Sources */, + B322936B2878322B00585AD8 /* d_bloodbro.cpp in Sources */, + B32292012878322A00585AD8 /* d_mcatadv.cpp in Sources */, + B32291B72878322A00585AD8 /* d_flstory.cpp in Sources */, + B32292C62878322B00585AD8 /* d_stfight.cpp in Sources */, + B3B3DA3C287136EC008A0E2F /* midcsd.cpp in Sources */, + B32292A52878322B00585AD8 /* d_marineb.cpp in Sources */, + B3B3DAB328713711008A0E2F /* burn_ym2203.cpp in Sources */, + B322934B2878322B00585AD8 /* d_hotdogst.cpp in Sources */, + B3B3DB7C28713C9E008A0E2F /* d_stadhero.cpp in Sources */, + B32292802878322B00585AD8 /* d_olibochu.cpp in Sources */, + B3B3DAE028713C21008A0E2F /* d_channelf.cpp in Sources */, + B32291A72878322A00585AD8 /* d_sys16b.cpp in Sources */, + B32291B92878322A00585AD8 /* d_itech32.cpp in Sources */, + B32293452878322B00585AD8 /* d_mexico86.cpp in Sources */, + B32293702878322B00585AD8 /* d_truxton2.cpp in Sources */, + B32291F32878322A00585AD8 /* d_mastboyo.cpp in Sources */, + B32291BE2878322A00585AD8 /* d_20pacgal.cpp in Sources */, + B32292262878322B00585AD8 /* tc0220ioc.cpp in Sources */, + B322921C2878322B00585AD8 /* d_superchs.cpp in Sources */, + B32292412878322B00585AD8 /* d_speedbal.cpp in Sources */, + B3B3DB0D28713C77008A0E2F /* k053247.cpp in Sources */, + B3B3DE0428714491008A0E2F /* adsp2100.cpp in Sources */, + B32292DF2878322B00585AD8 /* d_mustache.cpp in Sources */, + B3B3DA63287136EC008A0E2F /* 6821pia.cpp in Sources */, + B32292F92878322B00585AD8 /* d_mjkjidai.cpp in Sources */, + B32293322878322B00585AD8 /* d_cheekyms.cpp in Sources */, + B3B3DAA128713710008A0E2F /* phoenixsound.cpp in Sources */, + B322920A2878322B00585AD8 /* d_phoenix.cpp in Sources */, + B3B3DA8228713710008A0E2F /* nes_apu.cpp in Sources */, + B32292A72878322B00585AD8 /* smssystem.cpp in Sources */, + B3B3DB6728713C9D008A0E2F /* decobac06.cpp in Sources */, + B32292C72878322B00585AD8 /* d_pushman.cpp in Sources */, + B322929E2878322B00585AD8 /* d_alpha68k2.cpp in Sources */, + B3B3DB7728713C9D008A0E2F /* d_simpl156.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B32296C32878371D00585AD8 /* libretro.cpp in Sources */, + B32296C92878373E00585AD8 /* retro_memory.cpp in Sources */, + B32296C52878373200585AD8 /* retro_common.cpp in Sources */, + B32296C72878373900585AD8 /* retro_input.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3B3DA29287136A0008A0E2F /* PVFBNeoCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B3B3DE12287144D0008A0E2F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B30178D2207C901D0051B93D /* fbneo */; + targetProxy = B3B3DE11287144D0008A0E2F /* PBXContainerItemProxy */; + }; + B3B3DE15287144D0008A0E2F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* fbneo-libretro */; + targetProxy = B3B3DE14287144D0008A0E2F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B3B3D18F2871354D008A0E2F /* LogViewer.xib */ = { + isa = PBXVariantGroup; + children = ( + B3B3D1902871354D008A0E2F /* Base */, + ); + name = LogViewer.xib; + sourceTree = ""; + }; + B3B3D1912871354D008A0E2F /* Launcher.xib */ = { + isa = PBXVariantGroup; + children = ( + B3B3D1922871354D008A0E2F /* Base */, + ); + name = Launcher.xib; + sourceTree = ""; + }; + B3B3D1932871354D008A0E2F /* Preferences.xib */ = { + isa = PBXVariantGroup; + children = ( + B3B3D1942871354D008A0E2F /* Base */, + ); + name = Preferences.xib; + sourceTree = ""; + }; + B3B3D1952871354D008A0E2F /* About.xib */ = { + isa = PBXVariantGroup; + children = ( + B3B3D1962871354D008A0E2F /* Base */, + ); + name = About.xib; + sourceTree = ""; + }; + B3B3D1972871354D008A0E2F /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + B3B3D1982871354D008A0E2F /* Base */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + B3B3D1992871354D008A0E2F /* Emulator.xib */ = { + isa = PBXVariantGroup; + children = ( + B3B3D19A2871354D008A0E2F /* Base */, + ); + name = Emulator.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/FBNeo/src/burner/libretro/libretro-common/include\"", + "\"$(SRCROOT)/FBNeo/src/burner/macos\"", + "\"$(SRCROOT)/FBNeo/src/dep/generated\"", + "\"$(SRCROOT)/FBNeo/src/intf\"", + "\"$(SRCROOT)/FBNeo/src/cpu\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFBNeo/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFBNeo"; + PRODUCT_NAME = PVFBNeo; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/FBNeo/src/burner/libretro/libretro-common/include\"", + "\"$(SRCROOT)/FBNeo/src/burner/macos\"", + "\"$(SRCROOT)/FBNeo/src/dep/generated\"", + "\"$(SRCROOT)/FBNeo/src/intf\"", + "\"$(SRCROOT)/FBNeo/src/cpu\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/FBNeo/src/burner/libretro/libretro-common/include\"", + "\"$(SRCROOT)/FBNeo/src/burner/macos\"", + "\"$(SRCROOT)/FBNeo/src/dep/generated\"", + "\"$(SRCROOT)/FBNeo/src/intf\"", + "\"$(SRCROOT)/FBNeo/src/cpu\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFBNeo/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFBNeo"; + PRODUCT_NAME = PVFBNeo; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFBNeo/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFBNeo"; + PRODUCT_NAME = PVFBNeo; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "fbneo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "fbneo-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFBNeo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFBNeo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/xcshareddata/xcschemes/PVFBNeo.xcscheme b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/xcshareddata/xcschemes/PVFBNeo.xcscheme new file mode 100644 index 0000000000..b930718ccd --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo.xcodeproj/xcshareddata/xcschemes/PVFBNeo.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/FinalBurnNeo/PVFBNeo/Core.plist b/Cores/FinalBurnNeo/PVFBNeo/Core.plist new file mode 100644 index 0000000000..0700db2f5b --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo/Core.plist @@ -0,0 +1,23 @@ + + + + + PVCoreIdentifier + com.provenance.fbneo + PVPrincipleClass + PVFBNeoCore + PVSupportedSystems + + com.provenance.neogeo + com.provenance.msx + com.provenance.cps + com.provenance.colecovision + + PVProjectName + FBNeo + PVProjectURL + + PVProjectVersion + + + diff --git a/Cores/FinalBurnNeo/PVFBNeo/Info.plist b/Cores/FinalBurnNeo/PVFBNeo/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/FinalBurnNeo/PVFBNeo/PVFBNeo.h b/Cores/FinalBurnNeo/PVFBNeo/PVFBNeo.h new file mode 100644 index 0000000000..d39deba1c9 --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeo/PVFBNeo.h @@ -0,0 +1,18 @@ +// +// PVFBNeo.h +// PVFBNeo +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVFBNeo. +FOUNDATION_EXPORT double PVFBNeoVersionNumber; + +//! Project version string for PVFBNeo. +FOUNDATION_EXPORT const unsigned char PVFBNeoVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/FinalBurnNeo/PVFBNeoCore/PVFBNeoCore.h b/Cores/FinalBurnNeo/PVFBNeoCore/PVFBNeoCore.h new file mode 100644 index 0000000000..2ec650cec8 --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeoCore/PVFBNeoCore.h @@ -0,0 +1,43 @@ +// +// PVFBNeoCore.h +// PVFBNeo +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVFBNeoCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/FinalBurnNeo/PVFBNeoCore/PVFBNeoCore.mm b/Cores/FinalBurnNeo/PVFBNeoCore/PVFBNeoCore.mm new file mode 100644 index 0000000000..f0e6241eb5 --- /dev/null +++ b/Cores/FinalBurnNeo/PVFBNeoCore/PVFBNeoCore.mm @@ -0,0 +1,123 @@ +// +// PVFBNeoCore.m +// PVFBNeo +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVFBNeoCore.h" +#include +//#import "PVFBNeoCore+Controls.h" +//#import "PVFBNeoCore+Audio.h" +//#import "PVFBNeoCore+Video.h" +// +//#import "PVFBNeoCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVFBNeoCore() { + +} + +@end + +#pragma mark - PVFBNeoCore Begin + +@implementation PVFBNeoCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +@end diff --git a/Cores/Flycast/BuildFlags.xcconfig b/Cores/Flycast/BuildFlags.xcconfig index 2cfa53553d..405d8b4410 100644 --- a/Cores/Flycast/BuildFlags.xcconfig +++ b/Cores/Flycast/BuildFlags.xcconfig @@ -7,9 +7,14 @@ // // All -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) REICAST_VERSION=15.0 TARGET_NO_WEBUI=1 TARGET_NO_REC=1 GLES=1 NO_ASM=1 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) REICAST_VERSION=15.0 TARGET_NO_WEBUI=1 TARGET_NO_REC=1 GLES=1 GLES3=1 GLES_SILENCE_DEPRECATION=1 HAVE_OPENGLES=1 LIBRETRO=1 TARGET_IPHONE=1 + +// NO_ASM=1 + OTHER_CFLAGS = $(inherited) -mno-thumb -mfpu=neon -fno-operator-names -fno-rtti -ffast-math -ftree-vectorize -fno-strict-aliasing -frename-registers -fno-rtti -fpermissive -fno-operator-names -fsingle-precision-constant +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + // Device GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -fomit-frame-pointer diff --git a/Cores/Flycast/PVFlycast.xcodeproj/project.pbxproj b/Cores/Flycast/PVFlycast.xcodeproj/project.pbxproj index 861297da2f..fb84acb6e3 100644 --- a/Cores/Flycast/PVFlycast.xcodeproj/project.pbxproj +++ b/Cores/Flycast/PVFlycast.xcodeproj/project.pbxproj @@ -7,3457 +7,23512 @@ objects = { /* Begin PBXBuildFile section */ - B30178DC207C908E0051B93D /* zip_source_filep.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426E20783CBC008DBAB4 /* zip_source_filep.c */; }; - B30178DD207C908E0051B93D /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941DD20783CBC008DBAB4 /* md5.cpp */; }; - B30178DE207C908F0051B93D /* aica.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941AA20783CBB008DBAB4 /* aica.cpp */; }; - B30178DF207C908F0051B93D /* zip_file_error_get.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426020783CBC008DBAB4 /* zip_file_error_get.c */; }; - B30178E0207C908F0051B93D /* zip_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427020783CBC008DBAB4 /* zip_strerror.c */; }; - B30178E1207C908F0051B93D /* TexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942FC20783CBC008DBAB4 /* TexCache.cpp */; }; - B30178E2207C908F0051B93D /* chdr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424520783CBC008DBAB4 /* chdr.cpp */; }; - B30178E3207C908F0051B93D /* zip_set_archive_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426820783CBC008DBAB4 /* zip_set_archive_comment.c */; }; - B30178E4207C908F0051B93D /* zip_fread.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427520783CBC008DBAB4 /* zip_fread.c */; }; - B30178E5207C908F0051B93D /* spg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417B20783CBB008DBAB4 /* spg.cpp */; }; - B30178E6207C908F0051B93D /* zip_rename.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427620783CBC008DBAB4 /* zip_rename.c */; }; - B30178E7207C908F0051B93D /* zip_get_archive_flag.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427220783CBC008DBAB4 /* zip_get_archive_flag.c */; }; - B30178E8207C908F0051B93D /* holly_intc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413620783CBB008DBAB4 /* holly_intc.cpp */; }; - B30178E9207C908F0051B93D /* reios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432B20783CBD008DBAB4 /* reios.cpp */; }; - B30178EA207C908F0051B93D /* zip_add_dir.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426620783CBC008DBAB4 /* zip_add_dir.c */; }; - B30178EB207C908F0051B93D /* arm_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419C20783CBB008DBAB4 /* arm_mem.cpp */; }; - B30178EC207C908F0051B93D /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F420783CBC008DBAB4 /* pngread.c */; }; - B30178ED207C908F0051B93D /* zip_error_get_sys_type.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426720783CBC008DBAB4 /* zip_error_get_sys_type.c */; }; - B30178EE207C908F0051B93D /* audiobackend_pulseaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429420783CBC008DBAB4 /* audiobackend_pulseaudio.cpp */; }; - B30178EF207C908F0051B93D /* zip_source_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426B20783CBC008DBAB4 /* zip_source_free.c */; }; - B30178F0207C908F0051B93D /* pvr_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418720783CBB008DBAB4 /* pvr_regs.cpp */; }; - B30178F1207C908F0051B93D /* ta_ctx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417620783CBB008DBAB4 /* ta_ctx.cpp */; }; - B30178F2207C908F0051B93D /* gdrom_response.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417020783CBB008DBAB4 /* gdrom_response.cpp */; }; - B30178F3207C908F0051B93D /* sb_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413420783CBB008DBAB4 /* sb_mem.cpp */; }; - B30178F4207C908F0051B93D /* gltex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F320783CBC008DBAB4 /* gltex.cpp */; }; - B30178F5207C908F0051B93D /* zip_unchange.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426220783CBC008DBAB4 /* zip_unchange.c */; }; - B30178F6207C908F0051B93D /* ImgReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B920783CBC008DBAB4 /* ImgReader.cpp */; }; - B30178F7207C908F0051B93D /* zip_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428620783CBC008DBAB4 /* zip_free.c */; }; - B30178F8207C908F0051B93D /* zip_stat.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427D20783CBC008DBAB4 /* zip_stat.c */; }; - B30178F9207C908F0051B93D /* _vmem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B220783CBB008DBAB4 /* _vmem.cpp */; }; - B30178FA207C908F0051B93D /* elf32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424F20783CBC008DBAB4 /* elf32.cpp */; }; - B30178FB207C908F0051B93D /* bsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416020783CBB008DBAB4 /* bsc.cpp */; }; - B30178FC207C908F0051B93D /* zip_stat_init.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428920783CBC008DBAB4 /* zip_stat_init.c */; }; - B30178FD207C908F0051B93D /* sh4_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415020783CBB008DBAB4 /* sh4_mem.cpp */; }; - B30178FE207C908F0051B93D /* zip_source_file.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425E20783CBC008DBAB4 /* zip_source_file.c */; }; - B30178FF207C908F0051B93D /* zip_fclose.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428420783CBC008DBAB4 /* zip_fclose.c */; }; - B3017900207C908F0051B93D /* gdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B620783CBC008DBAB4 /* gdi.cpp */; }; - B3017901207C908F0051B93D /* dmac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416520783CBB008DBAB4 /* dmac.cpp */; }; - B3017902207C908F0051B93D /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FE20783CBC008DBAB4 /* pngset.c */; }; - B3017903207C908F0051B93D /* gles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F520783CBC008DBAB4 /* gles.cpp */; }; - B3017904207C908F0051B93D /* zip_get_archive_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425D20783CBC008DBAB4 /* zip_get_archive_comment.c */; }; - B3017905207C908F0051B93D /* sh4_core_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415920783CBB008DBAB4 /* sh4_core_regs.cpp */; }; - B3017906207C908F0051B93D /* sgc_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941AF20783CBB008DBAB4 /* sgc_if.cpp */; }; - B3017907207C908F0051B93D /* chd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941BF20783CBC008DBAB4 /* chd.cpp */; }; - B3017908207C908F0051B93D /* zip_unchange_all.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428B20783CBC008DBAB4 /* zip_unchange_all.c */; }; - B3017909207C908F0051B93D /* zip_close.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426520783CBC008DBAB4 /* zip_close.c */; }; - B301790A207C908F0051B93D /* zip_err_str.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426D20783CBC008DBAB4 /* zip_err_str.c */; }; - B301790B207C908F0051B93D /* rec_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C920783CBC008DBAB4 /* rec_arm.cpp */; }; - B301790C207C908F0051B93D /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E520783CBC008DBAB4 /* pngrio.c */; }; - B301790D207C908F0051B93D /* gdrom_hle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432F20783CBD008DBAB4 /* gdrom_hle.cpp */; }; - B301790E207C908F0051B93D /* zip_dirent.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428520783CBC008DBAB4 /* zip_dirent.c */; }; - B301790F207C908F0051B93D /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B720783CBC008DBAB4 /* common.cpp */; }; - B3017910207C908F0051B93D /* ccn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416120783CBB008DBAB4 /* ccn.cpp */; }; - B3017911207C908F0051B93D /* zip_entry_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428120783CBC008DBAB4 /* zip_entry_free.c */; }; - B3017912207C908F0051B93D /* zip_filerange_crc.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425720783CBC008DBAB4 /* zip_filerange_crc.c */; }; - B3017913207C908F0051B93D /* maple_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419520783CBB008DBAB4 /* maple_helper.cpp */; }; - B3017914207C908F0051B93D /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E920783CBC008DBAB4 /* pngtrans.c */; }; - B3017915207C908F0051B93D /* pvr_sb_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417E20783CBB008DBAB4 /* pvr_sb_regs.cpp */; }; - B3017916207C908F0051B93D /* nixprof.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D520783CBC008DBAB4 /* nixprof.cpp */; }; - B3017917207C908F0051B93D /* sh4_opcode_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414D20783CBB008DBAB4 /* sh4_opcode_list.cpp */; }; - B3017918207C908F0051B93D /* zip_error.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426F20783CBC008DBAB4 /* zip_error.c */; }; - B3017919207C908F0051B93D /* zip_set_file_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427C20783CBC008DBAB4 /* zip_set_file_comment.c */; }; - B301791A207C908F0051B93D /* zip_fopen_index.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425A20783CBC008DBAB4 /* zip_fopen_index.c */; }; - B301791B207C908F0051B93D /* ta_vtx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418520783CBB008DBAB4 /* ta_vtx.cpp */; }; - B301791C207C908F0051B93D /* zip_get_file_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427E20783CBC008DBAB4 /* zip_get_file_comment.c */; }; - B301791D207C908F0051B93D /* zip_unchange_data.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427420783CBC008DBAB4 /* zip_unchange_data.c */; }; - B301791E207C908F0051B93D /* zip_error_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428C20783CBC008DBAB4 /* zip_error_strerror.c */; }; - B301791F207C908F0051B93D /* zip_unchange_archive.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426A20783CBC008DBAB4 /* zip_unchange_archive.c */; }; - B3017920207C908F0051B93D /* filter_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B33941F620783CBC008DBAB4 /* filter_neon.S */; }; - B3017921207C908F0051B93D /* zip_new.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426320783CBC008DBAB4 /* zip_new.c */; }; - B3017922207C908F0051B93D /* zip_error_get.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428320783CBC008DBAB4 /* zip_error_get.c */; }; - B3017923207C908F0051B93D /* maple_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419720783CBB008DBAB4 /* maple_cfg.cpp */; }; - B3017924207C908F0051B93D /* zip_source_function.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427920783CBC008DBAB4 /* zip_source_function.c */; }; - B3017925207C908F0051B93D /* shil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413C20783CBB008DBAB4 /* shil.cpp */; }; - B3017926207C908F0051B93D /* sb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413520783CBB008DBAB4 /* sb.cpp */; }; - B3017927207C908F0051B93D /* maple_devs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419A20783CBB008DBAB4 /* maple_devs.cpp */; }; - B3017928207C908F0051B93D /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FB20783CBC008DBAB4 /* png.c */; }; - B3017929207C908F0051B93D /* audiobackend_oss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429F20783CBC008DBAB4 /* audiobackend_oss.cpp */; }; - B301792A207C908F0051B93D /* zip_fopen.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428A20783CBC008DBAB4 /* zip_fopen.c */; }; - B301792B207C908F0051B93D /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F920783CBC008DBAB4 /* pngmem.c */; }; - B301792C207C908F0051B93D /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FD20783CBC008DBAB4 /* pngrutil.c */; }; - B301792D207C908F0051B93D /* blockmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414420783CBB008DBAB4 /* blockmanager.cpp */; }; - B301792E207C908F0051B93D /* zip_file_get_offset.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426120783CBC008DBAB4 /* zip_file_get_offset.c */; }; - B301792F207C908F0051B93D /* ta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418920783CBB008DBAB4 /* ta.cpp */; }; - B3017930207C908F0051B93D /* rec_cpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339430120783CBC008DBAB4 /* rec_cpp.cpp */; }; - B3017931207C908F0051B93D /* sh4_sched.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414C20783CBB008DBAB4 /* sh4_sched.cpp */; }; - B3017932207C908F0051B93D /* zip_stat_index.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427820783CBC008DBAB4 /* zip_stat_index.c */; }; - B3017933207C908F0051B93D /* cl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C420783CBC008DBAB4 /* cl.cpp */; }; - B3017934207C908F0051B93D /* zip_name_locate.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426920783CBC008DBAB4 /* zip_name_locate.c */; }; - B3017935207C908F0051B93D /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F220783CBC008DBAB4 /* pngpread.c */; }; - B3017936207C908F0051B93D /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416720783CBB008DBAB4 /* rtc.cpp */; }; - B3017937207C908F0051B93D /* ini.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C320783CBC008DBAB4 /* ini.cpp */; }; - B3017938207C908F0051B93D /* zip_error_to_str.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428820783CBC008DBAB4 /* zip_error_to_str.c */; }; - B3017939207C908F0051B93D /* elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424C20783CBC008DBAB4 /* elf.cpp */; }; - B301793A207C908F0051B93D /* zip_get_name.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425820783CBC008DBAB4 /* zip_get_name.c */; }; - B301793B207C908F0051B93D /* gldraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F220783CBC008DBAB4 /* gldraw.cpp */; }; - B301793C207C908F0051B93D /* sb_dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413720783CBB008DBAB4 /* sb_dma.cpp */; }; - B301793D207C908F0051B93D /* cdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B820783CBC008DBAB4 /* cdi.cpp */; }; - B301793E207C908F0051B93D /* drkPvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418320783CBB008DBAB4 /* drkPvr.cpp */; }; - B301793F207C908F0051B93D /* sh4_fpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415520783CBB008DBAB4 /* sh4_fpu.cpp */; }; - B3017940207C908F0051B93D /* ubc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415C20783CBB008DBAB4 /* ubc.cpp */; }; - B3017941207C908F0051B93D /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C120783CBC008DBAB4 /* cfg.cpp */; }; - B3017942207C908F0051B93D /* stdclass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941DA20783CBC008DBAB4 /* stdclass.cpp */; }; - B3017943207C908F0051B93D /* pvr_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417720783CBB008DBAB4 /* pvr_mem.cpp */; }; - B3017944207C908F0051B93D /* sh4_interrupts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415620783CBB008DBAB4 /* sh4_interrupts.cpp */; }; - B3017945207C908F0051B93D /* vbaARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A020783CBB008DBAB4 /* vbaARM.cpp */; }; - B3017946207C908F0051B93D /* ioctl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941BC20783CBC008DBAB4 /* ioctl.cpp */; }; - B3017947207C908F0051B93D /* cpg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416B20783CBB008DBAB4 /* cpg.cpp */; }; - B3017948207C908F0051B93D /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FA20783CBC008DBAB4 /* pngget.c */; }; - B3017949207C908F0051B93D /* cdipsr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339425120783CBC008DBAB4 /* cdipsr.cpp */; }; - B301794A207C908F0051B93D /* audiobackend_alsa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942A520783CBC008DBAB4 /* audiobackend_alsa.cpp */; }; - B301794B207C908F0051B93D /* virt_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A320783CBB008DBAB4 /* virt_arm.cpp */; }; - B301794C207C908F0051B93D /* filter_neon_intrinsics.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F720783CBC008DBAB4 /* filter_neon_intrinsics.c */; }; - B301794D207C908F0051B93D /* aica_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A920783CBB008DBAB4 /* aica_mem.cpp */; }; - B301794E207C908F0051B93D /* serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416620783CBB008DBAB4 /* serial.cpp */; }; - B301794F207C908F0051B93D /* zip_set_name.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425F20783CBC008DBAB4 /* zip_set_name.c */; }; - B3017950207C908F0051B93D /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D020783CBC008DBAB4 /* common.cpp */; }; - B3017951207C908F0051B93D /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A820783CBB008DBAB4 /* dsp.cpp */; }; - B3017952207C908F0051B93D /* zip_memdup.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425420783CBC008DBAB4 /* zip_memdup.c */; }; - B3017953207C908F0051B93D /* elf64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424B20783CBC008DBAB4 /* elf64.cpp */; }; - B3017954207C908F0051B93D /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EF20783CBC008DBAB4 /* pngwtran.c */; }; - B3017955207C908F0051B93D /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E620783CBC008DBAB4 /* pngerror.c */; }; - B3017956207C908F0051B93D /* context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D220783CBC008DBAB4 /* context.cpp */; }; - B3017957207C908F0051B93D /* sh4_opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415220783CBB008DBAB4 /* sh4_opcodes.cpp */; }; - B3017958207C908F0051B93D /* gdromv3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417120783CBB008DBAB4 /* gdromv3.cpp */; }; - B3017959207C908F0051B93D /* zip_delete.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427B20783CBC008DBAB4 /* zip_delete.c */; }; - B301795A207C908F0051B93D /* sha1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941E020783CBC008DBAB4 /* sha1.cpp */; }; - B301795B207C908F0051B93D /* decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414320783CBB008DBAB4 /* decoder.cpp */; }; - B301795C207C908F0051B93D /* mmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416920783CBB008DBAB4 /* mmu.cpp */; }; - B301795D207C908F0051B93D /* zip_source_zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427720783CBC008DBAB4 /* zip_source_zip.c */; }; - B301795E207C908F0051B93D /* maple_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419420783CBB008DBAB4 /* maple_if.cpp */; }; - B301795F207C908F0051B93D /* coreio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339423D20783CBC008DBAB4 /* coreio.cpp */; }; - B3017960207C908F0051B93D /* zip_replace.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427A20783CBC008DBAB4 /* zip_replace.c */; }; - B3017961207C908F0051B93D /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FC20783CBC008DBAB4 /* pngrtran.c */; }; - B3017962207C908F0051B93D /* zip_get_num_files.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426C20783CBC008DBAB4 /* zip_get_num_files.c */; }; - B3017963207C908F0051B93D /* audiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429C20783CBC008DBAB4 /* audiostream.cpp */; }; - B3017964207C908F0051B93D /* zip_source_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425B20783CBC008DBAB4 /* zip_source_buffer.c */; }; - B3017965207C908F0051B93D /* arm7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419F20783CBB008DBAB4 /* arm7.cpp */; }; - B3017966207C908F0051B93D /* intc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415E20783CBB008DBAB4 /* intc.cpp */; }; - B3017967207C908F0051B93D /* sh4_rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416C20783CBB008DBAB4 /* sh4_rom.cpp */; }; - B3017968207C908F0051B93D /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EE20783CBC008DBAB4 /* pngwutil.c */; }; - B3017969207C908F0051B93D /* zip_set_archive_flag.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427320783CBC008DBAB4 /* zip_set_archive_flag.c */; }; - B301796A207C908F0051B93D /* aica_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A620783CBB008DBAB4 /* aica_if.cpp */; }; - B301796B207C908F0051B93D /* arm_init.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F820783CBC008DBAB4 /* arm_init.c */; }; - B301796C207C908F0051B93D /* nullDC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C720783CBC008DBAB4 /* nullDC.cpp */; }; - B301796D207C908F0051B93D /* sh4_mmr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415A20783CBB008DBAB4 /* sh4_mmr.cpp */; }; - B301796E207C908F0051B93D /* reios_elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432A20783CBD008DBAB4 /* reios_elf.cpp */; }; - B301796F207C908F0051B93D /* mkstemp.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427F20783CBC008DBAB4 /* mkstemp.c */; }; - B3017970207C908F0051B93D /* zip_file_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425920783CBC008DBAB4 /* zip_file_strerror.c */; }; - B3017971207C908F0051B93D /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EC20783CBC008DBAB4 /* pngwrite.c */; }; - B3017972207C908F0051B93D /* zip_add.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425620783CBC008DBAB4 /* zip_add.c */; }; - B3017973207C908F0051B93D /* Renderer_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418420783CBB008DBAB4 /* Renderer_if.cpp */; }; - B3017974207C908F0051B93D /* tmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416820783CBB008DBAB4 /* tmu.cpp */; }; - B3017975207C908F0051B93D /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E720783CBC008DBAB4 /* pngwio.c */; }; - B3017977207C908F0051B93D /* sh4_interpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415320783CBB008DBAB4 /* sh4_interpreter.cpp */; }; - B3017978207C908F0051B93D /* profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942EC20783CBC008DBAB4 /* profiler.cpp */; }; - B3017979207C908F0051B93D /* zip_error_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425C20783CBC008DBAB4 /* zip_error_clear.c */; }; - B301797A207C908F0051B93D /* descrambl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432920783CBD008DBAB4 /* descrambl.cpp */; }; - B301797B207C908F0051B93D /* zip_file_error_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428720783CBC008DBAB4 /* zip_file_error_clear.c */; }; - B301797C207C908F0051B93D /* zip_entry_new.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427120783CBC008DBAB4 /* zip_entry_new.c */; }; - B301797D207C908F0051B93D /* zip_open.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428220783CBC008DBAB4 /* zip_open.c */; }; - B301797E207C908F0051B93D /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414220783CBB008DBAB4 /* driver.cpp */; }; - B301797F207C909E0051B93D /* libflycast-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libflycast-iOS.a */; }; + B301797F207C909E0051B93D /* libflycast.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libflycast.a */; }; B316B4E721926FE500693472 /* emu.cfg in Resources */ = {isa = PBXBuildFile; fileRef = B316B4E621926FE500693472 /* emu.cfg */; }; - B316B4E821926FE500693472 /* emu.cfg in Resources */ = {isa = PBXBuildFile; fileRef = B316B4E621926FE500693472 /* emu.cfg */; }; - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; - B333502720786BD90036A448 /* Shader.vsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438820783CC0008DBAB4 /* Shader.vsh */; }; - B333502820786BEB0036A448 /* Shader.fsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438720783CC0008DBAB4 /* Shader.fsh */; }; B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447E9C218B826F00557ACE /* PVFlycast+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E9A218B826F00557ACE /* PVFlycast+Audio.h */; }; - B3447E9D218B826F00557ACE /* PVFlycast+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E9B218B826F00557ACE /* PVFlycast+Audio.mm */; }; - B3447E9E218B857A00557ACE /* PVFlycastCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVFlycastCore+Controls.mm */; }; - B3447E9F218B858100557ACE /* PVFlycastCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVFlycastCore+Controls.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447EA1218B881000557ACE /* PVFlycast.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVFlycast.mm */; }; - B3447EA3218BBFBC00557ACE /* PVFlycast+AudioTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA2218BBFB700557ACE /* PVFlycast+AudioTypes.h */; }; - B3447EA5218BC36B00557ACE /* PVFlycast+CoreAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA4218BC36B00557ACE /* PVFlycast+CoreAudio.mm */; }; - B3447EA7218BC3A600557ACE /* PVFlycast+CoreAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA6218BC3A600557ACE /* PVFlycast+CoreAudio.h */; }; - B3447EAB218BC59D00557ACE /* PVFlycastCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVFlycastCore+Saves.h */; }; - B3447EAC218BC59D00557ACE /* PVFlycastCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVFlycastCore+Saves.m */; }; - B3447EAF218BC5C500557ACE /* PVFlycastCore+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EAD218BC5C500557ACE /* PVFlycastCore+Video.h */; }; - B3447EB0218BC5C500557ACE /* PVFlycastCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVFlycastCore+Video.m */; }; - B3447EB3218BC69700557ACE /* PVFlycastCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVFlycastCore+Audio.h */; }; - B3447EB4218BC69700557ACE /* PVFlycastCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVFlycastCore+Audio.m */; }; - B3447EC2218BEDD200557ACE /* PVFlycast+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E9B218B826F00557ACE /* PVFlycast+Audio.mm */; }; - B3447EC3218BEDD200557ACE /* PVFlycastCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVFlycastCore+Controls.mm */; }; - B3447EC4218BEDD200557ACE /* PVFlycastCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVFlycastCore.mm */; }; - B3447EC5218BEDD200557ACE /* PVFlycastCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVFlycastCore+Saves.m */; }; - B3447EC6218BEDD200557ACE /* PVFlycast.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVFlycast.mm */; }; - B3447EC7218BEDD200557ACE /* PVFlycastCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVFlycastCore+Video.m */; }; - B3447EC8218BEDD200557ACE /* PVFlycast+CoreAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA4218BC36B00557ACE /* PVFlycast+CoreAudio.mm */; }; - B3447EC9218BEDD200557ACE /* PVFlycastCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVFlycastCore+Audio.m */; }; - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; - B3447ED6218BEDD200557ACE /* PVFlycast.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVFlycast.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447ED7218BEDD200557ACE /* PVFlycastCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVFlycastCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447ED8218BEDD200557ACE /* PVFlycast+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E9A218B826F00557ACE /* PVFlycast+Audio.h */; }; - B3447ED9218BEDD200557ACE /* PVFlycastCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVFlycastCore+Audio.h */; }; - B3447EDA218BEDD200557ACE /* PVFlycastCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVFlycastCore+Saves.h */; }; - B3447EDB218BEDD200557ACE /* PVFlycast+AudioTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA2218BBFB700557ACE /* PVFlycast+AudioTypes.h */; }; - B3447EDC218BEDD200557ACE /* PVFlycast+CoreAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA6218BC3A600557ACE /* PVFlycast+CoreAudio.h */; }; - B3447EDD218BEDD200557ACE /* PVFlycastCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVFlycastCore+Controls.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447EDE218BEDD200557ACE /* PVFlycastCore+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EAD218BC5C500557ACE /* PVFlycastCore+Video.h */; }; - B3447EE0218BEDD200557ACE /* Shader.fsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438720783CC0008DBAB4 /* Shader.fsh */; }; - B3447EE1218BEDD200557ACE /* Shader.vsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438820783CC0008DBAB4 /* Shader.vsh */; }; - B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; - B3447EEA218BEE3F00557ACE /* zip_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428620783CBC008DBAB4 /* zip_free.c */; }; - B3447EEB218BEE3F00557ACE /* holly_intc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413620783CBB008DBAB4 /* holly_intc.cpp */; }; - B3447EEC218BEE3F00557ACE /* zip_source_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426B20783CBC008DBAB4 /* zip_source_free.c */; }; - B3447EED218BEE3F00557ACE /* sh4_opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415220783CBB008DBAB4 /* sh4_opcodes.cpp */; }; - B3447EEE218BEE3F00557ACE /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F220783CBC008DBAB4 /* pngpread.c */; }; - B3447EEF218BEE3F00557ACE /* bsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416020783CBB008DBAB4 /* bsc.cpp */; }; - B3447EF0218BEE3F00557ACE /* reios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432B20783CBD008DBAB4 /* reios.cpp */; }; - B3447EF1218BEE3F00557ACE /* ubc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415C20783CBB008DBAB4 /* ubc.cpp */; }; - B3447EF2218BEE3F00557ACE /* decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414320783CBB008DBAB4 /* decoder.cpp */; }; - B3447EF3218BEE3F00557ACE /* zip_error_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425C20783CBC008DBAB4 /* zip_error_clear.c */; }; - B3447EF4218BEE3F00557ACE /* zip_dirent.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428520783CBC008DBAB4 /* zip_dirent.c */; }; - B3447EF5218BEE3F00557ACE /* reios_elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432A20783CBD008DBAB4 /* reios_elf.cpp */; }; - B3447EF6218BEE3F00557ACE /* zip_stat_index.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427820783CBC008DBAB4 /* zip_stat_index.c */; }; - B3447EF7218BEE3F00557ACE /* zip_unchange.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426220783CBC008DBAB4 /* zip_unchange.c */; }; - B3447EF8218BEE3F00557ACE /* maple_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419720783CBB008DBAB4 /* maple_cfg.cpp */; }; - B3447EF9218BEE3F00557ACE /* sb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413520783CBB008DBAB4 /* sb.cpp */; }; - B3447EFA218BEE3F00557ACE /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A820783CBB008DBAB4 /* dsp.cpp */; }; - B3447EFB218BEE3F00557ACE /* nullDC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C720783CBC008DBAB4 /* nullDC.cpp */; }; - B3447EFC218BEE3F00557ACE /* shil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413C20783CBB008DBAB4 /* shil.cpp */; }; - B3447EFD218BEE3F00557ACE /* rec_cpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339430120783CBC008DBAB4 /* rec_cpp.cpp */; }; - B3447EFE218BEE3F00557ACE /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E620783CBC008DBAB4 /* pngerror.c */; }; - B3447EFF218BEE3F00557ACE /* stdclass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941DA20783CBC008DBAB4 /* stdclass.cpp */; }; - B3447F00218BEE3F00557ACE /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B720783CBC008DBAB4 /* common.cpp */; }; - B3447F01218BEE3F00557ACE /* maple_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419520783CBB008DBAB4 /* maple_helper.cpp */; }; - B3447F02218BEE3F00557ACE /* ioctl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941BC20783CBC008DBAB4 /* ioctl.cpp */; }; - B3447F03218BEE3F00557ACE /* virt_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A320783CBB008DBAB4 /* virt_arm.cpp */; }; - B3447F04218BEE3F00557ACE /* zip_unchange_all.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428B20783CBC008DBAB4 /* zip_unchange_all.c */; }; - B3447F05218BEE3F00557ACE /* zip_file_get_offset.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426120783CBC008DBAB4 /* zip_file_get_offset.c */; }; - B3447F06218BEE3F00557ACE /* pvr_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417720783CBB008DBAB4 /* pvr_mem.cpp */; }; - B3447F07218BEE3F00557ACE /* zip_error_get_sys_type.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426720783CBC008DBAB4 /* zip_error_get_sys_type.c */; }; - B3447F08218BEE3F00557ACE /* sh4_opcode_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414D20783CBB008DBAB4 /* sh4_opcode_list.cpp */; }; - B3447F09218BEE3F00557ACE /* zip_error.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426F20783CBC008DBAB4 /* zip_error.c */; }; - B3447F0A218BEE3F00557ACE /* drkPvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418320783CBB008DBAB4 /* drkPvr.cpp */; }; - B3447F0B218BEE3F00557ACE /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941DD20783CBC008DBAB4 /* md5.cpp */; }; - B3447F0C218BEE3F00557ACE /* pvr_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418720783CBB008DBAB4 /* pvr_regs.cpp */; }; - B3447F0D218BEE3F00557ACE /* zip_stat_init.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428920783CBC008DBAB4 /* zip_stat_init.c */; }; - B3447F0E218BEE3F00557ACE /* zip_source_zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427720783CBC008DBAB4 /* zip_source_zip.c */; }; - B3447F0F218BEE3F00557ACE /* sh4_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415020783CBB008DBAB4 /* sh4_mem.cpp */; }; - B3447F10218BEE3F00557ACE /* zip_entry_new.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427120783CBC008DBAB4 /* zip_entry_new.c */; }; - B3447F11218BEE3F00557ACE /* mkstemp.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427F20783CBC008DBAB4 /* mkstemp.c */; }; - B3447F12218BEE3F00557ACE /* zip_source_function.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427920783CBC008DBAB4 /* zip_source_function.c */; }; - B3447F13218BEE3F00557ACE /* gltex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F320783CBC008DBAB4 /* gltex.cpp */; }; - B3447F14218BEE3F00557ACE /* zip_unchange_archive.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426A20783CBC008DBAB4 /* zip_unchange_archive.c */; }; - B3447F15218BEE3F00557ACE /* profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942EC20783CBC008DBAB4 /* profiler.cpp */; }; - B3447F16218BEE3F00557ACE /* cdipsr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339425120783CBC008DBAB4 /* cdipsr.cpp */; }; - B3447F17218BEE3F00557ACE /* audiobackend_pulseaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429420783CBC008DBAB4 /* audiobackend_pulseaudio.cpp */; }; - B3447F18218BEE3F00557ACE /* zip_entry_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428120783CBC008DBAB4 /* zip_entry_free.c */; }; - B3447F19218BEE3F00557ACE /* arm_init.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F820783CBC008DBAB4 /* arm_init.c */; }; - B3447F1A218BEE3F00557ACE /* filter_neon_intrinsics.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F720783CBC008DBAB4 /* filter_neon_intrinsics.c */; }; - B3447F1B218BEE3F00557ACE /* zip_memdup.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425420783CBC008DBAB4 /* zip_memdup.c */; }; - B3447F1C218BEE3F00557ACE /* zip_filerange_crc.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425720783CBC008DBAB4 /* zip_filerange_crc.c */; }; - B3447F1D218BEE3F00557ACE /* zip_stat.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427D20783CBC008DBAB4 /* zip_stat.c */; }; - B3447F1E218BEE3F00557ACE /* tmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416820783CBB008DBAB4 /* tmu.cpp */; }; - B3447F1F218BEE3F00557ACE /* maple_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419420783CBB008DBAB4 /* maple_if.cpp */; }; - B3447F20218BEE3F00557ACE /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EF20783CBC008DBAB4 /* pngwtran.c */; }; - B3447F21218BEE3F00557ACE /* chdr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424520783CBC008DBAB4 /* chdr.cpp */; }; - B3447F22218BEE3F00557ACE /* gdrom_hle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432F20783CBD008DBAB4 /* gdrom_hle.cpp */; }; - B3447F23218BEE3F00557ACE /* zip_source_file.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425E20783CBC008DBAB4 /* zip_source_file.c */; }; - B3447F24218BEE3F00557ACE /* zip_delete.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427B20783CBC008DBAB4 /* zip_delete.c */; }; - B3447F25218BEE3F00557ACE /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EC20783CBC008DBAB4 /* pngwrite.c */; }; - B3447F26218BEE3F00557ACE /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E720783CBC008DBAB4 /* pngwio.c */; }; - B3447F27218BEE3F00557ACE /* zip_error_get.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428320783CBC008DBAB4 /* zip_error_get.c */; }; - B3447F28218BEE3F00557ACE /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F420783CBC008DBAB4 /* pngread.c */; }; - B3447F29218BEE3F00557ACE /* ta_ctx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417620783CBB008DBAB4 /* ta_ctx.cpp */; }; - B3447F2A218BEE3F00557ACE /* Renderer_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418420783CBB008DBAB4 /* Renderer_if.cpp */; }; - B3447F2B218BEE3F00557ACE /* nixprof.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D520783CBC008DBAB4 /* nixprof.cpp */; }; - B3447F2C218BEE3F00557ACE /* coreio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339423D20783CBC008DBAB4 /* coreio.cpp */; }; - B3447F2D218BEE3F00557ACE /* zip_fclose.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428420783CBC008DBAB4 /* zip_fclose.c */; }; - B3447F2E218BEE3F00557ACE /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FC20783CBC008DBAB4 /* pngrtran.c */; }; - B3447F2F218BEE3F00557ACE /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F920783CBC008DBAB4 /* pngmem.c */; }; - B3447F30218BEE3F00557ACE /* zip_get_archive_flag.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427220783CBC008DBAB4 /* zip_get_archive_flag.c */; }; - B3447F31218BEE3F00557ACE /* chd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941BF20783CBC008DBAB4 /* chd.cpp */; }; - B3447F32218BEE3F00557ACE /* serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416620783CBB008DBAB4 /* serial.cpp */; }; - B3447F33218BEE3F00557ACE /* elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424C20783CBC008DBAB4 /* elf.cpp */; }; - B3447F34218BEE3F00557ACE /* descrambl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432920783CBD008DBAB4 /* descrambl.cpp */; }; - B3447F35218BEE3F00557ACE /* arm7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419F20783CBB008DBAB4 /* arm7.cpp */; }; - B3447F36218BEE3F00557ACE /* spg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417B20783CBB008DBAB4 /* spg.cpp */; }; - B3447F37218BEE3F00557ACE /* zip_file_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425920783CBC008DBAB4 /* zip_file_strerror.c */; }; - B3447F38218BEE3F00557ACE /* zip_add_dir.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426620783CBC008DBAB4 /* zip_add_dir.c */; }; - B3447F39218BEE3F00557ACE /* elf64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424B20783CBC008DBAB4 /* elf64.cpp */; }; - B3447F3A218BEE3F00557ACE /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C120783CBC008DBAB4 /* cfg.cpp */; }; - B3447F3B218BEE3F00557ACE /* gdromv3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417120783CBB008DBAB4 /* gdromv3.cpp */; }; - B3447F3C218BEE3F00557ACE /* dmac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416520783CBB008DBAB4 /* dmac.cpp */; }; - B3447F3D218BEE3F00557ACE /* zip_fopen_index.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425A20783CBC008DBAB4 /* zip_fopen_index.c */; }; - B3447F3E218BEE3F00557ACE /* cdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B820783CBC008DBAB4 /* cdi.cpp */; }; - B3447F3F218BEE3F00557ACE /* sh4_mmr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415A20783CBB008DBAB4 /* sh4_mmr.cpp */; }; - B3447F40218BEE3F00557ACE /* zip_set_archive_flag.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427320783CBC008DBAB4 /* zip_set_archive_flag.c */; }; - B3447F41218BEE3F00557ACE /* _vmem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B220783CBB008DBAB4 /* _vmem.cpp */; }; - B3447F42218BEE3F00557ACE /* zip_get_name.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425820783CBC008DBAB4 /* zip_get_name.c */; }; - B3447F43218BEE3F00557ACE /* ccn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416120783CBB008DBAB4 /* ccn.cpp */; }; - B3447F44218BEE3F00557ACE /* blockmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414420783CBB008DBAB4 /* blockmanager.cpp */; }; - B3447F45218BEE3F00557ACE /* aica_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A920783CBB008DBAB4 /* aica_mem.cpp */; }; - B3447F46218BEE3F00557ACE /* sb_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413420783CBB008DBAB4 /* sb_mem.cpp */; }; - B3447F47218BEE3F00557ACE /* sb_dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413720783CBB008DBAB4 /* sb_dma.cpp */; }; - B3447F48218BEE3F00557ACE /* zip_unchange_data.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427420783CBC008DBAB4 /* zip_unchange_data.c */; }; - B3447F49218BEE3F00557ACE /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E520783CBC008DBAB4 /* pngrio.c */; }; - B3447F4A218BEE3F00557ACE /* sh4_fpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415520783CBB008DBAB4 /* sh4_fpu.cpp */; }; - B3447F4B218BEE3F00557ACE /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EE20783CBC008DBAB4 /* pngwutil.c */; }; - B3447F4C218BEE3F00557ACE /* zip_get_file_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427E20783CBC008DBAB4 /* zip_get_file_comment.c */; }; - B3447F4D218BEE3F00557ACE /* mmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416920783CBB008DBAB4 /* mmu.cpp */; }; - B3447F4E218BEE3F00557ACE /* zip_new.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426320783CBC008DBAB4 /* zip_new.c */; }; - B3447F4F218BEE3F00557ACE /* aica_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A620783CBB008DBAB4 /* aica_if.cpp */; }; - B3447F50218BEE3F00557ACE /* zip_source_filep.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426E20783CBC008DBAB4 /* zip_source_filep.c */; }; - B3447F51218BEE3F00557ACE /* sh4_interpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415320783CBB008DBAB4 /* sh4_interpreter.cpp */; }; - B3447F52218BEE3F00557ACE /* zip_file_error_get.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426020783CBC008DBAB4 /* zip_file_error_get.c */; }; - B3447F53218BEE3F00557ACE /* audiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429C20783CBC008DBAB4 /* audiostream.cpp */; }; - B3447F54218BEE3F00557ACE /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E920783CBC008DBAB4 /* pngtrans.c */; }; - B3447F55218BEE3F00557ACE /* elf32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424F20783CBC008DBAB4 /* elf32.cpp */; }; - B3447F56218BEE3F00557ACE /* zip_add.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425620783CBC008DBAB4 /* zip_add.c */; }; - B3447F57218BEE3F00557ACE /* zip_error_to_str.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428820783CBC008DBAB4 /* zip_error_to_str.c */; }; - B3447F58218BEE3F00557ACE /* gldraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F220783CBC008DBAB4 /* gldraw.cpp */; }; - B3447F59218BEE3F00557ACE /* zip_set_name.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425F20783CBC008DBAB4 /* zip_set_name.c */; }; - B3447F5A218BEE3F00557ACE /* zip_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427020783CBC008DBAB4 /* zip_strerror.c */; }; - B3447F5B218BEE3F00557ACE /* zip_open.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428220783CBC008DBAB4 /* zip_open.c */; }; - B3447F5C218BEE3F00557ACE /* zip_fopen.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428A20783CBC008DBAB4 /* zip_fopen.c */; }; - B3447F5D218BEE3F00557ACE /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416720783CBB008DBAB4 /* rtc.cpp */; }; - B3447F5E218BEE3F00557ACE /* zip_get_num_files.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426C20783CBC008DBAB4 /* zip_get_num_files.c */; }; - B3447F5F218BEE3F00557ACE /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FD20783CBC008DBAB4 /* pngrutil.c */; }; - B3447F60218BEE3F00557ACE /* zip_error_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428C20783CBC008DBAB4 /* zip_error_strerror.c */; }; - B3447F61218BEE3F00557ACE /* zip_close.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426520783CBC008DBAB4 /* zip_close.c */; }; - B3447F62218BEE3F00557ACE /* vbaARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A020783CBB008DBAB4 /* vbaARM.cpp */; }; - B3447F63218BEE3F00557ACE /* audiobackend_alsa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942A520783CBC008DBAB4 /* audiobackend_alsa.cpp */; }; - B3447F64218BEE3F00557ACE /* intc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415E20783CBB008DBAB4 /* intc.cpp */; }; - B3447F65218BEE3F00557ACE /* zip_source_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425B20783CBC008DBAB4 /* zip_source_buffer.c */; }; - B3447F66218BEE3F00557ACE /* zip_err_str.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426D20783CBC008DBAB4 /* zip_err_str.c */; }; - B3447F67218BEE3F00557ACE /* zip_file_error_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428720783CBC008DBAB4 /* zip_file_error_clear.c */; }; - B3447F68218BEE3F00557ACE /* pvr_sb_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417E20783CBB008DBAB4 /* pvr_sb_regs.cpp */; }; - B3447F69218BEE3F00557ACE /* gles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F520783CBC008DBAB4 /* gles.cpp */; }; - B3447F6A218BEE3F00557ACE /* rec_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C920783CBC008DBAB4 /* rec_arm.cpp */; }; - B3447F6B218BEE3F00557ACE /* audiobackend_oss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429F20783CBC008DBAB4 /* audiobackend_oss.cpp */; }; - B3447F6C218BEE3F00557ACE /* zip_get_archive_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425D20783CBC008DBAB4 /* zip_get_archive_comment.c */; }; - B3447F6D218BEE3F00557ACE /* zip_set_file_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427C20783CBC008DBAB4 /* zip_set_file_comment.c */; }; - B3447F6E218BEE3F00557ACE /* cpg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416B20783CBB008DBAB4 /* cpg.cpp */; }; - B3447F6F218BEE3F00557ACE /* sha1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941E020783CBC008DBAB4 /* sha1.cpp */; }; - B3447F70218BEE3F00557ACE /* zip_fread.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427520783CBC008DBAB4 /* zip_fread.c */; }; - B3447F71218BEE3F00557ACE /* gdrom_response.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417020783CBB008DBAB4 /* gdrom_response.cpp */; }; - B3447F72218BEE3F00557ACE /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D020783CBC008DBAB4 /* common.cpp */; }; - B3447F73218BEE3F00557ACE /* maple_devs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419A20783CBB008DBAB4 /* maple_devs.cpp */; }; - B3447F74218BEE3F00557ACE /* TexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942FC20783CBC008DBAB4 /* TexCache.cpp */; }; - B3447F75218BEE3F00557ACE /* zip_name_locate.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426920783CBC008DBAB4 /* zip_name_locate.c */; }; - B3447F76218BEE3F00557ACE /* zip_set_archive_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426820783CBC008DBAB4 /* zip_set_archive_comment.c */; }; - B3447F77218BEE3F00557ACE /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414220783CBB008DBAB4 /* driver.cpp */; }; - B3447F78218BEE3F00557ACE /* ini.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C320783CBC008DBAB4 /* ini.cpp */; }; - B3447F79218BEE3F00557ACE /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FA20783CBC008DBAB4 /* pngget.c */; }; - B3447F7A218BEE3F00557ACE /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FE20783CBC008DBAB4 /* pngset.c */; }; - B3447F7B218BEE3F00557ACE /* arm_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419C20783CBB008DBAB4 /* arm_mem.cpp */; }; - B3447F7C218BEE3F00557ACE /* ta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418920783CBB008DBAB4 /* ta.cpp */; }; - B3447F7D218BEE3F00557ACE /* sh4_sched.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414C20783CBB008DBAB4 /* sh4_sched.cpp */; }; - B3447F7E218BEE3F00557ACE /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FB20783CBC008DBAB4 /* png.c */; }; - B3447F7F218BEE3F00557ACE /* sh4_rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416C20783CBB008DBAB4 /* sh4_rom.cpp */; }; - B3447F80218BEE3F00557ACE /* context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D220783CBC008DBAB4 /* context.cpp */; }; - B3447F81218BEE3F00557ACE /* aica.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941AA20783CBB008DBAB4 /* aica.cpp */; }; - B3447F82218BEE3F00557ACE /* filter_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B33941F620783CBC008DBAB4 /* filter_neon.S */; }; - B3447F83218BEE3F00557ACE /* ImgReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B920783CBC008DBAB4 /* ImgReader.cpp */; }; - B3447F84218BEE3F00557ACE /* ta_vtx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418520783CBB008DBAB4 /* ta_vtx.cpp */; }; - B3447F85218BEE3F00557ACE /* sh4_core_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415920783CBB008DBAB4 /* sh4_core_regs.cpp */; }; - B3447F86218BEE3F00557ACE /* gdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B620783CBC008DBAB4 /* gdi.cpp */; }; - B3447F87218BEE3F00557ACE /* sgc_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941AF20783CBB008DBAB4 /* sgc_if.cpp */; }; - B3447F88218BEE3F00557ACE /* zip_replace.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427A20783CBC008DBAB4 /* zip_replace.c */; }; - B3447F89218BEE3F00557ACE /* zip_rename.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427620783CBC008DBAB4 /* zip_rename.c */; }; - B3447F8A218BEE3F00557ACE /* cl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C420783CBC008DBAB4 /* cl.cpp */; }; - B3447F8B218BEE3F00557ACE /* sh4_interrupts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415620783CBB008DBAB4 /* sh4_interrupts.cpp */; }; B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; + B39831DC292413EF00A82429 /* emulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3980E4629239F3700A82429 /* emulator.cpp */; }; + B39831DD29241A6500A82429 /* option.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3982F5E29239F4A00A82429 /* option.cpp */; }; + B39831DE29241A6500A82429 /* LogManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3982F6429239F4A00A82429 /* LogManager.cpp */; }; + B39831DF29241A6500A82429 /* oslib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3982F5D29239F4A00A82429 /* oslib.cpp */; }; + B39831E029241A6500A82429 /* audiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3982F5B29239F4A00A82429 /* audiostream.cpp */; }; + B39831E129241A6500A82429 /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3982F6129239F4A00A82429 /* libretro.cpp */; }; + B39831E229241A6500A82429 /* vmu_xhair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3982F6229239F4A00A82429 /* vmu_xhair.cpp */; }; + B39E12A128925DD900016387 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39E12A028925DD900016387 /* PVLibRetro.framework */; }; B3C7621520783162009950E4 /* PVFlycast.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVFlycast.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; B3C76225207833DE009950E4 /* PVFlycastCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVFlycastCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C76226207833DE009950E4 /* PVFlycastCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVFlycastCore.mm */; }; - B3DDF56D26E9B90400CE47F0 /* libflycast-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libflycast-tvOS.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B3DDF56E26E9B90400CE47F0 /* PBXContainerItemProxy */ = { + B398301429239F4B00A82429 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = B3C7620720783162009950E4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3447EE8218BEE3F00557ACE; - remoteInfo = "flycast-tvOS"; + containerPortal = B3981D0B29239F4100A82429 /* ___PROJECTNAME___.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1D6058910D05DD3D006BFB54; + remoteInfo = "___PROJECTNAME___"; + }; + B398302329239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8DC2EF5B0486A6940098B216; + remoteInfo = Breakpad; + }; + B398302529239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F92C53540ECCE349009BE4BA; + remoteInfo = Inspector; + }; + B398302729239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F92C563C0ECD10B3009BE4BA; + remoteInfo = breakpadUtilities; + }; + B398302929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F92C56A00ECE04A7009BE4BA; + remoteInfo = crash_report_sender; + }; + B398302B29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F9C44DA50EF060A8003AEBAA; + remoteInfo = BreakpadTest; + }; + B398302D29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F9C77DDA0F7DD5CF0045F7DB; + remoteInfo = UnitTests; + }; + B398302F29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F93803BE0F80820F004D428B; + remoteInfo = generator_test; + }; + B398303129239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F93DE2D10F82A67300608B94; + remoteInfo = minidump_file_writer_unittest; + }; + B398303329239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F93DE32C0F82C55600608B94; + remoteInfo = handler_test; + }; + B398303529239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D2F9A41512131EF0002747C1; + remoteInfo = gtest; + }; + B398303729239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D2F9A546121383A1002747C1; + remoteInfo = crash_generation_server_test; + }; + B398303929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D23F4BAB12A868A500686C8D; + remoteInfo = minidump_generator_test_helper; + }; + B398303C29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D2D29239F4900A82429 /* Breakpad.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D2AAC07E0554694100DB518D; + remoteInfo = Breakpad; + }; + B398303F29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4829239F4700A82429 /* crash_report.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8DD76FA10486AA7600D96B5E; + remoteInfo = crash_report; + }; + B398304929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FD5F9BE40E0DEBEA008E885B; + remoteInfo = Accel; + }; + B398304B29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDC52EDE0E2843D6008D768C; + remoteInfo = Fireworks; + }; + B398304D29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FD15FCB20E086866003BDF25; + remoteInfo = Happy; + }; + B398304F29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FA30DE961BBF59D9009C397F; + remoteInfo = "Happy-TV"; + }; + B398305129239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDB6520C0E43D1F300F688B5; + remoteInfo = Keyboard; + }; + B398305329239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDF0D6A40E12D05400247964; + remoteInfo = Mixer; + }; + B398305529239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1D6058910D05DD3D006BFB54; + remoteInfo = Rectangles; + }; + B398305729239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDC202EE0E107B1200ABAC90; + remoteInfo = Touch; + }; + B398306929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B8C5B5111166531A00D34F4E; + remoteInfo = dump_syms; + }; + B398306B29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B89E0E741166575200DD08C9; + remoteInfo = macho_dump; + }; + B398306D29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB024116BDFFF00407530; + remoteInfo = gtestmockall; + }; + B398306F29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB14B116CF4A700407530; + remoteInfo = byte_cursor_unittest; + }; + B398307129239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B89E0E9511665A6400DD08C9; + remoteInfo = macho_reader_unittest; + }; + B398307329239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB007116BDE8300407530; + remoteInfo = stabs_reader_unittest; + }; + B398307529239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB135116CF30F00407530; + remoteInfo = bytereader_unittest; + }; + B398307729239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FAF2F116A591E00407530; + remoteInfo = dwarf2reader_cfi_unittest; + }; + B398307929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB0DF116CEEA800407530; + remoteInfo = dwarf2diehandler_unittest; + }; + B398307B29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB10A116CF07900407530; + remoteInfo = dwarf_cu_to_module_unittest; + }; + B398307D29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB0F2116CEF1900407530; + remoteInfo = dwarf_line_to_module_unittest; + }; + B398307F29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB11F116CF27F00407530; + remoteInfo = dwarf_cfi_to_module_unittest; + }; + B398308129239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B84A91F4116CF784006C210E; + remoteInfo = stabs_to_module_unittest; + }; + B398308329239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B88FB0B9116CEABF00407530; + remoteInfo = module_unittest; + }; + B398308529239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D21F97D211CBA0F200239E38; + remoteInfo = test_assembler_unittest; + }; + B398309729239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4B01D68B15B2F3F1002D5007; + remoteInfo = libzip; + }; + B398309929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4B01D6FD15B2F4B1002D5007; + remoteInfo = zipmerge; + }; + B398309B29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4B01D71315B2F4EB002D5007; + remoteInfo = zipcmp; + }; + B398309D29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D7E35371B3305FB00022624; + remoteInfo = "in-memory"; + }; + B398309F29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4BACD5C115BC2DC900920691; + remoteInfo = add_from_filep; + }; + B39830A129239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4BFF2B511FE12FCA006EF3F3; + remoteInfo = can_clone_file; + }; + B39830A329239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4BACD5D015BC2DF200920691; + remoteInfo = fopen_unchanged; + }; + B39830A529239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4BACD5DF15BC2F3700920691; + remoteInfo = fread; + }; + B39830A729239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4BD6CB6C19E71CD100710654; + remoteInfo = hole; + }; + B39830A929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4BACD58915BC2CEA00920691; + remoteInfo = ziptool; + }; + B39830AB29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4BACD65015BC301300920691; + remoteInfo = tryopen; + }; + B39830AD29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B398242029239F4400A82429 /* libzip.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4B51DDC01FDAE20A00C5CA85; + remoteInfo = ziptool_regress; + }; + B39830B529239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D4529239F4900A82429 /* minidump_test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8DD76F6C0486A84900D96B5E; + remoteInfo = generator_test; + }; + B39830B729239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D4529239F4900A82429 /* minidump_test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9BD82A9B0B00267E0055103E; + remoteInfo = handler_test; + }; + B39830B929239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D4529239F4900A82429 /* minidump_test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9B7CA84E0B1297F200CD3A1D; + remoteInfo = unit_test; + }; + B39830BB29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D4529239F4900A82429 /* minidump_test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F9AE19C30DB04A9500C98454; + remoteInfo = minidump_tests64; + }; + B39830BD29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D4529239F4900A82429 /* minidump_test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F9AE5B330DBFDBA300505983; + remoteInfo = minidump_tests32; + }; + B39830BF29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982D4529239F4900A82429 /* minidump_test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F93A88750E8B4C700026AF89; + remoteInfo = "obj-c_TestCases"; + }; + B39830CE29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BECDF66C0761BA81005FE872; + remoteInfo = Framework; + }; + B39830D029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A7D88B5423E2437C00DCD162; + remoteInfo = "Framework-iOS"; + }; + B39830D229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A7D88D1523E24BED00DCD162; + remoteInfo = "Framework-tvOS"; + }; + B39830D429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BECDF6B30761BA81005FE872; + remoteInfo = "Static Library"; + }; + B39830D629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A7D88E5423E24D3B00DCD162; + remoteInfo = "Static Library-iOS"; + }; + B39830D829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A769B23D23E259AE00872273; + remoteInfo = "Static Library-tvOS"; + }; + B39830DA29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB31407717554B71006C0E22; + remoteInfo = "Shared Library"; + }; + B39830DC29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A75FCEB323E25AB700529352; + remoteInfo = "Shared Library-iOS"; + }; + B39830DE29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A75FD06C23E25AC700529352; + remoteInfo = "Shared Library-tvOS"; + }; + B39830E029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BECDF6BE0761BA81005FE872; + remoteInfo = "Standard DMG"; + }; + B39830E229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A75FDB8C23E4C74400529352; + remoteInfo = hidapi; + }; + B39830E429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A75FDB4923E399AC00529352; + remoteInfo = "hidapi-iOS"; + }; + B39830E629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A75FDB6E23E3A2C900529352; + remoteInfo = "hidapi-tvOS"; + }; + B39830EA29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D0329239F4100A82429 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = AA1EE4461760589B0029C7A5; + remoteInfo = SDL2test; + }; + B39830EC29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981D0329239F4100A82429 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FA3D98F81BC4E5A2002C96C8; + remoteInfo = "SDL2test-TV"; + }; + B398311E29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166D7F16A1D12400A1396C; + remoteInfo = SDL_test; + }; + B398312029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC566B60761D90300A33029; + remoteInfo = checkkeys; + }; + B398312229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DBEC54EA1A1A81C3005B1EAB; + remoteInfo = controllermap; + }; + B398312429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC566D10761D90300A33029; + remoteInfo = loopwave; + }; + B398312629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0017958C10741F7900F5D044; + remoteInfo = testatomic; + }; + B398312829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 001795AD107421BF00F5D044; + remoteInfo = testaudioinfo; + }; + B398312A29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0017976E107431B300F5D044; + remoteInfo = testdraw2; + }; + B398312C29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB0F48EC17CA51E5008798C5; + remoteInfo = testdrawchessboard; + }; + B398312E29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB445EF818184B7000B306B0; + remoteInfo = testdropfile; + }; + B398313029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC567060761D90400A33029; + remoteInfo = testerror; + }; + B398313229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 002F341209CA1BFF00EBEB88; + remoteInfo = testfile; + }; + B398313429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB0F490117CA5212008798C5; + remoteInfo = testfilesystem; + }; + B398313629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BBFC08CD164C6862003E6A99; + remoteInfo = testgamecontroller; + }; + B398313829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166DBF16A1D2F600A1396C; + remoteInfo = testgesture; + }; + B398313A29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0017972110742F3200F5D044; + remoteInfo = testgl2; + }; + B398313C29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 00179748107430D600F5D044; + remoteInfo = testhaptic; + }; + B398313E29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB89957E18A19ABA0092407C; + remoteInfo = testhotplug; + }; + B398314029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 002F343109CA1F0300EBEB88; + remoteInfo = testiconv; + }; + B398314229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0017978E107432AE00F5D044; + remoteInfo = testime; + }; + B398314429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 001797AE1074334C00F5D044; + remoteInfo = testintersections; + }; + B398314629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC5673B0761D90400A33029; + remoteInfo = testjoystick; + }; + B398314829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC567480761D90400A33029; + remoteInfo = testkeys; + }; + B398314A29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 001797D0107433C600F5D044; + remoteInfo = testloadso; + }; + B398314C29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC567550761D90400A33029; + remoteInfo = testlock; + }; + B398314E29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166DD516A1D36A00A1396C; + remoteInfo = testmessage; + }; + B398315029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 001798121074355200F5D044; + remoteInfo = testmultiaudio; + }; + B398315229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 001798941074392D00F5D044; + remoteInfo = testnative; + }; + B398315429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 002F344D09CA1FB300EBEB88; + remoteInfo = testoverlay2; + }; + B398315629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 002F346A09CA204F00EBEB88; + remoteInfo = testplatform; + }; + B398315829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 001798B5107439DF00F5D044; + remoteInfo = testpower; + }; + B398315A29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166DEE16A1D50C00A1396C; + remoteInfo = testrelative; + }; + B398315C29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166E0516A1D57C00A1396C; + remoteInfo = testrendercopyex; + }; + B398315E29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166E1C16A1D5AD00A1396C; + remoteInfo = testrendertarget; + }; + B398316029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 001798F210743BEC00F5D044; + remoteInfo = testresample; + }; + B398316229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166E3816A1D64D00A1396C; + remoteInfo = testrumble; + }; + B398316429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166E5216A1D69000A1396C; + remoteInfo = testscale; + }; + B398316629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC5677D0761D90500A33029; + remoteInfo = testsem; + }; + B398316829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166E6816A1D6F300A1396C; + remoteInfo = testshader; + }; + B398316A29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4537749212091504002F0F45; + remoteInfo = testshape; + }; + B398316C29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0017991610743F1000F5D044; + remoteInfo = testsprite2; + }; + B398316E29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166E7E16A1D78400A1396C; + remoteInfo = testspriteminimal; + }; + B398317029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DB166E9116A1D78C00A1396C; + remoteInfo = teststreaming; + }; + B398317229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC5672E0761D90400A33029; + remoteInfo = testthread; + }; + B398317429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC567980761D90500A33029; + remoteInfo = testtimer; + }; + B398317629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC567B20761D90500A33029; + remoteInfo = testversion; + }; + B398317829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0017993810743FB700F5D044; + remoteInfo = testwm2; + }; + B398317A29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BEC567F50761D90600A33029; + remoteInfo = torturethread; + }; + B398317E29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A3F29239F4700A82429 /* symupload.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8DD76FA10486AA7600D96B5E; + remoteInfo = symupload; + }; + B398318029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3982A3F29239F4700A82429 /* symupload.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9BD835FB0B0544950055103E; + remoteInfo = minidump_upload; + }; + B39831A029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 047A63ED13285C3200CD7973; + remoteInfo = checkkeys; + }; + B39831A229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F3A499D3255618AF00E92A8B; + remoteInfo = controllermap; + }; + B39831A429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDA8AABB0E2D330F00EA573E; + remoteInfo = loopwav; + }; + B39831A629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FABA34AA1D8B582100915323; + remoteInfo = "loopwav-TV"; + }; + B39831A829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FABA34911D8B575200915323; + remoteInfo = testaudiocapture; + }; + B39831AA29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDAAC3CD0E2D47E6001DB1D8; + remoteInfo = testaudioinfo; + }; + B39831AC29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDC430000F0D866D009C87E1; + remoteInfo = testdraw2; + }; + B39831AE29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDAAC59B0E2D5429001DB1D8; + remoteInfo = testerror; + }; + B39831B029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDAAC5C90E2D55B5001DB1D8; + remoteInfo = testfile; + }; + B39831B229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FAE0E9931BAF9B230098DFA4; + remoteInfo = testgamecontroller; + }; + B39831B429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FA3D99341BC4E644002C96C8; + remoteInfo = "testgamecontroller-TV"; + }; + B39831B629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 046CEF8613254F23007AD51D; + remoteInfo = testgesture; + }; + B39831B829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDAAC6260E2D5914001DB1D8; + remoteInfo = testgles; + }; + B39831BA29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C1810E2E52C000B7A85F; + remoteInfo = testiconv; + }; + B39831BC29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C1A50E2E534F00B7A85F; + remoteInfo = testjoystick; + }; + B39831BE29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C45E0E2E773800B7A85F; + remoteInfo = testkeys; + }; + B39831C029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C47C0E2E77D700B7A85F; + remoteInfo = testlock; + }; + B39831C229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C50B0E2E7F4800B7A85F; + remoteInfo = testplatform; + }; + B39831C429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 56ED050D118A8FE400A56AA6; + remoteInfo = testpower; + }; + B39831C629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = AAE7DFB114CBB54E00DF1A0E; + remoteInfo = testrendertarget; + }; + B39831C829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = AAE7DEEC14CBB1E100DF1A0E; + remoteInfo = testscale; + }; + B39831CA29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C5290E2E807600B7A85F; + remoteInfo = testsem; + }; + B39831CC29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F395BF9A2564186400942BFF; + remoteInfo = testsensor; + }; + B39831CE29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C54E0E2E80E400B7A85F; + remoteInfo = testsprite2; + }; + B39831D029239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C10A0E2E4F4B00B7A85F; + remoteInfo = testthread; + }; + B39831D229239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C5870E2E8C7400B7A85F; + remoteInfo = testtimer; + }; + B39831D429239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C5C50E2E8CFC00B7A85F; + remoteInfo = testver; + }; + B39831D629239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1D6058910D05DD3D006BFB54; + remoteInfo = testwm2; + }; + B39831D829239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = AA13B3261FB8AEBC00D9FEE6; + remoteInfo = testyuv; + }; + B39831DA29239F4B00A82429 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = FDD2C6F40E2E959E00B7A85F; + remoteInfo = torturethread; }; /* End PBXContainerItemProxy section */ -/* Begin PBXCopyFilesBuildPhase section */ - B30178D1207C901D0051B93D /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libflycast.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libflycast.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B316B4E621926FE500693472 /* emu.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emu.cfg; sourceTree = ""; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447E96218B809200557ACE /* PVFlycastCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Controls.h"; sourceTree = ""; }; + B3447E97218B809300557ACE /* PVFlycastCore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVFlycastCore+Controls.mm"; sourceTree = ""; }; + B3447E9A218B826F00557ACE /* PVFlycast+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycast+Audio.h"; sourceTree = ""; }; + B3447E9B218B826F00557ACE /* PVFlycast+Audio.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVFlycast+Audio.mm"; sourceTree = ""; }; + B3447EA0218B881000557ACE /* PVFlycast.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVFlycast.mm; sourceTree = ""; }; + B3447EA2218BBFB700557ACE /* PVFlycast+AudioTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycast+AudioTypes.h"; sourceTree = ""; }; + B3447EA4218BC36B00557ACE /* PVFlycast+CoreAudio.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVFlycast+CoreAudio.mm"; sourceTree = ""; }; + B3447EA6218BC3A600557ACE /* PVFlycast+CoreAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVFlycast+CoreAudio.h"; sourceTree = ""; }; + B3447EA9218BC59D00557ACE /* PVFlycastCore+Saves.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Saves.h"; sourceTree = ""; }; + B3447EAA218BC59D00557ACE /* PVFlycastCore+Saves.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVFlycastCore+Saves.m"; sourceTree = ""; }; + B3447EAD218BC5C500557ACE /* PVFlycastCore+Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Video.h"; sourceTree = ""; }; + B3447EAE218BC5C500557ACE /* PVFlycastCore+Video.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVFlycastCore+Video.m"; sourceTree = ""; }; + B3447EB1218BC69700557ACE /* PVFlycastCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Audio.h"; sourceTree = ""; }; + B3447EB2218BC69700557ACE /* PVFlycastCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVFlycastCore+Audio.m"; sourceTree = ""; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B3980D8429239F3600A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980D8729239F3600A82429 /* rec_x64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x64.cpp; sourceTree = ""; }; + B3980D8829239F3600A82429 /* xbyak_base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_base.h; sourceTree = ""; }; + B3980D8929239F3600A82429 /* x64_regalloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x64_regalloc.h; sourceTree = ""; }; + B3980D8A29239F3600A82429 /* serialize.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = serialize.cpp; sourceTree = ""; }; + B3980D8B29239F3600A82429 /* cheats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cheats.cpp; sourceTree = ""; }; + B3980D8E29239F3600A82429 /* holly_intc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = holly_intc.h; sourceTree = ""; }; + B3980D8F29239F3600A82429 /* sb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sb.h; sourceTree = ""; }; + B3980D9029239F3600A82429 /* sb_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sb_mem.cpp; sourceTree = ""; }; + B3980D9129239F3600A82429 /* sb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sb.cpp; sourceTree = ""; }; + B3980D9229239F3600A82429 /* holly_intc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = holly_intc.cpp; sourceTree = ""; }; + B3980D9329239F3600A82429 /* sb_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sb_mem.h; sourceTree = ""; }; + B3980D9529239F3600A82429 /* sh4_cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_cache.h; sourceTree = ""; }; + B3980D9629239F3600A82429 /* sh4_rom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_rom.h; sourceTree = ""; }; + B3980D9829239F3600A82429 /* shil.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shil.cpp; sourceTree = ""; }; + B3980D9929239F3600A82429 /* shil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shil.h; sourceTree = ""; }; + B3980D9A29239F3600A82429 /* ngen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ngen.h; sourceTree = ""; }; + B3980D9B29239F3600A82429 /* decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decoder.h; sourceTree = ""; }; + B3980D9C29239F3600A82429 /* driver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = driver.cpp; sourceTree = ""; }; + B3980D9D29239F3600A82429 /* ssa_regalloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ssa_regalloc.h; sourceTree = ""; }; + B3980D9E29239F3600A82429 /* decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decoder.cpp; sourceTree = ""; }; + B3980D9F29239F3600A82429 /* ssa.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ssa.cpp; sourceTree = ""; }; + B3980DA029239F3600A82429 /* blockmanager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = blockmanager.cpp; sourceTree = ""; }; + B3980DA129239F3600A82429 /* blockmanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blockmanager.h; sourceTree = ""; }; + B3980DA229239F3600A82429 /* shil_canonical.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shil_canonical.h; sourceTree = ""; }; + B3980DA329239F3600A82429 /* ssa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ssa.h; sourceTree = ""; }; + B3980DA429239F3600A82429 /* decoder_opcodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decoder_opcodes.h; sourceTree = ""; }; + B3980DA529239F3600A82429 /* sh4_opcode_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_opcode_list.h; sourceTree = ""; }; + B3980DA629239F3600A82429 /* sh4_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_if.h; sourceTree = ""; }; + B3980DA729239F3600A82429 /* sh4_interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_interpreter.h; sourceTree = ""; }; + B3980DA829239F3600A82429 /* fsca-table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "fsca-table.h"; sourceTree = ""; }; + B3980DA929239F3600A82429 /* sh4_sched.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_sched.cpp; sourceTree = ""; }; + B3980DAA29239F3600A82429 /* sh4_opcode_list.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_opcode_list.cpp; sourceTree = ""; }; + B3980DAB29239F3600A82429 /* sh4_mmr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_mmr.h; sourceTree = ""; }; + B3980DAC29239F3600A82429 /* sh4_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_mem.h; sourceTree = ""; }; + B3980DAD29239F3600A82429 /* sh4_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_mem.cpp; sourceTree = ""; }; + B3980DAF29239F3600A82429 /* sh4_opcodes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_opcodes.cpp; sourceTree = ""; }; + B3980DB029239F3600A82429 /* sh4_interpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_interpreter.cpp; sourceTree = ""; }; + B3980DB129239F3600A82429 /* sh4_opcodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_opcodes.h; sourceTree = ""; }; + B3980DB229239F3600A82429 /* sh4_fpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_fpu.cpp; sourceTree = ""; }; + B3980DB329239F3600A82429 /* sh4_interrupts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_interrupts.cpp; sourceTree = ""; }; + B3980DB429239F3600A82429 /* sh4_interrupts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_interrupts.h; sourceTree = ""; }; + B3980DB529239F3600A82429 /* sh4_core_regs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_core_regs.cpp; sourceTree = ""; }; + B3980DB629239F3600A82429 /* sh4_mmr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_mmr.cpp; sourceTree = ""; }; + B3980DB829239F3600A82429 /* ubc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ubc.cpp; sourceTree = ""; }; + B3980DB929239F3600A82429 /* intc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = intc.cpp; sourceTree = ""; }; + B3980DBA29239F3600A82429 /* mmu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mmu.h; sourceTree = ""; }; + B3980DBB29239F3600A82429 /* bsc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bsc.cpp; sourceTree = ""; }; + B3980DBC29239F3600A82429 /* ccn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ccn.cpp; sourceTree = ""; }; + B3980DBD29239F3600A82429 /* dmac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dmac.h; sourceTree = ""; }; + B3980DBE29239F3600A82429 /* modules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modules.h; sourceTree = ""; }; + B3980DBF29239F3600A82429 /* fastmmu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fastmmu.cpp; sourceTree = ""; }; + B3980DC029239F3600A82429 /* dmac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dmac.cpp; sourceTree = ""; }; + B3980DC129239F3600A82429 /* serial.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = serial.cpp; sourceTree = ""; }; + B3980DC229239F3600A82429 /* rtc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rtc.cpp; sourceTree = ""; }; + B3980DC329239F3600A82429 /* tmu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tmu.cpp; sourceTree = ""; }; + B3980DC429239F3600A82429 /* mmu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mmu.cpp; sourceTree = ""; }; + B3980DC529239F3600A82429 /* ccn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ccn.h; sourceTree = ""; }; + B3980DC629239F3600A82429 /* cpg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpg.cpp; sourceTree = ""; }; + B3980DC729239F3600A82429 /* wince.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wince.h; sourceTree = ""; }; + B3980DC829239F3600A82429 /* sh4_rom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_rom.cpp; sourceTree = ""; }; + B3980DC929239F3600A82429 /* sh4_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_core.h; sourceTree = ""; }; + B3980DCA29239F3600A82429 /* sh4_sched.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_sched.h; sourceTree = ""; }; + B3980DCC29239F3600A82429 /* gdrom_response.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdrom_response.cpp; sourceTree = ""; }; + B3980DCD29239F3600A82429 /* gdromv3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdromv3.cpp; sourceTree = ""; }; + B3980DCE29239F3600A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3980DCF29239F3600A82429 /* gdromv3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdromv3.h; sourceTree = ""; }; + B3980DD029239F3600A82429 /* gdrom_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdrom_if.h; sourceTree = ""; }; + B3980DD229239F3600A82429 /* ta_structs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta_structs.h; sourceTree = ""; }; + B3980DD329239F3600A82429 /* ta_ctx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ta_ctx.cpp; sourceTree = ""; }; + B3980DD429239F3600A82429 /* pvr_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pvr_mem.cpp; sourceTree = ""; }; + B3980DD529239F3600A82429 /* Renderer_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Renderer_if.h; sourceTree = ""; }; + B3980DD629239F3600A82429 /* ta_ctx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta_ctx.h; sourceTree = ""; }; + B3980DD729239F3600A82429 /* spg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spg.cpp; sourceTree = ""; }; + B3980DD829239F3600A82429 /* pvr_sb_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pvr_sb_regs.h; sourceTree = ""; }; + B3980DD929239F3600A82429 /* pvr_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pvr_mem.h; sourceTree = ""; }; + B3980DDA29239F3600A82429 /* pvr_sb_regs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pvr_sb_regs.cpp; sourceTree = ""; }; + B3980DDB29239F3600A82429 /* helper_classes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = helper_classes.h; sourceTree = ""; }; + B3980DDC29239F3600A82429 /* ta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta.h; sourceTree = ""; }; + B3980DDD29239F3600A82429 /* spg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spg.h; sourceTree = ""; }; + B3980DDE29239F3600A82429 /* pvr_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pvr_regs.h; sourceTree = ""; }; + B3980DDF29239F3600A82429 /* drkPvr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = drkPvr.cpp; sourceTree = ""; }; + B3980DE029239F3600A82429 /* Renderer_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Renderer_if.cpp; sourceTree = ""; }; + B3980DE129239F3600A82429 /* ta_vtx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ta_vtx.cpp; sourceTree = ""; }; + B3980DE229239F3600A82429 /* ta_const_df.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta_const_df.h; sourceTree = ""; }; + B3980DE329239F3600A82429 /* pvr_regs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pvr_regs.cpp; sourceTree = ""; }; + B3980DE429239F3600A82429 /* ta.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ta.cpp; sourceTree = ""; }; + B3980DE629239F3600A82429 /* flashrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flashrom.h; sourceTree = ""; }; + B3980DE729239F3600A82429 /* flashrom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = flashrom.cpp; sourceTree = ""; }; + B3980DE929239F3600A82429 /* awcartridge.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = awcartridge.cpp; sourceTree = ""; }; + B3980DEA29239F3600A82429 /* naomi_roms_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_roms_input.h; sourceTree = ""; }; + B3980DEB29239F3600A82429 /* decrypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decrypt.h; sourceTree = ""; }; + B3980DEC29239F3600A82429 /* naomi_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_regs.h; sourceTree = ""; }; + B3980DED29239F3600A82429 /* decrypt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decrypt.cpp; sourceTree = ""; }; + B3980DEE29239F3600A82429 /* naomi_flashrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_flashrom.h; sourceTree = ""; }; + B3980DEF29239F3600A82429 /* m1cartridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m1cartridge.h; sourceTree = ""; }; + B3980DF029239F3600A82429 /* m4cartridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m4cartridge.h; sourceTree = ""; }; + B3980DF129239F3600A82429 /* naomi_cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_cart.h; sourceTree = ""; }; + B3980DF229239F3600A82429 /* m1cartridge.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m1cartridge.cpp; sourceTree = ""; }; + B3980DF329239F3600A82429 /* gdcartridge.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdcartridge.cpp; sourceTree = ""; }; + B3980DF429239F3600A82429 /* m4cartridge.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = m4cartridge.cpp; sourceTree = ""; }; + B3980DF529239F3600A82429 /* naomi_flashrom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi_flashrom.cpp; sourceTree = ""; }; + B3980DF629239F3600A82429 /* naomi_roms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_roms.h; sourceTree = ""; }; + B3980DF729239F3600A82429 /* naomi_cart.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi_cart.cpp; sourceTree = ""; }; + B3980DF829239F3600A82429 /* awcartridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = awcartridge.h; sourceTree = ""; }; + B3980DF929239F3600A82429 /* naomi_m3comm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi_m3comm.cpp; sourceTree = ""; }; + B3980DFA29239F3600A82429 /* naomi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi.h; sourceTree = ""; }; + B3980DFB29239F3600A82429 /* naomi_roms_eeprom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_roms_eeprom.h; sourceTree = ""; }; + B3980DFC29239F3600A82429 /* naomi_roms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi_roms.cpp; sourceTree = ""; }; + B3980DFD29239F3600A82429 /* naomi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi.cpp; sourceTree = ""; }; + B3980DFE29239F3600A82429 /* awave_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = awave_regs.h; sourceTree = ""; }; + B3980DFF29239F3600A82429 /* naomi_m3comm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_m3comm.h; sourceTree = ""; }; + B3980E0029239F3600A82429 /* gdcartridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdcartridge.h; sourceTree = ""; }; + B3980E0229239F3600A82429 /* maple_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_helper.h; sourceTree = ""; }; + B3980E0329239F3600A82429 /* maple_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_if.cpp; sourceTree = ""; }; + B3980E0429239F3600A82429 /* maple_jvs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_jvs.cpp; sourceTree = ""; }; + B3980E0529239F3600A82429 /* maple_helper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_helper.cpp; sourceTree = ""; }; + B3980E0629239F3600A82429 /* maple_cfg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_cfg.h; sourceTree = ""; }; + B3980E0729239F3600A82429 /* maple_cfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_cfg.cpp; sourceTree = ""; }; + B3980E0829239F3600A82429 /* maple_devs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_devs.h; sourceTree = ""; }; + B3980E0929239F3600A82429 /* maple_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_if.h; sourceTree = ""; }; + B3980E0A29239F3600A82429 /* maple_devs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_devs.cpp; sourceTree = ""; }; + B3980E0C29239F3600A82429 /* modem_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modem_regs.h; sourceTree = ""; }; + B3980E0D29239F3600A82429 /* modem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modem.h; sourceTree = ""; }; + B3980E0E29239F3600A82429 /* modem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = modem.cpp; sourceTree = ""; }; + B3980E1029239F3600A82429 /* arm_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_mem.cpp; sourceTree = ""; }; + B3980E1129239F3600A82429 /* arm_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_mem.h; sourceTree = ""; }; + B3980E1229239F3600A82429 /* arm7_rec_x64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7_rec_x64.cpp; sourceTree = ""; }; + B3980E1329239F3600A82429 /* arm7_rec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm7_rec.h; sourceTree = ""; }; + B3980E1429239F3600A82429 /* arm7.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm7.h; sourceTree = ""; }; + B3980E1529239F3600A82429 /* arm7.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7.cpp; sourceTree = ""; }; + B3980E1629239F3600A82429 /* arm7_rec_arm32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7_rec_arm32.cpp; sourceTree = ""; }; + B3980E1729239F3600A82429 /* vbaARM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vbaARM.cpp; sourceTree = ""; }; + B3980E1829239F3600A82429 /* arm7_rec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7_rec.cpp; sourceTree = ""; }; + B3980E1929239F3600A82429 /* arm7_rec_arm64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7_rec_arm64.cpp; sourceTree = ""; }; + B3980E1A29239F3600A82429 /* arm-new.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "arm-new.h"; sourceTree = ""; }; + B3980E1C29239F3600A82429 /* aica_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aica_if.cpp; sourceTree = ""; }; + B3980E1D29239F3600A82429 /* dsp_x64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp_x64.cpp; sourceTree = ""; }; + B3980E1E29239F3600A82429 /* aica.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aica.h; sourceTree = ""; }; + B3980E1F29239F3600A82429 /* dsp_arm64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp_arm64.cpp; sourceTree = ""; }; + B3980E2029239F3600A82429 /* dsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp.cpp; sourceTree = ""; }; + B3980E2129239F3600A82429 /* aica_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aica_mem.cpp; sourceTree = ""; }; + B3980E2229239F3600A82429 /* dsp_x86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp_x86.cpp; sourceTree = ""; }; + B3980E2329239F3600A82429 /* aica.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aica.cpp; sourceTree = ""; }; + B3980E2429239F3600A82429 /* aica_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aica_mem.h; sourceTree = ""; }; + B3980E2529239F3600A82429 /* dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; + B3980E2629239F3600A82429 /* dsp_interp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp_interp.cpp; sourceTree = ""; }; + B3980E2729239F3600A82429 /* sgc_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sgc_if.h; sourceTree = ""; }; + B3980E2829239F3600A82429 /* dsp_arm32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp_arm32.cpp; sourceTree = ""; }; + B3980E2929239F3600A82429 /* aica_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aica_if.h; sourceTree = ""; }; + B3980E2A29239F3600A82429 /* sgc_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sgc_if.cpp; sourceTree = ""; }; + B3980E2C29239F3600A82429 /* rtl8139c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtl8139c.h; sourceTree = ""; }; + B3980E2D29239F3600A82429 /* bba.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bba.h; sourceTree = ""; }; + B3980E2E29239F3600A82429 /* rtl8139c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rtl8139c.cpp; sourceTree = ""; }; + B3980E2F29239F3600A82429 /* bba.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bba.cpp; sourceTree = ""; }; + B3980E3129239F3600A82429 /* _vmem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _vmem.h; sourceTree = ""; }; + B3980E3229239F3600A82429 /* _vmem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = _vmem.cpp; sourceTree = ""; }; + B3980E3429239F3600A82429 /* rzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rzip.h; sourceTree = ""; }; + B3980E3529239F3600A82429 /* ZipArchive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ZipArchive.cpp; sourceTree = ""; }; + B3980E3629239F3600A82429 /* 7zArchive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 7zArchive.cpp; sourceTree = ""; }; + B3980E3729239F3600A82429 /* archive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive.h; sourceTree = ""; }; + B3980E3829239F3600A82429 /* ZipArchive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZipArchive.h; sourceTree = ""; }; + B3980E3929239F3600A82429 /* rzip.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rzip.cpp; sourceTree = ""; }; + B3980E3A29239F3600A82429 /* archive.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = archive.cpp; sourceTree = ""; }; + B3980E3B29239F3600A82429 /* 7zArchive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zArchive.h; sourceTree = ""; }; + B3980E3C29239F3600A82429 /* version.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.h.in; sourceTree = ""; }; + B3980E3D29239F3600A82429 /* build.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = build.h; sourceTree = ""; }; + B3980E3E29239F3600A82429 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B3980E4029239F3600A82429 /* mapping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mapping.h; sourceTree = ""; }; + B3980E4129239F3600A82429 /* gamepad_device.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gamepad_device.cpp; sourceTree = ""; }; + B3980E4229239F3600A82429 /* mapping.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mapping.cpp; sourceTree = ""; }; + B3980E4329239F3600A82429 /* gamepad_device.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gamepad_device.h; sourceTree = ""; }; + B3980E4429239F3700A82429 /* keyboard_device.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard_device.h; sourceTree = ""; }; + B3980E4529239F3700A82429 /* gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gamepad.h; sourceTree = ""; }; + B3980E4629239F3700A82429 /* emulator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emulator.cpp; sourceTree = ""; }; + B3980E4829239F3700A82429 /* naomi_network.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_network.h; sourceTree = ""; }; + B3980E4929239F3700A82429 /* naomi_network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi_network.cpp; sourceTree = ""; }; + B3980E4A29239F3700A82429 /* picoppp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = picoppp.cpp; sourceTree = ""; }; + B3980E4B29239F3700A82429 /* picoppp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = picoppp.h; sourceTree = ""; }; + B3980E4C29239F3700A82429 /* miniupnp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniupnp.h; sourceTree = ""; }; + B3980E4D29239F3700A82429 /* ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ifaddrs.c; sourceTree = ""; }; + B3980E4E29239F3700A82429 /* miniupnp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = miniupnp.cpp; sourceTree = ""; }; + B3980E4F29239F3700A82429 /* dns.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dns.cpp; sourceTree = ""; }; + B3980E5029239F3700A82429 /* net_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_platform.h; sourceTree = ""; }; + B3980E5229239F3700A82429 /* gdi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdi.cpp; sourceTree = ""; }; + B3980E5329239F3700A82429 /* common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = common.cpp; sourceTree = ""; }; + B3980E5429239F3700A82429 /* cdi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdi.cpp; sourceTree = ""; }; + B3980E5529239F3700A82429 /* ImgReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ImgReader.cpp; sourceTree = ""; }; + B3980E5629239F3700A82429 /* cue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cue.cpp; sourceTree = ""; }; + B3980E5729239F3700A82429 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B3980E5829239F3700A82429 /* ioctl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ioctl.cpp; sourceTree = ""; }; + B3980E5929239F3700A82429 /* chd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = chd.cpp; sourceTree = ""; }; + B3980E5B29239F3700A82429 /* cfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg.cpp; sourceTree = ""; }; + B3980E5C29239F3700A82429 /* ini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ini.h; sourceTree = ""; }; + B3980E5D29239F3700A82429 /* option.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = option.h; sourceTree = ""; }; + B3980E5E29239F3700A82429 /* option.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = option.cpp; sourceTree = ""; }; + B3980E5F29239F3700A82429 /* ini.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ini.cpp; sourceTree = ""; }; + B3980E6029239F3700A82429 /* cl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cl.cpp; sourceTree = ""; }; + B3980E6129239F3700A82429 /* cfg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfg.h; sourceTree = ""; }; + B3980E6229239F3700A82429 /* emulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emulator.h; sourceTree = ""; }; + B3980E6329239F3700A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3980E6429239F3700A82429 /* cheats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheats.h; sourceTree = ""; }; + B3980E6529239F3700A82429 /* nullDC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nullDC.cpp; sourceTree = ""; }; + B3980E6729239F3700A82429 /* rec_arm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_arm.cpp; sourceTree = ""; }; + B3980E6829239F3700A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3980E6A29239F3700A82429 /* rec_arm64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_arm64.cpp; sourceTree = ""; }; + B3980E6B29239F3700A82429 /* arm64_regalloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm64_regalloc.h; sourceTree = ""; }; + B3980E6C29239F3700A82429 /* arm64_unwind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm64_unwind.h; sourceTree = ""; }; + B3980E6E29239F3700A82429 /* egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = egl.h; sourceTree = ""; }; + B3980E6F29239F3700A82429 /* osx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = osx.cpp; sourceTree = ""; }; + B3980E7029239F3700A82429 /* wgl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wgl.h; sourceTree = ""; }; + B3980E7129239F3700A82429 /* wgl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wgl.cpp; sourceTree = ""; }; + B3980E7229239F3700A82429 /* gl32funcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl32funcs.h; sourceTree = ""; }; + B3980E7329239F3700A82429 /* context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = context.h; sourceTree = ""; }; + B3980E7429239F3700A82429 /* gl4funcs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl4funcs.cpp; sourceTree = ""; }; + B3980E7529239F3700A82429 /* gl_context.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl_context.cpp; sourceTree = ""; }; + B3980E7629239F3700A82429 /* sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl.cpp; sourceTree = ""; }; + B3980E7729239F3700A82429 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3980E7829239F3700A82429 /* switcher.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = switcher.cpp; sourceTree = ""; }; + B3980E7929239F3700A82429 /* libretro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cpp; sourceTree = ""; }; + B3980E7A29239F3700A82429 /* gl32funcs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl32funcs.c; sourceTree = ""; }; + B3980E7B29239F3700A82429 /* egl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = egl.cpp; sourceTree = ""; }; + B3980E7C29239F3700A82429 /* xgl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xgl.h; sourceTree = ""; }; + B3980E7D29239F3700A82429 /* sdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl.h; sourceTree = ""; }; + B3980E7E29239F3700A82429 /* osx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osx.h; sourceTree = ""; }; + B3980E7F29239F3700A82429 /* gl_context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_context.h; sourceTree = ""; }; + B3980E8029239F3700A82429 /* xgl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = xgl.cpp; sourceTree = ""; }; + B3980E8229239F3700A82429 /* sdl_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl_keyboard.h; sourceTree = ""; }; + B3980E8329239F3700A82429 /* sdl_gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl_gamepad.h; sourceTree = ""; }; + B3980E8429239F3700A82429 /* sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl.cpp; sourceTree = ""; }; + B3980E8529239F3700A82429 /* sdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl.h; sourceTree = ""; }; + B3980E8729239F3700A82429 /* common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = common.cpp; sourceTree = ""; }; + B3980E8829239F3700A82429 /* posix_vmem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = posix_vmem.cpp; sourceTree = ""; }; + B3980E8929239F3700A82429 /* context.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = context.cpp; sourceTree = ""; }; + B3980E8A29239F3700A82429 /* unwind_info.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = unwind_info.cpp; sourceTree = ""; }; + B3980E8B29239F3700A82429 /* libnx_vmem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libnx_vmem.cpp; sourceTree = ""; }; + B3980E8C29239F3700A82429 /* stdclass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdclass.h; sourceTree = ""; }; + B3980E8D29239F3700A82429 /* stdclass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stdclass.cpp; sourceTree = ""; }; + B3980E9029239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980E9229239F3700A82429 /* test_convert.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_convert.cpp; sourceTree = ""; }; + B3980E9329239F3700A82429 /* test_iostream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_iostream.cpp; sourceTree = ""; }; + B3980E9429239F3700A82429 /* test_fstream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_fstream.cpp; sourceTree = ""; }; + B3980E9529239F3700A82429 /* test_system.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_system.cpp; sourceTree = ""; }; + B3980E9629239F3700A82429 /* test.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = test.hpp; sourceTree = ""; }; + B3980E9729239F3700A82429 /* test_env.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_env.cpp; sourceTree = ""; }; + B3980E9829239F3700A82429 /* test_stdio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_stdio.cpp; sourceTree = ""; }; + B3980E9B29239F3700A82429 /* iostream.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = iostream.hpp; sourceTree = ""; }; + B3980E9C29239F3700A82429 /* scoped_ptr.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scoped_ptr.hpp; sourceTree = ""; }; + B3980E9D29239F3700A82429 /* utf.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = utf.hpp; sourceTree = ""; }; + B3980E9E29239F3700A82429 /* config.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = config.hpp; sourceTree = ""; }; + B3980E9F29239F3700A82429 /* system.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = system.hpp; sourceTree = ""; }; + B3980EA029239F3700A82429 /* encoding_errors.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = encoding_errors.hpp; sourceTree = ""; }; + B3980EA129239F3700A82429 /* cstdio.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cstdio.hpp; sourceTree = ""; }; + B3980EA229239F3700A82429 /* stackstring.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = stackstring.hpp; sourceTree = ""; }; + B3980EA329239F3700A82429 /* cenv.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cenv.hpp; sourceTree = ""; }; + B3980EA429239F3700A82429 /* encoding_utf.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = encoding_utf.hpp; sourceTree = ""; }; + B3980EA529239F3700A82429 /* windows.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = windows.hpp; sourceTree = ""; }; + B3980EA629239F3700A82429 /* cstdlib.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cstdlib.hpp; sourceTree = ""; }; + B3980EA729239F3700A82429 /* args.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = args.hpp; sourceTree = ""; }; + B3980EA829239F3700A82429 /* fstream.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fstream.hpp; sourceTree = ""; }; + B3980EA929239F3700A82429 /* filebuf.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = filebuf.hpp; sourceTree = ""; }; + B3980EAA29239F3700A82429 /* convert.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = convert.hpp; sourceTree = ""; }; + B3980EAB29239F3700A82429 /* Doxyfile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile.in; sourceTree = ""; }; + B3980EAE29239F3700A82429 /* NoWide-Android.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "NoWide-Android.vcxproj"; sourceTree = ""; }; + B3980EAF29239F3700A82429 /* NoWide-Windows.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "NoWide-Windows.vcxproj"; sourceTree = ""; }; + B3980EB029239F3700A82429 /* NoWide-Android.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "NoWide-Android.vcxproj.filters"; sourceTree = ""; }; + B3980EB129239F3700A82429 /* NoWide.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = NoWide.sln; sourceTree = ""; }; + B3980EB229239F3700A82429 /* NoWide-Windows.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "NoWide-Windows.vcxproj.filters"; sourceTree = ""; }; + B3980EB529239F3700A82429 /* FindHHC.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindHHC.cmake; sourceTree = ""; }; + B3980EB629239F3700A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3980EB729239F3700A82429 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3980EB929239F3700A82429 /* iostream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = iostream.cpp; sourceTree = ""; }; + B3980EBB29239F3700A82429 /* platform-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "platform-vixl.h"; sourceTree = ""; }; + B3980EBC29239F3700A82429 /* pool-manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "pool-manager.h"; sourceTree = ""; }; + B3980EBD29239F3700A82429 /* cpu-features.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "cpu-features.cc"; sourceTree = ""; }; + B3980EBE29239F3700A82429 /* pool-manager-impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "pool-manager-impl.h"; sourceTree = ""; }; + B3980EBF29239F3700A82429 /* invalset-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "invalset-vixl.h"; sourceTree = ""; }; + B3980EC029239F3700A82429 /* macro-assembler-interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "macro-assembler-interface.h"; sourceTree = ""; }; + B3980EC129239F3700A82429 /* utils-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "utils-vixl.h"; sourceTree = ""; }; + B3980EC229239F3700A82429 /* utils-vixl.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "utils-vixl.cc"; sourceTree = ""; }; + B3980EC329239F3700A82429 /* code-buffer-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "code-buffer-vixl.h"; sourceTree = ""; }; + B3980EC429239F3700A82429 /* assembler-base-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "assembler-base-vixl.h"; sourceTree = ""; }; + B3980EC529239F3700A82429 /* compiler-intrinsics-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "compiler-intrinsics-vixl.h"; sourceTree = ""; }; + B3980EC629239F3700A82429 /* compiler-intrinsics-vixl.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "compiler-intrinsics-vixl.cc"; sourceTree = ""; }; + B3980EC829239F3700A82429 /* assembler-aarch32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "assembler-aarch32.cc"; sourceTree = ""; }; + B3980EC929239F3700A82429 /* location-aarch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "location-aarch32.h"; sourceTree = ""; }; + B3980ECA29239F3700A82429 /* location-aarch32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "location-aarch32.cc"; sourceTree = ""; }; + B3980ECB29239F3700A82429 /* assembler-aarch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "assembler-aarch32.h"; sourceTree = ""; }; + B3980ECC29239F3700A82429 /* operands-aarch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "operands-aarch32.h"; sourceTree = ""; }; + B3980ECD29239F3700A82429 /* disasm-aarch32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "disasm-aarch32.cc"; sourceTree = ""; }; + B3980ECE29239F3700A82429 /* operands-aarch32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "operands-aarch32.cc"; sourceTree = ""; }; + B3980ECF29239F3700A82429 /* macro-assembler-aarch32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "macro-assembler-aarch32.cc"; sourceTree = ""; }; + B3980ED029239F3700A82429 /* instructions-aarch32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "instructions-aarch32.cc"; sourceTree = ""; }; + B3980ED129239F3700A82429 /* constants-aarch32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "constants-aarch32.cc"; sourceTree = ""; }; + B3980ED229239F3700A82429 /* instructions-aarch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "instructions-aarch32.h"; sourceTree = ""; }; + B3980ED329239F3700A82429 /* macro-assembler-aarch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "macro-assembler-aarch32.h"; sourceTree = ""; }; + B3980ED429239F3700A82429 /* constants-aarch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "constants-aarch32.h"; sourceTree = ""; }; + B3980ED529239F3700A82429 /* disasm-aarch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "disasm-aarch32.h"; sourceTree = ""; }; + B3980ED629239F3700A82429 /* cpu-features.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "cpu-features.h"; sourceTree = ""; }; + B3980ED729239F3700A82429 /* code-generation-scopes-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "code-generation-scopes-vixl.h"; sourceTree = ""; }; + B3980ED829239F3700A82429 /* globals-vixl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "globals-vixl.h"; sourceTree = ""; }; + B3980EDA29239F3700A82429 /* instrument-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "instrument-aarch64.cc"; sourceTree = ""; }; + B3980EDB29239F3700A82429 /* cpu-features-auditor-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "cpu-features-auditor-aarch64.cc"; sourceTree = ""; }; + B3980EDC29239F3700A82429 /* cpu-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "cpu-aarch64.h"; sourceTree = ""; }; + B3980EDD29239F3700A82429 /* pointer-auth-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "pointer-auth-aarch64.cc"; sourceTree = ""; }; + B3980EDE29239F3700A82429 /* constants-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "constants-aarch64.h"; sourceTree = ""; }; + B3980EDF29239F3700A82429 /* instructions-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "instructions-aarch64.cc"; sourceTree = ""; }; + B3980EE029239F3700A82429 /* logic-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "logic-aarch64.cc"; sourceTree = ""; }; + B3980EE129239F3700A82429 /* disasm-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "disasm-aarch64.h"; sourceTree = ""; }; + B3980EE229239F3700A82429 /* simulator-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "simulator-aarch64.cc"; sourceTree = ""; }; + B3980EE329239F3700A82429 /* decoder-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "decoder-aarch64.h"; sourceTree = ""; }; + B3980EE429239F3700A82429 /* simulator-constants-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "simulator-constants-aarch64.h"; sourceTree = ""; }; + B3980EE529239F3700A82429 /* macro-assembler-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "macro-assembler-aarch64.h"; sourceTree = ""; }; + B3980EE629239F3700A82429 /* macro-assembler-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "macro-assembler-aarch64.cc"; sourceTree = ""; }; + B3980EE729239F3700A82429 /* instructions-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "instructions-aarch64.h"; sourceTree = ""; }; + B3980EE829239F3700A82429 /* disasm-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "disasm-aarch64.cc"; sourceTree = ""; }; + B3980EE929239F3700A82429 /* operands-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "operands-aarch64.cc"; sourceTree = ""; }; + B3980EEA29239F3700A82429 /* cpu-features-auditor-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "cpu-features-auditor-aarch64.h"; sourceTree = ""; }; + B3980EEB29239F3700A82429 /* decoder-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "decoder-aarch64.cc"; sourceTree = ""; }; + B3980EEC29239F3700A82429 /* simulator-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "simulator-aarch64.h"; sourceTree = ""; }; + B3980EED29239F3700A82429 /* instrument-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "instrument-aarch64.h"; sourceTree = ""; }; + B3980EEE29239F3700A82429 /* assembler-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "assembler-aarch64.h"; sourceTree = ""; }; + B3980EEF29239F3700A82429 /* operands-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "operands-aarch64.h"; sourceTree = ""; }; + B3980EF029239F3700A82429 /* cpu-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "cpu-aarch64.cc"; sourceTree = ""; }; + B3980EF129239F3700A82429 /* abi-aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "abi-aarch64.h"; sourceTree = ""; }; + B3980EF229239F3700A82429 /* assembler-aarch64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "assembler-aarch64.cc"; sourceTree = ""; }; + B3980EF329239F3700A82429 /* code-buffer-vixl.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "code-buffer-vixl.cc"; sourceTree = ""; }; + B3980EF529239F3700A82429 /* xbrz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbrz.h; sourceTree = ""; }; + B3980EF629239F3700A82429 /* xbrz_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbrz_config.h; sourceTree = ""; }; + B3980EF729239F3700A82429 /* Changelog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Changelog.txt; sourceTree = ""; }; + B3980EF829239F3700A82429 /* xbrz_tools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbrz_tools.h; sourceTree = ""; }; + B3980EF929239F3700A82429 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; + B3980EFA29239F3700A82429 /* xbrz.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = xbrz.cpp; sourceTree = ""; }; + B3980EFC29239F3700A82429 /* Makefile.mingw */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mingw; sourceTree = ""; }; + B3980EFD29239F3700A82429 /* win32_snprintf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32_snprintf.h; sourceTree = ""; }; + B3980EFE29239F3700A82429 /* miniwget_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniwget_private.h; sourceTree = ""; }; + B3980EFF29239F3700A82429 /* minisoap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minisoap.c; sourceTree = ""; }; + B3980F0029239F3700A82429 /* miniupnpc_declspec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniupnpc_declspec.h; sourceTree = ""; }; + B3980F0129239F3700A82429 /* addr_is_reserved.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = addr_is_reserved.c; sourceTree = ""; }; + B3980F0229239F3700A82429 /* wingenminiupnpcstrings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wingenminiupnpcstrings.c; sourceTree = ""; }; + B3980F0329239F3700A82429 /* miniupnpcstrings.h.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpcstrings.h.cmake; sourceTree = ""; }; + B3980F0429239F3700A82429 /* upnpcommands.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upnpcommands.h; sourceTree = ""; }; + B3980F0529239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980F0629239F3700A82429 /* testminiwget.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = testminiwget.sh; sourceTree = ""; }; + B3980F0729239F3700A82429 /* testupnpreplyparse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testupnpreplyparse.c; sourceTree = ""; }; + B3980F0829239F3700A82429 /* miniupnpc.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpc.rc; sourceTree = ""; }; + B3980F0A29239F3700A82429 /* upnpc-static.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "upnpc-static.vcxproj"; sourceTree = ""; }; + B3980F0B29239F3700A82429 /* upnpc-static_vs2010.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "upnpc-static_vs2010.vcxproj"; sourceTree = ""; }; + B3980F0C29239F3700A82429 /* miniupnpc.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniupnpc.vcproj; sourceTree = ""; }; + B3980F0D29239F3700A82429 /* upnpc-static.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "upnpc-static.vcproj"; sourceTree = ""; }; + B3980F0E29239F3700A82429 /* upnpc-static.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "upnpc-static.vcxproj.filters"; sourceTree = ""; }; + B3980F0F29239F3700A82429 /* miniupnpc.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniupnpc.vcxproj; sourceTree = ""; }; + B3980F1029239F3700A82429 /* miniupnpc.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniupnpc.vcxproj.filters; sourceTree = ""; }; + B3980F1129239F3700A82429 /* miniupnpc_vs2010.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniupnpc_vs2010.vcxproj; sourceTree = ""; }; + B3980F1229239F3700A82429 /* miniupnpc.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpc.sln; sourceTree = ""; }; + B3980F1329239F3700A82429 /* miniupnpc_vs2010.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniupnpc_vs2010.vcxproj.filters; sourceTree = ""; }; + B3980F1429239F3700A82429 /* miniupnpc_vs2015.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpc_vs2015.sln; sourceTree = ""; }; + B3980F1529239F3700A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3980F1629239F3700A82429 /* miniupnpc_vs2010.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpc_vs2010.sln; sourceTree = ""; }; + B3980F1729239F3700A82429 /* genminiupnpcstrings.vbs */ = {isa = PBXFileReference; lastKnownFileType = text; path = genminiupnpcstrings.vbs; sourceTree = ""; }; + B3980F1829239F3700A82429 /* setupmingw32.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = setupmingw32.py; sourceTree = ""; }; + B3980F1929239F3700A82429 /* testminiwget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testminiwget.c; sourceTree = ""; }; + B3980F1A29239F3700A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3980F1B29239F3700A82429 /* portlistingparse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = portlistingparse.c; sourceTree = ""; }; + B3980F1C29239F3700A82429 /* testminixml.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testminixml.c; sourceTree = ""; }; + B3980F1D29239F3700A82429 /* updateminiupnpcstrings.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = updateminiupnpcstrings.sh; sourceTree = ""; }; + B3980F1E29239F3700A82429 /* connecthostport.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connecthostport.c; sourceTree = ""; }; + B3980F1F29239F3700A82429 /* pymoduletest.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = pymoduletest.py; sourceTree = ""; }; + B3980F2129239F3700A82429 /* GetSpecificPortMappingEntryResp.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GetSpecificPortMappingEntryResp.xml; sourceTree = ""; }; + B3980F2229239F3700A82429 /* SetDefaultConnectionService.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SetDefaultConnectionService.xml; sourceTree = ""; }; + B3980F2329239F3700A82429 /* GetExternalIPAddress.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GetExternalIPAddress.xml; sourceTree = ""; }; + B3980F2429239F3700A82429 /* GetSpecificPortMappingEntryResp.namevalue */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetSpecificPortMappingEntryResp.namevalue; sourceTree = ""; }; + B3980F2529239F3700A82429 /* DeletePortMapping.namevalue */ = {isa = PBXFileReference; lastKnownFileType = text; path = DeletePortMapping.namevalue; sourceTree = ""; }; + B3980F2629239F3700A82429 /* GetSpecificPortMappingEntryReq.namevalue */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetSpecificPortMappingEntryReq.namevalue; sourceTree = ""; }; + B3980F2729239F3700A82429 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3980F2829239F3700A82429 /* DeletePortMapping.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = DeletePortMapping.xml; sourceTree = ""; }; + B3980F2929239F3700A82429 /* GetSpecificPortMappingEntryReq.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GetSpecificPortMappingEntryReq.xml; sourceTree = ""; }; + B3980F2A29239F3700A82429 /* GetExternalIPAddress.namevalue */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetExternalIPAddress.namevalue; sourceTree = ""; }; + B3980F2B29239F3700A82429 /* SetDefaultConnectionService.namevalue */ = {isa = PBXFileReference; lastKnownFileType = text; path = SetDefaultConnectionService.namevalue; sourceTree = ""; }; + B3980F2C29239F3700A82429 /* miniupnpcmodule.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = miniupnpcmodule.c; sourceTree = ""; }; + B3980F2E29239F3700A82429 /* miniupnpc.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpc.3; sourceTree = ""; }; + B3980F2F29239F3700A82429 /* listdevices.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = listdevices.c; sourceTree = ""; }; + B3980F3029239F3700A82429 /* testupnpigd.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = testupnpigd.py; sourceTree = ""; }; + B3980F3129239F3700A82429 /* upnpreplyparse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = upnpreplyparse.c; sourceTree = ""; }; + B3980F3229239F3700A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3980F3329239F3700A82429 /* pymoduletest3.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = pymoduletest3.py; sourceTree = ""; }; + B3980F3429239F3700A82429 /* minixml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minixml.h; sourceTree = ""; }; + B3980F3529239F3700A82429 /* receivedata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = receivedata.c; sourceTree = ""; }; + B3980F3629239F3700A82429 /* miniupnpc_socketdef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniupnpc_socketdef.h; sourceTree = ""; }; + B3980F3729239F3700A82429 /* miniwget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = miniwget.c; sourceTree = ""; }; + B3980F3829239F3700A82429 /* upnperrors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upnperrors.h; sourceTree = ""; }; + B3980F3929239F3700A82429 /* igd_desc_parse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = igd_desc_parse.h; sourceTree = ""; }; + B3980F3A29239F3700A82429 /* upnpdev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = upnpdev.c; sourceTree = ""; }; + B3980F3C29239F3700A82429 /* testjava.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = testjava.sh; sourceTree = ""; }; + B3980F3D29239F3700A82429 /* JavaBridgeTest.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = JavaBridgeTest.java; sourceTree = ""; }; + B3980F3E29239F3700A82429 /* testjava.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = testjava.bat; sourceTree = ""; }; + B3980F3F29239F3700A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3980F4029239F3700A82429 /* MANIFEST.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = MANIFEST.in; sourceTree = ""; }; + B3980F4129239F3700A82429 /* minissdpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minissdpc.h; sourceTree = ""; }; + B3980F4229239F3700A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3980F4329239F3700A82429 /* miniupnpc.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpc.def; sourceTree = ""; }; + B3980F4429239F3700A82429 /* miniupnpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniupnpc.h; sourceTree = ""; }; + B3980F4529239F3700A82429 /* miniupnpctypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniupnpctypes.h; sourceTree = ""; }; + B3980F4629239F3700A82429 /* upnpcommands.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = upnpcommands.c; sourceTree = ""; }; + B3980F4729239F3700A82429 /* testigddescparse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testigddescparse.c; sourceTree = ""; }; + B3980F4829239F3700A82429 /* addr_is_reserved.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = addr_is_reserved.h; sourceTree = ""; }; + B3980F4929239F3700A82429 /* external-ip.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "external-ip.sh"; sourceTree = ""; }; + B3980F4A29239F3700A82429 /* miniupnpcstrings.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = miniupnpcstrings.h.in; sourceTree = ""; }; + B3980F4B29239F3700A82429 /* setup.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = setup.py; sourceTree = ""; }; + B3980F4C29239F3700A82429 /* minisoap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minisoap.h; sourceTree = ""; }; + B3980F4D29239F3700A82429 /* testupnpreplyparse.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = testupnpreplyparse.sh; sourceTree = ""; }; + B3980F4E29239F3700A82429 /* VERSION.miniupnpc */ = {isa = PBXFileReference; lastKnownFileType = text; path = VERSION.miniupnpc; sourceTree = ""; }; + B3980F4F29239F3700A82429 /* apiversions.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = apiversions.txt; sourceTree = ""; }; + B3980F5029239F3700A82429 /* upnpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = upnpc.c; sourceTree = ""; }; + B3980F5129239F3700A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3980F5229239F3700A82429 /* portlistingparse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = portlistingparse.h; sourceTree = ""; }; + B3980F5329239F3700A82429 /* minihttptestserver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minihttptestserver.c; sourceTree = ""; }; + B3980F5429239F3700A82429 /* connecthostport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = connecthostport.h; sourceTree = ""; }; + B3980F5529239F3700A82429 /* miniupnpc-config.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "miniupnpc-config.cmake"; sourceTree = ""; }; + B3980F5629239F3700A82429 /* Changelog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Changelog.txt; sourceTree = ""; }; + B3980F5729239F3700A82429 /* minixmlvalid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minixmlvalid.c; sourceTree = ""; }; + B3980F5829239F3700A82429 /* upnperrors.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = upnperrors.c; sourceTree = ""; }; + B3980F5929239F3700A82429 /* miniwget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniwget.h; sourceTree = ""; }; + B3980F5A29239F3700A82429 /* codelength.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codelength.h; sourceTree = ""; }; + B3980F5B29239F3700A82429 /* minixml.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minixml.c; sourceTree = ""; }; + B3980F5C29239F3700A82429 /* receivedata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = receivedata.h; sourceTree = ""; }; + B3980F5D29239F3700A82429 /* testportlistingparse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testportlistingparse.c; sourceTree = ""; }; + B3980F5E29239F3700A82429 /* upnpreplyparse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upnpreplyparse.h; sourceTree = ""; }; + B3980F5F29239F3700A82429 /* minissdpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minissdpc.c; sourceTree = ""; }; + B3980F6029239F3700A82429 /* miniupnpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = miniupnpc.c; sourceTree = ""; }; + B3980F6229239F3700A82429 /* linksys_WAG200G_desc.values */ = {isa = PBXFileReference; lastKnownFileType = text; path = linksys_WAG200G_desc.values; sourceTree = ""; }; + B3980F6329239F3700A82429 /* new_LiveBox_desc.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = new_LiveBox_desc.xml; sourceTree = ""; }; + B3980F6429239F3700A82429 /* linksys_WAG200G_desc.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = linksys_WAG200G_desc.xml; sourceTree = ""; }; + B3980F6529239F3700A82429 /* new_LiveBox_desc.values */ = {isa = PBXFileReference; lastKnownFileType = text; path = new_LiveBox_desc.values; sourceTree = ""; }; + B3980F6629239F3700A82429 /* upnpdev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upnpdev.h; sourceTree = ""; }; + B3980F6729239F3700A82429 /* testaddr_is_reserved.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testaddr_is_reserved.c; sourceTree = ""; }; + B3980F6829239F3700A82429 /* mingw32make.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = mingw32make.bat; sourceTree = ""; }; + B3980F6929239F3700A82429 /* igd_desc_parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = igd_desc_parse.c; sourceTree = ""; }; + B3980F6B29239F3700A82429 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B3980F6C29239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980F6E29239F3700A82429 /* run_tests.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = run_tests.sh; sourceTree = ""; }; + B3980F7029239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980F7129239F3700A82429 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3980F7329239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980F7429239F3700A82429 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3980F7629239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980F7729239F3700A82429 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3980F7929239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980F7A29239F3700A82429 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3980F7C29239F3700A82429 /* volkConfig.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = volkConfig.cmake.in; sourceTree = ""; }; + B3980F7D29239F3700A82429 /* generate.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = generate.py; sourceTree = ""; }; + B3980F7E29239F3700A82429 /* volk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = volk.c; sourceTree = ""; }; + B3980F7F29239F3700A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3980F8029239F3700A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3980F8129239F3700A82429 /* volk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = volk.h; sourceTree = ""; }; + B3980F8229239F3700A82429 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3980F8429239F3700A82429 /* libchdr.patch */ = {isa = PBXFileReference; lastKnownFileType = text; path = libchdr.patch; sourceTree = ""; }; + B3980F8629239F3700A82429 /* gamesdk.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = gamesdk.cmake; sourceTree = ""; }; + B3980F8929239F3700A82429 /* LatencyTuner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LatencyTuner.h; sourceTree = ""; }; + B3980F8A29239F3700A82429 /* Version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Version.h; sourceTree = ""; }; + B3980F8B29239F3700A82429 /* Utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = ""; }; + B3980F8C29239F3700A82429 /* AudioStreamBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioStreamBuilder.h; sourceTree = ""; }; + B3980F8D29239F3700A82429 /* ResultWithValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ResultWithValue.h; sourceTree = ""; }; + B3980F8E29239F3700A82429 /* AudioStreamBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioStreamBase.h; sourceTree = ""; }; + B3980F8F29239F3700A82429 /* AudioStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioStream.h; sourceTree = ""; }; + B3980F9029239F3700A82429 /* StabilizedCallback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StabilizedCallback.h; sourceTree = ""; }; + B3980F9129239F3700A82429 /* AudioStreamCallback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioStreamCallback.h; sourceTree = ""; }; + B3980F9229239F3700A82429 /* Oboe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Oboe.h; sourceTree = ""; }; + B3980F9329239F3700A82429 /* Definitions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Definitions.h; sourceTree = ""; }; + B3980F9629239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980F9829239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980F9A29239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980F9C29239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980F9E29239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FA029239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FA229239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FA429239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FA629239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FA829239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FAA29239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FAC29239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FAE29239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FB029239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FB229239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FB429239F3700A82429 /* liboboe_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liboboe_static.a; sourceTree = ""; }; + B3980FB629239F3700A82429 /* imgui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui.h; sourceTree = ""; }; + B3980FB729239F3700A82429 /* imstb_textedit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imstb_textedit.h; sourceTree = ""; }; + B3980FB829239F3700A82429 /* imconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imconfig.h; sourceTree = ""; }; + B3980FB929239F3700A82429 /* imgui_widgets.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_widgets.cpp; sourceTree = ""; }; + B3980FBA29239F3700A82429 /* imstb_truetype.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imstb_truetype.h; sourceTree = ""; }; + B3980FBB29239F3700A82429 /* imgui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui.cpp; sourceTree = ""; }; + B3980FBC29239F3700A82429 /* imgui_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_internal.h; sourceTree = ""; }; + B3980FBD29239F3700A82429 /* imstb_rectpack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imstb_rectpack.h; sourceTree = ""; }; + B3980FBE29239F3700A82429 /* imgui_demo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_demo.cpp; sourceTree = ""; }; + B3980FBF29239F3700A82429 /* roboto_medium.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = roboto_medium.h; sourceTree = ""; }; + B3980FC029239F3700A82429 /* imgui_draw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_draw.cpp; sourceTree = ""; }; + B3980FC229239F3700A82429 /* dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dirent.h; sourceTree = ""; }; + B3980FC429239F3700A82429 /* pkg-config.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "pkg-config.pc.in"; sourceTree = ""; }; + B3980FC529239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980FC829239F3700A82429 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3980FC929239F3700A82429 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3980FCA29239F3700A82429 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3980FCB29239F3700A82429 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3980FCC29239F3700A82429 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3980FCD29239F3700A82429 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3980FCE29239F3700A82429 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3980FD029239F3700A82429 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3980FD229239F3700A82429 /* benchmark.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = benchmark.c; sourceTree = ""; }; + B3980FD329239F3700A82429 /* build_tests.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_tests.sh; sourceTree = ""; }; + B3980FD429239F3700A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3980FD729239F3700A82429 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3980FD829239F3700A82429 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3980FD929239F3700A82429 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3980FDA29239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3980FDB29239F3700A82429 /* zlib.map */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = zlib.map; sourceTree = ""; }; + B3980FDC29239F3700A82429 /* zlib.pc.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.cmakein; sourceTree = ""; }; + B3980FDD29239F3700A82429 /* zlib.3.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = zlib.3.pdf; sourceTree = ""; }; + B3980FDE29239F3700A82429 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3980FDF29239F3700A82429 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3980FE029239F3700A82429 /* zlib.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.3; sourceTree = ""; }; + B3980FE129239F3700A82429 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3980FE229239F3700A82429 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3980FE329239F3700A82429 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3980FE429239F3700A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3980FE529239F3700A82429 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3980FE629239F3700A82429 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3980FE729239F3700A82429 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3980FE829239F3700A82429 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3980FE929239F3700A82429 /* zconf.h.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.cmakein; sourceTree = ""; }; + B3980FEA29239F3700A82429 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3980FEB29239F3700A82429 /* treebuild.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = treebuild.xml; sourceTree = ""; }; + B3980FEC29239F3700A82429 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3980FED29239F3700A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3980FEE29239F3700A82429 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3980FEF29239F3700A82429 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3980FF029239F3700A82429 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3980FF129239F3700A82429 /* zlib.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.in; sourceTree = ""; }; + B3980FF229239F3700A82429 /* zlib2ansi */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = zlib2ansi; sourceTree = ""; }; + B3980FF329239F3700A82429 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3980FF429239F3700A82429 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3980FF529239F3700A82429 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3980FF629239F3700A82429 /* make_vms.com */ = {isa = PBXFileReference; lastKnownFileType = text; path = make_vms.com; sourceTree = ""; }; + B3980FF729239F3700A82429 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3980FF829239F3700A82429 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3980FF929239F3700A82429 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3980FFB29239F3700A82429 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3980FFC29239F3700A82429 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3980FFD29239F3700A82429 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3980FFE29239F3700A82429 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3980FFF29239F3700A82429 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B398100029239F3700A82429 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B398100129239F3700A82429 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B398100229239F3700A82429 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B398100329239F3700A82429 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B398100429239F3700A82429 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B398100529239F3700A82429 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B398100629239F3700A82429 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B398100729239F3700A82429 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B398100829239F3700A82429 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B398100A29239F3700A82429 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B398100B29239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398100C29239F3700A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B398100E29239F3700A82429 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B398100F29239F3700A82429 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B398101029239F3700A82429 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B398101129239F3700A82429 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B398101229239F3700A82429 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B398101329239F3700A82429 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B398101429239F3700A82429 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B398101529239F3700A82429 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B398101629239F3700A82429 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B398101729239F3700A82429 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B398101829239F3700A82429 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B398101929239F3700A82429 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B398101A29239F3700A82429 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B398101B29239F3700A82429 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B398101C29239F3700A82429 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B398101D29239F3700A82429 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B398101E29239F3700A82429 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B398102029239F3700A82429 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B398102129239F3700A82429 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B398102229239F3700A82429 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B398102329239F3700A82429 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B398102429239F3700A82429 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B398102529239F3700A82429 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B398102629239F3700A82429 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B398102729239F3700A82429 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B398102829239F3700A82429 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B398102929239F3700A82429 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B398102A29239F3700A82429 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B398102C29239F3700A82429 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B398102D29239F3700A82429 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B398102E29239F3700A82429 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B398102F29239F3700A82429 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B398103029239F3700A82429 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B398103129239F3700A82429 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B398103329239F3700A82429 /* mkdeps.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = mkdeps.sh; sourceTree = ""; }; + B398103429239F3700A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B398103629239F3700A82429 /* pico_protocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_protocol.h; sourceTree = ""; }; + B398103729239F3700A82429 /* pico_socket_multicast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_socket_multicast.h; sourceTree = ""; }; + B398103829239F3700A82429 /* pico_eth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_eth.h; sourceTree = ""; }; + B398103929239F3700A82429 /* pico_md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_md5.h; sourceTree = ""; }; + B398103A29239F3700A82429 /* pico_stack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_stack.h; sourceTree = ""; }; + B398103B29239F3700A82429 /* pico_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_defines.h; sourceTree = ""; }; + B398103C29239F3700A82429 /* pico_constants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_constants.h; sourceTree = ""; }; + B398103D29239F3700A82429 /* pico_socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_socket.h; sourceTree = ""; }; + B398103E29239F3700A82429 /* pico_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_queue.h; sourceTree = ""; }; + B398103F29239F3700A82429 /* pico_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_config.h; sourceTree = ""; }; + B398104029239F3700A82429 /* pico_device.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_device.h; sourceTree = ""; }; + B398104229239F3700A82429 /* pico_posix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_posix.h; sourceTree = ""; }; + B398104329239F3700A82429 /* pico_msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_msvc.h; sourceTree = ""; }; + B398104429239F3700A82429 /* pico_avr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_avr.h; sourceTree = ""; }; + B398104529239F3700A82429 /* pico_msp430.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_msp430.h; sourceTree = ""; }; + B398104629239F3700A82429 /* pico_cortex_m.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_cortex_m.h; sourceTree = ""; }; + B398104729239F3700A82429 /* pico_esp8266.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_esp8266.h; sourceTree = ""; }; + B398104829239F3700A82429 /* pico_mbed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_mbed.h; sourceTree = ""; }; + B398104929239F3700A82429 /* pico_atsamd21j18.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_atsamd21j18.h; sourceTree = ""; }; + B398104A29239F3700A82429 /* pico_pic32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_pic32.h; sourceTree = ""; }; + B398104B29239F3700A82429 /* pico_arm9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_arm9.h; sourceTree = ""; }; + B398104C29239F3700A82429 /* pico_dos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dos.h; sourceTree = ""; }; + B398104D29239F3700A82429 /* pico_generic_gcc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_generic_gcc.h; sourceTree = ""; }; + B398104E29239F3700A82429 /* pico_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_linux.h; sourceTree = ""; }; + B398104F29239F3700A82429 /* pico_pic24.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_pic24.h; sourceTree = ""; }; + B398105029239F3700A82429 /* pico_none.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_none.h; sourceTree = ""; }; + B398105129239F3700A82429 /* pico_tree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_tree.h; sourceTree = ""; }; + B398105229239F3700A82429 /* heap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = heap.h; sourceTree = ""; }; + B398105329239F3700A82429 /* pico_addressing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_addressing.h; sourceTree = ""; }; + B398105429239F3700A82429 /* pico_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_frame.h; sourceTree = ""; }; + B398105529239F3700A82429 /* pico_defines_msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_defines_msvc.h; sourceTree = ""; }; + B398105629239F3700A82429 /* pico_module_eth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_module_eth.h; sourceTree = ""; }; + B398105729239F3700A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398105829239F3700A82429 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B398105929239F3700A82429 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; + B398105B29239F3700A82429 /* debug.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = debug.mk; sourceTree = ""; }; + B398105C29239F3700A82429 /* tap.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = tap.mk; sourceTree = ""; }; + B398105D29239F3700A82429 /* udp.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = udp.mk; sourceTree = ""; }; + B398105E29239F3700A82429 /* dhcp_client.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = dhcp_client.mk; sourceTree = ""; }; + B398105F29239F3700A82429 /* ipv4frag.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = ipv4frag.mk; sourceTree = ""; }; + B398106029239F3700A82429 /* tcp.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = tcp.mk; sourceTree = ""; }; + B398106129239F3700A82429 /* dhcp_server.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = dhcp_server.mk; sourceTree = ""; }; + B398106229239F3700A82429 /* icmp4.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = icmp4.mk; sourceTree = ""; }; + B398106329239F3700A82429 /* ppp.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = ppp.mk; sourceTree = ""; }; + B398106429239F3700A82429 /* crc.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = crc.mk; sourceTree = ""; }; + B398106529239F3700A82429 /* eth.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = eth.mk; sourceTree = ""; }; + B398106629239F3700A82429 /* ipv4.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = ipv4.mk; sourceTree = ""; }; + B398106729239F3700A82429 /* dns_client.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = dns_client.mk; sourceTree = ""; }; + B398106829239F3700A82429 /* tun.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = tun.mk; sourceTree = ""; }; + B398106A29239F3700A82429 /* pico_device.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_device.c; sourceTree = ""; }; + B398106B29239F3700A82429 /* pico_tree.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_tree.c; sourceTree = ""; }; + B398106C29239F3700A82429 /* pico_frame.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_frame.c; sourceTree = ""; }; + B398106D29239F3700A82429 /* pico_protocol.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_protocol.c; sourceTree = ""; }; + B398106E29239F3700A82429 /* pico_socket_multicast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_socket_multicast.c; sourceTree = ""; }; + B398106F29239F3700A82429 /* pico_stack.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_stack.c; sourceTree = ""; }; + B398107029239F3700A82429 /* pico_md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_md5.c; sourceTree = ""; }; + B398107129239F3700A82429 /* pico_socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_socket.c; sourceTree = ""; }; + B398107229239F3700A82429 /* MODTREE */ = {isa = PBXFileReference; lastKnownFileType = text; path = MODTREE; sourceTree = ""; }; + B398107429239F3700A82429 /* pico_dev_ppp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_dev_ppp.c; sourceTree = ""; }; + B398107529239F3700A82429 /* pico_ethernet.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_ethernet.c; sourceTree = ""; }; + B398107629239F3700A82429 /* pico_802154.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_802154.h; sourceTree = ""; }; + B398107729239F3700A82429 /* pico_olsr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_olsr.h; sourceTree = ""; }; + B398107829239F3700A82429 /* pico_udp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_udp.c; sourceTree = ""; }; + B398107929239F3700A82429 /* pico_dhcp_server.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_dhcp_server.c; sourceTree = ""; }; + B398107A29239F3700A82429 /* pico_mm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_mm.h; sourceTree = ""; }; + B398107B29239F3700A82429 /* pico_ipv4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_ipv4.c; sourceTree = ""; }; + B398107C29239F3700A82429 /* pico_socket_tcp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_socket_tcp.c; sourceTree = ""; }; + B398107D29239F3700A82429 /* pico_ipv6.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_ipv6.h; sourceTree = ""; }; + B398107E29239F3700A82429 /* pico_dns_client.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_dns_client.c; sourceTree = ""; }; + B398107F29239F3700A82429 /* pico_nat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_nat.h; sourceTree = ""; }; + B398108029239F3700A82429 /* pico_mld.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_mld.h; sourceTree = ""; }; + B398108129239F3700A82429 /* pico_icmp4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_icmp4.c; sourceTree = ""; }; + B398108229239F3700A82429 /* pico_dns_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dns_common.h; sourceTree = ""; }; + B398108329239F3700A82429 /* pico_strings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_strings.c; sourceTree = ""; }; + B398108429239F3700A82429 /* pico_arp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_arp.c; sourceTree = ""; }; + B398108529239F3700A82429 /* pico_socket_udp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_socket_udp.h; sourceTree = ""; }; + B398108629239F3700A82429 /* pico_icmp6.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_icmp6.h; sourceTree = ""; }; + B398108729239F3700A82429 /* pico_mcast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_mcast.h; sourceTree = ""; }; + B398108829239F3700A82429 /* pico_fragments.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_fragments.h; sourceTree = ""; }; + B398108929239F3700A82429 /* pico_dhcp_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_dhcp_common.c; sourceTree = ""; }; + B398108A29239F3700A82429 /* pico_6lowpan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_6lowpan.h; sourceTree = ""; }; + B398108B29239F3700A82429 /* pico_dhcp_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dhcp_client.h; sourceTree = ""; }; + B398108C29239F3700A82429 /* pico_tcp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_tcp.h; sourceTree = ""; }; + B398108D29239F3700A82429 /* pico_dhcp_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dhcp_server.h; sourceTree = ""; }; + B398108E29239F3700A82429 /* pico_udp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_udp.h; sourceTree = ""; }; + B398108F29239F3700A82429 /* pico_dev_null.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dev_null.h; sourceTree = ""; }; + B398109029239F3700A82429 /* pico_ipv6_nd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_ipv6_nd.h; sourceTree = ""; }; + B398109129239F3700A82429 /* pico_dev_ppp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dev_ppp.h; sourceTree = ""; }; + B398109229239F3700A82429 /* pico_dev_ipc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dev_ipc.h; sourceTree = ""; }; + B398109329239F3700A82429 /* pico_ethernet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_ethernet.h; sourceTree = ""; }; + B398109429239F3700A82429 /* pico_aodv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_aodv.h; sourceTree = ""; }; + B398109529239F3700A82429 /* pico_socket_tcp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_socket_tcp.h; sourceTree = ""; }; + B398109629239F3700A82429 /* pico_ipv4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_ipv4.h; sourceTree = ""; }; + B398109729239F3700A82429 /* pico_arp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_arp.h; sourceTree = ""; }; + B398109829239F3700A82429 /* pico_dns_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_dns_common.c; sourceTree = ""; }; + B398109929239F3700A82429 /* pico_strings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_strings.h; sourceTree = ""; }; + B398109A29239F3700A82429 /* pico_socket_udp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_socket_udp.c; sourceTree = ""; }; + B398109B29239F3700A82429 /* pico_icmp4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_icmp4.h; sourceTree = ""; }; + B398109C29239F3700A82429 /* pico_dns_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dns_client.h; sourceTree = ""; }; + B398109D29239F3700A82429 /* pico_igmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_igmp.h; sourceTree = ""; }; + B398109E29239F3700A82429 /* pico_6lowpan_ll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_6lowpan_ll.h; sourceTree = ""; }; + B398109F29239F3700A82429 /* pico_tcp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_tcp.c; sourceTree = ""; }; + B39810A029239F3700A82429 /* pico_ipfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_ipfilter.h; sourceTree = ""; }; + B39810A129239F3700A82429 /* pico_dhcp_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pico_dhcp_common.h; sourceTree = ""; }; + B39810A229239F3700A82429 /* pico_fragments.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pico_fragments.c; sourceTree = ""; }; + B39810A329239F3700A82429 /* LICENSE.GPLv3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.GPLv3; sourceTree = ""; }; + B39810A429239F3700A82429 /* LICENSE.GPLv2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.GPLv2; sourceTree = ""; }; + B39810A629239F3700A82429 /* CODE_OF_CONDUCT.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CODE_OF_CONDUCT.md; sourceTree = ""; }; + B39810A729239F3700A82429 /* ChooseMSVCCRT.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChooseMSVCCRT.cmake; sourceTree = ""; }; + B39810A829239F3700A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B39810A929239F3700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39810AA29239F3700A82429 /* BUILD.gn */ = {isa = PBXFileReference; lastKnownFileType = text; path = BUILD.gn; sourceTree = ""; }; + B39810AC29239F3700A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B39810AD29239F3700A82429 /* test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test.cpp; sourceTree = ""; }; + B39810AF29239F3700A82429 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B39810B129239F3700A82429 /* hlsl.flattenOpaque.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.flattenOpaque.frag; sourceTree = ""; }; + B39810B229239F3700A82429 /* hlsl.intrinsics.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.comp; sourceTree = ""; }; + B39810B329239F3700A82429 /* glsl.460.subgroup.task */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.task; sourceTree = ""; }; + B39810B429239F3700A82429 /* spv.multiView.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.multiView.frag; sourceTree = ""; }; + B39810B529239F3700A82429 /* hlsl.hull.2.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.2.tesc; sourceTree = ""; }; + B39810B629239F3700A82429 /* spv.noDeadDecorations.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.noDeadDecorations.vert; sourceTree = ""; }; + B39810B729239F3700A82429 /* spv.memoryScopeSemantics_Error.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.memoryScopeSemantics_Error.comp; sourceTree = ""; }; + B39810B829239F3700A82429 /* hlsl.PointSize.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.PointSize.geom; sourceTree = ""; }; + B39810B929239F3700A82429 /* spv.shaderGroupVote.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderGroupVote.comp; sourceTree = ""; }; + B39810BA29239F3700A82429 /* link.multiBlocksValid.1.0.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiBlocksValid.1.0.vert; sourceTree = ""; }; + B39810BC29239F3800A82429 /* badInc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = badInc.h; sourceTree = ""; }; + B39810BD29239F3800A82429 /* bar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bar.h; sourceTree = ""; }; + B39810BF29239F3800A82429 /* notHere.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = notHere.h; sourceTree = ""; }; + B39810C029239F3800A82429 /* bar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bar.h; sourceTree = ""; }; + B39810C129239F3800A82429 /* local.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = local.h; sourceTree = ""; }; + B39810C229239F3800A82429 /* foo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = foo.h; sourceTree = ""; }; + B39810C429239F3800A82429 /* notHere.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = notHere.h; sourceTree = ""; }; + B39810C529239F3800A82429 /* bar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bar.h; sourceTree = ""; }; + B39810C629239F3800A82429 /* remote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = remote.h; sourceTree = ""; }; + B39810C729239F3800A82429 /* glsl.entryPointRename2.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.entryPointRename2.vert; sourceTree = ""; }; + B39810C829239F3800A82429 /* hlsl.comparison.vec.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.comparison.vec.frag; sourceTree = ""; }; + B39810C929239F3800A82429 /* hlsl.namespace.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.namespace.frag; sourceTree = ""; }; + B39810CA29239F3800A82429 /* localAggregates.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = localAggregates.frag; sourceTree = ""; }; + B39810CB29239F3800A82429 /* spv.shiftOps.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.shiftOps.frag; sourceTree = ""; }; + B39810CC29239F3800A82429 /* spv.dataOutIndirect.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.dataOutIndirect.vert; sourceTree = ""; }; + B39810CD29239F3800A82429 /* preprocessor.include.enabled.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.include.enabled.vert; sourceTree = ""; }; + B39810CE29239F3800A82429 /* 440.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 440.frag; sourceTree = ""; }; + B39810CF29239F3800A82429 /* hlsl.intrinsics.negative.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.negative.comp; sourceTree = ""; }; + B39810D029239F3800A82429 /* hlsl.structbuffer.append.fn.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.append.fn.frag; sourceTree = ""; }; + B39810D129239F3800A82429 /* 300operations.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300operations.frag; sourceTree = ""; }; + B39810D229239F3800A82429 /* 310implicitSizeArrayError.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 310implicitSizeArrayError.vert; sourceTree = ""; }; + B39810D329239F3800A82429 /* errors.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = errors.frag; sourceTree = ""; }; + B39810D429239F3800A82429 /* spv.400.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.400.frag; sourceTree = ""; }; + B39810D529239F3800A82429 /* spv.16bitstorage_Error.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.16bitstorage_Error.frag; sourceTree = ""; }; + B39810D629239F3800A82429 /* hlsl.reflection.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.reflection.vert; sourceTree = ""; }; + B39810D729239F3800A82429 /* reflection.options.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = reflection.options.geom; sourceTree = ""; }; + B39810D829239F3800A82429 /* hlsl.clipdistance-2.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-2.vert"; sourceTree = ""; }; + B39810D929239F3800A82429 /* hlsl.domain.2.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.domain.2.tese; sourceTree = ""; }; + B39810DA29239F3800A82429 /* spv.specConstantComposite.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.specConstantComposite.vert; sourceTree = ""; }; + B39810DB29239F3800A82429 /* hlsl.mul-truncate.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.mul-truncate.frag"; sourceTree = ""; }; + B39810DC29239F3800A82429 /* cppSimple.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppSimple.vert; sourceTree = ""; }; + B39810DD29239F3800A82429 /* lineContinuation100.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = lineContinuation100.vert; sourceTree = ""; }; + B39810DE29239F3800A82429 /* spv.8bit-16bit-construction.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.8bit-16bit-construction.frag"; sourceTree = ""; }; + B39810DF29239F3800A82429 /* spv.specConstArrayCheck.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.specConstArrayCheck.vert; sourceTree = ""; }; + B39810E029239F3800A82429 /* spv.ext.ClosestHitShader.rchit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.ClosestHitShader.rchit; sourceTree = ""; }; + B39810E129239F3800A82429 /* hlsl.rw.register.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.rw.register.frag; sourceTree = ""; }; + B39810E229239F3800A82429 /* spv.textureBuffer.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.textureBuffer.vert; sourceTree = ""; }; + B39810E329239F3800A82429 /* hlsl.memberFunCall.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.memberFunCall.frag; sourceTree = ""; }; + B39810E429239F3800A82429 /* remap.if.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.if.everything.frag; sourceTree = ""; }; + B39810E529239F3800A82429 /* 400.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 400.geom; sourceTree = ""; }; + B39810E629239F3800A82429 /* functionCall.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = functionCall.frag; sourceTree = ""; }; + B39810E729239F3800A82429 /* hlsl.buffer.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.buffer.frag; sourceTree = ""; }; + B39810E829239F3800A82429 /* glsl.450.subgroupShuffle.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupShuffle.comp; sourceTree = ""; }; + B39810E929239F3800A82429 /* spv.subgroupBallotNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupBallotNeg.comp; sourceTree = ""; }; + B39810EA29239F3800A82429 /* spv.int16.amd.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.int16.amd.frag; sourceTree = ""; }; + B39810EB29239F3800A82429 /* spv.meshShaderPerViewUserDefined.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderPerViewUserDefined.mesh; sourceTree = ""; }; + B39810EC29239F3800A82429 /* spv.int16.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.int16.frag; sourceTree = ""; }; + B39810ED29239F3800A82429 /* cppMerge.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppMerge.frag; sourceTree = ""; }; + B39810EE29239F3800A82429 /* hlsl.type.identifier.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.type.identifier.frag; sourceTree = ""; }; + B39810EF29239F3800A82429 /* rayQuery.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = rayQuery.rgen; sourceTree = ""; }; + B39810F029239F3800A82429 /* spv.xfb2.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.xfb2.vert; sourceTree = ""; }; + B39810F129239F3800A82429 /* hlsl.matType.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.matType.frag; sourceTree = ""; }; + B39810F229239F3800A82429 /* hlsl.samplecmp.dualmode.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmp.dualmode.frag; sourceTree = ""; }; + B39810F329239F3800A82429 /* spv.rankShift.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.rankShift.comp; sourceTree = ""; }; + B39810F429239F3800A82429 /* spv.meshShaderTaskMem.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderTaskMem.mesh; sourceTree = ""; }; + B39810F529239F3800A82429 /* spv.8bitstorage-uint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.8bitstorage-uint.frag"; sourceTree = ""; }; + B39810F629239F3800A82429 /* spv.loopsArtificial.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.loopsArtificial.frag; sourceTree = ""; }; + B39810F729239F3800A82429 /* spv.ext.RayGenShader.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShader.rgen; sourceTree = ""; }; + B39810F829239F3800A82429 /* spv.for-notest.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.for-notest.vert"; sourceTree = ""; }; + B39810F929239F3800A82429 /* preprocessor.errors.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.errors.vert; sourceTree = ""; }; + B39810FA29239F3800A82429 /* spv.subgroupClustered.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupClustered.comp; sourceTree = ""; }; + B39810FB29239F3800A82429 /* spv.8bitstorage-ssbo.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.8bitstorage-ssbo.vert"; sourceTree = ""; }; + B39810FC29239F3800A82429 /* spv.meshShaderRedeclPerViewBuiltins.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderRedeclPerViewBuiltins.mesh; sourceTree = ""; }; + B39810FD29239F3800A82429 /* spv.functionNestedOpaque.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.functionNestedOpaque.vert; sourceTree = ""; }; + B39810FE29239F3800A82429 /* spv.RayGenShaderArray.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShaderArray.rgen; sourceTree = ""; }; + B39810FF29239F3800A82429 /* spv.400.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.400.tesc; sourceTree = ""; }; + B398110029239F3800A82429 /* hlsl.intrinsics.lit.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.lit.frag; sourceTree = ""; }; + B398110129239F3800A82429 /* spv.intcoopmat.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.intcoopmat.comp; sourceTree = ""; }; + B398110229239F3800A82429 /* rayQuery-committed.Error.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-committed.Error.rgen"; sourceTree = ""; }; + B398110329239F3800A82429 /* precise.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = precise.tesc; sourceTree = ""; }; + B398110429239F3800A82429 /* spv.dead-complex-merge-after-return.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.dead-complex-merge-after-return.vert"; sourceTree = ""; }; + B398110529239F3800A82429 /* glsl.es320.subgroup.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.es320.subgroup.vert; sourceTree = ""; }; + B398110629239F3800A82429 /* spv.samplerlessTextureFunctions.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.samplerlessTextureFunctions.frag; sourceTree = ""; }; + B398110729239F3800A82429 /* 310.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 310.vert; sourceTree = ""; }; + B398110829239F3800A82429 /* spv.test.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.test.vert; sourceTree = ""; }; + B398110929239F3800A82429 /* spv.intOps.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.intOps.vert; sourceTree = ""; }; + B398110A29239F3800A82429 /* spv.fragmentDensity.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.fragmentDensity.vert; sourceTree = ""; }; + B398110B29239F3800A82429 /* link.vk.pcNamingInvalid.0.0.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.pcNamingInvalid.0.0.vert; sourceTree = ""; }; + B398110C29239F3800A82429 /* link.multiBlocksInvalid.0.1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiBlocksInvalid.0.1.vert; sourceTree = ""; }; + B398110D29239F3800A82429 /* hlsl.promotions.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.promotions.frag; sourceTree = ""; }; + B398110E29239F3800A82429 /* mains2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mains2.frag; sourceTree = ""; }; + B398110F29239F3800A82429 /* link.vk.differentPC.0.1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.differentPC.0.1.frag; sourceTree = ""; }; + B398111029239F3800A82429 /* spv.noBuiltInLoc.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.noBuiltInLoc.vert; sourceTree = ""; }; + B398111129239F3800A82429 /* hlsl.intrinsics.barriers.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.barriers.comp; sourceTree = ""; }; + B398111229239F3800A82429 /* spv.buffer.autoassign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.buffer.autoassign.frag; sourceTree = ""; }; + B398111329239F3800A82429 /* spv.register.autoassign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.register.autoassign.frag; sourceTree = ""; }; + B398111429239F3800A82429 /* 420.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 420.geom; sourceTree = ""; }; + B398111529239F3800A82429 /* spv.bufferhandle3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle3.frag; sourceTree = ""; }; + B398111629239F3800A82429 /* spv.noLocation.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.noLocation.vert; sourceTree = ""; }; + B398111729239F3800A82429 /* hlsl.explicitDescriptorSet.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.explicitDescriptorSet.frag; sourceTree = ""; }; + B398111829239F3800A82429 /* glspv.version.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glspv.version.vert; sourceTree = ""; }; + B398111929239F3800A82429 /* hlsl.flattenSubset.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.flattenSubset.frag; sourceTree = ""; }; + B398111A29239F3800A82429 /* runtimeArray.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = runtimeArray.vert; sourceTree = ""; }; + B398111B29239F3800A82429 /* hlsl.samplelevel.basic.dx10.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplelevel.basic.dx10.vert; sourceTree = ""; }; + B398111C29239F3800A82429 /* hlsl.gather.basic.dx10.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gather.basic.dx10.vert; sourceTree = ""; }; + B398111D29239F3800A82429 /* spv.variableArrayIndex.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.variableArrayIndex.frag; sourceTree = ""; }; + B398111E29239F3800A82429 /* vulkan.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vulkan.frag; sourceTree = ""; }; + B398111F29239F3800A82429 /* 460.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 460.frag; sourceTree = ""; }; + B398112029239F3800A82429 /* spv.varyingArrayIndirect.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.varyingArrayIndirect.frag; sourceTree = ""; }; + B398112129239F3800A82429 /* spv.viewportArray2.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.viewportArray2.tesc; sourceTree = ""; }; + B398112229239F3800A82429 /* spv.fragmentDensity-es.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.fragmentDensity-es.frag"; sourceTree = ""; }; + B398112329239F3800A82429 /* hlsl.assoc.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.assoc.frag; sourceTree = ""; }; + B398112429239F3800A82429 /* hlsl.tristream-append.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.tristream-append.geom"; sourceTree = ""; }; + B398112529239F3800A82429 /* preprocessor.defined.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.defined.vert; sourceTree = ""; }; + B398112629239F3800A82429 /* spv.1.3.coopmat.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.3.coopmat.comp; sourceTree = ""; }; + B398112729239F3800A82429 /* hlsl.entry.rename.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.entry.rename.frag; sourceTree = ""; }; + B398112829239F3800A82429 /* spv.400.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.400.tese; sourceTree = ""; }; + B398112929239F3800A82429 /* glsl.es320.subgroupClustered.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupClustered.comp; sourceTree = ""; }; + B398112A29239F3800A82429 /* spv.do-simple.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.do-simple.vert"; sourceTree = ""; }; + B398112B29239F3800A82429 /* hlsl.target.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.target.frag; sourceTree = ""; }; + B398112C29239F3800A82429 /* spv.demoteDisabled.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.demoteDisabled.frag; sourceTree = ""; }; + B398112D29239F3800A82429 /* hlsl.hull.ctrlpt-2.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.hull.ctrlpt-2.tesc"; sourceTree = ""; }; + B398112E29239F3800A82429 /* 150.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 150.vert; sourceTree = ""; }; + B398112F29239F3800A82429 /* hlsl.structbuffer.byte.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.byte.frag; sourceTree = ""; }; + B398113029239F3800A82429 /* spv.stereoViewRendering.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.stereoViewRendering.vert; sourceTree = ""; }; + B398113129239F3800A82429 /* hlsl.promote.vec1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.promote.vec1.frag; sourceTree = ""; }; + B398113229239F3800A82429 /* spv.subgroupArithmetic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupArithmetic.comp; sourceTree = ""; }; + B398113329239F3800A82429 /* link.vk.pcNamingValid.0.1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.pcNamingValid.0.1.vert; sourceTree = ""; }; + B398113429239F3800A82429 /* hlsl.swizzle.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.swizzle.frag; sourceTree = ""; }; + B398113529239F3800A82429 /* spv.AofA.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.AofA.frag; sourceTree = ""; }; + B398113629239F3800A82429 /* spv.bufferhandle16.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle16.frag; sourceTree = ""; }; + B398113729239F3800A82429 /* hlsl.noSemantic.functionality1.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.noSemantic.functionality1.comp; sourceTree = ""; }; + B398113829239F3800A82429 /* spv.ext.IntersectShader_Errors.rint */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.IntersectShader_Errors.rint; sourceTree = ""; }; + B398113929239F3800A82429 /* hlsl.logical.unary.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.logical.unary.frag; sourceTree = ""; }; + B398113A29239F3800A82429 /* hlsl.samplecmplevelzero.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmplevelzero.offset.dx10.frag; sourceTree = ""; }; + B398113B29239F3800A82429 /* constErrors.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = constErrors.frag; sourceTree = ""; }; + B398113C29239F3800A82429 /* spv.for-complex-condition.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.for-complex-condition.vert"; sourceTree = ""; }; + B398113D29239F3800A82429 /* hlsl.int.dot.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.int.dot.frag; sourceTree = ""; }; + B398113E29239F3800A82429 /* glsl.es320.subgroupBallotNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupBallotNeg.comp; sourceTree = ""; }; + B398113F29239F3800A82429 /* hlsl.clipdistance-7.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-7.frag"; sourceTree = ""; }; + B398114029239F3800A82429 /* 300layout.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300layout.vert; sourceTree = ""; }; + B398114129239F3800A82429 /* spv.460.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.460.frag; sourceTree = ""; }; + B398114229239F3800A82429 /* hlsl.clipdistance-6.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-6.frag"; sourceTree = ""; }; + B398114329239F3800A82429 /* spv.newTexture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.newTexture.frag; sourceTree = ""; }; + B398114429239F3800A82429 /* hlsl.rw.bracket.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.rw.bracket.frag; sourceTree = ""; }; + B398114529239F3800A82429 /* link.vk.pcNamingValid.0.0.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.pcNamingValid.0.0.vert; sourceTree = ""; }; + B398114629239F3800A82429 /* spv.100ops.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.100ops.frag; sourceTree = ""; }; + B398114729239F3800A82429 /* 430scope.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 430scope.vert; sourceTree = ""; }; + B398114829239F3800A82429 /* hlsl.templatetypes.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.templatetypes.frag; sourceTree = ""; }; + B398114929239F3800A82429 /* spv.simpleFunctionCall.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.simpleFunctionCall.frag; sourceTree = ""; }; + B398114A29239F3800A82429 /* 420.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 420.frag; sourceTree = ""; }; + B398114B29239F3800A82429 /* 400.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = 400.tese; sourceTree = ""; }; + B398114C29239F3800A82429 /* hlsl.basic.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.basic.geom; sourceTree = ""; }; + B398114D29239F3800A82429 /* hlsl.init.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.init.frag; sourceTree = ""; }; + B398114E29239F3800A82429 /* hlsl.intrinsics.evalfns.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.evalfns.frag; sourceTree = ""; }; + B398114F29239F3800A82429 /* spv.150.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.150.vert; sourceTree = ""; }; + B398115029239F3800A82429 /* hlsl.shift.per-set.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.shift.per-set.frag"; sourceTree = ""; }; + B398115129239F3800A82429 /* hlsl.precedence.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.precedence.frag; sourceTree = ""; }; + B398115229239F3800A82429 /* hlsl.rw.swizzle.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.rw.swizzle.frag; sourceTree = ""; }; + B398115329239F3800A82429 /* spv.matrix2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.matrix2.frag; sourceTree = ""; }; + B398115429239F3800A82429 /* versionsErrors.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = versionsErrors.frag; sourceTree = ""; }; + B398115529239F3800A82429 /* 300samplerExternalYUV.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300samplerExternalYUV.frag; sourceTree = ""; }; + B398115629239F3800A82429 /* spv.bitCast.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bitCast.frag; sourceTree = ""; }; + B398115729239F3800A82429 /* spv.1.4.sparseTexture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.sparseTexture.frag; sourceTree = ""; }; + B398115829239F3800A82429 /* hlsl.getdimensions.rw.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.getdimensions.rw.dx10.frag; sourceTree = ""; }; + B398115929239F3800A82429 /* preprocessor.function_macro.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.function_macro.vert; sourceTree = ""; }; + B398115A29239F3800A82429 /* spv.subgroupExtendedTypesPartitionedNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesPartitionedNeg.comp; sourceTree = ""; }; + B398115B29239F3800A82429 /* spv.300layoutp.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.300layoutp.vert; sourceTree = ""; }; + B398115C29239F3800A82429 /* hlsl.tx.overload.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.tx.overload.frag; sourceTree = ""; }; + B398115D29239F3800A82429 /* dataOut.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = dataOut.frag; sourceTree = ""; }; + B398115E29239F3800A82429 /* spv.simpleMat.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.simpleMat.vert; sourceTree = ""; }; + B398115F29239F3800A82429 /* noMain2.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = noMain2.geom; sourceTree = ""; }; + B398116029239F3800A82429 /* spv.prepost.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.prepost.frag; sourceTree = ""; }; + B398116129239F3800A82429 /* hlsl.struct.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.struct.frag; sourceTree = ""; }; + B398116229239F3800A82429 /* glsl.450.subgroupBallotNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupBallotNeg.comp; sourceTree = ""; }; + B398116329239F3800A82429 /* hlsl.type.type.conversion.valid.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.type.type.conversion.valid.frag; sourceTree = ""; }; + B398116429239F3800A82429 /* 420.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.tesc; sourceTree = ""; }; + B398116529239F3800A82429 /* spv.glsl.register.autoassign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.glsl.register.autoassign.frag; sourceTree = ""; }; + B398116629239F3800A82429 /* spv.16bitstorage.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.16bitstorage.frag; sourceTree = ""; }; + B398116729239F3800A82429 /* glsl.450.subgroupBasic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupBasic.comp; sourceTree = ""; }; + B398116829239F3800A82429 /* link.vk.differentPC.0.0.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.differentPC.0.0.frag; sourceTree = ""; }; + B398116929239F3800A82429 /* spv.shaderDrawParams.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.shaderDrawParams.vert; sourceTree = ""; }; + B398116A29239F3800A82429 /* spv.bufferhandle2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle2.frag; sourceTree = ""; }; + B398116B29239F3800A82429 /* syntaxError.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = syntaxError.frag; sourceTree = ""; }; + B398116C29239F3800A82429 /* spv.ext.ClosestHitShader_Errors.rchit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.ClosestHitShader_Errors.rchit; sourceTree = ""; }; + B398116D29239F3800A82429 /* link.vk.pcNamingInvalid.0.1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.pcNamingInvalid.0.1.vert; sourceTree = ""; }; + B398116E29239F3800A82429 /* hlsl.load.buffer.float.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.buffer.float.dx10.frag; sourceTree = ""; }; + B398116F29239F3800A82429 /* spv.vulkan100.subgroupPartitioned.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.vulkan100.subgroupPartitioned.comp; sourceTree = ""; }; + B398117029239F3800A82429 /* hlsl.entry-in.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.entry-in.frag"; sourceTree = ""; }; + B398117129239F3800A82429 /* spv.420.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.420.geom; sourceTree = ""; }; + B398117229239F3800A82429 /* spv.always-discard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.always-discard.frag"; sourceTree = ""; }; + B398117329239F3800A82429 /* link.multiBlocksInvalid.0.0.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiBlocksInvalid.0.0.vert; sourceTree = ""; }; + B398117429239F3800A82429 /* lineContinuation.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = lineContinuation.vert; sourceTree = ""; }; + B398117529239F3800A82429 /* spv.subgroupShuffleRelative.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupShuffleRelative.comp; sourceTree = ""; }; + B398117629239F3800A82429 /* hlsl.flattenSubset2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.flattenSubset2.frag; sourceTree = ""; }; + B398117729239F3800A82429 /* glsl.450.subgroupClustered.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupClustered.comp; sourceTree = ""; }; + B398117829239F3800A82429 /* hlsl.rw.scalar.bracket.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.rw.scalar.bracket.frag; sourceTree = ""; }; + B398117929239F3800A82429 /* hlsl.samplecmp.negative2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmp.negative2.frag; sourceTree = ""; }; + B398117A29239F3800A82429 /* sample.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = sample.vert; sourceTree = ""; }; + B398117B29239F3800A82429 /* hlsl.partialFlattenLocal.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.partialFlattenLocal.vert; sourceTree = ""; }; + B398117C29239F3800A82429 /* spv.subgroupExtendedTypesQuad.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesQuad.comp; sourceTree = ""; }; + B398117D29239F3800A82429 /* empty.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = empty.frag; sourceTree = ""; }; + B398117E29239F3800A82429 /* spv.targetVulkan.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.targetVulkan.vert; sourceTree = ""; }; + B398117F29239F3800A82429 /* include.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = include.vert; sourceTree = ""; }; + B398118029239F3800A82429 /* spv.swizzle.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.swizzle.frag; sourceTree = ""; }; + B398118129239F3800A82429 /* hlsl.switch.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.switch.frag; sourceTree = ""; }; + B398118229239F3800A82429 /* always-discard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "always-discard.frag"; sourceTree = ""; }; + B398118329239F3800A82429 /* nonuniform.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = nonuniform.frag; sourceTree = ""; }; + B398118429239F3800A82429 /* hlsl.matpack-1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.matpack-1.frag"; sourceTree = ""; }; + B398118529239F3800A82429 /* hlsl.texture.struct.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.texture.struct.frag; sourceTree = ""; }; + B398118629239F3800A82429 /* remap.hlsl.sample.basic.strip.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.hlsl.sample.basic.strip.frag; sourceTree = ""; }; + B398118729239F3800A82429 /* hlsl.wavebroadcast.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavebroadcast.comp; sourceTree = ""; }; + B398118829239F3800A82429 /* spv.rw.autoassign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.rw.autoassign.frag; sourceTree = ""; }; + B398118929239F3800A82429 /* hlsl.this.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.this.frag; sourceTree = ""; }; + B398118A29239F3800A82429 /* spv.xfb3.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.xfb3.vert; sourceTree = ""; }; + B398118B29239F3800A82429 /* hlsl.entry-out.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.entry-out.frag"; sourceTree = ""; }; + B398118C29239F3800A82429 /* spv.bufferhandle17_Errors.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle17_Errors.frag; sourceTree = ""; }; + B398118D29239F3800A82429 /* 100Limits.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 100Limits.vert; sourceTree = ""; }; + B398118E29239F3800A82429 /* hlsl.intrinsic.frexp.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsic.frexp.frag; sourceTree = ""; }; + B398118F29239F3800A82429 /* hlsl.structbuffer.floatidx.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.floatidx.comp; sourceTree = ""; }; + B398119029239F3800A82429 /* spv.shaderBallot.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderBallot.comp; sourceTree = ""; }; + B398119129239F3800A82429 /* hlsl.struct.split.trivial.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.struct.split.trivial.vert; sourceTree = ""; }; + B398119229239F3800A82429 /* spv.16bitstorage-int.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.16bitstorage-int.frag"; sourceTree = ""; }; + B398119329239F3800A82429 /* spv.whileLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.whileLoop.frag; sourceTree = ""; }; + B398119429239F3800A82429 /* hlsl.emptystruct.init.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.emptystruct.init.vert; sourceTree = ""; }; + B398119529239F3800A82429 /* remap.hlsl.sample.basic.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.hlsl.sample.basic.everything.frag; sourceTree = ""; }; + B398119629239F3800A82429 /* dce.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = dce.frag; sourceTree = ""; }; + B398119729239F3800A82429 /* spv.storageBuffer.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.storageBuffer.vert; sourceTree = ""; }; + B398119829239F3800A82429 /* switch.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = switch.frag; sourceTree = ""; }; + B398119929239F3800A82429 /* spv.shaderBallotAMD.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderBallotAMD.comp; sourceTree = ""; }; + B398119A29239F3800A82429 /* spv.structAssignment.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.structAssignment.frag; sourceTree = ""; }; + B398119B29239F3800A82429 /* 400.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 400.tesc; sourceTree = ""; }; + B398119C29239F3800A82429 /* hlsl.domain.3.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.domain.3.tese; sourceTree = ""; }; + B398119D29239F3800A82429 /* hlsl.structin.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structin.vert; sourceTree = ""; }; + B398119E29239F3800A82429 /* spv.ext.MissShader_Errors.rmiss */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.MissShader_Errors.rmiss; sourceTree = ""; }; + B398119F29239F3800A82429 /* spv.bufferhandleUvec2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandleUvec2.frag; sourceTree = ""; }; + B39811A029239F3800A82429 /* preprocessor.simple.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.simple.vert; sourceTree = ""; }; + B39811A129239F3800A82429 /* 430AofA.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 430AofA.frag; sourceTree = ""; }; + B39811A229239F3800A82429 /* hlsl.clipdistance-3.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-3.vert"; sourceTree = ""; }; + B39811A329239F3800A82429 /* sample.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = sample.vert.out; sourceTree = ""; }; + B39811A429239F3800A82429 /* spv.meshTaskShader.task */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshTaskShader.task; sourceTree = ""; }; + B39811A529239F3800A82429 /* spv.arbPostDepthCoverage.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.arbPostDepthCoverage.frag; sourceTree = ""; }; + B39811A629239F3800A82429 /* spv.precision.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.precision.frag; sourceTree = ""; }; + B39811A729239F3800A82429 /* 130.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 130.vert; sourceTree = ""; }; + B39811A829239F3800A82429 /* spv.earlyReturnDiscard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.earlyReturnDiscard.frag; sourceTree = ""; }; + B39811A929239F3800A82429 /* badMacroArgs.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = badMacroArgs.frag; sourceTree = ""; }; + B39811AA29239F3800A82429 /* web.builtins.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.builtins.vert; sourceTree = ""; }; + B39811AB29239F3800A82429 /* spv.hlslDebugInfo.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.hlslDebugInfo.vert; sourceTree = ""; }; + B39811AC29239F3800A82429 /* spv.multiviewPerViewAttributes.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.multiviewPerViewAttributes.vert; sourceTree = ""; }; + B39811AD29239F3800A82429 /* spv.1.4.texture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.texture.frag; sourceTree = ""; }; + B39811AE29239F3800A82429 /* hlsl.precedence2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.precedence2.frag; sourceTree = ""; }; + B39811AF29239F3800A82429 /* hlsl.samplegrad.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplegrad.array.dx10.frag; sourceTree = ""; }; + B39811B029239F3800A82429 /* spv.1.4.image.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.image.frag; sourceTree = ""; }; + B39811B129239F3800A82429 /* hlsl.samplebias.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplebias.offsetarray.dx10.frag; sourceTree = ""; }; + B39811B229239F3800A82429 /* hlsl.hull.void.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.void.tesc; sourceTree = ""; }; + B39811B329239F3800A82429 /* versionsClean.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = versionsClean.vert; sourceTree = ""; }; + B39811B429239F3800A82429 /* maxClipDistances.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = maxClipDistances.vert; sourceTree = ""; }; + B39811B529239F3800A82429 /* rayQuery-allOps.Error.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-allOps.Error.rgen"; sourceTree = ""; }; + B39811B629239F3800A82429 /* 320.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.comp; sourceTree = ""; }; + B39811B729239F3800A82429 /* hlsl.scalar-length.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.scalar-length.frag"; sourceTree = ""; }; + B39811B829239F3800A82429 /* 400.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 400.frag; sourceTree = ""; }; + B39811B929239F3800A82429 /* 420.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.tese; sourceTree = ""; }; + B39811BA29239F3800A82429 /* uniformArray.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = uniformArray.frag; sourceTree = ""; }; + B39811BB29239F3800A82429 /* link.multiBlocksValid.1.1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiBlocksValid.1.1.vert; sourceTree = ""; }; + B39811BC29239F3800A82429 /* spv.atomicCounter.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.atomicCounter.comp; sourceTree = ""; }; + B39811BD29239F3800A82429 /* 330comp.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 330comp.frag; sourceTree = ""; }; + B39811BE29239F3800A82429 /* spv.glsl.register.noautoassign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.glsl.register.noautoassign.frag; sourceTree = ""; }; + B39811BF29239F3800A82429 /* spv.computeShaderDerivatives2.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.computeShaderDerivatives2.comp; sourceTree = ""; }; + B39811C029239F3800A82429 /* hlsl.hull.3.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.3.tesc; sourceTree = ""; }; + B39811C129239F3800A82429 /* remap.basic.dcefunc.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.basic.dcefunc.frag; sourceTree = ""; }; + B39811C229239F3800A82429 /* spv.RayCallable.rcall */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayCallable.rcall; sourceTree = ""; }; + B39811C329239F3800A82429 /* spv.specConstant.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specConstant.comp; sourceTree = ""; }; + B39811C429239F3800A82429 /* spv.texture.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.texture.vert; sourceTree = ""; }; + B39811C529239F3800A82429 /* hlsl.gathercmpRGBA.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gathercmpRGBA.basic.dx10.frag; sourceTree = ""; }; + B39811C629239F3800A82429 /* 300scope.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300scope.vert; sourceTree = ""; }; + B39811C729239F3800A82429 /* spv.register.autoassign-2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.register.autoassign-2.frag"; sourceTree = ""; }; + B39811C829239F3800A82429 /* glsl.450.subgroup.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroup.tesc; sourceTree = ""; }; + B39811C929239F3800A82429 /* uint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = uint.frag; sourceTree = ""; }; + B39811CA29239F3800A82429 /* spv.structure.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.structure.frag; sourceTree = ""; }; + B39811CB29239F3800A82429 /* reflection.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = reflection.vert; sourceTree = ""; }; + B39811CC29239F3800A82429 /* hlsl.load.rwtexture.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.rwtexture.array.dx10.frag; sourceTree = ""; }; + B39811CD29239F3800A82429 /* 420_size_gl_in.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 420_size_gl_in.geom; sourceTree = ""; }; + B39811CE29239F3800A82429 /* spv.1.4.NonWritable.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.NonWritable.frag; sourceTree = ""; }; + B39811CF29239F3800A82429 /* hlsl.samplegrad.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplegrad.basic.dx10.frag; sourceTree = ""; }; + B39811D029239F3800A82429 /* spv.for-simple.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.for-simple.vert"; sourceTree = ""; }; + B39811D129239F3800A82429 /* hlsl.whileLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.whileLoop.frag; sourceTree = ""; }; + B39811D229239F3800A82429 /* hlsl.gathercmpRGBA.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gathercmpRGBA.array.dx10.frag; sourceTree = ""; }; + B39811D329239F3800A82429 /* hlsl.structbuffer.rw.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.rw.frag; sourceTree = ""; }; + B39811D429239F3800A82429 /* spv.subgroupExtendedTypesClusteredNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesClusteredNeg.comp; sourceTree = ""; }; + B39811D529239F3800A82429 /* spv.meshShaderPerViewBuiltins.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderPerViewBuiltins.mesh; sourceTree = ""; }; + B39811D629239F3800A82429 /* hlsl.imagefetch-subvec4.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.imagefetch-subvec4.comp"; sourceTree = ""; }; + B39811D729239F3800A82429 /* remap.switch.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.switch.none.frag; sourceTree = ""; }; + B39811D829239F3800A82429 /* hlsl.targetStruct1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.targetStruct1.frag; sourceTree = ""; }; + B39811D929239F3800A82429 /* spv.precise.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.precise.tesc; sourceTree = ""; }; + B39811DA29239F3800A82429 /* spv.ext.RayCallable_Errors.rcall */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayCallable_Errors.rcall; sourceTree = ""; }; + B39811DB29239F3800A82429 /* nosuffix */ = {isa = PBXFileReference; lastKnownFileType = text; path = nosuffix; sourceTree = ""; }; + B39811DC29239F3800A82429 /* spv.constructComposite.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.constructComposite.comp; sourceTree = ""; }; + B39811DD29239F3800A82429 /* spv.bufferhandle5.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle5.frag; sourceTree = ""; }; + B39811DE29239F3800A82429 /* spv.double.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.double.comp; sourceTree = ""; }; + B39811DF29239F3800A82429 /* hlsl.wavequery.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.wavequery.frag; sourceTree = ""; }; + B39811E029239F3800A82429 /* hlsl.intrinsics.f1632.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.f1632.frag; sourceTree = ""; }; + B39811E129239F3800A82429 /* spv.unit1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.unit1.frag; sourceTree = ""; }; + B39811E229239F3800A82429 /* spv.dead-complex-continue-after-return.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.dead-complex-continue-after-return.vert"; sourceTree = ""; }; + B39811E329239F3800A82429 /* spv.310.bitcast.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.310.bitcast.frag; sourceTree = ""; }; + B39811E429239F3800A82429 /* depthOut.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = depthOut.frag; sourceTree = ""; }; + B39811E529239F3800A82429 /* preprocessor.line.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.line.frag; sourceTree = ""; }; + B39811E629239F3800A82429 /* spv.ClosestHitShader_Errors.rchit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ClosestHitShader_Errors.rchit; sourceTree = ""; }; + B39811E729239F3800A82429 /* spv.localAggregates.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.localAggregates.frag; sourceTree = ""; }; + B39811E829239F3800A82429 /* glsl.450.subgroupArithmetic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupArithmetic.comp; sourceTree = ""; }; + B39811E929239F3800A82429 /* spv.IntersectShader_Errors.rint */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.IntersectShader_Errors.rint; sourceTree = ""; }; + B39811EA29239F3800A82429 /* link.vk.multiBlocksValid.1.1.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.multiBlocksValid.1.1.geom; sourceTree = ""; }; + B39811EB29239F3800A82429 /* 300.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300.vert; sourceTree = ""; }; + B39811EC29239F3800A82429 /* newTexture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = newTexture.frag; sourceTree = ""; }; + B39811ED29239F3800A82429 /* glsl.entryPointRename.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.entryPointRename.vert; sourceTree = ""; }; + B39811EE29239F3800A82429 /* hlsl.clipdistance-8.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-8.vert"; sourceTree = ""; }; + B39811EF29239F3800A82429 /* glsl.460.subgroup.rahit */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rahit; sourceTree = ""; }; + B39811F029239F3800A82429 /* spv.vulkan100.subgroupArithmetic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.vulkan100.subgroupArithmetic.comp; sourceTree = ""; }; + B39811F129239F3800A82429 /* glsl.450.subgroup.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.450.subgroup.frag; sourceTree = ""; }; + B39811F229239F3800A82429 /* spv.debugPrintf_Error.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.debugPrintf_Error.frag; sourceTree = ""; }; + B39811F329239F3800A82429 /* loopsArtificial.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = loopsArtificial.frag; sourceTree = ""; }; + B39811F429239F3800A82429 /* remap.specconst.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.specconst.comp; sourceTree = ""; }; + B39811F529239F3800A82429 /* 140.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 140.vert; sourceTree = ""; }; + B39811F629239F3800A82429 /* preprocessor.cpp_style_line_directive.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.cpp_style_line_directive.vert; sourceTree = ""; }; + B39811F729239F3800A82429 /* 300link3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300link3.frag; sourceTree = ""; }; + B39811F829239F3800A82429 /* hlsl.matNx1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.matNx1.frag; sourceTree = ""; }; + B39811F929239F3800A82429 /* hlsl.snorm.uav.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.snorm.uav.comp; sourceTree = ""; }; + B39811FA29239F3800A82429 /* link.vk.matchingPC.0.0.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.matchingPC.0.0.frag; sourceTree = ""; }; + B39811FB29239F3800A82429 /* glsl.es320.subgroupShuffle.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupShuffle.comp; sourceTree = ""; }; + B39811FC29239F3800A82429 /* hlsl.gathercmpRGBA.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gathercmpRGBA.offset.dx10.frag; sourceTree = ""; }; + B39811FD29239F3800A82429 /* hlsl.semantic-1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.semantic-1.vert"; sourceTree = ""; }; + B39811FE29239F3800A82429 /* hlsl.include.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.include.vert; sourceTree = ""; }; + B39811FF29239F3800A82429 /* reflection.linked.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = reflection.linked.vert; sourceTree = ""; }; + B398120029239F3800A82429 /* spv.RayConstants.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayConstants.rgen; sourceTree = ""; }; + B398120129239F3800A82429 /* spv.430.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.430.frag; sourceTree = ""; }; + B398120229239F3800A82429 /* spv.RayCallable_Errors.rcall */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayCallable_Errors.rcall; sourceTree = ""; }; + B398120329239F3800A82429 /* remap.basic.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.basic.none.frag; sourceTree = ""; }; + B398120429239F3800A82429 /* glsl.es320.subgroupArithmetic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupArithmetic.comp; sourceTree = ""; }; + B398120529239F3800A82429 /* 310runtimeArray.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 310runtimeArray.vert; sourceTree = ""; }; + B398120629239F3800A82429 /* spv.310.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.310.comp; sourceTree = ""; }; + B398120729239F3800A82429 /* spv.bufferhandle10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle10.frag; sourceTree = ""; }; + B398120829239F3800A82429 /* hlsl.semantic.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.semantic.geom; sourceTree = ""; }; + B398120929239F3800A82429 /* 450.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.tese; sourceTree = ""; }; + B398120A29239F3800A82429 /* glsl.450.subgroupBallot.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupBallot.comp; sourceTree = ""; }; + B398120B29239F3800A82429 /* runtests */ = {isa = PBXFileReference; lastKnownFileType = text; path = runtests; sourceTree = ""; }; + B398120C29239F3800A82429 /* hlsl.clipdistance-1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-1.frag"; sourceTree = ""; }; + B398120D29239F3800A82429 /* spv.bool.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bool.vert; sourceTree = ""; }; + B398120E29239F3800A82429 /* hlsl.load.rwbuffer.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.rwbuffer.dx10.frag; sourceTree = ""; }; + B398120F29239F3800A82429 /* spv.loops.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.loops.frag; sourceTree = ""; }; + B398121029239F3800A82429 /* hlsl.hull.4.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.4.tesc; sourceTree = ""; }; + B398121129239F3800A82429 /* hlsl.localStructuredBuffer.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.localStructuredBuffer.comp; sourceTree = ""; }; + B398121229239F3800A82429 /* hlsl.y-negate-1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.y-negate-1.vert"; sourceTree = ""; }; + B398121329239F3800A82429 /* spv.aggOps.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.aggOps.frag; sourceTree = ""; }; + B398121429239F3800A82429 /* test.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = test.frag; sourceTree = ""; }; + B398121529239F3800A82429 /* hlsl.struct.split.assign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.struct.split.assign.frag; sourceTree = ""; }; + B398121629239F3800A82429 /* spv.IntersectShader.rint */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.IntersectShader.rint; sourceTree = ""; }; + B398121729239F3800A82429 /* hlsl.load.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.offsetarray.dx10.frag; sourceTree = ""; }; + B398121829239F3800A82429 /* spv.fragmentDensity-neg.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.fragmentDensity-neg.frag"; sourceTree = ""; }; + B398121929239F3800A82429 /* link.vk.multiBlocksValid.0.1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.multiBlocksValid.0.1.vert; sourceTree = ""; }; + B398121A29239F3800A82429 /* 450.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 450.frag; sourceTree = ""; }; + B398121B29239F3800A82429 /* hlsl.specConstant.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.specConstant.frag; sourceTree = ""; }; + B398121C29239F3800A82429 /* hlsl.matrixindex.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.matrixindex.frag; sourceTree = ""; }; + B398121D29239F3800A82429 /* glsl.450.subgroup.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroup.tese; sourceTree = ""; }; + B398121E29239F3800A82429 /* remap.basic.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.basic.everything.frag; sourceTree = ""; }; + B398121F29239F3800A82429 /* spv.noWorkgroup.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.noWorkgroup.comp; sourceTree = ""; }; + B398122029239F3800A82429 /* spv.300BuiltIns.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.300BuiltIns.vert; sourceTree = ""; }; + B398122129239F3800A82429 /* spv.shaderFragMaskAMD.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.shaderFragMaskAMD.frag; sourceTree = ""; }; + B398122229239F3800A82429 /* spv.subgroupExtendedTypesVote.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesVote.comp; sourceTree = ""; }; + B398122329239F3800A82429 /* spv.interpOps.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.interpOps.frag; sourceTree = ""; }; + B398122429239F3800A82429 /* hlsl.depthGreater.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.depthGreater.frag; sourceTree = ""; }; + B398122529239F3800A82429 /* pointCoord.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = pointCoord.frag; sourceTree = ""; }; + B398122629239F3800A82429 /* spv.subgroupExtendedTypesVoteNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesVoteNeg.comp; sourceTree = ""; }; + B398122729239F3800A82429 /* spv.register.autoassign.rangetest.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.register.autoassign.rangetest.frag; sourceTree = ""; }; + B398122829239F3800A82429 /* spv.subgroup.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.subgroup.vert; sourceTree = ""; }; + B398122929239F3800A82429 /* spv.smBuiltins.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.smBuiltins.frag; sourceTree = ""; }; + B398122A29239F3800A82429 /* hlsl.void.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.void.frag; sourceTree = ""; }; + B398122B29239F3800A82429 /* spv.bufferhandle9.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle9.frag; sourceTree = ""; }; + B398122C29239F3800A82429 /* hlsl.partialInit.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.partialInit.frag; sourceTree = ""; }; + B398122D29239F3800A82429 /* web.controlFlow.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.controlFlow.frag; sourceTree = ""; }; + B398122E29239F3800A82429 /* cppNest.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppNest.vert; sourceTree = ""; }; + B398122F29239F3800A82429 /* spv.barrier.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.barrier.vert; sourceTree = ""; }; + B398123029239F3800A82429 /* hlsl.logical.binary.vec.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.logical.binary.vec.frag; sourceTree = ""; }; + B398123129239F3800A82429 /* hlsl.clipdistance-4.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-4.vert"; sourceTree = ""; }; + B398123229239F3800A82429 /* spv.sample.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.sample.frag; sourceTree = ""; }; + B398123329239F3800A82429 /* spv.precise.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.precise.tese; sourceTree = ""; }; + B398123429239F3800A82429 /* hlsl.discard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.discard.frag; sourceTree = ""; }; + B398123529239F3800A82429 /* spv.nonuniform.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.nonuniform.frag; sourceTree = ""; }; + B398123629239F3800A82429 /* spv.matrix.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.matrix.frag; sourceTree = ""; }; + B398123729239F3800A82429 /* 100samplerExternal.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 100samplerExternal.frag; sourceTree = ""; }; + B398123829239F3800A82429 /* hlsl.intrinsics.promote.outputs.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.promote.outputs.frag; sourceTree = ""; }; + B398123929239F3800A82429 /* spv.meshShaderUserDefined.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderUserDefined.mesh; sourceTree = ""; }; + B398123A29239F3800A82429 /* bar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bar.h; sourceTree = ""; }; + B398123B29239F3800A82429 /* hlsl.depthLess.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.depthLess.frag; sourceTree = ""; }; + B398123C29239F3800A82429 /* hlsl.sample.dx9.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.sample.dx9.vert; sourceTree = ""; }; + B398123D29239F3800A82429 /* spv.specConstant.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.specConstant.vert; sourceTree = ""; }; + B398123E29239F3800A82429 /* parentBad */ = {isa = PBXFileReference; lastKnownFileType = text; path = parentBad; sourceTree = ""; }; + B398123F29239F3800A82429 /* glsl.es320.subgroupBallot.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupBallot.comp; sourceTree = ""; }; + B398124029239F3800A82429 /* glsl.450.subgroupPartitioned.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupPartitioned.comp; sourceTree = ""; }; + B398124129239F3800A82429 /* spv.register.subpass.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.register.subpass.frag; sourceTree = ""; }; + B398124229239F3800A82429 /* 320.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 320.vert; sourceTree = ""; }; + B398124329239F3800A82429 /* 450.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.tesc; sourceTree = ""; }; + B398124429239F3800A82429 /* spv.subgroupExtendedTypesArithmetic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesArithmetic.comp; sourceTree = ""; }; + B398124529239F3800A82429 /* loops.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = loops.frag; sourceTree = ""; }; + B398124629239F3800A82429 /* spv.450.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.450.geom; sourceTree = ""; }; + B398124729239F3800A82429 /* hlsl.pp.line.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.pp.line.frag; sourceTree = ""; }; + B398124829239F3800A82429 /* rayQuery-allOps.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "rayQuery-allOps.frag"; sourceTree = ""; }; + B398124929239F3800A82429 /* spv.debugPrintf.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.debugPrintf.frag; sourceTree = ""; }; + B398124A29239F3800A82429 /* spv.1.3.8bitstorage-ssbo.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.1.3.8bitstorage-ssbo.vert"; sourceTree = ""; }; + B398124B29239F3800A82429 /* hlsl.deadFunctionMissingBody.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.deadFunctionMissingBody.vert; sourceTree = ""; }; + B398124C29239F3800A82429 /* remap.similar_1b.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.similar_1b.everything.frag; sourceTree = ""; }; + B398124D29239F3800A82429 /* hlsl.matpack-pragma.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.matpack-pragma.frag"; sourceTree = ""; }; + B398124E29239F3800A82429 /* 110scope.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 110scope.vert; sourceTree = ""; }; + B398124F29239F3800A82429 /* spv.subgroupExtendedTypesBallot.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesBallot.comp; sourceTree = ""; }; + B398125029239F3800A82429 /* recurse1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = recurse1.frag; sourceTree = ""; }; + B398125129239F3800A82429 /* 410.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 410.geom; sourceTree = ""; }; + B398125229239F3800A82429 /* hlsl.getdimensions.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.getdimensions.dx10.frag; sourceTree = ""; }; + B398125329239F3800A82429 /* hlsl.samplecmplevelzero.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmplevelzero.offsetarray.dx10.frag; sourceTree = ""; }; + B398125429239F3800A82429 /* spv.atomic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.atomic.comp; sourceTree = ""; }; + B398125529239F3800A82429 /* comment.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = comment.frag; sourceTree = ""; }; + B398125629239F3800A82429 /* 410.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 410.tesc; sourceTree = ""; }; + B398125729239F3800A82429 /* glspv.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glspv.vert; sourceTree = ""; }; + B398125829239F3800A82429 /* hlsl.intrinsics.negative.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.negative.vert; sourceTree = ""; }; + B398125929239F3800A82429 /* hlsl.preprocessor.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.preprocessor.frag; sourceTree = ""; }; + B398125A29239F3800A82429 /* spv.1.4.OpCopyLogical.funcall.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.OpCopyLogical.funcall.frag; sourceTree = ""; }; + B398125B29239F3800A82429 /* spv.450.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.450.tesc; sourceTree = ""; }; + B398125C29239F3800A82429 /* spv.fullyCovered.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.fullyCovered.frag; sourceTree = ""; }; + B398125D29239F3800A82429 /* spv.ext.RayGenShaderArray.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShaderArray.rgen; sourceTree = ""; }; + B398125E29239F3800A82429 /* badChars.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = badChars.frag; sourceTree = ""; }; + B398125F29239F3800A82429 /* hlsl.loopattr.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.loopattr.frag; sourceTree = ""; }; + B398126029239F3800A82429 /* 450.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 450.geom; sourceTree = ""; }; + B398126129239F3800A82429 /* spv.merge-unreachable.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.merge-unreachable.frag"; sourceTree = ""; }; + B398126229239F3800A82429 /* spv.textureGatherBiasLod.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.textureGatherBiasLod.frag; sourceTree = ""; }; + B398126329239F3800A82429 /* hlsl.calculatelod.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.calculatelod.dx10.frag; sourceTree = ""; }; + B398126429239F3800A82429 /* spv.deviceGroup.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.deviceGroup.frag; sourceTree = ""; }; + B398126529239F3800A82429 /* spv.length.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.length.frag; sourceTree = ""; }; + B398126629239F3800A82429 /* spv.300layout.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.300layout.frag; sourceTree = ""; }; + B398126729239F3800A82429 /* hlsl.intrinsics.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.vert; sourceTree = ""; }; + B398126829239F3800A82429 /* hlsl.load.2dms.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.2dms.dx10.frag; sourceTree = ""; }; + B398126929239F3800A82429 /* hlsl.charLit.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.charLit.vert; sourceTree = ""; }; + B398126A29239F3800A82429 /* hlsl.mip.negative.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.mip.negative.frag; sourceTree = ""; }; + B398126B29239F3800A82429 /* remap.uniformarray.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.uniformarray.everything.frag; sourceTree = ""; }; + B398126C29239F3800A82429 /* spv.functionParameterTypes.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.functionParameterTypes.frag; sourceTree = ""; }; + B398126D29239F3800A82429 /* spv.8bitstorage-ubo.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.8bitstorage-ubo.vert"; sourceTree = ""; }; + B398126E29239F3800A82429 /* hlsl.hlslOffset.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.hlslOffset.vert; sourceTree = ""; }; + B398126F29239F3800A82429 /* hlsl.intrinsics.promote.down.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.promote.down.frag; sourceTree = ""; }; + B398127029239F3800A82429 /* remap.similar_1b.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.similar_1b.none.frag; sourceTree = ""; }; + B398127129239F3800A82429 /* spv.memoryScopeSemantics.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.memoryScopeSemantics.comp; sourceTree = ""; }; + B398127229239F3800A82429 /* spv.qualifiers.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.qualifiers.vert; sourceTree = ""; }; + B398127329239F3800A82429 /* hlsl.numericsuffixes.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.numericsuffixes.frag; sourceTree = ""; }; + B398127429239F3800A82429 /* hlsl.tx.bracket.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.tx.bracket.frag; sourceTree = ""; }; + B398127529239F3800A82429 /* nonSquare.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = nonSquare.vert; sourceTree = ""; }; + B398127629239F3800A82429 /* hlsl.clipdistance-5.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-5.vert"; sourceTree = ""; }; + B398127729239F3800A82429 /* spv.glFragColor.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.glFragColor.frag; sourceTree = ""; }; + B398127829239F3800A82429 /* hlsl.structbuffer.rwbyte.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.rwbyte.frag; sourceTree = ""; }; + B398127929239F3800A82429 /* web.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.comp; sourceTree = ""; }; + B398127A29239F3800A82429 /* spv.matFun.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.matFun.vert; sourceTree = ""; }; + B398127B29239F3800A82429 /* spv.ClosestHitShader.rchit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ClosestHitShader.rchit; sourceTree = ""; }; + B398127C29239F3800A82429 /* hlsl.amend.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.amend.frag; sourceTree = ""; }; + B398127D29239F3800A82429 /* spv.bufferhandle8.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle8.frag; sourceTree = ""; }; + B398127E29239F3800A82429 /* spv.offsets.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.offsets.frag; sourceTree = ""; }; + B398127F29239F3800A82429 /* makeDoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = makeDoc; sourceTree = ""; }; + B398128029239F3800A82429 /* 120.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 120.vert; sourceTree = ""; }; + B398128129239F3800A82429 /* spv.subgroupExtendedTypesShuffle.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffle.comp; sourceTree = ""; }; + B398128229239F3800A82429 /* 435.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 435.vert; sourceTree = ""; }; + B398128329239F3800A82429 /* hlsl.wavereduction.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavereduction.comp; sourceTree = ""; }; + B398128429239F3800A82429 /* spv.pp.line.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.pp.line.frag; sourceTree = ""; }; + B398128529239F3800A82429 /* hlsl.attribute.expression.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.attribute.expression.comp; sourceTree = ""; }; + B398128629239F3800A82429 /* link.vk.multiBlocksValid.0.0.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.multiBlocksValid.0.0.vert; sourceTree = ""; }; + B398128729239F3800A82429 /* spv.for-continue-break.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.for-continue-break.vert"; sourceTree = ""; }; + B398128829239F3800A82429 /* array.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = array.frag; sourceTree = ""; }; + B398128929239F3800A82429 /* hlsl.hull.5.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.5.tesc; sourceTree = ""; }; + B398128A29239F3800A82429 /* hlsl.samplecmp.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmp.offset.dx10.frag; sourceTree = ""; }; + B398128B29239F3800A82429 /* hlsl.doLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.doLoop.frag; sourceTree = ""; }; + B398128C29239F3900A82429 /* spv.atomicInt64.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.atomicInt64.comp; sourceTree = ""; }; + B398128D29239F3900A82429 /* spv.subgroupBallot.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupBallot.comp; sourceTree = ""; }; + B398128E29239F3900A82429 /* link1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link1.frag; sourceTree = ""; }; + B398128F29239F3900A82429 /* specExamples.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = specExamples.vert; sourceTree = ""; }; + B398129029239F3900A82429 /* voidFunction.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = voidFunction.frag; sourceTree = ""; }; + B398129129239F3900A82429 /* spv.precisionNonESSamp.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.precisionNonESSamp.frag; sourceTree = ""; }; + B398129229239F3900A82429 /* hlsl.texture.subvec4.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.texture.subvec4.frag; sourceTree = ""; }; + B398129329239F3900A82429 /* spv.bufferhandle11.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle11.frag; sourceTree = ""; }; + B398129429239F3900A82429 /* spv.float16.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.float16.frag; sourceTree = ""; }; + B398129529239F3900A82429 /* precise_struct_block.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = precise_struct_block.vert; sourceTree = ""; }; + B398129629239F3900A82429 /* hlsl.nonstaticMemberFunction.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.nonstaticMemberFunction.frag; sourceTree = ""; }; + B398129729239F3900A82429 /* spv.debugInfo.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.debugInfo.frag; sourceTree = ""; }; + B398129829239F3900A82429 /* hlsl.earlydepthstencil.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.earlydepthstencil.frag; sourceTree = ""; }; + B398129929239F3900A82429 /* spv.dead-after-discard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.dead-after-discard.frag"; sourceTree = ""; }; + B398129A29239F3900A82429 /* cppIntMinOverNegativeOne.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppIntMinOverNegativeOne.frag; sourceTree = ""; }; + B398129B29239F3900A82429 /* hlsl.params.default.negative.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.params.default.negative.frag; sourceTree = ""; }; + B398129C29239F3900A82429 /* spv.swizzleInversion.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.swizzleInversion.frag; sourceTree = ""; }; + B398129D29239F3900A82429 /* spv.RayGenShader11.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShader11.rgen; sourceTree = ""; }; + B398129E29239F3900A82429 /* spv.subgroupExtendedTypesArithmeticNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesArithmeticNeg.comp; sourceTree = ""; }; + B398129F29239F3900A82429 /* 300link2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300link2.frag; sourceTree = ""; }; + B39812A029239F3900A82429 /* link.vk.matchingPC.0.1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.matchingPC.0.1.frag; sourceTree = ""; }; + B39812A129239F3900A82429 /* hlsl.load.buffer.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.buffer.dx10.frag; sourceTree = ""; }; + B39812A229239F3900A82429 /* 310AofA.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 310AofA.vert; sourceTree = ""; }; + B39812A329239F3900A82429 /* spv.conditionalDemote.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.conditionalDemote.frag; sourceTree = ""; }; + B39812A429239F3900A82429 /* spv.xfbStrideJustOnce.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.xfbStrideJustOnce.vert; sourceTree = ""; }; + B39812A529239F3900A82429 /* spv.shaderImageFootprint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.shaderImageFootprint.frag; sourceTree = ""; }; + B39812A629239F3900A82429 /* hlsl.logicalConvert.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.logicalConvert.frag; sourceTree = ""; }; + B39812A729239F3900A82429 /* hlsl.promote.atomic.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.promote.atomic.frag; sourceTree = ""; }; + B39812A829239F3900A82429 /* es-link1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "es-link1.frag"; sourceTree = ""; }; + B39812A929239F3900A82429 /* 310.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.comp; sourceTree = ""; }; + B39812AA29239F3900A82429 /* spv.types.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.types.frag; sourceTree = ""; }; + B39812AB29239F3900A82429 /* spv.separate.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.separate.frag; sourceTree = ""; }; + B39812AC29239F3900A82429 /* hlsl.opaque-type-bug.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.opaque-type-bug.frag"; sourceTree = ""; }; + B39812AD29239F3900A82429 /* cppDeepNest.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppDeepNest.frag; sourceTree = ""; }; + B39812AE29239F3900A82429 /* compoundsuffix.frag.hlsl */ = {isa = PBXFileReference; lastKnownFileType = text; path = compoundsuffix.frag.hlsl; sourceTree = ""; }; + B39812AF29239F3900A82429 /* hlsl.coverage.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.coverage.frag; sourceTree = ""; }; + B39812B029239F3900A82429 /* hlsl.load.basic.dx10.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.basic.dx10.vert; sourceTree = ""; }; + B39812B129239F3900A82429 /* hlsl.constructexpr.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.constructexpr.frag; sourceTree = ""; }; + B39812B229239F3900A82429 /* spv.subgroupPartitioned.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupPartitioned.comp; sourceTree = ""; }; + B39812B329239F3900A82429 /* spv.builtInXFB.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.builtInXFB.vert; sourceTree = ""; }; + B39812B429239F3900A82429 /* matrix2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = matrix2.frag; sourceTree = ""; }; + B39812B529239F3900A82429 /* hlsl.color.hull.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.color.hull.tesc; sourceTree = ""; }; + B39812B629239F3900A82429 /* hlsl.emptystructreturn.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.emptystructreturn.vert; sourceTree = ""; }; + B39812B729239F3900A82429 /* link.vk.multiBlocksValid.1.0.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.multiBlocksValid.1.0.geom; sourceTree = ""; }; + B39812B829239F3900A82429 /* hlsl.clipdistance-1.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-1.geom"; sourceTree = ""; }; + B39812B929239F3900A82429 /* hlsl.clipdistance-9.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-9.vert"; sourceTree = ""; }; + B39812BA29239F3900A82429 /* hlsl.-D-U.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.-D-U.frag"; sourceTree = ""; }; + B39812BB29239F3900A82429 /* glsl.460.subgroup.rint */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rint; sourceTree = ""; }; + B39812BC29239F3900A82429 /* hlsl.precise.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.precise.frag; sourceTree = ""; }; + B39812BD29239F3900A82429 /* spv.dataOut.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.dataOut.frag; sourceTree = ""; }; + B39812BE29239F3900A82429 /* hlsl.flatten.return.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.flatten.return.frag; sourceTree = ""; }; + B39812BF29239F3900A82429 /* spv.bufferhandle4.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle4.frag; sourceTree = ""; }; + B39812C029239F3900A82429 /* hlsl.isfinite.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.isfinite.frag; sourceTree = ""; }; + B39812C129239F3900A82429 /* 310.inheritMemory.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 310.inheritMemory.frag; sourceTree = ""; }; + B39812C229239F3900A82429 /* prepost.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = prepost.frag; sourceTree = ""; }; + B39812C329239F3900A82429 /* precision.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = precision.vert; sourceTree = ""; }; + B39812C429239F3900A82429 /* swizzle.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = swizzle.frag; sourceTree = ""; }; + B39812C529239F3900A82429 /* spv.varyingArray.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.varyingArray.frag; sourceTree = ""; }; + B39812C629239F3900A82429 /* types.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = types.frag; sourceTree = ""; }; + B39812C729239F3900A82429 /* spv.ext.MissShader.rmiss */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.MissShader.rmiss; sourceTree = ""; }; + B39812C829239F3900A82429 /* 300samplerExternal.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300samplerExternal.frag; sourceTree = ""; }; + B39812C929239F3900A82429 /* glsl.450.subgroup.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.450.subgroup.geom; sourceTree = ""; }; + B39812CA29239F3900A82429 /* spv.8bitstorage_Error-int.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.8bitstorage_Error-int.frag"; sourceTree = ""; }; + B39812CB29239F3900A82429 /* preprocessor.extensions.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.extensions.vert; sourceTree = ""; }; + B39812CC29239F3900A82429 /* hlsl.float4.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.float4.frag; sourceTree = ""; }; + B39812CD29239F3900A82429 /* conditionalDiscard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = conditionalDiscard.frag; sourceTree = ""; }; + B39812CE29239F3900A82429 /* link.vk.differentPC.1.2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.differentPC.1.2.frag; sourceTree = ""; }; + B39812CF29239F3900A82429 /* hlsl.clipdistance-3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-3.frag"; sourceTree = ""; }; + B39812D029239F3900A82429 /* i1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i1.h; sourceTree = ""; }; + B39812D129239F3900A82429 /* spv.bufferhandle12.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle12.frag; sourceTree = ""; }; + B39812D229239F3900A82429 /* hlsl.logical.binary.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.logical.binary.frag; sourceTree = ""; }; + B39812D329239F3900A82429 /* link2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link2.frag; sourceTree = ""; }; + B39812D429239F3900A82429 /* varyingArray.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = varyingArray.frag; sourceTree = ""; }; + B39812D529239F3900A82429 /* 100.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = 100.conf; sourceTree = ""; }; + B39812D629239F3900A82429 /* web.builtins.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.builtins.frag; sourceTree = ""; }; + B39812D729239F3900A82429 /* glsl.460.subgroup.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rgen; sourceTree = ""; }; + B39812D829239F3900A82429 /* hlsl.pp.line4.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.pp.line4.frag; sourceTree = ""; }; + B39812D929239F3900A82429 /* rayQuery-no-cse.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-no-cse.rgen"; sourceTree = ""; }; + B39812DA29239F3900A82429 /* varyingArrayIndirect.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = varyingArrayIndirect.frag; sourceTree = ""; }; + B39812DB29239F3900A82429 /* hlsl.staticFuncInit.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.staticFuncInit.frag; sourceTree = ""; }; + B39812DC29239F3900A82429 /* hlsl.constructimat.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.constructimat.frag; sourceTree = ""; }; + B39812DD29239F3900A82429 /* spv.structDeref.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.structDeref.frag; sourceTree = ""; }; + B39812DE29239F3900A82429 /* spv.16bitstorage-uint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.16bitstorage-uint.frag"; sourceTree = ""; }; + B39812DF29239F3900A82429 /* rayQuery-allOps.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-allOps.comp"; sourceTree = ""; }; + B39812E029239F3900A82429 /* 130.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 130.frag; sourceTree = ""; }; + B39812E129239F3900A82429 /* remap.switch.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.switch.everything.frag; sourceTree = ""; }; + B39812E229239F3900A82429 /* spv.xfbOffsetOnBlockMembersAssignment.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.xfbOffsetOnBlockMembersAssignment.vert; sourceTree = ""; }; + B39812E329239F3900A82429 /* link.vk.matchingPC.0.2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.matchingPC.0.2.frag; sourceTree = ""; }; + B39812E429239F3900A82429 /* versionsClean.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = versionsClean.frag; sourceTree = ""; }; + B39812E529239F3900A82429 /* spv.meshShaderPerView_Errors.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderPerView_Errors.mesh; sourceTree = ""; }; + B39812E629239F3900A82429 /* spv.controlFlowAttributes.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.controlFlowAttributes.frag; sourceTree = ""; }; + B39812E729239F3900A82429 /* web.texture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.texture.frag; sourceTree = ""; }; + B39812E829239F3900A82429 /* spv.texture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.texture.frag; sourceTree = ""; }; + B39812E929239F3900A82429 /* es-link2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "es-link2.frag"; sourceTree = ""; }; + B39812EA29239F3900A82429 /* 400.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 400.vert; sourceTree = ""; }; + B39812EB29239F3900A82429 /* hlsl.samplecmp.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmp.offsetarray.dx10.frag; sourceTree = ""; }; + B39812EC29239F3900A82429 /* reflection.options.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = reflection.options.vert; sourceTree = ""; }; + B39812ED29239F3900A82429 /* spv.int32.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.int32.frag; sourceTree = ""; }; + B39812EE29239F3900A82429 /* hlsl.clipdistance-2.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-2.geom"; sourceTree = ""; }; + B39812EF29239F3900A82429 /* hlsl.texturebuffer.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.texturebuffer.frag; sourceTree = ""; }; + B39812F029239F3900A82429 /* spv.sampleMaskOverrideCoverage.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.sampleMaskOverrideCoverage.frag; sourceTree = ""; }; + B39812F129239F3900A82429 /* hlsl.sample.sub-vec4.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.sample.sub-vec4.dx10.frag"; sourceTree = ""; }; + B39812F229239F3900A82429 /* hlsl.stringtoken.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.stringtoken.frag; sourceTree = ""; }; + B39812F329239F3900A82429 /* spv.unit3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.unit3.frag; sourceTree = ""; }; + B39812F429239F3900A82429 /* spv.conditionalDiscard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.conditionalDiscard.frag; sourceTree = ""; }; + B39812F529239F3900A82429 /* hlsl.constructArray.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.constructArray.vert; sourceTree = ""; }; + B39812F629239F3900A82429 /* spv.shaderStencilExport.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.shaderStencilExport.frag; sourceTree = ""; }; + B39812F729239F3900A82429 /* spv.bufferhandle7.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle7.frag; sourceTree = ""; }; + B39812F829239F3900A82429 /* 300link.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300link.frag; sourceTree = ""; }; + B39812F929239F3900A82429 /* spv.multiviewPerViewAttributes.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.multiviewPerViewAttributes.tesc; sourceTree = ""; }; + B39812FB29239F3900A82429 /* bar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bar.h; sourceTree = ""; }; + B39812FC29239F3900A82429 /* foo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = foo.h; sourceTree = ""; }; + B39812FD29239F3900A82429 /* hlsl.samplelevel.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplelevel.offsetarray.dx10.frag; sourceTree = ""; }; + B39812FE29239F3900A82429 /* spv.image.load-formatted.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.image.load-formatted.frag"; sourceTree = ""; }; + B39812FF29239F3900A82429 /* remap.if.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.if.none.frag; sourceTree = ""; }; + B398130029239F3900A82429 /* hlsl.intrinsic.frexp.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsic.frexp.vert; sourceTree = ""; }; + B398130129239F3900A82429 /* spv.voidFunction.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.voidFunction.frag; sourceTree = ""; }; + B398130229239F3900A82429 /* 450.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.comp; sourceTree = ""; }; + B398130329239F3900A82429 /* spv.float16convertonlyarith.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float16convertonlyarith.comp; sourceTree = ""; }; + B398130429239F3900A82429 /* glsl.es320.subgroupQuad.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupQuad.comp; sourceTree = ""; }; + B398130529239F3900A82429 /* hlsl.sample.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.sample.basic.dx10.frag; sourceTree = ""; }; + B398130629239F3900A82429 /* link.vk.differentPC.1.1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.differentPC.1.1.frag; sourceTree = ""; }; + B398130729239F3900A82429 /* hlsl.attribute.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.attribute.frag; sourceTree = ""; }; + B398130829239F3900A82429 /* hlsl.PointSize.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.PointSize.vert; sourceTree = ""; }; + B398130929239F3900A82429 /* spv.8bitstorage-int.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.8bitstorage-int.frag"; sourceTree = ""; }; + B398130A29239F3900A82429 /* aggOps.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = aggOps.frag; sourceTree = ""; }; + B398130B29239F3900A82429 /* spv.constStruct.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.constStruct.vert; sourceTree = ""; }; + B398130C29239F3900A82429 /* constantUnaryConversion.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = constantUnaryConversion.comp; sourceTree = ""; }; + B398130D29239F3900A82429 /* glsl.450.subgroupClusteredNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupClusteredNeg.comp; sourceTree = ""; }; + B398130E29239F3900A82429 /* array100.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = array100.frag; sourceTree = ""; }; + B398130F29239F3900A82429 /* hlsl.inoutquals.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.inoutquals.frag; sourceTree = ""; }; + B398131029239F3900A82429 /* spv.subgroupExtendedTypesShuffleRelative.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffleRelative.comp; sourceTree = ""; }; + B398131129239F3900A82429 /* 150.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 150.geom; sourceTree = ""; }; + B398131229239F3900A82429 /* preprocessor.many.endif.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.many.endif.vert; sourceTree = ""; }; + B398131329239F3900A82429 /* hlsl.layout.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.layout.frag; sourceTree = ""; }; + B398131429239F3900A82429 /* hlsl.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.frag; sourceTree = ""; }; + B398131529239F3900A82429 /* cppPassMacroName.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppPassMacroName.frag; sourceTree = ""; }; + B398131629239F3900A82429 /* glsl.450.subgroupVote.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupVote.comp; sourceTree = ""; }; + B398131729239F3900A82429 /* hlsl.flattenOpaqueInit.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.flattenOpaqueInit.vert; sourceTree = ""; }; + B398131829239F3900A82429 /* hlsl.partialFlattenMixed.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.partialFlattenMixed.vert; sourceTree = ""; }; + B398131929239F3900A82429 /* hlsl.singleArgIntPromo.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.singleArgIntPromo.vert; sourceTree = ""; }; + B398131A29239F3900A82429 /* cppBad3.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppBad3.vert; sourceTree = ""; }; + B398131B29239F3900A82429 /* hlsl.typedef.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.typedef.frag; sourceTree = ""; }; + B398131C29239F3900A82429 /* spv.nonSquare.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.nonSquare.vert; sourceTree = ""; }; + B398131D29239F3900A82429 /* spv.subpass.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.subpass.frag; sourceTree = ""; }; + B398131E29239F3900A82429 /* spv.16bitstorage_Error-uint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.16bitstorage_Error-uint.frag"; sourceTree = ""; }; + B398131F29239F3900A82429 /* matrix.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = matrix.frag; sourceTree = ""; }; + B398132029239F3900A82429 /* spv.subgroupShuffle.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupShuffle.comp; sourceTree = ""; }; + B398132129239F3900A82429 /* hlsl.groupid.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.groupid.comp; sourceTree = ""; }; + B398132229239F3900A82429 /* sample.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = sample.frag; sourceTree = ""; }; + B398132329239F3900A82429 /* spv.imageLoadStoreLod.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.imageLoadStoreLod.frag; sourceTree = ""; }; + B398132429239F3900A82429 /* spv.forLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.forLoop.frag; sourceTree = ""; }; + B398132529239F3900A82429 /* link1.vk.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link1.vk.frag; sourceTree = ""; }; + B398132629239F3900A82429 /* spv.460.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.460.vert; sourceTree = ""; }; + B398132729239F3900A82429 /* glsl.460.subgroup.rchit */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rchit; sourceTree = ""; }; + B398132829239F3900A82429 /* hlsl.clipdistance-6.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-6.vert"; sourceTree = ""; }; + B398132929239F3900A82429 /* 300layout.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300layout.frag; sourceTree = ""; }; + B398132A29239F3900A82429 /* findFunction.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = findFunction.frag; sourceTree = ""; }; + B398132B29239F3900A82429 /* hlsl.cast.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.cast.frag; sourceTree = ""; }; + B398132C29239F3900A82429 /* empty2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = empty2.frag; sourceTree = ""; }; + B398132D29239F3900A82429 /* spv.scalarlayout.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.scalarlayout.frag; sourceTree = ""; }; + B398132E29239F3900A82429 /* hlsl.structbuffer.fn2.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.fn2.comp; sourceTree = ""; }; + B398132F29239F3900A82429 /* spv.nonuniform4.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.nonuniform4.frag; sourceTree = ""; }; + B398133029239F3900A82429 /* 420.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 420.vert; sourceTree = ""; }; + B398133129239F3900A82429 /* hlsl.wavequery.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavequery.comp; sourceTree = ""; }; + B398133229239F3900A82429 /* hlsl.calculatelodunclamped.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.calculatelodunclamped.dx10.frag; sourceTree = ""; }; + B398133329239F3900A82429 /* hlsl.structStructName.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structStructName.frag; sourceTree = ""; }; + B398133429239F3900A82429 /* hlsl.struct.split-1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.struct.split-1.vert"; sourceTree = ""; }; + B398133529239F3900A82429 /* preprocessor.pragma.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.pragma.vert; sourceTree = ""; }; + B398133629239F3900A82429 /* structDeref.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = structDeref.frag; sourceTree = ""; }; + B398133729239F3900A82429 /* hlsl.load.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.offset.dx10.frag; sourceTree = ""; }; + B398133829239F3900A82429 /* spv.functionSemantics.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.functionSemantics.frag; sourceTree = ""; }; + B398133929239F3900A82429 /* hlsl.self_cast.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.self_cast.frag; sourceTree = ""; }; + B398133A29239F3900A82429 /* spv.dead-after-loop-break.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.dead-after-loop-break.vert"; sourceTree = ""; }; + B398133B29239F3900A82429 /* hlsl.matType.int.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.matType.int.frag; sourceTree = ""; }; + B398133C29239F3900A82429 /* spv.MissShader.rmiss */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.MissShader.rmiss; sourceTree = ""; }; + B398133D29239F3900A82429 /* versionsErrors.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = versionsErrors.vert; sourceTree = ""; }; + B398133E29239F3900A82429 /* preprocessor.cpp_style___FILE__.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "preprocessor.cpp_style___FILE__.vert"; sourceTree = ""; }; + B398133F29239F3900A82429 /* hlsl.gather.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gather.offsetarray.dx10.frag; sourceTree = ""; }; + B398134029239F3900A82429 /* hlsl.y-negate-3.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.y-negate-3.vert"; sourceTree = ""; }; + B398134129239F3900A82429 /* spv.ext.RayConstants.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayConstants.rgen; sourceTree = ""; }; + B398134229239F3900A82429 /* 310.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 310.geom; sourceTree = ""; }; + B398134329239F3900A82429 /* deepRvalue.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = deepRvalue.frag; sourceTree = ""; }; + B398134429239F3900A82429 /* glsl.es320.subgroup.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.es320.subgroup.geom; sourceTree = ""; }; + B398134529239F3900A82429 /* hlsl.gathercmpRGBA.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gathercmpRGBA.offsetarray.dx10.frag; sourceTree = ""; }; + B398134629239F3900A82429 /* hlsl.y-negate-2.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.y-negate-2.vert"; sourceTree = ""; }; + B398134729239F3900A82429 /* overlongLiteral.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = overlongLiteral.frag; sourceTree = ""; }; + B398134829239F3900A82429 /* hlsl.samplegrad.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplegrad.offsetarray.dx10.frag; sourceTree = ""; }; + B398134929239F3900A82429 /* vulkan.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vulkan.vert; sourceTree = ""; }; + B398134A29239F3900A82429 /* 310.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.tesc; sourceTree = ""; }; + B398134B29239F3900A82429 /* 460.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 460.vert; sourceTree = ""; }; + B398134C29239F3900A82429 /* spv.vulkan110.storageBuffer.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.vulkan110.storageBuffer.vert; sourceTree = ""; }; + B398134D29239F3900A82429 /* glsl.es320.subgroup.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroup.tesc; sourceTree = ""; }; + B398134E29239F3900A82429 /* spv.multiStruct.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.multiStruct.comp; sourceTree = ""; }; + B398134F29239F3900A82429 /* hlsl.sample.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.sample.offset.dx10.frag; sourceTree = ""; }; + B398135029239F3900A82429 /* hlsl.gatherRGBA.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gatherRGBA.array.dx10.frag; sourceTree = ""; }; + B398135129239F3900A82429 /* spv.conversion.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.conversion.frag; sourceTree = ""; }; + B398135229239F3900A82429 /* hlsl.scope.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.scope.frag; sourceTree = ""; }; + B398135329239F3900A82429 /* spv.coopmat.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.coopmat.comp; sourceTree = ""; }; + B398135429239F3900A82429 /* spv.hlslOffsets.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.hlslOffsets.vert; sourceTree = ""; }; + B398135529239F3900A82429 /* spv.xfbOverlapOffsetCheckWithBlockAndMember.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.xfbOverlapOffsetCheckWithBlockAndMember.vert; sourceTree = ""; }; + B398135629239F3900A82429 /* spv.perprimitiveNV.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.perprimitiveNV.frag; sourceTree = ""; }; + B398135729239F3900A82429 /* spv.set.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.set.vert; sourceTree = ""; }; + B398135829239F3900A82429 /* hlsl.automap.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.automap.frag; sourceTree = ""; }; + B398135929239F3900A82429 /* hlsl.staticMemberFunction.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.staticMemberFunction.frag; sourceTree = ""; }; + B398135A29239F3900A82429 /* hlsl.structIoFourWay.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structIoFourWay.frag; sourceTree = ""; }; + B398135B29239F3900A82429 /* hlsl.getsampleposition.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.getsampleposition.dx10.frag; sourceTree = ""; }; + B398135C29239F3900A82429 /* hlsl.array.multidim.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.array.multidim.frag; sourceTree = ""; }; + B398135D29239F3900A82429 /* spv.nonuniform5.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.nonuniform5.frag; sourceTree = ""; }; + B398135E29239F3900A82429 /* remap.similar_1a.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.similar_1a.none.frag; sourceTree = ""; }; + B398135F29239F3900A82429 /* 150.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 150.frag; sourceTree = ""; }; + B398136029239F3900A82429 /* length.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = length.frag; sourceTree = ""; }; + B398136129239F3900A82429 /* hlsl.clipdistance-7.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-7.vert"; sourceTree = ""; }; + B398136229239F3900A82429 /* spv.subgroupExtendedTypesQuadNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesQuadNeg.comp; sourceTree = ""; }; + B398136329239F3900A82429 /* empty3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = empty3.frag; sourceTree = ""; }; + B398136429239F3900A82429 /* spv.fsi.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.fsi.frag; sourceTree = ""; }; + B398136529239F3900A82429 /* hlsl.reflection.binding.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.reflection.binding.frag; sourceTree = ""; }; + B398136629239F3900A82429 /* hlsl.structbuffer.incdec.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.incdec.frag; sourceTree = ""; }; + B398136729239F3900A82429 /* negativeArraySize.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = negativeArraySize.comp; sourceTree = ""; }; + B398136829239F3900A82429 /* hlsl.scalar2matrix.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.scalar2matrix.frag; sourceTree = ""; }; + B398136929239F3900A82429 /* hlsl.subpass.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.subpass.frag; sourceTree = ""; }; + B398136A29239F3900A82429 /* hlsl.samplegrad.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplegrad.offset.dx10.frag; sourceTree = ""; }; + B398136B29239F3900A82429 /* spv.test.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.test.frag; sourceTree = ""; }; + B398136C29239F3900A82429 /* remap.hlsl.templatetypes.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.hlsl.templatetypes.none.frag; sourceTree = ""; }; + B398136D29239F3900A82429 /* hlsl.matrixSwizzle.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.matrixSwizzle.vert; sourceTree = ""; }; + B398136E29239F3900A82429 /* 310.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 310.frag; sourceTree = ""; }; + B398136F29239F3900A82429 /* spv.targetOpenGL.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.targetOpenGL.vert; sourceTree = ""; }; + B398137029239F3900A82429 /* glsl.es320.subgroup.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.es320.subgroup.frag; sourceTree = ""; }; + B398137129239F3900A82429 /* spv.viewportArray2.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.viewportArray2.vert; sourceTree = ""; }; + B398137229239F3900A82429 /* hlsl.forLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.forLoop.frag; sourceTree = ""; }; + B398137329239F3900A82429 /* spv.1.3.8bitstorage-ubo.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.1.3.8bitstorage-ubo.vert"; sourceTree = ""; }; + B398137429239F3900A82429 /* spv.150.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.150.geom; sourceTree = ""; }; + B398137529239F3900A82429 /* cppBad2.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppBad2.vert; sourceTree = ""; }; + B398137629239F3900A82429 /* spv.forwardFun.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.forwardFun.frag; sourceTree = ""; }; + B398137729239F3900A82429 /* stringToDouble.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = stringToDouble.vert; sourceTree = ""; }; + B398137829239F3900A82429 /* spv.fragmentShaderBarycentric2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.fragmentShaderBarycentric2.frag; sourceTree = ""; }; + B398137929239F3900A82429 /* functionSemantics.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = functionSemantics.frag; sourceTree = ""; }; + B398137A29239F3900A82429 /* glsl.460.subgroup.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.mesh; sourceTree = ""; }; + B398137B29239F3900A82429 /* 430.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = 430.comp; sourceTree = ""; }; + B398137C29239F3900A82429 /* hlsl.samplebias.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplebias.array.dx10.frag; sourceTree = ""; }; + B398137D29239F3900A82429 /* hlsl.shapeConv.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.shapeConv.frag; sourceTree = ""; }; + B398137E29239F3900A82429 /* spv.fragmentDensity.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.fragmentDensity.frag; sourceTree = ""; }; + B398137F29239F3900A82429 /* spv.samplePosition.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.samplePosition.frag; sourceTree = ""; }; + B398138029239F3900A82429 /* web.array.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.array.frag; sourceTree = ""; }; + B398138129239F3900A82429 /* spv.fsi_Error.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.fsi_Error.frag; sourceTree = ""; }; + B398138229239F3900A82429 /* hlsl.shapeConvRet.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.shapeConvRet.frag; sourceTree = ""; }; + B398138329239F3900A82429 /* nvShaderNoperspectiveInterpolation.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = nvShaderNoperspectiveInterpolation.frag; sourceTree = ""; }; + B398138429239F3900A82429 /* spv.specConstantOperations.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.specConstantOperations.vert; sourceTree = ""; }; + B398138529239F3900A82429 /* spv.1.4.constructComposite.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.constructComposite.comp; sourceTree = ""; }; + B398138629239F3900A82429 /* spv.Operations.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.Operations.frag; sourceTree = ""; }; + B398138729239F3900A82429 /* hlsl.pp.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.pp.vert; sourceTree = ""; }; + B398138829239F3900A82429 /* parent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = parent.h; sourceTree = ""; }; + B398138929239F3900A82429 /* 150.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 150.tesc; sourceTree = ""; }; + B398138A29239F3900A82429 /* glsl.es320.subgroupPartitioned.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupPartitioned.comp; sourceTree = ""; }; + B398138B29239F3900A82429 /* remap.invalid-spirv-2.spv */ = {isa = PBXFileReference; lastKnownFileType = file; path = "remap.invalid-spirv-2.spv"; sourceTree = ""; }; + B398138C29239F3900A82429 /* spv.privateVariableTypes.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.privateVariableTypes.frag; sourceTree = ""; }; + B398138D29239F3900A82429 /* spv.stereoViewRendering.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.stereoViewRendering.tesc; sourceTree = ""; }; + B398138E29239F3900A82429 /* hlsl.inf.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.inf.vert; sourceTree = ""; }; + B398138F29239F3900A82429 /* hlsl.gather.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gather.basic.dx10.frag; sourceTree = ""; }; + B398139029239F3900A82429 /* hlsl.samplelevel.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplelevel.offset.dx10.frag; sourceTree = ""; }; + B398139129239F3900A82429 /* hlsl.samplelevel.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplelevel.basic.dx10.frag; sourceTree = ""; }; + B398139229239F3900A82429 /* flowControl.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = flowControl.frag; sourceTree = ""; }; + B398139329239F3900A82429 /* glspv.version.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glspv.version.frag; sourceTree = ""; }; + B398139429239F3900A82429 /* hlsl.rw.vec2.bracket.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.rw.vec2.bracket.frag; sourceTree = ""; }; + B398139529239F3900A82429 /* spv.drawParams.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.drawParams.vert; sourceTree = ""; }; + B398139629239F3900A82429 /* glsl.es320.subgroupShuffleRelative.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupShuffleRelative.comp; sourceTree = ""; }; + B398139729239F3900A82429 /* recurse2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = recurse2.frag; sourceTree = ""; }; + B398139829239F3900A82429 /* hlsl.gatherRGBA.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gatherRGBA.offset.dx10.frag; sourceTree = ""; }; + B398139929239F3900A82429 /* hlsl.samplecmp.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmp.array.dx10.frag; sourceTree = ""; }; + B398139A29239F3900A82429 /* spv.constConstruct.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.constConstruct.vert; sourceTree = ""; }; + B398139B29239F3900A82429 /* constFold.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = constFold.frag; sourceTree = ""; }; + B398139C29239F3900A82429 /* spv.dead-after-return.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.dead-after-return.vert"; sourceTree = ""; }; + B398139D29239F3900A82429 /* link.vk.differentPC.1.0.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.differentPC.1.0.frag; sourceTree = ""; }; + B398139E29239F3900A82429 /* spv.flowControl.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.flowControl.frag; sourceTree = ""; }; + B398139F29239F3900A82429 /* constFoldIntMin.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = constFoldIntMin.frag; sourceTree = ""; }; + B39813A029239F3900A82429 /* hlsl.wavevote.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavevote.comp; sourceTree = ""; }; + B39813A129239F3900A82429 /* spv.boolInBlock.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.boolInBlock.frag; sourceTree = ""; }; + B39813A229239F3900A82429 /* hlsl.multiReturn.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.multiReturn.frag; sourceTree = ""; }; + B39813A329239F3900A82429 /* spv.1.4.OpSelect.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.OpSelect.frag; sourceTree = ""; }; + B39813A429239F3900A82429 /* hlsl.targetStruct2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.targetStruct2.frag; sourceTree = ""; }; + B39813A529239F3900A82429 /* spv.subgroupVote.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupVote.comp; sourceTree = ""; }; + B39813A629239F3900A82429 /* hlsl.intrinsics.double.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.double.frag; sourceTree = ""; }; + B39813A729239F3900A82429 /* spv.specTexture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.specTexture.frag; sourceTree = ""; }; + B39813A829239F3900A82429 /* hlsl.pp.expand.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.pp.expand.frag; sourceTree = ""; }; + B39813A929239F3900A82429 /* hlsl.fraggeom.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.fraggeom.frag; sourceTree = ""; }; + B39813AA29239F3900A82429 /* spv.queryL.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.queryL.frag; sourceTree = ""; }; + B39813AB29239F3900A82429 /* spv.depthOut.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.depthOut.frag; sourceTree = ""; }; + B39813AC29239F3900A82429 /* hlsl.mip.negative2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.mip.negative2.frag; sourceTree = ""; }; + B39813AD29239F3900A82429 /* glsl.450.subgroupShuffleRelative.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupShuffleRelative.comp; sourceTree = ""; }; + B39813AE29239F3900A82429 /* spv.1.4.OpCopyLogical.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.OpCopyLogical.comp; sourceTree = ""; }; + B39813AF29239F3900A82429 /* hlsl.load.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.array.dx10.frag; sourceTree = ""; }; + B39813B029239F3900A82429 /* spv.bufferhandle6.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle6.frag; sourceTree = ""; }; + B39813B129239F3900A82429 /* spv.sparseTexture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.sparseTexture.frag; sourceTree = ""; }; + B39813B229239F3900A82429 /* hlsl.samplebias.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplebias.offset.dx10.frag; sourceTree = ""; }; + B39813B329239F3900A82429 /* 310.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.tese; sourceTree = ""; }; + B39813B429239F3900A82429 /* 330.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 330.frag; sourceTree = ""; }; + B39813B529239F3900A82429 /* spv.int64.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.int64.frag; sourceTree = ""; }; + B39813B629239F3900A82429 /* hlsl.gatherRGBA.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gatherRGBA.offsetarray.dx10.frag; sourceTree = ""; }; + B39813B729239F3900A82429 /* glsl.es320.subgroup.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroup.tese; sourceTree = ""; }; + B39813B829239F3900A82429 /* spv.unit2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.unit2.frag; sourceTree = ""; }; + B39813B929239F3900A82429 /* spv.coopmat_Error.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.coopmat_Error.comp; sourceTree = ""; }; + B39813BA29239F3900A82429 /* spv.meshShaderBuiltins.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderBuiltins.mesh; sourceTree = ""; }; + B39813BB29239F3900A82429 /* atomic_uint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = atomic_uint.frag; sourceTree = ""; }; + B39813BC29239F3900A82429 /* hlsl.clipdistance-3.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-3.geom"; sourceTree = ""; }; + B39813BD29239F3900A82429 /* always-discard2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "always-discard2.frag"; sourceTree = ""; }; + B39813BE29239F3900A82429 /* spv.shadingRate.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.shadingRate.frag; sourceTree = ""; }; + B39813BF29239F3900A82429 /* hlsl.global-const-init.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.global-const-init.frag"; sourceTree = ""; }; + B39813C029239F3900A82429 /* spv.vulkan110.int16.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.vulkan110.int16.frag; sourceTree = ""; }; + B39813C129239F3900A82429 /* 150.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = 150.tese; sourceTree = ""; }; + B39813C229239F3900A82429 /* spv.subgroupExtendedTypesBallotNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesBallotNeg.comp; sourceTree = ""; }; + B39813C329239F3A00A82429 /* spv.OVR_multiview.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.OVR_multiview.vert; sourceTree = ""; }; + B39813C429239F3A00A82429 /* hlsl.samplecmplevelzero.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmplevelzero.array.dx10.frag; sourceTree = ""; }; + B39813C529239F3A00A82429 /* hlsl.struct.split.call.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.struct.split.call.vert; sourceTree = ""; }; + B39813C629239F3A00A82429 /* spv.uint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.uint.frag; sourceTree = ""; }; + B39813C729239F3A00A82429 /* spv.ext.IntersectShader.rint */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.IntersectShader.rint; sourceTree = ""; }; + B39813C829239F3A00A82429 /* glspv.esversion.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glspv.esversion.vert; sourceTree = ""; }; + B39813C929239F3A00A82429 /* spv.AnyHitShader_Errors.rahit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.AnyHitShader_Errors.rahit; sourceTree = ""; }; + B39813CA29239F3A00A82429 /* web.basic.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.basic.vert; sourceTree = ""; }; + B39813CB29239F3A00A82429 /* spv.dead-after-switch-break.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.dead-after-switch-break.vert"; sourceTree = ""; }; + B39813CC29239F3A00A82429 /* spv.330.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.330.geom; sourceTree = ""; }; + B39813CD29239F3A00A82429 /* hlsl.struct.split.trivial.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.struct.split.trivial.geom; sourceTree = ""; }; + B39813CE29239F3A00A82429 /* hlsl.structbuffer.append.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.append.frag; sourceTree = ""; }; + B39813CF29239F3A00A82429 /* hlsl.semicolons.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.semicolons.frag; sourceTree = ""; }; + B39813D029239F3A00A82429 /* hlsl.structbuffer.atomics.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.atomics.frag; sourceTree = ""; }; + B39813D129239F3A00A82429 /* spv.130.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.130.frag; sourceTree = ""; }; + B39813D229239F3A00A82429 /* hlsl.params.default.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.params.default.frag; sourceTree = ""; }; + B39813D329239F3A00A82429 /* hlsl.max.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.max.frag; sourceTree = ""; }; + B39813D429239F3A00A82429 /* spv.1.4.OpCopyLogicalBool.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.OpCopyLogicalBool.comp; sourceTree = ""; }; + B39813D529239F3A00A82429 /* hlsl.string.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.string.frag; sourceTree = ""; }; + B39813D629239F3A00A82429 /* 440.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 440.vert; sourceTree = ""; }; + B39813D729239F3A00A82429 /* hlsl.cbuffer-identifier.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.cbuffer-identifier.vert"; sourceTree = ""; }; + B39813D829239F3A00A82429 /* spv.subgroupExtendedTypesClustered.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesClustered.comp; sourceTree = ""; }; + B39813D929239F3A00A82429 /* spv.layoutNested.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.layoutNested.vert; sourceTree = ""; }; + B39813DA29239F3A00A82429 /* spv.dataOutIndirect.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.dataOutIndirect.frag; sourceTree = ""; }; + B39813DB29239F3A00A82429 /* hlsl.gs-hs-mix.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.gs-hs-mix.tesc"; sourceTree = ""; }; + B39813DC29239F3A00A82429 /* remap.invalid-spirv-1.spv */ = {isa = PBXFileReference; lastKnownFileType = file; path = "remap.invalid-spirv-1.spv"; sourceTree = ""; }; + B39813DD29239F3A00A82429 /* spv.subgroupClusteredNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupClusteredNeg.comp; sourceTree = ""; }; + B39813DE29239F3A00A82429 /* spv.explicittypes.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.explicittypes.frag; sourceTree = ""; }; + B39813DF29239F3A00A82429 /* spv.bufferhandle13.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle13.frag; sourceTree = ""; }; + B39813E029239F3A00A82429 /* vulkan.ast.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vulkan.ast.vert; sourceTree = ""; }; + B39813E129239F3A00A82429 /* link3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link3.frag; sourceTree = ""; }; + B39813E229239F3A00A82429 /* hlsl.store.rwbyteaddressbuffer.type.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.store.rwbyteaddressbuffer.type.comp; sourceTree = ""; }; + B39813E329239F3A00A82429 /* spv.320.meshShaderUserDefined.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.320.meshShaderUserDefined.mesh; sourceTree = ""; }; + B39813E429239F3A00A82429 /* hlsl.boolConv.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.boolConv.vert; sourceTree = ""; }; + B39813E529239F3A00A82429 /* structure.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = structure.frag; sourceTree = ""; }; + B39813E629239F3A00A82429 /* hlsl.clipdistance-2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-2.frag"; sourceTree = ""; }; + B39813E729239F3A00A82429 /* hlsl.array.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.array.frag; sourceTree = ""; }; + B39813E829239F3A00A82429 /* web.operations.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.operations.frag; sourceTree = ""; }; + B39813E929239F3A00A82429 /* spv.pushConstantAnon.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.pushConstantAnon.vert; sourceTree = ""; }; + B39813EA29239F3A00A82429 /* spv.texture.sampler.transform.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.texture.sampler.transform.frag; sourceTree = ""; }; + B39813EB29239F3A00A82429 /* glsl.es320.subgroupBasic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupBasic.comp; sourceTree = ""; }; + B39813EC29239F3A00A82429 /* hlsl.semantic.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.semantic.vert; sourceTree = ""; }; + B39813ED29239F3A00A82429 /* spv.paramMemory.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.paramMemory.frag; sourceTree = ""; }; + B39813EE29239F3A00A82429 /* spv.bufferhandle18.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle18.frag; sourceTree = ""; }; + B39813EF29239F3A00A82429 /* hlsl.overload.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.overload.frag; sourceTree = ""; }; + B39813F029239F3A00A82429 /* hlsl.clipdistance-9.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-9.frag"; sourceTree = ""; }; + B39813F129239F3A00A82429 /* hlsl.emptystructreturn.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.emptystructreturn.frag; sourceTree = ""; }; + B39813F229239F3A00A82429 /* tokenPaste.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = tokenPaste.vert; sourceTree = ""; }; + B39813F329239F3A00A82429 /* hlsl.implicitBool.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.implicitBool.frag; sourceTree = ""; }; + B39813F429239F3A00A82429 /* spv.uniformArray.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.uniformArray.frag; sourceTree = ""; }; + B39813F529239F3A00A82429 /* hlsl.multiEntry.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.multiEntry.vert; sourceTree = ""; }; + B39813F629239F3A00A82429 /* spv.do-while-continue-break.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.do-while-continue-break.vert"; sourceTree = ""; }; + B39813F729239F3A00A82429 /* spv.while-continue-break.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.while-continue-break.vert"; sourceTree = ""; }; + B39813F829239F3A00A82429 /* web.runtests */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.runtests; sourceTree = ""; }; + B39813F929239F3A00A82429 /* rayQuery-initialize.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-initialize.rgen"; sourceTree = ""; }; + B39813FA29239F3A00A82429 /* spv.vecMatConstruct.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.vecMatConstruct.frag; sourceTree = ""; }; + B39813FB29239F3A00A82429 /* sample.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = sample.frag.out; sourceTree = ""; }; + B39813FC29239F3A00A82429 /* remap.hlsl.sample.basic.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.hlsl.sample.basic.none.frag; sourceTree = ""; }; + B39813FD29239F3A00A82429 /* spv.doWhileLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.doWhileLoop.frag; sourceTree = ""; }; + B39813FE29239F3A00A82429 /* conversion.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = conversion.frag; sourceTree = ""; }; + B39813FF29239F3A00A82429 /* hlsl.samplecmplevelzero.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmplevelzero.basic.dx10.frag; sourceTree = ""; }; + B398140029239F3A00A82429 /* spv.subgroupBasic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupBasic.comp; sourceTree = ""; }; + B398140129239F3A00A82429 /* precision.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = precision.frag; sourceTree = ""; }; + B398140229239F3A00A82429 /* hlsl.intrinsics.d3dcolortoubyte4.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.d3dcolortoubyte4.frag; sourceTree = ""; }; + B398140329239F3A00A82429 /* cppBad5.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppBad5.vert; sourceTree = ""; }; + B398140429239F3A00A82429 /* forwardRef.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = forwardRef.frag; sourceTree = ""; }; + B398140529239F3A00A82429 /* vulkan.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = vulkan.comp; sourceTree = ""; }; + B398140629239F3A00A82429 /* foo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = foo.h; sourceTree = ""; }; + B398140729239F3A00A82429 /* hlsl.struct.split.nested.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.struct.split.nested.geom; sourceTree = ""; }; + B398140829239F3A00A82429 /* spv.subgroupExtendedTypesShuffleNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffleNeg.comp; sourceTree = ""; }; + B398140929239F3A00A82429 /* hlsl.mintypes.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.mintypes.frag; sourceTree = ""; }; + B398140A29239F3A00A82429 /* link.multiAnonBlocksValid.0.0.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiAnonBlocksValid.0.0.vert; sourceTree = ""; }; + B398140B29239F3A00A82429 /* hlsl.nonint-index.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.nonint-index.frag"; sourceTree = ""; }; + B398140C29239F3A00A82429 /* link.multiAnonBlocksInvalid.0.0.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiAnonBlocksInvalid.0.0.vert; sourceTree = ""; }; + B398140D29239F3A00A82429 /* spv.subgroupQuad.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupQuad.comp; sourceTree = ""; }; + B398140E29239F3A00A82429 /* 100.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 100.frag; sourceTree = ""; }; + B398140F29239F3A00A82429 /* specExamples.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = specExamples.frag; sourceTree = ""; }; + B398141029239F3A00A82429 /* spv.register.noautoassign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.register.noautoassign.frag; sourceTree = ""; }; + B398141129239F3A00A82429 /* whileLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = whileLoop.frag; sourceTree = ""; }; + B398141229239F3A00A82429 /* hlsl.sample.offsetarray.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.sample.offsetarray.dx10.frag; sourceTree = ""; }; + B398141329239F3A00A82429 /* forLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = forLoop.frag; sourceTree = ""; }; + B398141429239F3A00A82429 /* hlsl.basic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.basic.comp; sourceTree = ""; }; + B398141529239F3A00A82429 /* spv.nonuniform2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.nonuniform2.frag; sourceTree = ""; }; + B398141629239F3A00A82429 /* remap.basic.strip.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.basic.strip.frag; sourceTree = ""; }; + B398141729239F3A00A82429 /* Operations.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = Operations.frag; sourceTree = ""; }; + B398141829239F3A00A82429 /* hlsl.wavequad.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavequad.comp; sourceTree = ""; }; + B398141929239F3A00A82429 /* mixedArrayDecls.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mixedArrayDecls.frag; sourceTree = ""; }; + B398141A29239F3A00A82429 /* spv.140.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.140.frag; sourceTree = ""; }; + B398141B29239F3A00A82429 /* hlsl.structarray.flatten.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structarray.flatten.geom; sourceTree = ""; }; + B398141C29239F3A00A82429 /* decls.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = decls.frag; sourceTree = ""; }; + B398141D29239F3A00A82429 /* remap.literal64.none.spv */ = {isa = PBXFileReference; lastKnownFileType = file; path = remap.literal64.none.spv; sourceTree = ""; }; + B398141E29239F3A00A82429 /* hlsl.matType.bool.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.matType.bool.frag; sourceTree = ""; }; + B398141F29239F3A00A82429 /* 430.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 430.vert; sourceTree = ""; }; + B398142029239F3A00A82429 /* spv.ext.RayGenShader11.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShader11.rgen; sourceTree = ""; }; + B398142129239F3A00A82429 /* spv.xfbOffsetOnStructMembersAssignment.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.xfbOffsetOnStructMembersAssignment.vert; sourceTree = ""; }; + B398142229239F3A00A82429 /* hlsl.attributeC11.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.attributeC11.frag; sourceTree = ""; }; + B398142329239F3A00A82429 /* preprocessor.edge_cases.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.edge_cases.vert; sourceTree = ""; }; + B398142429239F3A00A82429 /* spv.arbPostDepthCoverage_Error.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.arbPostDepthCoverage_Error.frag; sourceTree = ""; }; + B398142529239F3A00A82429 /* hlsl.load.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.basic.dx10.frag; sourceTree = ""; }; + B398142629239F3A00A82429 /* hlsl.templatetypes.negative.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.templatetypes.negative.frag; sourceTree = ""; }; + B398142729239F3A00A82429 /* hlsl.clip.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.clip.frag; sourceTree = ""; }; + B398142829239F3A00A82429 /* spv.float64.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.float64.frag; sourceTree = ""; }; + B398142929239F3A00A82429 /* hlsl.flattenOpaqueInitMix.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.flattenOpaqueInitMix.vert; sourceTree = ""; }; + B398142A29239F3A00A82429 /* hlsl.gather.offset.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gather.offset.dx10.frag; sourceTree = ""; }; + B398142B29239F3A00A82429 /* link2.vk.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link2.vk.frag; sourceTree = ""; }; + B398142C29239F3A00A82429 /* hlsl.intrinsics.f3216.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.f3216.frag; sourceTree = ""; }; + B398142D29239F3A00A82429 /* earlyReturnDiscard.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = earlyReturnDiscard.frag; sourceTree = ""; }; + B398142E29239F3A00A82429 /* spv.looseUniformNoLoc.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.looseUniformNoLoc.vert; sourceTree = ""; }; + B398142F29239F3A00A82429 /* hlsl.clipdistance-5.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-5.frag"; sourceTree = ""; }; + B398143029239F3A00A82429 /* spv.sparseTextureClamp.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.sparseTextureClamp.frag; sourceTree = ""; }; + B398143129239F3A00A82429 /* hlsl.sin.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.sin.frag; sourceTree = ""; }; + B398143229239F3A00A82429 /* spv.bufferhandle14.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle14.frag; sourceTree = ""; }; + B398143329239F3A00A82429 /* remap.literal64.everything.spv */ = {isa = PBXFileReference; lastKnownFileType = file; path = remap.literal64.everything.spv; sourceTree = ""; }; + B398143429239F3A00A82429 /* 410.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 410.vert; sourceTree = ""; }; + B398143529239F3A00A82429 /* spv.specConst.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.specConst.vert; sourceTree = ""; }; + B398143629239F3A00A82429 /* glsl.460.subgroup.rcall */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rcall; sourceTree = ""; }; + B398143729239F3A00A82429 /* hlsl.samplecmp.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmp.basic.dx10.frag; sourceTree = ""; }; + B398143829239F3A00A82429 /* spv.for-nobody.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.for-nobody.vert"; sourceTree = ""; }; + B398143929239F3A00A82429 /* cppComplexExpr.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppComplexExpr.vert; sourceTree = ""; }; + B398143A29239F3A00A82429 /* preprocessor.include.disabled.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.include.disabled.vert; sourceTree = ""; }; + B398143B29239F3A00A82429 /* compoundsuffix.vert.glsl */ = {isa = PBXFileReference; lastKnownFileType = text; path = compoundsuffix.vert.glsl; sourceTree = ""; }; + B398143C29239F3A00A82429 /* hlsl.samplelevel.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplelevel.array.dx10.frag; sourceTree = ""; }; + B398143D29239F3A00A82429 /* hlsl.pp.line2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.pp.line2.frag; sourceTree = ""; }; + B398143E29239F3A00A82429 /* hlsl.gather.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gather.array.dx10.frag; sourceTree = ""; }; + B398143F29239F3A00A82429 /* 320.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 320.geom; sourceTree = ""; }; + B398144029239F3A00A82429 /* texture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = texture.frag; sourceTree = ""; }; + B398144129239F3A00A82429 /* spv.fragmentShaderBarycentric.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.fragmentShaderBarycentric.frag; sourceTree = ""; }; + B398144229239F3A00A82429 /* hlsl.load.rwtexture.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.load.rwtexture.dx10.frag; sourceTree = ""; }; + B398144329239F3A00A82429 /* hlsl.rw.atomics.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.rw.atomics.frag; sourceTree = ""; }; + B398144429239F3A00A82429 /* hlsl.synthesizeInput.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.synthesizeInput.frag; sourceTree = ""; }; + B398144529239F3A00A82429 /* hlsl.waveprefix.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.waveprefix.comp; sourceTree = ""; }; + B398144629239F3A00A82429 /* spv.image.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.image.frag; sourceTree = ""; }; + B398144729239F3A00A82429 /* structAssignment.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = structAssignment.frag; sourceTree = ""; }; + B398144829239F3A00A82429 /* spv.xfb.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.xfb.vert; sourceTree = ""; }; + B398144929239F3A00A82429 /* 120.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 120.frag; sourceTree = ""; }; + B398144A29239F3A00A82429 /* spv.bufferhandle19_Errors.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle19_Errors.frag; sourceTree = ""; }; + B398144B29239F3A00A82429 /* hlsl.samplebias.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplebias.basic.dx10.frag; sourceTree = ""; }; + B398144C29239F3A00A82429 /* simpleFunctionCall.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = simpleFunctionCall.frag; sourceTree = ""; }; + B398144D29239F3A00A82429 /* hlsl.clipdistance-4.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-4.geom"; sourceTree = ""; }; + B398144E29239F3A00A82429 /* hlsl.dashI.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.dashI.vert; sourceTree = ""; }; + B398144F29239F3A00A82429 /* hlsl.function.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.function.frag; sourceTree = ""; }; + B398145029239F3A00A82429 /* cppBad.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppBad.vert; sourceTree = ""; }; + B398145129239F3A00A82429 /* web.separate.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = web.separate.frag; sourceTree = ""; }; + B398145229239F3A00A82429 /* noMain1.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = noMain1.geom; sourceTree = ""; }; + B398145329239F3A00A82429 /* hlsl.array.flatten.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.array.flatten.frag; sourceTree = ""; }; + B398145429239F3A00A82429 /* tokenLength.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = tokenLength.vert; sourceTree = ""; }; + B398145529239F3A00A82429 /* doWhileLoop.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = doWhileLoop.frag; sourceTree = ""; }; + B398145629239F3A00A82429 /* spv.ext.AnyHitShader_Errors.rahit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.AnyHitShader_Errors.rahit; sourceTree = ""; }; + B398145729239F3A00A82429 /* spv.bufferhandle1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle1.frag; sourceTree = ""; }; + B398145829239F3A00A82429 /* matrixError.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = matrixError.vert; sourceTree = ""; }; + B398145929239F3A00A82429 /* rayQuery-allOps.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-allOps.rgen"; sourceTree = ""; }; + B398145A29239F3A00A82429 /* hlsl.type.half.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.type.half.frag; sourceTree = ""; }; + B398145B29239F3A00A82429 /* spv.subgroup.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.subgroup.geom; sourceTree = ""; }; + B398145C29239F3A00A82429 /* 300block.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300block.frag; sourceTree = ""; }; + B398145D29239F3A00A82429 /* glspv.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glspv.frag; sourceTree = ""; }; + B398145E29239F3A00A82429 /* spv.AnyHitShader.rahit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.AnyHitShader.rahit; sourceTree = ""; }; + B398145F29239F3A00A82429 /* hlsl.intrinsics.negative.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.negative.frag; sourceTree = ""; }; + B398146029239F3A00A82429 /* hlsl.gatherRGBA.basic.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.gatherRGBA.basic.dx10.frag; sourceTree = ""; }; + B398146129239F3A00A82429 /* glsl.460.subgroup.rmiss */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rmiss; sourceTree = ""; }; + B398146229239F3A00A82429 /* spv.ssbo.autoassign.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.ssbo.autoassign.frag; sourceTree = ""; }; + B398146329239F3A00A82429 /* validate-shaders.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "validate-shaders.sh"; sourceTree = ""; }; + B398146429239F3A00A82429 /* preprocessor.bad_arg.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.bad_arg.vert; sourceTree = ""; }; + B398146529239F3A00A82429 /* hlsl.intrinsics.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.frag; sourceTree = ""; }; + B398146629239F3A00A82429 /* spv.RayGenShader.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShader.rgen; sourceTree = ""; }; + B398146729239F3A00A82429 /* spv.300layout.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.300layout.vert; sourceTree = ""; }; + B398146829239F3A00A82429 /* spv.while-simple.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.while-simple.vert"; sourceTree = ""; }; + B398146929239F3A00A82429 /* cppRelaxSkipTokensErrors.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppRelaxSkipTokensErrors.vert; sourceTree = ""; }; + B398146A29239F3A00A82429 /* spv.16bitstorage_Error-int.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.16bitstorage_Error-int.frag"; sourceTree = ""; }; + B398146B29239F3A00A82429 /* hlsl.conditional.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.conditional.frag; sourceTree = ""; }; + B398146C29239F3A00A82429 /* hlsl.float1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.float1.frag; sourceTree = ""; }; + B398146D29239F3A00A82429 /* spv.MissShader_Errors.rmiss */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.MissShader_Errors.rmiss; sourceTree = ""; }; + B398146E29239F3A00A82429 /* hlsl.sample.dx9.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.sample.dx9.frag; sourceTree = ""; }; + B398146F29239F3A00A82429 /* hlsl.multiDescriptorSet.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.multiDescriptorSet.frag; sourceTree = ""; }; + B398147029239F3A00A82429 /* hlsl.structbuffer.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.frag; sourceTree = ""; }; + B398147229239F3A00A82429 /* hlsl.flattenSubset2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenSubset2.frag.out; sourceTree = ""; }; + B398147329239F3A00A82429 /* hlsl.flattenOpaque.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenOpaque.frag.out; sourceTree = ""; }; + B398147429239F3A00A82429 /* hlsl.flattenOpaqueInit.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenOpaqueInit.vert.out; sourceTree = ""; }; + B398147529239F3A00A82429 /* hlsl.partialFlattenLocal.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.partialFlattenLocal.vert.out; sourceTree = ""; }; + B398147629239F3A00A82429 /* hlsl.aliasOpaque.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.aliasOpaque.frag.out; sourceTree = ""; }; + B398147729239F3A00A82429 /* hlsl.partialFlattenMixed.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.partialFlattenMixed.vert.out; sourceTree = ""; }; + B398147829239F3A00A82429 /* hlsl.flattenSubset.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenSubset.frag.out; sourceTree = ""; }; + B398147929239F3A00A82429 /* hlsl.flattenOpaqueInitMix.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenOpaqueInitMix.vert.out; sourceTree = ""; }; + B398147A29239F3A00A82429 /* spv.float16Fetch.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.float16Fetch.frag; sourceTree = ""; }; + B398147B29239F3A00A82429 /* missingBodies.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = missingBodies.vert; sourceTree = ""; }; + B398147C29239F3A00A82429 /* mains1.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mains1.frag; sourceTree = ""; }; + B398147D29239F3A00A82429 /* 320.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 320.frag; sourceTree = ""; }; + B398147E29239F3A00A82429 /* hlsl.type.type.conversion.all.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.type.type.conversion.all.frag; sourceTree = ""; }; + B398147F29239F3A00A82429 /* spv.dead-after-continue.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.dead-after-continue.vert"; sourceTree = ""; }; + B398148029239F3A00A82429 /* hlsl.struct.split.array.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.struct.split.array.geom; sourceTree = ""; }; + B398148129239F3A00A82429 /* spv.volatileAtomic.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.volatileAtomic.comp; sourceTree = ""; }; + B398148229239F3A00A82429 /* glsl.-D-U.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "glsl.-D-U.frag"; sourceTree = ""; }; + B398148329239F3A00A82429 /* link.vk.differentPC.0.2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.vk.differentPC.0.2.frag; sourceTree = ""; }; + B398148429239F3A00A82429 /* hlsl.pp.tokenpasting.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.pp.tokenpasting.frag; sourceTree = ""; }; + B398148529239F3A00A82429 /* hlsl.typeGraphCopy.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.typeGraphCopy.vert; sourceTree = ""; }; + B398148629239F3A00A82429 /* spv.sampleId.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.sampleId.frag; sourceTree = ""; }; + B398148729239F3A00A82429 /* invalidSwizzle.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = invalidSwizzle.vert; sourceTree = ""; }; + B398148829239F3A00A82429 /* spv.subgroup.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroup.tesc; sourceTree = ""; }; + B398148929239F3A00A82429 /* spv.1.4.LoopControl.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.LoopControl.frag; sourceTree = ""; }; + B398148A29239F3A00A82429 /* mains.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = mains.frag; sourceTree = ""; }; + B398148B29239F3A00A82429 /* hlsl.getdimensions.dx10.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.getdimensions.dx10.vert; sourceTree = ""; }; + B398148C29239F3A00A82429 /* spv.ssboAlias.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.ssboAlias.frag; sourceTree = ""; }; + B398148D29239F3A00A82429 /* spv.ext.AnyHitShader.rahit */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.AnyHitShader.rahit; sourceTree = ""; }; + B398148E29239F3A00A82429 /* recurse1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = recurse1.vert; sourceTree = ""; }; + B398148F29239F3A00A82429 /* remap.hlsl.templatetypes.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.hlsl.templatetypes.everything.frag; sourceTree = ""; }; + B398149029239F3A00A82429 /* hlsl.identifier.sample.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.identifier.sample.frag; sourceTree = ""; }; + B398149129239F3A00A82429 /* bump */ = {isa = PBXFileReference; lastKnownFileType = text; path = bump; sourceTree = ""; }; + B398149229239F3A00A82429 /* hlsl.init2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.init2.frag; sourceTree = ""; }; + B398149329239F3A00A82429 /* spv.subgroupExtendedTypesPartitioned.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesPartitioned.comp; sourceTree = ""; }; + B398149429239F3A00A82429 /* spv.multiStructFuncall.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.multiStructFuncall.frag; sourceTree = ""; }; + B398149529239F3A00A82429 /* spv.8bitstorage_Error-uint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.8bitstorage_Error-uint.frag"; sourceTree = ""; }; + B398149629239F3A00A82429 /* spv.subgroupExtendedTypesShuffleRelativeNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffleRelativeNeg.comp; sourceTree = ""; }; + B398149829239F3A00A82429 /* hlsl.matNx1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.matNx1.frag.out; sourceTree = ""; }; + B398149929239F3A00A82429 /* hlsl.precise.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.precise.frag.out; sourceTree = ""; }; + B398149A29239F3A00A82429 /* spv.ext.ClosestHitShader.rchit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.ClosestHitShader.rchit.out; sourceTree = ""; }; + B398149B29239F3A00A82429 /* precise.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = precise.tesc.out; sourceTree = ""; }; + B398149C29239F3A00A82429 /* spv.400.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.400.tese.out; sourceTree = ""; }; + B398149D29239F3A00A82429 /* hlsl.inoutquals.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.inoutquals.frag.out; sourceTree = ""; }; + B398149E29239F3A00A82429 /* spv.storageBuffer.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.storageBuffer.vert.out; sourceTree = ""; }; + B398149F29239F3A00A82429 /* spv.int16.amd.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.int16.amd.frag.out; sourceTree = ""; }; + B39814A029239F3A00A82429 /* spv.subgroupExtendedTypesClustered.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesClustered.comp.out; sourceTree = ""; }; + B39814A129239F3A00A82429 /* varyingArrayIndirect.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = varyingArrayIndirect.frag.out; sourceTree = ""; }; + B39814A229239F3A00A82429 /* spv.bufferhandle17_Errors.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle17_Errors.frag.out; sourceTree = ""; }; + B39814A329239F3A00A82429 /* hlsl.logical.binary.vec.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.logical.binary.vec.frag.out; sourceTree = ""; }; + B39814A429239F3A00A82429 /* spv.forwardFun.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.forwardFun.frag.out; sourceTree = ""; }; + B39814A529239F3A00A82429 /* spv.merge-unreachable.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.merge-unreachable.frag.out"; sourceTree = ""; }; + B39814A629239F3A00A82429 /* spv.conversion.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.conversion.frag.out; sourceTree = ""; }; + B39814A729239F3A00A82429 /* remap.hlsl.sample.basic.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.hlsl.sample.basic.everything.frag.out; sourceTree = ""; }; + B39814A829239F3A00A82429 /* preprocessor.success_if_parse_would_fail.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.success_if_parse_would_fail.vert.err; sourceTree = ""; }; + B39814A929239F3A00A82429 /* spv.16bitstorage_Error-uint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.16bitstorage_Error-uint.frag.out"; sourceTree = ""; }; + B39814AA29239F3A00A82429 /* spv.460.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.460.vert.out; sourceTree = ""; }; + B39814AB29239F3A00A82429 /* spv.bufferhandle7.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle7.frag.out; sourceTree = ""; }; + B39814AC29239F3A00A82429 /* hlsl.load.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.offsetarray.dx10.frag.out; sourceTree = ""; }; + B39814AD29239F3A00A82429 /* spv.bufferhandle6.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle6.frag.out; sourceTree = ""; }; + B39814AE29239F3A00A82429 /* hlsl.doLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.doLoop.frag.out; sourceTree = ""; }; + B39814AF29239F3A00A82429 /* spv.1.3.8bitstorage-ubo.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.1.3.8bitstorage-ubo.vert.out"; sourceTree = ""; }; + B39814B029239F3A00A82429 /* spv.1.4.OpCopyLogicalBool.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.OpCopyLogicalBool.comp.out; sourceTree = ""; }; + B39814B129239F3A00A82429 /* hlsl.max.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.max.frag.out; sourceTree = ""; }; + B39814B229239F3A00A82429 /* rayQuery-allOps.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-allOps.frag.out"; sourceTree = ""; }; + B39814B329239F3A00A82429 /* spv.computeShaderDerivatives2.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.computeShaderDerivatives2.comp.out; sourceTree = ""; }; + B39814B429239F3A00A82429 /* spv.ext.RayGenShader.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShader.rgen.out; sourceTree = ""; }; + B39814B529239F3A00A82429 /* preprocessor.cpp_style___FILE__.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "preprocessor.cpp_style___FILE__.vert.out"; sourceTree = ""; }; + B39814B629239F3A00A82429 /* hlsl.partialInit.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.partialInit.frag.out; sourceTree = ""; }; + B39814B729239F3A00A82429 /* preprocessor.function_macro.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.function_macro.vert.err; sourceTree = ""; }; + B39814B829239F3A00A82429 /* spv.subgroupShuffleRelative.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupShuffleRelative.comp.out; sourceTree = ""; }; + B39814B929239F3A00A82429 /* remap.specconst.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.specconst.comp.out; sourceTree = ""; }; + B39814BA29239F3A00A82429 /* hlsl.samplelevel.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplelevel.array.dx10.frag.out; sourceTree = ""; }; + B39814BB29239F3A00A82429 /* precision.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = precision.frag.out; sourceTree = ""; }; + B39814BC29239F3A00A82429 /* 300.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300.vert.out; sourceTree = ""; }; + B39814BD29239F3A00A82429 /* hlsl.intrinsics.lit.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.lit.frag.out; sourceTree = ""; }; + B39814BE29239F3A00A82429 /* cppBad.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppBad.vert.out; sourceTree = ""; }; + B39814BF29239F3A00A82429 /* hlsl.buffer.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.buffer.frag.out; sourceTree = ""; }; + B39814C029239F3A00A82429 /* preprocessor.pragma.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.pragma.vert.out; sourceTree = ""; }; + B39814C129239F3A00A82429 /* spv.meshShaderTaskMem.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderTaskMem.mesh.out; sourceTree = ""; }; + B39814C229239F3A00A82429 /* implicitInnerAtomicUint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = implicitInnerAtomicUint.frag.out; sourceTree = ""; }; + B39814C329239F3A00A82429 /* hlsl.params.default.negative.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.params.default.negative.frag.out; sourceTree = ""; }; + B39814C429239F3A00A82429 /* hlsl.flattenSubset2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenSubset2.frag.out; sourceTree = ""; }; + B39814C529239F3A00A82429 /* 420.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.frag.out; sourceTree = ""; }; + B39814C629239F3A00A82429 /* spv.glsl.register.autoassign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.glsl.register.autoassign.frag.out; sourceTree = ""; }; + B39814C729239F3A00A82429 /* link.vk.matchingPC.0.0.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.vk.matchingPC.0.0.frag.out; sourceTree = ""; }; + B39814C829239F3A00A82429 /* spv.310.bitcast.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.310.bitcast.frag.out; sourceTree = ""; }; + B39814C929239F3A00A82429 /* spv.330.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.330.geom.out; sourceTree = ""; }; + B39814CA29239F3A00A82429 /* hlsl.load.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.basic.dx10.frag.out; sourceTree = ""; }; + B39814CB29239F3A00A82429 /* hlsl.clipdistance-1.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-1.vert.out"; sourceTree = ""; }; + B39814CC29239F3A00A82429 /* preprocessor.cpp_style_line_directive.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.cpp_style_line_directive.vert.out; sourceTree = ""; }; + B39814CD29239F3A00A82429 /* remap.switch.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.switch.everything.frag.out; sourceTree = ""; }; + B39814CE29239F3A00A82429 /* spv.subpass.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subpass.frag.out; sourceTree = ""; }; + B39814CF29239F3A00A82429 /* spv.glFragColor.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.glFragColor.frag.out; sourceTree = ""; }; + B39814D029239F3A00A82429 /* hlsl.rw.swizzle.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.rw.swizzle.frag.out; sourceTree = ""; }; + B39814D129239F3A00A82429 /* 450.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.geom.out; sourceTree = ""; }; + B39814D229239F3A00A82429 /* glspv.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glspv.frag.out; sourceTree = ""; }; + B39814D329239F3A00A82429 /* hlsl.dashI.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.dashI.vert.out; sourceTree = ""; }; + B39814D429239F3A00A82429 /* hlsl.semantic.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.semantic.geom.out; sourceTree = ""; }; + B39814D529239F3A00A82429 /* spv.450.noRedecl.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.450.noRedecl.tesc.out; sourceTree = ""; }; + B39814D629239F3A00A82429 /* remap.similar_1b.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.similar_1b.none.frag.out; sourceTree = ""; }; + B39814D729239F3A00A82429 /* spv.noLocation.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.noLocation.vert.out; sourceTree = ""; }; + B39814D829239F3A00A82429 /* spv.1.3.8bitstorage-ssbo.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.1.3.8bitstorage-ssbo.vert.out"; sourceTree = ""; }; + B39814D929239F3A00A82429 /* spv.bufferhandle12.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle12.frag.out; sourceTree = ""; }; + B39814DA29239F3A00A82429 /* spv.bufferhandle13.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle13.frag.out; sourceTree = ""; }; + B39814DB29239F3A00A82429 /* spv.stereoViewRendering.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.stereoViewRendering.tesc.out; sourceTree = ""; }; + B39814DC29239F3A00A82429 /* hlsl.-D-U.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.-D-U.frag.out"; sourceTree = ""; }; + B39814DD29239F3A00A82429 /* glsl.460.subgroup.rahit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rahit.out; sourceTree = ""; }; + B39814DE29239F3A00A82429 /* link.vk.differentPC.1.0.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.vk.differentPC.1.0.frag.out; sourceTree = ""; }; + B39814DF29239F3A00A82429 /* hlsl.init.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.init.frag.out; sourceTree = ""; }; + B39814E029239F3A00A82429 /* hlsl.samplecmp.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmp.array.dx10.frag.out; sourceTree = ""; }; + B39814E129239F3A00A82429 /* spv.sampleMaskOverrideCoverage.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.sampleMaskOverrideCoverage.frag.out; sourceTree = ""; }; + B39814E229239F3A00A82429 /* spv.shiftOps.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shiftOps.frag.out; sourceTree = ""; }; + B39814E329239F3A00A82429 /* hlsl.hull.ctrlpt-2.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.hull.ctrlpt-2.tesc.out"; sourceTree = ""; }; + B39814E429239F3A00A82429 /* spv.set.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.set.vert.out; sourceTree = ""; }; + B39814E529239F3A00A82429 /* spv.image.load-formatted.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.image.load-formatted.frag.out"; sourceTree = ""; }; + B39814E629239F3A00A82429 /* spv.atomicInt64.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.atomicInt64.comp.out; sourceTree = ""; }; + B39814E729239F3A00A82429 /* 140.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 140.frag.out; sourceTree = ""; }; + B39814E829239F3A00A82429 /* hlsl.gs-hs-mix.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.gs-hs-mix.tesc.out"; sourceTree = ""; }; + B39814E929239F3A00A82429 /* spv.shortCircuit.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shortCircuit.frag.out; sourceTree = ""; }; + B39814EA29239F3A00A82429 /* spv.bufferhandle18.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle18.frag.out; sourceTree = ""; }; + B39814EB29239F3A00A82429 /* hlsl.gather.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gather.array.dx10.frag.out; sourceTree = ""; }; + B39814EC29239F3A00A82429 /* link1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link1.frag.out; sourceTree = ""; }; + B39814ED29239F3A00A82429 /* versionsErrors.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = versionsErrors.vert.out; sourceTree = ""; }; + B39814EE29239F3A00A82429 /* spv.stereoViewRendering.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.stereoViewRendering.vert.out; sourceTree = ""; }; + B39814EF29239F3A00A82429 /* preprocessor.edge_cases.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.edge_cases.vert.err; sourceTree = ""; }; + B39814F029239F3A00A82429 /* hlsl.intrinsics.promote.down.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.promote.down.frag.out; sourceTree = ""; }; + B39814F129239F3A00A82429 /* hlsl.singleArgIntPromo.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.singleArgIntPromo.vert.out; sourceTree = ""; }; + B39814F229239F3A00A82429 /* spv.branch-return.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.branch-return.vert.out"; sourceTree = ""; }; + B39814F329239F3A00A82429 /* types.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = types.frag.out; sourceTree = ""; }; + B39814F429239F3A00A82429 /* cppPassMacroName.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppPassMacroName.frag.out; sourceTree = ""; }; + B39814F529239F3A00A82429 /* spv.subgroupExtendedTypesClusteredNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesClusteredNeg.comp.out; sourceTree = ""; }; + B39814F629239F3A00A82429 /* test.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = test.conf; sourceTree = ""; }; + B39814F729239F3A00A82429 /* web.controlFlow.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.controlFlow.frag.out; sourceTree = ""; }; + B39814F829239F3A00A82429 /* hlsl.constructArray.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.constructArray.vert.out; sourceTree = ""; }; + B39814F929239F3A00A82429 /* spv.nonuniform2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.nonuniform2.frag.out; sourceTree = ""; }; + B39814FA29239F3A00A82429 /* spv.nonuniform3.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.nonuniform3.frag.out; sourceTree = ""; }; + B39814FB29239F3A00A82429 /* hlsl.structbuffer.append.fn.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.append.fn.frag.out; sourceTree = ""; }; + B39814FC29239F3B00A82429 /* spv.specConstantComposite.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specConstantComposite.vert.out; sourceTree = ""; }; + B39814FD29239F3B00A82429 /* hlsl.samplegrad.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplegrad.basic.dx10.frag.out; sourceTree = ""; }; + B39814FE29239F3B00A82429 /* spv.8bitstorage-ssbo.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.8bitstorage-ssbo.vert.out"; sourceTree = ""; }; + B39814FF29239F3B00A82429 /* hlsl.targetStruct1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.targetStruct1.frag.out; sourceTree = ""; }; + B398150029239F3B00A82429 /* vulkan.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = vulkan.vert.out; sourceTree = ""; }; + B398150129239F3B00A82429 /* spv.precise.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.precise.tesc.out; sourceTree = ""; }; + B398150229239F3B00A82429 /* spv.430.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.430.frag.out; sourceTree = ""; }; + B398150329239F3B00A82429 /* hlsl.attributeGlobalBuffer.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.attributeGlobalBuffer.frag.out; sourceTree = ""; }; + B398150429239F3B00A82429 /* spv.subgroup.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroup.geom.out; sourceTree = ""; }; + B398150529239F3B00A82429 /* link.vk.multiBlocksValid.1.0.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.vk.multiBlocksValid.1.0.geom.out; sourceTree = ""; }; + B398150629239F3B00A82429 /* conversion.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = conversion.frag.out; sourceTree = ""; }; + B398150729239F3B00A82429 /* 320.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.geom.out; sourceTree = ""; }; + B398150829239F3B00A82429 /* spv.constructComposite.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.constructComposite.comp.out; sourceTree = ""; }; + B398150929239F3B00A82429 /* spv.400.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.400.tesc.out; sourceTree = ""; }; + B398150A29239F3B00A82429 /* spv.bitCast.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bitCast.frag.out; sourceTree = ""; }; + B398150B29239F3B00A82429 /* hlsl.attribute.expression.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.attribute.expression.comp.out; sourceTree = ""; }; + B398150C29239F3B00A82429 /* spv.unit1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.unit1.frag.out; sourceTree = ""; }; + B398150D29239F3B00A82429 /* spv.noBuiltInLoc.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.noBuiltInLoc.vert.out; sourceTree = ""; }; + B398150E29239F3B00A82429 /* glsl.es320.subgroupVote.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupVote.comp.out; sourceTree = ""; }; + B398150F29239F3B00A82429 /* spv.register.subpass.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.register.subpass.frag.out; sourceTree = ""; }; + B398151029239F3B00A82429 /* hlsl.hull.3.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.3.tesc.out; sourceTree = ""; }; + B398151129239F3B00A82429 /* spv.accessChain.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.accessChain.frag.out; sourceTree = ""; }; + B398151229239F3B00A82429 /* hlsl.hull.2.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.2.tesc.out; sourceTree = ""; }; + B398151329239F3B00A82429 /* web.separate.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.separate.frag.out; sourceTree = ""; }; + B398151429239F3B00A82429 /* hlsl.samplebias.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplebias.offsetarray.dx10.frag.out; sourceTree = ""; }; + B398151529239F3B00A82429 /* 440.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 440.frag.out; sourceTree = ""; }; + B398151629239F3B00A82429 /* hlsl.clipdistance-4.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-4.frag.out"; sourceTree = ""; }; + B398151729239F3B00A82429 /* hlsl.matType.int.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.matType.int.frag.out; sourceTree = ""; }; + B398151829239F3B00A82429 /* hlsl.conditional.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.conditional.frag.out; sourceTree = ""; }; + B398151929239F3B00A82429 /* hlsl.clipdistance-5.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-5.frag.out"; sourceTree = ""; }; + B398151A29239F3B00A82429 /* hlsl.structIoFourWay.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structIoFourWay.frag.out; sourceTree = ""; }; + B398151B29239F3B00A82429 /* swizzle.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = swizzle.frag.out; sourceTree = ""; }; + B398151C29239F3B00A82429 /* hlsl.samplebias.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplebias.array.dx10.frag.out; sourceTree = ""; }; + B398151D29239F3B00A82429 /* link.multiAnonBlocksValid.0.0.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.multiAnonBlocksValid.0.0.vert.out; sourceTree = ""; }; + B398151E29239F3B00A82429 /* spv.memoryScopeSemantics_Error.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.memoryScopeSemantics_Error.comp.out; sourceTree = ""; }; + B398151F29239F3B00A82429 /* hlsl.intrinsics.promote.outputs.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.promote.outputs.frag.out; sourceTree = ""; }; + B398152029239F3B00A82429 /* preprocessor.line.frag.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.line.frag.err; sourceTree = ""; }; + B398152129239F3B00A82429 /* spv.xfbOffsetOnBlockMembersAssignment.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.xfbOffsetOnBlockMembersAssignment.vert.out; sourceTree = ""; }; + B398152229239F3B00A82429 /* conditionalDiscard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = conditionalDiscard.frag.out; sourceTree = ""; }; + B398152329239F3B00A82429 /* spv.16bitstorage_Error.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.16bitstorage_Error.frag.out; sourceTree = ""; }; + B398152429239F3B00A82429 /* preprocessor.eof_missing.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.eof_missing.vert.out; sourceTree = ""; }; + B398152529239F3B00A82429 /* hlsl.shapeConvRet.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.shapeConvRet.frag.out; sourceTree = ""; }; + B398152629239F3B00A82429 /* preprocessor.bad_arg.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.bad_arg.vert.err; sourceTree = ""; }; + B398152729239F3B00A82429 /* vulkan.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = vulkan.comp.out; sourceTree = ""; }; + B398152829239F3B00A82429 /* spv.texture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.texture.frag.out; sourceTree = ""; }; + B398152929239F3B00A82429 /* spv.ext.RayGenShaderArray.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShaderArray.rgen.out; sourceTree = ""; }; + B398152A29239F3B00A82429 /* glsl.460.subgroup.rchit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rchit.out; sourceTree = ""; }; + B398152B29239F3B00A82429 /* hlsl.gather.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gather.offset.dx10.frag.out; sourceTree = ""; }; + B398152C29239F3B00A82429 /* spv.16bitxfb.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.16bitxfb.vert.out; sourceTree = ""; }; + B398152D29239F3B00A82429 /* spv.310.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.310.comp.out; sourceTree = ""; }; + B398152E29239F3B00A82429 /* spv.1.3.coopmat.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.3.coopmat.comp.out; sourceTree = ""; }; + B398152F29239F3B00A82429 /* spv.functionSemantics.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.functionSemantics.frag.out; sourceTree = ""; }; + B398153029239F3B00A82429 /* spv.int16.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.int16.frag.out; sourceTree = ""; }; + B398153129239F3B00A82429 /* preprocessor.errors.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.errors.vert.out; sourceTree = ""; }; + B398153229239F3B00A82429 /* structAssignment.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = structAssignment.frag.out; sourceTree = ""; }; + B398153329239F3B00A82429 /* 300scope.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300scope.vert.out; sourceTree = ""; }; + B398153429239F3B00A82429 /* 100samplerExternal.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 100samplerExternal.frag.out; sourceTree = ""; }; + B398153529239F3B00A82429 /* spv.shaderBallotAMD.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderBallotAMD.comp.out; sourceTree = ""; }; + B398153629239F3B00A82429 /* hlsl.structbuffer.rwbyte.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.rwbyte.frag.out; sourceTree = ""; }; + B398153729239F3B00A82429 /* spv.AnyHitShader_Errors.rahit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.AnyHitShader_Errors.rahit.out; sourceTree = ""; }; + B398153829239F3B00A82429 /* spv.arbPostDepthCoverage_Error.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.arbPostDepthCoverage_Error.frag.out; sourceTree = ""; }; + B398153929239F3B00A82429 /* aggOps.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = aggOps.frag.out; sourceTree = ""; }; + B398153A29239F3B00A82429 /* nonuniform.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = nonuniform.frag.out; sourceTree = ""; }; + B398153B29239F3B00A82429 /* hlsl.precedence2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.precedence2.frag.out; sourceTree = ""; }; + B398153C29239F3B00A82429 /* negativeArraySize.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = negativeArraySize.comp.out; sourceTree = ""; }; + B398153D29239F3B00A82429 /* spv.Operations.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.Operations.frag.out; sourceTree = ""; }; + B398153E29239F3B00A82429 /* hlsl.clipdistance-2.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-2.geom.out"; sourceTree = ""; }; + B398153F29239F3B00A82429 /* remap.hlsl.sample.basic.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.hlsl.sample.basic.none.frag.out; sourceTree = ""; }; + B398154029239F3B00A82429 /* spv.meshShaderPerViewUserDefined.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderPerViewUserDefined.mesh.out; sourceTree = ""; }; + B398154129239F3B00A82429 /* web.operations.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.operations.frag.out; sourceTree = ""; }; + B398154229239F3B00A82429 /* hlsl.clipdistance-3.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-3.geom.out"; sourceTree = ""; }; + B398154329239F3B00A82429 /* link.vk.multiBlocksValid.0.0.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.vk.multiBlocksValid.0.0.vert.out; sourceTree = ""; }; + B398154429239F3B00A82429 /* spv.130.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.130.frag.out; sourceTree = ""; }; + B398154529239F3B00A82429 /* spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out; sourceTree = ""; }; + B398154629239F3B00A82429 /* matrix.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix.frag.out; sourceTree = ""; }; + B398154729239F3B00A82429 /* spv.coopmat.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.coopmat.comp.out; sourceTree = ""; }; + B398154829239F3B00A82429 /* spv.xfbStrideJustOnce.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.xfbStrideJustOnce.vert.out; sourceTree = ""; }; + B398154929239F3B00A82429 /* hlsl.matrixSwizzle.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.matrixSwizzle.vert.out; sourceTree = ""; }; + B398154A29239F3B00A82429 /* glsl.es320.subgroupClusteredNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupClusteredNeg.comp.out; sourceTree = ""; }; + B398154B29239F3B00A82429 /* spv.1.4.LoopControl.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.LoopControl.frag.out; sourceTree = ""; }; + B398154C29239F3B00A82429 /* spv.matrix2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.matrix2.frag.out; sourceTree = ""; }; + B398154D29239F3B00A82429 /* hlsl.templatetypes.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.templatetypes.frag.out; sourceTree = ""; }; + B398154E29239F3B00A82429 /* spv.vulkan100.subgroupPartitioned.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.vulkan100.subgroupPartitioned.comp.out; sourceTree = ""; }; + B398154F29239F3B00A82429 /* remap.literal64.everything.spv.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.literal64.everything.spv.out; sourceTree = ""; }; + B398155029239F3B00A82429 /* spv.1.4.image.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.image.frag.out; sourceTree = ""; }; + B398155129239F3B00A82429 /* spv.300layout.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.300layout.vert.out; sourceTree = ""; }; + B398155229239F3B00A82429 /* hlsl.mip.operator.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.mip.operator.frag.out; sourceTree = ""; }; + B398155329239F3B00A82429 /* spv.earlyReturnDiscard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.earlyReturnDiscard.frag.out; sourceTree = ""; }; + B398155429239F3B00A82429 /* preprocessor.many.endif.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.many.endif.vert.err; sourceTree = ""; }; + B398155529239F3B00A82429 /* hlsl.structbuffer.atomics.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.atomics.frag.out; sourceTree = ""; }; + B398155629239F3B00A82429 /* spv.420.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.420.geom.out; sourceTree = ""; }; + B398155729239F3B00A82429 /* spv.discard-dce.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.discard-dce.frag.out"; sourceTree = ""; }; + B398155829239F3B00A82429 /* hlsl.samplegrad.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplegrad.offsetarray.dx10.frag.out; sourceTree = ""; }; + B398155929239F3B00A82429 /* spv.float64.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float64.frag.out; sourceTree = ""; }; + B398155A29239F3B00A82429 /* versionsClean.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = versionsClean.vert.out; sourceTree = ""; }; + B398155B29239F3B00A82429 /* rayQuery.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = rayQuery.rgen.out; sourceTree = ""; }; + B398155C29239F3B00A82429 /* 330.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 330.frag.out; sourceTree = ""; }; + B398155D29239F3B00A82429 /* hlsl.layout.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.layout.frag.out; sourceTree = ""; }; + B398155E29239F3B00A82429 /* hlsl.hlslOffset.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hlslOffset.vert.out; sourceTree = ""; }; + B398155F29239F3B00A82429 /* forwardRef.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = forwardRef.frag.out; sourceTree = ""; }; + B398156029239F3B00A82429 /* glsl.es320.subgroup.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroup.frag.out; sourceTree = ""; }; + B398156129239F3B00A82429 /* spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out; sourceTree = ""; }; + B398156229239F3B00A82429 /* spv.extPostDepthCoverage_Error.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.extPostDepthCoverage_Error.frag.out; sourceTree = ""; }; + B398156329239F3B00A82429 /* spv.register.noautoassign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.register.noautoassign.frag.out; sourceTree = ""; }; + B398156429239F3B00A82429 /* hlsl.matType.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.matType.frag.out; sourceTree = ""; }; + B398156529239F3B00A82429 /* lineContinuation.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = lineContinuation.vert.out; sourceTree = ""; }; + B398156629239F3B00A82429 /* glsl.es320.subgroupClustered.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupClustered.comp.out; sourceTree = ""; }; + B398156729239F3B00A82429 /* matrix2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix2.frag.out; sourceTree = ""; }; + B398156829239F3B00A82429 /* preprocessor.defined.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.defined.vert.err; sourceTree = ""; }; + B398156929239F3B00A82429 /* hlsl.comparison.vec.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.comparison.vec.frag.out; sourceTree = ""; }; + B398156A29239F3B00A82429 /* spv.dataOutIndirect.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.dataOutIndirect.vert.out; sourceTree = ""; }; + B398156B29239F3B00A82429 /* hlsl.reflection.binding.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.reflection.binding.frag.out; sourceTree = ""; }; + B398156C29239F3B00A82429 /* spv.pp.line.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.pp.line.frag.out; sourceTree = ""; }; + B398156D29239F3B00A82429 /* spv.nonuniform.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.nonuniform.frag.out; sourceTree = ""; }; + B398156E29239F3B00A82429 /* 410.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 410.tesc.out; sourceTree = ""; }; + B398156F29239F3B00A82429 /* Operations.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = Operations.frag.out; sourceTree = ""; }; + B398157029239F3B00A82429 /* spv.float16convertonlystorage.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float16convertonlystorage.comp.out; sourceTree = ""; }; + B398157129239F3B00A82429 /* spv.for-notest.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.for-notest.vert.out"; sourceTree = ""; }; + B398157229239F3B00A82429 /* spv.fsi_Error.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.fsi_Error.frag.out; sourceTree = ""; }; + B398157329239F3B00A82429 /* spv.multiviewPerViewAttributes.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.multiviewPerViewAttributes.vert.out; sourceTree = ""; }; + B398157429239F3B00A82429 /* spv.8bitstorage_Error-int.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.8bitstorage_Error-int.frag.out"; sourceTree = ""; }; + B398157529239F3B00A82429 /* hlsl.texture.subvec4.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.texture.subvec4.frag.out; sourceTree = ""; }; + B398157629239F3B00A82429 /* preprocessor.extensions.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.extensions.vert.err; sourceTree = ""; }; + B398157729239F3B00A82429 /* texture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = texture.frag.out; sourceTree = ""; }; + B398157829239F3B00A82429 /* hlsl.store.rwbyteaddressbuffer.type.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.store.rwbyteaddressbuffer.type.comp.out; sourceTree = ""; }; + B398157929239F3B00A82429 /* spv.barrier.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.barrier.vert.out; sourceTree = ""; }; + B398157A29239F3B00A82429 /* hlsl.global-const-init.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.global-const-init.frag.out"; sourceTree = ""; }; + B398157B29239F3B00A82429 /* spv.subgroupClustered.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupClustered.comp.out; sourceTree = ""; }; + B398157C29239F3B00A82429 /* spv.ext.AnyHitShader.rahit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.AnyHitShader.rahit.out; sourceTree = ""; }; + B398157D29239F3B00A82429 /* 150.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 150.geom.out; sourceTree = ""; }; + B398157E29239F3B00A82429 /* sample.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = sample.vert.out; sourceTree = ""; }; + B398157F29239F3B00A82429 /* remap.basic.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.basic.everything.frag.out; sourceTree = ""; }; + B398158029239F3B00A82429 /* spv.multiView.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.multiView.frag.out; sourceTree = ""; }; + B398158129239F3B00A82429 /* hlsl.boolConv.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.boolConv.vert.out; sourceTree = ""; }; + B398158229239F3B00A82429 /* spv.swizzle.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.swizzle.frag.out; sourceTree = ""; }; + B398158329239F3B00A82429 /* spv.subgroupExtendedTypesArithmeticNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesArithmeticNeg.comp.out; sourceTree = ""; }; + B398158429239F3B00A82429 /* spv.460.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.460.comp.out; sourceTree = ""; }; + B398158529239F3B00A82429 /* hlsl.intrinsics.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.frag.out; sourceTree = ""; }; + B398158629239F3B00A82429 /* spv.memoryScopeSemantics.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.memoryScopeSemantics.comp.out; sourceTree = ""; }; + B398158729239F3B00A82429 /* glspv.version.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glspv.version.frag.out; sourceTree = ""; }; + B398158829239F3B00A82429 /* web.texture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.texture.frag.out; sourceTree = ""; }; + B398158929239F3B00A82429 /* structure.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = structure.frag.out; sourceTree = ""; }; + B398158A29239F3B00A82429 /* spv.controlFlowAttributes.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.controlFlowAttributes.frag.out; sourceTree = ""; }; + B398158B29239F3B00A82429 /* spv.1.4.OpCopyLogical.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.OpCopyLogical.comp.out; sourceTree = ""; }; + B398158C29239F3B00A82429 /* 120.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 120.frag.out; sourceTree = ""; }; + B398158D29239F3B00A82429 /* glsl.-D-U.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "glsl.-D-U.frag.out"; sourceTree = ""; }; + B398158E29239F3B00A82429 /* spv.precise.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.precise.tese.out; sourceTree = ""; }; + B398158F29239F3B00A82429 /* spv.shaderBallot.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderBallot.comp.out; sourceTree = ""; }; + B398159029239F3B00A82429 /* remap.similar_1a.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.similar_1a.none.frag.out; sourceTree = ""; }; + B398159129239F3B00A82429 /* spv.multiviewPerViewAttributes.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.multiviewPerViewAttributes.tesc.out; sourceTree = ""; }; + B398159229239F3B00A82429 /* hlsl.depthLess.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.depthLess.frag.out; sourceTree = ""; }; + B398159329239F3B00A82429 /* hlsl.samplebias.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplebias.offset.dx10.frag.out; sourceTree = ""; }; + B398159429239F3B00A82429 /* spv.textureGatherBiasLod.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.textureGatherBiasLod.frag.out; sourceTree = ""; }; + B398159529239F3B00A82429 /* localAggregates.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = localAggregates.frag.out; sourceTree = ""; }; + B398159629239F3B00A82429 /* glsl.450.subgroup.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroup.geom.out; sourceTree = ""; }; + B398159729239F3B00A82429 /* hlsl.init2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.init2.frag.out; sourceTree = ""; }; + B398159829239F3B00A82429 /* invalidSwizzle.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = invalidSwizzle.vert.out; sourceTree = ""; }; + B398159929239F3B00A82429 /* 410.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 410.vert.out; sourceTree = ""; }; + B398159A29239F3B00A82429 /* constantUnaryConversion.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = constantUnaryConversion.comp.out; sourceTree = ""; }; + B398159B29239F3B00A82429 /* spv.300layoutp.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.300layoutp.vert.out; sourceTree = ""; }; + B398159C29239F3B00A82429 /* spv.voidFunction.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.voidFunction.frag.out; sourceTree = ""; }; + B398159D29239F3B00A82429 /* hlsl.clipdistance-3.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-3.frag.out"; sourceTree = ""; }; + B398159E29239F3B00A82429 /* hlsl.clipdistance-2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-2.frag.out"; sourceTree = ""; }; + B398159F29239F3B00A82429 /* preprocessor.defined.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.defined.vert.out; sourceTree = ""; }; + B39815A029239F3B00A82429 /* constErrors.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = constErrors.frag.out; sourceTree = ""; }; + B39815A129239F3B00A82429 /* spv.do-while-continue-break.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.do-while-continue-break.vert.out"; sourceTree = ""; }; + B39815A229239F3B00A82429 /* hlsl.void.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.void.frag.out; sourceTree = ""; }; + B39815A329239F3B00A82429 /* spv.fragmentDensity.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.fragmentDensity.vert.out; sourceTree = ""; }; + B39815A429239F3B00A82429 /* 300layout.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300layout.vert.out; sourceTree = ""; }; + B39815A529239F3B00A82429 /* spv.separate.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.separate.frag.out; sourceTree = ""; }; + B39815A629239F3B00A82429 /* 330comp.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 330comp.frag.out; sourceTree = ""; }; + B39815A729239F3B00A82429 /* 310.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.vert.out; sourceTree = ""; }; + B39815A829239F3B00A82429 /* spv.ext.AnyHitShader_Errors.rahit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.AnyHitShader_Errors.rahit.out; sourceTree = ""; }; + B39815A929239F3B00A82429 /* web.builtins.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.builtins.vert.out; sourceTree = ""; }; + B39815AA29239F3B00A82429 /* hlsl.hull.4.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.4.tesc.out; sourceTree = ""; }; + B39815AB29239F3B00A82429 /* hlsl.hull.5.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.5.tesc.out; sourceTree = ""; }; + B39815AC29239F3B00A82429 /* hlsl.overload.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.overload.frag.out; sourceTree = ""; }; + B39815AD29239F3B00A82429 /* spv.meshShaderPerViewBuiltins.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderPerViewBuiltins.mesh.out; sourceTree = ""; }; + B39815AE29239F3B00A82429 /* hlsl.samplebias.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplebias.basic.dx10.frag.out; sourceTree = ""; }; + B39815AF29239F3B00A82429 /* hlsl.logicalConvert.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.logicalConvert.frag.out; sourceTree = ""; }; + B39815B029239F3B00A82429 /* spv.140.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.140.frag.out; sourceTree = ""; }; + B39815B129239F3B00A82429 /* cppMerge.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppMerge.frag.out; sourceTree = ""; }; + B39815B229239F3B00A82429 /* hlsl.typeGraphCopy.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.typeGraphCopy.vert.out; sourceTree = ""; }; + B39815B329239F3B00A82429 /* spv.subgroupShuffle.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupShuffle.comp.out; sourceTree = ""; }; + B39815B429239F3B00A82429 /* spv.sparseTextureClamp.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.sparseTextureClamp.frag.out; sourceTree = ""; }; + B39815B529239F3B00A82429 /* spv.scalarlayoutfloat16.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.scalarlayoutfloat16.frag.out; sourceTree = ""; }; + B39815B629239F3B00A82429 /* glsl.es320.subgroupQuad.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupQuad.comp.out; sourceTree = ""; }; + B39815B729239F3B00A82429 /* hlsl.amend.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.amend.frag.out; sourceTree = ""; }; + B39815B829239F3B00A82429 /* hlsl.coverage.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.coverage.frag.out; sourceTree = ""; }; + B39815B929239F3B00A82429 /* spv.forLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.forLoop.frag.out; sourceTree = ""; }; + B39815BA29239F3B00A82429 /* spv.layoutNested.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.layoutNested.vert.out; sourceTree = ""; }; + B39815BB29239F3B00A82429 /* hlsl.clipdistance-4.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-4.geom.out"; sourceTree = ""; }; + B39815BC29239F3B00A82429 /* spv.loops.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.loops.frag.out; sourceTree = ""; }; + B39815BD29239F3B00A82429 /* hlsl.emptystructreturn.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.emptystructreturn.vert.out; sourceTree = ""; }; + B39815BE29239F3B00A82429 /* hlsl.pp.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.pp.vert.out; sourceTree = ""; }; + B39815BF29239F3B00A82429 /* 310runtimeArray.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310runtimeArray.vert.out; sourceTree = ""; }; + B39815C029239F3B00A82429 /* spv.swizzleInversion.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.swizzleInversion.frag.out; sourceTree = ""; }; + B39815C129239F3B00A82429 /* hlsl.texture.struct.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.texture.struct.frag.out; sourceTree = ""; }; + B39815C229239F3B00A82429 /* rayQuery-no-cse.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-no-cse.rgen.out"; sourceTree = ""; }; + B39815C329239F3B00A82429 /* samplerlessTextureFunctions.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = samplerlessTextureFunctions.frag.out; sourceTree = ""; }; + B39815C429239F3B00A82429 /* spv.register.autoassign.rangetest.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.register.autoassign.rangetest.frag.out; sourceTree = ""; }; + B39815C529239F3B00A82429 /* hlsl.scalarCast.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.scalarCast.vert.out; sourceTree = ""; }; + B39815C629239F3B00A82429 /* 310.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.tesc.out; sourceTree = ""; }; + B39815C729239F3B00A82429 /* glsl.entryPointRename.vert.bad.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.entryPointRename.vert.bad.out; sourceTree = ""; }; + B39815C829239F3B00A82429 /* spv.aggOps.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.aggOps.frag.out; sourceTree = ""; }; + B39815C929239F3B00A82429 /* spv.matrix.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.matrix.frag.out; sourceTree = ""; }; + B39815CA29239F3B00A82429 /* spv.xfbOffsetOnStructMembersAssignment.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.xfbOffsetOnStructMembersAssignment.vert.out; sourceTree = ""; }; + B39815CB29239F3B00A82429 /* preprocessor.extensions.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.extensions.vert.out; sourceTree = ""; }; + B39815CC29239F3B00A82429 /* hlsl.basic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.basic.comp.out; sourceTree = ""; }; + B39815CD29239F3B00A82429 /* decls.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = decls.frag.out; sourceTree = ""; }; + B39815CE29239F3B00A82429 /* hlsl.struct.split-1.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.struct.split-1.vert.out"; sourceTree = ""; }; + B39815CF29239F3B00A82429 /* glsl.es320.subgroupArithmetic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupArithmetic.comp.out; sourceTree = ""; }; + B39815D029239F3B00A82429 /* preprocessor.eof_missing.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.eof_missing.vert.err; sourceTree = ""; }; + B39815D129239F3B00A82429 /* cppIntMinOverNegativeOne.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppIntMinOverNegativeOne.frag.out; sourceTree = ""; }; + B39815D229239F3B00A82429 /* spv.double.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.double.comp.out; sourceTree = ""; }; + B39815D329239F3B00A82429 /* hlsl.load.rwbuffer.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.rwbuffer.dx10.frag.out; sourceTree = ""; }; + B39815D429239F3B00A82429 /* preprocessor.line.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.line.frag.out; sourceTree = ""; }; + B39815D529239F3B00A82429 /* spv.structure.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.structure.frag.out; sourceTree = ""; }; + B39815D629239F3B00A82429 /* 430AofA.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 430AofA.frag.out; sourceTree = ""; }; + B39815D729239F3B00A82429 /* spv.interpOps.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.interpOps.frag.out; sourceTree = ""; }; + B39815D829239F3B00A82429 /* hlsl.samplecmp.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmp.offset.dx10.frag.out; sourceTree = ""; }; + B39815D929239F3B00A82429 /* 460.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 460.vert.out; sourceTree = ""; }; + B39815DA29239F3B00A82429 /* glsl.entryPointRename2.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.entryPointRename2.vert.out; sourceTree = ""; }; + B39815DB29239F3B00A82429 /* hlsl.intrinsics.barriers.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.barriers.comp.out; sourceTree = ""; }; + B39815DC29239F3B00A82429 /* always-discard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "always-discard.frag.out"; sourceTree = ""; }; + B39815DD29239F3B00A82429 /* hlsl.type.type.conversion.all.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.type.type.conversion.all.frag.out; sourceTree = ""; }; + B39815DE29239F3B00A82429 /* 400.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 400.tese.out; sourceTree = ""; }; + B39815DF29239F3B00A82429 /* hlsl.intrinsics.f1632.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.f1632.frag.out; sourceTree = ""; }; + B39815E029239F3B00A82429 /* preprocessor.bad_arg.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.bad_arg.vert.out; sourceTree = ""; }; + B39815E129239F3B00A82429 /* 150.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 150.frag.out; sourceTree = ""; }; + B39815E229239F3B00A82429 /* spv.dead-after-continue.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.dead-after-continue.vert.out"; sourceTree = ""; }; + B39815E329239F3B00A82429 /* spv.IntersectShader.rint.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.IntersectShader.rint.out; sourceTree = ""; }; + B39815E429239F3B00A82429 /* spv.AnyHitShader.rahit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.AnyHitShader.rahit.out; sourceTree = ""; }; + B39815E529239F3B00A82429 /* hlsl.int.dot.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.int.dot.frag.out; sourceTree = ""; }; + B39815E629239F3B00A82429 /* hlsl.snorm.uav.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.snorm.uav.comp.out; sourceTree = ""; }; + B39815E729239F3B00A82429 /* glsl.450.subgroup.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroup.frag.out; sourceTree = ""; }; + B39815E829239F3B00A82429 /* hlsl.struct.split.nested.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.struct.split.nested.geom.out; sourceTree = ""; }; + B39815E929239F3B00A82429 /* loopsArtificial.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = loopsArtificial.frag.out; sourceTree = ""; }; + B39815EA29239F3B00A82429 /* hlsl.wavequery.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavequery.frag.out; sourceTree = ""; }; + B39815EB29239F3B00A82429 /* spv.shadingRate.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shadingRate.frag.out; sourceTree = ""; }; + B39815EC29239F3B00A82429 /* forLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = forLoop.frag.out; sourceTree = ""; }; + B39815ED29239F3B00A82429 /* hlsl.clipdistance-9.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-9.frag.out"; sourceTree = ""; }; + B39815EE29239F3B00A82429 /* hlsl.clipdistance-8.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-8.frag.out"; sourceTree = ""; }; + B39815EF29239F3B00A82429 /* hlsl.sample.sub-vec4.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.sample.sub-vec4.dx10.frag.out"; sourceTree = ""; }; + B39815F029239F3B00A82429 /* hlsl.staticFuncInit.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.staticFuncInit.frag.out; sourceTree = ""; }; + B39815F129239F3B00A82429 /* spv.float16convertonlyarith.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float16convertonlyarith.comp.out; sourceTree = ""; }; + B39815F229239F3B00A82429 /* spv.multiStructFuncall.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.multiStructFuncall.frag.out; sourceTree = ""; }; + B39815F329239F3B00A82429 /* spv.ext.IntersectShader_Errors.rint.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.IntersectShader_Errors.rint.out; sourceTree = ""; }; + B39815F429239F3B00A82429 /* spv.paramMemory.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.paramMemory.frag.out; sourceTree = ""; }; + B39815F529239F3B00A82429 /* spv.xfb3.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.xfb3.vert.out; sourceTree = ""; }; + B39815F629239F3B00A82429 /* spv.xfb2.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.xfb2.vert.out; sourceTree = ""; }; + B39815F729239F3B00A82429 /* always-discard2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "always-discard2.frag.out"; sourceTree = ""; }; + B39815F829239F3B00A82429 /* glsl.es320.subgroup.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroup.geom.out; sourceTree = ""; }; + B39815F929239F3B00A82429 /* hlsl.getdimensions.dx10.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.getdimensions.dx10.vert.out; sourceTree = ""; }; + B39815FA29239F3B00A82429 /* hlsl.gather.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gather.offsetarray.dx10.frag.out; sourceTree = ""; }; + B39815FB29239F3B00A82429 /* reflection.linked.options.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = reflection.linked.options.out; sourceTree = ""; }; + B39815FC29239F3B00A82429 /* remap.basic.strip.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.basic.strip.frag.out; sourceTree = ""; }; + B39815FD29239F3B00A82429 /* spv.ext.IntersectShader.rint.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.IntersectShader.rint.out; sourceTree = ""; }; + B39815FE29239F3B00A82429 /* preprocessor.many.endif.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.many.endif.vert.out; sourceTree = ""; }; + B39815FF29239F3B00A82429 /* 430scope.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 430scope.vert.out; sourceTree = ""; }; + B398160029239F3B00A82429 /* hlsl.localStructuredBuffer.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.localStructuredBuffer.comp.out; sourceTree = ""; }; + B398160129239F3B00A82429 /* spv.bufferhandle_Error.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle_Error.frag.out; sourceTree = ""; }; + B398160229239F3B00A82429 /* hlsl.matType.bool.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.matType.bool.frag.out; sourceTree = ""; }; + B398160329239F3B00A82429 /* spv.subgroupArithmetic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupArithmetic.comp.out; sourceTree = ""; }; + B398160429239F3B00A82429 /* spv.ext.RayGenShader11.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShader11.rgen.out; sourceTree = ""; }; + B398160529239F3B00A82429 /* preprocessor.errors.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.errors.vert.err; sourceTree = ""; }; + B398160629239F3B00A82429 /* max_vertices_0.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = max_vertices_0.geom.out; sourceTree = ""; }; + B398160729239F3B00A82429 /* constFoldIntMin.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = constFoldIntMin.frag.out; sourceTree = ""; }; + B398160829239F3B00A82429 /* spv.fragmentShaderBarycentric2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.fragmentShaderBarycentric2.frag.out; sourceTree = ""; }; + B398160929239F3B00A82429 /* spv.MissShader.rmiss.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.MissShader.rmiss.out; sourceTree = ""; }; + B398160A29239F3B00A82429 /* spv.450.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.450.geom.out; sourceTree = ""; }; + B398160B29239F3B00A82429 /* 300BuiltIns.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300BuiltIns.frag.out; sourceTree = ""; }; + B398160C29239F3B00A82429 /* hlsl.discard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.discard.frag.out; sourceTree = ""; }; + B398160D29239F3B00A82429 /* array.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = array.frag.out; sourceTree = ""; }; + B398160E29239F3B00A82429 /* hlsl.gathercmpRGBA.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gathercmpRGBA.offset.dx10.frag.out; sourceTree = ""; }; + B398160F29239F3B00A82429 /* spv.do-simple.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.do-simple.vert.out"; sourceTree = ""; }; + B398161029239F3B00A82429 /* hlsl.intrinsics.f3216.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.f3216.frag.out; sourceTree = ""; }; + B398161129239F3B00A82429 /* spv.functionCall.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.functionCall.frag.out; sourceTree = ""; }; + B398161229239F3B00A82429 /* hlsl.flattenOpaque.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenOpaque.frag.out; sourceTree = ""; }; + B398161329239F3B00A82429 /* hlsl.mip.negative.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.mip.negative.frag.out; sourceTree = ""; }; + B398161429239F3B00A82429 /* spv.dead-after-discard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.dead-after-discard.frag.out"; sourceTree = ""; }; + B398161529239F3B00A82429 /* varyingArray.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = varyingArray.frag.out; sourceTree = ""; }; + B398161629239F3B00A82429 /* 100Limits.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 100Limits.vert.out; sourceTree = ""; }; + B398161729239F3B00A82429 /* 300link2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300link2.frag.out; sourceTree = ""; }; + B398161829239F3B00A82429 /* 300link3.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300link3.frag.out; sourceTree = ""; }; + B398161929239F3B00A82429 /* hlsl.sin.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.sin.frag.out; sourceTree = ""; }; + B398161A29239F3B00A82429 /* hlsl.samplecmp.dualmode.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmp.dualmode.frag.out; sourceTree = ""; }; + B398161B29239F3B00A82429 /* hlsl.samplecmplevelzero.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmplevelzero.offset.dx10.frag.out; sourceTree = ""; }; + B398161C29239F3B00A82429 /* spv.fsi.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.fsi.frag.out; sourceTree = ""; }; + B398161D29239F3B00A82429 /* 420.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.geom.out; sourceTree = ""; }; + B398161E29239F3B00A82429 /* hlsl.wavereduction.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavereduction.comp.out; sourceTree = ""; }; + B398161F29239F3B00A82429 /* spv.smBuiltins.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.smBuiltins.frag.out; sourceTree = ""; }; + B398162029239F3B00A82429 /* spv.pushConstant.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.pushConstant.vert.out; sourceTree = ""; }; + B398162129239F3B00A82429 /* specExamples.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = specExamples.frag.out; sourceTree = ""; }; + B398162229239F3B00A82429 /* hlsl.float1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.float1.frag.out; sourceTree = ""; }; + B398162329239F3B00A82429 /* hlsl.entry.rename.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.entry.rename.frag.out; sourceTree = ""; }; + B398162429239F3B00A82429 /* comment.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = comment.frag.out; sourceTree = ""; }; + B398162529239F3B00A82429 /* hlsl.domain.2.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.domain.2.tese.out; sourceTree = ""; }; + B398162629239F3B00A82429 /* hlsl.domain.3.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.domain.3.tese.out; sourceTree = ""; }; + B398162729239F3B00A82429 /* hlsl.mip.negative2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.mip.negative2.frag.out; sourceTree = ""; }; + B398162829239F3B00A82429 /* badMacroArgs.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = badMacroArgs.frag.out; sourceTree = ""; }; + B398162929239F3B00A82429 /* web.array.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.array.frag.out; sourceTree = ""; }; + B398162A29239F3B00A82429 /* hlsl.getdimensions.rw.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.getdimensions.rw.dx10.frag.out; sourceTree = ""; }; + B398162B29239F3B00A82429 /* spv.register.autoassign-2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.register.autoassign-2.frag.out"; sourceTree = ""; }; + B398162C29239F3B00A82429 /* 310AofA.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310AofA.vert.out; sourceTree = ""; }; + B398162D29239F3B00A82429 /* 435.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 435.vert.out; sourceTree = ""; }; + B398162E29239F3B00A82429 /* hlsl.sample.dx9.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.sample.dx9.vert.out; sourceTree = ""; }; + B398162F29239F3B00A82429 /* hlsl.intrinsics.negative.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.negative.frag.out; sourceTree = ""; }; + B398163029239F3B00A82429 /* hlsl.this.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.this.frag.out; sourceTree = ""; }; + B398163129239F3B00A82429 /* hlsl.samplelevel.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplelevel.basic.dx10.frag.out; sourceTree = ""; }; + B398163229239F3B00A82429 /* 450.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.frag.out; sourceTree = ""; }; + B398163329239F3B00A82429 /* spv.bufferhandle1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle1.frag.out; sourceTree = ""; }; + B398163429239F3B00A82429 /* spv.ssbo.autoassign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ssbo.autoassign.frag.out; sourceTree = ""; }; + B398163529239F3B00A82429 /* spv.IntersectShader_Errors.rint.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.IntersectShader_Errors.rint.out; sourceTree = ""; }; + B398163629239F3B00A82429 /* spv.ext.RayCallable.rcall.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayCallable.rcall.out; sourceTree = ""; }; + B398163729239F3B00A82429 /* hlsl.clipdistance-6.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-6.vert.out"; sourceTree = ""; }; + B398163829239F3B00A82429 /* spv.meshShaderRedeclPerViewBuiltins.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderRedeclPerViewBuiltins.mesh.out; sourceTree = ""; }; + B398163929239F3B00A82429 /* spv.subgroupPartitioned.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupPartitioned.comp.out; sourceTree = ""; }; + B398163A29239F3B00A82429 /* hlsl.clipdistance-7.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-7.vert.out"; sourceTree = ""; }; + B398163B29239F3B00A82429 /* glsl.460.subgroup.task.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.task.out; sourceTree = ""; }; + B398163C29239F3B00A82429 /* newTexture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = newTexture.frag.out; sourceTree = ""; }; + B398163D29239F3B00A82429 /* depthOut.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = depthOut.frag.out; sourceTree = ""; }; + B398163E29239F3B00A82429 /* hlsl.load.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.offset.dx10.frag.out; sourceTree = ""; }; + B398163F29239F3B00A82429 /* hlsl.y-negate-2.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.y-negate-2.vert.out"; sourceTree = ""; }; + B398164029239F3B00A82429 /* hlsl.y-negate-3.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.y-negate-3.vert.out"; sourceTree = ""; }; + B398164129239F3B00A82429 /* spv.explicittypes.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.explicittypes.frag.out; sourceTree = ""; }; + B398164229239F3B00A82429 /* glsl.450.subgroupClustered.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupClustered.comp.out; sourceTree = ""; }; + B398164329239F3B00A82429 /* spv.precision.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.precision.frag.out; sourceTree = ""; }; + B398164429239F3B00A82429 /* hlsl.gatherRGBA.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gatherRGBA.offset.dx10.frag.out; sourceTree = ""; }; + B398164529239F3B00A82429 /* hlsl.load.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.array.dx10.frag.out; sourceTree = ""; }; + B398164629239F3B00A82429 /* dataOutIndirect.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = dataOutIndirect.frag.out; sourceTree = ""; }; + B398164729239F3B00A82429 /* 310.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.tese.out; sourceTree = ""; }; + B398164829239F3B00A82429 /* hlsl.imagefetch-subvec4.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.imagefetch-subvec4.comp.out"; sourceTree = ""; }; + B398164929239F3B00A82429 /* glsl.450.subgroupShuffle.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupShuffle.comp.out; sourceTree = ""; }; + B398164A29239F3B00A82429 /* 300samplerExternal.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300samplerExternal.frag.out; sourceTree = ""; }; + B398164B29239F3B00A82429 /* spv.150.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.150.geom.out; sourceTree = ""; }; + B398164C29239F3B00A82429 /* link1.vk.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link1.vk.frag.out; sourceTree = ""; }; + B398164D29239F3B00A82429 /* hlsl.flattenOpaqueInit.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenOpaqueInit.vert.out; sourceTree = ""; }; + B398164E29239F3B00A82429 /* spv.conditionalDemote.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.conditionalDemote.frag.out; sourceTree = ""; }; + B398164F29239F3B00A82429 /* spv.specTexture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specTexture.frag.out; sourceTree = ""; }; + B398165029239F3B00A82429 /* hlsl.struct.split.trivial.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.struct.split.trivial.geom.out; sourceTree = ""; }; + B398165129239F3B00A82429 /* spv.bufferhandle15.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle15.frag.out; sourceTree = ""; }; + B398165229239F3B00A82429 /* hlsl.structbuffer.fn.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.fn.frag.out; sourceTree = ""; }; + B398165329239F3B00A82429 /* spv.bufferhandle14.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle14.frag.out; sourceTree = ""; }; + B398165429239F3B00A82429 /* spv.subgroupExtendedTypesBasic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesBasic.comp.out; sourceTree = ""; }; + B398165529239F3B00A82429 /* reflection.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = reflection.frag.out; sourceTree = ""; }; + B398165629239F3B00A82429 /* spv.ext.ClosestHitShader_Errors.rchit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.ClosestHitShader_Errors.rchit.out; sourceTree = ""; }; + B398165729239F3B00A82429 /* nonVulkan.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = nonVulkan.frag.out; sourceTree = ""; }; + B398165829239F3B00A82429 /* hlsl.samplelevel.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplelevel.offsetarray.dx10.frag.out; sourceTree = ""; }; + B398165929239F3B00A82429 /* hlsl.namespace.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.namespace.frag.out; sourceTree = ""; }; + B398165A29239F3B00A82429 /* preprocessor.edge_cases.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.edge_cases.vert.out; sourceTree = ""; }; + B398165B29239F3B00A82429 /* numeral.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = numeral.frag.out; sourceTree = ""; }; + B398165C29239F3B00A82429 /* spv.specConstArrayCheck.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specConstArrayCheck.vert.out; sourceTree = ""; }; + B398165D29239F3B00A82429 /* preprocessor.cpp_style___FILE__.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = "preprocessor.cpp_style___FILE__.vert.err"; sourceTree = ""; }; + B398165E29239F3B00A82429 /* web.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.comp.out; sourceTree = ""; }; + B398165F29239F3B00A82429 /* preprocessor.function_macro.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.function_macro.vert.out; sourceTree = ""; }; + B398166029239F3B00A82429 /* hlsl.if.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.if.frag.out; sourceTree = ""; }; + B398166129239F3B00A82429 /* hlsl.target.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.target.frag.out; sourceTree = ""; }; + B398166229239F3B00A82429 /* hlsl.promote.binary.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.promote.binary.frag.out; sourceTree = ""; }; + B398166329239F3B00A82429 /* 400.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 400.tesc.out; sourceTree = ""; }; + B398166429239F3B00A82429 /* spv.uint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.uint.frag.out; sourceTree = ""; }; + B398166529239F3B00A82429 /* spv.queryL.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.queryL.frag.out; sourceTree = ""; }; + B398166629239F3B00A82429 /* test.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = test.frag.out; sourceTree = ""; }; + B398166729239F3B00A82429 /* spv.int32.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.int32.frag.out; sourceTree = ""; }; + B398166829239F3B00A82429 /* preprocessor.pragma.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.pragma.vert.err; sourceTree = ""; }; + B398166929239F3B00A82429 /* hlsl.samplecmp.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmp.basic.dx10.frag.out; sourceTree = ""; }; + B398166A29239F3B00A82429 /* maxClipDistances.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = maxClipDistances.vert.out; sourceTree = ""; }; + B398166B29239F3B00A82429 /* spv.coopmat_Error.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.coopmat_Error.comp.out; sourceTree = ""; }; + B398166C29239F3B00A82429 /* hlsl.samplecmp.negative.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmp.negative.frag.out; sourceTree = ""; }; + B398166D29239F3B00A82429 /* hlsl.numthreads.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.numthreads.comp.out; sourceTree = ""; }; + B398166E29239F3B00A82429 /* hlsl.rw.atomics.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.rw.atomics.frag.out; sourceTree = ""; }; + B398166F29239F3B00A82429 /* cppRelaxSkipTokensErrors.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppRelaxSkipTokensErrors.vert.out; sourceTree = ""; }; + B398167029239F3B00A82429 /* spv.subgroup.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroup.frag.out; sourceTree = ""; }; + B398167129239F3B00A82429 /* spv.16bitstorage_Error-int.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.16bitstorage_Error-int.frag.out"; sourceTree = ""; }; + B398167229239F3B00A82429 /* spv.newTexture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.newTexture.frag.out; sourceTree = ""; }; + B398167329239F3B00A82429 /* 320.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.frag.out; sourceTree = ""; }; + B398167429239F3B00A82429 /* spv.debugPrintf.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.debugPrintf.frag.out; sourceTree = ""; }; + B398167529239F3C00A82429 /* include.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = include.vert.out; sourceTree = ""; }; + B398167629239F3C00A82429 /* discard-dce.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "discard-dce.frag.out"; sourceTree = ""; }; + B398167729239F3C00A82429 /* hlsl.matpack-1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.matpack-1.frag.out"; sourceTree = ""; }; + B398167829239F3C00A82429 /* glsl.es320.subgroupShuffleRelative.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupShuffleRelative.comp.out; sourceTree = ""; }; + B398167929239F3C00A82429 /* spv.subgroupClusteredNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupClusteredNeg.comp.out; sourceTree = ""; }; + B398167A29239F3C00A82429 /* earlyReturnDiscard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = earlyReturnDiscard.frag.out; sourceTree = ""; }; + B398167B29239F3C00A82429 /* preprocessor.success_if_parse_would_fail.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.success_if_parse_would_fail.vert.out; sourceTree = ""; }; + B398167C29239F3C00A82429 /* spv.offsets.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.offsets.frag.out; sourceTree = ""; }; + B398167D29239F3C00A82429 /* remap.if.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.if.none.frag.out; sourceTree = ""; }; + B398167E29239F3C00A82429 /* compoundsuffix.frag.hlsl */ = {isa = PBXFileReference; lastKnownFileType = text; path = compoundsuffix.frag.hlsl; sourceTree = ""; }; + B398167F29239F3C00A82429 /* spv.viewportArray2.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.viewportArray2.vert.out; sourceTree = ""; }; + B398168029239F3C00A82429 /* hlsl.mintypes.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.mintypes.frag.out; sourceTree = ""; }; + B398168129239F3C00A82429 /* hlsl.intrinsic.frexp.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsic.frexp.vert.out; sourceTree = ""; }; + B398168229239F3C00A82429 /* reflection.options.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = reflection.options.vert.out; sourceTree = ""; }; + B398168329239F3C00A82429 /* hlsl.explicitDescriptorSet.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.explicitDescriptorSet.frag.out; sourceTree = ""; }; + B398168429239F3C00A82429 /* hlsl.structbuffer.rw.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.rw.frag.out; sourceTree = ""; }; + B398168529239F3C00A82429 /* link.multiBlocksValid.1.0.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.multiBlocksValid.1.0.vert.out; sourceTree = ""; }; + B398168629239F3C00A82429 /* hlsl.load.buffer.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.buffer.dx10.frag.out; sourceTree = ""; }; + B398168729239F3C00A82429 /* spv.computeShaderDerivatives.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.computeShaderDerivatives.comp.out; sourceTree = ""; }; + B398168829239F3C00A82429 /* 130.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 130.frag.out; sourceTree = ""; }; + B398168929239F3C00A82429 /* hlsl.gather.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gather.basic.dx10.frag.out; sourceTree = ""; }; + B398168A29239F3C00A82429 /* spv.shaderDrawParams.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderDrawParams.vert.out; sourceTree = ""; }; + B398168B29239F3C00A82429 /* hlsl.logical.binary.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.logical.binary.frag.out; sourceTree = ""; }; + B398168C29239F3C00A82429 /* 310.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.comp.out; sourceTree = ""; }; + B398168D29239F3C00A82429 /* 400.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 400.vert.out; sourceTree = ""; }; + B398168E29239F3C00A82429 /* hlsl.rw.scalar.bracket.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.rw.scalar.bracket.frag.out; sourceTree = ""; }; + B398168F29239F3C00A82429 /* hlsl.matpack-pragma.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.matpack-pragma.frag.out"; sourceTree = ""; }; + B398169029239F3C00A82429 /* spv.conditionalDiscard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.conditionalDiscard.frag.out; sourceTree = ""; }; + B398169129239F3C00A82429 /* spv.RayConstants.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayConstants.rgen.out; sourceTree = ""; }; + B398169229239F3C00A82429 /* hlsl.structStructName.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structStructName.frag.out; sourceTree = ""; }; + B398169329239F3C00A82429 /* uniformArray.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = uniformArray.frag.out; sourceTree = ""; }; + B398169429239F3C00A82429 /* hlsl.PointSize.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.PointSize.vert.out; sourceTree = ""; }; + B398169529239F3C00A82429 /* hlsl.logical.unary.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.logical.unary.frag.out; sourceTree = ""; }; + B398169629239F3C00A82429 /* hlsl.samplegrad.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplegrad.array.dx10.frag.out; sourceTree = ""; }; + B398169729239F3C00A82429 /* overlongLiteral.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = overlongLiteral.frag.out; sourceTree = ""; }; + B398169829239F3C00A82429 /* atomic_uint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = atomic_uint.frag.out; sourceTree = ""; }; + B398169929239F3C00A82429 /* spv.test.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.test.vert.out; sourceTree = ""; }; + B398169A29239F3C00A82429 /* spv.nonuniform5.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.nonuniform5.frag.out; sourceTree = ""; }; + B398169B29239F3C00A82429 /* hlsl.struct.split.assign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.struct.split.assign.frag.out; sourceTree = ""; }; + B398169C29239F3C00A82429 /* spv.bufferhandle19_Errors.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle19_Errors.frag.out; sourceTree = ""; }; + B398169D29239F3C00A82429 /* spv.nonuniform4.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.nonuniform4.frag.out; sourceTree = ""; }; + B398169E29239F3C00A82429 /* spv.viewportArray2.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.viewportArray2.tesc.out; sourceTree = ""; }; + B398169F29239F3C00A82429 /* hlsl.flatten.return.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flatten.return.frag.out; sourceTree = ""; }; + B39816A029239F3C00A82429 /* spv.demoteDisabled.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.demoteDisabled.frag.out; sourceTree = ""; }; + B39816A129239F3C00A82429 /* hlsl.earlydepthstencil.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.earlydepthstencil.frag.out; sourceTree = ""; }; + B39816A229239F3C00A82429 /* preprocessor.cpp_style_line_directive.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.cpp_style_line_directive.vert.err; sourceTree = ""; }; + B39816A329239F3C00A82429 /* remap.basic.dcevartype.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.basic.dcevartype.frag.out; sourceTree = ""; }; + B39816A429239F3C00A82429 /* hlsl.deadFunctionMissingBody.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.deadFunctionMissingBody.vert.out; sourceTree = ""; }; + B39816A529239F3C00A82429 /* hlsl.cbuffer-identifier.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.cbuffer-identifier.vert.out"; sourceTree = ""; }; + B39816A629239F3C00A82429 /* spv.subgroupExtendedTypesBallot.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesBallot.comp.out; sourceTree = ""; }; + B39816A729239F3C00A82429 /* hlsl.tristream-append.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.tristream-append.geom.out"; sourceTree = ""; }; + B39816A829239F3C00A82429 /* hlsl.precedence.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.precedence.frag.out; sourceTree = ""; }; + B39816A929239F3C00A82429 /* 300operations.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300operations.frag.out; sourceTree = ""; }; + B39816AA29239F3C00A82429 /* spv.fragmentDensity-es.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.fragmentDensity-es.frag.out"; sourceTree = ""; }; + B39816AB29239F3C00A82429 /* 400.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 400.frag.out; sourceTree = ""; }; + B39816AC29239F3C00A82429 /* spv.register.autoassign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.register.autoassign.frag.out; sourceTree = ""; }; + B39816AD29239F3C00A82429 /* spv.varyingArray.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.varyingArray.frag.out; sourceTree = ""; }; + B39816AE29239F3C00A82429 /* reflection.options.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = reflection.options.frag.out; sourceTree = ""; }; + B39816AF29239F3C00A82429 /* hlsl.identifier.sample.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.identifier.sample.frag.out; sourceTree = ""; }; + B39816B029239F3C00A82429 /* spv.meshShaderSharedMem.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderSharedMem.mesh.out; sourceTree = ""; }; + B39816B129239F3C00A82429 /* link.vk.pcNamingInvalid.0.0.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.vk.pcNamingInvalid.0.0.vert.out; sourceTree = ""; }; + B39816B229239F3C00A82429 /* hlsl.isfinite.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.isfinite.frag.out; sourceTree = ""; }; + B39816B329239F3C00A82429 /* findFunction.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = findFunction.frag.out; sourceTree = ""; }; + B39816B429239F3C00A82429 /* 130.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 130.vert.out; sourceTree = ""; }; + B39816B529239F3C00A82429 /* hlsl.gather.basic.dx10.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gather.basic.dx10.vert.out; sourceTree = ""; }; + B39816B629239F3C00A82429 /* glsl.460.subgroup.rmiss.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rmiss.out; sourceTree = ""; }; + B39816B729239F3C00A82429 /* hlsl.opaque-type-bug.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.opaque-type-bug.frag.out"; sourceTree = ""; }; + B39816B829239F3C00A82429 /* spv.shaderGroupVote.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderGroupVote.comp.out; sourceTree = ""; }; + B39816B929239F3C00A82429 /* hlsl.samplecmp.negative2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmp.negative2.frag.out; sourceTree = ""; }; + B39816BA29239F3C00A82429 /* spv.looseUniformNoLoc.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.looseUniformNoLoc.vert.out; sourceTree = ""; }; + B39816BB29239F3C00A82429 /* hlsl.intrinsics.promote.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.promote.frag.out; sourceTree = ""; }; + B39816BC29239F3C00A82429 /* hlsl.promote.atomic.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.promote.atomic.frag.out; sourceTree = ""; }; + B39816BD29239F3C00A82429 /* spv.flowControl.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.flowControl.frag.out; sourceTree = ""; }; + B39816BE29239F3C00A82429 /* spv.bufferhandleUvec2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandleUvec2.frag.out; sourceTree = ""; }; + B39816BF29239F3C00A82429 /* 320.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.tesc.out; sourceTree = ""; }; + B39816C029239F3C00A82429 /* glsl.450.subgroup.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroup.tese.out; sourceTree = ""; }; + B39816C129239F3C00A82429 /* hlsl.include.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.include.vert.out; sourceTree = ""; }; + B39816C229239F3C00A82429 /* remap.invalid-spirv-2.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "remap.invalid-spirv-2.out"; sourceTree = ""; }; + B39816C329239F3C00A82429 /* uint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = uint.frag.out; sourceTree = ""; }; + B39816C429239F3C00A82429 /* hlsl.load.buffer.float.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.buffer.float.dx10.frag.out; sourceTree = ""; }; + B39816C529239F3C00A82429 /* spv.test.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.test.frag.out; sourceTree = ""; }; + B39816C629239F3C00A82429 /* spv.deepRvalue.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.deepRvalue.frag.out; sourceTree = ""; }; + B39816C729239F3C00A82429 /* spv.subgroup.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroup.tesc.out; sourceTree = ""; }; + B39816C829239F3C00A82429 /* spv.memoryQualifier.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.memoryQualifier.frag.out; sourceTree = ""; }; + B39816C929239F3C00A82429 /* link.multiAnonBlocksInvalid.0.0.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.multiAnonBlocksInvalid.0.0.vert.out; sourceTree = ""; }; + B39816CA29239F3C00A82429 /* spv.atomic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.atomic.comp.out; sourceTree = ""; }; + B39816CB29239F3C00A82429 /* glsl.entryPointRename.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.entryPointRename.vert.out; sourceTree = ""; }; + B39816CC29239F3C00A82429 /* hlsl.staticMemberFunction.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.staticMemberFunction.frag.out; sourceTree = ""; }; + B39816CD29239F3C00A82429 /* hlsl.texturebuffer.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.texturebuffer.frag.out; sourceTree = ""; }; + B39816CE29239F3C00A82429 /* spv.subgroupVote.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupVote.comp.out; sourceTree = ""; }; + B39816CF29239F3C00A82429 /* spv.xfb.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.xfb.vert.out; sourceTree = ""; }; + B39816D029239F3C00A82429 /* hlsl.pp.line4.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.pp.line4.frag.out; sourceTree = ""; }; + B39816D129239F3C00A82429 /* spv.ext.RayCallable_Errors.rcall.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayCallable_Errors.rcall.out; sourceTree = ""; }; + B39816D229239F3C00A82429 /* hlsl.structbuffer.byte.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.byte.frag.out; sourceTree = ""; }; + B39816D329239F3C00A82429 /* hlsl.matrixindex.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.matrixindex.frag.out; sourceTree = ""; }; + B39816D429239F3C00A82429 /* spv.intOps.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.intOps.vert.out; sourceTree = ""; }; + B39816D529239F3C00A82429 /* hlsl.reflection.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.reflection.vert.out; sourceTree = ""; }; + B39816D629239F3C00A82429 /* cppNest.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppNest.vert.out; sourceTree = ""; }; + B39816D729239F3C00A82429 /* hlsl.shift.per-set.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.shift.per-set.frag.out"; sourceTree = ""; }; + B39816D829239F3C00A82429 /* spv.subgroupExtendedTypesQuad.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesQuad.comp.out; sourceTree = ""; }; + B39816D929239F3C00A82429 /* glsl.450.subgroupVote.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupVote.comp.out; sourceTree = ""; }; + B39816DA29239F3C00A82429 /* spv.samplerlessTextureFunctions.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.samplerlessTextureFunctions.frag.out; sourceTree = ""; }; + B39816DB29239F3C00A82429 /* spv.image.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.image.frag.out; sourceTree = ""; }; + B39816DC29239F3C00A82429 /* hlsl.intrinsic.frexp.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsic.frexp.frag.out; sourceTree = ""; }; + B39816DD29239F3C00A82429 /* hlsl.typedef.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.typedef.frag.out; sourceTree = ""; }; + B39816DE29239F3C00A82429 /* 430.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 430.comp.out; sourceTree = ""; }; + B39816DF29239F3C00A82429 /* spv.RayGenShaderArray.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShaderArray.rgen.out; sourceTree = ""; }; + B39816E029239F3C00A82429 /* whileLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = whileLoop.frag.out; sourceTree = ""; }; + B39816E129239F3C00A82429 /* spv.subgroup.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroup.vert.out; sourceTree = ""; }; + B39816E229239F3C00A82429 /* spv.dead-after-switch-break.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.dead-after-switch-break.vert.out"; sourceTree = ""; }; + B39816E329239F3C00A82429 /* spv.8bitstorage-uint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.8bitstorage-uint.frag.out"; sourceTree = ""; }; + B39816E429239F3C00A82429 /* 320.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.vert.out; sourceTree = ""; }; + B39816E529239F3C00A82429 /* hlsl.scalar2matrix.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.scalar2matrix.frag.out; sourceTree = ""; }; + B39816E629239F3C00A82429 /* simpleFunctionCall.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = simpleFunctionCall.frag.out; sourceTree = ""; }; + B39816E729239F3C00A82429 /* 100LimitsConf.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 100LimitsConf.vert.out; sourceTree = ""; }; + B39816E829239F3C00A82429 /* spv.specConstantOperations.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specConstantOperations.vert.out; sourceTree = ""; }; + B39816E929239F3C00A82429 /* hlsl.scope.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.scope.frag.out; sourceTree = ""; }; + B39816EA29239F3C00A82429 /* hlsl.hull.1.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.1.tesc.out; sourceTree = ""; }; + B39816EB29239F3C00A82429 /* hlsl.attribute.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.attribute.frag.out; sourceTree = ""; }; + B39816EC29239F3C00A82429 /* noMain.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = noMain.vert.out; sourceTree = ""; }; + B39816ED29239F3C00A82429 /* hlsl.wavevote.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavevote.comp.out; sourceTree = ""; }; + B39816EE29239F3C00A82429 /* spv.16bitstorage-int.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.16bitstorage-int.frag.out"; sourceTree = ""; }; + B39816EF29239F3C00A82429 /* link.vk.pcNamingValid.0.0.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.vk.pcNamingValid.0.0.vert.out; sourceTree = ""; }; + B39816F029239F3C00A82429 /* glsl.es320.subgroupBallotNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupBallotNeg.comp.out; sourceTree = ""; }; + B39816F129239F3C00A82429 /* hlsl.calculatelodunclamped.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.calculatelodunclamped.dx10.frag.out; sourceTree = ""; }; + B39816F229239F3C00A82429 /* spv.length.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.length.frag.out; sourceTree = ""; }; + B39816F329239F3C00A82429 /* hlsl.clipdistance-7.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-7.frag.out"; sourceTree = ""; }; + B39816F429239F3C00A82429 /* switch.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = switch.frag.out; sourceTree = ""; }; + B39816F529239F3C00A82429 /* hlsl.clipdistance-6.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-6.frag.out"; sourceTree = ""; }; + B39816F629239F3C00A82429 /* hlsl.function.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.function.frag.out; sourceTree = ""; }; + B39816F729239F3C00A82429 /* spv.debugPrintf_Error.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.debugPrintf_Error.frag.out; sourceTree = ""; }; + B39816F829239F3C00A82429 /* spv.intcoopmat.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.intcoopmat.comp.out; sourceTree = ""; }; + B39816F929239F3C00A82429 /* spv.functionNestedOpaque.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.functionNestedOpaque.vert.out; sourceTree = ""; }; + B39816FA29239F3C00A82429 /* reflection.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = reflection.vert.out; sourceTree = ""; }; + B39816FB29239F3C00A82429 /* 450.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.tesc.out; sourceTree = ""; }; + B39816FC29239F3C00A82429 /* spv.rw.autoassign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.rw.autoassign.frag.out; sourceTree = ""; }; + B39816FD29239F3C00A82429 /* spv.depthOut.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.depthOut.frag.out; sourceTree = ""; }; + B39816FE29239F3C00A82429 /* spv.privateVariableTypes.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.privateVariableTypes.frag.out; sourceTree = ""; }; + B39816FF29239F3C00A82429 /* spv.8bitstorage-ubo.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.8bitstorage-ubo.vert.out"; sourceTree = ""; }; + B398170029239F3C00A82429 /* hlsl.wavequery.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavequery.comp.out; sourceTree = ""; }; + B398170129239F3C00A82429 /* remap.invalid-spirv-1.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "remap.invalid-spirv-1.out"; sourceTree = ""; }; + B398170229239F3C00A82429 /* spv.8bitstorage-int.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.8bitstorage-int.frag.out"; sourceTree = ""; }; + B398170329239F3C00A82429 /* glsl.es320.subgroupBallot.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupBallot.comp.out; sourceTree = ""; }; + B398170429239F3C00A82429 /* hlsl.promote.vec1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.promote.vec1.frag.out; sourceTree = ""; }; + B398170529239F3C00A82429 /* spv.for-continue-break.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.for-continue-break.vert.out"; sourceTree = ""; }; + B398170629239F3C00A82429 /* spv.while-continue-break.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.while-continue-break.vert.out"; sourceTree = ""; }; + B398170729239F3C00A82429 /* specExamples.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = specExamples.vert.out; sourceTree = ""; }; + B398170829239F3C00A82429 /* spv.smBuiltins.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.smBuiltins.vert.out; sourceTree = ""; }; + B398170929239F3C00A82429 /* hlsl.clipdistance-1.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-1.geom.out"; sourceTree = ""; }; + B398170A29239F3C00A82429 /* spv.localAggregates.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.localAggregates.frag.out; sourceTree = ""; }; + B398170B29239F3C00A82429 /* cppBad4.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppBad4.vert.out; sourceTree = ""; }; + B398170C29239F3C00A82429 /* deepRvalue.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = deepRvalue.frag.out; sourceTree = ""; }; + B398170D29239F3C00A82429 /* spv.subgroupBallotNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupBallotNeg.comp.out; sourceTree = ""; }; + B398170E29239F3C00A82429 /* cppBad5.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppBad5.vert.out; sourceTree = ""; }; + B398170F29239F3C00A82429 /* 450.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.vert.out; sourceTree = ""; }; + B398171029239F3C00A82429 /* hlsl.samplelevel.basic.dx10.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplelevel.basic.dx10.vert.out; sourceTree = ""; }; + B398171129239F3C00A82429 /* hlsl.semantic.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.semantic.vert.out; sourceTree = ""; }; + B398171229239F3C00A82429 /* hlsl.intrinsics.negative.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.negative.vert.out; sourceTree = ""; }; + B398171329239F3C00A82429 /* glsl.450.subgroupBallot.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupBallot.comp.out; sourceTree = ""; }; + B398171429239F3C00A82429 /* hlsl.partialFlattenLocal.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.partialFlattenLocal.vert.out; sourceTree = ""; }; + B398171529239F3C00A82429 /* spv.RayCallable_Errors.rcall.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayCallable_Errors.rcall.out; sourceTree = ""; }; + B398171629239F3C00A82429 /* hlsl.samplegrad.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplegrad.offset.dx10.frag.out; sourceTree = ""; }; + B398171729239F3C00A82429 /* glsl.es320.subgroupShuffle.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupShuffle.comp.out; sourceTree = ""; }; + B398171829239F3C00A82429 /* spv.uniformArray.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.uniformArray.frag.out; sourceTree = ""; }; + B398171929239F3C00A82429 /* 310.inheritMemory.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.inheritMemory.frag.out; sourceTree = ""; }; + B398171A29239F3C00A82429 /* hlsl.sample.dx9.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.sample.dx9.frag.out; sourceTree = ""; }; + B398171B29239F3C00A82429 /* spv.dead-after-return.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.dead-after-return.vert.out"; sourceTree = ""; }; + B398171C29239F3C00A82429 /* 150.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 150.tesc.out; sourceTree = ""; }; + B398171D29239F3C00A82429 /* nonSquare.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = nonSquare.vert.out; sourceTree = ""; }; + B398171E29239F3C00A82429 /* preprocessor.simple.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.simple.vert.err; sourceTree = ""; }; + B398171F29239F3C00A82429 /* hlsl.gatherRGBA.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gatherRGBA.array.dx10.frag.out; sourceTree = ""; }; + B398172029239F3C00A82429 /* errors.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = errors.frag.out; sourceTree = ""; }; + B398172129239F3C00A82429 /* spv.ClosestHitShader_Errors.rchit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ClosestHitShader_Errors.rchit.out; sourceTree = ""; }; + B398172229239F3C00A82429 /* hlsl.getdimensions.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.getdimensions.dx10.frag.out; sourceTree = ""; }; + B398172329239F3C00A82429 /* spv.ssboAlias.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ssboAlias.frag.out; sourceTree = ""; }; + B398172429239F3C00A82429 /* hlsl.hull.ctrlpt-1.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.hull.ctrlpt-1.tesc.out"; sourceTree = ""; }; + B398172529239F3C00A82429 /* voidFunction.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = voidFunction.frag.out; sourceTree = ""; }; + B398172629239F3C00A82429 /* hlsl.constantbuffer.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.constantbuffer.frag.out; sourceTree = ""; }; + B398172729239F3C00A82429 /* spv.imageLoadStoreLod.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.imageLoadStoreLod.frag.out; sourceTree = ""; }; + B398172829239F3C00A82429 /* hlsl.structbuffer.coherent.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.coherent.frag.out; sourceTree = ""; }; + B398172929239F3C00A82429 /* spv.subgroupExtendedTypesBallotNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesBallotNeg.comp.out; sourceTree = ""; }; + B398172A29239F3C00A82429 /* spv.1.4.constructComposite.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.constructComposite.comp.out; sourceTree = ""; }; + B398172B29239F3C00A82429 /* 450.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.comp.out; sourceTree = ""; }; + B398172C29239F3C00A82429 /* hlsl.structbuffer.append.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.append.frag.out; sourceTree = ""; }; + B398172D29239F3C00A82429 /* hlsl.intrinsics.negative.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.negative.comp.out; sourceTree = ""; }; + B398172E29239F3C00A82429 /* hlsl.rw.vec2.bracket.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.rw.vec2.bracket.frag.out; sourceTree = ""; }; + B398172F29239F3C00A82429 /* spv.sample.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.sample.frag.out; sourceTree = ""; }; + B398173029239F3C00A82429 /* spv.dead-after-loop-break.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.dead-after-loop-break.vert.out"; sourceTree = ""; }; + B398173129239F3C00A82429 /* hlsl.load.rwtexture.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.rwtexture.array.dx10.frag.out; sourceTree = ""; }; + B398173229239F3C00A82429 /* spv.8bitstorage_Error-uint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.8bitstorage_Error-uint.frag.out"; sourceTree = ""; }; + B398173329239F3C00A82429 /* hlsl.forLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.forLoop.frag.out; sourceTree = ""; }; + B398173429239F3C00A82429 /* remap.hlsl.templatetypes.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.hlsl.templatetypes.none.frag.out; sourceTree = ""; }; + B398173529239F3C00A82429 /* glsl.450.subgroup.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroup.tesc.out; sourceTree = ""; }; + B398173629239F3C00A82429 /* dataOut.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = dataOut.frag.out; sourceTree = ""; }; + B398173729239F3C00A82429 /* 320.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.tese.out; sourceTree = ""; }; + B398173829239F3C00A82429 /* spv.doWhileLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.doWhileLoop.frag.out; sourceTree = ""; }; + B398173929239F3C00A82429 /* spv.subgroup.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroup.tese.out; sourceTree = ""; }; + B398173A29239F3C00A82429 /* spv.always-discard.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.always-discard.frag.out"; sourceTree = ""; }; + B398173B29239F3C00A82429 /* nvShaderNoperspectiveInterpolation.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = nvShaderNoperspectiveInterpolation.frag.out; sourceTree = ""; }; + B398173C29239F3C00A82429 /* hlsl.string.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.string.frag.out; sourceTree = ""; }; + B398173D29239F3C00A82429 /* reflection.linked.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = reflection.linked.out; sourceTree = ""; }; + B398173E29239F3C00A82429 /* hlsl.structarray.flatten.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structarray.flatten.frag.out; sourceTree = ""; }; + B398173F29239F3C00A82429 /* spv.qualifiers.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.qualifiers.vert.out; sourceTree = ""; }; + B398174029239F3C00A82429 /* spv.vulkan110.int16.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.vulkan110.int16.frag.out; sourceTree = ""; }; + B398174129239F3C00A82429 /* hlsl.type.identifier.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.type.identifier.frag.out; sourceTree = ""; }; + B398174229239F3C00A82429 /* 150.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 150.vert.out; sourceTree = ""; }; + B398174329239F3C00A82429 /* spv.for-simple.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.for-simple.vert.out"; sourceTree = ""; }; + B398174429239F3C00A82429 /* 300samplerExternalYUV.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300samplerExternalYUV.frag.out; sourceTree = ""; }; + B398174529239F3C00A82429 /* spv.ClosestHitShader.rchit.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ClosestHitShader.rchit.out; sourceTree = ""; }; + B398174629239F3C00A82429 /* specExamplesConf.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = specExamplesConf.vert.out; sourceTree = ""; }; + B398174729239F3C00A82429 /* spv.simpleMat.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.simpleMat.vert.out; sourceTree = ""; }; + B398174829239F3C00A82429 /* hlsl.nonstaticMemberFunction.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.nonstaticMemberFunction.frag.out; sourceTree = ""; }; + B398174929239F3C00A82429 /* spv.specConst.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specConst.vert.out; sourceTree = ""; }; + B398174A29239F3C00A82429 /* spv.320.meshShaderUserDefined.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.320.meshShaderUserDefined.mesh.out; sourceTree = ""; }; + B398174B29239F3C00A82429 /* spv.texture.sampler.transform.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.texture.sampler.transform.frag.out; sourceTree = ""; }; + B398174C29239F3C00A82429 /* preprocessor.line.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.line.vert.out; sourceTree = ""; }; + B398174D29239F3C00A82429 /* vulkan.ast.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = vulkan.ast.vert.out; sourceTree = ""; }; + B398174E29239F3C00A82429 /* functionSemantics.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = functionSemantics.frag.out; sourceTree = ""; }; + B398174F29239F3C00A82429 /* hlsl.pp.expand.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.pp.expand.frag.out; sourceTree = ""; }; + B398175029239F3C00A82429 /* spv.rankShift.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.rankShift.comp.out; sourceTree = ""; }; + B398175129239F3C00A82429 /* 310implicitSizeArrayError.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310implicitSizeArrayError.vert.out; sourceTree = ""; }; + B398175229239F3C00A82429 /* hlsl.format.rwtexture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.format.rwtexture.frag.out; sourceTree = ""; }; + B398175329239F3C00A82429 /* 460.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 460.frag.out; sourceTree = ""; }; + B398175429239F3C00A82429 /* spv.constStruct.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.constStruct.vert.out; sourceTree = ""; }; + B398175529239F3C00A82429 /* link.multiBlocksInvalid.0.0.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.multiBlocksInvalid.0.0.vert.out; sourceTree = ""; }; + B398175629239F3C00A82429 /* hlsl.clipdistance-8.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-8.vert.out"; sourceTree = ""; }; + B398175729239F3C00A82429 /* spv.variableArrayIndex.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.variableArrayIndex.frag.out; sourceTree = ""; }; + B398175829239F3C00A82429 /* hlsl.targetStruct2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.targetStruct2.frag.out; sourceTree = ""; }; + B398175929239F3C00A82429 /* hlsl.clipdistance-9.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-9.vert.out"; sourceTree = ""; }; + B398175A29239F3C00A82429 /* hlsl.includeNegative.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.includeNegative.vert.out; sourceTree = ""; }; + B398175B29239F3C00A82429 /* hlsl.mul-truncate.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.mul-truncate.frag.out"; sourceTree = ""; }; + B398175C29239F3C00A82429 /* hlsl.sample.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.sample.basic.dx10.frag.out; sourceTree = ""; }; + B398175D29239F3C00A82429 /* hlsl.samplelevel.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplelevel.offset.dx10.frag.out; sourceTree = ""; }; + B398175E29239F3C00A82429 /* hlsl.aliasOpaque.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.aliasOpaque.frag.out; sourceTree = ""; }; + B398175F29239F3C00A82429 /* spv.functionParameterTypes.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.functionParameterTypes.frag.out; sourceTree = ""; }; + B398176029239F3C00A82429 /* spv.AofA.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.AofA.frag.out; sourceTree = ""; }; + B398176129239F3C00A82429 /* spv.shaderStencilExport.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderStencilExport.frag.out; sourceTree = ""; }; + B398176229239F3C00A82429 /* glsl.450.subgroup.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroup.vert.out; sourceTree = ""; }; + B398176329239F3C00A82429 /* 410.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 410.geom.out; sourceTree = ""; }; + B398176429239F3C00A82429 /* hlsl.samplecmplevelzero.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmplevelzero.basic.dx10.frag.out; sourceTree = ""; }; + B398176529239F3C00A82429 /* hlsl.samplecmp.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmp.offsetarray.dx10.frag.out; sourceTree = ""; }; + B398176629239F3C00A82429 /* hlsl.emptystructreturn.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.emptystructreturn.frag.out; sourceTree = ""; }; + B398176729239F3C00A82429 /* hlsl.struct.split.array.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.struct.split.array.geom.out; sourceTree = ""; }; + B398176829239F3C00A82429 /* spv.for-nobody.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.for-nobody.vert.out"; sourceTree = ""; }; + B398176929239F3C00A82429 /* hlsl.cast.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.cast.frag.out; sourceTree = ""; }; + B398176A29239F3C00A82429 /* hlsl.struct.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.struct.frag.out; sourceTree = ""; }; + B398176B29239F3C00A82429 /* hlsl.float4.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.float4.frag.out; sourceTree = ""; }; + B398176C29239F3C00A82429 /* tokenPaste.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = tokenPaste.vert.out; sourceTree = ""; }; + B398176D29239F3C00A82429 /* spv.RayGenShader.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShader.rgen.out; sourceTree = ""; }; + B398176E29239F3C00A82429 /* spv.MissShader_Errors.rmiss.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.MissShader_Errors.rmiss.out; sourceTree = ""; }; + B398176F29239F3C00A82429 /* mains1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = mains1.frag.out; sourceTree = ""; }; + B398177029239F3C00A82429 /* hlsl.array.multidim.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.array.multidim.frag.out; sourceTree = ""; }; + B398177129239F3C00A82429 /* spv.structAssignment.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.structAssignment.frag.out; sourceTree = ""; }; + B398177229239F3C00A82429 /* rayQuery-allOps.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-allOps.rgen.out"; sourceTree = ""; }; + B398177329239F3C00A82429 /* hlsl.multiDescriptorSet.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.multiDescriptorSet.frag.out; sourceTree = ""; }; + B398177429239F3C00A82429 /* spv.400.frag.nanclamp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.400.frag.nanclamp.out; sourceTree = ""; }; + B398177529239F3C00A82429 /* spv.float32.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float32.frag.out; sourceTree = ""; }; + B398177629239F3C00A82429 /* hlsl.emptystruct.init.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.emptystruct.init.vert.out; sourceTree = ""; }; + B398177729239F3C00A82429 /* 100.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 100.frag.out; sourceTree = ""; }; + B398177829239F3C00A82429 /* remap.switch.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.switch.none.frag.out; sourceTree = ""; }; + B398177929239F3C00A82429 /* spv.bufferhandle4.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle4.frag.out; sourceTree = ""; }; + B398177A29239F3C00A82429 /* spv.bufferhandle5.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle5.frag.out; sourceTree = ""; }; + B398177B29239F3C00A82429 /* link.vk.differentPC.0.0.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.vk.differentPC.0.0.frag.out; sourceTree = ""; }; + B398177C29239F3C00A82429 /* 450.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 450.tese.out; sourceTree = ""; }; + B398177D29239F3C00A82429 /* spv.arbPostDepthCoverage.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.arbPostDepthCoverage.frag.out; sourceTree = ""; }; + B398177E29239F3C00A82429 /* spv.constConstruct.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.constConstruct.vert.out; sourceTree = ""; }; + B398177F29239F3C00A82429 /* spv.1.4.OpCopyLogical.funcall.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.OpCopyLogical.funcall.frag.out; sourceTree = ""; }; + B398178029239F3C00A82429 /* hlsl.intrinsics.d3dcolortoubyte4.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.d3dcolortoubyte4.frag.out; sourceTree = ""; }; + B398178129239F3C00A82429 /* loops.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = loops.frag.out; sourceTree = ""; }; + B398178229239F3C00A82429 /* recurse1.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = recurse1.vert.out; sourceTree = ""; }; + B398178329239F3C00A82429 /* spv.pushConstantAnon.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.pushConstantAnon.vert.out; sourceTree = ""; }; + B398178429239F3C00A82429 /* 430.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 430.vert.out; sourceTree = ""; }; + B398178529239F3C00A82429 /* spv.ext.MissShader.rmiss.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.MissShader.rmiss.out; sourceTree = ""; }; + B398178629239F3C00A82429 /* spv.subgroupExtendedTypesShuffleNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffleNeg.comp.out; sourceTree = ""; }; + B398178729239F3C00A82429 /* hlsl.self_cast.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.self_cast.frag.out; sourceTree = ""; }; + B398178829239F3C00A82429 /* cppComplexExpr.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppComplexExpr.vert.out; sourceTree = ""; }; + B398178929239F3C00A82429 /* spv.scalarlayout.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.scalarlayout.frag.out; sourceTree = ""; }; + B398178A29239F3C00A82429 /* hlsl.layoutOverride.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.layoutOverride.vert.out; sourceTree = ""; }; + B398178B29239F3C00A82429 /* hlsl.promotions.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.promotions.frag.out; sourceTree = ""; }; + B398178C29239F3C00A82429 /* hlsl.memberFunCall.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.memberFunCall.frag.out; sourceTree = ""; }; + B398178D29239F3C00A82429 /* 320.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.comp.out; sourceTree = ""; }; + B398178E29239F3C00A82429 /* 300layout.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300layout.frag.out; sourceTree = ""; }; + B398178F29239F3C00A82429 /* spv.fragmentDensity.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.fragmentDensity.frag.out; sourceTree = ""; }; + B398179029239F3C00A82429 /* hlsl.array.flatten.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.array.flatten.frag.out; sourceTree = ""; }; + B398179129239F3C00A82429 /* 310.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.frag.out; sourceTree = ""; }; + B398179229239F3C00A82429 /* spv.dataOut.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.dataOut.frag.out; sourceTree = ""; }; + B398179329239F3C00A82429 /* glsl.460.subgroup.rint.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rint.out; sourceTree = ""; }; + B398179429239F3C00A82429 /* remap.uniformarray.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.uniformarray.none.frag.out; sourceTree = ""; }; + B398179529239F3C00A82429 /* web.builtins.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.builtins.frag.out; sourceTree = ""; }; + B398179629239F3C00A82429 /* hlsl.structbuffer.incdec.frag.hlslfun1.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.incdec.frag.hlslfun1.out; sourceTree = ""; }; + B398179729239F3C00A82429 /* spv.int8.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.int8.frag.out; sourceTree = ""; }; + B398179829239F3C00A82429 /* es-link1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "es-link1.frag.out"; sourceTree = ""; }; + B398179929239F3D00A82429 /* hlsl.entry-out.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.entry-out.frag.out"; sourceTree = ""; }; + B398179A29239F3D00A82429 /* hlsl.clipdistance-2.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-2.vert.out"; sourceTree = ""; }; + B398179B29239F3D00A82429 /* hlsl.clipdistance-3.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-3.vert.out"; sourceTree = ""; }; + B398179C29239F3D00A82429 /* spv.vecMatConstruct.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.vecMatConstruct.frag.out; sourceTree = ""; }; + B398179D29239F3D00A82429 /* spv.shaderImageFootprint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderImageFootprint.frag.out; sourceTree = ""; }; + B398179E29239F3D00A82429 /* missingBodies.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = missingBodies.vert.out; sourceTree = ""; }; + B398179F29239F3D00A82429 /* rayQuery-committed.Error.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-committed.Error.rgen.out"; sourceTree = ""; }; + B39817A029239F3D00A82429 /* preprocessor.include.disabled.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.include.disabled.vert.err; sourceTree = ""; }; + B39817A129239F3D00A82429 /* pointCoord.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = pointCoord.frag.out; sourceTree = ""; }; + B39817A229239F3D00A82429 /* spv.RayGenShader11.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShader11.rgen.out; sourceTree = ""; }; + B39817A329239F3D00A82429 /* functionCall.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = functionCall.frag.out; sourceTree = ""; }; + B39817A429239F3D00A82429 /* preprocessor.include.enabled.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.include.enabled.vert.out; sourceTree = ""; }; + B39817A529239F3D00A82429 /* hlsl.stringtoken.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.stringtoken.frag.out; sourceTree = ""; }; + B39817A629239F3D00A82429 /* spv.subgroupExtendedTypesQuadNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesQuadNeg.comp.out; sourceTree = ""; }; + B39817A729239F3D00A82429 /* structDeref.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = structDeref.frag.out; sourceTree = ""; }; + B39817A829239F3D00A82429 /* spv.bufferhandle11.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle11.frag.out; sourceTree = ""; }; + B39817A929239F3D00A82429 /* spv.bufferhandle10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle10.frag.out; sourceTree = ""; }; + B39817AA29239F3D00A82429 /* hlsl.rw.bracket.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.rw.bracket.frag.out; sourceTree = ""; }; + B39817AB29239F3D00A82429 /* cppDeepNest.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppDeepNest.frag.out; sourceTree = ""; }; + B39817AC29239F3D00A82429 /* spv.16bitstorage-uint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.16bitstorage-uint.frag.out"; sourceTree = ""; }; + B39817AD29239F3D00A82429 /* spv.bufferhandle9.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle9.frag.out; sourceTree = ""; }; + B39817AE29239F3D00A82429 /* flowControl.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = flowControl.frag.out; sourceTree = ""; }; + B39817AF29239F3D00A82429 /* spv.bufferhandle8.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle8.frag.out; sourceTree = ""; }; + B39817B029239F3D00A82429 /* spv.while-simple.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.while-simple.vert.out"; sourceTree = ""; }; + B39817B129239F3D00A82429 /* hlsl.partialFlattenMixed.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.partialFlattenMixed.vert.out; sourceTree = ""; }; + B39817B229239F3D00A82429 /* spv.sparseTexture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.sparseTexture.frag.out; sourceTree = ""; }; + B39817B329239F3D00A82429 /* hlsl.structbuffer.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.frag.out; sourceTree = ""; }; + B39817B429239F3D00A82429 /* glsl.es320.subgroup.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroup.tesc.out; sourceTree = ""; }; + B39817B529239F3D00A82429 /* hlsl.shapeConv.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.shapeConv.frag.out; sourceTree = ""; }; + B39817B629239F3D00A82429 /* hlsl.intrinsics.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.vert.out; sourceTree = ""; }; + B39817B729239F3D00A82429 /* spv.vulkan110.storageBuffer.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.vulkan110.storageBuffer.vert.out; sourceTree = ""; }; + B39817B829239F3D00A82429 /* hlsl.intrinsics.evalfns.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.evalfns.frag.out; sourceTree = ""; }; + B39817B929239F3D00A82429 /* hlsl.gatherRGBA.basic.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gatherRGBA.basic.dx10.frag.out; sourceTree = ""; }; + B39817BA29239F3D00A82429 /* hlsl.type.half.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.type.half.frag.out; sourceTree = ""; }; + B39817BB29239F3D00A82429 /* spv.drawParams.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.drawParams.vert.out; sourceTree = ""; }; + B39817BC29239F3D00A82429 /* spv.subgroupExtendedTypesPartitionedNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesPartitionedNeg.comp.out; sourceTree = ""; }; + B39817BD29239F3D00A82429 /* hlsl.structarray.flatten.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structarray.flatten.geom.out; sourceTree = ""; }; + B39817BE29239F3D00A82429 /* sample.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = sample.frag.out; sourceTree = ""; }; + B39817BF29239F3D00A82429 /* spv.subgroupBallot.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupBallot.comp.out; sourceTree = ""; }; + B39817C029239F3D00A82429 /* spv.builtInXFB.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.builtInXFB.vert.out; sourceTree = ""; }; + B39817C129239F3D00A82429 /* glspv.esversion.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glspv.esversion.vert.out; sourceTree = ""; }; + B39817C229239F3D00A82429 /* hlsl.load.rwtexture.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.rwtexture.dx10.frag.out; sourceTree = ""; }; + B39817C329239F3D00A82429 /* spv.specConstant.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specConstant.comp.out; sourceTree = ""; }; + B39817C429239F3D00A82429 /* spv.1.4.NonWritable.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.NonWritable.frag.out; sourceTree = ""; }; + B39817C529239F3D00A82429 /* hlsl.struct.split.call.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.struct.split.call.vert.out; sourceTree = ""; }; + B39817C629239F3D00A82429 /* remap.hlsl.sample.basic.strip.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.hlsl.sample.basic.strip.frag.out; sourceTree = ""; }; + B39817C729239F3D00A82429 /* glspv.version.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glspv.version.vert.out; sourceTree = ""; }; + B39817C829239F3D00A82429 /* web.basic.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.basic.vert.out; sourceTree = ""; }; + B39817C929239F3D00A82429 /* spv.450.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.450.tesc.out; sourceTree = ""; }; + B39817CA29239F3D00A82429 /* 120.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 120.vert.out; sourceTree = ""; }; + B39817CB29239F3D00A82429 /* rayQuery-allOps.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-allOps.comp.out"; sourceTree = ""; }; + B39817CC29239F3D00A82429 /* hlsl.sample.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.sample.offsetarray.dx10.frag.out; sourceTree = ""; }; + B39817CD29239F3D00A82429 /* hlsl.synthesizeInput.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.synthesizeInput.frag.out; sourceTree = ""; }; + B39817CE29239F3D00A82429 /* hlsl.structin.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structin.vert.out; sourceTree = ""; }; + B39817CF29239F3D00A82429 /* spv.extPostDepthCoverage.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.extPostDepthCoverage.frag.out; sourceTree = ""; }; + B39817D029239F3D00A82429 /* spv.8bit-16bit-construction.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.8bit-16bit-construction.frag.out"; sourceTree = ""; }; + B39817D129239F3D00A82429 /* glsl.es320.subgroup.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroup.vert.out; sourceTree = ""; }; + B39817D229239F3D00A82429 /* preprocessor.include.enabled.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.include.enabled.vert.err; sourceTree = ""; }; + B39817D329239F3D00A82429 /* remap.similar_1a.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.similar_1a.everything.frag.out; sourceTree = ""; }; + B39817D429239F3D00A82429 /* glsl.es320.subgroupBasic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupBasic.comp.out; sourceTree = ""; }; + B39817D529239F3D00A82429 /* matrixError.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrixError.vert.out; sourceTree = ""; }; + B39817D629239F3D00A82429 /* preprocessor.include.disabled.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.include.disabled.vert.out; sourceTree = ""; }; + B39817D729239F3D00A82429 /* spv.shaderFragMaskAMD.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.shaderFragMaskAMD.frag.out; sourceTree = ""; }; + B39817D829239F3D00A82429 /* hlsl.tx.overload.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.tx.overload.frag.out; sourceTree = ""; }; + B39817D929239F3D00A82429 /* spv.buffer.autoassign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.buffer.autoassign.frag.out; sourceTree = ""; }; + B39817DA29239F3D00A82429 /* spv.1.4.texture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.texture.frag.out; sourceTree = ""; }; + B39817DB29239F3D00A82429 /* 420.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.comp.out; sourceTree = ""; }; + B39817DC29239F3D00A82429 /* versionsClean.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = versionsClean.frag.out; sourceTree = ""; }; + B39817DD29239F3D00A82429 /* hlsl.getsampleposition.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.getsampleposition.dx10.frag.out; sourceTree = ""; }; + B39817DE29239F3D00A82429 /* spv.ext.RayConstants.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayConstants.rgen.out; sourceTree = ""; }; + B39817DF29239F3D00A82429 /* spv.fullyCovered.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.fullyCovered.frag.out; sourceTree = ""; }; + B39817E029239F3D00A82429 /* nosuffix.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = nosuffix.out; sourceTree = ""; }; + B39817E129239F3D00A82429 /* glsl.450.subgroupBallotNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupBallotNeg.comp.out; sourceTree = ""; }; + B39817E229239F3D00A82429 /* hlsl.sample.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.sample.array.dx10.frag.out; sourceTree = ""; }; + B39817E329239F3D00A82429 /* spv.nonSquare.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.nonSquare.vert.out; sourceTree = ""; }; + B39817E429239F3D00A82429 /* spv.1.4.OpSelect.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.OpSelect.frag.out; sourceTree = ""; }; + B39817E529239F3D00A82429 /* 300block.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300block.frag.out; sourceTree = ""; }; + B39817E629239F3D00A82429 /* size */ = {isa = PBXFileReference; lastKnownFileType = text; path = size; sourceTree = ""; }; + B39817E729239F3D00A82429 /* hlsl.sample.offset.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.sample.offset.dx10.frag.out; sourceTree = ""; }; + B39817E829239F3D00A82429 /* precise_struct_block.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = precise_struct_block.vert.out; sourceTree = ""; }; + B39817E929239F3D00A82429 /* hlsl.array.implicit-size.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.array.implicit-size.frag.out"; sourceTree = ""; }; + B39817EA29239F3D00A82429 /* remap.basic.dcefunc.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.basic.dcefunc.frag.out; sourceTree = ""; }; + B39817EB29239F3D00A82429 /* hlsl.flattenSubset.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenSubset.frag.out; sourceTree = ""; }; + B39817EC29239F3D00A82429 /* hlsl.inf.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.inf.vert.out; sourceTree = ""; }; + B39817ED29239F3D00A82429 /* spv.16bitstorage.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.16bitstorage.frag.out; sourceTree = ""; }; + B39817EE29239F3D00A82429 /* hlsl.reflection.binding.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.reflection.binding.vert.out; sourceTree = ""; }; + B39817EF29239F3D00A82429 /* spv.dataOutIndirect.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.dataOutIndirect.frag.out; sourceTree = ""; }; + B39817F029239F3D00A82429 /* hlsl.samplecmplevelzero.array.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmplevelzero.array.dx10.frag.out; sourceTree = ""; }; + B39817F129239F3D00A82429 /* rayQuery-initialize.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-initialize.rgen.out"; sourceTree = ""; }; + B39817F229239F3D00A82429 /* spv.debugInfo.1.1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.debugInfo.1.1.frag.out; sourceTree = ""; }; + B39817F329239F3D00A82429 /* spv.hlslDebugInfo.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.hlslDebugInfo.frag.out; sourceTree = ""; }; + B39817F429239F3D00A82429 /* spv.perprimitiveNV.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.perprimitiveNV.frag.out; sourceTree = ""; }; + B39817F529239F3D00A82429 /* hlsl.semantic-1.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.semantic-1.vert.out"; sourceTree = ""; }; + B39817F629239F3D00A82429 /* compoundsuffix.vert.glsl */ = {isa = PBXFileReference; lastKnownFileType = text; path = compoundsuffix.vert.glsl; sourceTree = ""; }; + B39817F729239F3D00A82429 /* 310.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 310.geom.out; sourceTree = ""; }; + B39817F829239F3D00A82429 /* spv.400.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.400.frag.out; sourceTree = ""; }; + B39817F929239F3D00A82429 /* spv.300layout.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.300layout.frag.out; sourceTree = ""; }; + B39817FA29239F3D00A82429 /* hlsl.semicolons.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.semicolons.frag.out; sourceTree = ""; }; + B39817FB29239F3D00A82429 /* spv.1.4.OpEntryPoint.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.OpEntryPoint.frag.out; sourceTree = ""; }; + B39817FC29239F3D00A82429 /* remap.similar_1b.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.similar_1b.everything.frag.out; sourceTree = ""; }; + B39817FD29239F3D00A82429 /* hlsl.switch.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.switch.frag.out; sourceTree = ""; }; + B39817FE29239F3D00A82429 /* hlsl.type.type.conversion.valid.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.type.type.conversion.valid.frag.out; sourceTree = ""; }; + B39817FF29239F3D00A82429 /* preprocessor.simple.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.simple.vert.out; sourceTree = ""; }; + B398180029239F3D00A82429 /* hlsl.domain.1.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.domain.1.tese.out; sourceTree = ""; }; + B398180129239F3D00A82429 /* glsl.460.subgroup.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.mesh.out; sourceTree = ""; }; + B398180229239F3D00A82429 /* spv.subgroupExtendedTypesPartitioned.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesPartitioned.comp.out; sourceTree = ""; }; + B398180329239F3D00A82429 /* spv.debugInfo.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.debugInfo.frag.out; sourceTree = ""; }; + B398180429239F3D00A82429 /* hlsl.calculatelod.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.calculatelod.dx10.frag.out; sourceTree = ""; }; + B398180529239F3D00A82429 /* hlsl.array.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.array.frag.out; sourceTree = ""; }; + B398180629239F3D00A82429 /* spv.simpleFunctionCall.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.simpleFunctionCall.frag.out; sourceTree = ""; }; + B398180729239F3D00A82429 /* stringToDouble.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = stringToDouble.vert.out; sourceTree = ""; }; + B398180829239F3D00A82429 /* spv.subgroupExtendedTypesShuffle.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffle.comp.out; sourceTree = ""; }; + B398180929239F3D00A82429 /* 300link.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300link.frag.out; sourceTree = ""; }; + B398180A29239F3D00A82429 /* cppIndent.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppIndent.vert.out; sourceTree = ""; }; + B398180B29239F3D00A82429 /* hlsl.params.default.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.params.default.frag.out; sourceTree = ""; }; + B398180C29239F3D00A82429 /* spv.bufferhandle3.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle3.frag.out; sourceTree = ""; }; + B398180D29239F3D00A82429 /* spv.bufferhandle2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle2.frag.out; sourceTree = ""; }; + B398180E29239F3D00A82429 /* spv.noWorkgroup.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.noWorkgroup.comp.out; sourceTree = ""; }; + B398180F29239F3D00A82429 /* spv.textureBuffer.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.textureBuffer.vert.out; sourceTree = ""; }; + B398181029239F3D00A82429 /* hlsl.swizzle.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.swizzle.frag.out; sourceTree = ""; }; + B398181129239F3D00A82429 /* hlsl.y-negate-1.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.y-negate-1.vert.out"; sourceTree = ""; }; + B398181229239F3D00A82429 /* spv.boolInBlock.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.boolInBlock.frag.out; sourceTree = ""; }; + B398181329239F3D00A82429 /* spv.meshShaderBuiltins.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderBuiltins.mesh.out; sourceTree = ""; }; + B398181429239F3D00A82429 /* spv.subgroupExtendedTypesShuffleRelative.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesShuffleRelative.comp.out; sourceTree = ""; }; + B398181529239F3D00A82429 /* 440.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 440.vert.out; sourceTree = ""; }; + B398181629239F3D00A82429 /* array100.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = array100.frag.out; sourceTree = ""; }; + B398181729239F3D00A82429 /* hlsl.clipdistance-5.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-5.vert.out"; sourceTree = ""; }; + B398181829239F3D00A82429 /* spv.100ops.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.100ops.frag.out; sourceTree = ""; }; + B398181929239F3D00A82429 /* hlsl.clipdistance-4.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-4.vert.out"; sourceTree = ""; }; + B398181A29239F3D00A82429 /* spv.meshShaderPerView_Errors.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderPerView_Errors.mesh.out; sourceTree = ""; }; + B398181B29239F3D00A82429 /* glsl.460.subgroup.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rgen.out; sourceTree = ""; }; + B398181C29239F3D00A82429 /* lineContinuation100.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = lineContinuation100.vert.out; sourceTree = ""; }; + B398181D29239F3D00A82429 /* hlsl.samplecmplevelzero.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplecmplevelzero.offsetarray.dx10.frag.out; sourceTree = ""; }; + B398181E29239F3D00A82429 /* hlsl.explicitDescriptorSet-2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.explicitDescriptorSet-2.frag.out"; sourceTree = ""; }; + B398181F29239F3D00A82429 /* hlsl.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.frag.out; sourceTree = ""; }; + B398182029239F3D00A82429 /* rayQuery-allOps.Error.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rayQuery-allOps.Error.rgen.out"; sourceTree = ""; }; + B398182129239F3D00A82429 /* hlsl.depthGreater.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.depthGreater.frag.out; sourceTree = ""; }; + B398182229239F3D00A82429 /* 110scope.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 110scope.vert.out; sourceTree = ""; }; + B398182329239F3D00A82429 /* hlsl.pp.line.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.pp.line.frag.out; sourceTree = ""; }; + B398182429239F3D00A82429 /* hlsl.loopattr.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.loopattr.frag.out; sourceTree = ""; }; + B398182529239F3D00A82429 /* empty.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = empty.frag.out; sourceTree = ""; }; + B398182629239F3D00A82429 /* spv.noDeadDecorations.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.noDeadDecorations.vert.out; sourceTree = ""; }; + B398182729239F3D00A82429 /* hlsl.whileLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.whileLoop.frag.out; sourceTree = ""; }; + B398182829239F3D00A82429 /* hlsl.entry-in.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.entry-in.frag.out"; sourceTree = ""; }; + B398182929239F3D00A82429 /* remap.uniformarray.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.uniformarray.everything.frag.out; sourceTree = ""; }; + B398182A29239F3D00A82429 /* 420.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.tese.out; sourceTree = ""; }; + B398182B29239F3D00A82429 /* hlsl.specConstant.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.specConstant.frag.out; sourceTree = ""; }; + B398182C29239F3D00A82429 /* spv.glsl.register.noautoassign.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.glsl.register.noautoassign.frag.out; sourceTree = ""; }; + B398182D29239F3D00A82429 /* spv.texture.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.texture.vert.out; sourceTree = ""; }; + B398182E29239F3D00A82429 /* spv.bufferhandle16.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bufferhandle16.frag.out; sourceTree = ""; }; + B398182F29239F3D00A82429 /* spv.float16Fetch.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float16Fetch.frag.out; sourceTree = ""; }; + B398183029239F3D00A82429 /* spv.meshShaderUserDefined.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderUserDefined.mesh.out; sourceTree = ""; }; + B398183129239F3D00A82429 /* hlsl.constructimat.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.constructimat.frag.out; sourceTree = ""; }; + B398183229239F3D00A82429 /* hlsl.pp.expand.frag.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.pp.expand.frag.err; sourceTree = ""; }; + B398183329239F3D00A82429 /* glsl.450.subgroupClusteredNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupClusteredNeg.comp.out; sourceTree = ""; }; + B398183429239F3D00A82429 /* syntaxError.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = syntaxError.frag.out; sourceTree = ""; }; + B398183529239F3D00A82429 /* spv.sampleId.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.sampleId.frag.out; sourceTree = ""; }; + B398183629239F3D00A82429 /* remap.hlsl.templatetypes.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.hlsl.templatetypes.everything.frag.out; sourceTree = ""; }; + B398183729239F3D00A82429 /* preprocessor.line.vert.err */ = {isa = PBXFileReference; lastKnownFileType = text; path = preprocessor.line.vert.err; sourceTree = ""; }; + B398183829239F3D00A82429 /* hlsl.numericsuffixes.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.numericsuffixes.frag.out; sourceTree = ""; }; + B398183929239F3D00A82429 /* spv.subgroupBasic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupBasic.comp.out; sourceTree = ""; }; + B398183A29239F3D00A82429 /* spv.RayCallable.rcall.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayCallable.rcall.out; sourceTree = ""; }; + B398183B29239F3D00A82429 /* hlsl.structbuffer.floatidx.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.floatidx.comp.out; sourceTree = ""; }; + B398183C29239F3D00A82429 /* dce.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = dce.frag.out; sourceTree = ""; }; + B398183D29239F3D00A82429 /* spv.meshShaderRedeclBuiltins.mesh.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderRedeclBuiltins.mesh.out; sourceTree = ""; }; + B398183E29239F3D00A82429 /* 100scope.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 100scope.vert.out; sourceTree = ""; }; + B398183F29239F3D00A82429 /* hlsl.charLit.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.charLit.vert.out; sourceTree = ""; }; + B398184029239F3D00A82429 /* hlsl.implicitBool.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.implicitBool.frag.out; sourceTree = ""; }; + B398184129239F3D00A82429 /* hlsl.scalar-length.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.scalar-length.frag.out"; sourceTree = ""; }; + B398184229239F3D00A82429 /* glsl.es320.subgroup.tese.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroup.tese.out; sourceTree = ""; }; + B398184329239F3D00A82429 /* spv.1.4.sparseTexture.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.1.4.sparseTexture.frag.out; sourceTree = ""; }; + B398184429239F3D00A82429 /* spv.300BuiltIns.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.300BuiltIns.vert.out; sourceTree = ""; }; + B398184529239F3D00A82429 /* 420_size_gl_in.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420_size_gl_in.geom.out; sourceTree = ""; }; + B398184629239F3D00A82429 /* spv.atomicCounter.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.atomicCounter.comp.out; sourceTree = ""; }; + B398184729239F3D00A82429 /* hlsl.tx.bracket.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.tx.bracket.frag.out; sourceTree = ""; }; + B398184829239F3D00A82429 /* spv.whileLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.whileLoop.frag.out; sourceTree = ""; }; + B398184929239F3D00A82429 /* versionsErrors.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = versionsErrors.frag.out; sourceTree = ""; }; + B398184A29239F3D00A82429 /* spv.vulkan100.subgroupArithmetic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.vulkan100.subgroupArithmetic.comp.out; sourceTree = ""; }; + B398184B29239F3D00A82429 /* doWhileLoop.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = doWhileLoop.frag.out; sourceTree = ""; }; + B398184C29239F3D00A82429 /* vulkan.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = vulkan.frag.out; sourceTree = ""; }; + B398184D29239F3D00A82429 /* spv.prepost.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.prepost.frag.out; sourceTree = ""; }; + B398184E29239F3D00A82429 /* spv.430.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.430.vert.out; sourceTree = ""; }; + B398184F29239F3D00A82429 /* mixedArrayDecls.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = mixedArrayDecls.frag.out; sourceTree = ""; }; + B398185029239F3D00A82429 /* spv.dead-complex-continue-after-return.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.dead-complex-continue-after-return.vert.out"; sourceTree = ""; }; + B398185129239F3D00A82429 /* spv.types.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.types.frag.out; sourceTree = ""; }; + B398185229239F3D00A82429 /* spv.hlslOffsets.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.hlslOffsets.vert.out; sourceTree = ""; }; + B398185329239F3D00A82429 /* runtimeArray.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = runtimeArray.vert.out; sourceTree = ""; }; + B398185429239F3D00A82429 /* badChars.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = badChars.frag.out; sourceTree = ""; }; + B398185529239F3D00A82429 /* hlsl.basic.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.basic.geom.out; sourceTree = ""; }; + B398185629239F3D00A82429 /* hlsl.samplegrad.basic.dx10.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.samplegrad.basic.dx10.vert.out; sourceTree = ""; }; + B398185729239F3D00A82429 /* spv.volatileAtomic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.volatileAtomic.comp.out; sourceTree = ""; }; + B398185829239F3D00A82429 /* spv.RayGenShader_Errors.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShader_Errors.rgen.out; sourceTree = ""; }; + B398185929239F3D00A82429 /* hlsl.subpass.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.subpass.frag.out; sourceTree = ""; }; + B398185A29239F3D00A82429 /* hlsl.clip.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.clip.frag.out; sourceTree = ""; }; + B398185B29239F3D00A82429 /* hlsl.flattenOpaqueInitMix.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.flattenOpaqueInitMix.vert.out; sourceTree = ""; }; + B398185C29239F3D00A82429 /* hlsl.multiReturn.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.multiReturn.frag.out; sourceTree = ""; }; + B398185D29239F3D00A82429 /* hlsl.pp.line3.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.pp.line3.frag.out; sourceTree = ""; }; + B398185E29239F3D00A82429 /* hlsl.preprocessor.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.preprocessor.frag.out; sourceTree = ""; }; + B398185F29239F3D00A82429 /* hlsl.pp.line2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.pp.line2.frag.out; sourceTree = ""; }; + B398186029239F3D00A82429 /* reflection.options.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = reflection.options.geom.out; sourceTree = ""; }; + B398186129239F3D00A82429 /* remap.if.everything.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.if.everything.frag.out; sourceTree = ""; }; + B398186229239F3D00A82429 /* hlsl.attributeC11.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.attributeC11.frag.out; sourceTree = ""; }; + B398186329239F3D00A82429 /* hlsl.load.2dms.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.2dms.dx10.frag.out; sourceTree = ""; }; + B398186429239F3D00A82429 /* tokenLength.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = tokenLength.vert.out; sourceTree = ""; }; + B398186529239F3D00A82429 /* spv.ext.MissShader_Errors.rmiss.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.MissShader_Errors.rmiss.out; sourceTree = ""; }; + B398186629239F3D00A82429 /* spv.subgroupExtendedTypesVote.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesVote.comp.out; sourceTree = ""; }; + B398186729239F3D00A82429 /* glsl.450.subgroupQuad.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupQuad.comp.out; sourceTree = ""; }; + B398186829239F3D00A82429 /* 400.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 400.geom.out; sourceTree = ""; }; + B398186929239F3D00A82429 /* constFold.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = constFold.frag.out; sourceTree = ""; }; + B398186A29239F3D00A82429 /* glsl.es320.subgroupPartitioned.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupPartitioned.comp.out; sourceTree = ""; }; + B398186B29239F3D00A82429 /* hlsl.PointSize.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.PointSize.geom.out; sourceTree = ""; }; + B398186C29239F3D00A82429 /* spv.dead-complex-merge-after-return.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.dead-complex-merge-after-return.vert.out"; sourceTree = ""; }; + B398186D29239F3D00A82429 /* spv.OVR_multiview.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.OVR_multiview.vert.out; sourceTree = ""; }; + B398186E29239F3D00A82429 /* hlsl.multiEntry.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.multiEntry.vert.out; sourceTree = ""; }; + B398186F29239F3D00A82429 /* 140.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 140.vert.out; sourceTree = ""; }; + B398187029239F3D00A82429 /* spv.fragmentDensity-neg.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.fragmentDensity-neg.frag.out"; sourceTree = ""; }; + B398187129239F3D00A82429 /* hlsl.waveprefix.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.waveprefix.comp.out; sourceTree = ""; }; + B398187229239F3D00A82429 /* hlsl.hull.void.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.void.tesc.out; sourceTree = ""; }; + B398187329239F3D00A82429 /* remap.literal64.none.spv.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.literal64.none.spv.out; sourceTree = ""; }; + B398187429239F3D00A82429 /* spv.float16.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float16.frag.out; sourceTree = ""; }; + B398187529239F3D00A82429 /* hlsl.structbuffer.incdec.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.incdec.frag.out; sourceTree = ""; }; + B398187629239F3D00A82429 /* spv.subgroupQuad.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupQuad.comp.out; sourceTree = ""; }; + B398187729239F3D00A82429 /* spv.subgroupExtendedTypesArithmetic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesArithmetic.comp.out; sourceTree = ""; }; + B398187829239F3E00A82429 /* spv.bool.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.bool.vert.out; sourceTree = ""; }; + B398187929239F3E00A82429 /* spv.deviceGroup.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.deviceGroup.frag.out; sourceTree = ""; }; + B398187A29239F3E00A82429 /* hlsl.clipdistance-1.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.clipdistance-1.frag.out"; sourceTree = ""; }; + B398187B29239F3E00A82429 /* spv.ext.RayGenShader_Errors.rgen.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShader_Errors.rgen.out; sourceTree = ""; }; + B398187C29239F3E00A82429 /* hlsl.load.basic.dx10.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.load.basic.dx10.vert.out; sourceTree = ""; }; + B398187D29239F3E00A82429 /* spv.loopsArtificial.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.loopsArtificial.frag.out; sourceTree = ""; }; + B398187E29239F3E00A82429 /* spv.for-complex-condition.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.for-complex-condition.vert.out"; sourceTree = ""; }; + B398187F29239F3E00A82429 /* hlsl.constructexpr.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.constructexpr.frag.out; sourceTree = ""; }; + B398188029239F3E00A82429 /* hlsl.color.hull.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.color.hull.tesc.out; sourceTree = ""; }; + B398188129239F3E00A82429 /* hlsl.automap.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.automap.frag.out; sourceTree = ""; }; + B398188229239F3E00A82429 /* 420.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.vert.out; sourceTree = ""; }; + B398188329239F3E00A82429 /* spv.multiStruct.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.multiStruct.comp.out; sourceTree = ""; }; + B398188429239F3E00A82429 /* hlsl.gatherRGBA.offsetarray.dx10.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.gatherRGBA.offsetarray.dx10.frag.out; sourceTree = ""; }; + B398188529239F3E00A82429 /* hlsl.intrinsics.double.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.double.frag.out; sourceTree = ""; }; + B398188629239F3E00A82429 /* spv.switch.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.switch.frag.out; sourceTree = ""; }; + B398188729239F3E00A82429 /* spv.fragmentShaderBarycentric.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.fragmentShaderBarycentric.frag.out; sourceTree = ""; }; + B398188829239F3E00A82429 /* hlsl.structbuffer.fn2.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.structbuffer.fn2.comp.out; sourceTree = ""; }; + B398188929239F3E00A82429 /* glsl.450.subgroupArithmetic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupArithmetic.comp.out; sourceTree = ""; }; + B398188A29239F3E00A82429 /* variableArrayIndex.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = variableArrayIndex.frag.out; sourceTree = ""; }; + B398188B29239F3E00A82429 /* glspv.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glspv.vert.out; sourceTree = ""; }; + B398188C29239F3E00A82429 /* glsl.460.subgroup.rcall.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.460.subgroup.rcall.out; sourceTree = ""; }; + B398188D29239F3E00A82429 /* hlsl.wavequad.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavequad.comp.out; sourceTree = ""; }; + B398188E29239F3E00A82429 /* glsl.450.subgroupPartitioned.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupPartitioned.comp.out; sourceTree = ""; }; + B398188F29239F3E00A82429 /* length.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = length.frag.out; sourceTree = ""; }; + B398189029239F3E00A82429 /* cppSimple.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppSimple.vert.out; sourceTree = ""; }; + B398189129239F3E00A82429 /* spv.int64.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.int64.frag.out; sourceTree = ""; }; + B398189229239F3E00A82429 /* spv.matFun.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.matFun.vert.out; sourceTree = ""; }; + B398189329239F3E00A82429 /* hlsl.rw.register.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.rw.register.frag.out; sourceTree = ""; }; + B398189429239F3E00A82429 /* spv.GeometryShaderPassthrough.geom.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.GeometryShaderPassthrough.geom.out; sourceTree = ""; }; + B398189529239F3E00A82429 /* hlsl.intrinsics.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.intrinsics.comp.out; sourceTree = ""; }; + B398189629239F3E00A82429 /* cppBad3.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppBad3.vert.out; sourceTree = ""; }; + B398189729239F3E00A82429 /* cppBad2.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = cppBad2.vert.out; sourceTree = ""; }; + B398189829239F3E00A82429 /* spv.460.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.460.frag.out; sourceTree = ""; }; + B398189929239F3E00A82429 /* hlsl.nonint-index.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.nonint-index.frag.out"; sourceTree = ""; }; + B398189A29239F3E00A82429 /* hlsl.noSemantic.functionality1.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.noSemantic.functionality1.comp.out; sourceTree = ""; }; + B398189B29239F3E00A82429 /* remap.basic.none.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = remap.basic.none.frag.out; sourceTree = ""; }; + B398189C29239F3E00A82429 /* prepost.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = prepost.frag.out; sourceTree = ""; }; + B398189D29239F3E00A82429 /* spv.structDeref.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.structDeref.frag.out; sourceTree = ""; }; + B398189E29239F3E00A82429 /* 420.tesc.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.tesc.out; sourceTree = ""; }; + B398189F29239F3E00A82429 /* spv.150.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.150.vert.out; sourceTree = ""; }; + B39818A029239F3E00A82429 /* spv.varyingArrayIndirect.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.varyingArrayIndirect.frag.out; sourceTree = ""; }; + B39818A129239F3E00A82429 /* 300.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = 300.frag.out; sourceTree = ""; }; + B39818A229239F3E00A82429 /* hlsl.assoc.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.assoc.frag.out; sourceTree = ""; }; + B39818A329239F3E00A82429 /* spv.specConstant.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.specConstant.vert.out; sourceTree = ""; }; + B39818A429239F3E00A82429 /* precision.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = precision.vert.out; sourceTree = ""; }; + B39818A529239F3E00A82429 /* glsl.450.subgroupShuffleRelative.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupShuffleRelative.comp.out; sourceTree = ""; }; + B39818A629239F3E00A82429 /* spv.subgroupExtendedTypesVoteNeg.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroupExtendedTypesVoteNeg.comp.out; sourceTree = ""; }; + B39818A729239F3E00A82429 /* glsl.450.subgroupBasic.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupBasic.comp.out; sourceTree = ""; }; + B39818A829239F3E00A82429 /* hlsl.wavebroadcast.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.wavebroadcast.comp.out; sourceTree = ""; }; + B39818A929239F3E00A82429 /* spv.meshTaskShader.task.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshTaskShader.task.out; sourceTree = ""; }; + B39818AA29239F3E00A82429 /* hlsl.struct.split.trivial.vert.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.struct.split.trivial.vert.out; sourceTree = ""; }; + B39818AB29239F3E00A82429 /* spv.always-discard2.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "spv.always-discard2.frag.out"; sourceTree = ""; }; + B39818AC29239F3E00A82429 /* hlsl.groupid.comp.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.groupid.comp.out; sourceTree = ""; }; + B39818AD29239F3E00A82429 /* spv.precisionNonESSamp.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.precisionNonESSamp.frag.out; sourceTree = ""; }; + B39818AE29239F3E00A82429 /* hlsl.fraggeom.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.fraggeom.frag.out; sourceTree = ""; }; + B39818AF29239F3E00A82429 /* spv.samplePosition.frag.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.samplePosition.frag.out; sourceTree = ""; }; + B39818B029239F3E00A82429 /* spv.1.4.OpEntryPoint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.1.4.OpEntryPoint.frag; sourceTree = ""; }; + B39818B129239F3E00A82429 /* hlsl.promote.binary.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.promote.binary.frag; sourceTree = ""; }; + B39818B229239F3E00A82429 /* hlsl.constantbuffer.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.constantbuffer.frag; sourceTree = ""; }; + B39818B329239F3E00A82429 /* hlsl.attributeGlobalBuffer.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.attributeGlobalBuffer.frag; sourceTree = ""; }; + B39818B429239F3E00A82429 /* glsl.450.subgroupQuad.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.450.subgroupQuad.comp; sourceTree = ""; }; + B39818B529239F3E00A82429 /* 450.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 450.vert; sourceTree = ""; }; + B39818B629239F3E00A82429 /* 320.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.tesc; sourceTree = ""; }; + B39818B729239F3E00A82429 /* nonVulkan.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = nonVulkan.frag; sourceTree = ""; }; + B39818B829239F3E00A82429 /* spv.GeometryShaderPassthrough.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.GeometryShaderPassthrough.geom; sourceTree = ""; }; + B39818B929239F3E00A82429 /* hlsl.intrinsics.promote.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.intrinsics.promote.frag; sourceTree = ""; }; + B39818BA29239F3E00A82429 /* hlsl.structbuffer.fn.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.fn.frag; sourceTree = ""; }; + B39818BB29239F3E00A82429 /* spv.pushConstant.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.pushConstant.vert; sourceTree = ""; }; + B39818BC29239F3E00A82429 /* hlsl.pp.line3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.pp.line3.frag; sourceTree = ""; }; + B39818BD29239F3E00A82429 /* spv.subgroup.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.subgroup.frag; sourceTree = ""; }; + B39818BE29239F3E00A82429 /* hlsl.hull.ctrlpt-1.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hlsl.hull.ctrlpt-1.tesc"; sourceTree = ""; }; + B39818BF29239F3E00A82429 /* spv.smBuiltins.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.smBuiltins.vert; sourceTree = ""; }; + B39818C029239F3E00A82429 /* remap.uniformarray.none.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.uniformarray.none.frag; sourceTree = ""; }; + B39818C129239F3E00A82429 /* spv.16bitxfb.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.16bitxfb.vert; sourceTree = ""; }; + B39818C229239F3E00A82429 /* hlsl.samplecmp.negative.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplecmp.negative.frag; sourceTree = ""; }; + B39818C329239F3E00A82429 /* variableArrayIndex.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = variableArrayIndex.frag; sourceTree = ""; }; + B39818C429239F3E00A82429 /* spv.discard-dce.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.discard-dce.frag"; sourceTree = ""; }; + B39818C529239F3E00A82429 /* spv.ext.RayCallable.rcall */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayCallable.rcall; sourceTree = ""; }; + B39818C629239F3E00A82429 /* spv.bufferhandle15.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle15.frag; sourceTree = ""; }; + B39818C729239F3E00A82429 /* spv.bufferhandle_Error.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.bufferhandle_Error.frag; sourceTree = ""; }; + B39818C829239F3E00A82429 /* hlsl.structbuffer.coherent.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structbuffer.coherent.frag; sourceTree = ""; }; + B39818C929239F3E00A82429 /* hlsl.clipdistance-4.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-4.frag"; sourceTree = ""; }; + B39818CA29239F3E00A82429 /* glslangValidator */ = {isa = PBXFileReference; lastKnownFileType = text; path = glslangValidator; sourceTree = ""; }; + B39818CB29239F3E00A82429 /* glsl.450.subgroup.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = glsl.450.subgroup.vert; sourceTree = ""; }; + B39818CC29239F3E00A82429 /* hlsl.format.rwtexture.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.format.rwtexture.frag; sourceTree = ""; }; + B39818CD29239F3E00A82429 /* remap.similar_1a.everything.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = remap.similar_1a.everything.frag; sourceTree = ""; }; + B39818CE29239F3E00A82429 /* hlsl.hull.1.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.hull.1.tesc; sourceTree = ""; }; + B39818CF29239F3E00A82429 /* numeral.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = numeral.frag; sourceTree = ""; }; + B39818D029239F3E00A82429 /* samplerlessTextureFunctions.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = samplerlessTextureFunctions.frag; sourceTree = ""; }; + B39818D129239F3E00A82429 /* spv.accessChain.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.accessChain.frag; sourceTree = ""; }; + B39818D229239F3E00A82429 /* spv.subgroup.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.subgroup.tese; sourceTree = ""; }; + B39818D329239F3E00A82429 /* hlsl.includeNegative.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.includeNegative.vert; sourceTree = ""; }; + B39818D429239F3E00A82429 /* spv.always-discard2.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.always-discard2.frag"; sourceTree = ""; }; + B39818D529239F3E00A82429 /* spv.extPostDepthCoverage.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.extPostDepthCoverage.frag; sourceTree = ""; }; + B39818D629239F3E00A82429 /* spv.meshShaderRedeclBuiltins.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderRedeclBuiltins.mesh; sourceTree = ""; }; + B39818D729239F3E00A82429 /* discard-dce.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "discard-dce.frag"; sourceTree = ""; }; + B39818D829239F3E00A82429 /* 300BuiltIns.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300BuiltIns.frag; sourceTree = ""; }; + B39818D929239F3E00A82429 /* 140.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 140.frag; sourceTree = ""; }; + B39818DA29239F3E00A82429 /* spv.extPostDepthCoverage_Error.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.extPostDepthCoverage_Error.frag; sourceTree = ""; }; + B39818DB29239F3E00A82429 /* hlsl.sample.array.dx10.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.sample.array.dx10.frag; sourceTree = ""; }; + B39818DC29239F3E00A82429 /* spv.float32.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.float32.frag; sourceTree = ""; }; + B39818DD29239F3E00A82429 /* spv.meshShaderSharedMem.mesh */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.meshShaderSharedMem.mesh; sourceTree = ""; }; + B39818DE29239F3E00A82429 /* spv.430.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.430.vert; sourceTree = ""; }; + B39818DF29239F3E00A82429 /* web.testlist */ = {isa = PBXFileReference; lastKnownFileType = text; path = web.testlist; sourceTree = ""; }; + B39818E029239F3E00A82429 /* glsl.es320.subgroupVote.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupVote.comp; sourceTree = ""; }; + B39818E129239F3E00A82429 /* spv.RayGenShader_Errors.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.RayGenShader_Errors.rgen; sourceTree = ""; }; + B39818E229239F3E00A82429 /* reflection.linked.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = reflection.linked.frag; sourceTree = ""; }; + B39818E329239F3E00A82429 /* spv.memoryQualifier.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.memoryQualifier.frag; sourceTree = ""; }; + B39818E429239F3E00A82429 /* spv.nonuniform3.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.nonuniform3.frag; sourceTree = ""; }; + B39818E529239F3E00A82429 /* spv.functionCall.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.functionCall.frag; sourceTree = ""; }; + B39818E629239F3E00A82429 /* hlsl.clipdistance-1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-1.vert"; sourceTree = ""; }; + B39818E729239F3E00A82429 /* glsl.es320.subgroupClusteredNeg.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = glsl.es320.subgroupClusteredNeg.comp; sourceTree = ""; }; + B39818E829239F3E00A82429 /* implicitInnerAtomicUint.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = implicitInnerAtomicUint.frag; sourceTree = ""; }; + B39818E929239F3E00A82429 /* link.multiAnonBlocksInvalid.0.1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiAnonBlocksInvalid.0.1.vert; sourceTree = ""; }; + B39818EA29239F3E00A82429 /* hlsl.domain.1.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.domain.1.tese; sourceTree = ""; }; + B39818EB29239F3E00A82429 /* hlsl.if.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.if.frag; sourceTree = ""; }; + B39818EC29239F3E00A82429 /* spv.switch.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.switch.frag; sourceTree = ""; }; + B39818ED29239F3E00A82429 /* link.multiAnonBlocksValid.0.1.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = link.multiAnonBlocksValid.0.1.vert; sourceTree = ""; }; + B39818EE29239F3E00A82429 /* dataOutIndirect.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = dataOutIndirect.frag; sourceTree = ""; }; + B39818EF29239F3E00A82429 /* hlsl.array.implicit-size.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.array.implicit-size.frag"; sourceTree = ""; }; + B39818F029239F3E00A82429 /* noMain.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = noMain.vert; sourceTree = ""; }; + B39818F129239F3E00A82429 /* hlsl.samplegrad.basic.dx10.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.samplegrad.basic.dx10.vert; sourceTree = ""; }; + B39818F229239F3E00A82429 /* spv.deepRvalue.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.deepRvalue.frag; sourceTree = ""; }; + B39818F329239F3E00A82429 /* 100scope.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 100scope.vert; sourceTree = ""; }; + B39818F429239F3E00A82429 /* spv.float16convertonlystorage.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.float16convertonlystorage.comp; sourceTree = ""; }; + B39818F529239F3E00A82429 /* hlsl.mip.operator.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.mip.operator.frag; sourceTree = ""; }; + B39818F629239F3E00A82429 /* reflection.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = reflection.frag; sourceTree = ""; }; + B39818F729239F3E00A82429 /* preprocessor.success_if_parse_would_fail.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.success_if_parse_would_fail.vert; sourceTree = ""; }; + B39818F829239F3E00A82429 /* spv.ext.RayGenShader_Errors.rgen */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.ext.RayGenShader_Errors.rgen; sourceTree = ""; }; + B39818F929239F3E00A82429 /* cppBad4.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppBad4.vert; sourceTree = ""; }; + B39818FA29239F3E00A82429 /* max_vertices_0.geom */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = max_vertices_0.geom; sourceTree = ""; }; + B39818FB29239F3E00A82429 /* hlsl.scalarCast.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.scalarCast.vert; sourceTree = ""; }; + B39818FC29239F3E00A82429 /* hlsl.layoutOverride.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.layoutOverride.vert; sourceTree = ""; }; + B39818FD29239F3E00A82429 /* spv.450.noRedecl.tesc */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.450.noRedecl.tesc; sourceTree = ""; }; + B39818FE29239F3E00A82429 /* hlsl.structarray.flatten.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.structarray.flatten.frag; sourceTree = ""; }; + B39818FF29239F3E00A82429 /* 420.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = 420.comp; sourceTree = ""; }; + B398190029239F3E00A82429 /* cppIndent.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = cppIndent.vert; sourceTree = ""; }; + B398190129239F3E00A82429 /* spv.scalarlayoutfloat16.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.scalarlayoutfloat16.frag; sourceTree = ""; }; + B398190229239F3E00A82429 /* preprocessor.eof_missing.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.eof_missing.vert; sourceTree = ""; }; + B398190329239F3E00A82429 /* spv.460.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.460.comp; sourceTree = ""; }; + B398190429239F3E00A82429 /* spv.shortCircuit.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.shortCircuit.frag; sourceTree = ""; }; + B398190529239F3E00A82429 /* hlsl.clipdistance-8.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "hlsl.clipdistance-8.frag"; sourceTree = ""; }; + B398190629239F3E00A82429 /* spv.branch-return.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = "spv.branch-return.vert"; sourceTree = ""; }; + B398190729239F3E00A82429 /* hlsl.aliasOpaque.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = hlsl.aliasOpaque.frag; sourceTree = ""; }; + B398190829239F3E00A82429 /* spv.computeShaderDerivatives.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = spv.computeShaderDerivatives.comp; sourceTree = ""; }; + B398190929239F3E00A82429 /* 300.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = 300.frag; sourceTree = ""; }; + B398190A29239F3E00A82429 /* 320.tese */ = {isa = PBXFileReference; lastKnownFileType = text; path = 320.tese; sourceTree = ""; }; + B398190B29239F3E00A82429 /* spv.int8.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = spv.int8.frag; sourceTree = ""; }; + B398190C29239F3E00A82429 /* preprocessor.line.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = preprocessor.line.vert; sourceTree = ""; }; + B398190D29239F3E00A82429 /* hlsl.numthreads.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlsl.numthreads.comp; sourceTree = ""; }; + B398190F29239F3E00A82429 /* resource_limits_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource_limits_c.h; sourceTree = ""; }; + B398191029239F3E00A82429 /* ResourceLimits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ResourceLimits.h; sourceTree = ""; }; + B398191129239F3E00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398191229239F3E00A82429 /* StandAlone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StandAlone.cpp; sourceTree = ""; }; + B398191329239F3E00A82429 /* spirv-remap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "spirv-remap.cpp"; sourceTree = ""; }; + B398191429239F3E00A82429 /* Worklist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Worklist.h; sourceTree = ""; }; + B398191529239F3E00A82429 /* resource_limits_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = resource_limits_c.cpp; sourceTree = ""; }; + B398191629239F3E00A82429 /* ResourceLimits.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLimits.cpp; sourceTree = ""; }; + B398191729239F3E00A82429 /* DirStackFileIncluder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DirStackFileIncluder.h; sourceTree = ""; }; + B398191829239F3E00A82429 /* known_good.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = known_good.json; sourceTree = ""; }; + B398191929239F3E00A82429 /* WORKSPACE */ = {isa = PBXFileReference; lastKnownFileType = text; path = WORKSPACE; sourceTree = ""; }; + B398191A29239F3F00A82429 /* update_glslang_sources.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = update_glslang_sources.py; sourceTree = ""; }; + B398191C29239F3F00A82429 /* NonSemanticDebugPrintf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NonSemanticDebugPrintf.h; sourceTree = ""; }; + B398191D29239F3F00A82429 /* SPVRemapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SPVRemapper.h; sourceTree = ""; }; + B398191E29239F3F00A82429 /* SpvBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SpvBuilder.h; sourceTree = ""; }; + B398191F29239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398192029239F3F00A82429 /* SpvPostProcess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SpvPostProcess.cpp; sourceTree = ""; }; + B398192129239F3F00A82429 /* SpvTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SpvTools.h; sourceTree = ""; }; + B398192229239F3F00A82429 /* SpvTools.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SpvTools.cpp; sourceTree = ""; }; + B398192329239F3F00A82429 /* InReadableOrder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InReadableOrder.cpp; sourceTree = ""; }; + B398192429239F3F00A82429 /* GLSL.ext.AMD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLSL.ext.AMD.h; sourceTree = ""; }; + B398192529239F3F00A82429 /* doc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = doc.h; sourceTree = ""; }; + B398192629239F3F00A82429 /* spirv.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spirv.hpp; sourceTree = ""; }; + B398192729239F3F00A82429 /* SpvBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SpvBuilder.cpp; sourceTree = ""; }; + B398192829239F3F00A82429 /* GLSL.ext.EXT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLSL.ext.EXT.h; sourceTree = ""; }; + B398192929239F3F00A82429 /* GLSL.ext.KHR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLSL.ext.KHR.h; sourceTree = ""; }; + B398192A29239F3F00A82429 /* GLSL.ext.NV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLSL.ext.NV.h; sourceTree = ""; }; + B398192B29239F3F00A82429 /* GlslangToSpv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GlslangToSpv.cpp; sourceTree = ""; }; + B398192C29239F3F00A82429 /* spvIR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spvIR.h; sourceTree = ""; }; + B398192D29239F3F00A82429 /* bitutils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitutils.h; sourceTree = ""; }; + B398192E29239F3F00A82429 /* disassemble.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disassemble.h; sourceTree = ""; }; + B398192F29239F3F00A82429 /* GlslangToSpv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GlslangToSpv.h; sourceTree = ""; }; + B398193029239F3F00A82429 /* GLSL.std.450.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLSL.std.450.h; sourceTree = ""; }; + B398193129239F3F00A82429 /* SPVRemapper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SPVRemapper.cpp; sourceTree = ""; }; + B398193229239F3F00A82429 /* Logger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Logger.cpp; sourceTree = ""; }; + B398193329239F3F00A82429 /* hex_float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hex_float.h; sourceTree = ""; }; + B398193429239F3F00A82429 /* Logger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Logger.h; sourceTree = ""; }; + B398193529239F3F00A82429 /* doc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = doc.cpp; sourceTree = ""; }; + B398193629239F3F00A82429 /* disassemble.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disassemble.cpp; sourceTree = ""; }; + B398193829239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398193B29239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398193C29239F3F00A82429 /* glslang.after.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = glslang.after.js; sourceTree = ""; }; + B398193D29239F3F00A82429 /* glslang.pre.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = glslang.pre.js; sourceTree = ""; }; + B398193E29239F3F00A82429 /* glslang.js.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang.js.cpp; sourceTree = ""; }; + B398194029239F3F00A82429 /* ossource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ossource.cpp; sourceTree = ""; }; + B398194129239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398194229239F3F00A82429 /* osinclude.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osinclude.h; sourceTree = ""; }; + B398194429239F3F00A82429 /* ossource.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ossource.cpp; sourceTree = ""; }; + B398194529239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398194629239F3F00A82429 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B398194829239F3F00A82429 /* glslang_c_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_c_interface.cpp; sourceTree = ""; }; + B398194A29239F3F00A82429 /* ResourceLimits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ResourceLimits.h; sourceTree = ""; }; + B398194B29239F3F00A82429 /* glslang_c_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glslang_c_interface.h; sourceTree = ""; }; + B398194C29239F3F00A82429 /* Types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Types.h; sourceTree = ""; }; + B398194D29239F3F00A82429 /* intermediate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intermediate.h; sourceTree = ""; }; + B398194E29239F3F00A82429 /* glslang_c_shader_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glslang_c_shader_types.h; sourceTree = ""; }; + B398194F29239F3F00A82429 /* BaseTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseTypes.h; sourceTree = ""; }; + B398195029239F3F00A82429 /* revision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = revision.h; sourceTree = ""; }; + B398195129239F3F00A82429 /* InitializeGlobals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InitializeGlobals.h; sourceTree = ""; }; + B398195229239F3F00A82429 /* ShHandle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShHandle.h; sourceTree = ""; }; + B398195329239F3F00A82429 /* arrays.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arrays.h; sourceTree = ""; }; + B398195429239F3F00A82429 /* Common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Common.h; sourceTree = ""; }; + B398195529239F3F00A82429 /* revision.template */ = {isa = PBXFileReference; lastKnownFileType = text; path = revision.template; sourceTree = ""; }; + B398195629239F3F00A82429 /* ConstantUnion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConstantUnion.h; sourceTree = ""; }; + B398195729239F3F00A82429 /* InfoSink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InfoSink.h; sourceTree = ""; }; + B398195829239F3F00A82429 /* PoolAlloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PoolAlloc.h; sourceTree = ""; }; + B398195929239F3F00A82429 /* updateGrammar */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = updateGrammar; sourceTree = ""; }; + B398195B29239F3F00A82429 /* ParseHelper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ParseHelper.cpp; sourceTree = ""; }; + B398195C29239F3F00A82429 /* parseVersions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = parseVersions.h; sourceTree = ""; }; + B398195D29239F3F00A82429 /* gl_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_types.h; sourceTree = ""; }; + B398195E29239F3F00A82429 /* propagateNoContraction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = propagateNoContraction.cpp; sourceTree = ""; }; + B398195F29239F3F00A82429 /* pch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pch.h; sourceTree = ""; }; + B398196029239F3F00A82429 /* ScanContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanContext.h; sourceTree = ""; }; + B398196129239F3F00A82429 /* iomapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iomapper.h; sourceTree = ""; }; + B398196229239F3F00A82429 /* localintermediate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = localintermediate.h; sourceTree = ""; }; + B398196329239F3F00A82429 /* Scan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Scan.cpp; sourceTree = ""; }; + B398196429239F3F00A82429 /* glslang.y */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.yacc; path = glslang.y; sourceTree = ""; }; + B398196529239F3F00A82429 /* RemoveTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoveTree.h; sourceTree = ""; }; + B398196629239F3F00A82429 /* Initialize.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Initialize.cpp; sourceTree = ""; }; + B398196729239F3F00A82429 /* glslang_tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_tab.cpp; sourceTree = ""; }; + B398196829239F3F00A82429 /* limits.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = limits.cpp; sourceTree = ""; }; + B398196929239F3F00A82429 /* parseConst.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = parseConst.cpp; sourceTree = ""; }; + B398196A29239F3F00A82429 /* propagateNoContraction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = propagateNoContraction.h; sourceTree = ""; }; + B398196B29239F3F00A82429 /* Versions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Versions.h; sourceTree = ""; }; + B398196C29239F3F00A82429 /* IntermTraverse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = IntermTraverse.cpp; sourceTree = ""; }; + B398196D29239F3F00A82429 /* intermOut.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = intermOut.cpp; sourceTree = ""; }; + B398196E29239F3F00A82429 /* iomapper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = iomapper.cpp; sourceTree = ""; }; + B398196F29239F3F00A82429 /* PoolAlloc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PoolAlloc.cpp; sourceTree = ""; }; + B398197029239F3F00A82429 /* ShaderLang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderLang.cpp; sourceTree = ""; }; + B398197129239F3F00A82429 /* SymbolTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SymbolTable.h; sourceTree = ""; }; + B398197229239F3F00A82429 /* InfoSink.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InfoSink.cpp; sourceTree = ""; }; + B398197329239F3F00A82429 /* Intermediate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Intermediate.cpp; sourceTree = ""; }; + B398197429239F3F00A82429 /* pch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pch.cpp; sourceTree = ""; }; + B398197529239F3F00A82429 /* SymbolTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolTable.cpp; sourceTree = ""; }; + B398197629239F3F00A82429 /* glslang_tab.cpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glslang_tab.cpp.h; sourceTree = ""; }; + B398197729239F3F00A82429 /* LiveTraverser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LiveTraverser.h; sourceTree = ""; }; + B398197829239F3F00A82429 /* Initialize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Initialize.h; sourceTree = ""; }; + B398197929239F3F00A82429 /* attribute.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = attribute.cpp; sourceTree = ""; }; + B398197A29239F3F00A82429 /* reflection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = reflection.cpp; sourceTree = ""; }; + B398197B29239F3F00A82429 /* RemoveTree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveTree.cpp; sourceTree = ""; }; + B398197C29239F3F00A82429 /* attribute.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = attribute.h; sourceTree = ""; }; + B398197D29239F3F00A82429 /* Versions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Versions.cpp; sourceTree = ""; }; + B398197E29239F3F00A82429 /* Constant.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Constant.cpp; sourceTree = ""; }; + B398197F29239F3F00A82429 /* linkValidate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linkValidate.cpp; sourceTree = ""; }; + B398198029239F3F00A82429 /* glslang.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = glslang.m4; sourceTree = ""; }; + B398198129239F3F00A82429 /* ParseHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ParseHelper.h; sourceTree = ""; }; + B398198329239F3F00A82429 /* PpAtom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PpAtom.cpp; sourceTree = ""; }; + B398198429239F3F00A82429 /* PpTokens.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PpTokens.h; sourceTree = ""; }; + B398198529239F3F00A82429 /* Pp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Pp.cpp; sourceTree = ""; }; + B398198629239F3F00A82429 /* PpContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PpContext.h; sourceTree = ""; }; + B398198729239F3F00A82429 /* PpTokens.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PpTokens.cpp; sourceTree = ""; }; + B398198829239F3F00A82429 /* PpContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PpContext.cpp; sourceTree = ""; }; + B398198929239F3F00A82429 /* PpScanner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PpScanner.cpp; sourceTree = ""; }; + B398198A29239F3F00A82429 /* ParseContextBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ParseContextBase.cpp; sourceTree = ""; }; + B398198B29239F3F00A82429 /* reflection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reflection.h; sourceTree = ""; }; + B398198C29239F3F00A82429 /* Scan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Scan.h; sourceTree = ""; }; + B398198E29239F3F00A82429 /* ShaderLang.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShaderLang.h; sourceTree = ""; }; + B398199029239F3F00A82429 /* CodeGen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CodeGen.cpp; sourceTree = ""; }; + B398199129239F3F00A82429 /* Link.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Link.cpp; sourceTree = ""; }; + B398199229239F3F00A82429 /* .appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .appveyor.yml; sourceTree = ""; }; + B398199429239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398199529239F3F00A82429 /* InitializeDll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InitializeDll.h; sourceTree = ""; }; + B398199629239F3F00A82429 /* InitializeDll.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = ""; }; + B398199729239F3F00A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398199829239F3F00A82429 /* known_good_khr.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = known_good_khr.json; sourceTree = ""; }; + B398199A29239F3F00A82429 /* glslang.gni */ = {isa = PBXFileReference; lastKnownFileType = text; path = glslang.gni; sourceTree = ""; }; + B398199B29239F3F00A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B398199C29239F3F00A82429 /* _config.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = _config.yml; sourceTree = ""; }; + B398199D29239F3F00A82429 /* .clang-format */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".clang-format"; sourceTree = ""; }; + B398199E29239F3F00A82429 /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B398199F29239F3F00A82429 /* BUILD.bazel */ = {isa = PBXFileReference; lastKnownFileType = text; path = BUILD.bazel; sourceTree = ""; }; + B39819A029239F3F00A82429 /* README-spirv-remap.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-spirv-remap.txt"; sourceTree = ""; }; + B39819A229239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39819A329239F3F00A82429 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B39819A429239F3F00A82429 /* make-revision */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "make-revision"; sourceTree = ""; }; + B39819A629239F3F00A82429 /* hlslParseables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hlslParseables.cpp; sourceTree = ""; }; + B39819A729239F3F00A82429 /* hlslTokenStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hlslTokenStream.cpp; sourceTree = ""; }; + B39819A829239F3F00A82429 /* pch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pch.h; sourceTree = ""; }; + B39819A929239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39819AA29239F3F00A82429 /* hlslParseables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslParseables.h; sourceTree = ""; }; + B39819AB29239F3F00A82429 /* hlslParseHelper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hlslParseHelper.cpp; sourceTree = ""; }; + B39819AC29239F3F00A82429 /* hlslAttributes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslAttributes.h; sourceTree = ""; }; + B39819AD29239F3F00A82429 /* hlslScanContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hlslScanContext.cpp; sourceTree = ""; }; + B39819AE29239F3F00A82429 /* hlslParseHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslParseHelper.h; sourceTree = ""; }; + B39819AF29239F3F00A82429 /* hlslOpMap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hlslOpMap.cpp; sourceTree = ""; }; + B39819B029239F3F00A82429 /* hlslScanContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslScanContext.h; sourceTree = ""; }; + B39819B129239F3F00A82429 /* hlslTokens.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslTokens.h; sourceTree = ""; }; + B39819B229239F3F00A82429 /* hlslAttributes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hlslAttributes.cpp; sourceTree = ""; }; + B39819B329239F3F00A82429 /* pch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pch.cpp; sourceTree = ""; }; + B39819B429239F3F00A82429 /* hlslOpMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslOpMap.h; sourceTree = ""; }; + B39819B529239F3F00A82429 /* hlslGrammar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hlslGrammar.cpp; sourceTree = ""; }; + B39819B629239F3F00A82429 /* hlslTokenStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslTokenStream.h; sourceTree = ""; }; + B39819B729239F3F00A82429 /* hlslGrammar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hlslGrammar.h; sourceTree = ""; }; + B39819B829239F3F00A82429 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B39819BB29239F3F00A82429 /* presubmit.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = presubmit.cfg; sourceTree = ""; }; + B39819BC29239F3F00A82429 /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B39819BD29239F3F00A82429 /* continuous.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = continuous.cfg; sourceTree = ""; }; + B39819BF29239F3F00A82429 /* presubmit.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = presubmit.cfg; sourceTree = ""; }; + B39819C029239F3F00A82429 /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; + B39819C129239F3F00A82429 /* continuous.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = continuous.cfg; sourceTree = ""; }; + B39819C329239F3F00A82429 /* presubmit.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = presubmit.cfg; sourceTree = ""; }; + B39819C429239F3F00A82429 /* build.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.bat; sourceTree = ""; }; + B39819C529239F3F00A82429 /* continuous.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = continuous.cfg; sourceTree = ""; }; + B39819C729239F3F00A82429 /* pch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pch.h; sourceTree = ""; }; + B39819C829239F3F00A82429 /* Remap.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Remap.FromFile.cpp; sourceTree = ""; }; + B39819C929239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39819CA29239F3F00A82429 /* Link.FromFile.Vk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Link.FromFile.Vk.cpp; sourceTree = ""; }; + B39819CB29239F3F00A82429 /* Link.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Link.FromFile.cpp; sourceTree = ""; }; + B39819CC29239F3F00A82429 /* Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; }; + B39819CD29239F3F00A82429 /* TestFixture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestFixture.cpp; sourceTree = ""; }; + B39819CE29239F3F00A82429 /* AST.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AST.FromFile.cpp; sourceTree = ""; }; + B39819CF29239F3F00A82429 /* Spv.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Spv.FromFile.cpp; sourceTree = ""; }; + B39819D029239F3F00A82429 /* Hlsl.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Hlsl.FromFile.cpp; sourceTree = ""; }; + B39819D129239F3F00A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B39819D229239F3F00A82429 /* pch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pch.cpp; sourceTree = ""; }; + B39819D329239F3F00A82429 /* BuiltInResource.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BuiltInResource.FromFile.cpp; sourceTree = ""; }; + B39819D429239F3F00A82429 /* Initializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Initializer.h; sourceTree = ""; }; + B39819D529239F3F00A82429 /* TestFixture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestFixture.h; sourceTree = ""; }; + B39819D629239F3F00A82429 /* Pp.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Pp.FromFile.cpp; sourceTree = ""; }; + B39819D729239F3F00A82429 /* Config.FromFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Config.FromFile.cpp; sourceTree = ""; }; + B39819D829239F3F00A82429 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B39819D929239F3F00A82429 /* Settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Settings.cpp; sourceTree = ""; }; + B39819DA29239F3F00A82429 /* HexFloat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HexFloat.cpp; sourceTree = ""; }; + B39819DC29239F3F00A82429 /* stb_image_write.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stb_image_write.h; sourceTree = ""; }; + B39819DD29239F3F00A82429 /* stb_image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stb_image.h; sourceTree = ""; }; + B39819DF29239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39819E129239F3F00A82429 /* make_nm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = make_nm.cpp; sourceTree = ""; }; + B39819E229239F3F00A82429 /* state.pptx */ = {isa = PBXFileReference; lastKnownFileType = file; path = state.pptx; sourceTree = ""; }; + B39819E329239F3F00A82429 /* test_nm.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = test_nm.sh; sourceTree = ""; }; + B39819E429239F3F00A82429 /* rip-label-imm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "rip-label-imm.cpp"; sourceTree = ""; }; + B39819E529239F3F00A82429 /* test_avx.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_avx.bat; sourceTree = ""; }; + B39819E629239F3F00A82429 /* jmp.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = jmp.vcproj; sourceTree = ""; }; + B39819E829239F3F00A82429 /* test.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = test.hpp; sourceTree = ""; }; + B39819E929239F3F00A82429 /* inttype.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = inttype.hpp; sourceTree = ""; }; + B39819EA29239F3F00A82429 /* misc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = misc.cpp; sourceTree = ""; }; + B39819EB29239F3F00A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B39819EC29239F3F00A82429 /* sf_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sf_test.cpp; sourceTree = ""; }; + B39819ED29239F3F00A82429 /* lib_min.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lib_min.cpp; sourceTree = ""; }; + B39819EE29239F3F00A82429 /* a.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = a.bat; sourceTree = ""; }; + B39819EF29239F3F00A82429 /* lib_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lib_test.cpp; sourceTree = ""; }; + B39819F029239F3F00A82429 /* test_mmx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_mmx.cpp; sourceTree = ""; }; + B39819F129239F3F00A82429 /* nm_frame.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nm_frame.cpp; sourceTree = ""; }; + B39819F229239F3F00A82429 /* bad_address.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bad_address.cpp; sourceTree = ""; }; + B39819F329239F3F00A82429 /* test_nm_all.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_nm_all.bat; sourceTree = ""; }; + B39819F429239F3F00A82429 /* jmp.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = jmp.sln; sourceTree = ""; }; + B39819F529239F3F00A82429 /* set_opt.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = set_opt.bat; sourceTree = ""; }; + B39819F629239F3F00A82429 /* lib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lib.h; sourceTree = ""; }; + B39819F729239F3F00A82429 /* noexception.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = noexception.cpp; sourceTree = ""; }; + B39819F829239F3F00A82429 /* mprotect_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mprotect_test.cpp; sourceTree = ""; }; + B39819F929239F3F00A82429 /* test_avx512.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_avx512.bat; sourceTree = ""; }; + B39819FA29239F3F00A82429 /* address.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = address.cpp; sourceTree = ""; }; + B39819FB29239F3F00A82429 /* test_jmp.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_jmp.bat; sourceTree = ""; }; + B39819FC29239F3F00A82429 /* test_avx_all.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_avx_all.bat; sourceTree = ""; }; + B39819FD29239F3F00A82429 /* test_address.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_address.bat; sourceTree = ""; }; + B39819FE29239F3F00A82429 /* test_address.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = test_address.sh; sourceTree = ""; }; + B39819FF29239F3F00A82429 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3981A0029239F3F00A82429 /* test_nm.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_nm.bat; sourceTree = ""; }; + B3981A0129239F3F00A82429 /* cvt_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cvt_test.cpp; sourceTree = ""; }; + B3981A0229239F3F00A82429 /* normalize_prefix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = normalize_prefix.cpp; sourceTree = ""; }; + B3981A0329239F3F00A82429 /* lib_run.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = lib_run.cpp; sourceTree = ""; }; + B3981A0429239F3F00A82429 /* test_all.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_all.bat; sourceTree = ""; }; + B3981A0529239F3F00A82429 /* test_misc.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_misc.bat; sourceTree = ""; }; + B3981A0629239F3F00A82429 /* test_avx.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = test_avx.sh; sourceTree = ""; }; + B3981A0729239F3F00A82429 /* test_avx512.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = test_avx512.sh; sourceTree = ""; }; + B3981A0829239F3F00A82429 /* Makefile.win */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.win; sourceTree = ""; }; + B3981A0929239F3F00A82429 /* jmp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = jmp.cpp; sourceTree = ""; }; + B3981A0A29239F3F00A82429 /* make_512.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = make_512.cpp; sourceTree = ""; }; + B3981A0C29239F3F00A82429 /* config.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.cmake.in; sourceTree = ""; }; + B3981A0D29239F3F00A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3981A0F29239F3F00A82429 /* gen_code.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gen_code.cpp; sourceTree = ""; }; + B3981A1029239F3F00A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3981A1129239F3F00A82429 /* b2hex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2hex.cpp; sourceTree = ""; }; + B3981A1229239F3F00A82429 /* avx_type.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = avx_type.hpp; sourceTree = ""; }; + B3981A1329239F3F00A82429 /* update.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = update.bat; sourceTree = ""; }; + B3981A1429239F3F00A82429 /* sortline.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sortline.cpp; sourceTree = ""; }; + B3981A1529239F3F00A82429 /* gen_avx512.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gen_avx512.cpp; sourceTree = ""; }; + B3981A1629239F3F00A82429 /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B3981A1829239F3F00A82429 /* xbyak_mnemonic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_mnemonic.h; sourceTree = ""; }; + B3981A1929239F3F00A82429 /* xbyak_bin2hex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_bin2hex.h; sourceTree = ""; }; + B3981A1A29239F3F00A82429 /* xbyak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak.h; sourceTree = ""; }; + B3981A1B29239F3F00A82429 /* xbyak_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_util.h; sourceTree = ""; }; + B3981A1C29239F3F00A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3981A1F29239F3F00A82429 /* main.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = main.yml; sourceTree = ""; }; + B3981A2129239F3F00A82429 /* test0.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = test0.vcxproj; sourceTree = ""; }; + B3981A2229239F3F00A82429 /* stackframe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackframe.cpp; sourceTree = ""; }; + B3981A2329239F3F00A82429 /* toyvm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = toyvm.cpp; sourceTree = ""; }; + B3981A2429239F3F00A82429 /* bf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bf.cpp; sourceTree = ""; }; + B3981A2529239F3F00A82429 /* profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cpp; sourceTree = ""; }; + B3981A2629239F3F00A82429 /* protect-re.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "protect-re.cpp"; sourceTree = ""; }; + B3981A2729239F3F00A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3981A2829239F3F00A82429 /* calc2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = calc2.cpp; sourceTree = ""; }; + B3981A2929239F3F00A82429 /* echo.bf */ = {isa = PBXFileReference; lastKnownFileType = text; path = echo.bf; sourceTree = ""; }; + B3981A2A29239F3F00A82429 /* test_util.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = test_util.vcxproj; sourceTree = ""; }; + B3981A2B29239F3F00A82429 /* quantize.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = quantize.vcxproj; sourceTree = ""; }; + B3981A2C29239F3F00A82429 /* toyvm.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = toyvm.vcxproj; sourceTree = ""; }; + B3981A2D29239F3F00A82429 /* static_buf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = static_buf.cpp; sourceTree = ""; }; + B3981A2E29239F3F00A82429 /* bf.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = bf.vcxproj; sourceTree = ""; }; + B3981A2F29239F3F00A82429 /* calc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = calc.cpp; sourceTree = ""; }; + B3981A3029239F3F00A82429 /* test_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_util.cpp; sourceTree = ""; }; + B3981A3129239F3F00A82429 /* calc.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = calc.vcxproj; sourceTree = ""; }; + B3981A3229239F3F00A82429 /* hello.bf */ = {isa = PBXFileReference; lastKnownFileType = text; path = hello.bf; sourceTree = ""; }; + B3981A3329239F3F00A82429 /* test0.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test0.cpp; sourceTree = ""; }; + B3981A3429239F3F00A82429 /* quantize.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = quantize.cpp; sourceTree = ""; }; + B3981A3529239F3F00A82429 /* jmp_table.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = jmp_table.cpp; sourceTree = ""; }; + B3981A3629239F3F00A82429 /* fizzbuzz.bf */ = {isa = PBXFileReference; lastKnownFileType = text; path = fizzbuzz.bf; sourceTree = ""; }; + B3981A3729239F3F00A82429 /* memfunc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memfunc.cpp; sourceTree = ""; }; + B3981A3829239F3F00A82429 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3981A3929239F3F00A82429 /* COPYRIGHT */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYRIGHT; sourceTree = ""; }; + B3981A3A29239F3F00A82429 /* xbyak.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = xbyak.sln; sourceTree = ""; }; + B3981A3C29239F3F00A82429 /* gtest-matchers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-matchers.h"; sourceTree = ""; }; + B3981A3D29239F3F00A82429 /* gtest-death-test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test.h"; sourceTree = ""; }; + B3981A3E29239F3F00A82429 /* gtest-spi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-spi.h"; sourceTree = ""; }; + B3981A4029239F3F00A82429 /* gtest-string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-string.h"; sourceTree = ""; }; + B3981A4129239F3F00A82429 /* gtest-death-test-internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test-internal.h"; sourceTree = ""; }; + B3981A4229239F3F00A82429 /* gtest-port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-port.h"; sourceTree = ""; }; + B3981A4329239F3F00A82429 /* gtest-port-arch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-port-arch.h"; sourceTree = ""; }; + B3981A4429239F3F00A82429 /* gtest-internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-internal.h"; sourceTree = ""; }; + B3981A4529239F3F00A82429 /* gtest-param-util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util.h"; sourceTree = ""; }; + B3981A4629239F3F00A82429 /* gtest-type-util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-type-util.h"; sourceTree = ""; }; + B3981A4729239F3F00A82429 /* gtest-filepath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-filepath.h"; sourceTree = ""; }; + B3981A4929239F3F00A82429 /* gtest-port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-port.h"; sourceTree = ""; }; + B3981A4A29239F3F00A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3981A4B29239F3F00A82429 /* gtest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtest.h; sourceTree = ""; }; + B3981A4C29239F3F00A82429 /* gtest-printers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-printers.h"; sourceTree = ""; }; + B3981A4D29239F3F00A82429 /* gtest-message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-message.h"; sourceTree = ""; }; + B3981A4E29239F3F00A82429 /* gtest-param-test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-param-test.h"; sourceTree = ""; }; + B3981A4F29239F3F00A82429 /* gtest-typed-test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-typed-test.h"; sourceTree = ""; }; + B3981A5029239F3F00A82429 /* gtest_pred_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtest_pred_impl.h; sourceTree = ""; }; + B3981A5129239F3F00A82429 /* gtest_prod.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtest_prod.h; sourceTree = ""; }; + B3981A5229239F3F00A82429 /* gtest-test-part.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-test-part.h"; sourceTree = ""; }; + B3981A5329239F3F00A82429 /* gtest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtest.h; sourceTree = ""; }; + B3981A5429239F3F00A82429 /* gtest-printers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-printers.h"; sourceTree = ""; }; + B3981A5629239F3F00A82429 /* gtest-test-part.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-test-part.cc"; sourceTree = ""; }; + B3981A5729239F3F00A82429 /* gtest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtest.cc; sourceTree = ""; }; + B3981A5829239F3F00A82429 /* gtest_main.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_main.cc; sourceTree = ""; }; + B3981A5929239F3F00A82429 /* gtest-internal-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtest-internal-inl.h"; sourceTree = ""; }; + B3981A5A29239F3F00A82429 /* gtest-death-test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-death-test.cc"; sourceTree = ""; }; + B3981A5B29239F3F00A82429 /* gtest-port.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-port.cc"; sourceTree = ""; }; + B3981A5C29239F3F00A82429 /* gtest-printers.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-printers.cc"; sourceTree = ""; }; + B3981A5D29239F3F00A82429 /* gtest-typed-test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-typed-test.cc"; sourceTree = ""; }; + B3981A5E29239F3F00A82429 /* gtest-all.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-all.cc"; sourceTree = ""; }; + B3981A5F29239F3F00A82429 /* gtest-filepath.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-filepath.cc"; sourceTree = ""; }; + B3981A6029239F3F00A82429 /* gtest-matchers.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-matchers.cc"; sourceTree = ""; }; + B3981A6229239F3F00A82429 /* WhatsNew.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = WhatsNew.txt; sourceTree = ""; }; + B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = SDLTest.xcodeproj; sourceTree = ""; }; + B3981A6929239F3F00A82429 /* TestDropFile-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TestDropFile-Info.plist"; sourceTree = ""; }; + B3981A6B29239F3F00A82429 /* Doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile; sourceTree = ""; }; + B3981A6D29239F3F00A82429 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = SDL.xcodeproj; sourceTree = ""; }; + B3981A7229239F3F00A82429 /* ReadMe.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ReadMe.txt; sourceTree = ""; }; + B3981A7329239F3F00A82429 /* SDL_DS_Store */ = {isa = PBXFileReference; lastKnownFileType = file; path = SDL_DS_Store; sourceTree = ""; }; + B3981A7429239F3F00A82429 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; + B3981A7529239F3F00A82429 /* SDL.info */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL.info; sourceTree = ""; }; + B3981A7629239F3F00A82429 /* sdl_logo.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = sdl_logo.pdf; sourceTree = ""; }; + B3981A7829239F3F00A82429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3981A7929239F3F00A82429 /* Info-Framework.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Framework.plist"; sourceTree = ""; }; + B3981A7A29239F3F00A82429 /* COPYING.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.txt; sourceTree = ""; }; + B3981A7D29239F3F00A82429 /* proguard-rules.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = "proguard-rules.pro"; sourceTree = ""; }; + B3981A7E29239F3F00A82429 /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B3981A8029239F3F00A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3981A8129239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3981A8229239F3F00A82429 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3981A8429239F3F00A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3981A8529239F3F00A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3981A8A29239F3F00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981A8C29239F3F00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981A8E29239F3F00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981A9029239F3F00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981A9229239F3F00A82429 /* colors.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = colors.xml; sourceTree = ""; }; + B3981A9329239F3F00A82429 /* styles.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = styles.xml; sourceTree = ""; }; + B3981A9429239F3F00A82429 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B3981A9629239F4000A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981A9729239F4000A82429 /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; + B3981A9C29239F4000A82429 /* SDLAudioManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLAudioManager.java; sourceTree = ""; }; + B3981A9D29239F4000A82429 /* SDLControllerManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLControllerManager.java; sourceTree = ""; }; + B3981A9E29239F4000A82429 /* HIDDevice.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDevice.java; sourceTree = ""; }; + B3981A9F29239F4000A82429 /* HIDDeviceBLESteamController.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceBLESteamController.java; sourceTree = ""; }; + B3981AA029239F4000A82429 /* HIDDeviceUSB.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceUSB.java; sourceTree = ""; }; + B3981AA129239F4000A82429 /* SDL.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDL.java; sourceTree = ""; }; + B3981AA229239F4000A82429 /* SDLActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLActivity.java; sourceTree = ""; }; + B3981AA329239F4000A82429 /* HIDDeviceManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceManager.java; sourceTree = ""; }; + B3981AA629239F4000A82429 /* gradle-wrapper.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "gradle-wrapper.jar"; sourceTree = ""; }; + B3981AA729239F4000A82429 /* gradle-wrapper.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gradle-wrapper.properties"; sourceTree = ""; }; + B3981AA829239F4000A82429 /* gradlew */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew; sourceTree = ""; }; + B3981AA929239F4000A82429 /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B3981AAA29239F4000A82429 /* gradle.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradle.properties; sourceTree = ""; }; + B3981AAB29239F4000A82429 /* gradlew.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew.bat; sourceTree = ""; }; + B3981AAC29239F4000A82429 /* settings.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = settings.gradle; sourceTree = ""; }; + B3981AAE29239F4000A82429 /* SDL2-WinRT.targets */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL2-WinRT.targets"; sourceTree = ""; }; + B3981AAF29239F4000A82429 /* SDL2-WinRT.nuspec */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL2-WinRT.nuspec"; sourceTree = ""; }; + B3981AB229239F4000A82429 /* Package.appxmanifest */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Package.appxmanifest; sourceTree = ""; }; + B3981AB329239F4000A82429 /* loopwave_VS2012_TemporaryKey.pfx */ = {isa = PBXFileReference; lastKnownFileType = file; path = loopwave_VS2012_TemporaryKey.pfx; sourceTree = ""; }; + B3981AB429239F4000A82429 /* loopwave_VS2012.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = loopwave_VS2012.vcxproj; sourceTree = ""; }; + B3981AB629239F4000A82429 /* SplashScreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SplashScreen.png; sourceTree = ""; }; + B3981AB729239F4000A82429 /* StoreLogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = StoreLogo.png; sourceTree = ""; }; + B3981AB829239F4000A82429 /* Logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Logo.png; sourceTree = ""; }; + B3981AB929239F4000A82429 /* SmallLogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SmallLogo.png; sourceTree = ""; }; + B3981ABB29239F4000A82429 /* Package.appxmanifest */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Package.appxmanifest; sourceTree = ""; }; + B3981ABC29239F4000A82429 /* testthread_VS2012_TemporaryKey.pfx */ = {isa = PBXFileReference; lastKnownFileType = file; path = testthread_VS2012_TemporaryKey.pfx; sourceTree = ""; }; + B3981ABE29239F4000A82429 /* SplashScreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SplashScreen.png; sourceTree = ""; }; + B3981ABF29239F4000A82429 /* StoreLogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = StoreLogo.png; sourceTree = ""; }; + B3981AC029239F4000A82429 /* Logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Logo.png; sourceTree = ""; }; + B3981AC129239F4000A82429 /* SmallLogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SmallLogo.png; sourceTree = ""; }; + B3981AC229239F4000A82429 /* testthread_VS2012.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testthread_VS2012.vcxproj; sourceTree = ""; }; + B3981AC429239F4000A82429 /* SDL-UWP.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = "SDL-UWP.sln"; sourceTree = ""; }; + B3981AC529239F4000A82429 /* SDL-UWP.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL-UWP.vcxproj.filters"; sourceTree = ""; }; + B3981AC629239F4000A82429 /* SDL-UWP.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL-UWP.vcxproj"; sourceTree = ""; }; + B3981AC729239F4000A82429 /* SDL2main-WinRT-NonXAML.targets */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL2main-WinRT-NonXAML.targets"; sourceTree = ""; }; + B3981AC829239F4000A82429 /* SDL2main-WinRT-NonXAML.nuspec */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL2main-WinRT-NonXAML.nuspec"; sourceTree = ""; }; + B3981ACA29239F4000A82429 /* SDL-WinRT81.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = "SDL-WinRT81.sln"; sourceTree = ""; }; + B3981ACB29239F4000A82429 /* SDL-WinRT81.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL-WinRT81.vcxproj"; sourceTree = ""; }; + B3981ACC29239F4000A82429 /* SDL-WinRT81.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL-WinRT81.vcxproj.filters"; sourceTree = ""; }; + B3981ACE29239F4000A82429 /* SDL-WinPhone81.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL-WinPhone81.vcxproj.filters"; sourceTree = ""; }; + B3981ACF29239F4000A82429 /* SDL-WinPhone81.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = "SDL-WinPhone81.sln"; sourceTree = ""; }; + B3981AD029239F4000A82429 /* SDL-WinPhone81.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "SDL-WinPhone81.vcxproj"; sourceTree = ""; }; + B3981AD129239F4000A82429 /* VisualC.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = VisualC.html; sourceTree = ""; }; + B3981AD229239F4000A82429 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3981AD329239F4000A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3981AD529239F4000A82429 /* xdg-decoration-unstable-v1.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "xdg-decoration-unstable-v1.xml"; sourceTree = ""; }; + B3981AD629239F4000A82429 /* xdg-shell.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "xdg-shell.xml"; sourceTree = ""; }; + B3981AD729239F4000A82429 /* wayland.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = wayland.xml; sourceTree = ""; }; + B3981AD829239F4000A82429 /* keyboard-shortcuts-inhibit-unstable-v1.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "keyboard-shortcuts-inhibit-unstable-v1.xml"; sourceTree = ""; }; + B3981AD929239F4000A82429 /* xdg-shell-unstable-v6.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "xdg-shell-unstable-v6.xml"; sourceTree = ""; }; + B3981ADA29239F4000A82429 /* org-kde-kwin-server-decoration-manager.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "org-kde-kwin-server-decoration-manager.xml"; sourceTree = ""; }; + B3981ADB29239F4000A82429 /* relative-pointer-unstable-v1.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "relative-pointer-unstable-v1.xml"; sourceTree = ""; }; + B3981ADC29239F4000A82429 /* pointer-constraints-unstable-v1.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "pointer-constraints-unstable-v1.xml"; sourceTree = ""; }; + B3981ADD29239F4000A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3981ADE29239F4000A82429 /* TODO.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO.txt; sourceTree = ""; }; + B3981AE029239F4000A82429 /* testscale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testscale.c; sourceTree = ""; }; + B3981AE129239F4000A82429 /* testpower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testpower.c; sourceTree = ""; }; + B3981AE229239F4000A82429 /* testhaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testhaptic.c; sourceTree = ""; }; + B3981AE329239F4000A82429 /* testhotplug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testhotplug.c; sourceTree = ""; }; + B3981AE429239F4000A82429 /* testautomation_rwops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_rwops.c; sourceTree = ""; }; + B3981AE529239F4000A82429 /* acinclude.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = acinclude.m4; sourceTree = ""; }; + B3981AE629239F4000A82429 /* testyuv_cvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testyuv_cvt.c; sourceTree = ""; }; + B3981AE729239F4000A82429 /* loopwavequeue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loopwavequeue.c; sourceTree = ""; }; + B3981AE829239F4000A82429 /* testplatform.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testplatform.c; sourceTree = ""; }; + B3981AE929239F4000A82429 /* testrelative.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrelative.c; sourceTree = ""; }; + B3981AEA29239F4000A82429 /* testsem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testsem.c; sourceTree = ""; }; + B3981AEB29239F4000A82429 /* testerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testerror.c; sourceTree = ""; }; + B3981AEC29239F4000A82429 /* testrendercopyex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrendercopyex.c; sourceTree = ""; }; + B3981AED29239F4000A82429 /* testmessage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testmessage.c; sourceTree = ""; }; + B3981AEE29239F4000A82429 /* testautomation_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_video.c; sourceTree = ""; }; + B3981AEF29239F4000A82429 /* sample.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = sample.bmp; sourceTree = ""; }; + B3981AF029239F4000A82429 /* testautomation_syswm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_syswm.c; sourceTree = ""; }; + B3981AF129239F4000A82429 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3981AF229239F4000A82429 /* testgles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testgles.c; sourceTree = ""; }; + B3981AF329239F4000A82429 /* testaudiohotplug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testaudiohotplug.c; sourceTree = ""; }; + B3981AF429239F4000A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3981AF529239F4000A82429 /* testautomation_timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_timer.c; sourceTree = ""; }; + B3981AF629239F4000A82429 /* controllermap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = controllermap.c; sourceTree = ""; }; + B3981AF729239F4000A82429 /* testautomation_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_events.c; sourceTree = ""; }; + B3981AF829239F4000A82429 /* testautomation_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_mouse.c; sourceTree = ""; }; + B3981AF929239F4000A82429 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3981AFA29239F4000A82429 /* testdropfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testdropfile.c; sourceTree = ""; }; + B3981AFB29239F4000A82429 /* testyuv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testyuv.c; sourceTree = ""; }; + B3981AFC29239F4000A82429 /* testautomation_hints.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_hints.c; sourceTree = ""; }; + B3981AFD29239F4000A82429 /* testgles2_sdf_img_normal.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = testgles2_sdf_img_normal.bmp; sourceTree = ""; }; + B3981AFE29239F4000A82429 /* testgamecontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testgamecontroller.c; sourceTree = ""; }; + B3981AFF29239F4000A82429 /* testautomation_clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_clipboard.c; sourceTree = ""; }; + B3981B0029239F4000A82429 /* loopwave.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loopwave.c; sourceTree = ""; }; + B3981B0129239F4000A82429 /* testgl2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testgl2.c; sourceTree = ""; }; + B3981B0229239F4000A82429 /* testautomation_rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_rect.c; sourceTree = ""; }; + B3981B0329239F4000A82429 /* testmultiaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testmultiaudio.c; sourceTree = ""; }; + B3981B0429239F4000A82429 /* testvulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testvulkan.c; sourceTree = ""; }; + B3981B0529239F4000A82429 /* button.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = button.bmp; sourceTree = ""; }; + B3981B0629239F4000A82429 /* testaudiocapture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testaudiocapture.c; sourceTree = ""; }; + B3981B0729239F4000A82429 /* testnativeos2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testnativeos2.c; sourceTree = ""; }; + B3981B0829239F4000A82429 /* testintersections.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testintersections.c; sourceTree = ""; }; + B3981B0929239F4000A82429 /* axis.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = axis.bmp; sourceTree = ""; }; + B3981B0A29239F4000A82429 /* testwm2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testwm2.c; sourceTree = ""; }; + B3981B0B29239F4000A82429 /* testver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testver.c; sourceTree = ""; }; + B3981B0C29239F4000A82429 /* testsensor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testsensor.c; sourceTree = ""; }; + B3981B0D29239F4000A82429 /* testshape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testshape.c; sourceTree = ""; }; + B3981B0F29239F4000A82429 /* trollface_24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = trollface_24.bmp; sourceTree = ""; }; + B3981B1029239F4000A82429 /* p02_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p02_shape32alpha.bmp; sourceTree = ""; }; + B3981B1129239F4000A82429 /* p02_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p02_shape8.bmp; sourceTree = ""; }; + B3981B1229239F4000A82429 /* p06_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p06_shape24.bmp; sourceTree = ""; }; + B3981B1329239F4000A82429 /* p09_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p09_shape32alpha.bmp; sourceTree = ""; }; + B3981B1429239F4000A82429 /* p13_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p13_shape8.bmp; sourceTree = ""; }; + B3981B1529239F4000A82429 /* p13_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p13_shape24.bmp; sourceTree = ""; }; + B3981B1629239F4000A82429 /* p04_shape1.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p04_shape1.bmp; sourceTree = ""; }; + B3981B1729239F4000A82429 /* p16_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p16_shape24.bmp; sourceTree = ""; }; + B3981B1829239F4000A82429 /* p16_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p16_shape8.bmp; sourceTree = ""; }; + B3981B1929239F4000A82429 /* p07_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p07_shape8.bmp; sourceTree = ""; }; + B3981B1A29239F4000A82429 /* p03_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p03_shape24.bmp; sourceTree = ""; }; + B3981B1B29239F4000A82429 /* p06_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p06_shape32alpha.bmp; sourceTree = ""; }; + B3981B1C29239F4000A82429 /* p10_shape1.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p10_shape1.bmp; sourceTree = ""; }; + B3981B1D29239F4000A82429 /* trollface_32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = trollface_32alpha.bmp; sourceTree = ""; }; + B3981B1E29239F4000A82429 /* p09_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p09_shape24.bmp; sourceTree = ""; }; + B3981B1F29239F4000A82429 /* p15_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p15_shape24.bmp; sourceTree = ""; }; + B3981B2029239F4000A82429 /* p11_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p11_shape8.bmp; sourceTree = ""; }; + B3981B2129239F4000A82429 /* p08_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p08_shape32alpha.bmp; sourceTree = ""; }; + B3981B2229239F4000A82429 /* p08_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p08_shape8.bmp; sourceTree = ""; }; + B3981B2329239F4000A82429 /* p13_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p13_shape32alpha.bmp; sourceTree = ""; }; + B3981B2429239F4000A82429 /* p10_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p10_shape24.bmp; sourceTree = ""; }; + B3981B2529239F4000A82429 /* p14_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p14_shape8.bmp; sourceTree = ""; }; + B3981B2629239F4000A82429 /* p05_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p05_shape8.bmp; sourceTree = ""; }; + B3981B2729239F4000A82429 /* p07_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p07_shape32alpha.bmp; sourceTree = ""; }; + B3981B2829239F4000A82429 /* p02_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p02_shape24.bmp; sourceTree = ""; }; + B3981B2929239F4000A82429 /* p06_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p06_shape8.bmp; sourceTree = ""; }; + B3981B2A29239F4000A82429 /* p04_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p04_shape32alpha.bmp; sourceTree = ""; }; + B3981B2B29239F4000A82429 /* p12_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p12_shape24.bmp; sourceTree = ""; }; + B3981B2C29239F4000A82429 /* p03_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p03_shape8.bmp; sourceTree = ""; }; + B3981B2D29239F4000A82429 /* p07_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p07_shape24.bmp; sourceTree = ""; }; + B3981B2E29239F4000A82429 /* p12_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p12_shape8.bmp; sourceTree = ""; }; + B3981B2F29239F4000A82429 /* p10_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p10_shape32alpha.bmp; sourceTree = ""; }; + B3981B3029239F4000A82429 /* p09_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p09_shape8.bmp; sourceTree = ""; }; + B3981B3129239F4000A82429 /* p04_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p04_shape24.bmp; sourceTree = ""; }; + B3981B3229239F4000A82429 /* p15_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p15_shape8.bmp; sourceTree = ""; }; + B3981B3329239F4000A82429 /* p15_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p15_shape32alpha.bmp; sourceTree = ""; }; + B3981B3429239F4000A82429 /* p04_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p04_shape8.bmp; sourceTree = ""; }; + B3981B3529239F4000A82429 /* p01_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p01_shape32alpha.bmp; sourceTree = ""; }; + B3981B3629239F4000A82429 /* p11_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p11_shape24.bmp; sourceTree = ""; }; + B3981B3729239F4000A82429 /* p01_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p01_shape8.bmp; sourceTree = ""; }; + B3981B3829239F4000A82429 /* p14_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p14_shape24.bmp; sourceTree = ""; }; + B3981B3929239F4000A82429 /* p16_shape1.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p16_shape1.bmp; sourceTree = ""; }; + B3981B3A29239F4000A82429 /* p08_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p08_shape24.bmp; sourceTree = ""; }; + B3981B3B29239F4000A82429 /* p06_shape1alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p06_shape1alpha.bmp; sourceTree = ""; }; + B3981B3C29239F4000A82429 /* p11_shape32alpha.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p11_shape32alpha.bmp; sourceTree = ""; }; + B3981B3D29239F4000A82429 /* p10_shape8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p10_shape8.bmp; sourceTree = ""; }; + B3981B3E29239F4000A82429 /* p01_shape24.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = p01_shape24.bmp; sourceTree = ""; }; + B3981B3F29239F4000A82429 /* testshader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testshader.c; sourceTree = ""; }; + B3981B4029239F4000A82429 /* testdisplayinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testdisplayinfo.c; sourceTree = ""; }; + B3981B4129239F4000A82429 /* utf8.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = utf8.txt; sourceTree = ""; }; + B3981B4229239F4000A82429 /* checkkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = checkkeys.c; sourceTree = ""; }; + B3981B4329239F4000A82429 /* picture.xbm */ = {isa = PBXFileReference; lastKnownFileType = text; path = picture.xbm; sourceTree = ""; }; + B3981B4429239F4000A82429 /* testlocale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testlocale.c; sourceTree = ""; }; + B3981B4529239F4000A82429 /* testautomation_stdlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_stdlib.c; sourceTree = ""; }; + B3981B4629239F4000A82429 /* testnative.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testnative.c; sourceTree = ""; }; + B3981B4729239F4000A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3981B4829239F4000A82429 /* testloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testloadso.c; sourceTree = ""; }; + B3981B4929239F4000A82429 /* testfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testfile.c; sourceTree = ""; }; + B3981B4A29239F4000A82429 /* Makefile.os2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.os2; sourceTree = ""; }; + B3981B4B29239F4000A82429 /* testiconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testiconv.c; sourceTree = ""; }; + B3981B4C29239F4000A82429 /* testspriteminimal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testspriteminimal.c; sourceTree = ""; }; + B3981B4D29239F4000A82429 /* testautomation_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_surface.c; sourceTree = ""; }; + B3981B4E29239F4000A82429 /* testyuv_cvt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = testyuv_cvt.h; sourceTree = ""; }; + B3981B4F29239F4000A82429 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3981B5029239F4000A82429 /* gcc-fat.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "gcc-fat.sh"; sourceTree = ""; }; + B3981B5129239F4000A82429 /* testautomation_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_render.c; sourceTree = ""; }; + B3981B5229239F4000A82429 /* testtimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testtimer.c; sourceTree = ""; }; + B3981B5329239F4000A82429 /* testurl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testurl.c; sourceTree = ""; }; + B3981B5429239F4000A82429 /* testnativecocoa.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = testnativecocoa.m; sourceTree = ""; }; + B3981B5629239F4000A82429 /* joystick-pre.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "joystick-pre.js"; sourceTree = ""; }; + B3981B5729239F4000A82429 /* testautomation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation.c; sourceTree = ""; }; + B3981B5829239F4000A82429 /* testautomation_suites.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = testautomation_suites.h; sourceTree = ""; }; + B3981B5929239F4000A82429 /* testgesture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testgesture.c; sourceTree = ""; }; + B3981B5A29239F4000A82429 /* testlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testlock.c; sourceTree = ""; }; + B3981B5B29239F4000A82429 /* torturethread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = torturethread.c; sourceTree = ""; }; + B3981B5C29239F4000A82429 /* testgles2_sdf_img_sdf.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = testgles2_sdf_img_sdf.bmp; sourceTree = ""; }; + B3981B5D29239F4000A82429 /* testviewport.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testviewport.c; sourceTree = ""; }; + B3981B5F29239F4000A82429 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + B3981B6029239F4000A82429 /* background.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = background.js; sourceTree = ""; }; + B3981B6129239F4000A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3981B6229239F4000A82429 /* manifest.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = manifest.json; sourceTree = ""; }; + B3981B6329239F4000A82429 /* common.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = common.js; sourceTree = ""; }; + B3981B6429239F4000A82429 /* testnativex11.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testnativex11.c; sourceTree = ""; }; + B3981B6529239F4000A82429 /* testhittesting.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testhittesting.c; sourceTree = ""; }; + B3981B6629239F4000A82429 /* testautomation_platform.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_platform.c; sourceTree = ""; }; + B3981B6729239F4000A82429 /* relative_mode.markdown */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = relative_mode.markdown; sourceTree = ""; }; + B3981B6829239F4000A82429 /* testjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testjoystick.c; sourceTree = ""; }; + B3981B6929239F4000A82429 /* testatomic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testatomic.c; sourceTree = ""; }; + B3981B6A29239F4000A82429 /* teststreaming.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = teststreaming.c; sourceTree = ""; }; + B3981B6B29239F4000A82429 /* testrumble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrumble.c; sourceTree = ""; }; + B3981B6C29239F4000A82429 /* testautomation_sdltest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_sdltest.c; sourceTree = ""; }; + B3981B6D29239F4000A82429 /* testcustomcursor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testcustomcursor.c; sourceTree = ""; }; + B3981B6E29239F4000A82429 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = icon.bmp; sourceTree = ""; }; + B3981B6F29239F4000A82429 /* controllermap.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = controllermap.bmp; sourceTree = ""; }; + B3981B7029239F4000A82429 /* testrendertarget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrendertarget.c; sourceTree = ""; }; + B3981B7129239F4000A82429 /* testaudioinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testaudioinfo.c; sourceTree = ""; }; + B3981B7229239F4000A82429 /* testyuv.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = testyuv.bmp; sourceTree = ""; }; + B3981B7329239F4000A82429 /* testautomation_pixels.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_pixels.c; sourceTree = ""; }; + B3981B7429239F4000A82429 /* testnativew32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testnativew32.c; sourceTree = ""; }; + B3981B7529239F4000A82429 /* testkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testkeys.c; sourceTree = ""; }; + B3981B7629239F4000A82429 /* testoffscreen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testoffscreen.c; sourceTree = ""; }; + B3981B7729239F4000A82429 /* testautomation_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_main.c; sourceTree = ""; }; + B3981B7829239F4000A82429 /* testthread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testthread.c; sourceTree = ""; }; + B3981B7929239F4000A82429 /* controllermap_back.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = controllermap_back.bmp; sourceTree = ""; }; + B3981B7A29239F4000A82429 /* testautomation_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_audio.c; sourceTree = ""; }; + B3981B7B29239F4000A82429 /* testevdev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testevdev.c; sourceTree = ""; }; + B3981B7C29239F4000A82429 /* testautomation_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testautomation_keyboard.c; sourceTree = ""; }; + B3981B7D29239F4000A82429 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3981B7E29239F4000A82429 /* testsprite2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testsprite2.c; sourceTree = ""; }; + B3981B7F29239F4000A82429 /* testnative.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = testnative.h; sourceTree = ""; }; + B3981B8029239F4000A82429 /* sample.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = sample.wav; sourceTree = ""; }; + B3981B8129239F4000A82429 /* testfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testfilesystem.c; sourceTree = ""; }; + B3981B8229239F4000A82429 /* testdraw2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testdraw2.c; sourceTree = ""; }; + B3981B8329239F4000A82429 /* testresample.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testresample.c; sourceTree = ""; }; + B3981B8429239F4000A82429 /* testqsort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testqsort.c; sourceTree = ""; }; + B3981B8529239F4000A82429 /* moose.dat */ = {isa = PBXFileReference; lastKnownFileType = file; path = moose.dat; sourceTree = ""; }; + B3981B8629239F4000A82429 /* testgles2_sdf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testgles2_sdf.c; sourceTree = ""; }; + B3981B8729239F4000A82429 /* testime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testime.c; sourceTree = ""; }; + B3981B8829239F4000A82429 /* testbounds.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testbounds.c; sourceTree = ""; }; + B3981B8929239F4000A82429 /* autogen.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = autogen.sh; sourceTree = ""; }; + B3981B8A29239F4000A82429 /* testgles2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testgles2.c; sourceTree = ""; }; + B3981B8B29239F4000A82429 /* testdrawchessboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testdrawchessboard.c; sourceTree = ""; }; + B3981B8C29239F4000A82429 /* testoverlay2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testoverlay2.c; sourceTree = ""; }; + B3981B8E29239F4000A82429 /* compat */ = {isa = PBXFileReference; lastKnownFileType = text; path = compat; sourceTree = ""; }; + B3981B8F29239F4000A82429 /* changelog */ = {isa = PBXFileReference; lastKnownFileType = text; path = changelog; sourceTree = ""; }; + B3981B9029239F4000A82429 /* sdl2-config.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = "sdl2-config.1"; sourceTree = ""; }; + B3981B9229239F4000A82429 /* format */ = {isa = PBXFileReference; lastKnownFileType = text; path = format; sourceTree = ""; }; + B3981B9329239F4000A82429 /* docs */ = {isa = PBXFileReference; lastKnownFileType = text; path = docs; sourceTree = ""; }; + B3981B9429239F4000A82429 /* rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = rules; sourceTree = ""; }; + B3981B9529239F4000A82429 /* watch */ = {isa = PBXFileReference; lastKnownFileType = text; path = watch; sourceTree = ""; }; + B3981B9629239F4000A82429 /* copyright */ = {isa = PBXFileReference; lastKnownFileType = text; path = copyright; sourceTree = ""; }; + B3981B9729239F4000A82429 /* libsdl2-dev.install */ = {isa = PBXFileReference; lastKnownFileType = text; path = "libsdl2-dev.install"; sourceTree = ""; }; + B3981B9829239F4000A82429 /* libsdl2-dev.manpages */ = {isa = PBXFileReference; lastKnownFileType = text; path = "libsdl2-dev.manpages"; sourceTree = ""; }; + B3981B9929239F4000A82429 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; + B3981B9A29239F4000A82429 /* libsdl2.install */ = {isa = PBXFileReference; lastKnownFileType = text; path = libsdl2.install; sourceTree = ""; }; + B3981B9C29239F4000A82429 /* sdlchecks.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdlchecks.cmake; sourceTree = ""; }; + B3981B9D29239F4000A82429 /* macros.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = macros.cmake; sourceTree = ""; }; + B3981B9E29239F4000A82429 /* sdl2-config.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "sdl2-config.cmake.in"; sourceTree = ""; }; + B3981B9F29239F4000A82429 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3981BA029239F4000A82429 /* cmake_uninstall.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = cmake_uninstall.cmake.in; sourceTree = ""; }; + B3981BA129239F4000A82429 /* README-SDL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-SDL.txt"; sourceTree = ""; }; + B3981BA229239F4000A82429 /* .hgignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .hgignore; sourceTree = ""; }; + B3981BA429239F4000A82429 /* ltversion.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltversion.m4; sourceTree = ""; }; + B3981BA529239F4000A82429 /* ax_gcc_x86_cpuid.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_gcc_x86_cpuid.m4; sourceTree = ""; }; + B3981BA629239F4000A82429 /* esd.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = esd.m4; sourceTree = ""; }; + B3981BA729239F4000A82429 /* pkg.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = pkg.m4; sourceTree = ""; }; + B3981BA829239F4000A82429 /* libtool.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = libtool.m4; sourceTree = ""; }; + B3981BA929239F4000A82429 /* ltoptions.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltoptions.m4; sourceTree = ""; }; + B3981BAA29239F4000A82429 /* ac_check_define.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ac_check_define.m4; sourceTree = ""; }; + B3981BAB29239F4000A82429 /* alsa.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = alsa.m4; sourceTree = ""; }; + B3981BAC29239F4000A82429 /* ltsugar.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltsugar.m4; sourceTree = ""; }; + B3981BAD29239F4000A82429 /* ax_check_compiler_flags.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_check_compiler_flags.m4; sourceTree = ""; }; + B3981BAE29239F4000A82429 /* ax_gcc_archflag.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_gcc_archflag.m4; sourceTree = ""; }; + B3981BAF29239F4000A82429 /* lt~obsolete.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lt~obsolete.m4"; sourceTree = ""; }; + B3981BB129239F4000A82429 /* SDL_misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_misc.h; sourceTree = ""; }; + B3981BB229239F4000A82429 /* SDL_opengles2_gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_gl2ext.h; sourceTree = ""; }; + B3981BB329239F4000A82429 /* SDL_test_random.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_random.h; sourceTree = ""; }; + B3981BB429239F4000A82429 /* SDL_power.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_power.h; sourceTree = ""; }; + B3981BB529239F4000A82429 /* SDL_revision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_revision.h; sourceTree = ""; }; + B3981BB629239F4000A82429 /* SDL_events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_events.h; sourceTree = ""; }; + B3981BB729239F4000A82429 /* SDL_clipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_clipboard.h; sourceTree = ""; }; + B3981BB829239F4000A82429 /* SDL_haptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_haptic.h; sourceTree = ""; }; + B3981BB929239F4000A82429 /* SDL_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test.h; sourceTree = ""; }; + B3981BBA29239F4000A82429 /* SDL_test_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_assert.h; sourceTree = ""; }; + B3981BBB29239F4000A82429 /* SDL_endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_endian.h; sourceTree = ""; }; + B3981BBC29239F4000A82429 /* SDL_error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_error.h; sourceTree = ""; }; + B3981BBD29239F4000A82429 /* begin_code.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = begin_code.h; sourceTree = ""; }; + B3981BBE29239F4000A82429 /* SDL_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_types.h; sourceTree = ""; }; + B3981BBF29239F4000A82429 /* SDL_keycode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keycode.h; sourceTree = ""; }; + B3981BC029239F4000A82429 /* SDL_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keyboard.h; sourceTree = ""; }; + B3981BC129239F4000A82429 /* SDL_config_psp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_psp.h; sourceTree = ""; }; + B3981BC229239F4000A82429 /* SDL_opengl_glext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengl_glext.h; sourceTree = ""; }; + B3981BC329239F4000A82429 /* SDL_config_pandora.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_pandora.h; sourceTree = ""; }; + B3981BC429239F4000A82429 /* SDL_test_crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_crc32.h; sourceTree = ""; }; + B3981BC529239F4000A82429 /* SDL_test_font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_font.h; sourceTree = ""; }; + B3981BC629239F4000A82429 /* SDL_test_log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_log.h; sourceTree = ""; }; + B3981BC729239F4000A82429 /* SDL_egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_egl.h; sourceTree = ""; }; + B3981BC829239F4000A82429 /* SDL_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vulkan.h; sourceTree = ""; }; + B3981BC929239F4000A82429 /* SDL_test_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_memory.h; sourceTree = ""; }; + B3981BCA29239F4000A82429 /* SDL_main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_main.h; sourceTree = ""; }; + B3981BCB29239F4000A82429 /* SDL_stdinc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_stdinc.h; sourceTree = ""; }; + B3981BCC29239F4000A82429 /* SDL_scancode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_scancode.h; sourceTree = ""; }; + B3981BCD29239F4000A82429 /* SDL_quit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_quit.h; sourceTree = ""; }; + B3981BCE29239F4000A82429 /* SDL_config_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_android.h; sourceTree = ""; }; + B3981BCF29239F4000A82429 /* SDL_touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_touch.h; sourceTree = ""; }; + B3981BD029239F4000A82429 /* SDL_opengles2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2.h; sourceTree = ""; }; + B3981BD129239F4000A82429 /* SDL_config_winrt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_winrt.h; sourceTree = ""; }; + B3981BD229239F4000A82429 /* SDL_test_images.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_images.h; sourceTree = ""; }; + B3981BD329239F4000A82429 /* SDL_name.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_name.h; sourceTree = ""; }; + B3981BD429239F4000A82429 /* SDL_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_platform.h; sourceTree = ""; }; + B3981BD529239F4000A82429 /* SDL_shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shape.h; sourceTree = ""; }; + B3981BD629239F4000A82429 /* SDL_config_minimal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_minimal.h; sourceTree = ""; }; + B3981BD729239F4000A82429 /* SDL_config.h.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL_config.h.cmake; sourceTree = ""; }; + B3981BD829239F4000A82429 /* SDL_locale.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_locale.h; sourceTree = ""; }; + B3981BD929239F4000A82429 /* SDL_loadso.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_loadso.h; sourceTree = ""; }; + B3981BDA29239F4000A82429 /* SDL_config_macosx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_macosx.h; sourceTree = ""; }; + B3981BDB29239F4000A82429 /* SDL_test_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_common.h; sourceTree = ""; }; + B3981BDC29239F4000A82429 /* SDL_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config.h; sourceTree = ""; }; + B3981BDD29239F4000A82429 /* SDL_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_audio.h; sourceTree = ""; }; + B3981BDE29239F4000A82429 /* SDL_sensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sensor.h; sourceTree = ""; }; + B3981BDF29239F4000A82429 /* SDL_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengl.h; sourceTree = ""; }; + B3981BE029239F4000A82429 /* SDL_blendmode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blendmode.h; sourceTree = ""; }; + B3981BE129239F4000A82429 /* SDL_gesture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gesture.h; sourceTree = ""; }; + B3981BE229239F4000A82429 /* SDL_test_fuzzer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_fuzzer.h; sourceTree = ""; }; + B3981BE329239F4000A82429 /* SDL_config_iphoneos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_iphoneos.h; sourceTree = ""; }; + B3981BE429239F4000A82429 /* SDL_opengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles.h; sourceTree = ""; }; + B3981BE529239F4000A82429 /* SDL_system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_system.h; sourceTree = ""; }; + B3981BE629239F4000A82429 /* SDL_hints.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hints.h; sourceTree = ""; }; + B3981BE729239F4000A82429 /* SDL_mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mouse.h; sourceTree = ""; }; + B3981BE829239F4000A82429 /* SDL_timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_timer.h; sourceTree = ""; }; + B3981BE929239F4000A82429 /* SDL_surface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_surface.h; sourceTree = ""; }; + B3981BEA29239F4000A82429 /* SDL_atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_atomic.h; sourceTree = ""; }; + B3981BEB29239F4000A82429 /* SDL_log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_log.h; sourceTree = ""; }; + B3981BEC29239F4000A82429 /* SDL_rwops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rwops.h; sourceTree = ""; }; + B3981BED29239F4000A82429 /* SDL_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_render.h; sourceTree = ""; }; + B3981BEE29239F4000A82429 /* SDL_syswm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syswm.h; sourceTree = ""; }; + B3981BEF29239F4000A82429 /* SDL_bits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bits.h; sourceTree = ""; }; + B3981BF029239F4000A82429 /* SDL_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_video.h; sourceTree = ""; }; + B3981BF129239F4000A82429 /* SDL_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_assert.h; sourceTree = ""; }; + B3981BF229239F4000A82429 /* SDL_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_version.h; sourceTree = ""; }; + B3981BF329239F4000A82429 /* SDL_gamecontroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontroller.h; sourceTree = ""; }; + B3981BF429239F4000A82429 /* SDL_config_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_windows.h; sourceTree = ""; }; + B3981BF529239F4000A82429 /* SDL_copying.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_copying.h; sourceTree = ""; }; + B3981BF629239F4000A82429 /* SDL_thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_thread.h; sourceTree = ""; }; + B3981BF729239F4000A82429 /* SDL_test_harness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_harness.h; sourceTree = ""; }; + B3981BF829239F4000A82429 /* SDL_rect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rect.h; sourceTree = ""; }; + B3981BF929239F4000A82429 /* SDL_metal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_metal.h; sourceTree = ""; }; + B3981BFA29239F4000A82429 /* SDL_mutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mutex.h; sourceTree = ""; }; + B3981BFB29239F4000A82429 /* close_code.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = close_code.h; sourceTree = ""; }; + B3981BFC29239F4000A82429 /* SDL_config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL_config.h.in; sourceTree = ""; }; + B3981BFD29239F4000A82429 /* SDL_config_wiz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_wiz.h; sourceTree = ""; }; + B3981BFE29239F4000A82429 /* SDL_joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_joystick.h; sourceTree = ""; }; + B3981BFF29239F4000A82429 /* SDL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = ""; }; + B3981C0029239F4000A82429 /* SDL_filesystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_filesystem.h; sourceTree = ""; }; + B3981C0129239F4000A82429 /* SDL_messagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_messagebox.h; sourceTree = ""; }; + B3981C0229239F4000A82429 /* SDL_opengles2_gl2platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_gl2platform.h; sourceTree = ""; }; + B3981C0329239F4000A82429 /* SDL_opengles2_khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_khrplatform.h; sourceTree = ""; }; + B3981C0429239F4000A82429 /* SDL_test_md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_md5.h; sourceTree = ""; }; + B3981C0529239F4000A82429 /* SDL_config_os2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_os2.h; sourceTree = ""; }; + B3981C0629239F4000A82429 /* SDL_pixels.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pixels.h; sourceTree = ""; }; + B3981C0729239F4000A82429 /* SDL_cpuinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cpuinfo.h; sourceTree = ""; }; + B3981C0829239F4000A82429 /* SDL_test_compare.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_compare.h; sourceTree = ""; }; + B3981C0929239F4000A82429 /* SDL_opengles2_gl2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_gl2.h; sourceTree = ""; }; + B3981C0C29239F4000A82429 /* SDLtest.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SDLtest.vcxproj; sourceTree = ""; }; + B3981C0F29239F4000A82429 /* testoverlay2.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testoverlay2.vcxproj; sourceTree = ""; }; + B3981C1129239F4000A82429 /* testjoystick.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testjoystick.vcxproj; sourceTree = ""; }; + B3981C1329239F4000A82429 /* testgamecontroller.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testgamecontroller.vcxproj; sourceTree = ""; }; + B3981C1529239F4000A82429 /* testgesture.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testgesture.vcxproj; sourceTree = ""; }; + B3981C1729239F4000A82429 /* testdraw2.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testdraw2.vcxproj; sourceTree = ""; }; + B3981C1929239F4000A82429 /* testatomic.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testatomic.vcxproj; sourceTree = ""; }; + B3981C1B29239F4000A82429 /* loopwave.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = loopwave.vcxproj; sourceTree = ""; }; + B3981C1D29239F4000A82429 /* testshape.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testshape.vcxproj; sourceTree = ""; }; + B3981C1F29239F4000A82429 /* testplatform.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testplatform.vcxproj; sourceTree = ""; }; + B3981C2129239F4000A82429 /* testgles2.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testgles2.vcxproj; sourceTree = ""; }; + B3981C2329239F4000A82429 /* testyuv.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testyuv.vcxproj; sourceTree = ""; }; + B3981C2529239F4000A82429 /* checkkeys.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = checkkeys.vcxproj; sourceTree = ""; }; + B3981C2729239F4000A82429 /* testpower.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testpower.vcxproj; sourceTree = ""; }; + B3981C2929239F4000A82429 /* testrendertarget.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testrendertarget.vcxproj; sourceTree = ""; }; + B3981C2B29239F4000A82429 /* testscale.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testscale.vcxproj; sourceTree = ""; }; + B3981C2D29239F4000A82429 /* testautomation.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testautomation.vcxproj; sourceTree = ""; }; + B3981C2F29239F4000A82429 /* testsprite2.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testsprite2.vcxproj; sourceTree = ""; }; + B3981C3129239F4000A82429 /* controllermap.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = controllermap.vcxproj; sourceTree = ""; }; + B3981C3329239F4000A82429 /* testgl2.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testgl2.vcxproj; sourceTree = ""; }; + B3981C3529239F4000A82429 /* testfile.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testfile.vcxproj; sourceTree = ""; }; + B3981C3729239F4000A82429 /* testsensor.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testsensor.vcxproj; sourceTree = ""; }; + B3981C3929239F4000A82429 /* testvulkan.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testvulkan.vcxproj; sourceTree = ""; }; + B3981C3B29239F4000A82429 /* testrumble.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testrumble.vcxproj; sourceTree = ""; }; + B3981C3D29239F4000A82429 /* SDL.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SDL.vcxproj; sourceTree = ""; }; + B3981C3E29239F4000A82429 /* SDL.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SDL.vcxproj.filters; sourceTree = ""; }; + B3981C3F29239F4000A82429 /* clean.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = clean.sh; sourceTree = ""; }; + B3981C4129239F4000A82429 /* SDLmain.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SDLmain.vcxproj; sourceTree = ""; }; + B3981C4229239F4000A82429 /* SDL.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL.sln; sourceTree = ""; }; + B3981C4629239F4000A82429 /* testquit_VS2012.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testquit_VS2012.vcxproj; sourceTree = ""; }; + B3981C4729239F4000A82429 /* visualtest_VS2012.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = visualtest_VS2012.vcxproj; sourceTree = ""; }; + B3981C4829239F4000A82429 /* sdl2-config.in */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "sdl2-config.in"; sourceTree = ""; }; + B3981C4929239F4000A82429 /* Makefile.pandora */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.pandora; sourceTree = ""; }; + B3981C4A29239F4000A82429 /* sdl2.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdl2.pc.in; sourceTree = ""; }; + B3981C4B29239F4000A82429 /* INSTALL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL.txt; sourceTree = ""; }; + B3981C4C29239F4000A82429 /* BUGS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = BUGS.txt; sourceTree = ""; }; + B3981C4E29239F4000A82429 /* README-raspberrypi.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-raspberrypi.md"; sourceTree = ""; }; + B3981C4F29239F4000A82429 /* README-gesture.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-gesture.md"; sourceTree = ""; }; + B3981C5029239F4000A82429 /* README-macosx.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-macosx.md"; sourceTree = ""; }; + B3981C5129239F4000A82429 /* README-platforms.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-platforms.md"; sourceTree = ""; }; + B3981C5229239F4000A82429 /* README-ios.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-ios.md"; sourceTree = ""; }; + B3981C5329239F4000A82429 /* README-nacl.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-nacl.md"; sourceTree = ""; }; + B3981C5429239F4000A82429 /* README-cmake.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-cmake.md"; sourceTree = ""; }; + B3981C5529239F4000A82429 /* README-wince.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-wince.md"; sourceTree = ""; }; + B3981C5629239F4000A82429 /* README-psp.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-psp.md"; sourceTree = ""; }; + B3981C5729239F4000A82429 /* README-os2.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-os2.md"; sourceTree = ""; }; + B3981C5829239F4000A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3981C5929239F4000A82429 /* README-touch.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-touch.md"; sourceTree = ""; }; + B3981C5A29239F4000A82429 /* README-android.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-android.md"; sourceTree = ""; }; + B3981C5B29239F4000A82429 /* README-directfb.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-directfb.md"; sourceTree = ""; }; + B3981C5C29239F4000A82429 /* README-hg.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-hg.md"; sourceTree = ""; }; + B3981C5D29239F4000A82429 /* README-emscripten.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-emscripten.md"; sourceTree = ""; }; + B3981C5E29239F4000A82429 /* README-pandora.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-pandora.md"; sourceTree = ""; }; + B3981C5F29239F4000A82429 /* README-dynapi.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-dynapi.md"; sourceTree = ""; }; + B3981C6029239F4000A82429 /* doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; + B3981C6129239F4000A82429 /* README-porting.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-porting.md"; sourceTree = ""; }; + B3981C6229239F4000A82429 /* README-winrt.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-winrt.md"; sourceTree = ""; }; + B3981C6329239F4000A82429 /* README-linux.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-linux.md"; sourceTree = ""; }; + B3981C6429239F4000A82429 /* README-windows.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-windows.md"; sourceTree = ""; }; + B3981C6529239F4000A82429 /* CREDITS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CREDITS.txt; sourceTree = ""; }; + B3981C6629239F4000A82429 /* Makefile.os2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.os2; sourceTree = ""; }; + B3981C6729239F4000A82429 /* Makefile.minimal */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.minimal; sourceTree = ""; }; + B3981C6829239F4000A82429 /* SDL2.spec.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL2.spec.in; sourceTree = ""; }; + B3981C6929239F4000A82429 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B3981C6B29239F4000A82429 /* ant.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = ant.properties; sourceTree = ""; }; + B3981C6C29239F4000A82429 /* build.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.properties; sourceTree = ""; }; + B3981C6F29239F4000A82429 /* main.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = main.xml; sourceTree = ""; }; + B3981C7129239F4000A82429 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B3981C7329239F4000A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981C7529239F4000A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981C7729239F4000A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981C7929239F4000A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3981C7A29239F4000A82429 /* build.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = build.xml; sourceTree = ""; }; + B3981C7B29239F4000A82429 /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; + B3981C7C29239F4000A82429 /* project.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = project.properties; sourceTree = ""; }; + B3981C7D29239F4000A82429 /* proguard-project.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "proguard-project.txt"; sourceTree = ""; }; + B3981C7E29239F4000A82429 /* default.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = default.properties; sourceTree = ""; }; + B3981C8029239F4000A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3981C8129239F4000A82429 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3981C8329239F4000A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3981C8429239F4000A82429 /* Android_static.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android_static.mk; sourceTree = ""; }; + B3981C8929239F4000A82429 /* SDLAudioManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLAudioManager.java; sourceTree = ""; }; + B3981C8A29239F4000A82429 /* SDLControllerManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLControllerManager.java; sourceTree = ""; }; + B3981C8B29239F4000A82429 /* HIDDevice.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDevice.java; sourceTree = ""; }; + B3981C8C29239F4000A82429 /* HIDDeviceBLESteamController.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceBLESteamController.java; sourceTree = ""; }; + B3981C8D29239F4000A82429 /* HIDDeviceUSB.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceUSB.java; sourceTree = ""; }; + B3981C8E29239F4000A82429 /* SDL.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDL.java; sourceTree = ""; }; + B3981C8F29239F4000A82429 /* SDLActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLActivity.java; sourceTree = ""; }; + B3981C9029239F4000A82429 /* HIDDeviceManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceManager.java; sourceTree = ""; }; + B3981C9129239F4000A82429 /* SDL2Config.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL2Config.cmake; sourceTree = ""; }; + B3981C9229239F4000A82429 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3981C9329239F4000A82429 /* sdl2-config-version.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "sdl2-config-version.cmake.in"; sourceTree = ""; }; + B3981C9429239F4000A82429 /* Makefile.wiz */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.wiz; sourceTree = ""; }; + B3981C9529239F4000A82429 /* sdl2.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdl2.m4; sourceTree = ""; }; + B3981C9729239F4000A82429 /* os2-buildbot.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "os2-buildbot.sh"; sourceTree = ""; }; + B3981C9829239F4000A82429 /* windows-buildbot-zipper.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = "windows-buildbot-zipper.bat"; sourceTree = ""; }; + B3981C9929239F4000A82429 /* install-sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-sh"; sourceTree = ""; }; + B3981C9A29239F4000A82429 /* ltmain.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ltmain.sh; sourceTree = ""; }; + B3981C9B29239F4000A82429 /* checker-buildbot.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "checker-buildbot.sh"; sourceTree = ""; }; + B3981C9C29239F4000A82429 /* naclbuild.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = naclbuild.sh; sourceTree = ""; }; + B3981C9D29239F4000A82429 /* update-copyright.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "update-copyright.sh"; sourceTree = ""; }; + B3981C9E29239F4000A82429 /* raspberrypi-buildbot.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "raspberrypi-buildbot.sh"; sourceTree = ""; }; + B3981C9F29239F4000A82429 /* androidbuildlibs.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = androidbuildlibs.sh; sourceTree = ""; }; + B3981CA029239F4000A82429 /* g++-fat.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "g++-fat.sh"; sourceTree = ""; }; + B3981CA129239F4000A82429 /* winrtbuild.ps1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = winrtbuild.ps1; sourceTree = ""; }; + B3981CA229239F4000A82429 /* config.guess */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.guess; sourceTree = ""; }; + B3981CA329239F4000A82429 /* winrtbuild.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = winrtbuild.bat; sourceTree = ""; }; + B3981CA429239F4000A82429 /* showrev.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = showrev.sh; sourceTree = ""; }; + B3981CA529239F4000A82429 /* androidbuild.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = androidbuild.sh; sourceTree = ""; }; + B3981CA629239F4000A82429 /* config.sub */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.sub; sourceTree = ""; }; + B3981CA729239F4000A82429 /* gcc-fat.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "gcc-fat.sh"; sourceTree = ""; }; + B3981CA829239F4000A82429 /* updaterev.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = updaterev.sh; sourceTree = ""; }; + B3981CA929239F4000A82429 /* emscripten-buildbot.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "emscripten-buildbot.sh"; sourceTree = ""; }; + B3981CAA29239F4000A82429 /* strip_fPIC.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = strip_fPIC.sh; sourceTree = ""; }; + B3981CAB29239F4000A82429 /* iosbuild.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = iosbuild.sh; sourceTree = ""; }; + B3981CAC29239F4000A82429 /* mkinstalldirs */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = mkinstalldirs; sourceTree = ""; }; + B3981CAD29239F4000A82429 /* nacl-buildbot.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "nacl-buildbot.sh"; sourceTree = ""; }; + B3981CAF29239F4000A82429 /* COPYING.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.txt; sourceTree = ""; }; + B3981CB029239F4000A82429 /* acinclude.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = acinclude.m4; sourceTree = ""; }; + B3981CB229239F4100A82429 /* testquit.actions */ = {isa = PBXFileReference; lastKnownFileType = text; path = testquit.actions; sourceTree = ""; }; + B3981CB329239F4100A82429 /* testquit.config */ = {isa = PBXFileReference; lastKnownFileType = text; path = testquit.config; sourceTree = ""; }; + B3981CB429239F4100A82429 /* testquit.parameters */ = {isa = PBXFileReference; lastKnownFileType = text; path = testquit.parameters; sourceTree = ""; }; + B3981CB529239F4100A82429 /* testquit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testquit.c; sourceTree = ""; }; + B3981CB629239F4100A82429 /* install-sh */ = {isa = PBXFileReference; lastKnownFileType = text; path = "install-sh"; sourceTree = ""; }; + B3981CB729239F4100A82429 /* testsprite2_sample.actions */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_sample.actions; sourceTree = ""; }; + B3981CB829239F4100A82429 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3981CB929239F4100A82429 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3981CBB29239F4100A82429 /* SDL_visualtest_variators.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_variators.h; sourceTree = ""; }; + B3981CBC29239F4100A82429 /* SDL_visualtest_action_configparser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_action_configparser.h; sourceTree = ""; }; + B3981CBD29239F4100A82429 /* SDL_visualtest_screenshot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_screenshot.h; sourceTree = ""; }; + B3981CBE29239F4100A82429 /* SDL_visualtest_harness_argparser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_harness_argparser.h; sourceTree = ""; }; + B3981CBF29239F4100A82429 /* SDL_visualtest_rwhelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_rwhelper.h; sourceTree = ""; }; + B3981CC029239F4100A82429 /* SDL_visualtest_mischelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_mischelper.h; sourceTree = ""; }; + B3981CC129239F4100A82429 /* SDL_visualtest_random_variator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_random_variator.h; sourceTree = ""; }; + B3981CC229239F4100A82429 /* SDL_visualtest_parsehelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_parsehelper.h; sourceTree = ""; }; + B3981CC329239F4100A82429 /* SDL_visualtest_exhaustive_variator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_exhaustive_variator.h; sourceTree = ""; }; + B3981CC429239F4100A82429 /* SDL_visualtest_process.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_process.h; sourceTree = ""; }; + B3981CC529239F4100A82429 /* SDL_visualtest_sut_configparser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_sut_configparser.h; sourceTree = ""; }; + B3981CC629239F4100A82429 /* SDL_visualtest_variator_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_visualtest_variator_common.h; sourceTree = ""; }; + B3981CC729239F4100A82429 /* testsprite2_sample.config */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_sample.config; sourceTree = ""; }; + B3981CC829239F4100A82429 /* stamp-h1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "stamp-h1"; sourceTree = ""; }; + B3981CC929239F4100A82429 /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.h.in; sourceTree = ""; }; + B3981CCA29239F4100A82429 /* launch_harness.cmd */ = {isa = PBXFileReference; lastKnownFileType = text; path = launch_harness.cmd; sourceTree = ""; }; + B3981CCB29239F4100A82429 /* depcomp */ = {isa = PBXFileReference; lastKnownFileType = text; path = depcomp; sourceTree = ""; }; + B3981CCD29239F4100A82429 /* Doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile; sourceTree = ""; }; + B3981CCE29239F4100A82429 /* missing */ = {isa = PBXFileReference; lastKnownFileType = text; path = missing; sourceTree = ""; }; + B3981CCF29239F4100A82429 /* configure.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.in; sourceTree = ""; }; + B3981CD029239F4100A82429 /* compile */ = {isa = PBXFileReference; lastKnownFileType = text; path = compile; sourceTree = ""; }; + B3981CD329239F4100A82429 /* testsprite2_geometry.actions */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_geometry.actions; sourceTree = ""; }; + B3981CD429239F4100A82429 /* testsprite2_geometry.config */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_geometry.config; sourceTree = ""; }; + B3981CD529239F4100A82429 /* testsprite2_geometry.parameters */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_geometry.parameters; sourceTree = ""; }; + B3981CD729239F4100A82429 /* testsprite2_crashtest.parameters */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_crashtest.parameters; sourceTree = ""; }; + B3981CD829239F4100A82429 /* testsprite2_crashtest.config */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_crashtest.config; sourceTree = ""; }; + B3981CD929239F4100A82429 /* testsprite2_crashtest.actions */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_crashtest.actions; sourceTree = ""; }; + B3981CDB29239F4100A82429 /* testsprite2_blendmodes.actions */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_blendmodes.actions; sourceTree = ""; }; + B3981CDC29239F4100A82429 /* testsprite2_blendmodes.config */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_blendmodes.config; sourceTree = ""; }; + B3981CDD29239F4100A82429 /* testsprite2_blendmodes.parameters */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_blendmodes.parameters; sourceTree = ""; }; + B3981CDF29239F4100A82429 /* testsprite2_fullscreen.parameters */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_fullscreen.parameters; sourceTree = ""; }; + B3981CE029239F4100A82429 /* testsprite2_fullscreen.config */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_fullscreen.config; sourceTree = ""; }; + B3981CE129239F4100A82429 /* testsprite2_fullscreen.actions */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_fullscreen.actions; sourceTree = ""; }; + B3981CE229239F4100A82429 /* launch_harness.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = launch_harness.sh; sourceTree = ""; }; + B3981CE329239F4100A82429 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B3981CE429239F4100A82429 /* testsprite2_sample.parameters */ = {isa = PBXFileReference; lastKnownFileType = text; path = testsprite2_sample.parameters; sourceTree = ""; }; + B3981CE529239F4100A82429 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3981CE629239F4100A82429 /* autogen.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = autogen.sh; sourceTree = ""; }; + B3981CE829239F4100A82429 /* variator_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = variator_common.c; sourceTree = ""; }; + B3981CE929239F4100A82429 /* mischelper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mischelper.c; sourceTree = ""; }; + B3981CEA29239F4100A82429 /* harness_argparser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = harness_argparser.c; sourceTree = ""; }; + B3981CEB29239F4100A82429 /* variator_random.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = variator_random.c; sourceTree = ""; }; + B3981CEC29239F4100A82429 /* sut_configparser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sut_configparser.c; sourceTree = ""; }; + B3981CED29239F4100A82429 /* parsehelper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = parsehelper.c; sourceTree = ""; }; + B3981CEF29239F4100A82429 /* linux_process.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linux_process.c; sourceTree = ""; }; + B3981CF029239F4100A82429 /* screenshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = screenshot.c; sourceTree = ""; }; + B3981CF129239F4100A82429 /* variator_exhaustive.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = variator_exhaustive.c; sourceTree = ""; }; + B3981CF229239F4100A82429 /* action_configparser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = action_configparser.c; sourceTree = ""; }; + B3981CF429239F4100A82429 /* windows_process.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = windows_process.c; sourceTree = ""; }; + B3981CF529239F4100A82429 /* windows_screenshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = windows_screenshot.c; sourceTree = ""; }; + B3981CF629239F4100A82429 /* variators.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = variators.c; sourceTree = ""; }; + B3981CF729239F4100A82429 /* testharness.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testharness.c; sourceTree = ""; }; + B3981CF829239F4100A82429 /* rwhelper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwhelper.c; sourceTree = ""; }; + B3981CFB29239F4100A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = TestiPhoneOS.xcodeproj; sourceTree = ""; }; + B3981D0129239F4100A82429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3981D0329239F4100A82429 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = SDL2test.xcodeproj; sourceTree = ""; }; + B3981D0829239F4100A82429 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; + B3981D0929239F4100A82429 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + B3981D0A29239F4100A82429 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3981D0B29239F4100A82429 /* ___PROJECTNAME___.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = "___PROJECTNAME___.xcodeproj"; sourceTree = ""; }; + B3981D0F29239F4100A82429 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + B3981D1029239F4100A82429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3981D1229239F4100A82429 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; + B3981D1329239F4100A82429 /* iOS Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "iOS Launch Screen.storyboard"; sourceTree = ""; }; + B3981D1429239F4100A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3981D1729239F4100A82429 /* ds_china.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_china.wav; sourceTree = ""; }; + B3981D1829239F4100A82429 /* ds_kick_big_amb.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_kick_big_amb.wav; sourceTree = ""; }; + B3981D1929239F4100A82429 /* ds_loose_skin_mute.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_loose_skin_mute.wav; sourceTree = ""; }; + B3981D1A29239F4100A82429 /* ds_brush_snare.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_brush_snare.wav; sourceTree = ""; }; + B3981D1C29239F4100A82429 /* kromasky_16x16.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = kromasky_16x16.bmp; sourceTree = ""; }; + B3981D1D29239F4100A82429 /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B3981D1E29239F4100A82429 /* stroke.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = stroke.bmp; sourceTree = ""; }; + B3981D1F29239F4100A82429 /* space.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = space.bmp; sourceTree = ""; }; + B3981D2029239F4100A82429 /* ship.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = ship.bmp; sourceTree = ""; }; + B3981D2129239F4100A82429 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = icon.bmp; sourceTree = ""; }; + B3981D2229239F4100A82429 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + B3981D2329239F4100A82429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3981D2429239F4100A82429 /* Demos.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = Demos.xcodeproj; sourceTree = ""; }; + B3981D2929239F4100A82429 /* fireworks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fireworks.c; sourceTree = ""; }; + B3981D2A29239F4100A82429 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = common.c; sourceTree = ""; }; + B3981D2B29239F4100A82429 /* mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mixer.c; sourceTree = ""; }; + B3981D2C29239F4100A82429 /* keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard.c; sourceTree = ""; }; + B3981D2D29239F4100A82429 /* happy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = happy.c; sourceTree = ""; }; + B3981D2E29239F4100A82429 /* rectangles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rectangles.c; sourceTree = ""; }; + B3981D2F29239F4100A82429 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B3981D3029239F4100A82429 /* touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = touch.c; sourceTree = ""; }; + B3981D3129239F4100A82429 /* accelerometer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = accelerometer.c; sourceTree = ""; }; + B3981D3229239F4100A82429 /* autogen.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = autogen.sh; sourceTree = ""; }; + B3981D3429239F4100A82429 /* SDL_error_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_error_c.h; sourceTree = ""; }; + B3981D3729239F4100A82429 /* SDL_syspower.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_syspower.m; sourceTree = ""; }; + B3981D3829239F4100A82429 /* SDL_syspower.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syspower.h; sourceTree = ""; }; + B3981D3A29239F4100A82429 /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + B3981D3C29239F4100A82429 /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + B3981D3D29239F4100A82429 /* SDL_power.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_power.c; sourceTree = ""; }; + B3981D3F29239F4100A82429 /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + B3981D4129239F4100A82429 /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + B3981D4329239F4100A82429 /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + B3981D4529239F4100A82429 /* SDL_syspower.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_syspower.cpp; sourceTree = ""; }; + B3981D4729239F4100A82429 /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + B3981D4929239F4100A82429 /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + B3981D4A29239F4100A82429 /* SDL_syspower.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syspower.h; sourceTree = ""; }; + B3981D4B29239F4100A82429 /* SDL_hints.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hints.c; sourceTree = ""; }; + B3981D4C29239F4100A82429 /* SDL_assert_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_assert_c.h; sourceTree = ""; }; + B3981D4F29239F4100A82429 /* SDL_sysurl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysurl.c; sourceTree = ""; }; + B3981D5029239F4100A82429 /* SDL_url.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_url.c; sourceTree = ""; }; + B3981D5129239F4100A82429 /* SDL_sysurl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysurl.h; sourceTree = ""; }; + B3981D5329239F4100A82429 /* SDL_sysurl.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_sysurl.cc; sourceTree = ""; }; + B3981D5529239F4100A82429 /* SDL_sysurl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_sysurl.m; sourceTree = ""; }; + B3981D5729239F4100A82429 /* SDL_sysurl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysurl.c; sourceTree = ""; }; + B3981D5929239F4100A82429 /* SDL_sysurl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_sysurl.m; sourceTree = ""; }; + B3981D5B29239F4100A82429 /* SDL_sysurl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_sysurl.cpp; sourceTree = ""; }; + B3981D5D29239F4100A82429 /* SDL_sysurl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysurl.c; sourceTree = ""; }; + B3981D5F29239F4100A82429 /* SDL_sysurl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysurl.c; sourceTree = ""; }; + B3981D6129239F4100A82429 /* SDL_sysurl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysurl.c; sourceTree = ""; }; + B3981D6329239F4100A82429 /* s_sin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_sin.c; sourceTree = ""; }; + B3981D6429239F4100A82429 /* s_cos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_cos.c; sourceTree = ""; }; + B3981D6529239F4100A82429 /* s_copysign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_copysign.c; sourceTree = ""; }; + B3981D6629239F4100A82429 /* s_fabs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_fabs.c; sourceTree = ""; }; + B3981D6729239F4100A82429 /* k_rem_pio2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = k_rem_pio2.c; sourceTree = ""; }; + B3981D6829239F4100A82429 /* k_sin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = k_sin.c; sourceTree = ""; }; + B3981D6929239F4100A82429 /* s_atan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_atan.c; sourceTree = ""; }; + B3981D6A29239F4100A82429 /* k_cos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = k_cos.c; sourceTree = ""; }; + B3981D6B29239F4100A82429 /* s_scalbn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_scalbn.c; sourceTree = ""; }; + B3981D6C29239F4100A82429 /* math_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = math_private.h; sourceTree = ""; }; + B3981D6D29239F4100A82429 /* e_pow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_pow.c; sourceTree = ""; }; + B3981D6E29239F4100A82429 /* e_atan2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_atan2.c; sourceTree = ""; }; + B3981D6F29239F4100A82429 /* s_tan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_tan.c; sourceTree = ""; }; + B3981D7029239F4100A82429 /* e_rem_pio2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_rem_pio2.c; sourceTree = ""; }; + B3981D7129239F4100A82429 /* e_fmod.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_fmod.c; sourceTree = ""; }; + B3981D7229239F4100A82429 /* e_exp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_exp.c; sourceTree = ""; }; + B3981D7329239F4100A82429 /* e_log10.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_log10.c; sourceTree = ""; }; + B3981D7429239F4100A82429 /* e_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_log.c; sourceTree = ""; }; + B3981D7529239F4100A82429 /* e_sqrt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e_sqrt.c; sourceTree = ""; }; + B3981D7629239F4100A82429 /* s_floor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s_floor.c; sourceTree = ""; }; + B3981D7729239F4100A82429 /* math_libm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = math_libm.h; sourceTree = ""; }; + B3981D7829239F4100A82429 /* k_tan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = k_tan.c; sourceTree = ""; }; + B3981D7B29239F4100A82429 /* SDL_offscreenopengl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenopengl.c; sourceTree = ""; }; + B3981D7C29239F4100A82429 /* SDL_offscreenevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenevents_c.h; sourceTree = ""; }; + B3981D7D29239F4100A82429 /* SDL_offscreenwindow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenwindow.c; sourceTree = ""; }; + B3981D7E29239F4100A82429 /* SDL_offscreenevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenevents.c; sourceTree = ""; }; + B3981D7F29239F4100A82429 /* SDL_offscreenvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenvideo.h; sourceTree = ""; }; + B3981D8029239F4100A82429 /* SDL_offscreenframebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenframebuffer.c; sourceTree = ""; }; + B3981D8129239F4100A82429 /* SDL_offscreenopengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenopengl.h; sourceTree = ""; }; + B3981D8229239F4100A82429 /* SDL_offscreenframebuffer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenframebuffer_c.h; sourceTree = ""; }; + B3981D8329239F4100A82429 /* SDL_offscreenwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenwindow.h; sourceTree = ""; }; + B3981D8429239F4100A82429 /* SDL_offscreenvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenvideo.c; sourceTree = ""; }; + B3981D8629239F4100A82429 /* SDL_vivantevulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vivantevulkan.h; sourceTree = ""; }; + B3981D8729239F4100A82429 /* SDL_vivanteplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vivanteplatform.h; sourceTree = ""; }; + B3981D8829239F4100A82429 /* SDL_vivantevideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_vivantevideo.c; sourceTree = ""; }; + B3981D8929239F4100A82429 /* SDL_vivanteopengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_vivanteopengles.c; sourceTree = ""; }; + B3981D8A29239F4100A82429 /* SDL_vivantevulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_vivantevulkan.c; sourceTree = ""; }; + B3981D8B29239F4100A82429 /* SDL_vivanteplatform.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_vivanteplatform.c; sourceTree = ""; }; + B3981D8C29239F4100A82429 /* SDL_vivanteopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vivanteopengles.h; sourceTree = ""; }; + B3981D8D29239F4100A82429 /* SDL_vivantevideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vivantevideo.h; sourceTree = ""; }; + B3981D8E29239F4100A82429 /* SDL_blit_slow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit_slow.c; sourceTree = ""; }; + B3981D8F29239F4100A82429 /* SDL_stretch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_stretch.c; sourceTree = ""; }; + B3981D9029239F4100A82429 /* SDL_egl_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_egl_c.h; sourceTree = ""; }; + B3981D9229239F4100A82429 /* SDL_nullframebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_nullframebuffer.c; sourceTree = ""; }; + B3981D9329239F4100A82429 /* SDL_nullframebuffer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_nullframebuffer_c.h; sourceTree = ""; }; + B3981D9429239F4100A82429 /* SDL_nullvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_nullvideo.c; sourceTree = ""; }; + B3981D9529239F4100A82429 /* SDL_nullevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_nullevents.c; sourceTree = ""; }; + B3981D9629239F4100A82429 /* SDL_nullvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_nullvideo.h; sourceTree = ""; }; + B3981D9729239F4100A82429 /* SDL_nullevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_nullevents_c.h; sourceTree = ""; }; + B3981D9829239F4100A82429 /* SDL_rect_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rect_c.h; sourceTree = ""; }; + B3981D9A29239F4100A82429 /* SDL_os2util.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2util.c; sourceTree = ""; }; + B3981D9B29239F4100A82429 /* SDL_os2vman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2vman.c; sourceTree = ""; }; + B3981D9C29239F4100A82429 /* SDL_os2messagebox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2messagebox.c; sourceTree = ""; }; + B3981D9D29239F4100A82429 /* my_gradd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = my_gradd.h; sourceTree = ""; }; + B3981D9E29239F4100A82429 /* SDL_os2video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_os2video.h; sourceTree = ""; }; + B3981D9F29239F4100A82429 /* SDL_os2mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_os2mouse.h; sourceTree = ""; }; + B3981DA029239F4100A82429 /* SDL_os2output.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_os2output.h; sourceTree = ""; }; + B3981DA129239F4100A82429 /* SDL_os2util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_os2util.h; sourceTree = ""; }; + B3981DA229239F4100A82429 /* SDL_os2messagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_os2messagebox.h; sourceTree = ""; }; + B3981DA329239F4100A82429 /* SDL_os2video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2video.c; sourceTree = ""; }; + B3981DA429239F4100A82429 /* SDL_os2mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2mouse.c; sourceTree = ""; }; + B3981DA529239F4100A82429 /* SDL_os2dive.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2dive.c; sourceTree = ""; }; + B3981DA629239F4100A82429 /* SDL_shape_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shape_internals.h; sourceTree = ""; }; + B3981DA729239F4100A82429 /* SDL_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_video.c; sourceTree = ""; }; + B3981DA929239F4100A82429 /* gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl.c; sourceTree = ""; }; + B3981DAA29239F4100A82429 /* sdl_qnx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl_qnx.h; sourceTree = ""; }; + B3981DAB29239F4100A82429 /* video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video.c; sourceTree = ""; }; + B3981DAC29239F4100A82429 /* keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard.c; sourceTree = ""; }; + B3981DAD29239F4100A82429 /* SDL_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_surface.c; sourceTree = ""; }; + B3981DAE29239F4100A82429 /* SDL_RLEaccel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_RLEaccel.c; sourceTree = ""; }; + B3981DAF29239F4100A82429 /* SDL_blit_copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit_copy.c; sourceTree = ""; }; + B3981DB029239F4100A82429 /* SDL_sysvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysvideo.h; sourceTree = ""; }; + B3981DB229239F4100A82429 /* SDL_uikitview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitview.h; sourceTree = ""; }; + B3981DB329239F4100A82429 /* SDL_uikitwindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitwindow.m; sourceTree = ""; }; + B3981DB429239F4100A82429 /* SDL_uikitmessagebox.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitmessagebox.m; sourceTree = ""; }; + B3981DB529239F4100A82429 /* SDL_uikitevents.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitevents.m; sourceTree = ""; }; + B3981DB629239F4100A82429 /* SDL_uikitmetalview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitmetalview.h; sourceTree = ""; }; + B3981DB729239F4100A82429 /* SDL_uikitappdelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitappdelegate.m; sourceTree = ""; }; + B3981DB829239F4100A82429 /* SDL_uikitmodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitmodes.h; sourceTree = ""; }; + B3981DB929239F4100A82429 /* SDL_uikitopenglview.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitopenglview.m; sourceTree = ""; }; + B3981DBA29239F4100A82429 /* SDL_uikitclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitclipboard.h; sourceTree = ""; }; + B3981DBB29239F4100A82429 /* SDL_uikitvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitvideo.h; sourceTree = ""; }; + B3981DBC29239F4100A82429 /* SDL_uikitopengles.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitopengles.m; sourceTree = ""; }; + B3981DBD29239F4100A82429 /* SDL_uikitviewcontroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitviewcontroller.h; sourceTree = ""; }; + B3981DBE29239F4100A82429 /* SDL_uikitvulkan.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitvulkan.m; sourceTree = ""; }; + B3981DBF29239F4100A82429 /* SDL_uikitmessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitmessagebox.h; sourceTree = ""; }; + B3981DC029239F4100A82429 /* SDL_uikitwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitwindow.h; sourceTree = ""; }; + B3981DC129239F4100A82429 /* keyinfotable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyinfotable.h; sourceTree = ""; }; + B3981DC229239F4100A82429 /* SDL_uikitview.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitview.m; sourceTree = ""; }; + B3981DC329239F4100A82429 /* SDL_uikitclipboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitclipboard.m; sourceTree = ""; }; + B3981DC429239F4100A82429 /* SDL_uikitopenglview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitopenglview.h; sourceTree = ""; }; + B3981DC529239F4100A82429 /* SDL_uikitmodes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitmodes.m; sourceTree = ""; }; + B3981DC629239F4100A82429 /* SDL_uikitevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitevents.h; sourceTree = ""; }; + B3981DC729239F4100A82429 /* SDL_uikitmetalview.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitmetalview.m; sourceTree = ""; }; + B3981DC829239F4100A82429 /* SDL_uikitappdelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitappdelegate.h; sourceTree = ""; }; + B3981DC929239F4100A82429 /* SDL_uikitviewcontroller.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitviewcontroller.m; sourceTree = ""; }; + B3981DCA29239F4100A82429 /* SDL_uikitopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitopengles.h; sourceTree = ""; }; + B3981DCB29239F4100A82429 /* SDL_uikitvideo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitvideo.m; sourceTree = ""; }; + B3981DCC29239F4100A82429 /* SDL_uikitvulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_uikitvulkan.h; sourceTree = ""; }; + B3981DCD29239F4100A82429 /* SDL_rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rect.c; sourceTree = ""; }; + B3981DCF29239F4100A82429 /* SDL_rpievents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rpievents.c; sourceTree = ""; }; + B3981DD029239F4100A82429 /* SDL_rpiopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rpiopengles.h; sourceTree = ""; }; + B3981DD129239F4100A82429 /* SDL_rpimouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rpimouse.h; sourceTree = ""; }; + B3981DD229239F4100A82429 /* SDL_rpievents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rpievents_c.h; sourceTree = ""; }; + B3981DD329239F4100A82429 /* SDL_rpivideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rpivideo.h; sourceTree = ""; }; + B3981DD429239F4100A82429 /* SDL_rpiopengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rpiopengles.c; sourceTree = ""; }; + B3981DD529239F4100A82429 /* SDL_rpimouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rpimouse.c; sourceTree = ""; }; + B3981DD629239F4100A82429 /* SDL_rpivideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rpivideo.c; sourceTree = ""; }; + B3981DD729239F4100A82429 /* SDL_vulkan_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vulkan_internal.h; sourceTree = ""; }; + B3981DD829239F4100A82429 /* SDL_blit_auto.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit_auto.c; sourceTree = ""; }; + B3981DD929239F4100A82429 /* SDL_vulkan_utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_vulkan_utils.c; sourceTree = ""; }; + B3981DDA29239F4100A82429 /* sdlgenblit.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = sdlgenblit.pl; sourceTree = ""; }; + B3981DDB29239F4100A82429 /* SDL_blit_N.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit_N.c; sourceTree = ""; }; + B3981DDD29239F4100A82429 /* SDL_pspvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pspvideo.h; sourceTree = ""; }; + B3981DDE29239F4100A82429 /* SDL_pspevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pspevents_c.h; sourceTree = ""; }; + B3981DDF29239F4100A82429 /* SDL_pspgl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pspgl.c; sourceTree = ""; }; + B3981DE029239F4100A82429 /* SDL_pspvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pspvideo.c; sourceTree = ""; }; + B3981DE129239F4100A82429 /* SDL_pspmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pspmouse.c; sourceTree = ""; }; + B3981DE229239F4100A82429 /* SDL_pspmouse_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pspmouse_c.h; sourceTree = ""; }; + B3981DE329239F4100A82429 /* SDL_pspgl_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pspgl_c.h; sourceTree = ""; }; + B3981DE429239F4100A82429 /* SDL_pspevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pspevents.c; sourceTree = ""; }; + B3981DE529239F4100A82429 /* SDL_blit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit.c; sourceTree = ""; }; + B3981DE629239F4100A82429 /* SDL_pixels.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pixels.c; sourceTree = ""; }; + B3981DE829239F4100A82429 /* SDL_bopengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bopengl.h; sourceTree = ""; }; + B3981DE929239F4100A82429 /* SDL_bvideo.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bvideo.cc; sourceTree = ""; }; + B3981DEA29239F4100A82429 /* SDL_bmessagebox.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bmessagebox.cc; sourceTree = ""; }; + B3981DEB29239F4100A82429 /* SDL_bkeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bkeyboard.h; sourceTree = ""; }; + B3981DEC29239F4100A82429 /* SDL_bevents.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bevents.cc; sourceTree = ""; }; + B3981DED29239F4100A82429 /* SDL_bkeyboard.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bkeyboard.cc; sourceTree = ""; }; + B3981DEE29239F4100A82429 /* SDL_bwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bwindow.h; sourceTree = ""; }; + B3981DEF29239F4100A82429 /* SDL_bclipboard.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bclipboard.cc; sourceTree = ""; }; + B3981DF029239F4100A82429 /* SDL_bmessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bmessagebox.h; sourceTree = ""; }; + B3981DF129239F4100A82429 /* SDL_bwindow.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bwindow.cc; sourceTree = ""; }; + B3981DF229239F4100A82429 /* SDL_bevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bevents.h; sourceTree = ""; }; + B3981DF329239F4100A82429 /* SDL_bmodes.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bmodes.cc; sourceTree = ""; }; + B3981DF429239F4100A82429 /* SDL_bframebuffer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bframebuffer.cc; sourceTree = ""; }; + B3981DF529239F4100A82429 /* SDL_bvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bvideo.h; sourceTree = ""; }; + B3981DF629239F4100A82429 /* SDL_BWin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_BWin.h; sourceTree = ""; }; + B3981DF729239F4100A82429 /* SDL_bframebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bframebuffer.h; sourceTree = ""; }; + B3981DF829239F4100A82429 /* SDL_bclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bclipboard.h; sourceTree = ""; }; + B3981DF929239F4100A82429 /* SDL_bopengl.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_bopengl.cc; sourceTree = ""; }; + B3981DFA29239F4100A82429 /* SDL_bmodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bmodes.h; sourceTree = ""; }; + B3981DFB29239F4100A82429 /* SDL_blit_0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit_0.c; sourceTree = ""; }; + B3981DFC29239F4100A82429 /* SDL_blit_slow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blit_slow.h; sourceTree = ""; }; + B3981DFD29239F4100A82429 /* SDL_blit_A.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit_A.c; sourceTree = ""; }; + B3981DFF29239F4100A82429 /* SDL_waylandclipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandclipboard.c; sourceTree = ""; }; + B3981E0029239F4100A82429 /* SDL_waylandwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandwindow.h; sourceTree = ""; }; + B3981E0129239F4100A82429 /* SDL_waylandtouch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandtouch.h; sourceTree = ""; }; + B3981E0229239F4100A82429 /* SDL_waylandsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandsym.h; sourceTree = ""; }; + B3981E0329239F4100A82429 /* SDL_waylanddatamanager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylanddatamanager.c; sourceTree = ""; }; + B3981E0429239F4100A82429 /* SDL_waylandmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandmouse.c; sourceTree = ""; }; + B3981E0529239F4100A82429 /* SDL_waylandopengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandopengles.c; sourceTree = ""; }; + B3981E0629239F4100A82429 /* SDL_waylanddyn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylanddyn.h; sourceTree = ""; }; + B3981E0729239F4100A82429 /* SDL_waylandvulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandvulkan.h; sourceTree = ""; }; + B3981E0829239F4100A82429 /* SDL_waylandvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandvideo.c; sourceTree = ""; }; + B3981E0929239F4100A82429 /* SDL_waylandtouch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandtouch.c; sourceTree = ""; }; + B3981E0A29239F4100A82429 /* SDL_waylandwindow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandwindow.c; sourceTree = ""; }; + B3981E0B29239F4100A82429 /* SDL_waylandclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandclipboard.h; sourceTree = ""; }; + B3981E0C29239F4100A82429 /* SDL_waylandevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandevents.c; sourceTree = ""; }; + B3981E0D29239F4100A82429 /* SDL_waylandevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandevents_c.h; sourceTree = ""; }; + B3981E0E29239F4100A82429 /* SDL_waylandmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandmouse.h; sourceTree = ""; }; + B3981E0F29239F4100A82429 /* SDL_waylandopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandopengles.h; sourceTree = ""; }; + B3981E1029239F4100A82429 /* SDL_waylanddatamanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylanddatamanager.h; sourceTree = ""; }; + B3981E1129239F4100A82429 /* SDL_waylandvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_waylandvideo.h; sourceTree = ""; }; + B3981E1229239F4100A82429 /* SDL_waylandvulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylandvulkan.c; sourceTree = ""; }; + B3981E1329239F4100A82429 /* SDL_waylanddyn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_waylanddyn.c; sourceTree = ""; }; + B3981E1429239F4100A82429 /* SDL_clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_clipboard.c; sourceTree = ""; }; + B3981E1529239F4100A82429 /* SDL_yuv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_yuv.c; sourceTree = ""; }; + B3981E1729239F4100A82429 /* SDL_cocoashape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoashape.h; sourceTree = ""; }; + B3981E1829239F4100A82429 /* SDL_cocoaopengl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaopengl.m; sourceTree = ""; }; + B3981E1929239F4100A82429 /* SDL_cocoakeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoakeyboard.h; sourceTree = ""; }; + B3981E1A29239F4100A82429 /* SDL_cocoamodes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamodes.m; sourceTree = ""; }; + B3981E1B29239F4100A82429 /* SDL_cocoaopengles.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaopengles.m; sourceTree = ""; }; + B3981E1C29239F4100A82429 /* SDL_cocoavulkan.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoavulkan.m; sourceTree = ""; }; + B3981E1D29239F4100A82429 /* SDL_cocoawindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoawindow.m; sourceTree = ""; }; + B3981E1E29239F4100A82429 /* SDL_cocoavideo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoavideo.m; sourceTree = ""; }; + B3981E1F29239F4100A82429 /* SDL_cocoametalview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoametalview.h; sourceTree = ""; }; + B3981E2029239F4100A82429 /* SDL_cocoamouse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamouse.m; sourceTree = ""; }; + B3981E2129239F4100A82429 /* SDL_cocoamousetap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamousetap.h; sourceTree = ""; }; + B3981E2229239F4100A82429 /* SDL_cocoaevents.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaevents.m; sourceTree = ""; }; + B3981E2329239F4100A82429 /* SDL_cocoaclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaclipboard.h; sourceTree = ""; }; + B3981E2429239F4100A82429 /* SDL_cocoamessagebox.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamessagebox.m; sourceTree = ""; }; + B3981E2529239F4100A82429 /* SDL_cocoakeyboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoakeyboard.m; sourceTree = ""; }; + B3981E2629239F4100A82429 /* SDL_cocoaopengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaopengl.h; sourceTree = ""; }; + B3981E2729239F4100A82429 /* SDL_cocoashape.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoashape.m; sourceTree = ""; }; + B3981E2829239F4100A82429 /* SDL_cocoavulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoavulkan.h; sourceTree = ""; }; + B3981E2929239F4100A82429 /* SDL_cocoaopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaopengles.h; sourceTree = ""; }; + B3981E2A29239F4100A82429 /* SDL_cocoamodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamodes.h; sourceTree = ""; }; + B3981E2B29239F4100A82429 /* SDL_cocoawindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoawindow.h; sourceTree = ""; }; + B3981E2C29239F4100A82429 /* SDL_cocoavideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoavideo.h; sourceTree = ""; }; + B3981E2D29239F4100A82429 /* SDL_cocoamessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamessagebox.h; sourceTree = ""; }; + B3981E2E29239F4100A82429 /* SDL_cocoaclipboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaclipboard.m; sourceTree = ""; }; + B3981E2F29239F4100A82429 /* SDL_cocoaevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaevents.h; sourceTree = ""; }; + B3981E3029239F4100A82429 /* SDL_cocoamousetap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamousetap.m; sourceTree = ""; }; + B3981E3129239F4100A82429 /* SDL_cocoamouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamouse.h; sourceTree = ""; }; + B3981E3229239F4100A82429 /* SDL_cocoametalview.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoametalview.m; sourceTree = ""; }; + B3981E3429239F4100A82429 /* SDL_emscriptenvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_emscriptenvideo.h; sourceTree = ""; }; + B3981E3529239F4100A82429 /* SDL_emscriptenevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_emscriptenevents.c; sourceTree = ""; }; + B3981E3629239F4100A82429 /* SDL_emscriptenmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_emscriptenmouse.h; sourceTree = ""; }; + B3981E3729239F4100A82429 /* SDL_emscriptenopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_emscriptenopengles.h; sourceTree = ""; }; + B3981E3829239F4100A82429 /* SDL_emscriptenframebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_emscriptenframebuffer.c; sourceTree = ""; }; + B3981E3929239F4100A82429 /* SDL_emscriptenvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_emscriptenvideo.c; sourceTree = ""; }; + B3981E3A29239F4100A82429 /* SDL_emscriptenmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_emscriptenmouse.c; sourceTree = ""; }; + B3981E3B29239F4100A82429 /* SDL_emscriptenopengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_emscriptenopengles.c; sourceTree = ""; }; + B3981E3C29239F4100A82429 /* SDL_emscriptenevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_emscriptenevents.h; sourceTree = ""; }; + B3981E3D29239F4100A82429 /* SDL_emscriptenframebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_emscriptenframebuffer.h; sourceTree = ""; }; + B3981E3F29239F4100A82429 /* SDL_pandora.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pandora.h; sourceTree = ""; }; + B3981E4029239F4100A82429 /* SDL_pandora_events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pandora_events.h; sourceTree = ""; }; + B3981E4129239F4100A82429 /* SDL_pandora.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pandora.c; sourceTree = ""; }; + B3981E4229239F4100A82429 /* SDL_pandora_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pandora_events.c; sourceTree = ""; }; + B3981E4429239F4100A82429 /* SDL_kmsdrmvulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_kmsdrmvulkan.h; sourceTree = ""; }; + B3981E4529239F4100A82429 /* SDL_kmsdrmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_kmsdrmsym.h; sourceTree = ""; }; + B3981E4629239F4100A82429 /* SDL_kmsdrmmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_kmsdrmmouse.h; sourceTree = ""; }; + B3981E4729239F4100A82429 /* SDL_kmsdrmdyn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_kmsdrmdyn.h; sourceTree = ""; }; + B3981E4829239F4100A82429 /* SDL_kmsdrmevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_kmsdrmevents.h; sourceTree = ""; }; + B3981E4929239F4100A82429 /* SDL_kmsdrmvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_kmsdrmvideo.h; sourceTree = ""; }; + B3981E4A29239F4100A82429 /* SDL_kmsdrmopengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_kmsdrmopengles.c; sourceTree = ""; }; + B3981E4B29239F4100A82429 /* SDL_kmsdrmvulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_kmsdrmvulkan.c; sourceTree = ""; }; + B3981E4C29239F4100A82429 /* SDL_kmsdrmevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_kmsdrmevents.c; sourceTree = ""; }; + B3981E4D29239F4100A82429 /* SDL_kmsdrmdyn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_kmsdrmdyn.c; sourceTree = ""; }; + B3981E4E29239F4100A82429 /* SDL_kmsdrmmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_kmsdrmmouse.c; sourceTree = ""; }; + B3981E4F29239F4100A82429 /* SDL_kmsdrmopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_kmsdrmopengles.h; sourceTree = ""; }; + B3981E5029239F4100A82429 /* SDL_kmsdrmvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_kmsdrmvideo.c; sourceTree = ""; }; + B3981E5129239F4100A82429 /* SDL_egl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_egl.c; sourceTree = ""; }; + B3981E5329239F4100A82429 /* SDL_winrtopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtopengles.h; sourceTree = ""; }; + B3981E5429239F4100A82429 /* SDL_winrtvideo_cpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtvideo_cpp.h; sourceTree = ""; }; + B3981E5529239F4100A82429 /* SDL_winrtpointerinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtpointerinput.cpp; sourceTree = ""; }; + B3981E5629239F4100A82429 /* SDL_winrtgamebar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtgamebar.cpp; sourceTree = ""; }; + B3981E5729239F4100A82429 /* SDL_winrtmouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtmouse.cpp; sourceTree = ""; }; + B3981E5829239F4100A82429 /* SDL_winrtmessagebox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtmessagebox.cpp; sourceTree = ""; }; + B3981E5929239F4100A82429 /* SDL_winrtvideo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtvideo.cpp; sourceTree = ""; }; + B3981E5A29239F4100A82429 /* SDL_winrtevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtevents_c.h; sourceTree = ""; }; + B3981E5B29239F4100A82429 /* SDL_winrtopengles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtopengles.cpp; sourceTree = ""; }; + B3981E5C29239F4100A82429 /* SDL_winrtmessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtmessagebox.h; sourceTree = ""; }; + B3981E5D29239F4100A82429 /* SDL_winrtgamebar_cpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtgamebar_cpp.h; sourceTree = ""; }; + B3981E5E29239F4100A82429 /* SDL_winrtkeyboard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtkeyboard.cpp; sourceTree = ""; }; + B3981E5F29239F4100A82429 /* SDL_winrtmouse_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtmouse_c.h; sourceTree = ""; }; + B3981E6029239F4100A82429 /* SDL_winrtevents.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtevents.cpp; sourceTree = ""; }; + B3981E6229239F4100A82429 /* SDL_androidvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidvideo.c; sourceTree = ""; }; + B3981E6329239F4100A82429 /* SDL_androidmessagebox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidmessagebox.c; sourceTree = ""; }; + B3981E6429239F4100A82429 /* SDL_androidclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidclipboard.h; sourceTree = ""; }; + B3981E6529239F4100A82429 /* SDL_androidmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidmouse.c; sourceTree = ""; }; + B3981E6629239F4100A82429 /* SDL_androidvulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidvulkan.c; sourceTree = ""; }; + B3981E6729239F4100A82429 /* SDL_androidgl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidgl.h; sourceTree = ""; }; + B3981E6829239F4100A82429 /* SDL_androidkeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidkeyboard.c; sourceTree = ""; }; + B3981E6929239F4100A82429 /* SDL_androidwindow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidwindow.c; sourceTree = ""; }; + B3981E6A29239F4100A82429 /* SDL_androidevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidevents.c; sourceTree = ""; }; + B3981E6B29239F4100A82429 /* SDL_androidtouch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidtouch.h; sourceTree = ""; }; + B3981E6C29239F4100A82429 /* SDL_androidclipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidclipboard.c; sourceTree = ""; }; + B3981E6D29239F4100A82429 /* SDL_androidmessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidmessagebox.h; sourceTree = ""; }; + B3981E6E29239F4100A82429 /* SDL_androidvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidvideo.h; sourceTree = ""; }; + B3981E6F29239F4100A82429 /* SDL_androidgl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidgl.c; sourceTree = ""; }; + B3981E7029239F4100A82429 /* SDL_androidmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidmouse.h; sourceTree = ""; }; + B3981E7129239F4100A82429 /* SDL_androidvulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidvulkan.h; sourceTree = ""; }; + B3981E7229239F4100A82429 /* SDL_androidwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidwindow.h; sourceTree = ""; }; + B3981E7329239F4100A82429 /* SDL_androidkeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidkeyboard.h; sourceTree = ""; }; + B3981E7429239F4100A82429 /* SDL_androidevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidevents.h; sourceTree = ""; }; + B3981E7529239F4100A82429 /* SDL_androidtouch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidtouch.c; sourceTree = ""; }; + B3981E7729239F4100A82429 /* SDL_naclopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_naclopengles.h; sourceTree = ""; }; + B3981E7829239F4100A82429 /* SDL_naclvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_naclvideo.h; sourceTree = ""; }; + B3981E7929239F4100A82429 /* SDL_naclglue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_naclglue.c; sourceTree = ""; }; + B3981E7A29239F4100A82429 /* SDL_naclwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_naclwindow.h; sourceTree = ""; }; + B3981E7B29239F4100A82429 /* SDL_naclevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_naclevents_c.h; sourceTree = ""; }; + B3981E7C29239F4100A82429 /* SDL_naclopengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_naclopengles.c; sourceTree = ""; }; + B3981E7D29239F4100A82429 /* SDL_naclvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_naclvideo.c; sourceTree = ""; }; + B3981E7E29239F4100A82429 /* SDL_naclwindow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_naclwindow.c; sourceTree = ""; }; + B3981E7F29239F4100A82429 /* SDL_naclevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_naclevents.c; sourceTree = ""; }; + B3981E8129239F4100A82429 /* SDL_DirectFB_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_opengl.h; sourceTree = ""; }; + B3981E8229239F4100A82429 /* SDL_DirectFB_modes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_modes.h; sourceTree = ""; }; + B3981E8329239F4100A82429 /* SDL_DirectFB_WM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_WM.h; sourceTree = ""; }; + B3981E8429239F4100A82429 /* SDL_DirectFB_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_vulkan.h; sourceTree = ""; }; + B3981E8529239F4100A82429 /* SDL_DirectFB_dyn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_dyn.h; sourceTree = ""; }; + B3981E8629239F4100A82429 /* SDL_DirectFB_shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_shape.c; sourceTree = ""; }; + B3981E8729239F4100A82429 /* SDL_DirectFB_window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_window.h; sourceTree = ""; }; + B3981E8829239F4100A82429 /* SDL_DirectFB_mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_mouse.h; sourceTree = ""; }; + B3981E8929239F4100A82429 /* SDL_DirectFB_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_render.c; sourceTree = ""; }; + B3981E8A29239F4100A82429 /* SDL_DirectFB_events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_events.h; sourceTree = ""; }; + B3981E8B29239F4100A82429 /* SDL_DirectFB_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_video.h; sourceTree = ""; }; + B3981E8C29239F4100A82429 /* SDL_DirectFB_modes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_modes.c; sourceTree = ""; }; + B3981E8D29239F4100A82429 /* SDL_DirectFB_opengl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_opengl.c; sourceTree = ""; }; + B3981E8E29239F4100A82429 /* SDL_DirectFB_shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_shape.h; sourceTree = ""; }; + B3981E8F29239F4100A82429 /* SDL_DirectFB_dyn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_dyn.c; sourceTree = ""; }; + B3981E9029239F4100A82429 /* SDL_DirectFB_vulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_vulkan.c; sourceTree = ""; }; + B3981E9129239F4100A82429 /* SDL_DirectFB_WM.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_WM.c; sourceTree = ""; }; + B3981E9229239F4100A82429 /* SDL_DirectFB_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_DirectFB_render.h; sourceTree = ""; }; + B3981E9329239F4100A82429 /* SDL_DirectFB_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_mouse.c; sourceTree = ""; }; + B3981E9429239F4100A82429 /* SDL_DirectFB_window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_window.c; sourceTree = ""; }; + B3981E9529239F4100A82429 /* SDL_DirectFB_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_video.c; sourceTree = ""; }; + B3981E9629239F4100A82429 /* SDL_DirectFB_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_DirectFB_events.c; sourceTree = ""; }; + B3981E9729239F4100A82429 /* SDL_blit_1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blit_1.c; sourceTree = ""; }; + B3981E9929239F4100A82429 /* SDL_x11touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11touch.h; sourceTree = ""; }; + B3981E9A29239F4100A82429 /* SDL_x11messagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11messagebox.h; sourceTree = ""; }; + B3981E9B29239F4100A82429 /* SDL_x11modes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11modes.c; sourceTree = ""; }; + B3981E9C29239F4100A82429 /* SDL_x11opengl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11opengl.c; sourceTree = ""; }; + B3981E9D29239F4100A82429 /* SDL_x11vulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11vulkan.c; sourceTree = ""; }; + B3981E9E29239F4100A82429 /* SDL_x11shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11shape.h; sourceTree = ""; }; + B3981E9F29239F4100A82429 /* SDL_x11xinput2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11xinput2.c; sourceTree = ""; }; + B3981EA029239F4100A82429 /* SDL_x11opengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11opengles.h; sourceTree = ""; }; + B3981EA129239F4100A82429 /* SDL_x11mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11mouse.c; sourceTree = ""; }; + B3981EA229239F4100A82429 /* SDL_x11dyn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11dyn.c; sourceTree = ""; }; + B3981EA329239F4100A82429 /* SDL_x11framebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11framebuffer.c; sourceTree = ""; }; + B3981EA429239F4100A82429 /* SDL_x11window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11window.c; sourceTree = ""; }; + B3981EA529239F4100A82429 /* SDL_x11video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11video.c; sourceTree = ""; }; + B3981EA629239F4100A82429 /* imKStoUCS.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = imKStoUCS.c; sourceTree = ""; }; + B3981EA729239F4100A82429 /* SDL_x11events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11events.c; sourceTree = ""; }; + B3981EA829239F4100A82429 /* SDL_x11clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11clipboard.c; sourceTree = ""; }; + B3981EA929239F4100A82429 /* SDL_x11keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11keyboard.c; sourceTree = ""; }; + B3981EAA29239F4100A82429 /* SDL_x11sym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11sym.h; sourceTree = ""; }; + B3981EAB29239F4100A82429 /* SDL_x11opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11opengl.h; sourceTree = ""; }; + B3981EAC29239F4100A82429 /* SDL_x11modes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11modes.h; sourceTree = ""; }; + B3981EAD29239F4100A82429 /* SDL_x11messagebox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11messagebox.c; sourceTree = ""; }; + B3981EAE29239F4100A82429 /* SDL_x11touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11touch.c; sourceTree = ""; }; + B3981EAF29239F4100A82429 /* edid-parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "edid-parse.c"; sourceTree = ""; }; + B3981EB029239F4100A82429 /* SDL_x11xinput2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11xinput2.h; sourceTree = ""; }; + B3981EB129239F4100A82429 /* edid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = edid.h; sourceTree = ""; }; + B3981EB229239F4100A82429 /* SDL_x11vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11vulkan.h; sourceTree = ""; }; + B3981EB329239F4100A82429 /* SDL_x11shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11shape.c; sourceTree = ""; }; + B3981EB429239F4100A82429 /* SDL_x11window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11window.h; sourceTree = ""; }; + B3981EB529239F4100A82429 /* SDL_x11framebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11framebuffer.h; sourceTree = ""; }; + B3981EB629239F4100A82429 /* SDL_x11dyn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11dyn.h; sourceTree = ""; }; + B3981EB729239F4100A82429 /* SDL_x11mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11mouse.h; sourceTree = ""; }; + B3981EB829239F4100A82429 /* SDL_x11opengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_x11opengles.c; sourceTree = ""; }; + B3981EB929239F4200A82429 /* SDL_x11keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11keyboard.h; sourceTree = ""; }; + B3981EBA29239F4200A82429 /* SDL_x11clipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11clipboard.h; sourceTree = ""; }; + B3981EBB29239F4200A82429 /* SDL_x11events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11events.h; sourceTree = ""; }; + B3981EBC29239F4200A82429 /* imKStoUCS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imKStoUCS.h; sourceTree = ""; }; + B3981EBD29239F4200A82429 /* SDL_x11video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_x11video.h; sourceTree = ""; }; + B3981EC029239F4200A82429 /* gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2ext.h; sourceTree = ""; }; + B3981EC129239F4200A82429 /* gl2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2.h; sourceTree = ""; }; + B3981EC229239F4200A82429 /* gl2platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2platform.h; sourceTree = ""; }; + B3981EC429239F4200A82429 /* khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; + B3981EC629239F4200A82429 /* egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = egl.h; sourceTree = ""; }; + B3981EC729239F4200A82429 /* eglext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglext.h; sourceTree = ""; }; + B3981EC829239F4200A82429 /* eglplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglplatform.h; sourceTree = ""; }; + B3981ECA29239F4200A82429 /* vk_layer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_layer.h; sourceTree = ""; }; + B3981ECB29239F4200A82429 /* vk_icd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_icd.h; sourceTree = ""; }; + B3981ECC29239F4200A82429 /* vulkan_vi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_vi.h; sourceTree = ""; }; + B3981ECD29239F4200A82429 /* vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = ""; }; + B3981ECE29239F4200A82429 /* vk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = ""; }; + B3981ECF29239F4200A82429 /* vulkan.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vulkan.hpp; sourceTree = ""; }; + B3981ED029239F4200A82429 /* vulkan_fuchsia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_fuchsia.h; sourceTree = ""; }; + B3981ED129239F4200A82429 /* vulkan_wayland.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_wayland.h; sourceTree = ""; }; + B3981ED229239F4200A82429 /* vulkan_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_win32.h; sourceTree = ""; }; + B3981ED329239F4200A82429 /* vulkan_macos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_macos.h; sourceTree = ""; }; + B3981ED429239F4200A82429 /* vulkan_xlib_xrandr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib_xrandr.h; sourceTree = ""; }; + B3981ED529239F4200A82429 /* vulkan_xcb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xcb.h; sourceTree = ""; }; + B3981ED629239F4200A82429 /* vulkan_ggp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_ggp.h; sourceTree = ""; }; + B3981ED729239F4200A82429 /* vulkan_xlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib.h; sourceTree = ""; }; + B3981ED829239F4200A82429 /* vulkan_directfb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_directfb.h; sourceTree = ""; }; + B3981ED929239F4200A82429 /* vulkan_ios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_ios.h; sourceTree = ""; }; + B3981EDA29239F4200A82429 /* vulkan_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_core.h; sourceTree = ""; }; + B3981EDB29239F4200A82429 /* vk_sdk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_sdk_platform.h; sourceTree = ""; }; + B3981EDC29239F4200A82429 /* vulkan_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_android.h; sourceTree = ""; }; + B3981EDD29239F4200A82429 /* vulkan_metal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_metal.h; sourceTree = ""; }; + B3981EDE29239F4200A82429 /* vulkan_beta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_beta.h; sourceTree = ""; }; + B3981EDF29239F4200A82429 /* SDL_blit_auto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blit_auto.h; sourceTree = ""; }; + B3981EE029239F4200A82429 /* SDL_pixels_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pixels_c.h; sourceTree = ""; }; + B3981EE229239F4200A82429 /* pixman-arm-neon-asm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "pixman-arm-neon-asm.h"; sourceTree = ""; }; + B3981EE329239F4200A82429 /* pixman-arm-neon-asm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "pixman-arm-neon-asm.S"; sourceTree = ""; }; + B3981EE429239F4200A82429 /* pixman-arm-asm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "pixman-arm-asm.h"; sourceTree = ""; }; + B3981EE529239F4200A82429 /* pixman-arm-simd-asm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "pixman-arm-simd-asm.S"; sourceTree = ""; }; + B3981EE629239F4200A82429 /* pixman-arm-simd-asm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "pixman-arm-simd-asm.h"; sourceTree = ""; }; + B3981EE829239F4200A82429 /* SDL_windowsmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsmouse.c; sourceTree = ""; }; + B3981EE929239F4200A82429 /* SDL_windowsopengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsopengles.c; sourceTree = ""; }; + B3981EEA29239F4200A82429 /* SDL_windowsvulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsvulkan.c; sourceTree = ""; }; + B3981EEB29239F4200A82429 /* SDL_windowsopengl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsopengl.c; sourceTree = ""; }; + B3981EEC29239F4200A82429 /* SDL_windowsvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsvideo.c; sourceTree = ""; }; + B3981EED29239F4200A82429 /* SDL_windowskeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowskeyboard.h; sourceTree = ""; }; + B3981EEE29239F4200A82429 /* SDL_windowsframebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsframebuffer.c; sourceTree = ""; }; + B3981EEF29239F4200A82429 /* SDL_windowsmodes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsmodes.c; sourceTree = ""; }; + B3981EF029239F4200A82429 /* SDL_windowsclipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsclipboard.c; sourceTree = ""; }; + B3981EF129239F4200A82429 /* SDL_windowstaskdialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowstaskdialog.h; sourceTree = ""; }; + B3981EF229239F4200A82429 /* SDL_windowsmessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsmessagebox.h; sourceTree = ""; }; + B3981EF329239F4200A82429 /* SDL_windowsevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsevents.c; sourceTree = ""; }; + B3981EF429239F4200A82429 /* SDL_vkeys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vkeys.h; sourceTree = ""; }; + B3981EF529239F4200A82429 /* SDL_windowsshape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsshape.h; sourceTree = ""; }; + B3981EF629239F4200A82429 /* SDL_windowswindow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowswindow.c; sourceTree = ""; }; + B3981EF729239F4200A82429 /* wmmsg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wmmsg.h; sourceTree = ""; }; + B3981EF829239F4200A82429 /* SDL_windowsopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsopengles.h; sourceTree = ""; }; + B3981EF929239F4200A82429 /* SDL_windowsvulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsvulkan.h; sourceTree = ""; }; + B3981EFA29239F4200A82429 /* SDL_msctf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_msctf.h; sourceTree = ""; }; + B3981EFB29239F4200A82429 /* SDL_windowsmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsmouse.h; sourceTree = ""; }; + B3981EFC29239F4200A82429 /* SDL_windowsframebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsframebuffer.h; sourceTree = ""; }; + B3981EFD29239F4200A82429 /* SDL_windowskeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowskeyboard.c; sourceTree = ""; }; + B3981EFE29239F4200A82429 /* SDL_windowsvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsvideo.h; sourceTree = ""; }; + B3981EFF29239F4200A82429 /* SDL_windowsopengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsopengl.h; sourceTree = ""; }; + B3981F0029239F4200A82429 /* SDL_windowsevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsevents.h; sourceTree = ""; }; + B3981F0129239F4200A82429 /* SDL_windowsmessagebox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsmessagebox.c; sourceTree = ""; }; + B3981F0229239F4200A82429 /* SDL_windowsclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsclipboard.h; sourceTree = ""; }; + B3981F0329239F4200A82429 /* SDL_windowsmodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsmodes.h; sourceTree = ""; }; + B3981F0429239F4200A82429 /* SDL_windowswindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowswindow.h; sourceTree = ""; }; + B3981F0529239F4200A82429 /* SDL_windowsshape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsshape.c; sourceTree = ""; }; + B3981F0629239F4200A82429 /* SDL_blit_copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blit_copy.h; sourceTree = ""; }; + B3981F0729239F4200A82429 /* SDL_RLEaccel_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_RLEaccel_c.h; sourceTree = ""; }; + B3981F0829239F4200A82429 /* SDL_fillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_fillrect.c; sourceTree = ""; }; + B3981F0929239F4200A82429 /* SDL_shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_shape.c; sourceTree = ""; }; + B3981F0A29239F4200A82429 /* SDL_yuv_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_yuv_c.h; sourceTree = ""; }; + B3981F0B29239F4200A82429 /* SDL_blit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blit.h; sourceTree = ""; }; + B3981F0D29239F4200A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3981F0E29239F4200A82429 /* yuv_rgb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuv_rgb.c; sourceTree = ""; }; + B3981F0F29239F4200A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3981F1029239F4200A82429 /* yuv_rgb_sse_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_sse_func.h; sourceTree = ""; }; + B3981F1129239F4200A82429 /* yuv_rgb_std_func.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_std_func.h; sourceTree = ""; }; + B3981F1229239F4200A82429 /* yuv_rgb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuv_rgb.h; sourceTree = ""; }; + B3981F1329239F4200A82429 /* SDL_bmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_bmp.c; sourceTree = ""; }; + B3981F1429239F4200A82429 /* SDL_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_assert.c; sourceTree = ""; }; + B3981F1729239F4200A82429 /* SDL_syslocale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syslocale.c; sourceTree = ""; }; + B3981F1929239F4200A82429 /* SDL_syslocale.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_syslocale.cc; sourceTree = ""; }; + B3981F1B29239F4200A82429 /* SDL_syslocale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syslocale.c; sourceTree = ""; }; + B3981F1D29239F4200A82429 /* SDL_syslocale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syslocale.c; sourceTree = ""; }; + B3981F1F29239F4200A82429 /* SDL_syslocale.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_syslocale.m; sourceTree = ""; }; + B3981F2129239F4200A82429 /* SDL_syslocale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syslocale.c; sourceTree = ""; }; + B3981F2329239F4200A82429 /* SDL_syslocale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syslocale.c; sourceTree = ""; }; + B3981F2429239F4200A82429 /* SDL_syslocale.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syslocale.h; sourceTree = ""; }; + B3981F2629239F4200A82429 /* SDL_syslocale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syslocale.c; sourceTree = ""; }; + B3981F2729239F4200A82429 /* SDL_locale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_locale.c; sourceTree = ""; }; + B3981F2B29239F4200A82429 /* geniconv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = geniconv.h; sourceTree = ""; }; + B3981F2C29239F4200A82429 /* makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = ""; }; + B3981F2D29239F4200A82429 /* sys2utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sys2utf8.c; sourceTree = ""; }; + B3981F2E29239F4200A82429 /* os2iconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = os2iconv.c; sourceTree = ""; }; + B3981F2F29239F4200A82429 /* os2cp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = os2cp.c; sourceTree = ""; }; + B3981F3029239F4200A82429 /* iconv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iconv.h; sourceTree = ""; }; + B3981F3129239F4200A82429 /* geniconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = geniconv.c; sourceTree = ""; }; + B3981F3229239F4200A82429 /* test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = ""; }; + B3981F3329239F4200A82429 /* os2cp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = os2cp.h; sourceTree = ""; }; + B3981F3429239F4200A82429 /* SDL_os2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_os2.h; sourceTree = ""; }; + B3981F3529239F4200A82429 /* SDL_os2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2.c; sourceTree = ""; }; + B3981F3729239F4200A82429 /* SDL_evdev_kbd_freebsd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_evdev_kbd_freebsd.c; sourceTree = ""; }; + B3981F3829239F4200A82429 /* SDL_evdev_kbd_default_keyaccmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_evdev_kbd_default_keyaccmap.h; sourceTree = ""; }; + B3981F3A29239F4200A82429 /* SDL_poll.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_poll.c; sourceTree = ""; }; + B3981F3B29239F4200A82429 /* SDL_poll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_poll.h; sourceTree = ""; }; + B3981F3D29239F4200A82429 /* SDL_dbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dbus.h; sourceTree = ""; }; + B3981F3E29239F4200A82429 /* SDL_threadprio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_threadprio.c; sourceTree = ""; }; + B3981F3F29239F4200A82429 /* SDL_ibus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_ibus.h; sourceTree = ""; }; + B3981F4029239F4200A82429 /* SDL_evdev_kbd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_evdev_kbd.h; sourceTree = ""; }; + B3981F4129239F4200A82429 /* SDL_evdev_capabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_evdev_capabilities.h; sourceTree = ""; }; + B3981F4229239F4200A82429 /* SDL_fcitx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_fcitx.c; sourceTree = ""; }; + B3981F4329239F4200A82429 /* SDL_evdev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_evdev.c; sourceTree = ""; }; + B3981F4429239F4200A82429 /* SDL_ime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_ime.c; sourceTree = ""; }; + B3981F4529239F4200A82429 /* SDL_udev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_udev.c; sourceTree = ""; }; + B3981F4629239F4200A82429 /* SDL_evdev_kbd_default_accents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_evdev_kbd_default_accents.h; sourceTree = ""; }; + B3981F4729239F4200A82429 /* SDL_dbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dbus.c; sourceTree = ""; }; + B3981F4829239F4200A82429 /* SDL_evdev_kbd_default_keymap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_evdev_kbd_default_keymap.h; sourceTree = ""; }; + B3981F4929239F4200A82429 /* SDL_evdev_capabilities.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_evdev_capabilities.c; sourceTree = ""; }; + B3981F4A29239F4200A82429 /* SDL_ibus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_ibus.c; sourceTree = ""; }; + B3981F4B29239F4200A82429 /* SDL_evdev_kbd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_evdev_kbd.c; sourceTree = ""; }; + B3981F4C29239F4200A82429 /* SDL_ime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_ime.h; sourceTree = ""; }; + B3981F4D29239F4200A82429 /* SDL_evdev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_evdev.h; sourceTree = ""; }; + B3981F4E29239F4200A82429 /* SDL_fcitx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_fcitx.h; sourceTree = ""; }; + B3981F4F29239F4200A82429 /* SDL_udev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_udev.h; sourceTree = ""; }; + B3981F5129239F4200A82429 /* SDL_winrtapp_direct3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtapp_direct3d.h; sourceTree = ""; }; + B3981F5229239F4200A82429 /* SDL_winrtapp_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtapp_common.cpp; sourceTree = ""; }; + B3981F5329239F4200A82429 /* SDL_winrtapp_xaml.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtapp_xaml.cpp; sourceTree = ""; }; + B3981F5429239F4200A82429 /* SDL_winrtapp_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtapp_common.h; sourceTree = ""; }; + B3981F5529239F4200A82429 /* SDL_winrtapp_xaml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winrtapp_xaml.h; sourceTree = ""; }; + B3981F5629239F4200A82429 /* SDL_winrtapp_direct3d.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrtapp_direct3d.cpp; sourceTree = ""; }; + B3981F5829239F4200A82429 /* SDL_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_android.h; sourceTree = ""; }; + B3981F5929239F4200A82429 /* keyinfotable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyinfotable.h; sourceTree = ""; }; + B3981F5A29239F4200A82429 /* SDL_android.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_android.c; sourceTree = ""; }; + B3981F5C29239F4200A82429 /* SDL_wscons_kbd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_wscons_kbd.c; sourceTree = ""; }; + B3981F5D29239F4200A82429 /* SDL_wscons_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_wscons_mouse.c; sourceTree = ""; }; + B3981F5E29239F4200A82429 /* SDL_wscons.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_wscons.h; sourceTree = ""; }; + B3981F6029239F4200A82429 /* SDL_xinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_xinput.h; sourceTree = ""; }; + B3981F6129239F4200A82429 /* SDL_hid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hid.h; sourceTree = ""; }; + B3981F6229239F4200A82429 /* SDL_windows.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windows.c; sourceTree = ""; }; + B3981F6329239F4200A82429 /* SDL_hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hid.c; sourceTree = ""; }; + B3981F6429239F4200A82429 /* SDL_xinput.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_xinput.c; sourceTree = ""; }; + B3981F6529239F4200A82429 /* SDL_directx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_directx.h; sourceTree = ""; }; + B3981F6629239F4200A82429 /* SDL_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windows.h; sourceTree = ""; }; + B3981F6829239F4200A82429 /* SDL_test_imageBlitBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_imageBlitBlend.c; sourceTree = ""; }; + B3981F6929239F4200A82429 /* SDL_test_imageFace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_imageFace.c; sourceTree = ""; }; + B3981F6A29239F4200A82429 /* SDL_test_harness.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_harness.c; sourceTree = ""; }; + B3981F6B29239F4200A82429 /* SDL_test_imageBlit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_imageBlit.c; sourceTree = ""; }; + B3981F6C29239F4200A82429 /* SDL_test_compare.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_compare.c; sourceTree = ""; }; + B3981F6D29239F4200A82429 /* SDL_test_md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_md5.c; sourceTree = ""; }; + B3981F6E29239F4200A82429 /* SDL_test_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_assert.c; sourceTree = ""; }; + B3981F6F29239F4200A82429 /* SDL_test_imagePrimitives.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_imagePrimitives.c; sourceTree = ""; }; + B3981F7029239F4200A82429 /* SDL_test_random.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_random.c; sourceTree = ""; }; + B3981F7129239F4200A82429 /* SDL_test_font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_font.c; sourceTree = ""; }; + B3981F7229239F4200A82429 /* SDL_test_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_crc32.c; sourceTree = ""; }; + B3981F7329239F4200A82429 /* SDL_test_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_log.c; sourceTree = ""; }; + B3981F7429239F4200A82429 /* SDL_test_imagePrimitivesBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_imagePrimitivesBlend.c; sourceTree = ""; }; + B3981F7529239F4200A82429 /* SDL_test_memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_memory.c; sourceTree = ""; }; + B3981F7629239F4200A82429 /* SDL_test_fuzzer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_fuzzer.c; sourceTree = ""; }; + B3981F7729239F4200A82429 /* SDL_test_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_test_common.c; sourceTree = ""; }; + B3981F7829239F4200A82429 /* SDL_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_log.c; sourceTree = ""; }; + B3981F7A29239F4200A82429 /* SDL_rwops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rwops.c; sourceTree = ""; }; + B3981F7C29239F4200A82429 /* SDL_rwopsbundlesupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rwopsbundlesupport.h; sourceTree = ""; }; + B3981F7D29239F4200A82429 /* SDL_rwopsbundlesupport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_rwopsbundlesupport.m; sourceTree = ""; }; + B3981F7F29239F4200A82429 /* SDL_timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_timer.c; sourceTree = ""; }; + B3981F8029239F4200A82429 /* SDL_timer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_timer_c.h; sourceTree = ""; }; + B3981F8229239F4200A82429 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systimer.c; sourceTree = ""; }; + B3981F8429239F4200A82429 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systimer.c; sourceTree = ""; }; + B3981F8629239F4200A82429 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systimer.c; sourceTree = ""; }; + B3981F8829239F4200A82429 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systimer.c; sourceTree = ""; }; + B3981F8A29239F4200A82429 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systimer.c; sourceTree = ""; }; + B3981F8C29239F4200A82429 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systimer.c; sourceTree = ""; }; + B3981F8E29239F4200A82429 /* SDL_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render.c; sourceTree = ""; }; + B3981F8F29239F4200A82429 /* SDL_d3dmath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_d3dmath.h; sourceTree = ""; }; + B3981F9129239F4200A82429 /* SDL_render_metal.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_render_metal.m; sourceTree = ""; }; + B3981F9229239F4200A82429 /* SDL_shaders_metal_ios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_ios.h; sourceTree = ""; }; + B3981F9329239F4200A82429 /* SDL_shaders_metal_iphonesimulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_iphonesimulator.h; sourceTree = ""; }; + B3981F9429239F4200A82429 /* SDL_shaders_metal_tvsimulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_tvsimulator.h; sourceTree = ""; }; + B3981F9529239F4200A82429 /* SDL_shaders_metal.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = SDL_shaders_metal.metal; sourceTree = ""; }; + B3981F9629239F4200A82429 /* build-metal-shaders.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "build-metal-shaders.sh"; sourceTree = ""; }; + B3981F9729239F4200A82429 /* SDL_shaders_metal_osx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_osx.h; sourceTree = ""; }; + B3981F9829239F4200A82429 /* SDL_shaders_metal_tvos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_tvos.h; sourceTree = ""; }; + B3981F9A29239F4200A82429 /* SDL_render_d3d11.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render_d3d11.c; sourceTree = ""; }; + B3981F9B29239F4200A82429 /* SDL_render_winrt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_render_winrt.h; sourceTree = ""; }; + B3981F9C29239F4200A82429 /* SDL_shaders_d3d11.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_d3d11.h; sourceTree = ""; }; + B3981F9D29239F4200A82429 /* SDL_render_winrt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_render_winrt.cpp; sourceTree = ""; }; + B3981F9E29239F4200A82429 /* SDL_shaders_d3d11.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_shaders_d3d11.c; sourceTree = ""; }; + B3981FA029239F4200A82429 /* SDL_render_psp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render_psp.c; sourceTree = ""; }; + B3981FA129239F4200A82429 /* SDL_yuv_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_yuv_sw_c.h; sourceTree = ""; }; + B3981FA229239F4200A82429 /* SDL_yuv_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_yuv_sw.c; sourceTree = ""; }; + B3981FA329239F4200A82429 /* SDL_sysrender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysrender.h; sourceTree = ""; }; + B3981FA529239F4200A82429 /* SDL_blendpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blendpoint.c; sourceTree = ""; }; + B3981FA629239F4200A82429 /* SDL_drawline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_drawline.c; sourceTree = ""; }; + B3981FA729239F4200A82429 /* SDL_blendline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blendline.h; sourceTree = ""; }; + B3981FA829239F4200A82429 /* SDL_drawpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_drawpoint.h; sourceTree = ""; }; + B3981FA929239F4200A82429 /* SDL_rotate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rotate.c; sourceTree = ""; }; + B3981FAA29239F4200A82429 /* SDL_render_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_render_sw_c.h; sourceTree = ""; }; + B3981FAB29239F4200A82429 /* SDL_blendfillrect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blendfillrect.h; sourceTree = ""; }; + B3981FAC29239F4200A82429 /* SDL_drawline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_drawline.h; sourceTree = ""; }; + B3981FAD29239F4200A82429 /* SDL_blendpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blendpoint.h; sourceTree = ""; }; + B3981FAE29239F4200A82429 /* SDL_render_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render_sw.c; sourceTree = ""; }; + B3981FAF29239F4200A82429 /* SDL_draw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_draw.h; sourceTree = ""; }; + B3981FB029239F4200A82429 /* SDL_blendline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blendline.c; sourceTree = ""; }; + B3981FB129239F4200A82429 /* SDL_drawpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_drawpoint.c; sourceTree = ""; }; + B3981FB229239F4200A82429 /* SDL_blendfillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_blendfillrect.c; sourceTree = ""; }; + B3981FB329239F4200A82429 /* SDL_rotate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rotate.h; sourceTree = ""; }; + B3981FB429239F4200A82429 /* SDL_d3dmath.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_d3dmath.c; sourceTree = ""; }; + B3981FB629239F4200A82429 /* SDL_render_gles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render_gles.c; sourceTree = ""; }; + B3981FB729239F4200A82429 /* SDL_glesfuncs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_glesfuncs.h; sourceTree = ""; }; + B3981FB929239F4200A82429 /* SDL_render_gles2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render_gles2.c; sourceTree = ""; }; + B3981FBA29239F4200A82429 /* SDL_shaders_gles2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_gles2.h; sourceTree = ""; }; + B3981FBB29239F4200A82429 /* SDL_gles2funcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gles2funcs.h; sourceTree = ""; }; + B3981FBC29239F4200A82429 /* SDL_shaders_gles2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_shaders_gles2.c; sourceTree = ""; }; + B3981FBE29239F4200A82429 /* SDL_shaders_d3d.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_shaders_d3d.c; sourceTree = ""; }; + B3981FBF29239F4200A82429 /* SDL_render_d3d.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render_d3d.c; sourceTree = ""; }; + B3981FC029239F4200A82429 /* SDL_shaders_d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_d3d.h; sourceTree = ""; }; + B3981FC229239F4200A82429 /* SDL_shaders_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_gl.h; sourceTree = ""; }; + B3981FC329239F4200A82429 /* SDL_glfuncs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_glfuncs.h; sourceTree = ""; }; + B3981FC429239F4200A82429 /* SDL_render_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_render_gl.c; sourceTree = ""; }; + B3981FC529239F4200A82429 /* SDL_shaders_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_shaders_gl.c; sourceTree = ""; }; + B3981FC629239F4200A82429 /* SDL_dataqueue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dataqueue.c; sourceTree = ""; }; + B3981FC929239F4200A82429 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + B3981FCB29239F4200A82429 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + B3981FCD29239F4200A82429 /* SDL_sysfilesystem.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_sysfilesystem.cc; sourceTree = ""; }; + B3981FCF29239F4200A82429 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + B3981FD129239F4200A82429 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_sysfilesystem.m; sourceTree = ""; }; + B3981FD329239F4200A82429 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + B3981FD529239F4200A82429 /* SDL_sysfilesystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_sysfilesystem.cpp; sourceTree = ""; }; + B3981FD729239F4200A82429 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + B3981FD929239F4200A82429 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + B3981FDB29239F4200A82429 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + B3981FDD29239F4200A82429 /* SDL_spinlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_spinlock.c; sourceTree = ""; }; + B3981FDE29239F4200A82429 /* SDL_atomic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_atomic.c; sourceTree = ""; }; + B3981FDF29239F4200A82429 /* SDL.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL.c; sourceTree = ""; }; + B3981FE029239F4200A82429 /* SDL_error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_error.c; sourceTree = ""; }; + B3981FE229239F4200A82429 /* SDL_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_mixer.c; sourceTree = ""; }; + B3981FE329239F4200A82429 /* SDL_wave.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_wave.c; sourceTree = ""; }; + B3981FE529239F4200A82429 /* SDL_sunaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sunaudio.c; sourceTree = ""; }; + B3981FE629239F4200A82429 /* SDL_sunaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sunaudio.h; sourceTree = ""; }; + B3981FE829239F4200A82429 /* SDL_qsa_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_qsa_audio.h; sourceTree = ""; }; + B3981FE929239F4200A82429 /* SDL_qsa_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_qsa_audio.c; sourceTree = ""; }; + B3981FEB29239F4200A82429 /* SDL_artsaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_artsaudio.c; sourceTree = ""; }; + B3981FEC29239F4200A82429 /* SDL_artsaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_artsaudio.h; sourceTree = ""; }; + B3981FEE29239F4200A82429 /* SDL_dummyaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dummyaudio.h; sourceTree = ""; }; + B3981FEF29239F4200A82429 /* SDL_dummyaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dummyaudio.c; sourceTree = ""; }; + B3981FF129239F4200A82429 /* SDL_os2audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_os2audio.c; sourceTree = ""; }; + B3981FF229239F4200A82429 /* SDL_os2audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_os2audio.h; sourceTree = ""; }; + B3981FF329239F4200A82429 /* SDL_audio_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_audio_c.h; sourceTree = ""; }; + B3981FF529239F4200A82429 /* SDL_pulseaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pulseaudio.h; sourceTree = ""; }; + B3981FF629239F4200A82429 /* SDL_pulseaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pulseaudio.c; sourceTree = ""; }; + B3981FF729239F4200A82429 /* SDL_audiodev_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_audiodev_c.h; sourceTree = ""; }; + B3981FF929239F4200A82429 /* SDL_esdaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_esdaudio.c; sourceTree = ""; }; + B3981FFA29239F4200A82429 /* SDL_esdaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_esdaudio.h; sourceTree = ""; }; + B3981FFC29239F4200A82429 /* SDL_fsaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_fsaudio.h; sourceTree = ""; }; + B3981FFD29239F4200A82429 /* SDL_fsaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_fsaudio.c; sourceTree = ""; }; + B3981FFF29239F4200A82429 /* SDL_sndioaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sndioaudio.h; sourceTree = ""; }; + B398200029239F4200A82429 /* SDL_sndioaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sndioaudio.c; sourceTree = ""; }; + B398200229239F4200A82429 /* SDL_nasaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_nasaudio.c; sourceTree = ""; }; + B398200329239F4200A82429 /* SDL_nasaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_nasaudio.h; sourceTree = ""; }; + B398200529239F4200A82429 /* SDL_openslES.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_openslES.c; sourceTree = ""; }; + B398200629239F4200A82429 /* SDL_openslES.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_openslES.h; sourceTree = ""; }; + B398200829239F4200A82429 /* SDL_wasapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_wasapi.h; sourceTree = ""; }; + B398200929239F4200A82429 /* SDL_wasapi_winrt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_wasapi_winrt.cpp; sourceTree = ""; }; + B398200A29239F4200A82429 /* SDL_wasapi_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_wasapi_win32.c; sourceTree = ""; }; + B398200B29239F4200A82429 /* SDL_wasapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_wasapi.c; sourceTree = ""; }; + B398200C29239F4200A82429 /* SDL_audiodev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_audiodev.c; sourceTree = ""; }; + B398200E29239F4200A82429 /* SDL_netbsdaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_netbsdaudio.h; sourceTree = ""; }; + B398200F29239F4200A82429 /* SDL_netbsdaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_netbsdaudio.c; sourceTree = ""; }; + B398201129239F4200A82429 /* SDL_pspaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_pspaudio.c; sourceTree = ""; }; + B398201229239F4200A82429 /* SDL_pspaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pspaudio.h; sourceTree = ""; }; + B398201429239F4200A82429 /* SDL_directsound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_directsound.h; sourceTree = ""; }; + B398201529239F4200A82429 /* SDL_directsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_directsound.c; sourceTree = ""; }; + B398201729239F4200A82429 /* SDL_winmm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_winmm.h; sourceTree = ""; }; + B398201829239F4200A82429 /* SDL_winmm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_winmm.c; sourceTree = ""; }; + B398201A29239F4200A82429 /* SDL_haikuaudio.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_haikuaudio.cc; sourceTree = ""; }; + B398201B29239F4200A82429 /* SDL_haikuaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_haikuaudio.h; sourceTree = ""; }; + B398201C29239F4200A82429 /* SDL_sysaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysaudio.h; sourceTree = ""; }; + B398201D29239F4200A82429 /* SDL_audiotypecvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_audiotypecvt.c; sourceTree = ""; }; + B398201E29239F4200A82429 /* SDL_audiocvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_audiocvt.c; sourceTree = ""; }; + B398201F29239F4200A82429 /* SDL_wave.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_wave.h; sourceTree = ""; }; + B398202129239F4200A82429 /* SDL_emscriptenaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_emscriptenaudio.c; sourceTree = ""; }; + B398202229239F4200A82429 /* SDL_emscriptenaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_emscriptenaudio.h; sourceTree = ""; }; + B398202429239F4200A82429 /* SDL_androidaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidaudio.h; sourceTree = ""; }; + B398202529239F4200A82429 /* SDL_androidaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidaudio.c; sourceTree = ""; }; + B398202729239F4200A82429 /* SDL_naclaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_naclaudio.c; sourceTree = ""; }; + B398202829239F4200A82429 /* SDL_naclaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_naclaudio.h; sourceTree = ""; }; + B398202A29239F4200A82429 /* SDL_jackaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_jackaudio.c; sourceTree = ""; }; + B398202B29239F4200A82429 /* SDL_jackaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_jackaudio.h; sourceTree = ""; }; + B398202D29239F4200A82429 /* SDL_diskaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_diskaudio.h; sourceTree = ""; }; + B398202E29239F4200A82429 /* SDL_diskaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_diskaudio.c; sourceTree = ""; }; + B398203029239F4200A82429 /* SDL_alsa_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_alsa_audio.c; sourceTree = ""; }; + B398203129239F4200A82429 /* SDL_alsa_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_alsa_audio.h; sourceTree = ""; }; + B398203329239F4200A82429 /* SDL_dspaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dspaudio.c; sourceTree = ""; }; + B398203429239F4200A82429 /* SDL_dspaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dspaudio.h; sourceTree = ""; }; + B398203529239F4200A82429 /* SDL_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_audio.c; sourceTree = ""; }; + B398203729239F4200A82429 /* SDL_coreaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_coreaudio.h; sourceTree = ""; }; + B398203829239F4200A82429 /* SDL_coreaudio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_coreaudio.m; sourceTree = ""; }; + B398203A29239F4200A82429 /* SDL_paudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_paudio.h; sourceTree = ""; }; + B398203B29239F4200A82429 /* SDL_paudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_paudio.c; sourceTree = ""; }; + B398203C29239F4200A82429 /* SDL_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_internal.h; sourceTree = ""; }; + B398203F29239F4200A82429 /* SDL_dummysensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dummysensor.h; sourceTree = ""; }; + B398204029239F4200A82429 /* SDL_dummysensor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dummysensor.c; sourceTree = ""; }; + B398204229239F4200A82429 /* SDL_coremotionsensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_coremotionsensor.h; sourceTree = ""; }; + B398204329239F4200A82429 /* SDL_coremotionsensor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_coremotionsensor.m; sourceTree = ""; }; + B398204429239F4200A82429 /* SDL_syssensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syssensor.h; sourceTree = ""; }; + B398204629239F4200A82429 /* SDL_androidsensor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_androidsensor.c; sourceTree = ""; }; + B398204729239F4200A82429 /* SDL_androidsensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_androidsensor.h; sourceTree = ""; }; + B398204929239F4200A82429 /* SDL_windowssensor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowssensor.c; sourceTree = ""; }; + B398204A29239F4200A82429 /* SDL_windowssensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowssensor.h; sourceTree = ""; }; + B398204B29239F4200A82429 /* SDL_sensor_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sensor_c.h; sourceTree = ""; }; + B398204C29239F4200A82429 /* SDL_sensor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sensor.c; sourceTree = ""; }; + B398204F29239F4200A82429 /* hidapi-libusb.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hidapi-libusb.pc.in"; sourceTree = ""; }; + B398205029239F4200A82429 /* hidapi.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = hidapi.pc.in; sourceTree = ""; }; + B398205129239F4200A82429 /* hidapi-hidraw.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hidapi-hidraw.pc.in"; sourceTree = ""; }; + B398205229239F4200A82429 /* HACKING.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = HACKING.txt; sourceTree = ""; }; + B398205429239F4200A82429 /* 99-hid.rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = "99-hid.rules"; sourceTree = ""; }; + B398205529239F4200A82429 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B398205629239F4200A82429 /* bootstrap */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = bootstrap; sourceTree = ""; }; + B398205729239F4200A82429 /* LICENSE-orig.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-orig.txt"; sourceTree = ""; }; + B398205829239F4200A82429 /* SDL_hidapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi.c; sourceTree = ""; }; + B398205A29239F4200A82429 /* Makefile-manual */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-manual"; sourceTree = ""; }; + B398205B29239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398205C29239F4200A82429 /* hid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = hid.m; sourceTree = ""; }; + B398205D29239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398205F29239F4200A82429 /* Makefile-manual */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-manual"; sourceTree = ""; }; + B398206029239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398206129239F4200A82429 /* hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hid.c; sourceTree = ""; }; + B398206229239F4200A82429 /* LICENSE-gpl3.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-gpl3.txt"; sourceTree = ""; }; + B398206429239F4200A82429 /* Makefile-manual */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-manual"; sourceTree = ""; }; + B398206529239F4200A82429 /* hidraw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hidraw.cpp; sourceTree = ""; }; + B398206629239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398206729239F4200A82429 /* hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hid.c; sourceTree = ""; }; + B398206829239F4200A82429 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B398206A29239F4200A82429 /* hid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hid.cpp; sourceTree = ""; }; + B398206B29239F4200A82429 /* project.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = project.properties; sourceTree = ""; }; + B398206D29239F4200A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B398206E29239F4200A82429 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B398207029239F4200A82429 /* Makefile.mingw */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mingw; sourceTree = ""; }; + B398207129239F4200A82429 /* Makefile.linux */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.linux; sourceTree = ""; }; + B398207229239F4200A82429 /* Makefile.mac */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mac; sourceTree = ""; }; + B398207329239F4200A82429 /* Makefile-manual */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-manual"; sourceTree = ""; }; + B398207429239F4200A82429 /* TestGUI.app.in */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = TestGUI.app.in; sourceTree = ""; }; + B398207529239F4200A82429 /* mac_support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mac_support.cpp; sourceTree = ""; }; + B398207629239F4200A82429 /* test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test.cpp; sourceTree = ""; }; + B398207729239F4200A82429 /* testgui.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = testgui.sln; sourceTree = ""; }; + B398207829239F4200A82429 /* Makefile.freebsd */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.freebsd; sourceTree = ""; }; + B398207929239F4200A82429 /* testgui.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testgui.vcproj; sourceTree = ""; }; + B398207A29239F4200A82429 /* mac_support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mac_support.h; sourceTree = ""; }; + B398207B29239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398207C29239F4200A82429 /* copy_to_bundle.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_to_bundle.sh; sourceTree = ""; }; + B398207D29239F4200A82429 /* mac_support_cocoa.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = mac_support_cocoa.m; sourceTree = ""; }; + B398207E29239F4200A82429 /* start.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = start.sh; sourceTree = ""; }; + B398208029239F4200A82429 /* hidapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hidapi.h; sourceTree = ""; }; + B398208229239F4200A82429 /* pkg.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = pkg.m4; sourceTree = ""; }; + B398208329239F4200A82429 /* ax_pthread.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_pthread.m4; sourceTree = ""; }; + B398208429239F4200A82429 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B398208629239F4200A82429 /* Doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile; sourceTree = ""; }; + B398208829239F4200A82429 /* Makefile.mingw */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mingw; sourceTree = ""; }; + B398208929239F4200A82429 /* Makefile-manual */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-manual"; sourceTree = ""; }; + B398208A29239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398208B29239F4200A82429 /* hidapi.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = hidapi.vcproj; sourceTree = ""; }; + B398208C29239F4200A82429 /* hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hid.c; sourceTree = ""; }; + B398208D29239F4200A82429 /* hidapi.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = hidapi.sln; sourceTree = ""; }; + B398208E29239F4200A82429 /* hidtest.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = hidtest.vcproj; sourceTree = ""; }; + B398209029239F4200A82429 /* makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = ""; }; + B398209129239F4200A82429 /* hidapi.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = hidapi.def; sourceTree = ""; }; + B398209229239F4200A82429 /* sources */ = {isa = PBXFileReference; lastKnownFileType = text; path = sources; sourceTree = ""; }; + B398209429239F4200A82429 /* hidtest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hidtest.cpp; sourceTree = ""; }; + B398209529239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398209629239F4200A82429 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B398209729239F4200A82429 /* AUTHORS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS.txt; sourceTree = ""; }; + B398209929239F4200A82429 /* Makefile.linux */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.linux; sourceTree = ""; }; + B398209A29239F4200A82429 /* Makefile-manual */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-manual"; sourceTree = ""; }; + B398209B29239F4200A82429 /* hidusb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = hidusb.cpp; sourceTree = ""; }; + B398209C29239F4200A82429 /* Makefile.freebsd */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.freebsd; sourceTree = ""; }; + B398209D29239F4200A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B398209E29239F4200A82429 /* hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hid.c; sourceTree = ""; }; + B398209F29239F4200A82429 /* LICENSE-bsd.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-bsd.txt"; sourceTree = ""; }; + B39820A129239F4200A82429 /* SDL_iconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_iconv.c; sourceTree = ""; }; + B39820A229239F4200A82429 /* SDL_getenv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_getenv.c; sourceTree = ""; }; + B39820A329239F4200A82429 /* SDL_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_string.c; sourceTree = ""; }; + B39820A429239F4200A82429 /* SDL_strtokr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_strtokr.c; sourceTree = ""; }; + B39820A529239F4200A82429 /* SDL_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_crc32.c; sourceTree = ""; }; + B39820A629239F4200A82429 /* SDL_qsort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_qsort.c; sourceTree = ""; }; + B39820A729239F4200A82429 /* SDL_stdlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_stdlib.c; sourceTree = ""; }; + B39820A829239F4200A82429 /* SDL_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_malloc.c; sourceTree = ""; }; + B39820AB29239F4200A82429 /* SDL_syshaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syshaptic.c; sourceTree = ""; }; + B39820AC29239F4200A82429 /* SDL_haptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_haptic.c; sourceTree = ""; }; + B39820AD29239F4200A82429 /* SDL_haptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_haptic_c.h; sourceTree = ""; }; + B39820AF29239F4200A82429 /* SDL_syshaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syshaptic.c; sourceTree = ""; }; + B39820B129239F4200A82429 /* SDL_syshaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syshaptic.c; sourceTree = ""; }; + B39820B229239F4200A82429 /* SDL_syshaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syshaptic_c.h; sourceTree = ""; }; + B39820B329239F4200A82429 /* SDL_syshaptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syshaptic.h; sourceTree = ""; }; + B39820B529239F4200A82429 /* SDL_syshaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syshaptic.c; sourceTree = ""; }; + B39820B629239F4200A82429 /* SDL_syshaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syshaptic_c.h; sourceTree = ""; }; + B39820B829239F4200A82429 /* SDL_xinputhaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_xinputhaptic_c.h; sourceTree = ""; }; + B39820B929239F4200A82429 /* SDL_xinputhaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_xinputhaptic.c; sourceTree = ""; }; + B39820BA29239F4200A82429 /* SDL_windowshaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowshaptic.c; sourceTree = ""; }; + B39820BB29239F4200A82429 /* SDL_windowshaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowshaptic_c.h; sourceTree = ""; }; + B39820BC29239F4200A82429 /* SDL_dinputhaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dinputhaptic_c.h; sourceTree = ""; }; + B39820BD29239F4200A82429 /* SDL_dinputhaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dinputhaptic.c; sourceTree = ""; }; + B39820BF29239F4200A82429 /* SDL_dynapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dynapi.h; sourceTree = ""; }; + B39820C029239F4200A82429 /* SDL_dynapi_overrides.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dynapi_overrides.h; sourceTree = ""; }; + B39820C129239F4200A82429 /* SDL_dynapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dynapi.c; sourceTree = ""; }; + B39820C229239F4200A82429 /* SDL_dynapi_procs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dynapi_procs.h; sourceTree = ""; }; + B39820C329239F4200A82429 /* gendynapi.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = gendynapi.pl; sourceTree = ""; }; + B39820C529239F4200A82429 /* SDL_gamecontrollerdb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontrollerdb.h; sourceTree = ""; }; + B39820C729239F4200A82429 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysjoystick.c; sourceTree = ""; }; + B39820C929239F4200A82429 /* SDL_steamcontroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_steamcontroller.h; sourceTree = ""; }; + B39820CA29239F4200A82429 /* SDL_steamcontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_steamcontroller.c; sourceTree = ""; }; + B39820CB29239F4200A82429 /* check_8bitdo.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check_8bitdo.sh; sourceTree = ""; }; + B39820CC29239F4200A82429 /* SDL_joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_joystick.c; sourceTree = ""; }; + B39820CE29239F4200A82429 /* SDL_mfijoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mfijoystick_c.h; sourceTree = ""; }; + B39820CF29239F4200A82429 /* SDL_mfijoystick.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDL_mfijoystick.m; sourceTree = ""; }; + B39820D029239F4200A82429 /* SDL_gamecontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_gamecontroller.c; sourceTree = ""; }; + B39820D229239F4200A82429 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysjoystick.c; sourceTree = ""; }; + B39820D329239F4200A82429 /* sort_controllers.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = sort_controllers.py; sourceTree = ""; }; + B39820D529239F4200A82429 /* SDL_bsdjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_bsdjoystick.c; sourceTree = ""; }; + B39820D729239F4200A82429 /* SDL_haikujoystick.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_haikujoystick.cc; sourceTree = ""; }; + B39820D929239F4200A82429 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysjoystick.c; sourceTree = ""; }; + B39820DA29239F4200A82429 /* SDL_sysjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysjoystick_c.h; sourceTree = ""; }; + B39820DC29239F4200A82429 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysjoystick.c; sourceTree = ""; }; + B39820DD29239F4200A82429 /* SDL_sysjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysjoystick_c.h; sourceTree = ""; }; + B39820DF29239F4200A82429 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysjoystick.c; sourceTree = ""; }; + B39820E029239F4200A82429 /* SDL_sysjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysjoystick_c.h; sourceTree = ""; }; + B39820E229239F4200A82429 /* SDL_virtualjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_virtualjoystick_c.h; sourceTree = ""; }; + B39820E329239F4200A82429 /* SDL_virtualjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_virtualjoystick.c; sourceTree = ""; }; + B39820E529239F4200A82429 /* SDL_hidapi_rumble.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hidapi_rumble.h; sourceTree = ""; }; + B39820E729239F4200A82429 /* controller_constants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = controller_constants.h; sourceTree = ""; }; + B39820E829239F4200A82429 /* controller_structs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = controller_structs.h; sourceTree = ""; }; + B39820E929239F4200A82429 /* SDL_hidapi_xbox360.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xbox360.c; sourceTree = ""; }; + B39820EA29239F4200A82429 /* SDL_hidapi_ps4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps4.c; sourceTree = ""; }; + B39820EB29239F4200A82429 /* SDL_hidapijoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapijoystick.c; sourceTree = ""; }; + B39820EC29239F4200A82429 /* SDL_hidapi_xboxone.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xboxone.c; sourceTree = ""; }; + B39820ED29239F4200A82429 /* SDL_hidapi_rumble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_rumble.c; sourceTree = ""; }; + B39820EE29239F4200A82429 /* SDL_hidapi_switch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_switch.c; sourceTree = ""; }; + B39820EF29239F4200A82429 /* SDL_hidapijoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hidapijoystick_c.h; sourceTree = ""; }; + B39820F029239F4200A82429 /* SDL_hidapi_xbox360w.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xbox360w.c; sourceTree = ""; }; + B39820F129239F4200A82429 /* SDL_hidapi_gamecube.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_gamecube.c; sourceTree = ""; }; + B39820F229239F4200A82429 /* SDL_hidapi_ps5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps5.c; sourceTree = ""; }; + B39820F329239F4200A82429 /* SDL_hidapi_steam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_steam.c; sourceTree = ""; }; + B39820F429239F4200A82429 /* usb_ids.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = usb_ids.h; sourceTree = ""; }; + B39820F629239F4200A82429 /* SDL_iokitjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_iokitjoystick.c; sourceTree = ""; }; + B39820F729239F4200A82429 /* SDL_iokitjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_iokitjoystick_c.h; sourceTree = ""; }; + B39820F829239F4200A82429 /* SDL_sysjoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysjoystick.h; sourceTree = ""; }; + B39820F929239F4200A82429 /* SDL_joystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_joystick_c.h; sourceTree = ""; }; + B39820FB29239F4200A82429 /* SDL_rawinputjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rawinputjoystick_c.h; sourceTree = ""; }; + B39820FC29239F4200A82429 /* SDL_dinputjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dinputjoystick_c.h; sourceTree = ""; }; + B39820FD29239F4200A82429 /* SDL_dinputjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dinputjoystick.c; sourceTree = ""; }; + B39820FE29239F4200A82429 /* SDL_windowsjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowsjoystick.c; sourceTree = ""; }; + B39820FF29239F4200A82429 /* SDL_mmjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_mmjoystick.c; sourceTree = ""; }; + B398210029239F4200A82429 /* SDL_windowsjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowsjoystick_c.h; sourceTree = ""; }; + B398210129239F4200A82429 /* SDL_rawinputjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_rawinputjoystick.c; sourceTree = ""; }; + B398210229239F4200A82429 /* SDL_xinputjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_xinputjoystick_c.h; sourceTree = ""; }; + B398210329239F4200A82429 /* SDL_xinputjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_xinputjoystick.c; sourceTree = ""; }; + B398210429239F4200A82429 /* SDL_windows_gaming_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windows_gaming_input.c; sourceTree = ""; }; + B398210529239F4200A82429 /* controller_type.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = controller_type.h; sourceTree = ""; }; + B398210629239F4200A82429 /* SDL_hints_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hints_c.h; sourceTree = ""; }; + B398210829239F4200A82429 /* SDL_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_mouse.c; sourceTree = ""; }; + B398210929239F4200A82429 /* SDL_mouse_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mouse_c.h; sourceTree = ""; }; + B398210A29239F4200A82429 /* scancodes_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scancodes_windows.h; sourceTree = ""; }; + B398210B29239F4200A82429 /* SDL_displayevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_displayevents.c; sourceTree = ""; }; + B398210C29239F4200A82429 /* SDL_dropevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dropevents_c.h; sourceTree = ""; }; + B398210D29239F4200A82429 /* SDL_windowevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windowevents.c; sourceTree = ""; }; + B398210E29239F4200A82429 /* SDL_gesture_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gesture_c.h; sourceTree = ""; }; + B398210F29239F4200A82429 /* SDL_displayevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_displayevents_c.h; sourceTree = ""; }; + B398211029239F4200A82429 /* blank_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blank_cursor.h; sourceTree = ""; }; + B398211129239F4200A82429 /* default_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = default_cursor.h; sourceTree = ""; }; + B398211229239F4200A82429 /* scancodes_darwin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scancodes_darwin.h; sourceTree = ""; }; + B398211329239F4200A82429 /* SDL_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_events.c; sourceTree = ""; }; + B398211429239F4200A82429 /* scancodes_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scancodes_linux.h; sourceTree = ""; }; + B398211529239F4200A82429 /* SDL_touch_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_touch_c.h; sourceTree = ""; }; + B398211629239F4200A82429 /* SDL_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_keyboard.c; sourceTree = ""; }; + B398211729239F4200A82429 /* SDL_clipboardevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_clipboardevents_c.h; sourceTree = ""; }; + B398211829239F4200A82429 /* SDL_clipboardevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_clipboardevents.c; sourceTree = ""; }; + B398211929239F4200A82429 /* SDL_dropevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dropevents.c; sourceTree = ""; }; + B398211A29239F4200A82429 /* SDL_quit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_quit.c; sourceTree = ""; }; + B398211B29239F4200A82429 /* SDL_keyboard_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keyboard_c.h; sourceTree = ""; }; + B398211C29239F4200A82429 /* SDL_touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_touch.c; sourceTree = ""; }; + B398211D29239F4200A82429 /* SDL_sysevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysevents.h; sourceTree = ""; }; + B398211E29239F4200A82429 /* SDL_gesture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_gesture.c; sourceTree = ""; }; + B398211F29239F4200A82429 /* scancodes_xfree86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scancodes_xfree86.h; sourceTree = ""; }; + B398212029239F4300A82429 /* SDL_events_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_events_c.h; sourceTree = ""; }; + B398212129239F4300A82429 /* SDL_windowevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_windowevents_c.h; sourceTree = ""; }; + B398212429239F4300A82429 /* SDL_dummy_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_dummy_main.c; sourceTree = ""; }; + B398212629239F4300A82429 /* SDL_uikit_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_uikit_main.c; sourceTree = ""; }; + B398212829239F4300A82429 /* SDL_psp_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_psp_main.c; sourceTree = ""; }; + B398212A29239F4300A82429 /* SDL_BApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_BApp.h; sourceTree = ""; }; + B398212B29239F4300A82429 /* SDL_BeApp.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_BeApp.cc; sourceTree = ""; }; + B398212C29239F4300A82429 /* SDL_BeApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_BeApp.h; sourceTree = ""; }; + B398212E29239F4300A82429 /* SDL2-WinRTResources.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "SDL2-WinRTResources.rc"; sourceTree = ""; }; + B398212F29239F4300A82429 /* SDL_winrt_main_NonXAML.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_winrt_main_NonXAML.cpp; sourceTree = ""; }; + B398213029239F4300A82429 /* SDL2-WinRTResource_BlankCursor.cur */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SDL2-WinRTResource_BlankCursor.cur"; sourceTree = ""; }; + B398213229239F4300A82429 /* SDL_android_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_android_main.c; sourceTree = ""; }; + B398213429239F4300A82429 /* SDL_nacl_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_nacl_main.c; sourceTree = ""; }; + B398213629239F4300A82429 /* SDL_windows_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_windows_main.c; sourceTree = ""; }; + B398213729239F4300A82429 /* version.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.rc; sourceTree = ""; }; + B398213929239F4300A82429 /* SDL_cpuinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_cpuinfo.c; sourceTree = ""; }; + B398213B29239F4300A82429 /* SDL_systhread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systhread.h; sourceTree = ""; }; + B398213D29239F4300A82429 /* SDL_systls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = ""; }; + B398213E29239F4300A82429 /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syssem.c; sourceTree = ""; }; + B398213F29239F4300A82429 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systhread_c.h; sourceTree = ""; }; + B398214029239F4300A82429 /* SDL_systls_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systls_c.h; sourceTree = ""; }; + B398214129239F4300A82429 /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systhread.c; sourceTree = ""; }; + B398214229239F4300A82429 /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysmutex.c; sourceTree = ""; }; + B398214329239F4300A82429 /* SDL_thread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_thread_c.h; sourceTree = ""; }; + B398214429239F4300A82429 /* SDL_thread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_thread.c; sourceTree = ""; }; + B398214629239F4300A82429 /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syssem.c; sourceTree = ""; }; + B398214729239F4300A82429 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systhread_c.h; sourceTree = ""; }; + B398214829239F4300A82429 /* SDL_syscond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syscond.c; sourceTree = ""; }; + B398214929239F4300A82429 /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systhread.c; sourceTree = ""; }; + B398214A29239F4300A82429 /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysmutex.c; sourceTree = ""; }; + B398214B29239F4300A82429 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysmutex_c.h; sourceTree = ""; }; + B398214D29239F4300A82429 /* SDL_systls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = ""; }; + B398214E29239F4300A82429 /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syssem.c; sourceTree = ""; }; + B398214F29239F4300A82429 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systhread_c.h; sourceTree = ""; }; + B398215029239F4300A82429 /* SDL_syscond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syscond.c; sourceTree = ""; }; + B398215129239F4300A82429 /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systhread.c; sourceTree = ""; }; + B398215229239F4300A82429 /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysmutex.c; sourceTree = ""; }; + B398215329239F4300A82429 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysmutex_c.h; sourceTree = ""; }; + B398215529239F4300A82429 /* SDL_syscond.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_syscond.cpp; sourceTree = ""; }; + B398215629239F4300A82429 /* SDL_sysmutex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_sysmutex.cpp; sourceTree = ""; }; + B398215729239F4300A82429 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systhread_c.h; sourceTree = ""; }; + B398215829239F4300A82429 /* SDL_systhread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SDL_systhread.cpp; sourceTree = ""; }; + B398215929239F4300A82429 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysmutex_c.h; sourceTree = ""; }; + B398215B29239F4300A82429 /* SDL_systls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = ""; }; + B398215C29239F4300A82429 /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syssem.c; sourceTree = ""; }; + B398215D29239F4300A82429 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systhread_c.h; sourceTree = ""; }; + B398215E29239F4300A82429 /* SDL_syscond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syscond.c; sourceTree = ""; }; + B398215F29239F4300A82429 /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systhread.c; sourceTree = ""; }; + B398216029239F4300A82429 /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysmutex.c; sourceTree = ""; }; + B398216129239F4300A82429 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysmutex_c.h; sourceTree = ""; }; + B398216229239F4300A82429 /* SDL_syscond_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syscond_c.h; sourceTree = ""; }; + B398216429239F4300A82429 /* SDL_systls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = ""; }; + B398216529239F4300A82429 /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syssem.c; sourceTree = ""; }; + B398216629239F4300A82429 /* SDL_syscond_srw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_syscond_srw.c; sourceTree = ""; }; + B398216729239F4300A82429 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_systhread_c.h; sourceTree = ""; }; + B398216829239F4300A82429 /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_systhread.c; sourceTree = ""; }; + B398216929239F4300A82429 /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysmutex.c; sourceTree = ""; }; + B398216A29239F4300A82429 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sysmutex_c.h; sourceTree = ""; }; + B398216D29239F4300A82429 /* SDL_sysloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysloadso.c; sourceTree = ""; }; + B398216F29239F4300A82429 /* SDL_sysloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysloadso.c; sourceTree = ""; }; + B398217129239F4300A82429 /* SDL_sysloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysloadso.c; sourceTree = ""; }; + B398217329239F4300A82429 /* SDL_sysloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_sysloadso.c; sourceTree = ""; }; + B398217429239F4300A82429 /* SDL_dataqueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dataqueue.h; sourceTree = ""; }; + B398217529239F4300A82429 /* Makefile.psp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.psp; sourceTree = ""; }; + B398217729239F4300A82429 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B398217829239F4300A82429 /* elf64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf64.h; sourceTree = ""; }; + B398217929239F4300A82429 /* elf64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf64.cpp; sourceTree = ""; }; + B398217A29239F4300A82429 /* elf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf.cpp; sourceTree = ""; }; + B398217B29239F4300A82429 /* elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = ""; }; + B398217C29239F4300A82429 /* elf32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf32.h; sourceTree = ""; }; + B398217D29239F4300A82429 /* elf32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf32.cpp; sourceTree = ""; }; + B398218029239F4300A82429 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B398218229239F4300A82429 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B398218429239F4300A82429 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B398218529239F4300A82429 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B398218629239F4300A82429 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B398218829239F4300A82429 /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B398218929239F4300A82429 /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B398218A29239F4300A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398218B29239F4300A82429 /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B398218C29239F4300A82429 /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B398218D29239F4300A82429 /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B398218E29239F4300A82429 /* xglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = xglgen.py; sourceTree = ""; }; + B398218F29239F4300A82429 /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B398219129239F4300A82429 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B398219229239F4300A82429 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B398219529239F4300A82429 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B398219629239F4300A82429 /* win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32.h; sourceTree = ""; }; + B398219729239F4300A82429 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B398219829239F4300A82429 /* libretro_dspfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_dspfilter.h; sourceTree = ""; }; + B398219A29239F4300A82429 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B398219B29239F4300A82429 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B398219C29239F4300A82429 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B398219E29239F4300A82429 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B398219F29239F4300A82429 /* libco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; + B39821A129239F4300A82429 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B39821A229239F4300A82429 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B39821A329239F4300A82429 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B39821A429239F4300A82429 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B39821A629239F4300A82429 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B39821A729239F4300A82429 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B39821A829239F4300A82429 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B39821A929239F4300A82429 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B39821AA29239F4300A82429 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B39821AC29239F4300A82429 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B39821AD29239F4300A82429 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B39821AE29239F4300A82429 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B39821AF29239F4300A82429 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B39821B029239F4300A82429 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B39821B129239F4300A82429 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B39821B229239F4300A82429 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B39821B329239F4300A82429 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B39821B429239F4300A82429 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B39821B529239F4300A82429 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B39821B629239F4300A82429 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B39821B729239F4300A82429 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B39821B929239F4300A82429 /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B39821BA29239F4300A82429 /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B39821BB29239F4300A82429 /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B39821BC29239F4300A82429 /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B39821BE29239F4300A82429 /* nx_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_gl.h; sourceTree = ""; }; + B39821BF29239F4300A82429 /* nx_glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_glsym.h; sourceTree = ""; }; + B39821C029239F4300A82429 /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B39821C129239F4300A82429 /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B39821C329239F4300A82429 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B39821C429239F4300A82429 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B39821C529239F4300A82429 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B39821C629239F4300A82429 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B39821C729239F4300A82429 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B39821C929239F4300A82429 /* lzma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lzma.h; sourceTree = ""; }; + B39821CA29239F4300A82429 /* minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minmax.h; sourceTree = ""; }; + B39821CB29239F4300A82429 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B39821CC29239F4300A82429 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B39821CD29239F4300A82429 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B39821CE29239F4300A82429 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B39821CF29239F4300A82429 /* libchdr_zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libchdr_zlib.h; sourceTree = ""; }; + B39821D029239F4300A82429 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B39821D129239F4300A82429 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B39821D229239F4300A82429 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B39821D329239F4300A82429 /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B39821D429239F4300A82429 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B39821D529239F4300A82429 /* libretro_gskit_ps2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_gskit_ps2.h; sourceTree = ""; }; + B39821D729239F4300A82429 /* glsm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm.h; sourceTree = ""; }; + B39821D829239F4300A82429 /* glsmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsmsym.h; sourceTree = ""; }; + B39821D929239F4300A82429 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B39821DB29239F4300A82429 /* rsemaphore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsemaphore.h; sourceTree = ""; }; + B39821DC29239F4300A82429 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B39821DD29239F4300A82429 /* async_job.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = async_job.h; sourceTree = ""; }; + B39821DE29239F4300A82429 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B39821E029239F4300A82429 /* vulkan_symbol_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_symbol_wrapper.h; sourceTree = ""; }; + B39821E129239F4300A82429 /* retro_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; + B39821E229239F4300A82429 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B39821E329239F4300A82429 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B39821E529239F4300A82429 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B39821E629239F4300A82429 /* libretro_d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_d3d.h; sourceTree = ""; }; + B39821E729239F4300A82429 /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B39821E829239F4300A82429 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B39821EA29239F4300A82429 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B39821EC29239F4300A82429 /* glsm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsm.c; sourceTree = ""; }; + B39821EE29239F4300A82429 /* vulkan_symbol_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_symbol_wrapper.c; sourceTree = ""; }; + B39821F029239F4300A82429 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B39821F229239F4300A82429 /* cdipsr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdipsr.cpp; sourceTree = ""; }; + B39821F329239F4300A82429 /* cdipsr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdipsr.h; sourceTree = ""; }; + B39821F529239F4300A82429 /* libxxhash.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = libxxhash.pc.in; sourceTree = ""; }; + B39821F629239F4300A82429 /* xxhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; + B39821F729239F4300A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B39821F829239F4300A82429 /* xxhsum.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = xxhsum.1; sourceTree = ""; }; + B39821F929239F4300A82429 /* CHANGELOG */ = {isa = PBXFileReference; lastKnownFileType = text; path = CHANGELOG; sourceTree = ""; }; + B39821FA29239F4300A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B39821FD29239F4300A82429 /* benchHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = benchHash.h; sourceTree = ""; }; + B39821FE29239F4300A82429 /* bhDisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bhDisplay.c; sourceTree = ""; }; + B39821FF29239F4300A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B398220029239F4300A82429 /* hashes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hashes.h; sourceTree = ""; }; + B398220129239F4300A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B398220229239F4300A82429 /* benchfn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = benchfn.h; sourceTree = ""; }; + B398220329239F4300A82429 /* timefn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timefn.h; sourceTree = ""; }; + B398220429239F4300A82429 /* benchHash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = benchHash.c; sourceTree = ""; }; + B398220529239F4300A82429 /* bhDisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bhDisplay.h; sourceTree = ""; }; + B398220629239F4300A82429 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B398220729239F4300A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B398220829239F4300A82429 /* timefn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timefn.c; sourceTree = ""; }; + B398220929239F4300A82429 /* benchfn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = benchfn.c; sourceTree = ""; }; + B398220A29239F4300A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B398220B29239F4300A82429 /* generate_unicode_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = generate_unicode_test.c; sourceTree = ""; }; + B398220C29239F4300A82429 /* multiInclude.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = multiInclude.c; sourceTree = ""; }; + B398220E29239F4300A82429 /* pool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pool.h; sourceTree = ""; }; + B398220F29239F4300A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B398221029239F4300A82429 /* hashes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hashes.h; sourceTree = ""; }; + B398221129239F4300A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B398221229239F4300A82429 /* threading.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = threading.h; sourceTree = ""; }; + B398221329239F4300A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398221529239F4300A82429 /* dummy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dummy.c; sourceTree = ""; }; + B398221629239F4300A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398221729239F4300A82429 /* dummy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dummy.h; sourceTree = ""; }; + B398221829239F4300A82429 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B398221929239F4300A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B398221A29239F4300A82429 /* sort.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sort.cc; sourceTree = ""; }; + B398221B29239F4300A82429 /* pool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pool.c; sourceTree = ""; }; + B398221C29239F4300A82429 /* threading.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = threading.c; sourceTree = ""; }; + B398221D29239F4300A82429 /* sort.hh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = sort.hh; sourceTree = ""; }; + B398221E29239F4300A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398221F29239F4300A82429 /* xxhsum.1.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = xxhsum.1.md; sourceTree = ""; }; + B398222129239F4300A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398222229239F4300A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398222329239F4300A82429 /* xxHashConfig.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = xxHashConfig.cmake.in; sourceTree = ""; }; + B398222429239F4300A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B398222529239F4300A82429 /* xxhash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xxhash.c; sourceTree = ""; }; + B398222629239F4300A82429 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B398222729239F4300A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B398222829239F4300A82429 /* xxhsum.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xxhsum.c; sourceTree = ""; }; + B398222929239F4300A82429 /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B398222A29239F4300A82429 /* xxh3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxh3.h; sourceTree = ""; }; + B398222C29239F4300A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398222D29239F4300A82429 /* xxhash_spec.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = xxhash_spec.md; sourceTree = ""; }; + B398222E29239F4300A82429 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B398223129239F4300A82429 /* zip_set_archive_comment.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_set_archive_comment.html; sourceTree = ""; }; + B398223229239F4300A82429 /* ZIP_SOURCE_GET_ARGS.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = ZIP_SOURCE_GET_ARGS.mdoc; sourceTree = ""; }; + B398223329239F4300A82429 /* zip_ftell.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_ftell.man; sourceTree = ""; }; + B398223429239F4300A82429 /* zip_error_strerror.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_strerror.man; sourceTree = ""; }; + B398223529239F4300A82429 /* libzip.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = libzip.html; sourceTree = ""; }; + B398223629239F4300A82429 /* zip_error_get.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_get.html; sourceTree = ""; }; + B398223729239F4300A82429 /* zip_encryption_method_supported.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_encryption_method_supported.html; sourceTree = ""; }; + B398223829239F4300A82429 /* zip_error_set.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_set.html; sourceTree = ""; }; + B398223929239F4300A82429 /* zip_get_error.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_get_error.html; sourceTree = ""; }; + B398223A29239F4300A82429 /* zip_add.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_add.html; sourceTree = ""; }; + B398223B29239F4300A82429 /* zip_source_tell_write.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_tell_write.html; sourceTree = ""; }; + B398223C29239F4300A82429 /* zip_fread.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_fread.html; sourceTree = ""; }; + B398223D29239F4300A82429 /* zip_error_to_data.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_to_data.html; sourceTree = ""; }; + B398223E29239F4300A82429 /* zip_file_get_external_attributes.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_get_external_attributes.man; sourceTree = ""; }; + B398223F29239F4300A82429 /* zip_error_system_type.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_system_type.html; sourceTree = ""; }; + B398224029239F4300A82429 /* zip_source_function.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_function.man; sourceTree = ""; }; + B398224129239F4300A82429 /* zip_file_add.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_add.man; sourceTree = ""; }; + B398224229239F4300A82429 /* zip_source_buffer_fragment.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_buffer_fragment.man; sourceTree = ""; }; + B398224329239F4300A82429 /* zip_file_add.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_add.mdoc; sourceTree = ""; }; + B398224429239F4300A82429 /* zip_error_get_sys_type.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_get_sys_type.mdoc; sourceTree = ""; }; + B398224529239F4300A82429 /* zip_get_error.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_error.man; sourceTree = ""; }; + B398224629239F4300A82429 /* zip_delete.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_delete.html; sourceTree = ""; }; + B398224729239F4300A82429 /* zip_source_error.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_error.html; sourceTree = ""; }; + B398224829239F4300A82429 /* zip_source_is_deleted.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_is_deleted.mdoc; sourceTree = ""; }; + B398224929239F4300A82429 /* zip_set_default_password.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_default_password.man; sourceTree = ""; }; + B398224A29239F4300A82429 /* zip_file_set_encryption.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_encryption.man; sourceTree = ""; }; + B398224B29239F4300A82429 /* zip_get_num_entries.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_num_entries.man; sourceTree = ""; }; + B398224C29239F4300A82429 /* zip_get_file_comment.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_file_comment.man; sourceTree = ""; }; + B398224D29239F4300A82429 /* zip_set_file_compression.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_file_compression.man; sourceTree = ""; }; + B398224E29239F4300A82429 /* libzip.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = libzip.man; sourceTree = ""; }; + B398224F29239F4300A82429 /* zip_source_seek.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_seek.man; sourceTree = ""; }; + B398225029239F4300A82429 /* zip_file_attributes_init.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_attributes_init.man; sourceTree = ""; }; + B398225129239F4300A82429 /* zip_dir_add.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_dir_add.man; sourceTree = ""; }; + B398225229239F4300A82429 /* zip_source_seek_compute_offset.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_seek_compute_offset.html; sourceTree = ""; }; + B398225329239F4300A82429 /* zip_source_zip.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_zip.man; sourceTree = ""; }; + B398225429239F4300A82429 /* zip_error_code_system.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_code_system.man; sourceTree = ""; }; + B398225529239F4300A82429 /* zip_source_make_command_bitmap.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_make_command_bitmap.html; sourceTree = ""; }; + B398225629239F4300A82429 /* zip_source_buffer_fragment.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_buffer_fragment.mdoc; sourceTree = ""; }; + B398225729239F4300A82429 /* zip_source_filep.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_filep.mdoc; sourceTree = ""; }; + B398225829239F4300A82429 /* zip_unchange.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_unchange.man; sourceTree = ""; }; + B398225929239F4300A82429 /* zip_source_zip.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_zip.mdoc; sourceTree = ""; }; + B398225A29239F4300A82429 /* zip_error_fini.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_fini.html; sourceTree = ""; }; + B398225B29239F4300A82429 /* zip_file_attributes_init.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_attributes_init.html; sourceTree = ""; }; + B398225C29239F4300A82429 /* zip_source_read.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_read.mdoc; sourceTree = ""; }; + B398225D29239F4300A82429 /* zip_error_to_str.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_to_str.man; sourceTree = ""; }; + B398225E29239F4300A82429 /* zip_delete.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_delete.man; sourceTree = ""; }; + B398225F29239F4300A82429 /* zip_file_get_external_attributes.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_get_external_attributes.html; sourceTree = ""; }; + B398226029239F4300A82429 /* zip_file_rename.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_rename.mdoc; sourceTree = ""; }; + B398226129239F4300A82429 /* zip_set_file_comment.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_file_comment.man; sourceTree = ""; }; + B398226229239F4300A82429 /* zip_source_make_command_bitmap.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_make_command_bitmap.man; sourceTree = ""; }; + B398226329239F4300A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398226429239F4300A82429 /* zip_set_file_compression.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_set_file_compression.html; sourceTree = ""; }; + B398226529239F4300A82429 /* zip_source_begin_write.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_begin_write.man; sourceTree = ""; }; + B398226629239F4300A82429 /* zip_source_file.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_file.man; sourceTree = ""; }; + B398226729239F4300A82429 /* zip_close.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_close.mdoc; sourceTree = ""; }; + B398226829239F4300A82429 /* zip_source_seek_write.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_seek_write.mdoc; sourceTree = ""; }; + B398226929239F4300A82429 /* zip_stat_init.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_stat_init.man; sourceTree = ""; }; + B398226A29239F4300A82429 /* zip_source_buffer.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_buffer.man; sourceTree = ""; }; + B398226B29239F4300A82429 /* zip_source_win32a.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_win32a.html; sourceTree = ""; }; + B398226C29239F4300A82429 /* zip_file_set_external_attributes.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_external_attributes.man; sourceTree = ""; }; + B398226D29239F4300A82429 /* zip_stat.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_stat.mdoc; sourceTree = ""; }; + B398226E29239F4300A82429 /* zip_source_stat.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_stat.html; sourceTree = ""; }; + B398226F29239F4300A82429 /* zip_name_locate.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_name_locate.html; sourceTree = ""; }; + B398227029239F4300A82429 /* zip_file_set_comment.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_comment.mdoc; sourceTree = ""; }; + B398227129239F4300A82429 /* zip_error_code_system.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_code_system.mdoc; sourceTree = ""; }; + B398227229239F4300A82429 /* zip_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source.html; sourceTree = ""; }; + B398227329239F4300A82429 /* zip_source_write.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_write.html; sourceTree = ""; }; + B398227429239F4300A82429 /* zip_get_name.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_name.mdoc; sourceTree = ""; }; + B398227529239F4300A82429 /* zip_error_system_type.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_system_type.man; sourceTree = ""; }; + B398227629239F4300A82429 /* zip_errors.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_errors.html; sourceTree = ""; }; + B398227729239F4300A82429 /* zip_source_close.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_close.mdoc; sourceTree = ""; }; + B398227829239F4300A82429 /* zip_set_default_password.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_default_password.mdoc; sourceTree = ""; }; + B398227929239F4300A82429 /* make_zip_errors.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = make_zip_errors.sh; sourceTree = ""; }; + B398227A29239F4300A82429 /* zip_name_locate.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_name_locate.mdoc; sourceTree = ""; }; + B398227B29239F4300A82429 /* zip_error_code_system.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_code_system.html; sourceTree = ""; }; + B398227C29239F4300A82429 /* zip_file_set_comment.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_set_comment.html; sourceTree = ""; }; + B398227D29239F4300A82429 /* zip_source_stat.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_stat.mdoc; sourceTree = ""; }; + B398227E29239F4300A82429 /* zip_source.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source.mdoc; sourceTree = ""; }; + B398227F29239F4300A82429 /* zip_source_win32a.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_win32a.mdoc; sourceTree = ""; }; + B398228029239F4300A82429 /* zip_stat.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_stat.html; sourceTree = ""; }; + B398228129239F4300A82429 /* zip_source_tell.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_tell.man; sourceTree = ""; }; + B398228229239F4300A82429 /* zip_source_close.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_close.html; sourceTree = ""; }; + B398228329239F4300A82429 /* zip_set_default_password.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_set_default_password.html; sourceTree = ""; }; + B398228429239F4300A82429 /* zip_get_name.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_get_name.html; sourceTree = ""; }; + B398228529239F4300A82429 /* zip_source_write.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_write.mdoc; sourceTree = ""; }; + B398228629239F4300A82429 /* zip_errors.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_errors.mdoc; sourceTree = ""; }; + B398228729239F4300A82429 /* zip_unchange_archive.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_unchange_archive.man; sourceTree = ""; }; + B398228829239F4300A82429 /* zip_file_rename.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_rename.html; sourceTree = ""; }; + B398228929239F4300A82429 /* zip_file_get_comment.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_get_comment.man; sourceTree = ""; }; + B398228A29239F4300A82429 /* zip_file_get_external_attributes.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_get_external_attributes.mdoc; sourceTree = ""; }; + B398228B29239F4300A82429 /* zip_source.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source.man; sourceTree = ""; }; + B398228C29239F4300A82429 /* zip_compression_method_supported.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_compression_method_supported.man; sourceTree = ""; }; + B398228D29239F4300A82429 /* zip_set_file_compression.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_file_compression.mdoc; sourceTree = ""; }; + B398228E29239F4300A82429 /* zip_file_attributes_init.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_attributes_init.mdoc; sourceTree = ""; }; + B398228F29239F4300A82429 /* zipcmp.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zipcmp.man; sourceTree = ""; }; + B398229029239F4300A82429 /* zip_source_read.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_read.html; sourceTree = ""; }; + B398229129239F4300A82429 /* zip_fseek.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fseek.man; sourceTree = ""; }; + B398229229239F4300A82429 /* zip_source_seek_write.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_seek_write.html; sourceTree = ""; }; + B398229329239F4300A82429 /* zip_close.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_close.html; sourceTree = ""; }; + B398229429239F4300A82429 /* zip_get_archive_comment.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_archive_comment.man; sourceTree = ""; }; + B398229529239F4300A82429 /* ziptool.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = ziptool.man; sourceTree = ""; }; + B398229629239F4300A82429 /* zip_source_is_deleted.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_is_deleted.html; sourceTree = ""; }; + B398229729239F4300A82429 /* zip_source_error.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_error.mdoc; sourceTree = ""; }; + B398229829239F4300A82429 /* zip_file_extra_field_get.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_field_get.man; sourceTree = ""; }; + B398229929239F4300A82429 /* zip_error_system_type.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_system_type.mdoc; sourceTree = ""; }; + B398229A29239F4300A82429 /* zip_error_get_sys_type.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_get_sys_type.html; sourceTree = ""; }; + B398229B29239F4300A82429 /* zip_file_add.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_add.html; sourceTree = ""; }; + B398229C29239F4300A82429 /* zip_fopen_encrypted.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fopen_encrypted.man; sourceTree = ""; }; + B398229D29239F4300A82429 /* zip_delete.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_delete.mdoc; sourceTree = ""; }; + B398229E29239F4300A82429 /* zip_source_buffer_fragment.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_buffer_fragment.html; sourceTree = ""; }; + B398229F29239F4300A82429 /* zip_source_make_command_bitmap.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_make_command_bitmap.mdoc; sourceTree = ""; }; + B39822A029239F4300A82429 /* zip_error_fini.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_fini.mdoc; sourceTree = ""; }; + B39822A129239F4300A82429 /* zip_source_zip.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_zip.html; sourceTree = ""; }; + B39822A229239F4300A82429 /* zip_source_filep.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_filep.html; sourceTree = ""; }; + B39822A329239F4300A82429 /* handle_links */ = {isa = PBXFileReference; lastKnownFileType = text; path = handle_links; sourceTree = ""; }; + B39822A429239F4300A82429 /* zip_source_seek_compute_offset.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_seek_compute_offset.mdoc; sourceTree = ""; }; + B39822A529239F4300A82429 /* zip_error_to_data.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_to_data.man; sourceTree = ""; }; + B39822A629239F4300A82429 /* ZIP_SOURCE_GET_ARGS.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = ZIP_SOURCE_GET_ARGS.html; sourceTree = ""; }; + B39822A729239F4300A82429 /* zip_source_filep.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_filep.man; sourceTree = ""; }; + B39822A829239F4300A82429 /* zip_source_commit_write.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_commit_write.man; sourceTree = ""; }; + B39822A929239F4300A82429 /* zip_error_get.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_get.mdoc; sourceTree = ""; }; + B39822AA29239F4300A82429 /* libzip.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = libzip.mdoc; sourceTree = ""; }; + B39822AB29239F4300A82429 /* zip_set_archive_comment.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_archive_comment.mdoc; sourceTree = ""; }; + B39822AC29239F4300A82429 /* zip_error_set.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_set.man; sourceTree = ""; }; + B39822AD29239F4300A82429 /* zip_get_error.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_error.mdoc; sourceTree = ""; }; + B39822AE29239F4300A82429 /* zip_add.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_add.mdoc; sourceTree = ""; }; + B39822AF29239F4300A82429 /* zip_error_set.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_set.mdoc; sourceTree = ""; }; + B39822B029239F4300A82429 /* zip_error_to_data.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_to_data.mdoc; sourceTree = ""; }; + B39822B129239F4300A82429 /* zip_source_tell_write.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_tell_write.mdoc; sourceTree = ""; }; + B39822B229239F4300A82429 /* zip_fread.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fread.mdoc; sourceTree = ""; }; + B39822B329239F4300A82429 /* zip_encryption_method_supported.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_encryption_method_supported.mdoc; sourceTree = ""; }; + B39822B429239F4300A82429 /* zip_source_seek_write.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_seek_write.man; sourceTree = ""; }; + B39822B529239F4300A82429 /* zipcmp.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zipcmp.mdoc; sourceTree = ""; }; + B39822B629239F4300A82429 /* zip_name_locate.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_name_locate.man; sourceTree = ""; }; + B39822B729239F4300A82429 /* zip_source_win32handle.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_win32handle.man; sourceTree = ""; }; + B39822B829239F4300A82429 /* zip_ftell.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_ftell.html; sourceTree = ""; }; + B39822B929239F4300A82429 /* zip_error_init.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_init.man; sourceTree = ""; }; + B39822BA29239F4300A82429 /* zip_dir_add.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_dir_add.mdoc; sourceTree = ""; }; + B39822BB29239F4300A82429 /* zip_source_file.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_file.mdoc; sourceTree = ""; }; + B39822BC29239F4300A82429 /* zip_error_clear.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_clear.mdoc; sourceTree = ""; }; + B39822BD29239F4300A82429 /* zip_source_win32w.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_win32w.man; sourceTree = ""; }; + B39822BE29239F4300A82429 /* zipmerge.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zipmerge.mdoc; sourceTree = ""; }; + B39822BF29239F4300A82429 /* zip_source_win32a.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_win32a.man; sourceTree = ""; }; + B39822C029239F4300A82429 /* zip_unchange.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_unchange.html; sourceTree = ""; }; + B39822C129239F4300A82429 /* zip_libzip_version.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_libzip_version.html; sourceTree = ""; }; + B39822C229239F4300A82429 /* zip_source_function.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_function.html; sourceTree = ""; }; + B39822C329239F4300A82429 /* fix-man-links.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "fix-man-links.sh"; sourceTree = ""; }; + B39822C429239F4300A82429 /* zip_error_get_sys_type.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_get_sys_type.man; sourceTree = ""; }; + B39822C529239F4300A82429 /* zip_error_clear.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_clear.man; sourceTree = ""; }; + B39822C629239F4300A82429 /* zip_fclose.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fclose.man; sourceTree = ""; }; + B39822C729239F4300A82429 /* zip_file_set_encryption.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_set_encryption.html; sourceTree = ""; }; + B39822C829239F4300A82429 /* zip_fdopen.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fdopen.mdoc; sourceTree = ""; }; + B39822C929239F4300A82429 /* zip_set_archive_comment.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_archive_comment.man; sourceTree = ""; }; + B39822CA29239F4300A82429 /* zip_source_stat.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_stat.man; sourceTree = ""; }; + B39822CB29239F4300A82429 /* zip_file_set_external_attributes.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_set_external_attributes.html; sourceTree = ""; }; + B39822CC29239F4300A82429 /* zip_fseek.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fseek.mdoc; sourceTree = ""; }; + B39822CD29239F4300A82429 /* zip_source_tell_write.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_tell_write.man; sourceTree = ""; }; + B39822CE29239F4300A82429 /* zip_file_set_mtime.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_set_mtime.html; sourceTree = ""; }; + B39822CF29239F4300A82429 /* zip_source_win32handle.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_win32handle.html; sourceTree = ""; }; + B39822D029239F4300A82429 /* zip_add_dir.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_add_dir.man; sourceTree = ""; }; + B39822D129239F4300A82429 /* zip_error_init.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_init.html; sourceTree = ""; }; + B39822D229239F4300A82429 /* ZIP_SOURCE_GET_ARGS.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = ZIP_SOURCE_GET_ARGS.man; sourceTree = ""; }; + B39822D329239F4300A82429 /* zip_errors.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_errors.man; sourceTree = ""; }; + B39822D429239F4300A82429 /* zip_file_strerror.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_strerror.html; sourceTree = ""; }; + B39822D529239F4300A82429 /* zip_get_archive_flag.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_archive_flag.mdoc; sourceTree = ""; }; + B39822D629239F4300A82429 /* zip_source_free.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_free.man; sourceTree = ""; }; + B39822D729239F4300A82429 /* zip_unchange_all.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_unchange_all.man; sourceTree = ""; }; + B39822D829239F4300A82429 /* zip_set_file_comment.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_set_file_comment.html; sourceTree = ""; }; + B39822D929239F4300A82429 /* zip_open.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_open.mdoc; sourceTree = ""; }; + B39822DA29239F4300A82429 /* zip_source_open.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_open.html; sourceTree = ""; }; + B39822DB29239F4300A82429 /* zip_add_dir.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_add_dir.mdoc; sourceTree = ""; }; + B39822DC29239F4300A82429 /* links */ = {isa = PBXFileReference; lastKnownFileType = text; path = links; sourceTree = ""; }; + B39822DD29239F4300A82429 /* zip_fclose.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fclose.mdoc; sourceTree = ""; }; + B39822DE29239F4300A82429 /* zip_file_extra_fields_count.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_fields_count.mdoc; sourceTree = ""; }; + B39822DF29239F4300A82429 /* zip_file_extra_field_delete.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_extra_field_delete.html; sourceTree = ""; }; + B39822E029239F4300A82429 /* zip_fdopen.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fdopen.man; sourceTree = ""; }; + B39822E129239F4300A82429 /* zip_encryption_method_supported.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_encryption_method_supported.man; sourceTree = ""; }; + B39822E229239F4300A82429 /* mkdocset.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = mkdocset.pl; sourceTree = ""; }; + B39822E329239F4300A82429 /* zip_file_extra_field_get.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_field_get.mdoc; sourceTree = ""; }; + B39822E429239F4300A82429 /* zip_file_get_error.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_get_error.html; sourceTree = ""; }; + B39822E529239F4300A82429 /* zip_compression_method_supported.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_compression_method_supported.mdoc; sourceTree = ""; }; + B39822E629239F4300A82429 /* zip_source_rollback_write.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_rollback_write.mdoc; sourceTree = ""; }; + B39822E729239F4300A82429 /* update-man.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "update-man.cmake"; sourceTree = ""; }; + B39822E829239F4300A82429 /* zip_close.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_close.man; sourceTree = ""; }; + B39822E929239F4300A82429 /* zip_file_set_comment.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_comment.man; sourceTree = ""; }; + B39822EA29239F4300A82429 /* zip_source_buffer.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_buffer.mdoc; sourceTree = ""; }; + B39822EB29239F4300A82429 /* zip_fopen_encrypted.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fopen_encrypted.mdoc; sourceTree = ""; }; + B39822EC29239F4300A82429 /* zip_source_tell.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_tell.mdoc; sourceTree = ""; }; + B39822ED29239F4300A82429 /* zip_file_extra_fields_count.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_fields_count.man; sourceTree = ""; }; + B39822EE29239F4300A82429 /* zip_get_num_entries.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_num_entries.mdoc; sourceTree = ""; }; + B39822EF29239F4300A82429 /* zip_source_open.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_open.man; sourceTree = ""; }; + B39822F029239F4300A82429 /* zip_file_set_mtime.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_mtime.man; sourceTree = ""; }; + B39822F129239F4300A82429 /* zip_rename.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_rename.man; sourceTree = ""; }; + B39822F229239F4300A82429 /* zip_error_to_str.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_to_str.mdoc; sourceTree = ""; }; + B39822F329239F4300A82429 /* zip_register_progress_callback_with_state.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_register_progress_callback_with_state.html; sourceTree = ""; }; + B39822F429239F4300A82429 /* zip_unchange_archive.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_unchange_archive.mdoc; sourceTree = ""; }; + B39822F529239F4300A82429 /* zip_register_progress_callback_with_state.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_register_progress_callback_with_state.man; sourceTree = ""; }; + B39822F629239F4300A82429 /* zip_file_extra_field_set.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_field_set.mdoc; sourceTree = ""; }; + B39822F729239F4300A82429 /* zip_source_begin_write.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_begin_write.mdoc; sourceTree = ""; }; + B39822F829239F4300A82429 /* zip_source_commit_write.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_commit_write.html; sourceTree = ""; }; + B39822F929239F4300A82429 /* zip_unchange_all.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_unchange_all.html; sourceTree = ""; }; + B39822FA29239F4300A82429 /* zip_error_code_zip.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_code_zip.mdoc; sourceTree = ""; }; + B39822FB29239F4300A82429 /* zip_file_get_comment.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_get_comment.html; sourceTree = ""; }; + B39822FC29239F4300A82429 /* zip_discard.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_discard.html; sourceTree = ""; }; + B39822FD29239F4300A82429 /* zip_set_archive_flag.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_archive_flag.mdoc; sourceTree = ""; }; + B39822FE29239F4300A82429 /* zip_fopen.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fopen.mdoc; sourceTree = ""; }; + B39822FF29239F4300A82429 /* zip_get_file_comment.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_get_file_comment.html; sourceTree = ""; }; + B398230029239F4300A82429 /* zip_register_progress_callback.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_register_progress_callback.mdoc; sourceTree = ""; }; + B398230129239F4300A82429 /* zip_add.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_add.man; sourceTree = ""; }; + B398230229239F4300A82429 /* zip_libzip_version.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_libzip_version.man; sourceTree = ""; }; + B398230329239F4300A82429 /* zip_rename.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_rename.mdoc; sourceTree = ""; }; + B398230429239F4300A82429 /* zip_source_keep.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_keep.html; sourceTree = ""; }; + B398230529239F4300A82429 /* zip_get_num_files.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_num_files.mdoc; sourceTree = ""; }; + B398230629239F4300A82429 /* ziptool.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = ziptool.html; sourceTree = ""; }; + B398230729239F4300A82429 /* zip_source_error.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_error.man; sourceTree = ""; }; + B398230829239F4300A82429 /* zip_source_free.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_free.mdoc; sourceTree = ""; }; + B398230929239F4300A82429 /* zip_source_rollback_write.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_rollback_write.man; sourceTree = ""; }; + B398230A29239F4300A82429 /* zip_source_win32w.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_win32w.mdoc; sourceTree = ""; }; + B398230B29239F4300A82429 /* zip_stat_init.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_stat_init.html; sourceTree = ""; }; + B398230C29239F4300A82429 /* zip_error_strerror.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_strerror.mdoc; sourceTree = ""; }; + B398230D29239F4300A82429 /* zip_fread.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fread.man; sourceTree = ""; }; + B398230E29239F4300A82429 /* zip_get_archive_comment.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_get_archive_comment.html; sourceTree = ""; }; + B398230F29239F4300A82429 /* zip_source_seek.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_seek.html; sourceTree = ""; }; + B398231029239F4300A82429 /* zip_get_name.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_name.man; sourceTree = ""; }; + B398231129239F4300A82429 /* zip_register_progress_callback.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_register_progress_callback.html; sourceTree = ""; }; + B398231229239F4300A82429 /* zip_error_get.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_get.man; sourceTree = ""; }; + B398231329239F4300A82429 /* zip_get_num_files.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_get_num_files.html; sourceTree = ""; }; + B398231429239F4300A82429 /* zip_source_keep.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_keep.mdoc; sourceTree = ""; }; + B398231529239F4300A82429 /* zip_rename.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_rename.html; sourceTree = ""; }; + B398231629239F4400A82429 /* ziptool.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = ziptool.mdoc; sourceTree = ""; }; + B398231729239F4400A82429 /* zip_source_free.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_free.html; sourceTree = ""; }; + B398231829239F4400A82429 /* zip_file_get_comment.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_get_comment.mdoc; sourceTree = ""; }; + B398231929239F4400A82429 /* zip_error_code_zip.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_code_zip.html; sourceTree = ""; }; + B398231A29239F4400A82429 /* zip_discard.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_discard.mdoc; sourceTree = ""; }; + B398231B29239F4400A82429 /* zip_source_begin_write.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_begin_write.html; sourceTree = ""; }; + B398231C29239F4400A82429 /* zip_source_commit_write.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_commit_write.mdoc; sourceTree = ""; }; + B398231D29239F4400A82429 /* zip_unchange_all.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_unchange_all.mdoc; sourceTree = ""; }; + B398231E29239F4400A82429 /* zipmerge.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zipmerge.man; sourceTree = ""; }; + B398231F29239F4400A82429 /* zip_get_file_comment.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_file_comment.mdoc; sourceTree = ""; }; + B398232029239F4400A82429 /* zip_file_get_error.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_get_error.man; sourceTree = ""; }; + B398232129239F4400A82429 /* zip_file_extra_field_delete.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_field_delete.man; sourceTree = ""; }; + B398232229239F4400A82429 /* zip_set_archive_flag.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_set_archive_flag.html; sourceTree = ""; }; + B398232329239F4400A82429 /* zip_fopen.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_fopen.html; sourceTree = ""; }; + B398232429239F4400A82429 /* update-html.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "update-html.cmake"; sourceTree = ""; }; + B398232529239F4400A82429 /* zip_get_archive_comment.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_archive_comment.mdoc; sourceTree = ""; }; + B398232629239F4400A82429 /* zip_discard.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_discard.man; sourceTree = ""; }; + B398232729239F4400A82429 /* zip_source_seek.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_seek.mdoc; sourceTree = ""; }; + B398232829239F4400A82429 /* zip_get_num_files.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_num_files.man; sourceTree = ""; }; + B398232929239F4400A82429 /* zip_stat_init.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_stat_init.mdoc; sourceTree = ""; }; + B398232A29239F4400A82429 /* zip_source_win32w.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_win32w.html; sourceTree = ""; }; + B398232B29239F4400A82429 /* zip_stat.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_stat.man; sourceTree = ""; }; + B398232C29239F4400A82429 /* zip_error_strerror.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_strerror.html; sourceTree = ""; }; + B398232D29239F4400A82429 /* zip_source_rollback_write.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_rollback_write.html; sourceTree = ""; }; + B398232E29239F4400A82429 /* zip_error_code_zip.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_code_zip.man; sourceTree = ""; }; + B398232F29239F4400A82429 /* zip_register_progress_callback.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_register_progress_callback.man; sourceTree = ""; }; + B398233029239F4400A82429 /* zip_file_get_error.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_get_error.mdoc; sourceTree = ""; }; + B398233129239F4400A82429 /* zip_compression_method_supported.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_compression_method_supported.html; sourceTree = ""; }; + B398233229239F4400A82429 /* zip_file_extra_field_get.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_extra_field_get.html; sourceTree = ""; }; + B398233329239F4400A82429 /* zip_fopen_encrypted.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_fopen_encrypted.html; sourceTree = ""; }; + B398233429239F4400A82429 /* zip_source_buffer.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_buffer.html; sourceTree = ""; }; + B398233529239F4400A82429 /* zip_file_strerror.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_strerror.man; sourceTree = ""; }; + B398233629239F4400A82429 /* zip_file_extra_fields_count.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_extra_fields_count.html; sourceTree = ""; }; + B398233729239F4400A82429 /* zip_fclose.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_fclose.html; sourceTree = ""; }; + B398233829239F4400A82429 /* zip_file_extra_field_set.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_field_set.man; sourceTree = ""; }; + B398233929239F4400A82429 /* zip_file_extra_field_delete.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_extra_field_delete.mdoc; sourceTree = ""; }; + B398233A29239F4400A82429 /* zip_source_close.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_close.man; sourceTree = ""; }; + B398233B29239F4400A82429 /* zip_error_to_str.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_to_str.html; sourceTree = ""; }; + B398233C29239F4400A82429 /* zip_register_progress_callback_with_state.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_register_progress_callback_with_state.mdoc; sourceTree = ""; }; + B398233D29239F4400A82429 /* zip_set_archive_flag.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_archive_flag.man; sourceTree = ""; }; + B398233E29239F4400A82429 /* zip_unchange_archive.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_unchange_archive.html; sourceTree = ""; }; + B398233F29239F4400A82429 /* zip_file_extra_field_set.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_file_extra_field_set.html; sourceTree = ""; }; + B398234029239F4400A82429 /* zip_get_num_entries.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_get_num_entries.html; sourceTree = ""; }; + B398234129239F4400A82429 /* zip_source_tell.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_tell.html; sourceTree = ""; }; + B398234229239F4400A82429 /* zip_file_set_mtime.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_mtime.mdoc; sourceTree = ""; }; + B398234329239F4400A82429 /* zip_source_seek_compute_offset.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_seek_compute_offset.man; sourceTree = ""; }; + B398234429239F4400A82429 /* zip_source_win32handle.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_win32handle.mdoc; sourceTree = ""; }; + B398234529239F4400A82429 /* zip_error_fini.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_fini.man; sourceTree = ""; }; + B398234629239F4400A82429 /* zip_error_init.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_error_init.mdoc; sourceTree = ""; }; + B398234729239F4400A82429 /* zip_get_archive_flag.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_get_archive_flag.man; sourceTree = ""; }; + B398234829239F4400A82429 /* zip_file_set_external_attributes.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_external_attributes.mdoc; sourceTree = ""; }; + B398234929239F4400A82429 /* zip_source_keep.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_keep.man; sourceTree = ""; }; + B398234A29239F4400A82429 /* zip_fseek.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_fseek.html; sourceTree = ""; }; + B398234B29239F4400A82429 /* zip_fopen.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_fopen.man; sourceTree = ""; }; + B398234C29239F4400A82429 /* zip_source_open.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_open.mdoc; sourceTree = ""; }; + B398234D29239F4400A82429 /* zip_add_dir.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_add_dir.html; sourceTree = ""; }; + B398234E29239F4400A82429 /* zip_open.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_open.html; sourceTree = ""; }; + B398234F29239F4400A82429 /* zip_set_file_comment.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_set_file_comment.mdoc; sourceTree = ""; }; + B398235029239F4400A82429 /* zip_file_strerror.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_strerror.mdoc; sourceTree = ""; }; + B398235129239F4400A82429 /* zip_get_archive_flag.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_get_archive_flag.html; sourceTree = ""; }; + B398235229239F4400A82429 /* zip_dir_add.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_dir_add.html; sourceTree = ""; }; + B398235329239F4400A82429 /* zip_ftell.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_ftell.mdoc; sourceTree = ""; }; + B398235429239F4400A82429 /* zip_source_file.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_source_file.html; sourceTree = ""; }; + B398235529239F4400A82429 /* zip_error_clear.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_error_clear.html; sourceTree = ""; }; + B398235629239F4400A82429 /* zipcmp.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zipcmp.html; sourceTree = ""; }; + B398235729239F4400A82429 /* nih-man.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = "nih-man.css"; sourceTree = ""; }; + B398235829239F4400A82429 /* zip_open.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_open.man; sourceTree = ""; }; + B398235929239F4400A82429 /* zip_source_function.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_function.mdoc; sourceTree = ""; }; + B398235A29239F4400A82429 /* zip_fdopen.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zip_fdopen.html; sourceTree = ""; }; + B398235B29239F4400A82429 /* zip_file_rename.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_rename.man; sourceTree = ""; }; + B398235C29239F4400A82429 /* zip_file_set_encryption.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_file_set_encryption.mdoc; sourceTree = ""; }; + B398235D29239F4400A82429 /* zip_unchange.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_unchange.mdoc; sourceTree = ""; }; + B398235E29239F4400A82429 /* zip_source_is_deleted.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_is_deleted.man; sourceTree = ""; }; + B398235F29239F4400A82429 /* zipmerge.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zipmerge.html; sourceTree = ""; }; + B398236029239F4400A82429 /* zip_source_read.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_read.man; sourceTree = ""; }; + B398236129239F4400A82429 /* zip_libzip_version.mdoc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_libzip_version.mdoc; sourceTree = ""; }; + B398236229239F4400A82429 /* zip_source_write.man */ = {isa = PBXFileReference; lastKnownFileType = text; path = zip_source_write.man; sourceTree = ""; }; + B398236329239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398236429239F4400A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B398236629239F4400A82429 /* FindMbedTLS.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindMbedTLS.cmake; sourceTree = ""; }; + B398236729239F4400A82429 /* FindZstd.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindZstd.cmake; sourceTree = ""; }; + B398236829239F4400A82429 /* Dist.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dist.cmake; sourceTree = ""; }; + B398236929239F4400A82429 /* FindNettle.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindNettle.cmake; sourceTree = ""; }; + B398236A29239F4400A82429 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B398236B29239F4400A82429 /* cmake-zipconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "cmake-zipconf.h.in"; sourceTree = ""; }; + B398236D29239F4400A82429 /* nihtest.conf.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = nihtest.conf.in; sourceTree = ""; }; + B398236E29239F4400A82429 /* runtest.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = runtest.in; sourceTree = ""; }; + B398236F29239F4400A82429 /* NEWS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = NEWS.md; sourceTree = ""; }; + B398237029239F4400A82429 /* libzip.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = libzip.pc.in; sourceTree = ""; }; + B398237329239F4400A82429 /* unpack_zlib_here.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = unpack_zlib_here.txt; sourceTree = ""; }; + B398237429239F4400A82429 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B398237529239F4400A82429 /* vsbuild.cmd */ = {isa = PBXFileReference; lastKnownFileType = text; path = vsbuild.cmd; sourceTree = ""; }; + B398237629239F4400A82429 /* cmake-config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "cmake-config.h.in"; sourceTree = ""; }; + B398237829239F4400A82429 /* FindLibLZMA.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindLibLZMA.cmake; sourceTree = ""; }; + B398237929239F4400A82429 /* CheckLibraryExists.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = CheckLibraryExists.cmake; sourceTree = ""; }; + B398237A29239F4400A82429 /* CMakePushCheckState.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakePushCheckState.cmake; sourceTree = ""; }; + B398237B29239F4400A82429 /* FindPackageHandleStandardArgs.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindPackageHandleStandardArgs.cmake; sourceTree = ""; }; + B398237C29239F4400A82429 /* FindBZip2.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindBZip2.cmake; sourceTree = ""; }; + B398237D29239F4400A82429 /* CheckSymbolExists.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = CheckSymbolExists.cmake; sourceTree = ""; }; + B398237E29239F4400A82429 /* FindGnuTLS.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindGnuTLS.cmake; sourceTree = ""; }; + B398237F29239F4400A82429 /* FindPackageMessage.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindPackageMessage.cmake; sourceTree = ""; }; + B398238029239F4400A82429 /* SelectLibraryConfigurations.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = SelectLibraryConfigurations.cmake; sourceTree = ""; }; + B398238129239F4400A82429 /* INSTALL.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = INSTALL.md; sourceTree = ""; }; + B398238229239F4400A82429 /* TODO.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = TODO.md; sourceTree = ""; }; + B398238329239F4400A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B398238529239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398238629239F4400A82429 /* windows-open.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "windows-open.c"; sourceTree = ""; }; + B398238729239F4400A82429 /* in-memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "in-memory.c"; sourceTree = ""; }; + B398238A29239F4400A82429 /* Dockerfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dockerfile; sourceTree = ""; }; + B398238B29239F4400A82429 /* do.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = do.sh; sourceTree = ""; }; + B398238C29239F4400A82429 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B398238E29239F4400A82429 /* zip_crypto_gnutls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_crypto_gnutls.c; sourceTree = ""; }; + B398238F29239F4400A82429 /* zip_source_tell_write.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_tell_write.c; sourceTree = ""; }; + B398239029239F4400A82429 /* zip_memdup.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_memdup.c; sourceTree = ""; }; + B398239129239F4400A82429 /* zip_source_supports.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_supports.c; sourceTree = ""; }; + B398239229239F4400A82429 /* zip_file_get_external_attributes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_get_external_attributes.c; sourceTree = ""; }; + B398239329239F4400A82429 /* zip_source_begin_write.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_begin_write.c; sourceTree = ""; }; + B398239429239F4400A82429 /* zipint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zipint.h; sourceTree = ""; }; + B398239529239F4400A82429 /* zip_add.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_add.c; sourceTree = ""; }; + B398239629239F4400A82429 /* zip_get_name.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_name.c; sourceTree = ""; }; + B398239729239F4400A82429 /* zip_file_strerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_strerror.c; sourceTree = ""; }; + B398239829239F4400A82429 /* zip_fopen_index.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fopen_index.c; sourceTree = ""; }; + B398239929239F4400A82429 /* zip_source_commit_write.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_commit_write.c; sourceTree = ""; }; + B398239A29239F4400A82429 /* zip_source_buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_buffer.c; sourceTree = ""; }; + B398239B29239F4400A82429 /* zip_error_clear.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_clear.c; sourceTree = ""; }; + B398239C29239F4400A82429 /* zip_source_stat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_stat.c; sourceTree = ""; }; + B398239D29239F4400A82429 /* zip_get_archive_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_archive_comment.c; sourceTree = ""; }; + B398239E29239F4400A82429 /* zip_file_rename.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_rename.c; sourceTree = ""; }; + B398239F29239F4400A82429 /* zip_ftell.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_ftell.c; sourceTree = ""; }; + B39823A029239F4400A82429 /* zip_discard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_discard.c; sourceTree = ""; }; + B39823A129239F4400A82429 /* zip_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_string.c; sourceTree = ""; }; + B39823A229239F4400A82429 /* zip_set_name.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_name.c; sourceTree = ""; }; + B39823A329239F4400A82429 /* zip_entry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_entry.c; sourceTree = ""; }; + B39823A429239F4400A82429 /* zip_file_set_encryption.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_set_encryption.c; sourceTree = ""; }; + B39823A529239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39823A629239F4400A82429 /* zip_source_open.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_open.c; sourceTree = ""; }; + B39823A729239F4400A82429 /* zip_set_file_compression.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_file_compression.c; sourceTree = ""; }; + B39823A829239F4400A82429 /* zip_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_hash.c; sourceTree = ""; }; + B39823A929239F4400A82429 /* zip_file_error_get.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_error_get.c; sourceTree = ""; }; + B39823AA29239F4400A82429 /* zip_file_replace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_replace.c; sourceTree = ""; }; + B39823AB29239F4400A82429 /* zip_crypto_mbedtls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_crypto_mbedtls.c; sourceTree = ""; }; + B39823AC29239F4400A82429 /* zip_file_get_offset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_get_offset.c; sourceTree = ""; }; + B39823AD29239F4400A82429 /* zip_unchange.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange.c; sourceTree = ""; }; + B39823AE29239F4400A82429 /* zip_new.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_new.c; sourceTree = ""; }; + B39823AF29239F4400A82429 /* zip_file_set_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_set_comment.c; sourceTree = ""; }; + B39823B029239F4400A82429 /* zip_random_unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_random_unix.c; sourceTree = ""; }; + B39823B129239F4400A82429 /* zip_close.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_close.c; sourceTree = ""; }; + B39823B229239F4400A82429 /* zip_source_file_win32_ansi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_win32_ansi.c; sourceTree = ""; }; + B39823B329239F4400A82429 /* zip_crypto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_crypto.h; sourceTree = ""; }; + B39823B429239F4400A82429 /* zip_add_dir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_add_dir.c; sourceTree = ""; }; + B39823B529239F4400A82429 /* zip_error_get_sys_type.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_get_sys_type.c; sourceTree = ""; }; + B39823B629239F4400A82429 /* zip_source_call.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_call.c; sourceTree = ""; }; + B39823B729239F4400A82429 /* zip_source_is_deleted.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_is_deleted.c; sourceTree = ""; }; + B39823B829239F4400A82429 /* zip_fopen_encrypted.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fopen_encrypted.c; sourceTree = ""; }; + B39823B929239F4400A82429 /* zip_set_archive_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_archive_comment.c; sourceTree = ""; }; + B39823BA29239F4400A82429 /* zip_extra_field.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_extra_field.c; sourceTree = ""; }; + B39823BB29239F4400A82429 /* zip_source_file_stdio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_stdio.c; sourceTree = ""; }; + B39823BC29239F4400A82429 /* zip_dir_add.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_dir_add.c; sourceTree = ""; }; + B39823BD29239F4400A82429 /* zip_name_locate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_name_locate.c; sourceTree = ""; }; + B39823BE29239F4400A82429 /* zip_source_seek_write.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_seek_write.c; sourceTree = ""; }; + B39823BF29239F4400A82429 /* zip_algorithm_deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_algorithm_deflate.c; sourceTree = ""; }; + B39823C029239F4400A82429 /* zip_unchange_archive.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange_archive.c; sourceTree = ""; }; + B39823C129239F4400A82429 /* zip_source_free.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_free.c; sourceTree = ""; }; + B39823C229239F4400A82429 /* zip_source_file_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_common.c; sourceTree = ""; }; + B39823C329239F4400A82429 /* zip_get_num_files.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_num_files.c; sourceTree = ""; }; + B39823C429239F4400A82429 /* zip_pkware.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_pkware.c; sourceTree = ""; }; + B39823C529239F4400A82429 /* zip_err_str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_err_str.c; sourceTree = ""; }; + B39823C629239F4400A82429 /* zip_add_entry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_add_entry.c; sourceTree = ""; }; + B39823C729239F4400A82429 /* zip_random_uwp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_random_uwp.c; sourceTree = ""; }; + B39823C829239F4400A82429 /* zip_buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_buffer.c; sourceTree = ""; }; + B39823C929239F4400A82429 /* zip_error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error.c; sourceTree = ""; }; + B39823CA29239F4400A82429 /* zip_crypto_win.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_crypto_win.c; sourceTree = ""; }; + B39823CB29239F4400A82429 /* zip_strerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_strerror.c; sourceTree = ""; }; + B39823CC29239F4400A82429 /* zip_source_seek.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_seek.c; sourceTree = ""; }; + B39823CD29239F4400A82429 /* zip_get_encryption_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_encryption_implementation.c; sourceTree = ""; }; + B39823CE29239F4400A82429 /* zip_get_archive_flag.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_archive_flag.c; sourceTree = ""; }; + B39823CF29239F4400A82429 /* zip_source_pkware_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_pkware_encode.c; sourceTree = ""; }; + B39823D029239F4400A82429 /* zip_set_archive_flag.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_archive_flag.c; sourceTree = ""; }; + B39823D129239F4400A82429 /* zip_source_zip_new.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_zip_new.c; sourceTree = ""; }; + B39823D229239F4400A82429 /* zip_source_file_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_source_file_win32.h; sourceTree = ""; }; + B39823D329239F4400A82429 /* zip_crypto_openssl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_crypto_openssl.h; sourceTree = ""; }; + B39823D429239F4400A82429 /* zip_fdopen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fdopen.c; sourceTree = ""; }; + B39823D529239F4400A82429 /* zip_unchange_data.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange_data.c; sourceTree = ""; }; + B39823D629239F4400A82429 /* zip_crypto_commoncrypto.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_crypto_commoncrypto.c; sourceTree = ""; }; + B39823D729239F4400A82429 /* zip_source_pkware_decode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_pkware_decode.c; sourceTree = ""; }; + B39823D829239F4400A82429 /* zip_file_set_mtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_set_mtime.c; sourceTree = ""; }; + B39823D929239F4400A82429 /* zip_source_file_win32_named.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_win32_named.c; sourceTree = ""; }; + B39823DA29239F4400A82429 /* zip_set_default_password.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_default_password.c; sourceTree = ""; }; + B39823DB29239F4400A82429 /* zip_source_file_stdio_named.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_stdio_named.c; sourceTree = ""; }; + B39823DC29239F4400A82429 /* zip_extra_field_api.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_extra_field_api.c; sourceTree = ""; }; + B39823DD29239F4400A82429 /* zip_fread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fread.c; sourceTree = ""; }; + B39823DE29239F4400A82429 /* zip_source_rollback_write.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_rollback_write.c; sourceTree = ""; }; + B39823DF29239F4400A82429 /* zip_progress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_progress.c; sourceTree = ""; }; + B39823E029239F4400A82429 /* zip_rename.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_rename.c; sourceTree = ""; }; + B39823E129239F4400A82429 /* zip_source_zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_zip.c; sourceTree = ""; }; + B39823E229239F4400A82429 /* zip_stat_index.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_stat_index.c; sourceTree = ""; }; + B39823E329239F4400A82429 /* zip_get_num_entries.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_num_entries.c; sourceTree = ""; }; + B39823E429239F4400A82429 /* zip_source_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_source_file.h; sourceTree = ""; }; + B39823E529239F4400A82429 /* zip_source_function.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_function.c; sourceTree = ""; }; + B39823E629239F4400A82429 /* zip_file_set_external_attributes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_set_external_attributes.c; sourceTree = ""; }; + B39823E729239F4400A82429 /* zip_fseek.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fseek.c; sourceTree = ""; }; + B39823E829239F4400A82429 /* zip_winzip_aes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_winzip_aes.c; sourceTree = ""; }; + B39823E929239F4400A82429 /* zip_replace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_replace.c; sourceTree = ""; }; + B39823EA29239F4400A82429 /* zip_delete.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_delete.c; sourceTree = ""; }; + B39823EB29239F4400A82429 /* zip_source_crc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_crc.c; sourceTree = ""; }; + B39823EC29239F4400A82429 /* zip_source_accept_empty.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_accept_empty.c; sourceTree = ""; }; + B39823ED29239F4400A82429 /* zip_set_file_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_file_comment.c; sourceTree = ""; }; + B39823EE29239F4400A82429 /* zip_crypto_gnutls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_crypto_gnutls.h; sourceTree = ""; }; + B39823EF29239F4400A82429 /* zip_stat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_stat.c; sourceTree = ""; }; + B39823F029239F4400A82429 /* zip_get_file_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_file_comment.c; sourceTree = ""; }; + B39823F129239F4400A82429 /* zip_algorithm_xz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_algorithm_xz.c; sourceTree = ""; }; + B39823F229239F4400A82429 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B39823F329239F4400A82429 /* zip_source_close.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_close.c; sourceTree = ""; }; + B39823F429239F4400A82429 /* zip_source_read.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_read.c; sourceTree = ""; }; + B39823F529239F4400A82429 /* zip_open.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_open.c; sourceTree = ""; }; + B39823F629239F4400A82429 /* zip_source_begin_write_cloning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_begin_write_cloning.c; sourceTree = ""; }; + B39823F729239F4400A82429 /* compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compat.h; sourceTree = ""; }; + B39823F829239F4400A82429 /* zip_crypto_mbedtls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_crypto_mbedtls.h; sourceTree = ""; }; + B39823F929239F4400A82429 /* zip_fopen_index_encrypted.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fopen_index_encrypted.c; sourceTree = ""; }; + B39823FA29239F4400A82429 /* zip_source_file_win32_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_win32_utf8.c; sourceTree = ""; }; + B39823FB29239F4400A82429 /* zip_utf-8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "zip_utf-8.c"; sourceTree = ""; }; + B39823FC29239F4400A82429 /* zip_error_get.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_get.c; sourceTree = ""; }; + B39823FD29239F4400A82429 /* zip_fclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fclose.c; sourceTree = ""; }; + B39823FE29239F4400A82429 /* zip_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_dirent.c; sourceTree = ""; }; + B39823FF29239F4400A82429 /* zip_source_write.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_write.c; sourceTree = ""; }; + B398240029239F4400A82429 /* zip_file_add.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_add.c; sourceTree = ""; }; + B398240129239F4400A82429 /* zip_source_error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_error.c; sourceTree = ""; }; + B398240229239F4400A82429 /* zip_source_tell.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_tell.c; sourceTree = ""; }; + B398240329239F4400A82429 /* zip_crypto_win.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_crypto_win.h; sourceTree = ""; }; + B398240429239F4400A82429 /* zip_source_get_file_attributes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_get_file_attributes.c; sourceTree = ""; }; + B398240529239F4400A82429 /* zip_file_error_clear.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_error_clear.c; sourceTree = ""; }; + B398240629239F4400A82429 /* zip_source_compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_compress.c; sourceTree = ""; }; + B398240729239F4400A82429 /* zip_libzip_version.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_libzip_version.c; sourceTree = ""; }; + B398240829239F4400A82429 /* zip_error_to_str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_to_str.c; sourceTree = ""; }; + B398240929239F4400A82429 /* zip_source_remove.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_remove.c; sourceTree = ""; }; + B398240A29239F4400A82429 /* zip_algorithm_bzip2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_algorithm_bzip2.c; sourceTree = ""; }; + B398240B29239F4400A82429 /* zip_source_file_stdio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_source_file_stdio.h; sourceTree = ""; }; + B398240C29239F4400A82429 /* zip_random_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_random_win32.c; sourceTree = ""; }; + B398240D29239F4400A82429 /* zip_source_window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_window.c; sourceTree = ""; }; + B398240E29239F4400A82429 /* zip_file_get_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_get_comment.c; sourceTree = ""; }; + B398240F29239F4400A82429 /* zip_mkstempm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_mkstempm.c; sourceTree = ""; }; + B398241029239F4400A82429 /* zip_source_winzip_aes_decode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_winzip_aes_decode.c; sourceTree = ""; }; + B398241129239F4400A82429 /* zip_stat_init.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_stat_init.c; sourceTree = ""; }; + B398241229239F4400A82429 /* zip_fopen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fopen.c; sourceTree = ""; }; + B398241329239F4400A82429 /* zip_crypto_openssl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_crypto_openssl.c; sourceTree = ""; }; + B398241429239F4400A82429 /* zip_crypto_commoncrypto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip_crypto_commoncrypto.h; sourceTree = ""; }; + B398241529239F4400A82429 /* zip_algorithm_zstd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_algorithm_zstd.c; sourceTree = ""; }; + B398241629239F4400A82429 /* zip_unchange_all.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange_all.c; sourceTree = ""; }; + B398241729239F4400A82429 /* zip_io_util.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_io_util.c; sourceTree = ""; }; + B398241829239F4400A82429 /* zip_source_winzip_aes_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_winzip_aes_encode.c; sourceTree = ""; }; + B398241929239F4400A82429 /* zip_source_layered.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_layered.c; sourceTree = ""; }; + B398241A29239F4400A82429 /* zip_source_file_win32_utf16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_win32_utf16.c; sourceTree = ""; }; + B398241B29239F4400A82429 /* zip_error_strerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_strerror.c; sourceTree = ""; }; + B398241C29239F4400A82429 /* zip_source_file_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file_win32.c; sourceTree = ""; }; + B398241D29239F4400A82429 /* API-CHANGES.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "API-CHANGES.md"; sourceTree = ""; }; + B398241E29239F4400A82429 /* THANKS */ = {isa = PBXFileReference; lastKnownFileType = text; path = THANKS; sourceTree = ""; }; + B398242029239F4400A82429 /* libzip.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = libzip.xcodeproj; sourceTree = ""; }; + B398242329239F4400A82429 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B398242429239F4400A82429 /* README Xcode Project.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README Xcode Project.md"; sourceTree = ""; }; + B398242529239F4400A82429 /* zip_err_str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_err_str.c; sourceTree = ""; }; + B398242629239F4400A82429 /* extract-version.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "extract-version.sh"; sourceTree = ""; }; + B398242729239F4400A82429 /* mkconfig-h.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "mkconfig-h.sh"; sourceTree = ""; }; + B398242829239F4400A82429 /* zipconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zipconf.h; sourceTree = ""; }; + B398242929239F4400A82429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B398242A29239F4400A82429 /* libzip-config.cmake.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "libzip-config.cmake.in"; sourceTree = ""; }; + B398242C29239F4400A82429 /* copying.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = copying.txt; sourceTree = ""; }; + B398242D29239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398242F29239F4400A82429 /* glm.cppcheck */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = glm.cppcheck; sourceTree = ""; }; + B398243029239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398243229239F4400A82429 /* core_cpp_constexpr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_cpp_constexpr.cpp; sourceTree = ""; }; + B398243329239F4400A82429 /* core_force_inline.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_inline.cpp; sourceTree = ""; }; + B398243429239F4400A82429 /* core_func_integer_bit_count.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_integer_bit_count.cpp; sourceTree = ""; }; + B398243529239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398243629239F4400A82429 /* core_force_xyzw_only.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_xyzw_only.cpp; sourceTree = ""; }; + B398243729239F4400A82429 /* core_force_left_handed.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_left_handed.cpp; sourceTree = ""; }; + B398243829239F4400A82429 /* core_func_integer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_integer.cpp; sourceTree = ""; }; + B398243929239F4400A82429 /* core_setup_force_cxx98.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_setup_force_cxx98.cpp; sourceTree = ""; }; + B398243A29239F4400A82429 /* core_setup_message.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_setup_message.cpp; sourceTree = ""; }; + B398243B29239F4400A82429 /* core_func_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_common.cpp; sourceTree = ""; }; + B398243C29239F4400A82429 /* core_force_quat_wxyz.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_quat_wxyz.cpp; sourceTree = ""; }; + B398243D29239F4400A82429 /* core_force_explicit_ctor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_explicit_ctor.cpp; sourceTree = ""; }; + B398243E29239F4400A82429 /* core_type_length.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_length.cpp; sourceTree = ""; }; + B398243F29239F4400A82429 /* core_force_arch_unknown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_arch_unknown.cpp; sourceTree = ""; }; + B398244029239F4400A82429 /* core_setup_precision.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_setup_precision.cpp; sourceTree = ""; }; + B398244129239F4400A82429 /* core_func_exponential.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_exponential.cpp; sourceTree = ""; }; + B398244229239F4400A82429 /* core_setup_force_size_t_length.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_setup_force_size_t_length.cpp; sourceTree = ""; }; + B398244329239F4400A82429 /* core_cpp_defaulted_ctor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_cpp_defaulted_ctor.cpp; sourceTree = ""; }; + B398244429239F4400A82429 /* core_func_packing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_packing.cpp; sourceTree = ""; }; + B398244529239F4400A82429 /* core_force_ctor_init.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_ctor_init.cpp; sourceTree = ""; }; + B398244629239F4400A82429 /* core_func_geometric.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_geometric.cpp; sourceTree = ""; }; + B398244729239F4400A82429 /* core_type_ctor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_ctor.cpp; sourceTree = ""; }; + B398244829239F4400A82429 /* core_func_trigonometric.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_trigonometric.cpp; sourceTree = ""; }; + B398244929239F4400A82429 /* core_setup_platform_unknown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_setup_platform_unknown.cpp; sourceTree = ""; }; + B398244A29239F4400A82429 /* core_func_integer_find_msb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_integer_find_msb.cpp; sourceTree = ""; }; + B398244B29239F4400A82429 /* core_func_swizzle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_swizzle.cpp; sourceTree = ""; }; + B398244C29239F4400A82429 /* core_type_mat2x2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat2x2.cpp; sourceTree = ""; }; + B398244D29239F4400A82429 /* core_force_cxx03.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_cxx03.cpp; sourceTree = ""; }; + B398244E29239F4400A82429 /* core_type_mat4x4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat4x4.cpp; sourceTree = ""; }; + B398244F29239F4400A82429 /* core_func_vector_relational.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_vector_relational.cpp; sourceTree = ""; }; + B398245029239F4400A82429 /* core_type_mat2x3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat2x3.cpp; sourceTree = ""; }; + B398245129239F4400A82429 /* core_force_aligned_gentypes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_aligned_gentypes.cpp; sourceTree = ""; }; + B398245229239F4400A82429 /* core_force_platform_unknown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_platform_unknown.cpp; sourceTree = ""; }; + B398245329239F4400A82429 /* core_force_compiler_unknown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_compiler_unknown.cpp; sourceTree = ""; }; + B398245429239F4400A82429 /* core_type_mat2x4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat2x4.cpp; sourceTree = ""; }; + B398245529239F4400A82429 /* core_type_mat4x2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat4x2.cpp; sourceTree = ""; }; + B398245629239F4400A82429 /* core_type_mat4x3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat4x3.cpp; sourceTree = ""; }; + B398245729239F4400A82429 /* core_func_noise.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_noise.cpp; sourceTree = ""; }; + B398245829239F4400A82429 /* core_type_int.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_int.cpp; sourceTree = ""; }; + B398245929239F4400A82429 /* core_type_vec1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_vec1.cpp; sourceTree = ""; }; + B398245A29239F4400A82429 /* core_type_mat3x2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat3x2.cpp; sourceTree = ""; }; + B398245B29239F4400A82429 /* core_type_mat3x3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat3x3.cpp; sourceTree = ""; }; + B398245C29239F4400A82429 /* core_force_cxx_unknown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_cxx_unknown.cpp; sourceTree = ""; }; + B398245D29239F4400A82429 /* core_force_unrestricted_gentype.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_unrestricted_gentype.cpp; sourceTree = ""; }; + B398245E29239F4400A82429 /* core_func_integer_find_lsb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_integer_find_lsb.cpp; sourceTree = ""; }; + B398245F29239F4400A82429 /* core_type_vec2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_vec2.cpp; sourceTree = ""; }; + B398246029239F4400A82429 /* core_force_pure.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_pure.cpp; sourceTree = ""; }; + B398246129239F4400A82429 /* core_type_vec3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_vec3.cpp; sourceTree = ""; }; + B398246229239F4400A82429 /* core_force_depth_zero_to_one.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_depth_zero_to_one.cpp; sourceTree = ""; }; + B398246329239F4400A82429 /* core_type_mat3x4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_mat3x4.cpp; sourceTree = ""; }; + B398246429239F4400A82429 /* core_force_size_t_length.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_size_t_length.cpp; sourceTree = ""; }; + B398246529239F4400A82429 /* core_type_aligned.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_aligned.cpp; sourceTree = ""; }; + B398246629239F4400A82429 /* core_type_vec4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_vec4.cpp; sourceTree = ""; }; + B398246729239F4400A82429 /* core_force_cxx98.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_force_cxx98.cpp; sourceTree = ""; }; + B398246829239F4400A82429 /* core_func_matrix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_func_matrix.cpp; sourceTree = ""; }; + B398246929239F4400A82429 /* core_type_cast.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_type_cast.cpp; sourceTree = ""; }; + B398246B29239F4400A82429 /* ext_matrix_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_matrix_common.cpp; sourceTree = ""; }; + B398246C29239F4400A82429 /* ext_scalar_uint_sized.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_scalar_uint_sized.cpp; sourceTree = ""; }; + B398246D29239F4400A82429 /* ext_matrix_projection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_matrix_projection.cpp; sourceTree = ""; }; + B398246E29239F4400A82429 /* ext_scalar_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_scalar_common.cpp; sourceTree = ""; }; + B398246F29239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398247029239F4400A82429 /* ext_matrix_relational.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_matrix_relational.cpp; sourceTree = ""; }; + B398247129239F4400A82429 /* ext_scalar_relational.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_scalar_relational.cpp; sourceTree = ""; }; + B398247229239F4400A82429 /* ext_vector_integer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vector_integer.cpp; sourceTree = ""; }; + B398247329239F4400A82429 /* ext_vector_integer_sized.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vector_integer_sized.cpp; sourceTree = ""; }; + B398247429239F4400A82429 /* ext_quaternion_relational.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_quaternion_relational.cpp; sourceTree = ""; }; + B398247529239F4400A82429 /* ext_vec1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vec1.cpp; sourceTree = ""; }; + B398247629239F4400A82429 /* ext_quaternion_geometric.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_quaternion_geometric.cpp; sourceTree = ""; }; + B398247729239F4400A82429 /* ext_scalar_constants.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_scalar_constants.cpp; sourceTree = ""; }; + B398247829239F4400A82429 /* ext_vector_bool1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vector_bool1.cpp; sourceTree = ""; }; + B398247929239F4400A82429 /* ext_quaternion_trigonometric.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_quaternion_trigonometric.cpp; sourceTree = ""; }; + B398247A29239F4400A82429 /* ext_quaternion_type.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_quaternion_type.cpp; sourceTree = ""; }; + B398247B29239F4400A82429 /* ext_scalar_integer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_scalar_integer.cpp; sourceTree = ""; }; + B398247C29239F4400A82429 /* ext_matrix_clip_space.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_matrix_clip_space.cpp; sourceTree = ""; }; + B398247D29239F4400A82429 /* ext_quaternion_transform.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_quaternion_transform.cpp; sourceTree = ""; }; + B398247E29239F4400A82429 /* ext_vector_relational.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vector_relational.cpp; sourceTree = ""; }; + B398247F29239F4400A82429 /* ext_quaternion_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_quaternion_common.cpp; sourceTree = ""; }; + B398248029239F4400A82429 /* ext_scalar_int_sized.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_scalar_int_sized.cpp; sourceTree = ""; }; + B398248129239F4400A82429 /* ext_vector_iec559.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vector_iec559.cpp; sourceTree = ""; }; + B398248229239F4400A82429 /* ext_quaternion_exponential.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_quaternion_exponential.cpp; sourceTree = ""; }; + B398248329239F4400A82429 /* ext_scalar_ulp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_scalar_ulp.cpp; sourceTree = ""; }; + B398248429239F4400A82429 /* ext_vector_ulp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vector_ulp.cpp; sourceTree = ""; }; + B398248529239F4400A82429 /* ext_matrix_transform.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_matrix_transform.cpp; sourceTree = ""; }; + B398248629239F4400A82429 /* ext_vector_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ext_vector_common.cpp; sourceTree = ""; }; + B398248829239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398248929239F4400A82429 /* bug_ms_vec_static.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bug_ms_vec_static.cpp; sourceTree = ""; }; + B398248B29239F4400A82429 /* gtc_packing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_packing.cpp; sourceTree = ""; }; + B398248C29239F4400A82429 /* gtc_matrix_inverse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_matrix_inverse.cpp; sourceTree = ""; }; + B398248D29239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398248E29239F4400A82429 /* gtc_type_ptr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_type_ptr.cpp; sourceTree = ""; }; + B398248F29239F4400A82429 /* gtc_matrix_transform.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_matrix_transform.cpp; sourceTree = ""; }; + B398249029239F4400A82429 /* gtc_type_precision.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_type_precision.cpp; sourceTree = ""; }; + B398249129239F4400A82429 /* gtc_reciprocal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_reciprocal.cpp; sourceTree = ""; }; + B398249229239F4400A82429 /* gtc_integer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_integer.cpp; sourceTree = ""; }; + B398249329239F4400A82429 /* gtc_noise.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_noise.cpp; sourceTree = ""; }; + B398249429239F4400A82429 /* gtc_color_space.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_color_space.cpp; sourceTree = ""; }; + B398249529239F4400A82429 /* gtc_matrix_integer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_matrix_integer.cpp; sourceTree = ""; }; + B398249629239F4400A82429 /* gtc_user_defined_types.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_user_defined_types.cpp; sourceTree = ""; }; + B398249729239F4400A82429 /* gtc_constants.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_constants.cpp; sourceTree = ""; }; + B398249829239F4400A82429 /* gtc_type_aligned.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_type_aligned.cpp; sourceTree = ""; }; + B398249929239F4400A82429 /* gtc_random.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_random.cpp; sourceTree = ""; }; + B398249A29239F4400A82429 /* gtc_epsilon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_epsilon.cpp; sourceTree = ""; }; + B398249B29239F4400A82429 /* gtc_round.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_round.cpp; sourceTree = ""; }; + B398249C29239F4400A82429 /* gtc_quaternion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_quaternion.cpp; sourceTree = ""; }; + B398249D29239F4400A82429 /* gtc_matrix_access.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_matrix_access.cpp; sourceTree = ""; }; + B398249E29239F4400A82429 /* gtc_bitfield.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_bitfield.cpp; sourceTree = ""; }; + B398249F29239F4400A82429 /* gtc_ulp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_ulp.cpp; sourceTree = ""; }; + B39824A029239F4400A82429 /* gtc_vec1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtc_vec1.cpp; sourceTree = ""; }; + B39824A229239F4400A82429 /* gtx_closest_point.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_closest_point.cpp; sourceTree = ""; }; + B39824A329239F4400A82429 /* gtx_number_precision.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_number_precision.cpp; sourceTree = ""; }; + B39824A429239F4400A82429 /* gtx_log_base.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_log_base.cpp; sourceTree = ""; }; + B39824A529239F4400A82429 /* gtx_io.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_io.cpp; sourceTree = ""; }; + B39824A629239F4400A82429 /* gtx_color_space.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_color_space.cpp; sourceTree = ""; }; + B39824A729239F4400A82429 /* gtx_spline.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_spline.cpp; sourceTree = ""; }; + B39824A829239F4400A82429 /* gtx_scalar_multiplication.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_scalar_multiplication.cpp; sourceTree = ""; }; + B39824A929239F4400A82429 /* gtx_int_10_10_10_2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_int_10_10_10_2.cpp; sourceTree = ""; }; + B39824AA29239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39824AB29239F4400A82429 /* gtx_rotate_vector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_rotate_vector.cpp; sourceTree = ""; }; + B39824AC29239F4400A82429 /* gtx_vec_swizzle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_vec_swizzle.cpp; sourceTree = ""; }; + B39824AD29239F4400A82429 /* gtx_exterior_product.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_exterior_product.cpp; sourceTree = ""; }; + B39824AE29239F4400A82429 /* gtx_load.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_load.cpp; sourceTree = ""; }; + B39824AF29239F4400A82429 /* gtx_matrix_query.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_query.cpp; sourceTree = ""; }; + B39824B029239F4400A82429 /* gtx_intersect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_intersect.cpp; sourceTree = ""; }; + B39824B129239F4400A82429 /* gtx_color_encoding.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_color_encoding.cpp; sourceTree = ""; }; + B39824B229239F4400A82429 /* gtx_matrix_factorisation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_factorisation.cpp; sourceTree = ""; }; + B39824B329239F4400A82429 /* gtx_extend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_extend.cpp; sourceTree = ""; }; + B39824B429239F4400A82429 /* gtx_euler_angle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_euler_angle.cpp; sourceTree = ""; }; + B39824B529239F4400A82429 /* gtx_quaternion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_quaternion.cpp; sourceTree = ""; }; + B39824B629239F4400A82429 /* gtx_vector_angle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_vector_angle.cpp; sourceTree = ""; }; + B39824B729239F4400A82429 /* gtx_component_wise.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_component_wise.cpp; sourceTree = ""; }; + B39824B829239F4400A82429 /* gtx_orthonormalize.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_orthonormalize.cpp; sourceTree = ""; }; + B39824B929239F4400A82429 /* gtx_rotate_normalized_axis.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_rotate_normalized_axis.cpp; sourceTree = ""; }; + B39824BA29239F4400A82429 /* gtx_type_trait.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_type_trait.cpp; sourceTree = ""; }; + B39824BB29239F4400A82429 /* gtx_mixed_product.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_mixed_product.cpp; sourceTree = ""; }; + B39824BC29239F4400A82429 /* gtx_color_space_YCoCg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_color_space_YCoCg.cpp; sourceTree = ""; }; + B39824BD29239F4400A82429 /* gtx_matrix_major_storage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_major_storage.cpp; sourceTree = ""; }; + B39824BE29239F4400A82429 /* gtx_fast_square_root.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_fast_square_root.cpp; sourceTree = ""; }; + B39824BF29239F4400A82429 /* gtx_extended_min_max.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_extended_min_max.cpp; sourceTree = ""; }; + B39824C029239F4400A82429 /* gtx_texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_texture.cpp; sourceTree = ""; }; + B39824C129239F4400A82429 /* gtx_fast_trigonometry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_fast_trigonometry.cpp; sourceTree = ""; }; + B39824C229239F4400A82429 /* gtx_extented_min_max.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_extented_min_max.cpp; sourceTree = ""; }; + B39824C329239F4400A82429 /* gtx_simd_vec4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_simd_vec4.cpp; sourceTree = ""; }; + B39824C429239F4400A82429 /* gtx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx.cpp; sourceTree = ""; }; + B39824C529239F4400A82429 /* gtx_normal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_normal.cpp; sourceTree = ""; }; + B39824C629239F4400A82429 /* gtx_easing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_easing.cpp; sourceTree = ""; }; + B39824C729239F4400A82429 /* gtx_matrix_operation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_operation.cpp; sourceTree = ""; }; + B39824C829239F4400A82429 /* gtx_norm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_norm.cpp; sourceTree = ""; }; + B39824C929239F4400A82429 /* gtx_functions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_functions.cpp; sourceTree = ""; }; + B39824CA29239F4400A82429 /* gtx_handed_coordinate_space.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_handed_coordinate_space.cpp; sourceTree = ""; }; + B39824CB29239F4400A82429 /* gtx_type_aligned.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_type_aligned.cpp; sourceTree = ""; }; + B39824CC29239F4400A82429 /* gtx_matrix_interpolation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_interpolation.cpp; sourceTree = ""; }; + B39824CD29239F4400A82429 /* gtx_string_cast.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_string_cast.cpp; sourceTree = ""; }; + B39824CE29239F4400A82429 /* gtx_wrap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_wrap.cpp; sourceTree = ""; }; + B39824CF29239F4400A82429 /* gtx_projection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_projection.cpp; sourceTree = ""; }; + B39824D029239F4400A82429 /* gtx_vector_query.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_vector_query.cpp; sourceTree = ""; }; + B39824D129239F4400A82429 /* gtx_random.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_random.cpp; sourceTree = ""; }; + B39824D229239F4400A82429 /* gtx_compatibility.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_compatibility.cpp; sourceTree = ""; }; + B39824D329239F4400A82429 /* gtx_matrix_transform_2d.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_transform_2d.cpp; sourceTree = ""; }; + B39824D429239F4400A82429 /* gtx_scalar_relational.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_scalar_relational.cpp; sourceTree = ""; }; + B39824D529239F4400A82429 /* gtx_polar_coordinates.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_polar_coordinates.cpp; sourceTree = ""; }; + B39824D629239F4400A82429 /* gtx_normalize_dot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_normalize_dot.cpp; sourceTree = ""; }; + B39824D729239F4400A82429 /* gtx_integer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_integer.cpp; sourceTree = ""; }; + B39824D829239F4400A82429 /* gtx_simd_mat4.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_simd_mat4.cpp; sourceTree = ""; }; + B39824D929239F4400A82429 /* gtx_fast_exponential.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_fast_exponential.cpp; sourceTree = ""; }; + B39824DA29239F4400A82429 /* gtx_dual_quaternion.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_dual_quaternion.cpp; sourceTree = ""; }; + B39824DB29239F4400A82429 /* gtx_matrix_decompose.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_decompose.cpp; sourceTree = ""; }; + B39824DC29239F4400A82429 /* gtx_range.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_range.cpp; sourceTree = ""; }; + B39824DD29239F4400A82429 /* gtx_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_common.cpp; sourceTree = ""; }; + B39824DE29239F4400A82429 /* gtx_perpendicular.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_perpendicular.cpp; sourceTree = ""; }; + B39824DF29239F4400A82429 /* gtx_gradient_paint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_gradient_paint.cpp; sourceTree = ""; }; + B39824E029239F4400A82429 /* gtx_associated_min_max.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_associated_min_max.cpp; sourceTree = ""; }; + B39824E129239F4400A82429 /* gtx_matrix_cross_product.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_matrix_cross_product.cpp; sourceTree = ""; }; + B39824E229239F4400A82429 /* gtx_optimum_pow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gtx_optimum_pow.cpp; sourceTree = ""; }; + B39824E429239F4400A82429 /* perf_matrix_inverse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = perf_matrix_inverse.cpp; sourceTree = ""; }; + B39824E529239F4400A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39824E629239F4400A82429 /* perf_matrix_div.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = perf_matrix_div.cpp; sourceTree = ""; }; + B39824E729239F4400A82429 /* perf_vector_mul_matrix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = perf_vector_mul_matrix.cpp; sourceTree = ""; }; + B39824E829239F4400A82429 /* perf_matrix_transpose.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = perf_matrix_transpose.cpp; sourceTree = ""; }; + B39824E929239F4400A82429 /* perf_matrix_mul.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = perf_matrix_mul.cpp; sourceTree = ""; }; + B39824EA29239F4400A82429 /* perf_matrix_mul_vector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = perf_matrix_mul_vector.cpp; sourceTree = ""; }; + B39824EC29239F4400A82429 /* autoexp.vc2010.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = autoexp.vc2010.dat; sourceTree = ""; }; + B39824ED29239F4400A82429 /* usertype.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = usertype.dat; sourceTree = ""; }; + B39824EE29239F4400A82429 /* autoexp.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = autoexp.txt; sourceTree = ""; }; + B39824EF29239F4400A82429 /* glm.natvis */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = glm.natvis; sourceTree = ""; }; + B39824F029239F4400A82429 /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B39824F329239F4400A82429 /* references-leosfortune2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "references-leosfortune2.jpg"; sourceTree = ""; }; + B39824F429239F4400A82429 /* frontpage1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frontpage1.png; sourceTree = ""; }; + B39824F529239F4400A82429 /* g-truc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "g-truc.png"; sourceTree = ""; }; + B39824F629239F4400A82429 /* frontpage2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frontpage2.png; sourceTree = ""; }; + B39824F729239F4400A82429 /* references-cinder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "references-cinder.png"; sourceTree = ""; }; + B39824F829239F4400A82429 /* references-leosfortune.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "references-leosfortune.jpeg"; sourceTree = ""; }; + B39824F929239F4400A82429 /* random-ballrand.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "random-ballrand.png"; sourceTree = ""; }; + B39824FA29239F4400A82429 /* random-circularrand.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "random-circularrand.png"; sourceTree = ""; }; + B39824FB29239F4400A82429 /* random-linearrand.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "random-linearrand.png"; sourceTree = ""; }; + B39824FC29239F4400A82429 /* noise-perlin2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "noise-perlin2.jpg"; sourceTree = ""; }; + B39824FD29239F4400A82429 /* noise-perlin3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "noise-perlin3.jpg"; sourceTree = ""; }; + B39824FE29239F4400A82429 /* references-opencloth1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "references-opencloth1.png"; sourceTree = ""; }; + B39824FF29239F4400A82429 /* references-outerra1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "references-outerra1.jpg"; sourceTree = ""; }; + B398250029239F4400A82429 /* references-outerra3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "references-outerra3.jpg"; sourceTree = ""; }; + B398250129239F4400A82429 /* references-opencloth3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "references-opencloth3.png"; sourceTree = ""; }; + B398250229239F4400A82429 /* noise-perlin1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "noise-perlin1.jpg"; sourceTree = ""; }; + B398250329239F4400A82429 /* references-outerra2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "references-outerra2.jpg"; sourceTree = ""; }; + B398250429239F4400A82429 /* random-sphericalrand.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "random-sphericalrand.png"; sourceTree = ""; }; + B398250529239F4400A82429 /* logo-mini.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo-mini.png"; sourceTree = ""; }; + B398250629239F4400A82429 /* noise-simplex2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "noise-simplex2.jpg"; sourceTree = ""; }; + B398250729239F4400A82429 /* noise-perlin4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "noise-perlin4.png"; sourceTree = ""; }; + B398250829239F4400A82429 /* random-gaussrand.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "random-gaussrand.png"; sourceTree = ""; }; + B398250929239F4400A82429 /* noise-perlin5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "noise-perlin5.png"; sourceTree = ""; }; + B398250A29239F4400A82429 /* noise-simplex3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "noise-simplex3.jpg"; sourceTree = ""; }; + B398250B29239F4400A82429 /* noise-simplex1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "noise-simplex1.jpg"; sourceTree = ""; }; + B398250C29239F4400A82429 /* noise-perlin6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "noise-perlin6.png"; sourceTree = ""; }; + B398250D29239F4400A82429 /* references-outerra4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "references-outerra4.jpg"; sourceTree = ""; }; + B398250E29239F4400A82429 /* random-diskrand.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "random-diskrand.png"; sourceTree = ""; }; + B398250F29239F4400A82429 /* references-glsl4book.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "references-glsl4book.jpg"; sourceTree = ""; }; + B398251129239F4400A82429 /* splitbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = splitbar.png; sourceTree = ""; }; + B398251229239F4400A82429 /* doxygen.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = doxygen.css; sourceTree = ""; }; + B398251329239F4400A82429 /* sync_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sync_off.png; sourceTree = ""; }; + B398251429239F4400A82429 /* sync_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sync_on.png; sourceTree = ""; }; + B398251529239F4400A82429 /* doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doc.png; sourceTree = ""; }; + B398251629239F4400A82429 /* bc_s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bc_s.png; sourceTree = ""; }; + B398251729239F4400A82429 /* nav_g.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nav_g.png; sourceTree = ""; }; + B398251829239F4400A82429 /* nav_f.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nav_f.png; sourceTree = ""; }; + B398251929239F4400A82429 /* closed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = closed.png; sourceTree = ""; }; + B398251A29239F4400A82429 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = ""; }; + B398251B29239F4400A82429 /* tab_s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_s.png; sourceTree = ""; }; + B398251C29239F4400A82429 /* tab_a.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_a.png; sourceTree = ""; }; + B398251D29239F4400A82429 /* tab_b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_b.png; sourceTree = ""; }; + B398251E29239F4400A82429 /* bdwn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bdwn.png; sourceTree = ""; }; + B398251F29239F4400A82429 /* logo-mini.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo-mini.png"; sourceTree = ""; }; + B398252029239F4400A82429 /* nav_h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nav_h.png; sourceTree = ""; }; + B398252129239F4500A82429 /* tab_h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_h.png; sourceTree = ""; }; + B398252229239F4500A82429 /* open.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = open.png; sourceTree = ""; }; + B398252329239F4500A82429 /* folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folderclosed.png; sourceTree = ""; }; + B398252429239F4500A82429 /* folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folderopen.png; sourceTree = ""; }; + B398252629239F4500A82429 /* a00072_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00072_source.html; sourceTree = ""; }; + B398252729239F4500A82429 /* a00222.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00222.html; sourceTree = ""; }; + B398252829239F4500A82429 /* a00110_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00110_source.html; sourceTree = ""; }; + B398252929239F4500A82429 /* a00367.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00367.html; sourceTree = ""; }; + B398252A29239F4500A82429 /* a00002_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00002_source.html; sourceTree = ""; }; + B398252B29239F4500A82429 /* a00275.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00275.html; sourceTree = ""; }; + B398252C29239F4500A82429 /* a00160_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00160_source.html; sourceTree = ""; }; + B398252D29239F4500A82429 /* a00330.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00330.html; sourceTree = ""; }; + B398252E29239F4500A82429 /* a00215_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00215_source.html; sourceTree = ""; }; + B398252F29239F4500A82429 /* a00263.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00263.html; sourceTree = ""; }; + B398253029239F4500A82429 /* splitbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = splitbar.png; sourceTree = ""; }; + B398253129239F4500A82429 /* a00326.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00326.html; sourceTree = ""; }; + B398253229239F4500A82429 /* a00058.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00058.html; sourceTree = ""; }; + B398253329239F4500A82429 /* a00234.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00234.html; sourceTree = ""; }; + B398253429239F4500A82429 /* a00371.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00371.html; sourceTree = ""; }; + B398253529239F4500A82429 /* a00166.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00166.html; sourceTree = ""; }; + B398253629239F4500A82429 /* a00030_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00030_source.html; sourceTree = ""; }; + B398253729239F4500A82429 /* a00189.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00189.html; sourceTree = ""; }; + B398253829239F4500A82429 /* a00023.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00023.html; sourceTree = ""; }; + B398253929239F4500A82429 /* a00152_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00152_source.html; sourceTree = ""; }; + B398253A29239F4500A82429 /* a00040_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00040_source.html; sourceTree = ""; }; + B398253B29239F4500A82429 /* a00131.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00131.html; sourceTree = ""; }; + B398253C29239F4500A82429 /* a00074.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00074.html; sourceTree = ""; }; + B398253D29239F4500A82429 /* a00209_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00209_source.html; sourceTree = ""; }; + B398253E29239F4500A82429 /* a00122_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00122_source.html; sourceTree = ""; }; + B398253F29239F4500A82429 /* a00218.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00218.html; sourceTree = ""; }; + B398254029239F4500A82429 /* a00127.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00127.html; sourceTree = ""; }; + B398254129239F4500A82429 /* a00062.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00062.html; sourceTree = ""; }; + B398254229239F4500A82429 /* a00181_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00181_source.html; sourceTree = ""; }; + B398254329239F4500A82429 /* a00170.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00170.html; sourceTree = ""; }; + B398254429239F4500A82429 /* a00093_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00093_source.html; sourceTree = ""; }; + B398254529239F4500A82429 /* a00227_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00227_source.html; sourceTree = ""; }; + B398254629239F4500A82429 /* a00259.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00259.html; sourceTree = ""; }; + B398254729239F4500A82429 /* a00169_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00169_source.html; sourceTree = ""; }; + B398254829239F4500A82429 /* doxygen.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = doxygen.css; sourceTree = ""; }; + B398254929239F4500A82429 /* a00042.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00042.html; sourceTree = ""; }; + B398254A29239F4500A82429 /* a00194_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00194_source.html; sourceTree = ""; }; + B398254B29239F4500A82429 /* a00107.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00107.html; sourceTree = ""; }; + B398254C29239F4500A82429 /* a00086_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00086_source.html; sourceTree = ""; }; + B398254D29239F4500A82429 /* a00279.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00279.html; sourceTree = ""; }; + B398254E29239F4500A82429 /* a00119_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00119_source.html; sourceTree = ""; }; + B398254F29239F4500A82429 /* a00296.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00296.html; sourceTree = ""; }; + B398255029239F4500A82429 /* a00015.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00015.html; sourceTree = ""; }; + B398255129239F4500A82429 /* a00232_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00232_source.html; sourceTree = ""; }; + B398255229239F4500A82429 /* a00150.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00150.html; sourceTree = ""; }; + B398255329239F4500A82429 /* a00025_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00025_source.html; sourceTree = ""; }; + B398255429239F4500A82429 /* a00280.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00280.html; sourceTree = ""; }; + B398255529239F4500A82429 /* a00146.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00146.html; sourceTree = ""; }; + B398255629239F4500A82429 /* a00147_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00147_source.html; sourceTree = ""; }; + B398255729239F4500A82429 /* a00055_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00055_source.html; sourceTree = ""; }; + B398255829239F4500A82429 /* a00054.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00054.html; sourceTree = ""; }; + B398255929239F4500A82429 /* a00111.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00111.html; sourceTree = ""; }; + B398255A29239F4500A82429 /* a00137_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00137_source.html; sourceTree = ""; }; + B398255B29239F4500A82429 /* a00306.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00306.html; sourceTree = ""; }; + B398255C29239F4500A82429 /* a00243.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00243.html; sourceTree = ""; }; + B398255D29239F4500A82429 /* a00200_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00200_source.html; sourceTree = ""; }; + B398255E29239F4500A82429 /* a00185.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00185.html; sourceTree = ""; }; + B398255F29239F4500A82429 /* a00049_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00049_source.html; sourceTree = ""; }; + B398256029239F4500A82429 /* a00351.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00351.html; sourceTree = ""; }; + B398256129239F4500A82429 /* a00214.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00214.html; sourceTree = ""; }; + B398256229239F4500A82429 /* a00097.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00097.html; sourceTree = ""; }; + B398256329239F4500A82429 /* a00039_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00039_source.html; sourceTree = ""; }; + B398256429239F4500A82429 /* a00078.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00078.html; sourceTree = ""; }; + B398256529239F4500A82429 /* a00347.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00347.html; sourceTree = ""; }; + B398256629239F4500A82429 /* a00067_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00067_source.html; sourceTree = ""; }; + B398256729239F4500A82429 /* a00202.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00202.html; sourceTree = ""; }; + B398256829239F4500A82429 /* a00081.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00081.html; sourceTree = ""; }; + B398256929239F4500A82429 /* a00105_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00105_source.html; sourceTree = ""; }; + B398256A29239F4500A82429 /* a00188_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00188_source.html; sourceTree = ""; }; + B398256B29239F4500A82429 /* a00310.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00310.html; sourceTree = ""; }; + B398256C29239F4500A82429 /* a00017_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00017_source.html; sourceTree = ""; }; + B398256D29239F4500A82429 /* a00255.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00255.html; sourceTree = ""; }; + B398256E29239F4500A82429 /* a00193.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00193.html; sourceTree = ""; }; + B398256F29239F4500A82429 /* a00039.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00039.html; sourceTree = ""; }; + B398257029239F4500A82429 /* a00175_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00175_source.html; sourceTree = ""; }; + B398257129239F4500A82429 /* a00192.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00192.html; sourceTree = ""; }; + B398257229239F4500A82429 /* a00132_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00132_source.html; sourceTree = ""; }; + B398257329239F4500A82429 /* a00038.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00038.html; sourceTree = ""; }; + B398257429239F4500A82429 /* a00311.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00311.html; sourceTree = ""; }; + B398257529239F4500A82429 /* a00050_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00050_source.html; sourceTree = ""; }; + B398257629239F4500A82429 /* a00254.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00254.html; sourceTree = ""; }; + B398257729239F4500A82429 /* a00219_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00219_source.html; sourceTree = ""; }; + B398257829239F4500A82429 /* a00080.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00080.html; sourceTree = ""; }; + B398257929239F4500A82429 /* a00142_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00142_source.html; sourceTree = ""; }; + B398257A29239F4500A82429 /* a00346.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00346.html; sourceTree = ""; }; + B398257B29239F4500A82429 /* a00020_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00020_source.html; sourceTree = ""; }; + B398257C29239F4500A82429 /* a00203.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00203.html; sourceTree = ""; }; + B398257D29239F4500A82429 /* a00096.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00096.html; sourceTree = ""; }; + B398257E29239F4500A82429 /* arrowright.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrowright.png; sourceTree = ""; }; + B398257F29239F4500A82429 /* a00079.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00079.html; sourceTree = ""; }; + B398258029239F4500A82429 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + B398258129239F4500A82429 /* a00083_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00083_source.html; sourceTree = ""; }; + B398258229239F4500A82429 /* a00350.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00350.html; sourceTree = ""; }; + B398258329239F4500A82429 /* a00215.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00215.html; sourceTree = ""; }; + B398258429239F4500A82429 /* a00191_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00191_source.html; sourceTree = ""; }; + B398258529239F4500A82429 /* a00184.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00184.html; sourceTree = ""; }; + B398258629239F4500A82429 /* a00307.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00307.html; sourceTree = ""; }; + B398258729239F4500A82429 /* a00242.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00242.html; sourceTree = ""; }; + B398258829239F4500A82429 /* a00055.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00055.html; sourceTree = ""; }; + B398258929239F4500A82429 /* a00170_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00170_source.html; sourceTree = ""; }; + B398258A29239F4500A82429 /* a00110.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00110.html; sourceTree = ""; }; + B398258B29239F4500A82429 /* a00012_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00012_source.html; sourceTree = ""; }; + B398258C29239F4500A82429 /* a00147.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00147.html; sourceTree = ""; }; + B398258D29239F4500A82429 /* a00100_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00100_source.html; sourceTree = ""; }; + B398258E29239F4500A82429 /* sync_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sync_off.png; sourceTree = ""; }; + B398258F29239F4500A82429 /* a00062_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00062_source.html; sourceTree = ""; }; + B398259029239F4500A82429 /* a00281.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00281.html; sourceTree = ""; }; + B398259129239F4500A82429 /* a00014.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00014.html; sourceTree = ""; }; + B398259229239F4500A82429 /* a00151.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00151.html; sourceTree = ""; }; + B398259329239F4500A82429 /* a00278.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00278.html; sourceTree = ""; }; + B398259429239F4500A82429 /* a00297.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00297.html; sourceTree = ""; }; + B398259529239F4500A82429 /* a00043.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00043.html; sourceTree = ""; }; + B398259629239F4500A82429 /* a00205_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00205_source.html; sourceTree = ""; }; + B398259729239F4500A82429 /* a00106.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00106.html; sourceTree = ""; }; + B398259829239F4500A82429 /* modules.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = modules.html; sourceTree = ""; }; + B398259929239F4500A82429 /* a00029_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00029_source.html; sourceTree = ""; }; + B398259A29239F4500A82429 /* a00258.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00258.html; sourceTree = ""; }; + B398259B29239F4500A82429 /* a00171.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00171.html; sourceTree = ""; }; + B398259C29239F4500A82429 /* a00034.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00034.html; sourceTree = ""; }; + B398259D29239F4500A82429 /* a00210_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00210_source.html; sourceTree = ""; }; + B398259E29239F4500A82429 /* a00059_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00059_source.html; sourceTree = ""; }; + B398259F29239F4500A82429 /* a00126.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00126.html; sourceTree = ""; }; + B39825A029239F4500A82429 /* a00063.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00063.html; sourceTree = ""; }; + B39825A129239F4500A82429 /* a00165_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00165_source.html; sourceTree = ""; }; + B39825A229239F4500A82429 /* a00219.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00219.html; sourceTree = ""; }; + B39825A329239F4500A82429 /* sync_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sync_on.png; sourceTree = ""; }; + B39825A429239F4500A82429 /* a00007_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00007_source.html; sourceTree = ""; }; + B39825A529239F4500A82429 /* a00130.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00130.html; sourceTree = ""; }; + B39825A629239F4500A82429 /* a00198_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00198_source.html; sourceTree = ""; }; + B39825A729239F4500A82429 /* a00075.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00075.html; sourceTree = ""; }; + B39825A829239F4500A82429 /* a00115_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00115_source.html; sourceTree = ""; }; + B39825A929239F4500A82429 /* a00077_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00077_source.html; sourceTree = ""; }; + B39825AA29239F4500A82429 /* a00167.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00167.html; sourceTree = ""; }; + B39825AB29239F4500A82429 /* dir_5189610d3ba09ec39b766fb99b34cd93.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_5189610d3ba09ec39b766fb99b34cd93.html; sourceTree = ""; }; + B39825AC29239F4500A82429 /* a00188.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00188.html; sourceTree = ""; }; + B39825AD29239F4500A82429 /* a00022.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00022.html; sourceTree = ""; }; + B39825AE29239F4500A82429 /* a00222_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00222_source.html; sourceTree = ""; }; + B39825AF29239F4500A82429 /* a00235.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00235.html; sourceTree = ""; }; + B39825B029239F4500A82429 /* a00370.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00370.html; sourceTree = ""; }; + B39825B129239F4500A82429 /* a00109_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00109_source.html; sourceTree = ""; }; + B39825B229239F4500A82429 /* a00096_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00096_source.html; sourceTree = ""; }; + B39825B329239F4500A82429 /* a00059.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00059.html; sourceTree = ""; }; + B39825B429239F4500A82429 /* a00262.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00262.html; sourceTree = ""; }; + B39825B529239F4500A82429 /* a00327.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00327.html; sourceTree = ""; }; + B39825B629239F4500A82429 /* a00184_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00184_source.html; sourceTree = ""; }; + B39825B729239F4500A82429 /* a00179_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00179_source.html; sourceTree = ""; }; + B39825B829239F4500A82429 /* a00274.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00274.html; sourceTree = ""; }; + B39825B929239F4500A82429 /* a00127_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00127_source.html; sourceTree = ""; }; + B39825BA29239F4500A82429 /* a00331.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00331.html; sourceTree = ""; }; + B39825BB29239F4500A82429 /* a00045_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00045_source.html; sourceTree = ""; }; + B39825BC29239F4500A82429 /* a00018.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00018.html; sourceTree = ""; }; + B39825BD29239F4500A82429 /* a00223.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00223.html; sourceTree = ""; }; + B39825BE29239F4500A82429 /* a00157_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00157_source.html; sourceTree = ""; }; + B39825BF29239F4500A82429 /* a00366.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00366.html; sourceTree = ""; }; + B39825C029239F4500A82429 /* a00035_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00035_source.html; sourceTree = ""; }; + B39825C129239F4500A82429 /* doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doc.png; sourceTree = ""; }; + B39825C229239F4500A82429 /* a00228.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00228.html; sourceTree = ""; }; + B39825C329239F4500A82429 /* a00046_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00046_source.html; sourceTree = ""; }; + B39825C429239F4500A82429 /* a00124_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00124_source.html; sourceTree = ""; }; + B39825C529239F4500A82429 /* a00044.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00044.html; sourceTree = ""; }; + B39825C629239F4500A82429 /* a00101.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00101.html; sourceTree = ""; }; + B39825C729239F4500A82429 /* a00036_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00036_source.html; sourceTree = ""; }; + B39825C829239F4500A82429 /* a00290.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00290.html; sourceTree = ""; }; + B39825C929239F4500A82429 /* a00154_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00154_source.html; sourceTree = ""; }; + B39825CA29239F4500A82429 /* arrowdown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrowdown.png; sourceTree = ""; }; + B39825CB29239F4500A82429 /* a00013.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00013.html; sourceTree = ""; }; + B39825CC29239F4500A82429 /* a00156.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00156.html; sourceTree = ""; }; + B39825CD29239F4500A82429 /* a00269.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00269.html; sourceTree = ""; }; + B39825CE29239F4500A82429 /* a00286.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00286.html; sourceTree = ""; }; + B39825CF29239F4500A82429 /* a00095_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00095_source.html; sourceTree = ""; }; + B39825D029239F4500A82429 /* a00068_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00068_source.html; sourceTree = ""; }; + B39825D129239F4500A82429 /* a00221_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00221_source.html; sourceTree = ""; }; + B39825D229239F4500A82429 /* a00140.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00140.html; sourceTree = ""; }; + B39825D329239F4500A82429 /* bc_s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bc_s.png; sourceTree = ""; }; + B39825D429239F4500A82429 /* nav_g.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nav_g.png; sourceTree = ""; }; + B39825D529239F4500A82429 /* dir_a8bee7be44182a33f3820393ae0b105d.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_a8bee7be44182a33f3820393ae0b105d.html; sourceTree = ""; }; + B39825D629239F4500A82429 /* a00018_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00018_source.html; sourceTree = ""; }; + B39825D729239F4500A82429 /* a00052.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00052.html; sourceTree = ""; }; + B39825D829239F4500A82429 /* a00187_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00187_source.html; sourceTree = ""; }; + B39825D929239F4500A82429 /* a00117.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00117.html; sourceTree = ""; }; + B39825DA29239F4500A82429 /* a00300.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00300.html; sourceTree = ""; }; + B39825DB29239F4500A82429 /* a00004_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00004_source.html; sourceTree = ""; }; + B39825DC29239F4500A82429 /* a00245.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00245.html; sourceTree = ""; }; + B39825DD29239F4500A82429 /* a00166_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00166_source.html; sourceTree = ""; }; + B39825DE29239F4500A82429 /* nav_f.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nav_f.png; sourceTree = ""; }; + B39825DF29239F4500A82429 /* a00029.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00029.html; sourceTree = ""; }; + B39825E029239F4500A82429 /* a00183.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00183.html; sourceTree = ""; }; + B39825E129239F4500A82429 /* tabs.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = tabs.css; sourceTree = ""; }; + B39825E229239F4500A82429 /* a00357.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00357.html; sourceTree = ""; }; + B39825E329239F4500A82429 /* a00074_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00074_source.html; sourceTree = ""; }; + B39825E429239F4500A82429 /* a00212.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00212.html; sourceTree = ""; }; + B39825E529239F4500A82429 /* a00116_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00116_source.html; sourceTree = ""; }; + B39825E629239F4500A82429 /* a00091.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00091.html; sourceTree = ""; }; + B39825E729239F4500A82429 /* a00089_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00089_source.html; sourceTree = ""; }; + B39825E829239F4500A82429 /* a00341.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00341.html; sourceTree = ""; }; + B39825E929239F4500A82429 /* a00148_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00148_source.html; sourceTree = ""; }; + B39825EA29239F4500A82429 /* a00204.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00204.html; sourceTree = ""; }; + B39825EB29239F4500A82429 /* a00087.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00087.html; sourceTree = ""; }; + B39825EC29239F4500A82429 /* a00068.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00068.html; sourceTree = ""; }; + B39825ED29239F4500A82429 /* a00316.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00316.html; sourceTree = ""; }; + B39825EE29239F4500A82429 /* a00138_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00138_source.html; sourceTree = ""; }; + B39825EF29239F4500A82429 /* a00253.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00253.html; sourceTree = ""; }; + B39825F029239F4500A82429 /* a00213_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00213_source.html; sourceTree = ""; }; + B39825F129239F4500A82429 /* a00195.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00195.html; sourceTree = ""; }; + B39825F229239F4500A82429 /* a00048.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00048.html; sourceTree = ""; }; + B39825F329239F4500A82429 /* closed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = closed.png; sourceTree = ""; }; + B39825F429239F4500A82429 /* a00224.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00224.html; sourceTree = ""; }; + B39825F529239F4500A82429 /* a00361.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00361.html; sourceTree = ""; }; + B39825F629239F4500A82429 /* a00273.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00273.html; sourceTree = ""; }; + B39825F729239F4500A82429 /* a00336.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00336.html; sourceTree = ""; }; + B39825F829239F4500A82429 /* a00206_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00206_source.html; sourceTree = ""; }; + B39825F929239F4500A82429 /* a00009.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00009.html; sourceTree = ""; }; + B39825FA29239F4500A82429 /* a00011_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00011_source.html; sourceTree = ""; }; + B39825FB29239F4500A82429 /* a00265.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00265.html; sourceTree = ""; }; + B39825FC29239F4500A82429 /* a00173_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00173_source.html; sourceTree = ""; }; + B39825FD29239F4500A82429 /* a00320.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00320.html; sourceTree = ""; }; + B39825FE29239F4500A82429 /* a00228_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00228_source.html; sourceTree = ""; }; + B39825FF29239F4500A82429 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = ""; }; + B398260029239F4500A82429 /* dir_cef2d71d502cb69a9252bca2297d9549.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_cef2d71d502cb69a9252bca2297d9549.html; sourceTree = ""; }; + B398260129239F4500A82429 /* a00061_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00061_source.html; sourceTree = ""; }; + B398260229239F4500A82429 /* a00232.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00232.html; sourceTree = ""; }; + B398260329239F4500A82429 /* a00103_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00103_source.html; sourceTree = ""; }; + B398260429239F4500A82429 /* a00160.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00160.html; sourceTree = ""; }; + B398260529239F4500A82429 /* a00080_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00080_source.html; sourceTree = ""; }; + B398260629239F4500A82429 /* a00025.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00025.html; sourceTree = ""; }; + B398260729239F4500A82429 /* a00249.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00249.html; sourceTree = ""; }; + B398260829239F4500A82429 /* a00234_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00234_source.html; sourceTree = ""; }; + B398260929239F4500A82429 /* a00137.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00137.html; sourceTree = ""; }; + B398260A29239F4500A82429 /* a00072.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00072.html; sourceTree = ""; }; + B398260B29239F4500A82429 /* a00192_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00192_source.html; sourceTree = ""; }; + B398260C29239F4500A82429 /* a00121.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00121.html; sourceTree = ""; }; + B398260D29239F4500A82429 /* a00064.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00064.html; sourceTree = ""; }; + B398260E29239F4500A82429 /* a00053_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00053_source.html; sourceTree = ""; }; + B398260F29239F4500A82429 /* tab_s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_s.png; sourceTree = ""; }; + B398261029239F4500A82429 /* a00131_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00131_source.html; sourceTree = ""; }; + B398261129239F4500A82429 /* a00208.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00208.html; sourceTree = ""; }; + B398261229239F4500A82429 /* a00176.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00176.html; sourceTree = ""; }; + B398261329239F4500A82429 /* a00033.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00033.html; sourceTree = ""; }; + B398261429239F4500A82429 /* a00023_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00023_source.html; sourceTree = ""; }; + B398261529239F4500A82429 /* a00199.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00199.html; sourceTree = ""; }; + B398261629239F4500A82429 /* a00141_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00141_source.html; sourceTree = ""; }; + B398261729239F4500A82429 /* a00099_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00099_source.html; sourceTree = ""; }; + B398261829239F4500A82429 /* a00106_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00106_source.html; sourceTree = ""; }; + B398261929239F4500A82429 /* a00177.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00177.html; sourceTree = ""; }; + B398261A29239F4500A82429 /* a00032.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00032.html; sourceTree = ""; }; + B398261B29239F4500A82429 /* a00064_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00064_source.html; sourceTree = ""; }; + B398261C29239F4500A82429 /* a00198.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00198.html; sourceTree = ""; }; + B398261D29239F4500A82429 /* a00176_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00176_source.html; sourceTree = ""; }; + B398261E29239F4500A82429 /* a00209.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00209.html; sourceTree = ""; }; + B398261F29239F4500A82429 /* a00120.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00120.html; sourceTree = ""; }; + B398262029239F4500A82429 /* a00065.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00065.html; sourceTree = ""; }; + B398262129239F4500A82429 /* a00014_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00014_source.html; sourceTree = ""; }; + B398262229239F4500A82429 /* a00203_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00203_source.html; sourceTree = ""; }; + B398262329239F4500A82429 /* a00136.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00136.html; sourceTree = ""; }; + B398262429239F4500A82429 /* a00073.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00073.html; sourceTree = ""; }; + B398262529239F4500A82429 /* a00128_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00128_source.html; sourceTree = ""; }; + B398262629239F4500A82429 /* a00248.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00248.html; sourceTree = ""; }; + B398262729239F4500A82429 /* a00161.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00161.html; sourceTree = ""; }; + B398262829239F4500A82429 /* a00024.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00024.html; sourceTree = ""; }; + B398262929239F4500A82429 /* a00158_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00158_source.html; sourceTree = ""; }; + B398262A29239F4500A82429 /* files.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files.html; sourceTree = ""; }; + B398262B29239F4500A82429 /* a00233.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00233.html; sourceTree = ""; }; + B398262C29239F4500A82429 /* a00144_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00144_source.html; sourceTree = ""; }; + B398262D29239F4500A82429 /* a00026_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00026_source.html; sourceTree = ""; }; + B398262E29239F4500A82429 /* a00264.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00264.html; sourceTree = ""; }; + B398262F29239F4500A82429 /* a00134_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00134_source.html; sourceTree = ""; }; + B398263029239F4500A82429 /* a00321.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00321.html; sourceTree = ""; }; + B398263129239F4500A82429 /* a00008.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00008.html; sourceTree = ""; }; + B398263229239F4500A82429 /* a00056_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00056_source.html; sourceTree = ""; }; + B398263329239F4500A82429 /* a00197_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00197_source.html; sourceTree = ""; }; + B398263429239F4500A82429 /* a00272.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00272.html; sourceTree = ""; }; + B398263529239F4500A82429 /* a00008_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00008_source.html; sourceTree = ""; }; + B398263629239F4500A82429 /* a00337.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00337.html; sourceTree = ""; }; + B398263729239F4500A82429 /* tab_a.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_a.png; sourceTree = ""; }; + B398263829239F4500A82429 /* a00225.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00225.html; sourceTree = ""; }; + B398263929239F4500A82429 /* a00078_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00078_source.html; sourceTree = ""; }; + B398263A29239F4500A82429 /* a00231_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00231_source.html; sourceTree = ""; }; + B398263B29239F4500A82429 /* a00360.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00360.html; sourceTree = ""; }; + B398263C29239F4500A82429 /* a00049.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00049.html; sourceTree = ""; }; + B398263D29239F4500A82429 /* a00085_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00085_source.html; sourceTree = ""; }; + B398263E29239F4500A82429 /* a00182_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00182_source.html; sourceTree = ""; }; + B398263F29239F4500A82429 /* a00194.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00194.html; sourceTree = ""; }; + B398264029239F4500A82429 /* a00317.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00317.html; sourceTree = ""; }; + B398264129239F4500A82429 /* a00252.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00252.html; sourceTree = ""; }; + B398264229239F4500A82429 /* a00086.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00086.html; sourceTree = ""; }; + B398264329239F4500A82429 /* a00224_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00224_source.html; sourceTree = ""; }; + B398264429239F4500A82429 /* a00069.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00069.html; sourceTree = ""; }; + B398264529239F4500A82429 /* a00340.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00340.html; sourceTree = ""; }; + B398264629239F4500A82429 /* a00205.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00205.html; sourceTree = ""; }; + B398264729239F4500A82429 /* a00090_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00090_source.html; sourceTree = ""; }; + B398264829239F4500A82429 /* a00151_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00151_source.html; sourceTree = ""; }; + B398264929239F4500A82429 /* a00090.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00090.html; sourceTree = ""; }; + B398264A29239F4500A82429 /* a00356.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00356.html; sourceTree = ""; }; + B398264B29239F4500A82429 /* a00033_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00033_source.html; sourceTree = ""; }; + B398264C29239F4500A82429 /* a00213.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00213.html; sourceTree = ""; }; + B398264D29239F4500A82429 /* a00121_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00121_source.html; sourceTree = ""; }; + B398264E29239F4500A82429 /* a00028.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00028.html; sourceTree = ""; }; + B398264F29239F4500A82429 /* a00182.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00182.html; sourceTree = ""; }; + B398265029239F4500A82429 /* a00301.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00301.html; sourceTree = ""; }; + B398265129239F4500A82429 /* a00244.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00244.html; sourceTree = ""; }; + B398265229239F4500A82429 /* a00043_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00043_source.html; sourceTree = ""; }; + B398265329239F4500A82429 /* a00053.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00053.html; sourceTree = ""; }; + B398265429239F4500A82429 /* a00116.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00116.html; sourceTree = ""; }; + B398265529239F4500A82429 /* a00216_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00216_source.html; sourceTree = ""; }; + B398265629239F4500A82429 /* dir_9e5fe034a00e89334fd5186c3e7db156.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_9e5fe034a00e89334fd5186c3e7db156.html; sourceTree = ""; }; + B398265729239F4500A82429 /* a00141.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00141.html; sourceTree = ""; }; + B398265829239F4500A82429 /* a00268.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00268.html; sourceTree = ""; }; + B398265929239F4500A82429 /* a00287.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00287.html; sourceTree = ""; }; + B398265A29239F4500A82429 /* a00113_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00113_source.html; sourceTree = ""; }; + B398265B29239F4500A82429 /* a00012.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00012.html; sourceTree = ""; }; + B398265C29239F4500A82429 /* a00157.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00157.html; sourceTree = ""; }; + B398265D29239F4500A82429 /* tab_b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_b.png; sourceTree = ""; }; + B398265E29239F4500A82429 /* a00071_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00071_source.html; sourceTree = ""; }; + B398265F29239F4500A82429 /* a00291.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00291.html; sourceTree = ""; }; + B398266029239F4500A82429 /* a00163_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00163_source.html; sourceTree = ""; }; + B398266129239F4500A82429 /* a00045.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00045.html; sourceTree = ""; }; + B398266229239F4500A82429 /* a00100.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00100.html; sourceTree = ""; }; + B398266329239F4500A82429 /* dir_d9496f0844b48bc7e53b5af8c99b9ab2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_d9496f0844b48bc7e53b5af8c99b9ab2.html; sourceTree = ""; }; + B398266429239F4500A82429 /* a00229.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00229.html; sourceTree = ""; }; + B398266529239F4500A82429 /* a00001_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00001_source.html; sourceTree = ""; }; + B398266629239F4500A82429 /* a00197.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00197.html; sourceTree = ""; }; + B398266729239F4500A82429 /* a00178.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00178.html; sourceTree = ""; }; + B398266829239F4500A82429 /* a00178_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00178_source.html; sourceTree = ""; }; + B398266929239F4500A82429 /* a00251.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00251.html; sourceTree = ""; }; + B398266A29239F4500A82429 /* a00185_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00185_source.html; sourceTree = ""; }; + B398266B29239F4500A82429 /* bdwn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bdwn.png; sourceTree = ""; }; + B398266C29239F4500A82429 /* a00314.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00314.html; sourceTree = ""; }; + B398266D29239F4500A82429 /* a00097_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00097_source.html; sourceTree = ""; }; + B398266E29239F4500A82429 /* a00108_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00108_source.html; sourceTree = ""; }; + B398266F29239F4500A82429 /* a00085.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00085.html; sourceTree = ""; }; + B398267029239F4500A82429 /* a00206.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00206.html; sourceTree = ""; }; + B398267229239F4500A82429 /* functions_3.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_3.js; sourceTree = ""; }; + B398267329239F4500A82429 /* searchdata.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = searchdata.js; sourceTree = ""; }; + B398267429239F4500A82429 /* functions_6.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_6.html; sourceTree = ""; }; + B398267529239F4500A82429 /* files_f.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_f.html; sourceTree = ""; }; + B398267629239F4500A82429 /* all_6.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_6.js; sourceTree = ""; }; + B398267729239F4500A82429 /* functions_11.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_11.js; sourceTree = ""; }; + B398267829239F4500A82429 /* all_4.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_4.html; sourceTree = ""; }; + B398267929239F4500A82429 /* files_9.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_9.js; sourceTree = ""; }; + B398267A29239F4500A82429 /* files_14.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_14.js; sourceTree = ""; }; + B398267B29239F4500A82429 /* functions_d.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_d.js; sourceTree = ""; }; + B398267C29239F4500A82429 /* groups_1.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_1.html; sourceTree = ""; }; + B398267D29239F4500A82429 /* all_a.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_a.js; sourceTree = ""; }; + B398267E29239F4500A82429 /* search_r.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = search_r.png; sourceTree = ""; }; + B398267F29239F4500A82429 /* functions_7.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_7.js; sourceTree = ""; }; + B398268029239F4500A82429 /* typedefs_9.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_9.js; sourceTree = ""; }; + B398268129239F4500A82429 /* functions_a.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_a.html; sourceTree = ""; }; + B398268229239F4500A82429 /* all_8.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_8.html; sourceTree = ""; }; + B398268329239F4500A82429 /* files_1.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_1.html; sourceTree = ""; }; + B398268429239F4500A82429 /* all_c.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_c.html; sourceTree = ""; }; + B398268529239F4500A82429 /* functions_15.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_15.js; sourceTree = ""; }; + B398268629239F4500A82429 /* all_2.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_2.js; sourceTree = ""; }; + B398268729239F4500A82429 /* typedefs_0.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_0.html; sourceTree = ""; }; + B398268829239F4500A82429 /* files_10.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_10.js; sourceTree = ""; }; + B398268929239F4500A82429 /* groups_8.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_8.js; sourceTree = ""; }; + B398268A29239F4500A82429 /* all_e.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_e.js; sourceTree = ""; }; + B398268B29239F4500A82429 /* functions_6.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_6.js; sourceTree = ""; }; + B398268C29239F4500A82429 /* typedefs_8.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_8.js; sourceTree = ""; }; + B398268D29239F4500A82429 /* functions_14.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_14.js; sourceTree = ""; }; + B398268E29239F4500A82429 /* all_3.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_3.js; sourceTree = ""; }; + B398268F29239F4500A82429 /* typedefs_1.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_1.html; sourceTree = ""; }; + B398269029239F4500A82429 /* functions_a.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_a.js; sourceTree = ""; }; + B398269129239F4500A82429 /* all_b.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_b.html; sourceTree = ""; }; + B398269229239F4500A82429 /* all_9.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_9.html; sourceTree = ""; }; + B398269329239F4500A82429 /* files_0.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_0.html; sourceTree = ""; }; + B398269429239F4500A82429 /* files_11.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_11.js; sourceTree = ""; }; + B398269529239F4500A82429 /* groups_9.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_9.js; sourceTree = ""; }; + B398269629239F4500A82429 /* all_d.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_d.js; sourceTree = ""; }; + B398269729239F4500A82429 /* functions_2.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_2.js; sourceTree = ""; }; + B398269829239F4500A82429 /* groups_0.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_0.html; sourceTree = ""; }; + B398269929239F4500A82429 /* all_16.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_16.html; sourceTree = ""; }; + B398269A29239F4500A82429 /* all_7.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_7.js; sourceTree = ""; }; + B398269B29239F4500A82429 /* functions_10.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_10.js; sourceTree = ""; }; + B398269C29239F4500A82429 /* files_8.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_8.js; sourceTree = ""; }; + B398269D29239F4500A82429 /* search.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = search.css; sourceTree = ""; }; + B398269E29239F4500A82429 /* all_5.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_5.html; sourceTree = ""; }; + B398269F29239F4500A82429 /* functions_e.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_e.js; sourceTree = ""; }; + B39826A029239F4500A82429 /* functions_7.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_7.html; sourceTree = ""; }; + B39826A129239F4500A82429 /* functions_16.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_16.html; sourceTree = ""; }; + B39826A229239F4500A82429 /* files_d.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_d.js; sourceTree = ""; }; + B39826A329239F4500A82429 /* files_7.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_7.html; sourceTree = ""; }; + B39826A429239F4500A82429 /* all_e.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_e.html; sourceTree = ""; }; + B39826A529239F4500A82429 /* typedefs_7.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_7.js; sourceTree = ""; }; + B39826A629239F4500A82429 /* functions_9.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_9.js; sourceTree = ""; }; + B39826A729239F4500A82429 /* typedefs_6.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_6.html; sourceTree = ""; }; + B39826A829239F4500A82429 /* groups_6.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_6.js; sourceTree = ""; }; + B39826A929239F4500A82429 /* files_3.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_3.js; sourceTree = ""; }; + B39826AA29239F4500A82429 /* functions_11.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_11.html; sourceTree = ""; }; + B39826AB29239F4500A82429 /* files_11.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_11.html; sourceTree = ""; }; + B39826AC29239F4500A82429 /* functions_0.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_0.html; sourceTree = ""; }; + B39826AD29239F4500A82429 /* all_8.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_8.js; sourceTree = ""; }; + B39826AE29239F4500A82429 /* typedefs_3.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_3.js; sourceTree = ""; }; + B39826AF29239F4500A82429 /* all_13.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_13.js; sourceTree = ""; }; + B39826B029239F4500A82429 /* all_2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_2.html; sourceTree = ""; }; + B39826B129239F4500A82429 /* typedefs_a.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_a.html; sourceTree = ""; }; + B39826B229239F4500A82429 /* groups_2.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_2.js; sourceTree = ""; }; + B39826B329239F4500A82429 /* groups_7.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_7.html; sourceTree = ""; }; + B39826B429239F4500A82429 /* all_11.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_11.html; sourceTree = ""; }; + B39826B529239F4500A82429 /* typedefs_d.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_d.js; sourceTree = ""; }; + B39826B629239F4500A82429 /* files_7.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_7.js; sourceTree = ""; }; + B39826B729239F4500A82429 /* groups_6.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_6.html; sourceTree = ""; }; + B39826B829239F4500A82429 /* all_9.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_9.js; sourceTree = ""; }; + B39826B929239F4500A82429 /* all_10.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_10.html; sourceTree = ""; }; + B39826BA29239F4500A82429 /* typedefs_2.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_2.js; sourceTree = ""; }; + B39826BB29239F4500A82429 /* all_12.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_12.js; sourceTree = ""; }; + B39826BC29239F4500A82429 /* files_a.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_a.js; sourceTree = ""; }; + B39826BD29239F4500A82429 /* groups_3.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_3.js; sourceTree = ""; }; + B39826BE29239F4500A82429 /* all_3.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_3.html; sourceTree = ""; }; + B39826BF29239F4500A82429 /* files_a.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_a.html; sourceTree = ""; }; + B39826C029239F4500A82429 /* functions_1.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_1.html; sourceTree = ""; }; + B39826C129239F4500A82429 /* files_10.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_10.html; sourceTree = ""; }; + B39826C229239F4500A82429 /* functions_10.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_10.html; sourceTree = ""; }; + B39826C329239F4500A82429 /* files_6.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_6.js; sourceTree = ""; }; + B39826C429239F4500A82429 /* files_e.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_e.js; sourceTree = ""; }; + B39826C529239F4500A82429 /* all_16.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_16.js; sourceTree = ""; }; + B39826C629239F4500A82429 /* typedefs_6.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_6.js; sourceTree = ""; }; + B39826C729239F4500A82429 /* typedefs_7.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_7.html; sourceTree = ""; }; + B39826C829239F4500A82429 /* functions_8.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_8.js; sourceTree = ""; }; + B39826C929239F4500A82429 /* all_d.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_d.html; sourceTree = ""; }; + B39826CA29239F4500A82429 /* groups_7.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_7.js; sourceTree = ""; }; + B39826CB29239F4500A82429 /* files_6.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_6.html; sourceTree = ""; }; + B39826CC29239F4500A82429 /* functions_f.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_f.html; sourceTree = ""; }; + B39826CD29239F4500A82429 /* files_2.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_2.js; sourceTree = ""; }; + B39826CE29239F4500A82429 /* typedefs_a.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_a.js; sourceTree = ""; }; + B39826CF29239F4500A82429 /* groups_9.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_9.html; sourceTree = ""; }; + B39826D029239F4500A82429 /* all_11.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_11.js; sourceTree = ""; }; + B39826D129239F4500A82429 /* typedefs_1.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_1.js; sourceTree = ""; }; + B39826D229239F4500A82429 /* files_b.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_b.js; sourceTree = ""; }; + B39826D329239F4500A82429 /* typedefs_4.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_4.html; sourceTree = ""; }; + B39826D429239F4500A82429 /* groups_0.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_0.js; sourceTree = ""; }; + B39826D529239F4500A82429 /* files_5.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_5.html; sourceTree = ""; }; + B39826D629239F4500A82429 /* functions_e.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_e.html; sourceTree = ""; }; + B39826D729239F4500A82429 /* files_5.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_5.js; sourceTree = ""; }; + B39826D829239F4500A82429 /* all_13.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_13.html; sourceTree = ""; }; + B39826D929239F4500A82429 /* groups_5.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_5.html; sourceTree = ""; }; + B39826DA29239F4500A82429 /* files_f.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_f.js; sourceTree = ""; }; + B39826DB29239F4500A82429 /* typedefs_8.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_8.html; sourceTree = ""; }; + B39826DC29239F4500A82429 /* typedefs_c.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_c.html; sourceTree = ""; }; + B39826DD29239F4500A82429 /* typedefs_5.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_5.js; sourceTree = ""; }; + B39826DE29239F4500A82429 /* all_15.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_15.js; sourceTree = ""; }; + B39826DF29239F4500A82429 /* files_9.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_9.html; sourceTree = ""; }; + B39826E029239F4500A82429 /* all_0.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_0.html; sourceTree = ""; }; + B39826E129239F4500A82429 /* groups_4.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_4.js; sourceTree = ""; }; + B39826E229239F4500A82429 /* files_b.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_b.html; sourceTree = ""; }; + B39826E329239F4500A82429 /* files_1.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_1.js; sourceTree = ""; }; + B39826E429239F4500A82429 /* functions_2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_2.html; sourceTree = ""; }; + B39826E529239F4500A82429 /* files_13.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_13.html; sourceTree = ""; }; + B39826E629239F4500A82429 /* typedefs_b.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_b.js; sourceTree = ""; }; + B39826E729239F4500A82429 /* functions_13.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_13.html; sourceTree = ""; }; + B39826E829239F4500A82429 /* functions_12.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_12.html; sourceTree = ""; }; + B39826E929239F4500A82429 /* files_12.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_12.html; sourceTree = ""; }; + B39826EA29239F4500A82429 /* functions_3.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_3.html; sourceTree = ""; }; + B39826EB29239F4500A82429 /* files_c.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_c.html; sourceTree = ""; }; + B39826EC29239F4500A82429 /* files_8.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_8.html; sourceTree = ""; }; + B39826ED29239F4500A82429 /* all_1.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_1.html; sourceTree = ""; }; + B39826EE29239F4500A82429 /* typedefs_4.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_4.js; sourceTree = ""; }; + B39826EF29239F4500A82429 /* all_14.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_14.js; sourceTree = ""; }; + B39826F029239F4500A82429 /* typedefs_b.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_b.html; sourceTree = ""; }; + B39826F129239F4500A82429 /* typedefs_9.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_9.html; sourceTree = ""; }; + B39826F229239F4500A82429 /* groups_5.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_5.js; sourceTree = ""; }; + B39826F329239F4500A82429 /* all_12.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_12.html; sourceTree = ""; }; + B39826F429239F4500A82429 /* files_0.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_0.js; sourceTree = ""; }; + B39826F529239F4500A82429 /* groups_4.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_4.html; sourceTree = ""; }; + B39826F629239F4500A82429 /* typedefs_c.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_c.js; sourceTree = ""; }; + B39826F729239F4500A82429 /* functions_d.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_d.html; sourceTree = ""; }; + B39826F829239F4500A82429 /* files_4.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_4.html; sourceTree = ""; }; + B39826F929239F4500A82429 /* all_10.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_10.js; sourceTree = ""; }; + B39826FA29239F4500A82429 /* all_f.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_f.html; sourceTree = ""; }; + B39826FB29239F4500A82429 /* typedefs_0.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = typedefs_0.js; sourceTree = ""; }; + B39826FC29239F4500A82429 /* files_c.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_c.js; sourceTree = ""; }; + B39826FD29239F4500A82429 /* groups_1.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = groups_1.js; sourceTree = ""; }; + B39826FE29239F4500A82429 /* typedefs_5.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_5.html; sourceTree = ""; }; + B39826FF29239F4500A82429 /* groups_8.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_8.html; sourceTree = ""; }; + B398270029239F4500A82429 /* files_4.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_4.js; sourceTree = ""; }; + B398270129239F4500A82429 /* functions_5.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_5.js; sourceTree = ""; }; + B398270229239F4500A82429 /* all_15.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_15.html; sourceTree = ""; }; + B398270329239F4500A82429 /* groups_3.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_3.html; sourceTree = ""; }; + B398270429239F4500A82429 /* all_0.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_0.js; sourceTree = ""; }; + B398270529239F4500A82429 /* functions_b.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_b.js; sourceTree = ""; }; + B398270629239F4500A82429 /* files_12.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_12.js; sourceTree = ""; }; + B398270729239F4500A82429 /* all_6.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_6.html; sourceTree = ""; }; + B398270829239F4500A82429 /* files_d.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_d.html; sourceTree = ""; }; + B398270929239F4500A82429 /* functions_4.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_4.html; sourceTree = ""; }; + B398270A29239F4500A82429 /* functions_15.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_15.html; sourceTree = ""; }; + B398270B29239F4500A82429 /* search_l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = search_l.png; sourceTree = ""; }; + B398270C29239F4500A82429 /* functions_1.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_1.js; sourceTree = ""; }; + B398270D29239F4500A82429 /* pages_0.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = pages_0.js; sourceTree = ""; }; + B398270E29239F4500A82429 /* functions_13.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_13.js; sourceTree = ""; }; + B398270F29239F4500A82429 /* all_4.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_4.js; sourceTree = ""; }; + B398271029239F4500A82429 /* typedefs_2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_2.html; sourceTree = ""; }; + B398271129239F4500A82429 /* all_a.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_a.html; sourceTree = ""; }; + B398271229239F4500A82429 /* functions_f.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_f.js; sourceTree = ""; }; + B398271329239F4500A82429 /* files_3.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_3.html; sourceTree = ""; }; + B398271429239F4600A82429 /* functions_c.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_c.html; sourceTree = ""; }; + B398271529239F4600A82429 /* all_c.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_c.js; sourceTree = ""; }; + B398271629239F4600A82429 /* functions_8.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_8.html; sourceTree = ""; }; + B398271729239F4600A82429 /* search_m.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = search_m.png; sourceTree = ""; }; + B398271829239F4600A82429 /* search.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = search.js; sourceTree = ""; }; + B398271929239F4600A82429 /* functions_9.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_9.html; sourceTree = ""; }; + B398271A29239F4600A82429 /* functions_0.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_0.js; sourceTree = ""; }; + B398271B29239F4600A82429 /* functions_b.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_b.html; sourceTree = ""; }; + B398271C29239F4600A82429 /* files_2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_2.html; sourceTree = ""; }; + B398271D29239F4600A82429 /* functions_12.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_12.js; sourceTree = ""; }; + B398271E29239F4600A82429 /* all_5.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_5.js; sourceTree = ""; }; + B398271F29239F4600A82429 /* pages_0.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = pages_0.html; sourceTree = ""; }; + B398272029239F4600A82429 /* typedefs_3.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_3.html; sourceTree = ""; }; + B398272129239F4600A82429 /* mag_sel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mag_sel.png; sourceTree = ""; }; + B398272229239F4600A82429 /* all_b.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_b.js; sourceTree = ""; }; + B398272329239F4600A82429 /* nomatches.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = nomatches.html; sourceTree = ""; }; + B398272429239F4600A82429 /* functions_4.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_4.js; sourceTree = ""; }; + B398272529239F4600A82429 /* functions_14.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_14.html; sourceTree = ""; }; + B398272629239F4600A82429 /* files_14.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_14.html; sourceTree = ""; }; + B398272729239F4600A82429 /* functions_5.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = functions_5.html; sourceTree = ""; }; + B398272829239F4600A82429 /* files_e.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = files_e.html; sourceTree = ""; }; + B398272929239F4600A82429 /* all_7.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_7.html; sourceTree = ""; }; + B398272A29239F4600A82429 /* all_1.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_1.js; sourceTree = ""; }; + B398272B29239F4600A82429 /* functions_16.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_16.js; sourceTree = ""; }; + B398272C29239F4600A82429 /* typedefs_d.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = typedefs_d.html; sourceTree = ""; }; + B398272D29239F4600A82429 /* functions_c.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = functions_c.js; sourceTree = ""; }; + B398272E29239F4600A82429 /* files_13.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = files_13.js; sourceTree = ""; }; + B398272F29239F4600A82429 /* all_14.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = all_14.html; sourceTree = ""; }; + B398273029239F4600A82429 /* groups_2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = groups_2.html; sourceTree = ""; }; + B398273129239F4600A82429 /* close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = close.png; sourceTree = ""; }; + B398273229239F4600A82429 /* all_f.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = all_f.js; sourceTree = ""; }; + B398273329239F4600A82429 /* a00343.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00343.html; sourceTree = ""; }; + B398273429239F4600A82429 /* a00223_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00223_source.html; sourceTree = ""; }; + B398273529239F4600A82429 /* a00093.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00093.html; sourceTree = ""; }; + B398273629239F4600A82429 /* a00139.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00139.html; sourceTree = ""; }; + B398273729239F4600A82429 /* a00034_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00034_source.html; sourceTree = ""; }; + B398273829239F4600A82429 /* a00210.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00210.html; sourceTree = ""; }; + B398273929239F4600A82429 /* a00156_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00156_source.html; sourceTree = ""; }; + B398273A29239F4600A82429 /* a00355.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00355.html; sourceTree = ""; }; + B398273B29239F4600A82429 /* a00181.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00181.html; sourceTree = ""; }; + B398273C29239F4600A82429 /* a00044_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00044_source.html; sourceTree = ""; }; + B398273D29239F4600A82429 /* a00126_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00126_source.html; sourceTree = ""; }; + B398273E29239F4600A82429 /* a00247.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00247.html; sourceTree = ""; }; + B398273F29239F4600A82429 /* a00302.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00302.html; sourceTree = ""; }; + B398274029239F4600A82429 /* a00115.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00115.html; sourceTree = ""; }; + B398274129239F4600A82429 /* a00050.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00050.html; sourceTree = ""; }; + B398274229239F4600A82429 /* a00058_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00058_source.html; sourceTree = ""; }; + B398274329239F4600A82429 /* a00211_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00211_source.html; sourceTree = ""; }; + B398274429239F4600A82429 /* a00142.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00142.html; sourceTree = ""; }; + B398274529239F4600A82429 /* a00007.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00007.html; sourceTree = ""; }; + B398274629239F4600A82429 /* a00028_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00028_source.html; sourceTree = ""; }; + B398274729239F4600A82429 /* a00284.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00284.html; sourceTree = ""; }; + B398274829239F4600A82429 /* a00154.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00154.html; sourceTree = ""; }; + B398274929239F4600A82429 /* a00011.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00011.html; sourceTree = ""; }; + B398274A29239F4600A82429 /* a00076_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00076_source.html; sourceTree = ""; }; + B398274B29239F4600A82429 /* a00292.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00292.html; sourceTree = ""; }; + B398274C29239F4600A82429 /* a00338.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00338.html; sourceTree = ""; }; + B398274D29239F4600A82429 /* a00114_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00114_source.html; sourceTree = ""; }; + B398274E29239F4600A82429 /* a00103.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00103.html; sourceTree = ""; }; + B398274F29239F4600A82429 /* a00199_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00199_source.html; sourceTree = ""; }; + B398275029239F4600A82429 /* a00046.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00046.html; sourceTree = ""; }; + B398275129239F4600A82429 /* a00006_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00006_source.html; sourceTree = ""; }; + B398275229239F4600A82429 /* dir_f35778ec600a1b9bbc4524e62e226aa2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_f35778ec600a1b9bbc4524e62e226aa2.html; sourceTree = ""; }; + B398275329239F4600A82429 /* a00164_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00164_source.html; sourceTree = ""; }; + B398275429239F4600A82429 /* a00063_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00063_source.html; sourceTree = ""; }; + B398275529239F4600A82429 /* a00318.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00318.html; sourceTree = ""; }; + B398275629239F4600A82429 /* a00031.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00031.html; sourceTree = ""; }; + B398275729239F4600A82429 /* a00101_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00101_source.html; sourceTree = ""; }; + B398275829239F4600A82429 /* a00174.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00174.html; sourceTree = ""; }; + B398275929239F4600A82429 /* a00013_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00013_source.html; sourceTree = ""; }; + B398275A29239F4600A82429 /* a00171_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00171_source.html; sourceTree = ""; }; + B398275B29239F4600A82429 /* a00066.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00066.html; sourceTree = ""; }; + B398275C29239F4600A82429 /* a00089.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00089.html; sourceTree = ""; }; + B398275D29239F4600A82429 /* a00123.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00123.html; sourceTree = ""; }; + B398275E29239F4600A82429 /* a00359.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00359.html; sourceTree = ""; }; + B398275F29239F4600A82429 /* a00070.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00070.html; sourceTree = ""; }; + B398276029239F4600A82429 /* a00204_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00204_source.html; sourceTree = ""; }; + B398276129239F4600A82429 /* a00135.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00135.html; sourceTree = ""; }; + B398276229239F4600A82429 /* dir_44e5e654415abd9ca6fdeaddaff8565e.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_44e5e654415abd9ca6fdeaddaff8565e.html; sourceTree = ""; }; + B398276329239F4600A82429 /* a00027.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00027.html; sourceTree = ""; }; + B398276429239F4600A82429 /* a00162.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00162.html; sourceTree = ""; }; + B398276529239F4600A82429 /* a00230.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00230.html; sourceTree = ""; }; + B398276629239F4600A82429 /* a00021_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00021_source.html; sourceTree = ""; }; + B398276729239F4600A82429 /* a00119.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00119.html; sourceTree = ""; }; + B398276829239F4600A82429 /* a00143_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00143_source.html; sourceTree = ""; }; + B398276929239F4600A82429 /* a00218_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00218_source.html; sourceTree = ""; }; + B398276A29239F4600A82429 /* a00288.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00288.html; sourceTree = ""; }; + B398276B29239F4600A82429 /* a00322.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00322.html; sourceTree = ""; }; + B398276C29239F4600A82429 /* a00051_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00051_source.html; sourceTree = ""; }; + B398276D29239F4600A82429 /* a00267.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00267.html; sourceTree = ""; }; + B398276E29239F4600A82429 /* a00133_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00133_source.html; sourceTree = ""; }; + B398276F29239F4600A82429 /* a00334.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00334.html; sourceTree = ""; }; + B398277029239F4600A82429 /* a00271.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00271.html; sourceTree = ""; }; + B398277129239F4600A82429 /* a00158.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00158.html; sourceTree = ""; }; + B398277229239F4600A82429 /* a00190_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00190_source.html; sourceTree = ""; }; + B398277329239F4600A82429 /* a00363.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00363.html; sourceTree = ""; }; + B398277429239F4600A82429 /* a00082_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00082_source.html; sourceTree = ""; }; + B398277529239F4600A82429 /* a00226.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00226.html; sourceTree = ""; }; + B398277629239F4600A82429 /* logo-mini.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo-mini.png"; sourceTree = ""; }; + B398277729239F4600A82429 /* a00038_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00038_source.html; sourceTree = ""; }; + B398277829239F4600A82429 /* a00362.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00362.html; sourceTree = ""; }; + B398277929239F4600A82429 /* a00227.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00227.html; sourceTree = ""; }; + B398277A29239F4600A82429 /* a00159.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00159.html; sourceTree = ""; }; + B398277B29239F4600A82429 /* a00048_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00048_source.html; sourceTree = ""; }; + B398277C29239F4600A82429 /* a00201_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00201_source.html; sourceTree = ""; }; + B398277D29239F4600A82429 /* a00335.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00335.html; sourceTree = ""; }; + B398277E29239F4600A82429 /* a00270.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00270.html; sourceTree = ""; }; + B398277F29239F4600A82429 /* a00174_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00174_source.html; sourceTree = ""; }; + B398278029239F4600A82429 /* a00289.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00289.html; sourceTree = ""; }; + B398278129239F4600A82429 /* a00323.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00323.html; sourceTree = ""; }; + B398278229239F4600A82429 /* a00016_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00016_source.html; sourceTree = ""; }; + B398278329239F4600A82429 /* a00189_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00189_source.html; sourceTree = ""; }; + B398278429239F4600A82429 /* a00266.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00266.html; sourceTree = ""; }; + B398278529239F4600A82429 /* a00104_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00104_source.html; sourceTree = ""; }; + B398278629239F4600A82429 /* a00118.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00118.html; sourceTree = ""; }; + B398278729239F4600A82429 /* nav_h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nav_h.png; sourceTree = ""; }; + B398278829239F4600A82429 /* a00374.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00374.html; sourceTree = ""; }; + B398278929239F4600A82429 /* a00231.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00231.html; sourceTree = ""; }; + B398278A29239F4600A82429 /* a00066_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00066_source.html; sourceTree = ""; }; + B398278B29239F4600A82429 /* dir_4c6bd29c73fa4e5a2509e1c15f846751.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_4c6bd29c73fa4e5a2509e1c15f846751.html; sourceTree = ""; }; + B398278C29239F4600A82429 /* a00026.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00026.html; sourceTree = ""; }; + B398278D29239F4600A82429 /* a00233_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00233_source.html; sourceTree = ""; }; + B398278E29239F4600A82429 /* a00118_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00118_source.html; sourceTree = ""; }; + B398278F29239F4600A82429 /* a00087_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00087_source.html; sourceTree = ""; }; + B398279029239F4600A82429 /* a00071.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00071.html; sourceTree = ""; }; + B398279129239F4600A82429 /* a00195_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00195_source.html; sourceTree = ""; }; + B398279229239F4600A82429 /* a00134.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00134.html; sourceTree = ""; }; + B398279329239F4600A82429 /* dir_033f5edb0915b828d2c46ed4804e5503.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_033f5edb0915b828d2c46ed4804e5503.html; sourceTree = ""; }; + B398279429239F4600A82429 /* a00168_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00168_source.html; sourceTree = ""; }; + B398279529239F4600A82429 /* a00358.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00358.html; sourceTree = ""; }; + B398279629239F4600A82429 /* a00136_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00136_source.html; sourceTree = ""; }; + B398279729239F4600A82429 /* a00067.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00067.html; sourceTree = ""; }; + B398279829239F4600A82429 /* a00088.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00088.html; sourceTree = ""; }; + B398279929239F4600A82429 /* a00122.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00122.html; sourceTree = ""; }; + B398279A29239F4600A82429 /* a00054_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00054_source.html; sourceTree = ""; }; + B398279B29239F4600A82429 /* tab_h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab_h.png; sourceTree = ""; }; + B398279C29239F4600A82429 /* a00146_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00146_source.html; sourceTree = ""; }; + B398279D29239F4600A82429 /* a00030.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00030.html; sourceTree = ""; }; + B398279E29239F4600A82429 /* a00175.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00175.html; sourceTree = ""; }; + B398279F29239F4600A82429 /* a00319.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00319.html; sourceTree = ""; }; + B39827A029239F4600A82429 /* a00024_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00024_source.html; sourceTree = ""; }; + B39827A129239F4600A82429 /* a00123_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00123_source.html; sourceTree = ""; }; + B39827A229239F4600A82429 /* a00102.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00102.html; sourceTree = ""; }; + B39827A329239F4600A82429 /* a00208_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00208_source.html; sourceTree = ""; }; + B39827A429239F4600A82429 /* a00041_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00041_source.html; sourceTree = ""; }; + B39827A529239F4600A82429 /* a00293.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00293.html; sourceTree = ""; }; + B39827A629239F4600A82429 /* a00339.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00339.html; sourceTree = ""; }; + B39827A729239F4600A82429 /* a00153_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00153_source.html; sourceTree = ""; }; + B39827A829239F4600A82429 /* a00155.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00155.html; sourceTree = ""; }; + B39827A929239F4600A82429 /* a00010.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00010.html; sourceTree = ""; }; + B39827AA29239F4600A82429 /* a00031_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00031_source.html; sourceTree = ""; }; + B39827AB29239F4600A82429 /* a00285.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00285.html; sourceTree = ""; }; + B39827AC29239F4600A82429 /* a00226_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00226_source.html; sourceTree = ""; }; + B39827AD29239F4600A82429 /* a00143.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00143.html; sourceTree = ""; }; + B39827AE29239F4600A82429 /* a00092_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00092_source.html; sourceTree = ""; }; + B39827AF29239F4600A82429 /* a00180_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00180_source.html; sourceTree = ""; }; + B39827B029239F4600A82429 /* a00114.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00114.html; sourceTree = ""; }; + B39827B129239F4600A82429 /* a00051.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00051.html; sourceTree = ""; }; + B39827B229239F4600A82429 /* a00161_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00161_source.html; sourceTree = ""; }; + B39827B329239F4600A82429 /* a00246.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00246.html; sourceTree = ""; }; + B39827B429239F4600A82429 /* a00303.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00303.html; sourceTree = ""; }; + B39827B529239F4600A82429 /* a00180.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00180.html; sourceTree = ""; }; + B39827B629239F4600A82429 /* a00003_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00003_source.html; sourceTree = ""; }; + B39827B729239F4600A82429 /* a00211.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00211.html; sourceTree = ""; }; + B39827B829239F4600A82429 /* a00111_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00111_source.html; sourceTree = ""; }; + B39827B929239F4600A82429 /* a00354.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00354.html; sourceTree = ""; }; + B39827BA29239F4600A82429 /* a00092.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00092.html; sourceTree = ""; }; + B39827BB29239F4600A82429 /* a00138.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00138.html; sourceTree = ""; }; + B39827BC29239F4600A82429 /* a00073_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00073_source.html; sourceTree = ""; }; + B39827BD29239F4600A82429 /* a00207.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00207.html; sourceTree = ""; }; + B39827BE29239F4600A82429 /* a00342.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00342.html; sourceTree = ""; }; + B39827BF29239F4600A82429 /* a00084.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00084.html; sourceTree = ""; }; + B39827C029239F4600A82429 /* a00250.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00250.html; sourceTree = ""; }; + B39827C129239F4600A82429 /* a00214_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00214_source.html; sourceTree = ""; }; + B39827C229239F4600A82429 /* a00315.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00315.html; sourceTree = ""; }; + B39827C329239F4600A82429 /* a00196.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00196.html; sourceTree = ""; }; + B39827C429239F4600A82429 /* a00179.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00179.html; sourceTree = ""; }; + B39827C529239F4600A82429 /* a00037.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00037.html; sourceTree = ""; }; + B39827C629239F4600A82429 /* a00172.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00172.html; sourceTree = ""; }; + B39827C729239F4600A82429 /* a00349.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00349.html; sourceTree = ""; }; + B39827C829239F4600A82429 /* a00060.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00060.html; sourceTree = ""; }; + B39827C929239F4600A82429 /* a00217_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00217_source.html; sourceTree = ""; }; + B39827CA29239F4600A82429 /* a00125.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00125.html; sourceTree = ""; }; + B39827CB29239F4600A82429 /* a00076.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00076.html; sourceTree = ""; }; + B39827CC29239F4600A82429 /* a00133.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00133.html; sourceTree = ""; }; + B39827CD29239F4600A82429 /* a00099.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00099.html; sourceTree = ""; }; + B39827CE29239F4600A82429 /* a00162_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00162_source.html; sourceTree = ""; }; + B39827CF29239F4600A82429 /* a00070_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00070_source.html; sourceTree = ""; }; + B39827D029239F4600A82429 /* a00308.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00308.html; sourceTree = ""; }; + B39827D129239F4600A82429 /* a00021.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00021.html; sourceTree = ""; }; + B39827D229239F4600A82429 /* a00112_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00112_source.html; sourceTree = ""; }; + B39827D329239F4600A82429 /* a00373.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00373.html; sourceTree = ""; }; + B39827D429239F4600A82429 /* a00091_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00091_source.html; sourceTree = ""; }; + B39827D529239F4600A82429 /* a00225_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00225_source.html; sourceTree = ""; }; + B39827D629239F4600A82429 /* a00324.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00324.html; sourceTree = ""; }; + B39827D729239F4600A82429 /* a00261.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00261.html; sourceTree = ""; }; + B39827D829239F4600A82429 /* a00148.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00148.html; sourceTree = ""; }; + B39827D929239F4600A82429 /* a00183_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00183_source.html; sourceTree = ""; }; + B39827DA29239F4600A82429 /* open.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = open.png; sourceTree = ""; }; + B39827DB29239F4600A82429 /* a00332.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00332.html; sourceTree = ""; }; + B39827DC29239F4600A82429 /* a00298.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00298.html; sourceTree = ""; }; + B39827DD29239F4600A82429 /* a00042_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00042_source.html; sourceTree = ""; }; + B39827DE29239F4600A82429 /* a00277.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00277.html; sourceTree = ""; }; + B39827DF29239F4600A82429 /* a00120_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00120_source.html; sourceTree = ""; }; + B39827E029239F4600A82429 /* a00032_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00032_source.html; sourceTree = ""; }; + B39827E129239F4600A82429 /* a00365.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00365.html; sourceTree = ""; }; + B39827E229239F4600A82429 /* a00220.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00220.html; sourceTree = ""; }; + B39827E329239F4600A82429 /* a00109.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00109.html; sourceTree = ""; }; + B39827E429239F4600A82429 /* a00150_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00150_source.html; sourceTree = ""; }; + B39827E529239F4600A82429 /* a00191.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00191.html; sourceTree = ""; }; + B39827E629239F4600A82429 /* a00057_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00057_source.html; sourceTree = ""; }; + B39827E729239F4600A82429 /* a00257.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00257.html; sourceTree = ""; }; + B39827E829239F4600A82429 /* a00312.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00312.html; sourceTree = ""; }; + B39827E929239F4600A82429 /* a00135_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00135_source.html; sourceTree = ""; }; + B39827EA29239F4600A82429 /* a00027_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00027_source.html; sourceTree = ""; }; + B39827EB29239F4600A82429 /* a00129.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00129.html; sourceTree = ""; }; + B39827EC29239F4600A82429 /* a00083.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00083.html; sourceTree = ""; }; + B39827ED29239F4600A82429 /* a00200.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00200.html; sourceTree = ""; }; + B39827EE29239F4600A82429 /* a00145_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00145_source.html; sourceTree = ""; }; + B39827EF29239F4600A82429 /* a00345.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00345.html; sourceTree = ""; }; + B39827F029239F4600A82429 /* a00084_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00084_source.html; sourceTree = ""; }; + B39827F129239F4600A82429 /* a00230_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00230_source.html; sourceTree = ""; }; + B39827F229239F4600A82429 /* a00216.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00216.html; sourceTree = ""; }; + B39827F329239F4600A82429 /* a00353.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00353.html; sourceTree = ""; }; + B39827F429239F4600A82429 /* a00079_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00079_source.html; sourceTree = ""; }; + B39827F529239F4600A82429 /* a00187.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00187.html; sourceTree = ""; }; + B39827F629239F4600A82429 /* a00168.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00168.html; sourceTree = ""; }; + B39827F729239F4600A82429 /* a00241.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00241.html; sourceTree = ""; }; + B39827F829239F4600A82429 /* a00009_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00009_source.html; sourceTree = ""; }; + B39827F929239F4600A82429 /* a00196_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00196_source.html; sourceTree = ""; }; + B39827FA29239F4600A82429 /* a00304.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00304.html; sourceTree = ""; }; + B39827FB29239F4600A82429 /* a00113.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00113.html; sourceTree = ""; }; + B39827FC29239F4600A82429 /* a00015_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00015_source.html; sourceTree = ""; }; + B39827FD29239F4600A82429 /* a00056.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00056.html; sourceTree = ""; }; + B39827FE29239F4600A82429 /* a00177_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00177_source.html; sourceTree = ""; }; + B39827FF29239F4600A82429 /* a00065_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00065_source.html; sourceTree = ""; }; + B398280029239F4600A82429 /* a00144.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00144.html; sourceTree = ""; }; + B398280129239F4600A82429 /* a00328.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00328.html; sourceTree = ""; }; + B398280229239F4600A82429 /* a00282.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00282.html; sourceTree = ""; }; + B398280329239F4600A82429 /* a00107_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00107_source.html; sourceTree = ""; }; + B398280429239F4600A82429 /* a00098_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00098_source.html; sourceTree = ""; }; + B398280529239F4600A82429 /* a00152.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00152.html; sourceTree = ""; }; + B398280629239F4600A82429 /* a00159_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00159_source.html; sourceTree = ""; }; + B398280729239F4600A82429 /* a00017.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00017.html; sourceTree = ""; }; + B398280829239F4600A82429 /* a00294.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00294.html; sourceTree = ""; }; + B398280929239F4600A82429 /* a00129_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00129_source.html; sourceTree = ""; }; + B398280A29239F4600A82429 /* a00105.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00105.html; sourceTree = ""; }; + B398280B29239F4600A82429 /* a00040.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00040.html; sourceTree = ""; }; + B398280C29239F4600A82429 /* a00369.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00369.html; sourceTree = ""; }; + B398280D29239F4600A82429 /* a00202_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00202_source.html; sourceTree = ""; }; + B398280E29239F4600A82429 /* a00368.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00368.html; sourceTree = ""; }; + B398280F29239F4600A82429 /* folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folderclosed.png; sourceTree = ""; }; + B398281029239F4600A82429 /* a00193_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00193_source.html; sourceTree = ""; }; + B398281129239F4600A82429 /* a00104.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00104.html; sourceTree = ""; }; + B398281229239F4600A82429 /* a00041.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00041.html; sourceTree = ""; }; + B398281329239F4600A82429 /* a00235_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00235_source.html; sourceTree = ""; }; + B398281429239F4600A82429 /* a00295.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00295.html; sourceTree = ""; }; + B398281529239F4600A82429 /* dynsections.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = dynsections.js; sourceTree = ""; }; + B398281629239F4600A82429 /* a00081_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00081_source.html; sourceTree = ""; }; + B398281729239F4600A82429 /* a00016.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00016.html; sourceTree = ""; }; + B398281829239F4600A82429 /* a00329.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00329.html; sourceTree = ""; }; + B398281929239F4600A82429 /* a00283.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00283.html; sourceTree = ""; }; + B398281A29239F4600A82429 /* a00140_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00140_source.html; sourceTree = ""; }; + B398281B29239F4600A82429 /* a00022_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00022_source.html; sourceTree = ""; }; + B398281C29239F4600A82429 /* a00145.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00145.html; sourceTree = ""; }; + B398281D29239F4600A82429 /* a00130_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00130_source.html; sourceTree = ""; }; + B398281E29239F4600A82429 /* a00112.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00112.html; sourceTree = ""; }; + B398281F29239F4600A82429 /* a00052_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00052_source.html; sourceTree = ""; }; + B398282029239F4600A82429 /* folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folderopen.png; sourceTree = ""; }; + B398282129239F4600A82429 /* a00057.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00057.html; sourceTree = ""; }; + B398282229239F4600A82429 /* a00207_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00207_source.html; sourceTree = ""; }; + B398282329239F4600A82429 /* a00305.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00305.html; sourceTree = ""; }; + B398282429239F4600A82429 /* a00186.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00186.html; sourceTree = ""; }; + B398282529239F4600A82429 /* a00169.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00169.html; sourceTree = ""; }; + B398282629239F4600A82429 /* a00217.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00217.html; sourceTree = ""; }; + B398282729239F4600A82429 /* a00352.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00352.html; sourceTree = ""; }; + B398282829239F4600A82429 /* a00094.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00094.html; sourceTree = ""; }; + B398282929239F4600A82429 /* a00201.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00201.html; sourceTree = ""; }; + B398282A29239F4600A82429 /* a00102_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00102_source.html; sourceTree = ""; }; + B398282B29239F4600A82429 /* a00344.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00344.html; sourceTree = ""; }; + B398282C29239F4600A82429 /* a00060_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00060_source.html; sourceTree = ""; }; + B398282D29239F4600A82429 /* a00128.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00128.html; sourceTree = ""; }; + B398282E29239F4600A82429 /* a00229_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00229_source.html; sourceTree = ""; }; + B398282F29239F4600A82429 /* a00082.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00082.html; sourceTree = ""; }; + B398283029239F4600A82429 /* a00256.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00256.html; sourceTree = ""; }; + B398283129239F4600A82429 /* a00313.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00313.html; sourceTree = ""; }; + B398283229239F4600A82429 /* a00172_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00172_source.html; sourceTree = ""; }; + B398283329239F4600A82429 /* a00010_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00010_source.html; sourceTree = ""; }; + B398283429239F4600A82429 /* a00190.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00190.html; sourceTree = ""; }; + B398283529239F4600A82429 /* a00108.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00108.html; sourceTree = ""; }; + B398283629239F4600A82429 /* a00088_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00088_source.html; sourceTree = ""; }; + B398283729239F4600A82429 /* a00117_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00117_source.html; sourceTree = ""; }; + B398283829239F4600A82429 /* a00364.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00364.html; sourceTree = ""; }; + B398283929239F4600A82429 /* a00075_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00075_source.html; sourceTree = ""; }; + B398283A29239F4600A82429 /* a00221.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00221.html; sourceTree = ""; }; + B398283B29239F4600A82429 /* a00167_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00167_source.html; sourceTree = ""; }; + B398283C29239F4600A82429 /* a00333.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00333.html; sourceTree = ""; }; + B398283D29239F4600A82429 /* a00299.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00299.html; sourceTree = ""; }; + B398283E29239F4600A82429 /* a00005_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00005_source.html; sourceTree = ""; }; + B398283F29239F4600A82429 /* a00276.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00276.html; sourceTree = ""; }; + B398284029239F4600A82429 /* a00149.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00149.html; sourceTree = ""; }; + B398284129239F4600A82429 /* a00212_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00212_source.html; sourceTree = ""; }; + B398284229239F4600A82429 /* dir_3a581ba30d25676e4b797b1f96d53b45.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_3a581ba30d25676e4b797b1f96d53b45.html; sourceTree = ""; }; + B398284329239F4600A82429 /* a00139_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00139_source.html; sourceTree = ""; }; + B398284429239F4600A82429 /* a00325.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00325.html; sourceTree = ""; }; + B398284529239F4600A82429 /* a00260.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00260.html; sourceTree = ""; }; + B398284629239F4600A82429 /* a00372.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00372.html; sourceTree = ""; }; + B398284729239F4600A82429 /* a00149_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00149_source.html; sourceTree = ""; }; + B398284829239F4600A82429 /* dir_6b66465792d005310484819a0eb0b0d3.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = dir_6b66465792d005310484819a0eb0b0d3.html; sourceTree = ""; }; + B398284929239F4600A82429 /* a00155_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00155_source.html; sourceTree = ""; }; + B398284A29239F4600A82429 /* a00165.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00165.html; sourceTree = ""; }; + B398284B29239F4600A82429 /* a00037_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00037_source.html; sourceTree = ""; }; + B398284C29239F4600A82429 /* a00309.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00309.html; sourceTree = ""; }; + B398284D29239F4600A82429 /* a00077.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00077.html; sourceTree = ""; }; + B398284E29239F4600A82429 /* a00132.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00132.html; sourceTree = ""; }; + B398284F29239F4600A82429 /* a00098.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00098.html; sourceTree = ""; }; + B398285029239F4600A82429 /* a00125_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00125_source.html; sourceTree = ""; }; + B398285129239F4700A82429 /* a00047_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00047_source.html; sourceTree = ""; }; + B398285229239F4700A82429 /* a00061.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00061.html; sourceTree = ""; }; + B398285329239F4700A82429 /* jquery.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = jquery.js; sourceTree = ""; }; + B398285429239F4700A82429 /* a00186_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00186_source.html; sourceTree = ""; }; + B398285529239F4700A82429 /* a00019_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00019_source.html; sourceTree = ""; }; + B398285629239F4700A82429 /* a00348.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00348.html; sourceTree = ""; }; + B398285729239F4700A82429 /* a00036.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00036.html; sourceTree = ""; }; + B398285829239F4700A82429 /* a00220_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00220_source.html; sourceTree = ""; }; + B398285929239F4700A82429 /* a00173.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00173.html; sourceTree = ""; }; + B398285A29239F4700A82429 /* a00069_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00069_source.html; sourceTree = ""; }; + B398285B29239F4700A82429 /* a00094_source.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = a00094_source.html; sourceTree = ""; }; + B398285C29239F4700A82429 /* manual.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = manual.pdf; sourceTree = ""; }; + B398285D29239F4700A82429 /* man.doxy */ = {isa = PBXFileReference; lastKnownFileType = text; path = man.doxy; sourceTree = ""; }; + B398285E29239F4700A82429 /* manual.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = manual.md; sourceTree = ""; }; + B398286029239F4700A82429 /* vec4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vec4.hpp; sourceTree = ""; }; + B398286129239F4700A82429 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = integer.hpp; sourceTree = ""; }; + B398286229239F4700A82429 /* vector_relational.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_relational.hpp; sourceTree = ""; }; + B398286329239F4700A82429 /* mat2x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat2x3.hpp; sourceTree = ""; }; + B398286429239F4700A82429 /* mat4x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat4x4.hpp; sourceTree = ""; }; + B398286529239F4700A82429 /* mat2x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat2x2.hpp; sourceTree = ""; }; + B398286629239F4700A82429 /* exponential.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = exponential.hpp; sourceTree = ""; }; + B398286729239F4700A82429 /* vec2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vec2.hpp; sourceTree = ""; }; + B398286829239F4700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B398286929239F4700A82429 /* vec3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vec3.hpp; sourceTree = ""; }; + B398286A29239F4700A82429 /* fwd.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fwd.hpp; sourceTree = ""; }; + B398286B29239F4700A82429 /* mat4x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat4x3.hpp; sourceTree = ""; }; + B398286C29239F4700A82429 /* mat4x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat4x2.hpp; sourceTree = ""; }; + B398286D29239F4700A82429 /* mat2x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat2x4.hpp; sourceTree = ""; }; + B398286E29239F4700A82429 /* packing.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = packing.hpp; sourceTree = ""; }; + B398286F29239F4700A82429 /* mat3x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat3x3.hpp; sourceTree = ""; }; + B398287029239F4700A82429 /* mat3x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat3x2.hpp; sourceTree = ""; }; + B398287229239F4700A82429 /* matrix_double3x2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double3x2_precision.hpp; sourceTree = ""; }; + B398287329239F4700A82429 /* matrix_float2x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float2x4.hpp; sourceTree = ""; }; + B398287429239F4700A82429 /* vector_bool2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool2.hpp; sourceTree = ""; }; + B398287529239F4700A82429 /* quaternion_double_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_double_precision.hpp; sourceTree = ""; }; + B398287629239F4700A82429 /* matrix_float4x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float4x2.hpp; sourceTree = ""; }; + B398287729239F4700A82429 /* matrix_float4x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float4x3.hpp; sourceTree = ""; }; + B398287829239F4700A82429 /* vector_bool3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool3.hpp; sourceTree = ""; }; + B398287929239F4700A82429 /* vector_relational.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_relational.hpp; sourceTree = ""; }; + B398287A29239F4700A82429 /* vector_bool1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool1.hpp; sourceTree = ""; }; + B398287B29239F4700A82429 /* quaternion_common.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_common.inl; sourceTree = ""; }; + B398287C29239F4700A82429 /* vector_uint2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint2_precision.hpp; sourceTree = ""; }; + B398287D29239F4700A82429 /* vector_float1_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float1_precision.hpp; sourceTree = ""; }; + B398287E29239F4700A82429 /* matrix_float2x3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float2x3_precision.hpp; sourceTree = ""; }; + B398287F29239F4700A82429 /* matrix_float2x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float2x2.hpp; sourceTree = ""; }; + B398288029239F4700A82429 /* matrix_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_common.hpp; sourceTree = ""; }; + B398288129239F4700A82429 /* vector_bool4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool4.hpp; sourceTree = ""; }; + B398288229239F4700A82429 /* matrix_float2x4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float2x4_precision.hpp; sourceTree = ""; }; + B398288329239F4700A82429 /* matrix_float4x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float4x4.hpp; sourceTree = ""; }; + B398288429239F4700A82429 /* vector_uint1_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint1_precision.hpp; sourceTree = ""; }; + B398288529239F4700A82429 /* matrix_float2x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float2x3.hpp; sourceTree = ""; }; + B398288629239F4700A82429 /* matrix_clip_space.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_clip_space.hpp; sourceTree = ""; }; + B398288729239F4700A82429 /* scalar_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_integer.hpp; sourceTree = ""; }; + B398288829239F4700A82429 /* vector_float2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float2_precision.hpp; sourceTree = ""; }; + B398288929239F4700A82429 /* matrix_transform.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_transform.inl; sourceTree = ""; }; + B398288A29239F4700A82429 /* quaternion_exponential.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_exponential.inl; sourceTree = ""; }; + B398288B29239F4700A82429 /* scalar_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_common.hpp; sourceTree = ""; }; + B398288C29239F4700A82429 /* quaternion_transform.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_transform.inl; sourceTree = ""; }; + B398288D29239F4700A82429 /* matrix_double4x2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double4x2_precision.hpp; sourceTree = ""; }; + B398288E29239F4700A82429 /* matrix_clip_space.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_clip_space.inl; sourceTree = ""; }; + B398288F29239F4700A82429 /* vector_double4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double4_precision.hpp; sourceTree = ""; }; + B398289029239F4700A82429 /* matrix_float3x4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float3x4_precision.hpp; sourceTree = ""; }; + B398289129239F4700A82429 /* scalar_integer.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = scalar_integer.inl; sourceTree = ""; }; + B398289229239F4700A82429 /* vector_uint3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint3.hpp; sourceTree = ""; }; + B398289329239F4700A82429 /* matrix_float4x3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float4x3_precision.hpp; sourceTree = ""; }; + B398289429239F4700A82429 /* matrix_common.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_common.inl; sourceTree = ""; }; + B398289529239F4700A82429 /* vector_uint2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint2.hpp; sourceTree = ""; }; + B398289629239F4700A82429 /* quaternion_float_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_float_precision.hpp; sourceTree = ""; }; + B398289729239F4700A82429 /* vector_int1_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int1_precision.hpp; sourceTree = ""; }; + B398289829239F4700A82429 /* matrix_float3x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float3x4.hpp; sourceTree = ""; }; + B398289929239F4700A82429 /* quaternion_transform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_transform.hpp; sourceTree = ""; }; + B398289A29239F4700A82429 /* vector_bool4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool4_precision.hpp; sourceTree = ""; }; + B398289B29239F4700A82429 /* vector_uint1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint1.hpp; sourceTree = ""; }; + B398289C29239F4700A82429 /* matrix_transform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_transform.hpp; sourceTree = ""; }; + B398289D29239F4700A82429 /* scalar_common.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = scalar_common.inl; sourceTree = ""; }; + B398289E29239F4700A82429 /* quaternion_exponential.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_exponential.hpp; sourceTree = ""; }; + B398289F29239F4700A82429 /* vector_relational.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = vector_relational.inl; sourceTree = ""; }; + B39828A029239F4700A82429 /* vector_bool3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool3_precision.hpp; sourceTree = ""; }; + B39828A129239F4700A82429 /* matrix_double2x2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double2x2_precision.hpp; sourceTree = ""; }; + B39828A229239F4700A82429 /* quaternion_float.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_float.hpp; sourceTree = ""; }; + B39828A329239F4700A82429 /* vector_int2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int2_precision.hpp; sourceTree = ""; }; + B39828A429239F4700A82429 /* vector_uint4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint4.hpp; sourceTree = ""; }; + B39828A529239F4700A82429 /* matrix_float3x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float3x2.hpp; sourceTree = ""; }; + B39828A629239F4700A82429 /* vector_double3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double3_precision.hpp; sourceTree = ""; }; + B39828A729239F4700A82429 /* quaternion_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_common.hpp; sourceTree = ""; }; + B39828A829239F4700A82429 /* matrix_float3x3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float3x3_precision.hpp; sourceTree = ""; }; + B39828A929239F4700A82429 /* matrix_float3x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float3x3.hpp; sourceTree = ""; }; + B39828AA29239F4700A82429 /* scalar_int_sized.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_int_sized.hpp; sourceTree = ""; }; + B39828AB29239F4700A82429 /* matrix_float4x4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float4x4_precision.hpp; sourceTree = ""; }; + B39828AC29239F4700A82429 /* matrix_double4x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double4x2.hpp; sourceTree = ""; }; + B39828AD29239F4700A82429 /* vector_int1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int1.hpp; sourceTree = ""; }; + B39828AE29239F4700A82429 /* vector_float3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float3.hpp; sourceTree = ""; }; + B39828AF29239F4700A82429 /* matrix_double2x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double2x4.hpp; sourceTree = ""; }; + B39828B029239F4700A82429 /* scalar_ulp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_ulp.hpp; sourceTree = ""; }; + B39828B129239F4700A82429 /* quaternion_geometric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_geometric.hpp; sourceTree = ""; }; + B39828B229239F4700A82429 /* vector_int3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int3_precision.hpp; sourceTree = ""; }; + B39828B329239F4700A82429 /* vector_float2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float2.hpp; sourceTree = ""; }; + B39828B429239F4700A82429 /* matrix_double2x3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double2x3_precision.hpp; sourceTree = ""; }; + B39828B529239F4700A82429 /* vector_bool2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool2_precision.hpp; sourceTree = ""; }; + B39828B629239F4700A82429 /* quaternion_double.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_double.hpp; sourceTree = ""; }; + B39828B729239F4700A82429 /* matrix_double4x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double4x3.hpp; sourceTree = ""; }; + B39828B829239F4700A82429 /* quaternion_common_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_common_simd.inl; sourceTree = ""; }; + B39828B929239F4700A82429 /* vector_int2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int2.hpp; sourceTree = ""; }; + B39828BA29239F4700A82429 /* vector_double2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double2_precision.hpp; sourceTree = ""; }; + B39828BB29239F4700A82429 /* matrix_float3x2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float3x2_precision.hpp; sourceTree = ""; }; + B39828BC29239F4700A82429 /* matrix_relational.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_relational.hpp; sourceTree = ""; }; + B39828BD29239F4700A82429 /* vector_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_integer.hpp; sourceTree = ""; }; + B39828BE29239F4700A82429 /* scalar_relational.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_relational.hpp; sourceTree = ""; }; + B39828BF29239F4700A82429 /* vector_float1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float1.hpp; sourceTree = ""; }; + B39828C029239F4700A82429 /* vector_int3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int3.hpp; sourceTree = ""; }; + B39828C129239F4700A82429 /* scalar_constants.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = scalar_constants.inl; sourceTree = ""; }; + B39828C229239F4700A82429 /* matrix_double4x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double4x4.hpp; sourceTree = ""; }; + B39828C329239F4700A82429 /* scalar_uint_sized.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_uint_sized.hpp; sourceTree = ""; }; + B39828C429239F4700A82429 /* vector_double1_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double1_precision.hpp; sourceTree = ""; }; + B39828C529239F4700A82429 /* matrix_double2x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double2x2.hpp; sourceTree = ""; }; + B39828C629239F4700A82429 /* matrix_float4x2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float4x2_precision.hpp; sourceTree = ""; }; + B39828C729239F4700A82429 /* matrix_double2x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double2x3.hpp; sourceTree = ""; }; + B39828C829239F4700A82429 /* matrix_projection.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_projection.hpp; sourceTree = ""; }; + B39828C929239F4700A82429 /* vector_float4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float4.hpp; sourceTree = ""; }; + B39828CA29239F4700A82429 /* vector_common.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = vector_common.inl; sourceTree = ""; }; + B39828CB29239F4700A82429 /* vector_int4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int4_precision.hpp; sourceTree = ""; }; + B39828CC29239F4700A82429 /* matrix_double2x4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double2x4_precision.hpp; sourceTree = ""; }; + B39828CD29239F4700A82429 /* vector_int4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_int4.hpp; sourceTree = ""; }; + B39828CE29239F4700A82429 /* quaternion_relational.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_relational.hpp; sourceTree = ""; }; + B39828CF29239F4700A82429 /* quaternion_trigonometric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion_trigonometric.hpp; sourceTree = ""; }; + B39828D029239F4700A82429 /* vector_bool1_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_bool1_precision.hpp; sourceTree = ""; }; + B39828D129239F4700A82429 /* vector_ulp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_ulp.hpp; sourceTree = ""; }; + B39828D229239F4700A82429 /* vector_float3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float3_precision.hpp; sourceTree = ""; }; + B39828D329239F4700A82429 /* vector_uint4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint4_precision.hpp; sourceTree = ""; }; + B39828D429239F4700A82429 /* matrix_projection.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_projection.inl; sourceTree = ""; }; + B39828D529239F4700A82429 /* vector_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_common.hpp; sourceTree = ""; }; + B39828D629239F4700A82429 /* scalar_constants.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_constants.hpp; sourceTree = ""; }; + B39828D729239F4700A82429 /* matrix_double3x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double3x4.hpp; sourceTree = ""; }; + B39828D829239F4700A82429 /* quaternion_trigonometric.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_trigonometric.inl; sourceTree = ""; }; + B39828D929239F4700A82429 /* matrix_double4x3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double4x3_precision.hpp; sourceTree = ""; }; + B39828DA29239F4700A82429 /* vector_ulp.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = vector_ulp.inl; sourceTree = ""; }; + B39828DB29239F4700A82429 /* matrix_double3x4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double3x4_precision.hpp; sourceTree = ""; }; + B39828DC29239F4700A82429 /* quaternion_relational.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_relational.inl; sourceTree = ""; }; + B39828DD29239F4700A82429 /* vector_double4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double4.hpp; sourceTree = ""; }; + B39828DE29239F4700A82429 /* vector_double1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double1.hpp; sourceTree = ""; }; + B39828DF29239F4700A82429 /* matrix_double4x4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double4x4_precision.hpp; sourceTree = ""; }; + B39828E029239F4700A82429 /* scalar_ulp.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = scalar_ulp.inl; sourceTree = ""; }; + B39828E129239F4700A82429 /* quaternion_geometric.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_geometric.inl; sourceTree = ""; }; + B39828E229239F4700A82429 /* matrix_double3x3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double3x3_precision.hpp; sourceTree = ""; }; + B39828E329239F4700A82429 /* matrix_double3x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double3x2.hpp; sourceTree = ""; }; + B39828E429239F4700A82429 /* matrix_float2x2_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_float2x2_precision.hpp; sourceTree = ""; }; + B39828E529239F4700A82429 /* vector_integer.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = vector_integer.inl; sourceTree = ""; }; + B39828E629239F4700A82429 /* scalar_relational.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = scalar_relational.inl; sourceTree = ""; }; + B39828E729239F4700A82429 /* vector_double3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double3.hpp; sourceTree = ""; }; + B39828E829239F4700A82429 /* vector_float4_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_float4_precision.hpp; sourceTree = ""; }; + B39828E929239F4700A82429 /* vector_double2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_double2.hpp; sourceTree = ""; }; + B39828EA29239F4700A82429 /* matrix_relational.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_relational.inl; sourceTree = ""; }; + B39828EB29239F4700A82429 /* vector_uint3_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_uint3_precision.hpp; sourceTree = ""; }; + B39828EC29239F4700A82429 /* matrix_double3x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_double3x3.hpp; sourceTree = ""; }; + B39828EE29239F4700A82429 /* neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = neon.h; sourceTree = ""; }; + B39828EF29239F4700A82429 /* vector_relational.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_relational.h; sourceTree = ""; }; + B39828F029239F4700A82429 /* matrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; + B39828F129239F4700A82429 /* packing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = packing.h; sourceTree = ""; }; + B39828F229239F4700A82429 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B39828F329239F4700A82429 /* trigonometric.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trigonometric.h; sourceTree = ""; }; + B39828F429239F4700A82429 /* geometric.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = geometric.h; sourceTree = ""; }; + B39828F529239F4700A82429 /* integer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = integer.h; sourceTree = ""; }; + B39828F629239F4700A82429 /* platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = ""; }; + B39828F729239F4700A82429 /* exponential.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exponential.h; sourceTree = ""; }; + B39828F829239F4700A82429 /* mat3x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mat3x4.hpp; sourceTree = ""; }; + B39828F929239F4700A82429 /* matrix.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix.hpp; sourceTree = ""; }; + B39828FA29239F4700A82429 /* glm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = glm.hpp; sourceTree = ""; }; + B39828FB29239F4700A82429 /* trigonometric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = trigonometric.hpp; sourceTree = ""; }; + B39828FC29239F4700A82429 /* geometric.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = geometric.hpp; sourceTree = ""; }; + B39828FE29239F4700A82429 /* func_exponential.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_exponential.inl; sourceTree = ""; }; + B39828FF29239F4700A82429 /* func_integer_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_integer_simd.inl; sourceTree = ""; }; + B398290029239F4700A82429 /* func_vector_relational.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_vector_relational.inl; sourceTree = ""; }; + B398290129239F4700A82429 /* func_packing.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_packing.inl; sourceTree = ""; }; + B398290229239F4700A82429 /* _fixes.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = _fixes.hpp; sourceTree = ""; }; + B398290329239F4700A82429 /* type_quat.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_quat.inl; sourceTree = ""; }; + B398290429239F4700A82429 /* type_half.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_half.inl; sourceTree = ""; }; + B398290529239F4700A82429 /* func_vector_relational_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_vector_relational_simd.inl; sourceTree = ""; }; + B398290629239F4700A82429 /* qualifier.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = qualifier.hpp; sourceTree = ""; }; + B398290729239F4700A82429 /* func_matrix_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_matrix_simd.inl; sourceTree = ""; }; + B398290829239F4700A82429 /* _noise.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = _noise.hpp; sourceTree = ""; }; + B398290929239F4700A82429 /* type_half.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_half.hpp; sourceTree = ""; }; + B398290A29239F4700A82429 /* _features.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = _features.hpp; sourceTree = ""; }; + B398290B29239F4700A82429 /* func_integer.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_integer.inl; sourceTree = ""; }; + B398290C29239F4700A82429 /* _vectorize.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = _vectorize.hpp; sourceTree = ""; }; + B398290D29239F4700A82429 /* func_geometric.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_geometric.inl; sourceTree = ""; }; + B398290E29239F4700A82429 /* type_quat.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_quat.hpp; sourceTree = ""; }; + B398290F29239F4700A82429 /* func_common.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_common.inl; sourceTree = ""; }; + B398291029239F4700A82429 /* type_quat_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_quat_simd.inl; sourceTree = ""; }; + B398291129239F4700A82429 /* func_trigonometric.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_trigonometric.inl; sourceTree = ""; }; + B398291229239F4700A82429 /* type_mat2x4.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat2x4.inl; sourceTree = ""; }; + B398291329239F4700A82429 /* type_mat4x2.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat4x2.inl; sourceTree = ""; }; + B398291429239F4700A82429 /* _swizzle.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = _swizzle.hpp; sourceTree = ""; }; + B398291529239F4700A82429 /* type_mat4x3.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat4x3.inl; sourceTree = ""; }; + B398291629239F4700A82429 /* func_packing_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_packing_simd.inl; sourceTree = ""; }; + B398291729239F4700A82429 /* type_vec4.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_vec4.inl; sourceTree = ""; }; + B398291829239F4700A82429 /* func_trigonometric_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_trigonometric_simd.inl; sourceTree = ""; }; + B398291929239F4700A82429 /* type_mat3x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat3x3.hpp; sourceTree = ""; }; + B398291A29239F4700A82429 /* type_mat3x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat3x2.hpp; sourceTree = ""; }; + B398291B29239F4700A82429 /* compute_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = compute_common.hpp; sourceTree = ""; }; + B398291C29239F4700A82429 /* setup.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = setup.hpp; sourceTree = ""; }; + B398291D29239F4700A82429 /* type_mat2x2.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat2x2.inl; sourceTree = ""; }; + B398291E29239F4700A82429 /* type_vec1.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_vec1.inl; sourceTree = ""; }; + B398291F29239F4700A82429 /* func_common_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_common_simd.inl; sourceTree = ""; }; + B398292029239F4700A82429 /* type_mat4x4.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat4x4.inl; sourceTree = ""; }; + B398292129239F4700A82429 /* func_geometric_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_geometric_simd.inl; sourceTree = ""; }; + B398292229239F4700A82429 /* type_mat2x3.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat2x3.inl; sourceTree = ""; }; + B398292329239F4700A82429 /* type_vec2.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_vec2.inl; sourceTree = ""; }; + B398292429239F4700A82429 /* glm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glm.cpp; sourceTree = ""; }; + B398292529239F4700A82429 /* type_mat3x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat3x4.hpp; sourceTree = ""; }; + B398292629239F4700A82429 /* type_vec3.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_vec3.inl; sourceTree = ""; }; + B398292729239F4700A82429 /* type_mat4x4_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat4x4_simd.inl; sourceTree = ""; }; + B398292829239F4700A82429 /* type_mat2x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat2x3.hpp; sourceTree = ""; }; + B398292929239F4700A82429 /* type_mat4x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat4x4.hpp; sourceTree = ""; }; + B398292A29239F4700A82429 /* func_matrix.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_matrix.inl; sourceTree = ""; }; + B398292B29239F4700A82429 /* type_mat2x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat2x2.hpp; sourceTree = ""; }; + B398292C29239F4700A82429 /* type_vec1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_vec1.hpp; sourceTree = ""; }; + B398292D29239F4700A82429 /* _swizzle_func.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = _swizzle_func.hpp; sourceTree = ""; }; + B398292E29239F4700A82429 /* type_vec3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_vec3.hpp; sourceTree = ""; }; + B398292F29239F4700A82429 /* compute_vector_relational.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = compute_vector_relational.hpp; sourceTree = ""; }; + B398293029239F4700A82429 /* type_vec4_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_vec4_simd.inl; sourceTree = ""; }; + B398293129239F4700A82429 /* type_mat3x4.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat3x4.inl; sourceTree = ""; }; + B398293229239F4700A82429 /* func_exponential_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = func_exponential_simd.inl; sourceTree = ""; }; + B398293329239F4700A82429 /* type_vec2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_vec2.hpp; sourceTree = ""; }; + B398293429239F4700A82429 /* type_mat4x3.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat4x3.hpp; sourceTree = ""; }; + B398293529239F4700A82429 /* type_mat4x2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat4x2.hpp; sourceTree = ""; }; + B398293629239F4700A82429 /* type_float.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_float.hpp; sourceTree = ""; }; + B398293729239F4700A82429 /* type_mat2x4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_mat2x4.hpp; sourceTree = ""; }; + B398293829239F4700A82429 /* type_mat3x2.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat3x2.inl; sourceTree = ""; }; + B398293929239F4700A82429 /* type_mat3x3.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_mat3x3.inl; sourceTree = ""; }; + B398293A29239F4700A82429 /* type_vec4.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_vec4.hpp; sourceTree = ""; }; + B398293B29239F4700A82429 /* ext.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ext.hpp; sourceTree = ""; }; + B398293D29239F4700A82429 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = integer.hpp; sourceTree = ""; }; + B398293E29239F4700A82429 /* matrix_integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_integer.hpp; sourceTree = ""; }; + B398293F29239F4700A82429 /* matrix_inverse.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_inverse.inl; sourceTree = ""; }; + B398294029239F4700A82429 /* quaternion.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion.inl; sourceTree = ""; }; + B398294129239F4700A82429 /* packing.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = packing.inl; sourceTree = ""; }; + B398294229239F4700A82429 /* matrix_transform.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_transform.inl; sourceTree = ""; }; + B398294329239F4700A82429 /* vec1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vec1.hpp; sourceTree = ""; }; + B398294429239F4700A82429 /* type_precision.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_precision.inl; sourceTree = ""; }; + B398294529239F4700A82429 /* bitfield.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = bitfield.inl; sourceTree = ""; }; + B398294629239F4700A82429 /* ulp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ulp.hpp; sourceTree = ""; }; + B398294729239F4700A82429 /* round.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = round.inl; sourceTree = ""; }; + B398294829239F4700A82429 /* packing.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = packing.hpp; sourceTree = ""; }; + B398294929239F4700A82429 /* quaternion_simd.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion_simd.inl; sourceTree = ""; }; + B398294A29239F4700A82429 /* ulp.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ulp.inl; sourceTree = ""; }; + B398294B29239F4700A82429 /* round.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = round.hpp; sourceTree = ""; }; + B398294C29239F4700A82429 /* matrix_transform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_transform.hpp; sourceTree = ""; }; + B398294D29239F4700A82429 /* type_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_precision.hpp; sourceTree = ""; }; + B398294E29239F4700A82429 /* bitfield.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = bitfield.hpp; sourceTree = ""; }; + B398294F29239F4700A82429 /* integer.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = integer.inl; sourceTree = ""; }; + B398295029239F4700A82429 /* quaternion.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion.hpp; sourceTree = ""; }; + B398295129239F4700A82429 /* matrix_inverse.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_inverse.hpp; sourceTree = ""; }; + B398295229239F4700A82429 /* epsilon.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = epsilon.inl; sourceTree = ""; }; + B398295329239F4700A82429 /* random.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = random.hpp; sourceTree = ""; }; + B398295429239F4700A82429 /* matrix_access.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_access.inl; sourceTree = ""; }; + B398295529239F4700A82429 /* type_ptr.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_ptr.hpp; sourceTree = ""; }; + B398295629239F4700A82429 /* reciprocal.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = reciprocal.inl; sourceTree = ""; }; + B398295729239F4700A82429 /* constants.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = constants.hpp; sourceTree = ""; }; + B398295829239F4700A82429 /* color_space.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = color_space.hpp; sourceTree = ""; }; + B398295929239F4700A82429 /* noise.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = noise.hpp; sourceTree = ""; }; + B398295A29239F4700A82429 /* color_space.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = color_space.inl; sourceTree = ""; }; + B398295B29239F4700A82429 /* noise.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = noise.inl; sourceTree = ""; }; + B398295C29239F4700A82429 /* matrix_access.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_access.hpp; sourceTree = ""; }; + B398295D29239F4700A82429 /* random.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = random.inl; sourceTree = ""; }; + B398295E29239F4700A82429 /* epsilon.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = epsilon.hpp; sourceTree = ""; }; + B398295F29239F4700A82429 /* constants.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = constants.inl; sourceTree = ""; }; + B398296029239F4700A82429 /* reciprocal.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = reciprocal.hpp; sourceTree = ""; }; + B398296129239F4700A82429 /* type_ptr.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_ptr.inl; sourceTree = ""; }; + B398296229239F4700A82429 /* type_aligned.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_aligned.hpp; sourceTree = ""; }; + B398296329239F4700A82429 /* common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = common.hpp; sourceTree = ""; }; + B398296529239F4700A82429 /* vector_angle.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_angle.hpp; sourceTree = ""; }; + B398296629239F4700A82429 /* log_base.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = log_base.inl; sourceTree = ""; }; + B398296729239F4700A82429 /* matrix_query.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_query.inl; sourceTree = ""; }; + B398296829239F4700A82429 /* extend.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = extend.inl; sourceTree = ""; }; + B398296929239F4700A82429 /* integer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = integer.hpp; sourceTree = ""; }; + B398296A29239F4700A82429 /* associated_min_max.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = associated_min_max.inl; sourceTree = ""; }; + B398296B29239F4700A82429 /* matrix_transform_2d.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_transform_2d.inl; sourceTree = ""; }; + B398296C29239F4700A82429 /* hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = hash.hpp; sourceTree = ""; }; + B398296D29239F4700A82429 /* rotate_vector.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rotate_vector.hpp; sourceTree = ""; }; + B398296E29239F4700A82429 /* matrix_interpolation.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_interpolation.hpp; sourceTree = ""; }; + B398296F29239F4700A82429 /* functions.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = functions.hpp; sourceTree = ""; }; + B398297029239F4700A82429 /* quaternion.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = quaternion.inl; sourceTree = ""; }; + B398297129239F4700A82429 /* exterior_product.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = exterior_product.inl; sourceTree = ""; }; + B398297229239F4700A82429 /* gradient_paint.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradient_paint.inl; sourceTree = ""; }; + B398297329239F4700A82429 /* string_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = string_cast.hpp; sourceTree = ""; }; + B398297429239F4700A82429 /* color_space_YCoCg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = color_space_YCoCg.hpp; sourceTree = ""; }; + B398297529239F4700A82429 /* type_trait.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_trait.inl; sourceTree = ""; }; + B398297629239F4700A82429 /* extended_min_max.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = extended_min_max.hpp; sourceTree = ""; }; + B398297729239F4700A82429 /* euler_angles.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = euler_angles.inl; sourceTree = ""; }; + B398297829239F4700A82429 /* fast_square_root.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fast_square_root.hpp; sourceTree = ""; }; + B398297929239F4700A82429 /* raw_data.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = raw_data.inl; sourceTree = ""; }; + B398297A29239F4700A82429 /* matrix_cross_product.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_cross_product.inl; sourceTree = ""; }; + B398297B29239F4700A82429 /* spline.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spline.hpp; sourceTree = ""; }; + B398297C29239F4700A82429 /* fast_trigonometry.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fast_trigonometry.hpp; sourceTree = ""; }; + B398297D29239F4700A82429 /* optimum_pow.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = optimum_pow.inl; sourceTree = ""; }; + B398297E29239F4700A82429 /* dual_quaternion.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = dual_quaternion.hpp; sourceTree = ""; }; + B398297F29239F4700A82429 /* closest_point.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = closest_point.hpp; sourceTree = ""; }; + B398298029239F4700A82429 /* number_precision.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = number_precision.inl; sourceTree = ""; }; + B398298129239F4700A82429 /* mixed_product.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = mixed_product.inl; sourceTree = ""; }; + B398298229239F4700A82429 /* transform.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = transform.inl; sourceTree = ""; }; + B398298329239F4700A82429 /* bit.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = bit.inl; sourceTree = ""; }; + B398298429239F4700A82429 /* io.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = io.inl; sourceTree = ""; }; + B398298529239F4700A82429 /* fast_trigonometry.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = fast_trigonometry.inl; sourceTree = ""; }; + B398298629239F4700A82429 /* optimum_pow.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = optimum_pow.hpp; sourceTree = ""; }; + B398298729239F4700A82429 /* spline.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = spline.inl; sourceTree = ""; }; + B398298829239F4700A82429 /* raw_data.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = raw_data.hpp; sourceTree = ""; }; + B398298929239F4700A82429 /* matrix_cross_product.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_cross_product.hpp; sourceTree = ""; }; + B398298A29239F4700A82429 /* euler_angles.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = euler_angles.hpp; sourceTree = ""; }; + B398298B29239F4700A82429 /* fast_square_root.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = fast_square_root.inl; sourceTree = ""; }; + B398298C29239F4700A82429 /* color_space_YCoCg.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = color_space_YCoCg.inl; sourceTree = ""; }; + B398298D29239F4700A82429 /* type_trait.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_trait.hpp; sourceTree = ""; }; + B398298E29239F4700A82429 /* extended_min_max.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = extended_min_max.inl; sourceTree = ""; }; + B398298F29239F4700A82429 /* io.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = io.hpp; sourceTree = ""; }; + B398299029239F4700A82429 /* float_notmalize.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = float_notmalize.inl; sourceTree = ""; }; + B398299129239F4700A82429 /* transform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = transform.hpp; sourceTree = ""; }; + B398299229239F4700A82429 /* bit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = bit.hpp; sourceTree = ""; }; + B398299329239F4700A82429 /* number_precision.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = number_precision.hpp; sourceTree = ""; }; + B398299429239F4700A82429 /* mixed_product.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = mixed_product.hpp; sourceTree = ""; }; + B398299529239F4700A82429 /* closest_point.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = closest_point.inl; sourceTree = ""; }; + B398299629239F4700A82429 /* dual_quaternion.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = dual_quaternion.inl; sourceTree = ""; }; + B398299729239F4700A82429 /* associated_min_max.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = associated_min_max.hpp; sourceTree = ""; }; + B398299829239F4700A82429 /* matrix_transform_2d.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_transform_2d.hpp; sourceTree = ""; }; + B398299929239F4700A82429 /* integer.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = integer.inl; sourceTree = ""; }; + B398299A29239F4700A82429 /* log_base.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = log_base.hpp; sourceTree = ""; }; + B398299B29239F4700A82429 /* matrix_query.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_query.hpp; sourceTree = ""; }; + B398299C29239F4700A82429 /* vector_angle.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = vector_angle.inl; sourceTree = ""; }; + B398299D29239F4700A82429 /* extend.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = extend.hpp; sourceTree = ""; }; + B398299E29239F4700A82429 /* gradient_paint.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = gradient_paint.hpp; sourceTree = ""; }; + B398299F29239F4700A82429 /* quaternion.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quaternion.hpp; sourceTree = ""; }; + B39829A029239F4700A82429 /* exterior_product.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = exterior_product.hpp; sourceTree = ""; }; + B39829A129239F4700A82429 /* string_cast.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = string_cast.inl; sourceTree = ""; }; + B39829A229239F4700A82429 /* functions.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = functions.inl; sourceTree = ""; }; + B39829A329239F4700A82429 /* rotate_vector.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = rotate_vector.inl; sourceTree = ""; }; + B39829A429239F4700A82429 /* matrix_interpolation.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_interpolation.inl; sourceTree = ""; }; + B39829A529239F4700A82429 /* hash.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = hash.inl; sourceTree = ""; }; + B39829A629239F4700A82429 /* vector_query.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = vector_query.inl; sourceTree = ""; }; + B39829A729239F4700A82429 /* polar_coordinates.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = polar_coordinates.hpp; sourceTree = ""; }; + B39829A829239F4700A82429 /* orthonormalize.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = orthonormalize.inl; sourceTree = ""; }; + B39829A929239F4700A82429 /* component_wise.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = component_wise.inl; sourceTree = ""; }; + B39829AA29239F4700A82429 /* normalize_dot.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = normalize_dot.inl; sourceTree = ""; }; + B39829AB29239F4700A82429 /* std_based_type.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = std_based_type.inl; sourceTree = ""; }; + B39829AC29239F4700A82429 /* matrix_factorisation.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_factorisation.inl; sourceTree = ""; }; + B39829AD29239F4700A82429 /* type_aligned.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = type_aligned.inl; sourceTree = ""; }; + B39829AE29239F4700A82429 /* vec_swizzle.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vec_swizzle.hpp; sourceTree = ""; }; + B39829AF29239F4700A82429 /* projection.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = projection.hpp; sourceTree = ""; }; + B39829B029239F4700A82429 /* compatibility.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = compatibility.inl; sourceTree = ""; }; + B39829B129239F4700A82429 /* scalar_relational.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_relational.hpp; sourceTree = ""; }; + B39829B229239F4700A82429 /* wrap.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wrap.hpp; sourceTree = ""; }; + B39829B329239F4700A82429 /* rotate_normalized_axis.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = rotate_normalized_axis.inl; sourceTree = ""; }; + B39829B429239F4700A82429 /* texture.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = texture.hpp; sourceTree = ""; }; + B39829B529239F4700A82429 /* color_encoding.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = color_encoding.inl; sourceTree = ""; }; + B39829B629239F4700A82429 /* norm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = norm.hpp; sourceTree = ""; }; + B39829B729239F4700A82429 /* matrix_major_storage.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_major_storage.inl; sourceTree = ""; }; + B39829B829239F4700A82429 /* matrix_operation.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_operation.inl; sourceTree = ""; }; + B39829B929239F4700A82429 /* color_space.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = color_space.hpp; sourceTree = ""; }; + B39829BA29239F4700A82429 /* normal.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = normal.hpp; sourceTree = ""; }; + B39829BB29239F4700A82429 /* intersect.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = intersect.inl; sourceTree = ""; }; + B39829BC29239F4700A82429 /* perpendicular.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = perpendicular.inl; sourceTree = ""; }; + B39829BD29239F4700A82429 /* easing.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = easing.hpp; sourceTree = ""; }; + B39829BE29239F4700A82429 /* transform2.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = transform2.inl; sourceTree = ""; }; + B39829BF29239F4700A82429 /* matrix_decompose.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_decompose.hpp; sourceTree = ""; }; + B39829C029239F4700A82429 /* fast_exponential.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fast_exponential.hpp; sourceTree = ""; }; + B39829C129239F4700A82429 /* common.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = common.inl; sourceTree = ""; }; + B39829C229239F4700A82429 /* handed_coordinate_space.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = handed_coordinate_space.hpp; sourceTree = ""; }; + B39829C329239F4700A82429 /* intersect.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = intersect.hpp; sourceTree = ""; }; + B39829C429239F4700A82429 /* perpendicular.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = perpendicular.hpp; sourceTree = ""; }; + B39829C529239F4700A82429 /* easing.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = easing.inl; sourceTree = ""; }; + B39829C629239F4700A82429 /* matrix_operation.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_operation.hpp; sourceTree = ""; }; + B39829C729239F4700A82429 /* color_space.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = color_space.inl; sourceTree = ""; }; + B39829C829239F4700A82429 /* normal.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = normal.inl; sourceTree = ""; }; + B39829C929239F4700A82429 /* color_encoding.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = color_encoding.hpp; sourceTree = ""; }; + B39829CA29239F4700A82429 /* matrix_major_storage.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_major_storage.hpp; sourceTree = ""; }; + B39829CB29239F4700A82429 /* norm.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = norm.inl; sourceTree = ""; }; + B39829CC29239F4700A82429 /* texture.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = texture.inl; sourceTree = ""; }; + B39829CD29239F4700A82429 /* handed_coordinate_space.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = handed_coordinate_space.inl; sourceTree = ""; }; + B39829CE29239F4700A82429 /* common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = common.hpp; sourceTree = ""; }; + B39829CF29239F4700A82429 /* range.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = range.hpp; sourceTree = ""; }; + B39829D029239F4700A82429 /* fast_exponential.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = fast_exponential.inl; sourceTree = ""; }; + B39829D129239F4700A82429 /* transform2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = transform2.hpp; sourceTree = ""; }; + B39829D229239F4700A82429 /* matrix_decompose.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = matrix_decompose.inl; sourceTree = ""; }; + B39829D329239F4700A82429 /* scalar_multiplication.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = scalar_multiplication.hpp; sourceTree = ""; }; + B39829D429239F4700A82429 /* std_based_type.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = std_based_type.hpp; sourceTree = ""; }; + B39829D529239F4700A82429 /* matrix_factorisation.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = matrix_factorisation.hpp; sourceTree = ""; }; + B39829D629239F4700A82429 /* orthonormalize.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = orthonormalize.hpp; sourceTree = ""; }; + B39829D729239F4700A82429 /* normalize_dot.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = normalize_dot.hpp; sourceTree = ""; }; + B39829D829239F4700A82429 /* component_wise.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = component_wise.hpp; sourceTree = ""; }; + B39829D929239F4700A82429 /* polar_coordinates.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = polar_coordinates.inl; sourceTree = ""; }; + B39829DA29239F4700A82429 /* vector_query.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vector_query.hpp; sourceTree = ""; }; + B39829DB29239F4700A82429 /* scalar_relational.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = scalar_relational.inl; sourceTree = ""; }; + B39829DC29239F4700A82429 /* wrap.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = wrap.inl; sourceTree = ""; }; + B39829DD29239F4700A82429 /* compatibility.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = compatibility.hpp; sourceTree = ""; }; + B39829DE29239F4700A82429 /* rotate_normalized_axis.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rotate_normalized_axis.hpp; sourceTree = ""; }; + B39829DF29239F4700A82429 /* projection.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = projection.inl; sourceTree = ""; }; + B39829E029239F4700A82429 /* type_aligned.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_aligned.hpp; sourceTree = ""; }; + B39829E229239F4700A82429 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B39829E329239F4700A82429 /* INSTALL */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL; sourceTree = ""; }; + B39829E429239F4700A82429 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B39829E529239F4700A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B39829E629239F4700A82429 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B39829E729239F4700A82429 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B39829E829239F4700A82429 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B39829EA29239F4700A82429 /* install-sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-sh"; sourceTree = ""; }; + B39829EB29239F4700A82429 /* ltmain.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ltmain.sh; sourceTree = ""; }; + B39829EC29239F4700A82429 /* ar-lib */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "ar-lib"; sourceTree = ""; }; + B39829ED29239F4700A82429 /* config.guess */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.guess; sourceTree = ""; }; + B39829EE29239F4700A82429 /* depcomp */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = depcomp; sourceTree = ""; }; + B39829EF29239F4700A82429 /* missing */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = missing; sourceTree = ""; }; + B39829F029239F4700A82429 /* config.sub */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.sub; sourceTree = ""; }; + B39829F129239F4700A82429 /* root-test-driver */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "root-test-driver"; sourceTree = ""; }; + B39829F229239F4700A82429 /* compile */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = compile; sourceTree = ""; }; + B39829F329239F4700A82429 /* test-driver */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "test-driver"; sourceTree = ""; }; + B39829F429239F4700A82429 /* README.ANDROID */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.ANDROID; sourceTree = ""; }; + B39829F529239F4700A82429 /* breakpad.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = breakpad.pc.in; sourceTree = ""; }; + B39829F729239F4700A82429 /* breakpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = breakpad.png; sourceTree = ""; }; + B39829F829239F4700A82429 /* processor_design.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = processor_design.md; sourceTree = ""; }; + B39829F929239F4700A82429 /* linux_system_calls.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = linux_system_calls.md; sourceTree = ""; }; + B39829FA29239F4700A82429 /* symbol_files.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = symbol_files.md; sourceTree = ""; }; + B39829FB29239F4700A82429 /* sym_upload_v2_protocol.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = sym_upload_v2_protocol.md; sourceTree = ""; }; + B39829FC29239F4700A82429 /* stack_walking.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = stack_walking.md; sourceTree = ""; }; + B39829FD29239F4700A82429 /* getting_started_with_breakpad.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = getting_started_with_breakpad.md; sourceTree = ""; }; + B39829FE29239F4700A82429 /* client_design.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = client_design.md; sourceTree = ""; }; + B39829FF29239F4700A82429 /* breakpad.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = breakpad.svg; sourceTree = ""; }; + B3982A0029239F4700A82429 /* contributing_to_breakpad.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = contributing_to_breakpad.md; sourceTree = ""; }; + B3982A0129239F4700A82429 /* linux_starter_guide.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = linux_starter_guide.md; sourceTree = ""; }; + B3982A0229239F4700A82429 /* linux_core_handler.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = linux_core_handler.md; sourceTree = ""; }; + B3982A0329239F4700A82429 /* exception_handling.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = exception_handling.md; sourceTree = ""; }; + B3982A0429239F4700A82429 /* OWNERS */ = {isa = PBXFileReference; lastKnownFileType = text; path = OWNERS; sourceTree = ""; }; + B3982A0529239F4700A82429 /* mozilla_brown_bag_talk.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = mozilla_brown_bag_talk.md; sourceTree = ""; }; + B3982A0629239F4700A82429 /* windows_client_integration.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = windows_client_integration.md; sourceTree = ""; }; + B3982A0729239F4700A82429 /* mac_breakpad_starter_guide.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = mac_breakpad_starter_guide.md; sourceTree = ""; }; + B3982A0829239F4700A82429 /* codereview.settings */ = {isa = PBXFileReference; lastKnownFileType = text; path = codereview.settings; sourceTree = ""; }; + B3982A0929239F4700A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3982A0A29239F4700A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3982A0B29239F4700A82429 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B3982A0C29239F4700A82429 /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + B3982A0D29239F4700A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3982A0F29239F4700A82429 /* run-checks.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "run-checks.sh"; sourceTree = ""; }; + B3982A1129239F4700A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3982A1329239F4700A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3982A1429239F4700A82429 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3982A1529239F4700A82429 /* test_breakpad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_breakpad.cpp; sourceTree = ""; }; + B3982A1629239F4700A82429 /* common-functions.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "common-functions.sh"; sourceTree = ""; }; + B3982A1729239F4700A82429 /* test-driver */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "test-driver"; sourceTree = ""; }; + B3982A1829239F4700A82429 /* test-shell.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "test-shell.sh"; sourceTree = ""; }; + B3982A1A29239F4700A82429 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3982A1C29239F4700A82429 /* travis-checkout.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "travis-checkout.sh"; sourceTree = ""; }; + B3982A1D29239F4700A82429 /* travis-build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "travis-build.sh"; sourceTree = ""; }; + B3982A1E29239F4700A82429 /* .clang-format */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".clang-format"; sourceTree = ""; }; + B3982A2029239F4700A82429 /* mistaken-pull-closer.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "mistaken-pull-closer.yml"; sourceTree = ""; }; + B3982A2129239F4700A82429 /* OWNERS */ = {isa = PBXFileReference; lastKnownFileType = text; path = OWNERS; sourceTree = ""; }; + B3982A2329239F4700A82429 /* ltversion.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltversion.m4; sourceTree = ""; }; + B3982A2429239F4700A82429 /* libtool.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = libtool.m4; sourceTree = ""; }; + B3982A2529239F4700A82429 /* ltoptions.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltoptions.m4; sourceTree = ""; }; + B3982A2629239F4700A82429 /* ltsugar.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltsugar.m4; sourceTree = ""; }; + B3982A2729239F4700A82429 /* ax_append_compile_flags.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_append_compile_flags.m4; sourceTree = ""; }; + B3982A2829239F4700A82429 /* ax_check_define.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_check_define.m4; sourceTree = ""; }; + B3982A2929239F4700A82429 /* ax_check_compile_flag.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_check_compile_flag.m4; sourceTree = ""; }; + B3982A2A29239F4700A82429 /* ax_require_defined.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_require_defined.m4; sourceTree = ""; }; + B3982A2B29239F4700A82429 /* ax_cxx_compile_stdcxx.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_cxx_compile_stdcxx.m4; sourceTree = ""; }; + B3982A2C29239F4700A82429 /* ax_pthread.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_pthread.m4; sourceTree = ""; }; + B3982A2D29239F4700A82429 /* ax_append_flag.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_append_flag.m4; sourceTree = ""; }; + B3982A2E29239F4700A82429 /* lt~obsolete.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lt~obsolete.m4"; sourceTree = ""; }; + B3982A2F29239F4700A82429 /* DEPS */ = {isa = PBXFileReference; lastKnownFileType = text; path = DEPS; sourceTree = ""; }; + B3982A3029239F4700A82429 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3982A3129239F4700A82429 /* default.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = default.xml; sourceTree = ""; }; + B3982A3229239F4700A82429 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3982A3329239F4700A82429 /* aclocal.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = aclocal.m4; sourceTree = ""; }; + B3982A3429239F4700A82429 /* breakpad-client.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "breakpad-client.pc.in"; sourceTree = ""; }; + B3982A3829239F4700A82429 /* deps-to-manifest.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "deps-to-manifest.py"; sourceTree = ""; }; + B3982A3A29239F4700A82429 /* filter_syms_unittest.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = filter_syms_unittest.py; sourceTree = ""; }; + B3982A3B29239F4700A82429 /* filter_syms.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = filter_syms.py; sourceTree = ""; }; + B3982A3E29239F4700A82429 /* symupload.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = symupload.mm; sourceTree = ""; }; + B3982A3F29239F4700A82429 /* symupload.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = symupload.xcodeproj; sourceTree = ""; }; + B3982A4329239F4700A82429 /* arch_constants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arch_constants.h; sourceTree = ""; }; + B3982A4429239F4700A82429 /* upload_system_symbols.go */ = {isa = PBXFileReference; lastKnownFileType = text; path = upload_system_symbols.go; sourceTree = ""; }; + B3982A4529239F4700A82429 /* arch_reader.go */ = {isa = PBXFileReference; lastKnownFileType = text; path = arch_reader.go; sourceTree = ""; }; + B3982A4729239F4700A82429 /* on_demand_symbol_supplier.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = on_demand_symbol_supplier.mm; sourceTree = ""; }; + B3982A4829239F4700A82429 /* crash_report.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = crash_report.xcodeproj; sourceTree = ""; }; + B3982A4B29239F4700A82429 /* crash_report.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = crash_report.mm; sourceTree = ""; }; + B3982A4C29239F4700A82429 /* on_demand_symbol_supplier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = on_demand_symbol_supplier.h; sourceTree = ""; }; + B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = dump_syms.xcodeproj; sourceTree = ""; }; + B3982A5129239F4800A82429 /* macho_dump.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = macho_dump.cc; sourceTree = ""; }; + B3982A5229239F4800A82429 /* dump_syms_tool.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms_tool.cc; sourceTree = ""; }; + B3982A5329239F4800A82429 /* tools_mac.gypi */ = {isa = PBXFileReference; lastKnownFileType = text; path = tools_mac.gypi; sourceTree = ""; }; + B3982A5629239F4800A82429 /* core_handler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core_handler.cc; sourceTree = ""; }; + B3982A5829239F4800A82429 /* minidump_upload.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_upload.cc; sourceTree = ""; }; + B3982A5929239F4800A82429 /* sym_upload.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sym_upload.cc; sourceTree = ""; }; + B3982A5A29239F4800A82429 /* tools_linux.gypi */ = {isa = PBXFileReference; lastKnownFileType = text; path = tools_linux.gypi; sourceTree = ""; }; + B3982A5C29239F4800A82429 /* minidump_memory_range.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_memory_range.h; sourceTree = ""; }; + B3982A5D29239F4800A82429 /* minidump-2-core.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "minidump-2-core.cc"; sourceTree = ""; }; + B3982A5E29239F4800A82429 /* minidump_memory_range_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_memory_range_unittest.cc; sourceTree = ""; }; + B3982A6029239F4800A82429 /* dump_syms.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms.cc; sourceTree = ""; }; + B3982A6229239F4800A82429 /* pid2md.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pid2md.cc; sourceTree = ""; }; + B3982A6429239F4800A82429 /* core2md.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core2md.cc; sourceTree = ""; }; + B3982A6529239F4800A82429 /* tools.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = tools.gyp; sourceTree = ""; }; + B3982A6829239F4800A82429 /* symupload.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = symupload.cc; sourceTree = ""; }; + B3982A6929239F4800A82429 /* symupload.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = symupload.gyp; sourceTree = ""; }; + B3982A6A29239F4800A82429 /* refresh_binaries.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = refresh_binaries.bat; sourceTree = ""; }; + B3982A6B29239F4800A82429 /* tools_windows.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = tools_windows.gyp; sourceTree = ""; }; + B3982A6D29239F4800A82429 /* ms_symbol_server_converter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ms_symbol_server_converter.h; sourceTree = ""; }; + B3982A6E29239F4800A82429 /* ms_symbol_server_converter.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ms_symbol_server_converter.cc; sourceTree = ""; }; + B3982A6F29239F4800A82429 /* ms_symbol_server_converter.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = ms_symbol_server_converter.gyp; sourceTree = ""; }; + B3982A7129239F4800A82429 /* dump_syms.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = dump_syms.exe; sourceTree = ""; }; + B3982A7229239F4800A82429 /* symupload.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = symupload.exe; sourceTree = ""; }; + B3982A7529239F4800A82429 /* omap_reorder_bbs.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = omap_reorder_bbs.sym; sourceTree = ""; }; + B3982A7629239F4800A82429 /* dump_syms_regtest64.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = dump_syms_regtest64.sym; sourceTree = ""; }; + B3982A7729239F4800A82429 /* omap_stretched.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = omap_stretched.sym; sourceTree = ""; }; + B3982A7829239F4800A82429 /* omap_stretched_filled.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = omap_stretched_filled.sym; sourceTree = ""; }; + B3982A7929239F4800A82429 /* omap_reorder_funcs.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = omap_reorder_funcs.pdb; sourceTree = ""; }; + B3982A7A29239F4800A82429 /* dump_syms_regtest.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = dump_syms_regtest.sym; sourceTree = ""; }; + B3982A7B29239F4800A82429 /* pe_only_symbol_test.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = pe_only_symbol_test.dll; sourceTree = ""; }; + B3982A7C29239F4800A82429 /* dump_syms_regtest.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = dump_syms_regtest.pdb; sourceTree = ""; }; + B3982A7D29239F4800A82429 /* omap_stretched_filled.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = omap_stretched_filled.pdb; sourceTree = ""; }; + B3982A7E29239F4800A82429 /* omap_reorder_funcs.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = omap_reorder_funcs.sym; sourceTree = ""; }; + B3982A7F29239F4800A82429 /* pe_only_symbol_test.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = pe_only_symbol_test.sym; sourceTree = ""; }; + B3982A8029239F4800A82429 /* dump_syms_regtest64.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = dump_syms_regtest64.exe; sourceTree = ""; }; + B3982A8129239F4800A82429 /* omap_stretched.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = omap_stretched.pdb; sourceTree = ""; }; + B3982A8229239F4800A82429 /* dump_syms_regtest64.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = dump_syms_regtest64.pdb; sourceTree = ""; }; + B3982A8329239F4800A82429 /* dump_syms_regtest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms_regtest.cc; sourceTree = ""; }; + B3982A8429239F4800A82429 /* omap_reorder_bbs.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = omap_reorder_bbs.pdb; sourceTree = ""; }; + B3982A8529239F4800A82429 /* dump_syms.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = dump_syms.gyp; sourceTree = ""; }; + B3982A8629239F4800A82429 /* dump_syms.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms.cc; sourceTree = ""; }; + B3982A8729239F4800A82429 /* run_regtest.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = run_regtest.sh; sourceTree = ""; }; + B3982A8829239F4800A82429 /* dump_syms_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms_unittest.cc; sourceTree = ""; }; + B3982A8A29239F4800A82429 /* http_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http_client.h; sourceTree = ""; }; + B3982A8B29239F4800A82429 /* wininet_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wininet_client.h; sourceTree = ""; }; + B3982A8C29239F4800A82429 /* http_download.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http_download.h; sourceTree = ""; }; + B3982A8D29239F4800A82429 /* wininet_client.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wininet_client.cc; sourceTree = ""; }; + B3982A8E29239F4800A82429 /* converter.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = converter.gyp; sourceTree = ""; }; + B3982A8F29239F4800A82429 /* winhttp_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = winhttp_client.h; sourceTree = ""; }; + B3982A9029239F4800A82429 /* tokenizer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tokenizer.cc; sourceTree = ""; }; + B3982A9129239F4800A82429 /* tokenizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tokenizer.h; sourceTree = ""; }; + B3982A9229239F4800A82429 /* escaping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = escaping.h; sourceTree = ""; }; + B3982A9329239F4800A82429 /* winsymconv_test.cmd */ = {isa = PBXFileReference; lastKnownFileType = text; path = winsymconv_test.cmd; sourceTree = ""; }; + B3982A9429239F4800A82429 /* http_download.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = http_download.cc; sourceTree = ""; }; + B3982A9529239F4800A82429 /* converter.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = converter.cc; sourceTree = ""; }; + B3982A9629239F4800A82429 /* symsrv.yes */ = {isa = PBXFileReference; lastKnownFileType = text; path = symsrv.yes; sourceTree = ""; }; + B3982A9729239F4800A82429 /* missing_symbols_test.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = missing_symbols_test.txt; sourceTree = ""; }; + B3982A9829239F4800A82429 /* winhttp_client.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = winhttp_client.cc; sourceTree = ""; }; + B3982A9929239F4800A82429 /* winsymconv.cmd */ = {isa = PBXFileReference; lastKnownFileType = text; path = winsymconv.cmd; sourceTree = ""; }; + B3982A9A29239F4800A82429 /* escaping.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = escaping.cc; sourceTree = ""; }; + B3982A9B29239F4800A82429 /* configure.cmd */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.cmd; sourceTree = ""; }; + B3982A9F29239F4800A82429 /* dump_syms_regtest.stabs */ = {isa = PBXFileReference; lastKnownFileType = text; path = dump_syms_regtest.stabs; sourceTree = ""; }; + B3982AA029239F4800A82429 /* dump_syms_regtest.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = dump_syms_regtest.sym; sourceTree = ""; }; + B3982AA129239F4800A82429 /* dump_syms_regtest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms_regtest.cc; sourceTree = ""; }; + B3982AA229239F4800A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3982AA329239F4800A82429 /* dump_syms.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms.cc; sourceTree = ""; }; + B3982AA429239F4800A82429 /* run_regtest.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = run_regtest.sh; sourceTree = ""; }; + B3982AA529239F4800A82429 /* breakpad_googletest_includes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = breakpad_googletest_includes.h; sourceTree = ""; }; + B3982AA729239F4800A82429 /* stackwalker_arm64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_arm64.cc; sourceTree = ""; }; + B3982AA829239F4800A82429 /* fast_source_line_resolver_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fast_source_line_resolver_types.h; sourceTree = ""; }; + B3982AA929239F4800A82429 /* exploitability_linux.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exploitability_linux.cc; sourceTree = ""; }; + B3982AAA29239F4800A82429 /* microdump.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = microdump.cc; sourceTree = ""; }; + B3982AAB29239F4800A82429 /* fast_source_line_resolver.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fast_source_line_resolver.cc; sourceTree = ""; }; + B3982AAC29239F4800A82429 /* address_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = address_map.h; sourceTree = ""; }; + B3982AAE29239F4800A82429 /* linux_jmp_to_module_not_exe_region.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_jmp_to_module_not_exe_region.dmp; sourceTree = ""; }; + B3982AAF29239F4800A82429 /* read_av_clobber_write.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = read_av_clobber_write.dmp; sourceTree = ""; }; + B3982AB029239F4800A82429 /* null_read_av.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = null_read_av.dmp; sourceTree = ""; }; + B3982AB129239F4800A82429 /* linux_stack_pointer_in_stack_alt_name.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_stack_pointer_in_stack_alt_name.dmp; sourceTree = ""; }; + B3982AB229239F4800A82429 /* module4_bad.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = module4_bad.out; sourceTree = ""; }; + B3982AB329239F4800A82429 /* linux_executable_heap.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_executable_heap.dmp; sourceTree = ""; }; + B3982AB429239F4800A82429 /* minidump2.stackwalk.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = minidump2.stackwalk.out; sourceTree = ""; }; + B3982AB529239F4800A82429 /* test_app.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_app.cc; sourceTree = ""; }; + B3982AB629239F4800A82429 /* linux_inside_module_exe_region1.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_inside_module_exe_region1.dmp; sourceTree = ""; }; + B3982AB729239F4800A82429 /* read_av_non_null.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = read_av_non_null.dmp; sourceTree = ""; }; + B3982AB829239F4800A82429 /* write_av_non_null.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = write_av_non_null.dmp; sourceTree = ""; }; + B3982AB929239F4800A82429 /* ascii_read_av.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_read_av.dmp; sourceTree = ""; }; + B3982ABA29239F4800A82429 /* linux_inside_module_exe_region2.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_inside_module_exe_region2.dmp; sourceTree = ""; }; + B3982ABB29239F4800A82429 /* linux_null_read_av.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_null_read_av.dmp; sourceTree = ""; }; + B3982ABC29239F4800A82429 /* minidump2.stackwalk.machine_readable.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = minidump2.stackwalk.machine_readable.out; sourceTree = ""; }; + B3982ABD29239F4800A82429 /* read_av_conditional.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = read_av_conditional.dmp; sourceTree = ""; }; + B3982ABE29239F4800A82429 /* exec_av_on_stack.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = exec_av_on_stack.dmp; sourceTree = ""; }; + B3982ABF29239F4800A82429 /* minidump2.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = minidump2.dmp; sourceTree = ""; }; + B3982AC029239F4800A82429 /* linux_divide_by_zero.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_divide_by_zero.dmp; sourceTree = ""; }; + B3982AC129239F4800A82429 /* microdump-arm64.dmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump-arm64.dmp"; sourceTree = ""; }; + B3982AC229239F4800A82429 /* null_write_av.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = null_write_av.dmp; sourceTree = ""; }; + B3982AC329239F4800A82429 /* microdump-mips32.dmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump-mips32.dmp"; sourceTree = ""; }; + B3982AC429239F4800A82429 /* ascii_write_av.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_write_av.dmp; sourceTree = ""; }; + B3982AC529239F4800A82429 /* linux_write_to_nonwritable_module.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_write_to_nonwritable_module.dmp; sourceTree = ""; }; + B3982AC629239F4800A82429 /* ascii_read_av_conditional.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_read_av_conditional.dmp; sourceTree = ""; }; + B3982AC729239F4800A82429 /* ascii_read_av_block_write.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_read_av_block_write.dmp; sourceTree = ""; }; + B3982AC829239F4800A82429 /* linux_stack_pointer_in_module.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_stack_pointer_in_module.dmp; sourceTree = ""; }; + B3982AC929239F4800A82429 /* linux_overflow.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_overflow.dmp; sourceTree = ""; }; + B3982ACA29239F4800A82429 /* minidump_32bit_crash_addr.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = minidump_32bit_crash_addr.dmp; sourceTree = ""; }; + B3982ACB29239F4800A82429 /* microdump-withcrashreason.dmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump-withcrashreason.dmp"; sourceTree = ""; }; + B3982ACC29239F4800A82429 /* ascii_read_av_clobber_write.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_read_av_clobber_write.dmp; sourceTree = ""; }; + B3982ACD29239F4800A82429 /* linux_stack_pointer_in_stack.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_stack_pointer_in_stack.dmp; sourceTree = ""; }; + B3982ACE29239F4800A82429 /* module3_bad.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = module3_bad.out; sourceTree = ""; }; + B3982ACF29239F4800A82429 /* linux_write_to_nonwritable_region_math.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_write_to_nonwritable_region_math.dmp; sourceTree = ""; }; + B3982AD029239F4800A82429 /* linux_write_to_outside_module.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_write_to_outside_module.dmp; sourceTree = ""; }; + B3982AD129239F4800A82429 /* linux_outside_module.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_outside_module.dmp; sourceTree = ""; }; + B3982AD229239F4800A82429 /* microdump.stackwalk.machine_readable-arm.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump.stackwalk.machine_readable-arm.out"; sourceTree = ""; }; + B3982AD329239F4800A82429 /* linux_write_to_under_4k.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_write_to_under_4k.dmp; sourceTree = ""; }; + B3982AD429239F4800A82429 /* linux_write_to_outside_module_via_math.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_write_to_outside_module_via_math.dmp; sourceTree = ""; }; + B3982AD529239F4800A82429 /* linux_executable_stack.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_executable_stack.dmp; sourceTree = ""; }; + B3982AD629239F4800A82429 /* microdump.stackwalk-arm64.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump.stackwalk-arm64.out"; sourceTree = ""; }; + B3982AD729239F4800A82429 /* linux_inline.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_inline.dmp; sourceTree = ""; }; + B3982AD829239F4800A82429 /* ascii_write_av_arg_to_call.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_write_av_arg_to_call.dmp; sourceTree = ""; }; + B3982AD929239F4800A82429 /* linux_null_dereference.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_null_dereference.dmp; sourceTree = ""; }; + B3982ADA29239F4800A82429 /* microdump.stackwalk-arm.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump.stackwalk-arm.out"; sourceTree = ""; }; + B3982ADB29239F4800A82429 /* microdump-x86.dmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump-x86.dmp"; sourceTree = ""; }; + B3982ADF29239F4800A82429 /* kernel32.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = kernel32.sym; sourceTree = ""; }; + B3982AE229239F4800A82429 /* libgcc_s.so.1.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = libgcc_s.so.1.sym; sourceTree = ""; }; + B3982AE529239F4800A82429 /* test_app.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = test_app.sym; sourceTree = ""; }; + B3982AE829239F4800A82429 /* overflow.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = overflow.sym; sourceTree = ""; }; + B3982AEB29239F4800A82429 /* null_read_av.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = null_read_av.sym; sourceTree = ""; }; + B3982AEF29239F4800A82429 /* crash_example.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = crash_example.sym; sourceTree = ""; }; + B3982AF129239F4800A82429 /* crash_example.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = crash_example.sym; sourceTree = ""; }; + B3982AF429239F4800A82429 /* breakpad_unittests.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = breakpad_unittests.sym; sourceTree = ""; }; + B3982AF629239F4800A82429 /* breakpad_unittests.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = breakpad_unittests.sym; sourceTree = ""; }; + B3982AF929239F4800A82429 /* linux_inline.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = linux_inline.sym; sourceTree = ""; }; + B3982AFA29239F4800A82429 /* microdump.stackwalk.machine_readable-arm64.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump.stackwalk.machine_readable-arm64.out"; sourceTree = ""; }; + B3982AFB29239F4800A82429 /* microdump-arm.dmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump-arm.dmp"; sourceTree = ""; }; + B3982AFC29239F4800A82429 /* linux_stacksmash.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_stacksmash.dmp; sourceTree = ""; }; + B3982AFD29239F4800A82429 /* linux_raise_sigabrt.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_raise_sigabrt.dmp; sourceTree = ""; }; + B3982AFE29239F4800A82429 /* microdump-mips64.dmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump-mips64.dmp"; sourceTree = ""; }; + B3982AFF29239F4800A82429 /* stack_exhaustion.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = stack_exhaustion.dmp; sourceTree = ""; }; + B3982B0029239F4800A82429 /* linux_test_app.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_test_app.cc; sourceTree = ""; }; + B3982B0129239F4800A82429 /* ascii_read_av_then_jmp.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_read_av_then_jmp.dmp; sourceTree = ""; }; + B3982B0229239F4800A82429 /* module2.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = module2.out; sourceTree = ""; }; + B3982B0329239F4800A82429 /* minidump2.dump.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = minidump2.dump.out; sourceTree = ""; }; + B3982B0429239F4800A82429 /* microdump-multiple.dmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microdump-multiple.dmp"; sourceTree = ""; }; + B3982B0529239F4800A82429 /* module0.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = module0.out; sourceTree = ""; }; + B3982B0629239F4800A82429 /* ascii_read_av_xchg_write.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = ascii_read_av_xchg_write.dmp; sourceTree = ""; }; + B3982B0729239F4800A82429 /* module1.out */ = {isa = PBXFileReference; lastKnownFileType = text; path = module1.out; sourceTree = ""; }; + B3982B0829239F4800A82429 /* linux_jmp_to_0.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = linux_jmp_to_0.dmp; sourceTree = ""; }; + B3982B0929239F4800A82429 /* source_line_resolver_base_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = source_line_resolver_base_types.h; sourceTree = ""; }; + B3982B0A29239F4800A82429 /* synth_minidump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = synth_minidump.h; sourceTree = ""; }; + B3982B0B29239F4800A82429 /* stackwalker_x86_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_x86_unittest.cc; sourceTree = ""; }; + B3982B0C29239F4800A82429 /* proc_maps_linux_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = proc_maps_linux_unittest.cc; sourceTree = ""; }; + B3982B0D29239F4800A82429 /* static_contained_range_map-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "static_contained_range_map-inl.h"; sourceTree = ""; }; + B3982B0E29239F4800A82429 /* cfi_frame_info.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfi_frame_info.cc; sourceTree = ""; }; + B3982B0F29239F4800A82429 /* stackwalker_amd64_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_amd64_unittest.cc; sourceTree = ""; }; + B3982B1029239F4800A82429 /* synth_minidump_unittest_data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = synth_minidump_unittest_data.h; sourceTree = ""; }; + B3982B1129239F4800A82429 /* static_map-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "static_map-inl.h"; sourceTree = ""; }; + B3982B1229239F4800A82429 /* postfix_evaluator_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = postfix_evaluator_unittest.cc; sourceTree = ""; }; + B3982B1329239F4800A82429 /* module_serializer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = module_serializer.cc; sourceTree = ""; }; + B3982B1429239F4800A82429 /* static_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_map.h; sourceTree = ""; }; + B3982B1529239F4800A82429 /* stackwalker_selftest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_selftest.cc; sourceTree = ""; }; + B3982B1629239F4800A82429 /* minidump_stackwalk_machine_readable_test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = minidump_stackwalk_machine_readable_test; sourceTree = ""; }; + B3982B1729239F4800A82429 /* dump_object.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_object.cc; sourceTree = ""; }; + B3982B1829239F4800A82429 /* minidump.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump.cc; sourceTree = ""; }; + B3982B1929239F4800A82429 /* postfix_evaluator-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "postfix_evaluator-inl.h"; sourceTree = ""; }; + B3982B1B29239F4800A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3982B1C29239F4800A82429 /* process_state.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = process_state.proto; sourceTree = ""; }; + B3982B1D29239F4800A82429 /* postfix_evaluator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = postfix_evaluator.h; sourceTree = ""; }; + B3982B1E29239F4800A82429 /* stackwalker_address_list_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_address_list_unittest.cc; sourceTree = ""; }; + B3982B1F29239F4800A82429 /* microdump_stackwalk_machine_readable_test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = microdump_stackwalk_machine_readable_test; sourceTree = ""; }; + B3982B2029239F4800A82429 /* tokenize.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tokenize.cc; sourceTree = ""; }; + B3982B2129239F4800A82429 /* stackwalker_ppc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_ppc.h; sourceTree = ""; }; + B3982B2229239F4800A82429 /* map_serializers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = map_serializers.h; sourceTree = ""; }; + B3982B2329239F4800A82429 /* microdump_processor.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = microdump_processor.cc; sourceTree = ""; }; + B3982B2429239F4800A82429 /* stackwalker_ppc64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_ppc64.cc; sourceTree = ""; }; + B3982B2529239F4800A82429 /* convert_old_arm64_context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = convert_old_arm64_context.h; sourceTree = ""; }; + B3982B2629239F4800A82429 /* disassembler_x86.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disassembler_x86.cc; sourceTree = ""; }; + B3982B2729239F4800A82429 /* microdump_stackwalk_test_vars */ = {isa = PBXFileReference; lastKnownFileType = text; path = microdump_stackwalk_test_vars; sourceTree = ""; }; + B3982B2829239F4800A82429 /* dump_context.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_context.cc; sourceTree = ""; }; + B3982B2929239F4800A82429 /* microdump_processor_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = microdump_processor_unittest.cc; sourceTree = ""; }; + B3982B2A29239F4800A82429 /* exploitability_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exploitability_linux.h; sourceTree = ""; }; + B3982B2B29239F4800A82429 /* basic_code_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = basic_code_module.h; sourceTree = ""; }; + B3982B2C29239F4800A82429 /* map_serializers-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "map_serializers-inl.h"; sourceTree = ""; }; + B3982B2D29239F4800A82429 /* contained_range_map_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = contained_range_map_unittest.cc; sourceTree = ""; }; + B3982B2E29239F4800A82429 /* basic_source_line_resolver_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = basic_source_line_resolver_types.h; sourceTree = ""; }; + B3982B2F29239F4800A82429 /* range_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = range_map.h; sourceTree = ""; }; + B3982B3029239F4800A82429 /* map_serializers_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = map_serializers_unittest.cc; sourceTree = ""; }; + B3982B3129239F4800A82429 /* cfi_frame_info-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "cfi_frame_info-inl.h"; sourceTree = ""; }; + B3982B3229239F4800A82429 /* processor.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = processor.gyp; sourceTree = ""; }; + B3982B3329239F4800A82429 /* basic_code_modules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = basic_code_modules.h; sourceTree = ""; }; + B3982B3429239F4800A82429 /* stackwalker_mips64_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_mips64_unittest.cc; sourceTree = ""; }; + B3982B3529239F4800A82429 /* static_map_iterator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_map_iterator.h; sourceTree = ""; }; + B3982B3629239F4800A82429 /* stackwalker_arm64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_arm64.h; sourceTree = ""; }; + B3982B3729239F4800A82429 /* tokenize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tokenize.h; sourceTree = ""; }; + B3982B3829239F4800A82429 /* static_range_map_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = static_range_map_unittest.cc; sourceTree = ""; }; + B3982B3929239F4800A82429 /* linked_ptr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linked_ptr.h; sourceTree = ""; }; + B3982B3A29239F4800A82429 /* synth_minidump_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = synth_minidump_unittest.cc; sourceTree = ""; }; + B3982B3B29239F4800A82429 /* stackwalker_arm_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_arm_unittest.cc; sourceTree = ""; }; + B3982B3C29239F4800A82429 /* pathname_stripper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pathname_stripper.h; sourceTree = ""; }; + B3982B3D29239F4800A82429 /* stackwalker_sparc.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_sparc.cc; sourceTree = ""; }; + B3982B3E29239F4800A82429 /* static_contained_range_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_contained_range_map.h; sourceTree = ""; }; + B3982B3F29239F4800A82429 /* stackwalker_unittest_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_unittest_utils.h; sourceTree = ""; }; + B3982B4029239F4800A82429 /* module_serializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = module_serializer.h; sourceTree = ""; }; + B3982B4129239F4800A82429 /* exploitability_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exploitability_unittest.cc; sourceTree = ""; }; + B3982B4229239F4800A82429 /* static_address_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_address_map.h; sourceTree = ""; }; + B3982B4329239F4800A82429 /* stackwalker_selftest_sol.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = stackwalker_selftest_sol.s; sourceTree = ""; }; + B3982B4429239F4800A82429 /* logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logging.h; sourceTree = ""; }; + B3982B4529239F4800A82429 /* minidump_stackwalk_test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = minidump_stackwalk_test; sourceTree = ""; }; + B3982B4629239F4800A82429 /* process_state.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = process_state.cc; sourceTree = ""; }; + B3982B4729239F4800A82429 /* stackwalker_ppc.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_ppc.cc; sourceTree = ""; }; + B3982B4829239F4800A82429 /* exploitability.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exploitability.cc; sourceTree = ""; }; + B3982B4929239F4800A82429 /* simple_symbol_supplier.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = simple_symbol_supplier.cc; sourceTree = ""; }; + B3982B4A29239F4800A82429 /* minidump_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_unittest.cc; sourceTree = ""; }; + B3982B4B29239F4800A82429 /* microdump_stackwalk.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = microdump_stackwalk.cc; sourceTree = ""; }; + B3982B4C29239F4800A82429 /* static_address_map-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "static_address_map-inl.h"; sourceTree = ""; }; + B3982B4D29239F4800A82429 /* static_map_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = static_map_unittest.cc; sourceTree = ""; }; + B3982B4E29239F4800A82429 /* stack_frame_symbolizer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stack_frame_symbolizer.cc; sourceTree = ""; }; + B3982B4F29239F4800A82429 /* static_range_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_range_map.h; sourceTree = ""; }; + B3982B5029239F4800A82429 /* static_range_map-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "static_range_map-inl.h"; sourceTree = ""; }; + B3982B5129239F4800A82429 /* cfi_frame_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfi_frame_info.h; sourceTree = ""; }; + B3982B5229239F4800A82429 /* static_contained_range_map_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = static_contained_range_map_unittest.cc; sourceTree = ""; }; + B3982B5329239F4800A82429 /* module_factory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = module_factory.h; sourceTree = ""; }; + B3982B5429239F4800A82429 /* simple_symbol_supplier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = simple_symbol_supplier.h; sourceTree = ""; }; + B3982B5529239F4800A82429 /* static_address_map_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = static_address_map_unittest.cc; sourceTree = ""; }; + B3982B5629239F4800A82429 /* address_map-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "address_map-inl.h"; sourceTree = ""; }; + B3982B5729239F4800A82429 /* module_comparer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = module_comparer.cc; sourceTree = ""; }; + B3982B5829239F4800A82429 /* stackwalker_amd64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_amd64.cc; sourceTree = ""; }; + B3982B5929239F4800A82429 /* exploitability_win.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exploitability_win.cc; sourceTree = ""; }; + B3982B5A29239F4800A82429 /* contained_range_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = contained_range_map.h; sourceTree = ""; }; + B3982B5B29239F4800A82429 /* pathname_stripper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pathname_stripper.cc; sourceTree = ""; }; + B3982B5C29239F4800A82429 /* range_map-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "range_map-inl.h"; sourceTree = ""; }; + B3982B5D29239F4800A82429 /* stackwalker_address_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_address_list.h; sourceTree = ""; }; + B3982B5E29239F4800A82429 /* module_comparer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = module_comparer.h; sourceTree = ""; }; + B3982B5F29239F4800A82429 /* stackwalker_address_list.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_address_list.cc; sourceTree = ""; }; + B3982B6029239F4800A82429 /* stackwalker_arm.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_arm.cc; sourceTree = ""; }; + B3982B6129239F4800A82429 /* cfi_frame_info_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfi_frame_info_unittest.cc; sourceTree = ""; }; + B3982B6229239F4800A82429 /* range_map_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = range_map_unittest.cc; sourceTree = ""; }; + B3982B6329239F4800A82429 /* convert_old_arm64_context.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = convert_old_arm64_context.cc; sourceTree = ""; }; + B3982B6429239F4800A82429 /* stackwalker_ppc64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_ppc64.h; sourceTree = ""; }; + B3982B6529239F4800A82429 /* stack_frame_cpu.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stack_frame_cpu.cc; sourceTree = ""; }; + B3982B6629239F4800A82429 /* minidump_processor.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_processor.cc; sourceTree = ""; }; + B3982B6729239F4800A82429 /* stackwalk_common.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalk_common.cc; sourceTree = ""; }; + B3982B6829239F4800A82429 /* basic_source_line_resolver_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = basic_source_line_resolver_unittest.cc; sourceTree = ""; }; + B3982B6929239F4800A82429 /* exploitability_win.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exploitability_win.h; sourceTree = ""; }; + B3982B6A29239F4800A82429 /* processor_tools.gypi */ = {isa = PBXFileReference; lastKnownFileType = text; path = processor_tools.gypi; sourceTree = ""; }; + B3982B6B29239F4800A82429 /* stackwalker.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker.cc; sourceTree = ""; }; + B3982B6C29239F4800A82429 /* stackwalker_mips.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_mips.cc; sourceTree = ""; }; + B3982B6D29239F4800A82429 /* microdump_stackwalk_test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = microdump_stackwalk_test; sourceTree = ""; }; + B3982B6E29239F4800A82429 /* symbolic_constants_win.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbolic_constants_win.h; sourceTree = ""; }; + B3982B6F29239F4800A82429 /* basic_source_line_resolver.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = basic_source_line_resolver.cc; sourceTree = ""; }; + B3982B7029239F4800A82429 /* minidump_processor_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_processor_unittest.cc; sourceTree = ""; }; + B3982B7129239F4800A82429 /* fast_source_line_resolver_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fast_source_line_resolver_unittest.cc; sourceTree = ""; }; + B3982B7229239F4800A82429 /* range_map_truncate_lower_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = range_map_truncate_lower_unittest.cc; sourceTree = ""; }; + B3982B7329239F4800A82429 /* address_map_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = address_map_unittest.cc; sourceTree = ""; }; + B3982B7429239F4800A82429 /* logging.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = logging.cc; sourceTree = ""; }; + B3982B7529239F4800A82429 /* stackwalker_amd64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_amd64.h; sourceTree = ""; }; + B3982B7629239F4800A82429 /* source_line_resolver_base.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = source_line_resolver_base.cc; sourceTree = ""; }; + B3982B7729239F4800A82429 /* synth_minidump.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = synth_minidump.cc; sourceTree = ""; }; + B3982B7829239F4800A82429 /* stackwalker_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_arm.h; sourceTree = ""; }; + B3982B7929239F4800A82429 /* symbolic_constants_win.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = symbolic_constants_win.cc; sourceTree = ""; }; + B3982B7A29239F4800A82429 /* minidump_dump_test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = minidump_dump_test; sourceTree = ""; }; + B3982B7B29239F4800A82429 /* range_map_truncate_upper_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = range_map_truncate_upper_unittest.cc; sourceTree = ""; }; + B3982B7C29239F4800A82429 /* contained_range_map-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "contained_range_map-inl.h"; sourceTree = ""; }; + B3982B7D29239F4800A82429 /* stackwalker_arm64_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_arm64_unittest.cc; sourceTree = ""; }; + B3982B7E29239F4800A82429 /* stackwalker_sparc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_sparc.h; sourceTree = ""; }; + B3982B7F29239F4800A82429 /* pathname_stripper_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pathname_stripper_unittest.cc; sourceTree = ""; }; + B3982B8029239F4800A82429 /* basic_code_modules.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = basic_code_modules.cc; sourceTree = ""; }; + B3982B8129239F4800A82429 /* proc_maps_linux.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = proc_maps_linux.cc; sourceTree = ""; }; + B3982B8229239F4800A82429 /* simple_serializer-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "simple_serializer-inl.h"; sourceTree = ""; }; + B3982B8329239F4800A82429 /* call_stack.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = call_stack.cc; sourceTree = ""; }; + B3982B8429239F4800A82429 /* static_map_iterator-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "static_map_iterator-inl.h"; sourceTree = ""; }; + B3982B8529239F4800A82429 /* simple_serializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = simple_serializer.h; sourceTree = ""; }; + B3982B8629239F4800A82429 /* stackwalk_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalk_common.h; sourceTree = ""; }; + B3982B8729239F4800A82429 /* stackwalker_x86.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_x86.cc; sourceTree = ""; }; + B3982B8829239F4800A82429 /* stackwalker_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_x86.h; sourceTree = ""; }; + B3982B8929239F4800A82429 /* windows_frame_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = windows_frame_info.h; sourceTree = ""; }; + B3982B8A29239F4800A82429 /* disassembler_x86_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disassembler_x86_unittest.cc; sourceTree = ""; }; + B3982B8B29239F4800A82429 /* stackwalker_mips_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stackwalker_mips_unittest.cc; sourceTree = ""; }; + B3982B8C29239F4800A82429 /* minidump_stackwalk.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_stackwalk.cc; sourceTree = ""; }; + B3982B8D29239F4800A82429 /* stackwalker_mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker_mips.h; sourceTree = ""; }; + B3982B8E29239F4800A82429 /* minidump_dump.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_dump.cc; sourceTree = ""; }; + B3982B8F29239F4800A82429 /* disassembler_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disassembler_x86.h; sourceTree = ""; }; + B3982B9029239F4800A82429 /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.h.in; sourceTree = ""; }; + B3982B9229239F4800A82429 /* module_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = module_unittest.cc; sourceTree = ""; }; + B3982B9329239F4800A82429 /* dwarf_cu_to_module_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf_cu_to_module_unittest.cc; sourceTree = ""; }; + B3982B9429239F4800A82429 /* scoped_ptr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scoped_ptr.h; sourceTree = ""; }; + B3982B9529239F4800A82429 /* long_string_dictionary.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = long_string_dictionary.cc; sourceTree = ""; }; + B3982B9729239F4800A82429 /* func-line-pairing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "func-line-pairing.h"; sourceTree = ""; }; + B3982B9829239F4800A82429 /* test_assembler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_assembler.cc; sourceTree = ""; }; + B3982B9929239F4800A82429 /* common.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = common.gyp; sourceTree = ""; }; + B3982B9A29239F4800A82429 /* module.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = module.cc; sourceTree = ""; }; + B3982B9B29239F4800A82429 /* memory_range_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_range_unittest.cc; sourceTree = ""; }; + B3982B9C29239F4800A82429 /* md5.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = md5.cc; sourceTree = ""; }; + B3982B9D29239F4800A82429 /* long_string_dictionary_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = long_string_dictionary_unittest.cc; sourceTree = ""; }; + B3982B9E29239F4800A82429 /* stabs_to_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stabs_to_module.h; sourceTree = ""; }; + B3982B9F29239F4800A82429 /* stdio_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdio_wrapper.h; sourceTree = ""; }; + B3982BA029239F4800A82429 /* convert_UTF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = convert_UTF.h; sourceTree = ""; }; + B3982BA129239F4800A82429 /* dwarf_cfi_to_module.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf_cfi_to_module.cc; sourceTree = ""; }; + B3982BA229239F4800A82429 /* stabs_reader.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stabs_reader.cc; sourceTree = ""; }; + B3982BA329239F4800A82429 /* dwarf_cfi_to_module_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf_cfi_to_module_unittest.cc; sourceTree = ""; }; + B3982BA429239F4800A82429 /* byte_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = byte_cursor.h; sourceTree = ""; }; + B3982BA529239F4800A82429 /* dwarf_cu_to_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf_cu_to_module.h; sourceTree = ""; }; + B3982BA629239F4800A82429 /* string_conversion.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = string_conversion.cc; sourceTree = ""; }; + B3982BA729239F4800A82429 /* simple_string_dictionary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = simple_string_dictionary.h; sourceTree = ""; }; + B3982BA829239F4800A82429 /* convert_UTF.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = convert_UTF.cc; sourceTree = ""; }; + B3982BA929239F4800A82429 /* test_assembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = test_assembler.h; sourceTree = ""; }; + B3982BAA29239F4800A82429 /* string_conversion_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = string_conversion_unittest.cc; sourceTree = ""; }; + B3982BAB29239F4800A82429 /* symbol_data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbol_data.h; sourceTree = ""; }; + B3982BAC29239F4800A82429 /* dwarf_line_to_module.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf_line_to_module.cc; sourceTree = ""; }; + B3982BAD29239F4800A82429 /* memory_allocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_allocator.h; sourceTree = ""; }; + B3982BAE29239F4800A82429 /* dwarf_cu_to_module.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf_cu_to_module.cc; sourceTree = ""; }; + B3982BAF29239F4800A82429 /* language.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = language.h; sourceTree = ""; }; + B3982BB029239F4800A82429 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3982BB129239F4800A82429 /* stabs_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stabs_reader.h; sourceTree = ""; }; + B3982BB329239F4800A82429 /* file_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_utils.h; sourceTree = ""; }; + B3982BB429239F4800A82429 /* file_utils.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file_utils.cc; sourceTree = ""; }; + B3982BB529239F4800A82429 /* auto_tempdir.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = auto_tempdir.h; sourceTree = ""; }; + B3982BB629239F4800A82429 /* path_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = path_helper.h; sourceTree = ""; }; + B3982BB729239F4800A82429 /* using_std_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = using_std_string.h; sourceTree = ""; }; + B3982BB829239F4800A82429 /* dwarf_line_to_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf_line_to_module.h; sourceTree = ""; }; + B3982BB929239F4800A82429 /* unordered.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unordered.h; sourceTree = ""; }; + B3982BBA29239F4800A82429 /* path_helper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = path_helper.cc; sourceTree = ""; }; + B3982BBB29239F4800A82429 /* language.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = language.cc; sourceTree = ""; }; + B3982BBC29239F4800A82429 /* test_assembler_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_assembler_unittest.cc; sourceTree = ""; }; + B3982BBE29239F4800A82429 /* functioninfo.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = functioninfo.cc; sourceTree = ""; }; + B3982BBF29239F4800A82429 /* dwarf2diehandler_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf2diehandler_unittest.cc; sourceTree = ""; }; + B3982BC029239F4800A82429 /* dwarf2diehandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf2diehandler.h; sourceTree = ""; }; + B3982BC129239F4800A82429 /* dwarf2reader_die_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf2reader_die_unittest.cc; sourceTree = ""; }; + B3982BC229239F4800A82429 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B3982BC329239F4800A82429 /* bytereader-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "bytereader-inl.h"; sourceTree = ""; }; + B3982BC429239F4800A82429 /* line_state_machine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = line_state_machine.h; sourceTree = ""; }; + B3982BC529239F4800A82429 /* functioninfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = functioninfo.h; sourceTree = ""; }; + B3982BC629239F4800A82429 /* bytereader.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bytereader.cc; sourceTree = ""; }; + B3982BC729239F4800A82429 /* elf_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf_reader.h; sourceTree = ""; }; + B3982BC829239F4800A82429 /* elf_reader.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf_reader.cc; sourceTree = ""; }; + B3982BC929239F4800A82429 /* cfi_assembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfi_assembler.h; sourceTree = ""; }; + B3982BCA29239F4800A82429 /* bytereader_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bytereader_unittest.cc; sourceTree = ""; }; + B3982BCB29239F4800A82429 /* dwarf2reader_cfi_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf2reader_cfi_unittest.cc; sourceTree = ""; }; + B3982BCC29239F4800A82429 /* dwarf2reader_lineinfo_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf2reader_lineinfo_unittest.cc; sourceTree = ""; }; + B3982BCD29239F4800A82429 /* dwarf2reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf2reader.h; sourceTree = ""; }; + B3982BCE29239F4800A82429 /* dwarf2enums.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf2enums.h; sourceTree = ""; }; + B3982BCF29239F4800A82429 /* dwarf2reader.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf2reader.cc; sourceTree = ""; }; + B3982BD029239F4800A82429 /* dwarf2reader_splitfunctions_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf2reader_splitfunctions_unittest.cc; sourceTree = ""; }; + B3982BD129239F4800A82429 /* dwarf2reader_test_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf2reader_test_common.h; sourceTree = ""; }; + B3982BD229239F4800A82429 /* dwarf2diehandler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf2diehandler.cc; sourceTree = ""; }; + B3982BD329239F4800A82429 /* cfi_assembler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfi_assembler.cc; sourceTree = ""; }; + B3982BD429239F4800A82429 /* bytereader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bytereader.h; sourceTree = ""; }; + B3982BD629239F4800A82429 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BreakpadRelease.xcconfig; sourceTree = ""; }; + B3982BD729239F4800A82429 /* macho_walker.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = macho_walker.cc; sourceTree = ""; }; + B3982BD829239F4800A82429 /* encoding_util.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = encoding_util.m; sourceTree = ""; }; + B3982BD929239F4800A82429 /* scoped_task_suspend-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "scoped_task_suspend-inl.h"; sourceTree = ""; }; + B3982BDA29239F4800A82429 /* bootstrap_compat.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bootstrap_compat.cc; sourceTree = ""; }; + B3982BDB29239F4800A82429 /* HTTPPutRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTTPPutRequest.m; sourceTree = ""; }; + B3982BDC29239F4800A82429 /* MachIPC.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MachIPC.mm; sourceTree = ""; }; + B3982BDD29239F4800A82429 /* SymbolCollectorClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SymbolCollectorClient.h; sourceTree = ""; }; + B3982BDE29239F4800A82429 /* arch_utilities.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arch_utilities.cc; sourceTree = ""; }; + B3982BDF29239F4800A82429 /* dump_syms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dump_syms.h; sourceTree = ""; }; + B3982BE029239F4800A82429 /* GTMLogger.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = ""; }; + B3982BE129239F4800A82429 /* HTTPSimplePostRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPSimplePostRequest.h; sourceTree = ""; }; + B3982BE229239F4800A82429 /* string_utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_utilities.h; sourceTree = ""; }; + B3982BE329239F4800A82429 /* HTTPRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTTPRequest.m; sourceTree = ""; }; + B3982BE429239F4800A82429 /* macho_id.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = macho_id.cc; sourceTree = ""; }; + B3982BE529239F4800A82429 /* launch_reporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = launch_reporter.h; sourceTree = ""; }; + B3982BE629239F4800A82429 /* file_id.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file_id.cc; sourceTree = ""; }; + B3982BE729239F4800A82429 /* MachIPC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MachIPC.h; sourceTree = ""; }; + B3982BE829239F4800A82429 /* Breakpad.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Breakpad.xcconfig; sourceTree = ""; }; + B3982BE929239F4800A82429 /* HTTPMultipartUpload.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTTPMultipartUpload.m; sourceTree = ""; }; + B3982BEA29239F4800A82429 /* HTTPGetRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTTPGetRequest.m; sourceTree = ""; }; + B3982BEB29239F4800A82429 /* macho_utilities.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = macho_utilities.cc; sourceTree = ""; }; + B3982BEC29239F4800A82429 /* HTTPPutRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPPutRequest.h; sourceTree = ""; }; + B3982BED29239F4800A82429 /* dump_syms.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_syms.cc; sourceTree = ""; }; + B3982BEE29239F4800A82429 /* launch_reporter.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = launch_reporter.cc; sourceTree = ""; }; + B3982BF029239F4800A82429 /* GTMSenTestCase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = ""; }; + B3982BF129239F4800A82429 /* GTMSenTestCase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCase.m; sourceTree = ""; }; + B3982BF229239F4800A82429 /* byteswap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = byteswap.h; sourceTree = ""; }; + B3982BF329239F4800A82429 /* encoding_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = encoding_util.h; sourceTree = ""; }; + B3982BF429239F4800A82429 /* macho_id.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macho_id.h; sourceTree = ""; }; + B3982BF529239F4800A82429 /* bootstrap_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bootstrap_compat.h; sourceTree = ""; }; + B3982BF629239F4800A82429 /* GTMLogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = ""; }; + B3982BF729239F4800A82429 /* string_utilities.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = string_utilities.cc; sourceTree = ""; }; + B3982BF829239F4800A82429 /* macho_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macho_reader.h; sourceTree = ""; }; + B3982BF929239F4800A82429 /* macho_reader_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = macho_reader_unittest.cc; sourceTree = ""; }; + B3982BFA29239F4800A82429 /* macho_walker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macho_walker.h; sourceTree = ""; }; + B3982BFB29239F4800A82429 /* SymbolCollectorClient.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SymbolCollectorClient.m; sourceTree = ""; }; + B3982BFC29239F4800A82429 /* super_fat_arch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = super_fat_arch.h; sourceTree = ""; }; + B3982BFD29239F4800A82429 /* GTMDefines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; + B3982BFE29239F4800A82429 /* HTTPRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPRequest.h; sourceTree = ""; }; + B3982BFF29239F4800A82429 /* macho_reader.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = macho_reader.cc; sourceTree = ""; }; + B3982C0029239F4800A82429 /* HTTPSimplePostRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTTPSimplePostRequest.m; sourceTree = ""; }; + B3982C0129239F4800A82429 /* file_id.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_id.h; sourceTree = ""; }; + B3982C0229239F4800A82429 /* macho_utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macho_utilities.h; sourceTree = ""; }; + B3982C0329239F4800A82429 /* HTTPGetRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPGetRequest.h; sourceTree = ""; }; + B3982C0429239F4800A82429 /* arch_utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arch_utilities.h; sourceTree = ""; }; + B3982C0529239F4800A82429 /* HTTPMultipartUpload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPMultipartUpload.h; sourceTree = ""; }; + B3982C0629239F4800A82429 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BreakpadDebug.xcconfig; sourceTree = ""; }; + B3982C0729239F4800A82429 /* minidump_upload.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = minidump_upload.m; sourceTree = ""; }; + B3982C0829239F4800A82429 /* minidump_type_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_type_helper.h; sourceTree = ""; }; + B3982C0929239F4800A82429 /* memory_range.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_range.h; sourceTree = ""; }; + B3982C0A29239F4800A82429 /* stabs_to_module.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stabs_to_module.cc; sourceTree = ""; }; + B3982C0B29239F4800A82429 /* macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + B3982C0D29239F4800A82429 /* memory_mapped_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_mapped_file.h; sourceTree = ""; }; + B3982C0E29239F4800A82429 /* libcurl_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libcurl_wrapper.h; sourceTree = ""; }; + B3982C0F29239F4800A82429 /* synth_elf.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = synth_elf.cc; sourceTree = ""; }; + B3982C1029239F4800A82429 /* symbol_upload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbol_upload.h; sourceTree = ""; }; + B3982C1129239F4800A82429 /* guid_creator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = guid_creator.h; sourceTree = ""; }; + B3982C1229239F4800A82429 /* elf_gnu_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf_gnu_compat.h; sourceTree = ""; }; + B3982C1329239F4800A82429 /* elf_symbols_to_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf_symbols_to_module.h; sourceTree = ""; }; + B3982C1429239F4800A82429 /* elfutils-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "elfutils-inl.h"; sourceTree = ""; }; + B3982C1529239F4800A82429 /* dump_symbols.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_symbols.cc; sourceTree = ""; }; + B3982C1629239F4800A82429 /* memory_mapped_file_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_mapped_file_unittest.cc; sourceTree = ""; }; + B3982C1729239F4800A82429 /* safe_readlink.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = safe_readlink.cc; sourceTree = ""; }; + B3982C1929239F4800A82429 /* crash_generator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generator.cc; sourceTree = ""; }; + B3982C1A29239F4800A82429 /* crash_generator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generator.h; sourceTree = ""; }; + B3982C1B29239F4800A82429 /* auto_testfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = auto_testfile.h; sourceTree = ""; }; + B3982C1C29239F4800A82429 /* elfutils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elfutils.h; sourceTree = ""; }; + B3982C1D29239F4800A82429 /* file_id.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file_id.cc; sourceTree = ""; }; + B3982C1E29239F4800A82429 /* memory_mapped_file.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_mapped_file.cc; sourceTree = ""; }; + B3982C1F29239F4800A82429 /* symbol_collector_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbol_collector_client.h; sourceTree = ""; }; + B3982C2029239F4800A82429 /* symbol_collector_client.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = symbol_collector_client.cc; sourceTree = ""; }; + B3982C2129239F4800A82429 /* breakpad_getcontext_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_getcontext_unittest.cc; sourceTree = ""; }; + B3982C2229239F4800A82429 /* symbol_upload.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = symbol_upload.cc; sourceTree = ""; }; + B3982C2329239F4800A82429 /* breakpad_getcontext.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = breakpad_getcontext.S; sourceTree = ""; }; + B3982C2429239F4800A82429 /* elf_core_dump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf_core_dump.h; sourceTree = ""; }; + B3982C2529239F4800A82429 /* breakpad_getcontext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = breakpad_getcontext.h; sourceTree = ""; }; + B3982C2629239F4800A82429 /* synth_elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = synth_elf.h; sourceTree = ""; }; + B3982C2729239F4800A82429 /* eintr_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eintr_wrapper.h; sourceTree = ""; }; + B3982C2829239F4800A82429 /* crc32.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crc32.cc; sourceTree = ""; }; + B3982C2929239F4800A82429 /* http_upload.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = http_upload.cc; sourceTree = ""; }; + B3982C2A29239F4800A82429 /* synth_elf_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = synth_elf_unittest.cc; sourceTree = ""; }; + B3982C2B29239F4800A82429 /* google_crashdump_uploader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = google_crashdump_uploader.h; sourceTree = ""; }; + B3982C2C29239F4800A82429 /* elfutils.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elfutils.cc; sourceTree = ""; }; + B3982C2D29239F4800A82429 /* google_crashdump_uploader_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = google_crashdump_uploader_test.cc; sourceTree = ""; }; + B3982C2E29239F4800A82429 /* dump_symbols_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_symbols_unittest.cc; sourceTree = ""; }; + B3982C2F29239F4800A82429 /* ignore_ret.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ignore_ret.h; sourceTree = ""; }; + B3982C3029239F4800A82429 /* ucontext_constants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ucontext_constants.h; sourceTree = ""; }; + B3982C3129239F4800A82429 /* guid_creator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = guid_creator.cc; sourceTree = ""; }; + B3982C3229239F4800A82429 /* safe_readlink_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = safe_readlink_unittest.cc; sourceTree = ""; }; + B3982C3329239F4800A82429 /* linux_libc_support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linux_libc_support.h; sourceTree = ""; }; + B3982C3429239F4800A82429 /* file_id_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file_id_unittest.cc; sourceTree = ""; }; + B3982C3529239F4800A82429 /* safe_readlink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = safe_readlink.h; sourceTree = ""; }; + B3982C3629239F4800A82429 /* linux_libc_support.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_libc_support.cc; sourceTree = ""; }; + B3982C3729239F4800A82429 /* dump_symbols.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dump_symbols.h; sourceTree = ""; }; + B3982C3829239F4800A82429 /* libcurl_wrapper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libcurl_wrapper.cc; sourceTree = ""; }; + B3982C3929239F4800A82429 /* elf_core_dump_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf_core_dump_unittest.cc; sourceTree = ""; }; + B3982C3A29239F4800A82429 /* file_id.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_id.h; sourceTree = ""; }; + B3982C3B29239F4800A82429 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3982C3C29239F4800A82429 /* elf_symbols_to_module.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf_symbols_to_module.cc; sourceTree = ""; }; + B3982C3D29239F4900A82429 /* elf_symbols_to_module_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf_symbols_to_module_unittest.cc; sourceTree = ""; }; + B3982C3E29239F4900A82429 /* elf_core_dump.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf_core_dump.cc; sourceTree = ""; }; + B3982C3F29239F4900A82429 /* linux_libc_support_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_libc_support_unittest.cc; sourceTree = ""; }; + B3982C4029239F4900A82429 /* http_upload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http_upload.h; sourceTree = ""; }; + B3982C4129239F4900A82429 /* google_crashdump_uploader.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = google_crashdump_uploader.cc; sourceTree = ""; }; + B3982C4429239F4900A82429 /* stab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stab.h; sourceTree = ""; }; + B3982C4529239F4900A82429 /* elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = ""; }; + B3982C4729239F4900A82429 /* procfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = procfs.h; sourceTree = ""; }; + B3982C4829239F4900A82429 /* user.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = user.h; sourceTree = ""; }; + B3982C4929239F4900A82429 /* link.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = link.h; sourceTree = ""; }; + B3982C4B29239F4900A82429 /* fpregdef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fpregdef.h; sourceTree = ""; }; + B3982C4C29239F4900A82429 /* asm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm.h; sourceTree = ""; }; + B3982C4D29239F4900A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3982C4E29239F4900A82429 /* regdef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regdef.h; sourceTree = ""; }; + B3982C5029239F4900A82429 /* pthread_fixes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pthread_fixes.h; sourceTree = ""; }; + B3982C5229239F4900A82429 /* wchar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wchar.h; sourceTree = ""; }; + B3982C5329239F4900A82429 /* mkdtemp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mkdtemp.h; sourceTree = ""; }; + B3982C5429239F4900A82429 /* stabs_to_module_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stabs_to_module_unittest.cc; sourceTree = ""; }; + B3982C5529239F4900A82429 /* simple_string_dictionary.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = simple_string_dictionary.cc; sourceTree = ""; }; + B3982C5629239F4900A82429 /* basictypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = basictypes.h; sourceTree = ""; }; + B3982C5729239F4900A82429 /* simple_string_dictionary_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = simple_string_dictionary_unittest.cc; sourceTree = ""; }; + B3982C5829239F4900A82429 /* stabs_reader_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stabs_reader_unittest.cc; sourceTree = ""; }; + B3982C5929239F4900A82429 /* dwarf_range_list_handler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf_range_list_handler.h; sourceTree = ""; }; + B3982C5A29239F4900A82429 /* string_conversion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_conversion.h; sourceTree = ""; }; + B3982C5B29239F4900A82429 /* dwarf_line_to_module_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf_line_to_module_unittest.cc; sourceTree = ""; }; + B3982C5C29239F4900A82429 /* long_string_dictionary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = long_string_dictionary.h; sourceTree = ""; }; + B3982C5D29239F4900A82429 /* module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = module.h; sourceTree = ""; }; + B3982C5F29239F4900A82429 /* omap.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = omap.cc; sourceTree = ""; }; + B3982C6029239F4900A82429 /* pdb_source_line_writer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pdb_source_line_writer.h; sourceTree = ""; }; + B3982C6129239F4900A82429 /* omap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = omap.h; sourceTree = ""; }; + B3982C6229239F4900A82429 /* omap_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = omap_unittest.cc; sourceTree = ""; }; + B3982C6329239F4900A82429 /* dia_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dia_util.h; sourceTree = ""; }; + B3982C6429239F4900A82429 /* pe_util.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pe_util.cc; sourceTree = ""; }; + B3982C6529239F4900A82429 /* string_utils.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = string_utils.cc; sourceTree = ""; }; + B3982C6629239F4900A82429 /* symbol_collector_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbol_collector_client.h; sourceTree = ""; }; + B3982C6729239F4900A82429 /* symbol_collector_client.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = symbol_collector_client.cc; sourceTree = ""; }; + B3982C6829239F4900A82429 /* pe_source_line_writer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pe_source_line_writer.h; sourceTree = ""; }; + B3982C6929239F4900A82429 /* http_upload.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = http_upload.cc; sourceTree = ""; }; + B3982C6A29239F4900A82429 /* pe_source_line_writer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pe_source_line_writer.cc; sourceTree = ""; }; + B3982C6B29239F4900A82429 /* pdb_source_line_writer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pdb_source_line_writer.cc; sourceTree = ""; }; + B3982C6C29239F4900A82429 /* dia_util.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dia_util.cc; sourceTree = ""; }; + B3982C6D29239F4900A82429 /* module_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = module_info.h; sourceTree = ""; }; + B3982C6E29239F4900A82429 /* guid_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = guid_string.h; sourceTree = ""; }; + B3982C6F29239F4900A82429 /* common_windows.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = common_windows.gyp; sourceTree = ""; }; + B3982C7029239F4900A82429 /* omap_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = omap_internal.h; sourceTree = ""; }; + B3982C7129239F4900A82429 /* string_utils-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "string_utils-inl.h"; sourceTree = ""; }; + B3982C7229239F4900A82429 /* http_upload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http_upload.h; sourceTree = ""; }; + B3982C7329239F4900A82429 /* pe_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pe_util.h; sourceTree = ""; }; + B3982C7429239F4900A82429 /* guid_string.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = guid_string.cc; sourceTree = ""; }; + B3982C7629239F4900A82429 /* guid_creator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = guid_creator.h; sourceTree = ""; }; + B3982C7729239F4900A82429 /* dump_symbols.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_symbols.cc; sourceTree = ""; }; + B3982C7829239F4900A82429 /* file_id.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = file_id.cc; sourceTree = ""; }; + B3982C7929239F4900A82429 /* guid_creator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = guid_creator.cc; sourceTree = ""; }; + B3982C7A29239F4900A82429 /* dump_symbols.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dump_symbols.h; sourceTree = ""; }; + B3982C7B29239F4900A82429 /* file_id.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_id.h; sourceTree = ""; }; + B3982C7C29239F4900A82429 /* message_output.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message_output.h; sourceTree = ""; }; + B3982C7D29239F4900A82429 /* dwarf_range_list_handler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dwarf_range_list_handler.cc; sourceTree = ""; }; + B3982C7E29239F4900A82429 /* byte_cursor_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = byte_cursor_unittest.cc; sourceTree = ""; }; + B3982C7F29239F4900A82429 /* memory_allocator_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_allocator_unittest.cc; sourceTree = ""; }; + B3982C8029239F4900A82429 /* dwarf_cfi_to_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarf_cfi_to_module.h; sourceTree = ""; }; + B3982C8329239F4900A82429 /* README.breakpad */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.breakpad; sourceTree = ""; }; + B3982C8529239F4900A82429 /* elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = ""; }; + B3982C8629239F4900A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3982C8729239F4900A82429 /* VERSION */ = {isa = PBXFileReference; lastKnownFileType = text; path = VERSION; sourceTree = ""; }; + B3982C8829239F4900A82429 /* COPYRIGHT */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYRIGHT; sourceTree = ""; }; + B3982C8A29239F4900A82429 /* ia32_operand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_operand.h; sourceTree = ""; }; + B3982C8B29239F4900A82429 /* libdis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libdis.h; sourceTree = ""; }; + B3982C8C29239F4900A82429 /* x86_format.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86_format.c; sourceTree = ""; }; + B3982C8D29239F4900A82429 /* ia32_modrm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_modrm.h; sourceTree = ""; }; + B3982C8E29239F4900A82429 /* x86_misc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86_misc.c; sourceTree = ""; }; + B3982C8F29239F4900A82429 /* ia32_reg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_reg.h; sourceTree = ""; }; + B3982C9229239F4900A82429 /* Makefile-swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-swig"; sourceTree = ""; }; + B3982C9329239F4900A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3982C9529239F4900A82429 /* Makefile-swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-swig"; sourceTree = ""; }; + B3982C9629239F4900A82429 /* Makefile.PL */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = Makefile.PL; sourceTree = ""; }; + B3982C9729239F4900A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3982C9929239F4900A82429 /* Makefile-swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-swig"; sourceTree = ""; }; + B3982C9A29239F4900A82429 /* libdisasm.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = libdisasm.i; sourceTree = ""; }; + B3982C9B29239F4900A82429 /* libdisasm_oop.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = libdisasm_oop.i; sourceTree = ""; }; + B3982C9D29239F4900A82429 /* Makefile-swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-swig"; sourceTree = ""; }; + B3982C9E29239F4900A82429 /* extconf.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = extconf.rb; sourceTree = ""; }; + B3982C9F29239F4900A82429 /* ia32_insn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_insn.h; sourceTree = ""; }; + B3982CA029239F4900A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3982CA129239F4900A82429 /* README.breakpad */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.breakpad; sourceTree = ""; }; + B3982CA229239F4900A82429 /* x86_operand_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_operand_list.h; sourceTree = ""; }; + B3982CA329239F4900A82429 /* ia32_settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_settings.h; sourceTree = ""; }; + B3982CA429239F4900A82429 /* ia32_implicit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_implicit.h; sourceTree = ""; }; + B3982CA529239F4900A82429 /* x86_disasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86_disasm.c; sourceTree = ""; }; + B3982CA629239F4900A82429 /* ia32_invariant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_invariant.h; sourceTree = ""; }; + B3982CA729239F4900A82429 /* libdisasm.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = libdisasm.gyp; sourceTree = ""; }; + B3982CA829239F4900A82429 /* x86_imm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_imm.h; sourceTree = ""; }; + B3982CA929239F4900A82429 /* ia32_opcode_tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ia32_opcode_tables.h; sourceTree = ""; }; + B3982CAA29239F4900A82429 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3982CAB29239F4900A82429 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3982CAC29239F4900A82429 /* ia32_modrm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_modrm.c; sourceTree = ""; }; + B3982CAD29239F4900A82429 /* ia32_operand.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_operand.c; sourceTree = ""; }; + B3982CAE29239F4900A82429 /* x86_operand_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86_operand_list.c; sourceTree = ""; }; + B3982CAF29239F4900A82429 /* ia32_insn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_insn.c; sourceTree = ""; }; + B3982CB029239F4900A82429 /* ia32_reg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_reg.c; sourceTree = ""; }; + B3982CB129239F4900A82429 /* ia32_implicit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_implicit.c; sourceTree = ""; }; + B3982CB229239F4900A82429 /* qword.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qword.h; sourceTree = ""; }; + B3982CB329239F4900A82429 /* ia32_settings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_settings.c; sourceTree = ""; }; + B3982CB429239F4900A82429 /* ia32_opcode_tables.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_opcode_tables.c; sourceTree = ""; }; + B3982CB529239F4900A82429 /* x86_imm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86_imm.c; sourceTree = ""; }; + B3982CB629239F4900A82429 /* ia32_invariant.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ia32_invariant.c; sourceTree = ""; }; + B3982CB729239F4900A82429 /* x86_insn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86_insn.c; sourceTree = ""; }; + B3982CB929239F4900A82429 /* curlrules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = curlrules.h; sourceTree = ""; }; + B3982CBA29239F4900A82429 /* stdcheaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdcheaders.h; sourceTree = ""; }; + B3982CBB29239F4900A82429 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B3982CBC29239F4900A82429 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3982CBD29239F4900A82429 /* mprintf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mprintf.h; sourceTree = ""; }; + B3982CBE29239F4900A82429 /* easy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = easy.h; sourceTree = ""; }; + B3982CBF29239F4900A82429 /* curl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = curl.h; sourceTree = ""; }; + B3982CC029239F4900A82429 /* curlver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = curlver.h; sourceTree = ""; }; + B3982CC129239F4900A82429 /* typecheck-gcc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "typecheck-gcc.h"; sourceTree = ""; }; + B3982CC229239F4900A82429 /* multi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = multi.h; sourceTree = ""; }; + B3982CC329239F4900A82429 /* curlbuild.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = curlbuild.h; sourceTree = ""; }; + B3982CC729239F4900A82429 /* gflags_completions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gflags_completions.h; sourceTree = ""; }; + B3982CCA29239F4900A82429 /* _types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _types.h; sourceTree = ""; }; + B3982CCB29239F4900A82429 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3982CCD29239F4900A82429 /* byte_order.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = byte_order.h; sourceTree = ""; }; + B3982CCF29239F4900A82429 /* machine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = machine.h; sourceTree = ""; }; + B3982CD029239F4900A82429 /* thread_status.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread_status.h; sourceTree = ""; }; + B3982CD229239F4900A82429 /* vm_param.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_param.h; sourceTree = ""; }; + B3982CD329239F4900A82429 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3982CD429239F4900A82429 /* vm_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_types.h; sourceTree = ""; }; + B3982CD529239F4900A82429 /* vm_prot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_prot.h; sourceTree = ""; }; + B3982CD629239F4900A82429 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3982CD829239F4900A82429 /* thread_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread_state.h; sourceTree = ""; }; + B3982CD929239F4900A82429 /* thread_status.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread_status.h; sourceTree = ""; }; + B3982CDA29239F4900A82429 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3982CDB29239F4900A82429 /* vm_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_types.h; sourceTree = ""; }; + B3982CDD29239F4900A82429 /* nlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nlist.h; sourceTree = ""; }; + B3982CDE29239F4900A82429 /* loader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = loader.h; sourceTree = ""; }; + B3982CDF29239F4900A82429 /* fat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fat.h; sourceTree = ""; }; + B3982CE029239F4900A82429 /* arch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arch.h; sourceTree = ""; }; + B3982CE229239F4900A82429 /* DIR_METADATA */ = {isa = PBXFileReference; lastKnownFileType = text; path = DIR_METADATA; sourceTree = ""; }; + B3982CE329239F4900A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3982CE529239F4900A82429 /* getrandom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = getrandom.c; sourceTree = ""; }; + B3982CE629239F4900A82429 /* sigaction.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sigaction.c; sourceTree = ""; }; + B3982CE729239F4900A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3982CE829239F4900A82429 /* fallocate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fallocate.c; sourceTree = ""; }; + B3982CE929239F4900A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3982CEA29239F4900A82429 /* unlink.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unlink.c; sourceTree = ""; }; + B3982CEB29239F4900A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3982CEC29239F4900A82429 /* sigtimedwait.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sigtimedwait.c; sourceTree = ""; }; + B3982CED29239F4900A82429 /* stat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stat.c; sourceTree = ""; }; + B3982CEE29239F4900A82429 /* lstat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lstat.c; sourceTree = ""; }; + B3982CEF29239F4900A82429 /* test_skel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = test_skel.h; sourceTree = ""; }; + B3982CF029239F4900A82429 /* codereview.settings */ = {isa = PBXFileReference; lastKnownFileType = text; path = codereview.settings; sourceTree = ""; }; + B3982CF129239F4900A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3982CF229239F4900A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3982CF329239F4900A82429 /* linux_syscall_support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linux_syscall_support.h; sourceTree = ""; }; + B3982CF429239F4900A82429 /* OWNERS */ = {isa = PBXFileReference; lastKnownFileType = text; path = OWNERS; sourceTree = ""; }; + B3982CF729239F4900A82429 /* stackwalker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stackwalker.h; sourceTree = ""; }; + B3982CF829239F4900A82429 /* stack_frame_symbolizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stack_frame_symbolizer.h; sourceTree = ""; }; + B3982CF929239F4900A82429 /* minidump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump.h; sourceTree = ""; }; + B3982CFA29239F4900A82429 /* exception_record.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exception_record.h; sourceTree = ""; }; + B3982CFB29239F4900A82429 /* process_result.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = process_result.h; sourceTree = ""; }; + B3982CFC29239F4900A82429 /* source_line_resolver_base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = source_line_resolver_base.h; sourceTree = ""; }; + B3982CFD29239F4900A82429 /* call_stack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = call_stack.h; sourceTree = ""; }; + B3982CFE29239F4900A82429 /* microdump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microdump.h; sourceTree = ""; }; + B3982CFF29239F4900A82429 /* dump_object.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dump_object.h; sourceTree = ""; }; + B3982D0029239F4900A82429 /* exploitability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exploitability.h; sourceTree = ""; }; + B3982D0129239F4900A82429 /* minidump_processor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_processor.h; sourceTree = ""; }; + B3982D0229239F4900A82429 /* process_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = process_state.h; sourceTree = ""; }; + B3982D0329239F4900A82429 /* microdump_processor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microdump_processor.h; sourceTree = ""; }; + B3982D0429239F4900A82429 /* system_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = system_info.h; sourceTree = ""; }; + B3982D0529239F4900A82429 /* memory_region.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_region.h; sourceTree = ""; }; + B3982D0629239F4900A82429 /* stack_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stack_frame.h; sourceTree = ""; }; + B3982D0729239F4900A82429 /* dump_context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dump_context.h; sourceTree = ""; }; + B3982D0829239F4900A82429 /* fast_source_line_resolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fast_source_line_resolver.h; sourceTree = ""; }; + B3982D0929239F4900A82429 /* source_line_resolver_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = source_line_resolver_interface.h; sourceTree = ""; }; + B3982D0A29239F4900A82429 /* stack_frame_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stack_frame_cpu.h; sourceTree = ""; }; + B3982D0B29239F4900A82429 /* symbol_supplier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbol_supplier.h; sourceTree = ""; }; + B3982D0C29239F4900A82429 /* proc_maps_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = proc_maps_linux.h; sourceTree = ""; }; + B3982D0D29239F4900A82429 /* code_modules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = code_modules.h; sourceTree = ""; }; + B3982D0E29239F4900A82429 /* code_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = code_module.h; sourceTree = ""; }; + B3982D0F29239F4900A82429 /* basic_source_line_resolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = basic_source_line_resolver.h; sourceTree = ""; }; + B3982D1129239F4900A82429 /* minidump_exception_solaris.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_exception_solaris.h; sourceTree = ""; }; + B3982D1229239F4900A82429 /* minidump_exception_fuchsia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_exception_fuchsia.h; sourceTree = ""; }; + B3982D1329239F4900A82429 /* minidump_cpu_arm64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_arm64.h; sourceTree = ""; }; + B3982D1429239F4900A82429 /* minidump_cpu_ppc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_ppc.h; sourceTree = ""; }; + B3982D1529239F4900A82429 /* minidump_format.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_format.h; sourceTree = ""; }; + B3982D1629239F4900A82429 /* minidump_exception_mac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_exception_mac.h; sourceTree = ""; }; + B3982D1729239F4900A82429 /* minidump_cpu_mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_mips.h; sourceTree = ""; }; + B3982D1829239F4900A82429 /* minidump_exception_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_exception_win32.h; sourceTree = ""; }; + B3982D1929239F4900A82429 /* minidump_cpu_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_x86.h; sourceTree = ""; }; + B3982D1A29239F4900A82429 /* minidump_cpu_sparc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_sparc.h; sourceTree = ""; }; + B3982D1B29239F4900A82429 /* minidump_cpu_amd64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_amd64.h; sourceTree = ""; }; + B3982D1C29239F4900A82429 /* minidump_cpu_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_arm.h; sourceTree = ""; }; + B3982D1D29239F4900A82429 /* minidump_size.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_size.h; sourceTree = ""; }; + B3982D1E29239F4900A82429 /* minidump_exception_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_exception_linux.h; sourceTree = ""; }; + B3982D1F29239F4900A82429 /* minidump_cpu_ppc64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_cpu_ppc64.h; sourceTree = ""; }; + B3982D2029239F4900A82429 /* breakpad_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = breakpad_types.h; sourceTree = ""; }; + B3982D2129239F4900A82429 /* minidump_exception_ps3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_exception_ps3.h; sourceTree = ""; }; + B3982D2529239F4900A82429 /* BreakpadDefines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BreakpadDefines.h; sourceTree = ""; }; + B3982D2629239F4900A82429 /* minidump_file_writer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_file_writer.cc; sourceTree = ""; }; + B3982D2729239F4900A82429 /* minidump_file_writer-inl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "minidump_file_writer-inl.h"; sourceTree = ""; }; + B3982D2829239F4900A82429 /* minidump_file_writer_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_file_writer_unittest.cc; sourceTree = ""; }; + B3982D2B29239F4900A82429 /* ios_exception_minidump_generator.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ios_exception_minidump_generator.mm; sourceTree = ""; }; + B3982D2C29239F4900A82429 /* ios_exception_minidump_generator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ios_exception_minidump_generator.h; sourceTree = ""; }; + B3982D2D29239F4900A82429 /* Breakpad.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = Breakpad.xcodeproj; sourceTree = ""; }; + B3982D3029239F4900A82429 /* Breakpad_Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Breakpad_Prefix.pch; sourceTree = ""; }; + B3982D3129239F4900A82429 /* exception_handler_no_mach.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exception_handler_no_mach.h; sourceTree = ""; }; + B3982D3229239F4900A82429 /* Breakpad.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Breakpad.mm; sourceTree = ""; }; + B3982D3329239F4900A82429 /* exception_handler_no_mach.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_no_mach.cc; sourceTree = ""; }; + B3982D3429239F4900A82429 /* Breakpad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Breakpad.h; sourceTree = ""; }; + B3982D3529239F4900A82429 /* BreakpadController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BreakpadController.h; sourceTree = ""; }; + B3982D3629239F4900A82429 /* BreakpadController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = BreakpadController.mm; sourceTree = ""; }; + B3982D3829239F4900A82429 /* UnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "UnitTests-Info.plist"; sourceTree = ""; }; + B3982D3A29239F4900A82429 /* breakpad_nlist_64.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_64.cc; sourceTree = ""; }; + B3982D3B29239F4900A82429 /* ucontext_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ucontext_compat.h; sourceTree = ""; }; + B3982D3C29239F4900A82429 /* minidump_tests64-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests64-Info.plist"; sourceTree = ""; }; + B3982D3D29239F4900A82429 /* protected_memory_allocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = protected_memory_allocator.h; sourceTree = ""; }; + B3982D3E29239F4900A82429 /* dynamic_images.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dynamic_images.h; sourceTree = ""; }; + B3982D3F29239F4900A82429 /* exception_handler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler.cc; sourceTree = ""; }; + B3982D4029239F4900A82429 /* obj-cTestCases-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "obj-cTestCases-Info.plist"; sourceTree = ""; }; + B3982D4129239F4900A82429 /* minidump_generator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_generator.h; sourceTree = ""; }; + B3982D4229239F4900A82429 /* minidump_generator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator.cc; sourceTree = ""; }; + B3982D4329239F4900A82429 /* mach_vm_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mach_vm_compat.h; sourceTree = ""; }; + B3982D4429239F4900A82429 /* breakpad_nlist_64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_64.h; sourceTree = ""; }; + B3982D4529239F4900A82429 /* minidump_test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = minidump_test.xcodeproj; sourceTree = ""; }; + B3982D4829239F4900A82429 /* dynamic_images.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dynamic_images.cc; sourceTree = ""; }; + B3982D4929239F4900A82429 /* protected_memory_allocator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = protected_memory_allocator.cc; sourceTree = ""; }; + B3982D4A29239F4900A82429 /* exception_handler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exception_handler.h; sourceTree = ""; }; + B3982D4C29239F4900A82429 /* dwarftests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = dwarftests.mm; sourceTree = ""; }; + B3982D4E29239F4900A82429 /* dump_syms_dwarf_data */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o"; path = dump_syms_dwarf_data; sourceTree = ""; }; + B3982D4F29239F4900A82429 /* dump_syms_i386_breakpad.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = dump_syms_i386_breakpad.sym; sourceTree = ""; }; + B3982D5029239F4900A82429 /* breakpad_nlist_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_test.h; sourceTree = ""; }; + B3982D5129239F4900A82429 /* DynamicImagesTests.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicImagesTests.cc; sourceTree = ""; }; + B3982D5229239F4900A82429 /* DynamicImagesTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DynamicImagesTests.h; sourceTree = ""; }; + B3982D5329239F4900A82429 /* dwarftests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dwarftests.h; sourceTree = ""; }; + B3982D5429239F4900A82429 /* breakpad_nlist_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_test.cc; sourceTree = ""; }; + B3982D5529239F4900A82429 /* minidump_tests32-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests32-Info.plist"; sourceTree = ""; }; + B3982D5629239F4900A82429 /* Breakpad.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = Breakpad.xcodeproj; sourceTree = ""; }; + B3982D5D29239F4900A82429 /* crashduringload */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = crashduringload; sourceTree = ""; }; + B3982D5E29239F4900A82429 /* Controller.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; + B3982D6029239F4900A82429 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D6229239F4900A82429 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; + B3982D6329239F4900A82429 /* crashInMain */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = crashInMain; sourceTree = ""; }; + B3982D6429239F4900A82429 /* TestClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestClass.h; sourceTree = ""; }; + B3982D6529239F4900A82429 /* bomb.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = bomb.icns; sourceTree = ""; }; + B3982D6629239F4900A82429 /* Controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = ""; }; + B3982D6729239F4900A82429 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B3982D6829239F4900A82429 /* TestClass.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = TestClass.mm; sourceTree = ""; }; + B3982D6929239F4900A82429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3982D6B29239F4900A82429 /* Breakpad_Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Breakpad_Prefix.pch; sourceTree = ""; }; + B3982D6C29239F4900A82429 /* OnDemandServer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = OnDemandServer.mm; sourceTree = ""; }; + B3982D6D29239F4900A82429 /* Breakpad.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Breakpad.mm; sourceTree = ""; }; + B3982D6E29239F4900A82429 /* Breakpad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Breakpad.h; sourceTree = ""; }; + B3982D6F29239F4900A82429 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3982D7029239F4900A82429 /* OnDemandServer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OnDemandServer.h; sourceTree = ""; }; + B3982D7329239F4900A82429 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; + B3982D7529239F4900A82429 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D7629239F4900A82429 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; + B3982D7729239F4900A82429 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D7829239F4900A82429 /* uploader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uploader.h; sourceTree = ""; }; + B3982D7929239F4900A82429 /* crash_report_sender.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = crash_report_sender.icns; sourceTree = ""; }; + B3982D7A29239F4900A82429 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; + B3982D7B29239F4900A82429 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D7C29239F4900A82429 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; + B3982D7D29239F4900A82429 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D7E29239F4900A82429 /* crash_report_sender-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "crash_report_sender-Info.plist"; sourceTree = ""; }; + B3982D7F29239F4900A82429 /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/Localizable.strings; sourceTree = ""; }; + B3982D8029239F4900A82429 /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D8129239F4900A82429 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; }; + B3982D8229239F4900A82429 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D8329239F4900A82429 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; + B3982D8429239F4900A82429 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D8529239F4900A82429 /* ReporterIcon.graffle */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ReporterIcon.graffle; sourceTree = ""; }; + B3982D8629239F4900A82429 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; }; + B3982D8729239F4900A82429 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D8829239F4900A82429 /* crash_report_sender.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = crash_report_sender.m; sourceTree = ""; }; + B3982D8929239F4900A82429 /* Breakpad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Breakpad.xib; sourceTree = ""; }; + B3982D8A29239F4900A82429 /* no */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = no; path = no.lproj/Localizable.strings; sourceTree = ""; }; + B3982D8B29239F4900A82429 /* no */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = no; path = no.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D8C29239F4900A82429 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; + B3982D8D29239F4900A82429 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D8E29239F4900A82429 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; + B3982D8F29239F4900A82429 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D9029239F4900A82429 /* uploader.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = uploader.mm; sourceTree = ""; }; + B3982D9129239F4900A82429 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; + B3982D9229239F4900A82429 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; + B3982D9329239F4900A82429 /* crash_report_sender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_report_sender.h; sourceTree = ""; }; + B3982D9429239F4900A82429 /* goArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = goArrow.png; sourceTree = ""; }; + B3982D9629239F4900A82429 /* testlogging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = testlogging.h; sourceTree = ""; }; + B3982D9729239F4900A82429 /* crash_generation_server_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_server_test.cc; sourceTree = ""; }; + B3982D9829239F4900A82429 /* spawn_child_process.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spawn_child_process.h; sourceTree = ""; }; + B3982D9929239F4900A82429 /* exception_handler_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_test.cc; sourceTree = ""; }; + B3982D9A29239F4900A82429 /* BreakpadFramework_Test.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = BreakpadFramework_Test.mm; sourceTree = ""; }; + B3982D9B29239F4900A82429 /* minidump_generator_test_helper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator_test_helper.cc; sourceTree = ""; }; + B3982D9C29239F4900A82429 /* minidump_generator_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator_test.cc; sourceTree = ""; }; + B3982D9E29239F4900A82429 /* crash_generation_server.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_server.cc; sourceTree = ""; }; + B3982D9F29239F4900A82429 /* crash_generation_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generation_client.h; sourceTree = ""; }; + B3982DA029239F4900A82429 /* ConfigFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConfigFile.h; sourceTree = ""; }; + B3982DA129239F4900A82429 /* crash_generation_client.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_client.cc; sourceTree = ""; }; + B3982DA229239F4900A82429 /* InspectorMain.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = InspectorMain.mm; sourceTree = ""; }; + B3982DA329239F4900A82429 /* Inspector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Inspector.h; sourceTree = ""; }; + B3982DA429239F4900A82429 /* client_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client_info.h; sourceTree = ""; }; + B3982DA529239F4900A82429 /* Inspector.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Inspector.mm; sourceTree = ""; }; + B3982DA629239F4900A82429 /* crash_generation_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generation_server.h; sourceTree = ""; }; + B3982DA729239F4900A82429 /* ConfigFile.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ConfigFile.mm; sourceTree = ""; }; + B3982DAA29239F4900A82429 /* exception_handler_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_unittest.cc; sourceTree = ""; }; + B3982DAB29239F4900A82429 /* exception_handler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler.cc; sourceTree = ""; }; + B3982DAC29239F4900A82429 /* minidump_descriptor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_descriptor.h; sourceTree = ""; }; + B3982DAD29239F4900A82429 /* minidump_descriptor.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_descriptor.cc; sourceTree = ""; }; + B3982DAE29239F4900A82429 /* microdump_extra_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microdump_extra_info.h; sourceTree = ""; }; + B3982DAF29239F4900A82429 /* exception_handler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exception_handler.h; sourceTree = ""; }; + B3982DB129239F4900A82429 /* proc_cpuinfo_reader_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = proc_cpuinfo_reader_unittest.cc; sourceTree = ""; }; + B3982DB229239F4900A82429 /* cpu_set_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpu_set_unittest.cc; sourceTree = ""; }; + B3982DB329239F4900A82429 /* cpu_set.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu_set.h; sourceTree = ""; }; + B3982DB429239F4900A82429 /* proc_cpuinfo_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = proc_cpuinfo_reader.h; sourceTree = ""; }; + B3982DB529239F4900A82429 /* minidump_writer_unittest_utils.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_writer_unittest_utils.cc; sourceTree = ""; }; + B3982DB629239F4900A82429 /* linux_dumper_unittest_helper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_dumper_unittest_helper.cc; sourceTree = ""; }; + B3982DB729239F4900A82429 /* linux_core_dumper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linux_core_dumper.h; sourceTree = ""; }; + B3982DB829239F4900A82429 /* minidump_writer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_writer.h; sourceTree = ""; }; + B3982DB929239F4900A82429 /* minidump_writer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_writer.cc; sourceTree = ""; }; + B3982DBA29239F4900A82429 /* line_reader_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = line_reader_unittest.cc; sourceTree = ""; }; + B3982DBB29239F4900A82429 /* linux_ptrace_dumper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_ptrace_dumper.cc; sourceTree = ""; }; + B3982DBC29239F4900A82429 /* linux_ptrace_dumper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linux_ptrace_dumper.h; sourceTree = ""; }; + B3982DBD29239F4900A82429 /* linux_core_dumper_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_core_dumper_unittest.cc; sourceTree = ""; }; + B3982DBE29239F4900A82429 /* directory_reader_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = directory_reader_unittest.cc; sourceTree = ""; }; + B3982DBF29239F4900A82429 /* linux_core_dumper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_core_dumper.cc; sourceTree = ""; }; + B3982DC029239F4900A82429 /* minidump_writer_unittest_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_writer_unittest_utils.h; sourceTree = ""; }; + B3982DC129239F4900A82429 /* linux_ptrace_dumper_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_ptrace_dumper_unittest.cc; sourceTree = ""; }; + B3982DC229239F4900A82429 /* minidump_writer_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_writer_unittest.cc; sourceTree = ""; }; + B3982DC329239F4900A82429 /* linux_dumper.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linux_dumper.cc; sourceTree = ""; }; + B3982DC429239F4900A82429 /* directory_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = directory_reader.h; sourceTree = ""; }; + B3982DC529239F4900A82429 /* line_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = line_reader.h; sourceTree = ""; }; + B3982DC629239F4900A82429 /* linux_dumper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linux_dumper.h; sourceTree = ""; }; + B3982DC829239F4900A82429 /* google_crash_report_sender.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = google_crash_report_sender.cc; sourceTree = ""; }; + B3982DCA29239F4900A82429 /* raw_context_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = raw_context_cpu.h; sourceTree = ""; }; + B3982DCB29239F4900A82429 /* mapping_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mapping_info.h; sourceTree = ""; }; + B3982DCC29239F4900A82429 /* thread_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread_info.h; sourceTree = ""; }; + B3982DCD29239F4900A82429 /* thread_info.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = thread_info.cc; sourceTree = ""; }; + B3982DCE29239F4900A82429 /* ucontext_reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ucontext_reader.h; sourceTree = ""; }; + B3982DCF29239F4900A82429 /* ucontext_reader.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ucontext_reader.cc; sourceTree = ""; }; + B3982DD129239F4900A82429 /* crash_generation_server.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_server.cc; sourceTree = ""; }; + B3982DD229239F4900A82429 /* crash_generation_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generation_client.h; sourceTree = ""; }; + B3982DD329239F4900A82429 /* crash_generation_client.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_client.cc; sourceTree = ""; }; + B3982DD429239F4900A82429 /* client_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client_info.h; sourceTree = ""; }; + B3982DD529239F4900A82429 /* crash_generation_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generation_server.h; sourceTree = ""; }; + B3982DD729239F4900A82429 /* log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + B3982DD829239F4900A82429 /* log.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = log.cc; sourceTree = ""; }; + B3982DDA29239F4900A82429 /* microdump_writer.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = microdump_writer.cc; sourceTree = ""; }; + B3982DDB29239F4900A82429 /* microdump_writer_unittest.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = microdump_writer_unittest.cc; sourceTree = ""; }; + B3982DDC29239F4900A82429 /* microdump_writer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microdump_writer.h; sourceTree = ""; }; + B3982DDE29239F4900A82429 /* linux-gate-amd.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = "linux-gate-amd.sym"; sourceTree = ""; }; + B3982DDF29239F4900A82429 /* linux-gate-intel.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = "linux-gate-intel.sym"; sourceTree = ""; }; + B3982DE229239F4900A82429 /* exception_handler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler.cc; sourceTree = ""; }; + B3982DE329239F4900A82429 /* exception_handler.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = exception_handler.gyp; sourceTree = ""; }; + B3982DE429239F4900A82429 /* exception_handler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exception_handler.h; sourceTree = ""; }; + B3982DE529239F4900A82429 /* breakpad_client.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = breakpad_client.gyp; sourceTree = ""; }; + B3982DE729239F4900A82429 /* crash_report_sender.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = crash_report_sender.gyp; sourceTree = ""; }; + B3982DE829239F4900A82429 /* crash_report_sender.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_report_sender.cc; sourceTree = ""; }; + B3982DE929239F4900A82429 /* crash_report_sender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_report_sender.h; sourceTree = ""; }; + B3982DEC29239F4900A82429 /* abstract_class.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = abstract_class.cc; sourceTree = ""; }; + B3982DED29239F4900A82429 /* crash_generation_app.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = crash_generation_app.rc; sourceTree = ""; }; + B3982DEE29239F4900A82429 /* small.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = small.ico; sourceTree = ""; }; + B3982DEF29239F4900A82429 /* crash_generation_app.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generation_app.h; sourceTree = ""; }; + B3982DF029239F4900A82429 /* crash_generation_app.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_app.cc; sourceTree = ""; }; + B3982DF129239F4900A82429 /* abstract_class.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = abstract_class.h; sourceTree = ""; }; + B3982DF229239F4900A82429 /* crash_generation_app.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = crash_generation_app.gyp; sourceTree = ""; }; + B3982DF329239F4900A82429 /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B3982DF429239F4900A82429 /* crash_generation_app.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = crash_generation_app.ico; sourceTree = ""; }; + B3982DF629239F4900A82429 /* client_tests.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = client_tests.gyp; sourceTree = ""; }; + B3982DF729239F4900A82429 /* minidump_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_test.cc; sourceTree = ""; }; + B3982DF829239F4900A82429 /* exception_handler_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exception_handler_test.h; sourceTree = ""; }; + B3982DF929239F4900A82429 /* exception_handler_death_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_death_test.cc; sourceTree = ""; }; + B3982DFA29239F4900A82429 /* dump_analysis.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dump_analysis.cc; sourceTree = ""; }; + B3982DFB29239F4900A82429 /* dump_analysis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dump_analysis.h; sourceTree = ""; }; + B3982DFC29239F4900A82429 /* exception_handler_nesting_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_nesting_test.cc; sourceTree = ""; }; + B3982DFD29239F4900A82429 /* crash_generation_server_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_server_test.cc; sourceTree = ""; }; + B3982DFE29239F4900A82429 /* exception_handler_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_test.cc; sourceTree = ""; }; + B3982DFF29239F4900A82429 /* testing.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = testing.gyp; sourceTree = ""; }; + B3982E0129239F4900A82429 /* auto_critical_section.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = auto_critical_section.h; sourceTree = ""; }; + B3982E0229239F4900A82429 /* ipc_protocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ipc_protocol.h; sourceTree = ""; }; + B3982E0429239F4900A82429 /* crash_generation_server.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_server.cc; sourceTree = ""; }; + B3982E0529239F4900A82429 /* crash_generation_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generation_client.h; sourceTree = ""; }; + B3982E0629239F4900A82429 /* minidump_generator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_generator.h; sourceTree = ""; }; + B3982E0729239F4900A82429 /* minidump_generator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator.cc; sourceTree = ""; }; + B3982E0829239F4900A82429 /* crash_generation_client.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash_generation_client.cc; sourceTree = ""; }; + B3982E0929239F4900A82429 /* client_info.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = client_info.cc; sourceTree = ""; }; + B3982E0A29239F4900A82429 /* client_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client_info.h; sourceTree = ""; }; + B3982E0B29239F4900A82429 /* ReadMe.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ReadMe.txt; sourceTree = ""; }; + B3982E0C29239F4900A82429 /* crash_generation_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash_generation_server.h; sourceTree = ""; }; + B3982E0D29239F4900A82429 /* crash_generation.gyp */ = {isa = PBXFileReference; lastKnownFileType = text; path = crash_generation.gyp; sourceTree = ""; }; + B3982E1029239F4900A82429 /* minidump_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_test.cc; sourceTree = ""; }; + B3982E1129239F4900A82429 /* exception_handler.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler.cc; sourceTree = ""; }; + B3982E1229239F4900A82429 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3982E1329239F4900A82429 /* minidump_generator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_generator.h; sourceTree = ""; }; + B3982E1429239F4900A82429 /* minidump_generator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator.cc; sourceTree = ""; }; + B3982E1529239F4900A82429 /* solaris_lwp.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = solaris_lwp.cc; sourceTree = ""; }; + B3982E1629239F4900A82429 /* exception_handler_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_test.cc; sourceTree = ""; }; + B3982E1729239F4900A82429 /* solaris_lwp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = solaris_lwp.h; sourceTree = ""; }; + B3982E1829239F4900A82429 /* exception_handler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = exception_handler.h; sourceTree = ""; }; + B3982E1929239F4900A82429 /* minidump_file_writer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minidump_file_writer.h; sourceTree = ""; }; + B3982E1B29239F4900A82429 /* Lzma2Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma2Dec.c; sourceTree = ""; }; + B3982E1C29239F4900A82429 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3982E1D29239F4900A82429 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3982E1E29239F4900A82429 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3982E1F29239F4900A82429 /* Bcj2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bcj2.c; sourceTree = ""; }; + B3982E2029239F4900A82429 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3982E2129239F4900A82429 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3982E2229239F4900A82429 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3982E2329239F4900A82429 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3982E2429239F4900A82429 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3982E2529239F4900A82429 /* 7zCrc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zCrc.h; sourceTree = ""; }; + B3982E2629239F4900A82429 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3982E2729239F4900A82429 /* Bra.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra.c; sourceTree = ""; }; + B3982E2829239F4900A82429 /* 7zFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zFile.h; sourceTree = ""; }; + B3982E2929239F4900A82429 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3982E2A29239F4900A82429 /* 7zArcIn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zArcIn.c; sourceTree = ""; }; + B3982E2B29239F4900A82429 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3982E2C29239F4900A82429 /* 7zBuf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zBuf.h; sourceTree = ""; }; + B3982E2D29239F4900A82429 /* 7z.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7z.h; sourceTree = ""; }; + B3982E2E29239F4900A82429 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3982E2F29239F4900A82429 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3982E3029239F4900A82429 /* 7zDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zDec.c; sourceTree = ""; }; + B3982E3129239F4900A82429 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3982E3229239F4900A82429 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3982E3329239F4900A82429 /* Lzma2Dec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma2Dec.h; sourceTree = ""; }; + B3982E3429239F4900A82429 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3982E3529239F4900A82429 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3982E3629239F4900A82429 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3982E3729239F4900A82429 /* 7zStream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zStream.c; sourceTree = ""; }; + B3982E3829239F4900A82429 /* Bcj2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bcj2.h; sourceTree = ""; }; + B3982E3929239F4900A82429 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3982E3A29239F4900A82429 /* 7zFile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zFile.c; sourceTree = ""; }; + B3982E3B29239F4900A82429 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3982E3C29239F4900A82429 /* 7zCrc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zCrc.c; sourceTree = ""; }; + B3982E3D29239F4900A82429 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3982E3E29239F4900A82429 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3982E3F29239F4A00A82429 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3982E4029239F4A00A82429 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3982E4129239F4A00A82429 /* 7zCrcOpt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zCrcOpt.c; sourceTree = ""; }; + B3982E4229239F4A00A82429 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3982E4329239F4A00A82429 /* 7zBuf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 7zBuf.c; sourceTree = ""; }; + B3982E4429239F4A00A82429 /* LzmaLib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaLib.c; sourceTree = ""; }; + B3982E4629239F4A00A82429 /* audiobackend_pulseaudio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_pulseaudio.cpp; sourceTree = ""; }; + B3982E4729239F4A00A82429 /* audiobackend_sdl2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_sdl2.cpp; sourceTree = ""; }; + B3982E4829239F4A00A82429 /* audiobackend_omx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_omx.cpp; sourceTree = ""; }; + B3982E4929239F4A00A82429 /* oslib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oslib.h; sourceTree = ""; }; + B3982E4A29239F4A00A82429 /* audiobackend_coreaudio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_coreaudio.cpp; sourceTree = ""; }; + B3982E4B29239F4A00A82429 /* audiostream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiostream.cpp; sourceTree = ""; }; + B3982E4C29239F4A00A82429 /* host_context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = host_context.h; sourceTree = ""; }; + B3982E4D29239F4A00A82429 /* audiostream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiostream.h; sourceTree = ""; }; + B3982E4E29239F4A00A82429 /* oslib.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oslib.cpp; sourceTree = ""; }; + B3982E4F29239F4A00A82429 /* audiobackend_oboe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_oboe.cpp; sourceTree = ""; }; + B3982E5029239F4A00A82429 /* directory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = directory.h; sourceTree = ""; }; + B3982E5129239F4A00A82429 /* audiobackend_oss.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_oss.cpp; sourceTree = ""; }; + B3982E5229239F4A00A82429 /* audiobackend_libao.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_libao.cpp; sourceTree = ""; }; + B3982E5329239F4A00A82429 /* audiobackend_directsound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_directsound.cpp; sourceTree = ""; }; + B3982E5429239F4A00A82429 /* audiobackend_null.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_null.cpp; sourceTree = ""; }; + B3982E5529239F4A00A82429 /* audiobackend_alsa.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_alsa.cpp; sourceTree = ""; }; + B3982E5729239F4A00A82429 /* ConsoleListenerNix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleListenerNix.cpp; sourceTree = ""; }; + B3982E5829239F4A00A82429 /* BitSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BitSet.h; sourceTree = ""; }; + B3982E5929239F4A00A82429 /* ConsoleListenerWin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleListenerWin.cpp; sourceTree = ""; }; + B3982E5A29239F4A00A82429 /* ConsoleListenerDroid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleListenerDroid.cpp; sourceTree = ""; }; + B3982E5B29239F4A00A82429 /* ConsoleListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsoleListener.h; sourceTree = ""; }; + B3982E5C29239F4A00A82429 /* StringUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StringUtil.h; sourceTree = ""; }; + B3982E5D29239F4A00A82429 /* Log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Log.h; sourceTree = ""; }; + B3982E5E29239F4A00A82429 /* LogManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LogManager.cpp; sourceTree = ""; }; + B3982E5F29239F4A00A82429 /* LogManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LogManager.h; sourceTree = ""; }; + B3982E6229239F4A00A82429 /* egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = egl.h; sourceTree = ""; }; + B3982E6329239F4A00A82429 /* eglplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglplatform.h; sourceTree = ""; }; + B3982E6429239F4A00A82429 /* khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; + B3982E6629239F4A00A82429 /* gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2ext.h; sourceTree = ""; }; + B3982E6729239F4A00A82429 /* gl3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3.h; sourceTree = ""; }; + B3982E6829239F4A00A82429 /* gl3platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3platform.h; sourceTree = ""; }; + B3982E6A29239F4A00A82429 /* gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2ext.h; sourceTree = ""; }; + B3982E6B29239F4A00A82429 /* gl2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2.h; sourceTree = ""; }; + B3982E6C29239F4A00A82429 /* gl2platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2platform.h; sourceTree = ""; }; + B3982E6E29239F4A00A82429 /* khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; + B3982E7029239F4A00A82429 /* egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = egl.h; sourceTree = ""; }; + B3982E7129239F4A00A82429 /* eglext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglext.h; sourceTree = ""; }; + B3982E7229239F4A00A82429 /* eglplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglplatform.h; sourceTree = ""; }; + B3982E7429239F4A00A82429 /* vk_layer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_layer.h; sourceTree = ""; }; + B3982E7529239F4A00A82429 /* vk_icd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_icd.h; sourceTree = ""; }; + B3982E7629239F4A00A82429 /* vulkan_vi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_vi.h; sourceTree = ""; }; + B3982E7729239F4A00A82429 /* vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = ""; }; + B3982E7829239F4A00A82429 /* vk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = ""; }; + B3982E7929239F4A00A82429 /* vulkan.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vulkan.hpp; sourceTree = ""; }; + B3982E7A29239F4A00A82429 /* vulkan_fuchsia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_fuchsia.h; sourceTree = ""; }; + B3982E7B29239F4A00A82429 /* vulkan_wayland.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_wayland.h; sourceTree = ""; }; + B3982E7C29239F4A00A82429 /* vulkan_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_win32.h; sourceTree = ""; }; + B3982E7D29239F4A00A82429 /* vulkan_macos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_macos.h; sourceTree = ""; }; + B3982E7E29239F4A00A82429 /* vulkan_xlib_xrandr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib_xrandr.h; sourceTree = ""; }; + B3982E7F29239F4A00A82429 /* vulkan_xcb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xcb.h; sourceTree = ""; }; + B3982E8029239F4A00A82429 /* vulkan_ggp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_ggp.h; sourceTree = ""; }; + B3982E8129239F4A00A82429 /* vulkan_xlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib.h; sourceTree = ""; }; + B3982E8229239F4A00A82429 /* vulkan_ios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_ios.h; sourceTree = ""; }; + B3982E8329239F4A00A82429 /* vulkan_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_core.h; sourceTree = ""; }; + B3982E8429239F4A00A82429 /* vk_sdk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_sdk_platform.h; sourceTree = ""; }; + B3982E8529239F4A00A82429 /* vulkan_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_android.h; sourceTree = ""; }; + B3982E8629239F4A00A82429 /* vulkan_metal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_metal.h; sourceTree = ""; }; + B3982E8829239F4A00A82429 /* gl3w.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl3w.c; sourceTree = ""; }; + B3982E8929239F4A00A82429 /* glext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glext.h; sourceTree = ""; }; + B3982E8A29239F4A00A82429 /* glcorearb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glcorearb.h; sourceTree = ""; }; + B3982E8B29239F4A00A82429 /* gl3w.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3w.h; sourceTree = ""; }; + B3982E8D29239F4A00A82429 /* gl3w.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl3w.c; sourceTree = ""; }; + B3982E8E29239F4A00A82429 /* gl3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3.h; sourceTree = ""; }; + B3982E8F29239F4A00A82429 /* gl3w.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3w.h; sourceTree = ""; }; + B3982E9129239F4A00A82429 /* gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2ext.h; sourceTree = ""; }; + B3982E9229239F4A00A82429 /* gl32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl32.h; sourceTree = ""; }; + B3982E9429239F4A00A82429 /* profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cpp; sourceTree = ""; }; + B3982E9529239F4A00A82429 /* profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = ""; }; + B3982E9629239F4A00A82429 /* dispframe.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dispframe.cpp; sourceTree = ""; }; + B3982E9829239F4A00A82429 /* gui_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui_android.h; sourceTree = ""; }; + B3982E9929239F4A00A82429 /* gui_cheats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gui_cheats.cpp; sourceTree = ""; }; + B3982E9A29239F4A00A82429 /* sorter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sorter.h; sourceTree = ""; }; + B3982E9B29239F4A00A82429 /* tileclip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tileclip.h; sourceTree = ""; }; + B3982E9C29239F4A00A82429 /* mainui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mainui.h; sourceTree = ""; }; + B3982E9E29239F4A00A82429 /* glcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glcache.h; sourceTree = ""; }; + B3982E9F29239F4A00A82429 /* imgui_impl_opengl3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_impl_opengl3.h; sourceTree = ""; }; + B3982EA029239F4A00A82429 /* quad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = quad.cpp; sourceTree = ""; }; + B3982EA129239F4A00A82429 /* postprocess.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = postprocess.cpp; sourceTree = ""; }; + B3982EA229239F4A00A82429 /* gldraw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gldraw.cpp; sourceTree = ""; }; + B3982EA329239F4A00A82429 /* imgui_impl_opengl3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_impl_opengl3.cpp; sourceTree = ""; }; + B3982EA429239F4A00A82429 /* postprocess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = postprocess.h; sourceTree = ""; }; + B3982EA529239F4A00A82429 /* gltex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gltex.cpp; sourceTree = ""; }; + B3982EA629239F4A00A82429 /* gles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gles.h; sourceTree = ""; }; + B3982EA729239F4A00A82429 /* gles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gles.cpp; sourceTree = ""; }; + B3982EA829239F4A00A82429 /* gui_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gui_util.cpp; sourceTree = ""; }; + B3982EA929239F4A00A82429 /* CustomTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomTexture.h; sourceTree = ""; }; + B3982EAA29239F4A00A82429 /* gui_android.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gui_android.cpp; sourceTree = ""; }; + B3982EAB29239F4A00A82429 /* game_scanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_scanner.h; sourceTree = ""; }; + B3982EAD29239F4A00A82429 /* d3d_overlay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_overlay.h; sourceTree = ""; }; + B3982EAE29239F4A00A82429 /* dxcontext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dxcontext.cpp; sourceTree = ""; }; + B3982EAF29239F4A00A82429 /* d3d_shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_shaders.h; sourceTree = ""; }; + B3982EB029239F4A00A82429 /* d3d_renderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_renderer.h; sourceTree = ""; }; + B3982EB129239F4A00A82429 /* d3d_texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_texture.h; sourceTree = ""; }; + B3982EB229239F4A00A82429 /* dxcontext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dxcontext.h; sourceTree = ""; }; + B3982EB329239F4A00A82429 /* comptr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = comptr.h; sourceTree = ""; }; + B3982EB429239F4A00A82429 /* imgui_impl_dx9.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_impl_dx9.cpp; sourceTree = ""; }; + B3982EB529239F4A00A82429 /* d3d_overlay.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d_overlay.cpp; sourceTree = ""; }; + B3982EB629239F4A00A82429 /* d3d_renderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d_renderer.cpp; sourceTree = ""; }; + B3982EB729239F4A00A82429 /* d3d_texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d_texture.cpp; sourceTree = ""; }; + B3982EB829239F4A00A82429 /* imgui_impl_dx9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_impl_dx9.h; sourceTree = ""; }; + B3982EB929239F4A00A82429 /* d3d_shaders.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d_shaders.cpp; sourceTree = ""; }; + B3982EBA29239F4A00A82429 /* gui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = ""; }; + B3982EBB29239F4A00A82429 /* TexCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TexCache.h; sourceTree = ""; }; + B3982EBC29239F4A00A82429 /* CustomTexture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CustomTexture.cpp; sourceTree = ""; }; + B3982EBD29239F4A00A82429 /* gui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gui.cpp; sourceTree = ""; }; + B3982EBE29239F4A00A82429 /* sorter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sorter.cpp; sourceTree = ""; }; + B3982EC029239F4A00A82429 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B3982EC129239F4A00A82429 /* vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = ""; }; + B3982EC229239F4A00A82429 /* overlay.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = overlay.cpp; sourceTree = ""; }; + B3982EC329239F4A00A82429 /* compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = ""; }; + B3982EC429239F4A00A82429 /* commandpool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = commandpool.h; sourceTree = ""; }; + B3982EC529239F4A00A82429 /* compiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = compiler.cpp; sourceTree = ""; }; + B3982EC629239F4A00A82429 /* quad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = quad.h; sourceTree = ""; }; + B3982EC729239F4A00A82429 /* vk_context_lr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_context_lr.h; sourceTree = ""; }; + B3982EC829239F4A00A82429 /* vulkan_context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_context.h; sourceTree = ""; }; + B3982EC929239F4A00A82429 /* overlay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = overlay.h; sourceTree = ""; }; + B3982ECA29239F4A00A82429 /* texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture.cpp; sourceTree = ""; }; + B3982ECB29239F4A00A82429 /* quad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = quad.cpp; sourceTree = ""; }; + B3982ECC29239F4A00A82429 /* shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shaders.h; sourceTree = ""; }; + B3982ECD29239F4A00A82429 /* pipeline.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pipeline.cpp; sourceTree = ""; }; + B3982ECE29239F4A00A82429 /* shaders.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shaders.cpp; sourceTree = ""; }; + B3982ED029239F4A00A82429 /* oit_shaders.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oit_shaders.cpp; sourceTree = ""; }; + B3982ED129239F4A00A82429 /* oit_pipeline.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oit_pipeline.cpp; sourceTree = ""; }; + B3982ED229239F4A00A82429 /* oit_renderpass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oit_renderpass.cpp; sourceTree = ""; }; + B3982ED329239F4A00A82429 /* oit_renderpass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oit_renderpass.h; sourceTree = ""; }; + B3982ED429239F4A00A82429 /* oit_drawer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oit_drawer.cpp; sourceTree = ""; }; + B3982ED529239F4A00A82429 /* oit_shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oit_shaders.h; sourceTree = ""; }; + B3982ED629239F4A00A82429 /* oit_renderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oit_renderer.cpp; sourceTree = ""; }; + B3982ED729239F4A00A82429 /* oit_drawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oit_drawer.h; sourceTree = ""; }; + B3982ED829239F4A00A82429 /* oit_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oit_buffer.h; sourceTree = ""; }; + B3982ED929239F4A00A82429 /* oit_pipeline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oit_pipeline.h; sourceTree = ""; }; + B3982EDA29239F4A00A82429 /* buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = buffer.cpp; sourceTree = ""; }; + B3982EDB29239F4A00A82429 /* buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = ""; }; + B3982EDC29239F4A00A82429 /* vmallocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vmallocator.cpp; sourceTree = ""; }; + B3982EDD29239F4A00A82429 /* vk_mem_alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_mem_alloc.h; sourceTree = ""; }; + B3982EDE29239F4A00A82429 /* vk_context_lr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vk_context_lr.cpp; sourceTree = ""; }; + B3982EDF29239F4A00A82429 /* drawer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = drawer.cpp; sourceTree = ""; }; + B3982EE029239F4A00A82429 /* vulkan_context.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vulkan_context.cpp; sourceTree = ""; }; + B3982EE129239F4A00A82429 /* vmallocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmallocator.h; sourceTree = ""; }; + B3982EE229239F4A00A82429 /* pipeline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline.h; sourceTree = ""; }; + B3982EE329239F4A00A82429 /* texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture.h; sourceTree = ""; }; + B3982EE429239F4A00A82429 /* imgui_impl_vulkan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_impl_vulkan.cpp; sourceTree = ""; }; + B3982EE529239F4A00A82429 /* vulkan_renderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_renderer.h; sourceTree = ""; }; + B3982EE629239F4A00A82429 /* vulkan_renderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vulkan_renderer.cpp; sourceTree = ""; }; + B3982EE729239F4A00A82429 /* imgui_impl_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_impl_vulkan.h; sourceTree = ""; }; + B3982EE829239F4A00A82429 /* drawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = drawer.h; sourceTree = ""; }; + B3982EEA29239F4A00A82429 /* norend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = norend.cpp; sourceTree = ""; }; + B3982EEB29239F4A00A82429 /* TexCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TexCache.cpp; sourceTree = ""; }; + B3982EEC29239F4A00A82429 /* transform_matrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = transform_matrix.h; sourceTree = ""; }; + B3982EED29239F4A00A82429 /* mainui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainui.cpp; sourceTree = ""; }; + B3982EEE29239F4A00A82429 /* shader_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader_util.h; sourceTree = ""; }; + B3982EEF29239F4A00A82429 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B3982EF029239F4A00A82429 /* gui_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui_util.h; sourceTree = ""; }; + B3982EF229239F4A00A82429 /* gldraw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gldraw.cpp; sourceTree = ""; }; + B3982EF329239F4A00A82429 /* abuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = abuffer.cpp; sourceTree = ""; }; + B3982EF429239F4A00A82429 /* gl4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl4.h; sourceTree = ""; }; + B3982EF529239F4A00A82429 /* gles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gles.cpp; sourceTree = ""; }; + B3982EF629239F4A00A82429 /* glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl.h; sourceTree = ""; }; + B3982EF729239F4A00A82429 /* osd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = osd.cpp; sourceTree = ""; }; + B3982EF929239F4A00A82429 /* xinput_gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xinput_gamepad.h; sourceTree = ""; }; + B3982EFA29239F4A00A82429 /* win_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win_keyboard.h; sourceTree = ""; }; + B3982EFB29239F4A00A82429 /* unwind_info.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = unwind_info.cpp; sourceTree = ""; }; + B3982EFC29239F4A00A82429 /* rawinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rawinput.cpp; sourceTree = ""; }; + B3982EFD29239F4A00A82429 /* winmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = winmain.cpp; sourceTree = ""; }; + B3982EFE29239F4A00A82429 /* fault_handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fault_handler.cpp; sourceTree = ""; }; + B3982EFF29239F4A00A82429 /* rawinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rawinput.h; sourceTree = ""; }; + B3982F0029239F4A00A82429 /* win_vmem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = win_vmem.cpp; sourceTree = ""; }; + B3982F0229239F4A00A82429 /* rec_cpp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_cpp.cpp; sourceTree = ""; }; + B3982F0429239F4A00A82429 /* rec_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rec_x86.h; sourceTree = ""; }; + B3982F0529239F4A00A82429 /* x86_regalloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_regalloc.h; sourceTree = ""; }; + B3982F0629239F4A00A82429 /* rec_x86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x86.cpp; sourceTree = ""; }; + B3982F0729239F4A00A82429 /* x86_ops.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x86_ops.cpp; sourceTree = ""; }; + B3982F0929239F4A00A82429 /* x11_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x11_keyboard.h; sourceTree = ""; }; + B3982F0A29239F4A00A82429 /* x11.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x11.cpp; sourceTree = ""; }; + B3982F0B29239F4A00A82429 /* dispmanx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dispmanx.cpp; sourceTree = ""; }; + B3982F0C29239F4A00A82429 /* icon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = icon.h; sourceTree = ""; }; + B3982F0D29239F4A00A82429 /* joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joystick.h; sourceTree = ""; }; + B3982F0E29239F4A00A82429 /* x11.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x11.h; sourceTree = ""; }; + B3982F0F29239F4A00A82429 /* dispmanx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dispmanx.h; sourceTree = ""; }; + B3982F1029239F4A00A82429 /* evdev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = evdev.h; sourceTree = ""; }; + B3982F1129239F4A00A82429 /* joystick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = joystick.cpp; sourceTree = ""; }; + B3982F1229239F4A00A82429 /* evdev_gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = evdev_gamepad.h; sourceTree = ""; }; + B3982F1329239F4A00A82429 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3982F1429239F4A00A82429 /* evdev.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = evdev.cpp; sourceTree = ""; }; + B3982F1629239F4A00A82429 /* gdb_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdb_server.h; sourceTree = ""; }; + B3982F1729239F4A00A82429 /* debug_agent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug_agent.h; sourceTree = ""; }; + B3982F1829239F4A00A82429 /* gdb_server.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdb_server.cpp; sourceTree = ""; }; + B3982F1A29239F4A00A82429 /* reios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reios.h; sourceTree = ""; }; + B3982F1B29239F4A00A82429 /* descrambl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = descrambl.cpp; sourceTree = ""; }; + B3982F1C29239F4A00A82429 /* reios_elf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = reios_elf.cpp; sourceTree = ""; }; + B3982F1D29239F4A00A82429 /* iso9660.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iso9660.h; sourceTree = ""; }; + B3982F1E29239F4A00A82429 /* reios.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = reios.cpp; sourceTree = ""; }; + B3982F1F29239F4A00A82429 /* reios_elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reios_elf.h; sourceTree = ""; }; + B3982F2029239F4A00A82429 /* descrambl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = descrambl.h; sourceTree = ""; }; + B3982F2129239F4A00A82429 /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; + B3982F2229239F4A00A82429 /* gdrom_hle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdrom_hle.h; sourceTree = ""; }; + B3982F2329239F4A00A82429 /* gdrom_hle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdrom_hle.cpp; sourceTree = ""; }; + B3982F2429239F4A00A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3982F2829239F4A00A82429 /* MacOSXBundleInfo.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = MacOSXBundleInfo.plist.in; sourceTree = ""; }; + B3982F2A29239F4A00A82429 /* EmuGLView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmuGLView.swift; sourceTree = ""; }; + B3982F2B29239F4A00A82429 /* osx-main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "osx-main.mm"; sourceTree = ""; }; + B3982F2C29239F4A00A82429 /* osx_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osx_keyboard.h; sourceTree = ""; }; + B3982F2E29239F4A00A82429 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + B3982F2F29239F4A00A82429 /* emulator-osx-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "emulator-osx-Bridging-Header.h"; sourceTree = ""; }; + B3982F3029239F4A00A82429 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + B3982F3129239F4A00A82429 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + B3982F3229239F4A00A82429 /* osx_gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osx_gamepad.h; sourceTree = ""; }; + B3982F3429239F4A00A82429 /* plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = plist.in; sourceTree = ""; }; + B3982F3529239F4A00A82429 /* AltKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = AltKit; sourceTree = ""; }; + B3982F3729239F4A00A82429 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + B3982F3829239F4A00A82429 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + B3982F3929239F4A00A82429 /* PadViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PadViewController.xib; sourceTree = ""; }; + B3982F3A29239F4A00A82429 /* EmulatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmulatorView.h; sourceTree = ""; }; + B3982F3B29239F4A00A82429 /* EmulatorView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = EmulatorView.mm; sourceTree = ""; }; + B3982F3C29239F4A00A82429 /* PadViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PadViewController.mm; sourceTree = ""; }; + B3982F3D29239F4A00A82429 /* ios_mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ios_mouse.h; sourceTree = ""; }; + B3982F3E29239F4A00A82429 /* FlycastViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FlycastViewController.mm; sourceTree = ""; }; + B3982F3F29239F4A00A82429 /* flycast.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = flycast.entitlements; sourceTree = ""; }; + B3982F4029239F4A00A82429 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B3982F4129239F4A00A82429 /* ios_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ios_keyboard.h; sourceTree = ""; }; + B3982F4229239F4A00A82429 /* FlycastViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FlycastViewController.h; sourceTree = ""; }; + B3982F4329239F4A00A82429 /* ios_main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ios_main.mm; sourceTree = ""; }; + B3982F4429239F4A00A82429 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + B3982F4529239F4A00A82429 /* AppDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; + B3982F4629239F4A00A82429 /* PadViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PadViewController.h; sourceTree = ""; }; + B3982F4729239F4A00A82429 /* flycast-ios-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "flycast-ios-Prefix.pch"; sourceTree = ""; }; + B3982F4929239F4A00A82429 /* iCadeReaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iCadeReaderView.m; sourceTree = ""; }; + B3982F4A29239F4A00A82429 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3982F4B29239F4A00A82429 /* iCadeReaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iCadeReaderView.h; sourceTree = ""; }; + B3982F4C29239F4A00A82429 /* iCadeState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iCadeState.h; sourceTree = ""; }; + B3982F4D29239F4A00A82429 /* FlycastStoryboard.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = FlycastStoryboard.storyboard; sourceTree = ""; }; + B3982F4E29239F4A00A82429 /* ios_gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ios_gamepad.h; sourceTree = ""; }; + B3982F4F29239F4A00A82429 /* sdl2.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = sdl2.rb; sourceTree = ""; }; + B3982F5129239F4A00A82429 /* FindSDL2.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindSDL2.cmake; sourceTree = ""; }; + B3982F5229239F4A00A82429 /* FindMiniUPnPc.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindMiniUPnPc.cmake; sourceTree = ""; }; + B3982F5429239F4A00A82429 /* screenshot1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screenshot1.png; sourceTree = ""; }; + B3982F5529239F4A00A82429 /* screenshot2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screenshot2.png; sourceTree = ""; }; + B3982F5629239F4A00A82429 /* screenshot3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screenshot3.png; sourceTree = ""; }; + B3982F5729239F4A00A82429 /* screenshot4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screenshot4.png; sourceTree = ""; }; + B3982F5929239F4A00A82429 /* option_lr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = option_lr.h; sourceTree = ""; }; + B3982F5A29239F4A00A82429 /* libretro_core_option_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_option_defines.h; sourceTree = ""; }; + B3982F5B29239F4A00A82429 /* audiostream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiostream.cpp; sourceTree = ""; }; + B3982F5C29239F4A00A82429 /* vmu_xhair.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmu_xhair.h; sourceTree = ""; }; + B3982F5D29239F4A00A82429 /* oslib.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oslib.cpp; sourceTree = ""; }; + B3982F5E29239F4A00A82429 /* option.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = option.cpp; sourceTree = ""; }; + B3982F5F29239F4A00A82429 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3982F6029239F4A00A82429 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3982F6129239F4A00A82429 /* libretro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cpp; sourceTree = ""; }; + B3982F6229239F4A00A82429 /* vmu_xhair.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vmu_xhair.cpp; sourceTree = ""; }; + B3982F6329239F4A00A82429 /* keyboard_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard_map.h; sourceTree = ""; }; + B3982F6429239F4A00A82429 /* LogManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LogManager.cpp; sourceTree = ""; }; + B3982F6529239F4A00A82429 /* LogManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LogManager.h; sourceTree = ""; }; + B3982F6829239F4A00A82429 /* flycast.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = flycast.1; sourceTree = ""; }; + B3982F6929239F4A00A82429 /* flycast.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = flycast.png; sourceTree = ""; }; + B3982F6A29239F4A00A82429 /* org.flycast.Flycast.metainfo.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = org.flycast.Flycast.metainfo.xml; sourceTree = ""; }; + B3982F6C29239F4A00A82429 /* controller_pandora.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_pandora.cfg; sourceTree = ""; }; + B3982F6D29239F4A00A82429 /* controller_generic.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_generic.cfg; sourceTree = ""; }; + B3982F6E29239F4A00A82429 /* keyboard.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = keyboard.cfg; sourceTree = ""; }; + B3982F6F29239F4A00A82429 /* controller_xpad.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_xpad.cfg; sourceTree = ""; }; + B3982F7029239F4A00A82429 /* controller_xboxdrv.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_xboxdrv.cfg; sourceTree = ""; }; + B3982F7129239F4A00A82429 /* flycast.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = flycast.desktop; sourceTree = ""; }; + B3982F7329239F4A00A82429 /* context_switch.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = context_switch.S; sourceTree = ""; }; + B3982F7429239F4A00A82429 /* flycast.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = flycast.jpeg; sourceTree = ""; }; + B3982F7529239F4A00A82429 /* stubs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stubs.c; sourceTree = ""; }; + B3982F7629239F4A00A82429 /* nswitch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nswitch.h; sourceTree = ""; }; + B3982F7829239F4A00A82429 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3982F7929239F4A00A82429 /* ucontext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ucontext.h; sourceTree = ""; }; + B3982F7C29239F4A00A82429 /* proguard-rules.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = "proguard-rules.pro"; sourceTree = ""; }; + B3982F7E29239F4A00A82429 /* ouya-sdk.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "ouya-sdk.jar"; sourceTree = ""; }; + B3982F7F29239F4A00A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3982F8029239F4A00A82429 /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B3982F8529239F4A00A82429 /* background_dark.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = background_dark.xml; sourceTree = ""; }; + B3982F8729239F4A00A82429 /* colors.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = colors.xml; sourceTree = ""; }; + B3982F8829239F4A00A82429 /* donottranslate.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = donottranslate.xml; sourceTree = ""; }; + B3982F8929239F4A00A82429 /* styles.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = styles.xml; sourceTree = ""; }; + B3982F8B29239F4A00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982F8C29239F4A00A82429 /* ic_banner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_banner.png; sourceTree = ""; }; + B3982F8E29239F4A00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982F9029239F4A00A82429 /* provider_paths.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = provider_paths.xml; sourceTree = ""; }; + B3982F9229239F4A00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982F9429239F4A00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982F9629239F4A00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982F9829239F4A00A82429 /* texture_dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = texture_dark.png; sourceTree = ""; }; + B3982F9929239F4A00A82429 /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; + B3982F9E29239F4A00A82429 /* BaseGLActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = BaseGLActivity.java; sourceTree = ""; }; + B3982F9F29239F4A00A82429 /* Emulator.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Emulator.java; sourceTree = ""; }; + B3982FA129239F4A00A82429 /* VirtualJoystickDelegate.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = VirtualJoystickDelegate.java; sourceTree = ""; }; + B3982FA229239F4A00A82429 /* JNIdc.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = JNIdc.java; sourceTree = ""; }; + B3982FA329239F4A00A82429 /* AudioBackend.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = AudioBackend.java; sourceTree = ""; }; + B3982FA429239F4A00A82429 /* NativeGLView.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = NativeGLView.java; sourceTree = ""; }; + B3982FA529239F4A00A82429 /* NativeGLActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = NativeGLActivity.java; sourceTree = ""; }; + B3982FA729239F4A00A82429 /* Config.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Config.java; sourceTree = ""; }; + B3982FA929239F4A00A82429 /* VJoy.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = VJoy.java; sourceTree = ""; }; + B3982FAA29239F4B00A82429 /* SipEmulator.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SipEmulator.java; sourceTree = ""; }; + B3982FAB29239F4B00A82429 /* InputDeviceManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputDeviceManager.java; sourceTree = ""; }; + B3982FAC29239F4B00A82429 /* FileBrowser.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = FileBrowser.java; sourceTree = ""; }; + B3982FAE29239F4B00A82429 /* GenerateLogs.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GenerateLogs.java; sourceTree = ""; }; + B3982FB129239F4B00A82429 /* android_gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = android_gamepad.h; sourceTree = ""; }; + B3982FB229239F4B00A82429 /* Android.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Android.cpp; sourceTree = ""; }; + B3982FB429239F4B00A82429 /* buttons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttons.png; sourceTree = ""; }; + B3982FB829239F4B00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982FBA29239F4B00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982FBC29239F4B00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982FBE29239F4B00A82429 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B3982FBF29239F4B00A82429 /* ic_launcher-web.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_launcher-web.png"; sourceTree = ""; }; + B3982FC129239F4B00A82429 /* dark_texture.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = dark_texture.psd; sourceTree = ""; }; + B3982FC229239F4B00A82429 /* disk_mipmap.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = disk_mipmap.psd; sourceTree = ""; }; + B3982FC329239F4B00A82429 /* icon_drawable.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = icon_drawable.psd; sourceTree = ""; }; + B3982FC629239F4B00A82429 /* gradle-wrapper.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "gradle-wrapper.jar"; sourceTree = ""; }; + B3982FC729239F4B00A82429 /* gradle-wrapper.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gradle-wrapper.properties"; sourceTree = ""; }; + B3982FC829239F4B00A82429 /* gradlew */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew; sourceTree = ""; }; + B3982FC929239F4B00A82429 /* debug.keystore */ = {isa = PBXFileReference; lastKnownFileType = file; path = debug.keystore; sourceTree = ""; }; + B3982FCA29239F4B00A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3982FCC29239F4B00A82429 /* cd.pdn */ = {isa = PBXFileReference; lastKnownFileType = file; path = cd.pdn; sourceTree = ""; }; + B3982FCD29239F4B00A82429 /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B3982FCE29239F4B00A82429 /* gradle.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradle.properties; sourceTree = ""; }; + B3982FCF29239F4B00A82429 /* gradlew.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew.bat; sourceTree = ""; }; + B3982FD029239F4B00A82429 /* settings.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = settings.gradle; sourceTree = ""; }; + B3982FD229239F4B00A82429 /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B3982FD329239F4B00A82429 /* flycast.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = flycast.ico; sourceTree = ""; }; + B3982FD429239F4B00A82429 /* flycast.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = flycast.rc; sourceTree = ""; }; + B3982FD929239F4B00A82429 /* cs.gdi */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs.gdi; sourceTree = ""; }; + B3982FDB29239F4B00A82429 /* cs02.raw */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs02.raw; sourceTree = ""; }; + B3982FDC29239F4B00A82429 /* cs03.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cs03.bin; sourceTree = ""; }; + B3982FDD29239F4B00A82429 /* cs01.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cs01.bin; sourceTree = ""; }; + B3982FDF29239F4B00A82429 /* cs.gdi */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs.gdi; sourceTree = ""; }; + B3982FE129239F4B00A82429 /* cs02.raw */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs02.raw; sourceTree = ""; }; + B3982FE229239F4B00A82429 /* cs03.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cs03.bin; sourceTree = ""; }; + B3982FE329239F4B00A82429 /* cs01.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cs01.bin; sourceTree = ""; }; + B3982FE529239F4B00A82429 /* cs02.raw */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs02.raw; sourceTree = ""; }; + B3982FE629239F4B00A82429 /* cs.gdi */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs.gdi; sourceTree = ""; }; + B3982FE729239F4B00A82429 /* cs (0,1).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "cs (0,1).bin"; sourceTree = ""; }; + B3982FE829239F4B00A82429 /* cs03.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cs03.bin; sourceTree = ""; }; + B3982FEA29239F4B00A82429 /* cs02.raw */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs02.raw; sourceTree = ""; }; + B3982FEB29239F4B00A82429 /* cs.gdi */ = {isa = PBXFileReference; lastKnownFileType = text; path = cs.gdi; sourceTree = ""; }; + B3982FEC29239F4B00A82429 /* cs03.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cs03.bin; sourceTree = ""; }; + B3982FED29239F4B00A82429 /* cs01.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cs01.bin; sourceTree = ""; }; + B3982FEF29239F4B00A82429 /* sh4_ops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_ops.h; sourceTree = ""; }; + B3982FF029239F4B00A82429 /* AicaArmTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AicaArmTest.cpp; sourceTree = ""; }; + B3982FF129239F4B00A82429 /* test_stubs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_stubs.cpp; sourceTree = ""; }; + B3982FF229239F4B00A82429 /* Sh4InterpreterTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sh4InterpreterTest.cpp; sourceTree = ""; }; + B3982FF329239F4B00A82429 /* div32_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = div32_test.cpp; sourceTree = ""; }; + B3982FF429239F4B00A82429 /* serialize_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = serialize_test.cpp; sourceTree = ""; }; + B3982FF629239F4B00A82429 /* Naomi_Overview.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Naomi_Overview.md; sourceTree = ""; }; + B3982FF729239F4B00A82429 /* Dynarec Architecture.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "Dynarec Architecture.md"; sourceTree = ""; }; + B3982FF829239F4B00A82429 /* microphone support notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microphone support notes.txt"; sourceTree = ""; }; + B3982FF929239F4B00A82429 /* DreamCast_Specs.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = DreamCast_Specs.md; sourceTree = ""; }; + B3982FFA29239F4B00A82429 /* neil_corlett_aica_notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = neil_corlett_aica_notes.txt; sourceTree = ""; }; + B3982FFB29239F4B00A82429 /* Notable game bugs.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "Notable game bugs.md"; sourceTree = ""; }; + B3982FFC29239F4B00A82429 /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; + B3982FFD29239F4B00A82429 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3982FFE29239F4B00A82429 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B398300029239F4B00A82429 /* FUNDING.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = FUNDING.yml; sourceTree = ""; }; + B398300229239F4B00A82429 /* switch.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = switch.yml; sourceTree = ""; }; + B398300329239F4B00A82429 /* android.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = android.yml; sourceTree = ""; }; + B398300429239F4B00A82429 /* c-cpp.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "c-cpp.yml"; sourceTree = ""; }; + B398300629239F4B00A82429 /* feature_request.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = feature_request.md; sourceTree = ""; }; + B398300729239F4B00A82429 /* bug_report.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = bug_report.md; sourceTree = ""; }; + B398300829239F4B00A82429 /* .cirrus.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .cirrus.yml; sourceTree = ""; }; + B398300A29239F4B00A82429 /* gdtool.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gdtool.vcxproj.filters; sourceTree = ""; }; + B398300B29239F4B00A82429 /* gdtool.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = gdtool.sln; sourceTree = ""; }; + B398300C29239F4B00A82429 /* gdtool.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gdtool.vcxproj; sourceTree = ""; }; + B398300D29239F4B00A82429 /* gdtool.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gdtool.vcxproj.user; sourceTree = ""; }; + B398300F29239F4B00A82429 /* cdromfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdromfs.h; sourceTree = ""; }; + B398301029239F4B00A82429 /* cdromfs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdromfs.cpp; sourceTree = ""; }; + B398301129239F4B00A82429 /* cdromfs_imp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdromfs_imp.h; sourceTree = ""; }; + B398301229239F4B00A82429 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B39E12A028925DD900016387 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39E12A428925DEB00016387 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVFlycast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFlycast.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621320783162009950E4 /* PVFlycast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFlycast.h; sourceTree = ""; }; + B3C7621420783162009950E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C76223207833DE009950E4 /* PVFlycastCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFlycastCore.h; sourceTree = ""; }; + B3C76224207833DE009950E4 /* PVFlycastCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVFlycastCore.mm; sourceTree = ""; }; + B3C7622720783510009950E4 /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libflycast.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B39E12A128925DD900016387 /* PVLibRetro.framework in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B3447EA8218BC51300557ACE /* Audio */ = { + isa = PBXGroup; + children = ( + B3447EA2218BBFB700557ACE /* PVFlycast+AudioTypes.h */, + B3447E9A218B826F00557ACE /* PVFlycast+Audio.h */, + B3447E9B218B826F00557ACE /* PVFlycast+Audio.mm */, + B3447EA6218BC3A600557ACE /* PVFlycast+CoreAudio.h */, + B3447EA4218BC36B00557ACE /* PVFlycast+CoreAudio.mm */, + ); + path = Audio; + sourceTree = ""; + }; + B3447EB5218BCE2000557ACE /* Core */ = { + isa = PBXGroup; + children = ( + B3C76223207833DE009950E4 /* PVFlycastCore.h */, + B3C76224207833DE009950E4 /* PVFlycastCore.mm */, + B3447EB1218BC69700557ACE /* PVFlycastCore+Audio.h */, + B3447EB2218BC69700557ACE /* PVFlycastCore+Audio.m */, + B3447EAD218BC5C500557ACE /* PVFlycastCore+Video.h */, + B3447EAE218BC5C500557ACE /* PVFlycastCore+Video.m */, + B3447EA9218BC59D00557ACE /* PVFlycastCore+Saves.h */, + B3447EAA218BC59D00557ACE /* PVFlycastCore+Saves.m */, + B3447E96218B809200557ACE /* PVFlycastCore+Controls.h */, + B3447E97218B809300557ACE /* PVFlycastCore+Controls.mm */, + ); + path = Core; + sourceTree = ""; + }; + B3980D8329239F3600A82429 /* flycast */ = { + isa = PBXGroup; + children = ( + B3982FFE29239F4B00A82429 /* .gitignore */, + B3982FFC29239F4B00A82429 /* .gitmodules */, + B3982F2429239F4A00A82429 /* LICENSE */, + B3982FFD29239F4B00A82429 /* README.md */, + B3980D8429239F3600A82429 /* CMakeLists.txt */, + B398300829239F4B00A82429 /* .cirrus.yml */, + B3982FFF29239F4B00A82429 /* .github */, + B3980D8529239F3600A82429 /* core */, + B3982FF529239F4B00A82429 /* docs */, + B398300929239F4B00A82429 /* gdtool */, + B3982F2529239F4A00A82429 /* shell */, + B3982FD529239F4B00A82429 /* tests */, + ); + path = flycast; + sourceTree = ""; + }; + B3980D8529239F3600A82429 /* core */ = { + isa = PBXGroup; + children = ( + B3980E6829239F3700A82429 /* .gitignore */, + B3980D8B29239F3600A82429 /* cheats.cpp */, + B3982E9629239F4A00A82429 /* dispframe.cpp */, + B3980E4629239F3700A82429 /* emulator.cpp */, + B3980E6529239F3700A82429 /* nullDC.cpp */, + B3980D8A29239F3600A82429 /* serialize.cpp */, + B3980E8D29239F3700A82429 /* stdclass.cpp */, + B3980E3D29239F3600A82429 /* build.h */, + B3980E6429239F3700A82429 /* cheats.h */, + B3980E6229239F3700A82429 /* emulator.h */, + B3980E8C29239F3700A82429 /* stdclass.h */, + B3980E3E29239F3600A82429 /* types.h */, + B3980E3C29239F3600A82429 /* version.h.in */, + B3980E6329239F3700A82429 /* README.md */, + B3980E3329239F3600A82429 /* archive */, + B3980E5A29239F3700A82429 /* cfg */, + B3982F1529239F4A00A82429 /* debug */, + B3980E8E29239F3700A82429 /* deps */, + B3980D8C29239F3600A82429 /* hw */, + B3980E5129239F3700A82429 /* imgread */, + B3980E3F29239F3600A82429 /* input */, + B3982E6029239F4A00A82429 /* khronos */, + B3980E8629239F3700A82429 /* linux */, + B3982F0829239F4A00A82429 /* linux-dist */, + B3982E5629239F4A00A82429 /* log */, + B3980E4729239F3700A82429 /* network */, + B3982E4529239F4A00A82429 /* oslib */, + B3982E9329239F4A00A82429 /* profiler */, + B3980E6629239F3700A82429 /* rec-ARM */, + B3980E6929239F3700A82429 /* rec-ARM64 */, + B3982F0129239F4A00A82429 /* rec-cpp */, + B3980D8629239F3600A82429 /* rec-x64 */, + B3982F0329239F4A00A82429 /* rec-x86 */, + B3982F1929239F4A00A82429 /* reios */, + B3982E9729239F4A00A82429 /* rend */, + B3980E8129239F3700A82429 /* sdl */, + B3982EF829239F4A00A82429 /* windows */, + B3980E6D29239F3700A82429 /* wsi */, + ); + path = core; + sourceTree = ""; + }; + B3980D8629239F3600A82429 /* rec-x64 */ = { + isa = PBXGroup; + children = ( + B3980D8729239F3600A82429 /* rec_x64.cpp */, + B3980D8829239F3600A82429 /* xbyak_base.h */, + B3980D8929239F3600A82429 /* x64_regalloc.h */, + ); + path = "rec-x64"; + sourceTree = ""; + }; + B3980D8C29239F3600A82429 /* hw */ = { + isa = PBXGroup; + children = ( + B3980D8D29239F3600A82429 /* holly */, + B3980D9429239F3600A82429 /* sh4 */, + B3980DCB29239F3600A82429 /* gdrom */, + B3980DD129239F3600A82429 /* pvr */, + B3980DE529239F3600A82429 /* flashrom */, + B3980DE829239F3600A82429 /* naomi */, + B3980E0129239F3600A82429 /* maple */, + B3980E0B29239F3600A82429 /* modem */, + B3980E0F29239F3600A82429 /* arm7 */, + B3980E1B29239F3600A82429 /* aica */, + B3980E2B29239F3600A82429 /* bba */, + B3980E3029239F3600A82429 /* mem */, + ); + path = hw; + sourceTree = ""; + }; + B3980D8D29239F3600A82429 /* holly */ = { + isa = PBXGroup; + children = ( + B3980D8E29239F3600A82429 /* holly_intc.h */, + B3980D8F29239F3600A82429 /* sb.h */, + B3980D9029239F3600A82429 /* sb_mem.cpp */, + B3980D9129239F3600A82429 /* sb.cpp */, + B3980D9229239F3600A82429 /* holly_intc.cpp */, + B3980D9329239F3600A82429 /* sb_mem.h */, + ); + path = holly; + sourceTree = ""; + }; + B3980D9429239F3600A82429 /* sh4 */ = { + isa = PBXGroup; + children = ( + B3980D9529239F3600A82429 /* sh4_cache.h */, + B3980D9629239F3600A82429 /* sh4_rom.h */, + B3980D9729239F3600A82429 /* dyna */, + B3980DA529239F3600A82429 /* sh4_opcode_list.h */, + B3980DA629239F3600A82429 /* sh4_if.h */, + B3980DA729239F3600A82429 /* sh4_interpreter.h */, + B3980DA829239F3600A82429 /* fsca-table.h */, + B3980DA929239F3600A82429 /* sh4_sched.cpp */, + B3980DAA29239F3600A82429 /* sh4_opcode_list.cpp */, + B3980DAB29239F3600A82429 /* sh4_mmr.h */, + B3980DAC29239F3600A82429 /* sh4_mem.h */, + B3980DAD29239F3600A82429 /* sh4_mem.cpp */, + B3980DAE29239F3600A82429 /* interpr */, + B3980DB329239F3600A82429 /* sh4_interrupts.cpp */, + B3980DB429239F3600A82429 /* sh4_interrupts.h */, + B3980DB529239F3600A82429 /* sh4_core_regs.cpp */, + B3980DB629239F3600A82429 /* sh4_mmr.cpp */, + B3980DB729239F3600A82429 /* modules */, + B3980DC829239F3600A82429 /* sh4_rom.cpp */, + B3980DC929239F3600A82429 /* sh4_core.h */, + B3980DCA29239F3600A82429 /* sh4_sched.h */, + ); + path = sh4; + sourceTree = ""; + }; + B3980D9729239F3600A82429 /* dyna */ = { + isa = PBXGroup; + children = ( + B3980D9829239F3600A82429 /* shil.cpp */, + B3980D9929239F3600A82429 /* shil.h */, + B3980D9A29239F3600A82429 /* ngen.h */, + B3980D9B29239F3600A82429 /* decoder.h */, + B3980D9C29239F3600A82429 /* driver.cpp */, + B3980D9D29239F3600A82429 /* ssa_regalloc.h */, + B3980D9E29239F3600A82429 /* decoder.cpp */, + B3980D9F29239F3600A82429 /* ssa.cpp */, + B3980DA029239F3600A82429 /* blockmanager.cpp */, + B3980DA129239F3600A82429 /* blockmanager.h */, + B3980DA229239F3600A82429 /* shil_canonical.h */, + B3980DA329239F3600A82429 /* ssa.h */, + B3980DA429239F3600A82429 /* decoder_opcodes.h */, + ); + path = dyna; + sourceTree = ""; + }; + B3980DAE29239F3600A82429 /* interpr */ = { + isa = PBXGroup; + children = ( + B3980DAF29239F3600A82429 /* sh4_opcodes.cpp */, + B3980DB029239F3600A82429 /* sh4_interpreter.cpp */, + B3980DB129239F3600A82429 /* sh4_opcodes.h */, + B3980DB229239F3600A82429 /* sh4_fpu.cpp */, + ); + path = interpr; + sourceTree = ""; + }; + B3980DB729239F3600A82429 /* modules */ = { + isa = PBXGroup; + children = ( + B3980DB829239F3600A82429 /* ubc.cpp */, + B3980DB929239F3600A82429 /* intc.cpp */, + B3980DBA29239F3600A82429 /* mmu.h */, + B3980DBB29239F3600A82429 /* bsc.cpp */, + B3980DBC29239F3600A82429 /* ccn.cpp */, + B3980DBD29239F3600A82429 /* dmac.h */, + B3980DBE29239F3600A82429 /* modules.h */, + B3980DBF29239F3600A82429 /* fastmmu.cpp */, + B3980DC029239F3600A82429 /* dmac.cpp */, + B3980DC129239F3600A82429 /* serial.cpp */, + B3980DC229239F3600A82429 /* rtc.cpp */, + B3980DC329239F3600A82429 /* tmu.cpp */, + B3980DC429239F3600A82429 /* mmu.cpp */, + B3980DC529239F3600A82429 /* ccn.h */, + B3980DC629239F3600A82429 /* cpg.cpp */, + B3980DC729239F3600A82429 /* wince.h */, + ); + path = modules; + sourceTree = ""; + }; + B3980DCB29239F3600A82429 /* gdrom */ = { + isa = PBXGroup; + children = ( + B3980DCC29239F3600A82429 /* gdrom_response.cpp */, + B3980DCD29239F3600A82429 /* gdromv3.cpp */, + B3980DCE29239F3600A82429 /* README.md */, + B3980DCF29239F3600A82429 /* gdromv3.h */, + B3980DD029239F3600A82429 /* gdrom_if.h */, + ); + path = gdrom; + sourceTree = ""; + }; + B3980DD129239F3600A82429 /* pvr */ = { + isa = PBXGroup; + children = ( + B3980DD229239F3600A82429 /* ta_structs.h */, + B3980DD329239F3600A82429 /* ta_ctx.cpp */, + B3980DD429239F3600A82429 /* pvr_mem.cpp */, + B3980DD529239F3600A82429 /* Renderer_if.h */, + B3980DD629239F3600A82429 /* ta_ctx.h */, + B3980DD729239F3600A82429 /* spg.cpp */, + B3980DD829239F3600A82429 /* pvr_sb_regs.h */, + B3980DD929239F3600A82429 /* pvr_mem.h */, + B3980DDA29239F3600A82429 /* pvr_sb_regs.cpp */, + B3980DDB29239F3600A82429 /* helper_classes.h */, + B3980DDC29239F3600A82429 /* ta.h */, + B3980DDD29239F3600A82429 /* spg.h */, + B3980DDE29239F3600A82429 /* pvr_regs.h */, + B3980DDF29239F3600A82429 /* drkPvr.cpp */, + B3980DE029239F3600A82429 /* Renderer_if.cpp */, + B3980DE129239F3600A82429 /* ta_vtx.cpp */, + B3980DE229239F3600A82429 /* ta_const_df.h */, + B3980DE329239F3600A82429 /* pvr_regs.cpp */, + B3980DE429239F3600A82429 /* ta.cpp */, + ); + path = pvr; + sourceTree = ""; + }; + B3980DE529239F3600A82429 /* flashrom */ = { + isa = PBXGroup; + children = ( + B3980DE629239F3600A82429 /* flashrom.h */, + B3980DE729239F3600A82429 /* flashrom.cpp */, + ); + path = flashrom; + sourceTree = ""; + }; + B3980DE829239F3600A82429 /* naomi */ = { + isa = PBXGroup; + children = ( + B3980DE929239F3600A82429 /* awcartridge.cpp */, + B3980DEA29239F3600A82429 /* naomi_roms_input.h */, + B3980DEB29239F3600A82429 /* decrypt.h */, + B3980DEC29239F3600A82429 /* naomi_regs.h */, + B3980DED29239F3600A82429 /* decrypt.cpp */, + B3980DEE29239F3600A82429 /* naomi_flashrom.h */, + B3980DEF29239F3600A82429 /* m1cartridge.h */, + B3980DF029239F3600A82429 /* m4cartridge.h */, + B3980DF129239F3600A82429 /* naomi_cart.h */, + B3980DF229239F3600A82429 /* m1cartridge.cpp */, + B3980DF329239F3600A82429 /* gdcartridge.cpp */, + B3980DF429239F3600A82429 /* m4cartridge.cpp */, + B3980DF529239F3600A82429 /* naomi_flashrom.cpp */, + B3980DF629239F3600A82429 /* naomi_roms.h */, + B3980DF729239F3600A82429 /* naomi_cart.cpp */, + B3980DF829239F3600A82429 /* awcartridge.h */, + B3980DF929239F3600A82429 /* naomi_m3comm.cpp */, + B3980DFA29239F3600A82429 /* naomi.h */, + B3980DFB29239F3600A82429 /* naomi_roms_eeprom.h */, + B3980DFC29239F3600A82429 /* naomi_roms.cpp */, + B3980DFD29239F3600A82429 /* naomi.cpp */, + B3980DFE29239F3600A82429 /* awave_regs.h */, + B3980DFF29239F3600A82429 /* naomi_m3comm.h */, + B3980E0029239F3600A82429 /* gdcartridge.h */, + ); + path = naomi; + sourceTree = ""; + }; + B3980E0129239F3600A82429 /* maple */ = { + isa = PBXGroup; + children = ( + B3980E0229239F3600A82429 /* maple_helper.h */, + B3980E0329239F3600A82429 /* maple_if.cpp */, + B3980E0429239F3600A82429 /* maple_jvs.cpp */, + B3980E0529239F3600A82429 /* maple_helper.cpp */, + B3980E0629239F3600A82429 /* maple_cfg.h */, + B3980E0729239F3600A82429 /* maple_cfg.cpp */, + B3980E0829239F3600A82429 /* maple_devs.h */, + B3980E0929239F3600A82429 /* maple_if.h */, + B3980E0A29239F3600A82429 /* maple_devs.cpp */, + ); + path = maple; + sourceTree = ""; + }; + B3980E0B29239F3600A82429 /* modem */ = { + isa = PBXGroup; + children = ( + B3980E0C29239F3600A82429 /* modem_regs.h */, + B3980E0D29239F3600A82429 /* modem.h */, + B3980E0E29239F3600A82429 /* modem.cpp */, + ); + path = modem; + sourceTree = ""; + }; + B3980E0F29239F3600A82429 /* arm7 */ = { + isa = PBXGroup; + children = ( + B3980E1029239F3600A82429 /* arm_mem.cpp */, + B3980E1129239F3600A82429 /* arm_mem.h */, + B3980E1229239F3600A82429 /* arm7_rec_x64.cpp */, + B3980E1329239F3600A82429 /* arm7_rec.h */, + B3980E1429239F3600A82429 /* arm7.h */, + B3980E1529239F3600A82429 /* arm7.cpp */, + B3980E1629239F3600A82429 /* arm7_rec_arm32.cpp */, + B3980E1729239F3600A82429 /* vbaARM.cpp */, + B3980E1829239F3600A82429 /* arm7_rec.cpp */, + B3980E1929239F3600A82429 /* arm7_rec_arm64.cpp */, + B3980E1A29239F3600A82429 /* arm-new.h */, + ); + path = arm7; + sourceTree = ""; + }; + B3980E1B29239F3600A82429 /* aica */ = { + isa = PBXGroup; + children = ( + B3980E1C29239F3600A82429 /* aica_if.cpp */, + B3980E1D29239F3600A82429 /* dsp_x64.cpp */, + B3980E1E29239F3600A82429 /* aica.h */, + B3980E1F29239F3600A82429 /* dsp_arm64.cpp */, + B3980E2029239F3600A82429 /* dsp.cpp */, + B3980E2129239F3600A82429 /* aica_mem.cpp */, + B3980E2229239F3600A82429 /* dsp_x86.cpp */, + B3980E2329239F3600A82429 /* aica.cpp */, + B3980E2429239F3600A82429 /* aica_mem.h */, + B3980E2529239F3600A82429 /* dsp.h */, + B3980E2629239F3600A82429 /* dsp_interp.cpp */, + B3980E2729239F3600A82429 /* sgc_if.h */, + B3980E2829239F3600A82429 /* dsp_arm32.cpp */, + B3980E2929239F3600A82429 /* aica_if.h */, + B3980E2A29239F3600A82429 /* sgc_if.cpp */, + ); + path = aica; + sourceTree = ""; + }; + B3980E2B29239F3600A82429 /* bba */ = { + isa = PBXGroup; + children = ( + B3980E2C29239F3600A82429 /* rtl8139c.h */, + B3980E2D29239F3600A82429 /* bba.h */, + B3980E2E29239F3600A82429 /* rtl8139c.cpp */, + B3980E2F29239F3600A82429 /* bba.cpp */, + ); + path = bba; + sourceTree = ""; + }; + B3980E3029239F3600A82429 /* mem */ = { + isa = PBXGroup; + children = ( + B3980E3129239F3600A82429 /* _vmem.h */, + B3980E3229239F3600A82429 /* _vmem.cpp */, + ); + path = mem; + sourceTree = ""; + }; + B3980E3329239F3600A82429 /* archive */ = { + isa = PBXGroup; + children = ( + B3980E3429239F3600A82429 /* rzip.h */, + B3980E3529239F3600A82429 /* ZipArchive.cpp */, + B3980E3629239F3600A82429 /* 7zArchive.cpp */, + B3980E3729239F3600A82429 /* archive.h */, + B3980E3829239F3600A82429 /* ZipArchive.h */, + B3980E3929239F3600A82429 /* rzip.cpp */, + B3980E3A29239F3600A82429 /* archive.cpp */, + B3980E3B29239F3600A82429 /* 7zArchive.h */, + ); + path = archive; + sourceTree = ""; + }; + B3980E3F29239F3600A82429 /* input */ = { + isa = PBXGroup; + children = ( + B3980E4029239F3600A82429 /* mapping.h */, + B3980E4129239F3600A82429 /* gamepad_device.cpp */, + B3980E4229239F3600A82429 /* mapping.cpp */, + B3980E4329239F3600A82429 /* gamepad_device.h */, + B3980E4429239F3700A82429 /* keyboard_device.h */, + B3980E4529239F3700A82429 /* gamepad.h */, + ); + path = input; + sourceTree = ""; + }; + B3980E4729239F3700A82429 /* network */ = { + isa = PBXGroup; + children = ( + B3980E4829239F3700A82429 /* naomi_network.h */, + B3980E4929239F3700A82429 /* naomi_network.cpp */, + B3980E4A29239F3700A82429 /* picoppp.cpp */, + B3980E4B29239F3700A82429 /* picoppp.h */, + B3980E4C29239F3700A82429 /* miniupnp.h */, + B3980E4D29239F3700A82429 /* ifaddrs.c */, + B3980E4E29239F3700A82429 /* miniupnp.cpp */, + B3980E4F29239F3700A82429 /* dns.cpp */, + B3980E5029239F3700A82429 /* net_platform.h */, + ); + path = network; + sourceTree = ""; + }; + B3980E5129239F3700A82429 /* imgread */ = { + isa = PBXGroup; + children = ( + B3980E5229239F3700A82429 /* gdi.cpp */, + B3980E5329239F3700A82429 /* common.cpp */, + B3980E5429239F3700A82429 /* cdi.cpp */, + B3980E5529239F3700A82429 /* ImgReader.cpp */, + B3980E5629239F3700A82429 /* cue.cpp */, + B3980E5729239F3700A82429 /* common.h */, + B3980E5829239F3700A82429 /* ioctl.cpp */, + B3980E5929239F3700A82429 /* chd.cpp */, + ); + path = imgread; + sourceTree = ""; + }; + B3980E5A29239F3700A82429 /* cfg */ = { + isa = PBXGroup; + children = ( + B3980E5B29239F3700A82429 /* cfg.cpp */, + B3980E5C29239F3700A82429 /* ini.h */, + B3980E5D29239F3700A82429 /* option.h */, + B3980E5E29239F3700A82429 /* option.cpp */, + B3980E5F29239F3700A82429 /* ini.cpp */, + B3980E6029239F3700A82429 /* cl.cpp */, + B3980E6129239F3700A82429 /* cfg.h */, + ); + path = cfg; + sourceTree = ""; + }; + B3980E6629239F3700A82429 /* rec-ARM */ = { + isa = PBXGroup; + children = ( + B3980E6729239F3700A82429 /* rec_arm.cpp */, + ); + path = "rec-ARM"; + sourceTree = ""; + }; + B3980E6929239F3700A82429 /* rec-ARM64 */ = { + isa = PBXGroup; + children = ( + B3980E6A29239F3700A82429 /* rec_arm64.cpp */, + B3980E6B29239F3700A82429 /* arm64_regalloc.h */, + B3980E6C29239F3700A82429 /* arm64_unwind.h */, + ); + path = "rec-ARM64"; + sourceTree = ""; + }; + B3980E6D29239F3700A82429 /* wsi */ = { + isa = PBXGroup; + children = ( + B3980E6E29239F3700A82429 /* egl.h */, + B3980E6F29239F3700A82429 /* osx.cpp */, + B3980E7029239F3700A82429 /* wgl.h */, + B3980E7129239F3700A82429 /* wgl.cpp */, + B3980E7229239F3700A82429 /* gl32funcs.h */, + B3980E7329239F3700A82429 /* context.h */, + B3980E7429239F3700A82429 /* gl4funcs.cpp */, + B3980E7529239F3700A82429 /* gl_context.cpp */, + B3980E7629239F3700A82429 /* sdl.cpp */, + B3980E7729239F3700A82429 /* libretro.h */, + B3980E7829239F3700A82429 /* switcher.cpp */, + B3980E7929239F3700A82429 /* libretro.cpp */, + B3980E7A29239F3700A82429 /* gl32funcs.c */, + B3980E7B29239F3700A82429 /* egl.cpp */, + B3980E7C29239F3700A82429 /* xgl.h */, + B3980E7D29239F3700A82429 /* sdl.h */, + B3980E7E29239F3700A82429 /* osx.h */, + B3980E7F29239F3700A82429 /* gl_context.h */, + B3980E8029239F3700A82429 /* xgl.cpp */, + ); + path = wsi; + sourceTree = ""; + }; + B3980E8129239F3700A82429 /* sdl */ = { + isa = PBXGroup; + children = ( + B3980E8229239F3700A82429 /* sdl_keyboard.h */, + B3980E8329239F3700A82429 /* sdl_gamepad.h */, + B3980E8429239F3700A82429 /* sdl.cpp */, + B3980E8529239F3700A82429 /* sdl.h */, + ); + path = sdl; + sourceTree = ""; + }; + B3980E8629239F3700A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B3980E8729239F3700A82429 /* common.cpp */, + B3980E8829239F3700A82429 /* posix_vmem.cpp */, + B3980E8929239F3700A82429 /* context.cpp */, + B3980E8A29239F3700A82429 /* unwind_info.cpp */, + B3980E8B29239F3700A82429 /* libnx_vmem.cpp */, + ); + path = linux; + sourceTree = ""; + }; + B3980E8E29239F3700A82429 /* deps */ = { + isa = PBXGroup; + children = ( + B3980E8F29239F3700A82429 /* nowide */, + B3980EBA29239F3700A82429 /* vixl */, + B3980EF429239F3700A82429 /* xbrz */, + B3980EFB29239F3700A82429 /* miniupnpc */, + B3980F6A29239F3700A82429 /* volk */, + B3980F8329239F3700A82429 /* patches */, + B3980F8529239F3700A82429 /* oboe */, + B3980FB529239F3700A82429 /* imgui */, + B3980FC129239F3700A82429 /* dirent */, + B3980FC329239F3700A82429 /* libchdr */, + B398103229239F3700A82429 /* picotcp */, + B39810A529239F3700A82429 /* glslang */, + B39819DB29239F3F00A82429 /* stb */, + B39819DE29239F3F00A82429 /* xbyak */, + B3981A3B29239F3F00A82429 /* gtest */, + B3981A6129239F3F00A82429 /* SDL */, + B398217629239F4300A82429 /* libelf */, + B398217E29239F4300A82429 /* libretro-common */, + B39821F129239F4300A82429 /* chdpsr */, + B39821F429239F4300A82429 /* xxHash */, + B398222F29239F4300A82429 /* libzip */, + B398242B29239F4400A82429 /* glm */, + B39829E129239F4700A82429 /* breakpad */, + B3982E1A29239F4900A82429 /* lzma */, + ); + path = deps; + sourceTree = ""; + }; + B3980E8F29239F3700A82429 /* nowide */ = { + isa = PBXGroup; + children = ( + B3980E9029239F3700A82429 /* CMakeLists.txt */, + B3980E9129239F3700A82429 /* test */, + B3980E9929239F3700A82429 /* include */, + B3980EAB29239F3700A82429 /* Doxyfile.in */, + B3980EAC29239F3700A82429 /* contrib */, + B3980EB629239F3700A82429 /* README.md */, + B3980EB729239F3700A82429 /* COPYING */, + B3980EB829239F3700A82429 /* src */, + ); + path = nowide; + sourceTree = ""; + }; + B3980E9129239F3700A82429 /* test */ = { + isa = PBXGroup; + children = ( + B3980E9229239F3700A82429 /* test_convert.cpp */, + B3980E9329239F3700A82429 /* test_iostream.cpp */, + B3980E9429239F3700A82429 /* test_fstream.cpp */, + B3980E9529239F3700A82429 /* test_system.cpp */, + B3980E9629239F3700A82429 /* test.hpp */, + B3980E9729239F3700A82429 /* test_env.cpp */, + B3980E9829239F3700A82429 /* test_stdio.cpp */, + ); + path = test; + sourceTree = ""; + }; + B3980E9929239F3700A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3980E9A29239F3700A82429 /* nowide */, + ); + path = include; + sourceTree = ""; + }; + B3980E9A29239F3700A82429 /* nowide */ = { + isa = PBXGroup; + children = ( + B3980E9B29239F3700A82429 /* iostream.hpp */, + B3980E9C29239F3700A82429 /* scoped_ptr.hpp */, + B3980E9D29239F3700A82429 /* utf.hpp */, + B3980E9E29239F3700A82429 /* config.hpp */, + B3980E9F29239F3700A82429 /* system.hpp */, + B3980EA029239F3700A82429 /* encoding_errors.hpp */, + B3980EA129239F3700A82429 /* cstdio.hpp */, + B3980EA229239F3700A82429 /* stackstring.hpp */, + B3980EA329239F3700A82429 /* cenv.hpp */, + B3980EA429239F3700A82429 /* encoding_utf.hpp */, + B3980EA529239F3700A82429 /* windows.hpp */, + B3980EA629239F3700A82429 /* cstdlib.hpp */, + B3980EA729239F3700A82429 /* args.hpp */, + B3980EA829239F3700A82429 /* fstream.hpp */, + B3980EA929239F3700A82429 /* filebuf.hpp */, + B3980EAA29239F3700A82429 /* convert.hpp */, + ); + path = nowide; + sourceTree = ""; + }; + B3980EAC29239F3700A82429 /* contrib */ = { + isa = PBXGroup; + children = ( + B3980EAD29239F3700A82429 /* MSVC */, + B3980EB329239F3700A82429 /* CMake */, + ); + path = contrib; + sourceTree = ""; + }; + B3980EAD29239F3700A82429 /* MSVC */ = { + isa = PBXGroup; + children = ( + B3980EAE29239F3700A82429 /* NoWide-Android.vcxproj */, + B3980EAF29239F3700A82429 /* NoWide-Windows.vcxproj */, + B3980EB029239F3700A82429 /* NoWide-Android.vcxproj.filters */, + B3980EB129239F3700A82429 /* NoWide.sln */, + B3980EB229239F3700A82429 /* NoWide-Windows.vcxproj.filters */, + ); + path = MSVC; + sourceTree = ""; + }; + B3980EB329239F3700A82429 /* CMake */ = { + isa = PBXGroup; + children = ( + B3980EB429239F3700A82429 /* modules */, + ); + path = CMake; + sourceTree = ""; + }; + B3980EB429239F3700A82429 /* modules */ = { + isa = PBXGroup; + children = ( + B3980EB529239F3700A82429 /* FindHHC.cmake */, + ); + path = modules; + sourceTree = ""; + }; + B3980EB829239F3700A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3980EB929239F3700A82429 /* iostream.cpp */, + ); + path = src; + sourceTree = ""; + }; + B3980EBA29239F3700A82429 /* vixl */ = { + isa = PBXGroup; + children = ( + B3980EBB29239F3700A82429 /* platform-vixl.h */, + B3980EBC29239F3700A82429 /* pool-manager.h */, + B3980EBD29239F3700A82429 /* cpu-features.cc */, + B3980EBE29239F3700A82429 /* pool-manager-impl.h */, + B3980EBF29239F3700A82429 /* invalset-vixl.h */, + B3980EC029239F3700A82429 /* macro-assembler-interface.h */, + B3980EC129239F3700A82429 /* utils-vixl.h */, + B3980EC229239F3700A82429 /* utils-vixl.cc */, + B3980EC329239F3700A82429 /* code-buffer-vixl.h */, + B3980EC429239F3700A82429 /* assembler-base-vixl.h */, + B3980EC529239F3700A82429 /* compiler-intrinsics-vixl.h */, + B3980EC629239F3700A82429 /* compiler-intrinsics-vixl.cc */, + B3980EC729239F3700A82429 /* aarch32 */, + B3980ED629239F3700A82429 /* cpu-features.h */, + B3980ED729239F3700A82429 /* code-generation-scopes-vixl.h */, + B3980ED829239F3700A82429 /* globals-vixl.h */, + B3980ED929239F3700A82429 /* aarch64 */, + B3980EF329239F3700A82429 /* code-buffer-vixl.cc */, + ); + path = vixl; + sourceTree = ""; + }; + B3980EC729239F3700A82429 /* aarch32 */ = { + isa = PBXGroup; + children = ( + B3980EC829239F3700A82429 /* assembler-aarch32.cc */, + B3980EC929239F3700A82429 /* location-aarch32.h */, + B3980ECA29239F3700A82429 /* location-aarch32.cc */, + B3980ECB29239F3700A82429 /* assembler-aarch32.h */, + B3980ECC29239F3700A82429 /* operands-aarch32.h */, + B3980ECD29239F3700A82429 /* disasm-aarch32.cc */, + B3980ECE29239F3700A82429 /* operands-aarch32.cc */, + B3980ECF29239F3700A82429 /* macro-assembler-aarch32.cc */, + B3980ED029239F3700A82429 /* instructions-aarch32.cc */, + B3980ED129239F3700A82429 /* constants-aarch32.cc */, + B3980ED229239F3700A82429 /* instructions-aarch32.h */, + B3980ED329239F3700A82429 /* macro-assembler-aarch32.h */, + B3980ED429239F3700A82429 /* constants-aarch32.h */, + B3980ED529239F3700A82429 /* disasm-aarch32.h */, + ); + path = aarch32; + sourceTree = ""; + }; + B3980ED929239F3700A82429 /* aarch64 */ = { + isa = PBXGroup; + children = ( + B3980EDA29239F3700A82429 /* instrument-aarch64.cc */, + B3980EDB29239F3700A82429 /* cpu-features-auditor-aarch64.cc */, + B3980EDC29239F3700A82429 /* cpu-aarch64.h */, + B3980EDD29239F3700A82429 /* pointer-auth-aarch64.cc */, + B3980EDE29239F3700A82429 /* constants-aarch64.h */, + B3980EDF29239F3700A82429 /* instructions-aarch64.cc */, + B3980EE029239F3700A82429 /* logic-aarch64.cc */, + B3980EE129239F3700A82429 /* disasm-aarch64.h */, + B3980EE229239F3700A82429 /* simulator-aarch64.cc */, + B3980EE329239F3700A82429 /* decoder-aarch64.h */, + B3980EE429239F3700A82429 /* simulator-constants-aarch64.h */, + B3980EE529239F3700A82429 /* macro-assembler-aarch64.h */, + B3980EE629239F3700A82429 /* macro-assembler-aarch64.cc */, + B3980EE729239F3700A82429 /* instructions-aarch64.h */, + B3980EE829239F3700A82429 /* disasm-aarch64.cc */, + B3980EE929239F3700A82429 /* operands-aarch64.cc */, + B3980EEA29239F3700A82429 /* cpu-features-auditor-aarch64.h */, + B3980EEB29239F3700A82429 /* decoder-aarch64.cc */, + B3980EEC29239F3700A82429 /* simulator-aarch64.h */, + B3980EED29239F3700A82429 /* instrument-aarch64.h */, + B3980EEE29239F3700A82429 /* assembler-aarch64.h */, + B3980EEF29239F3700A82429 /* operands-aarch64.h */, + B3980EF029239F3700A82429 /* cpu-aarch64.cc */, + B3980EF129239F3700A82429 /* abi-aarch64.h */, + B3980EF229239F3700A82429 /* assembler-aarch64.cc */, + ); + path = aarch64; + sourceTree = ""; + }; + B3980EF429239F3700A82429 /* xbrz */ = { + isa = PBXGroup; + children = ( + B3980EF529239F3700A82429 /* xbrz.h */, + B3980EF629239F3700A82429 /* xbrz_config.h */, + B3980EF729239F3700A82429 /* Changelog.txt */, + B3980EF829239F3700A82429 /* xbrz_tools.h */, + B3980EF929239F3700A82429 /* License.txt */, + B3980EFA29239F3700A82429 /* xbrz.cpp */, + ); + path = xbrz; + sourceTree = ""; + }; + B3980EFB29239F3700A82429 /* miniupnpc */ = { + isa = PBXGroup; + children = ( + B3980EFC29239F3700A82429 /* Makefile.mingw */, + B3980EFD29239F3700A82429 /* win32_snprintf.h */, + B3980EFE29239F3700A82429 /* miniwget_private.h */, + B3980EFF29239F3700A82429 /* minisoap.c */, + B3980F0029239F3700A82429 /* miniupnpc_declspec.h */, + B3980F0129239F3700A82429 /* addr_is_reserved.c */, + B3980F0229239F3700A82429 /* wingenminiupnpcstrings.c */, + B3980F0329239F3700A82429 /* miniupnpcstrings.h.cmake */, + B3980F0429239F3700A82429 /* upnpcommands.h */, + B3980F0529239F3700A82429 /* CMakeLists.txt */, + B3980F0629239F3700A82429 /* testminiwget.sh */, + B3980F0729239F3700A82429 /* testupnpreplyparse.c */, + B3980F0829239F3700A82429 /* miniupnpc.rc */, + B3980F0929239F3700A82429 /* msvc */, + B3980F1829239F3700A82429 /* setupmingw32.py */, + B3980F1929239F3700A82429 /* testminiwget.c */, + B3980F1A29239F3700A82429 /* LICENSE */, + B3980F1B29239F3700A82429 /* portlistingparse.c */, + B3980F1C29239F3700A82429 /* testminixml.c */, + B3980F1D29239F3700A82429 /* updateminiupnpcstrings.sh */, + B3980F1E29239F3700A82429 /* connecthostport.c */, + B3980F1F29239F3700A82429 /* pymoduletest.py */, + B3980F2029239F3700A82429 /* testreplyparse */, + B3980F2C29239F3700A82429 /* miniupnpcmodule.c */, + B3980F2D29239F3700A82429 /* man3 */, + B3980F2F29239F3700A82429 /* listdevices.c */, + B3980F3029239F3700A82429 /* testupnpigd.py */, + B3980F3129239F3700A82429 /* upnpreplyparse.c */, + B3980F3229239F3700A82429 /* Makefile */, + B3980F3329239F3700A82429 /* pymoduletest3.py */, + B3980F3429239F3700A82429 /* minixml.h */, + B3980F3529239F3700A82429 /* receivedata.c */, + B3980F3629239F3700A82429 /* miniupnpc_socketdef.h */, + B3980F3729239F3700A82429 /* miniwget.c */, + B3980F3829239F3700A82429 /* upnperrors.h */, + B3980F3929239F3700A82429 /* igd_desc_parse.h */, + B3980F3A29239F3700A82429 /* upnpdev.c */, + B3980F3B29239F3700A82429 /* java */, + B3980F4029239F3700A82429 /* MANIFEST.in */, + B3980F4129239F3700A82429 /* minissdpc.h */, + B3980F4229239F3700A82429 /* README */, + B3980F4329239F3700A82429 /* miniupnpc.def */, + B3980F4429239F3700A82429 /* miniupnpc.h */, + B3980F4529239F3700A82429 /* miniupnpctypes.h */, + B3980F4629239F3700A82429 /* upnpcommands.c */, + B3980F4729239F3700A82429 /* testigddescparse.c */, + B3980F4829239F3700A82429 /* addr_is_reserved.h */, + B3980F4929239F3700A82429 /* external-ip.sh */, + B3980F4A29239F3700A82429 /* miniupnpcstrings.h.in */, + B3980F4B29239F3700A82429 /* setup.py */, + B3980F4C29239F3700A82429 /* minisoap.h */, + B3980F4D29239F3700A82429 /* testupnpreplyparse.sh */, + B3980F4E29239F3700A82429 /* VERSION.miniupnpc */, + B3980F4F29239F3700A82429 /* apiversions.txt */, + B3980F5029239F3700A82429 /* upnpc.c */, + B3980F5129239F3700A82429 /* .gitignore */, + B3980F5229239F3700A82429 /* portlistingparse.h */, + B3980F5329239F3700A82429 /* minihttptestserver.c */, + B3980F5429239F3700A82429 /* connecthostport.h */, + B3980F5529239F3700A82429 /* miniupnpc-config.cmake */, + B3980F5629239F3700A82429 /* Changelog.txt */, + B3980F5729239F3700A82429 /* minixmlvalid.c */, + B3980F5829239F3700A82429 /* upnperrors.c */, + B3980F5929239F3700A82429 /* miniwget.h */, + B3980F5A29239F3700A82429 /* codelength.h */, + B3980F5B29239F3700A82429 /* minixml.c */, + B3980F5C29239F3700A82429 /* receivedata.h */, + B3980F5D29239F3700A82429 /* testportlistingparse.c */, + B3980F5E29239F3700A82429 /* upnpreplyparse.h */, + B3980F5F29239F3700A82429 /* minissdpc.c */, + B3980F6029239F3700A82429 /* miniupnpc.c */, + B3980F6129239F3700A82429 /* testdesc */, + B3980F6629239F3700A82429 /* upnpdev.h */, + B3980F6729239F3700A82429 /* testaddr_is_reserved.c */, + B3980F6829239F3700A82429 /* mingw32make.bat */, + B3980F6929239F3700A82429 /* igd_desc_parse.c */, + ); + path = miniupnpc; + sourceTree = ""; + }; + B3980F0929239F3700A82429 /* msvc */ = { + isa = PBXGroup; + children = ( + B3980F0A29239F3700A82429 /* upnpc-static.vcxproj */, + B3980F0B29239F3700A82429 /* upnpc-static_vs2010.vcxproj */, + B3980F0C29239F3700A82429 /* miniupnpc.vcproj */, + B3980F0D29239F3700A82429 /* upnpc-static.vcproj */, + B3980F0E29239F3700A82429 /* upnpc-static.vcxproj.filters */, + B3980F0F29239F3700A82429 /* miniupnpc.vcxproj */, + B3980F1029239F3700A82429 /* miniupnpc.vcxproj.filters */, + B3980F1129239F3700A82429 /* miniupnpc_vs2010.vcxproj */, + B3980F1229239F3700A82429 /* miniupnpc.sln */, + B3980F1329239F3700A82429 /* miniupnpc_vs2010.vcxproj.filters */, + B3980F1429239F3700A82429 /* miniupnpc_vs2015.sln */, + B3980F1529239F3700A82429 /* .gitignore */, + B3980F1629239F3700A82429 /* miniupnpc_vs2010.sln */, + B3980F1729239F3700A82429 /* genminiupnpcstrings.vbs */, + ); + path = msvc; + sourceTree = ""; + }; + B3980F2029239F3700A82429 /* testreplyparse */ = { + isa = PBXGroup; + children = ( + B3980F2129239F3700A82429 /* GetSpecificPortMappingEntryResp.xml */, + B3980F2229239F3700A82429 /* SetDefaultConnectionService.xml */, + B3980F2329239F3700A82429 /* GetExternalIPAddress.xml */, + B3980F2429239F3700A82429 /* GetSpecificPortMappingEntryResp.namevalue */, + B3980F2529239F3700A82429 /* DeletePortMapping.namevalue */, + B3980F2629239F3700A82429 /* GetSpecificPortMappingEntryReq.namevalue */, + B3980F2729239F3700A82429 /* readme.txt */, + B3980F2829239F3700A82429 /* DeletePortMapping.xml */, + B3980F2929239F3700A82429 /* GetSpecificPortMappingEntryReq.xml */, + B3980F2A29239F3700A82429 /* GetExternalIPAddress.namevalue */, + B3980F2B29239F3700A82429 /* SetDefaultConnectionService.namevalue */, + ); + path = testreplyparse; + sourceTree = ""; + }; + B3980F2D29239F3700A82429 /* man3 */ = { + isa = PBXGroup; + children = ( + B3980F2E29239F3700A82429 /* miniupnpc.3 */, + ); + path = man3; + sourceTree = ""; + }; + B3980F3B29239F3700A82429 /* java */ = { + isa = PBXGroup; + children = ( + B3980F3C29239F3700A82429 /* testjava.sh */, + B3980F3D29239F3700A82429 /* JavaBridgeTest.java */, + B3980F3E29239F3700A82429 /* testjava.bat */, + B3980F3F29239F3700A82429 /* .gitignore */, + ); + path = java; + sourceTree = ""; + }; + B3980F6129239F3700A82429 /* testdesc */ = { + isa = PBXGroup; + children = ( + B3980F6229239F3700A82429 /* linksys_WAG200G_desc.values */, + B3980F6329239F3700A82429 /* new_LiveBox_desc.xml */, + B3980F6429239F3700A82429 /* linksys_WAG200G_desc.xml */, + B3980F6529239F3700A82429 /* new_LiveBox_desc.values */, + ); + path = testdesc; + sourceTree = ""; + }; + B3980F6A29239F3700A82429 /* volk */ = { + isa = PBXGroup; + children = ( + B3980F6B29239F3700A82429 /* LICENSE.md */, + B3980F6C29239F3700A82429 /* CMakeLists.txt */, + B3980F6D29239F3700A82429 /* test */, + B3980F7B29239F3700A82429 /* cmake */, + B3980F7D29239F3700A82429 /* generate.py */, + B3980F7E29239F3700A82429 /* volk.c */, + B3980F7F29239F3700A82429 /* README.md */, + B3980F8029239F3700A82429 /* .gitignore */, + B3980F8129239F3700A82429 /* volk.h */, + B3980F8229239F3700A82429 /* .travis.yml */, + ); + path = volk; + sourceTree = ""; + }; + B3980F6D29239F3700A82429 /* test */ = { + isa = PBXGroup; + children = ( + B3980F6E29239F3700A82429 /* run_tests.sh */, + B3980F6F29239F3700A82429 /* cmake_using_source_directly */, + B3980F7229239F3700A82429 /* cmake_using_subdir_static */, + B3980F7529239F3700A82429 /* cmake_using_installed_headers */, + B3980F7829239F3700A82429 /* cmake_using_subdir_headers */, + ); + path = test; + sourceTree = ""; + }; + B3980F6F29239F3700A82429 /* cmake_using_source_directly */ = { + isa = PBXGroup; + children = ( + B3980F7029239F3700A82429 /* CMakeLists.txt */, + B3980F7129239F3700A82429 /* main.c */, + ); + path = cmake_using_source_directly; + sourceTree = ""; + }; + B3980F7229239F3700A82429 /* cmake_using_subdir_static */ = { + isa = PBXGroup; + children = ( + B3980F7329239F3700A82429 /* CMakeLists.txt */, + B3980F7429239F3700A82429 /* main.c */, + ); + path = cmake_using_subdir_static; + sourceTree = ""; + }; + B3980F7529239F3700A82429 /* cmake_using_installed_headers */ = { + isa = PBXGroup; + children = ( + B3980F7629239F3700A82429 /* CMakeLists.txt */, + B3980F7729239F3700A82429 /* main.c */, + ); + path = cmake_using_installed_headers; + sourceTree = ""; + }; + B3980F7829239F3700A82429 /* cmake_using_subdir_headers */ = { + isa = PBXGroup; + children = ( + B3980F7929239F3700A82429 /* CMakeLists.txt */, + B3980F7A29239F3700A82429 /* main.c */, + ); + path = cmake_using_subdir_headers; + sourceTree = ""; + }; + B3980F7B29239F3700A82429 /* cmake */ = { + isa = PBXGroup; + children = ( + B3980F7C29239F3700A82429 /* volkConfig.cmake.in */, + ); + path = cmake; + sourceTree = ""; + }; + B3980F8329239F3700A82429 /* patches */ = { + isa = PBXGroup; + children = ( + B3980F8429239F3700A82429 /* libchdr.patch */, + ); + path = patches; + sourceTree = ""; + }; + B3980F8529239F3700A82429 /* oboe */ = { + isa = PBXGroup; + children = ( + B3980F8629239F3700A82429 /* gamesdk.cmake */, + B3980F8729239F3700A82429 /* include */, + B3980F9429239F3700A82429 /* libs */, + ); + path = oboe; + sourceTree = ""; + }; + B3980F8729239F3700A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3980F8829239F3700A82429 /* oboe */, + ); + path = include; + sourceTree = ""; + }; + B3980F8829239F3700A82429 /* oboe */ = { + isa = PBXGroup; + children = ( + B3980F8929239F3700A82429 /* LatencyTuner.h */, + B3980F8A29239F3700A82429 /* Version.h */, + B3980F8B29239F3700A82429 /* Utilities.h */, + B3980F8C29239F3700A82429 /* AudioStreamBuilder.h */, + B3980F8D29239F3700A82429 /* ResultWithValue.h */, + B3980F8E29239F3700A82429 /* AudioStreamBase.h */, + B3980F8F29239F3700A82429 /* AudioStream.h */, + B3980F9029239F3700A82429 /* StabilizedCallback.h */, + B3980F9129239F3700A82429 /* AudioStreamCallback.h */, + B3980F9229239F3700A82429 /* Oboe.h */, + B3980F9329239F3700A82429 /* Definitions.h */, + ); + path = oboe; + sourceTree = ""; + }; + B3980F9429239F3700A82429 /* libs */ = { + isa = PBXGroup; + children = ( + B3980F9529239F3700A82429 /* armeabi-v7a_API28_NDK21_cpp_static_RelWithDebInfo */, + B3980F9729239F3700A82429 /* x86_API28_NDK21_cpp_static_Release */, + B3980F9929239F3700A82429 /* x86_API28_NDK21_cpp_static_RelWithDebInfo */, + B3980F9B29239F3700A82429 /* arm64-v8a_API29_NDK21_cpp_static_Release */, + B3980F9D29239F3700A82429 /* x86_64_API28_NDK21_cpp_static_Release */, + B3980F9F29239F3700A82429 /* arm64-v8a_API29_NDK21_cpp_static_RelWithDebInfo */, + B3980FA129239F3700A82429 /* x86_64_API29_NDK21_cpp_static_Release */, + B3980FA329239F3700A82429 /* x86_64_API28_NDK21_cpp_static_RelWithDebInfo */, + B3980FA529239F3700A82429 /* x86_API29_NDK21_cpp_static_Release */, + B3980FA729239F3700A82429 /* arm64-v8a_API28_NDK21_cpp_static_Release */, + B3980FA929239F3700A82429 /* armeabi-v7a_API28_NDK21_cpp_static_Release */, + B3980FAB29239F3700A82429 /* x86_64_API29_NDK21_cpp_static_RelWithDebInfo */, + B3980FAD29239F3700A82429 /* x86_API29_NDK21_cpp_static_RelWithDebInfo */, + B3980FAF29239F3700A82429 /* armeabi-v7a_API29_NDK21_cpp_static_RelWithDebInfo */, + B3980FB129239F3700A82429 /* arm64-v8a_API28_NDK21_cpp_static_RelWithDebInfo */, + B3980FB329239F3700A82429 /* armeabi-v7a_API29_NDK21_cpp_static_Release */, + ); + path = libs; + sourceTree = ""; + }; + B3980F9529239F3700A82429 /* armeabi-v7a_API28_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980F9629239F3700A82429 /* liboboe_static.a */, + ); + path = "armeabi-v7a_API28_NDK21_cpp_static_RelWithDebInfo"; + sourceTree = ""; + }; + B3980F9729239F3700A82429 /* x86_API28_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980F9829239F3700A82429 /* liboboe_static.a */, + ); + path = x86_API28_NDK21_cpp_static_Release; + sourceTree = ""; + }; + B3980F9929239F3700A82429 /* x86_API28_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980F9A29239F3700A82429 /* liboboe_static.a */, + ); + path = x86_API28_NDK21_cpp_static_RelWithDebInfo; + sourceTree = ""; + }; + B3980F9B29239F3700A82429 /* arm64-v8a_API29_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980F9C29239F3700A82429 /* liboboe_static.a */, + ); + path = "arm64-v8a_API29_NDK21_cpp_static_Release"; + sourceTree = ""; + }; + B3980F9D29239F3700A82429 /* x86_64_API28_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980F9E29239F3700A82429 /* liboboe_static.a */, + ); + path = x86_64_API28_NDK21_cpp_static_Release; + sourceTree = ""; + }; + B3980F9F29239F3700A82429 /* arm64-v8a_API29_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980FA029239F3700A82429 /* liboboe_static.a */, + ); + path = "arm64-v8a_API29_NDK21_cpp_static_RelWithDebInfo"; + sourceTree = ""; + }; + B3980FA129239F3700A82429 /* x86_64_API29_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980FA229239F3700A82429 /* liboboe_static.a */, + ); + path = x86_64_API29_NDK21_cpp_static_Release; + sourceTree = ""; + }; + B3980FA329239F3700A82429 /* x86_64_API28_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980FA429239F3700A82429 /* liboboe_static.a */, + ); + path = x86_64_API28_NDK21_cpp_static_RelWithDebInfo; + sourceTree = ""; + }; + B3980FA529239F3700A82429 /* x86_API29_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980FA629239F3700A82429 /* liboboe_static.a */, + ); + path = x86_API29_NDK21_cpp_static_Release; + sourceTree = ""; + }; + B3980FA729239F3700A82429 /* arm64-v8a_API28_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980FA829239F3700A82429 /* liboboe_static.a */, + ); + path = "arm64-v8a_API28_NDK21_cpp_static_Release"; + sourceTree = ""; + }; + B3980FA929239F3700A82429 /* armeabi-v7a_API28_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980FAA29239F3700A82429 /* liboboe_static.a */, + ); + path = "armeabi-v7a_API28_NDK21_cpp_static_Release"; + sourceTree = ""; + }; + B3980FAB29239F3700A82429 /* x86_64_API29_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980FAC29239F3700A82429 /* liboboe_static.a */, + ); + path = x86_64_API29_NDK21_cpp_static_RelWithDebInfo; + sourceTree = ""; + }; + B3980FAD29239F3700A82429 /* x86_API29_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980FAE29239F3700A82429 /* liboboe_static.a */, + ); + path = x86_API29_NDK21_cpp_static_RelWithDebInfo; + sourceTree = ""; + }; + B3980FAF29239F3700A82429 /* armeabi-v7a_API29_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980FB029239F3700A82429 /* liboboe_static.a */, + ); + path = "armeabi-v7a_API29_NDK21_cpp_static_RelWithDebInfo"; + sourceTree = ""; + }; + B3980FB129239F3700A82429 /* arm64-v8a_API28_NDK21_cpp_static_RelWithDebInfo */ = { + isa = PBXGroup; + children = ( + B3980FB229239F3700A82429 /* liboboe_static.a */, + ); + path = "arm64-v8a_API28_NDK21_cpp_static_RelWithDebInfo"; + sourceTree = ""; + }; + B3980FB329239F3700A82429 /* armeabi-v7a_API29_NDK21_cpp_static_Release */ = { + isa = PBXGroup; + children = ( + B3980FB429239F3700A82429 /* liboboe_static.a */, + ); + path = "armeabi-v7a_API29_NDK21_cpp_static_Release"; + sourceTree = ""; + }; + B3980FB529239F3700A82429 /* imgui */ = { + isa = PBXGroup; + children = ( + B3980FB629239F3700A82429 /* imgui.h */, + B3980FB729239F3700A82429 /* imstb_textedit.h */, + B3980FB829239F3700A82429 /* imconfig.h */, + B3980FB929239F3700A82429 /* imgui_widgets.cpp */, + B3980FBA29239F3700A82429 /* imstb_truetype.h */, + B3980FBB29239F3700A82429 /* imgui.cpp */, + B3980FBC29239F3700A82429 /* imgui_internal.h */, + B3980FBD29239F3700A82429 /* imstb_rectpack.h */, + B3980FBE29239F3700A82429 /* imgui_demo.cpp */, + B3980FBF29239F3700A82429 /* roboto_medium.h */, + B3980FC029239F3700A82429 /* imgui_draw.cpp */, + ); + path = imgui; + sourceTree = ""; + }; + B3980FC129239F3700A82429 /* dirent */ = { + isa = PBXGroup; + children = ( + B3980FC229239F3700A82429 /* dirent.h */, + ); + path = dirent; + sourceTree = ""; + }; + B3980FC329239F3700A82429 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3980FC429239F3700A82429 /* pkg-config.pc.in */, + B3980FC529239F3700A82429 /* CMakeLists.txt */, + B3980FC629239F3700A82429 /* include */, + B3980FD129239F3700A82429 /* tests */, + B3980FD429239F3700A82429 /* README.md */, + B3980FD529239F3700A82429 /* deps */, + B398102A29239F3700A82429 /* LICENSE.txt */, + B398102B29239F3700A82429 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B3980FC629239F3700A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3980FC729239F3700A82429 /* libchdr */, + B3980FCF29239F3700A82429 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3980FC729239F3700A82429 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3980FC829239F3700A82429 /* flac.h */, + B3980FC929239F3700A82429 /* chdconfig.h */, + B3980FCA29239F3700A82429 /* bitstream.h */, + B3980FCB29239F3700A82429 /* cdrom.h */, + B3980FCC29239F3700A82429 /* chd.h */, + B3980FCD29239F3700A82429 /* huffman.h */, + B3980FCE29239F3700A82429 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3980FCF29239F3700A82429 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3980FD029239F3700A82429 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3980FD129239F3700A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B3980FD229239F3700A82429 /* benchmark.c */, + B3980FD329239F3700A82429 /* build_tests.sh */, + ); + path = tests; + sourceTree = ""; + }; + B3980FD529239F3700A82429 /* deps */ = { + isa = PBXGroup; + children = ( + B3980FD629239F3700A82429 /* zlib-1.2.11 */, + B398100929239F3700A82429 /* lzma-19.00 */, + ); + path = deps; + sourceTree = ""; + }; + B3980FD629239F3700A82429 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3980FD729239F3700A82429 /* zutil.h */, + B3980FD829239F3700A82429 /* inftrees.h */, + B3980FD929239F3700A82429 /* inflate.c */, + B3980FDA29239F3700A82429 /* CMakeLists.txt */, + B3980FDB29239F3700A82429 /* zlib.map */, + B3980FDC29239F3700A82429 /* zlib.pc.cmakein */, + B3980FDD29239F3700A82429 /* zlib.3.pdf */, + B3980FDE29239F3700A82429 /* configure */, + B3980FDF29239F3700A82429 /* compress.c */, + B3980FE029239F3700A82429 /* zlib.3 */, + B3980FE129239F3700A82429 /* ChangeLog */, + B3980FE229239F3700A82429 /* deflate.c */, + B3980FE329239F3700A82429 /* inffixed.h */, + B3980FE429239F3700A82429 /* Makefile */, + B3980FE529239F3700A82429 /* FAQ */, + B3980FE629239F3700A82429 /* gzread.c */, + B3980FE729239F3700A82429 /* zconf.h.in */, + B3980FE829239F3700A82429 /* trees.h */, + B3980FE929239F3700A82429 /* zconf.h.cmakein */, + B3980FEA29239F3700A82429 /* inffast.h */, + B3980FEB29239F3700A82429 /* treebuild.xml */, + B3980FEC29239F3700A82429 /* crc32.c */, + B3980FED29239F3700A82429 /* README */, + B3980FEE29239F3700A82429 /* infback.c */, + B3980FEF29239F3700A82429 /* zutil.c */, + B3980FF029239F3700A82429 /* deflate.h */, + B3980FF129239F3700A82429 /* zlib.pc.in */, + B3980FF229239F3700A82429 /* zlib2ansi */, + B3980FF329239F3700A82429 /* gzguts.h */, + B3980FF429239F3700A82429 /* zlib.h */, + B3980FF529239F3700A82429 /* gzlib.c */, + B3980FF629239F3700A82429 /* make_vms.com */, + B3980FF729239F3700A82429 /* inflate.h */, + B3980FF829239F3700A82429 /* inftrees.c */, + B3980FF929239F3700A82429 /* INDEX */, + B3980FFA29239F3700A82429 /* doc */, + B398100029239F3700A82429 /* uncompr.c */, + B398100129239F3700A82429 /* gzwrite.c */, + B398100229239F3700A82429 /* trees.c */, + B398100329239F3700A82429 /* gzclose.c */, + B398100429239F3700A82429 /* crc32.h */, + B398100529239F3700A82429 /* Makefile.in */, + B398100629239F3700A82429 /* inffast.c */, + B398100729239F3700A82429 /* adler32.c */, + B398100829239F3700A82429 /* zconf.h */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3980FFA29239F3700A82429 /* doc */ = { + isa = PBXGroup; + children = ( + B3980FFB29239F3700A82429 /* rfc1952.txt */, + B3980FFC29239F3700A82429 /* rfc1950.txt */, + B3980FFD29239F3700A82429 /* algorithm.txt */, + B3980FFE29239F3700A82429 /* rfc1951.txt */, + B3980FFF29239F3700A82429 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B398100929239F3700A82429 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B398100A29239F3700A82429 /* lzma.vcxproj.filters */, + B398100B29239F3700A82429 /* CMakeLists.txt */, + B398100C29239F3700A82429 /* LICENSE */, + B398100D29239F3700A82429 /* include */, + B398101C29239F3700A82429 /* lzma.vcxproj */, + B398101D29239F3700A82429 /* lzma.txt */, + B398101E29239F3700A82429 /* lzma-history.txt */, + B398101F29239F3700A82429 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B398100D29239F3700A82429 /* include */ = { + isa = PBXGroup; + children = ( + B398100E29239F3700A82429 /* LzHash.h */, + B398100F29239F3700A82429 /* 7zTypes.h */, + B398101029239F3700A82429 /* Compiler.h */, + B398101129239F3700A82429 /* Precomp.h */, + B398101229239F3700A82429 /* CpuArch.h */, + B398101329239F3700A82429 /* Delta.h */, + B398101429239F3700A82429 /* LzmaLib.h */, + B398101529239F3700A82429 /* Lzma86.h */, + B398101629239F3700A82429 /* LzmaEnc.h */, + B398101729239F3700A82429 /* LzFind.h */, + B398101829239F3700A82429 /* Bra.h */, + B398101929239F3700A82429 /* Sort.h */, + B398101A29239F3700A82429 /* LzmaDec.h */, + B398101B29239F3700A82429 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B398101F29239F3700A82429 /* src */ = { + isa = PBXGroup; + children = ( + B398102029239F3700A82429 /* LzmaEnc.c */, + B398102129239F3700A82429 /* LzFind.c */, + B398102229239F3700A82429 /* Sort.c */, + B398102329239F3700A82429 /* Bra86.c */, + B398102429239F3700A82429 /* Alloc.c */, + B398102529239F3700A82429 /* LzmaDec.c */, + B398102629239F3700A82429 /* BraIA64.c */, + B398102729239F3700A82429 /* Lzma86Dec.c */, + B398102829239F3700A82429 /* Delta.c */, + B398102929239F3700A82429 /* CpuArch.c */, + ); + path = src; + sourceTree = ""; + }; + B398102B29239F3700A82429 /* src */ = { + isa = PBXGroup; + children = ( + B398102C29239F3700A82429 /* libchdr_chd.c */, + B398102D29239F3700A82429 /* libchdr_bitstream.c */, + B398102E29239F3700A82429 /* libchdr_huffman.c */, + B398102F29239F3700A82429 /* libchdr_flac.c */, + B398103029239F3700A82429 /* link.T */, + B398103129239F3700A82429 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B398103229239F3700A82429 /* picotcp */ = { + isa = PBXGroup; + children = ( + B398103329239F3700A82429 /* mkdeps.sh */, + B398103429239F3700A82429 /* Makefile */, + B398103529239F3700A82429 /* include */, + B398105729239F3700A82429 /* README.md */, + B398105829239F3700A82429 /* COPYING */, + B398105929239F3700A82429 /* CONTRIBUTING.md */, + B398105A29239F3700A82429 /* rules */, + B398106929239F3700A82429 /* stack */, + B398107229239F3700A82429 /* MODTREE */, + B398107329239F3700A82429 /* modules */, + B39810A329239F3700A82429 /* LICENSE.GPLv3 */, + B39810A429239F3700A82429 /* LICENSE.GPLv2 */, + ); + path = picotcp; + sourceTree = ""; + }; + B398103529239F3700A82429 /* include */ = { + isa = PBXGroup; + children = ( + B398103629239F3700A82429 /* pico_protocol.h */, + B398103729239F3700A82429 /* pico_socket_multicast.h */, + B398103829239F3700A82429 /* pico_eth.h */, + B398103929239F3700A82429 /* pico_md5.h */, + B398103A29239F3700A82429 /* pico_stack.h */, + B398103B29239F3700A82429 /* pico_defines.h */, + B398103C29239F3700A82429 /* pico_constants.h */, + B398103D29239F3700A82429 /* pico_socket.h */, + B398103E29239F3700A82429 /* pico_queue.h */, + B398103F29239F3700A82429 /* pico_config.h */, + B398104029239F3700A82429 /* pico_device.h */, + B398104129239F3700A82429 /* arch */, + B398105129239F3700A82429 /* pico_tree.h */, + B398105229239F3700A82429 /* heap.h */, + B398105329239F3700A82429 /* pico_addressing.h */, + B398105429239F3700A82429 /* pico_frame.h */, + B398105529239F3700A82429 /* pico_defines_msvc.h */, + B398105629239F3700A82429 /* pico_module_eth.h */, + ); + path = include; + sourceTree = ""; + }; + B398104129239F3700A82429 /* arch */ = { + isa = PBXGroup; + children = ( + B398104229239F3700A82429 /* pico_posix.h */, + B398104329239F3700A82429 /* pico_msvc.h */, + B398104429239F3700A82429 /* pico_avr.h */, + B398104529239F3700A82429 /* pico_msp430.h */, + B398104629239F3700A82429 /* pico_cortex_m.h */, + B398104729239F3700A82429 /* pico_esp8266.h */, + B398104829239F3700A82429 /* pico_mbed.h */, + B398104929239F3700A82429 /* pico_atsamd21j18.h */, + B398104A29239F3700A82429 /* pico_pic32.h */, + B398104B29239F3700A82429 /* pico_arm9.h */, + B398104C29239F3700A82429 /* pico_dos.h */, + B398104D29239F3700A82429 /* pico_generic_gcc.h */, + B398104E29239F3700A82429 /* pico_linux.h */, + B398104F29239F3700A82429 /* pico_pic24.h */, + B398105029239F3700A82429 /* pico_none.h */, + ); + path = arch; + sourceTree = ""; + }; + B398105A29239F3700A82429 /* rules */ = { + isa = PBXGroup; + children = ( + B398105B29239F3700A82429 /* debug.mk */, + B398105C29239F3700A82429 /* tap.mk */, + B398105D29239F3700A82429 /* udp.mk */, + B398105E29239F3700A82429 /* dhcp_client.mk */, + B398105F29239F3700A82429 /* ipv4frag.mk */, + B398106029239F3700A82429 /* tcp.mk */, + B398106129239F3700A82429 /* dhcp_server.mk */, + B398106229239F3700A82429 /* icmp4.mk */, + B398106329239F3700A82429 /* ppp.mk */, + B398106429239F3700A82429 /* crc.mk */, + B398106529239F3700A82429 /* eth.mk */, + B398106629239F3700A82429 /* ipv4.mk */, + B398106729239F3700A82429 /* dns_client.mk */, + B398106829239F3700A82429 /* tun.mk */, + ); + path = rules; + sourceTree = ""; + }; + B398106929239F3700A82429 /* stack */ = { + isa = PBXGroup; + children = ( + B398106A29239F3700A82429 /* pico_device.c */, + B398106B29239F3700A82429 /* pico_tree.c */, + B398106C29239F3700A82429 /* pico_frame.c */, + B398106D29239F3700A82429 /* pico_protocol.c */, + B398106E29239F3700A82429 /* pico_socket_multicast.c */, + B398106F29239F3700A82429 /* pico_stack.c */, + B398107029239F3700A82429 /* pico_md5.c */, + B398107129239F3700A82429 /* pico_socket.c */, + ); + path = stack; + sourceTree = ""; + }; + B398107329239F3700A82429 /* modules */ = { + isa = PBXGroup; + children = ( + B398107429239F3700A82429 /* pico_dev_ppp.c */, + B398107529239F3700A82429 /* pico_ethernet.c */, + B398107629239F3700A82429 /* pico_802154.h */, + B398107729239F3700A82429 /* pico_olsr.h */, + B398107829239F3700A82429 /* pico_udp.c */, + B398107929239F3700A82429 /* pico_dhcp_server.c */, + B398107A29239F3700A82429 /* pico_mm.h */, + B398107B29239F3700A82429 /* pico_ipv4.c */, + B398107C29239F3700A82429 /* pico_socket_tcp.c */, + B398107D29239F3700A82429 /* pico_ipv6.h */, + B398107E29239F3700A82429 /* pico_dns_client.c */, + B398107F29239F3700A82429 /* pico_nat.h */, + B398108029239F3700A82429 /* pico_mld.h */, + B398108129239F3700A82429 /* pico_icmp4.c */, + B398108229239F3700A82429 /* pico_dns_common.h */, + B398108329239F3700A82429 /* pico_strings.c */, + B398108429239F3700A82429 /* pico_arp.c */, + B398108529239F3700A82429 /* pico_socket_udp.h */, + B398108629239F3700A82429 /* pico_icmp6.h */, + B398108729239F3700A82429 /* pico_mcast.h */, + B398108829239F3700A82429 /* pico_fragments.h */, + B398108929239F3700A82429 /* pico_dhcp_common.c */, + B398108A29239F3700A82429 /* pico_6lowpan.h */, + B398108B29239F3700A82429 /* pico_dhcp_client.h */, + B398108C29239F3700A82429 /* pico_tcp.h */, + B398108D29239F3700A82429 /* pico_dhcp_server.h */, + B398108E29239F3700A82429 /* pico_udp.h */, + B398108F29239F3700A82429 /* pico_dev_null.h */, + B398109029239F3700A82429 /* pico_ipv6_nd.h */, + B398109129239F3700A82429 /* pico_dev_ppp.h */, + B398109229239F3700A82429 /* pico_dev_ipc.h */, + B398109329239F3700A82429 /* pico_ethernet.h */, + B398109429239F3700A82429 /* pico_aodv.h */, + B398109529239F3700A82429 /* pico_socket_tcp.h */, + B398109629239F3700A82429 /* pico_ipv4.h */, + B398109729239F3700A82429 /* pico_arp.h */, + B398109829239F3700A82429 /* pico_dns_common.c */, + B398109929239F3700A82429 /* pico_strings.h */, + B398109A29239F3700A82429 /* pico_socket_udp.c */, + B398109B29239F3700A82429 /* pico_icmp4.h */, + B398109C29239F3700A82429 /* pico_dns_client.h */, + B398109D29239F3700A82429 /* pico_igmp.h */, + B398109E29239F3700A82429 /* pico_6lowpan_ll.h */, + B398109F29239F3700A82429 /* pico_tcp.c */, + B39810A029239F3700A82429 /* pico_ipfilter.h */, + B39810A129239F3700A82429 /* pico_dhcp_common.h */, + B39810A229239F3700A82429 /* pico_fragments.c */, + ); + path = modules; + sourceTree = ""; + }; + B39810A529239F3700A82429 /* glslang */ = { + isa = PBXGroup; + children = ( + B39810A629239F3700A82429 /* CODE_OF_CONDUCT.md */, + B39810A729239F3700A82429 /* ChooseMSVCCRT.cmake */, + B39810A829239F3700A82429 /* Android.mk */, + B39810A929239F3700A82429 /* CMakeLists.txt */, + B39810AA29239F3700A82429 /* BUILD.gn */, + B39810AB29239F3700A82429 /* ndk_test */, + B39810B029239F3700A82429 /* Test */, + B398190E29239F3E00A82429 /* StandAlone */, + B398191829239F3E00A82429 /* known_good.json */, + B398191929239F3E00A82429 /* WORKSPACE */, + B398191A29239F3F00A82429 /* update_glslang_sources.py */, + B398191B29239F3F00A82429 /* SPIRV */, + B398193729239F3F00A82429 /* glslang */, + B398199229239F3F00A82429 /* .appveyor.yml */, + B398199329239F3F00A82429 /* OGLCompilersDLL */, + B398199729239F3F00A82429 /* README.md */, + B398199829239F3F00A82429 /* known_good_khr.json */, + B398199929239F3F00A82429 /* build_overrides */, + B398199B29239F3F00A82429 /* .gitignore */, + B398199C29239F3F00A82429 /* _config.yml */, + B398199D29239F3F00A82429 /* .clang-format */, + B398199E29239F3F00A82429 /* .gitattributes */, + B398199F29239F3F00A82429 /* BUILD.bazel */, + B39819A029239F3F00A82429 /* README-spirv-remap.txt */, + B39819A129239F3F00A82429 /* External */, + B39819A329239F3F00A82429 /* LICENSE.txt */, + B39819A429239F3F00A82429 /* make-revision */, + B39819A529239F3F00A82429 /* hlsl */, + B39819B829239F3F00A82429 /* .travis.yml */, + B39819B929239F3F00A82429 /* kokoro */, + B39819C629239F3F00A82429 /* gtests */, + ); + path = glslang; + sourceTree = ""; + }; + B39810AB29239F3700A82429 /* ndk_test */ = { + isa = PBXGroup; + children = ( + B39810AC29239F3700A82429 /* Android.mk */, + B39810AD29239F3700A82429 /* test.cpp */, + B39810AE29239F3700A82429 /* jni */, + ); + path = ndk_test; + sourceTree = ""; + }; + B39810AE29239F3700A82429 /* jni */ = { + isa = PBXGroup; + children = ( + B39810AF29239F3700A82429 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B39810B029239F3700A82429 /* Test */ = { + isa = PBXGroup; + children = ( + B39810B129239F3700A82429 /* hlsl.flattenOpaque.frag */, + B39810B229239F3700A82429 /* hlsl.intrinsics.comp */, + B39810B329239F3700A82429 /* glsl.460.subgroup.task */, + B39810B429239F3700A82429 /* spv.multiView.frag */, + B39810B529239F3700A82429 /* hlsl.hull.2.tesc */, + B39810B629239F3700A82429 /* spv.noDeadDecorations.vert */, + B39810B729239F3700A82429 /* spv.memoryScopeSemantics_Error.comp */, + B39810B829239F3700A82429 /* hlsl.PointSize.geom */, + B39810B929239F3700A82429 /* spv.shaderGroupVote.comp */, + B39810BA29239F3700A82429 /* link.multiBlocksValid.1.0.vert */, + B39810BB29239F3700A82429 /* inc1 */, + B39810C729239F3800A82429 /* glsl.entryPointRename2.vert */, + B39810C829239F3800A82429 /* hlsl.comparison.vec.frag */, + B39810C929239F3800A82429 /* hlsl.namespace.frag */, + B39810CA29239F3800A82429 /* localAggregates.frag */, + B39810CB29239F3800A82429 /* spv.shiftOps.frag */, + B39810CC29239F3800A82429 /* spv.dataOutIndirect.vert */, + B39810CD29239F3800A82429 /* preprocessor.include.enabled.vert */, + B39810CE29239F3800A82429 /* 440.frag */, + B39810CF29239F3800A82429 /* hlsl.intrinsics.negative.comp */, + B39810D029239F3800A82429 /* hlsl.structbuffer.append.fn.frag */, + B39810D129239F3800A82429 /* 300operations.frag */, + B39810D229239F3800A82429 /* 310implicitSizeArrayError.vert */, + B39810D329239F3800A82429 /* errors.frag */, + B39810D429239F3800A82429 /* spv.400.frag */, + B39810D529239F3800A82429 /* spv.16bitstorage_Error.frag */, + B39810D629239F3800A82429 /* hlsl.reflection.vert */, + B39810D729239F3800A82429 /* reflection.options.geom */, + B39810D829239F3800A82429 /* hlsl.clipdistance-2.vert */, + B39810D929239F3800A82429 /* hlsl.domain.2.tese */, + B39810DA29239F3800A82429 /* spv.specConstantComposite.vert */, + B39810DB29239F3800A82429 /* hlsl.mul-truncate.frag */, + B39810DC29239F3800A82429 /* cppSimple.vert */, + B39810DD29239F3800A82429 /* lineContinuation100.vert */, + B39810DE29239F3800A82429 /* spv.8bit-16bit-construction.frag */, + B39810DF29239F3800A82429 /* spv.specConstArrayCheck.vert */, + B39810E029239F3800A82429 /* spv.ext.ClosestHitShader.rchit */, + B39810E129239F3800A82429 /* hlsl.rw.register.frag */, + B39810E229239F3800A82429 /* spv.textureBuffer.vert */, + B39810E329239F3800A82429 /* hlsl.memberFunCall.frag */, + B39810E429239F3800A82429 /* remap.if.everything.frag */, + B39810E529239F3800A82429 /* 400.geom */, + B39810E629239F3800A82429 /* functionCall.frag */, + B39810E729239F3800A82429 /* hlsl.buffer.frag */, + B39810E829239F3800A82429 /* glsl.450.subgroupShuffle.comp */, + B39810E929239F3800A82429 /* spv.subgroupBallotNeg.comp */, + B39810EA29239F3800A82429 /* spv.int16.amd.frag */, + B39810EB29239F3800A82429 /* spv.meshShaderPerViewUserDefined.mesh */, + B39810EC29239F3800A82429 /* spv.int16.frag */, + B39810ED29239F3800A82429 /* cppMerge.frag */, + B39810EE29239F3800A82429 /* hlsl.type.identifier.frag */, + B39810EF29239F3800A82429 /* rayQuery.rgen */, + B39810F029239F3800A82429 /* spv.xfb2.vert */, + B39810F129239F3800A82429 /* hlsl.matType.frag */, + B39810F229239F3800A82429 /* hlsl.samplecmp.dualmode.frag */, + B39810F329239F3800A82429 /* spv.rankShift.comp */, + B39810F429239F3800A82429 /* spv.meshShaderTaskMem.mesh */, + B39810F529239F3800A82429 /* spv.8bitstorage-uint.frag */, + B39810F629239F3800A82429 /* spv.loopsArtificial.frag */, + B39810F729239F3800A82429 /* spv.ext.RayGenShader.rgen */, + B39810F829239F3800A82429 /* spv.for-notest.vert */, + B39810F929239F3800A82429 /* preprocessor.errors.vert */, + B39810FA29239F3800A82429 /* spv.subgroupClustered.comp */, + B39810FB29239F3800A82429 /* spv.8bitstorage-ssbo.vert */, + B39810FC29239F3800A82429 /* spv.meshShaderRedeclPerViewBuiltins.mesh */, + B39810FD29239F3800A82429 /* spv.functionNestedOpaque.vert */, + B39810FE29239F3800A82429 /* spv.RayGenShaderArray.rgen */, + B39810FF29239F3800A82429 /* spv.400.tesc */, + B398110029239F3800A82429 /* hlsl.intrinsics.lit.frag */, + B398110129239F3800A82429 /* spv.intcoopmat.comp */, + B398110229239F3800A82429 /* rayQuery-committed.Error.rgen */, + B398110329239F3800A82429 /* precise.tesc */, + B398110429239F3800A82429 /* spv.dead-complex-merge-after-return.vert */, + B398110529239F3800A82429 /* glsl.es320.subgroup.vert */, + B398110629239F3800A82429 /* spv.samplerlessTextureFunctions.frag */, + B398110729239F3800A82429 /* 310.vert */, + B398110829239F3800A82429 /* spv.test.vert */, + B398110929239F3800A82429 /* spv.intOps.vert */, + B398110A29239F3800A82429 /* spv.fragmentDensity.vert */, + B398110B29239F3800A82429 /* link.vk.pcNamingInvalid.0.0.vert */, + B398110C29239F3800A82429 /* link.multiBlocksInvalid.0.1.vert */, + B398110D29239F3800A82429 /* hlsl.promotions.frag */, + B398110E29239F3800A82429 /* mains2.frag */, + B398110F29239F3800A82429 /* link.vk.differentPC.0.1.frag */, + B398111029239F3800A82429 /* spv.noBuiltInLoc.vert */, + B398111129239F3800A82429 /* hlsl.intrinsics.barriers.comp */, + B398111229239F3800A82429 /* spv.buffer.autoassign.frag */, + B398111329239F3800A82429 /* spv.register.autoassign.frag */, + B398111429239F3800A82429 /* 420.geom */, + B398111529239F3800A82429 /* spv.bufferhandle3.frag */, + B398111629239F3800A82429 /* spv.noLocation.vert */, + B398111729239F3800A82429 /* hlsl.explicitDescriptorSet.frag */, + B398111829239F3800A82429 /* glspv.version.vert */, + B398111929239F3800A82429 /* hlsl.flattenSubset.frag */, + B398111A29239F3800A82429 /* runtimeArray.vert */, + B398111B29239F3800A82429 /* hlsl.samplelevel.basic.dx10.vert */, + B398111C29239F3800A82429 /* hlsl.gather.basic.dx10.vert */, + B398111D29239F3800A82429 /* spv.variableArrayIndex.frag */, + B398111E29239F3800A82429 /* vulkan.frag */, + B398111F29239F3800A82429 /* 460.frag */, + B398112029239F3800A82429 /* spv.varyingArrayIndirect.frag */, + B398112129239F3800A82429 /* spv.viewportArray2.tesc */, + B398112229239F3800A82429 /* spv.fragmentDensity-es.frag */, + B398112329239F3800A82429 /* hlsl.assoc.frag */, + B398112429239F3800A82429 /* hlsl.tristream-append.geom */, + B398112529239F3800A82429 /* preprocessor.defined.vert */, + B398112629239F3800A82429 /* spv.1.3.coopmat.comp */, + B398112729239F3800A82429 /* hlsl.entry.rename.frag */, + B398112829239F3800A82429 /* spv.400.tese */, + B398112929239F3800A82429 /* glsl.es320.subgroupClustered.comp */, + B398112A29239F3800A82429 /* spv.do-simple.vert */, + B398112B29239F3800A82429 /* hlsl.target.frag */, + B398112C29239F3800A82429 /* spv.demoteDisabled.frag */, + B398112D29239F3800A82429 /* hlsl.hull.ctrlpt-2.tesc */, + B398112E29239F3800A82429 /* 150.vert */, + B398112F29239F3800A82429 /* hlsl.structbuffer.byte.frag */, + B398113029239F3800A82429 /* spv.stereoViewRendering.vert */, + B398113129239F3800A82429 /* hlsl.promote.vec1.frag */, + B398113229239F3800A82429 /* spv.subgroupArithmetic.comp */, + B398113329239F3800A82429 /* link.vk.pcNamingValid.0.1.vert */, + B398113429239F3800A82429 /* hlsl.swizzle.frag */, + B398113529239F3800A82429 /* spv.AofA.frag */, + B398113629239F3800A82429 /* spv.bufferhandle16.frag */, + B398113729239F3800A82429 /* hlsl.noSemantic.functionality1.comp */, + B398113829239F3800A82429 /* spv.ext.IntersectShader_Errors.rint */, + B398113929239F3800A82429 /* hlsl.logical.unary.frag */, + B398113A29239F3800A82429 /* hlsl.samplecmplevelzero.offset.dx10.frag */, + B398113B29239F3800A82429 /* constErrors.frag */, + B398113C29239F3800A82429 /* spv.for-complex-condition.vert */, + B398113D29239F3800A82429 /* hlsl.int.dot.frag */, + B398113E29239F3800A82429 /* glsl.es320.subgroupBallotNeg.comp */, + B398113F29239F3800A82429 /* hlsl.clipdistance-7.frag */, + B398114029239F3800A82429 /* 300layout.vert */, + B398114129239F3800A82429 /* spv.460.frag */, + B398114229239F3800A82429 /* hlsl.clipdistance-6.frag */, + B398114329239F3800A82429 /* spv.newTexture.frag */, + B398114429239F3800A82429 /* hlsl.rw.bracket.frag */, + B398114529239F3800A82429 /* link.vk.pcNamingValid.0.0.vert */, + B398114629239F3800A82429 /* spv.100ops.frag */, + B398114729239F3800A82429 /* 430scope.vert */, + B398114829239F3800A82429 /* hlsl.templatetypes.frag */, + B398114929239F3800A82429 /* spv.simpleFunctionCall.frag */, + B398114A29239F3800A82429 /* 420.frag */, + B398114B29239F3800A82429 /* 400.tese */, + B398114C29239F3800A82429 /* hlsl.basic.geom */, + B398114D29239F3800A82429 /* hlsl.init.frag */, + B398114E29239F3800A82429 /* hlsl.intrinsics.evalfns.frag */, + B398114F29239F3800A82429 /* spv.150.vert */, + B398115029239F3800A82429 /* hlsl.shift.per-set.frag */, + B398115129239F3800A82429 /* hlsl.precedence.frag */, + B398115229239F3800A82429 /* hlsl.rw.swizzle.frag */, + B398115329239F3800A82429 /* spv.matrix2.frag */, + B398115429239F3800A82429 /* versionsErrors.frag */, + B398115529239F3800A82429 /* 300samplerExternalYUV.frag */, + B398115629239F3800A82429 /* spv.bitCast.frag */, + B398115729239F3800A82429 /* spv.1.4.sparseTexture.frag */, + B398115829239F3800A82429 /* hlsl.getdimensions.rw.dx10.frag */, + B398115929239F3800A82429 /* preprocessor.function_macro.vert */, + B398115A29239F3800A82429 /* spv.subgroupExtendedTypesPartitionedNeg.comp */, + B398115B29239F3800A82429 /* spv.300layoutp.vert */, + B398115C29239F3800A82429 /* hlsl.tx.overload.frag */, + B398115D29239F3800A82429 /* dataOut.frag */, + B398115E29239F3800A82429 /* spv.simpleMat.vert */, + B398115F29239F3800A82429 /* noMain2.geom */, + B398116029239F3800A82429 /* spv.prepost.frag */, + B398116129239F3800A82429 /* hlsl.struct.frag */, + B398116229239F3800A82429 /* glsl.450.subgroupBallotNeg.comp */, + B398116329239F3800A82429 /* hlsl.type.type.conversion.valid.frag */, + B398116429239F3800A82429 /* 420.tesc */, + B398116529239F3800A82429 /* spv.glsl.register.autoassign.frag */, + B398116629239F3800A82429 /* spv.16bitstorage.frag */, + B398116729239F3800A82429 /* glsl.450.subgroupBasic.comp */, + B398116829239F3800A82429 /* link.vk.differentPC.0.0.frag */, + B398116929239F3800A82429 /* spv.shaderDrawParams.vert */, + B398116A29239F3800A82429 /* spv.bufferhandle2.frag */, + B398116B29239F3800A82429 /* syntaxError.frag */, + B398116C29239F3800A82429 /* spv.ext.ClosestHitShader_Errors.rchit */, + B398116D29239F3800A82429 /* link.vk.pcNamingInvalid.0.1.vert */, + B398116E29239F3800A82429 /* hlsl.load.buffer.float.dx10.frag */, + B398116F29239F3800A82429 /* spv.vulkan100.subgroupPartitioned.comp */, + B398117029239F3800A82429 /* hlsl.entry-in.frag */, + B398117129239F3800A82429 /* spv.420.geom */, + B398117229239F3800A82429 /* spv.always-discard.frag */, + B398117329239F3800A82429 /* link.multiBlocksInvalid.0.0.vert */, + B398117429239F3800A82429 /* lineContinuation.vert */, + B398117529239F3800A82429 /* spv.subgroupShuffleRelative.comp */, + B398117629239F3800A82429 /* hlsl.flattenSubset2.frag */, + B398117729239F3800A82429 /* glsl.450.subgroupClustered.comp */, + B398117829239F3800A82429 /* hlsl.rw.scalar.bracket.frag */, + B398117929239F3800A82429 /* hlsl.samplecmp.negative2.frag */, + B398117A29239F3800A82429 /* sample.vert */, + B398117B29239F3800A82429 /* hlsl.partialFlattenLocal.vert */, + B398117C29239F3800A82429 /* spv.subgroupExtendedTypesQuad.comp */, + B398117D29239F3800A82429 /* empty.frag */, + B398117E29239F3800A82429 /* spv.targetVulkan.vert */, + B398117F29239F3800A82429 /* include.vert */, + B398118029239F3800A82429 /* spv.swizzle.frag */, + B398118129239F3800A82429 /* hlsl.switch.frag */, + B398118229239F3800A82429 /* always-discard.frag */, + B398118329239F3800A82429 /* nonuniform.frag */, + B398118429239F3800A82429 /* hlsl.matpack-1.frag */, + B398118529239F3800A82429 /* hlsl.texture.struct.frag */, + B398118629239F3800A82429 /* remap.hlsl.sample.basic.strip.frag */, + B398118729239F3800A82429 /* hlsl.wavebroadcast.comp */, + B398118829239F3800A82429 /* spv.rw.autoassign.frag */, + B398118929239F3800A82429 /* hlsl.this.frag */, + B398118A29239F3800A82429 /* spv.xfb3.vert */, + B398118B29239F3800A82429 /* hlsl.entry-out.frag */, + B398118C29239F3800A82429 /* spv.bufferhandle17_Errors.frag */, + B398118D29239F3800A82429 /* 100Limits.vert */, + B398118E29239F3800A82429 /* hlsl.intrinsic.frexp.frag */, + B398118F29239F3800A82429 /* hlsl.structbuffer.floatidx.comp */, + B398119029239F3800A82429 /* spv.shaderBallot.comp */, + B398119129239F3800A82429 /* hlsl.struct.split.trivial.vert */, + B398119229239F3800A82429 /* spv.16bitstorage-int.frag */, + B398119329239F3800A82429 /* spv.whileLoop.frag */, + B398119429239F3800A82429 /* hlsl.emptystruct.init.vert */, + B398119529239F3800A82429 /* remap.hlsl.sample.basic.everything.frag */, + B398119629239F3800A82429 /* dce.frag */, + B398119729239F3800A82429 /* spv.storageBuffer.vert */, + B398119829239F3800A82429 /* switch.frag */, + B398119929239F3800A82429 /* spv.shaderBallotAMD.comp */, + B398119A29239F3800A82429 /* spv.structAssignment.frag */, + B398119B29239F3800A82429 /* 400.tesc */, + B398119C29239F3800A82429 /* hlsl.domain.3.tese */, + B398119D29239F3800A82429 /* hlsl.structin.vert */, + B398119E29239F3800A82429 /* spv.ext.MissShader_Errors.rmiss */, + B398119F29239F3800A82429 /* spv.bufferhandleUvec2.frag */, + B39811A029239F3800A82429 /* preprocessor.simple.vert */, + B39811A129239F3800A82429 /* 430AofA.frag */, + B39811A229239F3800A82429 /* hlsl.clipdistance-3.vert */, + B39811A329239F3800A82429 /* sample.vert.out */, + B39811A429239F3800A82429 /* spv.meshTaskShader.task */, + B39811A529239F3800A82429 /* spv.arbPostDepthCoverage.frag */, + B39811A629239F3800A82429 /* spv.precision.frag */, + B39811A729239F3800A82429 /* 130.vert */, + B39811A829239F3800A82429 /* spv.earlyReturnDiscard.frag */, + B39811A929239F3800A82429 /* badMacroArgs.frag */, + B39811AA29239F3800A82429 /* web.builtins.vert */, + B39811AB29239F3800A82429 /* spv.hlslDebugInfo.vert */, + B39811AC29239F3800A82429 /* spv.multiviewPerViewAttributes.vert */, + B39811AD29239F3800A82429 /* spv.1.4.texture.frag */, + B39811AE29239F3800A82429 /* hlsl.precedence2.frag */, + B39811AF29239F3800A82429 /* hlsl.samplegrad.array.dx10.frag */, + B39811B029239F3800A82429 /* spv.1.4.image.frag */, + B39811B129239F3800A82429 /* hlsl.samplebias.offsetarray.dx10.frag */, + B39811B229239F3800A82429 /* hlsl.hull.void.tesc */, + B39811B329239F3800A82429 /* versionsClean.vert */, + B39811B429239F3800A82429 /* maxClipDistances.vert */, + B39811B529239F3800A82429 /* rayQuery-allOps.Error.rgen */, + B39811B629239F3800A82429 /* 320.comp */, + B39811B729239F3800A82429 /* hlsl.scalar-length.frag */, + B39811B829239F3800A82429 /* 400.frag */, + B39811B929239F3800A82429 /* 420.tese */, + B39811BA29239F3800A82429 /* uniformArray.frag */, + B39811BB29239F3800A82429 /* link.multiBlocksValid.1.1.vert */, + B39811BC29239F3800A82429 /* spv.atomicCounter.comp */, + B39811BD29239F3800A82429 /* 330comp.frag */, + B39811BE29239F3800A82429 /* spv.glsl.register.noautoassign.frag */, + B39811BF29239F3800A82429 /* spv.computeShaderDerivatives2.comp */, + B39811C029239F3800A82429 /* hlsl.hull.3.tesc */, + B39811C129239F3800A82429 /* remap.basic.dcefunc.frag */, + B39811C229239F3800A82429 /* spv.RayCallable.rcall */, + B39811C329239F3800A82429 /* spv.specConstant.comp */, + B39811C429239F3800A82429 /* spv.texture.vert */, + B39811C529239F3800A82429 /* hlsl.gathercmpRGBA.basic.dx10.frag */, + B39811C629239F3800A82429 /* 300scope.vert */, + B39811C729239F3800A82429 /* spv.register.autoassign-2.frag */, + B39811C829239F3800A82429 /* glsl.450.subgroup.tesc */, + B39811C929239F3800A82429 /* uint.frag */, + B39811CA29239F3800A82429 /* spv.structure.frag */, + B39811CB29239F3800A82429 /* reflection.vert */, + B39811CC29239F3800A82429 /* hlsl.load.rwtexture.array.dx10.frag */, + B39811CD29239F3800A82429 /* 420_size_gl_in.geom */, + B39811CE29239F3800A82429 /* spv.1.4.NonWritable.frag */, + B39811CF29239F3800A82429 /* hlsl.samplegrad.basic.dx10.frag */, + B39811D029239F3800A82429 /* spv.for-simple.vert */, + B39811D129239F3800A82429 /* hlsl.whileLoop.frag */, + B39811D229239F3800A82429 /* hlsl.gathercmpRGBA.array.dx10.frag */, + B39811D329239F3800A82429 /* hlsl.structbuffer.rw.frag */, + B39811D429239F3800A82429 /* spv.subgroupExtendedTypesClusteredNeg.comp */, + B39811D529239F3800A82429 /* spv.meshShaderPerViewBuiltins.mesh */, + B39811D629239F3800A82429 /* hlsl.imagefetch-subvec4.comp */, + B39811D729239F3800A82429 /* remap.switch.none.frag */, + B39811D829239F3800A82429 /* hlsl.targetStruct1.frag */, + B39811D929239F3800A82429 /* spv.precise.tesc */, + B39811DA29239F3800A82429 /* spv.ext.RayCallable_Errors.rcall */, + B39811DB29239F3800A82429 /* nosuffix */, + B39811DC29239F3800A82429 /* spv.constructComposite.comp */, + B39811DD29239F3800A82429 /* spv.bufferhandle5.frag */, + B39811DE29239F3800A82429 /* spv.double.comp */, + B39811DF29239F3800A82429 /* hlsl.wavequery.frag */, + B39811E029239F3800A82429 /* hlsl.intrinsics.f1632.frag */, + B39811E129239F3800A82429 /* spv.unit1.frag */, + B39811E229239F3800A82429 /* spv.dead-complex-continue-after-return.vert */, + B39811E329239F3800A82429 /* spv.310.bitcast.frag */, + B39811E429239F3800A82429 /* depthOut.frag */, + B39811E529239F3800A82429 /* preprocessor.line.frag */, + B39811E629239F3800A82429 /* spv.ClosestHitShader_Errors.rchit */, + B39811E729239F3800A82429 /* spv.localAggregates.frag */, + B39811E829239F3800A82429 /* glsl.450.subgroupArithmetic.comp */, + B39811E929239F3800A82429 /* spv.IntersectShader_Errors.rint */, + B39811EA29239F3800A82429 /* link.vk.multiBlocksValid.1.1.geom */, + B39811EB29239F3800A82429 /* 300.vert */, + B39811EC29239F3800A82429 /* newTexture.frag */, + B39811ED29239F3800A82429 /* glsl.entryPointRename.vert */, + B39811EE29239F3800A82429 /* hlsl.clipdistance-8.vert */, + B39811EF29239F3800A82429 /* glsl.460.subgroup.rahit */, + B39811F029239F3800A82429 /* spv.vulkan100.subgroupArithmetic.comp */, + B39811F129239F3800A82429 /* glsl.450.subgroup.frag */, + B39811F229239F3800A82429 /* spv.debugPrintf_Error.frag */, + B39811F329239F3800A82429 /* loopsArtificial.frag */, + B39811F429239F3800A82429 /* remap.specconst.comp */, + B39811F529239F3800A82429 /* 140.vert */, + B39811F629239F3800A82429 /* preprocessor.cpp_style_line_directive.vert */, + B39811F729239F3800A82429 /* 300link3.frag */, + B39811F829239F3800A82429 /* hlsl.matNx1.frag */, + B39811F929239F3800A82429 /* hlsl.snorm.uav.comp */, + B39811FA29239F3800A82429 /* link.vk.matchingPC.0.0.frag */, + B39811FB29239F3800A82429 /* glsl.es320.subgroupShuffle.comp */, + B39811FC29239F3800A82429 /* hlsl.gathercmpRGBA.offset.dx10.frag */, + B39811FD29239F3800A82429 /* hlsl.semantic-1.vert */, + B39811FE29239F3800A82429 /* hlsl.include.vert */, + B39811FF29239F3800A82429 /* reflection.linked.vert */, + B398120029239F3800A82429 /* spv.RayConstants.rgen */, + B398120129239F3800A82429 /* spv.430.frag */, + B398120229239F3800A82429 /* spv.RayCallable_Errors.rcall */, + B398120329239F3800A82429 /* remap.basic.none.frag */, + B398120429239F3800A82429 /* glsl.es320.subgroupArithmetic.comp */, + B398120529239F3800A82429 /* 310runtimeArray.vert */, + B398120629239F3800A82429 /* spv.310.comp */, + B398120729239F3800A82429 /* spv.bufferhandle10.frag */, + B398120829239F3800A82429 /* hlsl.semantic.geom */, + B398120929239F3800A82429 /* 450.tese */, + B398120A29239F3800A82429 /* glsl.450.subgroupBallot.comp */, + B398120B29239F3800A82429 /* runtests */, + B398120C29239F3800A82429 /* hlsl.clipdistance-1.frag */, + B398120D29239F3800A82429 /* spv.bool.vert */, + B398120E29239F3800A82429 /* hlsl.load.rwbuffer.dx10.frag */, + B398120F29239F3800A82429 /* spv.loops.frag */, + B398121029239F3800A82429 /* hlsl.hull.4.tesc */, + B398121129239F3800A82429 /* hlsl.localStructuredBuffer.comp */, + B398121229239F3800A82429 /* hlsl.y-negate-1.vert */, + B398121329239F3800A82429 /* spv.aggOps.frag */, + B398121429239F3800A82429 /* test.frag */, + B398121529239F3800A82429 /* hlsl.struct.split.assign.frag */, + B398121629239F3800A82429 /* spv.IntersectShader.rint */, + B398121729239F3800A82429 /* hlsl.load.offsetarray.dx10.frag */, + B398121829239F3800A82429 /* spv.fragmentDensity-neg.frag */, + B398121929239F3800A82429 /* link.vk.multiBlocksValid.0.1.vert */, + B398121A29239F3800A82429 /* 450.frag */, + B398121B29239F3800A82429 /* hlsl.specConstant.frag */, + B398121C29239F3800A82429 /* hlsl.matrixindex.frag */, + B398121D29239F3800A82429 /* glsl.450.subgroup.tese */, + B398121E29239F3800A82429 /* remap.basic.everything.frag */, + B398121F29239F3800A82429 /* spv.noWorkgroup.comp */, + B398122029239F3800A82429 /* spv.300BuiltIns.vert */, + B398122129239F3800A82429 /* spv.shaderFragMaskAMD.frag */, + B398122229239F3800A82429 /* spv.subgroupExtendedTypesVote.comp */, + B398122329239F3800A82429 /* spv.interpOps.frag */, + B398122429239F3800A82429 /* hlsl.depthGreater.frag */, + B398122529239F3800A82429 /* pointCoord.frag */, + B398122629239F3800A82429 /* spv.subgroupExtendedTypesVoteNeg.comp */, + B398122729239F3800A82429 /* spv.register.autoassign.rangetest.frag */, + B398122829239F3800A82429 /* spv.subgroup.vert */, + B398122929239F3800A82429 /* spv.smBuiltins.frag */, + B398122A29239F3800A82429 /* hlsl.void.frag */, + B398122B29239F3800A82429 /* spv.bufferhandle9.frag */, + B398122C29239F3800A82429 /* hlsl.partialInit.frag */, + B398122D29239F3800A82429 /* web.controlFlow.frag */, + B398122E29239F3800A82429 /* cppNest.vert */, + B398122F29239F3800A82429 /* spv.barrier.vert */, + B398123029239F3800A82429 /* hlsl.logical.binary.vec.frag */, + B398123129239F3800A82429 /* hlsl.clipdistance-4.vert */, + B398123229239F3800A82429 /* spv.sample.frag */, + B398123329239F3800A82429 /* spv.precise.tese */, + B398123429239F3800A82429 /* hlsl.discard.frag */, + B398123529239F3800A82429 /* spv.nonuniform.frag */, + B398123629239F3800A82429 /* spv.matrix.frag */, + B398123729239F3800A82429 /* 100samplerExternal.frag */, + B398123829239F3800A82429 /* hlsl.intrinsics.promote.outputs.frag */, + B398123929239F3800A82429 /* spv.meshShaderUserDefined.mesh */, + B398123A29239F3800A82429 /* bar.h */, + B398123B29239F3800A82429 /* hlsl.depthLess.frag */, + B398123C29239F3800A82429 /* hlsl.sample.dx9.vert */, + B398123D29239F3800A82429 /* spv.specConstant.vert */, + B398123E29239F3800A82429 /* parentBad */, + B398123F29239F3800A82429 /* glsl.es320.subgroupBallot.comp */, + B398124029239F3800A82429 /* glsl.450.subgroupPartitioned.comp */, + B398124129239F3800A82429 /* spv.register.subpass.frag */, + B398124229239F3800A82429 /* 320.vert */, + B398124329239F3800A82429 /* 450.tesc */, + B398124429239F3800A82429 /* spv.subgroupExtendedTypesArithmetic.comp */, + B398124529239F3800A82429 /* loops.frag */, + B398124629239F3800A82429 /* spv.450.geom */, + B398124729239F3800A82429 /* hlsl.pp.line.frag */, + B398124829239F3800A82429 /* rayQuery-allOps.frag */, + B398124929239F3800A82429 /* spv.debugPrintf.frag */, + B398124A29239F3800A82429 /* spv.1.3.8bitstorage-ssbo.vert */, + B398124B29239F3800A82429 /* hlsl.deadFunctionMissingBody.vert */, + B398124C29239F3800A82429 /* remap.similar_1b.everything.frag */, + B398124D29239F3800A82429 /* hlsl.matpack-pragma.frag */, + B398124E29239F3800A82429 /* 110scope.vert */, + B398124F29239F3800A82429 /* spv.subgroupExtendedTypesBallot.comp */, + B398125029239F3800A82429 /* recurse1.frag */, + B398125129239F3800A82429 /* 410.geom */, + B398125229239F3800A82429 /* hlsl.getdimensions.dx10.frag */, + B398125329239F3800A82429 /* hlsl.samplecmplevelzero.offsetarray.dx10.frag */, + B398125429239F3800A82429 /* spv.atomic.comp */, + B398125529239F3800A82429 /* comment.frag */, + B398125629239F3800A82429 /* 410.tesc */, + B398125729239F3800A82429 /* glspv.vert */, + B398125829239F3800A82429 /* hlsl.intrinsics.negative.vert */, + B398125929239F3800A82429 /* hlsl.preprocessor.frag */, + B398125A29239F3800A82429 /* spv.1.4.OpCopyLogical.funcall.frag */, + B398125B29239F3800A82429 /* spv.450.tesc */, + B398125C29239F3800A82429 /* spv.fullyCovered.frag */, + B398125D29239F3800A82429 /* spv.ext.RayGenShaderArray.rgen */, + B398125E29239F3800A82429 /* badChars.frag */, + B398125F29239F3800A82429 /* hlsl.loopattr.frag */, + B398126029239F3800A82429 /* 450.geom */, + B398126129239F3800A82429 /* spv.merge-unreachable.frag */, + B398126229239F3800A82429 /* spv.textureGatherBiasLod.frag */, + B398126329239F3800A82429 /* hlsl.calculatelod.dx10.frag */, + B398126429239F3800A82429 /* spv.deviceGroup.frag */, + B398126529239F3800A82429 /* spv.length.frag */, + B398126629239F3800A82429 /* spv.300layout.frag */, + B398126729239F3800A82429 /* hlsl.intrinsics.vert */, + B398126829239F3800A82429 /* hlsl.load.2dms.dx10.frag */, + B398126929239F3800A82429 /* hlsl.charLit.vert */, + B398126A29239F3800A82429 /* hlsl.mip.negative.frag */, + B398126B29239F3800A82429 /* remap.uniformarray.everything.frag */, + B398126C29239F3800A82429 /* spv.functionParameterTypes.frag */, + B398126D29239F3800A82429 /* spv.8bitstorage-ubo.vert */, + B398126E29239F3800A82429 /* hlsl.hlslOffset.vert */, + B398126F29239F3800A82429 /* hlsl.intrinsics.promote.down.frag */, + B398127029239F3800A82429 /* remap.similar_1b.none.frag */, + B398127129239F3800A82429 /* spv.memoryScopeSemantics.comp */, + B398127229239F3800A82429 /* spv.qualifiers.vert */, + B398127329239F3800A82429 /* hlsl.numericsuffixes.frag */, + B398127429239F3800A82429 /* hlsl.tx.bracket.frag */, + B398127529239F3800A82429 /* nonSquare.vert */, + B398127629239F3800A82429 /* hlsl.clipdistance-5.vert */, + B398127729239F3800A82429 /* spv.glFragColor.frag */, + B398127829239F3800A82429 /* hlsl.structbuffer.rwbyte.frag */, + B398127929239F3800A82429 /* web.comp */, + B398127A29239F3800A82429 /* spv.matFun.vert */, + B398127B29239F3800A82429 /* spv.ClosestHitShader.rchit */, + B398127C29239F3800A82429 /* hlsl.amend.frag */, + B398127D29239F3800A82429 /* spv.bufferhandle8.frag */, + B398127E29239F3800A82429 /* spv.offsets.frag */, + B398127F29239F3800A82429 /* makeDoc */, + B398128029239F3800A82429 /* 120.vert */, + B398128129239F3800A82429 /* spv.subgroupExtendedTypesShuffle.comp */, + B398128229239F3800A82429 /* 435.vert */, + B398128329239F3800A82429 /* hlsl.wavereduction.comp */, + B398128429239F3800A82429 /* spv.pp.line.frag */, + B398128529239F3800A82429 /* hlsl.attribute.expression.comp */, + B398128629239F3800A82429 /* link.vk.multiBlocksValid.0.0.vert */, + B398128729239F3800A82429 /* spv.for-continue-break.vert */, + B398128829239F3800A82429 /* array.frag */, + B398128929239F3800A82429 /* hlsl.hull.5.tesc */, + B398128A29239F3800A82429 /* hlsl.samplecmp.offset.dx10.frag */, + B398128B29239F3800A82429 /* hlsl.doLoop.frag */, + B398128C29239F3900A82429 /* spv.atomicInt64.comp */, + B398128D29239F3900A82429 /* spv.subgroupBallot.comp */, + B398128E29239F3900A82429 /* link1.frag */, + B398128F29239F3900A82429 /* specExamples.vert */, + B398129029239F3900A82429 /* voidFunction.frag */, + B398129129239F3900A82429 /* spv.precisionNonESSamp.frag */, + B398129229239F3900A82429 /* hlsl.texture.subvec4.frag */, + B398129329239F3900A82429 /* spv.bufferhandle11.frag */, + B398129429239F3900A82429 /* spv.float16.frag */, + B398129529239F3900A82429 /* precise_struct_block.vert */, + B398129629239F3900A82429 /* hlsl.nonstaticMemberFunction.frag */, + B398129729239F3900A82429 /* spv.debugInfo.frag */, + B398129829239F3900A82429 /* hlsl.earlydepthstencil.frag */, + B398129929239F3900A82429 /* spv.dead-after-discard.frag */, + B398129A29239F3900A82429 /* cppIntMinOverNegativeOne.frag */, + B398129B29239F3900A82429 /* hlsl.params.default.negative.frag */, + B398129C29239F3900A82429 /* spv.swizzleInversion.frag */, + B398129D29239F3900A82429 /* spv.RayGenShader11.rgen */, + B398129E29239F3900A82429 /* spv.subgroupExtendedTypesArithmeticNeg.comp */, + B398129F29239F3900A82429 /* 300link2.frag */, + B39812A029239F3900A82429 /* link.vk.matchingPC.0.1.frag */, + B39812A129239F3900A82429 /* hlsl.load.buffer.dx10.frag */, + B39812A229239F3900A82429 /* 310AofA.vert */, + B39812A329239F3900A82429 /* spv.conditionalDemote.frag */, + B39812A429239F3900A82429 /* spv.xfbStrideJustOnce.vert */, + B39812A529239F3900A82429 /* spv.shaderImageFootprint.frag */, + B39812A629239F3900A82429 /* hlsl.logicalConvert.frag */, + B39812A729239F3900A82429 /* hlsl.promote.atomic.frag */, + B39812A829239F3900A82429 /* es-link1.frag */, + B39812A929239F3900A82429 /* 310.comp */, + B39812AA29239F3900A82429 /* spv.types.frag */, + B39812AB29239F3900A82429 /* spv.separate.frag */, + B39812AC29239F3900A82429 /* hlsl.opaque-type-bug.frag */, + B39812AD29239F3900A82429 /* cppDeepNest.frag */, + B39812AE29239F3900A82429 /* compoundsuffix.frag.hlsl */, + B39812AF29239F3900A82429 /* hlsl.coverage.frag */, + B39812B029239F3900A82429 /* hlsl.load.basic.dx10.vert */, + B39812B129239F3900A82429 /* hlsl.constructexpr.frag */, + B39812B229239F3900A82429 /* spv.subgroupPartitioned.comp */, + B39812B329239F3900A82429 /* spv.builtInXFB.vert */, + B39812B429239F3900A82429 /* matrix2.frag */, + B39812B529239F3900A82429 /* hlsl.color.hull.tesc */, + B39812B629239F3900A82429 /* hlsl.emptystructreturn.vert */, + B39812B729239F3900A82429 /* link.vk.multiBlocksValid.1.0.geom */, + B39812B829239F3900A82429 /* hlsl.clipdistance-1.geom */, + B39812B929239F3900A82429 /* hlsl.clipdistance-9.vert */, + B39812BA29239F3900A82429 /* hlsl.-D-U.frag */, + B39812BB29239F3900A82429 /* glsl.460.subgroup.rint */, + B39812BC29239F3900A82429 /* hlsl.precise.frag */, + B39812BD29239F3900A82429 /* spv.dataOut.frag */, + B39812BE29239F3900A82429 /* hlsl.flatten.return.frag */, + B39812BF29239F3900A82429 /* spv.bufferhandle4.frag */, + B39812C029239F3900A82429 /* hlsl.isfinite.frag */, + B39812C129239F3900A82429 /* 310.inheritMemory.frag */, + B39812C229239F3900A82429 /* prepost.frag */, + B39812C329239F3900A82429 /* precision.vert */, + B39812C429239F3900A82429 /* swizzle.frag */, + B39812C529239F3900A82429 /* spv.varyingArray.frag */, + B39812C629239F3900A82429 /* types.frag */, + B39812C729239F3900A82429 /* spv.ext.MissShader.rmiss */, + B39812C829239F3900A82429 /* 300samplerExternal.frag */, + B39812C929239F3900A82429 /* glsl.450.subgroup.geom */, + B39812CA29239F3900A82429 /* spv.8bitstorage_Error-int.frag */, + B39812CB29239F3900A82429 /* preprocessor.extensions.vert */, + B39812CC29239F3900A82429 /* hlsl.float4.frag */, + B39812CD29239F3900A82429 /* conditionalDiscard.frag */, + B39812CE29239F3900A82429 /* link.vk.differentPC.1.2.frag */, + B39812CF29239F3900A82429 /* hlsl.clipdistance-3.frag */, + B39812D029239F3900A82429 /* i1.h */, + B39812D129239F3900A82429 /* spv.bufferhandle12.frag */, + B39812D229239F3900A82429 /* hlsl.logical.binary.frag */, + B39812D329239F3900A82429 /* link2.frag */, + B39812D429239F3900A82429 /* varyingArray.frag */, + B39812D529239F3900A82429 /* 100.conf */, + B39812D629239F3900A82429 /* web.builtins.frag */, + B39812D729239F3900A82429 /* glsl.460.subgroup.rgen */, + B39812D829239F3900A82429 /* hlsl.pp.line4.frag */, + B39812D929239F3900A82429 /* rayQuery-no-cse.rgen */, + B39812DA29239F3900A82429 /* varyingArrayIndirect.frag */, + B39812DB29239F3900A82429 /* hlsl.staticFuncInit.frag */, + B39812DC29239F3900A82429 /* hlsl.constructimat.frag */, + B39812DD29239F3900A82429 /* spv.structDeref.frag */, + B39812DE29239F3900A82429 /* spv.16bitstorage-uint.frag */, + B39812DF29239F3900A82429 /* rayQuery-allOps.comp */, + B39812E029239F3900A82429 /* 130.frag */, + B39812E129239F3900A82429 /* remap.switch.everything.frag */, + B39812E229239F3900A82429 /* spv.xfbOffsetOnBlockMembersAssignment.vert */, + B39812E329239F3900A82429 /* link.vk.matchingPC.0.2.frag */, + B39812E429239F3900A82429 /* versionsClean.frag */, + B39812E529239F3900A82429 /* spv.meshShaderPerView_Errors.mesh */, + B39812E629239F3900A82429 /* spv.controlFlowAttributes.frag */, + B39812E729239F3900A82429 /* web.texture.frag */, + B39812E829239F3900A82429 /* spv.texture.frag */, + B39812E929239F3900A82429 /* es-link2.frag */, + B39812EA29239F3900A82429 /* 400.vert */, + B39812EB29239F3900A82429 /* hlsl.samplecmp.offsetarray.dx10.frag */, + B39812EC29239F3900A82429 /* reflection.options.vert */, + B39812ED29239F3900A82429 /* spv.int32.frag */, + B39812EE29239F3900A82429 /* hlsl.clipdistance-2.geom */, + B39812EF29239F3900A82429 /* hlsl.texturebuffer.frag */, + B39812F029239F3900A82429 /* spv.sampleMaskOverrideCoverage.frag */, + B39812F129239F3900A82429 /* hlsl.sample.sub-vec4.dx10.frag */, + B39812F229239F3900A82429 /* hlsl.stringtoken.frag */, + B39812F329239F3900A82429 /* spv.unit3.frag */, + B39812F429239F3900A82429 /* spv.conditionalDiscard.frag */, + B39812F529239F3900A82429 /* hlsl.constructArray.vert */, + B39812F629239F3900A82429 /* spv.shaderStencilExport.frag */, + B39812F729239F3900A82429 /* spv.bufferhandle7.frag */, + B39812F829239F3900A82429 /* 300link.frag */, + B39812F929239F3900A82429 /* spv.multiviewPerViewAttributes.tesc */, + B39812FA29239F3900A82429 /* inc2 */, + B39812FD29239F3900A82429 /* hlsl.samplelevel.offsetarray.dx10.frag */, + B39812FE29239F3900A82429 /* spv.image.load-formatted.frag */, + B39812FF29239F3900A82429 /* remap.if.none.frag */, + B398130029239F3900A82429 /* hlsl.intrinsic.frexp.vert */, + B398130129239F3900A82429 /* spv.voidFunction.frag */, + B398130229239F3900A82429 /* 450.comp */, + B398130329239F3900A82429 /* spv.float16convertonlyarith.comp */, + B398130429239F3900A82429 /* glsl.es320.subgroupQuad.comp */, + B398130529239F3900A82429 /* hlsl.sample.basic.dx10.frag */, + B398130629239F3900A82429 /* link.vk.differentPC.1.1.frag */, + B398130729239F3900A82429 /* hlsl.attribute.frag */, + B398130829239F3900A82429 /* hlsl.PointSize.vert */, + B398130929239F3900A82429 /* spv.8bitstorage-int.frag */, + B398130A29239F3900A82429 /* aggOps.frag */, + B398130B29239F3900A82429 /* spv.constStruct.vert */, + B398130C29239F3900A82429 /* constantUnaryConversion.comp */, + B398130D29239F3900A82429 /* glsl.450.subgroupClusteredNeg.comp */, + B398130E29239F3900A82429 /* array100.frag */, + B398130F29239F3900A82429 /* hlsl.inoutquals.frag */, + B398131029239F3900A82429 /* spv.subgroupExtendedTypesShuffleRelative.comp */, + B398131129239F3900A82429 /* 150.geom */, + B398131229239F3900A82429 /* preprocessor.many.endif.vert */, + B398131329239F3900A82429 /* hlsl.layout.frag */, + B398131429239F3900A82429 /* hlsl.frag */, + B398131529239F3900A82429 /* cppPassMacroName.frag */, + B398131629239F3900A82429 /* glsl.450.subgroupVote.comp */, + B398131729239F3900A82429 /* hlsl.flattenOpaqueInit.vert */, + B398131829239F3900A82429 /* hlsl.partialFlattenMixed.vert */, + B398131929239F3900A82429 /* hlsl.singleArgIntPromo.vert */, + B398131A29239F3900A82429 /* cppBad3.vert */, + B398131B29239F3900A82429 /* hlsl.typedef.frag */, + B398131C29239F3900A82429 /* spv.nonSquare.vert */, + B398131D29239F3900A82429 /* spv.subpass.frag */, + B398131E29239F3900A82429 /* spv.16bitstorage_Error-uint.frag */, + B398131F29239F3900A82429 /* matrix.frag */, + B398132029239F3900A82429 /* spv.subgroupShuffle.comp */, + B398132129239F3900A82429 /* hlsl.groupid.comp */, + B398132229239F3900A82429 /* sample.frag */, + B398132329239F3900A82429 /* spv.imageLoadStoreLod.frag */, + B398132429239F3900A82429 /* spv.forLoop.frag */, + B398132529239F3900A82429 /* link1.vk.frag */, + B398132629239F3900A82429 /* spv.460.vert */, + B398132729239F3900A82429 /* glsl.460.subgroup.rchit */, + B398132829239F3900A82429 /* hlsl.clipdistance-6.vert */, + B398132929239F3900A82429 /* 300layout.frag */, + B398132A29239F3900A82429 /* findFunction.frag */, + B398132B29239F3900A82429 /* hlsl.cast.frag */, + B398132C29239F3900A82429 /* empty2.frag */, + B398132D29239F3900A82429 /* spv.scalarlayout.frag */, + B398132E29239F3900A82429 /* hlsl.structbuffer.fn2.comp */, + B398132F29239F3900A82429 /* spv.nonuniform4.frag */, + B398133029239F3900A82429 /* 420.vert */, + B398133129239F3900A82429 /* hlsl.wavequery.comp */, + B398133229239F3900A82429 /* hlsl.calculatelodunclamped.dx10.frag */, + B398133329239F3900A82429 /* hlsl.structStructName.frag */, + B398133429239F3900A82429 /* hlsl.struct.split-1.vert */, + B398133529239F3900A82429 /* preprocessor.pragma.vert */, + B398133629239F3900A82429 /* structDeref.frag */, + B398133729239F3900A82429 /* hlsl.load.offset.dx10.frag */, + B398133829239F3900A82429 /* spv.functionSemantics.frag */, + B398133929239F3900A82429 /* hlsl.self_cast.frag */, + B398133A29239F3900A82429 /* spv.dead-after-loop-break.vert */, + B398133B29239F3900A82429 /* hlsl.matType.int.frag */, + B398133C29239F3900A82429 /* spv.MissShader.rmiss */, + B398133D29239F3900A82429 /* versionsErrors.vert */, + B398133E29239F3900A82429 /* preprocessor.cpp_style___FILE__.vert */, + B398133F29239F3900A82429 /* hlsl.gather.offsetarray.dx10.frag */, + B398134029239F3900A82429 /* hlsl.y-negate-3.vert */, + B398134129239F3900A82429 /* spv.ext.RayConstants.rgen */, + B398134229239F3900A82429 /* 310.geom */, + B398134329239F3900A82429 /* deepRvalue.frag */, + B398134429239F3900A82429 /* glsl.es320.subgroup.geom */, + B398134529239F3900A82429 /* hlsl.gathercmpRGBA.offsetarray.dx10.frag */, + B398134629239F3900A82429 /* hlsl.y-negate-2.vert */, + B398134729239F3900A82429 /* overlongLiteral.frag */, + B398134829239F3900A82429 /* hlsl.samplegrad.offsetarray.dx10.frag */, + B398134929239F3900A82429 /* vulkan.vert */, + B398134A29239F3900A82429 /* 310.tesc */, + B398134B29239F3900A82429 /* 460.vert */, + B398134C29239F3900A82429 /* spv.vulkan110.storageBuffer.vert */, + B398134D29239F3900A82429 /* glsl.es320.subgroup.tesc */, + B398134E29239F3900A82429 /* spv.multiStruct.comp */, + B398134F29239F3900A82429 /* hlsl.sample.offset.dx10.frag */, + B398135029239F3900A82429 /* hlsl.gatherRGBA.array.dx10.frag */, + B398135129239F3900A82429 /* spv.conversion.frag */, + B398135229239F3900A82429 /* hlsl.scope.frag */, + B398135329239F3900A82429 /* spv.coopmat.comp */, + B398135429239F3900A82429 /* spv.hlslOffsets.vert */, + B398135529239F3900A82429 /* spv.xfbOverlapOffsetCheckWithBlockAndMember.vert */, + B398135629239F3900A82429 /* spv.perprimitiveNV.frag */, + B398135729239F3900A82429 /* spv.set.vert */, + B398135829239F3900A82429 /* hlsl.automap.frag */, + B398135929239F3900A82429 /* hlsl.staticMemberFunction.frag */, + B398135A29239F3900A82429 /* hlsl.structIoFourWay.frag */, + B398135B29239F3900A82429 /* hlsl.getsampleposition.dx10.frag */, + B398135C29239F3900A82429 /* hlsl.array.multidim.frag */, + B398135D29239F3900A82429 /* spv.nonuniform5.frag */, + B398135E29239F3900A82429 /* remap.similar_1a.none.frag */, + B398135F29239F3900A82429 /* 150.frag */, + B398136029239F3900A82429 /* length.frag */, + B398136129239F3900A82429 /* hlsl.clipdistance-7.vert */, + B398136229239F3900A82429 /* spv.subgroupExtendedTypesQuadNeg.comp */, + B398136329239F3900A82429 /* empty3.frag */, + B398136429239F3900A82429 /* spv.fsi.frag */, + B398136529239F3900A82429 /* hlsl.reflection.binding.frag */, + B398136629239F3900A82429 /* hlsl.structbuffer.incdec.frag */, + B398136729239F3900A82429 /* negativeArraySize.comp */, + B398136829239F3900A82429 /* hlsl.scalar2matrix.frag */, + B398136929239F3900A82429 /* hlsl.subpass.frag */, + B398136A29239F3900A82429 /* hlsl.samplegrad.offset.dx10.frag */, + B398136B29239F3900A82429 /* spv.test.frag */, + B398136C29239F3900A82429 /* remap.hlsl.templatetypes.none.frag */, + B398136D29239F3900A82429 /* hlsl.matrixSwizzle.vert */, + B398136E29239F3900A82429 /* 310.frag */, + B398136F29239F3900A82429 /* spv.targetOpenGL.vert */, + B398137029239F3900A82429 /* glsl.es320.subgroup.frag */, + B398137129239F3900A82429 /* spv.viewportArray2.vert */, + B398137229239F3900A82429 /* hlsl.forLoop.frag */, + B398137329239F3900A82429 /* spv.1.3.8bitstorage-ubo.vert */, + B398137429239F3900A82429 /* spv.150.geom */, + B398137529239F3900A82429 /* cppBad2.vert */, + B398137629239F3900A82429 /* spv.forwardFun.frag */, + B398137729239F3900A82429 /* stringToDouble.vert */, + B398137829239F3900A82429 /* spv.fragmentShaderBarycentric2.frag */, + B398137929239F3900A82429 /* functionSemantics.frag */, + B398137A29239F3900A82429 /* glsl.460.subgroup.mesh */, + B398137B29239F3900A82429 /* 430.comp */, + B398137C29239F3900A82429 /* hlsl.samplebias.array.dx10.frag */, + B398137D29239F3900A82429 /* hlsl.shapeConv.frag */, + B398137E29239F3900A82429 /* spv.fragmentDensity.frag */, + B398137F29239F3900A82429 /* spv.samplePosition.frag */, + B398138029239F3900A82429 /* web.array.frag */, + B398138129239F3900A82429 /* spv.fsi_Error.frag */, + B398138229239F3900A82429 /* hlsl.shapeConvRet.frag */, + B398138329239F3900A82429 /* nvShaderNoperspectiveInterpolation.frag */, + B398138429239F3900A82429 /* spv.specConstantOperations.vert */, + B398138529239F3900A82429 /* spv.1.4.constructComposite.comp */, + B398138629239F3900A82429 /* spv.Operations.frag */, + B398138729239F3900A82429 /* hlsl.pp.vert */, + B398138829239F3900A82429 /* parent.h */, + B398138929239F3900A82429 /* 150.tesc */, + B398138A29239F3900A82429 /* glsl.es320.subgroupPartitioned.comp */, + B398138B29239F3900A82429 /* remap.invalid-spirv-2.spv */, + B398138C29239F3900A82429 /* spv.privateVariableTypes.frag */, + B398138D29239F3900A82429 /* spv.stereoViewRendering.tesc */, + B398138E29239F3900A82429 /* hlsl.inf.vert */, + B398138F29239F3900A82429 /* hlsl.gather.basic.dx10.frag */, + B398139029239F3900A82429 /* hlsl.samplelevel.offset.dx10.frag */, + B398139129239F3900A82429 /* hlsl.samplelevel.basic.dx10.frag */, + B398139229239F3900A82429 /* flowControl.frag */, + B398139329239F3900A82429 /* glspv.version.frag */, + B398139429239F3900A82429 /* hlsl.rw.vec2.bracket.frag */, + B398139529239F3900A82429 /* spv.drawParams.vert */, + B398139629239F3900A82429 /* glsl.es320.subgroupShuffleRelative.comp */, + B398139729239F3900A82429 /* recurse2.frag */, + B398139829239F3900A82429 /* hlsl.gatherRGBA.offset.dx10.frag */, + B398139929239F3900A82429 /* hlsl.samplecmp.array.dx10.frag */, + B398139A29239F3900A82429 /* spv.constConstruct.vert */, + B398139B29239F3900A82429 /* constFold.frag */, + B398139C29239F3900A82429 /* spv.dead-after-return.vert */, + B398139D29239F3900A82429 /* link.vk.differentPC.1.0.frag */, + B398139E29239F3900A82429 /* spv.flowControl.frag */, + B398139F29239F3900A82429 /* constFoldIntMin.frag */, + B39813A029239F3900A82429 /* hlsl.wavevote.comp */, + B39813A129239F3900A82429 /* spv.boolInBlock.frag */, + B39813A229239F3900A82429 /* hlsl.multiReturn.frag */, + B39813A329239F3900A82429 /* spv.1.4.OpSelect.frag */, + B39813A429239F3900A82429 /* hlsl.targetStruct2.frag */, + B39813A529239F3900A82429 /* spv.subgroupVote.comp */, + B39813A629239F3900A82429 /* hlsl.intrinsics.double.frag */, + B39813A729239F3900A82429 /* spv.specTexture.frag */, + B39813A829239F3900A82429 /* hlsl.pp.expand.frag */, + B39813A929239F3900A82429 /* hlsl.fraggeom.frag */, + B39813AA29239F3900A82429 /* spv.queryL.frag */, + B39813AB29239F3900A82429 /* spv.depthOut.frag */, + B39813AC29239F3900A82429 /* hlsl.mip.negative2.frag */, + B39813AD29239F3900A82429 /* glsl.450.subgroupShuffleRelative.comp */, + B39813AE29239F3900A82429 /* spv.1.4.OpCopyLogical.comp */, + B39813AF29239F3900A82429 /* hlsl.load.array.dx10.frag */, + B39813B029239F3900A82429 /* spv.bufferhandle6.frag */, + B39813B129239F3900A82429 /* spv.sparseTexture.frag */, + B39813B229239F3900A82429 /* hlsl.samplebias.offset.dx10.frag */, + B39813B329239F3900A82429 /* 310.tese */, + B39813B429239F3900A82429 /* 330.frag */, + B39813B529239F3900A82429 /* spv.int64.frag */, + B39813B629239F3900A82429 /* hlsl.gatherRGBA.offsetarray.dx10.frag */, + B39813B729239F3900A82429 /* glsl.es320.subgroup.tese */, + B39813B829239F3900A82429 /* spv.unit2.frag */, + B39813B929239F3900A82429 /* spv.coopmat_Error.comp */, + B39813BA29239F3900A82429 /* spv.meshShaderBuiltins.mesh */, + B39813BB29239F3900A82429 /* atomic_uint.frag */, + B39813BC29239F3900A82429 /* hlsl.clipdistance-3.geom */, + B39813BD29239F3900A82429 /* always-discard2.frag */, + B39813BE29239F3900A82429 /* spv.shadingRate.frag */, + B39813BF29239F3900A82429 /* hlsl.global-const-init.frag */, + B39813C029239F3900A82429 /* spv.vulkan110.int16.frag */, + B39813C129239F3900A82429 /* 150.tese */, + B39813C229239F3900A82429 /* spv.subgroupExtendedTypesBallotNeg.comp */, + B39813C329239F3A00A82429 /* spv.OVR_multiview.vert */, + B39813C429239F3A00A82429 /* hlsl.samplecmplevelzero.array.dx10.frag */, + B39813C529239F3A00A82429 /* hlsl.struct.split.call.vert */, + B39813C629239F3A00A82429 /* spv.uint.frag */, + B39813C729239F3A00A82429 /* spv.ext.IntersectShader.rint */, + B39813C829239F3A00A82429 /* glspv.esversion.vert */, + B39813C929239F3A00A82429 /* spv.AnyHitShader_Errors.rahit */, + B39813CA29239F3A00A82429 /* web.basic.vert */, + B39813CB29239F3A00A82429 /* spv.dead-after-switch-break.vert */, + B39813CC29239F3A00A82429 /* spv.330.geom */, + B39813CD29239F3A00A82429 /* hlsl.struct.split.trivial.geom */, + B39813CE29239F3A00A82429 /* hlsl.structbuffer.append.frag */, + B39813CF29239F3A00A82429 /* hlsl.semicolons.frag */, + B39813D029239F3A00A82429 /* hlsl.structbuffer.atomics.frag */, + B39813D129239F3A00A82429 /* spv.130.frag */, + B39813D229239F3A00A82429 /* hlsl.params.default.frag */, + B39813D329239F3A00A82429 /* hlsl.max.frag */, + B39813D429239F3A00A82429 /* spv.1.4.OpCopyLogicalBool.comp */, + B39813D529239F3A00A82429 /* hlsl.string.frag */, + B39813D629239F3A00A82429 /* 440.vert */, + B39813D729239F3A00A82429 /* hlsl.cbuffer-identifier.vert */, + B39813D829239F3A00A82429 /* spv.subgroupExtendedTypesClustered.comp */, + B39813D929239F3A00A82429 /* spv.layoutNested.vert */, + B39813DA29239F3A00A82429 /* spv.dataOutIndirect.frag */, + B39813DB29239F3A00A82429 /* hlsl.gs-hs-mix.tesc */, + B39813DC29239F3A00A82429 /* remap.invalid-spirv-1.spv */, + B39813DD29239F3A00A82429 /* spv.subgroupClusteredNeg.comp */, + B39813DE29239F3A00A82429 /* spv.explicittypes.frag */, + B39813DF29239F3A00A82429 /* spv.bufferhandle13.frag */, + B39813E029239F3A00A82429 /* vulkan.ast.vert */, + B39813E129239F3A00A82429 /* link3.frag */, + B39813E229239F3A00A82429 /* hlsl.store.rwbyteaddressbuffer.type.comp */, + B39813E329239F3A00A82429 /* spv.320.meshShaderUserDefined.mesh */, + B39813E429239F3A00A82429 /* hlsl.boolConv.vert */, + B39813E529239F3A00A82429 /* structure.frag */, + B39813E629239F3A00A82429 /* hlsl.clipdistance-2.frag */, + B39813E729239F3A00A82429 /* hlsl.array.frag */, + B39813E829239F3A00A82429 /* web.operations.frag */, + B39813E929239F3A00A82429 /* spv.pushConstantAnon.vert */, + B39813EA29239F3A00A82429 /* spv.texture.sampler.transform.frag */, + B39813EB29239F3A00A82429 /* glsl.es320.subgroupBasic.comp */, + B39813EC29239F3A00A82429 /* hlsl.semantic.vert */, + B39813ED29239F3A00A82429 /* spv.paramMemory.frag */, + B39813EE29239F3A00A82429 /* spv.bufferhandle18.frag */, + B39813EF29239F3A00A82429 /* hlsl.overload.frag */, + B39813F029239F3A00A82429 /* hlsl.clipdistance-9.frag */, + B39813F129239F3A00A82429 /* hlsl.emptystructreturn.frag */, + B39813F229239F3A00A82429 /* tokenPaste.vert */, + B39813F329239F3A00A82429 /* hlsl.implicitBool.frag */, + B39813F429239F3A00A82429 /* spv.uniformArray.frag */, + B39813F529239F3A00A82429 /* hlsl.multiEntry.vert */, + B39813F629239F3A00A82429 /* spv.do-while-continue-break.vert */, + B39813F729239F3A00A82429 /* spv.while-continue-break.vert */, + B39813F829239F3A00A82429 /* web.runtests */, + B39813F929239F3A00A82429 /* rayQuery-initialize.rgen */, + B39813FA29239F3A00A82429 /* spv.vecMatConstruct.frag */, + B39813FB29239F3A00A82429 /* sample.frag.out */, + B39813FC29239F3A00A82429 /* remap.hlsl.sample.basic.none.frag */, + B39813FD29239F3A00A82429 /* spv.doWhileLoop.frag */, + B39813FE29239F3A00A82429 /* conversion.frag */, + B39813FF29239F3A00A82429 /* hlsl.samplecmplevelzero.basic.dx10.frag */, + B398140029239F3A00A82429 /* spv.subgroupBasic.comp */, + B398140129239F3A00A82429 /* precision.frag */, + B398140229239F3A00A82429 /* hlsl.intrinsics.d3dcolortoubyte4.frag */, + B398140329239F3A00A82429 /* cppBad5.vert */, + B398140429239F3A00A82429 /* forwardRef.frag */, + B398140529239F3A00A82429 /* vulkan.comp */, + B398140629239F3A00A82429 /* foo.h */, + B398140729239F3A00A82429 /* hlsl.struct.split.nested.geom */, + B398140829239F3A00A82429 /* spv.subgroupExtendedTypesShuffleNeg.comp */, + B398140929239F3A00A82429 /* hlsl.mintypes.frag */, + B398140A29239F3A00A82429 /* link.multiAnonBlocksValid.0.0.vert */, + B398140B29239F3A00A82429 /* hlsl.nonint-index.frag */, + B398140C29239F3A00A82429 /* link.multiAnonBlocksInvalid.0.0.vert */, + B398140D29239F3A00A82429 /* spv.subgroupQuad.comp */, + B398140E29239F3A00A82429 /* 100.frag */, + B398140F29239F3A00A82429 /* specExamples.frag */, + B398141029239F3A00A82429 /* spv.register.noautoassign.frag */, + B398141129239F3A00A82429 /* whileLoop.frag */, + B398141229239F3A00A82429 /* hlsl.sample.offsetarray.dx10.frag */, + B398141329239F3A00A82429 /* forLoop.frag */, + B398141429239F3A00A82429 /* hlsl.basic.comp */, + B398141529239F3A00A82429 /* spv.nonuniform2.frag */, + B398141629239F3A00A82429 /* remap.basic.strip.frag */, + B398141729239F3A00A82429 /* Operations.frag */, + B398141829239F3A00A82429 /* hlsl.wavequad.comp */, + B398141929239F3A00A82429 /* mixedArrayDecls.frag */, + B398141A29239F3A00A82429 /* spv.140.frag */, + B398141B29239F3A00A82429 /* hlsl.structarray.flatten.geom */, + B398141C29239F3A00A82429 /* decls.frag */, + B398141D29239F3A00A82429 /* remap.literal64.none.spv */, + B398141E29239F3A00A82429 /* hlsl.matType.bool.frag */, + B398141F29239F3A00A82429 /* 430.vert */, + B398142029239F3A00A82429 /* spv.ext.RayGenShader11.rgen */, + B398142129239F3A00A82429 /* spv.xfbOffsetOnStructMembersAssignment.vert */, + B398142229239F3A00A82429 /* hlsl.attributeC11.frag */, + B398142329239F3A00A82429 /* preprocessor.edge_cases.vert */, + B398142429239F3A00A82429 /* spv.arbPostDepthCoverage_Error.frag */, + B398142529239F3A00A82429 /* hlsl.load.basic.dx10.frag */, + B398142629239F3A00A82429 /* hlsl.templatetypes.negative.frag */, + B398142729239F3A00A82429 /* hlsl.clip.frag */, + B398142829239F3A00A82429 /* spv.float64.frag */, + B398142929239F3A00A82429 /* hlsl.flattenOpaqueInitMix.vert */, + B398142A29239F3A00A82429 /* hlsl.gather.offset.dx10.frag */, + B398142B29239F3A00A82429 /* link2.vk.frag */, + B398142C29239F3A00A82429 /* hlsl.intrinsics.f3216.frag */, + B398142D29239F3A00A82429 /* earlyReturnDiscard.frag */, + B398142E29239F3A00A82429 /* spv.looseUniformNoLoc.vert */, + B398142F29239F3A00A82429 /* hlsl.clipdistance-5.frag */, + B398143029239F3A00A82429 /* spv.sparseTextureClamp.frag */, + B398143129239F3A00A82429 /* hlsl.sin.frag */, + B398143229239F3A00A82429 /* spv.bufferhandle14.frag */, + B398143329239F3A00A82429 /* remap.literal64.everything.spv */, + B398143429239F3A00A82429 /* 410.vert */, + B398143529239F3A00A82429 /* spv.specConst.vert */, + B398143629239F3A00A82429 /* glsl.460.subgroup.rcall */, + B398143729239F3A00A82429 /* hlsl.samplecmp.basic.dx10.frag */, + B398143829239F3A00A82429 /* spv.for-nobody.vert */, + B398143929239F3A00A82429 /* cppComplexExpr.vert */, + B398143A29239F3A00A82429 /* preprocessor.include.disabled.vert */, + B398143B29239F3A00A82429 /* compoundsuffix.vert.glsl */, + B398143C29239F3A00A82429 /* hlsl.samplelevel.array.dx10.frag */, + B398143D29239F3A00A82429 /* hlsl.pp.line2.frag */, + B398143E29239F3A00A82429 /* hlsl.gather.array.dx10.frag */, + B398143F29239F3A00A82429 /* 320.geom */, + B398144029239F3A00A82429 /* texture.frag */, + B398144129239F3A00A82429 /* spv.fragmentShaderBarycentric.frag */, + B398144229239F3A00A82429 /* hlsl.load.rwtexture.dx10.frag */, + B398144329239F3A00A82429 /* hlsl.rw.atomics.frag */, + B398144429239F3A00A82429 /* hlsl.synthesizeInput.frag */, + B398144529239F3A00A82429 /* hlsl.waveprefix.comp */, + B398144629239F3A00A82429 /* spv.image.frag */, + B398144729239F3A00A82429 /* structAssignment.frag */, + B398144829239F3A00A82429 /* spv.xfb.vert */, + B398144929239F3A00A82429 /* 120.frag */, + B398144A29239F3A00A82429 /* spv.bufferhandle19_Errors.frag */, + B398144B29239F3A00A82429 /* hlsl.samplebias.basic.dx10.frag */, + B398144C29239F3A00A82429 /* simpleFunctionCall.frag */, + B398144D29239F3A00A82429 /* hlsl.clipdistance-4.geom */, + B398144E29239F3A00A82429 /* hlsl.dashI.vert */, + B398144F29239F3A00A82429 /* hlsl.function.frag */, + B398145029239F3A00A82429 /* cppBad.vert */, + B398145129239F3A00A82429 /* web.separate.frag */, + B398145229239F3A00A82429 /* noMain1.geom */, + B398145329239F3A00A82429 /* hlsl.array.flatten.frag */, + B398145429239F3A00A82429 /* tokenLength.vert */, + B398145529239F3A00A82429 /* doWhileLoop.frag */, + B398145629239F3A00A82429 /* spv.ext.AnyHitShader_Errors.rahit */, + B398145729239F3A00A82429 /* spv.bufferhandle1.frag */, + B398145829239F3A00A82429 /* matrixError.vert */, + B398145929239F3A00A82429 /* rayQuery-allOps.rgen */, + B398145A29239F3A00A82429 /* hlsl.type.half.frag */, + B398145B29239F3A00A82429 /* spv.subgroup.geom */, + B398145C29239F3A00A82429 /* 300block.frag */, + B398145D29239F3A00A82429 /* glspv.frag */, + B398145E29239F3A00A82429 /* spv.AnyHitShader.rahit */, + B398145F29239F3A00A82429 /* hlsl.intrinsics.negative.frag */, + B398146029239F3A00A82429 /* hlsl.gatherRGBA.basic.dx10.frag */, + B398146129239F3A00A82429 /* glsl.460.subgroup.rmiss */, + B398146229239F3A00A82429 /* spv.ssbo.autoassign.frag */, + B398146329239F3A00A82429 /* validate-shaders.sh */, + B398146429239F3A00A82429 /* preprocessor.bad_arg.vert */, + B398146529239F3A00A82429 /* hlsl.intrinsics.frag */, + B398146629239F3A00A82429 /* spv.RayGenShader.rgen */, + B398146729239F3A00A82429 /* spv.300layout.vert */, + B398146829239F3A00A82429 /* spv.while-simple.vert */, + B398146929239F3A00A82429 /* cppRelaxSkipTokensErrors.vert */, + B398146A29239F3A00A82429 /* spv.16bitstorage_Error-int.frag */, + B398146B29239F3A00A82429 /* hlsl.conditional.frag */, + B398146C29239F3A00A82429 /* hlsl.float1.frag */, + B398146D29239F3A00A82429 /* spv.MissShader_Errors.rmiss */, + B398146E29239F3A00A82429 /* hlsl.sample.dx9.frag */, + B398146F29239F3A00A82429 /* hlsl.multiDescriptorSet.frag */, + B398147029239F3A00A82429 /* hlsl.structbuffer.frag */, + B398147129239F3A00A82429 /* baseLegalResults */, + B398147A29239F3A00A82429 /* spv.float16Fetch.frag */, + B398147B29239F3A00A82429 /* missingBodies.vert */, + B398147C29239F3A00A82429 /* mains1.frag */, + B398147D29239F3A00A82429 /* 320.frag */, + B398147E29239F3A00A82429 /* hlsl.type.type.conversion.all.frag */, + B398147F29239F3A00A82429 /* spv.dead-after-continue.vert */, + B398148029239F3A00A82429 /* hlsl.struct.split.array.geom */, + B398148129239F3A00A82429 /* spv.volatileAtomic.comp */, + B398148229239F3A00A82429 /* glsl.-D-U.frag */, + B398148329239F3A00A82429 /* link.vk.differentPC.0.2.frag */, + B398148429239F3A00A82429 /* hlsl.pp.tokenpasting.frag */, + B398148529239F3A00A82429 /* hlsl.typeGraphCopy.vert */, + B398148629239F3A00A82429 /* spv.sampleId.frag */, + B398148729239F3A00A82429 /* invalidSwizzle.vert */, + B398148829239F3A00A82429 /* spv.subgroup.tesc */, + B398148929239F3A00A82429 /* spv.1.4.LoopControl.frag */, + B398148A29239F3A00A82429 /* mains.frag */, + B398148B29239F3A00A82429 /* hlsl.getdimensions.dx10.vert */, + B398148C29239F3A00A82429 /* spv.ssboAlias.frag */, + B398148D29239F3A00A82429 /* spv.ext.AnyHitShader.rahit */, + B398148E29239F3A00A82429 /* recurse1.vert */, + B398148F29239F3A00A82429 /* remap.hlsl.templatetypes.everything.frag */, + B398149029239F3A00A82429 /* hlsl.identifier.sample.frag */, + B398149129239F3A00A82429 /* bump */, + B398149229239F3A00A82429 /* hlsl.init2.frag */, + B398149329239F3A00A82429 /* spv.subgroupExtendedTypesPartitioned.comp */, + B398149429239F3A00A82429 /* spv.multiStructFuncall.frag */, + B398149529239F3A00A82429 /* spv.8bitstorage_Error-uint.frag */, + B398149629239F3A00A82429 /* spv.subgroupExtendedTypesShuffleRelativeNeg.comp */, + B398149729239F3A00A82429 /* baseResults */, + B39818B029239F3E00A82429 /* spv.1.4.OpEntryPoint.frag */, + B39818B129239F3E00A82429 /* hlsl.promote.binary.frag */, + B39818B229239F3E00A82429 /* hlsl.constantbuffer.frag */, + B39818B329239F3E00A82429 /* hlsl.attributeGlobalBuffer.frag */, + B39818B429239F3E00A82429 /* glsl.450.subgroupQuad.comp */, + B39818B529239F3E00A82429 /* 450.vert */, + B39818B629239F3E00A82429 /* 320.tesc */, + B39818B729239F3E00A82429 /* nonVulkan.frag */, + B39818B829239F3E00A82429 /* spv.GeometryShaderPassthrough.geom */, + B39818B929239F3E00A82429 /* hlsl.intrinsics.promote.frag */, + B39818BA29239F3E00A82429 /* hlsl.structbuffer.fn.frag */, + B39818BB29239F3E00A82429 /* spv.pushConstant.vert */, + B39818BC29239F3E00A82429 /* hlsl.pp.line3.frag */, + B39818BD29239F3E00A82429 /* spv.subgroup.frag */, + B39818BE29239F3E00A82429 /* hlsl.hull.ctrlpt-1.tesc */, + B39818BF29239F3E00A82429 /* spv.smBuiltins.vert */, + B39818C029239F3E00A82429 /* remap.uniformarray.none.frag */, + B39818C129239F3E00A82429 /* spv.16bitxfb.vert */, + B39818C229239F3E00A82429 /* hlsl.samplecmp.negative.frag */, + B39818C329239F3E00A82429 /* variableArrayIndex.frag */, + B39818C429239F3E00A82429 /* spv.discard-dce.frag */, + B39818C529239F3E00A82429 /* spv.ext.RayCallable.rcall */, + B39818C629239F3E00A82429 /* spv.bufferhandle15.frag */, + B39818C729239F3E00A82429 /* spv.bufferhandle_Error.frag */, + B39818C829239F3E00A82429 /* hlsl.structbuffer.coherent.frag */, + B39818C929239F3E00A82429 /* hlsl.clipdistance-4.frag */, + B39818CA29239F3E00A82429 /* glslangValidator */, + B39818CB29239F3E00A82429 /* glsl.450.subgroup.vert */, + B39818CC29239F3E00A82429 /* hlsl.format.rwtexture.frag */, + B39818CD29239F3E00A82429 /* remap.similar_1a.everything.frag */, + B39818CE29239F3E00A82429 /* hlsl.hull.1.tesc */, + B39818CF29239F3E00A82429 /* numeral.frag */, + B39818D029239F3E00A82429 /* samplerlessTextureFunctions.frag */, + B39818D129239F3E00A82429 /* spv.accessChain.frag */, + B39818D229239F3E00A82429 /* spv.subgroup.tese */, + B39818D329239F3E00A82429 /* hlsl.includeNegative.vert */, + B39818D429239F3E00A82429 /* spv.always-discard2.frag */, + B39818D529239F3E00A82429 /* spv.extPostDepthCoverage.frag */, + B39818D629239F3E00A82429 /* spv.meshShaderRedeclBuiltins.mesh */, + B39818D729239F3E00A82429 /* discard-dce.frag */, + B39818D829239F3E00A82429 /* 300BuiltIns.frag */, + B39818D929239F3E00A82429 /* 140.frag */, + B39818DA29239F3E00A82429 /* spv.extPostDepthCoverage_Error.frag */, + B39818DB29239F3E00A82429 /* hlsl.sample.array.dx10.frag */, + B39818DC29239F3E00A82429 /* spv.float32.frag */, + B39818DD29239F3E00A82429 /* spv.meshShaderSharedMem.mesh */, + B39818DE29239F3E00A82429 /* spv.430.vert */, + B39818DF29239F3E00A82429 /* web.testlist */, + B39818E029239F3E00A82429 /* glsl.es320.subgroupVote.comp */, + B39818E129239F3E00A82429 /* spv.RayGenShader_Errors.rgen */, + B39818E229239F3E00A82429 /* reflection.linked.frag */, + B39818E329239F3E00A82429 /* spv.memoryQualifier.frag */, + B39818E429239F3E00A82429 /* spv.nonuniform3.frag */, + B39818E529239F3E00A82429 /* spv.functionCall.frag */, + B39818E629239F3E00A82429 /* hlsl.clipdistance-1.vert */, + B39818E729239F3E00A82429 /* glsl.es320.subgroupClusteredNeg.comp */, + B39818E829239F3E00A82429 /* implicitInnerAtomicUint.frag */, + B39818E929239F3E00A82429 /* link.multiAnonBlocksInvalid.0.1.vert */, + B39818EA29239F3E00A82429 /* hlsl.domain.1.tese */, + B39818EB29239F3E00A82429 /* hlsl.if.frag */, + B39818EC29239F3E00A82429 /* spv.switch.frag */, + B39818ED29239F3E00A82429 /* link.multiAnonBlocksValid.0.1.vert */, + B39818EE29239F3E00A82429 /* dataOutIndirect.frag */, + B39818EF29239F3E00A82429 /* hlsl.array.implicit-size.frag */, + B39818F029239F3E00A82429 /* noMain.vert */, + B39818F129239F3E00A82429 /* hlsl.samplegrad.basic.dx10.vert */, + B39818F229239F3E00A82429 /* spv.deepRvalue.frag */, + B39818F329239F3E00A82429 /* 100scope.vert */, + B39818F429239F3E00A82429 /* spv.float16convertonlystorage.comp */, + B39818F529239F3E00A82429 /* hlsl.mip.operator.frag */, + B39818F629239F3E00A82429 /* reflection.frag */, + B39818F729239F3E00A82429 /* preprocessor.success_if_parse_would_fail.vert */, + B39818F829239F3E00A82429 /* spv.ext.RayGenShader_Errors.rgen */, + B39818F929239F3E00A82429 /* cppBad4.vert */, + B39818FA29239F3E00A82429 /* max_vertices_0.geom */, + B39818FB29239F3E00A82429 /* hlsl.scalarCast.vert */, + B39818FC29239F3E00A82429 /* hlsl.layoutOverride.vert */, + B39818FD29239F3E00A82429 /* spv.450.noRedecl.tesc */, + B39818FE29239F3E00A82429 /* hlsl.structarray.flatten.frag */, + B39818FF29239F3E00A82429 /* 420.comp */, + B398190029239F3E00A82429 /* cppIndent.vert */, + B398190129239F3E00A82429 /* spv.scalarlayoutfloat16.frag */, + B398190229239F3E00A82429 /* preprocessor.eof_missing.vert */, + B398190329239F3E00A82429 /* spv.460.comp */, + B398190429239F3E00A82429 /* spv.shortCircuit.frag */, + B398190529239F3E00A82429 /* hlsl.clipdistance-8.frag */, + B398190629239F3E00A82429 /* spv.branch-return.vert */, + B398190729239F3E00A82429 /* hlsl.aliasOpaque.frag */, + B398190829239F3E00A82429 /* spv.computeShaderDerivatives.comp */, + B398190929239F3E00A82429 /* 300.frag */, + B398190A29239F3E00A82429 /* 320.tese */, + B398190B29239F3E00A82429 /* spv.int8.frag */, + B398190C29239F3E00A82429 /* preprocessor.line.vert */, + B398190D29239F3E00A82429 /* hlsl.numthreads.comp */, + ); + path = Test; + sourceTree = ""; + }; + B39810BB29239F3700A82429 /* inc1 */ = { + isa = PBXGroup; + children = ( + B39810BC29239F3800A82429 /* badInc.h */, + B39810BD29239F3800A82429 /* bar.h */, + B39810BE29239F3800A82429 /* path1 */, + B39810C229239F3800A82429 /* foo.h */, + B39810C329239F3800A82429 /* path2 */, + ); + path = inc1; + sourceTree = ""; + }; + B39810BE29239F3800A82429 /* path1 */ = { + isa = PBXGroup; + children = ( + B39810BF29239F3800A82429 /* notHere.h */, + B39810C029239F3800A82429 /* bar.h */, + B39810C129239F3800A82429 /* local.h */, + ); + path = path1; + sourceTree = ""; + }; + B39810C329239F3800A82429 /* path2 */ = { + isa = PBXGroup; + children = ( + B39810C429239F3800A82429 /* notHere.h */, + B39810C529239F3800A82429 /* bar.h */, + B39810C629239F3800A82429 /* remote.h */, + ); + path = path2; + sourceTree = ""; + }; + B39812FA29239F3900A82429 /* inc2 */ = { + isa = PBXGroup; + children = ( + B39812FB29239F3900A82429 /* bar.h */, + B39812FC29239F3900A82429 /* foo.h */, + ); + path = inc2; + sourceTree = ""; + }; + B398147129239F3A00A82429 /* baseLegalResults */ = { + isa = PBXGroup; + children = ( + B398147229239F3A00A82429 /* hlsl.flattenSubset2.frag.out */, + B398147329239F3A00A82429 /* hlsl.flattenOpaque.frag.out */, + B398147429239F3A00A82429 /* hlsl.flattenOpaqueInit.vert.out */, + B398147529239F3A00A82429 /* hlsl.partialFlattenLocal.vert.out */, + B398147629239F3A00A82429 /* hlsl.aliasOpaque.frag.out */, + B398147729239F3A00A82429 /* hlsl.partialFlattenMixed.vert.out */, + B398147829239F3A00A82429 /* hlsl.flattenSubset.frag.out */, + B398147929239F3A00A82429 /* hlsl.flattenOpaqueInitMix.vert.out */, + ); + path = baseLegalResults; + sourceTree = ""; + }; + B398149729239F3A00A82429 /* baseResults */ = { + isa = PBXGroup; + children = ( + B398149829239F3A00A82429 /* hlsl.matNx1.frag.out */, + B398149929239F3A00A82429 /* hlsl.precise.frag.out */, + B398149A29239F3A00A82429 /* spv.ext.ClosestHitShader.rchit.out */, + B398149B29239F3A00A82429 /* precise.tesc.out */, + B398149C29239F3A00A82429 /* spv.400.tese.out */, + B398149D29239F3A00A82429 /* hlsl.inoutquals.frag.out */, + B398149E29239F3A00A82429 /* spv.storageBuffer.vert.out */, + B398149F29239F3A00A82429 /* spv.int16.amd.frag.out */, + B39814A029239F3A00A82429 /* spv.subgroupExtendedTypesClustered.comp.out */, + B39814A129239F3A00A82429 /* varyingArrayIndirect.frag.out */, + B39814A229239F3A00A82429 /* spv.bufferhandle17_Errors.frag.out */, + B39814A329239F3A00A82429 /* hlsl.logical.binary.vec.frag.out */, + B39814A429239F3A00A82429 /* spv.forwardFun.frag.out */, + B39814A529239F3A00A82429 /* spv.merge-unreachable.frag.out */, + B39814A629239F3A00A82429 /* spv.conversion.frag.out */, + B39814A729239F3A00A82429 /* remap.hlsl.sample.basic.everything.frag.out */, + B39814A829239F3A00A82429 /* preprocessor.success_if_parse_would_fail.vert.err */, + B39814A929239F3A00A82429 /* spv.16bitstorage_Error-uint.frag.out */, + B39814AA29239F3A00A82429 /* spv.460.vert.out */, + B39814AB29239F3A00A82429 /* spv.bufferhandle7.frag.out */, + B39814AC29239F3A00A82429 /* hlsl.load.offsetarray.dx10.frag.out */, + B39814AD29239F3A00A82429 /* spv.bufferhandle6.frag.out */, + B39814AE29239F3A00A82429 /* hlsl.doLoop.frag.out */, + B39814AF29239F3A00A82429 /* spv.1.3.8bitstorage-ubo.vert.out */, + B39814B029239F3A00A82429 /* spv.1.4.OpCopyLogicalBool.comp.out */, + B39814B129239F3A00A82429 /* hlsl.max.frag.out */, + B39814B229239F3A00A82429 /* rayQuery-allOps.frag.out */, + B39814B329239F3A00A82429 /* spv.computeShaderDerivatives2.comp.out */, + B39814B429239F3A00A82429 /* spv.ext.RayGenShader.rgen.out */, + B39814B529239F3A00A82429 /* preprocessor.cpp_style___FILE__.vert.out */, + B39814B629239F3A00A82429 /* hlsl.partialInit.frag.out */, + B39814B729239F3A00A82429 /* preprocessor.function_macro.vert.err */, + B39814B829239F3A00A82429 /* spv.subgroupShuffleRelative.comp.out */, + B39814B929239F3A00A82429 /* remap.specconst.comp.out */, + B39814BA29239F3A00A82429 /* hlsl.samplelevel.array.dx10.frag.out */, + B39814BB29239F3A00A82429 /* precision.frag.out */, + B39814BC29239F3A00A82429 /* 300.vert.out */, + B39814BD29239F3A00A82429 /* hlsl.intrinsics.lit.frag.out */, + B39814BE29239F3A00A82429 /* cppBad.vert.out */, + B39814BF29239F3A00A82429 /* hlsl.buffer.frag.out */, + B39814C029239F3A00A82429 /* preprocessor.pragma.vert.out */, + B39814C129239F3A00A82429 /* spv.meshShaderTaskMem.mesh.out */, + B39814C229239F3A00A82429 /* implicitInnerAtomicUint.frag.out */, + B39814C329239F3A00A82429 /* hlsl.params.default.negative.frag.out */, + B39814C429239F3A00A82429 /* hlsl.flattenSubset2.frag.out */, + B39814C529239F3A00A82429 /* 420.frag.out */, + B39814C629239F3A00A82429 /* spv.glsl.register.autoassign.frag.out */, + B39814C729239F3A00A82429 /* link.vk.matchingPC.0.0.frag.out */, + B39814C829239F3A00A82429 /* spv.310.bitcast.frag.out */, + B39814C929239F3A00A82429 /* spv.330.geom.out */, + B39814CA29239F3A00A82429 /* hlsl.load.basic.dx10.frag.out */, + B39814CB29239F3A00A82429 /* hlsl.clipdistance-1.vert.out */, + B39814CC29239F3A00A82429 /* preprocessor.cpp_style_line_directive.vert.out */, + B39814CD29239F3A00A82429 /* remap.switch.everything.frag.out */, + B39814CE29239F3A00A82429 /* spv.subpass.frag.out */, + B39814CF29239F3A00A82429 /* spv.glFragColor.frag.out */, + B39814D029239F3A00A82429 /* hlsl.rw.swizzle.frag.out */, + B39814D129239F3A00A82429 /* 450.geom.out */, + B39814D229239F3A00A82429 /* glspv.frag.out */, + B39814D329239F3A00A82429 /* hlsl.dashI.vert.out */, + B39814D429239F3A00A82429 /* hlsl.semantic.geom.out */, + B39814D529239F3A00A82429 /* spv.450.noRedecl.tesc.out */, + B39814D629239F3A00A82429 /* remap.similar_1b.none.frag.out */, + B39814D729239F3A00A82429 /* spv.noLocation.vert.out */, + B39814D829239F3A00A82429 /* spv.1.3.8bitstorage-ssbo.vert.out */, + B39814D929239F3A00A82429 /* spv.bufferhandle12.frag.out */, + B39814DA29239F3A00A82429 /* spv.bufferhandle13.frag.out */, + B39814DB29239F3A00A82429 /* spv.stereoViewRendering.tesc.out */, + B39814DC29239F3A00A82429 /* hlsl.-D-U.frag.out */, + B39814DD29239F3A00A82429 /* glsl.460.subgroup.rahit.out */, + B39814DE29239F3A00A82429 /* link.vk.differentPC.1.0.frag.out */, + B39814DF29239F3A00A82429 /* hlsl.init.frag.out */, + B39814E029239F3A00A82429 /* hlsl.samplecmp.array.dx10.frag.out */, + B39814E129239F3A00A82429 /* spv.sampleMaskOverrideCoverage.frag.out */, + B39814E229239F3A00A82429 /* spv.shiftOps.frag.out */, + B39814E329239F3A00A82429 /* hlsl.hull.ctrlpt-2.tesc.out */, + B39814E429239F3A00A82429 /* spv.set.vert.out */, + B39814E529239F3A00A82429 /* spv.image.load-formatted.frag.out */, + B39814E629239F3A00A82429 /* spv.atomicInt64.comp.out */, + B39814E729239F3A00A82429 /* 140.frag.out */, + B39814E829239F3A00A82429 /* hlsl.gs-hs-mix.tesc.out */, + B39814E929239F3A00A82429 /* spv.shortCircuit.frag.out */, + B39814EA29239F3A00A82429 /* spv.bufferhandle18.frag.out */, + B39814EB29239F3A00A82429 /* hlsl.gather.array.dx10.frag.out */, + B39814EC29239F3A00A82429 /* link1.frag.out */, + B39814ED29239F3A00A82429 /* versionsErrors.vert.out */, + B39814EE29239F3A00A82429 /* spv.stereoViewRendering.vert.out */, + B39814EF29239F3A00A82429 /* preprocessor.edge_cases.vert.err */, + B39814F029239F3A00A82429 /* hlsl.intrinsics.promote.down.frag.out */, + B39814F129239F3A00A82429 /* hlsl.singleArgIntPromo.vert.out */, + B39814F229239F3A00A82429 /* spv.branch-return.vert.out */, + B39814F329239F3A00A82429 /* types.frag.out */, + B39814F429239F3A00A82429 /* cppPassMacroName.frag.out */, + B39814F529239F3A00A82429 /* spv.subgroupExtendedTypesClusteredNeg.comp.out */, + B39814F629239F3A00A82429 /* test.conf */, + B39814F729239F3A00A82429 /* web.controlFlow.frag.out */, + B39814F829239F3A00A82429 /* hlsl.constructArray.vert.out */, + B39814F929239F3A00A82429 /* spv.nonuniform2.frag.out */, + B39814FA29239F3A00A82429 /* spv.nonuniform3.frag.out */, + B39814FB29239F3A00A82429 /* hlsl.structbuffer.append.fn.frag.out */, + B39814FC29239F3B00A82429 /* spv.specConstantComposite.vert.out */, + B39814FD29239F3B00A82429 /* hlsl.samplegrad.basic.dx10.frag.out */, + B39814FE29239F3B00A82429 /* spv.8bitstorage-ssbo.vert.out */, + B39814FF29239F3B00A82429 /* hlsl.targetStruct1.frag.out */, + B398150029239F3B00A82429 /* vulkan.vert.out */, + B398150129239F3B00A82429 /* spv.precise.tesc.out */, + B398150229239F3B00A82429 /* spv.430.frag.out */, + B398150329239F3B00A82429 /* hlsl.attributeGlobalBuffer.frag.out */, + B398150429239F3B00A82429 /* spv.subgroup.geom.out */, + B398150529239F3B00A82429 /* link.vk.multiBlocksValid.1.0.geom.out */, + B398150629239F3B00A82429 /* conversion.frag.out */, + B398150729239F3B00A82429 /* 320.geom.out */, + B398150829239F3B00A82429 /* spv.constructComposite.comp.out */, + B398150929239F3B00A82429 /* spv.400.tesc.out */, + B398150A29239F3B00A82429 /* spv.bitCast.frag.out */, + B398150B29239F3B00A82429 /* hlsl.attribute.expression.comp.out */, + B398150C29239F3B00A82429 /* spv.unit1.frag.out */, + B398150D29239F3B00A82429 /* spv.noBuiltInLoc.vert.out */, + B398150E29239F3B00A82429 /* glsl.es320.subgroupVote.comp.out */, + B398150F29239F3B00A82429 /* spv.register.subpass.frag.out */, + B398151029239F3B00A82429 /* hlsl.hull.3.tesc.out */, + B398151129239F3B00A82429 /* spv.accessChain.frag.out */, + B398151229239F3B00A82429 /* hlsl.hull.2.tesc.out */, + B398151329239F3B00A82429 /* web.separate.frag.out */, + B398151429239F3B00A82429 /* hlsl.samplebias.offsetarray.dx10.frag.out */, + B398151529239F3B00A82429 /* 440.frag.out */, + B398151629239F3B00A82429 /* hlsl.clipdistance-4.frag.out */, + B398151729239F3B00A82429 /* hlsl.matType.int.frag.out */, + B398151829239F3B00A82429 /* hlsl.conditional.frag.out */, + B398151929239F3B00A82429 /* hlsl.clipdistance-5.frag.out */, + B398151A29239F3B00A82429 /* hlsl.structIoFourWay.frag.out */, + B398151B29239F3B00A82429 /* swizzle.frag.out */, + B398151C29239F3B00A82429 /* hlsl.samplebias.array.dx10.frag.out */, + B398151D29239F3B00A82429 /* link.multiAnonBlocksValid.0.0.vert.out */, + B398151E29239F3B00A82429 /* spv.memoryScopeSemantics_Error.comp.out */, + B398151F29239F3B00A82429 /* hlsl.intrinsics.promote.outputs.frag.out */, + B398152029239F3B00A82429 /* preprocessor.line.frag.err */, + B398152129239F3B00A82429 /* spv.xfbOffsetOnBlockMembersAssignment.vert.out */, + B398152229239F3B00A82429 /* conditionalDiscard.frag.out */, + B398152329239F3B00A82429 /* spv.16bitstorage_Error.frag.out */, + B398152429239F3B00A82429 /* preprocessor.eof_missing.vert.out */, + B398152529239F3B00A82429 /* hlsl.shapeConvRet.frag.out */, + B398152629239F3B00A82429 /* preprocessor.bad_arg.vert.err */, + B398152729239F3B00A82429 /* vulkan.comp.out */, + B398152829239F3B00A82429 /* spv.texture.frag.out */, + B398152929239F3B00A82429 /* spv.ext.RayGenShaderArray.rgen.out */, + B398152A29239F3B00A82429 /* glsl.460.subgroup.rchit.out */, + B398152B29239F3B00A82429 /* hlsl.gather.offset.dx10.frag.out */, + B398152C29239F3B00A82429 /* spv.16bitxfb.vert.out */, + B398152D29239F3B00A82429 /* spv.310.comp.out */, + B398152E29239F3B00A82429 /* spv.1.3.coopmat.comp.out */, + B398152F29239F3B00A82429 /* spv.functionSemantics.frag.out */, + B398153029239F3B00A82429 /* spv.int16.frag.out */, + B398153129239F3B00A82429 /* preprocessor.errors.vert.out */, + B398153229239F3B00A82429 /* structAssignment.frag.out */, + B398153329239F3B00A82429 /* 300scope.vert.out */, + B398153429239F3B00A82429 /* 100samplerExternal.frag.out */, + B398153529239F3B00A82429 /* spv.shaderBallotAMD.comp.out */, + B398153629239F3B00A82429 /* hlsl.structbuffer.rwbyte.frag.out */, + B398153729239F3B00A82429 /* spv.AnyHitShader_Errors.rahit.out */, + B398153829239F3B00A82429 /* spv.arbPostDepthCoverage_Error.frag.out */, + B398153929239F3B00A82429 /* aggOps.frag.out */, + B398153A29239F3B00A82429 /* nonuniform.frag.out */, + B398153B29239F3B00A82429 /* hlsl.precedence2.frag.out */, + B398153C29239F3B00A82429 /* negativeArraySize.comp.out */, + B398153D29239F3B00A82429 /* spv.Operations.frag.out */, + B398153E29239F3B00A82429 /* hlsl.clipdistance-2.geom.out */, + B398153F29239F3B00A82429 /* remap.hlsl.sample.basic.none.frag.out */, + B398154029239F3B00A82429 /* spv.meshShaderPerViewUserDefined.mesh.out */, + B398154129239F3B00A82429 /* web.operations.frag.out */, + B398154229239F3B00A82429 /* hlsl.clipdistance-3.geom.out */, + B398154329239F3B00A82429 /* link.vk.multiBlocksValid.0.0.vert.out */, + B398154429239F3B00A82429 /* spv.130.frag.out */, + B398154529239F3B00A82429 /* spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out */, + B398154629239F3B00A82429 /* matrix.frag.out */, + B398154729239F3B00A82429 /* spv.coopmat.comp.out */, + B398154829239F3B00A82429 /* spv.xfbStrideJustOnce.vert.out */, + B398154929239F3B00A82429 /* hlsl.matrixSwizzle.vert.out */, + B398154A29239F3B00A82429 /* glsl.es320.subgroupClusteredNeg.comp.out */, + B398154B29239F3B00A82429 /* spv.1.4.LoopControl.frag.out */, + B398154C29239F3B00A82429 /* spv.matrix2.frag.out */, + B398154D29239F3B00A82429 /* hlsl.templatetypes.frag.out */, + B398154E29239F3B00A82429 /* spv.vulkan100.subgroupPartitioned.comp.out */, + B398154F29239F3B00A82429 /* remap.literal64.everything.spv.out */, + B398155029239F3B00A82429 /* spv.1.4.image.frag.out */, + B398155129239F3B00A82429 /* spv.300layout.vert.out */, + B398155229239F3B00A82429 /* hlsl.mip.operator.frag.out */, + B398155329239F3B00A82429 /* spv.earlyReturnDiscard.frag.out */, + B398155429239F3B00A82429 /* preprocessor.many.endif.vert.err */, + B398155529239F3B00A82429 /* hlsl.structbuffer.atomics.frag.out */, + B398155629239F3B00A82429 /* spv.420.geom.out */, + B398155729239F3B00A82429 /* spv.discard-dce.frag.out */, + B398155829239F3B00A82429 /* hlsl.samplegrad.offsetarray.dx10.frag.out */, + B398155929239F3B00A82429 /* spv.float64.frag.out */, + B398155A29239F3B00A82429 /* versionsClean.vert.out */, + B398155B29239F3B00A82429 /* rayQuery.rgen.out */, + B398155C29239F3B00A82429 /* 330.frag.out */, + B398155D29239F3B00A82429 /* hlsl.layout.frag.out */, + B398155E29239F3B00A82429 /* hlsl.hlslOffset.vert.out */, + B398155F29239F3B00A82429 /* forwardRef.frag.out */, + B398156029239F3B00A82429 /* glsl.es320.subgroup.frag.out */, + B398156129239F3B00A82429 /* spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out */, + B398156229239F3B00A82429 /* spv.extPostDepthCoverage_Error.frag.out */, + B398156329239F3B00A82429 /* spv.register.noautoassign.frag.out */, + B398156429239F3B00A82429 /* hlsl.matType.frag.out */, + B398156529239F3B00A82429 /* lineContinuation.vert.out */, + B398156629239F3B00A82429 /* glsl.es320.subgroupClustered.comp.out */, + B398156729239F3B00A82429 /* matrix2.frag.out */, + B398156829239F3B00A82429 /* preprocessor.defined.vert.err */, + B398156929239F3B00A82429 /* hlsl.comparison.vec.frag.out */, + B398156A29239F3B00A82429 /* spv.dataOutIndirect.vert.out */, + B398156B29239F3B00A82429 /* hlsl.reflection.binding.frag.out */, + B398156C29239F3B00A82429 /* spv.pp.line.frag.out */, + B398156D29239F3B00A82429 /* spv.nonuniform.frag.out */, + B398156E29239F3B00A82429 /* 410.tesc.out */, + B398156F29239F3B00A82429 /* Operations.frag.out */, + B398157029239F3B00A82429 /* spv.float16convertonlystorage.comp.out */, + B398157129239F3B00A82429 /* spv.for-notest.vert.out */, + B398157229239F3B00A82429 /* spv.fsi_Error.frag.out */, + B398157329239F3B00A82429 /* spv.multiviewPerViewAttributes.vert.out */, + B398157429239F3B00A82429 /* spv.8bitstorage_Error-int.frag.out */, + B398157529239F3B00A82429 /* hlsl.texture.subvec4.frag.out */, + B398157629239F3B00A82429 /* preprocessor.extensions.vert.err */, + B398157729239F3B00A82429 /* texture.frag.out */, + B398157829239F3B00A82429 /* hlsl.store.rwbyteaddressbuffer.type.comp.out */, + B398157929239F3B00A82429 /* spv.barrier.vert.out */, + B398157A29239F3B00A82429 /* hlsl.global-const-init.frag.out */, + B398157B29239F3B00A82429 /* spv.subgroupClustered.comp.out */, + B398157C29239F3B00A82429 /* spv.ext.AnyHitShader.rahit.out */, + B398157D29239F3B00A82429 /* 150.geom.out */, + B398157E29239F3B00A82429 /* sample.vert.out */, + B398157F29239F3B00A82429 /* remap.basic.everything.frag.out */, + B398158029239F3B00A82429 /* spv.multiView.frag.out */, + B398158129239F3B00A82429 /* hlsl.boolConv.vert.out */, + B398158229239F3B00A82429 /* spv.swizzle.frag.out */, + B398158329239F3B00A82429 /* spv.subgroupExtendedTypesArithmeticNeg.comp.out */, + B398158429239F3B00A82429 /* spv.460.comp.out */, + B398158529239F3B00A82429 /* hlsl.intrinsics.frag.out */, + B398158629239F3B00A82429 /* spv.memoryScopeSemantics.comp.out */, + B398158729239F3B00A82429 /* glspv.version.frag.out */, + B398158829239F3B00A82429 /* web.texture.frag.out */, + B398158929239F3B00A82429 /* structure.frag.out */, + B398158A29239F3B00A82429 /* spv.controlFlowAttributes.frag.out */, + B398158B29239F3B00A82429 /* spv.1.4.OpCopyLogical.comp.out */, + B398158C29239F3B00A82429 /* 120.frag.out */, + B398158D29239F3B00A82429 /* glsl.-D-U.frag.out */, + B398158E29239F3B00A82429 /* spv.precise.tese.out */, + B398158F29239F3B00A82429 /* spv.shaderBallot.comp.out */, + B398159029239F3B00A82429 /* remap.similar_1a.none.frag.out */, + B398159129239F3B00A82429 /* spv.multiviewPerViewAttributes.tesc.out */, + B398159229239F3B00A82429 /* hlsl.depthLess.frag.out */, + B398159329239F3B00A82429 /* hlsl.samplebias.offset.dx10.frag.out */, + B398159429239F3B00A82429 /* spv.textureGatherBiasLod.frag.out */, + B398159529239F3B00A82429 /* localAggregates.frag.out */, + B398159629239F3B00A82429 /* glsl.450.subgroup.geom.out */, + B398159729239F3B00A82429 /* hlsl.init2.frag.out */, + B398159829239F3B00A82429 /* invalidSwizzle.vert.out */, + B398159929239F3B00A82429 /* 410.vert.out */, + B398159A29239F3B00A82429 /* constantUnaryConversion.comp.out */, + B398159B29239F3B00A82429 /* spv.300layoutp.vert.out */, + B398159C29239F3B00A82429 /* spv.voidFunction.frag.out */, + B398159D29239F3B00A82429 /* hlsl.clipdistance-3.frag.out */, + B398159E29239F3B00A82429 /* hlsl.clipdistance-2.frag.out */, + B398159F29239F3B00A82429 /* preprocessor.defined.vert.out */, + B39815A029239F3B00A82429 /* constErrors.frag.out */, + B39815A129239F3B00A82429 /* spv.do-while-continue-break.vert.out */, + B39815A229239F3B00A82429 /* hlsl.void.frag.out */, + B39815A329239F3B00A82429 /* spv.fragmentDensity.vert.out */, + B39815A429239F3B00A82429 /* 300layout.vert.out */, + B39815A529239F3B00A82429 /* spv.separate.frag.out */, + B39815A629239F3B00A82429 /* 330comp.frag.out */, + B39815A729239F3B00A82429 /* 310.vert.out */, + B39815A829239F3B00A82429 /* spv.ext.AnyHitShader_Errors.rahit.out */, + B39815A929239F3B00A82429 /* web.builtins.vert.out */, + B39815AA29239F3B00A82429 /* hlsl.hull.4.tesc.out */, + B39815AB29239F3B00A82429 /* hlsl.hull.5.tesc.out */, + B39815AC29239F3B00A82429 /* hlsl.overload.frag.out */, + B39815AD29239F3B00A82429 /* spv.meshShaderPerViewBuiltins.mesh.out */, + B39815AE29239F3B00A82429 /* hlsl.samplebias.basic.dx10.frag.out */, + B39815AF29239F3B00A82429 /* hlsl.logicalConvert.frag.out */, + B39815B029239F3B00A82429 /* spv.140.frag.out */, + B39815B129239F3B00A82429 /* cppMerge.frag.out */, + B39815B229239F3B00A82429 /* hlsl.typeGraphCopy.vert.out */, + B39815B329239F3B00A82429 /* spv.subgroupShuffle.comp.out */, + B39815B429239F3B00A82429 /* spv.sparseTextureClamp.frag.out */, + B39815B529239F3B00A82429 /* spv.scalarlayoutfloat16.frag.out */, + B39815B629239F3B00A82429 /* glsl.es320.subgroupQuad.comp.out */, + B39815B729239F3B00A82429 /* hlsl.amend.frag.out */, + B39815B829239F3B00A82429 /* hlsl.coverage.frag.out */, + B39815B929239F3B00A82429 /* spv.forLoop.frag.out */, + B39815BA29239F3B00A82429 /* spv.layoutNested.vert.out */, + B39815BB29239F3B00A82429 /* hlsl.clipdistance-4.geom.out */, + B39815BC29239F3B00A82429 /* spv.loops.frag.out */, + B39815BD29239F3B00A82429 /* hlsl.emptystructreturn.vert.out */, + B39815BE29239F3B00A82429 /* hlsl.pp.vert.out */, + B39815BF29239F3B00A82429 /* 310runtimeArray.vert.out */, + B39815C029239F3B00A82429 /* spv.swizzleInversion.frag.out */, + B39815C129239F3B00A82429 /* hlsl.texture.struct.frag.out */, + B39815C229239F3B00A82429 /* rayQuery-no-cse.rgen.out */, + B39815C329239F3B00A82429 /* samplerlessTextureFunctions.frag.out */, + B39815C429239F3B00A82429 /* spv.register.autoassign.rangetest.frag.out */, + B39815C529239F3B00A82429 /* hlsl.scalarCast.vert.out */, + B39815C629239F3B00A82429 /* 310.tesc.out */, + B39815C729239F3B00A82429 /* glsl.entryPointRename.vert.bad.out */, + B39815C829239F3B00A82429 /* spv.aggOps.frag.out */, + B39815C929239F3B00A82429 /* spv.matrix.frag.out */, + B39815CA29239F3B00A82429 /* spv.xfbOffsetOnStructMembersAssignment.vert.out */, + B39815CB29239F3B00A82429 /* preprocessor.extensions.vert.out */, + B39815CC29239F3B00A82429 /* hlsl.basic.comp.out */, + B39815CD29239F3B00A82429 /* decls.frag.out */, + B39815CE29239F3B00A82429 /* hlsl.struct.split-1.vert.out */, + B39815CF29239F3B00A82429 /* glsl.es320.subgroupArithmetic.comp.out */, + B39815D029239F3B00A82429 /* preprocessor.eof_missing.vert.err */, + B39815D129239F3B00A82429 /* cppIntMinOverNegativeOne.frag.out */, + B39815D229239F3B00A82429 /* spv.double.comp.out */, + B39815D329239F3B00A82429 /* hlsl.load.rwbuffer.dx10.frag.out */, + B39815D429239F3B00A82429 /* preprocessor.line.frag.out */, + B39815D529239F3B00A82429 /* spv.structure.frag.out */, + B39815D629239F3B00A82429 /* 430AofA.frag.out */, + B39815D729239F3B00A82429 /* spv.interpOps.frag.out */, + B39815D829239F3B00A82429 /* hlsl.samplecmp.offset.dx10.frag.out */, + B39815D929239F3B00A82429 /* 460.vert.out */, + B39815DA29239F3B00A82429 /* glsl.entryPointRename2.vert.out */, + B39815DB29239F3B00A82429 /* hlsl.intrinsics.barriers.comp.out */, + B39815DC29239F3B00A82429 /* always-discard.frag.out */, + B39815DD29239F3B00A82429 /* hlsl.type.type.conversion.all.frag.out */, + B39815DE29239F3B00A82429 /* 400.tese.out */, + B39815DF29239F3B00A82429 /* hlsl.intrinsics.f1632.frag.out */, + B39815E029239F3B00A82429 /* preprocessor.bad_arg.vert.out */, + B39815E129239F3B00A82429 /* 150.frag.out */, + B39815E229239F3B00A82429 /* spv.dead-after-continue.vert.out */, + B39815E329239F3B00A82429 /* spv.IntersectShader.rint.out */, + B39815E429239F3B00A82429 /* spv.AnyHitShader.rahit.out */, + B39815E529239F3B00A82429 /* hlsl.int.dot.frag.out */, + B39815E629239F3B00A82429 /* hlsl.snorm.uav.comp.out */, + B39815E729239F3B00A82429 /* glsl.450.subgroup.frag.out */, + B39815E829239F3B00A82429 /* hlsl.struct.split.nested.geom.out */, + B39815E929239F3B00A82429 /* loopsArtificial.frag.out */, + B39815EA29239F3B00A82429 /* hlsl.wavequery.frag.out */, + B39815EB29239F3B00A82429 /* spv.shadingRate.frag.out */, + B39815EC29239F3B00A82429 /* forLoop.frag.out */, + B39815ED29239F3B00A82429 /* hlsl.clipdistance-9.frag.out */, + B39815EE29239F3B00A82429 /* hlsl.clipdistance-8.frag.out */, + B39815EF29239F3B00A82429 /* hlsl.sample.sub-vec4.dx10.frag.out */, + B39815F029239F3B00A82429 /* hlsl.staticFuncInit.frag.out */, + B39815F129239F3B00A82429 /* spv.float16convertonlyarith.comp.out */, + B39815F229239F3B00A82429 /* spv.multiStructFuncall.frag.out */, + B39815F329239F3B00A82429 /* spv.ext.IntersectShader_Errors.rint.out */, + B39815F429239F3B00A82429 /* spv.paramMemory.frag.out */, + B39815F529239F3B00A82429 /* spv.xfb3.vert.out */, + B39815F629239F3B00A82429 /* spv.xfb2.vert.out */, + B39815F729239F3B00A82429 /* always-discard2.frag.out */, + B39815F829239F3B00A82429 /* glsl.es320.subgroup.geom.out */, + B39815F929239F3B00A82429 /* hlsl.getdimensions.dx10.vert.out */, + B39815FA29239F3B00A82429 /* hlsl.gather.offsetarray.dx10.frag.out */, + B39815FB29239F3B00A82429 /* reflection.linked.options.out */, + B39815FC29239F3B00A82429 /* remap.basic.strip.frag.out */, + B39815FD29239F3B00A82429 /* spv.ext.IntersectShader.rint.out */, + B39815FE29239F3B00A82429 /* preprocessor.many.endif.vert.out */, + B39815FF29239F3B00A82429 /* 430scope.vert.out */, + B398160029239F3B00A82429 /* hlsl.localStructuredBuffer.comp.out */, + B398160129239F3B00A82429 /* spv.bufferhandle_Error.frag.out */, + B398160229239F3B00A82429 /* hlsl.matType.bool.frag.out */, + B398160329239F3B00A82429 /* spv.subgroupArithmetic.comp.out */, + B398160429239F3B00A82429 /* spv.ext.RayGenShader11.rgen.out */, + B398160529239F3B00A82429 /* preprocessor.errors.vert.err */, + B398160629239F3B00A82429 /* max_vertices_0.geom.out */, + B398160729239F3B00A82429 /* constFoldIntMin.frag.out */, + B398160829239F3B00A82429 /* spv.fragmentShaderBarycentric2.frag.out */, + B398160929239F3B00A82429 /* spv.MissShader.rmiss.out */, + B398160A29239F3B00A82429 /* spv.450.geom.out */, + B398160B29239F3B00A82429 /* 300BuiltIns.frag.out */, + B398160C29239F3B00A82429 /* hlsl.discard.frag.out */, + B398160D29239F3B00A82429 /* array.frag.out */, + B398160E29239F3B00A82429 /* hlsl.gathercmpRGBA.offset.dx10.frag.out */, + B398160F29239F3B00A82429 /* spv.do-simple.vert.out */, + B398161029239F3B00A82429 /* hlsl.intrinsics.f3216.frag.out */, + B398161129239F3B00A82429 /* spv.functionCall.frag.out */, + B398161229239F3B00A82429 /* hlsl.flattenOpaque.frag.out */, + B398161329239F3B00A82429 /* hlsl.mip.negative.frag.out */, + B398161429239F3B00A82429 /* spv.dead-after-discard.frag.out */, + B398161529239F3B00A82429 /* varyingArray.frag.out */, + B398161629239F3B00A82429 /* 100Limits.vert.out */, + B398161729239F3B00A82429 /* 300link2.frag.out */, + B398161829239F3B00A82429 /* 300link3.frag.out */, + B398161929239F3B00A82429 /* hlsl.sin.frag.out */, + B398161A29239F3B00A82429 /* hlsl.samplecmp.dualmode.frag.out */, + B398161B29239F3B00A82429 /* hlsl.samplecmplevelzero.offset.dx10.frag.out */, + B398161C29239F3B00A82429 /* spv.fsi.frag.out */, + B398161D29239F3B00A82429 /* 420.geom.out */, + B398161E29239F3B00A82429 /* hlsl.wavereduction.comp.out */, + B398161F29239F3B00A82429 /* spv.smBuiltins.frag.out */, + B398162029239F3B00A82429 /* spv.pushConstant.vert.out */, + B398162129239F3B00A82429 /* specExamples.frag.out */, + B398162229239F3B00A82429 /* hlsl.float1.frag.out */, + B398162329239F3B00A82429 /* hlsl.entry.rename.frag.out */, + B398162429239F3B00A82429 /* comment.frag.out */, + B398162529239F3B00A82429 /* hlsl.domain.2.tese.out */, + B398162629239F3B00A82429 /* hlsl.domain.3.tese.out */, + B398162729239F3B00A82429 /* hlsl.mip.negative2.frag.out */, + B398162829239F3B00A82429 /* badMacroArgs.frag.out */, + B398162929239F3B00A82429 /* web.array.frag.out */, + B398162A29239F3B00A82429 /* hlsl.getdimensions.rw.dx10.frag.out */, + B398162B29239F3B00A82429 /* spv.register.autoassign-2.frag.out */, + B398162C29239F3B00A82429 /* 310AofA.vert.out */, + B398162D29239F3B00A82429 /* 435.vert.out */, + B398162E29239F3B00A82429 /* hlsl.sample.dx9.vert.out */, + B398162F29239F3B00A82429 /* hlsl.intrinsics.negative.frag.out */, + B398163029239F3B00A82429 /* hlsl.this.frag.out */, + B398163129239F3B00A82429 /* hlsl.samplelevel.basic.dx10.frag.out */, + B398163229239F3B00A82429 /* 450.frag.out */, + B398163329239F3B00A82429 /* spv.bufferhandle1.frag.out */, + B398163429239F3B00A82429 /* spv.ssbo.autoassign.frag.out */, + B398163529239F3B00A82429 /* spv.IntersectShader_Errors.rint.out */, + B398163629239F3B00A82429 /* spv.ext.RayCallable.rcall.out */, + B398163729239F3B00A82429 /* hlsl.clipdistance-6.vert.out */, + B398163829239F3B00A82429 /* spv.meshShaderRedeclPerViewBuiltins.mesh.out */, + B398163929239F3B00A82429 /* spv.subgroupPartitioned.comp.out */, + B398163A29239F3B00A82429 /* hlsl.clipdistance-7.vert.out */, + B398163B29239F3B00A82429 /* glsl.460.subgroup.task.out */, + B398163C29239F3B00A82429 /* newTexture.frag.out */, + B398163D29239F3B00A82429 /* depthOut.frag.out */, + B398163E29239F3B00A82429 /* hlsl.load.offset.dx10.frag.out */, + B398163F29239F3B00A82429 /* hlsl.y-negate-2.vert.out */, + B398164029239F3B00A82429 /* hlsl.y-negate-3.vert.out */, + B398164129239F3B00A82429 /* spv.explicittypes.frag.out */, + B398164229239F3B00A82429 /* glsl.450.subgroupClustered.comp.out */, + B398164329239F3B00A82429 /* spv.precision.frag.out */, + B398164429239F3B00A82429 /* hlsl.gatherRGBA.offset.dx10.frag.out */, + B398164529239F3B00A82429 /* hlsl.load.array.dx10.frag.out */, + B398164629239F3B00A82429 /* dataOutIndirect.frag.out */, + B398164729239F3B00A82429 /* 310.tese.out */, + B398164829239F3B00A82429 /* hlsl.imagefetch-subvec4.comp.out */, + B398164929239F3B00A82429 /* glsl.450.subgroupShuffle.comp.out */, + B398164A29239F3B00A82429 /* 300samplerExternal.frag.out */, + B398164B29239F3B00A82429 /* spv.150.geom.out */, + B398164C29239F3B00A82429 /* link1.vk.frag.out */, + B398164D29239F3B00A82429 /* hlsl.flattenOpaqueInit.vert.out */, + B398164E29239F3B00A82429 /* spv.conditionalDemote.frag.out */, + B398164F29239F3B00A82429 /* spv.specTexture.frag.out */, + B398165029239F3B00A82429 /* hlsl.struct.split.trivial.geom.out */, + B398165129239F3B00A82429 /* spv.bufferhandle15.frag.out */, + B398165229239F3B00A82429 /* hlsl.structbuffer.fn.frag.out */, + B398165329239F3B00A82429 /* spv.bufferhandle14.frag.out */, + B398165429239F3B00A82429 /* spv.subgroupExtendedTypesBasic.comp.out */, + B398165529239F3B00A82429 /* reflection.frag.out */, + B398165629239F3B00A82429 /* spv.ext.ClosestHitShader_Errors.rchit.out */, + B398165729239F3B00A82429 /* nonVulkan.frag.out */, + B398165829239F3B00A82429 /* hlsl.samplelevel.offsetarray.dx10.frag.out */, + B398165929239F3B00A82429 /* hlsl.namespace.frag.out */, + B398165A29239F3B00A82429 /* preprocessor.edge_cases.vert.out */, + B398165B29239F3B00A82429 /* numeral.frag.out */, + B398165C29239F3B00A82429 /* spv.specConstArrayCheck.vert.out */, + B398165D29239F3B00A82429 /* preprocessor.cpp_style___FILE__.vert.err */, + B398165E29239F3B00A82429 /* web.comp.out */, + B398165F29239F3B00A82429 /* preprocessor.function_macro.vert.out */, + B398166029239F3B00A82429 /* hlsl.if.frag.out */, + B398166129239F3B00A82429 /* hlsl.target.frag.out */, + B398166229239F3B00A82429 /* hlsl.promote.binary.frag.out */, + B398166329239F3B00A82429 /* 400.tesc.out */, + B398166429239F3B00A82429 /* spv.uint.frag.out */, + B398166529239F3B00A82429 /* spv.queryL.frag.out */, + B398166629239F3B00A82429 /* test.frag.out */, + B398166729239F3B00A82429 /* spv.int32.frag.out */, + B398166829239F3B00A82429 /* preprocessor.pragma.vert.err */, + B398166929239F3B00A82429 /* hlsl.samplecmp.basic.dx10.frag.out */, + B398166A29239F3B00A82429 /* maxClipDistances.vert.out */, + B398166B29239F3B00A82429 /* spv.coopmat_Error.comp.out */, + B398166C29239F3B00A82429 /* hlsl.samplecmp.negative.frag.out */, + B398166D29239F3B00A82429 /* hlsl.numthreads.comp.out */, + B398166E29239F3B00A82429 /* hlsl.rw.atomics.frag.out */, + B398166F29239F3B00A82429 /* cppRelaxSkipTokensErrors.vert.out */, + B398167029239F3B00A82429 /* spv.subgroup.frag.out */, + B398167129239F3B00A82429 /* spv.16bitstorage_Error-int.frag.out */, + B398167229239F3B00A82429 /* spv.newTexture.frag.out */, + B398167329239F3B00A82429 /* 320.frag.out */, + B398167429239F3B00A82429 /* spv.debugPrintf.frag.out */, + B398167529239F3C00A82429 /* include.vert.out */, + B398167629239F3C00A82429 /* discard-dce.frag.out */, + B398167729239F3C00A82429 /* hlsl.matpack-1.frag.out */, + B398167829239F3C00A82429 /* glsl.es320.subgroupShuffleRelative.comp.out */, + B398167929239F3C00A82429 /* spv.subgroupClusteredNeg.comp.out */, + B398167A29239F3C00A82429 /* earlyReturnDiscard.frag.out */, + B398167B29239F3C00A82429 /* preprocessor.success_if_parse_would_fail.vert.out */, + B398167C29239F3C00A82429 /* spv.offsets.frag.out */, + B398167D29239F3C00A82429 /* remap.if.none.frag.out */, + B398167E29239F3C00A82429 /* compoundsuffix.frag.hlsl */, + B398167F29239F3C00A82429 /* spv.viewportArray2.vert.out */, + B398168029239F3C00A82429 /* hlsl.mintypes.frag.out */, + B398168129239F3C00A82429 /* hlsl.intrinsic.frexp.vert.out */, + B398168229239F3C00A82429 /* reflection.options.vert.out */, + B398168329239F3C00A82429 /* hlsl.explicitDescriptorSet.frag.out */, + B398168429239F3C00A82429 /* hlsl.structbuffer.rw.frag.out */, + B398168529239F3C00A82429 /* link.multiBlocksValid.1.0.vert.out */, + B398168629239F3C00A82429 /* hlsl.load.buffer.dx10.frag.out */, + B398168729239F3C00A82429 /* spv.computeShaderDerivatives.comp.out */, + B398168829239F3C00A82429 /* 130.frag.out */, + B398168929239F3C00A82429 /* hlsl.gather.basic.dx10.frag.out */, + B398168A29239F3C00A82429 /* spv.shaderDrawParams.vert.out */, + B398168B29239F3C00A82429 /* hlsl.logical.binary.frag.out */, + B398168C29239F3C00A82429 /* 310.comp.out */, + B398168D29239F3C00A82429 /* 400.vert.out */, + B398168E29239F3C00A82429 /* hlsl.rw.scalar.bracket.frag.out */, + B398168F29239F3C00A82429 /* hlsl.matpack-pragma.frag.out */, + B398169029239F3C00A82429 /* spv.conditionalDiscard.frag.out */, + B398169129239F3C00A82429 /* spv.RayConstants.rgen.out */, + B398169229239F3C00A82429 /* hlsl.structStructName.frag.out */, + B398169329239F3C00A82429 /* uniformArray.frag.out */, + B398169429239F3C00A82429 /* hlsl.PointSize.vert.out */, + B398169529239F3C00A82429 /* hlsl.logical.unary.frag.out */, + B398169629239F3C00A82429 /* hlsl.samplegrad.array.dx10.frag.out */, + B398169729239F3C00A82429 /* overlongLiteral.frag.out */, + B398169829239F3C00A82429 /* atomic_uint.frag.out */, + B398169929239F3C00A82429 /* spv.test.vert.out */, + B398169A29239F3C00A82429 /* spv.nonuniform5.frag.out */, + B398169B29239F3C00A82429 /* hlsl.struct.split.assign.frag.out */, + B398169C29239F3C00A82429 /* spv.bufferhandle19_Errors.frag.out */, + B398169D29239F3C00A82429 /* spv.nonuniform4.frag.out */, + B398169E29239F3C00A82429 /* spv.viewportArray2.tesc.out */, + B398169F29239F3C00A82429 /* hlsl.flatten.return.frag.out */, + B39816A029239F3C00A82429 /* spv.demoteDisabled.frag.out */, + B39816A129239F3C00A82429 /* hlsl.earlydepthstencil.frag.out */, + B39816A229239F3C00A82429 /* preprocessor.cpp_style_line_directive.vert.err */, + B39816A329239F3C00A82429 /* remap.basic.dcevartype.frag.out */, + B39816A429239F3C00A82429 /* hlsl.deadFunctionMissingBody.vert.out */, + B39816A529239F3C00A82429 /* hlsl.cbuffer-identifier.vert.out */, + B39816A629239F3C00A82429 /* spv.subgroupExtendedTypesBallot.comp.out */, + B39816A729239F3C00A82429 /* hlsl.tristream-append.geom.out */, + B39816A829239F3C00A82429 /* hlsl.precedence.frag.out */, + B39816A929239F3C00A82429 /* 300operations.frag.out */, + B39816AA29239F3C00A82429 /* spv.fragmentDensity-es.frag.out */, + B39816AB29239F3C00A82429 /* 400.frag.out */, + B39816AC29239F3C00A82429 /* spv.register.autoassign.frag.out */, + B39816AD29239F3C00A82429 /* spv.varyingArray.frag.out */, + B39816AE29239F3C00A82429 /* reflection.options.frag.out */, + B39816AF29239F3C00A82429 /* hlsl.identifier.sample.frag.out */, + B39816B029239F3C00A82429 /* spv.meshShaderSharedMem.mesh.out */, + B39816B129239F3C00A82429 /* link.vk.pcNamingInvalid.0.0.vert.out */, + B39816B229239F3C00A82429 /* hlsl.isfinite.frag.out */, + B39816B329239F3C00A82429 /* findFunction.frag.out */, + B39816B429239F3C00A82429 /* 130.vert.out */, + B39816B529239F3C00A82429 /* hlsl.gather.basic.dx10.vert.out */, + B39816B629239F3C00A82429 /* glsl.460.subgroup.rmiss.out */, + B39816B729239F3C00A82429 /* hlsl.opaque-type-bug.frag.out */, + B39816B829239F3C00A82429 /* spv.shaderGroupVote.comp.out */, + B39816B929239F3C00A82429 /* hlsl.samplecmp.negative2.frag.out */, + B39816BA29239F3C00A82429 /* spv.looseUniformNoLoc.vert.out */, + B39816BB29239F3C00A82429 /* hlsl.intrinsics.promote.frag.out */, + B39816BC29239F3C00A82429 /* hlsl.promote.atomic.frag.out */, + B39816BD29239F3C00A82429 /* spv.flowControl.frag.out */, + B39816BE29239F3C00A82429 /* spv.bufferhandleUvec2.frag.out */, + B39816BF29239F3C00A82429 /* 320.tesc.out */, + B39816C029239F3C00A82429 /* glsl.450.subgroup.tese.out */, + B39816C129239F3C00A82429 /* hlsl.include.vert.out */, + B39816C229239F3C00A82429 /* remap.invalid-spirv-2.out */, + B39816C329239F3C00A82429 /* uint.frag.out */, + B39816C429239F3C00A82429 /* hlsl.load.buffer.float.dx10.frag.out */, + B39816C529239F3C00A82429 /* spv.test.frag.out */, + B39816C629239F3C00A82429 /* spv.deepRvalue.frag.out */, + B39816C729239F3C00A82429 /* spv.subgroup.tesc.out */, + B39816C829239F3C00A82429 /* spv.memoryQualifier.frag.out */, + B39816C929239F3C00A82429 /* link.multiAnonBlocksInvalid.0.0.vert.out */, + B39816CA29239F3C00A82429 /* spv.atomic.comp.out */, + B39816CB29239F3C00A82429 /* glsl.entryPointRename.vert.out */, + B39816CC29239F3C00A82429 /* hlsl.staticMemberFunction.frag.out */, + B39816CD29239F3C00A82429 /* hlsl.texturebuffer.frag.out */, + B39816CE29239F3C00A82429 /* spv.subgroupVote.comp.out */, + B39816CF29239F3C00A82429 /* spv.xfb.vert.out */, + B39816D029239F3C00A82429 /* hlsl.pp.line4.frag.out */, + B39816D129239F3C00A82429 /* spv.ext.RayCallable_Errors.rcall.out */, + B39816D229239F3C00A82429 /* hlsl.structbuffer.byte.frag.out */, + B39816D329239F3C00A82429 /* hlsl.matrixindex.frag.out */, + B39816D429239F3C00A82429 /* spv.intOps.vert.out */, + B39816D529239F3C00A82429 /* hlsl.reflection.vert.out */, + B39816D629239F3C00A82429 /* cppNest.vert.out */, + B39816D729239F3C00A82429 /* hlsl.shift.per-set.frag.out */, + B39816D829239F3C00A82429 /* spv.subgroupExtendedTypesQuad.comp.out */, + B39816D929239F3C00A82429 /* glsl.450.subgroupVote.comp.out */, + B39816DA29239F3C00A82429 /* spv.samplerlessTextureFunctions.frag.out */, + B39816DB29239F3C00A82429 /* spv.image.frag.out */, + B39816DC29239F3C00A82429 /* hlsl.intrinsic.frexp.frag.out */, + B39816DD29239F3C00A82429 /* hlsl.typedef.frag.out */, + B39816DE29239F3C00A82429 /* 430.comp.out */, + B39816DF29239F3C00A82429 /* spv.RayGenShaderArray.rgen.out */, + B39816E029239F3C00A82429 /* whileLoop.frag.out */, + B39816E129239F3C00A82429 /* spv.subgroup.vert.out */, + B39816E229239F3C00A82429 /* spv.dead-after-switch-break.vert.out */, + B39816E329239F3C00A82429 /* spv.8bitstorage-uint.frag.out */, + B39816E429239F3C00A82429 /* 320.vert.out */, + B39816E529239F3C00A82429 /* hlsl.scalar2matrix.frag.out */, + B39816E629239F3C00A82429 /* simpleFunctionCall.frag.out */, + B39816E729239F3C00A82429 /* 100LimitsConf.vert.out */, + B39816E829239F3C00A82429 /* spv.specConstantOperations.vert.out */, + B39816E929239F3C00A82429 /* hlsl.scope.frag.out */, + B39816EA29239F3C00A82429 /* hlsl.hull.1.tesc.out */, + B39816EB29239F3C00A82429 /* hlsl.attribute.frag.out */, + B39816EC29239F3C00A82429 /* noMain.vert.out */, + B39816ED29239F3C00A82429 /* hlsl.wavevote.comp.out */, + B39816EE29239F3C00A82429 /* spv.16bitstorage-int.frag.out */, + B39816EF29239F3C00A82429 /* link.vk.pcNamingValid.0.0.vert.out */, + B39816F029239F3C00A82429 /* glsl.es320.subgroupBallotNeg.comp.out */, + B39816F129239F3C00A82429 /* hlsl.calculatelodunclamped.dx10.frag.out */, + B39816F229239F3C00A82429 /* spv.length.frag.out */, + B39816F329239F3C00A82429 /* hlsl.clipdistance-7.frag.out */, + B39816F429239F3C00A82429 /* switch.frag.out */, + B39816F529239F3C00A82429 /* hlsl.clipdistance-6.frag.out */, + B39816F629239F3C00A82429 /* hlsl.function.frag.out */, + B39816F729239F3C00A82429 /* spv.debugPrintf_Error.frag.out */, + B39816F829239F3C00A82429 /* spv.intcoopmat.comp.out */, + B39816F929239F3C00A82429 /* spv.functionNestedOpaque.vert.out */, + B39816FA29239F3C00A82429 /* reflection.vert.out */, + B39816FB29239F3C00A82429 /* 450.tesc.out */, + B39816FC29239F3C00A82429 /* spv.rw.autoassign.frag.out */, + B39816FD29239F3C00A82429 /* spv.depthOut.frag.out */, + B39816FE29239F3C00A82429 /* spv.privateVariableTypes.frag.out */, + B39816FF29239F3C00A82429 /* spv.8bitstorage-ubo.vert.out */, + B398170029239F3C00A82429 /* hlsl.wavequery.comp.out */, + B398170129239F3C00A82429 /* remap.invalid-spirv-1.out */, + B398170229239F3C00A82429 /* spv.8bitstorage-int.frag.out */, + B398170329239F3C00A82429 /* glsl.es320.subgroupBallot.comp.out */, + B398170429239F3C00A82429 /* hlsl.promote.vec1.frag.out */, + B398170529239F3C00A82429 /* spv.for-continue-break.vert.out */, + B398170629239F3C00A82429 /* spv.while-continue-break.vert.out */, + B398170729239F3C00A82429 /* specExamples.vert.out */, + B398170829239F3C00A82429 /* spv.smBuiltins.vert.out */, + B398170929239F3C00A82429 /* hlsl.clipdistance-1.geom.out */, + B398170A29239F3C00A82429 /* spv.localAggregates.frag.out */, + B398170B29239F3C00A82429 /* cppBad4.vert.out */, + B398170C29239F3C00A82429 /* deepRvalue.frag.out */, + B398170D29239F3C00A82429 /* spv.subgroupBallotNeg.comp.out */, + B398170E29239F3C00A82429 /* cppBad5.vert.out */, + B398170F29239F3C00A82429 /* 450.vert.out */, + B398171029239F3C00A82429 /* hlsl.samplelevel.basic.dx10.vert.out */, + B398171129239F3C00A82429 /* hlsl.semantic.vert.out */, + B398171229239F3C00A82429 /* hlsl.intrinsics.negative.vert.out */, + B398171329239F3C00A82429 /* glsl.450.subgroupBallot.comp.out */, + B398171429239F3C00A82429 /* hlsl.partialFlattenLocal.vert.out */, + B398171529239F3C00A82429 /* spv.RayCallable_Errors.rcall.out */, + B398171629239F3C00A82429 /* hlsl.samplegrad.offset.dx10.frag.out */, + B398171729239F3C00A82429 /* glsl.es320.subgroupShuffle.comp.out */, + B398171829239F3C00A82429 /* spv.uniformArray.frag.out */, + B398171929239F3C00A82429 /* 310.inheritMemory.frag.out */, + B398171A29239F3C00A82429 /* hlsl.sample.dx9.frag.out */, + B398171B29239F3C00A82429 /* spv.dead-after-return.vert.out */, + B398171C29239F3C00A82429 /* 150.tesc.out */, + B398171D29239F3C00A82429 /* nonSquare.vert.out */, + B398171E29239F3C00A82429 /* preprocessor.simple.vert.err */, + B398171F29239F3C00A82429 /* hlsl.gatherRGBA.array.dx10.frag.out */, + B398172029239F3C00A82429 /* errors.frag.out */, + B398172129239F3C00A82429 /* spv.ClosestHitShader_Errors.rchit.out */, + B398172229239F3C00A82429 /* hlsl.getdimensions.dx10.frag.out */, + B398172329239F3C00A82429 /* spv.ssboAlias.frag.out */, + B398172429239F3C00A82429 /* hlsl.hull.ctrlpt-1.tesc.out */, + B398172529239F3C00A82429 /* voidFunction.frag.out */, + B398172629239F3C00A82429 /* hlsl.constantbuffer.frag.out */, + B398172729239F3C00A82429 /* spv.imageLoadStoreLod.frag.out */, + B398172829239F3C00A82429 /* hlsl.structbuffer.coherent.frag.out */, + B398172929239F3C00A82429 /* spv.subgroupExtendedTypesBallotNeg.comp.out */, + B398172A29239F3C00A82429 /* spv.1.4.constructComposite.comp.out */, + B398172B29239F3C00A82429 /* 450.comp.out */, + B398172C29239F3C00A82429 /* hlsl.structbuffer.append.frag.out */, + B398172D29239F3C00A82429 /* hlsl.intrinsics.negative.comp.out */, + B398172E29239F3C00A82429 /* hlsl.rw.vec2.bracket.frag.out */, + B398172F29239F3C00A82429 /* spv.sample.frag.out */, + B398173029239F3C00A82429 /* spv.dead-after-loop-break.vert.out */, + B398173129239F3C00A82429 /* hlsl.load.rwtexture.array.dx10.frag.out */, + B398173229239F3C00A82429 /* spv.8bitstorage_Error-uint.frag.out */, + B398173329239F3C00A82429 /* hlsl.forLoop.frag.out */, + B398173429239F3C00A82429 /* remap.hlsl.templatetypes.none.frag.out */, + B398173529239F3C00A82429 /* glsl.450.subgroup.tesc.out */, + B398173629239F3C00A82429 /* dataOut.frag.out */, + B398173729239F3C00A82429 /* 320.tese.out */, + B398173829239F3C00A82429 /* spv.doWhileLoop.frag.out */, + B398173929239F3C00A82429 /* spv.subgroup.tese.out */, + B398173A29239F3C00A82429 /* spv.always-discard.frag.out */, + B398173B29239F3C00A82429 /* nvShaderNoperspectiveInterpolation.frag.out */, + B398173C29239F3C00A82429 /* hlsl.string.frag.out */, + B398173D29239F3C00A82429 /* reflection.linked.out */, + B398173E29239F3C00A82429 /* hlsl.structarray.flatten.frag.out */, + B398173F29239F3C00A82429 /* spv.qualifiers.vert.out */, + B398174029239F3C00A82429 /* spv.vulkan110.int16.frag.out */, + B398174129239F3C00A82429 /* hlsl.type.identifier.frag.out */, + B398174229239F3C00A82429 /* 150.vert.out */, + B398174329239F3C00A82429 /* spv.for-simple.vert.out */, + B398174429239F3C00A82429 /* 300samplerExternalYUV.frag.out */, + B398174529239F3C00A82429 /* spv.ClosestHitShader.rchit.out */, + B398174629239F3C00A82429 /* specExamplesConf.vert.out */, + B398174729239F3C00A82429 /* spv.simpleMat.vert.out */, + B398174829239F3C00A82429 /* hlsl.nonstaticMemberFunction.frag.out */, + B398174929239F3C00A82429 /* spv.specConst.vert.out */, + B398174A29239F3C00A82429 /* spv.320.meshShaderUserDefined.mesh.out */, + B398174B29239F3C00A82429 /* spv.texture.sampler.transform.frag.out */, + B398174C29239F3C00A82429 /* preprocessor.line.vert.out */, + B398174D29239F3C00A82429 /* vulkan.ast.vert.out */, + B398174E29239F3C00A82429 /* functionSemantics.frag.out */, + B398174F29239F3C00A82429 /* hlsl.pp.expand.frag.out */, + B398175029239F3C00A82429 /* spv.rankShift.comp.out */, + B398175129239F3C00A82429 /* 310implicitSizeArrayError.vert.out */, + B398175229239F3C00A82429 /* hlsl.format.rwtexture.frag.out */, + B398175329239F3C00A82429 /* 460.frag.out */, + B398175429239F3C00A82429 /* spv.constStruct.vert.out */, + B398175529239F3C00A82429 /* link.multiBlocksInvalid.0.0.vert.out */, + B398175629239F3C00A82429 /* hlsl.clipdistance-8.vert.out */, + B398175729239F3C00A82429 /* spv.variableArrayIndex.frag.out */, + B398175829239F3C00A82429 /* hlsl.targetStruct2.frag.out */, + B398175929239F3C00A82429 /* hlsl.clipdistance-9.vert.out */, + B398175A29239F3C00A82429 /* hlsl.includeNegative.vert.out */, + B398175B29239F3C00A82429 /* hlsl.mul-truncate.frag.out */, + B398175C29239F3C00A82429 /* hlsl.sample.basic.dx10.frag.out */, + B398175D29239F3C00A82429 /* hlsl.samplelevel.offset.dx10.frag.out */, + B398175E29239F3C00A82429 /* hlsl.aliasOpaque.frag.out */, + B398175F29239F3C00A82429 /* spv.functionParameterTypes.frag.out */, + B398176029239F3C00A82429 /* spv.AofA.frag.out */, + B398176129239F3C00A82429 /* spv.shaderStencilExport.frag.out */, + B398176229239F3C00A82429 /* glsl.450.subgroup.vert.out */, + B398176329239F3C00A82429 /* 410.geom.out */, + B398176429239F3C00A82429 /* hlsl.samplecmplevelzero.basic.dx10.frag.out */, + B398176529239F3C00A82429 /* hlsl.samplecmp.offsetarray.dx10.frag.out */, + B398176629239F3C00A82429 /* hlsl.emptystructreturn.frag.out */, + B398176729239F3C00A82429 /* hlsl.struct.split.array.geom.out */, + B398176829239F3C00A82429 /* spv.for-nobody.vert.out */, + B398176929239F3C00A82429 /* hlsl.cast.frag.out */, + B398176A29239F3C00A82429 /* hlsl.struct.frag.out */, + B398176B29239F3C00A82429 /* hlsl.float4.frag.out */, + B398176C29239F3C00A82429 /* tokenPaste.vert.out */, + B398176D29239F3C00A82429 /* spv.RayGenShader.rgen.out */, + B398176E29239F3C00A82429 /* spv.MissShader_Errors.rmiss.out */, + B398176F29239F3C00A82429 /* mains1.frag.out */, + B398177029239F3C00A82429 /* hlsl.array.multidim.frag.out */, + B398177129239F3C00A82429 /* spv.structAssignment.frag.out */, + B398177229239F3C00A82429 /* rayQuery-allOps.rgen.out */, + B398177329239F3C00A82429 /* hlsl.multiDescriptorSet.frag.out */, + B398177429239F3C00A82429 /* spv.400.frag.nanclamp.out */, + B398177529239F3C00A82429 /* spv.float32.frag.out */, + B398177629239F3C00A82429 /* hlsl.emptystruct.init.vert.out */, + B398177729239F3C00A82429 /* 100.frag.out */, + B398177829239F3C00A82429 /* remap.switch.none.frag.out */, + B398177929239F3C00A82429 /* spv.bufferhandle4.frag.out */, + B398177A29239F3C00A82429 /* spv.bufferhandle5.frag.out */, + B398177B29239F3C00A82429 /* link.vk.differentPC.0.0.frag.out */, + B398177C29239F3C00A82429 /* 450.tese.out */, + B398177D29239F3C00A82429 /* spv.arbPostDepthCoverage.frag.out */, + B398177E29239F3C00A82429 /* spv.constConstruct.vert.out */, + B398177F29239F3C00A82429 /* spv.1.4.OpCopyLogical.funcall.frag.out */, + B398178029239F3C00A82429 /* hlsl.intrinsics.d3dcolortoubyte4.frag.out */, + B398178129239F3C00A82429 /* loops.frag.out */, + B398178229239F3C00A82429 /* recurse1.vert.out */, + B398178329239F3C00A82429 /* spv.pushConstantAnon.vert.out */, + B398178429239F3C00A82429 /* 430.vert.out */, + B398178529239F3C00A82429 /* spv.ext.MissShader.rmiss.out */, + B398178629239F3C00A82429 /* spv.subgroupExtendedTypesShuffleNeg.comp.out */, + B398178729239F3C00A82429 /* hlsl.self_cast.frag.out */, + B398178829239F3C00A82429 /* cppComplexExpr.vert.out */, + B398178929239F3C00A82429 /* spv.scalarlayout.frag.out */, + B398178A29239F3C00A82429 /* hlsl.layoutOverride.vert.out */, + B398178B29239F3C00A82429 /* hlsl.promotions.frag.out */, + B398178C29239F3C00A82429 /* hlsl.memberFunCall.frag.out */, + B398178D29239F3C00A82429 /* 320.comp.out */, + B398178E29239F3C00A82429 /* 300layout.frag.out */, + B398178F29239F3C00A82429 /* spv.fragmentDensity.frag.out */, + B398179029239F3C00A82429 /* hlsl.array.flatten.frag.out */, + B398179129239F3C00A82429 /* 310.frag.out */, + B398179229239F3C00A82429 /* spv.dataOut.frag.out */, + B398179329239F3C00A82429 /* glsl.460.subgroup.rint.out */, + B398179429239F3C00A82429 /* remap.uniformarray.none.frag.out */, + B398179529239F3C00A82429 /* web.builtins.frag.out */, + B398179629239F3C00A82429 /* hlsl.structbuffer.incdec.frag.hlslfun1.out */, + B398179729239F3C00A82429 /* spv.int8.frag.out */, + B398179829239F3C00A82429 /* es-link1.frag.out */, + B398179929239F3D00A82429 /* hlsl.entry-out.frag.out */, + B398179A29239F3D00A82429 /* hlsl.clipdistance-2.vert.out */, + B398179B29239F3D00A82429 /* hlsl.clipdistance-3.vert.out */, + B398179C29239F3D00A82429 /* spv.vecMatConstruct.frag.out */, + B398179D29239F3D00A82429 /* spv.shaderImageFootprint.frag.out */, + B398179E29239F3D00A82429 /* missingBodies.vert.out */, + B398179F29239F3D00A82429 /* rayQuery-committed.Error.rgen.out */, + B39817A029239F3D00A82429 /* preprocessor.include.disabled.vert.err */, + B39817A129239F3D00A82429 /* pointCoord.frag.out */, + B39817A229239F3D00A82429 /* spv.RayGenShader11.rgen.out */, + B39817A329239F3D00A82429 /* functionCall.frag.out */, + B39817A429239F3D00A82429 /* preprocessor.include.enabled.vert.out */, + B39817A529239F3D00A82429 /* hlsl.stringtoken.frag.out */, + B39817A629239F3D00A82429 /* spv.subgroupExtendedTypesQuadNeg.comp.out */, + B39817A729239F3D00A82429 /* structDeref.frag.out */, + B39817A829239F3D00A82429 /* spv.bufferhandle11.frag.out */, + B39817A929239F3D00A82429 /* spv.bufferhandle10.frag.out */, + B39817AA29239F3D00A82429 /* hlsl.rw.bracket.frag.out */, + B39817AB29239F3D00A82429 /* cppDeepNest.frag.out */, + B39817AC29239F3D00A82429 /* spv.16bitstorage-uint.frag.out */, + B39817AD29239F3D00A82429 /* spv.bufferhandle9.frag.out */, + B39817AE29239F3D00A82429 /* flowControl.frag.out */, + B39817AF29239F3D00A82429 /* spv.bufferhandle8.frag.out */, + B39817B029239F3D00A82429 /* spv.while-simple.vert.out */, + B39817B129239F3D00A82429 /* hlsl.partialFlattenMixed.vert.out */, + B39817B229239F3D00A82429 /* spv.sparseTexture.frag.out */, + B39817B329239F3D00A82429 /* hlsl.structbuffer.frag.out */, + B39817B429239F3D00A82429 /* glsl.es320.subgroup.tesc.out */, + B39817B529239F3D00A82429 /* hlsl.shapeConv.frag.out */, + B39817B629239F3D00A82429 /* hlsl.intrinsics.vert.out */, + B39817B729239F3D00A82429 /* spv.vulkan110.storageBuffer.vert.out */, + B39817B829239F3D00A82429 /* hlsl.intrinsics.evalfns.frag.out */, + B39817B929239F3D00A82429 /* hlsl.gatherRGBA.basic.dx10.frag.out */, + B39817BA29239F3D00A82429 /* hlsl.type.half.frag.out */, + B39817BB29239F3D00A82429 /* spv.drawParams.vert.out */, + B39817BC29239F3D00A82429 /* spv.subgroupExtendedTypesPartitionedNeg.comp.out */, + B39817BD29239F3D00A82429 /* hlsl.structarray.flatten.geom.out */, + B39817BE29239F3D00A82429 /* sample.frag.out */, + B39817BF29239F3D00A82429 /* spv.subgroupBallot.comp.out */, + B39817C029239F3D00A82429 /* spv.builtInXFB.vert.out */, + B39817C129239F3D00A82429 /* glspv.esversion.vert.out */, + B39817C229239F3D00A82429 /* hlsl.load.rwtexture.dx10.frag.out */, + B39817C329239F3D00A82429 /* spv.specConstant.comp.out */, + B39817C429239F3D00A82429 /* spv.1.4.NonWritable.frag.out */, + B39817C529239F3D00A82429 /* hlsl.struct.split.call.vert.out */, + B39817C629239F3D00A82429 /* remap.hlsl.sample.basic.strip.frag.out */, + B39817C729239F3D00A82429 /* glspv.version.vert.out */, + B39817C829239F3D00A82429 /* web.basic.vert.out */, + B39817C929239F3D00A82429 /* spv.450.tesc.out */, + B39817CA29239F3D00A82429 /* 120.vert.out */, + B39817CB29239F3D00A82429 /* rayQuery-allOps.comp.out */, + B39817CC29239F3D00A82429 /* hlsl.sample.offsetarray.dx10.frag.out */, + B39817CD29239F3D00A82429 /* hlsl.synthesizeInput.frag.out */, + B39817CE29239F3D00A82429 /* hlsl.structin.vert.out */, + B39817CF29239F3D00A82429 /* spv.extPostDepthCoverage.frag.out */, + B39817D029239F3D00A82429 /* spv.8bit-16bit-construction.frag.out */, + B39817D129239F3D00A82429 /* glsl.es320.subgroup.vert.out */, + B39817D229239F3D00A82429 /* preprocessor.include.enabled.vert.err */, + B39817D329239F3D00A82429 /* remap.similar_1a.everything.frag.out */, + B39817D429239F3D00A82429 /* glsl.es320.subgroupBasic.comp.out */, + B39817D529239F3D00A82429 /* matrixError.vert.out */, + B39817D629239F3D00A82429 /* preprocessor.include.disabled.vert.out */, + B39817D729239F3D00A82429 /* spv.shaderFragMaskAMD.frag.out */, + B39817D829239F3D00A82429 /* hlsl.tx.overload.frag.out */, + B39817D929239F3D00A82429 /* spv.buffer.autoassign.frag.out */, + B39817DA29239F3D00A82429 /* spv.1.4.texture.frag.out */, + B39817DB29239F3D00A82429 /* 420.comp.out */, + B39817DC29239F3D00A82429 /* versionsClean.frag.out */, + B39817DD29239F3D00A82429 /* hlsl.getsampleposition.dx10.frag.out */, + B39817DE29239F3D00A82429 /* spv.ext.RayConstants.rgen.out */, + B39817DF29239F3D00A82429 /* spv.fullyCovered.frag.out */, + B39817E029239F3D00A82429 /* nosuffix.out */, + B39817E129239F3D00A82429 /* glsl.450.subgroupBallotNeg.comp.out */, + B39817E229239F3D00A82429 /* hlsl.sample.array.dx10.frag.out */, + B39817E329239F3D00A82429 /* spv.nonSquare.vert.out */, + B39817E429239F3D00A82429 /* spv.1.4.OpSelect.frag.out */, + B39817E529239F3D00A82429 /* 300block.frag.out */, + B39817E629239F3D00A82429 /* size */, + B39817E729239F3D00A82429 /* hlsl.sample.offset.dx10.frag.out */, + B39817E829239F3D00A82429 /* precise_struct_block.vert.out */, + B39817E929239F3D00A82429 /* hlsl.array.implicit-size.frag.out */, + B39817EA29239F3D00A82429 /* remap.basic.dcefunc.frag.out */, + B39817EB29239F3D00A82429 /* hlsl.flattenSubset.frag.out */, + B39817EC29239F3D00A82429 /* hlsl.inf.vert.out */, + B39817ED29239F3D00A82429 /* spv.16bitstorage.frag.out */, + B39817EE29239F3D00A82429 /* hlsl.reflection.binding.vert.out */, + B39817EF29239F3D00A82429 /* spv.dataOutIndirect.frag.out */, + B39817F029239F3D00A82429 /* hlsl.samplecmplevelzero.array.dx10.frag.out */, + B39817F129239F3D00A82429 /* rayQuery-initialize.rgen.out */, + B39817F229239F3D00A82429 /* spv.debugInfo.1.1.frag.out */, + B39817F329239F3D00A82429 /* spv.hlslDebugInfo.frag.out */, + B39817F429239F3D00A82429 /* spv.perprimitiveNV.frag.out */, + B39817F529239F3D00A82429 /* hlsl.semantic-1.vert.out */, + B39817F629239F3D00A82429 /* compoundsuffix.vert.glsl */, + B39817F729239F3D00A82429 /* 310.geom.out */, + B39817F829239F3D00A82429 /* spv.400.frag.out */, + B39817F929239F3D00A82429 /* spv.300layout.frag.out */, + B39817FA29239F3D00A82429 /* hlsl.semicolons.frag.out */, + B39817FB29239F3D00A82429 /* spv.1.4.OpEntryPoint.frag.out */, + B39817FC29239F3D00A82429 /* remap.similar_1b.everything.frag.out */, + B39817FD29239F3D00A82429 /* hlsl.switch.frag.out */, + B39817FE29239F3D00A82429 /* hlsl.type.type.conversion.valid.frag.out */, + B39817FF29239F3D00A82429 /* preprocessor.simple.vert.out */, + B398180029239F3D00A82429 /* hlsl.domain.1.tese.out */, + B398180129239F3D00A82429 /* glsl.460.subgroup.mesh.out */, + B398180229239F3D00A82429 /* spv.subgroupExtendedTypesPartitioned.comp.out */, + B398180329239F3D00A82429 /* spv.debugInfo.frag.out */, + B398180429239F3D00A82429 /* hlsl.calculatelod.dx10.frag.out */, + B398180529239F3D00A82429 /* hlsl.array.frag.out */, + B398180629239F3D00A82429 /* spv.simpleFunctionCall.frag.out */, + B398180729239F3D00A82429 /* stringToDouble.vert.out */, + B398180829239F3D00A82429 /* spv.subgroupExtendedTypesShuffle.comp.out */, + B398180929239F3D00A82429 /* 300link.frag.out */, + B398180A29239F3D00A82429 /* cppIndent.vert.out */, + B398180B29239F3D00A82429 /* hlsl.params.default.frag.out */, + B398180C29239F3D00A82429 /* spv.bufferhandle3.frag.out */, + B398180D29239F3D00A82429 /* spv.bufferhandle2.frag.out */, + B398180E29239F3D00A82429 /* spv.noWorkgroup.comp.out */, + B398180F29239F3D00A82429 /* spv.textureBuffer.vert.out */, + B398181029239F3D00A82429 /* hlsl.swizzle.frag.out */, + B398181129239F3D00A82429 /* hlsl.y-negate-1.vert.out */, + B398181229239F3D00A82429 /* spv.boolInBlock.frag.out */, + B398181329239F3D00A82429 /* spv.meshShaderBuiltins.mesh.out */, + B398181429239F3D00A82429 /* spv.subgroupExtendedTypesShuffleRelative.comp.out */, + B398181529239F3D00A82429 /* 440.vert.out */, + B398181629239F3D00A82429 /* array100.frag.out */, + B398181729239F3D00A82429 /* hlsl.clipdistance-5.vert.out */, + B398181829239F3D00A82429 /* spv.100ops.frag.out */, + B398181929239F3D00A82429 /* hlsl.clipdistance-4.vert.out */, + B398181A29239F3D00A82429 /* spv.meshShaderPerView_Errors.mesh.out */, + B398181B29239F3D00A82429 /* glsl.460.subgroup.rgen.out */, + B398181C29239F3D00A82429 /* lineContinuation100.vert.out */, + B398181D29239F3D00A82429 /* hlsl.samplecmplevelzero.offsetarray.dx10.frag.out */, + B398181E29239F3D00A82429 /* hlsl.explicitDescriptorSet-2.frag.out */, + B398181F29239F3D00A82429 /* hlsl.frag.out */, + B398182029239F3D00A82429 /* rayQuery-allOps.Error.rgen.out */, + B398182129239F3D00A82429 /* hlsl.depthGreater.frag.out */, + B398182229239F3D00A82429 /* 110scope.vert.out */, + B398182329239F3D00A82429 /* hlsl.pp.line.frag.out */, + B398182429239F3D00A82429 /* hlsl.loopattr.frag.out */, + B398182529239F3D00A82429 /* empty.frag.out */, + B398182629239F3D00A82429 /* spv.noDeadDecorations.vert.out */, + B398182729239F3D00A82429 /* hlsl.whileLoop.frag.out */, + B398182829239F3D00A82429 /* hlsl.entry-in.frag.out */, + B398182929239F3D00A82429 /* remap.uniformarray.everything.frag.out */, + B398182A29239F3D00A82429 /* 420.tese.out */, + B398182B29239F3D00A82429 /* hlsl.specConstant.frag.out */, + B398182C29239F3D00A82429 /* spv.glsl.register.noautoassign.frag.out */, + B398182D29239F3D00A82429 /* spv.texture.vert.out */, + B398182E29239F3D00A82429 /* spv.bufferhandle16.frag.out */, + B398182F29239F3D00A82429 /* spv.float16Fetch.frag.out */, + B398183029239F3D00A82429 /* spv.meshShaderUserDefined.mesh.out */, + B398183129239F3D00A82429 /* hlsl.constructimat.frag.out */, + B398183229239F3D00A82429 /* hlsl.pp.expand.frag.err */, + B398183329239F3D00A82429 /* glsl.450.subgroupClusteredNeg.comp.out */, + B398183429239F3D00A82429 /* syntaxError.frag.out */, + B398183529239F3D00A82429 /* spv.sampleId.frag.out */, + B398183629239F3D00A82429 /* remap.hlsl.templatetypes.everything.frag.out */, + B398183729239F3D00A82429 /* preprocessor.line.vert.err */, + B398183829239F3D00A82429 /* hlsl.numericsuffixes.frag.out */, + B398183929239F3D00A82429 /* spv.subgroupBasic.comp.out */, + B398183A29239F3D00A82429 /* spv.RayCallable.rcall.out */, + B398183B29239F3D00A82429 /* hlsl.structbuffer.floatidx.comp.out */, + B398183C29239F3D00A82429 /* dce.frag.out */, + B398183D29239F3D00A82429 /* spv.meshShaderRedeclBuiltins.mesh.out */, + B398183E29239F3D00A82429 /* 100scope.vert.out */, + B398183F29239F3D00A82429 /* hlsl.charLit.vert.out */, + B398184029239F3D00A82429 /* hlsl.implicitBool.frag.out */, + B398184129239F3D00A82429 /* hlsl.scalar-length.frag.out */, + B398184229239F3D00A82429 /* glsl.es320.subgroup.tese.out */, + B398184329239F3D00A82429 /* spv.1.4.sparseTexture.frag.out */, + B398184429239F3D00A82429 /* spv.300BuiltIns.vert.out */, + B398184529239F3D00A82429 /* 420_size_gl_in.geom.out */, + B398184629239F3D00A82429 /* spv.atomicCounter.comp.out */, + B398184729239F3D00A82429 /* hlsl.tx.bracket.frag.out */, + B398184829239F3D00A82429 /* spv.whileLoop.frag.out */, + B398184929239F3D00A82429 /* versionsErrors.frag.out */, + B398184A29239F3D00A82429 /* spv.vulkan100.subgroupArithmetic.comp.out */, + B398184B29239F3D00A82429 /* doWhileLoop.frag.out */, + B398184C29239F3D00A82429 /* vulkan.frag.out */, + B398184D29239F3D00A82429 /* spv.prepost.frag.out */, + B398184E29239F3D00A82429 /* spv.430.vert.out */, + B398184F29239F3D00A82429 /* mixedArrayDecls.frag.out */, + B398185029239F3D00A82429 /* spv.dead-complex-continue-after-return.vert.out */, + B398185129239F3D00A82429 /* spv.types.frag.out */, + B398185229239F3D00A82429 /* spv.hlslOffsets.vert.out */, + B398185329239F3D00A82429 /* runtimeArray.vert.out */, + B398185429239F3D00A82429 /* badChars.frag.out */, + B398185529239F3D00A82429 /* hlsl.basic.geom.out */, + B398185629239F3D00A82429 /* hlsl.samplegrad.basic.dx10.vert.out */, + B398185729239F3D00A82429 /* spv.volatileAtomic.comp.out */, + B398185829239F3D00A82429 /* spv.RayGenShader_Errors.rgen.out */, + B398185929239F3D00A82429 /* hlsl.subpass.frag.out */, + B398185A29239F3D00A82429 /* hlsl.clip.frag.out */, + B398185B29239F3D00A82429 /* hlsl.flattenOpaqueInitMix.vert.out */, + B398185C29239F3D00A82429 /* hlsl.multiReturn.frag.out */, + B398185D29239F3D00A82429 /* hlsl.pp.line3.frag.out */, + B398185E29239F3D00A82429 /* hlsl.preprocessor.frag.out */, + B398185F29239F3D00A82429 /* hlsl.pp.line2.frag.out */, + B398186029239F3D00A82429 /* reflection.options.geom.out */, + B398186129239F3D00A82429 /* remap.if.everything.frag.out */, + B398186229239F3D00A82429 /* hlsl.attributeC11.frag.out */, + B398186329239F3D00A82429 /* hlsl.load.2dms.dx10.frag.out */, + B398186429239F3D00A82429 /* tokenLength.vert.out */, + B398186529239F3D00A82429 /* spv.ext.MissShader_Errors.rmiss.out */, + B398186629239F3D00A82429 /* spv.subgroupExtendedTypesVote.comp.out */, + B398186729239F3D00A82429 /* glsl.450.subgroupQuad.comp.out */, + B398186829239F3D00A82429 /* 400.geom.out */, + B398186929239F3D00A82429 /* constFold.frag.out */, + B398186A29239F3D00A82429 /* glsl.es320.subgroupPartitioned.comp.out */, + B398186B29239F3D00A82429 /* hlsl.PointSize.geom.out */, + B398186C29239F3D00A82429 /* spv.dead-complex-merge-after-return.vert.out */, + B398186D29239F3D00A82429 /* spv.OVR_multiview.vert.out */, + B398186E29239F3D00A82429 /* hlsl.multiEntry.vert.out */, + B398186F29239F3D00A82429 /* 140.vert.out */, + B398187029239F3D00A82429 /* spv.fragmentDensity-neg.frag.out */, + B398187129239F3D00A82429 /* hlsl.waveprefix.comp.out */, + B398187229239F3D00A82429 /* hlsl.hull.void.tesc.out */, + B398187329239F3D00A82429 /* remap.literal64.none.spv.out */, + B398187429239F3D00A82429 /* spv.float16.frag.out */, + B398187529239F3D00A82429 /* hlsl.structbuffer.incdec.frag.out */, + B398187629239F3D00A82429 /* spv.subgroupQuad.comp.out */, + B398187729239F3D00A82429 /* spv.subgroupExtendedTypesArithmetic.comp.out */, + B398187829239F3E00A82429 /* spv.bool.vert.out */, + B398187929239F3E00A82429 /* spv.deviceGroup.frag.out */, + B398187A29239F3E00A82429 /* hlsl.clipdistance-1.frag.out */, + B398187B29239F3E00A82429 /* spv.ext.RayGenShader_Errors.rgen.out */, + B398187C29239F3E00A82429 /* hlsl.load.basic.dx10.vert.out */, + B398187D29239F3E00A82429 /* spv.loopsArtificial.frag.out */, + B398187E29239F3E00A82429 /* spv.for-complex-condition.vert.out */, + B398187F29239F3E00A82429 /* hlsl.constructexpr.frag.out */, + B398188029239F3E00A82429 /* hlsl.color.hull.tesc.out */, + B398188129239F3E00A82429 /* hlsl.automap.frag.out */, + B398188229239F3E00A82429 /* 420.vert.out */, + B398188329239F3E00A82429 /* spv.multiStruct.comp.out */, + B398188429239F3E00A82429 /* hlsl.gatherRGBA.offsetarray.dx10.frag.out */, + B398188529239F3E00A82429 /* hlsl.intrinsics.double.frag.out */, + B398188629239F3E00A82429 /* spv.switch.frag.out */, + B398188729239F3E00A82429 /* spv.fragmentShaderBarycentric.frag.out */, + B398188829239F3E00A82429 /* hlsl.structbuffer.fn2.comp.out */, + B398188929239F3E00A82429 /* glsl.450.subgroupArithmetic.comp.out */, + B398188A29239F3E00A82429 /* variableArrayIndex.frag.out */, + B398188B29239F3E00A82429 /* glspv.vert.out */, + B398188C29239F3E00A82429 /* glsl.460.subgroup.rcall.out */, + B398188D29239F3E00A82429 /* hlsl.wavequad.comp.out */, + B398188E29239F3E00A82429 /* glsl.450.subgroupPartitioned.comp.out */, + B398188F29239F3E00A82429 /* length.frag.out */, + B398189029239F3E00A82429 /* cppSimple.vert.out */, + B398189129239F3E00A82429 /* spv.int64.frag.out */, + B398189229239F3E00A82429 /* spv.matFun.vert.out */, + B398189329239F3E00A82429 /* hlsl.rw.register.frag.out */, + B398189429239F3E00A82429 /* spv.GeometryShaderPassthrough.geom.out */, + B398189529239F3E00A82429 /* hlsl.intrinsics.comp.out */, + B398189629239F3E00A82429 /* cppBad3.vert.out */, + B398189729239F3E00A82429 /* cppBad2.vert.out */, + B398189829239F3E00A82429 /* spv.460.frag.out */, + B398189929239F3E00A82429 /* hlsl.nonint-index.frag.out */, + B398189A29239F3E00A82429 /* hlsl.noSemantic.functionality1.comp.out */, + B398189B29239F3E00A82429 /* remap.basic.none.frag.out */, + B398189C29239F3E00A82429 /* prepost.frag.out */, + B398189D29239F3E00A82429 /* spv.structDeref.frag.out */, + B398189E29239F3E00A82429 /* 420.tesc.out */, + B398189F29239F3E00A82429 /* spv.150.vert.out */, + B39818A029239F3E00A82429 /* spv.varyingArrayIndirect.frag.out */, + B39818A129239F3E00A82429 /* 300.frag.out */, + B39818A229239F3E00A82429 /* hlsl.assoc.frag.out */, + B39818A329239F3E00A82429 /* spv.specConstant.vert.out */, + B39818A429239F3E00A82429 /* precision.vert.out */, + B39818A529239F3E00A82429 /* glsl.450.subgroupShuffleRelative.comp.out */, + B39818A629239F3E00A82429 /* spv.subgroupExtendedTypesVoteNeg.comp.out */, + B39818A729239F3E00A82429 /* glsl.450.subgroupBasic.comp.out */, + B39818A829239F3E00A82429 /* hlsl.wavebroadcast.comp.out */, + B39818A929239F3E00A82429 /* spv.meshTaskShader.task.out */, + B39818AA29239F3E00A82429 /* hlsl.struct.split.trivial.vert.out */, + B39818AB29239F3E00A82429 /* spv.always-discard2.frag.out */, + B39818AC29239F3E00A82429 /* hlsl.groupid.comp.out */, + B39818AD29239F3E00A82429 /* spv.precisionNonESSamp.frag.out */, + B39818AE29239F3E00A82429 /* hlsl.fraggeom.frag.out */, + B39818AF29239F3E00A82429 /* spv.samplePosition.frag.out */, + ); + path = baseResults; + sourceTree = ""; + }; + B398190E29239F3E00A82429 /* StandAlone */ = { + isa = PBXGroup; + children = ( + B398190F29239F3E00A82429 /* resource_limits_c.h */, + B398191029239F3E00A82429 /* ResourceLimits.h */, + B398191129239F3E00A82429 /* CMakeLists.txt */, + B398191229239F3E00A82429 /* StandAlone.cpp */, + B398191329239F3E00A82429 /* spirv-remap.cpp */, + B398191429239F3E00A82429 /* Worklist.h */, + B398191529239F3E00A82429 /* resource_limits_c.cpp */, + B398191629239F3E00A82429 /* ResourceLimits.cpp */, + B398191729239F3E00A82429 /* DirStackFileIncluder.h */, + ); + path = StandAlone; + sourceTree = ""; + }; + B398191B29239F3F00A82429 /* SPIRV */ = { + isa = PBXGroup; + children = ( + B398191C29239F3F00A82429 /* NonSemanticDebugPrintf.h */, + B398191D29239F3F00A82429 /* SPVRemapper.h */, + B398191E29239F3F00A82429 /* SpvBuilder.h */, + B398191F29239F3F00A82429 /* CMakeLists.txt */, + B398192029239F3F00A82429 /* SpvPostProcess.cpp */, + B398192129239F3F00A82429 /* SpvTools.h */, + B398192229239F3F00A82429 /* SpvTools.cpp */, + B398192329239F3F00A82429 /* InReadableOrder.cpp */, + B398192429239F3F00A82429 /* GLSL.ext.AMD.h */, + B398192529239F3F00A82429 /* doc.h */, + B398192629239F3F00A82429 /* spirv.hpp */, + B398192729239F3F00A82429 /* SpvBuilder.cpp */, + B398192829239F3F00A82429 /* GLSL.ext.EXT.h */, + B398192929239F3F00A82429 /* GLSL.ext.KHR.h */, + B398192A29239F3F00A82429 /* GLSL.ext.NV.h */, + B398192B29239F3F00A82429 /* GlslangToSpv.cpp */, + B398192C29239F3F00A82429 /* spvIR.h */, + B398192D29239F3F00A82429 /* bitutils.h */, + B398192E29239F3F00A82429 /* disassemble.h */, + B398192F29239F3F00A82429 /* GlslangToSpv.h */, + B398193029239F3F00A82429 /* GLSL.std.450.h */, + B398193129239F3F00A82429 /* SPVRemapper.cpp */, + B398193229239F3F00A82429 /* Logger.cpp */, + B398193329239F3F00A82429 /* hex_float.h */, + B398193429239F3F00A82429 /* Logger.h */, + B398193529239F3F00A82429 /* doc.cpp */, + B398193629239F3F00A82429 /* disassemble.cpp */, + ); + path = SPIRV; + sourceTree = ""; + }; + B398193729239F3F00A82429 /* glslang */ = { + isa = PBXGroup; + children = ( + B398193829239F3F00A82429 /* CMakeLists.txt */, + B398193929239F3F00A82429 /* OSDependent */, + B398194729239F3F00A82429 /* CInterface */, + B398194929239F3F00A82429 /* Include */, + B398195929239F3F00A82429 /* updateGrammar */, + B398195A29239F3F00A82429 /* MachineIndependent */, + B398198D29239F3F00A82429 /* Public */, + B398198F29239F3F00A82429 /* GenericCodeGen */, + ); + path = glslang; + sourceTree = ""; + }; + B398193929239F3F00A82429 /* OSDependent */ = { + isa = PBXGroup; + children = ( + B398193A29239F3F00A82429 /* Web */, + B398193F29239F3F00A82429 /* Unix */, + B398194229239F3F00A82429 /* osinclude.h */, + B398194329239F3F00A82429 /* Windows */, + ); + path = OSDependent; + sourceTree = ""; + }; + B398193A29239F3F00A82429 /* Web */ = { + isa = PBXGroup; + children = ( + B398193B29239F3F00A82429 /* CMakeLists.txt */, + B398193C29239F3F00A82429 /* glslang.after.js */, + B398193D29239F3F00A82429 /* glslang.pre.js */, + B398193E29239F3F00A82429 /* glslang.js.cpp */, + ); + path = Web; + sourceTree = ""; + }; + B398193F29239F3F00A82429 /* Unix */ = { + isa = PBXGroup; + children = ( + B398194029239F3F00A82429 /* ossource.cpp */, + B398194129239F3F00A82429 /* CMakeLists.txt */, + ); + path = Unix; + sourceTree = ""; + }; + B398194329239F3F00A82429 /* Windows */ = { + isa = PBXGroup; + children = ( + B398194429239F3F00A82429 /* ossource.cpp */, + B398194529239F3F00A82429 /* CMakeLists.txt */, + B398194629239F3F00A82429 /* main.cpp */, + ); + path = Windows; + sourceTree = ""; + }; + B398194729239F3F00A82429 /* CInterface */ = { + isa = PBXGroup; + children = ( + B398194829239F3F00A82429 /* glslang_c_interface.cpp */, + ); + path = CInterface; + sourceTree = ""; + }; + B398194929239F3F00A82429 /* Include */ = { + isa = PBXGroup; + children = ( + B398194A29239F3F00A82429 /* ResourceLimits.h */, + B398194B29239F3F00A82429 /* glslang_c_interface.h */, + B398194C29239F3F00A82429 /* Types.h */, + B398194D29239F3F00A82429 /* intermediate.h */, + B398194E29239F3F00A82429 /* glslang_c_shader_types.h */, + B398194F29239F3F00A82429 /* BaseTypes.h */, + B398195029239F3F00A82429 /* revision.h */, + B398195129239F3F00A82429 /* InitializeGlobals.h */, + B398195229239F3F00A82429 /* ShHandle.h */, + B398195329239F3F00A82429 /* arrays.h */, + B398195429239F3F00A82429 /* Common.h */, + B398195529239F3F00A82429 /* revision.template */, + B398195629239F3F00A82429 /* ConstantUnion.h */, + B398195729239F3F00A82429 /* InfoSink.h */, + B398195829239F3F00A82429 /* PoolAlloc.h */, + ); + path = Include; + sourceTree = ""; + }; + B398195A29239F3F00A82429 /* MachineIndependent */ = { + isa = PBXGroup; + children = ( + B398195B29239F3F00A82429 /* ParseHelper.cpp */, + B398195C29239F3F00A82429 /* parseVersions.h */, + B398195D29239F3F00A82429 /* gl_types.h */, + B398195E29239F3F00A82429 /* propagateNoContraction.cpp */, + B398195F29239F3F00A82429 /* pch.h */, + B398196029239F3F00A82429 /* ScanContext.h */, + B398196129239F3F00A82429 /* iomapper.h */, + B398196229239F3F00A82429 /* localintermediate.h */, + B398196329239F3F00A82429 /* Scan.cpp */, + B398196429239F3F00A82429 /* glslang.y */, + B398196529239F3F00A82429 /* RemoveTree.h */, + B398196629239F3F00A82429 /* Initialize.cpp */, + B398196729239F3F00A82429 /* glslang_tab.cpp */, + B398196829239F3F00A82429 /* limits.cpp */, + B398196929239F3F00A82429 /* parseConst.cpp */, + B398196A29239F3F00A82429 /* propagateNoContraction.h */, + B398196B29239F3F00A82429 /* Versions.h */, + B398196C29239F3F00A82429 /* IntermTraverse.cpp */, + B398196D29239F3F00A82429 /* intermOut.cpp */, + B398196E29239F3F00A82429 /* iomapper.cpp */, + B398196F29239F3F00A82429 /* PoolAlloc.cpp */, + B398197029239F3F00A82429 /* ShaderLang.cpp */, + B398197129239F3F00A82429 /* SymbolTable.h */, + B398197229239F3F00A82429 /* InfoSink.cpp */, + B398197329239F3F00A82429 /* Intermediate.cpp */, + B398197429239F3F00A82429 /* pch.cpp */, + B398197529239F3F00A82429 /* SymbolTable.cpp */, + B398197629239F3F00A82429 /* glslang_tab.cpp.h */, + B398197729239F3F00A82429 /* LiveTraverser.h */, + B398197829239F3F00A82429 /* Initialize.h */, + B398197929239F3F00A82429 /* attribute.cpp */, + B398197A29239F3F00A82429 /* reflection.cpp */, + B398197B29239F3F00A82429 /* RemoveTree.cpp */, + B398197C29239F3F00A82429 /* attribute.h */, + B398197D29239F3F00A82429 /* Versions.cpp */, + B398197E29239F3F00A82429 /* Constant.cpp */, + B398197F29239F3F00A82429 /* linkValidate.cpp */, + B398198029239F3F00A82429 /* glslang.m4 */, + B398198129239F3F00A82429 /* ParseHelper.h */, + B398198229239F3F00A82429 /* preprocessor */, + B398198A29239F3F00A82429 /* ParseContextBase.cpp */, + B398198B29239F3F00A82429 /* reflection.h */, + B398198C29239F3F00A82429 /* Scan.h */, + ); + path = MachineIndependent; + sourceTree = ""; + }; + B398198229239F3F00A82429 /* preprocessor */ = { + isa = PBXGroup; + children = ( + B398198329239F3F00A82429 /* PpAtom.cpp */, + B398198429239F3F00A82429 /* PpTokens.h */, + B398198529239F3F00A82429 /* Pp.cpp */, + B398198629239F3F00A82429 /* PpContext.h */, + B398198729239F3F00A82429 /* PpTokens.cpp */, + B398198829239F3F00A82429 /* PpContext.cpp */, + B398198929239F3F00A82429 /* PpScanner.cpp */, + ); + path = preprocessor; + sourceTree = ""; + }; + B398198D29239F3F00A82429 /* Public */ = { + isa = PBXGroup; + children = ( + B398198E29239F3F00A82429 /* ShaderLang.h */, + ); + path = Public; + sourceTree = ""; + }; + B398198F29239F3F00A82429 /* GenericCodeGen */ = { + isa = PBXGroup; + children = ( + B398199029239F3F00A82429 /* CodeGen.cpp */, + B398199129239F3F00A82429 /* Link.cpp */, + ); + path = GenericCodeGen; + sourceTree = ""; + }; + B398199329239F3F00A82429 /* OGLCompilersDLL */ = { + isa = PBXGroup; + children = ( + B398199429239F3F00A82429 /* CMakeLists.txt */, + B398199529239F3F00A82429 /* InitializeDll.h */, + B398199629239F3F00A82429 /* InitializeDll.cpp */, + ); + path = OGLCompilersDLL; + sourceTree = ""; + }; + B398199929239F3F00A82429 /* build_overrides */ = { + isa = PBXGroup; + children = ( + B398199A29239F3F00A82429 /* glslang.gni */, + ); + path = build_overrides; + sourceTree = ""; + }; + B39819A129239F3F00A82429 /* External */ = { + isa = PBXGroup; + children = ( + B39819A229239F3F00A82429 /* CMakeLists.txt */, + ); + path = External; + sourceTree = ""; + }; + B39819A529239F3F00A82429 /* hlsl */ = { + isa = PBXGroup; + children = ( + B39819A629239F3F00A82429 /* hlslParseables.cpp */, + B39819A729239F3F00A82429 /* hlslTokenStream.cpp */, + B39819A829239F3F00A82429 /* pch.h */, + B39819A929239F3F00A82429 /* CMakeLists.txt */, + B39819AA29239F3F00A82429 /* hlslParseables.h */, + B39819AB29239F3F00A82429 /* hlslParseHelper.cpp */, + B39819AC29239F3F00A82429 /* hlslAttributes.h */, + B39819AD29239F3F00A82429 /* hlslScanContext.cpp */, + B39819AE29239F3F00A82429 /* hlslParseHelper.h */, + B39819AF29239F3F00A82429 /* hlslOpMap.cpp */, + B39819B029239F3F00A82429 /* hlslScanContext.h */, + B39819B129239F3F00A82429 /* hlslTokens.h */, + B39819B229239F3F00A82429 /* hlslAttributes.cpp */, + B39819B329239F3F00A82429 /* pch.cpp */, + B39819B429239F3F00A82429 /* hlslOpMap.h */, + B39819B529239F3F00A82429 /* hlslGrammar.cpp */, + B39819B629239F3F00A82429 /* hlslTokenStream.h */, + B39819B729239F3F00A82429 /* hlslGrammar.h */, + ); + path = hlsl; + sourceTree = ""; + }; + B39819B929239F3F00A82429 /* kokoro */ = { + isa = PBXGroup; + children = ( + B39819BA29239F3F00A82429 /* macos-clang-release-bazel */, + B39819BE29239F3F00A82429 /* linux-clang-release-bazel */, + B39819C229239F3F00A82429 /* windows-msvc-2015-release-bazel */, + ); + path = kokoro; + sourceTree = ""; + }; + B39819BA29239F3F00A82429 /* macos-clang-release-bazel */ = { + isa = PBXGroup; + children = ( + B39819BB29239F3F00A82429 /* presubmit.cfg */, + B39819BC29239F3F00A82429 /* build.sh */, + B39819BD29239F3F00A82429 /* continuous.cfg */, + ); + path = "macos-clang-release-bazel"; + sourceTree = ""; + }; + B39819BE29239F3F00A82429 /* linux-clang-release-bazel */ = { + isa = PBXGroup; + children = ( + B39819BF29239F3F00A82429 /* presubmit.cfg */, + B39819C029239F3F00A82429 /* build.sh */, + B39819C129239F3F00A82429 /* continuous.cfg */, + ); + path = "linux-clang-release-bazel"; + sourceTree = ""; + }; + B39819C229239F3F00A82429 /* windows-msvc-2015-release-bazel */ = { + isa = PBXGroup; + children = ( + B39819C329239F3F00A82429 /* presubmit.cfg */, + B39819C429239F3F00A82429 /* build.bat */, + B39819C529239F3F00A82429 /* continuous.cfg */, + ); + path = "windows-msvc-2015-release-bazel"; + sourceTree = ""; + }; + B39819C629239F3F00A82429 /* gtests */ = { + isa = PBXGroup; + children = ( + B39819C729239F3F00A82429 /* pch.h */, + B39819C829239F3F00A82429 /* Remap.FromFile.cpp */, + B39819C929239F3F00A82429 /* CMakeLists.txt */, + B39819CA29239F3F00A82429 /* Link.FromFile.Vk.cpp */, + B39819CB29239F3F00A82429 /* Link.FromFile.cpp */, + B39819CC29239F3F00A82429 /* Settings.h */, + B39819CD29239F3F00A82429 /* TestFixture.cpp */, + B39819CE29239F3F00A82429 /* AST.FromFile.cpp */, + B39819CF29239F3F00A82429 /* Spv.FromFile.cpp */, + B39819D029239F3F00A82429 /* Hlsl.FromFile.cpp */, + B39819D129239F3F00A82429 /* README.md */, + B39819D229239F3F00A82429 /* pch.cpp */, + B39819D329239F3F00A82429 /* BuiltInResource.FromFile.cpp */, + B39819D429239F3F00A82429 /* Initializer.h */, + B39819D529239F3F00A82429 /* TestFixture.h */, + B39819D629239F3F00A82429 /* Pp.FromFile.cpp */, + B39819D729239F3F00A82429 /* Config.FromFile.cpp */, + B39819D829239F3F00A82429 /* main.cpp */, + B39819D929239F3F00A82429 /* Settings.cpp */, + B39819DA29239F3F00A82429 /* HexFloat.cpp */, + ); + path = gtests; + sourceTree = ""; + }; + B39819DB29239F3F00A82429 /* stb */ = { + isa = PBXGroup; + children = ( + B39819DC29239F3F00A82429 /* stb_image_write.h */, + B39819DD29239F3F00A82429 /* stb_image.h */, + ); + path = stb; + sourceTree = ""; + }; + B39819DE29239F3F00A82429 /* xbyak */ = { + isa = PBXGroup; + children = ( + B39819DF29239F3F00A82429 /* CMakeLists.txt */, + B39819E029239F3F00A82429 /* test */, + B3981A0B29239F3F00A82429 /* cmake */, + B3981A0D29239F3F00A82429 /* Makefile */, + B3981A0E29239F3F00A82429 /* gen */, + B3981A1629239F3F00A82429 /* readme.md */, + B3981A1729239F3F00A82429 /* xbyak */, + B3981A1C29239F3F00A82429 /* .gitignore */, + B3981A1D29239F3F00A82429 /* .github */, + B3981A2029239F3F00A82429 /* sample */, + B3981A3829239F3F00A82429 /* readme.txt */, + B3981A3929239F3F00A82429 /* COPYRIGHT */, + B3981A3A29239F3F00A82429 /* xbyak.sln */, + ); + path = xbyak; + sourceTree = ""; + }; + B39819E029239F3F00A82429 /* test */ = { + isa = PBXGroup; + children = ( + B39819E129239F3F00A82429 /* make_nm.cpp */, + B39819E229239F3F00A82429 /* state.pptx */, + B39819E329239F3F00A82429 /* test_nm.sh */, + B39819E429239F3F00A82429 /* rip-label-imm.cpp */, + B39819E529239F3F00A82429 /* test_avx.bat */, + B39819E629239F3F00A82429 /* jmp.vcproj */, + B39819E729239F3F00A82429 /* cybozu */, + B39819EA29239F3F00A82429 /* misc.cpp */, + B39819EB29239F3F00A82429 /* Makefile */, + B39819EC29239F3F00A82429 /* sf_test.cpp */, + B39819ED29239F3F00A82429 /* lib_min.cpp */, + B39819EE29239F3F00A82429 /* a.bat */, + B39819EF29239F3F00A82429 /* lib_test.cpp */, + B39819F029239F3F00A82429 /* test_mmx.cpp */, + B39819F129239F3F00A82429 /* nm_frame.cpp */, + B39819F229239F3F00A82429 /* bad_address.cpp */, + B39819F329239F3F00A82429 /* test_nm_all.bat */, + B39819F429239F3F00A82429 /* jmp.sln */, + B39819F529239F3F00A82429 /* set_opt.bat */, + B39819F629239F3F00A82429 /* lib.h */, + B39819F729239F3F00A82429 /* noexception.cpp */, + B39819F829239F3F00A82429 /* mprotect_test.cpp */, + B39819F929239F3F00A82429 /* test_avx512.bat */, + B39819FA29239F3F00A82429 /* address.cpp */, + B39819FB29239F3F00A82429 /* test_jmp.bat */, + B39819FC29239F3F00A82429 /* test_avx_all.bat */, + B39819FD29239F3F00A82429 /* test_address.bat */, + B39819FE29239F3F00A82429 /* test_address.sh */, + B39819FF29239F3F00A82429 /* readme.txt */, + B3981A0029239F3F00A82429 /* test_nm.bat */, + B3981A0129239F3F00A82429 /* cvt_test.cpp */, + B3981A0229239F3F00A82429 /* normalize_prefix.cpp */, + B3981A0329239F3F00A82429 /* lib_run.cpp */, + B3981A0429239F3F00A82429 /* test_all.bat */, + B3981A0529239F3F00A82429 /* test_misc.bat */, + B3981A0629239F3F00A82429 /* test_avx.sh */, + B3981A0729239F3F00A82429 /* test_avx512.sh */, + B3981A0829239F3F00A82429 /* Makefile.win */, + B3981A0929239F3F00A82429 /* jmp.cpp */, + B3981A0A29239F3F00A82429 /* make_512.cpp */, + ); + path = test; + sourceTree = ""; + }; + B39819E729239F3F00A82429 /* cybozu */ = { + isa = PBXGroup; + children = ( + B39819E829239F3F00A82429 /* test.hpp */, + B39819E929239F3F00A82429 /* inttype.hpp */, + ); + path = cybozu; + sourceTree = ""; + }; + B3981A0B29239F3F00A82429 /* cmake */ = { + isa = PBXGroup; + children = ( + B3981A0C29239F3F00A82429 /* config.cmake.in */, + ); + path = cmake; + sourceTree = ""; + }; + B3981A0E29239F3F00A82429 /* gen */ = { + isa = PBXGroup; + children = ( + B3981A0F29239F3F00A82429 /* gen_code.cpp */, + B3981A1029239F3F00A82429 /* Makefile */, + B3981A1129239F3F00A82429 /* b2hex.cpp */, + B3981A1229239F3F00A82429 /* avx_type.hpp */, + B3981A1329239F3F00A82429 /* update.bat */, + B3981A1429239F3F00A82429 /* sortline.cpp */, + B3981A1529239F3F00A82429 /* gen_avx512.cpp */, + ); + path = gen; + sourceTree = ""; + }; + B3981A1729239F3F00A82429 /* xbyak */ = { + isa = PBXGroup; + children = ( + B3981A1829239F3F00A82429 /* xbyak_mnemonic.h */, + B3981A1929239F3F00A82429 /* xbyak_bin2hex.h */, + B3981A1A29239F3F00A82429 /* xbyak.h */, + B3981A1B29239F3F00A82429 /* xbyak_util.h */, + ); + path = xbyak; + sourceTree = ""; + }; + B3981A1D29239F3F00A82429 /* .github */ = { + isa = PBXGroup; + children = ( + B3981A1E29239F3F00A82429 /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B3981A1E29239F3F00A82429 /* workflows */ = { + isa = PBXGroup; + children = ( + B3981A1F29239F3F00A82429 /* main.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B3981A2029239F3F00A82429 /* sample */ = { + isa = PBXGroup; + children = ( + B3981A2129239F3F00A82429 /* test0.vcxproj */, + B3981A2229239F3F00A82429 /* stackframe.cpp */, + B3981A2329239F3F00A82429 /* toyvm.cpp */, + B3981A2429239F3F00A82429 /* bf.cpp */, + B3981A2529239F3F00A82429 /* profiler.cpp */, + B3981A2629239F3F00A82429 /* protect-re.cpp */, + B3981A2729239F3F00A82429 /* Makefile */, + B3981A2829239F3F00A82429 /* calc2.cpp */, + B3981A2929239F3F00A82429 /* echo.bf */, + B3981A2A29239F3F00A82429 /* test_util.vcxproj */, + B3981A2B29239F3F00A82429 /* quantize.vcxproj */, + B3981A2C29239F3F00A82429 /* toyvm.vcxproj */, + B3981A2D29239F3F00A82429 /* static_buf.cpp */, + B3981A2E29239F3F00A82429 /* bf.vcxproj */, + B3981A2F29239F3F00A82429 /* calc.cpp */, + B3981A3029239F3F00A82429 /* test_util.cpp */, + B3981A3129239F3F00A82429 /* calc.vcxproj */, + B3981A3229239F3F00A82429 /* hello.bf */, + B3981A3329239F3F00A82429 /* test0.cpp */, + B3981A3429239F3F00A82429 /* quantize.cpp */, + B3981A3529239F3F00A82429 /* jmp_table.cpp */, + B3981A3629239F3F00A82429 /* fizzbuzz.bf */, + B3981A3729239F3F00A82429 /* memfunc.cpp */, + ); + path = sample; + sourceTree = ""; + }; + B3981A3B29239F3F00A82429 /* gtest */ = { + isa = PBXGroup; + children = ( + B3981A3C29239F3F00A82429 /* gtest-matchers.h */, + B3981A3D29239F3F00A82429 /* gtest-death-test.h */, + B3981A3E29239F3F00A82429 /* gtest-spi.h */, + B3981A3F29239F3F00A82429 /* internal */, + B3981A4D29239F3F00A82429 /* gtest-message.h */, + B3981A4E29239F3F00A82429 /* gtest-param-test.h */, + B3981A4F29239F3F00A82429 /* gtest-typed-test.h */, + B3981A5029239F3F00A82429 /* gtest_pred_impl.h */, + B3981A5129239F3F00A82429 /* gtest_prod.h */, + B3981A5229239F3F00A82429 /* gtest-test-part.h */, + B3981A5329239F3F00A82429 /* gtest.h */, + B3981A5429239F3F00A82429 /* gtest-printers.h */, + B3981A5529239F3F00A82429 /* src */, + ); + path = gtest; + sourceTree = ""; + }; + B3981A3F29239F3F00A82429 /* internal */ = { + isa = PBXGroup; + children = ( + B3981A4029239F3F00A82429 /* gtest-string.h */, + B3981A4129239F3F00A82429 /* gtest-death-test-internal.h */, + B3981A4229239F3F00A82429 /* gtest-port.h */, + B3981A4329239F3F00A82429 /* gtest-port-arch.h */, + B3981A4429239F3F00A82429 /* gtest-internal.h */, + B3981A4529239F3F00A82429 /* gtest-param-util.h */, + B3981A4629239F3F00A82429 /* gtest-type-util.h */, + B3981A4729239F3F00A82429 /* gtest-filepath.h */, + B3981A4829239F3F00A82429 /* custom */, + ); + path = internal; + sourceTree = ""; + }; + B3981A4829239F3F00A82429 /* custom */ = { + isa = PBXGroup; + children = ( + B3981A4929239F3F00A82429 /* gtest-port.h */, + B3981A4A29239F3F00A82429 /* README.md */, + B3981A4B29239F3F00A82429 /* gtest.h */, + B3981A4C29239F3F00A82429 /* gtest-printers.h */, + ); + path = custom; + sourceTree = ""; + }; + B3981A5529239F3F00A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981A5629239F3F00A82429 /* gtest-test-part.cc */, + B3981A5729239F3F00A82429 /* gtest.cc */, + B3981A5829239F3F00A82429 /* gtest_main.cc */, + B3981A5929239F3F00A82429 /* gtest-internal-inl.h */, + B3981A5A29239F3F00A82429 /* gtest-death-test.cc */, + B3981A5B29239F3F00A82429 /* gtest-port.cc */, + B3981A5C29239F3F00A82429 /* gtest-printers.cc */, + B3981A5D29239F3F00A82429 /* gtest-typed-test.cc */, + B3981A5E29239F3F00A82429 /* gtest-all.cc */, + B3981A5F29239F3F00A82429 /* gtest-filepath.cc */, + B3981A6029239F3F00A82429 /* gtest-matchers.cc */, + ); + path = src; + sourceTree = ""; + }; + B3981A6129239F3F00A82429 /* SDL */ = { + isa = PBXGroup; + children = ( + B3981A6229239F3F00A82429 /* WhatsNew.txt */, + B3981A6329239F3F00A82429 /* Xcode */, + B3981A7A29239F3F00A82429 /* COPYING.txt */, + B3981A7B29239F3F00A82429 /* android-project */, + B3981AAD29239F4000A82429 /* VisualC-WinRT */, + B3981AD129239F4000A82429 /* VisualC.html */, + B3981AD229239F4000A82429 /* configure.ac */, + B3981AD329239F4000A82429 /* Android.mk */, + B3981AD429239F4000A82429 /* wayland-protocols */, + B3981ADD29239F4000A82429 /* CMakeLists.txt */, + B3981ADE29239F4000A82429 /* TODO.txt */, + B3981ADF29239F4000A82429 /* test */, + B3981B8D29239F4000A82429 /* debian */, + B3981B9B29239F4000A82429 /* cmake */, + B3981B9E29239F4000A82429 /* sdl2-config.cmake.in */, + B3981B9F29239F4000A82429 /* configure */, + B3981BA029239F4000A82429 /* cmake_uninstall.cmake.in */, + B3981BA129239F4000A82429 /* README-SDL.txt */, + B3981BA229239F4000A82429 /* .hgignore */, + B3981BA329239F4000A82429 /* acinclude */, + B3981BB029239F4000A82429 /* include */, + B3981C0A29239F4000A82429 /* VisualC */, + B3981C4829239F4000A82429 /* sdl2-config.in */, + B3981C4929239F4000A82429 /* Makefile.pandora */, + B3981C4A29239F4000A82429 /* sdl2.pc.in */, + B3981C4B29239F4000A82429 /* INSTALL.txt */, + B3981C4C29239F4000A82429 /* BUGS.txt */, + B3981C4D29239F4000A82429 /* docs */, + B3981C6529239F4000A82429 /* CREDITS.txt */, + B3981C6629239F4000A82429 /* Makefile.os2 */, + B3981C6729239F4000A82429 /* Makefile.minimal */, + B3981C6829239F4000A82429 /* SDL2.spec.in */, + B3981C6929239F4000A82429 /* README.txt */, + B3981C6A29239F4000A82429 /* android-project-ant */, + B3981C9129239F4000A82429 /* SDL2Config.cmake */, + B3981C9229239F4000A82429 /* Makefile.in */, + B3981C9329239F4000A82429 /* sdl2-config-version.cmake.in */, + B3981C9429239F4000A82429 /* Makefile.wiz */, + B3981C9529239F4000A82429 /* sdl2.m4 */, + B3981C9629239F4000A82429 /* build-scripts */, + B3981CAE29239F4000A82429 /* visualtest */, + B3981CF929239F4100A82429 /* Xcode-iOS */, + B3981D3229239F4100A82429 /* autogen.sh */, + B3981D3329239F4100A82429 /* src */, + B398217529239F4300A82429 /* Makefile.psp */, + ); + path = SDL; + sourceTree = ""; + }; + B3981A6329239F3F00A82429 /* Xcode */ = { + isa = PBXGroup; + children = ( + B3981A6429239F3F00A82429 /* SDLTest */, + B3981A6A29239F3F00A82429 /* XcodeDocSet */, + B3981A6C29239F3F00A82429 /* SDL */, + ); + path = Xcode; + sourceTree = ""; + }; + B3981A6429239F3F00A82429 /* SDLTest */ = { + isa = PBXGroup; + children = ( + B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */, + B3981A6929239F3F00A82429 /* TestDropFile-Info.plist */, + ); + path = SDLTest; + sourceTree = ""; + }; + B3981A6629239F3F00A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B398311F29239F4B00A82429 /* libSDL_test.a */, + B398312129239F4B00A82429 /* checkkeys */, + B398312329239F4B00A82429 /* controllermap */, + B398312529239F4B00A82429 /* loopwave */, + B398312729239F4B00A82429 /* testatomic */, + B398312929239F4B00A82429 /* testaudioinfo */, + B398312B29239F4B00A82429 /* testdraw2 */, + B398312D29239F4B00A82429 /* testdrawchessboard */, + B398312F29239F4B00A82429 /* testdropfile.app */, + B398313129239F4B00A82429 /* testerror */, + B398313329239F4B00A82429 /* testfile */, + B398313529239F4B00A82429 /* testfilesystem */, + B398313729239F4B00A82429 /* testgamecontroller */, + B398313929239F4B00A82429 /* testgesture */, + B398313B29239F4B00A82429 /* testgl2 */, + B398313D29239F4B00A82429 /* testhaptic */, + B398313F29239F4B00A82429 /* testhotplug */, + B398314129239F4B00A82429 /* testiconv */, + B398314329239F4B00A82429 /* testime */, + B398314529239F4B00A82429 /* testintersections */, + B398314729239F4B00A82429 /* testjoystick */, + B398314929239F4B00A82429 /* testkeys */, + B398314B29239F4B00A82429 /* testloadso */, + B398314D29239F4B00A82429 /* testlock */, + B398314F29239F4B00A82429 /* testmessage */, + B398315129239F4B00A82429 /* testmultiaudio */, + B398315329239F4B00A82429 /* testnative */, + B398315529239F4B00A82429 /* testoverlay2 */, + B398315729239F4B00A82429 /* testplatform */, + B398315929239F4B00A82429 /* testpower */, + B398315B29239F4B00A82429 /* testrelative */, + B398315D29239F4B00A82429 /* testrendercopyex */, + B398315F29239F4B00A82429 /* testrendertarget */, + B398316129239F4B00A82429 /* testresample */, + B398316329239F4B00A82429 /* testrumble */, + B398316529239F4B00A82429 /* testscale */, + B398316729239F4B00A82429 /* testsem */, + B398316929239F4B00A82429 /* testshader */, + B398316B29239F4B00A82429 /* testshape */, + B398316D29239F4B00A82429 /* testsprite2 */, + B398316F29239F4B00A82429 /* testspriteminimal */, + B398317129239F4B00A82429 /* teststreaming */, + B398317329239F4B00A82429 /* testthread */, + B398317529239F4B00A82429 /* testtimer */, + B398317729239F4B00A82429 /* testversion */, + B398317929239F4B00A82429 /* testwm2 */, + B398317B29239F4B00A82429 /* torturethread */, + ); + name = Products; + sourceTree = ""; + }; + B3981A6A29239F3F00A82429 /* XcodeDocSet */ = { + isa = PBXGroup; + children = ( + B3981A6B29239F3F00A82429 /* Doxyfile */, + ); + path = XcodeDocSet; + sourceTree = ""; + }; + B3981A6C29239F3F00A82429 /* SDL */ = { + isa = PBXGroup; + children = ( + B3981A6D29239F3F00A82429 /* SDL.xcodeproj */, + B3981A7029239F3F00A82429 /* pkg-support */, + B3981A7729239F3F00A82429 /* hidapi */, + B3981A7929239F3F00A82429 /* Info-Framework.plist */, + ); + path = SDL; + sourceTree = ""; + }; + B3981A6E29239F3F00A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B39830CF29239F4B00A82429 /* SDL2.framework */, + B39830D129239F4B00A82429 /* SDL2.framework */, + B39830D329239F4B00A82429 /* SDL2.framework */, + B39830D529239F4B00A82429 /* libSDL2.a */, + B39830D729239F4B00A82429 /* libSDL2.a */, + B39830D929239F4B00A82429 /* libSDL2.a */, + B39830DB29239F4B00A82429 /* libSDL2.dylib */, + B39830DD29239F4B00A82429 /* libSDL2.dylib */, + B39830DF29239F4B00A82429 /* libSDL2.dylib */, + B39830E129239F4B00A82429 /* SDL2 */, + B39830E329239F4B00A82429 /* hidapi.framework */, + B39830E529239F4B00A82429 /* hidapi.framework */, + B39830E729239F4B00A82429 /* hidapi.framework */, + ); + name = Products; + sourceTree = ""; + }; + B3981A7029239F3F00A82429 /* pkg-support */ = { + isa = PBXGroup; + children = ( + B3981A7129239F3F00A82429 /* resources */, + B3981A7529239F3F00A82429 /* SDL.info */, + B3981A7629239F3F00A82429 /* sdl_logo.pdf */, + ); + path = "pkg-support"; + sourceTree = ""; + }; + B3981A7129239F3F00A82429 /* resources */ = { + isa = PBXGroup; + children = ( + B3981A7229239F3F00A82429 /* ReadMe.txt */, + B3981A7329239F3F00A82429 /* SDL_DS_Store */, + B3981A7429239F3F00A82429 /* License.txt */, + ); + path = resources; + sourceTree = ""; + }; + B3981A7729239F3F00A82429 /* hidapi */ = { + isa = PBXGroup; + children = ( + B3981A7829239F3F00A82429 /* Info.plist */, + ); + path = hidapi; + sourceTree = ""; + }; + B3981A7B29239F3F00A82429 /* android-project */ = { + isa = PBXGroup; + children = ( + B3981A7C29239F3F00A82429 /* app */, + B3981AA429239F4000A82429 /* gradle */, + B3981AA829239F4000A82429 /* gradlew */, + B3981AA929239F4000A82429 /* build.gradle */, + B3981AAA29239F4000A82429 /* gradle.properties */, + B3981AAB29239F4000A82429 /* gradlew.bat */, + B3981AAC29239F4000A82429 /* settings.gradle */, + ); + path = "android-project"; + sourceTree = ""; + }; + B3981A7C29239F3F00A82429 /* app */ = { + isa = PBXGroup; + children = ( + B3981A7D29239F3F00A82429 /* proguard-rules.pro */, + B3981A7E29239F3F00A82429 /* build.gradle */, + B3981A7F29239F3F00A82429 /* jni */, + B3981A8629239F3F00A82429 /* src */, + ); + path = app; + sourceTree = ""; + }; + B3981A7F29239F3F00A82429 /* jni */ = { + isa = PBXGroup; + children = ( + B3981A8029239F3F00A82429 /* Android.mk */, + B3981A8129239F3F00A82429 /* CMakeLists.txt */, + B3981A8229239F3F00A82429 /* Application.mk */, + B3981A8329239F3F00A82429 /* src */, + ); + path = jni; + sourceTree = ""; + }; + B3981A8329239F3F00A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981A8429239F3F00A82429 /* Android.mk */, + B3981A8529239F3F00A82429 /* CMakeLists.txt */, + ); + path = src; + sourceTree = ""; + }; + B3981A8629239F3F00A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981A8729239F3F00A82429 /* main */, + ); + path = src; + sourceTree = ""; + }; + B3981A8729239F3F00A82429 /* main */ = { + isa = PBXGroup; + children = ( + B3981A8829239F3F00A82429 /* res */, + B3981A9729239F4000A82429 /* AndroidManifest.xml */, + B3981A9829239F4000A82429 /* java */, + ); + path = main; + sourceTree = ""; + }; + B3981A8829239F3F00A82429 /* res */ = { + isa = PBXGroup; + children = ( + B3981A8929239F3F00A82429 /* mipmap-mdpi */, + B3981A8B29239F3F00A82429 /* mipmap-hdpi */, + B3981A8D29239F3F00A82429 /* mipmap-xxxhdpi */, + B3981A8F29239F3F00A82429 /* mipmap-xxhdpi */, + B3981A9129239F3F00A82429 /* values */, + B3981A9529239F3F00A82429 /* mipmap-xhdpi */, + ); + path = res; + sourceTree = ""; + }; + B3981A8929239F3F00A82429 /* mipmap-mdpi */ = { + isa = PBXGroup; + children = ( + B3981A8A29239F3F00A82429 /* ic_launcher.png */, + ); + path = "mipmap-mdpi"; + sourceTree = ""; + }; + B3981A8B29239F3F00A82429 /* mipmap-hdpi */ = { + isa = PBXGroup; + children = ( + B3981A8C29239F3F00A82429 /* ic_launcher.png */, + ); + path = "mipmap-hdpi"; + sourceTree = ""; + }; + B3981A8D29239F3F00A82429 /* mipmap-xxxhdpi */ = { + isa = PBXGroup; + children = ( + B3981A8E29239F3F00A82429 /* ic_launcher.png */, + ); + path = "mipmap-xxxhdpi"; + sourceTree = ""; + }; + B3981A8F29239F3F00A82429 /* mipmap-xxhdpi */ = { + isa = PBXGroup; + children = ( + B3981A9029239F3F00A82429 /* ic_launcher.png */, + ); + path = "mipmap-xxhdpi"; + sourceTree = ""; + }; + B3981A9129239F3F00A82429 /* values */ = { + isa = PBXGroup; + children = ( + B3981A9229239F3F00A82429 /* colors.xml */, + B3981A9329239F3F00A82429 /* styles.xml */, + B3981A9429239F3F00A82429 /* strings.xml */, + ); + path = values; + sourceTree = ""; + }; + B3981A9529239F3F00A82429 /* mipmap-xhdpi */ = { + isa = PBXGroup; + children = ( + B3981A9629239F4000A82429 /* ic_launcher.png */, + ); + path = "mipmap-xhdpi"; + sourceTree = ""; + }; + B3981A9829239F4000A82429 /* java */ = { + isa = PBXGroup; + children = ( + B3981A9929239F4000A82429 /* org */, + ); + path = java; + sourceTree = ""; + }; + B3981A9929239F4000A82429 /* org */ = { + isa = PBXGroup; + children = ( + B3981A9A29239F4000A82429 /* libsdl */, + ); + path = org; + sourceTree = ""; + }; + B3981A9A29239F4000A82429 /* libsdl */ = { + isa = PBXGroup; + children = ( + B3981A9B29239F4000A82429 /* app */, + ); + path = libsdl; + sourceTree = ""; + }; + B3981A9B29239F4000A82429 /* app */ = { + isa = PBXGroup; + children = ( + B3981A9C29239F4000A82429 /* SDLAudioManager.java */, + B3981A9D29239F4000A82429 /* SDLControllerManager.java */, + B3981A9E29239F4000A82429 /* HIDDevice.java */, + B3981A9F29239F4000A82429 /* HIDDeviceBLESteamController.java */, + B3981AA029239F4000A82429 /* HIDDeviceUSB.java */, + B3981AA129239F4000A82429 /* SDL.java */, + B3981AA229239F4000A82429 /* SDLActivity.java */, + B3981AA329239F4000A82429 /* HIDDeviceManager.java */, + ); + path = app; + sourceTree = ""; + }; + B3981AA429239F4000A82429 /* gradle */ = { + isa = PBXGroup; + children = ( + B3981AA529239F4000A82429 /* wrapper */, + ); + path = gradle; + sourceTree = ""; + }; + B3981AA529239F4000A82429 /* wrapper */ = { + isa = PBXGroup; + children = ( + B3981AA629239F4000A82429 /* gradle-wrapper.jar */, + B3981AA729239F4000A82429 /* gradle-wrapper.properties */, + ); + path = wrapper; + sourceTree = ""; + }; + B3981AAD29239F4000A82429 /* VisualC-WinRT */ = { + isa = PBXGroup; + children = ( + B3981AAE29239F4000A82429 /* SDL2-WinRT.targets */, + B3981AAF29239F4000A82429 /* SDL2-WinRT.nuspec */, + B3981AB029239F4000A82429 /* tests */, + B3981AC329239F4000A82429 /* UWP_VS2015 */, + B3981AC729239F4000A82429 /* SDL2main-WinRT-NonXAML.targets */, + B3981AC829239F4000A82429 /* SDL2main-WinRT-NonXAML.nuspec */, + B3981AC929239F4000A82429 /* WinRT81_VS2013 */, + B3981ACD29239F4000A82429 /* WinPhone81_VS2013 */, + ); + path = "VisualC-WinRT"; + sourceTree = ""; + }; + B3981AB029239F4000A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B3981AB129239F4000A82429 /* loopwave */, + B3981ABA29239F4000A82429 /* testthread */, + ); + path = tests; + sourceTree = ""; + }; + B3981AB129239F4000A82429 /* loopwave */ = { + isa = PBXGroup; + children = ( + B3981AB229239F4000A82429 /* Package.appxmanifest */, + B3981AB329239F4000A82429 /* loopwave_VS2012_TemporaryKey.pfx */, + B3981AB429239F4000A82429 /* loopwave_VS2012.vcxproj */, + B3981AB529239F4000A82429 /* Assets */, + ); + path = loopwave; + sourceTree = ""; + }; + B3981AB529239F4000A82429 /* Assets */ = { + isa = PBXGroup; + children = ( + B3981AB629239F4000A82429 /* SplashScreen.png */, + B3981AB729239F4000A82429 /* StoreLogo.png */, + B3981AB829239F4000A82429 /* Logo.png */, + B3981AB929239F4000A82429 /* SmallLogo.png */, + ); + path = Assets; + sourceTree = ""; + }; + B3981ABA29239F4000A82429 /* testthread */ = { + isa = PBXGroup; + children = ( + B3981ABB29239F4000A82429 /* Package.appxmanifest */, + B3981ABC29239F4000A82429 /* testthread_VS2012_TemporaryKey.pfx */, + B3981ABD29239F4000A82429 /* Assets */, + B3981AC229239F4000A82429 /* testthread_VS2012.vcxproj */, + ); + path = testthread; + sourceTree = ""; + }; + B3981ABD29239F4000A82429 /* Assets */ = { + isa = PBXGroup; + children = ( + B3981ABE29239F4000A82429 /* SplashScreen.png */, + B3981ABF29239F4000A82429 /* StoreLogo.png */, + B3981AC029239F4000A82429 /* Logo.png */, + B3981AC129239F4000A82429 /* SmallLogo.png */, + ); + path = Assets; + sourceTree = ""; + }; + B3981AC329239F4000A82429 /* UWP_VS2015 */ = { + isa = PBXGroup; + children = ( + B3981AC429239F4000A82429 /* SDL-UWP.sln */, + B3981AC529239F4000A82429 /* SDL-UWP.vcxproj.filters */, + B3981AC629239F4000A82429 /* SDL-UWP.vcxproj */, + ); + path = UWP_VS2015; + sourceTree = ""; + }; + B3981AC929239F4000A82429 /* WinRT81_VS2013 */ = { + isa = PBXGroup; + children = ( + B3981ACA29239F4000A82429 /* SDL-WinRT81.sln */, + B3981ACB29239F4000A82429 /* SDL-WinRT81.vcxproj */, + B3981ACC29239F4000A82429 /* SDL-WinRT81.vcxproj.filters */, + ); + path = WinRT81_VS2013; + sourceTree = ""; + }; + B3981ACD29239F4000A82429 /* WinPhone81_VS2013 */ = { + isa = PBXGroup; + children = ( + B3981ACE29239F4000A82429 /* SDL-WinPhone81.vcxproj.filters */, + B3981ACF29239F4000A82429 /* SDL-WinPhone81.sln */, + B3981AD029239F4000A82429 /* SDL-WinPhone81.vcxproj */, + ); + path = WinPhone81_VS2013; + sourceTree = ""; + }; + B3981AD429239F4000A82429 /* wayland-protocols */ = { + isa = PBXGroup; + children = ( + B3981AD529239F4000A82429 /* xdg-decoration-unstable-v1.xml */, + B3981AD629239F4000A82429 /* xdg-shell.xml */, + B3981AD729239F4000A82429 /* wayland.xml */, + B3981AD829239F4000A82429 /* keyboard-shortcuts-inhibit-unstable-v1.xml */, + B3981AD929239F4000A82429 /* xdg-shell-unstable-v6.xml */, + B3981ADA29239F4000A82429 /* org-kde-kwin-server-decoration-manager.xml */, + B3981ADB29239F4000A82429 /* relative-pointer-unstable-v1.xml */, + B3981ADC29239F4000A82429 /* pointer-constraints-unstable-v1.xml */, + ); + path = "wayland-protocols"; + sourceTree = ""; + }; + B3981ADF29239F4000A82429 /* test */ = { + isa = PBXGroup; + children = ( + B3981AE029239F4000A82429 /* testscale.c */, + B3981AE129239F4000A82429 /* testpower.c */, + B3981AE229239F4000A82429 /* testhaptic.c */, + B3981AE329239F4000A82429 /* testhotplug.c */, + B3981AE429239F4000A82429 /* testautomation_rwops.c */, + B3981AE529239F4000A82429 /* acinclude.m4 */, + B3981AE629239F4000A82429 /* testyuv_cvt.c */, + B3981AE729239F4000A82429 /* loopwavequeue.c */, + B3981AE829239F4000A82429 /* testplatform.c */, + B3981AE929239F4000A82429 /* testrelative.c */, + B3981AEA29239F4000A82429 /* testsem.c */, + B3981AEB29239F4000A82429 /* testerror.c */, + B3981AEC29239F4000A82429 /* testrendercopyex.c */, + B3981AED29239F4000A82429 /* testmessage.c */, + B3981AEE29239F4000A82429 /* testautomation_video.c */, + B3981AEF29239F4000A82429 /* sample.bmp */, + B3981AF029239F4000A82429 /* testautomation_syswm.c */, + B3981AF129239F4000A82429 /* configure.ac */, + B3981AF229239F4000A82429 /* testgles.c */, + B3981AF329239F4000A82429 /* testaudiohotplug.c */, + B3981AF429239F4000A82429 /* CMakeLists.txt */, + B3981AF529239F4000A82429 /* testautomation_timer.c */, + B3981AF629239F4000A82429 /* controllermap.c */, + B3981AF729239F4000A82429 /* testautomation_events.c */, + B3981AF829239F4000A82429 /* testautomation_mouse.c */, + B3981AF929239F4000A82429 /* configure */, + B3981AFA29239F4000A82429 /* testdropfile.c */, + B3981AFB29239F4000A82429 /* testyuv.c */, + B3981AFC29239F4000A82429 /* testautomation_hints.c */, + B3981AFD29239F4000A82429 /* testgles2_sdf_img_normal.bmp */, + B3981AFE29239F4000A82429 /* testgamecontroller.c */, + B3981AFF29239F4000A82429 /* testautomation_clipboard.c */, + B3981B0029239F4000A82429 /* loopwave.c */, + B3981B0129239F4000A82429 /* testgl2.c */, + B3981B0229239F4000A82429 /* testautomation_rect.c */, + B3981B0329239F4000A82429 /* testmultiaudio.c */, + B3981B0429239F4000A82429 /* testvulkan.c */, + B3981B0529239F4000A82429 /* button.bmp */, + B3981B0629239F4000A82429 /* testaudiocapture.c */, + B3981B0729239F4000A82429 /* testnativeos2.c */, + B3981B0829239F4000A82429 /* testintersections.c */, + B3981B0929239F4000A82429 /* axis.bmp */, + B3981B0A29239F4000A82429 /* testwm2.c */, + B3981B0B29239F4000A82429 /* testver.c */, + B3981B0C29239F4000A82429 /* testsensor.c */, + B3981B0D29239F4000A82429 /* testshape.c */, + B3981B0E29239F4000A82429 /* shapes */, + B3981B3F29239F4000A82429 /* testshader.c */, + B3981B4029239F4000A82429 /* testdisplayinfo.c */, + B3981B4129239F4000A82429 /* utf8.txt */, + B3981B4229239F4000A82429 /* checkkeys.c */, + B3981B4329239F4000A82429 /* picture.xbm */, + B3981B4429239F4000A82429 /* testlocale.c */, + B3981B4529239F4000A82429 /* testautomation_stdlib.c */, + B3981B4629239F4000A82429 /* testnative.c */, + B3981B4729239F4000A82429 /* README */, + B3981B4829239F4000A82429 /* testloadso.c */, + B3981B4929239F4000A82429 /* testfile.c */, + B3981B4A29239F4000A82429 /* Makefile.os2 */, + B3981B4B29239F4000A82429 /* testiconv.c */, + B3981B4C29239F4000A82429 /* testspriteminimal.c */, + B3981B4D29239F4000A82429 /* testautomation_surface.c */, + B3981B4E29239F4000A82429 /* testyuv_cvt.h */, + B3981B4F29239F4000A82429 /* COPYING */, + B3981B5029239F4000A82429 /* gcc-fat.sh */, + B3981B5129239F4000A82429 /* testautomation_render.c */, + B3981B5229239F4000A82429 /* testtimer.c */, + B3981B5329239F4000A82429 /* testurl.c */, + B3981B5429239F4000A82429 /* testnativecocoa.m */, + B3981B5529239F4000A82429 /* emscripten */, + B3981B5729239F4000A82429 /* testautomation.c */, + B3981B5829239F4000A82429 /* testautomation_suites.h */, + B3981B5929239F4000A82429 /* testgesture.c */, + B3981B5A29239F4000A82429 /* testlock.c */, + B3981B5B29239F4000A82429 /* torturethread.c */, + B3981B5C29239F4000A82429 /* testgles2_sdf_img_sdf.bmp */, + B3981B5D29239F4000A82429 /* testviewport.c */, + B3981B5E29239F4000A82429 /* nacl */, + B3981B6429239F4000A82429 /* testnativex11.c */, + B3981B6529239F4000A82429 /* testhittesting.c */, + B3981B6629239F4000A82429 /* testautomation_platform.c */, + B3981B6729239F4000A82429 /* relative_mode.markdown */, + B3981B6829239F4000A82429 /* testjoystick.c */, + B3981B6929239F4000A82429 /* testatomic.c */, + B3981B6A29239F4000A82429 /* teststreaming.c */, + B3981B6B29239F4000A82429 /* testrumble.c */, + B3981B6C29239F4000A82429 /* testautomation_sdltest.c */, + B3981B6D29239F4000A82429 /* testcustomcursor.c */, + B3981B6E29239F4000A82429 /* icon.bmp */, + B3981B6F29239F4000A82429 /* controllermap.bmp */, + B3981B7029239F4000A82429 /* testrendertarget.c */, + B3981B7129239F4000A82429 /* testaudioinfo.c */, + B3981B7229239F4000A82429 /* testyuv.bmp */, + B3981B7329239F4000A82429 /* testautomation_pixels.c */, + B3981B7429239F4000A82429 /* testnativew32.c */, + B3981B7529239F4000A82429 /* testkeys.c */, + B3981B7629239F4000A82429 /* testoffscreen.c */, + B3981B7729239F4000A82429 /* testautomation_main.c */, + B3981B7829239F4000A82429 /* testthread.c */, + B3981B7929239F4000A82429 /* controllermap_back.bmp */, + B3981B7A29239F4000A82429 /* testautomation_audio.c */, + B3981B7B29239F4000A82429 /* testevdev.c */, + B3981B7C29239F4000A82429 /* testautomation_keyboard.c */, + B3981B7D29239F4000A82429 /* Makefile.in */, + B3981B7E29239F4000A82429 /* testsprite2.c */, + B3981B7F29239F4000A82429 /* testnative.h */, + B3981B8029239F4000A82429 /* sample.wav */, + B3981B8129239F4000A82429 /* testfilesystem.c */, + B3981B8229239F4000A82429 /* testdraw2.c */, + B3981B8329239F4000A82429 /* testresample.c */, + B3981B8429239F4000A82429 /* testqsort.c */, + B3981B8529239F4000A82429 /* moose.dat */, + B3981B8629239F4000A82429 /* testgles2_sdf.c */, + B3981B8729239F4000A82429 /* testime.c */, + B3981B8829239F4000A82429 /* testbounds.c */, + B3981B8929239F4000A82429 /* autogen.sh */, + B3981B8A29239F4000A82429 /* testgles2.c */, + B3981B8B29239F4000A82429 /* testdrawchessboard.c */, + B3981B8C29239F4000A82429 /* testoverlay2.c */, + ); + path = test; + sourceTree = ""; + }; + B3981B0E29239F4000A82429 /* shapes */ = { + isa = PBXGroup; + children = ( + B3981B0F29239F4000A82429 /* trollface_24.bmp */, + B3981B1029239F4000A82429 /* p02_shape32alpha.bmp */, + B3981B1129239F4000A82429 /* p02_shape8.bmp */, + B3981B1229239F4000A82429 /* p06_shape24.bmp */, + B3981B1329239F4000A82429 /* p09_shape32alpha.bmp */, + B3981B1429239F4000A82429 /* p13_shape8.bmp */, + B3981B1529239F4000A82429 /* p13_shape24.bmp */, + B3981B1629239F4000A82429 /* p04_shape1.bmp */, + B3981B1729239F4000A82429 /* p16_shape24.bmp */, + B3981B1829239F4000A82429 /* p16_shape8.bmp */, + B3981B1929239F4000A82429 /* p07_shape8.bmp */, + B3981B1A29239F4000A82429 /* p03_shape24.bmp */, + B3981B1B29239F4000A82429 /* p06_shape32alpha.bmp */, + B3981B1C29239F4000A82429 /* p10_shape1.bmp */, + B3981B1D29239F4000A82429 /* trollface_32alpha.bmp */, + B3981B1E29239F4000A82429 /* p09_shape24.bmp */, + B3981B1F29239F4000A82429 /* p15_shape24.bmp */, + B3981B2029239F4000A82429 /* p11_shape8.bmp */, + B3981B2129239F4000A82429 /* p08_shape32alpha.bmp */, + B3981B2229239F4000A82429 /* p08_shape8.bmp */, + B3981B2329239F4000A82429 /* p13_shape32alpha.bmp */, + B3981B2429239F4000A82429 /* p10_shape24.bmp */, + B3981B2529239F4000A82429 /* p14_shape8.bmp */, + B3981B2629239F4000A82429 /* p05_shape8.bmp */, + B3981B2729239F4000A82429 /* p07_shape32alpha.bmp */, + B3981B2829239F4000A82429 /* p02_shape24.bmp */, + B3981B2929239F4000A82429 /* p06_shape8.bmp */, + B3981B2A29239F4000A82429 /* p04_shape32alpha.bmp */, + B3981B2B29239F4000A82429 /* p12_shape24.bmp */, + B3981B2C29239F4000A82429 /* p03_shape8.bmp */, + B3981B2D29239F4000A82429 /* p07_shape24.bmp */, + B3981B2E29239F4000A82429 /* p12_shape8.bmp */, + B3981B2F29239F4000A82429 /* p10_shape32alpha.bmp */, + B3981B3029239F4000A82429 /* p09_shape8.bmp */, + B3981B3129239F4000A82429 /* p04_shape24.bmp */, + B3981B3229239F4000A82429 /* p15_shape8.bmp */, + B3981B3329239F4000A82429 /* p15_shape32alpha.bmp */, + B3981B3429239F4000A82429 /* p04_shape8.bmp */, + B3981B3529239F4000A82429 /* p01_shape32alpha.bmp */, + B3981B3629239F4000A82429 /* p11_shape24.bmp */, + B3981B3729239F4000A82429 /* p01_shape8.bmp */, + B3981B3829239F4000A82429 /* p14_shape24.bmp */, + B3981B3929239F4000A82429 /* p16_shape1.bmp */, + B3981B3A29239F4000A82429 /* p08_shape24.bmp */, + B3981B3B29239F4000A82429 /* p06_shape1alpha.bmp */, + B3981B3C29239F4000A82429 /* p11_shape32alpha.bmp */, + B3981B3D29239F4000A82429 /* p10_shape8.bmp */, + B3981B3E29239F4000A82429 /* p01_shape24.bmp */, + ); + path = shapes; + sourceTree = ""; + }; + B3981B5529239F4000A82429 /* emscripten */ = { + isa = PBXGroup; + children = ( + B3981B5629239F4000A82429 /* joystick-pre.js */, + ); + path = emscripten; + sourceTree = ""; + }; + B3981B5E29239F4000A82429 /* nacl */ = { + isa = PBXGroup; + children = ( + B3981B5F29239F4000A82429 /* index.html */, + B3981B6029239F4000A82429 /* background.js */, + B3981B6129239F4000A82429 /* Makefile */, + B3981B6229239F4000A82429 /* manifest.json */, + B3981B6329239F4000A82429 /* common.js */, + ); + path = nacl; + sourceTree = ""; + }; + B3981B8D29239F4000A82429 /* debian */ = { + isa = PBXGroup; + children = ( + B3981B8E29239F4000A82429 /* compat */, + B3981B8F29239F4000A82429 /* changelog */, + B3981B9029239F4000A82429 /* sdl2-config.1 */, + B3981B9129239F4000A82429 /* source */, + B3981B9329239F4000A82429 /* docs */, + B3981B9429239F4000A82429 /* rules */, + B3981B9529239F4000A82429 /* watch */, + B3981B9629239F4000A82429 /* copyright */, + B3981B9729239F4000A82429 /* libsdl2-dev.install */, + B3981B9829239F4000A82429 /* libsdl2-dev.manpages */, + B3981B9929239F4000A82429 /* control */, + B3981B9A29239F4000A82429 /* libsdl2.install */, + ); + path = debian; + sourceTree = ""; + }; + B3981B9129239F4000A82429 /* source */ = { + isa = PBXGroup; + children = ( + B3981B9229239F4000A82429 /* format */, + ); + path = source; + sourceTree = ""; + }; + B3981B9B29239F4000A82429 /* cmake */ = { + isa = PBXGroup; + children = ( + B3981B9C29239F4000A82429 /* sdlchecks.cmake */, + B3981B9D29239F4000A82429 /* macros.cmake */, + ); + path = cmake; + sourceTree = ""; + }; + B3981BA329239F4000A82429 /* acinclude */ = { + isa = PBXGroup; + children = ( + B3981BA429239F4000A82429 /* ltversion.m4 */, + B3981BA529239F4000A82429 /* ax_gcc_x86_cpuid.m4 */, + B3981BA629239F4000A82429 /* esd.m4 */, + B3981BA729239F4000A82429 /* pkg.m4 */, + B3981BA829239F4000A82429 /* libtool.m4 */, + B3981BA929239F4000A82429 /* ltoptions.m4 */, + B3981BAA29239F4000A82429 /* ac_check_define.m4 */, + B3981BAB29239F4000A82429 /* alsa.m4 */, + B3981BAC29239F4000A82429 /* ltsugar.m4 */, + B3981BAD29239F4000A82429 /* ax_check_compiler_flags.m4 */, + B3981BAE29239F4000A82429 /* ax_gcc_archflag.m4 */, + B3981BAF29239F4000A82429 /* lt~obsolete.m4 */, + ); + path = acinclude; + sourceTree = ""; + }; + B3981BB029239F4000A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3981BB129239F4000A82429 /* SDL_misc.h */, + B3981BB229239F4000A82429 /* SDL_opengles2_gl2ext.h */, + B3981BB329239F4000A82429 /* SDL_test_random.h */, + B3981BB429239F4000A82429 /* SDL_power.h */, + B3981BB529239F4000A82429 /* SDL_revision.h */, + B3981BB629239F4000A82429 /* SDL_events.h */, + B3981BB729239F4000A82429 /* SDL_clipboard.h */, + B3981BB829239F4000A82429 /* SDL_haptic.h */, + B3981BB929239F4000A82429 /* SDL_test.h */, + B3981BBA29239F4000A82429 /* SDL_test_assert.h */, + B3981BBB29239F4000A82429 /* SDL_endian.h */, + B3981BBC29239F4000A82429 /* SDL_error.h */, + B3981BBD29239F4000A82429 /* begin_code.h */, + B3981BBE29239F4000A82429 /* SDL_types.h */, + B3981BBF29239F4000A82429 /* SDL_keycode.h */, + B3981BC029239F4000A82429 /* SDL_keyboard.h */, + B3981BC129239F4000A82429 /* SDL_config_psp.h */, + B3981BC229239F4000A82429 /* SDL_opengl_glext.h */, + B3981BC329239F4000A82429 /* SDL_config_pandora.h */, + B3981BC429239F4000A82429 /* SDL_test_crc32.h */, + B3981BC529239F4000A82429 /* SDL_test_font.h */, + B3981BC629239F4000A82429 /* SDL_test_log.h */, + B3981BC729239F4000A82429 /* SDL_egl.h */, + B3981BC829239F4000A82429 /* SDL_vulkan.h */, + B3981BC929239F4000A82429 /* SDL_test_memory.h */, + B3981BCA29239F4000A82429 /* SDL_main.h */, + B3981BCB29239F4000A82429 /* SDL_stdinc.h */, + B3981BCC29239F4000A82429 /* SDL_scancode.h */, + B3981BCD29239F4000A82429 /* SDL_quit.h */, + B3981BCE29239F4000A82429 /* SDL_config_android.h */, + B3981BCF29239F4000A82429 /* SDL_touch.h */, + B3981BD029239F4000A82429 /* SDL_opengles2.h */, + B3981BD129239F4000A82429 /* SDL_config_winrt.h */, + B3981BD229239F4000A82429 /* SDL_test_images.h */, + B3981BD329239F4000A82429 /* SDL_name.h */, + B3981BD429239F4000A82429 /* SDL_platform.h */, + B3981BD529239F4000A82429 /* SDL_shape.h */, + B3981BD629239F4000A82429 /* SDL_config_minimal.h */, + B3981BD729239F4000A82429 /* SDL_config.h.cmake */, + B3981BD829239F4000A82429 /* SDL_locale.h */, + B3981BD929239F4000A82429 /* SDL_loadso.h */, + B3981BDA29239F4000A82429 /* SDL_config_macosx.h */, + B3981BDB29239F4000A82429 /* SDL_test_common.h */, + B3981BDC29239F4000A82429 /* SDL_config.h */, + B3981BDD29239F4000A82429 /* SDL_audio.h */, + B3981BDE29239F4000A82429 /* SDL_sensor.h */, + B3981BDF29239F4000A82429 /* SDL_opengl.h */, + B3981BE029239F4000A82429 /* SDL_blendmode.h */, + B3981BE129239F4000A82429 /* SDL_gesture.h */, + B3981BE229239F4000A82429 /* SDL_test_fuzzer.h */, + B3981BE329239F4000A82429 /* SDL_config_iphoneos.h */, + B3981BE429239F4000A82429 /* SDL_opengles.h */, + B3981BE529239F4000A82429 /* SDL_system.h */, + B3981BE629239F4000A82429 /* SDL_hints.h */, + B3981BE729239F4000A82429 /* SDL_mouse.h */, + B3981BE829239F4000A82429 /* SDL_timer.h */, + B3981BE929239F4000A82429 /* SDL_surface.h */, + B3981BEA29239F4000A82429 /* SDL_atomic.h */, + B3981BEB29239F4000A82429 /* SDL_log.h */, + B3981BEC29239F4000A82429 /* SDL_rwops.h */, + B3981BED29239F4000A82429 /* SDL_render.h */, + B3981BEE29239F4000A82429 /* SDL_syswm.h */, + B3981BEF29239F4000A82429 /* SDL_bits.h */, + B3981BF029239F4000A82429 /* SDL_video.h */, + B3981BF129239F4000A82429 /* SDL_assert.h */, + B3981BF229239F4000A82429 /* SDL_version.h */, + B3981BF329239F4000A82429 /* SDL_gamecontroller.h */, + B3981BF429239F4000A82429 /* SDL_config_windows.h */, + B3981BF529239F4000A82429 /* SDL_copying.h */, + B3981BF629239F4000A82429 /* SDL_thread.h */, + B3981BF729239F4000A82429 /* SDL_test_harness.h */, + B3981BF829239F4000A82429 /* SDL_rect.h */, + B3981BF929239F4000A82429 /* SDL_metal.h */, + B3981BFA29239F4000A82429 /* SDL_mutex.h */, + B3981BFB29239F4000A82429 /* close_code.h */, + B3981BFC29239F4000A82429 /* SDL_config.h.in */, + B3981BFD29239F4000A82429 /* SDL_config_wiz.h */, + B3981BFE29239F4000A82429 /* SDL_joystick.h */, + B3981BFF29239F4000A82429 /* SDL.h */, + B3981C0029239F4000A82429 /* SDL_filesystem.h */, + B3981C0129239F4000A82429 /* SDL_messagebox.h */, + B3981C0229239F4000A82429 /* SDL_opengles2_gl2platform.h */, + B3981C0329239F4000A82429 /* SDL_opengles2_khrplatform.h */, + B3981C0429239F4000A82429 /* SDL_test_md5.h */, + B3981C0529239F4000A82429 /* SDL_config_os2.h */, + B3981C0629239F4000A82429 /* SDL_pixels.h */, + B3981C0729239F4000A82429 /* SDL_cpuinfo.h */, + B3981C0829239F4000A82429 /* SDL_test_compare.h */, + B3981C0929239F4000A82429 /* SDL_opengles2_gl2.h */, + ); + path = include; + sourceTree = ""; + }; + B3981C0A29239F4000A82429 /* VisualC */ = { + isa = PBXGroup; + children = ( + B3981C0B29239F4000A82429 /* SDLtest */, + B3981C0D29239F4000A82429 /* tests */, + B3981C3C29239F4000A82429 /* SDL */, + B3981C3F29239F4000A82429 /* clean.sh */, + B3981C4029239F4000A82429 /* SDLmain */, + B3981C4229239F4000A82429 /* SDL.sln */, + B3981C4329239F4000A82429 /* visualtest */, + ); + path = VisualC; + sourceTree = ""; + }; + B3981C0B29239F4000A82429 /* SDLtest */ = { + isa = PBXGroup; + children = ( + B3981C0C29239F4000A82429 /* SDLtest.vcxproj */, + ); + path = SDLtest; + sourceTree = ""; + }; + B3981C0D29239F4000A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B3981C0E29239F4000A82429 /* testoverlay2 */, + B3981C1029239F4000A82429 /* testjoystick */, + B3981C1229239F4000A82429 /* testgamecontroller */, + B3981C1429239F4000A82429 /* testgesture */, + B3981C1629239F4000A82429 /* testdraw2 */, + B3981C1829239F4000A82429 /* testatomic */, + B3981C1A29239F4000A82429 /* loopwave */, + B3981C1C29239F4000A82429 /* testshape */, + B3981C1E29239F4000A82429 /* testplatform */, + B3981C2029239F4000A82429 /* testgles2 */, + B3981C2229239F4000A82429 /* testyuv */, + B3981C2429239F4000A82429 /* checkkeys */, + B3981C2629239F4000A82429 /* testpower */, + B3981C2829239F4000A82429 /* testrendertarget */, + B3981C2A29239F4000A82429 /* testscale */, + B3981C2C29239F4000A82429 /* testautomation */, + B3981C2E29239F4000A82429 /* testsprite2 */, + B3981C3029239F4000A82429 /* controllermap */, + B3981C3229239F4000A82429 /* testgl2 */, + B3981C3429239F4000A82429 /* testfile */, + B3981C3629239F4000A82429 /* testsensor */, + B3981C3829239F4000A82429 /* testvulkan */, + B3981C3A29239F4000A82429 /* testrumble */, + ); + path = tests; + sourceTree = ""; + }; + B3981C0E29239F4000A82429 /* testoverlay2 */ = { + isa = PBXGroup; + children = ( + B3981C0F29239F4000A82429 /* testoverlay2.vcxproj */, + ); + path = testoverlay2; + sourceTree = ""; + }; + B3981C1029239F4000A82429 /* testjoystick */ = { + isa = PBXGroup; + children = ( + B3981C1129239F4000A82429 /* testjoystick.vcxproj */, + ); + path = testjoystick; + sourceTree = ""; + }; + B3981C1229239F4000A82429 /* testgamecontroller */ = { + isa = PBXGroup; + children = ( + B3981C1329239F4000A82429 /* testgamecontroller.vcxproj */, + ); + path = testgamecontroller; + sourceTree = ""; + }; + B3981C1429239F4000A82429 /* testgesture */ = { + isa = PBXGroup; + children = ( + B3981C1529239F4000A82429 /* testgesture.vcxproj */, + ); + path = testgesture; + sourceTree = ""; + }; + B3981C1629239F4000A82429 /* testdraw2 */ = { + isa = PBXGroup; + children = ( + B3981C1729239F4000A82429 /* testdraw2.vcxproj */, + ); + path = testdraw2; + sourceTree = ""; + }; + B3981C1829239F4000A82429 /* testatomic */ = { + isa = PBXGroup; + children = ( + B3981C1929239F4000A82429 /* testatomic.vcxproj */, + ); + path = testatomic; + sourceTree = ""; + }; + B3981C1A29239F4000A82429 /* loopwave */ = { + isa = PBXGroup; + children = ( + B3981C1B29239F4000A82429 /* loopwave.vcxproj */, + ); + path = loopwave; + sourceTree = ""; + }; + B3981C1C29239F4000A82429 /* testshape */ = { + isa = PBXGroup; + children = ( + B3981C1D29239F4000A82429 /* testshape.vcxproj */, + ); + path = testshape; + sourceTree = ""; + }; + B3981C1E29239F4000A82429 /* testplatform */ = { + isa = PBXGroup; + children = ( + B3981C1F29239F4000A82429 /* testplatform.vcxproj */, + ); + path = testplatform; + sourceTree = ""; + }; + B3981C2029239F4000A82429 /* testgles2 */ = { + isa = PBXGroup; + children = ( + B3981C2129239F4000A82429 /* testgles2.vcxproj */, + ); + path = testgles2; + sourceTree = ""; + }; + B3981C2229239F4000A82429 /* testyuv */ = { + isa = PBXGroup; + children = ( + B3981C2329239F4000A82429 /* testyuv.vcxproj */, + ); + path = testyuv; + sourceTree = ""; + }; + B3981C2429239F4000A82429 /* checkkeys */ = { + isa = PBXGroup; + children = ( + B3981C2529239F4000A82429 /* checkkeys.vcxproj */, + ); + path = checkkeys; + sourceTree = ""; + }; + B3981C2629239F4000A82429 /* testpower */ = { + isa = PBXGroup; + children = ( + B3981C2729239F4000A82429 /* testpower.vcxproj */, + ); + path = testpower; + sourceTree = ""; + }; + B3981C2829239F4000A82429 /* testrendertarget */ = { + isa = PBXGroup; + children = ( + B3981C2929239F4000A82429 /* testrendertarget.vcxproj */, + ); + path = testrendertarget; + sourceTree = ""; + }; + B3981C2A29239F4000A82429 /* testscale */ = { + isa = PBXGroup; + children = ( + B3981C2B29239F4000A82429 /* testscale.vcxproj */, + ); + path = testscale; + sourceTree = ""; + }; + B3981C2C29239F4000A82429 /* testautomation */ = { + isa = PBXGroup; + children = ( + B3981C2D29239F4000A82429 /* testautomation.vcxproj */, + ); + path = testautomation; + sourceTree = ""; + }; + B3981C2E29239F4000A82429 /* testsprite2 */ = { + isa = PBXGroup; + children = ( + B3981C2F29239F4000A82429 /* testsprite2.vcxproj */, + ); + path = testsprite2; + sourceTree = ""; + }; + B3981C3029239F4000A82429 /* controllermap */ = { + isa = PBXGroup; + children = ( + B3981C3129239F4000A82429 /* controllermap.vcxproj */, + ); + path = controllermap; + sourceTree = ""; + }; + B3981C3229239F4000A82429 /* testgl2 */ = { + isa = PBXGroup; + children = ( + B3981C3329239F4000A82429 /* testgl2.vcxproj */, + ); + path = testgl2; + sourceTree = ""; + }; + B3981C3429239F4000A82429 /* testfile */ = { + isa = PBXGroup; + children = ( + B3981C3529239F4000A82429 /* testfile.vcxproj */, + ); + path = testfile; + sourceTree = ""; + }; + B3981C3629239F4000A82429 /* testsensor */ = { + isa = PBXGroup; + children = ( + B3981C3729239F4000A82429 /* testsensor.vcxproj */, + ); + path = testsensor; + sourceTree = ""; + }; + B3981C3829239F4000A82429 /* testvulkan */ = { + isa = PBXGroup; + children = ( + B3981C3929239F4000A82429 /* testvulkan.vcxproj */, + ); + path = testvulkan; + sourceTree = ""; + }; + B3981C3A29239F4000A82429 /* testrumble */ = { + isa = PBXGroup; + children = ( + B3981C3B29239F4000A82429 /* testrumble.vcxproj */, + ); + path = testrumble; + sourceTree = ""; + }; + B3981C3C29239F4000A82429 /* SDL */ = { + isa = PBXGroup; + children = ( + B3981C3D29239F4000A82429 /* SDL.vcxproj */, + B3981C3E29239F4000A82429 /* SDL.vcxproj.filters */, + ); + path = SDL; + sourceTree = ""; + }; + B3981C4029239F4000A82429 /* SDLmain */ = { + isa = PBXGroup; + children = ( + B3981C4129239F4000A82429 /* SDLmain.vcxproj */, + ); + path = SDLmain; + sourceTree = ""; + }; + B3981C4329239F4000A82429 /* visualtest */ = { + isa = PBXGroup; + children = ( + B3981C4429239F4000A82429 /* unittest */, + B3981C4729239F4000A82429 /* visualtest_VS2012.vcxproj */, + ); + path = visualtest; + sourceTree = ""; + }; + B3981C4429239F4000A82429 /* unittest */ = { + isa = PBXGroup; + children = ( + B3981C4529239F4000A82429 /* testquit */, + ); + path = unittest; + sourceTree = ""; + }; + B3981C4529239F4000A82429 /* testquit */ = { + isa = PBXGroup; + children = ( + B3981C4629239F4000A82429 /* testquit_VS2012.vcxproj */, + ); + path = testquit; + sourceTree = ""; + }; + B3981C4D29239F4000A82429 /* docs */ = { + isa = PBXGroup; + children = ( + B3981C4E29239F4000A82429 /* README-raspberrypi.md */, + B3981C4F29239F4000A82429 /* README-gesture.md */, + B3981C5029239F4000A82429 /* README-macosx.md */, + B3981C5129239F4000A82429 /* README-platforms.md */, + B3981C5229239F4000A82429 /* README-ios.md */, + B3981C5329239F4000A82429 /* README-nacl.md */, + B3981C5429239F4000A82429 /* README-cmake.md */, + B3981C5529239F4000A82429 /* README-wince.md */, + B3981C5629239F4000A82429 /* README-psp.md */, + B3981C5729239F4000A82429 /* README-os2.md */, + B3981C5829239F4000A82429 /* README.md */, + B3981C5929239F4000A82429 /* README-touch.md */, + B3981C5A29239F4000A82429 /* README-android.md */, + B3981C5B29239F4000A82429 /* README-directfb.md */, + B3981C5C29239F4000A82429 /* README-hg.md */, + B3981C5D29239F4000A82429 /* README-emscripten.md */, + B3981C5E29239F4000A82429 /* README-pandora.md */, + B3981C5F29239F4000A82429 /* README-dynapi.md */, + B3981C6029239F4000A82429 /* doxyfile */, + B3981C6129239F4000A82429 /* README-porting.md */, + B3981C6229239F4000A82429 /* README-winrt.md */, + B3981C6329239F4000A82429 /* README-linux.md */, + B3981C6429239F4000A82429 /* README-windows.md */, + ); + path = docs; + sourceTree = ""; + }; + B3981C6A29239F4000A82429 /* android-project-ant */ = { + isa = PBXGroup; + children = ( + B3981C6B29239F4000A82429 /* ant.properties */, + B3981C6C29239F4000A82429 /* build.properties */, + B3981C6D29239F4000A82429 /* res */, + B3981C7A29239F4000A82429 /* build.xml */, + B3981C7B29239F4000A82429 /* AndroidManifest.xml */, + B3981C7C29239F4000A82429 /* project.properties */, + B3981C7D29239F4000A82429 /* proguard-project.txt */, + B3981C7E29239F4000A82429 /* default.properties */, + B3981C7F29239F4000A82429 /* jni */, + B3981C8529239F4000A82429 /* src */, + ); + path = "android-project-ant"; + sourceTree = ""; + }; + B3981C6D29239F4000A82429 /* res */ = { + isa = PBXGroup; + children = ( + B3981C6E29239F4000A82429 /* layout */, + B3981C7029239F4000A82429 /* values */, + B3981C7229239F4000A82429 /* drawable-xhdpi */, + B3981C7429239F4000A82429 /* drawable-xxhdpi */, + B3981C7629239F4000A82429 /* drawable-hdpi */, + B3981C7829239F4000A82429 /* drawable-mdpi */, + ); + path = res; + sourceTree = ""; + }; + B3981C6E29239F4000A82429 /* layout */ = { + isa = PBXGroup; + children = ( + B3981C6F29239F4000A82429 /* main.xml */, + ); + path = layout; + sourceTree = ""; + }; + B3981C7029239F4000A82429 /* values */ = { + isa = PBXGroup; + children = ( + B3981C7129239F4000A82429 /* strings.xml */, + ); + path = values; + sourceTree = ""; + }; + B3981C7229239F4000A82429 /* drawable-xhdpi */ = { + isa = PBXGroup; + children = ( + B3981C7329239F4000A82429 /* ic_launcher.png */, + ); + path = "drawable-xhdpi"; + sourceTree = ""; + }; + B3981C7429239F4000A82429 /* drawable-xxhdpi */ = { + isa = PBXGroup; + children = ( + B3981C7529239F4000A82429 /* ic_launcher.png */, + ); + path = "drawable-xxhdpi"; + sourceTree = ""; + }; + B3981C7629239F4000A82429 /* drawable-hdpi */ = { + isa = PBXGroup; + children = ( + B3981C7729239F4000A82429 /* ic_launcher.png */, + ); + path = "drawable-hdpi"; + sourceTree = ""; + }; + B3981C7829239F4000A82429 /* drawable-mdpi */ = { + isa = PBXGroup; + children = ( + B3981C7929239F4000A82429 /* ic_launcher.png */, + ); + path = "drawable-mdpi"; + sourceTree = ""; + }; + B3981C7F29239F4000A82429 /* jni */ = { + isa = PBXGroup; + children = ( + B3981C8029239F4000A82429 /* Android.mk */, + B3981C8129239F4000A82429 /* Application.mk */, + B3981C8229239F4000A82429 /* src */, + ); + path = jni; + sourceTree = ""; + }; + B3981C8229239F4000A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981C8329239F4000A82429 /* Android.mk */, + B3981C8429239F4000A82429 /* Android_static.mk */, + ); + path = src; + sourceTree = ""; + }; + B3981C8529239F4000A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981C8629239F4000A82429 /* org */, + ); + path = src; + sourceTree = ""; + }; + B3981C8629239F4000A82429 /* org */ = { + isa = PBXGroup; + children = ( + B3981C8729239F4000A82429 /* libsdl */, + ); + path = org; + sourceTree = ""; + }; + B3981C8729239F4000A82429 /* libsdl */ = { + isa = PBXGroup; + children = ( + B3981C8829239F4000A82429 /* app */, + ); + path = libsdl; + sourceTree = ""; + }; + B3981C8829239F4000A82429 /* app */ = { + isa = PBXGroup; + children = ( + B3981C8929239F4000A82429 /* SDLAudioManager.java */, + B3981C8A29239F4000A82429 /* SDLControllerManager.java */, + B3981C8B29239F4000A82429 /* HIDDevice.java */, + B3981C8C29239F4000A82429 /* HIDDeviceBLESteamController.java */, + B3981C8D29239F4000A82429 /* HIDDeviceUSB.java */, + B3981C8E29239F4000A82429 /* SDL.java */, + B3981C8F29239F4000A82429 /* SDLActivity.java */, + B3981C9029239F4000A82429 /* HIDDeviceManager.java */, + ); + path = app; + sourceTree = ""; + }; + B3981C9629239F4000A82429 /* build-scripts */ = { + isa = PBXGroup; + children = ( + B3981C9729239F4000A82429 /* os2-buildbot.sh */, + B3981C9829239F4000A82429 /* windows-buildbot-zipper.bat */, + B3981C9929239F4000A82429 /* install-sh */, + B3981C9A29239F4000A82429 /* ltmain.sh */, + B3981C9B29239F4000A82429 /* checker-buildbot.sh */, + B3981C9C29239F4000A82429 /* naclbuild.sh */, + B3981C9D29239F4000A82429 /* update-copyright.sh */, + B3981C9E29239F4000A82429 /* raspberrypi-buildbot.sh */, + B3981C9F29239F4000A82429 /* androidbuildlibs.sh */, + B3981CA029239F4000A82429 /* g++-fat.sh */, + B3981CA129239F4000A82429 /* winrtbuild.ps1 */, + B3981CA229239F4000A82429 /* config.guess */, + B3981CA329239F4000A82429 /* winrtbuild.bat */, + B3981CA429239F4000A82429 /* showrev.sh */, + B3981CA529239F4000A82429 /* androidbuild.sh */, + B3981CA629239F4000A82429 /* config.sub */, + B3981CA729239F4000A82429 /* gcc-fat.sh */, + B3981CA829239F4000A82429 /* updaterev.sh */, + B3981CA929239F4000A82429 /* emscripten-buildbot.sh */, + B3981CAA29239F4000A82429 /* strip_fPIC.sh */, + B3981CAB29239F4000A82429 /* iosbuild.sh */, + B3981CAC29239F4000A82429 /* mkinstalldirs */, + B3981CAD29239F4000A82429 /* nacl-buildbot.sh */, + ); + path = "build-scripts"; + sourceTree = ""; + }; + B3981CAE29239F4000A82429 /* visualtest */ = { + isa = PBXGroup; + children = ( + B3981CAF29239F4000A82429 /* COPYING.txt */, + B3981CB029239F4000A82429 /* acinclude.m4 */, + B3981CB129239F4100A82429 /* unittest */, + B3981CB629239F4100A82429 /* install-sh */, + B3981CB729239F4100A82429 /* testsprite2_sample.actions */, + B3981CB829239F4100A82429 /* config.h */, + B3981CB929239F4100A82429 /* configure */, + B3981CBA29239F4100A82429 /* include */, + B3981CC729239F4100A82429 /* testsprite2_sample.config */, + B3981CC829239F4100A82429 /* stamp-h1 */, + B3981CC929239F4100A82429 /* config.h.in */, + B3981CCA29239F4100A82429 /* launch_harness.cmd */, + B3981CCB29239F4100A82429 /* depcomp */, + B3981CCC29239F4100A82429 /* docs */, + B3981CCE29239F4100A82429 /* missing */, + B3981CCF29239F4100A82429 /* configure.in */, + B3981CD029239F4100A82429 /* compile */, + B3981CD129239F4100A82429 /* configs */, + B3981CE229239F4100A82429 /* launch_harness.sh */, + B3981CE329239F4100A82429 /* README.txt */, + B3981CE429239F4100A82429 /* testsprite2_sample.parameters */, + B3981CE529239F4100A82429 /* Makefile.in */, + B3981CE629239F4100A82429 /* autogen.sh */, + B3981CE729239F4100A82429 /* src */, + ); + path = visualtest; + sourceTree = ""; + }; + B3981CB129239F4100A82429 /* unittest */ = { + isa = PBXGroup; + children = ( + B3981CB229239F4100A82429 /* testquit.actions */, + B3981CB329239F4100A82429 /* testquit.config */, + B3981CB429239F4100A82429 /* testquit.parameters */, + B3981CB529239F4100A82429 /* testquit.c */, + ); + path = unittest; + sourceTree = ""; + }; + B3981CBA29239F4100A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3981CBB29239F4100A82429 /* SDL_visualtest_variators.h */, + B3981CBC29239F4100A82429 /* SDL_visualtest_action_configparser.h */, + B3981CBD29239F4100A82429 /* SDL_visualtest_screenshot.h */, + B3981CBE29239F4100A82429 /* SDL_visualtest_harness_argparser.h */, + B3981CBF29239F4100A82429 /* SDL_visualtest_rwhelper.h */, + B3981CC029239F4100A82429 /* SDL_visualtest_mischelper.h */, + B3981CC129239F4100A82429 /* SDL_visualtest_random_variator.h */, + B3981CC229239F4100A82429 /* SDL_visualtest_parsehelper.h */, + B3981CC329239F4100A82429 /* SDL_visualtest_exhaustive_variator.h */, + B3981CC429239F4100A82429 /* SDL_visualtest_process.h */, + B3981CC529239F4100A82429 /* SDL_visualtest_sut_configparser.h */, + B3981CC629239F4100A82429 /* SDL_visualtest_variator_common.h */, + ); + path = include; + sourceTree = ""; + }; + B3981CCC29239F4100A82429 /* docs */ = { + isa = PBXGroup; + children = ( + B3981CCD29239F4100A82429 /* Doxyfile */, + ); + path = docs; + sourceTree = ""; + }; + B3981CD129239F4100A82429 /* configs */ = { + isa = PBXGroup; + children = ( + B3981CD229239F4100A82429 /* testsprite2_geometry */, + B3981CD629239F4100A82429 /* testsprite2_crashtest */, + B3981CDA29239F4100A82429 /* testsprite2_blendmodes */, + B3981CDE29239F4100A82429 /* testsprite2_fullscreen */, + ); + path = configs; + sourceTree = ""; + }; + B3981CD229239F4100A82429 /* testsprite2_geometry */ = { + isa = PBXGroup; + children = ( + B3981CD329239F4100A82429 /* testsprite2_geometry.actions */, + B3981CD429239F4100A82429 /* testsprite2_geometry.config */, + B3981CD529239F4100A82429 /* testsprite2_geometry.parameters */, + ); + path = testsprite2_geometry; + sourceTree = ""; + }; + B3981CD629239F4100A82429 /* testsprite2_crashtest */ = { + isa = PBXGroup; + children = ( + B3981CD729239F4100A82429 /* testsprite2_crashtest.parameters */, + B3981CD829239F4100A82429 /* testsprite2_crashtest.config */, + B3981CD929239F4100A82429 /* testsprite2_crashtest.actions */, + ); + path = testsprite2_crashtest; + sourceTree = ""; + }; + B3981CDA29239F4100A82429 /* testsprite2_blendmodes */ = { + isa = PBXGroup; + children = ( + B3981CDB29239F4100A82429 /* testsprite2_blendmodes.actions */, + B3981CDC29239F4100A82429 /* testsprite2_blendmodes.config */, + B3981CDD29239F4100A82429 /* testsprite2_blendmodes.parameters */, + ); + path = testsprite2_blendmodes; + sourceTree = ""; + }; + B3981CDE29239F4100A82429 /* testsprite2_fullscreen */ = { + isa = PBXGroup; + children = ( + B3981CDF29239F4100A82429 /* testsprite2_fullscreen.parameters */, + B3981CE029239F4100A82429 /* testsprite2_fullscreen.config */, + B3981CE129239F4100A82429 /* testsprite2_fullscreen.actions */, + ); + path = testsprite2_fullscreen; + sourceTree = ""; + }; + B3981CE729239F4100A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981CE829239F4100A82429 /* variator_common.c */, + B3981CE929239F4100A82429 /* mischelper.c */, + B3981CEA29239F4100A82429 /* harness_argparser.c */, + B3981CEB29239F4100A82429 /* variator_random.c */, + B3981CEC29239F4100A82429 /* sut_configparser.c */, + B3981CED29239F4100A82429 /* parsehelper.c */, + B3981CEE29239F4100A82429 /* linux */, + B3981CF029239F4100A82429 /* screenshot.c */, + B3981CF129239F4100A82429 /* variator_exhaustive.c */, + B3981CF229239F4100A82429 /* action_configparser.c */, + B3981CF329239F4100A82429 /* windows */, + B3981CF629239F4100A82429 /* variators.c */, + B3981CF729239F4100A82429 /* testharness.c */, + B3981CF829239F4100A82429 /* rwhelper.c */, + ); + path = src; + sourceTree = ""; + }; + B3981CEE29239F4100A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B3981CEF29239F4100A82429 /* linux_process.c */, + ); + path = linux; + sourceTree = ""; + }; + B3981CF329239F4100A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981CF429239F4100A82429 /* windows_process.c */, + B3981CF529239F4100A82429 /* windows_screenshot.c */, + ); + path = windows; + sourceTree = ""; + }; + B3981CF929239F4100A82429 /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + B3981CFA29239F4100A82429 /* Test */, + B3981D0229239F4100A82429 /* SDLtest */, + B3981D0629239F4100A82429 /* Template */, + B3981D1129239F4100A82429 /* Demos */, + ); + path = "Xcode-iOS"; + sourceTree = ""; + }; + B3981CFA29239F4100A82429 /* Test */ = { + isa = PBXGroup; + children = ( + B3981CFB29239F4100A82429 /* README */, + B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */, + B3981D0129239F4100A82429 /* Info.plist */, + ); + path = Test; + sourceTree = ""; + }; + B3981CFD29239F4100A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B39831A129239F4B00A82429 /* checkkeys.app */, + B39831A329239F4B00A82429 /* controllermap.app */, + B39831A529239F4B00A82429 /* loopwav.app */, + B39831A729239F4B00A82429 /* loopwav-TV.app */, + B39831A929239F4B00A82429 /* testaudiocapture.app */, + B39831AB29239F4B00A82429 /* testaudioinfo.app */, + B39831AD29239F4B00A82429 /* torturethread.app */, + B39831AF29239F4B00A82429 /* testerror.app */, + B39831B129239F4B00A82429 /* testfile.app */, + B39831B329239F4B00A82429 /* testgamecontroller.app */, + B39831B529239F4B00A82429 /* testgamecontroller-TV.app */, + B39831B729239F4B00A82429 /* testgesture.app */, + B39831B929239F4B00A82429 /* testgles.app */, + B39831BB29239F4B00A82429 /* testiconv.app */, + B39831BD29239F4B00A82429 /* testjoystick.app */, + B39831BF29239F4B00A82429 /* testkeys.app */, + B39831C129239F4B00A82429 /* testlock.app */, + B39831C329239F4B00A82429 /* testplatform.app */, + B39831C529239F4B00A82429 /* testpower.app */, + B39831C729239F4B00A82429 /* testrendertarget.app */, + B39831C929239F4B00A82429 /* testscale.app */, + B39831CB29239F4B00A82429 /* testsem.app */, + B39831CD29239F4B00A82429 /* testsensor.app */, + B39831CF29239F4B00A82429 /* testsprite2.app */, + B39831D129239F4B00A82429 /* testthread.app */, + B39831D329239F4B00A82429 /* testtimer.app */, + B39831D529239F4B00A82429 /* testver.app */, + B39831D729239F4B00A82429 /* testwm2.app */, + B39831D929239F4B00A82429 /* testyuv.app */, + B39831DB29239F4B00A82429 /* torturethread.app */, + ); + name = Products; + sourceTree = ""; + }; + B3981D0229239F4100A82429 /* SDLtest */ = { + isa = PBXGroup; + children = ( + B3981D0329239F4100A82429 /* SDL2test.xcodeproj */, + ); + path = SDLtest; + sourceTree = ""; + }; + B3981D0429239F4100A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B39830EB29239F4B00A82429 /* libSDL2test.a */, + B39830ED29239F4B00A82429 /* libSDL2test-TV.a */, + ); + name = Products; + sourceTree = ""; + }; + B3981D0629239F4100A82429 /* Template */ = { + isa = PBXGroup; + children = ( + B3981D0729239F4100A82429 /* SDL iOS Application */, + ); + path = Template; + sourceTree = ""; + }; + B3981D0729239F4100A82429 /* SDL iOS Application */ = { + isa = PBXGroup; + children = ( + B3981D0829239F4100A82429 /* Icon.png */, + B3981D0929239F4100A82429 /* Default-568h@2x.png */, + B3981D0A29239F4100A82429 /* main.c */, + B3981D0B29239F4100A82429 /* ___PROJECTNAME___.xcodeproj */, + B3981D0F29239F4100A82429 /* Default.png */, + B3981D1029239F4100A82429 /* Info.plist */, + ); + path = "SDL iOS Application"; + sourceTree = ""; + }; + B3981D0C29239F4100A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B398301529239F4B00A82429 /* ___PROJECTNAME___.app */, + ); + name = Products; + sourceTree = ""; + }; + B3981D1129239F4100A82429 /* Demos */ = { + isa = PBXGroup; + children = ( + B3981D1229239F4100A82429 /* Icon.png */, + B3981D1329239F4100A82429 /* iOS Launch Screen.storyboard */, + B3981D1429239F4100A82429 /* README */, + B3981D1529239F4100A82429 /* data */, + B3981D2229239F4100A82429 /* Default.png */, + B3981D2329239F4100A82429 /* Info.plist */, + B3981D2429239F4100A82429 /* Demos.xcodeproj */, + B3981D2829239F4100A82429 /* src */, + ); + path = Demos; + sourceTree = ""; + }; + B3981D1529239F4100A82429 /* data */ = { + isa = PBXGroup; + children = ( + B3981D1629239F4100A82429 /* drums */, + B3981D1B29239F4100A82429 /* bitmapfont */, + B3981D1E29239F4100A82429 /* stroke.bmp */, + B3981D1F29239F4100A82429 /* space.bmp */, + B3981D2029239F4100A82429 /* ship.bmp */, + B3981D2129239F4100A82429 /* icon.bmp */, + ); + path = data; + sourceTree = ""; + }; + B3981D1629239F4100A82429 /* drums */ = { + isa = PBXGroup; + children = ( + B3981D1729239F4100A82429 /* ds_china.wav */, + B3981D1829239F4100A82429 /* ds_kick_big_amb.wav */, + B3981D1929239F4100A82429 /* ds_loose_skin_mute.wav */, + B3981D1A29239F4100A82429 /* ds_brush_snare.wav */, + ); + path = drums; + sourceTree = ""; + }; + B3981D1B29239F4100A82429 /* bitmapfont */ = { + isa = PBXGroup; + children = ( + B3981D1C29239F4100A82429 /* kromasky_16x16.bmp */, + B3981D1D29239F4100A82429 /* license.txt */, + ); + path = bitmapfont; + sourceTree = ""; + }; + B3981D2529239F4100A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B398304A29239F4B00A82429 /* Accel.app */, + B398304C29239F4B00A82429 /* Fireworks.app */, + B398304E29239F4B00A82429 /* Happy.app */, + B398305029239F4B00A82429 /* Happy-TV.app */, + B398305229239F4B00A82429 /* Keyboard.app */, + B398305429239F4B00A82429 /* Mixer.app */, + B398305629239F4B00A82429 /* Rectangles.app */, + B398305829239F4B00A82429 /* Touch.app */, + ); + name = Products; + sourceTree = ""; + }; + B3981D2829239F4100A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981D2929239F4100A82429 /* fireworks.c */, + B3981D2A29239F4100A82429 /* common.c */, + B3981D2B29239F4100A82429 /* mixer.c */, + B3981D2C29239F4100A82429 /* keyboard.c */, + B3981D2D29239F4100A82429 /* happy.c */, + B3981D2E29239F4100A82429 /* rectangles.c */, + B3981D2F29239F4100A82429 /* common.h */, + B3981D3029239F4100A82429 /* touch.c */, + B3981D3129239F4100A82429 /* accelerometer.c */, + ); + path = src; + sourceTree = ""; + }; + B3981D3329239F4100A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3981D3429239F4100A82429 /* SDL_error_c.h */, + B3981D3529239F4100A82429 /* power */, + B3981D4B29239F4100A82429 /* SDL_hints.c */, + B3981D4C29239F4100A82429 /* SDL_assert_c.h */, + B3981D4D29239F4100A82429 /* misc */, + B3981D6229239F4100A82429 /* libm */, + B3981D7929239F4100A82429 /* video */, + B3981F1429239F4200A82429 /* SDL_assert.c */, + B3981F1529239F4200A82429 /* locale */, + B3981F2829239F4200A82429 /* core */, + B3981F6729239F4200A82429 /* test */, + B3981F7829239F4200A82429 /* SDL_log.c */, + B3981F7929239F4200A82429 /* file */, + B3981F7E29239F4200A82429 /* timer */, + B3981F8D29239F4200A82429 /* render */, + B3981FC629239F4200A82429 /* SDL_dataqueue.c */, + B3981FC729239F4200A82429 /* filesystem */, + B3981FDC29239F4200A82429 /* atomic */, + B3981FDF29239F4200A82429 /* SDL.c */, + B3981FE029239F4200A82429 /* SDL_error.c */, + B3981FE129239F4200A82429 /* audio */, + B398203C29239F4200A82429 /* SDL_internal.h */, + B398203D29239F4200A82429 /* sensor */, + B398204D29239F4200A82429 /* hidapi */, + B39820A029239F4200A82429 /* stdlib */, + B39820A929239F4200A82429 /* haptic */, + B39820BE29239F4200A82429 /* dynapi */, + B39820C429239F4200A82429 /* joystick */, + B398210629239F4200A82429 /* SDL_hints_c.h */, + B398210729239F4200A82429 /* events */, + B398212229239F4300A82429 /* main */, + B398213829239F4300A82429 /* cpuinfo */, + B398213A29239F4300A82429 /* thread */, + B398216B29239F4300A82429 /* loadso */, + B398217429239F4300A82429 /* SDL_dataqueue.h */, + ); + path = src; + sourceTree = ""; + }; + B3981D3529239F4100A82429 /* power */ = { + isa = PBXGroup; + children = ( + B3981D3629239F4100A82429 /* uikit */, + B3981D3929239F4100A82429 /* psp */, + B3981D3B29239F4100A82429 /* haiku */, + B3981D3D29239F4100A82429 /* SDL_power.c */, + B3981D3E29239F4100A82429 /* emscripten */, + B3981D4029239F4100A82429 /* macosx */, + B3981D4229239F4100A82429 /* linux */, + B3981D4429239F4100A82429 /* winrt */, + B3981D4629239F4100A82429 /* android */, + B3981D4829239F4100A82429 /* windows */, + B3981D4A29239F4100A82429 /* SDL_syspower.h */, + ); + path = power; + sourceTree = ""; + }; + B3981D3629239F4100A82429 /* uikit */ = { + isa = PBXGroup; + children = ( + B3981D3729239F4100A82429 /* SDL_syspower.m */, + B3981D3829239F4100A82429 /* SDL_syspower.h */, + ); + path = uikit; + sourceTree = ""; + }; + B3981D3929239F4100A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B3981D3A29239F4100A82429 /* SDL_syspower.c */, + ); + path = psp; + sourceTree = ""; + }; + B3981D3B29239F4100A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B3981D3C29239F4100A82429 /* SDL_syspower.c */, + ); + path = haiku; + sourceTree = ""; + }; + B3981D3E29239F4100A82429 /* emscripten */ = { + isa = PBXGroup; + children = ( + B3981D3F29239F4100A82429 /* SDL_syspower.c */, + ); + path = emscripten; + sourceTree = ""; + }; + B3981D4029239F4100A82429 /* macosx */ = { + isa = PBXGroup; + children = ( + B3981D4129239F4100A82429 /* SDL_syspower.c */, + ); + path = macosx; + sourceTree = ""; + }; + B3981D4229239F4100A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B3981D4329239F4100A82429 /* SDL_syspower.c */, + ); + path = linux; + sourceTree = ""; + }; + B3981D4429239F4100A82429 /* winrt */ = { + isa = PBXGroup; + children = ( + B3981D4529239F4100A82429 /* SDL_syspower.cpp */, + ); + path = winrt; + sourceTree = ""; + }; + B3981D4629239F4100A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3981D4729239F4100A82429 /* SDL_syspower.c */, + ); + path = android; + sourceTree = ""; + }; + B3981D4829239F4100A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981D4929239F4100A82429 /* SDL_syspower.c */, + ); + path = windows; + sourceTree = ""; + }; + B3981D4D29239F4100A82429 /* misc */ = { + isa = PBXGroup; + children = ( + B3981D4E29239F4100A82429 /* dummy */, + B3981D5029239F4100A82429 /* SDL_url.c */, + B3981D5129239F4100A82429 /* SDL_sysurl.h */, + B3981D5229239F4100A82429 /* haiku */, + B3981D5429239F4100A82429 /* ios */, + B3981D5629239F4100A82429 /* unix */, + B3981D5829239F4100A82429 /* macosx */, + B3981D5A29239F4100A82429 /* winrt */, + B3981D5C29239F4100A82429 /* android */, + B3981D5E29239F4100A82429 /* windows */, + B3981D6029239F4100A82429 /* riscos */, + ); + path = misc; + sourceTree = ""; + }; + B3981D4E29239F4100A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B3981D4F29239F4100A82429 /* SDL_sysurl.c */, + ); + path = dummy; + sourceTree = ""; + }; + B3981D5229239F4100A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B3981D5329239F4100A82429 /* SDL_sysurl.cc */, + ); + path = haiku; + sourceTree = ""; + }; + B3981D5429239F4100A82429 /* ios */ = { + isa = PBXGroup; + children = ( + B3981D5529239F4100A82429 /* SDL_sysurl.m */, + ); + path = ios; + sourceTree = ""; + }; + B3981D5629239F4100A82429 /* unix */ = { + isa = PBXGroup; + children = ( + B3981D5729239F4100A82429 /* SDL_sysurl.c */, + ); + path = unix; + sourceTree = ""; + }; + B3981D5829239F4100A82429 /* macosx */ = { + isa = PBXGroup; + children = ( + B3981D5929239F4100A82429 /* SDL_sysurl.m */, + ); + path = macosx; + sourceTree = ""; + }; + B3981D5A29239F4100A82429 /* winrt */ = { + isa = PBXGroup; + children = ( + B3981D5B29239F4100A82429 /* SDL_sysurl.cpp */, + ); + path = winrt; + sourceTree = ""; + }; + B3981D5C29239F4100A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3981D5D29239F4100A82429 /* SDL_sysurl.c */, + ); + path = android; + sourceTree = ""; + }; + B3981D5E29239F4100A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981D5F29239F4100A82429 /* SDL_sysurl.c */, + ); + path = windows; + sourceTree = ""; + }; + B3981D6029239F4100A82429 /* riscos */ = { + isa = PBXGroup; + children = ( + B3981D6129239F4100A82429 /* SDL_sysurl.c */, + ); + path = riscos; + sourceTree = ""; + }; + B3981D6229239F4100A82429 /* libm */ = { + isa = PBXGroup; + children = ( + B3981D6329239F4100A82429 /* s_sin.c */, + B3981D6429239F4100A82429 /* s_cos.c */, + B3981D6529239F4100A82429 /* s_copysign.c */, + B3981D6629239F4100A82429 /* s_fabs.c */, + B3981D6729239F4100A82429 /* k_rem_pio2.c */, + B3981D6829239F4100A82429 /* k_sin.c */, + B3981D6929239F4100A82429 /* s_atan.c */, + B3981D6A29239F4100A82429 /* k_cos.c */, + B3981D6B29239F4100A82429 /* s_scalbn.c */, + B3981D6C29239F4100A82429 /* math_private.h */, + B3981D6D29239F4100A82429 /* e_pow.c */, + B3981D6E29239F4100A82429 /* e_atan2.c */, + B3981D6F29239F4100A82429 /* s_tan.c */, + B3981D7029239F4100A82429 /* e_rem_pio2.c */, + B3981D7129239F4100A82429 /* e_fmod.c */, + B3981D7229239F4100A82429 /* e_exp.c */, + B3981D7329239F4100A82429 /* e_log10.c */, + B3981D7429239F4100A82429 /* e_log.c */, + B3981D7529239F4100A82429 /* e_sqrt.c */, + B3981D7629239F4100A82429 /* s_floor.c */, + B3981D7729239F4100A82429 /* math_libm.h */, + B3981D7829239F4100A82429 /* k_tan.c */, + ); + path = libm; + sourceTree = ""; + }; + B3981D7929239F4100A82429 /* video */ = { + isa = PBXGroup; + children = ( + B3981D7A29239F4100A82429 /* offscreen */, + B3981D8529239F4100A82429 /* vivante */, + B3981D8E29239F4100A82429 /* SDL_blit_slow.c */, + B3981D8F29239F4100A82429 /* SDL_stretch.c */, + B3981D9029239F4100A82429 /* SDL_egl_c.h */, + B3981D9129239F4100A82429 /* dummy */, + B3981D9829239F4100A82429 /* SDL_rect_c.h */, + B3981D9929239F4100A82429 /* os2 */, + B3981DA629239F4100A82429 /* SDL_shape_internals.h */, + B3981DA729239F4100A82429 /* SDL_video.c */, + B3981DA829239F4100A82429 /* qnx */, + B3981DAD29239F4100A82429 /* SDL_surface.c */, + B3981DAE29239F4100A82429 /* SDL_RLEaccel.c */, + B3981DAF29239F4100A82429 /* SDL_blit_copy.c */, + B3981DB029239F4100A82429 /* SDL_sysvideo.h */, + B3981DB129239F4100A82429 /* uikit */, + B3981DCD29239F4100A82429 /* SDL_rect.c */, + B3981DCE29239F4100A82429 /* raspberry */, + B3981DD729239F4100A82429 /* SDL_vulkan_internal.h */, + B3981DD829239F4100A82429 /* SDL_blit_auto.c */, + B3981DD929239F4100A82429 /* SDL_vulkan_utils.c */, + B3981DDA29239F4100A82429 /* sdlgenblit.pl */, + B3981DDB29239F4100A82429 /* SDL_blit_N.c */, + B3981DDC29239F4100A82429 /* psp */, + B3981DE529239F4100A82429 /* SDL_blit.c */, + B3981DE629239F4100A82429 /* SDL_pixels.c */, + B3981DE729239F4100A82429 /* haiku */, + B3981DFB29239F4100A82429 /* SDL_blit_0.c */, + B3981DFC29239F4100A82429 /* SDL_blit_slow.h */, + B3981DFD29239F4100A82429 /* SDL_blit_A.c */, + B3981DFE29239F4100A82429 /* wayland */, + B3981E1429239F4100A82429 /* SDL_clipboard.c */, + B3981E1529239F4100A82429 /* SDL_yuv.c */, + B3981E1629239F4100A82429 /* cocoa */, + B3981E3329239F4100A82429 /* emscripten */, + B3981E3E29239F4100A82429 /* pandora */, + B3981E4329239F4100A82429 /* kmsdrm */, + B3981E5129239F4100A82429 /* SDL_egl.c */, + B3981E5229239F4100A82429 /* winrt */, + B3981E6129239F4100A82429 /* android */, + B3981E7629239F4100A82429 /* nacl */, + B3981E8029239F4100A82429 /* directfb */, + B3981E9729239F4100A82429 /* SDL_blit_1.c */, + B3981E9829239F4100A82429 /* x11 */, + B3981EBE29239F4200A82429 /* khronos */, + B3981EDF29239F4200A82429 /* SDL_blit_auto.h */, + B3981EE029239F4200A82429 /* SDL_pixels_c.h */, + B3981EE129239F4200A82429 /* arm */, + B3981EE729239F4200A82429 /* windows */, + B3981F0629239F4200A82429 /* SDL_blit_copy.h */, + B3981F0729239F4200A82429 /* SDL_RLEaccel_c.h */, + B3981F0829239F4200A82429 /* SDL_fillrect.c */, + B3981F0929239F4200A82429 /* SDL_shape.c */, + B3981F0A29239F4200A82429 /* SDL_yuv_c.h */, + B3981F0B29239F4200A82429 /* SDL_blit.h */, + B3981F0C29239F4200A82429 /* yuv2rgb */, + B3981F1329239F4200A82429 /* SDL_bmp.c */, + ); + path = video; + sourceTree = ""; + }; + B3981D7A29239F4100A82429 /* offscreen */ = { + isa = PBXGroup; + children = ( + B3981D7B29239F4100A82429 /* SDL_offscreenopengl.c */, + B3981D7C29239F4100A82429 /* SDL_offscreenevents_c.h */, + B3981D7D29239F4100A82429 /* SDL_offscreenwindow.c */, + B3981D7E29239F4100A82429 /* SDL_offscreenevents.c */, + B3981D7F29239F4100A82429 /* SDL_offscreenvideo.h */, + B3981D8029239F4100A82429 /* SDL_offscreenframebuffer.c */, + B3981D8129239F4100A82429 /* SDL_offscreenopengl.h */, + B3981D8229239F4100A82429 /* SDL_offscreenframebuffer_c.h */, + B3981D8329239F4100A82429 /* SDL_offscreenwindow.h */, + B3981D8429239F4100A82429 /* SDL_offscreenvideo.c */, + ); + path = offscreen; + sourceTree = ""; + }; + B3981D8529239F4100A82429 /* vivante */ = { + isa = PBXGroup; + children = ( + B3981D8629239F4100A82429 /* SDL_vivantevulkan.h */, + B3981D8729239F4100A82429 /* SDL_vivanteplatform.h */, + B3981D8829239F4100A82429 /* SDL_vivantevideo.c */, + B3981D8929239F4100A82429 /* SDL_vivanteopengles.c */, + B3981D8A29239F4100A82429 /* SDL_vivantevulkan.c */, + B3981D8B29239F4100A82429 /* SDL_vivanteplatform.c */, + B3981D8C29239F4100A82429 /* SDL_vivanteopengles.h */, + B3981D8D29239F4100A82429 /* SDL_vivantevideo.h */, + ); + path = vivante; + sourceTree = ""; + }; + B3981D9129239F4100A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B3981D9229239F4100A82429 /* SDL_nullframebuffer.c */, + B3981D9329239F4100A82429 /* SDL_nullframebuffer_c.h */, + B3981D9429239F4100A82429 /* SDL_nullvideo.c */, + B3981D9529239F4100A82429 /* SDL_nullevents.c */, + B3981D9629239F4100A82429 /* SDL_nullvideo.h */, + B3981D9729239F4100A82429 /* SDL_nullevents_c.h */, + ); + path = dummy; + sourceTree = ""; + }; + B3981D9929239F4100A82429 /* os2 */ = { + isa = PBXGroup; + children = ( + B3981D9A29239F4100A82429 /* SDL_os2util.c */, + B3981D9B29239F4100A82429 /* SDL_os2vman.c */, + B3981D9C29239F4100A82429 /* SDL_os2messagebox.c */, + B3981D9D29239F4100A82429 /* my_gradd.h */, + B3981D9E29239F4100A82429 /* SDL_os2video.h */, + B3981D9F29239F4100A82429 /* SDL_os2mouse.h */, + B3981DA029239F4100A82429 /* SDL_os2output.h */, + B3981DA129239F4100A82429 /* SDL_os2util.h */, + B3981DA229239F4100A82429 /* SDL_os2messagebox.h */, + B3981DA329239F4100A82429 /* SDL_os2video.c */, + B3981DA429239F4100A82429 /* SDL_os2mouse.c */, + B3981DA529239F4100A82429 /* SDL_os2dive.c */, + ); + path = os2; + sourceTree = ""; + }; + B3981DA829239F4100A82429 /* qnx */ = { + isa = PBXGroup; + children = ( + B3981DA929239F4100A82429 /* gl.c */, + B3981DAA29239F4100A82429 /* sdl_qnx.h */, + B3981DAB29239F4100A82429 /* video.c */, + B3981DAC29239F4100A82429 /* keyboard.c */, + ); + path = qnx; + sourceTree = ""; + }; + B3981DB129239F4100A82429 /* uikit */ = { + isa = PBXGroup; + children = ( + B3981DB229239F4100A82429 /* SDL_uikitview.h */, + B3981DB329239F4100A82429 /* SDL_uikitwindow.m */, + B3981DB429239F4100A82429 /* SDL_uikitmessagebox.m */, + B3981DB529239F4100A82429 /* SDL_uikitevents.m */, + B3981DB629239F4100A82429 /* SDL_uikitmetalview.h */, + B3981DB729239F4100A82429 /* SDL_uikitappdelegate.m */, + B3981DB829239F4100A82429 /* SDL_uikitmodes.h */, + B3981DB929239F4100A82429 /* SDL_uikitopenglview.m */, + B3981DBA29239F4100A82429 /* SDL_uikitclipboard.h */, + B3981DBB29239F4100A82429 /* SDL_uikitvideo.h */, + B3981DBC29239F4100A82429 /* SDL_uikitopengles.m */, + B3981DBD29239F4100A82429 /* SDL_uikitviewcontroller.h */, + B3981DBE29239F4100A82429 /* SDL_uikitvulkan.m */, + B3981DBF29239F4100A82429 /* SDL_uikitmessagebox.h */, + B3981DC029239F4100A82429 /* SDL_uikitwindow.h */, + B3981DC129239F4100A82429 /* keyinfotable.h */, + B3981DC229239F4100A82429 /* SDL_uikitview.m */, + B3981DC329239F4100A82429 /* SDL_uikitclipboard.m */, + B3981DC429239F4100A82429 /* SDL_uikitopenglview.h */, + B3981DC529239F4100A82429 /* SDL_uikitmodes.m */, + B3981DC629239F4100A82429 /* SDL_uikitevents.h */, + B3981DC729239F4100A82429 /* SDL_uikitmetalview.m */, + B3981DC829239F4100A82429 /* SDL_uikitappdelegate.h */, + B3981DC929239F4100A82429 /* SDL_uikitviewcontroller.m */, + B3981DCA29239F4100A82429 /* SDL_uikitopengles.h */, + B3981DCB29239F4100A82429 /* SDL_uikitvideo.m */, + B3981DCC29239F4100A82429 /* SDL_uikitvulkan.h */, + ); + path = uikit; + sourceTree = ""; + }; + B3981DCE29239F4100A82429 /* raspberry */ = { + isa = PBXGroup; + children = ( + B3981DCF29239F4100A82429 /* SDL_rpievents.c */, + B3981DD029239F4100A82429 /* SDL_rpiopengles.h */, + B3981DD129239F4100A82429 /* SDL_rpimouse.h */, + B3981DD229239F4100A82429 /* SDL_rpievents_c.h */, + B3981DD329239F4100A82429 /* SDL_rpivideo.h */, + B3981DD429239F4100A82429 /* SDL_rpiopengles.c */, + B3981DD529239F4100A82429 /* SDL_rpimouse.c */, + B3981DD629239F4100A82429 /* SDL_rpivideo.c */, + ); + path = raspberry; + sourceTree = ""; + }; + B3981DDC29239F4100A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B3981DDD29239F4100A82429 /* SDL_pspvideo.h */, + B3981DDE29239F4100A82429 /* SDL_pspevents_c.h */, + B3981DDF29239F4100A82429 /* SDL_pspgl.c */, + B3981DE029239F4100A82429 /* SDL_pspvideo.c */, + B3981DE129239F4100A82429 /* SDL_pspmouse.c */, + B3981DE229239F4100A82429 /* SDL_pspmouse_c.h */, + B3981DE329239F4100A82429 /* SDL_pspgl_c.h */, + B3981DE429239F4100A82429 /* SDL_pspevents.c */, + ); + path = psp; + sourceTree = ""; + }; + B3981DE729239F4100A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B3981DE829239F4100A82429 /* SDL_bopengl.h */, + B3981DE929239F4100A82429 /* SDL_bvideo.cc */, + B3981DEA29239F4100A82429 /* SDL_bmessagebox.cc */, + B3981DEB29239F4100A82429 /* SDL_bkeyboard.h */, + B3981DEC29239F4100A82429 /* SDL_bevents.cc */, + B3981DED29239F4100A82429 /* SDL_bkeyboard.cc */, + B3981DEE29239F4100A82429 /* SDL_bwindow.h */, + B3981DEF29239F4100A82429 /* SDL_bclipboard.cc */, + B3981DF029239F4100A82429 /* SDL_bmessagebox.h */, + B3981DF129239F4100A82429 /* SDL_bwindow.cc */, + B3981DF229239F4100A82429 /* SDL_bevents.h */, + B3981DF329239F4100A82429 /* SDL_bmodes.cc */, + B3981DF429239F4100A82429 /* SDL_bframebuffer.cc */, + B3981DF529239F4100A82429 /* SDL_bvideo.h */, + B3981DF629239F4100A82429 /* SDL_BWin.h */, + B3981DF729239F4100A82429 /* SDL_bframebuffer.h */, + B3981DF829239F4100A82429 /* SDL_bclipboard.h */, + B3981DF929239F4100A82429 /* SDL_bopengl.cc */, + B3981DFA29239F4100A82429 /* SDL_bmodes.h */, + ); + path = haiku; + sourceTree = ""; + }; + B3981DFE29239F4100A82429 /* wayland */ = { + isa = PBXGroup; + children = ( + B3981DFF29239F4100A82429 /* SDL_waylandclipboard.c */, + B3981E0029239F4100A82429 /* SDL_waylandwindow.h */, + B3981E0129239F4100A82429 /* SDL_waylandtouch.h */, + B3981E0229239F4100A82429 /* SDL_waylandsym.h */, + B3981E0329239F4100A82429 /* SDL_waylanddatamanager.c */, + B3981E0429239F4100A82429 /* SDL_waylandmouse.c */, + B3981E0529239F4100A82429 /* SDL_waylandopengles.c */, + B3981E0629239F4100A82429 /* SDL_waylanddyn.h */, + B3981E0729239F4100A82429 /* SDL_waylandvulkan.h */, + B3981E0829239F4100A82429 /* SDL_waylandvideo.c */, + B3981E0929239F4100A82429 /* SDL_waylandtouch.c */, + B3981E0A29239F4100A82429 /* SDL_waylandwindow.c */, + B3981E0B29239F4100A82429 /* SDL_waylandclipboard.h */, + B3981E0C29239F4100A82429 /* SDL_waylandevents.c */, + B3981E0D29239F4100A82429 /* SDL_waylandevents_c.h */, + B3981E0E29239F4100A82429 /* SDL_waylandmouse.h */, + B3981E0F29239F4100A82429 /* SDL_waylandopengles.h */, + B3981E1029239F4100A82429 /* SDL_waylanddatamanager.h */, + B3981E1129239F4100A82429 /* SDL_waylandvideo.h */, + B3981E1229239F4100A82429 /* SDL_waylandvulkan.c */, + B3981E1329239F4100A82429 /* SDL_waylanddyn.c */, + ); + path = wayland; + sourceTree = ""; + }; + B3981E1629239F4100A82429 /* cocoa */ = { + isa = PBXGroup; + children = ( + B3981E1729239F4100A82429 /* SDL_cocoashape.h */, + B3981E1829239F4100A82429 /* SDL_cocoaopengl.m */, + B3981E1929239F4100A82429 /* SDL_cocoakeyboard.h */, + B3981E1A29239F4100A82429 /* SDL_cocoamodes.m */, + B3981E1B29239F4100A82429 /* SDL_cocoaopengles.m */, + B3981E1C29239F4100A82429 /* SDL_cocoavulkan.m */, + B3981E1D29239F4100A82429 /* SDL_cocoawindow.m */, + B3981E1E29239F4100A82429 /* SDL_cocoavideo.m */, + B3981E1F29239F4100A82429 /* SDL_cocoametalview.h */, + B3981E2029239F4100A82429 /* SDL_cocoamouse.m */, + B3981E2129239F4100A82429 /* SDL_cocoamousetap.h */, + B3981E2229239F4100A82429 /* SDL_cocoaevents.m */, + B3981E2329239F4100A82429 /* SDL_cocoaclipboard.h */, + B3981E2429239F4100A82429 /* SDL_cocoamessagebox.m */, + B3981E2529239F4100A82429 /* SDL_cocoakeyboard.m */, + B3981E2629239F4100A82429 /* SDL_cocoaopengl.h */, + B3981E2729239F4100A82429 /* SDL_cocoashape.m */, + B3981E2829239F4100A82429 /* SDL_cocoavulkan.h */, + B3981E2929239F4100A82429 /* SDL_cocoaopengles.h */, + B3981E2A29239F4100A82429 /* SDL_cocoamodes.h */, + B3981E2B29239F4100A82429 /* SDL_cocoawindow.h */, + B3981E2C29239F4100A82429 /* SDL_cocoavideo.h */, + B3981E2D29239F4100A82429 /* SDL_cocoamessagebox.h */, + B3981E2E29239F4100A82429 /* SDL_cocoaclipboard.m */, + B3981E2F29239F4100A82429 /* SDL_cocoaevents.h */, + B3981E3029239F4100A82429 /* SDL_cocoamousetap.m */, + B3981E3129239F4100A82429 /* SDL_cocoamouse.h */, + B3981E3229239F4100A82429 /* SDL_cocoametalview.m */, + ); + path = cocoa; + sourceTree = ""; + }; + B3981E3329239F4100A82429 /* emscripten */ = { + isa = PBXGroup; + children = ( + B3981E3429239F4100A82429 /* SDL_emscriptenvideo.h */, + B3981E3529239F4100A82429 /* SDL_emscriptenevents.c */, + B3981E3629239F4100A82429 /* SDL_emscriptenmouse.h */, + B3981E3729239F4100A82429 /* SDL_emscriptenopengles.h */, + B3981E3829239F4100A82429 /* SDL_emscriptenframebuffer.c */, + B3981E3929239F4100A82429 /* SDL_emscriptenvideo.c */, + B3981E3A29239F4100A82429 /* SDL_emscriptenmouse.c */, + B3981E3B29239F4100A82429 /* SDL_emscriptenopengles.c */, + B3981E3C29239F4100A82429 /* SDL_emscriptenevents.h */, + B3981E3D29239F4100A82429 /* SDL_emscriptenframebuffer.h */, + ); + path = emscripten; + sourceTree = ""; + }; + B3981E3E29239F4100A82429 /* pandora */ = { + isa = PBXGroup; + children = ( + B3981E3F29239F4100A82429 /* SDL_pandora.h */, + B3981E4029239F4100A82429 /* SDL_pandora_events.h */, + B3981E4129239F4100A82429 /* SDL_pandora.c */, + B3981E4229239F4100A82429 /* SDL_pandora_events.c */, + ); + path = pandora; + sourceTree = ""; + }; + B3981E4329239F4100A82429 /* kmsdrm */ = { + isa = PBXGroup; + children = ( + B3981E4429239F4100A82429 /* SDL_kmsdrmvulkan.h */, + B3981E4529239F4100A82429 /* SDL_kmsdrmsym.h */, + B3981E4629239F4100A82429 /* SDL_kmsdrmmouse.h */, + B3981E4729239F4100A82429 /* SDL_kmsdrmdyn.h */, + B3981E4829239F4100A82429 /* SDL_kmsdrmevents.h */, + B3981E4929239F4100A82429 /* SDL_kmsdrmvideo.h */, + B3981E4A29239F4100A82429 /* SDL_kmsdrmopengles.c */, + B3981E4B29239F4100A82429 /* SDL_kmsdrmvulkan.c */, + B3981E4C29239F4100A82429 /* SDL_kmsdrmevents.c */, + B3981E4D29239F4100A82429 /* SDL_kmsdrmdyn.c */, + B3981E4E29239F4100A82429 /* SDL_kmsdrmmouse.c */, + B3981E4F29239F4100A82429 /* SDL_kmsdrmopengles.h */, + B3981E5029239F4100A82429 /* SDL_kmsdrmvideo.c */, + ); + path = kmsdrm; + sourceTree = ""; + }; + B3981E5229239F4100A82429 /* winrt */ = { + isa = PBXGroup; + children = ( + B3981E5329239F4100A82429 /* SDL_winrtopengles.h */, + B3981E5429239F4100A82429 /* SDL_winrtvideo_cpp.h */, + B3981E5529239F4100A82429 /* SDL_winrtpointerinput.cpp */, + B3981E5629239F4100A82429 /* SDL_winrtgamebar.cpp */, + B3981E5729239F4100A82429 /* SDL_winrtmouse.cpp */, + B3981E5829239F4100A82429 /* SDL_winrtmessagebox.cpp */, + B3981E5929239F4100A82429 /* SDL_winrtvideo.cpp */, + B3981E5A29239F4100A82429 /* SDL_winrtevents_c.h */, + B3981E5B29239F4100A82429 /* SDL_winrtopengles.cpp */, + B3981E5C29239F4100A82429 /* SDL_winrtmessagebox.h */, + B3981E5D29239F4100A82429 /* SDL_winrtgamebar_cpp.h */, + B3981E5E29239F4100A82429 /* SDL_winrtkeyboard.cpp */, + B3981E5F29239F4100A82429 /* SDL_winrtmouse_c.h */, + B3981E6029239F4100A82429 /* SDL_winrtevents.cpp */, + ); + path = winrt; + sourceTree = ""; + }; + B3981E6129239F4100A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3981E6229239F4100A82429 /* SDL_androidvideo.c */, + B3981E6329239F4100A82429 /* SDL_androidmessagebox.c */, + B3981E6429239F4100A82429 /* SDL_androidclipboard.h */, + B3981E6529239F4100A82429 /* SDL_androidmouse.c */, + B3981E6629239F4100A82429 /* SDL_androidvulkan.c */, + B3981E6729239F4100A82429 /* SDL_androidgl.h */, + B3981E6829239F4100A82429 /* SDL_androidkeyboard.c */, + B3981E6929239F4100A82429 /* SDL_androidwindow.c */, + B3981E6A29239F4100A82429 /* SDL_androidevents.c */, + B3981E6B29239F4100A82429 /* SDL_androidtouch.h */, + B3981E6C29239F4100A82429 /* SDL_androidclipboard.c */, + B3981E6D29239F4100A82429 /* SDL_androidmessagebox.h */, + B3981E6E29239F4100A82429 /* SDL_androidvideo.h */, + B3981E6F29239F4100A82429 /* SDL_androidgl.c */, + B3981E7029239F4100A82429 /* SDL_androidmouse.h */, + B3981E7129239F4100A82429 /* SDL_androidvulkan.h */, + B3981E7229239F4100A82429 /* SDL_androidwindow.h */, + B3981E7329239F4100A82429 /* SDL_androidkeyboard.h */, + B3981E7429239F4100A82429 /* SDL_androidevents.h */, + B3981E7529239F4100A82429 /* SDL_androidtouch.c */, + ); + path = android; + sourceTree = ""; + }; + B3981E7629239F4100A82429 /* nacl */ = { + isa = PBXGroup; + children = ( + B3981E7729239F4100A82429 /* SDL_naclopengles.h */, + B3981E7829239F4100A82429 /* SDL_naclvideo.h */, + B3981E7929239F4100A82429 /* SDL_naclglue.c */, + B3981E7A29239F4100A82429 /* SDL_naclwindow.h */, + B3981E7B29239F4100A82429 /* SDL_naclevents_c.h */, + B3981E7C29239F4100A82429 /* SDL_naclopengles.c */, + B3981E7D29239F4100A82429 /* SDL_naclvideo.c */, + B3981E7E29239F4100A82429 /* SDL_naclwindow.c */, + B3981E7F29239F4100A82429 /* SDL_naclevents.c */, + ); + path = nacl; + sourceTree = ""; + }; + B3981E8029239F4100A82429 /* directfb */ = { + isa = PBXGroup; + children = ( + B3981E8129239F4100A82429 /* SDL_DirectFB_opengl.h */, + B3981E8229239F4100A82429 /* SDL_DirectFB_modes.h */, + B3981E8329239F4100A82429 /* SDL_DirectFB_WM.h */, + B3981E8429239F4100A82429 /* SDL_DirectFB_vulkan.h */, + B3981E8529239F4100A82429 /* SDL_DirectFB_dyn.h */, + B3981E8629239F4100A82429 /* SDL_DirectFB_shape.c */, + B3981E8729239F4100A82429 /* SDL_DirectFB_window.h */, + B3981E8829239F4100A82429 /* SDL_DirectFB_mouse.h */, + B3981E8929239F4100A82429 /* SDL_DirectFB_render.c */, + B3981E8A29239F4100A82429 /* SDL_DirectFB_events.h */, + B3981E8B29239F4100A82429 /* SDL_DirectFB_video.h */, + B3981E8C29239F4100A82429 /* SDL_DirectFB_modes.c */, + B3981E8D29239F4100A82429 /* SDL_DirectFB_opengl.c */, + B3981E8E29239F4100A82429 /* SDL_DirectFB_shape.h */, + B3981E8F29239F4100A82429 /* SDL_DirectFB_dyn.c */, + B3981E9029239F4100A82429 /* SDL_DirectFB_vulkan.c */, + B3981E9129239F4100A82429 /* SDL_DirectFB_WM.c */, + B3981E9229239F4100A82429 /* SDL_DirectFB_render.h */, + B3981E9329239F4100A82429 /* SDL_DirectFB_mouse.c */, + B3981E9429239F4100A82429 /* SDL_DirectFB_window.c */, + B3981E9529239F4100A82429 /* SDL_DirectFB_video.c */, + B3981E9629239F4100A82429 /* SDL_DirectFB_events.c */, + ); + path = directfb; + sourceTree = ""; + }; + B3981E9829239F4100A82429 /* x11 */ = { + isa = PBXGroup; + children = ( + B3981E9929239F4100A82429 /* SDL_x11touch.h */, + B3981E9A29239F4100A82429 /* SDL_x11messagebox.h */, + B3981E9B29239F4100A82429 /* SDL_x11modes.c */, + B3981E9C29239F4100A82429 /* SDL_x11opengl.c */, + B3981E9D29239F4100A82429 /* SDL_x11vulkan.c */, + B3981E9E29239F4100A82429 /* SDL_x11shape.h */, + B3981E9F29239F4100A82429 /* SDL_x11xinput2.c */, + B3981EA029239F4100A82429 /* SDL_x11opengles.h */, + B3981EA129239F4100A82429 /* SDL_x11mouse.c */, + B3981EA229239F4100A82429 /* SDL_x11dyn.c */, + B3981EA329239F4100A82429 /* SDL_x11framebuffer.c */, + B3981EA429239F4100A82429 /* SDL_x11window.c */, + B3981EA529239F4100A82429 /* SDL_x11video.c */, + B3981EA629239F4100A82429 /* imKStoUCS.c */, + B3981EA729239F4100A82429 /* SDL_x11events.c */, + B3981EA829239F4100A82429 /* SDL_x11clipboard.c */, + B3981EA929239F4100A82429 /* SDL_x11keyboard.c */, + B3981EAA29239F4100A82429 /* SDL_x11sym.h */, + B3981EAB29239F4100A82429 /* SDL_x11opengl.h */, + B3981EAC29239F4100A82429 /* SDL_x11modes.h */, + B3981EAD29239F4100A82429 /* SDL_x11messagebox.c */, + B3981EAE29239F4100A82429 /* SDL_x11touch.c */, + B3981EAF29239F4100A82429 /* edid-parse.c */, + B3981EB029239F4100A82429 /* SDL_x11xinput2.h */, + B3981EB129239F4100A82429 /* edid.h */, + B3981EB229239F4100A82429 /* SDL_x11vulkan.h */, + B3981EB329239F4100A82429 /* SDL_x11shape.c */, + B3981EB429239F4100A82429 /* SDL_x11window.h */, + B3981EB529239F4100A82429 /* SDL_x11framebuffer.h */, + B3981EB629239F4100A82429 /* SDL_x11dyn.h */, + B3981EB729239F4100A82429 /* SDL_x11mouse.h */, + B3981EB829239F4100A82429 /* SDL_x11opengles.c */, + B3981EB929239F4200A82429 /* SDL_x11keyboard.h */, + B3981EBA29239F4200A82429 /* SDL_x11clipboard.h */, + B3981EBB29239F4200A82429 /* SDL_x11events.h */, + B3981EBC29239F4200A82429 /* imKStoUCS.h */, + B3981EBD29239F4200A82429 /* SDL_x11video.h */, + ); + path = x11; + sourceTree = ""; + }; + B3981EBE29239F4200A82429 /* khronos */ = { + isa = PBXGroup; + children = ( + B3981EBF29239F4200A82429 /* GLES2 */, + B3981EC329239F4200A82429 /* KHR */, + B3981EC529239F4200A82429 /* EGL */, + B3981EC929239F4200A82429 /* vulkan */, + ); + path = khronos; + sourceTree = ""; + }; + B3981EBF29239F4200A82429 /* GLES2 */ = { + isa = PBXGroup; + children = ( + B3981EC029239F4200A82429 /* gl2ext.h */, + B3981EC129239F4200A82429 /* gl2.h */, + B3981EC229239F4200A82429 /* gl2platform.h */, + ); + path = GLES2; + sourceTree = ""; + }; + B3981EC329239F4200A82429 /* KHR */ = { + isa = PBXGroup; + children = ( + B3981EC429239F4200A82429 /* khrplatform.h */, + ); + path = KHR; + sourceTree = ""; + }; + B3981EC529239F4200A82429 /* EGL */ = { + isa = PBXGroup; + children = ( + B3981EC629239F4200A82429 /* egl.h */, + B3981EC729239F4200A82429 /* eglext.h */, + B3981EC829239F4200A82429 /* eglplatform.h */, + ); + path = EGL; + sourceTree = ""; + }; + B3981EC929239F4200A82429 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3981ECA29239F4200A82429 /* vk_layer.h */, + B3981ECB29239F4200A82429 /* vk_icd.h */, + B3981ECC29239F4200A82429 /* vulkan_vi.h */, + B3981ECD29239F4200A82429 /* vulkan.h */, + B3981ECE29239F4200A82429 /* vk_platform.h */, + B3981ECF29239F4200A82429 /* vulkan.hpp */, + B3981ED029239F4200A82429 /* vulkan_fuchsia.h */, + B3981ED129239F4200A82429 /* vulkan_wayland.h */, + B3981ED229239F4200A82429 /* vulkan_win32.h */, + B3981ED329239F4200A82429 /* vulkan_macos.h */, + B3981ED429239F4200A82429 /* vulkan_xlib_xrandr.h */, + B3981ED529239F4200A82429 /* vulkan_xcb.h */, + B3981ED629239F4200A82429 /* vulkan_ggp.h */, + B3981ED729239F4200A82429 /* vulkan_xlib.h */, + B3981ED829239F4200A82429 /* vulkan_directfb.h */, + B3981ED929239F4200A82429 /* vulkan_ios.h */, + B3981EDA29239F4200A82429 /* vulkan_core.h */, + B3981EDB29239F4200A82429 /* vk_sdk_platform.h */, + B3981EDC29239F4200A82429 /* vulkan_android.h */, + B3981EDD29239F4200A82429 /* vulkan_metal.h */, + B3981EDE29239F4200A82429 /* vulkan_beta.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B3981EE129239F4200A82429 /* arm */ = { + isa = PBXGroup; + children = ( + B3981EE229239F4200A82429 /* pixman-arm-neon-asm.h */, + B3981EE329239F4200A82429 /* pixman-arm-neon-asm.S */, + B3981EE429239F4200A82429 /* pixman-arm-asm.h */, + B3981EE529239F4200A82429 /* pixman-arm-simd-asm.S */, + B3981EE629239F4200A82429 /* pixman-arm-simd-asm.h */, + ); + path = arm; + sourceTree = ""; + }; + B3981EE729239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981EE829239F4200A82429 /* SDL_windowsmouse.c */, + B3981EE929239F4200A82429 /* SDL_windowsopengles.c */, + B3981EEA29239F4200A82429 /* SDL_windowsvulkan.c */, + B3981EEB29239F4200A82429 /* SDL_windowsopengl.c */, + B3981EEC29239F4200A82429 /* SDL_windowsvideo.c */, + B3981EED29239F4200A82429 /* SDL_windowskeyboard.h */, + B3981EEE29239F4200A82429 /* SDL_windowsframebuffer.c */, + B3981EEF29239F4200A82429 /* SDL_windowsmodes.c */, + B3981EF029239F4200A82429 /* SDL_windowsclipboard.c */, + B3981EF129239F4200A82429 /* SDL_windowstaskdialog.h */, + B3981EF229239F4200A82429 /* SDL_windowsmessagebox.h */, + B3981EF329239F4200A82429 /* SDL_windowsevents.c */, + B3981EF429239F4200A82429 /* SDL_vkeys.h */, + B3981EF529239F4200A82429 /* SDL_windowsshape.h */, + B3981EF629239F4200A82429 /* SDL_windowswindow.c */, + B3981EF729239F4200A82429 /* wmmsg.h */, + B3981EF829239F4200A82429 /* SDL_windowsopengles.h */, + B3981EF929239F4200A82429 /* SDL_windowsvulkan.h */, + B3981EFA29239F4200A82429 /* SDL_msctf.h */, + B3981EFB29239F4200A82429 /* SDL_windowsmouse.h */, + B3981EFC29239F4200A82429 /* SDL_windowsframebuffer.h */, + B3981EFD29239F4200A82429 /* SDL_windowskeyboard.c */, + B3981EFE29239F4200A82429 /* SDL_windowsvideo.h */, + B3981EFF29239F4200A82429 /* SDL_windowsopengl.h */, + B3981F0029239F4200A82429 /* SDL_windowsevents.h */, + B3981F0129239F4200A82429 /* SDL_windowsmessagebox.c */, + B3981F0229239F4200A82429 /* SDL_windowsclipboard.h */, + B3981F0329239F4200A82429 /* SDL_windowsmodes.h */, + B3981F0429239F4200A82429 /* SDL_windowswindow.h */, + B3981F0529239F4200A82429 /* SDL_windowsshape.c */, + ); + path = windows; + sourceTree = ""; + }; + B3981F0C29239F4200A82429 /* yuv2rgb */ = { + isa = PBXGroup; + children = ( + B3981F0D29239F4200A82429 /* LICENSE */, + B3981F0E29239F4200A82429 /* yuv_rgb.c */, + B3981F0F29239F4200A82429 /* README.md */, + B3981F1029239F4200A82429 /* yuv_rgb_sse_func.h */, + B3981F1129239F4200A82429 /* yuv_rgb_std_func.h */, + B3981F1229239F4200A82429 /* yuv_rgb.h */, + ); + path = yuv2rgb; + sourceTree = ""; + }; + B3981F1529239F4200A82429 /* locale */ = { + isa = PBXGroup; + children = ( + B3981F1629239F4200A82429 /* dummy */, + B3981F1829239F4200A82429 /* haiku */, + B3981F1A29239F4200A82429 /* unix */, + B3981F1C29239F4200A82429 /* emscripten */, + B3981F1E29239F4200A82429 /* macosx */, + B3981F2029239F4200A82429 /* winrt */, + B3981F2229239F4200A82429 /* android */, + B3981F2429239F4200A82429 /* SDL_syslocale.h */, + B3981F2529239F4200A82429 /* windows */, + B3981F2729239F4200A82429 /* SDL_locale.c */, + ); + path = locale; + sourceTree = ""; + }; + B3981F1629239F4200A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B3981F1729239F4200A82429 /* SDL_syslocale.c */, + ); + path = dummy; + sourceTree = ""; + }; + B3981F1829239F4200A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B3981F1929239F4200A82429 /* SDL_syslocale.cc */, + ); + path = haiku; + sourceTree = ""; + }; + B3981F1A29239F4200A82429 /* unix */ = { + isa = PBXGroup; + children = ( + B3981F1B29239F4200A82429 /* SDL_syslocale.c */, + ); + path = unix; + sourceTree = ""; + }; + B3981F1C29239F4200A82429 /* emscripten */ = { + isa = PBXGroup; + children = ( + B3981F1D29239F4200A82429 /* SDL_syslocale.c */, + ); + path = emscripten; + sourceTree = ""; + }; + B3981F1E29239F4200A82429 /* macosx */ = { + isa = PBXGroup; + children = ( + B3981F1F29239F4200A82429 /* SDL_syslocale.m */, + ); + path = macosx; + sourceTree = ""; + }; + B3981F2029239F4200A82429 /* winrt */ = { + isa = PBXGroup; + children = ( + B3981F2129239F4200A82429 /* SDL_syslocale.c */, + ); + path = winrt; + sourceTree = ""; + }; + B3981F2229239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3981F2329239F4200A82429 /* SDL_syslocale.c */, + ); + path = android; + sourceTree = ""; + }; + B3981F2529239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981F2629239F4200A82429 /* SDL_syslocale.c */, + ); + path = windows; + sourceTree = ""; + }; + B3981F2829239F4200A82429 /* core */ = { + isa = PBXGroup; + children = ( + B3981F2929239F4200A82429 /* os2 */, + B3981F3629239F4200A82429 /* freebsd */, + B3981F3929239F4200A82429 /* unix */, + B3981F3C29239F4200A82429 /* linux */, + B3981F5029239F4200A82429 /* winrt */, + B3981F5729239F4200A82429 /* android */, + B3981F5B29239F4200A82429 /* openbsd */, + B3981F5F29239F4200A82429 /* windows */, + ); + path = core; + sourceTree = ""; + }; + B3981F2929239F4200A82429 /* os2 */ = { + isa = PBXGroup; + children = ( + B3981F2A29239F4200A82429 /* geniconv */, + B3981F3429239F4200A82429 /* SDL_os2.h */, + B3981F3529239F4200A82429 /* SDL_os2.c */, + ); + path = os2; + sourceTree = ""; + }; + B3981F2A29239F4200A82429 /* geniconv */ = { + isa = PBXGroup; + children = ( + B3981F2B29239F4200A82429 /* geniconv.h */, + B3981F2C29239F4200A82429 /* makefile */, + B3981F2D29239F4200A82429 /* sys2utf8.c */, + B3981F2E29239F4200A82429 /* os2iconv.c */, + B3981F2F29239F4200A82429 /* os2cp.c */, + B3981F3029239F4200A82429 /* iconv.h */, + B3981F3129239F4200A82429 /* geniconv.c */, + B3981F3229239F4200A82429 /* test.c */, + B3981F3329239F4200A82429 /* os2cp.h */, + ); + path = geniconv; + sourceTree = ""; + }; + B3981F3629239F4200A82429 /* freebsd */ = { + isa = PBXGroup; + children = ( + B3981F3729239F4200A82429 /* SDL_evdev_kbd_freebsd.c */, + B3981F3829239F4200A82429 /* SDL_evdev_kbd_default_keyaccmap.h */, + ); + path = freebsd; + sourceTree = ""; + }; + B3981F3929239F4200A82429 /* unix */ = { + isa = PBXGroup; + children = ( + B3981F3A29239F4200A82429 /* SDL_poll.c */, + B3981F3B29239F4200A82429 /* SDL_poll.h */, + ); + path = unix; + sourceTree = ""; + }; + B3981F3C29239F4200A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B3981F3D29239F4200A82429 /* SDL_dbus.h */, + B3981F3E29239F4200A82429 /* SDL_threadprio.c */, + B3981F3F29239F4200A82429 /* SDL_ibus.h */, + B3981F4029239F4200A82429 /* SDL_evdev_kbd.h */, + B3981F4129239F4200A82429 /* SDL_evdev_capabilities.h */, + B3981F4229239F4200A82429 /* SDL_fcitx.c */, + B3981F4329239F4200A82429 /* SDL_evdev.c */, + B3981F4429239F4200A82429 /* SDL_ime.c */, + B3981F4529239F4200A82429 /* SDL_udev.c */, + B3981F4629239F4200A82429 /* SDL_evdev_kbd_default_accents.h */, + B3981F4729239F4200A82429 /* SDL_dbus.c */, + B3981F4829239F4200A82429 /* SDL_evdev_kbd_default_keymap.h */, + B3981F4929239F4200A82429 /* SDL_evdev_capabilities.c */, + B3981F4A29239F4200A82429 /* SDL_ibus.c */, + B3981F4B29239F4200A82429 /* SDL_evdev_kbd.c */, + B3981F4C29239F4200A82429 /* SDL_ime.h */, + B3981F4D29239F4200A82429 /* SDL_evdev.h */, + B3981F4E29239F4200A82429 /* SDL_fcitx.h */, + B3981F4F29239F4200A82429 /* SDL_udev.h */, + ); + path = linux; + sourceTree = ""; + }; + B3981F5029239F4200A82429 /* winrt */ = { + isa = PBXGroup; + children = ( + B3981F5129239F4200A82429 /* SDL_winrtapp_direct3d.h */, + B3981F5229239F4200A82429 /* SDL_winrtapp_common.cpp */, + B3981F5329239F4200A82429 /* SDL_winrtapp_xaml.cpp */, + B3981F5429239F4200A82429 /* SDL_winrtapp_common.h */, + B3981F5529239F4200A82429 /* SDL_winrtapp_xaml.h */, + B3981F5629239F4200A82429 /* SDL_winrtapp_direct3d.cpp */, + ); + path = winrt; + sourceTree = ""; + }; + B3981F5729239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3981F5829239F4200A82429 /* SDL_android.h */, + B3981F5929239F4200A82429 /* keyinfotable.h */, + B3981F5A29239F4200A82429 /* SDL_android.c */, + ); + path = android; + sourceTree = ""; + }; + B3981F5B29239F4200A82429 /* openbsd */ = { + isa = PBXGroup; + children = ( + B3981F5C29239F4200A82429 /* SDL_wscons_kbd.c */, + B3981F5D29239F4200A82429 /* SDL_wscons_mouse.c */, + B3981F5E29239F4200A82429 /* SDL_wscons.h */, + ); + path = openbsd; + sourceTree = ""; + }; + B3981F5F29239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981F6029239F4200A82429 /* SDL_xinput.h */, + B3981F6129239F4200A82429 /* SDL_hid.h */, + B3981F6229239F4200A82429 /* SDL_windows.c */, + B3981F6329239F4200A82429 /* SDL_hid.c */, + B3981F6429239F4200A82429 /* SDL_xinput.c */, + B3981F6529239F4200A82429 /* SDL_directx.h */, + B3981F6629239F4200A82429 /* SDL_windows.h */, + ); + path = windows; + sourceTree = ""; + }; + B3981F6729239F4200A82429 /* test */ = { + isa = PBXGroup; + children = ( + B3981F6829239F4200A82429 /* SDL_test_imageBlitBlend.c */, + B3981F6929239F4200A82429 /* SDL_test_imageFace.c */, + B3981F6A29239F4200A82429 /* SDL_test_harness.c */, + B3981F6B29239F4200A82429 /* SDL_test_imageBlit.c */, + B3981F6C29239F4200A82429 /* SDL_test_compare.c */, + B3981F6D29239F4200A82429 /* SDL_test_md5.c */, + B3981F6E29239F4200A82429 /* SDL_test_assert.c */, + B3981F6F29239F4200A82429 /* SDL_test_imagePrimitives.c */, + B3981F7029239F4200A82429 /* SDL_test_random.c */, + B3981F7129239F4200A82429 /* SDL_test_font.c */, + B3981F7229239F4200A82429 /* SDL_test_crc32.c */, + B3981F7329239F4200A82429 /* SDL_test_log.c */, + B3981F7429239F4200A82429 /* SDL_test_imagePrimitivesBlend.c */, + B3981F7529239F4200A82429 /* SDL_test_memory.c */, + B3981F7629239F4200A82429 /* SDL_test_fuzzer.c */, + B3981F7729239F4200A82429 /* SDL_test_common.c */, + ); + path = test; + sourceTree = ""; + }; + B3981F7929239F4200A82429 /* file */ = { + isa = PBXGroup; + children = ( + B3981F7A29239F4200A82429 /* SDL_rwops.c */, + B3981F7B29239F4200A82429 /* cocoa */, + ); + path = file; + sourceTree = ""; + }; + B3981F7B29239F4200A82429 /* cocoa */ = { + isa = PBXGroup; + children = ( + B3981F7C29239F4200A82429 /* SDL_rwopsbundlesupport.h */, + B3981F7D29239F4200A82429 /* SDL_rwopsbundlesupport.m */, + ); + path = cocoa; + sourceTree = ""; + }; + B3981F7E29239F4200A82429 /* timer */ = { + isa = PBXGroup; + children = ( + B3981F7F29239F4200A82429 /* SDL_timer.c */, + B3981F8029239F4200A82429 /* SDL_timer_c.h */, + B3981F8129239F4200A82429 /* dummy */, + B3981F8329239F4200A82429 /* os2 */, + B3981F8529239F4200A82429 /* psp */, + B3981F8729239F4200A82429 /* haiku */, + B3981F8929239F4200A82429 /* unix */, + B3981F8B29239F4200A82429 /* windows */, + ); + path = timer; + sourceTree = ""; + }; + B3981F8129239F4200A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B3981F8229239F4200A82429 /* SDL_systimer.c */, + ); + path = dummy; + sourceTree = ""; + }; + B3981F8329239F4200A82429 /* os2 */ = { + isa = PBXGroup; + children = ( + B3981F8429239F4200A82429 /* SDL_systimer.c */, + ); + path = os2; + sourceTree = ""; + }; + B3981F8529239F4200A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B3981F8629239F4200A82429 /* SDL_systimer.c */, + ); + path = psp; + sourceTree = ""; + }; + B3981F8729239F4200A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B3981F8829239F4200A82429 /* SDL_systimer.c */, + ); + path = haiku; + sourceTree = ""; + }; + B3981F8929239F4200A82429 /* unix */ = { + isa = PBXGroup; + children = ( + B3981F8A29239F4200A82429 /* SDL_systimer.c */, + ); + path = unix; + sourceTree = ""; + }; + B3981F8B29239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981F8C29239F4200A82429 /* SDL_systimer.c */, + ); + path = windows; + sourceTree = ""; + }; + B3981F8D29239F4200A82429 /* render */ = { + isa = PBXGroup; + children = ( + B3981F8E29239F4200A82429 /* SDL_render.c */, + B3981F8F29239F4200A82429 /* SDL_d3dmath.h */, + B3981F9029239F4200A82429 /* metal */, + B3981F9929239F4200A82429 /* direct3d11 */, + B3981F9F29239F4200A82429 /* psp */, + B3981FA129239F4200A82429 /* SDL_yuv_sw_c.h */, + B3981FA229239F4200A82429 /* SDL_yuv_sw.c */, + B3981FA329239F4200A82429 /* SDL_sysrender.h */, + B3981FA429239F4200A82429 /* software */, + B3981FB429239F4200A82429 /* SDL_d3dmath.c */, + B3981FB529239F4200A82429 /* opengles */, + B3981FB829239F4200A82429 /* opengles2 */, + B3981FBD29239F4200A82429 /* direct3d */, + B3981FC129239F4200A82429 /* opengl */, + ); + path = render; + sourceTree = ""; + }; + B3981F9029239F4200A82429 /* metal */ = { + isa = PBXGroup; + children = ( + B3981F9129239F4200A82429 /* SDL_render_metal.m */, + B3981F9229239F4200A82429 /* SDL_shaders_metal_ios.h */, + B3981F9329239F4200A82429 /* SDL_shaders_metal_iphonesimulator.h */, + B3981F9429239F4200A82429 /* SDL_shaders_metal_tvsimulator.h */, + B3981F9529239F4200A82429 /* SDL_shaders_metal.metal */, + B3981F9629239F4200A82429 /* build-metal-shaders.sh */, + B3981F9729239F4200A82429 /* SDL_shaders_metal_osx.h */, + B3981F9829239F4200A82429 /* SDL_shaders_metal_tvos.h */, + ); + path = metal; + sourceTree = ""; + }; + B3981F9929239F4200A82429 /* direct3d11 */ = { + isa = PBXGroup; + children = ( + B3981F9A29239F4200A82429 /* SDL_render_d3d11.c */, + B3981F9B29239F4200A82429 /* SDL_render_winrt.h */, + B3981F9C29239F4200A82429 /* SDL_shaders_d3d11.h */, + B3981F9D29239F4200A82429 /* SDL_render_winrt.cpp */, + B3981F9E29239F4200A82429 /* SDL_shaders_d3d11.c */, + ); + path = direct3d11; + sourceTree = ""; + }; + B3981F9F29239F4200A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B3981FA029239F4200A82429 /* SDL_render_psp.c */, + ); + path = psp; + sourceTree = ""; + }; + B3981FA429239F4200A82429 /* software */ = { + isa = PBXGroup; + children = ( + B3981FA529239F4200A82429 /* SDL_blendpoint.c */, + B3981FA629239F4200A82429 /* SDL_drawline.c */, + B3981FA729239F4200A82429 /* SDL_blendline.h */, + B3981FA829239F4200A82429 /* SDL_drawpoint.h */, + B3981FA929239F4200A82429 /* SDL_rotate.c */, + B3981FAA29239F4200A82429 /* SDL_render_sw_c.h */, + B3981FAB29239F4200A82429 /* SDL_blendfillrect.h */, + B3981FAC29239F4200A82429 /* SDL_drawline.h */, + B3981FAD29239F4200A82429 /* SDL_blendpoint.h */, + B3981FAE29239F4200A82429 /* SDL_render_sw.c */, + B3981FAF29239F4200A82429 /* SDL_draw.h */, + B3981FB029239F4200A82429 /* SDL_blendline.c */, + B3981FB129239F4200A82429 /* SDL_drawpoint.c */, + B3981FB229239F4200A82429 /* SDL_blendfillrect.c */, + B3981FB329239F4200A82429 /* SDL_rotate.h */, + ); + path = software; + sourceTree = ""; + }; + B3981FB529239F4200A82429 /* opengles */ = { + isa = PBXGroup; + children = ( + B3981FB629239F4200A82429 /* SDL_render_gles.c */, + B3981FB729239F4200A82429 /* SDL_glesfuncs.h */, + ); + path = opengles; + sourceTree = ""; + }; + B3981FB829239F4200A82429 /* opengles2 */ = { + isa = PBXGroup; + children = ( + B3981FB929239F4200A82429 /* SDL_render_gles2.c */, + B3981FBA29239F4200A82429 /* SDL_shaders_gles2.h */, + B3981FBB29239F4200A82429 /* SDL_gles2funcs.h */, + B3981FBC29239F4200A82429 /* SDL_shaders_gles2.c */, + ); + path = opengles2; + sourceTree = ""; + }; + B3981FBD29239F4200A82429 /* direct3d */ = { + isa = PBXGroup; + children = ( + B3981FBE29239F4200A82429 /* SDL_shaders_d3d.c */, + B3981FBF29239F4200A82429 /* SDL_render_d3d.c */, + B3981FC029239F4200A82429 /* SDL_shaders_d3d.h */, + ); + path = direct3d; + sourceTree = ""; + }; + B3981FC129239F4200A82429 /* opengl */ = { + isa = PBXGroup; + children = ( + B3981FC229239F4200A82429 /* SDL_shaders_gl.h */, + B3981FC329239F4200A82429 /* SDL_glfuncs.h */, + B3981FC429239F4200A82429 /* SDL_render_gl.c */, + B3981FC529239F4200A82429 /* SDL_shaders_gl.c */, + ); + path = opengl; + sourceTree = ""; + }; + B3981FC729239F4200A82429 /* filesystem */ = { + isa = PBXGroup; + children = ( + B3981FC829239F4200A82429 /* dummy */, + B3981FCA29239F4200A82429 /* os2 */, + B3981FCC29239F4200A82429 /* haiku */, + B3981FCE29239F4200A82429 /* unix */, + B3981FD029239F4200A82429 /* cocoa */, + B3981FD229239F4200A82429 /* emscripten */, + B3981FD429239F4200A82429 /* winrt */, + B3981FD629239F4200A82429 /* android */, + B3981FD829239F4200A82429 /* nacl */, + B3981FDA29239F4200A82429 /* windows */, + ); + path = filesystem; + sourceTree = ""; + }; + B3981FC829239F4200A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B3981FC929239F4200A82429 /* SDL_sysfilesystem.c */, + ); + path = dummy; + sourceTree = ""; + }; + B3981FCA29239F4200A82429 /* os2 */ = { + isa = PBXGroup; + children = ( + B3981FCB29239F4200A82429 /* SDL_sysfilesystem.c */, + ); + path = os2; + sourceTree = ""; + }; + B3981FCC29239F4200A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B3981FCD29239F4200A82429 /* SDL_sysfilesystem.cc */, + ); + path = haiku; + sourceTree = ""; + }; + B3981FCE29239F4200A82429 /* unix */ = { + isa = PBXGroup; + children = ( + B3981FCF29239F4200A82429 /* SDL_sysfilesystem.c */, + ); + path = unix; + sourceTree = ""; + }; + B3981FD029239F4200A82429 /* cocoa */ = { + isa = PBXGroup; + children = ( + B3981FD129239F4200A82429 /* SDL_sysfilesystem.m */, + ); + path = cocoa; + sourceTree = ""; + }; + B3981FD229239F4200A82429 /* emscripten */ = { + isa = PBXGroup; + children = ( + B3981FD329239F4200A82429 /* SDL_sysfilesystem.c */, + ); + path = emscripten; + sourceTree = ""; + }; + B3981FD429239F4200A82429 /* winrt */ = { + isa = PBXGroup; + children = ( + B3981FD529239F4200A82429 /* SDL_sysfilesystem.cpp */, + ); + path = winrt; + sourceTree = ""; + }; + B3981FD629239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3981FD729239F4200A82429 /* SDL_sysfilesystem.c */, + ); + path = android; + sourceTree = ""; + }; + B3981FD829239F4200A82429 /* nacl */ = { + isa = PBXGroup; + children = ( + B3981FD929239F4200A82429 /* SDL_sysfilesystem.c */, + ); + path = nacl; + sourceTree = ""; + }; + B3981FDA29239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3981FDB29239F4200A82429 /* SDL_sysfilesystem.c */, + ); + path = windows; + sourceTree = ""; + }; + B3981FDC29239F4200A82429 /* atomic */ = { + isa = PBXGroup; + children = ( + B3981FDD29239F4200A82429 /* SDL_spinlock.c */, + B3981FDE29239F4200A82429 /* SDL_atomic.c */, + ); + path = atomic; + sourceTree = ""; + }; + B3981FE129239F4200A82429 /* audio */ = { + isa = PBXGroup; + children = ( + B3981FE229239F4200A82429 /* SDL_mixer.c */, + B3981FE329239F4200A82429 /* SDL_wave.c */, + B3981FE429239F4200A82429 /* sun */, + B3981FE729239F4200A82429 /* qsa */, + B3981FEA29239F4200A82429 /* arts */, + B3981FED29239F4200A82429 /* dummy */, + B3981FF029239F4200A82429 /* os2 */, + B3981FF329239F4200A82429 /* SDL_audio_c.h */, + B3981FF429239F4200A82429 /* pulseaudio */, + B3981FF729239F4200A82429 /* SDL_audiodev_c.h */, + B3981FF829239F4200A82429 /* esd */, + B3981FFB29239F4200A82429 /* fusionsound */, + B3981FFE29239F4200A82429 /* sndio */, + B398200129239F4200A82429 /* nas */, + B398200429239F4200A82429 /* openslES */, + B398200729239F4200A82429 /* wasapi */, + B398200C29239F4200A82429 /* SDL_audiodev.c */, + B398200D29239F4200A82429 /* netbsd */, + B398201029239F4200A82429 /* psp */, + B398201329239F4200A82429 /* directsound */, + B398201629239F4200A82429 /* winmm */, + B398201929239F4200A82429 /* haiku */, + B398201C29239F4200A82429 /* SDL_sysaudio.h */, + B398201D29239F4200A82429 /* SDL_audiotypecvt.c */, + B398201E29239F4200A82429 /* SDL_audiocvt.c */, + B398201F29239F4200A82429 /* SDL_wave.h */, + B398202029239F4200A82429 /* emscripten */, + B398202329239F4200A82429 /* android */, + B398202629239F4200A82429 /* nacl */, + B398202929239F4200A82429 /* jack */, + B398202C29239F4200A82429 /* disk */, + B398202F29239F4200A82429 /* alsa */, + B398203229239F4200A82429 /* dsp */, + B398203529239F4200A82429 /* SDL_audio.c */, + B398203629239F4200A82429 /* coreaudio */, + B398203929239F4200A82429 /* paudio */, + ); + path = audio; + sourceTree = ""; + }; + B3981FE429239F4200A82429 /* sun */ = { + isa = PBXGroup; + children = ( + B3981FE529239F4200A82429 /* SDL_sunaudio.c */, + B3981FE629239F4200A82429 /* SDL_sunaudio.h */, + ); + path = sun; + sourceTree = ""; + }; + B3981FE729239F4200A82429 /* qsa */ = { + isa = PBXGroup; + children = ( + B3981FE829239F4200A82429 /* SDL_qsa_audio.h */, + B3981FE929239F4200A82429 /* SDL_qsa_audio.c */, + ); + path = qsa; + sourceTree = ""; + }; + B3981FEA29239F4200A82429 /* arts */ = { + isa = PBXGroup; + children = ( + B3981FEB29239F4200A82429 /* SDL_artsaudio.c */, + B3981FEC29239F4200A82429 /* SDL_artsaudio.h */, + ); + path = arts; + sourceTree = ""; + }; + B3981FED29239F4200A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B3981FEE29239F4200A82429 /* SDL_dummyaudio.h */, + B3981FEF29239F4200A82429 /* SDL_dummyaudio.c */, + ); + path = dummy; + sourceTree = ""; + }; + B3981FF029239F4200A82429 /* os2 */ = { + isa = PBXGroup; + children = ( + B3981FF129239F4200A82429 /* SDL_os2audio.c */, + B3981FF229239F4200A82429 /* SDL_os2audio.h */, + ); + path = os2; + sourceTree = ""; + }; + B3981FF429239F4200A82429 /* pulseaudio */ = { + isa = PBXGroup; + children = ( + B3981FF529239F4200A82429 /* SDL_pulseaudio.h */, + B3981FF629239F4200A82429 /* SDL_pulseaudio.c */, + ); + path = pulseaudio; + sourceTree = ""; + }; + B3981FF829239F4200A82429 /* esd */ = { + isa = PBXGroup; + children = ( + B3981FF929239F4200A82429 /* SDL_esdaudio.c */, + B3981FFA29239F4200A82429 /* SDL_esdaudio.h */, + ); + path = esd; + sourceTree = ""; + }; + B3981FFB29239F4200A82429 /* fusionsound */ = { + isa = PBXGroup; + children = ( + B3981FFC29239F4200A82429 /* SDL_fsaudio.h */, + B3981FFD29239F4200A82429 /* SDL_fsaudio.c */, + ); + path = fusionsound; + sourceTree = ""; + }; + B3981FFE29239F4200A82429 /* sndio */ = { + isa = PBXGroup; + children = ( + B3981FFF29239F4200A82429 /* SDL_sndioaudio.h */, + B398200029239F4200A82429 /* SDL_sndioaudio.c */, + ); + path = sndio; + sourceTree = ""; + }; + B398200129239F4200A82429 /* nas */ = { + isa = PBXGroup; + children = ( + B398200229239F4200A82429 /* SDL_nasaudio.c */, + B398200329239F4200A82429 /* SDL_nasaudio.h */, + ); + path = nas; + sourceTree = ""; + }; + B398200429239F4200A82429 /* openslES */ = { + isa = PBXGroup; + children = ( + B398200529239F4200A82429 /* SDL_openslES.c */, + B398200629239F4200A82429 /* SDL_openslES.h */, + ); + path = openslES; + sourceTree = ""; + }; + B398200729239F4200A82429 /* wasapi */ = { + isa = PBXGroup; + children = ( + B398200829239F4200A82429 /* SDL_wasapi.h */, + B398200929239F4200A82429 /* SDL_wasapi_winrt.cpp */, + B398200A29239F4200A82429 /* SDL_wasapi_win32.c */, + B398200B29239F4200A82429 /* SDL_wasapi.c */, + ); + path = wasapi; + sourceTree = ""; + }; + B398200D29239F4200A82429 /* netbsd */ = { + isa = PBXGroup; + children = ( + B398200E29239F4200A82429 /* SDL_netbsdaudio.h */, + B398200F29239F4200A82429 /* SDL_netbsdaudio.c */, + ); + path = netbsd; + sourceTree = ""; + }; + B398201029239F4200A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B398201129239F4200A82429 /* SDL_pspaudio.c */, + B398201229239F4200A82429 /* SDL_pspaudio.h */, + ); + path = psp; + sourceTree = ""; + }; + B398201329239F4200A82429 /* directsound */ = { + isa = PBXGroup; + children = ( + B398201429239F4200A82429 /* SDL_directsound.h */, + B398201529239F4200A82429 /* SDL_directsound.c */, + ); + path = directsound; + sourceTree = ""; + }; + B398201629239F4200A82429 /* winmm */ = { + isa = PBXGroup; + children = ( + B398201729239F4200A82429 /* SDL_winmm.h */, + B398201829239F4200A82429 /* SDL_winmm.c */, + ); + path = winmm; + sourceTree = ""; + }; + B398201929239F4200A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B398201A29239F4200A82429 /* SDL_haikuaudio.cc */, + B398201B29239F4200A82429 /* SDL_haikuaudio.h */, + ); + path = haiku; + sourceTree = ""; + }; + B398202029239F4200A82429 /* emscripten */ = { + isa = PBXGroup; + children = ( + B398202129239F4200A82429 /* SDL_emscriptenaudio.c */, + B398202229239F4200A82429 /* SDL_emscriptenaudio.h */, + ); + path = emscripten; + sourceTree = ""; + }; + B398202329239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B398202429239F4200A82429 /* SDL_androidaudio.h */, + B398202529239F4200A82429 /* SDL_androidaudio.c */, + ); + path = android; + sourceTree = ""; + }; + B398202629239F4200A82429 /* nacl */ = { + isa = PBXGroup; + children = ( + B398202729239F4200A82429 /* SDL_naclaudio.c */, + B398202829239F4200A82429 /* SDL_naclaudio.h */, + ); + path = nacl; + sourceTree = ""; + }; + B398202929239F4200A82429 /* jack */ = { + isa = PBXGroup; + children = ( + B398202A29239F4200A82429 /* SDL_jackaudio.c */, + B398202B29239F4200A82429 /* SDL_jackaudio.h */, + ); + path = jack; + sourceTree = ""; + }; + B398202C29239F4200A82429 /* disk */ = { + isa = PBXGroup; + children = ( + B398202D29239F4200A82429 /* SDL_diskaudio.h */, + B398202E29239F4200A82429 /* SDL_diskaudio.c */, + ); + path = disk; + sourceTree = ""; + }; + B398202F29239F4200A82429 /* alsa */ = { + isa = PBXGroup; + children = ( + B398203029239F4200A82429 /* SDL_alsa_audio.c */, + B398203129239F4200A82429 /* SDL_alsa_audio.h */, + ); + path = alsa; + sourceTree = ""; + }; + B398203229239F4200A82429 /* dsp */ = { + isa = PBXGroup; + children = ( + B398203329239F4200A82429 /* SDL_dspaudio.c */, + B398203429239F4200A82429 /* SDL_dspaudio.h */, + ); + path = dsp; + sourceTree = ""; + }; + B398203629239F4200A82429 /* coreaudio */ = { + isa = PBXGroup; + children = ( + B398203729239F4200A82429 /* SDL_coreaudio.h */, + B398203829239F4200A82429 /* SDL_coreaudio.m */, + ); + path = coreaudio; + sourceTree = ""; + }; + B398203929239F4200A82429 /* paudio */ = { + isa = PBXGroup; + children = ( + B398203A29239F4200A82429 /* SDL_paudio.h */, + B398203B29239F4200A82429 /* SDL_paudio.c */, + ); + path = paudio; + sourceTree = ""; + }; + B398203D29239F4200A82429 /* sensor */ = { + isa = PBXGroup; + children = ( + B398203E29239F4200A82429 /* dummy */, + B398204129239F4200A82429 /* coremotion */, + B398204429239F4200A82429 /* SDL_syssensor.h */, + B398204529239F4200A82429 /* android */, + B398204829239F4200A82429 /* windows */, + B398204B29239F4200A82429 /* SDL_sensor_c.h */, + B398204C29239F4200A82429 /* SDL_sensor.c */, + ); + path = sensor; + sourceTree = ""; + }; + B398203E29239F4200A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B398203F29239F4200A82429 /* SDL_dummysensor.h */, + B398204029239F4200A82429 /* SDL_dummysensor.c */, + ); + path = dummy; + sourceTree = ""; + }; + B398204129239F4200A82429 /* coremotion */ = { + isa = PBXGroup; + children = ( + B398204229239F4200A82429 /* SDL_coremotionsensor.h */, + B398204329239F4200A82429 /* SDL_coremotionsensor.m */, + ); + path = coremotion; + sourceTree = ""; + }; + B398204529239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B398204629239F4200A82429 /* SDL_androidsensor.c */, + B398204729239F4200A82429 /* SDL_androidsensor.h */, + ); + path = android; + sourceTree = ""; + }; + B398204829239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B398204929239F4200A82429 /* SDL_windowssensor.c */, + B398204A29239F4200A82429 /* SDL_windowssensor.h */, + ); + path = windows; + sourceTree = ""; + }; + B398204D29239F4200A82429 /* hidapi */ = { + isa = PBXGroup; + children = ( + B398204E29239F4200A82429 /* pc */, + B398205229239F4200A82429 /* HACKING.txt */, + B398205329239F4200A82429 /* udev */, + B398205529239F4200A82429 /* configure.ac */, + B398205629239F4200A82429 /* bootstrap */, + B398205729239F4200A82429 /* LICENSE-orig.txt */, + B398205829239F4200A82429 /* SDL_hidapi.c */, + B398205929239F4200A82429 /* ios */, + B398205D29239F4200A82429 /* Makefile.am */, + B398205E29239F4200A82429 /* mac */, + B398206229239F4200A82429 /* LICENSE-gpl3.txt */, + B398206329239F4200A82429 /* linux */, + B398206929239F4200A82429 /* android */, + B398206F29239F4200A82429 /* testgui */, + B398207F29239F4200A82429 /* hidapi */, + B398208129239F4200A82429 /* m4 */, + B398208429239F4200A82429 /* README.txt */, + B398208529239F4200A82429 /* doxygen */, + B398208729239F4200A82429 /* windows */, + B398209329239F4200A82429 /* hidtest */, + B398209629239F4200A82429 /* LICENSE.txt */, + B398209729239F4200A82429 /* AUTHORS.txt */, + B398209829239F4200A82429 /* libusb */, + B398209F29239F4200A82429 /* LICENSE-bsd.txt */, + ); + path = hidapi; + sourceTree = ""; + }; + B398204E29239F4200A82429 /* pc */ = { + isa = PBXGroup; + children = ( + B398204F29239F4200A82429 /* hidapi-libusb.pc.in */, + B398205029239F4200A82429 /* hidapi.pc.in */, + B398205129239F4200A82429 /* hidapi-hidraw.pc.in */, + ); + path = pc; + sourceTree = ""; + }; + B398205329239F4200A82429 /* udev */ = { + isa = PBXGroup; + children = ( + B398205429239F4200A82429 /* 99-hid.rules */, + ); + path = udev; + sourceTree = ""; + }; + B398205929239F4200A82429 /* ios */ = { + isa = PBXGroup; + children = ( + B398205A29239F4200A82429 /* Makefile-manual */, + B398205B29239F4200A82429 /* Makefile.am */, + B398205C29239F4200A82429 /* hid.m */, + ); + path = ios; + sourceTree = ""; + }; + B398205E29239F4200A82429 /* mac */ = { + isa = PBXGroup; + children = ( + B398205F29239F4200A82429 /* Makefile-manual */, + B398206029239F4200A82429 /* Makefile.am */, + B398206129239F4200A82429 /* hid.c */, + ); + path = mac; + sourceTree = ""; + }; + B398206329239F4200A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B398206429239F4200A82429 /* Makefile-manual */, + B398206529239F4200A82429 /* hidraw.cpp */, + B398206629239F4200A82429 /* Makefile.am */, + B398206729239F4200A82429 /* hid.c */, + B398206829239F4200A82429 /* README.txt */, + ); + path = linux; + sourceTree = ""; + }; + B398206929239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B398206A29239F4200A82429 /* hid.cpp */, + B398206B29239F4200A82429 /* project.properties */, + B398206C29239F4200A82429 /* jni */, + ); + path = android; + sourceTree = ""; + }; + B398206C29239F4200A82429 /* jni */ = { + isa = PBXGroup; + children = ( + B398206D29239F4200A82429 /* Android.mk */, + B398206E29239F4200A82429 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B398206F29239F4200A82429 /* testgui */ = { + isa = PBXGroup; + children = ( + B398207029239F4200A82429 /* Makefile.mingw */, + B398207129239F4200A82429 /* Makefile.linux */, + B398207229239F4200A82429 /* Makefile.mac */, + B398207329239F4200A82429 /* Makefile-manual */, + B398207429239F4200A82429 /* TestGUI.app.in */, + B398207529239F4200A82429 /* mac_support.cpp */, + B398207629239F4200A82429 /* test.cpp */, + B398207729239F4200A82429 /* testgui.sln */, + B398207829239F4200A82429 /* Makefile.freebsd */, + B398207929239F4200A82429 /* testgui.vcproj */, + B398207A29239F4200A82429 /* mac_support.h */, + B398207B29239F4200A82429 /* Makefile.am */, + B398207C29239F4200A82429 /* copy_to_bundle.sh */, + B398207D29239F4200A82429 /* mac_support_cocoa.m */, + B398207E29239F4200A82429 /* start.sh */, + ); + path = testgui; + sourceTree = ""; + }; + B398207F29239F4200A82429 /* hidapi */ = { + isa = PBXGroup; + children = ( + B398208029239F4200A82429 /* hidapi.h */, + ); + path = hidapi; + sourceTree = ""; + }; + B398208129239F4200A82429 /* m4 */ = { + isa = PBXGroup; + children = ( + B398208229239F4200A82429 /* pkg.m4 */, + B398208329239F4200A82429 /* ax_pthread.m4 */, + ); + path = m4; + sourceTree = ""; + }; + B398208529239F4200A82429 /* doxygen */ = { + isa = PBXGroup; + children = ( + B398208629239F4200A82429 /* Doxyfile */, + ); + path = doxygen; + sourceTree = ""; + }; + B398208729239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B398208829239F4200A82429 /* Makefile.mingw */, + B398208929239F4200A82429 /* Makefile-manual */, + B398208A29239F4200A82429 /* Makefile.am */, + B398208B29239F4200A82429 /* hidapi.vcproj */, + B398208C29239F4200A82429 /* hid.c */, + B398208D29239F4200A82429 /* hidapi.sln */, + B398208E29239F4200A82429 /* hidtest.vcproj */, + B398208F29239F4200A82429 /* ddk_build */, + ); + path = windows; + sourceTree = ""; + }; + B398208F29239F4200A82429 /* ddk_build */ = { + isa = PBXGroup; + children = ( + B398209029239F4200A82429 /* makefile */, + B398209129239F4200A82429 /* hidapi.def */, + B398209229239F4200A82429 /* sources */, + ); + path = ddk_build; + sourceTree = ""; + }; + B398209329239F4200A82429 /* hidtest */ = { + isa = PBXGroup; + children = ( + B398209429239F4200A82429 /* hidtest.cpp */, + B398209529239F4200A82429 /* Makefile.am */, + ); + path = hidtest; + sourceTree = ""; + }; + B398209829239F4200A82429 /* libusb */ = { + isa = PBXGroup; + children = ( + B398209929239F4200A82429 /* Makefile.linux */, + B398209A29239F4200A82429 /* Makefile-manual */, + B398209B29239F4200A82429 /* hidusb.cpp */, + B398209C29239F4200A82429 /* Makefile.freebsd */, + B398209D29239F4200A82429 /* Makefile.am */, + B398209E29239F4200A82429 /* hid.c */, + ); + path = libusb; + sourceTree = ""; + }; + B39820A029239F4200A82429 /* stdlib */ = { + isa = PBXGroup; + children = ( + B39820A129239F4200A82429 /* SDL_iconv.c */, + B39820A229239F4200A82429 /* SDL_getenv.c */, + B39820A329239F4200A82429 /* SDL_string.c */, + B39820A429239F4200A82429 /* SDL_strtokr.c */, + B39820A529239F4200A82429 /* SDL_crc32.c */, + B39820A629239F4200A82429 /* SDL_qsort.c */, + B39820A729239F4200A82429 /* SDL_stdlib.c */, + B39820A829239F4200A82429 /* SDL_malloc.c */, + ); + path = stdlib; + sourceTree = ""; + }; + B39820A929239F4200A82429 /* haptic */ = { + isa = PBXGroup; + children = ( + B39820AA29239F4200A82429 /* dummy */, + B39820AC29239F4200A82429 /* SDL_haptic.c */, + B39820AD29239F4200A82429 /* SDL_haptic_c.h */, + B39820AE29239F4200A82429 /* linux */, + B39820B029239F4200A82429 /* android */, + B39820B329239F4200A82429 /* SDL_syshaptic.h */, + B39820B429239F4200A82429 /* darwin */, + B39820B729239F4200A82429 /* windows */, + ); + path = haptic; + sourceTree = ""; + }; + B39820AA29239F4200A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B39820AB29239F4200A82429 /* SDL_syshaptic.c */, + ); + path = dummy; + sourceTree = ""; + }; + B39820AE29239F4200A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B39820AF29239F4200A82429 /* SDL_syshaptic.c */, + ); + path = linux; + sourceTree = ""; + }; + B39820B029239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B39820B129239F4200A82429 /* SDL_syshaptic.c */, + B39820B229239F4200A82429 /* SDL_syshaptic_c.h */, + ); + path = android; + sourceTree = ""; + }; + B39820B429239F4200A82429 /* darwin */ = { + isa = PBXGroup; + children = ( + B39820B529239F4200A82429 /* SDL_syshaptic.c */, + B39820B629239F4200A82429 /* SDL_syshaptic_c.h */, + ); + path = darwin; + sourceTree = ""; + }; + B39820B729239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B39820B829239F4200A82429 /* SDL_xinputhaptic_c.h */, + B39820B929239F4200A82429 /* SDL_xinputhaptic.c */, + B39820BA29239F4200A82429 /* SDL_windowshaptic.c */, + B39820BB29239F4200A82429 /* SDL_windowshaptic_c.h */, + B39820BC29239F4200A82429 /* SDL_dinputhaptic_c.h */, + B39820BD29239F4200A82429 /* SDL_dinputhaptic.c */, + ); + path = windows; + sourceTree = ""; + }; + B39820BE29239F4200A82429 /* dynapi */ = { + isa = PBXGroup; + children = ( + B39820BF29239F4200A82429 /* SDL_dynapi.h */, + B39820C029239F4200A82429 /* SDL_dynapi_overrides.h */, + B39820C129239F4200A82429 /* SDL_dynapi.c */, + B39820C229239F4200A82429 /* SDL_dynapi_procs.h */, + B39820C329239F4200A82429 /* gendynapi.pl */, + ); + path = dynapi; + sourceTree = ""; + }; + B39820C429239F4200A82429 /* joystick */ = { + isa = PBXGroup; + children = ( + B39820C529239F4200A82429 /* SDL_gamecontrollerdb.h */, + B39820C629239F4200A82429 /* dummy */, + B39820C829239F4200A82429 /* steam */, + B39820CB29239F4200A82429 /* check_8bitdo.sh */, + B39820CC29239F4200A82429 /* SDL_joystick.c */, + B39820CD29239F4200A82429 /* iphoneos */, + B39820D029239F4200A82429 /* SDL_gamecontroller.c */, + B39820D129239F4200A82429 /* psp */, + B39820D329239F4200A82429 /* sort_controllers.py */, + B39820D429239F4200A82429 /* bsd */, + B39820D629239F4200A82429 /* haiku */, + B39820D829239F4200A82429 /* emscripten */, + B39820DB29239F4200A82429 /* linux */, + B39820DE29239F4200A82429 /* android */, + B39820E129239F4200A82429 /* virtual */, + B39820E429239F4200A82429 /* hidapi */, + B39820F429239F4200A82429 /* usb_ids.h */, + B39820F529239F4200A82429 /* darwin */, + B39820F829239F4200A82429 /* SDL_sysjoystick.h */, + B39820F929239F4200A82429 /* SDL_joystick_c.h */, + B39820FA29239F4200A82429 /* windows */, + B398210529239F4200A82429 /* controller_type.h */, + ); + path = joystick; + sourceTree = ""; + }; + B39820C629239F4200A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B39820C729239F4200A82429 /* SDL_sysjoystick.c */, + ); + path = dummy; + sourceTree = ""; + }; + B39820C829239F4200A82429 /* steam */ = { + isa = PBXGroup; + children = ( + B39820C929239F4200A82429 /* SDL_steamcontroller.h */, + B39820CA29239F4200A82429 /* SDL_steamcontroller.c */, + ); + path = steam; + sourceTree = ""; + }; + B39820CD29239F4200A82429 /* iphoneos */ = { + isa = PBXGroup; + children = ( + B39820CE29239F4200A82429 /* SDL_mfijoystick_c.h */, + B39820CF29239F4200A82429 /* SDL_mfijoystick.m */, + ); + path = iphoneos; + sourceTree = ""; + }; + B39820D129239F4200A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B39820D229239F4200A82429 /* SDL_sysjoystick.c */, + ); + path = psp; + sourceTree = ""; + }; + B39820D429239F4200A82429 /* bsd */ = { + isa = PBXGroup; + children = ( + B39820D529239F4200A82429 /* SDL_bsdjoystick.c */, + ); + path = bsd; + sourceTree = ""; + }; + B39820D629239F4200A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B39820D729239F4200A82429 /* SDL_haikujoystick.cc */, + ); + path = haiku; + sourceTree = ""; + }; + B39820D829239F4200A82429 /* emscripten */ = { + isa = PBXGroup; + children = ( + B39820D929239F4200A82429 /* SDL_sysjoystick.c */, + B39820DA29239F4200A82429 /* SDL_sysjoystick_c.h */, + ); + path = emscripten; + sourceTree = ""; + }; + B39820DB29239F4200A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B39820DC29239F4200A82429 /* SDL_sysjoystick.c */, + B39820DD29239F4200A82429 /* SDL_sysjoystick_c.h */, + ); + path = linux; + sourceTree = ""; + }; + B39820DE29239F4200A82429 /* android */ = { + isa = PBXGroup; + children = ( + B39820DF29239F4200A82429 /* SDL_sysjoystick.c */, + B39820E029239F4200A82429 /* SDL_sysjoystick_c.h */, + ); + path = android; + sourceTree = ""; + }; + B39820E129239F4200A82429 /* virtual */ = { + isa = PBXGroup; + children = ( + B39820E229239F4200A82429 /* SDL_virtualjoystick_c.h */, + B39820E329239F4200A82429 /* SDL_virtualjoystick.c */, + ); + path = virtual; + sourceTree = ""; + }; + B39820E429239F4200A82429 /* hidapi */ = { + isa = PBXGroup; + children = ( + B39820E529239F4200A82429 /* SDL_hidapi_rumble.h */, + B39820E629239F4200A82429 /* steam */, + B39820E929239F4200A82429 /* SDL_hidapi_xbox360.c */, + B39820EA29239F4200A82429 /* SDL_hidapi_ps4.c */, + B39820EB29239F4200A82429 /* SDL_hidapijoystick.c */, + B39820EC29239F4200A82429 /* SDL_hidapi_xboxone.c */, + B39820ED29239F4200A82429 /* SDL_hidapi_rumble.c */, + B39820EE29239F4200A82429 /* SDL_hidapi_switch.c */, + B39820EF29239F4200A82429 /* SDL_hidapijoystick_c.h */, + B39820F029239F4200A82429 /* SDL_hidapi_xbox360w.c */, + B39820F129239F4200A82429 /* SDL_hidapi_gamecube.c */, + B39820F229239F4200A82429 /* SDL_hidapi_ps5.c */, + B39820F329239F4200A82429 /* SDL_hidapi_steam.c */, + ); + path = hidapi; + sourceTree = ""; + }; + B39820E629239F4200A82429 /* steam */ = { + isa = PBXGroup; + children = ( + B39820E729239F4200A82429 /* controller_constants.h */, + B39820E829239F4200A82429 /* controller_structs.h */, + ); + path = steam; + sourceTree = ""; + }; + B39820F529239F4200A82429 /* darwin */ = { + isa = PBXGroup; + children = ( + B39820F629239F4200A82429 /* SDL_iokitjoystick.c */, + B39820F729239F4200A82429 /* SDL_iokitjoystick_c.h */, + ); + path = darwin; + sourceTree = ""; + }; + B39820FA29239F4200A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B39820FB29239F4200A82429 /* SDL_rawinputjoystick_c.h */, + B39820FC29239F4200A82429 /* SDL_dinputjoystick_c.h */, + B39820FD29239F4200A82429 /* SDL_dinputjoystick.c */, + B39820FE29239F4200A82429 /* SDL_windowsjoystick.c */, + B39820FF29239F4200A82429 /* SDL_mmjoystick.c */, + B398210029239F4200A82429 /* SDL_windowsjoystick_c.h */, + B398210129239F4200A82429 /* SDL_rawinputjoystick.c */, + B398210229239F4200A82429 /* SDL_xinputjoystick_c.h */, + B398210329239F4200A82429 /* SDL_xinputjoystick.c */, + B398210429239F4200A82429 /* SDL_windows_gaming_input.c */, + ); + path = windows; + sourceTree = ""; + }; + B398210729239F4200A82429 /* events */ = { + isa = PBXGroup; + children = ( + B398210829239F4200A82429 /* SDL_mouse.c */, + B398210929239F4200A82429 /* SDL_mouse_c.h */, + B398210A29239F4200A82429 /* scancodes_windows.h */, + B398210B29239F4200A82429 /* SDL_displayevents.c */, + B398210C29239F4200A82429 /* SDL_dropevents_c.h */, + B398210D29239F4200A82429 /* SDL_windowevents.c */, + B398210E29239F4200A82429 /* SDL_gesture_c.h */, + B398210F29239F4200A82429 /* SDL_displayevents_c.h */, + B398211029239F4200A82429 /* blank_cursor.h */, + B398211129239F4200A82429 /* default_cursor.h */, + B398211229239F4200A82429 /* scancodes_darwin.h */, + B398211329239F4200A82429 /* SDL_events.c */, + B398211429239F4200A82429 /* scancodes_linux.h */, + B398211529239F4200A82429 /* SDL_touch_c.h */, + B398211629239F4200A82429 /* SDL_keyboard.c */, + B398211729239F4200A82429 /* SDL_clipboardevents_c.h */, + B398211829239F4200A82429 /* SDL_clipboardevents.c */, + B398211929239F4200A82429 /* SDL_dropevents.c */, + B398211A29239F4200A82429 /* SDL_quit.c */, + B398211B29239F4200A82429 /* SDL_keyboard_c.h */, + B398211C29239F4200A82429 /* SDL_touch.c */, + B398211D29239F4200A82429 /* SDL_sysevents.h */, + B398211E29239F4200A82429 /* SDL_gesture.c */, + B398211F29239F4200A82429 /* scancodes_xfree86.h */, + B398212029239F4300A82429 /* SDL_events_c.h */, + B398212129239F4300A82429 /* SDL_windowevents_c.h */, + ); + path = events; + sourceTree = ""; + }; + B398212229239F4300A82429 /* main */ = { + isa = PBXGroup; + children = ( + B398212329239F4300A82429 /* dummy */, + B398212529239F4300A82429 /* uikit */, + B398212729239F4300A82429 /* psp */, + B398212929239F4300A82429 /* haiku */, + B398212D29239F4300A82429 /* winrt */, + B398213129239F4300A82429 /* android */, + B398213329239F4300A82429 /* nacl */, + B398213529239F4300A82429 /* windows */, + ); + path = main; + sourceTree = ""; + }; + B398212329239F4300A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B398212429239F4300A82429 /* SDL_dummy_main.c */, + ); + path = dummy; + sourceTree = ""; + }; + B398212529239F4300A82429 /* uikit */ = { + isa = PBXGroup; + children = ( + B398212629239F4300A82429 /* SDL_uikit_main.c */, + ); + path = uikit; + sourceTree = ""; + }; + B398212729239F4300A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B398212829239F4300A82429 /* SDL_psp_main.c */, + ); + path = psp; + sourceTree = ""; + }; + B398212929239F4300A82429 /* haiku */ = { + isa = PBXGroup; + children = ( + B398212A29239F4300A82429 /* SDL_BApp.h */, + B398212B29239F4300A82429 /* SDL_BeApp.cc */, + B398212C29239F4300A82429 /* SDL_BeApp.h */, + ); + path = haiku; + sourceTree = ""; + }; + B398212D29239F4300A82429 /* winrt */ = { + isa = PBXGroup; + children = ( + B398212E29239F4300A82429 /* SDL2-WinRTResources.rc */, + B398212F29239F4300A82429 /* SDL_winrt_main_NonXAML.cpp */, + B398213029239F4300A82429 /* SDL2-WinRTResource_BlankCursor.cur */, + ); + path = winrt; + sourceTree = ""; + }; + B398213129239F4300A82429 /* android */ = { + isa = PBXGroup; + children = ( + B398213229239F4300A82429 /* SDL_android_main.c */, + ); + path = android; + sourceTree = ""; + }; + B398213329239F4300A82429 /* nacl */ = { + isa = PBXGroup; + children = ( + B398213429239F4300A82429 /* SDL_nacl_main.c */, + ); + path = nacl; + sourceTree = ""; + }; + B398213529239F4300A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B398213629239F4300A82429 /* SDL_windows_main.c */, + B398213729239F4300A82429 /* version.rc */, + ); + path = windows; + sourceTree = ""; + }; + B398213829239F4300A82429 /* cpuinfo */ = { + isa = PBXGroup; + children = ( + B398213929239F4300A82429 /* SDL_cpuinfo.c */, + ); + path = cpuinfo; + sourceTree = ""; + }; + B398213A29239F4300A82429 /* thread */ = { + isa = PBXGroup; + children = ( + B398213B29239F4300A82429 /* SDL_systhread.h */, + B398213C29239F4300A82429 /* os2 */, + B398214329239F4300A82429 /* SDL_thread_c.h */, + B398214429239F4300A82429 /* SDL_thread.c */, + B398214529239F4300A82429 /* psp */, + B398214C29239F4300A82429 /* pthread */, + B398215429239F4300A82429 /* stdcpp */, + B398215A29239F4300A82429 /* generic */, + B398216329239F4300A82429 /* windows */, + ); + path = thread; + sourceTree = ""; + }; + B398213C29239F4300A82429 /* os2 */ = { + isa = PBXGroup; + children = ( + B398213D29239F4300A82429 /* SDL_systls.c */, + B398213E29239F4300A82429 /* SDL_syssem.c */, + B398213F29239F4300A82429 /* SDL_systhread_c.h */, + B398214029239F4300A82429 /* SDL_systls_c.h */, + B398214129239F4300A82429 /* SDL_systhread.c */, + B398214229239F4300A82429 /* SDL_sysmutex.c */, + ); + path = os2; + sourceTree = ""; + }; + B398214529239F4300A82429 /* psp */ = { + isa = PBXGroup; + children = ( + B398214629239F4300A82429 /* SDL_syssem.c */, + B398214729239F4300A82429 /* SDL_systhread_c.h */, + B398214829239F4300A82429 /* SDL_syscond.c */, + B398214929239F4300A82429 /* SDL_systhread.c */, + B398214A29239F4300A82429 /* SDL_sysmutex.c */, + B398214B29239F4300A82429 /* SDL_sysmutex_c.h */, + ); + path = psp; + sourceTree = ""; + }; + B398214C29239F4300A82429 /* pthread */ = { + isa = PBXGroup; + children = ( + B398214D29239F4300A82429 /* SDL_systls.c */, + B398214E29239F4300A82429 /* SDL_syssem.c */, + B398214F29239F4300A82429 /* SDL_systhread_c.h */, + B398215029239F4300A82429 /* SDL_syscond.c */, + B398215129239F4300A82429 /* SDL_systhread.c */, + B398215229239F4300A82429 /* SDL_sysmutex.c */, + B398215329239F4300A82429 /* SDL_sysmutex_c.h */, + ); + path = pthread; + sourceTree = ""; + }; + B398215429239F4300A82429 /* stdcpp */ = { + isa = PBXGroup; + children = ( + B398215529239F4300A82429 /* SDL_syscond.cpp */, + B398215629239F4300A82429 /* SDL_sysmutex.cpp */, + B398215729239F4300A82429 /* SDL_systhread_c.h */, + B398215829239F4300A82429 /* SDL_systhread.cpp */, + B398215929239F4300A82429 /* SDL_sysmutex_c.h */, + ); + path = stdcpp; + sourceTree = ""; + }; + B398215A29239F4300A82429 /* generic */ = { + isa = PBXGroup; + children = ( + B398215B29239F4300A82429 /* SDL_systls.c */, + B398215C29239F4300A82429 /* SDL_syssem.c */, + B398215D29239F4300A82429 /* SDL_systhread_c.h */, + B398215E29239F4300A82429 /* SDL_syscond.c */, + B398215F29239F4300A82429 /* SDL_systhread.c */, + B398216029239F4300A82429 /* SDL_sysmutex.c */, + B398216129239F4300A82429 /* SDL_sysmutex_c.h */, + B398216229239F4300A82429 /* SDL_syscond_c.h */, + ); + path = generic; + sourceTree = ""; + }; + B398216329239F4300A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B398216429239F4300A82429 /* SDL_systls.c */, + B398216529239F4300A82429 /* SDL_syssem.c */, + B398216629239F4300A82429 /* SDL_syscond_srw.c */, + B398216729239F4300A82429 /* SDL_systhread_c.h */, + B398216829239F4300A82429 /* SDL_systhread.c */, + B398216929239F4300A82429 /* SDL_sysmutex.c */, + B398216A29239F4300A82429 /* SDL_sysmutex_c.h */, + ); + path = windows; + sourceTree = ""; + }; + B398216B29239F4300A82429 /* loadso */ = { + isa = PBXGroup; + children = ( + B398216C29239F4300A82429 /* dummy */, + B398216E29239F4300A82429 /* os2 */, + B398217029239F4300A82429 /* windows */, + B398217229239F4300A82429 /* dlopen */, + ); + path = loadso; + sourceTree = ""; + }; + B398216C29239F4300A82429 /* dummy */ = { + isa = PBXGroup; + children = ( + B398216D29239F4300A82429 /* SDL_sysloadso.c */, + ); + path = dummy; + sourceTree = ""; + }; + B398216E29239F4300A82429 /* os2 */ = { + isa = PBXGroup; + children = ( + B398216F29239F4300A82429 /* SDL_sysloadso.c */, + ); + path = os2; + sourceTree = ""; + }; + B398217029239F4300A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B398217129239F4300A82429 /* SDL_sysloadso.c */, + ); + path = windows; + sourceTree = ""; + }; + B398217229239F4300A82429 /* dlopen */ = { + isa = PBXGroup; + children = ( + B398217329239F4300A82429 /* SDL_sysloadso.c */, + ); + path = dlopen; + sourceTree = ""; + }; + B398217629239F4300A82429 /* libelf */ = { + isa = PBXGroup; + children = ( + B398217729239F4300A82429 /* debug.h */, + B398217829239F4300A82429 /* elf64.h */, + B398217929239F4300A82429 /* elf64.cpp */, + B398217A29239F4300A82429 /* elf.cpp */, + B398217B29239F4300A82429 /* elf.h */, + B398217C29239F4300A82429 /* elf32.h */, + B398217D29239F4300A82429 /* elf32.cpp */, + ); + path = libelf; + sourceTree = ""; + }; + B398217E29239F4300A82429 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B398217F29239F4300A82429 /* encodings */, + B398218129239F4300A82429 /* vfs */, + B398218329239F4300A82429 /* compat */, + B398218729239F4300A82429 /* glsym */, + B398219029239F4300A82429 /* file */, + B398219329239F4300A82429 /* include */, + B39821E929239F4300A82429 /* memmap */, + B39821EB29239F4300A82429 /* glsm */, + B39821ED29239F4300A82429 /* vulkan */, + B39821EF29239F4300A82429 /* string */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B398217F29239F4300A82429 /* encodings */ = { + isa = PBXGroup; + children = ( + B398218029239F4300A82429 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B398218129239F4300A82429 /* vfs */ = { + isa = PBXGroup; + children = ( + B398218229239F4300A82429 /* vfs_implementation.c */, + ); + path = vfs; + sourceTree = ""; + }; + B398218329239F4300A82429 /* compat */ = { + isa = PBXGroup; + children = ( + B398218429239F4300A82429 /* compat_strl.c */, + B398218529239F4300A82429 /* compat_strcasestr.c */, + B398218629239F4300A82429 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B398218729239F4300A82429 /* glsym */ = { + isa = PBXGroup; + children = ( + B398218829239F4300A82429 /* glsym_es3.c */, + B398218929239F4300A82429 /* glsym_gl.c */, + B398218A29239F4300A82429 /* README.md */, + B398218B29239F4300A82429 /* glsym_es2.c */, + B398218C29239F4300A82429 /* rglgen.c */, + B398218D29239F4300A82429 /* glgen.py */, + B398218E29239F4300A82429 /* xglgen.py */, + B398218F29239F4300A82429 /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B398219029239F4300A82429 /* file */ = { + isa = PBXGroup; + children = ( + B398219129239F4300A82429 /* file_path.c */, + B398219229239F4300A82429 /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B398219329239F4300A82429 /* include */ = { + isa = PBXGroup; + children = ( + B398219429239F4300A82429 /* encodings */, + B398219729239F4300A82429 /* memalign.h */, + B398219829239F4300A82429 /* libretro_dspfilter.h */, + B398219929239F4300A82429 /* vfs */, + B398219D29239F4300A82429 /* cdrom */, + B398219F29239F4300A82429 /* libco.h */, + B39821A029239F4300A82429 /* compat */, + B39821B629239F4300A82429 /* retro_common_api.h */, + B39821B729239F4300A82429 /* retro_timers.h */, + B39821B829239F4300A82429 /* glsym */, + B39821C229239F4300A82429 /* file */, + B39821C429239F4300A82429 /* retro_environment.h */, + B39821C529239F4300A82429 /* retro_dirent.h */, + B39821C629239F4300A82429 /* retro_inline.h */, + B39821C729239F4300A82429 /* retro_math.h */, + B39821C829239F4300A82429 /* libchdr */, + B39821D229239F4300A82429 /* retro_miscellaneous.h */, + B39821D329239F4300A82429 /* clamping.h */, + B39821D429239F4300A82429 /* boolean.h */, + B39821D529239F4300A82429 /* libretro_gskit_ps2.h */, + B39821D629239F4300A82429 /* glsm */, + B39821D929239F4300A82429 /* memmap.h */, + B39821DA29239F4300A82429 /* rthreads */, + B39821DE29239F4300A82429 /* libretro.h */, + B39821DF29239F4300A82429 /* vulkan */, + B39821E129239F4300A82429 /* retro_stat.h */, + B39821E229239F4300A82429 /* retro_common.h */, + B39821E329239F4300A82429 /* retro_assert.h */, + B39821E429239F4300A82429 /* string */, + B39821E629239F4300A82429 /* libretro_d3d.h */, + B39821E729239F4300A82429 /* libretro_vulkan.h */, + B39821E829239F4300A82429 /* retro_endianness.h */, + ); + path = include; + sourceTree = ""; + }; + B398219429239F4300A82429 /* encodings */ = { + isa = PBXGroup; + children = ( + B398219529239F4300A82429 /* utf.h */, + B398219629239F4300A82429 /* win32.h */, + ); + path = encodings; + sourceTree = ""; + }; + B398219929239F4300A82429 /* vfs */ = { + isa = PBXGroup; + children = ( + B398219A29239F4300A82429 /* vfs.h */, + B398219B29239F4300A82429 /* vfs_implementation.h */, + B398219C29239F4300A82429 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B398219D29239F4300A82429 /* cdrom */ = { + isa = PBXGroup; + children = ( + B398219E29239F4300A82429 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B39821A029239F4300A82429 /* compat */ = { + isa = PBXGroup; + children = ( + B39821A129239F4300A82429 /* apple_compat.h */, + B39821A229239F4300A82429 /* zutil.h */, + B39821A329239F4300A82429 /* strl.h */, + B39821A429239F4300A82429 /* strcasestr.h */, + B39821A529239F4300A82429 /* msvc */, + B39821A729239F4300A82429 /* fopen_utf8.h */, + B39821A829239F4300A82429 /* zconf.h.in */, + B39821A929239F4300A82429 /* intrinsics.h */, + B39821AA29239F4300A82429 /* posix_string.h */, + B39821AB29239F4300A82429 /* zlib */, + B39821B029239F4300A82429 /* getopt.h */, + B39821B129239F4300A82429 /* fnmatch.h */, + B39821B229239F4300A82429 /* msvc.h */, + B39821B329239F4300A82429 /* zlib.h */, + B39821B429239F4300A82429 /* ifaddrs.h */, + B39821B529239F4300A82429 /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B39821A529239F4300A82429 /* msvc */ = { + isa = PBXGroup; + children = ( + B39821A629239F4300A82429 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B39821AB29239F4300A82429 /* zlib */ = { + isa = PBXGroup; + children = ( + B39821AC29239F4300A82429 /* zutil.h */, + B39821AD29239F4300A82429 /* zconf.h.in */, + B39821AE29239F4300A82429 /* zlib.h */, + B39821AF29239F4300A82429 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B39821B829239F4300A82429 /* glsym */ = { + isa = PBXGroup; + children = ( + B39821B929239F4300A82429 /* rglgen.h */, + B39821BA29239F4300A82429 /* glsym_es2.h */, + B39821BB29239F4300A82429 /* glsym.h */, + B39821BC29239F4300A82429 /* rglgen_headers.h */, + B39821BD29239F4300A82429 /* switch */, + B39821C029239F4300A82429 /* glsym_es3.h */, + B39821C129239F4300A82429 /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B39821BD29239F4300A82429 /* switch */ = { + isa = PBXGroup; + children = ( + B39821BE29239F4300A82429 /* nx_gl.h */, + B39821BF29239F4300A82429 /* nx_glsym.h */, + ); + path = switch; + sourceTree = ""; + }; + B39821C229239F4300A82429 /* file */ = { + isa = PBXGroup; + children = ( + B39821C329239F4300A82429 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B39821C829239F4300A82429 /* libchdr */ = { + isa = PBXGroup; + children = ( + B39821C929239F4300A82429 /* lzma.h */, + B39821CA29239F4300A82429 /* minmax.h */, + B39821CB29239F4300A82429 /* flac.h */, + B39821CC29239F4300A82429 /* bitstream.h */, + B39821CD29239F4300A82429 /* cdrom.h */, + B39821CE29239F4300A82429 /* chd.h */, + B39821CF29239F4300A82429 /* libchdr_zlib.h */, + B39821D029239F4300A82429 /* huffman.h */, + B39821D129239F4300A82429 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B39821D629239F4300A82429 /* glsm */ = { + isa = PBXGroup; + children = ( + B39821D729239F4300A82429 /* glsm.h */, + B39821D829239F4300A82429 /* glsmsym.h */, + ); + path = glsm; + sourceTree = ""; + }; + B39821DA29239F4300A82429 /* rthreads */ = { + isa = PBXGroup; + children = ( + B39821DB29239F4300A82429 /* rsemaphore.h */, + B39821DC29239F4300A82429 /* rthreads.h */, + B39821DD29239F4300A82429 /* async_job.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B39821DF29239F4300A82429 /* vulkan */ = { + isa = PBXGroup; + children = ( + B39821E029239F4300A82429 /* vulkan_symbol_wrapper.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B39821E429239F4300A82429 /* string */ = { + isa = PBXGroup; + children = ( + B39821E529239F4300A82429 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B39821E929239F4300A82429 /* memmap */ = { + isa = PBXGroup; + children = ( + B39821EA29239F4300A82429 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B39821EB29239F4300A82429 /* glsm */ = { + isa = PBXGroup; + children = ( + B39821EC29239F4300A82429 /* glsm.c */, + ); + path = glsm; + sourceTree = ""; + }; + B39821ED29239F4300A82429 /* vulkan */ = { + isa = PBXGroup; + children = ( + B39821EE29239F4300A82429 /* vulkan_symbol_wrapper.c */, + ); + path = vulkan; + sourceTree = ""; + }; + B39821EF29239F4300A82429 /* string */ = { + isa = PBXGroup; + children = ( + B39821F029239F4300A82429 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B39821F129239F4300A82429 /* chdpsr */ = { + isa = PBXGroup; + children = ( + B39821F229239F4300A82429 /* cdipsr.cpp */, + B39821F329239F4300A82429 /* cdipsr.h */, + ); + path = chdpsr; + sourceTree = ""; + }; + B39821F429239F4300A82429 /* xxHash */ = { + isa = PBXGroup; + children = ( + B39821F529239F4300A82429 /* libxxhash.pc.in */, + B39821F629239F4300A82429 /* xxhash.h */, + B39821F729239F4300A82429 /* LICENSE */, + B39821F829239F4300A82429 /* xxhsum.1 */, + B39821F929239F4300A82429 /* CHANGELOG */, + B39821FA29239F4300A82429 /* Makefile */, + B39821FB29239F4300A82429 /* tests */, + B398221E29239F4300A82429 /* README.md */, + B398221F29239F4300A82429 /* xxhsum.1.md */, + B398222029239F4300A82429 /* cmake_unofficial */, + B398222529239F4300A82429 /* xxhash.c */, + B398222629239F4300A82429 /* appveyor.yml */, + B398222729239F4300A82429 /* .gitignore */, + B398222829239F4300A82429 /* xxhsum.c */, + B398222929239F4300A82429 /* .gitattributes */, + B398222A29239F4300A82429 /* xxh3.h */, + B398222B29239F4300A82429 /* doc */, + B398222E29239F4300A82429 /* .travis.yml */, + ); + path = xxHash; + sourceTree = ""; + }; + B39821FB29239F4300A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B39821FC29239F4300A82429 /* bench */, + B398220A29239F4300A82429 /* Makefile */, + B398220B29239F4300A82429 /* generate_unicode_test.c */, + B398220C29239F4300A82429 /* multiInclude.c */, + B398220D29239F4300A82429 /* collisions */, + ); + path = tests; + sourceTree = ""; + }; + B39821FC29239F4300A82429 /* bench */ = { + isa = PBXGroup; + children = ( + B39821FD29239F4300A82429 /* benchHash.h */, + B39821FE29239F4300A82429 /* bhDisplay.c */, + B39821FF29239F4300A82429 /* LICENSE */, + B398220029239F4300A82429 /* hashes.h */, + B398220129239F4300A82429 /* Makefile */, + B398220229239F4300A82429 /* benchfn.h */, + B398220329239F4300A82429 /* timefn.h */, + B398220429239F4300A82429 /* benchHash.c */, + B398220529239F4300A82429 /* bhDisplay.h */, + B398220629239F4300A82429 /* main.c */, + B398220729239F4300A82429 /* .gitignore */, + B398220829239F4300A82429 /* timefn.c */, + B398220929239F4300A82429 /* benchfn.c */, + ); + path = bench; + sourceTree = ""; + }; + B398220D29239F4300A82429 /* collisions */ = { + isa = PBXGroup; + children = ( + B398220E29239F4300A82429 /* pool.h */, + B398220F29239F4300A82429 /* LICENSE */, + B398221029239F4300A82429 /* hashes.h */, + B398221129239F4300A82429 /* Makefile */, + B398221229239F4300A82429 /* threading.h */, + B398221329239F4300A82429 /* README.md */, + B398221429239F4300A82429 /* allcodecs */, + B398221829239F4300A82429 /* main.c */, + B398221929239F4300A82429 /* .gitignore */, + B398221A29239F4300A82429 /* sort.cc */, + B398221B29239F4300A82429 /* pool.c */, + B398221C29239F4300A82429 /* threading.c */, + B398221D29239F4300A82429 /* sort.hh */, + ); + path = collisions; + sourceTree = ""; + }; + B398221429239F4300A82429 /* allcodecs */ = { + isa = PBXGroup; + children = ( + B398221529239F4300A82429 /* dummy.c */, + B398221629239F4300A82429 /* README.md */, + B398221729239F4300A82429 /* dummy.h */, + ); + path = allcodecs; + sourceTree = ""; + }; + B398222029239F4300A82429 /* cmake_unofficial */ = { + isa = PBXGroup; + children = ( + B398222129239F4300A82429 /* CMakeLists.txt */, + B398222229239F4300A82429 /* README.md */, + B398222329239F4300A82429 /* xxHashConfig.cmake.in */, + B398222429239F4300A82429 /* .gitignore */, + ); + path = cmake_unofficial; + sourceTree = ""; + }; + B398222B29239F4300A82429 /* doc */ = { + isa = PBXGroup; + children = ( + B398222C29239F4300A82429 /* README.md */, + B398222D29239F4300A82429 /* xxhash_spec.md */, + ); + path = doc; + sourceTree = ""; + }; + B398222F29239F4300A82429 /* libzip */ = { + isa = PBXGroup; + children = ( + B398223029239F4300A82429 /* man */, + B398236329239F4400A82429 /* CMakeLists.txt */, + B398236429239F4400A82429 /* LICENSE */, + B398236529239F4400A82429 /* cmake */, + B398236A29239F4400A82429 /* AUTHORS */, + B398236B29239F4400A82429 /* cmake-zipconf.h.in */, + B398236C29239F4400A82429 /* regress */, + B398236F29239F4400A82429 /* NEWS.md */, + B398237029239F4400A82429 /* libzip.pc.in */, + B398237129239F4400A82429 /* vstudio */, + B398237629239F4400A82429 /* cmake-config.h.in */, + B398237729239F4400A82429 /* cmake-compat */, + B398238129239F4400A82429 /* INSTALL.md */, + B398238229239F4400A82429 /* TODO.md */, + B398238329239F4400A82429 /* README.md */, + B398238429239F4400A82429 /* examples */, + B398238829239F4400A82429 /* android */, + B398238D29239F4400A82429 /* lib */, + B398241D29239F4400A82429 /* API-CHANGES.md */, + B398241E29239F4400A82429 /* THANKS */, + B398241F29239F4400A82429 /* developer-xcode */, + B398242A29239F4400A82429 /* libzip-config.cmake.in */, + ); + path = libzip; + sourceTree = ""; + }; + B398223029239F4300A82429 /* man */ = { + isa = PBXGroup; + children = ( + B398223129239F4300A82429 /* zip_set_archive_comment.html */, + B398223229239F4300A82429 /* ZIP_SOURCE_GET_ARGS.mdoc */, + B398223329239F4300A82429 /* zip_ftell.man */, + B398223429239F4300A82429 /* zip_error_strerror.man */, + B398223529239F4300A82429 /* libzip.html */, + B398223629239F4300A82429 /* zip_error_get.html */, + B398223729239F4300A82429 /* zip_encryption_method_supported.html */, + B398223829239F4300A82429 /* zip_error_set.html */, + B398223929239F4300A82429 /* zip_get_error.html */, + B398223A29239F4300A82429 /* zip_add.html */, + B398223B29239F4300A82429 /* zip_source_tell_write.html */, + B398223C29239F4300A82429 /* zip_fread.html */, + B398223D29239F4300A82429 /* zip_error_to_data.html */, + B398223E29239F4300A82429 /* zip_file_get_external_attributes.man */, + B398223F29239F4300A82429 /* zip_error_system_type.html */, + B398224029239F4300A82429 /* zip_source_function.man */, + B398224129239F4300A82429 /* zip_file_add.man */, + B398224229239F4300A82429 /* zip_source_buffer_fragment.man */, + B398224329239F4300A82429 /* zip_file_add.mdoc */, + B398224429239F4300A82429 /* zip_error_get_sys_type.mdoc */, + B398224529239F4300A82429 /* zip_get_error.man */, + B398224629239F4300A82429 /* zip_delete.html */, + B398224729239F4300A82429 /* zip_source_error.html */, + B398224829239F4300A82429 /* zip_source_is_deleted.mdoc */, + B398224929239F4300A82429 /* zip_set_default_password.man */, + B398224A29239F4300A82429 /* zip_file_set_encryption.man */, + B398224B29239F4300A82429 /* zip_get_num_entries.man */, + B398224C29239F4300A82429 /* zip_get_file_comment.man */, + B398224D29239F4300A82429 /* zip_set_file_compression.man */, + B398224E29239F4300A82429 /* libzip.man */, + B398224F29239F4300A82429 /* zip_source_seek.man */, + B398225029239F4300A82429 /* zip_file_attributes_init.man */, + B398225129239F4300A82429 /* zip_dir_add.man */, + B398225229239F4300A82429 /* zip_source_seek_compute_offset.html */, + B398225329239F4300A82429 /* zip_source_zip.man */, + B398225429239F4300A82429 /* zip_error_code_system.man */, + B398225529239F4300A82429 /* zip_source_make_command_bitmap.html */, + B398225629239F4300A82429 /* zip_source_buffer_fragment.mdoc */, + B398225729239F4300A82429 /* zip_source_filep.mdoc */, + B398225829239F4300A82429 /* zip_unchange.man */, + B398225929239F4300A82429 /* zip_source_zip.mdoc */, + B398225A29239F4300A82429 /* zip_error_fini.html */, + B398225B29239F4300A82429 /* zip_file_attributes_init.html */, + B398225C29239F4300A82429 /* zip_source_read.mdoc */, + B398225D29239F4300A82429 /* zip_error_to_str.man */, + B398225E29239F4300A82429 /* zip_delete.man */, + B398225F29239F4300A82429 /* zip_file_get_external_attributes.html */, + B398226029239F4300A82429 /* zip_file_rename.mdoc */, + B398226129239F4300A82429 /* zip_set_file_comment.man */, + B398226229239F4300A82429 /* zip_source_make_command_bitmap.man */, + B398226329239F4300A82429 /* CMakeLists.txt */, + B398226429239F4300A82429 /* zip_set_file_compression.html */, + B398226529239F4300A82429 /* zip_source_begin_write.man */, + B398226629239F4300A82429 /* zip_source_file.man */, + B398226729239F4300A82429 /* zip_close.mdoc */, + B398226829239F4300A82429 /* zip_source_seek_write.mdoc */, + B398226929239F4300A82429 /* zip_stat_init.man */, + B398226A29239F4300A82429 /* zip_source_buffer.man */, + B398226B29239F4300A82429 /* zip_source_win32a.html */, + B398226C29239F4300A82429 /* zip_file_set_external_attributes.man */, + B398226D29239F4300A82429 /* zip_stat.mdoc */, + B398226E29239F4300A82429 /* zip_source_stat.html */, + B398226F29239F4300A82429 /* zip_name_locate.html */, + B398227029239F4300A82429 /* zip_file_set_comment.mdoc */, + B398227129239F4300A82429 /* zip_error_code_system.mdoc */, + B398227229239F4300A82429 /* zip_source.html */, + B398227329239F4300A82429 /* zip_source_write.html */, + B398227429239F4300A82429 /* zip_get_name.mdoc */, + B398227529239F4300A82429 /* zip_error_system_type.man */, + B398227629239F4300A82429 /* zip_errors.html */, + B398227729239F4300A82429 /* zip_source_close.mdoc */, + B398227829239F4300A82429 /* zip_set_default_password.mdoc */, + B398227929239F4300A82429 /* make_zip_errors.sh */, + B398227A29239F4300A82429 /* zip_name_locate.mdoc */, + B398227B29239F4300A82429 /* zip_error_code_system.html */, + B398227C29239F4300A82429 /* zip_file_set_comment.html */, + B398227D29239F4300A82429 /* zip_source_stat.mdoc */, + B398227E29239F4300A82429 /* zip_source.mdoc */, + B398227F29239F4300A82429 /* zip_source_win32a.mdoc */, + B398228029239F4300A82429 /* zip_stat.html */, + B398228129239F4300A82429 /* zip_source_tell.man */, + B398228229239F4300A82429 /* zip_source_close.html */, + B398228329239F4300A82429 /* zip_set_default_password.html */, + B398228429239F4300A82429 /* zip_get_name.html */, + B398228529239F4300A82429 /* zip_source_write.mdoc */, + B398228629239F4300A82429 /* zip_errors.mdoc */, + B398228729239F4300A82429 /* zip_unchange_archive.man */, + B398228829239F4300A82429 /* zip_file_rename.html */, + B398228929239F4300A82429 /* zip_file_get_comment.man */, + B398228A29239F4300A82429 /* zip_file_get_external_attributes.mdoc */, + B398228B29239F4300A82429 /* zip_source.man */, + B398228C29239F4300A82429 /* zip_compression_method_supported.man */, + B398228D29239F4300A82429 /* zip_set_file_compression.mdoc */, + B398228E29239F4300A82429 /* zip_file_attributes_init.mdoc */, + B398228F29239F4300A82429 /* zipcmp.man */, + B398229029239F4300A82429 /* zip_source_read.html */, + B398229129239F4300A82429 /* zip_fseek.man */, + B398229229239F4300A82429 /* zip_source_seek_write.html */, + B398229329239F4300A82429 /* zip_close.html */, + B398229429239F4300A82429 /* zip_get_archive_comment.man */, + B398229529239F4300A82429 /* ziptool.man */, + B398229629239F4300A82429 /* zip_source_is_deleted.html */, + B398229729239F4300A82429 /* zip_source_error.mdoc */, + B398229829239F4300A82429 /* zip_file_extra_field_get.man */, + B398229929239F4300A82429 /* zip_error_system_type.mdoc */, + B398229A29239F4300A82429 /* zip_error_get_sys_type.html */, + B398229B29239F4300A82429 /* zip_file_add.html */, + B398229C29239F4300A82429 /* zip_fopen_encrypted.man */, + B398229D29239F4300A82429 /* zip_delete.mdoc */, + B398229E29239F4300A82429 /* zip_source_buffer_fragment.html */, + B398229F29239F4300A82429 /* zip_source_make_command_bitmap.mdoc */, + B39822A029239F4300A82429 /* zip_error_fini.mdoc */, + B39822A129239F4300A82429 /* zip_source_zip.html */, + B39822A229239F4300A82429 /* zip_source_filep.html */, + B39822A329239F4300A82429 /* handle_links */, + B39822A429239F4300A82429 /* zip_source_seek_compute_offset.mdoc */, + B39822A529239F4300A82429 /* zip_error_to_data.man */, + B39822A629239F4300A82429 /* ZIP_SOURCE_GET_ARGS.html */, + B39822A729239F4300A82429 /* zip_source_filep.man */, + B39822A829239F4300A82429 /* zip_source_commit_write.man */, + B39822A929239F4300A82429 /* zip_error_get.mdoc */, + B39822AA29239F4300A82429 /* libzip.mdoc */, + B39822AB29239F4300A82429 /* zip_set_archive_comment.mdoc */, + B39822AC29239F4300A82429 /* zip_error_set.man */, + B39822AD29239F4300A82429 /* zip_get_error.mdoc */, + B39822AE29239F4300A82429 /* zip_add.mdoc */, + B39822AF29239F4300A82429 /* zip_error_set.mdoc */, + B39822B029239F4300A82429 /* zip_error_to_data.mdoc */, + B39822B129239F4300A82429 /* zip_source_tell_write.mdoc */, + B39822B229239F4300A82429 /* zip_fread.mdoc */, + B39822B329239F4300A82429 /* zip_encryption_method_supported.mdoc */, + B39822B429239F4300A82429 /* zip_source_seek_write.man */, + B39822B529239F4300A82429 /* zipcmp.mdoc */, + B39822B629239F4300A82429 /* zip_name_locate.man */, + B39822B729239F4300A82429 /* zip_source_win32handle.man */, + B39822B829239F4300A82429 /* zip_ftell.html */, + B39822B929239F4300A82429 /* zip_error_init.man */, + B39822BA29239F4300A82429 /* zip_dir_add.mdoc */, + B39822BB29239F4300A82429 /* zip_source_file.mdoc */, + B39822BC29239F4300A82429 /* zip_error_clear.mdoc */, + B39822BD29239F4300A82429 /* zip_source_win32w.man */, + B39822BE29239F4300A82429 /* zipmerge.mdoc */, + B39822BF29239F4300A82429 /* zip_source_win32a.man */, + B39822C029239F4300A82429 /* zip_unchange.html */, + B39822C129239F4300A82429 /* zip_libzip_version.html */, + B39822C229239F4300A82429 /* zip_source_function.html */, + B39822C329239F4300A82429 /* fix-man-links.sh */, + B39822C429239F4300A82429 /* zip_error_get_sys_type.man */, + B39822C529239F4300A82429 /* zip_error_clear.man */, + B39822C629239F4300A82429 /* zip_fclose.man */, + B39822C729239F4300A82429 /* zip_file_set_encryption.html */, + B39822C829239F4300A82429 /* zip_fdopen.mdoc */, + B39822C929239F4300A82429 /* zip_set_archive_comment.man */, + B39822CA29239F4300A82429 /* zip_source_stat.man */, + B39822CB29239F4300A82429 /* zip_file_set_external_attributes.html */, + B39822CC29239F4300A82429 /* zip_fseek.mdoc */, + B39822CD29239F4300A82429 /* zip_source_tell_write.man */, + B39822CE29239F4300A82429 /* zip_file_set_mtime.html */, + B39822CF29239F4300A82429 /* zip_source_win32handle.html */, + B39822D029239F4300A82429 /* zip_add_dir.man */, + B39822D129239F4300A82429 /* zip_error_init.html */, + B39822D229239F4300A82429 /* ZIP_SOURCE_GET_ARGS.man */, + B39822D329239F4300A82429 /* zip_errors.man */, + B39822D429239F4300A82429 /* zip_file_strerror.html */, + B39822D529239F4300A82429 /* zip_get_archive_flag.mdoc */, + B39822D629239F4300A82429 /* zip_source_free.man */, + B39822D729239F4300A82429 /* zip_unchange_all.man */, + B39822D829239F4300A82429 /* zip_set_file_comment.html */, + B39822D929239F4300A82429 /* zip_open.mdoc */, + B39822DA29239F4300A82429 /* zip_source_open.html */, + B39822DB29239F4300A82429 /* zip_add_dir.mdoc */, + B39822DC29239F4300A82429 /* links */, + B39822DD29239F4300A82429 /* zip_fclose.mdoc */, + B39822DE29239F4300A82429 /* zip_file_extra_fields_count.mdoc */, + B39822DF29239F4300A82429 /* zip_file_extra_field_delete.html */, + B39822E029239F4300A82429 /* zip_fdopen.man */, + B39822E129239F4300A82429 /* zip_encryption_method_supported.man */, + B39822E229239F4300A82429 /* mkdocset.pl */, + B39822E329239F4300A82429 /* zip_file_extra_field_get.mdoc */, + B39822E429239F4300A82429 /* zip_file_get_error.html */, + B39822E529239F4300A82429 /* zip_compression_method_supported.mdoc */, + B39822E629239F4300A82429 /* zip_source_rollback_write.mdoc */, + B39822E729239F4300A82429 /* update-man.cmake */, + B39822E829239F4300A82429 /* zip_close.man */, + B39822E929239F4300A82429 /* zip_file_set_comment.man */, + B39822EA29239F4300A82429 /* zip_source_buffer.mdoc */, + B39822EB29239F4300A82429 /* zip_fopen_encrypted.mdoc */, + B39822EC29239F4300A82429 /* zip_source_tell.mdoc */, + B39822ED29239F4300A82429 /* zip_file_extra_fields_count.man */, + B39822EE29239F4300A82429 /* zip_get_num_entries.mdoc */, + B39822EF29239F4300A82429 /* zip_source_open.man */, + B39822F029239F4300A82429 /* zip_file_set_mtime.man */, + B39822F129239F4300A82429 /* zip_rename.man */, + B39822F229239F4300A82429 /* zip_error_to_str.mdoc */, + B39822F329239F4300A82429 /* zip_register_progress_callback_with_state.html */, + B39822F429239F4300A82429 /* zip_unchange_archive.mdoc */, + B39822F529239F4300A82429 /* zip_register_progress_callback_with_state.man */, + B39822F629239F4300A82429 /* zip_file_extra_field_set.mdoc */, + B39822F729239F4300A82429 /* zip_source_begin_write.mdoc */, + B39822F829239F4300A82429 /* zip_source_commit_write.html */, + B39822F929239F4300A82429 /* zip_unchange_all.html */, + B39822FA29239F4300A82429 /* zip_error_code_zip.mdoc */, + B39822FB29239F4300A82429 /* zip_file_get_comment.html */, + B39822FC29239F4300A82429 /* zip_discard.html */, + B39822FD29239F4300A82429 /* zip_set_archive_flag.mdoc */, + B39822FE29239F4300A82429 /* zip_fopen.mdoc */, + B39822FF29239F4300A82429 /* zip_get_file_comment.html */, + B398230029239F4300A82429 /* zip_register_progress_callback.mdoc */, + B398230129239F4300A82429 /* zip_add.man */, + B398230229239F4300A82429 /* zip_libzip_version.man */, + B398230329239F4300A82429 /* zip_rename.mdoc */, + B398230429239F4300A82429 /* zip_source_keep.html */, + B398230529239F4300A82429 /* zip_get_num_files.mdoc */, + B398230629239F4300A82429 /* ziptool.html */, + B398230729239F4300A82429 /* zip_source_error.man */, + B398230829239F4300A82429 /* zip_source_free.mdoc */, + B398230929239F4300A82429 /* zip_source_rollback_write.man */, + B398230A29239F4300A82429 /* zip_source_win32w.mdoc */, + B398230B29239F4300A82429 /* zip_stat_init.html */, + B398230C29239F4300A82429 /* zip_error_strerror.mdoc */, + B398230D29239F4300A82429 /* zip_fread.man */, + B398230E29239F4300A82429 /* zip_get_archive_comment.html */, + B398230F29239F4300A82429 /* zip_source_seek.html */, + B398231029239F4300A82429 /* zip_get_name.man */, + B398231129239F4300A82429 /* zip_register_progress_callback.html */, + B398231229239F4300A82429 /* zip_error_get.man */, + B398231329239F4300A82429 /* zip_get_num_files.html */, + B398231429239F4300A82429 /* zip_source_keep.mdoc */, + B398231529239F4300A82429 /* zip_rename.html */, + B398231629239F4400A82429 /* ziptool.mdoc */, + B398231729239F4400A82429 /* zip_source_free.html */, + B398231829239F4400A82429 /* zip_file_get_comment.mdoc */, + B398231929239F4400A82429 /* zip_error_code_zip.html */, + B398231A29239F4400A82429 /* zip_discard.mdoc */, + B398231B29239F4400A82429 /* zip_source_begin_write.html */, + B398231C29239F4400A82429 /* zip_source_commit_write.mdoc */, + B398231D29239F4400A82429 /* zip_unchange_all.mdoc */, + B398231E29239F4400A82429 /* zipmerge.man */, + B398231F29239F4400A82429 /* zip_get_file_comment.mdoc */, + B398232029239F4400A82429 /* zip_file_get_error.man */, + B398232129239F4400A82429 /* zip_file_extra_field_delete.man */, + B398232229239F4400A82429 /* zip_set_archive_flag.html */, + B398232329239F4400A82429 /* zip_fopen.html */, + B398232429239F4400A82429 /* update-html.cmake */, + B398232529239F4400A82429 /* zip_get_archive_comment.mdoc */, + B398232629239F4400A82429 /* zip_discard.man */, + B398232729239F4400A82429 /* zip_source_seek.mdoc */, + B398232829239F4400A82429 /* zip_get_num_files.man */, + B398232929239F4400A82429 /* zip_stat_init.mdoc */, + B398232A29239F4400A82429 /* zip_source_win32w.html */, + B398232B29239F4400A82429 /* zip_stat.man */, + B398232C29239F4400A82429 /* zip_error_strerror.html */, + B398232D29239F4400A82429 /* zip_source_rollback_write.html */, + B398232E29239F4400A82429 /* zip_error_code_zip.man */, + B398232F29239F4400A82429 /* zip_register_progress_callback.man */, + B398233029239F4400A82429 /* zip_file_get_error.mdoc */, + B398233129239F4400A82429 /* zip_compression_method_supported.html */, + B398233229239F4400A82429 /* zip_file_extra_field_get.html */, + B398233329239F4400A82429 /* zip_fopen_encrypted.html */, + B398233429239F4400A82429 /* zip_source_buffer.html */, + B398233529239F4400A82429 /* zip_file_strerror.man */, + B398233629239F4400A82429 /* zip_file_extra_fields_count.html */, + B398233729239F4400A82429 /* zip_fclose.html */, + B398233829239F4400A82429 /* zip_file_extra_field_set.man */, + B398233929239F4400A82429 /* zip_file_extra_field_delete.mdoc */, + B398233A29239F4400A82429 /* zip_source_close.man */, + B398233B29239F4400A82429 /* zip_error_to_str.html */, + B398233C29239F4400A82429 /* zip_register_progress_callback_with_state.mdoc */, + B398233D29239F4400A82429 /* zip_set_archive_flag.man */, + B398233E29239F4400A82429 /* zip_unchange_archive.html */, + B398233F29239F4400A82429 /* zip_file_extra_field_set.html */, + B398234029239F4400A82429 /* zip_get_num_entries.html */, + B398234129239F4400A82429 /* zip_source_tell.html */, + B398234229239F4400A82429 /* zip_file_set_mtime.mdoc */, + B398234329239F4400A82429 /* zip_source_seek_compute_offset.man */, + B398234429239F4400A82429 /* zip_source_win32handle.mdoc */, + B398234529239F4400A82429 /* zip_error_fini.man */, + B398234629239F4400A82429 /* zip_error_init.mdoc */, + B398234729239F4400A82429 /* zip_get_archive_flag.man */, + B398234829239F4400A82429 /* zip_file_set_external_attributes.mdoc */, + B398234929239F4400A82429 /* zip_source_keep.man */, + B398234A29239F4400A82429 /* zip_fseek.html */, + B398234B29239F4400A82429 /* zip_fopen.man */, + B398234C29239F4400A82429 /* zip_source_open.mdoc */, + B398234D29239F4400A82429 /* zip_add_dir.html */, + B398234E29239F4400A82429 /* zip_open.html */, + B398234F29239F4400A82429 /* zip_set_file_comment.mdoc */, + B398235029239F4400A82429 /* zip_file_strerror.mdoc */, + B398235129239F4400A82429 /* zip_get_archive_flag.html */, + B398235229239F4400A82429 /* zip_dir_add.html */, + B398235329239F4400A82429 /* zip_ftell.mdoc */, + B398235429239F4400A82429 /* zip_source_file.html */, + B398235529239F4400A82429 /* zip_error_clear.html */, + B398235629239F4400A82429 /* zipcmp.html */, + B398235729239F4400A82429 /* nih-man.css */, + B398235829239F4400A82429 /* zip_open.man */, + B398235929239F4400A82429 /* zip_source_function.mdoc */, + B398235A29239F4400A82429 /* zip_fdopen.html */, + B398235B29239F4400A82429 /* zip_file_rename.man */, + B398235C29239F4400A82429 /* zip_file_set_encryption.mdoc */, + B398235D29239F4400A82429 /* zip_unchange.mdoc */, + B398235E29239F4400A82429 /* zip_source_is_deleted.man */, + B398235F29239F4400A82429 /* zipmerge.html */, + B398236029239F4400A82429 /* zip_source_read.man */, + B398236129239F4400A82429 /* zip_libzip_version.mdoc */, + B398236229239F4400A82429 /* zip_source_write.man */, + ); + path = man; + sourceTree = ""; + }; + B398236529239F4400A82429 /* cmake */ = { + isa = PBXGroup; + children = ( + B398236629239F4400A82429 /* FindMbedTLS.cmake */, + B398236729239F4400A82429 /* FindZstd.cmake */, + B398236829239F4400A82429 /* Dist.cmake */, + B398236929239F4400A82429 /* FindNettle.cmake */, + ); + path = cmake; + sourceTree = ""; + }; + B398236C29239F4400A82429 /* regress */ = { + isa = PBXGroup; + children = ( + B398236D29239F4400A82429 /* nihtest.conf.in */, + B398236E29239F4400A82429 /* runtest.in */, + ); + path = regress; + sourceTree = ""; + }; + B398237129239F4400A82429 /* vstudio */ = { + isa = PBXGroup; + children = ( + B398237229239F4400A82429 /* zlib */, + B398237429239F4400A82429 /* readme.txt */, + B398237529239F4400A82429 /* vsbuild.cmd */, + ); + path = vstudio; + sourceTree = ""; + }; + B398237229239F4400A82429 /* zlib */ = { + isa = PBXGroup; + children = ( + B398237329239F4400A82429 /* unpack_zlib_here.txt */, + ); + path = zlib; + sourceTree = ""; + }; + B398237729239F4400A82429 /* cmake-compat */ = { + isa = PBXGroup; + children = ( + B398237829239F4400A82429 /* FindLibLZMA.cmake */, + B398237929239F4400A82429 /* CheckLibraryExists.cmake */, + B398237A29239F4400A82429 /* CMakePushCheckState.cmake */, + B398237B29239F4400A82429 /* FindPackageHandleStandardArgs.cmake */, + B398237C29239F4400A82429 /* FindBZip2.cmake */, + B398237D29239F4400A82429 /* CheckSymbolExists.cmake */, + B398237E29239F4400A82429 /* FindGnuTLS.cmake */, + B398237F29239F4400A82429 /* FindPackageMessage.cmake */, + B398238029239F4400A82429 /* SelectLibraryConfigurations.cmake */, + ); + path = "cmake-compat"; + sourceTree = ""; + }; + B398238429239F4400A82429 /* examples */ = { + isa = PBXGroup; + children = ( + B398238529239F4400A82429 /* CMakeLists.txt */, + B398238629239F4400A82429 /* windows-open.c */, + B398238729239F4400A82429 /* in-memory.c */, + ); + path = examples; + sourceTree = ""; + }; + B398238829239F4400A82429 /* android */ = { + isa = PBXGroup; + children = ( + B398238929239F4400A82429 /* docker */, + B398238B29239F4400A82429 /* do.sh */, + B398238C29239F4400A82429 /* readme.txt */, + ); + path = android; + sourceTree = ""; + }; + B398238929239F4400A82429 /* docker */ = { + isa = PBXGroup; + children = ( + B398238A29239F4400A82429 /* Dockerfile */, + ); + path = docker; + sourceTree = ""; + }; + B398238D29239F4400A82429 /* lib */ = { + isa = PBXGroup; + children = ( + B398238E29239F4400A82429 /* zip_crypto_gnutls.c */, + B398238F29239F4400A82429 /* zip_source_tell_write.c */, + B398239029239F4400A82429 /* zip_memdup.c */, + B398239129239F4400A82429 /* zip_source_supports.c */, + B398239229239F4400A82429 /* zip_file_get_external_attributes.c */, + B398239329239F4400A82429 /* zip_source_begin_write.c */, + B398239429239F4400A82429 /* zipint.h */, + B398239529239F4400A82429 /* zip_add.c */, + B398239629239F4400A82429 /* zip_get_name.c */, + B398239729239F4400A82429 /* zip_file_strerror.c */, + B398239829239F4400A82429 /* zip_fopen_index.c */, + B398239929239F4400A82429 /* zip_source_commit_write.c */, + B398239A29239F4400A82429 /* zip_source_buffer.c */, + B398239B29239F4400A82429 /* zip_error_clear.c */, + B398239C29239F4400A82429 /* zip_source_stat.c */, + B398239D29239F4400A82429 /* zip_get_archive_comment.c */, + B398239E29239F4400A82429 /* zip_file_rename.c */, + B398239F29239F4400A82429 /* zip_ftell.c */, + B39823A029239F4400A82429 /* zip_discard.c */, + B39823A129239F4400A82429 /* zip_string.c */, + B39823A229239F4400A82429 /* zip_set_name.c */, + B39823A329239F4400A82429 /* zip_entry.c */, + B39823A429239F4400A82429 /* zip_file_set_encryption.c */, + B39823A529239F4400A82429 /* CMakeLists.txt */, + B39823A629239F4400A82429 /* zip_source_open.c */, + B39823A729239F4400A82429 /* zip_set_file_compression.c */, + B39823A829239F4400A82429 /* zip_hash.c */, + B39823A929239F4400A82429 /* zip_file_error_get.c */, + B39823AA29239F4400A82429 /* zip_file_replace.c */, + B39823AB29239F4400A82429 /* zip_crypto_mbedtls.c */, + B39823AC29239F4400A82429 /* zip_file_get_offset.c */, + B39823AD29239F4400A82429 /* zip_unchange.c */, + B39823AE29239F4400A82429 /* zip_new.c */, + B39823AF29239F4400A82429 /* zip_file_set_comment.c */, + B39823B029239F4400A82429 /* zip_random_unix.c */, + B39823B129239F4400A82429 /* zip_close.c */, + B39823B229239F4400A82429 /* zip_source_file_win32_ansi.c */, + B39823B329239F4400A82429 /* zip_crypto.h */, + B39823B429239F4400A82429 /* zip_add_dir.c */, + B39823B529239F4400A82429 /* zip_error_get_sys_type.c */, + B39823B629239F4400A82429 /* zip_source_call.c */, + B39823B729239F4400A82429 /* zip_source_is_deleted.c */, + B39823B829239F4400A82429 /* zip_fopen_encrypted.c */, + B39823B929239F4400A82429 /* zip_set_archive_comment.c */, + B39823BA29239F4400A82429 /* zip_extra_field.c */, + B39823BB29239F4400A82429 /* zip_source_file_stdio.c */, + B39823BC29239F4400A82429 /* zip_dir_add.c */, + B39823BD29239F4400A82429 /* zip_name_locate.c */, + B39823BE29239F4400A82429 /* zip_source_seek_write.c */, + B39823BF29239F4400A82429 /* zip_algorithm_deflate.c */, + B39823C029239F4400A82429 /* zip_unchange_archive.c */, + B39823C129239F4400A82429 /* zip_source_free.c */, + B39823C229239F4400A82429 /* zip_source_file_common.c */, + B39823C329239F4400A82429 /* zip_get_num_files.c */, + B39823C429239F4400A82429 /* zip_pkware.c */, + B39823C529239F4400A82429 /* zip_err_str.c */, + B39823C629239F4400A82429 /* zip_add_entry.c */, + B39823C729239F4400A82429 /* zip_random_uwp.c */, + B39823C829239F4400A82429 /* zip_buffer.c */, + B39823C929239F4400A82429 /* zip_error.c */, + B39823CA29239F4400A82429 /* zip_crypto_win.c */, + B39823CB29239F4400A82429 /* zip_strerror.c */, + B39823CC29239F4400A82429 /* zip_source_seek.c */, + B39823CD29239F4400A82429 /* zip_get_encryption_implementation.c */, + B39823CE29239F4400A82429 /* zip_get_archive_flag.c */, + B39823CF29239F4400A82429 /* zip_source_pkware_encode.c */, + B39823D029239F4400A82429 /* zip_set_archive_flag.c */, + B39823D129239F4400A82429 /* zip_source_zip_new.c */, + B39823D229239F4400A82429 /* zip_source_file_win32.h */, + B39823D329239F4400A82429 /* zip_crypto_openssl.h */, + B39823D429239F4400A82429 /* zip_fdopen.c */, + B39823D529239F4400A82429 /* zip_unchange_data.c */, + B39823D629239F4400A82429 /* zip_crypto_commoncrypto.c */, + B39823D729239F4400A82429 /* zip_source_pkware_decode.c */, + B39823D829239F4400A82429 /* zip_file_set_mtime.c */, + B39823D929239F4400A82429 /* zip_source_file_win32_named.c */, + B39823DA29239F4400A82429 /* zip_set_default_password.c */, + B39823DB29239F4400A82429 /* zip_source_file_stdio_named.c */, + B39823DC29239F4400A82429 /* zip_extra_field_api.c */, + B39823DD29239F4400A82429 /* zip_fread.c */, + B39823DE29239F4400A82429 /* zip_source_rollback_write.c */, + B39823DF29239F4400A82429 /* zip_progress.c */, + B39823E029239F4400A82429 /* zip_rename.c */, + B39823E129239F4400A82429 /* zip_source_zip.c */, + B39823E229239F4400A82429 /* zip_stat_index.c */, + B39823E329239F4400A82429 /* zip_get_num_entries.c */, + B39823E429239F4400A82429 /* zip_source_file.h */, + B39823E529239F4400A82429 /* zip_source_function.c */, + B39823E629239F4400A82429 /* zip_file_set_external_attributes.c */, + B39823E729239F4400A82429 /* zip_fseek.c */, + B39823E829239F4400A82429 /* zip_winzip_aes.c */, + B39823E929239F4400A82429 /* zip_replace.c */, + B39823EA29239F4400A82429 /* zip_delete.c */, + B39823EB29239F4400A82429 /* zip_source_crc.c */, + B39823EC29239F4400A82429 /* zip_source_accept_empty.c */, + B39823ED29239F4400A82429 /* zip_set_file_comment.c */, + B39823EE29239F4400A82429 /* zip_crypto_gnutls.h */, + B39823EF29239F4400A82429 /* zip_stat.c */, + B39823F029239F4400A82429 /* zip_get_file_comment.c */, + B39823F129239F4400A82429 /* zip_algorithm_xz.c */, + B39823F229239F4400A82429 /* zip.h */, + B39823F329239F4400A82429 /* zip_source_close.c */, + B39823F429239F4400A82429 /* zip_source_read.c */, + B39823F529239F4400A82429 /* zip_open.c */, + B39823F629239F4400A82429 /* zip_source_begin_write_cloning.c */, + B39823F729239F4400A82429 /* compat.h */, + B39823F829239F4400A82429 /* zip_crypto_mbedtls.h */, + B39823F929239F4400A82429 /* zip_fopen_index_encrypted.c */, + B39823FA29239F4400A82429 /* zip_source_file_win32_utf8.c */, + B39823FB29239F4400A82429 /* zip_utf-8.c */, + B39823FC29239F4400A82429 /* zip_error_get.c */, + B39823FD29239F4400A82429 /* zip_fclose.c */, + B39823FE29239F4400A82429 /* zip_dirent.c */, + B39823FF29239F4400A82429 /* zip_source_write.c */, + B398240029239F4400A82429 /* zip_file_add.c */, + B398240129239F4400A82429 /* zip_source_error.c */, + B398240229239F4400A82429 /* zip_source_tell.c */, + B398240329239F4400A82429 /* zip_crypto_win.h */, + B398240429239F4400A82429 /* zip_source_get_file_attributes.c */, + B398240529239F4400A82429 /* zip_file_error_clear.c */, + B398240629239F4400A82429 /* zip_source_compress.c */, + B398240729239F4400A82429 /* zip_libzip_version.c */, + B398240829239F4400A82429 /* zip_error_to_str.c */, + B398240929239F4400A82429 /* zip_source_remove.c */, + B398240A29239F4400A82429 /* zip_algorithm_bzip2.c */, + B398240B29239F4400A82429 /* zip_source_file_stdio.h */, + B398240C29239F4400A82429 /* zip_random_win32.c */, + B398240D29239F4400A82429 /* zip_source_window.c */, + B398240E29239F4400A82429 /* zip_file_get_comment.c */, + B398240F29239F4400A82429 /* zip_mkstempm.c */, + B398241029239F4400A82429 /* zip_source_winzip_aes_decode.c */, + B398241129239F4400A82429 /* zip_stat_init.c */, + B398241229239F4400A82429 /* zip_fopen.c */, + B398241329239F4400A82429 /* zip_crypto_openssl.c */, + B398241429239F4400A82429 /* zip_crypto_commoncrypto.h */, + B398241529239F4400A82429 /* zip_algorithm_zstd.c */, + B398241629239F4400A82429 /* zip_unchange_all.c */, + B398241729239F4400A82429 /* zip_io_util.c */, + B398241829239F4400A82429 /* zip_source_winzip_aes_encode.c */, + B398241929239F4400A82429 /* zip_source_layered.c */, + B398241A29239F4400A82429 /* zip_source_file_win32_utf16.c */, + B398241B29239F4400A82429 /* zip_error_strerror.c */, + B398241C29239F4400A82429 /* zip_source_file_win32.c */, + ); + path = lib; + sourceTree = ""; + }; + B398241F29239F4400A82429 /* developer-xcode */ = { + isa = PBXGroup; + children = ( + B398242029239F4400A82429 /* libzip.xcodeproj */, + B398242329239F4400A82429 /* config.h */, + B398242429239F4400A82429 /* README Xcode Project.md */, + B398242529239F4400A82429 /* zip_err_str.c */, + B398242629239F4400A82429 /* extract-version.sh */, + B398242729239F4400A82429 /* mkconfig-h.sh */, + B398242829239F4400A82429 /* zipconf.h */, + B398242929239F4400A82429 /* Info.plist */, + ); + path = "developer-xcode"; + sourceTree = ""; + }; + B398242129239F4400A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B398309829239F4B00A82429 /* libzip.framework */, + B398309A29239F4B00A82429 /* zipmerge */, + B398309C29239F4B00A82429 /* zipcmp */, + B398309E29239F4B00A82429 /* in-memory */, + B39830A029239F4B00A82429 /* add_from_filep */, + B39830A229239F4B00A82429 /* can_clone_file */, + B39830A429239F4B00A82429 /* fopen_unchanged */, + B39830A629239F4B00A82429 /* fread */, + B39830A829239F4B00A82429 /* hole */, + B39830AA29239F4B00A82429 /* ziptool */, + B39830AC29239F4B00A82429 /* tryopen */, + B39830AE29239F4B00A82429 /* ziptool_regress */, + ); + name = Products; + sourceTree = ""; + }; + B398242B29239F4400A82429 /* glm */ = { + isa = PBXGroup; + children = ( + B398242C29239F4400A82429 /* copying.txt */, + B398242D29239F4400A82429 /* CMakeLists.txt */, + B398242E29239F4400A82429 /* test */, + B39824EB29239F4400A82429 /* util */, + B39824F029239F4400A82429 /* readme.md */, + B39824F129239F4400A82429 /* doc */, + B398285E29239F4700A82429 /* manual.md */, + B398285F29239F4700A82429 /* glm */, + ); + path = glm; + sourceTree = ""; + }; + B398242E29239F4400A82429 /* test */ = { + isa = PBXGroup; + children = ( + B398242F29239F4400A82429 /* glm.cppcheck */, + B398243029239F4400A82429 /* CMakeLists.txt */, + B398243129239F4400A82429 /* core */, + B398246A29239F4400A82429 /* ext */, + B398248729239F4400A82429 /* bug */, + B398248A29239F4400A82429 /* gtc */, + B39824A129239F4400A82429 /* gtx */, + B39824E329239F4400A82429 /* perf */, + ); + path = test; + sourceTree = ""; + }; + B398243129239F4400A82429 /* core */ = { + isa = PBXGroup; + children = ( + B398243229239F4400A82429 /* core_cpp_constexpr.cpp */, + B398243329239F4400A82429 /* core_force_inline.cpp */, + B398243429239F4400A82429 /* core_func_integer_bit_count.cpp */, + B398243529239F4400A82429 /* CMakeLists.txt */, + B398243629239F4400A82429 /* core_force_xyzw_only.cpp */, + B398243729239F4400A82429 /* core_force_left_handed.cpp */, + B398243829239F4400A82429 /* core_func_integer.cpp */, + B398243929239F4400A82429 /* core_setup_force_cxx98.cpp */, + B398243A29239F4400A82429 /* core_setup_message.cpp */, + B398243B29239F4400A82429 /* core_func_common.cpp */, + B398243C29239F4400A82429 /* core_force_quat_wxyz.cpp */, + B398243D29239F4400A82429 /* core_force_explicit_ctor.cpp */, + B398243E29239F4400A82429 /* core_type_length.cpp */, + B398243F29239F4400A82429 /* core_force_arch_unknown.cpp */, + B398244029239F4400A82429 /* core_setup_precision.cpp */, + B398244129239F4400A82429 /* core_func_exponential.cpp */, + B398244229239F4400A82429 /* core_setup_force_size_t_length.cpp */, + B398244329239F4400A82429 /* core_cpp_defaulted_ctor.cpp */, + B398244429239F4400A82429 /* core_func_packing.cpp */, + B398244529239F4400A82429 /* core_force_ctor_init.cpp */, + B398244629239F4400A82429 /* core_func_geometric.cpp */, + B398244729239F4400A82429 /* core_type_ctor.cpp */, + B398244829239F4400A82429 /* core_func_trigonometric.cpp */, + B398244929239F4400A82429 /* core_setup_platform_unknown.cpp */, + B398244A29239F4400A82429 /* core_func_integer_find_msb.cpp */, + B398244B29239F4400A82429 /* core_func_swizzle.cpp */, + B398244C29239F4400A82429 /* core_type_mat2x2.cpp */, + B398244D29239F4400A82429 /* core_force_cxx03.cpp */, + B398244E29239F4400A82429 /* core_type_mat4x4.cpp */, + B398244F29239F4400A82429 /* core_func_vector_relational.cpp */, + B398245029239F4400A82429 /* core_type_mat2x3.cpp */, + B398245129239F4400A82429 /* core_force_aligned_gentypes.cpp */, + B398245229239F4400A82429 /* core_force_platform_unknown.cpp */, + B398245329239F4400A82429 /* core_force_compiler_unknown.cpp */, + B398245429239F4400A82429 /* core_type_mat2x4.cpp */, + B398245529239F4400A82429 /* core_type_mat4x2.cpp */, + B398245629239F4400A82429 /* core_type_mat4x3.cpp */, + B398245729239F4400A82429 /* core_func_noise.cpp */, + B398245829239F4400A82429 /* core_type_int.cpp */, + B398245929239F4400A82429 /* core_type_vec1.cpp */, + B398245A29239F4400A82429 /* core_type_mat3x2.cpp */, + B398245B29239F4400A82429 /* core_type_mat3x3.cpp */, + B398245C29239F4400A82429 /* core_force_cxx_unknown.cpp */, + B398245D29239F4400A82429 /* core_force_unrestricted_gentype.cpp */, + B398245E29239F4400A82429 /* core_func_integer_find_lsb.cpp */, + B398245F29239F4400A82429 /* core_type_vec2.cpp */, + B398246029239F4400A82429 /* core_force_pure.cpp */, + B398246129239F4400A82429 /* core_type_vec3.cpp */, + B398246229239F4400A82429 /* core_force_depth_zero_to_one.cpp */, + B398246329239F4400A82429 /* core_type_mat3x4.cpp */, + B398246429239F4400A82429 /* core_force_size_t_length.cpp */, + B398246529239F4400A82429 /* core_type_aligned.cpp */, + B398246629239F4400A82429 /* core_type_vec4.cpp */, + B398246729239F4400A82429 /* core_force_cxx98.cpp */, + B398246829239F4400A82429 /* core_func_matrix.cpp */, + B398246929239F4400A82429 /* core_type_cast.cpp */, + ); + path = core; + sourceTree = ""; + }; + B398246A29239F4400A82429 /* ext */ = { + isa = PBXGroup; + children = ( + B398246B29239F4400A82429 /* ext_matrix_common.cpp */, + B398246C29239F4400A82429 /* ext_scalar_uint_sized.cpp */, + B398246D29239F4400A82429 /* ext_matrix_projection.cpp */, + B398246E29239F4400A82429 /* ext_scalar_common.cpp */, + B398246F29239F4400A82429 /* CMakeLists.txt */, + B398247029239F4400A82429 /* ext_matrix_relational.cpp */, + B398247129239F4400A82429 /* ext_scalar_relational.cpp */, + B398247229239F4400A82429 /* ext_vector_integer.cpp */, + B398247329239F4400A82429 /* ext_vector_integer_sized.cpp */, + B398247429239F4400A82429 /* ext_quaternion_relational.cpp */, + B398247529239F4400A82429 /* ext_vec1.cpp */, + B398247629239F4400A82429 /* ext_quaternion_geometric.cpp */, + B398247729239F4400A82429 /* ext_scalar_constants.cpp */, + B398247829239F4400A82429 /* ext_vector_bool1.cpp */, + B398247929239F4400A82429 /* ext_quaternion_trigonometric.cpp */, + B398247A29239F4400A82429 /* ext_quaternion_type.cpp */, + B398247B29239F4400A82429 /* ext_scalar_integer.cpp */, + B398247C29239F4400A82429 /* ext_matrix_clip_space.cpp */, + B398247D29239F4400A82429 /* ext_quaternion_transform.cpp */, + B398247E29239F4400A82429 /* ext_vector_relational.cpp */, + B398247F29239F4400A82429 /* ext_quaternion_common.cpp */, + B398248029239F4400A82429 /* ext_scalar_int_sized.cpp */, + B398248129239F4400A82429 /* ext_vector_iec559.cpp */, + B398248229239F4400A82429 /* ext_quaternion_exponential.cpp */, + B398248329239F4400A82429 /* ext_scalar_ulp.cpp */, + B398248429239F4400A82429 /* ext_vector_ulp.cpp */, + B398248529239F4400A82429 /* ext_matrix_transform.cpp */, + B398248629239F4400A82429 /* ext_vector_common.cpp */, + ); + path = ext; + sourceTree = ""; + }; + B398248729239F4400A82429 /* bug */ = { + isa = PBXGroup; + children = ( + B398248829239F4400A82429 /* CMakeLists.txt */, + B398248929239F4400A82429 /* bug_ms_vec_static.cpp */, + ); + path = bug; + sourceTree = ""; + }; + B398248A29239F4400A82429 /* gtc */ = { + isa = PBXGroup; + children = ( + B398248B29239F4400A82429 /* gtc_packing.cpp */, + B398248C29239F4400A82429 /* gtc_matrix_inverse.cpp */, + B398248D29239F4400A82429 /* CMakeLists.txt */, + B398248E29239F4400A82429 /* gtc_type_ptr.cpp */, + B398248F29239F4400A82429 /* gtc_matrix_transform.cpp */, + B398249029239F4400A82429 /* gtc_type_precision.cpp */, + B398249129239F4400A82429 /* gtc_reciprocal.cpp */, + B398249229239F4400A82429 /* gtc_integer.cpp */, + B398249329239F4400A82429 /* gtc_noise.cpp */, + B398249429239F4400A82429 /* gtc_color_space.cpp */, + B398249529239F4400A82429 /* gtc_matrix_integer.cpp */, + B398249629239F4400A82429 /* gtc_user_defined_types.cpp */, + B398249729239F4400A82429 /* gtc_constants.cpp */, + B398249829239F4400A82429 /* gtc_type_aligned.cpp */, + B398249929239F4400A82429 /* gtc_random.cpp */, + B398249A29239F4400A82429 /* gtc_epsilon.cpp */, + B398249B29239F4400A82429 /* gtc_round.cpp */, + B398249C29239F4400A82429 /* gtc_quaternion.cpp */, + B398249D29239F4400A82429 /* gtc_matrix_access.cpp */, + B398249E29239F4400A82429 /* gtc_bitfield.cpp */, + B398249F29239F4400A82429 /* gtc_ulp.cpp */, + B39824A029239F4400A82429 /* gtc_vec1.cpp */, + ); + path = gtc; + sourceTree = ""; + }; + B39824A129239F4400A82429 /* gtx */ = { + isa = PBXGroup; + children = ( + B39824A229239F4400A82429 /* gtx_closest_point.cpp */, + B39824A329239F4400A82429 /* gtx_number_precision.cpp */, + B39824A429239F4400A82429 /* gtx_log_base.cpp */, + B39824A529239F4400A82429 /* gtx_io.cpp */, + B39824A629239F4400A82429 /* gtx_color_space.cpp */, + B39824A729239F4400A82429 /* gtx_spline.cpp */, + B39824A829239F4400A82429 /* gtx_scalar_multiplication.cpp */, + B39824A929239F4400A82429 /* gtx_int_10_10_10_2.cpp */, + B39824AA29239F4400A82429 /* CMakeLists.txt */, + B39824AB29239F4400A82429 /* gtx_rotate_vector.cpp */, + B39824AC29239F4400A82429 /* gtx_vec_swizzle.cpp */, + B39824AD29239F4400A82429 /* gtx_exterior_product.cpp */, + B39824AE29239F4400A82429 /* gtx_load.cpp */, + B39824AF29239F4400A82429 /* gtx_matrix_query.cpp */, + B39824B029239F4400A82429 /* gtx_intersect.cpp */, + B39824B129239F4400A82429 /* gtx_color_encoding.cpp */, + B39824B229239F4400A82429 /* gtx_matrix_factorisation.cpp */, + B39824B329239F4400A82429 /* gtx_extend.cpp */, + B39824B429239F4400A82429 /* gtx_euler_angle.cpp */, + B39824B529239F4400A82429 /* gtx_quaternion.cpp */, + B39824B629239F4400A82429 /* gtx_vector_angle.cpp */, + B39824B729239F4400A82429 /* gtx_component_wise.cpp */, + B39824B829239F4400A82429 /* gtx_orthonormalize.cpp */, + B39824B929239F4400A82429 /* gtx_rotate_normalized_axis.cpp */, + B39824BA29239F4400A82429 /* gtx_type_trait.cpp */, + B39824BB29239F4400A82429 /* gtx_mixed_product.cpp */, + B39824BC29239F4400A82429 /* gtx_color_space_YCoCg.cpp */, + B39824BD29239F4400A82429 /* gtx_matrix_major_storage.cpp */, + B39824BE29239F4400A82429 /* gtx_fast_square_root.cpp */, + B39824BF29239F4400A82429 /* gtx_extended_min_max.cpp */, + B39824C029239F4400A82429 /* gtx_texture.cpp */, + B39824C129239F4400A82429 /* gtx_fast_trigonometry.cpp */, + B39824C229239F4400A82429 /* gtx_extented_min_max.cpp */, + B39824C329239F4400A82429 /* gtx_simd_vec4.cpp */, + B39824C429239F4400A82429 /* gtx.cpp */, + B39824C529239F4400A82429 /* gtx_normal.cpp */, + B39824C629239F4400A82429 /* gtx_easing.cpp */, + B39824C729239F4400A82429 /* gtx_matrix_operation.cpp */, + B39824C829239F4400A82429 /* gtx_norm.cpp */, + B39824C929239F4400A82429 /* gtx_functions.cpp */, + B39824CA29239F4400A82429 /* gtx_handed_coordinate_space.cpp */, + B39824CB29239F4400A82429 /* gtx_type_aligned.cpp */, + B39824CC29239F4400A82429 /* gtx_matrix_interpolation.cpp */, + B39824CD29239F4400A82429 /* gtx_string_cast.cpp */, + B39824CE29239F4400A82429 /* gtx_wrap.cpp */, + B39824CF29239F4400A82429 /* gtx_projection.cpp */, + B39824D029239F4400A82429 /* gtx_vector_query.cpp */, + B39824D129239F4400A82429 /* gtx_random.cpp */, + B39824D229239F4400A82429 /* gtx_compatibility.cpp */, + B39824D329239F4400A82429 /* gtx_matrix_transform_2d.cpp */, + B39824D429239F4400A82429 /* gtx_scalar_relational.cpp */, + B39824D529239F4400A82429 /* gtx_polar_coordinates.cpp */, + B39824D629239F4400A82429 /* gtx_normalize_dot.cpp */, + B39824D729239F4400A82429 /* gtx_integer.cpp */, + B39824D829239F4400A82429 /* gtx_simd_mat4.cpp */, + B39824D929239F4400A82429 /* gtx_fast_exponential.cpp */, + B39824DA29239F4400A82429 /* gtx_dual_quaternion.cpp */, + B39824DB29239F4400A82429 /* gtx_matrix_decompose.cpp */, + B39824DC29239F4400A82429 /* gtx_range.cpp */, + B39824DD29239F4400A82429 /* gtx_common.cpp */, + B39824DE29239F4400A82429 /* gtx_perpendicular.cpp */, + B39824DF29239F4400A82429 /* gtx_gradient_paint.cpp */, + B39824E029239F4400A82429 /* gtx_associated_min_max.cpp */, + B39824E129239F4400A82429 /* gtx_matrix_cross_product.cpp */, + B39824E229239F4400A82429 /* gtx_optimum_pow.cpp */, + ); + path = gtx; + sourceTree = ""; + }; + B39824E329239F4400A82429 /* perf */ = { + isa = PBXGroup; + children = ( + B39824E429239F4400A82429 /* perf_matrix_inverse.cpp */, + B39824E529239F4400A82429 /* CMakeLists.txt */, + B39824E629239F4400A82429 /* perf_matrix_div.cpp */, + B39824E729239F4400A82429 /* perf_vector_mul_matrix.cpp */, + B39824E829239F4400A82429 /* perf_matrix_transpose.cpp */, + B39824E929239F4400A82429 /* perf_matrix_mul.cpp */, + B39824EA29239F4400A82429 /* perf_matrix_mul_vector.cpp */, + ); + path = perf; + sourceTree = ""; + }; + B39824EB29239F4400A82429 /* util */ = { + isa = PBXGroup; + children = ( + B39824EC29239F4400A82429 /* autoexp.vc2010.dat */, + B39824ED29239F4400A82429 /* usertype.dat */, + B39824EE29239F4400A82429 /* autoexp.txt */, + B39824EF29239F4400A82429 /* glm.natvis */, + ); + path = util; + sourceTree = ""; + }; + B39824F129239F4400A82429 /* doc */ = { + isa = PBXGroup; + children = ( + B39824F229239F4400A82429 /* manual */, + B398251029239F4400A82429 /* theme */, + B398252529239F4500A82429 /* api */, + B398285C29239F4700A82429 /* manual.pdf */, + B398285D29239F4700A82429 /* man.doxy */, + ); + path = doc; + sourceTree = ""; + }; + B39824F229239F4400A82429 /* manual */ = { + isa = PBXGroup; + children = ( + B39824F329239F4400A82429 /* references-leosfortune2.jpg */, + B39824F429239F4400A82429 /* frontpage1.png */, + B39824F529239F4400A82429 /* g-truc.png */, + B39824F629239F4400A82429 /* frontpage2.png */, + B39824F729239F4400A82429 /* references-cinder.png */, + B39824F829239F4400A82429 /* references-leosfortune.jpeg */, + B39824F929239F4400A82429 /* random-ballrand.png */, + B39824FA29239F4400A82429 /* random-circularrand.png */, + B39824FB29239F4400A82429 /* random-linearrand.png */, + B39824FC29239F4400A82429 /* noise-perlin2.jpg */, + B39824FD29239F4400A82429 /* noise-perlin3.jpg */, + B39824FE29239F4400A82429 /* references-opencloth1.png */, + B39824FF29239F4400A82429 /* references-outerra1.jpg */, + B398250029239F4400A82429 /* references-outerra3.jpg */, + B398250129239F4400A82429 /* references-opencloth3.png */, + B398250229239F4400A82429 /* noise-perlin1.jpg */, + B398250329239F4400A82429 /* references-outerra2.jpg */, + B398250429239F4400A82429 /* random-sphericalrand.png */, + B398250529239F4400A82429 /* logo-mini.png */, + B398250629239F4400A82429 /* noise-simplex2.jpg */, + B398250729239F4400A82429 /* noise-perlin4.png */, + B398250829239F4400A82429 /* random-gaussrand.png */, + B398250929239F4400A82429 /* noise-perlin5.png */, + B398250A29239F4400A82429 /* noise-simplex3.jpg */, + B398250B29239F4400A82429 /* noise-simplex1.jpg */, + B398250C29239F4400A82429 /* noise-perlin6.png */, + B398250D29239F4400A82429 /* references-outerra4.jpg */, + B398250E29239F4400A82429 /* random-diskrand.png */, + B398250F29239F4400A82429 /* references-glsl4book.jpg */, + ); + path = manual; + sourceTree = ""; + }; + B398251029239F4400A82429 /* theme */ = { + isa = PBXGroup; + children = ( + B398251129239F4400A82429 /* splitbar.png */, + B398251229239F4400A82429 /* doxygen.css */, + B398251329239F4400A82429 /* sync_off.png */, + B398251429239F4400A82429 /* sync_on.png */, + B398251529239F4400A82429 /* doc.png */, + B398251629239F4400A82429 /* bc_s.png */, + B398251729239F4400A82429 /* nav_g.png */, + B398251829239F4400A82429 /* nav_f.png */, + B398251929239F4400A82429 /* closed.png */, + B398251A29239F4400A82429 /* doxygen.png */, + B398251B29239F4400A82429 /* tab_s.png */, + B398251C29239F4400A82429 /* tab_a.png */, + B398251D29239F4400A82429 /* tab_b.png */, + B398251E29239F4400A82429 /* bdwn.png */, + B398251F29239F4400A82429 /* logo-mini.png */, + B398252029239F4400A82429 /* nav_h.png */, + B398252129239F4500A82429 /* tab_h.png */, + B398252229239F4500A82429 /* open.png */, + B398252329239F4500A82429 /* folderclosed.png */, + B398252429239F4500A82429 /* folderopen.png */, + ); + path = theme; + sourceTree = ""; + }; + B398252529239F4500A82429 /* api */ = { + isa = PBXGroup; + children = ( + B398252629239F4500A82429 /* a00072_source.html */, + B398252729239F4500A82429 /* a00222.html */, + B398252829239F4500A82429 /* a00110_source.html */, + B398252929239F4500A82429 /* a00367.html */, + B398252A29239F4500A82429 /* a00002_source.html */, + B398252B29239F4500A82429 /* a00275.html */, + B398252C29239F4500A82429 /* a00160_source.html */, + B398252D29239F4500A82429 /* a00330.html */, + B398252E29239F4500A82429 /* a00215_source.html */, + B398252F29239F4500A82429 /* a00263.html */, + B398253029239F4500A82429 /* splitbar.png */, + B398253129239F4500A82429 /* a00326.html */, + B398253229239F4500A82429 /* a00058.html */, + B398253329239F4500A82429 /* a00234.html */, + B398253429239F4500A82429 /* a00371.html */, + B398253529239F4500A82429 /* a00166.html */, + B398253629239F4500A82429 /* a00030_source.html */, + B398253729239F4500A82429 /* a00189.html */, + B398253829239F4500A82429 /* a00023.html */, + B398253929239F4500A82429 /* a00152_source.html */, + B398253A29239F4500A82429 /* a00040_source.html */, + B398253B29239F4500A82429 /* a00131.html */, + B398253C29239F4500A82429 /* a00074.html */, + B398253D29239F4500A82429 /* a00209_source.html */, + B398253E29239F4500A82429 /* a00122_source.html */, + B398253F29239F4500A82429 /* a00218.html */, + B398254029239F4500A82429 /* a00127.html */, + B398254129239F4500A82429 /* a00062.html */, + B398254229239F4500A82429 /* a00181_source.html */, + B398254329239F4500A82429 /* a00170.html */, + B398254429239F4500A82429 /* a00093_source.html */, + B398254529239F4500A82429 /* a00227_source.html */, + B398254629239F4500A82429 /* a00259.html */, + B398254729239F4500A82429 /* a00169_source.html */, + B398254829239F4500A82429 /* doxygen.css */, + B398254929239F4500A82429 /* a00042.html */, + B398254A29239F4500A82429 /* a00194_source.html */, + B398254B29239F4500A82429 /* a00107.html */, + B398254C29239F4500A82429 /* a00086_source.html */, + B398254D29239F4500A82429 /* a00279.html */, + B398254E29239F4500A82429 /* a00119_source.html */, + B398254F29239F4500A82429 /* a00296.html */, + B398255029239F4500A82429 /* a00015.html */, + B398255129239F4500A82429 /* a00232_source.html */, + B398255229239F4500A82429 /* a00150.html */, + B398255329239F4500A82429 /* a00025_source.html */, + B398255429239F4500A82429 /* a00280.html */, + B398255529239F4500A82429 /* a00146.html */, + B398255629239F4500A82429 /* a00147_source.html */, + B398255729239F4500A82429 /* a00055_source.html */, + B398255829239F4500A82429 /* a00054.html */, + B398255929239F4500A82429 /* a00111.html */, + B398255A29239F4500A82429 /* a00137_source.html */, + B398255B29239F4500A82429 /* a00306.html */, + B398255C29239F4500A82429 /* a00243.html */, + B398255D29239F4500A82429 /* a00200_source.html */, + B398255E29239F4500A82429 /* a00185.html */, + B398255F29239F4500A82429 /* a00049_source.html */, + B398256029239F4500A82429 /* a00351.html */, + B398256129239F4500A82429 /* a00214.html */, + B398256229239F4500A82429 /* a00097.html */, + B398256329239F4500A82429 /* a00039_source.html */, + B398256429239F4500A82429 /* a00078.html */, + B398256529239F4500A82429 /* a00347.html */, + B398256629239F4500A82429 /* a00067_source.html */, + B398256729239F4500A82429 /* a00202.html */, + B398256829239F4500A82429 /* a00081.html */, + B398256929239F4500A82429 /* a00105_source.html */, + B398256A29239F4500A82429 /* a00188_source.html */, + B398256B29239F4500A82429 /* a00310.html */, + B398256C29239F4500A82429 /* a00017_source.html */, + B398256D29239F4500A82429 /* a00255.html */, + B398256E29239F4500A82429 /* a00193.html */, + B398256F29239F4500A82429 /* a00039.html */, + B398257029239F4500A82429 /* a00175_source.html */, + B398257129239F4500A82429 /* a00192.html */, + B398257229239F4500A82429 /* a00132_source.html */, + B398257329239F4500A82429 /* a00038.html */, + B398257429239F4500A82429 /* a00311.html */, + B398257529239F4500A82429 /* a00050_source.html */, + B398257629239F4500A82429 /* a00254.html */, + B398257729239F4500A82429 /* a00219_source.html */, + B398257829239F4500A82429 /* a00080.html */, + B398257929239F4500A82429 /* a00142_source.html */, + B398257A29239F4500A82429 /* a00346.html */, + B398257B29239F4500A82429 /* a00020_source.html */, + B398257C29239F4500A82429 /* a00203.html */, + B398257D29239F4500A82429 /* a00096.html */, + B398257E29239F4500A82429 /* arrowright.png */, + B398257F29239F4500A82429 /* a00079.html */, + B398258029239F4500A82429 /* index.html */, + B398258129239F4500A82429 /* a00083_source.html */, + B398258229239F4500A82429 /* a00350.html */, + B398258329239F4500A82429 /* a00215.html */, + B398258429239F4500A82429 /* a00191_source.html */, + B398258529239F4500A82429 /* a00184.html */, + B398258629239F4500A82429 /* a00307.html */, + B398258729239F4500A82429 /* a00242.html */, + B398258829239F4500A82429 /* a00055.html */, + B398258929239F4500A82429 /* a00170_source.html */, + B398258A29239F4500A82429 /* a00110.html */, + B398258B29239F4500A82429 /* a00012_source.html */, + B398258C29239F4500A82429 /* a00147.html */, + B398258D29239F4500A82429 /* a00100_source.html */, + B398258E29239F4500A82429 /* sync_off.png */, + B398258F29239F4500A82429 /* a00062_source.html */, + B398259029239F4500A82429 /* a00281.html */, + B398259129239F4500A82429 /* a00014.html */, + B398259229239F4500A82429 /* a00151.html */, + B398259329239F4500A82429 /* a00278.html */, + B398259429239F4500A82429 /* a00297.html */, + B398259529239F4500A82429 /* a00043.html */, + B398259629239F4500A82429 /* a00205_source.html */, + B398259729239F4500A82429 /* a00106.html */, + B398259829239F4500A82429 /* modules.html */, + B398259929239F4500A82429 /* a00029_source.html */, + B398259A29239F4500A82429 /* a00258.html */, + B398259B29239F4500A82429 /* a00171.html */, + B398259C29239F4500A82429 /* a00034.html */, + B398259D29239F4500A82429 /* a00210_source.html */, + B398259E29239F4500A82429 /* a00059_source.html */, + B398259F29239F4500A82429 /* a00126.html */, + B39825A029239F4500A82429 /* a00063.html */, + B39825A129239F4500A82429 /* a00165_source.html */, + B39825A229239F4500A82429 /* a00219.html */, + B39825A329239F4500A82429 /* sync_on.png */, + B39825A429239F4500A82429 /* a00007_source.html */, + B39825A529239F4500A82429 /* a00130.html */, + B39825A629239F4500A82429 /* a00198_source.html */, + B39825A729239F4500A82429 /* a00075.html */, + B39825A829239F4500A82429 /* a00115_source.html */, + B39825A929239F4500A82429 /* a00077_source.html */, + B39825AA29239F4500A82429 /* a00167.html */, + B39825AB29239F4500A82429 /* dir_5189610d3ba09ec39b766fb99b34cd93.html */, + B39825AC29239F4500A82429 /* a00188.html */, + B39825AD29239F4500A82429 /* a00022.html */, + B39825AE29239F4500A82429 /* a00222_source.html */, + B39825AF29239F4500A82429 /* a00235.html */, + B39825B029239F4500A82429 /* a00370.html */, + B39825B129239F4500A82429 /* a00109_source.html */, + B39825B229239F4500A82429 /* a00096_source.html */, + B39825B329239F4500A82429 /* a00059.html */, + B39825B429239F4500A82429 /* a00262.html */, + B39825B529239F4500A82429 /* a00327.html */, + B39825B629239F4500A82429 /* a00184_source.html */, + B39825B729239F4500A82429 /* a00179_source.html */, + B39825B829239F4500A82429 /* a00274.html */, + B39825B929239F4500A82429 /* a00127_source.html */, + B39825BA29239F4500A82429 /* a00331.html */, + B39825BB29239F4500A82429 /* a00045_source.html */, + B39825BC29239F4500A82429 /* a00018.html */, + B39825BD29239F4500A82429 /* a00223.html */, + B39825BE29239F4500A82429 /* a00157_source.html */, + B39825BF29239F4500A82429 /* a00366.html */, + B39825C029239F4500A82429 /* a00035_source.html */, + B39825C129239F4500A82429 /* doc.png */, + B39825C229239F4500A82429 /* a00228.html */, + B39825C329239F4500A82429 /* a00046_source.html */, + B39825C429239F4500A82429 /* a00124_source.html */, + B39825C529239F4500A82429 /* a00044.html */, + B39825C629239F4500A82429 /* a00101.html */, + B39825C729239F4500A82429 /* a00036_source.html */, + B39825C829239F4500A82429 /* a00290.html */, + B39825C929239F4500A82429 /* a00154_source.html */, + B39825CA29239F4500A82429 /* arrowdown.png */, + B39825CB29239F4500A82429 /* a00013.html */, + B39825CC29239F4500A82429 /* a00156.html */, + B39825CD29239F4500A82429 /* a00269.html */, + B39825CE29239F4500A82429 /* a00286.html */, + B39825CF29239F4500A82429 /* a00095_source.html */, + B39825D029239F4500A82429 /* a00068_source.html */, + B39825D129239F4500A82429 /* a00221_source.html */, + B39825D229239F4500A82429 /* a00140.html */, + B39825D329239F4500A82429 /* bc_s.png */, + B39825D429239F4500A82429 /* nav_g.png */, + B39825D529239F4500A82429 /* dir_a8bee7be44182a33f3820393ae0b105d.html */, + B39825D629239F4500A82429 /* a00018_source.html */, + B39825D729239F4500A82429 /* a00052.html */, + B39825D829239F4500A82429 /* a00187_source.html */, + B39825D929239F4500A82429 /* a00117.html */, + B39825DA29239F4500A82429 /* a00300.html */, + B39825DB29239F4500A82429 /* a00004_source.html */, + B39825DC29239F4500A82429 /* a00245.html */, + B39825DD29239F4500A82429 /* a00166_source.html */, + B39825DE29239F4500A82429 /* nav_f.png */, + B39825DF29239F4500A82429 /* a00029.html */, + B39825E029239F4500A82429 /* a00183.html */, + B39825E129239F4500A82429 /* tabs.css */, + B39825E229239F4500A82429 /* a00357.html */, + B39825E329239F4500A82429 /* a00074_source.html */, + B39825E429239F4500A82429 /* a00212.html */, + B39825E529239F4500A82429 /* a00116_source.html */, + B39825E629239F4500A82429 /* a00091.html */, + B39825E729239F4500A82429 /* a00089_source.html */, + B39825E829239F4500A82429 /* a00341.html */, + B39825E929239F4500A82429 /* a00148_source.html */, + B39825EA29239F4500A82429 /* a00204.html */, + B39825EB29239F4500A82429 /* a00087.html */, + B39825EC29239F4500A82429 /* a00068.html */, + B39825ED29239F4500A82429 /* a00316.html */, + B39825EE29239F4500A82429 /* a00138_source.html */, + B39825EF29239F4500A82429 /* a00253.html */, + B39825F029239F4500A82429 /* a00213_source.html */, + B39825F129239F4500A82429 /* a00195.html */, + B39825F229239F4500A82429 /* a00048.html */, + B39825F329239F4500A82429 /* closed.png */, + B39825F429239F4500A82429 /* a00224.html */, + B39825F529239F4500A82429 /* a00361.html */, + B39825F629239F4500A82429 /* a00273.html */, + B39825F729239F4500A82429 /* a00336.html */, + B39825F829239F4500A82429 /* a00206_source.html */, + B39825F929239F4500A82429 /* a00009.html */, + B39825FA29239F4500A82429 /* a00011_source.html */, + B39825FB29239F4500A82429 /* a00265.html */, + B39825FC29239F4500A82429 /* a00173_source.html */, + B39825FD29239F4500A82429 /* a00320.html */, + B39825FE29239F4500A82429 /* a00228_source.html */, + B39825FF29239F4500A82429 /* doxygen.png */, + B398260029239F4500A82429 /* dir_cef2d71d502cb69a9252bca2297d9549.html */, + B398260129239F4500A82429 /* a00061_source.html */, + B398260229239F4500A82429 /* a00232.html */, + B398260329239F4500A82429 /* a00103_source.html */, + B398260429239F4500A82429 /* a00160.html */, + B398260529239F4500A82429 /* a00080_source.html */, + B398260629239F4500A82429 /* a00025.html */, + B398260729239F4500A82429 /* a00249.html */, + B398260829239F4500A82429 /* a00234_source.html */, + B398260929239F4500A82429 /* a00137.html */, + B398260A29239F4500A82429 /* a00072.html */, + B398260B29239F4500A82429 /* a00192_source.html */, + B398260C29239F4500A82429 /* a00121.html */, + B398260D29239F4500A82429 /* a00064.html */, + B398260E29239F4500A82429 /* a00053_source.html */, + B398260F29239F4500A82429 /* tab_s.png */, + B398261029239F4500A82429 /* a00131_source.html */, + B398261129239F4500A82429 /* a00208.html */, + B398261229239F4500A82429 /* a00176.html */, + B398261329239F4500A82429 /* a00033.html */, + B398261429239F4500A82429 /* a00023_source.html */, + B398261529239F4500A82429 /* a00199.html */, + B398261629239F4500A82429 /* a00141_source.html */, + B398261729239F4500A82429 /* a00099_source.html */, + B398261829239F4500A82429 /* a00106_source.html */, + B398261929239F4500A82429 /* a00177.html */, + B398261A29239F4500A82429 /* a00032.html */, + B398261B29239F4500A82429 /* a00064_source.html */, + B398261C29239F4500A82429 /* a00198.html */, + B398261D29239F4500A82429 /* a00176_source.html */, + B398261E29239F4500A82429 /* a00209.html */, + B398261F29239F4500A82429 /* a00120.html */, + B398262029239F4500A82429 /* a00065.html */, + B398262129239F4500A82429 /* a00014_source.html */, + B398262229239F4500A82429 /* a00203_source.html */, + B398262329239F4500A82429 /* a00136.html */, + B398262429239F4500A82429 /* a00073.html */, + B398262529239F4500A82429 /* a00128_source.html */, + B398262629239F4500A82429 /* a00248.html */, + B398262729239F4500A82429 /* a00161.html */, + B398262829239F4500A82429 /* a00024.html */, + B398262929239F4500A82429 /* a00158_source.html */, + B398262A29239F4500A82429 /* files.html */, + B398262B29239F4500A82429 /* a00233.html */, + B398262C29239F4500A82429 /* a00144_source.html */, + B398262D29239F4500A82429 /* a00026_source.html */, + B398262E29239F4500A82429 /* a00264.html */, + B398262F29239F4500A82429 /* a00134_source.html */, + B398263029239F4500A82429 /* a00321.html */, + B398263129239F4500A82429 /* a00008.html */, + B398263229239F4500A82429 /* a00056_source.html */, + B398263329239F4500A82429 /* a00197_source.html */, + B398263429239F4500A82429 /* a00272.html */, + B398263529239F4500A82429 /* a00008_source.html */, + B398263629239F4500A82429 /* a00337.html */, + B398263729239F4500A82429 /* tab_a.png */, + B398263829239F4500A82429 /* a00225.html */, + B398263929239F4500A82429 /* a00078_source.html */, + B398263A29239F4500A82429 /* a00231_source.html */, + B398263B29239F4500A82429 /* a00360.html */, + B398263C29239F4500A82429 /* a00049.html */, + B398263D29239F4500A82429 /* a00085_source.html */, + B398263E29239F4500A82429 /* a00182_source.html */, + B398263F29239F4500A82429 /* a00194.html */, + B398264029239F4500A82429 /* a00317.html */, + B398264129239F4500A82429 /* a00252.html */, + B398264229239F4500A82429 /* a00086.html */, + B398264329239F4500A82429 /* a00224_source.html */, + B398264429239F4500A82429 /* a00069.html */, + B398264529239F4500A82429 /* a00340.html */, + B398264629239F4500A82429 /* a00205.html */, + B398264729239F4500A82429 /* a00090_source.html */, + B398264829239F4500A82429 /* a00151_source.html */, + B398264929239F4500A82429 /* a00090.html */, + B398264A29239F4500A82429 /* a00356.html */, + B398264B29239F4500A82429 /* a00033_source.html */, + B398264C29239F4500A82429 /* a00213.html */, + B398264D29239F4500A82429 /* a00121_source.html */, + B398264E29239F4500A82429 /* a00028.html */, + B398264F29239F4500A82429 /* a00182.html */, + B398265029239F4500A82429 /* a00301.html */, + B398265129239F4500A82429 /* a00244.html */, + B398265229239F4500A82429 /* a00043_source.html */, + B398265329239F4500A82429 /* a00053.html */, + B398265429239F4500A82429 /* a00116.html */, + B398265529239F4500A82429 /* a00216_source.html */, + B398265629239F4500A82429 /* dir_9e5fe034a00e89334fd5186c3e7db156.html */, + B398265729239F4500A82429 /* a00141.html */, + B398265829239F4500A82429 /* a00268.html */, + B398265929239F4500A82429 /* a00287.html */, + B398265A29239F4500A82429 /* a00113_source.html */, + B398265B29239F4500A82429 /* a00012.html */, + B398265C29239F4500A82429 /* a00157.html */, + B398265D29239F4500A82429 /* tab_b.png */, + B398265E29239F4500A82429 /* a00071_source.html */, + B398265F29239F4500A82429 /* a00291.html */, + B398266029239F4500A82429 /* a00163_source.html */, + B398266129239F4500A82429 /* a00045.html */, + B398266229239F4500A82429 /* a00100.html */, + B398266329239F4500A82429 /* dir_d9496f0844b48bc7e53b5af8c99b9ab2.html */, + B398266429239F4500A82429 /* a00229.html */, + B398266529239F4500A82429 /* a00001_source.html */, + B398266629239F4500A82429 /* a00197.html */, + B398266729239F4500A82429 /* a00178.html */, + B398266829239F4500A82429 /* a00178_source.html */, + B398266929239F4500A82429 /* a00251.html */, + B398266A29239F4500A82429 /* a00185_source.html */, + B398266B29239F4500A82429 /* bdwn.png */, + B398266C29239F4500A82429 /* a00314.html */, + B398266D29239F4500A82429 /* a00097_source.html */, + B398266E29239F4500A82429 /* a00108_source.html */, + B398266F29239F4500A82429 /* a00085.html */, + B398267029239F4500A82429 /* a00206.html */, + B398267129239F4500A82429 /* search */, + B398273329239F4600A82429 /* a00343.html */, + B398273429239F4600A82429 /* a00223_source.html */, + B398273529239F4600A82429 /* a00093.html */, + B398273629239F4600A82429 /* a00139.html */, + B398273729239F4600A82429 /* a00034_source.html */, + B398273829239F4600A82429 /* a00210.html */, + B398273929239F4600A82429 /* a00156_source.html */, + B398273A29239F4600A82429 /* a00355.html */, + B398273B29239F4600A82429 /* a00181.html */, + B398273C29239F4600A82429 /* a00044_source.html */, + B398273D29239F4600A82429 /* a00126_source.html */, + B398273E29239F4600A82429 /* a00247.html */, + B398273F29239F4600A82429 /* a00302.html */, + B398274029239F4600A82429 /* a00115.html */, + B398274129239F4600A82429 /* a00050.html */, + B398274229239F4600A82429 /* a00058_source.html */, + B398274329239F4600A82429 /* a00211_source.html */, + B398274429239F4600A82429 /* a00142.html */, + B398274529239F4600A82429 /* a00007.html */, + B398274629239F4600A82429 /* a00028_source.html */, + B398274729239F4600A82429 /* a00284.html */, + B398274829239F4600A82429 /* a00154.html */, + B398274929239F4600A82429 /* a00011.html */, + B398274A29239F4600A82429 /* a00076_source.html */, + B398274B29239F4600A82429 /* a00292.html */, + B398274C29239F4600A82429 /* a00338.html */, + B398274D29239F4600A82429 /* a00114_source.html */, + B398274E29239F4600A82429 /* a00103.html */, + B398274F29239F4600A82429 /* a00199_source.html */, + B398275029239F4600A82429 /* a00046.html */, + B398275129239F4600A82429 /* a00006_source.html */, + B398275229239F4600A82429 /* dir_f35778ec600a1b9bbc4524e62e226aa2.html */, + B398275329239F4600A82429 /* a00164_source.html */, + B398275429239F4600A82429 /* a00063_source.html */, + B398275529239F4600A82429 /* a00318.html */, + B398275629239F4600A82429 /* a00031.html */, + B398275729239F4600A82429 /* a00101_source.html */, + B398275829239F4600A82429 /* a00174.html */, + B398275929239F4600A82429 /* a00013_source.html */, + B398275A29239F4600A82429 /* a00171_source.html */, + B398275B29239F4600A82429 /* a00066.html */, + B398275C29239F4600A82429 /* a00089.html */, + B398275D29239F4600A82429 /* a00123.html */, + B398275E29239F4600A82429 /* a00359.html */, + B398275F29239F4600A82429 /* a00070.html */, + B398276029239F4600A82429 /* a00204_source.html */, + B398276129239F4600A82429 /* a00135.html */, + B398276229239F4600A82429 /* dir_44e5e654415abd9ca6fdeaddaff8565e.html */, + B398276329239F4600A82429 /* a00027.html */, + B398276429239F4600A82429 /* a00162.html */, + B398276529239F4600A82429 /* a00230.html */, + B398276629239F4600A82429 /* a00021_source.html */, + B398276729239F4600A82429 /* a00119.html */, + B398276829239F4600A82429 /* a00143_source.html */, + B398276929239F4600A82429 /* a00218_source.html */, + B398276A29239F4600A82429 /* a00288.html */, + B398276B29239F4600A82429 /* a00322.html */, + B398276C29239F4600A82429 /* a00051_source.html */, + B398276D29239F4600A82429 /* a00267.html */, + B398276E29239F4600A82429 /* a00133_source.html */, + B398276F29239F4600A82429 /* a00334.html */, + B398277029239F4600A82429 /* a00271.html */, + B398277129239F4600A82429 /* a00158.html */, + B398277229239F4600A82429 /* a00190_source.html */, + B398277329239F4600A82429 /* a00363.html */, + B398277429239F4600A82429 /* a00082_source.html */, + B398277529239F4600A82429 /* a00226.html */, + B398277629239F4600A82429 /* logo-mini.png */, + B398277729239F4600A82429 /* a00038_source.html */, + B398277829239F4600A82429 /* a00362.html */, + B398277929239F4600A82429 /* a00227.html */, + B398277A29239F4600A82429 /* a00159.html */, + B398277B29239F4600A82429 /* a00048_source.html */, + B398277C29239F4600A82429 /* a00201_source.html */, + B398277D29239F4600A82429 /* a00335.html */, + B398277E29239F4600A82429 /* a00270.html */, + B398277F29239F4600A82429 /* a00174_source.html */, + B398278029239F4600A82429 /* a00289.html */, + B398278129239F4600A82429 /* a00323.html */, + B398278229239F4600A82429 /* a00016_source.html */, + B398278329239F4600A82429 /* a00189_source.html */, + B398278429239F4600A82429 /* a00266.html */, + B398278529239F4600A82429 /* a00104_source.html */, + B398278629239F4600A82429 /* a00118.html */, + B398278729239F4600A82429 /* nav_h.png */, + B398278829239F4600A82429 /* a00374.html */, + B398278929239F4600A82429 /* a00231.html */, + B398278A29239F4600A82429 /* a00066_source.html */, + B398278B29239F4600A82429 /* dir_4c6bd29c73fa4e5a2509e1c15f846751.html */, + B398278C29239F4600A82429 /* a00026.html */, + B398278D29239F4600A82429 /* a00233_source.html */, + B398278E29239F4600A82429 /* a00118_source.html */, + B398278F29239F4600A82429 /* a00087_source.html */, + B398279029239F4600A82429 /* a00071.html */, + B398279129239F4600A82429 /* a00195_source.html */, + B398279229239F4600A82429 /* a00134.html */, + B398279329239F4600A82429 /* dir_033f5edb0915b828d2c46ed4804e5503.html */, + B398279429239F4600A82429 /* a00168_source.html */, + B398279529239F4600A82429 /* a00358.html */, + B398279629239F4600A82429 /* a00136_source.html */, + B398279729239F4600A82429 /* a00067.html */, + B398279829239F4600A82429 /* a00088.html */, + B398279929239F4600A82429 /* a00122.html */, + B398279A29239F4600A82429 /* a00054_source.html */, + B398279B29239F4600A82429 /* tab_h.png */, + B398279C29239F4600A82429 /* a00146_source.html */, + B398279D29239F4600A82429 /* a00030.html */, + B398279E29239F4600A82429 /* a00175.html */, + B398279F29239F4600A82429 /* a00319.html */, + B39827A029239F4600A82429 /* a00024_source.html */, + B39827A129239F4600A82429 /* a00123_source.html */, + B39827A229239F4600A82429 /* a00102.html */, + B39827A329239F4600A82429 /* a00208_source.html */, + B39827A429239F4600A82429 /* a00041_source.html */, + B39827A529239F4600A82429 /* a00293.html */, + B39827A629239F4600A82429 /* a00339.html */, + B39827A729239F4600A82429 /* a00153_source.html */, + B39827A829239F4600A82429 /* a00155.html */, + B39827A929239F4600A82429 /* a00010.html */, + B39827AA29239F4600A82429 /* a00031_source.html */, + B39827AB29239F4600A82429 /* a00285.html */, + B39827AC29239F4600A82429 /* a00226_source.html */, + B39827AD29239F4600A82429 /* a00143.html */, + B39827AE29239F4600A82429 /* a00092_source.html */, + B39827AF29239F4600A82429 /* a00180_source.html */, + B39827B029239F4600A82429 /* a00114.html */, + B39827B129239F4600A82429 /* a00051.html */, + B39827B229239F4600A82429 /* a00161_source.html */, + B39827B329239F4600A82429 /* a00246.html */, + B39827B429239F4600A82429 /* a00303.html */, + B39827B529239F4600A82429 /* a00180.html */, + B39827B629239F4600A82429 /* a00003_source.html */, + B39827B729239F4600A82429 /* a00211.html */, + B39827B829239F4600A82429 /* a00111_source.html */, + B39827B929239F4600A82429 /* a00354.html */, + B39827BA29239F4600A82429 /* a00092.html */, + B39827BB29239F4600A82429 /* a00138.html */, + B39827BC29239F4600A82429 /* a00073_source.html */, + B39827BD29239F4600A82429 /* a00207.html */, + B39827BE29239F4600A82429 /* a00342.html */, + B39827BF29239F4600A82429 /* a00084.html */, + B39827C029239F4600A82429 /* a00250.html */, + B39827C129239F4600A82429 /* a00214_source.html */, + B39827C229239F4600A82429 /* a00315.html */, + B39827C329239F4600A82429 /* a00196.html */, + B39827C429239F4600A82429 /* a00179.html */, + B39827C529239F4600A82429 /* a00037.html */, + B39827C629239F4600A82429 /* a00172.html */, + B39827C729239F4600A82429 /* a00349.html */, + B39827C829239F4600A82429 /* a00060.html */, + B39827C929239F4600A82429 /* a00217_source.html */, + B39827CA29239F4600A82429 /* a00125.html */, + B39827CB29239F4600A82429 /* a00076.html */, + B39827CC29239F4600A82429 /* a00133.html */, + B39827CD29239F4600A82429 /* a00099.html */, + B39827CE29239F4600A82429 /* a00162_source.html */, + B39827CF29239F4600A82429 /* a00070_source.html */, + B39827D029239F4600A82429 /* a00308.html */, + B39827D129239F4600A82429 /* a00021.html */, + B39827D229239F4600A82429 /* a00112_source.html */, + B39827D329239F4600A82429 /* a00373.html */, + B39827D429239F4600A82429 /* a00091_source.html */, + B39827D529239F4600A82429 /* a00225_source.html */, + B39827D629239F4600A82429 /* a00324.html */, + B39827D729239F4600A82429 /* a00261.html */, + B39827D829239F4600A82429 /* a00148.html */, + B39827D929239F4600A82429 /* a00183_source.html */, + B39827DA29239F4600A82429 /* open.png */, + B39827DB29239F4600A82429 /* a00332.html */, + B39827DC29239F4600A82429 /* a00298.html */, + B39827DD29239F4600A82429 /* a00042_source.html */, + B39827DE29239F4600A82429 /* a00277.html */, + B39827DF29239F4600A82429 /* a00120_source.html */, + B39827E029239F4600A82429 /* a00032_source.html */, + B39827E129239F4600A82429 /* a00365.html */, + B39827E229239F4600A82429 /* a00220.html */, + B39827E329239F4600A82429 /* a00109.html */, + B39827E429239F4600A82429 /* a00150_source.html */, + B39827E529239F4600A82429 /* a00191.html */, + B39827E629239F4600A82429 /* a00057_source.html */, + B39827E729239F4600A82429 /* a00257.html */, + B39827E829239F4600A82429 /* a00312.html */, + B39827E929239F4600A82429 /* a00135_source.html */, + B39827EA29239F4600A82429 /* a00027_source.html */, + B39827EB29239F4600A82429 /* a00129.html */, + B39827EC29239F4600A82429 /* a00083.html */, + B39827ED29239F4600A82429 /* a00200.html */, + B39827EE29239F4600A82429 /* a00145_source.html */, + B39827EF29239F4600A82429 /* a00345.html */, + B39827F029239F4600A82429 /* a00084_source.html */, + B39827F129239F4600A82429 /* a00230_source.html */, + B39827F229239F4600A82429 /* a00216.html */, + B39827F329239F4600A82429 /* a00353.html */, + B39827F429239F4600A82429 /* a00079_source.html */, + B39827F529239F4600A82429 /* a00187.html */, + B39827F629239F4600A82429 /* a00168.html */, + B39827F729239F4600A82429 /* a00241.html */, + B39827F829239F4600A82429 /* a00009_source.html */, + B39827F929239F4600A82429 /* a00196_source.html */, + B39827FA29239F4600A82429 /* a00304.html */, + B39827FB29239F4600A82429 /* a00113.html */, + B39827FC29239F4600A82429 /* a00015_source.html */, + B39827FD29239F4600A82429 /* a00056.html */, + B39827FE29239F4600A82429 /* a00177_source.html */, + B39827FF29239F4600A82429 /* a00065_source.html */, + B398280029239F4600A82429 /* a00144.html */, + B398280129239F4600A82429 /* a00328.html */, + B398280229239F4600A82429 /* a00282.html */, + B398280329239F4600A82429 /* a00107_source.html */, + B398280429239F4600A82429 /* a00098_source.html */, + B398280529239F4600A82429 /* a00152.html */, + B398280629239F4600A82429 /* a00159_source.html */, + B398280729239F4600A82429 /* a00017.html */, + B398280829239F4600A82429 /* a00294.html */, + B398280929239F4600A82429 /* a00129_source.html */, + B398280A29239F4600A82429 /* a00105.html */, + B398280B29239F4600A82429 /* a00040.html */, + B398280C29239F4600A82429 /* a00369.html */, + B398280D29239F4600A82429 /* a00202_source.html */, + B398280E29239F4600A82429 /* a00368.html */, + B398280F29239F4600A82429 /* folderclosed.png */, + B398281029239F4600A82429 /* a00193_source.html */, + B398281129239F4600A82429 /* a00104.html */, + B398281229239F4600A82429 /* a00041.html */, + B398281329239F4600A82429 /* a00235_source.html */, + B398281429239F4600A82429 /* a00295.html */, + B398281529239F4600A82429 /* dynsections.js */, + B398281629239F4600A82429 /* a00081_source.html */, + B398281729239F4600A82429 /* a00016.html */, + B398281829239F4600A82429 /* a00329.html */, + B398281929239F4600A82429 /* a00283.html */, + B398281A29239F4600A82429 /* a00140_source.html */, + B398281B29239F4600A82429 /* a00022_source.html */, + B398281C29239F4600A82429 /* a00145.html */, + B398281D29239F4600A82429 /* a00130_source.html */, + B398281E29239F4600A82429 /* a00112.html */, + B398281F29239F4600A82429 /* a00052_source.html */, + B398282029239F4600A82429 /* folderopen.png */, + B398282129239F4600A82429 /* a00057.html */, + B398282229239F4600A82429 /* a00207_source.html */, + B398282329239F4600A82429 /* a00305.html */, + B398282429239F4600A82429 /* a00186.html */, + B398282529239F4600A82429 /* a00169.html */, + B398282629239F4600A82429 /* a00217.html */, + B398282729239F4600A82429 /* a00352.html */, + B398282829239F4600A82429 /* a00094.html */, + B398282929239F4600A82429 /* a00201.html */, + B398282A29239F4600A82429 /* a00102_source.html */, + B398282B29239F4600A82429 /* a00344.html */, + B398282C29239F4600A82429 /* a00060_source.html */, + B398282D29239F4600A82429 /* a00128.html */, + B398282E29239F4600A82429 /* a00229_source.html */, + B398282F29239F4600A82429 /* a00082.html */, + B398283029239F4600A82429 /* a00256.html */, + B398283129239F4600A82429 /* a00313.html */, + B398283229239F4600A82429 /* a00172_source.html */, + B398283329239F4600A82429 /* a00010_source.html */, + B398283429239F4600A82429 /* a00190.html */, + B398283529239F4600A82429 /* a00108.html */, + B398283629239F4600A82429 /* a00088_source.html */, + B398283729239F4600A82429 /* a00117_source.html */, + B398283829239F4600A82429 /* a00364.html */, + B398283929239F4600A82429 /* a00075_source.html */, + B398283A29239F4600A82429 /* a00221.html */, + B398283B29239F4600A82429 /* a00167_source.html */, + B398283C29239F4600A82429 /* a00333.html */, + B398283D29239F4600A82429 /* a00299.html */, + B398283E29239F4600A82429 /* a00005_source.html */, + B398283F29239F4600A82429 /* a00276.html */, + B398284029239F4600A82429 /* a00149.html */, + B398284129239F4600A82429 /* a00212_source.html */, + B398284229239F4600A82429 /* dir_3a581ba30d25676e4b797b1f96d53b45.html */, + B398284329239F4600A82429 /* a00139_source.html */, + B398284429239F4600A82429 /* a00325.html */, + B398284529239F4600A82429 /* a00260.html */, + B398284629239F4600A82429 /* a00372.html */, + B398284729239F4600A82429 /* a00149_source.html */, + B398284829239F4600A82429 /* dir_6b66465792d005310484819a0eb0b0d3.html */, + B398284929239F4600A82429 /* a00155_source.html */, + B398284A29239F4600A82429 /* a00165.html */, + B398284B29239F4600A82429 /* a00037_source.html */, + B398284C29239F4600A82429 /* a00309.html */, + B398284D29239F4600A82429 /* a00077.html */, + B398284E29239F4600A82429 /* a00132.html */, + B398284F29239F4600A82429 /* a00098.html */, + B398285029239F4600A82429 /* a00125_source.html */, + B398285129239F4700A82429 /* a00047_source.html */, + B398285229239F4700A82429 /* a00061.html */, + B398285329239F4700A82429 /* jquery.js */, + B398285429239F4700A82429 /* a00186_source.html */, + B398285529239F4700A82429 /* a00019_source.html */, + B398285629239F4700A82429 /* a00348.html */, + B398285729239F4700A82429 /* a00036.html */, + B398285829239F4700A82429 /* a00220_source.html */, + B398285929239F4700A82429 /* a00173.html */, + B398285A29239F4700A82429 /* a00069_source.html */, + B398285B29239F4700A82429 /* a00094_source.html */, + ); + path = api; + sourceTree = ""; + }; + B398267129239F4500A82429 /* search */ = { + isa = PBXGroup; + children = ( + B398267229239F4500A82429 /* functions_3.js */, + B398267329239F4500A82429 /* searchdata.js */, + B398267429239F4500A82429 /* functions_6.html */, + B398267529239F4500A82429 /* files_f.html */, + B398267629239F4500A82429 /* all_6.js */, + B398267729239F4500A82429 /* functions_11.js */, + B398267829239F4500A82429 /* all_4.html */, + B398267929239F4500A82429 /* files_9.js */, + B398267A29239F4500A82429 /* files_14.js */, + B398267B29239F4500A82429 /* functions_d.js */, + B398267C29239F4500A82429 /* groups_1.html */, + B398267D29239F4500A82429 /* all_a.js */, + B398267E29239F4500A82429 /* search_r.png */, + B398267F29239F4500A82429 /* functions_7.js */, + B398268029239F4500A82429 /* typedefs_9.js */, + B398268129239F4500A82429 /* functions_a.html */, + B398268229239F4500A82429 /* all_8.html */, + B398268329239F4500A82429 /* files_1.html */, + B398268429239F4500A82429 /* all_c.html */, + B398268529239F4500A82429 /* functions_15.js */, + B398268629239F4500A82429 /* all_2.js */, + B398268729239F4500A82429 /* typedefs_0.html */, + B398268829239F4500A82429 /* files_10.js */, + B398268929239F4500A82429 /* groups_8.js */, + B398268A29239F4500A82429 /* all_e.js */, + B398268B29239F4500A82429 /* functions_6.js */, + B398268C29239F4500A82429 /* typedefs_8.js */, + B398268D29239F4500A82429 /* functions_14.js */, + B398268E29239F4500A82429 /* all_3.js */, + B398268F29239F4500A82429 /* typedefs_1.html */, + B398269029239F4500A82429 /* functions_a.js */, + B398269129239F4500A82429 /* all_b.html */, + B398269229239F4500A82429 /* all_9.html */, + B398269329239F4500A82429 /* files_0.html */, + B398269429239F4500A82429 /* files_11.js */, + B398269529239F4500A82429 /* groups_9.js */, + B398269629239F4500A82429 /* all_d.js */, + B398269729239F4500A82429 /* functions_2.js */, + B398269829239F4500A82429 /* groups_0.html */, + B398269929239F4500A82429 /* all_16.html */, + B398269A29239F4500A82429 /* all_7.js */, + B398269B29239F4500A82429 /* functions_10.js */, + B398269C29239F4500A82429 /* files_8.js */, + B398269D29239F4500A82429 /* search.css */, + B398269E29239F4500A82429 /* all_5.html */, + B398269F29239F4500A82429 /* functions_e.js */, + B39826A029239F4500A82429 /* functions_7.html */, + B39826A129239F4500A82429 /* functions_16.html */, + B39826A229239F4500A82429 /* files_d.js */, + B39826A329239F4500A82429 /* files_7.html */, + B39826A429239F4500A82429 /* all_e.html */, + B39826A529239F4500A82429 /* typedefs_7.js */, + B39826A629239F4500A82429 /* functions_9.js */, + B39826A729239F4500A82429 /* typedefs_6.html */, + B39826A829239F4500A82429 /* groups_6.js */, + B39826A929239F4500A82429 /* files_3.js */, + B39826AA29239F4500A82429 /* functions_11.html */, + B39826AB29239F4500A82429 /* files_11.html */, + B39826AC29239F4500A82429 /* functions_0.html */, + B39826AD29239F4500A82429 /* all_8.js */, + B39826AE29239F4500A82429 /* typedefs_3.js */, + B39826AF29239F4500A82429 /* all_13.js */, + B39826B029239F4500A82429 /* all_2.html */, + B39826B129239F4500A82429 /* typedefs_a.html */, + B39826B229239F4500A82429 /* groups_2.js */, + B39826B329239F4500A82429 /* groups_7.html */, + B39826B429239F4500A82429 /* all_11.html */, + B39826B529239F4500A82429 /* typedefs_d.js */, + B39826B629239F4500A82429 /* files_7.js */, + B39826B729239F4500A82429 /* groups_6.html */, + B39826B829239F4500A82429 /* all_9.js */, + B39826B929239F4500A82429 /* all_10.html */, + B39826BA29239F4500A82429 /* typedefs_2.js */, + B39826BB29239F4500A82429 /* all_12.js */, + B39826BC29239F4500A82429 /* files_a.js */, + B39826BD29239F4500A82429 /* groups_3.js */, + B39826BE29239F4500A82429 /* all_3.html */, + B39826BF29239F4500A82429 /* files_a.html */, + B39826C029239F4500A82429 /* functions_1.html */, + B39826C129239F4500A82429 /* files_10.html */, + B39826C229239F4500A82429 /* functions_10.html */, + B39826C329239F4500A82429 /* files_6.js */, + B39826C429239F4500A82429 /* files_e.js */, + B39826C529239F4500A82429 /* all_16.js */, + B39826C629239F4500A82429 /* typedefs_6.js */, + B39826C729239F4500A82429 /* typedefs_7.html */, + B39826C829239F4500A82429 /* functions_8.js */, + B39826C929239F4500A82429 /* all_d.html */, + B39826CA29239F4500A82429 /* groups_7.js */, + B39826CB29239F4500A82429 /* files_6.html */, + B39826CC29239F4500A82429 /* functions_f.html */, + B39826CD29239F4500A82429 /* files_2.js */, + B39826CE29239F4500A82429 /* typedefs_a.js */, + B39826CF29239F4500A82429 /* groups_9.html */, + B39826D029239F4500A82429 /* all_11.js */, + B39826D129239F4500A82429 /* typedefs_1.js */, + B39826D229239F4500A82429 /* files_b.js */, + B39826D329239F4500A82429 /* typedefs_4.html */, + B39826D429239F4500A82429 /* groups_0.js */, + B39826D529239F4500A82429 /* files_5.html */, + B39826D629239F4500A82429 /* functions_e.html */, + B39826D729239F4500A82429 /* files_5.js */, + B39826D829239F4500A82429 /* all_13.html */, + B39826D929239F4500A82429 /* groups_5.html */, + B39826DA29239F4500A82429 /* files_f.js */, + B39826DB29239F4500A82429 /* typedefs_8.html */, + B39826DC29239F4500A82429 /* typedefs_c.html */, + B39826DD29239F4500A82429 /* typedefs_5.js */, + B39826DE29239F4500A82429 /* all_15.js */, + B39826DF29239F4500A82429 /* files_9.html */, + B39826E029239F4500A82429 /* all_0.html */, + B39826E129239F4500A82429 /* groups_4.js */, + B39826E229239F4500A82429 /* files_b.html */, + B39826E329239F4500A82429 /* files_1.js */, + B39826E429239F4500A82429 /* functions_2.html */, + B39826E529239F4500A82429 /* files_13.html */, + B39826E629239F4500A82429 /* typedefs_b.js */, + B39826E729239F4500A82429 /* functions_13.html */, + B39826E829239F4500A82429 /* functions_12.html */, + B39826E929239F4500A82429 /* files_12.html */, + B39826EA29239F4500A82429 /* functions_3.html */, + B39826EB29239F4500A82429 /* files_c.html */, + B39826EC29239F4500A82429 /* files_8.html */, + B39826ED29239F4500A82429 /* all_1.html */, + B39826EE29239F4500A82429 /* typedefs_4.js */, + B39826EF29239F4500A82429 /* all_14.js */, + B39826F029239F4500A82429 /* typedefs_b.html */, + B39826F129239F4500A82429 /* typedefs_9.html */, + B39826F229239F4500A82429 /* groups_5.js */, + B39826F329239F4500A82429 /* all_12.html */, + B39826F429239F4500A82429 /* files_0.js */, + B39826F529239F4500A82429 /* groups_4.html */, + B39826F629239F4500A82429 /* typedefs_c.js */, + B39826F729239F4500A82429 /* functions_d.html */, + B39826F829239F4500A82429 /* files_4.html */, + B39826F929239F4500A82429 /* all_10.js */, + B39826FA29239F4500A82429 /* all_f.html */, + B39826FB29239F4500A82429 /* typedefs_0.js */, + B39826FC29239F4500A82429 /* files_c.js */, + B39826FD29239F4500A82429 /* groups_1.js */, + B39826FE29239F4500A82429 /* typedefs_5.html */, + B39826FF29239F4500A82429 /* groups_8.html */, + B398270029239F4500A82429 /* files_4.js */, + B398270129239F4500A82429 /* functions_5.js */, + B398270229239F4500A82429 /* all_15.html */, + B398270329239F4500A82429 /* groups_3.html */, + B398270429239F4500A82429 /* all_0.js */, + B398270529239F4500A82429 /* functions_b.js */, + B398270629239F4500A82429 /* files_12.js */, + B398270729239F4500A82429 /* all_6.html */, + B398270829239F4500A82429 /* files_d.html */, + B398270929239F4500A82429 /* functions_4.html */, + B398270A29239F4500A82429 /* functions_15.html */, + B398270B29239F4500A82429 /* search_l.png */, + B398270C29239F4500A82429 /* functions_1.js */, + B398270D29239F4500A82429 /* pages_0.js */, + B398270E29239F4500A82429 /* functions_13.js */, + B398270F29239F4500A82429 /* all_4.js */, + B398271029239F4500A82429 /* typedefs_2.html */, + B398271129239F4500A82429 /* all_a.html */, + B398271229239F4500A82429 /* functions_f.js */, + B398271329239F4500A82429 /* files_3.html */, + B398271429239F4600A82429 /* functions_c.html */, + B398271529239F4600A82429 /* all_c.js */, + B398271629239F4600A82429 /* functions_8.html */, + B398271729239F4600A82429 /* search_m.png */, + B398271829239F4600A82429 /* search.js */, + B398271929239F4600A82429 /* functions_9.html */, + B398271A29239F4600A82429 /* functions_0.js */, + B398271B29239F4600A82429 /* functions_b.html */, + B398271C29239F4600A82429 /* files_2.html */, + B398271D29239F4600A82429 /* functions_12.js */, + B398271E29239F4600A82429 /* all_5.js */, + B398271F29239F4600A82429 /* pages_0.html */, + B398272029239F4600A82429 /* typedefs_3.html */, + B398272129239F4600A82429 /* mag_sel.png */, + B398272229239F4600A82429 /* all_b.js */, + B398272329239F4600A82429 /* nomatches.html */, + B398272429239F4600A82429 /* functions_4.js */, + B398272529239F4600A82429 /* functions_14.html */, + B398272629239F4600A82429 /* files_14.html */, + B398272729239F4600A82429 /* functions_5.html */, + B398272829239F4600A82429 /* files_e.html */, + B398272929239F4600A82429 /* all_7.html */, + B398272A29239F4600A82429 /* all_1.js */, + B398272B29239F4600A82429 /* functions_16.js */, + B398272C29239F4600A82429 /* typedefs_d.html */, + B398272D29239F4600A82429 /* functions_c.js */, + B398272E29239F4600A82429 /* files_13.js */, + B398272F29239F4600A82429 /* all_14.html */, + B398273029239F4600A82429 /* groups_2.html */, + B398273129239F4600A82429 /* close.png */, + B398273229239F4600A82429 /* all_f.js */, + ); + path = search; + sourceTree = ""; + }; + B398285F29239F4700A82429 /* glm */ = { + isa = PBXGroup; + children = ( + B398286029239F4700A82429 /* vec4.hpp */, + B398286129239F4700A82429 /* integer.hpp */, + B398286229239F4700A82429 /* vector_relational.hpp */, + B398286329239F4700A82429 /* mat2x3.hpp */, + B398286429239F4700A82429 /* mat4x4.hpp */, + B398286529239F4700A82429 /* mat2x2.hpp */, + B398286629239F4700A82429 /* exponential.hpp */, + B398286729239F4700A82429 /* vec2.hpp */, + B398286829239F4700A82429 /* CMakeLists.txt */, + B398286929239F4700A82429 /* vec3.hpp */, + B398286A29239F4700A82429 /* fwd.hpp */, + B398286B29239F4700A82429 /* mat4x3.hpp */, + B398286C29239F4700A82429 /* mat4x2.hpp */, + B398286D29239F4700A82429 /* mat2x4.hpp */, + B398286E29239F4700A82429 /* packing.hpp */, + B398286F29239F4700A82429 /* mat3x3.hpp */, + B398287029239F4700A82429 /* mat3x2.hpp */, + B398287129239F4700A82429 /* ext */, + B39828ED29239F4700A82429 /* simd */, + B39828F829239F4700A82429 /* mat3x4.hpp */, + B39828F929239F4700A82429 /* matrix.hpp */, + B39828FA29239F4700A82429 /* glm.hpp */, + B39828FB29239F4700A82429 /* trigonometric.hpp */, + B39828FC29239F4700A82429 /* geometric.hpp */, + B39828FD29239F4700A82429 /* detail */, + B398293B29239F4700A82429 /* ext.hpp */, + B398293C29239F4700A82429 /* gtc */, + B398296329239F4700A82429 /* common.hpp */, + B398296429239F4700A82429 /* gtx */, + ); + path = glm; + sourceTree = ""; + }; + B398287129239F4700A82429 /* ext */ = { + isa = PBXGroup; + children = ( + B398287229239F4700A82429 /* matrix_double3x2_precision.hpp */, + B398287329239F4700A82429 /* matrix_float2x4.hpp */, + B398287429239F4700A82429 /* vector_bool2.hpp */, + B398287529239F4700A82429 /* quaternion_double_precision.hpp */, + B398287629239F4700A82429 /* matrix_float4x2.hpp */, + B398287729239F4700A82429 /* matrix_float4x3.hpp */, + B398287829239F4700A82429 /* vector_bool3.hpp */, + B398287929239F4700A82429 /* vector_relational.hpp */, + B398287A29239F4700A82429 /* vector_bool1.hpp */, + B398287B29239F4700A82429 /* quaternion_common.inl */, + B398287C29239F4700A82429 /* vector_uint2_precision.hpp */, + B398287D29239F4700A82429 /* vector_float1_precision.hpp */, + B398287E29239F4700A82429 /* matrix_float2x3_precision.hpp */, + B398287F29239F4700A82429 /* matrix_float2x2.hpp */, + B398288029239F4700A82429 /* matrix_common.hpp */, + B398288129239F4700A82429 /* vector_bool4.hpp */, + B398288229239F4700A82429 /* matrix_float2x4_precision.hpp */, + B398288329239F4700A82429 /* matrix_float4x4.hpp */, + B398288429239F4700A82429 /* vector_uint1_precision.hpp */, + B398288529239F4700A82429 /* matrix_float2x3.hpp */, + B398288629239F4700A82429 /* matrix_clip_space.hpp */, + B398288729239F4700A82429 /* scalar_integer.hpp */, + B398288829239F4700A82429 /* vector_float2_precision.hpp */, + B398288929239F4700A82429 /* matrix_transform.inl */, + B398288A29239F4700A82429 /* quaternion_exponential.inl */, + B398288B29239F4700A82429 /* scalar_common.hpp */, + B398288C29239F4700A82429 /* quaternion_transform.inl */, + B398288D29239F4700A82429 /* matrix_double4x2_precision.hpp */, + B398288E29239F4700A82429 /* matrix_clip_space.inl */, + B398288F29239F4700A82429 /* vector_double4_precision.hpp */, + B398289029239F4700A82429 /* matrix_float3x4_precision.hpp */, + B398289129239F4700A82429 /* scalar_integer.inl */, + B398289229239F4700A82429 /* vector_uint3.hpp */, + B398289329239F4700A82429 /* matrix_float4x3_precision.hpp */, + B398289429239F4700A82429 /* matrix_common.inl */, + B398289529239F4700A82429 /* vector_uint2.hpp */, + B398289629239F4700A82429 /* quaternion_float_precision.hpp */, + B398289729239F4700A82429 /* vector_int1_precision.hpp */, + B398289829239F4700A82429 /* matrix_float3x4.hpp */, + B398289929239F4700A82429 /* quaternion_transform.hpp */, + B398289A29239F4700A82429 /* vector_bool4_precision.hpp */, + B398289B29239F4700A82429 /* vector_uint1.hpp */, + B398289C29239F4700A82429 /* matrix_transform.hpp */, + B398289D29239F4700A82429 /* scalar_common.inl */, + B398289E29239F4700A82429 /* quaternion_exponential.hpp */, + B398289F29239F4700A82429 /* vector_relational.inl */, + B39828A029239F4700A82429 /* vector_bool3_precision.hpp */, + B39828A129239F4700A82429 /* matrix_double2x2_precision.hpp */, + B39828A229239F4700A82429 /* quaternion_float.hpp */, + B39828A329239F4700A82429 /* vector_int2_precision.hpp */, + B39828A429239F4700A82429 /* vector_uint4.hpp */, + B39828A529239F4700A82429 /* matrix_float3x2.hpp */, + B39828A629239F4700A82429 /* vector_double3_precision.hpp */, + B39828A729239F4700A82429 /* quaternion_common.hpp */, + B39828A829239F4700A82429 /* matrix_float3x3_precision.hpp */, + B39828A929239F4700A82429 /* matrix_float3x3.hpp */, + B39828AA29239F4700A82429 /* scalar_int_sized.hpp */, + B39828AB29239F4700A82429 /* matrix_float4x4_precision.hpp */, + B39828AC29239F4700A82429 /* matrix_double4x2.hpp */, + B39828AD29239F4700A82429 /* vector_int1.hpp */, + B39828AE29239F4700A82429 /* vector_float3.hpp */, + B39828AF29239F4700A82429 /* matrix_double2x4.hpp */, + B39828B029239F4700A82429 /* scalar_ulp.hpp */, + B39828B129239F4700A82429 /* quaternion_geometric.hpp */, + B39828B229239F4700A82429 /* vector_int3_precision.hpp */, + B39828B329239F4700A82429 /* vector_float2.hpp */, + B39828B429239F4700A82429 /* matrix_double2x3_precision.hpp */, + B39828B529239F4700A82429 /* vector_bool2_precision.hpp */, + B39828B629239F4700A82429 /* quaternion_double.hpp */, + B39828B729239F4700A82429 /* matrix_double4x3.hpp */, + B39828B829239F4700A82429 /* quaternion_common_simd.inl */, + B39828B929239F4700A82429 /* vector_int2.hpp */, + B39828BA29239F4700A82429 /* vector_double2_precision.hpp */, + B39828BB29239F4700A82429 /* matrix_float3x2_precision.hpp */, + B39828BC29239F4700A82429 /* matrix_relational.hpp */, + B39828BD29239F4700A82429 /* vector_integer.hpp */, + B39828BE29239F4700A82429 /* scalar_relational.hpp */, + B39828BF29239F4700A82429 /* vector_float1.hpp */, + B39828C029239F4700A82429 /* vector_int3.hpp */, + B39828C129239F4700A82429 /* scalar_constants.inl */, + B39828C229239F4700A82429 /* matrix_double4x4.hpp */, + B39828C329239F4700A82429 /* scalar_uint_sized.hpp */, + B39828C429239F4700A82429 /* vector_double1_precision.hpp */, + B39828C529239F4700A82429 /* matrix_double2x2.hpp */, + B39828C629239F4700A82429 /* matrix_float4x2_precision.hpp */, + B39828C729239F4700A82429 /* matrix_double2x3.hpp */, + B39828C829239F4700A82429 /* matrix_projection.hpp */, + B39828C929239F4700A82429 /* vector_float4.hpp */, + B39828CA29239F4700A82429 /* vector_common.inl */, + B39828CB29239F4700A82429 /* vector_int4_precision.hpp */, + B39828CC29239F4700A82429 /* matrix_double2x4_precision.hpp */, + B39828CD29239F4700A82429 /* vector_int4.hpp */, + B39828CE29239F4700A82429 /* quaternion_relational.hpp */, + B39828CF29239F4700A82429 /* quaternion_trigonometric.hpp */, + B39828D029239F4700A82429 /* vector_bool1_precision.hpp */, + B39828D129239F4700A82429 /* vector_ulp.hpp */, + B39828D229239F4700A82429 /* vector_float3_precision.hpp */, + B39828D329239F4700A82429 /* vector_uint4_precision.hpp */, + B39828D429239F4700A82429 /* matrix_projection.inl */, + B39828D529239F4700A82429 /* vector_common.hpp */, + B39828D629239F4700A82429 /* scalar_constants.hpp */, + B39828D729239F4700A82429 /* matrix_double3x4.hpp */, + B39828D829239F4700A82429 /* quaternion_trigonometric.inl */, + B39828D929239F4700A82429 /* matrix_double4x3_precision.hpp */, + B39828DA29239F4700A82429 /* vector_ulp.inl */, + B39828DB29239F4700A82429 /* matrix_double3x4_precision.hpp */, + B39828DC29239F4700A82429 /* quaternion_relational.inl */, + B39828DD29239F4700A82429 /* vector_double4.hpp */, + B39828DE29239F4700A82429 /* vector_double1.hpp */, + B39828DF29239F4700A82429 /* matrix_double4x4_precision.hpp */, + B39828E029239F4700A82429 /* scalar_ulp.inl */, + B39828E129239F4700A82429 /* quaternion_geometric.inl */, + B39828E229239F4700A82429 /* matrix_double3x3_precision.hpp */, + B39828E329239F4700A82429 /* matrix_double3x2.hpp */, + B39828E429239F4700A82429 /* matrix_float2x2_precision.hpp */, + B39828E529239F4700A82429 /* vector_integer.inl */, + B39828E629239F4700A82429 /* scalar_relational.inl */, + B39828E729239F4700A82429 /* vector_double3.hpp */, + B39828E829239F4700A82429 /* vector_float4_precision.hpp */, + B39828E929239F4700A82429 /* vector_double2.hpp */, + B39828EA29239F4700A82429 /* matrix_relational.inl */, + B39828EB29239F4700A82429 /* vector_uint3_precision.hpp */, + B39828EC29239F4700A82429 /* matrix_double3x3.hpp */, + ); + path = ext; + sourceTree = ""; + }; + B39828ED29239F4700A82429 /* simd */ = { + isa = PBXGroup; + children = ( + B39828EE29239F4700A82429 /* neon.h */, + B39828EF29239F4700A82429 /* vector_relational.h */, + B39828F029239F4700A82429 /* matrix.h */, + B39828F129239F4700A82429 /* packing.h */, + B39828F229239F4700A82429 /* common.h */, + B39828F329239F4700A82429 /* trigonometric.h */, + B39828F429239F4700A82429 /* geometric.h */, + B39828F529239F4700A82429 /* integer.h */, + B39828F629239F4700A82429 /* platform.h */, + B39828F729239F4700A82429 /* exponential.h */, + ); + path = simd; + sourceTree = ""; + }; + B39828FD29239F4700A82429 /* detail */ = { + isa = PBXGroup; + children = ( + B39828FE29239F4700A82429 /* func_exponential.inl */, + B39828FF29239F4700A82429 /* func_integer_simd.inl */, + B398290029239F4700A82429 /* func_vector_relational.inl */, + B398290129239F4700A82429 /* func_packing.inl */, + B398290229239F4700A82429 /* _fixes.hpp */, + B398290329239F4700A82429 /* type_quat.inl */, + B398290429239F4700A82429 /* type_half.inl */, + B398290529239F4700A82429 /* func_vector_relational_simd.inl */, + B398290629239F4700A82429 /* qualifier.hpp */, + B398290729239F4700A82429 /* func_matrix_simd.inl */, + B398290829239F4700A82429 /* _noise.hpp */, + B398290929239F4700A82429 /* type_half.hpp */, + B398290A29239F4700A82429 /* _features.hpp */, + B398290B29239F4700A82429 /* func_integer.inl */, + B398290C29239F4700A82429 /* _vectorize.hpp */, + B398290D29239F4700A82429 /* func_geometric.inl */, + B398290E29239F4700A82429 /* type_quat.hpp */, + B398290F29239F4700A82429 /* func_common.inl */, + B398291029239F4700A82429 /* type_quat_simd.inl */, + B398291129239F4700A82429 /* func_trigonometric.inl */, + B398291229239F4700A82429 /* type_mat2x4.inl */, + B398291329239F4700A82429 /* type_mat4x2.inl */, + B398291429239F4700A82429 /* _swizzle.hpp */, + B398291529239F4700A82429 /* type_mat4x3.inl */, + B398291629239F4700A82429 /* func_packing_simd.inl */, + B398291729239F4700A82429 /* type_vec4.inl */, + B398291829239F4700A82429 /* func_trigonometric_simd.inl */, + B398291929239F4700A82429 /* type_mat3x3.hpp */, + B398291A29239F4700A82429 /* type_mat3x2.hpp */, + B398291B29239F4700A82429 /* compute_common.hpp */, + B398291C29239F4700A82429 /* setup.hpp */, + B398291D29239F4700A82429 /* type_mat2x2.inl */, + B398291E29239F4700A82429 /* type_vec1.inl */, + B398291F29239F4700A82429 /* func_common_simd.inl */, + B398292029239F4700A82429 /* type_mat4x4.inl */, + B398292129239F4700A82429 /* func_geometric_simd.inl */, + B398292229239F4700A82429 /* type_mat2x3.inl */, + B398292329239F4700A82429 /* type_vec2.inl */, + B398292429239F4700A82429 /* glm.cpp */, + B398292529239F4700A82429 /* type_mat3x4.hpp */, + B398292629239F4700A82429 /* type_vec3.inl */, + B398292729239F4700A82429 /* type_mat4x4_simd.inl */, + B398292829239F4700A82429 /* type_mat2x3.hpp */, + B398292929239F4700A82429 /* type_mat4x4.hpp */, + B398292A29239F4700A82429 /* func_matrix.inl */, + B398292B29239F4700A82429 /* type_mat2x2.hpp */, + B398292C29239F4700A82429 /* type_vec1.hpp */, + B398292D29239F4700A82429 /* _swizzle_func.hpp */, + B398292E29239F4700A82429 /* type_vec3.hpp */, + B398292F29239F4700A82429 /* compute_vector_relational.hpp */, + B398293029239F4700A82429 /* type_vec4_simd.inl */, + B398293129239F4700A82429 /* type_mat3x4.inl */, + B398293229239F4700A82429 /* func_exponential_simd.inl */, + B398293329239F4700A82429 /* type_vec2.hpp */, + B398293429239F4700A82429 /* type_mat4x3.hpp */, + B398293529239F4700A82429 /* type_mat4x2.hpp */, + B398293629239F4700A82429 /* type_float.hpp */, + B398293729239F4700A82429 /* type_mat2x4.hpp */, + B398293829239F4700A82429 /* type_mat3x2.inl */, + B398293929239F4700A82429 /* type_mat3x3.inl */, + B398293A29239F4700A82429 /* type_vec4.hpp */, + ); + path = detail; + sourceTree = ""; + }; + B398293C29239F4700A82429 /* gtc */ = { + isa = PBXGroup; + children = ( + B398293D29239F4700A82429 /* integer.hpp */, + B398293E29239F4700A82429 /* matrix_integer.hpp */, + B398293F29239F4700A82429 /* matrix_inverse.inl */, + B398294029239F4700A82429 /* quaternion.inl */, + B398294129239F4700A82429 /* packing.inl */, + B398294229239F4700A82429 /* matrix_transform.inl */, + B398294329239F4700A82429 /* vec1.hpp */, + B398294429239F4700A82429 /* type_precision.inl */, + B398294529239F4700A82429 /* bitfield.inl */, + B398294629239F4700A82429 /* ulp.hpp */, + B398294729239F4700A82429 /* round.inl */, + B398294829239F4700A82429 /* packing.hpp */, + B398294929239F4700A82429 /* quaternion_simd.inl */, + B398294A29239F4700A82429 /* ulp.inl */, + B398294B29239F4700A82429 /* round.hpp */, + B398294C29239F4700A82429 /* matrix_transform.hpp */, + B398294D29239F4700A82429 /* type_precision.hpp */, + B398294E29239F4700A82429 /* bitfield.hpp */, + B398294F29239F4700A82429 /* integer.inl */, + B398295029239F4700A82429 /* quaternion.hpp */, + B398295129239F4700A82429 /* matrix_inverse.hpp */, + B398295229239F4700A82429 /* epsilon.inl */, + B398295329239F4700A82429 /* random.hpp */, + B398295429239F4700A82429 /* matrix_access.inl */, + B398295529239F4700A82429 /* type_ptr.hpp */, + B398295629239F4700A82429 /* reciprocal.inl */, + B398295729239F4700A82429 /* constants.hpp */, + B398295829239F4700A82429 /* color_space.hpp */, + B398295929239F4700A82429 /* noise.hpp */, + B398295A29239F4700A82429 /* color_space.inl */, + B398295B29239F4700A82429 /* noise.inl */, + B398295C29239F4700A82429 /* matrix_access.hpp */, + B398295D29239F4700A82429 /* random.inl */, + B398295E29239F4700A82429 /* epsilon.hpp */, + B398295F29239F4700A82429 /* constants.inl */, + B398296029239F4700A82429 /* reciprocal.hpp */, + B398296129239F4700A82429 /* type_ptr.inl */, + B398296229239F4700A82429 /* type_aligned.hpp */, + ); + path = gtc; + sourceTree = ""; + }; + B398296429239F4700A82429 /* gtx */ = { + isa = PBXGroup; + children = ( + B398296529239F4700A82429 /* vector_angle.hpp */, + B398296629239F4700A82429 /* log_base.inl */, + B398296729239F4700A82429 /* matrix_query.inl */, + B398296829239F4700A82429 /* extend.inl */, + B398296929239F4700A82429 /* integer.hpp */, + B398296A29239F4700A82429 /* associated_min_max.inl */, + B398296B29239F4700A82429 /* matrix_transform_2d.inl */, + B398296C29239F4700A82429 /* hash.hpp */, + B398296D29239F4700A82429 /* rotate_vector.hpp */, + B398296E29239F4700A82429 /* matrix_interpolation.hpp */, + B398296F29239F4700A82429 /* functions.hpp */, + B398297029239F4700A82429 /* quaternion.inl */, + B398297129239F4700A82429 /* exterior_product.inl */, + B398297229239F4700A82429 /* gradient_paint.inl */, + B398297329239F4700A82429 /* string_cast.hpp */, + B398297429239F4700A82429 /* color_space_YCoCg.hpp */, + B398297529239F4700A82429 /* type_trait.inl */, + B398297629239F4700A82429 /* extended_min_max.hpp */, + B398297729239F4700A82429 /* euler_angles.inl */, + B398297829239F4700A82429 /* fast_square_root.hpp */, + B398297929239F4700A82429 /* raw_data.inl */, + B398297A29239F4700A82429 /* matrix_cross_product.inl */, + B398297B29239F4700A82429 /* spline.hpp */, + B398297C29239F4700A82429 /* fast_trigonometry.hpp */, + B398297D29239F4700A82429 /* optimum_pow.inl */, + B398297E29239F4700A82429 /* dual_quaternion.hpp */, + B398297F29239F4700A82429 /* closest_point.hpp */, + B398298029239F4700A82429 /* number_precision.inl */, + B398298129239F4700A82429 /* mixed_product.inl */, + B398298229239F4700A82429 /* transform.inl */, + B398298329239F4700A82429 /* bit.inl */, + B398298429239F4700A82429 /* io.inl */, + B398298529239F4700A82429 /* fast_trigonometry.inl */, + B398298629239F4700A82429 /* optimum_pow.hpp */, + B398298729239F4700A82429 /* spline.inl */, + B398298829239F4700A82429 /* raw_data.hpp */, + B398298929239F4700A82429 /* matrix_cross_product.hpp */, + B398298A29239F4700A82429 /* euler_angles.hpp */, + B398298B29239F4700A82429 /* fast_square_root.inl */, + B398298C29239F4700A82429 /* color_space_YCoCg.inl */, + B398298D29239F4700A82429 /* type_trait.hpp */, + B398298E29239F4700A82429 /* extended_min_max.inl */, + B398298F29239F4700A82429 /* io.hpp */, + B398299029239F4700A82429 /* float_notmalize.inl */, + B398299129239F4700A82429 /* transform.hpp */, + B398299229239F4700A82429 /* bit.hpp */, + B398299329239F4700A82429 /* number_precision.hpp */, + B398299429239F4700A82429 /* mixed_product.hpp */, + B398299529239F4700A82429 /* closest_point.inl */, + B398299629239F4700A82429 /* dual_quaternion.inl */, + B398299729239F4700A82429 /* associated_min_max.hpp */, + B398299829239F4700A82429 /* matrix_transform_2d.hpp */, + B398299929239F4700A82429 /* integer.inl */, + B398299A29239F4700A82429 /* log_base.hpp */, + B398299B29239F4700A82429 /* matrix_query.hpp */, + B398299C29239F4700A82429 /* vector_angle.inl */, + B398299D29239F4700A82429 /* extend.hpp */, + B398299E29239F4700A82429 /* gradient_paint.hpp */, + B398299F29239F4700A82429 /* quaternion.hpp */, + B39829A029239F4700A82429 /* exterior_product.hpp */, + B39829A129239F4700A82429 /* string_cast.inl */, + B39829A229239F4700A82429 /* functions.inl */, + B39829A329239F4700A82429 /* rotate_vector.inl */, + B39829A429239F4700A82429 /* matrix_interpolation.inl */, + B39829A529239F4700A82429 /* hash.inl */, + B39829A629239F4700A82429 /* vector_query.inl */, + B39829A729239F4700A82429 /* polar_coordinates.hpp */, + B39829A829239F4700A82429 /* orthonormalize.inl */, + B39829A929239F4700A82429 /* component_wise.inl */, + B39829AA29239F4700A82429 /* normalize_dot.inl */, + B39829AB29239F4700A82429 /* std_based_type.inl */, + B39829AC29239F4700A82429 /* matrix_factorisation.inl */, + B39829AD29239F4700A82429 /* type_aligned.inl */, + B39829AE29239F4700A82429 /* vec_swizzle.hpp */, + B39829AF29239F4700A82429 /* projection.hpp */, + B39829B029239F4700A82429 /* compatibility.inl */, + B39829B129239F4700A82429 /* scalar_relational.hpp */, + B39829B229239F4700A82429 /* wrap.hpp */, + B39829B329239F4700A82429 /* rotate_normalized_axis.inl */, + B39829B429239F4700A82429 /* texture.hpp */, + B39829B529239F4700A82429 /* color_encoding.inl */, + B39829B629239F4700A82429 /* norm.hpp */, + B39829B729239F4700A82429 /* matrix_major_storage.inl */, + B39829B829239F4700A82429 /* matrix_operation.inl */, + B39829B929239F4700A82429 /* color_space.hpp */, + B39829BA29239F4700A82429 /* normal.hpp */, + B39829BB29239F4700A82429 /* intersect.inl */, + B39829BC29239F4700A82429 /* perpendicular.inl */, + B39829BD29239F4700A82429 /* easing.hpp */, + B39829BE29239F4700A82429 /* transform2.inl */, + B39829BF29239F4700A82429 /* matrix_decompose.hpp */, + B39829C029239F4700A82429 /* fast_exponential.hpp */, + B39829C129239F4700A82429 /* common.inl */, + B39829C229239F4700A82429 /* handed_coordinate_space.hpp */, + B39829C329239F4700A82429 /* intersect.hpp */, + B39829C429239F4700A82429 /* perpendicular.hpp */, + B39829C529239F4700A82429 /* easing.inl */, + B39829C629239F4700A82429 /* matrix_operation.hpp */, + B39829C729239F4700A82429 /* color_space.inl */, + B39829C829239F4700A82429 /* normal.inl */, + B39829C929239F4700A82429 /* color_encoding.hpp */, + B39829CA29239F4700A82429 /* matrix_major_storage.hpp */, + B39829CB29239F4700A82429 /* norm.inl */, + B39829CC29239F4700A82429 /* texture.inl */, + B39829CD29239F4700A82429 /* handed_coordinate_space.inl */, + B39829CE29239F4700A82429 /* common.hpp */, + B39829CF29239F4700A82429 /* range.hpp */, + B39829D029239F4700A82429 /* fast_exponential.inl */, + B39829D129239F4700A82429 /* transform2.hpp */, + B39829D229239F4700A82429 /* matrix_decompose.inl */, + B39829D329239F4700A82429 /* scalar_multiplication.hpp */, + B39829D429239F4700A82429 /* std_based_type.hpp */, + B39829D529239F4700A82429 /* matrix_factorisation.hpp */, + B39829D629239F4700A82429 /* orthonormalize.hpp */, + B39829D729239F4700A82429 /* normalize_dot.hpp */, + B39829D829239F4700A82429 /* component_wise.hpp */, + B39829D929239F4700A82429 /* polar_coordinates.inl */, + B39829DA29239F4700A82429 /* vector_query.hpp */, + B39829DB29239F4700A82429 /* scalar_relational.inl */, + B39829DC29239F4700A82429 /* wrap.inl */, + B39829DD29239F4700A82429 /* compatibility.hpp */, + B39829DE29239F4700A82429 /* rotate_normalized_axis.hpp */, + B39829DF29239F4700A82429 /* projection.inl */, + B39829E029239F4700A82429 /* type_aligned.hpp */, + ); + path = gtx; + sourceTree = ""; + }; + B39829E129239F4700A82429 /* breakpad */ = { + isa = PBXGroup; + children = ( + B39829E229239F4700A82429 /* configure.ac */, + B39829E329239F4700A82429 /* INSTALL */, + B39829E429239F4700A82429 /* CMakeLists.txt */, + B39829E529239F4700A82429 /* LICENSE */, + B39829E629239F4700A82429 /* configure */, + B39829E729239F4700A82429 /* ChangeLog */, + B39829E829239F4700A82429 /* AUTHORS */, + B39829E929239F4700A82429 /* autotools */, + B39829F429239F4700A82429 /* README.ANDROID */, + B39829F529239F4700A82429 /* breakpad.pc.in */, + B39829F629239F4700A82429 /* docs */, + B3982A0829239F4700A82429 /* codereview.settings */, + B3982A0929239F4700A82429 /* Makefile.am */, + B3982A0A29239F4700A82429 /* README.md */, + B3982A0B29239F4700A82429 /* appveyor.yml */, + B3982A0C29239F4700A82429 /* NEWS */, + B3982A0D29239F4700A82429 /* .gitignore */, + B3982A0E29239F4700A82429 /* android */, + B3982A1B29239F4700A82429 /* scripts */, + B3982A1E29239F4700A82429 /* .clang-format */, + B3982A1F29239F4700A82429 /* .github */, + B3982A2129239F4700A82429 /* OWNERS */, + B3982A2229239F4700A82429 /* m4 */, + B3982A2F29239F4700A82429 /* DEPS */, + B3982A3029239F4700A82429 /* Makefile.in */, + B3982A3129239F4700A82429 /* default.xml */, + B3982A3229239F4700A82429 /* .travis.yml */, + B3982A3329239F4700A82429 /* aclocal.m4 */, + B3982A3429239F4700A82429 /* breakpad-client.pc.in */, + B3982A3529239F4700A82429 /* src */, + ); + path = breakpad; + sourceTree = ""; + }; + B39829E929239F4700A82429 /* autotools */ = { + isa = PBXGroup; + children = ( + B39829EA29239F4700A82429 /* install-sh */, + B39829EB29239F4700A82429 /* ltmain.sh */, + B39829EC29239F4700A82429 /* ar-lib */, + B39829ED29239F4700A82429 /* config.guess */, + B39829EE29239F4700A82429 /* depcomp */, + B39829EF29239F4700A82429 /* missing */, + B39829F029239F4700A82429 /* config.sub */, + B39829F129239F4700A82429 /* root-test-driver */, + B39829F229239F4700A82429 /* compile */, + B39829F329239F4700A82429 /* test-driver */, + ); + path = autotools; + sourceTree = ""; + }; + B39829F629239F4700A82429 /* docs */ = { + isa = PBXGroup; + children = ( + B39829F729239F4700A82429 /* breakpad.png */, + B39829F829239F4700A82429 /* processor_design.md */, + B39829F929239F4700A82429 /* linux_system_calls.md */, + B39829FA29239F4700A82429 /* symbol_files.md */, + B39829FB29239F4700A82429 /* sym_upload_v2_protocol.md */, + B39829FC29239F4700A82429 /* stack_walking.md */, + B39829FD29239F4700A82429 /* getting_started_with_breakpad.md */, + B39829FE29239F4700A82429 /* client_design.md */, + B39829FF29239F4700A82429 /* breakpad.svg */, + B3982A0029239F4700A82429 /* contributing_to_breakpad.md */, + B3982A0129239F4700A82429 /* linux_starter_guide.md */, + B3982A0229239F4700A82429 /* linux_core_handler.md */, + B3982A0329239F4700A82429 /* exception_handling.md */, + B3982A0429239F4700A82429 /* OWNERS */, + B3982A0529239F4700A82429 /* mozilla_brown_bag_talk.md */, + B3982A0629239F4700A82429 /* windows_client_integration.md */, + B3982A0729239F4700A82429 /* mac_breakpad_starter_guide.md */, + ); + path = docs; + sourceTree = ""; + }; + B3982A0E29239F4700A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3982A0F29239F4700A82429 /* run-checks.sh */, + B3982A1029239F4700A82429 /* sample_app */, + B3982A1629239F4700A82429 /* common-functions.sh */, + B3982A1729239F4700A82429 /* test-driver */, + B3982A1829239F4700A82429 /* test-shell.sh */, + B3982A1929239F4700A82429 /* google_breakpad */, + ); + path = android; + sourceTree = ""; + }; + B3982A1029239F4700A82429 /* sample_app */ = { + isa = PBXGroup; + children = ( + B3982A1129239F4700A82429 /* README */, + B3982A1229239F4700A82429 /* jni */, + ); + path = sample_app; + sourceTree = ""; + }; + B3982A1229239F4700A82429 /* jni */ = { + isa = PBXGroup; + children = ( + B3982A1329239F4700A82429 /* Android.mk */, + B3982A1429239F4700A82429 /* Application.mk */, + B3982A1529239F4700A82429 /* test_breakpad.cpp */, + ); + path = jni; + sourceTree = ""; + }; + B3982A1929239F4700A82429 /* google_breakpad */ = { + isa = PBXGroup; + children = ( + B3982A1A29239F4700A82429 /* Android.mk */, + ); + path = google_breakpad; + sourceTree = ""; + }; + B3982A1B29239F4700A82429 /* scripts */ = { + isa = PBXGroup; + children = ( + B3982A1C29239F4700A82429 /* travis-checkout.sh */, + B3982A1D29239F4700A82429 /* travis-build.sh */, + ); + path = scripts; + sourceTree = ""; + }; + B3982A1F29239F4700A82429 /* .github */ = { + isa = PBXGroup; + children = ( + B3982A2029239F4700A82429 /* mistaken-pull-closer.yml */, + ); + path = .github; + sourceTree = ""; + }; + B3982A2229239F4700A82429 /* m4 */ = { + isa = PBXGroup; + children = ( + B3982A2329239F4700A82429 /* ltversion.m4 */, + B3982A2429239F4700A82429 /* libtool.m4 */, + B3982A2529239F4700A82429 /* ltoptions.m4 */, + B3982A2629239F4700A82429 /* ltsugar.m4 */, + B3982A2729239F4700A82429 /* ax_append_compile_flags.m4 */, + B3982A2829239F4700A82429 /* ax_check_define.m4 */, + B3982A2929239F4700A82429 /* ax_check_compile_flag.m4 */, + B3982A2A29239F4700A82429 /* ax_require_defined.m4 */, + B3982A2B29239F4700A82429 /* ax_cxx_compile_stdcxx.m4 */, + B3982A2C29239F4700A82429 /* ax_pthread.m4 */, + B3982A2D29239F4700A82429 /* ax_append_flag.m4 */, + B3982A2E29239F4700A82429 /* lt~obsolete.m4 */, + ); + path = m4; + sourceTree = ""; + }; + B3982A3529239F4700A82429 /* src */ = { + isa = PBXGroup; + children = ( + B3982A3629239F4700A82429 /* tools */, + B3982AA529239F4800A82429 /* breakpad_googletest_includes.h */, + B3982AA629239F4800A82429 /* processor */, + B3982B9029239F4800A82429 /* config.h.in */, + B3982B9129239F4800A82429 /* common */, + B3982C8129239F4900A82429 /* third_party */, + B3982CF529239F4900A82429 /* google_breakpad */, + B3982D2229239F4900A82429 /* client */, + ); + path = src; + sourceTree = ""; + }; + B3982A3629239F4700A82429 /* tools */ = { + isa = PBXGroup; + children = ( + B3982A3729239F4700A82429 /* python */, + B3982A3C29239F4700A82429 /* mac */, + B3982A5429239F4800A82429 /* linux */, + B3982A6529239F4800A82429 /* tools.gyp */, + B3982A6629239F4800A82429 /* windows */, + B3982A9C29239F4800A82429 /* solaris */, + ); + path = tools; + sourceTree = ""; + }; + B3982A3729239F4700A82429 /* python */ = { + isa = PBXGroup; + children = ( + B3982A3829239F4700A82429 /* deps-to-manifest.py */, + B3982A3929239F4700A82429 /* tests */, + B3982A3B29239F4700A82429 /* filter_syms.py */, + ); + path = python; + sourceTree = ""; + }; + B3982A3929239F4700A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B3982A3A29239F4700A82429 /* filter_syms_unittest.py */, + ); + path = tests; + sourceTree = ""; + }; + B3982A3C29239F4700A82429 /* mac */ = { + isa = PBXGroup; + children = ( + B3982A3D29239F4700A82429 /* symupload */, + B3982A4229239F4700A82429 /* upload_system_symbols */, + B3982A4629239F4700A82429 /* crash_report */, + B3982A4D29239F4700A82429 /* dump_syms */, + B3982A5329239F4800A82429 /* tools_mac.gypi */, + ); + path = mac; + sourceTree = ""; + }; + B3982A3D29239F4700A82429 /* symupload */ = { + isa = PBXGroup; + children = ( + B3982A3E29239F4700A82429 /* symupload.mm */, + B3982A3F29239F4700A82429 /* symupload.xcodeproj */, + ); + path = symupload; + sourceTree = ""; + }; + B3982A4029239F4700A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B398317F29239F4B00A82429 /* symupload */, + B398318129239F4B00A82429 /* minidump_upload */, + ); + name = Products; + sourceTree = ""; + }; + B3982A4229239F4700A82429 /* upload_system_symbols */ = { + isa = PBXGroup; + children = ( + B3982A4329239F4700A82429 /* arch_constants.h */, + B3982A4429239F4700A82429 /* upload_system_symbols.go */, + B3982A4529239F4700A82429 /* arch_reader.go */, + ); + path = upload_system_symbols; + sourceTree = ""; + }; + B3982A4629239F4700A82429 /* crash_report */ = { + isa = PBXGroup; + children = ( + B3982A4729239F4700A82429 /* on_demand_symbol_supplier.mm */, + B3982A4829239F4700A82429 /* crash_report.xcodeproj */, + B3982A4B29239F4700A82429 /* crash_report.mm */, + B3982A4C29239F4700A82429 /* on_demand_symbol_supplier.h */, + ); + path = crash_report; + sourceTree = ""; + }; + B3982A4929239F4700A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B398304029239F4B00A82429 /* crash_report */, + ); + name = Products; + sourceTree = ""; + }; + B3982A4D29239F4700A82429 /* dump_syms */ = { + isa = PBXGroup; + children = ( + B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */, + B3982A5129239F4800A82429 /* macho_dump.cc */, + B3982A5229239F4800A82429 /* dump_syms_tool.cc */, + ); + path = dump_syms; + sourceTree = ""; + }; + B3982A4F29239F4700A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B398306A29239F4B00A82429 /* dump_syms */, + B398306C29239F4B00A82429 /* macho_dump */, + B398306E29239F4B00A82429 /* libgtestmockall.a */, + B398307029239F4B00A82429 /* byte_cursor_unittest */, + B398307229239F4B00A82429 /* macho_reader_unittest */, + B398307429239F4B00A82429 /* stabs_reader_unittest */, + B398307629239F4B00A82429 /* bytereader_unittest */, + B398307829239F4B00A82429 /* dwarf2reader_cfi_unittest */, + B398307A29239F4B00A82429 /* dwarf2diehandler_unittest */, + B398307C29239F4B00A82429 /* dwarf_cu_to_module_unittest */, + B398307E29239F4B00A82429 /* dwarf_line_to_module_unittest */, + B398308029239F4B00A82429 /* dwarf_cfi_to_module_unittest */, + B398308229239F4B00A82429 /* stabs_to_module_unittest */, + B398308429239F4B00A82429 /* module_unittest */, + B398308629239F4B00A82429 /* test_assembler_unittest */, + ); + name = Products; + sourceTree = ""; + }; + B3982A5429239F4800A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B3982A5529239F4800A82429 /* core_handler */, + B3982A5729239F4800A82429 /* symupload */, + B3982A5A29239F4800A82429 /* tools_linux.gypi */, + B3982A5B29239F4800A82429 /* md2core */, + B3982A5F29239F4800A82429 /* dump_syms */, + B3982A6129239F4800A82429 /* pid2md */, + B3982A6329239F4800A82429 /* core2md */, + ); + path = linux; + sourceTree = ""; + }; + B3982A5529239F4800A82429 /* core_handler */ = { + isa = PBXGroup; + children = ( + B3982A5629239F4800A82429 /* core_handler.cc */, + ); + path = core_handler; + sourceTree = ""; + }; + B3982A5729239F4800A82429 /* symupload */ = { + isa = PBXGroup; + children = ( + B3982A5829239F4800A82429 /* minidump_upload.cc */, + B3982A5929239F4800A82429 /* sym_upload.cc */, + ); + path = symupload; + sourceTree = ""; + }; + B3982A5B29239F4800A82429 /* md2core */ = { + isa = PBXGroup; + children = ( + B3982A5C29239F4800A82429 /* minidump_memory_range.h */, + B3982A5D29239F4800A82429 /* minidump-2-core.cc */, + B3982A5E29239F4800A82429 /* minidump_memory_range_unittest.cc */, + ); + path = md2core; + sourceTree = ""; + }; + B3982A5F29239F4800A82429 /* dump_syms */ = { + isa = PBXGroup; + children = ( + B3982A6029239F4800A82429 /* dump_syms.cc */, + ); + path = dump_syms; + sourceTree = ""; + }; + B3982A6129239F4800A82429 /* pid2md */ = { + isa = PBXGroup; + children = ( + B3982A6229239F4800A82429 /* pid2md.cc */, + ); + path = pid2md; + sourceTree = ""; + }; + B3982A6329239F4800A82429 /* core2md */ = { + isa = PBXGroup; + children = ( + B3982A6429239F4800A82429 /* core2md.cc */, + ); + path = core2md; + sourceTree = ""; + }; + B3982A6629239F4800A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3982A6729239F4800A82429 /* symupload */, + B3982A6A29239F4800A82429 /* refresh_binaries.bat */, + B3982A6B29239F4800A82429 /* tools_windows.gyp */, + B3982A6C29239F4800A82429 /* converter */, + B3982A7029239F4800A82429 /* binaries */, + B3982A7329239F4800A82429 /* dump_syms */, + B3982A8929239F4800A82429 /* converter_exe */, + ); + path = windows; + sourceTree = ""; + }; + B3982A6729239F4800A82429 /* symupload */ = { + isa = PBXGroup; + children = ( + B3982A6829239F4800A82429 /* symupload.cc */, + B3982A6929239F4800A82429 /* symupload.gyp */, + ); + path = symupload; + sourceTree = ""; + }; + B3982A6C29239F4800A82429 /* converter */ = { + isa = PBXGroup; + children = ( + B3982A6D29239F4800A82429 /* ms_symbol_server_converter.h */, + B3982A6E29239F4800A82429 /* ms_symbol_server_converter.cc */, + B3982A6F29239F4800A82429 /* ms_symbol_server_converter.gyp */, + ); + path = converter; + sourceTree = ""; + }; + B3982A7029239F4800A82429 /* binaries */ = { + isa = PBXGroup; + children = ( + B3982A7129239F4800A82429 /* dump_syms.exe */, + B3982A7229239F4800A82429 /* symupload.exe */, + ); + path = binaries; + sourceTree = ""; + }; + B3982A7329239F4800A82429 /* dump_syms */ = { + isa = PBXGroup; + children = ( + B3982A7429239F4800A82429 /* testdata */, + B3982A8529239F4800A82429 /* dump_syms.gyp */, + B3982A8629239F4800A82429 /* dump_syms.cc */, + B3982A8729239F4800A82429 /* run_regtest.sh */, + B3982A8829239F4800A82429 /* dump_syms_unittest.cc */, + ); + path = dump_syms; + sourceTree = ""; + }; + B3982A7429239F4800A82429 /* testdata */ = { + isa = PBXGroup; + children = ( + B3982A7529239F4800A82429 /* omap_reorder_bbs.sym */, + B3982A7629239F4800A82429 /* dump_syms_regtest64.sym */, + B3982A7729239F4800A82429 /* omap_stretched.sym */, + B3982A7829239F4800A82429 /* omap_stretched_filled.sym */, + B3982A7929239F4800A82429 /* omap_reorder_funcs.pdb */, + B3982A7A29239F4800A82429 /* dump_syms_regtest.sym */, + B3982A7B29239F4800A82429 /* pe_only_symbol_test.dll */, + B3982A7C29239F4800A82429 /* dump_syms_regtest.pdb */, + B3982A7D29239F4800A82429 /* omap_stretched_filled.pdb */, + B3982A7E29239F4800A82429 /* omap_reorder_funcs.sym */, + B3982A7F29239F4800A82429 /* pe_only_symbol_test.sym */, + B3982A8029239F4800A82429 /* dump_syms_regtest64.exe */, + B3982A8129239F4800A82429 /* omap_stretched.pdb */, + B3982A8229239F4800A82429 /* dump_syms_regtest64.pdb */, + B3982A8329239F4800A82429 /* dump_syms_regtest.cc */, + B3982A8429239F4800A82429 /* omap_reorder_bbs.pdb */, + ); + path = testdata; + sourceTree = ""; + }; + B3982A8929239F4800A82429 /* converter_exe */ = { + isa = PBXGroup; + children = ( + B3982A8A29239F4800A82429 /* http_client.h */, + B3982A8B29239F4800A82429 /* wininet_client.h */, + B3982A8C29239F4800A82429 /* http_download.h */, + B3982A8D29239F4800A82429 /* wininet_client.cc */, + B3982A8E29239F4800A82429 /* converter.gyp */, + B3982A8F29239F4800A82429 /* winhttp_client.h */, + B3982A9029239F4800A82429 /* tokenizer.cc */, + B3982A9129239F4800A82429 /* tokenizer.h */, + B3982A9229239F4800A82429 /* escaping.h */, + B3982A9329239F4800A82429 /* winsymconv_test.cmd */, + B3982A9429239F4800A82429 /* http_download.cc */, + B3982A9529239F4800A82429 /* converter.cc */, + B3982A9629239F4800A82429 /* symsrv.yes */, + B3982A9729239F4800A82429 /* missing_symbols_test.txt */, + B3982A9829239F4800A82429 /* winhttp_client.cc */, + B3982A9929239F4800A82429 /* winsymconv.cmd */, + B3982A9A29239F4800A82429 /* escaping.cc */, + B3982A9B29239F4800A82429 /* configure.cmd */, + ); + path = converter_exe; + sourceTree = ""; + }; + B3982A9C29239F4800A82429 /* solaris */ = { + isa = PBXGroup; + children = ( + B3982A9D29239F4800A82429 /* dump_syms */, + ); + path = solaris; + sourceTree = ""; + }; + B3982A9D29239F4800A82429 /* dump_syms */ = { + isa = PBXGroup; + children = ( + B3982A9E29239F4800A82429 /* testdata */, + B3982AA229239F4800A82429 /* Makefile */, + B3982AA329239F4800A82429 /* dump_syms.cc */, + B3982AA429239F4800A82429 /* run_regtest.sh */, + ); + path = dump_syms; + sourceTree = ""; + }; + B3982A9E29239F4800A82429 /* testdata */ = { + isa = PBXGroup; + children = ( + B3982A9F29239F4800A82429 /* dump_syms_regtest.stabs */, + B3982AA029239F4800A82429 /* dump_syms_regtest.sym */, + B3982AA129239F4800A82429 /* dump_syms_regtest.cc */, + ); + path = testdata; + sourceTree = ""; + }; + B3982AA629239F4800A82429 /* processor */ = { + isa = PBXGroup; + children = ( + B3982AA729239F4800A82429 /* stackwalker_arm64.cc */, + B3982AA829239F4800A82429 /* fast_source_line_resolver_types.h */, + B3982AA929239F4800A82429 /* exploitability_linux.cc */, + B3982AAA29239F4800A82429 /* microdump.cc */, + B3982AAB29239F4800A82429 /* fast_source_line_resolver.cc */, + B3982AAC29239F4800A82429 /* address_map.h */, + B3982AAD29239F4800A82429 /* testdata */, + B3982B0929239F4800A82429 /* source_line_resolver_base_types.h */, + B3982B0A29239F4800A82429 /* synth_minidump.h */, + B3982B0B29239F4800A82429 /* stackwalker_x86_unittest.cc */, + B3982B0C29239F4800A82429 /* proc_maps_linux_unittest.cc */, + B3982B0D29239F4800A82429 /* static_contained_range_map-inl.h */, + B3982B0E29239F4800A82429 /* cfi_frame_info.cc */, + B3982B0F29239F4800A82429 /* stackwalker_amd64_unittest.cc */, + B3982B1029239F4800A82429 /* synth_minidump_unittest_data.h */, + B3982B1129239F4800A82429 /* static_map-inl.h */, + B3982B1229239F4800A82429 /* postfix_evaluator_unittest.cc */, + B3982B1329239F4800A82429 /* module_serializer.cc */, + B3982B1429239F4800A82429 /* static_map.h */, + B3982B1529239F4800A82429 /* stackwalker_selftest.cc */, + B3982B1629239F4800A82429 /* minidump_stackwalk_machine_readable_test */, + B3982B1729239F4800A82429 /* dump_object.cc */, + B3982B1829239F4800A82429 /* minidump.cc */, + B3982B1929239F4800A82429 /* postfix_evaluator-inl.h */, + B3982B1A29239F4800A82429 /* proto */, + B3982B1D29239F4800A82429 /* postfix_evaluator.h */, + B3982B1E29239F4800A82429 /* stackwalker_address_list_unittest.cc */, + B3982B1F29239F4800A82429 /* microdump_stackwalk_machine_readable_test */, + B3982B2029239F4800A82429 /* tokenize.cc */, + B3982B2129239F4800A82429 /* stackwalker_ppc.h */, + B3982B2229239F4800A82429 /* map_serializers.h */, + B3982B2329239F4800A82429 /* microdump_processor.cc */, + B3982B2429239F4800A82429 /* stackwalker_ppc64.cc */, + B3982B2529239F4800A82429 /* convert_old_arm64_context.h */, + B3982B2629239F4800A82429 /* disassembler_x86.cc */, + B3982B2729239F4800A82429 /* microdump_stackwalk_test_vars */, + B3982B2829239F4800A82429 /* dump_context.cc */, + B3982B2929239F4800A82429 /* microdump_processor_unittest.cc */, + B3982B2A29239F4800A82429 /* exploitability_linux.h */, + B3982B2B29239F4800A82429 /* basic_code_module.h */, + B3982B2C29239F4800A82429 /* map_serializers-inl.h */, + B3982B2D29239F4800A82429 /* contained_range_map_unittest.cc */, + B3982B2E29239F4800A82429 /* basic_source_line_resolver_types.h */, + B3982B2F29239F4800A82429 /* range_map.h */, + B3982B3029239F4800A82429 /* map_serializers_unittest.cc */, + B3982B3129239F4800A82429 /* cfi_frame_info-inl.h */, + B3982B3229239F4800A82429 /* processor.gyp */, + B3982B3329239F4800A82429 /* basic_code_modules.h */, + B3982B3429239F4800A82429 /* stackwalker_mips64_unittest.cc */, + B3982B3529239F4800A82429 /* static_map_iterator.h */, + B3982B3629239F4800A82429 /* stackwalker_arm64.h */, + B3982B3729239F4800A82429 /* tokenize.h */, + B3982B3829239F4800A82429 /* static_range_map_unittest.cc */, + B3982B3929239F4800A82429 /* linked_ptr.h */, + B3982B3A29239F4800A82429 /* synth_minidump_unittest.cc */, + B3982B3B29239F4800A82429 /* stackwalker_arm_unittest.cc */, + B3982B3C29239F4800A82429 /* pathname_stripper.h */, + B3982B3D29239F4800A82429 /* stackwalker_sparc.cc */, + B3982B3E29239F4800A82429 /* static_contained_range_map.h */, + B3982B3F29239F4800A82429 /* stackwalker_unittest_utils.h */, + B3982B4029239F4800A82429 /* module_serializer.h */, + B3982B4129239F4800A82429 /* exploitability_unittest.cc */, + B3982B4229239F4800A82429 /* static_address_map.h */, + B3982B4329239F4800A82429 /* stackwalker_selftest_sol.s */, + B3982B4429239F4800A82429 /* logging.h */, + B3982B4529239F4800A82429 /* minidump_stackwalk_test */, + B3982B4629239F4800A82429 /* process_state.cc */, + B3982B4729239F4800A82429 /* stackwalker_ppc.cc */, + B3982B4829239F4800A82429 /* exploitability.cc */, + B3982B4929239F4800A82429 /* simple_symbol_supplier.cc */, + B3982B4A29239F4800A82429 /* minidump_unittest.cc */, + B3982B4B29239F4800A82429 /* microdump_stackwalk.cc */, + B3982B4C29239F4800A82429 /* static_address_map-inl.h */, + B3982B4D29239F4800A82429 /* static_map_unittest.cc */, + B3982B4E29239F4800A82429 /* stack_frame_symbolizer.cc */, + B3982B4F29239F4800A82429 /* static_range_map.h */, + B3982B5029239F4800A82429 /* static_range_map-inl.h */, + B3982B5129239F4800A82429 /* cfi_frame_info.h */, + B3982B5229239F4800A82429 /* static_contained_range_map_unittest.cc */, + B3982B5329239F4800A82429 /* module_factory.h */, + B3982B5429239F4800A82429 /* simple_symbol_supplier.h */, + B3982B5529239F4800A82429 /* static_address_map_unittest.cc */, + B3982B5629239F4800A82429 /* address_map-inl.h */, + B3982B5729239F4800A82429 /* module_comparer.cc */, + B3982B5829239F4800A82429 /* stackwalker_amd64.cc */, + B3982B5929239F4800A82429 /* exploitability_win.cc */, + B3982B5A29239F4800A82429 /* contained_range_map.h */, + B3982B5B29239F4800A82429 /* pathname_stripper.cc */, + B3982B5C29239F4800A82429 /* range_map-inl.h */, + B3982B5D29239F4800A82429 /* stackwalker_address_list.h */, + B3982B5E29239F4800A82429 /* module_comparer.h */, + B3982B5F29239F4800A82429 /* stackwalker_address_list.cc */, + B3982B6029239F4800A82429 /* stackwalker_arm.cc */, + B3982B6129239F4800A82429 /* cfi_frame_info_unittest.cc */, + B3982B6229239F4800A82429 /* range_map_unittest.cc */, + B3982B6329239F4800A82429 /* convert_old_arm64_context.cc */, + B3982B6429239F4800A82429 /* stackwalker_ppc64.h */, + B3982B6529239F4800A82429 /* stack_frame_cpu.cc */, + B3982B6629239F4800A82429 /* minidump_processor.cc */, + B3982B6729239F4800A82429 /* stackwalk_common.cc */, + B3982B6829239F4800A82429 /* basic_source_line_resolver_unittest.cc */, + B3982B6929239F4800A82429 /* exploitability_win.h */, + B3982B6A29239F4800A82429 /* processor_tools.gypi */, + B3982B6B29239F4800A82429 /* stackwalker.cc */, + B3982B6C29239F4800A82429 /* stackwalker_mips.cc */, + B3982B6D29239F4800A82429 /* microdump_stackwalk_test */, + B3982B6E29239F4800A82429 /* symbolic_constants_win.h */, + B3982B6F29239F4800A82429 /* basic_source_line_resolver.cc */, + B3982B7029239F4800A82429 /* minidump_processor_unittest.cc */, + B3982B7129239F4800A82429 /* fast_source_line_resolver_unittest.cc */, + B3982B7229239F4800A82429 /* range_map_truncate_lower_unittest.cc */, + B3982B7329239F4800A82429 /* address_map_unittest.cc */, + B3982B7429239F4800A82429 /* logging.cc */, + B3982B7529239F4800A82429 /* stackwalker_amd64.h */, + B3982B7629239F4800A82429 /* source_line_resolver_base.cc */, + B3982B7729239F4800A82429 /* synth_minidump.cc */, + B3982B7829239F4800A82429 /* stackwalker_arm.h */, + B3982B7929239F4800A82429 /* symbolic_constants_win.cc */, + B3982B7A29239F4800A82429 /* minidump_dump_test */, + B3982B7B29239F4800A82429 /* range_map_truncate_upper_unittest.cc */, + B3982B7C29239F4800A82429 /* contained_range_map-inl.h */, + B3982B7D29239F4800A82429 /* stackwalker_arm64_unittest.cc */, + B3982B7E29239F4800A82429 /* stackwalker_sparc.h */, + B3982B7F29239F4800A82429 /* pathname_stripper_unittest.cc */, + B3982B8029239F4800A82429 /* basic_code_modules.cc */, + B3982B8129239F4800A82429 /* proc_maps_linux.cc */, + B3982B8229239F4800A82429 /* simple_serializer-inl.h */, + B3982B8329239F4800A82429 /* call_stack.cc */, + B3982B8429239F4800A82429 /* static_map_iterator-inl.h */, + B3982B8529239F4800A82429 /* simple_serializer.h */, + B3982B8629239F4800A82429 /* stackwalk_common.h */, + B3982B8729239F4800A82429 /* stackwalker_x86.cc */, + B3982B8829239F4800A82429 /* stackwalker_x86.h */, + B3982B8929239F4800A82429 /* windows_frame_info.h */, + B3982B8A29239F4800A82429 /* disassembler_x86_unittest.cc */, + B3982B8B29239F4800A82429 /* stackwalker_mips_unittest.cc */, + B3982B8C29239F4800A82429 /* minidump_stackwalk.cc */, + B3982B8D29239F4800A82429 /* stackwalker_mips.h */, + B3982B8E29239F4800A82429 /* minidump_dump.cc */, + B3982B8F29239F4800A82429 /* disassembler_x86.h */, + ); + path = processor; + sourceTree = ""; + }; + B3982AAD29239F4800A82429 /* testdata */ = { + isa = PBXGroup; + children = ( + B3982AAE29239F4800A82429 /* linux_jmp_to_module_not_exe_region.dmp */, + B3982AAF29239F4800A82429 /* read_av_clobber_write.dmp */, + B3982AB029239F4800A82429 /* null_read_av.dmp */, + B3982AB129239F4800A82429 /* linux_stack_pointer_in_stack_alt_name.dmp */, + B3982AB229239F4800A82429 /* module4_bad.out */, + B3982AB329239F4800A82429 /* linux_executable_heap.dmp */, + B3982AB429239F4800A82429 /* minidump2.stackwalk.out */, + B3982AB529239F4800A82429 /* test_app.cc */, + B3982AB629239F4800A82429 /* linux_inside_module_exe_region1.dmp */, + B3982AB729239F4800A82429 /* read_av_non_null.dmp */, + B3982AB829239F4800A82429 /* write_av_non_null.dmp */, + B3982AB929239F4800A82429 /* ascii_read_av.dmp */, + B3982ABA29239F4800A82429 /* linux_inside_module_exe_region2.dmp */, + B3982ABB29239F4800A82429 /* linux_null_read_av.dmp */, + B3982ABC29239F4800A82429 /* minidump2.stackwalk.machine_readable.out */, + B3982ABD29239F4800A82429 /* read_av_conditional.dmp */, + B3982ABE29239F4800A82429 /* exec_av_on_stack.dmp */, + B3982ABF29239F4800A82429 /* minidump2.dmp */, + B3982AC029239F4800A82429 /* linux_divide_by_zero.dmp */, + B3982AC129239F4800A82429 /* microdump-arm64.dmp */, + B3982AC229239F4800A82429 /* null_write_av.dmp */, + B3982AC329239F4800A82429 /* microdump-mips32.dmp */, + B3982AC429239F4800A82429 /* ascii_write_av.dmp */, + B3982AC529239F4800A82429 /* linux_write_to_nonwritable_module.dmp */, + B3982AC629239F4800A82429 /* ascii_read_av_conditional.dmp */, + B3982AC729239F4800A82429 /* ascii_read_av_block_write.dmp */, + B3982AC829239F4800A82429 /* linux_stack_pointer_in_module.dmp */, + B3982AC929239F4800A82429 /* linux_overflow.dmp */, + B3982ACA29239F4800A82429 /* minidump_32bit_crash_addr.dmp */, + B3982ACB29239F4800A82429 /* microdump-withcrashreason.dmp */, + B3982ACC29239F4800A82429 /* ascii_read_av_clobber_write.dmp */, + B3982ACD29239F4800A82429 /* linux_stack_pointer_in_stack.dmp */, + B3982ACE29239F4800A82429 /* module3_bad.out */, + B3982ACF29239F4800A82429 /* linux_write_to_nonwritable_region_math.dmp */, + B3982AD029239F4800A82429 /* linux_write_to_outside_module.dmp */, + B3982AD129239F4800A82429 /* linux_outside_module.dmp */, + B3982AD229239F4800A82429 /* microdump.stackwalk.machine_readable-arm.out */, + B3982AD329239F4800A82429 /* linux_write_to_under_4k.dmp */, + B3982AD429239F4800A82429 /* linux_write_to_outside_module_via_math.dmp */, + B3982AD529239F4800A82429 /* linux_executable_stack.dmp */, + B3982AD629239F4800A82429 /* microdump.stackwalk-arm64.out */, + B3982AD729239F4800A82429 /* linux_inline.dmp */, + B3982AD829239F4800A82429 /* ascii_write_av_arg_to_call.dmp */, + B3982AD929239F4800A82429 /* linux_null_dereference.dmp */, + B3982ADA29239F4800A82429 /* microdump.stackwalk-arm.out */, + B3982ADB29239F4800A82429 /* microdump-x86.dmp */, + B3982ADC29239F4800A82429 /* symbols */, + B3982AFA29239F4800A82429 /* microdump.stackwalk.machine_readable-arm64.out */, + B3982AFB29239F4800A82429 /* microdump-arm.dmp */, + B3982AFC29239F4800A82429 /* linux_stacksmash.dmp */, + B3982AFD29239F4800A82429 /* linux_raise_sigabrt.dmp */, + B3982AFE29239F4800A82429 /* microdump-mips64.dmp */, + B3982AFF29239F4800A82429 /* stack_exhaustion.dmp */, + B3982B0029239F4800A82429 /* linux_test_app.cc */, + B3982B0129239F4800A82429 /* ascii_read_av_then_jmp.dmp */, + B3982B0229239F4800A82429 /* module2.out */, + B3982B0329239F4800A82429 /* minidump2.dump.out */, + B3982B0429239F4800A82429 /* microdump-multiple.dmp */, + B3982B0529239F4800A82429 /* module0.out */, + B3982B0629239F4800A82429 /* ascii_read_av_xchg_write.dmp */, + B3982B0729239F4800A82429 /* module1.out */, + B3982B0829239F4800A82429 /* linux_jmp_to_0.dmp */, + ); + path = testdata; + sourceTree = ""; + }; + B3982ADC29239F4800A82429 /* symbols */ = { + isa = PBXGroup; + children = ( + B3982ADD29239F4800A82429 /* kernel32.pdb */, + B3982AE029239F4800A82429 /* libgcc_s.so.1 */, + B3982AE329239F4800A82429 /* test_app.pdb */, + B3982AE629239F4800A82429 /* overflow */, + B3982AE929239F4800A82429 /* null_read_av */, + B3982AEC29239F4800A82429 /* microdump */, + B3982AF729239F4800A82429 /* linux_inline */, + ); + path = symbols; + sourceTree = ""; + }; + B3982ADD29239F4800A82429 /* kernel32.pdb */ = { + isa = PBXGroup; + children = ( + B3982ADE29239F4800A82429 /* BCE8785C57B44245A669896B6A19B9542 */, + ); + path = kernel32.pdb; + sourceTree = ""; + }; + B3982ADE29239F4800A82429 /* BCE8785C57B44245A669896B6A19B9542 */ = { + isa = PBXGroup; + children = ( + B3982ADF29239F4800A82429 /* kernel32.sym */, + ); + path = BCE8785C57B44245A669896B6A19B9542; + sourceTree = ""; + }; + B3982AE029239F4800A82429 /* libgcc_s.so.1 */ = { + isa = PBXGroup; + children = ( + B3982AE129239F4800A82429 /* 18B180F90887D8F8B5C35D185444AF4C0 */, + ); + path = libgcc_s.so.1; + sourceTree = ""; + }; + B3982AE129239F4800A82429 /* 18B180F90887D8F8B5C35D185444AF4C0 */ = { + isa = PBXGroup; + children = ( + B3982AE229239F4800A82429 /* libgcc_s.so.1.sym */, + ); + path = 18B180F90887D8F8B5C35D185444AF4C0; + sourceTree = ""; + }; + B3982AE329239F4800A82429 /* test_app.pdb */ = { + isa = PBXGroup; + children = ( + B3982AE429239F4800A82429 /* 5A9832E5287241C1838ED98914E9B7FF1 */, + ); + path = test_app.pdb; + sourceTree = ""; + }; + B3982AE429239F4800A82429 /* 5A9832E5287241C1838ED98914E9B7FF1 */ = { + isa = PBXGroup; + children = ( + B3982AE529239F4800A82429 /* test_app.sym */, + ); + path = 5A9832E5287241C1838ED98914E9B7FF1; + sourceTree = ""; + }; + B3982AE629239F4800A82429 /* overflow */ = { + isa = PBXGroup; + children = ( + B3982AE729239F4800A82429 /* B0E1FC01EF48E39CAF5C881D2DF0C3840 */, + ); + path = overflow; + sourceTree = ""; + }; + B3982AE729239F4800A82429 /* B0E1FC01EF48E39CAF5C881D2DF0C3840 */ = { + isa = PBXGroup; + children = ( + B3982AE829239F4800A82429 /* overflow.sym */, + ); + path = B0E1FC01EF48E39CAF5C881D2DF0C3840; + sourceTree = ""; + }; + B3982AE929239F4800A82429 /* null_read_av */ = { + isa = PBXGroup; + children = ( + B3982AEA29239F4800A82429 /* 7B7D1968FF0D47AE4366E9C3A7E1B6750 */, + ); + path = null_read_av; + sourceTree = ""; + }; + B3982AEA29239F4800A82429 /* 7B7D1968FF0D47AE4366E9C3A7E1B6750 */ = { + isa = PBXGroup; + children = ( + B3982AEB29239F4800A82429 /* null_read_av.sym */, + ); + path = 7B7D1968FF0D47AE4366E9C3A7E1B6750; + sourceTree = ""; + }; + B3982AEC29239F4800A82429 /* microdump */ = { + isa = PBXGroup; + children = ( + B3982AED29239F4800A82429 /* crash_example */, + B3982AF229239F4800A82429 /* breakpad_unittests */, + ); + path = microdump; + sourceTree = ""; + }; + B3982AED29239F4800A82429 /* crash_example */ = { + isa = PBXGroup; + children = ( + B3982AEE29239F4800A82429 /* 8F36148CC4647A8116CAF2A25F591F570 */, + B3982AF029239F4800A82429 /* 6E72E2F1A5F59AB3D51356FDFE394D490 */, + ); + path = crash_example; + sourceTree = ""; + }; + B3982AEE29239F4800A82429 /* 8F36148CC4647A8116CAF2A25F591F570 */ = { + isa = PBXGroup; + children = ( + B3982AEF29239F4800A82429 /* crash_example.sym */, + ); + path = 8F36148CC4647A8116CAF2A25F591F570; + sourceTree = ""; + }; + B3982AF029239F4800A82429 /* 6E72E2F1A5F59AB3D51356FDFE394D490 */ = { + isa = PBXGroup; + children = ( + B3982AF129239F4800A82429 /* crash_example.sym */, + ); + path = 6E72E2F1A5F59AB3D51356FDFE394D490; + sourceTree = ""; + }; + B3982AF229239F4800A82429 /* breakpad_unittests */ = { + isa = PBXGroup; + children = ( + B3982AF329239F4800A82429 /* DA7778FB66018A4E9B4110ED06E730D00 */, + B3982AF529239F4800A82429 /* D6D1FEC9A15DE7F38A236898871A2E770 */, + ); + path = breakpad_unittests; + sourceTree = ""; + }; + B3982AF329239F4800A82429 /* DA7778FB66018A4E9B4110ED06E730D00 */ = { + isa = PBXGroup; + children = ( + B3982AF429239F4800A82429 /* breakpad_unittests.sym */, + ); + path = DA7778FB66018A4E9B4110ED06E730D00; + sourceTree = ""; + }; + B3982AF529239F4800A82429 /* D6D1FEC9A15DE7F38A236898871A2E770 */ = { + isa = PBXGroup; + children = ( + B3982AF629239F4800A82429 /* breakpad_unittests.sym */, + ); + path = D6D1FEC9A15DE7F38A236898871A2E770; + sourceTree = ""; + }; + B3982AF729239F4800A82429 /* linux_inline */ = { + isa = PBXGroup; + children = ( + B3982AF829239F4800A82429 /* BBA6FA10B8AAB33D00000000000000000 */, + ); + path = linux_inline; + sourceTree = ""; + }; + B3982AF829239F4800A82429 /* BBA6FA10B8AAB33D00000000000000000 */ = { + isa = PBXGroup; + children = ( + B3982AF929239F4800A82429 /* linux_inline.sym */, + ); + path = BBA6FA10B8AAB33D00000000000000000; + sourceTree = ""; + }; + B3982B1A29239F4800A82429 /* proto */ = { + isa = PBXGroup; + children = ( + B3982B1B29239F4800A82429 /* README */, + B3982B1C29239F4800A82429 /* process_state.proto */, + ); + path = proto; + sourceTree = ""; + }; + B3982B9129239F4800A82429 /* common */ = { + isa = PBXGroup; + children = ( + B3982B9229239F4800A82429 /* module_unittest.cc */, + B3982B9329239F4800A82429 /* dwarf_cu_to_module_unittest.cc */, + B3982B9429239F4800A82429 /* scoped_ptr.h */, + B3982B9529239F4800A82429 /* long_string_dictionary.cc */, + B3982B9629239F4800A82429 /* testdata */, + B3982B9829239F4800A82429 /* test_assembler.cc */, + B3982B9929239F4800A82429 /* common.gyp */, + B3982B9A29239F4800A82429 /* module.cc */, + B3982B9B29239F4800A82429 /* memory_range_unittest.cc */, + B3982B9C29239F4800A82429 /* md5.cc */, + B3982B9D29239F4800A82429 /* long_string_dictionary_unittest.cc */, + B3982B9E29239F4800A82429 /* stabs_to_module.h */, + B3982B9F29239F4800A82429 /* stdio_wrapper.h */, + B3982BA029239F4800A82429 /* convert_UTF.h */, + B3982BA129239F4800A82429 /* dwarf_cfi_to_module.cc */, + B3982BA229239F4800A82429 /* stabs_reader.cc */, + B3982BA329239F4800A82429 /* dwarf_cfi_to_module_unittest.cc */, + B3982BA429239F4800A82429 /* byte_cursor.h */, + B3982BA529239F4800A82429 /* dwarf_cu_to_module.h */, + B3982BA629239F4800A82429 /* string_conversion.cc */, + B3982BA729239F4800A82429 /* simple_string_dictionary.h */, + B3982BA829239F4800A82429 /* convert_UTF.cc */, + B3982BA929239F4800A82429 /* test_assembler.h */, + B3982BAA29239F4800A82429 /* string_conversion_unittest.cc */, + B3982BAB29239F4800A82429 /* symbol_data.h */, + B3982BAC29239F4800A82429 /* dwarf_line_to_module.cc */, + B3982BAD29239F4800A82429 /* memory_allocator.h */, + B3982BAE29239F4800A82429 /* dwarf_cu_to_module.cc */, + B3982BAF29239F4800A82429 /* language.h */, + B3982BB029239F4800A82429 /* md5.h */, + B3982BB129239F4800A82429 /* stabs_reader.h */, + B3982BB229239F4800A82429 /* tests */, + B3982BB629239F4800A82429 /* path_helper.h */, + B3982BB729239F4800A82429 /* using_std_string.h */, + B3982BB829239F4800A82429 /* dwarf_line_to_module.h */, + B3982BB929239F4800A82429 /* unordered.h */, + B3982BBA29239F4800A82429 /* path_helper.cc */, + B3982BBB29239F4800A82429 /* language.cc */, + B3982BBC29239F4800A82429 /* test_assembler_unittest.cc */, + B3982BBD29239F4800A82429 /* dwarf */, + B3982BD529239F4800A82429 /* mac */, + B3982C0829239F4800A82429 /* minidump_type_helper.h */, + B3982C0929239F4800A82429 /* memory_range.h */, + B3982C0A29239F4800A82429 /* stabs_to_module.cc */, + B3982C0B29239F4800A82429 /* macros.h */, + B3982C0C29239F4800A82429 /* linux */, + B3982C4229239F4900A82429 /* android */, + B3982C5429239F4900A82429 /* stabs_to_module_unittest.cc */, + B3982C5529239F4900A82429 /* simple_string_dictionary.cc */, + B3982C5629239F4900A82429 /* basictypes.h */, + B3982C5729239F4900A82429 /* simple_string_dictionary_unittest.cc */, + B3982C5829239F4900A82429 /* stabs_reader_unittest.cc */, + B3982C5929239F4900A82429 /* dwarf_range_list_handler.h */, + B3982C5A29239F4900A82429 /* string_conversion.h */, + B3982C5B29239F4900A82429 /* dwarf_line_to_module_unittest.cc */, + B3982C5C29239F4900A82429 /* long_string_dictionary.h */, + B3982C5D29239F4900A82429 /* module.h */, + B3982C5E29239F4900A82429 /* windows */, + B3982C7529239F4900A82429 /* solaris */, + B3982C7D29239F4900A82429 /* dwarf_range_list_handler.cc */, + B3982C7E29239F4900A82429 /* byte_cursor_unittest.cc */, + B3982C7F29239F4900A82429 /* memory_allocator_unittest.cc */, + B3982C8029239F4900A82429 /* dwarf_cfi_to_module.h */, + ); + path = common; + sourceTree = ""; + }; + B3982B9629239F4800A82429 /* testdata */ = { + isa = PBXGroup; + children = ( + B3982B9729239F4800A82429 /* func-line-pairing.h */, + ); + path = testdata; + sourceTree = ""; + }; + B3982BB229239F4800A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B3982BB329239F4800A82429 /* file_utils.h */, + B3982BB429239F4800A82429 /* file_utils.cc */, + B3982BB529239F4800A82429 /* auto_tempdir.h */, + ); + path = tests; + sourceTree = ""; + }; + B3982BBD29239F4800A82429 /* dwarf */ = { + isa = PBXGroup; + children = ( + B3982BBE29239F4800A82429 /* functioninfo.cc */, + B3982BBF29239F4800A82429 /* dwarf2diehandler_unittest.cc */, + B3982BC029239F4800A82429 /* dwarf2diehandler.h */, + B3982BC129239F4800A82429 /* dwarf2reader_die_unittest.cc */, + B3982BC229239F4800A82429 /* types.h */, + B3982BC329239F4800A82429 /* bytereader-inl.h */, + B3982BC429239F4800A82429 /* line_state_machine.h */, + B3982BC529239F4800A82429 /* functioninfo.h */, + B3982BC629239F4800A82429 /* bytereader.cc */, + B3982BC729239F4800A82429 /* elf_reader.h */, + B3982BC829239F4800A82429 /* elf_reader.cc */, + B3982BC929239F4800A82429 /* cfi_assembler.h */, + B3982BCA29239F4800A82429 /* bytereader_unittest.cc */, + B3982BCB29239F4800A82429 /* dwarf2reader_cfi_unittest.cc */, + B3982BCC29239F4800A82429 /* dwarf2reader_lineinfo_unittest.cc */, + B3982BCD29239F4800A82429 /* dwarf2reader.h */, + B3982BCE29239F4800A82429 /* dwarf2enums.h */, + B3982BCF29239F4800A82429 /* dwarf2reader.cc */, + B3982BD029239F4800A82429 /* dwarf2reader_splitfunctions_unittest.cc */, + B3982BD129239F4800A82429 /* dwarf2reader_test_common.h */, + B3982BD229239F4800A82429 /* dwarf2diehandler.cc */, + B3982BD329239F4800A82429 /* cfi_assembler.cc */, + B3982BD429239F4800A82429 /* bytereader.h */, + ); + path = dwarf; + sourceTree = ""; + }; + B3982BD529239F4800A82429 /* mac */ = { + isa = PBXGroup; + children = ( + B3982BD629239F4800A82429 /* BreakpadRelease.xcconfig */, + B3982BD729239F4800A82429 /* macho_walker.cc */, + B3982BD829239F4800A82429 /* encoding_util.m */, + B3982BD929239F4800A82429 /* scoped_task_suspend-inl.h */, + B3982BDA29239F4800A82429 /* bootstrap_compat.cc */, + B3982BDB29239F4800A82429 /* HTTPPutRequest.m */, + B3982BDC29239F4800A82429 /* MachIPC.mm */, + B3982BDD29239F4800A82429 /* SymbolCollectorClient.h */, + B3982BDE29239F4800A82429 /* arch_utilities.cc */, + B3982BDF29239F4800A82429 /* dump_syms.h */, + B3982BE029239F4800A82429 /* GTMLogger.m */, + B3982BE129239F4800A82429 /* HTTPSimplePostRequest.h */, + B3982BE229239F4800A82429 /* string_utilities.h */, + B3982BE329239F4800A82429 /* HTTPRequest.m */, + B3982BE429239F4800A82429 /* macho_id.cc */, + B3982BE529239F4800A82429 /* launch_reporter.h */, + B3982BE629239F4800A82429 /* file_id.cc */, + B3982BE729239F4800A82429 /* MachIPC.h */, + B3982BE829239F4800A82429 /* Breakpad.xcconfig */, + B3982BE929239F4800A82429 /* HTTPMultipartUpload.m */, + B3982BEA29239F4800A82429 /* HTTPGetRequest.m */, + B3982BEB29239F4800A82429 /* macho_utilities.cc */, + B3982BEC29239F4800A82429 /* HTTPPutRequest.h */, + B3982BED29239F4800A82429 /* dump_syms.cc */, + B3982BEE29239F4800A82429 /* launch_reporter.cc */, + B3982BEF29239F4800A82429 /* testing */, + B3982BF229239F4800A82429 /* byteswap.h */, + B3982BF329239F4800A82429 /* encoding_util.h */, + B3982BF429239F4800A82429 /* macho_id.h */, + B3982BF529239F4800A82429 /* bootstrap_compat.h */, + B3982BF629239F4800A82429 /* GTMLogger.h */, + B3982BF729239F4800A82429 /* string_utilities.cc */, + B3982BF829239F4800A82429 /* macho_reader.h */, + B3982BF929239F4800A82429 /* macho_reader_unittest.cc */, + B3982BFA29239F4800A82429 /* macho_walker.h */, + B3982BFB29239F4800A82429 /* SymbolCollectorClient.m */, + B3982BFC29239F4800A82429 /* super_fat_arch.h */, + B3982BFD29239F4800A82429 /* GTMDefines.h */, + B3982BFE29239F4800A82429 /* HTTPRequest.h */, + B3982BFF29239F4800A82429 /* macho_reader.cc */, + B3982C0029239F4800A82429 /* HTTPSimplePostRequest.m */, + B3982C0129239F4800A82429 /* file_id.h */, + B3982C0229239F4800A82429 /* macho_utilities.h */, + B3982C0329239F4800A82429 /* HTTPGetRequest.h */, + B3982C0429239F4800A82429 /* arch_utilities.h */, + B3982C0529239F4800A82429 /* HTTPMultipartUpload.h */, + B3982C0629239F4800A82429 /* BreakpadDebug.xcconfig */, + B3982C0729239F4800A82429 /* minidump_upload.m */, + ); + path = mac; + sourceTree = ""; + }; + B3982BEF29239F4800A82429 /* testing */ = { + isa = PBXGroup; + children = ( + B3982BF029239F4800A82429 /* GTMSenTestCase.h */, + B3982BF129239F4800A82429 /* GTMSenTestCase.m */, + ); + path = testing; + sourceTree = ""; + }; + B3982C0C29239F4800A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B3982C0D29239F4800A82429 /* memory_mapped_file.h */, + B3982C0E29239F4800A82429 /* libcurl_wrapper.h */, + B3982C0F29239F4800A82429 /* synth_elf.cc */, + B3982C1029239F4800A82429 /* symbol_upload.h */, + B3982C1129239F4800A82429 /* guid_creator.h */, + B3982C1229239F4800A82429 /* elf_gnu_compat.h */, + B3982C1329239F4800A82429 /* elf_symbols_to_module.h */, + B3982C1429239F4800A82429 /* elfutils-inl.h */, + B3982C1529239F4800A82429 /* dump_symbols.cc */, + B3982C1629239F4800A82429 /* memory_mapped_file_unittest.cc */, + B3982C1729239F4800A82429 /* safe_readlink.cc */, + B3982C1829239F4800A82429 /* tests */, + B3982C1C29239F4800A82429 /* elfutils.h */, + B3982C1D29239F4800A82429 /* file_id.cc */, + B3982C1E29239F4800A82429 /* memory_mapped_file.cc */, + B3982C1F29239F4800A82429 /* symbol_collector_client.h */, + B3982C2029239F4800A82429 /* symbol_collector_client.cc */, + B3982C2129239F4800A82429 /* breakpad_getcontext_unittest.cc */, + B3982C2229239F4800A82429 /* symbol_upload.cc */, + B3982C2329239F4800A82429 /* breakpad_getcontext.S */, + B3982C2429239F4800A82429 /* elf_core_dump.h */, + B3982C2529239F4800A82429 /* breakpad_getcontext.h */, + B3982C2629239F4800A82429 /* synth_elf.h */, + B3982C2729239F4800A82429 /* eintr_wrapper.h */, + B3982C2829239F4800A82429 /* crc32.cc */, + B3982C2929239F4800A82429 /* http_upload.cc */, + B3982C2A29239F4800A82429 /* synth_elf_unittest.cc */, + B3982C2B29239F4800A82429 /* google_crashdump_uploader.h */, + B3982C2C29239F4800A82429 /* elfutils.cc */, + B3982C2D29239F4800A82429 /* google_crashdump_uploader_test.cc */, + B3982C2E29239F4800A82429 /* dump_symbols_unittest.cc */, + B3982C2F29239F4800A82429 /* ignore_ret.h */, + B3982C3029239F4800A82429 /* ucontext_constants.h */, + B3982C3129239F4800A82429 /* guid_creator.cc */, + B3982C3229239F4800A82429 /* safe_readlink_unittest.cc */, + B3982C3329239F4800A82429 /* linux_libc_support.h */, + B3982C3429239F4800A82429 /* file_id_unittest.cc */, + B3982C3529239F4800A82429 /* safe_readlink.h */, + B3982C3629239F4800A82429 /* linux_libc_support.cc */, + B3982C3729239F4800A82429 /* dump_symbols.h */, + B3982C3829239F4800A82429 /* libcurl_wrapper.cc */, + B3982C3929239F4800A82429 /* elf_core_dump_unittest.cc */, + B3982C3A29239F4800A82429 /* file_id.h */, + B3982C3B29239F4800A82429 /* crc32.h */, + B3982C3C29239F4800A82429 /* elf_symbols_to_module.cc */, + B3982C3D29239F4900A82429 /* elf_symbols_to_module_unittest.cc */, + B3982C3E29239F4900A82429 /* elf_core_dump.cc */, + B3982C3F29239F4900A82429 /* linux_libc_support_unittest.cc */, + B3982C4029239F4900A82429 /* http_upload.h */, + B3982C4129239F4900A82429 /* google_crashdump_uploader.cc */, + ); + path = linux; + sourceTree = ""; + }; + B3982C1829239F4800A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B3982C1929239F4800A82429 /* crash_generator.cc */, + B3982C1A29239F4800A82429 /* crash_generator.h */, + B3982C1B29239F4800A82429 /* auto_testfile.h */, + ); + path = tests; + sourceTree = ""; + }; + B3982C4229239F4900A82429 /* android */ = { + isa = PBXGroup; + children = ( + B3982C4329239F4900A82429 /* include */, + B3982C4F29239F4900A82429 /* testing */, + ); + path = android; + sourceTree = ""; + }; + B3982C4329239F4900A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3982C4429239F4900A82429 /* stab.h */, + B3982C4529239F4900A82429 /* elf.h */, + B3982C4629239F4900A82429 /* sys */, + B3982C4929239F4900A82429 /* link.h */, + B3982C4A29239F4900A82429 /* asm-mips */, + ); + path = include; + sourceTree = ""; + }; + B3982C4629239F4900A82429 /* sys */ = { + isa = PBXGroup; + children = ( + B3982C4729239F4900A82429 /* procfs.h */, + B3982C4829239F4900A82429 /* user.h */, + ); + path = sys; + sourceTree = ""; + }; + B3982C4A29239F4900A82429 /* asm-mips */ = { + isa = PBXGroup; + children = ( + B3982C4B29239F4900A82429 /* fpregdef.h */, + B3982C4C29239F4900A82429 /* asm.h */, + B3982C4D29239F4900A82429 /* README.md */, + B3982C4E29239F4900A82429 /* regdef.h */, + ); + path = "asm-mips"; + sourceTree = ""; + }; + B3982C4F29239F4900A82429 /* testing */ = { + isa = PBXGroup; + children = ( + B3982C5029239F4900A82429 /* pthread_fixes.h */, + B3982C5129239F4900A82429 /* include */, + B3982C5329239F4900A82429 /* mkdtemp.h */, + ); + path = testing; + sourceTree = ""; + }; + B3982C5129239F4900A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3982C5229239F4900A82429 /* wchar.h */, + ); + path = include; + sourceTree = ""; + }; + B3982C5E29239F4900A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3982C5F29239F4900A82429 /* omap.cc */, + B3982C6029239F4900A82429 /* pdb_source_line_writer.h */, + B3982C6129239F4900A82429 /* omap.h */, + B3982C6229239F4900A82429 /* omap_unittest.cc */, + B3982C6329239F4900A82429 /* dia_util.h */, + B3982C6429239F4900A82429 /* pe_util.cc */, + B3982C6529239F4900A82429 /* string_utils.cc */, + B3982C6629239F4900A82429 /* symbol_collector_client.h */, + B3982C6729239F4900A82429 /* symbol_collector_client.cc */, + B3982C6829239F4900A82429 /* pe_source_line_writer.h */, + B3982C6929239F4900A82429 /* http_upload.cc */, + B3982C6A29239F4900A82429 /* pe_source_line_writer.cc */, + B3982C6B29239F4900A82429 /* pdb_source_line_writer.cc */, + B3982C6C29239F4900A82429 /* dia_util.cc */, + B3982C6D29239F4900A82429 /* module_info.h */, + B3982C6E29239F4900A82429 /* guid_string.h */, + B3982C6F29239F4900A82429 /* common_windows.gyp */, + B3982C7029239F4900A82429 /* omap_internal.h */, + B3982C7129239F4900A82429 /* string_utils-inl.h */, + B3982C7229239F4900A82429 /* http_upload.h */, + B3982C7329239F4900A82429 /* pe_util.h */, + B3982C7429239F4900A82429 /* guid_string.cc */, + ); + path = windows; + sourceTree = ""; + }; + B3982C7529239F4900A82429 /* solaris */ = { + isa = PBXGroup; + children = ( + B3982C7629239F4900A82429 /* guid_creator.h */, + B3982C7729239F4900A82429 /* dump_symbols.cc */, + B3982C7829239F4900A82429 /* file_id.cc */, + B3982C7929239F4900A82429 /* guid_creator.cc */, + B3982C7A29239F4900A82429 /* dump_symbols.h */, + B3982C7B29239F4900A82429 /* file_id.h */, + B3982C7C29239F4900A82429 /* message_output.h */, + ); + path = solaris; + sourceTree = ""; + }; + B3982C8129239F4900A82429 /* third_party */ = { + isa = PBXGroup; + children = ( + B3982C8229239F4900A82429 /* musl */, + B3982C8929239F4900A82429 /* libdisasm */, + B3982CB829239F4900A82429 /* curl */, + B3982CC429239F4900A82429 /* linux */, + B3982CC829239F4900A82429 /* mac_headers */, + B3982CE129239F4900A82429 /* lss */, + ); + path = third_party; + sourceTree = ""; + }; + B3982C8229239F4900A82429 /* musl */ = { + isa = PBXGroup; + children = ( + B3982C8329239F4900A82429 /* README.breakpad */, + B3982C8429239F4900A82429 /* include */, + B3982C8629239F4900A82429 /* README */, + B3982C8729239F4900A82429 /* VERSION */, + B3982C8829239F4900A82429 /* COPYRIGHT */, + ); + path = musl; + sourceTree = ""; + }; + B3982C8429239F4900A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3982C8529239F4900A82429 /* elf.h */, + ); + path = include; + sourceTree = ""; + }; + B3982C8929239F4900A82429 /* libdisasm */ = { + isa = PBXGroup; + children = ( + B3982C8A29239F4900A82429 /* ia32_operand.h */, + B3982C8B29239F4900A82429 /* libdis.h */, + B3982C8C29239F4900A82429 /* x86_format.c */, + B3982C8D29239F4900A82429 /* ia32_modrm.h */, + B3982C8E29239F4900A82429 /* x86_misc.c */, + B3982C8F29239F4900A82429 /* ia32_reg.h */, + B3982C9029239F4900A82429 /* swig */, + B3982C9F29239F4900A82429 /* ia32_insn.h */, + B3982CA029239F4900A82429 /* LICENSE */, + B3982CA129239F4900A82429 /* README.breakpad */, + B3982CA229239F4900A82429 /* x86_operand_list.h */, + B3982CA329239F4900A82429 /* ia32_settings.h */, + B3982CA429239F4900A82429 /* ia32_implicit.h */, + B3982CA529239F4900A82429 /* x86_disasm.c */, + B3982CA629239F4900A82429 /* ia32_invariant.h */, + B3982CA729239F4900A82429 /* libdisasm.gyp */, + B3982CA829239F4900A82429 /* x86_imm.h */, + B3982CA929239F4900A82429 /* ia32_opcode_tables.h */, + B3982CAA29239F4900A82429 /* TODO */, + B3982CAB29239F4900A82429 /* Makefile.am */, + B3982CAC29239F4900A82429 /* ia32_modrm.c */, + B3982CAD29239F4900A82429 /* ia32_operand.c */, + B3982CAE29239F4900A82429 /* x86_operand_list.c */, + B3982CAF29239F4900A82429 /* ia32_insn.c */, + B3982CB029239F4900A82429 /* ia32_reg.c */, + B3982CB129239F4900A82429 /* ia32_implicit.c */, + B3982CB229239F4900A82429 /* qword.h */, + B3982CB329239F4900A82429 /* ia32_settings.c */, + B3982CB429239F4900A82429 /* ia32_opcode_tables.c */, + B3982CB529239F4900A82429 /* x86_imm.c */, + B3982CB629239F4900A82429 /* ia32_invariant.c */, + B3982CB729239F4900A82429 /* x86_insn.c */, + ); + path = libdisasm; + sourceTree = ""; + }; + B3982C9029239F4900A82429 /* swig */ = { + isa = PBXGroup; + children = ( + B3982C9129239F4900A82429 /* python */, + B3982C9329239F4900A82429 /* Makefile */, + B3982C9429239F4900A82429 /* perl */, + B3982C9729239F4900A82429 /* README */, + B3982C9829239F4900A82429 /* tcl */, + B3982C9A29239F4900A82429 /* libdisasm.i */, + B3982C9B29239F4900A82429 /* libdisasm_oop.i */, + B3982C9C29239F4900A82429 /* ruby */, + ); + path = swig; + sourceTree = ""; + }; + B3982C9129239F4900A82429 /* python */ = { + isa = PBXGroup; + children = ( + B3982C9229239F4900A82429 /* Makefile-swig */, + ); + path = python; + sourceTree = ""; + }; + B3982C9429239F4900A82429 /* perl */ = { + isa = PBXGroup; + children = ( + B3982C9529239F4900A82429 /* Makefile-swig */, + B3982C9629239F4900A82429 /* Makefile.PL */, + ); + path = perl; + sourceTree = ""; + }; + B3982C9829239F4900A82429 /* tcl */ = { + isa = PBXGroup; + children = ( + B3982C9929239F4900A82429 /* Makefile-swig */, + ); + path = tcl; + sourceTree = ""; + }; + B3982C9C29239F4900A82429 /* ruby */ = { + isa = PBXGroup; + children = ( + B3982C9D29239F4900A82429 /* Makefile-swig */, + B3982C9E29239F4900A82429 /* extconf.rb */, + ); + path = ruby; + sourceTree = ""; + }; + B3982CB829239F4900A82429 /* curl */ = { + isa = PBXGroup; + children = ( + B3982CB929239F4900A82429 /* curlrules.h */, + B3982CBA29239F4900A82429 /* stdcheaders.h */, + B3982CBB29239F4900A82429 /* types.h */, + B3982CBC29239F4900A82429 /* COPYING */, + B3982CBD29239F4900A82429 /* mprintf.h */, + B3982CBE29239F4900A82429 /* easy.h */, + B3982CBF29239F4900A82429 /* curl.h */, + B3982CC029239F4900A82429 /* curlver.h */, + B3982CC129239F4900A82429 /* typecheck-gcc.h */, + B3982CC229239F4900A82429 /* multi.h */, + B3982CC329239F4900A82429 /* curlbuild.h */, + ); + path = curl; + sourceTree = ""; + }; + B3982CC429239F4900A82429 /* linux */ = { + isa = PBXGroup; + children = ( + B3982CC529239F4900A82429 /* include */, + ); + path = linux; + sourceTree = ""; + }; + B3982CC529239F4900A82429 /* include */ = { + isa = PBXGroup; + children = ( + B3982CC629239F4900A82429 /* gflags */, + ); + path = include; + sourceTree = ""; + }; + B3982CC629239F4900A82429 /* gflags */ = { + isa = PBXGroup; + children = ( + B3982CC729239F4900A82429 /* gflags_completions.h */, + ); + path = gflags; + sourceTree = ""; + }; + B3982CC829239F4900A82429 /* mac_headers */ = { + isa = PBXGroup; + children = ( + B3982CC929239F4900A82429 /* i386 */, + B3982CCB29239F4900A82429 /* README */, + B3982CCC29239F4900A82429 /* architecture */, + B3982CCE29239F4900A82429 /* mach */, + B3982CDC29239F4900A82429 /* mach-o */, + ); + path = mac_headers; + sourceTree = ""; + }; + B3982CC929239F4900A82429 /* i386 */ = { + isa = PBXGroup; + children = ( + B3982CCA29239F4900A82429 /* _types.h */, + ); + path = i386; + sourceTree = ""; + }; + B3982CCC29239F4900A82429 /* architecture */ = { + isa = PBXGroup; + children = ( + B3982CCD29239F4900A82429 /* byte_order.h */, + ); + path = architecture; + sourceTree = ""; + }; + B3982CCE29239F4900A82429 /* mach */ = { + isa = PBXGroup; + children = ( + B3982CCF29239F4900A82429 /* machine.h */, + B3982CD029239F4900A82429 /* thread_status.h */, + B3982CD129239F4900A82429 /* i386 */, + B3982CD529239F4900A82429 /* vm_prot.h */, + B3982CD629239F4900A82429 /* boolean.h */, + B3982CD729239F4900A82429 /* machine */, ); - runOnlyForDeploymentPostprocessing = 0; + path = mach; + sourceTree = ""; }; - B3447F8D218BEE3F00557ACE /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( + B3982CD129239F4900A82429 /* i386 */ = { + isa = PBXGroup; + children = ( + B3982CD229239F4900A82429 /* vm_param.h */, + B3982CD329239F4900A82429 /* boolean.h */, + B3982CD429239F4900A82429 /* vm_types.h */, ); - runOnlyForDeploymentPostprocessing = 0; + path = i386; + sourceTree = ""; }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - B30178D3207C901D0051B93D /* libflycast-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libflycast-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B316B4E621926FE500693472 /* emu.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emu.cfg; sourceTree = ""; }; - B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; - B339412120783CBB008DBAB4 /* rec_x64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x64.cpp; sourceTree = ""; }; - B339412320783CBB008DBAB4 /* x86_emitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_emitter.h; sourceTree = ""; }; - B339412420783CBB008DBAB4 /* x86_matcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_matcher.h; sourceTree = ""; }; - B339412520783CBB008DBAB4 /* generated_class_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = generated_class_names.h; sourceTree = ""; }; - B339412620783CBB008DBAB4 /* x86_op_encoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_op_encoder.h; sourceTree = ""; }; - B339412720783CBB008DBAB4 /* generated_indexes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = generated_indexes.h; sourceTree = ""; }; - B339412820783CBB008DBAB4 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - B339412920783CBB008DBAB4 /* emitter.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = emitter.vcxproj; sourceTree = ""; }; - B339412A20783CBB008DBAB4 /* emitter.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = emitter.vcxproj.user; sourceTree = ""; }; - B339412B20783CBB008DBAB4 /* generated_descriptors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = generated_descriptors.h; sourceTree = ""; }; - B339412C20783CBB008DBAB4 /* x86_op_classes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_op_classes.h; sourceTree = ""; }; - B339412D20783CBB008DBAB4 /* generated_class_names_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = generated_class_names_string.h; sourceTree = ""; }; - B339412E20783CBB008DBAB4 /* x86_op_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86_op_table.h; sourceTree = ""; }; - B339412F20783CBB008DBAB4 /* x86_emitter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x86_emitter.cpp; sourceTree = ""; }; - B339413220783CBB008DBAB4 /* holly_intc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = holly_intc.h; sourceTree = ""; }; - B339413320783CBB008DBAB4 /* sb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sb.h; sourceTree = ""; }; - B339413420783CBB008DBAB4 /* sb_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sb_mem.cpp; sourceTree = ""; }; - B339413520783CBB008DBAB4 /* sb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sb.cpp; sourceTree = ""; }; - B339413620783CBB008DBAB4 /* holly_intc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = holly_intc.cpp; sourceTree = ""; }; - B339413720783CBB008DBAB4 /* sb_dma.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sb_dma.cpp; sourceTree = ""; }; - B339413820783CBB008DBAB4 /* sb_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sb_mem.h; sourceTree = ""; }; - B339413A20783CBB008DBAB4 /* sh4_rom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_rom.h; sourceTree = ""; }; - B339413C20783CBB008DBAB4 /* shil.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shil.cpp; sourceTree = ""; }; - B339413D20783CBB008DBAB4 /* shil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shil.h; sourceTree = ""; }; - B339413E20783CBB008DBAB4 /* rec_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rec_config.h; sourceTree = ""; }; - B339413F20783CBB008DBAB4 /* ngen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ngen.h; sourceTree = ""; }; - B339414020783CBB008DBAB4 /* decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decoder.h; sourceTree = ""; }; - B339414120783CBB008DBAB4 /* regalloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regalloc.h; sourceTree = ""; }; - B339414220783CBB008DBAB4 /* driver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = driver.cpp; sourceTree = ""; }; - B339414320783CBB008DBAB4 /* decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decoder.cpp; sourceTree = ""; }; - B339414420783CBB008DBAB4 /* blockmanager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = blockmanager.cpp; sourceTree = ""; }; - B339414520783CBB008DBAB4 /* blockmanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blockmanager.h; sourceTree = ""; }; - B339414620783CBB008DBAB4 /* shil_canonical.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shil_canonical.h; sourceTree = ""; }; - B339414720783CBB008DBAB4 /* decoder_opcodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decoder_opcodes.h; sourceTree = ""; }; - B339414820783CBB008DBAB4 /* sh4_opcode_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_opcode_list.h; sourceTree = ""; }; - B339414920783CBB008DBAB4 /* sh4_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_if.h; sourceTree = ""; }; - B339414A20783CBB008DBAB4 /* sh4_interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_interpreter.h; sourceTree = ""; }; - B339414B20783CBB008DBAB4 /* fsca-table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "fsca-table.h"; sourceTree = ""; }; - B339414C20783CBB008DBAB4 /* sh4_sched.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_sched.cpp; sourceTree = ""; }; - B339414D20783CBB008DBAB4 /* sh4_opcode_list.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_opcode_list.cpp; sourceTree = ""; }; - B339414E20783CBB008DBAB4 /* sh4_mmr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_mmr.h; sourceTree = ""; }; - B339414F20783CBB008DBAB4 /* sh4_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_mem.h; sourceTree = ""; }; - B339415020783CBB008DBAB4 /* sh4_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_mem.cpp; sourceTree = ""; }; - B339415220783CBB008DBAB4 /* sh4_opcodes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_opcodes.cpp; sourceTree = ""; }; - B339415320783CBB008DBAB4 /* sh4_interpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_interpreter.cpp; sourceTree = ""; }; - B339415420783CBB008DBAB4 /* sh4_opcodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_opcodes.h; sourceTree = ""; }; - B339415520783CBB008DBAB4 /* sh4_fpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_fpu.cpp; sourceTree = ""; }; - B339415620783CBB008DBAB4 /* sh4_interrupts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_interrupts.cpp; sourceTree = ""; }; - B339415720783CBB008DBAB4 /* sh4_interrupts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_interrupts.h; sourceTree = ""; }; - B339415820783CBB008DBAB4 /* sh4_opcode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_opcode.h; sourceTree = ""; }; - B339415920783CBB008DBAB4 /* sh4_core_regs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_core_regs.cpp; sourceTree = ""; }; - B339415A20783CBB008DBAB4 /* sh4_mmr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_mmr.cpp; sourceTree = ""; }; - B339415C20783CBB008DBAB4 /* ubc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ubc.cpp; sourceTree = ""; }; - B339415D20783CBB008DBAB4 /* mmu_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mmu_impl.h; sourceTree = ""; }; - B339415E20783CBB008DBAB4 /* intc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = intc.cpp; sourceTree = ""; }; - B339415F20783CBB008DBAB4 /* mmu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mmu.h; sourceTree = ""; }; - B339416020783CBB008DBAB4 /* bsc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bsc.cpp; sourceTree = ""; }; - B339416120783CBB008DBAB4 /* ccn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ccn.cpp; sourceTree = ""; }; - B339416220783CBB008DBAB4 /* tmu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tmu.h; sourceTree = ""; }; - B339416320783CBB008DBAB4 /* dmac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dmac.h; sourceTree = ""; }; - B339416420783CBB008DBAB4 /* modules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modules.h; sourceTree = ""; }; - B339416520783CBB008DBAB4 /* dmac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dmac.cpp; sourceTree = ""; }; - B339416620783CBB008DBAB4 /* serial.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = serial.cpp; sourceTree = ""; }; - B339416720783CBB008DBAB4 /* rtc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rtc.cpp; sourceTree = ""; }; - B339416820783CBB008DBAB4 /* tmu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tmu.cpp; sourceTree = ""; }; - B339416920783CBB008DBAB4 /* mmu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mmu.cpp; sourceTree = ""; }; - B339416A20783CBB008DBAB4 /* ccn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ccn.h; sourceTree = ""; }; - B339416B20783CBB008DBAB4 /* cpg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpg.cpp; sourceTree = ""; }; - B339416C20783CBB008DBAB4 /* sh4_rom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh4_rom.cpp; sourceTree = ""; }; - B339416D20783CBB008DBAB4 /* sh4_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_core.h; sourceTree = ""; }; - B339416E20783CBB008DBAB4 /* sh4_sched.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh4_sched.h; sourceTree = ""; }; - B339417020783CBB008DBAB4 /* gdrom_response.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdrom_response.cpp; sourceTree = ""; }; - B339417120783CBB008DBAB4 /* gdromv3.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdromv3.cpp; sourceTree = ""; }; - B339417220783CBB008DBAB4 /* gdromv3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdromv3.h; sourceTree = ""; }; - B339417320783CBB008DBAB4 /* gdrom_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdrom_if.h; sourceTree = ""; }; - B339417520783CBB008DBAB4 /* ta_structs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta_structs.h; sourceTree = ""; }; - B339417620783CBB008DBAB4 /* ta_ctx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ta_ctx.cpp; sourceTree = ""; }; - B339417720783CBB008DBAB4 /* pvr_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pvr_mem.cpp; sourceTree = ""; }; - B339417820783CBB008DBAB4 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; - B339417920783CBB008DBAB4 /* Renderer_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Renderer_if.h; sourceTree = ""; }; - B339417A20783CBB008DBAB4 /* ta_ctx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta_ctx.h; sourceTree = ""; }; - B339417B20783CBB008DBAB4 /* spg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = spg.cpp; sourceTree = ""; }; - B339417C20783CBB008DBAB4 /* pvr_sb_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pvr_sb_regs.h; sourceTree = ""; }; - B339417D20783CBB008DBAB4 /* pvr_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pvr_mem.h; sourceTree = ""; }; - B339417E20783CBB008DBAB4 /* pvr_sb_regs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pvr_sb_regs.cpp; sourceTree = ""; }; - B339417F20783CBB008DBAB4 /* helper_classes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = helper_classes.h; sourceTree = ""; }; - B339418020783CBB008DBAB4 /* ta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta.h; sourceTree = ""; }; - B339418120783CBB008DBAB4 /* spg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spg.h; sourceTree = ""; }; - B339418220783CBB008DBAB4 /* pvr_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pvr_regs.h; sourceTree = ""; }; - B339418320783CBB008DBAB4 /* drkPvr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = drkPvr.cpp; sourceTree = ""; }; - B339418420783CBB008DBAB4 /* Renderer_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Renderer_if.cpp; sourceTree = ""; }; - B339418520783CBB008DBAB4 /* ta_vtx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ta_vtx.cpp; sourceTree = ""; }; - B339418620783CBB008DBAB4 /* ta_const_df.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ta_const_df.h; sourceTree = ""; }; - B339418720783CBB008DBAB4 /* pvr_regs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pvr_regs.cpp; sourceTree = ""; }; - B339418820783CBB008DBAB4 /* drkPvr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = drkPvr.h; sourceTree = ""; }; - B339418920783CBB008DBAB4 /* ta.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ta.cpp; sourceTree = ""; }; - B339418B20783CBB008DBAB4 /* flashrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flashrom.h; sourceTree = ""; }; - B339418D20783CBB008DBAB4 /* naomi_regs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_regs.h; sourceTree = ""; }; - B339418E20783CBB008DBAB4 /* naomi_cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi_cart.h; sourceTree = ""; }; - B339418F20783CBB008DBAB4 /* naomi_cart.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi_cart.cpp; sourceTree = ""; }; - B339419020783CBB008DBAB4 /* naomi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = naomi.h; sourceTree = ""; }; - B339419120783CBB008DBAB4 /* naomi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = naomi.cpp; sourceTree = ""; }; - B339419320783CBB008DBAB4 /* maple_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_helper.h; sourceTree = ""; }; - B339419420783CBB008DBAB4 /* maple_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_if.cpp; sourceTree = ""; }; - B339419520783CBB008DBAB4 /* maple_helper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_helper.cpp; sourceTree = ""; }; - B339419620783CBB008DBAB4 /* maple_cfg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_cfg.h; sourceTree = ""; }; - B339419720783CBB008DBAB4 /* maple_cfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_cfg.cpp; sourceTree = ""; }; - B339419820783CBB008DBAB4 /* maple_devs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_devs.h; sourceTree = ""; }; - B339419920783CBB008DBAB4 /* maple_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maple_if.h; sourceTree = ""; }; - B339419A20783CBB008DBAB4 /* maple_devs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maple_devs.cpp; sourceTree = ""; }; - B339419C20783CBB008DBAB4 /* arm_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_mem.cpp; sourceTree = ""; }; - B339419D20783CBB008DBAB4 /* arm_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_mem.h; sourceTree = ""; }; - B339419E20783CBB008DBAB4 /* arm7.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm7.h; sourceTree = ""; }; - B339419F20783CBB008DBAB4 /* arm7.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm7.cpp; sourceTree = ""; }; - B33941A020783CBB008DBAB4 /* vbaARM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vbaARM.cpp; sourceTree = ""; }; - B33941A120783CBB008DBAB4 /* virt_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = virt_arm.h; sourceTree = ""; }; - B33941A220783CBB008DBAB4 /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; - B33941A320783CBB008DBAB4 /* virt_arm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = virt_arm.cpp; sourceTree = ""; }; - B33941A420783CBB008DBAB4 /* arm-new.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "arm-new.h"; sourceTree = ""; }; - B33941A620783CBB008DBAB4 /* aica_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aica_if.cpp; sourceTree = ""; }; - B33941A720783CBB008DBAB4 /* aica.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aica.h; sourceTree = ""; }; - B33941A820783CBB008DBAB4 /* dsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dsp.cpp; sourceTree = ""; }; - B33941A920783CBB008DBAB4 /* aica_mem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aica_mem.cpp; sourceTree = ""; }; - B33941AA20783CBB008DBAB4 /* aica.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aica.cpp; sourceTree = ""; }; - B33941AB20783CBB008DBAB4 /* aica_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aica_mem.h; sourceTree = ""; }; - B33941AC20783CBB008DBAB4 /* dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; - B33941AD20783CBB008DBAB4 /* sgc_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sgc_if.h; sourceTree = ""; }; - B33941AE20783CBB008DBAB4 /* aica_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aica_if.h; sourceTree = ""; }; - B33941AF20783CBB008DBAB4 /* sgc_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sgc_if.cpp; sourceTree = ""; }; - B33941B120783CBB008DBAB4 /* _vmem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _vmem.h; sourceTree = ""; }; - B33941B220783CBB008DBAB4 /* _vmem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = _vmem.cpp; sourceTree = ""; }; - B33941B320783CBB008DBAB4 /* build.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = build.h; sourceTree = ""; }; - B33941B420783CBB008DBAB4 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - B33941B620783CBC008DBAB4 /* gdi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdi.cpp; sourceTree = ""; }; - B33941B720783CBC008DBAB4 /* common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = common.cpp; sourceTree = ""; }; - B33941B820783CBC008DBAB4 /* cdi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdi.cpp; sourceTree = ""; }; - B33941B920783CBC008DBAB4 /* ImgReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ImgReader.cpp; sourceTree = ""; }; - B33941BA20783CBC008DBAB4 /* gd_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gd_driver.h; sourceTree = ""; }; - B33941BB20783CBC008DBAB4 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; - B33941BC20783CBC008DBAB4 /* ioctl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ioctl.cpp; sourceTree = ""; }; - B33941BD20783CBC008DBAB4 /* ImgReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImgReader.h; sourceTree = ""; }; - B33941BE20783CBC008DBAB4 /* SCSIDEFS.H */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SCSIDEFS.H; sourceTree = ""; }; - B33941BF20783CBC008DBAB4 /* chd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = chd.cpp; sourceTree = ""; }; - B33941C120783CBC008DBAB4 /* cfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg.cpp; sourceTree = ""; }; - B33941C220783CBC008DBAB4 /* ini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ini.h; sourceTree = ""; }; - B33941C320783CBC008DBAB4 /* ini.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ini.cpp; sourceTree = ""; }; - B33941C420783CBC008DBAB4 /* cl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cl.cpp; sourceTree = ""; }; - B33941C520783CBC008DBAB4 /* cfg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfg.h; sourceTree = ""; }; - B33941C620783CBC008DBAB4 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - B33941C720783CBC008DBAB4 /* nullDC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nullDC.cpp; sourceTree = ""; }; - B33941C920783CBC008DBAB4 /* rec_arm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_arm.cpp; sourceTree = ""; }; - B33941CA20783CBC008DBAB4 /* ngen_arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ngen_arm.S; sourceTree = ""; }; - B33941CB20783CBC008DBAB4 /* ngen_arm64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ngen_arm64.S; sourceTree = ""; }; - B33941CD20783CBC008DBAB4 /* sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdl.cpp; sourceTree = ""; }; - B33941CE20783CBC008DBAB4 /* sdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl.h; sourceTree = ""; }; - B33941D020783CBC008DBAB4 /* common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = common.cpp; sourceTree = ""; }; - B33941D120783CBC008DBAB4 /* typedefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = ""; }; - B33941D220783CBC008DBAB4 /* context.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = context.cpp; sourceTree = ""; }; - B33941D320783CBC008DBAB4 /* context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = context.h; sourceTree = ""; }; - B33941D520783CBC008DBAB4 /* nixprof.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nixprof.cpp; sourceTree = ""; }; - B33941D720783CBC008DBAB4 /* nacl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nacl.cpp; sourceTree = ""; }; - B33941D820783CBC008DBAB4 /* nacl_lin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nacl_lin.cpp; sourceTree = ""; }; - B33941D920783CBC008DBAB4 /* stdclass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdclass.h; sourceTree = ""; }; - B33941DA20783CBC008DBAB4 /* stdclass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stdclass.cpp; sourceTree = ""; }; - B33941DD20783CBC008DBAB4 /* md5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = md5.cpp; sourceTree = ""; }; - B33941DE20783CBC008DBAB4 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; - B33941DF20783CBC008DBAB4 /* sha256.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sha256.h; sourceTree = ""; }; - B33941E020783CBC008DBAB4 /* sha1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sha1.cpp; sourceTree = ""; }; - B33941E120783CBC008DBAB4 /* sha256.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sha256.cpp; sourceTree = ""; }; - B33941E220783CBC008DBAB4 /* sha1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sha1.h; sourceTree = ""; }; - B33941E420783CBC008DBAB4 /* pnginfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnginfo.h; sourceTree = ""; }; - B33941E520783CBC008DBAB4 /* pngrio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrio.c; sourceTree = ""; }; - B33941E620783CBC008DBAB4 /* pngerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngerror.c; sourceTree = ""; }; - B33941E720783CBC008DBAB4 /* pngwio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwio.c; sourceTree = ""; }; - B33941E820783CBC008DBAB4 /* pngstruct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; - B33941E920783CBC008DBAB4 /* pngtrans.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngtrans.c; sourceTree = ""; }; - B33941EA20783CBC008DBAB4 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; - B33941EB20783CBC008DBAB4 /* pngpriv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngpriv.h; sourceTree = ""; }; - B33941EC20783CBC008DBAB4 /* pngwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwrite.c; sourceTree = ""; }; - B33941ED20783CBC008DBAB4 /* png.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; - B33941EE20783CBC008DBAB4 /* pngwutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwutil.c; sourceTree = ""; }; - B33941EF20783CBC008DBAB4 /* pngwtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwtran.c; sourceTree = ""; }; - B33941F020783CBC008DBAB4 /* pnglibconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnglibconf.h; sourceTree = ""; }; - B33941F120783CBC008DBAB4 /* pngconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; - B33941F220783CBC008DBAB4 /* pngpread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngpread.c; sourceTree = ""; }; - B33941F320783CBC008DBAB4 /* pngdebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngdebug.h; sourceTree = ""; }; - B33941F420783CBC008DBAB4 /* pngread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngread.c; sourceTree = ""; }; - B33941F620783CBC008DBAB4 /* filter_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = filter_neon.S; sourceTree = ""; }; - B33941F720783CBC008DBAB4 /* filter_neon_intrinsics.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = filter_neon_intrinsics.c; sourceTree = ""; }; - B33941F820783CBC008DBAB4 /* arm_init.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = arm_init.c; sourceTree = ""; }; - B33941F920783CBC008DBAB4 /* pngmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngmem.c; sourceTree = ""; }; - B33941FA20783CBC008DBAB4 /* pngget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngget.c; sourceTree = ""; }; - B33941FB20783CBC008DBAB4 /* png.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = png.c; sourceTree = ""; }; - B33941FC20783CBC008DBAB4 /* pngrtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrtran.c; sourceTree = ""; }; - B33941FD20783CBC008DBAB4 /* pngrutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrutil.c; sourceTree = ""; }; - B33941FE20783CBC008DBAB4 /* pngset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngset.c; sourceTree = ""; }; - B339420020783CBC008DBAB4 /* extension.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = extension.c; sourceTree = ""; }; - B339420120783CBC008DBAB4 /* extension-deflate-stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "extension-deflate-stream.c"; sourceTree = ""; }; - B339420220783CBC008DBAB4 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - B339420320783CBC008DBAB4 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; - B339420420783CBC008DBAB4 /* lextable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lextable.h; sourceTree = ""; }; - B339420520783CBC008DBAB4 /* extension-deflate-frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "extension-deflate-frame.h"; sourceTree = ""; }; - B339420620783CBC008DBAB4 /* parsers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = parsers.c; sourceTree = ""; }; - B339420720783CBC008DBAB4 /* libwebsockets.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libwebsockets.c; sourceTree = ""; }; - B339420820783CBC008DBAB4 /* base64-decode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "base64-decode.c"; sourceTree = ""; }; - B339420920783CBC008DBAB4 /* pollfd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pollfd.c; sourceTree = ""; }; - B339420A20783CBC008DBAB4 /* server.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = server.c; sourceTree = ""; }; - B339420B20783CBC008DBAB4 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; - B339420C20783CBC008DBAB4 /* lws-plat-unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "lws-plat-unix.c"; sourceTree = ""; }; - B339420D20783CBC008DBAB4 /* sha-1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "sha-1.c"; sourceTree = ""; }; - B339420E20783CBC008DBAB4 /* client.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = client.c; sourceTree = ""; }; - B339420F20783CBC008DBAB4 /* lws-plat-win.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "lws-plat-win.c"; sourceTree = ""; }; - B339421020783CBC008DBAB4 /* server-handshake.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "server-handshake.c"; sourceTree = ""; }; - B339421120783CBC008DBAB4 /* handshake.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = handshake.c; sourceTree = ""; }; - B339421220783CBC008DBAB4 /* service.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = service.c; sourceTree = ""; }; - B339421320783CBC008DBAB4 /* extension-deflate-stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "extension-deflate-stream.h"; sourceTree = ""; }; - B339421420783CBC008DBAB4 /* context.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = context.c; sourceTree = ""; }; - B339421520783CBC008DBAB4 /* client-parser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "client-parser.c"; sourceTree = ""; }; - B339421620783CBC008DBAB4 /* libwebsockets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libwebsockets.h; sourceTree = ""; }; - B339421720783CBC008DBAB4 /* extension-deflate-frame.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "extension-deflate-frame.c"; sourceTree = ""; }; - B339421820783CBC008DBAB4 /* client-handshake.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "client-handshake.c"; sourceTree = ""; }; - B339421920783CBC008DBAB4 /* private-libwebsockets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "private-libwebsockets.h"; sourceTree = ""; }; - B339421A20783CBC008DBAB4 /* lws_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lws_config.h; sourceTree = ""; }; - B339421B20783CBC008DBAB4 /* output.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = output.c; sourceTree = ""; }; - B339421D20783CBC008DBAB4 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; - B339421E20783CBC008DBAB4 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; - B339421F20783CBC008DBAB4 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; - B339422020783CBC008DBAB4 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; - B339422120783CBC008DBAB4 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; - B339422220783CBC008DBAB4 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; - B339422320783CBC008DBAB4 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - B339422420783CBC008DBAB4 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; - B339422520783CBC008DBAB4 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; - B339422620783CBC008DBAB4 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; - B339422720783CBC008DBAB4 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; - B339422820783CBC008DBAB4 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; - B339422920783CBC008DBAB4 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; - B339422A20783CBC008DBAB4 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; - B339422B20783CBC008DBAB4 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; - B339422C20783CBC008DBAB4 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; - B339422D20783CBC008DBAB4 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; - B339423120783CBC008DBAB4 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; - B339423220783CBC008DBAB4 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; - B339423320783CBC008DBAB4 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; - B339423420783CBC008DBAB4 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; - B339423520783CBC008DBAB4 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; - B339423620783CBC008DBAB4 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; - B339423720783CBC008DBAB4 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; - B339423820783CBC008DBAB4 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; - B339423920783CBC008DBAB4 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; - B339423A20783CBC008DBAB4 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; - B339423C20783CBC008DBAB4 /* coreio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coreio.h; sourceTree = ""; }; - B339423D20783CBC008DBAB4 /* coreio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = coreio.cpp; sourceTree = ""; }; - B339423F20783CBC008DBAB4 /* xbyak_mnemonic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_mnemonic.h; sourceTree = ""; }; - B339424020783CBC008DBAB4 /* xbyak_bin2hex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_bin2hex.h; sourceTree = ""; }; - B339424120783CBC008DBAB4 /* COPYRIGHT */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYRIGHT; sourceTree = ""; }; - B339424220783CBC008DBAB4 /* xbyak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak.h; sourceTree = ""; }; - B339424320783CBC008DBAB4 /* xbyak_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbyak_util.h; sourceTree = ""; }; - B339424520783CBC008DBAB4 /* chdr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = chdr.cpp; sourceTree = ""; }; - B339424620783CBC008DBAB4 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; - B339424720783CBC008DBAB4 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; - B339424920783CBC008DBAB4 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; - B339424A20783CBC008DBAB4 /* elf64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf64.h; sourceTree = ""; }; - B339424B20783CBC008DBAB4 /* elf64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf64.cpp; sourceTree = ""; }; - B339424C20783CBC008DBAB4 /* elf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf.cpp; sourceTree = ""; }; - B339424D20783CBC008DBAB4 /* elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = ""; }; - B339424E20783CBC008DBAB4 /* elf32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = elf32.h; sourceTree = ""; }; - B339424F20783CBC008DBAB4 /* elf32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = elf32.cpp; sourceTree = ""; }; - B339425120783CBC008DBAB4 /* cdipsr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdipsr.cpp; sourceTree = ""; }; - B339425220783CBC008DBAB4 /* cdipsr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdipsr.h; sourceTree = ""; }; - B339425420783CBC008DBAB4 /* zip_memdup.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_memdup.c; sourceTree = ""; }; - B339425520783CBC008DBAB4 /* zipint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zipint.h; sourceTree = ""; }; - B339425620783CBC008DBAB4 /* zip_add.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_add.c; sourceTree = ""; }; - B339425720783CBC008DBAB4 /* zip_filerange_crc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_filerange_crc.c; sourceTree = ""; }; - B339425820783CBC008DBAB4 /* zip_get_name.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_name.c; sourceTree = ""; }; - B339425920783CBC008DBAB4 /* zip_file_strerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_strerror.c; sourceTree = ""; }; - B339425A20783CBC008DBAB4 /* zip_fopen_index.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fopen_index.c; sourceTree = ""; }; - B339425B20783CBC008DBAB4 /* zip_source_buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_buffer.c; sourceTree = ""; }; - B339425C20783CBC008DBAB4 /* zip_error_clear.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_clear.c; sourceTree = ""; }; - B339425D20783CBC008DBAB4 /* zip_get_archive_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_archive_comment.c; sourceTree = ""; }; - B339425E20783CBC008DBAB4 /* zip_source_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_file.c; sourceTree = ""; }; - B339425F20783CBC008DBAB4 /* zip_set_name.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_name.c; sourceTree = ""; }; - B339426020783CBC008DBAB4 /* zip_file_error_get.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_error_get.c; sourceTree = ""; }; - B339426120783CBC008DBAB4 /* zip_file_get_offset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_get_offset.c; sourceTree = ""; }; - B339426220783CBC008DBAB4 /* zip_unchange.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange.c; sourceTree = ""; }; - B339426320783CBC008DBAB4 /* zip_new.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_new.c; sourceTree = ""; }; - B339426420783CBC008DBAB4 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; - B339426520783CBC008DBAB4 /* zip_close.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_close.c; sourceTree = ""; }; - B339426620783CBC008DBAB4 /* zip_add_dir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_add_dir.c; sourceTree = ""; }; - B339426720783CBC008DBAB4 /* zip_error_get_sys_type.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_get_sys_type.c; sourceTree = ""; }; - B339426820783CBC008DBAB4 /* zip_set_archive_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_archive_comment.c; sourceTree = ""; }; - B339426920783CBC008DBAB4 /* zip_name_locate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_name_locate.c; sourceTree = ""; }; - B339426A20783CBC008DBAB4 /* zip_unchange_archive.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange_archive.c; sourceTree = ""; }; - B339426B20783CBC008DBAB4 /* zip_source_free.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_free.c; sourceTree = ""; }; - B339426C20783CBC008DBAB4 /* zip_get_num_files.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_num_files.c; sourceTree = ""; }; - B339426D20783CBC008DBAB4 /* zip_err_str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_err_str.c; sourceTree = ""; }; - B339426E20783CBC008DBAB4 /* zip_source_filep.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_filep.c; sourceTree = ""; }; - B339426F20783CBC008DBAB4 /* zip_error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error.c; sourceTree = ""; }; - B339427020783CBC008DBAB4 /* zip_strerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_strerror.c; sourceTree = ""; }; - B339427120783CBC008DBAB4 /* zip_entry_new.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_entry_new.c; sourceTree = ""; }; - B339427220783CBC008DBAB4 /* zip_get_archive_flag.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_archive_flag.c; sourceTree = ""; }; - B339427320783CBC008DBAB4 /* zip_set_archive_flag.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_archive_flag.c; sourceTree = ""; }; - B339427420783CBC008DBAB4 /* zip_unchange_data.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange_data.c; sourceTree = ""; }; - B339427520783CBC008DBAB4 /* zip_fread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fread.c; sourceTree = ""; }; - B339427620783CBC008DBAB4 /* zip_rename.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_rename.c; sourceTree = ""; }; - B339427720783CBC008DBAB4 /* zip_source_zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_zip.c; sourceTree = ""; }; - B339427820783CBC008DBAB4 /* zip_stat_index.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_stat_index.c; sourceTree = ""; }; - B339427920783CBC008DBAB4 /* zip_source_function.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_source_function.c; sourceTree = ""; }; - B339427A20783CBC008DBAB4 /* zip_replace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_replace.c; sourceTree = ""; }; - B339427B20783CBC008DBAB4 /* zip_delete.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_delete.c; sourceTree = ""; }; - B339427C20783CBC008DBAB4 /* zip_set_file_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_set_file_comment.c; sourceTree = ""; }; - B339427D20783CBC008DBAB4 /* zip_stat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_stat.c; sourceTree = ""; }; - B339427E20783CBC008DBAB4 /* zip_get_file_comment.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_get_file_comment.c; sourceTree = ""; }; - B339427F20783CBC008DBAB4 /* mkstemp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mkstemp.c; sourceTree = ""; }; - B339428020783CBC008DBAB4 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; - B339428120783CBC008DBAB4 /* zip_entry_free.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_entry_free.c; sourceTree = ""; }; - B339428220783CBC008DBAB4 /* zip_open.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_open.c; sourceTree = ""; }; - B339428320783CBC008DBAB4 /* zip_error_get.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_get.c; sourceTree = ""; }; - B339428420783CBC008DBAB4 /* zip_fclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fclose.c; sourceTree = ""; }; - B339428520783CBC008DBAB4 /* zip_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_dirent.c; sourceTree = ""; }; - B339428620783CBC008DBAB4 /* zip_free.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_free.c; sourceTree = ""; }; - B339428720783CBC008DBAB4 /* zip_file_error_clear.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_file_error_clear.c; sourceTree = ""; }; - B339428820783CBC008DBAB4 /* zip_error_to_str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_to_str.c; sourceTree = ""; }; - B339428920783CBC008DBAB4 /* zip_stat_init.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_stat_init.c; sourceTree = ""; }; - B339428A20783CBC008DBAB4 /* zip_fopen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_fopen.c; sourceTree = ""; }; - B339428B20783CBC008DBAB4 /* zip_unchange_all.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_unchange_all.c; sourceTree = ""; }; - B339428C20783CBC008DBAB4 /* zip_error_strerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip_error_strerror.c; sourceTree = ""; }; - B339428E20783CBC008DBAB4 /* ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ifaddrs.c; sourceTree = ""; }; - B339428F20783CBC008DBAB4 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - B339429020783CBC008DBAB4 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; - B339429220783CBC008DBAB4 /* audiobackend_pulseaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiobackend_pulseaudio.h; sourceTree = ""; }; - B339429320783CBC008DBAB4 /* audiobackend_alsa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiobackend_alsa.h; sourceTree = ""; }; - B339429420783CBC008DBAB4 /* audiobackend_pulseaudio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_pulseaudio.cpp; sourceTree = ""; }; - B339429520783CBC008DBAB4 /* audiobackend_coreaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiobackend_coreaudio.h; sourceTree = ""; }; - B339429620783CBC008DBAB4 /* audiobackend_oss.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiobackend_oss.h; sourceTree = ""; }; - B339429720783CBC008DBAB4 /* audiobackend_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiobackend_android.h; sourceTree = ""; }; - B339429920783CBC008DBAB4 /* audiobackend_coreaudio.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = audiobackend_coreaudio.mm; sourceTree = ""; }; - B339429A20783CBC008DBAB4 /* oslib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oslib.h; sourceTree = ""; }; - B339429C20783CBC008DBAB4 /* audiostream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiostream.cpp; sourceTree = ""; }; - B339429E20783CBC008DBAB4 /* audiostream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiostream.h; sourceTree = ""; }; - B339429F20783CBC008DBAB4 /* audiobackend_oss.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_oss.cpp; sourceTree = ""; }; - B33942A220783CBC008DBAB4 /* audiobackend_directsound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_directsound.cpp; sourceTree = ""; }; - B33942A420783CBC008DBAB4 /* audiobackend_directsound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audiobackend_directsound.h; sourceTree = ""; }; - B33942A520783CBC008DBAB4 /* audiobackend_alsa.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_alsa.cpp; sourceTree = ""; }; - B33942D220783CBC008DBAB4 /* server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = server.h; sourceTree = ""; }; - B33942D320783CBC008DBAB4 /* server.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = server.cpp; sourceTree = ""; }; - B33942D620783CBC008DBAB4 /* egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = egl.h; sourceTree = ""; }; - B33942D720783CBC008DBAB4 /* eglplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglplatform.h; sourceTree = ""; }; - B33942D820783CBC008DBAB4 /* khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; - B33942DA20783CBC008DBAB4 /* gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2ext.h; sourceTree = ""; }; - B33942DB20783CBC008DBAB4 /* gl3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3.h; sourceTree = ""; }; - B33942DC20783CBC008DBAB4 /* gl3platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3platform.h; sourceTree = ""; }; - B33942DE20783CBC008DBAB4 /* gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2ext.h; sourceTree = ""; }; - B33942DF20783CBC008DBAB4 /* gl2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2.h; sourceTree = ""; }; - B33942E020783CBC008DBAB4 /* gl2platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl2platform.h; sourceTree = ""; }; - B33942E220783CBC008DBAB4 /* khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; - B33942E420783CBC008DBAB4 /* egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = egl.h; sourceTree = ""; }; - B33942E520783CBC008DBAB4 /* eglext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglext.h; sourceTree = ""; }; - B33942E620783CBC008DBAB4 /* eglplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglplatform.h; sourceTree = ""; }; - B33942E820783CBC008DBAB4 /* gl3w.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl3w.c; sourceTree = ""; }; - B33942E920783CBC008DBAB4 /* gl3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3.h; sourceTree = ""; }; - B33942EA20783CBC008DBAB4 /* gl3w.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3w.h; sourceTree = ""; }; - B33942EC20783CBC008DBAB4 /* profiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cpp; sourceTree = ""; }; - B33942ED20783CBC008DBAB4 /* profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = ""; }; - B33942F020783CBC008DBAB4 /* d3d11.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d11.cpp; sourceTree = ""; }; - B33942F220783CBC008DBAB4 /* gldraw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gldraw.cpp; sourceTree = ""; }; - B33942F320783CBC008DBAB4 /* gltex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gltex.cpp; sourceTree = ""; }; - B33942F420783CBC008DBAB4 /* gles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gles.h; sourceTree = ""; }; - B33942F520783CBC008DBAB4 /* gles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gles.cpp; sourceTree = ""; }; - B33942F620783CBC008DBAB4 /* rend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rend.h; sourceTree = ""; }; - B33942F720783CBC008DBAB4 /* TexCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TexCache.h; sourceTree = ""; }; - B33942F920783CBC008DBAB4 /* softrend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = softrend.cpp; sourceTree = ""; }; - B33942FB20783CBC008DBAB4 /* norend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = norend.cpp; sourceTree = ""; }; - B33942FC20783CBC008DBAB4 /* TexCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TexCache.cpp; sourceTree = ""; }; - B33942FF20783CBC008DBAB4 /* winmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = winmain.cpp; sourceTree = ""; }; - B339430120783CBC008DBAB4 /* rec_cpp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_cpp.cpp; sourceTree = ""; }; - B339430320783CBD008DBAB4 /* rec_x86_il.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x86_il.cpp; sourceTree = ""; }; - B339430420783CBD008DBAB4 /* rec_x86_asm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x86_asm.cpp; sourceTree = ""; }; - B339430520783CBD008DBAB4 /* rec_x86_driver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x86_driver.cpp; sourceTree = ""; }; - B339430620783CBD008DBAB4 /* rec_lin86_asm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = rec_lin86_asm.S; sourceTree = ""; }; - B339430720783CBD008DBAB4 /* rec_x86_ngen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rec_x86_ngen.h; sourceTree = ""; }; - B339430920783CBD008DBAB4 /* E_VLoadStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_VLoadStore.h; sourceTree = ""; }; - B339430A20783CBD008DBAB4 /* E_Parallel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_Parallel.h; sourceTree = ""; }; - B339430B20783CBD008DBAB4 /* E_Status.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_Status.h; sourceTree = ""; }; - B339430C20783CBD008DBAB4 /* E_VRegXfer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_VRegXfer.h; sourceTree = ""; }; - B339430D20783CBD008DBAB4 /* H_Branches.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = H_Branches.h; sourceTree = ""; }; - B339430E20783CBD008DBAB4 /* E_Misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_Misc.h; sourceTree = ""; }; - B339430F20783CBD008DBAB4 /* E_Branches.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_Branches.h; sourceTree = ""; }; - B339431020783CBD008DBAB4 /* H_psuedo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = H_psuedo.h; sourceTree = ""; }; - B339431120783CBD008DBAB4 /* arm_coding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_coding.h; sourceTree = ""; }; - B339431220783CBD008DBAB4 /* arm_emitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_emitter.h; sourceTree = ""; }; - B339431320783CBD008DBAB4 /* E_Special.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_Special.h; sourceTree = ""; }; - B339431420783CBD008DBAB4 /* E_LoadStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_LoadStore.h; sourceTree = ""; }; - B339431520783CBD008DBAB4 /* arm_disasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_disasm.h; sourceTree = ""; }; - B339431620783CBD008DBAB4 /* E_Multiply.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_Multiply.h; sourceTree = ""; }; - B339431720783CBD008DBAB4 /* E_VDataOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_VDataOp.h; sourceTree = ""; }; - B339431820783CBD008DBAB4 /* H_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = H_state.h; sourceTree = ""; }; - B339431920783CBD008DBAB4 /* E_DataOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_DataOp.h; sourceTree = ""; }; - B339431A20783CBD008DBAB4 /* H_LoadStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = H_LoadStore.h; sourceTree = ""; }; - B339431B20783CBD008DBAB4 /* H_fp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = H_fp.h; sourceTree = ""; }; - B339431C20783CBD008DBAB4 /* E_Extend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = E_Extend.h; sourceTree = ""; }; - B339431D20783CBD008DBAB4 /* arm_registers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_registers.h; sourceTree = ""; }; - B339431F20783CBD008DBAB4 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; - B339432020783CBD008DBAB4 /* x11.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x11.cpp; sourceTree = ""; }; - B339432120783CBD008DBAB4 /* joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joystick.h; sourceTree = ""; }; - B339432220783CBD008DBAB4 /* x11.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x11.h; sourceTree = ""; }; - B339432320783CBD008DBAB4 /* evdev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = evdev.h; sourceTree = ""; }; - B339432420783CBD008DBAB4 /* joystick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = joystick.cpp; sourceTree = ""; }; - B339432520783CBD008DBAB4 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - B339432620783CBD008DBAB4 /* evdev.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = evdev.cpp; sourceTree = ""; }; - B339432820783CBD008DBAB4 /* reios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reios.h; sourceTree = ""; }; - B339432920783CBD008DBAB4 /* descrambl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = descrambl.cpp; sourceTree = ""; }; - B339432A20783CBD008DBAB4 /* reios_elf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = reios_elf.cpp; sourceTree = ""; }; - B339432B20783CBD008DBAB4 /* reios.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = reios.cpp; sourceTree = ""; }; - B339432C20783CBD008DBAB4 /* reios_elf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reios_elf.h; sourceTree = ""; }; - B339432D20783CBD008DBAB4 /* descrambl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = descrambl.h; sourceTree = ""; }; - B339432E20783CBD008DBAB4 /* gdrom_hle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gdrom_hle.h; sourceTree = ""; }; - B339432F20783CBD008DBAB4 /* gdrom_hle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gdrom_hle.cpp; sourceTree = ""; }; - B339433020783CBD008DBAB4 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - B339433520783CBD008DBAB4 /* emulator_osxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = emulator_osxTests.swift; sourceTree = ""; }; - B339433620783CBD008DBAB4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B339433820783CBD008DBAB4 /* EmuGLView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmuGLView.swift; sourceTree = ""; }; - B339433920783CBD008DBAB4 /* osx-main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "osx-main.mm"; sourceTree = ""; }; - B339433B20783CBD008DBAB4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - B339433C20783CBD008DBAB4 /* emulator-osx-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "emulator-osx-Bridging-Header.h"; sourceTree = ""; }; - B339433D20783CBD008DBAB4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - B339433E20783CBD008DBAB4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - B339433F20783CBD008DBAB4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B339434420783CBD008DBAB4 /* flycast-ios-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "flycast-ios-Prefix.pch"; sourceTree = ""; }; - B339434A20783CBD008DBAB4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - B339434B20783CBD008DBAB4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - B339434C20783CBD008DBAB4 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - B339434E20783CBD008DBAB4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - B339434F20783CBD008DBAB4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - B339435020783CBD008DBAB4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - B339435120783CBD008DBAB4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B339435220783CBD008DBAB4 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - B339435420783CBD008DBAB4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - B339435620783CBD008DBAB4 /* EmulatorViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = EmulatorViewController.mm; sourceTree = ""; }; - B339435720783CBD008DBAB4 /* DiskViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DiskViewCell.m; sourceTree = ""; }; - B339435820783CBD008DBAB4 /* SettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; }; - B339435920783CBD008DBAB4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - B339435A20783CBD008DBAB4 /* PadViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PadViewController.xib; sourceTree = ""; }; - B339435B20783CBD008DBAB4 /* PathsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PathsViewController.h; sourceTree = ""; }; - B339435C20783CBD008DBAB4 /* EmulatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmulatorView.h; sourceTree = ""; }; - B339435D20783CBD008DBAB4 /* AboutViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AboutViewController.m; sourceTree = ""; }; - B339435E20783CBD008DBAB4 /* InputViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InputViewController.h; sourceTree = ""; }; - B339435F20783CBD008DBAB4 /* EmulatorView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = EmulatorView.mm; sourceTree = ""; }; - B339436020783CBD008DBAB4 /* BrowserTableViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BrowserTableViewController.h; sourceTree = ""; }; - B339436120783CBE008DBAB4 /* flycast-ios-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "flycast-ios-Prefix.pch"; sourceTree = ""; }; - B339436320783CBE008DBAB4 /* RTrigger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RTrigger.png; sourceTree = ""; }; - B339436420783CBE008DBAB4 /* Start@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Start@2x.png"; sourceTree = ""; }; - B339436520783CBE008DBAB4 /* DPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "DPad@2x.png"; sourceTree = ""; }; - B339436620783CBE008DBAB4 /* LTrigger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LTrigger.png; sourceTree = ""; }; - B339436720783CBE008DBAB4 /* menuicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuicon.png; sourceTree = ""; }; - B339436820783CBF008DBAB4 /* 210-octocat@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "210-octocat@2x.png"; sourceTree = ""; }; - B339436920783CBF008DBAB4 /* 210-twitterbird.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "210-twitterbird.png"; sourceTree = ""; }; - B339436A20783CBF008DBAB4 /* disk_unknown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk_unknown.png; sourceTree = ""; }; - B339436B20783CBF008DBAB4 /* ABXYPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ABXYPad@2x.png"; sourceTree = ""; }; - B339436C20783CBF008DBAB4 /* 210-twitterbird@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "210-twitterbird@2x.png"; sourceTree = ""; }; - B339436D20783CBF008DBAB4 /* LTrigger@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "LTrigger@2x.png"; sourceTree = ""; }; - B339436E20783CBF008DBAB4 /* DPad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DPad.png; sourceTree = ""; }; - B339436F20783CC0008DBAB4 /* JoystickBackground@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "JoystickBackground@2x.png"; sourceTree = ""; }; - B339437020783CC0008DBAB4 /* JoystickButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JoystickButton.png; sourceTree = ""; }; - B339437120783CC0008DBAB4 /* menuicon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menuicon@2x.png"; sourceTree = ""; }; - B339437220783CC0008DBAB4 /* 210-octocat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "210-octocat.png"; sourceTree = ""; }; - B339437320783CC0008DBAB4 /* ABXYPad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ABXYPad.png; sourceTree = ""; }; - B339437420783CC0008DBAB4 /* RTrigger@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "RTrigger@2x.png"; sourceTree = ""; }; - B339437520783CC0008DBAB4 /* JoystickBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JoystickBackground.png; sourceTree = ""; }; - B339437620783CC0008DBAB4 /* Start.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Start.png; sourceTree = ""; }; - B339437720783CC0008DBAB4 /* menuback.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuback.png; sourceTree = ""; }; - B339437820783CC0008DBAB4 /* JoystickButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "JoystickButton@2x.png"; sourceTree = ""; }; - B339437920783CC0008DBAB4 /* menuback@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menuback@2x.png"; sourceTree = ""; }; - B339437A20783CC0008DBAB4 /* SWRevealViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SWRevealViewController.h; sourceTree = ""; }; - B339437B20783CC0008DBAB4 /* PadViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PadViewController.m; sourceTree = ""; }; - B339437C20783CC0008DBAB4 /* SideDrawerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SideDrawerViewController.m; sourceTree = ""; }; - B339437D20783CC0008DBAB4 /* flycast.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = flycast.entitlements; sourceTree = ""; }; - B339437E20783CC0008DBAB4 /* CloudVMUViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CloudVMUViewController.m; sourceTree = ""; }; - B339437F20783CC0008DBAB4 /* EmulatorViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmulatorViewController.h; sourceTree = ""; }; - B339438020783CC0008DBAB4 /* DiskViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiskViewCell.h; sourceTree = ""; }; - B339438120783CC0008DBAB4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - B339438220783CC0008DBAB4 /* ios_main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ios_main.mm; sourceTree = ""; }; - B339438320783CC0008DBAB4 /* BrowserTableViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BrowserTableViewController.m; sourceTree = ""; }; - B339438420783CC0008DBAB4 /* InputViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InputViewController.m; sourceTree = ""; }; - B339438520783CC0008DBAB4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - B339438720783CC0008DBAB4 /* Shader.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = Shader.fsh; sourceTree = ""; }; - B339438820783CC0008DBAB4 /* Shader.vsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = Shader.vsh; sourceTree = ""; }; - B339438920783CC0008DBAB4 /* AboutViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AboutViewController.h; sourceTree = ""; }; - B339438A20783CC0008DBAB4 /* PathsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PathsViewController.m; sourceTree = ""; }; - B339438B20783CC0008DBAB4 /* flycast-ios-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "flycast-ios-Info.plist"; sourceTree = ""; }; - B339438C20783CC0008DBAB4 /* SettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; }; - B339438D20783CC0008DBAB4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - B339438E20783CC0008DBAB4 /* SideDrawerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SideDrawerViewController.h; sourceTree = ""; }; - B339438F20783CC0008DBAB4 /* PadViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PadViewController.h; sourceTree = ""; }; - B339439020783CC0008DBAB4 /* SWRevealViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SWRevealViewController.m; sourceTree = ""; }; - B339439220783CC0008DBAB4 /* iCadeReaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iCadeReaderView.m; sourceTree = ""; }; - B339439320783CC0008DBAB4 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - B339439420783CC0008DBAB4 /* iCadeReaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iCadeReaderView.h; sourceTree = ""; }; - B339439520783CC0008DBAB4 /* iCadeState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iCadeState.h; sourceTree = ""; }; - B339439620783CC0008DBAB4 /* CloudVMUViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CloudVMUViewController.h; sourceTree = ""; }; - B339439720783CC0008DBAB4 /* MainStoryboard.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = MainStoryboard.storyboard; sourceTree = ""; }; - B339439820783CC0008DBAB4 /* flycast.xcworkspace */ = {isa = PBXFileReference; lastKnownFileType = wrapper.workspace; path = flycast.xcworkspace; sourceTree = ""; }; - B339439920783CC0008DBAB4 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - B339439B20783CC0008DBAB4 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - B339439D20783CC0008DBAB4 /* Linux-x86.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Linux-x86.cmake"; sourceTree = ""; }; - B339439F20783CC0008DBAB4 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; - B33943A020783CC0008DBAB4 /* 3675.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3675.png; sourceTree = ""; }; - B33943A320783CC0008DBAB4 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - B33943A720783CC0008DBAB4 /* DECkeysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DECkeysym.h; sourceTree = ""; }; - B33943A820783CC0008DBAB4 /* Xos_r.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xos_r.h; sourceTree = ""; }; - B33943A920783CC0008DBAB4 /* Xutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xutil.h; sourceTree = ""; }; - B33943AB20783CC0008DBAB4 /* Right */ = {isa = PBXFileReference; lastKnownFileType = text; path = Right; sourceTree = ""; }; - B33943AC20783CC0008DBAB4 /* Dashes */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dashes; sourceTree = ""; }; - B33943AD20783CC0008DBAB4 /* gray */ = {isa = PBXFileReference; lastKnownFileType = text; path = gray; sourceTree = ""; }; - B33943AE20783CC0008DBAB4 /* wide_weave */ = {isa = PBXFileReference; lastKnownFileType = text; path = wide_weave; sourceTree = ""; }; - B33943AF20783CC0008DBAB4 /* cross_weave */ = {isa = PBXFileReference; lastKnownFileType = text; path = cross_weave; sourceTree = ""; }; - B33943B020783CC0008DBAB4 /* xfd_icon */ = {isa = PBXFileReference; lastKnownFileType = text; path = xfd_icon; sourceTree = ""; }; - B33943B120783CC0008DBAB4 /* flipped_gray */ = {isa = PBXFileReference; lastKnownFileType = text; path = flipped_gray; sourceTree = ""; }; - B33943B220783CC0008DBAB4 /* stipple */ = {isa = PBXFileReference; lastKnownFileType = text; path = stipple; sourceTree = ""; }; - B33943B320783CC0008DBAB4 /* rdblarrow */ = {isa = PBXFileReference; lastKnownFileType = text; path = rdblarrow; sourceTree = ""; }; - B33943B420783CC0008DBAB4 /* tie_fighter */ = {isa = PBXFileReference; lastKnownFileType = text; path = tie_fighter; sourceTree = ""; }; - B33943B520783CC0008DBAB4 /* cntr_ptrmsk */ = {isa = PBXFileReference; lastKnownFileType = text; path = cntr_ptrmsk; sourceTree = ""; }; - B33943B620783CC0008DBAB4 /* starMask */ = {isa = PBXFileReference; lastKnownFileType = text; path = starMask; sourceTree = ""; }; - B33943B720783CC0008DBAB4 /* letters */ = {isa = PBXFileReference; lastKnownFileType = text; path = letters; sourceTree = ""; }; - B33943B820783CC0008DBAB4 /* grid16 */ = {isa = PBXFileReference; lastKnownFileType = text; path = grid16; sourceTree = ""; }; - B33943B920783CC0008DBAB4 /* calculator */ = {isa = PBXFileReference; lastKnownFileType = text; path = calculator; sourceTree = ""; }; - B33943BA20783CC0008DBAB4 /* dot */ = {isa = PBXFileReference; lastKnownFileType = text; path = dot; sourceTree = ""; }; - B33943BB20783CC0008DBAB4 /* Excl */ = {isa = PBXFileReference; lastKnownFileType = text; path = Excl; sourceTree = ""; }; - B33943BC20783CC0008DBAB4 /* wingdogs */ = {isa = PBXFileReference; lastKnownFileType = text; path = wingdogs; sourceTree = ""; }; - B33943BD20783CC0008DBAB4 /* mailempty */ = {isa = PBXFileReference; lastKnownFileType = text; path = mailempty; sourceTree = ""; }; - B33943BE20783CC0008DBAB4 /* xlogo64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = xlogo64; sourceTree = ""; }; - B33943BF20783CC0008DBAB4 /* target */ = {isa = PBXFileReference; lastKnownFileType = text; path = target; sourceTree = ""; }; - B33943C020783CC0008DBAB4 /* gray1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = gray1; sourceTree = ""; }; - B33943C120783CC0008DBAB4 /* dropbar8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = dropbar8; sourceTree = ""; }; - B33943C220783CC0008DBAB4 /* black6 */ = {isa = PBXFileReference; lastKnownFileType = text; path = black6; sourceTree = ""; }; - B33943C320783CC0008DBAB4 /* Term */ = {isa = PBXFileReference; lastKnownFileType = text; path = Term; sourceTree = ""; }; - B33943C420783CC0008DBAB4 /* left_ptrmsk */ = {isa = PBXFileReference; lastKnownFileType = text; path = left_ptrmsk; sourceTree = ""; }; - B33943C520783CC0008DBAB4 /* dropbar7 */ = {isa = PBXFileReference; lastKnownFileType = text; path = dropbar7; sourceTree = ""; }; - B33943C620783CC0008DBAB4 /* dimple3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = dimple3; sourceTree = ""; }; - B33943C720783CC0008DBAB4 /* Left */ = {isa = PBXFileReference; lastKnownFileType = text; path = Left; sourceTree = ""; }; - B33943C820783CC0008DBAB4 /* weird_size */ = {isa = PBXFileReference; lastKnownFileType = text; path = weird_size; sourceTree = ""; }; - B33943C920783CC0008DBAB4 /* ldblarrow */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldblarrow; sourceTree = ""; }; - B33943CA20783CC0008DBAB4 /* terminal */ = {isa = PBXFileReference; lastKnownFileType = text; path = terminal; sourceTree = ""; }; - B33943CB20783CC0008DBAB4 /* escherknot */ = {isa = PBXFileReference; lastKnownFileType = text; path = escherknot; sourceTree = ""; }; - B33943CC20783CC0008DBAB4 /* root_weave */ = {isa = PBXFileReference; lastKnownFileType = text; path = root_weave; sourceTree = ""; }; - B33943CD20783CC0008DBAB4 /* RotateLeft */ = {isa = PBXFileReference; lastKnownFileType = text; path = RotateLeft; sourceTree = ""; }; - B33943CE20783CC0008DBAB4 /* light_gray */ = {isa = PBXFileReference; lastKnownFileType = text; path = light_gray; sourceTree = ""; }; - B33943CF20783CC0008DBAB4 /* grid8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = grid8; sourceTree = ""; }; - B33943D020783CC0008DBAB4 /* 1x1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = 1x1; sourceTree = ""; }; - B33943D120783CC0008DBAB4 /* menu12 */ = {isa = PBXFileReference; lastKnownFileType = text; path = menu12; sourceTree = ""; }; - B33943D220783CC0008DBAB4 /* mailfull */ = {isa = PBXFileReference; lastKnownFileType = text; path = mailfull; sourceTree = ""; }; - B33943D320783CC0008DBAB4 /* scales */ = {isa = PBXFileReference; lastKnownFileType = text; path = scales; sourceTree = ""; }; - B33943D420783CC0008DBAB4 /* noletters */ = {isa = PBXFileReference; lastKnownFileType = text; path = noletters; sourceTree = ""; }; - B33943D520783CC0008DBAB4 /* RotateRight */ = {isa = PBXFileReference; lastKnownFileType = text; path = RotateRight; sourceTree = ""; }; - B33943D620783CC0008DBAB4 /* FlipHoriz */ = {isa = PBXFileReference; lastKnownFileType = text; path = FlipHoriz; sourceTree = ""; }; - B33943D720783CC0008DBAB4 /* flagdown */ = {isa = PBXFileReference; lastKnownFileType = text; path = flagdown; sourceTree = ""; }; - B33943D820783CC0008DBAB4 /* star */ = {isa = PBXFileReference; lastKnownFileType = text; path = star; sourceTree = ""; }; - B33943D920783CC0008DBAB4 /* box6 */ = {isa = PBXFileReference; lastKnownFileType = text; path = box6; sourceTree = ""; }; - B33943DA20783CC0008DBAB4 /* Up */ = {isa = PBXFileReference; lastKnownFileType = text; path = Up; sourceTree = ""; }; - B33943DB20783CC1008DBAB4 /* vlines3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = vlines3; sourceTree = ""; }; - B33943DC20783CC1008DBAB4 /* mailemptymsk */ = {isa = PBXFileReference; lastKnownFileType = text; path = mailemptymsk; sourceTree = ""; }; - B33943DD20783CC1008DBAB4 /* left_ptr */ = {isa = PBXFileReference; lastKnownFileType = text; path = left_ptr; sourceTree = ""; }; - B33943DE20783CC1008DBAB4 /* xsnow */ = {isa = PBXFileReference; lastKnownFileType = text; path = xsnow; sourceTree = ""; }; - B33943DF20783CC1008DBAB4 /* menu6 */ = {isa = PBXFileReference; lastKnownFileType = text; path = menu6; sourceTree = ""; }; - B33943E020783CC1008DBAB4 /* vlines2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = vlines2; sourceTree = ""; }; - B33943E120783CC1008DBAB4 /* menu8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = menu8; sourceTree = ""; }; - B33943E220783CC1008DBAB4 /* 2x2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = 2x2; sourceTree = ""; }; - B33943E320783CC1008DBAB4 /* xlogo16 */ = {isa = PBXFileReference; lastKnownFileType = text; path = xlogo16; sourceTree = ""; }; - B33943E420783CC1008DBAB4 /* Fold */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fold; sourceTree = ""; }; - B33943E520783CC1008DBAB4 /* xlogo11 */ = {isa = PBXFileReference; lastKnownFileType = text; path = xlogo11; sourceTree = ""; }; - B33943E620783CC1008DBAB4 /* sipb */ = {isa = PBXFileReference; lastKnownFileType = text; path = sipb; sourceTree = ""; }; - B33943E720783CC1008DBAB4 /* Down */ = {isa = PBXFileReference; lastKnownFileType = text; path = Down; sourceTree = ""; }; - B33943E820783CC1008DBAB4 /* hlines3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlines3; sourceTree = ""; }; - B33943E920783CC1008DBAB4 /* plaid */ = {isa = PBXFileReference; lastKnownFileType = text; path = plaid; sourceTree = ""; }; - B33943EA20783CC1008DBAB4 /* cntr_ptr */ = {isa = PBXFileReference; lastKnownFileType = text; path = cntr_ptr; sourceTree = ""; }; - B33943EB20783CC1008DBAB4 /* right_ptr */ = {isa = PBXFileReference; lastKnownFileType = text; path = right_ptr; sourceTree = ""; }; - B33943EC20783CC1008DBAB4 /* FlipVert */ = {isa = PBXFileReference; lastKnownFileType = text; path = FlipVert; sourceTree = ""; }; - B33943ED20783CC1008DBAB4 /* gray3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = gray3; sourceTree = ""; }; - B33943EE20783CC1008DBAB4 /* icon */ = {isa = PBXFileReference; lastKnownFileType = text; path = icon; sourceTree = ""; }; - B33943EF20783CC1008DBAB4 /* xlogo32 */ = {isa = PBXFileReference; lastKnownFileType = text; path = xlogo32; sourceTree = ""; }; - B33943F020783CC1008DBAB4 /* hlines2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = hlines2; sourceTree = ""; }; - B33943F120783CC1008DBAB4 /* menu10 */ = {isa = PBXFileReference; lastKnownFileType = text; path = menu10; sourceTree = ""; }; - B33943F220783CC1008DBAB4 /* black */ = {isa = PBXFileReference; lastKnownFileType = text; path = black; sourceTree = ""; }; - B33943F320783CC1008DBAB4 /* mensetmanus */ = {isa = PBXFileReference; lastKnownFileType = text; path = mensetmanus; sourceTree = ""; }; - B33943F420783CC1008DBAB4 /* grid4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = grid4; sourceTree = ""; }; - B33943F520783CC1008DBAB4 /* opendotMask */ = {isa = PBXFileReference; lastKnownFileType = text; path = opendotMask; sourceTree = ""; }; - B33943F620783CC1008DBAB4 /* opendot */ = {isa = PBXFileReference; lastKnownFileType = text; path = opendot; sourceTree = ""; }; - B33943F720783CC1008DBAB4 /* right_ptrmsk */ = {isa = PBXFileReference; lastKnownFileType = text; path = right_ptrmsk; sourceTree = ""; }; - B33943F820783CC1008DBAB4 /* mailfullmsk */ = {isa = PBXFileReference; lastKnownFileType = text; path = mailfullmsk; sourceTree = ""; }; - B33943F920783CC1008DBAB4 /* menu16 */ = {isa = PBXFileReference; lastKnownFileType = text; path = menu16; sourceTree = ""; }; - B33943FA20783CC1008DBAB4 /* woman */ = {isa = PBXFileReference; lastKnownFileType = text; path = woman; sourceTree = ""; }; - B33943FB20783CC1008DBAB4 /* flagup */ = {isa = PBXFileReference; lastKnownFileType = text; path = flagup; sourceTree = ""; }; - B33943FC20783CC1008DBAB4 /* dimple1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = dimple1; sourceTree = ""; }; - B33943FD20783CC1008DBAB4 /* grid2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = grid2; sourceTree = ""; }; - B33943FE20783CC1008DBAB4 /* boxes */ = {isa = PBXFileReference; lastKnownFileType = text; path = boxes; sourceTree = ""; }; - B33943FF20783CC1008DBAB4 /* keyboard16 */ = {isa = PBXFileReference; lastKnownFileType = text; path = keyboard16; sourceTree = ""; }; - B339440020783CC1008DBAB4 /* Xresource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xresource.h; sourceTree = ""; }; - B339440120783CC1008DBAB4 /* Xmd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xmd.h; sourceTree = ""; }; - B339440220783CC1008DBAB4 /* Xdmcp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xdmcp.h; sourceTree = ""; }; - B339440320783CC1008DBAB4 /* Xauth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xauth.h; sourceTree = ""; }; - B339440420783CC1008DBAB4 /* ap_keysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ap_keysym.h; sourceTree = ""; }; - B339440520783CC1008DBAB4 /* Xatom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xatom.h; sourceTree = ""; }; - B339440720783CC1008DBAB4 /* Xtranstli.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Xtranstli.c; sourceTree = ""; }; - B339440820783CC1008DBAB4 /* Xtranssock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Xtranssock.c; sourceTree = ""; }; - B339440920783CC1008DBAB4 /* transport.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = transport.c; sourceTree = ""; }; - B339440A20783CC1008DBAB4 /* Xtrans.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xtrans.h; sourceTree = ""; }; - B339440B20783CC1008DBAB4 /* Xtranslcl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Xtranslcl.c; sourceTree = ""; }; - B339440C20783CC1008DBAB4 /* Xtransint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xtransint.h; sourceTree = ""; }; - B339440D20783CC1008DBAB4 /* Xtransutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Xtransutil.c; sourceTree = ""; }; - B339440E20783CC1008DBAB4 /* Xtrans.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Xtrans.c; sourceTree = ""; }; - B339440F20783CC1008DBAB4 /* Xos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xos.h; sourceTree = ""; }; - B339441020783CC1008DBAB4 /* Xlocale.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xlocale.h; sourceTree = ""; }; - B339441120783CC1008DBAB4 /* ImUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImUtil.h; sourceTree = ""; }; - B339441220783CC1008DBAB4 /* Xarch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xarch.h; sourceTree = ""; }; - B339441320783CC1008DBAB4 /* Xlibint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xlibint.h; sourceTree = ""; }; - B339441420783CC1008DBAB4 /* Xpoll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xpoll.h; sourceTree = ""; }; - B339441520783CC1008DBAB4 /* Xlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xlib.h; sourceTree = ""; }; - B339441620783CC1008DBAB4 /* cursorfont.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cursorfont.h; sourceTree = ""; }; - B339441720783CC1008DBAB4 /* Xproto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xproto.h; sourceTree = ""; }; - B339441820783CC1008DBAB4 /* XWDFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XWDFile.h; sourceTree = ""; }; - B339441A20783CC1008DBAB4 /* XKBsrv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XKBsrv.h; sourceTree = ""; }; - B339441B20783CC1008DBAB4 /* XKBproto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XKBproto.h; sourceTree = ""; }; - B339441C20783CC1008DBAB4 /* XKB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XKB.h; sourceTree = ""; }; - B339441D20783CC1008DBAB4 /* XI2proto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XI2proto.h; sourceTree = ""; }; - B339441E20783CC1008DBAB4 /* XIproto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XIproto.h; sourceTree = ""; }; - B339441F20783CC1008DBAB4 /* XI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XI.h; sourceTree = ""; }; - B339442020783CC1008DBAB4 /* XKBgeom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XKBgeom.h; sourceTree = ""; }; - B339442120783CC1008DBAB4 /* XI2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XI2.h; sourceTree = ""; }; - B339442220783CC1008DBAB4 /* XKBstr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XKBstr.h; sourceTree = ""; }; - B339442320783CC1008DBAB4 /* Xalloca.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xalloca.h; sourceTree = ""; }; - B339442420783CC1008DBAB4 /* Sunkeysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sunkeysym.h; sourceTree = ""; }; - B339442520783CC1008DBAB4 /* Xfuncproto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xfuncproto.h; sourceTree = ""; }; - B339442620783CC1008DBAB4 /* Xwindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xwindows.h; sourceTree = ""; }; - B339442720783CC1008DBAB4 /* keysymdef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keysymdef.h; sourceTree = ""; }; - B339442820783CC1008DBAB4 /* XKBlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XKBlib.h; sourceTree = ""; }; - B339442920783CC1008DBAB4 /* Xthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xthreads.h; sourceTree = ""; }; - B339442A20783CC1008DBAB4 /* Xdefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xdefs.h; sourceTree = ""; }; - B339442B20783CC1008DBAB4 /* HPkeysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HPkeysym.h; sourceTree = ""; }; - B339442C20783CC1008DBAB4 /* Xregion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xregion.h; sourceTree = ""; }; - B339442D20783CC1008DBAB4 /* Xosdefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xosdefs.h; sourceTree = ""; }; - B339442E20783CC1008DBAB4 /* keysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keysym.h; sourceTree = ""; }; - B339442F20783CC1008DBAB4 /* Xwinsock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xwinsock.h; sourceTree = ""; }; - B339443020783CC1008DBAB4 /* XF86keysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XF86keysym.h; sourceTree = ""; }; - B339443120783CC1008DBAB4 /* Xprotostr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xprotostr.h; sourceTree = ""; }; - B339443220783CC1008DBAB4 /* Xfuncs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xfuncs.h; sourceTree = ""; }; - B339443320783CC1008DBAB4 /* X.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = X.h; sourceTree = ""; }; - B339443420783CC1008DBAB4 /* Xw32defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xw32defs.h; sourceTree = ""; }; - B339443520783CC1008DBAB4 /* XlibConf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XlibConf.h; sourceTree = ""; }; - B339443620783CC1008DBAB4 /* Xcms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Xcms.h; sourceTree = ""; }; - B339443820783CC1008DBAB4 /* seq_event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seq_event.h; sourceTree = ""; }; - B339443920783CC1008DBAB4 /* error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; - B339443A20783CC1008DBAB4 /* pcm_ioplug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm_ioplug.h; sourceTree = ""; }; - B339443B20783CC1008DBAB4 /* control_external.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = control_external.h; sourceTree = ""; }; - B339443C20783CC1008DBAB4 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; - B339443D20783CC1008DBAB4 /* control.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = control.h; sourceTree = ""; }; - B339443E20783CC1008DBAB4 /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; - B339443F20783CC1008DBAB4 /* seq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seq.h; sourceTree = ""; }; - B339444020783CC1008DBAB4 /* pcm_external.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm_external.h; sourceTree = ""; }; - B339444120783CC1008DBAB4 /* alisp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = alisp.h; sourceTree = ""; }; - B339444220783CC1008DBAB4 /* iatomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iatomic.h; sourceTree = ""; }; - B339444320783CC1008DBAB4 /* global.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = global.h; sourceTree = ""; }; - B339444420783CC1008DBAB4 /* asoundlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asoundlib.h; sourceTree = ""; }; - B339444520783CC1008DBAB4 /* conf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = ""; }; - B339444620783CC1008DBAB4 /* seqmid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seqmid.h; sourceTree = ""; }; - B339444720783CC1008DBAB4 /* pcm_rate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm_rate.h; sourceTree = ""; }; - B339444820783CC1008DBAB4 /* seq_midi_event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seq_midi_event.h; sourceTree = ""; }; - B339444920783CC1008DBAB4 /* output.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = output.h; sourceTree = ""; }; - B339444A20783CC1008DBAB4 /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; - B339444B20783CC1008DBAB4 /* mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mixer.h; sourceTree = ""; }; - B339444C20783CC1008DBAB4 /* mixer_abst.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mixer_abst.h; sourceTree = ""; }; - B339444D20783CC1008DBAB4 /* rawmidi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rawmidi.h; sourceTree = ""; }; - B339444E20783CC1008DBAB4 /* pcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm.h; sourceTree = ""; }; - B339444F20783CC1008DBAB4 /* use-case.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "use-case.h"; sourceTree = ""; }; - B339445020783CC1008DBAB4 /* hwdep.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hwdep.h; sourceTree = ""; }; - B339445120783CC1008DBAB4 /* asoundef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asoundef.h; sourceTree = ""; }; - B339445220783CC1008DBAB4 /* pcm_old.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm_old.h; sourceTree = ""; }; - B339445320783CC1008DBAB4 /* pcm_extplug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm_extplug.h; sourceTree = ""; }; - B339445520783CC1008DBAB4 /* sb16_csp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sb16_csp.h; sourceTree = ""; }; - B339445620783CC1008DBAB4 /* sscape_ioctl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sscape_ioctl.h; sourceTree = ""; }; - B339445720783CC1008DBAB4 /* type_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = type_compat.h; sourceTree = ""; }; - B339445820783CC1008DBAB4 /* emu10k1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emu10k1.h; sourceTree = ""; }; - B339445920783CC1008DBAB4 /* asound_fm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asound_fm.h; sourceTree = ""; }; - B339445A20783CC1008DBAB4 /* hdspm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hdspm.h; sourceTree = ""; }; - B339445B20783CC1008DBAB4 /* hdsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hdsp.h; sourceTree = ""; }; - B339445C20783CC1008DBAB4 /* pcm_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm_plugin.h; sourceTree = ""; }; - B339445E20783CC1008DBAB4 /* libGLESv2.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libGLESv2.so; sourceTree = ""; }; - B339445F20783CC1008DBAB4 /* libX11.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libX11.so; sourceTree = ""; }; - B339446020783CC1008DBAB4 /* libxcb.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libxcb.so; sourceTree = ""; }; - B339446120783CC1008DBAB4 /* libasound.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libasound.so; sourceTree = ""; }; - B339446220783CC1008DBAB4 /* libXau.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libXau.so; sourceTree = ""; }; - B339446320783CC1008DBAB4 /* alibX11.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = alibX11.so; sourceTree = ""; }; - B339446420783CC1008DBAB4 /* libEGL.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libEGL.so; sourceTree = ""; }; - B339446520783CC1008DBAB4 /* libXdmcp.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libXdmcp.so; sourceTree = ""; }; - B339446620783CC1008DBAB4 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - B339446820783CC1008DBAB4 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - B339446A20783CC1008DBAB4 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - B339446E20783CC1008DBAB4 /* flycast-joyconfig.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = "flycast-joyconfig.1"; sourceTree = ""; }; - B339446F20783CC1008DBAB4 /* flycast.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = flycast.1; sourceTree = ""; }; - B339447120783CC1008DBAB4 /* flycast-joyconfig.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "flycast-joyconfig.py"; sourceTree = ""; }; - B339447220783CC1008DBAB4 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - B339447320783CC1008DBAB4 /* flycast.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = flycast.png; sourceTree = ""; }; - B339447620783CC1008DBAB4 /* libGLESv2.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libGLESv2.so; sourceTree = ""; }; - B339447720783CC1008DBAB4 /* libEGL.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libEGL.so; sourceTree = ""; }; - B339447820783CC1008DBAB4 /* libdrm.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libdrm.so; sourceTree = ""; }; - B339447920783CC1008DBAB4 /* libglapi.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = libglapi.so; sourceTree = ""; }; - B339447A20783CC1008DBAB4 /* default.gcw0.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = default.gcw0.desktop; sourceTree = ""; }; - B339447B20783CC1008DBAB4 /* icon-32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-32.png"; sourceTree = ""; }; - B339447D20783CC1008DBAB4 /* controller_pandora.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_pandora.cfg; sourceTree = ""; }; - B339447E20783CC1008DBAB4 /* controller_generic.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_generic.cfg; sourceTree = ""; }; - B339447F20783CC1008DBAB4 /* keyboard.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = keyboard.cfg; sourceTree = ""; }; - B339448020783CC1008DBAB4 /* controller_xpad.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_xpad.cfg; sourceTree = ""; }; - B339448120783CC1008DBAB4 /* controller_gcwz.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_gcwz.cfg; sourceTree = ""; }; - B339448220783CC1008DBAB4 /* controller_xboxdrv.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = controller_xboxdrv.cfg; sourceTree = ""; }; - B339448320783CC1008DBAB4 /* flycast.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = flycast.desktop; sourceTree = ""; }; - B339448720783CC1008DBAB4 /* popup_show */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = popup_show; sourceTree = ""; }; - B339448820783CC1008DBAB4 /* popup_hide */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = popup_hide; sourceTree = ""; }; - B339448A20783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339448C20783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339448E20783CC1008DBAB4 /* input_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = input_fragment.xml; sourceTree = ""; }; - B339448F20783CC1008DBAB4 /* input_mod_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = input_mod_fragment.xml; sourceTree = ""; }; - B339449020783CC1008DBAB4 /* configure_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_fragment.xml; sourceTree = ""; }; - B339449220783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339449420783CC1008DBAB4 /* menutile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menutile.png; sourceTree = ""; }; - B339449520783CC1008DBAB4 /* vmu_swap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vmu_swap.png; sourceTree = ""; }; - B339449620783CC1008DBAB4 /* list_selector.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = list_selector.xml; sourceTree = ""; }; - B339449720783CC1008DBAB4 /* chd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chd.png; sourceTree = ""; }; - B339449820783CC1008DBAB4 /* disc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disc.png; sourceTree = ""; }; - B339449920783CC1008DBAB4 /* disk_unknown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk_unknown.png; sourceTree = ""; }; - B339449A20783CC1008DBAB4 /* widescreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = widescreen.png; sourceTree = ""; }; - B339449B20783CC1008DBAB4 /* ic_xperia_play.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_xperia_play.png; sourceTree = ""; }; - B339449C20783CC1008DBAB4 /* open_folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = open_folder.png; sourceTree = ""; }; - B339449D20783CC1008DBAB4 /* question.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = question.png; sourceTree = ""; }; - B339449E20783CC1008DBAB4 /* up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = up.png; sourceTree = ""; }; - B339449F20783CC1008DBAB4 /* mute_sound.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mute_sound.png; sourceTree = ""; }; - B33944A020783CC1008DBAB4 /* toggle_r_l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toggle_r_l.png; sourceTree = ""; }; - B33944A120783CC1008DBAB4 /* apply.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apply.png; sourceTree = ""; }; - B33944A220783CC1008DBAB4 /* reset.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = reset.png; sourceTree = ""; }; - B33944A320783CC1008DBAB4 /* rounded.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = rounded.xml; sourceTree = ""; }; - B33944A420783CC1008DBAB4 /* gradient_bg_hover.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gradient_bg_hover.xml; sourceTree = ""; }; - B33944A520783CC1008DBAB4 /* debug.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debug.png; sourceTree = ""; }; - B33944A620783CC1008DBAB4 /* gradient_bg.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gradient_bg.xml; sourceTree = ""; }; - B33944A720783CC1008DBAB4 /* toggle_a_b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toggle_a_b.png; sourceTree = ""; }; - B33944A820783CC1008DBAB4 /* background.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = background.xml; sourceTree = ""; }; - B33944A920783CC1008DBAB4 /* config.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = config.png; sourceTree = ""; }; - B33944AA20783CC1008DBAB4 /* frames_up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frames_up.png; sourceTree = ""; }; - B33944AB20783CC1008DBAB4 /* print_stats.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = print_stats.png; sourceTree = ""; }; - B33944AC20783CC1008DBAB4 /* mic_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mic_icon.png; sourceTree = ""; }; - B33944AD20783CC1008DBAB4 /* cloud.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cloud.png; sourceTree = ""; }; - B33944AE20783CC1008DBAB4 /* game_selector.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = game_selector.xml; sourceTree = ""; }; - B33944AF20783CC1008DBAB4 /* frames_limit_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frames_limit_on.png; sourceTree = ""; }; - B33944B020783CC1008DBAB4 /* enable_sound.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = enable_sound.png; sourceTree = ""; }; - B33944B120783CC1008DBAB4 /* list_item_border.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = list_item_border.xml; sourceTree = ""; }; - B33944B220783CC1008DBAB4 /* image_bg.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = image_bg.xml; sourceTree = ""; }; - B33944B320783CC1008DBAB4 /* input.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = input.png; sourceTree = ""; }; - B33944B420783CC1008DBAB4 /* normal_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = normal_view.png; sourceTree = ""; }; - B33944B520783CC1008DBAB4 /* star.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = star.png; sourceTree = ""; }; - B33944B620783CC1008DBAB4 /* cd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cd.png; sourceTree = ""; }; - B33944B720783CC1008DBAB4 /* shadow.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = shadow.xml; sourceTree = ""; }; - B33944B820783CC1008DBAB4 /* disk_swap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk_swap.png; sourceTree = ""; }; - B33944B920783CC1008DBAB4 /* gdi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gdi.png; sourceTree = ""; }; - B33944BA20783CC1008DBAB4 /* frames_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frames_down.png; sourceTree = ""; }; - B33944BB20783CC1008DBAB4 /* ic_banner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_banner.png; sourceTree = ""; }; - B33944BC20783CC1008DBAB4 /* cdi.pdn */ = {isa = PBXFileReference; lastKnownFileType = file; path = cdi.pdn; sourceTree = ""; }; - B33944BD20783CC1008DBAB4 /* profiler.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = profiler.png; sourceTree = ""; }; - B33944BE20783CC1008DBAB4 /* clear_cache.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = clear_cache.png; sourceTree = ""; }; - B33944BF20783CC1008DBAB4 /* cloud_big.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cloud_big.png; sourceTree = ""; }; - B33944C020783CC1008DBAB4 /* menuback.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuback.png; sourceTree = ""; }; - B33944C120783CC1008DBAB4 /* frames_limit_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frames_limit_off.png; sourceTree = ""; }; - B33944C220783CC1008DBAB4 /* close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = close.png; sourceTree = ""; }; - B33944C420783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B33944C620783CC1008DBAB4 /* mainuilayout_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mainuilayout_fragment.xml; sourceTree = ""; }; - B33944C720783CC1008DBAB4 /* menu_popup_config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = menu_popup_config.xml; sourceTree = ""; }; - B33944C820783CC1008DBAB4 /* head_list_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = head_list_item.xml; sourceTree = ""; }; - B33944C920783CC1008DBAB4 /* bios_list_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = bios_list_item.xml; sourceTree = ""; }; - B33944CA20783CC1008DBAB4 /* menu_popup_debug.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = menu_popup_debug.xml; sourceTree = ""; }; - B33944CB20783CC1008DBAB4 /* input_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = input_fragment.xml; sourceTree = ""; }; - B33944CC20783CC1008DBAB4 /* menu_popup_main.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = menu_popup_main.xml; sourceTree = ""; }; - B33944CD20783CC1008DBAB4 /* webview.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = webview.xml; sourceTree = ""; }; - B33944CE20783CC1008DBAB4 /* about_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = about_fragment.xml; sourceTree = ""; }; - B33944CF20783CC1008DBAB4 /* app_list_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = app_list_item.xml; sourceTree = ""; }; - B33944D020783CC1008DBAB4 /* input_mod_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = input_mod_fragment.xml; sourceTree = ""; }; - B33944D120783CC1008DBAB4 /* toast_layout.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = toast_layout.xml; sourceTree = ""; }; - B33944D220783CC1008DBAB4 /* spinner_selected.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = spinner_selected.xml; sourceTree = ""; }; - B33944D320783CC1008DBAB4 /* dialog_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dialog_item.xml; sourceTree = ""; }; - B33944D420783CC1008DBAB4 /* change_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = change_item.xml; sourceTree = ""; }; - B33944D520783CC1008DBAB4 /* activity_main.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = activity_main.xml; sourceTree = ""; }; - B33944D620783CC1008DBAB4 /* cloud_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = cloud_fragment.xml; sourceTree = ""; }; - B33944D720783CC1008DBAB4 /* configure_fragment.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configure_fragment.xml; sourceTree = ""; }; - B33944D920783CC1008DBAB4 /* dimens.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dimens.xml; sourceTree = ""; }; - B33944DA20783CC1008DBAB4 /* donottranslate.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = donottranslate.xml; sourceTree = ""; }; - B33944DB20783CC1008DBAB4 /* styles.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = styles.xml; sourceTree = ""; }; - B33944DC20783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B33944DD20783CC1008DBAB4 /* ids.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ids.xml; sourceTree = ""; }; - B33944DF20783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B33944E120783CC1008DBAB4 /* ic_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_notification.png; sourceTree = ""; }; - B33944E220783CC1008DBAB4 /* ic_action_search.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_action_search.png; sourceTree = ""; }; - B33944E320783CC1008DBAB4 /* ic_github.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_github.png; sourceTree = ""; }; - B33944E420783CC1008DBAB4 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; - B33944E520783CC1008DBAB4 /* ouya_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ouya_icon.png; sourceTree = ""; }; - B33944E720783CC1008DBAB4 /* ic_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_notification.png; sourceTree = ""; }; - B33944E820783CC1008DBAB4 /* ic_github.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_github.png; sourceTree = ""; }; - B33944E920783CC1008DBAB4 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; - B33944EB20783CC1008DBAB4 /* ic_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_notification.png; sourceTree = ""; }; - B33944EC20783CC1008DBAB4 /* ic_action_search.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_action_search.png; sourceTree = ""; }; - B33944ED20783CC1008DBAB4 /* ic_github.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_github.png; sourceTree = ""; }; - B33944EE20783CC1008DBAB4 /* ic_drawer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_drawer.png; sourceTree = ""; }; - B33944EF20783CC1008DBAB4 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; - B33944F120783CC1008DBAB4 /* ic_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_notification.png; sourceTree = ""; }; - B33944F220783CC1008DBAB4 /* ic_github.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_github.png; sourceTree = ""; }; - B33944F320783CC1008DBAB4 /* ic_drawer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_drawer.png; sourceTree = ""; }; - B33944F420783CC1008DBAB4 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; - B33944F620783CC1008DBAB4 /* dimens.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = dimens.xml; sourceTree = ""; }; - B33944F820783CC1008DBAB4 /* activity_main.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = activity_main.xml; sourceTree = ""; }; - B33944FA20783CC1008DBAB4 /* ic_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_notification.png; sourceTree = ""; }; - B33944FB20783CC1008DBAB4 /* ic_action_search.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_action_search.png; sourceTree = ""; }; - B33944FC20783CC1008DBAB4 /* ic_github.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_github.png; sourceTree = ""; }; - B33944FD20783CC1008DBAB4 /* ic_drawer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_drawer.png; sourceTree = ""; }; - B33944FE20783CC1008DBAB4 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; - B339450020783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339450220783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339450420783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339450620783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339450820783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339450A20783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339450C20783CC1008DBAB4 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; - B339450D20783CC1008DBAB4 /* build.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = build.xml; sourceTree = ""; }; - B339450E20783CC1008DBAB4 /* ic_launcher-web.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ic_launcher-web.png"; sourceTree = ""; }; - B339451020783CC2008DBAB4 /* dctemplate.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = dctemplate.psd; sourceTree = ""; }; - B339451120783CC2008DBAB4 /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; - B339451220783CC2008DBAB4 /* project.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = project.properties; sourceTree = ""; }; - B339451320783CC2008DBAB4 /* .classpath */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = .classpath; sourceTree = ""; }; - B339451520783CC2008DBAB4 /* commons-logging-1.1.1.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "commons-logging-1.1.1.jar"; sourceTree = ""; }; - B339451620783CC2008DBAB4 /* dropbox-android-sdk-1.6.1.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "dropbox-android-sdk-1.6.1.jar"; sourceTree = ""; }; - B339451720783CC2008DBAB4 /* android-support-v4.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "android-support-v4.jar"; sourceTree = ""; }; - B339451820783CC2008DBAB4 /* commons-io-2.4.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "commons-io-2.4.jar"; sourceTree = ""; }; - B339451920783CC2008DBAB4 /* image-uniload.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "image-uniload.jar"; sourceTree = ""; }; - B339451A20783CC2008DBAB4 /* commons-lang3-3.1.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "commons-lang3-3.1.jar"; sourceTree = ""; }; - B339451B20783CC2008DBAB4 /* ouya-sdk.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "ouya-sdk.jar"; sourceTree = ""; }; - B339451C20783CC2008DBAB4 /* json_simple-1.1.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "json_simple-1.1.jar"; sourceTree = ""; }; - B339451D20783CC2008DBAB4 /* com.bda.controller.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = com.bda.controller.jar; sourceTree = ""; }; - B339451E20783CC2008DBAB4 /* bcprov-jdk16-146.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "bcprov-jdk16-146.jar"; sourceTree = ""; }; - B339451F20783CC2008DBAB4 /* proguard-project.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "proguard-project.txt"; sourceTree = ""; }; - B339452120783CC2008DBAB4 /* org.eclipse.jdt.core.prefs */ = {isa = PBXFileReference; lastKnownFileType = text; path = org.eclipse.jdt.core.prefs; sourceTree = ""; }; - B339452220783CC2008DBAB4 /* .project */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = .project; sourceTree = ""; }; - B339452420783CC2008DBAB4 /* cd.pdn */ = {isa = PBXFileReference; lastKnownFileType = file; path = cd.pdn; sourceTree = ""; }; - B339452620783CC2008DBAB4 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; - B339452720783CC2008DBAB4 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; - B339452920783CC2008DBAB4 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; - B339452A20783CC2008DBAB4 /* utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = utils.cpp; sourceTree = ""; }; - B339452B20783CC2008DBAB4 /* Android.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Android.cpp; sourceTree = ""; }; - B339452C20783CC2008DBAB4 /* XperiaPlay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = XperiaPlay.c; sourceTree = ""; }; - B339452E20783CC2008DBAB4 /* buttons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttons.png; sourceTree = ""; }; - B339452F20783CC2008DBAB4 /* build */ = {isa = PBXFileReference; lastKnownFileType = text; path = build; sourceTree = ""; }; - B339453020783CC2008DBAB4 /* custom_rules.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = custom_rules.xml; sourceTree = ""; }; - B339453620783CC2008DBAB4 /* GLCFactory6.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GLCFactory6.java; sourceTree = ""; }; - B339453720783CC2008DBAB4 /* JNIdc.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = JNIdc.java; sourceTree = ""; }; - B339453820783CC2008DBAB4 /* OnScreenMenu.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = OnScreenMenu.java; sourceTree = ""; }; - B339453920783CC2008DBAB4 /* GLCFactory.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GLCFactory.java; sourceTree = ""; }; - B339453A20783CC2008DBAB4 /* GL2JNIView.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GL2JNIView.java; sourceTree = ""; }; - B339453C20783CC2008DBAB4 /* InputFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputFragment.java; sourceTree = ""; }; - B339453D20783CC2008DBAB4 /* EditVJoyActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = EditVJoyActivity.java; sourceTree = ""; }; - B339453E20783CC2008DBAB4 /* OptionsFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = OptionsFragment.java; sourceTree = ""; }; - B339453F20783CC2008DBAB4 /* InputModFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = InputModFragment.java; sourceTree = ""; }; - B339454020783CC2008DBAB4 /* Config.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Config.java; sourceTree = ""; }; - B339454120783CC2008DBAB4 /* GL2JNIActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GL2JNIActivity.java; sourceTree = ""; }; - B339454220783CC2008DBAB4 /* MainActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MainActivity.java; sourceTree = ""; }; - B339454420783CC2008DBAB4 /* VJoy.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = VJoy.java; sourceTree = ""; }; - B339454520783CC2008DBAB4 /* SipEmulator.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SipEmulator.java; sourceTree = ""; }; - B339454620783CC2008DBAB4 /* Gamepad.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Gamepad.java; sourceTree = ""; }; - B339454720783CC2008DBAB4 /* MogaHack.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MogaHack.java; sourceTree = ""; }; - B339454820783CC2008DBAB4 /* VmuLcd.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = VmuLcd.java; sourceTree = ""; }; - B339454920783CC2008DBAB4 /* MOGAInput.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = MOGAInput.java; sourceTree = ""; }; - B339454A20783CC2008DBAB4 /* CloudFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = CloudFragment.java; sourceTree = ""; }; - B339454B20783CC2008DBAB4 /* GL2JNINative.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GL2JNINative.java; sourceTree = ""; }; - B339454C20783CC2008DBAB4 /* AboutFragment.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = AboutFragment.java; sourceTree = ""; }; - B339454D20783CC2008DBAB4 /* FileBrowser.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = FileBrowser.java; sourceTree = ""; }; - B339454F20783CC2008DBAB4 /* GitAdapter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GitAdapter.java; sourceTree = ""; }; - B339455020783CC2008DBAB4 /* GenerateLogs.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GenerateLogs.java; sourceTree = ""; }; - B339455120783CC2008DBAB4 /* UploadLogs.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = UploadLogs.java; sourceTree = ""; }; - B339455220783CC2008DBAB4 /* XMLParser.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = XMLParser.java; sourceTree = ""; }; - B339455520783CC2008DBAB4 /* FileUtils.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = FileUtils.java; sourceTree = ""; }; - B339455620783CC2008DBAB4 /* DreamTime.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = DreamTime.java; sourceTree = ""; }; - B339455820783CC2008DBAB4 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; - B339455920783CC2008DBAB4 /* background.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = background.js; sourceTree = ""; }; - B339455A20783CC2008DBAB4 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - B339455B20783CC2008DBAB4 /* icon128.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon128.png; sourceTree = ""; }; - B339455C20783CC2008DBAB4 /* example.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = example.js; sourceTree = ""; }; - B339455D20783CC2008DBAB4 /* common.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = common.js; sourceTree = ""; }; - B339459820783CC2008DBAB4 /* microphone support notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "microphone support notes.txt"; sourceTree = ""; }; - B339459920783CC2008DBAB4 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - B33945B920783CC2008DBAB4 /* gdtool.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gdtool.vcxproj.filters; sourceTree = ""; }; - B33945BA20783CC2008DBAB4 /* gdtool.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = gdtool.sln; sourceTree = ""; }; - B33945BB20783CC2008DBAB4 /* gdtool.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gdtool.vcxproj; sourceTree = ""; }; - B33945BC20783CC2008DBAB4 /* gdtool.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gdtool.vcxproj.user; sourceTree = ""; }; - B33945BE20783CC2008DBAB4 /* cdromfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdromfs.h; sourceTree = ""; }; - B33945BF20783CC2008DBAB4 /* cdromfs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cdromfs.cpp; sourceTree = ""; }; - B33945C020783CC2008DBAB4 /* cdromfs_imp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdromfs_imp.h; sourceTree = ""; }; - B33945C120783CC2008DBAB4 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; - B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - B3447E96218B809200557ACE /* PVFlycastCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Controls.h"; sourceTree = ""; }; - B3447E97218B809300557ACE /* PVFlycastCore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVFlycastCore+Controls.mm"; sourceTree = ""; }; - B3447E9A218B826F00557ACE /* PVFlycast+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycast+Audio.h"; sourceTree = ""; }; - B3447E9B218B826F00557ACE /* PVFlycast+Audio.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVFlycast+Audio.mm"; sourceTree = ""; }; - B3447EA0218B881000557ACE /* PVFlycast.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVFlycast.mm; sourceTree = ""; }; - B3447EA2218BBFB700557ACE /* PVFlycast+AudioTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycast+AudioTypes.h"; sourceTree = ""; }; - B3447EA4218BC36B00557ACE /* PVFlycast+CoreAudio.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVFlycast+CoreAudio.mm"; sourceTree = ""; }; - B3447EA6218BC3A600557ACE /* PVFlycast+CoreAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVFlycast+CoreAudio.h"; sourceTree = ""; }; - B3447EA9218BC59D00557ACE /* PVFlycastCore+Saves.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Saves.h"; sourceTree = ""; }; - B3447EAA218BC59D00557ACE /* PVFlycastCore+Saves.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVFlycastCore+Saves.m"; sourceTree = ""; }; - B3447EAD218BC5C500557ACE /* PVFlycastCore+Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Video.h"; sourceTree = ""; }; - B3447EAE218BC5C500557ACE /* PVFlycastCore+Video.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVFlycastCore+Video.m"; sourceTree = ""; }; - B3447EB1218BC69700557ACE /* PVFlycastCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFlycastCore+Audio.h"; sourceTree = ""; }; - B3447EB2218BC69700557ACE /* PVFlycastCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVFlycastCore+Audio.m"; sourceTree = ""; }; - B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; - B3447EE6218BEDD200557ACE /* PVFlycast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFlycast.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3447F91218BEE3F00557ACE /* libflycast-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libflycast-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; - B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; - B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; - B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3C7621020783162009950E4 /* PVFlycast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFlycast.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3C7621320783162009950E4 /* PVFlycast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFlycast.h; sourceTree = ""; }; - B3C7621420783162009950E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; - B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3C76223207833DE009950E4 /* PVFlycastCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFlycastCore.h; sourceTree = ""; }; - B3C76224207833DE009950E4 /* PVFlycastCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVFlycastCore.mm; sourceTree = ""; }; - B3C7622720783510009950E4 /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - B30178D0207C901D0051B93D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + B3982CD729239F4900A82429 /* machine */ = { + isa = PBXGroup; + children = ( + B3982CD829239F4900A82429 /* thread_state.h */, + B3982CD929239F4900A82429 /* thread_status.h */, + B3982CDA29239F4900A82429 /* boolean.h */, + B3982CDB29239F4900A82429 /* vm_types.h */, ); - runOnlyForDeploymentPostprocessing = 0; + path = machine; + sourceTree = ""; }; - B3447ECA218BEDD200557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, - B3DDF56D26E9B90400CE47F0 /* libflycast-tvOS.a in Frameworks */, - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, + B3982CDC29239F4900A82429 /* mach-o */ = { + isa = PBXGroup; + children = ( + B3982CDD29239F4900A82429 /* nlist.h */, + B3982CDE29239F4900A82429 /* loader.h */, + B3982CDF29239F4900A82429 /* fat.h */, + B3982CE029239F4900A82429 /* arch.h */, ); - runOnlyForDeploymentPostprocessing = 0; + path = "mach-o"; + sourceTree = ""; }; - B3447F8C218BEE3F00557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + B3982CE129239F4900A82429 /* lss */ = { + isa = PBXGroup; + children = ( + B3982CE229239F4900A82429 /* DIR_METADATA */, + B3982CE329239F4900A82429 /* LICENSE */, + B3982CE429239F4900A82429 /* tests */, + B3982CF029239F4900A82429 /* codereview.settings */, + B3982CF129239F4900A82429 /* README.md */, + B3982CF229239F4900A82429 /* .gitignore */, + B3982CF329239F4900A82429 /* linux_syscall_support.h */, + B3982CF429239F4900A82429 /* OWNERS */, ); - runOnlyForDeploymentPostprocessing = 0; + path = lss; + sourceTree = ""; }; - B3C7620C20783162009950E4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, - B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, - B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, - B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, - B301797F207C909E0051B93D /* libflycast-iOS.a in Frameworks */, - B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, - B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, - B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, - B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, - B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3982CE429239F4900A82429 /* tests */ = { + isa = PBXGroup; + children = ( + B3982CE529239F4900A82429 /* getrandom.c */, + B3982CE629239F4900A82429 /* sigaction.c */, + B3982CE729239F4900A82429 /* Makefile */, + B3982CE829239F4900A82429 /* fallocate.c */, + B3982CE929239F4900A82429 /* README.md */, + B3982CEA29239F4900A82429 /* unlink.c */, + B3982CEB29239F4900A82429 /* .gitignore */, + B3982CEC29239F4900A82429 /* sigtimedwait.c */, + B3982CED29239F4900A82429 /* stat.c */, + B3982CEE29239F4900A82429 /* lstat.c */, + B3982CEF29239F4900A82429 /* test_skel.h */, ); - runOnlyForDeploymentPostprocessing = 0; + path = tests; + sourceTree = ""; }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - B339411E20783CBB008DBAB4 /* flycast */ = { + B3982CF529239F4900A82429 /* google_breakpad */ = { isa = PBXGroup; children = ( - B339433020783CBD008DBAB4 /* LICENSE */, - B339459920783CC2008DBAB4 /* README.md */, - B339411F20783CBB008DBAB4 /* core */, - B339459720783CC2008DBAB4 /* docs */, - B33945B820783CC2008DBAB4 /* gdtool */, - B339433120783CBD008DBAB4 /* shell */, + B3982CF629239F4900A82429 /* processor */, + B3982D1029239F4900A82429 /* common */, ); - path = flycast; + path = google_breakpad; sourceTree = ""; }; - B339411F20783CBB008DBAB4 /* core */ = { - isa = PBXGroup; - children = ( - B339412020783CBB008DBAB4 /* rec-x64 */, - B339412220783CBB008DBAB4 /* emitter */, - B339413020783CBB008DBAB4 /* hw */, - B33941B320783CBB008DBAB4 /* build.h */, - B33941B420783CBB008DBAB4 /* types.h */, - B33941B520783CBB008DBAB4 /* imgread */, - B33941C020783CBC008DBAB4 /* cfg */, - B33941C620783CBC008DBAB4 /* README.md */, - B33941C720783CBC008DBAB4 /* nullDC.cpp */, - B33941C820783CBC008DBAB4 /* rec-ARM */, - B33941CC20783CBC008DBAB4 /* sdl */, - B33941CF20783CBC008DBAB4 /* linux */, - B33941D620783CBC008DBAB4 /* nacl */, - B33941D920783CBC008DBAB4 /* stdclass.h */, - B33941DA20783CBC008DBAB4 /* stdclass.cpp */, - B33941DB20783CBC008DBAB4 /* deps */, - B339429120783CBC008DBAB4 /* oslib */, - B33942A720783CBC008DBAB4 /* webui */, - B33942D420783CBC008DBAB4 /* khronos */, - B33942EB20783CBC008DBAB4 /* profiler */, - B33942EE20783CBC008DBAB4 /* rend */, - B33942FE20783CBC008DBAB4 /* windows */, - B339430020783CBC008DBAB4 /* rec-cpp */, - B339430220783CBC008DBAB4 /* rec-x86 */, - B339430820783CBD008DBAB4 /* arm_emitter */, - B339431E20783CBD008DBAB4 /* linux-dist */, - B339432720783CBD008DBAB4 /* reios */, + B3982CF629239F4900A82429 /* processor */ = { + isa = PBXGroup; + children = ( + B3982CF729239F4900A82429 /* stackwalker.h */, + B3982CF829239F4900A82429 /* stack_frame_symbolizer.h */, + B3982CF929239F4900A82429 /* minidump.h */, + B3982CFA29239F4900A82429 /* exception_record.h */, + B3982CFB29239F4900A82429 /* process_result.h */, + B3982CFC29239F4900A82429 /* source_line_resolver_base.h */, + B3982CFD29239F4900A82429 /* call_stack.h */, + B3982CFE29239F4900A82429 /* microdump.h */, + B3982CFF29239F4900A82429 /* dump_object.h */, + B3982D0029239F4900A82429 /* exploitability.h */, + B3982D0129239F4900A82429 /* minidump_processor.h */, + B3982D0229239F4900A82429 /* process_state.h */, + B3982D0329239F4900A82429 /* microdump_processor.h */, + B3982D0429239F4900A82429 /* system_info.h */, + B3982D0529239F4900A82429 /* memory_region.h */, + B3982D0629239F4900A82429 /* stack_frame.h */, + B3982D0729239F4900A82429 /* dump_context.h */, + B3982D0829239F4900A82429 /* fast_source_line_resolver.h */, + B3982D0929239F4900A82429 /* source_line_resolver_interface.h */, + B3982D0A29239F4900A82429 /* stack_frame_cpu.h */, + B3982D0B29239F4900A82429 /* symbol_supplier.h */, + B3982D0C29239F4900A82429 /* proc_maps_linux.h */, + B3982D0D29239F4900A82429 /* code_modules.h */, + B3982D0E29239F4900A82429 /* code_module.h */, + B3982D0F29239F4900A82429 /* basic_source_line_resolver.h */, ); - path = core; + path = processor; sourceTree = ""; }; - B339412020783CBB008DBAB4 /* rec-x64 */ = { + B3982D1029239F4900A82429 /* common */ = { isa = PBXGroup; children = ( - B339412120783CBB008DBAB4 /* rec_x64.cpp */, + B3982D1129239F4900A82429 /* minidump_exception_solaris.h */, + B3982D1229239F4900A82429 /* minidump_exception_fuchsia.h */, + B3982D1329239F4900A82429 /* minidump_cpu_arm64.h */, + B3982D1429239F4900A82429 /* minidump_cpu_ppc.h */, + B3982D1529239F4900A82429 /* minidump_format.h */, + B3982D1629239F4900A82429 /* minidump_exception_mac.h */, + B3982D1729239F4900A82429 /* minidump_cpu_mips.h */, + B3982D1829239F4900A82429 /* minidump_exception_win32.h */, + B3982D1929239F4900A82429 /* minidump_cpu_x86.h */, + B3982D1A29239F4900A82429 /* minidump_cpu_sparc.h */, + B3982D1B29239F4900A82429 /* minidump_cpu_amd64.h */, + B3982D1C29239F4900A82429 /* minidump_cpu_arm.h */, + B3982D1D29239F4900A82429 /* minidump_size.h */, + B3982D1E29239F4900A82429 /* minidump_exception_linux.h */, + B3982D1F29239F4900A82429 /* minidump_cpu_ppc64.h */, + B3982D2029239F4900A82429 /* breakpad_types.h */, + B3982D2129239F4900A82429 /* minidump_exception_ps3.h */, ); - path = "rec-x64"; + path = common; sourceTree = ""; }; - B339412220783CBB008DBAB4 /* emitter */ = { + B3982D2229239F4900A82429 /* client */ = { isa = PBXGroup; children = ( - B339412320783CBB008DBAB4 /* x86_emitter.h */, - B339412420783CBB008DBAB4 /* x86_matcher.h */, - B339412520783CBB008DBAB4 /* generated_class_names.h */, - B339412620783CBB008DBAB4 /* x86_op_encoder.h */, - B339412720783CBB008DBAB4 /* generated_indexes.h */, - B339412820783CBB008DBAB4 /* types.h */, - B339412920783CBB008DBAB4 /* emitter.vcxproj */, - B339412A20783CBB008DBAB4 /* emitter.vcxproj.user */, - B339412B20783CBB008DBAB4 /* generated_descriptors.h */, - B339412C20783CBB008DBAB4 /* x86_op_classes.h */, - B339412D20783CBB008DBAB4 /* generated_class_names_string.h */, - B339412E20783CBB008DBAB4 /* x86_op_table.h */, - B339412F20783CBB008DBAB4 /* x86_emitter.cpp */, + B3982D2329239F4900A82429 /* apple */, + B3982D2629239F4900A82429 /* minidump_file_writer.cc */, + B3982D2729239F4900A82429 /* minidump_file_writer-inl.h */, + B3982D2829239F4900A82429 /* minidump_file_writer_unittest.cc */, + B3982D2929239F4900A82429 /* ios */, + B3982D3729239F4900A82429 /* mac */, + B3982DA829239F4900A82429 /* linux */, + B3982DE029239F4900A82429 /* windows */, + B3982E0E29239F4900A82429 /* solaris */, + B3982E1929239F4900A82429 /* minidump_file_writer.h */, ); - path = emitter; + path = client; sourceTree = ""; }; - B339413020783CBB008DBAB4 /* hw */ = { + B3982D2329239F4900A82429 /* apple */ = { isa = PBXGroup; children = ( - B339413120783CBB008DBAB4 /* holly */, - B339413920783CBB008DBAB4 /* sh4 */, - B339416F20783CBB008DBAB4 /* gdrom */, - B339417420783CBB008DBAB4 /* pvr */, - B339418A20783CBB008DBAB4 /* flashrom */, - B339418C20783CBB008DBAB4 /* naomi */, - B339419220783CBB008DBAB4 /* maple */, - B339419B20783CBB008DBAB4 /* arm7 */, - B33941A520783CBB008DBAB4 /* aica */, - B33941B020783CBB008DBAB4 /* mem */, + B3982D2429239F4900A82429 /* Framework */, ); - path = hw; + path = apple; sourceTree = ""; }; - B339413120783CBB008DBAB4 /* holly */ = { + B3982D2429239F4900A82429 /* Framework */ = { isa = PBXGroup; children = ( - B339413220783CBB008DBAB4 /* holly_intc.h */, - B339413320783CBB008DBAB4 /* sb.h */, - B339413420783CBB008DBAB4 /* sb_mem.cpp */, - B339413520783CBB008DBAB4 /* sb.cpp */, - B339413620783CBB008DBAB4 /* holly_intc.cpp */, - B339413720783CBB008DBAB4 /* sb_dma.cpp */, - B339413820783CBB008DBAB4 /* sb_mem.h */, + B3982D2529239F4900A82429 /* BreakpadDefines.h */, ); - path = holly; + path = Framework; sourceTree = ""; }; - B339413920783CBB008DBAB4 /* sh4 */ = { - isa = PBXGroup; - children = ( - B339413A20783CBB008DBAB4 /* sh4_rom.h */, - B339413B20783CBB008DBAB4 /* dyna */, - B339414820783CBB008DBAB4 /* sh4_opcode_list.h */, - B339414920783CBB008DBAB4 /* sh4_if.h */, - B339414A20783CBB008DBAB4 /* sh4_interpreter.h */, - B339414B20783CBB008DBAB4 /* fsca-table.h */, - B339414C20783CBB008DBAB4 /* sh4_sched.cpp */, - B339414D20783CBB008DBAB4 /* sh4_opcode_list.cpp */, - B339414E20783CBB008DBAB4 /* sh4_mmr.h */, - B339414F20783CBB008DBAB4 /* sh4_mem.h */, - B339415020783CBB008DBAB4 /* sh4_mem.cpp */, - B339415120783CBB008DBAB4 /* interpr */, - B339415620783CBB008DBAB4 /* sh4_interrupts.cpp */, - B339415720783CBB008DBAB4 /* sh4_interrupts.h */, - B339415820783CBB008DBAB4 /* sh4_opcode.h */, - B339415920783CBB008DBAB4 /* sh4_core_regs.cpp */, - B339415A20783CBB008DBAB4 /* sh4_mmr.cpp */, - B339415B20783CBB008DBAB4 /* modules */, - B339416C20783CBB008DBAB4 /* sh4_rom.cpp */, - B339416D20783CBB008DBAB4 /* sh4_core.h */, - B339416E20783CBB008DBAB4 /* sh4_sched.h */, + B3982D2929239F4900A82429 /* ios */ = { + isa = PBXGroup; + children = ( + B3982D2A29239F4900A82429 /* handler */, + B3982D2D29239F4900A82429 /* Breakpad.xcodeproj */, + B3982D3029239F4900A82429 /* Breakpad_Prefix.pch */, + B3982D3129239F4900A82429 /* exception_handler_no_mach.h */, + B3982D3229239F4900A82429 /* Breakpad.mm */, + B3982D3329239F4900A82429 /* exception_handler_no_mach.cc */, + B3982D3429239F4900A82429 /* Breakpad.h */, + B3982D3529239F4900A82429 /* BreakpadController.h */, + B3982D3629239F4900A82429 /* BreakpadController.mm */, ); - path = sh4; + path = ios; sourceTree = ""; }; - B339413B20783CBB008DBAB4 /* dyna */ = { + B3982D2A29239F4900A82429 /* handler */ = { isa = PBXGroup; children = ( - B339413C20783CBB008DBAB4 /* shil.cpp */, - B339413D20783CBB008DBAB4 /* shil.h */, - B339413E20783CBB008DBAB4 /* rec_config.h */, - B339413F20783CBB008DBAB4 /* ngen.h */, - B339414020783CBB008DBAB4 /* decoder.h */, - B339414120783CBB008DBAB4 /* regalloc.h */, - B339414220783CBB008DBAB4 /* driver.cpp */, - B339414320783CBB008DBAB4 /* decoder.cpp */, - B339414420783CBB008DBAB4 /* blockmanager.cpp */, - B339414520783CBB008DBAB4 /* blockmanager.h */, - B339414620783CBB008DBAB4 /* shil_canonical.h */, - B339414720783CBB008DBAB4 /* decoder_opcodes.h */, + B3982D2B29239F4900A82429 /* ios_exception_minidump_generator.mm */, + B3982D2C29239F4900A82429 /* ios_exception_minidump_generator.h */, ); - path = dyna; + path = handler; sourceTree = ""; }; - B339415120783CBB008DBAB4 /* interpr */ = { + B3982D2E29239F4900A82429 /* Products */ = { isa = PBXGroup; children = ( - B339415220783CBB008DBAB4 /* sh4_opcodes.cpp */, - B339415320783CBB008DBAB4 /* sh4_interpreter.cpp */, - B339415420783CBB008DBAB4 /* sh4_opcodes.h */, - B339415520783CBB008DBAB4 /* sh4_fpu.cpp */, + B398303D29239F4B00A82429 /* libBreakpad.a */, ); - path = interpr; + name = Products; sourceTree = ""; }; - B339415B20783CBB008DBAB4 /* modules */ = { + B3982D3729239F4900A82429 /* mac */ = { isa = PBXGroup; children = ( - B339415C20783CBB008DBAB4 /* ubc.cpp */, - B339415D20783CBB008DBAB4 /* mmu_impl.h */, - B339415E20783CBB008DBAB4 /* intc.cpp */, - B339415F20783CBB008DBAB4 /* mmu.h */, - B339416020783CBB008DBAB4 /* bsc.cpp */, - B339416120783CBB008DBAB4 /* ccn.cpp */, - B339416220783CBB008DBAB4 /* tmu.h */, - B339416320783CBB008DBAB4 /* dmac.h */, - B339416420783CBB008DBAB4 /* modules.h */, - B339416520783CBB008DBAB4 /* dmac.cpp */, - B339416620783CBB008DBAB4 /* serial.cpp */, - B339416720783CBB008DBAB4 /* rtc.cpp */, - B339416820783CBB008DBAB4 /* tmu.cpp */, - B339416920783CBB008DBAB4 /* mmu.cpp */, - B339416A20783CBB008DBAB4 /* ccn.h */, - B339416B20783CBB008DBAB4 /* cpg.cpp */, + B3982D3829239F4900A82429 /* UnitTests-Info.plist */, + B3982D3929239F4900A82429 /* handler */, + B3982D5629239F4900A82429 /* Breakpad.xcodeproj */, + B3982D5C29239F4900A82429 /* testapp */, + B3982D6A29239F4900A82429 /* Framework */, + B3982D7129239F4900A82429 /* sender */, + B3982D9529239F4900A82429 /* tests */, + B3982D9D29239F4900A82429 /* crash_generation */, ); - path = modules; + path = mac; sourceTree = ""; }; - B339416F20783CBB008DBAB4 /* gdrom */ = { + B3982D3929239F4900A82429 /* handler */ = { isa = PBXGroup; children = ( - B339417020783CBB008DBAB4 /* gdrom_response.cpp */, - B339417120783CBB008DBAB4 /* gdromv3.cpp */, - B339417220783CBB008DBAB4 /* gdromv3.h */, - B339417320783CBB008DBAB4 /* gdrom_if.h */, + B3982D3A29239F4900A82429 /* breakpad_nlist_64.cc */, + B3982D3B29239F4900A82429 /* ucontext_compat.h */, + B3982D3C29239F4900A82429 /* minidump_tests64-Info.plist */, + B3982D3D29239F4900A82429 /* protected_memory_allocator.h */, + B3982D3E29239F4900A82429 /* dynamic_images.h */, + B3982D3F29239F4900A82429 /* exception_handler.cc */, + B3982D4029239F4900A82429 /* obj-cTestCases-Info.plist */, + B3982D4129239F4900A82429 /* minidump_generator.h */, + B3982D4229239F4900A82429 /* minidump_generator.cc */, + B3982D4329239F4900A82429 /* mach_vm_compat.h */, + B3982D4429239F4900A82429 /* breakpad_nlist_64.h */, + B3982D4529239F4900A82429 /* minidump_test.xcodeproj */, + B3982D4829239F4900A82429 /* dynamic_images.cc */, + B3982D4929239F4900A82429 /* protected_memory_allocator.cc */, + B3982D4A29239F4900A82429 /* exception_handler.h */, + B3982D4B29239F4900A82429 /* testcases */, + B3982D5529239F4900A82429 /* minidump_tests32-Info.plist */, ); - path = gdrom; + path = handler; sourceTree = ""; }; - B339417420783CBB008DBAB4 /* pvr */ = { - isa = PBXGroup; - children = ( - B339417520783CBB008DBAB4 /* ta_structs.h */, - B339417620783CBB008DBAB4 /* ta_ctx.cpp */, - B339417720783CBB008DBAB4 /* pvr_mem.cpp */, - B339417820783CBB008DBAB4 /* config.h */, - B339417920783CBB008DBAB4 /* Renderer_if.h */, - B339417A20783CBB008DBAB4 /* ta_ctx.h */, - B339417B20783CBB008DBAB4 /* spg.cpp */, - B339417C20783CBB008DBAB4 /* pvr_sb_regs.h */, - B339417D20783CBB008DBAB4 /* pvr_mem.h */, - B339417E20783CBB008DBAB4 /* pvr_sb_regs.cpp */, - B339417F20783CBB008DBAB4 /* helper_classes.h */, - B339418020783CBB008DBAB4 /* ta.h */, - B339418120783CBB008DBAB4 /* spg.h */, - B339418220783CBB008DBAB4 /* pvr_regs.h */, - B339418320783CBB008DBAB4 /* drkPvr.cpp */, - B339418420783CBB008DBAB4 /* Renderer_if.cpp */, - B339418520783CBB008DBAB4 /* ta_vtx.cpp */, - B339418620783CBB008DBAB4 /* ta_const_df.h */, - B339418720783CBB008DBAB4 /* pvr_regs.cpp */, - B339418820783CBB008DBAB4 /* drkPvr.h */, - B339418920783CBB008DBAB4 /* ta.cpp */, + B3982D4629239F4900A82429 /* Products */ = { + isa = PBXGroup; + children = ( + B39830B629239F4B00A82429 /* generator_test */, + B39830B829239F4B00A82429 /* handler_test */, + B39830BA29239F4B00A82429 /* unit_test */, + B39830BC29239F4B00A82429 /* minidump_tests64.cptest */, + B39830BE29239F4B00A82429 /* minidump_tests32.cptest */, + B39830C029239F4B00A82429 /* octestcases.octest */, ); - path = pvr; + name = Products; sourceTree = ""; }; - B339418A20783CBB008DBAB4 /* flashrom */ = { + B3982D4B29239F4900A82429 /* testcases */ = { isa = PBXGroup; children = ( - B339418B20783CBB008DBAB4 /* flashrom.h */, + B3982D4C29239F4900A82429 /* dwarftests.mm */, + B3982D4D29239F4900A82429 /* testdata */, + B3982D5029239F4900A82429 /* breakpad_nlist_test.h */, + B3982D5129239F4900A82429 /* DynamicImagesTests.cc */, + B3982D5229239F4900A82429 /* DynamicImagesTests.h */, + B3982D5329239F4900A82429 /* dwarftests.h */, + B3982D5429239F4900A82429 /* breakpad_nlist_test.cc */, ); - path = flashrom; + path = testcases; sourceTree = ""; }; - B339418C20783CBB008DBAB4 /* naomi */ = { + B3982D4D29239F4900A82429 /* testdata */ = { isa = PBXGroup; children = ( - B339418D20783CBB008DBAB4 /* naomi_regs.h */, - B339418E20783CBB008DBAB4 /* naomi_cart.h */, - B339418F20783CBB008DBAB4 /* naomi_cart.cpp */, - B339419020783CBB008DBAB4 /* naomi.h */, - B339419120783CBB008DBAB4 /* naomi.cpp */, + B3982D4E29239F4900A82429 /* dump_syms_dwarf_data */, + B3982D4F29239F4900A82429 /* dump_syms_i386_breakpad.sym */, ); - path = naomi; + path = testdata; sourceTree = ""; }; - B339419220783CBB008DBAB4 /* maple */ = { + B3982D5729239F4900A82429 /* Products */ = { isa = PBXGroup; children = ( - B339419320783CBB008DBAB4 /* maple_helper.h */, - B339419420783CBB008DBAB4 /* maple_if.cpp */, - B339419520783CBB008DBAB4 /* maple_helper.cpp */, - B339419620783CBB008DBAB4 /* maple_cfg.h */, - B339419720783CBB008DBAB4 /* maple_cfg.cpp */, - B339419820783CBB008DBAB4 /* maple_devs.h */, - B339419920783CBB008DBAB4 /* maple_if.h */, - B339419A20783CBB008DBAB4 /* maple_devs.cpp */, + B398302429239F4B00A82429 /* Breakpad.framework */, + B398302629239F4B00A82429 /* Inspector */, + B398302829239F4B00A82429 /* breakpadUtilities.dylib */, + B398302A29239F4B00A82429 /* crash_report_sender.app */, + B398302C29239F4B00A82429 /* BreakpadTest.app */, + B398302E29239F4B00A82429 /* UnitTests.octest */, + B398303029239F4B00A82429 /* generator_test */, + B398303229239F4B00A82429 /* minidump_file_writer_unittest */, + B398303429239F4B00A82429 /* handler_test */, + B398303629239F4B00A82429 /* libgtest.a */, + B398303829239F4B00A82429 /* crash_generation_server_test */, + B398303A29239F4B00A82429 /* minidump_generator_test_helper */, ); - path = maple; + name = Products; sourceTree = ""; }; - B339419B20783CBB008DBAB4 /* arm7 */ = { + B3982D5C29239F4900A82429 /* testapp */ = { isa = PBXGroup; children = ( - B339419C20783CBB008DBAB4 /* arm_mem.cpp */, - B339419D20783CBB008DBAB4 /* arm_mem.h */, - B339419E20783CBB008DBAB4 /* arm7.h */, - B339419F20783CBB008DBAB4 /* arm7.cpp */, - B33941A020783CBB008DBAB4 /* vbaARM.cpp */, - B33941A120783CBB008DBAB4 /* virt_arm.h */, - B33941A220783CBB008DBAB4 /* resource.h */, - B33941A320783CBB008DBAB4 /* virt_arm.cpp */, - B33941A420783CBB008DBAB4 /* arm-new.h */, + B3982D5D29239F4900A82429 /* crashduringload */, + B3982D5E29239F4900A82429 /* Controller.m */, + B3982D5F29239F4900A82429 /* InfoPlist.strings */, + B3982D6129239F4900A82429 /* MainMenu.xib */, + B3982D6329239F4900A82429 /* crashInMain */, + B3982D6429239F4900A82429 /* TestClass.h */, + B3982D6529239F4900A82429 /* bomb.icns */, + B3982D6629239F4900A82429 /* Controller.h */, + B3982D6729239F4900A82429 /* main.m */, + B3982D6829239F4900A82429 /* TestClass.mm */, + B3982D6929239F4900A82429 /* Info.plist */, ); - path = arm7; + path = testapp; sourceTree = ""; }; - B33941A520783CBB008DBAB4 /* aica */ = { + B3982D6A29239F4900A82429 /* Framework */ = { isa = PBXGroup; children = ( - B33941A620783CBB008DBAB4 /* aica_if.cpp */, - B33941A720783CBB008DBAB4 /* aica.h */, - B33941A820783CBB008DBAB4 /* dsp.cpp */, - B33941A920783CBB008DBAB4 /* aica_mem.cpp */, - B33941AA20783CBB008DBAB4 /* aica.cpp */, - B33941AB20783CBB008DBAB4 /* aica_mem.h */, - B33941AC20783CBB008DBAB4 /* dsp.h */, - B33941AD20783CBB008DBAB4 /* sgc_if.h */, - B33941AE20783CBB008DBAB4 /* aica_if.h */, - B33941AF20783CBB008DBAB4 /* sgc_if.cpp */, + B3982D6B29239F4900A82429 /* Breakpad_Prefix.pch */, + B3982D6C29239F4900A82429 /* OnDemandServer.mm */, + B3982D6D29239F4900A82429 /* Breakpad.mm */, + B3982D6E29239F4900A82429 /* Breakpad.h */, + B3982D6F29239F4900A82429 /* Info.plist */, + B3982D7029239F4900A82429 /* OnDemandServer.h */, ); - path = aica; + path = Framework; sourceTree = ""; }; - B33941B020783CBB008DBAB4 /* mem */ = { + B3982D7129239F4900A82429 /* sender */ = { isa = PBXGroup; children = ( - B33941B120783CBB008DBAB4 /* _vmem.h */, - B33941B220783CBB008DBAB4 /* _vmem.cpp */, + B3982D7229239F4900A82429 /* Localizable.strings */, + B3982D7429239F4900A82429 /* InfoPlist.strings */, + B3982D7829239F4900A82429 /* uploader.h */, + B3982D7929239F4900A82429 /* crash_report_sender.icns */, + B3982D7E29239F4900A82429 /* crash_report_sender-Info.plist */, + B3982D8529239F4900A82429 /* ReporterIcon.graffle */, + B3982D8829239F4900A82429 /* crash_report_sender.m */, + B3982D8929239F4900A82429 /* Breakpad.xib */, + B3982D9029239F4900A82429 /* uploader.mm */, + B3982D9329239F4900A82429 /* crash_report_sender.h */, + B3982D9429239F4900A82429 /* goArrow.png */, ); - path = mem; + path = sender; sourceTree = ""; }; - B33941B520783CBB008DBAB4 /* imgread */ = { + B3982D9529239F4900A82429 /* tests */ = { isa = PBXGroup; children = ( - B33941B620783CBC008DBAB4 /* gdi.cpp */, - B33941B720783CBC008DBAB4 /* common.cpp */, - B33941B820783CBC008DBAB4 /* cdi.cpp */, - B33941B920783CBC008DBAB4 /* ImgReader.cpp */, - B33941BA20783CBC008DBAB4 /* gd_driver.h */, - B33941BB20783CBC008DBAB4 /* common.h */, - B33941BC20783CBC008DBAB4 /* ioctl.cpp */, - B33941BD20783CBC008DBAB4 /* ImgReader.h */, - B33941BE20783CBC008DBAB4 /* SCSIDEFS.H */, - B33941BF20783CBC008DBAB4 /* chd.cpp */, + B3982D9629239F4900A82429 /* testlogging.h */, + B3982D9729239F4900A82429 /* crash_generation_server_test.cc */, + B3982D9829239F4900A82429 /* spawn_child_process.h */, + B3982D9929239F4900A82429 /* exception_handler_test.cc */, + B3982D9A29239F4900A82429 /* BreakpadFramework_Test.mm */, + B3982D9B29239F4900A82429 /* minidump_generator_test_helper.cc */, + B3982D9C29239F4900A82429 /* minidump_generator_test.cc */, ); - path = imgread; + path = tests; sourceTree = ""; }; - B33941C020783CBC008DBAB4 /* cfg */ = { + B3982D9D29239F4900A82429 /* crash_generation */ = { isa = PBXGroup; children = ( - B33941C120783CBC008DBAB4 /* cfg.cpp */, - B33941C220783CBC008DBAB4 /* ini.h */, - B33941C320783CBC008DBAB4 /* ini.cpp */, - B33941C420783CBC008DBAB4 /* cl.cpp */, - B33941C520783CBC008DBAB4 /* cfg.h */, + B3982D9E29239F4900A82429 /* crash_generation_server.cc */, + B3982D9F29239F4900A82429 /* crash_generation_client.h */, + B3982DA029239F4900A82429 /* ConfigFile.h */, + B3982DA129239F4900A82429 /* crash_generation_client.cc */, + B3982DA229239F4900A82429 /* InspectorMain.mm */, + B3982DA329239F4900A82429 /* Inspector.h */, + B3982DA429239F4900A82429 /* client_info.h */, + B3982DA529239F4900A82429 /* Inspector.mm */, + B3982DA629239F4900A82429 /* crash_generation_server.h */, + B3982DA729239F4900A82429 /* ConfigFile.mm */, ); - path = cfg; + path = crash_generation; sourceTree = ""; }; - B33941C820783CBC008DBAB4 /* rec-ARM */ = { + B3982DA829239F4900A82429 /* linux */ = { isa = PBXGroup; children = ( - B33941C920783CBC008DBAB4 /* rec_arm.cpp */, - B33941CA20783CBC008DBAB4 /* ngen_arm.S */, - B33941CB20783CBC008DBAB4 /* ngen_arm64.S */, + B3982DA929239F4900A82429 /* handler */, + B3982DB029239F4900A82429 /* minidump_writer */, + B3982DC729239F4900A82429 /* sender */, + B3982DC929239F4900A82429 /* dump_writer_common */, + B3982DD029239F4900A82429 /* crash_generation */, + B3982DD629239F4900A82429 /* log */, + B3982DD929239F4900A82429 /* microdump_writer */, + B3982DDD29239F4900A82429 /* data */, ); - path = "rec-ARM"; + path = linux; sourceTree = ""; }; - B33941CC20783CBC008DBAB4 /* sdl */ = { + B3982DA929239F4900A82429 /* handler */ = { isa = PBXGroup; children = ( - B33941CD20783CBC008DBAB4 /* sdl.cpp */, - B33941CE20783CBC008DBAB4 /* sdl.h */, + B3982DAA29239F4900A82429 /* exception_handler_unittest.cc */, + B3982DAB29239F4900A82429 /* exception_handler.cc */, + B3982DAC29239F4900A82429 /* minidump_descriptor.h */, + B3982DAD29239F4900A82429 /* minidump_descriptor.cc */, + B3982DAE29239F4900A82429 /* microdump_extra_info.h */, + B3982DAF29239F4900A82429 /* exception_handler.h */, ); - path = sdl; + path = handler; sourceTree = ""; }; - B33941CF20783CBC008DBAB4 /* linux */ = { + B3982DB029239F4900A82429 /* minidump_writer */ = { isa = PBXGroup; children = ( - B33941D020783CBC008DBAB4 /* common.cpp */, - B33941D120783CBC008DBAB4 /* typedefs.h */, - B33941D220783CBC008DBAB4 /* context.cpp */, - B33941D320783CBC008DBAB4 /* context.h */, - B33941D420783CBC008DBAB4 /* nixprof */, + B3982DB129239F4900A82429 /* proc_cpuinfo_reader_unittest.cc */, + B3982DB229239F4900A82429 /* cpu_set_unittest.cc */, + B3982DB329239F4900A82429 /* cpu_set.h */, + B3982DB429239F4900A82429 /* proc_cpuinfo_reader.h */, + B3982DB529239F4900A82429 /* minidump_writer_unittest_utils.cc */, + B3982DB629239F4900A82429 /* linux_dumper_unittest_helper.cc */, + B3982DB729239F4900A82429 /* linux_core_dumper.h */, + B3982DB829239F4900A82429 /* minidump_writer.h */, + B3982DB929239F4900A82429 /* minidump_writer.cc */, + B3982DBA29239F4900A82429 /* line_reader_unittest.cc */, + B3982DBB29239F4900A82429 /* linux_ptrace_dumper.cc */, + B3982DBC29239F4900A82429 /* linux_ptrace_dumper.h */, + B3982DBD29239F4900A82429 /* linux_core_dumper_unittest.cc */, + B3982DBE29239F4900A82429 /* directory_reader_unittest.cc */, + B3982DBF29239F4900A82429 /* linux_core_dumper.cc */, + B3982DC029239F4900A82429 /* minidump_writer_unittest_utils.h */, + B3982DC129239F4900A82429 /* linux_ptrace_dumper_unittest.cc */, + B3982DC229239F4900A82429 /* minidump_writer_unittest.cc */, + B3982DC329239F4900A82429 /* linux_dumper.cc */, + B3982DC429239F4900A82429 /* directory_reader.h */, + B3982DC529239F4900A82429 /* line_reader.h */, + B3982DC629239F4900A82429 /* linux_dumper.h */, ); - path = linux; + path = minidump_writer; sourceTree = ""; }; - B33941D420783CBC008DBAB4 /* nixprof */ = { + B3982DC729239F4900A82429 /* sender */ = { isa = PBXGroup; children = ( - B33941D520783CBC008DBAB4 /* nixprof.cpp */, + B3982DC829239F4900A82429 /* google_crash_report_sender.cc */, ); - path = nixprof; + path = sender; sourceTree = ""; }; - B33941D620783CBC008DBAB4 /* nacl */ = { + B3982DC929239F4900A82429 /* dump_writer_common */ = { isa = PBXGroup; children = ( - B33941D720783CBC008DBAB4 /* nacl.cpp */, - B33941D820783CBC008DBAB4 /* nacl_lin.cpp */, + B3982DCA29239F4900A82429 /* raw_context_cpu.h */, + B3982DCB29239F4900A82429 /* mapping_info.h */, + B3982DCC29239F4900A82429 /* thread_info.h */, + B3982DCD29239F4900A82429 /* thread_info.cc */, + B3982DCE29239F4900A82429 /* ucontext_reader.h */, + B3982DCF29239F4900A82429 /* ucontext_reader.cc */, ); - path = nacl; + path = dump_writer_common; sourceTree = ""; }; - B33941DB20783CBC008DBAB4 /* deps */ = { + B3982DD029239F4900A82429 /* crash_generation */ = { isa = PBXGroup; children = ( - B33941DC20783CBC008DBAB4 /* crypto */, - B33941E320783CBC008DBAB4 /* libpng */, - B33941FF20783CBC008DBAB4 /* libwebsocket */, - B339421C20783CBC008DBAB4 /* zlib */, - B339423B20783CBC008DBAB4 /* coreio */, - B339423E20783CBC008DBAB4 /* xbyak */, - B339424420783CBC008DBAB4 /* chdr */, - B339424820783CBC008DBAB4 /* libelf */, - B339425020783CBC008DBAB4 /* chdpsr */, - B339425320783CBC008DBAB4 /* libzip */, - B339428D20783CBC008DBAB4 /* ifaddrs */, + B3982DD129239F4900A82429 /* crash_generation_server.cc */, + B3982DD229239F4900A82429 /* crash_generation_client.h */, + B3982DD329239F4900A82429 /* crash_generation_client.cc */, + B3982DD429239F4900A82429 /* client_info.h */, + B3982DD529239F4900A82429 /* crash_generation_server.h */, ); - path = deps; + path = crash_generation; sourceTree = ""; }; - B33941DC20783CBC008DBAB4 /* crypto */ = { + B3982DD629239F4900A82429 /* log */ = { isa = PBXGroup; children = ( - B33941DD20783CBC008DBAB4 /* md5.cpp */, - B33941DE20783CBC008DBAB4 /* md5.h */, - B33941DF20783CBC008DBAB4 /* sha256.h */, - B33941E020783CBC008DBAB4 /* sha1.cpp */, - B33941E120783CBC008DBAB4 /* sha256.cpp */, - B33941E220783CBC008DBAB4 /* sha1.h */, + B3982DD729239F4900A82429 /* log.h */, + B3982DD829239F4900A82429 /* log.cc */, ); - path = crypto; + path = log; sourceTree = ""; }; - B33941E320783CBC008DBAB4 /* libpng */ = { + B3982DD929239F4900A82429 /* microdump_writer */ = { isa = PBXGroup; children = ( - B33941E420783CBC008DBAB4 /* pnginfo.h */, - B33941E520783CBC008DBAB4 /* pngrio.c */, - B33941E620783CBC008DBAB4 /* pngerror.c */, - B33941E720783CBC008DBAB4 /* pngwio.c */, - B33941E820783CBC008DBAB4 /* pngstruct.h */, - B33941E920783CBC008DBAB4 /* pngtrans.c */, - B33941EA20783CBC008DBAB4 /* config.h */, - B33941EB20783CBC008DBAB4 /* pngpriv.h */, - B33941EC20783CBC008DBAB4 /* pngwrite.c */, - B33941ED20783CBC008DBAB4 /* png.h */, - B33941EE20783CBC008DBAB4 /* pngwutil.c */, - B33941EF20783CBC008DBAB4 /* pngwtran.c */, - B33941F020783CBC008DBAB4 /* pnglibconf.h */, - B33941F120783CBC008DBAB4 /* pngconf.h */, - B33941F220783CBC008DBAB4 /* pngpread.c */, - B33941F320783CBC008DBAB4 /* pngdebug.h */, - B33941F420783CBC008DBAB4 /* pngread.c */, - B33941F520783CBC008DBAB4 /* arm */, - B33941F920783CBC008DBAB4 /* pngmem.c */, - B33941FA20783CBC008DBAB4 /* pngget.c */, - B33941FB20783CBC008DBAB4 /* png.c */, - B33941FC20783CBC008DBAB4 /* pngrtran.c */, - B33941FD20783CBC008DBAB4 /* pngrutil.c */, - B33941FE20783CBC008DBAB4 /* pngset.c */, + B3982DDA29239F4900A82429 /* microdump_writer.cc */, + B3982DDB29239F4900A82429 /* microdump_writer_unittest.cc */, + B3982DDC29239F4900A82429 /* microdump_writer.h */, ); - path = libpng; + path = microdump_writer; sourceTree = ""; }; - B33941F520783CBC008DBAB4 /* arm */ = { + B3982DDD29239F4900A82429 /* data */ = { isa = PBXGroup; children = ( - B33941F620783CBC008DBAB4 /* filter_neon.S */, - B33941F720783CBC008DBAB4 /* filter_neon_intrinsics.c */, - B33941F820783CBC008DBAB4 /* arm_init.c */, + B3982DDE29239F4900A82429 /* linux-gate-amd.sym */, + B3982DDF29239F4900A82429 /* linux-gate-intel.sym */, ); - path = arm; + path = data; sourceTree = ""; }; - B33941FF20783CBC008DBAB4 /* libwebsocket */ = { - isa = PBXGroup; - children = ( - B339420020783CBC008DBAB4 /* extension.c */, - B339420120783CBC008DBAB4 /* extension-deflate-stream.c */, - B339420220783CBC008DBAB4 /* LICENSE */, - B339420320783CBC008DBAB4 /* config.h */, - B339420420783CBC008DBAB4 /* lextable.h */, - B339420520783CBC008DBAB4 /* extension-deflate-frame.h */, - B339420620783CBC008DBAB4 /* parsers.c */, - B339420720783CBC008DBAB4 /* libwebsockets.c */, - B339420820783CBC008DBAB4 /* base64-decode.c */, - B339420920783CBC008DBAB4 /* pollfd.c */, - B339420A20783CBC008DBAB4 /* server.c */, - B339420B20783CBC008DBAB4 /* README */, - B339420C20783CBC008DBAB4 /* lws-plat-unix.c */, - B339420D20783CBC008DBAB4 /* sha-1.c */, - B339420E20783CBC008DBAB4 /* client.c */, - B339420F20783CBC008DBAB4 /* lws-plat-win.c */, - B339421020783CBC008DBAB4 /* server-handshake.c */, - B339421120783CBC008DBAB4 /* handshake.c */, - B339421220783CBC008DBAB4 /* service.c */, - B339421320783CBC008DBAB4 /* extension-deflate-stream.h */, - B339421420783CBC008DBAB4 /* context.c */, - B339421520783CBC008DBAB4 /* client-parser.c */, - B339421620783CBC008DBAB4 /* libwebsockets.h */, - B339421720783CBC008DBAB4 /* extension-deflate-frame.c */, - B339421820783CBC008DBAB4 /* client-handshake.c */, - B339421920783CBC008DBAB4 /* private-libwebsockets.h */, - B339421A20783CBC008DBAB4 /* lws_config.h */, - B339421B20783CBC008DBAB4 /* output.c */, - ); - path = libwebsocket; - sourceTree = ""; - }; - B339421C20783CBC008DBAB4 /* zlib */ = { - isa = PBXGroup; - children = ( - B339421D20783CBC008DBAB4 /* zutil.h */, - B339421E20783CBC008DBAB4 /* inftrees.h */, - B339421F20783CBC008DBAB4 /* inflate.c */, - B339422020783CBC008DBAB4 /* compress.c */, - B339422120783CBC008DBAB4 /* deflate.c */, - B339422220783CBC008DBAB4 /* inffixed.h */, - B339422320783CBC008DBAB4 /* Makefile */, - B339422420783CBC008DBAB4 /* gzread.c */, - B339422520783CBC008DBAB4 /* trees.h */, - B339422620783CBC008DBAB4 /* inffast.h */, - B339422720783CBC008DBAB4 /* crc32.c */, - B339422820783CBC008DBAB4 /* infback.c */, - B339422920783CBC008DBAB4 /* zutil.c */, - B339422A20783CBC008DBAB4 /* deflate.h */, - B339422B20783CBC008DBAB4 /* gzguts.h */, - B339422C20783CBC008DBAB4 /* zlib.h */, - B339422D20783CBC008DBAB4 /* gzlib.c */, - B339423120783CBC008DBAB4 /* inflate.h */, - B339423220783CBC008DBAB4 /* inftrees.c */, - B339423320783CBC008DBAB4 /* uncompr.c */, - B339423420783CBC008DBAB4 /* gzwrite.c */, - B339423520783CBC008DBAB4 /* trees.c */, - B339423620783CBC008DBAB4 /* gzclose.c */, - B339423720783CBC008DBAB4 /* crc32.h */, - B339423820783CBC008DBAB4 /* inffast.c */, - B339423920783CBC008DBAB4 /* adler32.c */, - B339423A20783CBC008DBAB4 /* zconf.h */, + B3982DE029239F4900A82429 /* windows */ = { + isa = PBXGroup; + children = ( + B3982DE129239F4900A82429 /* handler */, + B3982DE529239F4900A82429 /* breakpad_client.gyp */, + B3982DE629239F4900A82429 /* sender */, + B3982DEA29239F4900A82429 /* tests */, + B3982DF529239F4900A82429 /* unittests */, + B3982E0029239F4900A82429 /* common */, + B3982E0329239F4900A82429 /* crash_generation */, ); - path = zlib; + path = windows; sourceTree = ""; }; - B339423B20783CBC008DBAB4 /* coreio */ = { + B3982DE129239F4900A82429 /* handler */ = { isa = PBXGroup; children = ( - B339423C20783CBC008DBAB4 /* coreio.h */, - B339423D20783CBC008DBAB4 /* coreio.cpp */, + B3982DE229239F4900A82429 /* exception_handler.cc */, + B3982DE329239F4900A82429 /* exception_handler.gyp */, + B3982DE429239F4900A82429 /* exception_handler.h */, ); - path = coreio; + path = handler; sourceTree = ""; }; - B339423E20783CBC008DBAB4 /* xbyak */ = { + B3982DE629239F4900A82429 /* sender */ = { isa = PBXGroup; children = ( - B339423F20783CBC008DBAB4 /* xbyak_mnemonic.h */, - B339424020783CBC008DBAB4 /* xbyak_bin2hex.h */, - B339424120783CBC008DBAB4 /* COPYRIGHT */, - B339424220783CBC008DBAB4 /* xbyak.h */, - B339424320783CBC008DBAB4 /* xbyak_util.h */, + B3982DE729239F4900A82429 /* crash_report_sender.gyp */, + B3982DE829239F4900A82429 /* crash_report_sender.cc */, + B3982DE929239F4900A82429 /* crash_report_sender.h */, ); - path = xbyak; + path = sender; sourceTree = ""; }; - B339424420783CBC008DBAB4 /* chdr */ = { + B3982DEA29239F4900A82429 /* tests */ = { isa = PBXGroup; children = ( - B339424520783CBC008DBAB4 /* chdr.cpp */, - B339424620783CBC008DBAB4 /* chd.h */, - B339424720783CBC008DBAB4 /* coretypes.h */, + B3982DEB29239F4900A82429 /* crash_generation_app */, ); - path = chdr; + path = tests; sourceTree = ""; }; - B339424820783CBC008DBAB4 /* libelf */ = { + B3982DEB29239F4900A82429 /* crash_generation_app */ = { isa = PBXGroup; children = ( - B339424920783CBC008DBAB4 /* debug.h */, - B339424A20783CBC008DBAB4 /* elf64.h */, - B339424B20783CBC008DBAB4 /* elf64.cpp */, - B339424C20783CBC008DBAB4 /* elf.cpp */, - B339424D20783CBC008DBAB4 /* elf.h */, - B339424E20783CBC008DBAB4 /* elf32.h */, - B339424F20783CBC008DBAB4 /* elf32.cpp */, + B3982DEC29239F4900A82429 /* abstract_class.cc */, + B3982DED29239F4900A82429 /* crash_generation_app.rc */, + B3982DEE29239F4900A82429 /* small.ico */, + B3982DEF29239F4900A82429 /* crash_generation_app.h */, + B3982DF029239F4900A82429 /* crash_generation_app.cc */, + B3982DF129239F4900A82429 /* abstract_class.h */, + B3982DF229239F4900A82429 /* crash_generation_app.gyp */, + B3982DF329239F4900A82429 /* resource.h */, + B3982DF429239F4900A82429 /* crash_generation_app.ico */, ); - path = libelf; + path = crash_generation_app; sourceTree = ""; }; - B339425020783CBC008DBAB4 /* chdpsr */ = { + B3982DF529239F4900A82429 /* unittests */ = { isa = PBXGroup; children = ( - B339425120783CBC008DBAB4 /* cdipsr.cpp */, - B339425220783CBC008DBAB4 /* cdipsr.h */, + B3982DF629239F4900A82429 /* client_tests.gyp */, + B3982DF729239F4900A82429 /* minidump_test.cc */, + B3982DF829239F4900A82429 /* exception_handler_test.h */, + B3982DF929239F4900A82429 /* exception_handler_death_test.cc */, + B3982DFA29239F4900A82429 /* dump_analysis.cc */, + B3982DFB29239F4900A82429 /* dump_analysis.h */, + B3982DFC29239F4900A82429 /* exception_handler_nesting_test.cc */, + B3982DFD29239F4900A82429 /* crash_generation_server_test.cc */, + B3982DFE29239F4900A82429 /* exception_handler_test.cc */, + B3982DFF29239F4900A82429 /* testing.gyp */, ); - path = chdpsr; + path = unittests; sourceTree = ""; }; - B339425320783CBC008DBAB4 /* libzip */ = { - isa = PBXGroup; - children = ( - B339425420783CBC008DBAB4 /* zip_memdup.c */, - B339425520783CBC008DBAB4 /* zipint.h */, - B339425620783CBC008DBAB4 /* zip_add.c */, - B339425720783CBC008DBAB4 /* zip_filerange_crc.c */, - B339425820783CBC008DBAB4 /* zip_get_name.c */, - B339425920783CBC008DBAB4 /* zip_file_strerror.c */, - B339425A20783CBC008DBAB4 /* zip_fopen_index.c */, - B339425B20783CBC008DBAB4 /* zip_source_buffer.c */, - B339425C20783CBC008DBAB4 /* zip_error_clear.c */, - B339425D20783CBC008DBAB4 /* zip_get_archive_comment.c */, - B339425E20783CBC008DBAB4 /* zip_source_file.c */, - B339425F20783CBC008DBAB4 /* zip_set_name.c */, - B339426020783CBC008DBAB4 /* zip_file_error_get.c */, - B339426120783CBC008DBAB4 /* zip_file_get_offset.c */, - B339426220783CBC008DBAB4 /* zip_unchange.c */, - B339426320783CBC008DBAB4 /* zip_new.c */, - B339426420783CBC008DBAB4 /* config.h */, - B339426520783CBC008DBAB4 /* zip_close.c */, - B339426620783CBC008DBAB4 /* zip_add_dir.c */, - B339426720783CBC008DBAB4 /* zip_error_get_sys_type.c */, - B339426820783CBC008DBAB4 /* zip_set_archive_comment.c */, - B339426920783CBC008DBAB4 /* zip_name_locate.c */, - B339426A20783CBC008DBAB4 /* zip_unchange_archive.c */, - B339426B20783CBC008DBAB4 /* zip_source_free.c */, - B339426C20783CBC008DBAB4 /* zip_get_num_files.c */, - B339426D20783CBC008DBAB4 /* zip_err_str.c */, - B339426E20783CBC008DBAB4 /* zip_source_filep.c */, - B339426F20783CBC008DBAB4 /* zip_error.c */, - B339427020783CBC008DBAB4 /* zip_strerror.c */, - B339427120783CBC008DBAB4 /* zip_entry_new.c */, - B339427220783CBC008DBAB4 /* zip_get_archive_flag.c */, - B339427320783CBC008DBAB4 /* zip_set_archive_flag.c */, - B339427420783CBC008DBAB4 /* zip_unchange_data.c */, - B339427520783CBC008DBAB4 /* zip_fread.c */, - B339427620783CBC008DBAB4 /* zip_rename.c */, - B339427720783CBC008DBAB4 /* zip_source_zip.c */, - B339427820783CBC008DBAB4 /* zip_stat_index.c */, - B339427920783CBC008DBAB4 /* zip_source_function.c */, - B339427A20783CBC008DBAB4 /* zip_replace.c */, - B339427B20783CBC008DBAB4 /* zip_delete.c */, - B339427C20783CBC008DBAB4 /* zip_set_file_comment.c */, - B339427D20783CBC008DBAB4 /* zip_stat.c */, - B339427E20783CBC008DBAB4 /* zip_get_file_comment.c */, - B339427F20783CBC008DBAB4 /* mkstemp.c */, - B339428020783CBC008DBAB4 /* zip.h */, - B339428120783CBC008DBAB4 /* zip_entry_free.c */, - B339428220783CBC008DBAB4 /* zip_open.c */, - B339428320783CBC008DBAB4 /* zip_error_get.c */, - B339428420783CBC008DBAB4 /* zip_fclose.c */, - B339428520783CBC008DBAB4 /* zip_dirent.c */, - B339428620783CBC008DBAB4 /* zip_free.c */, - B339428720783CBC008DBAB4 /* zip_file_error_clear.c */, - B339428820783CBC008DBAB4 /* zip_error_to_str.c */, - B339428920783CBC008DBAB4 /* zip_stat_init.c */, - B339428A20783CBC008DBAB4 /* zip_fopen.c */, - B339428B20783CBC008DBAB4 /* zip_unchange_all.c */, - B339428C20783CBC008DBAB4 /* zip_error_strerror.c */, + B3982E0029239F4900A82429 /* common */ = { + isa = PBXGroup; + children = ( + B3982E0129239F4900A82429 /* auto_critical_section.h */, + B3982E0229239F4900A82429 /* ipc_protocol.h */, ); - path = libzip; + path = common; sourceTree = ""; }; - B339428D20783CBC008DBAB4 /* ifaddrs */ = { + B3982E0329239F4900A82429 /* crash_generation */ = { isa = PBXGroup; children = ( - B339428E20783CBC008DBAB4 /* ifaddrs.c */, - B339428F20783CBC008DBAB4 /* README.md */, - B339429020783CBC008DBAB4 /* ifaddrs.h */, + B3982E0429239F4900A82429 /* crash_generation_server.cc */, + B3982E0529239F4900A82429 /* crash_generation_client.h */, + B3982E0629239F4900A82429 /* minidump_generator.h */, + B3982E0729239F4900A82429 /* minidump_generator.cc */, + B3982E0829239F4900A82429 /* crash_generation_client.cc */, + B3982E0929239F4900A82429 /* client_info.cc */, + B3982E0A29239F4900A82429 /* client_info.h */, + B3982E0B29239F4900A82429 /* ReadMe.txt */, + B3982E0C29239F4900A82429 /* crash_generation_server.h */, + B3982E0D29239F4900A82429 /* crash_generation.gyp */, ); - path = ifaddrs; + path = crash_generation; sourceTree = ""; }; - B339429120783CBC008DBAB4 /* oslib */ = { + B3982E0E29239F4900A82429 /* solaris */ = { isa = PBXGroup; children = ( - B33942A520783CBC008DBAB4 /* audiobackend_alsa.cpp */, - B339429320783CBC008DBAB4 /* audiobackend_alsa.h */, - B339429720783CBC008DBAB4 /* audiobackend_android.h */, - B339429520783CBC008DBAB4 /* audiobackend_coreaudio.h */, - B339429920783CBC008DBAB4 /* audiobackend_coreaudio.mm */, - B33942A220783CBC008DBAB4 /* audiobackend_directsound.cpp */, - B33942A420783CBC008DBAB4 /* audiobackend_directsound.h */, - B339429F20783CBC008DBAB4 /* audiobackend_oss.cpp */, - B339429620783CBC008DBAB4 /* audiobackend_oss.h */, - B339429420783CBC008DBAB4 /* audiobackend_pulseaudio.cpp */, - B339429220783CBC008DBAB4 /* audiobackend_pulseaudio.h */, - B339429C20783CBC008DBAB4 /* audiostream.cpp */, - B339429E20783CBC008DBAB4 /* audiostream.h */, - B339429A20783CBC008DBAB4 /* oslib.h */, + B3982E0F29239F4900A82429 /* handler */, ); - path = oslib; + path = solaris; sourceTree = ""; }; - B33942A720783CBC008DBAB4 /* webui */ = { + B3982E0F29239F4900A82429 /* handler */ = { isa = PBXGroup; children = ( - B33942D220783CBC008DBAB4 /* server.h */, - B33942D320783CBC008DBAB4 /* server.cpp */, + B3982E1029239F4900A82429 /* minidump_test.cc */, + B3982E1129239F4900A82429 /* exception_handler.cc */, + B3982E1229239F4900A82429 /* Makefile */, + B3982E1329239F4900A82429 /* minidump_generator.h */, + B3982E1429239F4900A82429 /* minidump_generator.cc */, + B3982E1529239F4900A82429 /* solaris_lwp.cc */, + B3982E1629239F4900A82429 /* exception_handler_test.cc */, + B3982E1729239F4900A82429 /* solaris_lwp.h */, + B3982E1829239F4900A82429 /* exception_handler.h */, ); - path = webui; + path = handler; sourceTree = ""; }; - B33942D420783CBC008DBAB4 /* khronos */ = { + B3982E1A29239F4900A82429 /* lzma */ = { isa = PBXGroup; children = ( - B33942D520783CBC008DBAB4 /* APPLE */, - B33942D920783CBC008DBAB4 /* GLES3 */, - B33942DD20783CBC008DBAB4 /* GLES2 */, - B33942E120783CBC008DBAB4 /* KHR */, - B33942E320783CBC008DBAB4 /* EGL */, - B33942E720783CBC008DBAB4 /* GL3 */, + B3982E1B29239F4900A82429 /* Lzma2Dec.c */, + B3982E1C29239F4900A82429 /* LzHash.h */, + B3982E1D29239F4900A82429 /* LzmaEnc.c */, + B3982E1E29239F4900A82429 /* 7zTypes.h */, + B3982E1F29239F4900A82429 /* Bcj2.c */, + B3982E2029239F4900A82429 /* Compiler.h */, + B3982E2129239F4900A82429 /* LzFind.c */, + B3982E2229239F4900A82429 /* Precomp.h */, + B3982E2329239F4900A82429 /* CpuArch.h */, + B3982E2429239F4900A82429 /* Sort.c */, + B3982E2529239F4900A82429 /* 7zCrc.h */, + B3982E2629239F4900A82429 /* Delta.h */, + B3982E2729239F4900A82429 /* Bra.c */, + B3982E2829239F4900A82429 /* 7zFile.h */, + B3982E2929239F4900A82429 /* Bra86.c */, + B3982E2A29239F4900A82429 /* 7zArcIn.c */, + B3982E2B29239F4900A82429 /* LzmaLib.h */, + B3982E2C29239F4900A82429 /* 7zBuf.h */, + B3982E2D29239F4900A82429 /* 7z.h */, + B3982E2E29239F4900A82429 /* Alloc.c */, + B3982E2F29239F4900A82429 /* LzmaDec.c */, + B3982E3029239F4900A82429 /* 7zDec.c */, + B3982E3129239F4900A82429 /* Lzma86.h */, + B3982E3229239F4900A82429 /* LzmaEnc.h */, + B3982E3329239F4900A82429 /* Lzma2Dec.h */, + B3982E3429239F4900A82429 /* LzFind.h */, + B3982E3529239F4900A82429 /* BraIA64.c */, + B3982E3629239F4900A82429 /* Lzma86Dec.c */, + B3982E3729239F4900A82429 /* 7zStream.c */, + B3982E3829239F4900A82429 /* Bcj2.h */, + B3982E3929239F4900A82429 /* Delta.c */, + B3982E3A29239F4900A82429 /* 7zFile.c */, + B3982E3B29239F4900A82429 /* Bra.h */, + B3982E3C29239F4900A82429 /* 7zCrc.c */, + B3982E3D29239F4900A82429 /* Sort.h */, + B3982E3E29239F4900A82429 /* Lzma86Enc.c */, + B3982E3F29239F4A00A82429 /* CpuArch.c */, + B3982E4029239F4A00A82429 /* LzmaDec.h */, + B3982E4129239F4A00A82429 /* 7zCrcOpt.c */, + B3982E4229239F4A00A82429 /* Alloc.h */, + B3982E4329239F4A00A82429 /* 7zBuf.c */, + B3982E4429239F4A00A82429 /* LzmaLib.c */, ); - path = khronos; + path = lzma; sourceTree = ""; }; - B33942D520783CBC008DBAB4 /* APPLE */ = { + B3982E4529239F4A00A82429 /* oslib */ = { isa = PBXGroup; children = ( - B33942D620783CBC008DBAB4 /* egl.h */, - B33942D720783CBC008DBAB4 /* eglplatform.h */, - B33942D820783CBC008DBAB4 /* khrplatform.h */, + B3982E4629239F4A00A82429 /* audiobackend_pulseaudio.cpp */, + B3982E4729239F4A00A82429 /* audiobackend_sdl2.cpp */, + B3982E4829239F4A00A82429 /* audiobackend_omx.cpp */, + B3982E4929239F4A00A82429 /* oslib.h */, + B3982E4A29239F4A00A82429 /* audiobackend_coreaudio.cpp */, + B3982E4B29239F4A00A82429 /* audiostream.cpp */, + B3982E4C29239F4A00A82429 /* host_context.h */, + B3982E4D29239F4A00A82429 /* audiostream.h */, + B3982E4E29239F4A00A82429 /* oslib.cpp */, + B3982E4F29239F4A00A82429 /* audiobackend_oboe.cpp */, + B3982E5029239F4A00A82429 /* directory.h */, + B3982E5129239F4A00A82429 /* audiobackend_oss.cpp */, + B3982E5229239F4A00A82429 /* audiobackend_libao.cpp */, + B3982E5329239F4A00A82429 /* audiobackend_directsound.cpp */, + B3982E5429239F4A00A82429 /* audiobackend_null.cpp */, + B3982E5529239F4A00A82429 /* audiobackend_alsa.cpp */, ); - path = APPLE; + path = oslib; sourceTree = ""; }; - B33942D920783CBC008DBAB4 /* GLES3 */ = { + B3982E5629239F4A00A82429 /* log */ = { isa = PBXGroup; children = ( - B33942DA20783CBC008DBAB4 /* gl2ext.h */, - B33942DB20783CBC008DBAB4 /* gl3.h */, - B33942DC20783CBC008DBAB4 /* gl3platform.h */, + B3982E5729239F4A00A82429 /* ConsoleListenerNix.cpp */, + B3982E5829239F4A00A82429 /* BitSet.h */, + B3982E5929239F4A00A82429 /* ConsoleListenerWin.cpp */, + B3982E5A29239F4A00A82429 /* ConsoleListenerDroid.cpp */, + B3982E5B29239F4A00A82429 /* ConsoleListener.h */, + B3982E5C29239F4A00A82429 /* StringUtil.h */, + B3982E5D29239F4A00A82429 /* Log.h */, + B3982E5E29239F4A00A82429 /* LogManager.cpp */, + B3982E5F29239F4A00A82429 /* LogManager.h */, ); - path = GLES3; + path = log; sourceTree = ""; }; - B33942DD20783CBC008DBAB4 /* GLES2 */ = { + B3982E6029239F4A00A82429 /* khronos */ = { isa = PBXGroup; children = ( - B33942DE20783CBC008DBAB4 /* gl2ext.h */, - B33942DF20783CBC008DBAB4 /* gl2.h */, - B33942E020783CBC008DBAB4 /* gl2platform.h */, + B3982E6129239F4A00A82429 /* APPLE */, + B3982E6529239F4A00A82429 /* GLES3 */, + B3982E6929239F4A00A82429 /* GLES2 */, + B3982E6D29239F4A00A82429 /* KHR */, + B3982E6F29239F4A00A82429 /* EGL */, + B3982E7329239F4A00A82429 /* vulkan */, + B3982E8729239F4A00A82429 /* GL4 */, + B3982E8C29239F4A00A82429 /* GL3 */, + B3982E9029239F4A00A82429 /* GLES32 */, ); - path = GLES2; + path = khronos; sourceTree = ""; }; - B33942E120783CBC008DBAB4 /* KHR */ = { + B3982E6129239F4A00A82429 /* APPLE */ = { isa = PBXGroup; children = ( - B33942E220783CBC008DBAB4 /* khrplatform.h */, + B3982E6229239F4A00A82429 /* egl.h */, + B3982E6329239F4A00A82429 /* eglplatform.h */, + B3982E6429239F4A00A82429 /* khrplatform.h */, ); - path = KHR; + path = APPLE; sourceTree = ""; }; - B33942E320783CBC008DBAB4 /* EGL */ = { + B3982E6529239F4A00A82429 /* GLES3 */ = { isa = PBXGroup; children = ( - B33942E420783CBC008DBAB4 /* egl.h */, - B33942E520783CBC008DBAB4 /* eglext.h */, - B33942E620783CBC008DBAB4 /* eglplatform.h */, + B3982E6629239F4A00A82429 /* gl2ext.h */, + B3982E6729239F4A00A82429 /* gl3.h */, + B3982E6829239F4A00A82429 /* gl3platform.h */, ); - path = EGL; + path = GLES3; sourceTree = ""; }; - B33942E720783CBC008DBAB4 /* GL3 */ = { + B3982E6929239F4A00A82429 /* GLES2 */ = { isa = PBXGroup; children = ( - B33942E820783CBC008DBAB4 /* gl3w.c */, - B33942E920783CBC008DBAB4 /* gl3.h */, - B33942EA20783CBC008DBAB4 /* gl3w.h */, + B3982E6A29239F4A00A82429 /* gl2ext.h */, + B3982E6B29239F4A00A82429 /* gl2.h */, + B3982E6C29239F4A00A82429 /* gl2platform.h */, ); - path = GL3; + path = GLES2; sourceTree = ""; }; - B33942EB20783CBC008DBAB4 /* profiler */ = { + B3982E6D29239F4A00A82429 /* KHR */ = { isa = PBXGroup; children = ( - B33942EC20783CBC008DBAB4 /* profiler.cpp */, - B33942ED20783CBC008DBAB4 /* profiler.h */, + B3982E6E29239F4A00A82429 /* khrplatform.h */, ); - path = profiler; + path = KHR; sourceTree = ""; }; - B33942EE20783CBC008DBAB4 /* rend */ = { + B3982E6F29239F4A00A82429 /* EGL */ = { isa = PBXGroup; children = ( - B33942EF20783CBC008DBAB4 /* d3d11 */, - B33942F120783CBC008DBAB4 /* gles */, - B33942F620783CBC008DBAB4 /* rend.h */, - B33942F720783CBC008DBAB4 /* TexCache.h */, - B33942F820783CBC008DBAB4 /* soft */, - B33942FA20783CBC008DBAB4 /* norend */, - B33942FC20783CBC008DBAB4 /* TexCache.cpp */, + B3982E7029239F4A00A82429 /* egl.h */, + B3982E7129239F4A00A82429 /* eglext.h */, + B3982E7229239F4A00A82429 /* eglplatform.h */, ); - path = rend; + path = EGL; sourceTree = ""; }; - B33942EF20783CBC008DBAB4 /* d3d11 */ = { + B3982E7329239F4A00A82429 /* vulkan */ = { isa = PBXGroup; children = ( - B33942F020783CBC008DBAB4 /* d3d11.cpp */, + B3982E7429239F4A00A82429 /* vk_layer.h */, + B3982E7529239F4A00A82429 /* vk_icd.h */, + B3982E7629239F4A00A82429 /* vulkan_vi.h */, + B3982E7729239F4A00A82429 /* vulkan.h */, + B3982E7829239F4A00A82429 /* vk_platform.h */, + B3982E7929239F4A00A82429 /* vulkan.hpp */, + B3982E7A29239F4A00A82429 /* vulkan_fuchsia.h */, + B3982E7B29239F4A00A82429 /* vulkan_wayland.h */, + B3982E7C29239F4A00A82429 /* vulkan_win32.h */, + B3982E7D29239F4A00A82429 /* vulkan_macos.h */, + B3982E7E29239F4A00A82429 /* vulkan_xlib_xrandr.h */, + B3982E7F29239F4A00A82429 /* vulkan_xcb.h */, + B3982E8029239F4A00A82429 /* vulkan_ggp.h */, + B3982E8129239F4A00A82429 /* vulkan_xlib.h */, + B3982E8229239F4A00A82429 /* vulkan_ios.h */, + B3982E8329239F4A00A82429 /* vulkan_core.h */, + B3982E8429239F4A00A82429 /* vk_sdk_platform.h */, + B3982E8529239F4A00A82429 /* vulkan_android.h */, + B3982E8629239F4A00A82429 /* vulkan_metal.h */, ); - path = d3d11; + path = vulkan; sourceTree = ""; }; - B33942F120783CBC008DBAB4 /* gles */ = { + B3982E8729239F4A00A82429 /* GL4 */ = { isa = PBXGroup; children = ( - B33942F220783CBC008DBAB4 /* gldraw.cpp */, - B33942F320783CBC008DBAB4 /* gltex.cpp */, - B33942F420783CBC008DBAB4 /* gles.h */, - B33942F520783CBC008DBAB4 /* gles.cpp */, + B3982E8829239F4A00A82429 /* gl3w.c */, + B3982E8929239F4A00A82429 /* glext.h */, + B3982E8A29239F4A00A82429 /* glcorearb.h */, + B3982E8B29239F4A00A82429 /* gl3w.h */, ); - path = gles; + path = GL4; sourceTree = ""; }; - B33942F820783CBC008DBAB4 /* soft */ = { + B3982E8C29239F4A00A82429 /* GL3 */ = { isa = PBXGroup; children = ( - B33942F920783CBC008DBAB4 /* softrend.cpp */, + B3982E8D29239F4A00A82429 /* gl3w.c */, + B3982E8E29239F4A00A82429 /* gl3.h */, + B3982E8F29239F4A00A82429 /* gl3w.h */, ); - path = soft; + path = GL3; sourceTree = ""; }; - B33942FA20783CBC008DBAB4 /* norend */ = { + B3982E9029239F4A00A82429 /* GLES32 */ = { isa = PBXGroup; children = ( - B33942FB20783CBC008DBAB4 /* norend.cpp */, + B3982E9129239F4A00A82429 /* gl2ext.h */, + B3982E9229239F4A00A82429 /* gl32.h */, ); - path = norend; + path = GLES32; sourceTree = ""; }; - B33942FE20783CBC008DBAB4 /* windows */ = { + B3982E9329239F4A00A82429 /* profiler */ = { isa = PBXGroup; children = ( - B33942FF20783CBC008DBAB4 /* winmain.cpp */, + B3982E9429239F4A00A82429 /* profiler.cpp */, + B3982E9529239F4A00A82429 /* profiler.h */, ); - path = windows; + path = profiler; sourceTree = ""; }; - B339430020783CBC008DBAB4 /* rec-cpp */ = { + B3982E9729239F4A00A82429 /* rend */ = { isa = PBXGroup; children = ( - B339430120783CBC008DBAB4 /* rec_cpp.cpp */, + B3982E9829239F4A00A82429 /* gui_android.h */, + B3982E9929239F4A00A82429 /* gui_cheats.cpp */, + B3982E9A29239F4A00A82429 /* sorter.h */, + B3982E9B29239F4A00A82429 /* tileclip.h */, + B3982E9C29239F4A00A82429 /* mainui.h */, + B3982E9D29239F4A00A82429 /* gles */, + B3982EA829239F4A00A82429 /* gui_util.cpp */, + B3982EA929239F4A00A82429 /* CustomTexture.h */, + B3982EAA29239F4A00A82429 /* gui_android.cpp */, + B3982EAB29239F4A00A82429 /* game_scanner.h */, + B3982EAC29239F4A00A82429 /* dx9 */, + B3982EBA29239F4A00A82429 /* gui.h */, + B3982EBB29239F4A00A82429 /* TexCache.h */, + B3982EBC29239F4A00A82429 /* CustomTexture.cpp */, + B3982EBD29239F4A00A82429 /* gui.cpp */, + B3982EBE29239F4A00A82429 /* sorter.cpp */, + B3982EBF29239F4A00A82429 /* vulkan */, + B3982EE929239F4A00A82429 /* norend */, + B3982EEB29239F4A00A82429 /* TexCache.cpp */, + B3982EEC29239F4A00A82429 /* transform_matrix.h */, + B3982EED29239F4A00A82429 /* mainui.cpp */, + B3982EEE29239F4A00A82429 /* shader_util.h */, + B3982EEF29239F4A00A82429 /* osd.h */, + B3982EF029239F4A00A82429 /* gui_util.h */, + B3982EF129239F4A00A82429 /* gl4 */, + B3982EF729239F4A00A82429 /* osd.cpp */, ); - path = "rec-cpp"; + path = rend; sourceTree = ""; }; - B339430220783CBC008DBAB4 /* rec-x86 */ = { + B3982E9D29239F4A00A82429 /* gles */ = { isa = PBXGroup; children = ( - B339430320783CBD008DBAB4 /* rec_x86_il.cpp */, - B339430420783CBD008DBAB4 /* rec_x86_asm.cpp */, - B339430520783CBD008DBAB4 /* rec_x86_driver.cpp */, - B339430620783CBD008DBAB4 /* rec_lin86_asm.S */, - B339430720783CBD008DBAB4 /* rec_x86_ngen.h */, + B3982E9E29239F4A00A82429 /* glcache.h */, + B3982E9F29239F4A00A82429 /* imgui_impl_opengl3.h */, + B3982EA029239F4A00A82429 /* quad.cpp */, + B3982EA129239F4A00A82429 /* postprocess.cpp */, + B3982EA229239F4A00A82429 /* gldraw.cpp */, + B3982EA329239F4A00A82429 /* imgui_impl_opengl3.cpp */, + B3982EA429239F4A00A82429 /* postprocess.h */, + B3982EA529239F4A00A82429 /* gltex.cpp */, + B3982EA629239F4A00A82429 /* gles.h */, + B3982EA729239F4A00A82429 /* gles.cpp */, ); - path = "rec-x86"; + path = gles; sourceTree = ""; }; - B339430820783CBD008DBAB4 /* arm_emitter */ = { + B3982EAC29239F4A00A82429 /* dx9 */ = { isa = PBXGroup; children = ( - B339430920783CBD008DBAB4 /* E_VLoadStore.h */, - B339430A20783CBD008DBAB4 /* E_Parallel.h */, - B339430B20783CBD008DBAB4 /* E_Status.h */, - B339430C20783CBD008DBAB4 /* E_VRegXfer.h */, - B339430D20783CBD008DBAB4 /* H_Branches.h */, - B339430E20783CBD008DBAB4 /* E_Misc.h */, - B339430F20783CBD008DBAB4 /* E_Branches.h */, - B339431020783CBD008DBAB4 /* H_psuedo.h */, - B339431120783CBD008DBAB4 /* arm_coding.h */, - B339431220783CBD008DBAB4 /* arm_emitter.h */, - B339431320783CBD008DBAB4 /* E_Special.h */, - B339431420783CBD008DBAB4 /* E_LoadStore.h */, - B339431520783CBD008DBAB4 /* arm_disasm.h */, - B339431620783CBD008DBAB4 /* E_Multiply.h */, - B339431720783CBD008DBAB4 /* E_VDataOp.h */, - B339431820783CBD008DBAB4 /* H_state.h */, - B339431920783CBD008DBAB4 /* E_DataOp.h */, - B339431A20783CBD008DBAB4 /* H_LoadStore.h */, - B339431B20783CBD008DBAB4 /* H_fp.h */, - B339431C20783CBD008DBAB4 /* E_Extend.h */, - B339431D20783CBD008DBAB4 /* arm_registers.h */, + B3982EAD29239F4A00A82429 /* d3d_overlay.h */, + B3982EAE29239F4A00A82429 /* dxcontext.cpp */, + B3982EAF29239F4A00A82429 /* d3d_shaders.h */, + B3982EB029239F4A00A82429 /* d3d_renderer.h */, + B3982EB129239F4A00A82429 /* d3d_texture.h */, + B3982EB229239F4A00A82429 /* dxcontext.h */, + B3982EB329239F4A00A82429 /* comptr.h */, + B3982EB429239F4A00A82429 /* imgui_impl_dx9.cpp */, + B3982EB529239F4A00A82429 /* d3d_overlay.cpp */, + B3982EB629239F4A00A82429 /* d3d_renderer.cpp */, + B3982EB729239F4A00A82429 /* d3d_texture.cpp */, + B3982EB829239F4A00A82429 /* imgui_impl_dx9.h */, + B3982EB929239F4A00A82429 /* d3d_shaders.cpp */, ); - path = arm_emitter; + path = dx9; sourceTree = ""; }; - B339431E20783CBD008DBAB4 /* linux-dist */ = { + B3982EBF29239F4A00A82429 /* vulkan */ = { isa = PBXGroup; children = ( - B339431F20783CBD008DBAB4 /* main.h */, - B339432020783CBD008DBAB4 /* x11.cpp */, - B339432120783CBD008DBAB4 /* joystick.h */, - B339432220783CBD008DBAB4 /* x11.h */, - B339432320783CBD008DBAB4 /* evdev.h */, - B339432420783CBD008DBAB4 /* joystick.cpp */, - B339432520783CBD008DBAB4 /* main.cpp */, - B339432620783CBD008DBAB4 /* evdev.cpp */, + B3982EC029239F4A00A82429 /* utils.h */, + B3982EC129239F4A00A82429 /* vulkan.h */, + B3982EC229239F4A00A82429 /* overlay.cpp */, + B3982EC329239F4A00A82429 /* compiler.h */, + B3982EC429239F4A00A82429 /* commandpool.h */, + B3982EC529239F4A00A82429 /* compiler.cpp */, + B3982EC629239F4A00A82429 /* quad.h */, + B3982EC729239F4A00A82429 /* vk_context_lr.h */, + B3982EC829239F4A00A82429 /* vulkan_context.h */, + B3982EC929239F4A00A82429 /* overlay.h */, + B3982ECA29239F4A00A82429 /* texture.cpp */, + B3982ECB29239F4A00A82429 /* quad.cpp */, + B3982ECC29239F4A00A82429 /* shaders.h */, + B3982ECD29239F4A00A82429 /* pipeline.cpp */, + B3982ECE29239F4A00A82429 /* shaders.cpp */, + B3982ECF29239F4A00A82429 /* oit */, + B3982EDA29239F4A00A82429 /* buffer.cpp */, + B3982EDB29239F4A00A82429 /* buffer.h */, + B3982EDC29239F4A00A82429 /* vmallocator.cpp */, + B3982EDD29239F4A00A82429 /* vk_mem_alloc.h */, + B3982EDE29239F4A00A82429 /* vk_context_lr.cpp */, + B3982EDF29239F4A00A82429 /* drawer.cpp */, + B3982EE029239F4A00A82429 /* vulkan_context.cpp */, + B3982EE129239F4A00A82429 /* vmallocator.h */, + B3982EE229239F4A00A82429 /* pipeline.h */, + B3982EE329239F4A00A82429 /* texture.h */, + B3982EE429239F4A00A82429 /* imgui_impl_vulkan.cpp */, + B3982EE529239F4A00A82429 /* vulkan_renderer.h */, + B3982EE629239F4A00A82429 /* vulkan_renderer.cpp */, + B3982EE729239F4A00A82429 /* imgui_impl_vulkan.h */, + B3982EE829239F4A00A82429 /* drawer.h */, ); - path = "linux-dist"; + path = vulkan; sourceTree = ""; }; - B339432720783CBD008DBAB4 /* reios */ = { + B3982ECF29239F4A00A82429 /* oit */ = { isa = PBXGroup; children = ( - B339432820783CBD008DBAB4 /* reios.h */, - B339432920783CBD008DBAB4 /* descrambl.cpp */, - B339432A20783CBD008DBAB4 /* reios_elf.cpp */, - B339432B20783CBD008DBAB4 /* reios.cpp */, - B339432C20783CBD008DBAB4 /* reios_elf.h */, - B339432D20783CBD008DBAB4 /* descrambl.h */, - B339432E20783CBD008DBAB4 /* gdrom_hle.h */, - B339432F20783CBD008DBAB4 /* gdrom_hle.cpp */, + B3982ED029239F4A00A82429 /* oit_shaders.cpp */, + B3982ED129239F4A00A82429 /* oit_pipeline.cpp */, + B3982ED229239F4A00A82429 /* oit_renderpass.cpp */, + B3982ED329239F4A00A82429 /* oit_renderpass.h */, + B3982ED429239F4A00A82429 /* oit_drawer.cpp */, + B3982ED529239F4A00A82429 /* oit_shaders.h */, + B3982ED629239F4A00A82429 /* oit_renderer.cpp */, + B3982ED729239F4A00A82429 /* oit_drawer.h */, + B3982ED829239F4A00A82429 /* oit_buffer.h */, + B3982ED929239F4A00A82429 /* oit_pipeline.h */, ); - path = reios; + path = oit; sourceTree = ""; }; - B339433120783CBD008DBAB4 /* shell */ = { + B3982EE929239F4A00A82429 /* norend */ = { isa = PBXGroup; children = ( - B339439920783CC0008DBAB4 /* LICENSE */, - B339446620783CC1008DBAB4 /* README.md */, - B339448420783CC1008DBAB4 /* android */, - B339433220783CBD008DBAB4 /* apple */, - B339439A20783CC0008DBAB4 /* cmake */, - B339446720783CC1008DBAB4 /* emscripten */, - B339439E20783CC0008DBAB4 /* imgs */, - B339446C20783CC1008DBAB4 /* linux */, - B33943A420783CC0008DBAB4 /* linux-deps */, - B339446920783CC1008DBAB4 /* mac86 */, - B339455720783CC2008DBAB4 /* nacl */, - B33943A220783CC0008DBAB4 /* nacl_lin */, + B3982EEA29239F4A00A82429 /* norend.cpp */, ); - path = shell; + path = norend; sourceTree = ""; }; - B339433220783CBD008DBAB4 /* apple */ = { + B3982EF129239F4A00A82429 /* gl4 */ = { isa = PBXGroup; children = ( - B339433320783CBD008DBAB4 /* emulator-osx */, - B339434320783CBD008DBAB4 /* emulator-ios */, - B339439820783CC0008DBAB4 /* flycast.xcworkspace */, + B3982EF229239F4A00A82429 /* gldraw.cpp */, + B3982EF329239F4A00A82429 /* abuffer.cpp */, + B3982EF429239F4A00A82429 /* gl4.h */, + B3982EF529239F4A00A82429 /* gles.cpp */, + B3982EF629239F4A00A82429 /* glsl.h */, ); - path = apple; + path = gl4; sourceTree = ""; }; - B339433320783CBD008DBAB4 /* emulator-osx */ = { + B3982EF829239F4A00A82429 /* windows */ = { isa = PBXGroup; children = ( - B339433420783CBD008DBAB4 /* emulator-osxTests */, - B339433720783CBD008DBAB4 /* emulator-osx */, + B3982EF929239F4A00A82429 /* xinput_gamepad.h */, + B3982EFA29239F4A00A82429 /* win_keyboard.h */, + B3982EFB29239F4A00A82429 /* unwind_info.cpp */, + B3982EFC29239F4A00A82429 /* rawinput.cpp */, + B3982EFD29239F4A00A82429 /* winmain.cpp */, + B3982EFE29239F4A00A82429 /* fault_handler.cpp */, + B3982EFF29239F4A00A82429 /* rawinput.h */, + B3982F0029239F4A00A82429 /* win_vmem.cpp */, ); - path = "emulator-osx"; + path = windows; sourceTree = ""; }; - B339433420783CBD008DBAB4 /* emulator-osxTests */ = { + B3982F0129239F4A00A82429 /* rec-cpp */ = { isa = PBXGroup; children = ( - B339433520783CBD008DBAB4 /* emulator_osxTests.swift */, - B339433620783CBD008DBAB4 /* Info.plist */, + B3982F0229239F4A00A82429 /* rec_cpp.cpp */, ); - path = "emulator-osxTests"; + path = "rec-cpp"; sourceTree = ""; }; - B339433720783CBD008DBAB4 /* emulator-osx */ = { + B3982F0329239F4A00A82429 /* rec-x86 */ = { isa = PBXGroup; children = ( - B339433820783CBD008DBAB4 /* EmuGLView.swift */, - B339433920783CBD008DBAB4 /* osx-main.mm */, - B339433A20783CBD008DBAB4 /* MainMenu.xib */, - B339433C20783CBD008DBAB4 /* emulator-osx-Bridging-Header.h */, - B339433D20783CBD008DBAB4 /* Images.xcassets */, - B339433E20783CBD008DBAB4 /* AppDelegate.swift */, - B339433F20783CBD008DBAB4 /* Info.plist */, + B3982F0429239F4A00A82429 /* rec_x86.h */, + B3982F0529239F4A00A82429 /* x86_regalloc.h */, + B3982F0629239F4A00A82429 /* rec_x86.cpp */, + B3982F0729239F4A00A82429 /* x86_ops.cpp */, ); - path = "emulator-osx"; + path = "rec-x86"; sourceTree = ""; }; - B339434320783CBD008DBAB4 /* emulator-ios */ = { + B3982F0829239F4A00A82429 /* linux-dist */ = { isa = PBXGroup; children = ( - B339434420783CBD008DBAB4 /* flycast-ios-Prefix.pch */, - B339434920783CBD008DBAB4 /* flycast-tvos */, - B339435320783CBD008DBAB4 /* flycast-ios */, - B339435520783CBD008DBAB4 /* emulator */, + B3982F0929239F4A00A82429 /* x11_keyboard.h */, + B3982F0A29239F4A00A82429 /* x11.cpp */, + B3982F0B29239F4A00A82429 /* dispmanx.cpp */, + B3982F0C29239F4A00A82429 /* icon.h */, + B3982F0D29239F4A00A82429 /* joystick.h */, + B3982F0E29239F4A00A82429 /* x11.h */, + B3982F0F29239F4A00A82429 /* dispmanx.h */, + B3982F1029239F4A00A82429 /* evdev.h */, + B3982F1129239F4A00A82429 /* joystick.cpp */, + B3982F1229239F4A00A82429 /* evdev_gamepad.h */, + B3982F1329239F4A00A82429 /* main.cpp */, + B3982F1429239F4A00A82429 /* evdev.cpp */, ); - path = "emulator-ios"; + path = "linux-dist"; sourceTree = ""; }; - B339434920783CBD008DBAB4 /* flycast-tvos */ = { - isa = PBXGroup; - children = ( - B339434A20783CBD008DBAB4 /* AppDelegate.h */, - B339435020783CBD008DBAB4 /* AppDelegate.m */, - B339434B20783CBD008DBAB4 /* Assets.xcassets */, - B339435120783CBD008DBAB4 /* Info.plist */, - B339434F20783CBD008DBAB4 /* main.m */, - B339434D20783CBD008DBAB4 /* Main.storyboard */, - B339435220783CBD008DBAB4 /* ViewController.h */, - B339434C20783CBD008DBAB4 /* ViewController.m */, - ); - path = "flycast-tvos"; - sourceTree = ""; - }; - B339435320783CBD008DBAB4 /* flycast-ios */ = { - isa = PBXGroup; - children = ( - B339435420783CBD008DBAB4 /* Images.xcassets */, - ); - path = "flycast-ios"; - sourceTree = ""; - }; - B339435520783CBD008DBAB4 /* emulator */ = { - isa = PBXGroup; - children = ( - B339437D20783CC0008DBAB4 /* flycast.entitlements */, - B339438920783CC0008DBAB4 /* AboutViewController.h */, - B339435920783CBD008DBAB4 /* AppDelegate.h */, - B339436020783CBD008DBAB4 /* BrowserTableViewController.h */, - B339439620783CC0008DBAB4 /* CloudVMUViewController.h */, - B339438020783CC0008DBAB4 /* DiskViewCell.h */, - B339435C20783CBD008DBAB4 /* EmulatorView.h */, - B339437F20783CC0008DBAB4 /* EmulatorViewController.h */, - B339435E20783CBD008DBAB4 /* InputViewController.h */, - B339438F20783CC0008DBAB4 /* PadViewController.h */, - B339435B20783CBD008DBAB4 /* PathsViewController.h */, - B339438C20783CC0008DBAB4 /* SettingsViewController.h */, - B339438E20783CC0008DBAB4 /* SideDrawerViewController.h */, - B339437A20783CC0008DBAB4 /* SWRevealViewController.h */, - B339435D20783CBD008DBAB4 /* AboutViewController.m */, - B339438D20783CC0008DBAB4 /* AppDelegate.m */, - B339438320783CC0008DBAB4 /* BrowserTableViewController.m */, - B339437E20783CC0008DBAB4 /* CloudVMUViewController.m */, - B339435720783CBD008DBAB4 /* DiskViewCell.m */, - B339438420783CC0008DBAB4 /* InputViewController.m */, - B339438120783CC0008DBAB4 /* main.m */, - B339437B20783CC0008DBAB4 /* PadViewController.m */, - B339438A20783CC0008DBAB4 /* PathsViewController.m */, - B339435820783CBD008DBAB4 /* SettingsViewController.m */, - B339437C20783CC0008DBAB4 /* SideDrawerViewController.m */, - B339439020783CC0008DBAB4 /* SWRevealViewController.m */, - B339435F20783CBD008DBAB4 /* EmulatorView.mm */, - B339435620783CBD008DBAB4 /* EmulatorViewController.mm */, - B339438220783CC0008DBAB4 /* ios_main.mm */, - B339436120783CBE008DBAB4 /* flycast-ios-Prefix.pch */, - B339438B20783CC0008DBAB4 /* flycast-ios-Info.plist */, - B339439720783CC0008DBAB4 /* MainStoryboard.storyboard */, - B339438520783CC0008DBAB4 /* Images.xcassets */, - B339435A20783CBD008DBAB4 /* PadViewController.xib */, - B339439120783CC0008DBAB4 /* iCade-iOS */, - B339436220783CBE008DBAB4 /* Images */, - B339438620783CC0008DBAB4 /* Shaders */, + B3982F1529239F4A00A82429 /* debug */ = { + isa = PBXGroup; + children = ( + B3982F1629239F4A00A82429 /* gdb_server.h */, + B3982F1729239F4A00A82429 /* debug_agent.h */, + B3982F1829239F4A00A82429 /* gdb_server.cpp */, ); - path = emulator; + path = debug; sourceTree = ""; }; - B339436220783CBE008DBAB4 /* Images */ = { + B3982F1929239F4A00A82429 /* reios */ = { isa = PBXGroup; children = ( - B339436320783CBE008DBAB4 /* RTrigger.png */, - B339436420783CBE008DBAB4 /* Start@2x.png */, - B339436520783CBE008DBAB4 /* DPad@2x.png */, - B339436620783CBE008DBAB4 /* LTrigger.png */, - B339436720783CBE008DBAB4 /* menuicon.png */, - B339436820783CBF008DBAB4 /* 210-octocat@2x.png */, - B339436920783CBF008DBAB4 /* 210-twitterbird.png */, - B339436A20783CBF008DBAB4 /* disk_unknown.png */, - B339436B20783CBF008DBAB4 /* ABXYPad@2x.png */, - B339436C20783CBF008DBAB4 /* 210-twitterbird@2x.png */, - B339436D20783CBF008DBAB4 /* LTrigger@2x.png */, - B339436E20783CBF008DBAB4 /* DPad.png */, - B339436F20783CC0008DBAB4 /* JoystickBackground@2x.png */, - B339437020783CC0008DBAB4 /* JoystickButton.png */, - B339437120783CC0008DBAB4 /* menuicon@2x.png */, - B339437220783CC0008DBAB4 /* 210-octocat.png */, - B339437320783CC0008DBAB4 /* ABXYPad.png */, - B339437420783CC0008DBAB4 /* RTrigger@2x.png */, - B339437520783CC0008DBAB4 /* JoystickBackground.png */, - B339437620783CC0008DBAB4 /* Start.png */, - B339437720783CC0008DBAB4 /* menuback.png */, - B339437820783CC0008DBAB4 /* JoystickButton@2x.png */, - B339437920783CC0008DBAB4 /* menuback@2x.png */, + B3982F1A29239F4A00A82429 /* reios.h */, + B3982F1B29239F4A00A82429 /* descrambl.cpp */, + B3982F1C29239F4A00A82429 /* reios_elf.cpp */, + B3982F1D29239F4A00A82429 /* iso9660.h */, + B3982F1E29239F4A00A82429 /* reios.cpp */, + B3982F1F29239F4A00A82429 /* reios_elf.h */, + B3982F2029239F4A00A82429 /* descrambl.h */, + B3982F2129239F4A00A82429 /* font.h */, + B3982F2229239F4A00A82429 /* gdrom_hle.h */, + B3982F2329239F4A00A82429 /* gdrom_hle.cpp */, ); - path = Images; + path = reios; sourceTree = ""; }; - B339438620783CC0008DBAB4 /* Shaders */ = { + B3982F2529239F4A00A82429 /* shell */ = { isa = PBXGroup; children = ( - B339438720783CC0008DBAB4 /* Shader.fsh */, - B339438820783CC0008DBAB4 /* Shader.vsh */, + B3982F2629239F4A00A82429 /* apple */, + B3982F5029239F4A00A82429 /* cmake */, + B3982F5329239F4A00A82429 /* imgs */, + B3982F5829239F4A00A82429 /* libretro */, + B3982F6629239F4A00A82429 /* linux */, + B3982F7229239F4A00A82429 /* switch */, + B3982F7A29239F4A00A82429 /* android-studio */, + B3982FD129239F4B00A82429 /* windows */, ); - path = Shaders; + path = shell; sourceTree = ""; }; - B339439120783CC0008DBAB4 /* iCade-iOS */ = { + B3982F2629239F4A00A82429 /* apple */ = { isa = PBXGroup; children = ( - B339439220783CC0008DBAB4 /* iCadeReaderView.m */, - B339439320783CC0008DBAB4 /* LICENSE */, - B339439420783CC0008DBAB4 /* iCadeReaderView.h */, - B339439520783CC0008DBAB4 /* iCadeState.h */, + B3982F2729239F4A00A82429 /* emulator-osx */, + B3982F3329239F4A00A82429 /* emulator-ios */, + B3982F4F29239F4A00A82429 /* sdl2.rb */, ); - path = "iCade-iOS"; + path = apple; sourceTree = ""; }; - B339439A20783CC0008DBAB4 /* cmake */ = { + B3982F2729239F4A00A82429 /* emulator-osx */ = { isa = PBXGroup; children = ( - B339439B20783CC0008DBAB4 /* CMakeLists.txt */, - B339439C20783CC0008DBAB4 /* toolchains */, + B3982F2829239F4A00A82429 /* MacOSXBundleInfo.plist.in */, + B3982F2929239F4A00A82429 /* emulator-osx */, ); - path = cmake; + path = "emulator-osx"; sourceTree = ""; }; - B339439C20783CC0008DBAB4 /* toolchains */ = { + B3982F2929239F4A00A82429 /* emulator-osx */ = { isa = PBXGroup; children = ( - B339439D20783CC0008DBAB4 /* Linux-x86.cmake */, + B3982F2A29239F4A00A82429 /* EmuGLView.swift */, + B3982F2B29239F4A00A82429 /* osx-main.mm */, + B3982F2C29239F4A00A82429 /* osx_keyboard.h */, + B3982F2D29239F4A00A82429 /* MainMenu.xib */, + B3982F2F29239F4A00A82429 /* emulator-osx-Bridging-Header.h */, + B3982F3029239F4A00A82429 /* Images.xcassets */, + B3982F3129239F4A00A82429 /* AppDelegate.swift */, + B3982F3229239F4A00A82429 /* osx_gamepad.h */, ); - path = toolchains; + path = "emulator-osx"; sourceTree = ""; }; - B339439E20783CC0008DBAB4 /* imgs */ = { + B3982F3329239F4A00A82429 /* emulator-ios */ = { isa = PBXGroup; children = ( - B339439F20783CC0008DBAB4 /* icon.png */, - B33943A020783CC0008DBAB4 /* 3675.png */, + B3982F3429239F4A00A82429 /* plist.in */, + B3982F3529239F4A00A82429 /* AltKit */, + B3982F3629239F4A00A82429 /* emulator */, ); - path = imgs; + path = "emulator-ios"; sourceTree = ""; }; - B33943A220783CC0008DBAB4 /* nacl_lin */ = { + B3982F3629239F4A00A82429 /* emulator */ = { isa = PBXGroup; children = ( - B33943A320783CC0008DBAB4 /* Makefile */, + B3982F3F29239F4A00A82429 /* flycast.entitlements */, + B3982F3829239F4A00A82429 /* AppDelegate.h */, + B3982F3A29239F4A00A82429 /* EmulatorView.h */, + B3982F4229239F4A00A82429 /* FlycastViewController.h */, + B3982F4E29239F4A00A82429 /* ios_gamepad.h */, + B3982F4129239F4A00A82429 /* ios_keyboard.h */, + B3982F3D29239F4A00A82429 /* ios_mouse.h */, + B3982F4629239F4A00A82429 /* PadViewController.h */, + B3982F4029239F4A00A82429 /* main.m */, + B3982F4529239F4A00A82429 /* AppDelegate.mm */, + B3982F3B29239F4A00A82429 /* EmulatorView.mm */, + B3982F3E29239F4A00A82429 /* FlycastViewController.mm */, + B3982F4329239F4A00A82429 /* ios_main.mm */, + B3982F3C29239F4A00A82429 /* PadViewController.mm */, + B3982F4729239F4A00A82429 /* flycast-ios-Prefix.pch */, + B3982F4D29239F4A00A82429 /* FlycastStoryboard.storyboard */, + B3982F3729239F4A00A82429 /* LaunchScreen.storyboard */, + B3982F4429239F4A00A82429 /* Images.xcassets */, + B3982F3929239F4A00A82429 /* PadViewController.xib */, + B3982F4829239F4A00A82429 /* iCade-iOS */, ); - path = nacl_lin; + path = emulator; sourceTree = ""; }; - B33943A420783CC0008DBAB4 /* linux-deps */ = { + B3982F4829239F4A00A82429 /* iCade-iOS */ = { isa = PBXGroup; children = ( - B33943A520783CC0008DBAB4 /* include */, - B339445D20783CC1008DBAB4 /* lib */, + B3982F4929239F4A00A82429 /* iCadeReaderView.m */, + B3982F4A29239F4A00A82429 /* LICENSE */, + B3982F4B29239F4A00A82429 /* iCadeReaderView.h */, + B3982F4C29239F4A00A82429 /* iCadeState.h */, ); - path = "linux-deps"; + path = "iCade-iOS"; sourceTree = ""; }; - B33943A520783CC0008DBAB4 /* include */ = { + B3982F5029239F4A00A82429 /* cmake */ = { isa = PBXGroup; children = ( - B33943A620783CC0008DBAB4 /* X11 */, - B339443720783CC1008DBAB4 /* alsa */, + B3982F5129239F4A00A82429 /* FindSDL2.cmake */, + B3982F5229239F4A00A82429 /* FindMiniUPnPc.cmake */, ); - path = include; + path = cmake; sourceTree = ""; }; - B33943A620783CC0008DBAB4 /* X11 */ = { - isa = PBXGroup; - children = ( - B33943A720783CC0008DBAB4 /* DECkeysym.h */, - B33943A820783CC0008DBAB4 /* Xos_r.h */, - B33943A920783CC0008DBAB4 /* Xutil.h */, - B33943AA20783CC0008DBAB4 /* bitmaps */, - B339440020783CC1008DBAB4 /* Xresource.h */, - B339440120783CC1008DBAB4 /* Xmd.h */, - B339440220783CC1008DBAB4 /* Xdmcp.h */, - B339440320783CC1008DBAB4 /* Xauth.h */, - B339440420783CC1008DBAB4 /* ap_keysym.h */, - B339440520783CC1008DBAB4 /* Xatom.h */, - B339440620783CC1008DBAB4 /* Xtrans */, - B339440F20783CC1008DBAB4 /* Xos.h */, - B339441020783CC1008DBAB4 /* Xlocale.h */, - B339441120783CC1008DBAB4 /* ImUtil.h */, - B339441220783CC1008DBAB4 /* Xarch.h */, - B339441320783CC1008DBAB4 /* Xlibint.h */, - B339441420783CC1008DBAB4 /* Xpoll.h */, - B339441520783CC1008DBAB4 /* Xlib.h */, - B339441620783CC1008DBAB4 /* cursorfont.h */, - B339441720783CC1008DBAB4 /* Xproto.h */, - B339441820783CC1008DBAB4 /* XWDFile.h */, - B339441920783CC1008DBAB4 /* extensions */, - B339442320783CC1008DBAB4 /* Xalloca.h */, - B339442420783CC1008DBAB4 /* Sunkeysym.h */, - B339442520783CC1008DBAB4 /* Xfuncproto.h */, - B339442620783CC1008DBAB4 /* Xwindows.h */, - B339442720783CC1008DBAB4 /* keysymdef.h */, - B339442820783CC1008DBAB4 /* XKBlib.h */, - B339442920783CC1008DBAB4 /* Xthreads.h */, - B339442A20783CC1008DBAB4 /* Xdefs.h */, - B339442B20783CC1008DBAB4 /* HPkeysym.h */, - B339442C20783CC1008DBAB4 /* Xregion.h */, - B339442D20783CC1008DBAB4 /* Xosdefs.h */, - B339442E20783CC1008DBAB4 /* keysym.h */, - B339442F20783CC1008DBAB4 /* Xwinsock.h */, - B339443020783CC1008DBAB4 /* XF86keysym.h */, - B339443120783CC1008DBAB4 /* Xprotostr.h */, - B339443220783CC1008DBAB4 /* Xfuncs.h */, - B339443320783CC1008DBAB4 /* X.h */, - B339443420783CC1008DBAB4 /* Xw32defs.h */, - B339443520783CC1008DBAB4 /* XlibConf.h */, - B339443620783CC1008DBAB4 /* Xcms.h */, - ); - path = X11; - sourceTree = ""; - }; - B33943AA20783CC0008DBAB4 /* bitmaps */ = { - isa = PBXGroup; - children = ( - B33943AB20783CC0008DBAB4 /* Right */, - B33943AC20783CC0008DBAB4 /* Dashes */, - B33943AD20783CC0008DBAB4 /* gray */, - B33943AE20783CC0008DBAB4 /* wide_weave */, - B33943AF20783CC0008DBAB4 /* cross_weave */, - B33943B020783CC0008DBAB4 /* xfd_icon */, - B33943B120783CC0008DBAB4 /* flipped_gray */, - B33943B220783CC0008DBAB4 /* stipple */, - B33943B320783CC0008DBAB4 /* rdblarrow */, - B33943B420783CC0008DBAB4 /* tie_fighter */, - B33943B520783CC0008DBAB4 /* cntr_ptrmsk */, - B33943B620783CC0008DBAB4 /* starMask */, - B33943B720783CC0008DBAB4 /* letters */, - B33943B820783CC0008DBAB4 /* grid16 */, - B33943B920783CC0008DBAB4 /* calculator */, - B33943BA20783CC0008DBAB4 /* dot */, - B33943BB20783CC0008DBAB4 /* Excl */, - B33943BC20783CC0008DBAB4 /* wingdogs */, - B33943BD20783CC0008DBAB4 /* mailempty */, - B33943BE20783CC0008DBAB4 /* xlogo64 */, - B33943BF20783CC0008DBAB4 /* target */, - B33943C020783CC0008DBAB4 /* gray1 */, - B33943C120783CC0008DBAB4 /* dropbar8 */, - B33943C220783CC0008DBAB4 /* black6 */, - B33943C320783CC0008DBAB4 /* Term */, - B33943C420783CC0008DBAB4 /* left_ptrmsk */, - B33943C520783CC0008DBAB4 /* dropbar7 */, - B33943C620783CC0008DBAB4 /* dimple3 */, - B33943C720783CC0008DBAB4 /* Left */, - B33943C820783CC0008DBAB4 /* weird_size */, - B33943C920783CC0008DBAB4 /* ldblarrow */, - B33943CA20783CC0008DBAB4 /* terminal */, - B33943CB20783CC0008DBAB4 /* escherknot */, - B33943CC20783CC0008DBAB4 /* root_weave */, - B33943CD20783CC0008DBAB4 /* RotateLeft */, - B33943CE20783CC0008DBAB4 /* light_gray */, - B33943CF20783CC0008DBAB4 /* grid8 */, - B33943D020783CC0008DBAB4 /* 1x1 */, - B33943D120783CC0008DBAB4 /* menu12 */, - B33943D220783CC0008DBAB4 /* mailfull */, - B33943D320783CC0008DBAB4 /* scales */, - B33943D420783CC0008DBAB4 /* noletters */, - B33943D520783CC0008DBAB4 /* RotateRight */, - B33943D620783CC0008DBAB4 /* FlipHoriz */, - B33943D720783CC0008DBAB4 /* flagdown */, - B33943D820783CC0008DBAB4 /* star */, - B33943D920783CC0008DBAB4 /* box6 */, - B33943DA20783CC0008DBAB4 /* Up */, - B33943DB20783CC1008DBAB4 /* vlines3 */, - B33943DC20783CC1008DBAB4 /* mailemptymsk */, - B33943DD20783CC1008DBAB4 /* left_ptr */, - B33943DE20783CC1008DBAB4 /* xsnow */, - B33943DF20783CC1008DBAB4 /* menu6 */, - B33943E020783CC1008DBAB4 /* vlines2 */, - B33943E120783CC1008DBAB4 /* menu8 */, - B33943E220783CC1008DBAB4 /* 2x2 */, - B33943E320783CC1008DBAB4 /* xlogo16 */, - B33943E420783CC1008DBAB4 /* Fold */, - B33943E520783CC1008DBAB4 /* xlogo11 */, - B33943E620783CC1008DBAB4 /* sipb */, - B33943E720783CC1008DBAB4 /* Down */, - B33943E820783CC1008DBAB4 /* hlines3 */, - B33943E920783CC1008DBAB4 /* plaid */, - B33943EA20783CC1008DBAB4 /* cntr_ptr */, - B33943EB20783CC1008DBAB4 /* right_ptr */, - B33943EC20783CC1008DBAB4 /* FlipVert */, - B33943ED20783CC1008DBAB4 /* gray3 */, - B33943EE20783CC1008DBAB4 /* icon */, - B33943EF20783CC1008DBAB4 /* xlogo32 */, - B33943F020783CC1008DBAB4 /* hlines2 */, - B33943F120783CC1008DBAB4 /* menu10 */, - B33943F220783CC1008DBAB4 /* black */, - B33943F320783CC1008DBAB4 /* mensetmanus */, - B33943F420783CC1008DBAB4 /* grid4 */, - B33943F520783CC1008DBAB4 /* opendotMask */, - B33943F620783CC1008DBAB4 /* opendot */, - B33943F720783CC1008DBAB4 /* right_ptrmsk */, - B33943F820783CC1008DBAB4 /* mailfullmsk */, - B33943F920783CC1008DBAB4 /* menu16 */, - B33943FA20783CC1008DBAB4 /* woman */, - B33943FB20783CC1008DBAB4 /* flagup */, - B33943FC20783CC1008DBAB4 /* dimple1 */, - B33943FD20783CC1008DBAB4 /* grid2 */, - B33943FE20783CC1008DBAB4 /* boxes */, - B33943FF20783CC1008DBAB4 /* keyboard16 */, - ); - path = bitmaps; - sourceTree = ""; - }; - B339440620783CC1008DBAB4 /* Xtrans */ = { - isa = PBXGroup; - children = ( - B339440720783CC1008DBAB4 /* Xtranstli.c */, - B339440820783CC1008DBAB4 /* Xtranssock.c */, - B339440920783CC1008DBAB4 /* transport.c */, - B339440A20783CC1008DBAB4 /* Xtrans.h */, - B339440B20783CC1008DBAB4 /* Xtranslcl.c */, - B339440C20783CC1008DBAB4 /* Xtransint.h */, - B339440D20783CC1008DBAB4 /* Xtransutil.c */, - B339440E20783CC1008DBAB4 /* Xtrans.c */, - ); - path = Xtrans; - sourceTree = ""; - }; - B339441920783CC1008DBAB4 /* extensions */ = { - isa = PBXGroup; - children = ( - B339441A20783CC1008DBAB4 /* XKBsrv.h */, - B339441B20783CC1008DBAB4 /* XKBproto.h */, - B339441C20783CC1008DBAB4 /* XKB.h */, - B339441D20783CC1008DBAB4 /* XI2proto.h */, - B339441E20783CC1008DBAB4 /* XIproto.h */, - B339441F20783CC1008DBAB4 /* XI.h */, - B339442020783CC1008DBAB4 /* XKBgeom.h */, - B339442120783CC1008DBAB4 /* XI2.h */, - B339442220783CC1008DBAB4 /* XKBstr.h */, - ); - path = extensions; - sourceTree = ""; - }; - B339443720783CC1008DBAB4 /* alsa */ = { - isa = PBXGroup; - children = ( - B339443820783CC1008DBAB4 /* seq_event.h */, - B339443920783CC1008DBAB4 /* error.h */, - B339443A20783CC1008DBAB4 /* pcm_ioplug.h */, - B339443B20783CC1008DBAB4 /* control_external.h */, - B339443C20783CC1008DBAB4 /* input.h */, - B339443D20783CC1008DBAB4 /* control.h */, - B339443E20783CC1008DBAB4 /* version.h */, - B339443F20783CC1008DBAB4 /* seq.h */, - B339444020783CC1008DBAB4 /* pcm_external.h */, - B339444120783CC1008DBAB4 /* alisp.h */, - B339444220783CC1008DBAB4 /* iatomic.h */, - B339444320783CC1008DBAB4 /* global.h */, - B339444420783CC1008DBAB4 /* asoundlib.h */, - B339444520783CC1008DBAB4 /* conf.h */, - B339444620783CC1008DBAB4 /* seqmid.h */, - B339444720783CC1008DBAB4 /* pcm_rate.h */, - B339444820783CC1008DBAB4 /* seq_midi_event.h */, - B339444920783CC1008DBAB4 /* output.h */, - B339444A20783CC1008DBAB4 /* timer.h */, - B339444B20783CC1008DBAB4 /* mixer.h */, - B339444C20783CC1008DBAB4 /* mixer_abst.h */, - B339444D20783CC1008DBAB4 /* rawmidi.h */, - B339444E20783CC1008DBAB4 /* pcm.h */, - B339444F20783CC1008DBAB4 /* use-case.h */, - B339445020783CC1008DBAB4 /* hwdep.h */, - B339445120783CC1008DBAB4 /* asoundef.h */, - B339445220783CC1008DBAB4 /* pcm_old.h */, - B339445320783CC1008DBAB4 /* pcm_extplug.h */, - B339445420783CC1008DBAB4 /* sound */, - B339445C20783CC1008DBAB4 /* pcm_plugin.h */, + B3982F5329239F4A00A82429 /* imgs */ = { + isa = PBXGroup; + children = ( + B3982F5429239F4A00A82429 /* screenshot1.png */, + B3982F5529239F4A00A82429 /* screenshot2.png */, + B3982F5629239F4A00A82429 /* screenshot3.png */, + B3982F5729239F4A00A82429 /* screenshot4.png */, ); - path = alsa; + path = imgs; sourceTree = ""; }; - B339445420783CC1008DBAB4 /* sound */ = { + B3982F5829239F4A00A82429 /* libretro */ = { isa = PBXGroup; children = ( - B339445520783CC1008DBAB4 /* sb16_csp.h */, - B339445620783CC1008DBAB4 /* sscape_ioctl.h */, - B339445720783CC1008DBAB4 /* type_compat.h */, - B339445820783CC1008DBAB4 /* emu10k1.h */, - B339445920783CC1008DBAB4 /* asound_fm.h */, - B339445A20783CC1008DBAB4 /* hdspm.h */, - B339445B20783CC1008DBAB4 /* hdsp.h */, + B3982F5B29239F4A00A82429 /* audiostream.cpp */, + B3982F6129239F4A00A82429 /* libretro.cpp */, + B3982F6429239F4A00A82429 /* LogManager.cpp */, + B3982F5E29239F4A00A82429 /* option.cpp */, + B3982F5D29239F4A00A82429 /* oslib.cpp */, + B3982F6229239F4A00A82429 /* vmu_xhair.cpp */, + B3982F6329239F4A00A82429 /* keyboard_map.h */, + B3982F5A29239F4A00A82429 /* libretro_core_option_defines.h */, + B3982F6029239F4A00A82429 /* libretro_core_options_intl.h */, + B3982F5F29239F4A00A82429 /* libretro_core_options.h */, + B3982F6529239F4A00A82429 /* LogManager.h */, + B3982F5929239F4A00A82429 /* option_lr.h */, + B3982F5C29239F4A00A82429 /* vmu_xhair.h */, ); - path = sound; + path = libretro; sourceTree = ""; }; - B339445D20783CC1008DBAB4 /* lib */ = { + B3982F6629239F4A00A82429 /* linux */ = { isa = PBXGroup; children = ( - B339445E20783CC1008DBAB4 /* libGLESv2.so */, - B339445F20783CC1008DBAB4 /* libX11.so */, - B339446020783CC1008DBAB4 /* libxcb.so */, - B339446120783CC1008DBAB4 /* libasound.so */, - B339446220783CC1008DBAB4 /* libXau.so */, - B339446320783CC1008DBAB4 /* alibX11.so */, - B339446420783CC1008DBAB4 /* libEGL.so */, - B339446520783CC1008DBAB4 /* libXdmcp.so */, + B3982F6729239F4A00A82429 /* man */, + B3982F6929239F4A00A82429 /* flycast.png */, + B3982F6A29239F4A00A82429 /* org.flycast.Flycast.metainfo.xml */, + B3982F6B29239F4A00A82429 /* mappings */, + B3982F7129239F4A00A82429 /* flycast.desktop */, ); - path = lib; + path = linux; sourceTree = ""; }; - B339446720783CC1008DBAB4 /* emscripten */ = { + B3982F6729239F4A00A82429 /* man */ = { isa = PBXGroup; children = ( - B339446820783CC1008DBAB4 /* Makefile */, + B3982F6829239F4A00A82429 /* flycast.1 */, ); - path = emscripten; + path = man; sourceTree = ""; }; - B339446920783CC1008DBAB4 /* mac86 */ = { + B3982F6B29239F4A00A82429 /* mappings */ = { isa = PBXGroup; children = ( - B339446A20783CC1008DBAB4 /* Makefile */, + B3982F6C29239F4A00A82429 /* controller_pandora.cfg */, + B3982F6D29239F4A00A82429 /* controller_generic.cfg */, + B3982F6E29239F4A00A82429 /* keyboard.cfg */, + B3982F6F29239F4A00A82429 /* controller_xpad.cfg */, + B3982F7029239F4A00A82429 /* controller_xboxdrv.cfg */, ); - path = mac86; + path = mappings; sourceTree = ""; }; - B339446C20783CC1008DBAB4 /* linux */ = { + B3982F7229239F4A00A82429 /* switch */ = { isa = PBXGroup; children = ( - B339446D20783CC1008DBAB4 /* man */, - B339447020783CC1008DBAB4 /* tools */, - B339447220783CC1008DBAB4 /* Makefile */, - B339447320783CC1008DBAB4 /* flycast.png */, - B339447420783CC1008DBAB4 /* gcwz */, - B339447C20783CC1008DBAB4 /* mappings */, - B339448320783CC1008DBAB4 /* flycast.desktop */, + B3982F7329239F4A00A82429 /* context_switch.S */, + B3982F7429239F4A00A82429 /* flycast.jpeg */, + B3982F7529239F4A00A82429 /* stubs.c */, + B3982F7629239F4A00A82429 /* nswitch.h */, + B3982F7729239F4A00A82429 /* sys */, + B3982F7929239F4A00A82429 /* ucontext.h */, ); - path = linux; + path = switch; sourceTree = ""; }; - B339446D20783CC1008DBAB4 /* man */ = { + B3982F7729239F4A00A82429 /* sys */ = { isa = PBXGroup; children = ( - B339446E20783CC1008DBAB4 /* flycast-joyconfig.1 */, - B339446F20783CC1008DBAB4 /* flycast.1 */, + B3982F7829239F4A00A82429 /* mman.h */, ); - path = man; + path = sys; sourceTree = ""; }; - B339447020783CC1008DBAB4 /* tools */ = { + B3982F7A29239F4A00A82429 /* android-studio */ = { isa = PBXGroup; children = ( - B339447120783CC1008DBAB4 /* flycast-joyconfig.py */, + B3982F7B29239F4A00A82429 /* flycast */, + B3982FBF29239F4B00A82429 /* ic_launcher-web.png */, + B3982FC029239F4B00A82429 /* psd */, + B3982FC429239F4B00A82429 /* gradle */, + B3982FC829239F4B00A82429 /* gradlew */, + B3982FC929239F4B00A82429 /* debug.keystore */, + B3982FCA29239F4B00A82429 /* .gitignore */, + B3982FCB29239F4B00A82429 /* icons */, + B3982FCD29239F4B00A82429 /* build.gradle */, + B3982FCE29239F4B00A82429 /* gradle.properties */, + B3982FCF29239F4B00A82429 /* gradlew.bat */, + B3982FD029239F4B00A82429 /* settings.gradle */, ); - path = tools; + path = "android-studio"; sourceTree = ""; }; - B339447420783CC1008DBAB4 /* gcwz */ = { + B3982F7B29239F4A00A82429 /* flycast */ = { isa = PBXGroup; children = ( - B339447520783CC1008DBAB4 /* enta_viv */, - B339447A20783CC1008DBAB4 /* default.gcw0.desktop */, - B339447B20783CC1008DBAB4 /* icon-32.png */, + B3982F7C29239F4A00A82429 /* proguard-rules.pro */, + B3982F7D29239F4A00A82429 /* libs */, + B3982F7F29239F4A00A82429 /* .gitignore */, + B3982F8029239F4A00A82429 /* build.gradle */, + B3982F8129239F4A00A82429 /* src */, ); - path = gcwz; + path = flycast; sourceTree = ""; }; - B339447520783CC1008DBAB4 /* enta_viv */ = { + B3982F7D29239F4A00A82429 /* libs */ = { isa = PBXGroup; children = ( - B339447620783CC1008DBAB4 /* libGLESv2.so */, - B339447720783CC1008DBAB4 /* libEGL.so */, - B339447820783CC1008DBAB4 /* libdrm.so */, - B339447920783CC1008DBAB4 /* libglapi.so */, + B3982F7E29239F4A00A82429 /* ouya-sdk.jar */, ); - path = enta_viv; + path = libs; sourceTree = ""; }; - B339447C20783CC1008DBAB4 /* mappings */ = { + B3982F8129239F4A00A82429 /* src */ = { isa = PBXGroup; children = ( - B339447D20783CC1008DBAB4 /* controller_pandora.cfg */, - B339447E20783CC1008DBAB4 /* controller_generic.cfg */, - B339447F20783CC1008DBAB4 /* keyboard.cfg */, - B339448020783CC1008DBAB4 /* controller_xpad.cfg */, - B339448120783CC1008DBAB4 /* controller_gcwz.cfg */, - B339448220783CC1008DBAB4 /* controller_xboxdrv.cfg */, + B3982F8229239F4A00A82429 /* main */, + B3982FB529239F4B00A82429 /* debug */, ); - path = mappings; + path = src; sourceTree = ""; }; - B339448420783CC1008DBAB4 /* android */ = { + B3982F8229239F4A00A82429 /* main */ = { isa = PBXGroup; children = ( - B339448520783CC1008DBAB4 /* res */, - B339450D20783CC1008DBAB4 /* build.xml */, - B339450E20783CC1008DBAB4 /* ic_launcher-web.png */, - B339450F20783CC1008DBAB4 /* psd */, - B339451120783CC2008DBAB4 /* AndroidManifest.xml */, - B339451220783CC2008DBAB4 /* project.properties */, - B339451320783CC2008DBAB4 /* .classpath */, - B339451420783CC2008DBAB4 /* libs */, - B339451F20783CC2008DBAB4 /* proguard-project.txt */, - B339452020783CC2008DBAB4 /* .settings */, - B339452220783CC2008DBAB4 /* .project */, - B339452320783CC2008DBAB4 /* icons */, - B339452520783CC2008DBAB4 /* jni */, - B339452D20783CC2008DBAB4 /* assets */, - B339453020783CC2008DBAB4 /* custom_rules.xml */, - B339453120783CC2008DBAB4 /* src */, + B3982F8329239F4A00A82429 /* res */, + B3982F9929239F4A00A82429 /* AndroidManifest.xml */, + B3982F9A29239F4A00A82429 /* java */, + B3982FAF29239F4B00A82429 /* jni */, + B3982FB329239F4B00A82429 /* assets */, ); - path = android; + path = main; sourceTree = ""; }; - B339448520783CC1008DBAB4 /* res */ = { - isa = PBXGroup; - children = ( - B339448620783CC1008DBAB4 /* anim */, - B339448920783CC1008DBAB4 /* values-ru */, - B339448B20783CC1008DBAB4 /* values-it */, - B339448D20783CC1008DBAB4 /* layout-v14 */, - B339449120783CC1008DBAB4 /* values-zh-rCN */, - B339449320783CC1008DBAB4 /* drawable */, - B33944C320783CC1008DBAB4 /* values-da */, - B33944C520783CC1008DBAB4 /* layout */, - B33944D820783CC1008DBAB4 /* values */, - B33944DE20783CC1008DBAB4 /* values-pl */, - B33944E020783CC1008DBAB4 /* drawable-xhdpi */, - B33944E620783CC1008DBAB4 /* drawable-xxhdpi */, - B33944EA20783CC1008DBAB4 /* drawable-hdpi */, - B33944F020783CC1008DBAB4 /* drawable-ldpi */, - B33944F520783CC1008DBAB4 /* values-large */, - B33944F720783CC1008DBAB4 /* menu */, - B33944F920783CC1008DBAB4 /* drawable-mdpi */, - B33944FF20783CC1008DBAB4 /* values-fr */, - B339450120783CC1008DBAB4 /* values-es */, - B339450320783CC1008DBAB4 /* values-jp */, - B339450520783CC1008DBAB4 /* values-de */, - B339450720783CC1008DBAB4 /* values-ko */, - B339450920783CC1008DBAB4 /* values-pt */, - B339450B20783CC1008DBAB4 /* values-zh */, + B3982F8329239F4A00A82429 /* res */ = { + isa = PBXGroup; + children = ( + B3982F8429239F4A00A82429 /* drawable */, + B3982F8629239F4A00A82429 /* values */, + B3982F8A29239F4A00A82429 /* drawable-xhdpi */, + B3982F8D29239F4A00A82429 /* drawable-xxhdpi */, + B3982F8F29239F4A00A82429 /* xml */, + B3982F9129239F4A00A82429 /* drawable-hdpi */, + B3982F9329239F4A00A82429 /* drawable-ldpi */, + B3982F9529239F4A00A82429 /* drawable-mdpi */, + B3982F9729239F4A00A82429 /* mipmap */, ); path = res; sourceTree = ""; }; - B339448620783CC1008DBAB4 /* anim */ = { + B3982F8429239F4A00A82429 /* drawable */ = { isa = PBXGroup; children = ( - B339448720783CC1008DBAB4 /* popup_show */, - B339448820783CC1008DBAB4 /* popup_hide */, + B3982F8529239F4A00A82429 /* background_dark.xml */, ); - path = anim; + path = drawable; sourceTree = ""; }; - B339448920783CC1008DBAB4 /* values-ru */ = { + B3982F8629239F4A00A82429 /* values */ = { isa = PBXGroup; children = ( - B339448A20783CC1008DBAB4 /* strings.xml */, + B3982F8729239F4A00A82429 /* colors.xml */, + B3982F8829239F4A00A82429 /* donottranslate.xml */, + B3982F8929239F4A00A82429 /* styles.xml */, ); - path = "values-ru"; + path = values; sourceTree = ""; }; - B339448B20783CC1008DBAB4 /* values-it */ = { + B3982F8A29239F4A00A82429 /* drawable-xhdpi */ = { isa = PBXGroup; children = ( - B339448C20783CC1008DBAB4 /* strings.xml */, + B3982F8B29239F4A00A82429 /* ic_launcher.png */, + B3982F8C29239F4A00A82429 /* ic_banner.png */, ); - path = "values-it"; + path = "drawable-xhdpi"; sourceTree = ""; }; - B339448D20783CC1008DBAB4 /* layout-v14 */ = { + B3982F8D29239F4A00A82429 /* drawable-xxhdpi */ = { isa = PBXGroup; children = ( - B339448E20783CC1008DBAB4 /* input_fragment.xml */, - B339448F20783CC1008DBAB4 /* input_mod_fragment.xml */, - B339449020783CC1008DBAB4 /* configure_fragment.xml */, + B3982F8E29239F4A00A82429 /* ic_launcher.png */, ); - path = "layout-v14"; + path = "drawable-xxhdpi"; sourceTree = ""; }; - B339449120783CC1008DBAB4 /* values-zh-rCN */ = { + B3982F8F29239F4A00A82429 /* xml */ = { isa = PBXGroup; children = ( - B339449220783CC1008DBAB4 /* strings.xml */, + B3982F9029239F4A00A82429 /* provider_paths.xml */, ); - path = "values-zh-rCN"; + path = xml; sourceTree = ""; }; - B339449320783CC1008DBAB4 /* drawable */ = { + B3982F9129239F4A00A82429 /* drawable-hdpi */ = { isa = PBXGroup; children = ( - B339449420783CC1008DBAB4 /* menutile.png */, - B339449520783CC1008DBAB4 /* vmu_swap.png */, - B339449620783CC1008DBAB4 /* list_selector.xml */, - B339449720783CC1008DBAB4 /* chd.png */, - B339449820783CC1008DBAB4 /* disc.png */, - B339449920783CC1008DBAB4 /* disk_unknown.png */, - B339449A20783CC1008DBAB4 /* widescreen.png */, - B339449B20783CC1008DBAB4 /* ic_xperia_play.png */, - B339449C20783CC1008DBAB4 /* open_folder.png */, - B339449D20783CC1008DBAB4 /* question.png */, - B339449E20783CC1008DBAB4 /* up.png */, - B339449F20783CC1008DBAB4 /* mute_sound.png */, - B33944A020783CC1008DBAB4 /* toggle_r_l.png */, - B33944A120783CC1008DBAB4 /* apply.png */, - B33944A220783CC1008DBAB4 /* reset.png */, - B33944A320783CC1008DBAB4 /* rounded.xml */, - B33944A420783CC1008DBAB4 /* gradient_bg_hover.xml */, - B33944A520783CC1008DBAB4 /* debug.png */, - B33944A620783CC1008DBAB4 /* gradient_bg.xml */, - B33944A720783CC1008DBAB4 /* toggle_a_b.png */, - B33944A820783CC1008DBAB4 /* background.xml */, - B33944A920783CC1008DBAB4 /* config.png */, - B33944AA20783CC1008DBAB4 /* frames_up.png */, - B33944AB20783CC1008DBAB4 /* print_stats.png */, - B33944AC20783CC1008DBAB4 /* mic_icon.png */, - B33944AD20783CC1008DBAB4 /* cloud.png */, - B33944AE20783CC1008DBAB4 /* game_selector.xml */, - B33944AF20783CC1008DBAB4 /* frames_limit_on.png */, - B33944B020783CC1008DBAB4 /* enable_sound.png */, - B33944B120783CC1008DBAB4 /* list_item_border.xml */, - B33944B220783CC1008DBAB4 /* image_bg.xml */, - B33944B320783CC1008DBAB4 /* input.png */, - B33944B420783CC1008DBAB4 /* normal_view.png */, - B33944B520783CC1008DBAB4 /* star.png */, - B33944B620783CC1008DBAB4 /* cd.png */, - B33944B720783CC1008DBAB4 /* shadow.xml */, - B33944B820783CC1008DBAB4 /* disk_swap.png */, - B33944B920783CC1008DBAB4 /* gdi.png */, - B33944BA20783CC1008DBAB4 /* frames_down.png */, - B33944BB20783CC1008DBAB4 /* ic_banner.png */, - B33944BC20783CC1008DBAB4 /* cdi.pdn */, - B33944BD20783CC1008DBAB4 /* profiler.png */, - B33944BE20783CC1008DBAB4 /* clear_cache.png */, - B33944BF20783CC1008DBAB4 /* cloud_big.png */, - B33944C020783CC1008DBAB4 /* menuback.png */, - B33944C120783CC1008DBAB4 /* frames_limit_off.png */, - B33944C220783CC1008DBAB4 /* close.png */, + B3982F9229239F4A00A82429 /* ic_launcher.png */, ); - path = drawable; + path = "drawable-hdpi"; sourceTree = ""; }; - B33944C320783CC1008DBAB4 /* values-da */ = { + B3982F9329239F4A00A82429 /* drawable-ldpi */ = { isa = PBXGroup; children = ( - B33944C420783CC1008DBAB4 /* strings.xml */, + B3982F9429239F4A00A82429 /* ic_launcher.png */, ); - path = "values-da"; + path = "drawable-ldpi"; sourceTree = ""; }; - B33944C520783CC1008DBAB4 /* layout */ = { + B3982F9529239F4A00A82429 /* drawable-mdpi */ = { isa = PBXGroup; children = ( - B33944C620783CC1008DBAB4 /* mainuilayout_fragment.xml */, - B33944C720783CC1008DBAB4 /* menu_popup_config.xml */, - B33944C820783CC1008DBAB4 /* head_list_item.xml */, - B33944C920783CC1008DBAB4 /* bios_list_item.xml */, - B33944CA20783CC1008DBAB4 /* menu_popup_debug.xml */, - B33944CB20783CC1008DBAB4 /* input_fragment.xml */, - B33944CC20783CC1008DBAB4 /* menu_popup_main.xml */, - B33944CD20783CC1008DBAB4 /* webview.xml */, - B33944CE20783CC1008DBAB4 /* about_fragment.xml */, - B33944CF20783CC1008DBAB4 /* app_list_item.xml */, - B33944D020783CC1008DBAB4 /* input_mod_fragment.xml */, - B33944D120783CC1008DBAB4 /* toast_layout.xml */, - B33944D220783CC1008DBAB4 /* spinner_selected.xml */, - B33944D320783CC1008DBAB4 /* dialog_item.xml */, - B33944D420783CC1008DBAB4 /* change_item.xml */, - B33944D520783CC1008DBAB4 /* activity_main.xml */, - B33944D620783CC1008DBAB4 /* cloud_fragment.xml */, - B33944D720783CC1008DBAB4 /* configure_fragment.xml */, + B3982F9629239F4A00A82429 /* ic_launcher.png */, ); - path = layout; + path = "drawable-mdpi"; sourceTree = ""; }; - B33944D820783CC1008DBAB4 /* values */ = { + B3982F9729239F4A00A82429 /* mipmap */ = { isa = PBXGroup; children = ( - B33944D920783CC1008DBAB4 /* dimens.xml */, - B33944DA20783CC1008DBAB4 /* donottranslate.xml */, - B33944DB20783CC1008DBAB4 /* styles.xml */, - B33944DC20783CC1008DBAB4 /* strings.xml */, - B33944DD20783CC1008DBAB4 /* ids.xml */, + B3982F9829239F4A00A82429 /* texture_dark.png */, ); - path = values; + path = mipmap; sourceTree = ""; }; - B33944DE20783CC1008DBAB4 /* values-pl */ = { + B3982F9A29239F4A00A82429 /* java */ = { isa = PBXGroup; children = ( - B33944DF20783CC1008DBAB4 /* strings.xml */, + B3982F9B29239F4A00A82429 /* com */, ); - path = "values-pl"; + path = java; sourceTree = ""; }; - B33944E020783CC1008DBAB4 /* drawable-xhdpi */ = { + B3982F9B29239F4A00A82429 /* com */ = { isa = PBXGroup; children = ( - B33944E120783CC1008DBAB4 /* ic_notification.png */, - B33944E220783CC1008DBAB4 /* ic_action_search.png */, - B33944E320783CC1008DBAB4 /* ic_github.png */, - B33944E420783CC1008DBAB4 /* ic_launcher.png */, - B33944E520783CC1008DBAB4 /* ouya_icon.png */, + B3982F9C29239F4A00A82429 /* reicast */, ); - path = "drawable-xhdpi"; + path = com; sourceTree = ""; }; - B33944E620783CC1008DBAB4 /* drawable-xxhdpi */ = { + B3982F9C29239F4A00A82429 /* reicast */ = { isa = PBXGroup; children = ( - B33944E720783CC1008DBAB4 /* ic_notification.png */, - B33944E820783CC1008DBAB4 /* ic_github.png */, - B33944E920783CC1008DBAB4 /* ic_launcher.png */, + B3982F9D29239F4A00A82429 /* emulator */, ); - path = "drawable-xxhdpi"; + path = reicast; sourceTree = ""; }; - B33944EA20783CC1008DBAB4 /* drawable-hdpi */ = { + B3982F9D29239F4A00A82429 /* emulator */ = { isa = PBXGroup; children = ( - B33944EB20783CC1008DBAB4 /* ic_notification.png */, - B33944EC20783CC1008DBAB4 /* ic_action_search.png */, - B33944ED20783CC1008DBAB4 /* ic_github.png */, - B33944EE20783CC1008DBAB4 /* ic_drawer.png */, - B33944EF20783CC1008DBAB4 /* ic_launcher.png */, + B3982F9E29239F4A00A82429 /* BaseGLActivity.java */, + B3982F9F29239F4A00A82429 /* Emulator.java */, + B3982FA029239F4A00A82429 /* emu */, + B3982FA529239F4A00A82429 /* NativeGLActivity.java */, + B3982FA629239F4A00A82429 /* config */, + B3982FA829239F4A00A82429 /* periph */, + B3982FAC29239F4B00A82429 /* FileBrowser.java */, + B3982FAD29239F4B00A82429 /* debug */, ); - path = "drawable-hdpi"; + path = emulator; sourceTree = ""; }; - B33944F020783CC1008DBAB4 /* drawable-ldpi */ = { + B3982FA029239F4A00A82429 /* emu */ = { isa = PBXGroup; children = ( - B33944F120783CC1008DBAB4 /* ic_notification.png */, - B33944F220783CC1008DBAB4 /* ic_github.png */, - B33944F320783CC1008DBAB4 /* ic_drawer.png */, - B33944F420783CC1008DBAB4 /* ic_launcher.png */, + B3982FA129239F4A00A82429 /* VirtualJoystickDelegate.java */, + B3982FA229239F4A00A82429 /* JNIdc.java */, + B3982FA329239F4A00A82429 /* AudioBackend.java */, + B3982FA429239F4A00A82429 /* NativeGLView.java */, ); - path = "drawable-ldpi"; + path = emu; sourceTree = ""; }; - B33944F520783CC1008DBAB4 /* values-large */ = { + B3982FA629239F4A00A82429 /* config */ = { isa = PBXGroup; children = ( - B33944F620783CC1008DBAB4 /* dimens.xml */, + B3982FA729239F4A00A82429 /* Config.java */, ); - path = "values-large"; + path = config; sourceTree = ""; }; - B33944F720783CC1008DBAB4 /* menu */ = { + B3982FA829239F4A00A82429 /* periph */ = { isa = PBXGroup; children = ( - B33944F820783CC1008DBAB4 /* activity_main.xml */, + B3982FA929239F4A00A82429 /* VJoy.java */, + B3982FAA29239F4B00A82429 /* SipEmulator.java */, + B3982FAB29239F4B00A82429 /* InputDeviceManager.java */, ); - path = menu; + path = periph; sourceTree = ""; }; - B33944F920783CC1008DBAB4 /* drawable-mdpi */ = { + B3982FAD29239F4B00A82429 /* debug */ = { isa = PBXGroup; children = ( - B33944FA20783CC1008DBAB4 /* ic_notification.png */, - B33944FB20783CC1008DBAB4 /* ic_action_search.png */, - B33944FC20783CC1008DBAB4 /* ic_github.png */, - B33944FD20783CC1008DBAB4 /* ic_drawer.png */, - B33944FE20783CC1008DBAB4 /* ic_launcher.png */, + B3982FAE29239F4B00A82429 /* GenerateLogs.java */, ); - path = "drawable-mdpi"; + path = debug; sourceTree = ""; }; - B33944FF20783CC1008DBAB4 /* values-fr */ = { + B3982FAF29239F4B00A82429 /* jni */ = { isa = PBXGroup; children = ( - B339450020783CC1008DBAB4 /* strings.xml */, + B3982FB029239F4B00A82429 /* src */, ); - path = "values-fr"; + path = jni; sourceTree = ""; }; - B339450120783CC1008DBAB4 /* values-es */ = { + B3982FB029239F4B00A82429 /* src */ = { isa = PBXGroup; children = ( - B339450220783CC1008DBAB4 /* strings.xml */, + B3982FB129239F4B00A82429 /* android_gamepad.h */, + B3982FB229239F4B00A82429 /* Android.cpp */, ); - path = "values-es"; + path = src; sourceTree = ""; }; - B339450320783CC1008DBAB4 /* values-jp */ = { + B3982FB329239F4B00A82429 /* assets */ = { isa = PBXGroup; children = ( - B339450420783CC1008DBAB4 /* strings.xml */, + B3982FB429239F4B00A82429 /* buttons.png */, ); - path = "values-jp"; + path = assets; sourceTree = ""; }; - B339450520783CC1008DBAB4 /* values-de */ = { + B3982FB529239F4B00A82429 /* debug */ = { isa = PBXGroup; children = ( - B339450620783CC1008DBAB4 /* strings.xml */, + B3982FB629239F4B00A82429 /* res */, ); - path = "values-de"; + path = debug; sourceTree = ""; }; - B339450720783CC1008DBAB4 /* values-ko */ = { + B3982FB629239F4B00A82429 /* res */ = { isa = PBXGroup; children = ( - B339450820783CC1008DBAB4 /* strings.xml */, + B3982FB729239F4B00A82429 /* drawable-xhdpi */, + B3982FB929239F4B00A82429 /* drawable-xxhdpi */, + B3982FBB29239F4B00A82429 /* drawable-ldpi */, + B3982FBD29239F4B00A82429 /* drawable-mdpi */, ); - path = "values-ko"; + path = res; sourceTree = ""; }; - B339450920783CC1008DBAB4 /* values-pt */ = { + B3982FB729239F4B00A82429 /* drawable-xhdpi */ = { isa = PBXGroup; children = ( - B339450A20783CC1008DBAB4 /* strings.xml */, + B3982FB829239F4B00A82429 /* ic_launcher.png */, ); - path = "values-pt"; + path = "drawable-xhdpi"; sourceTree = ""; }; - B339450B20783CC1008DBAB4 /* values-zh */ = { + B3982FB929239F4B00A82429 /* drawable-xxhdpi */ = { isa = PBXGroup; children = ( - B339450C20783CC1008DBAB4 /* strings.xml */, + B3982FBA29239F4B00A82429 /* ic_launcher.png */, ); - path = "values-zh"; + path = "drawable-xxhdpi"; sourceTree = ""; }; - B339450F20783CC1008DBAB4 /* psd */ = { + B3982FBB29239F4B00A82429 /* drawable-ldpi */ = { isa = PBXGroup; children = ( - B339451020783CC2008DBAB4 /* dctemplate.psd */, + B3982FBC29239F4B00A82429 /* ic_launcher.png */, ); - path = psd; + path = "drawable-ldpi"; sourceTree = ""; }; - B339451420783CC2008DBAB4 /* libs */ = { + B3982FBD29239F4B00A82429 /* drawable-mdpi */ = { isa = PBXGroup; children = ( - B339451520783CC2008DBAB4 /* commons-logging-1.1.1.jar */, - B339451620783CC2008DBAB4 /* dropbox-android-sdk-1.6.1.jar */, - B339451720783CC2008DBAB4 /* android-support-v4.jar */, - B339451820783CC2008DBAB4 /* commons-io-2.4.jar */, - B339451920783CC2008DBAB4 /* image-uniload.jar */, - B339451A20783CC2008DBAB4 /* commons-lang3-3.1.jar */, - B339451B20783CC2008DBAB4 /* ouya-sdk.jar */, - B339451C20783CC2008DBAB4 /* json_simple-1.1.jar */, - B339451D20783CC2008DBAB4 /* com.bda.controller.jar */, - B339451E20783CC2008DBAB4 /* bcprov-jdk16-146.jar */, + B3982FBE29239F4B00A82429 /* ic_launcher.png */, ); - path = libs; + path = "drawable-mdpi"; sourceTree = ""; }; - B339452020783CC2008DBAB4 /* .settings */ = { + B3982FC029239F4B00A82429 /* psd */ = { isa = PBXGroup; children = ( - B339452120783CC2008DBAB4 /* org.eclipse.jdt.core.prefs */, + B3982FC129239F4B00A82429 /* dark_texture.psd */, + B3982FC229239F4B00A82429 /* disk_mipmap.psd */, + B3982FC329239F4B00A82429 /* icon_drawable.psd */, ); - path = .settings; + path = psd; sourceTree = ""; }; - B339452320783CC2008DBAB4 /* icons */ = { + B3982FC429239F4B00A82429 /* gradle */ = { isa = PBXGroup; children = ( - B339452420783CC2008DBAB4 /* cd.pdn */, + B3982FC529239F4B00A82429 /* wrapper */, ); - path = icons; + path = gradle; sourceTree = ""; }; - B339452520783CC2008DBAB4 /* jni */ = { + B3982FC529239F4B00A82429 /* wrapper */ = { isa = PBXGroup; children = ( - B339452620783CC2008DBAB4 /* Android.mk */, - B339452720783CC2008DBAB4 /* Application.mk */, - B339452820783CC2008DBAB4 /* src */, + B3982FC629239F4B00A82429 /* gradle-wrapper.jar */, + B3982FC729239F4B00A82429 /* gradle-wrapper.properties */, ); - path = jni; + path = wrapper; sourceTree = ""; }; - B339452820783CC2008DBAB4 /* src */ = { + B3982FCB29239F4B00A82429 /* icons */ = { isa = PBXGroup; children = ( - B339452920783CC2008DBAB4 /* utils.h */, - B339452A20783CC2008DBAB4 /* utils.cpp */, - B339452B20783CC2008DBAB4 /* Android.cpp */, - B339452C20783CC2008DBAB4 /* XperiaPlay.c */, + B3982FCC29239F4B00A82429 /* cd.pdn */, ); - path = src; + path = icons; sourceTree = ""; }; - B339452D20783CC2008DBAB4 /* assets */ = { + B3982FD129239F4B00A82429 /* windows */ = { isa = PBXGroup; children = ( - B339452E20783CC2008DBAB4 /* buttons.png */, - B339452F20783CC2008DBAB4 /* build */, + B3982FD229239F4B00A82429 /* resource.h */, + B3982FD329239F4B00A82429 /* flycast.ico */, + B3982FD429239F4B00A82429 /* flycast.rc */, ); - path = assets; + path = windows; sourceTree = ""; }; - B339453120783CC2008DBAB4 /* src */ = { + B3982FD529239F4B00A82429 /* tests */ = { isa = PBXGroup; children = ( - B339453220783CC2008DBAB4 /* com */, + B3982FD629239F4B00A82429 /* files */, + B3982FEE29239F4B00A82429 /* src */, ); - path = src; + path = tests; sourceTree = ""; }; - B339453220783CC2008DBAB4 /* com */ = { + B3982FD629239F4B00A82429 /* files */ = { isa = PBXGroup; children = ( - B339453320783CC2008DBAB4 /* flycast */, - B339455320783CC2008DBAB4 /* android */, + B3982FD729239F4B00A82429 /* test_gdis */, ); - path = com; + path = files; sourceTree = ""; }; - B339453320783CC2008DBAB4 /* flycast */ = { + B3982FD729239F4B00A82429 /* test_gdis */ = { isa = PBXGroup; children = ( - B339453420783CC2008DBAB4 /* emulator */, + B3982FD829239F4B00A82429 /* a */, + B3982FDE29239F4B00A82429 /* c */, + B3982FE429239F4B00A82429 /* d */, + B3982FE929239F4B00A82429 /* b */, ); - path = flycast; + path = test_gdis; sourceTree = ""; }; - B339453420783CC2008DBAB4 /* emulator */ = { + B3982FD829239F4B00A82429 /* a */ = { isa = PBXGroup; children = ( - B339453520783CC2008DBAB4 /* emu */, - B339453B20783CC2008DBAB4 /* config */, - B339454120783CC2008DBAB4 /* GL2JNIActivity.java */, - B339454220783CC2008DBAB4 /* MainActivity.java */, - B339454320783CC2008DBAB4 /* periph */, - B339454A20783CC2008DBAB4 /* CloudFragment.java */, - B339454B20783CC2008DBAB4 /* GL2JNINative.java */, - B339454C20783CC2008DBAB4 /* AboutFragment.java */, - B339454D20783CC2008DBAB4 /* FileBrowser.java */, - B339454E20783CC2008DBAB4 /* debug */, - B339455220783CC2008DBAB4 /* XMLParser.java */, + B3982FD929239F4B00A82429 /* cs.gdi */, + B3982FDA29239F4B00A82429 /* tracks */, ); - path = emulator; + path = a; sourceTree = ""; }; - B339453520783CC2008DBAB4 /* emu */ = { + B3982FDA29239F4B00A82429 /* tracks */ = { isa = PBXGroup; children = ( - B339453620783CC2008DBAB4 /* GLCFactory6.java */, - B339453720783CC2008DBAB4 /* JNIdc.java */, - B339453820783CC2008DBAB4 /* OnScreenMenu.java */, - B339453920783CC2008DBAB4 /* GLCFactory.java */, - B339453A20783CC2008DBAB4 /* GL2JNIView.java */, + B3982FDB29239F4B00A82429 /* cs02.raw */, + B3982FDC29239F4B00A82429 /* cs03.bin */, + B3982FDD29239F4B00A82429 /* cs01.bin */, ); - path = emu; + path = tracks; sourceTree = ""; }; - B339453B20783CC2008DBAB4 /* config */ = { + B3982FDE29239F4B00A82429 /* c */ = { isa = PBXGroup; children = ( - B339453C20783CC2008DBAB4 /* InputFragment.java */, - B339453D20783CC2008DBAB4 /* EditVJoyActivity.java */, - B339453E20783CC2008DBAB4 /* OptionsFragment.java */, - B339453F20783CC2008DBAB4 /* InputModFragment.java */, - B339454020783CC2008DBAB4 /* Config.java */, + B3982FDF29239F4B00A82429 /* cs.gdi */, + B3982FE029239F4B00A82429 /* tracks */, ); - path = config; + path = c; sourceTree = ""; }; - B339454320783CC2008DBAB4 /* periph */ = { + B3982FE029239F4B00A82429 /* tracks */ = { isa = PBXGroup; children = ( - B339454420783CC2008DBAB4 /* VJoy.java */, - B339454520783CC2008DBAB4 /* SipEmulator.java */, - B339454620783CC2008DBAB4 /* Gamepad.java */, - B339454720783CC2008DBAB4 /* MogaHack.java */, - B339454820783CC2008DBAB4 /* VmuLcd.java */, - B339454920783CC2008DBAB4 /* MOGAInput.java */, + B3982FE129239F4B00A82429 /* cs02.raw */, + B3982FE229239F4B00A82429 /* cs03.bin */, + B3982FE329239F4B00A82429 /* cs01.bin */, ); - path = periph; + path = tracks; sourceTree = ""; }; - B339454E20783CC2008DBAB4 /* debug */ = { + B3982FE429239F4B00A82429 /* d */ = { isa = PBXGroup; children = ( - B339454F20783CC2008DBAB4 /* GitAdapter.java */, - B339455020783CC2008DBAB4 /* GenerateLogs.java */, - B339455120783CC2008DBAB4 /* UploadLogs.java */, + B3982FE529239F4B00A82429 /* cs02.raw */, + B3982FE629239F4B00A82429 /* cs.gdi */, + B3982FE729239F4B00A82429 /* cs (0,1).bin */, + B3982FE829239F4B00A82429 /* cs03.bin */, ); - path = debug; + path = d; sourceTree = ""; }; - B339455320783CC2008DBAB4 /* android */ = { + B3982FE929239F4B00A82429 /* b */ = { isa = PBXGroup; children = ( - B339455420783CC2008DBAB4 /* util */, + B3982FEA29239F4B00A82429 /* cs02.raw */, + B3982FEB29239F4B00A82429 /* cs.gdi */, + B3982FEC29239F4B00A82429 /* cs03.bin */, + B3982FED29239F4B00A82429 /* cs01.bin */, ); - path = android; + path = b; sourceTree = ""; }; - B339455420783CC2008DBAB4 /* util */ = { + B3982FEE29239F4B00A82429 /* src */ = { isa = PBXGroup; children = ( - B339455520783CC2008DBAB4 /* FileUtils.java */, - B339455620783CC2008DBAB4 /* DreamTime.java */, + B3982FEF29239F4B00A82429 /* sh4_ops.h */, + B3982FF029239F4B00A82429 /* AicaArmTest.cpp */, + B3982FF129239F4B00A82429 /* test_stubs.cpp */, + B3982FF229239F4B00A82429 /* Sh4InterpreterTest.cpp */, + B3982FF329239F4B00A82429 /* div32_test.cpp */, + B3982FF429239F4B00A82429 /* serialize_test.cpp */, ); - path = util; + path = src; sourceTree = ""; }; - B339455720783CC2008DBAB4 /* nacl */ = { + B3982FF529239F4B00A82429 /* docs */ = { isa = PBXGroup; children = ( - B339455820783CC2008DBAB4 /* index.html */, - B339455920783CC2008DBAB4 /* background.js */, - B339455A20783CC2008DBAB4 /* Makefile */, - B339455B20783CC2008DBAB4 /* icon128.png */, - B339455C20783CC2008DBAB4 /* example.js */, - B339455D20783CC2008DBAB4 /* common.js */, + B3982FF629239F4B00A82429 /* Naomi_Overview.md */, + B3982FF729239F4B00A82429 /* Dynarec Architecture.md */, + B3982FF829239F4B00A82429 /* microphone support notes.txt */, + B3982FF929239F4B00A82429 /* DreamCast_Specs.md */, + B3982FFA29239F4B00A82429 /* neil_corlett_aica_notes.txt */, + B3982FFB29239F4B00A82429 /* Notable game bugs.md */, ); - path = nacl; + path = docs; sourceTree = ""; }; - B339459720783CC2008DBAB4 /* docs */ = { + B3982FFF29239F4B00A82429 /* .github */ = { isa = PBXGroup; children = ( - B339459820783CC2008DBAB4 /* microphone support notes.txt */, + B398300029239F4B00A82429 /* FUNDING.yml */, + B398300129239F4B00A82429 /* workflows */, + B398300529239F4B00A82429 /* ISSUE_TEMPLATE */, ); - path = docs; + path = .github; sourceTree = ""; }; - B33945B820783CC2008DBAB4 /* gdtool */ = { + B398300129239F4B00A82429 /* workflows */ = { isa = PBXGroup; children = ( - B33945B920783CC2008DBAB4 /* gdtool.vcxproj.filters */, - B33945BA20783CC2008DBAB4 /* gdtool.sln */, - B33945BB20783CC2008DBAB4 /* gdtool.vcxproj */, - B33945BC20783CC2008DBAB4 /* gdtool.vcxproj.user */, - B33945BD20783CC2008DBAB4 /* src */, + B398300229239F4B00A82429 /* switch.yml */, + B398300329239F4B00A82429 /* android.yml */, + B398300429239F4B00A82429 /* c-cpp.yml */, ); - path = gdtool; + path = workflows; sourceTree = ""; }; - B33945BD20783CC2008DBAB4 /* src */ = { + B398300529239F4B00A82429 /* ISSUE_TEMPLATE */ = { isa = PBXGroup; children = ( - B33945BE20783CC2008DBAB4 /* cdromfs.h */, - B33945BF20783CC2008DBAB4 /* cdromfs.cpp */, - B33945C020783CC2008DBAB4 /* cdromfs_imp.h */, - B33945C120783CC2008DBAB4 /* main.cpp */, + B398300629239F4B00A82429 /* feature_request.md */, + B398300729239F4B00A82429 /* bug_report.md */, ); - path = src; + path = ISSUE_TEMPLATE; sourceTree = ""; }; - B3447EA8218BC51300557ACE /* Audio */ = { + B398300929239F4B00A82429 /* gdtool */ = { isa = PBXGroup; children = ( - B3447EA2218BBFB700557ACE /* PVFlycast+AudioTypes.h */, - B3447E9A218B826F00557ACE /* PVFlycast+Audio.h */, - B3447E9B218B826F00557ACE /* PVFlycast+Audio.mm */, - B3447EA6218BC3A600557ACE /* PVFlycast+CoreAudio.h */, - B3447EA4218BC36B00557ACE /* PVFlycast+CoreAudio.mm */, + B398300A29239F4B00A82429 /* gdtool.vcxproj.filters */, + B398300B29239F4B00A82429 /* gdtool.sln */, + B398300C29239F4B00A82429 /* gdtool.vcxproj */, + B398300D29239F4B00A82429 /* gdtool.vcxproj.user */, + B398300E29239F4B00A82429 /* src */, ); - path = Audio; + path = gdtool; sourceTree = ""; }; - B3447EB5218BCE2000557ACE /* Core */ = { + B398300E29239F4B00A82429 /* src */ = { isa = PBXGroup; children = ( - B3C76223207833DE009950E4 /* PVFlycastCore.h */, - B3C76224207833DE009950E4 /* PVFlycastCore.mm */, - B3447EB1218BC69700557ACE /* PVFlycastCore+Audio.h */, - B3447EB2218BC69700557ACE /* PVFlycastCore+Audio.m */, - B3447EAD218BC5C500557ACE /* PVFlycastCore+Video.h */, - B3447EAE218BC5C500557ACE /* PVFlycastCore+Video.m */, - B3447EA9218BC59D00557ACE /* PVFlycastCore+Saves.h */, - B3447EAA218BC59D00557ACE /* PVFlycastCore+Saves.m */, - B3447E96218B809200557ACE /* PVFlycastCore+Controls.h */, - B3447E97218B809300557ACE /* PVFlycastCore+Controls.mm */, + B398300F29239F4B00A82429 /* cdromfs.h */, + B398301029239F4B00A82429 /* cdromfs.cpp */, + B398301129239F4B00A82429 /* cdromfs_imp.h */, + B398301229239F4B00A82429 /* main.cpp */, ); - path = Core; + path = src; sourceTree = ""; }; B3C7620620783162009950E4 = { isa = PBXGroup; children = ( B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3980D8329239F3600A82429 /* flycast */, B3C762202078327B009950E4 /* PVFlycastCore */, - B339411E20783CBB008DBAB4 /* flycast */, B3C7621220783162009950E4 /* PVFlycast */, B3C7621120783162009950E4 /* Products */, B3C7621B20783242009950E4 /* Frameworks */, @@ -3468,9 +23523,7 @@ isa = PBXGroup; children = ( B3C7621020783162009950E4 /* PVFlycast.framework */, - B30178D3207C901D0051B93D /* libflycast-iOS.a */, - B3447EE6218BEDD200557ACE /* PVFlycast.framework */, - B3447F91218BEE3F00557ACE /* libflycast-tvOS.a */, + B30178D3207C901D0051B93D /* libflycast.a */, ); name = Products; sourceTree = ""; @@ -3489,6 +23542,8 @@ B3C7621B20783242009950E4 /* Frameworks */ = { isa = PBXGroup; children = ( + B39E12A428925DEB00016387 /* PVLibRetro.framework */, + B39E12A028925DD900016387 /* PVLibRetro.framework */, B35E6BF1207CD2670040709A /* AudioToolbox.framework */, B35E6BEF207CD2610040709A /* AudioUnit.framework */, B324C31B2191964F009F4EDC /* AVFoundation.framework */, @@ -3515,175 +23570,1221 @@ path = PVFlycastCore; sourceTree = ""; }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - B3447ED5218BEDD200557ACE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447ED6218BEDD200557ACE /* PVFlycast.h in Headers */, - B3447ED7218BEDD200557ACE /* PVFlycastCore.h in Headers */, - B3447ED8218BEDD200557ACE /* PVFlycast+Audio.h in Headers */, - B3447ED9218BEDD200557ACE /* PVFlycastCore+Audio.h in Headers */, - B3447EDA218BEDD200557ACE /* PVFlycastCore+Saves.h in Headers */, - B3447EDB218BEDD200557ACE /* PVFlycast+AudioTypes.h in Headers */, - B3447EDC218BEDD200557ACE /* PVFlycast+CoreAudio.h in Headers */, - B3447EDD218BEDD200557ACE /* PVFlycastCore+Controls.h in Headers */, - B3447EDE218BEDD200557ACE /* PVFlycastCore+Video.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C7621520783162009950E4 /* PVFlycast.h in Headers */, + B3C76225207833DE009950E4 /* PVFlycastCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* flycast */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "flycast" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = flycast; + productName = flycast; + productReference = B30178D3207C901D0051B93D /* libflycast.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVFlycast */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFlycast" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PVFlycast; + productName = PVFlycast; + productReference = B3C7621020783162009950E4 /* PVFlycast.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFlycast" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + English, + de, + ja, + es, + sl, + da, + it, + sv, + no, + nb, + tr, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B3981D0C29239F4100A82429 /* Products */; + ProjectRef = B3981D0B29239F4100A82429 /* ___PROJECTNAME___.xcodeproj */; + }, + { + ProductGroup = B3982D5729239F4900A82429 /* Products */; + ProjectRef = B3982D5629239F4900A82429 /* Breakpad.xcodeproj */; + }, + { + ProductGroup = B3982D2E29239F4900A82429 /* Products */; + ProjectRef = B3982D2D29239F4900A82429 /* Breakpad.xcodeproj */; + }, + { + ProductGroup = B3982A4929239F4700A82429 /* Products */; + ProjectRef = B3982A4829239F4700A82429 /* crash_report.xcodeproj */; + }, + { + ProductGroup = B3981D2529239F4100A82429 /* Products */; + ProjectRef = B3981D2429239F4100A82429 /* Demos.xcodeproj */; + }, + { + ProductGroup = B3982A4F29239F4700A82429 /* Products */; + ProjectRef = B3982A4E29239F4700A82429 /* dump_syms.xcodeproj */; + }, + { + ProductGroup = B398242129239F4400A82429 /* Products */; + ProjectRef = B398242029239F4400A82429 /* libzip.xcodeproj */; + }, + { + ProductGroup = B3982D4629239F4900A82429 /* Products */; + ProjectRef = B3982D4529239F4900A82429 /* minidump_test.xcodeproj */; + }, + { + ProductGroup = B3981A6E29239F3F00A82429 /* Products */; + ProjectRef = B3981A6D29239F3F00A82429 /* SDL.xcodeproj */; + }, + { + ProductGroup = B3981D0429239F4100A82429 /* Products */; + ProjectRef = B3981D0329239F4100A82429 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = B3981A6629239F3F00A82429 /* Products */; + ProjectRef = B3981A6529239F3F00A82429 /* SDLTest.xcodeproj */; + }, + { + ProductGroup = B3982A4029239F4700A82429 /* Products */; + ProjectRef = B3982A3F29239F4700A82429 /* symupload.xcodeproj */; + }, + { + ProductGroup = B3981CFD29239F4100A82429 /* Products */; + ProjectRef = B3981CFC29239F4100A82429 /* TestiPhoneOS.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVFlycast */, + B30178D2207C901D0051B93D /* flycast */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + B398301529239F4B00A82429 /* ___PROJECTNAME___.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "___PROJECTNAME___.app"; + remoteRef = B398301429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398302429239F4B00A82429 /* Breakpad.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Breakpad.framework; + remoteRef = B398302329239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398302629239F4B00A82429 /* Inspector */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = Inspector; + remoteRef = B398302529239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398302829239F4B00A82429 /* breakpadUtilities.dylib */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.dylib"; + path = breakpadUtilities.dylib; + remoteRef = B398302729239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398302A29239F4B00A82429 /* crash_report_sender.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = crash_report_sender.app; + remoteRef = B398302929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398302C29239F4B00A82429 /* BreakpadTest.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = BreakpadTest.app; + remoteRef = B398302B29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398302E29239F4B00A82429 /* UnitTests.octest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = UnitTests.octest; + remoteRef = B398302D29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398303029239F4B00A82429 /* generator_test */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = generator_test; + remoteRef = B398302F29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398303229239F4B00A82429 /* minidump_file_writer_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = minidump_file_writer_unittest; + remoteRef = B398303129239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398303429239F4B00A82429 /* handler_test */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = handler_test; + remoteRef = B398303329239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398303629239F4B00A82429 /* libgtest.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libgtest.a; + remoteRef = B398303529239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398303829239F4B00A82429 /* crash_generation_server_test */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = crash_generation_server_test; + remoteRef = B398303729239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398303A29239F4B00A82429 /* minidump_generator_test_helper */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = minidump_generator_test_helper; + remoteRef = B398303929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398303D29239F4B00A82429 /* libBreakpad.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libBreakpad.a; + remoteRef = B398303C29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398304029239F4B00A82429 /* crash_report */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = crash_report; + remoteRef = B398303F29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398304A29239F4B00A82429 /* Accel.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Accel.app; + remoteRef = B398304929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398304C29239F4B00A82429 /* Fireworks.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Fireworks.app; + remoteRef = B398304B29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398304E29239F4B00A82429 /* Happy.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Happy.app; + remoteRef = B398304D29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398305029239F4B00A82429 /* Happy-TV.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "Happy-TV.app"; + remoteRef = B398304F29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398305229239F4B00A82429 /* Keyboard.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Keyboard.app; + remoteRef = B398305129239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398305429239F4B00A82429 /* Mixer.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Mixer.app; + remoteRef = B398305329239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398305629239F4B00A82429 /* Rectangles.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Rectangles.app; + remoteRef = B398305529239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398305829239F4B00A82429 /* Touch.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Touch.app; + remoteRef = B398305729239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398306A29239F4B00A82429 /* dump_syms */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = dump_syms; + remoteRef = B398306929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398306C29239F4B00A82429 /* macho_dump */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = macho_dump; + remoteRef = B398306B29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398306E29239F4B00A82429 /* libgtestmockall.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libgtestmockall.a; + remoteRef = B398306D29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307029239F4B00A82429 /* byte_cursor_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = byte_cursor_unittest; + remoteRef = B398306F29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307229239F4B00A82429 /* macho_reader_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = macho_reader_unittest; + remoteRef = B398307129239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307429239F4B00A82429 /* stabs_reader_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = stabs_reader_unittest; + remoteRef = B398307329239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307629239F4B00A82429 /* bytereader_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = bytereader_unittest; + remoteRef = B398307529239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307829239F4B00A82429 /* dwarf2reader_cfi_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = dwarf2reader_cfi_unittest; + remoteRef = B398307729239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307A29239F4B00A82429 /* dwarf2diehandler_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = dwarf2diehandler_unittest; + remoteRef = B398307929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307C29239F4B00A82429 /* dwarf_cu_to_module_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = dwarf_cu_to_module_unittest; + remoteRef = B398307B29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398307E29239F4B00A82429 /* dwarf_line_to_module_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = dwarf_line_to_module_unittest; + remoteRef = B398307D29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398308029239F4B00A82429 /* dwarf_cfi_to_module_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = dwarf_cfi_to_module_unittest; + remoteRef = B398307F29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398308229239F4B00A82429 /* stabs_to_module_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = stabs_to_module_unittest; + remoteRef = B398308129239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398308429239F4B00A82429 /* module_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = module_unittest; + remoteRef = B398308329239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398308629239F4B00A82429 /* test_assembler_unittest */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = test_assembler_unittest; + remoteRef = B398308529239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398309829239F4B00A82429 /* libzip.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = libzip.framework; + remoteRef = B398309729239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398309A29239F4B00A82429 /* zipmerge */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = zipmerge; + remoteRef = B398309929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398309C29239F4B00A82429 /* zipcmp */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = zipcmp; + remoteRef = B398309B29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398309E29239F4B00A82429 /* in-memory */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = "in-memory"; + remoteRef = B398309D29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830A029239F4B00A82429 /* add_from_filep */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = add_from_filep; + remoteRef = B398309F29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830A229239F4B00A82429 /* can_clone_file */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = can_clone_file; + remoteRef = B39830A129239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830A429239F4B00A82429 /* fopen_unchanged */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = fopen_unchanged; + remoteRef = B39830A329239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830A629239F4B00A82429 /* fread */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = fread; + remoteRef = B39830A529239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830A829239F4B00A82429 /* hole */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = hole; + remoteRef = B39830A729239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830AA29239F4B00A82429 /* ziptool */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = ziptool; + remoteRef = B39830A929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830AC29239F4B00A82429 /* tryopen */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = tryopen; + remoteRef = B39830AB29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830AE29239F4B00A82429 /* ziptool_regress */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = ziptool_regress; + remoteRef = B39830AD29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830B629239F4B00A82429 /* generator_test */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = generator_test; + remoteRef = B39830B529239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830B829239F4B00A82429 /* handler_test */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = handler_test; + remoteRef = B39830B729239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830BA29239F4B00A82429 /* unit_test */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = unit_test; + remoteRef = B39830B929239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830BC29239F4B00A82429 /* minidump_tests64.cptest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = minidump_tests64.cptest; + remoteRef = B39830BB29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830BE29239F4B00A82429 /* minidump_tests32.cptest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = minidump_tests32.cptest; + remoteRef = B39830BD29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830C029239F4B00A82429 /* octestcases.octest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = octestcases.octest; + remoteRef = B39830BF29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830CF29239F4B00A82429 /* SDL2.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = SDL2.framework; + remoteRef = B39830CE29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830D129239F4B00A82429 /* SDL2.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = SDL2.framework; + remoteRef = B39830D029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830D329239F4B00A82429 /* SDL2.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = SDL2.framework; + remoteRef = B39830D229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830D529239F4B00A82429 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libSDL2.a; + remoteRef = B39830D429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830D729239F4B00A82429 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libSDL2.a; + remoteRef = B39830D629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830D929239F4B00A82429 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libSDL2.a; + remoteRef = B39830D829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830DB29239F4B00A82429 /* libSDL2.dylib */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.dylib"; + path = libSDL2.dylib; + remoteRef = B39830DA29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830DD29239F4B00A82429 /* libSDL2.dylib */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.dylib"; + path = libSDL2.dylib; + remoteRef = B39830DC29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830DF29239F4B00A82429 /* libSDL2.dylib */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.dylib"; + path = libSDL2.dylib; + remoteRef = B39830DE29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830E129239F4B00A82429 /* SDL2 */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = SDL2; + remoteRef = B39830E029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830E329239F4B00A82429 /* hidapi.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = hidapi.framework; + remoteRef = B39830E229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830E529239F4B00A82429 /* hidapi.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = hidapi.framework; + remoteRef = B39830E429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830E729239F4B00A82429 /* hidapi.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = hidapi.framework; + remoteRef = B39830E629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830EB29239F4B00A82429 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libSDL2test.a; + remoteRef = B39830EA29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39830ED29239F4B00A82429 /* libSDL2test-TV.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libSDL2test-TV.a"; + remoteRef = B39830EC29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398311F29239F4B00A82429 /* libSDL_test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libSDL_test.a; + remoteRef = B398311E29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312129239F4B00A82429 /* checkkeys */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = checkkeys; + remoteRef = B398312029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312329239F4B00A82429 /* controllermap */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = controllermap; + remoteRef = B398312229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312529239F4B00A82429 /* loopwave */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = loopwave; + remoteRef = B398312429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312729239F4B00A82429 /* testatomic */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testatomic; + remoteRef = B398312629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312929239F4B00A82429 /* testaudioinfo */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testaudioinfo; + remoteRef = B398312829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312B29239F4B00A82429 /* testdraw2 */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testdraw2; + remoteRef = B398312A29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312D29239F4B00A82429 /* testdrawchessboard */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testdrawchessboard; + remoteRef = B398312C29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398312F29239F4B00A82429 /* testdropfile.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testdropfile.app; + remoteRef = B398312E29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313129239F4B00A82429 /* testerror */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testerror; + remoteRef = B398313029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313329239F4B00A82429 /* testfile */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testfile; + remoteRef = B398313229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313529239F4B00A82429 /* testfilesystem */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testfilesystem; + remoteRef = B398313429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313729239F4B00A82429 /* testgamecontroller */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testgamecontroller; + remoteRef = B398313629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313929239F4B00A82429 /* testgesture */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testgesture; + remoteRef = B398313829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313B29239F4B00A82429 /* testgl2 */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testgl2; + remoteRef = B398313A29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313D29239F4B00A82429 /* testhaptic */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testhaptic; + remoteRef = B398313C29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398313F29239F4B00A82429 /* testhotplug */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testhotplug; + remoteRef = B398313E29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314129239F4B00A82429 /* testiconv */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testiconv; + remoteRef = B398314029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314329239F4B00A82429 /* testime */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testime; + remoteRef = B398314229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314529239F4B00A82429 /* testintersections */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testintersections; + remoteRef = B398314429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314729239F4B00A82429 /* testjoystick */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testjoystick; + remoteRef = B398314629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314929239F4B00A82429 /* testkeys */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testkeys; + remoteRef = B398314829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314B29239F4B00A82429 /* testloadso */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testloadso; + remoteRef = B398314A29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314D29239F4B00A82429 /* testlock */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testlock; + remoteRef = B398314C29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398314F29239F4B00A82429 /* testmessage */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testmessage; + remoteRef = B398314E29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315129239F4B00A82429 /* testmultiaudio */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testmultiaudio; + remoteRef = B398315029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315329239F4B00A82429 /* testnative */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testnative; + remoteRef = B398315229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315529239F4B00A82429 /* testoverlay2 */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testoverlay2; + remoteRef = B398315429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315729239F4B00A82429 /* testplatform */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testplatform; + remoteRef = B398315629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315929239F4B00A82429 /* testpower */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testpower; + remoteRef = B398315829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315B29239F4B00A82429 /* testrelative */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testrelative; + remoteRef = B398315A29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315D29239F4B00A82429 /* testrendercopyex */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testrendercopyex; + remoteRef = B398315C29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398315F29239F4B00A82429 /* testrendertarget */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testrendertarget; + remoteRef = B398315E29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316129239F4B00A82429 /* testresample */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testresample; + remoteRef = B398316029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316329239F4B00A82429 /* testrumble */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testrumble; + remoteRef = B398316229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316529239F4B00A82429 /* testscale */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testscale; + remoteRef = B398316429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316729239F4B00A82429 /* testsem */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testsem; + remoteRef = B398316629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316929239F4B00A82429 /* testshader */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testshader; + remoteRef = B398316829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316B29239F4B00A82429 /* testshape */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testshape; + remoteRef = B398316A29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316D29239F4B00A82429 /* testsprite2 */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testsprite2; + remoteRef = B398316C29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398316F29239F4B00A82429 /* testspriteminimal */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testspriteminimal; + remoteRef = B398316E29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398317129239F4B00A82429 /* teststreaming */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = teststreaming; + remoteRef = B398317029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398317329239F4B00A82429 /* testthread */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testthread; + remoteRef = B398317229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398317529239F4B00A82429 /* testtimer */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testtimer; + remoteRef = B398317429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398317729239F4B00A82429 /* testversion */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testversion; + remoteRef = B398317629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398317929239F4B00A82429 /* testwm2 */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = testwm2; + remoteRef = B398317829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398317B29239F4B00A82429 /* torturethread */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = torturethread; + remoteRef = B398317A29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398317F29239F4B00A82429 /* symupload */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = symupload; + remoteRef = B398317E29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B398318129239F4B00A82429 /* minidump_upload */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = minidump_upload; + remoteRef = B398318029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831A129239F4B00A82429 /* checkkeys.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = checkkeys.app; + remoteRef = B39831A029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831A329239F4B00A82429 /* controllermap.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = controllermap.app; + remoteRef = B39831A229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831A529239F4B00A82429 /* loopwav.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = loopwav.app; + remoteRef = B39831A429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831A729239F4B00A82429 /* loopwav-TV.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "loopwav-TV.app"; + remoteRef = B39831A629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831A929239F4B00A82429 /* testaudiocapture.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testaudiocapture.app; + remoteRef = B39831A829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831AB29239F4B00A82429 /* testaudioinfo.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testaudioinfo.app; + remoteRef = B39831AA29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831AD29239F4B00A82429 /* torturethread.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = torturethread.app; + remoteRef = B39831AC29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831AF29239F4B00A82429 /* testerror.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testerror.app; + remoteRef = B39831AE29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831B129239F4B00A82429 /* testfile.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testfile.app; + remoteRef = B39831B029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831B329239F4B00A82429 /* testgamecontroller.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testgamecontroller.app; + remoteRef = B39831B229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831B529239F4B00A82429 /* testgamecontroller-TV.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "testgamecontroller-TV.app"; + remoteRef = B39831B429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831B729239F4B00A82429 /* testgesture.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testgesture.app; + remoteRef = B39831B629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831B929239F4B00A82429 /* testgles.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testgles.app; + remoteRef = B39831B829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831BB29239F4B00A82429 /* testiconv.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testiconv.app; + remoteRef = B39831BA29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831BD29239F4B00A82429 /* testjoystick.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testjoystick.app; + remoteRef = B39831BC29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831BF29239F4B00A82429 /* testkeys.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testkeys.app; + remoteRef = B39831BE29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831C129239F4B00A82429 /* testlock.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testlock.app; + remoteRef = B39831C029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831C329239F4B00A82429 /* testplatform.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testplatform.app; + remoteRef = B39831C229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831C529239F4B00A82429 /* testpower.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testpower.app; + remoteRef = B39831C429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831C729239F4B00A82429 /* testrendertarget.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testrendertarget.app; + remoteRef = B39831C629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831C929239F4B00A82429 /* testscale.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testscale.app; + remoteRef = B39831C829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831CB29239F4B00A82429 /* testsem.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testsem.app; + remoteRef = B39831CA29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B39831CD29239F4B00A82429 /* testsensor.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testsensor.app; + remoteRef = B39831CC29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; - B3C7620D20783162009950E4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C7621520783162009950E4 /* PVFlycast.h in Headers */, - B3C76225207833DE009950E4 /* PVFlycastCore.h in Headers */, - B3447E9C218B826F00557ACE /* PVFlycast+Audio.h in Headers */, - B3447EB3218BC69700557ACE /* PVFlycastCore+Audio.h in Headers */, - B3447EAB218BC59D00557ACE /* PVFlycastCore+Saves.h in Headers */, - B3447EA3218BBFBC00557ACE /* PVFlycast+AudioTypes.h in Headers */, - B3447EA7218BC3A600557ACE /* PVFlycast+CoreAudio.h in Headers */, - B3447E9F218B858100557ACE /* PVFlycastCore+Controls.h in Headers */, - B3447EAF218BC5C500557ACE /* PVFlycastCore+Video.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; + B39831CF29239F4B00A82429 /* testsprite2.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testsprite2.app; + remoteRef = B39831CE29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - B30178D2207C901D0051B93D /* flycast-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "flycast-iOS" */; - buildPhases = ( - B30178CF207C901D0051B93D /* Sources */, - B30178D0207C901D0051B93D /* Frameworks */, - B30178D1207C901D0051B93D /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "flycast-iOS"; - productName = flycast; - productReference = B30178D3207C901D0051B93D /* libflycast-iOS.a */; - productType = "com.apple.product-type.library.static"; + B39831D129239F4B00A82429 /* testthread.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testthread.app; + remoteRef = B39831D029239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; - B3447EC0218BEDD200557ACE /* PVFlycast-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVFlycast-tvOS" */; - buildPhases = ( - B3447EC1218BEDD200557ACE /* Sources */, - B3447ECA218BEDD200557ACE /* Frameworks */, - B3447ED5218BEDD200557ACE /* Headers */, - B3447EDF218BEDD200557ACE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3DDF56F26E9B90400CE47F0 /* PBXTargetDependency */, - ); - name = "PVFlycast-tvOS"; - productName = PVFlycast; - productReference = B3447EE6218BEDD200557ACE /* PVFlycast.framework */; - productType = "com.apple.product-type.framework"; + B39831D329239F4B00A82429 /* testtimer.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testtimer.app; + remoteRef = B39831D229239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; - B3447EE8218BEE3F00557ACE /* flycast-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "flycast-tvOS" */; - buildPhases = ( - B3447EE9218BEE3F00557ACE /* Sources */, - B3447F8C218BEE3F00557ACE /* Frameworks */, - B3447F8D218BEE3F00557ACE /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "flycast-tvOS"; - productName = flycast; - productReference = B3447F91218BEE3F00557ACE /* libflycast-tvOS.a */; - productType = "com.apple.product-type.library.static"; + B39831D529239F4B00A82429 /* testver.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testver.app; + remoteRef = B39831D429239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; - B3C7620F20783162009950E4 /* PVFlycast-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFlycast-iOS" */; - buildPhases = ( - B3C7620B20783162009950E4 /* Sources */, - B3C7620C20783162009950E4 /* Frameworks */, - B3C7620D20783162009950E4 /* Headers */, - B3C7620E20783162009950E4 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVFlycast-iOS"; - productName = PVFlycast; - productReference = B3C7621020783162009950E4 /* PVFlycast.framework */; - productType = "com.apple.product-type.framework"; + B39831D729239F4B00A82429 /* testwm2.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testwm2.app; + remoteRef = B39831D629239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - B3C7620720783162009950E4 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - CLASSPREFIX = PV; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = "Provenance Emu"; - TargetAttributes = { - B30178D2207C901D0051B93D = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B3C7620F20783162009950E4 = { - CreatedOnToolsVersion = 9.3; - }; - }; - }; - buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFlycast" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = B3C7620620783162009950E4; - productRefGroup = B3C7621120783162009950E4 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - B3C7620F20783162009950E4 /* PVFlycast-iOS */, - B3447EC0218BEDD200557ACE /* PVFlycast-tvOS */, - B30178D2207C901D0051B93D /* flycast-iOS */, - B3447EE8218BEE3F00557ACE /* flycast-tvOS */, - ); + B39831D929239F4B00A82429 /* testyuv.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = testyuv.app; + remoteRef = B39831D829239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXProject section */ + B39831DB29239F4B00A82429 /* torturethread.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = torturethread.app; + remoteRef = B39831DA29239F4B00A82429 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - B3447EDF218BEDD200557ACE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B316B4E821926FE500693472 /* emu.cfg in Resources */, - B3447EE0218BEDD200557ACE /* Shader.fsh in Resources */, - B3447EE1218BEDD200557ACE /* Shader.vsh in Resources */, - B3447EE2218BEDD200557ACE /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620E20783162009950E4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( B316B4E721926FE500693472 /* emu.cfg in Resources */, - B333502820786BEB0036A448 /* Shader.fsh in Resources */, - B333502720786BD90036A448 /* Shader.vsh in Resources */, B33350262078619C0036A448 /* Core.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3695,352 +24796,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B30178F7207C908F0051B93D /* zip_free.c in Sources */, - B30178E8207C908F0051B93D /* holly_intc.cpp in Sources */, - B30178EF207C908F0051B93D /* zip_source_free.c in Sources */, - B3017957207C908F0051B93D /* sh4_opcodes.cpp in Sources */, - B3017935207C908F0051B93D /* pngpread.c in Sources */, - B30178FB207C908F0051B93D /* bsc.cpp in Sources */, - B30178E9207C908F0051B93D /* reios.cpp in Sources */, - B3017940207C908F0051B93D /* ubc.cpp in Sources */, - B301795B207C908F0051B93D /* decoder.cpp in Sources */, - B3017979207C908F0051B93D /* zip_error_clear.c in Sources */, - B301790E207C908F0051B93D /* zip_dirent.c in Sources */, - B301796E207C908F0051B93D /* reios_elf.cpp in Sources */, - B3017932207C908F0051B93D /* zip_stat_index.c in Sources */, - B30178F5207C908F0051B93D /* zip_unchange.c in Sources */, - B3017923207C908F0051B93D /* maple_cfg.cpp in Sources */, - B3017926207C908F0051B93D /* sb.cpp in Sources */, - B3017951207C908F0051B93D /* dsp.cpp in Sources */, - B301796C207C908F0051B93D /* nullDC.cpp in Sources */, - B3017925207C908F0051B93D /* shil.cpp in Sources */, - B3017930207C908F0051B93D /* rec_cpp.cpp in Sources */, - B3017955207C908F0051B93D /* pngerror.c in Sources */, - B3017942207C908F0051B93D /* stdclass.cpp in Sources */, - B301790F207C908F0051B93D /* common.cpp in Sources */, - B3017913207C908F0051B93D /* maple_helper.cpp in Sources */, - B3017946207C908F0051B93D /* ioctl.cpp in Sources */, - B301794B207C908F0051B93D /* virt_arm.cpp in Sources */, - B3017908207C908F0051B93D /* zip_unchange_all.c in Sources */, - B301792E207C908F0051B93D /* zip_file_get_offset.c in Sources */, - B3017943207C908F0051B93D /* pvr_mem.cpp in Sources */, - B30178ED207C908F0051B93D /* zip_error_get_sys_type.c in Sources */, - B3017917207C908F0051B93D /* sh4_opcode_list.cpp in Sources */, - B3017918207C908F0051B93D /* zip_error.c in Sources */, - B301793E207C908F0051B93D /* drkPvr.cpp in Sources */, - B30178DD207C908E0051B93D /* md5.cpp in Sources */, - B30178F0207C908F0051B93D /* pvr_regs.cpp in Sources */, - B30178FC207C908F0051B93D /* zip_stat_init.c in Sources */, - B301795D207C908F0051B93D /* zip_source_zip.c in Sources */, - B30178FD207C908F0051B93D /* sh4_mem.cpp in Sources */, - B301797C207C908F0051B93D /* zip_entry_new.c in Sources */, - B301796F207C908F0051B93D /* mkstemp.c in Sources */, - B3017924207C908F0051B93D /* zip_source_function.c in Sources */, - B30178F4207C908F0051B93D /* gltex.cpp in Sources */, - B301791F207C908F0051B93D /* zip_unchange_archive.c in Sources */, - B3017978207C908F0051B93D /* profiler.cpp in Sources */, - B3017949207C908F0051B93D /* cdipsr.cpp in Sources */, - B30178EE207C908F0051B93D /* audiobackend_pulseaudio.cpp in Sources */, - B3017911207C908F0051B93D /* zip_entry_free.c in Sources */, - B301796B207C908F0051B93D /* arm_init.c in Sources */, - B301794C207C908F0051B93D /* filter_neon_intrinsics.c in Sources */, - B3017952207C908F0051B93D /* zip_memdup.c in Sources */, - B3017912207C908F0051B93D /* zip_filerange_crc.c in Sources */, - B30178F8207C908F0051B93D /* zip_stat.c in Sources */, - B3017974207C908F0051B93D /* tmu.cpp in Sources */, - B301795E207C908F0051B93D /* maple_if.cpp in Sources */, - B3017954207C908F0051B93D /* pngwtran.c in Sources */, - B30178E2207C908F0051B93D /* chdr.cpp in Sources */, - B301790D207C908F0051B93D /* gdrom_hle.cpp in Sources */, - B30178FE207C908F0051B93D /* zip_source_file.c in Sources */, - B3017959207C908F0051B93D /* zip_delete.c in Sources */, - B3017971207C908F0051B93D /* pngwrite.c in Sources */, - B3017975207C908F0051B93D /* pngwio.c in Sources */, - B3017922207C908F0051B93D /* zip_error_get.c in Sources */, - B30178EC207C908F0051B93D /* pngread.c in Sources */, - B30178F1207C908F0051B93D /* ta_ctx.cpp in Sources */, - B3017973207C908F0051B93D /* Renderer_if.cpp in Sources */, - B3017916207C908F0051B93D /* nixprof.cpp in Sources */, - B301795F207C908F0051B93D /* coreio.cpp in Sources */, - B30178FF207C908F0051B93D /* zip_fclose.c in Sources */, - B3017961207C908F0051B93D /* pngrtran.c in Sources */, - B301792B207C908F0051B93D /* pngmem.c in Sources */, - B30178E7207C908F0051B93D /* zip_get_archive_flag.c in Sources */, - B3017907207C908F0051B93D /* chd.cpp in Sources */, - B301794E207C908F0051B93D /* serial.cpp in Sources */, - B3017939207C908F0051B93D /* elf.cpp in Sources */, - B301797A207C908F0051B93D /* descrambl.cpp in Sources */, - B3017965207C908F0051B93D /* arm7.cpp in Sources */, - B30178E5207C908F0051B93D /* spg.cpp in Sources */, - B3017970207C908F0051B93D /* zip_file_strerror.c in Sources */, - B30178EA207C908F0051B93D /* zip_add_dir.c in Sources */, - B3017953207C908F0051B93D /* elf64.cpp in Sources */, - B3017941207C908F0051B93D /* cfg.cpp in Sources */, - B3017958207C908F0051B93D /* gdromv3.cpp in Sources */, - B3017901207C908F0051B93D /* dmac.cpp in Sources */, - B301791A207C908F0051B93D /* zip_fopen_index.c in Sources */, - B301793D207C908F0051B93D /* cdi.cpp in Sources */, - B301796D207C908F0051B93D /* sh4_mmr.cpp in Sources */, - B3017969207C908F0051B93D /* zip_set_archive_flag.c in Sources */, - B30178F9207C908F0051B93D /* _vmem.cpp in Sources */, - B301793A207C908F0051B93D /* zip_get_name.c in Sources */, - B3017910207C908F0051B93D /* ccn.cpp in Sources */, - B301792D207C908F0051B93D /* blockmanager.cpp in Sources */, - B301794D207C908F0051B93D /* aica_mem.cpp in Sources */, - B30178F3207C908F0051B93D /* sb_mem.cpp in Sources */, - B301793C207C908F0051B93D /* sb_dma.cpp in Sources */, - B301791D207C908F0051B93D /* zip_unchange_data.c in Sources */, - B301790C207C908F0051B93D /* pngrio.c in Sources */, - B301793F207C908F0051B93D /* sh4_fpu.cpp in Sources */, - B3017968207C908F0051B93D /* pngwutil.c in Sources */, - B301791C207C908F0051B93D /* zip_get_file_comment.c in Sources */, - B301795C207C908F0051B93D /* mmu.cpp in Sources */, - B3017921207C908F0051B93D /* zip_new.c in Sources */, - B301796A207C908F0051B93D /* aica_if.cpp in Sources */, - B30178DC207C908E0051B93D /* zip_source_filep.c in Sources */, - B3017977207C908F0051B93D /* sh4_interpreter.cpp in Sources */, - B30178DF207C908F0051B93D /* zip_file_error_get.c in Sources */, - B3017963207C908F0051B93D /* audiostream.cpp in Sources */, - B3017914207C908F0051B93D /* pngtrans.c in Sources */, - B30178FA207C908F0051B93D /* elf32.cpp in Sources */, - B3017972207C908F0051B93D /* zip_add.c in Sources */, - B3017938207C908F0051B93D /* zip_error_to_str.c in Sources */, - B301793B207C908F0051B93D /* gldraw.cpp in Sources */, - B301794F207C908F0051B93D /* zip_set_name.c in Sources */, - B30178E0207C908F0051B93D /* zip_strerror.c in Sources */, - B301797D207C908F0051B93D /* zip_open.c in Sources */, - B301792A207C908F0051B93D /* zip_fopen.c in Sources */, - B3017936207C908F0051B93D /* rtc.cpp in Sources */, - B3017962207C908F0051B93D /* zip_get_num_files.c in Sources */, - B301792C207C908F0051B93D /* pngrutil.c in Sources */, - B301791E207C908F0051B93D /* zip_error_strerror.c in Sources */, - B3017909207C908F0051B93D /* zip_close.c in Sources */, - B3017945207C908F0051B93D /* vbaARM.cpp in Sources */, - B301794A207C908F0051B93D /* audiobackend_alsa.cpp in Sources */, - B3017966207C908F0051B93D /* intc.cpp in Sources */, - B3017964207C908F0051B93D /* zip_source_buffer.c in Sources */, - B301790A207C908F0051B93D /* zip_err_str.c in Sources */, - B301797B207C908F0051B93D /* zip_file_error_clear.c in Sources */, - B3017915207C908F0051B93D /* pvr_sb_regs.cpp in Sources */, - B3017903207C908F0051B93D /* gles.cpp in Sources */, - B301790B207C908F0051B93D /* rec_arm.cpp in Sources */, - B3017929207C908F0051B93D /* audiobackend_oss.cpp in Sources */, - B3017904207C908F0051B93D /* zip_get_archive_comment.c in Sources */, - B3017919207C908F0051B93D /* zip_set_file_comment.c in Sources */, - B3017947207C908F0051B93D /* cpg.cpp in Sources */, - B301795A207C908F0051B93D /* sha1.cpp in Sources */, - B30178E4207C908F0051B93D /* zip_fread.c in Sources */, - B30178F2207C908F0051B93D /* gdrom_response.cpp in Sources */, - B3017950207C908F0051B93D /* common.cpp in Sources */, - B3017927207C908F0051B93D /* maple_devs.cpp in Sources */, - B30178E1207C908F0051B93D /* TexCache.cpp in Sources */, - B3017934207C908F0051B93D /* zip_name_locate.c in Sources */, - B30178E3207C908F0051B93D /* zip_set_archive_comment.c in Sources */, - B301797E207C908F0051B93D /* driver.cpp in Sources */, - B3017937207C908F0051B93D /* ini.cpp in Sources */, - B3017948207C908F0051B93D /* pngget.c in Sources */, - B3017902207C908F0051B93D /* pngset.c in Sources */, - B30178EB207C908F0051B93D /* arm_mem.cpp in Sources */, - B301792F207C908F0051B93D /* ta.cpp in Sources */, - B3017931207C908F0051B93D /* sh4_sched.cpp in Sources */, - B3017928207C908F0051B93D /* png.c in Sources */, - B3017967207C908F0051B93D /* sh4_rom.cpp in Sources */, - B3017956207C908F0051B93D /* context.cpp in Sources */, - B30178DE207C908F0051B93D /* aica.cpp in Sources */, - B3017920207C908F0051B93D /* filter_neon.S in Sources */, - B30178F6207C908F0051B93D /* ImgReader.cpp in Sources */, - B301791B207C908F0051B93D /* ta_vtx.cpp in Sources */, - B3017905207C908F0051B93D /* sh4_core_regs.cpp in Sources */, - B3017900207C908F0051B93D /* gdi.cpp in Sources */, - B3017906207C908F0051B93D /* sgc_if.cpp in Sources */, - B3017960207C908F0051B93D /* zip_replace.c in Sources */, - B30178E6207C908F0051B93D /* zip_rename.c in Sources */, - B3017933207C908F0051B93D /* cl.cpp in Sources */, - B3017944207C908F0051B93D /* sh4_interrupts.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EC1218BEDD200557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EC2218BEDD200557ACE /* PVFlycast+Audio.mm in Sources */, - B3447EC3218BEDD200557ACE /* PVFlycastCore+Controls.mm in Sources */, - B3447EC4218BEDD200557ACE /* PVFlycastCore.mm in Sources */, - B3447EC5218BEDD200557ACE /* PVFlycastCore+Saves.m in Sources */, - B3447EC6218BEDD200557ACE /* PVFlycast.mm in Sources */, - B3447EC7218BEDD200557ACE /* PVFlycastCore+Video.m in Sources */, - B3447EC8218BEDD200557ACE /* PVFlycast+CoreAudio.mm in Sources */, - B3447EC9218BEDD200557ACE /* PVFlycastCore+Audio.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EE9218BEE3F00557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EEA218BEE3F00557ACE /* zip_free.c in Sources */, - B3447EEB218BEE3F00557ACE /* holly_intc.cpp in Sources */, - B3447EEC218BEE3F00557ACE /* zip_source_free.c in Sources */, - B3447EED218BEE3F00557ACE /* sh4_opcodes.cpp in Sources */, - B3447EEE218BEE3F00557ACE /* pngpread.c in Sources */, - B3447EEF218BEE3F00557ACE /* bsc.cpp in Sources */, - B3447EF0218BEE3F00557ACE /* reios.cpp in Sources */, - B3447EF1218BEE3F00557ACE /* ubc.cpp in Sources */, - B3447EF2218BEE3F00557ACE /* decoder.cpp in Sources */, - B3447EF3218BEE3F00557ACE /* zip_error_clear.c in Sources */, - B3447EF4218BEE3F00557ACE /* zip_dirent.c in Sources */, - B3447EF5218BEE3F00557ACE /* reios_elf.cpp in Sources */, - B3447EF6218BEE3F00557ACE /* zip_stat_index.c in Sources */, - B3447EF7218BEE3F00557ACE /* zip_unchange.c in Sources */, - B3447EF8218BEE3F00557ACE /* maple_cfg.cpp in Sources */, - B3447EF9218BEE3F00557ACE /* sb.cpp in Sources */, - B3447EFA218BEE3F00557ACE /* dsp.cpp in Sources */, - B3447EFB218BEE3F00557ACE /* nullDC.cpp in Sources */, - B3447EFC218BEE3F00557ACE /* shil.cpp in Sources */, - B3447EFD218BEE3F00557ACE /* rec_cpp.cpp in Sources */, - B3447EFE218BEE3F00557ACE /* pngerror.c in Sources */, - B3447EFF218BEE3F00557ACE /* stdclass.cpp in Sources */, - B3447F00218BEE3F00557ACE /* common.cpp in Sources */, - B3447F01218BEE3F00557ACE /* maple_helper.cpp in Sources */, - B3447F02218BEE3F00557ACE /* ioctl.cpp in Sources */, - B3447F03218BEE3F00557ACE /* virt_arm.cpp in Sources */, - B3447F04218BEE3F00557ACE /* zip_unchange_all.c in Sources */, - B3447F05218BEE3F00557ACE /* zip_file_get_offset.c in Sources */, - B3447F06218BEE3F00557ACE /* pvr_mem.cpp in Sources */, - B3447F07218BEE3F00557ACE /* zip_error_get_sys_type.c in Sources */, - B3447F08218BEE3F00557ACE /* sh4_opcode_list.cpp in Sources */, - B3447F09218BEE3F00557ACE /* zip_error.c in Sources */, - B3447F0A218BEE3F00557ACE /* drkPvr.cpp in Sources */, - B3447F0B218BEE3F00557ACE /* md5.cpp in Sources */, - B3447F0C218BEE3F00557ACE /* pvr_regs.cpp in Sources */, - B3447F0D218BEE3F00557ACE /* zip_stat_init.c in Sources */, - B3447F0E218BEE3F00557ACE /* zip_source_zip.c in Sources */, - B3447F0F218BEE3F00557ACE /* sh4_mem.cpp in Sources */, - B3447F10218BEE3F00557ACE /* zip_entry_new.c in Sources */, - B3447F11218BEE3F00557ACE /* mkstemp.c in Sources */, - B3447F12218BEE3F00557ACE /* zip_source_function.c in Sources */, - B3447F13218BEE3F00557ACE /* gltex.cpp in Sources */, - B3447F14218BEE3F00557ACE /* zip_unchange_archive.c in Sources */, - B3447F15218BEE3F00557ACE /* profiler.cpp in Sources */, - B3447F16218BEE3F00557ACE /* cdipsr.cpp in Sources */, - B3447F17218BEE3F00557ACE /* audiobackend_pulseaudio.cpp in Sources */, - B3447F18218BEE3F00557ACE /* zip_entry_free.c in Sources */, - B3447F19218BEE3F00557ACE /* arm_init.c in Sources */, - B3447F1A218BEE3F00557ACE /* filter_neon_intrinsics.c in Sources */, - B3447F1B218BEE3F00557ACE /* zip_memdup.c in Sources */, - B3447F1C218BEE3F00557ACE /* zip_filerange_crc.c in Sources */, - B3447F1D218BEE3F00557ACE /* zip_stat.c in Sources */, - B3447F1E218BEE3F00557ACE /* tmu.cpp in Sources */, - B3447F1F218BEE3F00557ACE /* maple_if.cpp in Sources */, - B3447F20218BEE3F00557ACE /* pngwtran.c in Sources */, - B3447F21218BEE3F00557ACE /* chdr.cpp in Sources */, - B3447F22218BEE3F00557ACE /* gdrom_hle.cpp in Sources */, - B3447F23218BEE3F00557ACE /* zip_source_file.c in Sources */, - B3447F24218BEE3F00557ACE /* zip_delete.c in Sources */, - B3447F25218BEE3F00557ACE /* pngwrite.c in Sources */, - B3447F26218BEE3F00557ACE /* pngwio.c in Sources */, - B3447F27218BEE3F00557ACE /* zip_error_get.c in Sources */, - B3447F28218BEE3F00557ACE /* pngread.c in Sources */, - B3447F29218BEE3F00557ACE /* ta_ctx.cpp in Sources */, - B3447F2A218BEE3F00557ACE /* Renderer_if.cpp in Sources */, - B3447F2B218BEE3F00557ACE /* nixprof.cpp in Sources */, - B3447F2C218BEE3F00557ACE /* coreio.cpp in Sources */, - B3447F2D218BEE3F00557ACE /* zip_fclose.c in Sources */, - B3447F2E218BEE3F00557ACE /* pngrtran.c in Sources */, - B3447F2F218BEE3F00557ACE /* pngmem.c in Sources */, - B3447F30218BEE3F00557ACE /* zip_get_archive_flag.c in Sources */, - B3447F31218BEE3F00557ACE /* chd.cpp in Sources */, - B3447F32218BEE3F00557ACE /* serial.cpp in Sources */, - B3447F33218BEE3F00557ACE /* elf.cpp in Sources */, - B3447F34218BEE3F00557ACE /* descrambl.cpp in Sources */, - B3447F35218BEE3F00557ACE /* arm7.cpp in Sources */, - B3447F36218BEE3F00557ACE /* spg.cpp in Sources */, - B3447F37218BEE3F00557ACE /* zip_file_strerror.c in Sources */, - B3447F38218BEE3F00557ACE /* zip_add_dir.c in Sources */, - B3447F39218BEE3F00557ACE /* elf64.cpp in Sources */, - B3447F3A218BEE3F00557ACE /* cfg.cpp in Sources */, - B3447F3B218BEE3F00557ACE /* gdromv3.cpp in Sources */, - B3447F3C218BEE3F00557ACE /* dmac.cpp in Sources */, - B3447F3D218BEE3F00557ACE /* zip_fopen_index.c in Sources */, - B3447F3E218BEE3F00557ACE /* cdi.cpp in Sources */, - B3447F3F218BEE3F00557ACE /* sh4_mmr.cpp in Sources */, - B3447F40218BEE3F00557ACE /* zip_set_archive_flag.c in Sources */, - B3447F41218BEE3F00557ACE /* _vmem.cpp in Sources */, - B3447F42218BEE3F00557ACE /* zip_get_name.c in Sources */, - B3447F43218BEE3F00557ACE /* ccn.cpp in Sources */, - B3447F44218BEE3F00557ACE /* blockmanager.cpp in Sources */, - B3447F45218BEE3F00557ACE /* aica_mem.cpp in Sources */, - B3447F46218BEE3F00557ACE /* sb_mem.cpp in Sources */, - B3447F47218BEE3F00557ACE /* sb_dma.cpp in Sources */, - B3447F48218BEE3F00557ACE /* zip_unchange_data.c in Sources */, - B3447F49218BEE3F00557ACE /* pngrio.c in Sources */, - B3447F4A218BEE3F00557ACE /* sh4_fpu.cpp in Sources */, - B3447F4B218BEE3F00557ACE /* pngwutil.c in Sources */, - B3447F4C218BEE3F00557ACE /* zip_get_file_comment.c in Sources */, - B3447F4D218BEE3F00557ACE /* mmu.cpp in Sources */, - B3447F4E218BEE3F00557ACE /* zip_new.c in Sources */, - B3447F4F218BEE3F00557ACE /* aica_if.cpp in Sources */, - B3447F50218BEE3F00557ACE /* zip_source_filep.c in Sources */, - B3447F51218BEE3F00557ACE /* sh4_interpreter.cpp in Sources */, - B3447F52218BEE3F00557ACE /* zip_file_error_get.c in Sources */, - B3447F53218BEE3F00557ACE /* audiostream.cpp in Sources */, - B3447F54218BEE3F00557ACE /* pngtrans.c in Sources */, - B3447F55218BEE3F00557ACE /* elf32.cpp in Sources */, - B3447F56218BEE3F00557ACE /* zip_add.c in Sources */, - B3447F57218BEE3F00557ACE /* zip_error_to_str.c in Sources */, - B3447F58218BEE3F00557ACE /* gldraw.cpp in Sources */, - B3447F59218BEE3F00557ACE /* zip_set_name.c in Sources */, - B3447F5A218BEE3F00557ACE /* zip_strerror.c in Sources */, - B3447F5B218BEE3F00557ACE /* zip_open.c in Sources */, - B3447F5C218BEE3F00557ACE /* zip_fopen.c in Sources */, - B3447F5D218BEE3F00557ACE /* rtc.cpp in Sources */, - B3447F5E218BEE3F00557ACE /* zip_get_num_files.c in Sources */, - B3447F5F218BEE3F00557ACE /* pngrutil.c in Sources */, - B3447F60218BEE3F00557ACE /* zip_error_strerror.c in Sources */, - B3447F61218BEE3F00557ACE /* zip_close.c in Sources */, - B3447F62218BEE3F00557ACE /* vbaARM.cpp in Sources */, - B3447F63218BEE3F00557ACE /* audiobackend_alsa.cpp in Sources */, - B3447F64218BEE3F00557ACE /* intc.cpp in Sources */, - B3447F65218BEE3F00557ACE /* zip_source_buffer.c in Sources */, - B3447F66218BEE3F00557ACE /* zip_err_str.c in Sources */, - B3447F67218BEE3F00557ACE /* zip_file_error_clear.c in Sources */, - B3447F68218BEE3F00557ACE /* pvr_sb_regs.cpp in Sources */, - B3447F69218BEE3F00557ACE /* gles.cpp in Sources */, - B3447F6A218BEE3F00557ACE /* rec_arm.cpp in Sources */, - B3447F6B218BEE3F00557ACE /* audiobackend_oss.cpp in Sources */, - B3447F6C218BEE3F00557ACE /* zip_get_archive_comment.c in Sources */, - B3447F6D218BEE3F00557ACE /* zip_set_file_comment.c in Sources */, - B3447F6E218BEE3F00557ACE /* cpg.cpp in Sources */, - B3447F6F218BEE3F00557ACE /* sha1.cpp in Sources */, - B3447F70218BEE3F00557ACE /* zip_fread.c in Sources */, - B3447F71218BEE3F00557ACE /* gdrom_response.cpp in Sources */, - B3447F72218BEE3F00557ACE /* common.cpp in Sources */, - B3447F73218BEE3F00557ACE /* maple_devs.cpp in Sources */, - B3447F74218BEE3F00557ACE /* TexCache.cpp in Sources */, - B3447F75218BEE3F00557ACE /* zip_name_locate.c in Sources */, - B3447F76218BEE3F00557ACE /* zip_set_archive_comment.c in Sources */, - B3447F77218BEE3F00557ACE /* driver.cpp in Sources */, - B3447F78218BEE3F00557ACE /* ini.cpp in Sources */, - B3447F79218BEE3F00557ACE /* pngget.c in Sources */, - B3447F7A218BEE3F00557ACE /* pngset.c in Sources */, - B3447F7B218BEE3F00557ACE /* arm_mem.cpp in Sources */, - B3447F7C218BEE3F00557ACE /* ta.cpp in Sources */, - B3447F7D218BEE3F00557ACE /* sh4_sched.cpp in Sources */, - B3447F7E218BEE3F00557ACE /* png.c in Sources */, - B3447F7F218BEE3F00557ACE /* sh4_rom.cpp in Sources */, - B3447F80218BEE3F00557ACE /* context.cpp in Sources */, - B3447F81218BEE3F00557ACE /* aica.cpp in Sources */, - B3447F82218BEE3F00557ACE /* filter_neon.S in Sources */, - B3447F83218BEE3F00557ACE /* ImgReader.cpp in Sources */, - B3447F84218BEE3F00557ACE /* ta_vtx.cpp in Sources */, - B3447F85218BEE3F00557ACE /* sh4_core_regs.cpp in Sources */, - B3447F86218BEE3F00557ACE /* gdi.cpp in Sources */, - B3447F87218BEE3F00557ACE /* sgc_if.cpp in Sources */, - B3447F88218BEE3F00557ACE /* zip_replace.c in Sources */, - B3447F89218BEE3F00557ACE /* zip_rename.c in Sources */, - B3447F8A218BEE3F00557ACE /* cl.cpp in Sources */, - B3447F8B218BEE3F00557ACE /* sh4_interrupts.cpp in Sources */, + B39831E229241A6500A82429 /* vmu_xhair.cpp in Sources */, + B39831E129241A6500A82429 /* libretro.cpp in Sources */, + B39831DE29241A6500A82429 /* LogManager.cpp in Sources */, + B39831DD29241A6500A82429 /* option.cpp in Sources */, + B39831E029241A6500A82429 /* audiostream.cpp in Sources */, + B39831DC292413EF00A82429 /* emulator.cpp in Sources */, + B39831DF29241A6500A82429 /* oslib.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4048,42 +24810,73 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3447E9D218B826F00557ACE /* PVFlycast+Audio.mm in Sources */, - B3447E9E218B857A00557ACE /* PVFlycastCore+Controls.mm in Sources */, B3C76226207833DE009950E4 /* PVFlycastCore.mm in Sources */, - B3447EAC218BC59D00557ACE /* PVFlycastCore+Saves.m in Sources */, - B3447EA1218B881000557ACE /* PVFlycast.mm in Sources */, - B3447EB0218BC5C500557ACE /* PVFlycastCore+Video.m in Sources */, - B3447EA5218BC36B00557ACE /* PVFlycast+CoreAudio.mm in Sources */, - B3447EB4218BC69700557ACE /* PVFlycastCore+Audio.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - B3DDF56F26E9B90400CE47F0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3447EE8218BEE3F00557ACE /* flycast-tvOS */; - targetProxy = B3DDF56E26E9B90400CE47F0 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin PBXVariantGroup section */ - B339433A20783CBD008DBAB4 /* MainMenu.xib */ = { + B3982D5F29239F4900A82429 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B3982D6029239F4900A82429 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B3982D6129239F4900A82429 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( - B339433B20783CBD008DBAB4 /* Base */, + B3982D6229239F4900A82429 /* English */, ); name = MainMenu.xib; sourceTree = ""; }; - B339434D20783CBD008DBAB4 /* Main.storyboard */ = { + B3982D7229239F4900A82429 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + B3982D7329239F4900A82429 /* de */, + B3982D7629239F4900A82429 /* ja */, + B3982D7A29239F4900A82429 /* English */, + B3982D7C29239F4900A82429 /* es */, + B3982D7F29239F4900A82429 /* sl */, + B3982D8129239F4900A82429 /* da */, + B3982D8329239F4900A82429 /* it */, + B3982D8629239F4900A82429 /* sv */, + B3982D8A29239F4900A82429 /* no */, + B3982D8C29239F4900A82429 /* tr */, + B3982D8E29239F4900A82429 /* fr */, + B3982D9129239F4900A82429 /* nl */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + B3982D7429239F4900A82429 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B3982D7529239F4900A82429 /* de */, + B3982D7729239F4900A82429 /* ja */, + B3982D7B29239F4900A82429 /* English */, + B3982D7D29239F4900A82429 /* es */, + B3982D8029239F4900A82429 /* sl */, + B3982D8229239F4900A82429 /* da */, + B3982D8429239F4900A82429 /* it */, + B3982D8729239F4900A82429 /* sv */, + B3982D8B29239F4900A82429 /* no */, + B3982D8D29239F4900A82429 /* tr */, + B3982D8F29239F4900A82429 /* fr */, + B3982D9229239F4900A82429 /* nl */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B3982F2D29239F4A00A82429 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( - B339434E20783CBD008DBAB4 /* Base */, + B3982F2E29239F4A00A82429 /* Base */, ); - name = Main.storyboard; + name = MainMenu.xib; sourceTree = ""; }; /* End PBXVariantGroup section */ @@ -4092,30 +24885,36 @@ B30178DA207C901D0051B93D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = flycast; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; }; name = Debug; }; B30178DB207C901D0051B93D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = flycast; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; }; name = Release; }; @@ -4161,7 +24960,7 @@ ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( RELEASE, @@ -4176,31 +24975,17 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/flycast-emulator/core/hw\"", - "\"$(SRCROOT)/flycast-emulator/core\"", - "\"$(SRCROOT)/flycast-emulator/core/deps\"", - "\"$(SRCROOT)/flycast-emulator/core/khronos\"", + "\"$(SRCROOT)/flycast/core/hw\"", + "\"$(SRCROOT)/flycast/core\"", + "\"$(SRCROOT)/flycast/core/khronos\"", + "\"$(SRCROOT)/flycast/core/deps/nowide/include\"", + "\"$(SRCROOT)/flycast/core/deps\"", + "\"$(SRCROOT)/flycast/core/deps/libzip/developer-xcode\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -4211,6 +24996,7 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4221,34 +25007,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVFlycast/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFlycast"; - PRODUCT_NAME = PVFlycast; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Archive; - }; - B324C5032191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVFlycast/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4257,131 +25016,31 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFlycast"; PRODUCT_NAME = PVFlycast; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; }; name = Archive; }; B324C5042191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Archive; - }; - B324C5052191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + PRODUCT_NAME = flycast; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; }; name = Archive; }; - B3447EE4218BEDD200557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVFlycast/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFlycast"; - PRODUCT_NAME = PVFlycast; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447EE5218BEDD200557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVFlycast/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFlycast"; - PRODUCT_NAME = PVFlycast; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - B3447F8F218BEE3F00557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447F90218BEE3F00557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; B3C7621620783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; @@ -4425,7 +25084,7 @@ ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -4441,17 +25100,18 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/flycast-emulator/core/hw\"", - "\"$(SRCROOT)/flycast-emulator/core\"", - "\"$(SRCROOT)/flycast-emulator/core/deps\"", - "\"$(SRCROOT)/flycast-emulator/core/khronos\"", + "\"$(SRCROOT)/flycast/core/hw\"", + "\"$(SRCROOT)/flycast/core\"", + "\"$(SRCROOT)/flycast/core/khronos\"", + "\"$(SRCROOT)/flycast/core/deps/nowide/include\"", + "\"$(SRCROOT)/flycast/core/deps\"", + "\"$(SRCROOT)/flycast/core/deps/libzip/developer-xcode\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -4500,7 +25160,7 @@ ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( RELEASE, @@ -4515,32 +25175,18 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/flycast-emulator/core/hw\"", - "\"$(SRCROOT)/flycast-emulator/core\"", - "\"$(SRCROOT)/flycast-emulator/core/deps\"", - "\"$(SRCROOT)/flycast-emulator/core/khronos\"", + "\"$(SRCROOT)/flycast/core/hw\"", + "\"$(SRCROOT)/flycast/core\"", + "\"$(SRCROOT)/flycast/core/khronos\"", + "\"$(SRCROOT)/flycast/core/deps/nowide/include\"", + "\"$(SRCROOT)/flycast/core/deps\"", + "\"$(SRCROOT)/flycast/core/deps/libzip/developer-xcode\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -4551,6 +25197,7 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4561,7 +25208,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVFlycast/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4571,13 +25218,16 @@ PRODUCT_NAME = PVFlycast; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; }; name = Debug; }; B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4588,7 +25238,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVFlycast/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4598,14 +25248,16 @@ PRODUCT_NAME = PVFlycast; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "flycast-iOS" */ = { + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "flycast" */ = { isa = XCConfigurationList; buildConfigurations = ( B30178DA207C901D0051B93D /* Debug */, @@ -4615,26 +25267,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVFlycast-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447EE4218BEDD200557ACE /* Debug */, - B3447EE5218BEDD200557ACE /* Release */, - B324C5032191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "flycast-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447F8F218BEE3F00557ACE /* Debug */, - B3447F90218BEE3F00557ACE /* Release */, - B324C5052191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFlycast" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4645,7 +25277,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFlycast-iOS" */ = { + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFlycast" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C7621920783162009950E4 /* Debug */, diff --git a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVFlycast.xcscheme b/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVFlycast.xcscheme new file mode 100644 index 0000000000..ef3d3bd573 --- /dev/null +++ b/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVFlycast.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVReicast-iOS.xcscheme b/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVReicast-iOS.xcscheme deleted file mode 100644 index d86392943e..0000000000 --- a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVReicast-iOS.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVReicast-tvOS.xcscheme b/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVReicast-tvOS.xcscheme deleted file mode 100644 index 1272417390..0000000000 --- a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/PVReicast-tvOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/reicast-iOS.xcscheme b/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/reicast-iOS.xcscheme deleted file mode 100644 index 730dfbdf9f..0000000000 --- a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/reicast-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/reicast-tvOS.xcscheme b/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/reicast-tvOS.xcscheme deleted file mode 100644 index 76741aeee4..0000000000 --- a/Cores/Flycast/PVFlycast.xcodeproj/xcshareddata/xcschemes/reicast-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Flycast/PVFlycast/PVFlycast.h b/Cores/Flycast/PVFlycast/PVFlycast.h index 6d024ca0f5..beed60c895 100644 --- a/Cores/Flycast/PVFlycast/PVFlycast.h +++ b/Cores/Flycast/PVFlycast/PVFlycast.h @@ -6,7 +6,7 @@ // Copyright © 2018 Provenance. All rights reserved. // -#import +#import //! Project version number for PVFlycast. FOUNDATION_EXPORT double PVFlycastVersionNumber; diff --git a/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore+Video.m b/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore+Video.m index dc4b75701c..e77b2f883e 100644 --- a/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore+Video.m +++ b/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore+Video.m @@ -9,9 +9,15 @@ #import "PVFlycastCore+Video.h" #import "PVFlycastCore.h" +#if !TARGET_OS_OSX #import #import #import +#else +#import +#import +#import +#endif @implementation PVFlycastCore (Video) diff --git a/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.h b/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.h index 47a0d8efb2..401ddc8c53 100644 --- a/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.h +++ b/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.h @@ -10,12 +10,12 @@ #import #import #import - +#import #define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; #define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; -@interface PVFlycastCore : PVEmulatorCore +@interface PVFlycastCore : PVLibRetroGLESCore { uint8_t padData[4][PVDreamcastButtonCount]; int8_t xAxis[4]; @@ -38,4 +38,4 @@ @end -extern __weak PVFlycastCore *_current; +//extern __weak PVFlycastCore *_current; diff --git a/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.mm b/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.mm index 6e5426673f..8d364c3114 100644 --- a/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.mm +++ b/Cores/Flycast/PVFlycastCore/Core/PVFlycastCore.mm @@ -20,13 +20,13 @@ #include "types.h" #include "profiler/profiler.h" #include "cfg/cfg.h" -#include "rend/rend.h" +//#include "rend/rend.h" #include "rend/TexCache.h" #include "hw/maple/maple_devs.h" #include "hw/maple/maple_if.h" #include "hw/maple/maple_cfg.h" -__weak PVFlycastCore *_current = 0; +//__weak PVFlycastCore *_current = 0; @interface PVFlycastCore() { @@ -37,16 +37,16 @@ @interface PVFlycastCore() { @end // Flycast function declerations -extern int screen_width,screen_height; -bool rend_single_frame(); -bool gles_init(); -extern int flycast_main(int argc, char* argv[]); -void common_linux_setup(); -int dc_init(int argc,wchar* argv[]); -void dc_run(); -void dc_term(); -void dc_stop(); -extern void MakeCurrentThreadRealTime(); +//extern int screen_width,screen_height; +//bool rend_single_frame(); +//bool gles_init(); +//extern int flycast_main(int argc, char* argv[]); +//void common_linux_setup(); +//int dc_init(int argc,wchar* argv[]); +//void dc_run(); +//void dc_term(); +//void dc_stop(); +//extern void MakeCurrentThreadRealTime(); bool inside_loop = true; static bool first_run = true;; @@ -68,10 +68,10 @@ - (instancetype)init { coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); coreWaitForExitSemaphore = dispatch_semaphore_create(0); - _videoWidth = screen_width = 640; - _videoHeight = screen_height = 480; - _videoBitDepth = 32; // ignored - videoDepthBitDepth = 0; // TODO +// _videoWidth = screen_width = 640; +// _videoHeight = screen_height = 480; +// _videoBitDepth = 32; // ignored +// videoDepthBitDepth = 0; // TODO sampleRate = 44100; @@ -143,31 +143,31 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { } - (void)printSettings { -#define LIST_OF_VARIABLES \ -X(dynarec.Enable) \ -X(dynarec.idleskip) \ -X(dreamcast.region) \ -X(dreamcast.region) \ -X(aica.LimitFPS) \ -X(aica.NoSound) \ -X(aica.NoBatch) \ -X(aica.GlobalFocus) \ -X(aica.BufferSize) \ -X(aica.OldSyncronousDma) \ -X(bios.UseReios) \ -X(rend.WideScreen) \ -X(rend.UseMipmaps) \ -X(pvr.MaxThreads) \ -X(pvr.SynchronousRender) - - - NSMutableString *s = [NSMutableString stringWithFormat:@"----------\nFlycast Settings:\n---------\n"]; -#define X(name) \ -[s appendString: [NSString stringWithFormat:@"%@ : %i\n", @#name , settings.name ]]; -LIST_OF_VARIABLES -#undef X - - ILOG(@"%@", s); +//#define LIST_OF_VARIABLES \ +//X(dynarec.Enable) \ +//X(dynarec.idleskip) \ +//X(dreamcast.region) \ +//X(dreamcast.region) \ +//X(aica.LimitFPS) \ +//X(aica.NoSound) \ +//X(aica.NoBatch) \ +//X(aica.GlobalFocus) \ +//X(aica.BufferSize) \ +//X(aica.OldSyncronousDma) \ +//X(bios.UseReios) \ +//X(rend.WideScreen) \ +//X(rend.UseMipmaps) \ +//X(pvr.MaxThreads) \ +//X(pvr.SynchronousRender) +// +// +// NSMutableString *s = [NSMutableString stringWithFormat:@"----------\nFlycast Settings:\n---------\n"]; +//#define X(name) \ +//[s appendString: [NSString stringWithFormat:@"%@ : %i\n", @#name , settings.name ]]; +//LIST_OF_VARIABLES +//#undef X +// +// ILOG(@"%@", s); } @@ -213,166 +213,166 @@ - (void)copyCFGIfMissing { } #pragma mark - Running -- (void)startEmulation { - if(!self.isRunning) { - [super startEmulation]; - [NSThread detachNewThreadSelector:@selector(runFlycastRenderThread) toTarget:self withObject:nil]; - } -} - -- (void)runFlycastEmuThread { - @autoreleasepool - { - [self flycastMain]; - - // Core returns - - // Unlock rendering thread - dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); - - [super stopEmulation]; - } -} - -- (void)runFlycastRenderThread { - @autoreleasepool - { - [self.renderDelegate startRenderingOnAlternateThread]; - BOOL success = gles_init(); - assert(success); - [NSThread detachNewThreadSelector:@selector(runFlycastEmuThread) toTarget:self withObject:nil]; - - CFAbsoluteTime lastTime = CFAbsoluteTimeGetCurrent(); - - while (!has_init) {} - while ( !shouldStop ) - { - [self.frontBufferCondition lock]; - while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; - [self.frontBufferCondition unlock]; - - CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); - CFTimeInterval deltaTime = now - lastTime; - while ( !shouldStop && !rend_single_frame() ) {} - [self swapBuffers]; - lastTime = now; - } - } -} - -- (void)flycastMain { - // #if !TARGET_OS_SIMULATOR - // install_prof_handler(1); - // #endif - - char *Args[3]; - const char *P; - - P = (const char *)[self.diskPath UTF8String]; - Args[0] = "dc"; - Args[1] = "-config"; - Args[2] = P&&P[0]? (char *)malloc(strlen(P)+32):0; - - if(Args[2]) - { - strcpy(Args[2],"config:image="); - strcat(Args[2],P); - } - - MakeCurrentThreadRealTime(); - - int argc = Args[2]? 3:1; - - // Set directories - set_user_config_dir(self.BIOSPath.UTF8String); - set_user_data_dir(self.BIOSPath.UTF8String); - // Shouuld be this, but it looks for BIOS there too and have to copy BIOS into battery saves dir of every game then - // set_user_data_dir(self.batterySavesPath.UTF8String); - - add_system_data_dir(self.BIOSPath.UTF8String); - add_system_config_dir(self.BIOSPath.UTF8String); - - NSString *systemPath = [self.diskPath stringByDeletingLastPathComponent]; - - NSString *configDirs = [NSString stringWithFormat:@"%@", systemPath]; - NSString *dataDirs = [NSString stringWithFormat:@"%@", systemPath]; - - setenv("XDG_CONFIG_DIRS", configDirs.UTF8String, true); - setenv("XDG_DATA_DIRS", dataDirs.UTF8String, true); - - ILOG(@"Config dir is: %s\n", get_writable_config_path("/").c_str()); - ILOG(@"Data dir is: %s\n", get_writable_data_path("/").c_str()); - - common_linux_setup(); - - settings.profile.run_counts=0; - - flycast_main(argc, Args); - - dispatch_semaphore_signal(coreWaitForExitSemaphore); -} - -int flycast_main(int argc, wchar* argv[]) { - int status = dc_init(argc, argv); - if (status != 0) { - ELOG(@"Flycast dc_init failed with code: %i", status); - return status; - } - - ILOG(@"Flycast init status: %i", status); - - [_current printSettings]; - - has_init = true; - - dc_run(); - - has_init = false; -// _current->shouldStop = true; - - dc_term(); - - return 0; -} - -- (void)setPauseEmulation:(BOOL)flag { - [super setPauseEmulation:flag]; - - if (flag) - { - dc_stop(); - dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; - } else { - dc_run(); - } -} - -- (void)stopEmulation { - has_init = false; - - // TODO: Call flycast stop command here - dc_term(); - self->shouldStop = YES; - dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; - - [super stopEmulation]; -} - -- (void)resetEmulation { - // TODO: Call flycast reset command here - plugins_Reset(true); - dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); - [self.frontBufferCondition lock]; - [self.frontBufferCondition signal]; - [self.frontBufferCondition unlock]; -} +//- (void)startEmulation { +// if(!self.isRunning) { +// [super startEmulation]; +// [NSThread detachNewThreadSelector:@selector(runFlycastRenderThread) toTarget:self withObject:nil]; +// } +//} +// +//- (void)runFlycastEmuThread { +// @autoreleasepool +// { +// [self flycastMain]; +// +// // Core returns +// +// // Unlock rendering thread +// dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// [super stopEmulation]; +// } +//} +// +//- (void)runFlycastRenderThread { +// @autoreleasepool +// { +// [self.renderDelegate startRenderingOnAlternateThread]; +// BOOL success = gles_init(); +// assert(success); +// [NSThread detachNewThreadSelector:@selector(runFlycastEmuThread) toTarget:self withObject:nil]; +// +// CFAbsoluteTime lastTime = CFAbsoluteTimeGetCurrent(); +// +// while (!has_init) {} +// while ( !shouldStop ) +// { +// [self.frontBufferCondition lock]; +// while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; +// [self.frontBufferCondition unlock]; +// +// CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); +// CFTimeInterval deltaTime = now - lastTime; +// while ( !shouldStop && !rend_single_frame() ) {} +// [self swapBuffers]; +// lastTime = now; +// } +// } +//} +// +//- (void)flycastMain { +// // #if !TARGET_OS_SIMULATOR +// // install_prof_handler(1); +// // #endif +// +// char *Args[3]; +// const char *P; +// +// P = (const char *)[self.diskPath UTF8String]; +// Args[0] = "dc"; +// Args[1] = "-config"; +// Args[2] = P&&P[0]? (char *)malloc(strlen(P)+32):0; +// +// if(Args[2]) +// { +// strcpy(Args[2],"config:image="); +// strcat(Args[2],P); +// } +// +// MakeCurrentThreadRealTime(); +// +// int argc = Args[2]? 3:1; +// +// // Set directories +// set_user_config_dir(self.BIOSPath.UTF8String); +// set_user_data_dir(self.BIOSPath.UTF8String); +// // Shouuld be this, but it looks for BIOS there too and have to copy BIOS into battery saves dir of every game then +// // set_user_data_dir(self.batterySavesPath.UTF8String); +// +// add_system_data_dir(self.BIOSPath.UTF8String); +// add_system_config_dir(self.BIOSPath.UTF8String); +// +// NSString *systemPath = [self.diskPath stringByDeletingLastPathComponent]; +// +// NSString *configDirs = [NSString stringWithFormat:@"%@", systemPath]; +// NSString *dataDirs = [NSString stringWithFormat:@"%@", systemPath]; +// +// setenv("XDG_CONFIG_DIRS", configDirs.UTF8String, true); +// setenv("XDG_DATA_DIRS", dataDirs.UTF8String, true); +// +// ILOG(@"Config dir is: %s\n", get_writable_config_path("/").c_str()); +// ILOG(@"Data dir is: %s\n", get_writable_data_path("/").c_str()); +// +// common_linux_setup(); +// +//// settings.profile.run_counts=0; +// +// flycast_main(argc, Args); +// +// dispatch_semaphore_signal(coreWaitForExitSemaphore); +//} +// +//int flycast_main(int argc, char* argv[]) { +// int status = dc_init(argc, argv); +// if (status != 0) { +// ELOG(@"Flycast dc_init failed with code: %i", status); +// return status; +// } +// +// ILOG(@"Flycast init status: %i", status); +// +// [_current printSettings]; +// +// has_init = true; +// +// dc_run(); +// +// has_init = false; +//// _current->shouldStop = true; +// +// dc_term(); +// +// return 0; +//} +// +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +// +// if (flag) +// { +// dc_stop(); +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// } else { +// dc_run(); +// } +//} +// +//- (void)stopEmulation { +// has_init = false; +// +// // TODO: Call flycast stop command here +// dc_term(); +// self->shouldStop = YES; +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // TODO: Call flycast reset command here +// plugins_Reset(true); +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} @end diff --git a/Cores/Flycast/PVFlycastCore/PVFlycast.mm b/Cores/Flycast/PVFlycastCore/PVFlycast.mm index 834a3f714a..2d57738fb5 100644 --- a/Cores/Flycast/PVFlycastCore/PVFlycast.mm +++ b/Cores/Flycast/PVFlycastCore/PVFlycast.mm @@ -149,7 +149,6 @@ int get_mic_data(unsigned char* ) { void* libPvr_GetRenderSurface() { return 0; - } bool gl_init(void*, void*) { diff --git a/Cores/FreeIntv/BuildFlags.xcconfig b/Cores/FreeIntv/BuildFlags.xcconfig new file mode 100644 index 0000000000..f705e9740b --- /dev/null +++ b/Cores/FreeIntv/BuildFlags.xcconfig @@ -0,0 +1,26 @@ +// +// BuildFlags.xcconfig +// PVFreeIntv +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/FreeIntv/FreeIntv b/Cores/FreeIntv/FreeIntv new file mode 160000 index 0000000000..665b7090be --- /dev/null +++ b/Cores/FreeIntv/FreeIntv @@ -0,0 +1 @@ +Subproject commit 665b7090be1c0f525a5db9ef2d408293f728432e diff --git a/Cores/FreeIntv/PVFreeIntv-Prefix.pch b/Cores/FreeIntv/PVFreeIntv-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.pbxproj b/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..43ad3e8e3f --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.pbxproj @@ -0,0 +1,1245 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVFreeIntvCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVFreeIntvCore.mm */; }; + B37022C92872554300B3F6DA /* PVFreeIntvCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVFreeIntvCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVFreeIntv.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVFreeIntv.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37CE7AC293F27950010B746 /* psg.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE7A8293F27870010B746 /* psg.c */; }; + B37CE7AD293F27950010B746 /* stic.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE771293F27870010B746 /* stic.c */; }; + B37CE7AE293F27950010B746 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE768293F27870010B746 /* memory.c */; }; + B37CE7AF293F27950010B746 /* cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE766293F27870010B746 /* cart.c */; }; + B37CE7B0293F27950010B746 /* intv.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE7AA293F27870010B746 /* intv.c */; }; + B37CE7B1293F27950010B746 /* controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE767293F27870010B746 /* controller.c */; }; + B37CE7B2293F27950010B746 /* ivoice.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE7AB293F27870010B746 /* ivoice.c */; }; + B37CE7B3293F27950010B746 /* osd.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE76B293F27870010B746 /* osd.c */; }; + B37CE7B4293F27950010B746 /* cp1610.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE769293F27870010B746 /* cp1610.c */; }; + B37CE7B5293F279A0010B746 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE765293F27870010B746 /* libretro.c */; }; + B37CE7B6293F28000010B746 /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE776293F27870010B746 /* encoding_utf.c */; }; + B37CE7B7293F28080010B746 /* compat_snprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE77C293F27870010B746 /* compat_snprintf.c */; }; + B37CE7B8293F28080010B746 /* compat_getopt.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE77D293F27870010B746 /* compat_getopt.c */; }; + B37CE7B9293F28080010B746 /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE77F293F27870010B746 /* fopen_utf8.c */; }; + B37CE7BA293F28080010B746 /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE77A293F27870010B746 /* compat_posix_string.c */; }; + B37CE7BC293F28080010B746 /* compat_strcasestr.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE77B293F27870010B746 /* compat_strcasestr.c */; }; + B37CE7BD293F28080010B746 /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE779293F27870010B746 /* compat_strl.c */; }; + B37CE7BE293F28080010B746 /* compat_fnmatch.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE77E293F27870010B746 /* compat_fnmatch.c */; }; + B37CE7BF293F280D0010B746 /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B37CE781293F27870010B746 /* file_path.c */; }; + B39768F82859E23200558958 /* libFreeIntv-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libFreeIntv-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilters = (driverkit, ios, tvos, watchos, ); }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3C998B629432E020024D2A2 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C998B529432E020024D2A2 /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; + B3EBB1FD2872B1A000EAEB37 /* libFreeIntv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libFreeIntv.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libFreeIntv.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFreeIntv.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libFreeIntv-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libFreeIntv-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVFreeIntv-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFreeIntv-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVFreeIntv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFreeIntv.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVFreeIntvCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFreeIntvCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVFreeIntvCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVFreeIntvCore.mm; sourceTree = ""; }; + B37CE731293F27870010B746 /* COPYING.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.txt; sourceTree = ""; }; + B37CE732293F27870010B746 /* 4-tris.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "4-tris.rom"; sourceTree = ""; }; + B37CE734293F27870010B746 /* 4_tris_sound_test.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4_tris_sound_test.png; sourceTree = ""; }; + B37CE735293F27870010B746 /* boxart_front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boxart_front.png; sourceTree = ""; }; + B37CE736293F27870010B746 /* 4_tris_in_game.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4_tris_in_game.png; sourceTree = ""; }; + B37CE737293F27870010B746 /* 4_tris_game_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4_tris_game_over.png; sourceTree = ""; }; + B37CE738293F27870010B746 /* 4_tris_easter_egg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4_tris_easter_egg.png; sourceTree = ""; }; + B37CE739293F27870010B746 /* 4_tris_title_screen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4_tris_title_screen.png; sourceTree = ""; }; + B37CE73A293F27870010B746 /* SOURCE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = SOURCE.txt; sourceTree = ""; }; + B37CE73B293F27870010B746 /* 4-tris.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "4-tris.bin"; sourceTree = ""; }; + B37CE73C293F27870010B746 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B37CE73D293F27870010B746 /* 4-tris.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = "4-tris.cfg"; sourceTree = ""; }; + B37CE73F293F27870010B746 /* nut1mrch.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = nut1mrch.asm; sourceTree = ""; }; + B37CE740293F27870010B746 /* nut1mrch.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = nut1mrch.txt; sourceTree = ""; }; + B37CE741293F27870010B746 /* trisfont */ = {isa = PBXFileReference; lastKnownFileType = text; path = trisfont; sourceTree = ""; }; + B37CE742293F27870010B746 /* pm16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pm16.c; sourceTree = ""; }; + B37CE743293F27870010B746 /* behappy.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = behappy.asm; sourceTree = ""; }; + B37CE744293F27870010B746 /* behappy3.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = behappy3.txt; sourceTree = ""; }; + B37CE745293F27870010B746 /* 4-tris.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "4-tris.lst"; sourceTree = ""; }; + B37CE746293F27870010B746 /* miscfont */ = {isa = PBXFileReference; lastKnownFileType = text; path = miscfont; sourceTree = ""; }; + B37CE747293F27870010B746 /* _ */ = {isa = PBXFileReference; lastKnownFileType = text; path = _; sourceTree = ""; }; + B37CE748293F27870010B746 /* 4-tris.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = "4-tris.asm"; sourceTree = ""; }; + B37CE749293F27870010B746 /* mkfont16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mkfont16.c; sourceTree = ""; }; + B37CE74A293F27870010B746 /* digits */ = {isa = PBXFileReference; lastKnownFileType = text; path = digits; sourceTree = ""; }; + B37CE74B293F27870010B746 /* chindnce.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = chindnce.asm; sourceTree = ""; }; + B37CE74C293F27870010B746 /* chindnce.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = chindnce.txt; sourceTree = ""; }; + B37CE74D293F27870010B746 /* font.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = font.asm; sourceTree = ""; }; + B37CE74E293F27870010B746 /* facefont */ = {isa = PBXFileReference; lastKnownFileType = text; path = facefont; sourceTree = ""; }; + B37CE74F293F27870010B746 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B37CE751293F27870010B746 /* retroarch.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = retroarch.cfg; sourceTree = ""; }; + B37CE752293F27870010B746 /* retropie.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = retropie.txt; sourceTree = ""; }; + B37CE753293F27870010B746 /* emulators.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = emulators.cfg; sourceTree = ""; }; + B37CE754293F27870010B746 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B37CE755293F27870010B746 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B37CE756293F27870010B746 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B37CE757293F27870010B746 /* ISSUE_TEMPLATE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ISSUE_TEMPLATE.md; sourceTree = ""; }; + B37CE758293F27870010B746 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B37CE75B293F27870010B746 /* compilation.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = compilation.yml; sourceTree = ""; }; + B37CE75C293F27870010B746 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B37CE75D293F27870010B746 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B37CE75F293F27870010B746 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B37CE760293F27870010B746 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B37CE762293F27870010B746 /* Mattel Intellivision - Games (TOSEC-v2014-01-18_CM).dat */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Mattel Intellivision - Games (TOSEC-v2014-01-18_CM).dat"; sourceTree = ""; }; + B37CE763293F27870010B746 /* Mattel Intellivision - Firmware (TOSEC-v2014-01-18_CM).dat */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Mattel Intellivision - Firmware (TOSEC-v2014-01-18_CM).dat"; sourceTree = ""; }; + B37CE765293F27870010B746 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B37CE766293F27870010B746 /* cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cart.c; sourceTree = ""; }; + B37CE767293F27870010B746 /* controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = controller.c; sourceTree = ""; }; + B37CE768293F27870010B746 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B37CE769293F27870010B746 /* cp1610.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cp1610.c; sourceTree = ""; }; + B37CE76A293F27870010B746 /* stic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stic.h; sourceTree = ""; }; + B37CE76B293F27870010B746 /* osd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osd.c; sourceTree = ""; }; + B37CE76C293F27870010B746 /* psg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psg.h; sourceTree = ""; }; + B37CE76D293F27870010B746 /* ivoice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ivoice.h; sourceTree = ""; }; + B37CE76E293F27870010B746 /* intv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intv.h; sourceTree = ""; }; + B37CE76F293F27870010B746 /* controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = controller.h; sourceTree = ""; }; + B37CE770293F27870010B746 /* cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cart.h; sourceTree = ""; }; + B37CE771293F27870010B746 /* stic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stic.c; sourceTree = ""; }; + B37CE772293F27870010B746 /* cp1610.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cp1610.h; sourceTree = ""; }; + B37CE776293F27870010B746 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B37CE778293F27870010B746 /* compat_ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_ifaddrs.c; sourceTree = ""; }; + B37CE779293F27870010B746 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B37CE77A293F27870010B746 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B37CE77B293F27870010B746 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B37CE77C293F27870010B746 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B37CE77D293F27870010B746 /* compat_getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_getopt.c; sourceTree = ""; }; + B37CE77E293F27870010B746 /* compat_fnmatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch.c; sourceTree = ""; }; + B37CE77F293F27870010B746 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B37CE781293F27870010B746 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B37CE784293F27870010B746 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B37CE786293F27870010B746 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B37CE787293F27870010B746 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B37CE788293F27870010B746 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B37CE78A293F27870010B746 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B37CE78B293F27870010B746 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B37CE78C293F27870010B746 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B37CE78D293F27870010B746 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B37CE78F293F27870010B746 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B37CE790293F27870010B746 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B37CE791293F27870010B746 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B37CE792293F27870010B746 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B37CE793293F27870010B746 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B37CE794293F27870010B746 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B37CE795293F27870010B746 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B37CE796293F27870010B746 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B37CE797293F27870010B746 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B37CE798293F27870010B746 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B37CE799293F27870010B746 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B37CE79A293F27870010B746 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B37CE79C293F27870010B746 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B37CE79D293F27870010B746 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B37CE79E293F27870010B746 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B37CE79F293F27870010B746 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B37CE7A0293F27870010B746 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B37CE7A1293F27870010B746 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B37CE7A2293F27870010B746 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B37CE7A3293F27870010B746 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B37CE7A4293F27870010B746 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B37CE7A6293F27870010B746 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B37CE7A7293F27870010B746 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B37CE7A8293F27870010B746 /* psg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psg.c; sourceTree = ""; }; + B37CE7A9293F27870010B746 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B37CE7AA293F27870010B746 /* intv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = intv.c; sourceTree = ""; }; + B37CE7AB293F27870010B746 /* ivoice.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ivoice.c; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVFreeIntv.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFreeIntv.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C998B529432E020024D2A2 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1FD2872B1A000EAEB37 /* libFreeIntv.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libFreeIntv-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C998B629432E020024D2A2 /* OpenGL.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVFreeIntv */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVFreeIntv.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVFreeIntv; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVFreeIntvCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVFreeIntvCore.h */, + B37022C6287253B300B3F6DA /* PVFreeIntvCore.mm */, + ); + path = PVFreeIntvCore; + sourceTree = ""; + }; + B37CE72E293F27870010B746 /* FreeIntv */ = { + isa = PBXGroup; + children = ( + B37CE758293F27870010B746 /* .gitignore */, + B37CE74F293F27870010B746 /* LICENSE */, + B37CE754293F27870010B746 /* Makefile */, + B37CE755293F27870010B746 /* Makefile.common */, + B37CE757293F27870010B746 /* ISSUE_TEMPLATE.md */, + B37CE756293F27870010B746 /* README.md */, + B37CE75D293F27870010B746 /* link.T */, + B37CE75C293F27870010B746 /* .gitlab-ci.yml */, + B37CE759293F27870010B746 /* .github */, + B37CE75E293F27870010B746 /* jni */, + B37CE761293F27870010B746 /* metadata */, + B37CE72F293F27870010B746 /* open-content */, + B37CE750293F27870010B746 /* retropie */, + B37CE764293F27870010B746 /* src */, + ); + path = FreeIntv; + sourceTree = ""; + }; + B37CE72F293F27870010B746 /* open-content */ = { + isa = PBXGroup; + children = ( + B37CE730293F27870010B746 /* 4-Tris */, + ); + path = "open-content"; + sourceTree = ""; + }; + B37CE730293F27870010B746 /* 4-Tris */ = { + isa = PBXGroup; + children = ( + B37CE731293F27870010B746 /* COPYING.txt */, + B37CE732293F27870010B746 /* 4-tris.rom */, + B37CE733293F27870010B746 /* images */, + B37CE73A293F27870010B746 /* SOURCE.txt */, + B37CE73B293F27870010B746 /* 4-tris.bin */, + B37CE73C293F27870010B746 /* README.txt */, + B37CE73D293F27870010B746 /* 4-tris.cfg */, + B37CE73E293F27870010B746 /* src */, + ); + path = "4-Tris"; + sourceTree = ""; + }; + B37CE733293F27870010B746 /* images */ = { + isa = PBXGroup; + children = ( + B37CE734293F27870010B746 /* 4_tris_sound_test.png */, + B37CE735293F27870010B746 /* boxart_front.png */, + B37CE736293F27870010B746 /* 4_tris_in_game.png */, + B37CE737293F27870010B746 /* 4_tris_game_over.png */, + B37CE738293F27870010B746 /* 4_tris_easter_egg.png */, + B37CE739293F27870010B746 /* 4_tris_title_screen.png */, + ); + path = images; + sourceTree = ""; + }; + B37CE73E293F27870010B746 /* src */ = { + isa = PBXGroup; + children = ( + B37CE73F293F27870010B746 /* nut1mrch.asm */, + B37CE740293F27870010B746 /* nut1mrch.txt */, + B37CE741293F27870010B746 /* trisfont */, + B37CE742293F27870010B746 /* pm16.c */, + B37CE743293F27870010B746 /* behappy.asm */, + B37CE744293F27870010B746 /* behappy3.txt */, + B37CE745293F27870010B746 /* 4-tris.lst */, + B37CE746293F27870010B746 /* miscfont */, + B37CE747293F27870010B746 /* _ */, + B37CE748293F27870010B746 /* 4-tris.asm */, + B37CE749293F27870010B746 /* mkfont16.c */, + B37CE74A293F27870010B746 /* digits */, + B37CE74B293F27870010B746 /* chindnce.asm */, + B37CE74C293F27870010B746 /* chindnce.txt */, + B37CE74D293F27870010B746 /* font.asm */, + B37CE74E293F27870010B746 /* facefont */, + ); + path = src; + sourceTree = ""; + }; + B37CE750293F27870010B746 /* retropie */ = { + isa = PBXGroup; + children = ( + B37CE751293F27870010B746 /* retroarch.cfg */, + B37CE752293F27870010B746 /* retropie.txt */, + B37CE753293F27870010B746 /* emulators.cfg */, + ); + path = retropie; + sourceTree = ""; + }; + B37CE759293F27870010B746 /* .github */ = { + isa = PBXGroup; + children = ( + B37CE75A293F27870010B746 /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B37CE75A293F27870010B746 /* workflows */ = { + isa = PBXGroup; + children = ( + B37CE75B293F27870010B746 /* compilation.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B37CE75E293F27870010B746 /* jni */ = { + isa = PBXGroup; + children = ( + B37CE75F293F27870010B746 /* Android.mk */, + B37CE760293F27870010B746 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B37CE761293F27870010B746 /* metadata */ = { + isa = PBXGroup; + children = ( + B37CE762293F27870010B746 /* Mattel Intellivision - Games (TOSEC-v2014-01-18_CM).dat */, + B37CE763293F27870010B746 /* Mattel Intellivision - Firmware (TOSEC-v2014-01-18_CM).dat */, + ); + path = metadata; + sourceTree = ""; + }; + B37CE764293F27870010B746 /* src */ = { + isa = PBXGroup; + children = ( + B37CE766293F27870010B746 /* cart.c */, + B37CE767293F27870010B746 /* controller.c */, + B37CE769293F27870010B746 /* cp1610.c */, + B37CE7AA293F27870010B746 /* intv.c */, + B37CE7AB293F27870010B746 /* ivoice.c */, + B37CE765293F27870010B746 /* libretro.c */, + B37CE768293F27870010B746 /* memory.c */, + B37CE76B293F27870010B746 /* osd.c */, + B37CE7A8293F27870010B746 /* psg.c */, + B37CE771293F27870010B746 /* stic.c */, + B37CE770293F27870010B746 /* cart.h */, + B37CE76F293F27870010B746 /* controller.h */, + B37CE772293F27870010B746 /* cp1610.h */, + B37CE76E293F27870010B746 /* intv.h */, + B37CE76D293F27870010B746 /* ivoice.h */, + B37CE7A7293F27870010B746 /* memory.h */, + B37CE7A9293F27870010B746 /* osd.h */, + B37CE76C293F27870010B746 /* psg.h */, + B37CE76A293F27870010B746 /* stic.h */, + B37CE773293F27870010B746 /* deps */, + ); + path = src; + sourceTree = ""; + }; + B37CE773293F27870010B746 /* deps */ = { + isa = PBXGroup; + children = ( + B37CE774293F27870010B746 /* libretro-common */, + ); + path = deps; + sourceTree = ""; + }; + B37CE774293F27870010B746 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B37CE775293F27870010B746 /* encodings */, + B37CE777293F27870010B746 /* compat */, + B37CE780293F27870010B746 /* file */, + B37CE782293F27870010B746 /* include */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B37CE775293F27870010B746 /* encodings */ = { + isa = PBXGroup; + children = ( + B37CE776293F27870010B746 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B37CE777293F27870010B746 /* compat */ = { + isa = PBXGroup; + children = ( + B37CE778293F27870010B746 /* compat_ifaddrs.c */, + B37CE779293F27870010B746 /* compat_strl.c */, + B37CE77A293F27870010B746 /* compat_posix_string.c */, + B37CE77B293F27870010B746 /* compat_strcasestr.c */, + B37CE77C293F27870010B746 /* compat_snprintf.c */, + B37CE77D293F27870010B746 /* compat_getopt.c */, + B37CE77E293F27870010B746 /* compat_fnmatch.c */, + B37CE77F293F27870010B746 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B37CE780293F27870010B746 /* file */ = { + isa = PBXGroup; + children = ( + B37CE781293F27870010B746 /* file_path.c */, + ); + path = file; + sourceTree = ""; + }; + B37CE782293F27870010B746 /* include */ = { + isa = PBXGroup; + children = ( + B37CE7A0293F27870010B746 /* boolean.h */, + B37CE7A2293F27870010B746 /* libretro.h */, + B37CE7A1293F27870010B746 /* memmap.h */, + B37CE7A4293F27870010B746 /* retro_assert.h */, + B37CE79A293F27870010B746 /* retro_common_api.h */, + B37CE7A3293F27870010B746 /* retro_common.h */, + B37CE79D293F27870010B746 /* retro_environment.h */, + B37CE79E293F27870010B746 /* retro_inline.h */, + B37CE79F293F27870010B746 /* retro_miscellaneous.h */, + B37CE789293F27870010B746 /* compat */, + B37CE783293F27870010B746 /* encodings */, + B37CE79B293F27870010B746 /* file */, + B37CE7A5293F27870010B746 /* string */, + B37CE785293F27870010B746 /* vfs */, + ); + path = include; + sourceTree = ""; + }; + B37CE783293F27870010B746 /* encodings */ = { + isa = PBXGroup; + children = ( + B37CE784293F27870010B746 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B37CE785293F27870010B746 /* vfs */ = { + isa = PBXGroup; + children = ( + B37CE786293F27870010B746 /* vfs.h */, + B37CE787293F27870010B746 /* vfs_implementation.h */, + B37CE788293F27870010B746 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B37CE789293F27870010B746 /* compat */ = { + isa = PBXGroup; + children = ( + B37CE78A293F27870010B746 /* apple_compat.h */, + B37CE78B293F27870010B746 /* zutil.h */, + B37CE78C293F27870010B746 /* strl.h */, + B37CE78D293F27870010B746 /* strcasestr.h */, + B37CE78E293F27870010B746 /* msvc */, + B37CE790293F27870010B746 /* fopen_utf8.h */, + B37CE791293F27870010B746 /* zconf.h.in */, + B37CE792293F27870010B746 /* intrinsics.h */, + B37CE793293F27870010B746 /* posix_string.h */, + B37CE794293F27870010B746 /* getopt.h */, + B37CE795293F27870010B746 /* fnmatch.h */, + B37CE796293F27870010B746 /* msvc.h */, + B37CE797293F27870010B746 /* zlib.h */, + B37CE798293F27870010B746 /* ifaddrs.h */, + B37CE799293F27870010B746 /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B37CE78E293F27870010B746 /* msvc */ = { + isa = PBXGroup; + children = ( + B37CE78F293F27870010B746 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B37CE79B293F27870010B746 /* file */ = { + isa = PBXGroup; + children = ( + B37CE79C293F27870010B746 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B37CE7A5293F27870010B746 /* string */ = { + isa = PBXGroup; + children = ( + B37CE7A6293F27870010B746 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B37CE72E293F27870010B746 /* FreeIntv */, + B37022BE287253B300B3F6DA /* PVFreeIntv */, + B37022C4287253B300B3F6DA /* PVFreeIntvCore */, + B37022BD287253B300B3F6DA /* PVFreeIntv-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVFreeIntv.framework */, + B30178D3207C901D0051B93D /* libFreeIntv.a */, + B3344BC32859E088006E6B3A /* libFreeIntv-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3C998B529432E020024D2A2 /* OpenGL.framework */, + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVFreeIntv.h in Headers */, + B37022C92872554300B3F6DA /* PVFreeIntvCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* FreeIntv */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "FreeIntv" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FreeIntv; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libFreeIntv.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* FreeIntv-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "FreeIntv-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "FreeIntv-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libFreeIntv-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVFreeIntv */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFreeIntv" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVFreeIntv; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVFreeIntv.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFreeIntv" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVFreeIntv */, + B3344B522859E088006E6B3A /* FreeIntv-libretro */, + B30178D2207C901D0051B93D /* FreeIntv */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37CE7B2293F27950010B746 /* ivoice.c in Sources */, + B37CE7B0293F27950010B746 /* intv.c in Sources */, + B37CE7B1293F27950010B746 /* controller.c in Sources */, + B37CE7AD293F27950010B746 /* stic.c in Sources */, + B37CE7B3293F27950010B746 /* osd.c in Sources */, + B37CE7AF293F27950010B746 /* cart.c in Sources */, + B37CE7B4293F27950010B746 /* cp1610.c in Sources */, + B37CE7AE293F27950010B746 /* memory.c in Sources */, + B37CE7AC293F27950010B746 /* psg.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37CE7B6293F28000010B746 /* encoding_utf.c in Sources */, + B37CE7B9293F28080010B746 /* fopen_utf8.c in Sources */, + B37CE7BA293F28080010B746 /* compat_posix_string.c in Sources */, + B37CE7BE293F28080010B746 /* compat_fnmatch.c in Sources */, + B37CE7BD293F28080010B746 /* compat_strl.c in Sources */, + B37CE7B7293F28080010B746 /* compat_snprintf.c in Sources */, + B37CE7BF293F280D0010B746 /* file_path.c in Sources */, + B37CE7B8293F28080010B746 /* compat_getopt.c in Sources */, + B37CE7BC293F28080010B746 /* compat_strcasestr.c in Sources */, + B37CE7B5293F279A0010B746 /* libretro.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVFreeIntvCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* FreeIntv-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = FreeIntv; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = FreeIntv; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/FreeIntv/src/deps/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFreeIntv/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFreeIntv"; + PRODUCT_NAME = PVFreeIntv; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = FreeIntv; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "FreeIntv-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "FreeIntv-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "FreeIntv-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/FreeIntv/src/deps/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/FreeIntv/src/deps/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFreeIntv/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFreeIntv"; + PRODUCT_NAME = PVFreeIntv; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFreeIntv/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFreeIntv"; + PRODUCT_NAME = PVFreeIntv; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "FreeIntv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "FreeIntv-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFreeIntv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFreeIntv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/FreeIntv/PVFreeIntv.xcodeproj/xcshareddata/xcschemes/PVFreeIntv.xcscheme b/Cores/FreeIntv/PVFreeIntv.xcodeproj/xcshareddata/xcschemes/PVFreeIntv.xcscheme new file mode 100644 index 0000000000..325a18922a --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv.xcodeproj/xcshareddata/xcschemes/PVFreeIntv.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/FreeIntv/PVFreeIntv/Core.plist b/Cores/FreeIntv/PVFreeIntv/Core.plist new file mode 100644 index 0000000000..d80edd209d --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.FreeIntv + PVPrincipleClass + PVFreeIntvCore + PVSupportedSystems + + com.provenance.intellivision + + PVProjectName + FreeIntv + PVProjectURL + https://github.com/libretro/FreeIntv + PVProjectVersion + 2018.1.5 + + diff --git a/Cores/FreeIntv/PVFreeIntv/Info.plist b/Cores/FreeIntv/PVFreeIntv/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/FreeIntv/PVFreeIntv/PVFreeIntv.h b/Cores/FreeIntv/PVFreeIntv/PVFreeIntv.h new file mode 100644 index 0000000000..6620e61de9 --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntv/PVFreeIntv.h @@ -0,0 +1,18 @@ +// +// PVFreeIntv.h +// PVFreeIntv +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVFreeIntv. +FOUNDATION_EXPORT double PVFreeIntvVersionNumber; + +//! Project version string for PVFreeIntv. +FOUNDATION_EXPORT const unsigned char PVFreeIntvVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/FreeIntv/PVFreeIntvCore/PVFreeIntvCore.h b/Cores/FreeIntv/PVFreeIntvCore/PVFreeIntvCore.h new file mode 100644 index 0000000000..c5d32712f4 --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntvCore/PVFreeIntvCore.h @@ -0,0 +1,43 @@ +// +// PVFreeIntvCore.h +// PVFreeIntv +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVFreeIntvCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/FreeIntv/PVFreeIntvCore/PVFreeIntvCore.mm b/Cores/FreeIntv/PVFreeIntvCore/PVFreeIntvCore.mm new file mode 100644 index 0000000000..7658b99d49 --- /dev/null +++ b/Cores/FreeIntv/PVFreeIntvCore/PVFreeIntvCore.mm @@ -0,0 +1,262 @@ +// +// PVFreeIntvCore.m +// PVFreeIntv +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVFreeIntvCore.h" +#include +//#import "PVFreeIntvCore+Controls.h" +//#import "PVFreeIntvCore+Audio.h" +//#import "PVFreeIntvCore+Video.h" +// +//#import "PVFreeIntvCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVFreeIntvCore() { + +} + +@end + +#pragma mark - PVFreeIntvCore Begin + +@implementation PVFreeIntvCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 59.92; +// return 60; +} + +//- (CGSize)aspectSize { +// return CGSizeMake(4, 3); +//} +// +//- (CGSize)bufferSize { +// return CGSizeMake(1024, 768); +//} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT +#if !TARGET_OS_MAC && !TARGET_OS_MACCATALYST + return GL_RGB565; +#else + return GL_UNSIGNED_SHORT_5_6_5; +#endif +} + + +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +# pragma mark - Audio + +- (double)audioSampleRate { + return 48000; +} + +#if 0 +const struct retro_variable vars[] = { + { "FreeIntv_mode", "MSX Mode; MSX2+|MSX1|MSX2" }, + { "FreeIntv_video_mode", "MSX Video Mode; NTSC|PAL|Dynamic" }, + { "FreeIntv_hires", "Support high resolution; Off|Interlaced|Progressive" }, + { "FreeIntv_overscan", "Support overscan; No|Yes" }, + { "FreeIntv_mapper_type_mode", "MSX Mapper Type Mode; " + "Guess|" + "Generic 8kB|" + "Generic 16kB|" + "Konami5 8kB|" + "Konami4 8kB|" + "ASCII 8kB|" + "ASCII 16kB|" + "GameMaster2|" + "FMPAC" + }, + { "FreeIntv_ram_pages", "MSX Main Memory; Auto|64KB|128KB|256KB|512KB|4MB" }, + { "FreeIntv_vram_pages", "MSX Video Memory; Auto|32KB|64KB|128KB|192KB" }, + { "FreeIntv_log_level", "FreeIntv logging; Off|Info|Debug|Spam" }, + { "FreeIntv_game_master", "Support Game Master; No|Yes" }, + { "FreeIntv_simbdos", "Simulate DiskROM disk access calls; No|Yes" }, + { "FreeIntv_autospace", "Use autofire on SPACE; No|Yes" }, + { "FreeIntv_allsprites", "Show all sprites; No|Yes" }, + { "FreeIntv_font", "Text font; standard|DEFAULT.FNT|ITALIC.FNT|INTERNAT.FNT|CYRILLIC.FNT|KOREAN.FNT|JAPANESE.FNT" }, + { "FreeIntv_flush_disk", "Save disk changes; Never|Immediate|On close|To/From SRAM" }, + { "FreeIntv_phantom_disk", "Create empty disk when none loaded; No|Yes" }, + { "FreeIntv_custom_keyboard_up", up_value}, + { "FreeIntv_custom_keyboard_down", down_value}, + { "FreeIntv_custom_keyboard_left", left_value}, + { "FreeIntv_custom_keyboard_right", right_value}, + { "FreeIntv_custom_keyboard_a", a_value}, + { "FreeIntv_custom_keyboard_b", b_value}, + { "FreeIntv_custom_keyboard_y", y_value}, + { "FreeIntv_custom_keyboard_x", x_value}, + { "FreeIntv_custom_keyboard_start", start_value}, + { "FreeIntv_custom_keyboard_select", select_value}, + { "FreeIntv_custom_keyboard_l", l_value}, + { "FreeIntv_custom_keyboard_r", r_value}, + { "FreeIntv_custom_keyboard_l2", l2_value}, + { "FreeIntv_custom_keyboard_r2", r2_value}, + { "FreeIntv_custom_keyboard_l3", l3_value}, + { "FreeIntv_custom_keyboard_r3", r3_value}, + { NULL, NULL }, +}; +#endif + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + if (V("FreeIntv_video_mode")) { + // NTSC|PAL|Dynamic + char *value = strdup("Dynamic"); + return value; + } else if (V("FreeIntv_mode")) { + // MSX2+|MSX1|MSX2 + char * value = strdup("MSX2+"); + return value; + } else if (V("FreeIntv_hires")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("FreeIntv_overscan")) { + // No|Yes + char *value = strdup("Yes"); + return value; + } else if (V("FreeIntv_mapper_type_mode")) { +// { "FreeIntv_mapper_type_mode", "MSX Mapper Type Mode; " +// "Guess|" +// "Generic 8kB|" +// "Generic 16kB|" +// "Konami5 8kB|" +// "Konami4 8kB|" +// "ASCII 8kB|" +// "ASCII 16kB|" +// "GameMaster2|" +// "FMPAC" +// }, + char *value = strdup("FMPAC"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} +@end diff --git a/Cores/Gambatte/GB/PVGB-Prefix.pch b/Cores/Gambatte/GB/PVGB-Prefix.pch index 6a04f1d82d..37dfebba70 100644 --- a/Cores/Gambatte/GB/PVGB-Prefix.pch +++ b/Cores/Gambatte/GB/PVGB-Prefix.pch @@ -7,6 +7,6 @@ // #ifdef __OBJC__ - #import + #import #import #endif diff --git a/Cores/Gambatte/GB/PVGBEmulatorCore.mm b/Cores/Gambatte/GB/PVGBEmulatorCore.mm index 6fea0d774a..b5da15d7d9 100644 --- a/Cores/Gambatte/GB/PVGBEmulatorCore.mm +++ b/Cores/Gambatte/GB/PVGBEmulatorCore.mm @@ -27,7 +27,7 @@ #import "PVGBEmulatorCore.h" #import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import diff --git a/Cores/Gambatte/PVGB.xcodeproj/project.pbxproj b/Cores/Gambatte/PVGB.xcodeproj/project.pbxproj index 28af92406c..e201484c67 100644 --- a/Cores/Gambatte/PVGB.xcodeproj/project.pbxproj +++ b/Cores/Gambatte/PVGB.xcodeproj/project.pbxproj @@ -7,12 +7,9 @@ objects = { /* Begin PBXBuildFile section */ - B324C63E21920E38009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63D21920E38009F4EDC /* PVSupport.framework */; }; B34AB55C2106D58F00C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB55B2106D58F00C45F09 /* PVSupport.framework */; }; B3547B4E205857E300CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B4D205857E300CFF7D8 /* Core.plist */; }; - B3547B4F205857E300CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B4D205857E300CFF7D8 /* Core.plist */; }; B35E6C42207F09CC0040709A /* CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C41207F09CC0040709A /* CoreOptions.swift */; }; - B35E6C43207F09CC0040709A /* CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C41207F09CC0040709A /* CoreOptions.swift */; }; B3C9D43E1DEA6AFB0068D057 /* PVGB.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D43C1DEA6AFB0068D057 /* PVGB.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C9D4531DEA6DE80068D057 /* interrupter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0511ABE373800FF6AEF /* interrupter.cpp */; }; B3C9D4541DEA6DE80068D057 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE08B1ABE373800FF6AEF /* video.cpp */; }; @@ -52,55 +49,9 @@ B3C9D4761DEA6DE80068D057 /* initstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE04E1ABE373800FF6AEF /* initstate.cpp */; }; B3C9D4771DEA6DE80068D057 /* makesinckernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0121ABE373800FF6AEF /* makesinckernel.cpp */; }; B3C9D4781DEA6DE80068D057 /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0871ABE373800FF6AEF /* ppu.cpp */; }; - B3C9D4791DEA6DE80068D057 /* interrupter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0511ABE373800FF6AEF /* interrupter.cpp */; }; - B3C9D47A1DEA6DE80068D057 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE08B1ABE373800FF6AEF /* video.cpp */; }; - B3C9D47B1DEA6DE80068D057 /* lyc_irq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0821ABE373800FF6AEF /* lyc_irq.cpp */; }; - B3C9D47C1DEA6DE80068D057 /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE05D1ABE373800FF6AEF /* rtc.cpp */; }; - B3C9D47D1DEA6DE80068D057 /* loadres.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0551ABE373800FF6AEF /* loadres.cpp */; }; - B3C9D47E1DEA6DE80068D057 /* channel3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0691ABE373800FF6AEF /* channel3.cpp */; }; - B3C9D47F1DEA6DE80068D057 /* channel1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0651ABE373800FF6AEF /* channel1.cpp */; }; - B3C9D4801DEA6DE80068D057 /* u48div.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0191ABE373800FF6AEF /* u48div.cpp */; }; - B3C9D4811DEA6DE80068D057 /* state_osd_elements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0781ABE373800FF6AEF /* state_osd_elements.cpp */; }; - B3C9D4821DEA6DE80068D057 /* kaiser50sinc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE00D1ABE373800FF6AEF /* kaiser50sinc.cpp */; }; - B3C9D4831DEA6DE80068D057 /* resamplerinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0161ABE373800FF6AEF /* resamplerinfo.cpp */; }; - B3C9D4841DEA6DE80068D057 /* cartridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0571ABE373800FF6AEF /* cartridge.cpp */; }; - B3C9D4851DEA6DE80068D057 /* channel2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0671ABE373800FF6AEF /* channel2.cpp */; }; - B3C9D4861DEA6DE80068D057 /* pakinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE05B1ABE373800FF6AEF /* pakinfo.cpp */; }; - B3C9D4871DEA6DE80068D057 /* interruptrequester.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0531ABE373800FF6AEF /* interruptrequester.cpp */; }; - B3C9D4881DEA6DE80068D057 /* i0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE00B1ABE373800FF6AEF /* i0.cpp */; }; - B3C9D4891DEA6DE80068D057 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE05F1ABE373800FF6AEF /* memory.cpp */; }; - B3C9D48A1DEA6DE80068D057 /* statesaver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE07A1ABE373800FF6AEF /* statesaver.cpp */; }; - B3C9D48B1DEA6DE80068D057 /* tima.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE07C1ABE373800FF6AEF /* tima.cpp */; }; - B3C9D48C1DEA6DE80068D057 /* envelope_unit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE06F1ABE373800FF6AEF /* envelope_unit.cpp */; }; - B3C9D48D1DEA6DE80068D057 /* memptrs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0591ABE373800FF6AEF /* memptrs.cpp */; }; - B3C9D48E1DEA6DE80068D057 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0761ABE373800FF6AEF /* sound.cpp */; }; - B3C9D48F1DEA6DE80068D057 /* sprite_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0891ABE373800FF6AEF /* sprite_mapper.cpp */; }; - B3C9D4901DEA6DE80068D057 /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0401ABE373800FF6AEF /* cpu.cpp */; }; - B3C9D4911DEA6DE80068D057 /* PVGBEmulatorCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE08D1ABE373800FF6AEF /* PVGBEmulatorCore.mm */; }; - B3C9D4921DEA6DE80068D057 /* bitmap_font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE03D1ABE373800FF6AEF /* bitmap_font.cpp */; }; - B3C9D4931DEA6DE80068D057 /* chainresampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0051ABE373700FF6AEF /* chainresampler.cpp */; }; - B3C9D4941DEA6DE80068D057 /* channel4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE06B1ABE373800FF6AEF /* channel4.cpp */; }; - B3C9D4951DEA6DE80068D057 /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0431ABE373800FF6AEF /* file.cpp */; }; - B3C9D4961DEA6DE80068D057 /* next_m0_time.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0851ABE373800FF6AEF /* next_m0_time.cpp */; }; - B3C9D4971DEA6DE80068D057 /* length_counter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0711ABE373800FF6AEF /* length_counter.cpp */; }; - B3C9D4981DEA6DE80068D057 /* ly_counter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0801ABE373800FF6AEF /* ly_counter.cpp */; }; - B3C9D4991DEA6DE80068D057 /* kaiser70sinc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE00F1ABE373800FF6AEF /* kaiser70sinc.cpp */; }; - B3C9D49A1DEA6DE80068D057 /* gambatte.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE04D1ABE373800FF6AEF /* gambatte.cpp */; }; - B3C9D49B1DEA6DE80068D057 /* duty_unit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE06D1ABE373800FF6AEF /* duty_unit.cpp */; }; - B3C9D49C1DEA6DE80068D057 /* initstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE04E1ABE373800FF6AEF /* initstate.cpp */; }; - B3C9D49D1DEA6DE80068D057 /* makesinckernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0121ABE373800FF6AEF /* makesinckernel.cpp */; }; - B3C9D49E1DEA6DE80068D057 /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AABE0871ABE373800FF6AEF /* ppu.cpp */; }; - B3C9D49F1DEA6DFC0068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AABE0C51ABE379500FF6AEF /* OpenGLES.framework */; platformFilter = ios; }; B3C9D4A11DEA6E0D0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AABE0C31ABE378D00FF6AEF /* Foundation.framework */; }; - B3C9D4A21DEA6E120068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AABE0C11ABE378800FF6AEF /* UIKit.framework */; }; - B3C9D4A41DEA6E270068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4A31DEA6E270068D057 /* OpenGLES.framework */; }; - B3C9D4A71DEA6E390068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4A61DEA6E390068D057 /* Foundation.framework */; }; - B3C9D4A91DEA6E3E0068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4A81DEA6E3E0068D057 /* UIKit.framework */; }; B3C9D4AA1DEA730D0068D057 /* PVGBEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AABDFF81ABE373700FF6AEF /* PVGBEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D4AB1DEA73150068D057 /* PVGBEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AABDFF81ABE373700FF6AEF /* PVGBEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D4AC1DEA73AA0068D057 /* PVGB.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D43C1DEA6AFB0068D057 /* PVGB.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3E4817720C7DE5C0061CF96 /* PVGBEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E4817620C7DE5C0061CF96 /* PVGBEmulatorCore.swift */; }; - B3E4817820C7DE5C0061CF96 /* PVGBEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E4817620C7DE5C0061CF96 /* PVGBEmulatorCore.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -252,11 +203,11 @@ B3C9D43A1DEA6AFB0068D057 /* PVGB.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGB.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D43C1DEA6AFB0068D057 /* PVGB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGB.h; sourceTree = ""; }; B3C9D43D1DEA6AFB0068D057 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3C9D4481DEA6B0D0068D057 /* PVGB.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGB.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D4A31DEA6E270068D057 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B3C9D4A61DEA6E390068D057 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B3C9D4A81DEA6E3E0068D057 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; B3E4817620C7DE5C0061CF96 /* PVGBEmulatorCore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVGBEmulatorCore.swift; sourceTree = ""; }; + B3EA6C9429261AF500010224 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -265,20 +216,7 @@ buildActionMask = 2147483647; files = ( B34AB55C2106D58F00C45F09 /* PVSupport.framework in Frameworks */, - B3C9D4A21DEA6E120068D057 /* UIKit.framework in Frameworks */, B3C9D4A11DEA6E0D0068D057 /* Foundation.framework in Frameworks */, - B3C9D49F1DEA6DFC0068D057 /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C9D4441DEA6B0D0068D057 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C63E21920E38009F4EDC /* PVSupport.framework in Frameworks */, - B3C9D4A91DEA6E3E0068D057 /* UIKit.framework in Frameworks */, - B3C9D4A71DEA6E390068D057 /* Foundation.framework in Frameworks */, - B3C9D4A41DEA6E270068D057 /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -299,7 +237,6 @@ isa = PBXGroup; children = ( B3C9D43A1DEA6AFB0068D057 /* PVGB.framework */, - B3C9D4481DEA6B0D0068D057 /* PVGB.framework */, ); name = Products; sourceTree = ""; @@ -566,6 +503,7 @@ 1AABE0C71ABE37A400FF6AEF /* Frameworks */ = { isa = PBXGroup; children = ( + B3EA6C9429261AF500010224 /* OpenGL.framework */, B324C63D21920E38009F4EDC /* PVSupport.framework */, B3C9D4A61DEA6E390068D057 /* Foundation.framework */, 1AABE0C31ABE378D00FF6AEF /* Foundation.framework */, @@ -608,21 +546,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D4451DEA6B0D0068D057 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C9D4AB1DEA73150068D057 /* PVGBEmulatorCore.h in Headers */, - B3C9D4AC1DEA73AA0068D057 /* PVGB.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B3C9D4391DEA6AFB0068D057 /* PVGB-iOS */ = { + B3C9D4391DEA6AFB0068D057 /* PVGB */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C9D43F1DEA6AFB0068D057 /* Build configuration list for PBXNativeTarget "PVGB-iOS" */; + buildConfigurationList = B3C9D43F1DEA6AFB0068D057 /* Build configuration list for PBXNativeTarget "PVGB" */; buildPhases = ( B3C9D4371DEA6AFB0068D057 /* Headers */, B3C9D4351DEA6AFB0068D057 /* Sources */, @@ -633,29 +562,11 @@ ); dependencies = ( ); - name = "PVGB-iOS"; + name = PVGB; productName = PVGB; productReference = B3C9D43A1DEA6AFB0068D057 /* PVGB.framework */; productType = "com.apple.product-type.framework"; }; - B3C9D4471DEA6B0D0068D057 /* PVGB-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C9D44D1DEA6B0D0068D057 /* Build configuration list for PBXNativeTarget "PVGB-tvOS" */; - buildPhases = ( - B3C9D4451DEA6B0D0068D057 /* Headers */, - B3C9D4431DEA6B0D0068D057 /* Sources */, - B3C9D4441DEA6B0D0068D057 /* Frameworks */, - B3C9D4461DEA6B0D0068D057 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVGB-tvOS"; - productName = "PVGB tvOS"; - productReference = B3C9D4481DEA6B0D0068D057 /* PVGB.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -671,10 +582,6 @@ CreatedOnToolsVersion = 8.1; LastSwiftMigration = 1020; }; - B3C9D4471DEA6B0D0068D057 = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 0940; - }; }; }; buildConfigurationList = 1AABDFD71ABE366000FF6AEF /* Build configuration list for PBXProject "PVGB" */; @@ -690,8 +597,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C9D4391DEA6AFB0068D057 /* PVGB-iOS */, - B3C9D4471DEA6B0D0068D057 /* PVGB-tvOS */, + B3C9D4391DEA6AFB0068D057 /* PVGB */, ); }; /* End PBXProject section */ @@ -705,14 +611,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D4461DEA6B0D0068D057 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B4F205857E300CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -763,53 +661,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D4431DEA6B0D0068D057 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C9D4791DEA6DE80068D057 /* interrupter.cpp in Sources */, - B3E4817820C7DE5C0061CF96 /* PVGBEmulatorCore.swift in Sources */, - B3C9D47A1DEA6DE80068D057 /* video.cpp in Sources */, - B3C9D47B1DEA6DE80068D057 /* lyc_irq.cpp in Sources */, - B3C9D47C1DEA6DE80068D057 /* rtc.cpp in Sources */, - B3C9D47D1DEA6DE80068D057 /* loadres.cpp in Sources */, - B3C9D47E1DEA6DE80068D057 /* channel3.cpp in Sources */, - B3C9D47F1DEA6DE80068D057 /* channel1.cpp in Sources */, - B3C9D4801DEA6DE80068D057 /* u48div.cpp in Sources */, - B35E6C43207F09CC0040709A /* CoreOptions.swift in Sources */, - B3C9D4811DEA6DE80068D057 /* state_osd_elements.cpp in Sources */, - B3C9D4821DEA6DE80068D057 /* kaiser50sinc.cpp in Sources */, - B3C9D4831DEA6DE80068D057 /* resamplerinfo.cpp in Sources */, - B3C9D4841DEA6DE80068D057 /* cartridge.cpp in Sources */, - B3C9D4851DEA6DE80068D057 /* channel2.cpp in Sources */, - B3C9D4861DEA6DE80068D057 /* pakinfo.cpp in Sources */, - B3C9D4871DEA6DE80068D057 /* interruptrequester.cpp in Sources */, - B3C9D4881DEA6DE80068D057 /* i0.cpp in Sources */, - B3C9D4891DEA6DE80068D057 /* memory.cpp in Sources */, - B3C9D48A1DEA6DE80068D057 /* statesaver.cpp in Sources */, - B3C9D48B1DEA6DE80068D057 /* tima.cpp in Sources */, - B3C9D48C1DEA6DE80068D057 /* envelope_unit.cpp in Sources */, - B3C9D48D1DEA6DE80068D057 /* memptrs.cpp in Sources */, - B3C9D48E1DEA6DE80068D057 /* sound.cpp in Sources */, - B3C9D48F1DEA6DE80068D057 /* sprite_mapper.cpp in Sources */, - B3C9D4901DEA6DE80068D057 /* cpu.cpp in Sources */, - B3C9D4911DEA6DE80068D057 /* PVGBEmulatorCore.mm in Sources */, - B3C9D4921DEA6DE80068D057 /* bitmap_font.cpp in Sources */, - B3C9D4931DEA6DE80068D057 /* chainresampler.cpp in Sources */, - B3C9D4941DEA6DE80068D057 /* channel4.cpp in Sources */, - B3C9D4951DEA6DE80068D057 /* file.cpp in Sources */, - B3C9D4961DEA6DE80068D057 /* next_m0_time.cpp in Sources */, - B3C9D4971DEA6DE80068D057 /* length_counter.cpp in Sources */, - B3C9D4981DEA6DE80068D057 /* ly_counter.cpp in Sources */, - B3C9D4991DEA6DE80068D057 /* kaiser70sinc.cpp in Sources */, - B3C9D49A1DEA6DE80068D057 /* gambatte.cpp in Sources */, - B3C9D49B1DEA6DE80068D057 /* duty_unit.cpp in Sources */, - B3C9D49C1DEA6DE80068D057 /* initstate.cpp in Sources */, - B3C9D49D1DEA6DE80068D057 /* makesinckernel.cpp in Sources */, - B3C9D49E1DEA6DE80068D057 /* ppu.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -862,7 +713,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -913,7 +764,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -966,7 +817,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; @@ -1001,7 +852,7 @@ ); INFOPLIST_FILE = PVGB/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1013,50 +864,12 @@ PRODUCT_NAME = PVGB; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5162191A3BA009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = c99; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - INFOPLIST_FILE = PVGB/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_CFLAGS = "-DHAVE_STDINT_H"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGB"; - PRODUCT_NAME = PVGB; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1087,7 +900,7 @@ ); INFOPLIST_FILE = PVGB/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1099,9 +912,13 @@ PRODUCT_NAME = PVGB; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1132,7 +949,7 @@ ); INFOPLIST_FILE = PVGB/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1144,93 +961,12 @@ PRODUCT_NAME = PVGB; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B3C9D44E1DEA6B0D0068D057 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = c99; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - INFOPLIST_FILE = PVGB/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_CFLAGS = "-DHAVE_STDINT_H"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGB"; - PRODUCT_NAME = PVGB; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3C9D44F1DEA6B0D0068D057 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = c99; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/**", - ); - INFOPLIST_FILE = PVGB/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_CFLAGS = "-DHAVE_STDINT_H"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGB"; - PRODUCT_NAME = PVGB; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1249,7 +985,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D43F1DEA6AFB0068D057 /* Build configuration list for PBXNativeTarget "PVGB-iOS" */ = { + B3C9D43F1DEA6AFB0068D057 /* Build configuration list for PBXNativeTarget "PVGB" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C9D4401DEA6AFB0068D057 /* Debug */, @@ -1259,16 +995,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D44D1DEA6B0D0068D057 /* Build configuration list for PBXNativeTarget "PVGB-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3C9D44E1DEA6B0D0068D057 /* Debug */, - B3C9D44F1DEA6B0D0068D057 /* Release */, - B324C5162191A3BA009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 1AABDFD41ABE366000FF6AEF /* Project object */; diff --git a/Cores/Gambatte/PVGB.xcodeproj/xcshareddata/xcschemes/PVGB.xcscheme b/Cores/Gambatte/PVGB.xcodeproj/xcshareddata/xcschemes/PVGB.xcscheme index b98b573e5a..3b91012ae9 100644 --- a/Cores/Gambatte/PVGB.xcodeproj/xcshareddata/xcschemes/PVGB.xcscheme +++ b/Cores/Gambatte/PVGB.xcodeproj/xcshareddata/xcschemes/PVGB.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D4391DEA6AFB0068D057" BuildableName = "PVGB.framework" - BlueprintName = "PVGB-iOS" + BlueprintName = "PVGB" ReferencedContainer = "container:PVGB.xcodeproj"> @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -59,7 +59,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D4391DEA6AFB0068D057" BuildableName = "PVGB.framework" - BlueprintName = "PVGB-iOS" + BlueprintName = "PVGB" ReferencedContainer = "container:PVGB.xcodeproj"> @@ -75,7 +75,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D4391DEA6AFB0068D057" BuildableName = "PVGB.framework" - BlueprintName = "PVGB-iOS" + BlueprintName = "PVGB" ReferencedContainer = "container:PVGB.xcodeproj"> diff --git a/Cores/Gambatte/PVGB/PVGB.h b/Cores/Gambatte/PVGB/PVGB.h index d71fd1e16d..90caafe9d6 100644 --- a/Cores/Gambatte/PVGB/PVGB.h +++ b/Cores/Gambatte/PVGB/PVGB.h @@ -6,7 +6,7 @@ // Copyright © 2016 JamSoft. All rights reserved. // -#import +#import //! Project version number for PVGB. FOUNDATION_EXPORT double PVGBVersionNumber; diff --git a/Cores/GameMusicEmu/BuildFlags.xcconfig b/Cores/GameMusicEmu/BuildFlags.xcconfig new file mode 100644 index 0000000000..b9afa0049f --- /dev/null +++ b/Cores/GameMusicEmu/BuildFlags.xcconfig @@ -0,0 +1,31 @@ +// +// BuildFlags.xcconfig +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) C_DYNREC=1 _FILE_OFFSET_BITS=64 __LIBRETRO__ BUILD_SHARED_LIBS=0 GME_YM2612_EMU=GENS USE_GME_AY=1 USE_GME_GBS=1 USE_GME_GYM=1 USE_GME_HES=1 USE_GME_KSS=1 USE_GME_NSF=1 USE_GME_NSFE=1 USE_GME_SAP=1 USE_GME_SPC=1 USE_GME_VGM=1 +GCC_PREPROCESSOR_DEFINITIONS[configuration=Debug] = $(inherited) DEBUG=1 +GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = $(inherited) NDEBUG=1 + +// DISABLE_DYNAREC=1 +OTHER_CFLAGS = $(inherited) -ObjC -Wno-ignored-optimization-argument -Wno-unknown-warning-option -fomit-frame-pointer -fno-exceptions -fno-non-call-exceptions -Wno-address-of-packed-member -Wno-format -Wno-switch -Wno-psabi -fpic -fvisibility=hidden -ffunction-sections -Iinclude +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load -lpthread + + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/GameMusicEmu/PVGME.xcodeproj/project.pbxproj b/Cores/GameMusicEmu/PVGME.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..69e69fa9cb --- /dev/null +++ b/Cores/GameMusicEmu/PVGME.xcodeproj/project.pbxproj @@ -0,0 +1,1647 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B3135B9B26E4CAD40047F338 /* PVGMECore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVGMECore.mm */; }; + B3135B9C26E4CC290047F338 /* PVGMECore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVGMECore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3135BA126E4CC620047F338 /* PVGME.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVGME.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B380C2712894F63C007B76FD /* PVGMECore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVGMECore+Saves.m */; }; + B381A27A292637CD00305322 /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C12B2894D28700CF98C7 /* encoding_utf.c */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C2CCAC2894D78E00DE3B94 /* player.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1972894D28800CF98C7 /* player.c */; }; + B3C2CCAD2894D78E00DE3B94 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1902894D28700CF98C7 /* libretro.c */; }; + B3C2CCAE2894D78E00DE3B94 /* playlist.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1932894D28800CF98C7 /* playlist.c */; }; + B3C2CCAF2894D78E00DE3B94 /* fileformat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1952894D28800CF98C7 /* fileformat.c */; }; + B3C2CCB02894D78E00DE3B94 /* graphics.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1922894D28700CF98C7 /* graphics.c */; }; + B3C2CCE02894D7E600DE3B94 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1792894D28700CF98C7 /* zutil.c */; }; + B3C2CCE12894D7E600DE3B94 /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1832894D28700CF98C7 /* gzclose.c */; }; + B3C2CCE22894D7E600DE3B94 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1632894D28700CF98C7 /* inflate.c */; }; + B3C2CCE32894D7E600DE3B94 /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C17D2894D28700CF98C7 /* gzlib.c */; }; + B3C2CCE42894D7E600DE3B94 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1862894D28700CF98C7 /* adler32.c */; }; + B3C2CCE52894D7E600DE3B94 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1822894D28700CF98C7 /* trees.c */; }; + B3C2CCE62894D7E600DE3B94 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1762894D28700CF98C7 /* crc32.c */; }; + B3C2CCE72894D7E600DE3B94 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1652894D28700CF98C7 /* deflate.c */; }; + B3C2CCE82894D7E600DE3B94 /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1682894D28700CF98C7 /* gzread.c */; }; + B3C2CCE92894D7E700DE3B94 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C17F2894D28700CF98C7 /* inftrees.c */; }; + B3C2CCEA2894D7E700DE3B94 /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1812894D28700CF98C7 /* gzwrite.c */; }; + B3C2CCEB2894D7E700DE3B94 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C16D2894D28700CF98C7 /* unzip.c */; }; + B3C2CCEC2894D7E700DE3B94 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1702894D28700CF98C7 /* ioapi.c */; }; + B3C2CCED2894D7E700DE3B94 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1852894D28700CF98C7 /* inffast.c */; }; + B3C2CCFC2894D81500DE3B94 /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1312894D28700CF98C7 /* compat_posix_string.c */; }; + B3C2CCFD2894D81500DE3B94 /* compat_snprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1332894D28700CF98C7 /* compat_snprintf.c */; }; + B3C2CCFE2894D81500DE3B94 /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1342894D28700CF98C7 /* fopen_utf8.c */; }; + B3C2CCFF2894D81500DE3B94 /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1302894D28700CF98C7 /* compat_strl.c */; }; + B3C2CD002894D81500DE3B94 /* compat_strcasestr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1322894D28700CF98C7 /* compat_strcasestr.c */; }; + B3C2CD082894D81F00DE3B94 /* file_stream_transforms.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1392894D28700CF98C7 /* file_stream_transforms.c */; }; + B3C2CD092894D81F00DE3B94 /* file_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C13A2894D28700CF98C7 /* file_stream.c */; }; + B3C2CD0B2894D82600DE3B94 /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C15F2894D28700CF98C7 /* stdstring.c */; }; + B3C2CD0C2894D82E00DE3B94 /* vfs_implementation.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C12D2894D28700CF98C7 /* vfs_implementation.c */; }; + B3C2CD0E2894D83700DE3B94 /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1372894D28700CF98C7 /* file_path.c */; }; + B3C2CD0F2894D83700DE3B94 /* rtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C15D2894D28700CF98C7 /* rtime.c */; }; + B3C2CD102894D83700DE3B94 /* file_path_io.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1362894D28700CF98C7 /* file_path_io.c */; }; + B3C2CD142894D88F00DE3B94 /* Hes_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1202894D28700CF98C7 /* Hes_Emu.cpp */; }; + B3C2CD152894D88F00DE3B94 /* Kss_Scc_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0E42894D28600CF98C7 /* Kss_Scc_Apu.cpp */; }; + B3C2CD162894D88F00DE3B94 /* Gme_File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1052894D28700CF98C7 /* Gme_File.cpp */; }; + B3C2CD172894D88F00DE3B94 /* Fir_Resampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0E12894D28600CF98C7 /* Fir_Resampler.cpp */; }; + B3C2CD182894D88F00DE3B94 /* Gbs_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0BA2894D28600CF98C7 /* Gbs_Emu.cpp */; }; + B3C2CD192894D88F00DE3B94 /* Ay_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0CE2894D28600CF98C7 /* Ay_Emu.cpp */; }; + B3C2CD1A2894D88F00DE3B94 /* Hes_Cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0DD2894D28600CF98C7 /* Hes_Cpu.cpp */; }; + B3C2CD1B2894D88F00DE3B94 /* Ay_Cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0F42894D28600CF98C7 /* Ay_Cpu.cpp */; }; + B3C2CD1C2894D88F00DE3B94 /* Gb_Oscs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0DE2894D28600CF98C7 /* Gb_Oscs.cpp */; }; + B3C2CD1D2894D88F00DE3B94 /* Kss_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0FD2894D28700CF98C7 /* Kss_Emu.cpp */; }; + B3C2CD1E2894D88F00DE3B94 /* Data_Reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0F22894D28600CF98C7 /* Data_Reader.cpp */; }; + B3C2CD1F2894D88F00DE3B94 /* Ay_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0F82894D28600CF98C7 /* Ay_Apu.cpp */; }; + B3C2CD202894D88F00DE3B94 /* Gym_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0F72894D28600CF98C7 /* Gym_Emu.cpp */; }; + B3C2CD212894D88F00DE3B94 /* Gb_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0EC2894D28600CF98C7 /* Gb_Apu.cpp */; }; + B3C2CD222894D88F00DE3B94 /* Hes_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0D92894D28600CF98C7 /* Hes_Apu.cpp */; }; + B3C2CD232894D88F00DE3B94 /* Gb_Cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0E82894D28600CF98C7 /* Gb_Cpu.cpp */; }; + B3C2CD242894D88F00DE3B94 /* Dual_Resampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0E32894D28600CF98C7 /* Dual_Resampler.cpp */; }; + B3C2CD252894D88F00DE3B94 /* gme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0D82894D28600CF98C7 /* gme.cpp */; }; + B3C2CD262894D88F00DE3B94 /* Kss_Cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0BB2894D28600CF98C7 /* Kss_Cpu.cpp */; }; + B3C2CD272894D88F00DE3B94 /* Blip_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0E92894D28600CF98C7 /* Blip_Buffer.cpp */; }; + B3C2CD282894D88F00DE3B94 /* Effects_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0D62894D28600CF98C7 /* Effects_Buffer.cpp */; }; + B3C2CD292894D88F00DE3B94 /* Classic_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0BF2894D28600CF98C7 /* Classic_Emu.cpp */; }; + B3C2CD402894D8AE00DE3B94 /* Nes_Oscs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0C22894D28600CF98C7 /* Nes_Oscs.cpp */; }; + B3C2CD412894D8AE00DE3B94 /* Multi_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0CD2894D28600CF98C7 /* Multi_Buffer.cpp */; }; + B3C2CD422894D8AE00DE3B94 /* Music_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1082894D28700CF98C7 /* Music_Emu.cpp */; }; + B3C2CD432894D8AE00DE3B94 /* Spc_Dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1182894D28700CF98C7 /* Spc_Dsp.cpp */; }; + B3C2CD442894D8AE00DE3B94 /* Sap_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0FC2894D28600CF98C7 /* Sap_Emu.cpp */; }; + B3C2CD452894D8AE00DE3B94 /* Vgm_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0BE2894D28600CF98C7 /* Vgm_Emu.cpp */; }; + B3C2CD462894D8AE00DE3B94 /* Nes_Namco_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0FA2894D28600CF98C7 /* Nes_Namco_Apu.cpp */; }; + B3C2CD472894D8AE00DE3B94 /* Spc_Cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0DF2894D28600CF98C7 /* Spc_Cpu.cpp */; }; + B3C2CD482894D8AE00DE3B94 /* Nes_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0E72894D28600CF98C7 /* Nes_Apu.cpp */; }; + B3C2CD492894D8AE00DE3B94 /* Nes_Fme7_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0DC2894D28600CF98C7 /* Nes_Fme7_Apu.cpp */; }; + B3C2CD4A2894D8AE00DE3B94 /* Nsfe_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C11B2894D28700CF98C7 /* Nsfe_Emu.cpp */; }; + B3C2CD4B2894D8AE00DE3B94 /* Ym2612_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0D72894D28600CF98C7 /* Ym2612_Emu.cpp */; }; + B3C2CD4C2894D8AE00DE3B94 /* Sms_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0D32894D28600CF98C7 /* Sms_Apu.cpp */; }; + B3C2CD4D2894D8AE00DE3B94 /* Ym2413_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C11D2894D28700CF98C7 /* Ym2413_Emu.cpp */; }; + B3C2CD4E2894D8AE00DE3B94 /* Spc_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C11F2894D28700CF98C7 /* Spc_Emu.cpp */; }; + B3C2CD4F2894D8AE00DE3B94 /* Spc_Filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0EF2894D28600CF98C7 /* Spc_Filter.cpp */; }; + B3C2CD502894D8AE00DE3B94 /* Snes_Spc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0CB2894D28600CF98C7 /* Snes_Spc.cpp */; }; + B3C2CD512894D8AE00DE3B94 /* Nes_Cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0EB2894D28600CF98C7 /* Nes_Cpu.cpp */; }; + B3C2CD522894D8AE00DE3B94 /* Sap_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0C02894D28600CF98C7 /* Sap_Apu.cpp */; }; + B3C2CD532894D8AE00DE3B94 /* Nes_Vrc6_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0F52894D28600CF98C7 /* Nes_Vrc6_Apu.cpp */; }; + B3C2CD542894D8AE00DE3B94 /* Sap_Cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0BC2894D28600CF98C7 /* Sap_Cpu.cpp */; }; + B3C2CD552894D8AE00DE3B94 /* Vgm_Emu_Impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0ED2894D28600CF98C7 /* Vgm_Emu_Impl.cpp */; }; + B3C2CD562894D8AE00DE3B94 /* M3u_Playlist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0C42894D28600CF98C7 /* M3u_Playlist.cpp */; }; + B3C2CD572894D8AE00DE3B94 /* Nsf_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C0DB2894D28600CF98C7 /* Nsf_Emu.cpp */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3D3E7522894DC890016EB85 /* libgme-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libgme-libretro.a */; }; + B3D3E7552894DC890016EB85 /* libgme.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libgme.a */; }; + B3EBB2032872B65700EAEB37 /* PVGMECore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVGMECore+Video.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B3D3E7532894DC890016EB85 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "gme-libretro-iOS"; + }; + B3D3E7562894DC890016EB85 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B30178D2207C901D0051B93D; + remoteInfo = "gme-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libgme.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgme.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libgme-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libgme-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447E96218B809200557ACE /* PVGMECore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVGMECore+Controls.h"; sourceTree = ""; }; + B3447E97218B809300557ACE /* PVGMECore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVGMECore+Controls.mm"; sourceTree = ""; }; + B3447EA0218B881000557ACE /* PVGME.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVGME.mm; sourceTree = ""; }; + B3447EA9218BC59D00557ACE /* PVGMECore+Saves.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVGMECore+Saves.h"; sourceTree = ""; }; + B3447EAA218BC59D00557ACE /* PVGMECore+Saves.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVGMECore+Saves.m"; sourceTree = ""; }; + B3447EAD218BC5C500557ACE /* PVGMECore+Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVGMECore+Video.h"; sourceTree = ""; }; + B3447EAE218BC5C500557ACE /* PVGMECore+Video.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVGMECore+Video.m"; sourceTree = ""; }; + B3447EB1218BC69700557ACE /* PVGMECore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVGMECore+Audio.h"; sourceTree = ""; }; + B3447EB2218BC69700557ACE /* PVGMECore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVGMECore+Audio.m"; sourceTree = ""; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVGME.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGME.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621320783162009950E4 /* PVGME.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGME.h; sourceTree = ""; }; + B3C7621420783162009950E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C76223207833DE009950E4 /* PVGMECore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGMECore.h; sourceTree = ""; }; + B3C76224207833DE009950E4 /* PVGMECore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVGMECore.mm; sourceTree = ""; }; + B3C7622720783510009950E4 /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B3E6C0B02894D28600CF98C7 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3E6C0B12894D28600CF98C7 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3E6C0B22894D28600CF98C7 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3E6C0B32894D28600CF98C7 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3E6C0B42894D28600CF98C7 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3E6C0B82894D28600CF98C7 /* Nes_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nes_Apu.h; sourceTree = ""; }; + B3E6C0B92894D28600CF98C7 /* Sap_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sap_Apu.h; sourceTree = ""; }; + B3E6C0BA2894D28600CF98C7 /* Gbs_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Gbs_Emu.cpp; sourceTree = ""; }; + B3E6C0BB2894D28600CF98C7 /* Kss_Cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Kss_Cpu.cpp; sourceTree = ""; }; + B3E6C0BC2894D28600CF98C7 /* Sap_Cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sap_Cpu.cpp; sourceTree = ""; }; + B3E6C0BD2894D28600CF98C7 /* Gym_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Gym_Emu.h; sourceTree = ""; }; + B3E6C0BE2894D28600CF98C7 /* Vgm_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Vgm_Emu.cpp; sourceTree = ""; }; + B3E6C0BF2894D28600CF98C7 /* Classic_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Classic_Emu.cpp; sourceTree = ""; }; + B3E6C0C02894D28600CF98C7 /* Sap_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sap_Apu.cpp; sourceTree = ""; }; + B3E6C0C12894D28600CF98C7 /* Sap_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sap_Emu.h; sourceTree = ""; }; + B3E6C0C22894D28600CF98C7 /* Nes_Oscs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nes_Oscs.cpp; sourceTree = ""; }; + B3E6C0C32894D28600CF98C7 /* Sap_Cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sap_Cpu.h; sourceTree = ""; }; + B3E6C0C42894D28600CF98C7 /* M3u_Playlist.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = M3u_Playlist.cpp; sourceTree = ""; }; + B3E6C0C52894D28600CF98C7 /* gme.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gme.h; sourceTree = ""; }; + B3E6C0C62894D28600CF98C7 /* Data_Reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Data_Reader.h; sourceTree = ""; }; + B3E6C0C72894D28600CF98C7 /* Nes_Cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nes_Cpu.h; sourceTree = ""; }; + B3E6C0C82894D28600CF98C7 /* blargg_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blargg_common.h; sourceTree = ""; }; + B3E6C0C92894D28600CF98C7 /* Spc_Cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Spc_Cpu.h; sourceTree = ""; }; + B3E6C0CA2894D28600CF98C7 /* nes_cpu_io.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nes_cpu_io.h; sourceTree = ""; }; + B3E6C0CB2894D28600CF98C7 /* Snes_Spc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Snes_Spc.cpp; sourceTree = ""; }; + B3E6C0CC2894D28600CF98C7 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3E6C0CD2894D28600CF98C7 /* Multi_Buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Multi_Buffer.cpp; sourceTree = ""; }; + B3E6C0CE2894D28600CF98C7 /* Ay_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Ay_Emu.cpp; sourceTree = ""; }; + B3E6C0CF2894D28600CF98C7 /* Spc_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Spc_Emu.h; sourceTree = ""; }; + B3E6C0D02894D28600CF98C7 /* Dual_Resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Dual_Resampler.h; sourceTree = ""; }; + B3E6C0D12894D28600CF98C7 /* gme_types.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = gme_types.h.in; sourceTree = ""; }; + B3E6C0D22894D28600CF98C7 /* Spc_Filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Spc_Filter.h; sourceTree = ""; }; + B3E6C0D32894D28600CF98C7 /* Sms_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sms_Apu.cpp; sourceTree = ""; }; + B3E6C0D42894D28600CF98C7 /* Vgm_Emu_Impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Vgm_Emu_Impl.h; sourceTree = ""; }; + B3E6C0D52894D28600CF98C7 /* Spc_Dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Spc_Dsp.h; sourceTree = ""; }; + B3E6C0D62894D28600CF98C7 /* Effects_Buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Effects_Buffer.cpp; sourceTree = ""; }; + B3E6C0D72894D28600CF98C7 /* Ym2612_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Ym2612_Emu.cpp; sourceTree = ""; }; + B3E6C0D82894D28600CF98C7 /* gme.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gme.cpp; sourceTree = ""; }; + B3E6C0D92894D28600CF98C7 /* Hes_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Hes_Apu.cpp; sourceTree = ""; }; + B3E6C0DA2894D28600CF98C7 /* Sms_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sms_Apu.h; sourceTree = ""; }; + B3E6C0DB2894D28600CF98C7 /* Nsf_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nsf_Emu.cpp; sourceTree = ""; }; + B3E6C0DC2894D28600CF98C7 /* Nes_Fme7_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nes_Fme7_Apu.cpp; sourceTree = ""; }; + B3E6C0DD2894D28600CF98C7 /* Hes_Cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Hes_Cpu.cpp; sourceTree = ""; }; + B3E6C0DE2894D28600CF98C7 /* Gb_Oscs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Gb_Oscs.cpp; sourceTree = ""; }; + B3E6C0DF2894D28600CF98C7 /* Spc_Cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Spc_Cpu.cpp; sourceTree = ""; }; + B3E6C0E02894D28600CF98C7 /* Nes_Vrc6_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nes_Vrc6_Apu.h; sourceTree = ""; }; + B3E6C0E12894D28600CF98C7 /* Fir_Resampler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Fir_Resampler.cpp; sourceTree = ""; }; + B3E6C0E22894D28600CF98C7 /* gb_cpu_io.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gb_cpu_io.h; sourceTree = ""; }; + B3E6C0E32894D28600CF98C7 /* Dual_Resampler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Dual_Resampler.cpp; sourceTree = ""; }; + B3E6C0E42894D28600CF98C7 /* Kss_Scc_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Kss_Scc_Apu.cpp; sourceTree = ""; }; + B3E6C0E52894D28600CF98C7 /* M3u_Playlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = M3u_Playlist.h; sourceTree = ""; }; + B3E6C0E62894D28600CF98C7 /* Kss_Scc_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Kss_Scc_Apu.h; sourceTree = ""; }; + B3E6C0E72894D28600CF98C7 /* Nes_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nes_Apu.cpp; sourceTree = ""; }; + B3E6C0E82894D28600CF98C7 /* Gb_Cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Gb_Cpu.cpp; sourceTree = ""; }; + B3E6C0E92894D28600CF98C7 /* Blip_Buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Blip_Buffer.cpp; sourceTree = ""; }; + B3E6C0EA2894D28600CF98C7 /* Multi_Buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Multi_Buffer.h; sourceTree = ""; }; + B3E6C0EB2894D28600CF98C7 /* Nes_Cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nes_Cpu.cpp; sourceTree = ""; }; + B3E6C0EC2894D28600CF98C7 /* Gb_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Gb_Apu.cpp; sourceTree = ""; }; + B3E6C0ED2894D28600CF98C7 /* Vgm_Emu_Impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Vgm_Emu_Impl.cpp; sourceTree = ""; }; + B3E6C0EE2894D28600CF98C7 /* Nsfe_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nsfe_Emu.h; sourceTree = ""; }; + B3E6C0EF2894D28600CF98C7 /* Spc_Filter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Spc_Filter.cpp; sourceTree = ""; }; + B3E6C0F02894D28600CF98C7 /* Classic_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Classic_Emu.h; sourceTree = ""; }; + B3E6C0F12894D28600CF98C7 /* Nes_Oscs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nes_Oscs.h; sourceTree = ""; }; + B3E6C0F22894D28600CF98C7 /* Data_Reader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Data_Reader.cpp; sourceTree = ""; }; + B3E6C0F32894D28600CF98C7 /* blargg_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blargg_config.h; sourceTree = ""; }; + B3E6C0F42894D28600CF98C7 /* Ay_Cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Ay_Cpu.cpp; sourceTree = ""; }; + B3E6C0F52894D28600CF98C7 /* Nes_Vrc6_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nes_Vrc6_Apu.cpp; sourceTree = ""; }; + B3E6C0F62894D28600CF98C7 /* Vgm_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Vgm_Emu.h; sourceTree = ""; }; + B3E6C0F72894D28600CF98C7 /* Gym_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Gym_Emu.cpp; sourceTree = ""; }; + B3E6C0F82894D28600CF98C7 /* Ay_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Ay_Apu.cpp; sourceTree = ""; }; + B3E6C0F92894D28600CF98C7 /* Effects_Buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Effects_Buffer.h; sourceTree = ""; }; + B3E6C0FA2894D28600CF98C7 /* Nes_Namco_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nes_Namco_Apu.cpp; sourceTree = ""; }; + B3E6C0FB2894D28600CF98C7 /* Gb_Oscs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Gb_Oscs.h; sourceTree = ""; }; + B3E6C0FC2894D28600CF98C7 /* Sap_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sap_Emu.cpp; sourceTree = ""; }; + B3E6C0FD2894D28700CF98C7 /* Kss_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Kss_Emu.cpp; sourceTree = ""; }; + B3E6C0FE2894D28700CF98C7 /* Gb_Cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Gb_Cpu.h; sourceTree = ""; }; + B3E6C0FF2894D28700CF98C7 /* Hes_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Hes_Apu.h; sourceTree = ""; }; + B3E6C1002894D28700CF98C7 /* Music_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Music_Emu.h; sourceTree = ""; }; + B3E6C1012894D28700CF98C7 /* Hes_Cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Hes_Cpu.h; sourceTree = ""; }; + B3E6C1022894D28700CF98C7 /* Gb_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Gb_Apu.h; sourceTree = ""; }; + B3E6C1032894D28700CF98C7 /* Nes_Namco_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nes_Namco_Apu.h; sourceTree = ""; }; + B3E6C1042894D28700CF98C7 /* Hes_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Hes_Emu.h; sourceTree = ""; }; + B3E6C1052894D28700CF98C7 /* Gme_File.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Gme_File.cpp; sourceTree = ""; }; + B3E6C1062894D28700CF98C7 /* Snes_Spc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Snes_Spc.h; sourceTree = ""; }; + B3E6C1072894D28700CF98C7 /* Gbs_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Gbs_Emu.h; sourceTree = ""; }; + B3E6C1082894D28700CF98C7 /* Music_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Music_Emu.cpp; sourceTree = ""; }; + B3E6C1092894D28700CF98C7 /* Nsf_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nsf_Emu.h; sourceTree = ""; }; + B3E6C10A2894D28700CF98C7 /* Sms_Oscs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sms_Oscs.h; sourceTree = ""; }; + B3E6C10B2894D28700CF98C7 /* sap_cpu_io.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sap_cpu_io.h; sourceTree = ""; }; + B3E6C10C2894D28700CF98C7 /* Ym2413_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ym2413_Emu.h; sourceTree = ""; }; + B3E6C10D2894D28700CF98C7 /* Kss_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Kss_Emu.h; sourceTree = ""; }; + B3E6C10E2894D28700CF98C7 /* Fir_Resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fir_Resampler.h; sourceTree = ""; }; + B3E6C10F2894D28700CF98C7 /* Nes_Fme7_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Nes_Fme7_Apu.h; sourceTree = ""; }; + B3E6C1102894D28700CF98C7 /* gme_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gme_types.h; sourceTree = ""; }; + B3E6C1112894D28700CF98C7 /* Blip_Buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Blip_Buffer.h; sourceTree = ""; }; + B3E6C1122894D28700CF98C7 /* Kss_Cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Kss_Cpu.h; sourceTree = ""; }; + B3E6C1132894D28700CF98C7 /* Gme_File.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Gme_File.h; sourceTree = ""; }; + B3E6C1142894D28700CF98C7 /* libgme.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = libgme.pc.in; sourceTree = ""; }; + B3E6C1152894D28700CF98C7 /* Ym2612_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ym2612_Emu.h; sourceTree = ""; }; + B3E6C1162894D28700CF98C7 /* Ay_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ay_Apu.h; sourceTree = ""; }; + B3E6C1172894D28700CF98C7 /* blargg_source.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blargg_source.h; sourceTree = ""; }; + B3E6C1182894D28700CF98C7 /* Spc_Dsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Spc_Dsp.cpp; sourceTree = ""; }; + B3E6C1192894D28700CF98C7 /* blargg_endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blargg_endian.h; sourceTree = ""; }; + B3E6C11A2894D28700CF98C7 /* Ay_Cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ay_Cpu.h; sourceTree = ""; }; + B3E6C11B2894D28700CF98C7 /* Nsfe_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Nsfe_Emu.cpp; sourceTree = ""; }; + B3E6C11C2894D28700CF98C7 /* Ay_Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ay_Emu.h; sourceTree = ""; }; + B3E6C11D2894D28700CF98C7 /* Ym2413_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Ym2413_Emu.cpp; sourceTree = ""; }; + B3E6C11E2894D28700CF98C7 /* hes_cpu_io.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hes_cpu_io.h; sourceTree = ""; }; + B3E6C11F2894D28700CF98C7 /* Spc_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Spc_Emu.cpp; sourceTree = ""; }; + B3E6C1202894D28700CF98C7 /* Hes_Emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Hes_Emu.cpp; sourceTree = ""; }; + B3E6C1212894D28700CF98C7 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3E6C1222894D28700CF98C7 /* design.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = design.txt; sourceTree = ""; }; + B3E6C1232894D28700CF98C7 /* changes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = changes.txt; sourceTree = ""; }; + B3E6C1242894D28700CF98C7 /* test.nsf */ = {isa = PBXFileReference; lastKnownFileType = file; path = test.nsf; sourceTree = ""; }; + B3E6C1252894D28700CF98C7 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3E6C1262894D28700CF98C7 /* test.m3u */ = {isa = PBXFileReference; lastKnownFileType = text; path = test.m3u; sourceTree = ""; }; + B3E6C1272894D28700CF98C7 /* gme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = gme.txt; sourceTree = ""; }; + B3E6C1282894D28700CF98C7 /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B3E6C12B2894D28700CF98C7 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3E6C12D2894D28700CF98C7 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3E6C12E2894D28700CF98C7 /* vfs_implementation_uwp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfs_implementation_uwp.cpp; sourceTree = ""; }; + B3E6C1302894D28700CF98C7 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3E6C1312894D28700CF98C7 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3E6C1322894D28700CF98C7 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3E6C1332894D28700CF98C7 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3E6C1342894D28700CF98C7 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3E6C1362894D28700CF98C7 /* file_path_io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path_io.c; sourceTree = ""; }; + B3E6C1372894D28700CF98C7 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3E6C1392894D28700CF98C7 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3E6C13A2894D28700CF98C7 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3E6C13D2894D28700CF98C7 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3E6C13F2894D28700CF98C7 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3E6C1402894D28700CF98C7 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3E6C1412894D28700CF98C7 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3E6C1432894D28700CF98C7 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3E6C1442894D28700CF98C7 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3E6C1462894D28700CF98C7 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3E6C1472894D28700CF98C7 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3E6C1482894D28700CF98C7 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3E6C1492894D28700CF98C7 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3E6C14A2894D28700CF98C7 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3E6C14C2894D28700CF98C7 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3E6C14D2894D28700CF98C7 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3E6C14E2894D28700CF98C7 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3E6C1502894D28700CF98C7 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3E6C1512894D28700CF98C7 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3E6C1522894D28700CF98C7 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3E6C1542894D28700CF98C7 /* rtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtime.h; sourceTree = ""; }; + B3E6C1552894D28700CF98C7 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3E6C1562894D28700CF98C7 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3E6C1572894D28700CF98C7 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3E6C1582894D28700CF98C7 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3E6C15A2894D28700CF98C7 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3E6C15B2894D28700CF98C7 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3E6C15D2894D28700CF98C7 /* rtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtime.c; sourceTree = ""; }; + B3E6C15F2894D28700CF98C7 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3E6C1612894D28700CF98C7 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3E6C1622894D28700CF98C7 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3E6C1632894D28700CF98C7 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3E6C1642894D28700CF98C7 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3E6C1652894D28700CF98C7 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3E6C1662894D28700CF98C7 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3E6C1672894D28700CF98C7 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3E6C1682894D28700CF98C7 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3E6C1692894D28700CF98C7 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3E6C16A2894D28700CF98C7 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3E6C16D2894D28700CF98C7 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B3E6C16E2894D28700CF98C7 /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B3E6C16F2894D28700CF98C7 /* iowin32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iowin32.h; sourceTree = ""; }; + B3E6C1702894D28700CF98C7 /* ioapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + B3E6C1712894D28700CF98C7 /* crypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + B3E6C1722894D28700CF98C7 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B3E6C1732894D28700CF98C7 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B3E6C1742894D28700CF98C7 /* ioapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + B3E6C1752894D28700CF98C7 /* iowin32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iowin32.c; sourceTree = ""; }; + B3E6C1762894D28700CF98C7 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3E6C1772894D28700CF98C7 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3E6C1782894D28700CF98C7 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3E6C1792894D28700CF98C7 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3E6C17A2894D28700CF98C7 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3E6C17B2894D28700CF98C7 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3E6C17C2894D28700CF98C7 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3E6C17D2894D28700CF98C7 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3E6C17E2894D28700CF98C7 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3E6C17F2894D28700CF98C7 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3E6C1802894D28700CF98C7 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B3E6C1812894D28700CF98C7 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B3E6C1822894D28700CF98C7 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B3E6C1832894D28700CF98C7 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B3E6C1842894D28700CF98C7 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3E6C1852894D28700CF98C7 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3E6C1862894D28700CF98C7 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3E6C1872894D28700CF98C7 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3E6C1882894D28700CF98C7 /* gme_libretro.info */ = {isa = PBXFileReference; lastKnownFileType = text; path = gme_libretro.info; sourceTree = ""; }; + B3E6C1892894D28700CF98C7 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3E6C18A2894D28700CF98C7 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3E6C18C2894D28700CF98C7 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3E6C18D2894D28700CF98C7 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3E6C18E2894D28700CF98C7 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3E6C1902894D28700CF98C7 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3E6C1912894D28700CF98C7 /* fileformat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileformat.h; sourceTree = ""; }; + B3E6C1922894D28700CF98C7 /* graphics.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = graphics.c; sourceTree = ""; }; + B3E6C1932894D28800CF98C7 /* playlist.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = playlist.c; sourceTree = ""; }; + B3E6C1942894D28800CF98C7 /* player.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = player.h; sourceTree = ""; }; + B3E6C1952894D28800CF98C7 /* fileformat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fileformat.c; sourceTree = ""; }; + B3E6C1962894D28800CF98C7 /* graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics.h; sourceTree = ""; }; + B3E6C1972894D28800CF98C7 /* player.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = player.c; sourceTree = ""; }; + B3E6C1982894D28800CF98C7 /* playlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = playlist.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B3D3E7552894DC890016EB85 /* libgme.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3D3E7522894DC890016EB85 /* libgme-libretro.a in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B3447EB5218BCE2000557ACE /* Core */ = { + isa = PBXGroup; + children = ( + B3C76223207833DE009950E4 /* PVGMECore.h */, + B3C76224207833DE009950E4 /* PVGMECore.mm */, + B3447EB1218BC69700557ACE /* PVGMECore+Audio.h */, + B3447EB2218BC69700557ACE /* PVGMECore+Audio.m */, + B3447EAD218BC5C500557ACE /* PVGMECore+Video.h */, + B3447EAE218BC5C500557ACE /* PVGMECore+Video.m */, + B3447EA9218BC59D00557ACE /* PVGMECore+Saves.h */, + B3447EAA218BC59D00557ACE /* PVGMECore+Saves.m */, + B3447E96218B809200557ACE /* PVGMECore+Controls.h */, + B3447E97218B809300557ACE /* PVGMECore+Controls.mm */, + ); + path = Core; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3E6C0AF2894D28600CF98C7 /* libretro-gme */, + B3C762202078327B009950E4 /* PVGMECore */, + B3C7621220783162009950E4 /* PVGME */, + B3C7621120783162009950E4 /* Products */, + B3C7621B20783242009950E4 /* Frameworks */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVGME.framework */, + B30178D3207C901D0051B93D /* libgme.a */, + B3344BC32859E088006E6B3A /* libgme-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621220783162009950E4 /* PVGME */ = { + isa = PBXGroup; + children = ( + B3C7622720783510009950E4 /* Core.plist */, + B3C7621320783162009950E4 /* PVGME.h */, + B3C7621420783162009950E4 /* Info.plist */, + ); + path = PVGME; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3C762202078327B009950E4 /* PVGMECore */ = { + isa = PBXGroup; + children = ( + B3447EB5218BCE2000557ACE /* Core */, + B3447EA0218B881000557ACE /* PVGME.mm */, + ); + path = PVGMECore; + sourceTree = ""; + }; + B3E6C0AF2894D28600CF98C7 /* libretro-gme */ = { + isa = PBXGroup; + children = ( + B3E6C0B42894D28600CF98C7 /* .gitignore */, + B3E6C0B02894D28600CF98C7 /* LICENSE */, + B3E6C0B12894D28600CF98C7 /* Makefile */, + B3E6C0B22894D28600CF98C7 /* Makefile.common */, + B3E6C1882894D28700CF98C7 /* gme_libretro.info */, + B3E6C0B32894D28600CF98C7 /* README.md */, + B3E6C18A2894D28700CF98C7 /* link.T */, + B3E6C1892894D28700CF98C7 /* .gitlab-ci.yml */, + B3E6C18E2894D28700CF98C7 /* .travis.yml */, + B3E6C0B52894D28600CF98C7 /* deps */, + B3E6C18B2894D28700CF98C7 /* jni */, + B3E6C18F2894D28700CF98C7 /* src */, + ); + path = "libretro-gme"; + sourceTree = ""; + }; + B3E6C0B52894D28600CF98C7 /* deps */ = { + isa = PBXGroup; + children = ( + B3E6C0B62894D28600CF98C7 /* game-music-emu */, + B3E6C1292894D28700CF98C7 /* libretro-common */, + B3E6C1602894D28700CF98C7 /* zlib-1.2.8 */, + ); + path = deps; + sourceTree = ""; + }; + B3E6C0B62894D28600CF98C7 /* game-music-emu */ = { + isa = PBXGroup; + children = ( + B3E6C0B72894D28600CF98C7 /* gme */, + B3E6C1212894D28700CF98C7 /* CMakeLists.txt */, + B3E6C1222894D28700CF98C7 /* design.txt */, + B3E6C1232894D28700CF98C7 /* changes.txt */, + B3E6C1242894D28700CF98C7 /* test.nsf */, + B3E6C1252894D28700CF98C7 /* readme.txt */, + B3E6C1262894D28700CF98C7 /* test.m3u */, + B3E6C1272894D28700CF98C7 /* gme.txt */, + B3E6C1282894D28700CF98C7 /* license.txt */, + ); + path = "game-music-emu"; + sourceTree = ""; + }; + B3E6C0B72894D28600CF98C7 /* gme */ = { + isa = PBXGroup; + children = ( + B3E6C0F82894D28600CF98C7 /* Ay_Apu.cpp */, + B3E6C0F42894D28600CF98C7 /* Ay_Cpu.cpp */, + B3E6C0CE2894D28600CF98C7 /* Ay_Emu.cpp */, + B3E6C0E92894D28600CF98C7 /* Blip_Buffer.cpp */, + B3E6C0BF2894D28600CF98C7 /* Classic_Emu.cpp */, + B3E6C0F22894D28600CF98C7 /* Data_Reader.cpp */, + B3E6C0E32894D28600CF98C7 /* Dual_Resampler.cpp */, + B3E6C0D62894D28600CF98C7 /* Effects_Buffer.cpp */, + B3E6C0E12894D28600CF98C7 /* Fir_Resampler.cpp */, + B3E6C0EC2894D28600CF98C7 /* Gb_Apu.cpp */, + B3E6C0E82894D28600CF98C7 /* Gb_Cpu.cpp */, + B3E6C0DE2894D28600CF98C7 /* Gb_Oscs.cpp */, + B3E6C0BA2894D28600CF98C7 /* Gbs_Emu.cpp */, + B3E6C1052894D28700CF98C7 /* Gme_File.cpp */, + B3E6C0D82894D28600CF98C7 /* gme.cpp */, + B3E6C0F72894D28600CF98C7 /* Gym_Emu.cpp */, + B3E6C0D92894D28600CF98C7 /* Hes_Apu.cpp */, + B3E6C0DD2894D28600CF98C7 /* Hes_Cpu.cpp */, + B3E6C1202894D28700CF98C7 /* Hes_Emu.cpp */, + B3E6C0BB2894D28600CF98C7 /* Kss_Cpu.cpp */, + B3E6C0FD2894D28700CF98C7 /* Kss_Emu.cpp */, + B3E6C0E42894D28600CF98C7 /* Kss_Scc_Apu.cpp */, + B3E6C0C42894D28600CF98C7 /* M3u_Playlist.cpp */, + B3E6C0CD2894D28600CF98C7 /* Multi_Buffer.cpp */, + B3E6C1082894D28700CF98C7 /* Music_Emu.cpp */, + B3E6C0E72894D28600CF98C7 /* Nes_Apu.cpp */, + B3E6C0EB2894D28600CF98C7 /* Nes_Cpu.cpp */, + B3E6C0DC2894D28600CF98C7 /* Nes_Fme7_Apu.cpp */, + B3E6C0FA2894D28600CF98C7 /* Nes_Namco_Apu.cpp */, + B3E6C0C22894D28600CF98C7 /* Nes_Oscs.cpp */, + B3E6C0F52894D28600CF98C7 /* Nes_Vrc6_Apu.cpp */, + B3E6C0DB2894D28600CF98C7 /* Nsf_Emu.cpp */, + B3E6C11B2894D28700CF98C7 /* Nsfe_Emu.cpp */, + B3E6C0C02894D28600CF98C7 /* Sap_Apu.cpp */, + B3E6C0BC2894D28600CF98C7 /* Sap_Cpu.cpp */, + B3E6C0FC2894D28600CF98C7 /* Sap_Emu.cpp */, + B3E6C0D32894D28600CF98C7 /* Sms_Apu.cpp */, + B3E6C0CB2894D28600CF98C7 /* Snes_Spc.cpp */, + B3E6C0DF2894D28600CF98C7 /* Spc_Cpu.cpp */, + B3E6C1182894D28700CF98C7 /* Spc_Dsp.cpp */, + B3E6C11F2894D28700CF98C7 /* Spc_Emu.cpp */, + B3E6C0EF2894D28600CF98C7 /* Spc_Filter.cpp */, + B3E6C0ED2894D28600CF98C7 /* Vgm_Emu_Impl.cpp */, + B3E6C0BE2894D28600CF98C7 /* Vgm_Emu.cpp */, + B3E6C11D2894D28700CF98C7 /* Ym2413_Emu.cpp */, + B3E6C0D72894D28600CF98C7 /* Ym2612_Emu.cpp */, + B3E6C1162894D28700CF98C7 /* Ay_Apu.h */, + B3E6C11A2894D28700CF98C7 /* Ay_Cpu.h */, + B3E6C11C2894D28700CF98C7 /* Ay_Emu.h */, + B3E6C0C82894D28600CF98C7 /* blargg_common.h */, + B3E6C0F32894D28600CF98C7 /* blargg_config.h */, + B3E6C1192894D28700CF98C7 /* blargg_endian.h */, + B3E6C1172894D28700CF98C7 /* blargg_source.h */, + B3E6C1112894D28700CF98C7 /* Blip_Buffer.h */, + B3E6C0F02894D28600CF98C7 /* Classic_Emu.h */, + B3E6C0C62894D28600CF98C7 /* Data_Reader.h */, + B3E6C0D02894D28600CF98C7 /* Dual_Resampler.h */, + B3E6C0F92894D28600CF98C7 /* Effects_Buffer.h */, + B3E6C10E2894D28700CF98C7 /* Fir_Resampler.h */, + B3E6C1022894D28700CF98C7 /* Gb_Apu.h */, + B3E6C0E22894D28600CF98C7 /* gb_cpu_io.h */, + B3E6C0FE2894D28700CF98C7 /* Gb_Cpu.h */, + B3E6C0FB2894D28600CF98C7 /* Gb_Oscs.h */, + B3E6C1072894D28700CF98C7 /* Gbs_Emu.h */, + B3E6C1132894D28700CF98C7 /* Gme_File.h */, + B3E6C1102894D28700CF98C7 /* gme_types.h */, + B3E6C0C52894D28600CF98C7 /* gme.h */, + B3E6C0BD2894D28600CF98C7 /* Gym_Emu.h */, + B3E6C0FF2894D28700CF98C7 /* Hes_Apu.h */, + B3E6C11E2894D28700CF98C7 /* hes_cpu_io.h */, + B3E6C1012894D28700CF98C7 /* Hes_Cpu.h */, + B3E6C1042894D28700CF98C7 /* Hes_Emu.h */, + B3E6C1122894D28700CF98C7 /* Kss_Cpu.h */, + B3E6C10D2894D28700CF98C7 /* Kss_Emu.h */, + B3E6C0E62894D28600CF98C7 /* Kss_Scc_Apu.h */, + B3E6C0E52894D28600CF98C7 /* M3u_Playlist.h */, + B3E6C0EA2894D28600CF98C7 /* Multi_Buffer.h */, + B3E6C1002894D28700CF98C7 /* Music_Emu.h */, + B3E6C0B82894D28600CF98C7 /* Nes_Apu.h */, + B3E6C0CA2894D28600CF98C7 /* nes_cpu_io.h */, + B3E6C0C72894D28600CF98C7 /* Nes_Cpu.h */, + B3E6C10F2894D28700CF98C7 /* Nes_Fme7_Apu.h */, + B3E6C1032894D28700CF98C7 /* Nes_Namco_Apu.h */, + B3E6C0F12894D28600CF98C7 /* Nes_Oscs.h */, + B3E6C0E02894D28600CF98C7 /* Nes_Vrc6_Apu.h */, + B3E6C1092894D28700CF98C7 /* Nsf_Emu.h */, + B3E6C0EE2894D28600CF98C7 /* Nsfe_Emu.h */, + B3E6C0B92894D28600CF98C7 /* Sap_Apu.h */, + B3E6C10B2894D28700CF98C7 /* sap_cpu_io.h */, + B3E6C0C32894D28600CF98C7 /* Sap_Cpu.h */, + B3E6C0C12894D28600CF98C7 /* Sap_Emu.h */, + B3E6C0DA2894D28600CF98C7 /* Sms_Apu.h */, + B3E6C10A2894D28700CF98C7 /* Sms_Oscs.h */, + B3E6C1062894D28700CF98C7 /* Snes_Spc.h */, + B3E6C0C92894D28600CF98C7 /* Spc_Cpu.h */, + B3E6C0D52894D28600CF98C7 /* Spc_Dsp.h */, + B3E6C0CF2894D28600CF98C7 /* Spc_Emu.h */, + B3E6C0D22894D28600CF98C7 /* Spc_Filter.h */, + B3E6C0D42894D28600CF98C7 /* Vgm_Emu_Impl.h */, + B3E6C0F62894D28600CF98C7 /* Vgm_Emu.h */, + B3E6C10C2894D28700CF98C7 /* Ym2413_Emu.h */, + B3E6C1152894D28700CF98C7 /* Ym2612_Emu.h */, + B3E6C0D12894D28600CF98C7 /* gme_types.h.in */, + B3E6C1142894D28700CF98C7 /* libgme.pc.in */, + B3E6C0CC2894D28600CF98C7 /* CMakeLists.txt */, + ); + path = gme; + sourceTree = ""; + }; + B3E6C1292894D28700CF98C7 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3E6C12F2894D28700CF98C7 /* compat */, + B3E6C12A2894D28700CF98C7 /* encodings */, + B3E6C1352894D28700CF98C7 /* file */, + B3E6C13B2894D28700CF98C7 /* include */, + B3E6C1382894D28700CF98C7 /* streams */, + B3E6C15E2894D28700CF98C7 /* string */, + B3E6C15C2894D28700CF98C7 /* time */, + B3E6C12C2894D28700CF98C7 /* vfs */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3E6C12A2894D28700CF98C7 /* encodings */ = { + isa = PBXGroup; + children = ( + B3E6C12B2894D28700CF98C7 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3E6C12C2894D28700CF98C7 /* vfs */ = { + isa = PBXGroup; + children = ( + B3E6C12D2894D28700CF98C7 /* vfs_implementation.c */, + B3E6C12E2894D28700CF98C7 /* vfs_implementation_uwp.cpp */, + ); + path = vfs; + sourceTree = ""; + }; + B3E6C12F2894D28700CF98C7 /* compat */ = { + isa = PBXGroup; + children = ( + B3E6C1302894D28700CF98C7 /* compat_strl.c */, + B3E6C1312894D28700CF98C7 /* compat_posix_string.c */, + B3E6C1322894D28700CF98C7 /* compat_strcasestr.c */, + B3E6C1332894D28700CF98C7 /* compat_snprintf.c */, + B3E6C1342894D28700CF98C7 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B3E6C1352894D28700CF98C7 /* file */ = { + isa = PBXGroup; + children = ( + B3E6C1362894D28700CF98C7 /* file_path_io.c */, + B3E6C1372894D28700CF98C7 /* file_path.c */, + ); + path = file; + sourceTree = ""; + }; + B3E6C1382894D28700CF98C7 /* streams */ = { + isa = PBXGroup; + children = ( + B3E6C1392894D28700CF98C7 /* file_stream_transforms.c */, + B3E6C13A2894D28700CF98C7 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3E6C13B2894D28700CF98C7 /* include */ = { + isa = PBXGroup; + children = ( + B3E6C1552894D28700CF98C7 /* boolean.h */, + B3E6C1562894D28700CF98C7 /* libretro.h */, + B3E6C1582894D28700CF98C7 /* retro_assert.h */, + B3E6C14A2894D28700CF98C7 /* retro_common_api.h */, + B3E6C1572894D28700CF98C7 /* retro_common.h */, + B3E6C15B2894D28700CF98C7 /* retro_endianness.h */, + B3E6C14D2894D28700CF98C7 /* retro_environment.h */, + B3E6C14E2894D28700CF98C7 /* retro_inline.h */, + B3E6C1522894D28700CF98C7 /* retro_miscellaneous.h */, + B3E6C1422894D28700CF98C7 /* compat */, + B3E6C13C2894D28700CF98C7 /* encodings */, + B3E6C14B2894D28700CF98C7 /* file */, + B3E6C14F2894D28700CF98C7 /* streams */, + B3E6C1592894D28700CF98C7 /* string */, + B3E6C1532894D28700CF98C7 /* time */, + B3E6C13E2894D28700CF98C7 /* vfs */, + ); + path = include; + sourceTree = ""; + }; + B3E6C13C2894D28700CF98C7 /* encodings */ = { + isa = PBXGroup; + children = ( + B3E6C13D2894D28700CF98C7 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3E6C13E2894D28700CF98C7 /* vfs */ = { + isa = PBXGroup; + children = ( + B3E6C13F2894D28700CF98C7 /* vfs.h */, + B3E6C1402894D28700CF98C7 /* vfs_implementation.h */, + B3E6C1412894D28700CF98C7 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3E6C1422894D28700CF98C7 /* compat */ = { + isa = PBXGroup; + children = ( + B3E6C1432894D28700CF98C7 /* strl.h */, + B3E6C1442894D28700CF98C7 /* strcasestr.h */, + B3E6C1452894D28700CF98C7 /* msvc */, + B3E6C1472894D28700CF98C7 /* fopen_utf8.h */, + B3E6C1482894D28700CF98C7 /* posix_string.h */, + B3E6C1492894D28700CF98C7 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3E6C1452894D28700CF98C7 /* msvc */ = { + isa = PBXGroup; + children = ( + B3E6C1462894D28700CF98C7 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3E6C14B2894D28700CF98C7 /* file */ = { + isa = PBXGroup; + children = ( + B3E6C14C2894D28700CF98C7 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3E6C14F2894D28700CF98C7 /* streams */ = { + isa = PBXGroup; + children = ( + B3E6C1502894D28700CF98C7 /* file_stream.h */, + B3E6C1512894D28700CF98C7 /* file_stream_transforms.h */, + ); + path = streams; + sourceTree = ""; + }; + B3E6C1532894D28700CF98C7 /* time */ = { + isa = PBXGroup; + children = ( + B3E6C1542894D28700CF98C7 /* rtime.h */, + ); + path = time; + sourceTree = ""; + }; + B3E6C1592894D28700CF98C7 /* string */ = { + isa = PBXGroup; + children = ( + B3E6C15A2894D28700CF98C7 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3E6C15C2894D28700CF98C7 /* time */ = { + isa = PBXGroup; + children = ( + B3E6C15D2894D28700CF98C7 /* rtime.c */, + ); + path = time; + sourceTree = ""; + }; + B3E6C15E2894D28700CF98C7 /* string */ = { + isa = PBXGroup; + children = ( + B3E6C15F2894D28700CF98C7 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3E6C1602894D28700CF98C7 /* zlib-1.2.8 */ = { + isa = PBXGroup; + children = ( + B3E6C1672894D28700CF98C7 /* FAQ */, + B3E6C1772894D28700CF98C7 /* README */, + B3E6C1862894D28700CF98C7 /* adler32.c */, + B3E6C1642894D28700CF98C7 /* compress.c */, + B3E6C1762894D28700CF98C7 /* crc32.c */, + B3E6C1652894D28700CF98C7 /* deflate.c */, + B3E6C1832894D28700CF98C7 /* gzclose.c */, + B3E6C17D2894D28700CF98C7 /* gzlib.c */, + B3E6C1682894D28700CF98C7 /* gzread.c */, + B3E6C1812894D28700CF98C7 /* gzwrite.c */, + B3E6C1782894D28700CF98C7 /* infback.c */, + B3E6C1852894D28700CF98C7 /* inffast.c */, + B3E6C1632894D28700CF98C7 /* inflate.c */, + B3E6C17F2894D28700CF98C7 /* inftrees.c */, + B3E6C1822894D28700CF98C7 /* trees.c */, + B3E6C1802894D28700CF98C7 /* uncompr.c */, + B3E6C1792894D28700CF98C7 /* zutil.c */, + B3E6C1842894D28700CF98C7 /* crc32.h */, + B3E6C17A2894D28700CF98C7 /* deflate.h */, + B3E6C17B2894D28700CF98C7 /* gzguts.h */, + B3E6C16A2894D28700CF98C7 /* inffast.h */, + B3E6C1662894D28700CF98C7 /* inffixed.h */, + B3E6C17E2894D28700CF98C7 /* inflate.h */, + B3E6C1622894D28700CF98C7 /* inftrees.h */, + B3E6C1692894D28700CF98C7 /* trees.h */, + B3E6C1872894D28700CF98C7 /* zconf.h */, + B3E6C17C2894D28700CF98C7 /* zlib.h */, + B3E6C1612894D28700CF98C7 /* zutil.h */, + B3E6C16B2894D28700CF98C7 /* contrib */, + ); + path = "zlib-1.2.8"; + sourceTree = ""; + }; + B3E6C16B2894D28700CF98C7 /* contrib */ = { + isa = PBXGroup; + children = ( + B3E6C16C2894D28700CF98C7 /* minizip */, + ); + path = contrib; + sourceTree = ""; + }; + B3E6C16C2894D28700CF98C7 /* minizip */ = { + isa = PBXGroup; + children = ( + B3E6C16D2894D28700CF98C7 /* unzip.c */, + B3E6C16E2894D28700CF98C7 /* zip.c */, + B3E6C16F2894D28700CF98C7 /* iowin32.h */, + B3E6C1702894D28700CF98C7 /* ioapi.c */, + B3E6C1712894D28700CF98C7 /* crypt.h */, + B3E6C1722894D28700CF98C7 /* zip.h */, + B3E6C1732894D28700CF98C7 /* unzip.h */, + B3E6C1742894D28700CF98C7 /* ioapi.h */, + B3E6C1752894D28700CF98C7 /* iowin32.c */, + ); + path = minizip; + sourceTree = ""; + }; + B3E6C18B2894D28700CF98C7 /* jni */ = { + isa = PBXGroup; + children = ( + B3E6C18C2894D28700CF98C7 /* Android.mk */, + B3E6C18D2894D28700CF98C7 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3E6C18F2894D28700CF98C7 /* src */ = { + isa = PBXGroup; + children = ( + B3E6C1952894D28800CF98C7 /* fileformat.c */, + B3E6C1922894D28700CF98C7 /* graphics.c */, + B3E6C1902894D28700CF98C7 /* libretro.c */, + B3E6C1972894D28800CF98C7 /* player.c */, + B3E6C1932894D28800CF98C7 /* playlist.c */, + B3E6C1912894D28700CF98C7 /* fileformat.h */, + B3E6C1962894D28800CF98C7 /* graphics.h */, + B3E6C1942894D28800CF98C7 /* player.h */, + B3E6C1982894D28800CF98C7 /* playlist.h */, + ); + path = src; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3135B9C26E4CC290047F338 /* PVGMECore.h in Headers */, + B3135BA126E4CC620047F338 /* PVGME.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* gme */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "gme" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = gme; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libgme.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* gme-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "gme-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "gme-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libgme-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVGME */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVGME" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B3D3E7542894DC890016EB85 /* PBXTargetDependency */, + B3D3E7572894DC890016EB85 /* PBXTargetDependency */, + ); + name = PVGME; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVGME.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVGME" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVGME */, + B3344B522859E088006E6B3A /* gme-libretro */, + B30178D2207C901D0051B93D /* gme */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33350262078619C0036A448 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C2CD542894D8AE00DE3B94 /* Sap_Cpu.cpp in Sources */, + B3C2CD182894D88F00DE3B94 /* Gbs_Emu.cpp in Sources */, + B3C2CD212894D88F00DE3B94 /* Gb_Apu.cpp in Sources */, + B3C2CD462894D8AE00DE3B94 /* Nes_Namco_Apu.cpp in Sources */, + B3C2CD282894D88F00DE3B94 /* Effects_Buffer.cpp in Sources */, + B3C2CD0E2894D83700DE3B94 /* file_path.c in Sources */, + B3C2CCE32894D7E600DE3B94 /* gzlib.c in Sources */, + B3C2CD002894D81500DE3B94 /* compat_strcasestr.c in Sources */, + B3C2CCEC2894D7E700DE3B94 /* ioapi.c in Sources */, + B3C2CD412894D8AE00DE3B94 /* Multi_Buffer.cpp in Sources */, + B3C2CD222894D88F00DE3B94 /* Hes_Apu.cpp in Sources */, + B3C2CD292894D88F00DE3B94 /* Classic_Emu.cpp in Sources */, + B381A27A292637CD00305322 /* encoding_utf.c in Sources */, + B3C2CCFC2894D81500DE3B94 /* compat_posix_string.c in Sources */, + B3C2CD1B2894D88F00DE3B94 /* Ay_Cpu.cpp in Sources */, + B3C2CD4D2894D8AE00DE3B94 /* Ym2413_Emu.cpp in Sources */, + B3C2CD252894D88F00DE3B94 /* gme.cpp in Sources */, + B3C2CCE02894D7E600DE3B94 /* zutil.c in Sources */, + B3C2CD482894D8AE00DE3B94 /* Nes_Apu.cpp in Sources */, + B3C2CCE82894D7E600DE3B94 /* gzread.c in Sources */, + B3C2CD242894D88F00DE3B94 /* Dual_Resampler.cpp in Sources */, + B3C2CD452894D8AE00DE3B94 /* Vgm_Emu.cpp in Sources */, + B3C2CD502894D8AE00DE3B94 /* Snes_Spc.cpp in Sources */, + B3C2CD402894D8AE00DE3B94 /* Nes_Oscs.cpp in Sources */, + B3C2CD172894D88F00DE3B94 /* Fir_Resampler.cpp in Sources */, + B3C2CD1E2894D88F00DE3B94 /* Data_Reader.cpp in Sources */, + B3C2CD492894D8AE00DE3B94 /* Nes_Fme7_Apu.cpp in Sources */, + B3C2CD082894D81F00DE3B94 /* file_stream_transforms.c in Sources */, + B3C2CCE12894D7E600DE3B94 /* gzclose.c in Sources */, + B3C2CD232894D88F00DE3B94 /* Gb_Cpu.cpp in Sources */, + B3C2CD4C2894D8AE00DE3B94 /* Sms_Apu.cpp in Sources */, + B3C2CD272894D88F00DE3B94 /* Blip_Buffer.cpp in Sources */, + B3C2CCE52894D7E600DE3B94 /* trees.c in Sources */, + B3C2CD1C2894D88F00DE3B94 /* Gb_Oscs.cpp in Sources */, + B3C2CD152894D88F00DE3B94 /* Kss_Scc_Apu.cpp in Sources */, + B3C2CD0F2894D83700DE3B94 /* rtime.c in Sources */, + B3C2CCE92894D7E700DE3B94 /* inftrees.c in Sources */, + B3C2CD522894D8AE00DE3B94 /* Sap_Apu.cpp in Sources */, + B3C2CD562894D8AE00DE3B94 /* M3u_Playlist.cpp in Sources */, + B3C2CD1A2894D88F00DE3B94 /* Hes_Cpu.cpp in Sources */, + B3C2CD142894D88F00DE3B94 /* Hes_Emu.cpp in Sources */, + B3C2CD422894D8AE00DE3B94 /* Music_Emu.cpp in Sources */, + B3C2CD572894D8AE00DE3B94 /* Nsf_Emu.cpp in Sources */, + B3C2CD472894D8AE00DE3B94 /* Spc_Cpu.cpp in Sources */, + B3C2CD162894D88F00DE3B94 /* Gme_File.cpp in Sources */, + B3C2CD102894D83700DE3B94 /* file_path_io.c in Sources */, + B3C2CD442894D8AE00DE3B94 /* Sap_Emu.cpp in Sources */, + B3C2CD0B2894D82600DE3B94 /* stdstring.c in Sources */, + B3C2CD4F2894D8AE00DE3B94 /* Spc_Filter.cpp in Sources */, + B3C2CD262894D88F00DE3B94 /* Kss_Cpu.cpp in Sources */, + B3C2CCEB2894D7E700DE3B94 /* unzip.c in Sources */, + B3C2CD552894D8AE00DE3B94 /* Vgm_Emu_Impl.cpp in Sources */, + B3C2CCFE2894D81500DE3B94 /* fopen_utf8.c in Sources */, + B3C2CCFD2894D81500DE3B94 /* compat_snprintf.c in Sources */, + B3C2CCE22894D7E600DE3B94 /* inflate.c in Sources */, + B3C2CD4E2894D8AE00DE3B94 /* Spc_Emu.cpp in Sources */, + B3C2CD4A2894D8AE00DE3B94 /* Nsfe_Emu.cpp in Sources */, + B3C2CD512894D8AE00DE3B94 /* Nes_Cpu.cpp in Sources */, + B3C2CCFF2894D81500DE3B94 /* compat_strl.c in Sources */, + B3C2CCE62894D7E600DE3B94 /* crc32.c in Sources */, + B3C2CCE42894D7E600DE3B94 /* adler32.c in Sources */, + B3C2CD532894D8AE00DE3B94 /* Nes_Vrc6_Apu.cpp in Sources */, + B3C2CD1F2894D88F00DE3B94 /* Ay_Apu.cpp in Sources */, + B3C2CCED2894D7E700DE3B94 /* inffast.c in Sources */, + B3C2CD432894D8AE00DE3B94 /* Spc_Dsp.cpp in Sources */, + B3C2CD192894D88F00DE3B94 /* Ay_Emu.cpp in Sources */, + B3C2CD1D2894D88F00DE3B94 /* Kss_Emu.cpp in Sources */, + B3C2CD4B2894D8AE00DE3B94 /* Ym2612_Emu.cpp in Sources */, + B3C2CD202894D88F00DE3B94 /* Gym_Emu.cpp in Sources */, + B3C2CCEA2894D7E700DE3B94 /* gzwrite.c in Sources */, + B3C2CD0C2894D82E00DE3B94 /* vfs_implementation.c in Sources */, + B3C2CD092894D81F00DE3B94 /* file_stream.c in Sources */, + B3C2CCE72894D7E600DE3B94 /* deflate.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C2CCB02894D78E00DE3B94 /* graphics.c in Sources */, + B3C2CCAD2894D78E00DE3B94 /* libretro.c in Sources */, + B3C2CCAC2894D78E00DE3B94 /* player.c in Sources */, + B3C2CCAF2894D78E00DE3B94 /* fileformat.c in Sources */, + B3C2CCAE2894D78E00DE3B94 /* playlist.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3135B9B26E4CAD40047F338 /* PVGMECore.mm in Sources */, + B380C2712894F63C007B76FD /* PVGMECore+Saves.m in Sources */, + B3EBB2032872B65700EAEB37 /* PVGMECore+Video.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B3D3E7542894DC890016EB85 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* gme-libretro */; + targetProxy = B3D3E7532894DC890016EB85 /* PBXContainerItemProxy */; + }; + B3D3E7572894DC890016EB85 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B30178D2207C901D0051B93D /* gme */; + targetProxy = B3D3E7562894DC890016EB85 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = gme; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = gme; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/GME-pure/include\"", + "\"$(SRCROOT)/libretro-gme/deps/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVGME/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGME"; + PRODUCT_NAME = PVGME; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = gme; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "gme-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "gme-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "gme-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/GME-pure/include\"", + "\"$(SRCROOT)/libretro-gme/deps/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/GME-pure/include\"", + "\"$(SRCROOT)/libretro-gme/deps/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVGME/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGME"; + PRODUCT_NAME = PVGME; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVGME/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGME"; + PRODUCT_NAME = PVGME; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "gme" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "gme-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVGME" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVGME" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/GameMusicEmu/PVGME.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/GameMusicEmu/PVGME.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/GameMusicEmu/PVGME.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/GameMusicEmu/PVGME.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/GameMusicEmu/PVGME.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/GameMusicEmu/PVGME.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/GameMusicEmu/PVGME.xcodeproj/xcshareddata/xcschemes/PVGME.xcscheme b/Cores/GameMusicEmu/PVGME.xcodeproj/xcshareddata/xcschemes/PVGME.xcscheme new file mode 100644 index 0000000000..35e340c562 --- /dev/null +++ b/Cores/GameMusicEmu/PVGME.xcodeproj/xcshareddata/xcschemes/PVGME.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/GameMusicEmu/PVGME/Core.plist b/Cores/GameMusicEmu/PVGME/Core.plist new file mode 100644 index 0000000000..9a7f4224f6 --- /dev/null +++ b/Cores/GameMusicEmu/PVGME/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.GME + PVPrincipleClass + PVGMECore + PVSupportedSystems + + com.provenance.music + + PVProjectName + GME + PVProjectURL + https://github.com/libretro/libretro-gme + PVProjectVersion + 635b1e9 + + diff --git a/Cores/GameMusicEmu/PVGME/Info.plist b/Cores/GameMusicEmu/PVGME/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/GameMusicEmu/PVGME/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/GameMusicEmu/PVGME/PVGME.h b/Cores/GameMusicEmu/PVGME/PVGME.h new file mode 100644 index 0000000000..683e020da3 --- /dev/null +++ b/Cores/GameMusicEmu/PVGME/PVGME.h @@ -0,0 +1,18 @@ +// +// PVGME.h +// PVGME +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVGME. +FOUNDATION_EXPORT double PVGMEVersionNumber; + +//! Project version string for PVGME. +FOUNDATION_EXPORT const unsigned char PVGMEVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Audio.h b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Audio.h new file mode 100644 index 0000000000..548228ba65 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Audio.h @@ -0,0 +1,17 @@ +// +// PVGMECore+Audio.h +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVGMECore (Audio) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Audio.m b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Audio.m new file mode 100644 index 0000000000..6035361c20 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Audio.m @@ -0,0 +1,25 @@ +// +// PVGMECore+Audio.m +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVGMECore+Audio.h" + +@implementation PVGMECore (Audio) + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (NSUInteger)channelCount { + return 2; +} + +- (double)audioSampleRate { + return 44100; +} + +@end diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Controls.h b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Controls.h new file mode 100644 index 0000000000..c69037888b --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Controls.h @@ -0,0 +1,29 @@ +// +// PVGMECore+Controls.h +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVGMECore (Controls) + +- (void)initControllBuffers; +- (void)pollControllers; + +#pragma mark - Control + +- (void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Controls.mm b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Controls.mm new file mode 100644 index 0000000000..3cf368481f --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Controls.mm @@ -0,0 +1,202 @@ +// +// PVGMECore+Controls.m +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import + +#define DC_BTN_C (1<<0) +#define DC_BTN_B (1<<1) +#define DC_BTN_A (1<<2) +#define DC_BTN_START (1<<3) +#define DC_DPAD_UP (1<<4) +#define DC_DPAD_DOWN (1<<5) +#define DC_DPAD_LEFT (1<<6) +#define DC_DPAD_RIGHT (1<<7) +#define DC_BTN_Z (1<<8) +#define DC_BTN_Y (1<<9) +#define DC_BTN_X (1<<10) +#define DC_BTN_D (1<<11) +#define DC_DPAD2_UP (1<<12) +#define DC_DPAD2_DOWN (1<<13) +#define DC_DPAD2_LEFT (1<<14) +#define DC_DPAD2_RIGHT (1<<15) + +#define DC_AXIS_LT (0X10000) +#define DC_AXIS_RT (0X10001) +#define DC_AXIS_X (0X20000) +#define DC_AXIS_Y (0X20001) + +static const int DOSMap[] = { + DC_DPAD_UP, DC_DPAD_DOWN, DC_DPAD_LEFT, DC_DPAD_RIGHT, + DC_BTN_A, DC_BTN_B, DC_BTN_X, DC_BTN_Y, + DC_AXIS_LT, DC_AXIS_RT, + DC_BTN_START +}; + +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef unsigned int u32; + + // Reicast controller data +u16 kcode[4]; +u8 rt[4]; +u8 lt[4]; +u32 vks[4]; +s8 joyx[4], joyy[4]; + +@implementation PVGMECore (Controls) + +- (void)initControllBuffers { + memset(&kcode, 0xFFFF, sizeof(kcode)); + bzero(&rt, sizeof(rt)); + bzero(<, sizeof(lt)); +} + +#pragma mark - Control + +- (void)pollControllers { + for (NSInteger playerIndex = 0; playerIndex < 4; playerIndex++) + { + GCController *controller = nil; + + if (self.controller1 && playerIndex == 0) + { + controller = self.controller1; + } + else if (self.controller2 && playerIndex == 1) + { + controller = self.controller2; + } + else if (self.controller3 && playerIndex == 3) + { + controller = self.controller3; + } + else if (self.controller4 && playerIndex == 4) + { + controller = self.controller4; + } + + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); + dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); + dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); + dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); + + gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); + gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); + gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); + gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); + + gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); + gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); + + gamepad.leftTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Z) : kcode[playerIndex] |= (DC_BTN_Z); + gamepad.rightTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_START) : kcode[playerIndex] |= (DC_BTN_START); + + + float xvalue = gamepad.leftThumbstick.xAxis.value; + s8 x=(s8)(xvalue*127); + joyx[0] = x; + + float yvalue = gamepad.leftThumbstick.yAxis.value; + s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range + joyy[0] = y; + + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); + dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); + dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); + dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); + + gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); + gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); + gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); + gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); + + gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); + gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + } +#endif + } +} + +-(void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +-(void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +-(void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { + [self didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:value forPlayer:player]; +} + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { + [self didPushDOSButton:(PVDOSButton)button forPlayer:player]; +} + +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { + [self didReleaseDOSButton:(PVDOSButton)button forPlayer:player]; +} + + +# pragma mark - Input Wii +//- (oneway void)didMoveWiiJoystickDirection:(OEWiiButton)button withValue:(CGFloat)value forPlayer:(NSUInteger)player +//{ +// if(_isInitialized) +// { +// dol_host->SetAxis(button, value, (int)player); +// } +//} +// +//- (oneway void)didPushWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player +//{ +// if(_isInitialized) +// { +// if (button > OEWiiButtonCount) { +// dol_host->processSpecialKeys(button , (int)player); +// } else { +// dol_host->setButtonState(button, 1, (int)player); +// } +// } +//} +// +//- (oneway void)didReleaseWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player +//{ +// if(_isInitialized && button != OEWiimoteSideways && button != OEWiimoteUpright) +// { +// dol_host->setButtonState(button, 0, (int)player); +// } +//} + +@end diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Saves.h b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Saves.h new file mode 100644 index 0000000000..da1e73bea8 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Saves.h @@ -0,0 +1,17 @@ +// +// PVGME+Saves.h +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVGMECore (Saves) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Saves.m b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Saves.m new file mode 100644 index 0000000000..b58468d632 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Saves.m @@ -0,0 +1,37 @@ +// +// PVGME+Saves.m +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVGMECore+Saves.h" +#import "PVGMECore.h" + +@implementation PVGMECore (Saves) + +#pragma mark - Properties +-(BOOL)supportsSaveStates { + return NO; +} + +#pragma mark - Methods + +- (BOOL)saveStateToFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +@end diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Video.h b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Video.h new file mode 100644 index 0000000000..b46e44d16d --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Video.h @@ -0,0 +1,19 @@ +// +// PVGME+Video.h +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVGMECore (Video) + +- (void)videoInterrupt; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Video.m b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Video.m new file mode 100644 index 0000000000..7b250c5b63 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore+Video.m @@ -0,0 +1,97 @@ +// +// PVGME+Video.m +// PVGME +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVGMECore+Video.h" +#import "PVGMECore.h" + +#if !__has_include() +#import +#import +#import +#else +#import +#import +#endif + +@implementation PVGMECore (Video) + +# pragma mark - Methods + +//- (void)videoInterrupt { +// //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)swapBuffers { +// [self.renderDelegate didRenderFrameOnAlternateThread]; +//} +// +//- (void)executeFrameSkippingFrame:(BOOL)skip { +// +// if (![self isEmulationPaused]) +// { +// } +// //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// +// //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)executeFrame { +// [self executeFrameSkippingFrame:NO]; +//} + +# pragma mark - Properties + +//- (CGSize)bufferSize { +// CGSize size = CGSizeMake(av_info.geometry.max_width, av_info.geometry.max_height); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} +// +//- (CGRect)screenRect { +// CGRect rect = CGRectMake(0, 0, av_info.geometry.base_width, av_info.geometry.base_height); +// DLOG(@"<%i, %i>", rect.size.width, rect.size.height); +// return rect; +//} +// +//- (CGSize)aspectSize { +// CGSize size = CGSizeMake(1, av_info.geometry.aspect_ratio); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} + +//- (BOOL)rendersToOpenGL { +// return YES; +//} +// +//- (BOOL)isDoubleBuffered { +// return YES; +//} + +//- (const void *)videoBuffer { +// return NULL; +//} + +//- (GLenum)pixelFormat { +// return GL_RGBA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +// +//- (GLenum)depthFormat { +// // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 +// return GL_DEPTH_COMPONENT24; +//} +@end diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore.h b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore.h new file mode 100644 index 0000000000..9204563a49 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore.h @@ -0,0 +1,21 @@ +// +// PVGMECore.h +// PVGME +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVGMECore : PVLibRetroCore + +@end diff --git a/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore.mm b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore.mm new file mode 100644 index 0000000000..0450110571 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/Core/PVGMECore.mm @@ -0,0 +1,218 @@ +// +// PVGMECore.m +// PVGME +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVGMECore.h" +#include +#import "PVGMECore+Controls.h" +#import "PVGMECore+Audio.h" +#import "PVGMECore+Video.h" + +#import "PVGMECore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVGMECore() { + +} + +@end + +#pragma mark - PVGMECore Begin + +@implementation PVGMECore +{ +} + +- (instancetype)init { + if (self = [super init]) { + pitch_shift = 4; + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// BOOL loaded = [super loadFileAtPath:path completionHandler:error]; +// +// return loaded; +//} + +#pragma mark - Running +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + +#define V(x) strcmp(variable, x) == 0 + if (V("GME_pure_force60fps")) { + // true|false + // "Enable this to force output at 60FPS. Use this if you encounter screen tearing or vsync issues.", NULL + + char *value = strdup("true"); + return value; + } else if (V("GME_pure_perfstats")) { + // none,simple,detailed + char *value = strdup("none"); + return value; + } else if (V("GME_pure_perfstats")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("GME_pure_savestate")) { + // on,rewind,disable + char *value = strdup("on"); + return value; + } else if (V("GME_pure_on_screen_keyboard")) { + // true,false + // Enable the On Screen Keyboard feature which can be activated with the L3 button on the controller. + char *value = strdup("true"); + return value; + } else if (V("GME_pure_audiorate")) { + // "This should match the frontend audio output rate (Hz) setting.", NULL, +// char * value = [[NSString stringWithFormat:@"%i", self.audioSampleRate] cStringUsingEncoding:NSUTF8StringEncoding]; + char *value = strdup("44100"); + return value; + } else if (V("GME_pure_machine")) { +// { "svga", "SVGA (Super Video Graphics Array) (default)" }, +// { "vga", "VGA (Video Graphics Array)" }, +// { "ega", "EGA (Enhanced Graphics Adapter" }, +// { "cga", "CGA (Color Graphics Adapter)" }, +// { "tandy", "Tandy (Tandy Graphics Adapter" }, +// { "hercules", "Hercules (Hercules Graphics Card)" }, +// { "pcjr", "PCjr" }, + char *value = strdup("svga"); + return value; + } else if (V("GME_pure_cga")) { + char *value = strdup("early_auto"); + return value; + } else if (V("GME_pure_hercules")) { + char *value = strdup("white"); + return value; + } else if (V("GME_pure_svga")) { + char *value = strdup("svga_s3"); + return value; + } else if (V("GME_pure_aspect_correction")) { + char *value = strdup("false"); + return value; + } else if (V("GME_pure_memory_size")) { + char *value = strdup("16"); + return value; + } else if (V("GME_pure_cpu_type")) { + char *value = strdup("pentium_slow"); // auto + return value; + } else if (V("GME_pure_cpu_core")) { + char *value = strdup("auto"); + return value; + } else if (V("GME_pure_keyboard_layout")) { + char *value = strdup("us"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + + /* + "GME_pure_mouse_wheel", + "Bind Mouse Wheel To Key", NULL, + "Bind mouse wheel up and down to two keyboard keys to be able to use it in DOS games.", NULL, + "Input", + { + { "67/68", "Left-Bracket/Right-Bracket" }, + { "72/71", "Comma/Period" }, + { "79/82", "Page-Up/Page-Down" }, + { "78/81", "Home/End" }, + { "80/82", "Delete/Page-Down" }, + { "64/65", "Minus/Equals" }, + { "69/70", "Semicolon/Quote" }, + { "99/100", "Numpad Minus/Plus" }, + { "97/98", "Numpad Divide/Multiply" }, + { "84/85", "Up/Down" }, + { "83/86", "Left/Right" }, + { "11/13", "Q/E" }, + { "none", "Disable" }, + }, + "67/68" + + "GME_pure_cycles", + "Emulated Performance", NULL, + "The raw performance that GME will try to emulate." "\n\n", NULL, //end of Performance section + "Performance", + { + { "auto", "AUTO - GME will try to detect performance needs (default)" }, + { "max", "MAX - Emulate as many instructions as possible" }, + { "315", "8086/8088, 4.77 MHz from 1980 (315 cps)" }, + { "1320", "286, 6 MHz from 1982 (1320 cps)" }, + { "2750", "286, 12.5 MHz from 1985 (2750 cps)" }, + { "4720", "386, 20 MHz from 1987 (4720 cps)" }, + { "7800", "386DX, 33 MHz from 1989 (7800 cps)" }, + { "13400", "486DX, 33 MHz from 1990 (13400 cps)" }, + { "26800", "486DX2, 66 MHz from 1992 (26800 cps)" }, + { "77000", "Pentium, 100 MHz from 1995 (77000 cps)" }, + { "200000", "Pentium II, 300 MHz from 1997 (200000 cps)" }, + { "500000", "Pentium III, 600 MHz from 1999 (500000 cps)" }, + { "1000000", "AMD Athlon, 1.2 GHz from 2000 (1000000 cps)" }, + }, + + "GME_pure_cpu_type", + "CPU Type", NULL, + "Emulated CPU type. Auto is the fastest choice." "\n" + "Games that require specific CPU type selection:" "\n" + "386 (prefetch): X-Men: Madness in The Murderworld, Terminator 1, Contra, Fifa International Soccer 1994" "\n" + "486 (slow): Betrayal in Antara" "\n" + "Pentium (slow): Fifa International Soccer 1994, Windows 95/Windows 3.x games" "\n\n", NULL, //end of System section + "System", + { + { "auto", "Auto - Mixed feature set with maximum performance and compatibility" }, + { "386", "386 - 386 instruction with fast memory access" }, + { "386_slow", "386 (slow) - 386 instruction set with memory privilege checks" }, + { "386_prefetch", "386 (prefetch) - With prefetch queue emulation (only on 'auto' and 'normal' core)" }, + { "486_slow", "486 (slow) - 486 instruction set with memory privilege checks" }, + { "pentium_slow", "Pentium (slow) - 586 instruction set with memory privilege checks" }, + }, + "auto" + }, + { + "GME_pure_cpu_core", + "Advanced > CPU Core", NULL, + "Emulation method (GME CPU core) used.", NULL, + "System", + { + #if defined(C_DYNAMIC_X86) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynamic_x86 implementation)" }, + #elif defined(C_DYNREC) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynrec implementation)" }, + #endif + { "normal", "Normal (interpreter)" }, + { "simple", "Simple (interpreter optimized for old real-mode games)" }, + }, + #if defined(C_DYNAMIC_X86) || defined(C_DYNREC) + "auto" + #else + "normal" + #endif + }, + */ +#undef V + return NULL; +} + + +@end diff --git a/Cores/GameMusicEmu/PVGMECore/PVGME.mm b/Cores/GameMusicEmu/PVGMECore/PVGME.mm new file mode 100644 index 0000000000..f6961c13a6 --- /dev/null +++ b/Cores/GameMusicEmu/PVGMECore/PVGME.mm @@ -0,0 +1,11 @@ +// +// PVGME.mm +// PVGME +// +// Created by Joseph Mattiello on 9/5/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVGMECore.h" +#import "PVGMECore+Controls.h" +#import "PVGMECore+Video.h" diff --git a/Cores/GameMusicEmu/libretro-gme b/Cores/GameMusicEmu/libretro-gme new file mode 160000 index 0000000000..6a8b4a9395 --- /dev/null +++ b/Cores/GameMusicEmu/libretro-gme @@ -0,0 +1 @@ +Subproject commit 6a8b4a9395f96a81c2cff3d57d9eac42a279ee73 diff --git a/Cores/Gearcoleco/BuildFlags.xcconfig b/Cores/Gearcoleco/BuildFlags.xcconfig new file mode 100644 index 0000000000..08ace27551 --- /dev/null +++ b/Cores/Gearcoleco/BuildFlags.xcconfig @@ -0,0 +1,26 @@ +// +// BuildFlags.xcconfig +// PVGearcoleco +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/Gearcoleco/Gearcoleco b/Cores/Gearcoleco/Gearcoleco new file mode 160000 index 0000000000..b1dac72f99 --- /dev/null +++ b/Cores/Gearcoleco/Gearcoleco @@ -0,0 +1 @@ +Subproject commit b1dac72f99dca329620cfbc72909bc90dff1837f diff --git a/Cores/Gearcoleco/PVGearcoleco-Prefix.pch b/Cores/Gearcoleco/PVGearcoleco-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.pbxproj b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..e72d3d27c6 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.pbxproj @@ -0,0 +1,1738 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B30F13FD289672B6004D40BF /* ColecoVisionIOPorts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13D82896727B004D40BF /* ColecoVisionIOPorts.cpp */; }; + B30F13FE289672B6004D40BF /* Memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13C32896727B004D40BF /* Memory.cpp */; }; + B30F13FF289672B6004D40BF /* Input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13C62896727B004D40BF /* Input.cpp */; }; + B30F1400289672B6004D40BF /* opcodes_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13E72896727B004D40BF /* opcodes_ed.cpp */; }; + B30F1401289672B6004D40BF /* opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13E82896727B004D40BF /* opcodes.cpp */; }; + B30F1402289672B6004D40BF /* Audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13CD2896727B004D40BF /* Audio.cpp */; }; + B30F1403289672B6004D40BF /* opcodes_cb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13F52896727B004D40BF /* opcodes_cb.cpp */; }; + B30F1404289672B6004D40BF /* Processor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13CC2896727B004D40BF /* Processor.cpp */; }; + B30F1405289672B6004D40BF /* GearcolecoCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13E92896727B004D40BF /* GearcolecoCore.cpp */; }; + B30F1406289672B6004D40BF /* Cartridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13C92896727B004D40BF /* Cartridge.cpp */; }; + B30F1407289672B6004D40BF /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13D12896727B004D40BF /* Video.cpp */; }; + B30F1413289672C6004D40BF /* Blip_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13DF2896727B004D40BF /* Blip_Buffer.cpp */; }; + B30F1414289672C6004D40BF /* Effects_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13DD2896727B004D40BF /* Effects_Buffer.cpp */; }; + B30F1415289672C6004D40BF /* Sms_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13DC2896727B004D40BF /* Sms_Apu.cpp */; }; + B30F1417289672C6004D40BF /* Multi_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F13DB2896727B004D40BF /* Multi_Buffer.cpp */; }; + B30F141D289672D4004D40BF /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30F12F528967274004D40BF /* libretro.cpp */; }; + B30F141F289673D6004D40BF /* libGearcoleco.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libGearcoleco.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVGearcolecoCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVGearcolecoCore.mm */; }; + B37022C92872554300B3F6DA /* PVGearcolecoCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVGearcolecoCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVGearcoleco.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVGearcoleco.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libGearcoleco-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libGearcoleco-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B30F1420289673D7004D40BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B30178D2207C901D0051B93D; + remoteInfo = "Gearcoleco-iOS"; + }; + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libGearcoleco.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGearcoleco.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B30F12BC28967270004D40BF /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B30F12BD28967270004D40BF /* iconfile.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = iconfile.icns; sourceTree = ""; }; + B30F12BE28967270004D40BF /* run.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = run.sh; sourceTree = ""; }; + B30F12BF28967270004D40BF /* gamecontrollerdb.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = gamecontrollerdb.txt; sourceTree = ""; }; + B30F12C028967270004D40BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B30F12C228967270004D40BF /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B30F12C328967270004D40BF /* gamecontrollerdb.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = gamecontrollerdb.txt; sourceTree = ""; }; + B30F12C528967270004D40BF /* gui_debug_constants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui_debug_constants.h; sourceTree = ""; }; + B30F12C728967270004D40BF /* ini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ini.h; sourceTree = ""; }; + B30F12C828967270004D40BF /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B30F12C928967270004D40BF /* application.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = application.h; sourceTree = ""; }; + B30F12CA28967270004D40BF /* gui_debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui_debug.h; sourceTree = ""; }; + B30F12CB28967270004D40BF /* license.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = license.h; sourceTree = ""; }; + B30F12CD28967270004D40BF /* imgui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui.h; sourceTree = ""; }; + B30F12CE28967270004D40BF /* imstb_textedit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imstb_textedit.h; sourceTree = ""; }; + B30F12CF28967270004D40BF /* imconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imconfig.h; sourceTree = ""; }; + B30F12D028967274004D40BF /* imgui_widgets.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_widgets.cpp; sourceTree = ""; }; + B30F12D128967274004D40BF /* imstb_truetype.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imstb_truetype.h; sourceTree = ""; }; + B30F12D228967274004D40BF /* imgui_impl_sdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_impl_sdl.h; sourceTree = ""; }; + B30F12D328967274004D40BF /* imgui_impl_opengl2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_impl_opengl2.h; sourceTree = ""; }; + B30F12D428967274004D40BF /* imgui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui.cpp; sourceTree = ""; }; + B30F12D528967274004D40BF /* imgui_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_internal.h; sourceTree = ""; }; + B30F12D628967274004D40BF /* imgui_impl_opengl2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_impl_opengl2.cpp; sourceTree = ""; }; + B30F12D728967274004D40BF /* imstb_rectpack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imstb_rectpack.h; sourceTree = ""; }; + B30F12D928967274004D40BF /* RobotoMedium.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RobotoMedium.h; sourceTree = ""; }; + B30F12DA28967274004D40BF /* imgui_memory_editor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = imgui_memory_editor.h; sourceTree = ""; }; + B30F12DB28967274004D40BF /* imgui_demo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_demo.cpp; sourceTree = ""; }; + B30F12DC28967274004D40BF /* imgui_impl_sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_impl_sdl.cpp; sourceTree = ""; }; + B30F12DD28967274004D40BF /* imgui_draw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = imgui_draw.cpp; sourceTree = ""; }; + B30F12DE28967274004D40BF /* renderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = renderer.h; sourceTree = ""; }; + B30F12DF28967274004D40BF /* gui_debug.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gui_debug.cpp; sourceTree = ""; }; + B30F12E028967274004D40BF /* emu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emu.cpp; sourceTree = ""; }; + B30F12E128967274004D40BF /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B30F12E228967274004D40BF /* gui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = ""; }; + B30F12E328967274004D40BF /* gui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gui.cpp; sourceTree = ""; }; + B30F12E428967274004D40BF /* config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config.cpp; sourceTree = ""; }; + B30F12E528967274004D40BF /* emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emu.h; sourceTree = ""; }; + B30F12E628967274004D40BF /* backers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backers.h; sourceTree = ""; }; + B30F12E828967274004D40BF /* ImGuiFileBrowser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ImGuiFileBrowser.cpp; sourceTree = ""; }; + B30F12EA28967274004D40BF /* dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dirent.h; sourceTree = ""; }; + B30F12EB28967274004D40BF /* ImGuiFileBrowser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImGuiFileBrowser.h; sourceTree = ""; }; + B30F12EC28967274004D40BF /* application.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = application.cpp; sourceTree = ""; }; + B30F12ED28967274004D40BF /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B30F12EE28967274004D40BF /* renderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = renderer.cpp; sourceTree = ""; }; + B30F12F028967274004D40BF /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B30F12F128967274004D40BF /* gearcoleco.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = gearcoleco.libretro; sourceTree = ""; }; + B30F12F228967274004D40BF /* gearcoleco_libretro.info */ = {isa = PBXFileReference; lastKnownFileType = text; path = gearcoleco_libretro.info; sourceTree = ""; }; + B30F12F328967274004D40BF /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B30F12F428967274004D40BF /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B30F12F528967274004D40BF /* libretro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cpp; sourceTree = ""; }; + B30F12F628967274004D40BF /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B30F12F828967274004D40BF /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B30F12F928967274004D40BF /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B30F12FB28967274004D40BF /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B30F12FC28967274004D40BF /* gamecontrollerdb.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = gamecontrollerdb.txt; sourceTree = ""; }; + B30F12FE28967274004D40BF /* Sound_Queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sound_Queue.h; sourceTree = ""; }; + B30F12FF28967274004D40BF /* Sound_Queue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sound_Queue.cpp; sourceTree = ""; }; + B30F130128967274004D40BF /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B30F130328967274004D40BF /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B30F130528967274004D40BF /* WhatsNew.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = WhatsNew.txt; sourceTree = ""; }; + B30F130628967274004D40BF /* COPYING.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.txt; sourceTree = ""; }; + B30F130728967274004D40BF /* README-SDL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-SDL.txt"; sourceTree = ""; }; + B30F130A28967274004D40BF /* SDL_opengles2_gl2ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_gl2ext.h; sourceTree = ""; }; + B30F130B28967274004D40BF /* SDL_test_random.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_random.h; sourceTree = ""; }; + B30F130C28967274004D40BF /* SDL_power.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_power.h; sourceTree = ""; }; + B30F130D28967274004D40BF /* SDL_revision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_revision.h; sourceTree = ""; }; + B30F130E28967274004D40BF /* SDL_events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_events.h; sourceTree = ""; }; + B30F130F28967274004D40BF /* SDL_clipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_clipboard.h; sourceTree = ""; }; + B30F131028967274004D40BF /* SDL_haptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_haptic.h; sourceTree = ""; }; + B30F131128967274004D40BF /* SDL_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test.h; sourceTree = ""; }; + B30F131228967274004D40BF /* SDL_test_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_assert.h; sourceTree = ""; }; + B30F131328967275004D40BF /* SDL_endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_endian.h; sourceTree = ""; }; + B30F131428967275004D40BF /* SDL_error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_error.h; sourceTree = ""; }; + B30F131528967275004D40BF /* begin_code.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = begin_code.h; sourceTree = ""; }; + B30F131628967275004D40BF /* SDL_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_types.h; sourceTree = ""; }; + B30F131728967275004D40BF /* SDL_keycode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keycode.h; sourceTree = ""; }; + B30F131828967275004D40BF /* SDL_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keyboard.h; sourceTree = ""; }; + B30F131928967275004D40BF /* SDL_config_psp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_psp.h; sourceTree = ""; }; + B30F131A28967275004D40BF /* SDL_opengl_glext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengl_glext.h; sourceTree = ""; }; + B30F131B28967275004D40BF /* SDL_config_pandora.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_pandora.h; sourceTree = ""; }; + B30F131C28967275004D40BF /* SDL_test_crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_crc32.h; sourceTree = ""; }; + B30F131D28967275004D40BF /* SDL_test_font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_font.h; sourceTree = ""; }; + B30F131E28967275004D40BF /* SDL_test_log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_log.h; sourceTree = ""; }; + B30F131F2896727A004D40BF /* SDL_egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_egl.h; sourceTree = ""; }; + B30F13202896727A004D40BF /* SDL_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_vulkan.h; sourceTree = ""; }; + B30F13212896727A004D40BF /* SDL_test_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_memory.h; sourceTree = ""; }; + B30F13222896727A004D40BF /* SDL_main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_main.h; sourceTree = ""; }; + B30F13232896727A004D40BF /* SDL_stdinc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_stdinc.h; sourceTree = ""; }; + B30F13242896727A004D40BF /* SDL_scancode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_scancode.h; sourceTree = ""; }; + B30F13252896727A004D40BF /* SDL_quit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_quit.h; sourceTree = ""; }; + B30F13262896727A004D40BF /* SDL_config_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_android.h; sourceTree = ""; }; + B30F13272896727A004D40BF /* SDL_touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_touch.h; sourceTree = ""; }; + B30F13282896727A004D40BF /* SDL_opengles2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2.h; sourceTree = ""; }; + B30F13292896727A004D40BF /* SDL_config_winrt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_winrt.h; sourceTree = ""; }; + B30F132A2896727A004D40BF /* SDL_test_images.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_images.h; sourceTree = ""; }; + B30F132B2896727A004D40BF /* SDL_name.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_name.h; sourceTree = ""; }; + B30F132C2896727A004D40BF /* SDL_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_platform.h; sourceTree = ""; }; + B30F132D2896727A004D40BF /* SDL_shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_shape.h; sourceTree = ""; }; + B30F132E2896727A004D40BF /* SDL_config_minimal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_minimal.h; sourceTree = ""; }; + B30F132F2896727A004D40BF /* SDL_config.h.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL_config.h.cmake; sourceTree = ""; }; + B30F13302896727A004D40BF /* SDL_loadso.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_loadso.h; sourceTree = ""; }; + B30F13312896727A004D40BF /* SDL_config_macosx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_macosx.h; sourceTree = ""; }; + B30F13322896727A004D40BF /* SDL_test_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_common.h; sourceTree = ""; }; + B30F13332896727A004D40BF /* SDL_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config.h; sourceTree = ""; }; + B30F13342896727A004D40BF /* SDL_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_audio.h; sourceTree = ""; }; + B30F13352896727A004D40BF /* SDL_sensor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_sensor.h; sourceTree = ""; }; + B30F13362896727A004D40BF /* SDL_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengl.h; sourceTree = ""; }; + B30F13372896727A004D40BF /* SDL_blendmode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_blendmode.h; sourceTree = ""; }; + B30F13382896727A004D40BF /* SDL_gesture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gesture.h; sourceTree = ""; }; + B30F13392896727A004D40BF /* SDL_test_fuzzer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_fuzzer.h; sourceTree = ""; }; + B30F133A2896727A004D40BF /* SDL_config_iphoneos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_iphoneos.h; sourceTree = ""; }; + B30F133B2896727A004D40BF /* SDL_config_macosx.h.orig */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL_config_macosx.h.orig; sourceTree = ""; }; + B30F133C2896727A004D40BF /* SDL_opengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles.h; sourceTree = ""; }; + B30F133D2896727A004D40BF /* SDL_system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_system.h; sourceTree = ""; }; + B30F133E2896727A004D40BF /* SDL_hints.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hints.h; sourceTree = ""; }; + B30F133F2896727A004D40BF /* SDL_mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mouse.h; sourceTree = ""; }; + B30F13402896727A004D40BF /* SDL_timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_timer.h; sourceTree = ""; }; + B30F13412896727A004D40BF /* SDL_surface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_surface.h; sourceTree = ""; }; + B30F13422896727A004D40BF /* SDL_atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_atomic.h; sourceTree = ""; }; + B30F13432896727A004D40BF /* SDL_log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_log.h; sourceTree = ""; }; + B30F13442896727A004D40BF /* SDL_rwops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rwops.h; sourceTree = ""; }; + B30F13452896727A004D40BF /* SDL_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_render.h; sourceTree = ""; }; + B30F13462896727A004D40BF /* SDL_syswm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syswm.h; sourceTree = ""; }; + B30F13472896727A004D40BF /* SDL_bits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_bits.h; sourceTree = ""; }; + B30F13482896727A004D40BF /* SDL_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_video.h; sourceTree = ""; }; + B30F13492896727A004D40BF /* SDL_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_assert.h; sourceTree = ""; }; + B30F134A2896727A004D40BF /* SDL_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_version.h; sourceTree = ""; }; + B30F134B2896727A004D40BF /* SDL_gamecontroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontroller.h; sourceTree = ""; }; + B30F134C2896727A004D40BF /* SDL_config_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_windows.h; sourceTree = ""; }; + B30F134D2896727A004D40BF /* SDL_copying.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_copying.h; sourceTree = ""; }; + B30F134E2896727A004D40BF /* SDL_thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_thread.h; sourceTree = ""; }; + B30F134F2896727A004D40BF /* SDL_test_harness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_harness.h; sourceTree = ""; }; + B30F13502896727A004D40BF /* SDL_rect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rect.h; sourceTree = ""; }; + B30F13512896727A004D40BF /* SDL_metal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_metal.h; sourceTree = ""; }; + B30F13522896727A004D40BF /* SDL_mutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mutex.h; sourceTree = ""; }; + B30F13532896727A004D40BF /* close_code.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = close_code.h; sourceTree = ""; }; + B30F13542896727A004D40BF /* SDL_config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = SDL_config.h.in; sourceTree = ""; }; + B30F13552896727A004D40BF /* SDL_config_wiz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_wiz.h; sourceTree = ""; }; + B30F13562896727A004D40BF /* SDL_joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_joystick.h; sourceTree = ""; }; + B30F13572896727A004D40BF /* SDL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = ""; }; + B30F13582896727A004D40BF /* SDL_filesystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_filesystem.h; sourceTree = ""; }; + B30F13592896727A004D40BF /* SDL_messagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_messagebox.h; sourceTree = ""; }; + B30F135A2896727A004D40BF /* SDL_opengles2_gl2platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_gl2platform.h; sourceTree = ""; }; + B30F135B2896727A004D40BF /* SDL_opengles2_khrplatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_khrplatform.h; sourceTree = ""; }; + B30F135C2896727A004D40BF /* SDL_test_md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_md5.h; sourceTree = ""; }; + B30F135D2896727A004D40BF /* SDL_pixels.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_pixels.h; sourceTree = ""; }; + B30F135E2896727A004D40BF /* SDL_cpuinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cpuinfo.h; sourceTree = ""; }; + B30F135F2896727A004D40BF /* SDL_test_compare.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_test_compare.h; sourceTree = ""; }; + B30F13602896727A004D40BF /* SDL_opengles2_gl2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_gl2.h; sourceTree = ""; }; + B30F13612896727A004D40BF /* BUGS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = BUGS.txt; sourceTree = ""; }; + B30F13632896727B004D40BF /* README-raspberrypi.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-raspberrypi.md"; sourceTree = ""; }; + B30F13642896727B004D40BF /* README-gesture.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-gesture.md"; sourceTree = ""; }; + B30F13652896727B004D40BF /* README-macosx.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-macosx.md"; sourceTree = ""; }; + B30F13662896727B004D40BF /* README-platforms.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-platforms.md"; sourceTree = ""; }; + B30F13672896727B004D40BF /* README-ios.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-ios.md"; sourceTree = ""; }; + B30F13682896727B004D40BF /* README-nacl.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-nacl.md"; sourceTree = ""; }; + B30F13692896727B004D40BF /* README-cmake.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-cmake.md"; sourceTree = ""; }; + B30F136A2896727B004D40BF /* README-wince.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-wince.md"; sourceTree = ""; }; + B30F136B2896727B004D40BF /* README-psp.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-psp.md"; sourceTree = ""; }; + B30F136C2896727B004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F136D2896727B004D40BF /* README-touch.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-touch.md"; sourceTree = ""; }; + B30F136E2896727B004D40BF /* README-android.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-android.md"; sourceTree = ""; }; + B30F136F2896727B004D40BF /* README-directfb.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-directfb.md"; sourceTree = ""; }; + B30F13702896727B004D40BF /* README-hg.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-hg.md"; sourceTree = ""; }; + B30F13712896727B004D40BF /* README-emscripten.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-emscripten.md"; sourceTree = ""; }; + B30F13722896727B004D40BF /* README-pandora.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-pandora.md"; sourceTree = ""; }; + B30F13732896727B004D40BF /* README-dynapi.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-dynapi.md"; sourceTree = ""; }; + B30F13742896727B004D40BF /* doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; + B30F13752896727B004D40BF /* README-porting.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-porting.md"; sourceTree = ""; }; + B30F13762896727B004D40BF /* README-winrt.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-winrt.md"; sourceTree = ""; }; + B30F13772896727B004D40BF /* README-linux.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-linux.md"; sourceTree = ""; }; + B30F13782896727B004D40BF /* README-windows.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-windows.md"; sourceTree = ""; }; + B30F137B2896727B004D40BF /* SDL2main.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = SDL2main.lib; sourceTree = ""; }; + B30F137C2896727B004D40BF /* SDL2.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = SDL2.lib; sourceTree = ""; }; + B30F137D2896727B004D40BF /* SDL2.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = SDL2.dll; sourceTree = ""; }; + B30F137E2896727B004D40BF /* SDL2test.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = SDL2test.lib; sourceTree = ""; }; + B30F13802896727B004D40BF /* SDL2main.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = SDL2main.lib; sourceTree = ""; }; + B30F13812896727B004D40BF /* SDL2.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = SDL2.lib; sourceTree = ""; }; + B30F13822896727B004D40BF /* SDL2.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = SDL2.dll; sourceTree = ""; }; + B30F13832896727B004D40BF /* SDL2test.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = SDL2test.lib; sourceTree = ""; }; + B30F13842896727B004D40BF /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B30F13892896727B004D40BF /* glew32.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = glew32.dll; sourceTree = ""; }; + B30F138A2896727B004D40BF /* glewinfo.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = glewinfo.exe; sourceTree = ""; }; + B30F138B2896727B004D40BF /* visualinfo.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = visualinfo.exe; sourceTree = ""; }; + B30F138D2896727B004D40BF /* glew32.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = glew32.dll; sourceTree = ""; }; + B30F138E2896727B004D40BF /* glewinfo.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = glewinfo.exe; sourceTree = ""; }; + B30F138F2896727B004D40BF /* visualinfo.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = visualinfo.exe; sourceTree = ""; }; + B30F13922896727B004D40BF /* glxew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glxew.h; sourceTree = ""; }; + B30F13932896727B004D40BF /* eglew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eglew.h; sourceTree = ""; }; + B30F13942896727B004D40BF /* wglew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wglew.h; sourceTree = ""; }; + B30F13952896727B004D40BF /* glew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glew.h; sourceTree = ""; }; + B30F13992896727B004D40BF /* glew32.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = glew32.lib; sourceTree = ""; }; + B30F139A2896727B004D40BF /* glew32s.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = glew32s.lib; sourceTree = ""; }; + B30F139C2896727B004D40BF /* glew32.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = glew32.lib; sourceTree = ""; }; + B30F139D2896727B004D40BF /* glew32s.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = glew32s.lib; sourceTree = ""; }; + B30F139F2896727B004D40BF /* basic.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = basic.html; sourceTree = ""; }; + B30F13A02896727B004D40BF /* glxew.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = glxew.html; sourceTree = ""; }; + B30F13A12896727B004D40BF /* install.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = install.html; sourceTree = ""; }; + B30F13A22896727B004D40BF /* build.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = build.html; sourceTree = ""; }; + B30F13A32896727B004D40BF /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + B30F13A42896727B004D40BF /* ogl_sm.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = ogl_sm.jpg; sourceTree = ""; }; + B30F13A52896727B004D40BF /* glew.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = glew.png; sourceTree = ""; }; + B30F13A62896727B004D40BF /* mesa.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = mesa.txt; sourceTree = ""; }; + B30F13A72896727B004D40BF /* github.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = github.png; sourceTree = ""; }; + B30F13A82896727B004D40BF /* glew.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = glew.txt; sourceTree = ""; }; + B30F13A92896727B004D40BF /* glew.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = glew.css; sourceTree = ""; }; + B30F13AA2896727B004D40BF /* wglew.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = wglew.html; sourceTree = ""; }; + B30F13AB2896727B004D40BF /* gpl.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = gpl.txt; sourceTree = ""; }; + B30F13AC2896727B004D40BF /* glew.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = glew.html; sourceTree = ""; }; + B30F13AD2896727B004D40BF /* khronos.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = khronos.txt; sourceTree = ""; }; + B30F13AE2896727B004D40BF /* advanced.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = advanced.html; sourceTree = ""; }; + B30F13AF2896727B004D40BF /* log.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = log.html; sourceTree = ""; }; + B30F13B02896727B004D40BF /* new.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = new.png; sourceTree = ""; }; + B30F13B12896727B004D40BF /* credits.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = credits.html; sourceTree = ""; }; + B30F13B22896727B004D40BF /* travis.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = travis.png; sourceTree = ""; }; + B30F13B32896727B004D40BF /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B30F13B42896727B004D40BF /* Gearcoleco.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = Gearcoleco.sln; sourceTree = ""; }; + B30F13B52896727B004D40BF /* Gearcoleco.manifest */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Gearcoleco.manifest; sourceTree = ""; }; + B30F13B62896727B004D40BF /* Gearcoleco.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Gearcoleco.vcxproj; sourceTree = ""; }; + B30F13B72896727B004D40BF /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B30F13B82896727B004D40BF /* backers.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = backers.md; sourceTree = ""; }; + B30F13B92896727B004D40BF /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30F13BA2896727B004D40BF /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B30F13BC2896727B004D40BF /* FUNDING.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = FUNDING.yml; sourceTree = ""; }; + B30F13BE2896727B004D40BF /* gearcoleco.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = gearcoleco.yml; sourceTree = ""; }; + B30F13BF2896727B004D40BF /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B30F13C12896727B004D40BF /* opcodefd_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcodefd_names.h; sourceTree = ""; }; + B30F13C22896727B004D40BF /* Memory_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Memory_inline.h; sourceTree = ""; }; + B30F13C32896727B004D40BF /* Memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Memory.cpp; sourceTree = ""; }; + B30F13C42896727B004D40BF /* gearcoleco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gearcoleco.h; sourceTree = ""; }; + B30F13C52896727B004D40BF /* Input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Input.h; sourceTree = ""; }; + B30F13C62896727B004D40BF /* Input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Input.cpp; sourceTree = ""; }; + B30F13C72896727B004D40BF /* opcode_timing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcode_timing.h; sourceTree = ""; }; + B30F13C82896727B004D40BF /* opcodexx_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcodexx_names.h; sourceTree = ""; }; + B30F13C92896727B004D40BF /* Cartridge.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cartridge.cpp; sourceTree = ""; }; + B30F13CA2896727B004D40BF /* Processor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Processor.h; sourceTree = ""; }; + B30F13CB2896727B004D40BF /* opcodeddcb_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcodeddcb_names.h; sourceTree = ""; }; + B30F13CC2896727B004D40BF /* Processor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Processor.cpp; sourceTree = ""; }; + B30F13CD2896727B004D40BF /* Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Audio.cpp; sourceTree = ""; }; + B30F13CE2896727B004D40BF /* Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Audio.h; sourceTree = ""; }; + B30F13CF2896727B004D40BF /* SixteenBitRegister.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SixteenBitRegister.h; sourceTree = ""; }; + B30F13D02896727B004D40BF /* IOPorts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IOPorts.h; sourceTree = ""; }; + B30F13D12896727B004D40BF /* Video.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Video.cpp; sourceTree = ""; }; + B30F13D32896727B004D40BF /* miniz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = miniz.c; sourceTree = ""; }; + B30F13D42896727B004D40BF /* miniz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniz.h; sourceTree = ""; }; + B30F13D52896727B004D40BF /* no_bios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = no_bios.h; sourceTree = ""; }; + B30F13D62896727B004D40BF /* opcodefdcb_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcodefdcb_names.h; sourceTree = ""; }; + B30F13D72896727B004D40BF /* opcodecb_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcodecb_names.h; sourceTree = ""; }; + B30F13D82896727B004D40BF /* ColecoVisionIOPorts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ColecoVisionIOPorts.cpp; sourceTree = ""; }; + B30F13DA2896727B004D40BF /* blargg_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blargg_common.h; sourceTree = ""; }; + B30F13DB2896727B004D40BF /* Multi_Buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Multi_Buffer.cpp; sourceTree = ""; }; + B30F13DC2896727B004D40BF /* Sms_Apu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sms_Apu.cpp; sourceTree = ""; }; + B30F13DD2896727B004D40BF /* Effects_Buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Effects_Buffer.cpp; sourceTree = ""; }; + B30F13DE2896727B004D40BF /* Sms_Apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sms_Apu.h; sourceTree = ""; }; + B30F13DF2896727B004D40BF /* Blip_Buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Blip_Buffer.cpp; sourceTree = ""; }; + B30F13E02896727B004D40BF /* Multi_Buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Multi_Buffer.h; sourceTree = ""; }; + B30F13E12896727B004D40BF /* blargg_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blargg_config.h; sourceTree = ""; }; + B30F13E22896727B004D40BF /* Effects_Buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Effects_Buffer.h; sourceTree = ""; }; + B30F13E32896727B004D40BF /* Blip_Synth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Blip_Synth.h; sourceTree = ""; }; + B30F13E42896727B004D40BF /* Sms_Oscs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sms_Oscs.h; sourceTree = ""; }; + B30F13E52896727B004D40BF /* Blip_Buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Blip_Buffer.h; sourceTree = ""; }; + B30F13E62896727B004D40BF /* blargg_source.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blargg_source.h; sourceTree = ""; }; + B30F13E72896727B004D40BF /* opcodes_ed.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opcodes_ed.cpp; sourceTree = ""; }; + B30F13E82896727B004D40BF /* opcodes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opcodes.cpp; sourceTree = ""; }; + B30F13E92896727B004D40BF /* GearcolecoCore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GearcolecoCore.cpp; sourceTree = ""; }; + B30F13EA2896727B004D40BF /* Cartridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Cartridge.h; sourceTree = ""; }; + B30F13EB2896727B004D40BF /* Processor_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Processor_inline.h; sourceTree = ""; }; + B30F13EC2896727B004D40BF /* Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Video.h; sourceTree = ""; }; + B30F13ED2896727B004D40BF /* opcodeed_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcodeed_names.h; sourceTree = ""; }; + B30F13EE2896727B004D40BF /* opcodedd_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcodedd_names.h; sourceTree = ""; }; + B30F13EF2896727B004D40BF /* Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Memory.h; sourceTree = ""; }; + B30F13F02896727B004D40BF /* ColecoVisionIOPorts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColecoVisionIOPorts.h; sourceTree = ""; }; + B30F13F12896727B004D40BF /* opcode_daa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcode_daa.h; sourceTree = ""; }; + B30F13F22896727B004D40BF /* GearcolecoCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GearcolecoCore.h; sourceTree = ""; }; + B30F13F32896727B004D40BF /* definitions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = definitions.h; sourceTree = ""; }; + B30F13F42896727B004D40BF /* opcode_names.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opcode_names.h; sourceTree = ""; }; + B30F13F52896727B004D40BF /* opcodes_cb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opcodes_cb.cpp; sourceTree = ""; }; + B30F13F62896727B004D40BF /* game_db.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_db.h; sourceTree = ""; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libGearcoleco-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libGearcoleco-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVGearcoleco-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVGearcoleco-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVGearcoleco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGearcoleco.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVGearcolecoCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGearcolecoCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVGearcolecoCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVGearcolecoCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVGearcoleco.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGearcoleco.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B30F141F289673D6004D40BF /* libGearcoleco.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libGearcoleco-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B30F12B928967270004D40BF /* Gearcoleco */ = { + isa = PBXGroup; + children = ( + B30F13BA2896727B004D40BF /* .gitignore */, + B30F13B72896727B004D40BF /* LICENSE */, + B30F13B82896727B004D40BF /* backers.md */, + B30F13B92896727B004D40BF /* README.md */, + B30F13BF2896727B004D40BF /* .gitlab-ci.yml */, + B30F13BB2896727B004D40BF /* .github */, + B30F12BA28967270004D40BF /* platforms */, + B30F13C02896727B004D40BF /* src */, + ); + path = Gearcoleco; + sourceTree = ""; + }; + B30F12BA28967270004D40BF /* platforms */ = { + isa = PBXGroup; + children = ( + B30F12BB28967270004D40BF /* macos */, + B30F12C128967270004D40BF /* bsd */, + B30F12C428967270004D40BF /* desktop-shared */, + B30F12EF28967274004D40BF /* libretro */, + B30F12FA28967274004D40BF /* linux */, + B30F12FD28967274004D40BF /* audio-shared */, + B30F130028967274004D40BF /* windows */, + ); + path = platforms; + sourceTree = ""; + }; + B30F12BB28967270004D40BF /* macos */ = { + isa = PBXGroup; + children = ( + B30F12BC28967270004D40BF /* Makefile */, + B30F12BD28967270004D40BF /* iconfile.icns */, + B30F12BE28967270004D40BF /* run.sh */, + B30F12BF28967270004D40BF /* gamecontrollerdb.txt */, + B30F12C028967270004D40BF /* Info.plist */, + ); + path = macos; + sourceTree = ""; + }; + B30F12C128967270004D40BF /* bsd */ = { + isa = PBXGroup; + children = ( + B30F12C228967270004D40BF /* Makefile */, + B30F12C328967270004D40BF /* gamecontrollerdb.txt */, + ); + path = bsd; + sourceTree = ""; + }; + B30F12C428967270004D40BF /* desktop-shared */ = { + isa = PBXGroup; + children = ( + B30F12C528967270004D40BF /* gui_debug_constants.h */, + B30F12C628967270004D40BF /* mINI */, + B30F12C828967270004D40BF /* config.h */, + B30F12C928967270004D40BF /* application.h */, + B30F12CA28967270004D40BF /* gui_debug.h */, + B30F12CB28967270004D40BF /* license.h */, + B30F12CC28967270004D40BF /* imgui */, + B30F12DE28967274004D40BF /* renderer.h */, + B30F12DF28967274004D40BF /* gui_debug.cpp */, + B30F12E028967274004D40BF /* emu.cpp */, + B30F12E128967274004D40BF /* Makefile.common */, + B30F12E228967274004D40BF /* gui.h */, + B30F12E328967274004D40BF /* gui.cpp */, + B30F12E428967274004D40BF /* config.cpp */, + B30F12E528967274004D40BF /* emu.h */, + B30F12E628967274004D40BF /* backers.h */, + B30F12E728967274004D40BF /* FileBrowser */, + B30F12EC28967274004D40BF /* application.cpp */, + B30F12ED28967274004D40BF /* main.cpp */, + B30F12EE28967274004D40BF /* renderer.cpp */, + ); + path = "desktop-shared"; + sourceTree = ""; + }; + B30F12C628967270004D40BF /* mINI */ = { + isa = PBXGroup; + children = ( + B30F12C728967270004D40BF /* ini.h */, + ); + path = mINI; + sourceTree = ""; + }; + B30F12CC28967270004D40BF /* imgui */ = { + isa = PBXGroup; + children = ( + B30F12CD28967270004D40BF /* imgui.h */, + B30F12CE28967270004D40BF /* imstb_textedit.h */, + B30F12CF28967270004D40BF /* imconfig.h */, + B30F12D028967274004D40BF /* imgui_widgets.cpp */, + B30F12D128967274004D40BF /* imstb_truetype.h */, + B30F12D228967274004D40BF /* imgui_impl_sdl.h */, + B30F12D328967274004D40BF /* imgui_impl_opengl2.h */, + B30F12D428967274004D40BF /* imgui.cpp */, + B30F12D528967274004D40BF /* imgui_internal.h */, + B30F12D628967274004D40BF /* imgui_impl_opengl2.cpp */, + B30F12D728967274004D40BF /* imstb_rectpack.h */, + B30F12D828967274004D40BF /* fonts */, + B30F12DA28967274004D40BF /* imgui_memory_editor.h */, + B30F12DB28967274004D40BF /* imgui_demo.cpp */, + B30F12DC28967274004D40BF /* imgui_impl_sdl.cpp */, + B30F12DD28967274004D40BF /* imgui_draw.cpp */, + ); + path = imgui; + sourceTree = ""; + }; + B30F12D828967274004D40BF /* fonts */ = { + isa = PBXGroup; + children = ( + B30F12D928967274004D40BF /* RobotoMedium.h */, + ); + path = fonts; + sourceTree = ""; + }; + B30F12E728967274004D40BF /* FileBrowser */ = { + isa = PBXGroup; + children = ( + B30F12E828967274004D40BF /* ImGuiFileBrowser.cpp */, + B30F12E928967274004D40BF /* Dirent */, + B30F12EB28967274004D40BF /* ImGuiFileBrowser.h */, + ); + path = FileBrowser; + sourceTree = ""; + }; + B30F12E928967274004D40BF /* Dirent */ = { + isa = PBXGroup; + children = ( + B30F12EA28967274004D40BF /* dirent.h */, + ); + path = Dirent; + sourceTree = ""; + }; + B30F12EF28967274004D40BF /* libretro */ = { + isa = PBXGroup; + children = ( + B30F12F028967274004D40BF /* Makefile */, + B30F12F128967274004D40BF /* gearcoleco.libretro */, + B30F12F228967274004D40BF /* gearcoleco_libretro.info */, + B30F12F328967274004D40BF /* Makefile.common */, + B30F12F428967274004D40BF /* libretro.h */, + B30F12F528967274004D40BF /* libretro.cpp */, + B30F12F628967274004D40BF /* link.T */, + B30F12F728967274004D40BF /* jni */, + ); + path = libretro; + sourceTree = ""; + }; + B30F12F728967274004D40BF /* jni */ = { + isa = PBXGroup; + children = ( + B30F12F828967274004D40BF /* Android.mk */, + B30F12F928967274004D40BF /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B30F12FA28967274004D40BF /* linux */ = { + isa = PBXGroup; + children = ( + B30F12FB28967274004D40BF /* Makefile */, + B30F12FC28967274004D40BF /* gamecontrollerdb.txt */, + ); + path = linux; + sourceTree = ""; + }; + B30F12FD28967274004D40BF /* audio-shared */ = { + isa = PBXGroup; + children = ( + B30F12FE28967274004D40BF /* Sound_Queue.h */, + B30F12FF28967274004D40BF /* Sound_Queue.cpp */, + ); + path = "audio-shared"; + sourceTree = ""; + }; + B30F130028967274004D40BF /* windows */ = { + isa = PBXGroup; + children = ( + B30F130128967274004D40BF /* Makefile */, + B30F130228967274004D40BF /* dependencies */, + B30F13B42896727B004D40BF /* Gearcoleco.sln */, + B30F13B52896727B004D40BF /* Gearcoleco.manifest */, + B30F13B62896727B004D40BF /* Gearcoleco.vcxproj */, + ); + path = windows; + sourceTree = ""; + }; + B30F130228967274004D40BF /* dependencies */ = { + isa = PBXGroup; + children = ( + B30F130328967274004D40BF /* .gitignore */, + B30F130428967274004D40BF /* SDL2-2.0.12 */, + B30F13852896727B004D40BF /* glew-2.1.0 */, + ); + path = dependencies; + sourceTree = ""; + }; + B30F130428967274004D40BF /* SDL2-2.0.12 */ = { + isa = PBXGroup; + children = ( + B30F130528967274004D40BF /* WhatsNew.txt */, + B30F130628967274004D40BF /* COPYING.txt */, + B30F130728967274004D40BF /* README-SDL.txt */, + B30F130828967274004D40BF /* include */, + B30F13612896727A004D40BF /* BUGS.txt */, + B30F13622896727B004D40BF /* docs */, + B30F13792896727B004D40BF /* lib */, + B30F13842896727B004D40BF /* README.txt */, + ); + path = "SDL2-2.0.12"; + sourceTree = ""; + }; + B30F130828967274004D40BF /* include */ = { + isa = PBXGroup; + children = ( + B30F130928967274004D40BF /* SDL2 */, + ); + path = include; + sourceTree = ""; + }; + B30F130928967274004D40BF /* SDL2 */ = { + isa = PBXGroup; + children = ( + B30F130A28967274004D40BF /* SDL_opengles2_gl2ext.h */, + B30F130B28967274004D40BF /* SDL_test_random.h */, + B30F130C28967274004D40BF /* SDL_power.h */, + B30F130D28967274004D40BF /* SDL_revision.h */, + B30F130E28967274004D40BF /* SDL_events.h */, + B30F130F28967274004D40BF /* SDL_clipboard.h */, + B30F131028967274004D40BF /* SDL_haptic.h */, + B30F131128967274004D40BF /* SDL_test.h */, + B30F131228967274004D40BF /* SDL_test_assert.h */, + B30F131328967275004D40BF /* SDL_endian.h */, + B30F131428967275004D40BF /* SDL_error.h */, + B30F131528967275004D40BF /* begin_code.h */, + B30F131628967275004D40BF /* SDL_types.h */, + B30F131728967275004D40BF /* SDL_keycode.h */, + B30F131828967275004D40BF /* SDL_keyboard.h */, + B30F131928967275004D40BF /* SDL_config_psp.h */, + B30F131A28967275004D40BF /* SDL_opengl_glext.h */, + B30F131B28967275004D40BF /* SDL_config_pandora.h */, + B30F131C28967275004D40BF /* SDL_test_crc32.h */, + B30F131D28967275004D40BF /* SDL_test_font.h */, + B30F131E28967275004D40BF /* SDL_test_log.h */, + B30F131F2896727A004D40BF /* SDL_egl.h */, + B30F13202896727A004D40BF /* SDL_vulkan.h */, + B30F13212896727A004D40BF /* SDL_test_memory.h */, + B30F13222896727A004D40BF /* SDL_main.h */, + B30F13232896727A004D40BF /* SDL_stdinc.h */, + B30F13242896727A004D40BF /* SDL_scancode.h */, + B30F13252896727A004D40BF /* SDL_quit.h */, + B30F13262896727A004D40BF /* SDL_config_android.h */, + B30F13272896727A004D40BF /* SDL_touch.h */, + B30F13282896727A004D40BF /* SDL_opengles2.h */, + B30F13292896727A004D40BF /* SDL_config_winrt.h */, + B30F132A2896727A004D40BF /* SDL_test_images.h */, + B30F132B2896727A004D40BF /* SDL_name.h */, + B30F132C2896727A004D40BF /* SDL_platform.h */, + B30F132D2896727A004D40BF /* SDL_shape.h */, + B30F132E2896727A004D40BF /* SDL_config_minimal.h */, + B30F132F2896727A004D40BF /* SDL_config.h.cmake */, + B30F13302896727A004D40BF /* SDL_loadso.h */, + B30F13312896727A004D40BF /* SDL_config_macosx.h */, + B30F13322896727A004D40BF /* SDL_test_common.h */, + B30F13332896727A004D40BF /* SDL_config.h */, + B30F13342896727A004D40BF /* SDL_audio.h */, + B30F13352896727A004D40BF /* SDL_sensor.h */, + B30F13362896727A004D40BF /* SDL_opengl.h */, + B30F13372896727A004D40BF /* SDL_blendmode.h */, + B30F13382896727A004D40BF /* SDL_gesture.h */, + B30F13392896727A004D40BF /* SDL_test_fuzzer.h */, + B30F133A2896727A004D40BF /* SDL_config_iphoneos.h */, + B30F133B2896727A004D40BF /* SDL_config_macosx.h.orig */, + B30F133C2896727A004D40BF /* SDL_opengles.h */, + B30F133D2896727A004D40BF /* SDL_system.h */, + B30F133E2896727A004D40BF /* SDL_hints.h */, + B30F133F2896727A004D40BF /* SDL_mouse.h */, + B30F13402896727A004D40BF /* SDL_timer.h */, + B30F13412896727A004D40BF /* SDL_surface.h */, + B30F13422896727A004D40BF /* SDL_atomic.h */, + B30F13432896727A004D40BF /* SDL_log.h */, + B30F13442896727A004D40BF /* SDL_rwops.h */, + B30F13452896727A004D40BF /* SDL_render.h */, + B30F13462896727A004D40BF /* SDL_syswm.h */, + B30F13472896727A004D40BF /* SDL_bits.h */, + B30F13482896727A004D40BF /* SDL_video.h */, + B30F13492896727A004D40BF /* SDL_assert.h */, + B30F134A2896727A004D40BF /* SDL_version.h */, + B30F134B2896727A004D40BF /* SDL_gamecontroller.h */, + B30F134C2896727A004D40BF /* SDL_config_windows.h */, + B30F134D2896727A004D40BF /* SDL_copying.h */, + B30F134E2896727A004D40BF /* SDL_thread.h */, + B30F134F2896727A004D40BF /* SDL_test_harness.h */, + B30F13502896727A004D40BF /* SDL_rect.h */, + B30F13512896727A004D40BF /* SDL_metal.h */, + B30F13522896727A004D40BF /* SDL_mutex.h */, + B30F13532896727A004D40BF /* close_code.h */, + B30F13542896727A004D40BF /* SDL_config.h.in */, + B30F13552896727A004D40BF /* SDL_config_wiz.h */, + B30F13562896727A004D40BF /* SDL_joystick.h */, + B30F13572896727A004D40BF /* SDL.h */, + B30F13582896727A004D40BF /* SDL_filesystem.h */, + B30F13592896727A004D40BF /* SDL_messagebox.h */, + B30F135A2896727A004D40BF /* SDL_opengles2_gl2platform.h */, + B30F135B2896727A004D40BF /* SDL_opengles2_khrplatform.h */, + B30F135C2896727A004D40BF /* SDL_test_md5.h */, + B30F135D2896727A004D40BF /* SDL_pixels.h */, + B30F135E2896727A004D40BF /* SDL_cpuinfo.h */, + B30F135F2896727A004D40BF /* SDL_test_compare.h */, + B30F13602896727A004D40BF /* SDL_opengles2_gl2.h */, + ); + path = SDL2; + sourceTree = ""; + }; + B30F13622896727B004D40BF /* docs */ = { + isa = PBXGroup; + children = ( + B30F13632896727B004D40BF /* README-raspberrypi.md */, + B30F13642896727B004D40BF /* README-gesture.md */, + B30F13652896727B004D40BF /* README-macosx.md */, + B30F13662896727B004D40BF /* README-platforms.md */, + B30F13672896727B004D40BF /* README-ios.md */, + B30F13682896727B004D40BF /* README-nacl.md */, + B30F13692896727B004D40BF /* README-cmake.md */, + B30F136A2896727B004D40BF /* README-wince.md */, + B30F136B2896727B004D40BF /* README-psp.md */, + B30F136C2896727B004D40BF /* README.md */, + B30F136D2896727B004D40BF /* README-touch.md */, + B30F136E2896727B004D40BF /* README-android.md */, + B30F136F2896727B004D40BF /* README-directfb.md */, + B30F13702896727B004D40BF /* README-hg.md */, + B30F13712896727B004D40BF /* README-emscripten.md */, + B30F13722896727B004D40BF /* README-pandora.md */, + B30F13732896727B004D40BF /* README-dynapi.md */, + B30F13742896727B004D40BF /* doxyfile */, + B30F13752896727B004D40BF /* README-porting.md */, + B30F13762896727B004D40BF /* README-winrt.md */, + B30F13772896727B004D40BF /* README-linux.md */, + B30F13782896727B004D40BF /* README-windows.md */, + ); + path = docs; + sourceTree = ""; + }; + B30F13792896727B004D40BF /* lib */ = { + isa = PBXGroup; + children = ( + B30F137A2896727B004D40BF /* x64 */, + B30F137F2896727B004D40BF /* x86 */, + ); + path = lib; + sourceTree = ""; + }; + B30F137A2896727B004D40BF /* x64 */ = { + isa = PBXGroup; + children = ( + B30F137B2896727B004D40BF /* SDL2main.lib */, + B30F137C2896727B004D40BF /* SDL2.lib */, + B30F137D2896727B004D40BF /* SDL2.dll */, + B30F137E2896727B004D40BF /* SDL2test.lib */, + ); + path = x64; + sourceTree = ""; + }; + B30F137F2896727B004D40BF /* x86 */ = { + isa = PBXGroup; + children = ( + B30F13802896727B004D40BF /* SDL2main.lib */, + B30F13812896727B004D40BF /* SDL2.lib */, + B30F13822896727B004D40BF /* SDL2.dll */, + B30F13832896727B004D40BF /* SDL2test.lib */, + ); + path = x86; + sourceTree = ""; + }; + B30F13852896727B004D40BF /* glew-2.1.0 */ = { + isa = PBXGroup; + children = ( + B30F13862896727B004D40BF /* bin */, + B30F13902896727B004D40BF /* include */, + B30F13962896727B004D40BF /* lib */, + B30F139E2896727B004D40BF /* doc */, + B30F13B32896727B004D40BF /* LICENSE.txt */, + ); + path = "glew-2.1.0"; + sourceTree = ""; + }; + B30F13862896727B004D40BF /* bin */ = { + isa = PBXGroup; + children = ( + B30F13872896727B004D40BF /* Release */, + ); + path = bin; + sourceTree = ""; + }; + B30F13872896727B004D40BF /* Release */ = { + isa = PBXGroup; + children = ( + B30F13882896727B004D40BF /* x64 */, + B30F138C2896727B004D40BF /* Win32 */, + ); + path = Release; + sourceTree = ""; + }; + B30F13882896727B004D40BF /* x64 */ = { + isa = PBXGroup; + children = ( + B30F13892896727B004D40BF /* glew32.dll */, + B30F138A2896727B004D40BF /* glewinfo.exe */, + B30F138B2896727B004D40BF /* visualinfo.exe */, + ); + path = x64; + sourceTree = ""; + }; + B30F138C2896727B004D40BF /* Win32 */ = { + isa = PBXGroup; + children = ( + B30F138D2896727B004D40BF /* glew32.dll */, + B30F138E2896727B004D40BF /* glewinfo.exe */, + B30F138F2896727B004D40BF /* visualinfo.exe */, + ); + path = Win32; + sourceTree = ""; + }; + B30F13902896727B004D40BF /* include */ = { + isa = PBXGroup; + children = ( + B30F13912896727B004D40BF /* GL */, + ); + path = include; + sourceTree = ""; + }; + B30F13912896727B004D40BF /* GL */ = { + isa = PBXGroup; + children = ( + B30F13922896727B004D40BF /* glxew.h */, + B30F13932896727B004D40BF /* eglew.h */, + B30F13942896727B004D40BF /* wglew.h */, + B30F13952896727B004D40BF /* glew.h */, + ); + path = GL; + sourceTree = ""; + }; + B30F13962896727B004D40BF /* lib */ = { + isa = PBXGroup; + children = ( + B30F13972896727B004D40BF /* Release */, + ); + path = lib; + sourceTree = ""; + }; + B30F13972896727B004D40BF /* Release */ = { + isa = PBXGroup; + children = ( + B30F13982896727B004D40BF /* x64 */, + B30F139B2896727B004D40BF /* Win32 */, + ); + path = Release; + sourceTree = ""; + }; + B30F13982896727B004D40BF /* x64 */ = { + isa = PBXGroup; + children = ( + B30F13992896727B004D40BF /* glew32.lib */, + B30F139A2896727B004D40BF /* glew32s.lib */, + ); + path = x64; + sourceTree = ""; + }; + B30F139B2896727B004D40BF /* Win32 */ = { + isa = PBXGroup; + children = ( + B30F139C2896727B004D40BF /* glew32.lib */, + B30F139D2896727B004D40BF /* glew32s.lib */, + ); + path = Win32; + sourceTree = ""; + }; + B30F139E2896727B004D40BF /* doc */ = { + isa = PBXGroup; + children = ( + B30F139F2896727B004D40BF /* basic.html */, + B30F13A02896727B004D40BF /* glxew.html */, + B30F13A12896727B004D40BF /* install.html */, + B30F13A22896727B004D40BF /* build.html */, + B30F13A32896727B004D40BF /* index.html */, + B30F13A42896727B004D40BF /* ogl_sm.jpg */, + B30F13A52896727B004D40BF /* glew.png */, + B30F13A62896727B004D40BF /* mesa.txt */, + B30F13A72896727B004D40BF /* github.png */, + B30F13A82896727B004D40BF /* glew.txt */, + B30F13A92896727B004D40BF /* glew.css */, + B30F13AA2896727B004D40BF /* wglew.html */, + B30F13AB2896727B004D40BF /* gpl.txt */, + B30F13AC2896727B004D40BF /* glew.html */, + B30F13AD2896727B004D40BF /* khronos.txt */, + B30F13AE2896727B004D40BF /* advanced.html */, + B30F13AF2896727B004D40BF /* log.html */, + B30F13B02896727B004D40BF /* new.png */, + B30F13B12896727B004D40BF /* credits.html */, + B30F13B22896727B004D40BF /* travis.png */, + ); + path = doc; + sourceTree = ""; + }; + B30F13BB2896727B004D40BF /* .github */ = { + isa = PBXGroup; + children = ( + B30F13BC2896727B004D40BF /* FUNDING.yml */, + B30F13BD2896727B004D40BF /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B30F13BD2896727B004D40BF /* workflows */ = { + isa = PBXGroup; + children = ( + B30F13BE2896727B004D40BF /* gearcoleco.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B30F13C02896727B004D40BF /* src */ = { + isa = PBXGroup; + children = ( + B30F13CD2896727B004D40BF /* Audio.cpp */, + B30F13C92896727B004D40BF /* Cartridge.cpp */, + B30F13D82896727B004D40BF /* ColecoVisionIOPorts.cpp */, + B30F13E92896727B004D40BF /* GearcolecoCore.cpp */, + B30F13C62896727B004D40BF /* Input.cpp */, + B30F13C32896727B004D40BF /* Memory.cpp */, + B30F13F52896727B004D40BF /* opcodes_cb.cpp */, + B30F13E72896727B004D40BF /* opcodes_ed.cpp */, + B30F13E82896727B004D40BF /* opcodes.cpp */, + B30F13CC2896727B004D40BF /* Processor.cpp */, + B30F13D12896727B004D40BF /* Video.cpp */, + B30F13CE2896727B004D40BF /* Audio.h */, + B30F13EA2896727B004D40BF /* Cartridge.h */, + B30F13F02896727B004D40BF /* ColecoVisionIOPorts.h */, + B30F13F32896727B004D40BF /* definitions.h */, + B30F13F62896727B004D40BF /* game_db.h */, + B30F13C42896727B004D40BF /* gearcoleco.h */, + B30F13F22896727B004D40BF /* GearcolecoCore.h */, + B30F13C52896727B004D40BF /* Input.h */, + B30F13D02896727B004D40BF /* IOPorts.h */, + B30F13C22896727B004D40BF /* Memory_inline.h */, + B30F13EF2896727B004D40BF /* Memory.h */, + B30F13D52896727B004D40BF /* no_bios.h */, + B30F13F12896727B004D40BF /* opcode_daa.h */, + B30F13F42896727B004D40BF /* opcode_names.h */, + B30F13C72896727B004D40BF /* opcode_timing.h */, + B30F13D72896727B004D40BF /* opcodecb_names.h */, + B30F13EE2896727B004D40BF /* opcodedd_names.h */, + B30F13CB2896727B004D40BF /* opcodeddcb_names.h */, + B30F13ED2896727B004D40BF /* opcodeed_names.h */, + B30F13C12896727B004D40BF /* opcodefd_names.h */, + B30F13D62896727B004D40BF /* opcodefdcb_names.h */, + B30F13C82896727B004D40BF /* opcodexx_names.h */, + B30F13EB2896727B004D40BF /* Processor_inline.h */, + B30F13CA2896727B004D40BF /* Processor.h */, + B30F13CF2896727B004D40BF /* SixteenBitRegister.h */, + B30F13EC2896727B004D40BF /* Video.h */, + B30F13D92896727B004D40BF /* audio */, + B30F13D22896727B004D40BF /* miniz */, + ); + path = src; + sourceTree = ""; + }; + B30F13D22896727B004D40BF /* miniz */ = { + isa = PBXGroup; + children = ( + B30F13D32896727B004D40BF /* miniz.c */, + B30F13D42896727B004D40BF /* miniz.h */, + ); + path = miniz; + sourceTree = ""; + }; + B30F13D92896727B004D40BF /* audio */ = { + isa = PBXGroup; + children = ( + B30F13DF2896727B004D40BF /* Blip_Buffer.cpp */, + B30F13DD2896727B004D40BF /* Effects_Buffer.cpp */, + B30F13DB2896727B004D40BF /* Multi_Buffer.cpp */, + B30F13DC2896727B004D40BF /* Sms_Apu.cpp */, + B30F13DA2896727B004D40BF /* blargg_common.h */, + B30F13E12896727B004D40BF /* blargg_config.h */, + B30F13E62896727B004D40BF /* blargg_source.h */, + B30F13E52896727B004D40BF /* Blip_Buffer.h */, + B30F13E32896727B004D40BF /* Blip_Synth.h */, + B30F13E22896727B004D40BF /* Effects_Buffer.h */, + B30F13E02896727B004D40BF /* Multi_Buffer.h */, + B30F13DE2896727B004D40BF /* Sms_Apu.h */, + B30F13E42896727B004D40BF /* Sms_Oscs.h */, + ); + path = audio; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVGearcoleco */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVGearcoleco.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVGearcoleco; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVGearcolecoCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVGearcolecoCore.h */, + B37022C6287253B300B3F6DA /* PVGearcolecoCore.mm */, + ); + path = PVGearcolecoCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B30F12B928967270004D40BF /* Gearcoleco */, + B37022BE287253B300B3F6DA /* PVGearcoleco */, + B37022C4287253B300B3F6DA /* PVGearcolecoCore */, + B37022BD287253B300B3F6DA /* PVGearcoleco-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVGearcoleco.framework */, + B30178D3207C901D0051B93D /* libGearcoleco.a */, + B3344BC32859E088006E6B3A /* libGearcoleco-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVGearcoleco.h in Headers */, + B37022C92872554300B3F6DA /* PVGearcolecoCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* Gearcoleco */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "Gearcoleco" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Gearcoleco; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libGearcoleco.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* Gearcoleco-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "Gearcoleco-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Gearcoleco-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libGearcoleco-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVGearcoleco */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVGearcoleco" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + B30F1421289673D7004D40BF /* PBXTargetDependency */, + ); + name = PVGearcoleco; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVGearcoleco.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVGearcoleco" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVGearcoleco */, + B3344B522859E088006E6B3A /* Gearcoleco-libretro */, + B30178D2207C901D0051B93D /* Gearcoleco */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B30F1413289672C6004D40BF /* Blip_Buffer.cpp in Sources */, + B30F1400289672B6004D40BF /* opcodes_ed.cpp in Sources */, + B30F13FF289672B6004D40BF /* Input.cpp in Sources */, + B30F1402289672B6004D40BF /* Audio.cpp in Sources */, + B30F1417289672C6004D40BF /* Multi_Buffer.cpp in Sources */, + B30F1407289672B6004D40BF /* Video.cpp in Sources */, + B30F1414289672C6004D40BF /* Effects_Buffer.cpp in Sources */, + B30F13FE289672B6004D40BF /* Memory.cpp in Sources */, + B30F13FD289672B6004D40BF /* ColecoVisionIOPorts.cpp in Sources */, + B30F1406289672B6004D40BF /* Cartridge.cpp in Sources */, + B30F1403289672B6004D40BF /* opcodes_cb.cpp in Sources */, + B30F1415289672C6004D40BF /* Sms_Apu.cpp in Sources */, + B30F1404289672B6004D40BF /* Processor.cpp in Sources */, + B30F1405289672B6004D40BF /* GearcolecoCore.cpp in Sources */, + B30F1401289672B6004D40BF /* opcodes.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B30F141D289672D4004D40BF /* libretro.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVGearcolecoCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B30F1421289673D7004D40BF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B30178D2207C901D0051B93D /* Gearcoleco */; + targetProxy = B30F1420289673D7004D40BF /* PBXContainerItemProxy */; + }; + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* Gearcoleco-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Gearcoleco; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Gearcoleco; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Gearcoleco/src\"", + "\"$(SRCROOT)/Gearcoleco/src/audio\"", + "\"$(SRCROOT)/Gearcoleco/src/miniz\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVGearcoleco/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGearcoleco"; + PRODUCT_NAME = PVGearcoleco; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Gearcoleco; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Gearcoleco-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Gearcoleco-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Gearcoleco-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Gearcoleco/src\"", + "\"$(SRCROOT)/Gearcoleco/src/audio\"", + "\"$(SRCROOT)/Gearcoleco/src/miniz\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Gearcoleco/src\"", + "\"$(SRCROOT)/Gearcoleco/src/audio\"", + "\"$(SRCROOT)/Gearcoleco/src/miniz\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVGearcoleco/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGearcoleco"; + PRODUCT_NAME = PVGearcoleco; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVGearcoleco/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGearcoleco"; + PRODUCT_NAME = PVGearcoleco; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "Gearcoleco" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "Gearcoleco-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVGearcoleco" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVGearcoleco" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/Gearcoleco/PVGearcoleco.xcodeproj/xcshareddata/xcschemes/PVGearcoleco.xcscheme b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/xcshareddata/xcschemes/PVGearcoleco.xcscheme new file mode 100644 index 0000000000..7c2cfb1210 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco.xcodeproj/xcshareddata/xcschemes/PVGearcoleco.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Gearcoleco/PVGearcoleco/Core.plist b/Cores/Gearcoleco/PVGearcoleco/Core.plist new file mode 100644 index 0000000000..328e98368f --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.gearcoleco + PVPrincipleClass + PVGearcolecoCore + PVSupportedSystems + + com.provenance.colecovision + + PVProjectName + Gearcoleco + PVProjectURL + https://github.com/drhelius/Gearcoleco + PVProjectVersion + 1.0.0 + + diff --git a/Cores/Gearcoleco/PVGearcoleco/Info.plist b/Cores/Gearcoleco/PVGearcoleco/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/Gearcoleco/PVGearcoleco/PVGearcoleco.h b/Cores/Gearcoleco/PVGearcoleco/PVGearcoleco.h new file mode 100644 index 0000000000..1ca0863c90 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcoleco/PVGearcoleco.h @@ -0,0 +1,18 @@ +// +// PVGearcoleco.h +// PVGearcoleco +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVGearcoleco. +FOUNDATION_EXPORT double PVGearcolecoVersionNumber; + +//! Project version string for PVGearcoleco. +FOUNDATION_EXPORT const unsigned char PVGearcolecoVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/Gearcoleco/PVGearcolecoCore/PVGearcolecoCore.h b/Cores/Gearcoleco/PVGearcolecoCore/PVGearcolecoCore.h new file mode 100644 index 0000000000..06f0488140 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcolecoCore/PVGearcolecoCore.h @@ -0,0 +1,43 @@ +// +// PVGearcolecoCore.h +// PVGearcoleco +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVGearcolecoCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/Gearcoleco/PVGearcolecoCore/PVGearcolecoCore.mm b/Cores/Gearcoleco/PVGearcolecoCore/PVGearcolecoCore.mm new file mode 100644 index 0000000000..b04e71ec04 --- /dev/null +++ b/Cores/Gearcoleco/PVGearcolecoCore/PVGearcolecoCore.mm @@ -0,0 +1,262 @@ +// +// PVGearcolecoCore.m +// PVGearcoleco +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVGearcolecoCore.h" +#include +//#import "PVGearcolecoCore+Controls.h" +//#import "PVGearcolecoCore+Audio.h" +//#import "PVGearcolecoCore+Video.h" +// +//#import "PVGearcolecoCore+Audio.h" + +#import +#import + +#if TARGET_OS_OSX || TARGET_OS_MACCATALYST +#import +#import +#endif + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVGearcolecoCore() { + +} + +@end + +#pragma mark - PVGearcolecoCore Begin + +@implementation PVGearcolecoCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1024, 768); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT + return GL_RGB565; +} + + +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +# pragma mark - Audio + +- (double)audioSampleRate { + return 48000; +} + +#if 0 +const struct retro_variable vars[] = { + { "Gearcoleco_mode", "MSX Mode; MSX2+|MSX1|MSX2" }, + { "Gearcoleco_video_mode", "MSX Video Mode; NTSC|PAL|Dynamic" }, + { "Gearcoleco_hires", "Support high resolution; Off|Interlaced|Progressive" }, + { "Gearcoleco_overscan", "Support overscan; No|Yes" }, + { "Gearcoleco_mapper_type_mode", "MSX Mapper Type Mode; " + "Guess|" + "Generic 8kB|" + "Generic 16kB|" + "Konami5 8kB|" + "Konami4 8kB|" + "ASCII 8kB|" + "ASCII 16kB|" + "GameMaster2|" + "FMPAC" + }, + { "Gearcoleco_ram_pages", "MSX Main Memory; Auto|64KB|128KB|256KB|512KB|4MB" }, + { "Gearcoleco_vram_pages", "MSX Video Memory; Auto|32KB|64KB|128KB|192KB" }, + { "Gearcoleco_log_level", "Gearcoleco logging; Off|Info|Debug|Spam" }, + { "Gearcoleco_game_master", "Support Game Master; No|Yes" }, + { "Gearcoleco_simbdos", "Simulate DiskROM disk access calls; No|Yes" }, + { "Gearcoleco_autospace", "Use autofire on SPACE; No|Yes" }, + { "Gearcoleco_allsprites", "Show all sprites; No|Yes" }, + { "Gearcoleco_font", "Text font; standard|DEFAULT.FNT|ITALIC.FNT|INTERNAT.FNT|CYRILLIC.FNT|KOREAN.FNT|JAPANESE.FNT" }, + { "Gearcoleco_flush_disk", "Save disk changes; Never|Immediate|On close|To/From SRAM" }, + { "Gearcoleco_phantom_disk", "Create empty disk when none loaded; No|Yes" }, + { "Gearcoleco_custom_keyboard_up", up_value}, + { "Gearcoleco_custom_keyboard_down", down_value}, + { "Gearcoleco_custom_keyboard_left", left_value}, + { "Gearcoleco_custom_keyboard_right", right_value}, + { "Gearcoleco_custom_keyboard_a", a_value}, + { "Gearcoleco_custom_keyboard_b", b_value}, + { "Gearcoleco_custom_keyboard_y", y_value}, + { "Gearcoleco_custom_keyboard_x", x_value}, + { "Gearcoleco_custom_keyboard_start", start_value}, + { "Gearcoleco_custom_keyboard_select", select_value}, + { "Gearcoleco_custom_keyboard_l", l_value}, + { "Gearcoleco_custom_keyboard_r", r_value}, + { "Gearcoleco_custom_keyboard_l2", l2_value}, + { "Gearcoleco_custom_keyboard_r2", r2_value}, + { "Gearcoleco_custom_keyboard_l3", l3_value}, + { "Gearcoleco_custom_keyboard_r3", r3_value}, + { NULL, NULL }, +}; +#endif + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + if (V("Gearcoleco_video_mode")) { + // NTSC|PAL|Dynamic + char *value = strdup("Dynamic"); + return value; + } else if (V("Gearcoleco_mode")) { + // MSX2+|MSX1|MSX2 + char * value = strdup("MSX2+"); + return value; + } else if (V("Gearcoleco_hires")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("Gearcoleco_overscan")) { + // No|Yes + char *value = strdup("Yes"); + return value; + } else if (V("Gearcoleco_mapper_type_mode")) { +// { "Gearcoleco_mapper_type_mode", "MSX Mapper Type Mode; " +// "Guess|" +// "Generic 8kB|" +// "Generic 16kB|" +// "Konami5 8kB|" +// "Konami4 8kB|" +// "ASCII 8kB|" +// "ASCII 16kB|" +// "GameMaster2|" +// "FMPAC" +// }, + char *value = strdup("FMPAC"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} +@end diff --git a/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj b/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj index f8df0322f3..b3eb2e107d 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj +++ b/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/project.pbxproj @@ -7,150 +7,152 @@ objects = { /* Begin PBXBuildFile section */ - B324C63421920D5C009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63321920D5C009F4EDC /* PVSupport.framework */; }; B324C63621920D6D009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63521920D6D009F4EDC /* PVSupport.framework */; }; B326758327B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */; }; - B326758427B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */; }; B3547B572058589900CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B562058589900CFF7D8 /* Core.plist */; }; - B3547B582058589900CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B562058589900CFF7D8 /* Core.plist */; }; - B37302D41DE7DB1B00D0B366 /* gamepad.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AC17F752600031B1C9 /* gamepad.c */; }; - B37302D51DE7DB1B00D0B366 /* eq.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7E617F752600031B1C9 /* eq.c */; }; - B37302D61DE7DB1B00D0B366 /* scd.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70B17F752600031B1C9 /* scd.c */; }; - B37302D71DE7DB1B00D0B366 /* z80.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA85817F752610031B1C9 /* z80.c */; }; - B37302D81DE7DB1B00D0B366 /* input.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AE17F752600031B1C9 /* input.c */; }; - B37302D91DE7DB1B00D0B366 /* cdc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70317F752600031B1C9 /* cdc.c */; }; - B37302DA1DE7DB1B00D0B366 /* loadrom.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7C017F752600031B1C9 /* loadrom.c */; }; - B37302DB1DE7DB1B00D0B366 /* genesis.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70D17F752600031B1C9 /* genesis.c */; }; - B37302DC1DE7DB1B00D0B366 /* ym2413.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EC17F752600031B1C9 /* ym2413.c */; }; - B37302DD1DE7DB1B00D0B366 /* paddle.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B417F752600031B1C9 /* paddle.c */; }; + B367000D2896283B00F75595 /* genesis.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDFF289627AC00F75595 /* genesis.c */; }; + B367000E2896283B00F75595 /* mem68k.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE98289627AC00F75595 /* mem68k.c */; }; + B367000F2896283B00F75595 /* io_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE97289627AC00F75595 /* io_ctrl.c */; }; + B36700102896283B00F75595 /* vdp_render.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE79289627AC00F75595 /* vdp_render.c */; }; + B36700112896283B00F75595 /* membnk.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEAE289627AD00F75595 /* membnk.c */; }; + B36700122896283B00F75595 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE05289627AC00F75595 /* state.c */; }; + B36700132896283B00F75595 /* loadrom.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEAD289627AD00F75595 /* loadrom.c */; }; + B36700142896283B00F75595 /* vdp_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE9A289627AC00F75595 /* vdp_ctrl.c */; }; + B36700152896283B00F75595 /* system.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE08289627AC00F75595 /* system.c */; }; + B36700162896283B00F75595 /* memz80.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE99289627AC00F75595 /* memz80.c */; }; + B36700172896289500F75595 /* eq.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE9D289627AC00F75595 /* eq.c */; }; + B36700182896289500F75595 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEA7289627AD00F75595 /* sound.c */; }; + B36700192896289500F75595 /* psg.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEA9289627AD00F75595 /* psg.c */; }; + B367001A2896289500F75595 /* ym3438.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEA8289627AD00F75595 /* ym3438.c */; }; + B367001B2896289500F75595 /* ym2413.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEA5289627AD00F75595 /* ym2413.c */; }; + B367001C2896289500F75595 /* blip_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEA3289627AD00F75595 /* blip_buf.c */; }; + B367001D2896289500F75595 /* z80.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE02289627AC00F75595 /* z80.c */; }; + B367001E2896289500F75595 /* ym2612.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEA2289627AD00F75595 /* ym2612.c */; }; + B367001F289628A600F75595 /* opll.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FEAC289627AD00F75595 /* opll.c */; }; + B3670020289628BB00F75595 /* eeprom_spi.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE81289627AC00F75595 /* eeprom_spi.c */; }; + B3670021289628BB00F75595 /* ggenie.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE7F289627AC00F75595 /* ggenie.c */; }; + B3670022289628BB00F75595 /* sms_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE8C289627AC00F75595 /* sms_cart.c */; }; + B3670023289628BB00F75595 /* eeprom_i2c.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE7D289627AC00F75595 /* eeprom_i2c.c */; }; + B3670024289628BB00F75595 /* eeprom_93c.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE7E289627AC00F75595 /* eeprom_93c.c */; }; + B3670025289628BB00F75595 /* sram.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE7B289627AC00F75595 /* sram.c */; }; + B3670026289628BB00F75595 /* areplay.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE91289627AC00F75595 /* areplay.c */; }; + B3670027289628BB00F75595 /* md_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE93289627AC00F75595 /* md_cart.c */; }; + B3670028289628BB00F75595 /* megasd.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE80289627AC00F75595 /* megasd.c */; }; + B3670029289628D400F75595 /* svp.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE86289627AC00F75595 /* svp.c */; }; + B367002A289628D400F75595 /* ssp16.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE87289627AC00F75595 /* ssp16.c */; }; + B367002B289628DC00F75595 /* cdc.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE72289627AC00F75595 /* cdc.c */; }; + B367002C289628DC00F75595 /* cdd.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE76289627AC00F75595 /* cdd.c */; }; + B367002D289628DC00F75595 /* cd_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE71289627AC00F75595 /* cd_cart.c */; }; + B367002E289628DD00F75595 /* gfx.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE0E289627AC00F75595 /* gfx.c */; }; + B367002F289628DD00F75595 /* pcm.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE12289627AC00F75595 /* pcm.c */; }; + B3670030289628DD00F75595 /* scd.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FE0F289627AC00F75595 /* scd.c */; }; + B3670031289628EF00F75595 /* xe_1ap.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDFC289627AC00F75595 /* xe_1ap.c */; }; + B3670032289628EF00F75595 /* gamepad.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF2289627AB00F75595 /* gamepad.c */; }; + B3670033289628EF00F75595 /* teamplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF7289627AB00F75595 /* teamplayer.c */; }; + B3670034289628EF00F75595 /* terebi_oekaki.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF8289627AB00F75595 /* terebi_oekaki.c */; }; + B3670035289628EF00F75595 /* activator.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF9289627AC00F75595 /* activator.c */; }; + B3670036289628EF00F75595 /* mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDEC289627AB00F75595 /* mouse.c */; }; + B3670037289628EF00F75595 /* input.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF6289627AB00F75595 /* input.c */; }; + B3670038289628EF00F75595 /* lightgun.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDEF289627AB00F75595 /* lightgun.c */; }; + B3670039289628EF00F75595 /* graphic_board.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF0289627AB00F75595 /* graphic_board.c */; }; + B367003A289628EF00F75595 /* paddle.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF3289627AB00F75595 /* paddle.c */; }; + B367003B289628F000F75595 /* sportspad.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDF5289627AB00F75595 /* sportspad.c */; }; + B367003C289628F900F75595 /* m68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDAB289627AB00F75595 /* m68kcpu.c */; }; + B367003D289628F900F75595 /* s68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDAC289627AB00F75595 /* s68kcpu.c */; }; + B367003E2896290100F75595 /* sms_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDDE289627AB00F75595 /* sms_ntsc.c */; }; + B367003F2896290100F75595 /* md_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FDDC289627AB00F75595 /* md_ntsc.c */; }; + B367007C2896293700F75595 /* md_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D817F752600031B1C9 /* md_ntsc.c */; }; + B367007D2896293700F75595 /* mem68k.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7CF17F752600031B1C9 /* mem68k.c */; }; + B367007E2896293700F75595 /* gfx.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70717F752600031B1C9 /* gfx.c */; }; + B367007F2896293700F75595 /* membnk.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D117F752600031B1C9 /* membnk.c */; }; + B36700802896293700F75595 /* svp.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6FD17F752600031B1C9 /* svp.c */; }; + B36700812896293700F75595 /* terebi_oekaki.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7BA17F752600031B1C9 /* terebi_oekaki.c */; }; + B36700822896293700F75595 /* ym2413.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EC17F752600031B1C9 /* ym2413.c */; }; + B36700832896293700F75595 /* memz80.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D317F752600031B1C9 /* memz80.c */; }; + B36700842896293700F75595 /* blip_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7E417F752600031B1C9 /* blip_buf.c */; }; + B36700852896293700F75595 /* cdc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70317F752600031B1C9 /* cdc.c */; }; + B36700862896293700F75595 /* graphic_board.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09572586D65F00EA6170 /* graphic_board.c */; }; + B36700872896293700F75595 /* pcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70917F752600031B1C9 /* pcm.c */; }; + B36700882896293700F75595 /* activator.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AA17F752600031B1C9 /* activator.c */; }; + B36700892896293700F75595 /* eeprom_i2c.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6ED17F752600031B1C9 /* eeprom_i2c.c */; }; + B367008A2896293700F75595 /* paddle.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B417F752600031B1C9 /* paddle.c */; }; + B367008B2896293700F75595 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EA17F752600031B1C9 /* sound.c */; }; + B367008D2896293700F75595 /* m68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7C517F752600031B1C9 /* m68kcpu.c */; }; + B367008E2896293700F75595 /* s68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7CC17F752600031B1C9 /* s68kcpu.c */; }; + B367008F2896293700F75595 /* md_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F317F752600031B1C9 /* md_cart.c */; }; + B36700902896293700F75595 /* areplay.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6E917F752600031B1C9 /* areplay.c */; }; + B36700912896293700F75595 /* io_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7BE17F752600031B1C9 /* io_ctrl.c */; }; + B36700922896293700F75595 /* input.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AE17F752600031B1C9 /* input.c */; }; + B36700932896293700F75595 /* ym2612.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EE17F752600031B1C9 /* ym2612.c */; }; + B36700942896293700F75595 /* psg.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E093D2586D39D00EA6170 /* psg.c */; }; + B36700952896293700F75595 /* z80.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA85817F752610031B1C9 /* z80.c */; }; + B36700962896293700F75595 /* sram.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F717F752600031B1C9 /* sram.c */; }; + B36700972896293700F75595 /* cdd.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70517F752600031B1C9 /* cdd.c */; }; + B36700982896293700F75595 /* vdp_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA84217F752610031B1C9 /* vdp_render.c */; }; + B36700992896293700F75595 /* cd_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70117F752600031B1C9 /* cd_cart.c */; }; + B367009A2896293700F75595 /* eeprom_spi.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6EF17F752600031B1C9 /* eeprom_spi.c */; }; + B367009B2896293700F75595 /* ssp16.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6FB17F752600031B1C9 /* ssp16.c */; }; + B367009C2896293700F75595 /* lightgun.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B017F752600031B1C9 /* lightgun.c */; }; + B367009D2896293700F75595 /* teamplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B817F752600031B1C9 /* teamplayer.c */; }; + B367009E2896293700F75595 /* loadrom.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7C017F752600031B1C9 /* loadrom.c */; }; + B367009F2896293700F75595 /* vdp_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA84017F752610031B1C9 /* vdp_ctrl.c */; }; + B36700A02896293700F75595 /* gamepad.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AC17F752600031B1C9 /* gamepad.c */; }; + B36700A12896293700F75595 /* scd.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70B17F752600031B1C9 /* scd.c */; }; + B36700A32896293700F75595 /* ggenie.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F117F752600031B1C9 /* ggenie.c */; }; + B36700A42896293700F75595 /* ym3438.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09422586D39D00EA6170 /* ym3438.c */; }; + B36700A52896293700F75595 /* opll.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09402586D39D00EA6170 /* opll.c */; }; + B36700A62896293700F75595 /* mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B217F752600031B1C9 /* mouse.c */; }; + B36700A72896293700F75595 /* sportspad.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B617F752600031B1C9 /* sportspad.c */; }; + B36700A82896293700F75595 /* eq.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7E617F752600031B1C9 /* eq.c */; }; + B36700A92896293700F75595 /* xe_1ap.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E094F2586D47000EA6170 /* xe_1ap.c */; }; + B36700AA2896293700F75595 /* eeprom_93c.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6EB17F752600031B1C9 /* eeprom_93c.c */; }; + B36700AB2896293700F75595 /* system.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7F217F752600031B1C9 /* system.c */; }; + B36700AC2896293700F75595 /* genesis.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70D17F752600031B1C9 /* genesis.c */; }; + B36700AD2896293700F75595 /* sms_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7DD17F752600031B1C9 /* sms_ntsc.c */; }; + B36700AE2896293700F75595 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7F017F752600031B1C9 /* state.c */; }; + B36700AF2896293700F75595 /* sms_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F517F752600031B1C9 /* sms_cart.c */; }; + B367016828962BC900F75595 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FECC289627AD00F75595 /* libretro.c */; }; + B367016928962BCA00F75595 /* scrc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B367FF10289627AD00F75595 /* scrc32.c */; }; + B367016C28962C8B00F75595 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA85B17F752610031B1C9 /* libretro.c */; }; + B367016E28962C9300F75595 /* scrc32.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09372586D34B00EA6170 /* scrc32.c */; }; B37302DE1DE7DB1B00D0B366 /* PVGenesisEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA86817F752610031B1C9 /* PVGenesisEmulatorCore.m */; }; - B37302DF1DE7DB1B00D0B366 /* mem68k.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7CF17F752600031B1C9 /* mem68k.c */; }; - B37302E01DE7DB1B00D0B366 /* cd_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70117F752600031B1C9 /* cd_cart.c */; }; - B37302E11DE7DB1B00D0B366 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EA17F752600031B1C9 /* sound.c */; }; - B37302E21DE7DB1B00D0B366 /* cdd.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70517F752600031B1C9 /* cdd.c */; }; - B37302E31DE7DB1B00D0B366 /* mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B217F752600031B1C9 /* mouse.c */; }; - B37302E41DE7DB1B00D0B366 /* vdp_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA84217F752610031B1C9 /* vdp_render.c */; }; - B37302E51DE7DB1B00D0B366 /* io_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7BE17F752600031B1C9 /* io_ctrl.c */; }; - B37302E71DE7DB1B00D0B366 /* membnk.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D117F752600031B1C9 /* membnk.c */; }; - B37302E81DE7DB1B00D0B366 /* blip_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7E417F752600031B1C9 /* blip_buf.c */; }; - B37302E91DE7DB1B00D0B366 /* pcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70917F752600031B1C9 /* pcm.c */; }; - B37302EA1DE7DB1B00D0B366 /* sportspad.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B617F752600031B1C9 /* sportspad.c */; }; - B37302EB1DE7DB1B00D0B366 /* lightgun.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B017F752600031B1C9 /* lightgun.c */; }; - B37302EC1DE7DB1B00D0B366 /* gfx.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70717F752600031B1C9 /* gfx.c */; }; - B37302EE1DE7DB1B00D0B366 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7F017F752600031B1C9 /* state.c */; }; - B37302EF1DE7DB1B00D0B366 /* terebi_oekaki.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7BA17F752600031B1C9 /* terebi_oekaki.c */; }; - B37302F01DE7DB1B00D0B366 /* activator.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AA17F752600031B1C9 /* activator.c */; }; - B37302F11DE7DB1B00D0B366 /* md_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F317F752600031B1C9 /* md_cart.c */; }; - B37302F21DE7DB1B00D0B366 /* s68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7CC17F752600031B1C9 /* s68kcpu.c */; }; - B37302F31DE7DB1B00D0B366 /* m68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7C517F752600031B1C9 /* m68kcpu.c */; }; - B37302F41DE7DB1B00D0B366 /* eeprom_spi.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6EF17F752600031B1C9 /* eeprom_spi.c */; }; - B37302F51DE7DB1B00D0B366 /* sram.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F717F752600031B1C9 /* sram.c */; }; - B37302F61DE7DB1B00D0B366 /* memz80.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D317F752600031B1C9 /* memz80.c */; }; - B37302F71DE7DB1B00D0B366 /* eeprom_i2c.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6ED17F752600031B1C9 /* eeprom_i2c.c */; }; - B37302F81DE7DB1B00D0B366 /* teamplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B817F752600031B1C9 /* teamplayer.c */; }; - B37302F91DE7DB1B00D0B366 /* sms_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F517F752600031B1C9 /* sms_cart.c */; }; - B37302FA1DE7DB1B00D0B366 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA85B17F752610031B1C9 /* libretro.c */; }; - B37302FB1DE7DB1B00D0B366 /* vdp_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA84017F752610031B1C9 /* vdp_ctrl.c */; }; - B37302FC1DE7DB1B00D0B366 /* areplay.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6E917F752600031B1C9 /* areplay.c */; }; - B37302FD1DE7DB1B00D0B366 /* sms_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7DD17F752600031B1C9 /* sms_ntsc.c */; }; - B37302FE1DE7DB1B00D0B366 /* ssp16.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6FB17F752600031B1C9 /* ssp16.c */; }; - B37302FF1DE7DB1B00D0B366 /* md_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D817F752600031B1C9 /* md_ntsc.c */; }; - B37303001DE7DB1B00D0B366 /* ggenie.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F117F752600031B1C9 /* ggenie.c */; }; - B37303011DE7DB1B00D0B366 /* ym2612.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EE17F752600031B1C9 /* ym2612.c */; }; - B37303021DE7DB1B00D0B366 /* eeprom_93c.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6EB17F752600031B1C9 /* eeprom_93c.c */; }; - B37303031DE7DB1B00D0B366 /* svp.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6FD17F752600031B1C9 /* svp.c */; }; - B37303041DE7DB1B00D0B366 /* system.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7F217F752600031B1C9 /* system.c */; }; - B37303051DE7DB1B00D0B366 /* gamepad.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AC17F752600031B1C9 /* gamepad.c */; }; - B37303061DE7DB1B00D0B366 /* eq.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7E617F752600031B1C9 /* eq.c */; }; - B37303071DE7DB1B00D0B366 /* scd.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70B17F752600031B1C9 /* scd.c */; }; - B37303081DE7DB1B00D0B366 /* z80.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA85817F752610031B1C9 /* z80.c */; }; - B37303091DE7DB1B00D0B366 /* input.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AE17F752600031B1C9 /* input.c */; }; - B373030A1DE7DB1B00D0B366 /* cdc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70317F752600031B1C9 /* cdc.c */; }; - B373030B1DE7DB1B00D0B366 /* loadrom.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7C017F752600031B1C9 /* loadrom.c */; }; - B373030C1DE7DB1B00D0B366 /* genesis.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70D17F752600031B1C9 /* genesis.c */; }; - B373030D1DE7DB1B00D0B366 /* ym2413.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EC17F752600031B1C9 /* ym2413.c */; }; - B373030E1DE7DB1B00D0B366 /* paddle.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B417F752600031B1C9 /* paddle.c */; }; - B373030F1DE7DB1B00D0B366 /* PVGenesisEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA86817F752610031B1C9 /* PVGenesisEmulatorCore.m */; }; - B37303101DE7DB1B00D0B366 /* mem68k.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7CF17F752600031B1C9 /* mem68k.c */; }; - B37303111DE7DB1B00D0B366 /* cd_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70117F752600031B1C9 /* cd_cart.c */; }; - B37303121DE7DB1B00D0B366 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EA17F752600031B1C9 /* sound.c */; }; - B37303131DE7DB1B00D0B366 /* cdd.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70517F752600031B1C9 /* cdd.c */; }; - B37303141DE7DB1B00D0B366 /* mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B217F752600031B1C9 /* mouse.c */; }; - B37303151DE7DB1B00D0B366 /* vdp_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA84217F752610031B1C9 /* vdp_render.c */; }; - B37303161DE7DB1B00D0B366 /* io_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7BE17F752600031B1C9 /* io_ctrl.c */; }; - B37303181DE7DB1B00D0B366 /* membnk.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D117F752600031B1C9 /* membnk.c */; }; - B37303191DE7DB1B00D0B366 /* blip_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7E417F752600031B1C9 /* blip_buf.c */; }; - B373031A1DE7DB1B00D0B366 /* pcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70917F752600031B1C9 /* pcm.c */; }; - B373031B1DE7DB1B00D0B366 /* sportspad.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B617F752600031B1C9 /* sportspad.c */; }; - B373031C1DE7DB1B00D0B366 /* lightgun.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B017F752600031B1C9 /* lightgun.c */; }; - B373031D1DE7DB1B00D0B366 /* gfx.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA70717F752600031B1C9 /* gfx.c */; }; - B373031F1DE7DB1B00D0B366 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7F017F752600031B1C9 /* state.c */; }; - B37303201DE7DB1B00D0B366 /* terebi_oekaki.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7BA17F752600031B1C9 /* terebi_oekaki.c */; }; - B37303211DE7DB1B00D0B366 /* activator.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7AA17F752600031B1C9 /* activator.c */; }; - B37303221DE7DB1B00D0B366 /* md_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F317F752600031B1C9 /* md_cart.c */; }; - B37303231DE7DB1B00D0B366 /* s68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7CC17F752600031B1C9 /* s68kcpu.c */; }; - B37303241DE7DB1B00D0B366 /* m68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7C517F752600031B1C9 /* m68kcpu.c */; }; - B37303251DE7DB1B00D0B366 /* eeprom_spi.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6EF17F752600031B1C9 /* eeprom_spi.c */; }; - B37303261DE7DB1B00D0B366 /* sram.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F717F752600031B1C9 /* sram.c */; }; - B37303271DE7DB1B00D0B366 /* memz80.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D317F752600031B1C9 /* memz80.c */; }; - B37303281DE7DB1B00D0B366 /* eeprom_i2c.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6ED17F752600031B1C9 /* eeprom_i2c.c */; }; - B37303291DE7DB1B00D0B366 /* teamplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7B817F752600031B1C9 /* teamplayer.c */; }; - B373032A1DE7DB1B00D0B366 /* sms_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F517F752600031B1C9 /* sms_cart.c */; }; - B373032B1DE7DB1B00D0B366 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA85B17F752610031B1C9 /* libretro.c */; }; - B373032C1DE7DB1B00D0B366 /* vdp_ctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA84017F752610031B1C9 /* vdp_ctrl.c */; }; - B373032D1DE7DB1B00D0B366 /* areplay.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6E917F752600031B1C9 /* areplay.c */; }; - B373032E1DE7DB1B00D0B366 /* sms_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7DD17F752600031B1C9 /* sms_ntsc.c */; }; - B373032F1DE7DB1B00D0B366 /* ssp16.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6FB17F752600031B1C9 /* ssp16.c */; }; - B37303301DE7DB1B00D0B366 /* md_ntsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7D817F752600031B1C9 /* md_ntsc.c */; }; - B37303311DE7DB1B00D0B366 /* ggenie.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6F117F752600031B1C9 /* ggenie.c */; }; - B37303321DE7DB1B00D0B366 /* ym2612.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7EE17F752600031B1C9 /* ym2612.c */; }; - B37303331DE7DB1B00D0B366 /* eeprom_93c.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6EB17F752600031B1C9 /* eeprom_93c.c */; }; - B37303341DE7DB1B00D0B366 /* svp.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6FD17F752600031B1C9 /* svp.c */; }; - B37303351DE7DB1B00D0B366 /* system.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7F217F752600031B1C9 /* system.c */; }; B373033A1DE7DB6F00D0B366 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6E117F751590031B1C9 /* CoreGraphics.framework */; }; B373033B1DE7DB7300D0B366 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6DD17F751380031B1C9 /* AudioToolbox.framework */; }; - B373033C1DE7DB7A00D0B366 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6DB17F751320031B1C9 /* OpenGLES.framework */; platformFilter = ios; }; - B373033D1DE7DB8300D0B366 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6D917F7512B0031B1C9 /* UIKit.framework */; }; B373033E1DE7DB8800D0B366 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6AF17F74D150031B1C9 /* Foundation.framework */; }; - B373033F1DE7DBA300D0B366 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6AF17F74D150031B1C9 /* Foundation.framework */; }; - B37303401DE7DBA700D0B366 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6D917F7512B0031B1C9 /* UIKit.framework */; }; - B37303411DE7DBAF00D0B366 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6DB17F751320031B1C9 /* OpenGLES.framework */; }; - B37303421DE7DBB600D0B366 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6DD17F751380031B1C9 /* AudioToolbox.framework */; }; - B37303431DE7DBF000D0B366 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA6E117F751590031B1C9 /* CoreGraphics.framework */; }; - B37303481DE7DE8200D0B366 /* PVGenesisEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA86717F752610031B1C9 /* PVGenesisEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B381A27629262E6600305322 /* libgenesisPlusGX-legacy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B367007B2896290E00F75595 /* libgenesisPlusGX-legacy.a */; }; B3A9F4201DE7EB67008450F5 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A9F41F1DE7EB67008450F5 /* libz.tbd */; }; - B3A9F4211DE7EBF8008450F5 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A9F41F1DE7EB67008450F5 /* libz.tbd */; }; B3A9F4221DE7F5F2008450F5 /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA85C17F752610031B1C9 /* libretro.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3A9F4231DE7F5FA008450F5 /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA85C17F752610031B1C9 /* libretro.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3A9F4241DE7F606008450F5 /* PVGenesisEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA86717F752610031B1C9 /* PVGenesisEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3A9F4261DE864BC008450F5 /* PVGenesis.h in Headers */ = {isa = PBXBuildFile; fileRef = B3E432061DE6917700D3C91E /* PVGenesis.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3E432081DE6917700D3C91E /* PVGenesis.h in Headers */ = {isa = PBXBuildFile; fileRef = B3E432061DE6917700D3C91E /* PVGenesis.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C66E09392586D34B00EA6170 /* scrc32.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09372586D34B00EA6170 /* scrc32.c */; }; - C66E093A2586D34B00EA6170 /* scrc32.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09372586D34B00EA6170 /* scrc32.c */; }; C66E093B2586D34B00EA6170 /* scrc32.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09382586D34B00EA6170 /* scrc32.h */; }; - C66E093C2586D34B00EA6170 /* scrc32.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09382586D34B00EA6170 /* scrc32.h */; }; - C66E09432586D39E00EA6170 /* psg.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E093D2586D39D00EA6170 /* psg.c */; }; - C66E09442586D39E00EA6170 /* psg.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E093D2586D39D00EA6170 /* psg.c */; }; C66E09452586D39E00EA6170 /* opll.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E093E2586D39D00EA6170 /* opll.h */; }; - C66E09462586D39E00EA6170 /* opll.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E093E2586D39D00EA6170 /* opll.h */; }; C66E09472586D39E00EA6170 /* psg.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E093F2586D39D00EA6170 /* psg.h */; }; - C66E09482586D39E00EA6170 /* psg.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E093F2586D39D00EA6170 /* psg.h */; }; - C66E09492586D39E00EA6170 /* opll.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09402586D39D00EA6170 /* opll.c */; }; - C66E094A2586D39E00EA6170 /* opll.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09402586D39D00EA6170 /* opll.c */; }; C66E094B2586D39E00EA6170 /* ym3438.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09412586D39D00EA6170 /* ym3438.h */; }; - C66E094C2586D39E00EA6170 /* ym3438.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09412586D39D00EA6170 /* ym3438.h */; }; - C66E094D2586D39E00EA6170 /* ym3438.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09422586D39D00EA6170 /* ym3438.c */; }; - C66E094E2586D39E00EA6170 /* ym3438.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09422586D39D00EA6170 /* ym3438.c */; }; - C66E09512586D47000EA6170 /* xe_1ap.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E094F2586D47000EA6170 /* xe_1ap.c */; }; C66E09532586D47000EA6170 /* xe_1ap.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09502586D47000EA6170 /* xe_1ap.h */; }; - C66E09542586D47000EA6170 /* xe_1ap.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09502586D47000EA6170 /* xe_1ap.h */; }; - C66E09552586D57900EA6170 /* xe_1ap.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E094F2586D47000EA6170 /* xe_1ap.c */; }; C66E09582586D66000EA6170 /* graphic_board.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09562586D65F00EA6170 /* graphic_board.h */; }; - C66E09592586D66000EA6170 /* graphic_board.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E09562586D65F00EA6170 /* graphic_board.h */; }; - C66E095A2586D66000EA6170 /* graphic_board.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09572586D65F00EA6170 /* graphic_board.c */; }; - C66E095B2586D66000EA6170 /* graphic_board.c in Sources */ = {isa = PBXBuildFile; fileRef = C66E09572586D65F00EA6170 /* graphic_board.c */; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + B3670001289627E800F75595 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B36700762896290E00F75595 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 1ACEA6AF17F74D150031B1C9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1ACEA6B317F74D150031B1C9 /* PVGenesis-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVGenesis-Prefix.pch"; sourceTree = ""; }; @@ -282,11 +284,554 @@ B324C63521920D6D009F4EDC /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenesisOptions.swift; sourceTree = ""; }; B3547B562058589900CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B3670003289627E800F75595 /* libgenesisPlusGX.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgenesisPlusGX.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B367007B2896290E00F75595 /* libgenesisPlusGX-legacy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libgenesisPlusGX-legacy.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B367FDA4289627AB00F75595 /* Makefile.gc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.gc; sourceTree = ""; }; + B367FDA7289627AB00F75595 /* s68ki_cycles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s68ki_cycles.h; sourceTree = ""; }; + B367FDA8289627AB00F75595 /* m68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; + B367FDA9289627AB00F75595 /* m68ki_cycles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68ki_cycles.h; sourceTree = ""; }; + B367FDAA289627AB00F75595 /* m68ki_instruction_jump_table.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68ki_instruction_jump_table.h; sourceTree = ""; }; + B367FDAB289627AB00F75595 /* m68kcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kcpu.c; sourceTree = ""; }; + B367FDAC289627AB00F75595 /* s68kcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s68kcpu.c; sourceTree = ""; }; + B367FDAD289627AB00F75595 /* s68kconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s68kconf.h; sourceTree = ""; }; + B367FDAE289627AB00F75595 /* m68kcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kcpu.h; sourceTree = ""; }; + B367FDAF289627AB00F75595 /* m68kconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kconf.h; sourceTree = ""; }; + B367FDB0289627AB00F75595 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B367FDB1289627AB00F75595 /* m68kops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kops.h; sourceTree = ""; }; + B367FDB3289627AB00F75595 /* asm_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_arm.h; sourceTree = ""; }; + B367FDB4289627AB00F75595 /* ogg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ogg.h; sourceTree = ""; }; + B367FDB5289627AB00F75595 /* ivorbiscodec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ivorbiscodec.h; sourceTree = ""; }; + B367FDB6289627AB00F75595 /* block.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = block.c; sourceTree = ""; }; + B367FDB7289627AB00F75595 /* framing.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = framing.c; sourceTree = ""; }; + B367FDB8289627AB00F75595 /* mdct_lookup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdct_lookup.h; sourceTree = ""; }; + B367FDB9289627AB00F75595 /* CHANGELOG */ = {isa = PBXFileReference; lastKnownFileType = text; path = CHANGELOG; sourceTree = ""; }; + B367FDBA289627AB00F75595 /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + B367FDBB289627AB00F75595 /* info.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = info.c; sourceTree = ""; }; + B367FDBC289627AB00F75595 /* lsp_lookup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lsp_lookup.h; sourceTree = ""; }; + B367FDBD289627AB00F75595 /* mdct.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mdct.c; sourceTree = ""; }; + B367FDBE289627AB00F75595 /* os.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = os.h; sourceTree = ""; }; + B367FDBF289627AB00F75595 /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = ""; }; + B367FDC0289627AB00F75595 /* codebook.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = codebook.c; sourceTree = ""; }; + B367FDC1289627AB00F75595 /* floor0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floor0.c; sourceTree = ""; }; + B367FDC2289627AB00F75595 /* backends.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backends.h; sourceTree = ""; }; + B367FDC3289627AB00F75595 /* registry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = registry.h; sourceTree = ""; }; + B367FDC4289627AB00F75595 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B367FDC5289627AB00F75595 /* configure.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.in; sourceTree = ""; }; + B367FDC6289627AB00F75595 /* window_lookup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window_lookup.h; sourceTree = ""; }; + B367FDC7289627AB00F75595 /* res012.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = res012.c; sourceTree = ""; }; + B367FDC8289627AB00F75595 /* ivorbisfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ivorbisfile.h; sourceTree = ""; }; + B367FDC9289627AB00F75595 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B367FDCA289627AB00F75595 /* config_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_types.h; sourceTree = ""; }; + B367FDCB289627AB00F75595 /* sharedbook.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sharedbook.c; sourceTree = ""; }; + B367FDCC289627AB00F75595 /* Version_script.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Version_script.in; sourceTree = ""; }; + B367FDCD289627AB00F75595 /* floor1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floor1.c; sourceTree = ""; }; + B367FDCE289627AB00F75595 /* synthesis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = synthesis.c; sourceTree = ""; }; + B367FDCF289627AB00F75595 /* block.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = block.h; sourceTree = ""; }; + B367FDD0289627AB00F75595 /* mdct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdct.h; sourceTree = ""; }; + B367FDD1289627AB00F75595 /* mapping0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mapping0.c; sourceTree = ""; }; + B367FDD2289627AB00F75595 /* os_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = os_types.h; sourceTree = ""; }; + B367FDD3289627AB00F75595 /* bitwise.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitwise.c; sourceTree = ""; }; + B367FDD4289627AB00F75595 /* registry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = registry.c; sourceTree = ""; }; + B367FDD5289627AB00F75595 /* vorbisfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vorbisfile.c; sourceTree = ""; }; + B367FDD6289627AB00F75595 /* window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = window.c; sourceTree = ""; }; + B367FDD7289627AB00F75595 /* codec_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codec_internal.h; sourceTree = ""; }; + B367FDD8289627AB00F75595 /* codebook.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codebook.h; sourceTree = ""; }; + B367FDD9289627AB00F75595 /* vdp_render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdp_render.h; sourceTree = ""; }; + B367FDDA289627AB00F75595 /* shared.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shared.h; sourceTree = ""; }; + B367FDDC289627AB00F75595 /* md_ntsc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md_ntsc.c; sourceTree = ""; }; + B367FDDD289627AB00F75595 /* sms_ntsc_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sms_ntsc_impl.h; sourceTree = ""; }; + B367FDDE289627AB00F75595 /* sms_ntsc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sms_ntsc.c; sourceTree = ""; }; + B367FDDF289627AB00F75595 /* sms_ntsc_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sms_ntsc_config.h; sourceTree = ""; }; + B367FDE0289627AB00F75595 /* changes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = changes.txt; sourceTree = ""; }; + B367FDE1289627AB00F75595 /* md_ntsc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md_ntsc.h; sourceTree = ""; }; + B367FDE2289627AB00F75595 /* md_ntsc_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md_ntsc_config.h; sourceTree = ""; }; + B367FDE3289627AB00F75595 /* md_ntsc_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md_ntsc_impl.h; sourceTree = ""; }; + B367FDE4289627AB00F75595 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B367FDE5289627AB00F75595 /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B367FDE6289627AB00F75595 /* sms_ntsc.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = sms_ntsc.txt; sourceTree = ""; }; + B367FDE7289627AB00F75595 /* sms_ntsc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sms_ntsc.h; sourceTree = ""; }; + B367FDE9289627AB00F75595 /* terebi_oekaki.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = terebi_oekaki.h; sourceTree = ""; }; + B367FDEA289627AB00F75595 /* teamplayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = teamplayer.h; sourceTree = ""; }; + B367FDEB289627AB00F75595 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B367FDEC289627AB00F75595 /* mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mouse.c; sourceTree = ""; }; + B367FDED289627AB00F75595 /* sportspad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sportspad.h; sourceTree = ""; }; + B367FDEE289627AB00F75595 /* activator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = activator.h; sourceTree = ""; }; + B367FDEF289627AB00F75595 /* lightgun.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightgun.c; sourceTree = ""; }; + B367FDF0289627AB00F75595 /* graphic_board.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = graphic_board.c; sourceTree = ""; }; + B367FDF1289627AB00F75595 /* xe_1ap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xe_1ap.h; sourceTree = ""; }; + B367FDF2289627AB00F75595 /* gamepad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gamepad.c; sourceTree = ""; }; + B367FDF3289627AB00F75595 /* paddle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = paddle.c; sourceTree = ""; }; + B367FDF4289627AB00F75595 /* mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mouse.h; sourceTree = ""; }; + B367FDF5289627AB00F75595 /* sportspad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sportspad.c; sourceTree = ""; }; + B367FDF6289627AB00F75595 /* input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input.c; sourceTree = ""; }; + B367FDF7289627AB00F75595 /* teamplayer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = teamplayer.c; sourceTree = ""; }; + B367FDF8289627AB00F75595 /* terebi_oekaki.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = terebi_oekaki.c; sourceTree = ""; }; + B367FDF9289627AC00F75595 /* activator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = activator.c; sourceTree = ""; }; + B367FDFA289627AC00F75595 /* graphic_board.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphic_board.h; sourceTree = ""; }; + B367FDFB289627AC00F75595 /* lightgun.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lightgun.h; sourceTree = ""; }; + B367FDFC289627AC00F75595 /* xe_1ap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xe_1ap.c; sourceTree = ""; }; + B367FDFD289627AC00F75595 /* paddle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = paddle.h; sourceTree = ""; }; + B367FDFE289627AC00F75595 /* gamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gamepad.h; sourceTree = ""; }; + B367FDFF289627AC00F75595 /* genesis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = genesis.c; sourceTree = ""; }; + B367FE00289627AC00F75595 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B367FE02289627AC00F75595 /* z80.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80.c; sourceTree = ""; }; + B367FE03289627AC00F75595 /* osd_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd_cpu.h; sourceTree = ""; }; + B367FE04289627AC00F75595 /* z80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80.h; sourceTree = ""; }; + B367FE05289627AC00F75595 /* state.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = state.c; sourceTree = ""; }; + B367FE06289627AC00F75595 /* mem68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mem68k.h; sourceTree = ""; }; + B367FE07289627AC00F75595 /* io_ctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = io_ctrl.h; sourceTree = ""; }; + B367FE08289627AC00F75595 /* system.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = system.c; sourceTree = ""; }; + B367FE09289627AC00F75595 /* vdp_ctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdp_ctrl.h; sourceTree = ""; }; + B367FE0A289627AC00F75595 /* memz80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memz80.h; sourceTree = ""; }; + B367FE0B289627AC00F75595 /* membnk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = membnk.h; sourceTree = ""; }; + B367FE0C289627AC00F75595 /* loadrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = loadrom.h; sourceTree = ""; }; + B367FE0E289627AC00F75595 /* gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gfx.c; sourceTree = ""; }; + B367FE0F289627AC00F75595 /* scd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scd.c; sourceTree = ""; }; + B367FE10289627AC00F75595 /* cdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdc.h; sourceTree = ""; }; + B367FE11289627AC00F75595 /* cdd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdd.h; sourceTree = ""; }; + B367FE12289627AC00F75595 /* pcm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pcm.c; sourceTree = ""; }; + B367FE14289627AC00F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367FE17289627AC00F75595 /* COPYING.Xiph */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.Xiph; sourceTree = ""; }; + B367FE18289627AC00F75595 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B367FE19289627AC00F75595 /* cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpu.c; sourceTree = ""; }; + B367FE1A289627AC00F75595 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B367FE1B289627AC00F75595 /* format.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = format.c; sourceTree = ""; }; + B367FE1C289627AC00F75595 /* lpc_intrin_sse41.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_sse41.c; sourceTree = ""; }; + B367FE1D289627AC00F75595 /* stream_decoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stream_decoder.c; sourceTree = ""; }; + B367FE20289627AC00F75595 /* export.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = export.h; sourceTree = ""; }; + B367FE21289627AC00F75595 /* ordinals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ordinals.h; sourceTree = ""; }; + B367FE22289627AC00F75595 /* metadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = metadata.h; sourceTree = ""; }; + B367FE23289627AC00F75595 /* format.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = format.h; sourceTree = ""; }; + B367FE24289627AC00F75595 /* stream_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream_decoder.h; sourceTree = ""; }; + B367FE25289627AC00F75595 /* assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assert.h; sourceTree = ""; }; + B367FE26289627AC00F75595 /* callback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = callback.h; sourceTree = ""; }; + B367FE28289627AC00F75595 /* float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float.h; sourceTree = ""; }; + B367FE29289627AC00F75595 /* fixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fixed.h; sourceTree = ""; }; + B367FE2A289627AC00F75595 /* crc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = ""; }; + B367FE2B289627AC00F75595 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B367FE2C289627AC00F75595 /* lpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lpc.h; sourceTree = ""; }; + B367FE2D289627AC00F75595 /* macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + B367FE2E289627AC00F75595 /* cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; + B367FE2F289627AC00F75595 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B367FE30289627AC00F75595 /* format.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = format.h; sourceTree = ""; }; + B367FE31289627AC00F75595 /* bitreader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitreader.h; sourceTree = ""; }; + B367FE32289627AC00F75595 /* bitmath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitmath.h; sourceTree = ""; }; + B367FE34289627AC00F75595 /* stream_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream_decoder.h; sourceTree = ""; }; + B367FE36289627AC00F75595 /* compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compat.h; sourceTree = ""; }; + B367FE37289627AC00F75595 /* endswap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = endswap.h; sourceTree = ""; }; + B367FE38289627AC00F75595 /* alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = alloc.h; sourceTree = ""; }; + B367FE39289627AC00F75595 /* lpc_intrin_sse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_sse.c; sourceTree = ""; }; + B367FE3A289627AC00F75595 /* bitmath.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitmath.c; sourceTree = ""; }; + B367FE3B289627AC00F75595 /* bitreader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitreader.c; sourceTree = ""; }; + B367FE3C289627AC00F75595 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B367FE3D289627AC00F75595 /* lpc_intrin_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_sse2.c; sourceTree = ""; }; + B367FE3E289627AC00F75595 /* fixed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fixed.c; sourceTree = ""; }; + B367FE3F289627AC00F75595 /* float.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float.c; sourceTree = ""; }; + B367FE40289627AC00F75595 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B367FE41289627AC00F75595 /* crc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc.c; sourceTree = ""; }; + B367FE42289627AC00F75595 /* lpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc.c; sourceTree = ""; }; + B367FE43289627AC00F75595 /* lpc_intrin_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_avx2.c; sourceTree = ""; }; + B367FE45289627AC00F75595 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B367FE46289627AC00F75595 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B367FE47289627AC00F75595 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B367FE48289627AC00F75595 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B367FE49289627AC00F75595 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B367FE4A289627AC00F75595 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B367FE4B289627AC00F75595 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B367FE4C289627AC00F75595 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B367FE4D289627AC00F75595 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B367FE4E289627AC00F75595 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B367FE4F289627AC00F75595 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B367FE50289627AC00F75595 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B367FE51289627AC00F75595 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B367FE52289627AC00F75595 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B367FE53289627AC00F75595 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B367FE55289627AC00F75595 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B367FE56289627AC00F75595 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B367FE57289627AC00F75595 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B367FE58289627AC00F75595 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B367FE59289627AC00F75595 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B367FE5A289627AC00F75595 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B367FE5B289627AC00F75595 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B367FE5C289627AC00F75595 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B367FE5D289627AC00F75595 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B367FE5F289627AC00F75595 /* lzma-specification.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-specification.txt"; sourceTree = ""; }; + B367FE60289627AC00F75595 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B367FE61289627AC00F75595 /* lzma-sdk.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-sdk.txt"; sourceTree = ""; }; + B367FE62289627AC00F75595 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B367FE63289627AC00F75595 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B367FE64289627AC00F75595 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B367FE66289627AC00F75595 /* bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitstream.c; sourceTree = ""; }; + B367FE67289627AC00F75595 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B367FE68289627AC00F75595 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B367FE69289627AC00F75595 /* chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd.c; sourceTree = ""; }; + B367FE6A289627AC00F75595 /* huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = huffman.c; sourceTree = ""; }; + B367FE6B289627AC00F75595 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B367FE6C289627AC00F75595 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B367FE6D289627AC00F75595 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B367FE6E289627AC00F75595 /* flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = flac.c; sourceTree = ""; }; + B367FE6F289627AC00F75595 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B367FE70289627AC00F75595 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B367FE71289627AC00F75595 /* cd_cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cd_cart.c; sourceTree = ""; }; + B367FE72289627AC00F75595 /* cdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdc.c; sourceTree = ""; }; + B367FE73289627AC00F75595 /* scd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scd.h; sourceTree = ""; }; + B367FE74289627AC00F75595 /* gfx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gfx.h; sourceTree = ""; }; + B367FE75289627AC00F75595 /* pcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcm.h; sourceTree = ""; }; + B367FE76289627AC00F75595 /* cdd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdd.c; sourceTree = ""; }; + B367FE77289627AC00F75595 /* cd_cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cd_cart.h; sourceTree = ""; }; + B367FE78289627AC00F75595 /* hvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hvc.h; sourceTree = ""; }; + B367FE79289627AC00F75595 /* vdp_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdp_render.c; sourceTree = ""; }; + B367FE7B289627AC00F75595 /* sram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sram.c; sourceTree = ""; }; + B367FE7C289627AC00F75595 /* sms_cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sms_cart.h; sourceTree = ""; }; + B367FE7D289627AC00F75595 /* eeprom_i2c.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eeprom_i2c.c; sourceTree = ""; }; + B367FE7E289627AC00F75595 /* eeprom_93c.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eeprom_93c.c; sourceTree = ""; }; + B367FE7F289627AC00F75595 /* ggenie.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ggenie.c; sourceTree = ""; }; + B367FE80289627AC00F75595 /* megasd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = megasd.c; sourceTree = ""; }; + B367FE81289627AC00F75595 /* eeprom_spi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eeprom_spi.c; sourceTree = ""; }; + B367FE82289627AC00F75595 /* md_cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md_cart.h; sourceTree = ""; }; + B367FE83289627AC00F75595 /* areplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = areplay.h; sourceTree = ""; }; + B367FE85289627AC00F75595 /* svpdoc.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = svpdoc.txt; sourceTree = ""; }; + B367FE86289627AC00F75595 /* svp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = svp.c; sourceTree = ""; }; + B367FE87289627AC00F75595 /* ssp16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ssp16.c; sourceTree = ""; }; + B367FE88289627AC00F75595 /* imageformat.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = imageformat.txt; sourceTree = ""; }; + B367FE89289627AC00F75595 /* svp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svp.h; sourceTree = ""; }; + B367FE8A289627AC00F75595 /* ssp16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ssp16.h; sourceTree = ""; }; + B367FE8B289627AC00F75595 /* sram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sram.h; sourceTree = ""; }; + B367FE8C289627AC00F75595 /* sms_cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sms_cart.c; sourceTree = ""; }; + B367FE8D289627AC00F75595 /* ggenie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ggenie.h; sourceTree = ""; }; + B367FE8E289627AC00F75595 /* eeprom_93c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eeprom_93c.h; sourceTree = ""; }; + B367FE8F289627AC00F75595 /* eeprom_i2c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eeprom_i2c.h; sourceTree = ""; }; + B367FE90289627AC00F75595 /* megasd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = megasd.h; sourceTree = ""; }; + B367FE91289627AC00F75595 /* areplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = areplay.c; sourceTree = ""; }; + B367FE92289627AC00F75595 /* eeprom_spi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eeprom_spi.h; sourceTree = ""; }; + B367FE93289627AC00F75595 /* md_cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md_cart.c; sourceTree = ""; }; + B367FE94289627AC00F75595 /* macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + B367FE95289627AC00F75595 /* genesis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = genesis.h; sourceTree = ""; }; + B367FE96289627AC00F75595 /* system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = system.h; sourceTree = ""; }; + B367FE97289627AC00F75595 /* io_ctrl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = io_ctrl.c; sourceTree = ""; }; + B367FE98289627AC00F75595 /* mem68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mem68k.c; sourceTree = ""; }; + B367FE99289627AC00F75595 /* memz80.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memz80.c; sourceTree = ""; }; + B367FE9A289627AC00F75595 /* vdp_ctrl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdp_ctrl.c; sourceTree = ""; }; + B367FE9B289627AC00F75595 /* state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = state.h; sourceTree = ""; }; + B367FE9D289627AC00F75595 /* eq.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eq.c; sourceTree = ""; }; + B367FE9E289627AC00F75595 /* sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; + B367FE9F289627AD00F75595 /* ym2413.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym2413.h; sourceTree = ""; }; + B367FEA0289627AD00F75595 /* ym3438.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym3438.h; sourceTree = ""; }; + B367FEA1289627AD00F75595 /* opll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opll.h; sourceTree = ""; }; + B367FEA2289627AD00F75595 /* ym2612.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ym2612.c; sourceTree = ""; }; + B367FEA3289627AD00F75595 /* blip_buf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blip_buf.c; sourceTree = ""; }; + B367FEA4289627AD00F75595 /* psg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psg.h; sourceTree = ""; }; + B367FEA5289627AD00F75595 /* ym2413.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ym2413.c; sourceTree = ""; }; + B367FEA6289627AD00F75595 /* eq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eq.h; sourceTree = ""; }; + B367FEA7289627AD00F75595 /* sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sound.c; sourceTree = ""; }; + B367FEA8289627AD00F75595 /* ym3438.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ym3438.c; sourceTree = ""; }; + B367FEA9289627AD00F75595 /* psg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psg.c; sourceTree = ""; }; + B367FEAA289627AD00F75595 /* blip_buf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blip_buf.h; sourceTree = ""; }; + B367FEAB289627AD00F75595 /* ym2612.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym2612.h; sourceTree = ""; }; + B367FEAC289627AD00F75595 /* opll.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opll.c; sourceTree = ""; }; + B367FEAD289627AD00F75595 /* loadrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loadrom.c; sourceTree = ""; }; + B367FEAE289627AD00F75595 /* membnk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = membnk.c; sourceTree = ""; }; + B367FEB0289627AD00F75595 /* cpuhook.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpuhook.c; sourceTree = ""; }; + B367FEB1289627AD00F75595 /* cpuhook.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpuhook.h; sourceTree = ""; }; + B367FEB3289627AD00F75595 /* genplus_cube.dol */ = {isa = PBXFileReference; lastKnownFileType = file; path = genplus_cube.dol; sourceTree = ""; }; + B367FEB4289627AD00F75595 /* genesis_plus_gx_libretro.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = genesis_plus_gx_libretro.dll; sourceTree = ""; }; + B367FEB5289627AD00F75595 /* genplus_wii.dol */ = {isa = PBXFileReference; lastKnownFileType = file; path = genplus_wii.dol; sourceTree = ""; }; + B367FEB6289627AD00F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367FEB7289627AD00F75595 /* Makefile.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.libretro; sourceTree = ""; }; + B367FEB9289627AD00F75595 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B367FEBA289627AD00F75595 /* error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + B367FEBB289627AD00F75595 /* fileio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fileio.c; sourceTree = ""; }; + B367FEBC289627AD00F75595 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B367FEBD289627AD00F75595 /* db.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = db.json; sourceTree = ""; }; + B367FEBE289627AD00F75595 /* menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; + B367FEBF289627AD00F75595 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B367FEC0289627AD00F75595 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B367FEC1289627AD00F75595 /* emumain.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emumain.c; sourceTree = ""; }; + B367FEC2289627AD00F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B367FEC3289627AD00F75595 /* error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + B367FEC4289627AD00F75595 /* menu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = ""; }; + B367FEC5289627AD00F75595 /* config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = ""; }; + B367FEC6289627AD00F75595 /* fileio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileio.h; sourceTree = ""; }; + B367FEC7289627AD00F75595 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B367FEC8289627AD00F75595 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B367FEC9289627AD00F75595 /* emumain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emumain.h; sourceTree = ""; }; + B367FECA289627AD00F75595 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B367FECC289627AD00F75595 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B367FECE289627AD00F75595 /* compat */ = {isa = PBXFileReference; lastKnownFileType = text; path = compat; sourceTree = ""; }; + B367FECF289627AD00F75595 /* changelog */ = {isa = PBXFileReference; lastKnownFileType = text; path = changelog; sourceTree = ""; }; + B367FED1289627AD00F75595 /* format */ = {isa = PBXFileReference; lastKnownFileType = text; path = format; sourceTree = ""; }; + B367FED2289627AD00F75595 /* rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = rules; sourceTree = ""; }; + B367FED3289627AD00F75595 /* copyright */ = {isa = PBXFileReference; lastKnownFileType = text; path = copyright; sourceTree = ""; }; + B367FED4289627AD00F75595 /* dirs */ = {isa = PBXFileReference; lastKnownFileType = text; path = dirs; sourceTree = ""; }; + B367FED5289627AD00F75595 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; + B367FED7289627AD00F75595 /* genesis_plus_gx_libretro.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = genesis_plus_gx_libretro.vcxproj.filters; sourceTree = ""; }; + B367FED8289627AD00F75595 /* libretro_msvc.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = libretro_msvc.sln; sourceTree = ""; }; + B367FED9289627AD00F75595 /* genesis_plus_gx_libretro.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = genesis_plus_gx_libretro.vcxproj.user; sourceTree = ""; }; + B367FEDA289627AD00F75595 /* genesis_plus_gx_libretro.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = genesis_plus_gx_libretro.vcxproj; sourceTree = ""; }; + B367FEDB289627AD00F75595 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B367FEDC289627AD00F75595 /* scrc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scrc32.h; sourceTree = ""; }; + B367FEDD289627AD00F75595 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B367FEDE289627AD00F75595 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B367FEE1289627AD00F75595 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B367FEE3289627AD00F75595 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B367FEE5289627AD00F75595 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B367FEE6289627AD00F75595 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B367FEE8289627AD00F75595 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B367FEE9289627AD00F75595 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B367FEEC289627AD00F75595 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B367FEEE289627AD00F75595 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B367FEF0289627AD00F75595 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B367FEF1289627AD00F75595 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B367FEF2289627AD00F75595 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B367FEF3289627AD00F75595 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B367FEF5289627AD00F75595 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B367FEF6289627AD00F75595 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B367FEF7289627AD00F75595 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B367FEF8289627AD00F75595 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B367FEF9289627AD00F75595 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B367FEFA289627AD00F75595 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B367FEFB289627AD00F75595 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B367FEFC289627AD00F75595 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B367FEFD289627AD00F75595 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B367FEFE289627AD00F75595 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B367FEFF289627AD00F75595 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B367FF00289627AD00F75595 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B367FF01289627AD00F75595 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B367FF03289627AD00F75595 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B367FF04289627AD00F75595 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B367FF05289627AD00F75595 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B367FF06289627AD00F75595 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B367FF07289627AD00F75595 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B367FF08289627AD00F75595 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B367FF0A289627AD00F75595 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B367FF0B289627AD00F75595 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B367FF0C289627AD00F75595 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B367FF0E289627AD00F75595 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B367FF0F289627AD00F75595 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B367FF10289627AD00F75595 /* scrc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scrc32.c; sourceTree = ""; }; + B367FF11289627AD00F75595 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B367FF13289627AD00F75595 /* error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + B367FF14289627AD00F75595 /* fileio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fileio.c; sourceTree = ""; }; + B367FF15289627AD00F75595 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B367FF16289627AD00F75595 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B367FF17289627AD00F75595 /* readme-sdl.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "readme-sdl.txt"; sourceTree = ""; }; + B367FF18289627AD00F75595 /* Makefile.sdl1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.sdl1; sourceTree = ""; }; + B367FF1A289627AD00F75595 /* gx_vstudio.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gx_vstudio.vcxproj.user; sourceTree = ""; }; + B367FF1B289627AD00F75595 /* gx_vstudio.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = gx_vstudio.sln; sourceTree = ""; }; + B367FF1C289627AD00F75595 /* gx_vstudio.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gx_vstudio.vcxproj; sourceTree = ""; }; + B367FF20289627AD00F75595 /* .put_lib_files_here */ = {isa = PBXFileReference; lastKnownFileType = text; path = .put_lib_files_here; sourceTree = ""; }; + B367FF22289627AD00F75595 /* .put_lib_files_here */ = {isa = PBXFileReference; lastKnownFileType = text; path = .put_lib_files_here; sourceTree = ""; }; + B367FF24289627AD00F75595 /* .put_sdl2_devel_here */ = {isa = PBXFileReference; lastKnownFileType = text; path = .put_sdl2_devel_here; sourceTree = ""; }; + B367FF25289627AD00F75595 /* gx_vstudio.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gx_vstudio.vcxproj.filters; sourceTree = ""; }; + B367FF27289627AD00F75595 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B367FF28289627AD00F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B367FF29289627AD00F75595 /* error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + B367FF2A289627AD00F75595 /* md.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = md.ico; sourceTree = ""; }; + B367FF2B289627AD00F75595 /* config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = ""; }; + B367FF2C289627AD00F75595 /* fileio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileio.h; sourceTree = ""; }; + B367FF2D289627AD00F75595 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B367FF2E289627AD00F75595 /* CHANGELOG.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CHANGELOG.txt; sourceTree = ""; }; + B367FF2F289627AD00F75595 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B367FF30289627AD00F75595 /* Makefile.sdl2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.sdl2; sourceTree = ""; }; + B367FF31289627AD00F75595 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B367FF33289627AD00F75595 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B367FF34289627AD00F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B367FF35289627AD00F75595 /* icon.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = icon.rc; sourceTree = ""; }; + B367FF37289627AD00F75595 /* gx_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_input.h; sourceTree = ""; }; + B367FF38289627AD00F75595 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B367FF39289627AD00F75595 /* gx_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_video.c; sourceTree = ""; }; + B367FF3B289627AD00F75595 /* file_slot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_slot.h; sourceTree = ""; }; + B367FF3C289627AD00F75595 /* history.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = history.c; sourceTree = ""; }; + B367FF3D289627AD00F75595 /* fileio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fileio.c; sourceTree = ""; }; + B367FF3E289627AD00F75595 /* file_load.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_load.c; sourceTree = ""; }; + B367FF3F289627AE00F75595 /* history.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = history.h; sourceTree = ""; }; + B367FF40289627AE00F75595 /* file_slot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_slot.c; sourceTree = ""; }; + B367FF41289627AE00F75595 /* file_load.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_load.h; sourceTree = ""; }; + B367FF42289627AE00F75595 /* fileio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileio.h; sourceTree = ""; }; + B367FF44289627AE00F75595 /* Key_B_gcn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_B_gcn.png; sourceTree = ""; }; + B367FF45289627AE00F75595 /* Option_ctrl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Option_ctrl.png; sourceTree = ""; }; + B367FF46289627AE00F75595 /* Snap_empty.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Snap_empty.png; sourceTree = ""; }; + B367FF47289627AE00F75595 /* Button_sm_grey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_sm_grey.png; sourceTree = ""; }; + B367FF48289627AE00F75595 /* Load_recent.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Load_recent.png; sourceTree = ""; }; + B367FF49289627AE00F75595 /* Bg_layer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bg_layer.png; sourceTree = ""; }; + B367FF4A289627AE00F75595 /* Cart_ms.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Cart_ms.png; sourceTree = ""; }; + B367FF4B289627AE00F75595 /* Cart_md.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Cart_md.png; sourceTree = ""; }; + B367FF4C289627AE00F75595 /* Browser_dir.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Browser_dir.png; sourceTree = ""; }; + B367FF4D289627AE00F75595 /* CD_ready_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CD_ready_off.png; sourceTree = ""; }; + B367FF4E289627AE00F75595 /* Ctrl_justifiers.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_justifiers.png; sourceTree = ""; }; + B367FF4F289627AE00F75595 /* Button_special.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_special.png; sourceTree = ""; }; + B367FF50289627AE00F75595 /* Option_sound.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Option_sound.png; sourceTree = ""; }; + B367FF51289627AE00F75595 /* Main_load.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_load.png; sourceTree = ""; }; + B367FF52289627AE00F75595 /* Button_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_down.png; sourceTree = ""; }; + B367FF53289627AE00F75595 /* Ctrl_xe_1ap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_xe_1ap.png; sourceTree = ""; }; + B367FF54289627AE00F75595 /* Main_cheats.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_cheats.png; sourceTree = ""; }; + B367FF55289627AE00F75595 /* Main_play_gcn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_play_gcn.png; sourceTree = ""; }; + B367FF56289627AE00F75595 /* Main_quit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_quit.png; sourceTree = ""; }; + B367FF57289627AE00F75595 /* Button_up_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_up_over.png; sourceTree = ""; }; + B367FF58289627AE00F75595 /* Ctrl_pad6b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_pad6b.png; sourceTree = ""; }; + B367FF59289627AE00F75595 /* Banner_main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Banner_main.png; sourceTree = ""; }; + B367FF5A289627AE00F75595 /* Button_sm_yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_sm_yellow.png; sourceTree = ""; }; + B367FF5B289627AE00F75595 /* Main_showinfo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_showinfo.png; sourceTree = ""; }; + B367FF5C289627AE00F75595 /* Cart_sg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Cart_sg.png; sourceTree = ""; }; + B367FF5D289627AE00F75595 /* Frame_s1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Frame_s1.png; sourceTree = ""; }; + B367FF5E289627AE00F75595 /* Key_A_gcn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_A_gcn.png; sourceTree = ""; }; + B367FF5F289627AE00F75595 /* Ctrl_config.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_config.png; sourceTree = ""; }; + B367FF60289627AE00F75595 /* CD_ready_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CD_ready_on.png; sourceTree = ""; }; + B367FF61289627AE00F75595 /* Frame_s3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Frame_s3.png; sourceTree = ""; }; + B367FF62289627AE00F75595 /* ctrl_classic.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ctrl_classic.png; sourceTree = ""; }; + B367FF63289627AE00F75595 /* Main_reset.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_reset.png; sourceTree = ""; }; + B367FF64289627AE00F75595 /* Ctrl_graphic_board.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_graphic_board.png; sourceTree = ""; }; + B367FF65289627AE00F75595 /* Frame_s2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Frame_s2.png; sourceTree = ""; }; + B367FF66289627AE00F75595 /* Key_Plus_wii.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_Plus_wii.png; sourceTree = ""; }; + B367FF67289627AE00F75595 /* ctrl_wiiu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ctrl_wiiu.png; sourceTree = ""; }; + B367FF68289627AE00F75595 /* Banner_top.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Banner_top.png; sourceTree = ""; }; + B367FF69289627AE00F75595 /* Button_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_arrow.png; sourceTree = ""; }; + B367FF6A289627AE00F75595 /* Load_cd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Load_cd.png; sourceTree = ""; }; + B367FF6B289627AE00F75595 /* ctrl_option_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ctrl_option_on.png; sourceTree = ""; }; + B367FF6C289627AE00F75595 /* ctrl_wiimote.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ctrl_wiimote.png; sourceTree = ""; }; + B367FF6D289627AE00F75595 /* Main_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_file.png; sourceTree = ""; }; + B367FF6E289627AE00F75595 /* Button_special_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_special_over.png; sourceTree = ""; }; + B367FF6F289627AE00F75595 /* Ctrl_paddle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_paddle.png; sourceTree = ""; }; + B367FF70289627AE00F75595 /* Option_system.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Option_system.png; sourceTree = ""; }; + B367FF71289627AE00F75595 /* Ctrl_teamplayer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_teamplayer.png; sourceTree = ""; }; + B367FF72289627AE00F75595 /* Button_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_icon.png; sourceTree = ""; }; + B367FF73289627AE00F75595 /* Button_load.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_load.png; sourceTree = ""; }; + B367FF74289627AE00F75595 /* generic_point.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = generic_point.png; sourceTree = ""; }; + B367FF75289627AE00F75595 /* Cart_gg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Cart_gg.png; sourceTree = ""; }; + B367FF76289627AE00F75595 /* Ctrl_menacer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_menacer.png; sourceTree = ""; }; + B367FF77289627AE00F75595 /* Ctrl_lightphaser.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_lightphaser.png; sourceTree = ""; }; + B367FF78289627AE00F75595 /* Frame_s1_title.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Frame_s1_title.png; sourceTree = ""; }; + B367FF79289627AE00F75595 /* Button_icon_sm_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_icon_sm_over.png; sourceTree = ""; }; + B367FF7A289627AE00F75595 /* Key_Minus_wii.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_Minus_wii.png; sourceTree = ""; }; + B367FF7B289627AE00F75595 /* Overlay_bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Overlay_bar.png; sourceTree = ""; }; + B367FF7C289627AE00F75595 /* Frame_throbber.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Frame_throbber.png; sourceTree = ""; }; + B367FF7D289627AE00F75595 /* CD_access_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CD_access_on.png; sourceTree = ""; }; + B367FF7E289627AE00F75595 /* ctrl_option_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ctrl_option_off.png; sourceTree = ""; }; + B367FF7F289627AE00F75595 /* Key_L_gcn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_L_gcn.png; sourceTree = ""; }; + B367FF80289627AE00F75595 /* ctrl_gamecube.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ctrl_gamecube.png; sourceTree = ""; }; + B367FF81289627AE00F75595 /* Button_text.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_text.png; sourceTree = ""; }; + B367FF82289627AE00F75595 /* Ctrl_activator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_activator.png; sourceTree = ""; }; + B367FF83289627AE00F75595 /* Button_save.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_save.png; sourceTree = ""; }; + B367FF84289627AE00F75595 /* Button_text_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_text_over.png; sourceTree = ""; }; + B367FF85289627AE00F75595 /* Button_up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_up.png; sourceTree = ""; }; + B367FF86289627AE00F75595 /* Button_digit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_digit.png; sourceTree = ""; }; + B367FF87289627AE00F75595 /* Main_takeshot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_takeshot.png; sourceTree = ""; }; + B367FF88289627AE00F75595 /* Button_arrow_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_arrow_over.png; sourceTree = ""; }; + B367FF89289627AE00F75595 /* Key_DPAD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_DPAD.png; sourceTree = ""; }; + B367FF8A289627AE00F75595 /* Main_options.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_options.png; sourceTree = ""; }; + B367FF8B289627AE00F75595 /* Button_digit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_digit_over.png; sourceTree = ""; }; + B367FF8C289627AE00F75595 /* Crosshair_p1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Crosshair_p1.png; sourceTree = ""; }; + B367FF8D289627AE00F75595 /* Banner_bottom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Banner_bottom.png; sourceTree = ""; }; + B367FF8E289627AE00F75595 /* Button_load_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_load_over.png; sourceTree = ""; }; + B367FF8F289627AE00F75595 /* Ctrl_none.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_none.png; sourceTree = ""; }; + B367FF90289627AE00F75595 /* Frame_s2_title.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Frame_s2_title.png; sourceTree = ""; }; + B367FF91289627AE00F75595 /* Key_A_wii.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_A_wii.png; sourceTree = ""; }; + B367FF92289627AE00F75595 /* Option_menu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Option_menu.png; sourceTree = ""; }; + B367FF93289627AE00F75595 /* ctrl_nunchuk.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ctrl_nunchuk.png; sourceTree = ""; }; + B367FF94289627AE00F75595 /* CD_access_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CD_access_off.png; sourceTree = ""; }; + B367FF95289627AE00F75595 /* Crosshair_p2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Crosshair_p2.png; sourceTree = ""; }; + B367FF96289627AE00F75595 /* Ctrl_mastertap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_mastertap.png; sourceTree = ""; }; + B367FF97289627AE00F75595 /* Ctrl_gamepad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_gamepad.png; sourceTree = ""; }; + B367FF98289627AE00F75595 /* Star_empty.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Star_empty.png; sourceTree = ""; }; + B367FF99289627AE00F75595 /* Load_ms.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Load_ms.png; sourceTree = ""; }; + B367FF9A289627AE00F75595 /* Load_md.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Load_md.png; sourceTree = ""; }; + B367FF9B289627AE00F75595 /* Main_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_logo.png; sourceTree = ""; }; + B367FF9C289627AE00F75595 /* Bg_overlay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bg_overlay.png; sourceTree = ""; }; + B367FF9D289627AE00F75595 /* Bg_credits.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bg_credits.png; sourceTree = ""; }; + B367FF9E289627AE00F75595 /* Button_down_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_down_over.png; sourceTree = ""; }; + B367FF9F289627AE00F75595 /* Ctrl_mouse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_mouse.png; sourceTree = ""; }; + B367FFA0289627AE00F75595 /* Bg_intro_c4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bg_intro_c4.png; sourceTree = ""; }; + B367FFA1289627AE00F75595 /* Star_full.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Star_full.png; sourceTree = ""; }; + B367FFA2289627AE00F75595 /* Load_sg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Load_sg.png; sourceTree = ""; }; + B367FFA3289627AE00F75595 /* Button_save_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_save_over.png; sourceTree = ""; }; + B367FFA4289627AE00F75595 /* Main_play_wii.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Main_play_wii.png; sourceTree = ""; }; + B367FFA5289627AE00F75595 /* Ctrl_4wayplay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_4wayplay.png; sourceTree = ""; }; + B367FFA6289627AE00F75595 /* Ctrl_pad2b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_pad2b.png; sourceTree = ""; }; + B367FFA7289627AE00F75595 /* Ctrl_pad_auto.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_pad_auto.png; sourceTree = ""; }; + B367FFA8289627AE00F75595 /* Ctrl_pad3b.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_pad3b.png; sourceTree = ""; }; + B367FFA9289627AE00F75595 /* Bg_intro_c1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bg_intro_c1.png; sourceTree = ""; }; + B367FFAA289627AE00F75595 /* Key_B_wii.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_B_wii.png; sourceTree = ""; }; + B367FFAB289627AE00F75595 /* Button_icon_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_icon_over.png; sourceTree = ""; }; + B367FFAC289627AE00F75595 /* Option_video.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Option_video.png; sourceTree = ""; }; + B367FFAD289627AE00F75595 /* Button_icon_sm.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_icon_sm.png; sourceTree = ""; }; + B367FFAE289627AE00F75595 /* Load_gg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Load_gg.png; sourceTree = ""; }; + B367FFAF289627AE00F75595 /* Button_delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_delete.png; sourceTree = ""; }; + B367FFB0289627AE00F75595 /* Bg_intro_c2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bg_intro_c2.png; sourceTree = ""; }; + B367FFB1289627AE00F75595 /* Button_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_delete_over.png; sourceTree = ""; }; + B367FFB2289627AE00F75595 /* Key_R_gcn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Key_R_gcn.png; sourceTree = ""; }; + B367FFB3289627AE00F75595 /* Button_sm_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Button_sm_blue.png; sourceTree = ""; }; + B367FFB4289627AE00F75595 /* Bg_intro_c3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Bg_intro_c3.png; sourceTree = ""; }; + B367FFB5289627AE00F75595 /* Ctrl_sportspad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ctrl_sportspad.png; sourceTree = ""; }; + B367FFB6289627AE00F75595 /* gx_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_audio.h; sourceTree = ""; }; + B367FFB8289627AE00F75595 /* vi_encoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vi_encoder.c; sourceTree = ""; }; + B367FFB9289627AE00F75595 /* oggplayer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = oggplayer.c; sourceTree = ""; }; + B367FFBA289627AE00F75595 /* vi_encoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vi_encoder.h; sourceTree = ""; }; + B367FFBB289627AE00F75595 /* oggplayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oggplayer.h; sourceTree = ""; }; + B367FFBD289627AE00F75595 /* wiidrc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiidrc.c; sourceTree = ""; }; + B367FFBE289627AF00F75595 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B367FFBF289627AF00F75595 /* wiidrc_structs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiidrc_structs.h; sourceTree = ""; }; + B367FFC0289627AF00F75595 /* wiidrc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiidrc.h; sourceTree = ""; }; + B367FFC2289627AF00F75595 /* README.doc */ = {isa = PBXFileReference; lastKnownFileType = file; path = README.doc; sourceTree = ""; }; + B367FFC3289627AF00F75595 /* README.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = README.pdf; sourceTree = ""; }; + B367FFC5289627AF00F75595 /* button_select.pcm */ = {isa = PBXFileReference; lastKnownFileType = file; path = button_select.pcm; sourceTree = ""; }; + B367FFC6289627AF00F75595 /* intro.pcm */ = {isa = PBXFileReference; lastKnownFileType = file; path = intro.pcm; sourceTree = ""; }; + B367FFC7289627AF00F75595 /* button_over.pcm */ = {isa = PBXFileReference; lastKnownFileType = file; path = button_over.pcm; sourceTree = ""; }; + B367FFC8289627AF00F75595 /* gx_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_input.c; sourceTree = ""; }; + B367FFC9289627AF00F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B367FFCA289627AF00F75595 /* gx_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_video.h; sourceTree = ""; }; + B367FFCB289627AF00F75595 /* config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = ""; }; + B367FFCD289627AF00F75595 /* cheats.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cheats.c; sourceTree = ""; }; + B367FFCE289627AF00F75595 /* gui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gui.c; sourceTree = ""; }; + B367FFCF289627AF00F75595 /* menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; + B367FFD0289627AF00F75595 /* legal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = legal.c; sourceTree = ""; }; + B367FFD1289627AF00F75595 /* font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font.c; sourceTree = ""; }; + B367FFD2289627AF00F75595 /* filesel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filesel.h; sourceTree = ""; }; + B367FFD3289627AF00F75595 /* cheats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheats.h; sourceTree = ""; }; + B367FFD4289627AF00F75595 /* gui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = ""; }; + B367FFD5289627AF00F75595 /* saveicon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = saveicon.h; sourceTree = ""; }; + B367FFD6289627AF00F75595 /* menu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = ""; }; + B367FFD7289627AF00F75595 /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; + B367FFD8289627AF00F75595 /* filesel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = filesel.c; sourceTree = ""; }; + B367FFD9289627AF00F75595 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B367FFDA289627AF00F75595 /* gx_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_audio.c; sourceTree = ""; }; + B367FFDC289627AF00F75595 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B367FFDD289627AF00F75595 /* error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + B367FFDE289627AF00F75595 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B367FFDF289627AF00F75595 /* fileio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fileio.c; sourceTree = ""; }; + B367FFE0289627AF00F75595 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B367FFE1289627AF00F75595 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B367FFE2289627AF00F75595 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B367FFE4289627AF00F75595 /* MD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MD.png; sourceTree = ""; }; + B367FFE5289627AF00F75595 /* SQUARE_02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SQUARE_02.png; sourceTree = ""; }; + B367FFE6289627AF00F75595 /* SMS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SMS.png; sourceTree = ""; }; + B367FFE7289627AF00F75595 /* CLASSIC_01_RED.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CLASSIC_01_RED.png; sourceTree = ""; }; + B367FFE8289627AF00F75595 /* default.gcw0.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = default.gcw0.desktop; sourceTree = ""; }; + B367FFE9289627AF00F75595 /* PICO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PICO.png; sourceTree = ""; }; + B367FFEA289627AF00F75595 /* CLASSIC_01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CLASSIC_01.png; sourceTree = ""; }; + B367FFEB289627AF00F75595 /* gcw0readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = gcw0readme.txt; sourceTree = ""; }; + B367FFEC289627AF00F75595 /* scanlines.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = scanlines.png; sourceTree = ""; }; + B367FFED289627AF00F75595 /* CLASSIC_02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CLASSIC_02.png; sourceTree = ""; }; + B367FFEE289627AF00F75595 /* GG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GG.png; sourceTree = ""; }; + B367FFEF289627AF00F75595 /* ProggyTiny.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ProggyTiny.ttf; sourceTree = ""; }; + B367FFF0289627AF00F75595 /* SG1000.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SG1000.png; sourceTree = ""; }; + B367FFF1289627AF00F75595 /* MCD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MCD.png; sourceTree = ""; }; + B367FFF2289627AF00F75595 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B367FFF3289627AF00F75595 /* utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = ""; }; + B367FFF4289627AF00F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B367FFF5289627AF00F75595 /* error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + B367FFF6289627AF00F75595 /* opk_build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = opk_build.sh; sourceTree = ""; }; + B367FFF7289627AF00F75595 /* config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = ""; }; + B367FFF8289627AF00F75595 /* fileio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileio.h; sourceTree = ""; }; + B367FFF9289627AF00F75595 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B367FFFA289627AF00F75595 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B367FFFB289627AF00F75595 /* HISTORY.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = HISTORY.txt; sourceTree = ""; }; + B367FFFC289627AF00F75595 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B367FFFD289627AF00F75595 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B367FFFE289627AF00F75595 /* Makefile.wii */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.wii; sourceTree = ""; }; B3A9F41F1DE7EB67008450F5 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; B3E432041DE6917700D3C91E /* PVGenesis.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGenesis.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3E432061DE6917700D3C91E /* PVGenesis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGenesis.h; sourceTree = ""; }; B3E432071DE6917700D3C91E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3E432121DE6919B00D3C91E /* PVGenesis.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGenesis.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C66E09372586D34B00EA6170 /* scrc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = scrc32.c; sourceTree = ""; }; C66E09382586D34B00EA6170 /* scrc32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scrc32.h; sourceTree = ""; }; C66E093D2586D39D00EA6170 /* psg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = psg.c; sourceTree = ""; }; @@ -302,31 +847,30 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B3E432001DE6917700D3C91E /* Frameworks */ = { + B3670000289627E800F75595 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B36700752896290E00F75595 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B324C63621920D6D009F4EDC /* PVSupport.framework in Frameworks */, - B3A9F4201DE7EB67008450F5 /* libz.tbd in Frameworks */, - B373033E1DE7DB8800D0B366 /* Foundation.framework in Frameworks */, - B373033D1DE7DB8300D0B366 /* UIKit.framework in Frameworks */, - B373033C1DE7DB7A00D0B366 /* OpenGLES.framework in Frameworks */, - B373033B1DE7DB7300D0B366 /* AudioToolbox.framework in Frameworks */, - B373033A1DE7DB6F00D0B366 /* CoreGraphics.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3E4320E1DE6919B00D3C91E /* Frameworks */ = { + B3E432001DE6917700D3C91E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B324C63421920D5C009F4EDC /* PVSupport.framework in Frameworks */, - B3A9F4211DE7EBF8008450F5 /* libz.tbd in Frameworks */, - B37303431DE7DBF000D0B366 /* CoreGraphics.framework in Frameworks */, - B37303421DE7DBB600D0B366 /* AudioToolbox.framework in Frameworks */, - B37303411DE7DBAF00D0B366 /* OpenGLES.framework in Frameworks */, - B37303401DE7DBA700D0B366 /* UIKit.framework in Frameworks */, - B373033F1DE7DBA300D0B366 /* Foundation.framework in Frameworks */, + B381A27629262E6600305322 /* libgenesisPlusGX-legacy.a in Frameworks */, + B324C63621920D6D009F4EDC /* PVSupport.framework in Frameworks */, + B3A9F4201DE7EB67008450F5 /* libz.tbd in Frameworks */, + B373033E1DE7DB8800D0B366 /* Foundation.framework in Frameworks */, + B373033B1DE7DB7300D0B366 /* AudioToolbox.framework in Frameworks */, + B373033A1DE7DB6F00D0B366 /* CoreGraphics.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -347,7 +891,8 @@ isa = PBXGroup; children = ( B3E432041DE6917700D3C91E /* PVGenesis.framework */, - B3E432121DE6919B00D3C91E /* PVGenesis.framework */, + B3670003289627E800F75595 /* libgenesisPlusGX.a */, + B367007B2896290E00F75595 /* libgenesisPlusGX-legacy.a */, ); name = Products; sourceTree = ""; @@ -370,6 +915,7 @@ 1ACEA6B117F74D150031B1C9 /* PVGenesis */ = { isa = PBXGroup; children = ( + B3FBCB5E2896266E00B7A486 /* Deps */, 1ACEA6E517F752600031B1C9 /* Genesis */, 1ACEA6B217F74D150031B1C9 /* Supporting Files */, ); @@ -397,9 +943,6 @@ 1ACEA6E617F752600031B1C9 /* GenesisCore */ = { isa = PBXGroup; children = ( - 1ACEA6E717F752600031B1C9 /* genplusgx_source */, - 1ACEA85A17F752610031B1C9 /* libretro */, - 1ACEA8D117F75B8A0031B1C9 /* other */, B326758227B1C5BB0033C5D1 /* GenesisOptions.swift */, ); path = GenesisCore; @@ -408,36 +951,36 @@ 1ACEA6E717F752600031B1C9 /* genplusgx_source */ = { isa = PBXGroup; children = ( - 1ACEA6E817F752600031B1C9 /* cart_hw */, - 1ACEA70017F752600031B1C9 /* cd_hw */, 1ACEA70D17F752600031B1C9 /* genesis.c */, + 1ACEA7BE17F752600031B1C9 /* io_ctrl.c */, + 1ACEA7C017F752600031B1C9 /* loadrom.c */, + 1ACEA7CF17F752600031B1C9 /* mem68k.c */, + 1ACEA7D117F752600031B1C9 /* membnk.c */, + 1ACEA7D317F752600031B1C9 /* memz80.c */, + 1ACEA7F017F752600031B1C9 /* state.c */, + 1ACEA7F217F752600031B1C9 /* system.c */, + 1ACEA84017F752610031B1C9 /* vdp_ctrl.c */, + 1ACEA84217F752610031B1C9 /* vdp_render.c */, 1ACEA70E17F752600031B1C9 /* genesis.h */, 1ACEA7A817F752600031B1C9 /* hvc.h */, - 1ACEA7A917F752600031B1C9 /* input_hw */, - 1ACEA7BE17F752600031B1C9 /* io_ctrl.c */, 1ACEA7BF17F752600031B1C9 /* io_ctrl.h */, - 1ACEA7C017F752600031B1C9 /* loadrom.c */, 1ACEA7C117F752600031B1C9 /* loadrom.h */, - 1ACEA7C217F752600031B1C9 /* m68k */, 1ACEA7CE17F752600031B1C9 /* macros.h */, - 1ACEA7CF17F752600031B1C9 /* mem68k.c */, 1ACEA7D017F752600031B1C9 /* mem68k.h */, - 1ACEA7D117F752600031B1C9 /* membnk.c */, 1ACEA7D217F752600031B1C9 /* membnk.h */, - 1ACEA7D317F752600031B1C9 /* memz80.c */, 1ACEA7D417F752600031B1C9 /* memz80.h */, - 1ACEA7D517F752600031B1C9 /* ntsc */, 1ACEA7E217F752600031B1C9 /* shared.h */, - 1ACEA7E317F752600031B1C9 /* sound */, - 1ACEA7F017F752600031B1C9 /* state.c */, 1ACEA7F117F752600031B1C9 /* state.h */, - 1ACEA7F217F752600031B1C9 /* system.c */, 1ACEA7F317F752600031B1C9 /* system.h */, 1ACEA81B17F752600031B1C9 /* types.h */, - 1ACEA84017F752610031B1C9 /* vdp_ctrl.c */, 1ACEA84117F752610031B1C9 /* vdp_ctrl.h */, - 1ACEA84217F752610031B1C9 /* vdp_render.c */, 1ACEA84317F752610031B1C9 /* vdp_render.h */, + 1ACEA6E817F752600031B1C9 /* cart_hw */, + 1ACEA70017F752600031B1C9 /* cd_hw */, + 1ACEA7A917F752600031B1C9 /* input_hw */, + 1ACEA7C217F752600031B1C9 /* m68k */, + 1ACEA7D517F752600031B1C9 /* ntsc */, + 1ACEA7E317F752600031B1C9 /* sound */, 1ACEA85617F752610031B1C9 /* z80 */, ); path = genplusgx_source; @@ -447,20 +990,20 @@ isa = PBXGroup; children = ( 1ACEA6E917F752600031B1C9 /* areplay.c */, - 1ACEA6EA17F752600031B1C9 /* areplay.h */, 1ACEA6EB17F752600031B1C9 /* eeprom_93c.c */, - 1ACEA6EC17F752600031B1C9 /* eeprom_93c.h */, 1ACEA6ED17F752600031B1C9 /* eeprom_i2c.c */, - 1ACEA6EE17F752600031B1C9 /* eeprom_i2c.h */, 1ACEA6EF17F752600031B1C9 /* eeprom_spi.c */, - 1ACEA6F017F752600031B1C9 /* eeprom_spi.h */, 1ACEA6F117F752600031B1C9 /* ggenie.c */, - 1ACEA6F217F752600031B1C9 /* ggenie.h */, 1ACEA6F317F752600031B1C9 /* md_cart.c */, - 1ACEA6F417F752600031B1C9 /* md_cart.h */, 1ACEA6F517F752600031B1C9 /* sms_cart.c */, - 1ACEA6F617F752600031B1C9 /* sms_cart.h */, 1ACEA6F717F752600031B1C9 /* sram.c */, + 1ACEA6EA17F752600031B1C9 /* areplay.h */, + 1ACEA6EC17F752600031B1C9 /* eeprom_93c.h */, + 1ACEA6EE17F752600031B1C9 /* eeprom_i2c.h */, + 1ACEA6F017F752600031B1C9 /* eeprom_spi.h */, + 1ACEA6F217F752600031B1C9 /* ggenie.h */, + 1ACEA6F417F752600031B1C9 /* md_cart.h */, + 1ACEA6F617F752600031B1C9 /* sms_cart.h */, 1ACEA6F817F752600031B1C9 /* sram.h */, 1ACEA6F917F752600031B1C9 /* svp */, ); @@ -484,16 +1027,16 @@ isa = PBXGroup; children = ( 1ACEA70117F752600031B1C9 /* cd_cart.c */, - 1ACEA70217F752600031B1C9 /* cd_cart.h */, 1ACEA70317F752600031B1C9 /* cdc.c */, - 1ACEA70417F752600031B1C9 /* cdc.h */, 1ACEA70517F752600031B1C9 /* cdd.c */, - 1ACEA70617F752600031B1C9 /* cdd.h */, 1ACEA70717F752600031B1C9 /* gfx.c */, - 1ACEA70817F752600031B1C9 /* gfx.h */, 1ACEA70917F752600031B1C9 /* pcm.c */, - 1ACEA70A17F752600031B1C9 /* pcm.h */, 1ACEA70B17F752600031B1C9 /* scd.c */, + 1ACEA70217F752600031B1C9 /* cd_cart.h */, + 1ACEA70417F752600031B1C9 /* cdc.h */, + 1ACEA70617F752600031B1C9 /* cdd.h */, + 1ACEA70817F752600031B1C9 /* gfx.h */, + 1ACEA70A17F752600031B1C9 /* pcm.h */, 1ACEA70C17F752600031B1C9 /* scd.h */, ); path = cd_hw; @@ -502,28 +1045,28 @@ 1ACEA7A917F752600031B1C9 /* input_hw */ = { isa = PBXGroup; children = ( + 1ACEA7AA17F752600031B1C9 /* activator.c */, + 1ACEA7AC17F752600031B1C9 /* gamepad.c */, C66E09572586D65F00EA6170 /* graphic_board.c */, - C66E09562586D65F00EA6170 /* graphic_board.h */, + 1ACEA7AE17F752600031B1C9 /* input.c */, + 1ACEA7B017F752600031B1C9 /* lightgun.c */, + 1ACEA7B217F752600031B1C9 /* mouse.c */, + 1ACEA7B417F752600031B1C9 /* paddle.c */, + 1ACEA7B617F752600031B1C9 /* sportspad.c */, + 1ACEA7B817F752600031B1C9 /* teamplayer.c */, + 1ACEA7BA17F752600031B1C9 /* terebi_oekaki.c */, C66E094F2586D47000EA6170 /* xe_1ap.c */, - C66E09502586D47000EA6170 /* xe_1ap.h */, - 1ACEA7AA17F752600031B1C9 /* activator.c */, 1ACEA7AB17F752600031B1C9 /* activator.h */, - 1ACEA7AC17F752600031B1C9 /* gamepad.c */, 1ACEA7AD17F752600031B1C9 /* gamepad.h */, - 1ACEA7AE17F752600031B1C9 /* input.c */, + C66E09562586D65F00EA6170 /* graphic_board.h */, 1ACEA7AF17F752600031B1C9 /* input.h */, - 1ACEA7B017F752600031B1C9 /* lightgun.c */, 1ACEA7B117F752600031B1C9 /* lightgun.h */, - 1ACEA7B217F752600031B1C9 /* mouse.c */, 1ACEA7B317F752600031B1C9 /* mouse.h */, - 1ACEA7B417F752600031B1C9 /* paddle.c */, 1ACEA7B517F752600031B1C9 /* paddle.h */, - 1ACEA7B617F752600031B1C9 /* sportspad.c */, 1ACEA7B717F752600031B1C9 /* sportspad.h */, - 1ACEA7B817F752600031B1C9 /* teamplayer.c */, 1ACEA7B917F752600031B1C9 /* teamplayer.h */, - 1ACEA7BA17F752600031B1C9 /* terebi_oekaki.c */, 1ACEA7BB17F752600031B1C9 /* terebi_oekaki.h */, + C66E09502586D47000EA6170 /* xe_1ap.h */, ); path = input_hw; sourceTree = ""; @@ -531,17 +1074,17 @@ 1ACEA7C217F752600031B1C9 /* m68k */ = { isa = PBXGroup; children = ( + 1ACEA7C517F752600031B1C9 /* m68kcpu.c */, + 1ACEA7CC17F752600031B1C9 /* s68kcpu.c */, 1ACEA7C317F752600031B1C9 /* m68k.h */, 1ACEA7C417F752600031B1C9 /* m68kconf.h */, - 1ACEA7C517F752600031B1C9 /* m68kcpu.c */, 1ACEA7C617F752600031B1C9 /* m68kcpu.h */, 1ACEA7C717F752600031B1C9 /* m68ki_cycles.h */, 1ACEA7C817F752600031B1C9 /* m68ki_instruction_jump_table.h */, 1ACEA7C917F752600031B1C9 /* m68kops.h */, - 1ACEA7CA17F752600031B1C9 /* readme.txt */, 1ACEA7CB17F752600031B1C9 /* s68kconf.h */, - 1ACEA7CC17F752600031B1C9 /* s68kcpu.c */, 1ACEA7CD17F752600031B1C9 /* s68ki_cycles.h */, + 1ACEA7CA17F752600031B1C9 /* readme.txt */, ); path = m68k; sourceTree = ""; @@ -549,18 +1092,18 @@ 1ACEA7D517F752600031B1C9 /* ntsc */ = { isa = PBXGroup; children = ( - 1ACEA7D617F752600031B1C9 /* changes.txt */, - 1ACEA7D717F752600031B1C9 /* license.txt */, 1ACEA7D817F752600031B1C9 /* md_ntsc.c */, - 1ACEA7D917F752600031B1C9 /* md_ntsc.h */, + 1ACEA7DD17F752600031B1C9 /* sms_ntsc.c */, 1ACEA7DA17F752600031B1C9 /* md_ntsc_config.h */, 1ACEA7DB17F752600031B1C9 /* md_ntsc_impl.h */, - 1ACEA7DC17F752600031B1C9 /* readme.txt */, - 1ACEA7DD17F752600031B1C9 /* sms_ntsc.c */, - 1ACEA7DE17F752600031B1C9 /* sms_ntsc.h */, - 1ACEA7DF17F752600031B1C9 /* sms_ntsc.txt */, + 1ACEA7D917F752600031B1C9 /* md_ntsc.h */, 1ACEA7E017F752600031B1C9 /* sms_ntsc_config.h */, 1ACEA7E117F752600031B1C9 /* sms_ntsc_impl.h */, + 1ACEA7DE17F752600031B1C9 /* sms_ntsc.h */, + 1ACEA7D617F752600031B1C9 /* changes.txt */, + 1ACEA7D717F752600031B1C9 /* license.txt */, + 1ACEA7DC17F752600031B1C9 /* readme.txt */, + 1ACEA7DF17F752600031B1C9 /* sms_ntsc.txt */, ); path = ntsc; sourceTree = ""; @@ -568,22 +1111,22 @@ 1ACEA7E317F752600031B1C9 /* sound */ = { isa = PBXGroup; children = ( + 1ACEA7E417F752600031B1C9 /* blip_buf.c */, + 1ACEA7E617F752600031B1C9 /* eq.c */, C66E09402586D39D00EA6170 /* opll.c */, - C66E093E2586D39D00EA6170 /* opll.h */, C66E093D2586D39D00EA6170 /* psg.c */, - C66E093F2586D39D00EA6170 /* psg.h */, + 1ACEA7EA17F752600031B1C9 /* sound.c */, + 1ACEA7EC17F752600031B1C9 /* ym2413.c */, + 1ACEA7EE17F752600031B1C9 /* ym2612.c */, C66E09422586D39D00EA6170 /* ym3438.c */, - C66E09412586D39D00EA6170 /* ym3438.h */, - 1ACEA7E417F752600031B1C9 /* blip_buf.c */, 1ACEA7E517F752600031B1C9 /* blip_buf.h */, - 1ACEA7E617F752600031B1C9 /* eq.c */, 1ACEA7E717F752600031B1C9 /* eq.h */, - 1ACEA7EA17F752600031B1C9 /* sound.c */, + C66E093E2586D39D00EA6170 /* opll.h */, + C66E093F2586D39D00EA6170 /* psg.h */, 1ACEA7EB17F752600031B1C9 /* sound.h */, - 1ACEA7EC17F752600031B1C9 /* ym2413.c */, 1ACEA7ED17F752600031B1C9 /* ym2413.h */, - 1ACEA7EE17F752600031B1C9 /* ym2612.c */, 1ACEA7EF17F752600031B1C9 /* ym2612.h */, + C66E09412586D39D00EA6170 /* ym3438.h */, ); path = sound; sourceTree = ""; @@ -620,127 +1163,1175 @@ path = other; sourceTree = ""; }; - B3E432051DE6917700D3C91E /* PVGenesis */ = { + B367FDA3289627AB00F75595 /* Genesis-Plus-GX */ = { isa = PBXGroup; children = ( - B3547B562058589900CFF7D8 /* Core.plist */, - B3E432061DE6917700D3C91E /* PVGenesis.h */, - B3E432071DE6917700D3C91E /* Info.plist */, + B367FF11289627AD00F75595 /* .gitignore */, + B367FDA4289627AB00F75595 /* Makefile.gc */, + B367FEB7289627AD00F75595 /* Makefile.libretro */, + B367FEB6289627AD00F75595 /* README.md */, + B367FFFB289627AF00F75595 /* HISTORY.txt */, + B367FFFC289627AF00F75595 /* LICENSE.txt */, + B367FFFE289627AF00F75595 /* Makefile.wii */, + B367FFFD289627AF00F75595 /* .travis.yml */, + B367FECA289627AD00F75595 /* appveyor.yml */, + B367FEB2289627AD00F75595 /* builds */, + B367FDA5289627AB00F75595 /* core */, + B367FFDB289627AF00F75595 /* gcw0 */, + B367FF36289627AD00F75595 /* gx */, + B367FECB289627AD00F75595 /* libretro */, + B367FEB8289627AD00F75595 /* psp2 */, + B367FF12289627AD00F75595 /* sdl */, ); - path = PVGenesis; + path = "Genesis-Plus-GX"; sourceTree = ""; }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - B3E432011DE6917700D3C91E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C66E09582586D66000EA6170 /* graphic_board.h in Headers */, - C66E09452586D39E00EA6170 /* opll.h in Headers */, - B3E432081DE6917700D3C91E /* PVGenesis.h in Headers */, - B3A9F4241DE7F606008450F5 /* PVGenesisEmulatorCore.h in Headers */, - C66E09472586D39E00EA6170 /* psg.h in Headers */, - C66E09532586D47000EA6170 /* xe_1ap.h in Headers */, - C66E093B2586D34B00EA6170 /* scrc32.h in Headers */, - B3A9F4221DE7F5F2008450F5 /* libretro.h in Headers */, - C66E094B2586D39E00EA6170 /* ym3438.h in Headers */, + B367FDA5289627AB00F75595 /* core */ = { + isa = PBXGroup; + children = ( + B367FDFF289627AC00F75595 /* genesis.c */, + B367FE97289627AC00F75595 /* io_ctrl.c */, + B367FEAD289627AD00F75595 /* loadrom.c */, + B367FE98289627AC00F75595 /* mem68k.c */, + B367FEAE289627AD00F75595 /* membnk.c */, + B367FE99289627AC00F75595 /* memz80.c */, + B367FE05289627AC00F75595 /* state.c */, + B367FE08289627AC00F75595 /* system.c */, + B367FE9A289627AC00F75595 /* vdp_ctrl.c */, + B367FE79289627AC00F75595 /* vdp_render.c */, + B367FE95289627AC00F75595 /* genesis.h */, + B367FE78289627AC00F75595 /* hvc.h */, + B367FE07289627AC00F75595 /* io_ctrl.h */, + B367FE0C289627AC00F75595 /* loadrom.h */, + B367FE94289627AC00F75595 /* macros.h */, + B367FE06289627AC00F75595 /* mem68k.h */, + B367FE0B289627AC00F75595 /* membnk.h */, + B367FE0A289627AC00F75595 /* memz80.h */, + B367FDDA289627AB00F75595 /* shared.h */, + B367FE9B289627AC00F75595 /* state.h */, + B367FE96289627AC00F75595 /* system.h */, + B367FE00289627AC00F75595 /* types.h */, + B367FE09289627AC00F75595 /* vdp_ctrl.h */, + B367FDD9289627AB00F75595 /* vdp_render.h */, + B367FE7A289627AC00F75595 /* cart_hw */, + B367FE0D289627AC00F75595 /* cd_hw */, + B367FEAF289627AD00F75595 /* debug */, + B367FDE8289627AB00F75595 /* input_hw */, + B367FDA6289627AB00F75595 /* m68k */, + B367FDDB289627AB00F75595 /* ntsc */, + B367FE9C289627AC00F75595 /* sound */, + B367FDB2289627AB00F75595 /* tremor */, + B367FE01289627AC00F75595 /* z80 */, ); - runOnlyForDeploymentPostprocessing = 0; + path = core; + sourceTree = ""; }; - B3E4320F1DE6919B00D3C91E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C66E09592586D66000EA6170 /* graphic_board.h in Headers */, - C66E09462586D39E00EA6170 /* opll.h in Headers */, - B3A9F4261DE864BC008450F5 /* PVGenesis.h in Headers */, - B37303481DE7DE8200D0B366 /* PVGenesisEmulatorCore.h in Headers */, - C66E09482586D39E00EA6170 /* psg.h in Headers */, - C66E09542586D47000EA6170 /* xe_1ap.h in Headers */, - C66E093C2586D34B00EA6170 /* scrc32.h in Headers */, - B3A9F4231DE7F5FA008450F5 /* libretro.h in Headers */, - C66E094C2586D39E00EA6170 /* ym3438.h in Headers */, + B367FDA6289627AB00F75595 /* m68k */ = { + isa = PBXGroup; + children = ( + B367FDAB289627AB00F75595 /* m68kcpu.c */, + B367FDAC289627AB00F75595 /* s68kcpu.c */, + B367FDA8289627AB00F75595 /* m68k.h */, + B367FDAF289627AB00F75595 /* m68kconf.h */, + B367FDAE289627AB00F75595 /* m68kcpu.h */, + B367FDA9289627AB00F75595 /* m68ki_cycles.h */, + B367FDAA289627AB00F75595 /* m68ki_instruction_jump_table.h */, + B367FDB1289627AB00F75595 /* m68kops.h */, + B367FDAD289627AB00F75595 /* s68kconf.h */, + B367FDA7289627AB00F75595 /* s68ki_cycles.h */, + B367FDB0289627AB00F75595 /* readme.txt */, ); - runOnlyForDeploymentPostprocessing = 0; + path = m68k; + sourceTree = ""; }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - B3E432031DE6917700D3C91E /* PVGenesis-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3E432091DE6917700D3C91E /* Build configuration list for PBXNativeTarget "PVGenesis-iOS" */; - buildPhases = ( - B3E432011DE6917700D3C91E /* Headers */, - B3E431FF1DE6917700D3C91E /* Sources */, - B3E432001DE6917700D3C91E /* Frameworks */, - B3E432021DE6917700D3C91E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( + B367FDB2289627AB00F75595 /* tremor */ = { + isa = PBXGroup; + children = ( + B367FDB9289627AB00F75595 /* CHANGELOG */, + B367FDC9289627AB00F75595 /* COPYING */, + B367FDC4289627AB00F75595 /* README */, + B367FDD3289627AB00F75595 /* bitwise.c */, + B367FDB6289627AB00F75595 /* block.c */, + B367FDC0289627AB00F75595 /* codebook.c */, + B367FDC1289627AB00F75595 /* floor0.c */, + B367FDCD289627AB00F75595 /* floor1.c */, + B367FDB7289627AB00F75595 /* framing.c */, + B367FDBB289627AB00F75595 /* info.c */, + B367FDD1289627AB00F75595 /* mapping0.c */, + B367FDBD289627AB00F75595 /* mdct.c */, + B367FDD4289627AB00F75595 /* registry.c */, + B367FDC7289627AB00F75595 /* res012.c */, + B367FDCB289627AB00F75595 /* sharedbook.c */, + B367FDCE289627AB00F75595 /* synthesis.c */, + B367FDD5289627AB00F75595 /* vorbisfile.c */, + B367FDD6289627AB00F75595 /* window.c */, + B367FDB3289627AB00F75595 /* asm_arm.h */, + B367FDC2289627AB00F75595 /* backends.h */, + B367FDCF289627AB00F75595 /* block.h */, + B367FDD8289627AB00F75595 /* codebook.h */, + B367FDD7289627AB00F75595 /* codec_internal.h */, + B367FDCA289627AB00F75595 /* config_types.h */, + B367FDB5289627AB00F75595 /* ivorbiscodec.h */, + B367FDC8289627AB00F75595 /* ivorbisfile.h */, + B367FDBC289627AB00F75595 /* lsp_lookup.h */, + B367FDB8289627AB00F75595 /* mdct_lookup.h */, + B367FDD0289627AB00F75595 /* mdct.h */, + B367FDBA289627AB00F75595 /* misc.h */, + B367FDB4289627AB00F75595 /* ogg.h */, + B367FDD2289627AB00F75595 /* os_types.h */, + B367FDBE289627AB00F75595 /* os.h */, + B367FDC3289627AB00F75595 /* registry.h */, + B367FDC6289627AB00F75595 /* window_lookup.h */, + B367FDBF289627AB00F75595 /* window.h */, + B367FDC5289627AB00F75595 /* configure.in */, + B367FDCC289627AB00F75595 /* Version_script.in */, ); - name = "PVGenesis-iOS"; - productName = PVGenesis; - productReference = B3E432041DE6917700D3C91E /* PVGenesis.framework */; - productType = "com.apple.product-type.framework"; + path = tremor; + sourceTree = ""; }; - B3E432111DE6919B00D3C91E /* PVGenesis-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3E432171DE6919B00D3C91E /* Build configuration list for PBXNativeTarget "PVGenesis-tvOS" */; - buildPhases = ( - B3E4320F1DE6919B00D3C91E /* Headers */, - B3E4320D1DE6919B00D3C91E /* Sources */, - B3E4320E1DE6919B00D3C91E /* Frameworks */, - B3E432101DE6919B00D3C91E /* Resources */, + B367FDDB289627AB00F75595 /* ntsc */ = { + isa = PBXGroup; + children = ( + B367FDDC289627AB00F75595 /* md_ntsc.c */, + B367FDDE289627AB00F75595 /* sms_ntsc.c */, + B367FDE2289627AB00F75595 /* md_ntsc_config.h */, + B367FDE3289627AB00F75595 /* md_ntsc_impl.h */, + B367FDE1289627AB00F75595 /* md_ntsc.h */, + B367FDDF289627AB00F75595 /* sms_ntsc_config.h */, + B367FDDD289627AB00F75595 /* sms_ntsc_impl.h */, + B367FDE7289627AB00F75595 /* sms_ntsc.h */, + B367FDE0289627AB00F75595 /* changes.txt */, + B367FDE5289627AB00F75595 /* license.txt */, + B367FDE4289627AB00F75595 /* readme.txt */, + B367FDE6289627AB00F75595 /* sms_ntsc.txt */, ); - buildRules = ( + path = ntsc; + sourceTree = ""; + }; + B367FDE8289627AB00F75595 /* input_hw */ = { + isa = PBXGroup; + children = ( + B367FDF9289627AC00F75595 /* activator.c */, + B367FDF2289627AB00F75595 /* gamepad.c */, + B367FDF0289627AB00F75595 /* graphic_board.c */, + B367FDF6289627AB00F75595 /* input.c */, + B367FDEF289627AB00F75595 /* lightgun.c */, + B367FDEC289627AB00F75595 /* mouse.c */, + B367FDF3289627AB00F75595 /* paddle.c */, + B367FDF5289627AB00F75595 /* sportspad.c */, + B367FDF7289627AB00F75595 /* teamplayer.c */, + B367FDF8289627AB00F75595 /* terebi_oekaki.c */, + B367FDFC289627AC00F75595 /* xe_1ap.c */, + B367FDEE289627AB00F75595 /* activator.h */, + B367FDFE289627AC00F75595 /* gamepad.h */, + B367FDFA289627AC00F75595 /* graphic_board.h */, + B367FDEB289627AB00F75595 /* input.h */, + B367FDFB289627AC00F75595 /* lightgun.h */, + B367FDF4289627AB00F75595 /* mouse.h */, + B367FDFD289627AC00F75595 /* paddle.h */, + B367FDED289627AB00F75595 /* sportspad.h */, + B367FDEA289627AB00F75595 /* teamplayer.h */, + B367FDE9289627AB00F75595 /* terebi_oekaki.h */, + B367FDF1289627AB00F75595 /* xe_1ap.h */, ); - dependencies = ( + path = input_hw; + sourceTree = ""; + }; + B367FE01289627AC00F75595 /* z80 */ = { + isa = PBXGroup; + children = ( + B367FE02289627AC00F75595 /* z80.c */, + B367FE03289627AC00F75595 /* osd_cpu.h */, + B367FE04289627AC00F75595 /* z80.h */, ); - name = "PVGenesis-tvOS"; - productName = PVGenesisTV; - productReference = B3E432121DE6919B00D3C91E /* PVGenesis.framework */; - productType = "com.apple.product-type.framework"; + path = z80; + sourceTree = ""; }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 1ACEA6A417F74D140031B1C9 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - CLASSPREFIX = PV; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = "Provenance Emu"; - TargetAttributes = { - B3E432031DE6917700D3C91E = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 1320; - ProvisioningStyle = Manual; - }; - B3E432111DE6919B00D3C91E = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 1320; - }; - }; - }; - buildConfigurationList = 1ACEA6A717F74D140031B1C9 /* Build configuration list for PBXProject "PVGenesis" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, + B367FE0D289627AC00F75595 /* cd_hw */ = { + isa = PBXGroup; + children = ( + B367FE71289627AC00F75595 /* cd_cart.c */, + B367FE72289627AC00F75595 /* cdc.c */, + B367FE76289627AC00F75595 /* cdd.c */, + B367FE0E289627AC00F75595 /* gfx.c */, + B367FE12289627AC00F75595 /* pcm.c */, + B367FE0F289627AC00F75595 /* scd.c */, + B367FE77289627AC00F75595 /* cd_cart.h */, + B367FE10289627AC00F75595 /* cdc.h */, + B367FE11289627AC00F75595 /* cdd.h */, + B367FE74289627AC00F75595 /* gfx.h */, + B367FE75289627AC00F75595 /* pcm.h */, + B367FE73289627AC00F75595 /* scd.h */, + B367FE13289627AC00F75595 /* libchdr */, ); - mainGroup = 1ACEA6A317F74D140031B1C9; - productRefGroup = 1ACEA6AD17F74D150031B1C9 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - B3E432031DE6917700D3C91E /* PVGenesis-iOS */, - B3E432111DE6919B00D3C91E /* PVGenesis-tvOS */, + path = cd_hw; + sourceTree = ""; + }; + B367FE13289627AC00F75595 /* libchdr */ = { + isa = PBXGroup; + children = ( + B367FE14289627AC00F75595 /* README.md */, + B367FE15289627AC00F75595 /* deps */, + B367FE64289627AC00F75595 /* LICENSE.txt */, + B367FE65289627AC00F75595 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B367FE15289627AC00F75595 /* deps */ = { + isa = PBXGroup; + children = ( + B367FE16289627AC00F75595 /* libFLAC */, + B367FE44289627AC00F75595 /* zlib */, + B367FE54289627AC00F75595 /* lzma */, + ); + path = deps; + sourceTree = ""; + }; + B367FE16289627AC00F75595 /* libFLAC */ = { + isa = PBXGroup; + children = ( + B367FE17289627AC00F75595 /* COPYING.Xiph */, + B367FE18289627AC00F75595 /* memory.c */, + B367FE19289627AC00F75595 /* cpu.c */, + B367FE1A289627AC00F75595 /* AUTHORS */, + B367FE1B289627AC00F75595 /* format.c */, + B367FE1C289627AC00F75595 /* lpc_intrin_sse41.c */, + B367FE1D289627AC00F75595 /* stream_decoder.c */, + B367FE1E289627AC00F75595 /* include */, + B367FE39289627AC00F75595 /* lpc_intrin_sse.c */, + B367FE3A289627AC00F75595 /* bitmath.c */, + B367FE3B289627AC00F75595 /* bitreader.c */, + B367FE3C289627AC00F75595 /* README */, + B367FE3D289627AC00F75595 /* lpc_intrin_sse2.c */, + B367FE3E289627AC00F75595 /* fixed.c */, + B367FE3F289627AC00F75595 /* float.c */, + B367FE40289627AC00F75595 /* md5.c */, + B367FE41289627AC00F75595 /* crc.c */, + B367FE42289627AC00F75595 /* lpc.c */, + B367FE43289627AC00F75595 /* lpc_intrin_avx2.c */, + ); + path = libFLAC; + sourceTree = ""; + }; + B367FE1E289627AC00F75595 /* include */ = { + isa = PBXGroup; + children = ( + B367FE1F289627AC00F75595 /* FLAC */, + B367FE27289627AC00F75595 /* private */, + B367FE33289627AC00F75595 /* protected */, + B367FE35289627AC00F75595 /* share */, + ); + path = include; + sourceTree = ""; + }; + B367FE1F289627AC00F75595 /* FLAC */ = { + isa = PBXGroup; + children = ( + B367FE20289627AC00F75595 /* export.h */, + B367FE21289627AC00F75595 /* ordinals.h */, + B367FE22289627AC00F75595 /* metadata.h */, + B367FE23289627AC00F75595 /* format.h */, + B367FE24289627AC00F75595 /* stream_decoder.h */, + B367FE25289627AC00F75595 /* assert.h */, + B367FE26289627AC00F75595 /* callback.h */, + ); + path = FLAC; + sourceTree = ""; + }; + B367FE27289627AC00F75595 /* private */ = { + isa = PBXGroup; + children = ( + B367FE28289627AC00F75595 /* float.h */, + B367FE29289627AC00F75595 /* fixed.h */, + B367FE2A289627AC00F75595 /* crc.h */, + B367FE2B289627AC00F75595 /* md5.h */, + B367FE2C289627AC00F75595 /* lpc.h */, + B367FE2D289627AC00F75595 /* macros.h */, + B367FE2E289627AC00F75595 /* cpu.h */, + B367FE2F289627AC00F75595 /* memory.h */, + B367FE30289627AC00F75595 /* format.h */, + B367FE31289627AC00F75595 /* bitreader.h */, + B367FE32289627AC00F75595 /* bitmath.h */, + ); + path = private; + sourceTree = ""; + }; + B367FE33289627AC00F75595 /* protected */ = { + isa = PBXGroup; + children = ( + B367FE34289627AC00F75595 /* stream_decoder.h */, + ); + path = protected; + sourceTree = ""; + }; + B367FE35289627AC00F75595 /* share */ = { + isa = PBXGroup; + children = ( + B367FE36289627AC00F75595 /* compat.h */, + B367FE37289627AC00F75595 /* endswap.h */, + B367FE38289627AC00F75595 /* alloc.h */, + ); + path = share; + sourceTree = ""; + }; + B367FE44289627AC00F75595 /* zlib */ = { + isa = PBXGroup; + children = ( + B367FE45289627AC00F75595 /* zutil.h */, + B367FE46289627AC00F75595 /* inftrees.h */, + B367FE47289627AC00F75595 /* inflate.c */, + B367FE48289627AC00F75595 /* ChangeLog */, + B367FE49289627AC00F75595 /* inffixed.h */, + B367FE4A289627AC00F75595 /* inffast.h */, + B367FE4B289627AC00F75595 /* README */, + B367FE4C289627AC00F75595 /* zutil.c */, + B367FE4D289627AC00F75595 /* gzguts.h */, + B367FE4E289627AC00F75595 /* zlib.h */, + B367FE4F289627AC00F75595 /* inflate.h */, + B367FE50289627AC00F75595 /* inftrees.c */, + B367FE51289627AC00F75595 /* inffast.c */, + B367FE52289627AC00F75595 /* adler32.c */, + B367FE53289627AC00F75595 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B367FE54289627AC00F75595 /* lzma */ = { + isa = PBXGroup; + children = ( + B367FE55289627AC00F75595 /* LzHash.h */, + B367FE56289627AC00F75595 /* LzmaEnc.c */, + B367FE57289627AC00F75595 /* 7zTypes.h */, + B367FE58289627AC00F75595 /* Compiler.h */, + B367FE59289627AC00F75595 /* LzFind.c */, + B367FE5A289627AC00F75595 /* Precomp.h */, + B367FE5B289627AC00F75595 /* LzmaDec.c */, + B367FE5C289627AC00F75595 /* LzmaEnc.h */, + B367FE5D289627AC00F75595 /* LzFind.h */, + B367FE5E289627AC00F75595 /* DOC */, + B367FE63289627AC00F75595 /* LzmaDec.h */, + ); + path = lzma; + sourceTree = ""; + }; + B367FE5E289627AC00F75595 /* DOC */ = { + isa = PBXGroup; + children = ( + B367FE5F289627AC00F75595 /* lzma-specification.txt */, + B367FE60289627AC00F75595 /* lzma.txt */, + B367FE61289627AC00F75595 /* lzma-sdk.txt */, + B367FE62289627AC00F75595 /* lzma-history.txt */, + ); + path = DOC; + sourceTree = ""; + }; + B367FE65289627AC00F75595 /* src */ = { + isa = PBXGroup; + children = ( + B367FE66289627AC00F75595 /* bitstream.c */, + B367FE67289627AC00F75595 /* cdrom.c */, + B367FE68289627AC00F75595 /* flac.h */, + B367FE69289627AC00F75595 /* chd.c */, + B367FE6A289627AC00F75595 /* huffman.c */, + B367FE6B289627AC00F75595 /* bitstream.h */, + B367FE6C289627AC00F75595 /* cdrom.h */, + B367FE6D289627AC00F75595 /* chd.h */, + B367FE6E289627AC00F75595 /* flac.c */, + B367FE6F289627AC00F75595 /* huffman.h */, + B367FE70289627AC00F75595 /* coretypes.h */, + ); + path = src; + sourceTree = ""; + }; + B367FE7A289627AC00F75595 /* cart_hw */ = { + isa = PBXGroup; + children = ( + B367FE91289627AC00F75595 /* areplay.c */, + B367FE7E289627AC00F75595 /* eeprom_93c.c */, + B367FE7D289627AC00F75595 /* eeprom_i2c.c */, + B367FE81289627AC00F75595 /* eeprom_spi.c */, + B367FE7F289627AC00F75595 /* ggenie.c */, + B367FE93289627AC00F75595 /* md_cart.c */, + B367FE80289627AC00F75595 /* megasd.c */, + B367FE8C289627AC00F75595 /* sms_cart.c */, + B367FE7B289627AC00F75595 /* sram.c */, + B367FE83289627AC00F75595 /* areplay.h */, + B367FE8E289627AC00F75595 /* eeprom_93c.h */, + B367FE8F289627AC00F75595 /* eeprom_i2c.h */, + B367FE92289627AC00F75595 /* eeprom_spi.h */, + B367FE8D289627AC00F75595 /* ggenie.h */, + B367FE82289627AC00F75595 /* md_cart.h */, + B367FE90289627AC00F75595 /* megasd.h */, + B367FE7C289627AC00F75595 /* sms_cart.h */, + B367FE8B289627AC00F75595 /* sram.h */, + B367FE84289627AC00F75595 /* svp */, + ); + path = cart_hw; + sourceTree = ""; + }; + B367FE84289627AC00F75595 /* svp */ = { + isa = PBXGroup; + children = ( + B367FE87289627AC00F75595 /* ssp16.c */, + B367FE86289627AC00F75595 /* svp.c */, + B367FE8A289627AC00F75595 /* ssp16.h */, + B367FE89289627AC00F75595 /* svp.h */, + B367FE88289627AC00F75595 /* imageformat.txt */, + B367FE85289627AC00F75595 /* svpdoc.txt */, + ); + path = svp; + sourceTree = ""; + }; + B367FE9C289627AC00F75595 /* sound */ = { + isa = PBXGroup; + children = ( + B367FEA3289627AD00F75595 /* blip_buf.c */, + B367FE9D289627AC00F75595 /* eq.c */, + B367FEAC289627AD00F75595 /* opll.c */, + B367FEA9289627AD00F75595 /* psg.c */, + B367FEA7289627AD00F75595 /* sound.c */, + B367FEA5289627AD00F75595 /* ym2413.c */, + B367FEA2289627AD00F75595 /* ym2612.c */, + B367FEA8289627AD00F75595 /* ym3438.c */, + B367FEAA289627AD00F75595 /* blip_buf.h */, + B367FEA6289627AD00F75595 /* eq.h */, + B367FEA1289627AD00F75595 /* opll.h */, + B367FEA4289627AD00F75595 /* psg.h */, + B367FE9E289627AC00F75595 /* sound.h */, + B367FE9F289627AD00F75595 /* ym2413.h */, + B367FEAB289627AD00F75595 /* ym2612.h */, + B367FEA0289627AD00F75595 /* ym3438.h */, + ); + path = sound; + sourceTree = ""; + }; + B367FEAF289627AD00F75595 /* debug */ = { + isa = PBXGroup; + children = ( + B367FEB0289627AD00F75595 /* cpuhook.c */, + B367FEB1289627AD00F75595 /* cpuhook.h */, + ); + path = debug; + sourceTree = ""; + }; + B367FEB2289627AD00F75595 /* builds */ = { + isa = PBXGroup; + children = ( + B367FEB3289627AD00F75595 /* genplus_cube.dol */, + B367FEB4289627AD00F75595 /* genesis_plus_gx_libretro.dll */, + B367FEB5289627AD00F75595 /* genplus_wii.dol */, + ); + path = builds; + sourceTree = ""; + }; + B367FEB8289627AD00F75595 /* psp2 */ = { + isa = PBXGroup; + children = ( + B367FEB9289627AD00F75595 /* main.h */, + B367FEBA289627AD00F75595 /* error.h */, + B367FEBB289627AD00F75595 /* fileio.c */, + B367FEBC289627AD00F75595 /* unzip.c */, + B367FEBD289627AD00F75595 /* db.json */, + B367FEBE289627AD00F75595 /* menu.c */, + B367FEBF289627AD00F75595 /* config.h */, + B367FEC0289627AD00F75595 /* Makefile */, + B367FEC1289627AD00F75595 /* emumain.c */, + B367FEC2289627AD00F75595 /* main.c */, + B367FEC3289627AD00F75595 /* error.c */, + B367FEC4289627AD00F75595 /* menu.h */, + B367FEC5289627AD00F75595 /* config.c */, + B367FEC6289627AD00F75595 /* fileio.h */, + B367FEC7289627AD00F75595 /* unzip.h */, + B367FEC8289627AD00F75595 /* osd.h */, + B367FEC9289627AD00F75595 /* emumain.h */, + ); + path = psp2; + sourceTree = ""; + }; + B367FECB289627AD00F75595 /* libretro */ = { + isa = PBXGroup; + children = ( + B367FECC289627AD00F75595 /* libretro.c */, + B367FF10289627AD00F75595 /* scrc32.c */, + B367FEDB289627AD00F75595 /* Makefile.common */, + B367FEDE289627AD00F75595 /* libretro_core_options_intl.h */, + B367FEDD289627AD00F75595 /* libretro_core_options.h */, + B367FF0C289627AD00F75595 /* osd.h */, + B367FEDC289627AD00F75595 /* scrc32.h */, + B367FF0B289627AD00F75595 /* link.T */, + B367FECD289627AD00F75595 /* debian */, + B367FF0D289627AD00F75595 /* jni */, + B367FED6289627AD00F75595 /* libretro_msvc */, + B367FEDF289627AD00F75595 /* libretro-common */, + ); + path = libretro; + sourceTree = ""; + }; + B367FECD289627AD00F75595 /* debian */ = { + isa = PBXGroup; + children = ( + B367FECE289627AD00F75595 /* compat */, + B367FECF289627AD00F75595 /* changelog */, + B367FED0289627AD00F75595 /* source */, + B367FED2289627AD00F75595 /* rules */, + B367FED3289627AD00F75595 /* copyright */, + B367FED4289627AD00F75595 /* dirs */, + B367FED5289627AD00F75595 /* control */, + ); + path = debian; + sourceTree = ""; + }; + B367FED0289627AD00F75595 /* source */ = { + isa = PBXGroup; + children = ( + B367FED1289627AD00F75595 /* format */, + ); + path = source; + sourceTree = ""; + }; + B367FED6289627AD00F75595 /* libretro_msvc */ = { + isa = PBXGroup; + children = ( + B367FED7289627AD00F75595 /* genesis_plus_gx_libretro.vcxproj.filters */, + B367FED8289627AD00F75595 /* libretro_msvc.sln */, + B367FED9289627AD00F75595 /* genesis_plus_gx_libretro.vcxproj.user */, + B367FEDA289627AD00F75595 /* genesis_plus_gx_libretro.vcxproj */, + ); + path = libretro_msvc; + sourceTree = ""; + }; + B367FEDF289627AD00F75595 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B367FEE0289627AD00F75595 /* encodings */, + B367FEE2289627AD00F75595 /* vfs */, + B367FEE4289627AD00F75595 /* compat */, + B367FEE7289627AD00F75595 /* streams */, + B367FEEA289627AD00F75595 /* include */, + B367FF09289627AD00F75595 /* memmap */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B367FEE0289627AD00F75595 /* encodings */ = { + isa = PBXGroup; + children = ( + B367FEE1289627AD00F75595 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B367FEE2289627AD00F75595 /* vfs */ = { + isa = PBXGroup; + children = ( + B367FEE3289627AD00F75595 /* vfs_implementation.c */, + ); + path = vfs; + sourceTree = ""; + }; + B367FEE4289627AD00F75595 /* compat */ = { + isa = PBXGroup; + children = ( + B367FEE5289627AD00F75595 /* compat_strl.c */, + B367FEE6289627AD00F75595 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B367FEE7289627AD00F75595 /* streams */ = { + isa = PBXGroup; + children = ( + B367FEE8289627AD00F75595 /* file_stream_transforms.c */, + B367FEE9289627AD00F75595 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B367FEEA289627AD00F75595 /* include */ = { + isa = PBXGroup; + children = ( + B367FEEB289627AD00F75595 /* encodings */, + B367FEED289627AD00F75595 /* vfs */, + B367FEEF289627AD00F75595 /* compat */, + B367FF00289627AD00F75595 /* retro_common_api.h */, + B367FF01289627AD00F75595 /* retro_inline.h */, + B367FF02289627AD00F75595 /* streams */, + B367FF05289627AD00F75595 /* boolean.h */, + B367FF06289627AD00F75595 /* memmap.h */, + B367FF07289627AD00F75595 /* libretro.h */, + B367FF08289627AD00F75595 /* retro_common.h */, + ); + path = include; + sourceTree = ""; + }; + B367FEEB289627AD00F75595 /* encodings */ = { + isa = PBXGroup; + children = ( + B367FEEC289627AD00F75595 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B367FEED289627AD00F75595 /* vfs */ = { + isa = PBXGroup; + children = ( + B367FEEE289627AD00F75595 /* vfs_implementation.h */, + ); + path = vfs; + sourceTree = ""; + }; + B367FEEF289627AD00F75595 /* compat */ = { + isa = PBXGroup; + children = ( + B367FEF0289627AD00F75595 /* apple_compat.h */, + B367FEF1289627AD00F75595 /* zutil.h */, + B367FEF2289627AD00F75595 /* strl.h */, + B367FEF3289627AD00F75595 /* strcasestr.h */, + B367FEF4289627AD00F75595 /* msvc */, + B367FEF6289627AD00F75595 /* fopen_utf8.h */, + B367FEF7289627AD00F75595 /* zconf.h.in */, + B367FEF8289627AD00F75595 /* intrinsics.h */, + B367FEF9289627AD00F75595 /* posix_string.h */, + B367FEFA289627AD00F75595 /* getopt.h */, + B367FEFB289627AD00F75595 /* fnmatch.h */, + B367FEFC289627AD00F75595 /* msvc.h */, + B367FEFD289627AD00F75595 /* zlib.h */, + B367FEFE289627AD00F75595 /* ifaddrs.h */, + B367FEFF289627AD00F75595 /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B367FEF4289627AD00F75595 /* msvc */ = { + isa = PBXGroup; + children = ( + B367FEF5289627AD00F75595 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B367FF02289627AD00F75595 /* streams */ = { + isa = PBXGroup; + children = ( + B367FF03289627AD00F75595 /* file_stream.h */, + B367FF04289627AD00F75595 /* file_stream_transforms.h */, + ); + path = streams; + sourceTree = ""; + }; + B367FF09289627AD00F75595 /* memmap */ = { + isa = PBXGroup; + children = ( + B367FF0A289627AD00F75595 /* memmap.c */, + ); + path = memmap; + sourceTree = ""; + }; + B367FF0D289627AD00F75595 /* jni */ = { + isa = PBXGroup; + children = ( + B367FF0E289627AD00F75595 /* Android.mk */, + B367FF0F289627AD00F75595 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B367FF12289627AD00F75595 /* sdl */ = { + isa = PBXGroup; + children = ( + B367FF13289627AD00F75595 /* error.h */, + B367FF14289627AD00F75595 /* fileio.c */, + B367FF15289627AD00F75595 /* unzip.c */, + B367FF16289627AD00F75595 /* config.h */, + B367FF17289627AD00F75595 /* readme-sdl.txt */, + B367FF18289627AD00F75595 /* Makefile.sdl1 */, + B367FF19289627AD00F75595 /* gx_vstudio */, + B367FF26289627AD00F75595 /* sdl1 */, + B367FF29289627AD00F75595 /* error.c */, + B367FF2A289627AD00F75595 /* md.ico */, + B367FF2B289627AD00F75595 /* config.c */, + B367FF2C289627AD00F75595 /* fileio.h */, + B367FF2D289627AD00F75595 /* unzip.h */, + B367FF2E289627AD00F75595 /* CHANGELOG.txt */, + B367FF2F289627AD00F75595 /* README.txt */, + B367FF30289627AD00F75595 /* Makefile.sdl2 */, + B367FF31289627AD00F75595 /* osd.h */, + B367FF32289627AD00F75595 /* sdl2 */, + B367FF35289627AD00F75595 /* icon.rc */, + ); + path = sdl; + sourceTree = ""; + }; + B367FF19289627AD00F75595 /* gx_vstudio */ = { + isa = PBXGroup; + children = ( + B367FF1A289627AD00F75595 /* gx_vstudio.vcxproj.user */, + B367FF1B289627AD00F75595 /* gx_vstudio.sln */, + B367FF1C289627AD00F75595 /* gx_vstudio.vcxproj */, + B367FF1D289627AD00F75595 /* deps */, + B367FF25289627AD00F75595 /* gx_vstudio.vcxproj.filters */, + ); + path = gx_vstudio; + sourceTree = ""; + }; + B367FF1D289627AD00F75595 /* deps */ = { + isa = PBXGroup; + children = ( + B367FF1E289627AD00F75595 /* zlib */, + B367FF23289627AD00F75595 /* SDL2 */, + ); + path = deps; + sourceTree = ""; + }; + B367FF1E289627AD00F75595 /* zlib */ = { + isa = PBXGroup; + children = ( + B367FF1F289627AD00F75595 /* x64 */, + B367FF21289627AD00F75595 /* x86 */, + ); + path = zlib; + sourceTree = ""; + }; + B367FF1F289627AD00F75595 /* x64 */ = { + isa = PBXGroup; + children = ( + B367FF20289627AD00F75595 /* .put_lib_files_here */, + ); + path = x64; + sourceTree = ""; + }; + B367FF21289627AD00F75595 /* x86 */ = { + isa = PBXGroup; + children = ( + B367FF22289627AD00F75595 /* .put_lib_files_here */, + ); + path = x86; + sourceTree = ""; + }; + B367FF23289627AD00F75595 /* SDL2 */ = { + isa = PBXGroup; + children = ( + B367FF24289627AD00F75595 /* .put_sdl2_devel_here */, + ); + path = SDL2; + sourceTree = ""; + }; + B367FF26289627AD00F75595 /* sdl1 */ = { + isa = PBXGroup; + children = ( + B367FF27289627AD00F75595 /* main.h */, + B367FF28289627AD00F75595 /* main.c */, + ); + path = sdl1; + sourceTree = ""; + }; + B367FF32289627AD00F75595 /* sdl2 */ = { + isa = PBXGroup; + children = ( + B367FF33289627AD00F75595 /* main.h */, + B367FF34289627AD00F75595 /* main.c */, + ); + path = sdl2; + sourceTree = ""; + }; + B367FF36289627AD00F75595 /* gx */ = { + isa = PBXGroup; + children = ( + B367FFCB289627AF00F75595 /* config.c */, + B367FFDA289627AF00F75595 /* gx_audio.c */, + B367FFC8289627AF00F75595 /* gx_input.c */, + B367FF39289627AD00F75595 /* gx_video.c */, + B367FFC9289627AF00F75595 /* main.c */, + B367FF38289627AD00F75595 /* config.h */, + B367FFB6289627AE00F75595 /* gx_audio.h */, + B367FF37289627AD00F75595 /* gx_input.h */, + B367FFCA289627AF00F75595 /* gx_video.h */, + B367FFD9289627AF00F75595 /* osd.h */, + B367FFC1289627AF00F75595 /* docs */, + B367FF3A289627AD00F75595 /* fileio */, + B367FFCC289627AF00F75595 /* gui */, + B367FF43289627AE00F75595 /* images */, + B367FFC4289627AF00F75595 /* sounds */, + B367FFB7289627AE00F75595 /* utils */, + ); + path = gx; + sourceTree = ""; + }; + B367FF3A289627AD00F75595 /* fileio */ = { + isa = PBXGroup; + children = ( + B367FF3B289627AD00F75595 /* file_slot.h */, + B367FF3C289627AD00F75595 /* history.c */, + B367FF3D289627AD00F75595 /* fileio.c */, + B367FF3E289627AD00F75595 /* file_load.c */, + B367FF3F289627AE00F75595 /* history.h */, + B367FF40289627AE00F75595 /* file_slot.c */, + B367FF41289627AE00F75595 /* file_load.h */, + B367FF42289627AE00F75595 /* fileio.h */, + ); + path = fileio; + sourceTree = ""; + }; + B367FF43289627AE00F75595 /* images */ = { + isa = PBXGroup; + children = ( + B367FF44289627AE00F75595 /* Key_B_gcn.png */, + B367FF45289627AE00F75595 /* Option_ctrl.png */, + B367FF46289627AE00F75595 /* Snap_empty.png */, + B367FF47289627AE00F75595 /* Button_sm_grey.png */, + B367FF48289627AE00F75595 /* Load_recent.png */, + B367FF49289627AE00F75595 /* Bg_layer.png */, + B367FF4A289627AE00F75595 /* Cart_ms.png */, + B367FF4B289627AE00F75595 /* Cart_md.png */, + B367FF4C289627AE00F75595 /* Browser_dir.png */, + B367FF4D289627AE00F75595 /* CD_ready_off.png */, + B367FF4E289627AE00F75595 /* Ctrl_justifiers.png */, + B367FF4F289627AE00F75595 /* Button_special.png */, + B367FF50289627AE00F75595 /* Option_sound.png */, + B367FF51289627AE00F75595 /* Main_load.png */, + B367FF52289627AE00F75595 /* Button_down.png */, + B367FF53289627AE00F75595 /* Ctrl_xe_1ap.png */, + B367FF54289627AE00F75595 /* Main_cheats.png */, + B367FF55289627AE00F75595 /* Main_play_gcn.png */, + B367FF56289627AE00F75595 /* Main_quit.png */, + B367FF57289627AE00F75595 /* Button_up_over.png */, + B367FF58289627AE00F75595 /* Ctrl_pad6b.png */, + B367FF59289627AE00F75595 /* Banner_main.png */, + B367FF5A289627AE00F75595 /* Button_sm_yellow.png */, + B367FF5B289627AE00F75595 /* Main_showinfo.png */, + B367FF5C289627AE00F75595 /* Cart_sg.png */, + B367FF5D289627AE00F75595 /* Frame_s1.png */, + B367FF5E289627AE00F75595 /* Key_A_gcn.png */, + B367FF5F289627AE00F75595 /* Ctrl_config.png */, + B367FF60289627AE00F75595 /* CD_ready_on.png */, + B367FF61289627AE00F75595 /* Frame_s3.png */, + B367FF62289627AE00F75595 /* ctrl_classic.png */, + B367FF63289627AE00F75595 /* Main_reset.png */, + B367FF64289627AE00F75595 /* Ctrl_graphic_board.png */, + B367FF65289627AE00F75595 /* Frame_s2.png */, + B367FF66289627AE00F75595 /* Key_Plus_wii.png */, + B367FF67289627AE00F75595 /* ctrl_wiiu.png */, + B367FF68289627AE00F75595 /* Banner_top.png */, + B367FF69289627AE00F75595 /* Button_arrow.png */, + B367FF6A289627AE00F75595 /* Load_cd.png */, + B367FF6B289627AE00F75595 /* ctrl_option_on.png */, + B367FF6C289627AE00F75595 /* ctrl_wiimote.png */, + B367FF6D289627AE00F75595 /* Main_file.png */, + B367FF6E289627AE00F75595 /* Button_special_over.png */, + B367FF6F289627AE00F75595 /* Ctrl_paddle.png */, + B367FF70289627AE00F75595 /* Option_system.png */, + B367FF71289627AE00F75595 /* Ctrl_teamplayer.png */, + B367FF72289627AE00F75595 /* Button_icon.png */, + B367FF73289627AE00F75595 /* Button_load.png */, + B367FF74289627AE00F75595 /* generic_point.png */, + B367FF75289627AE00F75595 /* Cart_gg.png */, + B367FF76289627AE00F75595 /* Ctrl_menacer.png */, + B367FF77289627AE00F75595 /* Ctrl_lightphaser.png */, + B367FF78289627AE00F75595 /* Frame_s1_title.png */, + B367FF79289627AE00F75595 /* Button_icon_sm_over.png */, + B367FF7A289627AE00F75595 /* Key_Minus_wii.png */, + B367FF7B289627AE00F75595 /* Overlay_bar.png */, + B367FF7C289627AE00F75595 /* Frame_throbber.png */, + B367FF7D289627AE00F75595 /* CD_access_on.png */, + B367FF7E289627AE00F75595 /* ctrl_option_off.png */, + B367FF7F289627AE00F75595 /* Key_L_gcn.png */, + B367FF80289627AE00F75595 /* ctrl_gamecube.png */, + B367FF81289627AE00F75595 /* Button_text.png */, + B367FF82289627AE00F75595 /* Ctrl_activator.png */, + B367FF83289627AE00F75595 /* Button_save.png */, + B367FF84289627AE00F75595 /* Button_text_over.png */, + B367FF85289627AE00F75595 /* Button_up.png */, + B367FF86289627AE00F75595 /* Button_digit.png */, + B367FF87289627AE00F75595 /* Main_takeshot.png */, + B367FF88289627AE00F75595 /* Button_arrow_over.png */, + B367FF89289627AE00F75595 /* Key_DPAD.png */, + B367FF8A289627AE00F75595 /* Main_options.png */, + B367FF8B289627AE00F75595 /* Button_digit_over.png */, + B367FF8C289627AE00F75595 /* Crosshair_p1.png */, + B367FF8D289627AE00F75595 /* Banner_bottom.png */, + B367FF8E289627AE00F75595 /* Button_load_over.png */, + B367FF8F289627AE00F75595 /* Ctrl_none.png */, + B367FF90289627AE00F75595 /* Frame_s2_title.png */, + B367FF91289627AE00F75595 /* Key_A_wii.png */, + B367FF92289627AE00F75595 /* Option_menu.png */, + B367FF93289627AE00F75595 /* ctrl_nunchuk.png */, + B367FF94289627AE00F75595 /* CD_access_off.png */, + B367FF95289627AE00F75595 /* Crosshair_p2.png */, + B367FF96289627AE00F75595 /* Ctrl_mastertap.png */, + B367FF97289627AE00F75595 /* Ctrl_gamepad.png */, + B367FF98289627AE00F75595 /* Star_empty.png */, + B367FF99289627AE00F75595 /* Load_ms.png */, + B367FF9A289627AE00F75595 /* Load_md.png */, + B367FF9B289627AE00F75595 /* Main_logo.png */, + B367FF9C289627AE00F75595 /* Bg_overlay.png */, + B367FF9D289627AE00F75595 /* Bg_credits.png */, + B367FF9E289627AE00F75595 /* Button_down_over.png */, + B367FF9F289627AE00F75595 /* Ctrl_mouse.png */, + B367FFA0289627AE00F75595 /* Bg_intro_c4.png */, + B367FFA1289627AE00F75595 /* Star_full.png */, + B367FFA2289627AE00F75595 /* Load_sg.png */, + B367FFA3289627AE00F75595 /* Button_save_over.png */, + B367FFA4289627AE00F75595 /* Main_play_wii.png */, + B367FFA5289627AE00F75595 /* Ctrl_4wayplay.png */, + B367FFA6289627AE00F75595 /* Ctrl_pad2b.png */, + B367FFA7289627AE00F75595 /* Ctrl_pad_auto.png */, + B367FFA8289627AE00F75595 /* Ctrl_pad3b.png */, + B367FFA9289627AE00F75595 /* Bg_intro_c1.png */, + B367FFAA289627AE00F75595 /* Key_B_wii.png */, + B367FFAB289627AE00F75595 /* Button_icon_over.png */, + B367FFAC289627AE00F75595 /* Option_video.png */, + B367FFAD289627AE00F75595 /* Button_icon_sm.png */, + B367FFAE289627AE00F75595 /* Load_gg.png */, + B367FFAF289627AE00F75595 /* Button_delete.png */, + B367FFB0289627AE00F75595 /* Bg_intro_c2.png */, + B367FFB1289627AE00F75595 /* Button_delete_over.png */, + B367FFB2289627AE00F75595 /* Key_R_gcn.png */, + B367FFB3289627AE00F75595 /* Button_sm_blue.png */, + B367FFB4289627AE00F75595 /* Bg_intro_c3.png */, + B367FFB5289627AE00F75595 /* Ctrl_sportspad.png */, + ); + path = images; + sourceTree = ""; + }; + B367FFB7289627AE00F75595 /* utils */ = { + isa = PBXGroup; + children = ( + B367FFB8289627AE00F75595 /* vi_encoder.c */, + B367FFB9289627AE00F75595 /* oggplayer.c */, + B367FFBA289627AE00F75595 /* vi_encoder.h */, + B367FFBB289627AE00F75595 /* oggplayer.h */, + B367FFBC289627AE00F75595 /* wiidrc */, + ); + path = utils; + sourceTree = ""; + }; + B367FFBC289627AE00F75595 /* wiidrc */ = { + isa = PBXGroup; + children = ( + B367FFBD289627AE00F75595 /* wiidrc.c */, + B367FFBE289627AF00F75595 /* LICENSE */, + B367FFBF289627AF00F75595 /* wiidrc_structs.h */, + B367FFC0289627AF00F75595 /* wiidrc.h */, + ); + path = wiidrc; + sourceTree = ""; + }; + B367FFC1289627AF00F75595 /* docs */ = { + isa = PBXGroup; + children = ( + B367FFC2289627AF00F75595 /* README.doc */, + B367FFC3289627AF00F75595 /* README.pdf */, + ); + path = docs; + sourceTree = ""; + }; + B367FFC4289627AF00F75595 /* sounds */ = { + isa = PBXGroup; + children = ( + B367FFC5289627AF00F75595 /* button_select.pcm */, + B367FFC6289627AF00F75595 /* intro.pcm */, + B367FFC7289627AF00F75595 /* button_over.pcm */, + ); + path = sounds; + sourceTree = ""; + }; + B367FFCC289627AF00F75595 /* gui */ = { + isa = PBXGroup; + children = ( + B367FFCD289627AF00F75595 /* cheats.c */, + B367FFCE289627AF00F75595 /* gui.c */, + B367FFCF289627AF00F75595 /* menu.c */, + B367FFD0289627AF00F75595 /* legal.c */, + B367FFD1289627AF00F75595 /* font.c */, + B367FFD2289627AF00F75595 /* filesel.h */, + B367FFD3289627AF00F75595 /* cheats.h */, + B367FFD4289627AF00F75595 /* gui.h */, + B367FFD5289627AF00F75595 /* saveicon.h */, + B367FFD6289627AF00F75595 /* menu.h */, + B367FFD7289627AF00F75595 /* font.h */, + B367FFD8289627AF00F75595 /* filesel.c */, + ); + path = gui; + sourceTree = ""; + }; + B367FFDB289627AF00F75595 /* gcw0 */ = { + isa = PBXGroup; + children = ( + B367FFE2289627AF00F75595 /* Makefile */, + B367FFF7289627AF00F75595 /* config.c */, + B367FFF5289627AF00F75595 /* error.c */, + B367FFDF289627AF00F75595 /* fileio.c */, + B367FFF4289627AF00F75595 /* main.c */, + B367FFE0289627AF00F75595 /* unzip.c */, + B367FFF3289627AF00F75595 /* utils.c */, + B367FFE1289627AF00F75595 /* config.h */, + B367FFDD289627AF00F75595 /* error.h */, + B367FFF8289627AF00F75595 /* fileio.h */, + B367FFDC289627AF00F75595 /* main.h */, + B367FFFA289627AF00F75595 /* osd.h */, + B367FFF9289627AF00F75595 /* unzip.h */, + B367FFDE289627AF00F75595 /* utils.h */, + B367FFF6289627AF00F75595 /* opk_build.sh */, + B367FFE3289627AF00F75595 /* opk-data */, + ); + path = gcw0; + sourceTree = ""; + }; + B367FFE3289627AF00F75595 /* opk-data */ = { + isa = PBXGroup; + children = ( + B367FFE4289627AF00F75595 /* MD.png */, + B367FFE5289627AF00F75595 /* SQUARE_02.png */, + B367FFE6289627AF00F75595 /* SMS.png */, + B367FFE7289627AF00F75595 /* CLASSIC_01_RED.png */, + B367FFE8289627AF00F75595 /* default.gcw0.desktop */, + B367FFE9289627AF00F75595 /* PICO.png */, + B367FFEA289627AF00F75595 /* CLASSIC_01.png */, + B367FFEB289627AF00F75595 /* gcw0readme.txt */, + B367FFEC289627AF00F75595 /* scanlines.png */, + B367FFED289627AF00F75595 /* CLASSIC_02.png */, + B367FFEE289627AF00F75595 /* GG.png */, + B367FFEF289627AF00F75595 /* ProggyTiny.ttf */, + B367FFF0289627AF00F75595 /* SG1000.png */, + B367FFF1289627AF00F75595 /* MCD.png */, + B367FFF2289627AF00F75595 /* LICENSE.txt */, + ); + path = "opk-data"; + sourceTree = ""; + }; + B3E432051DE6917700D3C91E /* PVGenesis */ = { + isa = PBXGroup; + children = ( + B3547B562058589900CFF7D8 /* Core.plist */, + B3E432061DE6917700D3C91E /* PVGenesis.h */, + B3E432071DE6917700D3C91E /* Info.plist */, + ); + path = PVGenesis; + sourceTree = ""; + }; + B3FBCB5E2896266E00B7A486 /* Deps */ = { + isa = PBXGroup; + children = ( + 1ACEA6E717F752600031B1C9 /* genplusgx_source */, + 1ACEA8D117F75B8A0031B1C9 /* other */, + 1ACEA85A17F752610031B1C9 /* libretro */, + B367FDA3289627AB00F75595 /* Genesis-Plus-GX */, + ); + path = Deps; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3E432011DE6917700D3C91E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C66E09582586D66000EA6170 /* graphic_board.h in Headers */, + C66E09452586D39E00EA6170 /* opll.h in Headers */, + B3E432081DE6917700D3C91E /* PVGenesis.h in Headers */, + B3A9F4241DE7F606008450F5 /* PVGenesisEmulatorCore.h in Headers */, + C66E09472586D39E00EA6170 /* psg.h in Headers */, + C66E09532586D47000EA6170 /* xe_1ap.h in Headers */, + C66E093B2586D34B00EA6170 /* scrc32.h in Headers */, + B3A9F4221DE7F5F2008450F5 /* libretro.h in Headers */, + C66E094B2586D39E00EA6170 /* ym3438.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B3670002289627E800F75595 /* genesisPlusGX */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3670009289627E800F75595 /* Build configuration list for PBXNativeTarget "genesisPlusGX" */; + buildPhases = ( + B367FFFF289627E800F75595 /* Sources */, + B3670000289627E800F75595 /* Frameworks */, + B3670001289627E800F75595 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = genesisPlusGX; + productName = genesisPlusGX; + productReference = B3670003289627E800F75595 /* libgenesisPlusGX.a */; + productType = "com.apple.product-type.library.static"; + }; + B36700402896290E00F75595 /* genesisPlusGX-legacy */ = { + isa = PBXNativeTarget; + buildConfigurationList = B36700772896290E00F75595 /* Build configuration list for PBXNativeTarget "genesisPlusGX-legacy" */; + buildPhases = ( + B36700412896290E00F75595 /* Sources */, + B36700752896290E00F75595 /* Frameworks */, + B36700762896290E00F75595 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "genesisPlusGX-legacy"; + productName = genesisPlusGX; + productReference = B367007B2896290E00F75595 /* libgenesisPlusGX-legacy.a */; + productType = "com.apple.product-type.library.static"; + }; + B3E432031DE6917700D3C91E /* PVGenesis */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3E432091DE6917700D3C91E /* Build configuration list for PBXNativeTarget "PVGenesis" */; + buildPhases = ( + B3E432011DE6917700D3C91E /* Headers */, + B3E431FF1DE6917700D3C91E /* Sources */, + B3E432001DE6917700D3C91E /* Frameworks */, + B3E432021DE6917700D3C91E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PVGenesis; + productName = PVGenesis; + productReference = B3E432041DE6917700D3C91E /* PVGenesis.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1ACEA6A417F74D140031B1C9 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B3670002289627E800F75595 = { + CreatedOnToolsVersion = 13.4.1; + }; + B3E432031DE6917700D3C91E = { + CreatedOnToolsVersion = 8.1; + LastSwiftMigration = 1320; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 1ACEA6A717F74D140031B1C9 /* Build configuration list for PBXProject "PVGenesis" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1ACEA6A317F74D140031B1C9; + productRefGroup = 1ACEA6AD17F74D150031B1C9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3E432031DE6917700D3C91E /* PVGenesis */, + B3670002289627E800F75595 /* genesisPlusGX */, + B36700402896290E00F75595 /* genesisPlusGX-legacy */, ); }; /* End PBXProject section */ @@ -754,136 +2345,134 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3E432101DE6919B00D3C91E /* Resources */ = { - isa = PBXResourcesBuildPhase; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B36700412896290E00F75595 /* Sources */ = { + isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3547B582058589900CFF7D8 /* Core.plist in Resources */, + B367009B2896293700F75595 /* ssp16.c in Sources */, + B36700992896293700F75595 /* cd_cart.c in Sources */, + B367008A2896293700F75595 /* paddle.c in Sources */, + B36700AF2896293700F75595 /* sms_cart.c in Sources */, + B36700AB2896293700F75595 /* system.c in Sources */, + B36700A52896293700F75595 /* opll.c in Sources */, + B36700A92896293700F75595 /* xe_1ap.c in Sources */, + B36700A42896293700F75595 /* ym3438.c in Sources */, + B367007D2896293700F75595 /* mem68k.c in Sources */, + B36700AE2896293700F75595 /* state.c in Sources */, + B367016C28962C8B00F75595 /* libretro.c in Sources */, + B36700A72896293700F75595 /* sportspad.c in Sources */, + B36700822896293700F75595 /* ym2413.c in Sources */, + B367016E28962C9300F75595 /* scrc32.c in Sources */, + B367009E2896293700F75595 /* loadrom.c in Sources */, + B367008E2896293700F75595 /* s68kcpu.c in Sources */, + B36700812896293700F75595 /* terebi_oekaki.c in Sources */, + B367009C2896293700F75595 /* lightgun.c in Sources */, + B36700932896293700F75595 /* ym2612.c in Sources */, + B36700892896293700F75595 /* eeprom_i2c.c in Sources */, + B36700982896293700F75595 /* vdp_render.c in Sources */, + B36700972896293700F75595 /* cdd.c in Sources */, + B36700962896293700F75595 /* sram.c in Sources */, + B367007F2896293700F75595 /* membnk.c in Sources */, + B36700852896293700F75595 /* cdc.c in Sources */, + B367008F2896293700F75595 /* md_cart.c in Sources */, + B36700802896293700F75595 /* svp.c in Sources */, + B36700952896293700F75595 /* z80.c in Sources */, + B36700A02896293700F75595 /* gamepad.c in Sources */, + B36700832896293700F75595 /* memz80.c in Sources */, + B36700A62896293700F75595 /* mouse.c in Sources */, + B367009F2896293700F75595 /* vdp_ctrl.c in Sources */, + B36700AD2896293700F75595 /* sms_ntsc.c in Sources */, + B367008B2896293700F75595 /* sound.c in Sources */, + B36700902896293700F75595 /* areplay.c in Sources */, + B367009D2896293700F75595 /* teamplayer.c in Sources */, + B36700A32896293700F75595 /* ggenie.c in Sources */, + B36700922896293700F75595 /* input.c in Sources */, + B36700842896293700F75595 /* blip_buf.c in Sources */, + B36700AC2896293700F75595 /* genesis.c in Sources */, + B367009A2896293700F75595 /* eeprom_spi.c in Sources */, + B36700A12896293700F75595 /* scd.c in Sources */, + B36700882896293700F75595 /* activator.c in Sources */, + B36700862896293700F75595 /* graphic_board.c in Sources */, + B36700872896293700F75595 /* pcm.c in Sources */, + B36700942896293700F75595 /* psg.c in Sources */, + B36700912896293700F75595 /* io_ctrl.c in Sources */, + B367007E2896293700F75595 /* gfx.c in Sources */, + B36700AA2896293700F75595 /* eeprom_93c.c in Sources */, + B367007C2896293700F75595 /* md_ntsc.c in Sources */, + B36700A82896293700F75595 /* eq.c in Sources */, + B367008D2896293700F75595 /* m68kcpu.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - B3E431FF1DE6917700D3C91E /* Sources */ = { + B367FFFF289627E800F75595 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B37302D41DE7DB1B00D0B366 /* gamepad.c in Sources */, - B37302D51DE7DB1B00D0B366 /* eq.c in Sources */, - B37302D61DE7DB1B00D0B366 /* scd.c in Sources */, - C66E09432586D39E00EA6170 /* psg.c in Sources */, - C66E095A2586D66000EA6170 /* graphic_board.c in Sources */, - B37302D71DE7DB1B00D0B366 /* z80.c in Sources */, - B37302D81DE7DB1B00D0B366 /* input.c in Sources */, - B37302D91DE7DB1B00D0B366 /* cdc.c in Sources */, - B37302DA1DE7DB1B00D0B366 /* loadrom.c in Sources */, - B37302DB1DE7DB1B00D0B366 /* genesis.c in Sources */, - B37302DC1DE7DB1B00D0B366 /* ym2413.c in Sources */, - C66E094D2586D39E00EA6170 /* ym3438.c in Sources */, - B37302DD1DE7DB1B00D0B366 /* paddle.c in Sources */, - B37302DE1DE7DB1B00D0B366 /* PVGenesisEmulatorCore.m in Sources */, - B37302DF1DE7DB1B00D0B366 /* mem68k.c in Sources */, - B37302E01DE7DB1B00D0B366 /* cd_cart.c in Sources */, - B37302E11DE7DB1B00D0B366 /* sound.c in Sources */, - B37302E21DE7DB1B00D0B366 /* cdd.c in Sources */, - B37302E31DE7DB1B00D0B366 /* mouse.c in Sources */, - B37302E41DE7DB1B00D0B366 /* vdp_render.c in Sources */, - B37302E51DE7DB1B00D0B366 /* io_ctrl.c in Sources */, - B37302E71DE7DB1B00D0B366 /* membnk.c in Sources */, - B37302E81DE7DB1B00D0B366 /* blip_buf.c in Sources */, - C66E09392586D34B00EA6170 /* scrc32.c in Sources */, - B37302E91DE7DB1B00D0B366 /* pcm.c in Sources */, - B37302EA1DE7DB1B00D0B366 /* sportspad.c in Sources */, - B37302EB1DE7DB1B00D0B366 /* lightgun.c in Sources */, - C66E09492586D39E00EA6170 /* opll.c in Sources */, - B37302EC1DE7DB1B00D0B366 /* gfx.c in Sources */, - B37302EE1DE7DB1B00D0B366 /* state.c in Sources */, - B37302EF1DE7DB1B00D0B366 /* terebi_oekaki.c in Sources */, - B326758327B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */, - B37302F01DE7DB1B00D0B366 /* activator.c in Sources */, - B37302F11DE7DB1B00D0B366 /* md_cart.c in Sources */, - B37302F21DE7DB1B00D0B366 /* s68kcpu.c in Sources */, - B37302F31DE7DB1B00D0B366 /* m68kcpu.c in Sources */, - B37302F41DE7DB1B00D0B366 /* eeprom_spi.c in Sources */, - B37302F51DE7DB1B00D0B366 /* sram.c in Sources */, - B37302F61DE7DB1B00D0B366 /* memz80.c in Sources */, - B37302F71DE7DB1B00D0B366 /* eeprom_i2c.c in Sources */, - B37302F81DE7DB1B00D0B366 /* teamplayer.c in Sources */, - B37302F91DE7DB1B00D0B366 /* sms_cart.c in Sources */, - B37302FA1DE7DB1B00D0B366 /* libretro.c in Sources */, - B37302FB1DE7DB1B00D0B366 /* vdp_ctrl.c in Sources */, - B37302FC1DE7DB1B00D0B366 /* areplay.c in Sources */, - B37302FD1DE7DB1B00D0B366 /* sms_ntsc.c in Sources */, - B37302FE1DE7DB1B00D0B366 /* ssp16.c in Sources */, - B37302FF1DE7DB1B00D0B366 /* md_ntsc.c in Sources */, - B37303001DE7DB1B00D0B366 /* ggenie.c in Sources */, - B37303011DE7DB1B00D0B366 /* ym2612.c in Sources */, - B37303021DE7DB1B00D0B366 /* eeprom_93c.c in Sources */, - B37303031DE7DB1B00D0B366 /* svp.c in Sources */, - B37303041DE7DB1B00D0B366 /* system.c in Sources */, - C66E09512586D47000EA6170 /* xe_1ap.c in Sources */, + B3670037289628EF00F75595 /* input.c in Sources */, + B3670038289628EF00F75595 /* lightgun.c in Sources */, + B367002D289628DC00F75595 /* cd_cart.c in Sources */, + B3670027289628BB00F75595 /* md_cart.c in Sources */, + B367002C289628DC00F75595 /* cdd.c in Sources */, + B367003A289628EF00F75595 /* paddle.c in Sources */, + B367016928962BCA00F75595 /* scrc32.c in Sources */, + B36700162896283B00F75595 /* memz80.c in Sources */, + B36700152896283B00F75595 /* system.c in Sources */, + B36700172896289500F75595 /* eq.c in Sources */, + B367000D2896283B00F75595 /* genesis.c in Sources */, + B3670023289628BB00F75595 /* eeprom_i2c.c in Sources */, + B3670025289628BB00F75595 /* sram.c in Sources */, + B3670035289628EF00F75595 /* activator.c in Sources */, + B367001E2896289500F75595 /* ym2612.c in Sources */, + B367016828962BC900F75595 /* libretro.c in Sources */, + B36700142896283B00F75595 /* vdp_ctrl.c in Sources */, + B367002A289628D400F75595 /* ssp16.c in Sources */, + B3670021289628BB00F75595 /* ggenie.c in Sources */, + B367002E289628DD00F75595 /* gfx.c in Sources */, + B36700112896283B00F75595 /* membnk.c in Sources */, + B367000E2896283B00F75595 /* mem68k.c in Sources */, + B3670029289628D400F75595 /* svp.c in Sources */, + B3670032289628EF00F75595 /* gamepad.c in Sources */, + B36700122896283B00F75595 /* state.c in Sources */, + B367001D2896289500F75595 /* z80.c in Sources */, + B36700192896289500F75595 /* psg.c in Sources */, + B3670026289628BB00F75595 /* areplay.c in Sources */, + B3670034289628EF00F75595 /* terebi_oekaki.c in Sources */, + B367001F289628A600F75595 /* opll.c in Sources */, + B3670020289628BB00F75595 /* eeprom_spi.c in Sources */, + B367001A2896289500F75595 /* ym3438.c in Sources */, + B367003D289628F900F75595 /* s68kcpu.c in Sources */, + B3670033289628EF00F75595 /* teamplayer.c in Sources */, + B3670030289628DD00F75595 /* scd.c in Sources */, + B36700132896283B00F75595 /* loadrom.c in Sources */, + B36700182896289500F75595 /* sound.c in Sources */, + B367001B2896289500F75595 /* ym2413.c in Sources */, + B3670031289628EF00F75595 /* xe_1ap.c in Sources */, + B3670028289628BB00F75595 /* megasd.c in Sources */, + B3670039289628EF00F75595 /* graphic_board.c in Sources */, + B367003B289628F000F75595 /* sportspad.c in Sources */, + B367002F289628DD00F75595 /* pcm.c in Sources */, + B367003C289628F900F75595 /* m68kcpu.c in Sources */, + B3670024289628BB00F75595 /* eeprom_93c.c in Sources */, + B367003E2896290100F75595 /* sms_ntsc.c in Sources */, + B36700102896283B00F75595 /* vdp_render.c in Sources */, + B367003F2896290100F75595 /* md_ntsc.c in Sources */, + B367002B289628DC00F75595 /* cdc.c in Sources */, + B367001C2896289500F75595 /* blip_buf.c in Sources */, + B3670036289628EF00F75595 /* mouse.c in Sources */, + B367000F2896283B00F75595 /* io_ctrl.c in Sources */, + B3670022289628BB00F75595 /* sms_cart.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3E4320D1DE6919B00D3C91E /* Sources */ = { + B3E431FF1DE6917700D3C91E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C66E09552586D57900EA6170 /* xe_1ap.c in Sources */, - B37303051DE7DB1B00D0B366 /* gamepad.c in Sources */, - B37303061DE7DB1B00D0B366 /* eq.c in Sources */, - B37303071DE7DB1B00D0B366 /* scd.c in Sources */, - C66E095B2586D66000EA6170 /* graphic_board.c in Sources */, - C66E09442586D39E00EA6170 /* psg.c in Sources */, - B37303081DE7DB1B00D0B366 /* z80.c in Sources */, - B37303091DE7DB1B00D0B366 /* input.c in Sources */, - B373030A1DE7DB1B00D0B366 /* cdc.c in Sources */, - B373030B1DE7DB1B00D0B366 /* loadrom.c in Sources */, - B373030C1DE7DB1B00D0B366 /* genesis.c in Sources */, - B373030D1DE7DB1B00D0B366 /* ym2413.c in Sources */, - C66E094E2586D39E00EA6170 /* ym3438.c in Sources */, - B373030E1DE7DB1B00D0B366 /* paddle.c in Sources */, - B373030F1DE7DB1B00D0B366 /* PVGenesisEmulatorCore.m in Sources */, - B37303101DE7DB1B00D0B366 /* mem68k.c in Sources */, - B37303111DE7DB1B00D0B366 /* cd_cart.c in Sources */, - B37303121DE7DB1B00D0B366 /* sound.c in Sources */, - B37303131DE7DB1B00D0B366 /* cdd.c in Sources */, - B37303141DE7DB1B00D0B366 /* mouse.c in Sources */, - B37303151DE7DB1B00D0B366 /* vdp_render.c in Sources */, - B37303161DE7DB1B00D0B366 /* io_ctrl.c in Sources */, - B37303181DE7DB1B00D0B366 /* membnk.c in Sources */, - B37303191DE7DB1B00D0B366 /* blip_buf.c in Sources */, - C66E093A2586D34B00EA6170 /* scrc32.c in Sources */, - B373031A1DE7DB1B00D0B366 /* pcm.c in Sources */, - B373031B1DE7DB1B00D0B366 /* sportspad.c in Sources */, - B373031C1DE7DB1B00D0B366 /* lightgun.c in Sources */, - C66E094A2586D39E00EA6170 /* opll.c in Sources */, - B373031D1DE7DB1B00D0B366 /* gfx.c in Sources */, - B373031F1DE7DB1B00D0B366 /* state.c in Sources */, - B326758427B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */, - B37303201DE7DB1B00D0B366 /* terebi_oekaki.c in Sources */, - B37303211DE7DB1B00D0B366 /* activator.c in Sources */, - B37303221DE7DB1B00D0B366 /* md_cart.c in Sources */, - B37303231DE7DB1B00D0B366 /* s68kcpu.c in Sources */, - B37303241DE7DB1B00D0B366 /* m68kcpu.c in Sources */, - B37303251DE7DB1B00D0B366 /* eeprom_spi.c in Sources */, - B37303261DE7DB1B00D0B366 /* sram.c in Sources */, - B37303271DE7DB1B00D0B366 /* memz80.c in Sources */, - B37303281DE7DB1B00D0B366 /* eeprom_i2c.c in Sources */, - B37303291DE7DB1B00D0B366 /* teamplayer.c in Sources */, - B373032A1DE7DB1B00D0B366 /* sms_cart.c in Sources */, - B373032B1DE7DB1B00D0B366 /* libretro.c in Sources */, - B373032C1DE7DB1B00D0B366 /* vdp_ctrl.c in Sources */, - B373032D1DE7DB1B00D0B366 /* areplay.c in Sources */, - B373032E1DE7DB1B00D0B366 /* sms_ntsc.c in Sources */, - B373032F1DE7DB1B00D0B366 /* ssp16.c in Sources */, - B37303301DE7DB1B00D0B366 /* md_ntsc.c in Sources */, - B37303311DE7DB1B00D0B366 /* ggenie.c in Sources */, - B37303321DE7DB1B00D0B366 /* ym2612.c in Sources */, - B37303331DE7DB1B00D0B366 /* eeprom_93c.c in Sources */, - B37303341DE7DB1B00D0B366 /* svp.c in Sources */, - B37303351DE7DB1B00D0B366 /* system.c in Sources */, + B37302DE1DE7DB1B00D0B366 /* PVGenesisEmulatorCore.m in Sources */, + B326758327B1C5BB0033C5D1 /* GenesisOptions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -893,7 +2482,6 @@ 1ACEA6CD17F74D150031B1C9 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -926,7 +2514,10 @@ GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -935,10 +2526,22 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LLVM_LTO = NO; ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "-fPIC", + "-DLSB_FIRST", + "-DHAVE_ZLIB", + "-DUSE_32BPP_RENDERING", + "-DNDEBUG", + "-D__LIBRETRO__", + "$(inherited)", + ); SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; name = Debug; @@ -946,7 +2549,6 @@ 1ACEA6CE17F74D150031B1C9 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -977,8 +2579,8 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 2; - GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; @@ -986,10 +2588,28 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LLVM_LTO = NO; ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "-DNS_BLOCK_ASSERTIONS=1", + "-fPIC", + "-DLSB_FIRST", + "-DHAVE_ZLIB", + "-DUSE_32BPP_RENDERING", + "-DNDEBUG", + "-D__LIBRETRO__", + "-DHAVE_OVERCLOCK", + "-DHAVE_OPLL_CORE", + "-DHAVE_YM3438_CORE", + "-DINLINE=\"static inline\"", + "-DZ80_OVERCLOCK_SHIFT=20", + "-DM68K_OVERCLOCK_SHIFT=20", + "$(inherited)", + ); SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; @@ -998,7 +2618,6 @@ B324C51A2191A3E4009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -1029,8 +2648,8 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 2; - GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; @@ -1038,9 +2657,28 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LLVM_LTO = NO; + OTHER_CFLAGS = ( + "-DNS_BLOCK_ASSERTIONS=1", + "-fPIC", + "-DLSB_FIRST", + "-DHAVE_ZLIB", + "-DUSE_32BPP_RENDERING", + "-DNDEBUG", + "-D__LIBRETRO__", + "-DHAVE_OVERCLOCK", + "-DHAVE_OPLL_CORE", + "-DHAVE_YM3438_CORE", + "-DINLINE=\"static inline\"", + "-DZ80_OVERCLOCK_SHIFT=20", + "-DM68K_OVERCLOCK_SHIFT=20", + "$(inherited)", + ); SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; @@ -1049,6 +2687,7 @@ B324C51B2191A3E4009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1072,7 +2711,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVGenesis/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1080,213 +2719,216 @@ "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-DNS_BLOCK_ASSERTIONS=1", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_ZLIB", - "-DUSE_32BPP_RENDERING", - "-DNDEBUG", - "-D__LIBRETRO__", - "-DHAVE_OVERCLOCK", - "-DHAVE_OPLL_CORE", - "-DHAVE_YM3438_CORE", - "-DINLINE=\"static inline\"", - "-DZ80_OVERCLOCK_SHIFT=20", - "-DM68K_OVERCLOCK_SHIFT=20", - ); OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGenesis"; PRODUCT_NAME = PVGenesis; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Archive; }; - B324C51C2191A3E4009F4EDC /* Archive */ = { + B367000A289627E800F75595 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CODE_SIGN_STYLE = Manual; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVGenesis/Deps/Genesis-Plus-GX/core\"", + "\"$(SRCROOT)/PVGenesis/Deps/Genesis-Plus-GX/libretro/libretro-common/include\"", + ); + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B367000B289627E800F75595 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = "PVGenesis/PVGenesis-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ""; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVGenesis/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVGenesis/Deps/Genesis-Plus-GX/core\"", + "\"$(SRCROOT)/PVGenesis/Deps/Genesis-Plus-GX/libretro/libretro-common/include\"", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-DNS_BLOCK_ASSERTIONS=1", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_ZLIB", - "-DUSE_32BPP_RENDERING", - "-DNDEBUG", - "-D__LIBRETRO__", - "-DHAVE_OVERCLOCK", - "-DHAVE_OPLL_CORE", - "-DHAVE_YM3438_CORE", - "-DINLINE=\"static inline\"", - "-DZ80_OVERCLOCK_SHIFT=20", - "-DM68K_OVERCLOCK_SHIFT=20", + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B367000C289627E800F75595 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVGenesis/Deps/Genesis-Plus-GX/core\"", + "\"$(SRCROOT)/PVGenesis/Deps/Genesis-Plus-GX/libretro/libretro-common/include\"", ); + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGenesis"; - PRODUCT_NAME = PVGenesis; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Archive; }; - B3E4320A1DE6917700D3C91E /* Debug */ = { + B36700782896290E00F75595 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = "PVGenesis/PVGenesis-Prefix.pch"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVGenesis/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_ZLIB", - "-DUSE_32BPP_RENDERING", - "-DNDEBUG", - "-D__LIBRETRO__", + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVGenesis/Deps/genplusgx_source\"", + "\"$(SRCROOT)/PVGenesis/Deps/libretro\"", + "\"$(SRCROOT)/PVGenesis/Deps/other\"", ); - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGenesis"; - PRODUCT_NAME = PVGenesis; - PROVISIONING_PROFILE_SPECIFIER = ""; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B3E4320B1DE6917700D3C91E /* Release */ = { + B36700792896290E00F75595 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CODE_SIGN_STYLE = Manual; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = "PVGenesis/PVGenesis-Prefix.pch"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVGenesis/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVGenesis/Deps/genplusgx_source\"", + "\"$(SRCROOT)/PVGenesis/Deps/libretro\"", + "\"$(SRCROOT)/PVGenesis/Deps/other\"", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-DNS_BLOCK_ASSERTIONS=1", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_ZLIB", - "-DUSE_32BPP_RENDERING", - "-DNDEBUG", - "-D__LIBRETRO__", - "-DHAVE_OVERCLOCK", - "-DHAVE_OPLL_CORE", - "-DHAVE_YM3438_CORE", - "-DINLINE=\"static inline\"", - "-DZ80_OVERCLOCK_SHIFT=20", - "-DM68K_OVERCLOCK_SHIFT=20", - ); - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGenesis"; - PRODUCT_NAME = PVGenesis; - PROVISIONING_PROFILE_SPECIFIER = ""; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Release; }; - B3E432181DE6919B00D3C91E /* Debug */ = { + B367007A2896290E00F75595 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/PVGenesis/Deps/genplusgx_source\"", + "\"$(SRCROOT)/PVGenesis/Deps/libretro\"", + "\"$(SRCROOT)/PVGenesis/Deps/other\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3E4320A1DE6917700D3C91E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1306,42 +2948,37 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = NO; GCC_PREFIX_HEADER = "PVGenesis/PVGenesis-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVGenesis/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_ZLIB", - "-DUSE_32BPP_RENDERING", - "-DNDEBUG", - "-D__LIBRETRO__", - ); - OTHER_LDFLAGS = "-ObjC"; + OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGenesis"; PRODUCT_NAME = PVGenesis; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B3E432191DE6919B00D3C91E /* Release */ = { + B3E4320B1DE6917700D3C91E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1362,40 +2999,27 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = NO; GCC_PREFIX_HEADER = "PVGenesis/PVGenesis-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ""; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVGenesis/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-DNS_BLOCK_ASSERTIONS=1", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_ZLIB", - "-DUSE_32BPP_RENDERING", - "-DNDEBUG", - "-D__LIBRETRO__", - "-DHAVE_OVERCLOCK", - "-DHAVE_OPLL_CORE", - "-DHAVE_YM3438_CORE", - "-DINLINE=\"static inline\"", - "-DZ80_OVERCLOCK_SHIFT=20", - "-DM68K_OVERCLOCK_SHIFT=20", - ); - OTHER_LDFLAGS = "-ObjC"; + OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGenesis"; PRODUCT_NAME = PVGenesis; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1414,22 +3038,32 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3E432091DE6917700D3C91E /* Build configuration list for PBXNativeTarget "PVGenesis-iOS" */ = { + B3670009289627E800F75595 /* Build configuration list for PBXNativeTarget "genesisPlusGX" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3E4320A1DE6917700D3C91E /* Debug */, - B3E4320B1DE6917700D3C91E /* Release */, - B324C51B2191A3E4009F4EDC /* Archive */, + B367000A289627E800F75595 /* Debug */, + B367000B289627E800F75595 /* Release */, + B367000C289627E800F75595 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B36700772896290E00F75595 /* Build configuration list for PBXNativeTarget "genesisPlusGX-legacy" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B36700782896290E00F75595 /* Debug */, + B36700792896290E00F75595 /* Release */, + B367007A2896290E00F75595 /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3E432171DE6919B00D3C91E /* Build configuration list for PBXNativeTarget "PVGenesis-tvOS" */ = { + B3E432091DE6917700D3C91E /* Build configuration list for PBXNativeTarget "PVGenesis" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3E432181DE6919B00D3C91E /* Debug */, - B3E432191DE6919B00D3C91E /* Release */, - B324C51C2191A3E4009F4EDC /* Archive */, + B3E4320A1DE6917700D3C91E /* Debug */, + B3E4320B1DE6917700D3C91E /* Release */, + B324C51B2191A3E4009F4EDC /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesis.xcscheme b/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesis.xcscheme index 8766e80e0b..c20f63bd4c 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesis.xcscheme +++ b/Cores/Genesis-Plus-GX/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesis.xcscheme @@ -4,7 +4,7 @@ version = "1.3"> + buildImplicitDependencies = "YES"> + BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" + BuildableName = "PVSupport.framework" + BlueprintName = "PVSupport" + ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> + BlueprintIdentifier = "B3E432031DE6917700D3C91E" + BuildableName = "PVGenesis.framework" + BlueprintName = "PVGenesis" + ReferencedContainer = "container:PVGenesis.xcodeproj"> @@ -59,7 +59,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3E432031DE6917700D3C91E" BuildableName = "PVGenesis.framework" - BlueprintName = "PVGenesis-iOS" + BlueprintName = "PVGenesis" ReferencedContainer = "container:PVGenesis.xcodeproj"> @@ -75,7 +75,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3E432031DE6917700D3C91E" BuildableName = "PVGenesis.framework" - BlueprintName = "PVGenesis-iOS" + BlueprintName = "PVGenesis" ReferencedContainer = "container:PVGenesis.xcodeproj"> diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/Genesis-Plus-GX b/Cores/Genesis-Plus-GX/PVGenesis/Deps/Genesis-Plus-GX new file mode 160000 index 0000000000..e2fd222349 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/Genesis-Plus-GX @@ -0,0 +1 @@ +Subproject commit e2fd222349772194dc15eb71ba021dad077812a7 diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/areplay.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/areplay.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/areplay.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/areplay.c index 73b16a40db..b4f1c0ef79 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/areplay.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/areplay.c @@ -1,304 +1,304 @@ -/**************************************************************************** - * Genesis Plus - * Action Replay / Pro Action Replay emulation - * - * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -#define TYPE_PRO1 0x12 -#define TYPE_PRO2 0x22 - -static struct -{ - uint8 enabled; - uint8 status; - uint8 *rom; - uint8 *ram; - uint16 regs[13]; - uint16 old[4]; - uint16 data[4]; - uint32 addr[4]; -} action_replay; - -static void ar_write_regs(uint32 address, uint32 data); -static void ar_write_regs_2(uint32 address, uint32 data); -static void ar_write_ram_8(uint32 address, uint32 data); - -void areplay_init(void) -{ - int size; - - memset(&action_replay,0,sizeof(action_replay)); - - /* store Action replay ROM (max. 128k) & RAM (64k) above cartridge ROM + SRAM area */ - if (cart.romsize > 0x810000) return; - action_replay.rom = cart.rom + 0x810000; - action_replay.ram = cart.rom + 0x830000; - - /* try to load Action Replay ROM file */ - size = load_archive(AR_ROM, action_replay.rom, 0x20000, NULL); - - /* detect Action Replay board type */ - switch (size) - { - case 0x8000: - { - if (!memcmp(action_replay.rom + 0x120, "ACTION REPLAY ", 16)) - { - /* normal Action Replay (32K) */ - action_replay.enabled = TYPE_AR; - - /* internal registers mapped at $010000-$01ffff */ - m68k.memory_map[0x01].write16 = ar_write_regs; - break; - } - } - - case 0x10000: - case 0x20000: - { - /* Read stack pointer MSB */ - uint8 sp = READ_BYTE(action_replay.rom, 0x01); - - /* Detect board version */ - if ((sp == 0x42) && !memcmp(action_replay.rom + 0x120, "ACTION REPLAY 2 ", 16)) - { - /* PRO Action Replay 1 (64/128K) */ - action_replay.enabled = TYPE_PRO1; - - /* internal registers mapped at $010000-$01ffff */ - m68k.memory_map[0x01].write16 = ar_write_regs; - } - else if ((sp == 0x60) && !memcmp(action_replay.rom + 0x3c6, "ACTION REPLAY II", 16)) - { - /* PRO Action Replay 2 (64K) */ - action_replay.enabled = TYPE_PRO2; - - /* internal registers mapped at $100000-$10ffff */ - m68k.memory_map[0x10].write16 = ar_write_regs_2; - } - - /* internal RAM (64k), mapped at $420000-$42ffff or $600000-$60ffff */ - if (action_replay.enabled) - { - m68k.memory_map[sp].base = action_replay.ram; - m68k.memory_map[sp].read8 = NULL; - m68k.memory_map[sp].read16 = NULL; - m68k.memory_map[sp].write8 = ar_write_ram_8; - m68k.memory_map[sp].write16 = NULL; - } - break; - } - - default: - { - break; - } - } - -#ifdef LSB_FIRST - if (action_replay.enabled) - { - int i; - for (i= 0; i> 1; - if (offset > 12) - { - m68k_unused_16_w(address,data); - return; - } - - /* update internal register */ - action_replay.regs[offset] = data; - - /* MODE register */ - if (action_replay.regs[3] == 0xffff) - { - /* check switch status */ - if (action_replay.status == AR_SWITCH_ON) - { - /* reset existing patches */ - areplay_set_status(AR_SWITCH_OFF); - areplay_set_status(AR_SWITCH_ON); - } - - /* enable Cartridge ROM */ - m68k.memory_map[0].base = cart.rom; - } -} - -static void ar_write_regs_2(uint32 address, uint32 data) -{ - /* enable Cartridge ROM */ - if (((address & 0xff) == 0x78) && (data == 0xffff)) - { - m68k.memory_map[0].base = cart.rom; - } -} - -static void ar_write_ram_8(uint32 address, uint32 data) -{ - /* byte writes are handled as word writes, with LSB duplicated in MSB (/LWR is not used) */ - *(uint16 *)(action_replay.ram + (address & 0xfffe)) = (data | (data << 8)); -} - +/**************************************************************************** + * Genesis Plus + * Action Replay / Pro Action Replay emulation + * + * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +#define TYPE_PRO1 0x12 +#define TYPE_PRO2 0x22 + +static struct +{ + uint8 enabled; + uint8 status; + uint8 *rom; + uint8 *ram; + uint16 regs[13]; + uint16 old[4]; + uint16 data[4]; + uint32 addr[4]; +} action_replay; + +static void ar_write_regs(uint32 address, uint32 data); +static void ar_write_regs_2(uint32 address, uint32 data); +static void ar_write_ram_8(uint32 address, uint32 data); + +void areplay_init(void) +{ + int size; + + memset(&action_replay,0,sizeof(action_replay)); + + /* store Action replay ROM (max. 128k) & RAM (64k) above cartridge ROM + SRAM area */ + if (cart.romsize > 0x810000) return; + action_replay.rom = cart.rom + 0x810000; + action_replay.ram = cart.rom + 0x830000; + + /* try to load Action Replay ROM file */ + size = load_archive(AR_ROM, action_replay.rom, 0x20000, NULL); + + /* detect Action Replay board type */ + switch (size) + { + case 0x8000: + { + if (!memcmp(action_replay.rom + 0x120, "ACTION REPLAY ", 16)) + { + /* normal Action Replay (32K) */ + action_replay.enabled = TYPE_AR; + + /* internal registers mapped at $010000-$01ffff */ + m68k.memory_map[0x01].write16 = ar_write_regs; + break; + } + } + + case 0x10000: + case 0x20000: + { + /* Read stack pointer MSB */ + uint8 sp = READ_BYTE(action_replay.rom, 0x01); + + /* Detect board version */ + if ((sp == 0x42) && !memcmp(action_replay.rom + 0x120, "ACTION REPLAY 2 ", 16)) + { + /* PRO Action Replay 1 (64/128K) */ + action_replay.enabled = TYPE_PRO1; + + /* internal registers mapped at $010000-$01ffff */ + m68k.memory_map[0x01].write16 = ar_write_regs; + } + else if ((sp == 0x60) && !memcmp(action_replay.rom + 0x3c6, "ACTION REPLAY II", 16)) + { + /* PRO Action Replay 2 (64K) */ + action_replay.enabled = TYPE_PRO2; + + /* internal registers mapped at $100000-$10ffff */ + m68k.memory_map[0x10].write16 = ar_write_regs_2; + } + + /* internal RAM (64k), mapped at $420000-$42ffff or $600000-$60ffff */ + if (action_replay.enabled) + { + m68k.memory_map[sp].base = action_replay.ram; + m68k.memory_map[sp].read8 = NULL; + m68k.memory_map[sp].read16 = NULL; + m68k.memory_map[sp].write8 = ar_write_ram_8; + m68k.memory_map[sp].write16 = NULL; + } + break; + } + + default: + { + break; + } + } + +#ifdef LSB_FIRST + if (action_replay.enabled) + { + int i; + for (i= 0; i> 1; + if (offset > 12) + { + m68k_unused_16_w(address,data); + return; + } + + /* update internal register */ + action_replay.regs[offset] = data; + + /* MODE register */ + if (action_replay.regs[3] == 0xffff) + { + /* check switch status */ + if (action_replay.status == AR_SWITCH_ON) + { + /* reset existing patches */ + areplay_set_status(AR_SWITCH_OFF); + areplay_set_status(AR_SWITCH_ON); + } + + /* enable Cartridge ROM */ + m68k.memory_map[0].base = cart.rom; + } +} + +static void ar_write_regs_2(uint32 address, uint32 data) +{ + /* enable Cartridge ROM */ + if (((address & 0xff) == 0x78) && (data == 0xffff)) + { + m68k.memory_map[0].base = cart.rom; + } +} + +static void ar_write_ram_8(uint32 address, uint32 data) +{ + /* byte writes are handled as word writes, with LSB duplicated in MSB (/LWR is not used) */ + *(uint16 *)(action_replay.ram + (address & 0xfffe)) = (data | (data << 8)); +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/areplay.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/areplay.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/areplay.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/areplay.h index d4e8f268fe..db2aefdebf 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/areplay.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/areplay.h @@ -1,52 +1,52 @@ -/**************************************************************************** - * Genesis Plus - * DATEL Action Replay / Pro Action Replay emulation - * - * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _AREPLAY_H_ -#define _AREPLAY_H_ - -#define AR_SWITCH_OFF (0) -#define AR_SWITCH_ON (1) -#define AR_SWITCH_TRAINER (2) - -extern void areplay_init(void); -extern void areplay_shutdown(void); -extern void areplay_reset(int hard); -extern void areplay_set_status(int status); -extern int areplay_get_status(void); - -#endif +/**************************************************************************** + * Genesis Plus + * DATEL Action Replay / Pro Action Replay emulation + * + * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _AREPLAY_H_ +#define _AREPLAY_H_ + +#define AR_SWITCH_OFF (0) +#define AR_SWITCH_ON (1) +#define AR_SWITCH_TRAINER (2) + +extern void areplay_init(void); +extern void areplay_shutdown(void); +extern void areplay_reset(int hard); +extern void areplay_set_status(int status); +extern int areplay_get_status(void); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_93c.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_93c.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_93c.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_93c.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_93c.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_93c.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_93c.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_93c.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_i2c.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_i2c.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_i2c.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_i2c.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_i2c.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_i2c.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_i2c.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_i2c.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_spi.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_spi.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_spi.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_spi.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_spi.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_spi.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/eeprom_spi.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/eeprom_spi.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/ggenie.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/ggenie.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/ggenie.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/ggenie.c index 8fc3b2314b..2e40b926a0 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/ggenie.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/ggenie.c @@ -1,272 +1,272 @@ -/**************************************************************************** - * Genesis Plus - * Game Genie Hardware emulation - * - * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) - * - * Based on documentation from Charles McDonald - * (http://cgfm2.emuviews.com/txt/genie.txt) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -static struct -{ - uint8 enabled; - uint8 *rom; - uint16 regs[0x20]; - uint16 old[6]; - uint16 data[6]; - uint32 addr[6]; -} ggenie; - -static unsigned int ggenie_read_byte(unsigned int address); -static unsigned int ggenie_read_word(unsigned int address); -static void ggenie_write_byte(unsigned int address, unsigned int data); -static void ggenie_write_word(unsigned int address, unsigned int data); -static void ggenie_write_regs(unsigned int offset, unsigned int data); - -void ggenie_init(void) -{ - memset(&ggenie,0,sizeof(ggenie)); - - /* Store Game Genie ROM (32k) above cartridge ROM + SRAM area */ - if (cart.romsize > 0x810000) return; - ggenie.rom = cart.rom + 0x810000; - - /* Try to load Game Genie ROM file */ - if (load_archive(GG_ROM, ggenie.rom, 0x8000, NULL) > 0) - { -#ifdef LSB_FIRST - int i; - for (i=0; i<0x8000; i+=2) - { - /* Byteswap ROM */ - uint8 temp = ggenie.rom[i]; - ggenie.rom[i] = ggenie.rom[i+1]; - ggenie.rom[i+1] = temp; - } -#endif - - /* $0000-$7fff mirrored into $8000-$ffff */ - memcpy(ggenie.rom + 0x8000, ggenie.rom, 0x8000); - - /* Game Genie hardware is enabled */ - ggenie.enabled = 1; - } -} - -void ggenie_shutdown(void) -{ - if (ggenie.enabled) - { - ggenie_switch(0); - ggenie.enabled = 0; - } -} - -void ggenie_reset(int hard) -{ - if (ggenie.enabled) - { - if (hard) - { - /* clear codes */ - ggenie_switch(0); - - /* reset internal state */ - memset(ggenie.regs,0,sizeof(ggenie.regs)); - memset(ggenie.old,0,sizeof(ggenie.old)); - memset(ggenie.data,0,sizeof(ggenie.data)); - memset(ggenie.addr,0,sizeof(ggenie.addr)); - } - - /* Game Genie ROM is mapped at $000000-$007fff */ - m68k.memory_map[0].base = ggenie.rom; - - /* Internal registers are mapped at $000000-$00001f */ - m68k.memory_map[0].write8 = ggenie_write_byte; - m68k.memory_map[0].write16 = ggenie_write_word; - - /* Disable registers reads */ - m68k.memory_map[0].read16 = NULL; - } -} - -void ggenie_switch(int enable) -{ - int i; - if (enable) - { - /* enable cheats */ - for (i=0; i<6; i++) - { - /* patch is enabled ? */ - if (ggenie.regs[0] & (1 << i)) - { - /* save old value and patch ROM if enabled */ - ggenie.old[i] = *(uint16 *)(cart.rom + ggenie.addr[i]); - *(uint16 *)(cart.rom + ggenie.addr[i]) = ggenie.data[i]; - } - } - } - else - { - /* disable cheats in reversed order in case the same address is used by multiple patches */ - for (i=5; i>=0; i--) - { - /* patch is enabled ? */ - if (ggenie.regs[0] & (1 << i)) - { - /* restore original ROM value */ - *(uint16 *)(cart.rom + ggenie.addr[i]) = ggenie.old[i]; - } - } - } -} - -static unsigned int ggenie_read_byte(unsigned int address) -{ - unsigned int data = ggenie.regs[(address >> 1) & 0x1f]; - return ((address & 1) ? (data & 0xff) : ((data >> 8) & 0xff)); -} - -static unsigned int ggenie_read_word(unsigned int address) -{ - return ggenie.regs[(address >> 1) & 0x1f]; -} - -static void ggenie_write_byte(unsigned int address, unsigned int data) -{ - /* Register offset */ - uint8 offset = (address >> 1) & 0x1f; - - /* /LWR and /UWR are used to decode writes */ - if (address & 1) - { - data = (ggenie.regs[offset] & 0xff00) | (data & 0xff); - } - else - { - data = (ggenie.regs[offset] & 0x00ff) | ((data & 0xff) << 8); - } - - /* Update internal register */ - ggenie_write_regs(offset,data); -} - -static void ggenie_write_word(unsigned int address, unsigned int data) -{ - /* Register offset */ - uint8 offset = (address >> 1) & 0x1f; - - /* Write internal register (full WORD) */ - ggenie_write_regs(offset,data); -} - -static void ggenie_write_regs(unsigned int offset, unsigned int data) -{ - /* update internal register */ - ggenie.regs[offset] = data; - - /* Mode Register */ - if (offset == 0) - { - /* MODE bit */ - if (data & 0x400) - { - /* $0000-$7ffff reads mapped to Cartridge ROM */ - m68k.memory_map[0].base = cart.rom; - m68k.memory_map[0].read8 = NULL; - m68k.memory_map[0].read16 = NULL; - } - else - { - /* $0000-$7ffff reads mapped to Game Genie ROM */ - m68k.memory_map[0].base = ggenie.rom; - m68k.memory_map[0].read8 = NULL; - m68k.memory_map[0].read16 = NULL; - - /* READ_ENABLE bit */ - if (data & 0x200) - { - /* $0000-$7ffff reads mapped to Game Genie Registers */ - /* code doing this should execute in RAM so we don't need to modify base address */ - m68k.memory_map[0].read8 = ggenie_read_byte; - m68k.memory_map[0].read16 = ggenie_read_word; - } - } - - /* LOCK bit */ - if (data & 0x100) - { - /* decode patch address (ROM area only)*/ - /* note: Charles's doc is wrong, first register holds bits 23-16 of patch address */ - ggenie.addr[0] = ((ggenie.regs[2] & 0x3f) << 16) | ggenie.regs[3]; - ggenie.addr[1] = ((ggenie.regs[5] & 0x3f) << 16) | ggenie.regs[6]; - ggenie.addr[2] = ((ggenie.regs[8] & 0x3f) << 16) | ggenie.regs[9]; - ggenie.addr[3] = ((ggenie.regs[11] & 0x3f) << 16) | ggenie.regs[12]; - ggenie.addr[4] = ((ggenie.regs[14] & 0x3f) << 16) | ggenie.regs[15]; - ggenie.addr[5] = ((ggenie.regs[17] & 0x3f) << 16) | ggenie.regs[18]; - - /* decode patch data */ - ggenie.data[0] = ggenie.regs[4]; - ggenie.data[1] = ggenie.regs[7]; - ggenie.data[2] = ggenie.regs[10]; - ggenie.data[3] = ggenie.regs[13]; - ggenie.data[4] = ggenie.regs[16]; - ggenie.data[5] = ggenie.regs[19]; - - /* disable internal registers */ - m68k.memory_map[0].write8 = m68k_unused_8_w; - m68k.memory_map[0].write16 = m68k_unused_16_w; - - /* patch ROM when GG program exits (LOCK bit set) */ - /* this is done here to handle patched program reads faster & more easily */ - /* on real HW, address decoding would be done on each reads */ - ggenie_switch(1); - } - else - { - m68k.memory_map[0].write8 = ggenie_write_byte; - m68k.memory_map[0].write16 = ggenie_write_word; - } - } - - /* RESET register */ - else if (offset == 1) - { - ggenie.regs[1] |= 1; - } -} +/**************************************************************************** + * Genesis Plus + * Game Genie Hardware emulation + * + * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) + * + * Based on documentation from Charles McDonald + * (http://cgfm2.emuviews.com/txt/genie.txt) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +static struct +{ + uint8 enabled; + uint8 *rom; + uint16 regs[0x20]; + uint16 old[6]; + uint16 data[6]; + uint32 addr[6]; +} ggenie; + +static unsigned int ggenie_read_byte(unsigned int address); +static unsigned int ggenie_read_word(unsigned int address); +static void ggenie_write_byte(unsigned int address, unsigned int data); +static void ggenie_write_word(unsigned int address, unsigned int data); +static void ggenie_write_regs(unsigned int offset, unsigned int data); + +void ggenie_init(void) +{ + memset(&ggenie,0,sizeof(ggenie)); + + /* Store Game Genie ROM (32k) above cartridge ROM + SRAM area */ + if (cart.romsize > 0x810000) return; + ggenie.rom = cart.rom + 0x810000; + + /* Try to load Game Genie ROM file */ + if (load_archive(GG_ROM, ggenie.rom, 0x8000, NULL) > 0) + { +#ifdef LSB_FIRST + int i; + for (i=0; i<0x8000; i+=2) + { + /* Byteswap ROM */ + uint8 temp = ggenie.rom[i]; + ggenie.rom[i] = ggenie.rom[i+1]; + ggenie.rom[i+1] = temp; + } +#endif + + /* $0000-$7fff mirrored into $8000-$ffff */ + memcpy(ggenie.rom + 0x8000, ggenie.rom, 0x8000); + + /* Game Genie hardware is enabled */ + ggenie.enabled = 1; + } +} + +void ggenie_shutdown(void) +{ + if (ggenie.enabled) + { + ggenie_switch(0); + ggenie.enabled = 0; + } +} + +void ggenie_reset(int hard) +{ + if (ggenie.enabled) + { + if (hard) + { + /* clear codes */ + ggenie_switch(0); + + /* reset internal state */ + memset(ggenie.regs,0,sizeof(ggenie.regs)); + memset(ggenie.old,0,sizeof(ggenie.old)); + memset(ggenie.data,0,sizeof(ggenie.data)); + memset(ggenie.addr,0,sizeof(ggenie.addr)); + } + + /* Game Genie ROM is mapped at $000000-$007fff */ + m68k.memory_map[0].base = ggenie.rom; + + /* Internal registers are mapped at $000000-$00001f */ + m68k.memory_map[0].write8 = ggenie_write_byte; + m68k.memory_map[0].write16 = ggenie_write_word; + + /* Disable registers reads */ + m68k.memory_map[0].read16 = NULL; + } +} + +void ggenie_switch(int enable) +{ + int i; + if (enable) + { + /* enable cheats */ + for (i=0; i<6; i++) + { + /* patch is enabled ? */ + if (ggenie.regs[0] & (1 << i)) + { + /* save old value and patch ROM if enabled */ + ggenie.old[i] = *(uint16 *)(cart.rom + ggenie.addr[i]); + *(uint16 *)(cart.rom + ggenie.addr[i]) = ggenie.data[i]; + } + } + } + else + { + /* disable cheats in reversed order in case the same address is used by multiple patches */ + for (i=5; i>=0; i--) + { + /* patch is enabled ? */ + if (ggenie.regs[0] & (1 << i)) + { + /* restore original ROM value */ + *(uint16 *)(cart.rom + ggenie.addr[i]) = ggenie.old[i]; + } + } + } +} + +static unsigned int ggenie_read_byte(unsigned int address) +{ + unsigned int data = ggenie.regs[(address >> 1) & 0x1f]; + return ((address & 1) ? (data & 0xff) : ((data >> 8) & 0xff)); +} + +static unsigned int ggenie_read_word(unsigned int address) +{ + return ggenie.regs[(address >> 1) & 0x1f]; +} + +static void ggenie_write_byte(unsigned int address, unsigned int data) +{ + /* Register offset */ + uint8 offset = (address >> 1) & 0x1f; + + /* /LWR and /UWR are used to decode writes */ + if (address & 1) + { + data = (ggenie.regs[offset] & 0xff00) | (data & 0xff); + } + else + { + data = (ggenie.regs[offset] & 0x00ff) | ((data & 0xff) << 8); + } + + /* Update internal register */ + ggenie_write_regs(offset,data); +} + +static void ggenie_write_word(unsigned int address, unsigned int data) +{ + /* Register offset */ + uint8 offset = (address >> 1) & 0x1f; + + /* Write internal register (full WORD) */ + ggenie_write_regs(offset,data); +} + +static void ggenie_write_regs(unsigned int offset, unsigned int data) +{ + /* update internal register */ + ggenie.regs[offset] = data; + + /* Mode Register */ + if (offset == 0) + { + /* MODE bit */ + if (data & 0x400) + { + /* $0000-$7ffff reads mapped to Cartridge ROM */ + m68k.memory_map[0].base = cart.rom; + m68k.memory_map[0].read8 = NULL; + m68k.memory_map[0].read16 = NULL; + } + else + { + /* $0000-$7ffff reads mapped to Game Genie ROM */ + m68k.memory_map[0].base = ggenie.rom; + m68k.memory_map[0].read8 = NULL; + m68k.memory_map[0].read16 = NULL; + + /* READ_ENABLE bit */ + if (data & 0x200) + { + /* $0000-$7ffff reads mapped to Game Genie Registers */ + /* code doing this should execute in RAM so we don't need to modify base address */ + m68k.memory_map[0].read8 = ggenie_read_byte; + m68k.memory_map[0].read16 = ggenie_read_word; + } + } + + /* LOCK bit */ + if (data & 0x100) + { + /* decode patch address (ROM area only)*/ + /* note: Charles's doc is wrong, first register holds bits 23-16 of patch address */ + ggenie.addr[0] = ((ggenie.regs[2] & 0x3f) << 16) | ggenie.regs[3]; + ggenie.addr[1] = ((ggenie.regs[5] & 0x3f) << 16) | ggenie.regs[6]; + ggenie.addr[2] = ((ggenie.regs[8] & 0x3f) << 16) | ggenie.regs[9]; + ggenie.addr[3] = ((ggenie.regs[11] & 0x3f) << 16) | ggenie.regs[12]; + ggenie.addr[4] = ((ggenie.regs[14] & 0x3f) << 16) | ggenie.regs[15]; + ggenie.addr[5] = ((ggenie.regs[17] & 0x3f) << 16) | ggenie.regs[18]; + + /* decode patch data */ + ggenie.data[0] = ggenie.regs[4]; + ggenie.data[1] = ggenie.regs[7]; + ggenie.data[2] = ggenie.regs[10]; + ggenie.data[3] = ggenie.regs[13]; + ggenie.data[4] = ggenie.regs[16]; + ggenie.data[5] = ggenie.regs[19]; + + /* disable internal registers */ + m68k.memory_map[0].write8 = m68k_unused_8_w; + m68k.memory_map[0].write16 = m68k_unused_16_w; + + /* patch ROM when GG program exits (LOCK bit set) */ + /* this is done here to handle patched program reads faster & more easily */ + /* on real HW, address decoding would be done on each reads */ + ggenie_switch(1); + } + else + { + m68k.memory_map[0].write8 = ggenie_write_byte; + m68k.memory_map[0].write16 = ggenie_write_word; + } + } + + /* RESET register */ + else if (offset == 1) + { + ggenie.regs[1] |= 1; + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/ggenie.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/ggenie.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/ggenie.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/ggenie.h index a67f007b5e..29d4c6efb5 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/ggenie.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/ggenie.h @@ -1,51 +1,51 @@ -/**************************************************************************** - * Genesis Plus - * Game Genie Hardware emulation - * - * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) - * - * Based on documentation from Charles McDonald - * (http://cgfm2.emuviews.com/txt/genie.txt) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _GGENIE_H_ -#define _GGENIE_H_ - -/* Function prototypes */ -extern void ggenie_init(void); -extern void ggenie_shutdown(void); -extern void ggenie_reset(int hard); -extern void ggenie_switch(int enable); - -#endif +/**************************************************************************** + * Genesis Plus + * Game Genie Hardware emulation + * + * Copyright (C) 2009-2014 Eke-Eke (Genesis Plus GX) + * + * Based on documentation from Charles McDonald + * (http://cgfm2.emuviews.com/txt/genie.txt) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _GGENIE_H_ +#define _GGENIE_H_ + +/* Function prototypes */ +extern void ggenie_init(void); +extern void ggenie_shutdown(void); +extern void ggenie_reset(int hard); +extern void ggenie_switch(int enable); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/md_cart.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/md_cart.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/md_cart.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/md_cart.c index 2dbef57297..14db4711a1 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/md_cart.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/md_cart.c @@ -1,2232 +1,2232 @@ -/**************************************************************************** - * Genesis Plus - * Mega Drive cartridge hardware support - * - * Copyright (C) 2007-2021 Eke-Eke (Genesis Plus GX) - * - * Many cartridge protections were initially documented by Haze - * (http://haze.mameworld.info/) - * - * Realtec mapper was documented by TascoDeluxe - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "eeprom_i2c.h" -#include "eeprom_spi.h" - -/* Cart database entry */ -typedef struct -{ - uint16 chk_1; /* header checksum */ - uint16 chk_2; /* real checksum */ - uint8 bank_start; /* first mapped bank in $400000-$7fffff region */ - uint8 bank_end; /* last mapped bank in $400000-$7fffff region */ - cart_hw_t cart_hw; /* hardware description */ -} md_entry_t; - -/* Function prototypes */ -static void mapper_sega_w(uint32 data); -static void mapper_512k_w(uint32 address, uint32 data); -static void mapper_ssf2_w(uint32 address, uint32 data); -static void mapper_sf001_w(uint32 address, uint32 data); -static void mapper_sf002_w(uint32 address, uint32 data); -static void mapper_sf004_w(uint32 address, uint32 data); -static uint32 mapper_sf004_r(uint32 address); -static void mapper_t5740_w(uint32 address, uint32 data); -static uint32 mapper_t5740_r(uint32 address); -static void mapper_flashkit_w(uint32 address, uint32 data); -static uint32 mapper_flashkit_r(uint32 address); -static uint32 mapper_smw_64_r(uint32 address); -static void mapper_smw_64_w(uint32 address, uint32 data); -static void mapper_realtec_w(uint32 address, uint32 data); -static void mapper_seganet_w(uint32 address, uint32 data); -static void mapper_32k_w(uint32 data); -static void mapper_64k_w(uint32 data); -static void mapper_64k_multi_w(uint32 address); -static uint32 mapper_128k_multi_r(uint32 address); -static void mapper_256k_multi_w(uint32 address, uint32 data); -static void mapper_wd1601_w(uint32 address, uint32 data); -static uint32 mapper_64k_radica_r(uint32 address); -static uint32 mapper_128k_radica_r(uint32 address); -static void mapper_sr16v1_w(uint32 address, uint32 data); -static void default_time_w(uint32 address, uint32 data); -static void default_regs_w(uint32 address, uint32 data); -static uint32 default_regs_r(uint32 address); -static uint32 default_regs_r_16(uint32 address); -static uint32 custom_regs_r(uint32 address); -static void custom_regs_w(uint32 address, uint32 data); -static void custom_alt_regs_w(uint32 address, uint32 data); -static uint32 topshooter_r(uint32 address); -static void topshooter_w(uint32 address, uint32 data); -static uint32 tekken_regs_r(uint32 address); -static void tekken_regs_w(uint32 address, uint32 data); - -/* Games that need extra hardware emulation: - - copy protection device - - custom ROM banking device -*/ -static const md_entry_t rom_database[] = -{ -/* Funny World & Balloon Boy */ - {0x0000,0x06ab,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, -/* Whac-a-Critter */ - {0xffff,0xf863,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, -/* Earth Defense */ - {0xffff,0x44fb,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, -/* Tom Clown */ - {0x0000,0xc0cd,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, - -/* 1800-in-1 */ - {0x3296,0x2370,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,mapper_128k_multi_r,m68k_unused_8_w,NULL,NULL}}, - -/* Golden Mega 250-in-1 */ - {0xe43c,0x886f,0x08,0x08,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,NULL,m68k_unused_8_w,NULL,mapper_256k_multi_w}}, - -/* RADICA (Volume 1) (bad dump ?) */ - {0x0000,0x2326,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, -/* RADICA (Volume 1) */ - {0x24f4,0xfc84,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, -/* RADICA (Volume 2) */ - {0xd951,0x78d0,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, -/* RADICA (Volume 3 - Super Sonic Gold edition) */ - {0x0000,0x1f25,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, -/* RADICA (Street Fighter II CE edition) */ - {0x1add,0xa838,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, -/* RADICA (Street Fighter II CE edition) (PAL) */ - {0x104f,0x32e9,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, -/* RADICA (Sensible Soccer Plus edition) (PAL) */ - {0x0000,0x1f7f,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_128k_radica_r,m68k_unused_8_w,NULL,NULL}}, - - -/* Tenchi wo Kurau III: Sangokushi Gaiden - Chinese Fighter */ - {0x9490,0x8180,0x40,0x6f,{{0x00,0x00,0x00,0x00},{0xf0000c,0xf0000c,0xf0000c,0xf0000c},{0x400000,0x400004,0x400008,0x40000c},0,1,NULL,NULL,default_regs_r,custom_alt_regs_w}}, - - -/* Top Fighter */ - {0x4eb9,0x5d8b,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, -/* Soul Edge VS Samurai Spirits */ - {0x00ff,0x5d34,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, -/* Mulan */ - {0x0404,0x1b40,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, -/* Pocket Monsters II */ - {0x47f9,0x17e5,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, -/* Lion King 3 */ - {0x0000,0x507c,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, -/* Super King Kong 99 */ - {0x0000,0x7d6e,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, -/* Gunfight 3-in-1 */ - {0x0000,0x6ff8,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, -/* Pokemon Stadium */ - {0x0000,0x843c,0x70,0x7f,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,NULL,NULL,NULL,custom_regs_w}}, - - -/* Tekken 3 Special (original dump) (a bootleg version also exists, with patched protection & different boot routine which reads unused !TIME mapped area) */ - {0x0000,0xc2f0,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,NULL,NULL,tekken_regs_r,tekken_regs_w}}, - - -/* Lion King 2 */ - {0xffff,0x1d9b,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, -/* Squirell King */ - {0x0000,0x8ec8,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, -/* Tiny Toon Adventures 3 */ - {0x2020,0xed9c,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, -/* Lian Huan Pao - Barver Battle Saga (registers accessed by Z80, related to sound engine ?) */ - {0x30b9,0x1c2a,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, -/* Shui Hu Zhuan (registers accessed by Z80, related to sound engine ?) */ - {0x6001,0x0211,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, -/* Feng Shen Ying Jie Chuan (registers accessed by Z80, related to sound engine ?) */ - {0xffff,0x5d98,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, -/* (*) Shui Hu - Feng Yun Zhuan (patched ROM, unused registers) */ - {0x3332,0x872b,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, - - -/* (*) Chao Ji Da Fu Weng (patched ROM, various words witten to register, long word also read from $7E0000, unknown banking hardware ?) */ - {0xa697,0xa697,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x000000,0x000000,0x000000},0,0,NULL,NULL,NULL,default_regs_w}}, - -/* (*) Aq Renkan Awa (patched ROM, ON/OFF bit sequence is written to register, unknown banking hardware ?) */ - {0x8104,0x0517,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400001,0x000000,0x000000,0x000000},0,0,NULL,NULL,NULL,default_regs_w}}, - - -/* (*) Tun Shi Tian Di III (patched ROM, unused register) */ - {0x0000,0x9c5e,0x40,0x40,{{0xab,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400046,0x000000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, - - -/* Ma Jiang Qing Ren - Ji Ma Jiang Zhi */ - {0x0000,0x7037,0x40,0x40,{{0x90,0xd3,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x401000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Super Majon Club */ - {0x0000,0x3b95,0x40,0x40,{{0x90,0xd3,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x401000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Feng Kuang Tao Hua Yuan (original version from Creaton Softec Inc) (a bootleg version also exists with patched protection and minor title screen variations) */ - {0x0000,0x9dc4,0x40,0x40,{{0x90,0xd3,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x401000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, - - -/* (*) Jiu Ji Ma Jiang II - Ye Yan Bian (patched ROM, using expected register value - $0f - crashes the game) (uses 16-bits reads) */ - {0x0c44,0xba81,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x400006},0,0,NULL,NULL,default_regs_r_16,NULL}}, -/* 16 Zhang Ma Jiang (uses 16-bits reads) */ - {0xfb40,0x4bed,0x40,0x40,{{0x00,0xaa,0x00,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x400002,0x000000,0x400006},0,0,NULL,NULL,default_regs_r_16,NULL}}, -/* 16 Tiles Mahjong II (uses 16-bits reads) */ - {0xffff,0x0903,0x40,0x40,{{0x00,0x00,0xc9,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x400004,0x000000},0,0,NULL,NULL,default_regs_r_16,NULL}}, -/* Thunderbolt II (uses 16-bits reads) */ - {0x0000,0x1585,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r_16,NULL}}, - - -/* Chaoji Puke - Super Poker (correct ROM dump, original release is an overdump) */ - {0xffff,0xd7b0,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Super Bubble Bobble */ - {0x0000,0x16cd,0x40,0x40,{{0x55,0x0f,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Tenchi wo Kurau II - The Battle of Red Cliffs (Unl) */ - {0x0000,0xed61,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Huan Le Tao Qi Shu - Smart Mouse */ - {0x0000,0x1a28,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* (*) Hei Tao 2 - Super Big 2 (patched ROM, unused registers) */ - {0x0000,0x5843,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Mighty Morphin Power Rangers - The Fighting Edition */ - {0x0000,0x2288,0x40,0x40,{{0x55,0x0f,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Elf Wor */ - {0x0080,0x3dba,0x40,0x40,{{0x55,0x0f,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Ya-Se Chuanshuo */ - {0xffff,0xd472,0x40,0x40,{{0x63,0x98,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* 777 Casino (For first one, 0x55 works as well. Other values are never used so they are guessed from on other unlicensed games using similar mapper) */ - {0x0000,0xf8d9,0x40,0x40,{{0x63,0x98,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Wu Kong Wai Zhuan (original) (a bootleg version also exists, with patched protection & modified SRAM test routine ?) */ - {0x0000,0x19ff,0x40,0x40,{{0x63,0x98,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Soul Blade */ - {0x0000,0x0c5b,0x40,0x40,{{0x63,0x98,0xc9,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, - - -/* King of Fighter 98 */ - {0x0000,0xd0a0,0x48,0x4f,{{0x00,0x00,0xaa,0xf0},{0xffffff,0xffffff,0xfc0000,0xfc0000},{0x000000,0x000000,0x480000,0x4c0000},0,0,NULL,NULL,default_regs_r,NULL}}, - - -/* Rock Heaven */ - {0x6cca,0x2395,0x50,0x50,{{0x50,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x500008,0x000000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, -/* Rock World */ - {0x3547,0xa3da,0x50,0x50,{{0x50,0xa0,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x500008,0x500208,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, - - -/* Rockman X3 (bootleg version ? two last register returned values are ignored, note that 0xaa/0x18 would work as well) */ - {0x0000,0x9d0e,0x40,0x40,{{0x0c,0x00,0xc9,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x400004,0x400006},0,0,default_regs_r,NULL,default_regs_r,NULL}}, - - -/* (*) Dragon Ball Final Bout (patched ROM, in original code, different switches occurs depending on returned value $00-$0f) */ - {0xc65a,0xc65a,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, -/* (*) Yang Jia Jiang - Yang Warrior Family (patched ROM, register value unused) */ - {0x0000,0x96b0,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, -/* Super Mario 2 1998 */ - {0xffff,0x0474,0x00,0x00,{{0x0a,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, -/* Super Mario World */ - {0x2020,0xb4eb,0x00,0x00,{{0x1c,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, - - -/* King of Fighter 99 */ - {0x0000,0x021e,0x00,0x00,{{0x00,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,custom_regs_r,default_regs_w,NULL,NULL}}, -/* Pocket Monster */ - {0xd6fc,0x1eb1,0x00,0x00,{{0x00,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,custom_regs_r,default_regs_w,NULL,NULL}}, -/* Pocket Monster (bootleg version ? two last register returned values are ignored & first register test has been modified) */ - {0xd6fc,0x6319,0x00,0x00,{{0x14,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,default_regs_r,m68k_unused_8_w,NULL,NULL}}, -/* A Bug's Life (bootleg version ? two last register returned values are ignored & first register test has been modified ?) */ - {0x7f7f,0x2aad,0x00,0x00,{{0x28,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,default_regs_r,m68k_unused_8_w,NULL,NULL}}, - - -/* Game no Kanzume Otokuyou */ - {0x0000,0xf9d1,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,NULL,mapper_seganet_w,NULL,NULL}}, - - -/* Top Shooter (arcade hardware) */ - {0xffff,0x3632,0x20,0x20,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,NULL,NULL,topshooter_r,topshooter_w}} -}; - - -/************************************************************ - Cart Hardware initialization -*************************************************************/ - -void md_cart_init(void) -{ - int i; - - /*************************************************************************************************************** - CARTRIDGE ROM MIRRORING - *************************************************************************************************************** - - MD Cartridge area is mapped to $000000-$3fffff: - - -> when accessing ROM, 68k address lines A1 to A21 can be used by the internal cartridge hardware to decode - full 4MB address range. - -> depending on ROM total size and additional decoding hardware, some address lines might be ignored, - resulting in ROM mirroring. - - Cartridges can use either 8-bits (x2) or 16-bits (x1, x2) Mask ROM chips, each chip size is a factor of 2 bytes: - - -> two 8-bits chips are equivalent to one 16-bits chip, no specific address decoding is required, needed - address lines are simply connected to each chip, upper address lines are ignored and data lines are - connected appropriately to each chip (D0-D7 to one chip, D8-D15 to the other one). - ROM is generally mirrored each N bytes where N=2^(k+1) is the total ROM size (ROM1+ROM2,ROM1+ROM2,...) - - -> one single 16-bits chip do not need specific address decoding, address lines are simply connected - depending on the ROM size, upper address lines being ignored. - ROM is generally mirrored each N bytes where N=2^k is the size of the ROM chip (ROM1,ROM1,ROM1,...) - - -> two 16-bits chips of the same size are equivalent to one chip of double size, address decoding generally - is the same except that specific hardware is used (one address line is generally used for chip selection, - lower ones being used to address the chips and upper ones being ignored). - ROM is generally mirrored each N bytes where N=2^(k+1) is the total ROM size (ROM1,ROM2,ROM1,ROM2,...) - - -> two 16-bits chips with different size are mapped differently. Address decoding is done the same way as - above (one address line used for chip selection) but the ignored & required address lines differ from - one chip to another, which makes ROM mirroring different. - ROM2 size is generally half of ROM1 size and upper half ignored (ROM1,ROM2,XXXX,ROM1,ROM2,XXXX,...) - - From the emulator point of view, we only need to distinguish 2 cases: - - 1/ total ROM size is a factor of 2: ROM is mirrored each 2^k bytes. - - 2/ total ROM size is not a factor of 2: ROM is padded up to 2^k then mirrored each 2^k bytes. - - ******************************************************************************************************************/ - - /* calculate nearest size with factor of 2 */ - unsigned int size = 0x10000; - while (cart.romsize > size) - size <<= 1; - - /* Sonic & Knuckles */ - if (strstr(rominfo.international,"SONIC & KNUCKLES")) - { - /* disable ROM mirroring at $200000-$3fffff (normally mapped to external cartridge) */ - size = 0x400000; - } - - /* total ROM size is not a factor of 2 */ - /* TODO: handle all possible ROM configurations using cartridge database */ - if (cart.romsize < size) - { - if (size < MAXROMSIZE) - { - /* ROM is padded up to 2^k bytes */ - memset(cart.rom + cart.romsize, 0xff, size - cart.romsize); - } - else - { - /* ROM is padded up to max ROM size */ - memset(cart.rom + cart.romsize, 0xff, MAXROMSIZE - cart.romsize); - } - } - - /* ROM is mirrored each 2^k bytes */ - cart.mask = size - 1; - - /* no special external hardware required by default */ - cart.special = 0; - - /********************************************** - DEFAULT CARTRIDGE MAPPING - ***********************************************/ - for (i=0; i<0x40; i++) - { - /* cartridge ROM */ - m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = NULL; - zbank_memory_map[i].write = zbank_unused_w; - } - - for (i=0x40; i<0x80; i++) - { - /* unused area */ - m68k.memory_map[i].base = cart.rom + (i<<16); - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = zbank_unused_r; - zbank_memory_map[i].write = zbank_unused_w; - } - - /* support for Quackshot REV 01 (real) dump */ - if (strstr(rominfo.product,"00004054-01") && (cart.romsize == 0x80000)) - { - /* $000000-$0fffff: first 256K mirrored (A18 not connected to ROM chip, A19 not decoded) */ - for (i=0x00; i<0x10; i++) - { - /* $200000-$3fffff: mirror of $000000-$1fffff (A21 not decoded) */ - m68k.memory_map[i].base = m68k.memory_map[i + 0x20].base = cart.rom + ((i & 0x03) << 16); - } - - /* $100000-$1fffff: second 256K mirrored (A20 connected to ROM chip A18) */ - for (i=0x10; i<0x20; i++) - { - /* $200000-$3fffff: mirror of $000000-$1fffff (A21 not decoded) */ - m68k.memory_map[i].base = m68k.memory_map[i + 0x20].base = cart.rom + 0x40000 + ((i & 0x03) << 16); - } - } - - /********************************************** - BACKUP MEMORY - ***********************************************/ - sram_init(); - eeprom_i2c_init(); - - /* memory-mapped SRAM */ - if (sram.on && !sram.custom) - { - /* SRAM is mapped by default unless it overlaps with ROM area (Phantasy Star 4, Beyond Oasis/Legend of Thor, World Series Baseball 9x, Duke Nukem 3D,...) */ - if (sram.start >= cart.romsize) - { - m68k.memory_map[sram.start >> 16].base = sram.sram; - m68k.memory_map[sram.start >> 16].read8 = sram_read_byte; - m68k.memory_map[sram.start >> 16].read16 = sram_read_word; - m68k.memory_map[sram.start >> 16].write8 = sram_write_byte; - m68k.memory_map[sram.start >> 16].write16 = sram_write_word; - zbank_memory_map[sram.start >> 16].read = sram_read_byte; - zbank_memory_map[sram.start >> 16].write = sram_write_byte; - } - - /* support for Triple Play 96 & Triple Play - Gold Edition mapping */ - else if ((strstr(rominfo.product,"T-172026") != NULL) || (strstr(rominfo.product,"T-172116") != NULL)) - { - /* $000000-$1fffff: cartridge ROM (lower 2MB) */ - /* $200000-$2fffff: SRAM (32KB mirrored) */ - /* NB: existing 4MB ROM dumps include SRAM data at ROM offsets 0x200000-0x2fffff */ - for (i=0x20; i<0x30; i++) - { - m68k.memory_map[i].base = sram.sram; - m68k.memory_map[i].read8 = sram_read_byte; - m68k.memory_map[i].read16 = sram_read_word; - m68k.memory_map[i].write8 = sram_write_byte; - m68k.memory_map[i].write16 = sram_write_word; - zbank_memory_map[i].read = sram_read_byte; - zbank_memory_map[i].write = sram_write_byte; - } - - /* $300000-$3fffff: cartridge ROM (upper 1MB) */ - /* NB: only real (3MB) Mask ROM dumps need ROM offsets 0x200000-0x2fffff to be remapped to this area */ - if (READ_BYTE(cart.rom, 0x200000) != 0xFF) - { - for (i=0x30; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + ((i - 0x10) << 16); - } - } - } - } - - /********************************************** - SVP CHIP - ***********************************************/ - svp = NULL; - if ((READ_BYTE(cart.rom, 0x1c8) == 'S') && (READ_BYTE(cart.rom, 0x1c9) == 'V')) - { - svp_init(); - } - - /********************************************** - LOCK-ON - ***********************************************/ - - /* clear existing patches */ - ggenie_shutdown(); - areplay_shutdown(); - - /* initialize extra hardware */ - switch (config.lock_on) - { - case TYPE_GG: - { - ggenie_init(); - break; - } - - case TYPE_AR: - { - areplay_init(); - break; - } - - case TYPE_SK: - { - /* store S&K ROM above cartridge ROM (and before backup memory) */ - if (cart.romsize > 0x600000) break; - - /* try to load Sonic & Knuckles ROM file (2 MB) */ - if (load_archive(SK_ROM, cart.rom + 0x600000, 0x200000, NULL) == 0x200000) - { - /* check ROM header */ - if (!memcmp(cart.rom + 0x600000 + 0x120, "SONIC & KNUCKLES",16)) - { - /* try to load Sonic 2 & Knuckles UPMEM ROM (256 KB) */ - if (load_archive(SK_UPMEM, cart.rom + 0x900000, 0x40000, NULL) == 0x40000) - { - /* $000000-$1FFFFF is mapped to S&K ROM */ - for (i=0x00; i<0x20; i++) - { - m68k.memory_map[i].base = cart.rom + 0x600000 + (i << 16); - } - -#ifdef LSB_FIRST - for (i=0; i<0x200000; i+=2) - { - /* Byteswap ROM */ - uint8 temp = cart.rom[i + 0x600000]; - cart.rom[i + 0x600000] = cart.rom[i + 0x600000 + 1]; - cart.rom[i + 0x600000 + 1] = temp; - } - - for (i=0; i<0x40000; i+=2) - { - /* Byteswap ROM */ - uint8 temp = cart.rom[i + 0x900000]; - cart.rom[i + 0x900000] = cart.rom[i + 0x900000 + 1]; - cart.rom[i + 0x900000 + 1] = temp; - } -#endif - cart.special |= HW_LOCK_ON; - } - } - } - break; - } - - default: - { - break; - } - } - - /********************************************** - CARTRIDGE EXTRA HARDWARE - ***********************************************/ - memset(&cart.hw, 0, sizeof(cart.hw)); - - /* search for game into database */ - for (i=0; i<(sizeof(rom_database)/sizeof(md_entry_t)); i++) - { - /* known cart found ! */ - if ((rominfo.checksum == rom_database[i].chk_1) && - (rominfo.realchecksum == rom_database[i].chk_2)) - { - int j = rom_database[i].bank_start; - - /* retrieve hardware information */ - memcpy(&cart.hw, &(rom_database[i].cart_hw), sizeof(cart.hw)); - - /* initialize memory handlers for $400000-$7FFFFF region */ - while (j <= rom_database[i].bank_end) - { - if (cart.hw.regs_r) - { - m68k.memory_map[j].read8 = cart.hw.regs_r; - m68k.memory_map[j].read16 = cart.hw.regs_r; - zbank_memory_map[j].read = cart.hw.regs_r; - } - if (cart.hw.regs_w) - { - m68k.memory_map[j].write8 = cart.hw.regs_w; - m68k.memory_map[j].write16 = cart.hw.regs_w; - zbank_memory_map[j].write = cart.hw.regs_w; - } - j++; - } - - /* leave loop */ - break; - } - } - - /* Realtec mapper */ - if (cart.hw.realtec) - { - /* 8k BOOT ROM */ - for (i=0; i<8; i++) - { - memcpy(cart.rom + 0x900000 + i*0x2000, cart.rom + 0x7e000, 0x2000); - } - - /* BOOT ROM is mapped to $000000-$3FFFFF */ - for (i=0x00; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + 0x900000; - } - } - - /* detect specific mappers */ - if (strstr(rominfo.consoletype,"SEGA SSF")) - { - /* Everdrive extended SSF mapper */ - cart.hw.time_w = mapper_512k_w; - - /* cartridge ROM mapping is reinitialized on /VRES */ - cart.hw.bankshift = 1; - } - else if (strstr(rominfo.domestic,"SUPER STREET FIGHTER2")) - { - /* SSF2 mapper */ - cart.hw.time_w = mapper_ssf2_w; - - /* cartridge ROM mapping is reinitialized on /VRES */ - cart.hw.bankshift = 1; - } - else if (strstr(rominfo.product,"T-5740")) - { - /* T-5740XX-XX mapper */ - cart.hw.bankshift = 1; - m68k.memory_map[0x01].read8 = mapper_t5740_r; - zbank_memory_map[0x01].read = mapper_t5740_r; - - /* specific !TIME handlers */ - cart.hw.time_w = mapper_t5740_w; - cart.hw.time_r = eeprom_spi_read; - - /* initialize SPI EEPROM board */ - eeprom_spi_init(); - } - else if (strstr(rominfo.ROMType,"SF") && strstr(rominfo.product,"001")) - { - /* SF-001 mapper */ - m68k.memory_map[0x00].write8 = mapper_sf001_w; - m68k.memory_map[0x00].write16 = mapper_sf001_w; - zbank_memory_map[0x00].write = mapper_sf001_w; - - /* no !TIME handler */ - cart.hw.time_w = m68k_unused_8_w; - - /* cartridge ROM is mapped to $3C0000-$3FFFFF on reset */ - for (i=0x3c; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + (i << 16); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = NULL; - zbank_memory_map[i].write = m68k_unused_8_w; - } - } - else if (strstr(rominfo.ROMType,"SF") && strstr(rominfo.product,"002")) - { - /* SF-002 mapper */ - m68k.memory_map[0x00].write8 = mapper_sf002_w; - m68k.memory_map[0x00].write16 = mapper_sf002_w; - zbank_memory_map[0x00].write = mapper_sf002_w; - - /* no !TIME handler */ - cart.hw.time_w = m68k_unused_8_w; - } - else if (strstr(rominfo.ROMType,"SF") && strstr(rominfo.product,"004")) - { - /* SF-004 mapper */ - m68k.memory_map[0x00].write8 = mapper_sf004_w; - m68k.memory_map[0x00].write16 = mapper_sf004_w; - zbank_memory_map[0x00].write = mapper_sf004_w; - - /* specific !TIME handlers */ - cart.hw.time_r = mapper_sf004_r; - cart.hw.time_w = m68k_unused_8_w; - - /* first 256K ROM bank is mirrored into $000000-$1FFFFF on reset */ - for (i=0x00; i<0x20; i++) - { - m68k.memory_map[i].base = cart.rom + ((i & 0x03) << 16); - } - - /* 32K static RAM mapped to $200000-$2FFFFF is disabled on reset */ - for (i=0x20; i<0x30; i++) - { - m68k.memory_map[i].base = sram.sram; - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = m68k_read_bus_8; - zbank_memory_map[i].write = zbank_unused_w; - } - - /* $300000-$3FFFFF is not mapped */ - for (i=0x30; i<0x40; i++) - { - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = m68k_read_bus_8; - zbank_memory_map[i].write = zbank_unused_w; - } - } - else if (strstr(rominfo.ROMType,"GM") && strstr(rominfo.product,"00000000-42")) - { - /* Flashkit MD mapper */ - m68k.memory_map[0x00].write8 = mapper_flashkit_w; - m68k.memory_map[0x00].write16 = mapper_flashkit_w; - zbank_memory_map[0x00].write = mapper_flashkit_w; - } - else if ((cart.romsize == 0x400000) && - (READ_BYTE(cart.rom, 0x200150) == 'C') && - (READ_BYTE(cart.rom, 0x200151) == 'A') && - (READ_BYTE(cart.rom, 0x200152) == 'N') && - (READ_BYTE(cart.rom, 0x200153) == 'O') && - (READ_BYTE(cart.rom, 0x200154) == 'N')) - { - /* Canon - Legend of the new Gods (4MB dump) */ - cart.hw.time_w = mapper_wd1601_w; - cart.hw.bankshift = 1; - sram.on = 1; - sram.start = 0x200000; - sram.end = 0x201fff; - } - else if ((*(uint16 *)(cart.rom + 0x08) == 0x6000) && (*(uint16 *)(cart.rom + 0x0a) == 0x01f6) && (rominfo.realchecksum == 0xf894)) - { - /* Super Mario World 64 (unlicensed) mapper */ - for (i=0x08; i<0x10; i++) - { - /* lower 512KB mirrored */ - m68k.memory_map[i].base = cart.rom + ((i & 7) << 16); - } - - for (i=0x10; i<0x40; i++) - { - /* unused area */ - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = m68k_read_bus_8; - zbank_memory_map[i].write = zbank_unused_w; - } - - for (i=0x60; i<0x70; i++) - { - /* custom hardware */ - m68k.memory_map[i].base = cart.rom + 0x0f0000; - m68k.memory_map[i].read8 = ((i & 0x07) < 0x04) ? NULL : mapper_smw_64_r; - m68k.memory_map[i].read16 = ((i & 0x07) < 0x04) ? NULL : mapper_smw_64_r; - m68k.memory_map[i].write8 = mapper_smw_64_w; - m68k.memory_map[i].write16 = mapper_smw_64_w; - zbank_memory_map[i].read = ((i & 0x07) < 0x04) ? NULL : mapper_smw_64_r; - zbank_memory_map[i].write = mapper_smw_64_w; - } - } - else if ((*(uint16 *)(cart.rom + 0x04) == 0x0000) && (*(uint16 *)(cart.rom + 0x06) == 0x0104) && (rominfo.checksum == 0x31fc)) - { - /* Micro Machines (USA) custom TMSS bypass logic */ - m68k.memory_map[0xa1].write8 = mapper_sr16v1_w; - } - else if (cart.romsize > 0x400000) - { - /* assume linear ROM mapping by default (max. 10MB) */ - for (i=0x40; i<0xA0; i++) - { - m68k.memory_map[i].base = cart.rom + (i<<16); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - zbank_memory_map[i].read = NULL; - } - } - - /* default write handler for !TIME range ($A130xx)*/ - if (!cart.hw.time_w) - { - cart.hw.time_w = default_time_w; - } -} - -/* hardware that need to be reseted on power on */ -void md_cart_reset(int hard_reset) -{ - int i; - - /* reset cartridge mapping */ - if (cart.hw.bankshift) - { - for (i=0x00; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); - } - } - - /* SVP chip */ - if (svp) - { - svp_reset(); - } - - /* Lock-ON */ - switch (config.lock_on) - { - case TYPE_GG: - { - ggenie_reset(hard_reset); - break; - } - - case TYPE_AR: - { - areplay_reset(hard_reset); - break; - } - - case TYPE_SK: - { - if (cart.special & HW_LOCK_ON) - { - /* disable UPMEM chip at $300000-$3fffff */ - for (i=0x30; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); - } - } - break; - } - - default: - { - break; - } - } -} - -int md_cart_context_save(uint8 *state) -{ - int i; - int bufferptr = 0; - uint8 *base; - - /* cartridge mapping */ - for (i=0; i<0x40; i++) - { - /* get base address */ - base = m68k.memory_map[i].base; - - if (base == sram.sram) - { - /* SRAM */ - state[bufferptr++] = 0xff; - } - else if (base == boot_rom) - { - /* Boot ROM */ - state[bufferptr++] = 0xfe; - } - else - { - /* Cartridge ROM */ - state[bufferptr++] = ((base - cart.rom) >> 16) & 0xff; - } - } - - /* hardware registers */ - save_param(cart.hw.regs, sizeof(cart.hw.regs)); - - /* SVP */ - if (svp) - { - save_param(svp->iram_rom, 0x800); - save_param(svp->dram,sizeof(svp->dram)); - save_param(&svp->ssp1601,sizeof(ssp1601_t)); - } - - return bufferptr; -} - -int md_cart_context_load(uint8 *state) -{ - int i; - int bufferptr = 0; - uint8 offset; - - /* cartridge mapping */ - for (i=0; i<0x40; i++) - { - /* get offset */ - offset = state[bufferptr++]; - - if (offset == 0xff) - { - /* SRAM */ - m68k.memory_map[i].base = sram.sram; - m68k.memory_map[i].read8 = sram_read_byte; - m68k.memory_map[i].read16 = sram_read_word; - m68k.memory_map[i].write8 = sram_write_byte; - m68k.memory_map[i].write16 = sram_write_word; - zbank_memory_map[i].read = sram_read_byte; - zbank_memory_map[i].write = sram_write_byte; - - } - else - { - /* check if SRAM was mapped there before loading state */ - if (m68k.memory_map[i].base == sram.sram) - { - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = NULL; - zbank_memory_map[i].write = zbank_unused_w; - } - - /* ROM */ - m68k.memory_map[i].base = (offset == 0xfe) ? boot_rom : (cart.rom + (offset << 16)); - } - } - - /* hardware registers */ - load_param(cart.hw.regs, sizeof(cart.hw.regs)); - - /* SVP */ - if (svp) - { - load_param(svp->iram_rom, 0x800); - load_param(svp->dram,sizeof(svp->dram)); - load_param(&svp->ssp1601,sizeof(ssp1601_t)); - } - - return bufferptr; -} - -/************************************************************ - MAPPER handlers -*************************************************************/ - -/* - "official" ROM/SRAM bankswitch (Phantasy Star IV, Story of Thor/Beyond Oasis, Sonic 3 & Knuckles) -*/ -static void mapper_sega_w(uint32 data) -{ - int i; - - if (data & 1) - { - if (sram.on) - { - /* Backup RAM mapped to $200000-$20ffff (normally mirrored up to $3fffff but this breaks Sonic Megamix and no game need it) */ - m68k.memory_map[0x20].base = sram.sram; - m68k.memory_map[0x20].read8 = sram_read_byte; - m68k.memory_map[0x20].read16 = sram_read_word; - zbank_memory_map[0x20].read = sram_read_byte; - - /* Backup RAM write protection */ - if (data & 2) - { - m68k.memory_map[0x20].write8 = m68k_unused_8_w; - m68k.memory_map[0x20].write16 = m68k_unused_16_w; - zbank_memory_map[0x20].write = zbank_unused_w; - } - else - { - m68k.memory_map[0x20].write8 = sram_write_byte; - m68k.memory_map[0x20].write16 = sram_write_word; - zbank_memory_map[0x20].write = sram_write_byte; - } - } - - /* S&K lock-on chip */ - if ((cart.special & HW_LOCK_ON) && (config.lock_on == TYPE_SK)) - { - /* S2K upmem chip mapped to $300000-$3fffff (256K mirrored) */ - for (i=0x30; i<0x40; i++) - { - m68k.memory_map[i].base = (cart.rom + 0x900000) + ((i & 3) << 16); - } - } - } - else - { - /* cartridge ROM mapped to $200000-$3fffff */ - for (i=0x20; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - zbank_memory_map[i].read = NULL; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].write = zbank_unused_w; - } - } -} - -/* - Everdrive extended SSF ROM bankswitch - documented by Krikzz (http://krikzz.com/pub/support/mega-ed/dev/extended_ssf.txt) -*/ -static void mapper_512k_w(uint32 address, uint32 data) -{ - uint32 i; - - /* 512K ROM paging */ - uint8 *src = cart.rom + ((data << 19) & cart.mask); - - /* cartridge area ($000000-$3FFFFF) is divided into 8 x 512K banks */ - address = (address << 2) & 0x38; - - /* remap selected ROM page to selected bank */ - for (i=0; i<8; i++) - { - m68k.memory_map[address++].base = src + (i<<16); - } -} - -/* - Super Street Fighter 2 ROM bankswitch - documented by Bart Trzynadlowski (http://emu-docs.org/Genesis/ssf2.txt) -*/ -static void mapper_ssf2_w(uint32 address, uint32 data) -{ - /* only banks 1-7 are remappable, bank 0 remains unchanged */ - if (address & 0x0E) - { - mapper_512k_w(address, data); - } -} - -/* - SF-001 mapper -*/ -static void mapper_sf001_w(uint32 address, uint32 data) -{ - switch ((address >> 8) & 0xf) - { - case 0xe: - { - int i; - - /* bit 6: enable / disable cartridge access */ - if (data & 0x40) - { - /* $000000-$3FFFFF is not mapped */ - for (i=0x00; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + (i << 16); - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - m68k.memory_map[i].write8 = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; - m68k.memory_map[i].write16 = (i > 0x00) ? m68k_unused_16_w : mapper_sf001_w; - zbank_memory_map[i].read = zbank_unused_r; - zbank_memory_map[i].write = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; - } - } - - /* bit 7: enable / disable SRAM & ROM bankswitching */ - else if (data & 0x80) - { - /* 256K ROM bank #15 mapped to $000000-$03FFFF */ - for (i=0x00; i<0x04; i++) - { - m68k.memory_map[i].base = cart.rom + ((0x38 + i) << 16); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - zbank_memory_map[i].read = NULL; - } - - /* 256K ROM banks #2 to #15 mapped to $040000-$3BFFFF (last revision) or $040000-$3FFFFF (older revisions) */ - for (i=0x04; i<(sram.start >> 16); i++) - { - m68k.memory_map[i].base = cart.rom + (i << 16); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - zbank_memory_map[i].read = NULL; - } - - /* 32K static RAM mirrored into $3C0000-$3FFFFF (odd bytes only) (last revision only) */ - while (i<0x40) - { - m68k.memory_map[i].base = sram.sram; - m68k.memory_map[i].read8 = sram_read_byte; - m68k.memory_map[i].read16 = sram_read_word; - m68k.memory_map[i].write8 = sram_write_byte; - m68k.memory_map[i].write16 = sram_write_word; - zbank_memory_map[i].read = sram_read_byte; - zbank_memory_map[i].write = sram_write_byte; - i++; - } - } - else - { - /* 256K ROM banks #1 to #16 mapped to $000000-$3FFFFF (default) */ - for (i=0x00; i<0x40; i++) - { - m68k.memory_map[i].base = cart.rom + (i << 16); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - m68k.memory_map[i].write8 = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; - m68k.memory_map[i].write16 = (i > 0x00) ? m68k_unused_16_w : mapper_sf001_w; - zbank_memory_map[i].read = NULL; - zbank_memory_map[i].write = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; - } - } - - /* bit 5: lock bankswitch hardware when set */ - if (data & 0x20) - { - /* disable bankswitch hardware access until hard reset */ - m68k.memory_map[0x00].write8 = m68k_unused_8_w; - m68k.memory_map[0x00].write16 = m68k_unused_16_w; - zbank_memory_map[0x00].write = m68k_unused_8_w; - } - - return; - } - - default: - { - m68k_unused_8_w(address, data); - return; - } - } -} - -/* - SF-002 mapper -*/ -static void mapper_sf002_w(uint32 address, uint32 data) -{ - int i; - if (data & 0x80) - { - /* $000000-$1BFFFF mapped to $200000-$3BFFFF */ - for (i=0x20; i<0x3C; i++) - { - m68k.memory_map[i].base = cart.rom + ((i & 0x1F) << 16); - } - } - else - { - /* $200000-$3BFFFF mapped to $200000-$3BFFFF */ - for (i=0x20; i<0x3C; i++) - { - m68k.memory_map[i].base = cart.rom + (i << 16); - } - } -} - -/* - SF-004 mapper -*/ -static void mapper_sf004_w(uint32 address, uint32 data) -{ - int i; - switch ((address >> 8) & 0xf) - { - case 0xd: - { - /* bit 7: enable/disable static RAM access */ - if (data & 0x80) - { - /* 32KB static RAM mirrored into $200000-$2FFFFF (odd bytes only) */ - for (i=0x20; i<0x30; i++) - { - m68k.memory_map[i].read8 = sram_read_byte; - m68k.memory_map[i].read16 = sram_read_word; - m68k.memory_map[i].write8 = sram_write_byte; - m68k.memory_map[i].write16 = sram_write_word; - zbank_memory_map[i].read = sram_read_byte; - zbank_memory_map[i].write = sram_write_byte; - } - } - else - { - /* 32KB static RAM disabled at $200000-$2FFFFF */ - for (i=0x20; i<0x30; i++) - { - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].read = m68k_read_bus_8; - zbank_memory_map[i].write = m68k_unused_8_w; - } - } - - return; - } - - case 0x0e: - { - /* bit 5: enable / disable cartridge ROM access */ - if (data & 0x20) - { - /* $000000-$1FFFFF is not mapped */ - for (i=0x00; i<0x20; i++) - { - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - zbank_memory_map[i].read = m68k_read_bus_8; - } - } - - /* bit 6: enable / disable first page mirroring */ - else if (data & 0x40) - { - /* first page ROM bank */ - uint8 base = (m68k.memory_map[0x00].base - cart.rom) >> 16; - - /* 5 x 256K ROM banks mapped to $000000-$13FFFF, starting from first page ROM bank */ - for (i=0x00; i<0x14; i++) - { - m68k.memory_map[i].base = cart.rom + (((base + i) & 0x1f) << 16); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - zbank_memory_map[i].read = NULL; - } - - /* $140000-$1FFFFF is not mapped */ - for (i=0x14; i<0x20; i++) - { - m68k.memory_map[i].read8 = m68k_read_bus_8; - m68k.memory_map[i].read16 = m68k_read_bus_16; - zbank_memory_map[i].read = m68k_read_bus_8; - } - } - else - { - /* first page 256K ROM bank mirrored into $000000-$1FFFFF */ - for (i=0x00; i<0x20; i++) - { - m68k.memory_map[i].base = m68k.memory_map[0].base + ((i & 0x03) << 16); - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - zbank_memory_map[i].read = NULL; - } - } - - /* bit 7: lock ROM bankswitching hardware when cleared */ - if (!(data & 0x80)) - { - /* disable bankswitch hardware access */ - m68k.memory_map[0x00].write8 = m68k_unused_8_w; - m68k.memory_map[0x00].write16 = m68k_unused_16_w; - zbank_memory_map[0x00].write = m68k_unused_8_w; - } - - return; - } - - case 0x0f: - { - /* bits 6-4: select first page ROM bank (8 x 256K ROM banks) */ - uint8 base = ((data >> 4) & 7) << 2; - - if (m68k.memory_map[0].base == m68k.memory_map[4].base) - { - /* selected 256K ROM bank mirrored into $000000-$1FFFFF */ - for (i=0x00; i<0x20; i++) - { - m68k.memory_map[i].base = cart.rom + ((base + (i & 0x03)) << 16); - } - } - else - { - /* 5 x 256K ROM banks mapped to $000000-$13FFFF, starting from selected bank */ - for (i=0x00; i<0x14; i++) - { - m68k.memory_map[i].base = cart.rom + (((base + i) & 0x1f) << 16); - } - } - - return; - } - - default: - { - m68k_unused_8_w(address, data); - return; - } - } -} - -static uint32 mapper_sf004_r(uint32 address) -{ - /* return first page 256K bank index ($00,$10,$20,...,$70) */ - return (((m68k.memory_map[0x00].base - cart.rom) >> 18) << 4); -} - -/* - T-5740xx-xx mapper -*/ -static void mapper_t5740_w(uint32 address, uint32 data) -{ - int i; - uint8 *base; - - switch (address & 0xff) - { - case 0x01: /* mode register */ - { - /* bits 7-4: unused ? */ - /* bit 3: enable SPI registers access ? */ - /* bit 2: not used ? */ - /* bit 1: enable bankswitch registers access ? */ - /* bit 0: always set, enable hardware access ? */ - return; - } - - case 0x03: /* page #5 register */ - { - /* map any of 16 x 512K ROM banks to $280000-$2FFFFF */ - base = cart.rom + ((data & 0x0f) << 19); - for (i=0x28; i<0x30; i++) - { - m68k.memory_map[i].base = base + ((i & 0x07) << 16); - } - return; - } - - case 0x05: /* page #6 register */ - { - /* map any of 16 x 512K ROM banks to $300000-$37FFFF */ - base = cart.rom + ((data & 0x0f) << 19); - for (i=0x30; i<0x38; i++) - { - m68k.memory_map[i].base = base + ((i & 0x07) << 16); - } - return; - } - - case 0x07: /* page #7 register */ - { - /* map any of 16 x 512K ROM banks to $380000-$3FFFFF */ - base = cart.rom + ((data & 0x0f) << 19); - for (i=0x38; i<0x40; i++) - { - m68k.memory_map[i].base = base + ((i & 0x07) << 16); - } - return; - } - - case 0x09: /* serial EEPROM SPI board support */ - { - eeprom_spi_write(data); - return; - } - - default: - { - /* unknown registers */ - m68k_unused_8_w(address, data); - return; - } - } -} - -static uint32 mapper_t5740_r(uint32 address) -{ - /* By default, first 32K of each eight 512K pages mapped in $000000-$3FFFFF are mirrored in the 512K page */ - /* mirroring is disabled/enabled when a specific number of words is being read from specific ROM addresses */ - /* Exact decoding isn't known but mirrored data is expected on startup when reading a few times from $181xx */ - /* this area doesn't seem to be accessed as byte later so it seems safe to always return mirrored data here */ - if ((address & 0xff00) == 0x8100) - { - return READ_BYTE(cart.rom , (address & 0x7fff)); - } - - return READ_BYTE(cart.rom, address); -} - -/* - FlashKit MD mapper (very limited M29W320xx Flash memory support -- enough for unlicensed games using device signature as protection) -*/ -static void mapper_flashkit_w(uint32 address, uint32 data) -{ - /* Increment Bus Write counter */ - cart.hw.regs[0]++; - - /* Wait for 3 consecutive bus writes */ - if (cart.hw.regs[0] == 3) - { - /* assume 'Auto Select' command */ - m68k.memory_map[0x0].read16 = mapper_flashkit_r; - } - else if (cart.hw.regs[0] == 4) - { - /* assume 'Read/Reset' command */ - m68k.memory_map[0x0].read16 = NULL; - - /* reset Bus Write counter */ - cart.hw.regs[0] = 0; - } -} - -static uint32 mapper_flashkit_r(uint32 address) -{ - /* hard-coded device signature */ - switch (address & 0x06) - { - case 0x00: /* Manufacturer Code (STMicroelectronics) */ - return 0x0020; - case 0x02: /* Device Code (M29W320EB) */ - return 0x2257; - default: /* not supported */ - return 0xffff; - } -} - -/* - Super Mario World 64 (unlicensed) mapper -*/ -static void mapper_smw_64_w(uint32 address, uint32 data) -{ - /* internal registers (saved to backup RAM) */ - switch ((address >> 16) & 0x07) - { - case 0x00: /* $60xxxx */ - { - if (address & 2) - { - /* $600003 data write mode ? */ - switch (sram.sram[0x00] & 0x07) - { - case 0x00: - { - /* update value returned at $660001-$660003 */ - sram.sram[0x06] = ((sram.sram[0x06] ^ sram.sram[0x01]) ^ data) & 0xFE; - break; - } - - case 0x01: - { - /* update value returned at $660005-$660007 */ - sram.sram[0x07] = data & 0xFE; - break; - } - - case 0x07: - { - /* update selected ROM bank (upper 512K) mapped at $610000-$61ffff */ - m68k.memory_map[0x61].base = m68k.memory_map[0x69].base = cart.rom + 0x080000 + ((data & 0x1c) << 14); - break; - } - - default: - { - /* unknown mode */ - break; - } - } - - /* $600003 data register */ - sram.sram[0x01] = data; - } - else - { - /* $600001 ctrl register */ - sram.sram[0x00] = data; - } - return; - } - - case 0x01: /* $61xxxx */ - { - if (address & 2) - { - /* $610003 ctrl register */ - sram.sram[0x02] = data; - } - return; - } - - case 0x04: /* $64xxxx */ - { - if (address & 2) - { - /* $640003 data register */ - sram.sram[0x04] = data; - } - else - { - /* $640001 data register */ - sram.sram[0x03] = data; - } - return; - } - - case 0x06: /* $66xxxx */ - { - /* unknown */ - return; - } - - case 0x07: /* $67xxxx */ - { - if (!(address & 2)) - { - /* $670001 ctrl register */ - sram.sram[0x05] = data; - - /* upper 512K ROM bank-switching enabled ? */ - if (sram.sram[0x02] & 0x80) - { - /* update selected ROM bank (upper 512K) mapped at $600000-$60ffff */ - m68k.memory_map[0x60].base = m68k.memory_map[0x68].base = cart.rom + 0x080000 + ((data & 0x1c) << 14); - } - } - return; - } - - default: /* not used */ - { - m68k_unused_8_w(address, data); - return; - } - } -} - -static uint32 mapper_smw_64_r(uint32 address) -{ - /* internal registers (saved to backup RAM) */ - switch ((address >> 16) & 0x03) - { - case 0x02: /* $66xxxx */ - { - switch ((address >> 1) & 7) - { - case 0x00: return sram.sram[0x06]; - case 0x01: return sram.sram[0x06] + 1; - case 0x02: return sram.sram[0x07]; - case 0x03: return sram.sram[0x07] + 1; - case 0x04: return sram.sram[0x08]; - case 0x05: return sram.sram[0x08] + 1; - case 0x06: return sram.sram[0x08] + 2; - case 0x07: return sram.sram[0x08] + 3; - } - } - - case 0x03: /* $67xxxx */ - { - uint8 data = (sram.sram[0x02] & 0x80) ? ((sram.sram[0x05] & 0x40) ? (sram.sram[0x03] & sram.sram[0x04]) : (sram.sram[0x03] ^ 0xFF)) : 0x00; - - if (address & 2) - { - /* $670003 */ - data &= 0x7f; - } - else - { - /* $66xxxx data registers update */ - if (sram.sram[0x05] & 0x80) - { - if (sram.sram[0x05] & 0x20) - { - /* update $660009-$66000f data register */ - sram.sram[0x08] = (sram.sram[0x04] << 2) & 0xFC; - } - else - { - /* update $660001-$660003 data register */ - sram.sram[0x06] = (sram.sram[0x01] ^ (sram.sram[0x03] << 1)) & 0xFE; - } - } - } - - return data; - } - - default: /* 64xxxx-$65xxxx */ - { - return 0x00; - } - } -} - -/* - Realtec ROM bankswitch (Earth Defend, Balloon Boy & Funny World, Whac-A-Critter) - (Note: register usage is inverted in TascoDlx documentation) -*/ -static void mapper_realtec_w(uint32 address, uint32 data) -{ - switch (address) - { - case 0x402000: - { - /* number of mapped 64k blocks (the written value is a number of 128k blocks) */ - cart.hw.regs[2] = data << 1; - return; - } - - case 0x404000: - { - /* 00000xxx */ - cart.hw.regs[0] = data & 7; - return; - } - - case 0x400000: - { - /* 00000yy1 */ - cart.hw.regs[1] = data & 6; - - /* ensure mapped size is not null */ - if (cart.hw.regs[2]) - { - /* mapped start address is 00yy xxx0 0000 0000 0000 0000 */ - uint32 base = (cart.hw.regs[0] << 1) | (cart.hw.regs[1] << 3); - - /* selected blocks are mirrored into the whole cartridge area */ - int i; - for (i=0x00; i<0x40; i++) - { - m68k.memory_map[i].base = &cart.rom[(base + (i % cart.hw.regs[2])) << 16]; - } - } - return; - } - } -} - -/* Game no Kanzume Otokuyou ROM Mapper */ -static void mapper_seganet_w(uint32 address, uint32 data) -{ - if ((address & 0xff) == 0xf1) - { - int i; - if (data & 1) - { - /* ROM Write protected */ - for (i=0; i<0x40; i++) - { - m68k.memory_map[i].write8 = m68k_unused_8_w; - m68k.memory_map[i].write16 = m68k_unused_16_w; - zbank_memory_map[i].write = zbank_unused_w; - } - } - else - { - /* ROM Write enabled */ - for (i=0; i<0x40; i++) - { - m68k.memory_map[i].write8 = NULL; - m68k.memory_map[i].write16 = NULL; - zbank_memory_map[i].write = NULL; - } - } - } -} - -/* - Custom ROM Bankswitch used in Soul Edge VS Samurai Spirits, Top Fighter, Mulan, Pocket Monsters II, Lion King 3, Super King Kong 99, Pokemon Stadium -*/ -static void mapper_32k_w(uint32 data) -{ - int i; - - /* 64 x 32k banks */ - if (data) - { - for (i=0; i<0x10; i++) - { - /* Remap to unused ROM area */ - m68k.memory_map[i].base = &cart.rom[0x400000 + (i << 16)]; - - /* address = address OR (value << 15) */ - memcpy(m68k.memory_map[i].base, cart.rom + ((i << 16) | (data & 0x3f) << 15), 0x8000); - memcpy(m68k.memory_map[i].base + 0x8000, cart.rom + ((i << 16) | ((data | 1) & 0x3f) << 15), 0x8000); - } - } - else - { - /* reset default $000000-$0FFFFF mapping */ - for (i=0; i<16; i++) - { - m68k.memory_map[i].base = &cart.rom[i << 16]; - } - } -} - -/* - Custom ROM Bankswitch used in Chinese Fighter III -*/ -static void mapper_64k_w(uint32 data) -{ - int i; - - /* 16 x 64k banks */ - if (data) - { - /* bank is mapped at $000000-$0FFFFF */ - for (i=0; i<16; i++) - { - m68k.memory_map[i].base = &cart.rom[(data & 0xf) << 16]; - } - } - else - { - /* reset default $000000-$0FFFFF mapping */ - for (i=0; i<16; i++) - { - m68k.memory_map[i].base = &cart.rom[(i & 0xf) << 16]; - } - } -} - -/* - Custom ROM Bankswitch used in pirate "Multi-in-1" cartridges, A Bug's Life, King of Fighter 99, Pocket Monster, Rockman X3 - */ -static void mapper_64k_multi_w(uint32 address) -{ - int i; - - /* 64 x 64k banks */ - for (i=0; i<64; i++) - { - m68k.memory_map[i].base = &cart.rom[((address + i) & 0x3f) << 16]; - } -} - -/* - Custom ROM Bankswitch used in pirate "1800-in-1" cartridge - */ -static uint32 mapper_128k_multi_r(uint32 address) -{ - int i; - - /* 16 x 128k banks (2MB ROM) */ - /* Bank index (B3 B2 B1 B0) is encoded in address lower byte = {0 X B0 B1 X B2 B3 0} */ - /* Note: {0 B0 X B1 X B2 B3 0} also works, see below for the 9 unique values being used for all menu entries - read16 00A13000 (0002FBEE) => 0x000000-0x03ffff (2x128KB) - read16 00A13018 (00FF2056) => 0x040000-0x07ffff (2x128KB) - read16 00A13004 (00FF2120) => 0x080000-0x0bffff (2x128KB) - read16 00A1301C (00FF20A6) => 0x0c0000-0x0fffff (2x128KB) - read16 00A1300A (00FF20BA) => 0x100000-0x13ffff (2x128KB) - read16 00A1301A (00FF20CE) => 0x140000-0x17ffff (2x128KB) - read16 00A1300E (00FF20F4) => 0x180000-0x1bffff (2x128KB) - read16 00A1301E (00FF2136) => 0x1c0000-0x1dffff (1x128KB) - read16 00A1307E (00FF2142) => 0x1e0000-0x1fffff (1x128KB) - */ - int bank = ((address & 0x02) << 2) | (address & 0x04) | ((address & 0x10) >> 3) | ((address & 0x20) >> 5); - - /* remap cartridge area (64 x 64k banks) */ - address = bank << 1; - for (i=0x00; i<0x40; i++) - { - m68k.memory_map[i].base = &cart.rom[((address + i) & 0x3f) << 16]; - } - - /* returned value changes the menu title and number of entries in the 'game' list (the number of distinct games does not change though) */ - /* 0x00 => 9-in-1 */ - /* 0x01 => 190-in-1 */ - /* 0x02 => 888-in-1 */ - /* 0x03 => 1800-in-1 */ - /* real cartridge board has switches to select between the four different menus but here we force the largest menu selection (each other menus being a subset of the next larger menu) */ - return 0x03; -} - -/* - Custom ROM Bankswitch used in pirate "Golden Mega 250-in-1" cartridge - */ -static void mapper_256k_multi_w(uint32 address, uint32 data) -{ - int i; - - /* 8 x 256k banks (2MB ROM) */ - /* Bank index (B2 B1 B0) is encoded in data lower byte = {B1 B0 X X 0 0 0 B2} */ - /* Note: {X B0 B1 B2 0 0 0 X}, {B1 B0 X B2 0 0 0 X} or {X B0 B1 X 0 0 0 B2} also work, see below for the 4 unique values being used for all menu entries - write16 00089000 = 0000 (00FF0006) => 0x000000-0x03ffff (1x256KB) - write16 00089000 = 0040 (00FF0006) => 0x040000-0x07ffff (1x256KB) - write16 00089000 = 00A0 (00FF0006) => 0x080000-0x0fffff (2x256KB) - write16 00089000 = 0011 (00FF0006) => 0x100000-0x1fffff (4x256KB) - */ - int bank = ((data & 0x01) << 2) | ((data & 0xc0) >> 6); - - /* remap cartridge area (64 x 64k banks) */ - address = bank << 2; - for (i=0x00; i<0x40; i++) - { - m68k.memory_map[i].base = &cart.rom[((address + i) & 0x3f) << 16]; - } -} - -/* - Custom ROM Bankswitch used in "Canon - Legend of the New Gods" - (uses WD1601 QFPL V1.01 board also used in chinese X-in-1 pirates sold by mindkids) - */ -static void mapper_wd1601_w(uint32 address, uint32 data) -{ - int i; - - /* !TIME write16 0xA13002 = 0x3002 (00FFFE0C) */ - /* The board probably allows up to 256MB Flash ROM remapping but this game only has 4MB ROM chip */ - if ((address & 0xfe) == 0x02) - { - /* upper 2MB ROM mapped to $000000-$1fffff */ - for (i=0; i<0x20; i++) - { - m68k.memory_map[i].base = &cart.rom[(0x20 + i) << 16]; - } - - /* backup RAM (8KB) mapped to $2000000-$3fffff */ - for (i=0x20; i<0x40; i++) - { - m68k.memory_map[i].base = sram.sram; - m68k.memory_map[i].read8 = sram_read_byte; - m68k.memory_map[i].read16 = sram_read_word; - m68k.memory_map[i].write8 = sram_write_byte; - m68k.memory_map[i].write16 = sram_write_word; - zbank_memory_map[i].read = sram_read_byte; - zbank_memory_map[i].write = sram_write_byte; - } - } -} - -/* - Custom ROM Bankswitch used in RADICA cartridges - +++++++++++++++++++++++++++++++++++++++++++++++ - Two different boards seem to exist (one with support for 64KB banks mapping and another one supporting 128KB banks + battery-RAM). - Radica Volume 1 requires 64KB banks mapping as the menu is located at a 64KB boundary. - Sensible Soccer Plus edition requires 128KB banks mapping with only VA6-VA2 being used to select bank index (VA1 is ignored). - Sensible Soccer Plus edition also requires 8KB backup RAM to be mapped in higher 2MB range. - Other games support both 64KB or 128KB mapping so it's not clear what exact board they are using but none require SRAM so we use 64KB mapper by default. - Note that Radica Volume 3 uses similar ROM mapping as Sensible Soccer Plus edition so it might be using same 128KB board, without any SRAM chip connected. -*/ -static uint32 mapper_64k_radica_r(uint32 address) -{ - int i = 0; - - /* 64 x 64k banks */ - /* - Volume 1 - -------- - 000000h-0fffffh: Kid Chameleon : !TIME read16 0xA13000 (00FF103A) - 100000h-1fffffh: Dr Robotnik's Mean Bean Machine : !TIME read16 0xA13020 (00FF101E) - 200000h-27ffffh: Sonic The Hedgehog : !TIME read16 0xA13040 (00FF101E) - 280000h-2fffffh: Golden Axe : !TIME read16 0xA13050 (00FF101E) - 300000h-37ffffh: Altered Beast : !TIME read16 0xA13060 (00FF101E) - 380000h-39ffffh: Flicky : !TIME read16 0xA13070 (00FF101E) - 3a0000h-3effffh: N/A : N/A - 3f0000h-3fffffh: Radica Menu (64 KB) : !TIME read16 0xA1307E (00FF1006) - - Volume 2 - -------- - 000000h-0fffffh: Sonic The Hedgehog 2 : !TIME read16 0xA13000 (00FF103A) - 100000h-1fffffh: The Ooze : !TIME read16 0xA13020 (00FF101E) - 200000h-2fffffh: Ecco The Dolphin : !TIME read16 0xA13040 (00FF101E) - 300000h-37ffffh: Gain Ground : !TIME read16 0xA13060 (00FF101E) - 380000h-3bffffh: Alex Kidd in Enchanted Castle : !TIME read16 0xA13070 (00FF101E) - 3c0000h-3dffffh: Columns : !TIME read16 0xA13078 (00FF101E) - 3e0000h-3fffffh: Radica Menu (128 KB) : !TIME read16 0xA1307C (00FF1006) - - Volume 3 - Super Sonic Gold edition - ----------------------------------- - 000000h-01ffffh: Radica Menu (128 KB) : N/A - 020000h-07ffffh: N/A : N/A - 080000h-0fffffh: Sonic The Hedgehog : !TIME read16 0xA13010 (00FF1012) - 100000h-1fffffh: Sonic The Hedgehog 2 : !TIME read16 0xA13020 (00FF1012) - 200000h-2fffffh: Sonic Spinball : !TIME read16 0xA13040 (00FF1012) - 300000h-3fffffh: Dr Robotnik's Mean Bean Machine : !TIME read16 0xA13060 (00FF1012) - - Street Fighter 2 CE edition - --------------------------- - 000000h-2fffffh: Street Fighter 2 CE : !TIME read16 0xA13000 (00FF103A) - 300000h-3bffffh: Ghouls'n Ghosts : !TIME read16 0xA13060 (00FF101E) - 3c0000h-3dffffh: Radica Menu (128 KB) : !TIME read16 0xA13078 (00FF1006) - 3e0000h-3fffffh: N/A : N/A - */ - int index = (address >> 1) & 0x3F; - - /* $000000-$3fffff area is mapped to selected banks (OR gates between VA21-VA16 and selected index) */ - for (i = 0x00; i < 0x40; i++) - { - m68k.memory_map[i].base = &cart.rom[(index | i) << 16]; - } - - return 0xffff; -} - -static uint32 mapper_128k_radica_r(uint32 address) -{ - int i = 0; - - /* 32 x 128k banks */ - /* - Sensible Soccer Plus edition - ---------------------------- - 000000h-01ffffh: Radica Menu (128 KB) : N/A - 020000h-07ffffh: N/A : N/A - 080000h-0fffffh: Sensible Soccer : !TIME read16 0xA13010 (00FF1012) - 100000h-1fffffh: Mega-Lo-Mania : !TIME read16 0xA13022 (00FF1012) - 200000h-37ffffh: Cannon Fodder : !TIME read16 0xA13042 (00FF1012) - 380000h-3fffffh: N/A : N/A - - Note: address bit 1 is ignored for bank selection but might be used to enable/disable SRAM mapping ? - */ - int index = (address >> 1) & 0x3E; - - /* $000000-$1fffff area is mapped to selected banks (OR gates between VA20-VA17 and selected index) */ - for (i = 0x00; i < 0x20; i++) - { - m68k.memory_map[i].base = &cart.rom[(index | i) << 16]; - } - - /* $200000-$3fffff area is mapped to 8KB SRAM (mirrored) */ - for (i = 0x20; i < 0x40; i++) - { - m68k.memory_map[i].base = sram.sram; - m68k.memory_map[i].read8 = sram_read_byte; - m68k.memory_map[i].read16 = sram_read_word; - m68k.memory_map[i].write8 = sram_write_byte; - m68k.memory_map[i].write16 = sram_write_word; - zbank_memory_map[i].read = sram_read_byte; - zbank_memory_map[i].write = sram_write_byte; - } - - return 0xffff; -} - - -/* - Custom logic (ST 16S25HB1 PAL) used in Micro Machines US cartridge (SR16V1.1 board) - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - /VRES is asserted after write access to 0xA14101 (TMSS bank-shift register) - with D0=1 (cartridge ROM access enabled instead of TMSS Boot ROM) being detected -*/ -static void mapper_sr16v1_w(uint32 address, uint32 data) -{ - /* 0xA10000-0xA1FFFF address range is mapped to I/O and Control registers */ - ctrl_io_write_byte(address, data); - - /* cartridge uses /LWR, /AS and VA1-VA18 (only VA8-VA17 required to decode access to TMSS bank-shift register) */ - if ((address & 0xff01) == 0x4101) - { - /* cartridge ROM is enabled when D0=1 */ - if (data & 0x01) - { - gen_reset(0); - } - } -} - -/************************************************************ - default !TIME signal handler -*************************************************************/ - -static void default_time_w(uint32 address, uint32 data) -{ - /* enable multi-game cartridge mapper by default */ - if (address < 0xa13060) - { - mapper_64k_multi_w(address); - return; - } - - /* enable "official" cartridge mapper by default */ - if (address > 0xa130f1) - { - mapper_512k_w(address, data); - } - else - { - mapper_sega_w(data); - } -} - - -/************************************************************ - Internal register handlers -*************************************************************/ - -static uint32 default_regs_r(uint32 address) -{ - int i; - for (i=0; i<4; i++) - { - if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) - { - return cart.hw.regs[i]; - } - } - return m68k_read_bus_8(address); -} - -static uint32 default_regs_r_16(uint32 address) -{ - int i; - for (i=0; i<4; i++) - { - if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) - { - return (cart.hw.regs[i] << 8); - } - } - return m68k_read_bus_16(address); -} - -static void default_regs_w(uint32 address, uint32 data) -{ - int i; - for (i=0; i<4; i++) - { - if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) - { - cart.hw.regs[i] = data; - return; - } - } - m68k_unused_8_w(address, data); -} - -/* basic register shifting hardware (Bug's Life, Pocket Monster) */ -static uint32 custom_regs_r(uint32 address) -{ - int i; - for (i=0; i<4; i++) - { - if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) - { - return cart.hw.regs[i] >> 1; - } - } - - return m68k_read_bus_8(address); -} - -/* custom register hardware (Top Fighter, Lion King III, Super Donkey Kong 99, Mulan, Pocket Monsters II, Pokemon Stadium) */ -static void custom_regs_w(uint32 address, uint32 data) -{ - uint8 temp; - - /* ROM bankswitch */ - if ((address >> 16) > 0x6f) - { - mapper_32k_w(data); - return; - } - - /* write register */ - default_regs_w(address, data); - - /* bitswapping */ - temp = cart.hw.regs[0]; - switch (cart.hw.regs[1] & 3) - { - case 0: - cart.hw.regs[2] = (temp << 1); - break; - - case 1: - cart.hw.regs[2] = (temp >> 1); - return; - - case 2: - cart.hw.regs[2] = ((temp >> 4) | ((temp & 0x0F) << 4)); - return; - - default: - cart.hw.regs[2] = (((temp >> 7) & 0x01) | ((temp >> 5) & 0x02) | - ((temp >> 3) & 0x04) | ((temp >> 1) & 0x08) | - ((temp << 1) & 0x10) | ((temp << 3) & 0x20) | - ((temp << 5) & 0x40) | ((temp << 7) & 0x80)); - return; - } -} - -/* alternate custom register hardware (Chinese Fighters III) */ -static void custom_alt_regs_w(uint32 address, uint32 data) -{ - /* ROM bankswitch */ - if ((address >> 16) > 0x5f) - { - mapper_64k_w(data); - return; - } - - /* write regs */ - default_regs_w(address, data); -} - - -/* "Tekken 3 Special" custom register hardware */ -static uint32 tekken_regs_r(uint32 address) -{ - /* data output */ - if ((address & 0x0e) == 0x02) - { - /* maybe depends on mode bits ? */ - return (cart.hw.regs[0] - 1); - } - - return m68k_read_bus_16(address); -} - -static void tekken_regs_w(uint32 address, uint32 data) -{ - switch (address & 0x0e) - { - case 0x00: - { - /* data output reset ? (game writes $FF before & after protection check) */ - cart.hw.regs[0]= 0x00; - break; - } - - case 0x02: - { - /* read only ? */ - break; - } - - case 0x0c: - { - /* data output mode bit 0 ? (game writes $01) */ - break; - } - - case 0x0e: - { - /* data output mode bit 1 ? (never written by game) */ - break; - } - - default: - { - /* data input (only connected to D0 ?)*/ - if (data & 1) - { - /* 4-bit hardware register ($400004 corresponds to bit0, $400006 to bit1, etc) */ - cart.hw.regs[0] |= 1 << (((address - 0x04) >> 1) & 3); - } - break; - } - } -} - -/* "Top Shooter" arcade board hardware */ -static uint32 topshooter_r(uint32 address) -{ - if (address < 0x202000) - { - uint8 temp = 0xff; - - switch (address & 0xff) - { - case 0x43: - { - if (input.pad[0] & INPUT_A) temp &= ~0x80; /* Shoot */ - if (input.pad[0] & INPUT_B) temp &= ~0x10; /* Bet */ - if (input.pad[0] & INPUT_START) temp &= ~0x20; /* Start */ - break; - } - - case 0x45: /* ??? (DOWN) & Service Mode (UP) */ - { - if (input.pad[0] & INPUT_UP) temp &= ~0x08; /* Service Mode */ - if (input.pad[0] & INPUT_DOWN) temp &= ~0x10; /* ???, used in service menu to select next option */ - break; - } - - case 0x47: - { - if (input.pad[0] & INPUT_RIGHT) temp &= ~0x03; /* Insert 10 coins */ - break; - } - - case 0x49: - { - if (input.pad[0] & INPUT_LEFT) temp &= ~0x03; /* Clear coins */ - if (input.pad[0] & INPUT_C) temp &= ~0x01; /* Insert XXX coins */ - break; - } - - case 0x51: - { - temp = 0xA5; - break; - } - - default: - { - temp = m68k_read_bus_8(address); - break; - } - } - return temp; - } - - return READ_BYTE(sram.sram , address & 0xffff); -} - -static void topshooter_w(uint32 address, uint32 data) -{ - if (address >= 0x202000) - { - WRITE_BYTE(sram.sram , address & 0xffff, data); - return; - } - - m68k_unused_8_w(address, data); -} - - -/* Sega Channel hardware (not emulated) */ -/* - -$A13004: BUSY ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - -Unused read16 00A13004 (00005B54) -Unused read16 00A13004 (00005B70) -Unused read16 00A13006 (00005B7C) - -Unused read16 00A13004 (00005BC4) -Unused read16 00A13004 (00005BDA) - -Unused write16 00A13032 = 0004 (00005706) -Unused write16 00A130F0 = 0000 (0000570E) - -Unused write16 00A130F0 = 0000 (0000463E) -Unused write16 00A130F2 = 0001 (00004646) -Unused write16 00A130F4 = 0002 (0000464E) -Unused write16 00A130F6 = 0003 (00004656) -Unused write16 00A130F8 = 0004 (0000465E) -Unused write16 00A130FA = 0005 (00004666) - -Unused write16 00A13032 = 0004 (00005706) -Unused write16 00A13032 = 0104 (0000579E) - -Unused write16 00380000 = ACDC (00005718) -Unused write16 00380002 = 0000 (00005722) -Unused read16 00380000 (0000572C) -Unused write16 00A13032 = 0104 (0000579E) -Unused write16 00300000 = ACDC (000057B2) -Unused write16 00380000 = 0000 (000057BC) -Unused read16 00300000 (000057C6) - -static uint32 sega_channel_r(uint32 address) -{ - return m68k_read_bus_16(address);; -} - -static void sega_channel_w(uint32 address, uint32 data) -{ - m68k_unused_16_w(address, data); -} -*/ +/**************************************************************************** + * Genesis Plus + * Mega Drive cartridge hardware support + * + * Copyright (C) 2007-2021 Eke-Eke (Genesis Plus GX) + * + * Many cartridge protections were initially documented by Haze + * (http://haze.mameworld.info/) + * + * Realtec mapper was documented by TascoDeluxe + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "eeprom_i2c.h" +#include "eeprom_spi.h" + +/* Cart database entry */ +typedef struct +{ + uint16 chk_1; /* header checksum */ + uint16 chk_2; /* real checksum */ + uint8 bank_start; /* first mapped bank in $400000-$7fffff region */ + uint8 bank_end; /* last mapped bank in $400000-$7fffff region */ + cart_hw_t cart_hw; /* hardware description */ +} md_entry_t; + +/* Function prototypes */ +static void mapper_sega_w(uint32 data); +static void mapper_512k_w(uint32 address, uint32 data); +static void mapper_ssf2_w(uint32 address, uint32 data); +static void mapper_sf001_w(uint32 address, uint32 data); +static void mapper_sf002_w(uint32 address, uint32 data); +static void mapper_sf004_w(uint32 address, uint32 data); +static uint32 mapper_sf004_r(uint32 address); +static void mapper_t5740_w(uint32 address, uint32 data); +static uint32 mapper_t5740_r(uint32 address); +static void mapper_flashkit_w(uint32 address, uint32 data); +static uint32 mapper_flashkit_r(uint32 address); +static uint32 mapper_smw_64_r(uint32 address); +static void mapper_smw_64_w(uint32 address, uint32 data); +static void mapper_realtec_w(uint32 address, uint32 data); +static void mapper_seganet_w(uint32 address, uint32 data); +static void mapper_32k_w(uint32 data); +static void mapper_64k_w(uint32 data); +static void mapper_64k_multi_w(uint32 address); +static uint32 mapper_128k_multi_r(uint32 address); +static void mapper_256k_multi_w(uint32 address, uint32 data); +static void mapper_wd1601_w(uint32 address, uint32 data); +static uint32 mapper_64k_radica_r(uint32 address); +static uint32 mapper_128k_radica_r(uint32 address); +static void mapper_sr16v1_w(uint32 address, uint32 data); +static void default_time_w(uint32 address, uint32 data); +static void default_regs_w(uint32 address, uint32 data); +static uint32 default_regs_r(uint32 address); +static uint32 default_regs_r_16(uint32 address); +static uint32 custom_regs_r(uint32 address); +static void custom_regs_w(uint32 address, uint32 data); +static void custom_alt_regs_w(uint32 address, uint32 data); +static uint32 topshooter_r(uint32 address); +static void topshooter_w(uint32 address, uint32 data); +static uint32 tekken_regs_r(uint32 address); +static void tekken_regs_w(uint32 address, uint32 data); + +/* Games that need extra hardware emulation: + - copy protection device + - custom ROM banking device +*/ +static const md_entry_t rom_database[] = +{ +/* Funny World & Balloon Boy */ + {0x0000,0x06ab,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, +/* Whac-a-Critter */ + {0xffff,0xf863,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, +/* Earth Defense */ + {0xffff,0x44fb,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, +/* Tom Clown */ + {0x0000,0xc0cd,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},1,0,NULL,NULL,NULL,mapper_realtec_w}}, + +/* 1800-in-1 */ + {0x3296,0x2370,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,mapper_128k_multi_r,m68k_unused_8_w,NULL,NULL}}, + +/* Golden Mega 250-in-1 */ + {0xe43c,0x886f,0x08,0x08,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,NULL,m68k_unused_8_w,NULL,mapper_256k_multi_w}}, + +/* RADICA (Volume 1) (bad dump ?) */ + {0x0000,0x2326,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, +/* RADICA (Volume 1) */ + {0x24f4,0xfc84,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, +/* RADICA (Volume 2) */ + {0xd951,0x78d0,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, +/* RADICA (Volume 3 - Super Sonic Gold edition) */ + {0x0000,0x1f25,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, +/* RADICA (Street Fighter II CE edition) */ + {0x1add,0xa838,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, +/* RADICA (Street Fighter II CE edition) (PAL) */ + {0x104f,0x32e9,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_64k_radica_r,m68k_unused_8_w,NULL,NULL}}, +/* RADICA (Sensible Soccer Plus edition) (PAL) */ + {0x0000,0x1f7f,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,mapper_128k_radica_r,m68k_unused_8_w,NULL,NULL}}, + + +/* Tenchi wo Kurau III: Sangokushi Gaiden - Chinese Fighter */ + {0x9490,0x8180,0x40,0x6f,{{0x00,0x00,0x00,0x00},{0xf0000c,0xf0000c,0xf0000c,0xf0000c},{0x400000,0x400004,0x400008,0x40000c},0,1,NULL,NULL,default_regs_r,custom_alt_regs_w}}, + + +/* Top Fighter */ + {0x4eb9,0x5d8b,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, +/* Soul Edge VS Samurai Spirits */ + {0x00ff,0x5d34,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, +/* Mulan */ + {0x0404,0x1b40,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, +/* Pocket Monsters II */ + {0x47f9,0x17e5,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, +/* Lion King 3 */ + {0x0000,0x507c,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, +/* Super King Kong 99 */ + {0x0000,0x7d6e,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, +/* Gunfight 3-in-1 */ + {0x0000,0x6ff8,0x60,0x7f,{{0x00,0x00,0x00,0x00},{0xf00007,0xf00007,0xf00007,0xffffff},{0x600001,0x600003,0x600005,0x000000},0,1,NULL,NULL,default_regs_r,custom_regs_w}}, +/* Pokemon Stadium */ + {0x0000,0x843c,0x70,0x7f,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,1,NULL,NULL,NULL,custom_regs_w}}, + + +/* Tekken 3 Special (original dump) (a bootleg version also exists, with patched protection & different boot routine which reads unused !TIME mapped area) */ + {0x0000,0xc2f0,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,NULL,NULL,tekken_regs_r,tekken_regs_w}}, + + +/* Lion King 2 */ + {0xffff,0x1d9b,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, +/* Squirell King */ + {0x0000,0x8ec8,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, +/* Tiny Toon Adventures 3 */ + {0x2020,0xed9c,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, +/* Lian Huan Pao - Barver Battle Saga (registers accessed by Z80, related to sound engine ?) */ + {0x30b9,0x1c2a,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, +/* Shui Hu Zhuan (registers accessed by Z80, related to sound engine ?) */ + {0x6001,0x0211,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, +/* Feng Shen Ying Jie Chuan (registers accessed by Z80, related to sound engine ?) */ + {0xffff,0x5d98,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, +/* (*) Shui Hu - Feng Yun Zhuan (patched ROM, unused registers) */ + {0x3332,0x872b,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xfffffd,0xfffffd,0xffffff,0xffffff},{0x400000,0x400004,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,default_regs_w}}, + + +/* (*) Chao Ji Da Fu Weng (patched ROM, various words witten to register, long word also read from $7E0000, unknown banking hardware ?) */ + {0xa697,0xa697,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x000000,0x000000,0x000000},0,0,NULL,NULL,NULL,default_regs_w}}, + +/* (*) Aq Renkan Awa (patched ROM, ON/OFF bit sequence is written to register, unknown banking hardware ?) */ + {0x8104,0x0517,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400001,0x000000,0x000000,0x000000},0,0,NULL,NULL,NULL,default_regs_w}}, + + +/* (*) Tun Shi Tian Di III (patched ROM, unused register) */ + {0x0000,0x9c5e,0x40,0x40,{{0xab,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400046,0x000000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, + + +/* Ma Jiang Qing Ren - Ji Ma Jiang Zhi */ + {0x0000,0x7037,0x40,0x40,{{0x90,0xd3,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x401000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Super Majon Club */ + {0x0000,0x3b95,0x40,0x40,{{0x90,0xd3,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x401000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Feng Kuang Tao Hua Yuan (original version from Creaton Softec Inc) (a bootleg version also exists with patched protection and minor title screen variations) */ + {0x0000,0x9dc4,0x40,0x40,{{0x90,0xd3,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x401000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, + + +/* (*) Jiu Ji Ma Jiang II - Ye Yan Bian (patched ROM, using expected register value - $0f - crashes the game) (uses 16-bits reads) */ + {0x0c44,0xba81,0x40,0x40,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x400006},0,0,NULL,NULL,default_regs_r_16,NULL}}, +/* 16 Zhang Ma Jiang (uses 16-bits reads) */ + {0xfb40,0x4bed,0x40,0x40,{{0x00,0xaa,0x00,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x400002,0x000000,0x400006},0,0,NULL,NULL,default_regs_r_16,NULL}}, +/* 16 Tiles Mahjong II (uses 16-bits reads) */ + {0xffff,0x0903,0x40,0x40,{{0x00,0x00,0xc9,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x400004,0x000000},0,0,NULL,NULL,default_regs_r_16,NULL}}, +/* Thunderbolt II (uses 16-bits reads) */ + {0x0000,0x1585,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r_16,NULL}}, + + +/* Chaoji Puke - Super Poker (correct ROM dump, original release is an overdump) */ + {0xffff,0xd7b0,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Super Bubble Bobble */ + {0x0000,0x16cd,0x40,0x40,{{0x55,0x0f,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Tenchi wo Kurau II - The Battle of Red Cliffs (Unl) */ + {0x0000,0xed61,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Huan Le Tao Qi Shu - Smart Mouse */ + {0x0000,0x1a28,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* (*) Hei Tao 2 - Super Big 2 (patched ROM, unused registers) */ + {0x0000,0x5843,0x40,0x40,{{0x55,0x0f,0xaa,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Mighty Morphin Power Rangers - The Fighting Edition */ + {0x0000,0x2288,0x40,0x40,{{0x55,0x0f,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Elf Wor */ + {0x0080,0x3dba,0x40,0x40,{{0x55,0x0f,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Ya-Se Chuanshuo */ + {0xffff,0xd472,0x40,0x40,{{0x63,0x98,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* 777 Casino (For first one, 0x55 works as well. Other values are never used so they are guessed from on other unlicensed games using similar mapper) */ + {0x0000,0xf8d9,0x40,0x40,{{0x63,0x98,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Wu Kong Wai Zhuan (original) (a bootleg version also exists, with patched protection & modified SRAM test routine ?) */ + {0x0000,0x19ff,0x40,0x40,{{0x63,0x98,0xc9,0x18},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Soul Blade */ + {0x0000,0x0c5b,0x40,0x40,{{0x63,0x98,0xc9,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0x400000,0x400002,0x400004,0x400006},0,0,NULL,NULL,default_regs_r,NULL}}, + + +/* King of Fighter 98 */ + {0x0000,0xd0a0,0x48,0x4f,{{0x00,0x00,0xaa,0xf0},{0xffffff,0xffffff,0xfc0000,0xfc0000},{0x000000,0x000000,0x480000,0x4c0000},0,0,NULL,NULL,default_regs_r,NULL}}, + + +/* Rock Heaven */ + {0x6cca,0x2395,0x50,0x50,{{0x50,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x500008,0x000000,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, +/* Rock World */ + {0x3547,0xa3da,0x50,0x50,{{0x50,0xa0,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x500008,0x500208,0x000000,0x000000},0,0,NULL,NULL,default_regs_r,NULL}}, + + +/* Rockman X3 (bootleg version ? two last register returned values are ignored, note that 0xaa/0x18 would work as well) */ + {0x0000,0x9d0e,0x40,0x40,{{0x0c,0x00,0xc9,0xf0},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x400004,0x400006},0,0,default_regs_r,NULL,default_regs_r,NULL}}, + + +/* (*) Dragon Ball Final Bout (patched ROM, in original code, different switches occurs depending on returned value $00-$0f) */ + {0xc65a,0xc65a,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, +/* (*) Yang Jia Jiang - Yang Warrior Family (patched ROM, register value unused) */ + {0x0000,0x96b0,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, +/* Super Mario 2 1998 */ + {0xffff,0x0474,0x00,0x00,{{0x0a,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, +/* Super Mario World */ + {0x2020,0xb4eb,0x00,0x00,{{0x1c,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0x000000,0x000000,0x000000},0,0,default_regs_r,NULL,NULL,NULL}}, + + +/* King of Fighter 99 */ + {0x0000,0x021e,0x00,0x00,{{0x00,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,custom_regs_r,default_regs_w,NULL,NULL}}, +/* Pocket Monster */ + {0xd6fc,0x1eb1,0x00,0x00,{{0x00,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,custom_regs_r,default_regs_w,NULL,NULL}}, +/* Pocket Monster (bootleg version ? two last register returned values are ignored & first register test has been modified) */ + {0xd6fc,0x6319,0x00,0x00,{{0x14,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,default_regs_r,m68k_unused_8_w,NULL,NULL}}, +/* A Bug's Life (bootleg version ? two last register returned values are ignored & first register test has been modified ?) */ + {0x7f7f,0x2aad,0x00,0x00,{{0x28,0x01,0x1f,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0xa13000,0xa13002,0xa1303e,0x000000},0,0,default_regs_r,m68k_unused_8_w,NULL,NULL}}, + + +/* Game no Kanzume Otokuyou */ + {0x0000,0xf9d1,0x00,0x00,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,NULL,mapper_seganet_w,NULL,NULL}}, + + +/* Top Shooter (arcade hardware) */ + {0xffff,0x3632,0x20,0x20,{{0x00,0x00,0x00,0x00},{0xffffff,0xffffff,0xffffff,0xffffff},{0x000000,0x000000,0x000000,0x000000},0,0,NULL,NULL,topshooter_r,topshooter_w}} +}; + + +/************************************************************ + Cart Hardware initialization +*************************************************************/ + +void md_cart_init(void) +{ + int i; + + /*************************************************************************************************************** + CARTRIDGE ROM MIRRORING + *************************************************************************************************************** + + MD Cartridge area is mapped to $000000-$3fffff: + + -> when accessing ROM, 68k address lines A1 to A21 can be used by the internal cartridge hardware to decode + full 4MB address range. + -> depending on ROM total size and additional decoding hardware, some address lines might be ignored, + resulting in ROM mirroring. + + Cartridges can use either 8-bits (x2) or 16-bits (x1, x2) Mask ROM chips, each chip size is a factor of 2 bytes: + + -> two 8-bits chips are equivalent to one 16-bits chip, no specific address decoding is required, needed + address lines are simply connected to each chip, upper address lines are ignored and data lines are + connected appropriately to each chip (D0-D7 to one chip, D8-D15 to the other one). + ROM is generally mirrored each N bytes where N=2^(k+1) is the total ROM size (ROM1+ROM2,ROM1+ROM2,...) + + -> one single 16-bits chip do not need specific address decoding, address lines are simply connected + depending on the ROM size, upper address lines being ignored. + ROM is generally mirrored each N bytes where N=2^k is the size of the ROM chip (ROM1,ROM1,ROM1,...) + + -> two 16-bits chips of the same size are equivalent to one chip of double size, address decoding generally + is the same except that specific hardware is used (one address line is generally used for chip selection, + lower ones being used to address the chips and upper ones being ignored). + ROM is generally mirrored each N bytes where N=2^(k+1) is the total ROM size (ROM1,ROM2,ROM1,ROM2,...) + + -> two 16-bits chips with different size are mapped differently. Address decoding is done the same way as + above (one address line used for chip selection) but the ignored & required address lines differ from + one chip to another, which makes ROM mirroring different. + ROM2 size is generally half of ROM1 size and upper half ignored (ROM1,ROM2,XXXX,ROM1,ROM2,XXXX,...) + + From the emulator point of view, we only need to distinguish 2 cases: + + 1/ total ROM size is a factor of 2: ROM is mirrored each 2^k bytes. + + 2/ total ROM size is not a factor of 2: ROM is padded up to 2^k then mirrored each 2^k bytes. + + ******************************************************************************************************************/ + + /* calculate nearest size with factor of 2 */ + unsigned int size = 0x10000; + while (cart.romsize > size) + size <<= 1; + + /* Sonic & Knuckles */ + if (strstr(rominfo.international,"SONIC & KNUCKLES")) + { + /* disable ROM mirroring at $200000-$3fffff (normally mapped to external cartridge) */ + size = 0x400000; + } + + /* total ROM size is not a factor of 2 */ + /* TODO: handle all possible ROM configurations using cartridge database */ + if (cart.romsize < size) + { + if (size < MAXROMSIZE) + { + /* ROM is padded up to 2^k bytes */ + memset(cart.rom + cart.romsize, 0xff, size - cart.romsize); + } + else + { + /* ROM is padded up to max ROM size */ + memset(cart.rom + cart.romsize, 0xff, MAXROMSIZE - cart.romsize); + } + } + + /* ROM is mirrored each 2^k bytes */ + cart.mask = size - 1; + + /* no special external hardware required by default */ + cart.special = 0; + + /********************************************** + DEFAULT CARTRIDGE MAPPING + ***********************************************/ + for (i=0; i<0x40; i++) + { + /* cartridge ROM */ + m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = NULL; + zbank_memory_map[i].write = zbank_unused_w; + } + + for (i=0x40; i<0x80; i++) + { + /* unused area */ + m68k.memory_map[i].base = cart.rom + (i<<16); + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = zbank_unused_r; + zbank_memory_map[i].write = zbank_unused_w; + } + + /* support for Quackshot REV 01 (real) dump */ + if (strstr(rominfo.product,"00004054-01") && (cart.romsize == 0x80000)) + { + /* $000000-$0fffff: first 256K mirrored (A18 not connected to ROM chip, A19 not decoded) */ + for (i=0x00; i<0x10; i++) + { + /* $200000-$3fffff: mirror of $000000-$1fffff (A21 not decoded) */ + m68k.memory_map[i].base = m68k.memory_map[i + 0x20].base = cart.rom + ((i & 0x03) << 16); + } + + /* $100000-$1fffff: second 256K mirrored (A20 connected to ROM chip A18) */ + for (i=0x10; i<0x20; i++) + { + /* $200000-$3fffff: mirror of $000000-$1fffff (A21 not decoded) */ + m68k.memory_map[i].base = m68k.memory_map[i + 0x20].base = cart.rom + 0x40000 + ((i & 0x03) << 16); + } + } + + /********************************************** + BACKUP MEMORY + ***********************************************/ + sram_init(); + eeprom_i2c_init(); + + /* memory-mapped SRAM */ + if (sram.on && !sram.custom) + { + /* SRAM is mapped by default unless it overlaps with ROM area (Phantasy Star 4, Beyond Oasis/Legend of Thor, World Series Baseball 9x, Duke Nukem 3D,...) */ + if (sram.start >= cart.romsize) + { + m68k.memory_map[sram.start >> 16].base = sram.sram; + m68k.memory_map[sram.start >> 16].read8 = sram_read_byte; + m68k.memory_map[sram.start >> 16].read16 = sram_read_word; + m68k.memory_map[sram.start >> 16].write8 = sram_write_byte; + m68k.memory_map[sram.start >> 16].write16 = sram_write_word; + zbank_memory_map[sram.start >> 16].read = sram_read_byte; + zbank_memory_map[sram.start >> 16].write = sram_write_byte; + } + + /* support for Triple Play 96 & Triple Play - Gold Edition mapping */ + else if ((strstr(rominfo.product,"T-172026") != NULL) || (strstr(rominfo.product,"T-172116") != NULL)) + { + /* $000000-$1fffff: cartridge ROM (lower 2MB) */ + /* $200000-$2fffff: SRAM (32KB mirrored) */ + /* NB: existing 4MB ROM dumps include SRAM data at ROM offsets 0x200000-0x2fffff */ + for (i=0x20; i<0x30; i++) + { + m68k.memory_map[i].base = sram.sram; + m68k.memory_map[i].read8 = sram_read_byte; + m68k.memory_map[i].read16 = sram_read_word; + m68k.memory_map[i].write8 = sram_write_byte; + m68k.memory_map[i].write16 = sram_write_word; + zbank_memory_map[i].read = sram_read_byte; + zbank_memory_map[i].write = sram_write_byte; + } + + /* $300000-$3fffff: cartridge ROM (upper 1MB) */ + /* NB: only real (3MB) Mask ROM dumps need ROM offsets 0x200000-0x2fffff to be remapped to this area */ + if (READ_BYTE(cart.rom, 0x200000) != 0xFF) + { + for (i=0x30; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + ((i - 0x10) << 16); + } + } + } + } + + /********************************************** + SVP CHIP + ***********************************************/ + svp = NULL; + if ((READ_BYTE(cart.rom, 0x1c8) == 'S') && (READ_BYTE(cart.rom, 0x1c9) == 'V')) + { + svp_init(); + } + + /********************************************** + LOCK-ON + ***********************************************/ + + /* clear existing patches */ + ggenie_shutdown(); + areplay_shutdown(); + + /* initialize extra hardware */ + switch (config.lock_on) + { + case TYPE_GG: + { + ggenie_init(); + break; + } + + case TYPE_AR: + { + areplay_init(); + break; + } + + case TYPE_SK: + { + /* store S&K ROM above cartridge ROM (and before backup memory) */ + if (cart.romsize > 0x600000) break; + + /* try to load Sonic & Knuckles ROM file (2 MB) */ + if (load_archive(SK_ROM, cart.rom + 0x600000, 0x200000, NULL) == 0x200000) + { + /* check ROM header */ + if (!memcmp(cart.rom + 0x600000 + 0x120, "SONIC & KNUCKLES",16)) + { + /* try to load Sonic 2 & Knuckles UPMEM ROM (256 KB) */ + if (load_archive(SK_UPMEM, cart.rom + 0x900000, 0x40000, NULL) == 0x40000) + { + /* $000000-$1FFFFF is mapped to S&K ROM */ + for (i=0x00; i<0x20; i++) + { + m68k.memory_map[i].base = cart.rom + 0x600000 + (i << 16); + } + +#ifdef LSB_FIRST + for (i=0; i<0x200000; i+=2) + { + /* Byteswap ROM */ + uint8 temp = cart.rom[i + 0x600000]; + cart.rom[i + 0x600000] = cart.rom[i + 0x600000 + 1]; + cart.rom[i + 0x600000 + 1] = temp; + } + + for (i=0; i<0x40000; i+=2) + { + /* Byteswap ROM */ + uint8 temp = cart.rom[i + 0x900000]; + cart.rom[i + 0x900000] = cart.rom[i + 0x900000 + 1]; + cart.rom[i + 0x900000 + 1] = temp; + } +#endif + cart.special |= HW_LOCK_ON; + } + } + } + break; + } + + default: + { + break; + } + } + + /********************************************** + CARTRIDGE EXTRA HARDWARE + ***********************************************/ + memset(&cart.hw, 0, sizeof(cart.hw)); + + /* search for game into database */ + for (i=0; i<(sizeof(rom_database)/sizeof(md_entry_t)); i++) + { + /* known cart found ! */ + if ((rominfo.checksum == rom_database[i].chk_1) && + (rominfo.realchecksum == rom_database[i].chk_2)) + { + int j = rom_database[i].bank_start; + + /* retrieve hardware information */ + memcpy(&cart.hw, &(rom_database[i].cart_hw), sizeof(cart.hw)); + + /* initialize memory handlers for $400000-$7FFFFF region */ + while (j <= rom_database[i].bank_end) + { + if (cart.hw.regs_r) + { + m68k.memory_map[j].read8 = cart.hw.regs_r; + m68k.memory_map[j].read16 = cart.hw.regs_r; + zbank_memory_map[j].read = cart.hw.regs_r; + } + if (cart.hw.regs_w) + { + m68k.memory_map[j].write8 = cart.hw.regs_w; + m68k.memory_map[j].write16 = cart.hw.regs_w; + zbank_memory_map[j].write = cart.hw.regs_w; + } + j++; + } + + /* leave loop */ + break; + } + } + + /* Realtec mapper */ + if (cart.hw.realtec) + { + /* 8k BOOT ROM */ + for (i=0; i<8; i++) + { + memcpy(cart.rom + 0x900000 + i*0x2000, cart.rom + 0x7e000, 0x2000); + } + + /* BOOT ROM is mapped to $000000-$3FFFFF */ + for (i=0x00; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + 0x900000; + } + } + + /* detect specific mappers */ + if (strstr(rominfo.consoletype,"SEGA SSF")) + { + /* Everdrive extended SSF mapper */ + cart.hw.time_w = mapper_512k_w; + + /* cartridge ROM mapping is reinitialized on /VRES */ + cart.hw.bankshift = 1; + } + else if (strstr(rominfo.domestic,"SUPER STREET FIGHTER2")) + { + /* SSF2 mapper */ + cart.hw.time_w = mapper_ssf2_w; + + /* cartridge ROM mapping is reinitialized on /VRES */ + cart.hw.bankshift = 1; + } + else if (strstr(rominfo.product,"T-5740")) + { + /* T-5740XX-XX mapper */ + cart.hw.bankshift = 1; + m68k.memory_map[0x01].read8 = mapper_t5740_r; + zbank_memory_map[0x01].read = mapper_t5740_r; + + /* specific !TIME handlers */ + cart.hw.time_w = mapper_t5740_w; + cart.hw.time_r = eeprom_spi_read; + + /* initialize SPI EEPROM board */ + eeprom_spi_init(); + } + else if (strstr(rominfo.ROMType,"SF") && strstr(rominfo.product,"001")) + { + /* SF-001 mapper */ + m68k.memory_map[0x00].write8 = mapper_sf001_w; + m68k.memory_map[0x00].write16 = mapper_sf001_w; + zbank_memory_map[0x00].write = mapper_sf001_w; + + /* no !TIME handler */ + cart.hw.time_w = m68k_unused_8_w; + + /* cartridge ROM is mapped to $3C0000-$3FFFFF on reset */ + for (i=0x3c; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + (i << 16); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = NULL; + zbank_memory_map[i].write = m68k_unused_8_w; + } + } + else if (strstr(rominfo.ROMType,"SF") && strstr(rominfo.product,"002")) + { + /* SF-002 mapper */ + m68k.memory_map[0x00].write8 = mapper_sf002_w; + m68k.memory_map[0x00].write16 = mapper_sf002_w; + zbank_memory_map[0x00].write = mapper_sf002_w; + + /* no !TIME handler */ + cart.hw.time_w = m68k_unused_8_w; + } + else if (strstr(rominfo.ROMType,"SF") && strstr(rominfo.product,"004")) + { + /* SF-004 mapper */ + m68k.memory_map[0x00].write8 = mapper_sf004_w; + m68k.memory_map[0x00].write16 = mapper_sf004_w; + zbank_memory_map[0x00].write = mapper_sf004_w; + + /* specific !TIME handlers */ + cart.hw.time_r = mapper_sf004_r; + cart.hw.time_w = m68k_unused_8_w; + + /* first 256K ROM bank is mirrored into $000000-$1FFFFF on reset */ + for (i=0x00; i<0x20; i++) + { + m68k.memory_map[i].base = cart.rom + ((i & 0x03) << 16); + } + + /* 32K static RAM mapped to $200000-$2FFFFF is disabled on reset */ + for (i=0x20; i<0x30; i++) + { + m68k.memory_map[i].base = sram.sram; + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = m68k_read_bus_8; + zbank_memory_map[i].write = zbank_unused_w; + } + + /* $300000-$3FFFFF is not mapped */ + for (i=0x30; i<0x40; i++) + { + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = m68k_read_bus_8; + zbank_memory_map[i].write = zbank_unused_w; + } + } + else if (strstr(rominfo.ROMType,"GM") && strstr(rominfo.product,"00000000-42")) + { + /* Flashkit MD mapper */ + m68k.memory_map[0x00].write8 = mapper_flashkit_w; + m68k.memory_map[0x00].write16 = mapper_flashkit_w; + zbank_memory_map[0x00].write = mapper_flashkit_w; + } + else if ((cart.romsize == 0x400000) && + (READ_BYTE(cart.rom, 0x200150) == 'C') && + (READ_BYTE(cart.rom, 0x200151) == 'A') && + (READ_BYTE(cart.rom, 0x200152) == 'N') && + (READ_BYTE(cart.rom, 0x200153) == 'O') && + (READ_BYTE(cart.rom, 0x200154) == 'N')) + { + /* Canon - Legend of the new Gods (4MB dump) */ + cart.hw.time_w = mapper_wd1601_w; + cart.hw.bankshift = 1; + sram.on = 1; + sram.start = 0x200000; + sram.end = 0x201fff; + } + else if ((*(uint16 *)(cart.rom + 0x08) == 0x6000) && (*(uint16 *)(cart.rom + 0x0a) == 0x01f6) && (rominfo.realchecksum == 0xf894)) + { + /* Super Mario World 64 (unlicensed) mapper */ + for (i=0x08; i<0x10; i++) + { + /* lower 512KB mirrored */ + m68k.memory_map[i].base = cart.rom + ((i & 7) << 16); + } + + for (i=0x10; i<0x40; i++) + { + /* unused area */ + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = m68k_read_bus_8; + zbank_memory_map[i].write = zbank_unused_w; + } + + for (i=0x60; i<0x70; i++) + { + /* custom hardware */ + m68k.memory_map[i].base = cart.rom + 0x0f0000; + m68k.memory_map[i].read8 = ((i & 0x07) < 0x04) ? NULL : mapper_smw_64_r; + m68k.memory_map[i].read16 = ((i & 0x07) < 0x04) ? NULL : mapper_smw_64_r; + m68k.memory_map[i].write8 = mapper_smw_64_w; + m68k.memory_map[i].write16 = mapper_smw_64_w; + zbank_memory_map[i].read = ((i & 0x07) < 0x04) ? NULL : mapper_smw_64_r; + zbank_memory_map[i].write = mapper_smw_64_w; + } + } + else if ((*(uint16 *)(cart.rom + 0x04) == 0x0000) && (*(uint16 *)(cart.rom + 0x06) == 0x0104) && (rominfo.checksum == 0x31fc)) + { + /* Micro Machines (USA) custom TMSS bypass logic */ + m68k.memory_map[0xa1].write8 = mapper_sr16v1_w; + } + else if (cart.romsize > 0x400000) + { + /* assume linear ROM mapping by default (max. 10MB) */ + for (i=0x40; i<0xA0; i++) + { + m68k.memory_map[i].base = cart.rom + (i<<16); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + zbank_memory_map[i].read = NULL; + } + } + + /* default write handler for !TIME range ($A130xx)*/ + if (!cart.hw.time_w) + { + cart.hw.time_w = default_time_w; + } +} + +/* hardware that need to be reseted on power on */ +void md_cart_reset(int hard_reset) +{ + int i; + + /* reset cartridge mapping */ + if (cart.hw.bankshift) + { + for (i=0x00; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); + } + } + + /* SVP chip */ + if (svp) + { + svp_reset(); + } + + /* Lock-ON */ + switch (config.lock_on) + { + case TYPE_GG: + { + ggenie_reset(hard_reset); + break; + } + + case TYPE_AR: + { + areplay_reset(hard_reset); + break; + } + + case TYPE_SK: + { + if (cart.special & HW_LOCK_ON) + { + /* disable UPMEM chip at $300000-$3fffff */ + for (i=0x30; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); + } + } + break; + } + + default: + { + break; + } + } +} + +int md_cart_context_save(uint8 *state) +{ + int i; + int bufferptr = 0; + uint8 *base; + + /* cartridge mapping */ + for (i=0; i<0x40; i++) + { + /* get base address */ + base = m68k.memory_map[i].base; + + if (base == sram.sram) + { + /* SRAM */ + state[bufferptr++] = 0xff; + } + else if (base == boot_rom) + { + /* Boot ROM */ + state[bufferptr++] = 0xfe; + } + else + { + /* Cartridge ROM */ + state[bufferptr++] = ((base - cart.rom) >> 16) & 0xff; + } + } + + /* hardware registers */ + save_param(cart.hw.regs, sizeof(cart.hw.regs)); + + /* SVP */ + if (svp) + { + save_param(svp->iram_rom, 0x800); + save_param(svp->dram,sizeof(svp->dram)); + save_param(&svp->ssp1601,sizeof(ssp1601_t)); + } + + return bufferptr; +} + +int md_cart_context_load(uint8 *state) +{ + int i; + int bufferptr = 0; + uint8 offset; + + /* cartridge mapping */ + for (i=0; i<0x40; i++) + { + /* get offset */ + offset = state[bufferptr++]; + + if (offset == 0xff) + { + /* SRAM */ + m68k.memory_map[i].base = sram.sram; + m68k.memory_map[i].read8 = sram_read_byte; + m68k.memory_map[i].read16 = sram_read_word; + m68k.memory_map[i].write8 = sram_write_byte; + m68k.memory_map[i].write16 = sram_write_word; + zbank_memory_map[i].read = sram_read_byte; + zbank_memory_map[i].write = sram_write_byte; + + } + else + { + /* check if SRAM was mapped there before loading state */ + if (m68k.memory_map[i].base == sram.sram) + { + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = NULL; + zbank_memory_map[i].write = zbank_unused_w; + } + + /* ROM */ + m68k.memory_map[i].base = (offset == 0xfe) ? boot_rom : (cart.rom + (offset << 16)); + } + } + + /* hardware registers */ + load_param(cart.hw.regs, sizeof(cart.hw.regs)); + + /* SVP */ + if (svp) + { + load_param(svp->iram_rom, 0x800); + load_param(svp->dram,sizeof(svp->dram)); + load_param(&svp->ssp1601,sizeof(ssp1601_t)); + } + + return bufferptr; +} + +/************************************************************ + MAPPER handlers +*************************************************************/ + +/* + "official" ROM/SRAM bankswitch (Phantasy Star IV, Story of Thor/Beyond Oasis, Sonic 3 & Knuckles) +*/ +static void mapper_sega_w(uint32 data) +{ + int i; + + if (data & 1) + { + if (sram.on) + { + /* Backup RAM mapped to $200000-$20ffff (normally mirrored up to $3fffff but this breaks Sonic Megamix and no game need it) */ + m68k.memory_map[0x20].base = sram.sram; + m68k.memory_map[0x20].read8 = sram_read_byte; + m68k.memory_map[0x20].read16 = sram_read_word; + zbank_memory_map[0x20].read = sram_read_byte; + + /* Backup RAM write protection */ + if (data & 2) + { + m68k.memory_map[0x20].write8 = m68k_unused_8_w; + m68k.memory_map[0x20].write16 = m68k_unused_16_w; + zbank_memory_map[0x20].write = zbank_unused_w; + } + else + { + m68k.memory_map[0x20].write8 = sram_write_byte; + m68k.memory_map[0x20].write16 = sram_write_word; + zbank_memory_map[0x20].write = sram_write_byte; + } + } + + /* S&K lock-on chip */ + if ((cart.special & HW_LOCK_ON) && (config.lock_on == TYPE_SK)) + { + /* S2K upmem chip mapped to $300000-$3fffff (256K mirrored) */ + for (i=0x30; i<0x40; i++) + { + m68k.memory_map[i].base = (cart.rom + 0x900000) + ((i & 3) << 16); + } + } + } + else + { + /* cartridge ROM mapped to $200000-$3fffff */ + for (i=0x20; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + ((i<<16) & cart.mask); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + zbank_memory_map[i].read = NULL; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].write = zbank_unused_w; + } + } +} + +/* + Everdrive extended SSF ROM bankswitch + documented by Krikzz (http://krikzz.com/pub/support/mega-ed/dev/extended_ssf.txt) +*/ +static void mapper_512k_w(uint32 address, uint32 data) +{ + uint32 i; + + /* 512K ROM paging */ + uint8 *src = cart.rom + ((data << 19) & cart.mask); + + /* cartridge area ($000000-$3FFFFF) is divided into 8 x 512K banks */ + address = (address << 2) & 0x38; + + /* remap selected ROM page to selected bank */ + for (i=0; i<8; i++) + { + m68k.memory_map[address++].base = src + (i<<16); + } +} + +/* + Super Street Fighter 2 ROM bankswitch + documented by Bart Trzynadlowski (http://emu-docs.org/Genesis/ssf2.txt) +*/ +static void mapper_ssf2_w(uint32 address, uint32 data) +{ + /* only banks 1-7 are remappable, bank 0 remains unchanged */ + if (address & 0x0E) + { + mapper_512k_w(address, data); + } +} + +/* + SF-001 mapper +*/ +static void mapper_sf001_w(uint32 address, uint32 data) +{ + switch ((address >> 8) & 0xf) + { + case 0xe: + { + int i; + + /* bit 6: enable / disable cartridge access */ + if (data & 0x40) + { + /* $000000-$3FFFFF is not mapped */ + for (i=0x00; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + (i << 16); + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + m68k.memory_map[i].write8 = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; + m68k.memory_map[i].write16 = (i > 0x00) ? m68k_unused_16_w : mapper_sf001_w; + zbank_memory_map[i].read = zbank_unused_r; + zbank_memory_map[i].write = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; + } + } + + /* bit 7: enable / disable SRAM & ROM bankswitching */ + else if (data & 0x80) + { + /* 256K ROM bank #15 mapped to $000000-$03FFFF */ + for (i=0x00; i<0x04; i++) + { + m68k.memory_map[i].base = cart.rom + ((0x38 + i) << 16); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + zbank_memory_map[i].read = NULL; + } + + /* 256K ROM banks #2 to #15 mapped to $040000-$3BFFFF (last revision) or $040000-$3FFFFF (older revisions) */ + for (i=0x04; i<(sram.start >> 16); i++) + { + m68k.memory_map[i].base = cart.rom + (i << 16); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + zbank_memory_map[i].read = NULL; + } + + /* 32K static RAM mirrored into $3C0000-$3FFFFF (odd bytes only) (last revision only) */ + while (i<0x40) + { + m68k.memory_map[i].base = sram.sram; + m68k.memory_map[i].read8 = sram_read_byte; + m68k.memory_map[i].read16 = sram_read_word; + m68k.memory_map[i].write8 = sram_write_byte; + m68k.memory_map[i].write16 = sram_write_word; + zbank_memory_map[i].read = sram_read_byte; + zbank_memory_map[i].write = sram_write_byte; + i++; + } + } + else + { + /* 256K ROM banks #1 to #16 mapped to $000000-$3FFFFF (default) */ + for (i=0x00; i<0x40; i++) + { + m68k.memory_map[i].base = cart.rom + (i << 16); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + m68k.memory_map[i].write8 = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; + m68k.memory_map[i].write16 = (i > 0x00) ? m68k_unused_16_w : mapper_sf001_w; + zbank_memory_map[i].read = NULL; + zbank_memory_map[i].write = (i > 0x00) ? m68k_unused_8_w : mapper_sf001_w; + } + } + + /* bit 5: lock bankswitch hardware when set */ + if (data & 0x20) + { + /* disable bankswitch hardware access until hard reset */ + m68k.memory_map[0x00].write8 = m68k_unused_8_w; + m68k.memory_map[0x00].write16 = m68k_unused_16_w; + zbank_memory_map[0x00].write = m68k_unused_8_w; + } + + return; + } + + default: + { + m68k_unused_8_w(address, data); + return; + } + } +} + +/* + SF-002 mapper +*/ +static void mapper_sf002_w(uint32 address, uint32 data) +{ + int i; + if (data & 0x80) + { + /* $000000-$1BFFFF mapped to $200000-$3BFFFF */ + for (i=0x20; i<0x3C; i++) + { + m68k.memory_map[i].base = cart.rom + ((i & 0x1F) << 16); + } + } + else + { + /* $200000-$3BFFFF mapped to $200000-$3BFFFF */ + for (i=0x20; i<0x3C; i++) + { + m68k.memory_map[i].base = cart.rom + (i << 16); + } + } +} + +/* + SF-004 mapper +*/ +static void mapper_sf004_w(uint32 address, uint32 data) +{ + int i; + switch ((address >> 8) & 0xf) + { + case 0xd: + { + /* bit 7: enable/disable static RAM access */ + if (data & 0x80) + { + /* 32KB static RAM mirrored into $200000-$2FFFFF (odd bytes only) */ + for (i=0x20; i<0x30; i++) + { + m68k.memory_map[i].read8 = sram_read_byte; + m68k.memory_map[i].read16 = sram_read_word; + m68k.memory_map[i].write8 = sram_write_byte; + m68k.memory_map[i].write16 = sram_write_word; + zbank_memory_map[i].read = sram_read_byte; + zbank_memory_map[i].write = sram_write_byte; + } + } + else + { + /* 32KB static RAM disabled at $200000-$2FFFFF */ + for (i=0x20; i<0x30; i++) + { + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].read = m68k_read_bus_8; + zbank_memory_map[i].write = m68k_unused_8_w; + } + } + + return; + } + + case 0x0e: + { + /* bit 5: enable / disable cartridge ROM access */ + if (data & 0x20) + { + /* $000000-$1FFFFF is not mapped */ + for (i=0x00; i<0x20; i++) + { + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + zbank_memory_map[i].read = m68k_read_bus_8; + } + } + + /* bit 6: enable / disable first page mirroring */ + else if (data & 0x40) + { + /* first page ROM bank */ + uint8 base = (m68k.memory_map[0x00].base - cart.rom) >> 16; + + /* 5 x 256K ROM banks mapped to $000000-$13FFFF, starting from first page ROM bank */ + for (i=0x00; i<0x14; i++) + { + m68k.memory_map[i].base = cart.rom + (((base + i) & 0x1f) << 16); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + zbank_memory_map[i].read = NULL; + } + + /* $140000-$1FFFFF is not mapped */ + for (i=0x14; i<0x20; i++) + { + m68k.memory_map[i].read8 = m68k_read_bus_8; + m68k.memory_map[i].read16 = m68k_read_bus_16; + zbank_memory_map[i].read = m68k_read_bus_8; + } + } + else + { + /* first page 256K ROM bank mirrored into $000000-$1FFFFF */ + for (i=0x00; i<0x20; i++) + { + m68k.memory_map[i].base = m68k.memory_map[0].base + ((i & 0x03) << 16); + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + zbank_memory_map[i].read = NULL; + } + } + + /* bit 7: lock ROM bankswitching hardware when cleared */ + if (!(data & 0x80)) + { + /* disable bankswitch hardware access */ + m68k.memory_map[0x00].write8 = m68k_unused_8_w; + m68k.memory_map[0x00].write16 = m68k_unused_16_w; + zbank_memory_map[0x00].write = m68k_unused_8_w; + } + + return; + } + + case 0x0f: + { + /* bits 6-4: select first page ROM bank (8 x 256K ROM banks) */ + uint8 base = ((data >> 4) & 7) << 2; + + if (m68k.memory_map[0].base == m68k.memory_map[4].base) + { + /* selected 256K ROM bank mirrored into $000000-$1FFFFF */ + for (i=0x00; i<0x20; i++) + { + m68k.memory_map[i].base = cart.rom + ((base + (i & 0x03)) << 16); + } + } + else + { + /* 5 x 256K ROM banks mapped to $000000-$13FFFF, starting from selected bank */ + for (i=0x00; i<0x14; i++) + { + m68k.memory_map[i].base = cart.rom + (((base + i) & 0x1f) << 16); + } + } + + return; + } + + default: + { + m68k_unused_8_w(address, data); + return; + } + } +} + +static uint32 mapper_sf004_r(uint32 address) +{ + /* return first page 256K bank index ($00,$10,$20,...,$70) */ + return (((m68k.memory_map[0x00].base - cart.rom) >> 18) << 4); +} + +/* + T-5740xx-xx mapper +*/ +static void mapper_t5740_w(uint32 address, uint32 data) +{ + int i; + uint8 *base; + + switch (address & 0xff) + { + case 0x01: /* mode register */ + { + /* bits 7-4: unused ? */ + /* bit 3: enable SPI registers access ? */ + /* bit 2: not used ? */ + /* bit 1: enable bankswitch registers access ? */ + /* bit 0: always set, enable hardware access ? */ + return; + } + + case 0x03: /* page #5 register */ + { + /* map any of 16 x 512K ROM banks to $280000-$2FFFFF */ + base = cart.rom + ((data & 0x0f) << 19); + for (i=0x28; i<0x30; i++) + { + m68k.memory_map[i].base = base + ((i & 0x07) << 16); + } + return; + } + + case 0x05: /* page #6 register */ + { + /* map any of 16 x 512K ROM banks to $300000-$37FFFF */ + base = cart.rom + ((data & 0x0f) << 19); + for (i=0x30; i<0x38; i++) + { + m68k.memory_map[i].base = base + ((i & 0x07) << 16); + } + return; + } + + case 0x07: /* page #7 register */ + { + /* map any of 16 x 512K ROM banks to $380000-$3FFFFF */ + base = cart.rom + ((data & 0x0f) << 19); + for (i=0x38; i<0x40; i++) + { + m68k.memory_map[i].base = base + ((i & 0x07) << 16); + } + return; + } + + case 0x09: /* serial EEPROM SPI board support */ + { + eeprom_spi_write(data); + return; + } + + default: + { + /* unknown registers */ + m68k_unused_8_w(address, data); + return; + } + } +} + +static uint32 mapper_t5740_r(uint32 address) +{ + /* By default, first 32K of each eight 512K pages mapped in $000000-$3FFFFF are mirrored in the 512K page */ + /* mirroring is disabled/enabled when a specific number of words is being read from specific ROM addresses */ + /* Exact decoding isn't known but mirrored data is expected on startup when reading a few times from $181xx */ + /* this area doesn't seem to be accessed as byte later so it seems safe to always return mirrored data here */ + if ((address & 0xff00) == 0x8100) + { + return READ_BYTE(cart.rom , (address & 0x7fff)); + } + + return READ_BYTE(cart.rom, address); +} + +/* + FlashKit MD mapper (very limited M29W320xx Flash memory support -- enough for unlicensed games using device signature as protection) +*/ +static void mapper_flashkit_w(uint32 address, uint32 data) +{ + /* Increment Bus Write counter */ + cart.hw.regs[0]++; + + /* Wait for 3 consecutive bus writes */ + if (cart.hw.regs[0] == 3) + { + /* assume 'Auto Select' command */ + m68k.memory_map[0x0].read16 = mapper_flashkit_r; + } + else if (cart.hw.regs[0] == 4) + { + /* assume 'Read/Reset' command */ + m68k.memory_map[0x0].read16 = NULL; + + /* reset Bus Write counter */ + cart.hw.regs[0] = 0; + } +} + +static uint32 mapper_flashkit_r(uint32 address) +{ + /* hard-coded device signature */ + switch (address & 0x06) + { + case 0x00: /* Manufacturer Code (STMicroelectronics) */ + return 0x0020; + case 0x02: /* Device Code (M29W320EB) */ + return 0x2257; + default: /* not supported */ + return 0xffff; + } +} + +/* + Super Mario World 64 (unlicensed) mapper +*/ +static void mapper_smw_64_w(uint32 address, uint32 data) +{ + /* internal registers (saved to backup RAM) */ + switch ((address >> 16) & 0x07) + { + case 0x00: /* $60xxxx */ + { + if (address & 2) + { + /* $600003 data write mode ? */ + switch (sram.sram[0x00] & 0x07) + { + case 0x00: + { + /* update value returned at $660001-$660003 */ + sram.sram[0x06] = ((sram.sram[0x06] ^ sram.sram[0x01]) ^ data) & 0xFE; + break; + } + + case 0x01: + { + /* update value returned at $660005-$660007 */ + sram.sram[0x07] = data & 0xFE; + break; + } + + case 0x07: + { + /* update selected ROM bank (upper 512K) mapped at $610000-$61ffff */ + m68k.memory_map[0x61].base = m68k.memory_map[0x69].base = cart.rom + 0x080000 + ((data & 0x1c) << 14); + break; + } + + default: + { + /* unknown mode */ + break; + } + } + + /* $600003 data register */ + sram.sram[0x01] = data; + } + else + { + /* $600001 ctrl register */ + sram.sram[0x00] = data; + } + return; + } + + case 0x01: /* $61xxxx */ + { + if (address & 2) + { + /* $610003 ctrl register */ + sram.sram[0x02] = data; + } + return; + } + + case 0x04: /* $64xxxx */ + { + if (address & 2) + { + /* $640003 data register */ + sram.sram[0x04] = data; + } + else + { + /* $640001 data register */ + sram.sram[0x03] = data; + } + return; + } + + case 0x06: /* $66xxxx */ + { + /* unknown */ + return; + } + + case 0x07: /* $67xxxx */ + { + if (!(address & 2)) + { + /* $670001 ctrl register */ + sram.sram[0x05] = data; + + /* upper 512K ROM bank-switching enabled ? */ + if (sram.sram[0x02] & 0x80) + { + /* update selected ROM bank (upper 512K) mapped at $600000-$60ffff */ + m68k.memory_map[0x60].base = m68k.memory_map[0x68].base = cart.rom + 0x080000 + ((data & 0x1c) << 14); + } + } + return; + } + + default: /* not used */ + { + m68k_unused_8_w(address, data); + return; + } + } +} + +static uint32 mapper_smw_64_r(uint32 address) +{ + /* internal registers (saved to backup RAM) */ + switch ((address >> 16) & 0x03) + { + case 0x02: /* $66xxxx */ + { + switch ((address >> 1) & 7) + { + case 0x00: return sram.sram[0x06]; + case 0x01: return sram.sram[0x06] + 1; + case 0x02: return sram.sram[0x07]; + case 0x03: return sram.sram[0x07] + 1; + case 0x04: return sram.sram[0x08]; + case 0x05: return sram.sram[0x08] + 1; + case 0x06: return sram.sram[0x08] + 2; + case 0x07: return sram.sram[0x08] + 3; + } + } + + case 0x03: /* $67xxxx */ + { + uint8 data = (sram.sram[0x02] & 0x80) ? ((sram.sram[0x05] & 0x40) ? (sram.sram[0x03] & sram.sram[0x04]) : (sram.sram[0x03] ^ 0xFF)) : 0x00; + + if (address & 2) + { + /* $670003 */ + data &= 0x7f; + } + else + { + /* $66xxxx data registers update */ + if (sram.sram[0x05] & 0x80) + { + if (sram.sram[0x05] & 0x20) + { + /* update $660009-$66000f data register */ + sram.sram[0x08] = (sram.sram[0x04] << 2) & 0xFC; + } + else + { + /* update $660001-$660003 data register */ + sram.sram[0x06] = (sram.sram[0x01] ^ (sram.sram[0x03] << 1)) & 0xFE; + } + } + } + + return data; + } + + default: /* 64xxxx-$65xxxx */ + { + return 0x00; + } + } +} + +/* + Realtec ROM bankswitch (Earth Defend, Balloon Boy & Funny World, Whac-A-Critter) + (Note: register usage is inverted in TascoDlx documentation) +*/ +static void mapper_realtec_w(uint32 address, uint32 data) +{ + switch (address) + { + case 0x402000: + { + /* number of mapped 64k blocks (the written value is a number of 128k blocks) */ + cart.hw.regs[2] = data << 1; + return; + } + + case 0x404000: + { + /* 00000xxx */ + cart.hw.regs[0] = data & 7; + return; + } + + case 0x400000: + { + /* 00000yy1 */ + cart.hw.regs[1] = data & 6; + + /* ensure mapped size is not null */ + if (cart.hw.regs[2]) + { + /* mapped start address is 00yy xxx0 0000 0000 0000 0000 */ + uint32 base = (cart.hw.regs[0] << 1) | (cart.hw.regs[1] << 3); + + /* selected blocks are mirrored into the whole cartridge area */ + int i; + for (i=0x00; i<0x40; i++) + { + m68k.memory_map[i].base = &cart.rom[(base + (i % cart.hw.regs[2])) << 16]; + } + } + return; + } + } +} + +/* Game no Kanzume Otokuyou ROM Mapper */ +static void mapper_seganet_w(uint32 address, uint32 data) +{ + if ((address & 0xff) == 0xf1) + { + int i; + if (data & 1) + { + /* ROM Write protected */ + for (i=0; i<0x40; i++) + { + m68k.memory_map[i].write8 = m68k_unused_8_w; + m68k.memory_map[i].write16 = m68k_unused_16_w; + zbank_memory_map[i].write = zbank_unused_w; + } + } + else + { + /* ROM Write enabled */ + for (i=0; i<0x40; i++) + { + m68k.memory_map[i].write8 = NULL; + m68k.memory_map[i].write16 = NULL; + zbank_memory_map[i].write = NULL; + } + } + } +} + +/* + Custom ROM Bankswitch used in Soul Edge VS Samurai Spirits, Top Fighter, Mulan, Pocket Monsters II, Lion King 3, Super King Kong 99, Pokemon Stadium +*/ +static void mapper_32k_w(uint32 data) +{ + int i; + + /* 64 x 32k banks */ + if (data) + { + for (i=0; i<0x10; i++) + { + /* Remap to unused ROM area */ + m68k.memory_map[i].base = &cart.rom[0x400000 + (i << 16)]; + + /* address = address OR (value << 15) */ + memcpy(m68k.memory_map[i].base, cart.rom + ((i << 16) | (data & 0x3f) << 15), 0x8000); + memcpy(m68k.memory_map[i].base + 0x8000, cart.rom + ((i << 16) | ((data | 1) & 0x3f) << 15), 0x8000); + } + } + else + { + /* reset default $000000-$0FFFFF mapping */ + for (i=0; i<16; i++) + { + m68k.memory_map[i].base = &cart.rom[i << 16]; + } + } +} + +/* + Custom ROM Bankswitch used in Chinese Fighter III +*/ +static void mapper_64k_w(uint32 data) +{ + int i; + + /* 16 x 64k banks */ + if (data) + { + /* bank is mapped at $000000-$0FFFFF */ + for (i=0; i<16; i++) + { + m68k.memory_map[i].base = &cart.rom[(data & 0xf) << 16]; + } + } + else + { + /* reset default $000000-$0FFFFF mapping */ + for (i=0; i<16; i++) + { + m68k.memory_map[i].base = &cart.rom[(i & 0xf) << 16]; + } + } +} + +/* + Custom ROM Bankswitch used in pirate "Multi-in-1" cartridges, A Bug's Life, King of Fighter 99, Pocket Monster, Rockman X3 + */ +static void mapper_64k_multi_w(uint32 address) +{ + int i; + + /* 64 x 64k banks */ + for (i=0; i<64; i++) + { + m68k.memory_map[i].base = &cart.rom[((address + i) & 0x3f) << 16]; + } +} + +/* + Custom ROM Bankswitch used in pirate "1800-in-1" cartridge + */ +static uint32 mapper_128k_multi_r(uint32 address) +{ + int i; + + /* 16 x 128k banks (2MB ROM) */ + /* Bank index (B3 B2 B1 B0) is encoded in address lower byte = {0 X B0 B1 X B2 B3 0} */ + /* Note: {0 B0 X B1 X B2 B3 0} also works, see below for the 9 unique values being used for all menu entries + read16 00A13000 (0002FBEE) => 0x000000-0x03ffff (2x128KB) + read16 00A13018 (00FF2056) => 0x040000-0x07ffff (2x128KB) + read16 00A13004 (00FF2120) => 0x080000-0x0bffff (2x128KB) + read16 00A1301C (00FF20A6) => 0x0c0000-0x0fffff (2x128KB) + read16 00A1300A (00FF20BA) => 0x100000-0x13ffff (2x128KB) + read16 00A1301A (00FF20CE) => 0x140000-0x17ffff (2x128KB) + read16 00A1300E (00FF20F4) => 0x180000-0x1bffff (2x128KB) + read16 00A1301E (00FF2136) => 0x1c0000-0x1dffff (1x128KB) + read16 00A1307E (00FF2142) => 0x1e0000-0x1fffff (1x128KB) + */ + int bank = ((address & 0x02) << 2) | (address & 0x04) | ((address & 0x10) >> 3) | ((address & 0x20) >> 5); + + /* remap cartridge area (64 x 64k banks) */ + address = bank << 1; + for (i=0x00; i<0x40; i++) + { + m68k.memory_map[i].base = &cart.rom[((address + i) & 0x3f) << 16]; + } + + /* returned value changes the menu title and number of entries in the 'game' list (the number of distinct games does not change though) */ + /* 0x00 => 9-in-1 */ + /* 0x01 => 190-in-1 */ + /* 0x02 => 888-in-1 */ + /* 0x03 => 1800-in-1 */ + /* real cartridge board has switches to select between the four different menus but here we force the largest menu selection (each other menus being a subset of the next larger menu) */ + return 0x03; +} + +/* + Custom ROM Bankswitch used in pirate "Golden Mega 250-in-1" cartridge + */ +static void mapper_256k_multi_w(uint32 address, uint32 data) +{ + int i; + + /* 8 x 256k banks (2MB ROM) */ + /* Bank index (B2 B1 B0) is encoded in data lower byte = {B1 B0 X X 0 0 0 B2} */ + /* Note: {X B0 B1 B2 0 0 0 X}, {B1 B0 X B2 0 0 0 X} or {X B0 B1 X 0 0 0 B2} also work, see below for the 4 unique values being used for all menu entries + write16 00089000 = 0000 (00FF0006) => 0x000000-0x03ffff (1x256KB) + write16 00089000 = 0040 (00FF0006) => 0x040000-0x07ffff (1x256KB) + write16 00089000 = 00A0 (00FF0006) => 0x080000-0x0fffff (2x256KB) + write16 00089000 = 0011 (00FF0006) => 0x100000-0x1fffff (4x256KB) + */ + int bank = ((data & 0x01) << 2) | ((data & 0xc0) >> 6); + + /* remap cartridge area (64 x 64k banks) */ + address = bank << 2; + for (i=0x00; i<0x40; i++) + { + m68k.memory_map[i].base = &cart.rom[((address + i) & 0x3f) << 16]; + } +} + +/* + Custom ROM Bankswitch used in "Canon - Legend of the New Gods" + (uses WD1601 QFPL V1.01 board also used in chinese X-in-1 pirates sold by mindkids) + */ +static void mapper_wd1601_w(uint32 address, uint32 data) +{ + int i; + + /* !TIME write16 0xA13002 = 0x3002 (00FFFE0C) */ + /* The board probably allows up to 256MB Flash ROM remapping but this game only has 4MB ROM chip */ + if ((address & 0xfe) == 0x02) + { + /* upper 2MB ROM mapped to $000000-$1fffff */ + for (i=0; i<0x20; i++) + { + m68k.memory_map[i].base = &cart.rom[(0x20 + i) << 16]; + } + + /* backup RAM (8KB) mapped to $2000000-$3fffff */ + for (i=0x20; i<0x40; i++) + { + m68k.memory_map[i].base = sram.sram; + m68k.memory_map[i].read8 = sram_read_byte; + m68k.memory_map[i].read16 = sram_read_word; + m68k.memory_map[i].write8 = sram_write_byte; + m68k.memory_map[i].write16 = sram_write_word; + zbank_memory_map[i].read = sram_read_byte; + zbank_memory_map[i].write = sram_write_byte; + } + } +} + +/* + Custom ROM Bankswitch used in RADICA cartridges + +++++++++++++++++++++++++++++++++++++++++++++++ + Two different boards seem to exist (one with support for 64KB banks mapping and another one supporting 128KB banks + battery-RAM). + Radica Volume 1 requires 64KB banks mapping as the menu is located at a 64KB boundary. + Sensible Soccer Plus edition requires 128KB banks mapping with only VA6-VA2 being used to select bank index (VA1 is ignored). + Sensible Soccer Plus edition also requires 8KB backup RAM to be mapped in higher 2MB range. + Other games support both 64KB or 128KB mapping so it's not clear what exact board they are using but none require SRAM so we use 64KB mapper by default. + Note that Radica Volume 3 uses similar ROM mapping as Sensible Soccer Plus edition so it might be using same 128KB board, without any SRAM chip connected. +*/ +static uint32 mapper_64k_radica_r(uint32 address) +{ + int i = 0; + + /* 64 x 64k banks */ + /* + Volume 1 + -------- + 000000h-0fffffh: Kid Chameleon : !TIME read16 0xA13000 (00FF103A) + 100000h-1fffffh: Dr Robotnik's Mean Bean Machine : !TIME read16 0xA13020 (00FF101E) + 200000h-27ffffh: Sonic The Hedgehog : !TIME read16 0xA13040 (00FF101E) + 280000h-2fffffh: Golden Axe : !TIME read16 0xA13050 (00FF101E) + 300000h-37ffffh: Altered Beast : !TIME read16 0xA13060 (00FF101E) + 380000h-39ffffh: Flicky : !TIME read16 0xA13070 (00FF101E) + 3a0000h-3effffh: N/A : N/A + 3f0000h-3fffffh: Radica Menu (64 KB) : !TIME read16 0xA1307E (00FF1006) + + Volume 2 + -------- + 000000h-0fffffh: Sonic The Hedgehog 2 : !TIME read16 0xA13000 (00FF103A) + 100000h-1fffffh: The Ooze : !TIME read16 0xA13020 (00FF101E) + 200000h-2fffffh: Ecco The Dolphin : !TIME read16 0xA13040 (00FF101E) + 300000h-37ffffh: Gain Ground : !TIME read16 0xA13060 (00FF101E) + 380000h-3bffffh: Alex Kidd in Enchanted Castle : !TIME read16 0xA13070 (00FF101E) + 3c0000h-3dffffh: Columns : !TIME read16 0xA13078 (00FF101E) + 3e0000h-3fffffh: Radica Menu (128 KB) : !TIME read16 0xA1307C (00FF1006) + + Volume 3 - Super Sonic Gold edition + ----------------------------------- + 000000h-01ffffh: Radica Menu (128 KB) : N/A + 020000h-07ffffh: N/A : N/A + 080000h-0fffffh: Sonic The Hedgehog : !TIME read16 0xA13010 (00FF1012) + 100000h-1fffffh: Sonic The Hedgehog 2 : !TIME read16 0xA13020 (00FF1012) + 200000h-2fffffh: Sonic Spinball : !TIME read16 0xA13040 (00FF1012) + 300000h-3fffffh: Dr Robotnik's Mean Bean Machine : !TIME read16 0xA13060 (00FF1012) + + Street Fighter 2 CE edition + --------------------------- + 000000h-2fffffh: Street Fighter 2 CE : !TIME read16 0xA13000 (00FF103A) + 300000h-3bffffh: Ghouls'n Ghosts : !TIME read16 0xA13060 (00FF101E) + 3c0000h-3dffffh: Radica Menu (128 KB) : !TIME read16 0xA13078 (00FF1006) + 3e0000h-3fffffh: N/A : N/A + */ + int index = (address >> 1) & 0x3F; + + /* $000000-$3fffff area is mapped to selected banks (OR gates between VA21-VA16 and selected index) */ + for (i = 0x00; i < 0x40; i++) + { + m68k.memory_map[i].base = &cart.rom[(index | i) << 16]; + } + + return 0xffff; +} + +static uint32 mapper_128k_radica_r(uint32 address) +{ + int i = 0; + + /* 32 x 128k banks */ + /* + Sensible Soccer Plus edition + ---------------------------- + 000000h-01ffffh: Radica Menu (128 KB) : N/A + 020000h-07ffffh: N/A : N/A + 080000h-0fffffh: Sensible Soccer : !TIME read16 0xA13010 (00FF1012) + 100000h-1fffffh: Mega-Lo-Mania : !TIME read16 0xA13022 (00FF1012) + 200000h-37ffffh: Cannon Fodder : !TIME read16 0xA13042 (00FF1012) + 380000h-3fffffh: N/A : N/A + + Note: address bit 1 is ignored for bank selection but might be used to enable/disable SRAM mapping ? + */ + int index = (address >> 1) & 0x3E; + + /* $000000-$1fffff area is mapped to selected banks (OR gates between VA20-VA17 and selected index) */ + for (i = 0x00; i < 0x20; i++) + { + m68k.memory_map[i].base = &cart.rom[(index | i) << 16]; + } + + /* $200000-$3fffff area is mapped to 8KB SRAM (mirrored) */ + for (i = 0x20; i < 0x40; i++) + { + m68k.memory_map[i].base = sram.sram; + m68k.memory_map[i].read8 = sram_read_byte; + m68k.memory_map[i].read16 = sram_read_word; + m68k.memory_map[i].write8 = sram_write_byte; + m68k.memory_map[i].write16 = sram_write_word; + zbank_memory_map[i].read = sram_read_byte; + zbank_memory_map[i].write = sram_write_byte; + } + + return 0xffff; +} + + +/* + Custom logic (ST 16S25HB1 PAL) used in Micro Machines US cartridge (SR16V1.1 board) + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + /VRES is asserted after write access to 0xA14101 (TMSS bank-shift register) + with D0=1 (cartridge ROM access enabled instead of TMSS Boot ROM) being detected +*/ +static void mapper_sr16v1_w(uint32 address, uint32 data) +{ + /* 0xA10000-0xA1FFFF address range is mapped to I/O and Control registers */ + ctrl_io_write_byte(address, data); + + /* cartridge uses /LWR, /AS and VA1-VA18 (only VA8-VA17 required to decode access to TMSS bank-shift register) */ + if ((address & 0xff01) == 0x4101) + { + /* cartridge ROM is enabled when D0=1 */ + if (data & 0x01) + { + gen_reset(0); + } + } +} + +/************************************************************ + default !TIME signal handler +*************************************************************/ + +static void default_time_w(uint32 address, uint32 data) +{ + /* enable multi-game cartridge mapper by default */ + if (address < 0xa13060) + { + mapper_64k_multi_w(address); + return; + } + + /* enable "official" cartridge mapper by default */ + if (address > 0xa130f1) + { + mapper_512k_w(address, data); + } + else + { + mapper_sega_w(data); + } +} + + +/************************************************************ + Internal register handlers +*************************************************************/ + +static uint32 default_regs_r(uint32 address) +{ + int i; + for (i=0; i<4; i++) + { + if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) + { + return cart.hw.regs[i]; + } + } + return m68k_read_bus_8(address); +} + +static uint32 default_regs_r_16(uint32 address) +{ + int i; + for (i=0; i<4; i++) + { + if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) + { + return (cart.hw.regs[i] << 8); + } + } + return m68k_read_bus_16(address); +} + +static void default_regs_w(uint32 address, uint32 data) +{ + int i; + for (i=0; i<4; i++) + { + if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) + { + cart.hw.regs[i] = data; + return; + } + } + m68k_unused_8_w(address, data); +} + +/* basic register shifting hardware (Bug's Life, Pocket Monster) */ +static uint32 custom_regs_r(uint32 address) +{ + int i; + for (i=0; i<4; i++) + { + if ((address & cart.hw.mask[i]) == cart.hw.addr[i]) + { + return cart.hw.regs[i] >> 1; + } + } + + return m68k_read_bus_8(address); +} + +/* custom register hardware (Top Fighter, Lion King III, Super Donkey Kong 99, Mulan, Pocket Monsters II, Pokemon Stadium) */ +static void custom_regs_w(uint32 address, uint32 data) +{ + uint8 temp; + + /* ROM bankswitch */ + if ((address >> 16) > 0x6f) + { + mapper_32k_w(data); + return; + } + + /* write register */ + default_regs_w(address, data); + + /* bitswapping */ + temp = cart.hw.regs[0]; + switch (cart.hw.regs[1] & 3) + { + case 0: + cart.hw.regs[2] = (temp << 1); + break; + + case 1: + cart.hw.regs[2] = (temp >> 1); + return; + + case 2: + cart.hw.regs[2] = ((temp >> 4) | ((temp & 0x0F) << 4)); + return; + + default: + cart.hw.regs[2] = (((temp >> 7) & 0x01) | ((temp >> 5) & 0x02) | + ((temp >> 3) & 0x04) | ((temp >> 1) & 0x08) | + ((temp << 1) & 0x10) | ((temp << 3) & 0x20) | + ((temp << 5) & 0x40) | ((temp << 7) & 0x80)); + return; + } +} + +/* alternate custom register hardware (Chinese Fighters III) */ +static void custom_alt_regs_w(uint32 address, uint32 data) +{ + /* ROM bankswitch */ + if ((address >> 16) > 0x5f) + { + mapper_64k_w(data); + return; + } + + /* write regs */ + default_regs_w(address, data); +} + + +/* "Tekken 3 Special" custom register hardware */ +static uint32 tekken_regs_r(uint32 address) +{ + /* data output */ + if ((address & 0x0e) == 0x02) + { + /* maybe depends on mode bits ? */ + return (cart.hw.regs[0] - 1); + } + + return m68k_read_bus_16(address); +} + +static void tekken_regs_w(uint32 address, uint32 data) +{ + switch (address & 0x0e) + { + case 0x00: + { + /* data output reset ? (game writes $FF before & after protection check) */ + cart.hw.regs[0]= 0x00; + break; + } + + case 0x02: + { + /* read only ? */ + break; + } + + case 0x0c: + { + /* data output mode bit 0 ? (game writes $01) */ + break; + } + + case 0x0e: + { + /* data output mode bit 1 ? (never written by game) */ + break; + } + + default: + { + /* data input (only connected to D0 ?)*/ + if (data & 1) + { + /* 4-bit hardware register ($400004 corresponds to bit0, $400006 to bit1, etc) */ + cart.hw.regs[0] |= 1 << (((address - 0x04) >> 1) & 3); + } + break; + } + } +} + +/* "Top Shooter" arcade board hardware */ +static uint32 topshooter_r(uint32 address) +{ + if (address < 0x202000) + { + uint8 temp = 0xff; + + switch (address & 0xff) + { + case 0x43: + { + if (input.pad[0] & INPUT_A) temp &= ~0x80; /* Shoot */ + if (input.pad[0] & INPUT_B) temp &= ~0x10; /* Bet */ + if (input.pad[0] & INPUT_START) temp &= ~0x20; /* Start */ + break; + } + + case 0x45: /* ??? (DOWN) & Service Mode (UP) */ + { + if (input.pad[0] & INPUT_UP) temp &= ~0x08; /* Service Mode */ + if (input.pad[0] & INPUT_DOWN) temp &= ~0x10; /* ???, used in service menu to select next option */ + break; + } + + case 0x47: + { + if (input.pad[0] & INPUT_RIGHT) temp &= ~0x03; /* Insert 10 coins */ + break; + } + + case 0x49: + { + if (input.pad[0] & INPUT_LEFT) temp &= ~0x03; /* Clear coins */ + if (input.pad[0] & INPUT_C) temp &= ~0x01; /* Insert XXX coins */ + break; + } + + case 0x51: + { + temp = 0xA5; + break; + } + + default: + { + temp = m68k_read_bus_8(address); + break; + } + } + return temp; + } + + return READ_BYTE(sram.sram , address & 0xffff); +} + +static void topshooter_w(uint32 address, uint32 data) +{ + if (address >= 0x202000) + { + WRITE_BYTE(sram.sram , address & 0xffff, data); + return; + } + + m68k_unused_8_w(address, data); +} + + +/* Sega Channel hardware (not emulated) */ +/* + +$A13004: BUSY ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + +Unused read16 00A13004 (00005B54) +Unused read16 00A13004 (00005B70) +Unused read16 00A13006 (00005B7C) + +Unused read16 00A13004 (00005BC4) +Unused read16 00A13004 (00005BDA) + +Unused write16 00A13032 = 0004 (00005706) +Unused write16 00A130F0 = 0000 (0000570E) + +Unused write16 00A130F0 = 0000 (0000463E) +Unused write16 00A130F2 = 0001 (00004646) +Unused write16 00A130F4 = 0002 (0000464E) +Unused write16 00A130F6 = 0003 (00004656) +Unused write16 00A130F8 = 0004 (0000465E) +Unused write16 00A130FA = 0005 (00004666) + +Unused write16 00A13032 = 0004 (00005706) +Unused write16 00A13032 = 0104 (0000579E) + +Unused write16 00380000 = ACDC (00005718) +Unused write16 00380002 = 0000 (00005722) +Unused read16 00380000 (0000572C) +Unused write16 00A13032 = 0104 (0000579E) +Unused write16 00300000 = ACDC (000057B2) +Unused write16 00380000 = 0000 (000057BC) +Unused read16 00300000 (000057C6) + +static uint32 sega_channel_r(uint32 address) +{ + return m68k_read_bus_16(address);; +} + +static void sega_channel_w(uint32 address, uint32 data) +{ + m68k_unused_16_w(address, data); +} +*/ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/md_cart.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/md_cart.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/md_cart.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/md_cart.h index 94e1520e8f..f19b302186 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/md_cart.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/md_cart.h @@ -1,94 +1,94 @@ -/**************************************************************************** - * Genesis Plus - * Mega Drive cartridge hardware support - * - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Most cartridge protections were initially documented by Haze - * (http://haze.mameworld.info/) - * - * Realtec mapper was documented by TascoDeluxe - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _MD_CART_H_ -#define _MD_CART_H_ - -#ifdef USE_DYNAMIC_ALLOC -#define cart ext->md_cart -#else -#define cart ext.md_cart -#endif - -/* Lock-On cartridge type */ -#define TYPE_GG 0x01 /* Game Genie */ -#define TYPE_AR 0x02 /* (Pro) Action Replay */ -#define TYPE_SK 0x03 /* Sonic & Knuckles */ - -/* Special hardware (0x01 & 0x02 reserved for Master System 3-D glasses & Terebi Oekaki) */ -#define HW_J_CART 0x04 -#define HW_LOCK_ON 0x08 - -/* Cartridge extra hardware */ -typedef struct -{ - uint8 regs[4]; /* internal registers (R/W) */ - uint32 mask[4]; /* registers address mask */ - uint32 addr[4]; /* registers address */ - uint16 realtec; /* realtec mapper */ - uint16 bankshift; /* cartridge with bankshift mecanism reseted on software reset */ - unsigned int (*time_r)(unsigned int address); /* !TIME signal ($a130xx) read handler */ - void (*time_w)(unsigned int address, unsigned int data); /* !TIME signal ($a130xx) write handler */ - unsigned int (*regs_r)(unsigned int address); /* cart hardware registers read handler */ - void (*regs_w)(unsigned int address, unsigned int data); /* cart hardware registers write handler */ -} cart_hw_t; - -/* Cartridge type */ -typedef struct -{ - uint8 *base; /* ROM base (saved for OS/Cartridge ROM swap) */ - uint32 romsize; /* ROM size */ - uint32 mask; /* ROM mask */ - uint8 special; /* custom external hardware (Lock-On, J-Cart, 3-D glasses, Terebi Oekaki,...) */ - cart_hw_t hw; /* cartridge internal hardware */ - uint8 rom[MAXROMSIZE]; /* ROM area */ -} md_cart_t; - - -/* Function prototypes */ -extern void md_cart_init(void); -extern void md_cart_reset(int hard_reset); -extern int md_cart_context_save(uint8 *state); -extern int md_cart_context_load(uint8 *state); - -#endif +/**************************************************************************** + * Genesis Plus + * Mega Drive cartridge hardware support + * + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Most cartridge protections were initially documented by Haze + * (http://haze.mameworld.info/) + * + * Realtec mapper was documented by TascoDeluxe + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _MD_CART_H_ +#define _MD_CART_H_ + +#ifdef USE_DYNAMIC_ALLOC +#define cart ext->md_cart +#else +#define cart ext.md_cart +#endif + +/* Lock-On cartridge type */ +#define TYPE_GG 0x01 /* Game Genie */ +#define TYPE_AR 0x02 /* (Pro) Action Replay */ +#define TYPE_SK 0x03 /* Sonic & Knuckles */ + +/* Special hardware (0x01 & 0x02 reserved for Master System 3-D glasses & Terebi Oekaki) */ +#define HW_J_CART 0x04 +#define HW_LOCK_ON 0x08 + +/* Cartridge extra hardware */ +typedef struct +{ + uint8 regs[4]; /* internal registers (R/W) */ + uint32 mask[4]; /* registers address mask */ + uint32 addr[4]; /* registers address */ + uint16 realtec; /* realtec mapper */ + uint16 bankshift; /* cartridge with bankshift mecanism reseted on software reset */ + unsigned int (*time_r)(unsigned int address); /* !TIME signal ($a130xx) read handler */ + void (*time_w)(unsigned int address, unsigned int data); /* !TIME signal ($a130xx) write handler */ + unsigned int (*regs_r)(unsigned int address); /* cart hardware registers read handler */ + void (*regs_w)(unsigned int address, unsigned int data); /* cart hardware registers write handler */ +} cart_hw_t; + +/* Cartridge type */ +typedef struct +{ + uint8 *base; /* ROM base (saved for OS/Cartridge ROM swap) */ + uint32 romsize; /* ROM size */ + uint32 mask; /* ROM mask */ + uint8 special; /* custom external hardware (Lock-On, J-Cart, 3-D glasses, Terebi Oekaki,...) */ + cart_hw_t hw; /* cartridge internal hardware */ + uint8 rom[MAXROMSIZE]; /* ROM area */ +} md_cart_t; + + +/* Function prototypes */ +extern void md_cart_init(void); +extern void md_cart_reset(int hard_reset); +extern int md_cart_context_save(uint8 *state); +extern int md_cart_context_load(uint8 *state); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sms_cart.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sms_cart.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sms_cart.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sms_cart.c index 64a79a8b33..e3f523190b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sms_cart.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sms_cart.c @@ -1,1544 +1,1544 @@ -/**************************************************************************** - * Genesis Plus - * SG-1000, Master System & Game Gear cartridge hardware support - * - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "eeprom_93c.h" -#include "terebi_oekaki.h" - -#define MAPPER_NONE (0x00) -#define MAPPER_TEREBI (0x01) -#define MAPPER_RAM_2K (0x02) -#define MAPPER_RAM_8K (0x03) -#define MAPPER_RAM_8K_EXT1 (0x04) -#define MAPPER_RAM_8K_EXT2 (0x05) -#define MAPPER_SEGA (0x10) -#define MAPPER_SEGA_X (0x11) -#define MAPPER_93C46 (0x12) -#define MAPPER_CODIES (0x13) -#define MAPPER_MULTI_16K (0x14) -#define MAPPER_KOREA (0x15) -#define MAPPER_KOREA_16K (0x16) -#define MAPPER_KOREA_8K (0x20) -#define MAPPER_MSX (0x21) -#define MAPPER_MSX_NEMESIS (0x22) -#define MAPPER_MULTI_32K (0x40) - -typedef struct -{ - uint32 crc; - uint8 g_3d; - uint8 fm; - uint8 peripheral; - uint8 mapper; - uint8 system; - uint8 region; -} rominfo_t; - -typedef struct -{ - uint8 fcr[4]; - uint8 mapper; - uint16 pages; -} romhw_t; - -static const rominfo_t game_list[] = -{ - /* program requiring Mega Drive VDP (Mode 5) */ - {0x47FA618D, 0, 1, 0, MAPPER_SEGA, SYSTEM_PBC, REGION_USA}, /* Charles MacDonald's Mode 5 Demo Program */ - - /* game requiring SEGA mapper */ - {0xFF67359B, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* DataStorm (homebrew) */ - - /* games requiring 315-5124 VDP (Mark-III, Master System I) */ - {0x32759751, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) */ - {0xE8B82066, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) [Demo] */ - - /* games requiring Sega 315-5235 mapper without bank shifting */ - {0x23BAC434, 0, 0, 0, MAPPER_SEGA_X, SYSTEM_GG, REGION_USA}, /* Shining Force Gaiden - Final Conflict (JP) [T-Eng] */ - - /* games using "Korean" mappers */ - {0x445525E2, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Penguin Adventure (KR) */ - {0x83F0EEDE, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Street Master (KR) */ - {0xA05258F5, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Won-Si-In (KR) */ - {0x06965ED9, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* F-1 Spirit - The way to Formula-1 (KR) */ - {0x77EFE84A, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Cyborg Z (KR) */ - {0xF89AF3CC, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Knightmare II - The Maze of Galious (KR) */ - {0x9195C34C, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Boy 3 (KR) */ - {0xE316C06D, 0, 0, 0, MAPPER_MSX_NEMESIS, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis (KR) */ - {0x0A77FA5E, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis 2 (KR) */ - {0x89B79E77, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Dodgeball King (KR) */ - {0x929222C4, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung II (KR) */ - {0x18FB98A3, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung 3 (KR) */ - {0x97D03541, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sangokushi 3 (KR) */ - {0x192949D5, 0, 0, 0, MAPPER_KOREA_8K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Janggun-ui Adeul (KR) */ - {0x76C5BDFB, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Jang Pung II [SMS-GG] (KR) */ - {0x9FA727A0, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 0] [SMS-GG] (US) */ - {0xFB481971, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 1] [SMS-GG] (US) */ - {0xA67F2A5C, 0, 0, 0, MAPPER_MULTI_16K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* 4-Pak All Action (KR) */ - {0x98AF0236, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 1) (KR) */ - {0x6EBFE1C3, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 2) (KR) */ - {0x81A36A4F, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 3) (KR) */ - {0x8D2D695D, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 4) (KR) */ - {0x82C09B57, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 5) (KR) */ - {0x4088EEB4, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 6) (KR) */ - {0xFBA94148, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 1) (KR) */ - {0x8333C86E, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 2) (KR) */ - {0x00E9809F, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 3) (KR) */ - - /* games using Codemaster mapper */ - {0x29822980, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Cosmic Spacehead */ - {0x8813514B, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Excellent Dizzy Collection, The [Proto] */ - {0xB9664AE1, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Fantastic Dizzy */ - {0xA577CE46, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Micro Machines */ - {0xEA5C3A6F, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_USA}, /* Dinobasher - Starring Bignose the Caveman [Proto] */ - {0xAA140C9C, 0, 0, 0, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Excellent Dizzy Collection, The [SMS-GG] */ - {0xC888222B, 0, 0, 0, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Fantastic Dizzy [SMS-GG] */ - {0x6CAA625B, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Cosmic Spacehead [GG]*/ - {0x152F0DCC, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Drop Zone */ - {0x5E53C7F7, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Ernie Els Golf */ - {0xD9A7F170, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Man Overboard! */ - {0xF7C524F6, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines [GG] */ - {0xC21E6CD0, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines [GG] [Proto] */ - {0xDBE8895C, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines 2 - Turbo Tournament */ - {0xC1756BEE, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Pete Sampras Tennis */ - {0x72981057, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* CJ Elephant Fugitive */ - {0x3ACE6335, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* CJ Elephant Fugitive [Proto] */ - {0x2306AAF4, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Dinobasher - Starring Bignose the Caveman [GG] [Proto] */ - - /* games using serial EEPROM */ - {0x36EBCD6D, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* Majors Pro Baseball */ - {0x3D8D0DD6, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v0] */ - {0xBB38CFD7, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v1] */ - {0x578A8A38, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball '95 */ - - /* games using Terebi Oekaki graphic board */ - {0xDD4A661B, 0, 0, 0, MAPPER_TEREBI, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Terebi Oekaki */ - - /* games using 2KB external RAM (volatile) */ - {0xAF4F14BC, 0, 0, 0, MAPPER_RAM_2K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Othello (J) */ - {0x1D1A0CA3, 0, 0, 0, MAPPER_RAM_2K, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello (TW) */ - - /* games using 8KB external RAM (volatile) */ - {0x092F29D6, 0, 0, 0, MAPPER_RAM_8K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* The Castle (J) */ - - /* games requiring SG-1000 II 8K RAM extension adapters */ - {0xCE5648C3, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special [DahJee] (TW) */ - {0x223397A1, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* King's Valley (TW) */ - {0x281D2888, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Knightmare (TW) */ - {0x306D5F78, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X [DahJee] (TW) */ - {0x29E047CC, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */ - {0x5CBD1163, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Tank Battalion (TW) */ - {0x2E7166D5, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Legend of Kage (TW) */ - {0xC550B4F0, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* TwinBee (TW) */ - {0xFC87463C, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Yie Ar Kung-Fu II (TW) */ - {0xDF7CBFA5, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Pippols (TW) */ - {0xE0816BB7, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Star Soldier (TW) */ - {0x69FC1494, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special (TW) */ - {0xFFC4EE3F, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Magical Kid Wiz (TW) */ - {0x2E366CCF, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Castle (TW) */ - {0xAAAC12CF, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X (TW) */ - {0xD2EDD329, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */ - - /* games requiring 2KB internal RAM (SG-1000 II clone hardware) */ - {0x7F7F009D, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Circus Charlie (KR) */ - {0x77DB4704, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Q*Bert */ - {0xC5A67B95, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello Multivision BIOS */ - - /* games requiring Japanese region setting */ - {0x71DEBA5A, 0, 0, 0, MAPPER_SEGA, SYSTEM_GG, REGION_JAPAN_NTSC}, /* Pop Breaker */ - {0xC9DD4E5F, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop (Super Arkanoid) */ - - /* games requiring Japanese Master System I/O chip (315-5297) */ - {0xBD1CC7DF, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Tetris (KR) */ - {0x6D309AC5, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Power Boggle Boggle (KR) */ - - /* games requiring random RAM pattern initialization */ - {0x08BF3DE3, 0, 0, 0, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Alibaba and 40 Thieves (KR) */ - {0x643B6B76, 0, 0, 0, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Block Hole (KR) */ - - /* games requiring PAL timings */ - {0x72420F38, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Addams Familly */ - {0x2D48C1D3, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Back to the Future Part III */ - {0x1CBB7BF1, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Battlemaniacs (BR) */ - {0x1B10A951, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Bram Stoker's Dracula */ - {0xC0E25D62, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* California Games II */ - {0x45C50294, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Jogos de Verao II (BR) */ - {0xC9DBF936, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Home Alone */ - {0x0047B615, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Predator2 */ - {0xF42E145C, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Quest for the Shaven Yak Starring Ren Hoek & Stimpy (BR) */ - {0x9F951756, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* RoboCop 3 */ - {0xF8176918, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sensible Soccer */ - {0x1575581D, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Shadow of the Beast */ - {0x96B3F29E, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic Blast (BR) */ - {0x5B3B922C, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V0] */ - {0xD6F2BFCA, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V1] */ - {0xCA1D3752, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Space Harrier [50 Hz] */ - {0x85CFC9C9, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Taito Chase H.Q. */ - {0x332A847D, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* NBA Jam [Proto] */ - - /* games running in Game Gear MS compatibility mode */ - {0x59840FD6, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Castle of Illusion - Starring Mickey Mouse [SMS-GG] */ - {0x9C76FB3A, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Rastan Saga [SMS-GG] */ - {0xC8381DEF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Taito Chase H.Q [SMS-GG] */ - {0xDA8E95A9, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* WWF Wrestlemania Steel Cage Challenge [SMS-GG] */ - {0x1D93246E, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [A][SMS-GG] */ - {0xA2F9C7AF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [B][SMS-GG] */ - {0x01EAB89D, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa [SMS-GG] */ - {0xF037EC00, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa (US) [SMS-GG] */ - {0xE5F789B9, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Predator 2 [SMS-GG] */ - {0x311D2863, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [A][SMS-GG] */ - {0x45F058D6, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [B][SMS-GG] */ - {0x56201996, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* R.C. Grand Prix [SMS-GG] */ - {0x10DBBEF4, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Super Kick Off [SMS-GG] */ - {0x9942B69B, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Castle of Illusion - Starring Mickey Mouse (J) [SMS-GG] */ - {0x7BB81E3D, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Taito Chase H.Q (J) [SMS-GG] */ - {0x6F8E46CF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Alex Kidd in Miracle World (TW) [SMS-GG] */ - {0x3382D73F, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Olympic Gold (TW) [SMS-GG] */ - - /* games requiring 3-D Glasses */ - {0x6BD5C2BF, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Space Harrier 3-D */ - {0x8ECD201C, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D */ - {0xFBF96C81, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D (BR) */ - {0x58D5FC48, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D [Proto] */ - {0x31B8040B, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Maze Hunter 3-D */ - {0xABD48AD2, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Poseidon Wars 3-D */ - {0xA3EF13CB, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zaxxon 3-D */ - {0xBBA74147, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zaxxon 3-D [Proto] */ - {0xD6F43DDA, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run 3-D */ - {0x4E684EC0, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run 3-D [Proto] */ - {0x871562b0, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maze Walker */ - {0x156948f9, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Space Harrier 3-D (J) */ - - /* games requiring 3-D Glasses & Sega Light Phaser */ - {0xFBE5CFBB, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D */ - {0xE79BB689, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D [BIOS] */ - {0x43DEF05D, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D [Proto] */ - {0x56DCB2D4, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* 3D Gunner [Proto] */ - - /* games requiring Sega Light Phaser */ - {0x861B6E79, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Assault City [Light Phaser] */ - {0x5FC74D2A, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Gangster Town */ - {0xE167A561, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Hang-On / Safari Hunt */ - {0x91E93385, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Hang-On / Safari Hunt [BIOS] */ - {0xE8EA842C, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Marksman Shooting / Trap Shooting */ - {0xE8215C2E, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Marksman Shooting / Trap Shooting / Safari Hunt */ - {0x205CAAE8, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Operation Wolf */ - {0x23283F37, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Operation Wolf [A] */ - {0xDA5A7013, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rambo 3 */ - {0x79AC8E7F, 0, 1, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rescue Mission */ - {0x4B051022, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shooting Gallery */ - {0xA908CFF5, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Spacegun */ - {0x5359762D, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wanted */ - {0x0CA95637, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Laser Ghost */ - - /* games requiring Sega Paddle */ - {0xF9DBB533, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alex Kidd BMX Trial */ - {0xA6FA42D0, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Galactic Protector */ - {0x29BC7FAD, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Megumi Rescue */ - {0x315917D4, 0, 0, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop */ - - /* games requiring Sega Sport Pad */ - {0x41C948BF, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sports Pad Soccer */ - {0x0CB7E21F, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Great Ice Hockey */ - {0xE42E4998, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Sports Pad Football */ - - /* games requiring Furrtek's Master Tap */ - {0xFAB6F52F, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.0) */ - {0x143AB50B, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.1) */ - - /* games requiring Sega Graphic Board */ - {0x276AA542, 0, 0, SYSTEM_GRAPHIC_BOARD, MAPPER_NONE, SYSTEM_SMS, REGION_USA}, /* Sega Graphic Board v2.0 Software (Prototype) */ - - /* games supporting YM2413 FM */ - {0x1C951F8E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* After Burner */ - {0xC13896D5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Alex Kidd: The Lost Stars */ - {0x5CBFE997, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Alien Syndrome */ - {0xBBA2FE98, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Altered Beast */ - {0xFF614EB3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Aztec Adventure */ - {0x3084CF11, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Bomber Raid */ - {0xAC6009A7, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* California Games */ - {0xA4852757, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Captain Silver */ - {0xB81F6FA5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Captain Silver (U) */ - {0x3CFF6E80, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Casino Games */ - {0xE7F62E6D, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Cloud Master */ - {0x908E7524, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Cyborg Hunter */ - {0xA55D89F3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Double Dragon */ - {0xB8B141F9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Fantasy Zone II */ - {0xD29889AD, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Fantasy Zone: The Maze */ - {0xA4AC35D8, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Galaxy Force */ - {0x6C827520, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Galaxy Force (U) */ - {0x1890F407, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Game Box Srie Esportes Radicais (BR) */ - {0xB746A6F5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Global Defense */ - {0x91A0FC4E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Global Defense [Proto] */ - {0x48651325, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golfamania */ - {0x5DABFDC3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golfamania [Proto] */ - {0xA51376FE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golvellius - Valley of Doom */ - {0x98E4AE4A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Great Golf */ - {0x516ED32E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Kenseiden */ - {0xE8511B08, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Lord of The Sword */ - {0x0E333B6E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord */ - {0x301A59AA, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord [Proto] */ - {0x01D67C0B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Mnica no Castelo do Drago (BR) */ - {0x5589D8D2, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run */ - {0xE030E66C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Parlour Games */ - {0xF97E9875, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Penguin Land */ - {0x4077EFD9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Power Strike */ - {0xBB54B6B0, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* R-Type */ - {0x42FC47EE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rampage */ - {0xC547EB1B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rastan */ - {0x9A8B28EC, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Scramble Spirits */ - {0xAAB67EC3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shanghai */ - {0x0C6FAC4E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shinobi */ - {0x4752CAE7, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* SpellCaster */ - {0x1A390B93, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Tennis Ace */ - {0xAE920E4B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Thunder Blade */ - {0x51BD14BE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Time Soldiers */ - {0x22CCA9BB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Turma da Mnica em: O Resgate (BR) */ - {0xB52D60C8, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Ultima IV */ - {0xDE9F8517, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Ultima IV [Proto] */ - {0xDFB0B161, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Vigilante */ - {0x679E1676, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wonder Boy III: The Dragon's Trap */ - {0x8CBEF0C1, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wonder Boy in Monster Land */ - {0x2F2E3BC9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zillion II - The Tri Formation */ - {0x48D44A13, 0, 1, 0, MAPPER_NONE, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* BIOS (J) */ - {0xD8C4165B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Aleste */ - {0x4CC11DF9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alien Syndrome (J) */ - {0xE421E466, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Chouon Senshi Borgman */ - {0x2BCDB8FA, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken */ - {0x56BD2455, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken [Proto] */ - {0xC722FB42, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Fantasy Zone II (J) */ - {0x7ABC70E9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Family Games (Party Games) */ - {0x9AFAB511, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Game De Check! Koutsuu Anzen [Proto] (JP) */ - {0x9E9DEB18, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Game De Check! Koutsuu Anzen [Proto] (JP) [T-Eng] */ - {0x6586BD1F, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf */ - {0x4847BC91, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf [Proto] */ - {0xB9FDF6D9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Haja no Fuuin */ - {0x955A009E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hoshi wo Sagashite */ - {0x05EA5353, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kenseiden (J) */ - {0xD11D32E4, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kujakuou */ - {0xAA7D6F45, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Lord of Sword */ - {0xBF0411AD, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius */ - {0x21A21352, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius [Proto] */ - {0x5B5F9106, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nekyuu Kousien */ - {0xBEA27D5C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Opa Opa */ - {0x6605D36A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) */ - {0x70E89681, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) [T-Eng v1.02] */ - {0xA04CF71A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) [T-Eng v2.00] */ - {0xE1FFF1BB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Shinobi (J) */ - {0x11645549, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Solomon no Kagi - Oujo Rihita no Namida */ - {0x7E0EF8CB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Racing */ - {0xB1DA6A30, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Wonder Boy Monster World */ - {0x8132AB2C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Tensai Bakabon */ - {0xC0CE19B1, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Thunder Blade (J) */ - {0x07301F83, 0, 1, 0, MAPPER_SEGA, SYSTEM_PBC, REGION_JAPAN_NTSC} /* Phantasy Star [Megadrive] (J) */ -}; - -/* Cartridge & BIOS ROM hardware */ -static romhw_t cart_rom; -static romhw_t bios_rom; - -/* Current slot */ -static struct -{ - uint8 *rom; - uint8 *fcr; - uint8 mapper; - uint16 pages; -} slot; - -/* Function prototypes */ -static void mapper_reset(void); -static void mapper_8k_w(int offset, unsigned char data); -static void mapper_16k_w(int offset, unsigned char data); -static void mapper_32k_w(unsigned char data); -static void write_mapper_none(unsigned int address, unsigned char data); -static void write_mapper_sega(unsigned int address, unsigned char data); -static void write_mapper_codies(unsigned int address, unsigned char data); -static void write_mapper_korea(unsigned int address, unsigned char data); -static void write_mapper_korea_8k(unsigned int address, unsigned char data); -static void write_mapper_korea_16k(unsigned int address, unsigned char data); -static void write_mapper_msx(unsigned int address, unsigned char data); -static void write_mapper_multi_16k(unsigned int address, unsigned char data); -static void write_mapper_multi_32k(unsigned int address, unsigned char data); -static void write_mapper_93c46(unsigned int address, unsigned char data); -static void write_mapper_terebi(unsigned int address, unsigned char data); -static unsigned char read_mapper_93c46(unsigned int address); -static unsigned char read_mapper_terebi(unsigned int address); -static unsigned char read_mapper_korea_8k(unsigned int address); -static unsigned char read_mapper_default(unsigned int address); - -void sms_cart_init(void) -{ - int i = sizeof(game_list) / sizeof(rominfo_t) - 1; - - /* game CRC */ - uint32 crc = crc32(0, cart.rom, cart.romsize); - - /* unmapped memory return $FF on read (mapped to unused cartridge areas $510000-$5103FF & $510400-$5107FF) */ - memset(cart.rom + 0x510000, 0xFF, 0x800); - - /* default cartridge ROM mapper */ - cart_rom.mapper = (cart.romsize > 0xC000) ? MAPPER_SEGA : MAPPER_NONE; - - /* disable 3-D Glasses by default */ - cart.special = 0; - - /* YM2413 chip in AUTO mode */ - if (config.ym2413 & 2) - { - if ((system_hw & SYSTEM_SMS) && (region_code == REGION_JAPAN_NTSC)) - { - /* japanese Master System has built-in FM chip */ - config.ym2413 = 3; - } - else - { - /* by default, FM chip is disabled */ - config.ym2413 = 2; - } - } - - /* auto-detect game settings */ - do - { - if (crc == game_list[i].crc) - { - /* auto-detect cartridge mapper */ - cart_rom.mapper = game_list[i].mapper; - - /* auto-detect required peripherals */ - if (game_list[i].peripheral) - { - /* save current input settings */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - - input.system[0] = game_list[i].peripheral; - } - - /* auto-detect 3D glasses support */ - cart.special = game_list[i].g_3d; - - /* auto-detect system hardware */ - if (!config.system || ((config.system == SYSTEM_GG) && (game_list[i].system == SYSTEM_GGMS))) - { - system_hw = game_list[i].system; - } - - /* auto-detect YM2413 chip support in AUTO mode */ - if (config.ym2413 & 2) - { - config.ym2413 |= game_list[i].fm; - } - - /* game found, leave loop */ - break; - } - } - while (i--); - - /* ROM paging */ - if (cart_rom.mapper < MAPPER_SEGA) - { - /* 1KB ROM banks */ - cart_rom.pages = (cart.romsize + (1 << 10) - 1) >> 10; - } - else if (cart_rom.mapper & MAPPER_KOREA_8K) - { - /* 8KB ROM banks */ - cart_rom.pages = (cart.romsize + (1 << 13) - 1) >> 13; - } - else if (cart_rom.mapper & MAPPER_MULTI_32K) - { - /* 32KB ROM banks */ - cart_rom.pages = (cart.romsize + (1 << 15) - 1) >> 15; - } - else - { - /* 16KB ROM banks */ - cart_rom.pages = (cart.romsize + (1 << 14) - 1) >> 14; - } - - /* initialize extra hardware */ - if (cart_rom.mapper == MAPPER_93C46) - { - /* 93C46 eeprom */ - eeprom_93c_init(); - } - else if (cart_rom.mapper == MAPPER_TEREBI) - { - /* Terebi Oekaki tablet */ - cart.special |= HW_TEREBI_OEKAKI; - } - - /* initialize SRAM */ - sram_init(); - - /* enable cartridge backup memory by default */ - sram.on = 1; - - /* default gun offset for Light Phaser */ - input.x_offset = 20; - input.y_offset = 0; - - /* SpaceGun & Gangster Town use specific gun offset */ - if ((crc == 0x5359762D) || (crc == 0x5FC74D2A)) - { - input.x_offset = 16; - } - - /* BIOS support */ - if (config.bios & 1) - { - /* load BIOS file */ - int bios_size = load_bios(system_hw); - - if (bios_size > 0xC000) - { - /* assume SEGA mapper if BIOS ROM is larger than 48KB */ - bios_rom.mapper = MAPPER_SEGA; - bios_rom.pages = bios_size >> 14; - } - else if (bios_size >= 0) - { - /* default BIOS ROM mapper */ - bios_rom.mapper = MAPPER_NONE; - bios_rom.pages = bios_size >> 10; - } - - /* unload cartridge if required & BIOS ROM is loaded */ - if (!(config.bios & 2) && bios_rom.pages) - { - cart_rom.pages = 0; - } - } - else - { - /* mark Master System & Game Gear BIOS as unloaded */ - system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); - - /* BIOS ROM is disabled */ - bios_rom.pages = 0; - } -} - -void sms_cart_reset(void) -{ - /* reset BIOS ROM paging (SEGA mapper by default) */ - bios_rom.fcr[0] = 0; - bios_rom.fcr[1] = 0; - bios_rom.fcr[2] = 1; - bios_rom.fcr[3] = 2; - - /* reset cartridge ROM paging */ - switch (cart_rom.mapper) - { - case MAPPER_SEGA: - case MAPPER_SEGA_X: - cart_rom.fcr[0] = 0; - cart_rom.fcr[1] = 0; - cart_rom.fcr[2] = 1; - cart_rom.fcr[3] = 2; - break; - - case MAPPER_KOREA_8K: - case MAPPER_MSX: - case MAPPER_MSX_NEMESIS: - cart_rom.fcr[0] = 0; - cart_rom.fcr[1] = 0; - cart_rom.fcr[2] = 0; - cart_rom.fcr[3] = 0; - break; - - default: - cart_rom.fcr[0] = 0; - cart_rom.fcr[1] = 0; - cart_rom.fcr[2] = 1; - cart_rom.fcr[3] = 0; - break; - } - - /* check if BIOS is larger than 1KB */ - if (bios_rom.pages > 1) - { - /* enable BIOS ROM */ - slot.rom = cart.rom + 0x400000; - slot.fcr = bios_rom.fcr; - slot.mapper = bios_rom.mapper; - slot.pages = bios_rom.pages; - } - else - { - /* enable cartridge ROM */ - slot.rom = cart.rom; - slot.fcr = cart_rom.fcr; - slot.mapper = cart_rom.mapper; - slot.pages = cart_rom.pages; - - /* force Memory Control register value in RAM (usually set by Master System BIOS) */ - if (system_hw & SYSTEM_SMS) - { - work_ram[0] = 0xA8; - } - } - - /* reset Z80 memory map */ - mapper_reset(); - - /* 1KB BIOS special case (Majesco GG) */ - if (bios_rom.pages == 1) - { - /* BIOS ROM is mapped to $0000-$03FF */ - z80_readmap[0] = cart.rom + 0x400000; - } -} - -void sms_cart_switch(uint8 mode) -{ - /* by default, disable cartridge & BIOS ROM */ - slot.pages = 0; - - /* cartridge ROM enabled ? */ - if (mode & 0x40) - { - /* check if cartridge is loaded */ - if (cart_rom.pages) - { - /* map cartridge ROM */ - slot.rom = cart.rom; - slot.fcr = cart_rom.fcr; - slot.mapper = cart_rom.mapper; - slot.pages = cart_rom.pages; - } - } - else - { - /* BIOS ROM enabled ? */ - if (mode & 0x08) - { - /* check if BIOS ROM is larger than 1KB */ - if (bios_rom.pages > 1) - { - /* map BIOS ROM */ - slot.rom = cart.rom + 0x400000; - slot.fcr = bios_rom.fcr; - slot.mapper = bios_rom.mapper; - slot.pages = bios_rom.pages; - } - else - { - /* by default, map cartridge ROM */ - slot.rom = cart.rom; - slot.fcr = cart_rom.fcr; - slot.mapper = cart_rom.mapper; - slot.pages = cart_rom.pages; - } - } - - /* assume only BIOS would disable cartridge slot */ - if (!bios_rom.pages) - { - /* max. BIOS ROM size supported is 1MB */ - if (cart.romsize <= 0x100000) - { - /* copy to BIOS ROM */ - memcpy(cart.rom + 0x400000, cart.rom, cart.romsize); - memcpy(bios_rom.fcr, cart_rom.fcr, 4); - bios_rom.mapper = cart_rom.mapper; - bios_rom.pages = cart_rom.pages; - - /* unload cartridge */ - cart_rom.pages = 0; - } - } - } - - /* reset Z80 memory map */ - mapper_reset(); - - /* 1KB BIOS special case (Majesco GG) */ - if ((bios_rom.pages == 1) && ((mode & 0x48) == 0x08)) - { - /* BIOS ROM is mapped to $0000-$03FF */ - z80_readmap[0] = cart.rom + 0x400000; - } -} - -int sms_cart_region_detect(void) -{ - int i = sizeof(game_list) / sizeof(rominfo_t) - 1; - - /* compute CRC */ - uint32 crc = crc32(0, cart.rom, cart.romsize); - - /* Turma da Mnica em: O Resgate & Wonder Boy III enable FM support on japanese hardware only */ - if (config.ym2413 && ((crc == 0x22CCA9BB) || (crc == 0x679E1676))) - { - return REGION_JAPAN_NTSC; - } - - /* game database */ - do - { - if (crc == game_list[i].crc) - { - return game_list[i].region; - } - } - while(i--); - - /* Mark-III hardware */ - if (config.system == SYSTEM_MARKIII) - { - /* Japan only */ - region_code = REGION_JAPAN_NTSC; - } - - /* Master System / Game Gear ROM file */ - if (system_hw >= SYSTEM_SMS) - { - /* missing header or valid header with Japan region code */ - if (!rominfo.country[0] || !memcmp(rominfo.country,"SMS Japan",9) || !memcmp(rominfo.country,"GG Japan",8)) - { - /* assume Japan region (fixes BIOS support) */ - return REGION_JAPAN_NTSC; - } - } - - /* default region */ - return REGION_USA; -} - -int sms_cart_context_save(uint8 *state) -{ - int bufferptr = 0; - - /* check if cartridge ROM is disabled */ - if (io_reg[0x0E] & 0x40) - { - /* save Boot ROM mapper settings */ - save_param(bios_rom.fcr, 4); - } - else - { - /* save cartridge mapper settings */ - save_param(cart_rom.fcr, 4); - } - - /* support for SG-1000 games with extra RAM */ - if ((cart_rom.mapper == MAPPER_RAM_8K) || (cart_rom.mapper == MAPPER_RAM_8K_EXT1)) - { - /* 8KB extra RAM */ - save_param(work_ram + 0x2000, 0x2000); - } - else if (cart_rom.mapper == MAPPER_RAM_2K) - { - /* 2KB extra RAM */ - save_param(work_ram + 0x2000, 0x800); - } - - return bufferptr; -} - -int sms_cart_context_load(uint8 *state) -{ - int bufferptr = 0; - - /* check if cartridge ROM is disabled */ - if (io_reg[0x0E] & 0x40) - { - /* load Boot ROM mapper settings */ - load_param(bios_rom.fcr, 4); - - /* set default cartridge ROM paging */ - switch (cart_rom.mapper) - { - case MAPPER_SEGA: - case MAPPER_SEGA_X: - cart_rom.fcr[0] = 0; - cart_rom.fcr[1] = 0; - cart_rom.fcr[2] = 1; - cart_rom.fcr[3] = 2; - break; - - case MAPPER_KOREA_8K: - case MAPPER_MSX: - case MAPPER_MSX_NEMESIS: - cart_rom.fcr[0] = 0; - cart_rom.fcr[1] = 0; - cart_rom.fcr[2] = 0; - cart_rom.fcr[3] = 0; - break; - - default: - cart_rom.fcr[0] = 0; - cart_rom.fcr[1] = 0; - cart_rom.fcr[2] = 1; - cart_rom.fcr[3] = 0; - break; - } - } - else - { - /* load cartridge mapper settings */ - load_param(cart_rom.fcr, 4); - - /* set default BIOS ROM paging (SEGA mapper by default) */ - bios_rom.fcr[0] = 0; - bios_rom.fcr[1] = 0; - bios_rom.fcr[2] = 1; - bios_rom.fcr[3] = 2; - } - - /* support for SG-1000 games with extra RAM */ - if ((cart_rom.mapper == MAPPER_RAM_8K) || (cart_rom.mapper == MAPPER_RAM_8K_EXT1)) - { - /* 8KB extra RAM */ - load_param(work_ram + 0x2000, 0x2000); - } - else if (cart_rom.mapper == MAPPER_RAM_2K) - { - /* 2KB extra RAM */ - load_param(work_ram + 0x2000, 0x800); - } - - return bufferptr; -} - -static void mapper_reset(void) -{ - int i; - - /* reset $C000-$FFFF mapping */ - if (cart_rom.mapper == MAPPER_RAM_8K_EXT2) - { - /* 8KB RAM extension adapter (type B) */ - for (i = 0x30; i < 0x40; i++) - { - /* $C000-$FFFF mapped to 8KB external RAM (mirrored) */ - z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x07) << 10]; - } - } - else if (system_hw == SYSTEM_SGII) - { - /* SG-1000 II clone hardware with 2KB internal RAM */ - for (i = 0x30; i < 0x40; i++) - { - /* $C000-$FFFF mapped to 2KB internal RAM (mirrored) */ - z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x01) << 10]; - } - } - else if (system_hw == SYSTEM_SG) - { - /* default SG-1000 hardware has only 1KB internal RAM */ - for (i = 0x30; i < 0x40; i++) - { - /* $C000-$FFFF mapped to 1KB internal RAM (mirrored) */ - z80_readmap[i] = z80_writemap[i] = &work_ram[0]; - } - } - else - { - /* Mark III / Master System / Game Gear hardware */ - for (i = 0x30; i < 0x40; i++) - { - /* $C000-$FFFF mapped to 8KB internal RAM (mirrored) */ - z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x07) << 10]; - } - } - - /* check if ROM is disabled */ - if (!slot.pages) - { - /* $0000-$BFFF mapped to unused cartridge areas */ - for(i = 0x00; i < 0x30; i++) - { - z80_writemap[i] = cart.rom + 0x510000; - z80_readmap[i] = cart.rom + 0x510400; - } - - /* set default Z80 memory handlers */ - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_none; - return; - } - - /* reset cartridge hardware mapping */ - if (slot.mapper < MAPPER_SEGA) - { - /* $0000-$7FFF mapping */ - for (i = 0x00; i < 0x20; i++) - { - /* by default, $0000-$7FFF mapped to cartridge ROM lower KB (mirrored if less than 32KB) */ - z80_readmap[i] = &slot.rom[(i % slot.pages) << 10]; - z80_writemap[i] = cart.rom + 0x510000; /* unused area */ - } - - /* 8KB RAM extension adapter (type A) */ - if (slot.mapper == MAPPER_RAM_8K_EXT1) - { - for (i = 0x08; i < 0x10; i++) - { - /* $2000-$3FFF mapped to 8KB external RAM */ - z80_readmap[i] = z80_writemap[i] = &work_ram[0x2000 + ((i & 0x07) << 10)]; - } - } - - /* $8000-$BFFF mapping */ - if (slot.mapper == MAPPER_RAM_8K) - { - /* 8KB on-board RAM (The Castle) */ - for (i = 0x20; i < 0x30; i++) - { - /* $8000-$BFFF mapped to 8KB external RAM (mirrored) */ - z80_readmap[i] = z80_writemap[i] = &work_ram[0x2000 + ((i & 0x07) << 10)]; - } - } - else if (slot.mapper == MAPPER_RAM_2K) - { - /* 2KB on-board RAM (Othello) */ - for (i = 0x20; i < 0x30; i++) - { - /* $8000-$BFFF mapped to 2KB external RAM (mirrored) */ - z80_readmap[i] = z80_writemap[i] = &work_ram[0x2000 + ((i & 0x01) << 10)]; - } - } - else if (slot.pages <= 0x20) - { - /* cartridge ROM lower than 32KB */ - for (i = 0x20; i < 0x30; i++) - { - /* $8000-$BFFF mapped to unused area */ - z80_writemap[i] = cart.rom + 0x510000; - z80_readmap[i] = cart.rom + 0x510400; - } - } - else - { - /* cartridge ROM up to 48KB */ - for (i = 0x20; i < 0x30; i++) - { - /* $8000-$BFFF mapped to cartridge ROM upper KB (mirrored if less than 48KB) */ - z80_readmap[i] = &slot.rom[(0x20 + (i % (slot.pages - 0x20))) << 10]; - z80_writemap[i] = cart.rom + 0x510000; /* unused area */ - } - } - } - else - { - /* reset $0000-$BFFF mapping */ - for (i = 0x00; i < 0x30; i++) - { - /* by default, $0000-$BFFF is mapped to cartridge ROM lower 48KB */ - z80_readmap[i] = &slot.rom[i << 10]; - z80_writemap[i] = cart.rom + 0x510000; /* unused area */ - } - - /* reset ROM paging hardware */ - if (slot.mapper & MAPPER_KOREA_8K) - { - /* 8KB pages */ - mapper_8k_w(0,slot.fcr[0]); - mapper_8k_w(1,slot.fcr[1]); - mapper_8k_w(2,slot.fcr[2]); - mapper_8k_w(3,slot.fcr[3]); - - /* "Nemesis" mapper specific */ - if (slot.mapper == MAPPER_MSX_NEMESIS) - { - /* first 8KB page is mapped to last 8KB ROM bank */ - for (i = 0x00; i < 0x08; i++) - { - z80_readmap[i] = &slot.rom[(0x0f << 13) | ((i & 0x07) << 10)]; - } - } - } - else if (slot.mapper & MAPPER_MULTI_32K) - { - /* 32KB pages */ - mapper_32k_w(slot.fcr[0]); - } - else - { - /* 16KB pages */ - mapper_16k_w(0,slot.fcr[0]); - mapper_16k_w(1,slot.fcr[1]); - mapper_16k_w(2,slot.fcr[2]); - mapper_16k_w(3,slot.fcr[3]); - } - } - - /* reset Z80 memory handlers */ - switch (slot.mapper) - { - case MAPPER_SEGA: - case MAPPER_SEGA_X: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_sega; - break; - - case MAPPER_CODIES: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_codies; - break; - - case MAPPER_KOREA: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_korea; - break; - - case MAPPER_KOREA_8K: - z80_readmem = read_mapper_korea_8k; - z80_writemem = write_mapper_korea_8k; - break; - - case MAPPER_KOREA_16K: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_korea_16k; - break; - - case MAPPER_MSX: - case MAPPER_MSX_NEMESIS: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_msx; - break; - - case MAPPER_MULTI_16K: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_multi_16k; - break; - - case MAPPER_MULTI_32K: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_multi_32k; - break; - - case MAPPER_93C46: - z80_readmem = read_mapper_93c46; - z80_writemem = write_mapper_93c46; - break; - - case MAPPER_TEREBI: - z80_readmem = read_mapper_terebi; - z80_writemem = write_mapper_terebi; - break; - - default: - z80_readmem = read_mapper_default; - z80_writemem = write_mapper_none; - break; - } -} - -static void mapper_8k_w(int offset, unsigned char data) -{ - int i; - - /* cartridge ROM page (8KB) */ - uint8 *page = &slot.rom[(data % slot.pages) << 13]; - - /* Save frame control register data */ - slot.fcr[offset] = data; - - /* 4 x 8KB banks */ - switch (offset & 3) - { - case 0: /* cartridge ROM bank (8KB) at $8000-$9FFF */ - { - for (i = 0x20; i < 0x28; i++) - { - z80_readmap[i] = &page[(i & 0x07) << 10]; - } - break; - } - - case 1: /* cartridge ROM bank (8KB) at $A000-$BFFF */ - { - for (i = 0x28; i < 0x30; i++) - { - z80_readmap[i] = &page[(i & 0x07) << 10]; - } - break; - } - - case 2: /* cartridge ROM bank (8KB) at $4000-$5FFF */ - { - for (i = 0x10; i < 0x18; i++) - { - z80_readmap[i] = &page[(i & 0x07) << 10]; - } - break; - } - - case 3: /* cartridge ROM bank (8KB) at $6000-$7FFF */ - { - for (i = 0x18; i < 0x20; i++) - { - z80_readmap[i] = &page[(i & 0x07) << 10]; - } - break; - } - } - -#ifdef CHEATS_UPDATE - /* update ROM patches when banking has changed */ - CHEATS_UPDATE(); -#endif -} - -static void mapper_16k_w(int offset, unsigned char data) -{ - int i; - - /* cartridge ROM page (16KB) */ - uint8 page = data % slot.pages; - - /* page index increment (SEGA mapper only) */ - if ((slot.fcr[0] & 0x03) && (slot.mapper == MAPPER_SEGA)) - { - page = (page + ((4 - (slot.fcr[0] & 0x03)) << 3)) % slot.pages; - } - - /* save frame control register data */ - slot.fcr[offset] = data; - - switch (offset) - { - case 0: /* control register (SEGA mapper only) */ - { - if (data & 0x08) - { - /* external RAM (upper or lower 16KB) mapped at $8000-$BFFF */ - for (i = 0x20; i < 0x30; i++) - { - z80_readmap[i] = z80_writemap[i] = &sram.sram[((data & 0x04) << 12) + ((i & 0x0F) << 10)]; - } - } - else - { - /* cartridge ROM page (16KB) */ - page = slot.fcr[3] % slot.pages; - - /* page index increment (SEGA mapper) */ - if ((data & 0x03) && (slot.mapper == MAPPER_SEGA)) - { - page = (page + ((4 - (data & 0x03)) << 3)) % slot.pages; - } - - /* cartridge ROM mapped at $8000-$BFFF */ - for (i = 0x20; i < 0x30; i++) - { - z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; - z80_writemap[i] = cart.rom + 0x510000; /* unused area */ - } - } - - if (data & 0x10) - { - /* external RAM (lower 16KB) mapped at $C000-$FFFF */ - for (i = 0x30; i < 0x40; i++) - { - z80_readmap[i] = z80_writemap[i] = &sram.sram[(i & 0x0F) << 10]; - } - } - else - { - /* internal RAM (8KB mirrored) mapped at $C000-$FFFF */ - for (i = 0x30; i < 0x40; i++) - { - z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x07) << 10]; - } - } - break; - } - - case 1: /* cartridge ROM bank (16KB) at $0000-$3FFF */ - { - /* first 1KB is not fixed (CODEMASTER or MULTI mappers only) */ - if ((slot.mapper == MAPPER_CODIES) || (slot.mapper == MAPPER_MULTI_16K)) - { - z80_readmap[0] = &slot.rom[(page << 14)]; - } - - for (i = 0x01; i < 0x10; i++) - { - z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; - } - break; - } - - case 2: /* cartridge ROM bank (16KB) at $4000-$7FFF */ - { - for (i = 0x10; i < 0x20; i++) - { - z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; - } - - /* cartridge RAM switch (CODEMASTER mapper only, see Ernie Elf's Golf) */ - if (slot.mapper == MAPPER_CODIES) - { - if (data & 0x80) - { - /* external RAM (8KB) mapped at $A000-$BFFF */ - for (i = 0x28; i < 0x30; i++) - { - z80_readmap[i] = z80_writemap[i] = &sram.sram[(i & 0x0F) << 10]; - } - } - else - { - /* cartridge ROM page (16KB) */ - page = slot.fcr[3] % slot.pages; - - /* cartridge ROM mapped at $A000-$BFFF */ - for (i = 0x28; i < 0x30; i++) - { - z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; - z80_writemap[i] = cart.rom + 0x510000; /* unused area */ - } - } - } - break; - } - - case 3: /* cartridge ROM bank (16KB) at $8000-$BFFF */ - { - /* check that external RAM (16KB) is not mapped at $8000-$BFFF (SEGA mapper only) */ - if ((slot.fcr[0] & 0x08)) break; - - /* first 8KB */ - for (i = 0x20; i < 0x28; i++) - { - z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; - } - - /* check that cartridge RAM (8KB) is not mapped at $A000-$BFFF (CODEMASTER mapper only) */ - if ((slot.mapper == MAPPER_CODIES) && (slot.fcr[2] & 0x80)) break; - - /* last 8KB */ - for (i = 0x28; i < 0x30; i++) - { - z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; - } - break; - } - } - -#ifdef CHEATS_UPDATE - /* update ROM patches when banking has changed */ - CHEATS_UPDATE(); -#endif -} - -static void mapper_32k_w(unsigned char data) -{ - int i; - - /* cartridge ROM page (32KB) */ - uint8 *page = &slot.rom[(data % slot.pages) << 15]; - - /* Save frame control register data */ - slot.fcr[0] = data; - - /* selected page (32KB) is mapped at $0000-$7FFF */ - for (i = 0x00; i < 0x20; i++) - { - z80_readmap[i] = &page[i << 10]; - } - - /* first 16KB is mirrored at $8000-$BFFF */ - for (i = 0x20; i < 0x30; i++) - { - z80_readmap[i] = z80_readmap[i & 0x0F]; - } - -#ifdef CHEATS_UPDATE - /* update ROM patches when banking has changed */ - CHEATS_UPDATE(); -#endif -} - -static void write_mapper_none(unsigned int address, unsigned char data) -{ - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_sega(unsigned int address, unsigned char data) -{ - if (address >= 0xFFFC) - { - mapper_16k_w(address & 3, data); - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_codies(unsigned int address, unsigned char data) -{ - if (address == 0x0000) - { - mapper_16k_w(1,data); - return; - } - - if (address == 0x4000) - { - mapper_16k_w(2,data); - return; - } - - if (address == 0x8000) - { - mapper_16k_w(3,data); - return; - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_multi_16k(unsigned int address, unsigned char data) -{ - if (address == 0x3FFE) - { - mapper_16k_w(1,data); - return; - } - - if (address == 0x7FFF) - { - mapper_16k_w(2,data); - return; - } - - if (address == 0xBFFF) - { - mapper_16k_w(3,(slot.fcr[1] & 0x30) + data); - return; - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_multi_32k(unsigned int address, unsigned char data) -{ - if (address == 0xFFFF) - { - mapper_32k_w(data); - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_korea(unsigned int address, unsigned char data) -{ - if (address == 0xA000) - { - mapper_16k_w(3,data); - return; - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_msx(unsigned int address, unsigned char data) -{ - if (address <= 0x0003) - { - mapper_8k_w(address,data); - return; - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_korea_8k(unsigned int address, unsigned char data) -{ - if (address == 0x4000) - { - mapper_8k_w(2,data); - return; - } - - if (address == 0x6000) - { - mapper_8k_w(3,data); - return; - } - - if (address == 0x8000) - { - mapper_8k_w(0,data); - return; - } - - if (address == 0xA000) - { - mapper_8k_w(1,data); - return; - } - - if (address == 0xFFFE) - { - mapper_8k_w(2,(data << 1) & 0xFF); - mapper_8k_w(3,(1 + (data << 1)) & 0xFF); - } - else if (address == 0xFFFF) - { - mapper_8k_w(0,(data << 1) & 0xFF); - mapper_8k_w(1,(1 + (data << 1)) & 0xFF); - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_korea_16k(unsigned int address, unsigned char data) -{ - if (address == 0x4000) - { - mapper_16k_w(2,data); - return; - } - - if (address == 0x8000) - { - mapper_16k_w(3,data); - return; - } - - /* SEGA mapper compatibility */ - if (address >= 0xFFFC) - { - mapper_16k_w(address & 3, data); - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_93c46(unsigned int address, unsigned char data) -{ - /* EEPROM serial input */ - if ((address == 0x8000) && eeprom_93c.enabled) - { - eeprom_93c_write(data); - return; - } - - /* EEPROM ctrl */ - if (address == 0xFFFC) - { - /* enable/disable EEPROM */ - eeprom_93c.enabled = data & 0x08; - - if (data & 0x80) - { - /* reset EEPROM */ - eeprom_93c_init(); - } - } - - /* SEGA mapper compatibility */ - if (address > 0xFFFC) - { - mapper_16k_w(address & 3, data); - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static void write_mapper_terebi(unsigned int address, unsigned char data) -{ - if (address == 0x6000) - { - terebi_oekaki_write(data); - return; - } - - z80_writemap[address >> 10][address & 0x03FF] = data; -} - -static unsigned char read_mapper_93c46(unsigned int address) -{ - if ((address == 0x8000) && eeprom_93c.enabled) - { - return eeprom_93c_read(); - } - - return z80_readmap[address >> 10][address & 0x03FF]; -} - -static unsigned char read_mapper_terebi(unsigned int address) -{ - if (address == 0x8000) - { - return (terebi_oekaki_read() >> 8); - } - - if (address == 0xA000) - { - return (terebi_oekaki_read() & 0xFF); - } - - return z80_readmap[address >> 10][address & 0x03FF]; -} - -static unsigned char read_mapper_korea_8k(unsigned int address) -{ - unsigned char data = z80_readmap[address >> 10][address & 0x03FF]; - - /* 16KB page */ - unsigned char page = address >> 14; - - /* $4000-$7FFF and $8000-$BFFF area are protected */ - if (((page == 1) && (slot.fcr[2] & 0x80)) || ((page == 2) && (slot.fcr[0] & 0x80))) - { - /* bit-swapped value */ - data = (((data >> 7) & 0x01) | ((data >> 5) & 0x02) | - ((data >> 3) & 0x04) | ((data >> 1) & 0x08) | - ((data << 1) & 0x10) | ((data << 3) & 0x20) | - ((data << 5) & 0x40) | ((data << 7) & 0x80)); - } - - return data; -} - -static unsigned char read_mapper_default(unsigned int address) -{ - return z80_readmap[address >> 10][address & 0x03FF]; -} +/**************************************************************************** + * Genesis Plus + * SG-1000, Master System & Game Gear cartridge hardware support + * + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "eeprom_93c.h" +#include "terebi_oekaki.h" + +#define MAPPER_NONE (0x00) +#define MAPPER_TEREBI (0x01) +#define MAPPER_RAM_2K (0x02) +#define MAPPER_RAM_8K (0x03) +#define MAPPER_RAM_8K_EXT1 (0x04) +#define MAPPER_RAM_8K_EXT2 (0x05) +#define MAPPER_SEGA (0x10) +#define MAPPER_SEGA_X (0x11) +#define MAPPER_93C46 (0x12) +#define MAPPER_CODIES (0x13) +#define MAPPER_MULTI_16K (0x14) +#define MAPPER_KOREA (0x15) +#define MAPPER_KOREA_16K (0x16) +#define MAPPER_KOREA_8K (0x20) +#define MAPPER_MSX (0x21) +#define MAPPER_MSX_NEMESIS (0x22) +#define MAPPER_MULTI_32K (0x40) + +typedef struct +{ + uint32 crc; + uint8 g_3d; + uint8 fm; + uint8 peripheral; + uint8 mapper; + uint8 system; + uint8 region; +} rominfo_t; + +typedef struct +{ + uint8 fcr[4]; + uint8 mapper; + uint16 pages; +} romhw_t; + +static const rominfo_t game_list[] = +{ + /* program requiring Mega Drive VDP (Mode 5) */ + {0x47FA618D, 0, 1, 0, MAPPER_SEGA, SYSTEM_PBC, REGION_USA}, /* Charles MacDonald's Mode 5 Demo Program */ + + /* game requiring SEGA mapper */ + {0xFF67359B, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* DataStorm (homebrew) */ + + /* games requiring 315-5124 VDP (Mark-III, Master System I) */ + {0x32759751, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) */ + {0xE8B82066, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) [Demo] */ + + /* games requiring Sega 315-5235 mapper without bank shifting */ + {0x23BAC434, 0, 0, 0, MAPPER_SEGA_X, SYSTEM_GG, REGION_USA}, /* Shining Force Gaiden - Final Conflict (JP) [T-Eng] */ + + /* games using "Korean" mappers */ + {0x445525E2, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Penguin Adventure (KR) */ + {0x83F0EEDE, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Street Master (KR) */ + {0xA05258F5, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Won-Si-In (KR) */ + {0x06965ED9, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* F-1 Spirit - The way to Formula-1 (KR) */ + {0x77EFE84A, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Cyborg Z (KR) */ + {0xF89AF3CC, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Knightmare II - The Maze of Galious (KR) */ + {0x9195C34C, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Boy 3 (KR) */ + {0xE316C06D, 0, 0, 0, MAPPER_MSX_NEMESIS, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis (KR) */ + {0x0A77FA5E, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis 2 (KR) */ + {0x89B79E77, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Dodgeball King (KR) */ + {0x929222C4, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung II (KR) */ + {0x18FB98A3, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung 3 (KR) */ + {0x97D03541, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sangokushi 3 (KR) */ + {0x192949D5, 0, 0, 0, MAPPER_KOREA_8K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Janggun-ui Adeul (KR) */ + {0x76C5BDFB, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Jang Pung II [SMS-GG] (KR) */ + {0x9FA727A0, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 0] [SMS-GG] (US) */ + {0xFB481971, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 1] [SMS-GG] (US) */ + {0xA67F2A5C, 0, 0, 0, MAPPER_MULTI_16K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* 4-Pak All Action (KR) */ + {0x98AF0236, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 1) (KR) */ + {0x6EBFE1C3, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 2) (KR) */ + {0x81A36A4F, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 3) (KR) */ + {0x8D2D695D, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 4) (KR) */ + {0x82C09B57, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 5) (KR) */ + {0x4088EEB4, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 6) (KR) */ + {0xFBA94148, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 1) (KR) */ + {0x8333C86E, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 2) (KR) */ + {0x00E9809F, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 3) (KR) */ + + /* games using Codemaster mapper */ + {0x29822980, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Cosmic Spacehead */ + {0x8813514B, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Excellent Dizzy Collection, The [Proto] */ + {0xB9664AE1, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Fantastic Dizzy */ + {0xA577CE46, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Micro Machines */ + {0xEA5C3A6F, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_USA}, /* Dinobasher - Starring Bignose the Caveman [Proto] */ + {0xAA140C9C, 0, 0, 0, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Excellent Dizzy Collection, The [SMS-GG] */ + {0xC888222B, 0, 0, 0, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Fantastic Dizzy [SMS-GG] */ + {0x6CAA625B, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Cosmic Spacehead [GG]*/ + {0x152F0DCC, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Drop Zone */ + {0x5E53C7F7, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Ernie Els Golf */ + {0xD9A7F170, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Man Overboard! */ + {0xF7C524F6, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines [GG] */ + {0xC21E6CD0, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines [GG] [Proto] */ + {0xDBE8895C, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines 2 - Turbo Tournament */ + {0xC1756BEE, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Pete Sampras Tennis */ + {0x72981057, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* CJ Elephant Fugitive */ + {0x3ACE6335, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* CJ Elephant Fugitive [Proto] */ + {0x2306AAF4, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Dinobasher - Starring Bignose the Caveman [GG] [Proto] */ + + /* games using serial EEPROM */ + {0x36EBCD6D, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* Majors Pro Baseball */ + {0x3D8D0DD6, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v0] */ + {0xBB38CFD7, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v1] */ + {0x578A8A38, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball '95 */ + + /* games using Terebi Oekaki graphic board */ + {0xDD4A661B, 0, 0, 0, MAPPER_TEREBI, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Terebi Oekaki */ + + /* games using 2KB external RAM (volatile) */ + {0xAF4F14BC, 0, 0, 0, MAPPER_RAM_2K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Othello (J) */ + {0x1D1A0CA3, 0, 0, 0, MAPPER_RAM_2K, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello (TW) */ + + /* games using 8KB external RAM (volatile) */ + {0x092F29D6, 0, 0, 0, MAPPER_RAM_8K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* The Castle (J) */ + + /* games requiring SG-1000 II 8K RAM extension adapters */ + {0xCE5648C3, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special [DahJee] (TW) */ + {0x223397A1, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* King's Valley (TW) */ + {0x281D2888, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Knightmare (TW) */ + {0x306D5F78, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X [DahJee] (TW) */ + {0x29E047CC, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */ + {0x5CBD1163, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Tank Battalion (TW) */ + {0x2E7166D5, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Legend of Kage (TW) */ + {0xC550B4F0, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* TwinBee (TW) */ + {0xFC87463C, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Yie Ar Kung-Fu II (TW) */ + {0xDF7CBFA5, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Pippols (TW) */ + {0xE0816BB7, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Star Soldier (TW) */ + {0x69FC1494, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special (TW) */ + {0xFFC4EE3F, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Magical Kid Wiz (TW) */ + {0x2E366CCF, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Castle (TW) */ + {0xAAAC12CF, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X (TW) */ + {0xD2EDD329, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */ + + /* games requiring 2KB internal RAM (SG-1000 II clone hardware) */ + {0x7F7F009D, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Circus Charlie (KR) */ + {0x77DB4704, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Q*Bert */ + {0xC5A67B95, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello Multivision BIOS */ + + /* games requiring Japanese region setting */ + {0x71DEBA5A, 0, 0, 0, MAPPER_SEGA, SYSTEM_GG, REGION_JAPAN_NTSC}, /* Pop Breaker */ + {0xC9DD4E5F, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop (Super Arkanoid) */ + + /* games requiring Japanese Master System I/O chip (315-5297) */ + {0xBD1CC7DF, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Tetris (KR) */ + {0x6D309AC5, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Power Boggle Boggle (KR) */ + + /* games requiring random RAM pattern initialization */ + {0x08BF3DE3, 0, 0, 0, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Alibaba and 40 Thieves (KR) */ + {0x643B6B76, 0, 0, 0, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Block Hole (KR) */ + + /* games requiring PAL timings */ + {0x72420F38, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Addams Familly */ + {0x2D48C1D3, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Back to the Future Part III */ + {0x1CBB7BF1, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Battlemaniacs (BR) */ + {0x1B10A951, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Bram Stoker's Dracula */ + {0xC0E25D62, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* California Games II */ + {0x45C50294, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Jogos de Verao II (BR) */ + {0xC9DBF936, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Home Alone */ + {0x0047B615, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Predator2 */ + {0xF42E145C, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Quest for the Shaven Yak Starring Ren Hoek & Stimpy (BR) */ + {0x9F951756, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* RoboCop 3 */ + {0xF8176918, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sensible Soccer */ + {0x1575581D, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Shadow of the Beast */ + {0x96B3F29E, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic Blast (BR) */ + {0x5B3B922C, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V0] */ + {0xD6F2BFCA, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V1] */ + {0xCA1D3752, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Space Harrier [50 Hz] */ + {0x85CFC9C9, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Taito Chase H.Q. */ + {0x332A847D, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* NBA Jam [Proto] */ + + /* games running in Game Gear MS compatibility mode */ + {0x59840FD6, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Castle of Illusion - Starring Mickey Mouse [SMS-GG] */ + {0x9C76FB3A, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Rastan Saga [SMS-GG] */ + {0xC8381DEF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Taito Chase H.Q [SMS-GG] */ + {0xDA8E95A9, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* WWF Wrestlemania Steel Cage Challenge [SMS-GG] */ + {0x1D93246E, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [A][SMS-GG] */ + {0xA2F9C7AF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [B][SMS-GG] */ + {0x01EAB89D, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa [SMS-GG] */ + {0xF037EC00, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa (US) [SMS-GG] */ + {0xE5F789B9, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Predator 2 [SMS-GG] */ + {0x311D2863, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [A][SMS-GG] */ + {0x45F058D6, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [B][SMS-GG] */ + {0x56201996, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* R.C. Grand Prix [SMS-GG] */ + {0x10DBBEF4, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Super Kick Off [SMS-GG] */ + {0x9942B69B, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Castle of Illusion - Starring Mickey Mouse (J) [SMS-GG] */ + {0x7BB81E3D, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Taito Chase H.Q (J) [SMS-GG] */ + {0x6F8E46CF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Alex Kidd in Miracle World (TW) [SMS-GG] */ + {0x3382D73F, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Olympic Gold (TW) [SMS-GG] */ + + /* games requiring 3-D Glasses */ + {0x6BD5C2BF, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Space Harrier 3-D */ + {0x8ECD201C, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D */ + {0xFBF96C81, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D (BR) */ + {0x58D5FC48, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D [Proto] */ + {0x31B8040B, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Maze Hunter 3-D */ + {0xABD48AD2, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Poseidon Wars 3-D */ + {0xA3EF13CB, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zaxxon 3-D */ + {0xBBA74147, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zaxxon 3-D [Proto] */ + {0xD6F43DDA, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run 3-D */ + {0x4E684EC0, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run 3-D [Proto] */ + {0x871562b0, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maze Walker */ + {0x156948f9, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Space Harrier 3-D (J) */ + + /* games requiring 3-D Glasses & Sega Light Phaser */ + {0xFBE5CFBB, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D */ + {0xE79BB689, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D [BIOS] */ + {0x43DEF05D, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D [Proto] */ + {0x56DCB2D4, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* 3D Gunner [Proto] */ + + /* games requiring Sega Light Phaser */ + {0x861B6E79, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Assault City [Light Phaser] */ + {0x5FC74D2A, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Gangster Town */ + {0xE167A561, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Hang-On / Safari Hunt */ + {0x91E93385, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Hang-On / Safari Hunt [BIOS] */ + {0xE8EA842C, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Marksman Shooting / Trap Shooting */ + {0xE8215C2E, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Marksman Shooting / Trap Shooting / Safari Hunt */ + {0x205CAAE8, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Operation Wolf */ + {0x23283F37, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Operation Wolf [A] */ + {0xDA5A7013, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rambo 3 */ + {0x79AC8E7F, 0, 1, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rescue Mission */ + {0x4B051022, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shooting Gallery */ + {0xA908CFF5, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Spacegun */ + {0x5359762D, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wanted */ + {0x0CA95637, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Laser Ghost */ + + /* games requiring Sega Paddle */ + {0xF9DBB533, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alex Kidd BMX Trial */ + {0xA6FA42D0, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Galactic Protector */ + {0x29BC7FAD, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Megumi Rescue */ + {0x315917D4, 0, 0, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop */ + + /* games requiring Sega Sport Pad */ + {0x41C948BF, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sports Pad Soccer */ + {0x0CB7E21F, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Great Ice Hockey */ + {0xE42E4998, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Sports Pad Football */ + + /* games requiring Furrtek's Master Tap */ + {0xFAB6F52F, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.0) */ + {0x143AB50B, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.1) */ + + /* games requiring Sega Graphic Board */ + {0x276AA542, 0, 0, SYSTEM_GRAPHIC_BOARD, MAPPER_NONE, SYSTEM_SMS, REGION_USA}, /* Sega Graphic Board v2.0 Software (Prototype) */ + + /* games supporting YM2413 FM */ + {0x1C951F8E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* After Burner */ + {0xC13896D5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Alex Kidd: The Lost Stars */ + {0x5CBFE997, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Alien Syndrome */ + {0xBBA2FE98, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Altered Beast */ + {0xFF614EB3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Aztec Adventure */ + {0x3084CF11, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Bomber Raid */ + {0xAC6009A7, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* California Games */ + {0xA4852757, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Captain Silver */ + {0xB81F6FA5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Captain Silver (U) */ + {0x3CFF6E80, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Casino Games */ + {0xE7F62E6D, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Cloud Master */ + {0x908E7524, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Cyborg Hunter */ + {0xA55D89F3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Double Dragon */ + {0xB8B141F9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Fantasy Zone II */ + {0xD29889AD, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Fantasy Zone: The Maze */ + {0xA4AC35D8, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Galaxy Force */ + {0x6C827520, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Galaxy Force (U) */ + {0x1890F407, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Game Box Srie Esportes Radicais (BR) */ + {0xB746A6F5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Global Defense */ + {0x91A0FC4E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Global Defense [Proto] */ + {0x48651325, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golfamania */ + {0x5DABFDC3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golfamania [Proto] */ + {0xA51376FE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golvellius - Valley of Doom */ + {0x98E4AE4A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Great Golf */ + {0x516ED32E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Kenseiden */ + {0xE8511B08, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Lord of The Sword */ + {0x0E333B6E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord */ + {0x301A59AA, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord [Proto] */ + {0x01D67C0B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Mnica no Castelo do Drago (BR) */ + {0x5589D8D2, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run */ + {0xE030E66C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Parlour Games */ + {0xF97E9875, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Penguin Land */ + {0x4077EFD9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Power Strike */ + {0xBB54B6B0, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* R-Type */ + {0x42FC47EE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rampage */ + {0xC547EB1B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rastan */ + {0x9A8B28EC, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Scramble Spirits */ + {0xAAB67EC3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shanghai */ + {0x0C6FAC4E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shinobi */ + {0x4752CAE7, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* SpellCaster */ + {0x1A390B93, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Tennis Ace */ + {0xAE920E4B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Thunder Blade */ + {0x51BD14BE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Time Soldiers */ + {0x22CCA9BB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Turma da Mnica em: O Resgate (BR) */ + {0xB52D60C8, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Ultima IV */ + {0xDE9F8517, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Ultima IV [Proto] */ + {0xDFB0B161, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Vigilante */ + {0x679E1676, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wonder Boy III: The Dragon's Trap */ + {0x8CBEF0C1, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wonder Boy in Monster Land */ + {0x2F2E3BC9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zillion II - The Tri Formation */ + {0x48D44A13, 0, 1, 0, MAPPER_NONE, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* BIOS (J) */ + {0xD8C4165B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Aleste */ + {0x4CC11DF9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alien Syndrome (J) */ + {0xE421E466, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Chouon Senshi Borgman */ + {0x2BCDB8FA, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken */ + {0x56BD2455, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken [Proto] */ + {0xC722FB42, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Fantasy Zone II (J) */ + {0x7ABC70E9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Family Games (Party Games) */ + {0x9AFAB511, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Game De Check! Koutsuu Anzen [Proto] (JP) */ + {0x9E9DEB18, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Game De Check! Koutsuu Anzen [Proto] (JP) [T-Eng] */ + {0x6586BD1F, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf */ + {0x4847BC91, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf [Proto] */ + {0xB9FDF6D9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Haja no Fuuin */ + {0x955A009E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hoshi wo Sagashite */ + {0x05EA5353, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kenseiden (J) */ + {0xD11D32E4, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kujakuou */ + {0xAA7D6F45, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Lord of Sword */ + {0xBF0411AD, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius */ + {0x21A21352, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius [Proto] */ + {0x5B5F9106, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nekyuu Kousien */ + {0xBEA27D5C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Opa Opa */ + {0x6605D36A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) */ + {0x70E89681, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) [T-Eng v1.02] */ + {0xA04CF71A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) [T-Eng v2.00] */ + {0xE1FFF1BB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Shinobi (J) */ + {0x11645549, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Solomon no Kagi - Oujo Rihita no Namida */ + {0x7E0EF8CB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Racing */ + {0xB1DA6A30, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Wonder Boy Monster World */ + {0x8132AB2C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Tensai Bakabon */ + {0xC0CE19B1, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Thunder Blade (J) */ + {0x07301F83, 0, 1, 0, MAPPER_SEGA, SYSTEM_PBC, REGION_JAPAN_NTSC} /* Phantasy Star [Megadrive] (J) */ +}; + +/* Cartridge & BIOS ROM hardware */ +static romhw_t cart_rom; +static romhw_t bios_rom; + +/* Current slot */ +static struct +{ + uint8 *rom; + uint8 *fcr; + uint8 mapper; + uint16 pages; +} slot; + +/* Function prototypes */ +static void mapper_reset(void); +static void mapper_8k_w(int offset, unsigned char data); +static void mapper_16k_w(int offset, unsigned char data); +static void mapper_32k_w(unsigned char data); +static void write_mapper_none(unsigned int address, unsigned char data); +static void write_mapper_sega(unsigned int address, unsigned char data); +static void write_mapper_codies(unsigned int address, unsigned char data); +static void write_mapper_korea(unsigned int address, unsigned char data); +static void write_mapper_korea_8k(unsigned int address, unsigned char data); +static void write_mapper_korea_16k(unsigned int address, unsigned char data); +static void write_mapper_msx(unsigned int address, unsigned char data); +static void write_mapper_multi_16k(unsigned int address, unsigned char data); +static void write_mapper_multi_32k(unsigned int address, unsigned char data); +static void write_mapper_93c46(unsigned int address, unsigned char data); +static void write_mapper_terebi(unsigned int address, unsigned char data); +static unsigned char read_mapper_93c46(unsigned int address); +static unsigned char read_mapper_terebi(unsigned int address); +static unsigned char read_mapper_korea_8k(unsigned int address); +static unsigned char read_mapper_default(unsigned int address); + +void sms_cart_init(void) +{ + int i = sizeof(game_list) / sizeof(rominfo_t) - 1; + + /* game CRC */ + uint32 crc = crc32(0, cart.rom, cart.romsize); + + /* unmapped memory return $FF on read (mapped to unused cartridge areas $510000-$5103FF & $510400-$5107FF) */ + memset(cart.rom + 0x510000, 0xFF, 0x800); + + /* default cartridge ROM mapper */ + cart_rom.mapper = (cart.romsize > 0xC000) ? MAPPER_SEGA : MAPPER_NONE; + + /* disable 3-D Glasses by default */ + cart.special = 0; + + /* YM2413 chip in AUTO mode */ + if (config.ym2413 & 2) + { + if ((system_hw & SYSTEM_SMS) && (region_code == REGION_JAPAN_NTSC)) + { + /* japanese Master System has built-in FM chip */ + config.ym2413 = 3; + } + else + { + /* by default, FM chip is disabled */ + config.ym2413 = 2; + } + } + + /* auto-detect game settings */ + do + { + if (crc == game_list[i].crc) + { + /* auto-detect cartridge mapper */ + cart_rom.mapper = game_list[i].mapper; + + /* auto-detect required peripherals */ + if (game_list[i].peripheral) + { + /* save current input settings */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + + input.system[0] = game_list[i].peripheral; + } + + /* auto-detect 3D glasses support */ + cart.special = game_list[i].g_3d; + + /* auto-detect system hardware */ + if (!config.system || ((config.system == SYSTEM_GG) && (game_list[i].system == SYSTEM_GGMS))) + { + system_hw = game_list[i].system; + } + + /* auto-detect YM2413 chip support in AUTO mode */ + if (config.ym2413 & 2) + { + config.ym2413 |= game_list[i].fm; + } + + /* game found, leave loop */ + break; + } + } + while (i--); + + /* ROM paging */ + if (cart_rom.mapper < MAPPER_SEGA) + { + /* 1KB ROM banks */ + cart_rom.pages = (cart.romsize + (1 << 10) - 1) >> 10; + } + else if (cart_rom.mapper & MAPPER_KOREA_8K) + { + /* 8KB ROM banks */ + cart_rom.pages = (cart.romsize + (1 << 13) - 1) >> 13; + } + else if (cart_rom.mapper & MAPPER_MULTI_32K) + { + /* 32KB ROM banks */ + cart_rom.pages = (cart.romsize + (1 << 15) - 1) >> 15; + } + else + { + /* 16KB ROM banks */ + cart_rom.pages = (cart.romsize + (1 << 14) - 1) >> 14; + } + + /* initialize extra hardware */ + if (cart_rom.mapper == MAPPER_93C46) + { + /* 93C46 eeprom */ + eeprom_93c_init(); + } + else if (cart_rom.mapper == MAPPER_TEREBI) + { + /* Terebi Oekaki tablet */ + cart.special |= HW_TEREBI_OEKAKI; + } + + /* initialize SRAM */ + sram_init(); + + /* enable cartridge backup memory by default */ + sram.on = 1; + + /* default gun offset for Light Phaser */ + input.x_offset = 20; + input.y_offset = 0; + + /* SpaceGun & Gangster Town use specific gun offset */ + if ((crc == 0x5359762D) || (crc == 0x5FC74D2A)) + { + input.x_offset = 16; + } + + /* BIOS support */ + if (config.bios & 1) + { + /* load BIOS file */ + int bios_size = load_bios(system_hw); + + if (bios_size > 0xC000) + { + /* assume SEGA mapper if BIOS ROM is larger than 48KB */ + bios_rom.mapper = MAPPER_SEGA; + bios_rom.pages = bios_size >> 14; + } + else if (bios_size >= 0) + { + /* default BIOS ROM mapper */ + bios_rom.mapper = MAPPER_NONE; + bios_rom.pages = bios_size >> 10; + } + + /* unload cartridge if required & BIOS ROM is loaded */ + if (!(config.bios & 2) && bios_rom.pages) + { + cart_rom.pages = 0; + } + } + else + { + /* mark Master System & Game Gear BIOS as unloaded */ + system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); + + /* BIOS ROM is disabled */ + bios_rom.pages = 0; + } +} + +void sms_cart_reset(void) +{ + /* reset BIOS ROM paging (SEGA mapper by default) */ + bios_rom.fcr[0] = 0; + bios_rom.fcr[1] = 0; + bios_rom.fcr[2] = 1; + bios_rom.fcr[3] = 2; + + /* reset cartridge ROM paging */ + switch (cart_rom.mapper) + { + case MAPPER_SEGA: + case MAPPER_SEGA_X: + cart_rom.fcr[0] = 0; + cart_rom.fcr[1] = 0; + cart_rom.fcr[2] = 1; + cart_rom.fcr[3] = 2; + break; + + case MAPPER_KOREA_8K: + case MAPPER_MSX: + case MAPPER_MSX_NEMESIS: + cart_rom.fcr[0] = 0; + cart_rom.fcr[1] = 0; + cart_rom.fcr[2] = 0; + cart_rom.fcr[3] = 0; + break; + + default: + cart_rom.fcr[0] = 0; + cart_rom.fcr[1] = 0; + cart_rom.fcr[2] = 1; + cart_rom.fcr[3] = 0; + break; + } + + /* check if BIOS is larger than 1KB */ + if (bios_rom.pages > 1) + { + /* enable BIOS ROM */ + slot.rom = cart.rom + 0x400000; + slot.fcr = bios_rom.fcr; + slot.mapper = bios_rom.mapper; + slot.pages = bios_rom.pages; + } + else + { + /* enable cartridge ROM */ + slot.rom = cart.rom; + slot.fcr = cart_rom.fcr; + slot.mapper = cart_rom.mapper; + slot.pages = cart_rom.pages; + + /* force Memory Control register value in RAM (usually set by Master System BIOS) */ + if (system_hw & SYSTEM_SMS) + { + work_ram[0] = 0xA8; + } + } + + /* reset Z80 memory map */ + mapper_reset(); + + /* 1KB BIOS special case (Majesco GG) */ + if (bios_rom.pages == 1) + { + /* BIOS ROM is mapped to $0000-$03FF */ + z80_readmap[0] = cart.rom + 0x400000; + } +} + +void sms_cart_switch(uint8 mode) +{ + /* by default, disable cartridge & BIOS ROM */ + slot.pages = 0; + + /* cartridge ROM enabled ? */ + if (mode & 0x40) + { + /* check if cartridge is loaded */ + if (cart_rom.pages) + { + /* map cartridge ROM */ + slot.rom = cart.rom; + slot.fcr = cart_rom.fcr; + slot.mapper = cart_rom.mapper; + slot.pages = cart_rom.pages; + } + } + else + { + /* BIOS ROM enabled ? */ + if (mode & 0x08) + { + /* check if BIOS ROM is larger than 1KB */ + if (bios_rom.pages > 1) + { + /* map BIOS ROM */ + slot.rom = cart.rom + 0x400000; + slot.fcr = bios_rom.fcr; + slot.mapper = bios_rom.mapper; + slot.pages = bios_rom.pages; + } + else + { + /* by default, map cartridge ROM */ + slot.rom = cart.rom; + slot.fcr = cart_rom.fcr; + slot.mapper = cart_rom.mapper; + slot.pages = cart_rom.pages; + } + } + + /* assume only BIOS would disable cartridge slot */ + if (!bios_rom.pages) + { + /* max. BIOS ROM size supported is 1MB */ + if (cart.romsize <= 0x100000) + { + /* copy to BIOS ROM */ + memcpy(cart.rom + 0x400000, cart.rom, cart.romsize); + memcpy(bios_rom.fcr, cart_rom.fcr, 4); + bios_rom.mapper = cart_rom.mapper; + bios_rom.pages = cart_rom.pages; + + /* unload cartridge */ + cart_rom.pages = 0; + } + } + } + + /* reset Z80 memory map */ + mapper_reset(); + + /* 1KB BIOS special case (Majesco GG) */ + if ((bios_rom.pages == 1) && ((mode & 0x48) == 0x08)) + { + /* BIOS ROM is mapped to $0000-$03FF */ + z80_readmap[0] = cart.rom + 0x400000; + } +} + +int sms_cart_region_detect(void) +{ + int i = sizeof(game_list) / sizeof(rominfo_t) - 1; + + /* compute CRC */ + uint32 crc = crc32(0, cart.rom, cart.romsize); + + /* Turma da Mnica em: O Resgate & Wonder Boy III enable FM support on japanese hardware only */ + if (config.ym2413 && ((crc == 0x22CCA9BB) || (crc == 0x679E1676))) + { + return REGION_JAPAN_NTSC; + } + + /* game database */ + do + { + if (crc == game_list[i].crc) + { + return game_list[i].region; + } + } + while(i--); + + /* Mark-III hardware */ + if (config.system == SYSTEM_MARKIII) + { + /* Japan only */ + region_code = REGION_JAPAN_NTSC; + } + + /* Master System / Game Gear ROM file */ + if (system_hw >= SYSTEM_SMS) + { + /* missing header or valid header with Japan region code */ + if (!rominfo.country[0] || !memcmp(rominfo.country,"SMS Japan",9) || !memcmp(rominfo.country,"GG Japan",8)) + { + /* assume Japan region (fixes BIOS support) */ + return REGION_JAPAN_NTSC; + } + } + + /* default region */ + return REGION_USA; +} + +int sms_cart_context_save(uint8 *state) +{ + int bufferptr = 0; + + /* check if cartridge ROM is disabled */ + if (io_reg[0x0E] & 0x40) + { + /* save Boot ROM mapper settings */ + save_param(bios_rom.fcr, 4); + } + else + { + /* save cartridge mapper settings */ + save_param(cart_rom.fcr, 4); + } + + /* support for SG-1000 games with extra RAM */ + if ((cart_rom.mapper == MAPPER_RAM_8K) || (cart_rom.mapper == MAPPER_RAM_8K_EXT1)) + { + /* 8KB extra RAM */ + save_param(work_ram + 0x2000, 0x2000); + } + else if (cart_rom.mapper == MAPPER_RAM_2K) + { + /* 2KB extra RAM */ + save_param(work_ram + 0x2000, 0x800); + } + + return bufferptr; +} + +int sms_cart_context_load(uint8 *state) +{ + int bufferptr = 0; + + /* check if cartridge ROM is disabled */ + if (io_reg[0x0E] & 0x40) + { + /* load Boot ROM mapper settings */ + load_param(bios_rom.fcr, 4); + + /* set default cartridge ROM paging */ + switch (cart_rom.mapper) + { + case MAPPER_SEGA: + case MAPPER_SEGA_X: + cart_rom.fcr[0] = 0; + cart_rom.fcr[1] = 0; + cart_rom.fcr[2] = 1; + cart_rom.fcr[3] = 2; + break; + + case MAPPER_KOREA_8K: + case MAPPER_MSX: + case MAPPER_MSX_NEMESIS: + cart_rom.fcr[0] = 0; + cart_rom.fcr[1] = 0; + cart_rom.fcr[2] = 0; + cart_rom.fcr[3] = 0; + break; + + default: + cart_rom.fcr[0] = 0; + cart_rom.fcr[1] = 0; + cart_rom.fcr[2] = 1; + cart_rom.fcr[3] = 0; + break; + } + } + else + { + /* load cartridge mapper settings */ + load_param(cart_rom.fcr, 4); + + /* set default BIOS ROM paging (SEGA mapper by default) */ + bios_rom.fcr[0] = 0; + bios_rom.fcr[1] = 0; + bios_rom.fcr[2] = 1; + bios_rom.fcr[3] = 2; + } + + /* support for SG-1000 games with extra RAM */ + if ((cart_rom.mapper == MAPPER_RAM_8K) || (cart_rom.mapper == MAPPER_RAM_8K_EXT1)) + { + /* 8KB extra RAM */ + load_param(work_ram + 0x2000, 0x2000); + } + else if (cart_rom.mapper == MAPPER_RAM_2K) + { + /* 2KB extra RAM */ + load_param(work_ram + 0x2000, 0x800); + } + + return bufferptr; +} + +static void mapper_reset(void) +{ + int i; + + /* reset $C000-$FFFF mapping */ + if (cart_rom.mapper == MAPPER_RAM_8K_EXT2) + { + /* 8KB RAM extension adapter (type B) */ + for (i = 0x30; i < 0x40; i++) + { + /* $C000-$FFFF mapped to 8KB external RAM (mirrored) */ + z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x07) << 10]; + } + } + else if (system_hw == SYSTEM_SGII) + { + /* SG-1000 II clone hardware with 2KB internal RAM */ + for (i = 0x30; i < 0x40; i++) + { + /* $C000-$FFFF mapped to 2KB internal RAM (mirrored) */ + z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x01) << 10]; + } + } + else if (system_hw == SYSTEM_SG) + { + /* default SG-1000 hardware has only 1KB internal RAM */ + for (i = 0x30; i < 0x40; i++) + { + /* $C000-$FFFF mapped to 1KB internal RAM (mirrored) */ + z80_readmap[i] = z80_writemap[i] = &work_ram[0]; + } + } + else + { + /* Mark III / Master System / Game Gear hardware */ + for (i = 0x30; i < 0x40; i++) + { + /* $C000-$FFFF mapped to 8KB internal RAM (mirrored) */ + z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x07) << 10]; + } + } + + /* check if ROM is disabled */ + if (!slot.pages) + { + /* $0000-$BFFF mapped to unused cartridge areas */ + for(i = 0x00; i < 0x30; i++) + { + z80_writemap[i] = cart.rom + 0x510000; + z80_readmap[i] = cart.rom + 0x510400; + } + + /* set default Z80 memory handlers */ + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_none; + return; + } + + /* reset cartridge hardware mapping */ + if (slot.mapper < MAPPER_SEGA) + { + /* $0000-$7FFF mapping */ + for (i = 0x00; i < 0x20; i++) + { + /* by default, $0000-$7FFF mapped to cartridge ROM lower KB (mirrored if less than 32KB) */ + z80_readmap[i] = &slot.rom[(i % slot.pages) << 10]; + z80_writemap[i] = cart.rom + 0x510000; /* unused area */ + } + + /* 8KB RAM extension adapter (type A) */ + if (slot.mapper == MAPPER_RAM_8K_EXT1) + { + for (i = 0x08; i < 0x10; i++) + { + /* $2000-$3FFF mapped to 8KB external RAM */ + z80_readmap[i] = z80_writemap[i] = &work_ram[0x2000 + ((i & 0x07) << 10)]; + } + } + + /* $8000-$BFFF mapping */ + if (slot.mapper == MAPPER_RAM_8K) + { + /* 8KB on-board RAM (The Castle) */ + for (i = 0x20; i < 0x30; i++) + { + /* $8000-$BFFF mapped to 8KB external RAM (mirrored) */ + z80_readmap[i] = z80_writemap[i] = &work_ram[0x2000 + ((i & 0x07) << 10)]; + } + } + else if (slot.mapper == MAPPER_RAM_2K) + { + /* 2KB on-board RAM (Othello) */ + for (i = 0x20; i < 0x30; i++) + { + /* $8000-$BFFF mapped to 2KB external RAM (mirrored) */ + z80_readmap[i] = z80_writemap[i] = &work_ram[0x2000 + ((i & 0x01) << 10)]; + } + } + else if (slot.pages <= 0x20) + { + /* cartridge ROM lower than 32KB */ + for (i = 0x20; i < 0x30; i++) + { + /* $8000-$BFFF mapped to unused area */ + z80_writemap[i] = cart.rom + 0x510000; + z80_readmap[i] = cart.rom + 0x510400; + } + } + else + { + /* cartridge ROM up to 48KB */ + for (i = 0x20; i < 0x30; i++) + { + /* $8000-$BFFF mapped to cartridge ROM upper KB (mirrored if less than 48KB) */ + z80_readmap[i] = &slot.rom[(0x20 + (i % (slot.pages - 0x20))) << 10]; + z80_writemap[i] = cart.rom + 0x510000; /* unused area */ + } + } + } + else + { + /* reset $0000-$BFFF mapping */ + for (i = 0x00; i < 0x30; i++) + { + /* by default, $0000-$BFFF is mapped to cartridge ROM lower 48KB */ + z80_readmap[i] = &slot.rom[i << 10]; + z80_writemap[i] = cart.rom + 0x510000; /* unused area */ + } + + /* reset ROM paging hardware */ + if (slot.mapper & MAPPER_KOREA_8K) + { + /* 8KB pages */ + mapper_8k_w(0,slot.fcr[0]); + mapper_8k_w(1,slot.fcr[1]); + mapper_8k_w(2,slot.fcr[2]); + mapper_8k_w(3,slot.fcr[3]); + + /* "Nemesis" mapper specific */ + if (slot.mapper == MAPPER_MSX_NEMESIS) + { + /* first 8KB page is mapped to last 8KB ROM bank */ + for (i = 0x00; i < 0x08; i++) + { + z80_readmap[i] = &slot.rom[(0x0f << 13) | ((i & 0x07) << 10)]; + } + } + } + else if (slot.mapper & MAPPER_MULTI_32K) + { + /* 32KB pages */ + mapper_32k_w(slot.fcr[0]); + } + else + { + /* 16KB pages */ + mapper_16k_w(0,slot.fcr[0]); + mapper_16k_w(1,slot.fcr[1]); + mapper_16k_w(2,slot.fcr[2]); + mapper_16k_w(3,slot.fcr[3]); + } + } + + /* reset Z80 memory handlers */ + switch (slot.mapper) + { + case MAPPER_SEGA: + case MAPPER_SEGA_X: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_sega; + break; + + case MAPPER_CODIES: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_codies; + break; + + case MAPPER_KOREA: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_korea; + break; + + case MAPPER_KOREA_8K: + z80_readmem = read_mapper_korea_8k; + z80_writemem = write_mapper_korea_8k; + break; + + case MAPPER_KOREA_16K: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_korea_16k; + break; + + case MAPPER_MSX: + case MAPPER_MSX_NEMESIS: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_msx; + break; + + case MAPPER_MULTI_16K: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_multi_16k; + break; + + case MAPPER_MULTI_32K: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_multi_32k; + break; + + case MAPPER_93C46: + z80_readmem = read_mapper_93c46; + z80_writemem = write_mapper_93c46; + break; + + case MAPPER_TEREBI: + z80_readmem = read_mapper_terebi; + z80_writemem = write_mapper_terebi; + break; + + default: + z80_readmem = read_mapper_default; + z80_writemem = write_mapper_none; + break; + } +} + +static void mapper_8k_w(int offset, unsigned char data) +{ + int i; + + /* cartridge ROM page (8KB) */ + uint8 *page = &slot.rom[(data % slot.pages) << 13]; + + /* Save frame control register data */ + slot.fcr[offset] = data; + + /* 4 x 8KB banks */ + switch (offset & 3) + { + case 0: /* cartridge ROM bank (8KB) at $8000-$9FFF */ + { + for (i = 0x20; i < 0x28; i++) + { + z80_readmap[i] = &page[(i & 0x07) << 10]; + } + break; + } + + case 1: /* cartridge ROM bank (8KB) at $A000-$BFFF */ + { + for (i = 0x28; i < 0x30; i++) + { + z80_readmap[i] = &page[(i & 0x07) << 10]; + } + break; + } + + case 2: /* cartridge ROM bank (8KB) at $4000-$5FFF */ + { + for (i = 0x10; i < 0x18; i++) + { + z80_readmap[i] = &page[(i & 0x07) << 10]; + } + break; + } + + case 3: /* cartridge ROM bank (8KB) at $6000-$7FFF */ + { + for (i = 0x18; i < 0x20; i++) + { + z80_readmap[i] = &page[(i & 0x07) << 10]; + } + break; + } + } + +#ifdef CHEATS_UPDATE + /* update ROM patches when banking has changed */ + CHEATS_UPDATE(); +#endif +} + +static void mapper_16k_w(int offset, unsigned char data) +{ + int i; + + /* cartridge ROM page (16KB) */ + uint8 page = data % slot.pages; + + /* page index increment (SEGA mapper only) */ + if ((slot.fcr[0] & 0x03) && (slot.mapper == MAPPER_SEGA)) + { + page = (page + ((4 - (slot.fcr[0] & 0x03)) << 3)) % slot.pages; + } + + /* save frame control register data */ + slot.fcr[offset] = data; + + switch (offset) + { + case 0: /* control register (SEGA mapper only) */ + { + if (data & 0x08) + { + /* external RAM (upper or lower 16KB) mapped at $8000-$BFFF */ + for (i = 0x20; i < 0x30; i++) + { + z80_readmap[i] = z80_writemap[i] = &sram.sram[((data & 0x04) << 12) + ((i & 0x0F) << 10)]; + } + } + else + { + /* cartridge ROM page (16KB) */ + page = slot.fcr[3] % slot.pages; + + /* page index increment (SEGA mapper) */ + if ((data & 0x03) && (slot.mapper == MAPPER_SEGA)) + { + page = (page + ((4 - (data & 0x03)) << 3)) % slot.pages; + } + + /* cartridge ROM mapped at $8000-$BFFF */ + for (i = 0x20; i < 0x30; i++) + { + z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; + z80_writemap[i] = cart.rom + 0x510000; /* unused area */ + } + } + + if (data & 0x10) + { + /* external RAM (lower 16KB) mapped at $C000-$FFFF */ + for (i = 0x30; i < 0x40; i++) + { + z80_readmap[i] = z80_writemap[i] = &sram.sram[(i & 0x0F) << 10]; + } + } + else + { + /* internal RAM (8KB mirrored) mapped at $C000-$FFFF */ + for (i = 0x30; i < 0x40; i++) + { + z80_readmap[i] = z80_writemap[i] = &work_ram[(i & 0x07) << 10]; + } + } + break; + } + + case 1: /* cartridge ROM bank (16KB) at $0000-$3FFF */ + { + /* first 1KB is not fixed (CODEMASTER or MULTI mappers only) */ + if ((slot.mapper == MAPPER_CODIES) || (slot.mapper == MAPPER_MULTI_16K)) + { + z80_readmap[0] = &slot.rom[(page << 14)]; + } + + for (i = 0x01; i < 0x10; i++) + { + z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; + } + break; + } + + case 2: /* cartridge ROM bank (16KB) at $4000-$7FFF */ + { + for (i = 0x10; i < 0x20; i++) + { + z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; + } + + /* cartridge RAM switch (CODEMASTER mapper only, see Ernie Elf's Golf) */ + if (slot.mapper == MAPPER_CODIES) + { + if (data & 0x80) + { + /* external RAM (8KB) mapped at $A000-$BFFF */ + for (i = 0x28; i < 0x30; i++) + { + z80_readmap[i] = z80_writemap[i] = &sram.sram[(i & 0x0F) << 10]; + } + } + else + { + /* cartridge ROM page (16KB) */ + page = slot.fcr[3] % slot.pages; + + /* cartridge ROM mapped at $A000-$BFFF */ + for (i = 0x28; i < 0x30; i++) + { + z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; + z80_writemap[i] = cart.rom + 0x510000; /* unused area */ + } + } + } + break; + } + + case 3: /* cartridge ROM bank (16KB) at $8000-$BFFF */ + { + /* check that external RAM (16KB) is not mapped at $8000-$BFFF (SEGA mapper only) */ + if ((slot.fcr[0] & 0x08)) break; + + /* first 8KB */ + for (i = 0x20; i < 0x28; i++) + { + z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; + } + + /* check that cartridge RAM (8KB) is not mapped at $A000-$BFFF (CODEMASTER mapper only) */ + if ((slot.mapper == MAPPER_CODIES) && (slot.fcr[2] & 0x80)) break; + + /* last 8KB */ + for (i = 0x28; i < 0x30; i++) + { + z80_readmap[i] = &slot.rom[(page << 14) | ((i & 0x0F) << 10)]; + } + break; + } + } + +#ifdef CHEATS_UPDATE + /* update ROM patches when banking has changed */ + CHEATS_UPDATE(); +#endif +} + +static void mapper_32k_w(unsigned char data) +{ + int i; + + /* cartridge ROM page (32KB) */ + uint8 *page = &slot.rom[(data % slot.pages) << 15]; + + /* Save frame control register data */ + slot.fcr[0] = data; + + /* selected page (32KB) is mapped at $0000-$7FFF */ + for (i = 0x00; i < 0x20; i++) + { + z80_readmap[i] = &page[i << 10]; + } + + /* first 16KB is mirrored at $8000-$BFFF */ + for (i = 0x20; i < 0x30; i++) + { + z80_readmap[i] = z80_readmap[i & 0x0F]; + } + +#ifdef CHEATS_UPDATE + /* update ROM patches when banking has changed */ + CHEATS_UPDATE(); +#endif +} + +static void write_mapper_none(unsigned int address, unsigned char data) +{ + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_sega(unsigned int address, unsigned char data) +{ + if (address >= 0xFFFC) + { + mapper_16k_w(address & 3, data); + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_codies(unsigned int address, unsigned char data) +{ + if (address == 0x0000) + { + mapper_16k_w(1,data); + return; + } + + if (address == 0x4000) + { + mapper_16k_w(2,data); + return; + } + + if (address == 0x8000) + { + mapper_16k_w(3,data); + return; + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_multi_16k(unsigned int address, unsigned char data) +{ + if (address == 0x3FFE) + { + mapper_16k_w(1,data); + return; + } + + if (address == 0x7FFF) + { + mapper_16k_w(2,data); + return; + } + + if (address == 0xBFFF) + { + mapper_16k_w(3,(slot.fcr[1] & 0x30) + data); + return; + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_multi_32k(unsigned int address, unsigned char data) +{ + if (address == 0xFFFF) + { + mapper_32k_w(data); + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_korea(unsigned int address, unsigned char data) +{ + if (address == 0xA000) + { + mapper_16k_w(3,data); + return; + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_msx(unsigned int address, unsigned char data) +{ + if (address <= 0x0003) + { + mapper_8k_w(address,data); + return; + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_korea_8k(unsigned int address, unsigned char data) +{ + if (address == 0x4000) + { + mapper_8k_w(2,data); + return; + } + + if (address == 0x6000) + { + mapper_8k_w(3,data); + return; + } + + if (address == 0x8000) + { + mapper_8k_w(0,data); + return; + } + + if (address == 0xA000) + { + mapper_8k_w(1,data); + return; + } + + if (address == 0xFFFE) + { + mapper_8k_w(2,(data << 1) & 0xFF); + mapper_8k_w(3,(1 + (data << 1)) & 0xFF); + } + else if (address == 0xFFFF) + { + mapper_8k_w(0,(data << 1) & 0xFF); + mapper_8k_w(1,(1 + (data << 1)) & 0xFF); + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_korea_16k(unsigned int address, unsigned char data) +{ + if (address == 0x4000) + { + mapper_16k_w(2,data); + return; + } + + if (address == 0x8000) + { + mapper_16k_w(3,data); + return; + } + + /* SEGA mapper compatibility */ + if (address >= 0xFFFC) + { + mapper_16k_w(address & 3, data); + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_93c46(unsigned int address, unsigned char data) +{ + /* EEPROM serial input */ + if ((address == 0x8000) && eeprom_93c.enabled) + { + eeprom_93c_write(data); + return; + } + + /* EEPROM ctrl */ + if (address == 0xFFFC) + { + /* enable/disable EEPROM */ + eeprom_93c.enabled = data & 0x08; + + if (data & 0x80) + { + /* reset EEPROM */ + eeprom_93c_init(); + } + } + + /* SEGA mapper compatibility */ + if (address > 0xFFFC) + { + mapper_16k_w(address & 3, data); + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static void write_mapper_terebi(unsigned int address, unsigned char data) +{ + if (address == 0x6000) + { + terebi_oekaki_write(data); + return; + } + + z80_writemap[address >> 10][address & 0x03FF] = data; +} + +static unsigned char read_mapper_93c46(unsigned int address) +{ + if ((address == 0x8000) && eeprom_93c.enabled) + { + return eeprom_93c_read(); + } + + return z80_readmap[address >> 10][address & 0x03FF]; +} + +static unsigned char read_mapper_terebi(unsigned int address) +{ + if (address == 0x8000) + { + return (terebi_oekaki_read() >> 8); + } + + if (address == 0xA000) + { + return (terebi_oekaki_read() & 0xFF); + } + + return z80_readmap[address >> 10][address & 0x03FF]; +} + +static unsigned char read_mapper_korea_8k(unsigned int address) +{ + unsigned char data = z80_readmap[address >> 10][address & 0x03FF]; + + /* 16KB page */ + unsigned char page = address >> 14; + + /* $4000-$7FFF and $8000-$BFFF area are protected */ + if (((page == 1) && (slot.fcr[2] & 0x80)) || ((page == 2) && (slot.fcr[0] & 0x80))) + { + /* bit-swapped value */ + data = (((data >> 7) & 0x01) | ((data >> 5) & 0x02) | + ((data >> 3) & 0x04) | ((data >> 1) & 0x08) | + ((data << 1) & 0x10) | ((data << 3) & 0x20) | + ((data << 5) & 0x40) | ((data << 7) & 0x80)); + } + + return data; +} + +static unsigned char read_mapper_default(unsigned int address) +{ + return z80_readmap[address >> 10][address & 0x03FF]; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sms_cart.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sms_cart.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sms_cart.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sms_cart.h index 99b0b0b6bb..dc0801e1c7 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sms_cart.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sms_cart.h @@ -1,56 +1,56 @@ -/**************************************************************************** - * Genesis Plus - * SG-1000, Master System & Game Gear cartridge hardware support - * - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _SMS_CART_H_ -#define _SMS_CART_H_ - -/* Special hardware */ -#define HW_3D_GLASSES 0x01 -#define HW_TEREBI_OEKAKI 0x02 - -/* Function prototypes */ -extern void sms_cart_init(void); -extern void sms_cart_reset(void); -extern void sms_cart_switch(uint8 mode); -extern int sms_cart_region_detect(void); -extern int sms_cart_context_save(uint8 *state); -extern int sms_cart_context_load(uint8 *state); - -#endif - - +/**************************************************************************** + * Genesis Plus + * SG-1000, Master System & Game Gear cartridge hardware support + * + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _SMS_CART_H_ +#define _SMS_CART_H_ + +/* Special hardware */ +#define HW_3D_GLASSES 0x01 +#define HW_TEREBI_OEKAKI 0x02 + +/* Function prototypes */ +extern void sms_cart_init(void); +extern void sms_cart_reset(void); +extern void sms_cart_switch(uint8 mode); +extern int sms_cart_region_detect(void); +extern int sms_cart_context_save(uint8 *state); +extern int sms_cart_context_load(uint8 *state); + +#endif + + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sram.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sram.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sram.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sram.c index 58ef404889..53a47742fe 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sram.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sram.c @@ -1,235 +1,235 @@ -/*************************************************************************************** - * Genesis Plus - * Backup RAM support - * - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -T_SRAM sram; - -/**************************************************************************** - * A quick guide to external RAM on the Genesis - * - * The external RAM definition is held at offset 0x1b0 of the ROM header. - * - * 1B0h: dc.b 'RA', %1x1yz000, %abc00000 - * 1B4h: dc.l RAM start address - * 1B8h: dc.l RAM end address - * x 1 for BACKUP (not volatile), 0 for volatile RAM - * yz 10 if even address only - * 11 if odd address only - * 00 if both even and odd address - * 01 others (serial EEPROM, RAM with 4-bit data bus, etc) - * abc 001 if SRAM - * 010 if EEPROM (serial or parallel) - * other values unused - * - * Assuming max. 64k backup RAM throughout - ****************************************************************************/ -void sram_init() -{ - memset(&sram, 0, sizeof (T_SRAM)); - - /* backup RAM data is stored above cartridge ROM area, at $800000-$80FFFF (max. 64K) */ - if (cart.romsize > 0x800000) return; - sram.sram = cart.rom + 0x800000; - - /* initialize Backup RAM */ - if (strstr(rominfo.international,"Sonic 1 Remastered")) - { - /* Sonic 1 Remastered hack crashes if backup RAM is not initialized to zero */ - memset(sram.sram, 0x00, 0x10000); - } - else - { - /* by default, assume backup RAM is initialized to 0xFF (Micro Machines 2, Dino Dini Soccer) */ - memset(sram.sram, 0xFF, 0x10000); - } - - sram.crc = crc32(0, sram.sram, 0x10000); - - /* retrieve informations from header */ - if ((READ_BYTE(cart.rom,0x1b0) == 0x52) && (READ_BYTE(cart.rom,0x1b1) == 0x41)) - { - /* backup RAM detected */ - sram.detected = 1; - - /* enable backup RAM */ - sram.on = 1; - - /* retrieve backup RAM start & end addresses */ - sram.start = READ_WORD_LONG(cart.rom, 0x1b4); - sram.end = READ_WORD_LONG(cart.rom, 0x1b8); - - /* autodetect games with wrong header infos */ - if (strstr(rominfo.product,"T-26013") != NULL) - { - /* Psy-O-Blade (wrong header) */ - sram.start = 0x200001; - sram.end = 0x203fff; - } - - /* fixe games indicating internal RAM as volatile external RAM (Feng Kuang Tao Hua Yuan) */ - else if (sram.start == 0xff0000) - { - /* backup RAM should be disabled */ - sram.on = 0; - } - - /* fixe other bad header informations */ - else if ((sram.start > sram.end) || ((sram.end - sram.start) >= 0x10000)) - { - sram.end = sram.start + 0xffff; - } - } - else - { - /* autodetect games with missing header infos */ - if (strstr(rominfo.product,"T-50086") != NULL) - { - /* PGA Tour Golf */ - sram.on = 1; - sram.start = 0x200001; - sram.end = 0x203fff; - } - else if (strstr(rominfo.product,"ACLD007") != NULL) - { - /* Winter Challenge */ - sram.on = 1; - sram.start = 0x200001; - sram.end = 0x200fff; - } - else if (strstr(rominfo.product,"T-50286") != NULL) - { - /* Buck Rogers - Countdown to Doomsday */ - sram.on = 1; - sram.start = 0x200001; - sram.end = 0x203fff; - } - else if (((rominfo.realchecksum == 0xaeaa) || (rominfo.realchecksum == 0x8dba)) && - (rominfo.checksum == 0x8104)) - { - /* Xin Qigai Wangzi (use uncommon area) */ - sram.on = 1; - sram.start = 0x400001; - sram.end = 0x40ffff; - } - else if ((rominfo.checksum == 0x0000) && (rominfo.realchecksum == 0x1f7f) && (READ_BYTE(cart.rom + 0x80000,0x1b0) == 0x52) && (READ_BYTE(cart.rom + 0x80000,0x1b1) == 0x41)) - { - /* Radica - Sensible Soccer Plus edition (use bankswitching) */ - sram.on = 1; - sram.start = 0x200001; - sram.end = 0x203fff; - } - else if ((strstr(rominfo.ROMType,"SF") != NULL) && (strstr(rominfo.product,"001") != NULL)) - { - /* SF-001 */ - sram.on = 1; - if (rominfo.checksum == 0x3e08) - { - /* last revision (use bankswitching) */ - sram.start = 0x3c0001; - sram.end = 0x3cffff; - } - else - { - /* older revisions (use uncommon area) */ - sram.start = 0x400001; - sram.end = 0x40ffff; - } - } - else if ((strstr(rominfo.ROMType,"SF") != NULL) && (strstr(rominfo.product,"004") != NULL)) - { - /* SF-004 (use bankswitching) */ - sram.on = 1; - sram.start = 0x200001; - sram.end = 0x203fff; - } - else if (strstr(rominfo.international,"SONIC & KNUCKLES") != NULL) - { - /* Sonic 3 & Knuckles combined ROM */ - if (cart.romsize == 0x400000) - { - /* Sonic & Knuckle does not have backup RAM but can access FRAM from Sonic 3 cartridge */ - sram.on = 1; - sram.start = 0x200001; - sram.end = 0x203fff; - } - } - - /* auto-detect games which need disabled backup RAM */ - else if (strstr(rominfo.product,"T-113016") != NULL) - { - /* Pugsy (does not have backup RAM but tries writing outside ROM area as copy protection) */ - sram.on = 0; - } - else if (strstr(rominfo.international,"SONIC THE HEDGEHOG 2") != NULL) - { - /* Sonic the Hedgehog 2 (does not have backup RAM) */ - /* this prevents backup RAM from being mapped in place of mirrored ROM when using S&K LOCK-ON feature */ - sram.on = 0; - } - - /* by default, enable backup RAM for ROM smaller than 2MB */ - else if (cart.romsize <= 0x200000) - { - /* 64KB static RAM mapped to $200000-$20ffff */ - sram.start = 0x200000; - sram.end = 0x20ffff; - sram.on = 1; - } - } -} - -unsigned int sram_read_byte(unsigned int address) -{ - return sram.sram[address & 0xffff]; -} - -unsigned int sram_read_word(unsigned int address) -{ - return READ_WORD(sram.sram, address & 0xfffe); -} - -void sram_write_byte(unsigned int address, unsigned int data) -{ - sram.sram[address & 0xffff] = data; -} - -void sram_write_word(unsigned int address, unsigned int data) -{ - WRITE_WORD(sram.sram, address & 0xfffe, data); -} +/*************************************************************************************** + * Genesis Plus + * Backup RAM support + * + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +T_SRAM sram; + +/**************************************************************************** + * A quick guide to external RAM on the Genesis + * + * The external RAM definition is held at offset 0x1b0 of the ROM header. + * + * 1B0h: dc.b 'RA', %1x1yz000, %abc00000 + * 1B4h: dc.l RAM start address + * 1B8h: dc.l RAM end address + * x 1 for BACKUP (not volatile), 0 for volatile RAM + * yz 10 if even address only + * 11 if odd address only + * 00 if both even and odd address + * 01 others (serial EEPROM, RAM with 4-bit data bus, etc) + * abc 001 if SRAM + * 010 if EEPROM (serial or parallel) + * other values unused + * + * Assuming max. 64k backup RAM throughout + ****************************************************************************/ +void sram_init() +{ + memset(&sram, 0, sizeof (T_SRAM)); + + /* backup RAM data is stored above cartridge ROM area, at $800000-$80FFFF (max. 64K) */ + if (cart.romsize > 0x800000) return; + sram.sram = cart.rom + 0x800000; + + /* initialize Backup RAM */ + if (strstr(rominfo.international,"Sonic 1 Remastered")) + { + /* Sonic 1 Remastered hack crashes if backup RAM is not initialized to zero */ + memset(sram.sram, 0x00, 0x10000); + } + else + { + /* by default, assume backup RAM is initialized to 0xFF (Micro Machines 2, Dino Dini Soccer) */ + memset(sram.sram, 0xFF, 0x10000); + } + + sram.crc = crc32(0, sram.sram, 0x10000); + + /* retrieve informations from header */ + if ((READ_BYTE(cart.rom,0x1b0) == 0x52) && (READ_BYTE(cart.rom,0x1b1) == 0x41)) + { + /* backup RAM detected */ + sram.detected = 1; + + /* enable backup RAM */ + sram.on = 1; + + /* retrieve backup RAM start & end addresses */ + sram.start = READ_WORD_LONG(cart.rom, 0x1b4); + sram.end = READ_WORD_LONG(cart.rom, 0x1b8); + + /* autodetect games with wrong header infos */ + if (strstr(rominfo.product,"T-26013") != NULL) + { + /* Psy-O-Blade (wrong header) */ + sram.start = 0x200001; + sram.end = 0x203fff; + } + + /* fixe games indicating internal RAM as volatile external RAM (Feng Kuang Tao Hua Yuan) */ + else if (sram.start == 0xff0000) + { + /* backup RAM should be disabled */ + sram.on = 0; + } + + /* fixe other bad header informations */ + else if ((sram.start > sram.end) || ((sram.end - sram.start) >= 0x10000)) + { + sram.end = sram.start + 0xffff; + } + } + else + { + /* autodetect games with missing header infos */ + if (strstr(rominfo.product,"T-50086") != NULL) + { + /* PGA Tour Golf */ + sram.on = 1; + sram.start = 0x200001; + sram.end = 0x203fff; + } + else if (strstr(rominfo.product,"ACLD007") != NULL) + { + /* Winter Challenge */ + sram.on = 1; + sram.start = 0x200001; + sram.end = 0x200fff; + } + else if (strstr(rominfo.product,"T-50286") != NULL) + { + /* Buck Rogers - Countdown to Doomsday */ + sram.on = 1; + sram.start = 0x200001; + sram.end = 0x203fff; + } + else if (((rominfo.realchecksum == 0xaeaa) || (rominfo.realchecksum == 0x8dba)) && + (rominfo.checksum == 0x8104)) + { + /* Xin Qigai Wangzi (use uncommon area) */ + sram.on = 1; + sram.start = 0x400001; + sram.end = 0x40ffff; + } + else if ((rominfo.checksum == 0x0000) && (rominfo.realchecksum == 0x1f7f) && (READ_BYTE(cart.rom + 0x80000,0x1b0) == 0x52) && (READ_BYTE(cart.rom + 0x80000,0x1b1) == 0x41)) + { + /* Radica - Sensible Soccer Plus edition (use bankswitching) */ + sram.on = 1; + sram.start = 0x200001; + sram.end = 0x203fff; + } + else if ((strstr(rominfo.ROMType,"SF") != NULL) && (strstr(rominfo.product,"001") != NULL)) + { + /* SF-001 */ + sram.on = 1; + if (rominfo.checksum == 0x3e08) + { + /* last revision (use bankswitching) */ + sram.start = 0x3c0001; + sram.end = 0x3cffff; + } + else + { + /* older revisions (use uncommon area) */ + sram.start = 0x400001; + sram.end = 0x40ffff; + } + } + else if ((strstr(rominfo.ROMType,"SF") != NULL) && (strstr(rominfo.product,"004") != NULL)) + { + /* SF-004 (use bankswitching) */ + sram.on = 1; + sram.start = 0x200001; + sram.end = 0x203fff; + } + else if (strstr(rominfo.international,"SONIC & KNUCKLES") != NULL) + { + /* Sonic 3 & Knuckles combined ROM */ + if (cart.romsize == 0x400000) + { + /* Sonic & Knuckle does not have backup RAM but can access FRAM from Sonic 3 cartridge */ + sram.on = 1; + sram.start = 0x200001; + sram.end = 0x203fff; + } + } + + /* auto-detect games which need disabled backup RAM */ + else if (strstr(rominfo.product,"T-113016") != NULL) + { + /* Pugsy (does not have backup RAM but tries writing outside ROM area as copy protection) */ + sram.on = 0; + } + else if (strstr(rominfo.international,"SONIC THE HEDGEHOG 2") != NULL) + { + /* Sonic the Hedgehog 2 (does not have backup RAM) */ + /* this prevents backup RAM from being mapped in place of mirrored ROM when using S&K LOCK-ON feature */ + sram.on = 0; + } + + /* by default, enable backup RAM for ROM smaller than 2MB */ + else if (cart.romsize <= 0x200000) + { + /* 64KB static RAM mapped to $200000-$20ffff */ + sram.start = 0x200000; + sram.end = 0x20ffff; + sram.on = 1; + } + } +} + +unsigned int sram_read_byte(unsigned int address) +{ + return sram.sram[address & 0xffff]; +} + +unsigned int sram_read_word(unsigned int address) +{ + return READ_WORD(sram.sram, address & 0xfffe); +} + +void sram_write_byte(unsigned int address, unsigned int data) +{ + sram.sram[address & 0xffff] = data; +} + +void sram_write_word(unsigned int address, unsigned int data) +{ + WRITE_WORD(sram.sram, address & 0xfffe, data); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sram.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sram.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sram.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sram.h index 3b505c55e1..1d65c64c9d 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/sram.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/sram.h @@ -1,63 +1,63 @@ -/*************************************************************************************** - * Genesis Plus - * Backup RAM support - * - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _SRAM_H_ -#define _SRAM_H_ - -typedef struct -{ - uint8 detected; - uint8 on; - uint8 custom; - uint32 start; - uint32 end; - uint32 crc; - uint8 *sram; -} T_SRAM; - -/* Function prototypes */ -extern void sram_init(); -extern unsigned int sram_read_byte(unsigned int address); -extern unsigned int sram_read_word(unsigned int address); -extern void sram_write_byte(unsigned int address, unsigned int data); -extern void sram_write_word(unsigned int address, unsigned int data); - -/* global variables */ -extern T_SRAM sram; - -#endif +/*************************************************************************************** + * Genesis Plus + * Backup RAM support + * + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _SRAM_H_ +#define _SRAM_H_ + +typedef struct +{ + uint8 detected; + uint8 on; + uint8 custom; + uint32 start; + uint32 end; + uint32 crc; + uint8 *sram; +} T_SRAM; + +/* Function prototypes */ +extern void sram_init(); +extern unsigned int sram_read_byte(unsigned int address); +extern unsigned int sram_read_word(unsigned int address); +extern void sram_write_byte(unsigned int address, unsigned int data); +extern void sram_write_word(unsigned int address, unsigned int data); + +/* global variables */ +extern T_SRAM sram; + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/imageformat.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/imageformat.txt similarity index 99% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/imageformat.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/imageformat.txt index 2d453b3330..5245e9a066 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/imageformat.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/imageformat.txt @@ -1,68 +1,68 @@ - -vscroll: 1 (0); 209 (26) - alternates every 4 frames -vram range for patterns: 0000-999f (low scr 0000-395f,72e0-999f; high 3980-999f) -name table address: c000 -seen DMAs (in order): - [300002-3026c3]->[0020-26e1] len 4961 - [3026c2-303943]->[26e0-3961] len 2369 - [303942-306003]->[72e0-99a1] len 4961 - --- - [306002-3086c3]->[3980-6041] len 4961 - [3086c2-309943]->[6040-72c1] len 2369 - [309942-30c003]->[72e0-99a2] len 4961 -tile arrangement: - -000: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 -001: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 -002: 001 003 005 007 009 00b 00d 00f 011 013 015 017 019 01b 01d 01f 021 023 025 027 029 02b 02d 02f 031 033 035 037 039 03b 03d 03f -003: 002 004 006 008 00a 00c 00e 010 012 014 016 018 01a 01c 01e 020 022 024 026 028 02a 02c 02e 030 032 034 036 038 03a 03c 03e 040 -004: 041 043 045 047 049 04b 04d 04f 051 053 055 057 059 05b 05d 05f 061 063 065 067 069 06b 06d 06f 071 073 075 077 079 07b 07d 07f -005: 042 044 046 048 04a 04c 04e 050 052 054 056 058 05a 05c 05e 060 062 064 066 068 06a 06c 06e 070 072 074 076 078 07a 07c 07e 080 -006: 081 083 085 087 089 08b 08d 08f 091 093 095 097 099 09b 09d 09f 0a1 0a3 0a5 0a7 0a9 0ab 0ad 0af 0b1 0b3 0b5 0b7 0b9 0bb 0bd 0bf -007: 082 084 086 088 08a 08c 08e 090 092 094 096 098 09a 09c 09e 0a0 0a2 0a4 0a6 0a8 0aa 0ac 0ae 0b0 0b2 0b4 0b6 0b8 0ba 0bc 0be 0c0 -008: 0c1 0c3 0c5 0c7 0c9 0cb 0cd 0cf 0d1 0d3 0d5 0d7 0d9 0db 0dd 0df 0e1 0e3 0e5 0e7 0e9 0eb 0ed 0ef 0f1 0f3 0f5 0f7 0f9 0fb 0fd 0ff -009: 0c2 0c4 0c6 0c8 0ca 0cc 0ce 0d0 0d2 0d4 0d6 0d8 0da 0dc 0de 0e0 0e2 0e4 0e6 0e8 0ea 0ec 0ee 0f0 0f2 0f4 0f6 0f8 0fa 0fc 0fe 100 -010: 101 103 105 107 109 10b 10d 10f 111 113 115 117 119 11b 11d 11f 121 123 125 127 129 12b 12d 12f 131 133 135 137 139 13b 13d 13f -011: 102 104 106 108 10a 10c 10e 110 112 114 116 118 11a 11c 11e 120 122 124 126 128 12a 12c 12e 130 132 134 136 138 13a 13c 13e 140 -012: 141 143 145 147 149 14b 14d 14f 151 153 155 157 159 15b 15d 15f 161 163 165 167 169 16b 16d 16f 171 173 175 177 179 17b 17d 17f -013: 142 144 146 148 14a 14c 14e 150 152 154 156 158 15a 15c 15e 160 162 164 166 168 16a 16c 16e 170 172 174 176 178 17a 17c 17e 180 -014: 181 183 185 187 189 18b 18d 18f 191 193 195 197 199 19b 19d 19f 1a1 1a3 1a5 1a7 1a9 1ab 1ad 1af 1b1 1b3 1b5 1b7 1b9 1bb 1bd 1bf -015: 182 184 186 188 18a 18c 18e 190 192 194 196 198 19a 19c 19e 1a0 1a2 1a4 1a6 1a8 1aa 1ac 1ae 1b0 1b2 1b4 1b6 1b8 1ba 1bc 1be 1c0 -016: 1c1 1c3 1c5 1c7 1c9 397 399 39b 39d 39f 3a1 3a3 3a5 3a7 3a9 3ab 3ad 3af 3b1 3b3 3b5 3b7 3b9 3bb 3bd 3bf 3c1 3c3 3c5 3c7 3c9 3cb -017: 1c2 1c4 1c6 1c8 1ca 398 39a 39c 39e 3a0 3a2 3a4 3a6 3a8 3aa 3ac 3ae 3b0 3b2 3b4 3b6 3b8 3ba 3bc 3be 3c0 3c2 3c4 3c6 3c8 3ca 3cc -018: 3cd 3cf 3d1 3d3 3d5 3d7 3d9 3db 3dd 3df 3e1 3e3 3e5 3e7 3e9 3eb 3ed 3ef 3f1 3f3 3f5 3f7 3f9 3fb 3fd 3ff 401 403 405 407 409 40b -019: 3ce 3d0 3d2 3d4 3d6 3d8 3da 3dc 3de 3e0 3e2 3e4 3e6 3e8 3ea 3ec 3ee 3f0 3f2 3f4 3f6 3f8 3fa 3fc 3fe 400 402 404 406 408 40a 40c -020: 40d 40f 411 413 415 417 419 41b 41d 41f 421 423 425 427 429 42b 42d 42f 431 433 435 437 439 43b 43d 43f 441 443 445 447 449 44b -021: 40e 410 412 414 416 418 41a 41c 41e 420 422 424 426 428 42a 42c 42e 430 432 434 436 438 43a 43c 43e 440 442 444 446 448 44a 44c -022: 44d 44f 451 453 455 457 459 45b 45d 45f 461 463 465 467 469 46b 46d 46f 471 473 475 477 479 47b 47d 47f 481 483 485 487 489 48b -023: 44e 450 452 454 456 458 45a 45c 45e 460 462 464 466 468 46a 46c 46e 470 472 474 476 478 47a 47c 47e 480 482 484 486 488 48a 48c -024: 48d 48f 491 493 495 497 499 49b 49d 49f 4a1 4a3 4a5 4a7 4a9 4ab 4ad 4af 4b1 4b3 4b5 4b7 4b9 4bb 4bd 4bf 4c1 4c3 4c5 4c7 4c9 4cb -025: 48e 490 492 494 496 498 49a 49c 49e 4a0 4a2 4a4 4a6 4a8 4aa 4ac 4ae 4b0 4b2 4b4 4b6 4b8 4ba 4bc 4be 4c0 4c2 4c4 4c6 4c8 4ca 4cc -026: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 -027: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 -028: 1cc 1ce 1d0 1d2 1d4 1d6 1d8 1da 1dc 1de 1e0 1e2 1e4 1e6 1e8 1ea 1ec 1ee 1f0 1f2 1f4 1f6 1f8 1fa 1fc 1fe 200 202 204 206 208 20a -029: 1cd 1cf 1d1 1d3 1d5 1d7 1d9 1db 1dd 1df 1e1 1e3 1e5 1e7 1e9 1eb 1ed 1ef 1f1 1f3 1f5 1f7 1f9 1fb 1fd 1ff 201 203 205 207 209 20b -030: 20c 20e 210 212 214 216 218 21a 21c 21e 220 222 224 226 228 22a 22c 22e 230 232 234 236 238 23a 23c 23e 240 242 244 246 248 24a -031: 20d 20f 211 213 215 217 219 21b 21d 21f 221 223 225 227 229 22b 22d 22f 231 233 235 237 239 23b 23d 23f 241 243 245 247 249 24b -032: 24c 24e 250 252 254 256 258 25a 25c 25e 260 262 264 266 268 26a 26c 26e 270 272 274 276 278 27a 27c 27e 280 282 284 286 288 28a -033: 24d 24f 251 253 255 257 259 25b 25d 25f 261 263 265 267 269 26b 26d 26f 271 273 275 277 279 27b 27d 27f 281 283 285 287 289 28b -034: 28c 28e 290 292 294 296 298 29a 29c 29e 2a0 2a2 2a4 2a6 2a8 2aa 2ac 2ae 2b0 2b2 2b4 2b6 2b8 2ba 2bc 2be 2c0 2c2 2c4 2c6 2c8 2ca -035: 28d 28f 291 293 295 297 299 29b 29d 29f 2a1 2a3 2a5 2a7 2a9 2ab 2ad 2af 2b1 2b3 2b5 2b7 2b9 2bb 2bd 2bf 2c1 2c3 2c5 2c7 2c9 2cb -036: 2cc 2ce 2d0 2d2 2d4 2d6 2d8 2da 2dc 2de 2e0 2e2 2e4 2e6 2e8 2ea 2ec 2ee 2f0 2f2 2f4 2f6 2f8 2fa 2fc 2fe 300 302 304 306 308 30a -037: 2cd 2cf 2d1 2d3 2d5 2d7 2d9 2db 2dd 2df 2e1 2e3 2e5 2e7 2e9 2eb 2ed 2ef 2f1 2f3 2f5 2f7 2f9 2fb 2fd 2ff 301 303 305 307 309 30b -038: 30c 30e 310 312 314 316 318 31a 31c 31e 320 322 324 326 328 32a 32c 32e 330 332 334 336 338 33a 33c 33e 340 342 344 346 348 34a -039: 30d 30f 311 313 315 317 319 31b 31d 31f 321 323 325 327 329 32b 32d 32f 331 333 335 337 339 33b 33d 33f 341 343 345 347 349 34b -040: 34c 34e 350 352 354 356 358 35a 35c 35e 360 362 364 366 368 36a 36c 36e 370 372 374 376 378 37a 37c 37e 380 382 384 386 388 38a -041: 34d 34f 351 353 355 357 359 35b 35d 35f 361 363 365 367 369 36b 36d 36f 371 373 375 377 379 37b 37d 37f 381 383 385 387 389 38b -042: 38c 38e 390 392 394 397 399 39b 39d 39f 3a1 3a3 3a5 3a7 3a9 3ab 3ad 3af 3b1 3b3 3b5 3b7 3b9 3bb 3bd 3bf 3c1 3c3 3c5 3c7 3c9 3cb -043: 38d 38f 391 393 395 398 39a 39c 39e 3a0 3a2 3a4 3a6 3a8 3aa 3ac 3ae 3b0 3b2 3b4 3b6 3b8 3ba 3bc 3be 3c0 3c2 3c4 3c6 3c8 3ca 3cc -044: 3cd 3cf 3d1 3d3 3d5 3d7 3d9 3db 3dd 3df 3e1 3e3 3e5 3e7 3e9 3eb 3ed 3ef 3f1 3f3 3f5 3f7 3f9 3fb 3fd 3ff 401 403 405 407 409 40b -045: 3ce 3d0 3d2 3d4 3d6 3d8 3da 3dc 3de 3e0 3e2 3e4 3e6 3e8 3ea 3ec 3ee 3f0 3f2 3f4 3f6 3f8 3fa 3fc 3fe 400 402 404 406 408 40a 40c -046: 40d 40f 411 413 415 417 419 41b 41d 41f 421 423 425 427 429 42b 42d 42f 431 433 435 437 439 43b 43d 43f 441 443 445 447 449 44b -047: 40e 410 412 414 416 418 41a 41c 41e 420 422 424 426 428 42a 42c 42e 430 432 434 436 438 43a 43c 43e 440 442 444 446 448 44a 44c -048: 44d 44f 451 453 455 457 459 45b 45d 45f 461 463 465 467 469 46b 46d 46f 471 473 475 477 479 47b 47d 47f 481 483 485 487 489 48b -049: 44e 450 452 454 456 458 45a 45c 45e 460 462 464 466 468 46a 46c 46e 470 472 474 476 478 47a 47c 47e 480 482 484 486 488 48a 48c -050: 48d 48f 491 493 495 497 499 49b 49d 49f 4a1 4a3 4a5 4a7 4a9 4ab 4ad 4af 4b1 4b3 4b5 4b7 4b9 4bb 4bd 4bf 4c1 4c3 4c5 4c7 4c9 4cb -051: 48e 490 492 494 496 498 49a 49c 49e 4a0 4a2 4a4 4a6 4a8 4aa 4ac 4ae 4b0 4b2 4b4 4b6 4b8 4ba 4bc 4be 4c0 4c2 4c4 4c6 4c8 4ca 4cc -052: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 -053: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + +vscroll: 1 (0); 209 (26) - alternates every 4 frames +vram range for patterns: 0000-999f (low scr 0000-395f,72e0-999f; high 3980-999f) +name table address: c000 +seen DMAs (in order): + [300002-3026c3]->[0020-26e1] len 4961 + [3026c2-303943]->[26e0-3961] len 2369 + [303942-306003]->[72e0-99a1] len 4961 + --- + [306002-3086c3]->[3980-6041] len 4961 + [3086c2-309943]->[6040-72c1] len 2369 + [309942-30c003]->[72e0-99a2] len 4961 +tile arrangement: + +000: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 +001: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 +002: 001 003 005 007 009 00b 00d 00f 011 013 015 017 019 01b 01d 01f 021 023 025 027 029 02b 02d 02f 031 033 035 037 039 03b 03d 03f +003: 002 004 006 008 00a 00c 00e 010 012 014 016 018 01a 01c 01e 020 022 024 026 028 02a 02c 02e 030 032 034 036 038 03a 03c 03e 040 +004: 041 043 045 047 049 04b 04d 04f 051 053 055 057 059 05b 05d 05f 061 063 065 067 069 06b 06d 06f 071 073 075 077 079 07b 07d 07f +005: 042 044 046 048 04a 04c 04e 050 052 054 056 058 05a 05c 05e 060 062 064 066 068 06a 06c 06e 070 072 074 076 078 07a 07c 07e 080 +006: 081 083 085 087 089 08b 08d 08f 091 093 095 097 099 09b 09d 09f 0a1 0a3 0a5 0a7 0a9 0ab 0ad 0af 0b1 0b3 0b5 0b7 0b9 0bb 0bd 0bf +007: 082 084 086 088 08a 08c 08e 090 092 094 096 098 09a 09c 09e 0a0 0a2 0a4 0a6 0a8 0aa 0ac 0ae 0b0 0b2 0b4 0b6 0b8 0ba 0bc 0be 0c0 +008: 0c1 0c3 0c5 0c7 0c9 0cb 0cd 0cf 0d1 0d3 0d5 0d7 0d9 0db 0dd 0df 0e1 0e3 0e5 0e7 0e9 0eb 0ed 0ef 0f1 0f3 0f5 0f7 0f9 0fb 0fd 0ff +009: 0c2 0c4 0c6 0c8 0ca 0cc 0ce 0d0 0d2 0d4 0d6 0d8 0da 0dc 0de 0e0 0e2 0e4 0e6 0e8 0ea 0ec 0ee 0f0 0f2 0f4 0f6 0f8 0fa 0fc 0fe 100 +010: 101 103 105 107 109 10b 10d 10f 111 113 115 117 119 11b 11d 11f 121 123 125 127 129 12b 12d 12f 131 133 135 137 139 13b 13d 13f +011: 102 104 106 108 10a 10c 10e 110 112 114 116 118 11a 11c 11e 120 122 124 126 128 12a 12c 12e 130 132 134 136 138 13a 13c 13e 140 +012: 141 143 145 147 149 14b 14d 14f 151 153 155 157 159 15b 15d 15f 161 163 165 167 169 16b 16d 16f 171 173 175 177 179 17b 17d 17f +013: 142 144 146 148 14a 14c 14e 150 152 154 156 158 15a 15c 15e 160 162 164 166 168 16a 16c 16e 170 172 174 176 178 17a 17c 17e 180 +014: 181 183 185 187 189 18b 18d 18f 191 193 195 197 199 19b 19d 19f 1a1 1a3 1a5 1a7 1a9 1ab 1ad 1af 1b1 1b3 1b5 1b7 1b9 1bb 1bd 1bf +015: 182 184 186 188 18a 18c 18e 190 192 194 196 198 19a 19c 19e 1a0 1a2 1a4 1a6 1a8 1aa 1ac 1ae 1b0 1b2 1b4 1b6 1b8 1ba 1bc 1be 1c0 +016: 1c1 1c3 1c5 1c7 1c9 397 399 39b 39d 39f 3a1 3a3 3a5 3a7 3a9 3ab 3ad 3af 3b1 3b3 3b5 3b7 3b9 3bb 3bd 3bf 3c1 3c3 3c5 3c7 3c9 3cb +017: 1c2 1c4 1c6 1c8 1ca 398 39a 39c 39e 3a0 3a2 3a4 3a6 3a8 3aa 3ac 3ae 3b0 3b2 3b4 3b6 3b8 3ba 3bc 3be 3c0 3c2 3c4 3c6 3c8 3ca 3cc +018: 3cd 3cf 3d1 3d3 3d5 3d7 3d9 3db 3dd 3df 3e1 3e3 3e5 3e7 3e9 3eb 3ed 3ef 3f1 3f3 3f5 3f7 3f9 3fb 3fd 3ff 401 403 405 407 409 40b +019: 3ce 3d0 3d2 3d4 3d6 3d8 3da 3dc 3de 3e0 3e2 3e4 3e6 3e8 3ea 3ec 3ee 3f0 3f2 3f4 3f6 3f8 3fa 3fc 3fe 400 402 404 406 408 40a 40c +020: 40d 40f 411 413 415 417 419 41b 41d 41f 421 423 425 427 429 42b 42d 42f 431 433 435 437 439 43b 43d 43f 441 443 445 447 449 44b +021: 40e 410 412 414 416 418 41a 41c 41e 420 422 424 426 428 42a 42c 42e 430 432 434 436 438 43a 43c 43e 440 442 444 446 448 44a 44c +022: 44d 44f 451 453 455 457 459 45b 45d 45f 461 463 465 467 469 46b 46d 46f 471 473 475 477 479 47b 47d 47f 481 483 485 487 489 48b +023: 44e 450 452 454 456 458 45a 45c 45e 460 462 464 466 468 46a 46c 46e 470 472 474 476 478 47a 47c 47e 480 482 484 486 488 48a 48c +024: 48d 48f 491 493 495 497 499 49b 49d 49f 4a1 4a3 4a5 4a7 4a9 4ab 4ad 4af 4b1 4b3 4b5 4b7 4b9 4bb 4bd 4bf 4c1 4c3 4c5 4c7 4c9 4cb +025: 48e 490 492 494 496 498 49a 49c 49e 4a0 4a2 4a4 4a6 4a8 4aa 4ac 4ae 4b0 4b2 4b4 4b6 4b8 4ba 4bc 4be 4c0 4c2 4c4 4c6 4c8 4ca 4cc +026: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 +027: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 +028: 1cc 1ce 1d0 1d2 1d4 1d6 1d8 1da 1dc 1de 1e0 1e2 1e4 1e6 1e8 1ea 1ec 1ee 1f0 1f2 1f4 1f6 1f8 1fa 1fc 1fe 200 202 204 206 208 20a +029: 1cd 1cf 1d1 1d3 1d5 1d7 1d9 1db 1dd 1df 1e1 1e3 1e5 1e7 1e9 1eb 1ed 1ef 1f1 1f3 1f5 1f7 1f9 1fb 1fd 1ff 201 203 205 207 209 20b +030: 20c 20e 210 212 214 216 218 21a 21c 21e 220 222 224 226 228 22a 22c 22e 230 232 234 236 238 23a 23c 23e 240 242 244 246 248 24a +031: 20d 20f 211 213 215 217 219 21b 21d 21f 221 223 225 227 229 22b 22d 22f 231 233 235 237 239 23b 23d 23f 241 243 245 247 249 24b +032: 24c 24e 250 252 254 256 258 25a 25c 25e 260 262 264 266 268 26a 26c 26e 270 272 274 276 278 27a 27c 27e 280 282 284 286 288 28a +033: 24d 24f 251 253 255 257 259 25b 25d 25f 261 263 265 267 269 26b 26d 26f 271 273 275 277 279 27b 27d 27f 281 283 285 287 289 28b +034: 28c 28e 290 292 294 296 298 29a 29c 29e 2a0 2a2 2a4 2a6 2a8 2aa 2ac 2ae 2b0 2b2 2b4 2b6 2b8 2ba 2bc 2be 2c0 2c2 2c4 2c6 2c8 2ca +035: 28d 28f 291 293 295 297 299 29b 29d 29f 2a1 2a3 2a5 2a7 2a9 2ab 2ad 2af 2b1 2b3 2b5 2b7 2b9 2bb 2bd 2bf 2c1 2c3 2c5 2c7 2c9 2cb +036: 2cc 2ce 2d0 2d2 2d4 2d6 2d8 2da 2dc 2de 2e0 2e2 2e4 2e6 2e8 2ea 2ec 2ee 2f0 2f2 2f4 2f6 2f8 2fa 2fc 2fe 300 302 304 306 308 30a +037: 2cd 2cf 2d1 2d3 2d5 2d7 2d9 2db 2dd 2df 2e1 2e3 2e5 2e7 2e9 2eb 2ed 2ef 2f1 2f3 2f5 2f7 2f9 2fb 2fd 2ff 301 303 305 307 309 30b +038: 30c 30e 310 312 314 316 318 31a 31c 31e 320 322 324 326 328 32a 32c 32e 330 332 334 336 338 33a 33c 33e 340 342 344 346 348 34a +039: 30d 30f 311 313 315 317 319 31b 31d 31f 321 323 325 327 329 32b 32d 32f 331 333 335 337 339 33b 33d 33f 341 343 345 347 349 34b +040: 34c 34e 350 352 354 356 358 35a 35c 35e 360 362 364 366 368 36a 36c 36e 370 372 374 376 378 37a 37c 37e 380 382 384 386 388 38a +041: 34d 34f 351 353 355 357 359 35b 35d 35f 361 363 365 367 369 36b 36d 36f 371 373 375 377 379 37b 37d 37f 381 383 385 387 389 38b +042: 38c 38e 390 392 394 397 399 39b 39d 39f 3a1 3a3 3a5 3a7 3a9 3ab 3ad 3af 3b1 3b3 3b5 3b7 3b9 3bb 3bd 3bf 3c1 3c3 3c5 3c7 3c9 3cb +043: 38d 38f 391 393 395 398 39a 39c 39e 3a0 3a2 3a4 3a6 3a8 3aa 3ac 3ae 3b0 3b2 3b4 3b6 3b8 3ba 3bc 3be 3c0 3c2 3c4 3c6 3c8 3ca 3cc +044: 3cd 3cf 3d1 3d3 3d5 3d7 3d9 3db 3dd 3df 3e1 3e3 3e5 3e7 3e9 3eb 3ed 3ef 3f1 3f3 3f5 3f7 3f9 3fb 3fd 3ff 401 403 405 407 409 40b +045: 3ce 3d0 3d2 3d4 3d6 3d8 3da 3dc 3de 3e0 3e2 3e4 3e6 3e8 3ea 3ec 3ee 3f0 3f2 3f4 3f6 3f8 3fa 3fc 3fe 400 402 404 406 408 40a 40c +046: 40d 40f 411 413 415 417 419 41b 41d 41f 421 423 425 427 429 42b 42d 42f 431 433 435 437 439 43b 43d 43f 441 443 445 447 449 44b +047: 40e 410 412 414 416 418 41a 41c 41e 420 422 424 426 428 42a 42c 42e 430 432 434 436 438 43a 43c 43e 440 442 444 446 448 44a 44c +048: 44d 44f 451 453 455 457 459 45b 45d 45f 461 463 465 467 469 46b 46d 46f 471 473 475 477 479 47b 47d 47f 481 483 485 487 489 48b +049: 44e 450 452 454 456 458 45a 45c 45e 460 462 464 466 468 46a 46c 46e 470 472 474 476 478 47a 47c 47e 480 482 484 486 488 48a 48c +050: 48d 48f 491 493 495 497 499 49b 49d 49f 4a1 4a3 4a5 4a7 4a9 4ab 4ad 4af 4b1 4b3 4b5 4b7 4b9 4bb 4bd 4bf 4c1 4c3 4c5 4c7 4c9 4cb +051: 48e 490 492 494 496 498 49a 49c 49e 4a0 4a2 4a4 4a6 4a8 4aa 4ac 4ae 4b0 4b2 4b4 4b6 4b8 4ba 4bc 4be 4c0 4c2 4c4 4c6 4c8 4ca 4cc +052: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 +053: 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/ssp16.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/ssp16.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/ssp16.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/ssp16.c index ccdbde79d6..b9e82f7641 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/ssp16.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/ssp16.c @@ -1,1330 +1,1330 @@ -/* - basic, incomplete SSP160x (SSP1601?) interpreter - with SVP memory controller emu - - (c) Copyright 2008, Grazvydas "notaz" Ignotas - Free for non-commercial use. - - For commercial use, separate licencing terms must be obtained. - - Modified for Genesis Plus GX (Eke-Eke), added big endian support, fixed mode & addr -*/ - - -/* - * Register info - * - * 0. "-" - * size: 16 - * desc: Constant register with all bits set (0xffff). - * - * 1. "X" - * size: 16 - * desc: Generic register. When set, updates P (P = X * Y * 2) - * - * 2. "Y" - * size: 16 - * desc: Generic register. When set, updates P (P = X * Y * 2) - * - * 3. "A" - * size: 32 - * desc: Accumulator. - * - * 4. "ST" - * size: 16 - * desc: Status register. From MAME: bits 0-9 are CONTROL, other FLAG - * fedc ba98 7654 3210 - * 210 - RPL (?) "Loop size". If non-zero, makes (rX+) and (rX-) respectively - * modulo-increment and modulo-decrement. The value shows which - * power of 2 to use, i.e. 4 means modulo by 16. - * (e: fir16_32.sc, IIR_4B.SC, DECIM.SC) - * 43 - RB (?) - * 5 - GP0_0 (ST5?) Changed before acessing PM0 (affects banking?). - * 6 - GP0_1 (ST6?) Cleared before acessing PM0 (affects banking?). Set after. - * datasheet says these (5,6) bits correspond to hardware pins. - * 7 - IE (?) Not directly used by SVP code (never set, but preserved)? - * 8 - OP (?) Not used by SVP code (only cleared)? (MAME: saturated value - * (probably means clamping? i.e. 0x7ffc + 9 -> 0x7fff)) - * 9 - MACS (?) Not used by SVP code (only cleared)? (e: "mac shift") - * a - GPI_0 Interrupt 0 enable/status? - * b - GPI_1 Interrupt 1 enable/status? - * c - L L flag. Carry? - * d - Z Zero flag. - * e - OV Overflow flag. - * f - N Negative flag. - * seen directly changing code sequences: - * ldi ST, 0 ld A, ST ld A, ST ld A, ST ldi st, 20h - * ldi ST, 60h ori A, 60h and A, E8h and A, E8h - * ld ST, A ld ST, A ori 3 - * ld ST, A - * - * 5. "STACK" - * size: 16 - * desc: hw stack of 6 levels (according to datasheet) - * - * 6. "PC" - * size: 16 - * desc: Program counter. - * - * 7. "P" - * size: 32 - * desc: multiply result register. P = X * Y * 2 - * probably affected by MACS bit in ST. - * - * 8. "PM0" (PM from PMAR name from Tasco's docs) - * size: 16? - * desc: Programmable Memory access register. - * On reset, or when one (both?) GP0 bits are clear, - * acts as status for XST, mapped at 015004 at 68k side: - * bit0: ssp has written something to XST (cleared when 015004 is read) - * bit1: 68k has written something through a1500{0|2} (cleared on PM0 read) - * - * 9. "PM1" - * size: 16? - * desc: Programmable Memory access register. - * This reg. is only used as PMAR. - * - * 10. "PM2" - * size: 16? - * desc: Programmable Memory access register. - * This reg. is only used as PMAR. - * - * 11. "XST" - * size: 16? - * desc: eXternal STate. Mapped to a15000 and a15002 at 68k side. - * Can be programmed as PMAR? (only seen in test mode code) - * Affects PM0 when written to? - * - * 12. "PM4" - * size: 16? - * desc: Programmable Memory access register. - * This reg. is only used as PMAR. The most used PMAR by VR. - * - * 13. (unused by VR) - * - * 14. "PMC" (PMC from PMAC name from Tasco's docs) - * size: 32? - * desc: Programmable Memory access Control. Set using 2 16bit writes, - * first address, then mode word. After setting PMAC, PMAR sould - * be blind accessed (ld -, PMx or ld PMx, -) to program it for - * reading and writing respectively. - * Reading the register also shifts it's state (from "waiting for - * address" to "waiting for mode" and back). Reads always return - * address related to last PMx register accressed. - * (note: addresses do not wrap). - * - * 15. "AL" - * size: 16 - * desc: Accumulator Low. 16 least significant bits of accumulator. - * (normally reading acc (ld X, A) you get 16 most significant bits). - * - * - * There are 8 8-bit pointer registers rX. r0-r3 (ri) point to RAM0, r4-r7 (rj) point to RAM1. - * They can be accessed directly, or 2 indirection levels can be used [ (rX), ((rX)) ], - * which work similar to * and ** operators in C, only they use different memory banks and - * ((rX)) also does post-increment. First indirection level (rX) accesses RAMx, second accesses - * program memory at address read from (rX), and increments value in (rX). - * - * r0,r1,r2,r4,r5,r6 can be modified [ex: ldi r0, 5]. - * 3 modifiers can be applied (optional): - * + : post-increment [ex: ld a, (r0+) ]. Can be made modulo-increment by setting RPL bits in ST. - * - : post-decrement. Can be made modulo-decrement by setting RPL bits in ST (not sure). - * +!: post-increment, unaffected by RPL (probably). - * These are only used on 1st indirection level, so things like [ld a, ((r0+))] and [ld X, r6-] - * ar probably invalid. - * - * r3 and r7 are special and can not be changed (at least Samsung samples and SVP code never do). - * They are fixed to the start of their RAM banks. (They are probably changeable for ssp1605+, - * Samsung's old DSP page claims that). - * 1 of these 4 modifiers must be used (short form direct addressing?): - * |00: RAMx[0] [ex: (r3|00), 0] (based on sample code) - * |01: RAMx[1] - * |10: RAMx[2] ? maybe 10h? accortding to Div_c_dp.sc, 2 - * |11: RAMx[3] - * - * - * Instruction notes - * - * ld a, * doesn't affect flags! (e: A_LAW.SC, Div_c_dp.sc) - * - * mld (rj), (ri) [, b] - * operation: A = 0; P = (rj) * (ri) - * notes: based on IIR_4B.SC sample. flags? what is b??? - * - * mpya (rj), (ri) [, b] - * name: multiply and add? - * operation: A += P; P = (rj) * (ri) - * - * mpys (rj), (ri), b - * name: multiply and subtract? - * notes: not used by VR code. - * - * mod cond, op - * mod cond, shr does arithmetic shift - * - * 'ld -, AL' and probably 'ld AL, -' are for dummy assigns - * - * memory map: - * 000000 - 1fffff ROM, accessable by both - * 200000 - 2fffff unused? - * 300000 - 31ffff DRAM, both - * 320000 - 38ffff unused? - * 390000 - 3907ff IRAM. can only be accessed by ssp? - * 390000 - 39ffff similar mapping to "cell arrange" in Sega CD, 68k only? - * 3a0000 - 3affff similar mapping to "cell arrange" in Sega CD, a bit different - * - * 30fe02 - 0 if SVP busy, 1 if done (set by SVP, checked and cleared by 68k) - * 30fe06 - also sync related. - * 30fe08 - job number [1-12] for SVP. 0 means no job. Set by 68k, read-cleared by SVP. - * - * + figure out if 'op A, P' is 32bit (nearly sure it is) - * * does mld, mpya load their operands into X and Y? - * * OP simm - * - * Assumptions in this code - * P is not directly writeable - * flags correspond to full 32bit accumulator - * only Z and N status flags are emulated (others unused by SVP) - * modifiers for 'OP a, ri' are ignored (invalid?/not used by SVP) - * 'ld d, (a)' loads from program ROM - */ - -#include "shared.h" - - -#define u32 unsigned int - -/*#define USE_DEBUGGER*/ - -/* 0 */ -#define rX ssp->gr[SSP_X].byte.h -#define rY ssp->gr[SSP_Y].byte.h -#define rA ssp->gr[SSP_A].byte.h -#define rST ssp->gr[SSP_ST].byte.h /* 4 */ -#define rSTACK ssp->gr[SSP_STACK].byte.h -#define rPC ssp->gr[SSP_PC].byte.h -#define rP ssp->gr[SSP_P] -#define rPM0 ssp->gr[SSP_PM0].byte.h /* 8 */ -#define rPM1 ssp->gr[SSP_PM1].byte.h -#define rPM2 ssp->gr[SSP_PM2].byte.h -#define rXST ssp->gr[SSP_XST].byte.h -#define rPM4 ssp->gr[SSP_PM4].byte.h /* 12 */ -/* 13 */ -#define rPMC ssp->gr[SSP_PMC] /* will keep addr in .h, mode in .l */ -#define rAL ssp->gr[SSP_A].byte.l - -#define rA32 ssp->gr[SSP_A].v -#define rIJ ssp->ptr.r - -#define IJind (((op>>6)&4)|(op&3)) - -#define GET_PC() (PC - (unsigned short *)svp->iram_rom) -#define GET_PPC_OFFS() ((unsigned char *)PC - svp->iram_rom - 2) -#define SET_PC(d) PC = (unsigned short *)svp->iram_rom + d - -#define REG_READ(r) (((r) <= 4) ? ssp->gr[r].byte.h : read_handlers[r]()) -#define REG_WRITE(r,d) { \ - int r1 = r; \ - if (r1 >= 4) write_handlers[r1](d); \ - else if (r1 > 0) ssp->gr[r1].byte.h = d; \ -} - -/* flags */ -#define SSP_FLAG_L (1<<0xc) -#define SSP_FLAG_Z (1<<0xd) -#define SSP_FLAG_V (1<<0xe) -#define SSP_FLAG_N (1<<0xf) - -/* update ZN according to 32bit ACC. */ -#define UPD_ACC_ZN \ - rST &= ~(SSP_FLAG_Z|SSP_FLAG_N); \ - if (!rA32) rST |= SSP_FLAG_Z; \ - else rST |= (rA32>>16)&SSP_FLAG_N; - -/* it seems SVP code never checks for L and OV, so we leave them out. */ -/* rST |= (t>>4)&SSP_FLAG_L; */ -#define UPD_LZVN \ - rST &= ~(SSP_FLAG_L|SSP_FLAG_Z|SSP_FLAG_V|SSP_FLAG_N); \ - if (!rA32) rST |= SSP_FLAG_Z; \ - else rST |= (rA32>>16)&SSP_FLAG_N; - -/* standard cond processing. */ -/* again, only Z and N is checked, as SVP doesn't seem to use any other conds. */ -#define COND_CHECK \ - switch (op&0xf0) { \ - case 0x00: cond = 1; break; /* always true */ \ - case 0x50: cond = !((rST ^ (op<<5)) & SSP_FLAG_Z); break; /* Z matches f(?) bit */ \ - case 0x70: cond = !((rST ^ (op<<7)) & SSP_FLAG_N); break; /* N matches f(?) bit */ \ - default: break; \ - } - -/* ops with accumulator. */ -/* how is low word really affected by these? */ -/* nearly sure 'ld A' doesn't affect flags */ -#define OP_LDA(x) \ - rA = x - -#define OP_LDA32(x) \ - rA32 = x - -#define OP_SUBA(x) { \ - rA32 -= (x) << 16; \ - UPD_LZVN \ -} - -#define OP_SUBA32(x) { \ - rA32 -= (x); \ - UPD_LZVN \ -} - -#define OP_CMPA(x) { \ - u32 t = rA32 - ((x) << 16); \ - rST &= ~(SSP_FLAG_L|SSP_FLAG_Z|SSP_FLAG_V|SSP_FLAG_N); \ - if (!t) rST |= SSP_FLAG_Z; \ - else rST |= (t>>16)&SSP_FLAG_N; \ -} - -#define OP_CMPA32(x) { \ - u32 t = rA32 - (x); \ - rST &= ~(SSP_FLAG_L|SSP_FLAG_Z|SSP_FLAG_V|SSP_FLAG_N); \ - if (!t) rST |= SSP_FLAG_Z; \ - else rST |= (t>>16)&SSP_FLAG_N; \ -} - -#define OP_ADDA(x) { \ - rA32 += (x) << 16; \ - UPD_LZVN \ -} - -#define OP_ADDA32(x) { \ - rA32 += (x); \ - UPD_LZVN \ -} - -#define OP_ANDA(x) \ - rA32 &= (x) << 16; \ - UPD_ACC_ZN - -#define OP_ANDA32(x) \ - rA32 &= (x); \ - UPD_ACC_ZN - -#define OP_ORA(x) \ - rA32 |= (x) << 16; \ - UPD_ACC_ZN - -#define OP_ORA32(x) \ - rA32 |= (x); \ - UPD_ACC_ZN - -#define OP_EORA(x) \ - rA32 ^= (x) << 16; \ - UPD_ACC_ZN - -#define OP_EORA32(x) \ - rA32 ^= (x); \ - UPD_ACC_ZN - - -#define OP_CHECK32(OP) { \ - if ((op & 0x0f) == SSP_P) { /* A <- P */ \ - read_P(); /* update P */ \ - OP(rP.v); \ - break; \ - } \ - if ((op & 0x0f) == SSP_A) { /* A <- A */ \ - OP(rA32); \ - break; \ - } \ -} - - -static ssp1601_t *ssp = NULL; -static unsigned short *PC; -static int g_cycles; - -#ifdef USE_DEBUGGER -static int running = 0; -static int last_iram = 0; -#endif - -/* ----------------------------------------------------- */ -/* register i/o handlers */ - -/* 0-4, 13 */ -static u32 read_unknown(void) -{ -#ifdef LOG_SVP - elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: unknown read @ %04x", GET_PPC_OFFS()); -#endif - return 0; -} - -static void write_unknown(u32 d) -{ -#ifdef LOG_SVP - elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: unknown write @ %04x", GET_PPC_OFFS()); -#endif -} - -/* 4 */ -static void write_ST(u32 d) -{ - /* if ((rST ^ d) & 0x0007) elprintf(EL_SVP, "ssp RPL %i -> %i @ %04x", rST&7, d&7, GET_PPC_OFFS()); */ -#ifdef LOG_SVP - if ((rST ^ d) & 0x0f98) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME ST %04x -> %04x @ %04x", rST, d, GET_PPC_OFFS()); -#endif - rST = d; -} - -/* 5 */ -static u32 read_STACK(void) -{ - --rSTACK; - if ((short)rSTACK < 0) { - rSTACK = 5; -#ifdef LOG_SVP - elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: stack underflow! (%i) @ %04x", rSTACK, GET_PPC_OFFS()); -#endif - } - return ssp->stack[rSTACK]; -} - -static void write_STACK(u32 d) -{ - if (rSTACK >= 6) { -#ifdef LOG_SVP - elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: stack overflow! (%i) @ %04x", rSTACK, GET_PPC_OFFS()); -#endif - rSTACK = 0; - } - ssp->stack[rSTACK++] = d; -} - -/* 6 */ -static u32 read_PC(void) -{ - /* g_cycles--; */ - return GET_PC(); -} - -static void write_PC(u32 d) -{ - SET_PC(d); - g_cycles--; -} - -/* 7 */ -static u32 read_P(void) -{ - int m1 = (signed short)rX; - int m2 = (signed short)rY; - rP.v = (m1 * m2 * 2); - return rP.byte.h; -} - -/* ----------------------------------------------------- */ - -static int get_inc(int mode) -{ - int inc = (mode >> 11) & 7; - if (inc != 0) { - if (inc != 7) inc--; - /* inc = (1<<16) << inc; */ - inc = 1 << inc; /* 0 1 2 4 8 16 32 128 */ - if (mode & 0x8000) inc = -inc; /* decrement mode */ - } - return inc; -} - -#define overwite_write(dst, d) \ -{ \ - if (d & 0xf000) { dst &= ~0xf000; dst |= d & 0xf000; } \ - if (d & 0x0f00) { dst &= ~0x0f00; dst |= d & 0x0f00; } \ - if (d & 0x00f0) { dst &= ~0x00f0; dst |= d & 0x00f0; } \ - if (d & 0x000f) { dst &= ~0x000f; dst |= d & 0x000f; } \ -} - -static u32 pm_io(int reg, int write, u32 d) -{ - if (ssp->emu_status & SSP_PMC_SET) - { - /* this MUST be blind r or w */ - if ((*(PC-1) & 0xff0f) && (*(PC-1) & 0xfff0)) { -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: tried to set PM%i (%c) with non-blind i/o %08x @ %04x", - reg, write ? 'w' : 'r', rPMC.v, GET_PPC_OFFS()); -#endif - ssp->emu_status &= ~SSP_PMC_SET; - return 0; - } -#ifdef LOG_SVP - elprintf(EL_SVP, "PM%i (%c) set to %08x @ %04x", reg, write ? 'w' : 'r', rPMC.v, GET_PPC_OFFS()); -#endif - ssp->pmac[write][reg] = rPMC.v; - ssp->emu_status &= ~SSP_PMC_SET; -#ifdef LOG_SVP - if ((rPMC.v & 0x7f) == 0x1c && (rPMC.v & 0x7fff0000) == 0) { - elprintf(EL_SVP, "ssp IRAM copy from %06x", (ssp->mem.bank.RAM1[0]-1)<<1); -#ifdef USE_DEBUGGER - last_iram = (ssp->mem.bank.RAM1[0]-1)<<1; -#endif - } -#endif - return 0; - } - - /* just in case */ - if (ssp->emu_status & SSP_PMC_HAVE_ADDR) { -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: PM%i (%c) with only addr set @ %04x", - reg, write ? 'w' : 'r', GET_PPC_OFFS()); -#endif - ssp->emu_status &= ~SSP_PMC_HAVE_ADDR; - } - - if (reg == 4 || (rST & 0x60)) - { -#ifdef LOG_SVP - #define CADDR ((((mode<<16)&0x7f0000)|addr)<<1) -#endif - unsigned short *dram = (unsigned short *)svp->dram; - if (write) - { - /*int mode = ssp->pmac_write[reg]&0xffff; - int addr = ssp->pmac_write[reg]>>16;*/ - int addr = ssp->pmac[1][reg]&0xffff; - int mode = ssp->pmac[1][reg]>>16; -#ifdef LOG_SVP - if ((mode & 0xb800) == 0xb800) - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: mode %04x", mode); -#endif - if ((mode & 0x43ff) == 0x0018) /* DRAM */ - { - int inc = get_inc(mode); -#ifdef LOG_SVP - elprintf(EL_SVP, "ssp PM%i DRAM w [%06x] %04x (inc %i, ovrw %i)", - reg, CADDR, d, inc >> 16, (mode>>10)&1); -#endif - if (mode & 0x0400) { - overwite_write(dram[addr], d); - } else dram[addr] = d; - ssp->pmac[1][reg] += inc; - } - else if ((mode & 0xfbff) == 0x4018) /* DRAM, cell inc */ - { -#ifdef LOG_SVP - elprintf(EL_SVP, "ssp PM%i DRAM w [%06x] %04x (cell inc, ovrw %i) @ %04x", - reg, CADDR, d, (mode>>10)&1, GET_PPC_OFFS()); -#endif - if (mode & 0x0400) { - overwite_write(dram[addr], d); - } else dram[addr] = d; - /* ssp->pmac_write[reg] += (addr&1) ? (31<<16) : (1<<16); */ - ssp->pmac[1][reg] += (addr&1) ? 31 : 1; - } - else if ((mode & 0x47ff) == 0x001c) /* IRAM */ - { - int inc = get_inc(mode); -#ifdef LOG_SVP - if ((addr&0xfc00) != 0x8000) - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: invalid IRAM addr: %04x", addr<<1); - elprintf(EL_SVP, "ssp IRAM w [%06x] %04x (inc %i)", (addr<<1)&0x7ff, d, inc >> 16); -#endif - ((unsigned short *)svp->iram_rom)[addr&0x3ff] = d; - ssp->pmac[1][reg] += inc; - } -#ifdef LOG_SVP - else - { - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: PM%i unhandled write mode %04x, [%06x] %04x @ %04x", - reg, mode, CADDR, d, GET_PPC_OFFS()); - } -#endif - } - else - { - /*int mode = ssp->pmac_read[reg]&0xffff; - int addr = ssp->pmac_read[reg]>>16;*/ - int addr = ssp->pmac[0][reg]&0xffff; - int mode = ssp->pmac[0][reg]>>16; - - if ((mode & 0xfff0) == 0x0800) /* ROM, inc 1, verified to be correct */ - { -#ifdef LOG_SVP - elprintf(EL_SVP, "ssp ROM r [%06x] %04x", CADDR, - ((unsigned short *)cart.rom)[addr|((mode&0xf)<<16)]); -#endif - ssp->pmac[0][reg] ++; - - d = ((unsigned short *)cart.rom)[addr|((mode&0xf)<<16)]; - } - else if ((mode & 0x47ff) == 0x0018) /* DRAM */ - { - int inc = get_inc(mode); -#ifdef LOG_SVP - elprintf(EL_SVP, "ssp PM%i DRAM r [%06x] %04x (inc %i)", reg, CADDR, dram[addr], inc >> 16); -#endif - d = dram[addr]; - ssp->pmac[0][reg] += inc; - } - else - { -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: PM%i unhandled read mode %04x, [%06x] @ %04x", - reg, mode, CADDR, GET_PPC_OFFS()); -#endif - d = 0; - } - } - - /* PMC value corresponds to last PMR accessed (not sure). */ - rPMC.v = ssp->pmac[write][reg]; - - return d; - } - - return (u32)-1; -} - -/* 8 */ -static u32 read_PM0(void) -{ - u32 d = pm_io(0, 0, 0); - if (d != (u32)-1) return d; -#ifdef LOG_SVP - elprintf(EL_SVP, "PM0 raw r %04x @ %04x", rPM0, GET_PPC_OFFS()); -#endif - d = rPM0; - if (!(d & 2) && (GET_PPC_OFFS() == 0x800 || GET_PPC_OFFS() == 0x1851E)) { - ssp->emu_status |= SSP_WAIT_PM0; -#ifdef LOG_SVP - elprintf(EL_SVP, "det TIGHT loop: PM0"); -#endif - } - rPM0 &= ~2; /* ? */ - return d; -} - -static void write_PM0(u32 d) -{ - u32 r = pm_io(0, 1, d); - if (r != (u32)-1) return; -#ifdef LOG_SVP - elprintf(EL_SVP, "PM0 raw w %04x @ %04x", d, GET_PPC_OFFS()); -#endif - rPM0 = d; -} - -/* 9 */ -static u32 read_PM1(void) -{ - u32 d = pm_io(1, 0, 0); - if (d != (u32)-1) return d; - /* can be removed? */ -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "PM1 raw r %04x @ %04x", rPM1, GET_PPC_OFFS()); -#endif - return rPM1; -} - -static void write_PM1(u32 d) -{ - u32 r = pm_io(1, 1, d); - if (r != (u32)-1) return; - /* can be removed? */ -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "PM1 raw w %04x @ %04x", d, GET_PPC_OFFS()); -#endif - rPM1 = d; -} - -/* 10 */ -static u32 read_PM2(void) -{ - u32 d = pm_io(2, 0, 0); - if (d != (u32)-1) return d; - /* can be removed? */ -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "PM2 raw r %04x @ %04x", rPM2, GET_PPC_OFFS()); -#endif - return rPM2; -} - -static void write_PM2(u32 d) -{ - u32 r = pm_io(2, 1, d); - if (r != (u32)-1) return; - /* can be removed? */ -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "PM2 raw w %04x @ %04x", d, GET_PPC_OFFS()); -#endif - rPM2 = d; -} - -/* 11 */ -static u32 read_XST(void) -{ - /* can be removed? */ - u32 d = pm_io(3, 0, 0); - if (d != (u32)-1) return d; -#ifdef LOG_SVP - elprintf(EL_SVP, "XST raw r %04x @ %04x", rXST, GET_PPC_OFFS()); -#endif - return rXST; -} - -static void write_XST(u32 d) -{ - /* can be removed? */ - u32 r = pm_io(3, 1, d); - if (r != (u32)-1) return; -#ifdef LOG_SVP - elprintf(EL_SVP, "XST raw w %04x @ %04x", d, GET_PPC_OFFS()); -#endif - rPM0 |= 1; - rXST = d; -} - -/* 12 */ -static u32 read_PM4(void) -{ - u32 d = pm_io(4, 0, 0); - if (d == 0) { - switch (GET_PPC_OFFS()) { - case 0x0854: - ssp->emu_status |= SSP_WAIT_30FE08; -#ifdef LOG_SVP - elprintf(EL_SVP, "det TIGHT loop: [30fe08]"); -#endif - break; - case 0x4f12: - ssp->emu_status |= SSP_WAIT_30FE06; -#ifdef LOG_SVP - elprintf(EL_SVP, "det TIGHT loop: [30fe06]"); -#endif - break; - } - } - if (d != (u32)-1) return d; - /* can be removed? */ -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "PM4 raw r %04x @ %04x", rPM4, GET_PPC_OFFS()); -#endif - return rPM4; -} - -static void write_PM4(u32 d) -{ - u32 r = pm_io(4, 1, d); - if (r != (u32)-1) return; - /* can be removed? */ -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "PM4 raw w %04x @ %04x", d, GET_PPC_OFFS()); -#endif - rPM4 = d; -} - -/* 14 */ -static u32 read_PMC(void) -{ -#ifdef LOG_SVP - elprintf(EL_SVP, "PMC r a %04x (st %c) @ %04x", rPMC.byte.h, - (ssp->emu_status & SSP_PMC_HAVE_ADDR) ? 'm' : 'a', GET_PPC_OFFS()); -#endif - if (ssp->emu_status & SSP_PMC_HAVE_ADDR) { - /* if (ssp->emu_status & SSP_PMC_SET) */ - /* elprintf(EL_ANOMALY|EL_SVP, "prev PMC not used @ %04x", GET_PPC_OFFS()); */ - ssp->emu_status |= SSP_PMC_SET; - ssp->emu_status &= ~SSP_PMC_HAVE_ADDR; - /* return ((rPMC.h << 4) & 0xfff0) | ((rPMC.h >> 4) & 0xf); */ - return ((rPMC.byte.l << 4) & 0xfff0) | ((rPMC.byte.l >> 4) & 0xf); - } else { - ssp->emu_status |= SSP_PMC_HAVE_ADDR; - /* return rPMC.h; */ - return rPMC.byte.l; - } -} - -static void write_PMC(u32 d) -{ - if (ssp->emu_status & SSP_PMC_HAVE_ADDR) { - /* if (ssp->emu_status & SSP_PMC_SET) */ - /* elprintf(EL_ANOMALY|EL_SVP, "prev PMC not used @ %04x", GET_PPC_OFFS()); */ - ssp->emu_status |= SSP_PMC_SET; - ssp->emu_status &= ~SSP_PMC_HAVE_ADDR; - /* rPMC.l = d; */ - rPMC.byte.h = d; -#ifdef LOG_SVP - elprintf(EL_SVP, "PMC w m %04x @ %04x", rPMC.byte.l, GET_PPC_OFFS()); -#endif - } else { - ssp->emu_status |= SSP_PMC_HAVE_ADDR; - /* rPMC.h = d; */ - rPMC.byte.l = d; -#ifdef LOG_SVP - elprintf(EL_SVP, "PMC w a %04x @ %04x", rPMC.byte.h, GET_PPC_OFFS()); -#endif - } -} - -/* 15 */ -static u32 read_AL(void) -{ - if (*(PC-1) == 0x000f) { -#ifdef LOG_SVP - elprintf(EL_SVP, "ssp dummy PM assign %08x @ %04x", rPMC.v, GET_PPC_OFFS()); -#endif - ssp->emu_status &= ~(SSP_PMC_SET|SSP_PMC_HAVE_ADDR); /* ? */ - } - return rAL; -} - -static void write_AL(u32 d) -{ - rAL = d; -} - - -typedef u32 (*read_func_t)(void); -typedef void (*write_func_t)(u32 d); - -static read_func_t read_handlers[16] = -{ - read_unknown, read_unknown, read_unknown, read_unknown, /* -, X, Y, A */ - read_unknown, /* 4 ST */ - read_STACK, - read_PC, - read_P, - read_PM0, /* 8 */ - read_PM1, - read_PM2, - read_XST, - read_PM4, /* 12 */ - read_unknown, /* 13 gr13 */ - read_PMC, - read_AL -}; - -static write_func_t write_handlers[16] = -{ - write_unknown, write_unknown, write_unknown, write_unknown, /* -, X, Y, A */ -/* write_unknown, */ /* 4 ST */ - write_ST, /* 4 ST (debug hook) */ - write_STACK, - write_PC, - write_unknown, /* 7 P */ - write_PM0, /* 8 */ - write_PM1, - write_PM2, - write_XST, - write_PM4, /* 12 */ - write_unknown, /* 13 gr13 */ - write_PMC, - write_AL -}; - -/* ----------------------------------------------------- */ -/* pointer register handlers */ - -#define ptr1_read(op) ptr1_read_(op&3,(op>>6)&4,(op<<1)&0x18) - -static u32 ptr1_read_(int ri, int isj2, int modi3) -{ - /* int t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18); */ - u32 mask, add = 0, t = ri | isj2 | modi3; - unsigned char *rp = NULL; - switch (t) - { - /* mod=0 (00) */ - case 0x00: - case 0x01: - case 0x02: return ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]]; - case 0x03: return ssp->mem.bank.RAM0[0]; - case 0x04: - case 0x05: - case 0x06: return ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]]; - case 0x07: return ssp->mem.bank.RAM1[0]; - /* mod=1 (01), "+!" */ - case 0x08: - case 0x09: - case 0x0a: return ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]++]; - case 0x0b: return ssp->mem.bank.RAM0[1]; - case 0x0c: - case 0x0d: - case 0x0e: return ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]++]; - case 0x0f: return ssp->mem.bank.RAM1[1]; - /* mod=2 (10), "-" */ - case 0x10: - case 0x11: - case 0x12: rp = &ssp->ptr.bank.r0[t&3]; t = ssp->mem.bank.RAM0[*rp]; - if (!(rST&7)) { (*rp)--; return t; } - add = -1; goto modulo; - case 0x13: return ssp->mem.bank.RAM0[2]; - case 0x14: - case 0x15: - case 0x16: rp = &ssp->ptr.bank.r1[t&3]; t = ssp->mem.bank.RAM1[*rp]; - if (!(rST&7)) { (*rp)--; return t; } - add = -1; goto modulo; - case 0x17: return ssp->mem.bank.RAM1[2]; - /* mod=3 (11), "+" */ - case 0x18: - case 0x19: - case 0x1a: rp = &ssp->ptr.bank.r0[t&3]; t = ssp->mem.bank.RAM0[*rp]; - if (!(rST&7)) { (*rp)++; return t; } - add = 1; goto modulo; - case 0x1b: return ssp->mem.bank.RAM0[3]; - case 0x1c: - case 0x1d: - case 0x1e: rp = &ssp->ptr.bank.r1[t&3]; t = ssp->mem.bank.RAM1[*rp]; - if (!(rST&7)) { (*rp)++; return t; } - add = 1; goto modulo; - case 0x1f: return ssp->mem.bank.RAM1[3]; - } - - return 0; - -modulo: - mask = (1 << (rST&7)) - 1; - *rp = (*rp & ~mask) | ((*rp + add) & mask); - return t; -} - -static void ptr1_write(int op, u32 d) -{ - int t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18); - switch (t) - { - /* mod=0 (00) */ - case 0x00: - case 0x01: - case 0x02: ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]] = d; return; - case 0x03: ssp->mem.bank.RAM0[0] = d; return; - case 0x04: - case 0x05: - case 0x06: ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]] = d; return; - case 0x07: ssp->mem.bank.RAM1[0] = d; return; - /* mod=1 (01), "+!" */ - /* mod=3, "+" */ - case 0x08: - case 0x18: - case 0x09: - case 0x19: - case 0x0a: - case 0x1a: ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]++] = d; return; - case 0x0b: ssp->mem.bank.RAM0[1] = d; return; - case 0x0c: - case 0x1c: - case 0x0d: - case 0x1d: - case 0x0e: - case 0x1e: ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]++] = d; return; - case 0x0f: ssp->mem.bank.RAM1[1] = d; return; - /* mod=2 (10), "-" */ - case 0x10: - case 0x11: - case 0x12: ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]--] = d; return; - case 0x13: ssp->mem.bank.RAM0[2] = d; return; - case 0x14: - case 0x15: - case 0x16: ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]--] = d; return; - case 0x17: ssp->mem.bank.RAM1[2] = d; return; - /* mod=3 (11) */ - case 0x1b: ssp->mem.bank.RAM0[3] = d; return; - case 0x1f: ssp->mem.bank.RAM1[3] = d; return; - } -} - -static u32 ptr2_read(int op) -{ - int mv = 0, t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18); - switch (t) - { - /* mod=0 (00) */ - case 0x00: - case 0x01: - case 0x02: mv = ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]]++; break; - case 0x03: mv = ssp->mem.bank.RAM0[0]++; break; - case 0x04: - case 0x05: - case 0x06: mv = ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]]++; break; - case 0x07: mv = ssp->mem.bank.RAM1[0]++; break; - /* mod=1 (01) */ - case 0x0b: mv = ssp->mem.bank.RAM0[1]++; break; - case 0x0f: mv = ssp->mem.bank.RAM1[1]++; break; - /* mod=2 (10) */ - case 0x13: mv = ssp->mem.bank.RAM0[2]++; break; - case 0x17: mv = ssp->mem.bank.RAM1[2]++; break; - /* mod=3 (11) */ - case 0x1b: mv = ssp->mem.bank.RAM0[3]++; break; - case 0x1f: mv = ssp->mem.bank.RAM1[3]++; break; - default: -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: invalid mod in ((rX))? @ %04x", GET_PPC_OFFS()); -#endif - return 0; - } - - return ((unsigned short *)svp->iram_rom)[mv]; -} - - -/* ----------------------------------------------------- */ - -void ssp1601_reset(ssp1601_t *l_ssp) -{ - ssp = l_ssp; - ssp->emu_status = 0; - ssp->gr[SSP_GR0].v = 0xffff0000; - rPC = 0x400; - rSTACK = 0; /* ? using ascending stack */ - rST = 0; -} - - -#ifdef USE_DEBUGGER -static void debug_dump(void) -{ - printf("GR0: %04x X: %04x Y: %04x A: %08x\n", ssp->gr[SSP_GR0].byte.h, rX, rY, ssp->gr[SSP_A].v); - printf("PC: %04x (%04x) P: %08x\n", GET_PC(), GET_PC() << 1, ssp->gr[SSP_P].v); - printf("PM0: %04x PM1: %04x PM2: %04x\n", rPM0, rPM1, rPM2); - printf("XST: %04x PM4: %04x PMC: %08x\n", rXST, rPM4, ssp->gr[SSP_PMC].v); - printf(" ST: %04x %c%c%c%c, GP0_0 %i, GP0_1 %i\n", rST, rST&SSP_FLAG_N?'N':'n', rST&SSP_FLAG_V?'V':'v', - rST&SSP_FLAG_Z?'Z':'z', rST&SSP_FLAG_L?'L':'l', (rST>>5)&1, (rST>>6)&1); - printf("STACK: %i %04x %04x %04x %04x %04x %04x\n", rSTACK, ssp->stack[0], ssp->stack[1], - ssp->stack[2], ssp->stack[3], ssp->stack[4], ssp->stack[5]); - printf("r0-r2: %02x %02x %02x r4-r6: %02x %02x %02x\n", rIJ[0], rIJ[1], rIJ[2], rIJ[4], rIJ[5], rIJ[6]); - elprintf(EL_SVP, "cycles: %i, emu_status: %x", g_cycles, ssp->emu_status); -} - -static void debug_dump_mem(void) -{ - int h, i; - printf("RAM0\n"); - for (h = 0; h < 32; h++) - { - if (h == 16) printf("RAM1\n"); - printf("%03x:", h*16); - for (i = 0; i < 16; i++) - printf(" %04x", ssp->mem.RAM[h*16+i]); - printf("\n"); - } -} - -static void debug_dump2file(const char *fname, void *mem, int len) -{ - FILE *f = fopen(fname, "wb"); - unsigned short *p = mem; - int i; - if (f) { - for (i = 0; i < len/2; i++) p[i] = (p[i]<<8) | (p[i]>>8); - fwrite(mem, 1, len, f); - fclose(f); - for (i = 0; i < len/2; i++) p[i] = (p[i]<<8) | (p[i]>>8); - printf("dumped to %s\n", fname); - } - else - printf("dump failed\n"); -} - -static int bpts[10] = { 0, }; - -static void debug(unsigned int pc, unsigned int op) -{ - static char buffo[64] = {0,}; - char buff[64] = {0,}; - int i; - - if (running) { - for (i = 0; i < 10; i++) - if (pc != 0 && bpts[i] == pc) { - printf("breakpoint %i\n", i); - running = 0; - break; - } - } - if (running) return; - - printf("%04x (%02x) @ %04x\n", op, op >> 9, pc<<1); - - while (1) - { - printf("dbg> "); - fflush(stdout); - fgets(buff, sizeof(buff), stdin); - if (buff[0] == '\n') strcpy(buff, buffo); - else strcpy(buffo, buff); - - switch (buff[0]) { - case 0: exit(0); - case 'c': - case 'r': running = 1; return; - case 's': - case 'n': return; - case 'x': debug_dump(); break; - case 'm': debug_dump_mem(); break; - case 'b': { - char *baddr = buff + 2; - i = 0; - if (buff[3] == ' ') { i = buff[2] - '0'; baddr = buff + 4; } - bpts[i] = strtol(baddr, NULL, 16) >> 1; - printf("breakpoint %i set @ %04x\n", i, bpts[i]<<1); - break; - } - case 'd': - sprintf(buff, "iramrom_%04x.bin", last_iram); - debug_dump2file(buff, svp->iram_rom, sizeof(svp->iram_rom)); - debug_dump2file("dram.bin", svp->dram, sizeof(svp->dram)); - break; - default: printf("unknown command\n"); break; - } - } -} -#endif /* USE_DEBUGGER */ - - -void ssp1601_run(int cycles) -{ - SET_PC(rPC); - g_cycles = cycles; - - do - { - int op; - u32 tmpv; - - op = *PC++; -#ifdef USE_DEBUGGER - debug(GET_PC()-1, op); -#endif - switch (op >> 9) - { - /* ld d, s */ - case 0x00: - if (op == 0) break; /* nop */ - if (op == ((SSP_A<<4)|SSP_P)) { /* A <- P */ - /* not sure. MAME claims that only hi word is transfered. */ - read_P(); /* update P */ - rA32 = rP.v; - } - else - { - tmpv = REG_READ(op & 0x0f); - REG_WRITE((op & 0xf0) >> 4, tmpv); - } - break; - - /* ld d, (ri) */ - case 0x01: tmpv = ptr1_read(op); REG_WRITE((op & 0xf0) >> 4, tmpv); break; - - /* ld (ri), s */ - case 0x02: tmpv = REG_READ((op & 0xf0) >> 4); ptr1_write(op, tmpv); break; - - /* ldi d, imm */ - case 0x04: tmpv = *PC++; REG_WRITE((op & 0xf0) >> 4, tmpv); break; - - /* ld d, ((ri)) */ - case 0x05: tmpv = ptr2_read(op); REG_WRITE((op & 0xf0) >> 4, tmpv); break; - - /* ldi (ri), imm */ - case 0x06: tmpv = *PC++; ptr1_write(op, tmpv); break; - - /* ld adr, a */ - case 0x07: ssp->mem.RAM[op & 0x1ff] = rA; break; - - /* ld d, ri */ - case 0x09: tmpv = rIJ[(op&3)|((op>>6)&4)]; REG_WRITE((op & 0xf0) >> 4, tmpv); break; - - /* ld ri, s */ - case 0x0a: rIJ[(op&3)|((op>>6)&4)] = REG_READ((op & 0xf0) >> 4); break; - - /* ldi ri, simm */ - case 0x0c: - case 0x0d: - case 0x0e: - case 0x0f: rIJ[(op>>8)&7] = op; break; - - /* call cond, addr */ - case 0x24: { - int cond = 0; - COND_CHECK - if (cond) { int new_PC = *PC++; write_STACK(GET_PC()); write_PC(new_PC); } - else PC++; - break; - } - - /* ld d, (a) */ - case 0x25: tmpv = ((unsigned short *)svp->iram_rom)[rA]; REG_WRITE((op & 0xf0) >> 4, tmpv); break; - - /* bra cond, addr */ - case 0x26: { - int cond = 0; - COND_CHECK - if (cond) { int new_PC = *PC++; write_PC(new_PC); } - else PC++; - break; - } - - /* mod cond, op */ - case 0x48: { - int cond = 0; - COND_CHECK - if (cond) { - switch (op & 7) { - case 2: rA32 = (signed int)rA32 >> 1; break; /* shr (arithmetic) */ - case 3: rA32 <<= 1; break; /* shl */ - case 6: rA32 = -(signed int)rA32; break; /* neg */ - case 7: if ((int)rA32 < 0) rA32 = -(signed int)rA32; break; /* abs */ - default: -#ifdef LOG_SVP - elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: unhandled mod %i @ %04x", - op&7, GET_PPC_OFFS()); -#endif - break; - } - UPD_ACC_ZN /* ? */ - } - break; - } - - /* mpys? */ - case 0x1b: -#ifdef LOG_SVP - if (!(op&0x100)) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: no b bit @ %04x", GET_PPC_OFFS()); -#endif - read_P(); /* update P */ - rA32 -= rP.v; /* maybe only upper word? */ - UPD_ACC_ZN /* there checking flags after this */ - rX = ptr1_read_(op&3, 0, (op<<1)&0x18); /* ri (maybe rj?) */ - rY = ptr1_read_((op>>4)&3, 4, (op>>3)&0x18); /* rj */ - break; - - /* mpya (rj), (ri), b */ - case 0x4b: -#ifdef LOG_SVP - if (!(op&0x100)) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: no b bit @ %04x", GET_PPC_OFFS()); -#endif - read_P(); /* update P */ - rA32 += rP.v; /* confirmed to be 32bit */ - UPD_ACC_ZN /* ? */ - rX = ptr1_read_(op&3, 0, (op<<1)&0x18); /* ri (maybe rj?) */ - rY = ptr1_read_((op>>4)&3, 4, (op>>3)&0x18); /* rj */ - break; - - /* mld (rj), (ri), b */ - case 0x5b: -#ifdef LOG_SVP - if (!(op&0x100)) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: no b bit @ %04x", GET_PPC_OFFS()); -#endif - rA32 = 0; - rST &= 0x0fff; /* ? */ - rX = ptr1_read_(op&3, 0, (op<<1)&0x18); /* ri (maybe rj?) */ - rY = ptr1_read_((op>>4)&3, 4, (op>>3)&0x18); /* rj */ - break; - - /* OP a, s */ - case 0x10: OP_CHECK32(OP_SUBA32); tmpv = REG_READ(op & 0x0f); OP_SUBA(tmpv); break; - case 0x30: OP_CHECK32(OP_CMPA32); tmpv = REG_READ(op & 0x0f); OP_CMPA(tmpv); break; - case 0x40: OP_CHECK32(OP_ADDA32); tmpv = REG_READ(op & 0x0f); OP_ADDA(tmpv); break; - case 0x50: OP_CHECK32(OP_ANDA32); tmpv = REG_READ(op & 0x0f); OP_ANDA(tmpv); break; - case 0x60: OP_CHECK32(OP_ORA32 ); tmpv = REG_READ(op & 0x0f); OP_ORA (tmpv); break; - case 0x70: OP_CHECK32(OP_EORA32); tmpv = REG_READ(op & 0x0f); OP_EORA(tmpv); break; - - /* OP a, (ri) */ - case 0x11: tmpv = ptr1_read(op); OP_SUBA(tmpv); break; - case 0x31: tmpv = ptr1_read(op); OP_CMPA(tmpv); break; - case 0x41: tmpv = ptr1_read(op); OP_ADDA(tmpv); break; - case 0x51: tmpv = ptr1_read(op); OP_ANDA(tmpv); break; - case 0x61: tmpv = ptr1_read(op); OP_ORA (tmpv); break; - case 0x71: tmpv = ptr1_read(op); OP_EORA(tmpv); break; - - /* OP a, adr */ - case 0x03: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_LDA (tmpv); break; - case 0x13: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_SUBA(tmpv); break; - case 0x33: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_CMPA(tmpv); break; - case 0x43: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_ADDA(tmpv); break; - case 0x53: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_ANDA(tmpv); break; - case 0x63: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_ORA (tmpv); break; - case 0x73: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_EORA(tmpv); break; - - /* OP a, imm */ - case 0x14: tmpv = *PC++; OP_SUBA(tmpv); break; - case 0x34: tmpv = *PC++; OP_CMPA(tmpv); break; - case 0x44: tmpv = *PC++; OP_ADDA(tmpv); break; - case 0x54: tmpv = *PC++; OP_ANDA(tmpv); break; - case 0x64: tmpv = *PC++; OP_ORA (tmpv); break; - case 0x74: tmpv = *PC++; OP_EORA(tmpv); break; - - /* OP a, ((ri)) */ - case 0x15: tmpv = ptr2_read(op); OP_SUBA(tmpv); break; - case 0x35: tmpv = ptr2_read(op); OP_CMPA(tmpv); break; - case 0x45: tmpv = ptr2_read(op); OP_ADDA(tmpv); break; - case 0x55: tmpv = ptr2_read(op); OP_ANDA(tmpv); break; - case 0x65: tmpv = ptr2_read(op); OP_ORA (tmpv); break; - case 0x75: tmpv = ptr2_read(op); OP_EORA(tmpv); break; - - /* OP a, ri */ - case 0x19: tmpv = rIJ[IJind]; OP_SUBA(tmpv); break; - case 0x39: tmpv = rIJ[IJind]; OP_CMPA(tmpv); break; - case 0x49: tmpv = rIJ[IJind]; OP_ADDA(tmpv); break; - case 0x59: tmpv = rIJ[IJind]; OP_ANDA(tmpv); break; - case 0x69: tmpv = rIJ[IJind]; OP_ORA (tmpv); break; - case 0x79: tmpv = rIJ[IJind]; OP_EORA(tmpv); break; - - /* OP simm */ - case 0x1c: - OP_SUBA(op & 0xff); -#ifdef LOG_SVP - if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); -#endif - break; - case 0x3c: - OP_CMPA(op & 0xff); -#ifdef LOG_SVP - if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); -#endif - break; - case 0x4c: - OP_ADDA(op & 0xff); -#ifdef LOG_SVP - if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); -#endif - break; - /* MAME code only does LSB of top word, but this looks wrong to me. */ - case 0x5c: - OP_ANDA(op & 0xff); -#ifdef LOG_SVP - if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); -#endif - break; - case 0x6c: - OP_ORA (op & 0xff); -#ifdef LOG_SVP - if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); -#endif - break; - case 0x7c: - OP_EORA(op & 0xff); -#ifdef LOG_SVP - if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); -#endif - break; - - default: -#ifdef LOG_SVP - elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME unhandled op %04x @ %04x", op, GET_PPC_OFFS()); -#endif - break; - } - } - while (--g_cycles > 0 && !(ssp->emu_status & SSP_WAIT_MASK)); - - read_P(); /* update P */ - rPC = GET_PC(); - -#ifdef LOG_SVP - if (ssp->gr[SSP_GR0].v != 0xffff0000) - elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: REG 0 corruption! %08x", ssp->gr[SSP_GR0].v); -#endif -} - +/* + basic, incomplete SSP160x (SSP1601?) interpreter + with SVP memory controller emu + + (c) Copyright 2008, Grazvydas "notaz" Ignotas + Free for non-commercial use. + + For commercial use, separate licencing terms must be obtained. + + Modified for Genesis Plus GX (Eke-Eke), added big endian support, fixed mode & addr +*/ + + +/* + * Register info + * + * 0. "-" + * size: 16 + * desc: Constant register with all bits set (0xffff). + * + * 1. "X" + * size: 16 + * desc: Generic register. When set, updates P (P = X * Y * 2) + * + * 2. "Y" + * size: 16 + * desc: Generic register. When set, updates P (P = X * Y * 2) + * + * 3. "A" + * size: 32 + * desc: Accumulator. + * + * 4. "ST" + * size: 16 + * desc: Status register. From MAME: bits 0-9 are CONTROL, other FLAG + * fedc ba98 7654 3210 + * 210 - RPL (?) "Loop size". If non-zero, makes (rX+) and (rX-) respectively + * modulo-increment and modulo-decrement. The value shows which + * power of 2 to use, i.e. 4 means modulo by 16. + * (e: fir16_32.sc, IIR_4B.SC, DECIM.SC) + * 43 - RB (?) + * 5 - GP0_0 (ST5?) Changed before acessing PM0 (affects banking?). + * 6 - GP0_1 (ST6?) Cleared before acessing PM0 (affects banking?). Set after. + * datasheet says these (5,6) bits correspond to hardware pins. + * 7 - IE (?) Not directly used by SVP code (never set, but preserved)? + * 8 - OP (?) Not used by SVP code (only cleared)? (MAME: saturated value + * (probably means clamping? i.e. 0x7ffc + 9 -> 0x7fff)) + * 9 - MACS (?) Not used by SVP code (only cleared)? (e: "mac shift") + * a - GPI_0 Interrupt 0 enable/status? + * b - GPI_1 Interrupt 1 enable/status? + * c - L L flag. Carry? + * d - Z Zero flag. + * e - OV Overflow flag. + * f - N Negative flag. + * seen directly changing code sequences: + * ldi ST, 0 ld A, ST ld A, ST ld A, ST ldi st, 20h + * ldi ST, 60h ori A, 60h and A, E8h and A, E8h + * ld ST, A ld ST, A ori 3 + * ld ST, A + * + * 5. "STACK" + * size: 16 + * desc: hw stack of 6 levels (according to datasheet) + * + * 6. "PC" + * size: 16 + * desc: Program counter. + * + * 7. "P" + * size: 32 + * desc: multiply result register. P = X * Y * 2 + * probably affected by MACS bit in ST. + * + * 8. "PM0" (PM from PMAR name from Tasco's docs) + * size: 16? + * desc: Programmable Memory access register. + * On reset, or when one (both?) GP0 bits are clear, + * acts as status for XST, mapped at 015004 at 68k side: + * bit0: ssp has written something to XST (cleared when 015004 is read) + * bit1: 68k has written something through a1500{0|2} (cleared on PM0 read) + * + * 9. "PM1" + * size: 16? + * desc: Programmable Memory access register. + * This reg. is only used as PMAR. + * + * 10. "PM2" + * size: 16? + * desc: Programmable Memory access register. + * This reg. is only used as PMAR. + * + * 11. "XST" + * size: 16? + * desc: eXternal STate. Mapped to a15000 and a15002 at 68k side. + * Can be programmed as PMAR? (only seen in test mode code) + * Affects PM0 when written to? + * + * 12. "PM4" + * size: 16? + * desc: Programmable Memory access register. + * This reg. is only used as PMAR. The most used PMAR by VR. + * + * 13. (unused by VR) + * + * 14. "PMC" (PMC from PMAC name from Tasco's docs) + * size: 32? + * desc: Programmable Memory access Control. Set using 2 16bit writes, + * first address, then mode word. After setting PMAC, PMAR sould + * be blind accessed (ld -, PMx or ld PMx, -) to program it for + * reading and writing respectively. + * Reading the register also shifts it's state (from "waiting for + * address" to "waiting for mode" and back). Reads always return + * address related to last PMx register accressed. + * (note: addresses do not wrap). + * + * 15. "AL" + * size: 16 + * desc: Accumulator Low. 16 least significant bits of accumulator. + * (normally reading acc (ld X, A) you get 16 most significant bits). + * + * + * There are 8 8-bit pointer registers rX. r0-r3 (ri) point to RAM0, r4-r7 (rj) point to RAM1. + * They can be accessed directly, or 2 indirection levels can be used [ (rX), ((rX)) ], + * which work similar to * and ** operators in C, only they use different memory banks and + * ((rX)) also does post-increment. First indirection level (rX) accesses RAMx, second accesses + * program memory at address read from (rX), and increments value in (rX). + * + * r0,r1,r2,r4,r5,r6 can be modified [ex: ldi r0, 5]. + * 3 modifiers can be applied (optional): + * + : post-increment [ex: ld a, (r0+) ]. Can be made modulo-increment by setting RPL bits in ST. + * - : post-decrement. Can be made modulo-decrement by setting RPL bits in ST (not sure). + * +!: post-increment, unaffected by RPL (probably). + * These are only used on 1st indirection level, so things like [ld a, ((r0+))] and [ld X, r6-] + * ar probably invalid. + * + * r3 and r7 are special and can not be changed (at least Samsung samples and SVP code never do). + * They are fixed to the start of their RAM banks. (They are probably changeable for ssp1605+, + * Samsung's old DSP page claims that). + * 1 of these 4 modifiers must be used (short form direct addressing?): + * |00: RAMx[0] [ex: (r3|00), 0] (based on sample code) + * |01: RAMx[1] + * |10: RAMx[2] ? maybe 10h? accortding to Div_c_dp.sc, 2 + * |11: RAMx[3] + * + * + * Instruction notes + * + * ld a, * doesn't affect flags! (e: A_LAW.SC, Div_c_dp.sc) + * + * mld (rj), (ri) [, b] + * operation: A = 0; P = (rj) * (ri) + * notes: based on IIR_4B.SC sample. flags? what is b??? + * + * mpya (rj), (ri) [, b] + * name: multiply and add? + * operation: A += P; P = (rj) * (ri) + * + * mpys (rj), (ri), b + * name: multiply and subtract? + * notes: not used by VR code. + * + * mod cond, op + * mod cond, shr does arithmetic shift + * + * 'ld -, AL' and probably 'ld AL, -' are for dummy assigns + * + * memory map: + * 000000 - 1fffff ROM, accessable by both + * 200000 - 2fffff unused? + * 300000 - 31ffff DRAM, both + * 320000 - 38ffff unused? + * 390000 - 3907ff IRAM. can only be accessed by ssp? + * 390000 - 39ffff similar mapping to "cell arrange" in Sega CD, 68k only? + * 3a0000 - 3affff similar mapping to "cell arrange" in Sega CD, a bit different + * + * 30fe02 - 0 if SVP busy, 1 if done (set by SVP, checked and cleared by 68k) + * 30fe06 - also sync related. + * 30fe08 - job number [1-12] for SVP. 0 means no job. Set by 68k, read-cleared by SVP. + * + * + figure out if 'op A, P' is 32bit (nearly sure it is) + * * does mld, mpya load their operands into X and Y? + * * OP simm + * + * Assumptions in this code + * P is not directly writeable + * flags correspond to full 32bit accumulator + * only Z and N status flags are emulated (others unused by SVP) + * modifiers for 'OP a, ri' are ignored (invalid?/not used by SVP) + * 'ld d, (a)' loads from program ROM + */ + +#include "shared.h" + + +#define u32 unsigned int + +/*#define USE_DEBUGGER*/ + +/* 0 */ +#define rX ssp->gr[SSP_X].byte.h +#define rY ssp->gr[SSP_Y].byte.h +#define rA ssp->gr[SSP_A].byte.h +#define rST ssp->gr[SSP_ST].byte.h /* 4 */ +#define rSTACK ssp->gr[SSP_STACK].byte.h +#define rPC ssp->gr[SSP_PC].byte.h +#define rP ssp->gr[SSP_P] +#define rPM0 ssp->gr[SSP_PM0].byte.h /* 8 */ +#define rPM1 ssp->gr[SSP_PM1].byte.h +#define rPM2 ssp->gr[SSP_PM2].byte.h +#define rXST ssp->gr[SSP_XST].byte.h +#define rPM4 ssp->gr[SSP_PM4].byte.h /* 12 */ +/* 13 */ +#define rPMC ssp->gr[SSP_PMC] /* will keep addr in .h, mode in .l */ +#define rAL ssp->gr[SSP_A].byte.l + +#define rA32 ssp->gr[SSP_A].v +#define rIJ ssp->ptr.r + +#define IJind (((op>>6)&4)|(op&3)) + +#define GET_PC() (PC - (unsigned short *)svp->iram_rom) +#define GET_PPC_OFFS() ((unsigned char *)PC - svp->iram_rom - 2) +#define SET_PC(d) PC = (unsigned short *)svp->iram_rom + d + +#define REG_READ(r) (((r) <= 4) ? ssp->gr[r].byte.h : read_handlers[r]()) +#define REG_WRITE(r,d) { \ + int r1 = r; \ + if (r1 >= 4) write_handlers[r1](d); \ + else if (r1 > 0) ssp->gr[r1].byte.h = d; \ +} + +/* flags */ +#define SSP_FLAG_L (1<<0xc) +#define SSP_FLAG_Z (1<<0xd) +#define SSP_FLAG_V (1<<0xe) +#define SSP_FLAG_N (1<<0xf) + +/* update ZN according to 32bit ACC. */ +#define UPD_ACC_ZN \ + rST &= ~(SSP_FLAG_Z|SSP_FLAG_N); \ + if (!rA32) rST |= SSP_FLAG_Z; \ + else rST |= (rA32>>16)&SSP_FLAG_N; + +/* it seems SVP code never checks for L and OV, so we leave them out. */ +/* rST |= (t>>4)&SSP_FLAG_L; */ +#define UPD_LZVN \ + rST &= ~(SSP_FLAG_L|SSP_FLAG_Z|SSP_FLAG_V|SSP_FLAG_N); \ + if (!rA32) rST |= SSP_FLAG_Z; \ + else rST |= (rA32>>16)&SSP_FLAG_N; + +/* standard cond processing. */ +/* again, only Z and N is checked, as SVP doesn't seem to use any other conds. */ +#define COND_CHECK \ + switch (op&0xf0) { \ + case 0x00: cond = 1; break; /* always true */ \ + case 0x50: cond = !((rST ^ (op<<5)) & SSP_FLAG_Z); break; /* Z matches f(?) bit */ \ + case 0x70: cond = !((rST ^ (op<<7)) & SSP_FLAG_N); break; /* N matches f(?) bit */ \ + default: break; \ + } + +/* ops with accumulator. */ +/* how is low word really affected by these? */ +/* nearly sure 'ld A' doesn't affect flags */ +#define OP_LDA(x) \ + rA = x + +#define OP_LDA32(x) \ + rA32 = x + +#define OP_SUBA(x) { \ + rA32 -= (x) << 16; \ + UPD_LZVN \ +} + +#define OP_SUBA32(x) { \ + rA32 -= (x); \ + UPD_LZVN \ +} + +#define OP_CMPA(x) { \ + u32 t = rA32 - ((x) << 16); \ + rST &= ~(SSP_FLAG_L|SSP_FLAG_Z|SSP_FLAG_V|SSP_FLAG_N); \ + if (!t) rST |= SSP_FLAG_Z; \ + else rST |= (t>>16)&SSP_FLAG_N; \ +} + +#define OP_CMPA32(x) { \ + u32 t = rA32 - (x); \ + rST &= ~(SSP_FLAG_L|SSP_FLAG_Z|SSP_FLAG_V|SSP_FLAG_N); \ + if (!t) rST |= SSP_FLAG_Z; \ + else rST |= (t>>16)&SSP_FLAG_N; \ +} + +#define OP_ADDA(x) { \ + rA32 += (x) << 16; \ + UPD_LZVN \ +} + +#define OP_ADDA32(x) { \ + rA32 += (x); \ + UPD_LZVN \ +} + +#define OP_ANDA(x) \ + rA32 &= (x) << 16; \ + UPD_ACC_ZN + +#define OP_ANDA32(x) \ + rA32 &= (x); \ + UPD_ACC_ZN + +#define OP_ORA(x) \ + rA32 |= (x) << 16; \ + UPD_ACC_ZN + +#define OP_ORA32(x) \ + rA32 |= (x); \ + UPD_ACC_ZN + +#define OP_EORA(x) \ + rA32 ^= (x) << 16; \ + UPD_ACC_ZN + +#define OP_EORA32(x) \ + rA32 ^= (x); \ + UPD_ACC_ZN + + +#define OP_CHECK32(OP) { \ + if ((op & 0x0f) == SSP_P) { /* A <- P */ \ + read_P(); /* update P */ \ + OP(rP.v); \ + break; \ + } \ + if ((op & 0x0f) == SSP_A) { /* A <- A */ \ + OP(rA32); \ + break; \ + } \ +} + + +static ssp1601_t *ssp = NULL; +static unsigned short *PC; +static int g_cycles; + +#ifdef USE_DEBUGGER +static int running = 0; +static int last_iram = 0; +#endif + +/* ----------------------------------------------------- */ +/* register i/o handlers */ + +/* 0-4, 13 */ +static u32 read_unknown(void) +{ +#ifdef LOG_SVP + elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: unknown read @ %04x", GET_PPC_OFFS()); +#endif + return 0; +} + +static void write_unknown(u32 d) +{ +#ifdef LOG_SVP + elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: unknown write @ %04x", GET_PPC_OFFS()); +#endif +} + +/* 4 */ +static void write_ST(u32 d) +{ + /* if ((rST ^ d) & 0x0007) elprintf(EL_SVP, "ssp RPL %i -> %i @ %04x", rST&7, d&7, GET_PPC_OFFS()); */ +#ifdef LOG_SVP + if ((rST ^ d) & 0x0f98) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME ST %04x -> %04x @ %04x", rST, d, GET_PPC_OFFS()); +#endif + rST = d; +} + +/* 5 */ +static u32 read_STACK(void) +{ + --rSTACK; + if ((short)rSTACK < 0) { + rSTACK = 5; +#ifdef LOG_SVP + elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: stack underflow! (%i) @ %04x", rSTACK, GET_PPC_OFFS()); +#endif + } + return ssp->stack[rSTACK]; +} + +static void write_STACK(u32 d) +{ + if (rSTACK >= 6) { +#ifdef LOG_SVP + elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: stack overflow! (%i) @ %04x", rSTACK, GET_PPC_OFFS()); +#endif + rSTACK = 0; + } + ssp->stack[rSTACK++] = d; +} + +/* 6 */ +static u32 read_PC(void) +{ + /* g_cycles--; */ + return GET_PC(); +} + +static void write_PC(u32 d) +{ + SET_PC(d); + g_cycles--; +} + +/* 7 */ +static u32 read_P(void) +{ + int m1 = (signed short)rX; + int m2 = (signed short)rY; + rP.v = (m1 * m2 * 2); + return rP.byte.h; +} + +/* ----------------------------------------------------- */ + +static int get_inc(int mode) +{ + int inc = (mode >> 11) & 7; + if (inc != 0) { + if (inc != 7) inc--; + /* inc = (1<<16) << inc; */ + inc = 1 << inc; /* 0 1 2 4 8 16 32 128 */ + if (mode & 0x8000) inc = -inc; /* decrement mode */ + } + return inc; +} + +#define overwite_write(dst, d) \ +{ \ + if (d & 0xf000) { dst &= ~0xf000; dst |= d & 0xf000; } \ + if (d & 0x0f00) { dst &= ~0x0f00; dst |= d & 0x0f00; } \ + if (d & 0x00f0) { dst &= ~0x00f0; dst |= d & 0x00f0; } \ + if (d & 0x000f) { dst &= ~0x000f; dst |= d & 0x000f; } \ +} + +static u32 pm_io(int reg, int write, u32 d) +{ + if (ssp->emu_status & SSP_PMC_SET) + { + /* this MUST be blind r or w */ + if ((*(PC-1) & 0xff0f) && (*(PC-1) & 0xfff0)) { +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: tried to set PM%i (%c) with non-blind i/o %08x @ %04x", + reg, write ? 'w' : 'r', rPMC.v, GET_PPC_OFFS()); +#endif + ssp->emu_status &= ~SSP_PMC_SET; + return 0; + } +#ifdef LOG_SVP + elprintf(EL_SVP, "PM%i (%c) set to %08x @ %04x", reg, write ? 'w' : 'r', rPMC.v, GET_PPC_OFFS()); +#endif + ssp->pmac[write][reg] = rPMC.v; + ssp->emu_status &= ~SSP_PMC_SET; +#ifdef LOG_SVP + if ((rPMC.v & 0x7f) == 0x1c && (rPMC.v & 0x7fff0000) == 0) { + elprintf(EL_SVP, "ssp IRAM copy from %06x", (ssp->mem.bank.RAM1[0]-1)<<1); +#ifdef USE_DEBUGGER + last_iram = (ssp->mem.bank.RAM1[0]-1)<<1; +#endif + } +#endif + return 0; + } + + /* just in case */ + if (ssp->emu_status & SSP_PMC_HAVE_ADDR) { +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: PM%i (%c) with only addr set @ %04x", + reg, write ? 'w' : 'r', GET_PPC_OFFS()); +#endif + ssp->emu_status &= ~SSP_PMC_HAVE_ADDR; + } + + if (reg == 4 || (rST & 0x60)) + { +#ifdef LOG_SVP + #define CADDR ((((mode<<16)&0x7f0000)|addr)<<1) +#endif + unsigned short *dram = (unsigned short *)svp->dram; + if (write) + { + /*int mode = ssp->pmac_write[reg]&0xffff; + int addr = ssp->pmac_write[reg]>>16;*/ + int addr = ssp->pmac[1][reg]&0xffff; + int mode = ssp->pmac[1][reg]>>16; +#ifdef LOG_SVP + if ((mode & 0xb800) == 0xb800) + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: mode %04x", mode); +#endif + if ((mode & 0x43ff) == 0x0018) /* DRAM */ + { + int inc = get_inc(mode); +#ifdef LOG_SVP + elprintf(EL_SVP, "ssp PM%i DRAM w [%06x] %04x (inc %i, ovrw %i)", + reg, CADDR, d, inc >> 16, (mode>>10)&1); +#endif + if (mode & 0x0400) { + overwite_write(dram[addr], d); + } else dram[addr] = d; + ssp->pmac[1][reg] += inc; + } + else if ((mode & 0xfbff) == 0x4018) /* DRAM, cell inc */ + { +#ifdef LOG_SVP + elprintf(EL_SVP, "ssp PM%i DRAM w [%06x] %04x (cell inc, ovrw %i) @ %04x", + reg, CADDR, d, (mode>>10)&1, GET_PPC_OFFS()); +#endif + if (mode & 0x0400) { + overwite_write(dram[addr], d); + } else dram[addr] = d; + /* ssp->pmac_write[reg] += (addr&1) ? (31<<16) : (1<<16); */ + ssp->pmac[1][reg] += (addr&1) ? 31 : 1; + } + else if ((mode & 0x47ff) == 0x001c) /* IRAM */ + { + int inc = get_inc(mode); +#ifdef LOG_SVP + if ((addr&0xfc00) != 0x8000) + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: invalid IRAM addr: %04x", addr<<1); + elprintf(EL_SVP, "ssp IRAM w [%06x] %04x (inc %i)", (addr<<1)&0x7ff, d, inc >> 16); +#endif + ((unsigned short *)svp->iram_rom)[addr&0x3ff] = d; + ssp->pmac[1][reg] += inc; + } +#ifdef LOG_SVP + else + { + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: PM%i unhandled write mode %04x, [%06x] %04x @ %04x", + reg, mode, CADDR, d, GET_PPC_OFFS()); + } +#endif + } + else + { + /*int mode = ssp->pmac_read[reg]&0xffff; + int addr = ssp->pmac_read[reg]>>16;*/ + int addr = ssp->pmac[0][reg]&0xffff; + int mode = ssp->pmac[0][reg]>>16; + + if ((mode & 0xfff0) == 0x0800) /* ROM, inc 1, verified to be correct */ + { +#ifdef LOG_SVP + elprintf(EL_SVP, "ssp ROM r [%06x] %04x", CADDR, + ((unsigned short *)cart.rom)[addr|((mode&0xf)<<16)]); +#endif + ssp->pmac[0][reg] ++; + + d = ((unsigned short *)cart.rom)[addr|((mode&0xf)<<16)]; + } + else if ((mode & 0x47ff) == 0x0018) /* DRAM */ + { + int inc = get_inc(mode); +#ifdef LOG_SVP + elprintf(EL_SVP, "ssp PM%i DRAM r [%06x] %04x (inc %i)", reg, CADDR, dram[addr], inc >> 16); +#endif + d = dram[addr]; + ssp->pmac[0][reg] += inc; + } + else + { +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: PM%i unhandled read mode %04x, [%06x] @ %04x", + reg, mode, CADDR, GET_PPC_OFFS()); +#endif + d = 0; + } + } + + /* PMC value corresponds to last PMR accessed (not sure). */ + rPMC.v = ssp->pmac[write][reg]; + + return d; + } + + return (u32)-1; +} + +/* 8 */ +static u32 read_PM0(void) +{ + u32 d = pm_io(0, 0, 0); + if (d != (u32)-1) return d; +#ifdef LOG_SVP + elprintf(EL_SVP, "PM0 raw r %04x @ %04x", rPM0, GET_PPC_OFFS()); +#endif + d = rPM0; + if (!(d & 2) && (GET_PPC_OFFS() == 0x800 || GET_PPC_OFFS() == 0x1851E)) { + ssp->emu_status |= SSP_WAIT_PM0; +#ifdef LOG_SVP + elprintf(EL_SVP, "det TIGHT loop: PM0"); +#endif + } + rPM0 &= ~2; /* ? */ + return d; +} + +static void write_PM0(u32 d) +{ + u32 r = pm_io(0, 1, d); + if (r != (u32)-1) return; +#ifdef LOG_SVP + elprintf(EL_SVP, "PM0 raw w %04x @ %04x", d, GET_PPC_OFFS()); +#endif + rPM0 = d; +} + +/* 9 */ +static u32 read_PM1(void) +{ + u32 d = pm_io(1, 0, 0); + if (d != (u32)-1) return d; + /* can be removed? */ +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "PM1 raw r %04x @ %04x", rPM1, GET_PPC_OFFS()); +#endif + return rPM1; +} + +static void write_PM1(u32 d) +{ + u32 r = pm_io(1, 1, d); + if (r != (u32)-1) return; + /* can be removed? */ +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "PM1 raw w %04x @ %04x", d, GET_PPC_OFFS()); +#endif + rPM1 = d; +} + +/* 10 */ +static u32 read_PM2(void) +{ + u32 d = pm_io(2, 0, 0); + if (d != (u32)-1) return d; + /* can be removed? */ +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "PM2 raw r %04x @ %04x", rPM2, GET_PPC_OFFS()); +#endif + return rPM2; +} + +static void write_PM2(u32 d) +{ + u32 r = pm_io(2, 1, d); + if (r != (u32)-1) return; + /* can be removed? */ +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "PM2 raw w %04x @ %04x", d, GET_PPC_OFFS()); +#endif + rPM2 = d; +} + +/* 11 */ +static u32 read_XST(void) +{ + /* can be removed? */ + u32 d = pm_io(3, 0, 0); + if (d != (u32)-1) return d; +#ifdef LOG_SVP + elprintf(EL_SVP, "XST raw r %04x @ %04x", rXST, GET_PPC_OFFS()); +#endif + return rXST; +} + +static void write_XST(u32 d) +{ + /* can be removed? */ + u32 r = pm_io(3, 1, d); + if (r != (u32)-1) return; +#ifdef LOG_SVP + elprintf(EL_SVP, "XST raw w %04x @ %04x", d, GET_PPC_OFFS()); +#endif + rPM0 |= 1; + rXST = d; +} + +/* 12 */ +static u32 read_PM4(void) +{ + u32 d = pm_io(4, 0, 0); + if (d == 0) { + switch (GET_PPC_OFFS()) { + case 0x0854: + ssp->emu_status |= SSP_WAIT_30FE08; +#ifdef LOG_SVP + elprintf(EL_SVP, "det TIGHT loop: [30fe08]"); +#endif + break; + case 0x4f12: + ssp->emu_status |= SSP_WAIT_30FE06; +#ifdef LOG_SVP + elprintf(EL_SVP, "det TIGHT loop: [30fe06]"); +#endif + break; + } + } + if (d != (u32)-1) return d; + /* can be removed? */ +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "PM4 raw r %04x @ %04x", rPM4, GET_PPC_OFFS()); +#endif + return rPM4; +} + +static void write_PM4(u32 d) +{ + u32 r = pm_io(4, 1, d); + if (r != (u32)-1) return; + /* can be removed? */ +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "PM4 raw w %04x @ %04x", d, GET_PPC_OFFS()); +#endif + rPM4 = d; +} + +/* 14 */ +static u32 read_PMC(void) +{ +#ifdef LOG_SVP + elprintf(EL_SVP, "PMC r a %04x (st %c) @ %04x", rPMC.byte.h, + (ssp->emu_status & SSP_PMC_HAVE_ADDR) ? 'm' : 'a', GET_PPC_OFFS()); +#endif + if (ssp->emu_status & SSP_PMC_HAVE_ADDR) { + /* if (ssp->emu_status & SSP_PMC_SET) */ + /* elprintf(EL_ANOMALY|EL_SVP, "prev PMC not used @ %04x", GET_PPC_OFFS()); */ + ssp->emu_status |= SSP_PMC_SET; + ssp->emu_status &= ~SSP_PMC_HAVE_ADDR; + /* return ((rPMC.h << 4) & 0xfff0) | ((rPMC.h >> 4) & 0xf); */ + return ((rPMC.byte.l << 4) & 0xfff0) | ((rPMC.byte.l >> 4) & 0xf); + } else { + ssp->emu_status |= SSP_PMC_HAVE_ADDR; + /* return rPMC.h; */ + return rPMC.byte.l; + } +} + +static void write_PMC(u32 d) +{ + if (ssp->emu_status & SSP_PMC_HAVE_ADDR) { + /* if (ssp->emu_status & SSP_PMC_SET) */ + /* elprintf(EL_ANOMALY|EL_SVP, "prev PMC not used @ %04x", GET_PPC_OFFS()); */ + ssp->emu_status |= SSP_PMC_SET; + ssp->emu_status &= ~SSP_PMC_HAVE_ADDR; + /* rPMC.l = d; */ + rPMC.byte.h = d; +#ifdef LOG_SVP + elprintf(EL_SVP, "PMC w m %04x @ %04x", rPMC.byte.l, GET_PPC_OFFS()); +#endif + } else { + ssp->emu_status |= SSP_PMC_HAVE_ADDR; + /* rPMC.h = d; */ + rPMC.byte.l = d; +#ifdef LOG_SVP + elprintf(EL_SVP, "PMC w a %04x @ %04x", rPMC.byte.h, GET_PPC_OFFS()); +#endif + } +} + +/* 15 */ +static u32 read_AL(void) +{ + if (*(PC-1) == 0x000f) { +#ifdef LOG_SVP + elprintf(EL_SVP, "ssp dummy PM assign %08x @ %04x", rPMC.v, GET_PPC_OFFS()); +#endif + ssp->emu_status &= ~(SSP_PMC_SET|SSP_PMC_HAVE_ADDR); /* ? */ + } + return rAL; +} + +static void write_AL(u32 d) +{ + rAL = d; +} + + +typedef u32 (*read_func_t)(void); +typedef void (*write_func_t)(u32 d); + +static read_func_t read_handlers[16] = +{ + read_unknown, read_unknown, read_unknown, read_unknown, /* -, X, Y, A */ + read_unknown, /* 4 ST */ + read_STACK, + read_PC, + read_P, + read_PM0, /* 8 */ + read_PM1, + read_PM2, + read_XST, + read_PM4, /* 12 */ + read_unknown, /* 13 gr13 */ + read_PMC, + read_AL +}; + +static write_func_t write_handlers[16] = +{ + write_unknown, write_unknown, write_unknown, write_unknown, /* -, X, Y, A */ +/* write_unknown, */ /* 4 ST */ + write_ST, /* 4 ST (debug hook) */ + write_STACK, + write_PC, + write_unknown, /* 7 P */ + write_PM0, /* 8 */ + write_PM1, + write_PM2, + write_XST, + write_PM4, /* 12 */ + write_unknown, /* 13 gr13 */ + write_PMC, + write_AL +}; + +/* ----------------------------------------------------- */ +/* pointer register handlers */ + +#define ptr1_read(op) ptr1_read_(op&3,(op>>6)&4,(op<<1)&0x18) + +static u32 ptr1_read_(int ri, int isj2, int modi3) +{ + /* int t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18); */ + u32 mask, add = 0, t = ri | isj2 | modi3; + unsigned char *rp = NULL; + switch (t) + { + /* mod=0 (00) */ + case 0x00: + case 0x01: + case 0x02: return ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]]; + case 0x03: return ssp->mem.bank.RAM0[0]; + case 0x04: + case 0x05: + case 0x06: return ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]]; + case 0x07: return ssp->mem.bank.RAM1[0]; + /* mod=1 (01), "+!" */ + case 0x08: + case 0x09: + case 0x0a: return ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]++]; + case 0x0b: return ssp->mem.bank.RAM0[1]; + case 0x0c: + case 0x0d: + case 0x0e: return ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]++]; + case 0x0f: return ssp->mem.bank.RAM1[1]; + /* mod=2 (10), "-" */ + case 0x10: + case 0x11: + case 0x12: rp = &ssp->ptr.bank.r0[t&3]; t = ssp->mem.bank.RAM0[*rp]; + if (!(rST&7)) { (*rp)--; return t; } + add = -1; goto modulo; + case 0x13: return ssp->mem.bank.RAM0[2]; + case 0x14: + case 0x15: + case 0x16: rp = &ssp->ptr.bank.r1[t&3]; t = ssp->mem.bank.RAM1[*rp]; + if (!(rST&7)) { (*rp)--; return t; } + add = -1; goto modulo; + case 0x17: return ssp->mem.bank.RAM1[2]; + /* mod=3 (11), "+" */ + case 0x18: + case 0x19: + case 0x1a: rp = &ssp->ptr.bank.r0[t&3]; t = ssp->mem.bank.RAM0[*rp]; + if (!(rST&7)) { (*rp)++; return t; } + add = 1; goto modulo; + case 0x1b: return ssp->mem.bank.RAM0[3]; + case 0x1c: + case 0x1d: + case 0x1e: rp = &ssp->ptr.bank.r1[t&3]; t = ssp->mem.bank.RAM1[*rp]; + if (!(rST&7)) { (*rp)++; return t; } + add = 1; goto modulo; + case 0x1f: return ssp->mem.bank.RAM1[3]; + } + + return 0; + +modulo: + mask = (1 << (rST&7)) - 1; + *rp = (*rp & ~mask) | ((*rp + add) & mask); + return t; +} + +static void ptr1_write(int op, u32 d) +{ + int t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18); + switch (t) + { + /* mod=0 (00) */ + case 0x00: + case 0x01: + case 0x02: ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]] = d; return; + case 0x03: ssp->mem.bank.RAM0[0] = d; return; + case 0x04: + case 0x05: + case 0x06: ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]] = d; return; + case 0x07: ssp->mem.bank.RAM1[0] = d; return; + /* mod=1 (01), "+!" */ + /* mod=3, "+" */ + case 0x08: + case 0x18: + case 0x09: + case 0x19: + case 0x0a: + case 0x1a: ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]++] = d; return; + case 0x0b: ssp->mem.bank.RAM0[1] = d; return; + case 0x0c: + case 0x1c: + case 0x0d: + case 0x1d: + case 0x0e: + case 0x1e: ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]++] = d; return; + case 0x0f: ssp->mem.bank.RAM1[1] = d; return; + /* mod=2 (10), "-" */ + case 0x10: + case 0x11: + case 0x12: ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]--] = d; return; + case 0x13: ssp->mem.bank.RAM0[2] = d; return; + case 0x14: + case 0x15: + case 0x16: ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]--] = d; return; + case 0x17: ssp->mem.bank.RAM1[2] = d; return; + /* mod=3 (11) */ + case 0x1b: ssp->mem.bank.RAM0[3] = d; return; + case 0x1f: ssp->mem.bank.RAM1[3] = d; return; + } +} + +static u32 ptr2_read(int op) +{ + int mv = 0, t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18); + switch (t) + { + /* mod=0 (00) */ + case 0x00: + case 0x01: + case 0x02: mv = ssp->mem.bank.RAM0[ssp->ptr.bank.r0[t&3]]++; break; + case 0x03: mv = ssp->mem.bank.RAM0[0]++; break; + case 0x04: + case 0x05: + case 0x06: mv = ssp->mem.bank.RAM1[ssp->ptr.bank.r1[t&3]]++; break; + case 0x07: mv = ssp->mem.bank.RAM1[0]++; break; + /* mod=1 (01) */ + case 0x0b: mv = ssp->mem.bank.RAM0[1]++; break; + case 0x0f: mv = ssp->mem.bank.RAM1[1]++; break; + /* mod=2 (10) */ + case 0x13: mv = ssp->mem.bank.RAM0[2]++; break; + case 0x17: mv = ssp->mem.bank.RAM1[2]++; break; + /* mod=3 (11) */ + case 0x1b: mv = ssp->mem.bank.RAM0[3]++; break; + case 0x1f: mv = ssp->mem.bank.RAM1[3]++; break; + default: +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: invalid mod in ((rX))? @ %04x", GET_PPC_OFFS()); +#endif + return 0; + } + + return ((unsigned short *)svp->iram_rom)[mv]; +} + + +/* ----------------------------------------------------- */ + +void ssp1601_reset(ssp1601_t *l_ssp) +{ + ssp = l_ssp; + ssp->emu_status = 0; + ssp->gr[SSP_GR0].v = 0xffff0000; + rPC = 0x400; + rSTACK = 0; /* ? using ascending stack */ + rST = 0; +} + + +#ifdef USE_DEBUGGER +static void debug_dump(void) +{ + printf("GR0: %04x X: %04x Y: %04x A: %08x\n", ssp->gr[SSP_GR0].byte.h, rX, rY, ssp->gr[SSP_A].v); + printf("PC: %04x (%04x) P: %08x\n", GET_PC(), GET_PC() << 1, ssp->gr[SSP_P].v); + printf("PM0: %04x PM1: %04x PM2: %04x\n", rPM0, rPM1, rPM2); + printf("XST: %04x PM4: %04x PMC: %08x\n", rXST, rPM4, ssp->gr[SSP_PMC].v); + printf(" ST: %04x %c%c%c%c, GP0_0 %i, GP0_1 %i\n", rST, rST&SSP_FLAG_N?'N':'n', rST&SSP_FLAG_V?'V':'v', + rST&SSP_FLAG_Z?'Z':'z', rST&SSP_FLAG_L?'L':'l', (rST>>5)&1, (rST>>6)&1); + printf("STACK: %i %04x %04x %04x %04x %04x %04x\n", rSTACK, ssp->stack[0], ssp->stack[1], + ssp->stack[2], ssp->stack[3], ssp->stack[4], ssp->stack[5]); + printf("r0-r2: %02x %02x %02x r4-r6: %02x %02x %02x\n", rIJ[0], rIJ[1], rIJ[2], rIJ[4], rIJ[5], rIJ[6]); + elprintf(EL_SVP, "cycles: %i, emu_status: %x", g_cycles, ssp->emu_status); +} + +static void debug_dump_mem(void) +{ + int h, i; + printf("RAM0\n"); + for (h = 0; h < 32; h++) + { + if (h == 16) printf("RAM1\n"); + printf("%03x:", h*16); + for (i = 0; i < 16; i++) + printf(" %04x", ssp->mem.RAM[h*16+i]); + printf("\n"); + } +} + +static void debug_dump2file(const char *fname, void *mem, int len) +{ + FILE *f = fopen(fname, "wb"); + unsigned short *p = mem; + int i; + if (f) { + for (i = 0; i < len/2; i++) p[i] = (p[i]<<8) | (p[i]>>8); + fwrite(mem, 1, len, f); + fclose(f); + for (i = 0; i < len/2; i++) p[i] = (p[i]<<8) | (p[i]>>8); + printf("dumped to %s\n", fname); + } + else + printf("dump failed\n"); +} + +static int bpts[10] = { 0, }; + +static void debug(unsigned int pc, unsigned int op) +{ + static char buffo[64] = {0,}; + char buff[64] = {0,}; + int i; + + if (running) { + for (i = 0; i < 10; i++) + if (pc != 0 && bpts[i] == pc) { + printf("breakpoint %i\n", i); + running = 0; + break; + } + } + if (running) return; + + printf("%04x (%02x) @ %04x\n", op, op >> 9, pc<<1); + + while (1) + { + printf("dbg> "); + fflush(stdout); + fgets(buff, sizeof(buff), stdin); + if (buff[0] == '\n') strcpy(buff, buffo); + else strcpy(buffo, buff); + + switch (buff[0]) { + case 0: exit(0); + case 'c': + case 'r': running = 1; return; + case 's': + case 'n': return; + case 'x': debug_dump(); break; + case 'm': debug_dump_mem(); break; + case 'b': { + char *baddr = buff + 2; + i = 0; + if (buff[3] == ' ') { i = buff[2] - '0'; baddr = buff + 4; } + bpts[i] = strtol(baddr, NULL, 16) >> 1; + printf("breakpoint %i set @ %04x\n", i, bpts[i]<<1); + break; + } + case 'd': + sprintf(buff, "iramrom_%04x.bin", last_iram); + debug_dump2file(buff, svp->iram_rom, sizeof(svp->iram_rom)); + debug_dump2file("dram.bin", svp->dram, sizeof(svp->dram)); + break; + default: printf("unknown command\n"); break; + } + } +} +#endif /* USE_DEBUGGER */ + + +void ssp1601_run(int cycles) +{ + SET_PC(rPC); + g_cycles = cycles; + + do + { + int op; + u32 tmpv; + + op = *PC++; +#ifdef USE_DEBUGGER + debug(GET_PC()-1, op); +#endif + switch (op >> 9) + { + /* ld d, s */ + case 0x00: + if (op == 0) break; /* nop */ + if (op == ((SSP_A<<4)|SSP_P)) { /* A <- P */ + /* not sure. MAME claims that only hi word is transfered. */ + read_P(); /* update P */ + rA32 = rP.v; + } + else + { + tmpv = REG_READ(op & 0x0f); + REG_WRITE((op & 0xf0) >> 4, tmpv); + } + break; + + /* ld d, (ri) */ + case 0x01: tmpv = ptr1_read(op); REG_WRITE((op & 0xf0) >> 4, tmpv); break; + + /* ld (ri), s */ + case 0x02: tmpv = REG_READ((op & 0xf0) >> 4); ptr1_write(op, tmpv); break; + + /* ldi d, imm */ + case 0x04: tmpv = *PC++; REG_WRITE((op & 0xf0) >> 4, tmpv); break; + + /* ld d, ((ri)) */ + case 0x05: tmpv = ptr2_read(op); REG_WRITE((op & 0xf0) >> 4, tmpv); break; + + /* ldi (ri), imm */ + case 0x06: tmpv = *PC++; ptr1_write(op, tmpv); break; + + /* ld adr, a */ + case 0x07: ssp->mem.RAM[op & 0x1ff] = rA; break; + + /* ld d, ri */ + case 0x09: tmpv = rIJ[(op&3)|((op>>6)&4)]; REG_WRITE((op & 0xf0) >> 4, tmpv); break; + + /* ld ri, s */ + case 0x0a: rIJ[(op&3)|((op>>6)&4)] = REG_READ((op & 0xf0) >> 4); break; + + /* ldi ri, simm */ + case 0x0c: + case 0x0d: + case 0x0e: + case 0x0f: rIJ[(op>>8)&7] = op; break; + + /* call cond, addr */ + case 0x24: { + int cond = 0; + COND_CHECK + if (cond) { int new_PC = *PC++; write_STACK(GET_PC()); write_PC(new_PC); } + else PC++; + break; + } + + /* ld d, (a) */ + case 0x25: tmpv = ((unsigned short *)svp->iram_rom)[rA]; REG_WRITE((op & 0xf0) >> 4, tmpv); break; + + /* bra cond, addr */ + case 0x26: { + int cond = 0; + COND_CHECK + if (cond) { int new_PC = *PC++; write_PC(new_PC); } + else PC++; + break; + } + + /* mod cond, op */ + case 0x48: { + int cond = 0; + COND_CHECK + if (cond) { + switch (op & 7) { + case 2: rA32 = (signed int)rA32 >> 1; break; /* shr (arithmetic) */ + case 3: rA32 <<= 1; break; /* shl */ + case 6: rA32 = -(signed int)rA32; break; /* neg */ + case 7: if ((int)rA32 < 0) rA32 = -(signed int)rA32; break; /* abs */ + default: +#ifdef LOG_SVP + elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: unhandled mod %i @ %04x", + op&7, GET_PPC_OFFS()); +#endif + break; + } + UPD_ACC_ZN /* ? */ + } + break; + } + + /* mpys? */ + case 0x1b: +#ifdef LOG_SVP + if (!(op&0x100)) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: no b bit @ %04x", GET_PPC_OFFS()); +#endif + read_P(); /* update P */ + rA32 -= rP.v; /* maybe only upper word? */ + UPD_ACC_ZN /* there checking flags after this */ + rX = ptr1_read_(op&3, 0, (op<<1)&0x18); /* ri (maybe rj?) */ + rY = ptr1_read_((op>>4)&3, 4, (op>>3)&0x18); /* rj */ + break; + + /* mpya (rj), (ri), b */ + case 0x4b: +#ifdef LOG_SVP + if (!(op&0x100)) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: no b bit @ %04x", GET_PPC_OFFS()); +#endif + read_P(); /* update P */ + rA32 += rP.v; /* confirmed to be 32bit */ + UPD_ACC_ZN /* ? */ + rX = ptr1_read_(op&3, 0, (op<<1)&0x18); /* ri (maybe rj?) */ + rY = ptr1_read_((op>>4)&3, 4, (op>>3)&0x18); /* rj */ + break; + + /* mld (rj), (ri), b */ + case 0x5b: +#ifdef LOG_SVP + if (!(op&0x100)) elprintf(EL_SVP|EL_ANOMALY, "ssp FIXME: no b bit @ %04x", GET_PPC_OFFS()); +#endif + rA32 = 0; + rST &= 0x0fff; /* ? */ + rX = ptr1_read_(op&3, 0, (op<<1)&0x18); /* ri (maybe rj?) */ + rY = ptr1_read_((op>>4)&3, 4, (op>>3)&0x18); /* rj */ + break; + + /* OP a, s */ + case 0x10: OP_CHECK32(OP_SUBA32); tmpv = REG_READ(op & 0x0f); OP_SUBA(tmpv); break; + case 0x30: OP_CHECK32(OP_CMPA32); tmpv = REG_READ(op & 0x0f); OP_CMPA(tmpv); break; + case 0x40: OP_CHECK32(OP_ADDA32); tmpv = REG_READ(op & 0x0f); OP_ADDA(tmpv); break; + case 0x50: OP_CHECK32(OP_ANDA32); tmpv = REG_READ(op & 0x0f); OP_ANDA(tmpv); break; + case 0x60: OP_CHECK32(OP_ORA32 ); tmpv = REG_READ(op & 0x0f); OP_ORA (tmpv); break; + case 0x70: OP_CHECK32(OP_EORA32); tmpv = REG_READ(op & 0x0f); OP_EORA(tmpv); break; + + /* OP a, (ri) */ + case 0x11: tmpv = ptr1_read(op); OP_SUBA(tmpv); break; + case 0x31: tmpv = ptr1_read(op); OP_CMPA(tmpv); break; + case 0x41: tmpv = ptr1_read(op); OP_ADDA(tmpv); break; + case 0x51: tmpv = ptr1_read(op); OP_ANDA(tmpv); break; + case 0x61: tmpv = ptr1_read(op); OP_ORA (tmpv); break; + case 0x71: tmpv = ptr1_read(op); OP_EORA(tmpv); break; + + /* OP a, adr */ + case 0x03: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_LDA (tmpv); break; + case 0x13: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_SUBA(tmpv); break; + case 0x33: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_CMPA(tmpv); break; + case 0x43: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_ADDA(tmpv); break; + case 0x53: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_ANDA(tmpv); break; + case 0x63: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_ORA (tmpv); break; + case 0x73: tmpv = ssp->mem.RAM[op & 0x1ff]; OP_EORA(tmpv); break; + + /* OP a, imm */ + case 0x14: tmpv = *PC++; OP_SUBA(tmpv); break; + case 0x34: tmpv = *PC++; OP_CMPA(tmpv); break; + case 0x44: tmpv = *PC++; OP_ADDA(tmpv); break; + case 0x54: tmpv = *PC++; OP_ANDA(tmpv); break; + case 0x64: tmpv = *PC++; OP_ORA (tmpv); break; + case 0x74: tmpv = *PC++; OP_EORA(tmpv); break; + + /* OP a, ((ri)) */ + case 0x15: tmpv = ptr2_read(op); OP_SUBA(tmpv); break; + case 0x35: tmpv = ptr2_read(op); OP_CMPA(tmpv); break; + case 0x45: tmpv = ptr2_read(op); OP_ADDA(tmpv); break; + case 0x55: tmpv = ptr2_read(op); OP_ANDA(tmpv); break; + case 0x65: tmpv = ptr2_read(op); OP_ORA (tmpv); break; + case 0x75: tmpv = ptr2_read(op); OP_EORA(tmpv); break; + + /* OP a, ri */ + case 0x19: tmpv = rIJ[IJind]; OP_SUBA(tmpv); break; + case 0x39: tmpv = rIJ[IJind]; OP_CMPA(tmpv); break; + case 0x49: tmpv = rIJ[IJind]; OP_ADDA(tmpv); break; + case 0x59: tmpv = rIJ[IJind]; OP_ANDA(tmpv); break; + case 0x69: tmpv = rIJ[IJind]; OP_ORA (tmpv); break; + case 0x79: tmpv = rIJ[IJind]; OP_EORA(tmpv); break; + + /* OP simm */ + case 0x1c: + OP_SUBA(op & 0xff); +#ifdef LOG_SVP + if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); +#endif + break; + case 0x3c: + OP_CMPA(op & 0xff); +#ifdef LOG_SVP + if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); +#endif + break; + case 0x4c: + OP_ADDA(op & 0xff); +#ifdef LOG_SVP + if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); +#endif + break; + /* MAME code only does LSB of top word, but this looks wrong to me. */ + case 0x5c: + OP_ANDA(op & 0xff); +#ifdef LOG_SVP + if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); +#endif + break; + case 0x6c: + OP_ORA (op & 0xff); +#ifdef LOG_SVP + if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); +#endif + break; + case 0x7c: + OP_EORA(op & 0xff); +#ifdef LOG_SVP + if (op&0x100) elprintf(EL_SVP|EL_ANOMALY, "FIXME: simm with upper bit set"); +#endif + break; + + default: +#ifdef LOG_SVP + elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME unhandled op %04x @ %04x", op, GET_PPC_OFFS()); +#endif + break; + } + } + while (--g_cycles > 0 && !(ssp->emu_status & SSP_WAIT_MASK)); + + read_P(); /* update P */ + rPC = GET_PC(); + +#ifdef LOG_SVP + if (ssp->gr[SSP_GR0].v != 0xffff0000) + elprintf(EL_ANOMALY|EL_SVP, "ssp FIXME: REG 0 corruption! %08x", ssp->gr[SSP_GR0].v); +#endif +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/ssp16.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/ssp16.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/ssp16.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/ssp16.h index 1717489df3..f0dec5b2fc 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/ssp16.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/ssp16.h @@ -1,79 +1,79 @@ -/* - basic, incomplete SSP160x (SSP1601?) interpreter - with SVP memory controller emu - - (c) Copyright 2008, Grazvydas "notaz" Ignotas - Free for non-commercial use. - - For commercial use, separate licencing terms must be obtained. - - Modified for Genesis Plus GX (Eke-Eke): added BIG ENDIAN support, fixed addr/code inversion -*/ - -#ifndef _SSP16_H_ -#define _SSP16_H_ - -/* emulation event logging (from Picodrive) */ -#ifdef LOG_SVP -#define EL_SVP 0x00004000 /* SVP stuff */ -#define EL_ANOMALY 0x80000000 /* some unexpected conditions (during emulation) */ -#define elprintf(w,f,...) error("%d(%d): " f "\n",frame_count,v_counter,##__VA_ARGS__); -#endif - -/* register names */ -enum { - SSP_GR0, SSP_X, SSP_Y, SSP_A, - SSP_ST, SSP_STACK, SSP_PC, SSP_P, - SSP_PM0, SSP_PM1, SSP_PM2, SSP_XST, - SSP_PM4, SSP_gr13, SSP_PMC, SSP_AL -}; - -typedef union -{ - unsigned int v; - struct { -#ifdef LSB_FIRST - unsigned short l; - unsigned short h; -#else - unsigned short h; - unsigned short l; -#endif - } byte; -} ssp_reg_t; - -typedef struct -{ - union { - unsigned short RAM[256*2]; /* 2 internal RAM banks */ - struct { - unsigned short RAM0[256]; - unsigned short RAM1[256]; - } bank; - } mem; - ssp_reg_t gr[16]; /* general registers */ - union { - unsigned char r[8]; /* BANK pointers */ - struct { - unsigned char r0[4]; - unsigned char r1[4]; - } bank; - } ptr; - unsigned short stack[6]; - unsigned int pmac[2][6]; /* read/write modes/addrs for PM0-PM5 */ - #define SSP_PMC_HAVE_ADDR 0x0001 /* address written to PMAC, waiting for mode */ - #define SSP_PMC_SET 0x0002 /* PMAC is set */ - #define SSP_HANG 0x1000 /* 68000 hangs SVP */ - #define SSP_WAIT_PM0 0x2000 /* bit1 in PM0 */ - #define SSP_WAIT_30FE06 0x4000 /* ssp tight loops on 30FE08 to become non-zero */ - #define SSP_WAIT_30FE08 0x8000 /* same for 30FE06 */ - #define SSP_WAIT_MASK 0xf000 - unsigned int emu_status; - unsigned int pad[30]; -} ssp1601_t; - - -void ssp1601_reset(ssp1601_t *ssp); -void ssp1601_run(int cycles); - -#endif +/* + basic, incomplete SSP160x (SSP1601?) interpreter + with SVP memory controller emu + + (c) Copyright 2008, Grazvydas "notaz" Ignotas + Free for non-commercial use. + + For commercial use, separate licencing terms must be obtained. + + Modified for Genesis Plus GX (Eke-Eke): added BIG ENDIAN support, fixed addr/code inversion +*/ + +#ifndef _SSP16_H_ +#define _SSP16_H_ + +/* emulation event logging (from Picodrive) */ +#ifdef LOG_SVP +#define EL_SVP 0x00004000 /* SVP stuff */ +#define EL_ANOMALY 0x80000000 /* some unexpected conditions (during emulation) */ +#define elprintf(w,f,...) error("%d(%d): " f "\n",frame_count,v_counter,##__VA_ARGS__); +#endif + +/* register names */ +enum { + SSP_GR0, SSP_X, SSP_Y, SSP_A, + SSP_ST, SSP_STACK, SSP_PC, SSP_P, + SSP_PM0, SSP_PM1, SSP_PM2, SSP_XST, + SSP_PM4, SSP_gr13, SSP_PMC, SSP_AL +}; + +typedef union +{ + unsigned int v; + struct { +#ifdef LSB_FIRST + unsigned short l; + unsigned short h; +#else + unsigned short h; + unsigned short l; +#endif + } byte; +} ssp_reg_t; + +typedef struct +{ + union { + unsigned short RAM[256*2]; /* 2 internal RAM banks */ + struct { + unsigned short RAM0[256]; + unsigned short RAM1[256]; + } bank; + } mem; + ssp_reg_t gr[16]; /* general registers */ + union { + unsigned char r[8]; /* BANK pointers */ + struct { + unsigned char r0[4]; + unsigned char r1[4]; + } bank; + } ptr; + unsigned short stack[6]; + unsigned int pmac[2][6]; /* read/write modes/addrs for PM0-PM5 */ + #define SSP_PMC_HAVE_ADDR 0x0001 /* address written to PMAC, waiting for mode */ + #define SSP_PMC_SET 0x0002 /* PMAC is set */ + #define SSP_HANG 0x1000 /* 68000 hangs SVP */ + #define SSP_WAIT_PM0 0x2000 /* bit1 in PM0 */ + #define SSP_WAIT_30FE06 0x4000 /* ssp tight loops on 30FE08 to become non-zero */ + #define SSP_WAIT_30FE08 0x8000 /* same for 30FE06 */ + #define SSP_WAIT_MASK 0xf000 + unsigned int emu_status; + unsigned int pad[30]; +} ssp1601_t; + + +void ssp1601_reset(ssp1601_t *ssp); +void ssp1601_run(int cycles); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svp.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svp.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svp.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svp.c index 11a85939f5..d286a2f0b9 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svp.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svp.c @@ -1,85 +1,85 @@ -/* - basic, incomplete SSP160x (SSP1601?) interpreter - with SVP memory controller emu - - (c) Copyright 2008, Grazvydas "notaz" Ignotas - Free for non-commercial use. - - For commercial use, separate licencing terms must be obtained. - - Modified for Genesis Plus GX (Eke-Eke): added BIG ENDIAN support, fixed addr/code inversion -*/ - -#include "shared.h" - -svp_t *svp; - -static void svp_write_dram(uint32 address, uint32 data) -{ - *(uint16 *)(svp->dram + (address & 0x1fffe)) = data; - if (data) - { - if (address == 0x30fe06) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE06; - else if (address == 0x30fe08) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE08; - } -} - -static uint32 svp_read_cell_1(uint32 address) -{ - address = (address & 0xe002) | ((address & 0x7c) << 6) | ((address & 0x1f80) >> 5); - return *(uint16 *)(svp->dram + address); -} - -static uint32 svp_read_cell_2(uint32 address) -{ - address = (address & 0xf002) | ((address & 0x3c) << 6) | ((address & 0xfc0) >> 4); - return *(uint16 *)(svp->dram + address); -} - -static uint32 svp_read_cell_byte(uint32 address) -{ - uint16 data = m68k.memory_map[address >> 16].read16(address); - - if (address & 0x01) - { - return (data & 0xff); - } - - return (data >> 8); -} - -void svp_init(void) -{ - svp = (void *) ((char *)cart.rom + 0x200000); - memset(svp, 0, sizeof(*svp)); - - m68k.memory_map[0x30].base = svp->dram; - m68k.memory_map[0x30].read8 = NULL; - m68k.memory_map[0x30].read16 = NULL; - m68k.memory_map[0x30].write8 = NULL; - m68k.memory_map[0x30].write16 = svp_write_dram; - zbank_memory_map[0x30].read = NULL; - zbank_memory_map[0x30].write = NULL; - - m68k.memory_map[0x31].base = svp->dram + 0x10000; - m68k.memory_map[0x31].read8 = NULL; - m68k.memory_map[0x31].read16 = NULL; - m68k.memory_map[0x31].write8 = NULL; - m68k.memory_map[0x31].write16 = NULL; - zbank_memory_map[0x31].read = NULL; - zbank_memory_map[0x31].write = NULL; - - m68k.memory_map[0x39].read8 = svp_read_cell_byte; - m68k.memory_map[0x39].read16 = svp_read_cell_1; - zbank_memory_map[0x39].read = svp_read_cell_byte; - m68k.memory_map[0x3a].read8 = svp_read_cell_byte; - m68k.memory_map[0x3a].read16 = svp_read_cell_2; - zbank_memory_map[0x3a].read = svp_read_cell_byte; -} - -void svp_reset(void) -{ - memcpy(svp->iram_rom + 0x800, cart.rom + 0x800, 0x20000 - 0x800); - ssp1601_reset(&svp->ssp1601); -} - +/* + basic, incomplete SSP160x (SSP1601?) interpreter + with SVP memory controller emu + + (c) Copyright 2008, Grazvydas "notaz" Ignotas + Free for non-commercial use. + + For commercial use, separate licencing terms must be obtained. + + Modified for Genesis Plus GX (Eke-Eke): added BIG ENDIAN support, fixed addr/code inversion +*/ + +#include "shared.h" + +svp_t *svp; + +static void svp_write_dram(uint32 address, uint32 data) +{ + *(uint16 *)(svp->dram + (address & 0x1fffe)) = data; + if (data) + { + if (address == 0x30fe06) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE06; + else if (address == 0x30fe08) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE08; + } +} + +static uint32 svp_read_cell_1(uint32 address) +{ + address = (address & 0xe002) | ((address & 0x7c) << 6) | ((address & 0x1f80) >> 5); + return *(uint16 *)(svp->dram + address); +} + +static uint32 svp_read_cell_2(uint32 address) +{ + address = (address & 0xf002) | ((address & 0x3c) << 6) | ((address & 0xfc0) >> 4); + return *(uint16 *)(svp->dram + address); +} + +static uint32 svp_read_cell_byte(uint32 address) +{ + uint16 data = m68k.memory_map[address >> 16].read16(address); + + if (address & 0x01) + { + return (data & 0xff); + } + + return (data >> 8); +} + +void svp_init(void) +{ + svp = (void *) ((char *)cart.rom + 0x200000); + memset(svp, 0, sizeof(*svp)); + + m68k.memory_map[0x30].base = svp->dram; + m68k.memory_map[0x30].read8 = NULL; + m68k.memory_map[0x30].read16 = NULL; + m68k.memory_map[0x30].write8 = NULL; + m68k.memory_map[0x30].write16 = svp_write_dram; + zbank_memory_map[0x30].read = NULL; + zbank_memory_map[0x30].write = NULL; + + m68k.memory_map[0x31].base = svp->dram + 0x10000; + m68k.memory_map[0x31].read8 = NULL; + m68k.memory_map[0x31].read16 = NULL; + m68k.memory_map[0x31].write8 = NULL; + m68k.memory_map[0x31].write16 = NULL; + zbank_memory_map[0x31].read = NULL; + zbank_memory_map[0x31].write = NULL; + + m68k.memory_map[0x39].read8 = svp_read_cell_byte; + m68k.memory_map[0x39].read16 = svp_read_cell_1; + zbank_memory_map[0x39].read = svp_read_cell_byte; + m68k.memory_map[0x3a].read8 = svp_read_cell_byte; + m68k.memory_map[0x3a].read16 = svp_read_cell_2; + zbank_memory_map[0x3a].read = svp_read_cell_byte; +} + +void svp_reset(void) +{ + memcpy(svp->iram_rom + 0x800, cart.rom + 0x800, 0x20000 - 0x800); + ssp1601_reset(&svp->ssp1601); +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svp.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svp.h similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svp.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svp.h index a20d299a83..ce8ec178c7 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svp.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svp.h @@ -1,30 +1,30 @@ -/* - basic, incomplete SSP160x (SSP1601?) interpreter - with SVP memory controller emu - - (c) Copyright 2008, Grazvydas "notaz" Ignotas - Free for non-commercial use. - - For commercial use, separate licencing terms must be obtained. - - Modified for Genesis Plus GX (Eke-Eke): added BIG ENDIAN support, fixed addr/code inversion -*/ - -#ifndef _SVP_H_ -#define _SVP_H_ - -#include "shared.h" -#include "ssp16.h" - -typedef struct { - unsigned char iram_rom[0x20000]; /* IRAM (0-0x7ff) and program ROM (0x800-0x1ffff) */ - unsigned char dram[0x20000]; - ssp1601_t ssp1601; -} svp_t; - -extern svp_t *svp; - -extern void svp_init(void); -extern void svp_reset(void); - -#endif +/* + basic, incomplete SSP160x (SSP1601?) interpreter + with SVP memory controller emu + + (c) Copyright 2008, Grazvydas "notaz" Ignotas + Free for non-commercial use. + + For commercial use, separate licencing terms must be obtained. + + Modified for Genesis Plus GX (Eke-Eke): added BIG ENDIAN support, fixed addr/code inversion +*/ + +#ifndef _SVP_H_ +#define _SVP_H_ + +#include "shared.h" +#include "ssp16.h" + +typedef struct { + unsigned char iram_rom[0x20000]; /* IRAM (0-0x7ff) and program ROM (0x800-0x1ffff) */ + unsigned char dram[0x20000]; + ssp1601_t ssp1601; +} svp_t; + +extern svp_t *svp; + +extern void svp_init(void); +extern void svp_reset(void); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svpdoc.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svpdoc.txt similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svpdoc.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svpdoc.txt index 001178cd3d..813657ad1b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cart_hw/svp/svpdoc.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cart_hw/svp/svpdoc.txt @@ -1,524 +1,524 @@ -------------------------------------------------------------------------------- - notaz's SVP doc - $Id: svpdoc.txt 349 2008-02-04 23:13:59Z notaz $ - Copyright 2008, Grazvydas Ignotas (notaz) -------------------------------------------------------------------------------- - -If you use this, please credit me in your work or it's documentation. -Tasco Deluxe should also be credited for his pioneering work on the subject. -Thanks. - -Use monospace font and disable word wrap when reading this document. - -------------------------------------------------------------------------------- - Table of Contents -------------------------------------------------------------------------------- - - 0. Introduction - 1. Overview - 2. The SSP160x DSP - 2.1. General registers - 2.2. External registers - 2.3. Pointer registers - 2.4. The instruction set - 3. Memory map - 4. Other notes - - -------------------------------------------------------------------------------- - 0. Introduction -------------------------------------------------------------------------------- - -This document is an attempt to provide technical information needed to -emulate Sega's SVP chip. It is based on reverse engineering Virtua Racing -game and on various internet sources. None of information provided here -was verified on the real hardware, so some things are likely to be -inaccurate. - -The following information sources were used while writing this document -and emulator implementation: - - [1] SVP Reference Guide (annotated) and SVP Register Guide (annotated) - by Tasco Deluxe < tasco.deluxe @ gmail.com > - http://www.sharemation.com/TascoDLX/SVP%20Reference%20Guide%202007.02.11.txt - http://www.sharemation.com/TascoDLX/SVP%20Register%20Guide%202007.02.11.txt - [2] SSP1610 disassembler - written by Pierpaolo Prazzoli, MAME source code. - http://mamedev.org/ - [3] SSP1601 DSP datasheet - http://notaz.gp2x.de/docs/SSP1601.pdf - [4] DSP page (with code samples) in Samsung Semiconductor website from 1997 - retrieved from Internet Archive: The Wayback Machine - http://web.archive.org/web/19970607052826/www.sec.samsung.com/Products/dsp/dspcore.htm - [5] Sega's SVP Chip: The Road not Taken? - Ken Horowitz, Sega-16 - http://sega-16.com/feature_page.php?id=37&title=Sega's%20SVP%20Chip:%20The%20Road%20not%20Taken? - - -------------------------------------------------------------------------------- - 1. Overview -------------------------------------------------------------------------------- - -The only game released with SVP chip was Virtua Racing. There are at least 4 -versions of the game: USA, Jap and 2 different Eur revisions. Three of them -share identical SSP160x code, one of the Eur revisions has some differences. - -From the software developer's point of view, the game cartridge contains -at least: - - * Samsung SSP160x 16-bit DSP core, which includes [3]: - * Two independent high-speed RAM banks, accessed in single clock cycle, - 256 words each. - * 16 x 16 bit multiply unit. - * 32-bit ALU, status register. - * Hardware stack of 6 levels. - * 128KB of DRAM. - * 2KB of IRAM (instruction RAM). - * Memory controller with address mapping capability. - * 2MB of game ROM. - -[5] claims there is also "2 Channels PWM" in the cartridge, but it's either -not used or not there at all. -Various sources claim that SSP160x is SSP1601 which is likely to be true, -because the code doesn't seem to use any SSP1605+ features. - - -------------------------------------------------------------------------------- - 2. The SSP160x DSP -------------------------------------------------------------------------------- - -SSP160x is 16-bit DSP, capable of performing multiplication + addition in -single clock cycle [3]. It has 8 general, 8 external and 8 pointer registers. -There is a status register which has operation control bits and condition -flags. Condition flags are set/cleared during ALU (arithmetic, logic) -operations. It also has 6-level hardware stack and 2 internal RAM banks -RAM0 and RAM1, 256 words each. - -The device is only capable of addressing 16-bit words, so all addresses refer -to words (16bit value in ROM, accessed by 68k through address 0x84 would be -accessed by SSP160x using address 0x42). - -[3] mentions interrupt pins, but interrupts don't seem to be used by SVP code -(actually there are functions which look like interrupt handler routines, but -they don't seem to do anything important). - -2.1. General registers ----------------------- - -There are 8 general registers: -, X, Y, A, ST, STACK, PC and P ([2] [4]). -Size is given in bits. - -2.1.1. "-" - Constant register with all bits set (0xffff). Also used for programming - external registers (blind reads/writes, see 2.2). - size: 16 - -2.1.2. "X" - Generic register. Also acts as a multiplier 1 for P register. - size: 16 - -2.1.3. "Y" - Generic register. Also acts as a multiplier 2 for P register. - size: 16 - -2.1.4. "A" - Accumulator. Stores the result of all ALU (but not multiply) operations, - status register is updated according to this. When directly accessed, - only upper word is read/written. Low word can be accessed by using AL - (see 2.2.8). - size: 32 - -2.1.5. "ST" - STatus register. Bits 0-9 are CONTROL, other are FLAG [2]. Only some of - them are actually used by SVP. - Bits: fedc ba98 7654 3210 - 210 - RPL "Loop size". If non-zero, makes (rX+) and (rX-) respectively - modulo-increment and modulo-decrement (see 2.3). The value - shows which power of 2 to use, i.e. 4 means modulo by 16. - 43 - RB Unknown. Not used by SVP code. - 5 - ST5 Affects behavior of external registers. See 2.2. - 6 - ST6 Affects behavior of external registers. See 2.2. - According to [3] (5,6) bits correspond to hardware pins. - 7 - IE Interrupt enable? Not used by SVP code. - 8 - OP Saturated value? Not used by SVP code. - 9 - MACS MAC shift? Not used by SVP code. - a - GPI_0 Interrupt 0 enable/status? Not used by SVP code. - b - GPI_1 Interrupt 1 enable/status? Not used by SVP code. - c - L L flag. Similar to carry? Not used by SVP code. - d - Z Zero flag. Set after ALU operations, when all 32 accumulator - bits become zero. - e - OV Overflow flag. Not used by SVP code. - f - N Negative flag. Set after ALU operations, when bit31 in - accumulator is 1. - size: 16 - -2.1.6. "STACK" - Hardware stack of 6 levels [3]. Values are "pushed" by directly writing to - it, or by "call" instruction. "Pop" is performed by directly reading the - register or by "ret" instruction. - size: 16 - -2.1.7. "PC" - Program Counter. Can be written directly to perform a jump. It is not clear - if it is possible to read it (SVP code never does). - size: 16 - -2.1.8. "P" - multiply Product - multiplication result register. - Always contains 32-bit multiplication result of X, Y and 2 (P = X * Y * 2). - X and Y are sign-extended before performing the multiplication. - size: 32 - -2.2. External registers ------------------------ - -The external registers, as the name says, are external to SSP160x, they are -hooked to memory controller in SVP, so by accessing them we actually program -the memory controller. They act as programmable memory access registers or -external status registers [1]. Some of them can act as both, depending on how -ST5 ans ST6 bits are set in status register. After a register is programmed, -accessing it causes reads/writes from/to external memory (see section 3 for -the memory map). The access may also cause some additional effects, like -incremental of address, associated with accessed register. -In this document and my emu, instead of using names EXT0-EXT7 -from [4] I used different names for these registers. Those names are from -Tasco Deluxe's [1] doc. - -All these registers can be blind-accessed (as said in [1]) by performing -(ld -, PMx) or (ld PMx, -). This programs them to access memory (except PMC, -where the effect is different). -All registers are 16-bit. - -2.2.1. "PM0" - If ST5 or ST6 is set, acts as Programmable Memory access register - (see 2.2.7). Else it acts as status of XST (2.2.4). It is also mapped - to a15004 on 68k side: - ???????? ??????10 - 0: set, when SSP160x has written something to XST - (cleared when 015004 is read by 68k) - 1: set, when 68k has written something to a15000 or a15002 - (cleared on PM0 read by SSP160x) - Note that this is likely to be incorrect, but such behavior is OK for - emulation to work. - -2.2.2. "PM1" - Programmable Memory access register. Only accessed with ST bits set by - SVP code. - -2.2.3. "PM2" - Same as PM1. - -2.2.4. "XST" - If ST5 or ST6 is set, acts as Programmable Memory access register - (only used by memory test code). Else it acts as eXternal STatus - register, which is also mapped to a15000 and a15002 on 68k side. - Affects PM0 when written to. - -2.2.5. "PM4" - Programmable Memory access register. Not affected by ST5 and ST6 bits, - always stays in PMAR mode. - -2.2.6. "EXT5" - Not used by SVP, so not covered by this document. - -2.2.7. "PMC" - Programmable Memory access Control. It is set using 2 16bit writes, first - address, then mode word. After setting PMAC, PMx should be blind accessed - using (ld -, PMx) or (ld PMx, -) to program it for reading or writing - external memory respectively. Every PMx register can be programmed to - access it's own memory location with it's own mode. Registers are programmed - separately for reading and writing. - - Reading PMC register also shifts it's state (from "waiting for address" to - "waiting for mode" and back). Reads always return address word related to - last PMx register accessed, or last address word written to PMC (whichever - event happened last before PMC read). - - The address word contains bits 0-15 of the memory word-address. - The mode word format is as follows: - dsnnnv?? ???aaaaa - a: bits 16-20 of memory word-address. - n: auto-increment value. If set, after every access of PMx, word-address - value related to it will be incremented by (words): - 1 - 1 5 - 16 - 2 - 2 6 - 32 - 3 - 4 7 - 128 - 4 - 8 - d: make auto-increment negative - decrement by count listed above. - s: special-increment mode. If current address is even (when accessing - programmed PMx), increment it by 1. Else, increment by 32. It is not - clear what happens if d and n bits are also set (never done by SVP). - v: over-write mode when writing, unknown when reading (not used). - Over-write mode splits the word being written into 4 half-bytes and - only writes those half-bytes, which are not zero. - When auto-increment is performed, it affects all 21 address bits. - -2.2.8. "AL" - This register acts more like a general register. - If this register is blind-accessed, it is "dummy programmed", i.e. nothing - happens and PMC is reset to "waiting for address" state. - In all other cases, it is Accumulator Low, 16 least significant bits of - accumulator. Normally reading acc (ld X, A) you get 16 most significant - bits, so this allows you access the low word of 32bit accumulator. - -2.3. Pointer registers ----------------------- - -There are 8 8-bit pointer registers rX, which are internal to SSP160x and are -used to access internal RAM banks RAM0 and RAM1, or program memory indirectly. -r0-r3 (ri) point to RAM0, r4-r7 (rj) point to RAM1. Each bank has 256 words of -RAM, so 8bit registers can fully address them. The registers can be accessed -directly, or 2 indirection levels can be used [ (rX), ((rX)) ]. They work -similar to * and ** operators in C, only they use different types of memory -and ((rX)) also performs post-increment. First indirection level (rX) accesses -a word in RAMx, second accesses program memory at address read from (rX), and -increments value in (rX). - -Only r0,r1,r2,r4,r5,r6 can be directly modified (ldi r0, 5), or by using -modifiers. 3 modifiers can be applied when using first indirection level -(optional): - + : post-increment (ld a, (r0+) ). Increment register value after operation. - Can be made modulo-increment by setting RPL bits in status register - (see 2.1.5). - - : post-decrement. Also can be made modulo-decrement by using RPL bits in ST. - +!: post-increment, unaffected by RPL (probably). -These are only used on 1st indirection level, so things like ( ld a, ((r0+)) ) -and (ld X, r6-) are probably invalid. - -r3 and r7 are special and can not be changed (at least Samsung samples [4] and -SVP code never do). They are fixed to the start of their RAM banks. (They are -probably changeable for ssp1605+, Samsung's old DSP page claims that). -1 of these 4 modifiers must be used on these registers (short form direct -addressing? [2]): - |00: RAMx[0] The very first word in the RAM bank. - |01: RAMx[1] Second word - |10: RAMx[2] ... - |11: RAMx[3] - -2.4. The instruction set ------------------------- - -The Samsung SSP16 series assembler uses right-to-left notation ([2] [4]): -ld X, Y -means value from Y should be copied to X. - -Size of every instruction is word, some have extension words for immediate -values. When writing an interpreter, 7 most significant bits are usually -enough to determine which opcode it is. - -encoding bits are marked as: -rrrr - general or external register, in order specified in 2.1 and 2.2 - (0 is '-', 1 'X', ..., 8 is 'PM0', ..., 0xf is 'AL') -dddd - same as above, as destination operand -ssss - same as above, as source operand -jpp - pointer register index, 0-7 -j - specifies RAM bank, i.e. RAM0 or RAM1 -i* - immediate value bits -a* - offset in internal RAM bank -mm - modifier for pointer register, depending on register: - r0-r2,r4-r6 r3,r7 examples - 0: (none) |00 ld a, (r0) cmp a, (r7|00) - 1: +! |01 ld (r0+!), a ld (r7|01), a - 2: - |10 add a, (r0-) - 3: + |11 -cccc - encodes condition, only 3 used by SVP, see check_cond() below -ooo - operation to perform - -Operation is written in C-style pseudo-code, where: -program_memory[X] - access program memory at address X -RAMj[X] - access internal RAM bank j=0,1 (RAM0 or RAM1), word - offset X -RIJ[X] - pointer register rX, X=0-7 -pr_modif_read(m,X) - read pointer register rX, applying modifier m: - if register is r3 or r7, return value m - else switch on value m: - 0: return rX; - 1: tmp = rX; rX++; return tmp; // rX+! - 2: tmp = rX; modulo_decrement(rX); return tmp; // rX- - 3: tmp = rX; modulo_increment(rX); return tmp; // rX+ - the modulo value used (if used at all) depends on ST - RPL bits (see 2.1.5) -check_cond(c,f) - checks if a flag matches f bit: - switch (c) { - case 0: return true; - case 5: return (Z == f) ? true : false; // check Z flag - case 7: return (N == f) ? true : false; // check N flag - } // other conditions are possible, but they are not used -update_flags() - update ST flags according to last ALU operation. -sign_extend(X) - sign extend 16bit value X to 32bits. -next_op_address() - address of instruction after current instruction. - -2.4.1. ALU instructions - -All of these instructions update flags, which are set according to full 32bit -accumulator. The SVP code only checks N and Z flags, so it is not known when -exactly OV and L flags are set. Operations are performed on full A, so -(andi A, 0) would clear all 32 bits of A. - -They share the same addressing modes. The exact arithmetic operation is -determined by 3 most significant (ooo) bits: - 001 - sub - subtract (OP -=) - 011 - cmp - compare (OP -, flags are updated according to result) - 100 - add - add (OP +=) - 101 - and - binary AND (OP &=) - 110 - or - binary OR (OP |=) - 111 - eor - exclusive OR (OP ^=) - - syntax encoding operation - OP A, s ooo0 0000 0000 rrrr A OP r << 16; - OP A, (ri) ooo0 001j 0000 mmpp A OP RAMj[pr_modif_read(m,jpp)] << 16; - OP A, adr ooo0 011j aaaa aaaa A OP RAMj[a] << 16; - OPi A, imm ooo0 1000 0000 0000 A OP i << 16; - iiii iiii iiii iiii - op A, ((ri)) ooo0 101j 0000 mmpp tmp = pr_modif_read(m,jpp); - A OP program_memory[RAMj[tmp]] << 16; - RAMj[tmp]++; - op A, ri ooo1 001j 0000 00pp A OP RIJ[jpp] << 16; - OPi simm ooo1 1000 iiii iiii A OP i << 16; - -There is also "perform operation on accumulator" instruction: - - syntax encoding operation - mod cond, op 1001 000f cccc 0ooo if (check_cond(c,f)) switch(o) { - case 2: A >>= 1; break; // arithmetic shift - case 3: A <<= 1; break; - case 6: A = -A; break; // negate A - case 7: A = abs(A); break; // absolute val. - } // other operations are possible, but - // they are not used by SVP. - -2.4.2. Load (move) instructions - -These instructions never affect flags (even ld A). -If destination is A, and source is 16bit, only upper word is transfered (same -thing happens on opposite). If dest. is A, and source is P, whole 32bit value -is transfered. It is not clear if P can be destination operand (probably not, -no code ever does this). -Writing to STACK pushes a value there, reading pops. It is not known what -happens on overflow/underflow (never happens in SVP code). -ld -, - is used as a nop. - - syntax encoding operation - ld d, s 0000 0000 dddd ssss d = s; - ld d, (ri) 0000 001j dddd mmpp d = RAMj[pr_modif_read(m,jpp)]; - ld (ri), s 0000 010j ssss mmpp RAMj[pr_modif_read(m,jpp)] = s; - ldi d, imm 0000 1000 dddd 0000 d = i; - iiii iiii iiii iiii - ld d, ((ri)) 0000 101j dddd mmpp tmp = pr_modif_read(m,jpp); - d = program_memory[RAMj[tmp]]; - RAMj[tmp]++; - ldi (ri), imm 0000 110l 0000 mmpp RAMj[pr_modif_read(m,jpp)] = i; - iiii iiii iiii iiii - ld adr, a 0000 111j aaaa aaaa RAMj[a] = A; - ld d, ri 0001 001j dddd 00pp d = RIJ[jpp]; - ld ri, s 0001 010j ssss 00pp RIJ[jpp] = s; - ldi ri, simm 0001 1jpp iiii iiii RIJ[jpp] = i; - ld d, (a) 0100 1010 dddd 0000 d = program_memory[A[31:16]]; - // read a word from program memory. Offset - // is the upper word in A. - -2.4.3. Program control instructions - -Only 3 instructions: call, ret (alias of ld PC, STACK) and branch. Indirect -jumps can be performed by simply writing to PC. - - syntax encoding operation - call cond, addr 0100 100f cccc 0000 if (check_cond(c,f)) { - aaaa aaaa aaaa aaaa STACK = next_op_address(); PC = a; - } - bra cond, addr 0100 110f cccc 0000 if (check_cond(c,f)) PC = a; - aaaa aaaa aaaa aaaa - ret 0000 0000 0110 0101 PC = STACK; // same as ld PC, STACK - -2.4.4. Multiply-accumulate instructions - -Not sure if (ri) and (rj) really get loaded into X and Y, but multiplication -result surely is loaded into P. There is probably optional 3rd operand (1, 0; -encoded by bit16, default 1), but it's not used by SVP code. - - syntax encoding operation - mld (rj), (ri) 1011 0111 nnjj mmii A = 0; update_flags(); - X = RAM0[pr_modif_read(m,0ii)]; - Y = RAM1[pr_modif_read(m,1jj)]; - P = sign_extend(X) * sign_extend(Y) * 2 - mpya (rj), (ri) 1001 0111 nnjj mmii A += P; update_flags(); - X = RAM0[pr_modif_read(m,0ii)]; - Y = RAM1[pr_modif_read(m,1jj)]; - P = sign_extend(X) * sign_extend(Y) * 2 - mpys (rj), (ri) 0011 0111 nnjj mmii A -= P; update_flags(); - X = RAM0[pr_modif_read(m,0ii)]; - Y = RAM1[pr_modif_read(m,1jj)]; - P = sign_extend(X) * sign_extend(Y) * 2 - -------------------------------------------------------------------------------- - 3. Memory map -------------------------------------------------------------------------------- - -The SSp160x can access it's own program memory, and external memory through EXT -registers (see 2.2). Program memory is read-execute-only, the size of this -space is 64K words (this is how much 16bit PC can address): - - byte address word address name - 0- 7ff 0- 3ff IRAM - 800-1ffff 400-ffff ROM - -There were reports that SVP has internal ROM, but fortunately they were wrong. -The location 800-1ffff is mapped from the same location in the 2MB game ROM. -The IRAM is read-only (as SSP160x doesn't have any means of writing to it's -program memory), but it can be changed through external memory space, as it's -also mapped there. - -The external memory space seems to match the one visible by 68k, with some -differences: - - 68k space SVP space word address name - 0-1fffff 0-1fffff 0- fffff game ROM - 300000-31ffff 300000-31ffff 180000-18ffff DRAM - ? 390000-3907ff 1c8000-1c83ff IRAM - 390000-39ffff ? ? "cell arrange" 1 - 3a0000-3affff ? ? "cell arrange" 2 - a15000-a15009 n/a n/a Status/control registers - -The external memory can be read/written by SSP160x (except game ROM, which can -only be read). - -"cell arrange" 1 and 2 are similar to the one used in SegaCD, they map -300000-30ffff location to 390000-39ffff and 3a0000-3affff, where linear image -written to 300000 can be read as VDP patterns at 390000. Virtua Racing doesn't -seem to use this feature, it is only used by memory test code. - -Here is the list of status/control registers (16bit size): - a15000 - w/r command/result register. Visible as XST for SSP160x (2.2.4). - a15002 - mirror of the above. - a15004 - status of command/result register (see 2.2.1). - a15006 - possibly halts the SVP. Before doing DMA from DRAM, 68k code writes - 0xa, and after it's finished, writes 0. This is probably done to - prevent SVP accessing DRAM and avoid bus clashes. - a15008 - possibly causes an interrupt. There is (unused?) code which writes - 0, 1, and again 0 in sequence. - - -------------------------------------------------------------------------------- - 4. Other notes -------------------------------------------------------------------------------- - -The game has arcade-style memory self-check mode, which can be accessed by -pressing _all_ buttons (including directions) on 3-button controller. There was -probably some loopback plug for this. - -SVP seems to have DMA latency issue similar to one in Sega CD, as the code -always sets DMA source address value larger by 2, then intended for copy. -This is even true for DMAs from ROM, as it's probably hooked through SVP's -memory controller. - -The entry point for the code seems to be at address 0x800 (word 0x400) in ROM, -but it is not clear where the address is fetched from when the system powers -up. The memory test code also sets up "ld PC, .." opcodes at 0x7f4, 0x7f8 and -0x7fc, which jump to some routines, possibly interrupt handlers. This means -that mentioned addresses might be built-in interrupt vectors. - -The SVP code doesn't seem to be timing sensitive, so it can be emulated without -knowing timing of the instructions or even how fast the chip is clocked. -Overclocking doesn't have any effect, underclocking causes slowdowns. Running -10-12M instructions/sec (or possibly less) is sufficient. - +------------------------------------------------------------------------------- + notaz's SVP doc + $Id: svpdoc.txt 349 2008-02-04 23:13:59Z notaz $ + Copyright 2008, Grazvydas Ignotas (notaz) +------------------------------------------------------------------------------- + +If you use this, please credit me in your work or it's documentation. +Tasco Deluxe should also be credited for his pioneering work on the subject. +Thanks. + +Use monospace font and disable word wrap when reading this document. + +------------------------------------------------------------------------------- + Table of Contents +------------------------------------------------------------------------------- + + 0. Introduction + 1. Overview + 2. The SSP160x DSP + 2.1. General registers + 2.2. External registers + 2.3. Pointer registers + 2.4. The instruction set + 3. Memory map + 4. Other notes + + +------------------------------------------------------------------------------- + 0. Introduction +------------------------------------------------------------------------------- + +This document is an attempt to provide technical information needed to +emulate Sega's SVP chip. It is based on reverse engineering Virtua Racing +game and on various internet sources. None of information provided here +was verified on the real hardware, so some things are likely to be +inaccurate. + +The following information sources were used while writing this document +and emulator implementation: + + [1] SVP Reference Guide (annotated) and SVP Register Guide (annotated) + by Tasco Deluxe < tasco.deluxe @ gmail.com > + http://www.sharemation.com/TascoDLX/SVP%20Reference%20Guide%202007.02.11.txt + http://www.sharemation.com/TascoDLX/SVP%20Register%20Guide%202007.02.11.txt + [2] SSP1610 disassembler + written by Pierpaolo Prazzoli, MAME source code. + http://mamedev.org/ + [3] SSP1601 DSP datasheet + http://notaz.gp2x.de/docs/SSP1601.pdf + [4] DSP page (with code samples) in Samsung Semiconductor website from 1997 + retrieved from Internet Archive: The Wayback Machine + http://web.archive.org/web/19970607052826/www.sec.samsung.com/Products/dsp/dspcore.htm + [5] Sega's SVP Chip: The Road not Taken? + Ken Horowitz, Sega-16 + http://sega-16.com/feature_page.php?id=37&title=Sega's%20SVP%20Chip:%20The%20Road%20not%20Taken? + + +------------------------------------------------------------------------------- + 1. Overview +------------------------------------------------------------------------------- + +The only game released with SVP chip was Virtua Racing. There are at least 4 +versions of the game: USA, Jap and 2 different Eur revisions. Three of them +share identical SSP160x code, one of the Eur revisions has some differences. + +From the software developer's point of view, the game cartridge contains +at least: + + * Samsung SSP160x 16-bit DSP core, which includes [3]: + * Two independent high-speed RAM banks, accessed in single clock cycle, + 256 words each. + * 16 x 16 bit multiply unit. + * 32-bit ALU, status register. + * Hardware stack of 6 levels. + * 128KB of DRAM. + * 2KB of IRAM (instruction RAM). + * Memory controller with address mapping capability. + * 2MB of game ROM. + +[5] claims there is also "2 Channels PWM" in the cartridge, but it's either +not used or not there at all. +Various sources claim that SSP160x is SSP1601 which is likely to be true, +because the code doesn't seem to use any SSP1605+ features. + + +------------------------------------------------------------------------------- + 2. The SSP160x DSP +------------------------------------------------------------------------------- + +SSP160x is 16-bit DSP, capable of performing multiplication + addition in +single clock cycle [3]. It has 8 general, 8 external and 8 pointer registers. +There is a status register which has operation control bits and condition +flags. Condition flags are set/cleared during ALU (arithmetic, logic) +operations. It also has 6-level hardware stack and 2 internal RAM banks +RAM0 and RAM1, 256 words each. + +The device is only capable of addressing 16-bit words, so all addresses refer +to words (16bit value in ROM, accessed by 68k through address 0x84 would be +accessed by SSP160x using address 0x42). + +[3] mentions interrupt pins, but interrupts don't seem to be used by SVP code +(actually there are functions which look like interrupt handler routines, but +they don't seem to do anything important). + +2.1. General registers +---------------------- + +There are 8 general registers: -, X, Y, A, ST, STACK, PC and P ([2] [4]). +Size is given in bits. + +2.1.1. "-" + Constant register with all bits set (0xffff). Also used for programming + external registers (blind reads/writes, see 2.2). + size: 16 + +2.1.2. "X" + Generic register. Also acts as a multiplier 1 for P register. + size: 16 + +2.1.3. "Y" + Generic register. Also acts as a multiplier 2 for P register. + size: 16 + +2.1.4. "A" + Accumulator. Stores the result of all ALU (but not multiply) operations, + status register is updated according to this. When directly accessed, + only upper word is read/written. Low word can be accessed by using AL + (see 2.2.8). + size: 32 + +2.1.5. "ST" + STatus register. Bits 0-9 are CONTROL, other are FLAG [2]. Only some of + them are actually used by SVP. + Bits: fedc ba98 7654 3210 + 210 - RPL "Loop size". If non-zero, makes (rX+) and (rX-) respectively + modulo-increment and modulo-decrement (see 2.3). The value + shows which power of 2 to use, i.e. 4 means modulo by 16. + 43 - RB Unknown. Not used by SVP code. + 5 - ST5 Affects behavior of external registers. See 2.2. + 6 - ST6 Affects behavior of external registers. See 2.2. + According to [3] (5,6) bits correspond to hardware pins. + 7 - IE Interrupt enable? Not used by SVP code. + 8 - OP Saturated value? Not used by SVP code. + 9 - MACS MAC shift? Not used by SVP code. + a - GPI_0 Interrupt 0 enable/status? Not used by SVP code. + b - GPI_1 Interrupt 1 enable/status? Not used by SVP code. + c - L L flag. Similar to carry? Not used by SVP code. + d - Z Zero flag. Set after ALU operations, when all 32 accumulator + bits become zero. + e - OV Overflow flag. Not used by SVP code. + f - N Negative flag. Set after ALU operations, when bit31 in + accumulator is 1. + size: 16 + +2.1.6. "STACK" + Hardware stack of 6 levels [3]. Values are "pushed" by directly writing to + it, or by "call" instruction. "Pop" is performed by directly reading the + register or by "ret" instruction. + size: 16 + +2.1.7. "PC" + Program Counter. Can be written directly to perform a jump. It is not clear + if it is possible to read it (SVP code never does). + size: 16 + +2.1.8. "P" + multiply Product - multiplication result register. + Always contains 32-bit multiplication result of X, Y and 2 (P = X * Y * 2). + X and Y are sign-extended before performing the multiplication. + size: 32 + +2.2. External registers +----------------------- + +The external registers, as the name says, are external to SSP160x, they are +hooked to memory controller in SVP, so by accessing them we actually program +the memory controller. They act as programmable memory access registers or +external status registers [1]. Some of them can act as both, depending on how +ST5 ans ST6 bits are set in status register. After a register is programmed, +accessing it causes reads/writes from/to external memory (see section 3 for +the memory map). The access may also cause some additional effects, like +incremental of address, associated with accessed register. +In this document and my emu, instead of using names EXT0-EXT7 +from [4] I used different names for these registers. Those names are from +Tasco Deluxe's [1] doc. + +All these registers can be blind-accessed (as said in [1]) by performing +(ld -, PMx) or (ld PMx, -). This programs them to access memory (except PMC, +where the effect is different). +All registers are 16-bit. + +2.2.1. "PM0" + If ST5 or ST6 is set, acts as Programmable Memory access register + (see 2.2.7). Else it acts as status of XST (2.2.4). It is also mapped + to a15004 on 68k side: + ???????? ??????10 + 0: set, when SSP160x has written something to XST + (cleared when 015004 is read by 68k) + 1: set, when 68k has written something to a15000 or a15002 + (cleared on PM0 read by SSP160x) + Note that this is likely to be incorrect, but such behavior is OK for + emulation to work. + +2.2.2. "PM1" + Programmable Memory access register. Only accessed with ST bits set by + SVP code. + +2.2.3. "PM2" + Same as PM1. + +2.2.4. "XST" + If ST5 or ST6 is set, acts as Programmable Memory access register + (only used by memory test code). Else it acts as eXternal STatus + register, which is also mapped to a15000 and a15002 on 68k side. + Affects PM0 when written to. + +2.2.5. "PM4" + Programmable Memory access register. Not affected by ST5 and ST6 bits, + always stays in PMAR mode. + +2.2.6. "EXT5" + Not used by SVP, so not covered by this document. + +2.2.7. "PMC" + Programmable Memory access Control. It is set using 2 16bit writes, first + address, then mode word. After setting PMAC, PMx should be blind accessed + using (ld -, PMx) or (ld PMx, -) to program it for reading or writing + external memory respectively. Every PMx register can be programmed to + access it's own memory location with it's own mode. Registers are programmed + separately for reading and writing. + + Reading PMC register also shifts it's state (from "waiting for address" to + "waiting for mode" and back). Reads always return address word related to + last PMx register accessed, or last address word written to PMC (whichever + event happened last before PMC read). + + The address word contains bits 0-15 of the memory word-address. + The mode word format is as follows: + dsnnnv?? ???aaaaa + a: bits 16-20 of memory word-address. + n: auto-increment value. If set, after every access of PMx, word-address + value related to it will be incremented by (words): + 1 - 1 5 - 16 + 2 - 2 6 - 32 + 3 - 4 7 - 128 + 4 - 8 + d: make auto-increment negative - decrement by count listed above. + s: special-increment mode. If current address is even (when accessing + programmed PMx), increment it by 1. Else, increment by 32. It is not + clear what happens if d and n bits are also set (never done by SVP). + v: over-write mode when writing, unknown when reading (not used). + Over-write mode splits the word being written into 4 half-bytes and + only writes those half-bytes, which are not zero. + When auto-increment is performed, it affects all 21 address bits. + +2.2.8. "AL" + This register acts more like a general register. + If this register is blind-accessed, it is "dummy programmed", i.e. nothing + happens and PMC is reset to "waiting for address" state. + In all other cases, it is Accumulator Low, 16 least significant bits of + accumulator. Normally reading acc (ld X, A) you get 16 most significant + bits, so this allows you access the low word of 32bit accumulator. + +2.3. Pointer registers +---------------------- + +There are 8 8-bit pointer registers rX, which are internal to SSP160x and are +used to access internal RAM banks RAM0 and RAM1, or program memory indirectly. +r0-r3 (ri) point to RAM0, r4-r7 (rj) point to RAM1. Each bank has 256 words of +RAM, so 8bit registers can fully address them. The registers can be accessed +directly, or 2 indirection levels can be used [ (rX), ((rX)) ]. They work +similar to * and ** operators in C, only they use different types of memory +and ((rX)) also performs post-increment. First indirection level (rX) accesses +a word in RAMx, second accesses program memory at address read from (rX), and +increments value in (rX). + +Only r0,r1,r2,r4,r5,r6 can be directly modified (ldi r0, 5), or by using +modifiers. 3 modifiers can be applied when using first indirection level +(optional): + + : post-increment (ld a, (r0+) ). Increment register value after operation. + Can be made modulo-increment by setting RPL bits in status register + (see 2.1.5). + - : post-decrement. Also can be made modulo-decrement by using RPL bits in ST. + +!: post-increment, unaffected by RPL (probably). +These are only used on 1st indirection level, so things like ( ld a, ((r0+)) ) +and (ld X, r6-) are probably invalid. + +r3 and r7 are special and can not be changed (at least Samsung samples [4] and +SVP code never do). They are fixed to the start of their RAM banks. (They are +probably changeable for ssp1605+, Samsung's old DSP page claims that). +1 of these 4 modifiers must be used on these registers (short form direct +addressing? [2]): + |00: RAMx[0] The very first word in the RAM bank. + |01: RAMx[1] Second word + |10: RAMx[2] ... + |11: RAMx[3] + +2.4. The instruction set +------------------------ + +The Samsung SSP16 series assembler uses right-to-left notation ([2] [4]): +ld X, Y +means value from Y should be copied to X. + +Size of every instruction is word, some have extension words for immediate +values. When writing an interpreter, 7 most significant bits are usually +enough to determine which opcode it is. + +encoding bits are marked as: +rrrr - general or external register, in order specified in 2.1 and 2.2 + (0 is '-', 1 'X', ..., 8 is 'PM0', ..., 0xf is 'AL') +dddd - same as above, as destination operand +ssss - same as above, as source operand +jpp - pointer register index, 0-7 +j - specifies RAM bank, i.e. RAM0 or RAM1 +i* - immediate value bits +a* - offset in internal RAM bank +mm - modifier for pointer register, depending on register: + r0-r2,r4-r6 r3,r7 examples + 0: (none) |00 ld a, (r0) cmp a, (r7|00) + 1: +! |01 ld (r0+!), a ld (r7|01), a + 2: - |10 add a, (r0-) + 3: + |11 +cccc - encodes condition, only 3 used by SVP, see check_cond() below +ooo - operation to perform + +Operation is written in C-style pseudo-code, where: +program_memory[X] - access program memory at address X +RAMj[X] - access internal RAM bank j=0,1 (RAM0 or RAM1), word + offset X +RIJ[X] - pointer register rX, X=0-7 +pr_modif_read(m,X) - read pointer register rX, applying modifier m: + if register is r3 or r7, return value m + else switch on value m: + 0: return rX; + 1: tmp = rX; rX++; return tmp; // rX+! + 2: tmp = rX; modulo_decrement(rX); return tmp; // rX- + 3: tmp = rX; modulo_increment(rX); return tmp; // rX+ + the modulo value used (if used at all) depends on ST + RPL bits (see 2.1.5) +check_cond(c,f) - checks if a flag matches f bit: + switch (c) { + case 0: return true; + case 5: return (Z == f) ? true : false; // check Z flag + case 7: return (N == f) ? true : false; // check N flag + } // other conditions are possible, but they are not used +update_flags() - update ST flags according to last ALU operation. +sign_extend(X) - sign extend 16bit value X to 32bits. +next_op_address() - address of instruction after current instruction. + +2.4.1. ALU instructions + +All of these instructions update flags, which are set according to full 32bit +accumulator. The SVP code only checks N and Z flags, so it is not known when +exactly OV and L flags are set. Operations are performed on full A, so +(andi A, 0) would clear all 32 bits of A. + +They share the same addressing modes. The exact arithmetic operation is +determined by 3 most significant (ooo) bits: + 001 - sub - subtract (OP -=) + 011 - cmp - compare (OP -, flags are updated according to result) + 100 - add - add (OP +=) + 101 - and - binary AND (OP &=) + 110 - or - binary OR (OP |=) + 111 - eor - exclusive OR (OP ^=) + + syntax encoding operation + OP A, s ooo0 0000 0000 rrrr A OP r << 16; + OP A, (ri) ooo0 001j 0000 mmpp A OP RAMj[pr_modif_read(m,jpp)] << 16; + OP A, adr ooo0 011j aaaa aaaa A OP RAMj[a] << 16; + OPi A, imm ooo0 1000 0000 0000 A OP i << 16; + iiii iiii iiii iiii + op A, ((ri)) ooo0 101j 0000 mmpp tmp = pr_modif_read(m,jpp); + A OP program_memory[RAMj[tmp]] << 16; + RAMj[tmp]++; + op A, ri ooo1 001j 0000 00pp A OP RIJ[jpp] << 16; + OPi simm ooo1 1000 iiii iiii A OP i << 16; + +There is also "perform operation on accumulator" instruction: + + syntax encoding operation + mod cond, op 1001 000f cccc 0ooo if (check_cond(c,f)) switch(o) { + case 2: A >>= 1; break; // arithmetic shift + case 3: A <<= 1; break; + case 6: A = -A; break; // negate A + case 7: A = abs(A); break; // absolute val. + } // other operations are possible, but + // they are not used by SVP. + +2.4.2. Load (move) instructions + +These instructions never affect flags (even ld A). +If destination is A, and source is 16bit, only upper word is transfered (same +thing happens on opposite). If dest. is A, and source is P, whole 32bit value +is transfered. It is not clear if P can be destination operand (probably not, +no code ever does this). +Writing to STACK pushes a value there, reading pops. It is not known what +happens on overflow/underflow (never happens in SVP code). +ld -, - is used as a nop. + + syntax encoding operation + ld d, s 0000 0000 dddd ssss d = s; + ld d, (ri) 0000 001j dddd mmpp d = RAMj[pr_modif_read(m,jpp)]; + ld (ri), s 0000 010j ssss mmpp RAMj[pr_modif_read(m,jpp)] = s; + ldi d, imm 0000 1000 dddd 0000 d = i; + iiii iiii iiii iiii + ld d, ((ri)) 0000 101j dddd mmpp tmp = pr_modif_read(m,jpp); + d = program_memory[RAMj[tmp]]; + RAMj[tmp]++; + ldi (ri), imm 0000 110l 0000 mmpp RAMj[pr_modif_read(m,jpp)] = i; + iiii iiii iiii iiii + ld adr, a 0000 111j aaaa aaaa RAMj[a] = A; + ld d, ri 0001 001j dddd 00pp d = RIJ[jpp]; + ld ri, s 0001 010j ssss 00pp RIJ[jpp] = s; + ldi ri, simm 0001 1jpp iiii iiii RIJ[jpp] = i; + ld d, (a) 0100 1010 dddd 0000 d = program_memory[A[31:16]]; + // read a word from program memory. Offset + // is the upper word in A. + +2.4.3. Program control instructions + +Only 3 instructions: call, ret (alias of ld PC, STACK) and branch. Indirect +jumps can be performed by simply writing to PC. + + syntax encoding operation + call cond, addr 0100 100f cccc 0000 if (check_cond(c,f)) { + aaaa aaaa aaaa aaaa STACK = next_op_address(); PC = a; + } + bra cond, addr 0100 110f cccc 0000 if (check_cond(c,f)) PC = a; + aaaa aaaa aaaa aaaa + ret 0000 0000 0110 0101 PC = STACK; // same as ld PC, STACK + +2.4.4. Multiply-accumulate instructions + +Not sure if (ri) and (rj) really get loaded into X and Y, but multiplication +result surely is loaded into P. There is probably optional 3rd operand (1, 0; +encoded by bit16, default 1), but it's not used by SVP code. + + syntax encoding operation + mld (rj), (ri) 1011 0111 nnjj mmii A = 0; update_flags(); + X = RAM0[pr_modif_read(m,0ii)]; + Y = RAM1[pr_modif_read(m,1jj)]; + P = sign_extend(X) * sign_extend(Y) * 2 + mpya (rj), (ri) 1001 0111 nnjj mmii A += P; update_flags(); + X = RAM0[pr_modif_read(m,0ii)]; + Y = RAM1[pr_modif_read(m,1jj)]; + P = sign_extend(X) * sign_extend(Y) * 2 + mpys (rj), (ri) 0011 0111 nnjj mmii A -= P; update_flags(); + X = RAM0[pr_modif_read(m,0ii)]; + Y = RAM1[pr_modif_read(m,1jj)]; + P = sign_extend(X) * sign_extend(Y) * 2 + +------------------------------------------------------------------------------- + 3. Memory map +------------------------------------------------------------------------------- + +The SSp160x can access it's own program memory, and external memory through EXT +registers (see 2.2). Program memory is read-execute-only, the size of this +space is 64K words (this is how much 16bit PC can address): + + byte address word address name + 0- 7ff 0- 3ff IRAM + 800-1ffff 400-ffff ROM + +There were reports that SVP has internal ROM, but fortunately they were wrong. +The location 800-1ffff is mapped from the same location in the 2MB game ROM. +The IRAM is read-only (as SSP160x doesn't have any means of writing to it's +program memory), but it can be changed through external memory space, as it's +also mapped there. + +The external memory space seems to match the one visible by 68k, with some +differences: + + 68k space SVP space word address name + 0-1fffff 0-1fffff 0- fffff game ROM + 300000-31ffff 300000-31ffff 180000-18ffff DRAM + ? 390000-3907ff 1c8000-1c83ff IRAM + 390000-39ffff ? ? "cell arrange" 1 + 3a0000-3affff ? ? "cell arrange" 2 + a15000-a15009 n/a n/a Status/control registers + +The external memory can be read/written by SSP160x (except game ROM, which can +only be read). + +"cell arrange" 1 and 2 are similar to the one used in SegaCD, they map +300000-30ffff location to 390000-39ffff and 3a0000-3affff, where linear image +written to 300000 can be read as VDP patterns at 390000. Virtua Racing doesn't +seem to use this feature, it is only used by memory test code. + +Here is the list of status/control registers (16bit size): + a15000 - w/r command/result register. Visible as XST for SSP160x (2.2.4). + a15002 - mirror of the above. + a15004 - status of command/result register (see 2.2.1). + a15006 - possibly halts the SVP. Before doing DMA from DRAM, 68k code writes + 0xa, and after it's finished, writes 0. This is probably done to + prevent SVP accessing DRAM and avoid bus clashes. + a15008 - possibly causes an interrupt. There is (unused?) code which writes + 0, 1, and again 0 in sequence. + + +------------------------------------------------------------------------------- + 4. Other notes +------------------------------------------------------------------------------- + +The game has arcade-style memory self-check mode, which can be accessed by +pressing _all_ buttons (including directions) on 3-button controller. There was +probably some loopback plug for this. + +SVP seems to have DMA latency issue similar to one in Sega CD, as the code +always sets DMA source address value larger by 2, then intended for copy. +This is even true for DMAs from ROM, as it's probably hooked through SVP's +memory controller. + +The entry point for the code seems to be at address 0x800 (word 0x400) in ROM, +but it is not clear where the address is fetched from when the system powers +up. The memory test code also sets up "ld PC, .." opcodes at 0x7f4, 0x7f8 and +0x7fc, which jump to some routines, possibly interrupt handlers. This means +that mentioned addresses might be built-in interrupt vectors. + +The SVP code doesn't seem to be timing sensitive, so it can be emulated without +knowing timing of the instructions or even how fast the chip is clocked. +Overclocking doesn't have any effect, underclocking causes slowdowns. Running +10-12M instructions/sec (or possibly less) is sufficient. + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cd_cart.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cd_cart.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cd_cart.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cd_cart.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cd_cart.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cd_cart.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cd_cart.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cd_cart.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdc.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdc.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdc.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdc.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdc.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdc.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdd.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdd.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdd.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdd.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdd.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/cdd.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/cdd.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/gfx.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/gfx.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/gfx.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/gfx.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/gfx.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/gfx.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/gfx.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/gfx.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/LICENSE.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/LICENSE.txt similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/LICENSE.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/LICENSE.txt diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/README.md b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/README.md similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/README.md rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/README.md diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/AUTHORS b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/AUTHORS similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/AUTHORS rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/AUTHORS diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/COPYING.Xiph b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/COPYING.Xiph similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/COPYING.Xiph rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/COPYING.Xiph diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/README b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/README similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/README rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/README diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitmath.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitmath.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitmath.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitmath.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitreader.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitreader.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitreader.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/bitreader.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/cpu.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/cpu.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/cpu.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/cpu.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/crc.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/crc.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/crc.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/crc.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/fixed.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/fixed.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/fixed.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/fixed.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/float.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/float.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/float.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/float.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/format.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/format.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/format.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/format.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/assert.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/assert.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/assert.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/assert.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/callback.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/callback.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/callback.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/callback.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/export.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/export.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/export.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/export.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/format.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/format.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/format.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/format.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/metadata.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/metadata.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/metadata.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/metadata.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/ordinals.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/ordinals.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/ordinals.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/ordinals.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/stream_decoder.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/stream_decoder.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/stream_decoder.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/FLAC/stream_decoder.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitmath.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitmath.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitmath.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitmath.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitreader.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitreader.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitreader.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/bitreader.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/cpu.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/cpu.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/cpu.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/cpu.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/crc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/crc.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/crc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/crc.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/fixed.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/fixed.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/fixed.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/fixed.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/float.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/float.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/float.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/float.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/format.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/format.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/format.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/format.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/lpc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/lpc.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/lpc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/lpc.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/macros.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/macros.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/macros.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/macros.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/md5.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/md5.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/md5.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/md5.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/memory.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/memory.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/memory.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/private/memory.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/protected/stream_decoder.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/protected/stream_decoder.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/protected/stream_decoder.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/protected/stream_decoder.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/alloc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/alloc.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/alloc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/alloc.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/compat.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/compat.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/compat.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/compat.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/endswap.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/endswap.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/endswap.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/include/share/endswap.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_avx2.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_avx2.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_avx2.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_avx2.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse2.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse2.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse2.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse2.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse41.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse41.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse41.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/lpc_intrin_sse41.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/md5.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/md5.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/md5.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/md5.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/memory.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/memory.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/memory.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/memory.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/stream_decoder.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/stream_decoder.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/libFLAC/stream_decoder.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/libFLAC/stream_decoder.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/7zTypes.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/7zTypes.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/7zTypes.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/7zTypes.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/Compiler.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/Compiler.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/Compiler.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/Compiler.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-history.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-history.txt similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-history.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-history.txt diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-sdk.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-sdk.txt similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-sdk.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-sdk.txt diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-specification.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-specification.txt similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-specification.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma-specification.txt diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma.txt similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/DOC/lzma.txt diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzFind.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzHash.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzHash.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzHash.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzHash.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaDec.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/LzmaEnc.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/Precomp.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/Precomp.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/lzma/Precomp.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/lzma/Precomp.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/ChangeLog b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/ChangeLog similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/ChangeLog rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/ChangeLog diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/README b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/README similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/README rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/README diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/adler32.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/adler32.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/adler32.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/adler32.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/gzguts.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/gzguts.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/gzguts.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/gzguts.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inffast.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inffixed.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inffixed.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inffixed.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inffixed.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inflate.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/inftrees.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zconf.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zconf.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zconf.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zconf.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zlib.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zlib.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zlib.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zlib.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/deps/zlib/zutil.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/bitstream.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/bitstream.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/bitstream.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/bitstream.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/bitstream.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/bitstream.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/bitstream.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/bitstream.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/cdrom.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/cdrom.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/cdrom.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/cdrom.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/cdrom.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/cdrom.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/cdrom.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/cdrom.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/chd.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/chd.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/chd.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/chd.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/chd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/chd.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/chd.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/chd.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/coretypes.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/coretypes.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/coretypes.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/coretypes.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/flac.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/flac.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/flac.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/flac.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/flac.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/flac.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/flac.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/flac.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/huffman.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/huffman.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/huffman.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/huffman.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/huffman.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/huffman.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/libchdr/src/huffman.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/libchdr/src/huffman.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/pcm.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/pcm.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/pcm.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/pcm.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/pcm.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/pcm.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/pcm.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/pcm.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/scd.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/scd.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/scd.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/scd.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/scd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/scd.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/cd_hw/scd.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/cd_hw/scd.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/debug/cpuhook.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/debug/cpuhook.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/debug/cpuhook.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/debug/cpuhook.c index 1e588359a9..b0cfb4ba29 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/debug/cpuhook.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/debug/cpuhook.c @@ -1,53 +1,53 @@ -/*************************************************************************************** - * Genesis Plus GX - * CPU hooking support - * - * HOOK_CPU should be defined in a makefile or MSVC project to enable this functionality - * - * Copyright feos (2019) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifdef HOOK_CPU - -#include -#include "cpuhook.h" - -void(*cpu_hook)(hook_type_t type, int width, unsigned int address, unsigned int value) = NULL; - -void set_cpu_hook(void(*hook)(hook_type_t type, int width, unsigned int address, unsigned int value)) -{ - cpu_hook = hook; -} - +/*************************************************************************************** + * Genesis Plus GX + * CPU hooking support + * + * HOOK_CPU should be defined in a makefile or MSVC project to enable this functionality + * + * Copyright feos (2019) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifdef HOOK_CPU + +#include +#include "cpuhook.h" + +void(*cpu_hook)(hook_type_t type, int width, unsigned int address, unsigned int value) = NULL; + +void set_cpu_hook(void(*hook)(hook_type_t type, int width, unsigned int address, unsigned int value)) +{ + cpu_hook = hook; +} + #endif /* HOOK_CPU */ \ No newline at end of file diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/debug/cpuhook.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/debug/cpuhook.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/debug/cpuhook.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/debug/cpuhook.h index 1fea3eceed..d4726c96a4 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/debug/cpuhook.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/debug/cpuhook.h @@ -1,91 +1,91 @@ -/*************************************************************************************** - * Genesis Plus GX - * CPU hooking support - * - * HOOK_CPU should be defined in a makefile or MSVC project to enable this functionality - * - * Copyright DrMefistO (2018-2019) - * - * Copyright feos (2019) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _CPUHOOK_H_ -#define _CPUHOOK_H_ - - -typedef enum { - HOOK_ANY = (0 << 0), - - // M68K - HOOK_M68K_E = (1 << 0), - HOOK_M68K_R = (1 << 1), - HOOK_M68K_W = (1 << 2), - HOOK_M68K_RW = HOOK_M68K_R | HOOK_M68K_W, - - // VDP - HOOK_VRAM_R = (1 << 3), - HOOK_VRAM_W = (1 << 4), - HOOK_VRAM_RW = HOOK_VRAM_R | HOOK_VRAM_W, - - HOOK_CRAM_R = (1 << 5), - HOOK_CRAM_W = (1 << 6), - HOOK_CRAM_RW = HOOK_CRAM_R | HOOK_CRAM_W, - - HOOK_VSRAM_R = (1 << 7), - HOOK_VSRAM_W = (1 << 8), - HOOK_VSRAM_RW = HOOK_VSRAM_R | HOOK_VSRAM_W, - - // Z80 - HOOK_Z80_E = (1 << 9), - HOOK_Z80_R = (1 << 10), - HOOK_Z80_W = (1 << 11), - HOOK_Z80_RW = HOOK_Z80_R | HOOK_Z80_W, - - // REGS - HOOK_VDP_REG = (1 << 12), - HOOK_M68K_REG = (1 << 13), -} hook_type_t; - - -/* CPU hook is called on read, write, and execute. - */ -void (*cpu_hook)(hook_type_t type, int width, unsigned int address, unsigned int value); - -/* Use set_cpu_hook() to assign a callback that can process the data provided - * by cpu_hook(). - */ -void set_cpu_hook(void(*hook)(hook_type_t type, int width, unsigned int address, unsigned int value)); - - +/*************************************************************************************** + * Genesis Plus GX + * CPU hooking support + * + * HOOK_CPU should be defined in a makefile or MSVC project to enable this functionality + * + * Copyright DrMefistO (2018-2019) + * + * Copyright feos (2019) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _CPUHOOK_H_ +#define _CPUHOOK_H_ + + +typedef enum { + HOOK_ANY = (0 << 0), + + // M68K + HOOK_M68K_E = (1 << 0), + HOOK_M68K_R = (1 << 1), + HOOK_M68K_W = (1 << 2), + HOOK_M68K_RW = HOOK_M68K_R | HOOK_M68K_W, + + // VDP + HOOK_VRAM_R = (1 << 3), + HOOK_VRAM_W = (1 << 4), + HOOK_VRAM_RW = HOOK_VRAM_R | HOOK_VRAM_W, + + HOOK_CRAM_R = (1 << 5), + HOOK_CRAM_W = (1 << 6), + HOOK_CRAM_RW = HOOK_CRAM_R | HOOK_CRAM_W, + + HOOK_VSRAM_R = (1 << 7), + HOOK_VSRAM_W = (1 << 8), + HOOK_VSRAM_RW = HOOK_VSRAM_R | HOOK_VSRAM_W, + + // Z80 + HOOK_Z80_E = (1 << 9), + HOOK_Z80_R = (1 << 10), + HOOK_Z80_W = (1 << 11), + HOOK_Z80_RW = HOOK_Z80_R | HOOK_Z80_W, + + // REGS + HOOK_VDP_REG = (1 << 12), + HOOK_M68K_REG = (1 << 13), +} hook_type_t; + + +/* CPU hook is called on read, write, and execute. + */ +void (*cpu_hook)(hook_type_t type, int width, unsigned int address, unsigned int value); + +/* Use set_cpu_hook() to assign a callback that can process the data provided + * by cpu_hook(). + */ +void set_cpu_hook(void(*hook)(hook_type_t type, int width, unsigned int address, unsigned int value)); + + #endif /* _CPUHOOK_H_ */ \ No newline at end of file diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/genesis.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/genesis.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/genesis.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/genesis.c index 4eeedfe4de..b92cf23019 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/genesis.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/genesis.c @@ -1,572 +1,572 @@ -/*************************************************************************************** - * Genesis Plus - * Internal Hardware & Bus controllers - * - * Support for SG-1000, Mark-III, Master System, Game Gear, Mega Drive & Mega CD hardware - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -#ifdef USE_DYNAMIC_ALLOC -external_t *ext; -#else /* External Hardware (Cartridge, CD unit, ...) */ -external_t ext; -#endif -uint8 boot_rom[0x800]; /* Genesis BOOT ROM */ -uint8 work_ram[0x10000]; /* 68K RAM */ -uint8 zram[0x2000]; /* Z80 RAM */ -uint32 zbank; /* Z80 bank window address */ -uint8 zstate; /* Z80 bus state (d0 = BUSACK, d1 = /RESET) */ -uint8 pico_current; /* PICO current page */ - -static uint8 tmss[4]; /* TMSS security register */ - -/*--------------------------------------------------------------------------*/ -/* Init, reset, shutdown functions */ -/*--------------------------------------------------------------------------*/ - -void gen_init(void) -{ - int i; - - /* initialize Z80 */ - z80_init(0,z80_irq_callback); - - /* 8-bit / 16-bit modes */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* initialize main 68k */ - m68k_init(); - m68k.aerr_enabled = config.addr_error; - - /* initialize main 68k memory map */ - - /* $800000-$DFFFFF : illegal access by default */ - for (i=0x80; i<0xe0; i++) - { - m68k.memory_map[i].base = work_ram; /* for VDP DMA */ - m68k.memory_map[i].read8 = m68k_lockup_r_8; - m68k.memory_map[i].read16 = m68k_lockup_r_16; - m68k.memory_map[i].write8 = m68k_lockup_w_8; - m68k.memory_map[i].write16 = m68k_lockup_w_16; - zbank_memory_map[i].read = zbank_lockup_r; - zbank_memory_map[i].write = zbank_lockup_w; - } - - /* $C0xxxx, $C8xxxx, $D0xxxx, $D8xxxx : VDP ports */ - for (i=0xc0; i<0xe0; i+=8) - { - m68k.memory_map[i].read8 = vdp_read_byte; - m68k.memory_map[i].read16 = vdp_read_word; - m68k.memory_map[i].write8 = vdp_write_byte; - m68k.memory_map[i].write16 = vdp_write_word; - zbank_memory_map[i].read = zbank_read_vdp; - zbank_memory_map[i].write = zbank_write_vdp; - } - - /* $E00000-$FFFFFF : Work RAM (64k) */ - for (i=0xe0; i<0x100; i++) - { - m68k.memory_map[i].base = work_ram; - m68k.memory_map[i].read8 = NULL; - m68k.memory_map[i].read16 = NULL; - m68k.memory_map[i].write8 = NULL; - m68k.memory_map[i].write16 = NULL; - - /* Z80 can ONLY write to 68k RAM, not read it */ - zbank_memory_map[i].read = zbank_unused_r; - zbank_memory_map[i].write = NULL; - } - - if (system_hw == SYSTEM_PICO) - { - /* additional registers mapped to $800000-$80FFFF */ - m68k.memory_map[0x80].read8 = pico_read_byte; - m68k.memory_map[0x80].read16 = pico_read_word; - m68k.memory_map[0x80].write8 = m68k_unused_8_w; - m68k.memory_map[0x80].write16 = m68k_unused_16_w; - - /* there is no I/O area (Notaz) */ - m68k.memory_map[0xa1].read8 = m68k_read_bus_8; - m68k.memory_map[0xa1].read16 = m68k_read_bus_16; - m68k.memory_map[0xa1].write8 = m68k_unused_8_w; - m68k.memory_map[0xa1].write16 = m68k_unused_16_w; - - /* initialize page index (closed) */ - pico_current = 0; - } - else - { - /* $A10000-$A1FFFF : I/O & Control registers */ - m68k.memory_map[0xa1].read8 = ctrl_io_read_byte; - m68k.memory_map[0xa1].read16 = ctrl_io_read_word; - m68k.memory_map[0xa1].write8 = ctrl_io_write_byte; - m68k.memory_map[0xa1].write16 = ctrl_io_write_word; - zbank_memory_map[0xa1].read = zbank_read_ctrl_io; - zbank_memory_map[0xa1].write = zbank_write_ctrl_io; - - /* initialize Z80 memory map */ - /* $0000-$3FFF is mapped to Z80 RAM (8K mirrored) */ - /* $4000-$FFFF is mapped to hardware but Z80 PC should never point there */ - for (i=0; i<64; i++) - { - z80_readmap[i] = &zram[(i & 7) << 10]; - } - - /* initialize Z80 memory handlers */ - z80_writemem = z80_memory_w; - z80_readmem = z80_memory_r; - - /* initialize Z80 port handlers */ - z80_writeport = z80_unused_port_w; - z80_readport = z80_unused_port_r; - } - - /* $000000-$7FFFFF : external hardware area */ - if (system_hw == SYSTEM_MCD) - { - /* initialize SUB-CPU */ - s68k_init(); - - /* initialize CD hardware */ - scd_init(); - } - else - { - /* Cartridge hardware */ - md_cart_init(); - } - } - else - { - /* initialize cartridge hardware & Z80 memory handlers */ - sms_cart_init(); - - /* initialize Z80 ports handlers */ - switch (system_hw) - { - /* Master System compatibility mode */ - case SYSTEM_PBC: - { - z80_writeport = z80_md_port_w; - z80_readport = z80_md_port_r; - break; - } - - /* Game Gear hardware */ - case SYSTEM_GG: - case SYSTEM_GGMS: - { - /* initialize cartridge hardware & Z80 memory handlers */ - sms_cart_init(); - - /* initialize Z80 ports handlers */ - z80_writeport = z80_gg_port_w; - z80_readport = z80_gg_port_r; - break; - } - - /* Master System hardware */ - case SYSTEM_SMS: - case SYSTEM_SMS2: - { - z80_writeport = z80_ms_port_w; - z80_readport = z80_ms_port_r; - break; - } - - /* Mark-III hardware */ - case SYSTEM_MARKIII: - { - z80_writeport = z80_m3_port_w; - z80_readport = z80_m3_port_r; - break; - } - - /* SG-1000 hardware */ - case SYSTEM_SG: - case SYSTEM_SGII: - { - z80_writeport = z80_sg_port_w; - z80_readport = z80_sg_port_r; - break; - } - } - } -} - -void gen_reset(int hard_reset) -{ - /* System Reset */ - if (hard_reset) - { - /* On hard reset, 68k CPU always starts at the same point in VDP frame */ - /* Tests performed on VA4 PAL MD1 showed that the first HVC value read */ - /* with 'move.w #0x8104,0xC00004' , 'move.w 0xC00008,%d0' sequence was */ - /* 0x9F21 in 60HZ mode (0x9F00 if Mode 5 is not enabled by first MOVE) */ - /* 0x8421 in 50HZ mode (0x8400 if Mode 5 is not enabled by first MOVE) */ - /* Same value is returned on every power ON, indicating VDP is always */ - /* starting at the same fixed point in frame (probably at the start of */ - /* VSYNC and HSYNC) while 68k /VRES line remains asserted a fixed time */ - /* after /SRES line has been released (13 msec approx). The difference */ - /* between PAL & NTSC is caused by the top border area being 27 lines */ - /* larger in PAL mode than in NTSC mode. CPU cycle counter is adjusted */ - /* to match these results (taking in account emulated frame is started */ - /* on line 192 */ - m68k.cycles = ((lines_per_frame - 192 + 159 - (27 * vdp_pal)) * MCYCLES_PER_LINE) + 1004; - - /* clear RAM (on real hardware, RAM values are random / undetermined on Power ON) */ - memset(work_ram, 0x00, sizeof (work_ram)); - memset(zram, 0x00, sizeof (zram)); - } - else - { - /* when RESET button is pressed, 68k could be anywhere in VDP frame (Bonkers, Eternal Champions, X-Men 2) */ - m68k.cycles = (uint32)((MCYCLES_PER_LINE * lines_per_frame) * ((double)rand() / (double)RAND_MAX)); - - /* reset YM2612 (on hard reset, this is done by sound_reset) */ - fm_reset(0); - } - - /* 68k M-cycles should be a multiple of 7 */ - m68k.cycles = (m68k.cycles / 7) * 7; - - /* Z80 M-cycles should be a multiple of 15 */ - Z80.cycles = (m68k.cycles / 15) * 15; - - /* 8-bit / 16-bit modes */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - if (system_hw == SYSTEM_MCD) - { - /* FRES is only asserted on Power ON */ - if (hard_reset) - { - /* reset CD hardware */ - scd_reset(1); - } - - /* reset MD cartridge hardware (only when booting from cartridge) */ - if (scd.cartridge.boot) - { - md_cart_reset(hard_reset); - } - } - else - { - /* reset MD cartridge hardware */ - md_cart_reset(hard_reset); - } - - /* Z80 bus is released & Z80 is reseted */ - m68k.memory_map[0xa0].read8 = m68k_read_bus_8; - m68k.memory_map[0xa0].read16 = m68k_read_bus_16; - m68k.memory_map[0xa0].write8 = m68k_unused_8_w; - m68k.memory_map[0xa0].write16 = m68k_unused_16_w; - zstate = 0; - - /* assume default bank is $000000-$007FFF */ - zbank = 0; - - /* TMSS support */ - if ((config.bios & 1) && (system_hw == SYSTEM_MD) && hard_reset) - { - int i; - - /* clear TMSS register */ - memset(tmss, 0x00, sizeof(tmss)); - - /* VDP access is locked by default */ - for (i=0xc0; i<0xe0; i+=8) - { - m68k.memory_map[i].read8 = m68k_lockup_r_8; - m68k.memory_map[i].read16 = m68k_lockup_r_16; - m68k.memory_map[i].write8 = m68k_lockup_w_8; - m68k.memory_map[i].write16 = m68k_lockup_w_16; - zbank_memory_map[i].read = zbank_lockup_r; - zbank_memory_map[i].write = zbank_lockup_w; - } - - /* check if BOOT ROM is loaded */ - if (system_bios & SYSTEM_MD) - { - /* save default cartridge slot mapping */ - cart.base = m68k.memory_map[0].base; - - /* BOOT ROM is mapped at $000000-$0007FF */ - m68k.memory_map[0].base = boot_rom; - } - } - - /* reset MAIN-CPU */ - m68k_pulse_reset(); - } - else - { - /* RAM state at power-on is undefined on some systems */ - if ((system_hw == SYSTEM_MARKIII) || ((system_hw & SYSTEM_SMS) && (region_code == REGION_JAPAN_NTSC))) - { - /* some korean games rely on RAM to be initialized with values different from $00 or $ff */ - memset(work_ram, 0xf0, sizeof(work_ram)); - } - - /* reset cartridge hardware */ - sms_cart_reset(); - - /* halt 68k (/VRES is forced low) */ - m68k_pulse_halt(); - } - - /* reset Z80 */ - z80_reset(); - - /* some Z80 registers need to be initialized on Power ON */ - if (hard_reset) - { - /* Power Base Converter specific */ - if (system_hw == SYSTEM_PBC) - { - /* startup code logic (verified on real hardware): */ - /* 21 01 E1 : LD HL, $E101 - 25 -- -- : DEC H - F9 -- -- : LD SP,HL - C7 -- -- : RST $00 - 01 01 -- : LD BC, $xx01 - */ - Z80.hl.w.l = 0xE001; - Z80.sp.w.l = 0xDFFF; - Z80.r = 4; - } - - /* Master System & Game Gear specific */ - else if (system_hw & (SYSTEM_SMS | SYSTEM_GG)) - { - /* check if BIOS is not being used */ - if ((!(config.bios & 1) || !(system_bios & (SYSTEM_SMS | SYSTEM_GG)))) - { - /* a few Master System (Ace of Aces, Shadow Dancer) & Game Gear (Ecco the Dolphin, Evander Holyfield Real Deal Boxing) games crash if SP is not properly initialized */ - Z80.sp.w.l = 0xDFF0; - } - } - } -} - -/*-----------------------------------------------------------------------*/ -/* OS ROM / TMSS register control functions (Genesis mode) */ -/*-----------------------------------------------------------------------*/ - -void gen_tmss_w(unsigned int offset, unsigned int data) -{ - int i; - - /* write TMSS register */ - WRITE_WORD(tmss, offset, data); - - /* VDP requires "SEGA" value to be written in TMSS register */ - if (memcmp((char *)tmss, "SEGA", 4) == 0) - { - for (i=0xc0; i<0xe0; i+=8) - { - m68k.memory_map[i].read8 = vdp_read_byte; - m68k.memory_map[i].read16 = vdp_read_word; - m68k.memory_map[i].write8 = vdp_write_byte; - m68k.memory_map[i].write16 = vdp_write_word; - zbank_memory_map[i].read = zbank_read_vdp; - zbank_memory_map[i].write = zbank_write_vdp; - } - } - else - { - for (i=0xc0; i<0xe0; i+=8) - { - m68k.memory_map[i].read8 = m68k_lockup_r_8; - m68k.memory_map[i].read16 = m68k_lockup_r_16; - m68k.memory_map[i].write8 = m68k_lockup_w_8; - m68k.memory_map[i].write16 = m68k_lockup_w_16; - zbank_memory_map[i].read = zbank_lockup_r; - zbank_memory_map[i].write = zbank_lockup_w; - } - } -} - -void gen_bankswitch_w(unsigned int data) -{ - /* check if BOOT ROM is loaded */ - if (system_bios & SYSTEM_MD) - { - if (data & 1) - { - /* enable cartridge ROM */ - m68k.memory_map[0].base = cart.base; - } - else - { - /* enable internal BOOT ROM */ - m68k.memory_map[0].base = boot_rom; - } - } -} - -unsigned int gen_bankswitch_r(void) -{ - /* check if BOOT ROM is loaded */ - if (system_bios & SYSTEM_MD) - { - return (m68k.memory_map[0].base == cart.base); - } - - return 0xff; -} - - -/*-----------------------------------------------------------------------*/ -/* Z80 Bus controller chip functions (Genesis mode) */ -/* ----------------------------------------------------------------------*/ - -void gen_zbusreq_w(unsigned int data, unsigned int cycles) -{ - if (data) /* !ZBUSREQ asserted */ - { - /* check if Z80 is going to be stopped */ - if (zstate == 1) - { - /* resynchronize with 68k */ - z80_run(cycles); - - /* enable 68k access to Z80 bus */ - m68k.memory_map[0xa0].read8 = z80_read_byte; - m68k.memory_map[0xa0].read16 = z80_read_word; - m68k.memory_map[0xa0].write8 = z80_write_byte; - m68k.memory_map[0xa0].write16 = z80_write_word; - } - - /* update Z80 bus status */ - zstate |= 2; - } - else /* !ZBUSREQ released */ - { - /* check if Z80 is going to be restarted */ - if (zstate == 3) - { - /* resynchronize with 68k (Z80 cycles should remain a multiple of 15 MClocks) */ - Z80.cycles = ((cycles + 14) / 15) * 15; - - /* disable 68k access to Z80 bus */ - m68k.memory_map[0xa0].read8 = m68k_read_bus_8; - m68k.memory_map[0xa0].read16 = m68k_read_bus_16; - m68k.memory_map[0xa0].write8 = m68k_unused_8_w; - m68k.memory_map[0xa0].write16 = m68k_unused_16_w; - } - - /* update Z80 bus status */ - zstate &= 1; - } -} - -void gen_zreset_w(unsigned int data, unsigned int cycles) -{ - if (data) /* !ZRESET released */ - { - /* check if Z80 is going to be restarted */ - if (zstate == 0) - { - /* resynchronize with 68k (Z80 cycles should remain a multiple of 15 MClocks) */ - Z80.cycles = ((cycles + 14) / 15) * 15; - - /* reset Z80 & YM2612 */ - z80_reset(); - fm_reset(cycles); - } - - /* check if 68k access to Z80 bus is granted */ - else if (zstate == 2) - { - /* enable 68k access to Z80 bus */ - m68k.memory_map[0xa0].read8 = z80_read_byte; - m68k.memory_map[0xa0].read16 = z80_read_word; - m68k.memory_map[0xa0].write8 = z80_write_byte; - m68k.memory_map[0xa0].write16 = z80_write_word; - - /* reset Z80 & YM2612 */ - z80_reset(); - fm_reset(cycles); - } - - /* update Z80 bus status */ - zstate |= 1; - } - else /* !ZRESET asserted */ - { - /* check if Z80 is going to be stopped */ - if (zstate == 1) - { - /* resynchronize with 68k */ - z80_run(cycles); - } - - /* check if 68k had access to Z80 bus */ - else if (zstate == 3) - { - /* disable 68k access to Z80 bus */ - m68k.memory_map[0xa0].read8 = m68k_read_bus_8; - m68k.memory_map[0xa0].read16 = m68k_read_bus_16; - m68k.memory_map[0xa0].write8 = m68k_unused_8_w; - m68k.memory_map[0xa0].write16 = m68k_unused_16_w; - } - - /* stop YM2612 */ - fm_reset(cycles); - - /* update Z80 bus status */ - zstate &= 2; - } -} - -void gen_zbank_w (unsigned int data) -{ - zbank = ((zbank >> 1) | ((data & 1) << 23)) & 0xFF8000; -} - - -/*-----------------------------------------------------------------------*/ -/* Z80 interrupt callback */ -/* ----------------------------------------------------------------------*/ - -int z80_irq_callback (int param) -{ - return -1; -} +/*************************************************************************************** + * Genesis Plus + * Internal Hardware & Bus controllers + * + * Support for SG-1000, Mark-III, Master System, Game Gear, Mega Drive & Mega CD hardware + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +#ifdef USE_DYNAMIC_ALLOC +external_t *ext; +#else /* External Hardware (Cartridge, CD unit, ...) */ +external_t ext; +#endif +uint8 boot_rom[0x800]; /* Genesis BOOT ROM */ +uint8 work_ram[0x10000]; /* 68K RAM */ +uint8 zram[0x2000]; /* Z80 RAM */ +uint32 zbank; /* Z80 bank window address */ +uint8 zstate; /* Z80 bus state (d0 = BUSACK, d1 = /RESET) */ +uint8 pico_current; /* PICO current page */ + +static uint8 tmss[4]; /* TMSS security register */ + +/*--------------------------------------------------------------------------*/ +/* Init, reset, shutdown functions */ +/*--------------------------------------------------------------------------*/ + +void gen_init(void) +{ + int i; + + /* initialize Z80 */ + z80_init(0,z80_irq_callback); + + /* 8-bit / 16-bit modes */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* initialize main 68k */ + m68k_init(); + m68k.aerr_enabled = config.addr_error; + + /* initialize main 68k memory map */ + + /* $800000-$DFFFFF : illegal access by default */ + for (i=0x80; i<0xe0; i++) + { + m68k.memory_map[i].base = work_ram; /* for VDP DMA */ + m68k.memory_map[i].read8 = m68k_lockup_r_8; + m68k.memory_map[i].read16 = m68k_lockup_r_16; + m68k.memory_map[i].write8 = m68k_lockup_w_8; + m68k.memory_map[i].write16 = m68k_lockup_w_16; + zbank_memory_map[i].read = zbank_lockup_r; + zbank_memory_map[i].write = zbank_lockup_w; + } + + /* $C0xxxx, $C8xxxx, $D0xxxx, $D8xxxx : VDP ports */ + for (i=0xc0; i<0xe0; i+=8) + { + m68k.memory_map[i].read8 = vdp_read_byte; + m68k.memory_map[i].read16 = vdp_read_word; + m68k.memory_map[i].write8 = vdp_write_byte; + m68k.memory_map[i].write16 = vdp_write_word; + zbank_memory_map[i].read = zbank_read_vdp; + zbank_memory_map[i].write = zbank_write_vdp; + } + + /* $E00000-$FFFFFF : Work RAM (64k) */ + for (i=0xe0; i<0x100; i++) + { + m68k.memory_map[i].base = work_ram; + m68k.memory_map[i].read8 = NULL; + m68k.memory_map[i].read16 = NULL; + m68k.memory_map[i].write8 = NULL; + m68k.memory_map[i].write16 = NULL; + + /* Z80 can ONLY write to 68k RAM, not read it */ + zbank_memory_map[i].read = zbank_unused_r; + zbank_memory_map[i].write = NULL; + } + + if (system_hw == SYSTEM_PICO) + { + /* additional registers mapped to $800000-$80FFFF */ + m68k.memory_map[0x80].read8 = pico_read_byte; + m68k.memory_map[0x80].read16 = pico_read_word; + m68k.memory_map[0x80].write8 = m68k_unused_8_w; + m68k.memory_map[0x80].write16 = m68k_unused_16_w; + + /* there is no I/O area (Notaz) */ + m68k.memory_map[0xa1].read8 = m68k_read_bus_8; + m68k.memory_map[0xa1].read16 = m68k_read_bus_16; + m68k.memory_map[0xa1].write8 = m68k_unused_8_w; + m68k.memory_map[0xa1].write16 = m68k_unused_16_w; + + /* initialize page index (closed) */ + pico_current = 0; + } + else + { + /* $A10000-$A1FFFF : I/O & Control registers */ + m68k.memory_map[0xa1].read8 = ctrl_io_read_byte; + m68k.memory_map[0xa1].read16 = ctrl_io_read_word; + m68k.memory_map[0xa1].write8 = ctrl_io_write_byte; + m68k.memory_map[0xa1].write16 = ctrl_io_write_word; + zbank_memory_map[0xa1].read = zbank_read_ctrl_io; + zbank_memory_map[0xa1].write = zbank_write_ctrl_io; + + /* initialize Z80 memory map */ + /* $0000-$3FFF is mapped to Z80 RAM (8K mirrored) */ + /* $4000-$FFFF is mapped to hardware but Z80 PC should never point there */ + for (i=0; i<64; i++) + { + z80_readmap[i] = &zram[(i & 7) << 10]; + } + + /* initialize Z80 memory handlers */ + z80_writemem = z80_memory_w; + z80_readmem = z80_memory_r; + + /* initialize Z80 port handlers */ + z80_writeport = z80_unused_port_w; + z80_readport = z80_unused_port_r; + } + + /* $000000-$7FFFFF : external hardware area */ + if (system_hw == SYSTEM_MCD) + { + /* initialize SUB-CPU */ + s68k_init(); + + /* initialize CD hardware */ + scd_init(); + } + else + { + /* Cartridge hardware */ + md_cart_init(); + } + } + else + { + /* initialize cartridge hardware & Z80 memory handlers */ + sms_cart_init(); + + /* initialize Z80 ports handlers */ + switch (system_hw) + { + /* Master System compatibility mode */ + case SYSTEM_PBC: + { + z80_writeport = z80_md_port_w; + z80_readport = z80_md_port_r; + break; + } + + /* Game Gear hardware */ + case SYSTEM_GG: + case SYSTEM_GGMS: + { + /* initialize cartridge hardware & Z80 memory handlers */ + sms_cart_init(); + + /* initialize Z80 ports handlers */ + z80_writeport = z80_gg_port_w; + z80_readport = z80_gg_port_r; + break; + } + + /* Master System hardware */ + case SYSTEM_SMS: + case SYSTEM_SMS2: + { + z80_writeport = z80_ms_port_w; + z80_readport = z80_ms_port_r; + break; + } + + /* Mark-III hardware */ + case SYSTEM_MARKIII: + { + z80_writeport = z80_m3_port_w; + z80_readport = z80_m3_port_r; + break; + } + + /* SG-1000 hardware */ + case SYSTEM_SG: + case SYSTEM_SGII: + { + z80_writeport = z80_sg_port_w; + z80_readport = z80_sg_port_r; + break; + } + } + } +} + +void gen_reset(int hard_reset) +{ + /* System Reset */ + if (hard_reset) + { + /* On hard reset, 68k CPU always starts at the same point in VDP frame */ + /* Tests performed on VA4 PAL MD1 showed that the first HVC value read */ + /* with 'move.w #0x8104,0xC00004' , 'move.w 0xC00008,%d0' sequence was */ + /* 0x9F21 in 60HZ mode (0x9F00 if Mode 5 is not enabled by first MOVE) */ + /* 0x8421 in 50HZ mode (0x8400 if Mode 5 is not enabled by first MOVE) */ + /* Same value is returned on every power ON, indicating VDP is always */ + /* starting at the same fixed point in frame (probably at the start of */ + /* VSYNC and HSYNC) while 68k /VRES line remains asserted a fixed time */ + /* after /SRES line has been released (13 msec approx). The difference */ + /* between PAL & NTSC is caused by the top border area being 27 lines */ + /* larger in PAL mode than in NTSC mode. CPU cycle counter is adjusted */ + /* to match these results (taking in account emulated frame is started */ + /* on line 192 */ + m68k.cycles = ((lines_per_frame - 192 + 159 - (27 * vdp_pal)) * MCYCLES_PER_LINE) + 1004; + + /* clear RAM (on real hardware, RAM values are random / undetermined on Power ON) */ + memset(work_ram, 0x00, sizeof (work_ram)); + memset(zram, 0x00, sizeof (zram)); + } + else + { + /* when RESET button is pressed, 68k could be anywhere in VDP frame (Bonkers, Eternal Champions, X-Men 2) */ + m68k.cycles = (uint32)((MCYCLES_PER_LINE * lines_per_frame) * ((double)rand() / (double)RAND_MAX)); + + /* reset YM2612 (on hard reset, this is done by sound_reset) */ + fm_reset(0); + } + + /* 68k M-cycles should be a multiple of 7 */ + m68k.cycles = (m68k.cycles / 7) * 7; + + /* Z80 M-cycles should be a multiple of 15 */ + Z80.cycles = (m68k.cycles / 15) * 15; + + /* 8-bit / 16-bit modes */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + if (system_hw == SYSTEM_MCD) + { + /* FRES is only asserted on Power ON */ + if (hard_reset) + { + /* reset CD hardware */ + scd_reset(1); + } + + /* reset MD cartridge hardware (only when booting from cartridge) */ + if (scd.cartridge.boot) + { + md_cart_reset(hard_reset); + } + } + else + { + /* reset MD cartridge hardware */ + md_cart_reset(hard_reset); + } + + /* Z80 bus is released & Z80 is reseted */ + m68k.memory_map[0xa0].read8 = m68k_read_bus_8; + m68k.memory_map[0xa0].read16 = m68k_read_bus_16; + m68k.memory_map[0xa0].write8 = m68k_unused_8_w; + m68k.memory_map[0xa0].write16 = m68k_unused_16_w; + zstate = 0; + + /* assume default bank is $000000-$007FFF */ + zbank = 0; + + /* TMSS support */ + if ((config.bios & 1) && (system_hw == SYSTEM_MD) && hard_reset) + { + int i; + + /* clear TMSS register */ + memset(tmss, 0x00, sizeof(tmss)); + + /* VDP access is locked by default */ + for (i=0xc0; i<0xe0; i+=8) + { + m68k.memory_map[i].read8 = m68k_lockup_r_8; + m68k.memory_map[i].read16 = m68k_lockup_r_16; + m68k.memory_map[i].write8 = m68k_lockup_w_8; + m68k.memory_map[i].write16 = m68k_lockup_w_16; + zbank_memory_map[i].read = zbank_lockup_r; + zbank_memory_map[i].write = zbank_lockup_w; + } + + /* check if BOOT ROM is loaded */ + if (system_bios & SYSTEM_MD) + { + /* save default cartridge slot mapping */ + cart.base = m68k.memory_map[0].base; + + /* BOOT ROM is mapped at $000000-$0007FF */ + m68k.memory_map[0].base = boot_rom; + } + } + + /* reset MAIN-CPU */ + m68k_pulse_reset(); + } + else + { + /* RAM state at power-on is undefined on some systems */ + if ((system_hw == SYSTEM_MARKIII) || ((system_hw & SYSTEM_SMS) && (region_code == REGION_JAPAN_NTSC))) + { + /* some korean games rely on RAM to be initialized with values different from $00 or $ff */ + memset(work_ram, 0xf0, sizeof(work_ram)); + } + + /* reset cartridge hardware */ + sms_cart_reset(); + + /* halt 68k (/VRES is forced low) */ + m68k_pulse_halt(); + } + + /* reset Z80 */ + z80_reset(); + + /* some Z80 registers need to be initialized on Power ON */ + if (hard_reset) + { + /* Power Base Converter specific */ + if (system_hw == SYSTEM_PBC) + { + /* startup code logic (verified on real hardware): */ + /* 21 01 E1 : LD HL, $E101 + 25 -- -- : DEC H + F9 -- -- : LD SP,HL + C7 -- -- : RST $00 + 01 01 -- : LD BC, $xx01 + */ + Z80.hl.w.l = 0xE001; + Z80.sp.w.l = 0xDFFF; + Z80.r = 4; + } + + /* Master System & Game Gear specific */ + else if (system_hw & (SYSTEM_SMS | SYSTEM_GG)) + { + /* check if BIOS is not being used */ + if ((!(config.bios & 1) || !(system_bios & (SYSTEM_SMS | SYSTEM_GG)))) + { + /* a few Master System (Ace of Aces, Shadow Dancer) & Game Gear (Ecco the Dolphin, Evander Holyfield Real Deal Boxing) games crash if SP is not properly initialized */ + Z80.sp.w.l = 0xDFF0; + } + } + } +} + +/*-----------------------------------------------------------------------*/ +/* OS ROM / TMSS register control functions (Genesis mode) */ +/*-----------------------------------------------------------------------*/ + +void gen_tmss_w(unsigned int offset, unsigned int data) +{ + int i; + + /* write TMSS register */ + WRITE_WORD(tmss, offset, data); + + /* VDP requires "SEGA" value to be written in TMSS register */ + if (memcmp((char *)tmss, "SEGA", 4) == 0) + { + for (i=0xc0; i<0xe0; i+=8) + { + m68k.memory_map[i].read8 = vdp_read_byte; + m68k.memory_map[i].read16 = vdp_read_word; + m68k.memory_map[i].write8 = vdp_write_byte; + m68k.memory_map[i].write16 = vdp_write_word; + zbank_memory_map[i].read = zbank_read_vdp; + zbank_memory_map[i].write = zbank_write_vdp; + } + } + else + { + for (i=0xc0; i<0xe0; i+=8) + { + m68k.memory_map[i].read8 = m68k_lockup_r_8; + m68k.memory_map[i].read16 = m68k_lockup_r_16; + m68k.memory_map[i].write8 = m68k_lockup_w_8; + m68k.memory_map[i].write16 = m68k_lockup_w_16; + zbank_memory_map[i].read = zbank_lockup_r; + zbank_memory_map[i].write = zbank_lockup_w; + } + } +} + +void gen_bankswitch_w(unsigned int data) +{ + /* check if BOOT ROM is loaded */ + if (system_bios & SYSTEM_MD) + { + if (data & 1) + { + /* enable cartridge ROM */ + m68k.memory_map[0].base = cart.base; + } + else + { + /* enable internal BOOT ROM */ + m68k.memory_map[0].base = boot_rom; + } + } +} + +unsigned int gen_bankswitch_r(void) +{ + /* check if BOOT ROM is loaded */ + if (system_bios & SYSTEM_MD) + { + return (m68k.memory_map[0].base == cart.base); + } + + return 0xff; +} + + +/*-----------------------------------------------------------------------*/ +/* Z80 Bus controller chip functions (Genesis mode) */ +/* ----------------------------------------------------------------------*/ + +void gen_zbusreq_w(unsigned int data, unsigned int cycles) +{ + if (data) /* !ZBUSREQ asserted */ + { + /* check if Z80 is going to be stopped */ + if (zstate == 1) + { + /* resynchronize with 68k */ + z80_run(cycles); + + /* enable 68k access to Z80 bus */ + m68k.memory_map[0xa0].read8 = z80_read_byte; + m68k.memory_map[0xa0].read16 = z80_read_word; + m68k.memory_map[0xa0].write8 = z80_write_byte; + m68k.memory_map[0xa0].write16 = z80_write_word; + } + + /* update Z80 bus status */ + zstate |= 2; + } + else /* !ZBUSREQ released */ + { + /* check if Z80 is going to be restarted */ + if (zstate == 3) + { + /* resynchronize with 68k (Z80 cycles should remain a multiple of 15 MClocks) */ + Z80.cycles = ((cycles + 14) / 15) * 15; + + /* disable 68k access to Z80 bus */ + m68k.memory_map[0xa0].read8 = m68k_read_bus_8; + m68k.memory_map[0xa0].read16 = m68k_read_bus_16; + m68k.memory_map[0xa0].write8 = m68k_unused_8_w; + m68k.memory_map[0xa0].write16 = m68k_unused_16_w; + } + + /* update Z80 bus status */ + zstate &= 1; + } +} + +void gen_zreset_w(unsigned int data, unsigned int cycles) +{ + if (data) /* !ZRESET released */ + { + /* check if Z80 is going to be restarted */ + if (zstate == 0) + { + /* resynchronize with 68k (Z80 cycles should remain a multiple of 15 MClocks) */ + Z80.cycles = ((cycles + 14) / 15) * 15; + + /* reset Z80 & YM2612 */ + z80_reset(); + fm_reset(cycles); + } + + /* check if 68k access to Z80 bus is granted */ + else if (zstate == 2) + { + /* enable 68k access to Z80 bus */ + m68k.memory_map[0xa0].read8 = z80_read_byte; + m68k.memory_map[0xa0].read16 = z80_read_word; + m68k.memory_map[0xa0].write8 = z80_write_byte; + m68k.memory_map[0xa0].write16 = z80_write_word; + + /* reset Z80 & YM2612 */ + z80_reset(); + fm_reset(cycles); + } + + /* update Z80 bus status */ + zstate |= 1; + } + else /* !ZRESET asserted */ + { + /* check if Z80 is going to be stopped */ + if (zstate == 1) + { + /* resynchronize with 68k */ + z80_run(cycles); + } + + /* check if 68k had access to Z80 bus */ + else if (zstate == 3) + { + /* disable 68k access to Z80 bus */ + m68k.memory_map[0xa0].read8 = m68k_read_bus_8; + m68k.memory_map[0xa0].read16 = m68k_read_bus_16; + m68k.memory_map[0xa0].write8 = m68k_unused_8_w; + m68k.memory_map[0xa0].write16 = m68k_unused_16_w; + } + + /* stop YM2612 */ + fm_reset(cycles); + + /* update Z80 bus status */ + zstate &= 2; + } +} + +void gen_zbank_w (unsigned int data) +{ + zbank = ((zbank >> 1) | ((data & 1) << 23)) & 0xFF8000; +} + + +/*-----------------------------------------------------------------------*/ +/* Z80 interrupt callback */ +/* ----------------------------------------------------------------------*/ + +int z80_irq_callback (int param) +{ + return -1; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/genesis.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/genesis.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/genesis.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/genesis.h index c4c0ea62bb..e8f0a03375 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/genesis.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/genesis.h @@ -1,81 +1,81 @@ -/*************************************************************************************** - * Genesis Plus - * Internal hardware & Bus controllers - * - * Support for SG-1000, Mark-III, Master System, Game Gear, Mega Drive & Mega CD hardware - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _GENESIS_H_ -#define _GENESIS_H_ - -#include "md_cart.h" -#include "sms_cart.h" -#include "scd.h" - -/* External Hardware */ -typedef union -{ - md_cart_t md_cart; - cd_hw_t cd_hw; -} external_t; - -/* Global variables */ -#ifdef USE_DYNAMIC_ALLOC -extern external_t *ext; -#else -extern external_t ext; -#endif -extern uint8 boot_rom[0x800]; -extern uint8 work_ram[0x10000]; -extern uint8 zram[0x2000]; -extern uint32 zbank; -extern uint8 zstate; -extern uint8 pico_current; - -/* Function prototypes */ -extern void gen_init(void); -extern void gen_reset(int hard_reset); -extern void gen_tmss_w(unsigned int offset, unsigned int data); -extern void gen_bankswitch_w(unsigned int data); -extern unsigned int gen_bankswitch_r(void); -extern void gen_zbusreq_w(unsigned int state, unsigned int cycles); -extern void gen_zreset_w(unsigned int state, unsigned int cycles); -extern void gen_zbank_w(unsigned int state); -extern int z80_irq_callback(int param); - -#endif /* _GEN_H_ */ - +/*************************************************************************************** + * Genesis Plus + * Internal hardware & Bus controllers + * + * Support for SG-1000, Mark-III, Master System, Game Gear, Mega Drive & Mega CD hardware + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _GENESIS_H_ +#define _GENESIS_H_ + +#include "md_cart.h" +#include "sms_cart.h" +#include "scd.h" + +/* External Hardware */ +typedef union +{ + md_cart_t md_cart; + cd_hw_t cd_hw; +} external_t; + +/* Global variables */ +#ifdef USE_DYNAMIC_ALLOC +extern external_t *ext; +#else +extern external_t ext; +#endif +extern uint8 boot_rom[0x800]; +extern uint8 work_ram[0x10000]; +extern uint8 zram[0x2000]; +extern uint32 zbank; +extern uint8 zstate; +extern uint8 pico_current; + +/* Function prototypes */ +extern void gen_init(void); +extern void gen_reset(int hard_reset); +extern void gen_tmss_w(unsigned int offset, unsigned int data); +extern void gen_bankswitch_w(unsigned int data); +extern unsigned int gen_bankswitch_r(void); +extern void gen_zbusreq_w(unsigned int state, unsigned int cycles); +extern void gen_zreset_w(unsigned int state, unsigned int cycles); +extern void gen_zbank_w(unsigned int state); +extern int z80_irq_callback(int param); + +#endif /* _GEN_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/config.c new file mode 100644 index 0000000000..5bed14a804 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/config.c @@ -0,0 +1,261 @@ +/**************************************************************************** + * config.c + * + * Genesis Plus GX configuration file support + * + * Copyright Eke-Eke (2007-2013) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "gui.h" +#include "file_load.h" + +static int config_load(void) +{ + /* open configuration file */ + char fname[MAXPATHLEN]; + sprintf (fname, "%s/config.ini", DEFAULT_PATH); + FILE *fp = fopen(fname, "rb"); + if (fp) + { + /* check file size */ + fseek(fp, 0, SEEK_END); + if (ftell(fp) != sizeof(config)) + { + fclose(fp); + return 0; + } + + /* check version */ + char version[16]; + fseek(fp, 0, SEEK_SET); + fread(version, 16, 1, fp); + if (memcmp(version,CONFIG_VERSION,16)) + { + fclose(fp); + return 0; + } + + /* read file */ + fseek(fp, 0, SEEK_SET); + fread(&config, sizeof(config), 1, fp); + fclose(fp); + return 1; + } + return 0; +} + +void config_save(void) +{ + /* open configuration file */ + char fname[MAXPATHLEN]; + sprintf (fname, "%s/config.ini", DEFAULT_PATH); + FILE *fp = fopen(fname, "wb"); + if (fp) + { + /* write file */ + fwrite(&config, sizeof(config), 1, fp); + fclose(fp); + } +} + +void config_default(void) +{ + /* version TAG */ + strncpy(config.version,CONFIG_VERSION,16); + + /* sound options */ + config.psg_preamp = 150; + config.fm_preamp = 100; + config.hq_fm = 1; + config.psgBoostNoise = 1; + config.filter = 1; + config.lp_range = 0x9999; /* 0.6 in 16.16 fixed point */ + config.low_freq = 880; + config.high_freq = 5000; + config.lg = 1.0; + config.mg = 1.0; + config.hg = 1.0; + config.dac_bits = 14; + config.ym2413 = 2; /* AUTO */ + config.mono = 0; + + /* system options */ + config.system = 0; /* AUTO */ + config.region_detect = 0; /* AUTO */ + config.vdp_mode = 0; /* AUTO */ + config.master_clock = 0; /* AUTO */ + config.force_dtack = 0; + config.addr_error = 1; + config.bios = 0; + config.lock_on = 0; + config.hot_swap = 0; + + /* video options */ + config.xshift = 0; + config.yshift = 0; + config.xscale = 0; + config.yscale = 0; + config.aspect = 1; + config.overscan = 3; /* FULL */ + config.gg_extra = 0; + config.ntsc = 0; + config.vsync = 1; /* AUTO */ + config.bilinear = 1; + config.vfilter = 1; + + if (VIDEO_HaveComponentCable()) + { + config.render = 2; + } + else + { + config.render = 0; + } + + switch (vmode->viTVMode >> 2) + { + case VI_PAL: + config.tv_mode = 1; /* 50hz only */ + break; + + case VI_EURGB60: + config.tv_mode = 2; /* 50/60hz */ + break; + + default: + config.tv_mode = 0; /* 60hz only */ + break; + } + +#ifdef HW_RVL + config.trap = 0; + config.gamma = VI_GM_1_0 / 10.0; +#endif + + /* controllers options */ + config.gun_cursor[0] = 1; + config.gun_cursor[1] = 1; + config.invert_mouse = 0; + + /* on-screen options */ + config.cd_leds = 0; + + /* menu options */ + config.autoload = 0; + config.autocheat = 0; +#ifdef HW_RVL + config.s_auto = 1; +#else + config.s_auto = 0; + config.v_prog = 1; +#endif + config.s_default = 1; + config.s_device = 0; + config.l_device = 0; + config.bg_overlay = 0; + config.screen_w = 658; + config.bgm_volume = 100.0; + config.sfx_volume = 100.0; + + /* default ROM directories */ +#ifdef HW_RVL + sprintf (config.lastdir[0][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[1][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[2][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[3][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[4][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[0][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[1][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[2][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[3][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[4][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[0][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[1][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[2][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[3][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[4][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); +#else + sprintf (config.lastdir[0][TYPE_SD], "%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[1][TYPE_SD], "%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[2][TYPE_SD], "%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[3][TYPE_SD], "%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[4][TYPE_SD], "%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[0][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[1][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[2][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[3][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); + sprintf (config.lastdir[4][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); +#endif + + /* try to restore user config */ + int loaded = config_load(); + +#ifndef HW_RVL + /* detect progressive mode enable/disable requests */ + PAD_ScanPads(); + if (PAD_ButtonsHeld(0) & PAD_BUTTON_B) + { + /* swap progressive mode enable flag and play some sound to inform user */ + config.v_prog ^= 1; + ASND_Pause(0); + int voice = ASND_GetFirstUnusedVoice(); + ASND_SetVoice(voice,VOICE_MONO_16BIT,44100,0,(u8 *)intro_pcm,intro_pcm_size,200,200,NULL); + sleep (2); + ASND_Pause(1); + } + + /* switch into 480p if component cable has been detected and progressive mode is enabled */ + if (VIDEO_HaveComponentCable() && config.v_prog) + { + vmode = &TVNtsc480Prog; + VIDEO_Configure (vmode); + VIDEO_Flush(); + VIDEO_WaitVSync(); + VIDEO_WaitVSync(); + } +#endif + + /* inform user if default config is used */ + if (!loaded) + { + GUI_WaitPrompt("Warning","Default Settings restored"); + gx_input_SetDefault(); + } + + /* default emulated inputs */ + input.system[0] = SYSTEM_MD_GAMEPAD; + input.system[1] = (config.input[1].device != -1) ? SYSTEM_MD_GAMEPAD : NO_SYSTEM; + input_init(); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/config.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/config.h new file mode 100644 index 0000000000..a9cbebb577 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/config.h @@ -0,0 +1,124 @@ +/**************************************************************************** + * config.c + * + * Genesis Plus GX configuration file support + * + * Copyright Eke-Eke (2007-2013) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#define CONFIG_VERSION "GENPLUS-GX 1.7.4" + +/**************************************************************************** + * Config Option + * + ****************************************************************************/ +typedef struct +{ + char version[16]; + uint8 hq_fm; + uint8 filter; + uint8 psgBoostNoise; + uint8 dac_bits; + uint8 ym2413; + uint8 mono; + int16 psg_preamp; + int16 fm_preamp; + uint32 lp_range; + int16 low_freq; + int16 high_freq; + int16 lg; + int16 mg; + int16 hg; + uint8 system; + uint8 region_detect; + uint8 master_clock; + uint8 vdp_mode; + uint8 force_dtack; + uint8 addr_error; + uint8 bios; + uint8 lock_on; + uint8 hot_swap; + uint8 invert_mouse; + uint8 gun_cursor[2]; + uint8 overscan; + uint8 gg_extra; + uint8 ntsc; + uint8 vsync; + uint8 render; + uint8 tv_mode; + uint8 bilinear; + uint8 vfilter; + uint8 aspect; + int16 xshift; + int16 yshift; + int16 xscale; + int16 yscale; +#ifdef HW_RVL + uint32 trap; + float gamma; +#else + uint8 v_prog; +#endif + t_input_config input[MAX_INPUTS]; + uint16 pad_keymap[4][MAX_KEYS+1]; +#ifdef HW_RVL + uint32 wpad_keymap[4*3][MAX_KEYS]; +#endif + uint8 autoload; + uint8 autocheat; + uint8 s_auto; + uint8 s_default; + uint8 s_device; + uint8 l_device; + uint8 bg_overlay; + uint8 cd_leds; + int16 screen_w; + float bgm_volume; + float sfx_volume; + char lastdir[FILETYPE_MAX][TYPE_RECENT][MAXPATHLEN]; +} t_config; + +/* Global data */ +t_config config; + + +extern void config_save(void); +extern void config_default(void); + + +#endif /* _CONFIG_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_load.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_load.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_load.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_load.c index 5c51afe276..e0dfa1d5c3 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_load.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_load.c @@ -1,457 +1,457 @@ -/* - * file_load.c - * - * ROM File loading support - * - * Copyright Eke-Eke (2008-2012) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "file_load.h" -#include "gui.h" -#include "history.h" -#include "filesel.h" -#include "file_slot.h" - -#include -#ifdef HW_RVL -#include -#else -#include -#endif - -char rom_filename[256]; - -/* device root directories */ -#ifdef HW_RVL -static const char rootdir[TYPE_RECENT][10] = {"sd:/","usb:/","dvd:/"}; -#else -static const char rootdir[TYPE_RECENT][10] = {"/","dvd:/"}; -#endif - -/* DVD interface */ -#ifdef HW_RVL -static const DISC_INTERFACE* dvd = &__io_wiidvd; -#else -static const DISC_INTERFACE* dvd = &__io_gcdvd; -#endif - -/* current directory */ -static char *fileDir; - -/* current device */ -static int deviceType = -1; - -/* current file type */ -static int fileType = -1; - -/* DVD status flag */ -static u8 dvd_mounted = 0; - -/*************************************************************************** - * MountDVD - * - * return 0 on error, 1 on success - ***************************************************************************/ -static int MountDVD(void) -{ - GUI_MsgBoxOpen("Information", "Mounting DVD ...",1); - - /* check if DVD is already mounted */ - if (dvd_mounted) - { - /* unmount DVD */ - ISO9660_Unmount("dvd:"); - dvd_mounted = 0; - } - - /* check if disc is found */ - if(!dvd->isInserted()) - { - GUI_WaitPrompt("Error","No Disc inserted !"); - return 0; - } - - /* mount DVD */ - if(!ISO9660_Mount("dvd",dvd)) - { - GUI_WaitPrompt("Error","Disc can not be read !"); - return 0; - } - - /* DVD is mounted */ - dvd_mounted = 1; - - GUI_MsgBoxClose(); - return 1; -} - -/*************************************************************************** - * FileSortCallback (thanks to Marty Disibio) - * - * Quick sort callback to sort file entries with the following order: - * . - * .. - * - * - ***************************************************************************/ -static int FileSortCallback(const void *f1, const void *f2) -{ - /* Special case for implicit directories */ - if(((FILEENTRIES *)f1)->filename[0] == '.' || ((FILEENTRIES *)f2)->filename[0] == '.') - { - if(strcmp(((FILEENTRIES *)f1)->filename, ".") == 0) { return -1; } - if(strcmp(((FILEENTRIES *)f2)->filename, ".") == 0) { return 1; } - if(strcmp(((FILEENTRIES *)f1)->filename, "..") == 0) { return -1; } - if(strcmp(((FILEENTRIES *)f2)->filename, "..") == 0) { return 1; } - } - - /* If one is a file and one is a directory the directory is first. */ - if(((FILEENTRIES *)f1)->flags && !((FILEENTRIES *)f2)->flags) return -1; - if(!((FILEENTRIES *)f1)->flags && ((FILEENTRIES *)f2)->flags) return 1; - - return stricmp(((FILEENTRIES *)f1)->filename, ((FILEENTRIES *)f2)->filename); -} - -/*************************************************************************** - * UpdateDirectory - * - * Update current browser directory - * return zero if going up while in root - * when going up, return previous dir name - ***************************************************************************/ -int UpdateDirectory(bool go_up, char *dirname) -{ - /* go up to parent directory */ - if (go_up) - { - /* special case */ - if (deviceType == TYPE_RECENT) return 0; - - /* check if we already are at root directory */ - if (!strcmp(rootdir[deviceType], (const char *)fileDir)) return 0; - - int size=0; - char temp[MAXPATHLEN]; - - /* determine last folder name length */ - strcpy(temp, fileDir); - char *test= strtok(temp,"/"); - while (test != NULL) - { - size = strlen(test); - strncpy(dirname,test,size); - dirname[size] = 0; - test = strtok(NULL,"/"); - } - - /* remove last folder from path */ - size = strlen(fileDir) - size; - fileDir[size - 1] = 0; - } - else - { - /* by default, simply append folder name */ - sprintf(fileDir, "%s%s/",fileDir, dirname); - } - - return 1; -} - -/*************************************************************************** - * ParseDirectory - * - * List files into one directory - ***************************************************************************/ -int ParseDirectory(void) -{ - int nbfiles = 0; - - /* open directory */ - DIR *dir = opendir(fileDir); - if (dir == NULL) - { - return -1; - } - - struct dirent *entry = readdir(dir); - - /* list entries */ - while ((entry != NULL)&& (nbfiles < MAXFILES)) - { - /* filter entries */ - if ((entry->d_name[0] != '.') - && strncasecmp(".wav", &entry->d_name[strlen(entry->d_name) - 4], 4) - && strncasecmp(".ogg", &entry->d_name[strlen(entry->d_name) - 4], 4) - && strncasecmp(".mp3", &entry->d_name[strlen(entry->d_name) - 4], 4)) - { - memset(&filelist[nbfiles], 0, sizeof (FILEENTRIES)); - sprintf(filelist[nbfiles].filename,"%s",entry->d_name); - if (entry->d_type == DT_DIR) - { - filelist[nbfiles].flags = 1; - } - nbfiles++; - } - - /* next entry */ - entry = readdir(dir); - } - - /* close directory */ - closedir(dir); - - /* Sort the file list */ - qsort(filelist, nbfiles, sizeof(FILEENTRIES), FileSortCallback); - - return nbfiles; -} - -/**************************************************************************** - * LoadFile - * - * This function will load a game file into the ROM buffer. - * This functions return the actual size of data copied into the buffer - * - ****************************************************************************/ -int LoadFile(int selection) -{ - int size, cd_mode1, filetype; - char filename[MAXPATHLEN]; - - /* file path */ - char *filepath = (deviceType == TYPE_RECENT) ? history.entries[selection].filepath : fileDir; - - /* full filename */ - sprintf(filename, "%s%s", filepath, filelist[selection].filename); - - /* DVD hot swap */ - if (!strncmp(filepath, rootdir[TYPE_DVD], strlen(rootdir[TYPE_DVD]))) - { - /* Check if file is still accessible */ - struct stat filestat; - if(stat(filename, &filestat) != 0) - { - /* If not, try to mount DVD */ - if (!MountDVD()) return 0; - } - } - - /* open message box */ - GUI_MsgBoxOpen("Information", "Loading game...", 1); - - /* no cartridge or CD game loaded */ - size = cd_mode1 = 0; - - /* check if virtual CD tray was open */ - if ((system_hw == SYSTEM_MCD) && (cdd.status == CD_OPEN)) - { - /* swap CD image file in (without changing region, system,...) */ - size = cdd_load(filename, (char *)(cdc.ram)); - - /* check if a cartridge is currently loaded */ - if (scd.cartridge.boot) - { - /* CD Mode 1 */ - cd_mode1 = size; - } - else - { - /* update game informations from CD image file header */ - getrominfo((char *)(cdc.ram)); - } - } - - /* no CD image file loaded */ - if (!size) - { - /* close CD tray to force system reset */ - cdd.status = NO_DISC; - - /* load game file */ - size = load_rom(filename); - } - - if (size > 0) - { - /* do not update game basename if a CD was loaded with a cartridge (Mode 1) */ - if (cd_mode1) - { - /* add CD image file to history list */ - filetype = 1; - } - else - { - /* auto-save previous game state */ - slot_autosave(config.s_default,config.s_device); - - /* update game basename (for screenshot, save & cheat files) */ - if (romtype & SYSTEM_SMS) - { - /* Master System ROM file */ - filetype = 2; - sprintf(rom_filename,"ms/%s",filelist[selection].filename); - } - else if (romtype & SYSTEM_GG) - { - /* Game Gear ROM file */ - filetype = 3; - sprintf(rom_filename,"gg/%s",filelist[selection].filename); - } - else if (romtype == SYSTEM_SG) - { - /* SG-1000 ROM file */ - filetype = 4; - sprintf(rom_filename,"sg/%s",filelist[selection].filename); - } - else if (romtype == SYSTEM_MCD) - { - /* CD image file */ - filetype = 1; - sprintf(rom_filename,"cd/%s",filelist[selection].filename); - } - else - { - /* by default, Genesis ROM file */ - filetype = 0; - sprintf(rom_filename,"md/%s",filelist[selection].filename); - } - - /* remove file extension */ - int i = strlen(rom_filename) - 1; - while ((i > 0) && (rom_filename[i] != '.')) i--; - if (i > 0) rom_filename[i] = 0; - } - - /* add/move the file to the top of the history. */ - history_add_file(filepath, filelist[selection].filename, filetype); - - /* recent file list may have changed */ - if (deviceType == TYPE_RECENT) deviceType = -1; - - /* close message box */ - GUI_MsgBoxClose(); - - /* valid image has been loaded */ - return 1; - } - - GUI_WaitPrompt("Error", "Unable to load game"); - return 0; -} - -/**************************************************************************** - * OpenDir - * - * Function to open a directory and load ROM file list. - ****************************************************************************/ -int OpenDirectory(int device, int type) -{ - int max = 0; - - if (device == TYPE_RECENT) - { - /* fetch history list */ - int i; - for(i=0; i < NUM_HISTORY_ENTRIES; i++) - { - if(history.entries[i].filepath[0] > 0) - { - filelist[i].flags = 0; - strncpy(filelist[i].filename,history.entries[i].filename, MAXJOLIET-1); - filelist[i].filename[MAXJOLIET-1] = '\0'; - max++; - } - else - { - /* Found the end of the list. */ - break; - } - } - } - else - { - /* only DVD hot swap is supported */ - if (device == TYPE_DVD) - { - /* try to access root directory */ - DIR *dir = opendir(rootdir[TYPE_DVD]); - if (dir == NULL) - { - /* mount DVD */ - if (!MountDVD()) return 0; - deviceType = -1; - } - else - { - closedir(dir); - } - } - - /* parse last directory */ - fileDir = config.lastdir[type][device]; - max = ParseDirectory(); - if (max <= 0) - { - /* parse root directory */ - strcpy(fileDir, rootdir[device]); - max = ParseDirectory(); - if (max < 0) - { - GUI_WaitPrompt("Error","Unable to open directory !"); - return 0; - } - deviceType = -1; - } - } - - if (max == 0) - { - GUI_WaitPrompt("Error","No files found !"); - return 0; - } - - /* check if device or file type has changed */ - if ((device != deviceType) || (type != fileType)) - { - /* reset current types */ - deviceType = device; - fileType = type; - - /* reset File selector */ - ClearSelector(max); - } - - return 1; -} +/* + * file_load.c + * + * ROM File loading support + * + * Copyright Eke-Eke (2008-2012) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "file_load.h" +#include "gui.h" +#include "history.h" +#include "filesel.h" +#include "file_slot.h" + +#include +#ifdef HW_RVL +#include +#else +#include +#endif + +char rom_filename[256]; + +/* device root directories */ +#ifdef HW_RVL +static const char rootdir[TYPE_RECENT][10] = {"sd:/","usb:/","dvd:/"}; +#else +static const char rootdir[TYPE_RECENT][10] = {"/","dvd:/"}; +#endif + +/* DVD interface */ +#ifdef HW_RVL +static const DISC_INTERFACE* dvd = &__io_wiidvd; +#else +static const DISC_INTERFACE* dvd = &__io_gcdvd; +#endif + +/* current directory */ +static char *fileDir; + +/* current device */ +static int deviceType = -1; + +/* current file type */ +static int fileType = -1; + +/* DVD status flag */ +static u8 dvd_mounted = 0; + +/*************************************************************************** + * MountDVD + * + * return 0 on error, 1 on success + ***************************************************************************/ +static int MountDVD(void) +{ + GUI_MsgBoxOpen("Information", "Mounting DVD ...",1); + + /* check if DVD is already mounted */ + if (dvd_mounted) + { + /* unmount DVD */ + ISO9660_Unmount("dvd:"); + dvd_mounted = 0; + } + + /* check if disc is found */ + if(!dvd->isInserted()) + { + GUI_WaitPrompt("Error","No Disc inserted !"); + return 0; + } + + /* mount DVD */ + if(!ISO9660_Mount("dvd",dvd)) + { + GUI_WaitPrompt("Error","Disc can not be read !"); + return 0; + } + + /* DVD is mounted */ + dvd_mounted = 1; + + GUI_MsgBoxClose(); + return 1; +} + +/*************************************************************************** + * FileSortCallback (thanks to Marty Disibio) + * + * Quick sort callback to sort file entries with the following order: + * . + * .. + * + * + ***************************************************************************/ +static int FileSortCallback(const void *f1, const void *f2) +{ + /* Special case for implicit directories */ + if(((FILEENTRIES *)f1)->filename[0] == '.' || ((FILEENTRIES *)f2)->filename[0] == '.') + { + if(strcmp(((FILEENTRIES *)f1)->filename, ".") == 0) { return -1; } + if(strcmp(((FILEENTRIES *)f2)->filename, ".") == 0) { return 1; } + if(strcmp(((FILEENTRIES *)f1)->filename, "..") == 0) { return -1; } + if(strcmp(((FILEENTRIES *)f2)->filename, "..") == 0) { return 1; } + } + + /* If one is a file and one is a directory the directory is first. */ + if(((FILEENTRIES *)f1)->flags && !((FILEENTRIES *)f2)->flags) return -1; + if(!((FILEENTRIES *)f1)->flags && ((FILEENTRIES *)f2)->flags) return 1; + + return stricmp(((FILEENTRIES *)f1)->filename, ((FILEENTRIES *)f2)->filename); +} + +/*************************************************************************** + * UpdateDirectory + * + * Update current browser directory + * return zero if going up while in root + * when going up, return previous dir name + ***************************************************************************/ +int UpdateDirectory(bool go_up, char *dirname) +{ + /* go up to parent directory */ + if (go_up) + { + /* special case */ + if (deviceType == TYPE_RECENT) return 0; + + /* check if we already are at root directory */ + if (!strcmp(rootdir[deviceType], (const char *)fileDir)) return 0; + + int size=0; + char temp[MAXPATHLEN]; + + /* determine last folder name length */ + strcpy(temp, fileDir); + char *test= strtok(temp,"/"); + while (test != NULL) + { + size = strlen(test); + strncpy(dirname,test,size); + dirname[size] = 0; + test = strtok(NULL,"/"); + } + + /* remove last folder from path */ + size = strlen(fileDir) - size; + fileDir[size - 1] = 0; + } + else + { + /* by default, simply append folder name */ + sprintf(fileDir, "%s%s/",fileDir, dirname); + } + + return 1; +} + +/*************************************************************************** + * ParseDirectory + * + * List files into one directory + ***************************************************************************/ +int ParseDirectory(void) +{ + int nbfiles = 0; + + /* open directory */ + DIR *dir = opendir(fileDir); + if (dir == NULL) + { + return -1; + } + + struct dirent *entry = readdir(dir); + + /* list entries */ + while ((entry != NULL)&& (nbfiles < MAXFILES)) + { + /* filter entries */ + if ((entry->d_name[0] != '.') + && strncasecmp(".wav", &entry->d_name[strlen(entry->d_name) - 4], 4) + && strncasecmp(".ogg", &entry->d_name[strlen(entry->d_name) - 4], 4) + && strncasecmp(".mp3", &entry->d_name[strlen(entry->d_name) - 4], 4)) + { + memset(&filelist[nbfiles], 0, sizeof (FILEENTRIES)); + sprintf(filelist[nbfiles].filename,"%s",entry->d_name); + if (entry->d_type == DT_DIR) + { + filelist[nbfiles].flags = 1; + } + nbfiles++; + } + + /* next entry */ + entry = readdir(dir); + } + + /* close directory */ + closedir(dir); + + /* Sort the file list */ + qsort(filelist, nbfiles, sizeof(FILEENTRIES), FileSortCallback); + + return nbfiles; +} + +/**************************************************************************** + * LoadFile + * + * This function will load a game file into the ROM buffer. + * This functions return the actual size of data copied into the buffer + * + ****************************************************************************/ +int LoadFile(int selection) +{ + int size, cd_mode1, filetype; + char filename[MAXPATHLEN]; + + /* file path */ + char *filepath = (deviceType == TYPE_RECENT) ? history.entries[selection].filepath : fileDir; + + /* full filename */ + sprintf(filename, "%s%s", filepath, filelist[selection].filename); + + /* DVD hot swap */ + if (!strncmp(filepath, rootdir[TYPE_DVD], strlen(rootdir[TYPE_DVD]))) + { + /* Check if file is still accessible */ + struct stat filestat; + if(stat(filename, &filestat) != 0) + { + /* If not, try to mount DVD */ + if (!MountDVD()) return 0; + } + } + + /* open message box */ + GUI_MsgBoxOpen("Information", "Loading game...", 1); + + /* no cartridge or CD game loaded */ + size = cd_mode1 = 0; + + /* check if virtual CD tray was open */ + if ((system_hw == SYSTEM_MCD) && (cdd.status == CD_OPEN)) + { + /* swap CD image file in (without changing region, system,...) */ + size = cdd_load(filename, (char *)(cdc.ram)); + + /* check if a cartridge is currently loaded */ + if (scd.cartridge.boot) + { + /* CD Mode 1 */ + cd_mode1 = size; + } + else + { + /* update game informations from CD image file header */ + getrominfo((char *)(cdc.ram)); + } + } + + /* no CD image file loaded */ + if (!size) + { + /* close CD tray to force system reset */ + cdd.status = NO_DISC; + + /* load game file */ + size = load_rom(filename); + } + + if (size > 0) + { + /* do not update game basename if a CD was loaded with a cartridge (Mode 1) */ + if (cd_mode1) + { + /* add CD image file to history list */ + filetype = 1; + } + else + { + /* auto-save previous game state */ + slot_autosave(config.s_default,config.s_device); + + /* update game basename (for screenshot, save & cheat files) */ + if (romtype & SYSTEM_SMS) + { + /* Master System ROM file */ + filetype = 2; + sprintf(rom_filename,"ms/%s",filelist[selection].filename); + } + else if (romtype & SYSTEM_GG) + { + /* Game Gear ROM file */ + filetype = 3; + sprintf(rom_filename,"gg/%s",filelist[selection].filename); + } + else if (romtype == SYSTEM_SG) + { + /* SG-1000 ROM file */ + filetype = 4; + sprintf(rom_filename,"sg/%s",filelist[selection].filename); + } + else if (romtype == SYSTEM_MCD) + { + /* CD image file */ + filetype = 1; + sprintf(rom_filename,"cd/%s",filelist[selection].filename); + } + else + { + /* by default, Genesis ROM file */ + filetype = 0; + sprintf(rom_filename,"md/%s",filelist[selection].filename); + } + + /* remove file extension */ + int i = strlen(rom_filename) - 1; + while ((i > 0) && (rom_filename[i] != '.')) i--; + if (i > 0) rom_filename[i] = 0; + } + + /* add/move the file to the top of the history. */ + history_add_file(filepath, filelist[selection].filename, filetype); + + /* recent file list may have changed */ + if (deviceType == TYPE_RECENT) deviceType = -1; + + /* close message box */ + GUI_MsgBoxClose(); + + /* valid image has been loaded */ + return 1; + } + + GUI_WaitPrompt("Error", "Unable to load game"); + return 0; +} + +/**************************************************************************** + * OpenDir + * + * Function to open a directory and load ROM file list. + ****************************************************************************/ +int OpenDirectory(int device, int type) +{ + int max = 0; + + if (device == TYPE_RECENT) + { + /* fetch history list */ + int i; + for(i=0; i < NUM_HISTORY_ENTRIES; i++) + { + if(history.entries[i].filepath[0] > 0) + { + filelist[i].flags = 0; + strncpy(filelist[i].filename,history.entries[i].filename, MAXJOLIET-1); + filelist[i].filename[MAXJOLIET-1] = '\0'; + max++; + } + else + { + /* Found the end of the list. */ + break; + } + } + } + else + { + /* only DVD hot swap is supported */ + if (device == TYPE_DVD) + { + /* try to access root directory */ + DIR *dir = opendir(rootdir[TYPE_DVD]); + if (dir == NULL) + { + /* mount DVD */ + if (!MountDVD()) return 0; + deviceType = -1; + } + else + { + closedir(dir); + } + } + + /* parse last directory */ + fileDir = config.lastdir[type][device]; + max = ParseDirectory(); + if (max <= 0) + { + /* parse root directory */ + strcpy(fileDir, rootdir[device]); + max = ParseDirectory(); + if (max < 0) + { + GUI_WaitPrompt("Error","Unable to open directory !"); + return 0; + } + deviceType = -1; + } + } + + if (max == 0) + { + GUI_WaitPrompt("Error","No files found !"); + return 0; + } + + /* check if device or file type has changed */ + if ((device != deviceType) || (type != fileType)) + { + /* reset current types */ + deviceType = device; + fileType = type; + + /* reset File selector */ + ClearSelector(max); + } + + return 1; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_load.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_load.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_load.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_load.h index fca2aba1c3..cdfb4c0a6e 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_load.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_load.h @@ -1,72 +1,72 @@ -/* - * file_load.c - * - * ROM File loading support - * - * Copyright Eke-Eke (2008-2012) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _FILE_FAT_H -#define _FILE_FAT_H - -/* suppported load devices */ -typedef enum -{ - TYPE_SD = 0, -#ifdef HW_RVL - TYPE_USB, -#endif - TYPE_DVD, - TYPE_RECENT -}DEVTYPES; - -/* supported file types */ -typedef enum -{ - FILETYPE_MD = 0, - FILETYPE_CD, - FILETYPE_MS, - FILETYPE_GG, - FILETYPE_SG, - FILETYPE_MAX -}FILETYPES; - -extern int OpenDirectory(int device, int type); -extern int UpdateDirectory(bool go_up, char *filename); -extern int ParseDirectory(void); -extern int LoadFile(int selection); - -extern char rom_filename[256]; - -#endif +/* + * file_load.c + * + * ROM File loading support + * + * Copyright Eke-Eke (2008-2012) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _FILE_FAT_H +#define _FILE_FAT_H + +/* suppported load devices */ +typedef enum +{ + TYPE_SD = 0, +#ifdef HW_RVL + TYPE_USB, +#endif + TYPE_DVD, + TYPE_RECENT +}DEVTYPES; + +/* supported file types */ +typedef enum +{ + FILETYPE_MD = 0, + FILETYPE_CD, + FILETYPE_MS, + FILETYPE_GG, + FILETYPE_SG, + FILETYPE_MAX +}FILETYPES; + +extern int OpenDirectory(int device, int type); +extern int UpdateDirectory(bool go_up, char *filename); +extern int ParseDirectory(void); +extern int LoadFile(int selection); + +extern char rom_filename[256]; + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_slot.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_slot.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_slot.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_slot.c index 45d117f70d..42fc811caa 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_slot.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_slot.c @@ -1,830 +1,830 @@ -/* - * file_slot.c - * - * FAT and Memory Card SRAM/State slots managment - * - * Copyright Eke-Eke (2008-2012), based on original code from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "file_slot.h" -#include "file_load.h" -#include "gui.h" -#include "filesel.h" -#include "saveicon.h" - -/** - * libOGC CARD System Work Area - */ -static u8 SysArea[CARD_WORKAREA] ATTRIBUTE_ALIGN (32); - -/* Mega CD backup RAM stuff */ -static u32 brm_crc[2]; -static char brm_filename[3][32] = {CD_BRAM_JP, CD_BRAM_EU, CD_BRAM_US}; -static u8 brm_format[0x40] = -{ - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x00,0x00,0x00,0x00,0x40, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x53,0x45,0x47,0x41,0x5f,0x43,0x44,0x5f,0x52,0x4f,0x4d,0x00,0x01,0x00,0x00,0x00, - 0x52,0x41,0x4d,0x5f,0x43,0x41,0x52,0x54,0x52,0x49,0x44,0x47,0x45,0x5f,0x5f,0x5f -}; - -/**************************************************************************** - * CardMount - * - * libOGC provides the CARD_Mount function, and it should be all you need. - * However, experience with previous emulators has taught me that you are - * better off doing a little bit more than that! - * - *****************************************************************************/ -static int CardMount(int slot) -{ - int tries = 0; -#ifdef HW_RVL - *(unsigned long *) (0xCD006800) |= 1 << 13; /*** Disable Encryption ***/ -#else - *(unsigned long *) (0xCC006800) |= 1 << 13; /*** Disable Encryption ***/ -#endif - while (tries < 10) - { - VIDEO_WaitVSync (); - if (CARD_Mount(slot, SysArea, NULL) == CARD_ERROR_READY) - return 1; - else - EXI_ProbeReset (); - tries++; - } - return 0; -} - -/**************************************************************************** - * Slot Management - * - * - ****************************************************************************/ -void slot_autoload(int slot, int device) -{ - /* Mega CD backup RAM specific */ - if (!slot && (system_hw == SYSTEM_MCD)) - { - /* automatically load internal backup RAM */ - FILE *fp = fopen(brm_filename[((region_code ^ 0x40) >> 6) - 1], "rb"); - if (fp != NULL) - { - fread(scd.bram, 0x2000, 1, fp); - fclose(fp); - - /* update CRC */ - brm_crc[0] = crc32(0, scd.bram, 0x2000); - } - else - { - /* force internal backup RAM format (does not use previous region backup RAM) */ - scd.bram[0x1fff] = 0; - } - - /* check if internal backup RAM is correctly formatted */ - if (memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) - { - /* clear internal backup RAM */ - memset(scd.bram, 0x00, 0x2000 - 0x40); - - /* internal Backup RAM size fields */ - brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00; - brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (sizeof(scd.bram) / 64) - 3; - - /* format internal backup RAM */ - memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40); - - /* clear CRC to force file saving (in case previous region backup RAM was also formatted) */ - brm_crc[0] = 0; - } - - /* automatically load cartridge backup RAM (if enabled) */ - if (scd.cartridge.id) - { - fp = fopen(CART_BRAM, "rb"); - if (fp != NULL) - { - int filesize = scd.cartridge.mask + 1; - int done = 0; - - /* Read into buffer (2k blocks) */ - while (filesize > CHUNKSIZE) - { - fread(scd.cartridge.area + done, CHUNKSIZE, 1, fp); - done += CHUNKSIZE; - filesize -= CHUNKSIZE; - } - - /* Read remaining bytes */ - if (filesize) - { - fread(scd.cartridge.area + done, filesize, 1, fp); - } - - /* close file */ - fclose(fp); - - /* update CRC */ - brm_crc[1] = crc32(0, scd.cartridge.area, scd.cartridge.mask + 1); - } - - /* check if cartridge backup RAM is correctly formatted */ - if (memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) - { - /* clear cartridge backup RAM */ - memset(scd.cartridge.area, 0x00, scd.cartridge.mask + 1); - - /* Cartridge Backup RAM size fields */ - brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = (((scd.cartridge.mask + 1) / 64) - 3) >> 8; - brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (((scd.cartridge.mask + 1) / 64) - 3) & 0xff; - - /* format cartridge backup RAM */ - memcpy(scd.cartridge.area + scd.cartridge.mask + 1 - 0x40, brm_format, 0x40); - } - } - } - - /* configurable SRAM & State auto-saving */ - if ((slot && !(config.s_auto & 2)) || (!slot && !(config.s_auto & 1))) - { - return; - } - - if (strlen(rom_filename)) - { - SILENT = 1; - slot_load(slot, device); - SILENT = 0; - } -} - -void slot_autosave(int slot, int device) -{ - /* Mega CD backup RAM specific */ - if (!slot && (system_hw == SYSTEM_MCD)) - { - /* verify that internal backup RAM has been modified */ - if (crc32(0, scd.bram, 0x2000) != brm_crc[0]) - { - /* check if it is correctly formatted before saving */ - if (!memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) - { - FILE *fp = fopen(brm_filename[((region_code ^ 0x40) >> 6) - 1], "wb"); - if (fp != NULL) - { - fwrite(scd.bram, 0x2000, 1, fp); - fclose(fp); - - /* update CRC */ - brm_crc[0] = crc32(0, scd.bram, 0x2000); - } - } - } - - /* verify that cartridge backup RAM has been modified */ - if (scd.cartridge.id && (crc32(0, scd.cartridge.area, scd.cartridge.mask + 1) != brm_crc[1])) - { - /* check if it is correctly formatted before saving */ - if (!memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) - { - FILE *fp = fopen(CART_BRAM, "wb"); - if (fp != NULL) - { - int filesize = scd.cartridge.mask + 1; - int done = 0; - - /* Write to file (2k blocks) */ - while (filesize > CHUNKSIZE) - { - fwrite(scd.cartridge.area + done, CHUNKSIZE, 1, fp); - done += CHUNKSIZE; - filesize -= CHUNKSIZE; - } - - /* Write remaining bytes */ - if (filesize) - { - fwrite(scd.cartridge.area + done, filesize, 1, fp); - } - - /* Close file */ - fclose(fp); - - /* update CRC */ - brm_crc[1] = crc32(0, scd.cartridge.area, scd.cartridge.mask + 1); - } - } - } - } - - /* configurable SRAM & State auto-saving */ - if ((slot && !(config.s_auto & 2)) || (!slot && !(config.s_auto & 1))) - { - return; - } - - if (strlen(rom_filename)) - { - SILENT = 1; - slot_save(slot, device); - SILENT = 0; - } -} - -void slot_autodetect(int slot, int device, t_slot *ptr) -{ - if (!ptr) return; - - char filename[MAXPATHLEN]; - memset(ptr,0,sizeof(t_slot)); - - if (!device) - { - /* FAT support */ - if (slot > 0) - { - sprintf (filename,"%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); - } - else - { - sprintf (filename,"%s/saves/%s.srm", DEFAULT_PATH, rom_filename); - } - - /* Open file */ - FILE *fp = fopen(filename, "rb"); - if (fp) - { - /* Retrieve date & close */ - struct stat filestat; - stat(filename, &filestat); - struct tm *timeinfo = localtime(&filestat.st_mtime); - ptr->year = 1900 + timeinfo->tm_year; - ptr->month = timeinfo->tm_mon; - ptr->day = timeinfo->tm_mday; - ptr->hour = timeinfo->tm_hour; - ptr->min = timeinfo->tm_min; - fclose(fp); - ptr->valid = 1; - } - } - else - { - /* Memory Card support */ - if (slot > 0) - sprintf(filename,"MD-%04X.gp%d", rominfo.realchecksum, slot - 1); - else - sprintf(filename,"MD-%04X.srm", rominfo.realchecksum); - - /* Initialise the CARD system */ - memset(&SysArea, 0, CARD_WORKAREA); - CARD_Init("GENP", "00"); - - /* CARD slot */ - device--; - - /* Mount CARD */ - if (CardMount(device)) - { - /* Open file */ - card_file CardFile; - if (CARD_Open(device, filename, &CardFile) == CARD_ERROR_READY) - { - /* Retrieve date & close */ - card_stat CardStatus; - CARD_GetStatus(device, CardFile.filenum, &CardStatus); - time_t rawtime = CardStatus.time; - struct tm *timeinfo = localtime(&rawtime); - ptr->year = 1900 + timeinfo->tm_year; - ptr->month = timeinfo->tm_mon; - ptr->day = timeinfo->tm_mday; - ptr->hour = timeinfo->tm_hour; - ptr->min = timeinfo->tm_min; - CARD_Close(&CardFile); - ptr->valid = 1; - } - CARD_Unmount(device); - } - } -} - -int slot_delete(int slot, int device) -{ - char filename[MAXPATHLEN]; - int ret = 0; - - if (!device) - { - /* FAT support */ - if (slot > 0) - { - /* remove screenshot */ - sprintf(filename,"%s/saves/%s__%d.png", DEFAULT_PATH, rom_filename, slot - 1); - remove(filename); - - sprintf (filename,"%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); - } - else - { - sprintf (filename,"%s/saves/%s.srm", DEFAULT_PATH, rom_filename); - } - - /* Delete file */ - ret = remove(filename); - } - else - { - /* Memory Card support */ - if (slot > 0) - sprintf(filename,"MD-%04X.gp%d", rominfo.realchecksum, slot - 1); - else - sprintf(filename,"MD-%04X.srm", rominfo.realchecksum); - - /* Initialise the CARD system */ - memset(&SysArea, 0, CARD_WORKAREA); - CARD_Init("GENP", "00"); - - /* CARD slot */ - device--; - - /* Mount CARD */ - if (CardMount(device)) - { - /* Delete file */ - ret = CARD_Delete(device,filename); - CARD_Unmount(device); - } - } - - return ret; -} - -int slot_load(int slot, int device) -{ - char filename[MAXPATHLEN]; - unsigned long filesize, done = 0; - u8 *buffer; - - /* File Type */ - if (slot > 0) - { - GUI_MsgBoxOpen("Information","Loading State ...",1); - } - else - { - if (!sram.on) - { - GUI_WaitPrompt("Error","Backup RAM is disabled !"); - return 0; - } - - GUI_MsgBoxOpen("Information","Loading Backup RAM ...",1); - } - - /* Device Type */ - if (!device) - { - /* FAT file */ - if (slot > 0) - { - sprintf (filename,"%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); - } - else - { - sprintf (filename,"%s/saves/%s.srm", DEFAULT_PATH, rom_filename); - } - - /* Open file */ - FILE *fp = fopen(filename, "rb"); - if (!fp) - { - GUI_WaitPrompt("Error","Unable to open file !"); - return 0; - } - - /* Get file size */ - fseek(fp, 0, SEEK_END); - filesize = ftell(fp); - fseek(fp, 0, SEEK_SET); - - /* allocate buffer */ - buffer = (u8 *)memalign(32,filesize); - if (!buffer) - { - GUI_WaitPrompt("Error","Unable to allocate memory !"); - fclose(fp); - return 0; - } - - /* Read into buffer (2k blocks) */ - while (filesize > CHUNKSIZE) - { - fread(buffer + done, CHUNKSIZE, 1, fp); - done += CHUNKSIZE; - filesize -= CHUNKSIZE; - } - - /* Read remaining bytes */ - fread(buffer + done, filesize, 1, fp); - done += filesize; - - /* Close file */ - fclose(fp); - } - else - { - /* Memory Card file */ - if (slot > 0) - { - sprintf(filename, "MD-%04X.gp%d", rominfo.realchecksum, slot - 1); - } - else - { - sprintf(filename, "MD-%04X.srm", rominfo.realchecksum); - } - - /* Initialise the CARD system */ - char action[64]; - memset(&SysArea, 0, CARD_WORKAREA); - CARD_Init("GENP", "00"); - - /* CARD slot */ - device--; - - /* Attempt to mount the card */ - if (!CardMount(device)) - { - GUI_WaitPrompt("Error","Unable to mount memory card"); - return 0; - } - - /* Retrieve the sector size */ - u32 SectorSize = 0; - int CardError = CARD_GetSectorSize(device, &SectorSize); - if (!SectorSize) - { - sprintf(action, "Invalid sector size (%d)", CardError); - GUI_WaitPrompt("Error",action); - CARD_Unmount(device); - return 0; - } - - /* Open file */ - card_file CardFile; - CardError = CARD_Open(device, filename, &CardFile); - if (CardError) - { - sprintf(action, "Unable to open file (%d)", CardError); - GUI_WaitPrompt("Error",action); - CARD_Unmount(device); - return 0; - } - - /* Get file size */ - filesize = CardFile.len; - if (filesize % SectorSize) - { - filesize = ((filesize / SectorSize) + 1) * SectorSize; - } - - /* Allocate buffer */ - u8 *in = (u8 *)memalign(32, filesize); - if (!in) - { - GUI_WaitPrompt("Error","Unable to allocate memory !"); - CARD_Close(&CardFile); - CARD_Unmount(device); - return 0; - } - - /* Read file sectors */ - while (filesize > 0) - { - CARD_Read(&CardFile, &in[done], SectorSize, done); - done += SectorSize; - filesize -= SectorSize; - } - - /* Close file */ - CARD_Close(&CardFile); - CARD_Unmount(device); - - /* Uncompressed file size */ - memcpy(&filesize, in + 2112, 4); - buffer = (u8 *)memalign(32, filesize); - if (!buffer) - { - free(in); - GUI_WaitPrompt("Error","Unable to allocate memory !"); - return 0; - } - - /* Uncompress file */ - uncompress ((Bytef *)buffer, &filesize, (Bytef *)(in + 2112 + 4), done - 2112 - 4); - free(in); - } - - if (slot > 0) - { - /* Load state */ - if (state_load(buffer) <= 0) - { - free(buffer); - GUI_WaitPrompt("Error","Invalid state file !"); - return 0; - } - } - else - { - /* load SRAM */ - memcpy(sram.sram, buffer, 0x10000); - - /* update CRC */ - sram.crc = crc32(0, sram.sram, 0x10000); - } - - free(buffer); - GUI_MsgBoxClose(); - return 1; -} - -int slot_save(int slot, int device) -{ - char filename[MAXPATHLEN]; - unsigned long filesize, done = 0; - u8 *buffer; - - if (slot > 0) - { - GUI_MsgBoxOpen("Information","Saving State ...",1); - - /* allocate buffer */ - buffer = (u8 *)memalign(32,STATE_SIZE); - if (!buffer) - { - GUI_WaitPrompt("Error","Unable to allocate memory !"); - return 0; - } - - filesize = state_save(buffer); - } - else - { - /* only save if SRAM is enabled */ - if (!sram.on) - { - GUI_WaitPrompt("Error","Backup RAM disabled !"); - return 0; - } - - /* only save if SRAM has been modified */ - if (crc32(0, &sram.sram[0], 0x10000) == sram.crc) - { - GUI_WaitPrompt("Warning","Backup RAM not modified !"); - return 0; - } - - GUI_MsgBoxOpen("Information","Saving Backup RAM ...",1); - - /* allocate buffer */ - buffer = (u8 *)memalign(32, 0x10000); - if (!buffer) - { - GUI_WaitPrompt("Error","Unable to allocate memory !"); - return 0; - } - - /* copy SRAM data */ - memcpy(buffer, sram.sram, 0x10000); - filesize = 0x10000; - - /* update CRC */ - sram.crc = crc32(0, sram.sram, 0x10000); - } - - /* Device Type */ - if (!device) - { - /* FAT filename */ - if (slot > 0) - { - sprintf(filename, "%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); - } - else - { - sprintf(filename, "%s/saves/%s.srm", DEFAULT_PATH, rom_filename); - } - - /* Open file */ - FILE *fp = fopen(filename, "wb"); - if (!fp) - { - GUI_WaitPrompt("Error","Unable to open file !"); - free(buffer); - return 0; - } - - /* Write from buffer (2k blocks) */ - while (filesize > CHUNKSIZE) - { - fwrite(buffer + done, CHUNKSIZE, 1, fp); - done += CHUNKSIZE; - filesize -= CHUNKSIZE; - } - - /* Write remaining bytes */ - fwrite(buffer + done, filesize, 1, fp); - done += filesize; - - /* Close file */ - fclose(fp); - free(buffer); - - /* Close message box */ - GUI_MsgBoxClose(); - - /* Save state screenshot */ - if (slot > 0) - { - sprintf(filename,"%s/saves/%s__%d.png", DEFAULT_PATH, rom_filename, slot - 1); - gxSaveScreenshot(filename); - } - } - else - { - /* Memory Card filename */ - if (slot > 0) - { - sprintf(filename, "MD-%04X.gp%d", rominfo.realchecksum, slot - 1); - } - else - { - sprintf(filename, "MD-%04X.srm", rominfo.realchecksum); - } - - /* Initialise the CARD system */ - char action[64]; - memset(&SysArea, 0, CARD_WORKAREA); - CARD_Init("GENP", "00"); - - /* CARD slot */ - device--; - - /* Attempt to mount the card */ - if (!CardMount(device)) - { - GUI_WaitPrompt("Error","Unable to mount memory card"); - free(buffer); - return 0; - } - - /* Retrieve sector size */ - u32 SectorSize = 0; - int CardError = CARD_GetSectorSize(device, &SectorSize); - if (!SectorSize) - { - sprintf(action, "Invalid sector size (%d)", CardError); - GUI_WaitPrompt("Error",action); - CARD_Unmount(device); - free(buffer); - return 0; - } - - /* Build output buffer */ - u8 *out = (u8 *)memalign(32, filesize + 2112 + 4); - if (!out) - { - GUI_WaitPrompt("Error","Unable to allocate memory !"); - CARD_Unmount(device); - free(buffer); - return 0; - } - - /* Memory Card file header */ - char comment[2][32] = { {"Genesis Plus GX"}, {"SRAM Save"} }; - strcpy (comment[1], filename); - memcpy (&out[0], &icon, 2048); - memcpy (&out[2048], &comment[0], 64); - - /* uncompressed size */ - done = filesize; - memcpy(&out[2112], &done, 4); - - /* compress file */ - compress2 ((Bytef *)&out[2112 + 4], &filesize, (Bytef *)buffer, done, 9); - - /* Adjust file size */ - filesize = filesize + 4 + 2112; - if (filesize % SectorSize) - { - filesize = ((filesize / SectorSize) + 1) * SectorSize; - } - - /* Check if file already exists */ - card_file CardFile; - if (CARD_Open(device, filename, &CardFile) == CARD_ERROR_READY) - { - int size = filesize - CardFile.len; - CARD_Close(&CardFile); - memset(&CardFile,0,sizeof(CardFile)); - - /* Check file new size */ - if (size > 0) - { - CardError = CARD_Create(device, "TEMP", size, &CardFile); - if (CardError) - { - sprintf(action, "Unable to increase file size (%d)", CardError); - GUI_WaitPrompt("Error",action); - CARD_Unmount(device); - free(out); - free(buffer); - return 0; - } - - /* delete temporary file */ - CARD_Close(&CardFile); - memset(&CardFile,0,sizeof(CardFile)); - CARD_Delete(device, "TEMP"); - } - - /* delete previously existing file */ - CARD_Delete(device, filename); - } - - /* Create a new file */ - CardError = CARD_Create(device, filename, filesize, &CardFile); - if (CardError) - { - sprintf(action, "Unable to create file (%d)", CardError); - GUI_WaitPrompt("Error",action); - CARD_Unmount(device); - free(out); - free(buffer); - return 0; - } - - /* Update file informations */ - time_t rawtime; - time(&rawtime); - card_stat CardStatus; - CARD_GetStatus(device, CardFile.filenum, &CardStatus); - CardStatus.icon_addr = 0x0; - CardStatus.icon_fmt = 2; - CardStatus.icon_speed = 1; - CardStatus.comment_addr = 2048; - CardStatus.time = rawtime; - CARD_SetStatus(device, CardFile.filenum, &CardStatus); - - /* Write file sectors */ - while (filesize > 0) - { - CARD_Write(&CardFile, &out[done], SectorSize, done); - filesize -= SectorSize; - done += SectorSize; - } - - /* Close file */ - CARD_Close(&CardFile); - CARD_Unmount(device); - free(out); - free(buffer); - - /* Close message box */ - GUI_MsgBoxClose(); - } - - return 1; -} +/* + * file_slot.c + * + * FAT and Memory Card SRAM/State slots managment + * + * Copyright Eke-Eke (2008-2012), based on original code from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "file_slot.h" +#include "file_load.h" +#include "gui.h" +#include "filesel.h" +#include "saveicon.h" + +/** + * libOGC CARD System Work Area + */ +static u8 SysArea[CARD_WORKAREA] ATTRIBUTE_ALIGN (32); + +/* Mega CD backup RAM stuff */ +static u32 brm_crc[2]; +static char brm_filename[3][32] = {CD_BRAM_JP, CD_BRAM_EU, CD_BRAM_US}; +static u8 brm_format[0x40] = +{ + 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x00,0x00,0x00,0x00,0x40, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x53,0x45,0x47,0x41,0x5f,0x43,0x44,0x5f,0x52,0x4f,0x4d,0x00,0x01,0x00,0x00,0x00, + 0x52,0x41,0x4d,0x5f,0x43,0x41,0x52,0x54,0x52,0x49,0x44,0x47,0x45,0x5f,0x5f,0x5f +}; + +/**************************************************************************** + * CardMount + * + * libOGC provides the CARD_Mount function, and it should be all you need. + * However, experience with previous emulators has taught me that you are + * better off doing a little bit more than that! + * + *****************************************************************************/ +static int CardMount(int slot) +{ + int tries = 0; +#ifdef HW_RVL + *(unsigned long *) (0xCD006800) |= 1 << 13; /*** Disable Encryption ***/ +#else + *(unsigned long *) (0xCC006800) |= 1 << 13; /*** Disable Encryption ***/ +#endif + while (tries < 10) + { + VIDEO_WaitVSync (); + if (CARD_Mount(slot, SysArea, NULL) == CARD_ERROR_READY) + return 1; + else + EXI_ProbeReset (); + tries++; + } + return 0; +} + +/**************************************************************************** + * Slot Management + * + * + ****************************************************************************/ +void slot_autoload(int slot, int device) +{ + /* Mega CD backup RAM specific */ + if (!slot && (system_hw == SYSTEM_MCD)) + { + /* automatically load internal backup RAM */ + FILE *fp = fopen(brm_filename[((region_code ^ 0x40) >> 6) - 1], "rb"); + if (fp != NULL) + { + fread(scd.bram, 0x2000, 1, fp); + fclose(fp); + + /* update CRC */ + brm_crc[0] = crc32(0, scd.bram, 0x2000); + } + else + { + /* force internal backup RAM format (does not use previous region backup RAM) */ + scd.bram[0x1fff] = 0; + } + + /* check if internal backup RAM is correctly formatted */ + if (memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) + { + /* clear internal backup RAM */ + memset(scd.bram, 0x00, 0x2000 - 0x40); + + /* internal Backup RAM size fields */ + brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00; + brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (sizeof(scd.bram) / 64) - 3; + + /* format internal backup RAM */ + memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40); + + /* clear CRC to force file saving (in case previous region backup RAM was also formatted) */ + brm_crc[0] = 0; + } + + /* automatically load cartridge backup RAM (if enabled) */ + if (scd.cartridge.id) + { + fp = fopen(CART_BRAM, "rb"); + if (fp != NULL) + { + int filesize = scd.cartridge.mask + 1; + int done = 0; + + /* Read into buffer (2k blocks) */ + while (filesize > CHUNKSIZE) + { + fread(scd.cartridge.area + done, CHUNKSIZE, 1, fp); + done += CHUNKSIZE; + filesize -= CHUNKSIZE; + } + + /* Read remaining bytes */ + if (filesize) + { + fread(scd.cartridge.area + done, filesize, 1, fp); + } + + /* close file */ + fclose(fp); + + /* update CRC */ + brm_crc[1] = crc32(0, scd.cartridge.area, scd.cartridge.mask + 1); + } + + /* check if cartridge backup RAM is correctly formatted */ + if (memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) + { + /* clear cartridge backup RAM */ + memset(scd.cartridge.area, 0x00, scd.cartridge.mask + 1); + + /* Cartridge Backup RAM size fields */ + brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = (((scd.cartridge.mask + 1) / 64) - 3) >> 8; + brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (((scd.cartridge.mask + 1) / 64) - 3) & 0xff; + + /* format cartridge backup RAM */ + memcpy(scd.cartridge.area + scd.cartridge.mask + 1 - 0x40, brm_format, 0x40); + } + } + } + + /* configurable SRAM & State auto-saving */ + if ((slot && !(config.s_auto & 2)) || (!slot && !(config.s_auto & 1))) + { + return; + } + + if (strlen(rom_filename)) + { + SILENT = 1; + slot_load(slot, device); + SILENT = 0; + } +} + +void slot_autosave(int slot, int device) +{ + /* Mega CD backup RAM specific */ + if (!slot && (system_hw == SYSTEM_MCD)) + { + /* verify that internal backup RAM has been modified */ + if (crc32(0, scd.bram, 0x2000) != brm_crc[0]) + { + /* check if it is correctly formatted before saving */ + if (!memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) + { + FILE *fp = fopen(brm_filename[((region_code ^ 0x40) >> 6) - 1], "wb"); + if (fp != NULL) + { + fwrite(scd.bram, 0x2000, 1, fp); + fclose(fp); + + /* update CRC */ + brm_crc[0] = crc32(0, scd.bram, 0x2000); + } + } + } + + /* verify that cartridge backup RAM has been modified */ + if (scd.cartridge.id && (crc32(0, scd.cartridge.area, scd.cartridge.mask + 1) != brm_crc[1])) + { + /* check if it is correctly formatted before saving */ + if (!memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) + { + FILE *fp = fopen(CART_BRAM, "wb"); + if (fp != NULL) + { + int filesize = scd.cartridge.mask + 1; + int done = 0; + + /* Write to file (2k blocks) */ + while (filesize > CHUNKSIZE) + { + fwrite(scd.cartridge.area + done, CHUNKSIZE, 1, fp); + done += CHUNKSIZE; + filesize -= CHUNKSIZE; + } + + /* Write remaining bytes */ + if (filesize) + { + fwrite(scd.cartridge.area + done, filesize, 1, fp); + } + + /* Close file */ + fclose(fp); + + /* update CRC */ + brm_crc[1] = crc32(0, scd.cartridge.area, scd.cartridge.mask + 1); + } + } + } + } + + /* configurable SRAM & State auto-saving */ + if ((slot && !(config.s_auto & 2)) || (!slot && !(config.s_auto & 1))) + { + return; + } + + if (strlen(rom_filename)) + { + SILENT = 1; + slot_save(slot, device); + SILENT = 0; + } +} + +void slot_autodetect(int slot, int device, t_slot *ptr) +{ + if (!ptr) return; + + char filename[MAXPATHLEN]; + memset(ptr,0,sizeof(t_slot)); + + if (!device) + { + /* FAT support */ + if (slot > 0) + { + sprintf (filename,"%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); + } + else + { + sprintf (filename,"%s/saves/%s.srm", DEFAULT_PATH, rom_filename); + } + + /* Open file */ + FILE *fp = fopen(filename, "rb"); + if (fp) + { + /* Retrieve date & close */ + struct stat filestat; + stat(filename, &filestat); + struct tm *timeinfo = localtime(&filestat.st_mtime); + ptr->year = 1900 + timeinfo->tm_year; + ptr->month = timeinfo->tm_mon; + ptr->day = timeinfo->tm_mday; + ptr->hour = timeinfo->tm_hour; + ptr->min = timeinfo->tm_min; + fclose(fp); + ptr->valid = 1; + } + } + else + { + /* Memory Card support */ + if (slot > 0) + sprintf(filename,"MD-%04X.gp%d", rominfo.realchecksum, slot - 1); + else + sprintf(filename,"MD-%04X.srm", rominfo.realchecksum); + + /* Initialise the CARD system */ + memset(&SysArea, 0, CARD_WORKAREA); + CARD_Init("GENP", "00"); + + /* CARD slot */ + device--; + + /* Mount CARD */ + if (CardMount(device)) + { + /* Open file */ + card_file CardFile; + if (CARD_Open(device, filename, &CardFile) == CARD_ERROR_READY) + { + /* Retrieve date & close */ + card_stat CardStatus; + CARD_GetStatus(device, CardFile.filenum, &CardStatus); + time_t rawtime = CardStatus.time; + struct tm *timeinfo = localtime(&rawtime); + ptr->year = 1900 + timeinfo->tm_year; + ptr->month = timeinfo->tm_mon; + ptr->day = timeinfo->tm_mday; + ptr->hour = timeinfo->tm_hour; + ptr->min = timeinfo->tm_min; + CARD_Close(&CardFile); + ptr->valid = 1; + } + CARD_Unmount(device); + } + } +} + +int slot_delete(int slot, int device) +{ + char filename[MAXPATHLEN]; + int ret = 0; + + if (!device) + { + /* FAT support */ + if (slot > 0) + { + /* remove screenshot */ + sprintf(filename,"%s/saves/%s__%d.png", DEFAULT_PATH, rom_filename, slot - 1); + remove(filename); + + sprintf (filename,"%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); + } + else + { + sprintf (filename,"%s/saves/%s.srm", DEFAULT_PATH, rom_filename); + } + + /* Delete file */ + ret = remove(filename); + } + else + { + /* Memory Card support */ + if (slot > 0) + sprintf(filename,"MD-%04X.gp%d", rominfo.realchecksum, slot - 1); + else + sprintf(filename,"MD-%04X.srm", rominfo.realchecksum); + + /* Initialise the CARD system */ + memset(&SysArea, 0, CARD_WORKAREA); + CARD_Init("GENP", "00"); + + /* CARD slot */ + device--; + + /* Mount CARD */ + if (CardMount(device)) + { + /* Delete file */ + ret = CARD_Delete(device,filename); + CARD_Unmount(device); + } + } + + return ret; +} + +int slot_load(int slot, int device) +{ + char filename[MAXPATHLEN]; + unsigned long filesize, done = 0; + u8 *buffer; + + /* File Type */ + if (slot > 0) + { + GUI_MsgBoxOpen("Information","Loading State ...",1); + } + else + { + if (!sram.on) + { + GUI_WaitPrompt("Error","Backup RAM is disabled !"); + return 0; + } + + GUI_MsgBoxOpen("Information","Loading Backup RAM ...",1); + } + + /* Device Type */ + if (!device) + { + /* FAT file */ + if (slot > 0) + { + sprintf (filename,"%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); + } + else + { + sprintf (filename,"%s/saves/%s.srm", DEFAULT_PATH, rom_filename); + } + + /* Open file */ + FILE *fp = fopen(filename, "rb"); + if (!fp) + { + GUI_WaitPrompt("Error","Unable to open file !"); + return 0; + } + + /* Get file size */ + fseek(fp, 0, SEEK_END); + filesize = ftell(fp); + fseek(fp, 0, SEEK_SET); + + /* allocate buffer */ + buffer = (u8 *)memalign(32,filesize); + if (!buffer) + { + GUI_WaitPrompt("Error","Unable to allocate memory !"); + fclose(fp); + return 0; + } + + /* Read into buffer (2k blocks) */ + while (filesize > CHUNKSIZE) + { + fread(buffer + done, CHUNKSIZE, 1, fp); + done += CHUNKSIZE; + filesize -= CHUNKSIZE; + } + + /* Read remaining bytes */ + fread(buffer + done, filesize, 1, fp); + done += filesize; + + /* Close file */ + fclose(fp); + } + else + { + /* Memory Card file */ + if (slot > 0) + { + sprintf(filename, "MD-%04X.gp%d", rominfo.realchecksum, slot - 1); + } + else + { + sprintf(filename, "MD-%04X.srm", rominfo.realchecksum); + } + + /* Initialise the CARD system */ + char action[64]; + memset(&SysArea, 0, CARD_WORKAREA); + CARD_Init("GENP", "00"); + + /* CARD slot */ + device--; + + /* Attempt to mount the card */ + if (!CardMount(device)) + { + GUI_WaitPrompt("Error","Unable to mount memory card"); + return 0; + } + + /* Retrieve the sector size */ + u32 SectorSize = 0; + int CardError = CARD_GetSectorSize(device, &SectorSize); + if (!SectorSize) + { + sprintf(action, "Invalid sector size (%d)", CardError); + GUI_WaitPrompt("Error",action); + CARD_Unmount(device); + return 0; + } + + /* Open file */ + card_file CardFile; + CardError = CARD_Open(device, filename, &CardFile); + if (CardError) + { + sprintf(action, "Unable to open file (%d)", CardError); + GUI_WaitPrompt("Error",action); + CARD_Unmount(device); + return 0; + } + + /* Get file size */ + filesize = CardFile.len; + if (filesize % SectorSize) + { + filesize = ((filesize / SectorSize) + 1) * SectorSize; + } + + /* Allocate buffer */ + u8 *in = (u8 *)memalign(32, filesize); + if (!in) + { + GUI_WaitPrompt("Error","Unable to allocate memory !"); + CARD_Close(&CardFile); + CARD_Unmount(device); + return 0; + } + + /* Read file sectors */ + while (filesize > 0) + { + CARD_Read(&CardFile, &in[done], SectorSize, done); + done += SectorSize; + filesize -= SectorSize; + } + + /* Close file */ + CARD_Close(&CardFile); + CARD_Unmount(device); + + /* Uncompressed file size */ + memcpy(&filesize, in + 2112, 4); + buffer = (u8 *)memalign(32, filesize); + if (!buffer) + { + free(in); + GUI_WaitPrompt("Error","Unable to allocate memory !"); + return 0; + } + + /* Uncompress file */ + uncompress ((Bytef *)buffer, &filesize, (Bytef *)(in + 2112 + 4), done - 2112 - 4); + free(in); + } + + if (slot > 0) + { + /* Load state */ + if (state_load(buffer) <= 0) + { + free(buffer); + GUI_WaitPrompt("Error","Invalid state file !"); + return 0; + } + } + else + { + /* load SRAM */ + memcpy(sram.sram, buffer, 0x10000); + + /* update CRC */ + sram.crc = crc32(0, sram.sram, 0x10000); + } + + free(buffer); + GUI_MsgBoxClose(); + return 1; +} + +int slot_save(int slot, int device) +{ + char filename[MAXPATHLEN]; + unsigned long filesize, done = 0; + u8 *buffer; + + if (slot > 0) + { + GUI_MsgBoxOpen("Information","Saving State ...",1); + + /* allocate buffer */ + buffer = (u8 *)memalign(32,STATE_SIZE); + if (!buffer) + { + GUI_WaitPrompt("Error","Unable to allocate memory !"); + return 0; + } + + filesize = state_save(buffer); + } + else + { + /* only save if SRAM is enabled */ + if (!sram.on) + { + GUI_WaitPrompt("Error","Backup RAM disabled !"); + return 0; + } + + /* only save if SRAM has been modified */ + if (crc32(0, &sram.sram[0], 0x10000) == sram.crc) + { + GUI_WaitPrompt("Warning","Backup RAM not modified !"); + return 0; + } + + GUI_MsgBoxOpen("Information","Saving Backup RAM ...",1); + + /* allocate buffer */ + buffer = (u8 *)memalign(32, 0x10000); + if (!buffer) + { + GUI_WaitPrompt("Error","Unable to allocate memory !"); + return 0; + } + + /* copy SRAM data */ + memcpy(buffer, sram.sram, 0x10000); + filesize = 0x10000; + + /* update CRC */ + sram.crc = crc32(0, sram.sram, 0x10000); + } + + /* Device Type */ + if (!device) + { + /* FAT filename */ + if (slot > 0) + { + sprintf(filename, "%s/saves/%s.gp%d", DEFAULT_PATH, rom_filename, slot - 1); + } + else + { + sprintf(filename, "%s/saves/%s.srm", DEFAULT_PATH, rom_filename); + } + + /* Open file */ + FILE *fp = fopen(filename, "wb"); + if (!fp) + { + GUI_WaitPrompt("Error","Unable to open file !"); + free(buffer); + return 0; + } + + /* Write from buffer (2k blocks) */ + while (filesize > CHUNKSIZE) + { + fwrite(buffer + done, CHUNKSIZE, 1, fp); + done += CHUNKSIZE; + filesize -= CHUNKSIZE; + } + + /* Write remaining bytes */ + fwrite(buffer + done, filesize, 1, fp); + done += filesize; + + /* Close file */ + fclose(fp); + free(buffer); + + /* Close message box */ + GUI_MsgBoxClose(); + + /* Save state screenshot */ + if (slot > 0) + { + sprintf(filename,"%s/saves/%s__%d.png", DEFAULT_PATH, rom_filename, slot - 1); + gxSaveScreenshot(filename); + } + } + else + { + /* Memory Card filename */ + if (slot > 0) + { + sprintf(filename, "MD-%04X.gp%d", rominfo.realchecksum, slot - 1); + } + else + { + sprintf(filename, "MD-%04X.srm", rominfo.realchecksum); + } + + /* Initialise the CARD system */ + char action[64]; + memset(&SysArea, 0, CARD_WORKAREA); + CARD_Init("GENP", "00"); + + /* CARD slot */ + device--; + + /* Attempt to mount the card */ + if (!CardMount(device)) + { + GUI_WaitPrompt("Error","Unable to mount memory card"); + free(buffer); + return 0; + } + + /* Retrieve sector size */ + u32 SectorSize = 0; + int CardError = CARD_GetSectorSize(device, &SectorSize); + if (!SectorSize) + { + sprintf(action, "Invalid sector size (%d)", CardError); + GUI_WaitPrompt("Error",action); + CARD_Unmount(device); + free(buffer); + return 0; + } + + /* Build output buffer */ + u8 *out = (u8 *)memalign(32, filesize + 2112 + 4); + if (!out) + { + GUI_WaitPrompt("Error","Unable to allocate memory !"); + CARD_Unmount(device); + free(buffer); + return 0; + } + + /* Memory Card file header */ + char comment[2][32] = { {"Genesis Plus GX"}, {"SRAM Save"} }; + strcpy (comment[1], filename); + memcpy (&out[0], &icon, 2048); + memcpy (&out[2048], &comment[0], 64); + + /* uncompressed size */ + done = filesize; + memcpy(&out[2112], &done, 4); + + /* compress file */ + compress2 ((Bytef *)&out[2112 + 4], &filesize, (Bytef *)buffer, done, 9); + + /* Adjust file size */ + filesize = filesize + 4 + 2112; + if (filesize % SectorSize) + { + filesize = ((filesize / SectorSize) + 1) * SectorSize; + } + + /* Check if file already exists */ + card_file CardFile; + if (CARD_Open(device, filename, &CardFile) == CARD_ERROR_READY) + { + int size = filesize - CardFile.len; + CARD_Close(&CardFile); + memset(&CardFile,0,sizeof(CardFile)); + + /* Check file new size */ + if (size > 0) + { + CardError = CARD_Create(device, "TEMP", size, &CardFile); + if (CardError) + { + sprintf(action, "Unable to increase file size (%d)", CardError); + GUI_WaitPrompt("Error",action); + CARD_Unmount(device); + free(out); + free(buffer); + return 0; + } + + /* delete temporary file */ + CARD_Close(&CardFile); + memset(&CardFile,0,sizeof(CardFile)); + CARD_Delete(device, "TEMP"); + } + + /* delete previously existing file */ + CARD_Delete(device, filename); + } + + /* Create a new file */ + CardError = CARD_Create(device, filename, filesize, &CardFile); + if (CardError) + { + sprintf(action, "Unable to create file (%d)", CardError); + GUI_WaitPrompt("Error",action); + CARD_Unmount(device); + free(out); + free(buffer); + return 0; + } + + /* Update file informations */ + time_t rawtime; + time(&rawtime); + card_stat CardStatus; + CARD_GetStatus(device, CardFile.filenum, &CardStatus); + CardStatus.icon_addr = 0x0; + CardStatus.icon_fmt = 2; + CardStatus.icon_speed = 1; + CardStatus.comment_addr = 2048; + CardStatus.time = rawtime; + CARD_SetStatus(device, CardFile.filenum, &CardStatus); + + /* Write file sectors */ + while (filesize > 0) + { + CARD_Write(&CardFile, &out[done], SectorSize, done); + filesize -= SectorSize; + done += SectorSize; + } + + /* Close file */ + CARD_Close(&CardFile); + CARD_Unmount(device); + free(out); + free(buffer); + + /* Close message box */ + GUI_MsgBoxClose(); + } + + return 1; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_slot.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_slot.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_slot.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_slot.h index fe227a8936..eedea1fd8e 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/file_slot.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/file_slot.h @@ -1,60 +1,60 @@ -/* - * file_slot.c - * - * FAT and Memory Card SRAM/Savestate files managment - * - * Copyright Eke-Eke (2008-2012), based on original code from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _FILE_SLOT_H -#define _FILE_SLOT_H - -typedef struct -{ - int valid; - u16 year; - u8 month; - u8 day; - u8 hour; - u8 min; -} t_slot; - -extern void slot_autoload(int slot, int device); -extern void slot_autosave(int slot, int device); -extern void slot_autodetect(int slot, int device, t_slot *ptr); -extern int slot_delete(int slot, int device); -extern int slot_load(int slot, int device); -extern int slot_save(int slot, int device); - -#endif +/* + * file_slot.c + * + * FAT and Memory Card SRAM/Savestate files managment + * + * Copyright Eke-Eke (2008-2012), based on original code from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _FILE_SLOT_H +#define _FILE_SLOT_H + +typedef struct +{ + int valid; + u16 year; + u8 month; + u8 day; + u8 hour; + u8 min; +} t_slot; + +extern void slot_autoload(int slot, int device); +extern void slot_autosave(int slot, int device); +extern void slot_autodetect(int slot, int device, t_slot *ptr); +extern int slot_delete(int slot, int device); +extern int slot_load(int slot, int device); +extern int slot_save(int slot, int device); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/fileio.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/fileio.c new file mode 100644 index 0000000000..fa32de4fb4 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/fileio.c @@ -0,0 +1,258 @@ +/* + * fileio.c + * + * Load a normal file, or ZIP/GZ archive into ROM buffer. + * Returns loaded ROM size (zero if an error occured). + * + * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "file_load.h" +#include "gui.h" + +/* + * Zip file header definition + */ +typedef struct +{ + unsigned int zipid __attribute__ ((__packed__)); // 0x04034b50 + unsigned short zipversion __attribute__ ((__packed__)); + unsigned short zipflags __attribute__ ((__packed__)); + unsigned short compressionMethod __attribute__ ((__packed__)); + unsigned short lastmodtime __attribute__ ((__packed__)); + unsigned short lastmoddate __attribute__ ((__packed__)); + unsigned int crc32 __attribute__ ((__packed__)); + unsigned int compressedSize __attribute__ ((__packed__)); + unsigned int uncompressedSize __attribute__ ((__packed__)); + unsigned short filenameLength __attribute__ ((__packed__)); + unsigned short extraDataLength __attribute__ ((__packed__)); +} PKZIPHEADER; + + +/* + * Zip files are stored little endian + * Support functions for short and int types + */ +static inline u32 FLIP32 (u32 b) +{ + unsigned int c; + c = (b & 0xff000000) >> 24; + c |= (b & 0xff0000) >> 8; + c |= (b & 0xff00) << 8; + c |= (b & 0xff) << 24; + return c; +} + +static inline u16 FLIP16 (u16 b) +{ + u16 c; + c = (b & 0xff00) >> 8; + c |= (b & 0xff) << 8; + return c; +} + +int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension) +{ + int size = 0; + char in[CHUNKSIZE]; + char msg[64] = "Unable to open file"; + + /* Open file */ + FILE *fd = fopen(filename, "rb"); + + /* Master System & Game Gear BIOS are optional files */ + if (!strcmp(filename,MS_BIOS_US) || !strcmp(filename,MS_BIOS_EU) || !strcmp(filename,MS_BIOS_JP) || !strcmp(filename,GG_BIOS)) + { + /* disable all messages */ + SILENT = 1; + } + + /* Mega CD BIOS are required files */ + if (!strcmp(filename,CD_BIOS_US) || !strcmp(filename,CD_BIOS_EU) || !strcmp(filename,CD_BIOS_JP)) + { + sprintf(msg,"Unable to open %s", filename + 14); + } + + if (!fd) + { + GUI_WaitPrompt("Error", msg); + SILENT = 0; + return 0; + } + + /* Read first chunk */ + fread(in, CHUNKSIZE, 1, fd); + + /* Detect Zip file */ + if (memcmp(in, "PK", 2) == 0) + { + /* Inflate buffer */ + char out[CHUNKSIZE]; + + /* PKZip header pointer */ + PKZIPHEADER *pkzip = (PKZIPHEADER *) in; + + /* Retrieve uncompressed ROM size */ + size = FLIP32(pkzip->uncompressedSize); + + /* Check ROM size */ + if (size > maxsize) + { + fclose(fd); + GUI_WaitPrompt("Error","File is too large"); + SILENT = 0; + return 0; + } + + sprintf (msg, "Unzipping %d bytes ...", size); + GUI_MsgBoxUpdate("Information",msg); + + /* Initialize zip stream */ + z_stream zs; + memset (&zs, 0, sizeof (z_stream)); + zs.zalloc = Z_NULL; + zs.zfree = Z_NULL; + zs.opaque = Z_NULL; + zs.avail_in = 0; + zs.next_in = Z_NULL; + int res = inflateInit2(&zs, -MAX_WBITS); + + if (res != Z_OK) + { + fclose(fd); + GUI_WaitPrompt("Error","Unable to unzip file"); + SILENT = 0; + return 0; + } + + /* Compressed filename offset */ + int offset = sizeof (PKZIPHEADER) + FLIP16(pkzip->filenameLength); + + if (extension) + { + memcpy(extension, &in[offset - 3], 3); + extension[3] = 0; + } + + + /* Initial Zip buffer offset */ + offset += FLIP16(pkzip->extraDataLength); + zs.next_in = (Bytef *)&in[offset]; + + /* Initial Zip remaining chunk size */ + zs.avail_in = CHUNKSIZE - offset; + + /* Start unzipping file */ + do + { + /* Inflate data until output buffer is empty */ + do + { + zs.avail_out = CHUNKSIZE; + zs.next_out = (Bytef *) out; + res = inflate(&zs, Z_NO_FLUSH); + + if (res == Z_MEM_ERROR) + { + inflateEnd(&zs); + fclose(fd); + GUI_WaitPrompt("Error","Unable to unzip file"); + SILENT = 0; + return 0; + } + + offset = CHUNKSIZE - zs.avail_out; + if (offset) + { + memcpy(buffer, out, offset); + buffer += offset; + } + } + while (zs.avail_out == 0); + + /* Read next chunk of zipped data */ + fread(in, CHUNKSIZE, 1, fd); + zs.next_in = (Bytef *)&in[0]; + zs.avail_in = CHUNKSIZE; + } + while (res != Z_STREAM_END); + inflateEnd (&zs); + } + else + { + /* Get file size */ + fseek(fd, 0, SEEK_END); + size = ftell(fd); + fseek(fd, 0, SEEK_SET); + + /* size limit */ + if(size > maxsize) + { + fclose(fd); + GUI_WaitPrompt("Error","File is too large"); + SILENT = 0; + return 0; + } + + sprintf((char *)msg,"Loading %d bytes ...", size); + GUI_MsgBoxUpdate("Information", (char *)msg); + + /* filename extension */ + if (extension) + { + memcpy(extension, &filename[strlen(filename) - 3], 3); + extension[3] = 0; + } + + /* Read into buffer */ + int left = size; + while (left > CHUNKSIZE) + { + fread(buffer, CHUNKSIZE, 1, fd); + buffer += CHUNKSIZE; + left -= CHUNKSIZE; + } + + /* Read remaining bytes */ + fread(buffer, left, 1, fd); + } + + /* Close file */ + fclose(fd); + + /* Return loaded ROM size */ + SILENT = 0; + return size; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/fileio.h new file mode 100644 index 0000000000..e881309086 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/fileio.h @@ -0,0 +1,47 @@ +/* + * fileio.c + * + * Load a normal file, or ZIP/GZ archive into ROM buffer. + * Returns loaded ROM size (zero if an error occured). + * + * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _FILEIO_H_ +#define _FILEIO_H_ + +/* Function prototypes */ +int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension); + +#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/history.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/history.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/history.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/history.c index a28219fd3a..d19d02491b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/history.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/history.c @@ -1,138 +1,138 @@ -/* - * history.c - * - * Generic ROM history list managment - * - * Copyright Eke-Eke (2008-2012), based on original code from Martin Disibio (2008) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "history.h" - -t_history history; - - -/**************************************************************************** - * history_add_file - * - * Adds the given file path to the top of the history list, shifting each - * existing entry in the history down one place. If given file path is - * already in the list then the existing entry is (in effect) moved to the - * top instead. - ****************************************************************************/ -void history_add_file(char *filepath, char *filename, u8 filetype) -{ - /* Create the new entry for this path. */ - t_history_entry newentry; - strncpy(newentry.filepath, filepath, MAXJOLIET - 1); - strncpy(newentry.filename, filename, MAXJOLIET - 1); - newentry.filepath[MAXJOLIET - 1] = '\0'; - newentry.filename[MAXJOLIET - 1] = '\0'; - newentry.filetype = filetype; - - t_history_entry oldentry; /* Old entry is the one being shuffled down a spot. */ - t_history_entry currentry; /* Curr entry is the one that just replaced old path. */ - - /* Initially set curr entry to the new value. */ - memcpy(¤try, &newentry, sizeof(t_history_entry)); - - int i; - for(i=0; i < NUM_HISTORY_ENTRIES; i++) - { - /* Save off the next entry. */ - memcpy(&oldentry, &history.entries[i], sizeof(t_history_entry)); - - /* Overwrite with the previous entry. */ - memcpy(&history.entries[i], ¤try, sizeof(t_history_entry)); - - /* Switch the old entry to the curr entry now. */ - memcpy(¤try, &oldentry, sizeof(t_history_entry)); - - /* If the entry in the list at this spot matches - the new entry then do nothing and let this - entry get deleted. */ - if(strcmp(newentry.filepath, currentry.filepath) == 0 && strcmp(newentry.filename, currentry.filename) == 0) - break; - } - - /* now save to disk */ - history_save(); -} - -void history_save() -{ - /* open file */ - char fname[MAXPATHLEN]; - sprintf (fname, "%s/history.ini", DEFAULT_PATH); - FILE *fp = fopen(fname, "wb"); - if (fp) - { - /* write file */ - fwrite(&history, sizeof(history), 1, fp); - fclose(fp); - } -} - -void history_load(void) -{ - /* open file */ - char fname[MAXPATHLEN]; - sprintf (fname, "%s/history.ini", DEFAULT_PATH); - FILE *fp = fopen(fname, "rb"); - if (fp) - { - /* read file */ - if (fread(&history, sizeof(history), 1, fp) != 1) - { - /* an error ocurred, better clear hoistory */ - memset(&history, 0, sizeof(history)); - } - - /* close file */ - fclose(fp); - } -} - -void history_default(void) -{ - int i; - for(i=0; i < NUM_HISTORY_ENTRIES; i++) - memset(&history.entries[i], 0, sizeof(t_history_entry)); - - /* restore history */ - history_load(); -} - - - +/* + * history.c + * + * Generic ROM history list managment + * + * Copyright Eke-Eke (2008-2012), based on original code from Martin Disibio (2008) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "history.h" + +t_history history; + + +/**************************************************************************** + * history_add_file + * + * Adds the given file path to the top of the history list, shifting each + * existing entry in the history down one place. If given file path is + * already in the list then the existing entry is (in effect) moved to the + * top instead. + ****************************************************************************/ +void history_add_file(char *filepath, char *filename, u8 filetype) +{ + /* Create the new entry for this path. */ + t_history_entry newentry; + strncpy(newentry.filepath, filepath, MAXJOLIET - 1); + strncpy(newentry.filename, filename, MAXJOLIET - 1); + newentry.filepath[MAXJOLIET - 1] = '\0'; + newentry.filename[MAXJOLIET - 1] = '\0'; + newentry.filetype = filetype; + + t_history_entry oldentry; /* Old entry is the one being shuffled down a spot. */ + t_history_entry currentry; /* Curr entry is the one that just replaced old path. */ + + /* Initially set curr entry to the new value. */ + memcpy(¤try, &newentry, sizeof(t_history_entry)); + + int i; + for(i=0; i < NUM_HISTORY_ENTRIES; i++) + { + /* Save off the next entry. */ + memcpy(&oldentry, &history.entries[i], sizeof(t_history_entry)); + + /* Overwrite with the previous entry. */ + memcpy(&history.entries[i], ¤try, sizeof(t_history_entry)); + + /* Switch the old entry to the curr entry now. */ + memcpy(¤try, &oldentry, sizeof(t_history_entry)); + + /* If the entry in the list at this spot matches + the new entry then do nothing and let this + entry get deleted. */ + if(strcmp(newentry.filepath, currentry.filepath) == 0 && strcmp(newentry.filename, currentry.filename) == 0) + break; + } + + /* now save to disk */ + history_save(); +} + +void history_save() +{ + /* open file */ + char fname[MAXPATHLEN]; + sprintf (fname, "%s/history.ini", DEFAULT_PATH); + FILE *fp = fopen(fname, "wb"); + if (fp) + { + /* write file */ + fwrite(&history, sizeof(history), 1, fp); + fclose(fp); + } +} + +void history_load(void) +{ + /* open file */ + char fname[MAXPATHLEN]; + sprintf (fname, "%s/history.ini", DEFAULT_PATH); + FILE *fp = fopen(fname, "rb"); + if (fp) + { + /* read file */ + if (fread(&history, sizeof(history), 1, fp) != 1) + { + /* an error ocurred, better clear hoistory */ + memset(&history, 0, sizeof(history)); + } + + /* close file */ + fclose(fp); + } +} + +void history_default(void) +{ + int i; + for(i=0; i < NUM_HISTORY_ENTRIES; i++) + memset(&history.entries[i], 0, sizeof(t_history_entry)); + + /* restore history */ + history_load(); +} + + + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/history.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/history.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/history.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/history.h index e40081a5d8..022115b418 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/history.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/fileio/history.h @@ -1,69 +1,69 @@ -/* - * history.c - * - * Generic ROM history list managment - * - * Copyright Eke-Eke (2008-2012), based on original code from Martin Disibio (2008) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _HISTORY_H -#define _HISTORY_H - -#include "filesel.h" - -#define NUM_HISTORY_ENTRIES (10) - -/**************************************************************************** - * ROM Play History - * - ****************************************************************************/ -typedef struct -{ - char filepath[MAXJOLIET]; - char filename[MAXJOLIET]; - u8 filetype; -} t_history_entry; - -typedef struct -{ - t_history_entry entries[NUM_HISTORY_ENTRIES]; -} t_history; - -extern t_history history; -extern void history_add_file(char *filepath, char *filename, u8 filetype); -extern void history_save(void); -extern void history_load(void); -extern void history_default(void); - -#endif +/* + * history.c + * + * Generic ROM history list managment + * + * Copyright Eke-Eke (2008-2012), based on original code from Martin Disibio (2008) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _HISTORY_H +#define _HISTORY_H + +#include "filesel.h" + +#define NUM_HISTORY_ENTRIES (10) + +/**************************************************************************** + * ROM Play History + * + ****************************************************************************/ +typedef struct +{ + char filepath[MAXJOLIET]; + char filename[MAXJOLIET]; + u8 filetype; +} t_history_entry; + +typedef struct +{ + t_history_entry entries[NUM_HISTORY_ENTRIES]; +} t_history; + +extern t_history history; +extern void history_add_file(char *filepath, char *filename, u8 filetype); +extern void history_save(void); +extern void history_load(void); +extern void history_default(void); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/cheats.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/cheats.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/cheats.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/cheats.c index 829044cbfe..b3ab31000e 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/cheats.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/cheats.c @@ -1,1492 +1,1492 @@ -/* - * cheats.c - * - * Cheats menu - * - * Copyright Eke-Eke (2010-2012) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "file_load.h" -#include "cheats.h" -#include "font.h" -#include "gui.h" - -#define BG_COLOR_1 {0x49,0x49,0x49,0xff} -#define BG_COLOR_2 {0x66,0x66,0x66,0xff} - -#define MAX_CHEATS (150) -#define MAX_DESC_LENGTH (63) - -#ifdef HW_RVL -extern const u8 Key_Minus_wii_png[]; -extern const u8 Key_Plus_wii_png[]; -#else -extern const u8 Key_R_gcn_png[]; -extern const u8 Key_L_gcn_png[]; -#endif -extern const u8 Key_DPAD_png[]; - -typedef struct -{ - char code[12]; - char text[MAX_DESC_LENGTH]; - u8 enable; - u16 data; - u16 old; - u32 address; - u8 *prev; -} CHEATENTRY; - -static int string_offset = 0; -static int selection = 0; -static int offset = 0; -static int type = 0; -static int maxcheats = 0; -static int maxROMcheats = 0; -static int maxRAMcheats = 0; - -static CHEATENTRY cheatlist[MAX_CHEATS]; -static u8 cheatIndexes[MAX_CHEATS]; - -static void cheatmenu_cb(void); - -/*****************************************************************************/ -/* GUI Buttons data */ -/*****************************************************************************/ -static butn_data arrow_up_data = -{ - {NULL,NULL}, - {Button_up_png,Button_up_over_png} -}; - -static butn_data arrow_down_data = -{ - {NULL,NULL}, - {Button_down_png,Button_down_over_png} -}; -static butn_data button_digit_data = -{ - {NULL,NULL}, - {Button_digit_png,Button_digit_over_png} -}; - -/*****************************************************************************/ -/* GUI Arrows button */ -/*****************************************************************************/ - -static gui_butn arrow_up = {&arrow_up_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,76,360,32}; -static gui_butn arrow_down = {&arrow_down_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,368,360,32}; - - -/*****************************************************************************/ -/* GUI helpers */ -/*****************************************************************************/ -static gui_item action_cancel = -{ - NULL,Key_B_png,"","Exit",10,422,28,28 -}; - -static gui_item action_select = -{ - NULL,Key_A_png,"","Edit Entry",602,422,28,28 -}; - -/*****************************************************************************/ -/* GUI Background images */ -/*****************************************************************************/ -static gui_image bg_cheats[7] = -{ - {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Banner_top_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,0,0,640,108,255}, - {NULL,Banner_bottom_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,380,640,100,255}, - {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,466,40,152,44,255}, - {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,152}, - {NULL,Frame_s1_png,IMAGE_SLIDE_RIGHT,411,109,372,296,76}, -}; - -/*****************************************************************************/ -/* Menu Items description */ -/*****************************************************************************/ -static gui_item items_cheats[30] = -{ - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"","Edit Entry",0,0,0,0}, - {NULL,NULL,"0","Add Character" ,440,136,40,40}, - {NULL,NULL,"1","Add Character" ,486,136,40,40}, - {NULL,NULL,"2","Add Character" ,532,136,40,40}, - {NULL,NULL,"3","Add Character" ,578,136,40,40}, - {NULL,NULL,"4","Add Character" ,440,182,40,40}, - {NULL,NULL,"5","Add Character" ,486,182,40,40}, - {NULL,NULL,"6","Add Character" ,532,182,40,40}, - {NULL,NULL,"7","Add Character" ,578,182,40,40}, - {NULL,NULL,"8","Add Character" ,440,228,40,40}, - {NULL,NULL,"9","Add Character" ,486,228,40,40}, - {NULL,NULL,"A","Add Character" ,532,228,40,40}, - {NULL,NULL,"B","Add Character" ,578,228,40,40}, - {NULL,NULL,"C","Add Character" ,440,274,40,40}, - {NULL,NULL,"D","Add Character" ,486,274,40,40}, - {NULL,NULL,"E","Add Character" ,532,274,40,40}, - {NULL,NULL,"F","Add Character" ,578,274,40,40}, - {NULL,NULL,"del","Backspace" ,440,338,40,40}, - {NULL,NULL,":","Add Separator" ,486,338,40,40}, - {NULL,NULL,"+","Next Characters",532,338,40,40}, - {NULL,NULL,"ok","Save Entry" ,578,338,40,40} -}; - -/*****************************************************************************/ -/* Menu Buttons description */ -/*****************************************************************************/ -static gui_butn buttons_cheats[30] = -{ - {NULL, BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,108,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,134,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,160,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,186,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,212,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,238,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,264,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,290,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,316,358,26}, - {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,342,358,26}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,0,1},440,136,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,1,1},486,136,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,1,1},532,136,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,1,0},578,136,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,0,1},440,182,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},486,182,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},532,182,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,0},578,182,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,0,1},440,228,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},486,228,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},532,228,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,0},578,228,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,0,1},440,274,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},486,274,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},532,274,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,0},578,274,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,0,1},440,338,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,1,1},486,338,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,1,1},532,338,40,40}, - {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,1,0},578,338,40,40} -}; - -/*****************************************************************************/ -/* Menu description */ -/*****************************************************************************/ -static gui_menu menu_cheats = -{ - "Cheats Manager", - 0,0, - 30,30,7,0, - items_cheats, - buttons_cheats, - bg_cheats, - {&action_cancel, &action_select}, - {&arrow_up,&arrow_down}, - cheatmenu_cb -}; - -static char ggvalidchars[] = "ABCDEFGHJKLMNPRSTVWXYZ0123456789"; - -static char arvalidchars[] = "0123456789ABCDEF"; - -static u32 decode_cheat(char *string, int index) -{ - char *p; - int i,n; - u32 len = 0; - u32 address = 0; - u16 data = 0; - u8 ref = 0; - - /* 16-bit Game Genie code (ABCD-EFGH) */ - if ((strlen(string) >= 9) && (string[4] == '-')) - { - /* 16-bit system only */ - if ((system_hw & SYSTEM_PBC) != SYSTEM_MD) - { - return 0; - } - - for (i = 0; i < 8; i++) - { - if (i == 4) string++; - p = strchr (ggvalidchars, *string++); - if (p == NULL) return 0; - n = p - ggvalidchars; - - switch (i) - { - case 0: - data |= n << 3; - break; - - case 1: - data |= n >> 2; - address |= (n & 3) << 14; - break; - - case 2: - address |= n << 9; - break; - - case 3: - address |= (n & 0xF) << 20 | (n >> 4) << 8; - break; - - case 4: - data |= (n & 1) << 12; - address |= (n >> 1) << 16; - break; - - case 5: - data |= (n & 1) << 15 | (n >> 1) << 8; - break; - - case 6: - data |= (n >> 3) << 13; - address |= (n & 7) << 5; - break; - - case 7: - address |= n; - break; - } - } - - /* code length */ - len = 9; - } - - /* 8-bit Game Genie code (DDA-AAA-XXX) */ - else if ((strlen(string) >= 11) && (string[3] == '-') && (string[7] == '-')) - { - /* 8-bit system only */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - return 0; - } - - /* decode 8-bit data */ - for (i=0; i<2; i++) - { - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - data |= (n << ((1 - i) * 4)); - } - - /* decode 16-bit address (low 12-bits) */ - for (i=0; i<3; i++) - { - if (i==1) string++; /* skip separator */ - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - address |= (n << ((2 - i) * 4)); - } - - /* decode 16-bit address (high 4-bits) */ - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - n ^= 0xF; /* bits inversion */ - address |= (n << 12); - - /* RAM address are also supported */ - if (address >= 0xC000) - { - /* convert to 24-bit Work RAM address */ - address = 0xFF0000 | (address & 0x1FFF); - } - - /* decode reference 8-bit data */ - for (i=0; i<2; i++) - { - string++; /* skip separator and 2nd digit */ - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - ref |= (n << ((1 - i) * 4)); - } - ref = (ref >> 2) | ((ref & 0x03) << 6); /* 2-bit right rotation */ - ref ^= 0xBA; /* XOR */ - - /* update old data value */ - cheatlist[index].old = ref; - - /* code length */ - len = 11; - } - - /* Action Replay code */ - else if (string[6] == ':') - { - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* 16-bit code (AAAAAA:DDDD) */ - if (strlen(string) < 11) return 0; - - /* decode 24-bit address */ - for (i=0; i<6; i++) - { - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - address |= (n << ((5 - i) * 4)); - } - - /* decode 16-bit data */ - string++; - for (i=0; i<4; i++) - { - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - data |= (n << ((3 - i) * 4)); - } - - /* code length */ - len = 11; - } - else - { - /* 8-bit code (xxAAAA:DD) */ - if (strlen(string) < 9) return 0; - - /* decode 16-bit address */ - string+=2; - for (i=0; i<4; i++) - { - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - address |= (n << ((3 - i) * 4)); - } - - /* ROM addresses are not supported */ - if (address < 0xC000) return 0; - - /* convert to 24-bit Work RAM address */ - address = 0xFF0000 | (address & 0x1FFF); - - /* decode 8-bit data */ - string++; - for (i=0; i<2; i++) - { - p = strchr (arvalidchars, *string++); - if (p == NULL) return 0; - n = (p - arvalidchars) & 0xF; - data |= (n << ((1 - i) * 4)); - } - - /* code length */ - len = 9; - } - } - - /* Valid code found ? */ - if (len) - { - /* update cheat address & data values */ - cheatlist[index].address = address; - cheatlist[index].data = data; - } - - /* return code length (0 = invalid) */ - return len; -} - -static void apply_cheats(void) -{ - u8 *ptr; - - /* clear ROM&RAM patches counter */ - maxROMcheats = maxRAMcheats = 0; - - int i; - for (i = 0; i < maxcheats; i++) - { - if (cheatlist[i].enable) - { - if (cheatlist[i].address < cart.romsize) - { - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* patch ROM data */ - cheatlist[i].old = *(u16 *)(cart.rom + (cheatlist[i].address & 0xFFFFFE)); - *(u16 *)(cart.rom + (cheatlist[i].address & 0xFFFFFE)) = cheatlist[i].data; - } - else - { - /* add ROM patch */ - maxROMcheats++; - cheatIndexes[MAX_CHEATS - maxROMcheats] = i; - - /* get current banked ROM address */ - ptr = &z80_readmap[(cheatlist[i].address) >> 10][cheatlist[i].address & 0x03FF]; - - /* check if reference matches original ROM data */ - if (((u8)cheatlist[i].old) == *ptr) - { - /* patch data */ - *ptr = cheatlist[i].data; - - /* save patched ROM address */ - cheatlist[i].prev = ptr; - } - else - { - /* no patched ROM address yet */ - cheatlist[i].prev = NULL; - } - } - } - else if (cheatlist[i].address >= 0xFF0000) - { - /* add RAM patch */ - cheatIndexes[maxRAMcheats++] = i; - } - } - } -} - -static void clear_cheats(void) -{ - int i = maxcheats; - - /* disable cheats in reversed order in case the same address is used by multiple patches */ - while (i > 0) - { - if (cheatlist[i-1].enable) - { - if (cheatlist[i-1].address < cart.romsize) - { - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* restore original ROM data */ - *(u16 *)(cart.rom + (cheatlist[i-1].address & 0xFFFFFE)) = cheatlist[i-1].old; - } - else - { - /* check if previous banked ROM address has been patched */ - if (cheatlist[i-1].prev != NULL) - { - /* restore original data */ - *cheatlist[i-1].prev = cheatlist[i-1].old; - - /* no more patched ROM address */ - cheatlist[i-1].prev = NULL; - } - } - } - } - - i--; - } -} - -static void switch_chars(void) -{ - int i; - gui_menu *m = &menu_cheats; - - if (m->items[10].text[0] == '0') - { - m->items[10].text[0] = 'G'; - m->items[11].text[0] = 'H'; - m->items[12].text[0] = 'J'; - m->items[13].text[0] = 'K'; - m->items[14].text[0] = 'L'; - m->items[15].text[0] = 'M'; - m->items[16].text[0] = 'N'; - m->items[17].text[0] = 'P'; - m->items[18].text[0] = 'R'; - m->items[19].text[0] = 'S'; - m->items[20].text[0] = 'T'; - m->items[21].text[0] = 'V'; - m->items[22].text[0] = 'W'; - m->items[23].text[0] = 'X'; - m->items[24].text[0] = 'Y'; - m->items[25].text[0] = 'Z'; - } - else if (m->items[10].text[0] == 'G') - { - m->items[10].text[0] = '0'; - m->items[11].text[0] = '1'; - m->items[12].text[0] = '2'; - m->items[13].text[0] = '3'; - m->items[14].text[0] = '4'; - m->items[15].text[0] = '5'; - m->items[16].text[0] = '6'; - m->items[17].text[0] = '7'; - m->items[18].text[0] = '8'; - m->items[19].text[0] = '9'; - m->items[20].text[0] = 'A'; - m->items[21].text[0] = 'B'; - m->items[22].text[0] = 'C'; - m->items[23].text[0] = 'D'; - m->items[24].text[0] = 'E'; - m->items[25].text[0] = 'F'; - } - else if (m->items[10].text[0] == 'A') - { - m->items[10].text[0] = 'Q'; - m->items[11].text[0] = 'R'; - m->items[12].text[0] = 'S'; - m->items[13].text[0] = 'T'; - m->items[14].text[0] = 'U'; - m->items[15].text[0] = 'V'; - m->items[16].text[0] = 'W'; - m->items[17].text[0] = 'X'; - m->items[18].text[0] = 'Y'; - m->items[19].text[0] = 'Z'; - m->items[20].text[0] = '0'; - m->items[21].text[0] = '1'; - m->items[22].text[0] = '2'; - m->items[23].text[0] = '3'; - m->items[24].text[0] = '4'; - m->items[25].text[0] = '5'; - } - else if (m->items[10].text[0] == 'Q') - { - m->items[10].text[0] = '6'; - m->items[11].text[0] = '7'; - m->items[12].text[0] = '8'; - m->items[13].text[0] = '9'; - - /* hide unused buttons */ - for (i=14; i<26; i++) - { - m->buttons[i].state &= ~BUTTON_VISIBLE; - } - m->buttons[10].shift[1] = 16; - m->buttons[11].shift[1] = 16; - m->buttons[12].shift[1] = 16; - m->buttons[13].shift[1] = 16; - m->buttons[26].shift[0] = 16; - m->buttons[27].shift[0] = 16; - m->buttons[28].shift[0] = 16; - m->buttons[29].shift[0] = 16; - } - else if (m->items[10].text[0] == '6') - { - m->items[10].text[0] = 'A'; - m->items[11].text[0] = 'B'; - m->items[12].text[0] = 'C'; - m->items[13].text[0] = 'D'; - m->items[14].text[0] = 'E'; - m->items[15].text[0] = 'F'; - m->items[16].text[0] = 'G'; - m->items[17].text[0] = 'H'; - m->items[18].text[0] = 'I'; - m->items[19].text[0] = 'J'; - m->items[20].text[0] = 'K'; - m->items[21].text[0] = 'L'; - m->items[22].text[0] = 'M'; - m->items[23].text[0] = 'N'; - m->items[24].text[0] = 'O'; - m->items[25].text[0] = 'P'; - - /* show previously unused buttons */ - for (i=14; i<26; i++) - { - m->buttons[i].state |= BUTTON_VISIBLE; - } - m->buttons[10].shift[1] = 4; - m->buttons[11].shift[1] = 4; - m->buttons[12].shift[1] = 4; - m->buttons[13].shift[1] = 4; - m->buttons[26].shift[0] = 4; - m->buttons[27].shift[0] = 4; - m->buttons[28].shift[0] = 4; - m->buttons[29].shift[0] = 4; - } -} - -static void cheatmenu_cb(void) -{ - int i; - int yoffset = 108; - gui_image bar_over; - gui_image star; - char temp[MAX_DESC_LENGTH]; - - /* Initialize textures */ - bar_over.texture = gxTextureOpenPNG(Overlay_bar_png,0); - star.texture = gxTextureOpenPNG(Star_full_png,0); - - /* Draw browser array */ - gxDrawRectangle(15, 108, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 134, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 160, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 186, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 212, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 238, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 264, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 290, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 316, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 342, 358, 26, 127, (GXColor)BG_COLOR_2); - - /* Draw Cheat list */ - for (i=0; ((offset + i) < maxcheats) && (i < 10); i++) - { - if (i == selection) - { - /* selection bar */ - gxDrawTexture(bar_over.texture,16,yoffset+1,356,24,255); - - /* cheat description need to be specifically handled */ - if (type) - { - /* check if text is being edited */ - if (menu_cheats.bg_images[6].state & IMAGE_VISIBLE) - { - /* adjust offset so that last characters are visible */ - string_offset += FONT_writeCenter(cheatlist[offset + i].text+string_offset,16,40,366,yoffset+21,(GXColor)WHITE); - } - else - { - /* scroll text (speed = 1/10 frame) */ - if ((string_offset/10) >= strlen(cheatlist[offset + i].text)) - { - string_offset = 0; - } - - if (string_offset) - { - sprintf(temp,"%s ",cheatlist[offset + i].text+string_offset/10); - strncat(temp, cheatlist[offset + i].text, string_offset/10); - } - else - { - strcpy(temp, cheatlist[offset + i].text); - } - - if (FONT_writeCenter(temp,16,40,366,yoffset+21,(GXColor)WHITE)) - { - /* scroll text if string does not fit */ - string_offset ++; - } - } - } - else - { - FONT_writeCenter(cheatlist[offset + i].code,18,40,366,yoffset+22,(GXColor)WHITE); - } - } - else - { - if (type) - { - FONT_writeCenter(cheatlist[offset + i].text,16,40,366,yoffset+21,(GXColor)WHITE); - } - else - { - FONT_writeCenter(cheatlist[offset + i].code,18,40,366,yoffset+22,(GXColor)WHITE); - } - } - - /* draw cheat enable mark */ - if (cheatlist[offset + i].enable) - { - gxDrawTexture(star.texture,20,yoffset+5,16,16,255); - } - - yoffset += 26; - } - - /* New Entry */ - if (i < 10) - { - if (i == selection) - { - /* selection bar */ - gxDrawTexture(bar_over.texture,16,yoffset+1,356,24,255); - - /* check if new code is being edited */ - if (menu_cheats.bg_images[6].state & IMAGE_VISIBLE) - { - FONT_writeCenter(cheatlist[offset + selection].code,18,40,366,yoffset+22,(GXColor)WHITE); - } - else - { - FONT_writeCenter("New Code",18,40,366,yoffset+22,(GXColor)WHITE); - } - } - else - { - FONT_writeCenter("New Code",18,40,366,yoffset+22,(GXColor)WHITE); - } - } - - gxTextureClose(&bar_over.texture); - gxTextureClose(&star.texture); - - /* Extra helpers */ - if (maxcheats && !(menu_cheats.bg_images[6].state & IMAGE_VISIBLE)) - { - /* switch between cheat code & description preview */ - gui_image key_switch; - key_switch.texture = gxTextureOpenPNG(Key_DPAD_png,0); -#ifdef HW_RVL - gxDrawTexture(key_switch.texture,268,424,24,24,255); - FONT_write(type ? "View\nCode":"View\nText",16,300,436,640,(GXColor)WHITE); -#else - gxDrawTexture(key_switch.texture,272,424,24,24,255); - FONT_write(type ? "View\nCode":"View\nText",16,304,436,640,(GXColor)WHITE); -#endif - gxTextureClose(&key_switch.texture); - - /* delete & enable cheats */ - if ((offset + selection) < maxcheats) - { - gui_image key_enable; - gui_image key_delete; - #ifdef HW_RVL - key_enable.texture = gxTextureOpenPNG(Key_Plus_wii_png,0); - key_delete.texture = gxTextureOpenPNG(Key_Minus_wii_png,0); - gxDrawTexture(key_enable.texture,152,424,24,24,255); - gxDrawTexture(key_delete.texture,372,424,24,24,255); - FONT_write(cheatlist[offset + selection].enable ? "Disable\nCheat":"Enable\nCheat",16,184,436,640,(GXColor)WHITE); - FONT_write("Delete\nCheat",16,404,436,640,(GXColor)WHITE); - #else - key_enable.texture = gxTextureOpenPNG(Key_L_gcn_png,0); - key_delete.texture = gxTextureOpenPNG(Key_R_gcn_png,0); - gxDrawTexture(key_enable.texture,136,426,44,20,255); - gxDrawTexture(key_delete.texture,368,426,44,20,255); - FONT_write(cheatlist[offset + selection].enable ? "Disable\nCheat":"Enable\nCheat",16,188,436,640,(GXColor)WHITE); - FONT_write("Delete\nCheat",16,420,436,640,(GXColor)WHITE); - #endif - gxTextureClose(&key_enable.texture); - gxTextureClose(&key_delete.texture); - } - } -} - - -/**************************************************************************** - * CheatMenu - * - * Manage cheats for the currently loaded game - * - ****************************************************************************/ -void CheatMenu(void) -{ - int i, update = 0; - int digit_cnt = 0; - int max = 0; - char temp[256]; - char *str = NULL; - gui_menu *m = &menu_cheats; - - /* clear existing ROM patches */ - clear_cheats(); - - /* reset scrolling */ - string_offset = 0; - - /* background overlay */ - if (config.bg_overlay) - { - bg_cheats[1].state |= IMAGE_VISIBLE; - } - else - { - bg_cheats[1].state &= ~IMAGE_VISIBLE; - } - - /* selected item */ - m->selected = selection; - - /* slide-in menu */ - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - m->cb = cheatmenu_cb; - - /* lock background elements */ - m->bg_images[2].state &= ~IMAGE_SLIDE_TOP; - m->bg_images[3].state &= ~IMAGE_SLIDE_BOTTOM; - m->bg_images[4].state &= ~IMAGE_SLIDE_TOP; - - while (update != -1) - { - /* update arrows buttons */ - if (offset > 0) m->arrows[0]->state |= BUTTON_VISIBLE; - else m->arrows[0]->state &= ~BUTTON_VISIBLE; - if ((offset + 10) < (maxcheats + 1)) m->arrows[1]->state |= BUTTON_VISIBLE; - else m->arrows[1]->state &= ~BUTTON_VISIBLE; - - /* draw menu */ - GUI_DrawMenu(m); - - /* restore cheats offset */ - if (!(menu_cheats.bg_images[6].state & IMAGE_VISIBLE)) - { - m->offset = offset; - m->max_items = maxcheats + 1; - m->max_buttons = 10; - } - - /* update menu */ - update = GUI_UpdateMenu(m); - - /* update selected cheat */ - if ((m->selected < 10) && (selection != m->selected)) - { - selection = m->selected; - string_offset = 0; - } - - /* save offset then restore default */ - if (!(m->bg_images[6].state & IMAGE_VISIBLE)) - { - offset = m->offset; - m->offset = 0; - m->max_items = m->max_buttons = 30; - } - - - /* handle pressed buttons */ - if (update > 0) - { - switch (m->selected) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: /* Edit cheat */ - { - if (type && ((selection + offset) != maxcheats)) - { - /* cheat description */ - str = cheatlist[offset + selection].text; - strcpy(temp, str); - max = MAX_DESC_LENGTH - 2; - digit_cnt = strlen(str); - if (digit_cnt <= max) - { - str[digit_cnt] = '*'; - str[digit_cnt+1] = 0; - } - - /* init specific characters */ - m->items[10].text[0] = '6'; - m->items[27].text[0] = ' '; - strcpy(m->items[27].comment,"Add White Space"); - switch_chars(); - } - else - { - /* cheat code */ - str = cheatlist[offset + selection].code; - strcpy(temp, str); - if ((offset + selection) == maxcheats) - { - /* initialize code */ - max = 0; - digit_cnt = 0; - str[0] = '*'; - str[1] = 0; - } - else - { - /* code type */ - if (str[6] == ':') - { - /* Action Replay code */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* 16-bit code */ - max = 10; - } - else - { - /* 8-bit code */ - max = 8; - } - } - else if (str[4] == '-') - { - /* 16-bit Game Genie code */ - max = 8; - } - else - { - /* 8-bit Game Genie code */ - max = 10; - } - - /* set cursor to end of code */ - digit_cnt = max + 1; - } - - /* init specific characters */ - m->items[10].text[0] = 'G'; - m->items[27].text[0] = ':'; - strcpy(m->items[27].comment,"Add Code Separator"); - switch_chars(); - } - - /* show digit buttons */ - for (i=10; i<30; i++) m->buttons[i].state |= BUTTON_VISIBLE; - - /* show right window */ - m->bg_images[6].state |= IMAGE_VISIBLE; - - /* disable left buttons */ - for (i=0; i<10; i++) m->buttons[i].state &= ~BUTTON_ACTIVE; - - /* disable arrow buttons */ - m->arrows[0]->state &= ~BUTTON_ACTIVE; - m->arrows[1]->state &= ~BUTTON_ACTIVE; - - /* slide in right window */ - GUI_DrawMenuFX(m,20,0); - - /* update helper */ - strcpy(action_cancel.comment,"Cancel"); - - /* select first digit */ - m->selected = 10; - - /* reset scrolling */ - string_offset = 0; - break; - } - - case 26: /* Backspace */ - { - if (digit_cnt > 0) - { - /* delete last character */ - str[digit_cnt--] = 0; - - /* code separator is being deleted */ - if ((str[digit_cnt] == ':') || (str[digit_cnt] == '-')) - { - /* reset detected code type (except 8-bit Game Genie code using 2 separators) */ - if (((system_hw & SYSTEM_PBC) == SYSTEM_MD) || (digit_cnt != 7)) - { - max = 0; - } - } - - /* edit mark */ - str[digit_cnt] = '*'; - - /* update scroll value if necessary */ - if (string_offset > 0) string_offset--; - } - break; - } - - case 27: - { - if (type && ((offset + selection) != maxcheats)) - { - /* SPACE character */ - if (digit_cnt <= max) - { - str[digit_cnt++] = ' '; - str[digit_cnt] = 0; - if (digit_cnt <= max) - { - str[digit_cnt] = '*'; - str[digit_cnt+1] = 0; - } - } - } - else - { - /* Separator character */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* 16-bit codes */ - if (digit_cnt == 4) - { - /* Game Genie code */ - max = 8; - str[4] = '-'; - } - else if ((digit_cnt == 6) && (max != 8)) - { - /* Action Replay code */ - max = 10; - str[6] = ':'; - } - else - { - break; - } - } - else - { - /* 8-bit codes */ - if (digit_cnt == 3) - { - /* Game Genie code */ - max = 10; - str[3] = '-'; - } - else if ((digit_cnt == 7) && (max == 10)) - { - /* Game Genie code (last part) */ - str[7] = '-'; - } - else if ((digit_cnt == 6) && (max != 10)) - { - /* Action Replay code */ - max = 8; - str[6] = ':'; - } - else - { - break; - } - } - - digit_cnt++; - str[digit_cnt] = '*'; - str[digit_cnt+1] = 0; - } - break; - } - - case 28: /* Next character set */ - { - GUI_DrawMenuFX(m,40,1); - switch_chars(); - GUI_DrawMenuFX(m,40,0); - break; - } - - case 29: /* Validate entry */ - { - /* check if entry is valid */ - if (type && ((offset + selection) != maxcheats)) - { - str[digit_cnt] = 0; - update = -1; - } - else if (max && (digit_cnt > max)) - { - if (decode_cheat(cheatlist[offset + selection].code, offset + selection)) - { - /* new cheat ? */ - if ((offset + selection) == maxcheats) - { - /* increase cheat count */ - maxcheats++; - - /* enable cheat by default */ - cheatlist[offset + selection].enable = 1; - - /* no description by default */ - strcpy(cheatlist[offset + selection].text,"No Description"); - } - - /* return to cheat selection */ - update = -1; - } - else - { - GUI_WaitPrompt("Error", "Invalid Cheat Code"); - } - } - break; - } - - default: /* Add Character */ - { - /* force code separator if none has been set yet */ - if ((max == 0) && (digit_cnt == 6)) break; - - /* force 8-bit Game Genie code last separator */ - if (((system_hw & SYSTEM_PBC) != SYSTEM_MD) && (max == 10) && (digit_cnt == 7)) break; - - /* add character */ - if ((digit_cnt <= max) || (max == 0)) - { - str[digit_cnt++] = m->items[m->selected].text[0]; - str[digit_cnt] = 0; - if ((digit_cnt <= max) || (max == 0)) - { - str[digit_cnt] = '*'; - str[digit_cnt+1] = 0; - } - if (string_offset > 0) string_offset ++; - } - break; - } - } - } - else if (update < 0) - { - if (m->bg_images[6].state & IMAGE_VISIBLE) - { - /* Restore old entry */ - strcpy(str, temp); - } - } - else - { - if (maxcheats && !(m->bg_images[6].state & IMAGE_VISIBLE)) - { - if ((m_input.keys & PAD_BUTTON_LEFT) || (m_input.keys & PAD_BUTTON_RIGHT)) - { - /* Switch between cheat code & description */ - type ^= 1; - - /* reset scrolling */ - string_offset = 0; - } - - if ((offset + selection) < maxcheats) - { - /* Special inputs */ - if (m_input.keys & PAD_TRIGGER_R) - { - /* sort cheat list */ - for (i = offset + selection + 1; i < maxcheats; i++) - { - strcpy(cheatlist[i-1].text,cheatlist[i].text); - strcpy(cheatlist[i-1].code,cheatlist[i].code); - cheatlist[i-1].address = cheatlist[i].address; - cheatlist[i-1].data = cheatlist[i].data; - cheatlist[i-1].enable = cheatlist[i].enable; - } - - /* clear last cheat */ - cheatlist[maxcheats-1].text[0] = 0; - cheatlist[maxcheats-1].code[0] = 0; - cheatlist[maxcheats-1].address = 0; - cheatlist[maxcheats-1].data = 0; - cheatlist[maxcheats-1].enable = 0; - - /* disable last button */ - if ((maxcheats - offset) < 10) - { - m->buttons[maxcheats - offset].state &= ~BUTTON_ACTIVE; - m->buttons[maxcheats - offset - 1].shift[1] = 0; - } - - /* decrease cheat count */ - maxcheats--; - - /* reset scrolling */ - string_offset = 0; - } - else if (m_input.keys & PAD_TRIGGER_L) - { - /* cheat ON/OFF */ - cheatlist[offset + selection].enable ^= 1; - } - } - } - } - - if (update < 0) - { - if (m->bg_images[6].state & IMAGE_VISIBLE) - { - /* slide out right window */ - GUI_DrawMenuFX(m,20,1); - - /* hide digit buttons */ - for (i=10; i<30; i++) m->buttons[i].state &= ~BUTTON_VISIBLE; - - /* hide right window */ - m->bg_images[6].state &= ~IMAGE_VISIBLE; - - /* update left buttons */ - for (i=0; i<10; i++) - { - if ((offset + i) < maxcheats) - { - m->buttons[i].state |= BUTTON_ACTIVE; - m->buttons[i].shift[1] = 1; - } - else if ((offset + i) == maxcheats) - { - m->buttons[i].state |= BUTTON_ACTIVE; - m->buttons[i].shift[1] = 0; - } - else - { - m->buttons[i].state &= ~BUTTON_ACTIVE; - m->buttons[i].shift[1] = 0; - } - } - - /* enable arrow buttons */ - m->arrows[0]->state |= BUTTON_ACTIVE; - m->arrows[1]->state |= BUTTON_ACTIVE; - - /* restore helper */ - strcpy(action_cancel.comment,"Back"); - - /* select current cheat */ - m->selected = selection; - - /* stay in menu */ - update = 0; - } - } - } - - /* apply ROM patches */ - apply_cheats(); - - /* save cheats to file */ - sprintf(temp, "%s/cheats/%s.pat", DEFAULT_PATH, rom_filename); - - if (maxcheats) - { - /* open file */ - FILE *f = fopen(temp, "w"); - - /* write cheats */ - if (f) - { - for (i=0; ibg_images[2].state |= IMAGE_SLIDE_TOP; - m->bg_images[3].state |= IMAGE_SLIDE_BOTTOM; - m->bg_images[4].state |= IMAGE_SLIDE_TOP; - - /* leave menu */ - m->cb = NULL; - GUI_DeleteMenu(m); - GUI_DrawMenuFX(m,30,1); -} - - -/**************************************************************************** - * CheatLoad - * - * Load cheats from associated .pat file, called when loading a new game - * ROM patches are automatically applied. - * RAM patches are applied once per frame. - * - ****************************************************************************/ -void CheatLoad(void) -{ - int len; - int cnt = 0; - char temp[256]; - - /* reset cheat count */ - maxcheats = 0; - - /* make cheat filename */ - sprintf(temp, "%s/cheats/%s.pat", DEFAULT_PATH, rom_filename); - - /* open file */ - FILE *f = fopen(temp, "r"); - if (f) - { - /* clear string */ - memset(temp, 0, 256); - - /* read cheats from file (one line per cheat) */ - while (fgets(temp, 256, f) && (maxcheats < MAX_CHEATS) && (cnt < MAX_CHEATS)) - { - /* remove CR & EOL chars */ - if ((temp[strlen(temp) - 2] == 0x0d) || (temp[strlen(temp) - 2] == 0x0a)) temp[strlen(temp) - 2] = 0; - else temp[strlen(temp) - 1] = 0; - - /* check cheat validty */ - len = decode_cheat(temp, maxcheats); - - if (len) - { - /* copy cheat code */ - strncpy(cheatlist[maxcheats].code, temp, len); - cheatlist[maxcheats].code[len] = 0; - len++; - - /* jump TAB and SPACE characters */ - while ((temp[len] == 0x20) || (temp[len] == 0x09)) len++; - - /* copy cheat description */ - strncpy(cheatlist[maxcheats].text, &temp[len], MAX_DESC_LENGTH - 1); - cheatlist[maxcheats].text[MAX_DESC_LENGTH - 1] = 0; - - /* increment cheat count */ - maxcheats++; - } - else if (!strcmp(temp,"ON") && config.autocheat) - { - /* enable flag */ - cheatlist[cnt++].enable = 1; - } - else if (!strcmp(temp,"OFF") && config.autocheat) - { - /* disable flag */ - cheatlist[cnt++].enable = 0; - } - } - - /* by default, disable cheats that were not flagged */ - while (cnt < maxcheats) cheatlist[cnt++].enable = 0; - - /* close file */ - fclose(f); - } - - /* apply ROM patches */ - apply_cheats(); - - /* adjust menu buttons */ - for (cnt=0; cnt<10; cnt++) - { - if (cnt < maxcheats) - { - menu_cheats.buttons[cnt].state |= BUTTON_ACTIVE; - menu_cheats.buttons[cnt].shift[1] = 1; - } - else if (cnt == maxcheats) - { - menu_cheats.buttons[cnt].state |= BUTTON_ACTIVE; - menu_cheats.buttons[cnt].shift[1] = 0; - } - else - { - menu_cheats.buttons[cnt].shift[1] = 0; - menu_cheats.buttons[cnt].state &= ~BUTTON_ACTIVE; - } - } - - /* reset menu */ - selection = offset = 0; -} - -/**************************************************************************** - * RAMCheatUpdate - * - * Apply RAM patches (this should be called once per frame) - * - ****************************************************************************/ -void RAMCheatUpdate(void) -{ - int index, cnt = maxRAMcheats; - - while (cnt) - { - /* get cheat index */ - index = cheatIndexes[--cnt]; - - /* apply RAM patch */ - if (cheatlist[index].data & 0xFF00) - { - /* word patch */ - *(u16 *)(work_ram + (cheatlist[index].address & 0xFFFE)) = cheatlist[index].data; - } - else - { - /* byte patch */ - work_ram[cheatlist[index].address & 0xFFFF] = cheatlist[index].data; - } - } -} - - -/**************************************************************************** - * ROMCheatUpdate - * - * Apply ROM patches (this should be called each time banking is changed) - * - ****************************************************************************/ -void ROMCheatUpdate(void) -{ - int index, cnt = maxROMcheats; - u8 *ptr; - - while (cnt) - { - /* get cheat index */ - index = cheatIndexes[MAX_CHEATS - cnt]; - - /* check if previous banked ROM address was patched */ - if (cheatlist[index].prev != NULL) - { - /* restore original data */ - *cheatlist[index].prev = cheatlist[index].old; - - /* no more patched ROM address */ - cheatlist[index].prev = NULL; - } - - /* get current banked ROM address */ - ptr = &z80_readmap[(cheatlist[index].address) >> 10][cheatlist[index].address & 0x03FF]; - - /* check if reference matches original ROM data */ - if (((u8)cheatlist[index].old) == *ptr) - { - /* patch data */ - *ptr = cheatlist[index].data; - - /* save patched ROM address */ - cheatlist[index].prev = ptr; - } - - /* next ROM patch */ - cnt--; - } -} +/* + * cheats.c + * + * Cheats menu + * + * Copyright Eke-Eke (2010-2012) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "file_load.h" +#include "cheats.h" +#include "font.h" +#include "gui.h" + +#define BG_COLOR_1 {0x49,0x49,0x49,0xff} +#define BG_COLOR_2 {0x66,0x66,0x66,0xff} + +#define MAX_CHEATS (150) +#define MAX_DESC_LENGTH (63) + +#ifdef HW_RVL +extern const u8 Key_Minus_wii_png[]; +extern const u8 Key_Plus_wii_png[]; +#else +extern const u8 Key_R_gcn_png[]; +extern const u8 Key_L_gcn_png[]; +#endif +extern const u8 Key_DPAD_png[]; + +typedef struct +{ + char code[12]; + char text[MAX_DESC_LENGTH]; + u8 enable; + u16 data; + u16 old; + u32 address; + u8 *prev; +} CHEATENTRY; + +static int string_offset = 0; +static int selection = 0; +static int offset = 0; +static int type = 0; +static int maxcheats = 0; +static int maxROMcheats = 0; +static int maxRAMcheats = 0; + +static CHEATENTRY cheatlist[MAX_CHEATS]; +static u8 cheatIndexes[MAX_CHEATS]; + +static void cheatmenu_cb(void); + +/*****************************************************************************/ +/* GUI Buttons data */ +/*****************************************************************************/ +static butn_data arrow_up_data = +{ + {NULL,NULL}, + {Button_up_png,Button_up_over_png} +}; + +static butn_data arrow_down_data = +{ + {NULL,NULL}, + {Button_down_png,Button_down_over_png} +}; +static butn_data button_digit_data = +{ + {NULL,NULL}, + {Button_digit_png,Button_digit_over_png} +}; + +/*****************************************************************************/ +/* GUI Arrows button */ +/*****************************************************************************/ + +static gui_butn arrow_up = {&arrow_up_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,76,360,32}; +static gui_butn arrow_down = {&arrow_down_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,368,360,32}; + + +/*****************************************************************************/ +/* GUI helpers */ +/*****************************************************************************/ +static gui_item action_cancel = +{ + NULL,Key_B_png,"","Exit",10,422,28,28 +}; + +static gui_item action_select = +{ + NULL,Key_A_png,"","Edit Entry",602,422,28,28 +}; + +/*****************************************************************************/ +/* GUI Background images */ +/*****************************************************************************/ +static gui_image bg_cheats[7] = +{ + {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Banner_top_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,0,0,640,108,255}, + {NULL,Banner_bottom_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,380,640,100,255}, + {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,466,40,152,44,255}, + {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,152}, + {NULL,Frame_s1_png,IMAGE_SLIDE_RIGHT,411,109,372,296,76}, +}; + +/*****************************************************************************/ +/* Menu Items description */ +/*****************************************************************************/ +static gui_item items_cheats[30] = +{ + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"","Edit Entry",0,0,0,0}, + {NULL,NULL,"0","Add Character" ,440,136,40,40}, + {NULL,NULL,"1","Add Character" ,486,136,40,40}, + {NULL,NULL,"2","Add Character" ,532,136,40,40}, + {NULL,NULL,"3","Add Character" ,578,136,40,40}, + {NULL,NULL,"4","Add Character" ,440,182,40,40}, + {NULL,NULL,"5","Add Character" ,486,182,40,40}, + {NULL,NULL,"6","Add Character" ,532,182,40,40}, + {NULL,NULL,"7","Add Character" ,578,182,40,40}, + {NULL,NULL,"8","Add Character" ,440,228,40,40}, + {NULL,NULL,"9","Add Character" ,486,228,40,40}, + {NULL,NULL,"A","Add Character" ,532,228,40,40}, + {NULL,NULL,"B","Add Character" ,578,228,40,40}, + {NULL,NULL,"C","Add Character" ,440,274,40,40}, + {NULL,NULL,"D","Add Character" ,486,274,40,40}, + {NULL,NULL,"E","Add Character" ,532,274,40,40}, + {NULL,NULL,"F","Add Character" ,578,274,40,40}, + {NULL,NULL,"del","Backspace" ,440,338,40,40}, + {NULL,NULL,":","Add Separator" ,486,338,40,40}, + {NULL,NULL,"+","Next Characters",532,338,40,40}, + {NULL,NULL,"ok","Save Entry" ,578,338,40,40} +}; + +/*****************************************************************************/ +/* Menu Buttons description */ +/*****************************************************************************/ +static gui_butn buttons_cheats[30] = +{ + {NULL, BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,108,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,134,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,160,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,186,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,212,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,238,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,264,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,290,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,316,358,26}, + {NULL, BUTTON_VISIBLE|BUTTON_SELECT_SFX|BUTTON_OVER_SFX,{1,0,0,0},15,342,358,26}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,0,1},440,136,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,1,1},486,136,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,1,1},532,136,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,4,1,0},578,136,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,0,1},440,182,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},486,182,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},532,182,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,0},578,182,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,0,1},440,228,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},486,228,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},532,228,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,0},578,228,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,0,1},440,274,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},486,274,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,1},532,274,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,4,1,0},578,274,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,0,1},440,338,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,1,1},486,338,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,1,1},532,338,40,40}, + {&button_digit_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{4,0,1,0},578,338,40,40} +}; + +/*****************************************************************************/ +/* Menu description */ +/*****************************************************************************/ +static gui_menu menu_cheats = +{ + "Cheats Manager", + 0,0, + 30,30,7,0, + items_cheats, + buttons_cheats, + bg_cheats, + {&action_cancel, &action_select}, + {&arrow_up,&arrow_down}, + cheatmenu_cb +}; + +static char ggvalidchars[] = "ABCDEFGHJKLMNPRSTVWXYZ0123456789"; + +static char arvalidchars[] = "0123456789ABCDEF"; + +static u32 decode_cheat(char *string, int index) +{ + char *p; + int i,n; + u32 len = 0; + u32 address = 0; + u16 data = 0; + u8 ref = 0; + + /* 16-bit Game Genie code (ABCD-EFGH) */ + if ((strlen(string) >= 9) && (string[4] == '-')) + { + /* 16-bit system only */ + if ((system_hw & SYSTEM_PBC) != SYSTEM_MD) + { + return 0; + } + + for (i = 0; i < 8; i++) + { + if (i == 4) string++; + p = strchr (ggvalidchars, *string++); + if (p == NULL) return 0; + n = p - ggvalidchars; + + switch (i) + { + case 0: + data |= n << 3; + break; + + case 1: + data |= n >> 2; + address |= (n & 3) << 14; + break; + + case 2: + address |= n << 9; + break; + + case 3: + address |= (n & 0xF) << 20 | (n >> 4) << 8; + break; + + case 4: + data |= (n & 1) << 12; + address |= (n >> 1) << 16; + break; + + case 5: + data |= (n & 1) << 15 | (n >> 1) << 8; + break; + + case 6: + data |= (n >> 3) << 13; + address |= (n & 7) << 5; + break; + + case 7: + address |= n; + break; + } + } + + /* code length */ + len = 9; + } + + /* 8-bit Game Genie code (DDA-AAA-XXX) */ + else if ((strlen(string) >= 11) && (string[3] == '-') && (string[7] == '-')) + { + /* 8-bit system only */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + return 0; + } + + /* decode 8-bit data */ + for (i=0; i<2; i++) + { + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + data |= (n << ((1 - i) * 4)); + } + + /* decode 16-bit address (low 12-bits) */ + for (i=0; i<3; i++) + { + if (i==1) string++; /* skip separator */ + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + address |= (n << ((2 - i) * 4)); + } + + /* decode 16-bit address (high 4-bits) */ + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + n ^= 0xF; /* bits inversion */ + address |= (n << 12); + + /* RAM address are also supported */ + if (address >= 0xC000) + { + /* convert to 24-bit Work RAM address */ + address = 0xFF0000 | (address & 0x1FFF); + } + + /* decode reference 8-bit data */ + for (i=0; i<2; i++) + { + string++; /* skip separator and 2nd digit */ + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + ref |= (n << ((1 - i) * 4)); + } + ref = (ref >> 2) | ((ref & 0x03) << 6); /* 2-bit right rotation */ + ref ^= 0xBA; /* XOR */ + + /* update old data value */ + cheatlist[index].old = ref; + + /* code length */ + len = 11; + } + + /* Action Replay code */ + else if (string[6] == ':') + { + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* 16-bit code (AAAAAA:DDDD) */ + if (strlen(string) < 11) return 0; + + /* decode 24-bit address */ + for (i=0; i<6; i++) + { + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + address |= (n << ((5 - i) * 4)); + } + + /* decode 16-bit data */ + string++; + for (i=0; i<4; i++) + { + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + data |= (n << ((3 - i) * 4)); + } + + /* code length */ + len = 11; + } + else + { + /* 8-bit code (xxAAAA:DD) */ + if (strlen(string) < 9) return 0; + + /* decode 16-bit address */ + string+=2; + for (i=0; i<4; i++) + { + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + address |= (n << ((3 - i) * 4)); + } + + /* ROM addresses are not supported */ + if (address < 0xC000) return 0; + + /* convert to 24-bit Work RAM address */ + address = 0xFF0000 | (address & 0x1FFF); + + /* decode 8-bit data */ + string++; + for (i=0; i<2; i++) + { + p = strchr (arvalidchars, *string++); + if (p == NULL) return 0; + n = (p - arvalidchars) & 0xF; + data |= (n << ((1 - i) * 4)); + } + + /* code length */ + len = 9; + } + } + + /* Valid code found ? */ + if (len) + { + /* update cheat address & data values */ + cheatlist[index].address = address; + cheatlist[index].data = data; + } + + /* return code length (0 = invalid) */ + return len; +} + +static void apply_cheats(void) +{ + u8 *ptr; + + /* clear ROM&RAM patches counter */ + maxROMcheats = maxRAMcheats = 0; + + int i; + for (i = 0; i < maxcheats; i++) + { + if (cheatlist[i].enable) + { + if (cheatlist[i].address < cart.romsize) + { + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* patch ROM data */ + cheatlist[i].old = *(u16 *)(cart.rom + (cheatlist[i].address & 0xFFFFFE)); + *(u16 *)(cart.rom + (cheatlist[i].address & 0xFFFFFE)) = cheatlist[i].data; + } + else + { + /* add ROM patch */ + maxROMcheats++; + cheatIndexes[MAX_CHEATS - maxROMcheats] = i; + + /* get current banked ROM address */ + ptr = &z80_readmap[(cheatlist[i].address) >> 10][cheatlist[i].address & 0x03FF]; + + /* check if reference matches original ROM data */ + if (((u8)cheatlist[i].old) == *ptr) + { + /* patch data */ + *ptr = cheatlist[i].data; + + /* save patched ROM address */ + cheatlist[i].prev = ptr; + } + else + { + /* no patched ROM address yet */ + cheatlist[i].prev = NULL; + } + } + } + else if (cheatlist[i].address >= 0xFF0000) + { + /* add RAM patch */ + cheatIndexes[maxRAMcheats++] = i; + } + } + } +} + +static void clear_cheats(void) +{ + int i = maxcheats; + + /* disable cheats in reversed order in case the same address is used by multiple patches */ + while (i > 0) + { + if (cheatlist[i-1].enable) + { + if (cheatlist[i-1].address < cart.romsize) + { + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* restore original ROM data */ + *(u16 *)(cart.rom + (cheatlist[i-1].address & 0xFFFFFE)) = cheatlist[i-1].old; + } + else + { + /* check if previous banked ROM address has been patched */ + if (cheatlist[i-1].prev != NULL) + { + /* restore original data */ + *cheatlist[i-1].prev = cheatlist[i-1].old; + + /* no more patched ROM address */ + cheatlist[i-1].prev = NULL; + } + } + } + } + + i--; + } +} + +static void switch_chars(void) +{ + int i; + gui_menu *m = &menu_cheats; + + if (m->items[10].text[0] == '0') + { + m->items[10].text[0] = 'G'; + m->items[11].text[0] = 'H'; + m->items[12].text[0] = 'J'; + m->items[13].text[0] = 'K'; + m->items[14].text[0] = 'L'; + m->items[15].text[0] = 'M'; + m->items[16].text[0] = 'N'; + m->items[17].text[0] = 'P'; + m->items[18].text[0] = 'R'; + m->items[19].text[0] = 'S'; + m->items[20].text[0] = 'T'; + m->items[21].text[0] = 'V'; + m->items[22].text[0] = 'W'; + m->items[23].text[0] = 'X'; + m->items[24].text[0] = 'Y'; + m->items[25].text[0] = 'Z'; + } + else if (m->items[10].text[0] == 'G') + { + m->items[10].text[0] = '0'; + m->items[11].text[0] = '1'; + m->items[12].text[0] = '2'; + m->items[13].text[0] = '3'; + m->items[14].text[0] = '4'; + m->items[15].text[0] = '5'; + m->items[16].text[0] = '6'; + m->items[17].text[0] = '7'; + m->items[18].text[0] = '8'; + m->items[19].text[0] = '9'; + m->items[20].text[0] = 'A'; + m->items[21].text[0] = 'B'; + m->items[22].text[0] = 'C'; + m->items[23].text[0] = 'D'; + m->items[24].text[0] = 'E'; + m->items[25].text[0] = 'F'; + } + else if (m->items[10].text[0] == 'A') + { + m->items[10].text[0] = 'Q'; + m->items[11].text[0] = 'R'; + m->items[12].text[0] = 'S'; + m->items[13].text[0] = 'T'; + m->items[14].text[0] = 'U'; + m->items[15].text[0] = 'V'; + m->items[16].text[0] = 'W'; + m->items[17].text[0] = 'X'; + m->items[18].text[0] = 'Y'; + m->items[19].text[0] = 'Z'; + m->items[20].text[0] = '0'; + m->items[21].text[0] = '1'; + m->items[22].text[0] = '2'; + m->items[23].text[0] = '3'; + m->items[24].text[0] = '4'; + m->items[25].text[0] = '5'; + } + else if (m->items[10].text[0] == 'Q') + { + m->items[10].text[0] = '6'; + m->items[11].text[0] = '7'; + m->items[12].text[0] = '8'; + m->items[13].text[0] = '9'; + + /* hide unused buttons */ + for (i=14; i<26; i++) + { + m->buttons[i].state &= ~BUTTON_VISIBLE; + } + m->buttons[10].shift[1] = 16; + m->buttons[11].shift[1] = 16; + m->buttons[12].shift[1] = 16; + m->buttons[13].shift[1] = 16; + m->buttons[26].shift[0] = 16; + m->buttons[27].shift[0] = 16; + m->buttons[28].shift[0] = 16; + m->buttons[29].shift[0] = 16; + } + else if (m->items[10].text[0] == '6') + { + m->items[10].text[0] = 'A'; + m->items[11].text[0] = 'B'; + m->items[12].text[0] = 'C'; + m->items[13].text[0] = 'D'; + m->items[14].text[0] = 'E'; + m->items[15].text[0] = 'F'; + m->items[16].text[0] = 'G'; + m->items[17].text[0] = 'H'; + m->items[18].text[0] = 'I'; + m->items[19].text[0] = 'J'; + m->items[20].text[0] = 'K'; + m->items[21].text[0] = 'L'; + m->items[22].text[0] = 'M'; + m->items[23].text[0] = 'N'; + m->items[24].text[0] = 'O'; + m->items[25].text[0] = 'P'; + + /* show previously unused buttons */ + for (i=14; i<26; i++) + { + m->buttons[i].state |= BUTTON_VISIBLE; + } + m->buttons[10].shift[1] = 4; + m->buttons[11].shift[1] = 4; + m->buttons[12].shift[1] = 4; + m->buttons[13].shift[1] = 4; + m->buttons[26].shift[0] = 4; + m->buttons[27].shift[0] = 4; + m->buttons[28].shift[0] = 4; + m->buttons[29].shift[0] = 4; + } +} + +static void cheatmenu_cb(void) +{ + int i; + int yoffset = 108; + gui_image bar_over; + gui_image star; + char temp[MAX_DESC_LENGTH]; + + /* Initialize textures */ + bar_over.texture = gxTextureOpenPNG(Overlay_bar_png,0); + star.texture = gxTextureOpenPNG(Star_full_png,0); + + /* Draw browser array */ + gxDrawRectangle(15, 108, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 134, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 160, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 186, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 212, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 238, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 264, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 290, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 316, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 342, 358, 26, 127, (GXColor)BG_COLOR_2); + + /* Draw Cheat list */ + for (i=0; ((offset + i) < maxcheats) && (i < 10); i++) + { + if (i == selection) + { + /* selection bar */ + gxDrawTexture(bar_over.texture,16,yoffset+1,356,24,255); + + /* cheat description need to be specifically handled */ + if (type) + { + /* check if text is being edited */ + if (menu_cheats.bg_images[6].state & IMAGE_VISIBLE) + { + /* adjust offset so that last characters are visible */ + string_offset += FONT_writeCenter(cheatlist[offset + i].text+string_offset,16,40,366,yoffset+21,(GXColor)WHITE); + } + else + { + /* scroll text (speed = 1/10 frame) */ + if ((string_offset/10) >= strlen(cheatlist[offset + i].text)) + { + string_offset = 0; + } + + if (string_offset) + { + sprintf(temp,"%s ",cheatlist[offset + i].text+string_offset/10); + strncat(temp, cheatlist[offset + i].text, string_offset/10); + } + else + { + strcpy(temp, cheatlist[offset + i].text); + } + + if (FONT_writeCenter(temp,16,40,366,yoffset+21,(GXColor)WHITE)) + { + /* scroll text if string does not fit */ + string_offset ++; + } + } + } + else + { + FONT_writeCenter(cheatlist[offset + i].code,18,40,366,yoffset+22,(GXColor)WHITE); + } + } + else + { + if (type) + { + FONT_writeCenter(cheatlist[offset + i].text,16,40,366,yoffset+21,(GXColor)WHITE); + } + else + { + FONT_writeCenter(cheatlist[offset + i].code,18,40,366,yoffset+22,(GXColor)WHITE); + } + } + + /* draw cheat enable mark */ + if (cheatlist[offset + i].enable) + { + gxDrawTexture(star.texture,20,yoffset+5,16,16,255); + } + + yoffset += 26; + } + + /* New Entry */ + if (i < 10) + { + if (i == selection) + { + /* selection bar */ + gxDrawTexture(bar_over.texture,16,yoffset+1,356,24,255); + + /* check if new code is being edited */ + if (menu_cheats.bg_images[6].state & IMAGE_VISIBLE) + { + FONT_writeCenter(cheatlist[offset + selection].code,18,40,366,yoffset+22,(GXColor)WHITE); + } + else + { + FONT_writeCenter("New Code",18,40,366,yoffset+22,(GXColor)WHITE); + } + } + else + { + FONT_writeCenter("New Code",18,40,366,yoffset+22,(GXColor)WHITE); + } + } + + gxTextureClose(&bar_over.texture); + gxTextureClose(&star.texture); + + /* Extra helpers */ + if (maxcheats && !(menu_cheats.bg_images[6].state & IMAGE_VISIBLE)) + { + /* switch between cheat code & description preview */ + gui_image key_switch; + key_switch.texture = gxTextureOpenPNG(Key_DPAD_png,0); +#ifdef HW_RVL + gxDrawTexture(key_switch.texture,268,424,24,24,255); + FONT_write(type ? "View\nCode":"View\nText",16,300,436,640,(GXColor)WHITE); +#else + gxDrawTexture(key_switch.texture,272,424,24,24,255); + FONT_write(type ? "View\nCode":"View\nText",16,304,436,640,(GXColor)WHITE); +#endif + gxTextureClose(&key_switch.texture); + + /* delete & enable cheats */ + if ((offset + selection) < maxcheats) + { + gui_image key_enable; + gui_image key_delete; + #ifdef HW_RVL + key_enable.texture = gxTextureOpenPNG(Key_Plus_wii_png,0); + key_delete.texture = gxTextureOpenPNG(Key_Minus_wii_png,0); + gxDrawTexture(key_enable.texture,152,424,24,24,255); + gxDrawTexture(key_delete.texture,372,424,24,24,255); + FONT_write(cheatlist[offset + selection].enable ? "Disable\nCheat":"Enable\nCheat",16,184,436,640,(GXColor)WHITE); + FONT_write("Delete\nCheat",16,404,436,640,(GXColor)WHITE); + #else + key_enable.texture = gxTextureOpenPNG(Key_L_gcn_png,0); + key_delete.texture = gxTextureOpenPNG(Key_R_gcn_png,0); + gxDrawTexture(key_enable.texture,136,426,44,20,255); + gxDrawTexture(key_delete.texture,368,426,44,20,255); + FONT_write(cheatlist[offset + selection].enable ? "Disable\nCheat":"Enable\nCheat",16,188,436,640,(GXColor)WHITE); + FONT_write("Delete\nCheat",16,420,436,640,(GXColor)WHITE); + #endif + gxTextureClose(&key_enable.texture); + gxTextureClose(&key_delete.texture); + } + } +} + + +/**************************************************************************** + * CheatMenu + * + * Manage cheats for the currently loaded game + * + ****************************************************************************/ +void CheatMenu(void) +{ + int i, update = 0; + int digit_cnt = 0; + int max = 0; + char temp[256]; + char *str = NULL; + gui_menu *m = &menu_cheats; + + /* clear existing ROM patches */ + clear_cheats(); + + /* reset scrolling */ + string_offset = 0; + + /* background overlay */ + if (config.bg_overlay) + { + bg_cheats[1].state |= IMAGE_VISIBLE; + } + else + { + bg_cheats[1].state &= ~IMAGE_VISIBLE; + } + + /* selected item */ + m->selected = selection; + + /* slide-in menu */ + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + m->cb = cheatmenu_cb; + + /* lock background elements */ + m->bg_images[2].state &= ~IMAGE_SLIDE_TOP; + m->bg_images[3].state &= ~IMAGE_SLIDE_BOTTOM; + m->bg_images[4].state &= ~IMAGE_SLIDE_TOP; + + while (update != -1) + { + /* update arrows buttons */ + if (offset > 0) m->arrows[0]->state |= BUTTON_VISIBLE; + else m->arrows[0]->state &= ~BUTTON_VISIBLE; + if ((offset + 10) < (maxcheats + 1)) m->arrows[1]->state |= BUTTON_VISIBLE; + else m->arrows[1]->state &= ~BUTTON_VISIBLE; + + /* draw menu */ + GUI_DrawMenu(m); + + /* restore cheats offset */ + if (!(menu_cheats.bg_images[6].state & IMAGE_VISIBLE)) + { + m->offset = offset; + m->max_items = maxcheats + 1; + m->max_buttons = 10; + } + + /* update menu */ + update = GUI_UpdateMenu(m); + + /* update selected cheat */ + if ((m->selected < 10) && (selection != m->selected)) + { + selection = m->selected; + string_offset = 0; + } + + /* save offset then restore default */ + if (!(m->bg_images[6].state & IMAGE_VISIBLE)) + { + offset = m->offset; + m->offset = 0; + m->max_items = m->max_buttons = 30; + } + + + /* handle pressed buttons */ + if (update > 0) + { + switch (m->selected) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: /* Edit cheat */ + { + if (type && ((selection + offset) != maxcheats)) + { + /* cheat description */ + str = cheatlist[offset + selection].text; + strcpy(temp, str); + max = MAX_DESC_LENGTH - 2; + digit_cnt = strlen(str); + if (digit_cnt <= max) + { + str[digit_cnt] = '*'; + str[digit_cnt+1] = 0; + } + + /* init specific characters */ + m->items[10].text[0] = '6'; + m->items[27].text[0] = ' '; + strcpy(m->items[27].comment,"Add White Space"); + switch_chars(); + } + else + { + /* cheat code */ + str = cheatlist[offset + selection].code; + strcpy(temp, str); + if ((offset + selection) == maxcheats) + { + /* initialize code */ + max = 0; + digit_cnt = 0; + str[0] = '*'; + str[1] = 0; + } + else + { + /* code type */ + if (str[6] == ':') + { + /* Action Replay code */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* 16-bit code */ + max = 10; + } + else + { + /* 8-bit code */ + max = 8; + } + } + else if (str[4] == '-') + { + /* 16-bit Game Genie code */ + max = 8; + } + else + { + /* 8-bit Game Genie code */ + max = 10; + } + + /* set cursor to end of code */ + digit_cnt = max + 1; + } + + /* init specific characters */ + m->items[10].text[0] = 'G'; + m->items[27].text[0] = ':'; + strcpy(m->items[27].comment,"Add Code Separator"); + switch_chars(); + } + + /* show digit buttons */ + for (i=10; i<30; i++) m->buttons[i].state |= BUTTON_VISIBLE; + + /* show right window */ + m->bg_images[6].state |= IMAGE_VISIBLE; + + /* disable left buttons */ + for (i=0; i<10; i++) m->buttons[i].state &= ~BUTTON_ACTIVE; + + /* disable arrow buttons */ + m->arrows[0]->state &= ~BUTTON_ACTIVE; + m->arrows[1]->state &= ~BUTTON_ACTIVE; + + /* slide in right window */ + GUI_DrawMenuFX(m,20,0); + + /* update helper */ + strcpy(action_cancel.comment,"Cancel"); + + /* select first digit */ + m->selected = 10; + + /* reset scrolling */ + string_offset = 0; + break; + } + + case 26: /* Backspace */ + { + if (digit_cnt > 0) + { + /* delete last character */ + str[digit_cnt--] = 0; + + /* code separator is being deleted */ + if ((str[digit_cnt] == ':') || (str[digit_cnt] == '-')) + { + /* reset detected code type (except 8-bit Game Genie code using 2 separators) */ + if (((system_hw & SYSTEM_PBC) == SYSTEM_MD) || (digit_cnt != 7)) + { + max = 0; + } + } + + /* edit mark */ + str[digit_cnt] = '*'; + + /* update scroll value if necessary */ + if (string_offset > 0) string_offset--; + } + break; + } + + case 27: + { + if (type && ((offset + selection) != maxcheats)) + { + /* SPACE character */ + if (digit_cnt <= max) + { + str[digit_cnt++] = ' '; + str[digit_cnt] = 0; + if (digit_cnt <= max) + { + str[digit_cnt] = '*'; + str[digit_cnt+1] = 0; + } + } + } + else + { + /* Separator character */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* 16-bit codes */ + if (digit_cnt == 4) + { + /* Game Genie code */ + max = 8; + str[4] = '-'; + } + else if ((digit_cnt == 6) && (max != 8)) + { + /* Action Replay code */ + max = 10; + str[6] = ':'; + } + else + { + break; + } + } + else + { + /* 8-bit codes */ + if (digit_cnt == 3) + { + /* Game Genie code */ + max = 10; + str[3] = '-'; + } + else if ((digit_cnt == 7) && (max == 10)) + { + /* Game Genie code (last part) */ + str[7] = '-'; + } + else if ((digit_cnt == 6) && (max != 10)) + { + /* Action Replay code */ + max = 8; + str[6] = ':'; + } + else + { + break; + } + } + + digit_cnt++; + str[digit_cnt] = '*'; + str[digit_cnt+1] = 0; + } + break; + } + + case 28: /* Next character set */ + { + GUI_DrawMenuFX(m,40,1); + switch_chars(); + GUI_DrawMenuFX(m,40,0); + break; + } + + case 29: /* Validate entry */ + { + /* check if entry is valid */ + if (type && ((offset + selection) != maxcheats)) + { + str[digit_cnt] = 0; + update = -1; + } + else if (max && (digit_cnt > max)) + { + if (decode_cheat(cheatlist[offset + selection].code, offset + selection)) + { + /* new cheat ? */ + if ((offset + selection) == maxcheats) + { + /* increase cheat count */ + maxcheats++; + + /* enable cheat by default */ + cheatlist[offset + selection].enable = 1; + + /* no description by default */ + strcpy(cheatlist[offset + selection].text,"No Description"); + } + + /* return to cheat selection */ + update = -1; + } + else + { + GUI_WaitPrompt("Error", "Invalid Cheat Code"); + } + } + break; + } + + default: /* Add Character */ + { + /* force code separator if none has been set yet */ + if ((max == 0) && (digit_cnt == 6)) break; + + /* force 8-bit Game Genie code last separator */ + if (((system_hw & SYSTEM_PBC) != SYSTEM_MD) && (max == 10) && (digit_cnt == 7)) break; + + /* add character */ + if ((digit_cnt <= max) || (max == 0)) + { + str[digit_cnt++] = m->items[m->selected].text[0]; + str[digit_cnt] = 0; + if ((digit_cnt <= max) || (max == 0)) + { + str[digit_cnt] = '*'; + str[digit_cnt+1] = 0; + } + if (string_offset > 0) string_offset ++; + } + break; + } + } + } + else if (update < 0) + { + if (m->bg_images[6].state & IMAGE_VISIBLE) + { + /* Restore old entry */ + strcpy(str, temp); + } + } + else + { + if (maxcheats && !(m->bg_images[6].state & IMAGE_VISIBLE)) + { + if ((m_input.keys & PAD_BUTTON_LEFT) || (m_input.keys & PAD_BUTTON_RIGHT)) + { + /* Switch between cheat code & description */ + type ^= 1; + + /* reset scrolling */ + string_offset = 0; + } + + if ((offset + selection) < maxcheats) + { + /* Special inputs */ + if (m_input.keys & PAD_TRIGGER_R) + { + /* sort cheat list */ + for (i = offset + selection + 1; i < maxcheats; i++) + { + strcpy(cheatlist[i-1].text,cheatlist[i].text); + strcpy(cheatlist[i-1].code,cheatlist[i].code); + cheatlist[i-1].address = cheatlist[i].address; + cheatlist[i-1].data = cheatlist[i].data; + cheatlist[i-1].enable = cheatlist[i].enable; + } + + /* clear last cheat */ + cheatlist[maxcheats-1].text[0] = 0; + cheatlist[maxcheats-1].code[0] = 0; + cheatlist[maxcheats-1].address = 0; + cheatlist[maxcheats-1].data = 0; + cheatlist[maxcheats-1].enable = 0; + + /* disable last button */ + if ((maxcheats - offset) < 10) + { + m->buttons[maxcheats - offset].state &= ~BUTTON_ACTIVE; + m->buttons[maxcheats - offset - 1].shift[1] = 0; + } + + /* decrease cheat count */ + maxcheats--; + + /* reset scrolling */ + string_offset = 0; + } + else if (m_input.keys & PAD_TRIGGER_L) + { + /* cheat ON/OFF */ + cheatlist[offset + selection].enable ^= 1; + } + } + } + } + + if (update < 0) + { + if (m->bg_images[6].state & IMAGE_VISIBLE) + { + /* slide out right window */ + GUI_DrawMenuFX(m,20,1); + + /* hide digit buttons */ + for (i=10; i<30; i++) m->buttons[i].state &= ~BUTTON_VISIBLE; + + /* hide right window */ + m->bg_images[6].state &= ~IMAGE_VISIBLE; + + /* update left buttons */ + for (i=0; i<10; i++) + { + if ((offset + i) < maxcheats) + { + m->buttons[i].state |= BUTTON_ACTIVE; + m->buttons[i].shift[1] = 1; + } + else if ((offset + i) == maxcheats) + { + m->buttons[i].state |= BUTTON_ACTIVE; + m->buttons[i].shift[1] = 0; + } + else + { + m->buttons[i].state &= ~BUTTON_ACTIVE; + m->buttons[i].shift[1] = 0; + } + } + + /* enable arrow buttons */ + m->arrows[0]->state |= BUTTON_ACTIVE; + m->arrows[1]->state |= BUTTON_ACTIVE; + + /* restore helper */ + strcpy(action_cancel.comment,"Back"); + + /* select current cheat */ + m->selected = selection; + + /* stay in menu */ + update = 0; + } + } + } + + /* apply ROM patches */ + apply_cheats(); + + /* save cheats to file */ + sprintf(temp, "%s/cheats/%s.pat", DEFAULT_PATH, rom_filename); + + if (maxcheats) + { + /* open file */ + FILE *f = fopen(temp, "w"); + + /* write cheats */ + if (f) + { + for (i=0; ibg_images[2].state |= IMAGE_SLIDE_TOP; + m->bg_images[3].state |= IMAGE_SLIDE_BOTTOM; + m->bg_images[4].state |= IMAGE_SLIDE_TOP; + + /* leave menu */ + m->cb = NULL; + GUI_DeleteMenu(m); + GUI_DrawMenuFX(m,30,1); +} + + +/**************************************************************************** + * CheatLoad + * + * Load cheats from associated .pat file, called when loading a new game + * ROM patches are automatically applied. + * RAM patches are applied once per frame. + * + ****************************************************************************/ +void CheatLoad(void) +{ + int len; + int cnt = 0; + char temp[256]; + + /* reset cheat count */ + maxcheats = 0; + + /* make cheat filename */ + sprintf(temp, "%s/cheats/%s.pat", DEFAULT_PATH, rom_filename); + + /* open file */ + FILE *f = fopen(temp, "r"); + if (f) + { + /* clear string */ + memset(temp, 0, 256); + + /* read cheats from file (one line per cheat) */ + while (fgets(temp, 256, f) && (maxcheats < MAX_CHEATS) && (cnt < MAX_CHEATS)) + { + /* remove CR & EOL chars */ + if ((temp[strlen(temp) - 2] == 0x0d) || (temp[strlen(temp) - 2] == 0x0a)) temp[strlen(temp) - 2] = 0; + else temp[strlen(temp) - 1] = 0; + + /* check cheat validty */ + len = decode_cheat(temp, maxcheats); + + if (len) + { + /* copy cheat code */ + strncpy(cheatlist[maxcheats].code, temp, len); + cheatlist[maxcheats].code[len] = 0; + len++; + + /* jump TAB and SPACE characters */ + while ((temp[len] == 0x20) || (temp[len] == 0x09)) len++; + + /* copy cheat description */ + strncpy(cheatlist[maxcheats].text, &temp[len], MAX_DESC_LENGTH - 1); + cheatlist[maxcheats].text[MAX_DESC_LENGTH - 1] = 0; + + /* increment cheat count */ + maxcheats++; + } + else if (!strcmp(temp,"ON") && config.autocheat) + { + /* enable flag */ + cheatlist[cnt++].enable = 1; + } + else if (!strcmp(temp,"OFF") && config.autocheat) + { + /* disable flag */ + cheatlist[cnt++].enable = 0; + } + } + + /* by default, disable cheats that were not flagged */ + while (cnt < maxcheats) cheatlist[cnt++].enable = 0; + + /* close file */ + fclose(f); + } + + /* apply ROM patches */ + apply_cheats(); + + /* adjust menu buttons */ + for (cnt=0; cnt<10; cnt++) + { + if (cnt < maxcheats) + { + menu_cheats.buttons[cnt].state |= BUTTON_ACTIVE; + menu_cheats.buttons[cnt].shift[1] = 1; + } + else if (cnt == maxcheats) + { + menu_cheats.buttons[cnt].state |= BUTTON_ACTIVE; + menu_cheats.buttons[cnt].shift[1] = 0; + } + else + { + menu_cheats.buttons[cnt].shift[1] = 0; + menu_cheats.buttons[cnt].state &= ~BUTTON_ACTIVE; + } + } + + /* reset menu */ + selection = offset = 0; +} + +/**************************************************************************** + * RAMCheatUpdate + * + * Apply RAM patches (this should be called once per frame) + * + ****************************************************************************/ +void RAMCheatUpdate(void) +{ + int index, cnt = maxRAMcheats; + + while (cnt) + { + /* get cheat index */ + index = cheatIndexes[--cnt]; + + /* apply RAM patch */ + if (cheatlist[index].data & 0xFF00) + { + /* word patch */ + *(u16 *)(work_ram + (cheatlist[index].address & 0xFFFE)) = cheatlist[index].data; + } + else + { + /* byte patch */ + work_ram[cheatlist[index].address & 0xFFFF] = cheatlist[index].data; + } + } +} + + +/**************************************************************************** + * ROMCheatUpdate + * + * Apply ROM patches (this should be called each time banking is changed) + * + ****************************************************************************/ +void ROMCheatUpdate(void) +{ + int index, cnt = maxROMcheats; + u8 *ptr; + + while (cnt) + { + /* get cheat index */ + index = cheatIndexes[MAX_CHEATS - cnt]; + + /* check if previous banked ROM address was patched */ + if (cheatlist[index].prev != NULL) + { + /* restore original data */ + *cheatlist[index].prev = cheatlist[index].old; + + /* no more patched ROM address */ + cheatlist[index].prev = NULL; + } + + /* get current banked ROM address */ + ptr = &z80_readmap[(cheatlist[index].address) >> 10][cheatlist[index].address & 0x03FF]; + + /* check if reference matches original ROM data */ + if (((u8)cheatlist[index].old) == *ptr) + { + /* patch data */ + *ptr = cheatlist[index].data; + + /* save patched ROM address */ + cheatlist[index].prev = ptr; + } + + /* next ROM patch */ + cnt--; + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/cheats.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/cheats.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/cheats.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/cheats.h index e6759a6a8a..74cb421676 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/cheats.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/cheats.h @@ -1,50 +1,50 @@ -/* - * cheats.c - * - * Cheats menu - * - * Copyright Eke-Eke (2010-2012) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _CHEATS_H -#define _CHEATS_H - -#define CHEATS_UPDATE() ROMCheatUpdate() - -extern void CheatMenu(void); -extern void CheatLoad(void); -extern void RAMCheatUpdate(void); -extern void ROMCheatUpdate(void); - -#endif +/* + * cheats.c + * + * Cheats menu + * + * Copyright Eke-Eke (2010-2012) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _CHEATS_H +#define _CHEATS_H + +#define CHEATS_UPDATE() ROMCheatUpdate() + +extern void CheatMenu(void); +extern void CheatLoad(void); +extern void RAMCheatUpdate(void); +extern void ROMCheatUpdate(void); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/filesel.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/filesel.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/filesel.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/filesel.c index 0ed07a0c4c..ab33c40409 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/filesel.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/filesel.c @@ -1,645 +1,645 @@ -/* - * filesel.c - * - * ROM File Browser - * - * Copyright Eke-Eke (2009-2013) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "filesel.h" -#include "font.h" -#include "gui.h" -#include "file_load.h" -#include "history.h" - -#define BG_COLOR_1 {0x49,0x49,0x49,0xff} -#define BG_COLOR_2 {0x66,0x66,0x66,0xff} - -#define SCROLL_SPEED 10 - -extern const u8 Browser_dir_png[]; -extern const u8 Snap_empty_png[]; -extern const u8 Cart_md_png[]; -extern const u8 Cart_ms_png[]; -extern const u8 Cart_gg_png[]; -extern const u8 Cart_sg_png[]; - -FILEENTRIES filelist[MAXFILES]; - -static int offset = 0; -static int selection = 0; -static int maxfiles = 0; -static int string_offset = 0; -static char prev_folder[MAXJOLIET]; -static void selector_cb(void); - -/*****************************************************************************/ -/* GUI Buttons data */ -/*****************************************************************************/ -static butn_data arrow_up_data = -{ - {NULL,NULL}, - {Button_up_png,Button_up_over_png} -}; - -static butn_data arrow_down_data = -{ - {NULL,NULL}, - {Button_down_png,Button_down_over_png} -}; - -/*****************************************************************************/ -/* GUI Arrows button */ -/*****************************************************************************/ - -static gui_butn arrow_up = {&arrow_up_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,76,360,32}; -static gui_butn arrow_down = {&arrow_down_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,368,360,32}; - -/*****************************************************************************/ -/* GUI helpers */ -/*****************************************************************************/ -static gui_item action_cancel = -{ - NULL,Key_B_png,"","Previous Directory",10,422,28,28 -}; - -static gui_item action_select = -{ - NULL,Key_A_png,"","Load ROM file",602,422,28,28 -}; - -/*****************************************************************************/ -/* GUI Background images */ -/*****************************************************************************/ -static gui_image bg_filesel[14] = -{ - {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Banner_top_png,IMAGE_VISIBLE,0,0,640,108,255}, - {NULL,Banner_bottom_png,IMAGE_VISIBLE,0,380,640,100,255}, - {NULL,Main_logo_png,IMAGE_VISIBLE,466,40,152,44,255}, - {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,152}, - {NULL,Frame_s2_png,0,384,264,248,140,152}, - {NULL,Snap_empty_png,IMAGE_VISIBLE,424,148,160,112,255}, - {NULL,NULL,0,424,148,160,112,255}, - {NULL,NULL,0,388,147,240,152,255}, - {NULL,NULL,0,388,147,240,152,255}, - {NULL,NULL,0,392,118,232,148,255}, - {NULL,NULL,0,414,116,184,188,255}, - {NULL,NULL,0,416,144,180,228,255} -}; - -static const u8 *Cart_png[FILETYPE_MAX] = -{ - Cart_md_png, - Cart_md_png, - Cart_ms_png, - Cart_gg_png, - Cart_sg_png -}; - -static const char *Cart_dir[FILETYPE_MAX] = -{ - "md", - "cd", - "ms", - "gg", - "sg" -}; - -/*****************************************************************************/ -/* GUI Descriptor */ -/*****************************************************************************/ -static gui_menu menu_selector = -{ - "Game Selection", - -1,-1, - 0,0,14,0, - NULL, - NULL, - bg_filesel, - {&action_cancel, &action_select}, - {&arrow_up,&arrow_down}, - selector_cb -}; - - -static void selector_cb(void) -{ - int i; - char text[MAXPATHLEN]; - int yoffset = 108; - - /* Initialize directory icon */ - gui_image dir_icon; - dir_icon.texture = gxTextureOpenPNG(Browser_dir_png,0); - dir_icon.w = dir_icon.texture->width; - dir_icon.h = dir_icon.texture->height; - dir_icon.x = 26; - dir_icon.y = (26 - dir_icon.h)/2; - - /* Initialize selection bar */ - gui_image bar_over; - bar_over.texture = gxTextureOpenPNG(Overlay_bar_png,0); - bar_over.w = bar_over.texture->width; - bar_over.h = bar_over.texture->height; - bar_over.x = 16; - bar_over.y = (26 - bar_over.h)/2; - - /* Draw browser array */ - gxDrawRectangle(15, 108, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 134, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 160, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 186, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 212, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 238, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 264, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 290, 358, 26, 127, (GXColor)BG_COLOR_2); - gxDrawRectangle(15, 316, 358, 26, 127, (GXColor)BG_COLOR_1); - gxDrawRectangle(15, 342, 358, 26, 127, (GXColor)BG_COLOR_2); - - /* Draw Files list */ - for (i = offset; (i < (offset + 10)) && (i < maxfiles); i++) - { - if (i == selection) - { - /* selection bar */ - gxDrawTexture(bar_over.texture,bar_over.x,yoffset+bar_over.y,bar_over.w,bar_over.h,255); - - /* scrolling text */ - if ((string_offset/SCROLL_SPEED) >= strlen(filelist[i].filename)) - { - string_offset = 0; - } - - if (string_offset) - { - sprintf(text,"%s ",filelist[i].filename+string_offset/SCROLL_SPEED); - strncat(text, filelist[i].filename, string_offset/SCROLL_SPEED); - } - else - { - strcpy(text, filelist[i].filename); - } - - /* print text */ - if (filelist[i].flags) - { - /* directory icon */ - gxDrawTexture(dir_icon.texture,dir_icon.x,yoffset+dir_icon.y,dir_icon.w,dir_icon.h,255); - if (FONT_write(text,18,dir_icon.x+dir_icon.w+6,yoffset+22,bar_over.w-dir_icon.w-26,(GXColor)WHITE)) - { - /* text scrolling */ - string_offset ++; - } - } - else - { - if (FONT_write(text,18,dir_icon.x,yoffset+22,bar_over.w-20,(GXColor)WHITE)) - { - /* text scrolling */ - string_offset ++; - } - } - } - else - { - if (filelist[i].flags) - { - /* directory icon */ - gxDrawTexture(dir_icon.texture,dir_icon.x,yoffset+dir_icon.y,dir_icon.w,dir_icon.h,255); - FONT_write(filelist[i].filename,18,dir_icon.x+dir_icon.w+6,yoffset+22,bar_over.w-dir_icon.w-26,(GXColor)WHITE); - } - else - { - FONT_write(filelist[i].filename,18,dir_icon.x,yoffset+22,bar_over.w-20,(GXColor)WHITE); - } - } - - yoffset += 26; - } - - gxTextureClose(&bar_over.texture); - gxTextureClose(&dir_icon.texture); -} - - -/**************************************************************************** - * FileSelector - * - * Browse directories and select a file from the file listing - * return ROM size - * - ****************************************************************************/ -int FileSelector(int type) -{ - short p; - int i; - int old = -1; - char fname[MAXPATHLEN]; - FILE *snap; - gui_menu *m = &menu_selector; - -#ifdef HW_RVL - int x,y; - gui_butn *button; -#endif - - /* Background overlay */ - if (config.bg_overlay) - { - bg_filesel[1].state |= IMAGE_VISIBLE; - } - else - { - bg_filesel[1].state &= ~IMAGE_VISIBLE; - } - - /* Hide all cartridge labels */ - for (i=0; i select all cartridge type */ - for (i=0; i variable game types */ - if (type < 0) - { - /* hide all cartridge labels */ - for (i=0; i 0) && (fname[i] != '.')) i--; - if (i > 0) fname[i] = 0; - - /* add PNG file extension */ - strcat(fname, ".png"); - - /* try to load screenshot file */ - snap = fopen(fname, "rb"); - if (snap) - { - bg_filesel[8].texture = gxTextureOpenPNG(0,snap); - if (bg_filesel[8].texture) - { - bg_filesel[8].state |= IMAGE_VISIBLE; - } - fclose(snap); - } - } - } - - /* update helper */ - if (m->selected != -1) - { - /* out of focus */ - strcpy(action_select.comment,""); - } - else if (filelist[selection].flags) - { - /* this is a directory */ - strcpy(action_select.comment,"Open Directory"); - } - else - { - /* this is a ROM file */ - strcpy(action_select.comment,"Load File"); - } - - /* Draw menu*/ - GUI_DrawMenu(m); - -#ifdef HW_RVL - if (Shutdown) - { - gxTextureClose(&w_pointer); - GUI_DeleteMenu(m); - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_POWEROFF, 0, 0); - } - else if (m_input.ir.valid) - { - /* get cursor position */ - x = m_input.ir.x; - y = m_input.ir.y; - - /* draw wiimote pointer */ - gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); - - /* ensure we are in the selectable area */ - if ((x < 380) && (y >= 108) && (y <= 368)) - { - /* find selected item */ - selection = (y - 108) / 26; - if (selection > 9) selection = 9; - selection += offset; - if (selection >= maxfiles) selection = old; - - /* reset selection */ - m->selected = -1; - } - else - { - /* disable selection */ - m->selected = m->max_buttons + 2; - - /* find selected button */ - for (i=0; i<2; i++) - { - button = m->arrows[i]; - if (button) - { - if (button->state & BUTTON_VISIBLE) - { - if ((x>=button->x)&&(x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) - { - m->selected = m->max_buttons + i; - break; - } - } - } - } - } - } - else - { - /* reset selection */ - m->selected = -1; - } -#endif - - /* copy EFB to XFB */ - gxSetScreen(); - - p = m_input.keys; - - /* highlight next item */ - if (p & PAD_BUTTON_DOWN) - { - selection++; - if (selection == maxfiles) - selection = offset = 0; - if ((selection - offset) >= 10) - offset += 10; - } - - /* highlight previous item */ - else if (p & PAD_BUTTON_UP) - { - selection--; - if (selection < 0) - { - selection = maxfiles - 1; - offset = maxfiles - 10; - } - if (selection < offset) - offset -= 10; - if (offset < 0) - offset = 0; - } - - /* go back one page */ - else if (p & (PAD_TRIGGER_L | PAD_BUTTON_LEFT)) - { - if (maxfiles >= 10) - { - selection -= 10; - if (selection < 0) - { - selection = offset = 0; - } - else if (selection < offset) - { - offset -= 10; - if (offset < 0) offset = 0; - } - } - } - - /* go forward one page */ - else if (p & (PAD_TRIGGER_R | PAD_BUTTON_RIGHT)) - { - if (maxfiles >= 10) - { - selection += 10; - if (selection > maxfiles - 1) - { - /* last page */ - selection = maxfiles - 1; - offset = maxfiles - 10; - } - else if (selection >= (offset + 10)) - { - /* next page */ - offset += 10; - if (offset > (maxfiles - 10)) offset = maxfiles - 10; - } - } - } - - /* quit */ - else if (p & PAD_TRIGGER_Z) - { - GUI_DeleteMenu(m); - return 0; - } - - /* previous directory */ - else if (p & PAD_BUTTON_B) - { - string_offset = 0; - - /* update browser directory (and get current folder)*/ - if (UpdateDirectory(1, prev_folder)) - { - /* get directory entries */ - maxfiles = ParseDirectory(); - - /* clear selection by default */ - selection = offset = 0; - old = -1; - - /* select previous directory */ - for (i=0; i= (offset + 10)) - { - offset += 10; - if (offset > (maxfiles - 10)) offset = maxfiles - 10; - } - break; - } - } - } - else - { - /* exit */ - GUI_DeleteMenu(m); - return 0; - } - } - - /* open selected file or directory */ - else if (p & PAD_BUTTON_A) - { - string_offset = 0; - - /* ensure we are in focus area */ - if (m->selected < m->max_buttons) - { - if (filelist[selection].flags) - { - /* get new directory */ - UpdateDirectory(0, filelist[selection].filename); - - /* get directory entries */ - maxfiles = ParseDirectory(); - - /* clear selection by default */ - selection = offset = 0; - old = -1; - } - else - { - /* load ROM file from device */ - int ret = LoadFile(selection); - - /* exit menu */ - GUI_DeleteMenu(m); - - /* return ROM size (or zero if an error occured) */ - return ret; - } - } - -#ifdef HW_RVL - /* arrow buttons selected */ - else if (m->selected == m->max_buttons) - { - /* up arrow */ - selection--; - if (selection < 0) - { - selection = maxfiles - 1; - offset = selection - 10 + 1; - } - if (selection < offset) offset -= 10; - if (offset < 0) offset = 0; - } - else if (m->selected == (m->max_buttons+1)) - { - /* down arrow */ - selection++; - if (selection == maxfiles) - selection = offset = 0; - if ((selection - offset) >= 10) - offset += 10; - } -#endif - } - } -} - -void ClearSelector(u32 max) -{ - maxfiles = max; - offset = 0; - selection = 0; -} +/* + * filesel.c + * + * ROM File Browser + * + * Copyright Eke-Eke (2009-2013) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "filesel.h" +#include "font.h" +#include "gui.h" +#include "file_load.h" +#include "history.h" + +#define BG_COLOR_1 {0x49,0x49,0x49,0xff} +#define BG_COLOR_2 {0x66,0x66,0x66,0xff} + +#define SCROLL_SPEED 10 + +extern const u8 Browser_dir_png[]; +extern const u8 Snap_empty_png[]; +extern const u8 Cart_md_png[]; +extern const u8 Cart_ms_png[]; +extern const u8 Cart_gg_png[]; +extern const u8 Cart_sg_png[]; + +FILEENTRIES filelist[MAXFILES]; + +static int offset = 0; +static int selection = 0; +static int maxfiles = 0; +static int string_offset = 0; +static char prev_folder[MAXJOLIET]; +static void selector_cb(void); + +/*****************************************************************************/ +/* GUI Buttons data */ +/*****************************************************************************/ +static butn_data arrow_up_data = +{ + {NULL,NULL}, + {Button_up_png,Button_up_over_png} +}; + +static butn_data arrow_down_data = +{ + {NULL,NULL}, + {Button_down_png,Button_down_over_png} +}; + +/*****************************************************************************/ +/* GUI Arrows button */ +/*****************************************************************************/ + +static gui_butn arrow_up = {&arrow_up_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,76,360,32}; +static gui_butn arrow_down = {&arrow_down_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,368,360,32}; + +/*****************************************************************************/ +/* GUI helpers */ +/*****************************************************************************/ +static gui_item action_cancel = +{ + NULL,Key_B_png,"","Previous Directory",10,422,28,28 +}; + +static gui_item action_select = +{ + NULL,Key_A_png,"","Load ROM file",602,422,28,28 +}; + +/*****************************************************************************/ +/* GUI Background images */ +/*****************************************************************************/ +static gui_image bg_filesel[14] = +{ + {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Banner_top_png,IMAGE_VISIBLE,0,0,640,108,255}, + {NULL,Banner_bottom_png,IMAGE_VISIBLE,0,380,640,100,255}, + {NULL,Main_logo_png,IMAGE_VISIBLE,466,40,152,44,255}, + {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,152}, + {NULL,Frame_s2_png,0,384,264,248,140,152}, + {NULL,Snap_empty_png,IMAGE_VISIBLE,424,148,160,112,255}, + {NULL,NULL,0,424,148,160,112,255}, + {NULL,NULL,0,388,147,240,152,255}, + {NULL,NULL,0,388,147,240,152,255}, + {NULL,NULL,0,392,118,232,148,255}, + {NULL,NULL,0,414,116,184,188,255}, + {NULL,NULL,0,416,144,180,228,255} +}; + +static const u8 *Cart_png[FILETYPE_MAX] = +{ + Cart_md_png, + Cart_md_png, + Cart_ms_png, + Cart_gg_png, + Cart_sg_png +}; + +static const char *Cart_dir[FILETYPE_MAX] = +{ + "md", + "cd", + "ms", + "gg", + "sg" +}; + +/*****************************************************************************/ +/* GUI Descriptor */ +/*****************************************************************************/ +static gui_menu menu_selector = +{ + "Game Selection", + -1,-1, + 0,0,14,0, + NULL, + NULL, + bg_filesel, + {&action_cancel, &action_select}, + {&arrow_up,&arrow_down}, + selector_cb +}; + + +static void selector_cb(void) +{ + int i; + char text[MAXPATHLEN]; + int yoffset = 108; + + /* Initialize directory icon */ + gui_image dir_icon; + dir_icon.texture = gxTextureOpenPNG(Browser_dir_png,0); + dir_icon.w = dir_icon.texture->width; + dir_icon.h = dir_icon.texture->height; + dir_icon.x = 26; + dir_icon.y = (26 - dir_icon.h)/2; + + /* Initialize selection bar */ + gui_image bar_over; + bar_over.texture = gxTextureOpenPNG(Overlay_bar_png,0); + bar_over.w = bar_over.texture->width; + bar_over.h = bar_over.texture->height; + bar_over.x = 16; + bar_over.y = (26 - bar_over.h)/2; + + /* Draw browser array */ + gxDrawRectangle(15, 108, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 134, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 160, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 186, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 212, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 238, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 264, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 290, 358, 26, 127, (GXColor)BG_COLOR_2); + gxDrawRectangle(15, 316, 358, 26, 127, (GXColor)BG_COLOR_1); + gxDrawRectangle(15, 342, 358, 26, 127, (GXColor)BG_COLOR_2); + + /* Draw Files list */ + for (i = offset; (i < (offset + 10)) && (i < maxfiles); i++) + { + if (i == selection) + { + /* selection bar */ + gxDrawTexture(bar_over.texture,bar_over.x,yoffset+bar_over.y,bar_over.w,bar_over.h,255); + + /* scrolling text */ + if ((string_offset/SCROLL_SPEED) >= strlen(filelist[i].filename)) + { + string_offset = 0; + } + + if (string_offset) + { + sprintf(text,"%s ",filelist[i].filename+string_offset/SCROLL_SPEED); + strncat(text, filelist[i].filename, string_offset/SCROLL_SPEED); + } + else + { + strcpy(text, filelist[i].filename); + } + + /* print text */ + if (filelist[i].flags) + { + /* directory icon */ + gxDrawTexture(dir_icon.texture,dir_icon.x,yoffset+dir_icon.y,dir_icon.w,dir_icon.h,255); + if (FONT_write(text,18,dir_icon.x+dir_icon.w+6,yoffset+22,bar_over.w-dir_icon.w-26,(GXColor)WHITE)) + { + /* text scrolling */ + string_offset ++; + } + } + else + { + if (FONT_write(text,18,dir_icon.x,yoffset+22,bar_over.w-20,(GXColor)WHITE)) + { + /* text scrolling */ + string_offset ++; + } + } + } + else + { + if (filelist[i].flags) + { + /* directory icon */ + gxDrawTexture(dir_icon.texture,dir_icon.x,yoffset+dir_icon.y,dir_icon.w,dir_icon.h,255); + FONT_write(filelist[i].filename,18,dir_icon.x+dir_icon.w+6,yoffset+22,bar_over.w-dir_icon.w-26,(GXColor)WHITE); + } + else + { + FONT_write(filelist[i].filename,18,dir_icon.x,yoffset+22,bar_over.w-20,(GXColor)WHITE); + } + } + + yoffset += 26; + } + + gxTextureClose(&bar_over.texture); + gxTextureClose(&dir_icon.texture); +} + + +/**************************************************************************** + * FileSelector + * + * Browse directories and select a file from the file listing + * return ROM size + * + ****************************************************************************/ +int FileSelector(int type) +{ + short p; + int i; + int old = -1; + char fname[MAXPATHLEN]; + FILE *snap; + gui_menu *m = &menu_selector; + +#ifdef HW_RVL + int x,y; + gui_butn *button; +#endif + + /* Background overlay */ + if (config.bg_overlay) + { + bg_filesel[1].state |= IMAGE_VISIBLE; + } + else + { + bg_filesel[1].state &= ~IMAGE_VISIBLE; + } + + /* Hide all cartridge labels */ + for (i=0; i select all cartridge type */ + for (i=0; i variable game types */ + if (type < 0) + { + /* hide all cartridge labels */ + for (i=0; i 0) && (fname[i] != '.')) i--; + if (i > 0) fname[i] = 0; + + /* add PNG file extension */ + strcat(fname, ".png"); + + /* try to load screenshot file */ + snap = fopen(fname, "rb"); + if (snap) + { + bg_filesel[8].texture = gxTextureOpenPNG(0,snap); + if (bg_filesel[8].texture) + { + bg_filesel[8].state |= IMAGE_VISIBLE; + } + fclose(snap); + } + } + } + + /* update helper */ + if (m->selected != -1) + { + /* out of focus */ + strcpy(action_select.comment,""); + } + else if (filelist[selection].flags) + { + /* this is a directory */ + strcpy(action_select.comment,"Open Directory"); + } + else + { + /* this is a ROM file */ + strcpy(action_select.comment,"Load File"); + } + + /* Draw menu*/ + GUI_DrawMenu(m); + +#ifdef HW_RVL + if (Shutdown) + { + gxTextureClose(&w_pointer); + GUI_DeleteMenu(m); + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_POWEROFF, 0, 0); + } + else if (m_input.ir.valid) + { + /* get cursor position */ + x = m_input.ir.x; + y = m_input.ir.y; + + /* draw wiimote pointer */ + gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); + + /* ensure we are in the selectable area */ + if ((x < 380) && (y >= 108) && (y <= 368)) + { + /* find selected item */ + selection = (y - 108) / 26; + if (selection > 9) selection = 9; + selection += offset; + if (selection >= maxfiles) selection = old; + + /* reset selection */ + m->selected = -1; + } + else + { + /* disable selection */ + m->selected = m->max_buttons + 2; + + /* find selected button */ + for (i=0; i<2; i++) + { + button = m->arrows[i]; + if (button) + { + if (button->state & BUTTON_VISIBLE) + { + if ((x>=button->x)&&(x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) + { + m->selected = m->max_buttons + i; + break; + } + } + } + } + } + } + else + { + /* reset selection */ + m->selected = -1; + } +#endif + + /* copy EFB to XFB */ + gxSetScreen(); + + p = m_input.keys; + + /* highlight next item */ + if (p & PAD_BUTTON_DOWN) + { + selection++; + if (selection == maxfiles) + selection = offset = 0; + if ((selection - offset) >= 10) + offset += 10; + } + + /* highlight previous item */ + else if (p & PAD_BUTTON_UP) + { + selection--; + if (selection < 0) + { + selection = maxfiles - 1; + offset = maxfiles - 10; + } + if (selection < offset) + offset -= 10; + if (offset < 0) + offset = 0; + } + + /* go back one page */ + else if (p & (PAD_TRIGGER_L | PAD_BUTTON_LEFT)) + { + if (maxfiles >= 10) + { + selection -= 10; + if (selection < 0) + { + selection = offset = 0; + } + else if (selection < offset) + { + offset -= 10; + if (offset < 0) offset = 0; + } + } + } + + /* go forward one page */ + else if (p & (PAD_TRIGGER_R | PAD_BUTTON_RIGHT)) + { + if (maxfiles >= 10) + { + selection += 10; + if (selection > maxfiles - 1) + { + /* last page */ + selection = maxfiles - 1; + offset = maxfiles - 10; + } + else if (selection >= (offset + 10)) + { + /* next page */ + offset += 10; + if (offset > (maxfiles - 10)) offset = maxfiles - 10; + } + } + } + + /* quit */ + else if (p & PAD_TRIGGER_Z) + { + GUI_DeleteMenu(m); + return 0; + } + + /* previous directory */ + else if (p & PAD_BUTTON_B) + { + string_offset = 0; + + /* update browser directory (and get current folder)*/ + if (UpdateDirectory(1, prev_folder)) + { + /* get directory entries */ + maxfiles = ParseDirectory(); + + /* clear selection by default */ + selection = offset = 0; + old = -1; + + /* select previous directory */ + for (i=0; i= (offset + 10)) + { + offset += 10; + if (offset > (maxfiles - 10)) offset = maxfiles - 10; + } + break; + } + } + } + else + { + /* exit */ + GUI_DeleteMenu(m); + return 0; + } + } + + /* open selected file or directory */ + else if (p & PAD_BUTTON_A) + { + string_offset = 0; + + /* ensure we are in focus area */ + if (m->selected < m->max_buttons) + { + if (filelist[selection].flags) + { + /* get new directory */ + UpdateDirectory(0, filelist[selection].filename); + + /* get directory entries */ + maxfiles = ParseDirectory(); + + /* clear selection by default */ + selection = offset = 0; + old = -1; + } + else + { + /* load ROM file from device */ + int ret = LoadFile(selection); + + /* exit menu */ + GUI_DeleteMenu(m); + + /* return ROM size (or zero if an error occured) */ + return ret; + } + } + +#ifdef HW_RVL + /* arrow buttons selected */ + else if (m->selected == m->max_buttons) + { + /* up arrow */ + selection--; + if (selection < 0) + { + selection = maxfiles - 1; + offset = selection - 10 + 1; + } + if (selection < offset) offset -= 10; + if (offset < 0) offset = 0; + } + else if (m->selected == (m->max_buttons+1)) + { + /* down arrow */ + selection++; + if (selection == maxfiles) + selection = offset = 0; + if ((selection - offset) >= 10) + offset += 10; + } +#endif + } + } +} + +void ClearSelector(u32 max) +{ + maxfiles = max; + offset = 0; + selection = 0; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/filesel.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/filesel.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/filesel.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/filesel.h index 213e304f69..e12440d605 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/filesel.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/filesel.h @@ -1,58 +1,58 @@ -/* - * filesel.c - * - * ROM File Browser - * - * Copyright Eke-Eke (2009-2013) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _FILESEL_H -#define _FILESEL_H - -#define MAXJOLIET 256 -#define MAXFILES 1000 - -/* Filelist structure */ -typedef struct -{ - u8 flags; - char filename[MAXJOLIET]; -}FILEENTRIES; - -/* Globals */ -extern int FileSelector(int type); -extern void ClearSelector(u32 max); -extern FILEENTRIES filelist[MAXFILES]; - -#endif +/* + * filesel.c + * + * ROM File Browser + * + * Copyright Eke-Eke (2009-2013) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _FILESEL_H +#define _FILESEL_H + +#define MAXJOLIET 256 +#define MAXFILES 1000 + +/* Filelist structure */ +typedef struct +{ + u8 flags; + char filename[MAXJOLIET]; +}FILEENTRIES; + +/* Globals */ +extern int FileSelector(int type); +extern void ClearSelector(u32 max); +extern FILEENTRIES filelist[MAXFILES]; + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/font.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/font.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/font.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/font.c index 52b941f5ff..33fc396cbc 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/font.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/font.c @@ -1,388 +1,388 @@ -/***************************************************************************** - * font.c - * - * IPL font engine (using GX rendering) - * - * Copyright Eke-Eke (2009-2010) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "font.h" - -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - -typedef struct _yay0header { - unsigned int id ATTRIBUTE_PACKED; - unsigned int dec_size ATTRIBUTE_PACKED; - unsigned int links_offset ATTRIBUTE_PACKED; - unsigned int chunks_offset ATTRIBUTE_PACKED; -} yay0header; - -u8 font_size[256]; -int fheight; - -static u8 *fontImage; -static u8 *fontTexture; -static void *ipl_fontarea; -static sys_fontheader *fontHeader; - - -#ifndef HW_RVL - -/* disable Qoob Modchip before IPL access (emukiddid) */ -static void ipl_set_config(unsigned char c) -{ - volatile unsigned long* exi = (volatile unsigned long*)0xCC006800; - unsigned long val,addr; - addr=0xc0000000; - val = c << 24; - exi[0] = ((((exi[0]) & 0x405) | 256) | 48); //select IPL - //write addr of IPL - exi[0 * 5 + 4] = addr; - exi[0 * 5 + 3] = ((4 - 1) << 4) | (1 << 2) | 1; - while (exi[0 * 5 + 3] & 1); - //write the ipl we want to send - exi[0 * 5 + 4] = val; - exi[0 * 5 + 3] = ((4 - 1) << 4) | (1 << 2) | 1; - while (exi[0 * 5 + 3] & 1); - exi[0] &= 0x405; //deselect IPL -} - -#endif - -static void decode_szp(void *src,void *dest) -{ - u32 i,k,link; - u8 *dest8,*tmp; - u32 loff,coff,roff; - u32 size,cnt,cmask,bcnt; - yay0header *header; - - dest8 = (u8*)dest; - header = (yay0header*)src; - size = header->dec_size; - loff = header->links_offset; - coff = header->chunks_offset; - - roff = sizeof(yay0header); - cmask = 0; - cnt = 0; - bcnt = 0; - - do { - if(!bcnt) { - cmask = *(u32*)(src+roff); - roff += 4; - bcnt = 32; - } - - if(cmask&0x80000000) { - dest8[cnt++] = *(u8*)(src+coff); - coff++; - } else { - link = *(u16*)(src+loff); - loff += 2; - - tmp = dest8+(cnt-(link&0x0fff)-1); - k = link>>12; - if(k==0) { - k = (*(u8*)(src+coff))+18; - coff++; - } else k += 2; - - for(i=0;isheet_format==0x0000) { - cnt = (sys_fontdata->sheet_fullsize/2)-1; - - while(cnt>=0) { - idx = _SHIFTR(src[cnt],6,2); - val1 = data[idx]; - - idx = _SHIFTR(src[cnt],4,2); - val2 = data[idx]; - - dest[(cnt<<1)+0] =((val1&0xf0)|(val2&0x0f)); - - idx = _SHIFTR(src[cnt],2,2); - val1 = data[idx]; - - idx = _SHIFTR(src[cnt],0,2); - val2 = data[idx]; - - dest[(cnt<<1)+1] =((val1&0xf0)|(val2&0x0f)); - - cnt--; - } - } - DCStoreRange(dest,sys_fontdata->sheet_fullsize); -} - -static void GetFontTexel(s32 c,void *image,s32 pos,s32 stride) -{ - u32 sheets,rem; - u32 xoff,yoff; - u32 xpos,ypos; - u8 *img_start; - u8 *ptr1,*ptr2; - sys_fontheader *sys_fontdata = fontHeader; - - if(cfirst_char || c>sys_fontdata->last_char) c = sys_fontdata->inval_char; - else c -= sys_fontdata->first_char; - - sheets = sys_fontdata->sheet_column*sys_fontdata->sheet_row; - rem = c%sheets; - sheets = c/sheets; - xoff = (rem%sys_fontdata->sheet_column)*sys_fontdata->cell_width; - yoff = (rem/sys_fontdata->sheet_column)*sys_fontdata->cell_height; - img_start = fontImage+(sys_fontdata->sheet_size*sheets); - - ypos = 0; - while(yposcell_height) { - xpos = 0; - while(xposcell_width) { - ptr1 = img_start+(((sys_fontdata->sheet_width/8)<<5)*((ypos+yoff)/8)); - ptr1 = ptr1+(((xpos+xoff)/8)<<5); - ptr1 = ptr1+(((ypos+yoff)%8)<<2); - ptr1 = ptr1+(((xpos+xoff)%8)/2); - - ptr2 = image+((ypos/8)*(((stride<<1)/8)<<5)); - ptr2 = ptr2+(((xpos+pos)/8)<<5); - ptr2 = ptr2+(((xpos+pos)%8)/2); - ptr2 = ptr2+((ypos%8)<<2); - - *ptr2 = *ptr1; - - xpos += 2; - } - ypos++; - } -} - -static void DrawChar(unsigned char c, int xpos, int ypos, int size, GXColor color) -{ - /* reintialize texture object */ - GXTexObj texobj; - GX_InitTexObj(&texobj, fontTexture, fontHeader->cell_width, fontHeader->cell_height, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_LoadTexObj(&texobj, GX_TEXMAP0); - - /* reinitialize font texture data */ - memset(fontTexture,0,fontHeader->cell_width * fontHeader->cell_height / 2); - GetFontTexel(c,fontTexture,0,fontHeader->cell_width/2); - DCFlushRange(fontTexture, fontHeader->cell_width * fontHeader->cell_height / 2); - GX_InvalidateTexAll(); - - /* adjust texture width */ - s32 width = (fontHeader->cell_width * size) / fontHeader->cell_height; - - /* GX rendering */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(xpos, ypos - size); - GX_Color4u8(color.r, color.g, color.b, 0xff); - GX_TexCoord2f32(0.0, 0.0); - GX_Position2s16(xpos + width, ypos - size); - GX_Color4u8(color.r, color.g, color.b, 0xff); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(xpos + width, ypos); - GX_Color4u8(color.r, color.g, color.b, 0xff); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(xpos, ypos); - GX_Color4u8(color.r, color.g, color.b, 0xff); - GX_TexCoord2f32(0.0, 1.0); - GX_End(); - GX_DrawDone(); -} - -/**************************************************************************** - * IPL font support - * - ****************************************************************************/ -extern void __SYS_ReadROM(void *buf,u32 len,u32 offset); - -int FONT_Init(void) -{ -#ifndef HW_RVL - /* --- Game Cube --- disable Qoob before accessing IPL */ - ipl_set_config(6); -#endif - - /* read IPL font (ASCII) from Mask ROM */ - ipl_fontarea = memalign(32,131360); - if (!ipl_fontarea) - return 0; - memset(ipl_fontarea,0,131360); - __SYS_ReadROM(ipl_fontarea+119072,12288,0x1FCF00); - - /* YAY0 decompression */ - decode_szp(ipl_fontarea+119072,ipl_fontarea); - - /* retrieve IPL font data */ - fontHeader = (sys_fontheader*)ipl_fontarea; - fontImage = (u8*)((((u32)ipl_fontarea+fontHeader->sheet_image)+31)&~31); - - /* expand to I4 format */ - expand_font((u8*)ipl_fontarea+fontHeader->sheet_image,fontImage); - - /* character width table */ - int i,c; - for (i=0; i<256; ++i) - { - if ((i < fontHeader->first_char) || (i > fontHeader->last_char)) - c = fontHeader->inval_char; - else - c = i - fontHeader->first_char; - - font_size[i] = ((u8*)fontHeader)[fontHeader->width_table + c]; - } - - /* font height */ - fheight = fontHeader->cell_height; - - /* initialize texture data */ - fontTexture = memalign(32, fontHeader->cell_width * fontHeader->cell_height / 2); - if (!fontTexture) - { - free(ipl_fontarea); - return 0; - } - - return 1; -} - -void FONT_Shutdown(void) -{ - if (fontHeader) - free(ipl_fontarea); - if (fontTexture) - free(fontTexture); -} - -int FONT_write(char *string, int size, int x, int y, int max_width, GXColor color) -{ - x -= (vmode->fbWidth / 2); - y -= (vmode->efbHeight / 2); - int w, ox = x; - - while (*string && (*string != '\n')) - { - w = (font_size[(u8)*string] * size) / fheight; - if ((x + w) > (ox + max_width)) return strlen(string); - DrawChar(*string, x, y, size,color); - x += w; - string++; - } - - if (*string == '\n') - { - string++; - return FONT_write(string, size, ox + (vmode->fbWidth / 2), y + size + (vmode->efbHeight / 2), max_width, color); - } - - return 0; -} - -int FONT_writeCenter(char *string, int size, int x1, int x2, int y, GXColor color) -{ - int i=0; - int w = 0; - while (string[i] && (string[i] != '\n')) - { - w += (font_size[(u8)string[i++]] * size) / fheight; - } - - if ((x1 + w) > x2) w = x2 - x1; - int x = x1 + (x2 - x1 - w - vmode->fbWidth) / 2; - y -= (vmode->efbHeight / 2); - x2 -= (vmode->fbWidth / 2); - - while (*string && (*string != '\n')) - { - w = (font_size[(u8)*string] * size) / fheight; - if ((x + w) > x2) return strlen(string); - DrawChar(*string, x, y, size,color); - x += w; - string++; - } - - if (*string == '\n') - { - string++; - return FONT_writeCenter(string, size, x1, x2 + (vmode->fbWidth / 2), y + size + (vmode->efbHeight / 2), color); - } - return 0; -} - -int FONT_alignRight(char *string, int size, int x, int y, GXColor color) -{ - int i; - int w = 0; - - x -= (vmode->fbWidth / 2); - y -= (vmode->efbHeight / 2); - - int ox = x; - - for (i=0; i ox) return strlen(string); - DrawChar(*string, x, y, size,color); - x += w; - string++; - } - return 0; -} +/***************************************************************************** + * font.c + * + * IPL font engine (using GX rendering) + * + * Copyright Eke-Eke (2009-2010) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "font.h" + +#define _SHIFTR(v, s, w) \ + ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) + +typedef struct _yay0header { + unsigned int id ATTRIBUTE_PACKED; + unsigned int dec_size ATTRIBUTE_PACKED; + unsigned int links_offset ATTRIBUTE_PACKED; + unsigned int chunks_offset ATTRIBUTE_PACKED; +} yay0header; + +u8 font_size[256]; +int fheight; + +static u8 *fontImage; +static u8 *fontTexture; +static void *ipl_fontarea; +static sys_fontheader *fontHeader; + + +#ifndef HW_RVL + +/* disable Qoob Modchip before IPL access (emukiddid) */ +static void ipl_set_config(unsigned char c) +{ + volatile unsigned long* exi = (volatile unsigned long*)0xCC006800; + unsigned long val,addr; + addr=0xc0000000; + val = c << 24; + exi[0] = ((((exi[0]) & 0x405) | 256) | 48); //select IPL + //write addr of IPL + exi[0 * 5 + 4] = addr; + exi[0 * 5 + 3] = ((4 - 1) << 4) | (1 << 2) | 1; + while (exi[0 * 5 + 3] & 1); + //write the ipl we want to send + exi[0 * 5 + 4] = val; + exi[0 * 5 + 3] = ((4 - 1) << 4) | (1 << 2) | 1; + while (exi[0 * 5 + 3] & 1); + exi[0] &= 0x405; //deselect IPL +} + +#endif + +static void decode_szp(void *src,void *dest) +{ + u32 i,k,link; + u8 *dest8,*tmp; + u32 loff,coff,roff; + u32 size,cnt,cmask,bcnt; + yay0header *header; + + dest8 = (u8*)dest; + header = (yay0header*)src; + size = header->dec_size; + loff = header->links_offset; + coff = header->chunks_offset; + + roff = sizeof(yay0header); + cmask = 0; + cnt = 0; + bcnt = 0; + + do { + if(!bcnt) { + cmask = *(u32*)(src+roff); + roff += 4; + bcnt = 32; + } + + if(cmask&0x80000000) { + dest8[cnt++] = *(u8*)(src+coff); + coff++; + } else { + link = *(u16*)(src+loff); + loff += 2; + + tmp = dest8+(cnt-(link&0x0fff)-1); + k = link>>12; + if(k==0) { + k = (*(u8*)(src+coff))+18; + coff++; + } else k += 2; + + for(i=0;isheet_format==0x0000) { + cnt = (sys_fontdata->sheet_fullsize/2)-1; + + while(cnt>=0) { + idx = _SHIFTR(src[cnt],6,2); + val1 = data[idx]; + + idx = _SHIFTR(src[cnt],4,2); + val2 = data[idx]; + + dest[(cnt<<1)+0] =((val1&0xf0)|(val2&0x0f)); + + idx = _SHIFTR(src[cnt],2,2); + val1 = data[idx]; + + idx = _SHIFTR(src[cnt],0,2); + val2 = data[idx]; + + dest[(cnt<<1)+1] =((val1&0xf0)|(val2&0x0f)); + + cnt--; + } + } + DCStoreRange(dest,sys_fontdata->sheet_fullsize); +} + +static void GetFontTexel(s32 c,void *image,s32 pos,s32 stride) +{ + u32 sheets,rem; + u32 xoff,yoff; + u32 xpos,ypos; + u8 *img_start; + u8 *ptr1,*ptr2; + sys_fontheader *sys_fontdata = fontHeader; + + if(cfirst_char || c>sys_fontdata->last_char) c = sys_fontdata->inval_char; + else c -= sys_fontdata->first_char; + + sheets = sys_fontdata->sheet_column*sys_fontdata->sheet_row; + rem = c%sheets; + sheets = c/sheets; + xoff = (rem%sys_fontdata->sheet_column)*sys_fontdata->cell_width; + yoff = (rem/sys_fontdata->sheet_column)*sys_fontdata->cell_height; + img_start = fontImage+(sys_fontdata->sheet_size*sheets); + + ypos = 0; + while(yposcell_height) { + xpos = 0; + while(xposcell_width) { + ptr1 = img_start+(((sys_fontdata->sheet_width/8)<<5)*((ypos+yoff)/8)); + ptr1 = ptr1+(((xpos+xoff)/8)<<5); + ptr1 = ptr1+(((ypos+yoff)%8)<<2); + ptr1 = ptr1+(((xpos+xoff)%8)/2); + + ptr2 = image+((ypos/8)*(((stride<<1)/8)<<5)); + ptr2 = ptr2+(((xpos+pos)/8)<<5); + ptr2 = ptr2+(((xpos+pos)%8)/2); + ptr2 = ptr2+((ypos%8)<<2); + + *ptr2 = *ptr1; + + xpos += 2; + } + ypos++; + } +} + +static void DrawChar(unsigned char c, int xpos, int ypos, int size, GXColor color) +{ + /* reintialize texture object */ + GXTexObj texobj; + GX_InitTexObj(&texobj, fontTexture, fontHeader->cell_width, fontHeader->cell_height, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_LoadTexObj(&texobj, GX_TEXMAP0); + + /* reinitialize font texture data */ + memset(fontTexture,0,fontHeader->cell_width * fontHeader->cell_height / 2); + GetFontTexel(c,fontTexture,0,fontHeader->cell_width/2); + DCFlushRange(fontTexture, fontHeader->cell_width * fontHeader->cell_height / 2); + GX_InvalidateTexAll(); + + /* adjust texture width */ + s32 width = (fontHeader->cell_width * size) / fontHeader->cell_height; + + /* GX rendering */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(xpos, ypos - size); + GX_Color4u8(color.r, color.g, color.b, 0xff); + GX_TexCoord2f32(0.0, 0.0); + GX_Position2s16(xpos + width, ypos - size); + GX_Color4u8(color.r, color.g, color.b, 0xff); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(xpos + width, ypos); + GX_Color4u8(color.r, color.g, color.b, 0xff); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(xpos, ypos); + GX_Color4u8(color.r, color.g, color.b, 0xff); + GX_TexCoord2f32(0.0, 1.0); + GX_End(); + GX_DrawDone(); +} + +/**************************************************************************** + * IPL font support + * + ****************************************************************************/ +extern void __SYS_ReadROM(void *buf,u32 len,u32 offset); + +int FONT_Init(void) +{ +#ifndef HW_RVL + /* --- Game Cube --- disable Qoob before accessing IPL */ + ipl_set_config(6); +#endif + + /* read IPL font (ASCII) from Mask ROM */ + ipl_fontarea = memalign(32,131360); + if (!ipl_fontarea) + return 0; + memset(ipl_fontarea,0,131360); + __SYS_ReadROM(ipl_fontarea+119072,12288,0x1FCF00); + + /* YAY0 decompression */ + decode_szp(ipl_fontarea+119072,ipl_fontarea); + + /* retrieve IPL font data */ + fontHeader = (sys_fontheader*)ipl_fontarea; + fontImage = (u8*)((((u32)ipl_fontarea+fontHeader->sheet_image)+31)&~31); + + /* expand to I4 format */ + expand_font((u8*)ipl_fontarea+fontHeader->sheet_image,fontImage); + + /* character width table */ + int i,c; + for (i=0; i<256; ++i) + { + if ((i < fontHeader->first_char) || (i > fontHeader->last_char)) + c = fontHeader->inval_char; + else + c = i - fontHeader->first_char; + + font_size[i] = ((u8*)fontHeader)[fontHeader->width_table + c]; + } + + /* font height */ + fheight = fontHeader->cell_height; + + /* initialize texture data */ + fontTexture = memalign(32, fontHeader->cell_width * fontHeader->cell_height / 2); + if (!fontTexture) + { + free(ipl_fontarea); + return 0; + } + + return 1; +} + +void FONT_Shutdown(void) +{ + if (fontHeader) + free(ipl_fontarea); + if (fontTexture) + free(fontTexture); +} + +int FONT_write(char *string, int size, int x, int y, int max_width, GXColor color) +{ + x -= (vmode->fbWidth / 2); + y -= (vmode->efbHeight / 2); + int w, ox = x; + + while (*string && (*string != '\n')) + { + w = (font_size[(u8)*string] * size) / fheight; + if ((x + w) > (ox + max_width)) return strlen(string); + DrawChar(*string, x, y, size,color); + x += w; + string++; + } + + if (*string == '\n') + { + string++; + return FONT_write(string, size, ox + (vmode->fbWidth / 2), y + size + (vmode->efbHeight / 2), max_width, color); + } + + return 0; +} + +int FONT_writeCenter(char *string, int size, int x1, int x2, int y, GXColor color) +{ + int i=0; + int w = 0; + while (string[i] && (string[i] != '\n')) + { + w += (font_size[(u8)string[i++]] * size) / fheight; + } + + if ((x1 + w) > x2) w = x2 - x1; + int x = x1 + (x2 - x1 - w - vmode->fbWidth) / 2; + y -= (vmode->efbHeight / 2); + x2 -= (vmode->fbWidth / 2); + + while (*string && (*string != '\n')) + { + w = (font_size[(u8)*string] * size) / fheight; + if ((x + w) > x2) return strlen(string); + DrawChar(*string, x, y, size,color); + x += w; + string++; + } + + if (*string == '\n') + { + string++; + return FONT_writeCenter(string, size, x1, x2 + (vmode->fbWidth / 2), y + size + (vmode->efbHeight / 2), color); + } + return 0; +} + +int FONT_alignRight(char *string, int size, int x, int y, GXColor color) +{ + int i; + int w = 0; + + x -= (vmode->fbWidth / 2); + y -= (vmode->efbHeight / 2); + + int ox = x; + + for (i=0; i ox) return strlen(string); + DrawChar(*string, x, y, size,color); + x += w; + string++; + } + return 0; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/font.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/font.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/font.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/font.h index 8b255eeaaf..425a425050 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/font.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/font.h @@ -1,49 +1,49 @@ -/***************************************************************************** - * font.c - * - * IPL font engine (using GX rendering) - * - * Copyright Eke-Eke (2009-2010) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _FONT_H -#define _FONT_H - -extern int FONT_Init(void); -extern void FONT_Shutdown(void); -extern int FONT_write(char *string, int size, int x, int y, int max_width, GXColor color); -extern int FONT_writeCenter(char *string, int size, int x1, int x2, int y, GXColor color); -extern int FONT_alignRight(char *string, int size, int x, int y, GXColor color); - -#endif +/***************************************************************************** + * font.c + * + * IPL font engine (using GX rendering) + * + * Copyright Eke-Eke (2009-2010) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _FONT_H +#define _FONT_H + +extern int FONT_Init(void); +extern void FONT_Shutdown(void); +extern int FONT_write(char *string, int size, int x, int y, int max_width, GXColor color); +extern int FONT_writeCenter(char *string, int size, int x1, int x2, int y, GXColor color); +extern int FONT_alignRight(char *string, int size, int x, int y, GXColor color); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/gui.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/gui.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/gui.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/gui.c index 21fc49065e..d08d812fc3 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/gui.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/gui.c @@ -1,1968 +1,1968 @@ -/**************************************************************************** - * gui.c - * - * generic GUI Engine (using GX rendering) - * - * Copyright Eke-Eke (2009-2010) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "gui.h" -#include "font.h" - -#ifdef HW_RVL -gx_texture *w_pointer; -#endif - -u8 SILENT = 0; - -/* message box */ -static gui_message message_box; -static lwp_t msgboxthread; - -/* background color (black) */ -static const GXColor bg_color = {0x00,0x00,0x00,0xff}; - -/****************************************************************************/ -/* Generic GUI routines */ -/*****************************************************************************/ - -/* Allocate Menu texture images data */ -void GUI_InitMenu(gui_menu *menu) -{ - int i; - gui_item *item; - gui_butn *button; - gui_image *image; - - /* background elements */ - for (i=0; imax_images; i++) - { - image = &menu->bg_images[i]; - image->texture = gxTextureOpenPNG(image->data,0); - } - - for (i=0; i<2; i++) - { - /* key helpers */ - item = menu->helpers[i]; - if (item) - item->texture = gxTextureOpenPNG(item->data,0); - - /* arrows */ - button = menu->arrows[i]; - if (button) - { - if (!button->data->texture[0]) - button->data->texture[0] = gxTextureOpenPNG(button->data->image[0],0); - if (!button->data->texture[1]) - button->data->texture[1] = gxTextureOpenPNG(button->data->image[1],0); - - /* initial state */ - button->state &= ~BUTTON_VISIBLE; - if (((i==0) && (menu->offset != 0)) || ((i==1) && (menu->offset + menu->max_buttons) < menu->max_items)) - button->state |= BUTTON_VISIBLE; - } - } - - /* menu buttons */ - for (i=0; imax_buttons; i++) - { - button = &menu->buttons[i]; - if (button->data) - { - if (!button->data->texture[0]) - button->data->texture[0] = gxTextureOpenPNG(button->data->image[0],0); - if (!button->data->texture[1]) - button->data->texture[1] = gxTextureOpenPNG(button->data->image[1],0); - } - } - - /* menu items */ - for (i=0; imax_items; i++) - { - item = &menu->items[i]; - if (item->data) - item->texture = gxTextureOpenPNG(item->data,0); - } - - /* update message box */ - message_box.parent = menu; -} - -/* Release Menu allocated memory */ -void GUI_DeleteMenu(gui_menu *menu) -{ - int i; - gui_butn *button; - gui_item *item; - gui_image *image; - - /* background elements */ - for (i=0; imax_images; i++) - { - image = &menu->bg_images[i]; - gxTextureClose(&image->texture); - } - - for (i=0; i<2; i++) - { - /* key helpers */ - item = menu->helpers[i]; - if (item) - gxTextureClose(&item->texture); - - /* arrows */ - button = menu->arrows[i]; - if (button) - { - gxTextureClose(&button->data->texture[0]); - gxTextureClose(&button->data->texture[1]); - } - } - - /* menu buttons */ - for (i=0; imax_buttons; i++) - { - button = &menu->buttons[i]; - if (button->data) - { - gxTextureClose(&button->data->texture[0]); - gxTextureClose(&button->data->texture[1]); - } - } - - /* menu items */ - for (i=0; imax_items; i++) - { - item = &menu->items[i]; - gxTextureClose(&item->texture); - } -} - -extern void gxSnapshot(void); - -/* Draw Menu */ -void GUI_DrawMenu(gui_menu *menu) -{ - int i; - gui_item *item; - gui_butn *button; - gui_image *image; - - /* background color */ - if (menu->screenshot) - { - gxClearScreen((GXColor)BLACK); - gxDrawScreenshot(menu->screenshot); - } - else - { - gxClearScreen(bg_color); - } - - /* background elements */ - for (i=0; imax_images; i++) - { - image = &menu->bg_images[i]; - if (image->state & IMAGE_VISIBLE) - { - if (image->state & IMAGE_REPEAT) - gxDrawTextureRepeat(image->texture,image->x,image->y,image->w,image->h,image->alpha); - else - gxDrawTexture(image->texture,image->x,image->y,image->w,image->h,image->alpha); - } - } - - /* menu title */ - FONT_write(menu->title, 22,10,56,640,(GXColor)WHITE); - - /* draw buttons + items */ - for (i=0; imax_buttons; i++) - { - button = &menu->buttons[i]; - - if (button->state & BUTTON_VISIBLE) - { - /* item select (text or image) */ - item = (menu->items) ? (&menu->items[menu->offset + i]) : NULL; - - /* draw button + items */ - if ((i == menu->selected) || (button->state & BUTTON_SELECTED)) - { - if (button->data) - gxDrawTexture(button->data->texture[1],button->x-4,button->y-4,button->w+8,button->h+8,255); - - if (item) - { - if (item->texture) - { - gxDrawTexture(item->texture, item->x-4,item->y-4,item->w+8,item->h+8,255); - FONT_writeCenter(item->text,18,button->x+4,item->x-4,button->y+(button->h - 36)/2+18,(GXColor)DARK_GREY); - } - else - { - FONT_writeCenter(item->text,18,item->x-4,item->x+item->w+4,button->y+(button->h-18)/2+18,(GXColor)DARK_GREY); - } - } - } - else - { - if (button->data) - gxDrawTexture(button->data->texture[0],button->x,button->y,button->w, button->h,255); - - if (item) - { - if (item->texture) - { - gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); - FONT_writeCenter(item->text,16,button->x+8,item->x,button->y+(button->h - 32)/2+16,(GXColor)DARK_GREY); - } - else - { - FONT_writeCenter(item->text,16,item->x,item->x+item->w,button->y+(button->h - 16)/2+16,(GXColor)DARK_GREY); - } - } - } - } - } - - /* draw arrow */ - for (i=0; i<2; i++) - { - button = menu->arrows[i]; - if (button) - { - if (button->state & BUTTON_VISIBLE) - { - if (menu->selected == (menu->max_buttons + i)) - gxDrawTexture(button->data->texture[1],button->x-2,button->y-2,button->w+4,button->h+4,255); - else - gxDrawTexture(button->data->texture[0],button->x,button->y,button->w, button->h,255); - } - } - } - - /* left comment */ - item = menu->helpers[0]; - if (item) - { - if (item->data && strlen(item->comment)) - { - gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); - FONT_write(item->comment,16,item->x+item->w+6,item->y+(item->h-16)/2 + 16,640,(GXColor)WHITE); - } - } - - /* right comment */ - item = menu->helpers[1]; - if (item) - { - if (item->data && strlen(item->comment)) - { - gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); - FONT_alignRight(item->comment,16,item->x-6,item->y+(item->h-16)/2+16,(GXColor)WHITE); - } - } - - if (menu->cb) - menu->cb(); -} - -/* Draw Menu with transitions effects */ -void GUI_DrawMenuFX(gui_menu *menu, u8 speed, u8 out) -{ - int i,temp,xoffset,yoffset; - int max_offset = 0; - u8 item_alpha = 255; - GXColor text_color = DARK_GREY; - gui_item *item; - gui_butn *button; - gui_image *image; - - /* find maximal offset */ - for (i=0; imax_images; i++) - { - image = &menu->bg_images[i]; - - if (image->state & IMAGE_SLIDE_LEFT) - { - temp = image->x + image->w; - if (max_offset < temp) - max_offset = temp; - } - else if (image->state & IMAGE_SLIDE_RIGHT) - { - temp = 640 - image->x; - if (max_offset < temp) - max_offset = temp; - } - - if (image->state & IMAGE_SLIDE_TOP) - { - temp = image->y + image->h; - if (max_offset < temp) - max_offset = temp; - } - else if (image->state & IMAGE_SLIDE_BOTTOM) - { - temp = 480 - image->y; - if (max_offset < temp) - max_offset = temp; - } - } - - temp = max_offset; - - /* Alpha steps */ - int alpha = 0; - int alpha_step = (255 * speed) / max_offset; - if (out) - { - alpha = 255; - alpha_step = -alpha_step; - } - - /* Let's loop until final position has been reached */ - while (temp > 0) - { - /* background color */ - if (menu->screenshot) - { - gxClearScreen((GXColor)BLACK); - if (alpha >= menu->screenshot) - gxDrawScreenshot(menu->screenshot); - else - gxDrawScreenshot(255 - alpha); - } - else - { - gxClearScreen(bg_color); - } - - /* background images */ - for (i=0; imax_images; i++) - { - image = &menu->bg_images[i]; - - /* X offset */ - if (image->state & IMAGE_SLIDE_LEFT) - xoffset = out ? (temp - max_offset) : (-temp); - else if (image->state & IMAGE_SLIDE_RIGHT) - xoffset = out ? (max_offset - temp) : (temp); - else - xoffset = 0; - - /* Y offset */ - if (image->state & IMAGE_SLIDE_TOP) - yoffset = out ? (temp - max_offset) : (-temp); - else if (image->state & IMAGE_SLIDE_BOTTOM) - yoffset = out ? (max_offset - temp) : (temp); - else - yoffset = 0; - - /* draw image */ - if ((image->state & IMAGE_FADE) && ((out && (image->alpha > alpha)) || (!out && (image->alpha < alpha)))) - { - /* FADE In-Out */ - if (image->state & IMAGE_VISIBLE) - { - if (image->state & IMAGE_REPEAT) - gxDrawTextureRepeat(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,alpha); - else - gxDrawTexture(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,alpha); - } - } - else - { - if (image->state & IMAGE_VISIBLE) - { - if (image->state & IMAGE_REPEAT) - gxDrawTextureRepeat(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,image->alpha); - else - gxDrawTexture(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,image->alpha); - } - } - } - - /* menu title */ - if ((menu->bg_images[2].state & IMAGE_SLIDE_TOP) || (menu->bg_images[3].state & IMAGE_SLIDE_TOP)) - FONT_write(menu->title, 22,10,out ? (56 + temp - max_offset) : (56 - temp),640,(GXColor)WHITE); - else - FONT_write(menu->title, 22,10,56,640,(GXColor)WHITE); - - /* draw buttons + items */ - for (i=0; imax_buttons; i++) - { - button = &menu->buttons[i]; - - if (button->state & BUTTON_VISIBLE) - { - /* X offset */ - if (button->state & BUTTON_SLIDE_LEFT) - xoffset = out ? (temp - max_offset) : (-temp); - else if (button->state & BUTTON_SLIDE_RIGHT) - xoffset = out ? (max_offset - temp) : (temp); - else - xoffset = 0; - - /* Y offset */ - if (button->state & BUTTON_SLIDE_TOP) - yoffset = out ? (temp - max_offset) : (-temp); - else if (button->state & BUTTON_SLIDE_BOTTOM) - yoffset = out ? (max_offset - temp) : (temp); - else - yoffset = 0; - - /* Alpha transparency */ - if (button->state & BUTTON_FADE) - { - item_alpha = alpha; - text_color.a = alpha; - } - else - { - item_alpha = 255; - text_color.a = 255; - } - - /* item select (text or image) */ - item = (menu->items) ? (&menu->items[menu->offset + i]) : NULL; - - /* draw button + items */ - if ((i == menu->selected) || (button->state & BUTTON_SELECTED)) - { - if (button->data) - gxDrawTexture(button->data->texture[1],button->x+xoffset-4,button->y+yoffset-4,button->w+8,button->h+8,item_alpha); - - if (item) - { - if (item->texture) - { - gxDrawTexture(item->texture, item->x+xoffset-4,item->y+yoffset-4,item->w+8,item->h+8,item_alpha); - FONT_writeCenter(item->text,18,button->x+xoffset+4,item->x+xoffset-4,button->y+yoffset+(button->h - 36)/2+18,text_color); - } - else - { - FONT_writeCenter(item->text,18,item->x+xoffset+2,item->x+item->w+xoffset+2,button->y+yoffset+(button->h-18)/2+18,text_color); - } - } - } - else - { - if (button->data) - gxDrawTexture(button->data->texture[0],button->x+xoffset,button->y+yoffset,button->w, button->h,item_alpha); - - if (item) - { - if (item->texture) - { - gxDrawTexture(item->texture,item->x+xoffset,item->y+yoffset,item->w,item->h,item_alpha); - FONT_writeCenter(item->text,16,button->x+xoffset+8,item->x+xoffset,button->y+yoffset+(button->h - 32)/2+16,text_color); - } - else - { - FONT_writeCenter(item->text,16,item->x+xoffset,item->x+item->w+xoffset,button->y+yoffset+(button->h - 16)/2+16,text_color); - } - } - } - } - } - - /* draw arrow */ - for (i=0; i<2; i++) - { - button = menu->arrows[i]; - if (button) - { - if (button->state & BUTTON_VISIBLE) - { - if (menu->selected == (menu->max_buttons + i)) - gxDrawTexture(button->data->texture[1],button->x-2,button->y-2,button->w+4,button->h+4,255); - else - gxDrawTexture(button->data->texture[0],button->x,button->y,button->w, button->h,255); - } - } - } - - if (!(menu->bg_images[3].state & IMAGE_SLIDE_BOTTOM) && !(menu->bg_images[4].state & IMAGE_SLIDE_BOTTOM)) - { - /* left comment */ - item = menu->helpers[0]; - if (item) - { - if (item->data && strlen(item->comment)) - { - gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); - FONT_write(item->comment,16,item->x+item->w+6,item->y+(item->h-16)/2 + 16,640,(GXColor)WHITE); - } - } - - /* right comment */ - item = menu->helpers[1]; - if (item) - { - if (item->data && strlen(item->comment)) - { - gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); - FONT_alignRight(item->comment,16,item->x-6,item->y+(item->h-16)/2+16,(GXColor)WHITE); - } - } - } - - if (menu->cb) - menu->cb(); - - /* update offset */ - temp -= speed; - - /* update alpha */ - alpha += alpha_step; - if (alpha > 255) - alpha = 255; - else if (alpha < 0) - alpha = 0; - - - /* copy EFB to XFB */ - gxSetScreen(); - } - - /* final position */ - if (!out) - { - GUI_DrawMenu(menu); - gxSetScreen(); - } - else if (menu->screenshot) - { - gxClearScreen((GXColor)BLACK); - gxDrawScreenshot(255); - gxSetScreen(); - } -} - -/* Basic menu title slide effect */ -void GUI_SlideMenuTitle(gui_menu *m, int title_offset) -{ -#ifdef HW_RVL - gui_butn *button; - int i,x,y; -#endif - - char title[64]; - strcpy(title,m->title); - - while (title_offset > 0) - { - /* update title */ - strcpy(m->title,title+title_offset); - m->title[strlen(title)-title_offset-1] = 0; - - /* draw menu */ - GUI_DrawMenu(m); - -#ifdef HW_RVL - /* keep pointer active */ - if (m_input.ir.valid) - { - /* get cursor position */ - x = m_input.ir.x; - y = m_input.ir.y; - - /* draw wiimote pointer */ - gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); - - /* check for valid buttons */ - m->selected = m->max_buttons + 2; - for (i=0; imax_buttons; i++) - { - button = &m->buttons[i]; - if ((button->state & BUTTON_ACTIVE)&&(x>=button->x)&&(x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) - { - m->selected = i; - break; - } - } - - for (i=0; i<2; i++) - { - button = m->arrows[i]; - if (button) - { - if (button->state & BUTTON_VISIBLE) - { - if ((x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) - { - m->selected = m->max_buttons + i; - break; - } - } - } - } - } -#endif - gxSetScreen(); - usleep(6000); - title_offset--; - } - strcpy(m->title,title); -} - -/* Update current menu */ -int GUI_UpdateMenu(gui_menu *menu) -{ - u16 p; - int ret = 0; - int selected = menu->selected; - int max_items = menu->max_items; - int max_buttons = menu->max_buttons; - gui_butn *button; - -#ifdef HW_RVL - if (Shutdown) - { - GUI_DeleteMenu(menu); - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_POWEROFF, 0, 0); - } - else if (m_input.ir.valid) - { - /* get cursor position */ - int x = m_input.ir.x; - int y = m_input.ir.y; - - /* draw wiimote pointer */ - gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); - - /* check for valid buttons */ - selected = max_buttons + 2; - int i; - for (i=0; ibuttons[i]; - if ((button->state & BUTTON_ACTIVE) && (button->state & BUTTON_VISIBLE)) - { - if((x>=button->x)&&(x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) - { - selected = i; - break; - } - } - } - - for (i=0; i<2; i++) - { - button = menu->arrows[i]; - if (button) - { - if ((button->state & BUTTON_ACTIVE) && (button->state & BUTTON_VISIBLE)) - { - if ((x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) - { - selected = max_buttons + i; - break; - } - } - } - } - } - else - { - /* reinitialize selection */ - if (selected >= menu->max_buttons) - { - selected = 0; - while ((selected < (menu->max_buttons + 2)) && - (!(menu->buttons[selected].state & BUTTON_ACTIVE) || - !(menu->buttons[selected].state & BUTTON_VISIBLE))) - selected++; - } - } -#endif - - /* update screen */ - gxSetScreen(); - - /* update menu */ - p = m_input.keys; - - if (selected < max_buttons) - { - button = &menu->buttons[selected]; - if (p & PAD_BUTTON_UP) - { - selected -= button->shift[0]; - if (selected < 0) - { - selected = 0; - if (menu->offset) - menu->offset --; - } - } - else if (p & PAD_BUTTON_DOWN) - { - selected += button->shift[1]; - if (selected >= max_buttons) - { - selected = max_buttons - 1; - if ((menu->offset + selected) < (max_items - 1)) - menu->offset ++; - } - } - else if (p & PAD_BUTTON_LEFT) - { - selected -= button->shift[2]; - if (selected < 0) - { - selected = 0; - if (menu->offset) - menu->offset --; - } - } - else if (p & PAD_BUTTON_RIGHT) - { - selected += button->shift[3]; - if (selected >= max_buttons) - { - selected = max_buttons - 1; - if ((menu->offset + selected) < (max_items - 1)) - menu->offset ++; - } - } - } - - if (p & PAD_BUTTON_A) - { - if (selected < max_buttons) - ret = 1; /* menu clicked */ - else if (selected == max_buttons) - menu->offset --; /* up arrow */ - else if (selected == (max_buttons+1)) - menu->offset ++; /* down arrow */ - } - else if ((p & PAD_BUTTON_B) || (p & PAD_TRIGGER_Z)) - { - /* quit menu */ - ret = -1; - } - - /* selected item has changed ? */ - if (menu->selected != selected) - { - if (selected < max_buttons) - { - /* sound fx */ - button = &menu->buttons[selected]; - if (button->state & BUTTON_OVER_SFX) - { - ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, - ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); - } - } - else if (selected < (max_buttons + 2)) - { - /* sound fx */ - button = menu->arrows[selected-max_buttons]; - if (button->state & BUTTON_OVER_SFX) - { - ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, - ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); - } - } - - /* update selection */ - menu->selected = selected; - } - - /* update helper comment */ - if (menu->helpers[1]) - { - if ((menu->offset + selected) < max_items) - { - gui_item *item = &menu->items[menu->offset + selected]; - strcpy(menu->helpers[1]->comment,item->comment); - } - else - { - strcpy(menu->helpers[1]->comment,""); - } - } - - if (ret > 0) - { - if (selected < max_buttons) - { - /* sound fx */ - button = &menu->buttons[selected]; - if (button->state & BUTTON_SELECT_SFX) - { - ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_select_pcm,button_select_pcm_size, - ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); - } - } - } - - return ret; -} - -/* Generic routine to render & update menus */ -int GUI_RunMenu(gui_menu *menu) -{ - int update = 0; - - /* update menu */ - while (!update) - { - GUI_DrawMenu(menu); - update = GUI_UpdateMenu(menu); - - /* update arrows buttons status (items list) */ - if (menu->arrows[0]) - { - if (menu->offset > 0) - menu->arrows[0]->state |= BUTTON_VISIBLE; - else - menu->arrows[0]->state &= ~BUTTON_VISIBLE; - } - - if (menu->arrows[1]) - { - if ((menu->offset + menu->max_buttons) < menu->max_items) - menu->arrows[1]->state |= BUTTON_VISIBLE; - else - menu->arrows[1]->state &= ~BUTTON_VISIBLE; - } - } - - if (update == 2) - return (-2-menu->offset-menu->selected); - else if (update == 1) - return (menu->offset + menu->selected); - else - return -1; - } - -/* Text Window */ -void GUI_TextWindow(gui_menu *parent, char *title, char items[][64], u8 nb_items, u8 fontsize) -{ - int i, quit = 0; - -#ifdef HW_RVL - int x,y; -#endif - - /* initialize window */ - gx_texture *window = gxTextureOpenPNG(Frame_s1_png,0); - gx_texture *top = gxTextureOpenPNG(Frame_s1_title_png,0); - - /* window position */ - int xwindow = (640 - window->width) /2; - int ywindow = (480 - window->height)/2; - - /* text position */ - int ypos = ywindow + top->height + (window->height - top->height - fontsize*nb_items) / 2 + fontsize/2; - - /* disable helper comment */ - const u8 *data = NULL; - if (parent->helpers[1]) - { - data = parent->helpers[1]->data; - parent->helpers[1]->data = NULL; - } - - /* slide in */ - int yoffset = ywindow + window->height; - while (yoffset > 0) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); - gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); - - /* draw title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* draw text */ - for (i=0; iwidth,ypos+i*fontsize-yoffset,(GXColor)WHITE); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset -= 60; - } - - /* draw menu + text window */ - while (quit == 0) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow,window->width,window->height,230); - gxDrawTexture(top,xwindow,ywindow,top->width,top->height,255); - - /* draw title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20,(GXColor)WHITE); - - /* draw text */ - for (i=0; iwidth,ypos+i*fontsize,(GXColor)WHITE); - } - -#ifdef HW_RVL - if (Shutdown) - { - gxTextureClose(&window); - gxTextureClose(&top); - gxTextureClose(&w_pointer); - GUI_DeleteMenu(parent); - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_POWEROFF, 0, 0); - } - else if (m_input.ir.valid) - { - /* get cursor position */ - x = m_input.ir.x; - y = m_input.ir.y; - - /* draw wiimote pointer */ - gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); - } -#endif - - /* update screen */ - gxSetScreen(); - - /* wait for exit buttons */ - if (m_input.keys) - quit = 1; - } - - /* reset initial vertical offset */ - - /* slide out */ - yoffset = 0; - while (yoffset < (ywindow + window->height)) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); - gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); - - /* draw title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* draw text */ - for (i=0; iwidth,ypos+i*fontsize-yoffset,(GXColor)WHITE); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset += 60; - } - - /* restore helper comment */ - if (parent->helpers[1]) - parent->helpers[1]->data = data; - - /* final position */ - GUI_DrawMenu(parent); - gxSetScreen(); - - /* close textures */ - gxTextureClose(&window); - gxTextureClose(&top); -} - -/* Option Window (returns selected item) */ -int GUI_OptionWindow(gui_menu *parent, char *title, char *items[], u8 nb_items) -{ - int i, ret, quit = 0; - int old, selected = 0; - s16 p; - butn_data button; - -#ifdef HW_RVL - int x,y; -#endif - - /* initialize buttons data */ - button.texture[0] = gxTextureOpenPNG(Button_text_png,0); - button.texture[1] = gxTextureOpenPNG(Button_text_over_png,0); - - /* initialize texture window */ - gx_texture *window = gxTextureOpenPNG(Frame_s1_png,0); - gx_texture *top = gxTextureOpenPNG(Frame_s1_title_png,0); - - /* get initial positions */ - int w = button.texture[0]->width; - int h = button.texture[0]->height; - int xwindow = (640 - window->width)/2; - int ywindow = (480 - window->height)/2; - int xpos = xwindow + (window->width - w)/2; - int ypos = (window->height - top->height - (h*nb_items) - (nb_items-1)*20)/2; - ypos = ypos + ywindow + top->height; - - /* disable helper comment */ - const u8 *data = NULL; - if (parent->helpers[1]) - { - data = parent->helpers[1]->data; - parent->helpers[1]->data = 0; - } - - /* slide in */ - int yoffset = ywindow + window->height; - while (yoffset > 0) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); - gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); - - /* draw title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* draw buttons + text */ - for (i=0; iwidth,window->height,230); - gxDrawTexture(top,xwindow,ywindow,top->width,top->height,255); - - /* draw title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20,(GXColor)WHITE); - - /* draw buttons + text */ - for (i=0; iwidth/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); - - /* check for valid buttons */ - selected = -1; - for (i=0; i=xpos)&&(x<=(xpos+w))&&(y>=ypos+i*(20 + h))&&(y<=(ypos+i*(20+h)+h))) - { - selected = i; - break; - } - } - } - else - { - /* reinitialize selection */ - if (selected == -1) - selected = 0; - } -#endif - - /* update screen */ - gxSetScreen(); - - /* update selection */ - if (p & PAD_BUTTON_UP) - { - if (selected > 0) - selected --; - } - else if (p & PAD_BUTTON_DOWN) - { - if (selected < (nb_items -1)) - selected ++; - } - - /* sound fx */ - if (selected != old) - { - if (selected >= 0) - { - ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, - ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); - } - } - - if (p & PAD_BUTTON_A) - { - if (selected >= 0) - { - quit = 1; - ret = selected; - } - } - else if (p & PAD_BUTTON_B) - { - quit = 1; - ret = -1; - } - } - - /* slide out */ - yoffset = 0; - while (yoffset < (ywindow + window->height)) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window + header */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); - gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); - - /* draw title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* draw buttons + text */ - for (i=0; ihelpers[1]) - parent->helpers[1]->data = data; - - /* final position */ - GUI_DrawMenu(parent); - gxSetScreen(); - - /* close textures */ - gxTextureClose(&window); - gxTextureClose(&top); - gxTextureClose(&button.texture[0]); - gxTextureClose(&button.texture[1]); - - return ret; -} - -/* Option Box */ -void GUI_OptionBox(gui_menu *parent, optioncallback cb, char *title, void *option, float step, float min, float max, u8 type) -{ - gx_texture *arrow[2]; - arrow[0] = gxTextureOpenPNG(Button_arrow_png,0); - arrow[1] = gxTextureOpenPNG(Button_arrow_over_png,0); - gx_texture *window = gxTextureOpenPNG(Frame_s2_png,0); - gx_texture *top = gxTextureOpenPNG(Frame_s2_title_png,0); - - /* window position */ - int xwindow = 166; - int ywindow = 160; - - /* arrows position */ - int xleft = 206; - int xright = 392; - int yleft = 238; - int yright = 238; - - /* disable action button helper */ - if (parent->helpers[1]) - parent->helpers[1]->data = 0; - - /* slide in */ - char msg[16]; - int yoffset = ywindow + window->height; - while (yoffset > 0) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); - gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); - - /* display title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset -= 60; - } - - /* display option box */ - int quit = 0; - int modified = 0; - int selected = -1; - s16 p; -#ifdef HW_RVL - int x,y; -#endif - - while (!quit) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow,window->width,window->height,225); - gxDrawTexture(top,xwindow,ywindow,top->width,top->height,255); - - /* display title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20,(GXColor)WHITE); - - /* option type */ - if (type) - { - /* integer type */ - if (*(s16 *)option < 0) - sprintf(msg,"-%d",abs(*(s16 *)option)); - else - sprintf(msg,"%d",abs(*(s16 *)option)); - } - else - { - /* float type */ - if (*(float *)option < 0.0) - sprintf(msg,"-%1.2f",fabs(*(float *)option)); - else - sprintf(msg,"%1.2f",fabs(*(float *)option)); - } - - /* draw option text */ - FONT_writeCenter(msg,24,xwindow,xwindow+window->width,272,(GXColor)WHITE); - - /* update inputs */ - p = m_input.keys; - - /* draw buttons */ - if (selected < 0) - { - /* nothing selected */ - gxDrawTexture(arrow[0],xleft,yleft,arrow[0]->width,arrow[0]->height,255); - gxDrawTextureRotate(arrow[0],xright,yright,arrow[0]->width,arrow[0]->height,180.0,255); - } - -#ifdef HW_RVL - else if (selected) - { - /* right button selected */ - gxDrawTexture(arrow[0],xleft,yleft,arrow[0]->width,arrow[0]->height,255); - gxDrawTextureRotate(arrow[1],xright-4,yright-4,arrow[1]->width+8,arrow[1]->height+8,180.0,255); - } - else - { - /* left button selected */ - gxDrawTexture(arrow[1],xleft-4,yleft-4,arrow[1]->width+8,arrow[1]->height+8,255); - gxDrawTextureRotate(arrow[0],xright,yright,arrow[0]->width,arrow[0]->height,180.0,255); - } - - selected = -1; - if (Shutdown) - { - gxTextureClose(&arrow[0]); - gxTextureClose(&arrow[1]); - gxTextureClose(&window); - gxTextureClose(&top); - gxTextureClose(&w_pointer); - GUI_DeleteMenu(parent); - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_POWEROFF, 0, 0); - } - else if (m_input.ir.valid) - { - /* get cursor position */ - x = m_input.ir.x; - y = m_input.ir.y; - - /* draw wiimote pointer */ - gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); - - /* check for valid buttons */ - if ((x>=xleft)&&(x<=(xleft+arrow[0]->width))&&(y>=yleft)&&(y<=(yleft+arrow[0]->height))) - { - selected = 0; - if (p & PAD_BUTTON_A) - p |= PAD_BUTTON_LEFT; - } - else if ((x>=xright)&&(x<=(xright+arrow[0]->width))&&(y>=yright)&&(y<=(yright+arrow[0]->height))) - { - selected = 1; - if (p & PAD_BUTTON_A) - p |= PAD_BUTTON_RIGHT; - } - } -#endif - - /* update screen */ - gxSetScreen(); - - /* check input */ - if (p&PAD_BUTTON_LEFT) - { - /* decrement option value */ - if (type) - { - /* integer type */ - *(s16 *)option -= (s16)step; - if (*(s16 *)option < (s16)min) - *(s16 *)option = (s16)max; - } - else - { - /* float type */ - *(float *)option -= step; - if (*(float *)option < min) - *(float *)option = max; - } - - modified = 1; - } - else if (p&PAD_BUTTON_RIGHT) - { - /* increment option value */ - if (type) - { - /* integer type */ - *(s16 *)option += (s16)step; - if (*(s16 *)option > (s16)max) - *(s16 *)option = (s16)min; - } - else - { - /* float type */ - *(float *)option += step; - if (*(float *)option > max) - *(float *)option = min; - } - - modified = 1; - } - else if (p & PAD_BUTTON_B) - { - quit = 1; - } - - if (modified) - { - modified = 0; - - /* play sound effect */ - ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, - ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); - - /* option callback */ - if (cb) - cb(); - } - } - - /* slide out */ - yoffset = 0; ; - while (yoffset < (ywindow + window->height)) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); - gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); - - /* display title */ - FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset += 60; - } - - /* restore action button helper */ - if (parent->helpers[1]) - parent->helpers[1]->data = Key_A_png; - - /* final position */ - GUI_DrawMenu(parent); - gxSetScreen(); - - /* close textures */ - gxTextureClose(&arrow[0]); - gxTextureClose(&arrow[1]); - gxTextureClose(&window); - gxTextureClose(&top); -} - -/* Option Box with two parameters */ -void GUI_OptionBox2(gui_menu *parent, char *text_1, char *text_2, s16 *option_1, s16 *option_2, s16 step, s16 min, s16 max) -{ - gx_texture *arrow[2]; - arrow[0] = gxTextureOpenPNG(Button_arrow_png,0); - arrow[1] = gxTextureOpenPNG(Button_arrow_over_png,0); - gx_texture *window = gxTextureOpenPNG(Frame_s2_png,0); - - /* window position */ - int xwindow = 166; - int ywindow = 160; - - /* arrows position */ - int arrow_pos[4][2] = - { - {144,218}, - {452,218}, - {298,138}, - {298,298} - }; - - /* disable action button helper */ - if (parent->helpers[1]) - parent->helpers[1]->data = 0; - - /* slide in */ - char msg[16]; - int yoffset = ywindow + window->height; - while (yoffset > 0) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset -= 60; - } - - /* display option box */ - int quit = 0; - int modified = 0; - s16 p; -#ifdef HW_RVL - int selected = -1; - int i,x,y; -#endif - - while (!quit) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow,window->width,window->height,225); - - /* draw options text */ - if (*option_1 < 0) - sprintf(msg,"%s: -%02d",text_1,abs(*option_1)); - else - sprintf(msg,"%s: +%02d",text_1,abs(*option_1)); - FONT_writeCenter(msg,24,xwindow,xwindow+window->width,240,(GXColor)WHITE); - if (*option_2 < 0) - sprintf(msg,"%s: -%02d",text_2,abs(*option_2)); - else - sprintf(msg,"%s: +%02d",text_2,abs(*option_2)); - FONT_writeCenter(msg,24,xwindow,xwindow+window->width,264,(GXColor)WHITE); - - /* update inputs */ - p = m_input.keys; - - /* draw buttons */ -#ifdef HW_RVL - switch (selected) - { - case 0: /* left button */ - gxDrawTexture(arrow[1],arrow_pos[0][0]-4,arrow_pos[0][1]-4,arrow[0]->width+8,arrow[0]->height+8,255); - gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); - if (p & PAD_BUTTON_A) p |= PAD_BUTTON_LEFT; - break; - - case 1: /* right button */ - gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); - gxDrawTextureRotate(arrow[1],arrow_pos[1][0]-4,arrow_pos[1][1]-4,arrow[0]->width+8,arrow[0]->height+8,180.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); - if (p & PAD_BUTTON_A) p |= PAD_BUTTON_RIGHT; - break; - - case 2: /* up button */ - gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); - gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); - gxDrawTextureRotate(arrow[1],arrow_pos[2][0]-4,arrow_pos[2][1]-4,arrow[0]->width+8,arrow[0]->height+8,90.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); - if (p & PAD_BUTTON_A) p |= PAD_BUTTON_UP; - break; - - case 3: /* down button */ - gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); - gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); - gxDrawTextureRotate(arrow[1],arrow_pos[3][0]-4,arrow_pos[3][1]-4,arrow[0]->width+8,arrow[0]->height+8,270.0,255); - if (p & PAD_BUTTON_A) p |= PAD_BUTTON_DOWN; - break; - - default: /* nothing selected */ - gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); - gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); - break; - } - - if (Shutdown) - { - gxTextureClose(&arrow[0]); - gxTextureClose(&arrow[1]); - gxTextureClose(&window); - gxTextureClose(&w_pointer); - GUI_DeleteMenu(parent); - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_POWEROFF, 0, 0); - } - - /* update selection */ - selected = -1; - if (m_input.ir.valid) - { - /* get cursor position */ - x = m_input.ir.x; - y = m_input.ir.y; - - /* draw wiimote pointer */ - gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); - - /* check for valid buttons */ - for (i=0; i<4; i++) - { - if ((x>=arrow_pos[i][0])&&(x<=(arrow_pos[i][0]+arrow[0]->width))&&(y>=arrow_pos[i][1])&&(y<=(arrow_pos[i][1]+arrow[0]->height))) - selected = i; - } - } -#else - gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); - gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); - gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); -#endif - - /* update screen */ - gxSetScreen(); - - if (p&PAD_BUTTON_LEFT) - { - /* decrement option 1 value */ - *option_1 -= step; - if (*option_1 < min) - *option_1 = max; - modified = 1; - } - else if (p&PAD_BUTTON_RIGHT) - { - /* decrement option 1 value */ - *option_1 += step; - if (*option_1 > max) - *option_1 = min; - modified = 1; - } - else if (p&PAD_BUTTON_UP) - { - /* decrement option 2 value */ - *option_2 -= step; - if (*option_2 < min) - *option_2 = max; - modified = 1; - } - else if (p&PAD_BUTTON_DOWN) - { - /* increment option 2 value */ - *option_2 += step; - if (*option_2 > max) - *option_2 = min; - modified = 1; - } - else if (p & PAD_BUTTON_B) - { - quit = 1; - } - - if (modified) - { - modified = 0; - /* play sound effect */ - ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, - ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); - } - } - - /* slide out */ - yoffset = 0; ; - while (yoffset < (ywindow + window->height)) - { - /* draw parent menu */ - GUI_DrawMenu(parent); - - /* draw window */ - gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset += 60; - } - - /* restore action button helper */ - if (parent->helpers[1]) - parent->helpers[1]->data = Key_A_png; - - /* final position */ - GUI_DrawMenu(parent); - gxSetScreen(); - - /* close textures */ - gxTextureClose(&arrow[0]); - gxTextureClose(&arrow[1]); - gxTextureClose(&window); -} - -/* Interactive Message Box */ -/* Message Box displays a message until a specific action is completed */ - -/* Message Box LWP Thread */ -static void *MsgBox_Thread(gui_message *message_box) -{ - while (message_box->refresh) - { - /* draw parent menu */ - if (message_box->parent) - { - GUI_DrawMenu(message_box->parent); - } - else - { - gxClearScreen(bg_color); - } - - /* draw window */ - gxDrawTexture(message_box->window,166,160,message_box->window->width,message_box->window->height,230); - gxDrawTexture(message_box->top,166,160,message_box->top->width,message_box->top->height,255); - - /* draw title */ - if (message_box->title) - FONT_writeCenter(message_box->title,20,166,166+message_box->window->width,160+(message_box->top->height-20)/2+20,(GXColor)WHITE); - - /* draw box message */ - if (message_box->msg) - FONT_writeCenter(message_box->msg,18,166,166+message_box->window->width,248,(GXColor)WHITE); - - /* draw throbber */ - if (message_box->throbber) - gxDrawTextureRotate(message_box->throbber,166+(message_box->window->width-message_box->throbber->width)/2,160+message_box->window->height-message_box->throbber->height-20,message_box->throbber->width,message_box->throbber->height,(message_box->progress * 360.0) / 100.0, 255); - - /* draw exit message */ - if (message_box->buttonA) - { - FONT_writeCenter("Press to continue.",18,166,166+message_box->window->width,248+22,(GXColor)WHITE); - gxDrawTexture(message_box->buttonA, 166+116, 248+4+(18-message_box->buttonA->height)/2,message_box->buttonA->width, message_box->buttonA->height,255); - } - - /* update display */ - gxSetScreen(); - - /* update progression */ - message_box->progress++; - if (message_box->progress > 100) - message_box->progress = 0; - usleep(10); - } - - return 0; -} - -/* update current Message Box */ -void GUI_MsgBoxUpdate(char *title, char *msg) -{ - if (title) - strncpy(message_box.title,title,64); - if (msg) - strncpy(message_box.msg,msg,64); -} - -/* setup current Message Box */ -void GUI_MsgBoxOpen(char *title, char *msg, bool throbber) -{ - if (SILENT) - return; - - /* update text */ - GUI_MsgBoxUpdate(title,msg); - - /* ensure we are not already running */ - if (!message_box.refresh) - { - /* initialize default textures */ - message_box.window = gxTextureOpenPNG(Frame_s2_png,0); - message_box.top = gxTextureOpenPNG(Frame_s2_title_png,0); - if (throbber) - message_box.throbber = gxTextureOpenPNG(Frame_throbber_png,0); - - /* window position */ - int xwindow = 166; - int ywindow = 160; - int ypos = 248; - - /* disable helper comments */ - if (message_box.parent) - { - if (message_box.parent->helpers[0]) - message_box.parent->helpers[0]->data = 0; - if (message_box.parent->helpers[1]) - message_box.parent->helpers[1]->data = 0; - } - - /* slide in */ - int yoffset = ywindow + message_box.window->height; - while (yoffset > 0) - { - /* draw parent menu */ - if (message_box.parent) - { - GUI_DrawMenu(message_box.parent); - } - else - { - gxClearScreen(bg_color); - } - - /* draw window */ - gxDrawTexture(message_box.window,xwindow,ywindow-yoffset,message_box.window->width,message_box.window->height,230); - gxDrawTexture(message_box.top,xwindow,ywindow-yoffset,message_box.top->width,message_box.top->height,255); - - /* draw title */ - if (title) - FONT_writeCenter(title,20,xwindow,xwindow+message_box.window->width,ywindow+(message_box.top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* draw box message */ - if (msg) - FONT_writeCenter(msg,18,xwindow,xwindow+message_box.window->width,ypos-yoffset,(GXColor)WHITE); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset -= 60; - } - - /* create LWP thread for MessageBox refresh */ - message_box.refresh = TRUE; - LWP_CreateThread (&msgboxthread, (void *)MsgBox_Thread, &message_box, NULL, 0, 70); - } -} - -/* Close current messagebox */ -void GUI_MsgBoxClose(void) -{ - if (message_box.refresh) - { - /* suspend MessageBox refresh */ - message_box.refresh = FALSE; - LWP_JoinThread(msgboxthread, NULL); - - /* window position */ - int xwindow = 166; - int ywindow = 160; - int ypos = 248; - - /* slide out */ - int yoffset = 0; - while (yoffset < (ywindow + message_box.window->height)) - { - /* draw parent menu */ - if (message_box.parent) - { - GUI_DrawMenu(message_box.parent); - } - else - { - gxClearScreen(bg_color); - } - - /* draw window */ - gxDrawTexture(message_box.window,xwindow,ywindow-yoffset,message_box.window->width,message_box.window->height,230); - gxDrawTexture(message_box.top,xwindow,ywindow-yoffset,message_box.top->width,message_box.top->height,255); - - /* draw title */ - if (message_box.title) - FONT_writeCenter(message_box.title,20,xwindow,xwindow+message_box.window->width,ywindow+(message_box.top->height-20)/2+20-yoffset,(GXColor)WHITE); - - /* draw text */ - if (message_box.msg) - FONT_writeCenter(message_box.msg,18,xwindow,xwindow+message_box.window->width,ypos-yoffset,(GXColor)WHITE); - - /* update display */ - gxSetScreen(); - - /* slide speed */ - yoffset += 60; - } - - if (message_box.parent) - { - /* restore helper comment */ - if (message_box.parent->helpers[0]) - message_box.parent->helpers[0]->data = Key_B_png; - if (message_box.parent->helpers[1]) - message_box.parent->helpers[1]->data = Key_A_png; - - /* final position */ - GUI_DrawMenu(message_box.parent); - } - else - { - gxClearScreen(bg_color); - } - - gxSetScreen(); - - /* clear all textures */ - gxTextureClose(&message_box.window); - gxTextureClose(&message_box.top); - gxTextureClose(&message_box.buttonA); - gxTextureClose(&message_box.throbber); - } -} - -void GUI_WaitPrompt(char *title, char *msg) -{ - if (SILENT) - return; - - /* clear unused texture */ - gxTextureClose(&message_box.throbber); - - /* open or update message box */ - GUI_MsgBoxOpen(title, msg, 0); - - /* allocate texture */ - message_box.buttonA = gxTextureOpenPNG(Key_A_png,0); - - /* wait for button A */ - while (m_input.keys & PAD_BUTTON_A) - VIDEO_WaitVSync(); - while (!(m_input.keys & PAD_BUTTON_A)) - VIDEO_WaitVSync(); - - /* always close message box */ - GUI_MsgBoxClose(); -} - -/* Basic Fading */ -void GUI_FadeOut() -{ - int alpha = 0; - while (alpha < 256) - { - gxDrawRectangle(0, 0, 640, 480, alpha, (GXColor)BLACK); - gxSetScreen(); - alpha +=3; - } -} +/**************************************************************************** + * gui.c + * + * generic GUI Engine (using GX rendering) + * + * Copyright Eke-Eke (2009-2010) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "gui.h" +#include "font.h" + +#ifdef HW_RVL +gx_texture *w_pointer; +#endif + +u8 SILENT = 0; + +/* message box */ +static gui_message message_box; +static lwp_t msgboxthread; + +/* background color (black) */ +static const GXColor bg_color = {0x00,0x00,0x00,0xff}; + +/****************************************************************************/ +/* Generic GUI routines */ +/*****************************************************************************/ + +/* Allocate Menu texture images data */ +void GUI_InitMenu(gui_menu *menu) +{ + int i; + gui_item *item; + gui_butn *button; + gui_image *image; + + /* background elements */ + for (i=0; imax_images; i++) + { + image = &menu->bg_images[i]; + image->texture = gxTextureOpenPNG(image->data,0); + } + + for (i=0; i<2; i++) + { + /* key helpers */ + item = menu->helpers[i]; + if (item) + item->texture = gxTextureOpenPNG(item->data,0); + + /* arrows */ + button = menu->arrows[i]; + if (button) + { + if (!button->data->texture[0]) + button->data->texture[0] = gxTextureOpenPNG(button->data->image[0],0); + if (!button->data->texture[1]) + button->data->texture[1] = gxTextureOpenPNG(button->data->image[1],0); + + /* initial state */ + button->state &= ~BUTTON_VISIBLE; + if (((i==0) && (menu->offset != 0)) || ((i==1) && (menu->offset + menu->max_buttons) < menu->max_items)) + button->state |= BUTTON_VISIBLE; + } + } + + /* menu buttons */ + for (i=0; imax_buttons; i++) + { + button = &menu->buttons[i]; + if (button->data) + { + if (!button->data->texture[0]) + button->data->texture[0] = gxTextureOpenPNG(button->data->image[0],0); + if (!button->data->texture[1]) + button->data->texture[1] = gxTextureOpenPNG(button->data->image[1],0); + } + } + + /* menu items */ + for (i=0; imax_items; i++) + { + item = &menu->items[i]; + if (item->data) + item->texture = gxTextureOpenPNG(item->data,0); + } + + /* update message box */ + message_box.parent = menu; +} + +/* Release Menu allocated memory */ +void GUI_DeleteMenu(gui_menu *menu) +{ + int i; + gui_butn *button; + gui_item *item; + gui_image *image; + + /* background elements */ + for (i=0; imax_images; i++) + { + image = &menu->bg_images[i]; + gxTextureClose(&image->texture); + } + + for (i=0; i<2; i++) + { + /* key helpers */ + item = menu->helpers[i]; + if (item) + gxTextureClose(&item->texture); + + /* arrows */ + button = menu->arrows[i]; + if (button) + { + gxTextureClose(&button->data->texture[0]); + gxTextureClose(&button->data->texture[1]); + } + } + + /* menu buttons */ + for (i=0; imax_buttons; i++) + { + button = &menu->buttons[i]; + if (button->data) + { + gxTextureClose(&button->data->texture[0]); + gxTextureClose(&button->data->texture[1]); + } + } + + /* menu items */ + for (i=0; imax_items; i++) + { + item = &menu->items[i]; + gxTextureClose(&item->texture); + } +} + +extern void gxSnapshot(void); + +/* Draw Menu */ +void GUI_DrawMenu(gui_menu *menu) +{ + int i; + gui_item *item; + gui_butn *button; + gui_image *image; + + /* background color */ + if (menu->screenshot) + { + gxClearScreen((GXColor)BLACK); + gxDrawScreenshot(menu->screenshot); + } + else + { + gxClearScreen(bg_color); + } + + /* background elements */ + for (i=0; imax_images; i++) + { + image = &menu->bg_images[i]; + if (image->state & IMAGE_VISIBLE) + { + if (image->state & IMAGE_REPEAT) + gxDrawTextureRepeat(image->texture,image->x,image->y,image->w,image->h,image->alpha); + else + gxDrawTexture(image->texture,image->x,image->y,image->w,image->h,image->alpha); + } + } + + /* menu title */ + FONT_write(menu->title, 22,10,56,640,(GXColor)WHITE); + + /* draw buttons + items */ + for (i=0; imax_buttons; i++) + { + button = &menu->buttons[i]; + + if (button->state & BUTTON_VISIBLE) + { + /* item select (text or image) */ + item = (menu->items) ? (&menu->items[menu->offset + i]) : NULL; + + /* draw button + items */ + if ((i == menu->selected) || (button->state & BUTTON_SELECTED)) + { + if (button->data) + gxDrawTexture(button->data->texture[1],button->x-4,button->y-4,button->w+8,button->h+8,255); + + if (item) + { + if (item->texture) + { + gxDrawTexture(item->texture, item->x-4,item->y-4,item->w+8,item->h+8,255); + FONT_writeCenter(item->text,18,button->x+4,item->x-4,button->y+(button->h - 36)/2+18,(GXColor)DARK_GREY); + } + else + { + FONT_writeCenter(item->text,18,item->x-4,item->x+item->w+4,button->y+(button->h-18)/2+18,(GXColor)DARK_GREY); + } + } + } + else + { + if (button->data) + gxDrawTexture(button->data->texture[0],button->x,button->y,button->w, button->h,255); + + if (item) + { + if (item->texture) + { + gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); + FONT_writeCenter(item->text,16,button->x+8,item->x,button->y+(button->h - 32)/2+16,(GXColor)DARK_GREY); + } + else + { + FONT_writeCenter(item->text,16,item->x,item->x+item->w,button->y+(button->h - 16)/2+16,(GXColor)DARK_GREY); + } + } + } + } + } + + /* draw arrow */ + for (i=0; i<2; i++) + { + button = menu->arrows[i]; + if (button) + { + if (button->state & BUTTON_VISIBLE) + { + if (menu->selected == (menu->max_buttons + i)) + gxDrawTexture(button->data->texture[1],button->x-2,button->y-2,button->w+4,button->h+4,255); + else + gxDrawTexture(button->data->texture[0],button->x,button->y,button->w, button->h,255); + } + } + } + + /* left comment */ + item = menu->helpers[0]; + if (item) + { + if (item->data && strlen(item->comment)) + { + gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); + FONT_write(item->comment,16,item->x+item->w+6,item->y+(item->h-16)/2 + 16,640,(GXColor)WHITE); + } + } + + /* right comment */ + item = menu->helpers[1]; + if (item) + { + if (item->data && strlen(item->comment)) + { + gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); + FONT_alignRight(item->comment,16,item->x-6,item->y+(item->h-16)/2+16,(GXColor)WHITE); + } + } + + if (menu->cb) + menu->cb(); +} + +/* Draw Menu with transitions effects */ +void GUI_DrawMenuFX(gui_menu *menu, u8 speed, u8 out) +{ + int i,temp,xoffset,yoffset; + int max_offset = 0; + u8 item_alpha = 255; + GXColor text_color = DARK_GREY; + gui_item *item; + gui_butn *button; + gui_image *image; + + /* find maximal offset */ + for (i=0; imax_images; i++) + { + image = &menu->bg_images[i]; + + if (image->state & IMAGE_SLIDE_LEFT) + { + temp = image->x + image->w; + if (max_offset < temp) + max_offset = temp; + } + else if (image->state & IMAGE_SLIDE_RIGHT) + { + temp = 640 - image->x; + if (max_offset < temp) + max_offset = temp; + } + + if (image->state & IMAGE_SLIDE_TOP) + { + temp = image->y + image->h; + if (max_offset < temp) + max_offset = temp; + } + else if (image->state & IMAGE_SLIDE_BOTTOM) + { + temp = 480 - image->y; + if (max_offset < temp) + max_offset = temp; + } + } + + temp = max_offset; + + /* Alpha steps */ + int alpha = 0; + int alpha_step = (255 * speed) / max_offset; + if (out) + { + alpha = 255; + alpha_step = -alpha_step; + } + + /* Let's loop until final position has been reached */ + while (temp > 0) + { + /* background color */ + if (menu->screenshot) + { + gxClearScreen((GXColor)BLACK); + if (alpha >= menu->screenshot) + gxDrawScreenshot(menu->screenshot); + else + gxDrawScreenshot(255 - alpha); + } + else + { + gxClearScreen(bg_color); + } + + /* background images */ + for (i=0; imax_images; i++) + { + image = &menu->bg_images[i]; + + /* X offset */ + if (image->state & IMAGE_SLIDE_LEFT) + xoffset = out ? (temp - max_offset) : (-temp); + else if (image->state & IMAGE_SLIDE_RIGHT) + xoffset = out ? (max_offset - temp) : (temp); + else + xoffset = 0; + + /* Y offset */ + if (image->state & IMAGE_SLIDE_TOP) + yoffset = out ? (temp - max_offset) : (-temp); + else if (image->state & IMAGE_SLIDE_BOTTOM) + yoffset = out ? (max_offset - temp) : (temp); + else + yoffset = 0; + + /* draw image */ + if ((image->state & IMAGE_FADE) && ((out && (image->alpha > alpha)) || (!out && (image->alpha < alpha)))) + { + /* FADE In-Out */ + if (image->state & IMAGE_VISIBLE) + { + if (image->state & IMAGE_REPEAT) + gxDrawTextureRepeat(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,alpha); + else + gxDrawTexture(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,alpha); + } + } + else + { + if (image->state & IMAGE_VISIBLE) + { + if (image->state & IMAGE_REPEAT) + gxDrawTextureRepeat(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,image->alpha); + else + gxDrawTexture(image->texture,image->x+xoffset,image->y+yoffset,image->w,image->h,image->alpha); + } + } + } + + /* menu title */ + if ((menu->bg_images[2].state & IMAGE_SLIDE_TOP) || (menu->bg_images[3].state & IMAGE_SLIDE_TOP)) + FONT_write(menu->title, 22,10,out ? (56 + temp - max_offset) : (56 - temp),640,(GXColor)WHITE); + else + FONT_write(menu->title, 22,10,56,640,(GXColor)WHITE); + + /* draw buttons + items */ + for (i=0; imax_buttons; i++) + { + button = &menu->buttons[i]; + + if (button->state & BUTTON_VISIBLE) + { + /* X offset */ + if (button->state & BUTTON_SLIDE_LEFT) + xoffset = out ? (temp - max_offset) : (-temp); + else if (button->state & BUTTON_SLIDE_RIGHT) + xoffset = out ? (max_offset - temp) : (temp); + else + xoffset = 0; + + /* Y offset */ + if (button->state & BUTTON_SLIDE_TOP) + yoffset = out ? (temp - max_offset) : (-temp); + else if (button->state & BUTTON_SLIDE_BOTTOM) + yoffset = out ? (max_offset - temp) : (temp); + else + yoffset = 0; + + /* Alpha transparency */ + if (button->state & BUTTON_FADE) + { + item_alpha = alpha; + text_color.a = alpha; + } + else + { + item_alpha = 255; + text_color.a = 255; + } + + /* item select (text or image) */ + item = (menu->items) ? (&menu->items[menu->offset + i]) : NULL; + + /* draw button + items */ + if ((i == menu->selected) || (button->state & BUTTON_SELECTED)) + { + if (button->data) + gxDrawTexture(button->data->texture[1],button->x+xoffset-4,button->y+yoffset-4,button->w+8,button->h+8,item_alpha); + + if (item) + { + if (item->texture) + { + gxDrawTexture(item->texture, item->x+xoffset-4,item->y+yoffset-4,item->w+8,item->h+8,item_alpha); + FONT_writeCenter(item->text,18,button->x+xoffset+4,item->x+xoffset-4,button->y+yoffset+(button->h - 36)/2+18,text_color); + } + else + { + FONT_writeCenter(item->text,18,item->x+xoffset+2,item->x+item->w+xoffset+2,button->y+yoffset+(button->h-18)/2+18,text_color); + } + } + } + else + { + if (button->data) + gxDrawTexture(button->data->texture[0],button->x+xoffset,button->y+yoffset,button->w, button->h,item_alpha); + + if (item) + { + if (item->texture) + { + gxDrawTexture(item->texture,item->x+xoffset,item->y+yoffset,item->w,item->h,item_alpha); + FONT_writeCenter(item->text,16,button->x+xoffset+8,item->x+xoffset,button->y+yoffset+(button->h - 32)/2+16,text_color); + } + else + { + FONT_writeCenter(item->text,16,item->x+xoffset,item->x+item->w+xoffset,button->y+yoffset+(button->h - 16)/2+16,text_color); + } + } + } + } + } + + /* draw arrow */ + for (i=0; i<2; i++) + { + button = menu->arrows[i]; + if (button) + { + if (button->state & BUTTON_VISIBLE) + { + if (menu->selected == (menu->max_buttons + i)) + gxDrawTexture(button->data->texture[1],button->x-2,button->y-2,button->w+4,button->h+4,255); + else + gxDrawTexture(button->data->texture[0],button->x,button->y,button->w, button->h,255); + } + } + } + + if (!(menu->bg_images[3].state & IMAGE_SLIDE_BOTTOM) && !(menu->bg_images[4].state & IMAGE_SLIDE_BOTTOM)) + { + /* left comment */ + item = menu->helpers[0]; + if (item) + { + if (item->data && strlen(item->comment)) + { + gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); + FONT_write(item->comment,16,item->x+item->w+6,item->y+(item->h-16)/2 + 16,640,(GXColor)WHITE); + } + } + + /* right comment */ + item = menu->helpers[1]; + if (item) + { + if (item->data && strlen(item->comment)) + { + gxDrawTexture(item->texture,item->x,item->y,item->w,item->h,255); + FONT_alignRight(item->comment,16,item->x-6,item->y+(item->h-16)/2+16,(GXColor)WHITE); + } + } + } + + if (menu->cb) + menu->cb(); + + /* update offset */ + temp -= speed; + + /* update alpha */ + alpha += alpha_step; + if (alpha > 255) + alpha = 255; + else if (alpha < 0) + alpha = 0; + + + /* copy EFB to XFB */ + gxSetScreen(); + } + + /* final position */ + if (!out) + { + GUI_DrawMenu(menu); + gxSetScreen(); + } + else if (menu->screenshot) + { + gxClearScreen((GXColor)BLACK); + gxDrawScreenshot(255); + gxSetScreen(); + } +} + +/* Basic menu title slide effect */ +void GUI_SlideMenuTitle(gui_menu *m, int title_offset) +{ +#ifdef HW_RVL + gui_butn *button; + int i,x,y; +#endif + + char title[64]; + strcpy(title,m->title); + + while (title_offset > 0) + { + /* update title */ + strcpy(m->title,title+title_offset); + m->title[strlen(title)-title_offset-1] = 0; + + /* draw menu */ + GUI_DrawMenu(m); + +#ifdef HW_RVL + /* keep pointer active */ + if (m_input.ir.valid) + { + /* get cursor position */ + x = m_input.ir.x; + y = m_input.ir.y; + + /* draw wiimote pointer */ + gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); + + /* check for valid buttons */ + m->selected = m->max_buttons + 2; + for (i=0; imax_buttons; i++) + { + button = &m->buttons[i]; + if ((button->state & BUTTON_ACTIVE)&&(x>=button->x)&&(x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) + { + m->selected = i; + break; + } + } + + for (i=0; i<2; i++) + { + button = m->arrows[i]; + if (button) + { + if (button->state & BUTTON_VISIBLE) + { + if ((x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) + { + m->selected = m->max_buttons + i; + break; + } + } + } + } + } +#endif + gxSetScreen(); + usleep(6000); + title_offset--; + } + strcpy(m->title,title); +} + +/* Update current menu */ +int GUI_UpdateMenu(gui_menu *menu) +{ + u16 p; + int ret = 0; + int selected = menu->selected; + int max_items = menu->max_items; + int max_buttons = menu->max_buttons; + gui_butn *button; + +#ifdef HW_RVL + if (Shutdown) + { + GUI_DeleteMenu(menu); + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_POWEROFF, 0, 0); + } + else if (m_input.ir.valid) + { + /* get cursor position */ + int x = m_input.ir.x; + int y = m_input.ir.y; + + /* draw wiimote pointer */ + gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); + + /* check for valid buttons */ + selected = max_buttons + 2; + int i; + for (i=0; ibuttons[i]; + if ((button->state & BUTTON_ACTIVE) && (button->state & BUTTON_VISIBLE)) + { + if((x>=button->x)&&(x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) + { + selected = i; + break; + } + } + } + + for (i=0; i<2; i++) + { + button = menu->arrows[i]; + if (button) + { + if ((button->state & BUTTON_ACTIVE) && (button->state & BUTTON_VISIBLE)) + { + if ((x<=(button->x+button->w))&&(y>=button->y)&&(y<=(button->y+button->h))) + { + selected = max_buttons + i; + break; + } + } + } + } + } + else + { + /* reinitialize selection */ + if (selected >= menu->max_buttons) + { + selected = 0; + while ((selected < (menu->max_buttons + 2)) && + (!(menu->buttons[selected].state & BUTTON_ACTIVE) || + !(menu->buttons[selected].state & BUTTON_VISIBLE))) + selected++; + } + } +#endif + + /* update screen */ + gxSetScreen(); + + /* update menu */ + p = m_input.keys; + + if (selected < max_buttons) + { + button = &menu->buttons[selected]; + if (p & PAD_BUTTON_UP) + { + selected -= button->shift[0]; + if (selected < 0) + { + selected = 0; + if (menu->offset) + menu->offset --; + } + } + else if (p & PAD_BUTTON_DOWN) + { + selected += button->shift[1]; + if (selected >= max_buttons) + { + selected = max_buttons - 1; + if ((menu->offset + selected) < (max_items - 1)) + menu->offset ++; + } + } + else if (p & PAD_BUTTON_LEFT) + { + selected -= button->shift[2]; + if (selected < 0) + { + selected = 0; + if (menu->offset) + menu->offset --; + } + } + else if (p & PAD_BUTTON_RIGHT) + { + selected += button->shift[3]; + if (selected >= max_buttons) + { + selected = max_buttons - 1; + if ((menu->offset + selected) < (max_items - 1)) + menu->offset ++; + } + } + } + + if (p & PAD_BUTTON_A) + { + if (selected < max_buttons) + ret = 1; /* menu clicked */ + else if (selected == max_buttons) + menu->offset --; /* up arrow */ + else if (selected == (max_buttons+1)) + menu->offset ++; /* down arrow */ + } + else if ((p & PAD_BUTTON_B) || (p & PAD_TRIGGER_Z)) + { + /* quit menu */ + ret = -1; + } + + /* selected item has changed ? */ + if (menu->selected != selected) + { + if (selected < max_buttons) + { + /* sound fx */ + button = &menu->buttons[selected]; + if (button->state & BUTTON_OVER_SFX) + { + ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, + ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); + } + } + else if (selected < (max_buttons + 2)) + { + /* sound fx */ + button = menu->arrows[selected-max_buttons]; + if (button->state & BUTTON_OVER_SFX) + { + ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, + ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); + } + } + + /* update selection */ + menu->selected = selected; + } + + /* update helper comment */ + if (menu->helpers[1]) + { + if ((menu->offset + selected) < max_items) + { + gui_item *item = &menu->items[menu->offset + selected]; + strcpy(menu->helpers[1]->comment,item->comment); + } + else + { + strcpy(menu->helpers[1]->comment,""); + } + } + + if (ret > 0) + { + if (selected < max_buttons) + { + /* sound fx */ + button = &menu->buttons[selected]; + if (button->state & BUTTON_SELECT_SFX) + { + ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_select_pcm,button_select_pcm_size, + ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); + } + } + } + + return ret; +} + +/* Generic routine to render & update menus */ +int GUI_RunMenu(gui_menu *menu) +{ + int update = 0; + + /* update menu */ + while (!update) + { + GUI_DrawMenu(menu); + update = GUI_UpdateMenu(menu); + + /* update arrows buttons status (items list) */ + if (menu->arrows[0]) + { + if (menu->offset > 0) + menu->arrows[0]->state |= BUTTON_VISIBLE; + else + menu->arrows[0]->state &= ~BUTTON_VISIBLE; + } + + if (menu->arrows[1]) + { + if ((menu->offset + menu->max_buttons) < menu->max_items) + menu->arrows[1]->state |= BUTTON_VISIBLE; + else + menu->arrows[1]->state &= ~BUTTON_VISIBLE; + } + } + + if (update == 2) + return (-2-menu->offset-menu->selected); + else if (update == 1) + return (menu->offset + menu->selected); + else + return -1; + } + +/* Text Window */ +void GUI_TextWindow(gui_menu *parent, char *title, char items[][64], u8 nb_items, u8 fontsize) +{ + int i, quit = 0; + +#ifdef HW_RVL + int x,y; +#endif + + /* initialize window */ + gx_texture *window = gxTextureOpenPNG(Frame_s1_png,0); + gx_texture *top = gxTextureOpenPNG(Frame_s1_title_png,0); + + /* window position */ + int xwindow = (640 - window->width) /2; + int ywindow = (480 - window->height)/2; + + /* text position */ + int ypos = ywindow + top->height + (window->height - top->height - fontsize*nb_items) / 2 + fontsize/2; + + /* disable helper comment */ + const u8 *data = NULL; + if (parent->helpers[1]) + { + data = parent->helpers[1]->data; + parent->helpers[1]->data = NULL; + } + + /* slide in */ + int yoffset = ywindow + window->height; + while (yoffset > 0) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); + gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); + + /* draw title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* draw text */ + for (i=0; iwidth,ypos+i*fontsize-yoffset,(GXColor)WHITE); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset -= 60; + } + + /* draw menu + text window */ + while (quit == 0) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow,window->width,window->height,230); + gxDrawTexture(top,xwindow,ywindow,top->width,top->height,255); + + /* draw title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20,(GXColor)WHITE); + + /* draw text */ + for (i=0; iwidth,ypos+i*fontsize,(GXColor)WHITE); + } + +#ifdef HW_RVL + if (Shutdown) + { + gxTextureClose(&window); + gxTextureClose(&top); + gxTextureClose(&w_pointer); + GUI_DeleteMenu(parent); + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_POWEROFF, 0, 0); + } + else if (m_input.ir.valid) + { + /* get cursor position */ + x = m_input.ir.x; + y = m_input.ir.y; + + /* draw wiimote pointer */ + gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); + } +#endif + + /* update screen */ + gxSetScreen(); + + /* wait for exit buttons */ + if (m_input.keys) + quit = 1; + } + + /* reset initial vertical offset */ + + /* slide out */ + yoffset = 0; + while (yoffset < (ywindow + window->height)) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); + gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); + + /* draw title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* draw text */ + for (i=0; iwidth,ypos+i*fontsize-yoffset,(GXColor)WHITE); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset += 60; + } + + /* restore helper comment */ + if (parent->helpers[1]) + parent->helpers[1]->data = data; + + /* final position */ + GUI_DrawMenu(parent); + gxSetScreen(); + + /* close textures */ + gxTextureClose(&window); + gxTextureClose(&top); +} + +/* Option Window (returns selected item) */ +int GUI_OptionWindow(gui_menu *parent, char *title, char *items[], u8 nb_items) +{ + int i, ret, quit = 0; + int old, selected = 0; + s16 p; + butn_data button; + +#ifdef HW_RVL + int x,y; +#endif + + /* initialize buttons data */ + button.texture[0] = gxTextureOpenPNG(Button_text_png,0); + button.texture[1] = gxTextureOpenPNG(Button_text_over_png,0); + + /* initialize texture window */ + gx_texture *window = gxTextureOpenPNG(Frame_s1_png,0); + gx_texture *top = gxTextureOpenPNG(Frame_s1_title_png,0); + + /* get initial positions */ + int w = button.texture[0]->width; + int h = button.texture[0]->height; + int xwindow = (640 - window->width)/2; + int ywindow = (480 - window->height)/2; + int xpos = xwindow + (window->width - w)/2; + int ypos = (window->height - top->height - (h*nb_items) - (nb_items-1)*20)/2; + ypos = ypos + ywindow + top->height; + + /* disable helper comment */ + const u8 *data = NULL; + if (parent->helpers[1]) + { + data = parent->helpers[1]->data; + parent->helpers[1]->data = 0; + } + + /* slide in */ + int yoffset = ywindow + window->height; + while (yoffset > 0) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); + gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); + + /* draw title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* draw buttons + text */ + for (i=0; iwidth,window->height,230); + gxDrawTexture(top,xwindow,ywindow,top->width,top->height,255); + + /* draw title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20,(GXColor)WHITE); + + /* draw buttons + text */ + for (i=0; iwidth/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); + + /* check for valid buttons */ + selected = -1; + for (i=0; i=xpos)&&(x<=(xpos+w))&&(y>=ypos+i*(20 + h))&&(y<=(ypos+i*(20+h)+h))) + { + selected = i; + break; + } + } + } + else + { + /* reinitialize selection */ + if (selected == -1) + selected = 0; + } +#endif + + /* update screen */ + gxSetScreen(); + + /* update selection */ + if (p & PAD_BUTTON_UP) + { + if (selected > 0) + selected --; + } + else if (p & PAD_BUTTON_DOWN) + { + if (selected < (nb_items -1)) + selected ++; + } + + /* sound fx */ + if (selected != old) + { + if (selected >= 0) + { + ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, + ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); + } + } + + if (p & PAD_BUTTON_A) + { + if (selected >= 0) + { + quit = 1; + ret = selected; + } + } + else if (p & PAD_BUTTON_B) + { + quit = 1; + ret = -1; + } + } + + /* slide out */ + yoffset = 0; + while (yoffset < (ywindow + window->height)) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window + header */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,230); + gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); + + /* draw title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* draw buttons + text */ + for (i=0; ihelpers[1]) + parent->helpers[1]->data = data; + + /* final position */ + GUI_DrawMenu(parent); + gxSetScreen(); + + /* close textures */ + gxTextureClose(&window); + gxTextureClose(&top); + gxTextureClose(&button.texture[0]); + gxTextureClose(&button.texture[1]); + + return ret; +} + +/* Option Box */ +void GUI_OptionBox(gui_menu *parent, optioncallback cb, char *title, void *option, float step, float min, float max, u8 type) +{ + gx_texture *arrow[2]; + arrow[0] = gxTextureOpenPNG(Button_arrow_png,0); + arrow[1] = gxTextureOpenPNG(Button_arrow_over_png,0); + gx_texture *window = gxTextureOpenPNG(Frame_s2_png,0); + gx_texture *top = gxTextureOpenPNG(Frame_s2_title_png,0); + + /* window position */ + int xwindow = 166; + int ywindow = 160; + + /* arrows position */ + int xleft = 206; + int xright = 392; + int yleft = 238; + int yright = 238; + + /* disable action button helper */ + if (parent->helpers[1]) + parent->helpers[1]->data = 0; + + /* slide in */ + char msg[16]; + int yoffset = ywindow + window->height; + while (yoffset > 0) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); + gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); + + /* display title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset -= 60; + } + + /* display option box */ + int quit = 0; + int modified = 0; + int selected = -1; + s16 p; +#ifdef HW_RVL + int x,y; +#endif + + while (!quit) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow,window->width,window->height,225); + gxDrawTexture(top,xwindow,ywindow,top->width,top->height,255); + + /* display title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20,(GXColor)WHITE); + + /* option type */ + if (type) + { + /* integer type */ + if (*(s16 *)option < 0) + sprintf(msg,"-%d",abs(*(s16 *)option)); + else + sprintf(msg,"%d",abs(*(s16 *)option)); + } + else + { + /* float type */ + if (*(float *)option < 0.0) + sprintf(msg,"-%1.2f",fabs(*(float *)option)); + else + sprintf(msg,"%1.2f",fabs(*(float *)option)); + } + + /* draw option text */ + FONT_writeCenter(msg,24,xwindow,xwindow+window->width,272,(GXColor)WHITE); + + /* update inputs */ + p = m_input.keys; + + /* draw buttons */ + if (selected < 0) + { + /* nothing selected */ + gxDrawTexture(arrow[0],xleft,yleft,arrow[0]->width,arrow[0]->height,255); + gxDrawTextureRotate(arrow[0],xright,yright,arrow[0]->width,arrow[0]->height,180.0,255); + } + +#ifdef HW_RVL + else if (selected) + { + /* right button selected */ + gxDrawTexture(arrow[0],xleft,yleft,arrow[0]->width,arrow[0]->height,255); + gxDrawTextureRotate(arrow[1],xright-4,yright-4,arrow[1]->width+8,arrow[1]->height+8,180.0,255); + } + else + { + /* left button selected */ + gxDrawTexture(arrow[1],xleft-4,yleft-4,arrow[1]->width+8,arrow[1]->height+8,255); + gxDrawTextureRotate(arrow[0],xright,yright,arrow[0]->width,arrow[0]->height,180.0,255); + } + + selected = -1; + if (Shutdown) + { + gxTextureClose(&arrow[0]); + gxTextureClose(&arrow[1]); + gxTextureClose(&window); + gxTextureClose(&top); + gxTextureClose(&w_pointer); + GUI_DeleteMenu(parent); + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_POWEROFF, 0, 0); + } + else if (m_input.ir.valid) + { + /* get cursor position */ + x = m_input.ir.x; + y = m_input.ir.y; + + /* draw wiimote pointer */ + gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); + + /* check for valid buttons */ + if ((x>=xleft)&&(x<=(xleft+arrow[0]->width))&&(y>=yleft)&&(y<=(yleft+arrow[0]->height))) + { + selected = 0; + if (p & PAD_BUTTON_A) + p |= PAD_BUTTON_LEFT; + } + else if ((x>=xright)&&(x<=(xright+arrow[0]->width))&&(y>=yright)&&(y<=(yright+arrow[0]->height))) + { + selected = 1; + if (p & PAD_BUTTON_A) + p |= PAD_BUTTON_RIGHT; + } + } +#endif + + /* update screen */ + gxSetScreen(); + + /* check input */ + if (p&PAD_BUTTON_LEFT) + { + /* decrement option value */ + if (type) + { + /* integer type */ + *(s16 *)option -= (s16)step; + if (*(s16 *)option < (s16)min) + *(s16 *)option = (s16)max; + } + else + { + /* float type */ + *(float *)option -= step; + if (*(float *)option < min) + *(float *)option = max; + } + + modified = 1; + } + else if (p&PAD_BUTTON_RIGHT) + { + /* increment option value */ + if (type) + { + /* integer type */ + *(s16 *)option += (s16)step; + if (*(s16 *)option > (s16)max) + *(s16 *)option = (s16)min; + } + else + { + /* float type */ + *(float *)option += step; + if (*(float *)option > max) + *(float *)option = min; + } + + modified = 1; + } + else if (p & PAD_BUTTON_B) + { + quit = 1; + } + + if (modified) + { + modified = 0; + + /* play sound effect */ + ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, + ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); + + /* option callback */ + if (cb) + cb(); + } + } + + /* slide out */ + yoffset = 0; ; + while (yoffset < (ywindow + window->height)) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); + gxDrawTexture(top,xwindow,ywindow-yoffset,top->width,top->height,255); + + /* display title */ + FONT_writeCenter(title,20,xwindow,xwindow+window->width,ywindow+(top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset += 60; + } + + /* restore action button helper */ + if (parent->helpers[1]) + parent->helpers[1]->data = Key_A_png; + + /* final position */ + GUI_DrawMenu(parent); + gxSetScreen(); + + /* close textures */ + gxTextureClose(&arrow[0]); + gxTextureClose(&arrow[1]); + gxTextureClose(&window); + gxTextureClose(&top); +} + +/* Option Box with two parameters */ +void GUI_OptionBox2(gui_menu *parent, char *text_1, char *text_2, s16 *option_1, s16 *option_2, s16 step, s16 min, s16 max) +{ + gx_texture *arrow[2]; + arrow[0] = gxTextureOpenPNG(Button_arrow_png,0); + arrow[1] = gxTextureOpenPNG(Button_arrow_over_png,0); + gx_texture *window = gxTextureOpenPNG(Frame_s2_png,0); + + /* window position */ + int xwindow = 166; + int ywindow = 160; + + /* arrows position */ + int arrow_pos[4][2] = + { + {144,218}, + {452,218}, + {298,138}, + {298,298} + }; + + /* disable action button helper */ + if (parent->helpers[1]) + parent->helpers[1]->data = 0; + + /* slide in */ + char msg[16]; + int yoffset = ywindow + window->height; + while (yoffset > 0) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset -= 60; + } + + /* display option box */ + int quit = 0; + int modified = 0; + s16 p; +#ifdef HW_RVL + int selected = -1; + int i,x,y; +#endif + + while (!quit) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow,window->width,window->height,225); + + /* draw options text */ + if (*option_1 < 0) + sprintf(msg,"%s: -%02d",text_1,abs(*option_1)); + else + sprintf(msg,"%s: +%02d",text_1,abs(*option_1)); + FONT_writeCenter(msg,24,xwindow,xwindow+window->width,240,(GXColor)WHITE); + if (*option_2 < 0) + sprintf(msg,"%s: -%02d",text_2,abs(*option_2)); + else + sprintf(msg,"%s: +%02d",text_2,abs(*option_2)); + FONT_writeCenter(msg,24,xwindow,xwindow+window->width,264,(GXColor)WHITE); + + /* update inputs */ + p = m_input.keys; + + /* draw buttons */ +#ifdef HW_RVL + switch (selected) + { + case 0: /* left button */ + gxDrawTexture(arrow[1],arrow_pos[0][0]-4,arrow_pos[0][1]-4,arrow[0]->width+8,arrow[0]->height+8,255); + gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); + if (p & PAD_BUTTON_A) p |= PAD_BUTTON_LEFT; + break; + + case 1: /* right button */ + gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); + gxDrawTextureRotate(arrow[1],arrow_pos[1][0]-4,arrow_pos[1][1]-4,arrow[0]->width+8,arrow[0]->height+8,180.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); + if (p & PAD_BUTTON_A) p |= PAD_BUTTON_RIGHT; + break; + + case 2: /* up button */ + gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); + gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); + gxDrawTextureRotate(arrow[1],arrow_pos[2][0]-4,arrow_pos[2][1]-4,arrow[0]->width+8,arrow[0]->height+8,90.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); + if (p & PAD_BUTTON_A) p |= PAD_BUTTON_UP; + break; + + case 3: /* down button */ + gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); + gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); + gxDrawTextureRotate(arrow[1],arrow_pos[3][0]-4,arrow_pos[3][1]-4,arrow[0]->width+8,arrow[0]->height+8,270.0,255); + if (p & PAD_BUTTON_A) p |= PAD_BUTTON_DOWN; + break; + + default: /* nothing selected */ + gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); + gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); + break; + } + + if (Shutdown) + { + gxTextureClose(&arrow[0]); + gxTextureClose(&arrow[1]); + gxTextureClose(&window); + gxTextureClose(&w_pointer); + GUI_DeleteMenu(parent); + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_POWEROFF, 0, 0); + } + + /* update selection */ + selected = -1; + if (m_input.ir.valid) + { + /* get cursor position */ + x = m_input.ir.x; + y = m_input.ir.y; + + /* draw wiimote pointer */ + gxDrawTextureRotate(w_pointer, x-w_pointer->width/2, y-w_pointer->height/2, w_pointer->width, w_pointer->height,m_input.ir.angle,255); + + /* check for valid buttons */ + for (i=0; i<4; i++) + { + if ((x>=arrow_pos[i][0])&&(x<=(arrow_pos[i][0]+arrow[0]->width))&&(y>=arrow_pos[i][1])&&(y<=(arrow_pos[i][1]+arrow[0]->height))) + selected = i; + } + } +#else + gxDrawTexture(arrow[0],arrow_pos[0][0],arrow_pos[0][1],arrow[0]->width,arrow[0]->height,255); + gxDrawTextureRotate(arrow[0],arrow_pos[1][0],arrow_pos[1][1],arrow[0]->width,arrow[0]->height,180.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[2][0],arrow_pos[2][1],arrow[0]->width,arrow[0]->height,90.0,255); + gxDrawTextureRotate(arrow[0],arrow_pos[3][0],arrow_pos[3][1],arrow[0]->width,arrow[0]->height,270.0,255); +#endif + + /* update screen */ + gxSetScreen(); + + if (p&PAD_BUTTON_LEFT) + { + /* decrement option 1 value */ + *option_1 -= step; + if (*option_1 < min) + *option_1 = max; + modified = 1; + } + else if (p&PAD_BUTTON_RIGHT) + { + /* decrement option 1 value */ + *option_1 += step; + if (*option_1 > max) + *option_1 = min; + modified = 1; + } + else if (p&PAD_BUTTON_UP) + { + /* decrement option 2 value */ + *option_2 -= step; + if (*option_2 < min) + *option_2 = max; + modified = 1; + } + else if (p&PAD_BUTTON_DOWN) + { + /* increment option 2 value */ + *option_2 += step; + if (*option_2 > max) + *option_2 = min; + modified = 1; + } + else if (p & PAD_BUTTON_B) + { + quit = 1; + } + + if (modified) + { + modified = 0; + /* play sound effect */ + ASND_SetVoice(ASND_GetFirstUnusedVoice(),VOICE_MONO_16BIT,22050,0,(u8 *)button_over_pcm,button_over_pcm_size, + ((int)config.sfx_volume * 255) / 100,((int)config.sfx_volume * 255) / 100,NULL); + } + } + + /* slide out */ + yoffset = 0; ; + while (yoffset < (ywindow + window->height)) + { + /* draw parent menu */ + GUI_DrawMenu(parent); + + /* draw window */ + gxDrawTexture(window,xwindow,ywindow-yoffset,window->width,window->height,225); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset += 60; + } + + /* restore action button helper */ + if (parent->helpers[1]) + parent->helpers[1]->data = Key_A_png; + + /* final position */ + GUI_DrawMenu(parent); + gxSetScreen(); + + /* close textures */ + gxTextureClose(&arrow[0]); + gxTextureClose(&arrow[1]); + gxTextureClose(&window); +} + +/* Interactive Message Box */ +/* Message Box displays a message until a specific action is completed */ + +/* Message Box LWP Thread */ +static void *MsgBox_Thread(gui_message *message_box) +{ + while (message_box->refresh) + { + /* draw parent menu */ + if (message_box->parent) + { + GUI_DrawMenu(message_box->parent); + } + else + { + gxClearScreen(bg_color); + } + + /* draw window */ + gxDrawTexture(message_box->window,166,160,message_box->window->width,message_box->window->height,230); + gxDrawTexture(message_box->top,166,160,message_box->top->width,message_box->top->height,255); + + /* draw title */ + if (message_box->title) + FONT_writeCenter(message_box->title,20,166,166+message_box->window->width,160+(message_box->top->height-20)/2+20,(GXColor)WHITE); + + /* draw box message */ + if (message_box->msg) + FONT_writeCenter(message_box->msg,18,166,166+message_box->window->width,248,(GXColor)WHITE); + + /* draw throbber */ + if (message_box->throbber) + gxDrawTextureRotate(message_box->throbber,166+(message_box->window->width-message_box->throbber->width)/2,160+message_box->window->height-message_box->throbber->height-20,message_box->throbber->width,message_box->throbber->height,(message_box->progress * 360.0) / 100.0, 255); + + /* draw exit message */ + if (message_box->buttonA) + { + FONT_writeCenter("Press to continue.",18,166,166+message_box->window->width,248+22,(GXColor)WHITE); + gxDrawTexture(message_box->buttonA, 166+116, 248+4+(18-message_box->buttonA->height)/2,message_box->buttonA->width, message_box->buttonA->height,255); + } + + /* update display */ + gxSetScreen(); + + /* update progression */ + message_box->progress++; + if (message_box->progress > 100) + message_box->progress = 0; + usleep(10); + } + + return 0; +} + +/* update current Message Box */ +void GUI_MsgBoxUpdate(char *title, char *msg) +{ + if (title) + strncpy(message_box.title,title,64); + if (msg) + strncpy(message_box.msg,msg,64); +} + +/* setup current Message Box */ +void GUI_MsgBoxOpen(char *title, char *msg, bool throbber) +{ + if (SILENT) + return; + + /* update text */ + GUI_MsgBoxUpdate(title,msg); + + /* ensure we are not already running */ + if (!message_box.refresh) + { + /* initialize default textures */ + message_box.window = gxTextureOpenPNG(Frame_s2_png,0); + message_box.top = gxTextureOpenPNG(Frame_s2_title_png,0); + if (throbber) + message_box.throbber = gxTextureOpenPNG(Frame_throbber_png,0); + + /* window position */ + int xwindow = 166; + int ywindow = 160; + int ypos = 248; + + /* disable helper comments */ + if (message_box.parent) + { + if (message_box.parent->helpers[0]) + message_box.parent->helpers[0]->data = 0; + if (message_box.parent->helpers[1]) + message_box.parent->helpers[1]->data = 0; + } + + /* slide in */ + int yoffset = ywindow + message_box.window->height; + while (yoffset > 0) + { + /* draw parent menu */ + if (message_box.parent) + { + GUI_DrawMenu(message_box.parent); + } + else + { + gxClearScreen(bg_color); + } + + /* draw window */ + gxDrawTexture(message_box.window,xwindow,ywindow-yoffset,message_box.window->width,message_box.window->height,230); + gxDrawTexture(message_box.top,xwindow,ywindow-yoffset,message_box.top->width,message_box.top->height,255); + + /* draw title */ + if (title) + FONT_writeCenter(title,20,xwindow,xwindow+message_box.window->width,ywindow+(message_box.top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* draw box message */ + if (msg) + FONT_writeCenter(msg,18,xwindow,xwindow+message_box.window->width,ypos-yoffset,(GXColor)WHITE); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset -= 60; + } + + /* create LWP thread for MessageBox refresh */ + message_box.refresh = TRUE; + LWP_CreateThread (&msgboxthread, (void *)MsgBox_Thread, &message_box, NULL, 0, 70); + } +} + +/* Close current messagebox */ +void GUI_MsgBoxClose(void) +{ + if (message_box.refresh) + { + /* suspend MessageBox refresh */ + message_box.refresh = FALSE; + LWP_JoinThread(msgboxthread, NULL); + + /* window position */ + int xwindow = 166; + int ywindow = 160; + int ypos = 248; + + /* slide out */ + int yoffset = 0; + while (yoffset < (ywindow + message_box.window->height)) + { + /* draw parent menu */ + if (message_box.parent) + { + GUI_DrawMenu(message_box.parent); + } + else + { + gxClearScreen(bg_color); + } + + /* draw window */ + gxDrawTexture(message_box.window,xwindow,ywindow-yoffset,message_box.window->width,message_box.window->height,230); + gxDrawTexture(message_box.top,xwindow,ywindow-yoffset,message_box.top->width,message_box.top->height,255); + + /* draw title */ + if (message_box.title) + FONT_writeCenter(message_box.title,20,xwindow,xwindow+message_box.window->width,ywindow+(message_box.top->height-20)/2+20-yoffset,(GXColor)WHITE); + + /* draw text */ + if (message_box.msg) + FONT_writeCenter(message_box.msg,18,xwindow,xwindow+message_box.window->width,ypos-yoffset,(GXColor)WHITE); + + /* update display */ + gxSetScreen(); + + /* slide speed */ + yoffset += 60; + } + + if (message_box.parent) + { + /* restore helper comment */ + if (message_box.parent->helpers[0]) + message_box.parent->helpers[0]->data = Key_B_png; + if (message_box.parent->helpers[1]) + message_box.parent->helpers[1]->data = Key_A_png; + + /* final position */ + GUI_DrawMenu(message_box.parent); + } + else + { + gxClearScreen(bg_color); + } + + gxSetScreen(); + + /* clear all textures */ + gxTextureClose(&message_box.window); + gxTextureClose(&message_box.top); + gxTextureClose(&message_box.buttonA); + gxTextureClose(&message_box.throbber); + } +} + +void GUI_WaitPrompt(char *title, char *msg) +{ + if (SILENT) + return; + + /* clear unused texture */ + gxTextureClose(&message_box.throbber); + + /* open or update message box */ + GUI_MsgBoxOpen(title, msg, 0); + + /* allocate texture */ + message_box.buttonA = gxTextureOpenPNG(Key_A_png,0); + + /* wait for button A */ + while (m_input.keys & PAD_BUTTON_A) + VIDEO_WaitVSync(); + while (!(m_input.keys & PAD_BUTTON_A)) + VIDEO_WaitVSync(); + + /* always close message box */ + GUI_MsgBoxClose(); +} + +/* Basic Fading */ +void GUI_FadeOut() +{ + int alpha = 0; + while (alpha < 256) + { + gxDrawRectangle(0, 0, 640, 480, alpha, (GXColor)BLACK); + gxSetScreen(); + alpha +=3; + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/gui.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/gui.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/gui.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/gui.h index 3f53a471be..8238167458 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/gui.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/gui.h @@ -1,245 +1,245 @@ -/**************************************************************************** - * gui.c - * - * generic GUI Engine (using GX rendering) - * - * Copyright Eke-Eke (2009-2010) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _GUI_H -#define _GUI_H - -#define BG_COLOR_MAX 15 - -/*****************************************************************************/ -/* GUI Buttons state */ -/*****************************************************************************/ -#define BUTTON_VISIBLE 0x01 -#define BUTTON_ACTIVE 0x02 -#define BUTTON_SELECTED 0x04 -#define BUTTON_OVER_SFX 0x08 -#define BUTTON_SELECT_SFX 0x10 -#define BUTTON_FADE 0x20 -#define BUTTON_SLIDE_LEFT 0x40 -#define BUTTON_SLIDE_RIGHT 0x80 -#define BUTTON_SLIDE_TOP 0x100 -#define BUTTON_SLIDE_BOTTOM 0x200 - -/*****************************************************************************/ -/* GUI Image state */ -/*****************************************************************************/ -#define IMAGE_VISIBLE 0x01 -#define IMAGE_REPEAT 0x02 -#define IMAGE_FADE 0x04 -#define IMAGE_SLIDE_LEFT 0x08 -#define IMAGE_SLIDE_RIGHT 0x10 -#define IMAGE_SLIDE_TOP 0x20 -#define IMAGE_SLIDE_BOTTOM 0x40 - -/*****************************************************************************/ -/* Generic GUI structures */ -/*****************************************************************************/ - -/* Item descriptor*/ -typedef struct -{ - gx_texture *texture; /* temporary texture data */ - const u8 *data; /* pointer to png image data (items icon only) */ - char text[64]; /* item string (items list only) */ - char comment[64]; /* item comment */ - u16 x; /* item image or text X position (upper left corner) */ - u16 y; /* item image or text Y position (upper left corner) */ - u16 w; /* item image or text width */ - u16 h; /* item image or text height */ -} gui_item; - -/* Button Data descriptor */ -typedef struct -{ - gx_texture *texture[2]; /* temporary texture datas */ - const u8 *image[2]; /* pointer to png image datas (default) */ -} butn_data; - -/* Button descriptor */ -typedef struct -{ - butn_data *data; /* pointer to button image/texture data */ - u16 state; /* button state (ACTIVE,VISIBLE,SELECTED...) */ - u8 shift[4]; /* direction offsets */ - u16 x; /* button image X position (upper left corner) */ - u16 y; /* button image Y position (upper left corner) */ - u16 w; /* button image pixels width */ - u16 h; /* button image pixels height */ -} gui_butn; - -/* Image descriptor */ -typedef struct -{ - gx_texture *texture; /* temporary texture data */ - const u8 *data; /* pointer to png image data */ - u8 state; /* image state (VISIBLE) */ - u16 x; /* image X position (upper left corner) */ - u16 y; /* image Y position (upper left corner) */ - u16 w; /* image width */ - u16 h; /* image height */ - u8 alpha; /* alpha transparency */ -} gui_image; - -/* Menu descriptor */ -typedef struct -{ - char title[64]; /* menu title */ - s8 selected; /* index of selected item */ - s8 offset; /* items list offset */ - u8 max_items; /* total number of items */ - u8 max_buttons; /* total number of buttons */ - u8 max_images; /* total number of background images */ - u8 screenshot; /* game screen background */ - gui_item *items; /* menu items */ - gui_butn *buttons; /* menu buttons */ - gui_image *bg_images; /* background images */ - gui_item *helpers[2]; /* left & right key comments */ - gui_butn *arrows[2]; /* arrows buttons */ - void (*cb)(void); /* specific draw callback */ -} gui_menu; - -typedef struct -{ - u32 progress; /* progress counter */ - bool refresh; /* messagebox current state */ - gui_menu *parent; /* parent menu */ - char title[64]; /* box title */ - char msg[64]; /* box message */ - gx_texture *window; /* pointer to box texture */ - gx_texture *top; /* pointer to box title texture */ - gx_texture *buttonA; /* pointer to button A texture */ - gx_texture *throbber; /* pointer to throbber texture */ -} gui_message; - -/* Menu inputs */ -struct t_input_menu -{ - u16 keys; -#ifdef HW_RVL - struct ir_t ir; -#endif -} m_input; - -/* Optionbox callback */ -typedef void (*optioncallback)(void); - -/* Generic textures*/ -#ifdef HW_RVL -extern gx_texture *w_pointer; -#endif - -/* Generic backgrounds */ -extern const u8 Bg_layer_png[]; -extern const u8 Bg_overlay_png[]; -extern const u8 Banner_main_png[]; -extern const u8 Banner_bottom_png[]; -extern const u8 Banner_top_png[]; -extern const u8 Main_logo_png[]; - -/* Generic frames */ -extern const u8 Frame_s1_png[]; -extern const u8 Frame_s2_png[]; -extern const u8 Frame_s3_png[]; -extern const u8 Frame_s1_title_png[]; -extern const u8 Frame_s2_title_png[]; -extern const u8 Frame_throbber_png[]; - -/* Generic Buttons */ -extern const u8 Button_text_png[]; -extern const u8 Button_text_over_png[]; -extern const u8 Button_icon_png[]; -extern const u8 Button_icon_over_png[]; -extern const u8 Button_icon_sm_png[]; -extern const u8 Button_icon_sm_over_png[]; -extern const u8 Button_up_png[]; -extern const u8 Button_up_over_png[]; -extern const u8 Button_down_png[]; -extern const u8 Button_down_over_png[]; -extern const u8 Button_arrow_png[]; -extern const u8 Button_arrow_over_png[]; -extern const u8 Button_digit_png[]; -extern const u8 Button_digit_over_png[]; - -/* Generic images*/ -#ifdef HW_RVL -#define Key_A_png Key_A_wii_png -#define Key_B_png Key_B_wii_png -extern const u8 generic_point_png[]; -extern const u8 Key_A_wii_png[]; -extern const u8 Key_B_wii_png[]; -#else -#define Key_A_png Key_A_gcn_png -#define Key_B_png Key_B_gcn_png -extern const u8 Key_A_gcn_png[]; -extern const u8 Key_B_gcn_png[]; -#endif -extern const u8 Star_full_png[]; -extern const u8 Star_empty_png[]; -extern const u8 Overlay_bar_png[]; - -/* Generic Sounds */ -extern const u8 button_over_pcm[]; -extern const u8 button_select_pcm[]; -extern const u8 intro_pcm[]; -extern const u32 button_select_pcm_size; -extern const u32 button_over_pcm_size; -extern const u32 intro_pcm_size; - -extern u8 SILENT; - -extern void GUI_InitMenu(gui_menu *menu); -extern void GUI_DeleteMenu(gui_menu *menu); -extern void GUI_DrawMenu(gui_menu *menu); -extern void GUI_DrawMenuFX(gui_menu *menu, u8 speed, u8 out); -extern void GUI_SlideMenuTitle(gui_menu *m, int title_offset); -extern int GUI_UpdateMenu(gui_menu *menu); -extern int GUI_RunMenu(gui_menu *menu); -extern void GUI_TextWindow(gui_menu *parent, char *title, char items[][64], u8 nb_items, u8 fontsize); -extern int GUI_OptionWindow(gui_menu *parent, char *title, char *items[], u8 nb_items); -extern void GUI_OptionBox(gui_menu *parent, optioncallback cb, char *title, void *option, float step, float min, float max, u8 type); -extern void GUI_OptionBox2(gui_menu *parent, char *text_1, char *text_2, s16 *option_1, s16 *option_2, s16 step, s16 min, s16 max); -extern void GUI_MsgBoxOpen(char *title, char *msg, bool throbber); -extern void GUI_MsgBoxUpdate(char *title, char *msg); -extern void GUI_MsgBoxClose(void); -extern void GUI_WaitPrompt(char *title, char *msg); -extern void GUI_FadeOut(); -extern GXColor *GUI_GetBgColor(void); -extern void GUI_SetBgColor(u8 color); - -#endif +/**************************************************************************** + * gui.c + * + * generic GUI Engine (using GX rendering) + * + * Copyright Eke-Eke (2009-2010) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _GUI_H +#define _GUI_H + +#define BG_COLOR_MAX 15 + +/*****************************************************************************/ +/* GUI Buttons state */ +/*****************************************************************************/ +#define BUTTON_VISIBLE 0x01 +#define BUTTON_ACTIVE 0x02 +#define BUTTON_SELECTED 0x04 +#define BUTTON_OVER_SFX 0x08 +#define BUTTON_SELECT_SFX 0x10 +#define BUTTON_FADE 0x20 +#define BUTTON_SLIDE_LEFT 0x40 +#define BUTTON_SLIDE_RIGHT 0x80 +#define BUTTON_SLIDE_TOP 0x100 +#define BUTTON_SLIDE_BOTTOM 0x200 + +/*****************************************************************************/ +/* GUI Image state */ +/*****************************************************************************/ +#define IMAGE_VISIBLE 0x01 +#define IMAGE_REPEAT 0x02 +#define IMAGE_FADE 0x04 +#define IMAGE_SLIDE_LEFT 0x08 +#define IMAGE_SLIDE_RIGHT 0x10 +#define IMAGE_SLIDE_TOP 0x20 +#define IMAGE_SLIDE_BOTTOM 0x40 + +/*****************************************************************************/ +/* Generic GUI structures */ +/*****************************************************************************/ + +/* Item descriptor*/ +typedef struct +{ + gx_texture *texture; /* temporary texture data */ + const u8 *data; /* pointer to png image data (items icon only) */ + char text[64]; /* item string (items list only) */ + char comment[64]; /* item comment */ + u16 x; /* item image or text X position (upper left corner) */ + u16 y; /* item image or text Y position (upper left corner) */ + u16 w; /* item image or text width */ + u16 h; /* item image or text height */ +} gui_item; + +/* Button Data descriptor */ +typedef struct +{ + gx_texture *texture[2]; /* temporary texture datas */ + const u8 *image[2]; /* pointer to png image datas (default) */ +} butn_data; + +/* Button descriptor */ +typedef struct +{ + butn_data *data; /* pointer to button image/texture data */ + u16 state; /* button state (ACTIVE,VISIBLE,SELECTED...) */ + u8 shift[4]; /* direction offsets */ + u16 x; /* button image X position (upper left corner) */ + u16 y; /* button image Y position (upper left corner) */ + u16 w; /* button image pixels width */ + u16 h; /* button image pixels height */ +} gui_butn; + +/* Image descriptor */ +typedef struct +{ + gx_texture *texture; /* temporary texture data */ + const u8 *data; /* pointer to png image data */ + u8 state; /* image state (VISIBLE) */ + u16 x; /* image X position (upper left corner) */ + u16 y; /* image Y position (upper left corner) */ + u16 w; /* image width */ + u16 h; /* image height */ + u8 alpha; /* alpha transparency */ +} gui_image; + +/* Menu descriptor */ +typedef struct +{ + char title[64]; /* menu title */ + s8 selected; /* index of selected item */ + s8 offset; /* items list offset */ + u8 max_items; /* total number of items */ + u8 max_buttons; /* total number of buttons */ + u8 max_images; /* total number of background images */ + u8 screenshot; /* game screen background */ + gui_item *items; /* menu items */ + gui_butn *buttons; /* menu buttons */ + gui_image *bg_images; /* background images */ + gui_item *helpers[2]; /* left & right key comments */ + gui_butn *arrows[2]; /* arrows buttons */ + void (*cb)(void); /* specific draw callback */ +} gui_menu; + +typedef struct +{ + u32 progress; /* progress counter */ + bool refresh; /* messagebox current state */ + gui_menu *parent; /* parent menu */ + char title[64]; /* box title */ + char msg[64]; /* box message */ + gx_texture *window; /* pointer to box texture */ + gx_texture *top; /* pointer to box title texture */ + gx_texture *buttonA; /* pointer to button A texture */ + gx_texture *throbber; /* pointer to throbber texture */ +} gui_message; + +/* Menu inputs */ +struct t_input_menu +{ + u16 keys; +#ifdef HW_RVL + struct ir_t ir; +#endif +} m_input; + +/* Optionbox callback */ +typedef void (*optioncallback)(void); + +/* Generic textures*/ +#ifdef HW_RVL +extern gx_texture *w_pointer; +#endif + +/* Generic backgrounds */ +extern const u8 Bg_layer_png[]; +extern const u8 Bg_overlay_png[]; +extern const u8 Banner_main_png[]; +extern const u8 Banner_bottom_png[]; +extern const u8 Banner_top_png[]; +extern const u8 Main_logo_png[]; + +/* Generic frames */ +extern const u8 Frame_s1_png[]; +extern const u8 Frame_s2_png[]; +extern const u8 Frame_s3_png[]; +extern const u8 Frame_s1_title_png[]; +extern const u8 Frame_s2_title_png[]; +extern const u8 Frame_throbber_png[]; + +/* Generic Buttons */ +extern const u8 Button_text_png[]; +extern const u8 Button_text_over_png[]; +extern const u8 Button_icon_png[]; +extern const u8 Button_icon_over_png[]; +extern const u8 Button_icon_sm_png[]; +extern const u8 Button_icon_sm_over_png[]; +extern const u8 Button_up_png[]; +extern const u8 Button_up_over_png[]; +extern const u8 Button_down_png[]; +extern const u8 Button_down_over_png[]; +extern const u8 Button_arrow_png[]; +extern const u8 Button_arrow_over_png[]; +extern const u8 Button_digit_png[]; +extern const u8 Button_digit_over_png[]; + +/* Generic images*/ +#ifdef HW_RVL +#define Key_A_png Key_A_wii_png +#define Key_B_png Key_B_wii_png +extern const u8 generic_point_png[]; +extern const u8 Key_A_wii_png[]; +extern const u8 Key_B_wii_png[]; +#else +#define Key_A_png Key_A_gcn_png +#define Key_B_png Key_B_gcn_png +extern const u8 Key_A_gcn_png[]; +extern const u8 Key_B_gcn_png[]; +#endif +extern const u8 Star_full_png[]; +extern const u8 Star_empty_png[]; +extern const u8 Overlay_bar_png[]; + +/* Generic Sounds */ +extern const u8 button_over_pcm[]; +extern const u8 button_select_pcm[]; +extern const u8 intro_pcm[]; +extern const u32 button_select_pcm_size; +extern const u32 button_over_pcm_size; +extern const u32 intro_pcm_size; + +extern u8 SILENT; + +extern void GUI_InitMenu(gui_menu *menu); +extern void GUI_DeleteMenu(gui_menu *menu); +extern void GUI_DrawMenu(gui_menu *menu); +extern void GUI_DrawMenuFX(gui_menu *menu, u8 speed, u8 out); +extern void GUI_SlideMenuTitle(gui_menu *m, int title_offset); +extern int GUI_UpdateMenu(gui_menu *menu); +extern int GUI_RunMenu(gui_menu *menu); +extern void GUI_TextWindow(gui_menu *parent, char *title, char items[][64], u8 nb_items, u8 fontsize); +extern int GUI_OptionWindow(gui_menu *parent, char *title, char *items[], u8 nb_items); +extern void GUI_OptionBox(gui_menu *parent, optioncallback cb, char *title, void *option, float step, float min, float max, u8 type); +extern void GUI_OptionBox2(gui_menu *parent, char *text_1, char *text_2, s16 *option_1, s16 *option_2, s16 step, s16 min, s16 max); +extern void GUI_MsgBoxOpen(char *title, char *msg, bool throbber); +extern void GUI_MsgBoxUpdate(char *title, char *msg); +extern void GUI_MsgBoxClose(void); +extern void GUI_WaitPrompt(char *title, char *msg); +extern void GUI_FadeOut(); +extern GXColor *GUI_GetBgColor(void); +extern void GUI_SetBgColor(u8 color); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/legal.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/legal.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/legal.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/legal.c index c3d49da8c6..ad537e8dc6 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/legal.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/legal.c @@ -1,172 +1,172 @@ -/**************************************************************************** - * legal.c - * - * Genesis Plus GX Disclaimer - * - * Copyright Eke-Eke (2009-2012) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "font.h" -#include "gui.h" - -extern const u8 Bg_intro_c1_png[]; -extern const u8 Bg_intro_c2_png[]; -extern const u8 Bg_intro_c3_png[]; -extern const u8 Bg_intro_c4_png[]; - -/* - * This is the legal stuff - which must be shown at program startup - * Any derivative work MUST include the same textual output. - * - */ - -static void show_disclaimer(int ypos) -{ - FONT_writeCenter ("DISCLAIMER",22,0,640,ypos,(GXColor)WHITE); - ypos += 32; - FONT_writeCenter ("This is a free software, and you are welcome",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("to redistribute it under the conditions of the",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("license that you should have received with this",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("program. You may not sell, lease, rent or generally",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("use this software in any commercial product or activity.",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("Authors can not be held responsible for any damage or",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("or dysfunction that could occur while using this port.",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("You may not distribute this software with any ROM image",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("unless you have the legal right to distribute them.",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("This software is not endorsed by or affiliated",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("with Sega Enterprises Ltd or Nintendo Co Ltd.",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("All trademarks and registered trademarks are",20,0,640,ypos,(GXColor)WHITE); - ypos += 20; - FONT_writeCenter ("the property of their respective owners.",20,0,640,ypos,(GXColor)WHITE); - ypos += 38; -} - -void legal () -{ - int count = 2000; - int vis = 0; - -#ifdef HW_RVL - gx_texture *button = gxTextureOpenPNG(Key_A_wii_png,0); -#else - gx_texture *button = gxTextureOpenPNG(Key_A_gcn_png,0); -#endif - gx_texture *logo = gxTextureOpenPNG(Bg_intro_c4_png,0); - - gxClearScreen((GXColor)BLACK); - show_disclaimer(56); - gxDrawTexture(logo, (640-logo->width)/2, 480-24-logo->height, logo->width, logo->height,255); - gxSetScreen(); - sleep(1); - - while (!m_input.keys && count) - { - gxClearScreen((GXColor)BLACK); - show_disclaimer(56); - if (count%25 == 0) vis^=1; - if (vis) - { - FONT_writeCenter("Press button to continue.",24,0,640,366,(GXColor)SKY_BLUE); - gxDrawTexture(button, 220, 366-24+(24-button->height)/2, button->width, button->height,255); - } - gxDrawTexture(logo, (640-logo->width)/2, 480-24-logo->height, logo->width, logo->height,255); - gxSetScreen(); - count--; - } - - gxTextureClose(&button); - gxTextureClose(&logo); - - if (count > 0) - { - ASND_Pause(0); - int voice = ASND_GetFirstUnusedVoice(); - ASND_SetVoice(voice,VOICE_MONO_16BIT,44100,0,(u8 *)button_select_pcm,button_select_pcm_size,200,200,NULL); - GUI_FadeOut(); - ASND_Pause(1); - return; - } - - gxClearScreen((GXColor)BLACK); - gx_texture *texture = gxTextureOpenPNG(Bg_intro_c1_png,0); - if (texture) - { - gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); - if (texture->data) free(texture->data); - free(texture); - } - gxSetScreen(); - - sleep (1); - - gxClearScreen((GXColor)WHITE); - texture = gxTextureOpenPNG(Bg_intro_c2_png,0); - if (texture) - { - gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); - if (texture->data) free(texture->data); - free(texture); - } - gxSetScreen(); - - sleep (1); - - gxClearScreen((GXColor)BLACK); - texture = gxTextureOpenPNG(Bg_intro_c3_png,0); - if (texture) - { - gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); - if (texture->data) free(texture->data); - free(texture); - } - gxSetScreen(); - - ASND_Pause(0); - int voice = ASND_GetFirstUnusedVoice(); - ASND_SetVoice(voice,VOICE_MONO_16BIT,44100,0,(u8 *)intro_pcm,intro_pcm_size,200,200,NULL); - sleep (2); - ASND_Pause(1); -} +/**************************************************************************** + * legal.c + * + * Genesis Plus GX Disclaimer + * + * Copyright Eke-Eke (2009-2012) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "font.h" +#include "gui.h" + +extern const u8 Bg_intro_c1_png[]; +extern const u8 Bg_intro_c2_png[]; +extern const u8 Bg_intro_c3_png[]; +extern const u8 Bg_intro_c4_png[]; + +/* + * This is the legal stuff - which must be shown at program startup + * Any derivative work MUST include the same textual output. + * + */ + +static void show_disclaimer(int ypos) +{ + FONT_writeCenter ("DISCLAIMER",22,0,640,ypos,(GXColor)WHITE); + ypos += 32; + FONT_writeCenter ("This is a free software, and you are welcome",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("to redistribute it under the conditions of the",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("license that you should have received with this",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("program. You may not sell, lease, rent or generally",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("use this software in any commercial product or activity.",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("Authors can not be held responsible for any damage or",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("or dysfunction that could occur while using this port.",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("You may not distribute this software with any ROM image",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("unless you have the legal right to distribute them.",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("This software is not endorsed by or affiliated",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("with Sega Enterprises Ltd or Nintendo Co Ltd.",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("All trademarks and registered trademarks are",20,0,640,ypos,(GXColor)WHITE); + ypos += 20; + FONT_writeCenter ("the property of their respective owners.",20,0,640,ypos,(GXColor)WHITE); + ypos += 38; +} + +void legal () +{ + int count = 2000; + int vis = 0; + +#ifdef HW_RVL + gx_texture *button = gxTextureOpenPNG(Key_A_wii_png,0); +#else + gx_texture *button = gxTextureOpenPNG(Key_A_gcn_png,0); +#endif + gx_texture *logo = gxTextureOpenPNG(Bg_intro_c4_png,0); + + gxClearScreen((GXColor)BLACK); + show_disclaimer(56); + gxDrawTexture(logo, (640-logo->width)/2, 480-24-logo->height, logo->width, logo->height,255); + gxSetScreen(); + sleep(1); + + while (!m_input.keys && count) + { + gxClearScreen((GXColor)BLACK); + show_disclaimer(56); + if (count%25 == 0) vis^=1; + if (vis) + { + FONT_writeCenter("Press button to continue.",24,0,640,366,(GXColor)SKY_BLUE); + gxDrawTexture(button, 220, 366-24+(24-button->height)/2, button->width, button->height,255); + } + gxDrawTexture(logo, (640-logo->width)/2, 480-24-logo->height, logo->width, logo->height,255); + gxSetScreen(); + count--; + } + + gxTextureClose(&button); + gxTextureClose(&logo); + + if (count > 0) + { + ASND_Pause(0); + int voice = ASND_GetFirstUnusedVoice(); + ASND_SetVoice(voice,VOICE_MONO_16BIT,44100,0,(u8 *)button_select_pcm,button_select_pcm_size,200,200,NULL); + GUI_FadeOut(); + ASND_Pause(1); + return; + } + + gxClearScreen((GXColor)BLACK); + gx_texture *texture = gxTextureOpenPNG(Bg_intro_c1_png,0); + if (texture) + { + gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); + if (texture->data) free(texture->data); + free(texture); + } + gxSetScreen(); + + sleep (1); + + gxClearScreen((GXColor)WHITE); + texture = gxTextureOpenPNG(Bg_intro_c2_png,0); + if (texture) + { + gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); + if (texture->data) free(texture->data); + free(texture); + } + gxSetScreen(); + + sleep (1); + + gxClearScreen((GXColor)BLACK); + texture = gxTextureOpenPNG(Bg_intro_c3_png,0); + if (texture) + { + gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); + if (texture->data) free(texture->data); + free(texture); + } + gxSetScreen(); + + ASND_Pause(0); + int voice = ASND_GetFirstUnusedVoice(); + ASND_SetVoice(voice,VOICE_MONO_16BIT,44100,0,(u8 *)intro_pcm,intro_pcm_size,200,200,NULL); + sleep (2); + ASND_Pause(1); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/menu.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/menu.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/menu.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/menu.c index b3beba6db3..3b86e8d721 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/menu.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/menu.c @@ -1,3687 +1,3687 @@ -/**************************************************************************** - * menu.c - * - * Genesis Plus GX menu - * - * Copyright Eke-Eke (2009-2013) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "font.h" -#include "gui.h" -#include "filesel.h" -#include "cheats.h" -#include "file_load.h" -#include "file_slot.h" - -#ifdef HW_RVL -#include -#endif - -#include -#include - -/* Credits */ -extern const u8 Bg_credits_png[]; - -/* Main menu */ -extern const u8 Main_load_png[]; -extern const u8 Main_options_png[]; -extern const u8 Main_quit_png[]; -extern const u8 Main_file_png[]; -extern const u8 Main_reset_png[]; -extern const u8 Main_cheats_png[]; -extern const u8 Main_showinfo_png[]; -extern const u8 Main_takeshot_png[]; -#ifdef HW_RVL -extern const u8 Main_play_wii_png[]; -#else -extern const u8 Main_play_gcn_png[]; -#endif - -/* Options menu */ -extern const u8 Option_menu_png[]; -extern const u8 Option_ctrl_png[]; -extern const u8 Option_sound_png[]; -extern const u8 Option_video_png[]; -extern const u8 Option_system_png[]; - -/* Load ROM menu */ -extern const u8 Load_recent_png[]; -extern const u8 Load_md_png[]; -extern const u8 Load_ms_png[]; -extern const u8 Load_gg_png[]; -extern const u8 Load_sg_png[]; -extern const u8 Load_cd_png[]; - -/* Save Manager menu */ -extern const u8 Button_load_png[]; -extern const u8 Button_load_over_png[]; -extern const u8 Button_save_png[]; -extern const u8 Button_save_over_png[]; -extern const u8 Button_special_png[]; -extern const u8 Button_special_over_png[]; -extern const u8 Button_delete_png[]; -extern const u8 Button_delete_over_png[]; - -/* Controller Settings */ -extern const u8 Ctrl_4wayplay_png[]; -extern const u8 Ctrl_gamepad_md_png[]; -extern const u8 Ctrl_gamepad_ms_png[]; -extern const u8 Ctrl_justifiers_png[]; -extern const u8 Ctrl_menacer_png[]; -extern const u8 Ctrl_mouse_png[]; -extern const u8 Ctrl_xe_a1p_png[]; -extern const u8 Ctrl_activator_png[]; -extern const u8 Ctrl_lightphaser_png[]; -extern const u8 Ctrl_paddle_png[]; -extern const u8 Ctrl_sportspad_png[]; -extern const u8 Ctrl_none_png[]; -extern const u8 Ctrl_teamplayer_png[]; -extern const u8 Ctrl_pad3b_png[]; -extern const u8 Ctrl_pad6b_png[]; -extern const u8 Ctrl_config_png[]; -extern const u8 ctrl_option_off_png[]; -extern const u8 ctrl_option_on_png[]; -extern const u8 ctrl_gamecube_png[]; -#ifdef HW_RVL -extern const u8 ctrl_classic_png[]; -extern const u8 ctrl_nunchuk_png[]; -extern const u8 ctrl_wiimote_png[]; -#endif - -/* Generic images */ -extern const u8 Button_sm_blue_png[]; -extern const u8 Button_sm_grey_png[]; -extern const u8 Button_sm_yellow_png[]; - -/*****************************************************************************/ -/* Specific Menu Callbacks */ -/*****************************************************************************/ -static void ctrlmenu_cb(void); -static void savemenu_cb(void); -static void mainmenu_cb(void); - -/*****************************************************************************/ -/* Generic Buttons data */ -/*****************************************************************************/ -static butn_data arrow_up_data = -{ - {NULL,NULL}, - {Button_up_png,Button_up_over_png} -}; - -static butn_data arrow_down_data = -{ - {NULL,NULL}, - {Button_down_png,Button_down_over_png} -}; - -static butn_data button_text_data = -{ - {NULL,NULL}, - {Button_text_png,Button_text_over_png} -}; - -static butn_data button_icon_data = -{ - {NULL,NULL}, - {Button_icon_png,Button_icon_over_png} -}; - -static butn_data button_icon_sm_data = -{ - {NULL,NULL}, - {Button_icon_sm_png,Button_icon_sm_over_png} -}; - -static butn_data button_player_data = -{ - {NULL,NULL}, - {Button_sm_blue_png,Button_sm_yellow_png} -}; - -static butn_data button_player_none_data = -{ - {NULL,NULL}, - {Button_sm_grey_png,NULL} -}; - -static butn_data button_load_data = -{ - {NULL,NULL}, - {Button_load_png,Button_load_over_png} -}; - -static butn_data button_save_data = -{ - {NULL,NULL}, - {Button_save_png,Button_save_over_png} -}; - -static butn_data button_special_data = -{ - {NULL,NULL}, - {Button_special_png,Button_special_over_png} -}; - -static butn_data button_delete_data = -{ - {NULL,NULL}, - {Button_delete_png,Button_delete_over_png} -}; - -/*****************************************************************************/ -/* Generic GUI items */ -/*****************************************************************************/ -static gui_item action_cancel = -{ - NULL,Key_B_png,"","Back",10,422,28,28 -}; - -static gui_item action_select = -{ - NULL,Key_A_png,"","",602,422,28,28 -}; - -/*****************************************************************************/ -/* GUI backgrounds images */ -/*****************************************************************************/ -static gui_image bg_main[4] = -{ - {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Banner_main_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,340,640,140,255}, - {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,202,362,232,56,255} -}; - -static gui_image bg_misc[5] = -{ - {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Banner_top_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,0,0,640,108,255}, - {NULL,Banner_bottom_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,380,640,100,255}, - {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,466,40,152,44,255} -}; - -static gui_image bg_ctrls[8] = -{ - {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Banner_top_png,IMAGE_VISIBLE,0,0,640,108,255}, - {NULL,Banner_bottom_png,IMAGE_VISIBLE,0,380,640,100,255}, - {NULL,Main_logo_png,IMAGE_VISIBLE,466,40,152,44,255}, - {NULL,Frame_s2_png,IMAGE_VISIBLE,38,72,316,168,128}, - {NULL,Frame_s2_png,IMAGE_VISIBLE,38,242,316,168,128}, - {NULL,Frame_s3_png,IMAGE_SLIDE_RIGHT,400,134,292,248,128} -}; - -static gui_image bg_list[6] = -{ - {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Banner_top_png,IMAGE_VISIBLE,0,0,640,108,255}, - {NULL,Banner_bottom_png,IMAGE_VISIBLE,0,380,640,100,255}, - {NULL,Main_logo_png,IMAGE_VISIBLE,466,40,152,44,255}, - {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,76} -}; - -static gui_image bg_saves[8] = -{ - {NULL,NULL,0,0,0,0,0,255}, - {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, - {NULL,Banner_top_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,0,0,640,108,255}, - {NULL,Banner_bottom_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,380,640,100,255}, - {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,466,40,152,44,255}, - {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,76}, - {NULL,Frame_s1_png,IMAGE_SLIDE_RIGHT,468,108,372,296,76} -}; - -/*****************************************************************************/ -/* Menu Items description */ -/*****************************************************************************/ - -/* Main menu */ -static gui_item items_main[10] = -{ - {NULL,Main_load_png ,"","",114,162,80,92}, - {NULL,Main_options_png ,"","",290,166,60,88}, - {NULL,Main_quit_png ,"","",460,170,52,84}, - {NULL,Main_file_png ,"","",114,216,80,92}, - {NULL,Main_reset_png ,"","",294,227,52,80}, - {NULL,Main_cheats_png ,"","",454,218,64,92}, - {NULL,NULL ,"","", 10,334,84,32}, -#ifdef HW_RVL - {NULL,Main_play_wii_png,"","", 10,372,84,32}, -#else - {NULL,Main_play_gcn_png,"","", 10,372,84,32}, -#endif - {NULL,Main_takeshot_png,"","",546,334,84,32}, - {NULL,Main_showinfo_png,"","",546,372,84,32} -}; - -/* Controllers menu */ -static gui_item items_ctrls[13] = -{ - {NULL,NULL,"","", 0, 0, 0, 0}, - {NULL,NULL,"","", 0, 0, 0, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","",305, 0, 24, 0}, - {NULL,NULL,"","", 0, 0, 0, 0}, - {NULL,NULL,"","", 0, 0, 0, 0}, - {NULL,Ctrl_config_png,"Keys\nConfig","Configure Controller Keys",530,306,32,32} -}; - -/* Load menu */ -static gui_item items_load[6] = -{ - {NULL,Load_recent_png,"","Load recently played games", 119,144,72, 92}, - {NULL,Load_md_png, "","Load Mega Drive/Genesis games", 278,141,84, 92}, - {NULL,Load_cd_png, "","Load Sega/Mega CD games", 454,141,64, 92}, - {NULL,Load_ms_png, "","Load Master System games", 114,284,84, 96}, - {NULL,Load_gg_png, "","Load Game Gear games", 278,283,84,100}, - {NULL,Load_sg_png, "","Load SG-1000 games", 454,281,64, 96} -}; - -/* Option menu */ -static gui_item items_options[5] = -{ - {NULL,Option_system_png,"","System settings", 114,142,80,92}, - {NULL,Option_video_png, "","Video settings", 288,150,64,84}, - {NULL,Option_sound_png, "","Audio settings", 464,154,44,80}, - {NULL,Option_ctrl_png, "","Controllers settings", 192,286,88,92}, - {NULL,Option_menu_png, "","Menu settings", 370,286,60,92} -}; - -/* Audio options */ -static gui_item items_audio[13] = -{ - {NULL,NULL,"Master System FM: AUTO", "Enable/disable YM2413 chip", 56,132,276,48}, - {NULL,NULL,"High-Quality FM: ON", "Adjust YM2612/YM2413 resampling quality", 56,132,276,48}, - {NULL,NULL,"FM Resolution: MAX", "Adjust YM2612 DAC precision", 56,132,276,48}, - {NULL,NULL,"FM Volume: 1.00", "Adjust YM2612/YM2413 output level", 56,132,276,48}, - {NULL,NULL,"PSG Volume: 2.50", "Adjust SN76489 output level", 56,132,276,48}, - {NULL,NULL,"PSG Noise Boost: OFF", "Boost SN76489 Noise Channel", 56,132,276,48}, - {NULL,NULL,"Audio Out: STEREO", "Select audio mixing output type", 56,132,276,48}, - {NULL,NULL,"Filtering: 3-BAND EQ", "Setup Audio filtering", 56,132,276,48}, - {NULL,NULL,"Low Gain: 1.00", "Adjust EQ Low Band Gain", 56,132,276,48}, - {NULL,NULL,"Mid Gain: 1.00", "Adjust EQ Mid Band Gain", 56,132,276,48}, - {NULL,NULL,"High Gain: 1.00", "Adjust EQ High Band Gain", 56,132,276,48}, - {NULL,NULL,"Low Freq: 200 Hz", "Adjust EQ Lowest Frequency", 56,132,276,48}, - {NULL,NULL,"High Freq: 20000 Hz", "Adjust EQ Highest Frequency", 56,132,276,48} -}; - -/* System options */ -static gui_item items_system[10] = -{ - {NULL,NULL,"Console Hardware: AUTO", "Select system hardware model", 56,132,276,48}, - {NULL,NULL,"Console Region: AUTO", "Select system region", 56,132,276,48}, - {NULL,NULL,"VDP Mode: AUTO", "Select VDP mode", 56,132,276,48}, - {NULL,NULL,"System Clock: AUTO", "Select system clock frequency", 56,132,276,48}, - {NULL,NULL,"System Boot: BIOS&CART", "Select system booting method", 56,132,276,48}, - {NULL,NULL,"System Lockups: ON", "Enable/disable original system lock-ups", 56,132,276,48}, - {NULL,NULL,"68k Address Error: ON", "Enable/disable 68k address error exceptions", 56,132,276,48}, - {NULL,NULL,"Lock-on: OFF", "Select Lock-On cartridge type", 56,132,276,48}, - {NULL,NULL,"Cartridge Swap: OFF", "Enable/disable cartridge hot swap", 56,132,276,48}, - {NULL,NULL,"SVP Cycles: 1500", "Adjust SVP chip emulation speed", 56,132,276,48} -}; - -/* Video options */ -#ifdef HW_RVL -static gui_item items_video[13] = -#else -static gui_item items_video[11] = -#endif -{ - {NULL,NULL,"Display: PROGRESSIVE", "Select video mode", 56,132,276,48}, - {NULL,NULL,"TV mode: 50/60Hz", "Select video refresh rate", 56,132,276,48}, - {NULL,NULL,"VSYNC: AUTO", "Enable/disable sync with Video Hardware", 56,132,276,48}, - {NULL,NULL,"GX Bilinear Filter: OFF", "Enable/disable texture hardware filtering", 56,132,276,48}, - {NULL,NULL,"GX Deflickering Filter: OFF","Enable/disable GX hardware filtering", 56,132,276,48}, -#ifdef HW_RVL - {NULL,NULL,"VI Trap Filter: ON", "Enable/disable video hardware filtering", 56,132,276,48}, - {NULL,NULL,"VI Gamma Correction: 1.0", "Adjust video hardware gamma correction", 56,132,276,48}, -#endif - {NULL,NULL,"NTSC Filter: COMPOSITE", "Enable/disable NTSC software filtering", 56,132,276,48}, - {NULL,NULL,"Borders: OFF", "Enable/disable overscan emulation", 56,132,276,48}, - {NULL,NULL,"GG screen: ORIGINAL", "Enable/disable Game Gear extended screen", 56,132,276,48}, - {NULL,NULL,"Aspect: ORIGINAL (4:3)", "Select display aspect ratio", 56,132,276,48}, - {NULL,NULL,"Screen Position (+0,+0)", "Adjust display position", 56,132,276,48}, - {NULL,NULL,"Screen Scaling (+0,+0)", "Adjust display scaling", 56,132,276,48} -}; - -/* Menu options */ -static gui_item items_prefs[10] = -{ - {NULL,NULL,"Auto ROM Load: OFF", "Enable/Disable automatic ROM loading on startup", 56,132,276,48}, - {NULL,NULL,"Auto Cheats: OFF", "Enable/Disable automatic cheats activation", 56,132,276,48}, - {NULL,NULL,"Auto Saves: OFF", "Enable/Disable automatic saves", 56,132,276,48}, - {NULL,NULL,"ROM Load Device: SD", "Configure default device for ROM files", 56,132,276,48}, - {NULL,NULL,"Saves Device: FAT", "Configure default device for Save files", 56,132,276,48}, - {NULL,NULL,"SFX Volume: 100", "Adjust sound effects volume", 56,132,276,48}, - {NULL,NULL,"BGM Volume: 100", "Adjust background music volume", 56,132,276,48}, - {NULL,NULL,"BG Overlay: ON", "Enable/disable background overlay", 56,132,276,48}, - {NULL,NULL,"Screen Width: 658", "Adjust menu screen width in pixels", 56,132,276,48}, - {NULL,NULL,"Show CD Leds: OFF", "Enable/Disable CD leds display", 56,132,276,48}, -}; - -/* Save Manager */ -static gui_item items_saves[9] = -{ - {NULL,NULL,"","" ,0,0,0,0}, - {NULL,NULL,"","" ,0,0,0,0}, - {NULL,NULL,"","" ,0,0,0,0}, - {NULL,NULL,"","" ,0,0,0,0}, - {NULL,NULL,"","" ,0,0,0,0}, - {NULL,NULL,"","Load file" ,0,0,0,0}, - {NULL,NULL,"","Set as default file",0,0,0,0}, - {NULL,NULL,"","Delete file" ,0,0,0,0}, - {NULL,NULL,"","Save file" ,0,0,0,0} -}; - -/*****************************************************************************/ -/* Menu Buttons description */ -/*****************************************************************************/ - -/* Generic Buttons for list menu */ -static gui_butn arrow_up = {&arrow_up_data,BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,76,360,32}; -static gui_butn arrow_down = {&arrow_down_data,BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,368,360,32}; - -/* Generic list menu */ -static gui_butn buttons_list[4] = -{ - {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,132,276,48}, - {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,188,276,48}, - {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,244,276,48}, - {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,300,276,48} -}; - -/* Main menu */ -static gui_butn buttons_main[10] = -{ - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,0,0,1}, 80,140,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,0,1,1},246,140,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,0,1,0},412,140,148,132}, - {&button_icon_data, BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,4,0,1}, 80,194,148,132}, - {&button_icon_data, BUTTON_OVER_SFX ,{3,4,1,1},246,194,148,132}, - {&button_icon_data, BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,3,1,0},412,194,148,132}, - {NULL , BUTTON_OVER_SFX ,{3,1,0,2}, 10,334, 84, 32}, - {NULL , BUTTON_OVER_SFX ,{4,0,0,2}, 10,372, 84, 32}, - {NULL , BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,1,1,0},546,334, 84, 32}, - {NULL , BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,0,2,0},546,372, 84, 32} -}; - -/* Controllers Menu */ -static gui_butn buttons_ctrls[13] = -{ - {&button_icon_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX ,{0,1,0,2}, 60, 88,148,132}, - {&button_icon_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX ,{1,0,0,5}, 60,258,148,132}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,1,2,0},250, 79, 84, 32}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,3,0},250,117, 84, 32}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,4,0},250,155, 84, 32}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,5,0},250,193, 84, 32}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,5,0},250,249, 84, 32}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,6,0},250,287, 84, 32}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,7,0},250,325, 84, 32}, - {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,0,8,0},250,363, 84, 32}, - {&button_icon_sm_data ,BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX ,{0,1,1,0},436,168,160, 52}, - {&button_icon_sm_data ,BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX ,{1,1,0,0},436,232,160, 52}, - {&button_icon_sm_data ,BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX|BUTTON_SELECT_SFX ,{1,0,0,0},436,296,160, 52} -}; - -/* Load Game menu */ -static gui_butn buttons_load[6] = -{ - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,0,1}, 80,120,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,1,1},246,120,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,1,0},412,120,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,0,1}, 80,264,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,1,1},246,264,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,1,0},412,264,148,132} -}; - -/* Options menu */ -static gui_butn buttons_options[5] = -{ - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,0,1}, 80,120,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,1,1},246,120,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,2,1,1},412,120,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,1,1},162,264,148,132}, - {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{2,0,1,0},330,264,148,132} -}; - -/* Save Manager Menu */ -static gui_butn buttons_saves[9] = -{ - {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,1,0,0}, 56,102,276,48}, - {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0}, 56,158,276,48}, - {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0}, 56,214,276,48}, - {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0}, 56,270,276,48}, - {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,0,0,0}, 56,326,276,48}, - {&button_load_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,1,0,0},530,130, 56,56}, - {&button_special_data,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{1,1,0,0},530,196, 56,56}, - {&button_delete_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{1,1,0,0},530,262, 56,56}, - {&button_save_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{1,0,0,0},530,328, 56,56} -}; - -/*****************************************************************************/ -/* Menu descriptions */ -/*****************************************************************************/ - -/* Main menu */ -static gui_menu menu_main = -{ - "", - 0,0, - 10,10,4,0, - items_main, - buttons_main, - bg_main, - {NULL,NULL}, - {NULL,NULL}, - NULL -}; - -/* Main menu */ -gui_menu menu_ctrls = -{ - "Controller Settings", - 0,0, - 13,13,8,0, - items_ctrls, - buttons_ctrls, - bg_ctrls, - {&action_cancel, &action_select}, - {NULL,NULL}, - ctrlmenu_cb -}; - -/* Load Game menu */ -static gui_menu menu_load = -{ - "Load Game", - 0,0, - 6,6,5,0, - items_load, - buttons_load, - bg_misc, - {&action_cancel, &action_select}, - {NULL,NULL}, - NULL -}; - -/* Options menu */ -static gui_menu menu_options = -{ - "Settings", - 0,0, - 5,5,5,0, - items_options, - buttons_options, - bg_misc, - {&action_cancel, &action_select}, - {NULL,NULL}, - NULL -}; - -/* System Options menu */ -static gui_menu menu_system = -{ - "System Settings", - 0,0, - 10,4,6,0, - items_system, - buttons_list, - bg_list, - {&action_cancel, &action_select}, - {&arrow_up,&arrow_down}, - NULL -}; - -/* Video Options menu */ -static gui_menu menu_video = -{ - "Video Settings", - 0,0, - 10,4,6,0, - items_video, - buttons_list, - bg_list, - {&action_cancel, &action_select}, - {&arrow_up,&arrow_down}, - NULL -}; - -/* Sound Options menu */ -static gui_menu menu_audio = -{ - "Audio Settings", - 0,0, - 9,4,6,0, - items_audio, - buttons_list, - bg_list, - {&action_cancel, &action_select}, - {&arrow_up,&arrow_down}, - NULL -}; - -/* Sound Options menu */ -static gui_menu menu_prefs = -{ - "Menu Settings", - 0,0, - 10,4,6,0, - items_prefs, - buttons_list, - bg_list, - {&action_cancel, &action_select}, - {&arrow_up,&arrow_down}, - NULL -}; - - -/* Save Manager menu */ -static gui_menu menu_saves = -{ - "Save Manager", - 0,0, - 9,9,8,0, - items_saves, - buttons_saves, - bg_saves, - {&action_cancel, &action_select}, - {NULL,NULL}, - savemenu_cb -}; - -/**************************************************************************** - * GUI Settings menu - * - ****************************************************************************/ -static void update_screen_w(void) -{ - vmode->viWidth = config.screen_w; - vmode->viXOrigin = (VI_MAX_WIDTH_NTSC -config.screen_w)/2; - VIDEO_Configure(vmode); - VIDEO_Flush(); -} - -static void update_bgm(void) -{ - SetVolumeOgg(((int)config.bgm_volume * 255) / 100); -} - -static void prefmenu () -{ - int ret, quit = 0; - gui_menu *m = &menu_prefs; - gui_item *items = m->items; - - sprintf (items[0].text, "Auto ROM Load: %s", config.autoload ? "ON":"OFF"); - sprintf (items[1].text, "Auto Cheats: %s", config.autocheat ? "ON":"OFF"); - if (config.s_auto == 3) sprintf (items[2].text, "Auto Saves: ALL"); - else if (config.s_auto == 2) sprintf (items[2].text, "Auto Saves: STATE ONLY"); - else if (config.s_auto == 1) sprintf (items[2].text, "Auto Saves: SRAM ONLY"); - else sprintf (items[2].text, "Auto Saves: NONE"); -#ifdef HW_RVL - if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: USB"); - else if (config.l_device == 2) sprintf (items[3].text, "ROM Load Device: DVD"); -#else - if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: DVD"); -#endif - else sprintf (items[3].text, "ROM Load Device: SD"); - if (config.s_device == 1) sprintf (items[4].text, "Saves Device: MCARD A"); - else if (config.s_device == 2) sprintf (items[4].text, "Saves Device: MCARD B"); - else sprintf (items[4].text, "Saves Device: FAT"); - sprintf (items[5].text, "SFX Volume: %1.1f", config.sfx_volume); - sprintf (items[6].text, "BGM Volume: %1.1f", config.bgm_volume); - sprintf (items[7].text, "BG Overlay: %s", config.bg_overlay ? "ON":"OFF"); - sprintf (items[8].text, "Screen Width: %d", config.screen_w); - sprintf (items[9].text, "Show CD Leds: %s", config.cd_leds ? "ON":"OFF"); - - GUI_InitMenu(m); - GUI_SlideMenuTitle(m,strlen("Menu ")); - - while (quit == 0) - { - ret = GUI_RunMenu(m); - - switch (ret) - { - case 0: /* Auto load last ROM file on startup */ - config.autoload ^= 1; - sprintf (items[0].text, "Auto ROM Load: %s", config.autoload ? "ON":"OFF"); - break; - - case 1: /* Cheats automatic activation */ - config.autocheat ^= 1; - sprintf (items[1].text, "Auto Cheats: %s", config.autocheat ? "ON":"OFF"); - break; - - case 2: /*** Auto load/save STATE & SRAM files ***/ - config.s_auto = (config.s_auto + 1) % 4; - if (config.s_auto == 3) sprintf (items[2].text, "Auto Saves: ALL"); - else if (config.s_auto == 2) sprintf (items[2].text, "Auto Saves: STATE ONLY"); - else if (config.s_auto == 1) sprintf (items[2].text, "Auto Saves: SRAM ONLY"); - else sprintf (items[2].text, "Auto Saves: NONE"); - break; - - case 3: /*** Default ROM device ***/ -#ifdef HW_RVL - config.l_device = (config.l_device + 1) % 3; - if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: USB"); - else if (config.l_device == 2) sprintf (items[3].text, "ROM Load Device: DVD"); -#else - config.l_device ^= 1; - if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: DVD"); -#endif - else sprintf (items[3].text, "ROM Load Device: SD"); - break; - - case 4: /*** Default saves device ***/ - config.s_device = (config.s_device + 1) % 3; - if (config.s_device == 1) sprintf (items[4].text, "Saves Device: MCARD A"); - else if (config.s_device == 2) sprintf (items[4].text, "Saves Device: MCARD B"); - else sprintf (items[4].text, "Saves Device: FAT"); - break; - - case 5: /*** Sound effects volume ***/ - GUI_OptionBox(m,0,"SFX Volume",(void *)&config.sfx_volume,10.0,0.0,100.0,0); - sprintf (items[5].text, "SFX Volume: %1.1f", config.sfx_volume); - break; - - case 6: /*** Background music volume ***/ - GUI_OptionBox(m,update_bgm,"BGM Volume",(void *)&config.bgm_volume,10.0,0.0,100.0,0); - sprintf (items[6].text, "BGM Volume: %1.1f", config.bgm_volume); - break; - - case 7: /*** Background overlay ***/ - config.bg_overlay ^= 1; - if (config.bg_overlay) - { - bg_main[1].state |= IMAGE_VISIBLE; - bg_misc[1].state |= IMAGE_VISIBLE; - bg_ctrls[1].state |= IMAGE_VISIBLE; - bg_list[1].state |= IMAGE_VISIBLE; - bg_saves[2].state |= IMAGE_VISIBLE; - sprintf (items[7].text, "BG Overlay: ON"); - } - else - { - bg_main[1].state &= ~IMAGE_VISIBLE; - bg_misc[1].state &= ~IMAGE_VISIBLE; - bg_ctrls[1].state &= ~IMAGE_VISIBLE; - bg_list[1].state &= ~IMAGE_VISIBLE; - bg_saves[2].state &= ~IMAGE_VISIBLE; - sprintf (items[7].text, "BG Overlay: OFF"); - } - break; - - case 8: /*** Screen Width ***/ - GUI_OptionBox(m,update_screen_w,"Screen Width",(void *)&config.screen_w,2,640,VI_MAX_WIDTH_NTSC,1); - sprintf (items[8].text, "Screen Width: %d", config.screen_w); - break; - - case 9: /*** CD LEDS ***/ - config.cd_leds ^= 1; - sprintf (items[9].text, "Show CD Leds: %s", config.cd_leds ? "ON":"OFF"); - break; - - case -1: - quit = 1; - break; - } - } - - /* stop DVD drive when not in use */ - if (config.l_device != 2) - { -#ifdef HW_RVL - DI_StopMotor(); -#else - vu32* const dvd = (u32*)0xCC006000; - dvd[0] = 0x2e; - dvd[1] = 0; - dvd[2] = 0xe3000000; - dvd[3] = 0; - dvd[4] = 0; - dvd[5] = 0; - dvd[6] = 0; - dvd[7] = 1; - while (dvd[7] & 1); - dvd[0] = 0x14; - dvd[1] = 0; -#endif - } - - GUI_DeleteMenu(m); -} - -/**************************************************************************** - * Audio Settings menu - * - ****************************************************************************/ -static void soundmenu () -{ - int ret, quit = 0; - float fm_volume = (float)config.fm_preamp/100.0; - float psg_volume = (float)config.psg_preamp/100.0; - gui_menu *m = &menu_audio; - gui_item *items = m->items; - - if (config.ym2413 == 0) sprintf (items[0].text, "Master System FM: OFF"); - else if (config.ym2413 == 1) sprintf (items[0].text, "Master System FM: ON"); - else sprintf (items[0].text, "Master System FM: AUTO"); - - if (config.hq_fm) sprintf (items[1].text, "High-Quality FM: ON"); - else sprintf (items[1].text, "High-Quality FM: OFF"); - - if (config.dac_bits < 14) sprintf (items[2].text, "FM Resolution: %d bits", config.dac_bits); - else sprintf (items[2].text, "FM Resolution: MAX"); - - sprintf (items[3].text, "FM Volume: %1.2f", fm_volume); - sprintf (items[4].text, "PSG Volume: %1.2f", psg_volume); - sprintf (items[5].text, "PSG Noise Boost: %s", config.psgBoostNoise ? "ON":"OFF"); - sprintf (items[6].text, "Audio Out: %s", config.mono ? "MONO":"STEREO"); - - if (config.filter == 2) - { - float lg = (float)config.lg/100.0; - float mg = (float)config.mg/100.0; - float hg = (float)config.hg/100.0; - - sprintf(items[7].text, "Filtering: 3-BAND EQ"); - sprintf(items[8].text, "Low Gain: %1.2f", lg); - strcpy(items[8].comment, "Adjust EQ Low Band Gain"); - sprintf(items[9].text, "Middle Gain: %1.2f", mg); - sprintf(items[10].text, "High Gain: %1.2f", hg); - sprintf(items[11].text, "Low Freq: %d", config.low_freq); - sprintf(items[12].text, "High Freq: %d", config.high_freq); - m->max_items = 13; - } - else if (config.filter == 1) - { - int lp_range = (config.lp_range * 100 + 0xffff) / 0x10000; - sprintf (items[7].text, "Filtering: LOW-PASS"); - sprintf (items[8].text, "Low-Pass Rate: %d %%", lp_range); - strcpy (items[9].comment, "Adjust Low Pass filter"); - m->max_items = 9; - } - else - { - sprintf (items[7].text, "Filtering: OFF"); - m->max_items = 8; - } - - GUI_InitMenu(m); - GUI_SlideMenuTitle(m,strlen("Audio ")); - - while (quit == 0) - { - ret = GUI_RunMenu(m); - - switch (ret) - { - case 0: - { - config.ym2413++; - if (config.ym2413 > 2) config.ym2413 = 0; - if (config.ym2413 == 0) sprintf (items[0].text, "Master System FM: OFF"); - else if (config.ym2413 == 1) sprintf (items[0].text, "Master System FM: ON"); - else sprintf (items[0].text, "Master System FM: AUTO"); - - /* Automatic detection */ - if ((config.ym2413 & 2) && system_hw && ((system_hw & SYSTEM_PBC) != SYSTEM_MD)) - { - /* detect if game is using YM2413 */ - sms_cart_init(); - - /* restore SRAM */ - slot_autoload(0,config.s_device); - } - break; - } - - case 1: - { - config.hq_fm ^= 1; - if (config.hq_fm) sprintf (items[1].text, "High-Quality FM: ON"); - else sprintf (items[1].text, "High-Quality FM: OFF"); - break; - } - - case 2: - { - config.dac_bits++; - if (config.dac_bits > 14) config.dac_bits = 7; - if (config.dac_bits < 14) sprintf (items[2].text, "FM Resolution: %d bits", config.dac_bits); - else sprintf (items[2].text, "FM Resolution: MAX"); - YM2612Config(config.dac_bits); - break; - } - - case 3: - { - GUI_OptionBox(m,0,"FM Volume",(void *)&fm_volume,0.01,0.0,5.0,0); - sprintf (items[3].text, "FM Volume: %1.2f", fm_volume); - config.fm_preamp = (int)(fm_volume * 100.0 + 0.5); - break; - } - - case 4: - { - GUI_OptionBox(m,0,"PSG Volume",(void *)&psg_volume,0.01,0.0,5.0,0); - sprintf (items[4].text, "PSG Volume: %1.2f", psg_volume); - config.psg_preamp = (int)(psg_volume * 100.0 + 0.5); - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, 0xff); - } - else - { - SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, io_reg[6]); - } - break; - } - - case 5: - { - config.psgBoostNoise ^= 1; - sprintf (items[5].text, "PSG Noise Boost: %s", config.psgBoostNoise ? "ON":"OFF"); - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, 0xff); - } - else - { - SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, io_reg[6]); - } - break; - } - - case 6: - { - config.mono ^= 1; - sprintf (items[6].text, "Audio Out: %s", config.mono ? "MONO":"STEREO"); - break; - } - - case 7: - { - config.filter = (config.filter + 1) % 3; - if (config.filter == 2) - { - float lg = (float)config.lg/100.0; - sprintf (items[7].text, "Filtering: 3-BAND EQ"); - sprintf (items[8].text, "Low Gain: %1.2f", lg); - strcpy (items[8].comment, "Adjust EQ Low Band Gain"); - m->max_items = 13; - audio_set_equalizer(); - } - else if (config.filter == 1) - { - int lp_range = (config.lp_range * 100 + 0xffff) / 0x10000; - sprintf (items[7].text, "Filtering: LOW-PASS"); - sprintf (items[8].text, "Low-Pass Rate: %d %%", lp_range); - strcpy (items[8].comment, "Adjust Low Pass filter"); - m->max_items = 9; - } - else - { - sprintf (items[7].text, "Filtering: OFF"); - m->max_items = 8; - } - - while ((m->offset + 4) > m->max_items) - { - m->offset--; - m->selected++; - } - break; - } - - case 8: - { - if (config.filter == 1) - { - int lp_range = (config.lp_range * 100 + 0xffff) / 0x10000; - GUI_OptionBox(m,0,"Low-Pass Rate",(void *)&lp_range,1,0,100,1); - sprintf (items[8].text, "Low-Pass Rate: %d %%", lp_range); - config.lp_range = (lp_range * 0x10000) / 100; - } - else - { - float lg = (float)config.lg/100.0; - GUI_OptionBox(m,0,"Low Gain",(void *)&lg,0.01,0.0,2.0,0); - sprintf (items[8].text, "Low Gain: %1.2f", lg); - config.lg = (int)(lg * 100.0); - audio_set_equalizer(); - } - break; - } - - case 9: - { - float mg = (float)config.mg/100.0; - GUI_OptionBox(m,0,"Middle Gain",(void *)&mg,0.01,0.0,2.0,0); - sprintf (items[9].text, "Middle Gain: %1.2f", mg); - config.mg = (int)(mg * 100.0); - audio_set_equalizer(); - break; - } - - case 10: - { - float hg = (float)config.hg/100.0; - GUI_OptionBox(m,0,"High Gain",(void *)&hg,0.01,0.0,2.0,0); - sprintf (items[10].text, "High Gain: %1.2f", hg); - config.hg = (int)(hg * 100.0); - audio_set_equalizer(); - break; - } - - case 11: - { - GUI_OptionBox(m,0,"Low Frequency",(void *)&config.low_freq,10,0,config.high_freq,1); - sprintf (items[11].text, "Low Freq: %d", config.low_freq); - audio_set_equalizer(); - break; - } - - case 12: - { - GUI_OptionBox(m,0,"High Frequency",(void *)&config.high_freq,100,config.low_freq,30000,1); - sprintf (items[12].text, "High Freq: %d", config.high_freq); - audio_set_equalizer(); - break; - } - - case -1: - { - quit = 1; - break; - } - } - } - - GUI_DeleteMenu(m); -} - -/**************************************************************************** - * System Settings menu - * - ****************************************************************************/ -static const uint16 vc_table[4][2] = -{ - /* NTSC, PAL */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0xEA , 0x102}, /* Mode 5 (224 lines) */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0x106, 0x10A} /* Mode 5 (240 lines) */ -}; - -static void systemmenu () -{ - int ret, quit = 0; - int reinit = 0; - gui_menu *m = &menu_system; - gui_item *items = m->items; - - if (config.system == 0) - sprintf (items[0].text, "Console Type: AUTO"); - else if (config.system == SYSTEM_SG) - sprintf (items[0].text, "Console Type: SG-1000"); - else if (config.system == SYSTEM_MARKIII) - sprintf (items[0].text, "Console Type: MARK-III"); - else if (config.system == SYSTEM_SMS) - sprintf (items[0].text, "Console Type: SMS"); - else if (config.system == SYSTEM_SMS2) - sprintf (items[0].text, "Console Type: SMS II"); - else if (config.system == SYSTEM_GG) - sprintf (items[0].text, "Console Type: GG"); - else if (config.system == SYSTEM_MD) - sprintf (items[0].text, "Console Type: MD"); - - if (config.region_detect == 0) - sprintf (items[1].text, "Console Region: AUTO"); - else if (config.region_detect == 1) - sprintf (items[1].text, "Console Region: USA"); - else if (config.region_detect == 2) - sprintf (items[1].text, "Console Region: EUROPE"); - else if (config.region_detect == 3) - sprintf (items[1].text, "Console Region: JAPAN"); - - if (config.vdp_mode == 0) - sprintf (items[2].text, "VDP Mode: AUTO"); - else if (config.vdp_mode == 1) - sprintf (items[2].text, "VDP Mode: NTSC"); - else if (config.vdp_mode == 2) - sprintf (items[2].text, "VDP Mode: PAL"); - - if (config.master_clock == 0) - sprintf (items[3].text, "System Clock: AUTO"); - else if (config.master_clock == 1) - sprintf (items[3].text, "System Clock: NTSC"); - else if (config.master_clock == 2) - sprintf (items[3].text, "System Clock: PAL"); - - sprintf (items[4].text, "System Boot: %s", (config.bios & 1) ? ((config.bios & 2) ? "BIOS&CART" : "BIOS ONLY") : "CART"); - sprintf (items[5].text, "System Lockups: %s", config.force_dtack ? "OFF" : "ON"); - sprintf (items[6].text, "68k Address Error: %s", config.addr_error ? "ON" : "OFF"); - - if (config.lock_on == TYPE_GG) - sprintf (items[7].text, "Lock-On: GAME GENIE"); - else if (config.lock_on == TYPE_AR) - sprintf (items[7].text, "Lock-On: ACTION REPLAY"); - else if (config.lock_on == TYPE_SK) - sprintf (items[7].text, "Lock-On: SONIC&KNUCKLES"); - else - sprintf (items[7].text, "Lock-On: OFF"); - - sprintf (items[8].text, "Cartridge Swap: %s", (config.hot_swap & 1) ? "ON":"OFF"); - - if (svp) - { - sprintf (items[9].text, "SVP Cycles: %d", SVP_cycles); - m->max_items = 10; - } - else - { - m->max_items = 9; - } - - GUI_InitMenu(m); - GUI_SlideMenuTitle(m,strlen("System ")); - - while (quit == 0) - { - ret = GUI_RunMenu(m); - - switch (ret) - { - case 0: /*** Force System Hardware ***/ - { - if (config.system == SYSTEM_MD) - { - config.system = 0; - sprintf (items[0].text, "Console Type: AUTO"); - - /* Default system hardware (auto) */ - if (system_hw) system_hw = romtype; - } - else if (config.system == 0) - { - config.system = SYSTEM_SG; - sprintf (items[0].text, "Console Type: SG-1000"); - if (system_hw) system_hw = SYSTEM_SG; - } - else if (config.system == SYSTEM_SG) - { - config.system = SYSTEM_MARKIII; - sprintf (items[0].text, "Console Type: MARK-III"); - if (system_hw) system_hw = SYSTEM_MARKIII; - } - else if (config.system == SYSTEM_MARKIII) - { - config.system = SYSTEM_SMS; - sprintf (items[0].text, "Console Type: SMS"); - if (system_hw) system_hw = SYSTEM_SMS; - } - else if (config.system == SYSTEM_SMS) - { - config.system = SYSTEM_SMS2; - sprintf (items[0].text, "Console Type: SMS II"); - if (system_hw) system_hw = SYSTEM_SMS2; - } - else if (config.system == SYSTEM_SMS2) - { - config.system = SYSTEM_GG; - sprintf (items[0].text, "Console Type: GG"); - - if (romtype == SYSTEM_GG) - { - /* Game Gear mode */ - if (system_hw) system_hw = SYSTEM_GG; - } - else - { - /* Game Gear in MS compatibility mode */ - if (system_hw) system_hw = SYSTEM_GGMS; - } - } - else if (config.system == SYSTEM_GG) - { - config.system = SYSTEM_MD; - sprintf (items[0].text, "Console Type: MD"); - - if (romtype & SYSTEM_MD) - { - /* Default mode */ - if (system_hw) system_hw = romtype; - } - else - { - /* Mega Drive in MS compatibility mode */ - if (system_hw) system_hw = SYSTEM_PBC; - } - } - - if (system_hw) - { - /* restore previous input settings */ - if (old_system[0] != -1) - { - input.system[0] = old_system[0]; - } - if (old_system[1] != -1) - { - input.system[1] = old_system[1]; - } - - /* reinitialize audio streams */ - audio_init(snd.sample_rate, snd.frame_rate); - - /* force hard reset */ - system_init(); - system_reset(); - - /* restore SRAM */ - slot_autoload(0,config.s_device); - } - - break; - } - - case 1: /*** Force Region ***/ - { - config.region_detect = (config.region_detect + 1) % 4; - if (config.region_detect == 0) - sprintf (items[1].text, "Console Region: AUTO"); - else if (config.region_detect == 1) - sprintf (items[1].text, "Console Region: USA"); - else if (config.region_detect == 2) - sprintf (items[1].text, "Console Region: EUR"); - else if (config.region_detect == 3) - sprintf (items[1].text, "Console Region: JAPAN"); - - /* force system reinitialization + region BIOS */ - reinit = 2; - break; - } - - case 2: /*** Force VDP mode ***/ - { - config.vdp_mode = (config.vdp_mode + 1) % 3; - if (config.vdp_mode == 0) - sprintf (items[2].text, "VDP Mode: AUTO"); - else if (config.vdp_mode == 1) - sprintf (items[2].text, "VDP Mode: NTSC"); - else if (config.vdp_mode == 2) - sprintf (items[2].text, "VDP Mode: PAL"); - - /* force system reinitialization */ - reinit = 1; - break; - } - - case 3: /*** Force Master Clock ***/ - { - config.master_clock = (config.master_clock + 1) % 3; - if (config.master_clock == 0) - sprintf (items[3].text, "System Clock: AUTO"); - else if (config.master_clock == 1) - sprintf (items[3].text, "System Clock: NTSC"); - else if (config.master_clock == 2) - sprintf (items[3].text, "System Clock: PAL"); - - /* force system reinitialization */ - reinit = 1; - break; - } - - case 4: /*** BIOS support ***/ - { - if (config.bios == 0) config.bios = 3; - else if (config.bios == 3) config.bios = 1; - else config.bios = 0; - sprintf (items[4].text, "System Boot: %s", (config.bios & 1) ? ((config.bios & 2) ? "BIOS&CART " : "BIOS ONLY") : "CART"); - if ((system_hw == SYSTEM_MD) || (system_hw & SYSTEM_GG) || (system_hw & SYSTEM_SMS)) - { - /* force hard reset */ - system_init(); - system_reset(); - - /* restore SRAM */ - slot_autoload(0,config.s_device); - } - break; - } - - case 5: /*** force DTACK ***/ - { - config.force_dtack ^= 1; - sprintf (items[5].text, "System Lockups: %s", config.force_dtack ? "OFF" : "ON"); - break; - } - - case 6: /*** 68k Address Error ***/ - { - config.addr_error ^= 1; - m68k.aerr_enabled = config.addr_error; - sprintf (items[6].text, "68k Address Error: %s", config.addr_error ? "ON" : "OFF"); - break; - } - - case 7: /*** Cart Lock-On ***/ - { - config.lock_on = (config.lock_on + 1) % (TYPE_SK + 1); - if (config.lock_on == TYPE_GG) - sprintf (items[7].text, "Lock-On: GAME GENIE"); - else if (config.lock_on == TYPE_AR) - sprintf (items[7].text, "Lock-On: ACTION REPLAY"); - else if (config.lock_on == TYPE_SK) - sprintf (items[7].text, "Lock-On: SONIC&KNUCKLES"); - else - sprintf (items[7].text, "Lock-On: OFF"); - - if ((system_hw == SYSTEM_MD) || (system_hw == SYSTEM_PICO)) - { - /* force hard reset */ - system_init(); - system_reset(); - - /* restore SRAM */ - slot_autoload(0,config.s_device); - - /* Action Replay switch */ - if (areplay_get_status() < 0) - { - menu_main.buttons[6].state &= ~(BUTTON_VISIBLE | BUTTON_ACTIVE); - menu_main.items[6].data = NULL; - menu_main.cb = NULL; - menu_main.buttons[3].shift[1] = 4; - menu_main.buttons[7].shift[0] = 4; - menu_main.buttons[8].shift[2] = 1; - } - else - { - menu_main.buttons[6].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - menu_main.items[6].data = Button_sm_grey_png; - menu_main.cb = mainmenu_cb; - menu_main.buttons[3].shift[1] = 3; - menu_main.buttons[7].shift[0] = 1; - menu_main.buttons[8].shift[2] = 2; - } - } - break; - } - - case 8: /*** Cartridge Hot Swap ***/ - { - config.hot_swap ^= 1; - sprintf (items[8].text, "Cartridge Swap: %s", (config.hot_swap & 1) ? "ON":"OFF"); - break; - } - - case 9: /*** SVP cycles per line ***/ - { - GUI_OptionBox(m,0,"SVP Cycles",(void *)&SVP_cycles,1,1,1500,1); - sprintf (items[9].text, "SVP Cycles: %d", SVP_cycles); - break; - } - - case -1: - { - quit = 1; - break; - } - } - } - - if (reinit && system_hw) - { - /* reinitialize console region */ - get_region(NULL); - - /* framerate might have changed, reinitialize audio timings */ - audio_init(snd.sample_rate, get_framerate()); - - /* system with region BIOS should be reinitialized if region code has changed */ - if ((reinit & 2) && ((system_hw == SYSTEM_MCD) || ((system_hw & SYSTEM_SMS) && (config.bios & 1)))) - { - system_init(); - system_reset(); - - /* restore SRAM */ - slot_autoload(0,config.s_device); - } - else - { - /* reinitialize I/O region register */ - if (system_hw == SYSTEM_MD) - { - io_reg[0x00] = 0x20 | region_code | (config.bios & 1); - } - else if (system_hw == SYSTEM_MCD) - { - io_reg[0x00] = region_code | (config.bios & 1); - } - else - { - io_reg[0x00] = 0x80 | (region_code >> 1); - } - - /* reinitialize VDP */ - if (vdp_pal) - { - status |= 1; - lines_per_frame = 313; - } - else - { - status &= ~1; - lines_per_frame = 262; - } - - /* reinitialize VC max value */ - switch (bitmap.viewport.h) - { - case 192: - vc_max = vc_table[0][vdp_pal]; - break; - case 224: - vc_max = vc_table[1][vdp_pal]; - break; - case 240: - vc_max = vc_table[3][vdp_pal]; - break; - } - } - } - - GUI_DeleteMenu(m); -} - -/**************************************************************************** - * Video Settings menu - * - ****************************************************************************/ -#ifdef HW_RVL -#define VI_OFFSET 7 -static void update_gamma(void) -{ - VIDEO_SetGamma((int)(config.gamma * 10.0)); - VIDEO_Flush(); -} -#else -#define VI_OFFSET 5 -#endif - -static void videomenu () -{ - u16 state[2]; - int ret, quit = 0; - int reinit = 0; - gui_menu *m = &menu_video; - gui_item *items = m->items; - - if (config.render == 1) - sprintf (items[0].text,"Display: INTERLACED"); - else if (config.render == 2) - sprintf (items[0].text, "Display: PROGRESSIVE"); - else - sprintf (items[0].text, "Display: ORIGINAL"); - - if (config.tv_mode == 0) - sprintf (items[1].text, "TV Mode: 60HZ"); - else if (config.tv_mode == 1) - sprintf (items[1].text, "TV Mode: 50HZ"); - else - sprintf (items[1].text, "TV Mode: 50/60HZ"); - - if (config.vsync) - sprintf (items[2].text, "VSYNC: AUTO"); - else - sprintf (items[2].text, "VSYNC: OFF"); - - sprintf (items[3].text, "GX Bilinear Filter: %s", config.bilinear ? " ON" : "OFF"); - sprintf (items[4].text, "GX Deflickering Filter: %s", config.vfilter ? " ON" : "OFF"); - -#ifdef HW_RVL - sprintf (items[5].text, "VI Trap Filter: %s", config.trap ? " ON" : "OFF"); - sprintf (items[6].text, "VI Gamma Correction: %1.1f", config.gamma); -#endif - - if (config.ntsc == 1) - sprintf (items[VI_OFFSET].text, "NTSC Filter: COMPOSITE"); - else if (config.ntsc == 2) - sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO"); - else if (config.ntsc == 3) - sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB"); - else - sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF"); - - if (config.overscan == 3) - sprintf (items[VI_OFFSET+1].text, "Borders: FULL"); - else if (config.overscan == 2) - sprintf (items[VI_OFFSET+1].text, "Borders: H ONLY"); - else if (config.overscan == 1) - sprintf (items[VI_OFFSET+1].text, "Borders: V ONLY"); - else - sprintf (items[VI_OFFSET+1].text, "Borders: NONE"); - - sprintf(items[VI_OFFSET+2].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL"); - - if (config.aspect == 1) - sprintf (items[VI_OFFSET+3].text,"Aspect: ORIGINAL (4:3)"); - else if (config.aspect == 2) - sprintf (items[VI_OFFSET+3].text, "Aspect: ORIGINAL (16:9)"); - else - sprintf (items[VI_OFFSET+3].text, "Aspect: SCALED"); - - sprintf (items[VI_OFFSET+4].text, "Screen Position: (%s%02d,%s%02d)", - (config.xshift < 0) ? "":"+", config.xshift, - (config.yshift < 0) ? "":"+", config.yshift); - - sprintf (items[VI_OFFSET+5].text, "Screen Scaling: (%s%02d,%s%02d)", - (config.xscale < 0) ? "":"+", config.xscale, - (config.yscale < 0) ? "":"+", config.yscale); - - if (config.aspect) - m->max_items = VI_OFFSET+5; - else - m->max_items = VI_OFFSET+6; - - GUI_InitMenu(m); - GUI_SlideMenuTitle(m,strlen("Video ")); - - while (quit == 0) - { - ret = GUI_RunMenu(m); - - switch (ret) - { - case 0: /*** rendering ***/ - config.render = (config.render + 1) % 3; - if (config.render == 2) - { - if (VIDEO_HaveComponentCable()) - { - /* progressive mode (60hz only) */ - config.tv_mode = 0; - sprintf (items[1].text, "TV Mode: 60HZ"); - } - else - { - /* do nothing if component cable is not detected */ - config.render = 0; - } - } - - if (config.render == 1) - sprintf (items[0].text,"Display: INTERLACED"); - else if (config.render == 2) - sprintf (items[0].text, "Display: PROGRESSIVE"); - else - sprintf (items[0].text, "Display: ORIGINAL"); - reinit = 1; - break; - - case 1: /*** tv mode ***/ - if (config.render != 2) - { - config.tv_mode = (config.tv_mode + 1) % 3; - if (config.tv_mode == 0) - sprintf (items[1].text, "TV Mode: 60HZ"); - else if (config.tv_mode == 1) - sprintf (items[1].text, "TV Mode: 50HZ"); - else - sprintf (items[1].text, "TV Mode: 50/60HZ"); - reinit = 1; - } - else - { - GUI_WaitPrompt("Error","Progressive Mode is 60hz only !\n"); - } - break; - - case 2: /*** VSYNC ***/ - config.vsync ^= 1; - if (config.vsync) - sprintf (items[2].text, "VSYNC: AUTO"); - else - sprintf (items[2].text, "VSYNC: OFF"); - reinit = 1; - break; - - case 3: /*** GX Texture filtering ***/ - config.bilinear ^= 1; - sprintf (items[3].text, "GX Bilinear Filter: %s", config.bilinear ? " ON" : "OFF"); - break; - - case 4: /*** GX Copy filtering (deflickering filter) ***/ - config.vfilter ^= 1; - sprintf (items[4].text, "GX Deflicker Filter: %s", config.vfilter ? " ON" : "OFF"); - break; - -#ifdef HW_RVL - case 5: /*** VIDEO Trap filtering ***/ - config.trap ^= 1; - sprintf (items[5].text, "VI Trap Filter: %s", config.trap ? " ON" : "OFF"); - break; - - case 6: /*** VIDEO Gamma correction ***/ - if (system_hw) - { - update_gamma(); - state[0] = m->arrows[0]->state; - state[1] = m->arrows[1]->state; - m->max_buttons = 0; - m->max_images = 0; - m->arrows[0]->state = 0; - m->arrows[1]->state = 0; - m->screenshot = 255; - strcpy(m->title,""); - GUI_OptionBox(m,update_gamma,"VI Gamma Correction",(void *)&config.gamma,0.1,0.1,3.0,0); - m->max_buttons = 4; - m->max_images = 6; - m->arrows[0]->state = state[0]; - m->arrows[1]->state = state[1]; - m->screenshot = 0; - strcpy(m->title,"Video Settings"); - sprintf (items[6].text, "VI Gamma Correction: %1.1f", config.gamma); - VIDEO_SetGamma(VI_GM_1_0); - VIDEO_Flush(); - } - else - { - GUI_WaitPrompt("Error","Please load a game first !\n"); - } - break; -#endif - - case VI_OFFSET: /*** NTSC filter ***/ - config.ntsc = (config.ntsc + 1) & 3; - if (config.ntsc == 1) - sprintf (items[VI_OFFSET].text, "NTSC Filter: COMPOSITE"); - else if (config.ntsc == 2) - sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO"); - else if (config.ntsc == 3) - sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB"); - else - sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF"); - break; - - case VI_OFFSET+1: /*** overscan emulation ***/ - config.overscan = (config.overscan + 1) & 3; - if (config.overscan == 3) - sprintf (items[VI_OFFSET+1].text, "Borders: FULL"); - else if (config.overscan == 2) - sprintf (items[VI_OFFSET+1].text, "Borders: H ONLY"); - else if (config.overscan == 1) - sprintf (items[VI_OFFSET+1].text, "Borders: V ONLY"); - else - sprintf (items[VI_OFFSET+1].text, "Borders: NONE"); - break; - - case VI_OFFSET+2: /*** Game Gear extended screen */ - config.gg_extra ^= 1; - sprintf(items[VI_OFFSET+2].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL"); - break; - - case VI_OFFSET+3: /*** aspect ratio ***/ - config.aspect = (config.aspect + 1) % 3; - if (config.aspect == 1) - sprintf (items[VI_OFFSET+3].text,"Aspect: ORIGINAL (4:3)"); - else if (config.aspect == 2) - sprintf (items[VI_OFFSET+3].text, "Aspect: ORIGINAL (16:9)"); - else - sprintf (items[VI_OFFSET+3].text, "Aspect: SCALED"); - - if (config.aspect) - { - /* disable items */ - m->max_items = VI_OFFSET+5; - - /* reset menu selection */ - if (m->offset > VI_OFFSET) - { - m->offset = VI_OFFSET; - m->selected = 3; - } - } - else - { - /* enable items */ - m->max_items = VI_OFFSET+6; - } - - break; - - case VI_OFFSET+4: /*** screen position ***/ - if (system_hw) - { - state[0] = m->arrows[0]->state; - state[1] = m->arrows[1]->state; - m->max_buttons = 0; - m->max_images = 0; - m->arrows[0]->state = 0; - m->arrows[1]->state = 0; - m->screenshot = 255; - strcpy(m->title,""); - GUI_OptionBox2(m,"X Offset","Y Offset",&config.xshift,&config.yshift,1,-99,99); - m->max_buttons = 4; - m->max_images = 6; - m->arrows[0]->state = state[0]; - m->arrows[1]->state = state[1]; - m->screenshot = 0; - strcpy(m->title,"Video Settings"); - sprintf (items[VI_OFFSET+4].text, "Screen Position: (%s%02d,%s%02d)", - (config.xshift < 0) ? "":"+", config.xshift, - (config.yshift < 0) ? "":"+", config.yshift); - } - else - { - GUI_WaitPrompt("Error","Please load a game first !\n"); - } - break; - - case VI_OFFSET+5: /*** screen scaling ***/ - if (system_hw) - { - state[0] = m->arrows[0]->state; - state[1] = m->arrows[1]->state; - m->max_buttons = 0; - m->max_images = 0; - m->arrows[0]->state = 0; - m->arrows[1]->state = 0; - m->screenshot = 255; - strcpy(m->title,""); - GUI_OptionBox2(m,"X Scale","Y Scale",&config.xscale,&config.yscale,1,-99,99); - m->max_buttons = 4; - m->max_images = 6; - m->arrows[0]->state = state[0]; - m->arrows[1]->state = state[1]; - m->screenshot = 0; - strcpy(m->title,"Video Settings"); - sprintf (items[VI_OFFSET+5].text, "Screen Scaling: (%s%02d,%s%02d)", - (config.xscale < 0) ? "":"+", config.xscale, - (config.yscale < 0) ? "":"+", config.yscale); - } - else - { - GUI_WaitPrompt("Error","Please load a game first !\n"); - } - break; - - case -1: - quit = 1; - break; - } - } - - if (reinit && system_hw) - { - /* framerate might have changed, reinitialize audio timings */ - audio_init(snd.sample_rate, get_framerate()); - } - - GUI_DeleteMenu(m); -} - -/**************************************************************************** - * Controllers Settings menu - ****************************************************************************/ -static int player = 0; -static void ctrlmenu_cb(void) -{ - int i, cnt = 1; - char msg[16]; - gui_menu *m = &menu_ctrls; - - if (m->bg_images[7].state & IMAGE_VISIBLE) - { - /* draw device port number */ - if (config.input[player].device != -1) - { - sprintf(msg,"%d",config.input[player].port + 1); - if (m->selected == 11) - FONT_write(msg,16,m->items[11].x+m->items[11].w+2,m->items[11].y+m->items[11].h+2,640,(GXColor)DARK_GREY); - else - FONT_write(msg,14,m->items[11].x+m->items[11].w,m->items[11].y+m->items[11].h,640,(GXColor)DARK_GREY); - } - } - - /* draw players index */ - for (i=2; iselected == i) - { - FONT_writeCenter("Player", 16, m->buttons[i].x + 2, m->buttons[i].x + 54, m->buttons[i].y + (m->buttons[i].h - 16)/2 + 16, (GXColor)DARK_GREY); - } - else - { - FONT_writeCenter("Player", 14, m->buttons[i].x + 4, m->buttons[i].x + 54, m->buttons[i].y + (m->buttons[i].h - 14)/2 + 14, (GXColor)DARK_GREY); - } - - if (input.dev[i-2] != NO_DEVICE) - { - sprintf(msg,"%d",cnt++); - if (m->selected == i) - { - FONT_writeCenter(msg,18,m->items[i].x+2,m->items[i].x+m->items[i].w+2,m->buttons[i].y+(m->buttons[i].h-18)/2+18,(GXColor)DARK_GREY); - } - else - { - FONT_writeCenter(msg,16,m->items[i].x,m->items[i].x+m->items[i].w,m->buttons[i].y+(m->buttons[i].h - 16)/2+16,(GXColor)DARK_GREY); - } - } - } -} - -/* Set menu elements depending on current system configuration */ -static void ctrlmenu_raz(void) -{ - int i,max = 0; - gui_menu *m = &menu_ctrls; - - /* update players buttons */ - for (i=0; ibuttons[i+2].data = &button_player_none_data; - m->buttons[i+2].state &= ~BUTTON_ACTIVE; - strcpy(m->items[i+2].comment,""); - } - else - { - m->buttons[i+2].data = &button_player_data; - m->buttons[i+2].state |= BUTTON_ACTIVE; - if ((cart.special & HW_J_CART) && (i > 4)) - sprintf(m->items[i+2].comment,"Configure Player %d (J-CART) settings", max + 1); - else - sprintf(m->items[i+2].comment,"Configure Player %d settings", max + 1); - max++; - } - } - - /* update buttons navigation */ - if (input.dev[0] != NO_DEVICE) - m->buttons[0].shift[3] = 2; - else if (input.dev[4] != NO_DEVICE) - m->buttons[0].shift[3] = 6; - else if (input.dev[5] != NO_DEVICE) - m->buttons[0].shift[3] = 7; - else - m->buttons[0].shift[3] = 0; - if (input.dev[4] != NO_DEVICE) - m->buttons[1].shift[3] = 5; - else if (input.dev[5] != NO_DEVICE) - m->buttons[1].shift[3] = 6; - else if (input.dev[0] != NO_DEVICE) - m->buttons[1].shift[3] = 1; - else - m->buttons[1].shift[3] = 0; - - if (input.dev[1] != NO_DEVICE) - m->buttons[2].shift[1] = 1; - else if (input.dev[4] != NO_DEVICE) - m->buttons[2].shift[1] = 4; - else if (input.dev[5] != NO_DEVICE) - m->buttons[2].shift[1] = 5; - else - m->buttons[2].shift[1] = 0; - - if (input.dev[4] != NO_DEVICE) - m->buttons[5].shift[1] = 1; - else if (input.dev[5] != NO_DEVICE) - m->buttons[5].shift[1] = 2; - else - m->buttons[5].shift[1] = 0; - - if (input.dev[3] != NO_DEVICE) - m->buttons[6].shift[0] = 1; - else if (input.dev[0] != NO_DEVICE) - m->buttons[6].shift[0] = 4; - else - m->buttons[6].shift[0] = 0; - - if (input.dev[5] != NO_DEVICE) - m->buttons[6].shift[1] = 1; - else - m->buttons[6].shift[1] = 0; - - if (input.dev[6] != NO_DEVICE) - m->buttons[7].shift[1] = 1; - else - m->buttons[7].shift[1] = 0; - - if (input.dev[7] != NO_DEVICE) - m->buttons[8].shift[1] = 1; - else - m->buttons[8].shift[1] = 0; - - if (input.dev[4] != NO_DEVICE) - m->buttons[7].shift[0] = 1; - else if (input.dev[3] != NO_DEVICE) - m->buttons[7].shift[0] = 2; - else if (input.dev[0] != NO_DEVICE) - m->buttons[7].shift[0] = 5; - else - m->buttons[7].shift[0] = 0; -} - -static void ctrlmenu(void) -{ - int old_player = -1; - int i = 0; - int update = 0; - gui_item *items = NULL; - u8 *special = NULL; - u32 exp; - u8 type = 0; - - /* System devices */ - gui_item items_sys[2][13] = - { - { - {NULL,Ctrl_none_png ,"","Select Port 1 device",110,130,48,72}, - {NULL,Ctrl_gamepad_md_png ,"","Select Port 1 device", 85,117,96,84}, - {NULL,Ctrl_mouse_png ,"","Select Port 1 device", 97,113,64,88}, - {NULL,Ctrl_menacer_png ,"","Select Port 1 device", 94,113,80,88}, - {NULL,Ctrl_justifiers_png ,"","Select Port 1 device", 88,117,80,84}, - {NULL,Ctrl_xe_a1p_png ,"","Select Port 1 device", 98,118,72,84}, - {NULL,Ctrl_activator_png ,"","Select Port 1 device", 94,121,72,80}, - {NULL,Ctrl_gamepad_ms_png ,"","Select Port 1 device", 91,125,84,76}, - {NULL,Ctrl_lightphaser_png,"","Select Port 1 device", 89,109,88,92}, - {NULL,Ctrl_paddle_png ,"","Select Port 1 device", 86,117,96,84}, - {NULL,Ctrl_sportspad_png ,"","Select Port 1 device", 95,117,76,84}, - {NULL,Ctrl_teamplayer_png ,"","Select Port 1 device", 94,109,80,92}, - {NULL,Ctrl_4wayplay_png ,"","Select Port 1 device", 98,110,72,92} - }, - { - {NULL,Ctrl_none_png ,"","Select Port 2 device",110,300,48,72}, - {NULL,Ctrl_gamepad_md_png ,"","Select Port 2 device", 85,287,96,84}, - {NULL,Ctrl_mouse_png ,"","Select Port 2 device", 97,283,64,88}, - {NULL,Ctrl_menacer_png ,"","Select Port 2 device", 94,283,80,88}, - {NULL,Ctrl_justifiers_png ,"","Select Port 2 device", 88,287,80,84}, - {NULL,Ctrl_xe_a1p_png ,"","Select Port 2 device", 98,288,72,84}, - {NULL,Ctrl_activator_png ,"","Select Port 2 device", 94,291,72,80}, - {NULL,Ctrl_gamepad_ms_png ,"","Select Port 2 device", 91,295,84,76}, - {NULL,Ctrl_lightphaser_png,"","Select Port 2 device", 89,279,88,92}, - {NULL,Ctrl_paddle_png ,"","Select Port 2 device", 86,287,96,84}, - {NULL,Ctrl_sportspad_png ,"","Select Port 2 device", 95,287,76,84}, - {NULL,Ctrl_teamplayer_png ,"","Select Port 2 device", 94,279,80,92}, - {NULL,Ctrl_4wayplay_png ,"","Select Port 2 device", 98,280,72,92} - } - }; - - /* Specific controller options */ - gui_item items_special[4][2] = - { - { - /* Gamepad option */ - {NULL,Ctrl_pad3b_png,"Pad\nType","Use 3-buttons Pad",528,180,44,28}, - {NULL,Ctrl_pad6b_png,"Pad\nType","Use 6-buttons Pad",528,180,44,28} - }, - { - /* Mouse option */ - {NULL,ctrl_option_off_png,"Invert\nMouse","Enable/Disable Y-Axis inversion",534,180,24,24}, - {NULL,ctrl_option_on_png ,"Invert\nMouse","Enable/Disable Y-Axis inversion",534,180,24,24}, - }, - { - /* Gun option */ - {NULL,ctrl_option_off_png,"Show\nCursor","Enable/Disable Lightgun cursor",534,180,24,24}, - {NULL,ctrl_option_on_png ,"Show\nCursor","Enable/Disable Lightgun cursor",534,180,24,24}, - }, - { - /* no option */ - {NULL,NULL,"No Option","",436,180,160,52}, - {NULL,NULL,"","",0,0,0,0}, - } - }; - - /* Player Configuration device items */ -#ifdef HW_RVL - gui_item items_device[5] = - { - {NULL,ctrl_option_off_png ,"Input\nDevice","Select Input Controller",534,244,24,24}, - {NULL,ctrl_gamecube_png ,"Input\nDevice","Select Input Controller",530,246,36,24}, - {NULL,ctrl_wiimote_png ,"Input\nDevice","Select Input Controller",526,250,40,12}, - {NULL,ctrl_nunchuk_png ,"Input\nDevice","Select Input Controller",532,242,32,32}, - {NULL,ctrl_classic_png ,"Input\nDevice","Select Input Controller",526,242,40,32}, - }; -#else - gui_item items_device[2] = - { - {NULL,ctrl_option_off_png ,"Input\nDevice","Select Input Controller",534,244,24,24}, - {NULL,ctrl_gamecube_png ,"Input\nDevice","Select Input Controller",530,246,36,24} - }; -#endif - - /* initialize menu */ - gui_menu *m = &menu_ctrls; - GUI_InitMenu(m); - - /* initialize custom buttons */ - button_player_data.texture[0] = gxTextureOpenPNG(button_player_data.image[0],0); - button_player_data.texture[1] = gxTextureOpenPNG(button_player_data.image[1],0); - button_player_none_data.texture[0] = gxTextureOpenPNG(button_player_none_data.image[0],0); - - /* initialize custom images */ - for (i=0; i<13; i++) - { - items_sys[1][i].texture = items_sys[0][i].texture = gxTextureOpenPNG(items_sys[0][i].data,0); - } - items_special[0][0].texture = gxTextureOpenPNG(items_special[0][0].data,0); - items_special[0][1].texture = gxTextureOpenPNG(items_special[0][1].data,0); - items_special[2][0].texture = items_special[1][0].texture = gxTextureOpenPNG(items_special[1][0].data,0); - items_special[2][1].texture = items_special[1][1].texture = gxTextureOpenPNG(items_special[1][1].data,0); - items_device[0].texture = items_special[1][0].texture; - items_device[1].texture = gxTextureOpenPNG(items_device[1].data,0); -#ifdef HW_RVL - items_device[2].texture = gxTextureOpenPNG(items_device[2].data,0); - items_device[3].texture = gxTextureOpenPNG(items_device[3].data,0); - items_device[4].texture = gxTextureOpenPNG(items_device[4].data,0); -#endif - - /* restore current menu elements */ - player = 0; - ctrlmenu_raz(); - memcpy(&m->items[0],&items_sys[0][input.system[0]],sizeof(gui_item)); - memcpy(&m->items[1],&items_sys[1][input.system[1]],sizeof(gui_item)); - - /* menu title slide effect */ - m->selected = 0; - GUI_SlideMenuTitle(m,strlen("Controller ")); - - while (update != -1) - { - /* draw menu */ - GUI_DrawMenu(m); - - /* update menu */ - update = GUI_UpdateMenu(m); - - if (update > 0) - { - switch (m->selected) - { - case 0: /* update port 1 system */ - { - /* fixed configurations */ - if (system_hw) - { - if (cart.special & HW_TEREBI_OEKAKI) - { - GUI_WaitPrompt("Error","Terebi Oekaki detected !"); - break; - } - else if (system_hw == SYSTEM_PICO) - { - GUI_WaitPrompt("Error","PICO hardware detected !"); - break; - } - } - - /* next connected device */ - input.system[0]++; - - /* allow only one connected mouse */ - if ((input.system[0] == SYSTEM_MOUSE) && (input.system[1] == SYSTEM_MOUSE)) - { - input.system[0] += 3; - } - - /* Menacer & Justifiers on Port B only */ - if (input.system[0] == SYSTEM_MENACER) - { - input.system[0] += 2; - } - - /* allow only one gun type */ - if ((input.system[0] == SYSTEM_LIGHTPHASER) && ((input.system[1] == SYSTEM_MENACER) || (input.system[1] == SYSTEM_JUSTIFIER))) - { - input.system[0]++; - } - - /* 4-wayplay uses both ports */ - if (input.system[0] == SYSTEM_WAYPLAY) - { - input.system[1] = SYSTEM_WAYPLAY; - } - - /* loop back */ - if (input.system[0] > SYSTEM_WAYPLAY) - { - input.system[0] = NO_SYSTEM; - input.system[1] = SYSTEM_MD_GAMEPAD; - } - - /* reset I/O ports */ - io_init(); - input_reset(); - - /* save current configuration */ - old_system[0] = input.system[0]; - old_system[1] = input.system[1]; - - /* update menu elements */ - ctrlmenu_raz(); - memcpy(&m->items[0],&items_sys[0][input.system[0]],sizeof(gui_item)); - memcpy(&m->items[1],&items_sys[1][input.system[1]],sizeof(gui_item)); - - if (m->bg_images[7].state & IMAGE_VISIBLE) - { - /* slide out configuration window */ - GUI_DrawMenuFX(m, 20, 1); - - /* remove configuration window */ - m->bg_images[7].state &= ~IMAGE_VISIBLE; - - /* disable configuration buttons */ - m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - - /* update directions */ - m->buttons[2].shift[3] = 0; - m->buttons[3].shift[3] = 0; - m->buttons[4].shift[3] = 0; - m->buttons[5].shift[3] = 0; - m->buttons[6].shift[3] = 0; - m->buttons[7].shift[3] = 0; - m->buttons[8].shift[3] = 0; - m->buttons[9].shift[3] = 0; - - /* update title */ - sprintf(m->title,"Controller Settings"); - } - break; - } - - case 1: /* update port 2 system */ - { - /* fixed configurations */ - if (system_hw) - { - if (cart.special & HW_J_CART) - { - GUI_WaitPrompt("Error","J-CART detected !"); - break; - } - else if (cart.special & HW_TEREBI_OEKAKI) - { - GUI_WaitPrompt("Error","Terebi Oekaki detected !"); - break; - } - else if (system_hw == SYSTEM_PICO) - { - GUI_WaitPrompt("Error","PICO hardware detected !"); - break; - } - } - - /* next connected device */ - input.system[1]++; - - /* allow only one connected mouse */ - if ((input.system[0] == SYSTEM_MOUSE) && (input.system[1] == SYSTEM_MOUSE)) - { - input.system[1]++; - } - - /* allow only one gun type */ - if ((input.system[0] == SYSTEM_LIGHTPHASER) && (input.system[1] == SYSTEM_MENACER)) - { - input.system[1] += 3; - } - - /* allow only one gun type */ - if ((input.system[0] == SYSTEM_LIGHTPHASER) && (input.system[1] == SYSTEM_JUSTIFIER)) - { - input.system[1] += 2; - } - - /* 4-wayplay uses both ports */ - if (input.system[1] == SYSTEM_WAYPLAY) - { - input.system[0] = SYSTEM_WAYPLAY; - } - - /* loop back */ - if (input.system[1] > SYSTEM_WAYPLAY) - { - input.system[1] = NO_SYSTEM; - input.system[0] = SYSTEM_MD_GAMEPAD; - } - - /* reset I/O ports */ - io_init(); - input_reset(); - - /* save current configuration */ - old_system[0] = input.system[0]; - old_system[1] = input.system[1]; - - /* update menu elements */ - ctrlmenu_raz(); - memcpy(&m->items[0],&items_sys[0][input.system[0]],sizeof(gui_item)); - memcpy(&m->items[1],&items_sys[1][input.system[1]],sizeof(gui_item)); - - if (m->bg_images[7].state & IMAGE_VISIBLE) - { - /* slide out configuration window */ - GUI_DrawMenuFX(m, 20, 1); - - /* remove configuration window */ - m->bg_images[7].state &= ~IMAGE_VISIBLE; - - /* disable configuration buttons */ - m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - - /* update directions */ - m->buttons[2].shift[3] = 0; - m->buttons[3].shift[3] = 0; - m->buttons[4].shift[3] = 0; - m->buttons[5].shift[3] = 0; - m->buttons[6].shift[3] = 0; - m->buttons[7].shift[3] = 0; - m->buttons[8].shift[3] = 0; - m->buttons[9].shift[3] = 0; - - /* update title */ - sprintf(m->title,"Controller Settings"); - } - - break; - } - - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - { - /* remove duplicate assigned inputs */ - for (i=0; iselected-2); i++) - { - if (input.dev[i] != NO_DEVICE) player ++; - } - - if (m->bg_images[7].state & IMAGE_VISIBLE) - { - /* if already displayed, do nothing */ - if (old_player == player) break; - - /* slide out configuration window */ - GUI_DrawMenuFX(m, 20, 1); - } - else - { - /* append configuration window */ - m->bg_images[7].state |= IMAGE_VISIBLE; - - /* enable configuration buttons */ - m->buttons[10].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - m->buttons[11].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - m->buttons[12].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - - /* update directions */ - m->buttons[2].shift[3] = 8; - m->buttons[3].shift[3] = 7; - m->buttons[4].shift[3] = 6; - m->buttons[5].shift[3] = 5; - m->buttons[6].shift[3] = 4; - m->buttons[7].shift[3] = 3; - m->buttons[8].shift[3] = 2; - m->buttons[9].shift[3] = 1; - } - - /* emulated device type */ - type = input.dev[m->selected - 2]; - - /* retrieve current player informations */ - switch (type) - { - case DEVICE_PAD3B: - case DEVICE_PAD6B: - { - items = items_special[0]; - special = &config.input[player].padtype; - break; - } - - case DEVICE_MOUSE: - { - items = items_special[1]; - special = &config.invert_mouse; - break; - } - - case DEVICE_LIGHTGUN: - { - items = items_special[2]; - - if ((input.system[1] == SYSTEM_MENACER) || (input.system[1] == SYSTEM_JUSTIFIER)) - { - /* Menacer & Justifiers affected to devices 4 & 5 */ - special = &config.gun_cursor[m->selected & 1]; - } - else - { - /* Lightphasers affected to devices 0 & 4 */ - special = &config.gun_cursor[m->selected >> 2]; - } - break; - } - - default: - { - items = items_special[3]; - special = NULL; - break; - } - } - - if (special) - { - memcpy(&m->items[10],&items[*special],sizeof(gui_item)); - } - else - { - memcpy(&m->items[10],&items[0],sizeof(gui_item)); - } - - memcpy(&m->items[11],&items_device[config.input[player].device + 1],sizeof(gui_item)); - - /* slide in configuration window */ - m->buttons[10].shift[2] = 10 - m->selected; - m->buttons[11].shift[2] = 11 - m->selected; - m->buttons[12].shift[2] = 12 - m->selected; - m->selected = 10; - GUI_DrawMenuFX(m, 20, 0); - - /* some devices require analog sticks */ - if ((type == DEVICE_XE_A1P) && ((config.input[player].device == -1) || (config.input[player].device == 1))) - { - GUI_WaitPrompt("Warning","One Analog Stick required !"); - } - else if ((type == DEVICE_ACTIVATOR) && ((config.input[player].device != 0) && (config.input[player].device != 3))) - { - GUI_WaitPrompt("Warning","Two Analog Sticks required !"); - } - - /* update title */ - if ((cart.special & HW_J_CART) && (player > 1)) - { - sprintf(m->title,"Controller Settings (Player %d) (J-CART)",player+1); - } - else - { - sprintf(m->title,"Controller Settings (Player %d)",player+1); - } - break; - } - - case 10: /* specific option */ - { - if (special) - { - /* switch option */ - *special ^= 1; - - /* specific case: controller type */ - if (type < 2) - { - /* re-initialize emulated device */ - input_init(); - input_reset(); - - /* update emulated device type */ - type = *special; - } - - /* update menu items */ - memcpy(&m->items[10],&items[*special],sizeof(gui_item)); - } - break; - } - - case 11: /* input controller selection */ - { - /* no input device */ - if (config.input[player].device < 0) - { - /* always try gamecube controllers first */ - config.input[player].device = 0; - config.input[player].port = 0; - } - else - { - /* try next port */ - config.input[player].port ++; - } - - /* autodetect connected gamecube controllers */ - if (config.input[player].device == 0) - { - /* find first connected controller */ - exp = 0; - while ((config.input[player].port < 4) && !exp) - { - VIDEO_WaitVSync (); - exp = PAD_ScanPads() & (1<= 4) - { -#ifdef HW_RVL - /* test wiimote */ - config.input[player].port = 0; - config.input[player].device = 1; -#else - /* no input controller left */ - config.input[player].device = -1; - config.input[player].port = player%4; -#endif - } - } - -#ifdef HW_RVL - /* autodetect connected wiimotes (without nunchuk) */ - if (config.input[player].device == 1) - { - /* test current port */ - exp = 255; - if (config.input[player].port < 4) - { - WPAD_Probe(config.input[player].port,&exp); - } - - /* find first connected controller */ - while ((config.input[player].port < 4) && (exp == 255)) - { - /* try next port */ - config.input[player].port ++; - if (config.input[player].port < 4) - { - exp = 255; - WPAD_Probe(config.input[player].port,&exp); - } - } - - /* no more wiimote */ - if (config.input[player].port >= 4) - { - /* test wiimote+nunchuk */ - config.input[player].port = 0; - config.input[player].device = 2; - } - } - - /* autodetect connected wiimote+nunchuk */ - if (config.input[player].device == 2) - { - /* test current port */ - exp = 255; - if (config.input[player].port < 4) - { - WPAD_Probe(config.input[player].port,&exp); - } - - /* find first connected controller */ - while ((config.input[player].port < 4) && (exp != WPAD_EXP_NUNCHUK)) - { - /* try next port */ - config.input[player].port ++; - if (config.input[player].port < 4) - { - exp = 255; - WPAD_Probe(config.input[player].port,&exp); - } - } - - /* no more wiimote+nunchuk */ - if (config.input[player].port >= 4) - { - /* test classic controllers */ - config.input[player].port = 0; - config.input[player].device = 3; - } - } - - /* autodetect connected classic controllers */ - if (config.input[player].device == 3) - { - /* test current port */ - exp = 255; - if (config.input[player].port < 4) - { - WPAD_Probe(config.input[player].port,&exp); - } - - /* find first connected controller */ - while ((config.input[player].port<4) && (exp != WPAD_EXP_CLASSIC)) - { - /* try next port */ - config.input[player].port ++; - if (config.input[player].port < 4) - { - exp = 255; - WPAD_Probe(config.input[player].port,&exp); - } - } - - if (config.input[player].port >= 4) - { - /* no input controller left */ - config.input[player].device = -1; - config.input[player].port = player%4; - } - } -#endif - - /* update menu items */ - memcpy(&m->items[11],&items_device[config.input[player].device + 1],sizeof(gui_item)); - - break; - } - - case 12: /* Controller Keys Configuration */ - { - if (config.input[player].device >= 0) - { - GUI_MsgBoxOpen("Keys Configuration", "",0); - gx_input_Config(config.input[player].port, config.input[player].device, type); - GUI_MsgBoxClose(); - } - break; - } - } - } - - /* Close Window */ - else if (update < 0) - { - if (m->bg_images[7].state & IMAGE_VISIBLE) - { - /* slide out configuration window */ - GUI_DrawMenuFX(m, 20, 1); - - /* disable configuration window */ - m->bg_images[7].state &= ~IMAGE_VISIBLE; - - /* disable configuration buttons */ - m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - - /* clear directions */ - m->buttons[2].shift[3] = 0; - m->buttons[3].shift[3] = 0; - m->buttons[4].shift[3] = 0; - m->buttons[5].shift[3] = 0; - m->buttons[6].shift[3] = 0; - m->buttons[7].shift[3] = 0; - m->buttons[8].shift[3] = 0; - m->buttons[9].shift[3] = 0; - - /* update selector */ - m->selected -= m->buttons[m->selected].shift[2]; - - /* restore title */ - sprintf(m->title,"Controller Settings"); - - /* stay in menu */ - update = 0; - } - else - { - /* check we have at least one connected input before leaving */ - old_player = player; - player = 0; - for (i=0; ibg_images[7].state &= ~IMAGE_VISIBLE; - - /* disable configuration buttons */ - m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); - - /* clear directions */ - m->buttons[2].shift[3] = 0; - m->buttons[3].shift[3] = 0; - m->buttons[4].shift[3] = 0; - m->buttons[5].shift[3] = 0; - m->buttons[6].shift[3] = 0; - m->buttons[7].shift[3] = 0; - m->buttons[8].shift[3] = 0; - m->buttons[9].shift[3] = 0; - - /* clear menu items */ - memset(&m->items[0],0,sizeof(gui_item)); - memset(&m->items[1],0,sizeof(gui_item)); - memset(&m->items[10],0,sizeof(gui_item)); - memset(&m->items[11],0,sizeof(gui_item)); - - /* clear player buttons */ - m->buttons[2].data = NULL; - m->buttons[3].data = NULL; - m->buttons[4].data = NULL; - m->buttons[5].data = NULL; - m->buttons[6].data = NULL; - m->buttons[7].data = NULL; - m->buttons[8].data = NULL; - m->buttons[9].data = NULL; - - /* delete menu */ - GUI_DeleteMenu(m); - - /* delete custom buttons */ - gxTextureClose(&button_player_data.texture[0]); - gxTextureClose(&button_player_data.texture[1]); - gxTextureClose(&button_player_none_data.texture[0]); - - /* delete custom images */ - for (i=0; i<13; i++) - { - gxTextureClose(&items_sys[0][i].texture); - } - gxTextureClose(&items_special[0][0].texture); - gxTextureClose(&items_special[0][1].texture); - gxTextureClose(&items_special[1][0].texture); - gxTextureClose(&items_special[1][1].texture); - gxTextureClose(&items_device[1].texture); -#ifdef HW_RVL - gxTextureClose(&items_device[2].texture); - gxTextureClose(&items_device[3].texture); - gxTextureClose(&items_device[4].texture); -#endif -} - -/**************************************************************************** - * Main Option menu - * - ****************************************************************************/ -static void optionmenu(void) -{ - int ret, quit = 0; - gui_menu *m = &menu_options; - - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - - while (quit == 0) - { - ret = GUI_RunMenu(m); - - switch (ret) - { - case 0: - GUI_DeleteMenu(m); - systemmenu(); - GUI_InitMenu(m); - break; - case 1: - GUI_DeleteMenu(m); - videomenu(); - GUI_InitMenu(m); - break; - case 2: - GUI_DeleteMenu(m); - soundmenu(); - GUI_InitMenu(m); - break; - case 3: - GUI_DeleteMenu(m); - ctrlmenu(); - GUI_InitMenu(m); - break; - case 4: - GUI_DeleteMenu(m); - prefmenu(); - GUI_InitMenu(m); - break; - case -1: - quit = 1; - break; - } - } - - config_save(); - GUI_DrawMenuFX(m,30,1); - GUI_DeleteMenu(m); -} - -/**************************************************************************** -* Save Manager menu -* -****************************************************************************/ -static t_slot slots[5]; -static void savemenu_cb(void) -{ - int i; - char msg[16]; - gx_texture *star = gxTextureOpenPNG(Star_full_png,0); - - if (sram.on) - { - FONT_write("Backup Memory",16,buttons_saves[0].x+16,buttons_saves[0].y+(buttons_saves[0].h-16)/2+16,buttons_saves[0].x+buttons_saves[0].w,(GXColor)DARK_GREY); - if (slots[0].valid) - { - sprintf(msg,"%d/%02d/%02d",slots[0].day,slots[0].month,slots[0].year); - FONT_alignRight(msg,12,buttons_saves[0].x+buttons_saves[0].w-16,buttons_saves[0].y+(buttons_saves[0].h-28)/2+12,(GXColor)DARK_GREY); - sprintf(msg,"%02d:%02d",slots[0].hour,slots[0].min); - FONT_alignRight(msg,12,buttons_saves[0].x+buttons_saves[0].w-16,buttons_saves[0].y+(buttons_saves[0].h-28)/2+28,(GXColor)DARK_GREY); - } - - if (sram.crc != crc32(0, &sram.sram[0], 0x10000)) - gxDrawTexture(star,22,buttons_saves[0].y+(buttons_saves[0].h-star->height)/2,star->width,star->height,255); - } - else - { - FONT_writeCenter("Backup Memory disabled",16,buttons_saves[0].x,buttons_saves[0].x+buttons_saves[0].w,buttons_saves[0].y+(buttons_saves[0].h-16)/2+16,(GXColor)DARK_GREY); - } - - for (i=1; i<5; i++) - { - if (slots[i].valid) - { - sprintf(msg,"Slot %d",i); - FONT_write(msg,16,buttons_saves[i].x+16,buttons_saves[i].y+(buttons_saves[i].h-16)/2+16,buttons_saves[i].x+buttons_saves[i].w,(GXColor)DARK_GREY); - sprintf(msg,"%d/%02d/%02d",slots[i].day,slots[i].month,slots[i].year); - FONT_alignRight(msg,12,buttons_saves[i].x+buttons_saves[i].w-16,buttons_saves[i].y+(buttons_saves[i].h-28)/2+12,(GXColor)DARK_GREY); - sprintf(msg,"%02d:%02d",slots[i].hour,slots[i].min); - FONT_alignRight(msg,12,buttons_saves[i].x+buttons_saves[i].w-16,buttons_saves[i].y+(buttons_saves[i].h-28)/2+28,(GXColor)DARK_GREY); - } - else - { - FONT_write("Empty Slot",16,buttons_saves[i].x+16,buttons_saves[i].y+(buttons_saves[i].h-16)/2+16,buttons_saves[i].x+buttons_saves[i].h,(GXColor)DARK_GREY); - } - - if (i == config.s_default) - gxDrawTexture(star,22,buttons_saves[i].y+(buttons_saves[i].h-star->height)/2,star->width,star->height,255); - } - gxTextureClose(&star); -} - -static int savemenu(void) -{ - int i, update = 0; - int ret = 0; - int slot = -1; - char filename[MAXPATHLEN]; - gui_menu *m = &menu_saves; - FILE *snap; - - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - - m->bg_images[3].state &= ~IMAGE_SLIDE_TOP; - m->bg_images[4].state &= ~IMAGE_SLIDE_BOTTOM; - m->bg_images[5].state &= ~IMAGE_SLIDE_TOP; - - /* detect existing files */ - for (i=0; i<5; i++) - slot_autodetect(i, config.s_device, &slots[i]); - - /* SRAM disabled */ - if (sram.on) - { - m->buttons[0].state |= BUTTON_ACTIVE; - m->buttons[1].shift[0] = 1; - } - else - { - m->buttons[0].state &= ~BUTTON_ACTIVE; - m->buttons[1].shift[0] = 0; - if (m->selected == 0) - m->selected = 1; - } - - while (update != -1) - { - /* slot selection */ - if ((m->selected < 5) && (slot != m->selected)) - { - /* update slot */ - slot = m->selected; - - /* delete previous texture if any */ - gxTextureClose(&bg_saves[0].texture); - bg_saves[0].state &= ~IMAGE_VISIBLE; - bg_saves[1].state |= IMAGE_VISIBLE; - - /* state slot */ - if (!config.s_device && slot && slots[slot].valid) - { - /* open screenshot file */ - sprintf (filename, "%s/saves/%s__%d.png", DEFAULT_PATH, rom_filename, slot - 1); - snap = fopen(filename, "rb"); - if (snap) - { - /* load texture from file */ - bg_saves[0].texture = gxTextureOpenPNG(0,snap); - if (bg_saves[0].texture) - { - /* set menu background */ - bg_saves[0].w = bg_saves[0].texture->width * 2; - if (config.aspect & 2) bg_saves[0].w = (bg_saves[0].w * 3) / 4; - bg_saves[0].h = bg_saves[0].texture->height * 2; - bg_saves[0].x = (vmode->fbWidth - bg_saves[0].w) / 2; - bg_saves[0].y = (vmode->efbHeight - bg_saves[0].h) / 2; - bg_saves[0].state |= IMAGE_VISIBLE; - bg_saves[1].state &= ~IMAGE_VISIBLE; - } - fclose(snap); - } - } - } - - /* draw menu */ - GUI_DrawMenu(m); - - /* update menu */ - update = GUI_UpdateMenu(m); - - if (update > 0) - { - switch (m->selected) - { - case 0: - case 1: - case 2: - case 3: - case 4: /* Slot selection */ - { - /* enable right window */ - m->bg_images[7].state |= IMAGE_VISIBLE; - m->buttons[5].state |= BUTTON_VISIBLE; - m->buttons[6].state |= BUTTON_VISIBLE; - m->buttons[7].state |= BUTTON_VISIBLE; - m->buttons[8].state |= BUTTON_VISIBLE; - - /* only enable valid options */ - if (slots[slot].valid) - { - m->buttons[5].state |= BUTTON_ACTIVE; - m->buttons[7].state |= BUTTON_ACTIVE; - m->buttons[6].shift[0] = 1; - m->buttons[6].shift[1] = 1; - m->buttons[8].shift[0] = 1; - m->selected = 5; - } - else - { - m->buttons[5].state &= ~BUTTON_ACTIVE; - m->buttons[7].state &= ~BUTTON_ACTIVE; - m->buttons[6].shift[0] = 0; - m->buttons[6].shift[1] = 2; - m->buttons[8].shift[0] = (slot > 0) ? 2 : 0; - m->selected = 8; - } - - /* state slot 'only' button */ - if (slot > 0) - { - m->buttons[6].state |= BUTTON_ACTIVE; - m->buttons[5].shift[1] = 1; - m->buttons[7].shift[0] = 1; - } - else - { - m->buttons[6].state &= ~BUTTON_ACTIVE; - m->buttons[5].shift[1] = 2; - m->buttons[7].shift[0] = 2; - } - - /* disable left buttons */ - m->buttons[0].state &= ~BUTTON_ACTIVE; - m->buttons[1].state &= ~BUTTON_ACTIVE; - m->buttons[2].state &= ~BUTTON_ACTIVE; - m->buttons[3].state &= ~BUTTON_ACTIVE; - m->buttons[4].state &= ~BUTTON_ACTIVE; - - /* keep current selection highlighted */ - m->buttons[slot].state |= BUTTON_SELECTED; - - /* slide in window */ - GUI_DrawMenuFX(m, 20, 0); - - break; - } - - case 5: /* load file */ - { - if (slots[slot].valid) - { - ret = slot_load(slot,config.s_device); - - /* force exit */ - if (ret > 0) - { - GUI_DrawMenuFX(m, 20, 1); - m->buttons[slot].state &= ~BUTTON_SELECTED; - m->bg_images[7].state &= ~IMAGE_VISIBLE; - if (sram.on) - m->buttons[0].state |= BUTTON_ACTIVE; - m->buttons[1].state |= BUTTON_ACTIVE; - m->buttons[2].state |= BUTTON_ACTIVE; - m->buttons[3].state |= BUTTON_ACTIVE; - m->buttons[4].state |= BUTTON_ACTIVE; - m->buttons[5].state &= ~BUTTON_VISIBLE; - m->buttons[6].state &= ~BUTTON_VISIBLE; - m->buttons[7].state &= ~BUTTON_VISIBLE; - m->buttons[8].state &= ~BUTTON_VISIBLE; - m->selected = slot; - update = -1; - } - } - break; - } - - case 6: /* set default slot */ - { - config.s_default = slot; - config_save(); - break; - } - - case 7: /* delete file */ - { - if (slots[slot].valid) - { - if (slot_delete(slot,config.s_device) >= 0) - { - /* hide screenshot */ - gxTextureClose(&bg_saves[0].texture); - bg_saves[0].state &= ~IMAGE_VISIBLE; - slots[slot].valid = 0; - update = -1; - } - } - break; - } - - case 8: /* save file */ - { - ret = slot_save(slot,config.s_device); - - /* force exit */ - if (ret > 0) - { - GUI_DrawMenuFX(m, 20, 1); - m->buttons[slot].state &= ~BUTTON_SELECTED; - m->bg_images[7].state &= ~IMAGE_VISIBLE; - if (sram.on) - m->buttons[0].state |= BUTTON_ACTIVE; - m->buttons[1].state |= BUTTON_ACTIVE; - m->buttons[2].state |= BUTTON_ACTIVE; - m->buttons[3].state |= BUTTON_ACTIVE; - m->buttons[4].state |= BUTTON_ACTIVE; - m->buttons[5].state &= ~BUTTON_VISIBLE; - m->buttons[6].state &= ~BUTTON_VISIBLE; - m->buttons[7].state &= ~BUTTON_VISIBLE; - m->buttons[8].state &= ~BUTTON_VISIBLE; - m->selected = slot; - update = -1; - } - break; - } - - default: - break; - } - } - - if (update < 0) - { - /* close right window */ - if (m->bg_images[7].state & IMAGE_VISIBLE) - { - /* slide out window */ - GUI_DrawMenuFX(m, 20, 1); - - /* clear current selection */ - m->buttons[slot].state &= ~BUTTON_SELECTED; - - /* enable left buttons */ - if (sram.on) - m->buttons[0].state |= BUTTON_ACTIVE; - m->buttons[1].state |= BUTTON_ACTIVE; - m->buttons[2].state |= BUTTON_ACTIVE; - m->buttons[3].state |= BUTTON_ACTIVE; - m->buttons[4].state |= BUTTON_ACTIVE; - - /* disable right window */ - m->bg_images[7].state &= ~IMAGE_VISIBLE; - m->buttons[5].state &= ~BUTTON_VISIBLE; - m->buttons[6].state &= ~BUTTON_VISIBLE; - m->buttons[7].state &= ~BUTTON_VISIBLE; - m->buttons[8].state &= ~BUTTON_VISIBLE; - - /* stay in menu */ - m->selected = slot; - update = 0; - } - } - } - - /* leave menu */ - m->bg_images[3].state |= IMAGE_SLIDE_TOP; - m->bg_images[4].state |= IMAGE_SLIDE_BOTTOM; - m->bg_images[5].state |= IMAGE_SLIDE_TOP; - GUI_DrawMenuFX(m,30,1); - GUI_DeleteMenu(m); - return ret; -} - -/**************************************************************************** - * Load Game menu - * - ****************************************************************************/ -static int loadgamemenu () -{ - int ret, filetype; - gui_menu *m = &menu_load; - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - - while (1) - { - ret = GUI_RunMenu(m); - - switch (ret) - { - /*** Button B ***/ - case -1: - GUI_DrawMenuFX(m,30,1); - GUI_DeleteMenu(m); - return 0; - - /*** Load from selected device */ - default: - { - /* ROM File type */ - filetype = ret - 1; - - /* Try to open current directory */ - if (ret > 0) - { - ret = OpenDirectory(config.l_device, filetype); - } - else - { - ret = OpenDirectory(TYPE_RECENT, filetype); - } - - if (ret) - { - GUI_DeleteMenu(m); - if (FileSelector(filetype)) - { - /* directly jump to game */ - return 1; - } - GUI_InitMenu(m); - } - break; - } - } - } - - return 0; -} - -/*************************************************************************** - * Show rom info screen - ***************************************************************************/ -static void showrominfo (void) -{ - char items[15][64]; - char msg[32]; - - /* fill ROM infos */ - sprintf (items[0], "Console Type: %s", rominfo.consoletype); - sprintf (items[1], "Copyright: %s", rominfo.copyright); - sprintf (items[2], "Company Name: %s", get_company()); - sprintf (items[3], "Domestic Name:"); - sprintf (items[4], "%s",rominfo.domestic); - sprintf (items[5], "International Name:"); - sprintf (items[6], "%s",rominfo.international); - sprintf (items[7], "Type: %s (%s)",rominfo.ROMType, strcmp(rominfo.ROMType, "AI") ? "Game" : "Educational"); - sprintf (items[8], "Product ID: %s", rominfo.product); - sprintf (items[9], "Checksum: %04x (%04x) (%s)", rominfo.checksum, rominfo.realchecksum, - (rominfo.checksum == rominfo.realchecksum) ? "GOOD" : "BAD"); - - sprintf (items[10], "Supports: "); - if (rominfo.peripherals & (1 << 1)) - { - strcat(items[10],get_peripheral(1)); - strcat(items[10],", "); - } - else if (rominfo.peripherals & (1 << 0)) - { - strcat(items[10],get_peripheral(0)); - strcat(items[10],", "); - } - if (rominfo.peripherals & (1 << 7)) - { - strcat(items[10],get_peripheral(7)); - strcat(items[10],", "); - } - if (rominfo.peripherals & (1 << 8)) - { - strcat(items[10],get_peripheral(8)); - strcat(items[10],", "); - } - if (rominfo.peripherals & (1 << 11)) - { - strcat(items[10],get_peripheral(11)); - strcat(items[10],", "); - } - if (rominfo.peripherals & (1 << 13)) - { - strcat(items[10],get_peripheral(13)); - strcat(items[10],", "); - } - if (strlen(items[10]) > 10) - items[10][strlen(items[10]) - 2] = 0; - - sprintf (items[11], "ROM end: $%06X", rominfo.romend); - - if (sram.custom) - sprintf (items[12], "Serial EEPROM"); - else if (sram.detected) - sprintf (items[12], "SRAM Start: $%06X", sram.start); - else - sprintf (items[12], "No Backup Memory specified"); - - if (sram.custom == 1) - sprintf (items[13], "Type: I2C (24Cxx)"); - else if (sram.custom == 2) - sprintf (items[13], "Type: SPI (25x512/95x512)"); - else if (sram.custom == 3) - sprintf (items[13], "Type: I2C (93C46)"); - else if (sram.detected) - sprintf (items[13], "SRAM End: $%06X", sram.end); - else if (sram.on) - sprintf (items[13], "SRAM enabled by default"); - else - sprintf (items[13], "SRAM disabled by default"); - - if (region_code == REGION_USA) - sprintf (items[14], "Region Code: %s (USA)", rominfo.country); - else if (region_code == REGION_EUROPE) - sprintf (items[14], "Region Code: %s (EUR)", rominfo.country); - else if (region_code == REGION_JAPAN_NTSC) - sprintf (items[14], "Region Code: %s (JPN)", rominfo.country); - else if (region_code == REGION_JAPAN_PAL) - sprintf (items[14], "Region Code: %s (JPN-PAL)", rominfo.country); - -#ifdef USE_BENCHMARK - /* ROM benchmark */ - if (!config.ntsc) - { - int frames = 0; - u64 start = gettime(); - do - { - system_frame(0); - audio_update(); - } - while (++frames < 300); - u64 end = gettime(); - sprintf(msg,"ROM Header Info (%d fps)", (300 * 1000000) / diff_usec(start,end)); - } - else -#endif - { - strcpy(msg,"ROM Header Info"); - } - - GUI_TextWindow(&menu_main, msg, items, 15, 15); -} - -/*************************************************************************** - * Show credits - ***************************************************************************/ -static void showcredits(void) -{ - int offset = 0; - - gx_texture *texture = gxTextureOpenPNG(Bg_credits_png,0); - s16 p = 0; - - while (!p) - { - gxClearScreen ((GXColor)BLACK); - if (texture) - gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); - - FONT_writeCenter("Genesis Plus Core", 24, 0, 640, 480 - offset, (GXColor)LIGHT_BLUE); - FONT_writeCenter("improved emulation code, fixes & extra features by Eke-Eke", 18, 0, 640, 516 - offset, (GXColor)WHITE); - FONT_writeCenter("original 1.3 version by Charles MacDonald", 18, 0, 640, 534 - offset, (GXColor)WHITE); - FONT_writeCenter("original Z80 core by Juergen Buchmueller", 18, 0, 640, 552 - offset, (GXColor)WHITE); - FONT_writeCenter("original 68k core (Musashi) by Karl Stenerud", 18, 0, 640, 570 - offset, (GXColor)WHITE); - FONT_writeCenter("original YM2612/2413 cores by Jarek Burczynski, Tatsuyuki Satoh", 18, 0, 640, 588 - offset, (GXColor)WHITE); - FONT_writeCenter("original SN76489 core by Maxim", 18, 0, 640, 606 - offset, (GXColor)WHITE); - FONT_writeCenter("SVP core by Gravydas Ignotas (Notaz)", 18, 0, 640, 624 - offset, (GXColor)WHITE); - FONT_writeCenter("Blip Buffer Library & NTSC Video Filter by Shay Green (Blargg)", 18, 0, 640, 642 - offset, (GXColor)WHITE); - FONT_writeCenter("3-Band EQ implementation by Neil C", 18, 0, 640, 660 - offset, (GXColor)WHITE); - - FONT_writeCenter("Special thanks to ...", 20, 0, 640, 700 - offset, (GXColor)LIGHT_GREEN); - FONT_writeCenter("Nemesis, Tasco Deluxe, Bart Trzynadlowski, Jorge Cwik, Haze,", 18, 0, 640, 736 - offset, (GXColor)WHITE); - FONT_writeCenter("Stef Dallongeville, Notaz, AamirM, Steve Snake, Charles MacDonald", 18, 0, 640, 754 - offset, (GXColor)WHITE); - FONT_writeCenter("Spritesmind & SMS Power forums members for their technical help", 18, 0, 640, 772 - offset, (GXColor)WHITE); - - FONT_writeCenter("Gamecube & Wii port", 24, 0, 640, 830 - offset, (GXColor)LIGHT_BLUE); - FONT_writeCenter("porting code, GUI engine & design by Eke-Eke", 18, 0, 640, 866 - offset, (GXColor)WHITE); - FONT_writeCenter("original Gamecube port by Softdev, Honkeykong & Markcube", 18, 0, 640, 884 - offset, (GXColor)WHITE); - FONT_writeCenter("original icons, logo & button design by Low Lines", 18, 0, 640, 906 - offset, (GXColor)WHITE); - FONT_writeCenter("credit illustration by Orioto (Deviant Art)", 18, 0, 640, 924 - offset, (GXColor)WHITE); - FONT_writeCenter("memory card icon design by Brakken", 18, 0, 640, 942 - offset, (GXColor)WHITE); - FONT_writeCenter("libogc by Shagkur & various other contibutors", 18, 0, 640, 960 - offset, (GXColor)WHITE); - FONT_writeCenter("libfat by Chism", 18, 0, 640, 978 - offset, (GXColor)WHITE); - FONT_writeCenter("wiiuse by Michael Laforest (Para)", 18, 0, 640, 996 - offset, (GXColor)WHITE); - FONT_writeCenter("asndlib & OGG player by Francisco Muoz (Hermes)", 18, 0, 640, 1014 - offset, (GXColor)WHITE); - FONT_writeCenter("zlib, libpng & libtremor by their respective authors", 18, 0, 640, 1032 - offset, (GXColor)WHITE); - FONT_writeCenter("devkitPPC by Wintermute", 18, 0, 640, 1050 - offset, (GXColor)WHITE); - - FONT_writeCenter("Special thanks to ...", 20, 0, 640, 1090 - offset, (GXColor)LIGHT_GREEN); - FONT_writeCenter("Softdev, Tmbinc, Costis, Emukiddid, Team Twiizer", 18, 0, 640, 1126 - offset, (GXColor)WHITE); - FONT_writeCenter("Brakken & former Tehskeen members for their support", 18, 0, 640, 1144 - offset, (GXColor)WHITE); - FONT_writeCenter("Anca, my wife, for her patience & various ideas", 18, 0, 640, 1162 - offset, (GXColor)WHITE); - - gxSetScreen(); - p = m_input.keys; - gxSetScreen(); - p |= m_input.keys; - offset ++; - if (offset > 1144) - offset = 0; - } - - gxTextureClose(&texture); -} - -static void exitmenu(void) -{ - char *items[3] = - { - "View Credits", -#ifdef HW_RVL - "Exit to System Menu", -#else - "Reset System", -#endif - "Return to Loader", - }; - - /* autodetect loader stub */ - int maxitems = 2; - u32 *sig = (u32*)0x80001800; - void (*reload)() = (void(*)())0x80001800; - -#ifdef HW_RVL - if ((sig[1] == 0x53545542) && (sig[2] == 0x48415858)) // HBC -#else - if (sig[0] == 0x7c6000a6) // SDLOAD -#endif - { - maxitems = 3; - } - - /* display option window */ - switch (GUI_OptionWindow(&menu_main, osd_version, items, maxitems)) - { - case 0: /* credits */ - GUI_DeleteMenu(&menu_main); - showcredits(); - GUI_InitMenu(&menu_main); - break; - - case 1: /* reset */ -#ifdef HW_RVL - gxTextureClose(&w_pointer); -#endif - GUI_DeleteMenu(&menu_main); - GUI_FadeOut(); - shutdown(); -#ifdef HW_RVL - SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0); -#else - SYS_ResetSystem(SYS_HOTRESET,0,0); -#endif - break; - - case 2: /* exit to loader */ -#ifdef HW_RVL - gxTextureClose(&w_pointer); -#endif - GUI_DeleteMenu(&menu_main); - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_SHUTDOWN,0,0); - __lwp_thread_stopmultitasking(*reload); - break; - - default: - break; - } -} - -/**************************************************************************** - * Main Menu - * - ****************************************************************************/ - -static void mainmenu_cb(void) -{ - char temp[4]; - gui_menu *m = &menu_main; - int status = areplay_get_status(); - - /* Action Replay Switch current status */ - if (status == AR_SWITCH_TRAINER) strcpy(temp,"TM"); - else if (status == AR_SWITCH_ON) strcpy(temp,"ON"); - else strcpy(temp,"OFF"); - - /* Display informations */ - if (m->selected == 6) - { - FONT_writeCenter("Action\nReplay", 14, m->items[6].x, m->items[6].x + 54, m->items[6].y + (m->items[6].h - 28)/2 + 14, (GXColor)DARK_GREY); - FONT_writeCenter(temp, 11, m->items[6].x + 56 + 3, m->items[6].x + 78 + 2, m->items[6].y + (m->items[6].h - 11)/2 + 11, (GXColor)DARK_GREY); - } - else - { - FONT_writeCenter("Action\nReplay", 12, m->items[6].x + 4, m->items[6].x + 54, m->items[6].y + (m->items[6].h - 24)/2 + 12, (GXColor)DARK_GREY); - FONT_writeCenter(temp, 10, m->items[6].x + 56, m->items[6].x + 78, m->items[6].y + (m->items[6].h - 10)/2 + 10, (GXColor)DARK_GREY); - } -} - -void mainmenu(void) -{ - char filename[MAXPATHLEN]; - int status, quit = 0; - - /* Autosave Backup RAM */ - slot_autosave(0, config.s_device); - -#ifdef HW_RVL - /* Wiimote shutdown */ - if (Shutdown) - { - GUI_FadeOut(); - shutdown(); - SYS_ResetSystem(SYS_POWEROFF, 0, 0); - } - - /* Wiimote pointer */ - w_pointer = gxTextureOpenPNG(generic_point_png,0); -#endif - - gui_menu *m = &menu_main; - - /* Update main menu */ - if (!m->screenshot) - { - if (config.bg_overlay) - { - bg_main[1].state |= IMAGE_VISIBLE; - bg_misc[1].state |= IMAGE_VISIBLE; - bg_ctrls[1].state |= IMAGE_VISIBLE; - bg_list[1].state |= IMAGE_VISIBLE; - bg_saves[2].state |= IMAGE_VISIBLE; - } - else - { - bg_main[1].state &= ~IMAGE_VISIBLE; - bg_misc[1].state &= ~IMAGE_VISIBLE; - bg_ctrls[1].state &= ~IMAGE_VISIBLE; - bg_list[1].state &= ~IMAGE_VISIBLE; - bg_saves[2].state &= ~IMAGE_VISIBLE; - } - - if (system_hw) - { - m->screenshot = 128; - m->bg_images[0].state &= ~IMAGE_VISIBLE; - m->items[0].y -= 90; - m->items[1].y -= 90; - m->items[2].y -= 90; - m->buttons[0].y -= 90; - m->buttons[1].y -= 90; - m->buttons[2].y -= 90; - m->buttons[0].shift[1] = 3; - m->buttons[1].shift[1] = 3; - m->buttons[2].shift[1] = 3; - m->buttons[3].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - m->buttons[4].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - m->buttons[5].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - m->buttons[7].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - m->buttons[8].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - m->buttons[9].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - if (areplay_get_status() >= 0) - { - menu_main.buttons[6].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); - menu_main.items[6].data = Button_sm_grey_png; - menu_main.cb = mainmenu_cb; - menu_main.buttons[3].shift[1] = 3; - menu_main.buttons[7].shift[0] = 1; - menu_main.buttons[8].shift[2] = 2; - } - } - } - - GUI_InitMenu(m); - GUI_DrawMenuFX(m,10,0); - - while (quit == 0) - { - switch (GUI_RunMenu(m)) - { - /*** Load Game Menu ***/ - case 0: - { - GUI_DrawMenuFX(m,30,1); - GUI_DeleteMenu(m); - - if (loadgamemenu()) - { - /* restart emulation */ - reloadrom(); - - /* check current controller configuration */ - if (!gx_input_FindDevices()) - { - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - GUI_WaitPrompt("Error","Invalid Controllers Settings"); - break; - } - - /* exit to game and reinitialize emulation */ - gxClearScreen((GXColor)BLACK); - gxSetScreen(); - quit = 1; - break; - } - - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - break; - } - - /*** Options Menu */ - case 1: - { - GUI_DrawMenuFX(m,30,1); - GUI_DeleteMenu(m); - optionmenu(); - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - break; - } - - /*** Exit Menu ***/ - case 2: - { - exitmenu(); - break; - } - - /*** Save Manager ***/ - case 3: - { - GUI_DrawMenuFX(m,30,1); - GUI_DeleteMenu(m); - - if (savemenu()) - { - /* check current controller configuration */ - if (!gx_input_FindDevices()) - { - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - GUI_WaitPrompt("Error","Invalid Controllers Settings"); - break; - } - - /* exit to game */ - quit = 1; - break; - } - - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - break; - } - - /*** Soft / Hard reset ***/ - case 4: - { - /* check current controller configuration */ - if (!gx_input_FindDevices()) - { - GUI_WaitPrompt("Error","Invalid Controllers Settings"); - break; - } - - /* reinitialize emulation */ - GUI_DrawMenuFX(m,10,1); - GUI_DeleteMenu(m); - gxClearScreen((GXColor)BLACK); - gxSetScreen(); - - if (system_hw & SYSTEM_MD) - { - /* Soft Reset */ - gen_reset(0); - } - else if (system_hw == SYSTEM_SMS) - { - /* assert RESET input (Master System model 1 only) */ - io_reg[0x0D] &= ~IO_RESET_HI; - } - else - { - /* Hard Reset */ - system_init(); - system_reset(); - - /* restore SRAM */ - slot_autoload(0,config.s_device); - } - - /* exit to game */ - quit = 1; - break; - } - - /*** Cheats menu ***/ - case 5: - { - GUI_DrawMenuFX(m,30,1); - GUI_DeleteMenu(m); - CheatMenu(); - GUI_InitMenu(m); - GUI_DrawMenuFX(m,30,0); - break; - } - - /*** Action Replay switch ***/ - case 6: - { - status = (areplay_get_status() + 1) % (AR_SWITCH_TRAINER + 1); - areplay_set_status(status); - status = areplay_get_status(); - GUI_DeleteMenu(m); - if (status == AR_SWITCH_TRAINER) m->items[6].data = Button_sm_blue_png; - else if (status == AR_SWITCH_ON) m->items[6].data = Button_sm_yellow_png; - else m->items[6].data = Button_sm_grey_png; - GUI_InitMenu(m); - break; - } - - /*** Return to Game ***/ - case 7: - case -1: - { - if (system_hw) - { - /* check current controller configuration */ - if (!gx_input_FindDevices()) - { - GUI_WaitPrompt("Error","Invalid Controllers Settings"); - break; - } - - /* exit to game */ - GUI_DrawMenuFX(m,10,1); - GUI_DeleteMenu(m); - quit = 1; - } - break; - } - - /*** Game Capture ***/ - case 8: - { - /* PNG filename */ - sprintf(filename,"%s/snaps/%s.png", DEFAULT_PATH, rom_filename); - - /* Save file and return */ - gxSaveScreenshot(filename); - break; - } - - /*** ROM information screen ***/ - case 9: - { - showrominfo(); - break; - } - } - } - - /*** Remove any still held buttons ***/ - while (PAD_ButtonsHeld(0)) - { - VIDEO_WaitVSync(); - PAD_ScanPads(); - } -#ifdef HW_RVL - while (WPAD_ButtonsHeld(0)) - { - VIDEO_WaitVSync(); - WPAD_ScanPads(); - } - gxTextureClose(&w_pointer); - - /* USB Mouse support */ - if ((input.system[0] == SYSTEM_MOUSE) || (input.system[1] == SYSTEM_MOUSE)) - { - MOUSE_Init(); - } - else - { - MOUSE_Deinit(); - } -#endif -} +/**************************************************************************** + * menu.c + * + * Genesis Plus GX menu + * + * Copyright Eke-Eke (2009-2013) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "font.h" +#include "gui.h" +#include "filesel.h" +#include "cheats.h" +#include "file_load.h" +#include "file_slot.h" + +#ifdef HW_RVL +#include +#endif + +#include +#include + +/* Credits */ +extern const u8 Bg_credits_png[]; + +/* Main menu */ +extern const u8 Main_load_png[]; +extern const u8 Main_options_png[]; +extern const u8 Main_quit_png[]; +extern const u8 Main_file_png[]; +extern const u8 Main_reset_png[]; +extern const u8 Main_cheats_png[]; +extern const u8 Main_showinfo_png[]; +extern const u8 Main_takeshot_png[]; +#ifdef HW_RVL +extern const u8 Main_play_wii_png[]; +#else +extern const u8 Main_play_gcn_png[]; +#endif + +/* Options menu */ +extern const u8 Option_menu_png[]; +extern const u8 Option_ctrl_png[]; +extern const u8 Option_sound_png[]; +extern const u8 Option_video_png[]; +extern const u8 Option_system_png[]; + +/* Load ROM menu */ +extern const u8 Load_recent_png[]; +extern const u8 Load_md_png[]; +extern const u8 Load_ms_png[]; +extern const u8 Load_gg_png[]; +extern const u8 Load_sg_png[]; +extern const u8 Load_cd_png[]; + +/* Save Manager menu */ +extern const u8 Button_load_png[]; +extern const u8 Button_load_over_png[]; +extern const u8 Button_save_png[]; +extern const u8 Button_save_over_png[]; +extern const u8 Button_special_png[]; +extern const u8 Button_special_over_png[]; +extern const u8 Button_delete_png[]; +extern const u8 Button_delete_over_png[]; + +/* Controller Settings */ +extern const u8 Ctrl_4wayplay_png[]; +extern const u8 Ctrl_gamepad_md_png[]; +extern const u8 Ctrl_gamepad_ms_png[]; +extern const u8 Ctrl_justifiers_png[]; +extern const u8 Ctrl_menacer_png[]; +extern const u8 Ctrl_mouse_png[]; +extern const u8 Ctrl_xe_a1p_png[]; +extern const u8 Ctrl_activator_png[]; +extern const u8 Ctrl_lightphaser_png[]; +extern const u8 Ctrl_paddle_png[]; +extern const u8 Ctrl_sportspad_png[]; +extern const u8 Ctrl_none_png[]; +extern const u8 Ctrl_teamplayer_png[]; +extern const u8 Ctrl_pad3b_png[]; +extern const u8 Ctrl_pad6b_png[]; +extern const u8 Ctrl_config_png[]; +extern const u8 ctrl_option_off_png[]; +extern const u8 ctrl_option_on_png[]; +extern const u8 ctrl_gamecube_png[]; +#ifdef HW_RVL +extern const u8 ctrl_classic_png[]; +extern const u8 ctrl_nunchuk_png[]; +extern const u8 ctrl_wiimote_png[]; +#endif + +/* Generic images */ +extern const u8 Button_sm_blue_png[]; +extern const u8 Button_sm_grey_png[]; +extern const u8 Button_sm_yellow_png[]; + +/*****************************************************************************/ +/* Specific Menu Callbacks */ +/*****************************************************************************/ +static void ctrlmenu_cb(void); +static void savemenu_cb(void); +static void mainmenu_cb(void); + +/*****************************************************************************/ +/* Generic Buttons data */ +/*****************************************************************************/ +static butn_data arrow_up_data = +{ + {NULL,NULL}, + {Button_up_png,Button_up_over_png} +}; + +static butn_data arrow_down_data = +{ + {NULL,NULL}, + {Button_down_png,Button_down_over_png} +}; + +static butn_data button_text_data = +{ + {NULL,NULL}, + {Button_text_png,Button_text_over_png} +}; + +static butn_data button_icon_data = +{ + {NULL,NULL}, + {Button_icon_png,Button_icon_over_png} +}; + +static butn_data button_icon_sm_data = +{ + {NULL,NULL}, + {Button_icon_sm_png,Button_icon_sm_over_png} +}; + +static butn_data button_player_data = +{ + {NULL,NULL}, + {Button_sm_blue_png,Button_sm_yellow_png} +}; + +static butn_data button_player_none_data = +{ + {NULL,NULL}, + {Button_sm_grey_png,NULL} +}; + +static butn_data button_load_data = +{ + {NULL,NULL}, + {Button_load_png,Button_load_over_png} +}; + +static butn_data button_save_data = +{ + {NULL,NULL}, + {Button_save_png,Button_save_over_png} +}; + +static butn_data button_special_data = +{ + {NULL,NULL}, + {Button_special_png,Button_special_over_png} +}; + +static butn_data button_delete_data = +{ + {NULL,NULL}, + {Button_delete_png,Button_delete_over_png} +}; + +/*****************************************************************************/ +/* Generic GUI items */ +/*****************************************************************************/ +static gui_item action_cancel = +{ + NULL,Key_B_png,"","Back",10,422,28,28 +}; + +static gui_item action_select = +{ + NULL,Key_A_png,"","",602,422,28,28 +}; + +/*****************************************************************************/ +/* GUI backgrounds images */ +/*****************************************************************************/ +static gui_image bg_main[4] = +{ + {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Banner_main_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,340,640,140,255}, + {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,202,362,232,56,255} +}; + +static gui_image bg_misc[5] = +{ + {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Banner_top_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,0,0,640,108,255}, + {NULL,Banner_bottom_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,380,640,100,255}, + {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,466,40,152,44,255} +}; + +static gui_image bg_ctrls[8] = +{ + {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Banner_top_png,IMAGE_VISIBLE,0,0,640,108,255}, + {NULL,Banner_bottom_png,IMAGE_VISIBLE,0,380,640,100,255}, + {NULL,Main_logo_png,IMAGE_VISIBLE,466,40,152,44,255}, + {NULL,Frame_s2_png,IMAGE_VISIBLE,38,72,316,168,128}, + {NULL,Frame_s2_png,IMAGE_VISIBLE,38,242,316,168,128}, + {NULL,Frame_s3_png,IMAGE_SLIDE_RIGHT,400,134,292,248,128} +}; + +static gui_image bg_list[6] = +{ + {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Banner_top_png,IMAGE_VISIBLE,0,0,640,108,255}, + {NULL,Banner_bottom_png,IMAGE_VISIBLE,0,380,640,100,255}, + {NULL,Main_logo_png,IMAGE_VISIBLE,466,40,152,44,255}, + {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,76} +}; + +static gui_image bg_saves[8] = +{ + {NULL,NULL,0,0,0,0,0,255}, + {NULL,Bg_layer_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Bg_overlay_png,IMAGE_VISIBLE|IMAGE_REPEAT,0,0,640,480,255}, + {NULL,Banner_top_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,0,0,640,108,255}, + {NULL,Banner_bottom_png,IMAGE_VISIBLE|IMAGE_SLIDE_BOTTOM,0,380,640,100,255}, + {NULL,Main_logo_png,IMAGE_VISIBLE|IMAGE_SLIDE_TOP,466,40,152,44,255}, + {NULL,Frame_s1_png,IMAGE_VISIBLE,8,70,372,336,76}, + {NULL,Frame_s1_png,IMAGE_SLIDE_RIGHT,468,108,372,296,76} +}; + +/*****************************************************************************/ +/* Menu Items description */ +/*****************************************************************************/ + +/* Main menu */ +static gui_item items_main[10] = +{ + {NULL,Main_load_png ,"","",114,162,80,92}, + {NULL,Main_options_png ,"","",290,166,60,88}, + {NULL,Main_quit_png ,"","",460,170,52,84}, + {NULL,Main_file_png ,"","",114,216,80,92}, + {NULL,Main_reset_png ,"","",294,227,52,80}, + {NULL,Main_cheats_png ,"","",454,218,64,92}, + {NULL,NULL ,"","", 10,334,84,32}, +#ifdef HW_RVL + {NULL,Main_play_wii_png,"","", 10,372,84,32}, +#else + {NULL,Main_play_gcn_png,"","", 10,372,84,32}, +#endif + {NULL,Main_takeshot_png,"","",546,334,84,32}, + {NULL,Main_showinfo_png,"","",546,372,84,32} +}; + +/* Controllers menu */ +static gui_item items_ctrls[13] = +{ + {NULL,NULL,"","", 0, 0, 0, 0}, + {NULL,NULL,"","", 0, 0, 0, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","",305, 0, 24, 0}, + {NULL,NULL,"","", 0, 0, 0, 0}, + {NULL,NULL,"","", 0, 0, 0, 0}, + {NULL,Ctrl_config_png,"Keys\nConfig","Configure Controller Keys",530,306,32,32} +}; + +/* Load menu */ +static gui_item items_load[6] = +{ + {NULL,Load_recent_png,"","Load recently played games", 119,144,72, 92}, + {NULL,Load_md_png, "","Load Mega Drive/Genesis games", 278,141,84, 92}, + {NULL,Load_cd_png, "","Load Sega/Mega CD games", 454,141,64, 92}, + {NULL,Load_ms_png, "","Load Master System games", 114,284,84, 96}, + {NULL,Load_gg_png, "","Load Game Gear games", 278,283,84,100}, + {NULL,Load_sg_png, "","Load SG-1000 games", 454,281,64, 96} +}; + +/* Option menu */ +static gui_item items_options[5] = +{ + {NULL,Option_system_png,"","System settings", 114,142,80,92}, + {NULL,Option_video_png, "","Video settings", 288,150,64,84}, + {NULL,Option_sound_png, "","Audio settings", 464,154,44,80}, + {NULL,Option_ctrl_png, "","Controllers settings", 192,286,88,92}, + {NULL,Option_menu_png, "","Menu settings", 370,286,60,92} +}; + +/* Audio options */ +static gui_item items_audio[13] = +{ + {NULL,NULL,"Master System FM: AUTO", "Enable/disable YM2413 chip", 56,132,276,48}, + {NULL,NULL,"High-Quality FM: ON", "Adjust YM2612/YM2413 resampling quality", 56,132,276,48}, + {NULL,NULL,"FM Resolution: MAX", "Adjust YM2612 DAC precision", 56,132,276,48}, + {NULL,NULL,"FM Volume: 1.00", "Adjust YM2612/YM2413 output level", 56,132,276,48}, + {NULL,NULL,"PSG Volume: 2.50", "Adjust SN76489 output level", 56,132,276,48}, + {NULL,NULL,"PSG Noise Boost: OFF", "Boost SN76489 Noise Channel", 56,132,276,48}, + {NULL,NULL,"Audio Out: STEREO", "Select audio mixing output type", 56,132,276,48}, + {NULL,NULL,"Filtering: 3-BAND EQ", "Setup Audio filtering", 56,132,276,48}, + {NULL,NULL,"Low Gain: 1.00", "Adjust EQ Low Band Gain", 56,132,276,48}, + {NULL,NULL,"Mid Gain: 1.00", "Adjust EQ Mid Band Gain", 56,132,276,48}, + {NULL,NULL,"High Gain: 1.00", "Adjust EQ High Band Gain", 56,132,276,48}, + {NULL,NULL,"Low Freq: 200 Hz", "Adjust EQ Lowest Frequency", 56,132,276,48}, + {NULL,NULL,"High Freq: 20000 Hz", "Adjust EQ Highest Frequency", 56,132,276,48} +}; + +/* System options */ +static gui_item items_system[10] = +{ + {NULL,NULL,"Console Hardware: AUTO", "Select system hardware model", 56,132,276,48}, + {NULL,NULL,"Console Region: AUTO", "Select system region", 56,132,276,48}, + {NULL,NULL,"VDP Mode: AUTO", "Select VDP mode", 56,132,276,48}, + {NULL,NULL,"System Clock: AUTO", "Select system clock frequency", 56,132,276,48}, + {NULL,NULL,"System Boot: BIOS&CART", "Select system booting method", 56,132,276,48}, + {NULL,NULL,"System Lockups: ON", "Enable/disable original system lock-ups", 56,132,276,48}, + {NULL,NULL,"68k Address Error: ON", "Enable/disable 68k address error exceptions", 56,132,276,48}, + {NULL,NULL,"Lock-on: OFF", "Select Lock-On cartridge type", 56,132,276,48}, + {NULL,NULL,"Cartridge Swap: OFF", "Enable/disable cartridge hot swap", 56,132,276,48}, + {NULL,NULL,"SVP Cycles: 1500", "Adjust SVP chip emulation speed", 56,132,276,48} +}; + +/* Video options */ +#ifdef HW_RVL +static gui_item items_video[13] = +#else +static gui_item items_video[11] = +#endif +{ + {NULL,NULL,"Display: PROGRESSIVE", "Select video mode", 56,132,276,48}, + {NULL,NULL,"TV mode: 50/60Hz", "Select video refresh rate", 56,132,276,48}, + {NULL,NULL,"VSYNC: AUTO", "Enable/disable sync with Video Hardware", 56,132,276,48}, + {NULL,NULL,"GX Bilinear Filter: OFF", "Enable/disable texture hardware filtering", 56,132,276,48}, + {NULL,NULL,"GX Deflickering Filter: OFF","Enable/disable GX hardware filtering", 56,132,276,48}, +#ifdef HW_RVL + {NULL,NULL,"VI Trap Filter: ON", "Enable/disable video hardware filtering", 56,132,276,48}, + {NULL,NULL,"VI Gamma Correction: 1.0", "Adjust video hardware gamma correction", 56,132,276,48}, +#endif + {NULL,NULL,"NTSC Filter: COMPOSITE", "Enable/disable NTSC software filtering", 56,132,276,48}, + {NULL,NULL,"Borders: OFF", "Enable/disable overscan emulation", 56,132,276,48}, + {NULL,NULL,"GG screen: ORIGINAL", "Enable/disable Game Gear extended screen", 56,132,276,48}, + {NULL,NULL,"Aspect: ORIGINAL (4:3)", "Select display aspect ratio", 56,132,276,48}, + {NULL,NULL,"Screen Position (+0,+0)", "Adjust display position", 56,132,276,48}, + {NULL,NULL,"Screen Scaling (+0,+0)", "Adjust display scaling", 56,132,276,48} +}; + +/* Menu options */ +static gui_item items_prefs[10] = +{ + {NULL,NULL,"Auto ROM Load: OFF", "Enable/Disable automatic ROM loading on startup", 56,132,276,48}, + {NULL,NULL,"Auto Cheats: OFF", "Enable/Disable automatic cheats activation", 56,132,276,48}, + {NULL,NULL,"Auto Saves: OFF", "Enable/Disable automatic saves", 56,132,276,48}, + {NULL,NULL,"ROM Load Device: SD", "Configure default device for ROM files", 56,132,276,48}, + {NULL,NULL,"Saves Device: FAT", "Configure default device for Save files", 56,132,276,48}, + {NULL,NULL,"SFX Volume: 100", "Adjust sound effects volume", 56,132,276,48}, + {NULL,NULL,"BGM Volume: 100", "Adjust background music volume", 56,132,276,48}, + {NULL,NULL,"BG Overlay: ON", "Enable/disable background overlay", 56,132,276,48}, + {NULL,NULL,"Screen Width: 658", "Adjust menu screen width in pixels", 56,132,276,48}, + {NULL,NULL,"Show CD Leds: OFF", "Enable/Disable CD leds display", 56,132,276,48}, +}; + +/* Save Manager */ +static gui_item items_saves[9] = +{ + {NULL,NULL,"","" ,0,0,0,0}, + {NULL,NULL,"","" ,0,0,0,0}, + {NULL,NULL,"","" ,0,0,0,0}, + {NULL,NULL,"","" ,0,0,0,0}, + {NULL,NULL,"","" ,0,0,0,0}, + {NULL,NULL,"","Load file" ,0,0,0,0}, + {NULL,NULL,"","Set as default file",0,0,0,0}, + {NULL,NULL,"","Delete file" ,0,0,0,0}, + {NULL,NULL,"","Save file" ,0,0,0,0} +}; + +/*****************************************************************************/ +/* Menu Buttons description */ +/*****************************************************************************/ + +/* Generic Buttons for list menu */ +static gui_butn arrow_up = {&arrow_up_data,BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,76,360,32}; +static gui_butn arrow_down = {&arrow_down_data,BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,0,0,0},14,368,360,32}; + +/* Generic list menu */ +static gui_butn buttons_list[4] = +{ + {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,132,276,48}, + {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,188,276,48}, + {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,244,276,48}, + {&button_text_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0},56,300,276,48} +}; + +/* Main menu */ +static gui_butn buttons_main[10] = +{ + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,0,0,1}, 80,140,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,0,1,1},246,140,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,0,1,0},412,140,148,132}, + {&button_icon_data, BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,4,0,1}, 80,194,148,132}, + {&button_icon_data, BUTTON_OVER_SFX ,{3,4,1,1},246,194,148,132}, + {&button_icon_data, BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,3,1,0},412,194,148,132}, + {NULL , BUTTON_OVER_SFX ,{3,1,0,2}, 10,334, 84, 32}, + {NULL , BUTTON_OVER_SFX ,{4,0,0,2}, 10,372, 84, 32}, + {NULL , BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,1,1,0},546,334, 84, 32}, + {NULL , BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,0,2,0},546,372, 84, 32} +}; + +/* Controllers Menu */ +static gui_butn buttons_ctrls[13] = +{ + {&button_icon_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX ,{0,1,0,2}, 60, 88,148,132}, + {&button_icon_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX ,{1,0,0,5}, 60,258,148,132}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,1,2,0},250, 79, 84, 32}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,3,0},250,117, 84, 32}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,4,0},250,155, 84, 32}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,5,0},250,193, 84, 32}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,5,0},250,249, 84, 32}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,6,0},250,287, 84, 32}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,1,7,0},250,325, 84, 32}, + {NULL ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{1,0,8,0},250,363, 84, 32}, + {&button_icon_sm_data ,BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX ,{0,1,1,0},436,168,160, 52}, + {&button_icon_sm_data ,BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX ,{1,1,0,0},436,232,160, 52}, + {&button_icon_sm_data ,BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX|BUTTON_SELECT_SFX ,{1,0,0,0},436,296,160, 52} +}; + +/* Load Game menu */ +static gui_butn buttons_load[6] = +{ + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,0,1}, 80,120,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,1,1},246,120,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,1,0},412,120,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,0,1}, 80,264,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,1,1},246,264,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,1,0},412,264,148,132} +}; + +/* Options menu */ +static gui_butn buttons_options[5] = +{ + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,0,1}, 80,120,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,3,1,1},246,120,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{0,2,1,1},412,120,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{3,0,1,1},162,264,148,132}, + {&button_icon_data,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX|BUTTON_SELECT_SFX,{2,0,1,0},330,264,148,132} +}; + +/* Save Manager Menu */ +static gui_butn buttons_saves[9] = +{ + {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{0,1,0,0}, 56,102,276,48}, + {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0}, 56,158,276,48}, + {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0}, 56,214,276,48}, + {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,1,0,0}, 56,270,276,48}, + {&button_text_data ,BUTTON_VISIBLE|BUTTON_ACTIVE|BUTTON_OVER_SFX,{1,0,0,0}, 56,326,276,48}, + {&button_load_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{0,1,0,0},530,130, 56,56}, + {&button_special_data,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{1,1,0,0},530,196, 56,56}, + {&button_delete_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{1,1,0,0},530,262, 56,56}, + {&button_save_data ,BUTTON_ACTIVE|BUTTON_SLIDE_RIGHT|BUTTON_OVER_SFX,{1,0,0,0},530,328, 56,56} +}; + +/*****************************************************************************/ +/* Menu descriptions */ +/*****************************************************************************/ + +/* Main menu */ +static gui_menu menu_main = +{ + "", + 0,0, + 10,10,4,0, + items_main, + buttons_main, + bg_main, + {NULL,NULL}, + {NULL,NULL}, + NULL +}; + +/* Main menu */ +gui_menu menu_ctrls = +{ + "Controller Settings", + 0,0, + 13,13,8,0, + items_ctrls, + buttons_ctrls, + bg_ctrls, + {&action_cancel, &action_select}, + {NULL,NULL}, + ctrlmenu_cb +}; + +/* Load Game menu */ +static gui_menu menu_load = +{ + "Load Game", + 0,0, + 6,6,5,0, + items_load, + buttons_load, + bg_misc, + {&action_cancel, &action_select}, + {NULL,NULL}, + NULL +}; + +/* Options menu */ +static gui_menu menu_options = +{ + "Settings", + 0,0, + 5,5,5,0, + items_options, + buttons_options, + bg_misc, + {&action_cancel, &action_select}, + {NULL,NULL}, + NULL +}; + +/* System Options menu */ +static gui_menu menu_system = +{ + "System Settings", + 0,0, + 10,4,6,0, + items_system, + buttons_list, + bg_list, + {&action_cancel, &action_select}, + {&arrow_up,&arrow_down}, + NULL +}; + +/* Video Options menu */ +static gui_menu menu_video = +{ + "Video Settings", + 0,0, + 10,4,6,0, + items_video, + buttons_list, + bg_list, + {&action_cancel, &action_select}, + {&arrow_up,&arrow_down}, + NULL +}; + +/* Sound Options menu */ +static gui_menu menu_audio = +{ + "Audio Settings", + 0,0, + 9,4,6,0, + items_audio, + buttons_list, + bg_list, + {&action_cancel, &action_select}, + {&arrow_up,&arrow_down}, + NULL +}; + +/* Sound Options menu */ +static gui_menu menu_prefs = +{ + "Menu Settings", + 0,0, + 10,4,6,0, + items_prefs, + buttons_list, + bg_list, + {&action_cancel, &action_select}, + {&arrow_up,&arrow_down}, + NULL +}; + + +/* Save Manager menu */ +static gui_menu menu_saves = +{ + "Save Manager", + 0,0, + 9,9,8,0, + items_saves, + buttons_saves, + bg_saves, + {&action_cancel, &action_select}, + {NULL,NULL}, + savemenu_cb +}; + +/**************************************************************************** + * GUI Settings menu + * + ****************************************************************************/ +static void update_screen_w(void) +{ + vmode->viWidth = config.screen_w; + vmode->viXOrigin = (VI_MAX_WIDTH_NTSC -config.screen_w)/2; + VIDEO_Configure(vmode); + VIDEO_Flush(); +} + +static void update_bgm(void) +{ + SetVolumeOgg(((int)config.bgm_volume * 255) / 100); +} + +static void prefmenu () +{ + int ret, quit = 0; + gui_menu *m = &menu_prefs; + gui_item *items = m->items; + + sprintf (items[0].text, "Auto ROM Load: %s", config.autoload ? "ON":"OFF"); + sprintf (items[1].text, "Auto Cheats: %s", config.autocheat ? "ON":"OFF"); + if (config.s_auto == 3) sprintf (items[2].text, "Auto Saves: ALL"); + else if (config.s_auto == 2) sprintf (items[2].text, "Auto Saves: STATE ONLY"); + else if (config.s_auto == 1) sprintf (items[2].text, "Auto Saves: SRAM ONLY"); + else sprintf (items[2].text, "Auto Saves: NONE"); +#ifdef HW_RVL + if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: USB"); + else if (config.l_device == 2) sprintf (items[3].text, "ROM Load Device: DVD"); +#else + if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: DVD"); +#endif + else sprintf (items[3].text, "ROM Load Device: SD"); + if (config.s_device == 1) sprintf (items[4].text, "Saves Device: MCARD A"); + else if (config.s_device == 2) sprintf (items[4].text, "Saves Device: MCARD B"); + else sprintf (items[4].text, "Saves Device: FAT"); + sprintf (items[5].text, "SFX Volume: %1.1f", config.sfx_volume); + sprintf (items[6].text, "BGM Volume: %1.1f", config.bgm_volume); + sprintf (items[7].text, "BG Overlay: %s", config.bg_overlay ? "ON":"OFF"); + sprintf (items[8].text, "Screen Width: %d", config.screen_w); + sprintf (items[9].text, "Show CD Leds: %s", config.cd_leds ? "ON":"OFF"); + + GUI_InitMenu(m); + GUI_SlideMenuTitle(m,strlen("Menu ")); + + while (quit == 0) + { + ret = GUI_RunMenu(m); + + switch (ret) + { + case 0: /* Auto load last ROM file on startup */ + config.autoload ^= 1; + sprintf (items[0].text, "Auto ROM Load: %s", config.autoload ? "ON":"OFF"); + break; + + case 1: /* Cheats automatic activation */ + config.autocheat ^= 1; + sprintf (items[1].text, "Auto Cheats: %s", config.autocheat ? "ON":"OFF"); + break; + + case 2: /*** Auto load/save STATE & SRAM files ***/ + config.s_auto = (config.s_auto + 1) % 4; + if (config.s_auto == 3) sprintf (items[2].text, "Auto Saves: ALL"); + else if (config.s_auto == 2) sprintf (items[2].text, "Auto Saves: STATE ONLY"); + else if (config.s_auto == 1) sprintf (items[2].text, "Auto Saves: SRAM ONLY"); + else sprintf (items[2].text, "Auto Saves: NONE"); + break; + + case 3: /*** Default ROM device ***/ +#ifdef HW_RVL + config.l_device = (config.l_device + 1) % 3; + if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: USB"); + else if (config.l_device == 2) sprintf (items[3].text, "ROM Load Device: DVD"); +#else + config.l_device ^= 1; + if (config.l_device == 1) sprintf (items[3].text, "ROM Load Device: DVD"); +#endif + else sprintf (items[3].text, "ROM Load Device: SD"); + break; + + case 4: /*** Default saves device ***/ + config.s_device = (config.s_device + 1) % 3; + if (config.s_device == 1) sprintf (items[4].text, "Saves Device: MCARD A"); + else if (config.s_device == 2) sprintf (items[4].text, "Saves Device: MCARD B"); + else sprintf (items[4].text, "Saves Device: FAT"); + break; + + case 5: /*** Sound effects volume ***/ + GUI_OptionBox(m,0,"SFX Volume",(void *)&config.sfx_volume,10.0,0.0,100.0,0); + sprintf (items[5].text, "SFX Volume: %1.1f", config.sfx_volume); + break; + + case 6: /*** Background music volume ***/ + GUI_OptionBox(m,update_bgm,"BGM Volume",(void *)&config.bgm_volume,10.0,0.0,100.0,0); + sprintf (items[6].text, "BGM Volume: %1.1f", config.bgm_volume); + break; + + case 7: /*** Background overlay ***/ + config.bg_overlay ^= 1; + if (config.bg_overlay) + { + bg_main[1].state |= IMAGE_VISIBLE; + bg_misc[1].state |= IMAGE_VISIBLE; + bg_ctrls[1].state |= IMAGE_VISIBLE; + bg_list[1].state |= IMAGE_VISIBLE; + bg_saves[2].state |= IMAGE_VISIBLE; + sprintf (items[7].text, "BG Overlay: ON"); + } + else + { + bg_main[1].state &= ~IMAGE_VISIBLE; + bg_misc[1].state &= ~IMAGE_VISIBLE; + bg_ctrls[1].state &= ~IMAGE_VISIBLE; + bg_list[1].state &= ~IMAGE_VISIBLE; + bg_saves[2].state &= ~IMAGE_VISIBLE; + sprintf (items[7].text, "BG Overlay: OFF"); + } + break; + + case 8: /*** Screen Width ***/ + GUI_OptionBox(m,update_screen_w,"Screen Width",(void *)&config.screen_w,2,640,VI_MAX_WIDTH_NTSC,1); + sprintf (items[8].text, "Screen Width: %d", config.screen_w); + break; + + case 9: /*** CD LEDS ***/ + config.cd_leds ^= 1; + sprintf (items[9].text, "Show CD Leds: %s", config.cd_leds ? "ON":"OFF"); + break; + + case -1: + quit = 1; + break; + } + } + + /* stop DVD drive when not in use */ + if (config.l_device != 2) + { +#ifdef HW_RVL + DI_StopMotor(); +#else + vu32* const dvd = (u32*)0xCC006000; + dvd[0] = 0x2e; + dvd[1] = 0; + dvd[2] = 0xe3000000; + dvd[3] = 0; + dvd[4] = 0; + dvd[5] = 0; + dvd[6] = 0; + dvd[7] = 1; + while (dvd[7] & 1); + dvd[0] = 0x14; + dvd[1] = 0; +#endif + } + + GUI_DeleteMenu(m); +} + +/**************************************************************************** + * Audio Settings menu + * + ****************************************************************************/ +static void soundmenu () +{ + int ret, quit = 0; + float fm_volume = (float)config.fm_preamp/100.0; + float psg_volume = (float)config.psg_preamp/100.0; + gui_menu *m = &menu_audio; + gui_item *items = m->items; + + if (config.ym2413 == 0) sprintf (items[0].text, "Master System FM: OFF"); + else if (config.ym2413 == 1) sprintf (items[0].text, "Master System FM: ON"); + else sprintf (items[0].text, "Master System FM: AUTO"); + + if (config.hq_fm) sprintf (items[1].text, "High-Quality FM: ON"); + else sprintf (items[1].text, "High-Quality FM: OFF"); + + if (config.dac_bits < 14) sprintf (items[2].text, "FM Resolution: %d bits", config.dac_bits); + else sprintf (items[2].text, "FM Resolution: MAX"); + + sprintf (items[3].text, "FM Volume: %1.2f", fm_volume); + sprintf (items[4].text, "PSG Volume: %1.2f", psg_volume); + sprintf (items[5].text, "PSG Noise Boost: %s", config.psgBoostNoise ? "ON":"OFF"); + sprintf (items[6].text, "Audio Out: %s", config.mono ? "MONO":"STEREO"); + + if (config.filter == 2) + { + float lg = (float)config.lg/100.0; + float mg = (float)config.mg/100.0; + float hg = (float)config.hg/100.0; + + sprintf(items[7].text, "Filtering: 3-BAND EQ"); + sprintf(items[8].text, "Low Gain: %1.2f", lg); + strcpy(items[8].comment, "Adjust EQ Low Band Gain"); + sprintf(items[9].text, "Middle Gain: %1.2f", mg); + sprintf(items[10].text, "High Gain: %1.2f", hg); + sprintf(items[11].text, "Low Freq: %d", config.low_freq); + sprintf(items[12].text, "High Freq: %d", config.high_freq); + m->max_items = 13; + } + else if (config.filter == 1) + { + int lp_range = (config.lp_range * 100 + 0xffff) / 0x10000; + sprintf (items[7].text, "Filtering: LOW-PASS"); + sprintf (items[8].text, "Low-Pass Rate: %d %%", lp_range); + strcpy (items[9].comment, "Adjust Low Pass filter"); + m->max_items = 9; + } + else + { + sprintf (items[7].text, "Filtering: OFF"); + m->max_items = 8; + } + + GUI_InitMenu(m); + GUI_SlideMenuTitle(m,strlen("Audio ")); + + while (quit == 0) + { + ret = GUI_RunMenu(m); + + switch (ret) + { + case 0: + { + config.ym2413++; + if (config.ym2413 > 2) config.ym2413 = 0; + if (config.ym2413 == 0) sprintf (items[0].text, "Master System FM: OFF"); + else if (config.ym2413 == 1) sprintf (items[0].text, "Master System FM: ON"); + else sprintf (items[0].text, "Master System FM: AUTO"); + + /* Automatic detection */ + if ((config.ym2413 & 2) && system_hw && ((system_hw & SYSTEM_PBC) != SYSTEM_MD)) + { + /* detect if game is using YM2413 */ + sms_cart_init(); + + /* restore SRAM */ + slot_autoload(0,config.s_device); + } + break; + } + + case 1: + { + config.hq_fm ^= 1; + if (config.hq_fm) sprintf (items[1].text, "High-Quality FM: ON"); + else sprintf (items[1].text, "High-Quality FM: OFF"); + break; + } + + case 2: + { + config.dac_bits++; + if (config.dac_bits > 14) config.dac_bits = 7; + if (config.dac_bits < 14) sprintf (items[2].text, "FM Resolution: %d bits", config.dac_bits); + else sprintf (items[2].text, "FM Resolution: MAX"); + YM2612Config(config.dac_bits); + break; + } + + case 3: + { + GUI_OptionBox(m,0,"FM Volume",(void *)&fm_volume,0.01,0.0,5.0,0); + sprintf (items[3].text, "FM Volume: %1.2f", fm_volume); + config.fm_preamp = (int)(fm_volume * 100.0 + 0.5); + break; + } + + case 4: + { + GUI_OptionBox(m,0,"PSG Volume",(void *)&psg_volume,0.01,0.0,5.0,0); + sprintf (items[4].text, "PSG Volume: %1.2f", psg_volume); + config.psg_preamp = (int)(psg_volume * 100.0 + 0.5); + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, 0xff); + } + else + { + SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, io_reg[6]); + } + break; + } + + case 5: + { + config.psgBoostNoise ^= 1; + sprintf (items[5].text, "PSG Noise Boost: %s", config.psgBoostNoise ? "ON":"OFF"); + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, 0xff); + } + else + { + SN76489_Config(0, config.psg_preamp, config.psgBoostNoise, io_reg[6]); + } + break; + } + + case 6: + { + config.mono ^= 1; + sprintf (items[6].text, "Audio Out: %s", config.mono ? "MONO":"STEREO"); + break; + } + + case 7: + { + config.filter = (config.filter + 1) % 3; + if (config.filter == 2) + { + float lg = (float)config.lg/100.0; + sprintf (items[7].text, "Filtering: 3-BAND EQ"); + sprintf (items[8].text, "Low Gain: %1.2f", lg); + strcpy (items[8].comment, "Adjust EQ Low Band Gain"); + m->max_items = 13; + audio_set_equalizer(); + } + else if (config.filter == 1) + { + int lp_range = (config.lp_range * 100 + 0xffff) / 0x10000; + sprintf (items[7].text, "Filtering: LOW-PASS"); + sprintf (items[8].text, "Low-Pass Rate: %d %%", lp_range); + strcpy (items[8].comment, "Adjust Low Pass filter"); + m->max_items = 9; + } + else + { + sprintf (items[7].text, "Filtering: OFF"); + m->max_items = 8; + } + + while ((m->offset + 4) > m->max_items) + { + m->offset--; + m->selected++; + } + break; + } + + case 8: + { + if (config.filter == 1) + { + int lp_range = (config.lp_range * 100 + 0xffff) / 0x10000; + GUI_OptionBox(m,0,"Low-Pass Rate",(void *)&lp_range,1,0,100,1); + sprintf (items[8].text, "Low-Pass Rate: %d %%", lp_range); + config.lp_range = (lp_range * 0x10000) / 100; + } + else + { + float lg = (float)config.lg/100.0; + GUI_OptionBox(m,0,"Low Gain",(void *)&lg,0.01,0.0,2.0,0); + sprintf (items[8].text, "Low Gain: %1.2f", lg); + config.lg = (int)(lg * 100.0); + audio_set_equalizer(); + } + break; + } + + case 9: + { + float mg = (float)config.mg/100.0; + GUI_OptionBox(m,0,"Middle Gain",(void *)&mg,0.01,0.0,2.0,0); + sprintf (items[9].text, "Middle Gain: %1.2f", mg); + config.mg = (int)(mg * 100.0); + audio_set_equalizer(); + break; + } + + case 10: + { + float hg = (float)config.hg/100.0; + GUI_OptionBox(m,0,"High Gain",(void *)&hg,0.01,0.0,2.0,0); + sprintf (items[10].text, "High Gain: %1.2f", hg); + config.hg = (int)(hg * 100.0); + audio_set_equalizer(); + break; + } + + case 11: + { + GUI_OptionBox(m,0,"Low Frequency",(void *)&config.low_freq,10,0,config.high_freq,1); + sprintf (items[11].text, "Low Freq: %d", config.low_freq); + audio_set_equalizer(); + break; + } + + case 12: + { + GUI_OptionBox(m,0,"High Frequency",(void *)&config.high_freq,100,config.low_freq,30000,1); + sprintf (items[12].text, "High Freq: %d", config.high_freq); + audio_set_equalizer(); + break; + } + + case -1: + { + quit = 1; + break; + } + } + } + + GUI_DeleteMenu(m); +} + +/**************************************************************************** + * System Settings menu + * + ****************************************************************************/ +static const uint16 vc_table[4][2] = +{ + /* NTSC, PAL */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0xEA , 0x102}, /* Mode 5 (224 lines) */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0x106, 0x10A} /* Mode 5 (240 lines) */ +}; + +static void systemmenu () +{ + int ret, quit = 0; + int reinit = 0; + gui_menu *m = &menu_system; + gui_item *items = m->items; + + if (config.system == 0) + sprintf (items[0].text, "Console Type: AUTO"); + else if (config.system == SYSTEM_SG) + sprintf (items[0].text, "Console Type: SG-1000"); + else if (config.system == SYSTEM_MARKIII) + sprintf (items[0].text, "Console Type: MARK-III"); + else if (config.system == SYSTEM_SMS) + sprintf (items[0].text, "Console Type: SMS"); + else if (config.system == SYSTEM_SMS2) + sprintf (items[0].text, "Console Type: SMS II"); + else if (config.system == SYSTEM_GG) + sprintf (items[0].text, "Console Type: GG"); + else if (config.system == SYSTEM_MD) + sprintf (items[0].text, "Console Type: MD"); + + if (config.region_detect == 0) + sprintf (items[1].text, "Console Region: AUTO"); + else if (config.region_detect == 1) + sprintf (items[1].text, "Console Region: USA"); + else if (config.region_detect == 2) + sprintf (items[1].text, "Console Region: EUROPE"); + else if (config.region_detect == 3) + sprintf (items[1].text, "Console Region: JAPAN"); + + if (config.vdp_mode == 0) + sprintf (items[2].text, "VDP Mode: AUTO"); + else if (config.vdp_mode == 1) + sprintf (items[2].text, "VDP Mode: NTSC"); + else if (config.vdp_mode == 2) + sprintf (items[2].text, "VDP Mode: PAL"); + + if (config.master_clock == 0) + sprintf (items[3].text, "System Clock: AUTO"); + else if (config.master_clock == 1) + sprintf (items[3].text, "System Clock: NTSC"); + else if (config.master_clock == 2) + sprintf (items[3].text, "System Clock: PAL"); + + sprintf (items[4].text, "System Boot: %s", (config.bios & 1) ? ((config.bios & 2) ? "BIOS&CART" : "BIOS ONLY") : "CART"); + sprintf (items[5].text, "System Lockups: %s", config.force_dtack ? "OFF" : "ON"); + sprintf (items[6].text, "68k Address Error: %s", config.addr_error ? "ON" : "OFF"); + + if (config.lock_on == TYPE_GG) + sprintf (items[7].text, "Lock-On: GAME GENIE"); + else if (config.lock_on == TYPE_AR) + sprintf (items[7].text, "Lock-On: ACTION REPLAY"); + else if (config.lock_on == TYPE_SK) + sprintf (items[7].text, "Lock-On: SONIC&KNUCKLES"); + else + sprintf (items[7].text, "Lock-On: OFF"); + + sprintf (items[8].text, "Cartridge Swap: %s", (config.hot_swap & 1) ? "ON":"OFF"); + + if (svp) + { + sprintf (items[9].text, "SVP Cycles: %d", SVP_cycles); + m->max_items = 10; + } + else + { + m->max_items = 9; + } + + GUI_InitMenu(m); + GUI_SlideMenuTitle(m,strlen("System ")); + + while (quit == 0) + { + ret = GUI_RunMenu(m); + + switch (ret) + { + case 0: /*** Force System Hardware ***/ + { + if (config.system == SYSTEM_MD) + { + config.system = 0; + sprintf (items[0].text, "Console Type: AUTO"); + + /* Default system hardware (auto) */ + if (system_hw) system_hw = romtype; + } + else if (config.system == 0) + { + config.system = SYSTEM_SG; + sprintf (items[0].text, "Console Type: SG-1000"); + if (system_hw) system_hw = SYSTEM_SG; + } + else if (config.system == SYSTEM_SG) + { + config.system = SYSTEM_MARKIII; + sprintf (items[0].text, "Console Type: MARK-III"); + if (system_hw) system_hw = SYSTEM_MARKIII; + } + else if (config.system == SYSTEM_MARKIII) + { + config.system = SYSTEM_SMS; + sprintf (items[0].text, "Console Type: SMS"); + if (system_hw) system_hw = SYSTEM_SMS; + } + else if (config.system == SYSTEM_SMS) + { + config.system = SYSTEM_SMS2; + sprintf (items[0].text, "Console Type: SMS II"); + if (system_hw) system_hw = SYSTEM_SMS2; + } + else if (config.system == SYSTEM_SMS2) + { + config.system = SYSTEM_GG; + sprintf (items[0].text, "Console Type: GG"); + + if (romtype == SYSTEM_GG) + { + /* Game Gear mode */ + if (system_hw) system_hw = SYSTEM_GG; + } + else + { + /* Game Gear in MS compatibility mode */ + if (system_hw) system_hw = SYSTEM_GGMS; + } + } + else if (config.system == SYSTEM_GG) + { + config.system = SYSTEM_MD; + sprintf (items[0].text, "Console Type: MD"); + + if (romtype & SYSTEM_MD) + { + /* Default mode */ + if (system_hw) system_hw = romtype; + } + else + { + /* Mega Drive in MS compatibility mode */ + if (system_hw) system_hw = SYSTEM_PBC; + } + } + + if (system_hw) + { + /* restore previous input settings */ + if (old_system[0] != -1) + { + input.system[0] = old_system[0]; + } + if (old_system[1] != -1) + { + input.system[1] = old_system[1]; + } + + /* reinitialize audio streams */ + audio_init(snd.sample_rate, snd.frame_rate); + + /* force hard reset */ + system_init(); + system_reset(); + + /* restore SRAM */ + slot_autoload(0,config.s_device); + } + + break; + } + + case 1: /*** Force Region ***/ + { + config.region_detect = (config.region_detect + 1) % 4; + if (config.region_detect == 0) + sprintf (items[1].text, "Console Region: AUTO"); + else if (config.region_detect == 1) + sprintf (items[1].text, "Console Region: USA"); + else if (config.region_detect == 2) + sprintf (items[1].text, "Console Region: EUR"); + else if (config.region_detect == 3) + sprintf (items[1].text, "Console Region: JAPAN"); + + /* force system reinitialization + region BIOS */ + reinit = 2; + break; + } + + case 2: /*** Force VDP mode ***/ + { + config.vdp_mode = (config.vdp_mode + 1) % 3; + if (config.vdp_mode == 0) + sprintf (items[2].text, "VDP Mode: AUTO"); + else if (config.vdp_mode == 1) + sprintf (items[2].text, "VDP Mode: NTSC"); + else if (config.vdp_mode == 2) + sprintf (items[2].text, "VDP Mode: PAL"); + + /* force system reinitialization */ + reinit = 1; + break; + } + + case 3: /*** Force Master Clock ***/ + { + config.master_clock = (config.master_clock + 1) % 3; + if (config.master_clock == 0) + sprintf (items[3].text, "System Clock: AUTO"); + else if (config.master_clock == 1) + sprintf (items[3].text, "System Clock: NTSC"); + else if (config.master_clock == 2) + sprintf (items[3].text, "System Clock: PAL"); + + /* force system reinitialization */ + reinit = 1; + break; + } + + case 4: /*** BIOS support ***/ + { + if (config.bios == 0) config.bios = 3; + else if (config.bios == 3) config.bios = 1; + else config.bios = 0; + sprintf (items[4].text, "System Boot: %s", (config.bios & 1) ? ((config.bios & 2) ? "BIOS&CART " : "BIOS ONLY") : "CART"); + if ((system_hw == SYSTEM_MD) || (system_hw & SYSTEM_GG) || (system_hw & SYSTEM_SMS)) + { + /* force hard reset */ + system_init(); + system_reset(); + + /* restore SRAM */ + slot_autoload(0,config.s_device); + } + break; + } + + case 5: /*** force DTACK ***/ + { + config.force_dtack ^= 1; + sprintf (items[5].text, "System Lockups: %s", config.force_dtack ? "OFF" : "ON"); + break; + } + + case 6: /*** 68k Address Error ***/ + { + config.addr_error ^= 1; + m68k.aerr_enabled = config.addr_error; + sprintf (items[6].text, "68k Address Error: %s", config.addr_error ? "ON" : "OFF"); + break; + } + + case 7: /*** Cart Lock-On ***/ + { + config.lock_on = (config.lock_on + 1) % (TYPE_SK + 1); + if (config.lock_on == TYPE_GG) + sprintf (items[7].text, "Lock-On: GAME GENIE"); + else if (config.lock_on == TYPE_AR) + sprintf (items[7].text, "Lock-On: ACTION REPLAY"); + else if (config.lock_on == TYPE_SK) + sprintf (items[7].text, "Lock-On: SONIC&KNUCKLES"); + else + sprintf (items[7].text, "Lock-On: OFF"); + + if ((system_hw == SYSTEM_MD) || (system_hw == SYSTEM_PICO)) + { + /* force hard reset */ + system_init(); + system_reset(); + + /* restore SRAM */ + slot_autoload(0,config.s_device); + + /* Action Replay switch */ + if (areplay_get_status() < 0) + { + menu_main.buttons[6].state &= ~(BUTTON_VISIBLE | BUTTON_ACTIVE); + menu_main.items[6].data = NULL; + menu_main.cb = NULL; + menu_main.buttons[3].shift[1] = 4; + menu_main.buttons[7].shift[0] = 4; + menu_main.buttons[8].shift[2] = 1; + } + else + { + menu_main.buttons[6].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + menu_main.items[6].data = Button_sm_grey_png; + menu_main.cb = mainmenu_cb; + menu_main.buttons[3].shift[1] = 3; + menu_main.buttons[7].shift[0] = 1; + menu_main.buttons[8].shift[2] = 2; + } + } + break; + } + + case 8: /*** Cartridge Hot Swap ***/ + { + config.hot_swap ^= 1; + sprintf (items[8].text, "Cartridge Swap: %s", (config.hot_swap & 1) ? "ON":"OFF"); + break; + } + + case 9: /*** SVP cycles per line ***/ + { + GUI_OptionBox(m,0,"SVP Cycles",(void *)&SVP_cycles,1,1,1500,1); + sprintf (items[9].text, "SVP Cycles: %d", SVP_cycles); + break; + } + + case -1: + { + quit = 1; + break; + } + } + } + + if (reinit && system_hw) + { + /* reinitialize console region */ + get_region(NULL); + + /* framerate might have changed, reinitialize audio timings */ + audio_init(snd.sample_rate, get_framerate()); + + /* system with region BIOS should be reinitialized if region code has changed */ + if ((reinit & 2) && ((system_hw == SYSTEM_MCD) || ((system_hw & SYSTEM_SMS) && (config.bios & 1)))) + { + system_init(); + system_reset(); + + /* restore SRAM */ + slot_autoload(0,config.s_device); + } + else + { + /* reinitialize I/O region register */ + if (system_hw == SYSTEM_MD) + { + io_reg[0x00] = 0x20 | region_code | (config.bios & 1); + } + else if (system_hw == SYSTEM_MCD) + { + io_reg[0x00] = region_code | (config.bios & 1); + } + else + { + io_reg[0x00] = 0x80 | (region_code >> 1); + } + + /* reinitialize VDP */ + if (vdp_pal) + { + status |= 1; + lines_per_frame = 313; + } + else + { + status &= ~1; + lines_per_frame = 262; + } + + /* reinitialize VC max value */ + switch (bitmap.viewport.h) + { + case 192: + vc_max = vc_table[0][vdp_pal]; + break; + case 224: + vc_max = vc_table[1][vdp_pal]; + break; + case 240: + vc_max = vc_table[3][vdp_pal]; + break; + } + } + } + + GUI_DeleteMenu(m); +} + +/**************************************************************************** + * Video Settings menu + * + ****************************************************************************/ +#ifdef HW_RVL +#define VI_OFFSET 7 +static void update_gamma(void) +{ + VIDEO_SetGamma((int)(config.gamma * 10.0)); + VIDEO_Flush(); +} +#else +#define VI_OFFSET 5 +#endif + +static void videomenu () +{ + u16 state[2]; + int ret, quit = 0; + int reinit = 0; + gui_menu *m = &menu_video; + gui_item *items = m->items; + + if (config.render == 1) + sprintf (items[0].text,"Display: INTERLACED"); + else if (config.render == 2) + sprintf (items[0].text, "Display: PROGRESSIVE"); + else + sprintf (items[0].text, "Display: ORIGINAL"); + + if (config.tv_mode == 0) + sprintf (items[1].text, "TV Mode: 60HZ"); + else if (config.tv_mode == 1) + sprintf (items[1].text, "TV Mode: 50HZ"); + else + sprintf (items[1].text, "TV Mode: 50/60HZ"); + + if (config.vsync) + sprintf (items[2].text, "VSYNC: AUTO"); + else + sprintf (items[2].text, "VSYNC: OFF"); + + sprintf (items[3].text, "GX Bilinear Filter: %s", config.bilinear ? " ON" : "OFF"); + sprintf (items[4].text, "GX Deflickering Filter: %s", config.vfilter ? " ON" : "OFF"); + +#ifdef HW_RVL + sprintf (items[5].text, "VI Trap Filter: %s", config.trap ? " ON" : "OFF"); + sprintf (items[6].text, "VI Gamma Correction: %1.1f", config.gamma); +#endif + + if (config.ntsc == 1) + sprintf (items[VI_OFFSET].text, "NTSC Filter: COMPOSITE"); + else if (config.ntsc == 2) + sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO"); + else if (config.ntsc == 3) + sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB"); + else + sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF"); + + if (config.overscan == 3) + sprintf (items[VI_OFFSET+1].text, "Borders: FULL"); + else if (config.overscan == 2) + sprintf (items[VI_OFFSET+1].text, "Borders: H ONLY"); + else if (config.overscan == 1) + sprintf (items[VI_OFFSET+1].text, "Borders: V ONLY"); + else + sprintf (items[VI_OFFSET+1].text, "Borders: NONE"); + + sprintf(items[VI_OFFSET+2].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL"); + + if (config.aspect == 1) + sprintf (items[VI_OFFSET+3].text,"Aspect: ORIGINAL (4:3)"); + else if (config.aspect == 2) + sprintf (items[VI_OFFSET+3].text, "Aspect: ORIGINAL (16:9)"); + else + sprintf (items[VI_OFFSET+3].text, "Aspect: SCALED"); + + sprintf (items[VI_OFFSET+4].text, "Screen Position: (%s%02d,%s%02d)", + (config.xshift < 0) ? "":"+", config.xshift, + (config.yshift < 0) ? "":"+", config.yshift); + + sprintf (items[VI_OFFSET+5].text, "Screen Scaling: (%s%02d,%s%02d)", + (config.xscale < 0) ? "":"+", config.xscale, + (config.yscale < 0) ? "":"+", config.yscale); + + if (config.aspect) + m->max_items = VI_OFFSET+5; + else + m->max_items = VI_OFFSET+6; + + GUI_InitMenu(m); + GUI_SlideMenuTitle(m,strlen("Video ")); + + while (quit == 0) + { + ret = GUI_RunMenu(m); + + switch (ret) + { + case 0: /*** rendering ***/ + config.render = (config.render + 1) % 3; + if (config.render == 2) + { + if (VIDEO_HaveComponentCable()) + { + /* progressive mode (60hz only) */ + config.tv_mode = 0; + sprintf (items[1].text, "TV Mode: 60HZ"); + } + else + { + /* do nothing if component cable is not detected */ + config.render = 0; + } + } + + if (config.render == 1) + sprintf (items[0].text,"Display: INTERLACED"); + else if (config.render == 2) + sprintf (items[0].text, "Display: PROGRESSIVE"); + else + sprintf (items[0].text, "Display: ORIGINAL"); + reinit = 1; + break; + + case 1: /*** tv mode ***/ + if (config.render != 2) + { + config.tv_mode = (config.tv_mode + 1) % 3; + if (config.tv_mode == 0) + sprintf (items[1].text, "TV Mode: 60HZ"); + else if (config.tv_mode == 1) + sprintf (items[1].text, "TV Mode: 50HZ"); + else + sprintf (items[1].text, "TV Mode: 50/60HZ"); + reinit = 1; + } + else + { + GUI_WaitPrompt("Error","Progressive Mode is 60hz only !\n"); + } + break; + + case 2: /*** VSYNC ***/ + config.vsync ^= 1; + if (config.vsync) + sprintf (items[2].text, "VSYNC: AUTO"); + else + sprintf (items[2].text, "VSYNC: OFF"); + reinit = 1; + break; + + case 3: /*** GX Texture filtering ***/ + config.bilinear ^= 1; + sprintf (items[3].text, "GX Bilinear Filter: %s", config.bilinear ? " ON" : "OFF"); + break; + + case 4: /*** GX Copy filtering (deflickering filter) ***/ + config.vfilter ^= 1; + sprintf (items[4].text, "GX Deflicker Filter: %s", config.vfilter ? " ON" : "OFF"); + break; + +#ifdef HW_RVL + case 5: /*** VIDEO Trap filtering ***/ + config.trap ^= 1; + sprintf (items[5].text, "VI Trap Filter: %s", config.trap ? " ON" : "OFF"); + break; + + case 6: /*** VIDEO Gamma correction ***/ + if (system_hw) + { + update_gamma(); + state[0] = m->arrows[0]->state; + state[1] = m->arrows[1]->state; + m->max_buttons = 0; + m->max_images = 0; + m->arrows[0]->state = 0; + m->arrows[1]->state = 0; + m->screenshot = 255; + strcpy(m->title,""); + GUI_OptionBox(m,update_gamma,"VI Gamma Correction",(void *)&config.gamma,0.1,0.1,3.0,0); + m->max_buttons = 4; + m->max_images = 6; + m->arrows[0]->state = state[0]; + m->arrows[1]->state = state[1]; + m->screenshot = 0; + strcpy(m->title,"Video Settings"); + sprintf (items[6].text, "VI Gamma Correction: %1.1f", config.gamma); + VIDEO_SetGamma(VI_GM_1_0); + VIDEO_Flush(); + } + else + { + GUI_WaitPrompt("Error","Please load a game first !\n"); + } + break; +#endif + + case VI_OFFSET: /*** NTSC filter ***/ + config.ntsc = (config.ntsc + 1) & 3; + if (config.ntsc == 1) + sprintf (items[VI_OFFSET].text, "NTSC Filter: COMPOSITE"); + else if (config.ntsc == 2) + sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO"); + else if (config.ntsc == 3) + sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB"); + else + sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF"); + break; + + case VI_OFFSET+1: /*** overscan emulation ***/ + config.overscan = (config.overscan + 1) & 3; + if (config.overscan == 3) + sprintf (items[VI_OFFSET+1].text, "Borders: FULL"); + else if (config.overscan == 2) + sprintf (items[VI_OFFSET+1].text, "Borders: H ONLY"); + else if (config.overscan == 1) + sprintf (items[VI_OFFSET+1].text, "Borders: V ONLY"); + else + sprintf (items[VI_OFFSET+1].text, "Borders: NONE"); + break; + + case VI_OFFSET+2: /*** Game Gear extended screen */ + config.gg_extra ^= 1; + sprintf(items[VI_OFFSET+2].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL"); + break; + + case VI_OFFSET+3: /*** aspect ratio ***/ + config.aspect = (config.aspect + 1) % 3; + if (config.aspect == 1) + sprintf (items[VI_OFFSET+3].text,"Aspect: ORIGINAL (4:3)"); + else if (config.aspect == 2) + sprintf (items[VI_OFFSET+3].text, "Aspect: ORIGINAL (16:9)"); + else + sprintf (items[VI_OFFSET+3].text, "Aspect: SCALED"); + + if (config.aspect) + { + /* disable items */ + m->max_items = VI_OFFSET+5; + + /* reset menu selection */ + if (m->offset > VI_OFFSET) + { + m->offset = VI_OFFSET; + m->selected = 3; + } + } + else + { + /* enable items */ + m->max_items = VI_OFFSET+6; + } + + break; + + case VI_OFFSET+4: /*** screen position ***/ + if (system_hw) + { + state[0] = m->arrows[0]->state; + state[1] = m->arrows[1]->state; + m->max_buttons = 0; + m->max_images = 0; + m->arrows[0]->state = 0; + m->arrows[1]->state = 0; + m->screenshot = 255; + strcpy(m->title,""); + GUI_OptionBox2(m,"X Offset","Y Offset",&config.xshift,&config.yshift,1,-99,99); + m->max_buttons = 4; + m->max_images = 6; + m->arrows[0]->state = state[0]; + m->arrows[1]->state = state[1]; + m->screenshot = 0; + strcpy(m->title,"Video Settings"); + sprintf (items[VI_OFFSET+4].text, "Screen Position: (%s%02d,%s%02d)", + (config.xshift < 0) ? "":"+", config.xshift, + (config.yshift < 0) ? "":"+", config.yshift); + } + else + { + GUI_WaitPrompt("Error","Please load a game first !\n"); + } + break; + + case VI_OFFSET+5: /*** screen scaling ***/ + if (system_hw) + { + state[0] = m->arrows[0]->state; + state[1] = m->arrows[1]->state; + m->max_buttons = 0; + m->max_images = 0; + m->arrows[0]->state = 0; + m->arrows[1]->state = 0; + m->screenshot = 255; + strcpy(m->title,""); + GUI_OptionBox2(m,"X Scale","Y Scale",&config.xscale,&config.yscale,1,-99,99); + m->max_buttons = 4; + m->max_images = 6; + m->arrows[0]->state = state[0]; + m->arrows[1]->state = state[1]; + m->screenshot = 0; + strcpy(m->title,"Video Settings"); + sprintf (items[VI_OFFSET+5].text, "Screen Scaling: (%s%02d,%s%02d)", + (config.xscale < 0) ? "":"+", config.xscale, + (config.yscale < 0) ? "":"+", config.yscale); + } + else + { + GUI_WaitPrompt("Error","Please load a game first !\n"); + } + break; + + case -1: + quit = 1; + break; + } + } + + if (reinit && system_hw) + { + /* framerate might have changed, reinitialize audio timings */ + audio_init(snd.sample_rate, get_framerate()); + } + + GUI_DeleteMenu(m); +} + +/**************************************************************************** + * Controllers Settings menu + ****************************************************************************/ +static int player = 0; +static void ctrlmenu_cb(void) +{ + int i, cnt = 1; + char msg[16]; + gui_menu *m = &menu_ctrls; + + if (m->bg_images[7].state & IMAGE_VISIBLE) + { + /* draw device port number */ + if (config.input[player].device != -1) + { + sprintf(msg,"%d",config.input[player].port + 1); + if (m->selected == 11) + FONT_write(msg,16,m->items[11].x+m->items[11].w+2,m->items[11].y+m->items[11].h+2,640,(GXColor)DARK_GREY); + else + FONT_write(msg,14,m->items[11].x+m->items[11].w,m->items[11].y+m->items[11].h,640,(GXColor)DARK_GREY); + } + } + + /* draw players index */ + for (i=2; iselected == i) + { + FONT_writeCenter("Player", 16, m->buttons[i].x + 2, m->buttons[i].x + 54, m->buttons[i].y + (m->buttons[i].h - 16)/2 + 16, (GXColor)DARK_GREY); + } + else + { + FONT_writeCenter("Player", 14, m->buttons[i].x + 4, m->buttons[i].x + 54, m->buttons[i].y + (m->buttons[i].h - 14)/2 + 14, (GXColor)DARK_GREY); + } + + if (input.dev[i-2] != NO_DEVICE) + { + sprintf(msg,"%d",cnt++); + if (m->selected == i) + { + FONT_writeCenter(msg,18,m->items[i].x+2,m->items[i].x+m->items[i].w+2,m->buttons[i].y+(m->buttons[i].h-18)/2+18,(GXColor)DARK_GREY); + } + else + { + FONT_writeCenter(msg,16,m->items[i].x,m->items[i].x+m->items[i].w,m->buttons[i].y+(m->buttons[i].h - 16)/2+16,(GXColor)DARK_GREY); + } + } + } +} + +/* Set menu elements depending on current system configuration */ +static void ctrlmenu_raz(void) +{ + int i,max = 0; + gui_menu *m = &menu_ctrls; + + /* update players buttons */ + for (i=0; ibuttons[i+2].data = &button_player_none_data; + m->buttons[i+2].state &= ~BUTTON_ACTIVE; + strcpy(m->items[i+2].comment,""); + } + else + { + m->buttons[i+2].data = &button_player_data; + m->buttons[i+2].state |= BUTTON_ACTIVE; + if ((cart.special & HW_J_CART) && (i > 4)) + sprintf(m->items[i+2].comment,"Configure Player %d (J-CART) settings", max + 1); + else + sprintf(m->items[i+2].comment,"Configure Player %d settings", max + 1); + max++; + } + } + + /* update buttons navigation */ + if (input.dev[0] != NO_DEVICE) + m->buttons[0].shift[3] = 2; + else if (input.dev[4] != NO_DEVICE) + m->buttons[0].shift[3] = 6; + else if (input.dev[5] != NO_DEVICE) + m->buttons[0].shift[3] = 7; + else + m->buttons[0].shift[3] = 0; + if (input.dev[4] != NO_DEVICE) + m->buttons[1].shift[3] = 5; + else if (input.dev[5] != NO_DEVICE) + m->buttons[1].shift[3] = 6; + else if (input.dev[0] != NO_DEVICE) + m->buttons[1].shift[3] = 1; + else + m->buttons[1].shift[3] = 0; + + if (input.dev[1] != NO_DEVICE) + m->buttons[2].shift[1] = 1; + else if (input.dev[4] != NO_DEVICE) + m->buttons[2].shift[1] = 4; + else if (input.dev[5] != NO_DEVICE) + m->buttons[2].shift[1] = 5; + else + m->buttons[2].shift[1] = 0; + + if (input.dev[4] != NO_DEVICE) + m->buttons[5].shift[1] = 1; + else if (input.dev[5] != NO_DEVICE) + m->buttons[5].shift[1] = 2; + else + m->buttons[5].shift[1] = 0; + + if (input.dev[3] != NO_DEVICE) + m->buttons[6].shift[0] = 1; + else if (input.dev[0] != NO_DEVICE) + m->buttons[6].shift[0] = 4; + else + m->buttons[6].shift[0] = 0; + + if (input.dev[5] != NO_DEVICE) + m->buttons[6].shift[1] = 1; + else + m->buttons[6].shift[1] = 0; + + if (input.dev[6] != NO_DEVICE) + m->buttons[7].shift[1] = 1; + else + m->buttons[7].shift[1] = 0; + + if (input.dev[7] != NO_DEVICE) + m->buttons[8].shift[1] = 1; + else + m->buttons[8].shift[1] = 0; + + if (input.dev[4] != NO_DEVICE) + m->buttons[7].shift[0] = 1; + else if (input.dev[3] != NO_DEVICE) + m->buttons[7].shift[0] = 2; + else if (input.dev[0] != NO_DEVICE) + m->buttons[7].shift[0] = 5; + else + m->buttons[7].shift[0] = 0; +} + +static void ctrlmenu(void) +{ + int old_player = -1; + int i = 0; + int update = 0; + gui_item *items = NULL; + u8 *special = NULL; + u32 exp; + u8 type = 0; + + /* System devices */ + gui_item items_sys[2][13] = + { + { + {NULL,Ctrl_none_png ,"","Select Port 1 device",110,130,48,72}, + {NULL,Ctrl_gamepad_md_png ,"","Select Port 1 device", 85,117,96,84}, + {NULL,Ctrl_mouse_png ,"","Select Port 1 device", 97,113,64,88}, + {NULL,Ctrl_menacer_png ,"","Select Port 1 device", 94,113,80,88}, + {NULL,Ctrl_justifiers_png ,"","Select Port 1 device", 88,117,80,84}, + {NULL,Ctrl_xe_a1p_png ,"","Select Port 1 device", 98,118,72,84}, + {NULL,Ctrl_activator_png ,"","Select Port 1 device", 94,121,72,80}, + {NULL,Ctrl_gamepad_ms_png ,"","Select Port 1 device", 91,125,84,76}, + {NULL,Ctrl_lightphaser_png,"","Select Port 1 device", 89,109,88,92}, + {NULL,Ctrl_paddle_png ,"","Select Port 1 device", 86,117,96,84}, + {NULL,Ctrl_sportspad_png ,"","Select Port 1 device", 95,117,76,84}, + {NULL,Ctrl_teamplayer_png ,"","Select Port 1 device", 94,109,80,92}, + {NULL,Ctrl_4wayplay_png ,"","Select Port 1 device", 98,110,72,92} + }, + { + {NULL,Ctrl_none_png ,"","Select Port 2 device",110,300,48,72}, + {NULL,Ctrl_gamepad_md_png ,"","Select Port 2 device", 85,287,96,84}, + {NULL,Ctrl_mouse_png ,"","Select Port 2 device", 97,283,64,88}, + {NULL,Ctrl_menacer_png ,"","Select Port 2 device", 94,283,80,88}, + {NULL,Ctrl_justifiers_png ,"","Select Port 2 device", 88,287,80,84}, + {NULL,Ctrl_xe_a1p_png ,"","Select Port 2 device", 98,288,72,84}, + {NULL,Ctrl_activator_png ,"","Select Port 2 device", 94,291,72,80}, + {NULL,Ctrl_gamepad_ms_png ,"","Select Port 2 device", 91,295,84,76}, + {NULL,Ctrl_lightphaser_png,"","Select Port 2 device", 89,279,88,92}, + {NULL,Ctrl_paddle_png ,"","Select Port 2 device", 86,287,96,84}, + {NULL,Ctrl_sportspad_png ,"","Select Port 2 device", 95,287,76,84}, + {NULL,Ctrl_teamplayer_png ,"","Select Port 2 device", 94,279,80,92}, + {NULL,Ctrl_4wayplay_png ,"","Select Port 2 device", 98,280,72,92} + } + }; + + /* Specific controller options */ + gui_item items_special[4][2] = + { + { + /* Gamepad option */ + {NULL,Ctrl_pad3b_png,"Pad\nType","Use 3-buttons Pad",528,180,44,28}, + {NULL,Ctrl_pad6b_png,"Pad\nType","Use 6-buttons Pad",528,180,44,28} + }, + { + /* Mouse option */ + {NULL,ctrl_option_off_png,"Invert\nMouse","Enable/Disable Y-Axis inversion",534,180,24,24}, + {NULL,ctrl_option_on_png ,"Invert\nMouse","Enable/Disable Y-Axis inversion",534,180,24,24}, + }, + { + /* Gun option */ + {NULL,ctrl_option_off_png,"Show\nCursor","Enable/Disable Lightgun cursor",534,180,24,24}, + {NULL,ctrl_option_on_png ,"Show\nCursor","Enable/Disable Lightgun cursor",534,180,24,24}, + }, + { + /* no option */ + {NULL,NULL,"No Option","",436,180,160,52}, + {NULL,NULL,"","",0,0,0,0}, + } + }; + + /* Player Configuration device items */ +#ifdef HW_RVL + gui_item items_device[5] = + { + {NULL,ctrl_option_off_png ,"Input\nDevice","Select Input Controller",534,244,24,24}, + {NULL,ctrl_gamecube_png ,"Input\nDevice","Select Input Controller",530,246,36,24}, + {NULL,ctrl_wiimote_png ,"Input\nDevice","Select Input Controller",526,250,40,12}, + {NULL,ctrl_nunchuk_png ,"Input\nDevice","Select Input Controller",532,242,32,32}, + {NULL,ctrl_classic_png ,"Input\nDevice","Select Input Controller",526,242,40,32}, + }; +#else + gui_item items_device[2] = + { + {NULL,ctrl_option_off_png ,"Input\nDevice","Select Input Controller",534,244,24,24}, + {NULL,ctrl_gamecube_png ,"Input\nDevice","Select Input Controller",530,246,36,24} + }; +#endif + + /* initialize menu */ + gui_menu *m = &menu_ctrls; + GUI_InitMenu(m); + + /* initialize custom buttons */ + button_player_data.texture[0] = gxTextureOpenPNG(button_player_data.image[0],0); + button_player_data.texture[1] = gxTextureOpenPNG(button_player_data.image[1],0); + button_player_none_data.texture[0] = gxTextureOpenPNG(button_player_none_data.image[0],0); + + /* initialize custom images */ + for (i=0; i<13; i++) + { + items_sys[1][i].texture = items_sys[0][i].texture = gxTextureOpenPNG(items_sys[0][i].data,0); + } + items_special[0][0].texture = gxTextureOpenPNG(items_special[0][0].data,0); + items_special[0][1].texture = gxTextureOpenPNG(items_special[0][1].data,0); + items_special[2][0].texture = items_special[1][0].texture = gxTextureOpenPNG(items_special[1][0].data,0); + items_special[2][1].texture = items_special[1][1].texture = gxTextureOpenPNG(items_special[1][1].data,0); + items_device[0].texture = items_special[1][0].texture; + items_device[1].texture = gxTextureOpenPNG(items_device[1].data,0); +#ifdef HW_RVL + items_device[2].texture = gxTextureOpenPNG(items_device[2].data,0); + items_device[3].texture = gxTextureOpenPNG(items_device[3].data,0); + items_device[4].texture = gxTextureOpenPNG(items_device[4].data,0); +#endif + + /* restore current menu elements */ + player = 0; + ctrlmenu_raz(); + memcpy(&m->items[0],&items_sys[0][input.system[0]],sizeof(gui_item)); + memcpy(&m->items[1],&items_sys[1][input.system[1]],sizeof(gui_item)); + + /* menu title slide effect */ + m->selected = 0; + GUI_SlideMenuTitle(m,strlen("Controller ")); + + while (update != -1) + { + /* draw menu */ + GUI_DrawMenu(m); + + /* update menu */ + update = GUI_UpdateMenu(m); + + if (update > 0) + { + switch (m->selected) + { + case 0: /* update port 1 system */ + { + /* fixed configurations */ + if (system_hw) + { + if (cart.special & HW_TEREBI_OEKAKI) + { + GUI_WaitPrompt("Error","Terebi Oekaki detected !"); + break; + } + else if (system_hw == SYSTEM_PICO) + { + GUI_WaitPrompt("Error","PICO hardware detected !"); + break; + } + } + + /* next connected device */ + input.system[0]++; + + /* allow only one connected mouse */ + if ((input.system[0] == SYSTEM_MOUSE) && (input.system[1] == SYSTEM_MOUSE)) + { + input.system[0] += 3; + } + + /* Menacer & Justifiers on Port B only */ + if (input.system[0] == SYSTEM_MENACER) + { + input.system[0] += 2; + } + + /* allow only one gun type */ + if ((input.system[0] == SYSTEM_LIGHTPHASER) && ((input.system[1] == SYSTEM_MENACER) || (input.system[1] == SYSTEM_JUSTIFIER))) + { + input.system[0]++; + } + + /* 4-wayplay uses both ports */ + if (input.system[0] == SYSTEM_WAYPLAY) + { + input.system[1] = SYSTEM_WAYPLAY; + } + + /* loop back */ + if (input.system[0] > SYSTEM_WAYPLAY) + { + input.system[0] = NO_SYSTEM; + input.system[1] = SYSTEM_MD_GAMEPAD; + } + + /* reset I/O ports */ + io_init(); + input_reset(); + + /* save current configuration */ + old_system[0] = input.system[0]; + old_system[1] = input.system[1]; + + /* update menu elements */ + ctrlmenu_raz(); + memcpy(&m->items[0],&items_sys[0][input.system[0]],sizeof(gui_item)); + memcpy(&m->items[1],&items_sys[1][input.system[1]],sizeof(gui_item)); + + if (m->bg_images[7].state & IMAGE_VISIBLE) + { + /* slide out configuration window */ + GUI_DrawMenuFX(m, 20, 1); + + /* remove configuration window */ + m->bg_images[7].state &= ~IMAGE_VISIBLE; + + /* disable configuration buttons */ + m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + + /* update directions */ + m->buttons[2].shift[3] = 0; + m->buttons[3].shift[3] = 0; + m->buttons[4].shift[3] = 0; + m->buttons[5].shift[3] = 0; + m->buttons[6].shift[3] = 0; + m->buttons[7].shift[3] = 0; + m->buttons[8].shift[3] = 0; + m->buttons[9].shift[3] = 0; + + /* update title */ + sprintf(m->title,"Controller Settings"); + } + break; + } + + case 1: /* update port 2 system */ + { + /* fixed configurations */ + if (system_hw) + { + if (cart.special & HW_J_CART) + { + GUI_WaitPrompt("Error","J-CART detected !"); + break; + } + else if (cart.special & HW_TEREBI_OEKAKI) + { + GUI_WaitPrompt("Error","Terebi Oekaki detected !"); + break; + } + else if (system_hw == SYSTEM_PICO) + { + GUI_WaitPrompt("Error","PICO hardware detected !"); + break; + } + } + + /* next connected device */ + input.system[1]++; + + /* allow only one connected mouse */ + if ((input.system[0] == SYSTEM_MOUSE) && (input.system[1] == SYSTEM_MOUSE)) + { + input.system[1]++; + } + + /* allow only one gun type */ + if ((input.system[0] == SYSTEM_LIGHTPHASER) && (input.system[1] == SYSTEM_MENACER)) + { + input.system[1] += 3; + } + + /* allow only one gun type */ + if ((input.system[0] == SYSTEM_LIGHTPHASER) && (input.system[1] == SYSTEM_JUSTIFIER)) + { + input.system[1] += 2; + } + + /* 4-wayplay uses both ports */ + if (input.system[1] == SYSTEM_WAYPLAY) + { + input.system[0] = SYSTEM_WAYPLAY; + } + + /* loop back */ + if (input.system[1] > SYSTEM_WAYPLAY) + { + input.system[1] = NO_SYSTEM; + input.system[0] = SYSTEM_MD_GAMEPAD; + } + + /* reset I/O ports */ + io_init(); + input_reset(); + + /* save current configuration */ + old_system[0] = input.system[0]; + old_system[1] = input.system[1]; + + /* update menu elements */ + ctrlmenu_raz(); + memcpy(&m->items[0],&items_sys[0][input.system[0]],sizeof(gui_item)); + memcpy(&m->items[1],&items_sys[1][input.system[1]],sizeof(gui_item)); + + if (m->bg_images[7].state & IMAGE_VISIBLE) + { + /* slide out configuration window */ + GUI_DrawMenuFX(m, 20, 1); + + /* remove configuration window */ + m->bg_images[7].state &= ~IMAGE_VISIBLE; + + /* disable configuration buttons */ + m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + + /* update directions */ + m->buttons[2].shift[3] = 0; + m->buttons[3].shift[3] = 0; + m->buttons[4].shift[3] = 0; + m->buttons[5].shift[3] = 0; + m->buttons[6].shift[3] = 0; + m->buttons[7].shift[3] = 0; + m->buttons[8].shift[3] = 0; + m->buttons[9].shift[3] = 0; + + /* update title */ + sprintf(m->title,"Controller Settings"); + } + + break; + } + + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + { + /* remove duplicate assigned inputs */ + for (i=0; iselected-2); i++) + { + if (input.dev[i] != NO_DEVICE) player ++; + } + + if (m->bg_images[7].state & IMAGE_VISIBLE) + { + /* if already displayed, do nothing */ + if (old_player == player) break; + + /* slide out configuration window */ + GUI_DrawMenuFX(m, 20, 1); + } + else + { + /* append configuration window */ + m->bg_images[7].state |= IMAGE_VISIBLE; + + /* enable configuration buttons */ + m->buttons[10].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + m->buttons[11].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + m->buttons[12].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + + /* update directions */ + m->buttons[2].shift[3] = 8; + m->buttons[3].shift[3] = 7; + m->buttons[4].shift[3] = 6; + m->buttons[5].shift[3] = 5; + m->buttons[6].shift[3] = 4; + m->buttons[7].shift[3] = 3; + m->buttons[8].shift[3] = 2; + m->buttons[9].shift[3] = 1; + } + + /* emulated device type */ + type = input.dev[m->selected - 2]; + + /* retrieve current player informations */ + switch (type) + { + case DEVICE_PAD3B: + case DEVICE_PAD6B: + { + items = items_special[0]; + special = &config.input[player].padtype; + break; + } + + case DEVICE_MOUSE: + { + items = items_special[1]; + special = &config.invert_mouse; + break; + } + + case DEVICE_LIGHTGUN: + { + items = items_special[2]; + + if ((input.system[1] == SYSTEM_MENACER) || (input.system[1] == SYSTEM_JUSTIFIER)) + { + /* Menacer & Justifiers affected to devices 4 & 5 */ + special = &config.gun_cursor[m->selected & 1]; + } + else + { + /* Lightphasers affected to devices 0 & 4 */ + special = &config.gun_cursor[m->selected >> 2]; + } + break; + } + + default: + { + items = items_special[3]; + special = NULL; + break; + } + } + + if (special) + { + memcpy(&m->items[10],&items[*special],sizeof(gui_item)); + } + else + { + memcpy(&m->items[10],&items[0],sizeof(gui_item)); + } + + memcpy(&m->items[11],&items_device[config.input[player].device + 1],sizeof(gui_item)); + + /* slide in configuration window */ + m->buttons[10].shift[2] = 10 - m->selected; + m->buttons[11].shift[2] = 11 - m->selected; + m->buttons[12].shift[2] = 12 - m->selected; + m->selected = 10; + GUI_DrawMenuFX(m, 20, 0); + + /* some devices require analog sticks */ + if ((type == DEVICE_XE_A1P) && ((config.input[player].device == -1) || (config.input[player].device == 1))) + { + GUI_WaitPrompt("Warning","One Analog Stick required !"); + } + else if ((type == DEVICE_ACTIVATOR) && ((config.input[player].device != 0) && (config.input[player].device != 3))) + { + GUI_WaitPrompt("Warning","Two Analog Sticks required !"); + } + + /* update title */ + if ((cart.special & HW_J_CART) && (player > 1)) + { + sprintf(m->title,"Controller Settings (Player %d) (J-CART)",player+1); + } + else + { + sprintf(m->title,"Controller Settings (Player %d)",player+1); + } + break; + } + + case 10: /* specific option */ + { + if (special) + { + /* switch option */ + *special ^= 1; + + /* specific case: controller type */ + if (type < 2) + { + /* re-initialize emulated device */ + input_init(); + input_reset(); + + /* update emulated device type */ + type = *special; + } + + /* update menu items */ + memcpy(&m->items[10],&items[*special],sizeof(gui_item)); + } + break; + } + + case 11: /* input controller selection */ + { + /* no input device */ + if (config.input[player].device < 0) + { + /* always try gamecube controllers first */ + config.input[player].device = 0; + config.input[player].port = 0; + } + else + { + /* try next port */ + config.input[player].port ++; + } + + /* autodetect connected gamecube controllers */ + if (config.input[player].device == 0) + { + /* find first connected controller */ + exp = 0; + while ((config.input[player].port < 4) && !exp) + { + VIDEO_WaitVSync (); + exp = PAD_ScanPads() & (1<= 4) + { +#ifdef HW_RVL + /* test wiimote */ + config.input[player].port = 0; + config.input[player].device = 1; +#else + /* no input controller left */ + config.input[player].device = -1; + config.input[player].port = player%4; +#endif + } + } + +#ifdef HW_RVL + /* autodetect connected wiimotes (without nunchuk) */ + if (config.input[player].device == 1) + { + /* test current port */ + exp = 255; + if (config.input[player].port < 4) + { + WPAD_Probe(config.input[player].port,&exp); + } + + /* find first connected controller */ + while ((config.input[player].port < 4) && (exp == 255)) + { + /* try next port */ + config.input[player].port ++; + if (config.input[player].port < 4) + { + exp = 255; + WPAD_Probe(config.input[player].port,&exp); + } + } + + /* no more wiimote */ + if (config.input[player].port >= 4) + { + /* test wiimote+nunchuk */ + config.input[player].port = 0; + config.input[player].device = 2; + } + } + + /* autodetect connected wiimote+nunchuk */ + if (config.input[player].device == 2) + { + /* test current port */ + exp = 255; + if (config.input[player].port < 4) + { + WPAD_Probe(config.input[player].port,&exp); + } + + /* find first connected controller */ + while ((config.input[player].port < 4) && (exp != WPAD_EXP_NUNCHUK)) + { + /* try next port */ + config.input[player].port ++; + if (config.input[player].port < 4) + { + exp = 255; + WPAD_Probe(config.input[player].port,&exp); + } + } + + /* no more wiimote+nunchuk */ + if (config.input[player].port >= 4) + { + /* test classic controllers */ + config.input[player].port = 0; + config.input[player].device = 3; + } + } + + /* autodetect connected classic controllers */ + if (config.input[player].device == 3) + { + /* test current port */ + exp = 255; + if (config.input[player].port < 4) + { + WPAD_Probe(config.input[player].port,&exp); + } + + /* find first connected controller */ + while ((config.input[player].port<4) && (exp != WPAD_EXP_CLASSIC)) + { + /* try next port */ + config.input[player].port ++; + if (config.input[player].port < 4) + { + exp = 255; + WPAD_Probe(config.input[player].port,&exp); + } + } + + if (config.input[player].port >= 4) + { + /* no input controller left */ + config.input[player].device = -1; + config.input[player].port = player%4; + } + } +#endif + + /* update menu items */ + memcpy(&m->items[11],&items_device[config.input[player].device + 1],sizeof(gui_item)); + + break; + } + + case 12: /* Controller Keys Configuration */ + { + if (config.input[player].device >= 0) + { + GUI_MsgBoxOpen("Keys Configuration", "",0); + gx_input_Config(config.input[player].port, config.input[player].device, type); + GUI_MsgBoxClose(); + } + break; + } + } + } + + /* Close Window */ + else if (update < 0) + { + if (m->bg_images[7].state & IMAGE_VISIBLE) + { + /* slide out configuration window */ + GUI_DrawMenuFX(m, 20, 1); + + /* disable configuration window */ + m->bg_images[7].state &= ~IMAGE_VISIBLE; + + /* disable configuration buttons */ + m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + + /* clear directions */ + m->buttons[2].shift[3] = 0; + m->buttons[3].shift[3] = 0; + m->buttons[4].shift[3] = 0; + m->buttons[5].shift[3] = 0; + m->buttons[6].shift[3] = 0; + m->buttons[7].shift[3] = 0; + m->buttons[8].shift[3] = 0; + m->buttons[9].shift[3] = 0; + + /* update selector */ + m->selected -= m->buttons[m->selected].shift[2]; + + /* restore title */ + sprintf(m->title,"Controller Settings"); + + /* stay in menu */ + update = 0; + } + else + { + /* check we have at least one connected input before leaving */ + old_player = player; + player = 0; + for (i=0; ibg_images[7].state &= ~IMAGE_VISIBLE; + + /* disable configuration buttons */ + m->buttons[10].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[11].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + m->buttons[12].state &= (~BUTTON_VISIBLE & ~BUTTON_ACTIVE); + + /* clear directions */ + m->buttons[2].shift[3] = 0; + m->buttons[3].shift[3] = 0; + m->buttons[4].shift[3] = 0; + m->buttons[5].shift[3] = 0; + m->buttons[6].shift[3] = 0; + m->buttons[7].shift[3] = 0; + m->buttons[8].shift[3] = 0; + m->buttons[9].shift[3] = 0; + + /* clear menu items */ + memset(&m->items[0],0,sizeof(gui_item)); + memset(&m->items[1],0,sizeof(gui_item)); + memset(&m->items[10],0,sizeof(gui_item)); + memset(&m->items[11],0,sizeof(gui_item)); + + /* clear player buttons */ + m->buttons[2].data = NULL; + m->buttons[3].data = NULL; + m->buttons[4].data = NULL; + m->buttons[5].data = NULL; + m->buttons[6].data = NULL; + m->buttons[7].data = NULL; + m->buttons[8].data = NULL; + m->buttons[9].data = NULL; + + /* delete menu */ + GUI_DeleteMenu(m); + + /* delete custom buttons */ + gxTextureClose(&button_player_data.texture[0]); + gxTextureClose(&button_player_data.texture[1]); + gxTextureClose(&button_player_none_data.texture[0]); + + /* delete custom images */ + for (i=0; i<13; i++) + { + gxTextureClose(&items_sys[0][i].texture); + } + gxTextureClose(&items_special[0][0].texture); + gxTextureClose(&items_special[0][1].texture); + gxTextureClose(&items_special[1][0].texture); + gxTextureClose(&items_special[1][1].texture); + gxTextureClose(&items_device[1].texture); +#ifdef HW_RVL + gxTextureClose(&items_device[2].texture); + gxTextureClose(&items_device[3].texture); + gxTextureClose(&items_device[4].texture); +#endif +} + +/**************************************************************************** + * Main Option menu + * + ****************************************************************************/ +static void optionmenu(void) +{ + int ret, quit = 0; + gui_menu *m = &menu_options; + + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + + while (quit == 0) + { + ret = GUI_RunMenu(m); + + switch (ret) + { + case 0: + GUI_DeleteMenu(m); + systemmenu(); + GUI_InitMenu(m); + break; + case 1: + GUI_DeleteMenu(m); + videomenu(); + GUI_InitMenu(m); + break; + case 2: + GUI_DeleteMenu(m); + soundmenu(); + GUI_InitMenu(m); + break; + case 3: + GUI_DeleteMenu(m); + ctrlmenu(); + GUI_InitMenu(m); + break; + case 4: + GUI_DeleteMenu(m); + prefmenu(); + GUI_InitMenu(m); + break; + case -1: + quit = 1; + break; + } + } + + config_save(); + GUI_DrawMenuFX(m,30,1); + GUI_DeleteMenu(m); +} + +/**************************************************************************** +* Save Manager menu +* +****************************************************************************/ +static t_slot slots[5]; +static void savemenu_cb(void) +{ + int i; + char msg[16]; + gx_texture *star = gxTextureOpenPNG(Star_full_png,0); + + if (sram.on) + { + FONT_write("Backup Memory",16,buttons_saves[0].x+16,buttons_saves[0].y+(buttons_saves[0].h-16)/2+16,buttons_saves[0].x+buttons_saves[0].w,(GXColor)DARK_GREY); + if (slots[0].valid) + { + sprintf(msg,"%d/%02d/%02d",slots[0].day,slots[0].month,slots[0].year); + FONT_alignRight(msg,12,buttons_saves[0].x+buttons_saves[0].w-16,buttons_saves[0].y+(buttons_saves[0].h-28)/2+12,(GXColor)DARK_GREY); + sprintf(msg,"%02d:%02d",slots[0].hour,slots[0].min); + FONT_alignRight(msg,12,buttons_saves[0].x+buttons_saves[0].w-16,buttons_saves[0].y+(buttons_saves[0].h-28)/2+28,(GXColor)DARK_GREY); + } + + if (sram.crc != crc32(0, &sram.sram[0], 0x10000)) + gxDrawTexture(star,22,buttons_saves[0].y+(buttons_saves[0].h-star->height)/2,star->width,star->height,255); + } + else + { + FONT_writeCenter("Backup Memory disabled",16,buttons_saves[0].x,buttons_saves[0].x+buttons_saves[0].w,buttons_saves[0].y+(buttons_saves[0].h-16)/2+16,(GXColor)DARK_GREY); + } + + for (i=1; i<5; i++) + { + if (slots[i].valid) + { + sprintf(msg,"Slot %d",i); + FONT_write(msg,16,buttons_saves[i].x+16,buttons_saves[i].y+(buttons_saves[i].h-16)/2+16,buttons_saves[i].x+buttons_saves[i].w,(GXColor)DARK_GREY); + sprintf(msg,"%d/%02d/%02d",slots[i].day,slots[i].month,slots[i].year); + FONT_alignRight(msg,12,buttons_saves[i].x+buttons_saves[i].w-16,buttons_saves[i].y+(buttons_saves[i].h-28)/2+12,(GXColor)DARK_GREY); + sprintf(msg,"%02d:%02d",slots[i].hour,slots[i].min); + FONT_alignRight(msg,12,buttons_saves[i].x+buttons_saves[i].w-16,buttons_saves[i].y+(buttons_saves[i].h-28)/2+28,(GXColor)DARK_GREY); + } + else + { + FONT_write("Empty Slot",16,buttons_saves[i].x+16,buttons_saves[i].y+(buttons_saves[i].h-16)/2+16,buttons_saves[i].x+buttons_saves[i].h,(GXColor)DARK_GREY); + } + + if (i == config.s_default) + gxDrawTexture(star,22,buttons_saves[i].y+(buttons_saves[i].h-star->height)/2,star->width,star->height,255); + } + gxTextureClose(&star); +} + +static int savemenu(void) +{ + int i, update = 0; + int ret = 0; + int slot = -1; + char filename[MAXPATHLEN]; + gui_menu *m = &menu_saves; + FILE *snap; + + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + + m->bg_images[3].state &= ~IMAGE_SLIDE_TOP; + m->bg_images[4].state &= ~IMAGE_SLIDE_BOTTOM; + m->bg_images[5].state &= ~IMAGE_SLIDE_TOP; + + /* detect existing files */ + for (i=0; i<5; i++) + slot_autodetect(i, config.s_device, &slots[i]); + + /* SRAM disabled */ + if (sram.on) + { + m->buttons[0].state |= BUTTON_ACTIVE; + m->buttons[1].shift[0] = 1; + } + else + { + m->buttons[0].state &= ~BUTTON_ACTIVE; + m->buttons[1].shift[0] = 0; + if (m->selected == 0) + m->selected = 1; + } + + while (update != -1) + { + /* slot selection */ + if ((m->selected < 5) && (slot != m->selected)) + { + /* update slot */ + slot = m->selected; + + /* delete previous texture if any */ + gxTextureClose(&bg_saves[0].texture); + bg_saves[0].state &= ~IMAGE_VISIBLE; + bg_saves[1].state |= IMAGE_VISIBLE; + + /* state slot */ + if (!config.s_device && slot && slots[slot].valid) + { + /* open screenshot file */ + sprintf (filename, "%s/saves/%s__%d.png", DEFAULT_PATH, rom_filename, slot - 1); + snap = fopen(filename, "rb"); + if (snap) + { + /* load texture from file */ + bg_saves[0].texture = gxTextureOpenPNG(0,snap); + if (bg_saves[0].texture) + { + /* set menu background */ + bg_saves[0].w = bg_saves[0].texture->width * 2; + if (config.aspect & 2) bg_saves[0].w = (bg_saves[0].w * 3) / 4; + bg_saves[0].h = bg_saves[0].texture->height * 2; + bg_saves[0].x = (vmode->fbWidth - bg_saves[0].w) / 2; + bg_saves[0].y = (vmode->efbHeight - bg_saves[0].h) / 2; + bg_saves[0].state |= IMAGE_VISIBLE; + bg_saves[1].state &= ~IMAGE_VISIBLE; + } + fclose(snap); + } + } + } + + /* draw menu */ + GUI_DrawMenu(m); + + /* update menu */ + update = GUI_UpdateMenu(m); + + if (update > 0) + { + switch (m->selected) + { + case 0: + case 1: + case 2: + case 3: + case 4: /* Slot selection */ + { + /* enable right window */ + m->bg_images[7].state |= IMAGE_VISIBLE; + m->buttons[5].state |= BUTTON_VISIBLE; + m->buttons[6].state |= BUTTON_VISIBLE; + m->buttons[7].state |= BUTTON_VISIBLE; + m->buttons[8].state |= BUTTON_VISIBLE; + + /* only enable valid options */ + if (slots[slot].valid) + { + m->buttons[5].state |= BUTTON_ACTIVE; + m->buttons[7].state |= BUTTON_ACTIVE; + m->buttons[6].shift[0] = 1; + m->buttons[6].shift[1] = 1; + m->buttons[8].shift[0] = 1; + m->selected = 5; + } + else + { + m->buttons[5].state &= ~BUTTON_ACTIVE; + m->buttons[7].state &= ~BUTTON_ACTIVE; + m->buttons[6].shift[0] = 0; + m->buttons[6].shift[1] = 2; + m->buttons[8].shift[0] = (slot > 0) ? 2 : 0; + m->selected = 8; + } + + /* state slot 'only' button */ + if (slot > 0) + { + m->buttons[6].state |= BUTTON_ACTIVE; + m->buttons[5].shift[1] = 1; + m->buttons[7].shift[0] = 1; + } + else + { + m->buttons[6].state &= ~BUTTON_ACTIVE; + m->buttons[5].shift[1] = 2; + m->buttons[7].shift[0] = 2; + } + + /* disable left buttons */ + m->buttons[0].state &= ~BUTTON_ACTIVE; + m->buttons[1].state &= ~BUTTON_ACTIVE; + m->buttons[2].state &= ~BUTTON_ACTIVE; + m->buttons[3].state &= ~BUTTON_ACTIVE; + m->buttons[4].state &= ~BUTTON_ACTIVE; + + /* keep current selection highlighted */ + m->buttons[slot].state |= BUTTON_SELECTED; + + /* slide in window */ + GUI_DrawMenuFX(m, 20, 0); + + break; + } + + case 5: /* load file */ + { + if (slots[slot].valid) + { + ret = slot_load(slot,config.s_device); + + /* force exit */ + if (ret > 0) + { + GUI_DrawMenuFX(m, 20, 1); + m->buttons[slot].state &= ~BUTTON_SELECTED; + m->bg_images[7].state &= ~IMAGE_VISIBLE; + if (sram.on) + m->buttons[0].state |= BUTTON_ACTIVE; + m->buttons[1].state |= BUTTON_ACTIVE; + m->buttons[2].state |= BUTTON_ACTIVE; + m->buttons[3].state |= BUTTON_ACTIVE; + m->buttons[4].state |= BUTTON_ACTIVE; + m->buttons[5].state &= ~BUTTON_VISIBLE; + m->buttons[6].state &= ~BUTTON_VISIBLE; + m->buttons[7].state &= ~BUTTON_VISIBLE; + m->buttons[8].state &= ~BUTTON_VISIBLE; + m->selected = slot; + update = -1; + } + } + break; + } + + case 6: /* set default slot */ + { + config.s_default = slot; + config_save(); + break; + } + + case 7: /* delete file */ + { + if (slots[slot].valid) + { + if (slot_delete(slot,config.s_device) >= 0) + { + /* hide screenshot */ + gxTextureClose(&bg_saves[0].texture); + bg_saves[0].state &= ~IMAGE_VISIBLE; + slots[slot].valid = 0; + update = -1; + } + } + break; + } + + case 8: /* save file */ + { + ret = slot_save(slot,config.s_device); + + /* force exit */ + if (ret > 0) + { + GUI_DrawMenuFX(m, 20, 1); + m->buttons[slot].state &= ~BUTTON_SELECTED; + m->bg_images[7].state &= ~IMAGE_VISIBLE; + if (sram.on) + m->buttons[0].state |= BUTTON_ACTIVE; + m->buttons[1].state |= BUTTON_ACTIVE; + m->buttons[2].state |= BUTTON_ACTIVE; + m->buttons[3].state |= BUTTON_ACTIVE; + m->buttons[4].state |= BUTTON_ACTIVE; + m->buttons[5].state &= ~BUTTON_VISIBLE; + m->buttons[6].state &= ~BUTTON_VISIBLE; + m->buttons[7].state &= ~BUTTON_VISIBLE; + m->buttons[8].state &= ~BUTTON_VISIBLE; + m->selected = slot; + update = -1; + } + break; + } + + default: + break; + } + } + + if (update < 0) + { + /* close right window */ + if (m->bg_images[7].state & IMAGE_VISIBLE) + { + /* slide out window */ + GUI_DrawMenuFX(m, 20, 1); + + /* clear current selection */ + m->buttons[slot].state &= ~BUTTON_SELECTED; + + /* enable left buttons */ + if (sram.on) + m->buttons[0].state |= BUTTON_ACTIVE; + m->buttons[1].state |= BUTTON_ACTIVE; + m->buttons[2].state |= BUTTON_ACTIVE; + m->buttons[3].state |= BUTTON_ACTIVE; + m->buttons[4].state |= BUTTON_ACTIVE; + + /* disable right window */ + m->bg_images[7].state &= ~IMAGE_VISIBLE; + m->buttons[5].state &= ~BUTTON_VISIBLE; + m->buttons[6].state &= ~BUTTON_VISIBLE; + m->buttons[7].state &= ~BUTTON_VISIBLE; + m->buttons[8].state &= ~BUTTON_VISIBLE; + + /* stay in menu */ + m->selected = slot; + update = 0; + } + } + } + + /* leave menu */ + m->bg_images[3].state |= IMAGE_SLIDE_TOP; + m->bg_images[4].state |= IMAGE_SLIDE_BOTTOM; + m->bg_images[5].state |= IMAGE_SLIDE_TOP; + GUI_DrawMenuFX(m,30,1); + GUI_DeleteMenu(m); + return ret; +} + +/**************************************************************************** + * Load Game menu + * + ****************************************************************************/ +static int loadgamemenu () +{ + int ret, filetype; + gui_menu *m = &menu_load; + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + + while (1) + { + ret = GUI_RunMenu(m); + + switch (ret) + { + /*** Button B ***/ + case -1: + GUI_DrawMenuFX(m,30,1); + GUI_DeleteMenu(m); + return 0; + + /*** Load from selected device */ + default: + { + /* ROM File type */ + filetype = ret - 1; + + /* Try to open current directory */ + if (ret > 0) + { + ret = OpenDirectory(config.l_device, filetype); + } + else + { + ret = OpenDirectory(TYPE_RECENT, filetype); + } + + if (ret) + { + GUI_DeleteMenu(m); + if (FileSelector(filetype)) + { + /* directly jump to game */ + return 1; + } + GUI_InitMenu(m); + } + break; + } + } + } + + return 0; +} + +/*************************************************************************** + * Show rom info screen + ***************************************************************************/ +static void showrominfo (void) +{ + char items[15][64]; + char msg[32]; + + /* fill ROM infos */ + sprintf (items[0], "Console Type: %s", rominfo.consoletype); + sprintf (items[1], "Copyright: %s", rominfo.copyright); + sprintf (items[2], "Company Name: %s", get_company()); + sprintf (items[3], "Domestic Name:"); + sprintf (items[4], "%s",rominfo.domestic); + sprintf (items[5], "International Name:"); + sprintf (items[6], "%s",rominfo.international); + sprintf (items[7], "Type: %s (%s)",rominfo.ROMType, strcmp(rominfo.ROMType, "AI") ? "Game" : "Educational"); + sprintf (items[8], "Product ID: %s", rominfo.product); + sprintf (items[9], "Checksum: %04x (%04x) (%s)", rominfo.checksum, rominfo.realchecksum, + (rominfo.checksum == rominfo.realchecksum) ? "GOOD" : "BAD"); + + sprintf (items[10], "Supports: "); + if (rominfo.peripherals & (1 << 1)) + { + strcat(items[10],get_peripheral(1)); + strcat(items[10],", "); + } + else if (rominfo.peripherals & (1 << 0)) + { + strcat(items[10],get_peripheral(0)); + strcat(items[10],", "); + } + if (rominfo.peripherals & (1 << 7)) + { + strcat(items[10],get_peripheral(7)); + strcat(items[10],", "); + } + if (rominfo.peripherals & (1 << 8)) + { + strcat(items[10],get_peripheral(8)); + strcat(items[10],", "); + } + if (rominfo.peripherals & (1 << 11)) + { + strcat(items[10],get_peripheral(11)); + strcat(items[10],", "); + } + if (rominfo.peripherals & (1 << 13)) + { + strcat(items[10],get_peripheral(13)); + strcat(items[10],", "); + } + if (strlen(items[10]) > 10) + items[10][strlen(items[10]) - 2] = 0; + + sprintf (items[11], "ROM end: $%06X", rominfo.romend); + + if (sram.custom) + sprintf (items[12], "Serial EEPROM"); + else if (sram.detected) + sprintf (items[12], "SRAM Start: $%06X", sram.start); + else + sprintf (items[12], "No Backup Memory specified"); + + if (sram.custom == 1) + sprintf (items[13], "Type: I2C (24Cxx)"); + else if (sram.custom == 2) + sprintf (items[13], "Type: SPI (25x512/95x512)"); + else if (sram.custom == 3) + sprintf (items[13], "Type: I2C (93C46)"); + else if (sram.detected) + sprintf (items[13], "SRAM End: $%06X", sram.end); + else if (sram.on) + sprintf (items[13], "SRAM enabled by default"); + else + sprintf (items[13], "SRAM disabled by default"); + + if (region_code == REGION_USA) + sprintf (items[14], "Region Code: %s (USA)", rominfo.country); + else if (region_code == REGION_EUROPE) + sprintf (items[14], "Region Code: %s (EUR)", rominfo.country); + else if (region_code == REGION_JAPAN_NTSC) + sprintf (items[14], "Region Code: %s (JPN)", rominfo.country); + else if (region_code == REGION_JAPAN_PAL) + sprintf (items[14], "Region Code: %s (JPN-PAL)", rominfo.country); + +#ifdef USE_BENCHMARK + /* ROM benchmark */ + if (!config.ntsc) + { + int frames = 0; + u64 start = gettime(); + do + { + system_frame(0); + audio_update(); + } + while (++frames < 300); + u64 end = gettime(); + sprintf(msg,"ROM Header Info (%d fps)", (300 * 1000000) / diff_usec(start,end)); + } + else +#endif + { + strcpy(msg,"ROM Header Info"); + } + + GUI_TextWindow(&menu_main, msg, items, 15, 15); +} + +/*************************************************************************** + * Show credits + ***************************************************************************/ +static void showcredits(void) +{ + int offset = 0; + + gx_texture *texture = gxTextureOpenPNG(Bg_credits_png,0); + s16 p = 0; + + while (!p) + { + gxClearScreen ((GXColor)BLACK); + if (texture) + gxDrawTexture(texture, (640-texture->width)/2, (480-texture->height)/2, texture->width, texture->height,255); + + FONT_writeCenter("Genesis Plus Core", 24, 0, 640, 480 - offset, (GXColor)LIGHT_BLUE); + FONT_writeCenter("improved emulation code, fixes & extra features by Eke-Eke", 18, 0, 640, 516 - offset, (GXColor)WHITE); + FONT_writeCenter("original 1.3 version by Charles MacDonald", 18, 0, 640, 534 - offset, (GXColor)WHITE); + FONT_writeCenter("original Z80 core by Juergen Buchmueller", 18, 0, 640, 552 - offset, (GXColor)WHITE); + FONT_writeCenter("original 68k core (Musashi) by Karl Stenerud", 18, 0, 640, 570 - offset, (GXColor)WHITE); + FONT_writeCenter("original YM2612/2413 cores by Jarek Burczynski, Tatsuyuki Satoh", 18, 0, 640, 588 - offset, (GXColor)WHITE); + FONT_writeCenter("original SN76489 core by Maxim", 18, 0, 640, 606 - offset, (GXColor)WHITE); + FONT_writeCenter("SVP core by Gravydas Ignotas (Notaz)", 18, 0, 640, 624 - offset, (GXColor)WHITE); + FONT_writeCenter("Blip Buffer Library & NTSC Video Filter by Shay Green (Blargg)", 18, 0, 640, 642 - offset, (GXColor)WHITE); + FONT_writeCenter("3-Band EQ implementation by Neil C", 18, 0, 640, 660 - offset, (GXColor)WHITE); + + FONT_writeCenter("Special thanks to ...", 20, 0, 640, 700 - offset, (GXColor)LIGHT_GREEN); + FONT_writeCenter("Nemesis, Tasco Deluxe, Bart Trzynadlowski, Jorge Cwik, Haze,", 18, 0, 640, 736 - offset, (GXColor)WHITE); + FONT_writeCenter("Stef Dallongeville, Notaz, AamirM, Steve Snake, Charles MacDonald", 18, 0, 640, 754 - offset, (GXColor)WHITE); + FONT_writeCenter("Spritesmind & SMS Power forums members for their technical help", 18, 0, 640, 772 - offset, (GXColor)WHITE); + + FONT_writeCenter("Gamecube & Wii port", 24, 0, 640, 830 - offset, (GXColor)LIGHT_BLUE); + FONT_writeCenter("porting code, GUI engine & design by Eke-Eke", 18, 0, 640, 866 - offset, (GXColor)WHITE); + FONT_writeCenter("original Gamecube port by Softdev, Honkeykong & Markcube", 18, 0, 640, 884 - offset, (GXColor)WHITE); + FONT_writeCenter("original icons, logo & button design by Low Lines", 18, 0, 640, 906 - offset, (GXColor)WHITE); + FONT_writeCenter("credit illustration by Orioto (Deviant Art)", 18, 0, 640, 924 - offset, (GXColor)WHITE); + FONT_writeCenter("memory card icon design by Brakken", 18, 0, 640, 942 - offset, (GXColor)WHITE); + FONT_writeCenter("libogc by Shagkur & various other contibutors", 18, 0, 640, 960 - offset, (GXColor)WHITE); + FONT_writeCenter("libfat by Chism", 18, 0, 640, 978 - offset, (GXColor)WHITE); + FONT_writeCenter("wiiuse by Michael Laforest (Para)", 18, 0, 640, 996 - offset, (GXColor)WHITE); + FONT_writeCenter("asndlib & OGG player by Francisco Muoz (Hermes)", 18, 0, 640, 1014 - offset, (GXColor)WHITE); + FONT_writeCenter("zlib, libpng & libtremor by their respective authors", 18, 0, 640, 1032 - offset, (GXColor)WHITE); + FONT_writeCenter("devkitPPC by Wintermute", 18, 0, 640, 1050 - offset, (GXColor)WHITE); + + FONT_writeCenter("Special thanks to ...", 20, 0, 640, 1090 - offset, (GXColor)LIGHT_GREEN); + FONT_writeCenter("Softdev, Tmbinc, Costis, Emukiddid, Team Twiizer", 18, 0, 640, 1126 - offset, (GXColor)WHITE); + FONT_writeCenter("Brakken & former Tehskeen members for their support", 18, 0, 640, 1144 - offset, (GXColor)WHITE); + FONT_writeCenter("Anca, my wife, for her patience & various ideas", 18, 0, 640, 1162 - offset, (GXColor)WHITE); + + gxSetScreen(); + p = m_input.keys; + gxSetScreen(); + p |= m_input.keys; + offset ++; + if (offset > 1144) + offset = 0; + } + + gxTextureClose(&texture); +} + +static void exitmenu(void) +{ + char *items[3] = + { + "View Credits", +#ifdef HW_RVL + "Exit to System Menu", +#else + "Reset System", +#endif + "Return to Loader", + }; + + /* autodetect loader stub */ + int maxitems = 2; + u32 *sig = (u32*)0x80001800; + void (*reload)() = (void(*)())0x80001800; + +#ifdef HW_RVL + if ((sig[1] == 0x53545542) && (sig[2] == 0x48415858)) // HBC +#else + if (sig[0] == 0x7c6000a6) // SDLOAD +#endif + { + maxitems = 3; + } + + /* display option window */ + switch (GUI_OptionWindow(&menu_main, osd_version, items, maxitems)) + { + case 0: /* credits */ + GUI_DeleteMenu(&menu_main); + showcredits(); + GUI_InitMenu(&menu_main); + break; + + case 1: /* reset */ +#ifdef HW_RVL + gxTextureClose(&w_pointer); +#endif + GUI_DeleteMenu(&menu_main); + GUI_FadeOut(); + shutdown(); +#ifdef HW_RVL + SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0); +#else + SYS_ResetSystem(SYS_HOTRESET,0,0); +#endif + break; + + case 2: /* exit to loader */ +#ifdef HW_RVL + gxTextureClose(&w_pointer); +#endif + GUI_DeleteMenu(&menu_main); + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_SHUTDOWN,0,0); + __lwp_thread_stopmultitasking(*reload); + break; + + default: + break; + } +} + +/**************************************************************************** + * Main Menu + * + ****************************************************************************/ + +static void mainmenu_cb(void) +{ + char temp[4]; + gui_menu *m = &menu_main; + int status = areplay_get_status(); + + /* Action Replay Switch current status */ + if (status == AR_SWITCH_TRAINER) strcpy(temp,"TM"); + else if (status == AR_SWITCH_ON) strcpy(temp,"ON"); + else strcpy(temp,"OFF"); + + /* Display informations */ + if (m->selected == 6) + { + FONT_writeCenter("Action\nReplay", 14, m->items[6].x, m->items[6].x + 54, m->items[6].y + (m->items[6].h - 28)/2 + 14, (GXColor)DARK_GREY); + FONT_writeCenter(temp, 11, m->items[6].x + 56 + 3, m->items[6].x + 78 + 2, m->items[6].y + (m->items[6].h - 11)/2 + 11, (GXColor)DARK_GREY); + } + else + { + FONT_writeCenter("Action\nReplay", 12, m->items[6].x + 4, m->items[6].x + 54, m->items[6].y + (m->items[6].h - 24)/2 + 12, (GXColor)DARK_GREY); + FONT_writeCenter(temp, 10, m->items[6].x + 56, m->items[6].x + 78, m->items[6].y + (m->items[6].h - 10)/2 + 10, (GXColor)DARK_GREY); + } +} + +void mainmenu(void) +{ + char filename[MAXPATHLEN]; + int status, quit = 0; + + /* Autosave Backup RAM */ + slot_autosave(0, config.s_device); + +#ifdef HW_RVL + /* Wiimote shutdown */ + if (Shutdown) + { + GUI_FadeOut(); + shutdown(); + SYS_ResetSystem(SYS_POWEROFF, 0, 0); + } + + /* Wiimote pointer */ + w_pointer = gxTextureOpenPNG(generic_point_png,0); +#endif + + gui_menu *m = &menu_main; + + /* Update main menu */ + if (!m->screenshot) + { + if (config.bg_overlay) + { + bg_main[1].state |= IMAGE_VISIBLE; + bg_misc[1].state |= IMAGE_VISIBLE; + bg_ctrls[1].state |= IMAGE_VISIBLE; + bg_list[1].state |= IMAGE_VISIBLE; + bg_saves[2].state |= IMAGE_VISIBLE; + } + else + { + bg_main[1].state &= ~IMAGE_VISIBLE; + bg_misc[1].state &= ~IMAGE_VISIBLE; + bg_ctrls[1].state &= ~IMAGE_VISIBLE; + bg_list[1].state &= ~IMAGE_VISIBLE; + bg_saves[2].state &= ~IMAGE_VISIBLE; + } + + if (system_hw) + { + m->screenshot = 128; + m->bg_images[0].state &= ~IMAGE_VISIBLE; + m->items[0].y -= 90; + m->items[1].y -= 90; + m->items[2].y -= 90; + m->buttons[0].y -= 90; + m->buttons[1].y -= 90; + m->buttons[2].y -= 90; + m->buttons[0].shift[1] = 3; + m->buttons[1].shift[1] = 3; + m->buttons[2].shift[1] = 3; + m->buttons[3].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + m->buttons[4].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + m->buttons[5].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + m->buttons[7].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + m->buttons[8].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + m->buttons[9].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + if (areplay_get_status() >= 0) + { + menu_main.buttons[6].state |= (BUTTON_VISIBLE | BUTTON_ACTIVE); + menu_main.items[6].data = Button_sm_grey_png; + menu_main.cb = mainmenu_cb; + menu_main.buttons[3].shift[1] = 3; + menu_main.buttons[7].shift[0] = 1; + menu_main.buttons[8].shift[2] = 2; + } + } + } + + GUI_InitMenu(m); + GUI_DrawMenuFX(m,10,0); + + while (quit == 0) + { + switch (GUI_RunMenu(m)) + { + /*** Load Game Menu ***/ + case 0: + { + GUI_DrawMenuFX(m,30,1); + GUI_DeleteMenu(m); + + if (loadgamemenu()) + { + /* restart emulation */ + reloadrom(); + + /* check current controller configuration */ + if (!gx_input_FindDevices()) + { + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + GUI_WaitPrompt("Error","Invalid Controllers Settings"); + break; + } + + /* exit to game and reinitialize emulation */ + gxClearScreen((GXColor)BLACK); + gxSetScreen(); + quit = 1; + break; + } + + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + break; + } + + /*** Options Menu */ + case 1: + { + GUI_DrawMenuFX(m,30,1); + GUI_DeleteMenu(m); + optionmenu(); + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + break; + } + + /*** Exit Menu ***/ + case 2: + { + exitmenu(); + break; + } + + /*** Save Manager ***/ + case 3: + { + GUI_DrawMenuFX(m,30,1); + GUI_DeleteMenu(m); + + if (savemenu()) + { + /* check current controller configuration */ + if (!gx_input_FindDevices()) + { + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + GUI_WaitPrompt("Error","Invalid Controllers Settings"); + break; + } + + /* exit to game */ + quit = 1; + break; + } + + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + break; + } + + /*** Soft / Hard reset ***/ + case 4: + { + /* check current controller configuration */ + if (!gx_input_FindDevices()) + { + GUI_WaitPrompt("Error","Invalid Controllers Settings"); + break; + } + + /* reinitialize emulation */ + GUI_DrawMenuFX(m,10,1); + GUI_DeleteMenu(m); + gxClearScreen((GXColor)BLACK); + gxSetScreen(); + + if (system_hw & SYSTEM_MD) + { + /* Soft Reset */ + gen_reset(0); + } + else if (system_hw == SYSTEM_SMS) + { + /* assert RESET input (Master System model 1 only) */ + io_reg[0x0D] &= ~IO_RESET_HI; + } + else + { + /* Hard Reset */ + system_init(); + system_reset(); + + /* restore SRAM */ + slot_autoload(0,config.s_device); + } + + /* exit to game */ + quit = 1; + break; + } + + /*** Cheats menu ***/ + case 5: + { + GUI_DrawMenuFX(m,30,1); + GUI_DeleteMenu(m); + CheatMenu(); + GUI_InitMenu(m); + GUI_DrawMenuFX(m,30,0); + break; + } + + /*** Action Replay switch ***/ + case 6: + { + status = (areplay_get_status() + 1) % (AR_SWITCH_TRAINER + 1); + areplay_set_status(status); + status = areplay_get_status(); + GUI_DeleteMenu(m); + if (status == AR_SWITCH_TRAINER) m->items[6].data = Button_sm_blue_png; + else if (status == AR_SWITCH_ON) m->items[6].data = Button_sm_yellow_png; + else m->items[6].data = Button_sm_grey_png; + GUI_InitMenu(m); + break; + } + + /*** Return to Game ***/ + case 7: + case -1: + { + if (system_hw) + { + /* check current controller configuration */ + if (!gx_input_FindDevices()) + { + GUI_WaitPrompt("Error","Invalid Controllers Settings"); + break; + } + + /* exit to game */ + GUI_DrawMenuFX(m,10,1); + GUI_DeleteMenu(m); + quit = 1; + } + break; + } + + /*** Game Capture ***/ + case 8: + { + /* PNG filename */ + sprintf(filename,"%s/snaps/%s.png", DEFAULT_PATH, rom_filename); + + /* Save file and return */ + gxSaveScreenshot(filename); + break; + } + + /*** ROM information screen ***/ + case 9: + { + showrominfo(); + break; + } + } + } + + /*** Remove any still held buttons ***/ + while (PAD_ButtonsHeld(0)) + { + VIDEO_WaitVSync(); + PAD_ScanPads(); + } +#ifdef HW_RVL + while (WPAD_ButtonsHeld(0)) + { + VIDEO_WaitVSync(); + WPAD_ScanPads(); + } + gxTextureClose(&w_pointer); + + /* USB Mouse support */ + if ((input.system[0] == SYSTEM_MOUSE) || (input.system[1] == SYSTEM_MOUSE)) + { + MOUSE_Init(); + } + else + { + MOUSE_Deinit(); + } +#endif +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/menu.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/menu.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/menu.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/menu.h index 2db20d9b5d..032b7108a7 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/menu.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/menu.h @@ -1,46 +1,46 @@ -/**************************************************************************** - * menu.c - * - * Genesis Plus GX menus - * - * Copyright Eke-Eke (2009-2013) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _MENU_H -#define _MENU_H - -extern void mainmenu(void); - -#endif - +/**************************************************************************** + * menu.c + * + * Genesis Plus GX menus + * + * Copyright Eke-Eke (2009-2013) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _MENU_H +#define _MENU_H + +extern void mainmenu(void); + +#endif + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/saveicon.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/saveicon.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/saveicon.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/saveicon.h index a0ae7547da..edf898daab 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gui/saveicon.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gui/saveicon.h @@ -1,136 +1,136 @@ -/*********************************************************** - * Genesis Plus Save Icon - * Made by Brakken (http://www.tehskeen.com) - * - ************************************************************/ -unsigned short icon[1024] = { - - 0xFFFF, 0xFFFF, 0xFBDE, 0xFBDE, 0xFBDE, 0xFBDE, 0xFBDE, 0xEB5A, - 0xFBDE, 0xFBDE, 0xFBDE, 0xBDCD, 0xFBDE, 0xF7BD, 0xF7BD, 0xAD49, - 0xEB59, 0xB9AD, 0xC1EF, 0xC1EF, 0x9062, 0x8000, 0x8C41, 0x8C41, - 0x8000, 0x9CE6, 0xA0E6, 0xA507, 0x8400, 0x9CC5, 0xA0E6, 0xA0E6, - 0xC1EF, 0xC1EF, 0xC1EF, 0xC1EF, 0x8000, 0x8000, 0x8000, 0x8000, - 0x9083, 0x8C63, 0x8C63, 0x9484, 0x8C63, 0x9083, 0x9484, 0x94A4, - 0xC1EF, 0xC20F, 0xC20F, 0xBDCE, 0x8000, 0x8000, 0x8000, 0x8000, - 0x9083, 0x8821, 0x8842, 0x8842, 0x8842, 0xA107, 0xB58C, 0xAD6B, - 0xA529, 0x94A4, 0x9083, 0x94A4, 0x8000, 0x8000, 0x8400, 0x8400, - 0x8842, 0x8842, 0x8842, 0x8821, 0xB18B, 0xA949, 0xA108, 0xA107, - 0xA528, 0xB9AD, 0xC630, 0xCE51, 0x8000, 0x8000, 0x8000, 0x8000, - 0x8821, 0x8821, 0x8821, 0x8400, 0xA108, 0xA529, 0xA108, 0xA529, - 0xCA30, 0xC630, 0xCA30, 0xFBDE, 0x8000, 0x8000, 0x8000, 0xAD27, - 0x8400, 0x9083, 0x8863, 0x8400, 0x9CE6, 0x8842, 0x8C63, 0x8C20, - 0xFBDE, 0xFBDE, 0xFFFF, 0xFFFF, 0xFBDE, 0xFBDE, 0xFBDE, 0xFBDE, - 0xDA92, 0xFBDE, 0xFBDE, 0xFBDE, 0xC1AB, 0xF7BD, 0xFBDE, 0xFBDE, - 0xF7BD, 0xF7BD, 0xF7BD, 0xA0E6, 0xF7BD, 0xF7BD, 0xF39C, 0x9484, - 0xF39C, 0xF39C, 0xDEF7, 0x8C41, 0xF39C, 0xEF7B, 0xD272, 0x8400, - 0x8C42, 0x9CE6, 0xA507, 0xA0E6, 0x8C63, 0x9CC5, 0xA107, 0x9CE6, - 0x9484, 0x98A5, 0x9CE6, 0x98C5, 0x9CC5, 0x98C5, 0xA0E7, 0x98C5, - 0x8C42, 0x9083, 0x94A5, 0x9083, 0x8C42, 0x9083, 0x9084, 0x8C62, - 0x8C62, 0x9083, 0x9084, 0x8C62, 0x8C63, 0x9083, 0x94A4, 0x8C63, - 0x8842, 0x9CC6, 0xA107, 0xA0E7, 0x8842, 0x8842, 0xA108, 0xA54A, - 0x8842, 0x8C63, 0xB5AD, 0xB5AD, 0x8C63, 0x8C62, 0x8842, 0x8C63, - 0x98C5, 0xA528, 0xB5AC, 0xB5AC, 0xA52A, 0xBDEF, 0xC631, 0xCA52, - 0xB9CE, 0xB9CE, 0xA94A, 0xAD6B, 0x8C63, 0x8821, 0x8821, 0x8821, - 0xA529, 0x98C5, 0x98C5, 0xA0E6, 0xC210, 0xA529, 0xA529, 0xA529, - 0xB5AD, 0xB5CD, 0xB5AD, 0xBDEF, 0x8400, 0x8821, 0x8C62, 0x8821, - 0xA0E7, 0x8842, 0x8842, 0x8C41, 0x9083, 0x8842, 0x8842, 0x8842, - 0x94A5, 0x8842, 0x8C62, 0x8C62, 0x8C42, 0x9083, 0x8C62, 0x8C62, - 0xB548, 0xF7BD, 0xF7BD, 0xF7BD, 0xA4C4, 0xF7BD, 0xF7BD, 0xF7BD, - 0x9461, 0xDED5, 0xF39C, 0xF39C, 0x8C20, 0xD271, 0xF39C, 0xF39C, - 0xEF7B, 0xEF7B, 0xC610, 0x8400, 0xEF7B, 0xEB5A, 0xB9AC, 0x8000, - 0xEB5A, 0xEB5A, 0xA528, 0x9CC5, 0xE739, 0xE739, 0x9CC6, 0x98A5, - 0x98C5, 0x98C5, 0xA0E6, 0x94A4, 0x94A4, 0x98C5, 0x94A5, 0x9484, - 0xA528, 0x98C5, 0x9CE6, 0xA0E7, 0x9CE6, 0xA4E6, 0x98A4, 0xA507, - 0x8C62, 0x9083, 0x9484, 0x9083, 0x94A4, 0x94A5, 0x98C5, 0x98C5, - 0xA107, 0xA107, 0xA107, 0xB18B, 0xA907, 0x9062, 0x9484, 0x9CE6, - 0x8842, 0x94A4, 0x9484, 0x9084, 0x8C62, 0x8C63, 0x9CC5, 0x9CC5, - 0x98C6, 0x8C63, 0x9484, 0xA0E6, 0x9CE6, 0x9084, 0x94A4, 0x90A5, - 0x8C63, 0x8C42, 0x8C62, 0x8C62, 0x8C63, 0xA108, 0xA94A, 0xA528, - 0x94A5, 0x8884, 0x8884, 0x8884, 0xB0A5, 0xBC84, 0xA483, 0xA484, - 0x8C63, 0x8C42, 0x8C63, 0x9083, 0xA94A, 0x9083, 0x8C62, 0x94A4, - 0x8884, 0x8063, 0x90A5, 0x94A4, 0xA483, 0xBC63, 0xA884, 0x8884, - 0x9083, 0x8C63, 0x8C42, 0x8C63, 0x9084, 0x8842, 0x9083, 0x9084, - 0x8C42, 0x8C62, 0x98C6, 0xAD6A, 0x9083, 0x8C63, 0x98C5, 0xA107, - 0x8400, 0xC1ED, 0xEF7B, 0xEF7B, 0x8400, 0xAD27, 0xEF7B, 0xEF7B, - 0x9CE6, 0x9CA4, 0xEB5A, 0xEB5A, 0x9CE6, 0x9062, 0xDAB4, 0xE739, - 0xE739, 0xE318, 0x9483, 0x8C63, 0xE318, 0xCE72, 0x9062, 0x9CC5, - 0xDEF7, 0xC20F, 0x8C41, 0x9CE6, 0xDAD6, 0xB9AC, 0x8C20, 0x9CC5, - 0xA0E6, 0xA528, 0x9CC5, 0xA528, 0xA508, 0x94A5, 0x98C6, 0xA108, - 0x9CE6, 0x9CC5, 0xA0E7, 0xA94A, 0xA0E6, 0xA0E7, 0xA507, 0xAD6B, - 0xA107, 0x98C6, 0x9CE6, 0x9083, 0x98C6, 0xA108, 0xA107, 0x98C5, - 0xB9CD, 0xB18B, 0xA107, 0x9CC6, 0xC210, 0xB9CE, 0xA528, 0x9CC6, - 0x98C5, 0x94A5, 0x9084, 0x8884, 0x9CC6, 0x9CE6, 0x9CC6, 0x94A5, - 0x9CE6, 0x9CE6, 0x9CE7, 0xA108, 0x98C5, 0x98C5, 0x98C6, 0x98C6, - 0xB0C6, 0xD0C6, 0xD0C6, 0xD0C6, 0x90A4, 0x90A4, 0x98A5, 0x9CA4, - 0x9CE6, 0x90A4, 0x9084, 0x9084, 0x98C6, 0x98C6, 0x98C6, 0x98C6, - 0xD0A5, 0xD0A5, 0xA484, 0x8483, 0x9484, 0x9083, 0x8C83, 0x9084, - 0x90A5, 0x94A5, 0x9CE6, 0x9CE6, 0x98C6, 0x98C6, 0x9CE6, 0x98C6, - 0x8C63, 0x9084, 0x9484, 0x9083, 0x98C5, 0x98C5, 0x94A4, 0x94A5, - 0x98C6, 0x98C6, 0x98C5, 0x98C5, 0x98C6, 0x98C6, 0x98C6, 0x98C6, - 0x9084, 0x8821, 0xCE51, 0xE739, 0x94A5, 0x8C20, 0xBDCE, 0xE318, - 0x98C5, 0x8821, 0xB18B, 0xE318, 0x98C6, 0x8842, 0xAD49, 0xDEF7, - 0xDAD6, 0xAD49, 0x8C41, 0xA508, 0xD6B5, 0xBDCC, 0x8C20, 0x8C41, - 0xD6B5, 0xD294, 0xB98A, 0xAD06, 0xD294, 0xCE73, 0xCE73, 0xCA52, - 0xA94A, 0xB5AD, 0xB18C, 0xAD6B, 0x9062, 0x9062, 0x9062, 0x9062, - 0xAD27, 0xAD06, 0xAD06, 0xAD06, 0xCA52, 0xC631, 0xC631, 0xC210, - 0xA94B, 0xB18C, 0xB58D, 0xAD6B, 0x9062, 0x9484, 0x98A4, 0x98A4, - 0xA906, 0xA906, 0xA506, 0xA907, 0xC210, 0xC210, 0xB9F0, 0xBDEF, - 0xA94B, 0xA94B, 0xA94B, 0xA94B, 0x98A5, 0x98A5, 0x98A4, 0x98A4, - 0xA907, 0xA907, 0xA907, 0xA506, 0xBDEF, 0xBDEF, 0xBDEF, 0xB1F2, - 0xA94B, 0xA94A, 0xA54A, 0xA529, 0x9484, 0x9484, 0x9483, 0x9483, - 0xA4E6, 0xA4E6, 0xA4E6, 0xA4E6, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, - 0xA529, 0xA529, 0xA529, 0xA108, 0x9062, 0x8C63, 0x9062, 0x9062, - 0xA4E6, 0x9CE6, 0xA0E6, 0xA506, 0xBDEF, 0xC210, 0xC210, 0xC210, - 0xA108, 0x9CE7, 0x9CE7, 0x98C6, 0x8C41, 0x8C42, 0x8C41, 0x8C41, - 0xA507, 0xA508, 0xAD27, 0xB127, 0xC631, 0xC631, 0xCA52, 0xCA52, - 0x98C6, 0x8C63, 0xA0E6, 0xDAD6, 0x8C41, 0x8400, 0xB548, 0xDAD6, - 0xB127, 0xB548, 0xD6B5, 0xD6B5, 0xCE73, 0xCE73, 0xD294, 0xD6B5, - 0xD294, 0xCA74, 0xBA56, 0xB635, 0x9A3B, 0x81FF, 0x81FF, 0x81FF, - 0x81FF, 0x8A1F, 0xA27F, 0xA27F, 0x81FF, 0xA27F, 0xFFFF, 0xFFFF, - 0xB635, 0xB214, 0xB214, 0xBE11, 0x81FF, 0x81FF, 0x81FF, 0x81FF, - 0xA27F, 0xA27F, 0xA27F, 0x8A1F, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF7F, - 0xA1F7, 0x91FA, 0x81FF, 0x95F9, 0x81FF, 0x81FF, 0x8A1F, 0x81FF, - 0x81FF, 0xD75F, 0xBEFF, 0x81FF, 0x81FF, 0xFFFF, 0xBEFF, 0x81FF, - 0xB9CE, 0xB9CE, 0x8DFC, 0x81FF, 0xA9D2, 0xA9D2, 0x81FF, 0x9A5F, - 0x99D6, 0x99D6, 0x81FF, 0xBEFF, 0x99D6, 0x99D6, 0x81FF, 0xBEFF, - 0x85FD, 0x95F9, 0xB5CF, 0xB1F1, 0x81FF, 0x81FF, 0x95F9, 0x81FF, - 0xEFBF, 0x81FF, 0x85FD, 0x81FF, 0xFFFF, 0x81FF, 0x81FF, 0x81FF, - 0xA5F5, 0xA5F5, 0xB5F2, 0xB214, 0x81FF, 0x81FF, 0x81FF, 0x81FF, - 0xB2BF, 0xB2BF, 0x81FF, 0x9A5F, 0xDF7F, 0xDF7F, 0x81FF, 0xE79F, - 0xA218, 0xA218, 0xA218, 0xA639, 0x81FF, 0x81FF, 0x81FF, 0x81FF, - 0xBEFF, 0xBEFF, 0xBEFF, 0xBEFF, 0xF7DF, 0xDF7F, 0xDF7F, 0xDF7F, - 0xA639, 0xB657, 0xCA75, 0xD294, 0x81FF, 0x81FF, 0x861E, 0xCA95, - 0xBEFF, 0xAA9F, 0x81FF, 0xB658, 0xD75F, 0x8A1F, 0x81FF, 0xCA75, - 0x81FF, 0xA27F, 0xFFFF, 0xA27F, 0x81FF, 0xA27F, 0xFFFF, 0xFFFF, - 0x81FF, 0xA27F, 0xFFFF, 0xBADF, 0x81FF, 0xA27F, 0xFFFF, 0xA27F, - 0x81FF, 0x81FF, 0xCF3F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBADF, - 0xA27F, 0xA27F, 0xA27F, 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x81FF, - 0x923F, 0xFFFF, 0xBEFF, 0x81FF, 0x81FF, 0xFFFF, 0xBEFF, 0x81FF, - 0x81FF, 0xFFFF, 0xCF3F, 0xA27F, 0x81FF, 0xFFFF, 0xFFFF, 0xFFFF, - 0x99D6, 0x99D6, 0x81FF, 0xBEFF, 0x81FF, 0x81FF, 0x81FF, 0xBEFF, - 0xA27F, 0xA27F, 0x9A5F, 0xBADF, 0xFFFF, 0xFFFF, 0xA27F, 0x81FF, - 0xFFFF, 0x81FF, 0x81FF, 0x81FF, 0xFFFF, 0x81FF, 0x81FF, 0x81FF, - 0xFFFF, 0xBEFF, 0xBEFF, 0xBEFF, 0xC71F, 0xDF7F, 0xDF7F, 0xDF7F, - 0xDF7F, 0xDF7F, 0x923F, 0xF7DF, 0xDF7F, 0xDF7F, 0x81FF, 0xAA9F, - 0xEFBF, 0xC71F, 0x81FF, 0x9A5F, 0xCF3F, 0x81FF, 0x8A1F, 0xD75F, - 0xE79F, 0xBEFF, 0xBEFF, 0xBEFF, 0xDF7F, 0xDF7F, 0xDF7F, 0xDF7F, - 0xBEFF, 0xBEFF, 0xBEFF, 0xC71F, 0xDF7F, 0xDF7F, 0xDF7F, 0xDF7F, - 0xBEFF, 0x81FF, 0x81FF, 0xB657, 0xFFFF, 0xC71F, 0x81FF, 0xA23A, - 0xFFFF, 0xC71F, 0x81FF, 0xA23A, 0xD75F, 0x8A1F, 0x81FF, 0xB658, - 0x81FF, 0x9A5F, 0xAA9F, 0x81FF, 0x921D, 0x81FF, 0x81FF, 0x85FE, - 0xD294, 0xBE55, 0xB657, 0xC653, 0xD294, 0xD294, 0xCE73, 0xCA52, - 0x8A1D, 0xB214, 0xB214, 0x8DFC, 0xBA34, 0xC631, 0xC210, 0xB612, - 0xC631, 0xC631, 0xC631, 0xC210, 0xCA52, 0xCA52, 0xC631, 0xC631, - 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x8DFC, 0x81FF, 0x81FF, 0x81FF, - 0xC210, 0xBE10, 0xBDEF, 0xBDEF, 0xC210, 0xC210, 0xC210, 0xBE10, - 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x8DFB, 0xA5D4, - 0xBDEF, 0xB9CE, 0xB9CE, 0xB9CE, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, - 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x99F8, 0x8DFB, 0x8DFB, 0x8DFB, - 0xB9CE, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBE10, 0xC210, - 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x95F9, 0xA5F5, 0xA1F7, 0x91FA, - 0xBDEF, 0xBE10, 0xC210, 0xC210, 0xC210, 0xC210, 0xC631, 0xC631, - 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x921C, 0x921C, 0x921C, 0x921C, - 0xC631, 0xC631, 0xCA52, 0xCA52, 0xC631, 0xCA52, 0xCA52, 0xCE73, - 0x81FF, 0x81FF, 0x9A3B, 0xD294, 0x961B, 0xAA39, 0xD294, 0xD294, - 0xCE73, 0xCE73, 0xD294, 0xD6B5, 0xCE73, 0xD294, 0xD6B5, 0xD6B5, -}; +/*********************************************************** + * Genesis Plus Save Icon + * Made by Brakken (http://www.tehskeen.com) + * + ************************************************************/ +unsigned short icon[1024] = { + + 0xFFFF, 0xFFFF, 0xFBDE, 0xFBDE, 0xFBDE, 0xFBDE, 0xFBDE, 0xEB5A, + 0xFBDE, 0xFBDE, 0xFBDE, 0xBDCD, 0xFBDE, 0xF7BD, 0xF7BD, 0xAD49, + 0xEB59, 0xB9AD, 0xC1EF, 0xC1EF, 0x9062, 0x8000, 0x8C41, 0x8C41, + 0x8000, 0x9CE6, 0xA0E6, 0xA507, 0x8400, 0x9CC5, 0xA0E6, 0xA0E6, + 0xC1EF, 0xC1EF, 0xC1EF, 0xC1EF, 0x8000, 0x8000, 0x8000, 0x8000, + 0x9083, 0x8C63, 0x8C63, 0x9484, 0x8C63, 0x9083, 0x9484, 0x94A4, + 0xC1EF, 0xC20F, 0xC20F, 0xBDCE, 0x8000, 0x8000, 0x8000, 0x8000, + 0x9083, 0x8821, 0x8842, 0x8842, 0x8842, 0xA107, 0xB58C, 0xAD6B, + 0xA529, 0x94A4, 0x9083, 0x94A4, 0x8000, 0x8000, 0x8400, 0x8400, + 0x8842, 0x8842, 0x8842, 0x8821, 0xB18B, 0xA949, 0xA108, 0xA107, + 0xA528, 0xB9AD, 0xC630, 0xCE51, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8821, 0x8821, 0x8821, 0x8400, 0xA108, 0xA529, 0xA108, 0xA529, + 0xCA30, 0xC630, 0xCA30, 0xFBDE, 0x8000, 0x8000, 0x8000, 0xAD27, + 0x8400, 0x9083, 0x8863, 0x8400, 0x9CE6, 0x8842, 0x8C63, 0x8C20, + 0xFBDE, 0xFBDE, 0xFFFF, 0xFFFF, 0xFBDE, 0xFBDE, 0xFBDE, 0xFBDE, + 0xDA92, 0xFBDE, 0xFBDE, 0xFBDE, 0xC1AB, 0xF7BD, 0xFBDE, 0xFBDE, + 0xF7BD, 0xF7BD, 0xF7BD, 0xA0E6, 0xF7BD, 0xF7BD, 0xF39C, 0x9484, + 0xF39C, 0xF39C, 0xDEF7, 0x8C41, 0xF39C, 0xEF7B, 0xD272, 0x8400, + 0x8C42, 0x9CE6, 0xA507, 0xA0E6, 0x8C63, 0x9CC5, 0xA107, 0x9CE6, + 0x9484, 0x98A5, 0x9CE6, 0x98C5, 0x9CC5, 0x98C5, 0xA0E7, 0x98C5, + 0x8C42, 0x9083, 0x94A5, 0x9083, 0x8C42, 0x9083, 0x9084, 0x8C62, + 0x8C62, 0x9083, 0x9084, 0x8C62, 0x8C63, 0x9083, 0x94A4, 0x8C63, + 0x8842, 0x9CC6, 0xA107, 0xA0E7, 0x8842, 0x8842, 0xA108, 0xA54A, + 0x8842, 0x8C63, 0xB5AD, 0xB5AD, 0x8C63, 0x8C62, 0x8842, 0x8C63, + 0x98C5, 0xA528, 0xB5AC, 0xB5AC, 0xA52A, 0xBDEF, 0xC631, 0xCA52, + 0xB9CE, 0xB9CE, 0xA94A, 0xAD6B, 0x8C63, 0x8821, 0x8821, 0x8821, + 0xA529, 0x98C5, 0x98C5, 0xA0E6, 0xC210, 0xA529, 0xA529, 0xA529, + 0xB5AD, 0xB5CD, 0xB5AD, 0xBDEF, 0x8400, 0x8821, 0x8C62, 0x8821, + 0xA0E7, 0x8842, 0x8842, 0x8C41, 0x9083, 0x8842, 0x8842, 0x8842, + 0x94A5, 0x8842, 0x8C62, 0x8C62, 0x8C42, 0x9083, 0x8C62, 0x8C62, + 0xB548, 0xF7BD, 0xF7BD, 0xF7BD, 0xA4C4, 0xF7BD, 0xF7BD, 0xF7BD, + 0x9461, 0xDED5, 0xF39C, 0xF39C, 0x8C20, 0xD271, 0xF39C, 0xF39C, + 0xEF7B, 0xEF7B, 0xC610, 0x8400, 0xEF7B, 0xEB5A, 0xB9AC, 0x8000, + 0xEB5A, 0xEB5A, 0xA528, 0x9CC5, 0xE739, 0xE739, 0x9CC6, 0x98A5, + 0x98C5, 0x98C5, 0xA0E6, 0x94A4, 0x94A4, 0x98C5, 0x94A5, 0x9484, + 0xA528, 0x98C5, 0x9CE6, 0xA0E7, 0x9CE6, 0xA4E6, 0x98A4, 0xA507, + 0x8C62, 0x9083, 0x9484, 0x9083, 0x94A4, 0x94A5, 0x98C5, 0x98C5, + 0xA107, 0xA107, 0xA107, 0xB18B, 0xA907, 0x9062, 0x9484, 0x9CE6, + 0x8842, 0x94A4, 0x9484, 0x9084, 0x8C62, 0x8C63, 0x9CC5, 0x9CC5, + 0x98C6, 0x8C63, 0x9484, 0xA0E6, 0x9CE6, 0x9084, 0x94A4, 0x90A5, + 0x8C63, 0x8C42, 0x8C62, 0x8C62, 0x8C63, 0xA108, 0xA94A, 0xA528, + 0x94A5, 0x8884, 0x8884, 0x8884, 0xB0A5, 0xBC84, 0xA483, 0xA484, + 0x8C63, 0x8C42, 0x8C63, 0x9083, 0xA94A, 0x9083, 0x8C62, 0x94A4, + 0x8884, 0x8063, 0x90A5, 0x94A4, 0xA483, 0xBC63, 0xA884, 0x8884, + 0x9083, 0x8C63, 0x8C42, 0x8C63, 0x9084, 0x8842, 0x9083, 0x9084, + 0x8C42, 0x8C62, 0x98C6, 0xAD6A, 0x9083, 0x8C63, 0x98C5, 0xA107, + 0x8400, 0xC1ED, 0xEF7B, 0xEF7B, 0x8400, 0xAD27, 0xEF7B, 0xEF7B, + 0x9CE6, 0x9CA4, 0xEB5A, 0xEB5A, 0x9CE6, 0x9062, 0xDAB4, 0xE739, + 0xE739, 0xE318, 0x9483, 0x8C63, 0xE318, 0xCE72, 0x9062, 0x9CC5, + 0xDEF7, 0xC20F, 0x8C41, 0x9CE6, 0xDAD6, 0xB9AC, 0x8C20, 0x9CC5, + 0xA0E6, 0xA528, 0x9CC5, 0xA528, 0xA508, 0x94A5, 0x98C6, 0xA108, + 0x9CE6, 0x9CC5, 0xA0E7, 0xA94A, 0xA0E6, 0xA0E7, 0xA507, 0xAD6B, + 0xA107, 0x98C6, 0x9CE6, 0x9083, 0x98C6, 0xA108, 0xA107, 0x98C5, + 0xB9CD, 0xB18B, 0xA107, 0x9CC6, 0xC210, 0xB9CE, 0xA528, 0x9CC6, + 0x98C5, 0x94A5, 0x9084, 0x8884, 0x9CC6, 0x9CE6, 0x9CC6, 0x94A5, + 0x9CE6, 0x9CE6, 0x9CE7, 0xA108, 0x98C5, 0x98C5, 0x98C6, 0x98C6, + 0xB0C6, 0xD0C6, 0xD0C6, 0xD0C6, 0x90A4, 0x90A4, 0x98A5, 0x9CA4, + 0x9CE6, 0x90A4, 0x9084, 0x9084, 0x98C6, 0x98C6, 0x98C6, 0x98C6, + 0xD0A5, 0xD0A5, 0xA484, 0x8483, 0x9484, 0x9083, 0x8C83, 0x9084, + 0x90A5, 0x94A5, 0x9CE6, 0x9CE6, 0x98C6, 0x98C6, 0x9CE6, 0x98C6, + 0x8C63, 0x9084, 0x9484, 0x9083, 0x98C5, 0x98C5, 0x94A4, 0x94A5, + 0x98C6, 0x98C6, 0x98C5, 0x98C5, 0x98C6, 0x98C6, 0x98C6, 0x98C6, + 0x9084, 0x8821, 0xCE51, 0xE739, 0x94A5, 0x8C20, 0xBDCE, 0xE318, + 0x98C5, 0x8821, 0xB18B, 0xE318, 0x98C6, 0x8842, 0xAD49, 0xDEF7, + 0xDAD6, 0xAD49, 0x8C41, 0xA508, 0xD6B5, 0xBDCC, 0x8C20, 0x8C41, + 0xD6B5, 0xD294, 0xB98A, 0xAD06, 0xD294, 0xCE73, 0xCE73, 0xCA52, + 0xA94A, 0xB5AD, 0xB18C, 0xAD6B, 0x9062, 0x9062, 0x9062, 0x9062, + 0xAD27, 0xAD06, 0xAD06, 0xAD06, 0xCA52, 0xC631, 0xC631, 0xC210, + 0xA94B, 0xB18C, 0xB58D, 0xAD6B, 0x9062, 0x9484, 0x98A4, 0x98A4, + 0xA906, 0xA906, 0xA506, 0xA907, 0xC210, 0xC210, 0xB9F0, 0xBDEF, + 0xA94B, 0xA94B, 0xA94B, 0xA94B, 0x98A5, 0x98A5, 0x98A4, 0x98A4, + 0xA907, 0xA907, 0xA907, 0xA506, 0xBDEF, 0xBDEF, 0xBDEF, 0xB1F2, + 0xA94B, 0xA94A, 0xA54A, 0xA529, 0x9484, 0x9484, 0x9483, 0x9483, + 0xA4E6, 0xA4E6, 0xA4E6, 0xA4E6, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, + 0xA529, 0xA529, 0xA529, 0xA108, 0x9062, 0x8C63, 0x9062, 0x9062, + 0xA4E6, 0x9CE6, 0xA0E6, 0xA506, 0xBDEF, 0xC210, 0xC210, 0xC210, + 0xA108, 0x9CE7, 0x9CE7, 0x98C6, 0x8C41, 0x8C42, 0x8C41, 0x8C41, + 0xA507, 0xA508, 0xAD27, 0xB127, 0xC631, 0xC631, 0xCA52, 0xCA52, + 0x98C6, 0x8C63, 0xA0E6, 0xDAD6, 0x8C41, 0x8400, 0xB548, 0xDAD6, + 0xB127, 0xB548, 0xD6B5, 0xD6B5, 0xCE73, 0xCE73, 0xD294, 0xD6B5, + 0xD294, 0xCA74, 0xBA56, 0xB635, 0x9A3B, 0x81FF, 0x81FF, 0x81FF, + 0x81FF, 0x8A1F, 0xA27F, 0xA27F, 0x81FF, 0xA27F, 0xFFFF, 0xFFFF, + 0xB635, 0xB214, 0xB214, 0xBE11, 0x81FF, 0x81FF, 0x81FF, 0x81FF, + 0xA27F, 0xA27F, 0xA27F, 0x8A1F, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF7F, + 0xA1F7, 0x91FA, 0x81FF, 0x95F9, 0x81FF, 0x81FF, 0x8A1F, 0x81FF, + 0x81FF, 0xD75F, 0xBEFF, 0x81FF, 0x81FF, 0xFFFF, 0xBEFF, 0x81FF, + 0xB9CE, 0xB9CE, 0x8DFC, 0x81FF, 0xA9D2, 0xA9D2, 0x81FF, 0x9A5F, + 0x99D6, 0x99D6, 0x81FF, 0xBEFF, 0x99D6, 0x99D6, 0x81FF, 0xBEFF, + 0x85FD, 0x95F9, 0xB5CF, 0xB1F1, 0x81FF, 0x81FF, 0x95F9, 0x81FF, + 0xEFBF, 0x81FF, 0x85FD, 0x81FF, 0xFFFF, 0x81FF, 0x81FF, 0x81FF, + 0xA5F5, 0xA5F5, 0xB5F2, 0xB214, 0x81FF, 0x81FF, 0x81FF, 0x81FF, + 0xB2BF, 0xB2BF, 0x81FF, 0x9A5F, 0xDF7F, 0xDF7F, 0x81FF, 0xE79F, + 0xA218, 0xA218, 0xA218, 0xA639, 0x81FF, 0x81FF, 0x81FF, 0x81FF, + 0xBEFF, 0xBEFF, 0xBEFF, 0xBEFF, 0xF7DF, 0xDF7F, 0xDF7F, 0xDF7F, + 0xA639, 0xB657, 0xCA75, 0xD294, 0x81FF, 0x81FF, 0x861E, 0xCA95, + 0xBEFF, 0xAA9F, 0x81FF, 0xB658, 0xD75F, 0x8A1F, 0x81FF, 0xCA75, + 0x81FF, 0xA27F, 0xFFFF, 0xA27F, 0x81FF, 0xA27F, 0xFFFF, 0xFFFF, + 0x81FF, 0xA27F, 0xFFFF, 0xBADF, 0x81FF, 0xA27F, 0xFFFF, 0xA27F, + 0x81FF, 0x81FF, 0xCF3F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBADF, + 0xA27F, 0xA27F, 0xA27F, 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x81FF, + 0x923F, 0xFFFF, 0xBEFF, 0x81FF, 0x81FF, 0xFFFF, 0xBEFF, 0x81FF, + 0x81FF, 0xFFFF, 0xCF3F, 0xA27F, 0x81FF, 0xFFFF, 0xFFFF, 0xFFFF, + 0x99D6, 0x99D6, 0x81FF, 0xBEFF, 0x81FF, 0x81FF, 0x81FF, 0xBEFF, + 0xA27F, 0xA27F, 0x9A5F, 0xBADF, 0xFFFF, 0xFFFF, 0xA27F, 0x81FF, + 0xFFFF, 0x81FF, 0x81FF, 0x81FF, 0xFFFF, 0x81FF, 0x81FF, 0x81FF, + 0xFFFF, 0xBEFF, 0xBEFF, 0xBEFF, 0xC71F, 0xDF7F, 0xDF7F, 0xDF7F, + 0xDF7F, 0xDF7F, 0x923F, 0xF7DF, 0xDF7F, 0xDF7F, 0x81FF, 0xAA9F, + 0xEFBF, 0xC71F, 0x81FF, 0x9A5F, 0xCF3F, 0x81FF, 0x8A1F, 0xD75F, + 0xE79F, 0xBEFF, 0xBEFF, 0xBEFF, 0xDF7F, 0xDF7F, 0xDF7F, 0xDF7F, + 0xBEFF, 0xBEFF, 0xBEFF, 0xC71F, 0xDF7F, 0xDF7F, 0xDF7F, 0xDF7F, + 0xBEFF, 0x81FF, 0x81FF, 0xB657, 0xFFFF, 0xC71F, 0x81FF, 0xA23A, + 0xFFFF, 0xC71F, 0x81FF, 0xA23A, 0xD75F, 0x8A1F, 0x81FF, 0xB658, + 0x81FF, 0x9A5F, 0xAA9F, 0x81FF, 0x921D, 0x81FF, 0x81FF, 0x85FE, + 0xD294, 0xBE55, 0xB657, 0xC653, 0xD294, 0xD294, 0xCE73, 0xCA52, + 0x8A1D, 0xB214, 0xB214, 0x8DFC, 0xBA34, 0xC631, 0xC210, 0xB612, + 0xC631, 0xC631, 0xC631, 0xC210, 0xCA52, 0xCA52, 0xC631, 0xC631, + 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x8DFC, 0x81FF, 0x81FF, 0x81FF, + 0xC210, 0xBE10, 0xBDEF, 0xBDEF, 0xC210, 0xC210, 0xC210, 0xBE10, + 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x8DFB, 0xA5D4, + 0xBDEF, 0xB9CE, 0xB9CE, 0xB9CE, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, + 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x99F8, 0x8DFB, 0x8DFB, 0x8DFB, + 0xB9CE, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBE10, 0xC210, + 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x95F9, 0xA5F5, 0xA1F7, 0x91FA, + 0xBDEF, 0xBE10, 0xC210, 0xC210, 0xC210, 0xC210, 0xC631, 0xC631, + 0x81FF, 0x81FF, 0x81FF, 0x81FF, 0x921C, 0x921C, 0x921C, 0x921C, + 0xC631, 0xC631, 0xCA52, 0xCA52, 0xC631, 0xCA52, 0xCA52, 0xCE73, + 0x81FF, 0x81FF, 0x9A3B, 0xD294, 0x961B, 0xAA39, 0xD294, 0xD294, + 0xCE73, 0xCE73, 0xD294, 0xD6B5, 0xCE73, 0xD294, 0xD6B5, 0xD6B5, +}; diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_audio.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_audio.c new file mode 100644 index 0000000000..e931759f0d --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_audio.c @@ -0,0 +1,227 @@ +/**************************************************************************** + * gx_audio.c + * + * Genesis Plus GX audio support + * + * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +/* Length is dimensionned for at least one frame of emulation */ +#define SOUND_BUFFER_LEN 4096 + +/* Number of sound buffers */ +#define SOUND_BUFFER_NUM 3 + +/* audio DMA status */ +u32 audioStarted; + +/* DMA soundbuffers (required to be 32-bytes aligned) */ +static u8 soundbuffer[SOUND_BUFFER_NUM][SOUND_BUFFER_LEN] ATTRIBUTE_ALIGN(32); + +/* Current work soundbuffer */ +static u8 mixbuffer; + +/* Background music */ +static u8 *Bg_music_ogg = NULL; +static u32 Bg_music_ogg_size = 0; + +/* Frame Sync */ +static u8 audio_sync; + +/***************************************************************************************/ +/* Audio engine */ +/***************************************************************************************/ + +/* Audio DMA callback */ +static void ai_callback(void) +{ +#ifdef LOG_TIMING + u64 current = gettime(); + if (prevtime) + { + delta_time[frame_cnt] = diff_nsec(prevtime, current); + frame_cnt = (frame_cnt + 1) % LOGSIZE; + } + prevtime = current; +#endif + + audio_sync = 0; +} + +/* AUDIO engine initialization */ +void gx_audio_Init(void) +{ + /* Initialize AUDIO processing library (ASNDLIB) */ + /* AUDIO & DSP hardware are initialized */ + /* Default samplerate is set to 48kHz */ + ASND_Init(); + + /* Load background music from FAT device */ + char fname[MAXPATHLEN]; + sprintf(fname,"%s/Bg_music.ogg",DEFAULT_PATH); + FILE *f = fopen(fname,"rb"); + if (f) + { + struct stat filestat; + stat(fname, &filestat); + Bg_music_ogg_size = filestat.st_size; + Bg_music_ogg = memalign(32,Bg_music_ogg_size); + if (Bg_music_ogg) + { + fread(Bg_music_ogg,1,Bg_music_ogg_size,f); + } + fclose(f); + } +} + +/* AUDIO engine shutdown */ +void gx_audio_Shutdown(void) +{ + PauseOgg(1); + StopOgg(); + ASND_Pause(1); + ASND_End(); + if (Bg_music_ogg) + { + free(Bg_music_ogg); + } +} + +/*** + gx_audio_Update + + This function retrieves samples for the frame then set the next DMA parameters + Parameters will be taken in account only when current DMA operation is over + ***/ +int gx_audio_Update(void) +{ + if (!audio_sync) + { + /* Current available soundbuffer */ + s16 *sb = (s16 *)(soundbuffer[mixbuffer]); + + /* Retrieve audio samples (size must be multiple of 32 bytes) */ + int size = audio_update(sb) * 4; + + #ifdef LOG_TIMING + if (prevtime && (frame_cnt < LOGSIZE - 1)) + { + delta_samp[frame_cnt + 1] = size; + } + else + { + delta_samp[0] = size; + } + #endif + + /* Update DMA settings */ + DCFlushRange((void *)sb, size); + AUDIO_InitDMA((u32) sb, size); + mixbuffer = (mixbuffer + 1) % SOUND_BUFFER_NUM; + audio_sync = 1; + + /* Start Audio DMA */ + /* this is called once to kick-off DMA from external memory to audio interface */ + /* DMA operation is automatically restarted when all samples have been sent. */ + /* If DMA settings are not updated at that time, previous sound buffer will be used. */ + /* Therefore we need to make sure frame emulation is completed before current DMA is */ + /* completed, by synchronizing frame emulation with DMA start and also by syncing it */ + /* with Video Interrupt and outputing a suitable number of samples per frame. */ + if (!audioStarted) + { + /* restart audio DMA */ + AUDIO_StopDMA(); + AUDIO_StartDMA(); + audioStarted = 1; + } + + return SYNC_AUDIO; + } + + return NO_SYNC; +} + +/*** + gx_audio_Start + + This function restart the audio engine + This is called when coming back from Main Menu + ***/ +void gx_audio_Start(void) +{ + /* shutdown background music */ + PauseOgg(1); + StopOgg(); + + /* shutdown menu audio processing */ + ASND_Pause(1); + ASND_End(); + AUDIO_StopDMA(); + AUDIO_RegisterDMACallback(NULL); + DSP_Halt(); + + /* DMA Interrupt callback */ + AUDIO_RegisterDMACallback(ai_callback); + + /* reset emulation audio processing */ + memset(soundbuffer, 0, 3 * SOUND_BUFFER_LEN); + audioStarted = 0; + mixbuffer = 0; + audio_sync = 0; +} + +/*** + gx_audio_Stop + + This function stops current Audio DMA process + This is called when going back to Main Menu + DMA need to be restarted when going back to the game (see above) + ***/ +void gx_audio_Stop(void) +{ + /* restart menu audio processing */ + DSP_Unhalt(); + ASND_Init(); + ASND_Pause(0); + + /* play background music */ + if (Bg_music_ogg && !Shutdown) + { + PauseOgg(0); + PlayOgg((char *)Bg_music_ogg, Bg_music_ogg_size, 0, OGG_INFINITE_TIME); + SetVolumeOgg(((int)config.bgm_volume * 255) / 100); + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_audio.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_audio.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_audio.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_audio.h index 084f4e4d8a..120d2acb86 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_audio.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_audio.h @@ -1,51 +1,51 @@ -/**************************************************************************** - * gx_audio.c - * - * Genesis Plus GX audio support - * - * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _GC_AUDIO_H_ -#define _GC_AUDIO_H_ - -extern u32 audioStarted; - -extern void gx_audio_Init(void); -extern void gx_audio_Shutdown(void); -extern void gx_audio_Start(void); -extern void gx_audio_Stop(void); -extern int gx_audio_Update(void); - -#endif +/**************************************************************************** + * gx_audio.c + * + * Genesis Plus GX audio support + * + * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _GC_AUDIO_H_ +#define _GC_AUDIO_H_ + +extern u32 audioStarted; + +extern void gx_audio_Init(void); +extern void gx_audio_Shutdown(void); +extern void gx_audio_Start(void); +extern void gx_audio_Stop(void); +extern int gx_audio_Update(void); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_input.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_input.c new file mode 100644 index 0000000000..754589e500 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_input.c @@ -0,0 +1,1625 @@ +/**************************************************************************** + * gx_input.c + * + * Genesis Plus GX input support + * + * Copyright Eke-Eke (2007-2012) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "font.h" +#include "gui.h" +#include "cheats.h" + +#ifdef HW_RVL +#include +#endif + +/* Analog sticks sensitivity */ +#define ANALOG_SENSITIVITY 30 + +/* Delay before held keys triggering */ +/* higher is the value, less responsive is the key update */ +#define HELD_DELAY 30 + +/* Direction & selection update speed when a key is being held */ +/* lower is the value, faster is the key update */ +#define HELD_SPEED 4 + + +/* Configurable keys */ +#define KEY_BUTTONA 0 +#define KEY_BUTTONB 1 +#define KEY_BUTTONC 2 +#define KEY_START 3 +#define KEY_BUTTONX 4 +#define KEY_BUTTONY 5 +#define KEY_BUTTONZ 6 +#define KEY_MODE 7 +#define KEY_MENU 8 + +#ifdef HW_RVL + +#define PAD_UP 0 +#define PAD_DOWN 1 +#define PAD_LEFT 2 +#define PAD_RIGHT 3 + +/* default directions mapping */ +static u32 wpad_dirmap[3][4] = +{ + {WPAD_BUTTON_RIGHT, WPAD_BUTTON_LEFT, WPAD_BUTTON_UP, WPAD_BUTTON_DOWN}, /* WIIMOTE */ + {WPAD_BUTTON_UP, WPAD_BUTTON_DOWN, WPAD_BUTTON_LEFT, WPAD_BUTTON_RIGHT}, /* WIIMOTE + NUNCHUK */ + {WPAD_CLASSIC_BUTTON_UP, WPAD_CLASSIC_BUTTON_DOWN, WPAD_CLASSIC_BUTTON_LEFT, WPAD_CLASSIC_BUTTON_RIGHT} /* CLASSIC */ +}; + +#define WPAD_BUTTONS_HELD (WPAD_BUTTON_UP | WPAD_BUTTON_DOWN | WPAD_BUTTON_LEFT | WPAD_BUTTON_RIGHT | \ + WPAD_BUTTON_MINUS | WPAD_BUTTON_PLUS | WPAD_BUTTON_A | WPAD_BUTTON_2 | \ + WPAD_CLASSIC_BUTTON_UP | WPAD_CLASSIC_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_RIGHT | \ + WPAD_CLASSIC_BUTTON_FULL_L | WPAD_CLASSIC_BUTTON_FULL_R | WPAD_CLASSIC_BUTTON_A) + +#endif + +#define PAD_BUTTONS_HELD (PAD_BUTTON_UP | PAD_BUTTON_DOWN | PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | \ + PAD_TRIGGER_L | PAD_TRIGGER_R | PAD_BUTTON_A) + +static char keyname[MAX_KEYS][16]; + +static int held_cnt = 0; +static int inputs_disabled = 0; + +/***************************************************************************************/ +/* Gamecube PAD support */ +/***************************************************************************************/ +static void pad_config(int chan, int first_key, int last_key) +{ + u16 p = 0; + char msg[64]; + + /* disable background PAD scanning */ + inputs_disabled = 1; + + /* Check if PAD is connected */ + VIDEO_WaitVSync(); + if (!(PAD_ScanPads() & (1< ANALOG_SENSITIVITY) + { + ConfigRequested = 1; + return; + } + + /* D-PAD */ + if ((p & PAD_BUTTON_UP) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; + else if ((p & PAD_BUTTON_DOWN) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; + if ((p & PAD_BUTTON_LEFT) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; + else if ((p & PAD_BUTTON_RIGHT) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; + + /* Buttons */ + if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; + if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; + if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; + if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_XE_A1P: + { + /* Left Stick analog position [0-255] */ + input.analog[i][0] = (x + 128); + input.analog[i][1] = y ? (127 - y) : (128 - y); + + /* Right Stick analog position [0-255] */ + x = PAD_SubStickX(chan); + y = PAD_SubStickY(chan); + + /* Emulated stick is unidirectional but can be rotated */ + if (abs(x) > abs(y)) + { + input.analog[i+1][0] = (x + 128); + } + else + { + input.analog[i+1][0] = (y + 128); + } + + /* Buttons */ + if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_XE_A; + if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_XE_B; + if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_XE_C; + if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_XE_START; + if (p & pad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_XE_D; + if (p & pad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_XE_E1; + if (p & pad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_XE_E2; + if (p & pad_keymap[KEY_MODE]) input.pad[i] |= INPUT_XE_SELECT; + + break; + } + + case DEVICE_SPORTSPAD: + { + /* Y analog position [0-255] */ + input.analog[i][1] = y ? (127 - y) : (128 - y); + + /* default inputs are checked below */ + } + + case DEVICE_PADDLE: + { + /* Default menu key (right analog stick) */ + if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) + { + ConfigRequested = 1; + return; + } + + /* X analog position [0-255] */ + input.analog[i][0] = (x + 128); + + /* Buttons */ + if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; + if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; + if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_PAD2B: + { + /* Default menu key (right analog stick) */ + if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) + { + ConfigRequested = 1; + return; + } + + /* D-PAD */ + if ((p & PAD_BUTTON_UP) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; + else if ((p & PAD_BUTTON_DOWN) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; + if ((p & PAD_BUTTON_LEFT) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; + else if ((p & PAD_BUTTON_RIGHT) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; + + /* Buttons */ + if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; + if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; + if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_LIGHTGUN: + { + /* Default menu key (right analog stick) */ + if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) + { + ConfigRequested = 1; + return; + } + + /* Gun screen position (x,y) */ + input.analog[i][0] += x / ANALOG_SENSITIVITY; + input.analog[i][1] -= y / ANALOG_SENSITIVITY; + + /* Limits */ + if (input.analog[i][0] < 0) input.analog[i][0] = 0; + else if (input.analog[i][0] > bitmap.viewport.w) input.analog[i][0] = bitmap.viewport.w; + if (input.analog[i][1] < 0) input.analog[i][1] = 0; + else if (input.analog[i][1] > bitmap.viewport.h) input.analog[i][1] = bitmap.viewport.h; + + /* Buttons */ + if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; + if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; + if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; + if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_MOUSE: + { + /* Default menu key (right analog stick) */ + if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) + { + ConfigRequested = 1; + return; + } + + /* Mouse relative movement (-255,255) */ + input.analog[i][0] = (x / ANALOG_SENSITIVITY) * 2; + input.analog[i][1] = (y / ANALOG_SENSITIVITY) * 2; + + /* Y-Axis inversion */ + if (config.invert_mouse) + { + input.analog[i][1] = -input.analog[i][1]; + } + + /* Buttons */ + if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_MOUSE_CENTER; + if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_MOUSE_LEFT; + if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_MOUSE_RIGHT; + if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_PICO: + { + /* Default menu key (right analog stick) */ + if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) + { + ConfigRequested = 1; + return; + } + + /* D-PAD */ + if (p & PAD_BUTTON_UP) input.pad[0] |= INPUT_UP; + else if (p & PAD_BUTTON_DOWN) input.pad[0] |= INPUT_DOWN; + if (p & PAD_BUTTON_LEFT) input.pad[0] |= INPUT_LEFT; + else if (p & PAD_BUTTON_RIGHT) input.pad[0] |= INPUT_RIGHT; + + /* PEN screen position (x,y) */ + input.analog[0][0] += x / ANALOG_SENSITIVITY; + input.analog[0][1] -= y / ANALOG_SENSITIVITY; + + /* Limits */ + if (input.analog[0][0] < 0x17c) input.analog[0][0] = 0x17c; + else if (input.analog[0][0] > 0x3c) input.analog[0][0] = 0x3c; + if (input.analog[0][1] < 0x1fc) input.analog[0][1] = 0x1fc; + else if (input.analog[0][1] > 0x3f3) input.analog[0][1] = 0x3f3; + + /* PEN button */ + if (p & pad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_PICO_RED; + + /* RED button */ + if (p & pad_keymap[KEY_BUTTONB]) input.pad[0] |= INPUT_PICO_PEN; + + /* PAGE index increment */ + if (p & pad_keymap[KEY_BUTTONC]) pico_current = (pico_current + 1) & 7; + + break; + } + + case DEVICE_TEREBI: + { + /* Default menu key (right analog stick) */ + if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) + { + ConfigRequested = 1; + return; + } + + /* PEN screen position (x,y) */ + input.analog[0][0] += x / ANALOG_SENSITIVITY; + input.analog[0][1] -= y / ANALOG_SENSITIVITY; + + /* Limits */ + if (input.analog[0][0] < 0) input.analog[0][0] = 0; + else if (input.analog[0][0] > 250) input.analog[0][0] = 250; + if (input.analog[0][1] < 0) input.analog[0][1] = 0; + else if (input.analog[0][1] > 250) input.analog[0][1] = 250; + + /* PEN button */ + if (p & pad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_BUTTON1; + + break; + } + + case DEVICE_ACTIVATOR: + { + /* Left & right analog stick angle [0-360] */ + float ang; + + /* Left stick values */ + if ((abs(x) > ANALOG_SENSITIVITY) || (abs(y) > ANALOG_SENSITIVITY)) + { + /* Calculate angle (in degree) */ + ang = 90.0 - (atan((float)y / (float)x) * 180.0 / M_PI); + if (x < 0) ang += 180.0; + + /* 8 bottom sensors = 8 areas */ + if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2L; + else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3L; + else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4L; + else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5L; + else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6L; + else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7L; + else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8L; + else input.pad[i] |= INPUT_ACTIVATOR_1L; + } + + /* Right stick values */ + x = PAD_SubStickX(chan); + y = PAD_SubStickY(chan); + + if ((abs(x) > ANALOG_SENSITIVITY) || (abs(y) > ANALOG_SENSITIVITY)) + { + /* Calculate angle (in degree) */ + ang = 90.0 - (atan((float)y / (float)x) * 180.0 / M_PI); + if (x < 0) ang += 180.0; + + /* 8 top sensors = 8 areas */ + if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2U; + else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3U; + else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4U; + else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5U; + else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6U; + else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7U; + else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8U; + else input.pad[i] |= INPUT_ACTIVATOR_1U; + } + + break; + } + } +} + +/***************************************************************************************/ +/* Wii WPAD support */ +/***************************************************************************************/ +#ifdef HW_RVL + +static int wpad_StickX(WPADData *data, u8 right) +{ + struct joystick_t* js = NULL; + + switch (data->exp.type) + { + case WPAD_EXP_NUNCHUK: + js = right ? NULL : &data->exp.nunchuk.js; + break; + + case WPAD_EXP_CLASSIC: + js = right ? &data->exp.classic.rjs : &data->exp.classic.ljs; + break; + + default: + break; + } + + if (js) + { + /* raw X value */ + int x = js->pos.x; + + /* value returned is sometime above calibrated limits */ + if (x > js->max.x) return 127; + if (x < js->min.x) return -128; + + /* adjust against center position */ + x -= js->center.x; + + /* return interpolated range [-128;127] */ + if (x > 0) + { + return (int)(127.0 * ((float)x / (float)(js->max.x - js->center.x))); + } + { + return (int)(128.0 * ((float)x / (float)(js->center.x - js->min.x))); + } + } + + return 0; +} + +static int wpad_StickY(WPADData *data, u8 right) +{ + struct joystick_t* js = NULL; + + switch (data->exp.type) + { + case WPAD_EXP_NUNCHUK: + js = right ? NULL : &data->exp.nunchuk.js; + break; + + case WPAD_EXP_CLASSIC: + js = right ? &data->exp.classic.rjs : &data->exp.classic.ljs; + break; + + default: + break; + } + + if (js) + { + /* raw Y value */ + int y = js->pos.y; + + /* value returned is sometime above calibrated limits */ + if (y > js->max.y) return 127; + if (y < js->min.y) return -128; + + /* adjust against center position */ + y -= js->center.y; + + /* return interpolated range [-128;127] */ + if (y > 0) + { + return (int)(127.0 * ((float)y / (float)(js->max.y - js->center.y))); + } + { + return (int)(128.0 * ((float)y / (float)(js->center.y - js->min.y))); + } + } + + return 0; +} + +static void wpad_config(u8 exp, int chan, int first_key, int last_key) +{ + char msg[64]; + u32 p = 255; + + /* Disable background PAD scanning */ + inputs_disabled = 1; + + /* Check if device is connected */ + WPAD_Probe(chan, &p); + if (((exp > WPAD_EXP_NONE) && (p != exp)) || (p == 255)) + { + /* device not detected */ + if (exp == WPAD_EXP_NONE) sprintf(msg, "WIIMOTE #%d is not connected !", chan+1); + if (exp == WPAD_EXP_NUNCHUK) sprintf(msg, "NUNCHUK #%d is not connected !", chan+1); + if (exp == WPAD_EXP_CLASSIC) sprintf(msg, "CLASSIC #%d is not connected !", chan+1); + GUI_WaitPrompt("Error",msg); + + /* re-enable background PAD scanning and exit */ + inputs_disabled = 0; + return; + } + + /* Configure each keys */ + do + { + /* ignore unused keys */ + if (strcmp(keyname[first_key], "N.A")) + { + /* remove any pending buttons */ + while (WPAD_ButtonsHeld(chan)) + { + VIDEO_WaitVSync(); + WPAD_ScanPads(); + } + + /* configurable button */ + sprintf(msg,"Press key for %s\n(HOME to return)",keyname[first_key]); + GUI_MsgBoxUpdate(0,msg); + + /* wait for user input */ + p = 0; + while (!p) + { + VIDEO_WaitVSync(); + WPAD_ScanPads(); + p = WPAD_ButtonsDown(chan); + } + + /* detect pressed key */ + switch (exp) + { + /* Wiimote (TODO: add motion sensing !) */ + case WPAD_EXP_NONE: + { + if (p & WPAD_BUTTON_2) p = WPAD_BUTTON_2; + else if (p & WPAD_BUTTON_1) p = WPAD_BUTTON_1; + else if (p & WPAD_BUTTON_B) p = WPAD_BUTTON_B; + else if (p & WPAD_BUTTON_A) p = WPAD_BUTTON_A; + else if (p & WPAD_BUTTON_PLUS) p = WPAD_BUTTON_PLUS; + else if (p & WPAD_BUTTON_MINUS) p = WPAD_BUTTON_MINUS; + else first_key = MAX_KEYS; + break; + } + + /* Wiimote + Nunchuk (TODO: add motion sensing !) */ + case WPAD_EXP_NUNCHUK: + { + if (p & WPAD_BUTTON_2) p = WPAD_BUTTON_2; + else if (p & WPAD_BUTTON_1) p = WPAD_BUTTON_1; + else if (p & WPAD_BUTTON_B) p = WPAD_BUTTON_B; + else if (p & WPAD_BUTTON_A) p = WPAD_BUTTON_A; + else if (p & WPAD_BUTTON_PLUS) p = WPAD_BUTTON_PLUS; + else if (p & WPAD_BUTTON_MINUS) p= WPAD_BUTTON_MINUS; + else if (p & WPAD_NUNCHUK_BUTTON_Z) p = WPAD_NUNCHUK_BUTTON_Z; + else if (p & WPAD_NUNCHUK_BUTTON_C) p = WPAD_NUNCHUK_BUTTON_C; + else first_key = MAX_KEYS; + break; + } + + /* Classic Controller */ + case WPAD_EXP_CLASSIC: + { + if (p & WPAD_CLASSIC_BUTTON_X) p = WPAD_CLASSIC_BUTTON_X; + else if (p & WPAD_CLASSIC_BUTTON_A) p = WPAD_CLASSIC_BUTTON_A; + else if (p & WPAD_CLASSIC_BUTTON_Y) p = WPAD_CLASSIC_BUTTON_Y; + else if (p & WPAD_CLASSIC_BUTTON_B) p = WPAD_CLASSIC_BUTTON_B; + else if (p & WPAD_CLASSIC_BUTTON_ZL) p = WPAD_CLASSIC_BUTTON_ZL; + else if (p & WPAD_CLASSIC_BUTTON_ZR) p = WPAD_CLASSIC_BUTTON_ZR; + else if (p & WPAD_CLASSIC_BUTTON_PLUS) p = WPAD_CLASSIC_BUTTON_PLUS; + else if (p & WPAD_CLASSIC_BUTTON_MINUS) p = WPAD_CLASSIC_BUTTON_MINUS; + else if (p & WPAD_CLASSIC_BUTTON_FULL_L) p = WPAD_CLASSIC_BUTTON_FULL_L; + else if (p & WPAD_CLASSIC_BUTTON_FULL_R) p = WPAD_CLASSIC_BUTTON_FULL_R; + else first_key = MAX_KEYS; + break; + } + + default: + { + first_key = MAX_KEYS; + break; + } + } + + /* update key mapping */ + if (first_key < MAX_KEYS) + { + config.wpad_keymap[exp + (chan * 3)][first_key] = p; + } + } + } + while (first_key++ < last_key); + + /* remove any pending buttons */ + while (WPAD_ButtonsHeld(chan)) + { + VIDEO_WaitVSync(); + WPAD_ScanPads(); + } + + /* re-enable background PAD scanning and exit */ + inputs_disabled = 0; +} + +static void wpad_update(s8 chan, u8 i, u32 exp) +{ + /* WPAD data */ + WPADData *data = WPAD_Data(chan); + + /* WPAD status */ + u32 p = data->btns_h; + + /* Analog sticks */ + s8 x = 0; + s8 y = 0; + + if (exp != WPAD_EXP_NONE) + { + x = wpad_StickX(data,0); + y = wpad_StickY(data,0); + } + + /* Retrieve current key mapping */ + u32 *wpad_keymap = config.wpad_keymap[exp + (chan * 3)]; + + /* Emulated device */ + switch (input.dev[i]) + { + case DEVICE_PAD6B: + { + /* Extra buttons */ + if (p & wpad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_X; + if (p & wpad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_Y; + if (p & wpad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_Z; + if (p & wpad_keymap[KEY_MODE]) input.pad[i] |= INPUT_MODE; + } + + case DEVICE_PAD3B: + { + /* D- PAD */ + if ((p & wpad_dirmap[exp][PAD_UP]) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; + else if ((p & wpad_dirmap[exp][PAD_DOWN]) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; + if ((p & wpad_dirmap[exp][PAD_LEFT]) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; + else if ((p & wpad_dirmap[exp][PAD_RIGHT]) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; + + /* Buttons */ + if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; + if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; + if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_XE_A1P: + { + /* Left Stick analog position [0-255] */ + input.analog[i][0] = (x + 128); + input.analog[i][1] = y ? (127 - y) : (128 - y); + + /* Right Stick analog position [0-255] */ + if (exp == WPAD_EXP_CLASSIC) + { + /* Classic Controller right stick */ + x = wpad_StickX(data,1); + y = wpad_StickY(data,1); + + /* Emulated stick is unidirectional but can be rotated */ + if (abs(x) > abs(y)) + { + input.analog[i+1][0] = (x + 128); + } + else + { + input.analog[i+1][0] = (y + 128); + } + } + else + { + /* Wiimote D-PAD */ + if ((p & wpad_dirmap[exp][PAD_DOWN]) || (p & wpad_dirmap[exp][PAD_LEFT])) input.analog[i+1][0]-=2; + else if ((p & wpad_dirmap[exp][PAD_UP]) || (p & wpad_dirmap[exp][PAD_RIGHT])) input.analog[i+1][0]+=2; + + /* Limits */ + if (input.analog[i+1][0] < 0) input.analog[i+1][0] = 0; + else if (input.analog[i+1][0] > 255) input.analog[i+1][0] = 255; + } + + /* Buttons */ + if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_XE_A; + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_XE_B; + if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_XE_C; + if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_XE_START; + if (p & wpad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_XE_D; + if (p & wpad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_XE_E1; + if (p & wpad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_XE_E2; + if (p & wpad_keymap[KEY_MODE]) input.pad[i] |= INPUT_XE_SELECT; + + break; + } + + case DEVICE_SPORTSPAD: + { + /* X analog position [0-255] */ + if (p & wpad_dirmap[exp][PAD_LEFT]) input.analog[i][0]-=2; + else if (p & wpad_dirmap[exp][PAD_RIGHT]) input.analog[i][0]+=2; + else input.analog[i][0] = (x + 128); + + /* Y analog position [0-255] */ + if (p & wpad_dirmap[exp][PAD_UP]) input.analog[i][1]-=2; + else if (p & wpad_dirmap[exp][PAD_DOWN]) input.analog[i][1]+=2; + else input.analog[i][1] = y ? (127 - y) : (128 - y); + + /* Limits */ + if (input.analog[i][0] < 0) input.analog[i][0] = 0; + else if (input.analog[i][0] > 255) input.analog[i][0] = 255; + if (input.analog[i][1] < 0) input.analog[i][1] = 0; + else if (input.analog[i][1] > 255) input.analog[i][1] = 255; + + /* Buttons */ + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; + if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; + if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_PADDLE: + { + /* X analog position [0-255] */ + if (exp == WPAD_EXP_NONE) + { + /* Wiimote D-PAD */ + if (p & wpad_dirmap[exp][PAD_LEFT]) input.analog[i][0]-=2; + else if (p & wpad_dirmap[exp][PAD_RIGHT]) input.analog[i][0]+=2; + + /* Limits */ + if (input.analog[i][0] < 0) input.analog[i][0] = 0; + else if (input.analog[i][0] > 255) input.analog[i][0] = 255; + } + else + { + /* Left analog stick */ + input.analog[i][0] = (x + 128); + } + + /* Buttons */ + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; + if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_PAD2B: + { + /* D-PAD */ + if ((p & wpad_dirmap[exp][PAD_UP]) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; + else if ((p & wpad_dirmap[exp][PAD_DOWN]) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; + if ((p & wpad_dirmap[exp][PAD_LEFT]) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; + else if ((p & wpad_dirmap[exp][PAD_RIGHT]) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; + + /* Buttons */ + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; + if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; + if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_LIGHTGUN: + { + /* Gun screen position (x,y) */ + if (exp != WPAD_EXP_CLASSIC) + { + /* Wiimote IR */ + struct ir_t ir; + WPAD_IR(chan, &ir); + + if (ir.valid) + { + /* screen position */ + input.analog[i][0] = (ir.x * bitmap.viewport.w) / 640; + input.analog[i][1] = (ir.y * bitmap.viewport.h) / 480; + } + else + { + /* lightgun should point outside screen area */ + input.analog[i][0] = 512; + input.analog[i][1] = 512; + } + } + else + { + /* Classic Controller analog stick */ + input.analog[i][0] += x / ANALOG_SENSITIVITY; + input.analog[i][1] -= y / ANALOG_SENSITIVITY; + + /* Limits */ + if (input.analog[i][0] < 0) input.analog[i][0] = 0; + else if (input.analog[i][0] > bitmap.viewport.w) input.analog[i][0] = bitmap.viewport.w; + if (input.analog[i][1] < 0) input.analog[i][1] = 0; + else if (input.analog[i][1] > bitmap.viewport.h) input.analog[i][1] = bitmap.viewport.h; + } + + /* Buttons */ + if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; + if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; + if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_MOUSE: + { + /* Mouse relative movement (-255,255) */ + input.analog[i][0] = (x / ANALOG_SENSITIVITY) * 2; + input.analog[i][1] = (y / ANALOG_SENSITIVITY) * 2; + + /* Wiimote IR (buggy) */ + if (exp != WPAD_EXP_CLASSIC) + { + struct ir_t ir; + WPAD_IR(chan, &ir); + + /* Only if Wiimote is pointed to screen */ + if(ir.smooth_valid) + { + input.analog[i][0] = (int)((ir.sx - 512) / 2 / ANALOG_SENSITIVITY); + input.analog[i][1] = (int)((ir.sy - 384) * 2 / 3 / ANALOG_SENSITIVITY); + } + } + + /* USB mouse support */ + if (MOUSE_IsConnected()) + { + /* read mouse data */ + mouse_event event; + MOUSE_GetEvent(&event); + MOUSE_FlushEvents(); + + /* mouse position (-127;+127) -> (-255;+255) */ + input.analog[i][0] = event.rx * 2; + input.analog[i][1] = event.ry * 2; + + /* mouse buttons */ + if (event.button & 1) input.pad[i] |= INPUT_MOUSE_RIGHT; + if (event.button & 2) input.pad[i] |= INPUT_MOUSE_CENTER; + if (event.button & 4) input.pad[i] |= INPUT_MOUSE_LEFT; + } + + /* Y-Axis inversion */ + if (config.invert_mouse) + { + input.analog[i][1] = -input.analog[i][1]; + } + + /* Buttons */ + if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_MOUSE_CENTER; + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_MOUSE_LEFT; + if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_MOUSE_RIGHT; + if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; + + break; + } + + case DEVICE_PICO: + { + /* D-PAD */ + if (p & PAD_BUTTON_UP) input.pad[i] |= INPUT_UP; + else if (p & PAD_BUTTON_DOWN) input.pad[i] |= INPUT_DOWN; + if (p & PAD_BUTTON_LEFT) input.pad[i] |= INPUT_LEFT; + else if (p & PAD_BUTTON_RIGHT) input.pad[i] |= INPUT_RIGHT; + + /* PEN screen position (x,y) */ + input.analog[0][0] += x / ANALOG_SENSITIVITY; + input.analog[0][1] -= y / ANALOG_SENSITIVITY; + + /* Limits */ + if (input.analog[0][0] < 0x17c) input.analog[0][0] = 0x17c; + else if (input.analog[0][0] > 0x3c) input.analog[0][0] = 0x3c; + if (input.analog[0][1] < 0x1fc) input.analog[0][1] = 0x1fc; + else if (input.analog[0][1] > 0x3f3) input.analog[0][1] = 0x3f3; + + /* Wiimote IR */ + if (exp != WPAD_EXP_CLASSIC) + { + struct ir_t ir; + WPAD_IR(chan, &ir); + if (ir.valid) + { + input.analog[0][0] = 0x3c + (ir.x * (0x17c - 0x3c + 1)) / 640; + input.analog[0][1] = 0x1fc + (ir.y * (0x3f3 - 0x1fc + 1)) / 480; + } + } + + /* PEN button */ + if (p & wpad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_PICO_PEN; + + /* RED button */ + if (p & wpad_keymap[KEY_BUTTONB]) input.pad[0] |= INPUT_PICO_RED; + + /* PAGE index increment */ + if (p & wpad_keymap[KEY_BUTTONC]) pico_current = (pico_current + 1) & 7; + + break; + } + + case DEVICE_TEREBI: + { + /* PEN screen position (x,y) */ + input.analog[0][0] += x / ANALOG_SENSITIVITY; + input.analog[0][1] -= y / ANALOG_SENSITIVITY; + + /* Limits */ + if (input.analog[0][0] < 0) input.analog[0][0] = 0; + else if (input.analog[0][0] > 250) input.analog[0][0] = 250; + if (input.analog[0][1] < 0) input.analog[0][1] = 0; + else if (input.analog[0][1] > 250) input.analog[0][1] = 250; + + /* Wiimote IR */ + if (exp != WPAD_EXP_CLASSIC) + { + struct ir_t ir; + WPAD_IR(chan, &ir); + if (ir.valid) + { + input.analog[0][0] = (ir.x * 250) / 640; + input.analog[0][1] = (ir.y * 250) / 480; + } + } + + /* PEN button */ + if (p & wpad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_BUTTON1; + + break; + } + + case DEVICE_ACTIVATOR: + { + /* Classic Controller only */ + if (exp == WPAD_EXP_CLASSIC) + { + /* Left stick */ + float mag = data->exp.classic.ljs.mag; + float ang = data->exp.classic.ljs.ang; + + if (mag > 0.5) + { + /* 8 bottom sensors = 8 areas */ + if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2L; + else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3L; + else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4L; + else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5L; + else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6L; + else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7L; + else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8L; + else input.pad[i] |= INPUT_ACTIVATOR_1L; + } + + /* Right stick */ + mag = data->exp.classic.rjs.mag; + ang = data->exp.classic.rjs.ang; + + if (mag > 0.5) + { + /* 8 top sensors = 8 areas */ + if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2U; + else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3U; + else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4U; + else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5U; + else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6U; + else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7U; + else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8U; + else input.pad[i] |= INPUT_ACTIVATOR_1U; + } + } + + break; + } + } +} +#endif + + +/***************************************************************************************/ +/* GX Input interface */ +/***************************************************************************************/ +void gx_input_Init(void) +{ + PAD_Init(); +#ifdef HW_RVL + WPAD_Init(); + WPAD_SetIdleTimeout(60); + WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); + WPAD_SetVRes(WPAD_CHAN_ALL,640,480); +#endif +} + +int gx_input_FindDevices(void) +{ + int i; +#ifdef HW_RVL + u32 wpad; +#endif + int found = 0; + int player = 0; + + VIDEO_WaitVSync(); + u32 pad = PAD_ScanPads(); + + for (i=0; i 0) + { + wpad_update(config.input[player].port, i, config.input[player].device - 1); + } +#endif + + /* increment player index */ + player ++; + } + } + + /* Update RAM patches */ + RAMCheatUpdate(); +} + +/* Menu inputs update function */ +void gx_input_UpdateMenu(void) +{ + /* Check if inputs update are disabled */ + if (inputs_disabled) return; + + /* PAD status update */ + PAD_ScanPads(); + + /* PAD pressed keys */ + s16 pp = PAD_ButtonsDown(0); + + /* PAD held keys (direction/selection) */ + s16 hp = PAD_ButtonsHeld(0) & PAD_BUTTONS_HELD; + + /* PAD analog sticks (handled as PAD held direction keys) */ + s8 x = PAD_StickX(0); + s8 y = PAD_StickY(0); + if (x > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_RIGHT; + else if (x < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_LEFT; + else if (y > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_UP; + else if (y < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_DOWN; + +#ifdef HW_RVL + /* WPAD status update */ + WPAD_ScanPads(); + WPADData *data = WPAD_Data(0); + + /* WPAD pressed keys */ + u32 pw = data->btns_d; + + /* WPAD held keys (direction/selection) */ + u32 hw = data->btns_h & WPAD_BUTTONS_HELD; + + /* WPAD analog sticks (handled as PAD held direction keys) */ + x = wpad_StickX(data, 0); + y = wpad_StickY(data, 0); + if (x > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_RIGHT; + else if (x < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_LEFT; + else if (y > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_UP; + else if (y < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_DOWN; +#endif + + /* check if any direction/selection key is being held or just being pressed/released */ +#ifdef HW_RVL + if (pp||pw) held_cnt = 0; + else if (hp||hw) held_cnt++; + else held_cnt = 0; +#else + if (pp) held_cnt = 0; + else if (hp) held_cnt++; + else held_cnt = 0; +#endif + + /* initial delay (prevents triggering to start immediately) */ + if (held_cnt > HELD_DELAY) + { + /* key triggering */ + pp |= hp; +#ifdef HW_RVL + pw |= hw; +#endif + + /* delay until next triggering (adjusts direction/selection update speed) */ + held_cnt -= HELD_SPEED; + } + +#ifdef HW_RVL + /* Wiimote direction keys */ + WPAD_IR(0, &m_input.ir); + if (m_input.ir.valid) + { + /* Wiimote is handled vertically */ + if (pw & WPAD_BUTTON_UP) pp |= PAD_BUTTON_UP; + else if (pw & WPAD_BUTTON_DOWN) pp |= PAD_BUTTON_DOWN; + else if (pw & WPAD_BUTTON_LEFT) pp |= PAD_BUTTON_LEFT; + else if (pw & WPAD_BUTTON_RIGHT) pp |= PAD_BUTTON_RIGHT; + } + else + { + /* Wiimote is handled horizontally */ + if (pw & WPAD_BUTTON_UP) pp |= PAD_BUTTON_LEFT; + else if (pw & WPAD_BUTTON_DOWN) pp |= PAD_BUTTON_RIGHT; + else if (pw & WPAD_BUTTON_LEFT) pp |= PAD_BUTTON_DOWN; + else if (pw & WPAD_BUTTON_RIGHT) pp |= PAD_BUTTON_UP; + } + + /* Classic Controller direction keys */ + if (pw & WPAD_CLASSIC_BUTTON_UP) pp |= PAD_BUTTON_UP; + else if (pw & WPAD_CLASSIC_BUTTON_DOWN) pp |= PAD_BUTTON_DOWN; + else if (pw & WPAD_CLASSIC_BUTTON_LEFT) pp |= PAD_BUTTON_LEFT; + else if (pw & WPAD_CLASSIC_BUTTON_RIGHT) pp |= PAD_BUTTON_RIGHT; + + /* WPAD buttons */ + if (pw & WPAD_BUTTON_A) pp |= PAD_BUTTON_A; + if (pw & WPAD_BUTTON_B) pp |= PAD_BUTTON_B; + if (pw & WPAD_BUTTON_2) pp |= PAD_BUTTON_A; + if (pw & WPAD_BUTTON_1) pp |= PAD_BUTTON_B; + if (pw & WPAD_BUTTON_HOME) pp |= PAD_TRIGGER_Z; + if (pw & WPAD_BUTTON_PLUS) pp |= PAD_TRIGGER_L; + if (pw & WPAD_BUTTON_MINUS) pp |= PAD_TRIGGER_R; + if (pw & WPAD_CLASSIC_BUTTON_FULL_L) pp |= PAD_TRIGGER_L; + if (pw & WPAD_CLASSIC_BUTTON_FULL_R) pp |= PAD_TRIGGER_R; + if (pw & WPAD_CLASSIC_BUTTON_A) pp |= PAD_BUTTON_A; + if (pw & WPAD_CLASSIC_BUTTON_B) pp |= PAD_BUTTON_B; + if (pw & WPAD_CLASSIC_BUTTON_HOME) pp |= PAD_TRIGGER_Z; +#endif + + /* Update menu inputs */ + m_input.keys = pp; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_input.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_input.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_input.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_input.h index 1dcc5bbe12..e832b5b0d5 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_input.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_input.h @@ -1,72 +1,72 @@ -/**************************************************************************** - * gx_input.c - * - * Genesis Plus GX input support - * - * Copyright Eke-Eke (2007-2012) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _GC_INPUT_H_ -#define _GC_INPUT_H_ - -#define osd_input_update() gx_input_UpdateEmu() - -/* max. supported inputs */ -#ifdef HW_RVL -#define MAX_INPUTS 8 -#else -#define MAX_INPUTS 4 -#endif - -/* Configurable keys */ -#define MAX_KEYS 8 - - -/* Key configuration structure */ -typedef struct -{ - s8 device; - u8 port; - u8 padtype; -} t_input_config; - - -extern void gx_input_Init(void); -extern int gx_input_FindDevices(void); -extern void gx_input_SetDefault(void); -extern void gx_input_Config(u8 chan, u8 device, u8 type); -extern void gx_input_UpdateEmu(void); -extern void gx_input_UpdateMenu(void); - -#endif +/**************************************************************************** + * gx_input.c + * + * Genesis Plus GX input support + * + * Copyright Eke-Eke (2007-2012) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _GC_INPUT_H_ +#define _GC_INPUT_H_ + +#define osd_input_update() gx_input_UpdateEmu() + +/* max. supported inputs */ +#ifdef HW_RVL +#define MAX_INPUTS 8 +#else +#define MAX_INPUTS 4 +#endif + +/* Configurable keys */ +#define MAX_KEYS 8 + + +/* Key configuration structure */ +typedef struct +{ + s8 device; + u8 port; + u8 padtype; +} t_input_config; + + +extern void gx_input_Init(void); +extern int gx_input_FindDevices(void); +extern void gx_input_SetDefault(void); +extern void gx_input_Config(u8 chan, u8 device, u8 type); +extern void gx_input_UpdateEmu(void); +extern void gx_input_UpdateMenu(void); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_video.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_video.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_video.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_video.c index b0c3b700a9..5611b13c38 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_video.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_video.c @@ -1,2001 +1,2001 @@ -/**************************************************************************** - * gx_video.c - * - * Genesis Plus GX video & rendering support - * - * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "font.h" -#include "md_ntsc.h" -#include "sms_ntsc.h" -#include "gx_input.h" - -#include - -#define TEX_WIDTH 720 -#define TEX_HEIGHT 576 -#define TEX_SIZE (TEX_WIDTH * TEX_HEIGHT * 2) -#define DEFAULT_FIFO_SIZE 256 * 1024 -#define HASPECT 320 -#define VASPECT 240 - -/* libpng wrapper */ -typedef struct -{ - u8 *buffer; - u32 offset; -} png_image; - -extern const u8 Crosshair_p1_png[]; -extern const u8 Crosshair_p2_png[]; -extern const u8 CD_access_off_png[]; -extern const u8 CD_access_on_png[]; -extern const u8 CD_ready_off_png[]; -extern const u8 CD_ready_on_png[]; - -/*** VI ***/ -GXRModeObj *vmode; /* Default Video Mode */ -u8 *texturemem; /* Texture Data */ -u8 *screenshot; /* Texture Data */ - -/*** 50/60hz flag ***/ -u32 gc_pal; - -/*** NTSC Filters ***/ -sms_ntsc_t *sms_ntsc; -md_ntsc_t *md_ntsc; - -/*** GX FIFO ***/ -static u8 gp_fifo[DEFAULT_FIFO_SIZE] ATTRIBUTE_ALIGN (32); - -/*** GX Textures ***/ -static u32 vwidth,vheight; -static gx_texture *crosshair[2]; -static gx_texture *cd_leds[2][2]; - -/*** Framebuffers ***/ -static u32 *xfb[2]; -static u32 whichfb = 0; - -/*** Frame Sync ***/ -static u8 video_sync; - -/***************************************************************************************/ -/* Emulation video modes */ -/***************************************************************************************/ -static GXRModeObj *rmode; - -/* 288 lines progressive (PAL 50Hz) */ -static GXRModeObj TV50hz_288p = -{ - VI_TVMODE_PAL_DS, // viDisplayMode - 640, // fbWidth - VI_MAX_HEIGHT_PAL/2, // efbHeight - VI_MAX_HEIGHT_PAL/2, // xfbHeight - 0, // viXOrigin - 0, // viYOrigin - VI_MAX_WIDTH_PAL, // viWidth - VI_MAX_HEIGHT_PAL, // viHeight - VI_XFBMODE_SF, // xFBmode - GX_FALSE, // field_rendering - GX_FALSE, // aa - - // sample points arranged in increasing Y order - { - {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each - {6,6},{6,6},{6,6}, // pix 1 - {6,6},{6,6},{6,6}, // pix 2 - {6,6},{6,6},{6,6} // pix 3 - }, - - // vertical filter[7], 1/64 units, 6 bits each - { - 0, // line n-1 - 0, // line n-1 - 21, // line n - 22, // line n - 21, // line n - 0, // line n+1 - 0 // line n+1 - } -}; - -/* 288 lines interlaced (PAL 50Hz) */ -static GXRModeObj TV50hz_288i = -{ - VI_TVMODE_PAL_INT, // viDisplayMode - 640, // fbWidth - VI_MAX_HEIGHT_PAL/2, // efbHeight - VI_MAX_HEIGHT_PAL/2, // xfbHeight - 0, // viXOrigin - 0, // viYOrigin - VI_MAX_WIDTH_PAL, // viWidth - VI_MAX_HEIGHT_PAL, // viHeight - VI_XFBMODE_SF, // xFBmode - GX_TRUE, // field_rendering - GX_FALSE, // aa - - // sample points arranged in increasing Y order - { - {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each - {6,6},{6,6},{6,6}, // pix 1 - {6,6},{6,6},{6,6}, // pix 2 - {6,6},{6,6},{6,6} // pix 3 - }, - - // vertical filter[7], 1/64 units, 6 bits each - { - 0, // line n-1 - 0, // line n-1 - 21, // line n - 22, // line n - 21, // line n - 0, // line n+1 - 0 // line n+1 - } -}; - -/* 576 lines interlaced (PAL 50Hz, scaled) */ -static GXRModeObj TV50hz_576i = -{ - VI_TVMODE_PAL_INT, // viDisplayMode - 640, // fbWidth - 480, // efbHeight - VI_MAX_HEIGHT_PAL, // xfbHeight - 0, // viXOrigin - 0, // viYOrigin - VI_MAX_WIDTH_PAL, // viWidth - VI_MAX_HEIGHT_PAL, // viHeight - VI_XFBMODE_DF, // xFBmode - GX_FALSE, // field_rendering - GX_FALSE, // aa - - // sample points arranged in increasing Y order - { - {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each - {6,6},{6,6},{6,6}, // pix 1 - {6,6},{6,6},{6,6}, // pix 2 - {6,6},{6,6},{6,6} // pix 3 - }, - - // vertical filter[7], 1/64 units, 6 bits each - { - 8, // line n-1 - 8, // line n-1 - 10, // line n - 12, // line n - 10, // line n - 8, // line n+1 - 8 // line n+1 - } -}; - -/* 240 lines progressive (NTSC or PAL 60Hz) */ -static GXRModeObj TV60hz_240p = -{ - VI_TVMODE_EURGB60_DS, // viDisplayMode - 640, // fbWidth - VI_MAX_HEIGHT_NTSC/2, // efbHeight - VI_MAX_HEIGHT_NTSC/2, // xfbHeight - 0, // viXOrigin - 0, // viYOrigin - VI_MAX_WIDTH_NTSC, // viWidth - VI_MAX_HEIGHT_NTSC, // viHeight - VI_XFBMODE_SF, // xFBmode - GX_FALSE, // field_rendering - GX_FALSE, // aa - - // sample points arranged in increasing Y order - { - {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each - {6,6},{6,6},{6,6}, // pix 1 - {6,6},{6,6},{6,6}, // pix 2 - {6,6},{6,6},{6,6} // pix 3 - }, - - // vertical filter[7], 1/64 units, 6 bits each - { - 0, // line n-1 - 0, // line n-1 - 21, // line n - 22, // line n - 21, // line n - 0, // line n+1 - 0 // line n+1 - } -}; - -/* 240 lines interlaced (NTSC or PAL 60Hz) */ -static GXRModeObj TV60hz_240i = -{ - VI_TVMODE_EURGB60_INT, // viDisplayMode - 640, // fbWidth - VI_MAX_HEIGHT_NTSC/2, // efbHeight - VI_MAX_HEIGHT_NTSC/2, // xfbHeight - 0, // viXOrigin - 0, // viYOrigin - VI_MAX_WIDTH_NTSC, // viWidth - VI_MAX_HEIGHT_NTSC, // viHeight - VI_XFBMODE_SF, // xFBmode - GX_TRUE, // field_rendering - GX_FALSE, // aa - - // sample points arranged in increasing Y order - { - {3,2},{9,6},{3,10}, // pix 0, 3 sample points, 1/12 units, 4 bits each - {3,2},{9,6},{3,10}, // pix 1 - {9,2},{3,6},{9,10}, // pix 2 - {9,2},{3,6},{9,10} // pix 3 - }, - - // vertical filter[7], 1/64 units, 6 bits each - { - 0, // line n-1 - 0, // line n-1 - 21, // line n - 22, // line n - 21, // line n - 0, // line n+1 - 0 // line n+1 - } -}; - -/* 480 lines interlaced (NTSC or PAL 60Hz) */ -static GXRModeObj TV60hz_480i = -{ - VI_TVMODE_EURGB60_INT,// viDisplayMode - 640, // fbWidth - VI_MAX_HEIGHT_NTSC, // efbHeight - VI_MAX_HEIGHT_NTSC, // xfbHeight - 0, // viXOrigin - 0, // viYOrigin - VI_MAX_WIDTH_NTSC, // viWidth - VI_MAX_HEIGHT_NTSC, // viHeight - VI_XFBMODE_DF, // xFBmode - GX_FALSE, // field_rendering - GX_FALSE, // aa - - // sample points arranged in increasing Y order - { - {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each - {6,6},{6,6},{6,6}, // pix 1 - {6,6},{6,6},{6,6}, // pix 2 - {6,6},{6,6},{6,6} // pix 3 - }, - - // vertical filter[7], 1/64 units, 6 bits each - { - 8, // line n-1 - 8, // line n-1 - 10, // line n - 12, // line n - 10, // line n - 8, // line n+1 - 8 // line n+1 - } -}; - -/* TV modes pointer table */ -static GXRModeObj *tvmodes[6] = -{ - /* 60hz modes */ - &TV60hz_240p, - &TV60hz_240i, - &TV60hz_480i, - - /* 50Hz modes */ - &TV50hz_288p, - &TV50hz_288i, - &TV50hz_576i -}; - -/***************************************************************************************/ -/* GX rendering engine */ -/***************************************************************************************/ - -typedef struct tagcamera -{ - guVector pos; - guVector up; - guVector view; -} camera; - -/*** Square Matrix - This structure controls the size of the image on the screen. - Think of the output as a -80 x 80 by -60 x 60 graph. -***/ -static s16 square[] ATTRIBUTE_ALIGN (32) = -{ - /* - * X, Y, Z - * Values set are for roughly 4:3 aspect - */ - -HASPECT, VASPECT, 0, // 0 - HASPECT, VASPECT, 0, // 1 - HASPECT, -VASPECT, 0, // 2 - -HASPECT, -VASPECT, 0, // 3 -}; - -static camera cam = { - {0.0F, 0.0F, -100.0F}, - {0.0F, -1.0F, 0.0F}, - {0.0F, 0.0F, 0.0F} -}; - -/* VSYNC callback */ -static void vi_callback(u32 cnt) -{ -#ifdef LOG_TIMING - u64 current = gettime(); - if (prevtime) - { - delta_time[frame_cnt] = diff_nsec(prevtime, current); - frame_cnt = (frame_cnt + 1) % LOGSIZE; - } - prevtime = current; -#endif - - video_sync = 0; -} - -/* Vertex Rendering */ -static inline void draw_vert(u8 pos, f32 s, f32 t) -{ - GX_Position1x8(pos); - GX_TexCoord2f32(s, t); -} - -/* textured quad rendering */ -static inline void draw_square(void) -{ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - draw_vert(3, 0.0, 0.0); - draw_vert(2, 1.0, 0.0); - draw_vert(1, 1.0, 1.0); - draw_vert(0, 0.0, 1.0); - GX_End(); -} - -/* Initialize GX */ -static void gxStart(void) -{ - /*** Clear out FIFO area ***/ - memset(&gp_fifo, 0, DEFAULT_FIFO_SIZE); - - /*** GX default ***/ - GX_Init(&gp_fifo, DEFAULT_FIFO_SIZE); - GX_SetPixelFmt(GX_PF_RGB8_Z24, GX_ZC_LINEAR); - GX_SetCullMode(GX_CULL_NONE); - GX_SetClipMode(GX_CLIP_DISABLE); - GX_SetDispCopyGamma(GX_GM_1_0); - GX_SetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); - GX_SetColorUpdate(GX_TRUE); - GX_SetAlphaUpdate(GX_FALSE); - - /* Modelview */ - Mtx view; - memset (&view, 0, sizeof (Mtx)); - guLookAt(view, &cam.pos, &cam.up, &cam.view); - GX_LoadPosMtxImm(view, GX_PNMTX0); - GX_Flush(); -} - -/* Reset GX rendering */ -static void gxResetRendering(u8 type) -{ - GX_ClearVtxDesc(); - - if (type) - { - /* uses direct positionning, alpha blending & color channel (menu rendering) */ - GX_SetBlendMode(GX_BM_BLEND,GX_BL_SRCALPHA,GX_BL_INVSRCALPHA,GX_LO_CLEAR); - GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_S16, 0); - GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GX_SetVtxDesc(GX_VA_POS, GX_DIRECT); - GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); - GX_SetVtxDesc (GX_VA_CLR0, GX_DIRECT); - /* - Color.out = Color.rasterized*Color.texture - Alpha.out = Alpha.rasterized*Alpha.texture - */ - GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); - GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GX_SetNumTexGens(1); - GX_SetNumChans(1); - } - else - { - /* uses array positionning, no alpha blending, no color channel (video emulation) */ - GX_SetBlendMode(GX_BM_NONE,GX_BL_SRCALPHA,GX_BL_INVSRCALPHA,GX_LO_CLEAR); - GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); - GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GX_SetVtxDesc(GX_VA_POS, GX_INDEX8); - GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); - GX_SetArray(GX_VA_POS, square, 3 * sizeof (s16)); - /* - Color.out = Color.texture - Alpha.out = Alpha.texture - */ - GX_SetTevOp (GX_TEVSTAGE0, GX_REPLACE); - GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLORNULL); - GX_SetNumTexGens(1); - GX_SetNumChans(0); - } - - GX_Flush(); -} - -/* Reset GX rendering mode */ -static void gxResetMode(GXRModeObj *tvmode, int vfilter_enabled) -{ - Mtx44 p; - f32 yScale = GX_GetYScaleFactor(tvmode->efbHeight, tvmode->xfbHeight); - u16 xfbHeight = GX_SetDispCopyYScale(yScale); - u16 xfbWidth = VIDEO_PadFramebufferWidth(tvmode->fbWidth); - - GX_SetCopyClear((GXColor)BLACK,0x00ffffff); - GX_SetViewport(0.0F, 0.0F, tvmode->fbWidth, tvmode->efbHeight, 0.0F, 1.0F); - GX_SetScissor(0, 0, tvmode->fbWidth, tvmode->efbHeight); - GX_SetDispCopySrc(0, 0, tvmode->fbWidth, tvmode->efbHeight); - GX_SetDispCopyDst(xfbWidth, xfbHeight); - GX_SetCopyFilter(tvmode->aa, tvmode->sample_pattern, (tvmode->xfbMode == VI_XFBMODE_SF) ? GX_FALSE : vfilter_enabled, tvmode->vfilter); - GX_SetFieldMode(tvmode->field_rendering, ((tvmode->viHeight == 2 * tvmode->xfbHeight) ? GX_ENABLE : GX_DISABLE)); - guOrtho(p, tvmode->efbHeight/2, -(tvmode->efbHeight/2), -(tvmode->fbWidth/2), tvmode->fbWidth/2, 100, 1000); - GX_LoadProjectionMtx(p, GX_ORTHOGRAPHIC); - GX_Flush(); -} - -/* Update Aspect Ratio */ -static void gxSetAspectRatio(int *xscale, int *yscale) -{ - /* Vertical Scaling is disabled by default */ - *yscale = (bitmap.viewport.h + (2 * bitmap.viewport.y)) / 2; - - /* Original aspect ratio */ - if (config.aspect) - { - /* Adjust vertical scaling when input & output video heights are different */ - if (vdp_pal && (!gc_pal || config.render)) - { - *yscale = *yscale * VI_MAX_HEIGHT_NTSC / VI_MAX_HEIGHT_PAL; - } - else if (!vdp_pal && gc_pal && !config.render) - { - *yscale = *yscale * VI_MAX_HEIGHT_PAL / VI_MAX_HEIGHT_NTSC; - } - - /* Horizontal Scaling */ - /* Wii/Gamecube pixel clock = 13.5 Mhz */ - /* "H32" pixel clock = Master Clock / 10 = 5.3693175 Mhz (NTSC) or 5.3203424 (PAL) */ - /* "H40" pixel clock = Master Clock / 8 = 6,711646875 Mhz (NTSC) or 6,650428 Mhz (PAL) */ - if (config.overscan & 2) - { - /* Horizontal borders are emulated */ - if (reg[12] & 1) - { - /* 348 "H40" pixels = 348 * Wii/GC pixel clock / "H40" pixel clock = approx. 700 (NTSC) or 707 (PAL) Wii/GC pixels */ - *xscale = (system_clock == MCLOCK_NTSC) ? 350 : 354; - } - else - { - /* 284 "H32" pixels = 284 * Wii/GC pixel clock / "H40" pixel clock = approx. 714 (NTSC) or 721 (PAL) Wii/GC pixels */ - *xscale = (system_clock == MCLOCK_NTSC) ? 357 : 361; - } - } - else - { - /* Horizontal borders are simulated */ - if ((system_hw == SYSTEM_GG) && !config.gg_extra) - { - /* 160 "H32" pixels = 160 * Wii/GC pixel clock / "H32" pixel clock = approx. 403 Wii/GC pixels (NTSC only) */ - *xscale = 202; - } - else - { - /* 320 "H40" pixels = 256 "H32" pixels = 256 * Wii/GC pixel clock / "H32" pixel clock = approx. 644 (NTSC) or 650 (PAL) Wii/GC pixels */ - *xscale = (system_clock == MCLOCK_NTSC) ? 322 : 325; - } - } - - /* Aspect correction for widescreen TV */ - if (config.aspect & 2) - { - /* Keep 4:3 aspect ratio on 16:9 output */ - *xscale = (*xscale * 3) / 4; - } - } - - /* Manual aspect ratio */ - else - { - /* By default, disable horizontal scaling */ - *xscale = bitmap.viewport.w + (2 * bitmap.viewport.x); - - /* Keep original aspect ratio in H32 modes */ - if (!(reg[12] & 1)) - { - *xscale = (*xscale * 320) / 256; - } - - /* Game Gear specific: if borders are disabled, upscale to fullscreen */ - if ((system_hw == SYSTEM_GG) && !config.gg_extra) - { - if (!(config.overscan & 1)) - { - /* Active area height = approx. 224 non-interlaced lines (60hz) */ - *yscale = 112; - } - - if (!(config.overscan & 2)) - { - /* Active area width = approx. 640 pixels */ - *xscale = 320; - } - } - - /* By default, keep NTSC aspect ratio */ - if (gc_pal && !config.render) - { - /* Upscale PAL output */ - *yscale = *yscale * VI_MAX_HEIGHT_PAL / VI_MAX_HEIGHT_NTSC; - } - - /* Add user scaling */ - *xscale += config.xscale; - *yscale += config.yscale; - } -} - -/* Reset GX/VI hardware scaler */ -static void gxResetScaler(u32 width) -{ - int xscale = 0; - int yscale = 0; - int offset = 0; - - /* retrieve screen aspect ratio */ - gxSetAspectRatio(&xscale, &yscale); - - /* default EFB width */ - rmode->fbWidth = 640; - - /* no filtering, disable GX horizontal scaling */ - if (!config.bilinear && !config.ntsc) - { - if ((width <= 320) && (width <= xscale)) - rmode->fbWidth = width * 2; - else if (width <= 640) - rmode->fbWidth = width; - } - - /* configure VI width */ - if ((xscale * 2) > rmode->fbWidth) - { - /* max width = 720 pixels */ - if (xscale > 360) - { - /* save offset for later */ - offset = ((xscale - 360) * rmode->fbWidth) / rmode->viWidth; - - /* maximal width */ - xscale = 360; - } - - /* enable VI upscaling */ - rmode->viWidth = xscale * 2; - rmode->viXOrigin = (720 - (xscale * 2)) / 2; - - /* default GX horizontal scaling */ - xscale = (rmode->fbWidth / 2); - - /* handle additional upscaling */ - if (offset) - { - /* no filtering, reduce EFB width to increase VI upscaling */ - if (!config.bilinear && !config.ntsc) - rmode->fbWidth -= (offset * 2); - - /* increase GX horizontal scaling */ - else - xscale += offset; - } - } - else - { - /* VI horizontal scaling is disabled */ - rmode->viWidth = rmode->fbWidth; - rmode->viXOrigin = (720 - rmode->fbWidth) / 2; - } - - /* Adjust screen position */ - int xshift = (config.xshift * rmode->fbWidth) / rmode->viWidth; - int yshift = (config.yshift * rmode->efbHeight) / rmode->viHeight; - - /* Double Resolution modes (480i/576i/480p) */ - if (config.render) - { - yscale = yscale * 2; - } - - /* Set GX scaler (Vertex Position matrix) */ - square[6] = square[3] = xshift + xscale; - square[0] = square[9] = xshift - xscale; - square[4] = square[1] = yshift + yscale; - square[7] = square[10] = yshift - yscale; - DCFlushRange(square, 32); - GX_InvVtxCache(); -} - -static void gxDrawCrosshair(gx_texture *texture, int x, int y) -{ - /* adjust texture dimensions to XFB->VI scaling */ - int w = (texture->width * rmode->fbWidth) / (rmode->viWidth); - int h = (texture->height * rmode->efbHeight) / (rmode->viHeight); - - /* Aspect correction for widescreen TV */ - if (config.aspect & 2) w = (w * 3) / 4; - - /* EFB scale & shift */ - int xwidth = square[3] - square[9]; - int ywidth = square[4] - square[10]; - - /* adjust texture coordinates to EFB */ - x = (((x + bitmap.viewport.x) * xwidth) / vwidth) + square[9] - w/2; - y = (((y + bitmap.viewport.y) * ywidth) / vheight) + square[10] - h/2; - - /* reset GX rendering */ - gxResetRendering(1); - - /* load texture object */ - GXTexObj texObj; - GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); - GX_LoadTexObj(&texObj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* Draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(x,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 1.0); - GX_Position2s16(x+w,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(x+w,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(x,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 0.0); - GX_End(); - - /* restore GX rendering */ - gxResetRendering(0); - - /* restore texture object */ - GXTexObj texobj; - GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - if (!config.bilinear) - { - GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,0.0,10.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); - } - GX_LoadTexObj(&texobj, GX_TEXMAP0); - GX_InvalidateTexAll(); -} - -static void gxDrawCdLeds(gx_texture *texture_l, gx_texture *texture_r) -{ - /* adjust texture dimensions to XFB->VI scaling */ - int w = (texture_l->width * rmode->fbWidth) / (rmode->viWidth); - int h = (texture_l->height * rmode->efbHeight) / (rmode->viHeight); - - /* Aspect correction for widescreen TV */ - if (config.aspect & 2) w = (w * 3) / 4; - - /* EFB scale & shift */ - int xwidth = square[3] - square[9]; - int ywidth = square[4] - square[10]; - - /* adjust texture coordinates to EFB */ - int xl = ((bitmap.viewport.x * xwidth) / vwidth) + square[9] + 8; - int xr = (((bitmap.viewport.x + bitmap.viewport.w) * xwidth) / vwidth) + square[9] - 8 - w; - int y = (((bitmap.viewport.y + bitmap.viewport.h - 4) * ywidth) / vheight) + square[10] - h; - - /* reset GX rendering */ - gxResetRendering(1); - - /* load left screen texture */ - GXTexObj texObj; - GX_InitTexObj(&texObj, texture_l->data, texture_l->width, texture_l->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); - GX_LoadTexObj(&texObj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* Draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(xl,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 1.0); - GX_Position2s16(xl+w,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(xl+w,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(xl,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 0.0); - GX_End(); - - /* load right screen texture */ - GX_InitTexObj(&texObj, texture_r->data, texture_r->width, texture_r->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); - GX_LoadTexObj(&texObj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* Draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(xr,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 1.0); - GX_Position2s16(xr+w,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(xr+w,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(xr,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 0.0); - GX_End(); - - /* restore GX rendering */ - gxResetRendering(0); - - /* restore texture object */ - GXTexObj texobj; - GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - if (!config.bilinear) - { - GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,0.0,10.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); - } - GX_LoadTexObj(&texobj, GX_TEXMAP0); - GX_InvalidateTexAll(); -} - -void gxDrawRectangle(s32 x, s32 y, s32 w, s32 h, u8 alpha, GXColor color) -{ - /* GX only use Color channel for rendering */ - GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR); - GX_SetVtxDesc (GX_VA_TEX0, GX_NONE); - GX_Flush(); - - /* vertex coordinate */ - x -= (vmode->fbWidth/2); - y -= (vmode->efbHeight/2); - - /* draw colored quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(x,y+h); - GX_Color4u8(color.r,color.g,color.b,alpha); - GX_Position2s16(x+w,y+h); - GX_Color4u8(color.r,color.g,color.b,alpha); - GX_Position2s16(x+w,y); - GX_Color4u8(color.r,color.g,color.b,alpha); - GX_Position2s16(x,y); - GX_Color4u8(color.r,color.g,color.b,alpha); - GX_End(); - GX_DrawDone(); - - /* restore GX rendering */ - GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); - GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); - GX_Flush(); -} - -void gxDrawTexture(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha) -{ - if (!texture) return; - if (texture->data) - { - /* load texture object */ - GXTexObj texObj; - GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); /* does this really change anything ? */ - GX_LoadTexObj(&texObj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* vertex coordinate */ - x -= (vmode->fbWidth/2); - y -= (vmode->efbHeight/2); - - /* draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(x,y+h); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, 1.0); - GX_Position2s16(x+w,y+h); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(x+w,y); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(x,y); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, 0.0); - GX_End(); - GX_DrawDone(); - } -} - -void gxDrawTextureRotate(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, f32 angle, u8 alpha) -{ - if (!texture) return; - if (texture->data) - { - /* load texture object */ - GXTexObj texObj; - GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); - GX_LoadTexObj(&texObj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* vertex coordinate */ - x -= (vmode->fbWidth/2); - y -= (vmode->efbHeight/2); - - /* Modelview rotation */ - Mtx m,mv; - guVector axis = (guVector) {0,0,1}; - guLookAt(mv, &cam.pos, &cam.up, &cam.view); - guMtxRotAxisDeg (m, &axis, angle); - guMtxTransApply(m,m, x+w/2,y+h/2,0); - guMtxConcat(mv,m,mv); - GX_LoadPosMtxImm(mv, GX_PNMTX0); - GX_Flush(); - - /* draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(-w/2,-h/2); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, 0.0); - GX_Position2s16(w/2,-h/2); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(w/2,h/2); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(-w/2,h/2); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, 1.0); - GX_End(); - GX_DrawDone(); - - /* restore default Modelview */ - guLookAt(mv, &cam.pos, &cam.up, &cam.view); - GX_LoadPosMtxImm(mv, GX_PNMTX0); - GX_Flush(); - } -} - -void gxDrawTextureRepeat(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha) -{ - if (!texture) return; - if (texture->data) - { - /* load texture object */ - GXTexObj texObj; - GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_REPEAT, GX_REPEAT, GX_FALSE); - GX_LoadTexObj(&texObj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* vertex coordinate */ - x -= (vmode->fbWidth/2); - y -= (vmode->efbHeight/2); - - /* texture coordinates */ - f32 s = (f32)w / (f32)texture->width; - f32 t = (f32)h / (f32)texture->height; - - /* draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(x,y+h); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, t); - GX_Position2s16(x+w,y+h); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(s, t); - GX_Position2s16(x+w,y); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(s, 0.0); - GX_Position2s16(x,y); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, 0.0); - GX_End(); - GX_DrawDone(); - } -} - -void gxDrawScreenshot(u8 alpha) -{ - if (!rmode) return; - - /* get current game screen texture */ - GXTexObj texobj; - GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_LoadTexObj(&texobj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* get current aspect ratio */ - int xscale,yscale; - gxSetAspectRatio(&xscale, &yscale); - - /* adjust horizontal scaling */ - xscale = (xscale * vmode->fbWidth) / vmode->viWidth; - - /* adjust screen position */ - int xshift = (config.xshift * vmode->fbWidth) / vmode->viWidth; - int yshift = (config.yshift * vmode->efbHeight) / vmode->viHeight; - - /* set vertices position & size */ - s32 x = xshift - xscale; - s32 y = yshift - (yscale * 2); - s32 w = xscale * 2; - s32 h = yscale * 4; - - /* black out surrounding area if necessary (Game Gear without borders) */ - if ((w < 640) || (h < 480)) - { - gxDrawRectangle(0, 0, 640, 480, 255, (GXColor)BLACK); - } - - /* draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(x,y+h); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, 1.0); - GX_Position2s16(x+w,y+h); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(x+w,y); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(x,y); - GX_Color4u8(0xff,0xff,0xff,alpha); - GX_TexCoord2f32(0.0, 0.0); - GX_End(); - GX_DrawDone(); -} - -void gxCopyScreenshot(gx_texture *texture) -{ - /* retrieve gamescreen texture */ - GXTexObj texobj; - GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - GX_LoadTexObj(&texobj, GX_TEXMAP0); - GX_InvalidateTexAll(); - - /* scale texture to EFB width */ - s32 w = ((bitmap.viewport.w + 2*bitmap.viewport.x) * 640) / bitmap.viewport.w; - s32 h = (bitmap.viewport.h + 2*bitmap.viewport.y) * 2; - s32 x = -w/2; - s32 y = -(240+ 2*bitmap.viewport.y); - - /* black out surrounding area if necessary (Game Gear without borders) */ - if ((w < 640) || (h < 480)) - { - gxDrawRectangle(0, 0, 640, 480, 255, (GXColor)BLACK); - } - - /* draw textured quad */ - GX_Begin(GX_QUADS, GX_VTXFMT0, 4); - GX_Position2s16(x,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 1.0); - GX_Position2s16(x+w,y+h); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 1.0); - GX_Position2s16(x+w,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(1.0, 0.0); - GX_Position2s16(x,y); - GX_Color4u8(0xff,0xff,0xff,0xff); - GX_TexCoord2f32(0.0, 0.0); - GX_End(); - - /* copy EFB to texture */ - texture->format = GX_TF_RGBA8; - texture->width = 320; - texture->height = bitmap.viewport.h; - texture->data = screenshot; - GX_SetTexCopySrc(0, 0, texture->width * 2, texture->height * 2); - GX_SetTexCopyDst(texture->width, texture->height, texture->format, GX_TRUE); - GX_DrawDone(); - GX_CopyTex(texture->data, GX_TRUE); - GX_Flush(); - - /* wait for copy operation to finish */ - /* GX_PixModeSync is only useful if GX_ command follows */ - /* we use dummy GX commands to stall CPU execution */ - GX_PixModeSync(); - GX_LoadTexObj(&texobj, GX_TEXMAP0); - GX_InvalidateTexAll(); - GX_Flush(); - DCFlushRange(texture->data, texture->width * texture->height * 4); -} - -/* Take Screenshot */ -void gxSaveScreenshot(char *filename) -{ - /* capture screenshot into a texture */ - gx_texture texture; - gxCopyScreenshot(&texture); - - /* open PNG file */ - FILE *f = fopen(filename,"wb"); - if (f) - { - /* encode screenshot into PNG file */ - gxTextureWritePNG(&texture,f); - fclose(f); - } -} - -void gxSetScreen(void) -{ - GX_DrawDone(); - GX_CopyDisp(xfb[whichfb], GX_FALSE); - GX_Flush(); - VIDEO_SetNextFramebuffer (xfb[whichfb]); - VIDEO_Flush (); - VIDEO_WaitVSync (); - gx_input_UpdateMenu(); -} - -void gxClearScreen(GXColor color) -{ - whichfb ^= 1; - GX_SetCopyClear(color,0x00ffffff); - GX_CopyDisp(xfb[whichfb], GX_TRUE); - GX_Flush(); -} - -/***************************************************************************************/ -/* GX Texture <-> LibPNG routines */ -/***************************************************************************************/ - -/* libpng read callback function */ -static void png_read_from_mem (png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_image *image = (png_image *)png_get_io_ptr(png_ptr); - - /* copy data from image buffer */ - memcpy (data, image->buffer + image->offset, length); - - /* advance in the file */ - image->offset += length; -} - -/* convert PNG image (from file or data buffer) into RGBA8 texture */ -gx_texture *gxTextureOpenPNG(const u8 *png_data, FILE *png_file) -{ - int i; - - /* create a png read struct */ - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,NULL,NULL,NULL); - if (!png_ptr) return NULL; - - /* create a png info struct */ - png_infop info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - { - png_destroy_read_struct(&png_ptr,NULL,NULL); - return NULL; - } - - if (png_data) - { - /* init PNG image structure */ - png_image image; - image.buffer = (u8 *) png_data; - image.offset = 0; - - /* set callback for the read function */ - png_set_read_fn(png_ptr,(png_voidp *)(&image),png_read_from_mem); - } - else if (png_file) - { - /* check for valid magic number */ - png_byte magic[8]; - if (fread (magic, 1, 8, png_file) != 8) - { - png_destroy_read_struct(&png_ptr,&info_ptr,NULL); - return NULL; - } - - if (png_sig_cmp (magic, 0, 8)) - { - png_destroy_read_struct(&png_ptr,&info_ptr,NULL); - return NULL; - } - - /* set IO callback for read function */ - png_init_io (png_ptr, png_file); - png_set_sig_bytes (png_ptr, 8); - } - else - { - png_destroy_read_struct(&png_ptr,&info_ptr,NULL); - return NULL; - } - - /* read png info */ - png_read_info(png_ptr,info_ptr); - - /* retrieve image information */ - u32 width = png_get_image_width(png_ptr,info_ptr); - u32 height = png_get_image_height(png_ptr,info_ptr); - u32 bit_depth = png_get_bit_depth(png_ptr,info_ptr); - u32 color_type = png_get_color_type(png_ptr,info_ptr); - - /* ensure PNG file is in the supported format */ - if (png_file) - { - /* support for RGBA8 textures ONLY !*/ - if ((color_type != PNG_COLOR_TYPE_RGB_ALPHA) || (bit_depth != 8)) - { - png_destroy_read_struct(&png_ptr, &info_ptr,NULL); - return NULL; - } - - /* 4x4 tiles are required */ - if ((width%4) || (height%4)) - { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return NULL; - } - } - - /* allocate memory to store raw image data */ - u32 stride = width << 2; - u8 *img_data = memalign (32, stride * height); - if (!img_data) - { - png_destroy_read_struct(&png_ptr,&info_ptr,NULL); - return NULL; - } - - /* allocate row pointer data */ - png_bytep *row_pointers = (png_bytep *)memalign (32, sizeof (png_bytep) * height); - if (!row_pointers) - { - free (img_data); - png_destroy_read_struct(&png_ptr,&info_ptr,NULL); - return NULL; - } - - /* store raw image data */ - for (i = 0; i < height; i++) - { - row_pointers[i] = img_data + (i * stride); - } - - /* decode image */ - png_read_image(png_ptr, row_pointers); - - /* finish decompression and release memory */ - png_read_end(png_ptr, NULL); - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - free(row_pointers); - - /* initialize texture */ - gx_texture *texture = (gx_texture *)memalign(32, sizeof(gx_texture)); - if (!texture) - { - free (img_data); - return NULL; - } - - /* initialize texture data */ - texture->data = memalign(32, stride * height); - if (!texture->data) - { - free (img_data); - free(texture); - return NULL; - } - - memset(texture->data, 0, stride * height); - texture->width = width; - texture->height = height; - texture->format = GX_TF_RGBA8; - - /* encode to GX_TF_RGBA8 format (4x4 pixels paired titles) */ - u16 *dst_ar = (u16 *)(texture->data); - u16 *dst_gb = (u16 *)(texture->data + 32); - u32 *src1 = (u32 *)(img_data); - u32 *src2 = (u32 *)(img_data + stride); - u32 *src3 = (u32 *)(img_data + 2*stride); - u32 *src4 = (u32 *)(img_data + 3*stride); - u32 pixel,h,w; - - for (h=0; h> 24) & 0x00ff); - *dst_gb++= (pixel >> 8) & 0xffff; - } - - /* line N + 1 (4 pixels) */ - for (i=0; i<4; i++) - { - pixel = *src2++; - *dst_ar++= ((pixel << 8) & 0xff00) | ((pixel >> 24) & 0x00ff); - *dst_gb++= (pixel >> 8) & 0xffff; - } - - /* line N + 2 (4 pixels) */ - for (i=0; i<4; i++) - { - pixel = *src3++; - *dst_ar++= ((pixel << 8) & 0xff00) | ((pixel >> 24) & 0x00ff); - *dst_gb++= (pixel >> 8) & 0xffff; - } - - /* line N + 3 (4 pixels) */ - for (i=0; i<4; i++) - { - pixel = *src4++; - *dst_ar++= ((pixel << 8) & 0xff00) | ((pixel >> 24) & 0x00ff); - *dst_gb++= (pixel >> 8) & 0xffff; - } - - /* next paired tiles */ - dst_ar += 16; - dst_gb += 16; - } - - /* next 4 lines */ - src1 = src4; - src2 = src1 + width; - src3 = src2 + width; - src4 = src3 + width; - } - - /* release memory */ - free(img_data); - - /* flush texture data from cache */ - DCFlushRange(texture->data, height * stride); - - return texture; -} - -/* Write RGBA8 Texture to PNG file */ -void gxTextureWritePNG(gx_texture *texture, FILE *png_file) -{ - /* allocate PNG data buffer */ - u8 *img_data = (u8 *)memalign(32, texture->width * texture->height * 4); - if(!img_data) return; - - /* decode GX_TF_RGBA8 format (4x4 pixels paired titles) */ - u16 *ar = (u16 *)(texture->data); - u16 *gb = (u16 *)(texture->data + 32); - u32 *dst1 = (u32 *)(img_data); - u32 *dst2 = dst1 + texture->width; - u32 *dst3 = dst2 + texture->width; - u32 *dst4 = dst3 + texture->width; - u32 i,h,w,pixel; - - for (h=0; hheight; h+=4) - { - for (w=0; wwidth; w+=4) - { - /* line N (4 pixels) */ - for (i=0; i<4; i++) - { - pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); - *dst1++ = pixel; - ar++; - gb++; - } - - /* line N + 1 (4 pixels) */ - for (i=0; i<4; i++) - { - pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); - *dst2++ = pixel; - ar++; - gb++; - } - - /* line N + 2 (4 pixels) */ - for (i=0; i<4; i++) - { - pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); - *dst3++ = pixel; - ar++; - gb++; - } - - /* line N + 3 (4 pixels) */ - for (i=0; i<4; i++) - { - pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); - *dst4++ = pixel; - ar++; - gb++; - } - - /* next paired tiles */ - ar += 16; - gb += 16; - } - - /* next 4 lines */ - dst1 = dst4; - dst2 = dst1 + texture->width; - dst3 = dst2 + texture->width; - dst4 = dst3 + texture->width; - } - - /* create a png write struct */ - png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if(!png_ptr) - { - free(img_data); - return; - } - - /* create a png info struct */ - png_infop info_ptr = png_create_info_struct (png_ptr); - if (!info_ptr) - { - free(img_data); - png_destroy_write_struct(&png_ptr, NULL); - return; - } - - /* set IO callback for the write function */ - png_init_io(png_ptr, png_file); - - /* set PNG file properties */ - png_set_IHDR(png_ptr, info_ptr, texture->width, texture->height, 8, PNG_COLOR_TYPE_RGB_ALPHA, - PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - - /* allocate row pointer data */ - png_bytep *row_pointers = (png_bytep *)memalign (32, sizeof (png_bytep) * texture->height); - if (!row_pointers) - { - free (img_data); - png_destroy_write_struct(&png_ptr, &info_ptr); - return; - } - - /* store raw image data */ - for (i = 0; i < texture->height; i++) - { - row_pointers[i] = img_data + (i * texture->width * 4); - } - - /* configure libpng for image data */ - png_set_rows(png_ptr,info_ptr,row_pointers); - - /* write data to PNG file */ - png_write_png(png_ptr,info_ptr,PNG_TRANSFORM_IDENTITY,NULL); - - /* finish compression and release memory */ - png_write_end(png_ptr, NULL); - free(row_pointers); - free(img_data); - png_destroy_write_struct(&png_ptr, &info_ptr); -} - - -void gxTextureClose(gx_texture **p_texture) -{ - gx_texture *texture = *p_texture; - - if (texture) - { - if (texture->data) free(texture->data); - free(texture); - *p_texture = NULL; - } -} - - -/***************************************************************************************/ -/* VIDEO engine */ -/***************************************************************************************/ - -/* Emulation mode -> Menu mode */ -void gx_video_Stop(void) -{ - /* wait for next VBLANK */ - VIDEO_WaitVSync (); - - /* unallocate NTSC filters */ - if (sms_ntsc) free(sms_ntsc); - if (md_ntsc) free(md_ntsc); - sms_ntsc = NULL; - md_ntsc = NULL; - - /* lightgun textures */ - gxTextureClose(&crosshair[0]); - gxTextureClose(&crosshair[1]); - - /* CD leds textures */ - gxTextureClose(&cd_leds[0][0]); - gxTextureClose(&cd_leds[0][1]); - gxTextureClose(&cd_leds[1][0]); - gxTextureClose(&cd_leds[1][1]); - - /* GX menu rendering */ - gxResetRendering(1); - gxResetMode(vmode, GX_TRUE); - - /* render game snapshot */ - gxClearScreen((GXColor)BLACK); - gxDrawScreenshot(0xff); - - /* default VI settings */ - VIDEO_SetPostRetraceCallback(NULL); -#ifdef HW_RVL - VIDEO_SetTrapFilter(1); - VIDEO_SetGamma(VI_GM_1_0); -#endif - - /* adjust TV width */ - vmode->viWidth = config.screen_w; - vmode->viXOrigin = (VI_MAX_WIDTH_NTSC - vmode->viWidth)/2; - VIDEO_Configure(vmode); - - /* wait for VSYNC */ - gxSetScreen(); -} - -/* Menu mode -> Emulation mode */ -void gx_video_Start(void) -{ -#ifdef HW_RVL - VIDEO_SetTrapFilter(config.trap); - VIDEO_SetGamma((int)(config.gamma * 10.0)); -#endif - - /* TV mode */ - if ((config.tv_mode == 1) || ((config.tv_mode == 2) && vdp_pal)) - { - /* 50 Hz */ - gc_pal = 1; - } - else - { - /* 60 Hz */ - gc_pal = 0; - } - - /* When VSYNC is set to AUTO & console TV mode matches emulated video mode, emulation is synchronized with video hardware as well */ - if (config.vsync && (gc_pal == vdp_pal)) - { - /* VSYNC callback */ - VIDEO_SetPostRetraceCallback(vi_callback); - VIDEO_Flush(); - } - - /* set interlaced or progressive video mode */ - if (config.render == 2) - { - tvmodes[2]->viTVMode = VI_TVMODE_NTSC_PROG; - tvmodes[2]->xfbMode = VI_XFBMODE_SF; - } - else if (config.render == 1) - { - tvmodes[2]->viTVMode = tvmodes[0]->viTVMode & ~3; - tvmodes[2]->xfbMode = VI_XFBMODE_DF; - } - - /* update horizontal border width */ - if ((system_hw == SYSTEM_GG) && !config.gg_extra) - { - bitmap.viewport.x = (config.overscan & 2) ? 14 : -48; - } - else - { - bitmap.viewport.x = (config.overscan & 2) * 7; - } - - /* force viewport update */ - bitmap.viewport.changed = 3; - - /* NTSC filter */ - if (config.ntsc) - { - /* allocate filters */ - if (!sms_ntsc) - { - sms_ntsc = (sms_ntsc_t *)memalign(32,sizeof(sms_ntsc_t)); - } - if (!md_ntsc) - { - md_ntsc = (md_ntsc_t *)memalign(32,sizeof(md_ntsc_t)); - } - - /* setup filters default configuration */ - switch (config.ntsc) - { - case 1: - sms_ntsc_init(sms_ntsc, &sms_ntsc_composite); - md_ntsc_init(md_ntsc, &md_ntsc_composite); - break; - case 2: - sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo); - md_ntsc_init(md_ntsc, &md_ntsc_svideo); - break; - case 3: - sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb); - md_ntsc_init(md_ntsc, &md_ntsc_rgb); - break; - } - } - - /* lightgun textures */ - int i, player = 0; - for (i=0; i= 0) - { - if ((i == 0) || ((i == 4) && (input.system[1] != SYSTEM_LIGHTPHASER))) - { - /* Lightgun #1 */ - if (config.gun_cursor[0]) - { - crosshair[0] = gxTextureOpenPNG(Crosshair_p1_png,0); - } - } - else - { - /* Lightgun #2 */ - if (config.gun_cursor[1]) - { - crosshair[1] = gxTextureOpenPNG(Crosshair_p2_png,0); - } - } - } - } - - /* Check for any emulated device */ - if (input.dev[i] != NO_DEVICE) - { - /* increment player index */ - player++; - } - } - - /* CD leds textures */ - if (system_hw == SYSTEM_MCD) - { - if (config.cd_leds) - { - cd_leds[0][0] = gxTextureOpenPNG(CD_access_off_png,0); - cd_leds[0][1] = gxTextureOpenPNG(CD_access_on_png,0); - cd_leds[1][0] = gxTextureOpenPNG(CD_ready_off_png,0); - cd_leds[1][1] = gxTextureOpenPNG(CD_ready_on_png,0); - } - } - - /* GX emulation rendering */ - gxResetRendering(0); - - /* resynchronize emulation with VSYNC */ - video_sync = 0; - VIDEO_WaitVSync(); -} - -/* GX render update */ -int gx_video_Update(void) -{ - if (video_sync) return NO_SYNC; - - video_sync = config.vsync && (gc_pal == vdp_pal); - - /* check if display has changed during frame */ - if (bitmap.viewport.changed & 1) - { - /* update texture size */ - vwidth = bitmap.viewport.w + (2 * bitmap.viewport.x); - vheight = bitmap.viewport.h + (2 * bitmap.viewport.y); - - /* interlaced mode */ - if (config.render && interlaced) - { - vheight = vheight << 1; - } - - /* ntsc filter */ - if (config.ntsc) - { - vwidth = (reg[12] & 1) ? MD_NTSC_OUT_WIDTH(vwidth) : SMS_NTSC_OUT_WIDTH(vwidth); - - /* texel width must remain multiple of 4 */ - vwidth = (vwidth >> 2) << 2; - } - - /* initialize texture object */ - GXTexObj texobj; - GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - - /* configure texture filtering */ - if (!config.bilinear) - { - GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,0.0,10.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); - } - - /* load texture object */ - GX_LoadTexObj(&texobj, GX_TEXMAP0); - - /* update rendering mode */ - if (config.render) - { - rmode = tvmodes[gc_pal*3 + 2]; - } - else - { - rmode = tvmodes[gc_pal*3 + interlaced]; - } - - /* update aspect ratio */ - gxResetScaler(vwidth); - - /* update GX rendering mode */ - gxResetMode(rmode, config.vfilter); - - /* update VI mode */ - VIDEO_Configure(rmode); - } - - /* texture is now directly mapped by the line renderer */ - - /* force texture cache update */ - DCFlushRange(texturemem, TEX_SIZE); - GX_InvalidateTexAll(); - - /* render textured quad */ - draw_square(); - - /* lightgun # 1 screen mark */ - if (crosshair[0]) - { - if (input.system[0] == SYSTEM_LIGHTPHASER) - { - gxDrawCrosshair(crosshair[0], input.analog[0][0],input.analog[0][1]); - } - else - { - gxDrawCrosshair(crosshair[0], input.analog[4][0],input.analog[4][1]); - } - } - - /* lightgun #2 screen mark */ - if (crosshair[1]) - { - if (input.system[1] == SYSTEM_LIGHTPHASER) - { - gxDrawCrosshair(crosshair[1], input.analog[4][0],input.analog[4][1]); - } - else - { - gxDrawCrosshair(crosshair[1], input.analog[5][0],input.analog[5][1]); - } - } - - /* CD LEDS */ - if (cd_leds[1][1]) - { - /* CD LEDS status */ - u8 mode = scd.regs[0x06 >> 1].byte.h; - gxDrawCdLeds(cd_leds[1][(mode >> 1) & 1], cd_leds[0][mode & 1]); - } - - /* swap XFB */ - whichfb ^= 1; - - /* copy EFB to XFB */ - GX_DrawDone(); - GX_CopyDisp(xfb[whichfb], GX_TRUE); - GX_Flush(); - - /* XFB is ready to be displayed */ - VIDEO_SetNextFramebuffer(xfb[whichfb]); - VIDEO_Flush(); - - if (bitmap.viewport.changed & 1) - { - /* clear update flags */ - bitmap.viewport.changed &= ~1; - - /* field synchronization */ - VIDEO_WaitVSync(); - if (rmode->viTVMode & VI_NON_INTERLACE) - { - VIDEO_WaitVSync(); - } - else while (VIDEO_GetNextField() != odd_frame) - { - VIDEO_WaitVSync(); - } - - /* Audio DMA need to be resynchronized with VSYNC */ - audioStarted = 0; - } - - return SYNC_VIDEO; -} - -/* Initialize VIDEO subsystem */ -void gx_video_Init(void) -{ - /* - * Before doing anything else under libogc, - * Call VIDEO_Init - */ - VIDEO_Init(); - - /* Get the current VIDEO mode then : - - set menu video mode (480p/576p/480i/576i) - - set emulator rendering 60hz TV modes (PAL/MPAL/NTSC/EURGB60) - */ - vmode = VIDEO_GetPreferredMode(NULL); - - /* Adjust display settings */ - switch (vmode->viTVMode >> 2) - { - case VI_PAL: /* 576 lines scaled (PAL 50Hz) */ - TV60hz_240p.viTVMode = VI_TVMODE_EURGB60_DS; - TV60hz_240i.viTVMode = VI_TVMODE_EURGB60_INT; - TV60hz_480i.viTVMode = VI_TVMODE_EURGB60_INT; - break; - - default: /* 480 lines (NTSC, MPAL or PAL 60Hz) */ - TV60hz_240p.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_NON_INTERLACE); - TV60hz_240i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE); - TV60hz_480i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE); - break; - } - - /* Configure VI */ - VIDEO_Configure (vmode); - - /* Configure the framebuffers (double-buffering) */ - xfb[0] = (u32 *) MEM_K0_TO_K1((u32 *) SYS_AllocateFramebuffer(&TV50hz_576i)); - xfb[1] = (u32 *) MEM_K0_TO_K1((u32 *) SYS_AllocateFramebuffer(&TV50hz_576i)); - - /* Define a console */ - console_init(xfb[0], 20, 64, 640, 574, 574 * 2); - - /* Clear framebuffers to black */ - VIDEO_ClearFrameBuffer(vmode, xfb[0], COLOR_BLACK); - VIDEO_ClearFrameBuffer(vmode, xfb[1], COLOR_BLACK); - - /* Set the framebuffer to be displayed at next VBlank */ - VIDEO_SetNextFramebuffer(xfb[0]); - - /* Enable Video Interface */ - VIDEO_SetBlack(FALSE); - - /* Update VIDEO settings for next VBlank */ - VIDEO_Flush(); - - /* Wait for VBlank */ - VIDEO_WaitVSync(); - VIDEO_WaitVSync(); - - /* Initialize GX */ - gxStart(); - gxResetRendering(1); - gxResetMode(vmode, GX_TRUE); - - /* initialize FONT */ - FONT_Init(); - - /* Initialize textures */ - texturemem = memalign(32, TEX_SIZE); - screenshot = memalign(32, HASPECT*VASPECT*4); -} - -void gx_video_Shutdown(void) -{ - if (texturemem) free(texturemem); - if (screenshot) free(screenshot); - FONT_Shutdown(); - VIDEO_ClearFrameBuffer(vmode, xfb[whichfb], COLOR_BLACK); - VIDEO_Flush(); - VIDEO_WaitVSync(); -} - -/* Custom NTSC blitters */ -typedef unsigned short sms_ntsc_out_t; -typedef unsigned short md_ntsc_out_t; - -void sms_ntsc_blit( sms_ntsc_t const* ntsc, SMS_NTSC_IN_T const* table, unsigned char* input, - int in_width, int vline) -{ - int const chunk_count = in_width / sms_ntsc_in_chunk; - - /* handle extra 0, 1, or 2 pixels by placing them at beginning of row */ - int const in_extra = in_width - chunk_count * sms_ntsc_in_chunk; - unsigned const extra2 = (unsigned) -(in_extra >> 1 & 1); /* (unsigned) -1 = ~0 */ - unsigned const extra1 = (unsigned) -(in_extra & 1) | extra2; - - /* use palette entry 0 for unused pixels */ - SMS_NTSC_IN_T border = table[0]; - - SMS_NTSC_BEGIN_ROW( ntsc, border, - (SMS_NTSC_ADJ_IN( table[input[0]] )) & extra2, - (SMS_NTSC_ADJ_IN( table[input[extra2 & 1]] )) & extra1 ); - - /* directly fill the RGB565 texture */ - /* one tile is 32 byte = 4x4 pixels */ - /* tiles are stored continuously in texture memory */ - in_width = SMS_NTSC_OUT_WIDTH(in_width) / 4; - int offset = ((in_width * 32) * (vline / 4)) + ((vline & 3) * 8); - sms_ntsc_out_t* __restrict__ line_out = (sms_ntsc_out_t*)(texturemem + offset); - offset = 0; - - int n; - input += in_extra; - - for ( n = chunk_count; n; --n ) - { - /* order of input and output pixels must not be altered */ - SMS_NTSC_COLOR_IN( 0, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); - SMS_NTSC_RGB_OUT( 0, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 1, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - - SMS_NTSC_COLOR_IN( 1, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); - SMS_NTSC_RGB_OUT( 2, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 3, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - - SMS_NTSC_COLOR_IN( 2, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); - SMS_NTSC_RGB_OUT( 4, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 5, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 6, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - } - - /* finish final pixels */ - SMS_NTSC_COLOR_IN( 0, ntsc, border ); - SMS_NTSC_RGB_OUT( 0, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 1, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - - SMS_NTSC_COLOR_IN( 1, ntsc, border ); - SMS_NTSC_RGB_OUT( 2, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 3, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - - SMS_NTSC_COLOR_IN( 2, ntsc, border ); - SMS_NTSC_RGB_OUT( 4, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 5, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; - SMS_NTSC_RGB_OUT( 6, line_out[offset++] ); - if ((offset % 4) == 0) offset += 12; -} - -void md_ntsc_blit( md_ntsc_t const* ntsc, MD_NTSC_IN_T const* table, unsigned char* input, - int in_width, int vline) -{ - int const chunk_count = in_width / md_ntsc_in_chunk - 1; - - /* use palette entry 0 for unused pixels */ - MD_NTSC_IN_T border = table[0]; - - MD_NTSC_BEGIN_ROW( ntsc, border, - MD_NTSC_ADJ_IN( table[*input++] ), - MD_NTSC_ADJ_IN( table[*input++] ), - MD_NTSC_ADJ_IN( table[*input++] ) ); - - /* directly fill the RGB565 texture */ - /* one tile is 32 byte = 4x4 pixels */ - /* tiles are stored continuously in texture memory */ - in_width = MD_NTSC_OUT_WIDTH(in_width) >> 2; - int offset = ((in_width << 5) * (vline >> 2)) + ((vline & 3) * 8); - md_ntsc_out_t* __restrict__ line_out = (md_ntsc_out_t*)(texturemem + offset); - - int n; - - for ( n = chunk_count; n; --n ) - { - /* order of input and output pixels must not be altered */ - MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 0, *line_out++ ); - MD_NTSC_RGB_OUT( 1, *line_out++ ); - - MD_NTSC_COLOR_IN( 1, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 2, *line_out++ ); - MD_NTSC_RGB_OUT( 3, *line_out++ ); - - line_out += 12; - - MD_NTSC_COLOR_IN( 2, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 4, *line_out++ ); - MD_NTSC_RGB_OUT( 5, *line_out++ ); - - MD_NTSC_COLOR_IN( 3, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 6, *line_out++ ); - MD_NTSC_RGB_OUT( 7, *line_out++ ); - - line_out += 12; -} - - /* finish final pixels */ - MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 0, *line_out++ ); - MD_NTSC_RGB_OUT( 1, *line_out++ ); - - MD_NTSC_COLOR_IN( 1, ntsc, border ); - MD_NTSC_RGB_OUT( 2, *line_out++ ); - MD_NTSC_RGB_OUT( 3, *line_out++ ); - - line_out += 12; - - MD_NTSC_COLOR_IN( 2, ntsc, border ); - MD_NTSC_RGB_OUT( 4, *line_out++ ); - MD_NTSC_RGB_OUT( 5, *line_out++ ); - - MD_NTSC_COLOR_IN( 3, ntsc, border ); - MD_NTSC_RGB_OUT( 6, *line_out++ ); - MD_NTSC_RGB_OUT( 7, *line_out++ ); -} +/**************************************************************************** + * gx_video.c + * + * Genesis Plus GX video & rendering support + * + * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "font.h" +#include "md_ntsc.h" +#include "sms_ntsc.h" +#include "gx_input.h" + +#include + +#define TEX_WIDTH 720 +#define TEX_HEIGHT 576 +#define TEX_SIZE (TEX_WIDTH * TEX_HEIGHT * 2) +#define DEFAULT_FIFO_SIZE 256 * 1024 +#define HASPECT 320 +#define VASPECT 240 + +/* libpng wrapper */ +typedef struct +{ + u8 *buffer; + u32 offset; +} png_image; + +extern const u8 Crosshair_p1_png[]; +extern const u8 Crosshair_p2_png[]; +extern const u8 CD_access_off_png[]; +extern const u8 CD_access_on_png[]; +extern const u8 CD_ready_off_png[]; +extern const u8 CD_ready_on_png[]; + +/*** VI ***/ +GXRModeObj *vmode; /* Default Video Mode */ +u8 *texturemem; /* Texture Data */ +u8 *screenshot; /* Texture Data */ + +/*** 50/60hz flag ***/ +u32 gc_pal; + +/*** NTSC Filters ***/ +sms_ntsc_t *sms_ntsc; +md_ntsc_t *md_ntsc; + +/*** GX FIFO ***/ +static u8 gp_fifo[DEFAULT_FIFO_SIZE] ATTRIBUTE_ALIGN (32); + +/*** GX Textures ***/ +static u32 vwidth,vheight; +static gx_texture *crosshair[2]; +static gx_texture *cd_leds[2][2]; + +/*** Framebuffers ***/ +static u32 *xfb[2]; +static u32 whichfb = 0; + +/*** Frame Sync ***/ +static u8 video_sync; + +/***************************************************************************************/ +/* Emulation video modes */ +/***************************************************************************************/ +static GXRModeObj *rmode; + +/* 288 lines progressive (PAL 50Hz) */ +static GXRModeObj TV50hz_288p = +{ + VI_TVMODE_PAL_DS, // viDisplayMode + 640, // fbWidth + VI_MAX_HEIGHT_PAL/2, // efbHeight + VI_MAX_HEIGHT_PAL/2, // xfbHeight + 0, // viXOrigin + 0, // viYOrigin + VI_MAX_WIDTH_PAL, // viWidth + VI_MAX_HEIGHT_PAL, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + { + {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each + {6,6},{6,6},{6,6}, // pix 1 + {6,6},{6,6},{6,6}, // pix 2 + {6,6},{6,6},{6,6} // pix 3 + }, + + // vertical filter[7], 1/64 units, 6 bits each + { + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 + } +}; + +/* 288 lines interlaced (PAL 50Hz) */ +static GXRModeObj TV50hz_288i = +{ + VI_TVMODE_PAL_INT, // viDisplayMode + 640, // fbWidth + VI_MAX_HEIGHT_PAL/2, // efbHeight + VI_MAX_HEIGHT_PAL/2, // xfbHeight + 0, // viXOrigin + 0, // viYOrigin + VI_MAX_WIDTH_PAL, // viWidth + VI_MAX_HEIGHT_PAL, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + { + {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each + {6,6},{6,6},{6,6}, // pix 1 + {6,6},{6,6},{6,6}, // pix 2 + {6,6},{6,6},{6,6} // pix 3 + }, + + // vertical filter[7], 1/64 units, 6 bits each + { + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 + } +}; + +/* 576 lines interlaced (PAL 50Hz, scaled) */ +static GXRModeObj TV50hz_576i = +{ + VI_TVMODE_PAL_INT, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + VI_MAX_HEIGHT_PAL, // xfbHeight + 0, // viXOrigin + 0, // viYOrigin + VI_MAX_WIDTH_PAL, // viWidth + VI_MAX_HEIGHT_PAL, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + { + {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each + {6,6},{6,6},{6,6}, // pix 1 + {6,6},{6,6},{6,6}, // pix 2 + {6,6},{6,6},{6,6} // pix 3 + }, + + // vertical filter[7], 1/64 units, 6 bits each + { + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 + } +}; + +/* 240 lines progressive (NTSC or PAL 60Hz) */ +static GXRModeObj TV60hz_240p = +{ + VI_TVMODE_EURGB60_DS, // viDisplayMode + 640, // fbWidth + VI_MAX_HEIGHT_NTSC/2, // efbHeight + VI_MAX_HEIGHT_NTSC/2, // xfbHeight + 0, // viXOrigin + 0, // viYOrigin + VI_MAX_WIDTH_NTSC, // viWidth + VI_MAX_HEIGHT_NTSC, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + { + {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each + {6,6},{6,6},{6,6}, // pix 1 + {6,6},{6,6},{6,6}, // pix 2 + {6,6},{6,6},{6,6} // pix 3 + }, + + // vertical filter[7], 1/64 units, 6 bits each + { + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 + } +}; + +/* 240 lines interlaced (NTSC or PAL 60Hz) */ +static GXRModeObj TV60hz_240i = +{ + VI_TVMODE_EURGB60_INT, // viDisplayMode + 640, // fbWidth + VI_MAX_HEIGHT_NTSC/2, // efbHeight + VI_MAX_HEIGHT_NTSC/2, // xfbHeight + 0, // viXOrigin + 0, // viYOrigin + VI_MAX_WIDTH_NTSC, // viWidth + VI_MAX_HEIGHT_NTSC, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + { + {3,2},{9,6},{3,10}, // pix 0, 3 sample points, 1/12 units, 4 bits each + {3,2},{9,6},{3,10}, // pix 1 + {9,2},{3,6},{9,10}, // pix 2 + {9,2},{3,6},{9,10} // pix 3 + }, + + // vertical filter[7], 1/64 units, 6 bits each + { + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 + } +}; + +/* 480 lines interlaced (NTSC or PAL 60Hz) */ +static GXRModeObj TV60hz_480i = +{ + VI_TVMODE_EURGB60_INT,// viDisplayMode + 640, // fbWidth + VI_MAX_HEIGHT_NTSC, // efbHeight + VI_MAX_HEIGHT_NTSC, // xfbHeight + 0, // viXOrigin + 0, // viYOrigin + VI_MAX_WIDTH_NTSC, // viWidth + VI_MAX_HEIGHT_NTSC, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + { + {6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each + {6,6},{6,6},{6,6}, // pix 1 + {6,6},{6,6},{6,6}, // pix 2 + {6,6},{6,6},{6,6} // pix 3 + }, + + // vertical filter[7], 1/64 units, 6 bits each + { + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 + } +}; + +/* TV modes pointer table */ +static GXRModeObj *tvmodes[6] = +{ + /* 60hz modes */ + &TV60hz_240p, + &TV60hz_240i, + &TV60hz_480i, + + /* 50Hz modes */ + &TV50hz_288p, + &TV50hz_288i, + &TV50hz_576i +}; + +/***************************************************************************************/ +/* GX rendering engine */ +/***************************************************************************************/ + +typedef struct tagcamera +{ + guVector pos; + guVector up; + guVector view; +} camera; + +/*** Square Matrix + This structure controls the size of the image on the screen. + Think of the output as a -80 x 80 by -60 x 60 graph. +***/ +static s16 square[] ATTRIBUTE_ALIGN (32) = +{ + /* + * X, Y, Z + * Values set are for roughly 4:3 aspect + */ + -HASPECT, VASPECT, 0, // 0 + HASPECT, VASPECT, 0, // 1 + HASPECT, -VASPECT, 0, // 2 + -HASPECT, -VASPECT, 0, // 3 +}; + +static camera cam = { + {0.0F, 0.0F, -100.0F}, + {0.0F, -1.0F, 0.0F}, + {0.0F, 0.0F, 0.0F} +}; + +/* VSYNC callback */ +static void vi_callback(u32 cnt) +{ +#ifdef LOG_TIMING + u64 current = gettime(); + if (prevtime) + { + delta_time[frame_cnt] = diff_nsec(prevtime, current); + frame_cnt = (frame_cnt + 1) % LOGSIZE; + } + prevtime = current; +#endif + + video_sync = 0; +} + +/* Vertex Rendering */ +static inline void draw_vert(u8 pos, f32 s, f32 t) +{ + GX_Position1x8(pos); + GX_TexCoord2f32(s, t); +} + +/* textured quad rendering */ +static inline void draw_square(void) +{ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + draw_vert(3, 0.0, 0.0); + draw_vert(2, 1.0, 0.0); + draw_vert(1, 1.0, 1.0); + draw_vert(0, 0.0, 1.0); + GX_End(); +} + +/* Initialize GX */ +static void gxStart(void) +{ + /*** Clear out FIFO area ***/ + memset(&gp_fifo, 0, DEFAULT_FIFO_SIZE); + + /*** GX default ***/ + GX_Init(&gp_fifo, DEFAULT_FIFO_SIZE); + GX_SetPixelFmt(GX_PF_RGB8_Z24, GX_ZC_LINEAR); + GX_SetCullMode(GX_CULL_NONE); + GX_SetClipMode(GX_CLIP_DISABLE); + GX_SetDispCopyGamma(GX_GM_1_0); + GX_SetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); + GX_SetColorUpdate(GX_TRUE); + GX_SetAlphaUpdate(GX_FALSE); + + /* Modelview */ + Mtx view; + memset (&view, 0, sizeof (Mtx)); + guLookAt(view, &cam.pos, &cam.up, &cam.view); + GX_LoadPosMtxImm(view, GX_PNMTX0); + GX_Flush(); +} + +/* Reset GX rendering */ +static void gxResetRendering(u8 type) +{ + GX_ClearVtxDesc(); + + if (type) + { + /* uses direct positionning, alpha blending & color channel (menu rendering) */ + GX_SetBlendMode(GX_BM_BLEND,GX_BL_SRCALPHA,GX_BL_INVSRCALPHA,GX_LO_CLEAR); + GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_S16, 0); + GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GX_SetVtxDesc(GX_VA_POS, GX_DIRECT); + GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GX_SetVtxDesc (GX_VA_CLR0, GX_DIRECT); + /* + Color.out = Color.rasterized*Color.texture + Alpha.out = Alpha.rasterized*Alpha.texture + */ + GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); + GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GX_SetNumTexGens(1); + GX_SetNumChans(1); + } + else + { + /* uses array positionning, no alpha blending, no color channel (video emulation) */ + GX_SetBlendMode(GX_BM_NONE,GX_BL_SRCALPHA,GX_BL_INVSRCALPHA,GX_LO_CLEAR); + GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); + GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GX_SetVtxDesc(GX_VA_POS, GX_INDEX8); + GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GX_SetArray(GX_VA_POS, square, 3 * sizeof (s16)); + /* + Color.out = Color.texture + Alpha.out = Alpha.texture + */ + GX_SetTevOp (GX_TEVSTAGE0, GX_REPLACE); + GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLORNULL); + GX_SetNumTexGens(1); + GX_SetNumChans(0); + } + + GX_Flush(); +} + +/* Reset GX rendering mode */ +static void gxResetMode(GXRModeObj *tvmode, int vfilter_enabled) +{ + Mtx44 p; + f32 yScale = GX_GetYScaleFactor(tvmode->efbHeight, tvmode->xfbHeight); + u16 xfbHeight = GX_SetDispCopyYScale(yScale); + u16 xfbWidth = VIDEO_PadFramebufferWidth(tvmode->fbWidth); + + GX_SetCopyClear((GXColor)BLACK,0x00ffffff); + GX_SetViewport(0.0F, 0.0F, tvmode->fbWidth, tvmode->efbHeight, 0.0F, 1.0F); + GX_SetScissor(0, 0, tvmode->fbWidth, tvmode->efbHeight); + GX_SetDispCopySrc(0, 0, tvmode->fbWidth, tvmode->efbHeight); + GX_SetDispCopyDst(xfbWidth, xfbHeight); + GX_SetCopyFilter(tvmode->aa, tvmode->sample_pattern, (tvmode->xfbMode == VI_XFBMODE_SF) ? GX_FALSE : vfilter_enabled, tvmode->vfilter); + GX_SetFieldMode(tvmode->field_rendering, ((tvmode->viHeight == 2 * tvmode->xfbHeight) ? GX_ENABLE : GX_DISABLE)); + guOrtho(p, tvmode->efbHeight/2, -(tvmode->efbHeight/2), -(tvmode->fbWidth/2), tvmode->fbWidth/2, 100, 1000); + GX_LoadProjectionMtx(p, GX_ORTHOGRAPHIC); + GX_Flush(); +} + +/* Update Aspect Ratio */ +static void gxSetAspectRatio(int *xscale, int *yscale) +{ + /* Vertical Scaling is disabled by default */ + *yscale = (bitmap.viewport.h + (2 * bitmap.viewport.y)) / 2; + + /* Original aspect ratio */ + if (config.aspect) + { + /* Adjust vertical scaling when input & output video heights are different */ + if (vdp_pal && (!gc_pal || config.render)) + { + *yscale = *yscale * VI_MAX_HEIGHT_NTSC / VI_MAX_HEIGHT_PAL; + } + else if (!vdp_pal && gc_pal && !config.render) + { + *yscale = *yscale * VI_MAX_HEIGHT_PAL / VI_MAX_HEIGHT_NTSC; + } + + /* Horizontal Scaling */ + /* Wii/Gamecube pixel clock = 13.5 Mhz */ + /* "H32" pixel clock = Master Clock / 10 = 5.3693175 Mhz (NTSC) or 5.3203424 (PAL) */ + /* "H40" pixel clock = Master Clock / 8 = 6,711646875 Mhz (NTSC) or 6,650428 Mhz (PAL) */ + if (config.overscan & 2) + { + /* Horizontal borders are emulated */ + if (reg[12] & 1) + { + /* 348 "H40" pixels = 348 * Wii/GC pixel clock / "H40" pixel clock = approx. 700 (NTSC) or 707 (PAL) Wii/GC pixels */ + *xscale = (system_clock == MCLOCK_NTSC) ? 350 : 354; + } + else + { + /* 284 "H32" pixels = 284 * Wii/GC pixel clock / "H40" pixel clock = approx. 714 (NTSC) or 721 (PAL) Wii/GC pixels */ + *xscale = (system_clock == MCLOCK_NTSC) ? 357 : 361; + } + } + else + { + /* Horizontal borders are simulated */ + if ((system_hw == SYSTEM_GG) && !config.gg_extra) + { + /* 160 "H32" pixels = 160 * Wii/GC pixel clock / "H32" pixel clock = approx. 403 Wii/GC pixels (NTSC only) */ + *xscale = 202; + } + else + { + /* 320 "H40" pixels = 256 "H32" pixels = 256 * Wii/GC pixel clock / "H32" pixel clock = approx. 644 (NTSC) or 650 (PAL) Wii/GC pixels */ + *xscale = (system_clock == MCLOCK_NTSC) ? 322 : 325; + } + } + + /* Aspect correction for widescreen TV */ + if (config.aspect & 2) + { + /* Keep 4:3 aspect ratio on 16:9 output */ + *xscale = (*xscale * 3) / 4; + } + } + + /* Manual aspect ratio */ + else + { + /* By default, disable horizontal scaling */ + *xscale = bitmap.viewport.w + (2 * bitmap.viewport.x); + + /* Keep original aspect ratio in H32 modes */ + if (!(reg[12] & 1)) + { + *xscale = (*xscale * 320) / 256; + } + + /* Game Gear specific: if borders are disabled, upscale to fullscreen */ + if ((system_hw == SYSTEM_GG) && !config.gg_extra) + { + if (!(config.overscan & 1)) + { + /* Active area height = approx. 224 non-interlaced lines (60hz) */ + *yscale = 112; + } + + if (!(config.overscan & 2)) + { + /* Active area width = approx. 640 pixels */ + *xscale = 320; + } + } + + /* By default, keep NTSC aspect ratio */ + if (gc_pal && !config.render) + { + /* Upscale PAL output */ + *yscale = *yscale * VI_MAX_HEIGHT_PAL / VI_MAX_HEIGHT_NTSC; + } + + /* Add user scaling */ + *xscale += config.xscale; + *yscale += config.yscale; + } +} + +/* Reset GX/VI hardware scaler */ +static void gxResetScaler(u32 width) +{ + int xscale = 0; + int yscale = 0; + int offset = 0; + + /* retrieve screen aspect ratio */ + gxSetAspectRatio(&xscale, &yscale); + + /* default EFB width */ + rmode->fbWidth = 640; + + /* no filtering, disable GX horizontal scaling */ + if (!config.bilinear && !config.ntsc) + { + if ((width <= 320) && (width <= xscale)) + rmode->fbWidth = width * 2; + else if (width <= 640) + rmode->fbWidth = width; + } + + /* configure VI width */ + if ((xscale * 2) > rmode->fbWidth) + { + /* max width = 720 pixels */ + if (xscale > 360) + { + /* save offset for later */ + offset = ((xscale - 360) * rmode->fbWidth) / rmode->viWidth; + + /* maximal width */ + xscale = 360; + } + + /* enable VI upscaling */ + rmode->viWidth = xscale * 2; + rmode->viXOrigin = (720 - (xscale * 2)) / 2; + + /* default GX horizontal scaling */ + xscale = (rmode->fbWidth / 2); + + /* handle additional upscaling */ + if (offset) + { + /* no filtering, reduce EFB width to increase VI upscaling */ + if (!config.bilinear && !config.ntsc) + rmode->fbWidth -= (offset * 2); + + /* increase GX horizontal scaling */ + else + xscale += offset; + } + } + else + { + /* VI horizontal scaling is disabled */ + rmode->viWidth = rmode->fbWidth; + rmode->viXOrigin = (720 - rmode->fbWidth) / 2; + } + + /* Adjust screen position */ + int xshift = (config.xshift * rmode->fbWidth) / rmode->viWidth; + int yshift = (config.yshift * rmode->efbHeight) / rmode->viHeight; + + /* Double Resolution modes (480i/576i/480p) */ + if (config.render) + { + yscale = yscale * 2; + } + + /* Set GX scaler (Vertex Position matrix) */ + square[6] = square[3] = xshift + xscale; + square[0] = square[9] = xshift - xscale; + square[4] = square[1] = yshift + yscale; + square[7] = square[10] = yshift - yscale; + DCFlushRange(square, 32); + GX_InvVtxCache(); +} + +static void gxDrawCrosshair(gx_texture *texture, int x, int y) +{ + /* adjust texture dimensions to XFB->VI scaling */ + int w = (texture->width * rmode->fbWidth) / (rmode->viWidth); + int h = (texture->height * rmode->efbHeight) / (rmode->viHeight); + + /* Aspect correction for widescreen TV */ + if (config.aspect & 2) w = (w * 3) / 4; + + /* EFB scale & shift */ + int xwidth = square[3] - square[9]; + int ywidth = square[4] - square[10]; + + /* adjust texture coordinates to EFB */ + x = (((x + bitmap.viewport.x) * xwidth) / vwidth) + square[9] - w/2; + y = (((y + bitmap.viewport.y) * ywidth) / vheight) + square[10] - h/2; + + /* reset GX rendering */ + gxResetRendering(1); + + /* load texture object */ + GXTexObj texObj; + GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); + GX_LoadTexObj(&texObj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* Draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(x,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 1.0); + GX_Position2s16(x+w,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(x+w,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(x,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 0.0); + GX_End(); + + /* restore GX rendering */ + gxResetRendering(0); + + /* restore texture object */ + GXTexObj texobj; + GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + if (!config.bilinear) + { + GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,0.0,10.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); + } + GX_LoadTexObj(&texobj, GX_TEXMAP0); + GX_InvalidateTexAll(); +} + +static void gxDrawCdLeds(gx_texture *texture_l, gx_texture *texture_r) +{ + /* adjust texture dimensions to XFB->VI scaling */ + int w = (texture_l->width * rmode->fbWidth) / (rmode->viWidth); + int h = (texture_l->height * rmode->efbHeight) / (rmode->viHeight); + + /* Aspect correction for widescreen TV */ + if (config.aspect & 2) w = (w * 3) / 4; + + /* EFB scale & shift */ + int xwidth = square[3] - square[9]; + int ywidth = square[4] - square[10]; + + /* adjust texture coordinates to EFB */ + int xl = ((bitmap.viewport.x * xwidth) / vwidth) + square[9] + 8; + int xr = (((bitmap.viewport.x + bitmap.viewport.w) * xwidth) / vwidth) + square[9] - 8 - w; + int y = (((bitmap.viewport.y + bitmap.viewport.h - 4) * ywidth) / vheight) + square[10] - h; + + /* reset GX rendering */ + gxResetRendering(1); + + /* load left screen texture */ + GXTexObj texObj; + GX_InitTexObj(&texObj, texture_l->data, texture_l->width, texture_l->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); + GX_LoadTexObj(&texObj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* Draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(xl,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 1.0); + GX_Position2s16(xl+w,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(xl+w,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(xl,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 0.0); + GX_End(); + + /* load right screen texture */ + GX_InitTexObj(&texObj, texture_r->data, texture_r->width, texture_r->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); + GX_LoadTexObj(&texObj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* Draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(xr,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 1.0); + GX_Position2s16(xr+w,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(xr+w,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(xr,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 0.0); + GX_End(); + + /* restore GX rendering */ + gxResetRendering(0); + + /* restore texture object */ + GXTexObj texobj; + GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + if (!config.bilinear) + { + GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,0.0,10.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); + } + GX_LoadTexObj(&texobj, GX_TEXMAP0); + GX_InvalidateTexAll(); +} + +void gxDrawRectangle(s32 x, s32 y, s32 w, s32 h, u8 alpha, GXColor color) +{ + /* GX only use Color channel for rendering */ + GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR); + GX_SetVtxDesc (GX_VA_TEX0, GX_NONE); + GX_Flush(); + + /* vertex coordinate */ + x -= (vmode->fbWidth/2); + y -= (vmode->efbHeight/2); + + /* draw colored quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(x,y+h); + GX_Color4u8(color.r,color.g,color.b,alpha); + GX_Position2s16(x+w,y+h); + GX_Color4u8(color.r,color.g,color.b,alpha); + GX_Position2s16(x+w,y); + GX_Color4u8(color.r,color.g,color.b,alpha); + GX_Position2s16(x,y); + GX_Color4u8(color.r,color.g,color.b,alpha); + GX_End(); + GX_DrawDone(); + + /* restore GX rendering */ + GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); + GX_Flush(); +} + +void gxDrawTexture(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha) +{ + if (!texture) return; + if (texture->data) + { + /* load texture object */ + GXTexObj texObj; + GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); /* does this really change anything ? */ + GX_LoadTexObj(&texObj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* vertex coordinate */ + x -= (vmode->fbWidth/2); + y -= (vmode->efbHeight/2); + + /* draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(x,y+h); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, 1.0); + GX_Position2s16(x+w,y+h); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(x+w,y); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(x,y); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, 0.0); + GX_End(); + GX_DrawDone(); + } +} + +void gxDrawTextureRotate(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, f32 angle, u8 alpha) +{ + if (!texture) return; + if (texture->data) + { + /* load texture object */ + GXTexObj texObj; + GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_InitTexObjLOD(&texObj,GX_LINEAR,GX_LIN_MIP_LIN,0.0,10.0,0.0,GX_FALSE,GX_TRUE,GX_ANISO_4); + GX_LoadTexObj(&texObj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* vertex coordinate */ + x -= (vmode->fbWidth/2); + y -= (vmode->efbHeight/2); + + /* Modelview rotation */ + Mtx m,mv; + guVector axis = (guVector) {0,0,1}; + guLookAt(mv, &cam.pos, &cam.up, &cam.view); + guMtxRotAxisDeg (m, &axis, angle); + guMtxTransApply(m,m, x+w/2,y+h/2,0); + guMtxConcat(mv,m,mv); + GX_LoadPosMtxImm(mv, GX_PNMTX0); + GX_Flush(); + + /* draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(-w/2,-h/2); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, 0.0); + GX_Position2s16(w/2,-h/2); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(w/2,h/2); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(-w/2,h/2); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, 1.0); + GX_End(); + GX_DrawDone(); + + /* restore default Modelview */ + guLookAt(mv, &cam.pos, &cam.up, &cam.view); + GX_LoadPosMtxImm(mv, GX_PNMTX0); + GX_Flush(); + } +} + +void gxDrawTextureRepeat(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha) +{ + if (!texture) return; + if (texture->data) + { + /* load texture object */ + GXTexObj texObj; + GX_InitTexObj(&texObj, texture->data, texture->width, texture->height, GX_TF_RGBA8, GX_REPEAT, GX_REPEAT, GX_FALSE); + GX_LoadTexObj(&texObj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* vertex coordinate */ + x -= (vmode->fbWidth/2); + y -= (vmode->efbHeight/2); + + /* texture coordinates */ + f32 s = (f32)w / (f32)texture->width; + f32 t = (f32)h / (f32)texture->height; + + /* draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(x,y+h); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, t); + GX_Position2s16(x+w,y+h); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(s, t); + GX_Position2s16(x+w,y); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(s, 0.0); + GX_Position2s16(x,y); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, 0.0); + GX_End(); + GX_DrawDone(); + } +} + +void gxDrawScreenshot(u8 alpha) +{ + if (!rmode) return; + + /* get current game screen texture */ + GXTexObj texobj; + GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_LoadTexObj(&texobj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* get current aspect ratio */ + int xscale,yscale; + gxSetAspectRatio(&xscale, &yscale); + + /* adjust horizontal scaling */ + xscale = (xscale * vmode->fbWidth) / vmode->viWidth; + + /* adjust screen position */ + int xshift = (config.xshift * vmode->fbWidth) / vmode->viWidth; + int yshift = (config.yshift * vmode->efbHeight) / vmode->viHeight; + + /* set vertices position & size */ + s32 x = xshift - xscale; + s32 y = yshift - (yscale * 2); + s32 w = xscale * 2; + s32 h = yscale * 4; + + /* black out surrounding area if necessary (Game Gear without borders) */ + if ((w < 640) || (h < 480)) + { + gxDrawRectangle(0, 0, 640, 480, 255, (GXColor)BLACK); + } + + /* draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(x,y+h); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, 1.0); + GX_Position2s16(x+w,y+h); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(x+w,y); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(x,y); + GX_Color4u8(0xff,0xff,0xff,alpha); + GX_TexCoord2f32(0.0, 0.0); + GX_End(); + GX_DrawDone(); +} + +void gxCopyScreenshot(gx_texture *texture) +{ + /* retrieve gamescreen texture */ + GXTexObj texobj; + GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GX_LoadTexObj(&texobj, GX_TEXMAP0); + GX_InvalidateTexAll(); + + /* scale texture to EFB width */ + s32 w = ((bitmap.viewport.w + 2*bitmap.viewport.x) * 640) / bitmap.viewport.w; + s32 h = (bitmap.viewport.h + 2*bitmap.viewport.y) * 2; + s32 x = -w/2; + s32 y = -(240+ 2*bitmap.viewport.y); + + /* black out surrounding area if necessary (Game Gear without borders) */ + if ((w < 640) || (h < 480)) + { + gxDrawRectangle(0, 0, 640, 480, 255, (GXColor)BLACK); + } + + /* draw textured quad */ + GX_Begin(GX_QUADS, GX_VTXFMT0, 4); + GX_Position2s16(x,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 1.0); + GX_Position2s16(x+w,y+h); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 1.0); + GX_Position2s16(x+w,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(1.0, 0.0); + GX_Position2s16(x,y); + GX_Color4u8(0xff,0xff,0xff,0xff); + GX_TexCoord2f32(0.0, 0.0); + GX_End(); + + /* copy EFB to texture */ + texture->format = GX_TF_RGBA8; + texture->width = 320; + texture->height = bitmap.viewport.h; + texture->data = screenshot; + GX_SetTexCopySrc(0, 0, texture->width * 2, texture->height * 2); + GX_SetTexCopyDst(texture->width, texture->height, texture->format, GX_TRUE); + GX_DrawDone(); + GX_CopyTex(texture->data, GX_TRUE); + GX_Flush(); + + /* wait for copy operation to finish */ + /* GX_PixModeSync is only useful if GX_ command follows */ + /* we use dummy GX commands to stall CPU execution */ + GX_PixModeSync(); + GX_LoadTexObj(&texobj, GX_TEXMAP0); + GX_InvalidateTexAll(); + GX_Flush(); + DCFlushRange(texture->data, texture->width * texture->height * 4); +} + +/* Take Screenshot */ +void gxSaveScreenshot(char *filename) +{ + /* capture screenshot into a texture */ + gx_texture texture; + gxCopyScreenshot(&texture); + + /* open PNG file */ + FILE *f = fopen(filename,"wb"); + if (f) + { + /* encode screenshot into PNG file */ + gxTextureWritePNG(&texture,f); + fclose(f); + } +} + +void gxSetScreen(void) +{ + GX_DrawDone(); + GX_CopyDisp(xfb[whichfb], GX_FALSE); + GX_Flush(); + VIDEO_SetNextFramebuffer (xfb[whichfb]); + VIDEO_Flush (); + VIDEO_WaitVSync (); + gx_input_UpdateMenu(); +} + +void gxClearScreen(GXColor color) +{ + whichfb ^= 1; + GX_SetCopyClear(color,0x00ffffff); + GX_CopyDisp(xfb[whichfb], GX_TRUE); + GX_Flush(); +} + +/***************************************************************************************/ +/* GX Texture <-> LibPNG routines */ +/***************************************************************************************/ + +/* libpng read callback function */ +static void png_read_from_mem (png_structp png_ptr, png_bytep data, png_size_t length) +{ + png_image *image = (png_image *)png_get_io_ptr(png_ptr); + + /* copy data from image buffer */ + memcpy (data, image->buffer + image->offset, length); + + /* advance in the file */ + image->offset += length; +} + +/* convert PNG image (from file or data buffer) into RGBA8 texture */ +gx_texture *gxTextureOpenPNG(const u8 *png_data, FILE *png_file) +{ + int i; + + /* create a png read struct */ + png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,NULL,NULL,NULL); + if (!png_ptr) return NULL; + + /* create a png info struct */ + png_infop info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) + { + png_destroy_read_struct(&png_ptr,NULL,NULL); + return NULL; + } + + if (png_data) + { + /* init PNG image structure */ + png_image image; + image.buffer = (u8 *) png_data; + image.offset = 0; + + /* set callback for the read function */ + png_set_read_fn(png_ptr,(png_voidp *)(&image),png_read_from_mem); + } + else if (png_file) + { + /* check for valid magic number */ + png_byte magic[8]; + if (fread (magic, 1, 8, png_file) != 8) + { + png_destroy_read_struct(&png_ptr,&info_ptr,NULL); + return NULL; + } + + if (png_sig_cmp (magic, 0, 8)) + { + png_destroy_read_struct(&png_ptr,&info_ptr,NULL); + return NULL; + } + + /* set IO callback for read function */ + png_init_io (png_ptr, png_file); + png_set_sig_bytes (png_ptr, 8); + } + else + { + png_destroy_read_struct(&png_ptr,&info_ptr,NULL); + return NULL; + } + + /* read png info */ + png_read_info(png_ptr,info_ptr); + + /* retrieve image information */ + u32 width = png_get_image_width(png_ptr,info_ptr); + u32 height = png_get_image_height(png_ptr,info_ptr); + u32 bit_depth = png_get_bit_depth(png_ptr,info_ptr); + u32 color_type = png_get_color_type(png_ptr,info_ptr); + + /* ensure PNG file is in the supported format */ + if (png_file) + { + /* support for RGBA8 textures ONLY !*/ + if ((color_type != PNG_COLOR_TYPE_RGB_ALPHA) || (bit_depth != 8)) + { + png_destroy_read_struct(&png_ptr, &info_ptr,NULL); + return NULL; + } + + /* 4x4 tiles are required */ + if ((width%4) || (height%4)) + { + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + return NULL; + } + } + + /* allocate memory to store raw image data */ + u32 stride = width << 2; + u8 *img_data = memalign (32, stride * height); + if (!img_data) + { + png_destroy_read_struct(&png_ptr,&info_ptr,NULL); + return NULL; + } + + /* allocate row pointer data */ + png_bytep *row_pointers = (png_bytep *)memalign (32, sizeof (png_bytep) * height); + if (!row_pointers) + { + free (img_data); + png_destroy_read_struct(&png_ptr,&info_ptr,NULL); + return NULL; + } + + /* store raw image data */ + for (i = 0; i < height; i++) + { + row_pointers[i] = img_data + (i * stride); + } + + /* decode image */ + png_read_image(png_ptr, row_pointers); + + /* finish decompression and release memory */ + png_read_end(png_ptr, NULL); + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + free(row_pointers); + + /* initialize texture */ + gx_texture *texture = (gx_texture *)memalign(32, sizeof(gx_texture)); + if (!texture) + { + free (img_data); + return NULL; + } + + /* initialize texture data */ + texture->data = memalign(32, stride * height); + if (!texture->data) + { + free (img_data); + free(texture); + return NULL; + } + + memset(texture->data, 0, stride * height); + texture->width = width; + texture->height = height; + texture->format = GX_TF_RGBA8; + + /* encode to GX_TF_RGBA8 format (4x4 pixels paired titles) */ + u16 *dst_ar = (u16 *)(texture->data); + u16 *dst_gb = (u16 *)(texture->data + 32); + u32 *src1 = (u32 *)(img_data); + u32 *src2 = (u32 *)(img_data + stride); + u32 *src3 = (u32 *)(img_data + 2*stride); + u32 *src4 = (u32 *)(img_data + 3*stride); + u32 pixel,h,w; + + for (h=0; h> 24) & 0x00ff); + *dst_gb++= (pixel >> 8) & 0xffff; + } + + /* line N + 1 (4 pixels) */ + for (i=0; i<4; i++) + { + pixel = *src2++; + *dst_ar++= ((pixel << 8) & 0xff00) | ((pixel >> 24) & 0x00ff); + *dst_gb++= (pixel >> 8) & 0xffff; + } + + /* line N + 2 (4 pixels) */ + for (i=0; i<4; i++) + { + pixel = *src3++; + *dst_ar++= ((pixel << 8) & 0xff00) | ((pixel >> 24) & 0x00ff); + *dst_gb++= (pixel >> 8) & 0xffff; + } + + /* line N + 3 (4 pixels) */ + for (i=0; i<4; i++) + { + pixel = *src4++; + *dst_ar++= ((pixel << 8) & 0xff00) | ((pixel >> 24) & 0x00ff); + *dst_gb++= (pixel >> 8) & 0xffff; + } + + /* next paired tiles */ + dst_ar += 16; + dst_gb += 16; + } + + /* next 4 lines */ + src1 = src4; + src2 = src1 + width; + src3 = src2 + width; + src4 = src3 + width; + } + + /* release memory */ + free(img_data); + + /* flush texture data from cache */ + DCFlushRange(texture->data, height * stride); + + return texture; +} + +/* Write RGBA8 Texture to PNG file */ +void gxTextureWritePNG(gx_texture *texture, FILE *png_file) +{ + /* allocate PNG data buffer */ + u8 *img_data = (u8 *)memalign(32, texture->width * texture->height * 4); + if(!img_data) return; + + /* decode GX_TF_RGBA8 format (4x4 pixels paired titles) */ + u16 *ar = (u16 *)(texture->data); + u16 *gb = (u16 *)(texture->data + 32); + u32 *dst1 = (u32 *)(img_data); + u32 *dst2 = dst1 + texture->width; + u32 *dst3 = dst2 + texture->width; + u32 *dst4 = dst3 + texture->width; + u32 i,h,w,pixel; + + for (h=0; hheight; h+=4) + { + for (w=0; wwidth; w+=4) + { + /* line N (4 pixels) */ + for (i=0; i<4; i++) + { + pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); + *dst1++ = pixel; + ar++; + gb++; + } + + /* line N + 1 (4 pixels) */ + for (i=0; i<4; i++) + { + pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); + *dst2++ = pixel; + ar++; + gb++; + } + + /* line N + 2 (4 pixels) */ + for (i=0; i<4; i++) + { + pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); + *dst3++ = pixel; + ar++; + gb++; + } + + /* line N + 3 (4 pixels) */ + for (i=0; i<4; i++) + { + pixel = ((*ar & 0xff) << 24) | (*gb << 8) | ((*ar & 0xff00) >> 8); + *dst4++ = pixel; + ar++; + gb++; + } + + /* next paired tiles */ + ar += 16; + gb += 16; + } + + /* next 4 lines */ + dst1 = dst4; + dst2 = dst1 + texture->width; + dst3 = dst2 + texture->width; + dst4 = dst3 + texture->width; + } + + /* create a png write struct */ + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if(!png_ptr) + { + free(img_data); + return; + } + + /* create a png info struct */ + png_infop info_ptr = png_create_info_struct (png_ptr); + if (!info_ptr) + { + free(img_data); + png_destroy_write_struct(&png_ptr, NULL); + return; + } + + /* set IO callback for the write function */ + png_init_io(png_ptr, png_file); + + /* set PNG file properties */ + png_set_IHDR(png_ptr, info_ptr, texture->width, texture->height, 8, PNG_COLOR_TYPE_RGB_ALPHA, + PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + /* allocate row pointer data */ + png_bytep *row_pointers = (png_bytep *)memalign (32, sizeof (png_bytep) * texture->height); + if (!row_pointers) + { + free (img_data); + png_destroy_write_struct(&png_ptr, &info_ptr); + return; + } + + /* store raw image data */ + for (i = 0; i < texture->height; i++) + { + row_pointers[i] = img_data + (i * texture->width * 4); + } + + /* configure libpng for image data */ + png_set_rows(png_ptr,info_ptr,row_pointers); + + /* write data to PNG file */ + png_write_png(png_ptr,info_ptr,PNG_TRANSFORM_IDENTITY,NULL); + + /* finish compression and release memory */ + png_write_end(png_ptr, NULL); + free(row_pointers); + free(img_data); + png_destroy_write_struct(&png_ptr, &info_ptr); +} + + +void gxTextureClose(gx_texture **p_texture) +{ + gx_texture *texture = *p_texture; + + if (texture) + { + if (texture->data) free(texture->data); + free(texture); + *p_texture = NULL; + } +} + + +/***************************************************************************************/ +/* VIDEO engine */ +/***************************************************************************************/ + +/* Emulation mode -> Menu mode */ +void gx_video_Stop(void) +{ + /* wait for next VBLANK */ + VIDEO_WaitVSync (); + + /* unallocate NTSC filters */ + if (sms_ntsc) free(sms_ntsc); + if (md_ntsc) free(md_ntsc); + sms_ntsc = NULL; + md_ntsc = NULL; + + /* lightgun textures */ + gxTextureClose(&crosshair[0]); + gxTextureClose(&crosshair[1]); + + /* CD leds textures */ + gxTextureClose(&cd_leds[0][0]); + gxTextureClose(&cd_leds[0][1]); + gxTextureClose(&cd_leds[1][0]); + gxTextureClose(&cd_leds[1][1]); + + /* GX menu rendering */ + gxResetRendering(1); + gxResetMode(vmode, GX_TRUE); + + /* render game snapshot */ + gxClearScreen((GXColor)BLACK); + gxDrawScreenshot(0xff); + + /* default VI settings */ + VIDEO_SetPostRetraceCallback(NULL); +#ifdef HW_RVL + VIDEO_SetTrapFilter(1); + VIDEO_SetGamma(VI_GM_1_0); +#endif + + /* adjust TV width */ + vmode->viWidth = config.screen_w; + vmode->viXOrigin = (VI_MAX_WIDTH_NTSC - vmode->viWidth)/2; + VIDEO_Configure(vmode); + + /* wait for VSYNC */ + gxSetScreen(); +} + +/* Menu mode -> Emulation mode */ +void gx_video_Start(void) +{ +#ifdef HW_RVL + VIDEO_SetTrapFilter(config.trap); + VIDEO_SetGamma((int)(config.gamma * 10.0)); +#endif + + /* TV mode */ + if ((config.tv_mode == 1) || ((config.tv_mode == 2) && vdp_pal)) + { + /* 50 Hz */ + gc_pal = 1; + } + else + { + /* 60 Hz */ + gc_pal = 0; + } + + /* When VSYNC is set to AUTO & console TV mode matches emulated video mode, emulation is synchronized with video hardware as well */ + if (config.vsync && (gc_pal == vdp_pal)) + { + /* VSYNC callback */ + VIDEO_SetPostRetraceCallback(vi_callback); + VIDEO_Flush(); + } + + /* set interlaced or progressive video mode */ + if (config.render == 2) + { + tvmodes[2]->viTVMode = VI_TVMODE_NTSC_PROG; + tvmodes[2]->xfbMode = VI_XFBMODE_SF; + } + else if (config.render == 1) + { + tvmodes[2]->viTVMode = tvmodes[0]->viTVMode & ~3; + tvmodes[2]->xfbMode = VI_XFBMODE_DF; + } + + /* update horizontal border width */ + if ((system_hw == SYSTEM_GG) && !config.gg_extra) + { + bitmap.viewport.x = (config.overscan & 2) ? 14 : -48; + } + else + { + bitmap.viewport.x = (config.overscan & 2) * 7; + } + + /* force viewport update */ + bitmap.viewport.changed = 3; + + /* NTSC filter */ + if (config.ntsc) + { + /* allocate filters */ + if (!sms_ntsc) + { + sms_ntsc = (sms_ntsc_t *)memalign(32,sizeof(sms_ntsc_t)); + } + if (!md_ntsc) + { + md_ntsc = (md_ntsc_t *)memalign(32,sizeof(md_ntsc_t)); + } + + /* setup filters default configuration */ + switch (config.ntsc) + { + case 1: + sms_ntsc_init(sms_ntsc, &sms_ntsc_composite); + md_ntsc_init(md_ntsc, &md_ntsc_composite); + break; + case 2: + sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo); + md_ntsc_init(md_ntsc, &md_ntsc_svideo); + break; + case 3: + sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb); + md_ntsc_init(md_ntsc, &md_ntsc_rgb); + break; + } + } + + /* lightgun textures */ + int i, player = 0; + for (i=0; i= 0) + { + if ((i == 0) || ((i == 4) && (input.system[1] != SYSTEM_LIGHTPHASER))) + { + /* Lightgun #1 */ + if (config.gun_cursor[0]) + { + crosshair[0] = gxTextureOpenPNG(Crosshair_p1_png,0); + } + } + else + { + /* Lightgun #2 */ + if (config.gun_cursor[1]) + { + crosshair[1] = gxTextureOpenPNG(Crosshair_p2_png,0); + } + } + } + } + + /* Check for any emulated device */ + if (input.dev[i] != NO_DEVICE) + { + /* increment player index */ + player++; + } + } + + /* CD leds textures */ + if (system_hw == SYSTEM_MCD) + { + if (config.cd_leds) + { + cd_leds[0][0] = gxTextureOpenPNG(CD_access_off_png,0); + cd_leds[0][1] = gxTextureOpenPNG(CD_access_on_png,0); + cd_leds[1][0] = gxTextureOpenPNG(CD_ready_off_png,0); + cd_leds[1][1] = gxTextureOpenPNG(CD_ready_on_png,0); + } + } + + /* GX emulation rendering */ + gxResetRendering(0); + + /* resynchronize emulation with VSYNC */ + video_sync = 0; + VIDEO_WaitVSync(); +} + +/* GX render update */ +int gx_video_Update(void) +{ + if (video_sync) return NO_SYNC; + + video_sync = config.vsync && (gc_pal == vdp_pal); + + /* check if display has changed during frame */ + if (bitmap.viewport.changed & 1) + { + /* update texture size */ + vwidth = bitmap.viewport.w + (2 * bitmap.viewport.x); + vheight = bitmap.viewport.h + (2 * bitmap.viewport.y); + + /* interlaced mode */ + if (config.render && interlaced) + { + vheight = vheight << 1; + } + + /* ntsc filter */ + if (config.ntsc) + { + vwidth = (reg[12] & 1) ? MD_NTSC_OUT_WIDTH(vwidth) : SMS_NTSC_OUT_WIDTH(vwidth); + + /* texel width must remain multiple of 4 */ + vwidth = (vwidth >> 2) << 2; + } + + /* initialize texture object */ + GXTexObj texobj; + GX_InitTexObj(&texobj, texturemem, vwidth, vheight, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + + /* configure texture filtering */ + if (!config.bilinear) + { + GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,0.0,10.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); + } + + /* load texture object */ + GX_LoadTexObj(&texobj, GX_TEXMAP0); + + /* update rendering mode */ + if (config.render) + { + rmode = tvmodes[gc_pal*3 + 2]; + } + else + { + rmode = tvmodes[gc_pal*3 + interlaced]; + } + + /* update aspect ratio */ + gxResetScaler(vwidth); + + /* update GX rendering mode */ + gxResetMode(rmode, config.vfilter); + + /* update VI mode */ + VIDEO_Configure(rmode); + } + + /* texture is now directly mapped by the line renderer */ + + /* force texture cache update */ + DCFlushRange(texturemem, TEX_SIZE); + GX_InvalidateTexAll(); + + /* render textured quad */ + draw_square(); + + /* lightgun # 1 screen mark */ + if (crosshair[0]) + { + if (input.system[0] == SYSTEM_LIGHTPHASER) + { + gxDrawCrosshair(crosshair[0], input.analog[0][0],input.analog[0][1]); + } + else + { + gxDrawCrosshair(crosshair[0], input.analog[4][0],input.analog[4][1]); + } + } + + /* lightgun #2 screen mark */ + if (crosshair[1]) + { + if (input.system[1] == SYSTEM_LIGHTPHASER) + { + gxDrawCrosshair(crosshair[1], input.analog[4][0],input.analog[4][1]); + } + else + { + gxDrawCrosshair(crosshair[1], input.analog[5][0],input.analog[5][1]); + } + } + + /* CD LEDS */ + if (cd_leds[1][1]) + { + /* CD LEDS status */ + u8 mode = scd.regs[0x06 >> 1].byte.h; + gxDrawCdLeds(cd_leds[1][(mode >> 1) & 1], cd_leds[0][mode & 1]); + } + + /* swap XFB */ + whichfb ^= 1; + + /* copy EFB to XFB */ + GX_DrawDone(); + GX_CopyDisp(xfb[whichfb], GX_TRUE); + GX_Flush(); + + /* XFB is ready to be displayed */ + VIDEO_SetNextFramebuffer(xfb[whichfb]); + VIDEO_Flush(); + + if (bitmap.viewport.changed & 1) + { + /* clear update flags */ + bitmap.viewport.changed &= ~1; + + /* field synchronization */ + VIDEO_WaitVSync(); + if (rmode->viTVMode & VI_NON_INTERLACE) + { + VIDEO_WaitVSync(); + } + else while (VIDEO_GetNextField() != odd_frame) + { + VIDEO_WaitVSync(); + } + + /* Audio DMA need to be resynchronized with VSYNC */ + audioStarted = 0; + } + + return SYNC_VIDEO; +} + +/* Initialize VIDEO subsystem */ +void gx_video_Init(void) +{ + /* + * Before doing anything else under libogc, + * Call VIDEO_Init + */ + VIDEO_Init(); + + /* Get the current VIDEO mode then : + - set menu video mode (480p/576p/480i/576i) + - set emulator rendering 60hz TV modes (PAL/MPAL/NTSC/EURGB60) + */ + vmode = VIDEO_GetPreferredMode(NULL); + + /* Adjust display settings */ + switch (vmode->viTVMode >> 2) + { + case VI_PAL: /* 576 lines scaled (PAL 50Hz) */ + TV60hz_240p.viTVMode = VI_TVMODE_EURGB60_DS; + TV60hz_240i.viTVMode = VI_TVMODE_EURGB60_INT; + TV60hz_480i.viTVMode = VI_TVMODE_EURGB60_INT; + break; + + default: /* 480 lines (NTSC, MPAL or PAL 60Hz) */ + TV60hz_240p.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_NON_INTERLACE); + TV60hz_240i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE); + TV60hz_480i.viTVMode = VI_TVMODE(vmode->viTVMode >> 2, VI_INTERLACE); + break; + } + + /* Configure VI */ + VIDEO_Configure (vmode); + + /* Configure the framebuffers (double-buffering) */ + xfb[0] = (u32 *) MEM_K0_TO_K1((u32 *) SYS_AllocateFramebuffer(&TV50hz_576i)); + xfb[1] = (u32 *) MEM_K0_TO_K1((u32 *) SYS_AllocateFramebuffer(&TV50hz_576i)); + + /* Define a console */ + console_init(xfb[0], 20, 64, 640, 574, 574 * 2); + + /* Clear framebuffers to black */ + VIDEO_ClearFrameBuffer(vmode, xfb[0], COLOR_BLACK); + VIDEO_ClearFrameBuffer(vmode, xfb[1], COLOR_BLACK); + + /* Set the framebuffer to be displayed at next VBlank */ + VIDEO_SetNextFramebuffer(xfb[0]); + + /* Enable Video Interface */ + VIDEO_SetBlack(FALSE); + + /* Update VIDEO settings for next VBlank */ + VIDEO_Flush(); + + /* Wait for VBlank */ + VIDEO_WaitVSync(); + VIDEO_WaitVSync(); + + /* Initialize GX */ + gxStart(); + gxResetRendering(1); + gxResetMode(vmode, GX_TRUE); + + /* initialize FONT */ + FONT_Init(); + + /* Initialize textures */ + texturemem = memalign(32, TEX_SIZE); + screenshot = memalign(32, HASPECT*VASPECT*4); +} + +void gx_video_Shutdown(void) +{ + if (texturemem) free(texturemem); + if (screenshot) free(screenshot); + FONT_Shutdown(); + VIDEO_ClearFrameBuffer(vmode, xfb[whichfb], COLOR_BLACK); + VIDEO_Flush(); + VIDEO_WaitVSync(); +} + +/* Custom NTSC blitters */ +typedef unsigned short sms_ntsc_out_t; +typedef unsigned short md_ntsc_out_t; + +void sms_ntsc_blit( sms_ntsc_t const* ntsc, SMS_NTSC_IN_T const* table, unsigned char* input, + int in_width, int vline) +{ + int const chunk_count = in_width / sms_ntsc_in_chunk; + + /* handle extra 0, 1, or 2 pixels by placing them at beginning of row */ + int const in_extra = in_width - chunk_count * sms_ntsc_in_chunk; + unsigned const extra2 = (unsigned) -(in_extra >> 1 & 1); /* (unsigned) -1 = ~0 */ + unsigned const extra1 = (unsigned) -(in_extra & 1) | extra2; + + /* use palette entry 0 for unused pixels */ + SMS_NTSC_IN_T border = table[0]; + + SMS_NTSC_BEGIN_ROW( ntsc, border, + (SMS_NTSC_ADJ_IN( table[input[0]] )) & extra2, + (SMS_NTSC_ADJ_IN( table[input[extra2 & 1]] )) & extra1 ); + + /* directly fill the RGB565 texture */ + /* one tile is 32 byte = 4x4 pixels */ + /* tiles are stored continuously in texture memory */ + in_width = SMS_NTSC_OUT_WIDTH(in_width) / 4; + int offset = ((in_width * 32) * (vline / 4)) + ((vline & 3) * 8); + sms_ntsc_out_t* __restrict__ line_out = (sms_ntsc_out_t*)(texturemem + offset); + offset = 0; + + int n; + input += in_extra; + + for ( n = chunk_count; n; --n ) + { + /* order of input and output pixels must not be altered */ + SMS_NTSC_COLOR_IN( 0, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); + SMS_NTSC_RGB_OUT( 0, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 1, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + + SMS_NTSC_COLOR_IN( 1, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); + SMS_NTSC_RGB_OUT( 2, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 3, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + + SMS_NTSC_COLOR_IN( 2, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); + SMS_NTSC_RGB_OUT( 4, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 5, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 6, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + } + + /* finish final pixels */ + SMS_NTSC_COLOR_IN( 0, ntsc, border ); + SMS_NTSC_RGB_OUT( 0, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 1, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + + SMS_NTSC_COLOR_IN( 1, ntsc, border ); + SMS_NTSC_RGB_OUT( 2, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 3, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + + SMS_NTSC_COLOR_IN( 2, ntsc, border ); + SMS_NTSC_RGB_OUT( 4, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 5, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; + SMS_NTSC_RGB_OUT( 6, line_out[offset++] ); + if ((offset % 4) == 0) offset += 12; +} + +void md_ntsc_blit( md_ntsc_t const* ntsc, MD_NTSC_IN_T const* table, unsigned char* input, + int in_width, int vline) +{ + int const chunk_count = in_width / md_ntsc_in_chunk - 1; + + /* use palette entry 0 for unused pixels */ + MD_NTSC_IN_T border = table[0]; + + MD_NTSC_BEGIN_ROW( ntsc, border, + MD_NTSC_ADJ_IN( table[*input++] ), + MD_NTSC_ADJ_IN( table[*input++] ), + MD_NTSC_ADJ_IN( table[*input++] ) ); + + /* directly fill the RGB565 texture */ + /* one tile is 32 byte = 4x4 pixels */ + /* tiles are stored continuously in texture memory */ + in_width = MD_NTSC_OUT_WIDTH(in_width) >> 2; + int offset = ((in_width << 5) * (vline >> 2)) + ((vline & 3) * 8); + md_ntsc_out_t* __restrict__ line_out = (md_ntsc_out_t*)(texturemem + offset); + + int n; + + for ( n = chunk_count; n; --n ) + { + /* order of input and output pixels must not be altered */ + MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 0, *line_out++ ); + MD_NTSC_RGB_OUT( 1, *line_out++ ); + + MD_NTSC_COLOR_IN( 1, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 2, *line_out++ ); + MD_NTSC_RGB_OUT( 3, *line_out++ ); + + line_out += 12; + + MD_NTSC_COLOR_IN( 2, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 4, *line_out++ ); + MD_NTSC_RGB_OUT( 5, *line_out++ ); + + MD_NTSC_COLOR_IN( 3, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 6, *line_out++ ); + MD_NTSC_RGB_OUT( 7, *line_out++ ); + + line_out += 12; +} + + /* finish final pixels */ + MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 0, *line_out++ ); + MD_NTSC_RGB_OUT( 1, *line_out++ ); + + MD_NTSC_COLOR_IN( 1, ntsc, border ); + MD_NTSC_RGB_OUT( 2, *line_out++ ); + MD_NTSC_RGB_OUT( 3, *line_out++ ); + + line_out += 12; + + MD_NTSC_COLOR_IN( 2, ntsc, border ); + MD_NTSC_RGB_OUT( 4, *line_out++ ); + MD_NTSC_RGB_OUT( 5, *line_out++ ); + + MD_NTSC_COLOR_IN( 3, ntsc, border ); + MD_NTSC_RGB_OUT( 6, *line_out++ ); + MD_NTSC_RGB_OUT( 7, *line_out++ ); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_video.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_video.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_video.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_video.h index 304122d061..5fc5684996 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_video.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/gx_video.h @@ -1,104 +1,104 @@ -/**************************************************************************** - * gx_video.c - * - * Genesis Plus GX video support - * - * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _GC_VIDEO_H_ -#define _GC_VIDEO_H_ - -/* EFB colors */ -#define BLACK {0x00,0x00,0x00,0xff} -#define DARK_GREY {0x22,0x22,0x22,0xff} -#define LIGHT_BLUE {0xb8,0xc7,0xda,0xff} -#define SKY_BLUE {0x99,0xcc,0xff,0xff} -#define LIGHT_GREEN {0xa9,0xc7,0xc6,0xff} -#define WHITE {0xff,0xff,0xff,0xff} - -/* Directly fill a RGB565 texture */ -/* One tile is 32 byte = 4x4 pixels */ -/* Tiles are stored continuously in texture memory */ -#define CUSTOM_BLITTER(line, width, table, in) \ - width >>= 2; \ - u16 *out = (u16 *) (texturemem + (((width << 5) * (line >> 2)) + ((line & 3) << 3))); \ - do \ - { \ - *out++ = table[*in++]; \ - *out++ = table[*in++]; \ - *out++ = table[*in++]; \ - *out++ = table[*in++]; \ - out += 12; \ - } \ - while (--width); - -/* image texture */ -typedef struct -{ - u8 *data; - u16 width; - u16 height; - u8 format; -} gx_texture; - -/* Global variables */ -extern GXRModeObj *vmode; -extern u8 *texturemem; -extern u32 gc_pal; - -/* GX rendering */ -extern void gxDrawRectangle(s32 x, s32 y, s32 w, s32 h, u8 alpha, GXColor color); -extern void gxDrawTexture(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha); -extern void gxDrawTextureRepeat(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha); -extern void gxDrawTextureRotate(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, f32 angle, u8 alpha); -extern void gxDrawScreenshot(u8 alpha); -extern void gxCopyScreenshot(gx_texture *texture); -extern void gxSaveScreenshot(char *filename); -extern void gxClearScreen(GXColor color); -extern void gxSetScreen(void); - -/* PNG textures */ -extern gx_texture *gxTextureOpenPNG(const u8 *png_data, FILE *png_file); -extern void gxTextureWritePNG(gx_texture *p_texture, FILE *png_file); -extern void gxTextureClose(gx_texture **p_texture); - -/* GX video engine */ -extern void gx_video_Init(void); -extern void gx_video_Shutdown(void); -extern void gx_video_Start(void); -extern void gx_video_Stop(void); -extern int gx_video_Update(void); - -#endif +/**************************************************************************** + * gx_video.c + * + * Genesis Plus GX video support + * + * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _GC_VIDEO_H_ +#define _GC_VIDEO_H_ + +/* EFB colors */ +#define BLACK {0x00,0x00,0x00,0xff} +#define DARK_GREY {0x22,0x22,0x22,0xff} +#define LIGHT_BLUE {0xb8,0xc7,0xda,0xff} +#define SKY_BLUE {0x99,0xcc,0xff,0xff} +#define LIGHT_GREEN {0xa9,0xc7,0xc6,0xff} +#define WHITE {0xff,0xff,0xff,0xff} + +/* Directly fill a RGB565 texture */ +/* One tile is 32 byte = 4x4 pixels */ +/* Tiles are stored continuously in texture memory */ +#define CUSTOM_BLITTER(line, width, table, in) \ + width >>= 2; \ + u16 *out = (u16 *) (texturemem + (((width << 5) * (line >> 2)) + ((line & 3) << 3))); \ + do \ + { \ + *out++ = table[*in++]; \ + *out++ = table[*in++]; \ + *out++ = table[*in++]; \ + *out++ = table[*in++]; \ + out += 12; \ + } \ + while (--width); + +/* image texture */ +typedef struct +{ + u8 *data; + u16 width; + u16 height; + u8 format; +} gx_texture; + +/* Global variables */ +extern GXRModeObj *vmode; +extern u8 *texturemem; +extern u32 gc_pal; + +/* GX rendering */ +extern void gxDrawRectangle(s32 x, s32 y, s32 w, s32 h, u8 alpha, GXColor color); +extern void gxDrawTexture(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha); +extern void gxDrawTextureRepeat(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, u8 alpha); +extern void gxDrawTextureRotate(gx_texture *texture, s32 x, s32 y, s32 w, s32 h, f32 angle, u8 alpha); +extern void gxDrawScreenshot(u8 alpha); +extern void gxCopyScreenshot(gx_texture *texture); +extern void gxSaveScreenshot(char *filename); +extern void gxClearScreen(GXColor color); +extern void gxSetScreen(void); + +/* PNG textures */ +extern gx_texture *gxTextureOpenPNG(const u8 *png_data, FILE *png_file); +extern void gxTextureWritePNG(gx_texture *p_texture, FILE *png_file); +extern void gxTextureClose(gx_texture **p_texture); + +/* GX video engine */ +extern void gx_video_Init(void); +extern void gx_video_Shutdown(void); +extern void gx_video_Start(void); +extern void gx_video_Stop(void); +extern int gx_video_Update(void); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Banner_bottom.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Banner_bottom.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Banner_bottom.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Banner_bottom.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Banner_main.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Banner_main.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Banner_main.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Banner_main.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Banner_top.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Banner_top.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Banner_top.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Banner_top.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_credits.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_credits.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_credits.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_credits.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c1.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c1.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c1.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c1.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c2.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c2.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c2.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c2.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c3.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c3.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c3.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c3.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c4.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c4.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_intro_c4.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_intro_c4.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_layer.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_layer.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_layer.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_layer.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_overlay.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_overlay.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Bg_overlay.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Bg_overlay.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Browser_dir.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Browser_dir.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Browser_dir.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Browser_dir.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_arrow.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_arrow.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_arrow.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_arrow.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_arrow_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_arrow_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_arrow_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_arrow_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_delete.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_delete.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_delete.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_delete.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_delete_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_delete_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_delete_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_delete_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_digit.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_digit.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_digit.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_digit.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_digit_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_digit_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_digit_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_digit_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_down.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_down.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_down.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_down.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_down_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_down_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_down_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_down_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon_sm.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon_sm.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon_sm.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon_sm.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon_sm_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon_sm_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_icon_sm_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_icon_sm_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_load.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_load.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_load.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_load.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_load_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_load_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_load_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_load_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_save.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_save.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_save.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_save.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_save_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_save_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_save_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_save_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_sm_blue.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_sm_blue.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_sm_blue.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_sm_blue.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_sm_grey.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_sm_grey.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_sm_grey.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_sm_grey.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_sm_yellow.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_sm_yellow.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_sm_yellow.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_sm_yellow.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_special.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_special.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_special.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_special.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_special_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_special_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_special_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_special_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_text.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_text.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_text.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_text.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_text_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_text_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_text_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_text_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_up.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_up.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_up.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_up.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_up_over.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_up_over.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Button_up_over.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Button_up_over.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_access_off.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_access_off.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_access_off.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_access_off.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_access_on.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_access_on.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_access_on.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_access_on.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_ready_off.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_ready_off.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_ready_off.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_ready_off.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_ready_on.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_ready_on.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/CD_ready_on.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/CD_ready_on.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_gg.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_gg.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_gg.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_gg.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_md.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_md.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_md.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_md.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_ms.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_ms.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_ms.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_ms.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_sg.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_sg.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Cart_sg.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Cart_sg.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Crosshair_p1.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Crosshair_p1.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Crosshair_p1.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Crosshair_p1.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Crosshair_p2.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Crosshair_p2.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Crosshair_p2.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Crosshair_p2.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_4wayplay.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_4wayplay.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_4wayplay.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_4wayplay.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_activator.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_activator.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_activator.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_activator.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_config.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_config.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_config.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_config.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_gamepad_md.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_gamepad_md.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_gamepad_md.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_gamepad_md.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_gamepad_ms.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_gamepad_ms.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_gamepad_ms.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_gamepad_ms.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_justifiers.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_justifiers.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_justifiers.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_justifiers.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_lightphaser.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_lightphaser.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_lightphaser.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_lightphaser.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_menacer.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_menacer.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_menacer.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_menacer.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_mouse.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_mouse.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_mouse.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_mouse.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_none.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_none.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_none.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_none.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_pad3b.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_pad3b.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_pad3b.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_pad3b.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_pad6b.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_pad6b.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_pad6b.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_pad6b.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_paddle.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_paddle.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_paddle.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_paddle.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_sportspad.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_sportspad.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_sportspad.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_sportspad.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_teamplayer.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_teamplayer.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_teamplayer.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_teamplayer.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_xe_a1p.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_xe_a1p.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Ctrl_xe_a1p.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Ctrl_xe_a1p.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s1.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s1.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s1.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s1.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s1_title.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s1_title.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s1_title.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s1_title.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s2.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s2.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s2.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s2.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s2_title.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s2_title.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s2_title.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s2_title.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s3.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s3.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_s3.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_s3.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_throbber.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_throbber.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Frame_throbber.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Frame_throbber.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_A_gcn.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_A_gcn.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_A_gcn.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_A_gcn.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_A_wii.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_A_wii.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_A_wii.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_A_wii.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_B_gcn.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_B_gcn.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_B_gcn.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_B_gcn.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_B_wii.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_B_wii.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_B_wii.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_B_wii.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_DPAD.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_DPAD.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_DPAD.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_DPAD.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_L_gcn.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_L_gcn.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_L_gcn.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_L_gcn.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_Minus_wii.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_Minus_wii.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_Minus_wii.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_Minus_wii.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_Plus_wii.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_Plus_wii.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_Plus_wii.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_Plus_wii.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_R_gcn.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_R_gcn.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Key_R_gcn.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Key_R_gcn.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_cd.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_cd.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_cd.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_cd.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_gg.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_gg.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_gg.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_gg.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_md.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_md.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_md.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_md.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_ms.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_ms.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_ms.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_ms.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_recent.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_recent.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_recent.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_recent.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_sg.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_sg.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Load_sg.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Load_sg.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_cheats.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_cheats.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_cheats.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_cheats.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_file.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_file.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_file.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_file.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_load.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_load.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_load.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_load.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_logo.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_logo.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_logo.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_logo.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_options.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_options.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_options.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_options.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_play_gcn.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_play_gcn.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_play_gcn.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_play_gcn.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_play_wii.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_play_wii.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_play_wii.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_play_wii.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_quit.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_quit.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_quit.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_quit.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_reset.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_reset.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_reset.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_reset.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_showinfo.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_showinfo.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_showinfo.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_showinfo.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_takeshot.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_takeshot.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Main_takeshot.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Main_takeshot.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_ctrl.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_ctrl.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_ctrl.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_ctrl.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_menu.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_menu.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_menu.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_menu.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_sound.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_sound.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_sound.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_sound.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_system.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_system.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_system.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_system.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_video.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_video.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Option_video.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Option_video.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Overlay_bar.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Overlay_bar.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Overlay_bar.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Overlay_bar.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Snap_empty.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Snap_empty.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Snap_empty.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Snap_empty.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Star_empty.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Star_empty.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Star_empty.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Star_empty.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Star_full.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Star_full.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/Star_full.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/Star_full.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_classic.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_classic.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_classic.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_classic.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_gamecube.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_gamecube.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_gamecube.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_gamecube.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_nunchuk.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_nunchuk.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_nunchuk.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_nunchuk.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_option_off.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_option_off.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_option_off.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_option_off.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_option_on.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_option_on.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_option_on.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_option_on.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_wiimote.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_wiimote.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/ctrl_wiimote.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/ctrl_wiimote.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/generic_point.png b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/generic_point.png similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/images/generic_point.png rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/images/generic_point.png diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/main.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/main.c new file mode 100644 index 0000000000..6668acfa31 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/main.c @@ -0,0 +1,623 @@ +/**************************************************************************** + * main.c + * + * Genesis Plus GX + * + * Copyright Eke-Eke (2007-2012), based on original work from Softdev (2006) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "font.h" +#include "gui.h" +#include "menu.h" +#include "history.h" +#include "file_slot.h" +#include "file_load.h" +#include "filesel.h" +#include "cheats.h" + +#include + +/* output samplerate, adjusted to take resampler precision in account */ +#define SAMPLERATE_48KHZ 47992 + +u32 Shutdown = 0; +u32 ConfigRequested = 1; +char osd_version[32]; + +#ifdef LOG_TIMING +u64 prevtime; +u32 frame_cnt; +u32 delta_time[LOGSIZE]; +u32 delta_samp[LOGSIZE]; +#endif + + +#ifdef HW_RVL +/**************************************************************************** + * Power Button callback + ***************************************************************************/ +static void PowerOff_cb(void) +{ + Shutdown = 1; + ConfigRequested = 1; +} +#endif + +/**************************************************************************** + * Reset Button callback + ***************************************************************************/ +static void Reset_cb(void) +{ + if (system_hw & SYSTEM_MD) + { + /* Soft Reset */ + gen_reset(0); + } + else if (system_hw == SYSTEM_SMS) + { + /* assert RESET input (Master System model 1 only) */ + io_reg[0x0D] &= ~IO_RESET_HI; + } +} + +/*************************************************************************** + * Genesis Plus Virtual Machine + * + ***************************************************************************/ +static void init_machine(void) +{ + /* system is not initialized */ + config.hot_swap &= 0x01; + + /* mark all BIOS as unloaded */ + system_bios = 0; + + /* Genesis BOOT ROM support (2KB max) */ + memset(boot_rom, 0xFF, 0x800); + FILE *fp = fopen(MD_BIOS, "rb"); + if (fp != NULL) + { + /* read BOOT ROM */ + fread(boot_rom, 1, 0x800, fp); + fclose(fp); + + /* check BOOT ROM */ + if (!memcmp((char *)(boot_rom + 0x120),"GENESIS OS", 10)) + { + /* mark Genesis BIOS as loaded */ + system_bios = SYSTEM_MD; + } + } + + /* allocate global work bitmap */ + memset(&bitmap, 0, sizeof (bitmap)); + bitmap.width = 720; + bitmap.height = 576; + bitmap.pitch = bitmap.width * 2; + bitmap.viewport.w = 256; + bitmap.viewport.h = 224; + bitmap.viewport.x = 0; + bitmap.viewport.y = 0; + bitmap.data = texturemem; +} + +static void run_emulation(void) +{ + int sync; + + /* main emulation loop */ + while (1) + { + /* emulated system */ + if (system_hw == SYSTEM_MCD) + { + /* 16-bit hardware + CD */ + while (!ConfigRequested) + { + /* render frame */ + system_frame_scd(0); + + /* audio/video sync */ + sync = NO_SYNC; + while (sync != (SYNC_VIDEO | SYNC_AUDIO)) + { + /* update video */ + sync |= gx_video_Update(); + + /* update audio */ + sync |= gx_audio_Update(); + } + + /* check interlaced mode change */ + if (bitmap.viewport.changed & 4) + { + /* VSYNC "original" mode */ + if (!config.render && config.vsync && (gc_pal == vdp_pal)) + { + /* framerate has changed, reinitialize audio timings */ + audio_init(SAMPLERATE_48KHZ, get_framerate()); + } + + /* clear flag */ + bitmap.viewport.changed &= ~4; + } + } + } + else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* 16-bit hardware */ + while (!ConfigRequested) + { + /* render frame */ + system_frame_gen(0); + + /* audio/video sync */ + sync = NO_SYNC; + while (sync != (SYNC_VIDEO | SYNC_AUDIO)) + { + /* update video */ + sync |= gx_video_Update(); + + /* update audio */ + sync |= gx_audio_Update(); + } + + /* check interlaced mode change */ + if (bitmap.viewport.changed & 4) + { + /* VSYNC "original" mode */ + if (!config.render && config.vsync && (gc_pal == vdp_pal)) + { + /* framerate has changed, reinitialize audio timings */ + audio_init(SAMPLERATE_48KHZ, get_framerate()); + } + + /* clear flag */ + bitmap.viewport.changed &= ~4; + } + } + } + else + { + /* 8-bit hardware */ + while (!ConfigRequested) + { + /* render frame */ + system_frame_sms(0); + + /* audio/video sync */ + sync = NO_SYNC; + while (sync != (SYNC_VIDEO | SYNC_AUDIO)) + { + /* update video */ + sync |= gx_video_Update(); + + /* update audio */ + sync |= gx_audio_Update(); + } + + /* check interlaced mode change (PBC mode only) */ + if (bitmap.viewport.changed & 4) + { + /* "original" mode */ + if (!config.render && config.vsync && (gc_pal == vdp_pal)) + { + /* framerate has changed, reinitialize audio timings */ + audio_init(SAMPLERATE_48KHZ, get_framerate()); + } + + /* clear flag */ + bitmap.viewport.changed &= ~4; + } + } + } + + /* stop video & audio */ + gx_audio_Stop(); + gx_video_Stop(); + +#ifdef LOG_TIMING + if (system_hw) + { + FILE *f; + char filename[64]; + + memset(filename, 0, 64); + strcpy(filename,"timings-"); + if (!config.vsync || (config.tv_mode == !vdp_pal)) + { + strcat(filename,"no_"); + } + else + { + if (gc_pal) + { + strcat(filename,"50hz_"); + } + else + { + strcat(filename,"60hz_"); + } + } + strcat(filename,"vsync-"); + if (vdp_pal) + { + strcat(filename,"pal-"); + } + else + { + strcat(filename,"ntsc-"); + } + if (config.render == 2) + { + strcat(filename,"prog.txt"); + } + else + { + if (!config.render && !interlaced) + { + strcat(filename,"no_"); + } + strcat(filename,"int.txt"); + } + + f = fopen(filename,"a"); + if (f != NULL) + { + int i; + u32 min,max; + double total = 0; + double nsamples = 0; + + if (delta_time[LOGSIZE - 1] != 0) + { + frame_cnt = LOGSIZE; + } + + min = max = delta_time[0]; + + for (i=0; i delta_time[i]) min = delta_time[i]; + if (max < delta_time[i]) max = delta_time[i]; + } + fprintf(f,"\n"); + fprintf(f,"min = %d ns\n", min); + fprintf(f,"max = %d ns\n", max); + fprintf(f,"avg = %8.5f ns (%5.8f samples/sec, %5.8f samples/frame)\n\n\n", total/(double)i, nsamples/total*1000000000.0, nsamples/(double)i); + fclose(f); + } + } + + memset(delta_time,0,LOGSIZE); + memset(delta_samp,0,LOGSIZE); + frame_cnt = prevtime = 0; +#endif + + /* show menu */ + ConfigRequested = 0; + mainmenu(); + + /* restart video & audio */ + gx_video_Start(); + gx_audio_Start(); + } +} + +/********************************************************************************************************************************************************* + Get emulator input framerate (actually used by audio emulation to approximate number of samples rendered on each frame, see audio_init in system.c) +*********************************************************************************************************************************************************/ +double get_framerate(void) +{ + /* Run emulator at original VDP framerate if console TV mode does not match emulated TV mode or VSYNC is disabled */ + if (!config.vsync || (config.tv_mode == !vdp_pal)) + { + return 0.0; + } + + /* Otherwise, run emulator at Wii/Gamecube framerate to ensure perfect video synchronization */ + if (vdp_pal) + { + /* 288p -> 13500000 pixels/sec, 864 pixels/line, 312 lines/field -> fps = 13500000/864/312 = 50.08 hz */ + /* 288i,576i -> 13500000 pixels/sec, 864 pixels/line, 312.5 lines/field (two fields = one frame = 625 lines) -> fps = 13500000/864/312.5 = 50.00 hz */ + return (config.render || interlaced) ? (27000000.0/864.0/625.0) : (13500000.0/864.0/312.0); + } + else + { + /* 240p -> 13500000 pixels/sec, 858 pixels/line, 263 lines/field -> fps = 13500000/858/263 = 59.83 hz */ + /* 240i,480i -> 13500000 pixels/sec, 858 pixels/line, 262.5 lines/field (two fields = one frame = 525 lines) -> fps = 13500000/858/262.5 = 59.94 hz */ + /* 480p -> 27000000 pixels/sec, 858 pixels/line, 525 lines/field -> fps = 27000000/858/525 = 59.94 hz */ + return (config.render || interlaced) ? (27000000.0/858.0/525.0) : (13500000.0/858.0/263.0); + } +} + +/******************************************* + Restart emulation when loading a new game +********************************************/ +void reloadrom(void) +{ + /* Cartridge "Hot Swap" support (make sure system has already been inited once and use cartridges) */ + if ((config.hot_swap == 3) && ((system_hw != SYSTEM_MCD) || scd.cartridge.boot)) + { + /* Only initialize cartridge hardware */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* 16-bit cartridge */ + md_cart_init(); + md_cart_reset(1); + } + else + { + /* 8-bit cartridge */ + sms_cart_init(); + sms_cart_reset(); + } + } + + /* Disc Swap support (automatically enabled if CD tray is open) */ + else if ((system_hw != SYSTEM_MCD) || (cdd.status != CD_OPEN)) + { + /* Initialize audio emulation */ + interlaced = 0; + audio_init(SAMPLERATE_48KHZ, get_framerate()); + + /* Switch virtual system on */ + system_init(); + system_reset(); + + /* Allow hot swap */ + config.hot_swap |= 2; + } + + /* Auto-Load Backup RAM */ + slot_autoload(0,config.s_device); + + /* Auto-Load State */ + slot_autoload(config.s_default,config.s_device); + + /* Load Cheat file */ + CheatLoad(); +} + +/************************************************** + Shutdown everything properly +***************************************************/ +void shutdown(void) +{ + /* save current config */ + config_save(); + + /* auto-save State file */ + slot_autosave(config.s_default,config.s_device); + + /* shutdown emulation */ + audio_shutdown(); + gx_audio_Shutdown(); + gx_video_Shutdown(); +#ifdef HW_RVL + DI_Close(); +#endif +} + +/*************************************************************************** + * M A I N + * + ***************************************************************************/ +int main (int argc, char *argv[]) +{ + #ifdef HW_RVL + /* enable 64-byte fetch mode for L2 cache */ + L2Enhance(); + + /* initialize DI interface */ + DI_UseCache(0); + DI_Init(); + + sprintf(osd_version, "%s (IOS %d)", VERSION, IOS_GetVersion()); +#else + sprintf(osd_version, "%s (GCN)", VERSION); +#endif + + /* initialize video engine */ + gx_video_Init(); + +#ifndef HW_RVL + /* initialize DVD interface */ + DVD_Init(); +#endif + + /* initialize input engine */ + gx_input_Init(); + + /* initialize FAT devices */ + int retry = 0; + int fatMounted = 0; + + /* try to mount FAT devices during 3 seconds */ + while (!fatMounted && (retry < 12)) + { + fatMounted = fatInitDefault(); + usleep(250000); + retry++; + } + + if (fatMounted) + { + /* base directory */ + char pathname[MAXPATHLEN]; + sprintf (pathname, DEFAULT_PATH); + DIR *dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + + /* default SRAM & Savestate files directories */ + sprintf (pathname, "%s/saves",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/saves/md",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/saves/ms",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/saves/gg",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/saves/sg",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/saves/cd",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + + /* default Snapshot files directories */ + sprintf (pathname, "%s/snaps",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/snaps/md",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/snaps/ms",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/snaps/gg",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/snaps/sg",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/snaps/cd",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + + /* default Cheat files directories */ + sprintf (pathname, "%s/cheats",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/cheats/md",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/cheats/ms",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/cheats/gg",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/cheats/sg",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + sprintf (pathname, "%s/cheats/cd",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + + /* default BIOS ROM files directories */ + sprintf (pathname, "%s/bios",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + + /* default LOCK-ON ROM files directories */ + sprintf (pathname, "%s/lock-on",DEFAULT_PATH); + dir = opendir(pathname); + if (dir) closedir(dir); + else mkdir(pathname,S_IRWXU); + } + + /* initialize sound engine */ + gx_audio_Init(); + + /* initialize genesis plus core */ + history_default(); + config_default(); + init_machine(); + + /* auto-load last ROM file */ + if (config.autoload) + { + SILENT = 1; + if (OpenDirectory(TYPE_RECENT, -1)) + { + if (LoadFile(0)) + { + reloadrom(); + gx_video_Start(); + gx_audio_Start(); + ConfigRequested = 0; + } + } + SILENT = 0; + } + + /* show disclaimer */ + if (ConfigRequested) + { + legal(); + } + +#ifdef HW_RVL + /* power button callback */ + SYS_SetPowerCallback(PowerOff_cb); +#endif + + /* reset button callback */ + SYS_SetResetCallback(Reset_cb); + + /* main emulation loop */ + run_emulation(); + + /* we should never return anyway */ + return 0; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/osd.h new file mode 100644 index 0000000000..69cb73457e --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/osd.h @@ -0,0 +1,95 @@ +/*************************************************/ +/* port specific stuff should be put there */ +/*************************************************/ + +#ifndef _OSD_H_ +#define _OSD_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HW_RVL +#include +#include +#include "vi_encoder.h" +#endif + +#include "gx_input.h" +#include "gx_audio.h" +#include "gx_video.h" +#include "file_load.h" +#include "cheats.h" + +#include "config.h" +#include "fileio.h" + +#define DEFAULT_PATH "/genplus" + +/*************************************************/ +/* required by Genesis Plus GX core */ +/*************************************************/ +#define GG_ROM "/genplus/lock-on/ggenie.bin" +#define AR_ROM "/genplus/lock-on/areplay.bin" +#define SK_ROM "/genplus/lock-on/sk.bin" +#define SK_UPMEM "/genplus/lock-on/sk2chip.bin" +#define MS_BIOS_US "/genplus/bios/bios_U.sms" +#define MS_BIOS_EU "/genplus/bios/bios_E.sms" +#define MS_BIOS_JP "/genplus/bios/bios_J.sms" +#define GG_BIOS "/genplus/bios/bios.gg" +#define MD_BIOS "/genplus/bios/bios_MD.bin" +#define CD_BIOS_US "/genplus/bios/bios_CD_U.bin" +#define CD_BIOS_EU "/genplus/bios/bios_CD_E.bin" +#define CD_BIOS_JP "/genplus/bios/bios_CD_J.bin" +#define CD_BRAM_US "/genplus/saves/cd/scd_U.brm" +#define CD_BRAM_EU "/genplus/saves/cd/scd_E.brm" +#define CD_BRAM_JP "/genplus/saves/cd/scd_J.brm" +#define CART_BRAM "/genplus/saves/cd/cart.brm" + +/*********************************************************/ +/* implemented by Genesis Plus GX core (GC/Wii specific) */ +/*********************************************************/ + +/* 32 bytes aligned sound buffers (8 samples alignment) */ +#define ALIGN_SND 0xfffffff8 + +/* use Wii DVD LED to indicate when virtual CD tray is open */ +#ifdef HW_RVL +#define CD_TRAY_CALLBACK *(u32*)0xcd0000c0 = (*(u32*)0xcd0000c0 & ~0x20) | ((cdd.status == CD_OPEN) << 5); +#endif + +/*************************************************/ + +#define VERSION "Genesis Plus GX 1.7.4" + +#define NO_SYNC 0 +#define SYNC_VIDEO 1 +#define SYNC_AUDIO 2 + +/* globals */ +extern void legal(void); +extern double get_framerate(void); +extern void reloadrom(void); +extern void shutdown(void); +extern u32 Shutdown; +extern u32 ConfigRequested; +extern char osd_version[32]; + +#ifdef LOG_TIMING +#include +#define LOGSIZE 2000 +extern u64 prevtime; +extern u32 frame_cnt; +extern u32 delta_time[LOGSIZE]; +extern u32 delta_samp[LOGSIZE]; +#endif + +#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/sounds/button_over.pcm b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/sounds/button_over.pcm similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/sounds/button_over.pcm rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/sounds/button_over.pcm diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/sounds/button_select.pcm b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/sounds/button_select.pcm similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/sounds/button_select.pcm rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/sounds/button_select.pcm diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/sounds/intro.pcm b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/sounds/intro.pcm similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/sounds/intro.pcm rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/sounds/intro.pcm diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/oggplayer.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/oggplayer.c similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/oggplayer.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/oggplayer.c index 2dcd37b8dc..56a951e70d 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/oggplayer.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/oggplayer.c @@ -1,536 +1,536 @@ -/* - Copyright (c) 2008 Francisco Muoz 'Hermes' - All rights reserved. - - Proper (standard) vorbis usage by Tantric, 2009 - Threading modifications/corrections by Tantric, 2009 - - Redistribution and use in source and binary forms, with or without modification, are - permitted provided that the following conditions are met: - - - Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other - materials provided with the distribution. - - The names of the contributors may not be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "oggplayer.h" -#include -#include -#include - -/* functions to read the Ogg file from memory */ - -static struct -{ - char *mem; - int size; - int pos; -} file[4]; - -static int f_read(void * punt, int bytes, int blocks, int *f) -{ - int b; - int c; - int d; - - if (bytes * blocks <= 0) - return 0; - - blocks = bytes * blocks; - c = 0; - - while (blocks > 0) - { - b = blocks; - if (b > 4096) - b = 4096; - - if (*f >= 0x666 && *f <= 0x669) - { - d = (*f) - 0x666; - if (file[d].size == 0) - return -1; - if ((file[d].pos + b) > file[d].size) - b = file[d].size - file[d].pos; - if (b > 0) - { - memcpy(punt, file[d].mem + file[d].pos, b); - file[d].pos += b; - } - } - else - b = read(*f, ((char *) punt) + c, b); - - if (b <= 0) - { - return c / bytes; - } - c += b; - blocks -= b; - } - return c / bytes; -} - -static int f_seek(int *f, ogg_int64_t offset, int mode) -{ - if(f==NULL) return(-1); - - int k, d; - mode &= 3; - if (*f >= 0x666 && *f <= 0x669) - { - d = (*f) - 0x666; - k = 0; - - if (file[d].size == 0) - return -1; - - if (mode == 0) - { - if ((offset) >= file[d].size) - { - file[d].pos = file[d].size; - k = -1; - } - else if ((offset) < 0) - { - file[d].pos = 0; - k = -1; - } - else - file[d].pos = offset; - } - if (mode == 1) - { - if ((file[d].pos + offset) >= file[d].size) - { - file[d].pos = file[d].size; - k = -1; - } - else if ((file[d].pos + offset) < 0) - { - file[d].pos = 0; - k = -1; - } - else - file[d].pos += offset; - } - if (mode == 2) - { - - if ((file[d].size + offset) >= file[d].size) - { - file[d].pos = file[d].size; - k = -1; - } - else if ((file[d].size + offset) < 0) - { - file[d].pos = 0; - k = -1; - } - else - file[d].pos = file[d].size + offset; - } - - } - else - k = lseek(*f, (int) offset, mode); - - if (k < 0) - k = -1; - else - k = 0; - return k; -} - -static int f_close(int *f) -{ - int d; - if (*f >= 0x666 && *f <= 0x669) - { - d = (*f) - 0x666; - file[d].size = 0; - file[d].pos = 0; - if (file[d].mem) - { - file[d].mem = (void *) 0; - } - return 0; - } - else - return close(*f); - return 0; -} - -static long f_tell(int *f) -{ - int k, d; - - if (*f >= 0x666 && *f <= 0x669) - { - d = (*f) - 0x666; - k = file[d].pos; - } - else - k = lseek(*f, 0, 1); - - return (long) k; -} - -static int mem_open(char * ogg, int size) -{ - static int one = 1; - int n; - if (one) - { - one = 0; - for (n = 0; n < 4; n++) - file[n].size = 0; - } - - for (n = 0; n < 4; n++) - { - if (file[n].size == 0) - { - file[n].mem = ogg; - file[n].size = size; - file[n].pos = 0; - return (0x666 + n); - } - } - return -1; -} - -static int mem_close(int fd) -{ - if (fd >= 0x666 && fd <= 0x669) // it is a memory file descriptor? - { - fd -= 0x666; - file[fd].size = 0; - return 0; - } - else - return f_close(&fd); -} - -static ov_callbacks callbacks = { - (size_t (*)(void *, size_t, size_t, void *)) f_read, - (int (*)(void *, ogg_int64_t, int)) f_seek, - (int (*)(void *)) f_close, - (long (*)(void *)) f_tell -}; - -/* OGG control */ - -#define READ_SAMPLES 4096 /* samples that it must read before to send */ -#define MAX_PCMOUT 4096 /* minimum size to read ogg samples */ -typedef struct -{ - OggVorbis_File vf; - vorbis_info *vi; - int current_section; - - /* OGG file operation */ - int fd; - int mode; - int eof; - int flag; - int volume; - int seek_time; - - /* OGG buffer control */ - short pcmout[2][READ_SAMPLES + MAX_PCMOUT * 2]; /* take 4k out of the data segment, not the stack */ - int pcmout_pos; - int pcm_indx; - -} private_data_ogg; - -static private_data_ogg private_ogg; - -/* OGG thread control */ - -#define STACKSIZE 8192 - -static u8 oggplayer_stack[STACKSIZE]; -static lwpq_t oggplayer_queue = LWP_TQUEUE_NULL; -static lwp_t h_oggplayer = LWP_THREAD_NULL; -static int ogg_thread_running = 0; - -static void ogg_add_callback(int voice) -{ - if (!ogg_thread_running) - { - ASND_StopVoice(0); - return; - } - - if (private_ogg.flag & 128) - return; /* Ogg is paused */ - - if (private_ogg.pcm_indx >= READ_SAMPLES) - { - if (ASND_AddVoice(0, - (void *) private_ogg.pcmout[private_ogg.pcmout_pos], - private_ogg.pcm_indx << 1) == 0) - { - private_ogg.pcmout_pos ^= 1; - private_ogg.pcm_indx = 0; - private_ogg.flag = 0; - LWP_ThreadSignal(oggplayer_queue); - } - } - else - { - if (private_ogg.flag & 64) - { - private_ogg.flag &= ~64; - LWP_ThreadSignal(oggplayer_queue); - } - } -} - -static void * ogg_player_thread(private_data_ogg * priv) -{ - int first_time = 1; - long ret; - - /* init */ - LWP_InitQueue(&oggplayer_queue); - - priv[0].vi = ov_info(&priv[0].vf, -1); - - ASND_Pause(0); - - priv[0].pcm_indx = 0; - priv[0].pcmout_pos = 0; - priv[0].eof = 0; - priv[0].flag = 0; - priv[0].current_section = 0; - - ogg_thread_running = 1; - - while (!priv[0].eof && ogg_thread_running) - { - if (priv[0].flag) - LWP_ThreadSleep(oggplayer_queue); /* wait only when i have samples to send */ - - if (priv[0].flag == 0) /* wait to all samples are sended */ - { - if (ASND_TestPointer(0, priv[0].pcmout[priv[0].pcmout_pos]) - && ASND_StatusVoice(0) != SND_UNUSED) - { - priv[0].flag |= 64; - continue; - } - if (priv[0].pcm_indx < READ_SAMPLES) - { - priv[0].flag = 3; - - if (priv[0].seek_time >= 0) - { - ov_time_seek(&priv[0].vf, priv[0].seek_time); - priv[0].seek_time = -1; - } - - ret - = ov_read( - &priv[0].vf, - (void *) &priv[0].pcmout[priv[0].pcmout_pos][priv[0].pcm_indx], - MAX_PCMOUT,/*0,2,1,*/&priv[0].current_section); - priv[0].flag &= 192; - if (ret == 0) - { - /* EOF */ - if (priv[0].mode & 1) - ov_time_seek(&priv[0].vf, 0); /* repeat */ - else - priv[0].eof = 1; /* stops */ - } - else if (ret < 0) - { - /* error in the stream. Not a problem, just reporting it in - case we (the app) cares. In this case, we don't. */ - if (ret != OV_HOLE) - { - if (priv[0].mode & 1) - ov_time_seek(&priv[0].vf, 0); /* repeat */ - else - priv[0].eof = 1; /* stops */ - } - } - else - { - /* we don't bother dealing with sample rate changes, etc, but - you'll have to */ - priv[0].pcm_indx += ret >> 1; /* get 16 bits samples */ - } - } - else - priv[0].flag = 1; - } - - if (priv[0].flag == 1) - { - if (ASND_StatusVoice(0) == SND_UNUSED || first_time) - { - first_time = 0; - if (priv[0].vi->channels == 2) - { - ASND_SetVoice(0, VOICE_STEREO_16BIT, priv[0].vi->rate, 0, - (void *) priv[0].pcmout[priv[0].pcmout_pos], - priv[0].pcm_indx << 1, priv[0].volume, - priv[0].volume, ogg_add_callback); - priv[0].pcmout_pos ^= 1; - priv[0].pcm_indx = 0; - priv[0].flag = 0; - } - else - { - ASND_SetVoice(0, VOICE_MONO_16BIT, priv[0].vi->rate, 0, - (void *) priv[0].pcmout[priv[0].pcmout_pos], - priv[0].pcm_indx << 1, priv[0].volume, - priv[0].volume, ogg_add_callback); - priv[0].pcmout_pos ^= 1; - priv[0].pcm_indx = 0; - priv[0].flag = 0; - } - } - } - usleep(10); - } - ov_clear(&priv[0].vf); - priv[0].fd = -1; - priv[0].pcm_indx = 0; - - return 0; -} - -void StopOgg() -{ - ASND_StopVoice(0); - ogg_thread_running = 0; - - if(h_oggplayer != LWP_THREAD_NULL) - { - if(oggplayer_queue != LWP_TQUEUE_NULL) - LWP_ThreadSignal(oggplayer_queue); - LWP_JoinThread(h_oggplayer, NULL); - h_oggplayer = LWP_THREAD_NULL; - } - if(oggplayer_queue != LWP_TQUEUE_NULL) - { - LWP_CloseQueue(oggplayer_queue); - oggplayer_queue = LWP_TQUEUE_NULL; - } -} - -int PlayOgg(char * buf, int buflen, int time_pos, int mode) -{ - StopOgg(); - - private_ogg.fd = mem_open(buf, buflen); - - if (private_ogg.fd < 0) - { - private_ogg.fd = -1; - return -1; - } - - private_ogg.mode = mode; - private_ogg.eof = 0; - private_ogg.volume = 127; - private_ogg.flag = 0; - private_ogg.seek_time = -1; - - if (time_pos > 0) - private_ogg.seek_time = time_pos; - - if (ov_open_callbacks((void *) &private_ogg.fd, &private_ogg.vf, NULL, 0, callbacks) < 0) - { - mem_close(private_ogg.fd); /* mem_close() can too close files from devices */ - private_ogg.fd = -1; - ogg_thread_running = 0; - return -1; - } - - if (LWP_CreateThread(&h_oggplayer, (void *) ogg_player_thread, - &private_ogg, oggplayer_stack, STACKSIZE, 80) == -1) - { - ogg_thread_running = 0; - ov_clear(&private_ogg.vf); - private_ogg.fd = -1; - return -1; - } - return 0; -} - -void PauseOgg(int pause) -{ - if (pause) - { - private_ogg.flag |= 128; - } - else - { - if (private_ogg.flag & 128) - { - private_ogg.flag |= 64; - private_ogg.flag &= ~128; - if (ogg_thread_running > 0) - { - LWP_ThreadSignal(oggplayer_queue); - } - } - } -} - -int StatusOgg() -{ - if (ogg_thread_running == 0) - return -1; /* Error */ - else if (private_ogg.eof) - return 255; /* EOF */ - else if (private_ogg.flag & 128) - return 2; /* paused */ - else - return 1; /* running */ -} - -void SetVolumeOgg(int volume) -{ - private_ogg.volume = volume; - ASND_ChangeVolumeVoice(0, volume, volume); -} - -s32 GetTimeOgg() -{ - int ret; - if (ogg_thread_running == 0 || private_ogg.fd < 0) - return 0; - ret = ((s32) ov_time_tell(&private_ogg.vf)); - if (ret < 0) - ret = 0; - - return ret; -} - -void SetTimeOgg(s32 time_pos) -{ - if (time_pos >= 0) - private_ogg.seek_time = time_pos; -} - +/* + Copyright (c) 2008 Francisco Muoz 'Hermes' + All rights reserved. + + Proper (standard) vorbis usage by Tantric, 2009 + Threading modifications/corrections by Tantric, 2009 + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + - The names of the contributors may not be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "oggplayer.h" +#include +#include +#include + +/* functions to read the Ogg file from memory */ + +static struct +{ + char *mem; + int size; + int pos; +} file[4]; + +static int f_read(void * punt, int bytes, int blocks, int *f) +{ + int b; + int c; + int d; + + if (bytes * blocks <= 0) + return 0; + + blocks = bytes * blocks; + c = 0; + + while (blocks > 0) + { + b = blocks; + if (b > 4096) + b = 4096; + + if (*f >= 0x666 && *f <= 0x669) + { + d = (*f) - 0x666; + if (file[d].size == 0) + return -1; + if ((file[d].pos + b) > file[d].size) + b = file[d].size - file[d].pos; + if (b > 0) + { + memcpy(punt, file[d].mem + file[d].pos, b); + file[d].pos += b; + } + } + else + b = read(*f, ((char *) punt) + c, b); + + if (b <= 0) + { + return c / bytes; + } + c += b; + blocks -= b; + } + return c / bytes; +} + +static int f_seek(int *f, ogg_int64_t offset, int mode) +{ + if(f==NULL) return(-1); + + int k, d; + mode &= 3; + if (*f >= 0x666 && *f <= 0x669) + { + d = (*f) - 0x666; + k = 0; + + if (file[d].size == 0) + return -1; + + if (mode == 0) + { + if ((offset) >= file[d].size) + { + file[d].pos = file[d].size; + k = -1; + } + else if ((offset) < 0) + { + file[d].pos = 0; + k = -1; + } + else + file[d].pos = offset; + } + if (mode == 1) + { + if ((file[d].pos + offset) >= file[d].size) + { + file[d].pos = file[d].size; + k = -1; + } + else if ((file[d].pos + offset) < 0) + { + file[d].pos = 0; + k = -1; + } + else + file[d].pos += offset; + } + if (mode == 2) + { + + if ((file[d].size + offset) >= file[d].size) + { + file[d].pos = file[d].size; + k = -1; + } + else if ((file[d].size + offset) < 0) + { + file[d].pos = 0; + k = -1; + } + else + file[d].pos = file[d].size + offset; + } + + } + else + k = lseek(*f, (int) offset, mode); + + if (k < 0) + k = -1; + else + k = 0; + return k; +} + +static int f_close(int *f) +{ + int d; + if (*f >= 0x666 && *f <= 0x669) + { + d = (*f) - 0x666; + file[d].size = 0; + file[d].pos = 0; + if (file[d].mem) + { + file[d].mem = (void *) 0; + } + return 0; + } + else + return close(*f); + return 0; +} + +static long f_tell(int *f) +{ + int k, d; + + if (*f >= 0x666 && *f <= 0x669) + { + d = (*f) - 0x666; + k = file[d].pos; + } + else + k = lseek(*f, 0, 1); + + return (long) k; +} + +static int mem_open(char * ogg, int size) +{ + static int one = 1; + int n; + if (one) + { + one = 0; + for (n = 0; n < 4; n++) + file[n].size = 0; + } + + for (n = 0; n < 4; n++) + { + if (file[n].size == 0) + { + file[n].mem = ogg; + file[n].size = size; + file[n].pos = 0; + return (0x666 + n); + } + } + return -1; +} + +static int mem_close(int fd) +{ + if (fd >= 0x666 && fd <= 0x669) // it is a memory file descriptor? + { + fd -= 0x666; + file[fd].size = 0; + return 0; + } + else + return f_close(&fd); +} + +static ov_callbacks callbacks = { + (size_t (*)(void *, size_t, size_t, void *)) f_read, + (int (*)(void *, ogg_int64_t, int)) f_seek, + (int (*)(void *)) f_close, + (long (*)(void *)) f_tell +}; + +/* OGG control */ + +#define READ_SAMPLES 4096 /* samples that it must read before to send */ +#define MAX_PCMOUT 4096 /* minimum size to read ogg samples */ +typedef struct +{ + OggVorbis_File vf; + vorbis_info *vi; + int current_section; + + /* OGG file operation */ + int fd; + int mode; + int eof; + int flag; + int volume; + int seek_time; + + /* OGG buffer control */ + short pcmout[2][READ_SAMPLES + MAX_PCMOUT * 2]; /* take 4k out of the data segment, not the stack */ + int pcmout_pos; + int pcm_indx; + +} private_data_ogg; + +static private_data_ogg private_ogg; + +/* OGG thread control */ + +#define STACKSIZE 8192 + +static u8 oggplayer_stack[STACKSIZE]; +static lwpq_t oggplayer_queue = LWP_TQUEUE_NULL; +static lwp_t h_oggplayer = LWP_THREAD_NULL; +static int ogg_thread_running = 0; + +static void ogg_add_callback(int voice) +{ + if (!ogg_thread_running) + { + ASND_StopVoice(0); + return; + } + + if (private_ogg.flag & 128) + return; /* Ogg is paused */ + + if (private_ogg.pcm_indx >= READ_SAMPLES) + { + if (ASND_AddVoice(0, + (void *) private_ogg.pcmout[private_ogg.pcmout_pos], + private_ogg.pcm_indx << 1) == 0) + { + private_ogg.pcmout_pos ^= 1; + private_ogg.pcm_indx = 0; + private_ogg.flag = 0; + LWP_ThreadSignal(oggplayer_queue); + } + } + else + { + if (private_ogg.flag & 64) + { + private_ogg.flag &= ~64; + LWP_ThreadSignal(oggplayer_queue); + } + } +} + +static void * ogg_player_thread(private_data_ogg * priv) +{ + int first_time = 1; + long ret; + + /* init */ + LWP_InitQueue(&oggplayer_queue); + + priv[0].vi = ov_info(&priv[0].vf, -1); + + ASND_Pause(0); + + priv[0].pcm_indx = 0; + priv[0].pcmout_pos = 0; + priv[0].eof = 0; + priv[0].flag = 0; + priv[0].current_section = 0; + + ogg_thread_running = 1; + + while (!priv[0].eof && ogg_thread_running) + { + if (priv[0].flag) + LWP_ThreadSleep(oggplayer_queue); /* wait only when i have samples to send */ + + if (priv[0].flag == 0) /* wait to all samples are sended */ + { + if (ASND_TestPointer(0, priv[0].pcmout[priv[0].pcmout_pos]) + && ASND_StatusVoice(0) != SND_UNUSED) + { + priv[0].flag |= 64; + continue; + } + if (priv[0].pcm_indx < READ_SAMPLES) + { + priv[0].flag = 3; + + if (priv[0].seek_time >= 0) + { + ov_time_seek(&priv[0].vf, priv[0].seek_time); + priv[0].seek_time = -1; + } + + ret + = ov_read( + &priv[0].vf, + (void *) &priv[0].pcmout[priv[0].pcmout_pos][priv[0].pcm_indx], + MAX_PCMOUT,/*0,2,1,*/&priv[0].current_section); + priv[0].flag &= 192; + if (ret == 0) + { + /* EOF */ + if (priv[0].mode & 1) + ov_time_seek(&priv[0].vf, 0); /* repeat */ + else + priv[0].eof = 1; /* stops */ + } + else if (ret < 0) + { + /* error in the stream. Not a problem, just reporting it in + case we (the app) cares. In this case, we don't. */ + if (ret != OV_HOLE) + { + if (priv[0].mode & 1) + ov_time_seek(&priv[0].vf, 0); /* repeat */ + else + priv[0].eof = 1; /* stops */ + } + } + else + { + /* we don't bother dealing with sample rate changes, etc, but + you'll have to */ + priv[0].pcm_indx += ret >> 1; /* get 16 bits samples */ + } + } + else + priv[0].flag = 1; + } + + if (priv[0].flag == 1) + { + if (ASND_StatusVoice(0) == SND_UNUSED || first_time) + { + first_time = 0; + if (priv[0].vi->channels == 2) + { + ASND_SetVoice(0, VOICE_STEREO_16BIT, priv[0].vi->rate, 0, + (void *) priv[0].pcmout[priv[0].pcmout_pos], + priv[0].pcm_indx << 1, priv[0].volume, + priv[0].volume, ogg_add_callback); + priv[0].pcmout_pos ^= 1; + priv[0].pcm_indx = 0; + priv[0].flag = 0; + } + else + { + ASND_SetVoice(0, VOICE_MONO_16BIT, priv[0].vi->rate, 0, + (void *) priv[0].pcmout[priv[0].pcmout_pos], + priv[0].pcm_indx << 1, priv[0].volume, + priv[0].volume, ogg_add_callback); + priv[0].pcmout_pos ^= 1; + priv[0].pcm_indx = 0; + priv[0].flag = 0; + } + } + } + usleep(10); + } + ov_clear(&priv[0].vf); + priv[0].fd = -1; + priv[0].pcm_indx = 0; + + return 0; +} + +void StopOgg() +{ + ASND_StopVoice(0); + ogg_thread_running = 0; + + if(h_oggplayer != LWP_THREAD_NULL) + { + if(oggplayer_queue != LWP_TQUEUE_NULL) + LWP_ThreadSignal(oggplayer_queue); + LWP_JoinThread(h_oggplayer, NULL); + h_oggplayer = LWP_THREAD_NULL; + } + if(oggplayer_queue != LWP_TQUEUE_NULL) + { + LWP_CloseQueue(oggplayer_queue); + oggplayer_queue = LWP_TQUEUE_NULL; + } +} + +int PlayOgg(char * buf, int buflen, int time_pos, int mode) +{ + StopOgg(); + + private_ogg.fd = mem_open(buf, buflen); + + if (private_ogg.fd < 0) + { + private_ogg.fd = -1; + return -1; + } + + private_ogg.mode = mode; + private_ogg.eof = 0; + private_ogg.volume = 127; + private_ogg.flag = 0; + private_ogg.seek_time = -1; + + if (time_pos > 0) + private_ogg.seek_time = time_pos; + + if (ov_open_callbacks((void *) &private_ogg.fd, &private_ogg.vf, NULL, 0, callbacks) < 0) + { + mem_close(private_ogg.fd); /* mem_close() can too close files from devices */ + private_ogg.fd = -1; + ogg_thread_running = 0; + return -1; + } + + if (LWP_CreateThread(&h_oggplayer, (void *) ogg_player_thread, + &private_ogg, oggplayer_stack, STACKSIZE, 80) == -1) + { + ogg_thread_running = 0; + ov_clear(&private_ogg.vf); + private_ogg.fd = -1; + return -1; + } + return 0; +} + +void PauseOgg(int pause) +{ + if (pause) + { + private_ogg.flag |= 128; + } + else + { + if (private_ogg.flag & 128) + { + private_ogg.flag |= 64; + private_ogg.flag &= ~128; + if (ogg_thread_running > 0) + { + LWP_ThreadSignal(oggplayer_queue); + } + } + } +} + +int StatusOgg() +{ + if (ogg_thread_running == 0) + return -1; /* Error */ + else if (private_ogg.eof) + return 255; /* EOF */ + else if (private_ogg.flag & 128) + return 2; /* paused */ + else + return 1; /* running */ +} + +void SetVolumeOgg(int volume) +{ + private_ogg.volume = volume; + ASND_ChangeVolumeVoice(0, volume, volume); +} + +s32 GetTimeOgg() +{ + int ret; + if (ogg_thread_running == 0 || private_ogg.fd < 0) + return 0; + ret = ((s32) ov_time_tell(&private_ogg.vf)); + if (ret < 0) + ret = 0; + + return ret; +} + +void SetTimeOgg(s32 time_pos) +{ + if (time_pos >= 0) + private_ogg.seek_time = time_pos; +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/oggplayer.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/oggplayer.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/oggplayer.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/oggplayer.h index 85b95c6a88..c23988b942 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/oggplayer.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/oggplayer.h @@ -1,179 +1,179 @@ -/* - Copyright (c) 2008 Francisco Muoz 'Hermes' - All rights reserved. - - Proper (standard) vorbis usage by Tantric, 2009 - Threading modifications/corrections by Tantric, 2009 - - Redistribution and use in source and binary forms, with or without modification, are - permitted provided that the following conditions are met: - - - Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other - materials provided with the distribution. - - The names of the contributors may not be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef NO_SOUND - -#ifndef __OGGPLAYER_H__ -#define __OGGPLAYER_H__ - -#include -#include "tremor/ivorbiscodec.h" -#include "tremor/ivorbisfile.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define OGG_ONE_TIME 0 -#define OGG_INFINITE_TIME 1 - -#define OGG_STATUS_RUNNING 1 -#define OGG_STATUS_ERR -1 -#define OGG_STATUS_PAUSED 2 -#define OGG_STATUS_EOF 255 - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ -/* Player OGG functions */ -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -/* int PlayOgg(int fd, int time_pos, int mode); - - Play an Ogg file. This file can be loaded from memory (mem_open(void *ogg, int size_ogg)) or from device with open("device:file.ogg",O_RDONLY,0); - - NOTE: The file is closed by the player when you call PlayOgg(), StopOgg() or if it fail. - - -- Params --- - - buf: pointer to sound data - - buflen: buffer size in bytes - - time_pos: initial time position in the file (in milliseconds). For example, use 30000 to advance 30 seconds - - mode: Use OGG_ONE_TIME or OGG_INFINITE_TIME. When you use OGG_ONE_TIME the sound stops and StatusOgg() return OGG_STATUS_EOF - - return: 0- Ok, -1 Error - - */ - -int PlayOgg(char * buf, int buflen, int time_pos, int mode); - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -/* void StopOgg(); - - Stop an Ogg file. - - NOTE: The file is closed and the player thread is released - - -- Params --- - - - */ - -void StopOgg(); - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -/* void PauseOgg(int pause); - - Pause an Ogg file. - - -- Params --- - - pause: 0 -> continue, 1-> pause - - */ - -void PauseOgg(int pause); - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -/* int StatusOgg(); - - Return the Ogg status - - -- Params --- - - - return: OGG_STATUS_RUNNING - OGG_STATUS_ERR -> not initialized? - OGG_STATUS_PAUSED - OGG_STATUS_EOF -> player stopped by End Of File - - */ - -int StatusOgg(); - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -/* void SetVolumeOgg(int volume); - - Set the Ogg playing volume. - NOTE: it change the volume of voice 0 (used for the Ogg player) - - -- Params --- - - volume: 0 to 255 (max) - - */ - -void SetVolumeOgg(int volume); - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -/* s32 GetTimeOgg(); - - Return the Ogg time from the starts of the file - - -- Params --- - - return: 0 -> Ok or error condition (you must ignore this value) - >0 -> time in milliseconds from the starts - - */ - -s32 GetTimeOgg(); - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -/* void SetTimeOgg(s32 time_pos); - - Set the time position - - NOTE: The file is closed by the player when you call PlayOgg(), StopOgg() or if it fail. - - -- Params --- - - time_pos: time position in the file (in milliseconds). For example, use 30000 to advance 30 seconds - - */ - -void SetTimeOgg(s32 time_pos); - -/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* + Copyright (c) 2008 Francisco Muoz 'Hermes' + All rights reserved. + + Proper (standard) vorbis usage by Tantric, 2009 + Threading modifications/corrections by Tantric, 2009 + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + - The names of the contributors may not be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef NO_SOUND + +#ifndef __OGGPLAYER_H__ +#define __OGGPLAYER_H__ + +#include +#include "tremor/ivorbiscodec.h" +#include "tremor/ivorbisfile.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define OGG_ONE_TIME 0 +#define OGG_INFINITE_TIME 1 + +#define OGG_STATUS_RUNNING 1 +#define OGG_STATUS_ERR -1 +#define OGG_STATUS_PAUSED 2 +#define OGG_STATUS_EOF 255 + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ +/* Player OGG functions */ +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +/* int PlayOgg(int fd, int time_pos, int mode); + + Play an Ogg file. This file can be loaded from memory (mem_open(void *ogg, int size_ogg)) or from device with open("device:file.ogg",O_RDONLY,0); + + NOTE: The file is closed by the player when you call PlayOgg(), StopOgg() or if it fail. + + -- Params --- + + buf: pointer to sound data + + buflen: buffer size in bytes + + time_pos: initial time position in the file (in milliseconds). For example, use 30000 to advance 30 seconds + + mode: Use OGG_ONE_TIME or OGG_INFINITE_TIME. When you use OGG_ONE_TIME the sound stops and StatusOgg() return OGG_STATUS_EOF + + return: 0- Ok, -1 Error + + */ + +int PlayOgg(char * buf, int buflen, int time_pos, int mode); + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +/* void StopOgg(); + + Stop an Ogg file. + + NOTE: The file is closed and the player thread is released + + -- Params --- + + + */ + +void StopOgg(); + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +/* void PauseOgg(int pause); + + Pause an Ogg file. + + -- Params --- + + pause: 0 -> continue, 1-> pause + + */ + +void PauseOgg(int pause); + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +/* int StatusOgg(); + + Return the Ogg status + + -- Params --- + + + return: OGG_STATUS_RUNNING + OGG_STATUS_ERR -> not initialized? + OGG_STATUS_PAUSED + OGG_STATUS_EOF -> player stopped by End Of File + + */ + +int StatusOgg(); + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +/* void SetVolumeOgg(int volume); + + Set the Ogg playing volume. + NOTE: it change the volume of voice 0 (used for the Ogg player) + + -- Params --- + + volume: 0 to 255 (max) + + */ + +void SetVolumeOgg(int volume); + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +/* s32 GetTimeOgg(); + + Return the Ogg time from the starts of the file + + -- Params --- + + return: 0 -> Ok or error condition (you must ignore this value) + >0 -> time in milliseconds from the starts + + */ + +s32 GetTimeOgg(); + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +/* void SetTimeOgg(s32 time_pos); + + Set the time position + + NOTE: The file is closed by the player when you call PlayOgg(), StopOgg() or if it fail. + + -- Params --- + + time_pos: time position in the file (in milliseconds). For example, use 30000 to advance 30 seconds + + */ + +void SetTimeOgg(s32 time_pos); + +/*------------------------------------------------------------------------------------------------------------------------------------------------------*/ + +#ifdef __cplusplus +} +#endif + +#endif + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/vi_encoder.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/vi_encoder.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/vi_encoder.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/vi_encoder.c index 402fa79199..a79e6e90d2 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/vi_encoder.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/vi_encoder.c @@ -1,565 +1,565 @@ -/**************************************************************************** - * vi_encoder.c - * - * Wii Audio/Video Encoder support - * - * Copyright (C) 2009 Eke-Eke, with some code from libogc (C) Hector Martin - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifdef HW_RVL - -#include -#include -#include -#include - -#include "vi_encoder.h" - -/**************************************************************************** - * I2C driver by Hector Martin (marcan) - * - ****************************************************************************/ - -#define _SHIFTL(v, s, w) \ - ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) -#define _SHIFTR(v, s, w) \ - ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) - -extern void udelay(int us); - -static u32 i2cIdentFirst = 0; -static u32 i2cIdentFlag = 1; -static vu16* const _viReg = (u16*)0xCC002000; -static vu32* const _i2cReg = (u32*)0xCD800000; - -static inline void __viOpenI2C(u32 channel) -{ - u32 val = ((_i2cReg[49]&~0x8000)|0x4000); - val |= _SHIFTL(channel,15,1); - _i2cReg[49] = val; -} - -static inline u32 __viSetSCL(u32 channel) -{ - u32 val = (_i2cReg[48]&~0x4000); - val |= _SHIFTL(channel,14,1); - _i2cReg[48] = val; - return 1; -} -static inline u32 __viSetSDA(u32 channel) -{ - u32 val = (_i2cReg[48]&~0x8000); - val |= _SHIFTL(channel,15,1); - _i2cReg[48] = val; - return 1; -} - -static inline u32 __viGetSDA() -{ - return _SHIFTR(_i2cReg[50],15,1); -} - -static inline void __viCheckI2C() -{ - __viOpenI2C(0); - udelay(4); - - i2cIdentFlag = 0; - if(__viGetSDA()!=0) i2cIdentFlag = 1; -} - -static u32 __sendSlaveAddress(u8 addr) -{ - u32 i; - - __viSetSDA(i2cIdentFlag^1); - udelay(2); - - __viSetSCL(0); - for(i=0;i<8;i++) { - if(addr&0x80) __viSetSDA(i2cIdentFlag); - else __viSetSDA(i2cIdentFlag^1); - udelay(2); - - __viSetSCL(1); - udelay(2); - - __viSetSCL(0); - addr <<= 1; - } - - __viOpenI2C(0); - udelay(2); - - __viSetSCL(1); - udelay(2); - - if(i2cIdentFlag==1 && __viGetSDA()!=0) return 0; - - __viSetSDA(i2cIdentFlag^1); - __viOpenI2C(1); - __viSetSCL(0); - - return 1; -} - -static u32 __VISendI2CData(u8 addr,void *val,u32 len) -{ - u8 c; - s32 i,j; - u32 level,ret; - - if(i2cIdentFirst==0) { - __viCheckI2C(); - i2cIdentFirst = 1; - } - - _CPU_ISR_Disable(level); - - __viOpenI2C(1); - __viSetSCL(1); - - __viSetSDA(i2cIdentFlag); - udelay(4); - - ret = __sendSlaveAddress(addr); - if(ret==0) { - _CPU_ISR_Restore(level); - return 0; - } - - __viOpenI2C(1); - for(i=0;i> 8; - buf[2] = data & 0xFF; - __VISendI2CData(0xe0,buf,3); - udelay(2); -} - -static void __VIWriteI2CRegister32(u8 reg, u32 data) -{ - u8 buf[5]; - buf[0] = reg; - buf[1] = data >> 24; - buf[2] = (data >> 16) & 0xFF; - buf[3] = (data >> 8) & 0xFF; - buf[4] = data & 0xFF; - __VISendI2CData(0xe0,buf,5); - udelay(2); -} - -static void __VIWriteI2CRegisterBuf(u8 reg, int size, u8 *data) -{ - u8 buf[0x100]; - buf[0] = reg; - memcpy(&buf[1], data, size); - __VISendI2CData(0xe0,buf,size+1); - udelay(2); -} - -/**************************************************************************** - * A/V functions support (Eke-Eke) - * - ****************************************************************************/ -static const u8 gamma_coeffs[][33] = -{ - /* GM_0_0 */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - }, - - /* GM_0_1 */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x97, 0x3B, 0x49, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x80, 0x1B, 0x80, 0xEB, 0x00 - }, - - /* GM_0_2 */ - { - 0x00, 0x00, 0x00, 0x28, 0x00, 0x5A, 0x02, 0xDB, 0x0D, 0x8D, 0x30, 0x49, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x10, 0x00, 0x10, 0x40, 0x11, 0x00, 0x18, 0x80, 0x42, 0x00, 0xEB, 0x00 - }, - - /* GM_0_3 */ - { - 0x00, 0x00, 0x00, 0x7A, 0x02, 0x3C, 0x07, 0x6D, 0x12, 0x9C, 0x27, 0x24, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x10, 0x00, 0x10, 0xC0, 0x15, 0x80, 0x29, 0x00, 0x62, 0x00, 0xEB, 0x00 - }, - - /* GM_0_4 */ - { - 0x00, 0x4E, 0x01, 0x99, 0x05, 0x2D, 0x0B, 0x24, 0x14, 0x29, 0x20, 0xA4, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x00, 0x10, 0x10, 0x40, 0x12, 0xC0, 0x1D, 0xC0, 0x3B, 0x00, 0x78, 0xC0, 0xEB, 0x00 - }, - - /* GM_0_5 */ - { - 0x00, 0xEC, 0x03, 0xD7, 0x08, 0x00, 0x0D, 0x9E, 0x14, 0x3E, 0x1B, 0xDB, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x10, 0xC0, 0x16, 0xC0, 0x27, 0xC0, 0x4B, 0x80, 0x89, 0x80, 0xEB, 0x00 - }, - - /* GM_0_6 */ - { - 0x02, 0x76, 0x06, 0x66, 0x0A, 0x96, 0x0E, 0xF3, 0x13, 0xAC, 0x18, 0x49, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x12, 0x00, 0x1C, 0x00, 0x32, 0x80, 0x59, 0xC0, 0x96, 0x00, 0xEB, 0x00 - }, - - /* GM_0_7 */ - { - 0x04, 0xEC, 0x08, 0xF5, 0x0C, 0x96, 0x0F, 0xCF, 0x12, 0xC6, 0x15, 0x80, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3C, 0xC0, 0x66, 0x40, 0x9F, 0xC0, 0xEB, 0x00 - }, - - /* GM_0_8 */ - { - 0x08, 0x00, 0x0B, 0xAE, 0x0E, 0x00, 0x10, 0x30, 0x11, 0xCB, 0x13, 0x49, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x16, 0x80, 0x28, 0xC0, 0x46, 0x80, 0x71, 0x00, 0xA7, 0x80, 0xEB, 0x00 - }, - - /* GM_0_9 */ - { - 0x0B, 0xB1, 0x0E, 0x14, 0x0F, 0x2D, 0x10, 0x18, 0x10, 0xE5, 0x11, 0x80, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x19, 0x80, 0x2F, 0x80, 0x4F, 0xC0, 0x7A, 0x00, 0xAD, 0xC0, 0xEB, 0x00 - }, - - /* GM_1_0 */ - { - 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, - 0x10, 0x20, 0x40, 0x60, 0x80, 0xA0, 0xEB, - 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x60, 0x00, 0x80, 0x00, 0xA0, 0x00, 0xEB, 0x00 - }, - - /* GM_1_1 */ - { - 0x14, 0xEC, 0x11, 0xC2, 0x10, 0x78, 0x0F, 0xB6, 0x0F, 0x2F, 0x0E, 0xB6, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x21, 0x00, 0x3C, 0xC0, 0x5F, 0xC0, 0x89, 0x00, 0xB7, 0x80, 0xEB, 0x00 - }, - - /* GM_1_2 */ - { - 0x19, 0xD8, 0x13, 0x33, 0x10, 0xD2, 0x0F, 0x6D, 0x0E, 0x5E, 0x0D, 0xA4, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x25, 0x00, 0x43, 0x00, 0x66, 0xC0, 0x8F, 0x40, 0xBB, 0x40, 0xEB, 0x00 - }, - - /* GM_1_3 */ - { - 0x1E, 0xC4, 0x14, 0x7A, 0x11, 0x0F, 0xF, 0x0C, 0x0D, 0xA1, 0x0C, 0xB6, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x29, 0x00, 0x49, 0x00, 0x6D, 0x40, 0x94, 0xC0, 0xBE, 0x80, 0xEB, 0x00 - }, - - /* GM_1_4 */ - { - 0x24, 0x00, 0x15, 0x70, 0x11, 0x0F, 0x0E, 0xAA, 0x0D, 0x0F, 0x0B, 0xDB, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x2D, 0x40, 0x4E, 0xC0, 0x73, 0x00, 0x99, 0x80, 0xC1, 0x80, 0xEB, 0x00 - }, - - /* GM_1_5 */ - { - 0x29, 0x3B, 0x16, 0x3D, 0x11, 0x0F, 0x0E, 0x30, 0x0C, 0x7D, 0x0B, 0x24, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x31, 0x80, 0x54, 0x40, 0x78, 0x80, 0x9D, 0xC0, 0xC4, 0x00, 0xEB, 0x00 - }, - - /* GM_1_6 */ - { - 0x2E, 0x27, 0x17, 0x0A, 0x10, 0xD2, 0x0D, 0xE7, 0x0B, 0xEB, 0x0A, 0x80, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x35, 0x80, 0x59, 0x80, 0x7D, 0x40, 0xA1, 0xC0, 0xC6, 0x40, 0xEB, 0x00 - }, - - /* GM_1_7 */ - { - 0x33, 0x62, 0x17, 0x5C, 0x10, 0xD2, 0x0D, 0x6D, 0x0B, 0x6D, 0x09, 0xED, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x39, 0xC0, 0x5E, 0x40, 0x82, 0x00, 0xA5, 0x40, 0xC8, 0x40, 0xEB, 0x00 - }, - - /* GM_1_8 */ - { - 0x38, 0x4E, 0x17, 0xAE, 0x10, 0xB4, 0x0D, 0x0C, 0x0A, 0xF0, 0x09, 0x6D, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x3D, 0xC0, 0x62, 0xC0, 0x86, 0x40, 0xA8, 0x80, 0xCA, 0x00, 0xEB, 0x00 - }, - - /* GM_1_9 */ - { - 0x3D, 0x3B, 0x18, 0x00, 0x10, 0x5A, 0x0C, 0xC3, 0x0A, 0x72, 0x09, 0x00, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x41, 0xC0, 0x67, 0x40, 0x8A, 0x00, 0xAB, 0x80, 0xCB, 0x80, 0xEB, 0x00 - }, - - /* GM_2_0 */ - { - 0x41, 0xD8, 0x18, 0x28, 0x10, 0x3C, 0x0C, 0x49, 0x0A, 0x1F, 0x08, 0x92, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x45, 0x80, 0x6B, 0x40, 0x8D, 0xC0, 0xAE, 0x00, 0xCD, 0x00, 0xEB, 0x00 - }, - - /* GM_2_1 */ - { - 0x46, 0x76, 0x18, 0x51, 0x0F, 0xE1, 0x0C, 0x00, 0x09, 0xB6, 0x08, 0x36, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x49, 0x40, 0x6F, 0x40, 0x91, 0x00, 0xB0, 0x80, 0xCE, 0x40, 0xEB, 0x00 - }, - - /* GM_2_2 */ - { - 0x4A, 0xC4, 0x18, 0x7A, 0x0F, 0xA5, 0x0B, 0x9E, 0x09, 0x63, 0x07, 0xDB, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x4C, 0xC0, 0x73, 0x00, 0x94, 0x40, 0xB2, 0xC0, 0xCF, 0x80, 0xEB, 0x00 - }, - - /* GM_2_3 */ - { - 0x4F, 0x13, 0x18, 0x51, 0x0F, 0x69, 0x0B, 0x6D, 0x09, 0x0F, 0x07, 0x80, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x50, 0x40, 0x76, 0x40, 0x97, 0x00, 0xB5, 0x00, 0xD0, 0xC0, 0xEB, 0x00 - }, - - /* GM_2_4 */ - { - 0x53, 0x13, 0x18, 0x7A, 0x0F, 0x0F, 0x0B, 0x24, 0x08, 0xBC, 0x07, 0x36, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x53, 0x80, 0x79, 0xC0, 0x99, 0xC0, 0xB7, 0x00, 0xD1, 0xC0, 0xEB, 0x00 - }, - - /* GM_2_5 */ - { - 0x57, 0x13, 0x18, 0x51, 0x0E, 0xF0, 0x0A, 0xC3, 0x08, 0x7D, 0x06, 0xED, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x56, 0xC0, 0x7C, 0xC0, 0x9C, 0x80, 0xB8, 0xC0, 0xD2, 0xC0, 0xEB, 0x00 - }, - - /* GM_2_6 */ - { - 0x5B, 0x13, 0x18, 0x28, 0x0E, 0x96, 0x0A, 0x92, 0x08, 0x29, 0x06, 0xB6, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x5A, 0x00, 0x7F, 0xC0, 0x9E, 0xC0, 0xBA, 0x80, 0xD3, 0x80, 0xEB, 0x00 - }, - - /* GM_2_7 */ - { - 0x5E, 0xC4, 0x18, 0x00, 0x0E, 0x78, 0x0A, 0x30, 0x08, 0x00, 0x06, 0x6D, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x5D, 0x00, 0x82, 0x80, 0xA1, 0x40, 0xBC, 0x00, 0xD4, 0x80, 0xEB, 0x00 - }, - - /* GM_2_8 */ - { - 0x62, 0x76, 0x17, 0xD7, 0x0E, 0x1E, 0x0A, 0x00, 0x07, 0xC1, 0x06, 0x36, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x60, 0x00, 0x85, 0x40, 0xA3, 0x40, 0xBD, 0x80, 0xD5, 0x40, 0xEB, 0x00 - }, - - /* GM_2_9 */ - { - 0x65, 0xD8, 0x17, 0xAE, 0x0D, 0xE1, 0x09, 0xCF, 0x07, 0x82, 0x06, 0x00, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x62, 0xC0, 0x87, 0xC0, 0xA5, 0x40, 0xBF, 0x00, 0xD6, 0x00, 0xEB, 0x00 - }, - - /* GM_3_0 */ - { - 0x69, 0x3B, 0x17, 0x85, 0x0D, 0xA5, 0x09, 0x86, 0x07, 0x43, 0x05, 0xDB, - 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, - 0x10, 0x00, 0x65, 0x80, 0x8A, 0x40, 0xA7, 0x40, 0xC0, 0x40, 0xD6, 0x80, 0xEB, 0x00 - } -}; - -void __VISetTiming(u8 timing) -{ - __VIWriteI2CRegister8(0x00,timing); -} - -void __VISetYUVSEL(u8 dtvstatus) -{ - u8 vdacFlagRegion = 0; - u32 currTvMode = _SHIFTR(_viReg[1],8,2); - if(currTvMode==VI_PAL || currTvMode==VI_EURGB60) - vdacFlagRegion = 2; - else if(currTvMode==VI_MPAL) - vdacFlagRegion = 1; - - __VIWriteI2CRegister8(0x01, _SHIFTL(dtvstatus,5,3)|(vdacFlagRegion&0x1f)); -} - -void __VISetVBICtrl(u16 data) -{ - __VIWriteI2CRegister16(0x02, data); -} - -void __VISetTrapFilter(u8 disable) -{ - if (disable) - __VIWriteI2CRegister8(0x03, 0); - else - __VIWriteI2CRegister8(0x03, 1); -} - -void __VISet3in1Output(u8 enable) -{ - __VIWriteI2CRegister8(0x04,enable); -} - -void __VISetCGMS(u16 value) -{ - __VIWriteI2CRegister16(0x05, value); -} - -void __VISetWSS(u16 value) -{ - __VIWriteI2CRegister16(0x08, value); -} - -void __VISetRGBOverDrive(u8 value) -{ - u32 currTvMode = _SHIFTR(_viReg[1],8,2); - if (currTvMode == VI_DEBUG) - __VIWriteI2CRegister8(0x0A,(value<<1)|1); - else - __VIWriteI2CRegister8(0x0A,0); -} - -void __VISetOverSampling(void) -{ - __VIWriteI2CRegister8(0x65,1); -} - -void __VISetCCSEL(void) -{ - __VIWriteI2CRegister8(0x6a,1); -} - -void __VISetFilterEURGB60(u8 enable) -{ - __VIWriteI2CRegister8(0x6e, enable); -} - -void __VISetVolume(u16 value) -{ - __VIWriteI2CRegister16(0x71,value); -} - -void __VISetClosedCaption(u32 value) -{ - __VIWriteI2CRegister32(0x7a, value); -} - -void __VISetGamma(VIGamma gamma) -{ - u8 *data = (u8 *)&gamma_coeffs[gamma][0]; - __VIWriteI2CRegisterBuf(0x10, 0x21, data); -} - -/* User Configurable */ - -void VIDEO_SetGamma(VIGamma gamma) -{ - __VISetGamma(gamma); -} - -void VIDEO_SetTrapFilter(bool enable) -{ - if (enable) - __VISetTrapFilter(0); - else - __VISetTrapFilter(1); -} - -#endif +/**************************************************************************** + * vi_encoder.c + * + * Wii Audio/Video Encoder support + * + * Copyright (C) 2009 Eke-Eke, with some code from libogc (C) Hector Martin + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifdef HW_RVL + +#include +#include +#include +#include + +#include "vi_encoder.h" + +/**************************************************************************** + * I2C driver by Hector Martin (marcan) + * + ****************************************************************************/ + +#define _SHIFTL(v, s, w) \ + ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) +#define _SHIFTR(v, s, w) \ + ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) + +extern void udelay(int us); + +static u32 i2cIdentFirst = 0; +static u32 i2cIdentFlag = 1; +static vu16* const _viReg = (u16*)0xCC002000; +static vu32* const _i2cReg = (u32*)0xCD800000; + +static inline void __viOpenI2C(u32 channel) +{ + u32 val = ((_i2cReg[49]&~0x8000)|0x4000); + val |= _SHIFTL(channel,15,1); + _i2cReg[49] = val; +} + +static inline u32 __viSetSCL(u32 channel) +{ + u32 val = (_i2cReg[48]&~0x4000); + val |= _SHIFTL(channel,14,1); + _i2cReg[48] = val; + return 1; +} +static inline u32 __viSetSDA(u32 channel) +{ + u32 val = (_i2cReg[48]&~0x8000); + val |= _SHIFTL(channel,15,1); + _i2cReg[48] = val; + return 1; +} + +static inline u32 __viGetSDA() +{ + return _SHIFTR(_i2cReg[50],15,1); +} + +static inline void __viCheckI2C() +{ + __viOpenI2C(0); + udelay(4); + + i2cIdentFlag = 0; + if(__viGetSDA()!=0) i2cIdentFlag = 1; +} + +static u32 __sendSlaveAddress(u8 addr) +{ + u32 i; + + __viSetSDA(i2cIdentFlag^1); + udelay(2); + + __viSetSCL(0); + for(i=0;i<8;i++) { + if(addr&0x80) __viSetSDA(i2cIdentFlag); + else __viSetSDA(i2cIdentFlag^1); + udelay(2); + + __viSetSCL(1); + udelay(2); + + __viSetSCL(0); + addr <<= 1; + } + + __viOpenI2C(0); + udelay(2); + + __viSetSCL(1); + udelay(2); + + if(i2cIdentFlag==1 && __viGetSDA()!=0) return 0; + + __viSetSDA(i2cIdentFlag^1); + __viOpenI2C(1); + __viSetSCL(0); + + return 1; +} + +static u32 __VISendI2CData(u8 addr,void *val,u32 len) +{ + u8 c; + s32 i,j; + u32 level,ret; + + if(i2cIdentFirst==0) { + __viCheckI2C(); + i2cIdentFirst = 1; + } + + _CPU_ISR_Disable(level); + + __viOpenI2C(1); + __viSetSCL(1); + + __viSetSDA(i2cIdentFlag); + udelay(4); + + ret = __sendSlaveAddress(addr); + if(ret==0) { + _CPU_ISR_Restore(level); + return 0; + } + + __viOpenI2C(1); + for(i=0;i> 8; + buf[2] = data & 0xFF; + __VISendI2CData(0xe0,buf,3); + udelay(2); +} + +static void __VIWriteI2CRegister32(u8 reg, u32 data) +{ + u8 buf[5]; + buf[0] = reg; + buf[1] = data >> 24; + buf[2] = (data >> 16) & 0xFF; + buf[3] = (data >> 8) & 0xFF; + buf[4] = data & 0xFF; + __VISendI2CData(0xe0,buf,5); + udelay(2); +} + +static void __VIWriteI2CRegisterBuf(u8 reg, int size, u8 *data) +{ + u8 buf[0x100]; + buf[0] = reg; + memcpy(&buf[1], data, size); + __VISendI2CData(0xe0,buf,size+1); + udelay(2); +} + +/**************************************************************************** + * A/V functions support (Eke-Eke) + * + ****************************************************************************/ +static const u8 gamma_coeffs[][33] = +{ + /* GM_0_0 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + }, + + /* GM_0_1 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x97, 0x3B, 0x49, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x80, 0x1B, 0x80, 0xEB, 0x00 + }, + + /* GM_0_2 */ + { + 0x00, 0x00, 0x00, 0x28, 0x00, 0x5A, 0x02, 0xDB, 0x0D, 0x8D, 0x30, 0x49, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x40, 0x11, 0x00, 0x18, 0x80, 0x42, 0x00, 0xEB, 0x00 + }, + + /* GM_0_3 */ + { + 0x00, 0x00, 0x00, 0x7A, 0x02, 0x3C, 0x07, 0x6D, 0x12, 0x9C, 0x27, 0x24, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x10, 0x00, 0x10, 0xC0, 0x15, 0x80, 0x29, 0x00, 0x62, 0x00, 0xEB, 0x00 + }, + + /* GM_0_4 */ + { + 0x00, 0x4E, 0x01, 0x99, 0x05, 0x2D, 0x0B, 0x24, 0x14, 0x29, 0x20, 0xA4, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x00, 0x10, 0x10, 0x40, 0x12, 0xC0, 0x1D, 0xC0, 0x3B, 0x00, 0x78, 0xC0, 0xEB, 0x00 + }, + + /* GM_0_5 */ + { + 0x00, 0xEC, 0x03, 0xD7, 0x08, 0x00, 0x0D, 0x9E, 0x14, 0x3E, 0x1B, 0xDB, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x10, 0xC0, 0x16, 0xC0, 0x27, 0xC0, 0x4B, 0x80, 0x89, 0x80, 0xEB, 0x00 + }, + + /* GM_0_6 */ + { + 0x02, 0x76, 0x06, 0x66, 0x0A, 0x96, 0x0E, 0xF3, 0x13, 0xAC, 0x18, 0x49, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x12, 0x00, 0x1C, 0x00, 0x32, 0x80, 0x59, 0xC0, 0x96, 0x00, 0xEB, 0x00 + }, + + /* GM_0_7 */ + { + 0x04, 0xEC, 0x08, 0xF5, 0x0C, 0x96, 0x0F, 0xCF, 0x12, 0xC6, 0x15, 0x80, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3C, 0xC0, 0x66, 0x40, 0x9F, 0xC0, 0xEB, 0x00 + }, + + /* GM_0_8 */ + { + 0x08, 0x00, 0x0B, 0xAE, 0x0E, 0x00, 0x10, 0x30, 0x11, 0xCB, 0x13, 0x49, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x16, 0x80, 0x28, 0xC0, 0x46, 0x80, 0x71, 0x00, 0xA7, 0x80, 0xEB, 0x00 + }, + + /* GM_0_9 */ + { + 0x0B, 0xB1, 0x0E, 0x14, 0x0F, 0x2D, 0x10, 0x18, 0x10, 0xE5, 0x11, 0x80, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x19, 0x80, 0x2F, 0x80, 0x4F, 0xC0, 0x7A, 0x00, 0xAD, 0xC0, 0xEB, 0x00 + }, + + /* GM_1_0 */ + { + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x10, 0x20, 0x40, 0x60, 0x80, 0xA0, 0xEB, + 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x60, 0x00, 0x80, 0x00, 0xA0, 0x00, 0xEB, 0x00 + }, + + /* GM_1_1 */ + { + 0x14, 0xEC, 0x11, 0xC2, 0x10, 0x78, 0x0F, 0xB6, 0x0F, 0x2F, 0x0E, 0xB6, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x21, 0x00, 0x3C, 0xC0, 0x5F, 0xC0, 0x89, 0x00, 0xB7, 0x80, 0xEB, 0x00 + }, + + /* GM_1_2 */ + { + 0x19, 0xD8, 0x13, 0x33, 0x10, 0xD2, 0x0F, 0x6D, 0x0E, 0x5E, 0x0D, 0xA4, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x25, 0x00, 0x43, 0x00, 0x66, 0xC0, 0x8F, 0x40, 0xBB, 0x40, 0xEB, 0x00 + }, + + /* GM_1_3 */ + { + 0x1E, 0xC4, 0x14, 0x7A, 0x11, 0x0F, 0xF, 0x0C, 0x0D, 0xA1, 0x0C, 0xB6, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x29, 0x00, 0x49, 0x00, 0x6D, 0x40, 0x94, 0xC0, 0xBE, 0x80, 0xEB, 0x00 + }, + + /* GM_1_4 */ + { + 0x24, 0x00, 0x15, 0x70, 0x11, 0x0F, 0x0E, 0xAA, 0x0D, 0x0F, 0x0B, 0xDB, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x2D, 0x40, 0x4E, 0xC0, 0x73, 0x00, 0x99, 0x80, 0xC1, 0x80, 0xEB, 0x00 + }, + + /* GM_1_5 */ + { + 0x29, 0x3B, 0x16, 0x3D, 0x11, 0x0F, 0x0E, 0x30, 0x0C, 0x7D, 0x0B, 0x24, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x31, 0x80, 0x54, 0x40, 0x78, 0x80, 0x9D, 0xC0, 0xC4, 0x00, 0xEB, 0x00 + }, + + /* GM_1_6 */ + { + 0x2E, 0x27, 0x17, 0x0A, 0x10, 0xD2, 0x0D, 0xE7, 0x0B, 0xEB, 0x0A, 0x80, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x35, 0x80, 0x59, 0x80, 0x7D, 0x40, 0xA1, 0xC0, 0xC6, 0x40, 0xEB, 0x00 + }, + + /* GM_1_7 */ + { + 0x33, 0x62, 0x17, 0x5C, 0x10, 0xD2, 0x0D, 0x6D, 0x0B, 0x6D, 0x09, 0xED, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x39, 0xC0, 0x5E, 0x40, 0x82, 0x00, 0xA5, 0x40, 0xC8, 0x40, 0xEB, 0x00 + }, + + /* GM_1_8 */ + { + 0x38, 0x4E, 0x17, 0xAE, 0x10, 0xB4, 0x0D, 0x0C, 0x0A, 0xF0, 0x09, 0x6D, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x3D, 0xC0, 0x62, 0xC0, 0x86, 0x40, 0xA8, 0x80, 0xCA, 0x00, 0xEB, 0x00 + }, + + /* GM_1_9 */ + { + 0x3D, 0x3B, 0x18, 0x00, 0x10, 0x5A, 0x0C, 0xC3, 0x0A, 0x72, 0x09, 0x00, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x41, 0xC0, 0x67, 0x40, 0x8A, 0x00, 0xAB, 0x80, 0xCB, 0x80, 0xEB, 0x00 + }, + + /* GM_2_0 */ + { + 0x41, 0xD8, 0x18, 0x28, 0x10, 0x3C, 0x0C, 0x49, 0x0A, 0x1F, 0x08, 0x92, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x45, 0x80, 0x6B, 0x40, 0x8D, 0xC0, 0xAE, 0x00, 0xCD, 0x00, 0xEB, 0x00 + }, + + /* GM_2_1 */ + { + 0x46, 0x76, 0x18, 0x51, 0x0F, 0xE1, 0x0C, 0x00, 0x09, 0xB6, 0x08, 0x36, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x49, 0x40, 0x6F, 0x40, 0x91, 0x00, 0xB0, 0x80, 0xCE, 0x40, 0xEB, 0x00 + }, + + /* GM_2_2 */ + { + 0x4A, 0xC4, 0x18, 0x7A, 0x0F, 0xA5, 0x0B, 0x9E, 0x09, 0x63, 0x07, 0xDB, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x4C, 0xC0, 0x73, 0x00, 0x94, 0x40, 0xB2, 0xC0, 0xCF, 0x80, 0xEB, 0x00 + }, + + /* GM_2_3 */ + { + 0x4F, 0x13, 0x18, 0x51, 0x0F, 0x69, 0x0B, 0x6D, 0x09, 0x0F, 0x07, 0x80, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x50, 0x40, 0x76, 0x40, 0x97, 0x00, 0xB5, 0x00, 0xD0, 0xC0, 0xEB, 0x00 + }, + + /* GM_2_4 */ + { + 0x53, 0x13, 0x18, 0x7A, 0x0F, 0x0F, 0x0B, 0x24, 0x08, 0xBC, 0x07, 0x36, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x53, 0x80, 0x79, 0xC0, 0x99, 0xC0, 0xB7, 0x00, 0xD1, 0xC0, 0xEB, 0x00 + }, + + /* GM_2_5 */ + { + 0x57, 0x13, 0x18, 0x51, 0x0E, 0xF0, 0x0A, 0xC3, 0x08, 0x7D, 0x06, 0xED, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x56, 0xC0, 0x7C, 0xC0, 0x9C, 0x80, 0xB8, 0xC0, 0xD2, 0xC0, 0xEB, 0x00 + }, + + /* GM_2_6 */ + { + 0x5B, 0x13, 0x18, 0x28, 0x0E, 0x96, 0x0A, 0x92, 0x08, 0x29, 0x06, 0xB6, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x5A, 0x00, 0x7F, 0xC0, 0x9E, 0xC0, 0xBA, 0x80, 0xD3, 0x80, 0xEB, 0x00 + }, + + /* GM_2_7 */ + { + 0x5E, 0xC4, 0x18, 0x00, 0x0E, 0x78, 0x0A, 0x30, 0x08, 0x00, 0x06, 0x6D, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x5D, 0x00, 0x82, 0x80, 0xA1, 0x40, 0xBC, 0x00, 0xD4, 0x80, 0xEB, 0x00 + }, + + /* GM_2_8 */ + { + 0x62, 0x76, 0x17, 0xD7, 0x0E, 0x1E, 0x0A, 0x00, 0x07, 0xC1, 0x06, 0x36, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x60, 0x00, 0x85, 0x40, 0xA3, 0x40, 0xBD, 0x80, 0xD5, 0x40, 0xEB, 0x00 + }, + + /* GM_2_9 */ + { + 0x65, 0xD8, 0x17, 0xAE, 0x0D, 0xE1, 0x09, 0xCF, 0x07, 0x82, 0x06, 0x00, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x62, 0xC0, 0x87, 0xC0, 0xA5, 0x40, 0xBF, 0x00, 0xD6, 0x00, 0xEB, 0x00 + }, + + /* GM_3_0 */ + { + 0x69, 0x3B, 0x17, 0x85, 0x0D, 0xA5, 0x09, 0x86, 0x07, 0x43, 0x05, 0xDB, + 0x10, 0x1D, 0x36, 0x58, 0x82, 0xB3, 0xEB, + 0x10, 0x00, 0x65, 0x80, 0x8A, 0x40, 0xA7, 0x40, 0xC0, 0x40, 0xD6, 0x80, 0xEB, 0x00 + } +}; + +void __VISetTiming(u8 timing) +{ + __VIWriteI2CRegister8(0x00,timing); +} + +void __VISetYUVSEL(u8 dtvstatus) +{ + u8 vdacFlagRegion = 0; + u32 currTvMode = _SHIFTR(_viReg[1],8,2); + if(currTvMode==VI_PAL || currTvMode==VI_EURGB60) + vdacFlagRegion = 2; + else if(currTvMode==VI_MPAL) + vdacFlagRegion = 1; + + __VIWriteI2CRegister8(0x01, _SHIFTL(dtvstatus,5,3)|(vdacFlagRegion&0x1f)); +} + +void __VISetVBICtrl(u16 data) +{ + __VIWriteI2CRegister16(0x02, data); +} + +void __VISetTrapFilter(u8 disable) +{ + if (disable) + __VIWriteI2CRegister8(0x03, 0); + else + __VIWriteI2CRegister8(0x03, 1); +} + +void __VISet3in1Output(u8 enable) +{ + __VIWriteI2CRegister8(0x04,enable); +} + +void __VISetCGMS(u16 value) +{ + __VIWriteI2CRegister16(0x05, value); +} + +void __VISetWSS(u16 value) +{ + __VIWriteI2CRegister16(0x08, value); +} + +void __VISetRGBOverDrive(u8 value) +{ + u32 currTvMode = _SHIFTR(_viReg[1],8,2); + if (currTvMode == VI_DEBUG) + __VIWriteI2CRegister8(0x0A,(value<<1)|1); + else + __VIWriteI2CRegister8(0x0A,0); +} + +void __VISetOverSampling(void) +{ + __VIWriteI2CRegister8(0x65,1); +} + +void __VISetCCSEL(void) +{ + __VIWriteI2CRegister8(0x6a,1); +} + +void __VISetFilterEURGB60(u8 enable) +{ + __VIWriteI2CRegister8(0x6e, enable); +} + +void __VISetVolume(u16 value) +{ + __VIWriteI2CRegister16(0x71,value); +} + +void __VISetClosedCaption(u32 value) +{ + __VIWriteI2CRegister32(0x7a, value); +} + +void __VISetGamma(VIGamma gamma) +{ + u8 *data = (u8 *)&gamma_coeffs[gamma][0]; + __VIWriteI2CRegisterBuf(0x10, 0x21, data); +} + +/* User Configurable */ + +void VIDEO_SetGamma(VIGamma gamma) +{ + __VISetGamma(gamma); +} + +void VIDEO_SetTrapFilter(bool enable) +{ + if (enable) + __VISetTrapFilter(0); + else + __VISetTrapFilter(1); +} + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/vi_encoder.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/vi_encoder.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/vi_encoder.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/vi_encoder.h index f5290dc568..41c72cb2cf 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/utils/vi_encoder.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/gx/utils/vi_encoder.h @@ -1,79 +1,79 @@ -/**************************************************************************** - * vi_encoder.c - * - * Wii Audio/Video Encoder support - * - * Copyright (C) 2009 Eke-Eke, with some code from libogc (C) Hector Martin - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ -#ifdef HW_RVL - -typedef enum -{ - VI_GM_0_1=1, - VI_GM_0_2, - VI_GM_0_3, - VI_GM_0_4, - VI_GM_0_5, - VI_GM_0_6, - VI_GM_0_7, - VI_GM_0_8, - VI_GM_0_9, - VI_GM_1_0, - VI_GM_1_1, - VI_GM_1_2, - VI_GM_1_3, - VI_GM_1_4, - VI_GM_1_5, - VI_GM_1_6, - VI_GM_1_7, - VI_GM_1_8, - VI_GM_1_9, - VI_GM_2_0, - VI_GM_2_1, - VI_GM_2_2, - VI_GM_2_3, - VI_GM_2_4, - VI_GM_2_5, - VI_GM_2_6, - VI_GM_2_7, - VI_GM_2_8, - VI_GM_2_9, - VI_GM_3_0 -} VIGamma; - -extern void VIDEO_SetGamma(VIGamma gamma); -extern void VIDEO_SetTrapFilter(bool enable); - - -#endif +/**************************************************************************** + * vi_encoder.c + * + * Wii Audio/Video Encoder support + * + * Copyright (C) 2009 Eke-Eke, with some code from libogc (C) Hector Martin + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ +#ifdef HW_RVL + +typedef enum +{ + VI_GM_0_1=1, + VI_GM_0_2, + VI_GM_0_3, + VI_GM_0_4, + VI_GM_0_5, + VI_GM_0_6, + VI_GM_0_7, + VI_GM_0_8, + VI_GM_0_9, + VI_GM_1_0, + VI_GM_1_1, + VI_GM_1_2, + VI_GM_1_3, + VI_GM_1_4, + VI_GM_1_5, + VI_GM_1_6, + VI_GM_1_7, + VI_GM_1_8, + VI_GM_1_9, + VI_GM_2_0, + VI_GM_2_1, + VI_GM_2_2, + VI_GM_2_3, + VI_GM_2_4, + VI_GM_2_5, + VI_GM_2_6, + VI_GM_2_7, + VI_GM_2_8, + VI_GM_2_9, + VI_GM_3_0 +} VIGamma; + +extern void VIDEO_SetGamma(VIGamma gamma); +extern void VIDEO_SetTrapFilter(bool enable); + + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/hvc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/hvc.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/hvc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/hvc.h index 85e9d025c8..ebda28562e 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/hvc.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/hvc.h @@ -1,652 +1,652 @@ -/*************************************************************************************** - * Genesis Plus - * HV Counters - * - * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald - * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -/* - NTSC, 256x192 - ------------- - - Lines Description - - 192 Active display - 24 Bottom border - 3 Bottom blanking - 3 Vertical blanking - 13 Top blanking - 27 Top border - - V counter values - 00-DA, D5-FF - - NTSC, 256x224 - ------------- - - Lines Description - - 224 Active display - 8 Bottom border - 3 Bottom blanking - 3 Vertical blanking - 13 Top blanking - 11 Top border - - V counter values - 00-EA, E5-FF - - NTSC, 256x240 - ------------- - - This mode does not work on NTSC machines. All 30 rows of the name table are - displayed, there is no border, blanking, or retrace period, and the next - frame starts after the 30th row. The display rolls continuously though it - can be stabilized by adjusting the vertical hold. - - V counter values - 00-FF, 00-06 - - PAL, 256x192 - ------------ - - Lines Description - - 192 Active display - 48 Bottom border - 3 Bottom blanking - 3 Vertical blanking - 13 Top blanking - 54 Top border - - V counter values - 00-F2, BA-FF - - PAL, 256x224 - ------------ - - Lines Description - - 224 Active display - 32 Bottom border - 3 Bottom blanking - 3 Vertical blanking - 13 Top blanking - 38 Top border - - V counter values - 00-FF, 00-02, CA-FF - - PAL, 256x240 - ------------ - - Lines Description - - 240 Active display - 24 Bottom border - 3 Bottom blanking - 3 Vertical blanking - 13 Top blanking - 30 Top border - - V counter values - 00-FF, 00-0A, D2-FF - - Here are some details about what the different screen areas look like, - useful if you are emulating overscan or if you want to have a 'virtual' - vertical hold control in your emulator. - - Active display - Where the display generated by the VDP goes. - Bottom border - Filled with border color from VDP register #7. - Bottom blanking - Filled with a light black color. (like display was blanked) - Vertical sync - Filled with a pure black color. (like display was turned off) - Top blanking - Filled with a light black color. (like display was blanked) - Top border - Filled with the border color from VDP register #7. - -*/ -#ifndef _HVC_H_ -#define _HVC_H_ - -/***************************************************************/ -/* */ -/* H-counter timings in H32 & H40 modes (starts from HINT) */ -/* */ -/* There are normally 3420 Master Clock counts per raster line */ -/* with 342 dots/line in H32 mode & 420 dots/line in H40 mode. */ -/* */ -/* in H32 mode, dot clock is divided from MCLK (MCLK/10) */ -/* in H40 mode, dot clock is divided from EDCLK (EDCLK/2) */ -/* */ -/* EDCLK (external dot clock ?) is generated outside the VDP: */ -/* When HSYNC is low, EDCLK varies between MCLK/10 and MCLK/8, */ -/* otherwise it is fixed to MCLK/8. */ -/* */ -/* Notes: */ -/* (1) VDP register 12 bit 7 enables use of EDCLK when set */ -/* (2) VDP register 12 bit 5 forces HSYNC high when set */ -/* (3) H32 or H40 mode is selected with VDP register $0C bit 0 */ -/* and can be set independently from above settings */ -/* */ -/* On real hardware, non-standard timings can be obtained by */ -/* modifying those settings (for example, dot clock can be set */ -/* to MCLK/8 in both modes if HSYNC output is disabled and if */ -/* EDCLK input is enabled in H32 mode / disabled in H40 mode), */ -/* resulting in slightly different H-counter and VDP timings. */ -/* */ -/* Genesis Plus GX timings always assume standard settings i.e */ -/* HSYNC output always enabled and EDCLK input enabled in H40 */ -/* mode / disabled in H32 mode. */ -/* */ -/***************************************************************/ - -static const uint8 cycle2hc32[3420] = -{ - /* end of active display (14 pixels -> 140 Mcycles) , H interrupt triggered, Vcounter increment */ - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - - /* right border (14 pixels -> 140 Mcycles) */ - 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - - /* right blanking (9 pixels -> 90 Mcycles), VDP status HBLANK flag set */ - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0xe9, 0xe9, 0xe9, 0xe9, - 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, - 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, - 0xec, 0xec, - - /* horizontal sync (26 pixels -> 260 Mcycles) */ - 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, - 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, - 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, - 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, - 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, - 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, - 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, - 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, - 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, - 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, - 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, - 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, - 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, - 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, - 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, - 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, - 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, - - /* left blanking (24 pixels -> 240 Mcycles) */ - 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, - 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, - 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, - 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, - 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, - 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, - /* V interrupt triggered (MD mode) */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - - /* left border (13 pixels -> 130 Mcycles) , VDP status HBLANK flag cleared */ - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, - 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - - /* remaining active display (252 pixels -> 2520 Mcycles) */ - - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, - 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, - 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, - 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, - 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, - 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, - 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, - 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, - 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, - 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, - 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, - 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, - 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, - 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, - 0x1a, 0x1a, 0x1a, 0x1a, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, - 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, - 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1d, 0x1d, 0x1d, 0x1d, - 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, - 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, - 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, - 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, - 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, - 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, - 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, - 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, - 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, - 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, - 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, - 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, - 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31, - 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, - 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, - 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, - 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x39, - 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, - 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, - 0x3a, 0x3a, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, - 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, - 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3d, 0x3d, 0x3d, 0x3d, - 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, - 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, - 0x3e, 0x3e, 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, - 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, - 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, - 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, - 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, - 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, - 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, - 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, - 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, - 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, - 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, - 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, - 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, - 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, - 0x4e, 0x4e, 0x4e, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, - 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, - 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x51, - 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, - 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, - 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, - 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, - 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, - 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, - 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, - 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, - 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, - 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, - 0x5a, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, - 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, - 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5d, - 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, - 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, - 0x5e, 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, - 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, - 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, - 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, - 0x62, 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, - 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, - 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65, 0x65, 0x65, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, - 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, - 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, - 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, - 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, - 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, - 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, - 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, - 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, - 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, - 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, - 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, - 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, - 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, - 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, - 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, - 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, - 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, - 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, - 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, - 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, - 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, - 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, - 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, - 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, - 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84 -}; - -static const uint8 cycle2hc40[3420] = -{ - /* end of active display (16 pixels -> 128 Mcycles) , HINT triggered , Vcounter increment */ - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - - /* right border (14 pixels -> 112 Mcycles) */ - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, - 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, - 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, - 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, - - /* right blanking (9 pixels -> 72 Mcycles) , VDP status HBLANK flag set */ - 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, - 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, - 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, - 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, - - /* horizontal sync (32 pixels -> 313 Mcycles) */ - 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, - 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, - 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, - 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb, - 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, - 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, - 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, - 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, - 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, - 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, - 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, - 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, - 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, - 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, - 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, - 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, - 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, - 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, - 0xf6, - - /* left blanking (32 pixels -> 259 Mcycles) */ - 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, - 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, - 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, - 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, - 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, - 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, - 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, - 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - /* Vertical Interrupt triggered */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, - - /* left border (13 pixels -> 104 Mcycles) , VDP status HBLANK flag cleared */ - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, - 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - - /* remaining active display (304 pixels -> 2432 Mcycles) */ - 0x0d, 0x0d, 0x0d, 0x0d, - 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, - 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, - 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, - 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, - 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, - 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, - 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, - 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, - 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1a, 0x1a, 0x1a, 0x1a, - 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1b, 0x1b, 0x1b, 0x1b, - 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, - 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1d, 0x1d, 0x1d, 0x1d, - 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, - 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22, 0x22, - 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, - 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x24, - 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, - 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26, 0x26, - 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, - 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x28, - 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, - 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, - 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2c, 0x2c, 0x2c, 0x2c, - 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31, - 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33, 0x33, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x34, - 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, - 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x37, 0x37, 0x37, - 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x39, - 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3a, 0x3a, 0x3a, 0x3a, - 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3b, - 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3c, - 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3d, 0x3d, 0x3d, 0x3d, - 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3e, 0x3e, 0x3e, 0x3e, - 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, - 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, - 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x44, 0x44, 0x44, 0x44, - 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, - 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, - 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48, 0x48, 0x48, - 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, - 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4a, 0x4a, - 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4b, - 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 0x4c, 0x4c, - 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, - 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4e, 0x4e, 0x4e, 0x4e, - 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, - 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x50, 0x50, 0x50, 0x50, - 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x51, - 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52, 0x52, 0x52, - 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53, - 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, - 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x56, 0x56, 0x56, - 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, - 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x58, - 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, - 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5a, - 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5b, - 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x5c, - 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5d, - 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5e, 0x5e, 0x5e, 0x5e, - 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f, - 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, - 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x62, - 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x63, - 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64, 0x64, - 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65, 0x65, 0x65, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x67, - 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x68, - 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, - 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, - 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6b, - 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6c, - 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, - 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6e, - 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, - 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x70, - 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, - 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, - 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, - 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, - 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, - 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, - 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, - 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, - 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, - 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, - 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4}; - -#endif /* _HVC_H_ */ - +/*************************************************************************************** + * Genesis Plus + * HV Counters + * + * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald + * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +/* + NTSC, 256x192 + ------------- + + Lines Description + + 192 Active display + 24 Bottom border + 3 Bottom blanking + 3 Vertical blanking + 13 Top blanking + 27 Top border + + V counter values + 00-DA, D5-FF + + NTSC, 256x224 + ------------- + + Lines Description + + 224 Active display + 8 Bottom border + 3 Bottom blanking + 3 Vertical blanking + 13 Top blanking + 11 Top border + + V counter values + 00-EA, E5-FF + + NTSC, 256x240 + ------------- + + This mode does not work on NTSC machines. All 30 rows of the name table are + displayed, there is no border, blanking, or retrace period, and the next + frame starts after the 30th row. The display rolls continuously though it + can be stabilized by adjusting the vertical hold. + + V counter values + 00-FF, 00-06 + + PAL, 256x192 + ------------ + + Lines Description + + 192 Active display + 48 Bottom border + 3 Bottom blanking + 3 Vertical blanking + 13 Top blanking + 54 Top border + + V counter values + 00-F2, BA-FF + + PAL, 256x224 + ------------ + + Lines Description + + 224 Active display + 32 Bottom border + 3 Bottom blanking + 3 Vertical blanking + 13 Top blanking + 38 Top border + + V counter values + 00-FF, 00-02, CA-FF + + PAL, 256x240 + ------------ + + Lines Description + + 240 Active display + 24 Bottom border + 3 Bottom blanking + 3 Vertical blanking + 13 Top blanking + 30 Top border + + V counter values + 00-FF, 00-0A, D2-FF + + Here are some details about what the different screen areas look like, + useful if you are emulating overscan or if you want to have a 'virtual' + vertical hold control in your emulator. + + Active display - Where the display generated by the VDP goes. + Bottom border - Filled with border color from VDP register #7. + Bottom blanking - Filled with a light black color. (like display was blanked) + Vertical sync - Filled with a pure black color. (like display was turned off) + Top blanking - Filled with a light black color. (like display was blanked) + Top border - Filled with the border color from VDP register #7. + +*/ +#ifndef _HVC_H_ +#define _HVC_H_ + +/***************************************************************/ +/* */ +/* H-counter timings in H32 & H40 modes (starts from HINT) */ +/* */ +/* There are normally 3420 Master Clock counts per raster line */ +/* with 342 dots/line in H32 mode & 420 dots/line in H40 mode. */ +/* */ +/* in H32 mode, dot clock is divided from MCLK (MCLK/10) */ +/* in H40 mode, dot clock is divided from EDCLK (EDCLK/2) */ +/* */ +/* EDCLK (external dot clock ?) is generated outside the VDP: */ +/* When HSYNC is low, EDCLK varies between MCLK/10 and MCLK/8, */ +/* otherwise it is fixed to MCLK/8. */ +/* */ +/* Notes: */ +/* (1) VDP register 12 bit 7 enables use of EDCLK when set */ +/* (2) VDP register 12 bit 5 forces HSYNC high when set */ +/* (3) H32 or H40 mode is selected with VDP register $0C bit 0 */ +/* and can be set independently from above settings */ +/* */ +/* On real hardware, non-standard timings can be obtained by */ +/* modifying those settings (for example, dot clock can be set */ +/* to MCLK/8 in both modes if HSYNC output is disabled and if */ +/* EDCLK input is enabled in H32 mode / disabled in H40 mode), */ +/* resulting in slightly different H-counter and VDP timings. */ +/* */ +/* Genesis Plus GX timings always assume standard settings i.e */ +/* HSYNC output always enabled and EDCLK input enabled in H40 */ +/* mode / disabled in H32 mode. */ +/* */ +/***************************************************************/ + +static const uint8 cycle2hc32[3420] = +{ + /* end of active display (14 pixels -> 140 Mcycles) , H interrupt triggered, Vcounter increment */ + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, + 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, + 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, + + /* right border (14 pixels -> 140 Mcycles) */ + 0x8c, 0x8c, 0x8c, 0x8c, + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, + 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, + 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, + + /* right blanking (9 pixels -> 90 Mcycles), VDP status HBLANK flag set */ + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, + 0xe9, 0xe9, 0xe9, 0xe9, + 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, + 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, + 0xec, 0xec, + + /* horizontal sync (26 pixels -> 260 Mcycles) */ + 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, + 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, + 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, + 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, + 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, + 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, + 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, + 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, + 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, + 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, + 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, + 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, + 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, + 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, + 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, + 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, + + /* left blanking (24 pixels -> 240 Mcycles) */ + 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, + 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, + 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, + 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + /* V interrupt triggered (MD mode) */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + + /* left border (13 pixels -> 130 Mcycles) , VDP status HBLANK flag cleared */ + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + + /* remaining active display (252 pixels -> 2520 Mcycles) */ + + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, + 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, + 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1d, 0x1d, 0x1d, 0x1d, + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, + 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, + 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, + 0x2a, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, + 0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31, + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x39, + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, + 0x3a, 0x3a, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3d, 0x3d, 0x3d, 0x3d, + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, + 0x3e, 0x3e, 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, + 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, + 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, + 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, + 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, + 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, + 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, + 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, + 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, + 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, + 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, + 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, + 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, + 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, + 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, + 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, + 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, + 0x4e, 0x4e, 0x4e, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, + 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, + 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x51, + 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, + 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, + 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, + 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, + 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, + 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, + 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, + 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, + 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, + 0x5a, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, + 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, + 0x5e, 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, + 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, + 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, + 0x62, 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, + 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65, 0x65, 0x65, + 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, + 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, + 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, + 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, + 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, + 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, + 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, + 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, + 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, + 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, + 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, + 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, + 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, + 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, + 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, + 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, + 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, + 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, + 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, + 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, + 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, + 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, + 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, + 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, + 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84 +}; + +static const uint8 cycle2hc40[3420] = +{ + /* end of active display (16 pixels -> 128 Mcycles) , HINT triggered , Vcounter increment */ + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, + + /* right border (14 pixels -> 112 Mcycles) */ + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, + + /* right blanking (9 pixels -> 72 Mcycles) , VDP status HBLANK flag set */ + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, + 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + + /* horizontal sync (32 pixels -> 313 Mcycles) */ + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, + 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, + 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, + 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb, + 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, + 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, + 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, + 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, + 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, + 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, + 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, + 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, + 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, + 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, + 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, + 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, + 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, + 0xf6, + + /* left blanking (32 pixels -> 259 Mcycles) */ + 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, + 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, + 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, + 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, + 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, + 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + /* Vertical Interrupt triggered */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, + + /* left border (13 pixels -> 104 Mcycles) , VDP status HBLANK flag cleared */ + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + + /* remaining active display (304 pixels -> 2432 Mcycles) */ + 0x0d, 0x0d, 0x0d, 0x0d, + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1b, 0x1b, 0x1b, 0x1b, + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1d, 0x1d, 0x1d, 0x1d, + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x24, + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26, 0x26, + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2a, 0x2a, 0x2a, 0x2a, + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2c, 0x2c, 0x2c, 0x2c, + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2e, 0x2e, 0x2e, 0x2e, + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31, + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x34, + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x37, 0x37, 0x37, + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x39, + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3a, 0x3a, 0x3a, 0x3a, + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3d, 0x3d, 0x3d, 0x3d, + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3e, 0x3e, 0x3e, 0x3e, + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, + 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, + 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, + 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, + 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x46, 0x46, 0x46, 0x46, + 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, + 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48, 0x48, 0x48, + 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, + 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4a, 0x4a, + 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4b, + 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 0x4c, 0x4c, + 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, + 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4e, 0x4e, 0x4e, 0x4e, + 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, + 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x50, 0x50, 0x50, 0x50, + 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x51, + 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52, 0x52, 0x52, + 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53, + 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, + 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x56, 0x56, 0x56, + 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, + 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x58, + 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5a, + 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5b, + 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5e, 0x5e, 0x5e, 0x5e, + 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f, + 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x62, + 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x63, + 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64, 0x64, + 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65, 0x65, 0x65, + 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x68, + 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, + 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, + 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6b, + 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, + 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, + 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, + 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, + 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, + 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74, + 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, + 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x76, + 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, + 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, + 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, + 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, + 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, + 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, + 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x86, + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, 0x87, + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8c, + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8d, + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x95, + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x96, 0x96, 0x96, 0x96, + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98, + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 0xa0, + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4}; + +#endif /* _HVC_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/activator.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/activator.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/activator.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/activator.c index e2566356b6..0b0d63ac7b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/activator.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/activator.c @@ -1,134 +1,134 @@ -/*************************************************************************************** - * Genesis Plus - * Sega Activator support - * - * Copyright (C) 2011-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -static struct -{ - uint8 State; - uint8 Counter; -} activator[2]; - -void activator_reset(int index) -{ - - activator[index].State = 0x40; - activator[index].Counter = 0; -} - -INLINE unsigned char activator_read(int index) -{ - /* IR sensors 1-16 data (active low) */ - uint16 data = ~input.pad[index << 2]; - - /* D1 = D0 (data is ready) */ - uint8 temp = (activator[index].State & 0x01) << 1; - - switch (activator[index].Counter) - { - case 0: /* x x x x 0 1 0 0 */ - temp |= 0x04; - break; - - case 1: /* x x l1 l2 l3 l4 1 1 */ - temp |= ((data << 2) & 0x3C); - break; - - case 2: /* x x l5 l6 l7 l8 0 0 */ - temp |= ((data >> 2) & 0x3C); - break; - - case 3: /* x x h1 h2 h3 h4 1 1 */ - temp |= ((data >> 6) & 0x3C); - break; - - case 4: /* x x h5 h6 h7 h8 0 0 */ - temp |= ((data >> 10) & 0x3C); - break; - } - - return temp; -} - -INLINE void activator_write(int index, unsigned char data, unsigned char mask) -{ - /* update bits set as output only */ - data = (activator[index].State & ~mask) | (data & mask); - - /* TH transitions */ - if ((activator[index].State ^ data) & 0x40) - { - /* reset sequence cycle */ - activator[index].Counter = 0; - } - else - { - /* D0 transitions */ - if ((activator[index].State ^ data) & 0x01) - { - /* increment sequence cycle */ - if (activator[index].Counter < 4) - { - activator[index].Counter++; - } - } - } - - /* update internal state */ - activator[index].State = data; -} - -unsigned char activator_1_read(void) -{ - return activator_read(0); -} - -unsigned char activator_2_read(void) -{ - return activator_read(1); -} - -void activator_1_write(unsigned char data, unsigned char mask) -{ - activator_write(0, data, mask); -} - -void activator_2_write(unsigned char data, unsigned char mask) -{ - activator_write(1, data, mask); -} +/*************************************************************************************** + * Genesis Plus + * Sega Activator support + * + * Copyright (C) 2011-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +static struct +{ + uint8 State; + uint8 Counter; +} activator[2]; + +void activator_reset(int index) +{ + + activator[index].State = 0x40; + activator[index].Counter = 0; +} + +INLINE unsigned char activator_read(int index) +{ + /* IR sensors 1-16 data (active low) */ + uint16 data = ~input.pad[index << 2]; + + /* D1 = D0 (data is ready) */ + uint8 temp = (activator[index].State & 0x01) << 1; + + switch (activator[index].Counter) + { + case 0: /* x x x x 0 1 0 0 */ + temp |= 0x04; + break; + + case 1: /* x x l1 l2 l3 l4 1 1 */ + temp |= ((data << 2) & 0x3C); + break; + + case 2: /* x x l5 l6 l7 l8 0 0 */ + temp |= ((data >> 2) & 0x3C); + break; + + case 3: /* x x h1 h2 h3 h4 1 1 */ + temp |= ((data >> 6) & 0x3C); + break; + + case 4: /* x x h5 h6 h7 h8 0 0 */ + temp |= ((data >> 10) & 0x3C); + break; + } + + return temp; +} + +INLINE void activator_write(int index, unsigned char data, unsigned char mask) +{ + /* update bits set as output only */ + data = (activator[index].State & ~mask) | (data & mask); + + /* TH transitions */ + if ((activator[index].State ^ data) & 0x40) + { + /* reset sequence cycle */ + activator[index].Counter = 0; + } + else + { + /* D0 transitions */ + if ((activator[index].State ^ data) & 0x01) + { + /* increment sequence cycle */ + if (activator[index].Counter < 4) + { + activator[index].Counter++; + } + } + } + + /* update internal state */ + activator[index].State = data; +} + +unsigned char activator_1_read(void) +{ + return activator_read(0); +} + +unsigned char activator_2_read(void) +{ + return activator_read(1); +} + +void activator_1_write(unsigned char data, unsigned char mask) +{ + activator_write(0, data, mask); +} + +void activator_2_write(unsigned char data, unsigned char mask) +{ + activator_write(1, data, mask); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/activator.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/activator.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/activator.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/activator.h index 18c18fee24..7158404ac4 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/activator.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/activator.h @@ -1,49 +1,49 @@ -/*************************************************************************************** - * Genesis Plus - * Sega Activator support - * - * Copyright (C) 2011-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _ACTIVATOR_H_ -#define _ACTIVATOR_H_ - -/* Function prototypes */ -extern void activator_reset(int index); -extern unsigned char activator_1_read(void); -extern unsigned char activator_2_read(void); -extern void activator_1_write(unsigned char data, unsigned char mask); -extern void activator_2_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * Sega Activator support + * + * Copyright (C) 2011-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _ACTIVATOR_H_ +#define _ACTIVATOR_H_ + +/* Function prototypes */ +extern void activator_reset(int index); +extern unsigned char activator_1_read(void); +extern unsigned char activator_2_read(void); +extern void activator_1_write(unsigned char data, unsigned char mask); +extern void activator_2_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/gamepad.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/gamepad.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/gamepad.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/gamepad.c index 24efa9e9e5..649e3b2d76 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/gamepad.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/gamepad.c @@ -1,350 +1,350 @@ -/*************************************************************************************** - * Genesis Plus - * 2-Buttons, 3-Buttons & 6-Buttons controller support - * with support for J-Cart, 4-Way Play & Master Tap adapters - * - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "gamepad.h" - -static struct -{ - uint8 State; - uint8 Counter; - uint8 Timeout; - uint32 Latency; -} gamepad[MAX_DEVICES]; - -static struct -{ - uint8 Latch; - uint8 Counter; -} flipflop[2]; - -static uint8 latch; - - -void gamepad_reset(int port) -{ - /* default state (Gouketsuji Ichizoku / Power Instinct, Samurai Spirits / Samurai Shodown) */ - gamepad[port].State = 0x40; - gamepad[port].Counter = 0; - gamepad[port].Timeout = 0; - gamepad[port].Latency = 0; - - /* reset 4-WayPlay latch (controller #0 used by default) */ - latch = 0x00; - - /* reset Master Tap flip-flop */ - flipflop[port>>2].Latch = 0; - flipflop[port>>2].Counter = 0; -} - -void gamepad_refresh(int port) -{ - /* 6-buttons pad */ - if (gamepad[port].Timeout++ > 25) - { - gamepad[port].Counter = 0; - gamepad[port].Timeout = 0; - } -} - -void gamepad_end_frame(int port, unsigned int cycles) -{ - if (gamepad[port].Latency > cycles) - { - /* adjust TH direction switching latency for next frame */ - gamepad[port].Latency -= cycles; - } - else - { - /* reset TH direction switching latency */ - gamepad[port].Latency = 0; - } -} - -INLINE unsigned char gamepad_read(int port) -{ - /* D7 is not connected, D6 returns TH input state */ - unsigned int data = gamepad[port].State | 0x3F; - - /* pad state */ - unsigned int pad = input.pad[port]; - - /* get current TH input pulse counter */ - unsigned int step = gamepad[port].Counter | (data >> 6); - - /* get current timestamp */ - unsigned int cycles = ((system_hw & SYSTEM_PBC) == SYSTEM_MD) ? m68k.cycles : Z80.cycles; - - /* TH direction switching latency */ - if (cycles < gamepad[port].Latency) - { - /* TH internal state switching has not occured yet (Decap Attack) */ - step &= ~1; - } - - /* C/B or START/A buttons status is returned on D5-D4 (active low) */ - /* D-PAD or extra buttons status is returned on D3-D0 (active low) */ - switch (step) - { - /* From gen_hw.txt (*): - - A 6-button gamepad allows the extra buttons to be read based on how - many times TH is switched from 0 to 1. Observe the following sequence: - - TH = 1 : ?1CBRLDU 3-button pad return value - TH = 0 : ?0SA00DU 3-button pad return value - TH = 1 : ?1CBRLDU 3-button pad return value (*) - TH = 0 : ?0SA00DU 3-button pad return value (*) - TH = 1 : ?1CBRLDU 3-button pad return value - TH = 0 : ?0SA0000 D3-D0 are forced to '0' - TH = 1 : ?1CBMXYZ Extra buttons returned in D3-0 - TH = 0 : ?0SA1111 D3-D0 are forced to '1' - - From this point on, the standard 3-button pad values will be returned if any further TH transitions are done. - - (*) additional High-to-Low transition is necessary to access extra buttons according to official MK-1653-50 specification - */ - case 4: /*** Third Low ***/ - { - /* TH = 0 : ?0SA0000 D3-D0 forced to '0' */ - data &= ~(((pad >> 2) & 0x30) | 0x0F); - break; - } - - case 7: /*** Fourth High ***/ - { - /* TH = 1 : ?1CBMXYZ Extra buttons returned in D3-D0 */ - data &= ~((pad & 0x30) | ((pad >> 8) & 0x0F)); - break; - } - - case 6: /*** Fourth Low ***/ - { - /* TH = 0 : ?0SA1111 D3-D0 forced to '1' */ - data &= ~((pad >> 2) & 0x30); - break; - } - - default: /*** 3-button mode ***/ - { - if (step & 1) - { - /* TH = 1 : ?1CBRLDU */ - data &= ~(pad & 0x3F); - } - else - { - /* TH = 0 : ?0SA00DU */ - data &= ~((pad & 0x03) | ((pad >> 2) & 0x30) | 0x0C); - } - break; - } - } - - return data; -} - -INLINE void gamepad_write(int port, unsigned char data, unsigned char mask) -{ - /* Check TH pin direction */ - if (mask & 0x40) - { - /* get TH output state */ - data &= 0x40; - - /* reset TH direction switching latency */ - gamepad[port].Latency = 0; - - /* 6-Buttons controller specific */ - if ((input.dev[port] == DEVICE_PAD6B) && (gamepad[port].Counter < 8)) - { - /* TH 0->1 transition */ - if (data && !gamepad[port].State) - { - gamepad[port].Counter += 2; - gamepad[port].Timeout = 0; - } - } - } - else - { - /* retrieve current timestamp */ - unsigned int cycles = ((system_hw & SYSTEM_PBC) == SYSTEM_MD) ? m68k.cycles : Z80.cycles; - - /* TH is pulled high when not configured as output by I/O controller */ - data = 0x40; - - /* TH 0->1 internal switching does not occur immediately (verified on MK-1650 model) */ - if (!gamepad[port].State) - { - gamepad[port].Latency = cycles + 172; - } - } - - /* update TH input state */ - gamepad[port].State = data; -} - -/*--------------------------------------------------------------------------*/ -/* Default ports handlers */ -/*--------------------------------------------------------------------------*/ - -unsigned char gamepad_1_read(void) -{ - return gamepad_read(0); -} - -unsigned char gamepad_2_read(void) -{ - return gamepad_read(4); -} - -void gamepad_1_write(unsigned char data, unsigned char mask) -{ - gamepad_write(0, data, mask); -} - -void gamepad_2_write(unsigned char data, unsigned char mask) -{ - gamepad_write(4, data, mask); -} - -/*--------------------------------------------------------------------------*/ -/* 4-WayPlay ports handler */ -/*--------------------------------------------------------------------------*/ - -unsigned char wayplay_1_read(void) -{ - /* check if latched TH input on port B is HIGH */ - if (latch & 0x04) - { - /* 4-WayPlay detection : xxxxx00 */ - return 0x7C; - } - - /* latched TR & TL input state on port B select controller # (0-3) on port A */ - return gamepad_read(latch); -} - -unsigned char wayplay_2_read(void) -{ - return 0x7F; -} - -void wayplay_1_write(unsigned char data, unsigned char mask) -{ - /* latched TR & TL input state on port B select controller # (0-3) on port A */ - gamepad_write(latch & 0x03, data, mask); -} - -void wayplay_2_write(unsigned char data, unsigned char mask) -{ - /* pins not configured as output by I/O controller are pulled HIGH */ - data |= ~mask; - - /* check if both UP & DOWN inputs are LOW */ - if (!(data & 0x03)) - { - /* latch TH, TR & TL input state */ - latch = (data >> 4) & 0x07; - } -} - - -/*--------------------------------------------------------------------------*/ -/* J-Cart memory handlers */ -/*--------------------------------------------------------------------------*/ - -unsigned int jcart_read(unsigned int address) -{ - /* D6 returns TH state, D14 is fixed low (fixes Micro Machines 2) */ - return (gamepad_read(5) | ((gamepad_read(6) & 0x3F) << 8)); -} - -void jcart_write(unsigned int address, unsigned int data) -{ - data = (data & 0x01) << 6; - gamepad_write(5, data, 0x40); - gamepad_write(6, data, 0x40); -} - - -/*--------------------------------------------------------------------------*/ -/* Master Tap ports handler (unofficial, designed by Furrtek) */ -/* cf. http://www.smspower.org/uploads/Homebrew/BOoM-SMS-sms4p_2.png */ -/*--------------------------------------------------------------------------*/ -unsigned char mastertap_1_read(void) -{ - return gamepad_read(flipflop[0].Counter); -} - -unsigned char mastertap_2_read(void) -{ - return gamepad_read(flipflop[1].Counter + 4); -} - -void mastertap_1_write(unsigned char data, unsigned char mask) -{ - /* update bits set as output only */ - data = (flipflop[0].Latch & ~mask) | (data & mask); - - /* check TH 1->0 transitions */ - if ((flipflop[0].Latch & 0x40) && !(data & 0x40)) - { - flipflop[0].Counter = (flipflop[0].Counter + 1) & 0x03; - } - - /* update internal state */ - flipflop[0].Latch = data; -} - -void mastertap_2_write(unsigned char data, unsigned char mask) -{ - /* update bits set as output only */ - data = (flipflop[1].Latch & ~mask) | (data & mask); - - /* check TH 1->0 transition */ - if ((flipflop[1].Latch & 0x40) && !(data & 0x40)) - { - flipflop[1].Counter = (flipflop[1].Counter + 1) & 0x03; - } - - /* update internal state */ - flipflop[1].Latch = data; -} +/*************************************************************************************** + * Genesis Plus + * 2-Buttons, 3-Buttons & 6-Buttons controller support + * with support for J-Cart, 4-Way Play & Master Tap adapters + * + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "gamepad.h" + +static struct +{ + uint8 State; + uint8 Counter; + uint8 Timeout; + uint32 Latency; +} gamepad[MAX_DEVICES]; + +static struct +{ + uint8 Latch; + uint8 Counter; +} flipflop[2]; + +static uint8 latch; + + +void gamepad_reset(int port) +{ + /* default state (Gouketsuji Ichizoku / Power Instinct, Samurai Spirits / Samurai Shodown) */ + gamepad[port].State = 0x40; + gamepad[port].Counter = 0; + gamepad[port].Timeout = 0; + gamepad[port].Latency = 0; + + /* reset 4-WayPlay latch (controller #0 used by default) */ + latch = 0x00; + + /* reset Master Tap flip-flop */ + flipflop[port>>2].Latch = 0; + flipflop[port>>2].Counter = 0; +} + +void gamepad_refresh(int port) +{ + /* 6-buttons pad */ + if (gamepad[port].Timeout++ > 25) + { + gamepad[port].Counter = 0; + gamepad[port].Timeout = 0; + } +} + +void gamepad_end_frame(int port, unsigned int cycles) +{ + if (gamepad[port].Latency > cycles) + { + /* adjust TH direction switching latency for next frame */ + gamepad[port].Latency -= cycles; + } + else + { + /* reset TH direction switching latency */ + gamepad[port].Latency = 0; + } +} + +INLINE unsigned char gamepad_read(int port) +{ + /* D7 is not connected, D6 returns TH input state */ + unsigned int data = gamepad[port].State | 0x3F; + + /* pad state */ + unsigned int pad = input.pad[port]; + + /* get current TH input pulse counter */ + unsigned int step = gamepad[port].Counter | (data >> 6); + + /* get current timestamp */ + unsigned int cycles = ((system_hw & SYSTEM_PBC) == SYSTEM_MD) ? m68k.cycles : Z80.cycles; + + /* TH direction switching latency */ + if (cycles < gamepad[port].Latency) + { + /* TH internal state switching has not occured yet (Decap Attack) */ + step &= ~1; + } + + /* C/B or START/A buttons status is returned on D5-D4 (active low) */ + /* D-PAD or extra buttons status is returned on D3-D0 (active low) */ + switch (step) + { + /* From gen_hw.txt (*): + + A 6-button gamepad allows the extra buttons to be read based on how + many times TH is switched from 0 to 1. Observe the following sequence: + + TH = 1 : ?1CBRLDU 3-button pad return value + TH = 0 : ?0SA00DU 3-button pad return value + TH = 1 : ?1CBRLDU 3-button pad return value (*) + TH = 0 : ?0SA00DU 3-button pad return value (*) + TH = 1 : ?1CBRLDU 3-button pad return value + TH = 0 : ?0SA0000 D3-D0 are forced to '0' + TH = 1 : ?1CBMXYZ Extra buttons returned in D3-0 + TH = 0 : ?0SA1111 D3-D0 are forced to '1' + + From this point on, the standard 3-button pad values will be returned if any further TH transitions are done. + + (*) additional High-to-Low transition is necessary to access extra buttons according to official MK-1653-50 specification + */ + case 4: /*** Third Low ***/ + { + /* TH = 0 : ?0SA0000 D3-D0 forced to '0' */ + data &= ~(((pad >> 2) & 0x30) | 0x0F); + break; + } + + case 7: /*** Fourth High ***/ + { + /* TH = 1 : ?1CBMXYZ Extra buttons returned in D3-D0 */ + data &= ~((pad & 0x30) | ((pad >> 8) & 0x0F)); + break; + } + + case 6: /*** Fourth Low ***/ + { + /* TH = 0 : ?0SA1111 D3-D0 forced to '1' */ + data &= ~((pad >> 2) & 0x30); + break; + } + + default: /*** 3-button mode ***/ + { + if (step & 1) + { + /* TH = 1 : ?1CBRLDU */ + data &= ~(pad & 0x3F); + } + else + { + /* TH = 0 : ?0SA00DU */ + data &= ~((pad & 0x03) | ((pad >> 2) & 0x30) | 0x0C); + } + break; + } + } + + return data; +} + +INLINE void gamepad_write(int port, unsigned char data, unsigned char mask) +{ + /* Check TH pin direction */ + if (mask & 0x40) + { + /* get TH output state */ + data &= 0x40; + + /* reset TH direction switching latency */ + gamepad[port].Latency = 0; + + /* 6-Buttons controller specific */ + if ((input.dev[port] == DEVICE_PAD6B) && (gamepad[port].Counter < 8)) + { + /* TH 0->1 transition */ + if (data && !gamepad[port].State) + { + gamepad[port].Counter += 2; + gamepad[port].Timeout = 0; + } + } + } + else + { + /* retrieve current timestamp */ + unsigned int cycles = ((system_hw & SYSTEM_PBC) == SYSTEM_MD) ? m68k.cycles : Z80.cycles; + + /* TH is pulled high when not configured as output by I/O controller */ + data = 0x40; + + /* TH 0->1 internal switching does not occur immediately (verified on MK-1650 model) */ + if (!gamepad[port].State) + { + gamepad[port].Latency = cycles + 172; + } + } + + /* update TH input state */ + gamepad[port].State = data; +} + +/*--------------------------------------------------------------------------*/ +/* Default ports handlers */ +/*--------------------------------------------------------------------------*/ + +unsigned char gamepad_1_read(void) +{ + return gamepad_read(0); +} + +unsigned char gamepad_2_read(void) +{ + return gamepad_read(4); +} + +void gamepad_1_write(unsigned char data, unsigned char mask) +{ + gamepad_write(0, data, mask); +} + +void gamepad_2_write(unsigned char data, unsigned char mask) +{ + gamepad_write(4, data, mask); +} + +/*--------------------------------------------------------------------------*/ +/* 4-WayPlay ports handler */ +/*--------------------------------------------------------------------------*/ + +unsigned char wayplay_1_read(void) +{ + /* check if latched TH input on port B is HIGH */ + if (latch & 0x04) + { + /* 4-WayPlay detection : xxxxx00 */ + return 0x7C; + } + + /* latched TR & TL input state on port B select controller # (0-3) on port A */ + return gamepad_read(latch); +} + +unsigned char wayplay_2_read(void) +{ + return 0x7F; +} + +void wayplay_1_write(unsigned char data, unsigned char mask) +{ + /* latched TR & TL input state on port B select controller # (0-3) on port A */ + gamepad_write(latch & 0x03, data, mask); +} + +void wayplay_2_write(unsigned char data, unsigned char mask) +{ + /* pins not configured as output by I/O controller are pulled HIGH */ + data |= ~mask; + + /* check if both UP & DOWN inputs are LOW */ + if (!(data & 0x03)) + { + /* latch TH, TR & TL input state */ + latch = (data >> 4) & 0x07; + } +} + + +/*--------------------------------------------------------------------------*/ +/* J-Cart memory handlers */ +/*--------------------------------------------------------------------------*/ + +unsigned int jcart_read(unsigned int address) +{ + /* D6 returns TH state, D14 is fixed low (fixes Micro Machines 2) */ + return (gamepad_read(5) | ((gamepad_read(6) & 0x3F) << 8)); +} + +void jcart_write(unsigned int address, unsigned int data) +{ + data = (data & 0x01) << 6; + gamepad_write(5, data, 0x40); + gamepad_write(6, data, 0x40); +} + + +/*--------------------------------------------------------------------------*/ +/* Master Tap ports handler (unofficial, designed by Furrtek) */ +/* cf. http://www.smspower.org/uploads/Homebrew/BOoM-SMS-sms4p_2.png */ +/*--------------------------------------------------------------------------*/ +unsigned char mastertap_1_read(void) +{ + return gamepad_read(flipflop[0].Counter); +} + +unsigned char mastertap_2_read(void) +{ + return gamepad_read(flipflop[1].Counter + 4); +} + +void mastertap_1_write(unsigned char data, unsigned char mask) +{ + /* update bits set as output only */ + data = (flipflop[0].Latch & ~mask) | (data & mask); + + /* check TH 1->0 transitions */ + if ((flipflop[0].Latch & 0x40) && !(data & 0x40)) + { + flipflop[0].Counter = (flipflop[0].Counter + 1) & 0x03; + } + + /* update internal state */ + flipflop[0].Latch = data; +} + +void mastertap_2_write(unsigned char data, unsigned char mask) +{ + /* update bits set as output only */ + data = (flipflop[1].Latch & ~mask) | (data & mask); + + /* check TH 1->0 transition */ + if ((flipflop[1].Latch & 0x40) && !(data & 0x40)) + { + flipflop[1].Counter = (flipflop[1].Counter + 1) & 0x03; + } + + /* update internal state */ + flipflop[1].Latch = data; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/gamepad.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/gamepad.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/gamepad.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/gamepad.h index 1a04bf332f..2901a84ce8 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/gamepad.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/gamepad.h @@ -1,62 +1,62 @@ -/*************************************************************************************** - * Genesis Plus - * 2-Buttons, 3-Buttons & 6-Buttons controller support - * with support for J-Cart, 4-Way Play & Master Tap adapters - * - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _GAMEPAD_H_ -#define _GAMEPAD_H_ - -/* Function prototypes */ -extern void gamepad_reset(int port); -extern void gamepad_refresh(int port); -extern void gamepad_end_frame(int port, unsigned int cycles); -extern unsigned char gamepad_1_read(void); -extern unsigned char gamepad_2_read(void); -extern void gamepad_1_write(unsigned char data, unsigned char mask); -extern void gamepad_2_write(unsigned char data, unsigned char mask); -extern unsigned char wayplay_1_read(void); -extern unsigned char wayplay_2_read(void); -extern void wayplay_1_write(unsigned char data, unsigned char mask); -extern void wayplay_2_write(unsigned char data, unsigned char mask); -extern unsigned int jcart_read(unsigned int address); -extern void jcart_write(unsigned int address, unsigned int data); -extern unsigned char mastertap_1_read(void); -extern unsigned char mastertap_2_read(void); -extern void mastertap_1_write(unsigned char data, unsigned char mask); -extern void mastertap_2_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * 2-Buttons, 3-Buttons & 6-Buttons controller support + * with support for J-Cart, 4-Way Play & Master Tap adapters + * + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _GAMEPAD_H_ +#define _GAMEPAD_H_ + +/* Function prototypes */ +extern void gamepad_reset(int port); +extern void gamepad_refresh(int port); +extern void gamepad_end_frame(int port, unsigned int cycles); +extern unsigned char gamepad_1_read(void); +extern unsigned char gamepad_2_read(void); +extern void gamepad_1_write(unsigned char data, unsigned char mask); +extern void gamepad_2_write(unsigned char data, unsigned char mask); +extern unsigned char wayplay_1_read(void); +extern unsigned char wayplay_2_read(void); +extern void wayplay_1_write(unsigned char data, unsigned char mask); +extern void wayplay_2_write(unsigned char data, unsigned char mask); +extern unsigned int jcart_read(unsigned int address); +extern void jcart_write(unsigned int address, unsigned int data); +extern unsigned char mastertap_1_read(void); +extern unsigned char mastertap_2_read(void); +extern void mastertap_1_write(unsigned char data, unsigned char mask); +extern void mastertap_2_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/graphic_board.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/graphic_board.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/graphic_board.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/graphic_board.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/graphic_board.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/graphic_board.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/graphic_board.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/graphic_board.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/input.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/input.c similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/input.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/input.c index 3c690d3cb2..6578dbb0ec 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/input.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/input.c @@ -1,483 +1,483 @@ -/*************************************************************************************** - * Genesis Plus - * Input peripherals support - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "gamepad.h" -#include "lightgun.h" -#include "mouse.h" -#include "activator.h" -#include "xe_1ap.h" -#include "teamplayer.h" -#include "paddle.h" -#include "sportspad.h" -#include "terebi_oekaki.h" -#include "graphic_board.h" - -t_input input; -int old_system[2] = {-1,-1}; - - -void input_init(void) -{ - int i, padtype; - int player = 0; - - for (i=0; i> 2); - break; - } - - case DEVICE_XE_1AP: - { - xe_1ap_reset(i); - break; - } - - case DEVICE_PADDLE: - { - paddle_reset(i); - break; - } - - case DEVICE_SPORTSPAD: - { - sportspad_reset(i); - break; - } - - case DEVICE_TEREBI: - { - terebi_oekaki_reset(); - break; - } - - case DEVICE_GRAPHIC_BOARD: - { - graphic_board_reset(i); - break; - } - - default: - { - break; - } - } - } - - /* Team Player */ - for (i=0; i<2; i++) - { - if (input.system[i] == SYSTEM_TEAMPLAYER) - { - teamplayer_reset(i); - } - } -} - -void input_refresh(void) -{ - int i; - for (i=0; i> 2); + break; + } + + case DEVICE_XE_1AP: + { + xe_1ap_reset(i); + break; + } + + case DEVICE_PADDLE: + { + paddle_reset(i); + break; + } + + case DEVICE_SPORTSPAD: + { + sportspad_reset(i); + break; + } + + case DEVICE_TEREBI: + { + terebi_oekaki_reset(); + break; + } + + case DEVICE_GRAPHIC_BOARD: + { + graphic_board_reset(i); + break; + } + + default: + { + break; + } + } + } + + /* Team Player */ + for (i=0; i<2; i++) + { + if (input.system[i] == SYSTEM_TEAMPLAYER) + { + teamplayer_reset(i); + } + } +} + +void input_refresh(void) +{ + int i; + for (i=0; i> 2) & 0x10); - - /* Check that TH is set as an input */ - if (io_reg[0x0F] & (0x02 << (port >> 1))) - { - /* Get current X position (phaser is only used in MS compatiblity mode) */ - int hcounter = hctab[(Z80.cycles + SMS_CYCLE_OFFSET) % MCYCLES_PER_LINE]; - - /* Compare with gun position */ - int dx = input.analog[port][0] - (hcounter << 1); - int dy = input.analog[port][1] - (v_counter); - - /* Check if current pixel is within lightgun spot ? */ - if ((abs(dy) <= 5) && (abs(dx) <= 60)) - { - /* set TH low */ - temp &= ~0x40; - - /* prevents multiple latch at each port read */ - if (lightgun.State) - { - /* latch estimated HC value */ - hvc_latch = 0x10000 | (input.x_offset + (input.analog[port][0] >> 1)); - lightgun.State = 0; - } - else - { - lightgun.State = 1; - } - } - } - - return temp & 0x7F; -} - -unsigned char phaser_1_read(void) -{ - return phaser_read(0); -} - -unsigned char phaser_2_read(void) -{ - return phaser_read(4); -} - - -/*--------------------------------------------------------------------------*/ -/* Sega Menacer */ -/*--------------------------------------------------------------------------*/ - -unsigned char menacer_read(void) -{ - /* D0=??? (INPUT_B), D1=TRIGGER (INPUT_A), D2=??? (INPUT_C), D3= START (INPUT_START) (active high) */ - /* TL & TR pins always return 0 (normally set as output) */ - /* TH always return 1 (0 on active pixel but button acquisition is always done during VBLANK) */ - unsigned data = input.pad[4] >> 4; - return ((data & 0x09) | ((data >> 1) & 0x02) | ((data << 1) & 0x04) | 0x40); -} - - -/*--------------------------------------------------------------------------*/ -/* Konami Justifiers */ -/*--------------------------------------------------------------------------*/ - -unsigned char justifier_read(void) -{ - /* Gun detection */ - if (lightgun.State & 0x40) - { - return 0x30; - } - - /* Return TRIGGER (INPUT_A) & START (INPUT_START) button status in D0-D1 (active low) */ - /* TL & TR pins should always return 1 (normally set as output) */ - /* LEFT & RIGHT pins should always return 0 */ - return (((~input.pad[lightgun.Port] >> 6) & 0x03) | 0x70); -} - -void justifier_write(unsigned char data, unsigned char mask) -{ - /* update bits set as output only, other bits are cleared (fixes Lethal Enforcers 2) */ - data &= mask; - - /* gun index */ - lightgun.Port = 4 + ((data >> 5) & 1); - - /* update internal state */ - lightgun.State = data; -} +/*************************************************************************************** + * Genesis Plus + * Sega Light Phaser, Menacer & Konami Justifiers support + * + * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +/************************************************************************************/ +/* */ +/* H-counter values returned in H40 & H32 modes */ +/* */ +/* Inside VDP, dot counter register is 9-bit, with only upper 8 bits being returned */ +/* */ +/* The number of dots per raster line is 342 in H32 mode and 420 in H40 mode */ +/* */ +/************************************************************************************/ + +static const uint8 hc_256[171] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, + 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF +}; + +static const uint8 hc_320[210] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, + 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, + 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, + 0xFE, 0xFF +}; + +static struct +{ + uint8 State; + uint8 Port; +} lightgun; + + +void lightgun_reset(int port) +{ + input.analog[port][0] = bitmap.viewport.w / 2; + input.analog[port][1] = bitmap.viewport.h / 2; + lightgun.State = 0x40; + lightgun.Port = 4; +} + +void lightgun_refresh(int port) +{ + /* Check that lightgun is enabled */ + if (port == lightgun.Port) + { + /* screen Y position */ + int y = input.analog[port][1] + input.y_offset; + + /* check if active line falls within current gun Y position */ + if ((y == v_counter) && (y < bitmap.viewport.h)) + { + /* HL enabled ? */ + if (io_reg[5] & 0x80) + { + /* screen X position */ + int x = input.analog[port][0]; + + /* Sega Menacer specific */ + if (input.system[1] == SYSTEM_MENACER) + { + /* raw position is scaled up by games */ + if (system_hw == SYSTEM_MCD) + { + x = (x * 304) / 320; + } + else + { + x = (x * 289) / 320; + } + } + + /* External Interrupt enabled ? */ + if (reg[11] & 0x08) + { + m68k_update_irq(2); + } + + /* HVC latch enabled ? */ + if (reg[0] & 0x02) + { + /* line accurate V-Counter value */ + hvc_latch = 0x10000 | (y << 8); + } + else + { + /* HACK: force HVC latch even when disabled (a few games does not lock HV Counter but instead applies larger offset value) */ + hvc_latch = 0x20000 | (y << 8); + } + + /* pixel accurate H-Counter value */ + if (reg[12] & 1) + { + hvc_latch |= hc_320[((x / 2) + input.x_offset) % 210]; + } + else + { + hvc_latch |= hc_256[((x / 2) + input.x_offset) % 171]; + } + } + } + else if (hvc_latch & 0x20000) + { + /* HVC should be free-running on other lines when latch is disabled (fixes "Gunfight - 3 in 1" randomization) */ + hvc_latch = 0; + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* Sega Phaser */ +/*--------------------------------------------------------------------------*/ + +INLINE unsigned char phaser_read(int port) +{ + /* TL returns TRIGGER (INPUT_A) button status (active low) */ + unsigned char temp = ~((input.pad[port] >> 2) & 0x10); + + /* Check that TH is set as an input */ + if (io_reg[0x0F] & (0x02 << (port >> 1))) + { + /* Get current X position (phaser is only used in MS compatiblity mode) */ + int hcounter = hctab[(Z80.cycles + SMS_CYCLE_OFFSET) % MCYCLES_PER_LINE]; + + /* Compare with gun position */ + int dx = input.analog[port][0] - (hcounter << 1); + int dy = input.analog[port][1] - (v_counter); + + /* Check if current pixel is within lightgun spot ? */ + if ((abs(dy) <= 5) && (abs(dx) <= 60)) + { + /* set TH low */ + temp &= ~0x40; + + /* prevents multiple latch at each port read */ + if (lightgun.State) + { + /* latch estimated HC value */ + hvc_latch = 0x10000 | (input.x_offset + (input.analog[port][0] >> 1)); + lightgun.State = 0; + } + else + { + lightgun.State = 1; + } + } + } + + return temp & 0x7F; +} + +unsigned char phaser_1_read(void) +{ + return phaser_read(0); +} + +unsigned char phaser_2_read(void) +{ + return phaser_read(4); +} + + +/*--------------------------------------------------------------------------*/ +/* Sega Menacer */ +/*--------------------------------------------------------------------------*/ + +unsigned char menacer_read(void) +{ + /* D0=??? (INPUT_B), D1=TRIGGER (INPUT_A), D2=??? (INPUT_C), D3= START (INPUT_START) (active high) */ + /* TL & TR pins always return 0 (normally set as output) */ + /* TH always return 1 (0 on active pixel but button acquisition is always done during VBLANK) */ + unsigned data = input.pad[4] >> 4; + return ((data & 0x09) | ((data >> 1) & 0x02) | ((data << 1) & 0x04) | 0x40); +} + + +/*--------------------------------------------------------------------------*/ +/* Konami Justifiers */ +/*--------------------------------------------------------------------------*/ + +unsigned char justifier_read(void) +{ + /* Gun detection */ + if (lightgun.State & 0x40) + { + return 0x30; + } + + /* Return TRIGGER (INPUT_A) & START (INPUT_START) button status in D0-D1 (active low) */ + /* TL & TR pins should always return 1 (normally set as output) */ + /* LEFT & RIGHT pins should always return 0 */ + return (((~input.pad[lightgun.Port] >> 6) & 0x03) | 0x70); +} + +void justifier_write(unsigned char data, unsigned char mask) +{ + /* update bits set as output only, other bits are cleared (fixes Lethal Enforcers 2) */ + data &= mask; + + /* gun index */ + lightgun.Port = 4 + ((data >> 5) & 1); + + /* update internal state */ + lightgun.State = data; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/lightgun.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/lightgun.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/lightgun.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/lightgun.h index 0021297451..1042594188 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/lightgun.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/lightgun.h @@ -1,51 +1,51 @@ -/*************************************************************************************** - * Genesis Plus - * Sega Light Phaser, Menacer & Konami Justifiers support - * - * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _LIGHTGUN_H_ -#define _LIGHTGUN_H_ - -/* Input devices port handlers */ -extern void lightgun_reset(int index); -extern void lightgun_refresh(int port); -extern unsigned char phaser_1_read(void); -extern unsigned char phaser_2_read(void); -extern unsigned char menacer_read(void); -extern unsigned char justifier_read(void); -extern void justifier_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * Sega Light Phaser, Menacer & Konami Justifiers support + * + * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _LIGHTGUN_H_ +#define _LIGHTGUN_H_ + +/* Input devices port handlers */ +extern void lightgun_reset(int index); +extern void lightgun_refresh(int port); +extern unsigned char phaser_1_read(void); +extern unsigned char phaser_2_read(void); +extern unsigned char menacer_read(void); +extern unsigned char justifier_read(void); +extern void justifier_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/mouse.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/mouse.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/mouse.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/mouse.c index 4fdda281da..44d84cca00 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/mouse.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/mouse.c @@ -1,159 +1,159 @@ -/*************************************************************************************** - * Genesis Plus - * Sega/Mega Mouse support - * - * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -static struct -{ - uint8 State; - uint8 Counter; - uint8 Wait; - uint8 Port; -} mouse; - -void mouse_reset(int port) -{ - input.analog[port][0] = 0; - input.analog[port][1] = 0; - mouse.State = 0x60; - mouse.Counter = 0; - mouse.Wait = 0; - mouse.Port = port; -} - -unsigned char mouse_read() -{ - unsigned int temp = 0x00; - int x = input.analog[mouse.Port][0]; - int y = input.analog[mouse.Port][1]; - - switch (mouse.Counter) - { - case 0: /* initial */ - temp = 0x00; - break; - - case 1: /* xxxx1011 */ - temp = 0x0B; - break; - - case 2: /* xxxx1111 */ - temp = 0x0F; - break; - - case 3: /* xxxx1111 */ - temp = 0x0F; - break; - - case 4: /* Axis sign & overflow (not emulated) bits */ - temp |= (x < 0); - temp |= (y < 0) << 1; - /* - temp |= (abs(x) > 255) << 2; - temp |= (abs(y) > 255) << 3; - */ - break; - - case 5: /* START, A, B, C buttons state (active high) */ - temp = (input.pad[mouse.Port] >> 4) & 0x0F; - break; - - case 6: /* X Axis MSB */ - temp = (x >> 4) & 0x0F; - break; - - case 7: /* X Axis LSB */ - temp = (x & 0x0F); - break; - - case 8: /* Y Axis MSB */ - temp = (y >> 4) & 0x0F; - break; - - case 9: /* Y Axis LSB */ - temp = (y & 0x0F); - break; - } - - /* TL = busy status */ - if (mouse.Wait) - { - /* wait before acknowledging handshake request */ - mouse.Wait--; - - /* TL = !TR (handshake in progress) */ - temp |= (~mouse.State & 0x20) >> 1;; - } - else - { - /* TL = TR (handshake completed) */ - temp |= (mouse.State & 0x20) >> 1; - } - - return temp; -} - -void mouse_write(unsigned char data, unsigned char mask) -{ - /* update bits set as output only */ - data = (mouse.State & ~mask) | (data & mask); - - /* TR transition */ - if ((mouse.State ^ data) & 0x20) - { - /* check if acquisition is started */ - if ((mouse.Counter > 0) && (mouse.Counter < 9)) - { - /* increment phase */ - mouse.Counter++; - } - - /* TL handshake latency (fix buggy mouse routine in Cannon Fodder, Shangai 2, Wacky World, Star Blade, ...) */ - mouse.Wait = 2; - } - - /* TH transition */ - if ((mouse.State ^ data) & 0x40) - { - /* start (TH=1->0) or stop (TH=0->1) data acquisition */ - mouse.Counter = (mouse.State >> 6) & 1; - } - - /* update internal state */ - mouse.State = data; -} +/*************************************************************************************** + * Genesis Plus + * Sega/Mega Mouse support + * + * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +static struct +{ + uint8 State; + uint8 Counter; + uint8 Wait; + uint8 Port; +} mouse; + +void mouse_reset(int port) +{ + input.analog[port][0] = 0; + input.analog[port][1] = 0; + mouse.State = 0x60; + mouse.Counter = 0; + mouse.Wait = 0; + mouse.Port = port; +} + +unsigned char mouse_read() +{ + unsigned int temp = 0x00; + int x = input.analog[mouse.Port][0]; + int y = input.analog[mouse.Port][1]; + + switch (mouse.Counter) + { + case 0: /* initial */ + temp = 0x00; + break; + + case 1: /* xxxx1011 */ + temp = 0x0B; + break; + + case 2: /* xxxx1111 */ + temp = 0x0F; + break; + + case 3: /* xxxx1111 */ + temp = 0x0F; + break; + + case 4: /* Axis sign & overflow (not emulated) bits */ + temp |= (x < 0); + temp |= (y < 0) << 1; + /* + temp |= (abs(x) > 255) << 2; + temp |= (abs(y) > 255) << 3; + */ + break; + + case 5: /* START, A, B, C buttons state (active high) */ + temp = (input.pad[mouse.Port] >> 4) & 0x0F; + break; + + case 6: /* X Axis MSB */ + temp = (x >> 4) & 0x0F; + break; + + case 7: /* X Axis LSB */ + temp = (x & 0x0F); + break; + + case 8: /* Y Axis MSB */ + temp = (y >> 4) & 0x0F; + break; + + case 9: /* Y Axis LSB */ + temp = (y & 0x0F); + break; + } + + /* TL = busy status */ + if (mouse.Wait) + { + /* wait before acknowledging handshake request */ + mouse.Wait--; + + /* TL = !TR (handshake in progress) */ + temp |= (~mouse.State & 0x20) >> 1;; + } + else + { + /* TL = TR (handshake completed) */ + temp |= (mouse.State & 0x20) >> 1; + } + + return temp; +} + +void mouse_write(unsigned char data, unsigned char mask) +{ + /* update bits set as output only */ + data = (mouse.State & ~mask) | (data & mask); + + /* TR transition */ + if ((mouse.State ^ data) & 0x20) + { + /* check if acquisition is started */ + if ((mouse.Counter > 0) && (mouse.Counter < 9)) + { + /* increment phase */ + mouse.Counter++; + } + + /* TL handshake latency (fix buggy mouse routine in Cannon Fodder, Shangai 2, Wacky World, Star Blade, ...) */ + mouse.Wait = 2; + } + + /* TH transition */ + if ((mouse.State ^ data) & 0x40) + { + /* start (TH=1->0) or stop (TH=0->1) data acquisition */ + mouse.Counter = (mouse.State >> 6) & 1; + } + + /* update internal state */ + mouse.State = data; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/mouse.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/mouse.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/mouse.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/mouse.h index baff23ca7a..ee27064eec 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/mouse.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/mouse.h @@ -1,47 +1,47 @@ -/*************************************************************************************** - * Genesis Plus - * Sega/Mega Mouse support - * - * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _MOUSE_H_ -#define _MOUSE_H_ - -/* Function prototypes */ -extern void mouse_reset(int port); -extern unsigned char mouse_read(void); -extern void mouse_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * Sega/Mega Mouse support + * + * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _MOUSE_H_ +#define _MOUSE_H_ + +/* Function prototypes */ +extern void mouse_reset(int port); +extern unsigned char mouse_read(void); +extern void mouse_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/paddle.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/paddle.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/paddle.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/paddle.c index bf655c58c1..9896b003f6 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/paddle.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/paddle.c @@ -1,111 +1,111 @@ -/*************************************************************************************** - * Genesis Plus - * Sega Paddle Control support - * - * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -static struct -{ - uint8 State; -} paddle[2]; - -void paddle_reset(int index) -{ - input.analog[index][0] = 128; - paddle[index>>2].State = 0x40; -} - -INLINE unsigned char paddle_read(int port) -{ - /* FIRE button status (active low) */ - unsigned char temp = ~(input.pad[port] & 0x10); - - /* Pad index */ - int index = port >> 2; - - /* Clear low bits */ - temp &= 0x70; - - /* Japanese model: automatic flip-flop */ - if (region_code < REGION_USA) - { - paddle[index].State ^= 0x40; - } - - if (paddle[index].State & 0x40) - { - /* return higher bits */ - temp |= (input.analog[port][0] >> 4) & 0x0F; - } - else - { - /* return lower bits */ - temp |= input.analog[port][0] & 0x0F; - - /* set TR low */ - temp &= ~0x20; - } - - return temp; -} - -INLINE void paddle_write(int index, unsigned char data, unsigned char mask) -{ - /* update bits set as output only */ - paddle[index].State = (paddle[index].State & ~mask) | (data & mask); -} - - -unsigned char paddle_1_read(void) -{ - return paddle_read(0); -} - -unsigned char paddle_2_read(void) -{ - return paddle_read(4); -} - -void paddle_1_write(unsigned char data, unsigned char mask) -{ - paddle_write(0, data, mask); -} - -void paddle_2_write(unsigned char data, unsigned char mask) -{ - paddle_write(1, data, mask); -} +/*************************************************************************************** + * Genesis Plus + * Sega Paddle Control support + * + * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +static struct +{ + uint8 State; +} paddle[2]; + +void paddle_reset(int index) +{ + input.analog[index][0] = 128; + paddle[index>>2].State = 0x40; +} + +INLINE unsigned char paddle_read(int port) +{ + /* FIRE button status (active low) */ + unsigned char temp = ~(input.pad[port] & 0x10); + + /* Pad index */ + int index = port >> 2; + + /* Clear low bits */ + temp &= 0x70; + + /* Japanese model: automatic flip-flop */ + if (region_code < REGION_USA) + { + paddle[index].State ^= 0x40; + } + + if (paddle[index].State & 0x40) + { + /* return higher bits */ + temp |= (input.analog[port][0] >> 4) & 0x0F; + } + else + { + /* return lower bits */ + temp |= input.analog[port][0] & 0x0F; + + /* set TR low */ + temp &= ~0x20; + } + + return temp; +} + +INLINE void paddle_write(int index, unsigned char data, unsigned char mask) +{ + /* update bits set as output only */ + paddle[index].State = (paddle[index].State & ~mask) | (data & mask); +} + + +unsigned char paddle_1_read(void) +{ + return paddle_read(0); +} + +unsigned char paddle_2_read(void) +{ + return paddle_read(4); +} + +void paddle_1_write(unsigned char data, unsigned char mask) +{ + paddle_write(0, data, mask); +} + +void paddle_2_write(unsigned char data, unsigned char mask) +{ + paddle_write(1, data, mask); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/paddle.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/paddle.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/paddle.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/paddle.h index 6097a55ff6..f6b4b48d51 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/paddle.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/paddle.h @@ -1,49 +1,49 @@ -/*************************************************************************************** - * Genesis Plus - * Sega Paddle Control support - * - * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _PADDLE_H_ -#define _PADDLE_H_ - -/* Function prototypes */ -extern void paddle_reset(int index); -extern unsigned char paddle_1_read(void); -extern unsigned char paddle_2_read(void); -extern void paddle_1_write(unsigned char data, unsigned char mask); -extern void paddle_2_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * Sega Paddle Control support + * + * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _PADDLE_H_ +#define _PADDLE_H_ + +/* Function prototypes */ +extern void paddle_reset(int index); +extern unsigned char paddle_1_read(void); +extern unsigned char paddle_2_read(void); +extern void paddle_1_write(unsigned char data, unsigned char mask); +extern void paddle_2_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/sportspad.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/sportspad.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/sportspad.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/sportspad.c index 8dab4cf000..ae99573e3a 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/sportspad.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/sportspad.c @@ -1,134 +1,134 @@ -/*************************************************************************************** - * Genesis Plus - * Sega Sports Pad support - * - * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -static struct -{ - uint8 State; - uint8 Counter; -} sportspad[2]; - -void sportspad_reset(int index) -{ - input.analog[index][0] = 128; - input.analog[index][1] = 128; - sportspad[index>>2].State = 0x40; - sportspad[index>>2].Counter = 0; -} - -INLINE unsigned char sportspad_read(int port) -{ - /* Buttons 1(B) & 2(C) status (active low) */ - unsigned char temp = ~(input.pad[port] & 0x30); - - /* Pad index */ - int index = port >> 2; - - /* Clear low bits */ - temp &= 0x70; - - /* Detect current state */ - switch (sportspad[index].Counter & 3) - { - case 1: - { - /* X position high bits */ - temp |= (input.analog[port][0] >> 4) & 0x0F; - break; - } - - case 2: - { - /* X position low bits */ - temp |= input.analog[port][0] & 0x0F; - break; - } - - case 3: - { - /* Y position high bits */ - temp |= (input.analog[port][1] >> 4) & 0x0F; - break; - } - - default: - { - /* Y position low bits */ - temp |= input.analog[port][1] & 0x0F; - break; - } - } - - return temp; -} - -INLINE void sportspad_write(int index, unsigned char data, unsigned char mask) -{ - /* update bits set as output only */ - data = (sportspad[index].State & ~mask) | (data & mask); - - /* check TH transitions */ - if ((data ^ sportspad[index].State) & 0x40) - { - sportspad[index].Counter++; - } - - /* update internal state */ - sportspad[index].State = data; -} - -unsigned char sportspad_1_read(void) -{ - return sportspad_read(0); -} - -unsigned char sportspad_2_read(void) -{ - return sportspad_read(4); -} - -void sportspad_1_write(unsigned char data, unsigned char mask) -{ - sportspad_write(0, data, mask); -} - -void sportspad_2_write(unsigned char data, unsigned char mask) -{ - sportspad_write(1, data, mask); -} +/*************************************************************************************** + * Genesis Plus + * Sega Sports Pad support + * + * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +static struct +{ + uint8 State; + uint8 Counter; +} sportspad[2]; + +void sportspad_reset(int index) +{ + input.analog[index][0] = 128; + input.analog[index][1] = 128; + sportspad[index>>2].State = 0x40; + sportspad[index>>2].Counter = 0; +} + +INLINE unsigned char sportspad_read(int port) +{ + /* Buttons 1(B) & 2(C) status (active low) */ + unsigned char temp = ~(input.pad[port] & 0x30); + + /* Pad index */ + int index = port >> 2; + + /* Clear low bits */ + temp &= 0x70; + + /* Detect current state */ + switch (sportspad[index].Counter & 3) + { + case 1: + { + /* X position high bits */ + temp |= (input.analog[port][0] >> 4) & 0x0F; + break; + } + + case 2: + { + /* X position low bits */ + temp |= input.analog[port][0] & 0x0F; + break; + } + + case 3: + { + /* Y position high bits */ + temp |= (input.analog[port][1] >> 4) & 0x0F; + break; + } + + default: + { + /* Y position low bits */ + temp |= input.analog[port][1] & 0x0F; + break; + } + } + + return temp; +} + +INLINE void sportspad_write(int index, unsigned char data, unsigned char mask) +{ + /* update bits set as output only */ + data = (sportspad[index].State & ~mask) | (data & mask); + + /* check TH transitions */ + if ((data ^ sportspad[index].State) & 0x40) + { + sportspad[index].Counter++; + } + + /* update internal state */ + sportspad[index].State = data; +} + +unsigned char sportspad_1_read(void) +{ + return sportspad_read(0); +} + +unsigned char sportspad_2_read(void) +{ + return sportspad_read(4); +} + +void sportspad_1_write(unsigned char data, unsigned char mask) +{ + sportspad_write(0, data, mask); +} + +void sportspad_2_write(unsigned char data, unsigned char mask) +{ + sportspad_write(1, data, mask); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/sportspad.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/sportspad.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/sportspad.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/sportspad.h index d5ae383cb1..3a6c482727 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/sportspad.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/sportspad.h @@ -1,49 +1,49 @@ -/*************************************************************************************** - * Genesis Plus - * Sega Sports Pad support - * - * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _SPORTSPAD_H_ -#define _SPORTSPAD_H_ - -/* Function prototypes */ -extern void sportspad_reset(int index); -extern unsigned char sportspad_1_read(void); -extern unsigned char sportspad_2_read(void); -extern void sportspad_1_write(unsigned char data, unsigned char mask); -extern void sportspad_2_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * Sega Sports Pad support + * + * Copyright (C) 2007-2013 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _SPORTSPAD_H_ +#define _SPORTSPAD_H_ + +/* Function prototypes */ +extern void sportspad_reset(int index); +extern unsigned char sportspad_1_read(void); +extern unsigned char sportspad_2_read(void); +extern void sportspad_1_write(unsigned char data, unsigned char mask); +extern void sportspad_2_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/teamplayer.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/teamplayer.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/teamplayer.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/teamplayer.c index b1bd006dcf..0eb4589c00 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/teamplayer.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/teamplayer.c @@ -1,177 +1,177 @@ -/*************************************************************************************** - * Genesis Plus - * Team Player support - * - * Copyright (C) 2007-2014 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -static struct -{ - uint8 State; - uint8 Counter; - uint8 Table[12]; -} teamplayer[2]; - - -void teamplayer_init(int port) -{ - int i,padnum; - int index = 0; - - /* this table determines which gamepad input should be returned during acquisition sequence - index = teamplayer read table index: 0=1st read, 1=2nd read, ... - table = high bits are pad index, low bits are pad input shift: 0=RLDU, 4=SABC, 8=MXYZ - */ - for (i=0; i<4; i++) - { - padnum = (4 * port) + i; - if (input.dev[padnum] == DEVICE_PAD3B) - { - padnum = padnum << 4; - teamplayer[port].Table[index++] = padnum; - teamplayer[port].Table[index++] = padnum | 4; - } - else - { - padnum = padnum << 4; - teamplayer[port].Table[index++] = padnum; - teamplayer[port].Table[index++] = padnum | 4; - teamplayer[port].Table[index++] = padnum | 8; - } - } -} - -void teamplayer_reset(int port) -{ - teamplayer[port].State = 0x60; /* TH = 1, TR = 1 */ - teamplayer[port].Counter = 0; -} - -INLINE unsigned int teamplayer_read(int port) -{ - unsigned int counter = teamplayer[port].Counter; - - /* acquisition sequence */ - switch (counter) - { - case 0: /* initial state: xxx0011 */ - { - /* TL should match TR */ - return ((teamplayer[port].State & 0x20) >> 1) | 0x03; - } - - case 1: /* start request: xxx1111 */ - { - /* TL should match TR */ - return ((teamplayer[port].State & 0x20) >> 1) | 0x0F; - } - - case 2: - case 3: /* ack request: xxx0000 */ - { - /* TL should match TR */ - return ((teamplayer[port].State & 0x20) >> 1); - } - - case 4: - case 5: - case 6: - case 7: /* PAD type: xxx0000 (3B), xxx0001 (6B) or xxx1111 (NC)*/ - { - unsigned int retval = input.dev[(port << 2) + (counter - 4)]; - - /* TL should match TR */ - return (((teamplayer[port].State & 0x20) >> 1) | retval); - } - - default: /* PAD status: xxxRLDU -> xxxSACB -> xxxMXYZ */ - { - unsigned int retval = 0x0F; - - /* SEGA teamplayer returns successively PAD1 -> PAD2 -> PAD3 -> PAD4 inputs */ - unsigned int padnum = teamplayer[port].Table[counter - 8] >> 4; - - /* Each PAD inputs is obtained through 2 or 3 sequential reads: RLDU -> SACB -> MXYZ */ - retval &= ~(input.pad[padnum] >> (teamplayer[port].Table[counter - 8] & 0x0F)); - - /* TL should match TR */ - return (((teamplayer[port].State & 0x20) >> 1) | retval); - } - } -} - -INLINE void teamplayer_write(int port, unsigned char data, unsigned char mask) -{ - /* update bits set as output only */ - unsigned int state = (teamplayer[port].State & ~mask) | (data & mask); - - /* check if TH is HIGH */ - if (state & 0x40) - { - /* reset counter */ - teamplayer[port].Counter = 0; - } - - /* TH & TR handshaking */ - else if ((teamplayer[port].State ^ state) & 0x60) - { - /* increment counter */ - teamplayer[port].Counter++; - } - - /* update internal state */ - teamplayer[port].State = state; -} - -unsigned char teamplayer_1_read(void) -{ - return teamplayer_read(0); -} - -unsigned char teamplayer_2_read(void) -{ - return teamplayer_read(1); -} - -void teamplayer_1_write(unsigned char data, unsigned char mask) -{ - teamplayer_write(0, data, mask); -} - -void teamplayer_2_write(unsigned char data, unsigned char mask) -{ - teamplayer_write(1, data, mask); -} +/*************************************************************************************** + * Genesis Plus + * Team Player support + * + * Copyright (C) 2007-2014 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +static struct +{ + uint8 State; + uint8 Counter; + uint8 Table[12]; +} teamplayer[2]; + + +void teamplayer_init(int port) +{ + int i,padnum; + int index = 0; + + /* this table determines which gamepad input should be returned during acquisition sequence + index = teamplayer read table index: 0=1st read, 1=2nd read, ... + table = high bits are pad index, low bits are pad input shift: 0=RLDU, 4=SABC, 8=MXYZ + */ + for (i=0; i<4; i++) + { + padnum = (4 * port) + i; + if (input.dev[padnum] == DEVICE_PAD3B) + { + padnum = padnum << 4; + teamplayer[port].Table[index++] = padnum; + teamplayer[port].Table[index++] = padnum | 4; + } + else + { + padnum = padnum << 4; + teamplayer[port].Table[index++] = padnum; + teamplayer[port].Table[index++] = padnum | 4; + teamplayer[port].Table[index++] = padnum | 8; + } + } +} + +void teamplayer_reset(int port) +{ + teamplayer[port].State = 0x60; /* TH = 1, TR = 1 */ + teamplayer[port].Counter = 0; +} + +INLINE unsigned int teamplayer_read(int port) +{ + unsigned int counter = teamplayer[port].Counter; + + /* acquisition sequence */ + switch (counter) + { + case 0: /* initial state: xxx0011 */ + { + /* TL should match TR */ + return ((teamplayer[port].State & 0x20) >> 1) | 0x03; + } + + case 1: /* start request: xxx1111 */ + { + /* TL should match TR */ + return ((teamplayer[port].State & 0x20) >> 1) | 0x0F; + } + + case 2: + case 3: /* ack request: xxx0000 */ + { + /* TL should match TR */ + return ((teamplayer[port].State & 0x20) >> 1); + } + + case 4: + case 5: + case 6: + case 7: /* PAD type: xxx0000 (3B), xxx0001 (6B) or xxx1111 (NC)*/ + { + unsigned int retval = input.dev[(port << 2) + (counter - 4)]; + + /* TL should match TR */ + return (((teamplayer[port].State & 0x20) >> 1) | retval); + } + + default: /* PAD status: xxxRLDU -> xxxSACB -> xxxMXYZ */ + { + unsigned int retval = 0x0F; + + /* SEGA teamplayer returns successively PAD1 -> PAD2 -> PAD3 -> PAD4 inputs */ + unsigned int padnum = teamplayer[port].Table[counter - 8] >> 4; + + /* Each PAD inputs is obtained through 2 or 3 sequential reads: RLDU -> SACB -> MXYZ */ + retval &= ~(input.pad[padnum] >> (teamplayer[port].Table[counter - 8] & 0x0F)); + + /* TL should match TR */ + return (((teamplayer[port].State & 0x20) >> 1) | retval); + } + } +} + +INLINE void teamplayer_write(int port, unsigned char data, unsigned char mask) +{ + /* update bits set as output only */ + unsigned int state = (teamplayer[port].State & ~mask) | (data & mask); + + /* check if TH is HIGH */ + if (state & 0x40) + { + /* reset counter */ + teamplayer[port].Counter = 0; + } + + /* TH & TR handshaking */ + else if ((teamplayer[port].State ^ state) & 0x60) + { + /* increment counter */ + teamplayer[port].Counter++; + } + + /* update internal state */ + teamplayer[port].State = state; +} + +unsigned char teamplayer_1_read(void) +{ + return teamplayer_read(0); +} + +unsigned char teamplayer_2_read(void) +{ + return teamplayer_read(1); +} + +void teamplayer_1_write(unsigned char data, unsigned char mask) +{ + teamplayer_write(0, data, mask); +} + +void teamplayer_2_write(unsigned char data, unsigned char mask) +{ + teamplayer_write(1, data, mask); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/teamplayer.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/teamplayer.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/teamplayer.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/teamplayer.h index ea0e8483b7..52d42959d0 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/teamplayer.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/teamplayer.h @@ -1,50 +1,50 @@ -/*************************************************************************************** - * Genesis Plus - * Team Player support - * - * Copyright (C) 2007-2014 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _TEAMPLAYER_H_ -#define _TEAMPLAYER_H_ - -/* Function prototypes */ -extern void teamplayer_init(int port); -extern void teamplayer_reset(int port); -extern unsigned char teamplayer_1_read(void); -extern unsigned char teamplayer_2_read(void); -extern void teamplayer_1_write(unsigned char data, unsigned char mask); -extern void teamplayer_2_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * Team Player support + * + * Copyright (C) 2007-2014 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _TEAMPLAYER_H_ +#define _TEAMPLAYER_H_ + +/* Function prototypes */ +extern void teamplayer_init(int port); +extern void teamplayer_reset(int port); +extern unsigned char teamplayer_1_read(void); +extern unsigned char teamplayer_2_read(void); +extern void teamplayer_1_write(unsigned char data, unsigned char mask); +extern void teamplayer_2_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/terebi_oekaki.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/terebi_oekaki.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/terebi_oekaki.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/terebi_oekaki.c index 94bb89d1ac..5c31e77de9 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/terebi_oekaki.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/terebi_oekaki.c @@ -1,77 +1,77 @@ -/*************************************************************************************** - * Genesis Plus - * Terebi Oekaki graphic board support - * - * Copyright (C) 2011 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -static struct -{ - uint8 axis; - uint8 busy; -} tablet; - -void terebi_oekaki_reset(void) -{ - input.analog[0][0] = 128; - input.analog[0][1] = 128; - tablet.axis = 1; - tablet.busy = 1; -} - -unsigned short terebi_oekaki_read(void) -{ - uint16 data = (tablet.busy << 15) | input.analog[0][tablet.axis]; - - if (!(input.pad[0] & INPUT_B)) - { - data |= 0x100; - } - - /* clear BUSY flag */ - tablet.busy = 0; - - return data; -} - -void terebi_oekaki_write(unsigned char data) -{ - /* X (1) or Y (0) axis */ - tablet.axis = (data & 1) ^ 1; - - /* set BUSY flag */ - tablet.busy = 1; -} +/*************************************************************************************** + * Genesis Plus + * Terebi Oekaki graphic board support + * + * Copyright (C) 2011 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +static struct +{ + uint8 axis; + uint8 busy; +} tablet; + +void terebi_oekaki_reset(void) +{ + input.analog[0][0] = 128; + input.analog[0][1] = 128; + tablet.axis = 1; + tablet.busy = 1; +} + +unsigned short terebi_oekaki_read(void) +{ + uint16 data = (tablet.busy << 15) | input.analog[0][tablet.axis]; + + if (!(input.pad[0] & INPUT_B)) + { + data |= 0x100; + } + + /* clear BUSY flag */ + tablet.busy = 0; + + return data; +} + +void terebi_oekaki_write(unsigned char data) +{ + /* X (1) or Y (0) axis */ + tablet.axis = (data & 1) ^ 1; + + /* set BUSY flag */ + tablet.busy = 1; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/terebi_oekaki.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/terebi_oekaki.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/terebi_oekaki.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/terebi_oekaki.h index 7041c3179c..b319393cd2 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/terebi_oekaki.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/terebi_oekaki.h @@ -1,47 +1,47 @@ -/*************************************************************************************** - * Genesis Plus - * Terebi Oekaki graphic board support - * - * Copyright (C) 2011 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _TEREBI_H_ -#define _TEREBI_H_ - -/* Function prototypes */ -extern void terebi_oekaki_reset(void); -extern unsigned short terebi_oekaki_read(void); -extern void terebi_oekaki_write(unsigned char data); - -#endif +/*************************************************************************************** + * Genesis Plus + * Terebi Oekaki graphic board support + * + * Copyright (C) 2011 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _TEREBI_H_ +#define _TEREBI_H_ + +/* Function prototypes */ +extern void terebi_oekaki_reset(void); +extern unsigned short terebi_oekaki_read(void); +extern void terebi_oekaki_write(unsigned char data); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/xe_1ap.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/xe_1ap.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/xe_1ap.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/xe_1ap.c index 606011ee27..b497af816b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/xe_1ap.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/xe_1ap.c @@ -1,174 +1,174 @@ -/*************************************************************************************** - * Genesis Plus - * XE-1AP analog controller support - * - * Copyright (C) 2011-2015 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -#define XE_1AP_LATENCY 3 - -static struct -{ - uint8 State; - uint8 Counter; - uint8 Latency; -} xe_1ap[2]; - -void xe_1ap_reset(int index) -{ - input.analog[index][0] = 128; - input.analog[index][1] = 128; - input.analog[index+1][0] = 128; - index >>= 2; - xe_1ap[index].State = 0x40; - xe_1ap[index].Counter = 11; - xe_1ap[index].Latency = 0; -} - -INLINE unsigned char xe_1ap_read(int index) -{ - unsigned char data; - unsigned int port = index << 2; - - /* Current data transfer cycle */ - switch (xe_1ap[index].Counter) - { - case 0: /* E1 E2 Start Select buttons status (active low) */ - data = (~input.pad[port] >> 10) & 0x0F; - break; - case 1: /* A/A' B/B' C D buttons status (active low) */ - data = ((~input.pad[port] >> 4) & 0x0F) & ~((input.pad[port] >> 6) & 0x0C); - break; - case 2: /* CH0 high (Analog Stick Left/Right direction) */ - data = (input.analog[port][0] >> 4) & 0x0F; - break; - case 3: /* CH1 high (Analog Stick Up/Down direction) */ - data = (input.analog[port][1] >> 4) & 0x0F; - break; - case 4: /* CH2 high (N/A) */ - data = 0x0; - break; - case 5: /* CH3 high (Throttle vertical or horizontal direction) */ - data = (input.analog[port+1][0] >> 4) & 0x0F; - break; - case 6: /* CH0 low (Analog Stick Left/Right direction) */ - data = input.analog[port][0] & 0x0F; - break; - case 7: /* CH1 low (Analog Stick Up/Down direction)*/ - data = input.analog[port][1] & 0x0F; - break; - case 8: /* CH2 low (N/A) */ - data = 0x0; - break; - case 9: /* CH3 low (Throttle vertical or horizontal direction) */ - data = input.analog[port+1][0] & 0x0F; - break; - case 10: /* A B A' B' buttons status (active low) */ - data = (~input.pad[port] >> 6) & 0x0F; - break; - default: /* N/A */ - data = 0x0F; - break; - } - - /* TL indicates current data cycle (0=1st cycle, 1=2nd cycle, etc) */ - data |= ((xe_1ap[index].Counter & 1) << 4); - - /* TR indicates if data is valid (0=valid, 1=not ready) */ - /* Some games expect this bit to switch between 0 and 1 */ - /* so we actually keep it high for some reads after the */ - /* data cycle has been initialized or incremented */ - if (xe_1ap[index].Latency) - { - if (xe_1ap[index].Latency > 1) - { - /* data is not ready */ - data |= 0x20; - } - - /* decrement internal latency */ - xe_1ap[index].Latency--; - } - else if (xe_1ap[index].Counter <= 10) - { - /* next data cycle */ - xe_1ap[index].Counter++; - - /* reinitialize internal latency */ - xe_1ap[index].Latency = XE_1AP_LATENCY; - } - - return data; -} - -INLINE void xe_1ap_write(int index, unsigned char data, unsigned char mask) -{ - /* only update bits set as output */ - data = (xe_1ap[index].State & ~mask) | (data & mask); - - /* look for TH 1->0 transitions */ - if (!(data & 0x40) && (xe_1ap[index].State & 0x40)) - { - /* reset data acquisition cycle */ - xe_1ap[index].Counter = 0; - - /* initialize internal latency */ - xe_1ap[index].Latency = XE_1AP_LATENCY; - } - - /* update internal state */ - xe_1ap[index].State = data; -} - -unsigned char xe_1ap_1_read(void) -{ - return xe_1ap_read(0); -} - -unsigned char xe_1ap_2_read(void) -{ - return xe_1ap_read(1); -} - -void xe_1ap_1_write(unsigned char data, unsigned char mask) -{ - xe_1ap_write(0, data, mask); -} - -void xe_1ap_2_write(unsigned char data, unsigned char mask) -{ - xe_1ap_write(1, data, mask); -} +/*************************************************************************************** + * Genesis Plus + * XE-1AP analog controller support + * + * Copyright (C) 2011-2015 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +#define XE_1AP_LATENCY 3 + +static struct +{ + uint8 State; + uint8 Counter; + uint8 Latency; +} xe_1ap[2]; + +void xe_1ap_reset(int index) +{ + input.analog[index][0] = 128; + input.analog[index][1] = 128; + input.analog[index+1][0] = 128; + index >>= 2; + xe_1ap[index].State = 0x40; + xe_1ap[index].Counter = 11; + xe_1ap[index].Latency = 0; +} + +INLINE unsigned char xe_1ap_read(int index) +{ + unsigned char data; + unsigned int port = index << 2; + + /* Current data transfer cycle */ + switch (xe_1ap[index].Counter) + { + case 0: /* E1 E2 Start Select buttons status (active low) */ + data = (~input.pad[port] >> 10) & 0x0F; + break; + case 1: /* A/A' B/B' C D buttons status (active low) */ + data = ((~input.pad[port] >> 4) & 0x0F) & ~((input.pad[port] >> 6) & 0x0C); + break; + case 2: /* CH0 high (Analog Stick Left/Right direction) */ + data = (input.analog[port][0] >> 4) & 0x0F; + break; + case 3: /* CH1 high (Analog Stick Up/Down direction) */ + data = (input.analog[port][1] >> 4) & 0x0F; + break; + case 4: /* CH2 high (N/A) */ + data = 0x0; + break; + case 5: /* CH3 high (Throttle vertical or horizontal direction) */ + data = (input.analog[port+1][0] >> 4) & 0x0F; + break; + case 6: /* CH0 low (Analog Stick Left/Right direction) */ + data = input.analog[port][0] & 0x0F; + break; + case 7: /* CH1 low (Analog Stick Up/Down direction)*/ + data = input.analog[port][1] & 0x0F; + break; + case 8: /* CH2 low (N/A) */ + data = 0x0; + break; + case 9: /* CH3 low (Throttle vertical or horizontal direction) */ + data = input.analog[port+1][0] & 0x0F; + break; + case 10: /* A B A' B' buttons status (active low) */ + data = (~input.pad[port] >> 6) & 0x0F; + break; + default: /* N/A */ + data = 0x0F; + break; + } + + /* TL indicates current data cycle (0=1st cycle, 1=2nd cycle, etc) */ + data |= ((xe_1ap[index].Counter & 1) << 4); + + /* TR indicates if data is valid (0=valid, 1=not ready) */ + /* Some games expect this bit to switch between 0 and 1 */ + /* so we actually keep it high for some reads after the */ + /* data cycle has been initialized or incremented */ + if (xe_1ap[index].Latency) + { + if (xe_1ap[index].Latency > 1) + { + /* data is not ready */ + data |= 0x20; + } + + /* decrement internal latency */ + xe_1ap[index].Latency--; + } + else if (xe_1ap[index].Counter <= 10) + { + /* next data cycle */ + xe_1ap[index].Counter++; + + /* reinitialize internal latency */ + xe_1ap[index].Latency = XE_1AP_LATENCY; + } + + return data; +} + +INLINE void xe_1ap_write(int index, unsigned char data, unsigned char mask) +{ + /* only update bits set as output */ + data = (xe_1ap[index].State & ~mask) | (data & mask); + + /* look for TH 1->0 transitions */ + if (!(data & 0x40) && (xe_1ap[index].State & 0x40)) + { + /* reset data acquisition cycle */ + xe_1ap[index].Counter = 0; + + /* initialize internal latency */ + xe_1ap[index].Latency = XE_1AP_LATENCY; + } + + /* update internal state */ + xe_1ap[index].State = data; +} + +unsigned char xe_1ap_1_read(void) +{ + return xe_1ap_read(0); +} + +unsigned char xe_1ap_2_read(void) +{ + return xe_1ap_read(1); +} + +void xe_1ap_1_write(unsigned char data, unsigned char mask) +{ + xe_1ap_write(0, data, mask); +} + +void xe_1ap_2_write(unsigned char data, unsigned char mask) +{ + xe_1ap_write(1, data, mask); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/xe_1ap.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/xe_1ap.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/xe_1ap.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/xe_1ap.h index 1a56e043ed..61f38063b4 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/input_hw/xe_1ap.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/input_hw/xe_1ap.h @@ -1,49 +1,49 @@ -/*************************************************************************************** - * Genesis Plus - * XE-1AP analog controller support - * - * Copyright (C) 2011-2015 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _XE_1APH_ -#define _XE_1APH_ - -/* Function prototypes */ -extern void xe_1ap_reset(int index); -extern unsigned char xe_1ap_1_read(void); -extern unsigned char xe_1ap_2_read(void); -extern void xe_1ap_1_write(unsigned char data, unsigned char mask); -extern void xe_1ap_2_write(unsigned char data, unsigned char mask); - -#endif +/*************************************************************************************** + * Genesis Plus + * XE-1AP analog controller support + * + * Copyright (C) 2011-2015 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _XE_1APH_ +#define _XE_1APH_ + +/* Function prototypes */ +extern void xe_1ap_reset(int index); +extern unsigned char xe_1ap_1_read(void); +extern unsigned char xe_1ap_2_read(void); +extern void xe_1ap_1_write(unsigned char data, unsigned char mask); +extern void xe_1ap_2_write(unsigned char data, unsigned char mask); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/io_ctrl.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/io_ctrl.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/io_ctrl.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/io_ctrl.c index e4799ecb63..956728d643 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/io_ctrl.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/io_ctrl.c @@ -1,660 +1,660 @@ -/*************************************************************************************** - * Genesis Plus - * I/O controller (Genesis & Master System modes) - * - * Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "gamepad.h" -#include "lightgun.h" -#include "mouse.h" -#include "activator.h" -#include "xe_1ap.h" -#include "teamplayer.h" -#include "paddle.h" -#include "sportspad.h" -#include "graphic_board.h" - -uint8 io_reg[0x10]; - -uint8 region_code = REGION_USA; - -static struct port_t -{ - void (*data_w)(unsigned char data, unsigned char mask); - unsigned char (*data_r)(void); -} port[3]; - -static void dummy_write(unsigned char data, unsigned char mask) -{ -} - -static unsigned char dummy_read(void) -{ - return 0x7F; -} - -/***************************************************************************** - * I/O chip initialization * - * * - *****************************************************************************/ -void io_init(void) -{ - /* Initialize connected peripherals */ - input_init(); - - /* Initialize IO Ports handlers & connected peripherals */ - switch (input.system[0]) - { - case SYSTEM_GAMEPAD: - { - port[0].data_w = (input.dev[0] == DEVICE_PAD2B) ? dummy_write : gamepad_1_write; - port[0].data_r = gamepad_1_read; - break; - } - - case SYSTEM_MOUSE: - { - port[0].data_w = mouse_write; - port[0].data_r = mouse_read; - break; - } - - case SYSTEM_ACTIVATOR: - { - port[0].data_w = activator_1_write; - port[0].data_r = activator_1_read; - break; - } - - case SYSTEM_XE_1AP: - { - port[0].data_w = xe_1ap_1_write; - port[0].data_r = xe_1ap_1_read; - break; - } - - case SYSTEM_WAYPLAY: - { - port[0].data_w = wayplay_1_write; - port[0].data_r = wayplay_1_read; - break; - } - - case SYSTEM_TEAMPLAYER: - { - port[0].data_w = teamplayer_1_write; - port[0].data_r = teamplayer_1_read; - break; - } - - case SYSTEM_MASTERTAP: - { - port[0].data_w = mastertap_1_write; - port[0].data_r = mastertap_1_read; - break; - } - - case SYSTEM_LIGHTPHASER: - { - port[0].data_w = dummy_write; - port[0].data_r = phaser_1_read; - break; - } - - case SYSTEM_PADDLE: - { - port[0].data_w = paddle_1_write; - port[0].data_r = paddle_1_read; - break; - } - - case SYSTEM_SPORTSPAD: - { - port[0].data_w = sportspad_1_write; - port[0].data_r = sportspad_1_read; - break; - } - - case SYSTEM_GRAPHIC_BOARD: - { - port[0].data_w = graphic_board_write; - port[0].data_r = graphic_board_read; - break; - } - - default: - { - port[0].data_w = dummy_write; - port[0].data_r = dummy_read; - break; - } - } - - switch (input.system[1]) - { - case SYSTEM_GAMEPAD: - { - port[1].data_w = (input.dev[4] == DEVICE_PAD2B) ? dummy_write : gamepad_2_write; - port[1].data_r = gamepad_2_read; - break; - } - - case SYSTEM_MOUSE: - { - port[1].data_w = mouse_write; - port[1].data_r = mouse_read; - break; - } - - case SYSTEM_XE_1AP: - { - port[1].data_w = xe_1ap_2_write; - port[1].data_r = xe_1ap_2_read; - break; - } - - case SYSTEM_ACTIVATOR: - { - port[1].data_w = activator_2_write; - port[1].data_r = activator_2_read; - break; - } - - case SYSTEM_MENACER: - { - port[1].data_w = dummy_write; - port[1].data_r = menacer_read; - break; - } - - case SYSTEM_JUSTIFIER: - { - port[1].data_w = justifier_write; - port[1].data_r = justifier_read; - break; - } - - case SYSTEM_WAYPLAY: - { - port[1].data_w = wayplay_2_write; - port[1].data_r = wayplay_2_read; - break; - } - - case SYSTEM_TEAMPLAYER: - { - port[1].data_w = teamplayer_2_write; - port[1].data_r = teamplayer_2_read; - break; - } - - case SYSTEM_MASTERTAP: - { - port[1].data_w = mastertap_2_write; - port[1].data_r = mastertap_2_read; - break; - } - - case SYSTEM_LIGHTPHASER: - { - port[1].data_w = dummy_write; - port[1].data_r = phaser_2_read; - break; - } - - case SYSTEM_PADDLE: - { - port[1].data_w = paddle_2_write; - port[1].data_r = paddle_2_read; - break; - } - - case SYSTEM_SPORTSPAD: - { - port[1].data_w = sportspad_2_write; - port[1].data_r = sportspad_2_read; - break; - } - - case SYSTEM_GRAPHIC_BOARD: - { - port[1].data_w = graphic_board_write; - port[1].data_r = graphic_board_read; - break; - } - - default: - { - port[1].data_w = dummy_write; - port[1].data_r = dummy_read; - break; - } - } - - /* External Port (unconnected) */ - port[2].data_w = dummy_write; - port[2].data_r = dummy_read; -} - - -void io_reset(void) -{ - /* Reset I/O registers */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - io_reg[0x00] = region_code | (config.bios & 1); - io_reg[0x01] = 0x00; - io_reg[0x02] = 0x00; - io_reg[0x03] = 0x00; - io_reg[0x04] = 0x00; - io_reg[0x05] = 0x00; - io_reg[0x06] = 0x00; - io_reg[0x07] = 0xFF; - io_reg[0x08] = 0x00; - io_reg[0x09] = 0x00; - io_reg[0x0A] = 0xFF; - io_reg[0x0B] = 0x00; - io_reg[0x0C] = 0x00; - io_reg[0x0D] = 0xFB; - io_reg[0x0E] = 0x00; - io_reg[0x0F] = 0x00; - - /* CD unit detection */ - if (system_hw != SYSTEM_MCD) - { - io_reg[0x00] |= 0x20; - } - } - else - { - /* Game Gear specific registers */ - io_reg[0x00] = 0x80 | (region_code >> 1); - io_reg[0x01] = 0x00; - io_reg[0x02] = 0xFF; - io_reg[0x03] = 0x00; - io_reg[0x04] = 0xFF; - io_reg[0x05] = 0x00; - io_reg[0x06] = 0xFF; - - /* initial !RESET input */ - io_reg[0x0D] = IO_RESET_HI; - - /* default !CONT input */ - if (system_hw != SYSTEM_PBC) - { - io_reg[0x0D] |= IO_CONT1_HI; - } - - /* Memory Control register (Master System and Game Gear hardware only) */ - if ((system_hw & SYSTEM_SMS) || (system_hw & SYSTEM_GG)) - { - /* RAM, I/O and either BIOS or Cartridge ROM are enabled */ - io_reg[0x0E] = (z80_readmap[0] == cart.rom + 0x400000) ? 0xE0 : 0xA8; - } - else - { - /* default value (no Memory Control register) */ - io_reg[0x0E] = 0x00; - } - - /* I/O control register (Master System, Mega Drive and Game Gear hardware only) */ - if (system_hw >= SYSTEM_SMS) - { - /* on power-on, TR and TH are configured as inputs */ - io_reg[0x0F] = 0xFF; - } - else - { - /* on SG-1000 & Mark-III, TR is always an input and TH is not connected (always return 1) */ - io_reg[0x0F] = 0xF5; - } - } - - /* Reset connected peripherals */ - input_reset(); -} - - -/***************************************************************************** - * I/O ports access from 68k (Genesis mode) * - * * - *****************************************************************************/ - -void io_68k_write(unsigned int offset, unsigned int data) -{ - switch (offset) - { - case 0x01: /* Port A Data */ - case 0x02: /* Port B Data */ - case 0x03: /* Port C Data */ - { - /* - D7 : Unused. This bit will return any value written to it - D6 : TH pin output level (1=high, 0=low) - D5 : TR pin output level (1=high, 0=low) - D4 : TL pin output level (1=high, 0=low) - D3 : D3 pin output level (1=high, 0=low) - D2 : D2 pin output level (1=high, 0=low) - D1 : D1 pin output level (1=high, 0=low) - D0 : D0 pin output level (1=high, 0=low) - */ - io_reg[offset] = data; - port[offset-1].data_w(data, io_reg[offset + 3]); - return; - } - - case 0x04: /* Port A Ctrl */ - case 0x05: /* Port B Ctrl */ - case 0x06: /* Port C Ctrl */ - { - /* - D7 : /HL output control (1=TH input level, 0=forced high) - D6 : TH pin is 1=output, 0=input - D5 : TR pin is 1=output, 0=input - D4 : TL pin is 1=output, 0=input - D3 : D3 pin is 1=output, 0=input - D2 : D2 pin is 1=output, 0=input - D1 : D1 pin is 1=output, 0=input - D0 : D0 pin is 1=output, 0=input - */ - if (data != io_reg[offset]) - { - io_reg[offset] = data; - port[offset-4].data_w(io_reg[offset-3], data); - } - return; - } - - case 0x07: /* Port A TxData */ - case 0x0A: /* Port B TxData */ - case 0x0D: /* Port C TxData */ - { - io_reg[offset] = data; - return; - } - - case 0x09: /* Port A S-Ctrl */ - case 0x0C: /* Port B S-Ctrl */ - case 0x0F: /* Port C S-Ctrl */ - { - /* - D7-D6 : Serial baud rate (00= 4800 bps, 01= 2400 bps, 10= 1200 bps, 11= 300 bps) - D5 : TR pin functions as 1= serial input pin, 0= normal - D4 : TL pin functions as 1= serial output pin, 0= normal - D3 : 1= Make I/O chip strobe /HL low when a byte has been received, 0= Do nothing - D2 : read-only (on read, 1= Error receiving current byte, 0= No error) - D1 : read-only (on read, 1= Rxd buffer is ready to read, 0= Rxd buffer isn't ready) - D0 : read-only (on read, 1= Txd buffer is full, 0= Can write to Txd buffer) - */ - io_reg[offset] = data & 0xF8; - return; - } - - default: /* Read-only ports */ - { - return; - } - } -} - -unsigned int io_68k_read(unsigned int offset) -{ - switch(offset) - { - case 0x01: /* Port A Data */ - case 0x02: /* Port B Data */ - case 0x03: /* Port C Data */ - { - /* - D7 : Unused. This bit will return any value written to it - D6 : TH pin input level (1=high, 0=low) - D5 : TR pin input level (1=high, 0=low) - D4 : TL pin input level (1=high, 0=low) - D3 : D3 pin input level (1=high, 0=low) - D2 : D2 pin input level (1=high, 0=low) - D1 : D1 pin input level (1=high, 0=low) - D0 : D0 pin input level (1=high, 0=low) - */ - unsigned int mask = 0x80 | io_reg[offset + 3]; - unsigned int data = port[offset-1].data_r(); - return (io_reg[offset] & mask) | (data & ~mask); - } - - default: /* return register value */ - { - return io_reg[offset]; - } - } -} - - -/***************************************************************************** - * I/O ports access from Z80 * - * * - *****************************************************************************/ - -void io_z80_write(unsigned int offset, unsigned int data, unsigned int cycles) -{ - /* I/O Control register */ - if (offset) - { - /* - Bit Function - -------------- - D7 : Port B TH pin output level (1=high, 0=low) - D6 : Port B TR pin output level (1=high, 0=low) - D5 : Port A TH pin output level (1=high, 0=low) - D4 : Port A TR pin output level (1=high, 0=low) - D3 : Port B TH pin direction (1=input, 0=output) - D2 : Port B TR pin direction (1=input, 0=output) - D1 : Port A TH pin direction (1=input, 0=output) - D0 : Port A TR pin direction (1=input, 0=output) - */ - - /* Send TR/TH state to connected peripherals */ - port[0].data_w((data << 1) & 0x60, (~data << 5) & 0x60); - port[1].data_w((data >> 1) & 0x60, (~data << 3) & 0x60); - - /* Check for TH low-to-high transitions on both ports */ - if ((!(io_reg[0x0F] & 0x80) && (data & 0x80)) || - (!(io_reg[0x0F] & 0x20) && (data & 0x20))) - { - /* Latch new HVC */ - hvc_latch = hctab[cycles % MCYCLES_PER_LINE] | 0x10000; - } - - /* Japanese model specific */ - if (region_code == REGION_JAPAN_NTSC) - { - /* Reading TH & TR pins always return 0 when set as output */ - data &= 0x0F; - } - - /* Update I/O Control register */ - io_reg[0x0F] = data; - } - else - { - /* Memory Control register */ - io_reg[0x0E] = data; - - /* Switch cartridge & BIOS ROM */ - sms_cart_switch(~data); - } -} - -unsigned int io_z80_read(unsigned int offset) -{ - /* Read port A & port B input data */ - unsigned int data = (port[0].data_r()) | (port[1].data_r() << 8); - - /* I/O control register value */ - unsigned int ctrl = io_reg[0x0F]; - - /* I/O ports */ - if (offset) - { - /* - Bit Function - -------------- - D7 : Port B TH pin input - D6 : Port A TH pin input - D5 : CONT input (0 on Mega Drive hardware, 1 otherwise) - D4 : RESET button (1: default, 0: pressed, only on Master System hardware) - D3 : Port B TR pin input - D2 : Port B TL pin input - D1 : Port B Right pin input - D0 : Port B Left pin input - */ - data = ((data >> 10) & 0x0F) | (data & 0x40) | ((data >> 7) & 0x80) | io_reg[0x0D]; - - /* clear !RESET input */ - io_reg[0x0D] |= IO_RESET_HI; - - /* Adjust port B TH state if configured as output */ - if (!(ctrl & 0x08)) - { - data &= ~0x80; - data |= (ctrl & 0x80); - } - - /* Adjust port A TH state if configured as output */ - if (!(ctrl & 0x02)) - { - data &= ~0x40; - data |= ((ctrl & 0x20) << 1); - } - - /* Adjust port B TR state if configured as output */ - if (!(ctrl & 0x04)) - { - data &= ~0x08; - data |= ((ctrl & 0x40) >> 3); - } - } - else - { - /* - Bit Function - -------------- - D7 : Port B Down pin input - D6 : Port B Up pin input - D5 : Port A TR pin input - D4 : Port A TL pin input - D3 : Port A Right pin input - D2 : Port A Left pin input - D1 : Port A Down pin input - D0 : Port A Up pin input - */ - data = (data & 0x3F) | ((data >> 2) & 0xC0); - - /* Adjust port A TR state if configured as output */ - if (!(ctrl & 0x01)) - { - data &= ~0x20; - data |= ((ctrl & 0x10) << 1); - } - } - - return data; -} - - -/***************************************************************************** - * Game Gear communication ports access * - * * - *****************************************************************************/ - -void io_gg_write(unsigned int offset, unsigned int data) -{ - switch (offset) - { - case 1: /* Parallel data register */ - io_reg[1] = data; - return; - - case 2: /* Data direction register and NMI enable */ - io_reg[2] = data; - return; - - case 3: /* Transmit data buffer */ - io_reg[3] = data; - return; - - case 5: /* Serial control (bits 0-2 are read-only) */ - io_reg[5] = data & 0xF8; - return; - - case 6: /* PSG Stereo output control */ - io_reg[6] = data; - psg_config(Z80.cycles, config.psg_preamp, data); - return; - - default: /* Read-only */ - return; - } -} - -unsigned int io_gg_read(unsigned int offset) -{ - switch (offset) - { - case 0: /* Mode Register */ - return (io_reg[0] & ~(input.pad[0] & INPUT_START)); - - case 1: /* Parallel data register (not connected) */ - return ((io_reg[1] & ~(io_reg[2] & 0x7F)) | (io_reg[2] & 0x7F)); - - case 2: /* Data direction register and NMI enable */ - return io_reg[2]; - - case 3: /* Transmit data buffer */ - return io_reg[3]; - - case 4: /* Receive data buffer */ - return io_reg[4]; - - case 5: /* Serial control */ - return io_reg[5]; - - default: /* Write-Only */ - return 0xFF; - } -} - +/*************************************************************************************** + * Genesis Plus + * I/O controller (Genesis & Master System modes) + * + * Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "gamepad.h" +#include "lightgun.h" +#include "mouse.h" +#include "activator.h" +#include "xe_1ap.h" +#include "teamplayer.h" +#include "paddle.h" +#include "sportspad.h" +#include "graphic_board.h" + +uint8 io_reg[0x10]; + +uint8 region_code = REGION_USA; + +static struct port_t +{ + void (*data_w)(unsigned char data, unsigned char mask); + unsigned char (*data_r)(void); +} port[3]; + +static void dummy_write(unsigned char data, unsigned char mask) +{ +} + +static unsigned char dummy_read(void) +{ + return 0x7F; +} + +/***************************************************************************** + * I/O chip initialization * + * * + *****************************************************************************/ +void io_init(void) +{ + /* Initialize connected peripherals */ + input_init(); + + /* Initialize IO Ports handlers & connected peripherals */ + switch (input.system[0]) + { + case SYSTEM_GAMEPAD: + { + port[0].data_w = (input.dev[0] == DEVICE_PAD2B) ? dummy_write : gamepad_1_write; + port[0].data_r = gamepad_1_read; + break; + } + + case SYSTEM_MOUSE: + { + port[0].data_w = mouse_write; + port[0].data_r = mouse_read; + break; + } + + case SYSTEM_ACTIVATOR: + { + port[0].data_w = activator_1_write; + port[0].data_r = activator_1_read; + break; + } + + case SYSTEM_XE_1AP: + { + port[0].data_w = xe_1ap_1_write; + port[0].data_r = xe_1ap_1_read; + break; + } + + case SYSTEM_WAYPLAY: + { + port[0].data_w = wayplay_1_write; + port[0].data_r = wayplay_1_read; + break; + } + + case SYSTEM_TEAMPLAYER: + { + port[0].data_w = teamplayer_1_write; + port[0].data_r = teamplayer_1_read; + break; + } + + case SYSTEM_MASTERTAP: + { + port[0].data_w = mastertap_1_write; + port[0].data_r = mastertap_1_read; + break; + } + + case SYSTEM_LIGHTPHASER: + { + port[0].data_w = dummy_write; + port[0].data_r = phaser_1_read; + break; + } + + case SYSTEM_PADDLE: + { + port[0].data_w = paddle_1_write; + port[0].data_r = paddle_1_read; + break; + } + + case SYSTEM_SPORTSPAD: + { + port[0].data_w = sportspad_1_write; + port[0].data_r = sportspad_1_read; + break; + } + + case SYSTEM_GRAPHIC_BOARD: + { + port[0].data_w = graphic_board_write; + port[0].data_r = graphic_board_read; + break; + } + + default: + { + port[0].data_w = dummy_write; + port[0].data_r = dummy_read; + break; + } + } + + switch (input.system[1]) + { + case SYSTEM_GAMEPAD: + { + port[1].data_w = (input.dev[4] == DEVICE_PAD2B) ? dummy_write : gamepad_2_write; + port[1].data_r = gamepad_2_read; + break; + } + + case SYSTEM_MOUSE: + { + port[1].data_w = mouse_write; + port[1].data_r = mouse_read; + break; + } + + case SYSTEM_XE_1AP: + { + port[1].data_w = xe_1ap_2_write; + port[1].data_r = xe_1ap_2_read; + break; + } + + case SYSTEM_ACTIVATOR: + { + port[1].data_w = activator_2_write; + port[1].data_r = activator_2_read; + break; + } + + case SYSTEM_MENACER: + { + port[1].data_w = dummy_write; + port[1].data_r = menacer_read; + break; + } + + case SYSTEM_JUSTIFIER: + { + port[1].data_w = justifier_write; + port[1].data_r = justifier_read; + break; + } + + case SYSTEM_WAYPLAY: + { + port[1].data_w = wayplay_2_write; + port[1].data_r = wayplay_2_read; + break; + } + + case SYSTEM_TEAMPLAYER: + { + port[1].data_w = teamplayer_2_write; + port[1].data_r = teamplayer_2_read; + break; + } + + case SYSTEM_MASTERTAP: + { + port[1].data_w = mastertap_2_write; + port[1].data_r = mastertap_2_read; + break; + } + + case SYSTEM_LIGHTPHASER: + { + port[1].data_w = dummy_write; + port[1].data_r = phaser_2_read; + break; + } + + case SYSTEM_PADDLE: + { + port[1].data_w = paddle_2_write; + port[1].data_r = paddle_2_read; + break; + } + + case SYSTEM_SPORTSPAD: + { + port[1].data_w = sportspad_2_write; + port[1].data_r = sportspad_2_read; + break; + } + + case SYSTEM_GRAPHIC_BOARD: + { + port[1].data_w = graphic_board_write; + port[1].data_r = graphic_board_read; + break; + } + + default: + { + port[1].data_w = dummy_write; + port[1].data_r = dummy_read; + break; + } + } + + /* External Port (unconnected) */ + port[2].data_w = dummy_write; + port[2].data_r = dummy_read; +} + + +void io_reset(void) +{ + /* Reset I/O registers */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + io_reg[0x00] = region_code | (config.bios & 1); + io_reg[0x01] = 0x00; + io_reg[0x02] = 0x00; + io_reg[0x03] = 0x00; + io_reg[0x04] = 0x00; + io_reg[0x05] = 0x00; + io_reg[0x06] = 0x00; + io_reg[0x07] = 0xFF; + io_reg[0x08] = 0x00; + io_reg[0x09] = 0x00; + io_reg[0x0A] = 0xFF; + io_reg[0x0B] = 0x00; + io_reg[0x0C] = 0x00; + io_reg[0x0D] = 0xFB; + io_reg[0x0E] = 0x00; + io_reg[0x0F] = 0x00; + + /* CD unit detection */ + if (system_hw != SYSTEM_MCD) + { + io_reg[0x00] |= 0x20; + } + } + else + { + /* Game Gear specific registers */ + io_reg[0x00] = 0x80 | (region_code >> 1); + io_reg[0x01] = 0x00; + io_reg[0x02] = 0xFF; + io_reg[0x03] = 0x00; + io_reg[0x04] = 0xFF; + io_reg[0x05] = 0x00; + io_reg[0x06] = 0xFF; + + /* initial !RESET input */ + io_reg[0x0D] = IO_RESET_HI; + + /* default !CONT input */ + if (system_hw != SYSTEM_PBC) + { + io_reg[0x0D] |= IO_CONT1_HI; + } + + /* Memory Control register (Master System and Game Gear hardware only) */ + if ((system_hw & SYSTEM_SMS) || (system_hw & SYSTEM_GG)) + { + /* RAM, I/O and either BIOS or Cartridge ROM are enabled */ + io_reg[0x0E] = (z80_readmap[0] == cart.rom + 0x400000) ? 0xE0 : 0xA8; + } + else + { + /* default value (no Memory Control register) */ + io_reg[0x0E] = 0x00; + } + + /* I/O control register (Master System, Mega Drive and Game Gear hardware only) */ + if (system_hw >= SYSTEM_SMS) + { + /* on power-on, TR and TH are configured as inputs */ + io_reg[0x0F] = 0xFF; + } + else + { + /* on SG-1000 & Mark-III, TR is always an input and TH is not connected (always return 1) */ + io_reg[0x0F] = 0xF5; + } + } + + /* Reset connected peripherals */ + input_reset(); +} + + +/***************************************************************************** + * I/O ports access from 68k (Genesis mode) * + * * + *****************************************************************************/ + +void io_68k_write(unsigned int offset, unsigned int data) +{ + switch (offset) + { + case 0x01: /* Port A Data */ + case 0x02: /* Port B Data */ + case 0x03: /* Port C Data */ + { + /* + D7 : Unused. This bit will return any value written to it + D6 : TH pin output level (1=high, 0=low) + D5 : TR pin output level (1=high, 0=low) + D4 : TL pin output level (1=high, 0=low) + D3 : D3 pin output level (1=high, 0=low) + D2 : D2 pin output level (1=high, 0=low) + D1 : D1 pin output level (1=high, 0=low) + D0 : D0 pin output level (1=high, 0=low) + */ + io_reg[offset] = data; + port[offset-1].data_w(data, io_reg[offset + 3]); + return; + } + + case 0x04: /* Port A Ctrl */ + case 0x05: /* Port B Ctrl */ + case 0x06: /* Port C Ctrl */ + { + /* + D7 : /HL output control (1=TH input level, 0=forced high) + D6 : TH pin is 1=output, 0=input + D5 : TR pin is 1=output, 0=input + D4 : TL pin is 1=output, 0=input + D3 : D3 pin is 1=output, 0=input + D2 : D2 pin is 1=output, 0=input + D1 : D1 pin is 1=output, 0=input + D0 : D0 pin is 1=output, 0=input + */ + if (data != io_reg[offset]) + { + io_reg[offset] = data; + port[offset-4].data_w(io_reg[offset-3], data); + } + return; + } + + case 0x07: /* Port A TxData */ + case 0x0A: /* Port B TxData */ + case 0x0D: /* Port C TxData */ + { + io_reg[offset] = data; + return; + } + + case 0x09: /* Port A S-Ctrl */ + case 0x0C: /* Port B S-Ctrl */ + case 0x0F: /* Port C S-Ctrl */ + { + /* + D7-D6 : Serial baud rate (00= 4800 bps, 01= 2400 bps, 10= 1200 bps, 11= 300 bps) + D5 : TR pin functions as 1= serial input pin, 0= normal + D4 : TL pin functions as 1= serial output pin, 0= normal + D3 : 1= Make I/O chip strobe /HL low when a byte has been received, 0= Do nothing + D2 : read-only (on read, 1= Error receiving current byte, 0= No error) + D1 : read-only (on read, 1= Rxd buffer is ready to read, 0= Rxd buffer isn't ready) + D0 : read-only (on read, 1= Txd buffer is full, 0= Can write to Txd buffer) + */ + io_reg[offset] = data & 0xF8; + return; + } + + default: /* Read-only ports */ + { + return; + } + } +} + +unsigned int io_68k_read(unsigned int offset) +{ + switch(offset) + { + case 0x01: /* Port A Data */ + case 0x02: /* Port B Data */ + case 0x03: /* Port C Data */ + { + /* + D7 : Unused. This bit will return any value written to it + D6 : TH pin input level (1=high, 0=low) + D5 : TR pin input level (1=high, 0=low) + D4 : TL pin input level (1=high, 0=low) + D3 : D3 pin input level (1=high, 0=low) + D2 : D2 pin input level (1=high, 0=low) + D1 : D1 pin input level (1=high, 0=low) + D0 : D0 pin input level (1=high, 0=low) + */ + unsigned int mask = 0x80 | io_reg[offset + 3]; + unsigned int data = port[offset-1].data_r(); + return (io_reg[offset] & mask) | (data & ~mask); + } + + default: /* return register value */ + { + return io_reg[offset]; + } + } +} + + +/***************************************************************************** + * I/O ports access from Z80 * + * * + *****************************************************************************/ + +void io_z80_write(unsigned int offset, unsigned int data, unsigned int cycles) +{ + /* I/O Control register */ + if (offset) + { + /* + Bit Function + -------------- + D7 : Port B TH pin output level (1=high, 0=low) + D6 : Port B TR pin output level (1=high, 0=low) + D5 : Port A TH pin output level (1=high, 0=low) + D4 : Port A TR pin output level (1=high, 0=low) + D3 : Port B TH pin direction (1=input, 0=output) + D2 : Port B TR pin direction (1=input, 0=output) + D1 : Port A TH pin direction (1=input, 0=output) + D0 : Port A TR pin direction (1=input, 0=output) + */ + + /* Send TR/TH state to connected peripherals */ + port[0].data_w((data << 1) & 0x60, (~data << 5) & 0x60); + port[1].data_w((data >> 1) & 0x60, (~data << 3) & 0x60); + + /* Check for TH low-to-high transitions on both ports */ + if ((!(io_reg[0x0F] & 0x80) && (data & 0x80)) || + (!(io_reg[0x0F] & 0x20) && (data & 0x20))) + { + /* Latch new HVC */ + hvc_latch = hctab[cycles % MCYCLES_PER_LINE] | 0x10000; + } + + /* Japanese model specific */ + if (region_code == REGION_JAPAN_NTSC) + { + /* Reading TH & TR pins always return 0 when set as output */ + data &= 0x0F; + } + + /* Update I/O Control register */ + io_reg[0x0F] = data; + } + else + { + /* Memory Control register */ + io_reg[0x0E] = data; + + /* Switch cartridge & BIOS ROM */ + sms_cart_switch(~data); + } +} + +unsigned int io_z80_read(unsigned int offset) +{ + /* Read port A & port B input data */ + unsigned int data = (port[0].data_r()) | (port[1].data_r() << 8); + + /* I/O control register value */ + unsigned int ctrl = io_reg[0x0F]; + + /* I/O ports */ + if (offset) + { + /* + Bit Function + -------------- + D7 : Port B TH pin input + D6 : Port A TH pin input + D5 : CONT input (0 on Mega Drive hardware, 1 otherwise) + D4 : RESET button (1: default, 0: pressed, only on Master System hardware) + D3 : Port B TR pin input + D2 : Port B TL pin input + D1 : Port B Right pin input + D0 : Port B Left pin input + */ + data = ((data >> 10) & 0x0F) | (data & 0x40) | ((data >> 7) & 0x80) | io_reg[0x0D]; + + /* clear !RESET input */ + io_reg[0x0D] |= IO_RESET_HI; + + /* Adjust port B TH state if configured as output */ + if (!(ctrl & 0x08)) + { + data &= ~0x80; + data |= (ctrl & 0x80); + } + + /* Adjust port A TH state if configured as output */ + if (!(ctrl & 0x02)) + { + data &= ~0x40; + data |= ((ctrl & 0x20) << 1); + } + + /* Adjust port B TR state if configured as output */ + if (!(ctrl & 0x04)) + { + data &= ~0x08; + data |= ((ctrl & 0x40) >> 3); + } + } + else + { + /* + Bit Function + -------------- + D7 : Port B Down pin input + D6 : Port B Up pin input + D5 : Port A TR pin input + D4 : Port A TL pin input + D3 : Port A Right pin input + D2 : Port A Left pin input + D1 : Port A Down pin input + D0 : Port A Up pin input + */ + data = (data & 0x3F) | ((data >> 2) & 0xC0); + + /* Adjust port A TR state if configured as output */ + if (!(ctrl & 0x01)) + { + data &= ~0x20; + data |= ((ctrl & 0x10) << 1); + } + } + + return data; +} + + +/***************************************************************************** + * Game Gear communication ports access * + * * + *****************************************************************************/ + +void io_gg_write(unsigned int offset, unsigned int data) +{ + switch (offset) + { + case 1: /* Parallel data register */ + io_reg[1] = data; + return; + + case 2: /* Data direction register and NMI enable */ + io_reg[2] = data; + return; + + case 3: /* Transmit data buffer */ + io_reg[3] = data; + return; + + case 5: /* Serial control (bits 0-2 are read-only) */ + io_reg[5] = data & 0xF8; + return; + + case 6: /* PSG Stereo output control */ + io_reg[6] = data; + psg_config(Z80.cycles, config.psg_preamp, data); + return; + + default: /* Read-only */ + return; + } +} + +unsigned int io_gg_read(unsigned int offset) +{ + switch (offset) + { + case 0: /* Mode Register */ + return (io_reg[0] & ~(input.pad[0] & INPUT_START)); + + case 1: /* Parallel data register (not connected) */ + return ((io_reg[1] & ~(io_reg[2] & 0x7F)) | (io_reg[2] & 0x7F)); + + case 2: /* Data direction register and NMI enable */ + return io_reg[2]; + + case 3: /* Transmit data buffer */ + return io_reg[3]; + + case 4: /* Receive data buffer */ + return io_reg[4]; + + case 5: /* Serial control */ + return io_reg[5]; + + default: /* Write-Only */ + return 0xFF; + } +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/io_ctrl.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/io_ctrl.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/io_ctrl.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/io_ctrl.h index 4c13f6d7b4..3d56701307 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/io_ctrl.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/io_ctrl.h @@ -1,68 +1,68 @@ -/*************************************************************************************** - * Genesis Plus - * I/O controller - * - * Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _IO_CTRL_H_ -#define _IO_CTRL_H_ - -#define IO_RESET_HI 0x10 -#define IO_CONT1_HI 0x20 - -#define REGION_JAPAN_NTSC 0x00 -#define REGION_JAPAN_PAL 0x40 -#define REGION_USA 0x80 -#define REGION_EUROPE 0xC0 - -/* Global variables */ -extern uint8 io_reg[0x10]; -extern uint8 region_code; - -/* Function prototypes */ -extern void io_init(void); -extern void io_reset(void); -extern void io_68k_write(unsigned int offset, unsigned int data); -extern unsigned int io_68k_read(unsigned int offset); -extern void io_z80_write(unsigned int offset, unsigned int data, unsigned int cycles); -extern unsigned int io_z80_read(unsigned int offset); -extern void io_gg_write(unsigned int offset, unsigned int data); -extern unsigned int io_gg_read(unsigned int offset); - -#endif /* _IO_CTRL_H_ */ - +/*************************************************************************************** + * Genesis Plus + * I/O controller + * + * Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _IO_CTRL_H_ +#define _IO_CTRL_H_ + +#define IO_RESET_HI 0x10 +#define IO_CONT1_HI 0x20 + +#define REGION_JAPAN_NTSC 0x00 +#define REGION_JAPAN_PAL 0x40 +#define REGION_USA 0x80 +#define REGION_EUROPE 0xC0 + +/* Global variables */ +extern uint8 io_reg[0x10]; +extern uint8 region_code; + +/* Function prototypes */ +extern void io_init(void); +extern void io_reset(void); +extern void io_68k_write(unsigned int offset, unsigned int data); +extern unsigned int io_68k_read(unsigned int offset); +extern void io_z80_write(unsigned int offset, unsigned int data, unsigned int cycles); +extern unsigned int io_z80_read(unsigned int offset); +extern void io_gg_write(unsigned int offset, unsigned int data); +extern unsigned int io_gg_read(unsigned int offset); + +#endif /* _IO_CTRL_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/loadrom.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/loadrom.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/loadrom.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/loadrom.c index 9f14c3f6d1..d4e909f33e 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/loadrom.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/loadrom.c @@ -1,1190 +1,1190 @@ -/*************************************************************************************** - * Genesis Plus - * ROM Loading Support - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include -#include "shared.h" - -/*** ROM Information ***/ -#define ROMCONSOLE 256 -#define ROMCOPYRIGHT 272 -#define ROMDOMESTIC 288 -#define ROMWORLD 336 -#define ROMTYPE 384 -#define ROMPRODUCT 386 -#define ROMCHECKSUM 398 -#define ROMIOSUPPORT 400 -#define ROMROMSTART 416 -#define ROMROMEND 420 -#define ROMRAMINFO 424 -#define ROMRAMSTART 436 -#define ROMRAMEND 440 -#define ROMMODEMINFO 444 -#define ROMMEMO 456 -#define ROMCOUNTRY 496 - -#define P3BUTTONS 1 -#define P6BUTTONS 2 -#define PKEYBOARD 4 -#define PPRINTER 8 -#define PBALL 16 -#define PFLOPPY 32 -#define PACTIVATOR 64 -#define PTEAMPLAYER 128 -#define PMSYSTEMPAD 256 -#define PSERIAL 512 -#define PTABLET 1024 -#define PPADDLE 2048 -#define PCDROM 4096 -#define PMOUSE 8192 - -#define MAXCOMPANY 64 -#define MAXPERIPHERALS 15 - -typedef struct -{ - char companyid[6]; - char company[26]; -} COMPANYINFO; - -typedef struct -{ - char pID[2]; - char pName[14]; -} PERIPHERALINFO; - - -ROMINFO rominfo; -uint8 romtype; - -static uint8 rom_region; - -/*************************************************************************** - * Genesis ROM Manufacturers - * - * Based on the document provided at - * http://www.zophar.net/tech/files/Genesis_ROM_Format.txt - **************************************************************************/ -static const COMPANYINFO companyinfo[MAXCOMPANY] = -{ - {"ACLD", "Ballistic"}, - {"RSI", "Razorsoft"}, - {"SEGA", "SEGA"}, - {"TREC", "Treco"}, - {"VRGN", "Virgin Games"}, - {"WSTN", "Westone"}, - {"10", "Takara"}, - {"11", "Taito or Accolade"}, - {"12", "Capcom"}, - {"13", "Data East"}, - {"14", "Namco or Tengen"}, - {"15", "Sunsoft"}, - {"16", "Bandai"}, - {"17", "Dempa"}, - {"18", "Technosoft"}, - {"19", "Technosoft"}, - {"20", "Asmik"}, - {"22", "Micronet"}, - {"23", "Vic Tokai"}, - {"24", "American Sammy"}, - {"29", "Kyugo"}, - {"32", "Wolfteam"}, - {"33", "Kaneko"}, - {"35", "Toaplan"}, - {"36", "Tecmo"}, - {"40", "Toaplan"}, - {"42", "UFL Company Limited"}, - {"43", "Human"}, - {"45", "Game Arts"}, - {"47", "Sage's Creation"}, - {"48", "Tengen"}, - {"49", "Renovation or Telenet"}, - {"50", "Electronic Arts"}, - {"56", "Razorsoft"}, - {"58", "Mentrix"}, - {"60", "Victor Musical Ind."}, - {"69", "Arena"}, - {"70", "Virgin"}, - {"73", "Soft Vision"}, - {"74", "Palsoft"}, - {"76", "Koei"}, - {"79", "U.S. Gold"}, - {"81", "Acclaim/Flying Edge"}, - {"83", "Gametek"}, - {"86", "Absolute"}, - {"87", "Mindscape"}, - {"93", "Sony"}, - {"95", "Konami"}, - {"97", "Tradewest"}, - {"100", "T*HQ Software"}, - {"101", "Tecmagik"}, - {"112", "Designer Software"}, - {"113", "Psygnosis"}, - {"119", "Accolade"}, - {"120", "Code Masters"}, - {"125", "Interplay"}, - {"130", "Activision"}, - {"132", "Shiny & Playmates"}, - {"144", "Atlus"}, - {"151", "Infogrames"}, - {"161", "Fox Interactive"}, - {"177", "Ubisoft"}, - {"239", "Disney Interactive"}, - {"---", "Unknown"} -}; - -/*************************************************************************** - * Genesis Peripheral Information - * - * Based on the document provided at - * http://www.zophar.net/tech/files/Genesis_ROM_Format.txt - ***************************************************************************/ -static const PERIPHERALINFO peripheralinfo[MAXPERIPHERALS] = -{ - {"J", "3B Joypad"}, - {"6", "6B Joypad"}, - {"K", "Keyboard"}, - {"P", "Printer"}, - {"B", "Control Ball"}, - {"F", "Floppy Drive"}, - {"L", "Activator"}, - {"4", "Team Player"}, - {"0", "MS Joypad"}, - {"R", "RS232C Serial"}, - {"T", "Tablet"}, - {"V", "Paddle"}, - {"C", "CD-ROM"}, - {"M", "Mega Mouse"}, - {"G", "Menacer"}, -}; - -/*************************************************************************** - * - * Compute ROM real checksum. - ***************************************************************************/ -static uint16 getchecksum(uint8 *rom, int length) -{ - int i; - uint16 checksum = 0; - - for (i = 0; i < length; i += 2) - { - checksum += ((rom[i] << 8) + rom[i + 1]); - } - - return checksum; -} - - -/*************************************************************************** - * deinterleave_block - * - * Convert interleaved (.smd) ROM files. - ***************************************************************************/ -static void deinterleave_block(uint8 * src) -{ - int i; - uint8 block[0x4000]; - memcpy (block, src, 0x4000); - for (i = 0; i < 0x2000; i += 1) - { - src[i * 2 + 0] = block[0x2000 + (i)]; - src[i * 2 + 1] = block[0x0000 + (i)]; - } -} - -/*************************************************************************** - * - * Pass a pointer to the ROM base address. - ***************************************************************************/ -void getrominfo(char *romheader) -{ - /* Clear ROM info structure */ - memset (&rominfo, 0, sizeof (ROMINFO)); - - /* Genesis ROM header support */ - if (system_hw & SYSTEM_MD) - { - int i,j; - - memcpy (&rominfo.consoletype, romheader + ROMCONSOLE, 16); - memcpy (&rominfo.copyright, romheader + ROMCOPYRIGHT, 16); - - /* Domestic (japanese) name */ - rominfo.domestic[0] = romheader[ROMDOMESTIC]; - j = 1; - for (i=1; i<48; i++) - { - if ((rominfo.domestic[j-1] != 32) || (romheader[ROMDOMESTIC + i] != 32)) - { - rominfo.domestic[j] = romheader[ROMDOMESTIC + i]; - j++; - } - } - rominfo.domestic[j] = 0; - - /* International name */ - rominfo.international[0] = romheader[ROMWORLD]; - j=1; - for (i=1; i<48; i++) - { - if ((rominfo.international[j-1] != 32) || (romheader[ROMWORLD + i] != 32)) - { - rominfo.international[j] = romheader[ROMWORLD + i]; - j++; - } - } - rominfo.international[j] = 0; - - /* ROM informations */ - memcpy (&rominfo.ROMType, romheader + ROMTYPE, 2); - memcpy (&rominfo.product, romheader + ROMPRODUCT, 12); - memcpy (&rominfo.checksum, romheader + ROMCHECKSUM, 2); - memcpy (&rominfo.romstart, romheader + ROMROMSTART, 4); - memcpy (&rominfo.romend, romheader + ROMROMEND, 4); - memcpy (&rominfo.country, romheader + ROMCOUNTRY, 16); - - /* Checksums */ -#ifdef LSB_FIRST - rominfo.checksum = (rominfo.checksum >> 8) | ((rominfo.checksum & 0xff) << 8); -#endif - rominfo.realchecksum = getchecksum(((uint8 *) cart.rom) + 0x200, cart.romsize - 0x200); - - /* Supported peripherals */ - rominfo.peripherals = 0; - for (i = 0; i < 14; i++) - for (j=0; j < 14; j++) - if (romheader[ROMIOSUPPORT+i] == peripheralinfo[j].pID[0]) - rominfo.peripherals |= (1 << j); - } - else - { - uint16 offset = 0; - - /* detect Master System ROM header */ - if (!memcmp (&romheader[0x1ff0], "TMR SEGA", 8)) - { - offset = 0x1ff0; - } - else if (!memcmp (&romheader[0x3ff0], "TMR SEGA", 8)) - { - offset = 0x3ff0; - } - else if (!memcmp (&romheader[0x7ff0], "TMR SEGA", 8)) - { - offset = 0x7ff0; - } - - /* if found, get infos from header */ - if ((offset > 0) && (offset < cart.romsize)) - { - /* checksum */ - rominfo.checksum = romheader[offset + 0x0a] | (romheader[offset + 0x0b] << 8); - - /* product code & version */ - sprintf(&rominfo.product[0], "%02d", romheader[offset + 0x0e] >> 4); - sprintf(&rominfo.product[2], "%02x", romheader[offset + 0x0d]); - sprintf(&rominfo.product[4], "%02x", romheader[offset + 0x0c]); - sprintf(&rominfo.product[6], "-%d", romheader[offset + 0x0e] & 0x0F); - - /* region code */ - switch (romheader[offset + 0x0f] >> 4) - { - case 3: - strcpy(rominfo.country,"SMS Japan"); - break; - case 4: - strcpy(rominfo.country,"SMS Export"); - break; - case 5: - strcpy(rominfo.country,"GG Japan"); - break; - case 6: - strcpy(rominfo.country,"GG Export"); - break; - case 7: - strcpy(rominfo.country,"GG International"); - break; - default: - sprintf(rominfo.country,"Unknown (%d)", romheader[offset + 0x0f] >> 4); - break; - } - - /* ROM size */ - rominfo.romstart = 0; - switch (romheader[offset + 0x0f] & 0x0F) - { - case 0x00: - rominfo.romend = 0x3FFFF; - break; - case 0x01: - rominfo.romend = 0x7FFFF; - break; - case 0x02: - rominfo.romend = 0xFFFFF; - break; - case 0x0a: - rominfo.romend = 0x1FFF; - break; - case 0x0b: - rominfo.romend = 0x3FFF; - break; - case 0x0c: - rominfo.romend = 0x7FFF; - break; - case 0x0d: - rominfo.romend = 0xBFFF; - break; - case 0x0e: - rominfo.romend = 0xFFFF; - break; - case 0x0f: - rominfo.romend = 0x1FFFF; - break; - } - } - } -} - -/*************************************************************************** - * load_bios - * - * Load current system BIOS file. - * - * Return loaded size (-1 if already loaded) - * - ***************************************************************************/ -int load_bios(int system) -{ - int size = 0; - - switch (system) - { - case SYSTEM_MCD: - { - /* check if CD BOOTROM is already loaded */ - if (!(system_bios & 0x10) || ((system_bios & 0x0c) != (region_code >> 4))) - { - /* load CD BOOTROM (fixed 128KB size) */ - switch (region_code) - { - case REGION_USA: - size = load_archive(CD_BIOS_US, scd.bootrom, sizeof(scd.bootrom), 0); - break; - case REGION_EUROPE: - size = load_archive(CD_BIOS_EU, scd.bootrom, sizeof(scd.bootrom), 0); - break; - default: - size = load_archive(CD_BIOS_JP, scd.bootrom, sizeof(scd.bootrom), 0); - break; - } - - /* CD BOOTROM loaded ? */ - if (size > 0) - { - /* auto-detect CD hardware model */ - if (!memcmp (&scd.bootrom[0x120], "WONDER-MEGA BOOT", 16)) - { - /* Wondermega CD hardware */ - cdd.type = CD_TYPE_WONDERMEGA; - } - else if (!memcmp (&scd.bootrom[0x120], "WONDERMEGA2 BOOT", 16)) - { - /* Wondermega M2 / X'Eye CD hardware */ - cdd.type = CD_TYPE_WONDERMEGA_M2; - } - else - { - /* default CD hardware */ - cdd.type = CD_TYPE_DEFAULT; - } - -#ifdef LSB_FIRST - /* Byteswap ROM to optimize 16-bit access */ - int i; - for (i = 0; i < size; i += 2) - { - uint8 temp = scd.bootrom[i]; - scd.bootrom[i] = scd.bootrom[i+1]; - scd.bootrom[i+1] = temp; - } -#endif - /* mark CD BIOS as being loaded */ - system_bios = system_bios | 0x10; - - /* loaded BIOS region */ - system_bios = (system_bios & 0xf0) | (region_code >> 4); - } - - return size; - } - - return -1; - } - - case SYSTEM_GG: - case SYSTEM_GGMS: - { - /* check if Game Gear BOOTROM is already loaded */ - if (!(system_bios & SYSTEM_GG)) - { - /* mark both Master System & Game Gear BOOTROM as unloaded */ - system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); - - /* BOOTROM is stored above cartridge ROM area (max. 4MB) */ - if (cart.romsize <= 0x400000) - { - /* load Game Gear BOOTROM file */ - size = load_archive(GG_BIOS, cart.rom + 0x400000, 0x400000, 0); - - if (size > 0) - { - /* mark Game Gear BOOTROM as loaded */ - system_bios |= SYSTEM_GG; - } - } - - return size; - } - - return -1; - } - - case SYSTEM_SMS: - case SYSTEM_SMS2: - { - /* check if Master System BOOTROM is already loaded */ - if (!(system_bios & SYSTEM_SMS) || ((system_bios & 0x0c) != (region_code >> 4))) - { - /* mark both Master System & Game Gear BOOTROM as unloaded */ - system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); - - /* BOOTROM is stored above cartridge ROM area (max. 4MB) */ - if (cart.romsize <= 0x400000) - { - /* load Master System BOOTROM file */ - switch (region_code) - { - case REGION_USA: - size = load_archive(MS_BIOS_US, cart.rom + 0x400000, 0x400000, 0); - break; - case REGION_EUROPE: - size = load_archive(MS_BIOS_EU, cart.rom + 0x400000, 0x400000, 0); - break; - default: - size = load_archive(MS_BIOS_JP, cart.rom + 0x400000, 0x400000, 0); - break; - } - - if (size > 0) - { - /* mark Master System BOOTROM as loaded */ - system_bios |= SYSTEM_SMS; - - /* loaded BOOTROM region */ - system_bios = (system_bios & 0xf0) | (region_code >> 4); - } - } - - return size; - } - - return -1; - } - - default: - { - /* mark all BOOTROM as unloaded */ - system_bios &= ~(0x10 | SYSTEM_SMS | SYSTEM_GG); - return 0; - } - } -} - -/*************************************************************************** - * load_rom - * - * Load a new ROM file. - * - * Return 0 on error, 1 on success - * - ***************************************************************************/ -int load_rom(char *filename) -{ - int i, size; - -#ifdef USE_DYNAMIC_ALLOC - if (!ext) - { - /* allocate & initialize memory for Cartridge / CD hardware if required */ - ext = (external_t *)calloc(1, sizeof(external_t)); - if (!ext) return (0); - } -#endif - - /* clear any existing patches */ - ggenie_shutdown(); - areplay_shutdown(); - - /* check previous loaded ROM size */ - if (cart.romsize > 0x800000) - { - /* assume no CD is currently loaded */ - cdd.loaded = 0; - } - - /* auto-detect CD image file */ - size = cdd_load(filename, (char *)(cart.rom)); - if (size < 0) - { - /* error opening file */ - return (0); - } - - /* CD image file ? */ - if (size) - { - /* enable CD hardware */ - system_hw = SYSTEM_MCD; - - /* boot from CD hardware */ - scd.cartridge.boot = 0x00; - } - else - { - /* load file into ROM buffer */ - char extension[4]; - size = load_archive(filename, cart.rom, cdd.loaded ? 0x800000 : MAXROMSIZE, extension); - - /* mark BOOTROM as unloaded if they have been overwritten by cartridge ROM */ - if (size > 0x800000) - { - /* CD BIOS ROM are loaded at the start of CD area */ - system_bios &= ~0x10; - } - else if (size > 0x400000) - { - /* Master System or Game Gear BIOS ROM are loaded within $400000-$4FFFFF area */ - system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); - } - else if (size <= 0) - { - /* mark all BOOTROM as unloaded since they could have been overwritten */ - system_bios &= ~(0x10 | SYSTEM_SMS | SYSTEM_GG); - - /* error loading file */ - return 0; - } - - /* convert lower case file extension to upper case */ - *(uint32 *)(extension) &= 0xdfdfdfdf; - - /* auto-detect system hardware from ROM file extension */ - if (!memcmp("SMS", &extension[0], 3)) - { - /* Master System II hardware */ - system_hw = SYSTEM_SMS2; - } - else if (!memcmp("GG", &extension[1], 2)) - { - /* Game Gear hardware (GG mode) */ - system_hw = SYSTEM_GG; - } - else if (!memcmp("SG", &extension[1], 2)) - { - /* SG-1000 hardware */ - system_hw = SYSTEM_SG; - } - else - { - /* default is Mega Drive / Genesis hardware (16-bit mode) */ - system_hw = SYSTEM_MD; - - /* decode .MDX format */ - if (!memcmp("MDX", &extension[0], 3)) - { - for (i = 4; i < size - 1; i++) - { - cart.rom[i-4] = cart.rom[i] ^ 0x40; - } - size = size - 5; - } - - /* auto-detect byte-swapped dumps */ - if (!memcmp((char *)(cart.rom + 0x100),"ESAGM GE ARDVI E", 16) || - !memcmp((char *)(cart.rom + 0x100),"ESAGG NESESI", 12) || - !memcmp((char *)(cart.rom + 0x80000 + 0x100),"ESAGM GE ARDVI E", 16) || - !memcmp((char *)(cart.rom + 0x80000 + 0x100),"ESAGG NESESI", 12)) - { - for(i = 0; i < size; i += 2) - { - uint8 temp = cart.rom[i]; - cart.rom[i] = cart.rom[i+1]; - cart.rom[i+1] = temp; - } - } - } - - /* auto-detect 512 byte extra header */ - if (memcmp((char *)(cart.rom + 0x100), "SEGA", 4) && ((size / 512) & 1) && !(size % 512)) - { - /* remove header */ - size -= 512; - memmove (cart.rom, cart.rom + 512, size); - - /* assume interleaved Mega Drive / Genesis ROM format (.smd) */ - if (system_hw == SYSTEM_MD) - { - for (i = 0; i < (size / 0x4000); i++) - { - deinterleave_block (cart.rom + (i * 0x4000)); - } - } - } - } - - /* initialize ROM size */ - cart.romsize = size; - - /* get infos from ROM header */ - getrominfo((char *)(cart.rom)); - - /* set console region */ - get_region((char *)(cart.rom)); - -#ifdef LSB_FIRST - /* 16-bit ROM specific */ - if (system_hw == SYSTEM_MD) - { - /* Byteswap ROM to optimize 16-bit access */ - for (i = 0; i < cart.romsize; i += 2) - { - uint8 temp = cart.rom[i]; - cart.rom[i] = cart.rom[i+1]; - cart.rom[i+1] = temp; - } - } -#endif - - /* PICO ROM */ - if (strstr(rominfo.consoletype, "SEGA PICO") != NULL) - { - /* PICO hardware */ - system_hw = SYSTEM_PICO; - } - - /* Save auto-detected system hardware */ - romtype = system_hw; - - /* CD image file */ - if (system_hw == SYSTEM_MCD) - { - /* try to load CD BOOTROM for selected region */ - if (!load_bios(SYSTEM_MCD)) - { - /* unmount CD image */ - cdd_unload(); - - /* error booting from CD */ - return (0); - } - } - - /* CD BOOTROM */ - else if (strstr(rominfo.ROMType, "BR") != NULL) - { - /* enable CD hardware */ - system_hw = SYSTEM_MCD; - - /* boot from CD hardware */ - scd.cartridge.boot = 0x00; - - /* copy ROM to BOOTROM area */ - memcpy(scd.bootrom, cart.rom, sizeof(scd.bootrom)); - - /* mark CD BIOS as being loaded */ - system_bios = system_bios | 0x10; - - /* loaded CD BIOS region */ - system_bios = (system_bios & 0xf0) | (region_code >> 4); - } - - /* ROM cartridge (max. 8MB) with CD loaded */ - else if ((cart.romsize <= 0x800000) && cdd.loaded) - { - /* try to load CD BOOTROM */ - if (load_bios(SYSTEM_MCD)) - { - /* enable CD hardware */ - system_hw = SYSTEM_MCD; - - /* boot from cartridge */ - scd.cartridge.boot = 0x40; - } - else - { - /* unmount CD image */ - cdd_unload(); - } - } - - /* ROM cartridge with CD support */ - else if ((strstr(rominfo.domestic,"FLUX") != NULL) || - (strstr(rominfo.domestic,"WONDER LIBRARY") != NULL) || - (strstr(rominfo.product,"T-5740") != NULL)) - { - /* check if console hardware is set to AUTO */ - if (!config.system) - { - /* try to load CD BOOTROM */ - if (load_bios(SYSTEM_MCD)) - { - char fname[256]; - int len = strlen(filename); - - /* automatically try to load associated .iso file */ - while ((len && (filename[len] != '.')) || (len > 251)) len--; - strncpy(fname, filename, len); - strcpy(&fname[len], ".iso"); - cdd_load(fname, (char *)cdc.ram); - - /* enable CD hardware */ - system_hw = SYSTEM_MCD; - - /* boot from cartridge */ - scd.cartridge.boot = 0x40; - } - } - } - - /* Force system hardware if requested */ - if (config.system == SYSTEM_MD) - { - if (!(system_hw & SYSTEM_MD)) - { - /* Mega Drive in MS compatibility mode */ - system_hw = SYSTEM_PBC; - } - } - else if (config.system == SYSTEM_GG) - { - if (system_hw != SYSTEM_GG) - { - /* Game Gear in MS compatibility mode */ - system_hw = SYSTEM_GGMS; - } - } - else if (config.system) - { - system_hw = config.system; - } - - /* restore previous input settings */ - if (old_system[0] != -1) - { - input.system[0] = old_system[0]; - } - if (old_system[1] != -1) - { - input.system[1] = old_system[1]; - } - - /* default gun settings */ - input.x_offset = (input.system[1] == SYSTEM_MENACER) ? 64 : 0; - input.y_offset = 0; - - /* autodetect gun support */ - if (strstr(rominfo.international,"MENACER") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 82; - input.y_offset = 0; - } - else if (strstr(rominfo.international,"T2 ; THE ARCADE GAME") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 133; - input.y_offset = -8; - } - else if (strstr(rominfo.international,"BODY COUNT") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 68; - input.y_offset = -24; - } - else if (strstr(rominfo.international,"CORPSE KILLER") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 64; - input.y_offset = -8; - } - else if (strstr(rominfo.international,"CRIME PATROL") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 61; - input.y_offset = 0; - } - else if (strstr(rominfo.international,"MAD DOG II THE LOST GOLD") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 70; - input.y_offset = 18; - } - else if (strstr(rominfo.international,"MAD DOG MCCREE") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 49; - input.y_offset = 0; - } - else if (strstr(rominfo.international,"WHO SHOT JOHNNY ROCK?") != NULL) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force MENACER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_MENACER; - input.x_offset = 60; - input.y_offset = 30; - } - else if ((strstr(rominfo.international,"LETHAL ENFORCERS") != NULL) || - (strstr(rominfo.international,"SNATCHER") != NULL)) - { - /* save current setting */ - if (old_system[0] == -1) - { - old_system[0] = input.system[0]; - } - if (old_system[1] == -1) - { - old_system[1] = input.system[1]; - } - - /* force JUSTIFIER configuration */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_JUSTIFIER; - input.x_offset = (strstr(rominfo.international,"GUN FIGHTERS") != NULL) ? 24 : 0; - input.y_offset = 0; - } - - return(1); -} - -/**************************************************************************** - * get_region - * - * Set console region from ROM header passed as parameter or - * from previous auto-detection (if NULL) - * - ****************************************************************************/ -void get_region(char *romheader) -{ - /* region auto-detection ? */ - if (romheader) - { - /* Mega CD image */ - if (system_hw == SYSTEM_MCD) - { - /* security code */ - switch ((unsigned char)romheader[0x20b]) - { - case 0x64: - region_code = REGION_EUROPE; - break; - - case 0xa1: - region_code = REGION_JAPAN_NTSC; - break; - - default: - region_code = REGION_USA; - break; - } - } - - /* 16-bit cartridge */ - else if (system_hw & SYSTEM_MD) - { - /* country codes used to differentiate region */ - /* 0001 = japan ntsc (1) */ - /* 0010 = japan pal (2) -> does not exist ? */ - /* 0100 = usa (4) */ - /* 1000 = europe (8) */ - int country = 0; - - /* from Gens */ - if (!memcmp(rominfo.country, "eur", 3)) country |= 8; - else if (!memcmp(rominfo.country, "EUR", 3)) country |= 8; - else if (!memcmp(rominfo.country, "Europe", 3)) country |= 8; - else if (!memcmp(rominfo.country, "jap", 3)) country |= 1; - else if (!memcmp(rominfo.country, "JAP", 3)) country |= 1; - else if (!memcmp(rominfo.country, "usa", 3)) country |= 4; - else if (!memcmp(rominfo.country, "USA", 3)) country |= 4; - else - { - int i; - char c; - - /* look for each characters */ - for(i = 0; i < 4; i++) - { - c = toupper((int)rominfo.country[i]); - - if (c == 'U') country |= 4; - else if (c == 'J') country |= 1; - else if (c == 'E') country |= 8; - else if (c == 'K') country |= 1; - else if (c < 16) country |= c; - else if ((c >= '0') && (c <= '9')) country |= c - '0'; - else if ((c >= 'A') && (c <= 'F')) country |= c - 'A' + 10; - } - } - - /* set default console region (USA > JAPAN > EUROPE) */ - if (country & 4) region_code = REGION_USA; - else if (country & 1) region_code = REGION_JAPAN_NTSC; - else if (country & 8) region_code = REGION_EUROPE; - else if (country & 2) region_code = REGION_JAPAN_PAL; - else region_code = REGION_USA; - - /* some games need specific region settings but have wrong header*/ - if (((strstr(rominfo.product,"T-45033") != NULL) && (rominfo.checksum == 0x0F81)) || /* Alisia Dragon (Europe) */ - (strstr(rominfo.product,"T-69046-50") != NULL) || /* Back to the Future III (Europe) */ - (strstr(rominfo.product,"T-120106-00") != NULL) || /* Brian Lara Cricket (Europe) */ - (strstr(rominfo.product,"T-97126 -50") != NULL) || /* Williams Arcade's Greatest Hits (Europe) */ - (strstr(rominfo.product,"T-70096 -00") != NULL) || /* Muhammad Ali Heavyweight Boxing (Europe) */ - ((rominfo.checksum == 0x0000) && (rominfo.realchecksum == 0x1f7f))) /* Radica - Sensible Soccer Plus edition */ - { - /* need PAL settings */ - region_code = REGION_EUROPE; - } - else if ((rominfo.realchecksum == 0x532e) && (strstr(rominfo.product,"1011-00") != NULL)) - { - /* On Dal Jang Goon (Korea) needs JAPAN region code */ - region_code = REGION_JAPAN_NTSC; - } - } - - /* 8-bit cartridge */ - else - { - region_code = sms_cart_region_detect(); - } - - /* save auto-detected region */ - rom_region = region_code; - } - else - { - /* restore auto-detected region */ - region_code = rom_region; - } - - /* force console region if requested */ - if (config.region_detect == 1) region_code = REGION_USA; - else if (config.region_detect == 2) region_code = REGION_EUROPE; - else if (config.region_detect == 3) region_code = REGION_JAPAN_NTSC; - else if (config.region_detect == 4) region_code = REGION_JAPAN_PAL; - - /* autodetect PAL/NTSC timings */ - vdp_pal = (region_code >> 6) & 0x01; - - /* autodetect PAL/NTSC master clock */ - system_clock = vdp_pal ? MCLOCK_PAL : MCLOCK_NTSC; - - /* force PAL/NTSC timings if requested */ - if (config.vdp_mode == 1) vdp_pal = 0; - else if (config.vdp_mode == 2) vdp_pal = 1; - - /* force PAL/NTSC master clock if requested */ - if (config.master_clock == 1) system_clock = MCLOCK_NTSC; - else if (config.master_clock == 2) system_clock = MCLOCK_PAL; -} - -/**************************************************************************** - * get_company (Softdev - 2006) - * - * Try to determine which company made this rom - * - * Ok, for some reason there's no standard for this. - * It seems that there can be pretty much anything you like following the - * copyright (C) symbol! - ****************************************************************************/ -char *get_company(void) -{ - char *s; - int i; - char company[10]; - - for (i = 3; i < 8; i++) - { - company[i - 3] = rominfo.copyright[i]; - } - company[5] = 0; - - /** OK, first look for a hyphen - * Capcom use T-12 for example - */ - s = strstr (company, "-"); - if (s != NULL) - { - s++; - strcpy (company, s); - } - - /** Strip any trailing spaces **/ - for (i = strlen (company) - 1; i >= 0; i--) - if (company[i] == 32) - company[i] = 0; - - if (strlen (company) == 0) - return (char *)companyinfo[MAXCOMPANY - 1].company; - - for (i = 0; i < MAXCOMPANY - 1; i++) - { - if (!(strncmp (company, companyinfo[i].companyid, strlen (company)))) - return (char *)companyinfo[i].company; - } - - return (char *)companyinfo[MAXCOMPANY - 1].company; -} - -/**************************************************************************** - * get_peripheral (Softdev - 2006) - * - * Return peripheral name based on header code - * - ****************************************************************************/ -char *get_peripheral(int index) -{ - if (index < MAXPERIPHERALS) - return (char *)peripheralinfo[index].pName; - return (char *)companyinfo[MAXCOMPANY - 1].company; -} - +/*************************************************************************************** + * Genesis Plus + * ROM Loading Support + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include +#include "shared.h" + +/*** ROM Information ***/ +#define ROMCONSOLE 256 +#define ROMCOPYRIGHT 272 +#define ROMDOMESTIC 288 +#define ROMWORLD 336 +#define ROMTYPE 384 +#define ROMPRODUCT 386 +#define ROMCHECKSUM 398 +#define ROMIOSUPPORT 400 +#define ROMROMSTART 416 +#define ROMROMEND 420 +#define ROMRAMINFO 424 +#define ROMRAMSTART 436 +#define ROMRAMEND 440 +#define ROMMODEMINFO 444 +#define ROMMEMO 456 +#define ROMCOUNTRY 496 + +#define P3BUTTONS 1 +#define P6BUTTONS 2 +#define PKEYBOARD 4 +#define PPRINTER 8 +#define PBALL 16 +#define PFLOPPY 32 +#define PACTIVATOR 64 +#define PTEAMPLAYER 128 +#define PMSYSTEMPAD 256 +#define PSERIAL 512 +#define PTABLET 1024 +#define PPADDLE 2048 +#define PCDROM 4096 +#define PMOUSE 8192 + +#define MAXCOMPANY 64 +#define MAXPERIPHERALS 15 + +typedef struct +{ + char companyid[6]; + char company[26]; +} COMPANYINFO; + +typedef struct +{ + char pID[2]; + char pName[14]; +} PERIPHERALINFO; + + +ROMINFO rominfo; +uint8 romtype; + +static uint8 rom_region; + +/*************************************************************************** + * Genesis ROM Manufacturers + * + * Based on the document provided at + * http://www.zophar.net/tech/files/Genesis_ROM_Format.txt + **************************************************************************/ +static const COMPANYINFO companyinfo[MAXCOMPANY] = +{ + {"ACLD", "Ballistic"}, + {"RSI", "Razorsoft"}, + {"SEGA", "SEGA"}, + {"TREC", "Treco"}, + {"VRGN", "Virgin Games"}, + {"WSTN", "Westone"}, + {"10", "Takara"}, + {"11", "Taito or Accolade"}, + {"12", "Capcom"}, + {"13", "Data East"}, + {"14", "Namco or Tengen"}, + {"15", "Sunsoft"}, + {"16", "Bandai"}, + {"17", "Dempa"}, + {"18", "Technosoft"}, + {"19", "Technosoft"}, + {"20", "Asmik"}, + {"22", "Micronet"}, + {"23", "Vic Tokai"}, + {"24", "American Sammy"}, + {"29", "Kyugo"}, + {"32", "Wolfteam"}, + {"33", "Kaneko"}, + {"35", "Toaplan"}, + {"36", "Tecmo"}, + {"40", "Toaplan"}, + {"42", "UFL Company Limited"}, + {"43", "Human"}, + {"45", "Game Arts"}, + {"47", "Sage's Creation"}, + {"48", "Tengen"}, + {"49", "Renovation or Telenet"}, + {"50", "Electronic Arts"}, + {"56", "Razorsoft"}, + {"58", "Mentrix"}, + {"60", "Victor Musical Ind."}, + {"69", "Arena"}, + {"70", "Virgin"}, + {"73", "Soft Vision"}, + {"74", "Palsoft"}, + {"76", "Koei"}, + {"79", "U.S. Gold"}, + {"81", "Acclaim/Flying Edge"}, + {"83", "Gametek"}, + {"86", "Absolute"}, + {"87", "Mindscape"}, + {"93", "Sony"}, + {"95", "Konami"}, + {"97", "Tradewest"}, + {"100", "T*HQ Software"}, + {"101", "Tecmagik"}, + {"112", "Designer Software"}, + {"113", "Psygnosis"}, + {"119", "Accolade"}, + {"120", "Code Masters"}, + {"125", "Interplay"}, + {"130", "Activision"}, + {"132", "Shiny & Playmates"}, + {"144", "Atlus"}, + {"151", "Infogrames"}, + {"161", "Fox Interactive"}, + {"177", "Ubisoft"}, + {"239", "Disney Interactive"}, + {"---", "Unknown"} +}; + +/*************************************************************************** + * Genesis Peripheral Information + * + * Based on the document provided at + * http://www.zophar.net/tech/files/Genesis_ROM_Format.txt + ***************************************************************************/ +static const PERIPHERALINFO peripheralinfo[MAXPERIPHERALS] = +{ + {"J", "3B Joypad"}, + {"6", "6B Joypad"}, + {"K", "Keyboard"}, + {"P", "Printer"}, + {"B", "Control Ball"}, + {"F", "Floppy Drive"}, + {"L", "Activator"}, + {"4", "Team Player"}, + {"0", "MS Joypad"}, + {"R", "RS232C Serial"}, + {"T", "Tablet"}, + {"V", "Paddle"}, + {"C", "CD-ROM"}, + {"M", "Mega Mouse"}, + {"G", "Menacer"}, +}; + +/*************************************************************************** + * + * Compute ROM real checksum. + ***************************************************************************/ +static uint16 getchecksum(uint8 *rom, int length) +{ + int i; + uint16 checksum = 0; + + for (i = 0; i < length; i += 2) + { + checksum += ((rom[i] << 8) + rom[i + 1]); + } + + return checksum; +} + + +/*************************************************************************** + * deinterleave_block + * + * Convert interleaved (.smd) ROM files. + ***************************************************************************/ +static void deinterleave_block(uint8 * src) +{ + int i; + uint8 block[0x4000]; + memcpy (block, src, 0x4000); + for (i = 0; i < 0x2000; i += 1) + { + src[i * 2 + 0] = block[0x2000 + (i)]; + src[i * 2 + 1] = block[0x0000 + (i)]; + } +} + +/*************************************************************************** + * + * Pass a pointer to the ROM base address. + ***************************************************************************/ +void getrominfo(char *romheader) +{ + /* Clear ROM info structure */ + memset (&rominfo, 0, sizeof (ROMINFO)); + + /* Genesis ROM header support */ + if (system_hw & SYSTEM_MD) + { + int i,j; + + memcpy (&rominfo.consoletype, romheader + ROMCONSOLE, 16); + memcpy (&rominfo.copyright, romheader + ROMCOPYRIGHT, 16); + + /* Domestic (japanese) name */ + rominfo.domestic[0] = romheader[ROMDOMESTIC]; + j = 1; + for (i=1; i<48; i++) + { + if ((rominfo.domestic[j-1] != 32) || (romheader[ROMDOMESTIC + i] != 32)) + { + rominfo.domestic[j] = romheader[ROMDOMESTIC + i]; + j++; + } + } + rominfo.domestic[j] = 0; + + /* International name */ + rominfo.international[0] = romheader[ROMWORLD]; + j=1; + for (i=1; i<48; i++) + { + if ((rominfo.international[j-1] != 32) || (romheader[ROMWORLD + i] != 32)) + { + rominfo.international[j] = romheader[ROMWORLD + i]; + j++; + } + } + rominfo.international[j] = 0; + + /* ROM informations */ + memcpy (&rominfo.ROMType, romheader + ROMTYPE, 2); + memcpy (&rominfo.product, romheader + ROMPRODUCT, 12); + memcpy (&rominfo.checksum, romheader + ROMCHECKSUM, 2); + memcpy (&rominfo.romstart, romheader + ROMROMSTART, 4); + memcpy (&rominfo.romend, romheader + ROMROMEND, 4); + memcpy (&rominfo.country, romheader + ROMCOUNTRY, 16); + + /* Checksums */ +#ifdef LSB_FIRST + rominfo.checksum = (rominfo.checksum >> 8) | ((rominfo.checksum & 0xff) << 8); +#endif + rominfo.realchecksum = getchecksum(((uint8 *) cart.rom) + 0x200, cart.romsize - 0x200); + + /* Supported peripherals */ + rominfo.peripherals = 0; + for (i = 0; i < 14; i++) + for (j=0; j < 14; j++) + if (romheader[ROMIOSUPPORT+i] == peripheralinfo[j].pID[0]) + rominfo.peripherals |= (1 << j); + } + else + { + uint16 offset = 0; + + /* detect Master System ROM header */ + if (!memcmp (&romheader[0x1ff0], "TMR SEGA", 8)) + { + offset = 0x1ff0; + } + else if (!memcmp (&romheader[0x3ff0], "TMR SEGA", 8)) + { + offset = 0x3ff0; + } + else if (!memcmp (&romheader[0x7ff0], "TMR SEGA", 8)) + { + offset = 0x7ff0; + } + + /* if found, get infos from header */ + if ((offset > 0) && (offset < cart.romsize)) + { + /* checksum */ + rominfo.checksum = romheader[offset + 0x0a] | (romheader[offset + 0x0b] << 8); + + /* product code & version */ + sprintf(&rominfo.product[0], "%02d", romheader[offset + 0x0e] >> 4); + sprintf(&rominfo.product[2], "%02x", romheader[offset + 0x0d]); + sprintf(&rominfo.product[4], "%02x", romheader[offset + 0x0c]); + sprintf(&rominfo.product[6], "-%d", romheader[offset + 0x0e] & 0x0F); + + /* region code */ + switch (romheader[offset + 0x0f] >> 4) + { + case 3: + strcpy(rominfo.country,"SMS Japan"); + break; + case 4: + strcpy(rominfo.country,"SMS Export"); + break; + case 5: + strcpy(rominfo.country,"GG Japan"); + break; + case 6: + strcpy(rominfo.country,"GG Export"); + break; + case 7: + strcpy(rominfo.country,"GG International"); + break; + default: + sprintf(rominfo.country,"Unknown (%d)", romheader[offset + 0x0f] >> 4); + break; + } + + /* ROM size */ + rominfo.romstart = 0; + switch (romheader[offset + 0x0f] & 0x0F) + { + case 0x00: + rominfo.romend = 0x3FFFF; + break; + case 0x01: + rominfo.romend = 0x7FFFF; + break; + case 0x02: + rominfo.romend = 0xFFFFF; + break; + case 0x0a: + rominfo.romend = 0x1FFF; + break; + case 0x0b: + rominfo.romend = 0x3FFF; + break; + case 0x0c: + rominfo.romend = 0x7FFF; + break; + case 0x0d: + rominfo.romend = 0xBFFF; + break; + case 0x0e: + rominfo.romend = 0xFFFF; + break; + case 0x0f: + rominfo.romend = 0x1FFFF; + break; + } + } + } +} + +/*************************************************************************** + * load_bios + * + * Load current system BIOS file. + * + * Return loaded size (-1 if already loaded) + * + ***************************************************************************/ +int load_bios(int system) +{ + int size = 0; + + switch (system) + { + case SYSTEM_MCD: + { + /* check if CD BOOTROM is already loaded */ + if (!(system_bios & 0x10) || ((system_bios & 0x0c) != (region_code >> 4))) + { + /* load CD BOOTROM (fixed 128KB size) */ + switch (region_code) + { + case REGION_USA: + size = load_archive(CD_BIOS_US, scd.bootrom, sizeof(scd.bootrom), 0); + break; + case REGION_EUROPE: + size = load_archive(CD_BIOS_EU, scd.bootrom, sizeof(scd.bootrom), 0); + break; + default: + size = load_archive(CD_BIOS_JP, scd.bootrom, sizeof(scd.bootrom), 0); + break; + } + + /* CD BOOTROM loaded ? */ + if (size > 0) + { + /* auto-detect CD hardware model */ + if (!memcmp (&scd.bootrom[0x120], "WONDER-MEGA BOOT", 16)) + { + /* Wondermega CD hardware */ + cdd.type = CD_TYPE_WONDERMEGA; + } + else if (!memcmp (&scd.bootrom[0x120], "WONDERMEGA2 BOOT", 16)) + { + /* Wondermega M2 / X'Eye CD hardware */ + cdd.type = CD_TYPE_WONDERMEGA_M2; + } + else + { + /* default CD hardware */ + cdd.type = CD_TYPE_DEFAULT; + } + +#ifdef LSB_FIRST + /* Byteswap ROM to optimize 16-bit access */ + int i; + for (i = 0; i < size; i += 2) + { + uint8 temp = scd.bootrom[i]; + scd.bootrom[i] = scd.bootrom[i+1]; + scd.bootrom[i+1] = temp; + } +#endif + /* mark CD BIOS as being loaded */ + system_bios = system_bios | 0x10; + + /* loaded BIOS region */ + system_bios = (system_bios & 0xf0) | (region_code >> 4); + } + + return size; + } + + return -1; + } + + case SYSTEM_GG: + case SYSTEM_GGMS: + { + /* check if Game Gear BOOTROM is already loaded */ + if (!(system_bios & SYSTEM_GG)) + { + /* mark both Master System & Game Gear BOOTROM as unloaded */ + system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); + + /* BOOTROM is stored above cartridge ROM area (max. 4MB) */ + if (cart.romsize <= 0x400000) + { + /* load Game Gear BOOTROM file */ + size = load_archive(GG_BIOS, cart.rom + 0x400000, 0x400000, 0); + + if (size > 0) + { + /* mark Game Gear BOOTROM as loaded */ + system_bios |= SYSTEM_GG; + } + } + + return size; + } + + return -1; + } + + case SYSTEM_SMS: + case SYSTEM_SMS2: + { + /* check if Master System BOOTROM is already loaded */ + if (!(system_bios & SYSTEM_SMS) || ((system_bios & 0x0c) != (region_code >> 4))) + { + /* mark both Master System & Game Gear BOOTROM as unloaded */ + system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); + + /* BOOTROM is stored above cartridge ROM area (max. 4MB) */ + if (cart.romsize <= 0x400000) + { + /* load Master System BOOTROM file */ + switch (region_code) + { + case REGION_USA: + size = load_archive(MS_BIOS_US, cart.rom + 0x400000, 0x400000, 0); + break; + case REGION_EUROPE: + size = load_archive(MS_BIOS_EU, cart.rom + 0x400000, 0x400000, 0); + break; + default: + size = load_archive(MS_BIOS_JP, cart.rom + 0x400000, 0x400000, 0); + break; + } + + if (size > 0) + { + /* mark Master System BOOTROM as loaded */ + system_bios |= SYSTEM_SMS; + + /* loaded BOOTROM region */ + system_bios = (system_bios & 0xf0) | (region_code >> 4); + } + } + + return size; + } + + return -1; + } + + default: + { + /* mark all BOOTROM as unloaded */ + system_bios &= ~(0x10 | SYSTEM_SMS | SYSTEM_GG); + return 0; + } + } +} + +/*************************************************************************** + * load_rom + * + * Load a new ROM file. + * + * Return 0 on error, 1 on success + * + ***************************************************************************/ +int load_rom(char *filename) +{ + int i, size; + +#ifdef USE_DYNAMIC_ALLOC + if (!ext) + { + /* allocate & initialize memory for Cartridge / CD hardware if required */ + ext = (external_t *)calloc(1, sizeof(external_t)); + if (!ext) return (0); + } +#endif + + /* clear any existing patches */ + ggenie_shutdown(); + areplay_shutdown(); + + /* check previous loaded ROM size */ + if (cart.romsize > 0x800000) + { + /* assume no CD is currently loaded */ + cdd.loaded = 0; + } + + /* auto-detect CD image file */ + size = cdd_load(filename, (char *)(cart.rom)); + if (size < 0) + { + /* error opening file */ + return (0); + } + + /* CD image file ? */ + if (size) + { + /* enable CD hardware */ + system_hw = SYSTEM_MCD; + + /* boot from CD hardware */ + scd.cartridge.boot = 0x00; + } + else + { + /* load file into ROM buffer */ + char extension[4]; + size = load_archive(filename, cart.rom, cdd.loaded ? 0x800000 : MAXROMSIZE, extension); + + /* mark BOOTROM as unloaded if they have been overwritten by cartridge ROM */ + if (size > 0x800000) + { + /* CD BIOS ROM are loaded at the start of CD area */ + system_bios &= ~0x10; + } + else if (size > 0x400000) + { + /* Master System or Game Gear BIOS ROM are loaded within $400000-$4FFFFF area */ + system_bios &= ~(SYSTEM_SMS | SYSTEM_GG); + } + else if (size <= 0) + { + /* mark all BOOTROM as unloaded since they could have been overwritten */ + system_bios &= ~(0x10 | SYSTEM_SMS | SYSTEM_GG); + + /* error loading file */ + return 0; + } + + /* convert lower case file extension to upper case */ + *(uint32 *)(extension) &= 0xdfdfdfdf; + + /* auto-detect system hardware from ROM file extension */ + if (!memcmp("SMS", &extension[0], 3)) + { + /* Master System II hardware */ + system_hw = SYSTEM_SMS2; + } + else if (!memcmp("GG", &extension[1], 2)) + { + /* Game Gear hardware (GG mode) */ + system_hw = SYSTEM_GG; + } + else if (!memcmp("SG", &extension[1], 2)) + { + /* SG-1000 hardware */ + system_hw = SYSTEM_SG; + } + else + { + /* default is Mega Drive / Genesis hardware (16-bit mode) */ + system_hw = SYSTEM_MD; + + /* decode .MDX format */ + if (!memcmp("MDX", &extension[0], 3)) + { + for (i = 4; i < size - 1; i++) + { + cart.rom[i-4] = cart.rom[i] ^ 0x40; + } + size = size - 5; + } + + /* auto-detect byte-swapped dumps */ + if (!memcmp((char *)(cart.rom + 0x100),"ESAGM GE ARDVI E", 16) || + !memcmp((char *)(cart.rom + 0x100),"ESAGG NESESI", 12) || + !memcmp((char *)(cart.rom + 0x80000 + 0x100),"ESAGM GE ARDVI E", 16) || + !memcmp((char *)(cart.rom + 0x80000 + 0x100),"ESAGG NESESI", 12)) + { + for(i = 0; i < size; i += 2) + { + uint8 temp = cart.rom[i]; + cart.rom[i] = cart.rom[i+1]; + cart.rom[i+1] = temp; + } + } + } + + /* auto-detect 512 byte extra header */ + if (memcmp((char *)(cart.rom + 0x100), "SEGA", 4) && ((size / 512) & 1) && !(size % 512)) + { + /* remove header */ + size -= 512; + memmove (cart.rom, cart.rom + 512, size); + + /* assume interleaved Mega Drive / Genesis ROM format (.smd) */ + if (system_hw == SYSTEM_MD) + { + for (i = 0; i < (size / 0x4000); i++) + { + deinterleave_block (cart.rom + (i * 0x4000)); + } + } + } + } + + /* initialize ROM size */ + cart.romsize = size; + + /* get infos from ROM header */ + getrominfo((char *)(cart.rom)); + + /* set console region */ + get_region((char *)(cart.rom)); + +#ifdef LSB_FIRST + /* 16-bit ROM specific */ + if (system_hw == SYSTEM_MD) + { + /* Byteswap ROM to optimize 16-bit access */ + for (i = 0; i < cart.romsize; i += 2) + { + uint8 temp = cart.rom[i]; + cart.rom[i] = cart.rom[i+1]; + cart.rom[i+1] = temp; + } + } +#endif + + /* PICO ROM */ + if (strstr(rominfo.consoletype, "SEGA PICO") != NULL) + { + /* PICO hardware */ + system_hw = SYSTEM_PICO; + } + + /* Save auto-detected system hardware */ + romtype = system_hw; + + /* CD image file */ + if (system_hw == SYSTEM_MCD) + { + /* try to load CD BOOTROM for selected region */ + if (!load_bios(SYSTEM_MCD)) + { + /* unmount CD image */ + cdd_unload(); + + /* error booting from CD */ + return (0); + } + } + + /* CD BOOTROM */ + else if (strstr(rominfo.ROMType, "BR") != NULL) + { + /* enable CD hardware */ + system_hw = SYSTEM_MCD; + + /* boot from CD hardware */ + scd.cartridge.boot = 0x00; + + /* copy ROM to BOOTROM area */ + memcpy(scd.bootrom, cart.rom, sizeof(scd.bootrom)); + + /* mark CD BIOS as being loaded */ + system_bios = system_bios | 0x10; + + /* loaded CD BIOS region */ + system_bios = (system_bios & 0xf0) | (region_code >> 4); + } + + /* ROM cartridge (max. 8MB) with CD loaded */ + else if ((cart.romsize <= 0x800000) && cdd.loaded) + { + /* try to load CD BOOTROM */ + if (load_bios(SYSTEM_MCD)) + { + /* enable CD hardware */ + system_hw = SYSTEM_MCD; + + /* boot from cartridge */ + scd.cartridge.boot = 0x40; + } + else + { + /* unmount CD image */ + cdd_unload(); + } + } + + /* ROM cartridge with CD support */ + else if ((strstr(rominfo.domestic,"FLUX") != NULL) || + (strstr(rominfo.domestic,"WONDER LIBRARY") != NULL) || + (strstr(rominfo.product,"T-5740") != NULL)) + { + /* check if console hardware is set to AUTO */ + if (!config.system) + { + /* try to load CD BOOTROM */ + if (load_bios(SYSTEM_MCD)) + { + char fname[256]; + int len = strlen(filename); + + /* automatically try to load associated .iso file */ + while ((len && (filename[len] != '.')) || (len > 251)) len--; + strncpy(fname, filename, len); + strcpy(&fname[len], ".iso"); + cdd_load(fname, (char *)cdc.ram); + + /* enable CD hardware */ + system_hw = SYSTEM_MCD; + + /* boot from cartridge */ + scd.cartridge.boot = 0x40; + } + } + } + + /* Force system hardware if requested */ + if (config.system == SYSTEM_MD) + { + if (!(system_hw & SYSTEM_MD)) + { + /* Mega Drive in MS compatibility mode */ + system_hw = SYSTEM_PBC; + } + } + else if (config.system == SYSTEM_GG) + { + if (system_hw != SYSTEM_GG) + { + /* Game Gear in MS compatibility mode */ + system_hw = SYSTEM_GGMS; + } + } + else if (config.system) + { + system_hw = config.system; + } + + /* restore previous input settings */ + if (old_system[0] != -1) + { + input.system[0] = old_system[0]; + } + if (old_system[1] != -1) + { + input.system[1] = old_system[1]; + } + + /* default gun settings */ + input.x_offset = (input.system[1] == SYSTEM_MENACER) ? 64 : 0; + input.y_offset = 0; + + /* autodetect gun support */ + if (strstr(rominfo.international,"MENACER") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 82; + input.y_offset = 0; + } + else if (strstr(rominfo.international,"T2 ; THE ARCADE GAME") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 133; + input.y_offset = -8; + } + else if (strstr(rominfo.international,"BODY COUNT") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 68; + input.y_offset = -24; + } + else if (strstr(rominfo.international,"CORPSE KILLER") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 64; + input.y_offset = -8; + } + else if (strstr(rominfo.international,"CRIME PATROL") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 61; + input.y_offset = 0; + } + else if (strstr(rominfo.international,"MAD DOG II THE LOST GOLD") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 70; + input.y_offset = 18; + } + else if (strstr(rominfo.international,"MAD DOG MCCREE") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 49; + input.y_offset = 0; + } + else if (strstr(rominfo.international,"WHO SHOT JOHNNY ROCK?") != NULL) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force MENACER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_MENACER; + input.x_offset = 60; + input.y_offset = 30; + } + else if ((strstr(rominfo.international,"LETHAL ENFORCERS") != NULL) || + (strstr(rominfo.international,"SNATCHER") != NULL)) + { + /* save current setting */ + if (old_system[0] == -1) + { + old_system[0] = input.system[0]; + } + if (old_system[1] == -1) + { + old_system[1] = input.system[1]; + } + + /* force JUSTIFIER configuration */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_JUSTIFIER; + input.x_offset = (strstr(rominfo.international,"GUN FIGHTERS") != NULL) ? 24 : 0; + input.y_offset = 0; + } + + return(1); +} + +/**************************************************************************** + * get_region + * + * Set console region from ROM header passed as parameter or + * from previous auto-detection (if NULL) + * + ****************************************************************************/ +void get_region(char *romheader) +{ + /* region auto-detection ? */ + if (romheader) + { + /* Mega CD image */ + if (system_hw == SYSTEM_MCD) + { + /* security code */ + switch ((unsigned char)romheader[0x20b]) + { + case 0x64: + region_code = REGION_EUROPE; + break; + + case 0xa1: + region_code = REGION_JAPAN_NTSC; + break; + + default: + region_code = REGION_USA; + break; + } + } + + /* 16-bit cartridge */ + else if (system_hw & SYSTEM_MD) + { + /* country codes used to differentiate region */ + /* 0001 = japan ntsc (1) */ + /* 0010 = japan pal (2) -> does not exist ? */ + /* 0100 = usa (4) */ + /* 1000 = europe (8) */ + int country = 0; + + /* from Gens */ + if (!memcmp(rominfo.country, "eur", 3)) country |= 8; + else if (!memcmp(rominfo.country, "EUR", 3)) country |= 8; + else if (!memcmp(rominfo.country, "Europe", 3)) country |= 8; + else if (!memcmp(rominfo.country, "jap", 3)) country |= 1; + else if (!memcmp(rominfo.country, "JAP", 3)) country |= 1; + else if (!memcmp(rominfo.country, "usa", 3)) country |= 4; + else if (!memcmp(rominfo.country, "USA", 3)) country |= 4; + else + { + int i; + char c; + + /* look for each characters */ + for(i = 0; i < 4; i++) + { + c = toupper((int)rominfo.country[i]); + + if (c == 'U') country |= 4; + else if (c == 'J') country |= 1; + else if (c == 'E') country |= 8; + else if (c == 'K') country |= 1; + else if (c < 16) country |= c; + else if ((c >= '0') && (c <= '9')) country |= c - '0'; + else if ((c >= 'A') && (c <= 'F')) country |= c - 'A' + 10; + } + } + + /* set default console region (USA > JAPAN > EUROPE) */ + if (country & 4) region_code = REGION_USA; + else if (country & 1) region_code = REGION_JAPAN_NTSC; + else if (country & 8) region_code = REGION_EUROPE; + else if (country & 2) region_code = REGION_JAPAN_PAL; + else region_code = REGION_USA; + + /* some games need specific region settings but have wrong header*/ + if (((strstr(rominfo.product,"T-45033") != NULL) && (rominfo.checksum == 0x0F81)) || /* Alisia Dragon (Europe) */ + (strstr(rominfo.product,"T-69046-50") != NULL) || /* Back to the Future III (Europe) */ + (strstr(rominfo.product,"T-120106-00") != NULL) || /* Brian Lara Cricket (Europe) */ + (strstr(rominfo.product,"T-97126 -50") != NULL) || /* Williams Arcade's Greatest Hits (Europe) */ + (strstr(rominfo.product,"T-70096 -00") != NULL) || /* Muhammad Ali Heavyweight Boxing (Europe) */ + ((rominfo.checksum == 0x0000) && (rominfo.realchecksum == 0x1f7f))) /* Radica - Sensible Soccer Plus edition */ + { + /* need PAL settings */ + region_code = REGION_EUROPE; + } + else if ((rominfo.realchecksum == 0x532e) && (strstr(rominfo.product,"1011-00") != NULL)) + { + /* On Dal Jang Goon (Korea) needs JAPAN region code */ + region_code = REGION_JAPAN_NTSC; + } + } + + /* 8-bit cartridge */ + else + { + region_code = sms_cart_region_detect(); + } + + /* save auto-detected region */ + rom_region = region_code; + } + else + { + /* restore auto-detected region */ + region_code = rom_region; + } + + /* force console region if requested */ + if (config.region_detect == 1) region_code = REGION_USA; + else if (config.region_detect == 2) region_code = REGION_EUROPE; + else if (config.region_detect == 3) region_code = REGION_JAPAN_NTSC; + else if (config.region_detect == 4) region_code = REGION_JAPAN_PAL; + + /* autodetect PAL/NTSC timings */ + vdp_pal = (region_code >> 6) & 0x01; + + /* autodetect PAL/NTSC master clock */ + system_clock = vdp_pal ? MCLOCK_PAL : MCLOCK_NTSC; + + /* force PAL/NTSC timings if requested */ + if (config.vdp_mode == 1) vdp_pal = 0; + else if (config.vdp_mode == 2) vdp_pal = 1; + + /* force PAL/NTSC master clock if requested */ + if (config.master_clock == 1) system_clock = MCLOCK_NTSC; + else if (config.master_clock == 2) system_clock = MCLOCK_PAL; +} + +/**************************************************************************** + * get_company (Softdev - 2006) + * + * Try to determine which company made this rom + * + * Ok, for some reason there's no standard for this. + * It seems that there can be pretty much anything you like following the + * copyright (C) symbol! + ****************************************************************************/ +char *get_company(void) +{ + char *s; + int i; + char company[10]; + + for (i = 3; i < 8; i++) + { + company[i - 3] = rominfo.copyright[i]; + } + company[5] = 0; + + /** OK, first look for a hyphen + * Capcom use T-12 for example + */ + s = strstr (company, "-"); + if (s != NULL) + { + s++; + strcpy (company, s); + } + + /** Strip any trailing spaces **/ + for (i = strlen (company) - 1; i >= 0; i--) + if (company[i] == 32) + company[i] = 0; + + if (strlen (company) == 0) + return (char *)companyinfo[MAXCOMPANY - 1].company; + + for (i = 0; i < MAXCOMPANY - 1; i++) + { + if (!(strncmp (company, companyinfo[i].companyid, strlen (company)))) + return (char *)companyinfo[i].company; + } + + return (char *)companyinfo[MAXCOMPANY - 1].company; +} + +/**************************************************************************** + * get_peripheral (Softdev - 2006) + * + * Return peripheral name based on header code + * + ****************************************************************************/ +char *get_peripheral(int index) +{ + if (index < MAXPERIPHERALS) + return (char *)peripheralinfo[index].pName; + return (char *)companyinfo[MAXCOMPANY - 1].company; +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/loadrom.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/loadrom.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/loadrom.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/loadrom.h index b3efb4e096..055a2f508b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/loadrom.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/loadrom.h @@ -1,77 +1,77 @@ -/*************************************************************************************** - * Genesis Plus - * ROM Loading Support - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _LOADROM_H_ -#define _LOADROM_H_ - -#ifndef MAXROMSIZE -#define MAXROMSIZE 10485760 -#endif - -typedef struct -{ - char consoletype[18]; /* Genesis or Mega Drive */ - char copyright[18]; /* Copyright message */ - char domestic[50]; /* Domestic name of ROM */ - char international[50]; /* International name of ROM */ - char ROMType[4]; /* Boot ROM (BR), Educational (AL) or Game (GM) program */ - char product[14]; /* Product serial number */ - unsigned short checksum; /* ROM Checksum (header) */ - unsigned short realchecksum; /* ROM Checksum (calculated) */ - unsigned int romstart; /* ROM start address */ - unsigned int romend; /* ROM end address */ - char country[18]; /* Country flag */ - uint16 peripherals; /* Supported peripherals */ -} ROMINFO; - - -/* Global variables */ -extern ROMINFO rominfo; -extern uint8 romtype; - -/* Function prototypes */ -extern int load_bios(int system); -extern int load_rom(char *filename); -extern void get_region(char *romheader); -extern char *get_company(void); -extern char *get_peripheral(int index); -extern void getrominfo(char *romheader); - -#endif /* _LOADROM_H_ */ - +/*************************************************************************************** + * Genesis Plus + * ROM Loading Support + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _LOADROM_H_ +#define _LOADROM_H_ + +#ifndef MAXROMSIZE +#define MAXROMSIZE 10485760 +#endif + +typedef struct +{ + char consoletype[18]; /* Genesis or Mega Drive */ + char copyright[18]; /* Copyright message */ + char domestic[50]; /* Domestic name of ROM */ + char international[50]; /* International name of ROM */ + char ROMType[4]; /* Boot ROM (BR), Educational (AL) or Game (GM) program */ + char product[14]; /* Product serial number */ + unsigned short checksum; /* ROM Checksum (header) */ + unsigned short realchecksum; /* ROM Checksum (calculated) */ + unsigned int romstart; /* ROM start address */ + unsigned int romend; /* ROM end address */ + char country[18]; /* Country flag */ + uint16 peripherals; /* Supported peripherals */ +} ROMINFO; + + +/* Global variables */ +extern ROMINFO rominfo; +extern uint8 romtype; + +/* Function prototypes */ +extern int load_bios(int system); +extern int load_rom(char *filename); +extern void get_region(char *romheader); +extern char *get_company(void); +extern char *get_peripheral(int index); +extern void getrominfo(char *romheader); + +#endif /* _LOADROM_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68k.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68k.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68k.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68k.h index 86b7908a02..579bff3f09 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68k.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68k.h @@ -1,402 +1,402 @@ -#ifndef M68K__HEADER -#define M68K__HEADER - -/* ======================================================================== */ -/* ========================= LICENSING & COPYRIGHT ======================== */ -/* ======================================================================== */ -/* - * MUSASHI - * Version 3.32 - * - * A portable Motorola M680x0 processor emulation engine. - * Copyright Karl Stenerud. All rights reserved. - * - * This code may be freely used for non-commercial purposes as long as this - * copyright notice remains unaltered in the source code and any binary files - * containing this code in compiled form. - * - * All other licensing terms must be negotiated with the author - * (Karl Stenerud). - * - * The latest version of this code can be obtained at: - * http://kstenerud.cjb.net - */ - - /* Modified by Eke-Eke for Genesis Plus GX: - - - removed unused stuff to reduce memory usage / optimize execution (multiple CPU types support, NMI support, ...) - - moved stuff to compile statically in a single object file - - implemented support for global cycle count (shared by 68k & Z80 CPU) - - added support for interrupt latency (Sesame's Street Counting Cafe, Fatal Rewind) - - added proper cycle use on reset - - added cycle accurate timings for MUL/DIV instructions (thanks to Jorge Cwik !) - - fixed undocumented flags for DIV instructions (Blood Shot) - - fixed undocumented behaviors for ABCD/SBCD/NBCD instructions (thanks to flamewing for his test ROM) - - improved auto-vectored interrupts acknowledge cycle timing accuracy - - added MAIN-CPU & SUB-CPU support for Mega CD emulation - - */ - -/* ======================================================================== */ -/* ================================ INCLUDES ============================== */ -/* ======================================================================== */ - -#include -#include "macros.h" -#ifdef HOOK_CPU -#include "cpuhook.h" -#endif - -/* ======================================================================== */ -/* ==================== ARCHITECTURE-DEPENDANT DEFINES ==================== */ -/* ======================================================================== */ - -/* Check for > 32bit sizes */ -#if UINT_MAX > 0xffffffff - #define M68K_INT_GT_32_BIT 1 -#else - #define M68K_INT_GT_32_BIT 0 -#endif - -/* Data types used in this emulation core */ -#undef sint8 -#undef sint16 -#undef sint32 -#undef sint64 -#undef uint8 -#undef uint16 -#undef uint32 -#undef uint64 -#undef sint -#undef uint - -#define sint8 signed char /* ASG: changed from char to signed char */ -#define sint16 signed short -#define sint32 signed int /* AWJ: changed from long to int */ -#define uint8 unsigned char -#define uint16 unsigned short -#define uint32 unsigned int /* AWJ: changed from long to int */ - -/* signed and unsigned int must be at least 32 bits wide */ -#define sint signed int -#define uint unsigned int - - -#if M68K_USE_64_BIT -#define sint64 signed long long -#define uint64 unsigned long long -#else -#define sint64 sint32 -#define uint64 uint32 -#endif /* M68K_USE_64_BIT */ - - - -/* Allow for architectures that don't have 8-bit sizes */ -/*#if UCHAR_MAX == 0xff*/ - #define MAKE_INT_8(A) (sint8)(A) -/*#else - #undef sint8 - #define sint8 signed int - #undef uint8 - #define uint8 unsigned int - INLINE sint MAKE_INT_8(uint value) - { - return (value & 0x80) ? value | ~0xff : value & 0xff; - }*/ -/*#endif *//* UCHAR_MAX == 0xff */ - - -/* Allow for architectures that don't have 16-bit sizes */ -/*#if USHRT_MAX == 0xffff*/ - #define MAKE_INT_16(A) (sint16)(A) -/*#else - #undef sint16 - #define sint16 signed int - #undef uint16 - #define uint16 unsigned int - INLINE sint MAKE_INT_16(uint value) - { - return (value & 0x8000) ? value | ~0xffff : value & 0xffff; - }*/ -/*#endif *//* USHRT_MAX == 0xffff */ - - -/* Allow for architectures that don't have 32-bit sizes */ -/*#if UINT_MAX == 0xffffffff*/ - #define MAKE_INT_32(A) (sint32)(A) -/*#else - #undef sint32 - #define sint32 signed int - #undef uint32 - #define uint32 unsigned int - INLINE sint MAKE_INT_32(uint value) - { - return (value & 0x80000000) ? value | ~0xffffffff : value & 0xffffffff; - }*/ -/*#endif *//* UINT_MAX == 0xffffffff */ - - - -/* ======================================================================== */ -/* ============================ GENERAL DEFINES =========================== */ - -/* ======================================================================== */ - -/* There are 7 levels of interrupt to the 68K. - * A transition from < 7 to 7 will cause a non-maskable interrupt (NMI). - */ -#define M68K_IRQ_NONE 0 -#define M68K_IRQ_1 1 -#define M68K_IRQ_2 2 -#define M68K_IRQ_3 3 -#define M68K_IRQ_4 4 -#define M68K_IRQ_5 5 -#define M68K_IRQ_6 6 -#define M68K_IRQ_7 7 - - -/* Special interrupt acknowledge values. - * Use these as special returns from the interrupt acknowledge callback - * (specified later in this header). - */ - -/* Causes an interrupt autovector (0x18 + interrupt level) to be taken. - * This happens in a real 68K if VPA or AVEC is asserted during an interrupt - * acknowledge cycle instead of DTACK. - */ -#define M68K_INT_ACK_AUTOVECTOR 0xffffffff - -/* Causes the spurious interrupt vector (0x18) to be taken - * This happens in a real 68K if BERR is asserted during the interrupt - * acknowledge cycle (i.e. no devices responded to the acknowledge). - */ -#define M68K_INT_ACK_SPURIOUS 0xfffffffe - - -/* Registers used by m68k_get_reg() and m68k_set_reg() */ -typedef enum -{ - /* Real registers */ - M68K_REG_D0, /* Data registers */ - M68K_REG_D1, - M68K_REG_D2, - M68K_REG_D3, - M68K_REG_D4, - M68K_REG_D5, - M68K_REG_D6, - M68K_REG_D7, - M68K_REG_A0, /* Address registers */ - M68K_REG_A1, - M68K_REG_A2, - M68K_REG_A3, - M68K_REG_A4, - M68K_REG_A5, - M68K_REG_A6, - M68K_REG_A7, - M68K_REG_PC, /* Program Counter */ - M68K_REG_SR, /* Status Register */ - M68K_REG_SP, /* The current Stack Pointer (located in A7) */ - M68K_REG_USP, /* User Stack Pointer */ - M68K_REG_ISP, /* Interrupt Stack Pointer */ - -#if M68K_EMULATE_PREFETCH - /* Assumed registers */ - /* These are cheat registers which emulate the 1-longword prefetch - * present in the 68000 and 68010. - */ - M68K_REG_PREF_ADDR, /* Last prefetch address */ - M68K_REG_PREF_DATA, /* Last prefetch data */ -#endif - - /* Convenience registers */ - M68K_REG_IR /* Instruction register */ -} m68k_register_t; - - -/* 68k memory map structure */ -typedef struct -{ - unsigned char *base; /* memory-based access (ROM, RAM) */ - unsigned int (*read8)(unsigned int address); /* I/O byte read access */ - unsigned int (*read16)(unsigned int address); /* I/O word read access */ - void (*write8)(unsigned int address, unsigned int data); /* I/O byte write access */ - void (*write16)(unsigned int address, unsigned int data); /* I/O word write access */ -} cpu_memory_map; - -/* 68k idle loop detection */ -typedef struct -{ - uint pc; - uint cycle; - uint detected; -} cpu_idle_t; - -typedef struct -{ - cpu_memory_map memory_map[256]; /* memory mapping */ - - cpu_idle_t poll; /* polling detection */ - - uint cycles; /* current master cycle count */ - uint cycle_end; /* aimed master cycle count for current execution frame */ - - uint dar[16]; /* Data and Address Registers */ - uint pc; /* Program Counter */ - uint sp[5]; /* User and Interrupt Stack Pointers */ - uint ir; /* Instruction Register */ - uint t1_flag; /* Trace 1 */ - uint s_flag; /* Supervisor */ - uint x_flag; /* Extend */ - uint n_flag; /* Negative */ - uint not_z_flag; /* Zero, inverted for speedups */ - uint v_flag; /* Overflow */ - uint c_flag; /* Carry */ - uint int_mask; /* I0-I2 */ - uint int_level; /* State of interrupt pins IPL0-IPL2 -- ASG: changed from ints_pending */ - uint stopped; /* Stopped state */ - - uint pref_addr; /* Last prefetch address */ - uint pref_data; /* Data in the prefetch queue */ - - uint instr_mode; /* Stores whether we are in instruction mode or group 0/1 exception mode */ - uint run_mode; /* Stores whether we are processing a reset, bus error, address error, or something else */ - uint aerr_enabled; /* Enables/deisables address error checks at runtime */ - jmp_buf aerr_trap; /* Address error jump */ - uint aerr_address; /* Address error location */ - uint aerr_write_mode; /* Address error write mode */ - uint aerr_fc; /* Address error FC code */ - - uint tracing; /* Tracing enable flag */ - - uint address_space; /* Current FC code */ - -#ifdef M68K_OVERCLOCK_SHIFT - int cycle_ratio; -#endif - - /* Callbacks to host */ - int (*int_ack_callback)(int int_line); /* Interrupt Acknowledge */ - void (*reset_instr_callback)(void); /* Called when a RESET instruction is encountered */ - int (*tas_instr_callback)(void); /* Called when a TAS instruction is encountered, allows / disallows writeback */ - void (*set_fc_callback)(unsigned int new_fc); /* Called when the CPU function code changes */ -} m68ki_cpu_core; - -/* CPU cores */ -extern m68ki_cpu_core m68k; -extern m68ki_cpu_core s68k; - - -/* ======================================================================== */ -/* ============================== CALLBACKS =============================== */ -/* ======================================================================== */ - -/* These functions allow you to set callbacks to the host when specific events - * occur. Note that you must enable the corresponding value in m68kconf.h - * in order for these to do anything useful. - * Note: I have defined default callbacks which are used if you have enabled - * the corresponding #define in m68kconf.h but either haven't assigned a - * callback or have assigned a callback of NULL. - */ - -#if M68K_EMULATE_INT_ACK == OPT_ON -/* Set the callback for an interrupt acknowledge. - * You must enable M68K_EMULATE_INT_ACK in m68kconf.h. - * The CPU will call the callback with the interrupt level being acknowledged. - * The host program must return either a vector from 0x02-0xff, or one of the - * special interrupt acknowledge values specified earlier in this header. - * If this is not implemented, the CPU will always assume an autovectored - * interrupt, and will automatically clear the interrupt request when it - * services the interrupt. - * Default behavior: return M68K_INT_ACK_AUTOVECTOR. - */ -void m68k_set_int_ack_callback(int (*callback)(int int_level)); -#endif - -#if M68K_EMULATE_RESET == OPT_ON -/* Set the callback for the RESET instruction. - * You must enable M68K_EMULATE_RESET in m68kconf.h. - * The CPU calls this callback every time it encounters a RESET instruction. - * Default behavior: do nothing. - */ -void m68k_set_reset_instr_callback(void (*callback)(void)); -#endif - -#if M68K_TAS_HAS_CALLBACK == OPT_ON -/* Set the callback for the TAS instruction. - * You must enable M68K_TAS_HAS_CALLBACK in m68kconf.h. - * The CPU calls this callback every time it encounters a TAS instruction. - * Default behavior: return 1, allow writeback. - */ -void m68k_set_tas_instr_callback(int (*callback)(void)); -#endif - -#if M68K_EMULATE_FC == OPT_ON -/* Set the callback for CPU function code changes. - * You must enable M68K_EMULATE_FC in m68kconf.h. - * The CPU calls this callback with the function code before every memory - * access to set the CPU's function code according to what kind of memory - * access it is (supervisor/user, program/data and such). - * Default behavior: do nothing. - */ -void m68k_set_fc_callback(void (*callback)(unsigned int new_fc)); -#endif - - -/* ======================================================================== */ -/* ====================== FUNCTIONS TO ACCESS THE CPU ===================== */ -/* ======================================================================== */ - -/* Do whatever initialisations the core requires. Should be called - * at least once at init time. - */ -extern void m68k_init(void); -extern void s68k_init(void); - -/* Pulse the RESET pin on the CPU. - * You *MUST* reset the CPU at least once to initialize the emulation - */ -extern void m68k_pulse_reset(void); -extern void s68k_pulse_reset(void); - -/* Run until given cycle count is reached */ -extern void m68k_run(unsigned int cycles); -extern void s68k_run(unsigned int cycles); - -/* Get current instruction execution time */ -extern int m68k_cycles(void); -extern int s68k_cycles(void); - -/* Set the IPL0-IPL2 pins on the CPU (IRQ). - * A transition from < 7 to 7 will cause a non-maskable interrupt (NMI). - * Setting IRQ to 0 will clear an interrupt request. - */ -extern void m68k_set_irq(unsigned int int_level); -extern void m68k_set_irq_delay(unsigned int int_level); -extern void m68k_update_irq(unsigned int mask); -extern void s68k_update_irq(unsigned int mask); - -/* Halt the CPU as if you pulsed the HALT pin. */ -extern void m68k_pulse_halt(void); -extern void m68k_clear_halt(void); -extern void s68k_pulse_halt(void); -extern void s68k_clear_halt(void); - - -/* Peek at the internals of a CPU context. This can either be a context - * retrieved using m68k_get_context() or the currently running context. - * If context is NULL, the currently running CPU context will be used. - */ -extern unsigned int m68k_get_reg(m68k_register_t reg); -extern unsigned int s68k_get_reg(m68k_register_t reg); - -/* Poke values into the internals of the currently running CPU context */ -extern void m68k_set_reg(m68k_register_t reg, unsigned int value); -extern void s68k_set_reg(m68k_register_t reg, unsigned int value); - - -/* ======================================================================== */ -/* ============================== END OF FILE ============================= */ -/* ======================================================================== */ - -#endif /* M68K__HEADER */ +#ifndef M68K__HEADER +#define M68K__HEADER + +/* ======================================================================== */ +/* ========================= LICENSING & COPYRIGHT ======================== */ +/* ======================================================================== */ +/* + * MUSASHI + * Version 3.32 + * + * A portable Motorola M680x0 processor emulation engine. + * Copyright Karl Stenerud. All rights reserved. + * + * This code may be freely used for non-commercial purposes as long as this + * copyright notice remains unaltered in the source code and any binary files + * containing this code in compiled form. + * + * All other licensing terms must be negotiated with the author + * (Karl Stenerud). + * + * The latest version of this code can be obtained at: + * http://kstenerud.cjb.net + */ + + /* Modified by Eke-Eke for Genesis Plus GX: + + - removed unused stuff to reduce memory usage / optimize execution (multiple CPU types support, NMI support, ...) + - moved stuff to compile statically in a single object file + - implemented support for global cycle count (shared by 68k & Z80 CPU) + - added support for interrupt latency (Sesame's Street Counting Cafe, Fatal Rewind) + - added proper cycle use on reset + - added cycle accurate timings for MUL/DIV instructions (thanks to Jorge Cwik !) + - fixed undocumented flags for DIV instructions (Blood Shot) + - fixed undocumented behaviors for ABCD/SBCD/NBCD instructions (thanks to flamewing for his test ROM) + - improved auto-vectored interrupts acknowledge cycle timing accuracy + - added MAIN-CPU & SUB-CPU support for Mega CD emulation + + */ + +/* ======================================================================== */ +/* ================================ INCLUDES ============================== */ +/* ======================================================================== */ + +#include +#include "macros.h" +#ifdef HOOK_CPU +#include "cpuhook.h" +#endif + +/* ======================================================================== */ +/* ==================== ARCHITECTURE-DEPENDANT DEFINES ==================== */ +/* ======================================================================== */ + +/* Check for > 32bit sizes */ +#if UINT_MAX > 0xffffffff + #define M68K_INT_GT_32_BIT 1 +#else + #define M68K_INT_GT_32_BIT 0 +#endif + +/* Data types used in this emulation core */ +#undef sint8 +#undef sint16 +#undef sint32 +#undef sint64 +#undef uint8 +#undef uint16 +#undef uint32 +#undef uint64 +#undef sint +#undef uint + +#define sint8 signed char /* ASG: changed from char to signed char */ +#define sint16 signed short +#define sint32 signed int /* AWJ: changed from long to int */ +#define uint8 unsigned char +#define uint16 unsigned short +#define uint32 unsigned int /* AWJ: changed from long to int */ + +/* signed and unsigned int must be at least 32 bits wide */ +#define sint signed int +#define uint unsigned int + + +#if M68K_USE_64_BIT +#define sint64 signed long long +#define uint64 unsigned long long +#else +#define sint64 sint32 +#define uint64 uint32 +#endif /* M68K_USE_64_BIT */ + + + +/* Allow for architectures that don't have 8-bit sizes */ +/*#if UCHAR_MAX == 0xff*/ + #define MAKE_INT_8(A) (sint8)(A) +/*#else + #undef sint8 + #define sint8 signed int + #undef uint8 + #define uint8 unsigned int + INLINE sint MAKE_INT_8(uint value) + { + return (value & 0x80) ? value | ~0xff : value & 0xff; + }*/ +/*#endif *//* UCHAR_MAX == 0xff */ + + +/* Allow for architectures that don't have 16-bit sizes */ +/*#if USHRT_MAX == 0xffff*/ + #define MAKE_INT_16(A) (sint16)(A) +/*#else + #undef sint16 + #define sint16 signed int + #undef uint16 + #define uint16 unsigned int + INLINE sint MAKE_INT_16(uint value) + { + return (value & 0x8000) ? value | ~0xffff : value & 0xffff; + }*/ +/*#endif *//* USHRT_MAX == 0xffff */ + + +/* Allow for architectures that don't have 32-bit sizes */ +/*#if UINT_MAX == 0xffffffff*/ + #define MAKE_INT_32(A) (sint32)(A) +/*#else + #undef sint32 + #define sint32 signed int + #undef uint32 + #define uint32 unsigned int + INLINE sint MAKE_INT_32(uint value) + { + return (value & 0x80000000) ? value | ~0xffffffff : value & 0xffffffff; + }*/ +/*#endif *//* UINT_MAX == 0xffffffff */ + + + +/* ======================================================================== */ +/* ============================ GENERAL DEFINES =========================== */ + +/* ======================================================================== */ + +/* There are 7 levels of interrupt to the 68K. + * A transition from < 7 to 7 will cause a non-maskable interrupt (NMI). + */ +#define M68K_IRQ_NONE 0 +#define M68K_IRQ_1 1 +#define M68K_IRQ_2 2 +#define M68K_IRQ_3 3 +#define M68K_IRQ_4 4 +#define M68K_IRQ_5 5 +#define M68K_IRQ_6 6 +#define M68K_IRQ_7 7 + + +/* Special interrupt acknowledge values. + * Use these as special returns from the interrupt acknowledge callback + * (specified later in this header). + */ + +/* Causes an interrupt autovector (0x18 + interrupt level) to be taken. + * This happens in a real 68K if VPA or AVEC is asserted during an interrupt + * acknowledge cycle instead of DTACK. + */ +#define M68K_INT_ACK_AUTOVECTOR 0xffffffff + +/* Causes the spurious interrupt vector (0x18) to be taken + * This happens in a real 68K if BERR is asserted during the interrupt + * acknowledge cycle (i.e. no devices responded to the acknowledge). + */ +#define M68K_INT_ACK_SPURIOUS 0xfffffffe + + +/* Registers used by m68k_get_reg() and m68k_set_reg() */ +typedef enum +{ + /* Real registers */ + M68K_REG_D0, /* Data registers */ + M68K_REG_D1, + M68K_REG_D2, + M68K_REG_D3, + M68K_REG_D4, + M68K_REG_D5, + M68K_REG_D6, + M68K_REG_D7, + M68K_REG_A0, /* Address registers */ + M68K_REG_A1, + M68K_REG_A2, + M68K_REG_A3, + M68K_REG_A4, + M68K_REG_A5, + M68K_REG_A6, + M68K_REG_A7, + M68K_REG_PC, /* Program Counter */ + M68K_REG_SR, /* Status Register */ + M68K_REG_SP, /* The current Stack Pointer (located in A7) */ + M68K_REG_USP, /* User Stack Pointer */ + M68K_REG_ISP, /* Interrupt Stack Pointer */ + +#if M68K_EMULATE_PREFETCH + /* Assumed registers */ + /* These are cheat registers which emulate the 1-longword prefetch + * present in the 68000 and 68010. + */ + M68K_REG_PREF_ADDR, /* Last prefetch address */ + M68K_REG_PREF_DATA, /* Last prefetch data */ +#endif + + /* Convenience registers */ + M68K_REG_IR /* Instruction register */ +} m68k_register_t; + + +/* 68k memory map structure */ +typedef struct +{ + unsigned char *base; /* memory-based access (ROM, RAM) */ + unsigned int (*read8)(unsigned int address); /* I/O byte read access */ + unsigned int (*read16)(unsigned int address); /* I/O word read access */ + void (*write8)(unsigned int address, unsigned int data); /* I/O byte write access */ + void (*write16)(unsigned int address, unsigned int data); /* I/O word write access */ +} cpu_memory_map; + +/* 68k idle loop detection */ +typedef struct +{ + uint pc; + uint cycle; + uint detected; +} cpu_idle_t; + +typedef struct +{ + cpu_memory_map memory_map[256]; /* memory mapping */ + + cpu_idle_t poll; /* polling detection */ + + uint cycles; /* current master cycle count */ + uint cycle_end; /* aimed master cycle count for current execution frame */ + + uint dar[16]; /* Data and Address Registers */ + uint pc; /* Program Counter */ + uint sp[5]; /* User and Interrupt Stack Pointers */ + uint ir; /* Instruction Register */ + uint t1_flag; /* Trace 1 */ + uint s_flag; /* Supervisor */ + uint x_flag; /* Extend */ + uint n_flag; /* Negative */ + uint not_z_flag; /* Zero, inverted for speedups */ + uint v_flag; /* Overflow */ + uint c_flag; /* Carry */ + uint int_mask; /* I0-I2 */ + uint int_level; /* State of interrupt pins IPL0-IPL2 -- ASG: changed from ints_pending */ + uint stopped; /* Stopped state */ + + uint pref_addr; /* Last prefetch address */ + uint pref_data; /* Data in the prefetch queue */ + + uint instr_mode; /* Stores whether we are in instruction mode or group 0/1 exception mode */ + uint run_mode; /* Stores whether we are processing a reset, bus error, address error, or something else */ + uint aerr_enabled; /* Enables/deisables address error checks at runtime */ + jmp_buf aerr_trap; /* Address error jump */ + uint aerr_address; /* Address error location */ + uint aerr_write_mode; /* Address error write mode */ + uint aerr_fc; /* Address error FC code */ + + uint tracing; /* Tracing enable flag */ + + uint address_space; /* Current FC code */ + +#ifdef M68K_OVERCLOCK_SHIFT + int cycle_ratio; +#endif + + /* Callbacks to host */ + int (*int_ack_callback)(int int_line); /* Interrupt Acknowledge */ + void (*reset_instr_callback)(void); /* Called when a RESET instruction is encountered */ + int (*tas_instr_callback)(void); /* Called when a TAS instruction is encountered, allows / disallows writeback */ + void (*set_fc_callback)(unsigned int new_fc); /* Called when the CPU function code changes */ +} m68ki_cpu_core; + +/* CPU cores */ +extern m68ki_cpu_core m68k; +extern m68ki_cpu_core s68k; + + +/* ======================================================================== */ +/* ============================== CALLBACKS =============================== */ +/* ======================================================================== */ + +/* These functions allow you to set callbacks to the host when specific events + * occur. Note that you must enable the corresponding value in m68kconf.h + * in order for these to do anything useful. + * Note: I have defined default callbacks which are used if you have enabled + * the corresponding #define in m68kconf.h but either haven't assigned a + * callback or have assigned a callback of NULL. + */ + +#if M68K_EMULATE_INT_ACK == OPT_ON +/* Set the callback for an interrupt acknowledge. + * You must enable M68K_EMULATE_INT_ACK in m68kconf.h. + * The CPU will call the callback with the interrupt level being acknowledged. + * The host program must return either a vector from 0x02-0xff, or one of the + * special interrupt acknowledge values specified earlier in this header. + * If this is not implemented, the CPU will always assume an autovectored + * interrupt, and will automatically clear the interrupt request when it + * services the interrupt. + * Default behavior: return M68K_INT_ACK_AUTOVECTOR. + */ +void m68k_set_int_ack_callback(int (*callback)(int int_level)); +#endif + +#if M68K_EMULATE_RESET == OPT_ON +/* Set the callback for the RESET instruction. + * You must enable M68K_EMULATE_RESET in m68kconf.h. + * The CPU calls this callback every time it encounters a RESET instruction. + * Default behavior: do nothing. + */ +void m68k_set_reset_instr_callback(void (*callback)(void)); +#endif + +#if M68K_TAS_HAS_CALLBACK == OPT_ON +/* Set the callback for the TAS instruction. + * You must enable M68K_TAS_HAS_CALLBACK in m68kconf.h. + * The CPU calls this callback every time it encounters a TAS instruction. + * Default behavior: return 1, allow writeback. + */ +void m68k_set_tas_instr_callback(int (*callback)(void)); +#endif + +#if M68K_EMULATE_FC == OPT_ON +/* Set the callback for CPU function code changes. + * You must enable M68K_EMULATE_FC in m68kconf.h. + * The CPU calls this callback with the function code before every memory + * access to set the CPU's function code according to what kind of memory + * access it is (supervisor/user, program/data and such). + * Default behavior: do nothing. + */ +void m68k_set_fc_callback(void (*callback)(unsigned int new_fc)); +#endif + + +/* ======================================================================== */ +/* ====================== FUNCTIONS TO ACCESS THE CPU ===================== */ +/* ======================================================================== */ + +/* Do whatever initialisations the core requires. Should be called + * at least once at init time. + */ +extern void m68k_init(void); +extern void s68k_init(void); + +/* Pulse the RESET pin on the CPU. + * You *MUST* reset the CPU at least once to initialize the emulation + */ +extern void m68k_pulse_reset(void); +extern void s68k_pulse_reset(void); + +/* Run until given cycle count is reached */ +extern void m68k_run(unsigned int cycles); +extern void s68k_run(unsigned int cycles); + +/* Get current instruction execution time */ +extern int m68k_cycles(void); +extern int s68k_cycles(void); + +/* Set the IPL0-IPL2 pins on the CPU (IRQ). + * A transition from < 7 to 7 will cause a non-maskable interrupt (NMI). + * Setting IRQ to 0 will clear an interrupt request. + */ +extern void m68k_set_irq(unsigned int int_level); +extern void m68k_set_irq_delay(unsigned int int_level); +extern void m68k_update_irq(unsigned int mask); +extern void s68k_update_irq(unsigned int mask); + +/* Halt the CPU as if you pulsed the HALT pin. */ +extern void m68k_pulse_halt(void); +extern void m68k_clear_halt(void); +extern void s68k_pulse_halt(void); +extern void s68k_clear_halt(void); + + +/* Peek at the internals of a CPU context. This can either be a context + * retrieved using m68k_get_context() or the currently running context. + * If context is NULL, the currently running CPU context will be used. + */ +extern unsigned int m68k_get_reg(m68k_register_t reg); +extern unsigned int s68k_get_reg(m68k_register_t reg); + +/* Poke values into the internals of the currently running CPU context */ +extern void m68k_set_reg(m68k_register_t reg, unsigned int value); +extern void s68k_set_reg(m68k_register_t reg, unsigned int value); + + +/* ======================================================================== */ +/* ============================== END OF FILE ============================= */ +/* ======================================================================== */ + +#endif /* M68K__HEADER */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kconf.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kconf.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kconf.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kconf.h index dd59133ddb..5473fa0def 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kconf.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kconf.h @@ -1,93 +1,93 @@ -#ifndef M68KCONF__HEADER -#define M68KCONF__HEADER - -/* ======================================================================== */ -/* ======================== MAIN 68K CONFIGURATION ======================== */ -/* ======================================================================== */ - -/* Configuration switches. - * Use OPT_SPECIFY_HANDLER for configuration options that allow callbacks. - * OPT_SPECIFY_HANDLER causes the core to link directly to the function - * or macro you specify, rather than using callback functions whose pointer - * must be passed in using m68k_set_xxx_callback(). - */ -#define OPT_OFF 0 -#define OPT_ON 1 -#define OPT_SPECIFY_HANDLER 2 - -/* If ON, the CPU will call m68k_write_32_pd() when it executes move.l with a - * predecrement destination EA mode instead of m68k_write_32(). - * To simulate real 68k behavior, m68k_write_32_pd() must first write the high - * word to [address+2], and then write the low word to [address]. - */ -#define M68K_SIMULATE_PD_WRITES OPT_OFF - -/* If ON, CPU will call the interrupt acknowledge callback when it services an - * interrupt. - * If off, all interrupts will be autovectored and all interrupt requests will - * auto-clear when the interrupt is serviced. - */ -#define M68K_EMULATE_INT_ACK OPT_SPECIFY_HANDLER -#define M68K_INT_ACK_CALLBACK(A) vdp_68k_irq_ack(A) - -/* If ON, CPU will call the output reset callback when it encounters a reset - * instruction. - */ -#define M68K_EMULATE_RESET OPT_OFF -#define M68K_RESET_CALLBACK() your_reset_handler_function() - -/* If ON, CPU will call the callback when it encounters a tas - * instruction. - */ -#define M68K_TAS_HAS_CALLBACK OPT_OFF -#define M68K_TAS_CALLBACK() your_tas_handler_function() - -/* If ON, CPU will call the set fc callback on every memory access to - * differentiate between user/supervisor, program/data access like a real - * 68000 would. This should be enabled and the callback should be set if you - * want to properly emulate the m68010 or higher. (moves uses function codes - * to read/write data from different address spaces) - */ -#define M68K_EMULATE_FC OPT_OFF -#define M68K_SET_FC_CALLBACK(A) your_set_fc_handler_function(A) - -/* If ON, the CPU will monitor the trace flags and take trace exceptions - */ -#define M68K_EMULATE_TRACE OPT_OFF - -/* If ON, the CPU will emulate the 4-byte prefetch queue of a real 68000 */ -#define M68K_EMULATE_PREFETCH OPT_OFF - -/* If ON, the CPU will generate address error exceptions if it tries to - * access a word or longword at an odd address. - * NOTE: This is only emulated properly for 68000 mode. - */ -#define M68K_EMULATE_ADDRESS_ERROR OPT_ON - -/* If ON and previous option is also ON, address error exceptions will - also be checked when fetching instructions. Disabling this can help - speeding up emulation while still emulating address error exceptions - on other memory access if needed. - * NOTE: This is only emulated properly for 68000 mode. - */ -#define M68K_CHECK_PC_ADDRESS_ERROR OPT_OFF - - -/* ----------------------------- COMPATIBILITY ---------------------------- */ - -/* The following options set optimizations that violate the current ANSI - * standard, but will be compliant under the forthcoming C9X standard. - */ - - -/* If ON, the enulation core will use 64-bit integers to speed up some - * operations. -*/ -#define M68K_USE_64_BIT OPT_OFF - - -/* ======================================================================== */ -/* ============================== END OF FILE ============================= */ -/* ======================================================================== */ - -#endif /* M68KCONF__HEADER */ +#ifndef M68KCONF__HEADER +#define M68KCONF__HEADER + +/* ======================================================================== */ +/* ======================== MAIN 68K CONFIGURATION ======================== */ +/* ======================================================================== */ + +/* Configuration switches. + * Use OPT_SPECIFY_HANDLER for configuration options that allow callbacks. + * OPT_SPECIFY_HANDLER causes the core to link directly to the function + * or macro you specify, rather than using callback functions whose pointer + * must be passed in using m68k_set_xxx_callback(). + */ +#define OPT_OFF 0 +#define OPT_ON 1 +#define OPT_SPECIFY_HANDLER 2 + +/* If ON, the CPU will call m68k_write_32_pd() when it executes move.l with a + * predecrement destination EA mode instead of m68k_write_32(). + * To simulate real 68k behavior, m68k_write_32_pd() must first write the high + * word to [address+2], and then write the low word to [address]. + */ +#define M68K_SIMULATE_PD_WRITES OPT_OFF + +/* If ON, CPU will call the interrupt acknowledge callback when it services an + * interrupt. + * If off, all interrupts will be autovectored and all interrupt requests will + * auto-clear when the interrupt is serviced. + */ +#define M68K_EMULATE_INT_ACK OPT_SPECIFY_HANDLER +#define M68K_INT_ACK_CALLBACK(A) vdp_68k_irq_ack(A) + +/* If ON, CPU will call the output reset callback when it encounters a reset + * instruction. + */ +#define M68K_EMULATE_RESET OPT_OFF +#define M68K_RESET_CALLBACK() your_reset_handler_function() + +/* If ON, CPU will call the callback when it encounters a tas + * instruction. + */ +#define M68K_TAS_HAS_CALLBACK OPT_OFF +#define M68K_TAS_CALLBACK() your_tas_handler_function() + +/* If ON, CPU will call the set fc callback on every memory access to + * differentiate between user/supervisor, program/data access like a real + * 68000 would. This should be enabled and the callback should be set if you + * want to properly emulate the m68010 or higher. (moves uses function codes + * to read/write data from different address spaces) + */ +#define M68K_EMULATE_FC OPT_OFF +#define M68K_SET_FC_CALLBACK(A) your_set_fc_handler_function(A) + +/* If ON, the CPU will monitor the trace flags and take trace exceptions + */ +#define M68K_EMULATE_TRACE OPT_OFF + +/* If ON, the CPU will emulate the 4-byte prefetch queue of a real 68000 */ +#define M68K_EMULATE_PREFETCH OPT_OFF + +/* If ON, the CPU will generate address error exceptions if it tries to + * access a word or longword at an odd address. + * NOTE: This is only emulated properly for 68000 mode. + */ +#define M68K_EMULATE_ADDRESS_ERROR OPT_ON + +/* If ON and previous option is also ON, address error exceptions will + also be checked when fetching instructions. Disabling this can help + speeding up emulation while still emulating address error exceptions + on other memory access if needed. + * NOTE: This is only emulated properly for 68000 mode. + */ +#define M68K_CHECK_PC_ADDRESS_ERROR OPT_OFF + + +/* ----------------------------- COMPATIBILITY ---------------------------- */ + +/* The following options set optimizations that violate the current ANSI + * standard, but will be compliant under the forthcoming C9X standard. + */ + + +/* If ON, the enulation core will use 64-bit integers to speed up some + * operations. +*/ +#define M68K_USE_64_BIT OPT_OFF + + +/* ======================================================================== */ +/* ============================== END OF FILE ============================= */ +/* ======================================================================== */ + +#endif /* M68KCONF__HEADER */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kcpu.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kcpu.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kcpu.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kcpu.c index 1ee38a7db5..f1f660d00a 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kcpu.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kcpu.c @@ -1,401 +1,401 @@ -/* ======================================================================== */ -/* MAIN 68K CORE */ -/* ======================================================================== */ - -extern int vdp_68k_irq_ack(int int_level); - -#define m68ki_cpu m68k -#define MUL (7) - -/* ======================================================================== */ -/* ================================ INCLUDES ============================== */ -/* ======================================================================== */ - -#ifndef BUILD_TABLES -#include "m68ki_cycles.h" -#endif - -#include "m68kconf.h" -#include "m68kcpu.h" -#include "m68kops.h" - -/* ======================================================================== */ -/* ================================= DATA ================================= */ -/* ======================================================================== */ - -#ifdef BUILD_TABLES -static unsigned char m68ki_cycles[0x10000]; -#endif - -static int irq_latency; - -m68ki_cpu_core m68k; - - -/* ======================================================================== */ -/* =============================== CALLBACKS ============================== */ -/* ======================================================================== */ - -/* Default callbacks used if the callback hasn't been set yet, or if the - * callback is set to NULL - */ - -#if M68K_EMULATE_INT_ACK == OPT_ON -/* Interrupt acknowledge */ -static int default_int_ack_callback(int int_level) -{ - CPU_INT_LEVEL = 0; - return M68K_INT_ACK_AUTOVECTOR; -} -#endif - -#if M68K_EMULATE_RESET == OPT_ON -/* Called when a reset instruction is executed */ -static void default_reset_instr_callback(void) -{ -} -#endif - -#if M68K_TAS_HAS_CALLBACK == OPT_ON -/* Called when a tas instruction is executed */ -static int default_tas_instr_callback(void) -{ - return 1; // allow writeback -} -#endif - -#if M68K_EMULATE_FC == OPT_ON -/* Called every time there's bus activity (read/write to/from memory */ -static void default_set_fc_callback(unsigned int new_fc) -{ -} -#endif - - -/* ======================================================================== */ -/* ================================= API ================================== */ -/* ======================================================================== */ - -/* Access the internals of the CPU */ -unsigned int m68k_get_reg(m68k_register_t regnum) -{ - switch(regnum) - { - case M68K_REG_D0: return m68ki_cpu.dar[0]; - case M68K_REG_D1: return m68ki_cpu.dar[1]; - case M68K_REG_D2: return m68ki_cpu.dar[2]; - case M68K_REG_D3: return m68ki_cpu.dar[3]; - case M68K_REG_D4: return m68ki_cpu.dar[4]; - case M68K_REG_D5: return m68ki_cpu.dar[5]; - case M68K_REG_D6: return m68ki_cpu.dar[6]; - case M68K_REG_D7: return m68ki_cpu.dar[7]; - case M68K_REG_A0: return m68ki_cpu.dar[8]; - case M68K_REG_A1: return m68ki_cpu.dar[9]; - case M68K_REG_A2: return m68ki_cpu.dar[10]; - case M68K_REG_A3: return m68ki_cpu.dar[11]; - case M68K_REG_A4: return m68ki_cpu.dar[12]; - case M68K_REG_A5: return m68ki_cpu.dar[13]; - case M68K_REG_A6: return m68ki_cpu.dar[14]; - case M68K_REG_A7: return m68ki_cpu.dar[15]; - case M68K_REG_PC: return MASK_OUT_ABOVE_32(m68ki_cpu.pc); - case M68K_REG_SR: return m68ki_cpu.t1_flag | - (m68ki_cpu.s_flag << 11) | - m68ki_cpu.int_mask | - ((m68ki_cpu.x_flag & XFLAG_SET) >> 4) | - ((m68ki_cpu.n_flag & NFLAG_SET) >> 4) | - ((!m68ki_cpu.not_z_flag) << 2) | - ((m68ki_cpu.v_flag & VFLAG_SET) >> 6) | - ((m68ki_cpu.c_flag & CFLAG_SET) >> 8); - case M68K_REG_SP: return m68ki_cpu.dar[15]; - case M68K_REG_USP: return m68ki_cpu.s_flag ? m68ki_cpu.sp[0] : m68ki_cpu.dar[15]; - case M68K_REG_ISP: return m68ki_cpu.s_flag ? m68ki_cpu.dar[15] : m68ki_cpu.sp[4]; -#if M68K_EMULATE_PREFETCH - case M68K_REG_PREF_ADDR: return m68ki_cpu.pref_addr; - case M68K_REG_PREF_DATA: return m68ki_cpu.pref_data; -#endif - case M68K_REG_IR: return m68ki_cpu.ir; - default: return 0; - } -} - -void m68k_set_reg(m68k_register_t regnum, unsigned int value) -{ - switch(regnum) - { - case M68K_REG_D0: REG_D[0] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_D1: REG_D[1] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_D2: REG_D[2] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_D3: REG_D[3] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_D4: REG_D[4] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_D5: REG_D[5] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_D6: REG_D[6] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_D7: REG_D[7] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A0: REG_A[0] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A1: REG_A[1] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A2: REG_A[2] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A3: REG_A[3] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A4: REG_A[4] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A5: REG_A[5] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A6: REG_A[6] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_A7: REG_A[7] = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_PC: m68ki_jump(MASK_OUT_ABOVE_32(value)); return; - case M68K_REG_SR: m68ki_set_sr(value); return; - case M68K_REG_SP: REG_SP = MASK_OUT_ABOVE_32(value); return; - case M68K_REG_USP: if(FLAG_S) - REG_USP = MASK_OUT_ABOVE_32(value); - else - REG_SP = MASK_OUT_ABOVE_32(value); - return; - case M68K_REG_ISP: if(FLAG_S) - REG_SP = MASK_OUT_ABOVE_32(value); - else - REG_ISP = MASK_OUT_ABOVE_32(value); - return; - case M68K_REG_IR: REG_IR = MASK_OUT_ABOVE_16(value); return; -#if M68K_EMULATE_PREFETCH - case M68K_REG_PREF_ADDR: CPU_PREF_ADDR = MASK_OUT_ABOVE_32(value); return; -#endif - default: return; - } -} - -/* Set the callbacks */ -#if M68K_EMULATE_INT_ACK == OPT_ON -void m68k_set_int_ack_callback(int (*callback)(int int_level)) -{ - CALLBACK_INT_ACK = callback ? callback : default_int_ack_callback; -} -#endif - -#if M68K_EMULATE_RESET == OPT_ON -void m68k_set_reset_instr_callback(void (*callback)(void)) -{ - CALLBACK_RESET_INSTR = callback ? callback : default_reset_instr_callback; -} -#endif - -#if M68K_TAS_HAS_CALLBACK == OPT_ON -void m68k_set_tas_instr_callback(int (*callback)(void)) -{ - CALLBACK_TAS_INSTR = callback ? callback : default_tas_instr_callback; -} -#endif - -#if M68K_EMULATE_FC == OPT_ON -void m68k_set_fc_callback(void (*callback)(unsigned int new_fc)) -{ - CALLBACK_SET_FC = callback ? callback : default_set_fc_callback; -} -#endif - -#ifdef LOGERROR - -extern void error(char *format, ...); -extern uint16 v_counter; -#endif - -/* ASG: rewrote so that the int_level is a mask of the IPL0/IPL1/IPL2 bits */ -/* KS: Modified so that IPL* bits match with mask positions in the SR - * and cleaned out remenants of the interrupt controller. - */ -void m68k_update_irq(unsigned int mask) -{ - /* Update IRQ level */ - CPU_INT_LEVEL |= (mask << 8); - -#ifdef LOGERROR - error("[%d(%d)][%d(%d)] m68k IRQ Level = %d(0x%02x) (%x)\n", v_counter, m68k.cycles/3420, m68k.cycles, m68k.cycles%3420,CPU_INT_LEVEL>>8,FLAG_INT_MASK,m68k_get_reg(M68K_REG_PC)); -#endif -} - -void m68k_set_irq(unsigned int int_level) -{ - /* Set IRQ level */ - CPU_INT_LEVEL = int_level << 8; - -#ifdef LOGERROR - error("[%d(%d)][%d(%d)] m68k IRQ Level = %d(0x%02x) (%x)\n", v_counter, m68k.cycles/3420, m68k.cycles, m68k.cycles%3420,CPU_INT_LEVEL>>8,FLAG_INT_MASK,m68k_get_reg(M68K_REG_PC)); -#endif -} - -/* IRQ latency (Fatal Rewind, Sesame's Street Counting Cafe)*/ -void m68k_set_irq_delay(unsigned int int_level) -{ - /* Prevent reentrance */ - if (!irq_latency) - { - /* This is always triggered from MOVE instructions (VDP CTRL port write) */ - /* We just make sure this is not a MOVE.L instruction as we could be in */ - /* the middle of its execution (first memory write). */ - if ((REG_IR & 0xF000) != 0x2000) - { - /* Finish executing current instruction */ - USE_CYCLES(CYC_INSTRUCTION[REG_IR]); - - /* One instruction delay before interrupt */ - irq_latency = 1; - m68ki_trace_t1() /* auto-disable (see m68kcpu.h) */ - m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ - REG_IR = m68ki_read_imm_16(); - m68ki_instruction_jump_table[REG_IR](); - m68ki_exception_if_trace() /* auto-disable (see m68kcpu.h) */ - irq_latency = 0; - } - - /* Set IRQ level */ - CPU_INT_LEVEL = int_level << 8; - } - -#ifdef LOGERROR - error("[%d(%d)][%d(%d)] m68k IRQ Level = %d(0x%02x) (%x)\n", v_counter, m68k.cycles/3420, m68k.cycles, m68k.cycles%3420,CPU_INT_LEVEL>>8,FLAG_INT_MASK,m68k_get_reg(M68K_REG_PC)); -#endif - - /* Check interrupt mask to process IRQ */ - m68ki_check_interrupts(); /* Level triggered (IRQ) */ -} - -void m68k_run(unsigned int cycles) -{ - /* Make sure CPU is not already ahead */ - if (m68k.cycles >= cycles) - { - return; - } - - /* Check interrupt mask to process IRQ if needed */ - m68ki_check_interrupts(); - - /* Make sure we're not stopped */ - if (CPU_STOPPED) - { - m68k.cycles = cycles; - return; - } - - /* Save end cycles count for when CPU is stopped */ - m68k.cycle_end = cycles; - - /* Return point for when we have an address error (TODO: use goto) */ - m68ki_set_address_error_trap() /* auto-disable (see m68kcpu.h) */ - -#ifdef LOGERROR - error("[%d][%d] m68k run to %d cycles (%x), irq mask = %x (%x)\n", v_counter, m68k.cycles, cycles, m68k.pc,FLAG_INT_MASK, CPU_INT_LEVEL); -#endif - - while (m68k.cycles < cycles) - { - /* Set tracing accodring to T1. */ - m68ki_trace_t1() /* auto-disable (see m68kcpu.h) */ - - /* Set the address space for reads */ - m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ - -#ifdef HOOK_CPU - /* Trigger execution hook */ - if (cpu_hook) - cpu_hook(HOOK_M68K_E, 0, REG_PC, 0); -#endif - - /* Decode next instruction */ - REG_IR = m68ki_read_imm_16(); - - /* Execute instruction */ - m68ki_instruction_jump_table[REG_IR](); - USE_CYCLES(CYC_INSTRUCTION[REG_IR]); - - /* Trace m68k_exception, if necessary */ - m68ki_exception_if_trace(); /* auto-disable (see m68kcpu.h) */ - } -} - -int m68k_cycles(void) -{ - return CYC_INSTRUCTION[REG_IR]; -} - -void m68k_init(void) -{ -#ifdef BUILD_TABLES - static uint emulation_initialized = 0; - - /* The first call to this function initializes the opcode handler jump table */ - if(!emulation_initialized) - { - m68ki_build_opcode_table(); - emulation_initialized = 1; - } -#endif - -#ifdef M68K_OVERCLOCK_SHIFT - m68k.cycle_ratio = 1 << M68K_OVERCLOCK_SHIFT; -#endif - -#if M68K_EMULATE_INT_ACK == OPT_ON - m68k_set_int_ack_callback(NULL); -#endif -#if M68K_EMULATE_RESET == OPT_ON - m68k_set_reset_instr_callback(NULL); -#endif -#if M68K_TAS_HAS_CALLBACK == OPT_ON - m68k_set_tas_instr_callback(NULL); -#endif -#if M68K_EMULATE_FC == OPT_ON - m68k_set_fc_callback(NULL); -#endif -} - -/* Pulse the RESET line on the CPU */ -void m68k_pulse_reset(void) -{ - /* Clear all stop levels */ - CPU_STOPPED = 0; -#if M68K_EMULATE_ADDRESS_ERROR - CPU_RUN_MODE = RUN_MODE_BERR_AERR_RESET; -#endif - - /* Turn off tracing */ - FLAG_T1 = 0; - m68ki_clear_trace() - - /* Interrupt mask to level 7 */ - FLAG_INT_MASK = 0x0700; - CPU_INT_LEVEL = 0; - irq_latency = 0; - - /* Go to supervisor mode */ - m68ki_set_s_flag(SFLAG_SET); - - /* Invalidate the prefetch queue */ -#if M68K_EMULATE_PREFETCH - /* Set to arbitrary number since our first fetch is from 0 */ - CPU_PREF_ADDR = 0x1000; -#endif /* M68K_EMULATE_PREFETCH */ - - /* Read the initial stack pointer and program counter */ - m68ki_jump(0); - REG_SP = m68ki_read_imm_32(); - REG_PC = m68ki_read_imm_32(); - m68ki_jump(REG_PC); - -#if M68K_EMULATE_ADDRESS_ERROR - CPU_RUN_MODE = RUN_MODE_NORMAL; -#endif - - USE_CYCLES(CYC_EXCEPTION[EXCEPTION_RESET]); -} - -void m68k_pulse_halt(void) -{ - /* Pulse the HALT line on the CPU */ - CPU_STOPPED |= STOP_LEVEL_HALT; -} - -void m68k_clear_halt(void) -{ - /* Clear the HALT line on the CPU */ - CPU_STOPPED &= ~STOP_LEVEL_HALT; -} - -/* ======================================================================== */ -/* ============================== END OF FILE ============================= */ -/* ======================================================================== */ +/* ======================================================================== */ +/* MAIN 68K CORE */ +/* ======================================================================== */ + +extern int vdp_68k_irq_ack(int int_level); + +#define m68ki_cpu m68k +#define MUL (7) + +/* ======================================================================== */ +/* ================================ INCLUDES ============================== */ +/* ======================================================================== */ + +#ifndef BUILD_TABLES +#include "m68ki_cycles.h" +#endif + +#include "m68kconf.h" +#include "m68kcpu.h" +#include "m68kops.h" + +/* ======================================================================== */ +/* ================================= DATA ================================= */ +/* ======================================================================== */ + +#ifdef BUILD_TABLES +static unsigned char m68ki_cycles[0x10000]; +#endif + +static int irq_latency; + +m68ki_cpu_core m68k; + + +/* ======================================================================== */ +/* =============================== CALLBACKS ============================== */ +/* ======================================================================== */ + +/* Default callbacks used if the callback hasn't been set yet, or if the + * callback is set to NULL + */ + +#if M68K_EMULATE_INT_ACK == OPT_ON +/* Interrupt acknowledge */ +static int default_int_ack_callback(int int_level) +{ + CPU_INT_LEVEL = 0; + return M68K_INT_ACK_AUTOVECTOR; +} +#endif + +#if M68K_EMULATE_RESET == OPT_ON +/* Called when a reset instruction is executed */ +static void default_reset_instr_callback(void) +{ +} +#endif + +#if M68K_TAS_HAS_CALLBACK == OPT_ON +/* Called when a tas instruction is executed */ +static int default_tas_instr_callback(void) +{ + return 1; // allow writeback +} +#endif + +#if M68K_EMULATE_FC == OPT_ON +/* Called every time there's bus activity (read/write to/from memory */ +static void default_set_fc_callback(unsigned int new_fc) +{ +} +#endif + + +/* ======================================================================== */ +/* ================================= API ================================== */ +/* ======================================================================== */ + +/* Access the internals of the CPU */ +unsigned int m68k_get_reg(m68k_register_t regnum) +{ + switch(regnum) + { + case M68K_REG_D0: return m68ki_cpu.dar[0]; + case M68K_REG_D1: return m68ki_cpu.dar[1]; + case M68K_REG_D2: return m68ki_cpu.dar[2]; + case M68K_REG_D3: return m68ki_cpu.dar[3]; + case M68K_REG_D4: return m68ki_cpu.dar[4]; + case M68K_REG_D5: return m68ki_cpu.dar[5]; + case M68K_REG_D6: return m68ki_cpu.dar[6]; + case M68K_REG_D7: return m68ki_cpu.dar[7]; + case M68K_REG_A0: return m68ki_cpu.dar[8]; + case M68K_REG_A1: return m68ki_cpu.dar[9]; + case M68K_REG_A2: return m68ki_cpu.dar[10]; + case M68K_REG_A3: return m68ki_cpu.dar[11]; + case M68K_REG_A4: return m68ki_cpu.dar[12]; + case M68K_REG_A5: return m68ki_cpu.dar[13]; + case M68K_REG_A6: return m68ki_cpu.dar[14]; + case M68K_REG_A7: return m68ki_cpu.dar[15]; + case M68K_REG_PC: return MASK_OUT_ABOVE_32(m68ki_cpu.pc); + case M68K_REG_SR: return m68ki_cpu.t1_flag | + (m68ki_cpu.s_flag << 11) | + m68ki_cpu.int_mask | + ((m68ki_cpu.x_flag & XFLAG_SET) >> 4) | + ((m68ki_cpu.n_flag & NFLAG_SET) >> 4) | + ((!m68ki_cpu.not_z_flag) << 2) | + ((m68ki_cpu.v_flag & VFLAG_SET) >> 6) | + ((m68ki_cpu.c_flag & CFLAG_SET) >> 8); + case M68K_REG_SP: return m68ki_cpu.dar[15]; + case M68K_REG_USP: return m68ki_cpu.s_flag ? m68ki_cpu.sp[0] : m68ki_cpu.dar[15]; + case M68K_REG_ISP: return m68ki_cpu.s_flag ? m68ki_cpu.dar[15] : m68ki_cpu.sp[4]; +#if M68K_EMULATE_PREFETCH + case M68K_REG_PREF_ADDR: return m68ki_cpu.pref_addr; + case M68K_REG_PREF_DATA: return m68ki_cpu.pref_data; +#endif + case M68K_REG_IR: return m68ki_cpu.ir; + default: return 0; + } +} + +void m68k_set_reg(m68k_register_t regnum, unsigned int value) +{ + switch(regnum) + { + case M68K_REG_D0: REG_D[0] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_D1: REG_D[1] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_D2: REG_D[2] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_D3: REG_D[3] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_D4: REG_D[4] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_D5: REG_D[5] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_D6: REG_D[6] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_D7: REG_D[7] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A0: REG_A[0] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A1: REG_A[1] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A2: REG_A[2] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A3: REG_A[3] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A4: REG_A[4] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A5: REG_A[5] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A6: REG_A[6] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_A7: REG_A[7] = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_PC: m68ki_jump(MASK_OUT_ABOVE_32(value)); return; + case M68K_REG_SR: m68ki_set_sr(value); return; + case M68K_REG_SP: REG_SP = MASK_OUT_ABOVE_32(value); return; + case M68K_REG_USP: if(FLAG_S) + REG_USP = MASK_OUT_ABOVE_32(value); + else + REG_SP = MASK_OUT_ABOVE_32(value); + return; + case M68K_REG_ISP: if(FLAG_S) + REG_SP = MASK_OUT_ABOVE_32(value); + else + REG_ISP = MASK_OUT_ABOVE_32(value); + return; + case M68K_REG_IR: REG_IR = MASK_OUT_ABOVE_16(value); return; +#if M68K_EMULATE_PREFETCH + case M68K_REG_PREF_ADDR: CPU_PREF_ADDR = MASK_OUT_ABOVE_32(value); return; +#endif + default: return; + } +} + +/* Set the callbacks */ +#if M68K_EMULATE_INT_ACK == OPT_ON +void m68k_set_int_ack_callback(int (*callback)(int int_level)) +{ + CALLBACK_INT_ACK = callback ? callback : default_int_ack_callback; +} +#endif + +#if M68K_EMULATE_RESET == OPT_ON +void m68k_set_reset_instr_callback(void (*callback)(void)) +{ + CALLBACK_RESET_INSTR = callback ? callback : default_reset_instr_callback; +} +#endif + +#if M68K_TAS_HAS_CALLBACK == OPT_ON +void m68k_set_tas_instr_callback(int (*callback)(void)) +{ + CALLBACK_TAS_INSTR = callback ? callback : default_tas_instr_callback; +} +#endif + +#if M68K_EMULATE_FC == OPT_ON +void m68k_set_fc_callback(void (*callback)(unsigned int new_fc)) +{ + CALLBACK_SET_FC = callback ? callback : default_set_fc_callback; +} +#endif + +#ifdef LOGERROR + +extern void error(char *format, ...); +extern uint16 v_counter; +#endif + +/* ASG: rewrote so that the int_level is a mask of the IPL0/IPL1/IPL2 bits */ +/* KS: Modified so that IPL* bits match with mask positions in the SR + * and cleaned out remenants of the interrupt controller. + */ +void m68k_update_irq(unsigned int mask) +{ + /* Update IRQ level */ + CPU_INT_LEVEL |= (mask << 8); + +#ifdef LOGERROR + error("[%d(%d)][%d(%d)] m68k IRQ Level = %d(0x%02x) (%x)\n", v_counter, m68k.cycles/3420, m68k.cycles, m68k.cycles%3420,CPU_INT_LEVEL>>8,FLAG_INT_MASK,m68k_get_reg(M68K_REG_PC)); +#endif +} + +void m68k_set_irq(unsigned int int_level) +{ + /* Set IRQ level */ + CPU_INT_LEVEL = int_level << 8; + +#ifdef LOGERROR + error("[%d(%d)][%d(%d)] m68k IRQ Level = %d(0x%02x) (%x)\n", v_counter, m68k.cycles/3420, m68k.cycles, m68k.cycles%3420,CPU_INT_LEVEL>>8,FLAG_INT_MASK,m68k_get_reg(M68K_REG_PC)); +#endif +} + +/* IRQ latency (Fatal Rewind, Sesame's Street Counting Cafe)*/ +void m68k_set_irq_delay(unsigned int int_level) +{ + /* Prevent reentrance */ + if (!irq_latency) + { + /* This is always triggered from MOVE instructions (VDP CTRL port write) */ + /* We just make sure this is not a MOVE.L instruction as we could be in */ + /* the middle of its execution (first memory write). */ + if ((REG_IR & 0xF000) != 0x2000) + { + /* Finish executing current instruction */ + USE_CYCLES(CYC_INSTRUCTION[REG_IR]); + + /* One instruction delay before interrupt */ + irq_latency = 1; + m68ki_trace_t1() /* auto-disable (see m68kcpu.h) */ + m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ + REG_IR = m68ki_read_imm_16(); + m68ki_instruction_jump_table[REG_IR](); + m68ki_exception_if_trace() /* auto-disable (see m68kcpu.h) */ + irq_latency = 0; + } + + /* Set IRQ level */ + CPU_INT_LEVEL = int_level << 8; + } + +#ifdef LOGERROR + error("[%d(%d)][%d(%d)] m68k IRQ Level = %d(0x%02x) (%x)\n", v_counter, m68k.cycles/3420, m68k.cycles, m68k.cycles%3420,CPU_INT_LEVEL>>8,FLAG_INT_MASK,m68k_get_reg(M68K_REG_PC)); +#endif + + /* Check interrupt mask to process IRQ */ + m68ki_check_interrupts(); /* Level triggered (IRQ) */ +} + +void m68k_run(unsigned int cycles) +{ + /* Make sure CPU is not already ahead */ + if (m68k.cycles >= cycles) + { + return; + } + + /* Check interrupt mask to process IRQ if needed */ + m68ki_check_interrupts(); + + /* Make sure we're not stopped */ + if (CPU_STOPPED) + { + m68k.cycles = cycles; + return; + } + + /* Save end cycles count for when CPU is stopped */ + m68k.cycle_end = cycles; + + /* Return point for when we have an address error (TODO: use goto) */ + m68ki_set_address_error_trap() /* auto-disable (see m68kcpu.h) */ + +#ifdef LOGERROR + error("[%d][%d] m68k run to %d cycles (%x), irq mask = %x (%x)\n", v_counter, m68k.cycles, cycles, m68k.pc,FLAG_INT_MASK, CPU_INT_LEVEL); +#endif + + while (m68k.cycles < cycles) + { + /* Set tracing accodring to T1. */ + m68ki_trace_t1() /* auto-disable (see m68kcpu.h) */ + + /* Set the address space for reads */ + m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ + +#ifdef HOOK_CPU + /* Trigger execution hook */ + if (cpu_hook) + cpu_hook(HOOK_M68K_E, 0, REG_PC, 0); +#endif + + /* Decode next instruction */ + REG_IR = m68ki_read_imm_16(); + + /* Execute instruction */ + m68ki_instruction_jump_table[REG_IR](); + USE_CYCLES(CYC_INSTRUCTION[REG_IR]); + + /* Trace m68k_exception, if necessary */ + m68ki_exception_if_trace(); /* auto-disable (see m68kcpu.h) */ + } +} + +int m68k_cycles(void) +{ + return CYC_INSTRUCTION[REG_IR]; +} + +void m68k_init(void) +{ +#ifdef BUILD_TABLES + static uint emulation_initialized = 0; + + /* The first call to this function initializes the opcode handler jump table */ + if(!emulation_initialized) + { + m68ki_build_opcode_table(); + emulation_initialized = 1; + } +#endif + +#ifdef M68K_OVERCLOCK_SHIFT + m68k.cycle_ratio = 1 << M68K_OVERCLOCK_SHIFT; +#endif + +#if M68K_EMULATE_INT_ACK == OPT_ON + m68k_set_int_ack_callback(NULL); +#endif +#if M68K_EMULATE_RESET == OPT_ON + m68k_set_reset_instr_callback(NULL); +#endif +#if M68K_TAS_HAS_CALLBACK == OPT_ON + m68k_set_tas_instr_callback(NULL); +#endif +#if M68K_EMULATE_FC == OPT_ON + m68k_set_fc_callback(NULL); +#endif +} + +/* Pulse the RESET line on the CPU */ +void m68k_pulse_reset(void) +{ + /* Clear all stop levels */ + CPU_STOPPED = 0; +#if M68K_EMULATE_ADDRESS_ERROR + CPU_RUN_MODE = RUN_MODE_BERR_AERR_RESET; +#endif + + /* Turn off tracing */ + FLAG_T1 = 0; + m68ki_clear_trace() + + /* Interrupt mask to level 7 */ + FLAG_INT_MASK = 0x0700; + CPU_INT_LEVEL = 0; + irq_latency = 0; + + /* Go to supervisor mode */ + m68ki_set_s_flag(SFLAG_SET); + + /* Invalidate the prefetch queue */ +#if M68K_EMULATE_PREFETCH + /* Set to arbitrary number since our first fetch is from 0 */ + CPU_PREF_ADDR = 0x1000; +#endif /* M68K_EMULATE_PREFETCH */ + + /* Read the initial stack pointer and program counter */ + m68ki_jump(0); + REG_SP = m68ki_read_imm_32(); + REG_PC = m68ki_read_imm_32(); + m68ki_jump(REG_PC); + +#if M68K_EMULATE_ADDRESS_ERROR + CPU_RUN_MODE = RUN_MODE_NORMAL; +#endif + + USE_CYCLES(CYC_EXCEPTION[EXCEPTION_RESET]); +} + +void m68k_pulse_halt(void) +{ + /* Pulse the HALT line on the CPU */ + CPU_STOPPED |= STOP_LEVEL_HALT; +} + +void m68k_clear_halt(void) +{ + /* Clear the HALT line on the CPU */ + CPU_STOPPED &= ~STOP_LEVEL_HALT; +} + +/* ======================================================================== */ +/* ============================== END OF FILE ============================= */ +/* ======================================================================== */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kcpu.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kcpu.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kcpu.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kcpu.h index 13f0c0a14f..7af61cca82 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kcpu.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kcpu.h @@ -1,1433 +1,1433 @@ -#ifndef M68KCPU__HEADER -#define M68KCPU__HEADER - -/* ======================================================================== */ -/* GENERIC 68K CORE */ -/* ======================================================================== */ - -#include -#include -#include - -#if M68K_EMULATE_ADDRESS_ERROR -#include -#endif /* M68K_EMULATE_ADDRESS_ERROR */ - -#include "m68k.h" - - -/* ======================================================================== */ -/* ============================ GENERAL DEFINES =========================== */ -/* ======================================================================== */ - -/* Exception Vectors handled by emulation */ -#define EXCEPTION_RESET 0 -#define EXCEPTION_BUS_ERROR 2 /* This one is not emulated! */ -#define EXCEPTION_ADDRESS_ERROR 3 /* This one is partially emulated (doesn't stack a proper frame yet) */ -#define EXCEPTION_ILLEGAL_INSTRUCTION 4 -#define EXCEPTION_ZERO_DIVIDE 5 -#define EXCEPTION_CHK 6 -#define EXCEPTION_TRAPV 7 -#define EXCEPTION_PRIVILEGE_VIOLATION 8 -#define EXCEPTION_TRACE 9 -#define EXCEPTION_1010 10 -#define EXCEPTION_1111 11 -#define EXCEPTION_FORMAT_ERROR 14 -#define EXCEPTION_UNINITIALIZED_INTERRUPT 15 -#define EXCEPTION_SPURIOUS_INTERRUPT 24 -#define EXCEPTION_INTERRUPT_AUTOVECTOR 24 -#define EXCEPTION_TRAP_BASE 32 - -/* Function codes set by CPU during data/address bus activity */ -#define FUNCTION_CODE_USER_DATA 1 -#define FUNCTION_CODE_USER_PROGRAM 2 -#define FUNCTION_CODE_SUPERVISOR_DATA 5 -#define FUNCTION_CODE_SUPERVISOR_PROGRAM 6 -#define FUNCTION_CODE_CPU_SPACE 7 - -/* Different ways to stop the CPU */ -#define STOP_LEVEL_STOP 1 -#define STOP_LEVEL_HALT 2 - -/* Used for 68000 address error processing */ -#if M68K_EMULATE_ADDRESS_ERROR -#define INSTRUCTION_YES 0 -#define INSTRUCTION_NO 0x08 -#define MODE_READ 0x10 -#define MODE_WRITE 0 - -#define RUN_MODE_NORMAL 0 -#define RUN_MODE_BERR_AERR_RESET 1 -#endif - -#ifndef NULL -#define NULL ((void*)0) -#endif - -/* ======================================================================== */ -/* ================================ MACROS ================================ */ -/* ======================================================================== */ - - -/* ---------------------------- General Macros ---------------------------- */ - -/* Bit Isolation Macros */ -#define BIT_0(A) ((A) & 0x00000001) -#define BIT_1(A) ((A) & 0x00000002) -#define BIT_2(A) ((A) & 0x00000004) -#define BIT_3(A) ((A) & 0x00000008) -#define BIT_4(A) ((A) & 0x00000010) -#define BIT_5(A) ((A) & 0x00000020) -#define BIT_6(A) ((A) & 0x00000040) -#define BIT_7(A) ((A) & 0x00000080) -#define BIT_8(A) ((A) & 0x00000100) -#define BIT_9(A) ((A) & 0x00000200) -#define BIT_A(A) ((A) & 0x00000400) -#define BIT_B(A) ((A) & 0x00000800) -#define BIT_C(A) ((A) & 0x00001000) -#define BIT_D(A) ((A) & 0x00002000) -#define BIT_E(A) ((A) & 0x00004000) -#define BIT_F(A) ((A) & 0x00008000) -#define BIT_10(A) ((A) & 0x00010000) -#define BIT_11(A) ((A) & 0x00020000) -#define BIT_12(A) ((A) & 0x00040000) -#define BIT_13(A) ((A) & 0x00080000) -#define BIT_14(A) ((A) & 0x00100000) -#define BIT_15(A) ((A) & 0x00200000) -#define BIT_16(A) ((A) & 0x00400000) -#define BIT_17(A) ((A) & 0x00800000) -#define BIT_18(A) ((A) & 0x01000000) -#define BIT_19(A) ((A) & 0x02000000) -#define BIT_1A(A) ((A) & 0x04000000) -#define BIT_1B(A) ((A) & 0x08000000) -#define BIT_1C(A) ((A) & 0x10000000) -#define BIT_1D(A) ((A) & 0x20000000) -#define BIT_1E(A) ((A) & 0x40000000) -#define BIT_1F(A) ((A) & 0x80000000) - -/* Get the most significant bit for specific sizes */ -#define GET_MSB_8(A) ((A) & 0x80) -#define GET_MSB_9(A) ((A) & 0x100) -#define GET_MSB_16(A) ((A) & 0x8000) -#define GET_MSB_17(A) ((A) & 0x10000) -#define GET_MSB_32(A) ((A) & 0x80000000) -#if M68K_USE_64_BIT -#define GET_MSB_33(A) ((A) & 0x100000000) -#endif /* M68K_USE_64_BIT */ - -/* Isolate nibbles */ -#define LOW_NIBBLE(A) ((A) & 0x0f) -#define HIGH_NIBBLE(A) ((A) & 0xf0) - -/* These are used to isolate 8, 16, and 32 bit sizes */ -#define MASK_OUT_ABOVE_2(A) ((A) & 3) -#define MASK_OUT_ABOVE_8(A) ((A) & 0xff) -#define MASK_OUT_ABOVE_16(A) ((A) & 0xffff) -#define MASK_OUT_BELOW_2(A) ((A) & ~3) -#define MASK_OUT_BELOW_8(A) ((A) & ~0xff) -#define MASK_OUT_BELOW_16(A) ((A) & ~0xffff) - -/* No need to mask if we are 32 bit */ -#if M68K_INT_GT_32_BIT || M68K_USE_64_BIT - #define MASK_OUT_ABOVE_32(A) ((A) & 0xffffffff) - #define MASK_OUT_BELOW_32(A) ((A) & ~0xffffffff) -#else - #define MASK_OUT_ABOVE_32(A) (A) - #define MASK_OUT_BELOW_32(A) 0 -#endif /* M68K_INT_GT_32_BIT || M68K_USE_64_BIT */ - -/* Simulate address lines of 68k family */ -#define ADDRESS_68K(A) ((A)&CPU_ADDRESS_MASK) - - -/* Shift & Rotate Macros. */ -#define LSL(A, C) ((A) << (C)) -#define LSR(A, C) ((A) >> (C)) - -/* Some > 32-bit optimizations */ -#if M68K_INT_GT_32_BIT - /* Shift left and right */ - #define LSR_32(A, C) ((A) >> (C)) - #define LSL_32(A, C) ((A) << (C)) -#else - /* We have to do this because the morons at ANSI decided that shifts - * by >= data size are undefined. - */ - #define LSR_32(A, C) ((C) < 32 ? (A) >> (C) : 0) - #define LSL_32(A, C) ((C) < 32 ? (A) << (C) : 0) -#endif /* M68K_INT_GT_32_BIT */ - -#if M68K_USE_64_BIT - #define LSL_32_64(A, C) ((A) << (C)) - #define LSR_32_64(A, C) ((A) >> (C)) - #define ROL_33_64(A, C) (LSL_32_64(A, C) | LSR_32_64(A, 33-(C))) - #define ROR_33_64(A, C) (LSR_32_64(A, C) | LSL_32_64(A, 33-(C))) -#endif /* M68K_USE_64_BIT */ - -#define ROL_8(A, C) MASK_OUT_ABOVE_8(LSL(A, C) | LSR(A, 8-(C))) -#define ROL_9(A, C) (LSL(A, C) | LSR(A, 9-(C))) -#define ROL_16(A, C) MASK_OUT_ABOVE_16(LSL(A, C) | LSR(A, 16-(C))) -#define ROL_17(A, C) (LSL(A, C) | LSR(A, 17-(C))) -#define ROL_32(A, C) MASK_OUT_ABOVE_32(LSL_32(A, C) | LSR_32(A, 32-(C))) -#define ROL_33(A, C) (LSL_32(A, C) | LSR_32(A, 33-(C))) - -#define ROR_8(A, C) MASK_OUT_ABOVE_8(LSR(A, C) | LSL(A, 8-(C))) -#define ROR_9(A, C) (LSR(A, C) | LSL(A, 9-(C))) -#define ROR_16(A, C) MASK_OUT_ABOVE_16(LSR(A, C) | LSL(A, 16-(C))) -#define ROR_17(A, C) (LSR(A, C) | LSL(A, 17-(C))) -#define ROR_32(A, C) MASK_OUT_ABOVE_32(LSR_32(A, C) | LSL_32(A, 32-(C))) -#define ROR_33(A, C) (LSR_32(A, C) | LSL_32(A, 33-(C))) - - - -/* ------------------------------ CPU Access ------------------------------ */ - -/* Access the CPU registers */ -#define REG_DA m68ki_cpu.dar /* easy access to data and address regs */ -#define REG_D m68ki_cpu.dar -#define REG_A (m68ki_cpu.dar+8) -#define REG_PC m68ki_cpu.pc -#define REG_SP_BASE m68ki_cpu.sp -#define REG_USP m68ki_cpu.sp[0] -#define REG_ISP m68ki_cpu.sp[4] -#define REG_SP m68ki_cpu.dar[15] -#define REG_IR m68ki_cpu.ir - -#define FLAG_T1 m68ki_cpu.t1_flag -#define FLAG_S m68ki_cpu.s_flag -#define FLAG_X m68ki_cpu.x_flag -#define FLAG_N m68ki_cpu.n_flag -#define FLAG_Z m68ki_cpu.not_z_flag -#define FLAG_V m68ki_cpu.v_flag -#define FLAG_C m68ki_cpu.c_flag -#define FLAG_INT_MASK m68ki_cpu.int_mask - -#define CPU_INT_LEVEL m68ki_cpu.int_level /* ASG: changed from CPU_INTS_PENDING */ -#define CPU_STOPPED m68ki_cpu.stopped -#if M68K_EMULATE_PREFETCH -#define CPU_PREF_ADDR m68ki_cpu.pref_addr -#define CPU_PREF_DATA m68ki_cpu.pref_data -#endif -#define CPU_ADDRESS_MASK 0x00ffffff -#if M68K_EMULATE_ADDRESS_ERROR -#define CPU_INSTR_MODE m68ki_cpu.instr_mode -#define CPU_RUN_MODE m68ki_cpu.run_mode -#endif - -#define CYC_INSTRUCTION m68ki_cycles -#define CYC_EXCEPTION m68ki_exception_cycle_table -#define CYC_BCC_NOTAKE_B ( -2 * MUL) -#define CYC_BCC_NOTAKE_W ( 2 * MUL) -#define CYC_DBCC_F_NOEXP ( -2 * MUL) -#define CYC_DBCC_F_EXP ( 2 * MUL) -#define CYC_SCC_R_TRUE ( 2 * MUL) -#define CYC_MOVEM_W ( 4 * MUL) -#define CYC_MOVEM_L ( 8 * MUL) -#define CYC_SHIFT ( 2 * MUL) -#define CYC_RESET (132 * MUL) - -#if M68K_EMULATE_INT_ACK == OPT_ON -#define CALLBACK_INT_ACK m68ki_cpu.int_ack_callback -#endif -#if M68K_EMULATE_RESET == OPT_ON -#define CALLBACK_RESET_INSTR m68ki_cpu.reset_instr_callback -#endif -#if M68K_TAS_HAS_CALLBACK == OPT_ON -#define CALLBACK_TAS_INSTR m68ki_cpu.tas_instr_callback -#endif -#if M68K_EMULATE_FC == OPT_ON -#define CALLBACK_SET_FC m68ki_cpu.set_fc_callback -#endif - - -/* ----------------------------- Configuration ---------------------------- */ - -/* These defines are dependant on the configuration defines in m68kconf.h */ - -/* Enable or disable callback functions */ -#if M68K_EMULATE_INT_ACK - #if M68K_EMULATE_INT_ACK == OPT_SPECIFY_HANDLER - #define m68ki_int_ack(A) M68K_INT_ACK_CALLBACK(A); - #else - #define m68ki_int_ack(A) CALLBACK_INT_ACK(A); - #endif -#else - /* Default action is to used autovector mode, which is most common */ - #define m68ki_int_ack(A) M68K_INT_ACK_AUTOVECTOR -#endif /* M68K_EMULATE_INT_ACK */ - -#if M68K_EMULATE_RESET - #if M68K_EMULATE_RESET == OPT_SPECIFY_HANDLER - #define m68ki_output_reset() M68K_RESET_CALLBACK(); - #else - #define m68ki_output_reset() CALLBACK_RESET_INSTR(); - #endif -#else - #define m68ki_output_reset() -#endif /* M68K_EMULATE_RESET */ - -#if M68K_TAS_HAS_CALLBACK - #if M68K_TAS_HAS_CALLBACK == OPT_SPECIFY_HANDLER - #define m68ki_tas_callback() M68K_TAS_CALLBACK() - #else - #define m68ki_tas_callback() CALLBACK_TAS_INSTR() - #endif -#else - #define m68ki_tas_callback() 0 -#endif /* M68K_TAS_HAS_CALLBACK */ - - -/* Enable or disable function code emulation */ -#if M68K_EMULATE_FC - #if M68K_EMULATE_FC == OPT_SPECIFY_HANDLER - #define m68ki_set_fc(A) M68K_SET_FC_CALLBACK(A); - #else - #define m68ki_set_fc(A) CALLBACK_SET_FC(A); - #endif - #define m68ki_use_data_space() m68ki_cpu.address_space = FUNCTION_CODE_USER_DATA; - #define m68ki_use_program_space() m68ki_cpu.address_space = FUNCTION_CODE_USER_PROGRAM; - #define m68ki_get_address_space() m68ki_cpu.address_space -#else - #define m68ki_set_fc(A) - #define m68ki_use_data_space() - #define m68ki_use_program_space() - #define m68ki_get_address_space() FUNCTION_CODE_USER_DATA -#endif /* M68K_EMULATE_FC */ - - -/* Enable or disable trace emulation */ -#if M68K_EMULATE_TRACE - /* Initiates trace checking before each instruction (t1) */ - #define m68ki_trace_t1() m68ki_cpu.tracing = FLAG_T1; - /* Clear all tracing */ - #define m68ki_clear_trace() m68ki_cpu.tracing = 0; - /* Cause a trace exception if we are tracing */ - #define m68ki_exception_if_trace() if(m68ki_cpu.tracing) m68ki_exception_trace(); -#else - #define m68ki_trace_t1() - #define m68ki_clear_trace() - #define m68ki_exception_if_trace() -#endif /* M68K_EMULATE_TRACE */ - - -/* Enable or disable Address error emulation */ -#if M68K_EMULATE_ADDRESS_ERROR - #define m68ki_set_address_error_trap() \ - if(setjmp(m68ki_cpu.aerr_trap) != 0) \ - { \ - m68ki_exception_address_error(); \ - } - - #define m68ki_check_address_error(ADDR, WRITE_MODE, FC) \ - if((ADDR)&1) \ - { \ - if (m68ki_cpu.aerr_enabled) \ - { \ - m68ki_cpu.aerr_address = ADDR; \ - m68ki_cpu.aerr_write_mode = WRITE_MODE; \ - m68ki_cpu.aerr_fc = FC; \ - longjmp(m68ki_cpu.aerr_trap, 1); \ - } \ - } -#else - #define m68ki_set_address_error_trap() - #define m68ki_check_address_error(ADDR, WRITE_MODE, FC) -#endif /* M68K_ADDRESS_ERROR */ - - -/* -------------------------- EA / Operand Access ------------------------- */ - -/* - * The general instruction format follows this pattern: - * .... XXX. .... .YYY - * where XXX is register X and YYY is register Y - */ - -/* Data Register Isolation */ -#define DX (REG_D[(REG_IR >> 9) & 7]) -#define DY (REG_D[REG_IR & 7]) - -/* Address Register Isolation */ -#define AX (REG_A[(REG_IR >> 9) & 7]) -#define AY (REG_A[REG_IR & 7]) - -/* Effective Address Calculations */ -#define EA_AY_AI_8() AY /* address register indirect */ -#define EA_AY_AI_16() EA_AY_AI_8() -#define EA_AY_AI_32() EA_AY_AI_8() -#define EA_AY_PI_8() (AY++) /* postincrement (size = byte) */ -#define EA_AY_PI_16() ((AY+=2)-2) /* postincrement (size = word) */ -#define EA_AY_PI_32() ((AY+=4)-4) /* postincrement (size = long) */ -#define EA_AY_PD_8() (--AY) /* predecrement (size = byte) */ -#define EA_AY_PD_16() (AY-=2) /* predecrement (size = word) */ -#define EA_AY_PD_32() (AY-=4) /* predecrement (size = long) */ -#define EA_AY_DI_8() (AY+MAKE_INT_16(m68ki_read_imm_16())) /* displacement */ -#define EA_AY_DI_16() EA_AY_DI_8() -#define EA_AY_DI_32() EA_AY_DI_8() -#define EA_AY_IX_8() m68ki_get_ea_ix(AY) /* indirect + index */ -#define EA_AY_IX_16() EA_AY_IX_8() -#define EA_AY_IX_32() EA_AY_IX_8() - -#define EA_AX_AI_8() AX -#define EA_AX_AI_16() EA_AX_AI_8() -#define EA_AX_AI_32() EA_AX_AI_8() -#define EA_AX_PI_8() (AX++) -#define EA_AX_PI_16() ((AX+=2)-2) -#define EA_AX_PI_32() ((AX+=4)-4) -#define EA_AX_PD_8() (--AX) -#define EA_AX_PD_16() (AX-=2) -#define EA_AX_PD_32() (AX-=4) -#define EA_AX_DI_8() (AX+MAKE_INT_16(m68ki_read_imm_16())) -#define EA_AX_DI_16() EA_AX_DI_8() -#define EA_AX_DI_32() EA_AX_DI_8() -#define EA_AX_IX_8() m68ki_get_ea_ix(AX) -#define EA_AX_IX_16() EA_AX_IX_8() -#define EA_AX_IX_32() EA_AX_IX_8() - -#define EA_A7_PI_8() ((REG_A[7]+=2)-2) -#define EA_A7_PD_8() (REG_A[7]-=2) - -#define EA_AW_8() MAKE_INT_16(m68ki_read_imm_16()) /* absolute word */ -#define EA_AW_16() EA_AW_8() -#define EA_AW_32() EA_AW_8() -#define EA_AL_8() m68ki_read_imm_32() /* absolute long */ -#define EA_AL_16() EA_AL_8() -#define EA_AL_32() EA_AL_8() -#define EA_PCDI_8() m68ki_get_ea_pcdi() /* pc indirect + displacement */ -#define EA_PCDI_16() EA_PCDI_8() -#define EA_PCDI_32() EA_PCDI_8() -#define EA_PCIX_8() m68ki_get_ea_pcix() /* pc indirect + index */ -#define EA_PCIX_16() EA_PCIX_8() -#define EA_PCIX_32() EA_PCIX_8() - - -#define OPER_I_8() m68ki_read_imm_8() -#define OPER_I_16() m68ki_read_imm_16() -#define OPER_I_32() m68ki_read_imm_32() - - -/* --------------------------- Status Register ---------------------------- */ - -/* Flag Calculation Macros */ -#define CFLAG_8(A) (A) -#define CFLAG_16(A) ((A)>>8) - -#if M68K_INT_GT_32_BIT - #define CFLAG_ADD_32(S, D, R) ((R)>>24) - #define CFLAG_SUB_32(S, D, R) ((R)>>24) -#else - #define CFLAG_ADD_32(S, D, R) (((S & D) | (~R & (S | D)))>>23) - #define CFLAG_SUB_32(S, D, R) (((S & R) | (~D & (S | R)))>>23) -#endif /* M68K_INT_GT_32_BIT */ - -#define VFLAG_ADD_8(S, D, R) ((S^R) & (D^R)) -#define VFLAG_ADD_16(S, D, R) (((S^R) & (D^R))>>8) -#define VFLAG_ADD_32(S, D, R) (((S^R) & (D^R))>>24) - -#define VFLAG_SUB_8(S, D, R) ((S^D) & (R^D)) -#define VFLAG_SUB_16(S, D, R) (((S^D) & (R^D))>>8) -#define VFLAG_SUB_32(S, D, R) (((S^D) & (R^D))>>24) - -#define NFLAG_8(A) (A) -#define NFLAG_16(A) ((A)>>8) -#define NFLAG_32(A) ((A)>>24) -#define NFLAG_64(A) ((A)>>56) - -#define ZFLAG_8(A) MASK_OUT_ABOVE_8(A) -#define ZFLAG_16(A) MASK_OUT_ABOVE_16(A) -#define ZFLAG_32(A) MASK_OUT_ABOVE_32(A) - - -/* Flag values */ -#define NFLAG_SET 0x80 -#define NFLAG_CLEAR 0 -#define CFLAG_SET 0x100 -#define CFLAG_CLEAR 0 -#define XFLAG_SET 0x100 -#define XFLAG_CLEAR 0 -#define VFLAG_SET 0x80 -#define VFLAG_CLEAR 0 -#define ZFLAG_SET 0 -#define ZFLAG_CLEAR 0xffffffff -#define SFLAG_SET 4 -#define SFLAG_CLEAR 0 - -/* Turn flag values into 1 or 0 */ -#define XFLAG_AS_1() ((FLAG_X>>8)&1) -#define NFLAG_AS_1() ((FLAG_N>>7)&1) -#define VFLAG_AS_1() ((FLAG_V>>7)&1) -#define ZFLAG_AS_1() (!FLAG_Z) -#define CFLAG_AS_1() ((FLAG_C>>8)&1) - - -/* Conditions */ -#define COND_CS() (FLAG_C&0x100) -#define COND_CC() (!COND_CS()) -#define COND_VS() (FLAG_V&0x80) -#define COND_VC() (!COND_VS()) -#define COND_NE() FLAG_Z -#define COND_EQ() (!COND_NE()) -#define COND_MI() (FLAG_N&0x80) -#define COND_PL() (!COND_MI()) -#define COND_LT() ((FLAG_N^FLAG_V)&0x80) -#define COND_GE() (!COND_LT()) -#define COND_HI() (COND_CC() && COND_NE()) -#define COND_LS() (COND_CS() || COND_EQ()) -#define COND_GT() (COND_GE() && COND_NE()) -#define COND_LE() (COND_LT() || COND_EQ()) - -/* Reversed conditions */ -#define COND_NOT_CS() COND_CC() -#define COND_NOT_CC() COND_CS() -#define COND_NOT_VS() COND_VC() -#define COND_NOT_VC() COND_VS() -#define COND_NOT_NE() COND_EQ() -#define COND_NOT_EQ() COND_NE() -#define COND_NOT_MI() COND_PL() -#define COND_NOT_PL() COND_MI() -#define COND_NOT_LT() COND_GE() -#define COND_NOT_GE() COND_LT() -#define COND_NOT_HI() COND_LS() -#define COND_NOT_LS() COND_HI() -#define COND_NOT_GT() COND_LE() -#define COND_NOT_LE() COND_GT() - -/* Not real conditions, but here for convenience */ -#define COND_XS() (FLAG_X&0x100) -#define COND_XC() (!COND_XS) - - -/* Get the condition code register */ -#define m68ki_get_ccr() ((COND_XS() >> 4) | \ - (COND_MI() >> 4) | \ - (COND_EQ() << 2) | \ - (COND_VS() >> 6) | \ - (COND_CS() >> 8)) - -/* Get the status register */ -#define m68ki_get_sr() ( FLAG_T1 | \ - (FLAG_S << 11) | \ - FLAG_INT_MASK | \ - m68ki_get_ccr()) - - - -/* ---------------------------- Cycle Counting ---------------------------- */ - -#ifdef M68K_OVERCLOCK_SHIFT -#define USE_CYCLES(A) m68ki_cpu.cycles += ((A) * m68ki_cpu.cycle_ratio) >> M68K_OVERCLOCK_SHIFT -#else -#define USE_CYCLES(A) m68ki_cpu.cycles += (A) -#endif -#define SET_CYCLES(A) m68ki_cpu.cycles = (A) - - -/* ----------------------------- Read / Write ----------------------------- */ - -/* Read data immediately following the PC */ -#define m68k_read_immediate_16(address) *(uint16 *)(m68ki_cpu.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) -#define m68k_read_immediate_32(address) (m68k_read_immediate_16(address) << 16) | (m68k_read_immediate_16(address+2)) - -/* Read data relative to the PC */ -#define m68k_read_pcrelative_8(address) READ_BYTE(m68ki_cpu.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) -#define m68k_read_pcrelative_16(address) m68k_read_immediate_16(address) -#define m68k_read_pcrelative_32(address) m68k_read_immediate_32(address) - -/* map read immediate 8 to read immediate 16 */ -#define m68ki_read_imm_8() MASK_OUT_ABOVE_8(m68ki_read_imm_16()) - -/* Map PC-relative reads */ -#define m68ki_read_pcrel_8(A) m68k_read_pcrelative_8(A) -#define m68ki_read_pcrel_16(A) m68k_read_pcrelative_16(A) -#define m68ki_read_pcrel_32(A) m68k_read_pcrelative_32(A) - - -/* ======================================================================== */ -/* =============================== PROTOTYPES ============================= */ -/* ======================================================================== */ - -/* Used by shift & rotate instructions */ -static const uint8 m68ki_shift_8_table[65] = -{ - 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff -}; - -static const uint16 m68ki_shift_16_table[65] = -{ - 0x0000, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, 0xff00, - 0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff -}; - -static const uint m68ki_shift_32_table[65] = -{ - 0x00000000, 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, 0xf8000000, - 0xfc000000, 0xfe000000, 0xff000000, 0xff800000, 0xffc00000, 0xffe00000, - 0xfff00000, 0xfff80000, 0xfffc0000, 0xfffe0000, 0xffff0000, 0xffff8000, - 0xffffc000, 0xffffe000, 0xfffff000, 0xfffff800, 0xfffffc00, 0xfffffe00, - 0xffffff00, 0xffffff80, 0xffffffc0, 0xffffffe0, 0xfffffff0, 0xfffffff8, - 0xfffffffc, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff -}; - - -/* Number of clock cycles to use for exception processing. - * I used 4 for any vectors that are undocumented for processing times. - */ -static const uint16 m68ki_exception_cycle_table[256] = -{ - 40*MUL, /* 0: Reset - Initial Stack Pointer */ - 4*MUL, /* 1: Reset - Initial Program Counter */ - 50*MUL, /* 2: Bus Error (unemulated) */ - 50*MUL, /* 3: Address Error (unemulated) */ - 34*MUL, /* 4: Illegal Instruction */ - 38*MUL, /* 5: Divide by Zero -- ASG: changed from 42 */ - 40*MUL, /* 6: CHK -- ASG: chanaged from 44 */ - 34*MUL, /* 7: TRAPV */ - 34*MUL, /* 8: Privilege Violation */ - 34*MUL, /* 9: Trace */ - 4*MUL, /* 10: 1010 */ - 4*MUL, /* 11: 1111 */ - 4*MUL, /* 12: RESERVED */ - 4*MUL, /* 13: Coprocessor Protocol Violation (unemulated) */ - 4*MUL, /* 14: Format Error */ - 44*MUL, /* 15: Uninitialized Interrupt */ - 4*MUL, /* 16: RESERVED */ - 4*MUL, /* 17: RESERVED */ - 4*MUL, /* 18: RESERVED */ - 4*MUL, /* 19: RESERVED */ - 4*MUL, /* 20: RESERVED */ - 4*MUL, /* 21: RESERVED */ - 4*MUL, /* 22: RESERVED */ - 4*MUL, /* 23: RESERVED */ - 44*MUL, /* 24: Spurious Interrupt */ - 54*MUL, /* 25: Level 1 Interrupt Autovector */ - 54*MUL, /* 26: Level 2 Interrupt Autovector */ - 54*MUL, /* 27: Level 3 Interrupt Autovector */ - 54*MUL, /* 28: Level 4 Interrupt Autovector */ - 54*MUL, /* 29: Level 5 Interrupt Autovector */ - 54*MUL, /* 30: Level 6 Interrupt Autovector */ - 54*MUL, /* 31: Level 7 Interrupt Autovector */ - 34*MUL, /* 32: TRAP #0 -- ASG: chanaged from 38 */ - 34*MUL, /* 33: TRAP #1 */ - 34*MUL, /* 34: TRAP #2 */ - 34*MUL, /* 35: TRAP #3 */ - 34*MUL, /* 36: TRAP #4 */ - 34*MUL, /* 37: TRAP #5 */ - 34*MUL, /* 38: TRAP #6 */ - 34*MUL, /* 39: TRAP #7 */ - 34*MUL, /* 40: TRAP #8 */ - 34*MUL, /* 41: TRAP #9 */ - 34*MUL, /* 42: TRAP #10 */ - 34*MUL, /* 43: TRAP #11 */ - 34*MUL, /* 44: TRAP #12 */ - 34*MUL, /* 45: TRAP #13 */ - 34*MUL, /* 46: TRAP #14 */ - 34*MUL, /* 47: TRAP #15 */ - 4*MUL, /* 48: FP Branch or Set on Unknown Condition (unemulated) */ - 4*MUL, /* 49: FP Inexact Result (unemulated) */ - 4*MUL, /* 50: FP Divide by Zero (unemulated) */ - 4*MUL, /* 51: FP Underflow (unemulated) */ - 4*MUL, /* 52: FP Operand Error (unemulated) */ - 4*MUL, /* 53: FP Overflow (unemulated) */ - 4*MUL, /* 54: FP Signaling NAN (unemulated) */ - 4*MUL, /* 55: FP Unimplemented Data Type (unemulated) */ - 4*MUL, /* 56: MMU Configuration Error (unemulated) */ - 4*MUL, /* 57: MMU Illegal Operation Error (unemulated) */ - 4*MUL, /* 58: MMU Access Level Violation Error (unemulated) */ - 4*MUL, /* 59: RESERVED */ - 4*MUL, /* 60: RESERVED */ - 4*MUL, /* 61: RESERVED */ - 4*MUL, /* 62: RESERVED */ - 4*MUL, /* 63: RESERVED */ - /* 64-255: User Defined */ - 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, - 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, - 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, - 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, - 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, - 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL -}; - -/* Read data immediately after the program counter */ -INLINE uint m68ki_read_imm_16(void); -INLINE uint m68ki_read_imm_32(void); - -/* Read from the current address space */ -INLINE uint m68ki_read_8(uint address); -INLINE uint m68ki_read_16(uint address); -INLINE uint m68ki_read_32(uint address); - -/* Write to the current data space */ -INLINE void m68ki_write_8(uint address, uint value); -INLINE void m68ki_write_16(uint address, uint value); -INLINE void m68ki_write_32(uint address, uint value); - -/* Indexed and PC-relative ea fetching */ -INLINE uint m68ki_get_ea_pcdi(void); -INLINE uint m68ki_get_ea_pcix(void); -INLINE uint m68ki_get_ea_ix(uint An); - -/* Operand fetching */ -INLINE uint OPER_AY_AI_8(void); -INLINE uint OPER_AY_AI_16(void); -INLINE uint OPER_AY_AI_32(void); -INLINE uint OPER_AY_PI_8(void); -INLINE uint OPER_AY_PI_16(void); -INLINE uint OPER_AY_PI_32(void); -INLINE uint OPER_AY_PD_8(void); -INLINE uint OPER_AY_PD_16(void); -INLINE uint OPER_AY_PD_32(void); -INLINE uint OPER_AY_DI_8(void); -INLINE uint OPER_AY_DI_16(void); -INLINE uint OPER_AY_DI_32(void); -INLINE uint OPER_AY_IX_8(void); -INLINE uint OPER_AY_IX_16(void); -INLINE uint OPER_AY_IX_32(void); - -INLINE uint OPER_AX_AI_8(void); -INLINE uint OPER_AX_AI_16(void); -INLINE uint OPER_AX_AI_32(void); -INLINE uint OPER_AX_PI_8(void); -INLINE uint OPER_AX_PI_16(void); -INLINE uint OPER_AX_PI_32(void); -INLINE uint OPER_AX_PD_8(void); -INLINE uint OPER_AX_PD_16(void); -INLINE uint OPER_AX_PD_32(void); -INLINE uint OPER_AX_DI_8(void); -INLINE uint OPER_AX_DI_16(void); -INLINE uint OPER_AX_DI_32(void); -INLINE uint OPER_AX_IX_8(void); -INLINE uint OPER_AX_IX_16(void); -INLINE uint OPER_AX_IX_32(void); - -INLINE uint OPER_A7_PI_8(void); -INLINE uint OPER_A7_PD_8(void); - -INLINE uint OPER_AW_8(void); -INLINE uint OPER_AW_16(void); -INLINE uint OPER_AW_32(void); -INLINE uint OPER_AL_8(void); -INLINE uint OPER_AL_16(void); -INLINE uint OPER_AL_32(void); -INLINE uint OPER_PCDI_8(void); -INLINE uint OPER_PCDI_16(void); -INLINE uint OPER_PCDI_32(void); -INLINE uint OPER_PCIX_8(void); -INLINE uint OPER_PCIX_16(void); -INLINE uint OPER_PCIX_32(void); - -/* Stack operations */ -INLINE void m68ki_push_16(uint value); -INLINE void m68ki_push_32(uint value); -INLINE uint m68ki_pull_16(void); -INLINE uint m68ki_pull_32(void); - -/* Program flow operations */ -INLINE void m68ki_jump(uint new_pc); -INLINE void m68ki_jump_vector(uint vector); -INLINE void m68ki_branch_8(uint offset); -INLINE void m68ki_branch_16(uint offset); -INLINE void m68ki_branch_32(uint offset); - -/* Status register operations. */ -INLINE void m68ki_set_s_flag(uint value); /* Only bit 2 of value should be set (i.e. 4 or 0) */ -INLINE void m68ki_set_ccr(uint value); /* set the condition code register */ -INLINE void m68ki_set_sr(uint value); /* set the status register */ - -/* Exception processing */ -INLINE uint m68ki_init_exception(void); /* Initial exception processing */ -INLINE void m68ki_stack_frame_3word(uint pc, uint sr); /* Stack various frame types */ -#if M68K_EMULATE_ADDRESS_ERROR -INLINE void m68ki_stack_frame_buserr(uint sr); -#endif -INLINE void m68ki_exception_trap(uint vector); -INLINE void m68ki_exception_trapN(uint vector); -#if M68K_EMULATE_TRACE -INLINE void m68ki_exception_trace(void); -#endif -static void m68ki_exception_privilege_violation(void); /* do not inline in order to reduce function size and allow inlining of read/write functions by the compile */ -INLINE void m68ki_exception_1010(void); -INLINE void m68ki_exception_1111(void); -INLINE void m68ki_exception_illegal(void); -#if M68K_EMULATE_ADDRESS_ERROR -INLINE void m68ki_exception_address_error(void); -#endif -INLINE void m68ki_exception_interrupt(uint int_level); -INLINE void m68ki_check_interrupts(void); /* ASG: check for interrupts */ - -/* ======================================================================== */ -/* =========================== UTILITY FUNCTIONS ========================== */ -/* ======================================================================== */ - - -/* ---------------------------- Read Immediate ---------------------------- */ - -/* Handles all immediate reads, does address error check, function code setting, - * and prefetching if they are enabled in m68kconf.h - */ -INLINE uint m68ki_read_imm_16(void) -{ - m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ -#if M68K_CHECK_PC_ADDRESS_ERROR - m68ki_check_address_error(REG_PC, MODE_READ, FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ -#endif -#if M68K_EMULATE_PREFETCH - if(MASK_OUT_BELOW_2(REG_PC) != CPU_PREF_ADDR) - { - CPU_PREF_ADDR = MASK_OUT_BELOW_2(REG_PC); - CPU_PREF_DATA = m68k_read_immediate_32(CPU_PREF_ADDR); - } - REG_PC += 2; - return MASK_OUT_ABOVE_16(CPU_PREF_DATA >> ((2-((REG_PC-2)&2))<<3)); -#else - uint pc = REG_PC; - REG_PC += 2; - return m68k_read_immediate_16(pc); -#endif /* M68K_EMULATE_PREFETCH */ -} - -INLINE uint m68ki_read_imm_32(void) -{ -#if M68K_EMULATE_PREFETCH - uint temp_val; - - m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ -#if M68K_CHECK_PC_ADDRESS_ERROR - m68ki_check_address_error(REG_PC, MODE_READ, FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ -#endif - if(MASK_OUT_BELOW_2(REG_PC) != CPU_PREF_ADDR) - { - CPU_PREF_ADDR = MASK_OUT_BELOW_2(REG_PC); - CPU_PREF_DATA = m68k_read_immediate_32(CPU_PREF_ADDR); - } - temp_val = CPU_PREF_DATA; - REG_PC += 2; - if(MASK_OUT_BELOW_2(REG_PC) != CPU_PREF_ADDR) - { - CPU_PREF_ADDR = MASK_OUT_BELOW_2(REG_PC); - CPU_PREF_DATA = m68k_read_immediate_32(CPU_PREF_ADDR); - temp_val = MASK_OUT_ABOVE_32((temp_val << 16) | (CPU_PREF_DATA >> 16)); - } - REG_PC += 2; - - return temp_val; -#else - m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ -#if M68K_CHECK_PC_ADDRESS_ERROR - m68ki_check_address_error(REG_PC, MODE_READ, FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ -#endif - uint pc = REG_PC; - REG_PC += 4; - return m68k_read_immediate_32(pc); -#endif /* M68K_EMULATE_PREFETCH */ -} - - - -/* ------------------------- Top level read/write ------------------------- */ - -/* Handles all memory accesses (except for immediate reads if they are - * configured to use separate functions in m68kconf.h). - * All memory accesses must go through these top level functions. - * These functions will also check for address error and set the function - * code if they are enabled in m68kconf.h. - */ -INLINE uint m68ki_read_8(uint address) -{ - cpu_memory_map *temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; - uint val; - - m68ki_set_fc(FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ - - if (temp->read8) val = (*temp->read8)(ADDRESS_68K(address)); - else val = READ_BYTE(temp->base, (address) & 0xffff); - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_M68K_R, 1, address, val); -#endif - - return val; -} - -INLINE uint m68ki_read_16(uint address) -{ - cpu_memory_map *temp; - uint val; - - m68ki_set_fc(FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ - m68ki_check_address_error(address, MODE_READ, FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ - - temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; - if (temp->read16) val = (*temp->read16)(ADDRESS_68K(address)); - else val = *(uint16 *)(temp->base + ((address) & 0xffff)); - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_M68K_R, 2, address, val); -#endif - - return val; -} - -INLINE uint m68ki_read_32(uint address) -{ - cpu_memory_map *temp; - uint val; - - m68ki_set_fc(FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ - m68ki_check_address_error(address, MODE_READ, FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ - - temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; - if (temp->read16) val = ((*temp->read16)(ADDRESS_68K(address)) << 16) | ((*temp->read16)(ADDRESS_68K(address + 2))); - else val = m68k_read_immediate_32(address); - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_M68K_R, 4, address, val); -#endif - - return val; -} - -INLINE void m68ki_write_8(uint address, uint value) -{ - cpu_memory_map *temp; - - m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_M68K_W, 1, address, value); -#endif - - temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; - if (temp->write8) (*temp->write8)(ADDRESS_68K(address),value); - else WRITE_BYTE(temp->base, (address) & 0xffff, value); -} - -INLINE void m68ki_write_16(uint address, uint value) -{ - cpu_memory_map *temp; - - m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ - m68ki_check_address_error(address, MODE_WRITE, FLAG_S | FUNCTION_CODE_USER_DATA); /* auto-disable (see m68kcpu.h) */ - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_M68K_W, 2, address, value); -#endif - - temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; - if (temp->write16) (*temp->write16)(ADDRESS_68K(address),value); - else *(uint16 *)(temp->base + ((address) & 0xffff)) = value; -} - -INLINE void m68ki_write_32(uint address, uint value) -{ - cpu_memory_map *temp; - - m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ - m68ki_check_address_error(address, MODE_WRITE, FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_M68K_W, 4, address, value); -#endif - - temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; - if (temp->write16) (*temp->write16)(ADDRESS_68K(address),value>>16); - else *(uint16 *)(temp->base + ((address) & 0xffff)) = value >> 16; - - temp = &m68ki_cpu.memory_map[((address + 2)>>16)&0xff]; - if (temp->write16) (*temp->write16)(ADDRESS_68K(address+2),value&0xffff); - else *(uint16 *)(temp->base + ((address + 2) & 0xffff)) = value; -} - - -/* --------------------- Effective Address Calculation -------------------- */ - -/* The program counter relative addressing modes cause operands to be - * retrieved from program space, not data space. - */ -INLINE uint m68ki_get_ea_pcdi(void) -{ - uint old_pc = REG_PC; - m68ki_use_program_space() /* auto-disable */ - return old_pc + MAKE_INT_16(m68ki_read_imm_16()); -} - - -INLINE uint m68ki_get_ea_pcix(void) -{ - m68ki_use_program_space() /* auto-disable */ - return m68ki_get_ea_ix(REG_PC); -} - -/* Indexed addressing modes are encoded as follows: - * - * Base instruction format: - * F E D C B A 9 8 7 6 | 5 4 3 | 2 1 0 - * x x x x x x x x x x | 1 1 0 | BASE REGISTER (An) - * - * Base instruction format for destination EA in move instructions: - * F E D C | B A 9 | 8 7 6 | 5 4 3 2 1 0 - * x x x x | BASE REG | 1 1 0 | X X X X X X (An) - * - * Brief extension format: - * F | E D C | B | A 9 | 8 | 7 6 5 4 3 2 1 0 - * D/A | REGISTER | W/L | SCALE | 0 | DISPLACEMENT - * - * Full extension format: - * F E D C B A 9 8 7 6 5 4 3 2 1 0 - * D/A | REGISTER | W/L | SCALE | 1 | BS | IS | BD SIZE | 0 | I/IS - * BASE DISPLACEMENT (0, 16, 32 bit) (bd) - * OUTER DISPLACEMENT (0, 16, 32 bit) (od) - * - * D/A: 0 = Dn, 1 = An (Xn) - * W/L: 0 = W (sign extend), 1 = L (.SIZE) - * SCALE: 00=1, 01=2, 10=4, 11=8 (*SCALE) - * BS: 0=add base reg, 1=suppress base reg (An suppressed) - * IS: 0=add index, 1=suppress index (Xn suppressed) - * BD SIZE: 00=reserved, 01=NULL, 10=Word, 11=Long (size of bd) - * - * IS I/IS Operation - * 0 000 No Memory Indirect - * 0 001 indir prex with null outer - * 0 010 indir prex with word outer - * 0 011 indir prex with long outer - * 0 100 reserved - * 0 101 indir postx with null outer - * 0 110 indir postx with word outer - * 0 111 indir postx with long outer - * 1 000 no memory indirect - * 1 001 mem indir with null outer - * 1 010 mem indir with word outer - * 1 011 mem indir with long outer - * 1 100-111 reserved - */ -INLINE uint m68ki_get_ea_ix(uint An) -{ - /* An = base register */ - uint extension = m68ki_read_imm_16(); - - uint Xn = 0; /* Index register */ - - /* Calculate index */ - Xn = REG_DA[extension>>12]; /* Xn */ - if(!BIT_B(extension)) /* W/L */ - Xn = MAKE_INT_16(Xn); - - /* Add base register and displacement and return */ - return An + Xn + MAKE_INT_8(extension); -} - - -/* Fetch operands */ -INLINE uint OPER_AY_AI_8(void) {uint ea = EA_AY_AI_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AY_AI_16(void) {uint ea = EA_AY_AI_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AY_AI_32(void) {uint ea = EA_AY_AI_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AY_PI_8(void) {uint ea = EA_AY_PI_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AY_PI_16(void) {uint ea = EA_AY_PI_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AY_PI_32(void) {uint ea = EA_AY_PI_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AY_PD_8(void) {uint ea = EA_AY_PD_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AY_PD_16(void) {uint ea = EA_AY_PD_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AY_PD_32(void) {uint ea = EA_AY_PD_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AY_DI_8(void) {uint ea = EA_AY_DI_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AY_DI_16(void) {uint ea = EA_AY_DI_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AY_DI_32(void) {uint ea = EA_AY_DI_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AY_IX_8(void) {uint ea = EA_AY_IX_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AY_IX_16(void) {uint ea = EA_AY_IX_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AY_IX_32(void) {uint ea = EA_AY_IX_32(); return m68ki_read_32(ea);} - -INLINE uint OPER_AX_AI_8(void) {uint ea = EA_AX_AI_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AX_AI_16(void) {uint ea = EA_AX_AI_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AX_AI_32(void) {uint ea = EA_AX_AI_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AX_PI_8(void) {uint ea = EA_AX_PI_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AX_PI_16(void) {uint ea = EA_AX_PI_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AX_PI_32(void) {uint ea = EA_AX_PI_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AX_PD_8(void) {uint ea = EA_AX_PD_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AX_PD_16(void) {uint ea = EA_AX_PD_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AX_PD_32(void) {uint ea = EA_AX_PD_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AX_DI_8(void) {uint ea = EA_AX_DI_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AX_DI_16(void) {uint ea = EA_AX_DI_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AX_DI_32(void) {uint ea = EA_AX_DI_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AX_IX_8(void) {uint ea = EA_AX_IX_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AX_IX_16(void) {uint ea = EA_AX_IX_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AX_IX_32(void) {uint ea = EA_AX_IX_32(); return m68ki_read_32(ea);} - -INLINE uint OPER_A7_PI_8(void) {uint ea = EA_A7_PI_8(); return m68ki_read_8(ea); } -INLINE uint OPER_A7_PD_8(void) {uint ea = EA_A7_PD_8(); return m68ki_read_8(ea); } - -INLINE uint OPER_AW_8(void) {uint ea = EA_AW_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AW_16(void) {uint ea = EA_AW_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AW_32(void) {uint ea = EA_AW_32(); return m68ki_read_32(ea);} -INLINE uint OPER_AL_8(void) {uint ea = EA_AL_8(); return m68ki_read_8(ea); } -INLINE uint OPER_AL_16(void) {uint ea = EA_AL_16(); return m68ki_read_16(ea);} -INLINE uint OPER_AL_32(void) {uint ea = EA_AL_32(); return m68ki_read_32(ea);} -INLINE uint OPER_PCDI_8(void) {uint ea = EA_PCDI_8(); return m68ki_read_pcrel_8(ea); } -INLINE uint OPER_PCDI_16(void) {uint ea = EA_PCDI_16(); return m68ki_read_pcrel_16(ea);} -INLINE uint OPER_PCDI_32(void) {uint ea = EA_PCDI_32(); return m68ki_read_pcrel_32(ea);} -INLINE uint OPER_PCIX_8(void) {uint ea = EA_PCIX_8(); return m68ki_read_pcrel_8(ea); } -INLINE uint OPER_PCIX_16(void) {uint ea = EA_PCIX_16(); return m68ki_read_pcrel_16(ea);} -INLINE uint OPER_PCIX_32(void) {uint ea = EA_PCIX_32(); return m68ki_read_pcrel_32(ea);} - - - -/* ---------------------------- Stack Functions --------------------------- */ - -/* Push/pull data from the stack */ -INLINE void m68ki_push_16(uint value) -{ - REG_SP = MASK_OUT_ABOVE_32(REG_SP - 2); - m68ki_write_16(REG_SP, value); -} - -INLINE void m68ki_push_32(uint value) -{ - REG_SP = MASK_OUT_ABOVE_32(REG_SP - 4); - m68ki_write_32(REG_SP, value); -} - -INLINE uint m68ki_pull_16(void) -{ - uint sp = REG_SP; - REG_SP = MASK_OUT_ABOVE_32(REG_SP + 2); - return m68ki_read_16(sp); -} - -INLINE uint m68ki_pull_32(void) -{ - uint sp = REG_SP; - REG_SP = MASK_OUT_ABOVE_32(REG_SP + 4); - return m68ki_read_32(sp); -} - - - -/* ----------------------------- Program Flow ----------------------------- */ - -/* Jump to a new program location or vector. - * These functions will also call the pc_changed callback if it was enabled - * in m68kconf.h. - */ -INLINE void m68ki_jump(uint new_pc) -{ - REG_PC = new_pc; -} - -INLINE void m68ki_jump_vector(uint vector) -{ - m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ - REG_PC = m68ki_read_32(vector<<2); -} - - -/* Branch to a new memory location. - * The 32-bit branch will call pc_changed if it was enabled in m68kconf.h. - * So far I've found no problems with not calling pc_changed for 8 or 16 - * bit branches. - */ -INLINE void m68ki_branch_8(uint offset) -{ - REG_PC += MAKE_INT_8(offset); -} - -INLINE void m68ki_branch_16(uint offset) -{ - REG_PC += MAKE_INT_16(offset); -} - -INLINE void m68ki_branch_32(uint offset) -{ - REG_PC += offset; -} - - - -/* ---------------------------- Status Register --------------------------- */ - -/* Set the S flag and change the active stack pointer. - * Note that value MUST be 4 or 0. - */ -INLINE void m68ki_set_s_flag(uint value) -{ - /* Backup the old stack pointer */ - REG_SP_BASE[FLAG_S] = REG_SP; - /* Set the S flag */ - FLAG_S = value; - /* Set the new stack pointer */ - REG_SP = REG_SP_BASE[FLAG_S]; -} - - -/* Set the condition code register */ -INLINE void m68ki_set_ccr(uint value) -{ - FLAG_X = BIT_4(value) << 4; - FLAG_N = BIT_3(value) << 4; - FLAG_Z = !BIT_2(value); - FLAG_V = BIT_1(value) << 6; - FLAG_C = BIT_0(value) << 8; -} - - -/* Set the status register and check for interrupts */ -INLINE void m68ki_set_sr(uint value) -{ - /* Set the status register */ - FLAG_T1 = BIT_F(value); - FLAG_INT_MASK = value & 0x0700; - m68ki_set_ccr(value); - m68ki_set_s_flag((value >> 11) & 4); - - /* Check current IRQ status */ - m68ki_check_interrupts(); -} - - -/* ------------------------- Exception Processing ------------------------- */ - -/* Initiate exception processing */ -INLINE uint m68ki_init_exception(void) -{ - /* Save the old status register */ - uint sr = m68ki_get_sr(); - - /* Turn off trace flag, clear pending traces */ - FLAG_T1 = 0; - m68ki_clear_trace() - - /* Enter supervisor mode */ - m68ki_set_s_flag(SFLAG_SET); - - return sr; -} - -/* 3 word stack frame (68000 only) */ -INLINE void m68ki_stack_frame_3word(uint pc, uint sr) -{ - m68ki_push_32(pc); - m68ki_push_16(sr); -} - -#if M68K_EMULATE_ADDRESS_ERROR -/* Bus error stack frame (68000 only). - */ -INLINE void m68ki_stack_frame_buserr(uint sr) -{ - m68ki_push_32(REG_PC); - m68ki_push_16(sr); - m68ki_push_16(REG_IR); - m68ki_push_32(m68ki_cpu.aerr_address); /* access address */ - /* 0 0 0 0 0 0 0 0 0 0 0 R/W I/N FC - * R/W 0 = write, 1 = read - * I/N 0 = instruction, 1 = not - * FC 3-bit function code - */ - m68ki_push_16(m68ki_cpu.aerr_write_mode | CPU_INSTR_MODE | m68ki_cpu.aerr_fc); -} -#endif - -/* Used for Group 2 exceptions. - */ -INLINE void m68ki_exception_trap(uint vector) -{ - uint sr = m68ki_init_exception(); - - m68ki_stack_frame_3word(REG_PC, sr); - - m68ki_jump_vector(vector); - - /* Use up some clock cycles */ - USE_CYCLES(CYC_EXCEPTION[vector]); -} - -/* Trap#n stacks a 0 frame but behaves like group2 otherwise */ -INLINE void m68ki_exception_trapN(uint vector) -{ - uint sr = m68ki_init_exception(); - m68ki_stack_frame_3word(REG_PC, sr); - m68ki_jump_vector(vector); - - /* Use up some clock cycles */ - USE_CYCLES(CYC_EXCEPTION[vector]); -} - -#if M68K_EMULATE_TRACE -/* Exception for trace mode */ -INLINE void m68ki_exception_trace(void) -{ - uint sr = m68ki_init_exception(); - - #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON - CPU_INSTR_MODE = INSTRUCTION_NO; - #endif /* M68K_EMULATE_ADDRESS_ERROR */ - - m68ki_stack_frame_3word(REG_PC, sr); - m68ki_jump_vector(EXCEPTION_TRACE); - - /* Trace nullifies a STOP instruction */ - CPU_STOPPED &= ~STOP_LEVEL_STOP; - - /* Use up some clock cycles */ - USE_CYCLES(CYC_EXCEPTION[EXCEPTION_TRACE]); -} -#endif - -/* Exception for privilege violation */ -static void m68ki_exception_privilege_violation(void) -{ - uint sr = m68ki_init_exception(); - - #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON - CPU_INSTR_MODE = INSTRUCTION_NO; - #endif /* M68K_EMULATE_ADDRESS_ERROR */ - - m68ki_stack_frame_3word(REG_PC-2, sr); - m68ki_jump_vector(EXCEPTION_PRIVILEGE_VIOLATION); - - /* Use up some clock cycles and undo the instruction's cycles */ - USE_CYCLES(CYC_EXCEPTION[EXCEPTION_PRIVILEGE_VIOLATION] - CYC_INSTRUCTION[REG_IR]); -} - -/* Exception for A-Line instructions */ -INLINE void m68ki_exception_1010(void) -{ - uint sr = m68ki_init_exception(); - m68ki_stack_frame_3word(REG_PC-2, sr); - m68ki_jump_vector(EXCEPTION_1010); - - /* Use up some clock cycles and undo the instruction's cycles */ - USE_CYCLES(CYC_EXCEPTION[EXCEPTION_1010] - CYC_INSTRUCTION[REG_IR]); -} - -/* Exception for F-Line instructions */ -INLINE void m68ki_exception_1111(void) -{ - uint sr = m68ki_init_exception(); - m68ki_stack_frame_3word(REG_PC-2, sr); - m68ki_jump_vector(EXCEPTION_1111); - - /* Use up some clock cycles and undo the instruction's cycles */ - USE_CYCLES(CYC_EXCEPTION[EXCEPTION_1111] - CYC_INSTRUCTION[REG_IR]); -} - -/* Exception for illegal instructions */ -INLINE void m68ki_exception_illegal(void) -{ - uint sr = m68ki_init_exception(); - - #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON - CPU_INSTR_MODE = INSTRUCTION_NO; - #endif /* M68K_EMULATE_ADDRESS_ERROR */ - - m68ki_stack_frame_3word(REG_PC-2, sr); - m68ki_jump_vector(EXCEPTION_ILLEGAL_INSTRUCTION); - - /* Use up some clock cycles and undo the instruction's cycles */ - USE_CYCLES(CYC_EXCEPTION[EXCEPTION_ILLEGAL_INSTRUCTION] - CYC_INSTRUCTION[REG_IR]); -} - - -#if M68K_EMULATE_ADDRESS_ERROR -/* Exception for address error */ -INLINE void m68ki_exception_address_error(void) -{ - uint sr = m68ki_init_exception(); - - /* If we were processing a bus error, address error, or reset, - * this is a catastrophic failure. - * Halt the CPU - */ - if(CPU_RUN_MODE == RUN_MODE_BERR_AERR_RESET) - { - CPU_STOPPED = STOP_LEVEL_HALT; - SET_CYCLES(m68ki_cpu.cycle_end - CYC_INSTRUCTION[REG_IR]); - return; - } - CPU_RUN_MODE = RUN_MODE_BERR_AERR_RESET; - - /* Note: This is implemented for 68000 only! */ - m68ki_stack_frame_buserr(sr); - - m68ki_jump_vector(EXCEPTION_ADDRESS_ERROR); - - /* Use up some clock cycles and undo the instruction's cycles */ - USE_CYCLES(CYC_EXCEPTION[EXCEPTION_ADDRESS_ERROR] - CYC_INSTRUCTION[REG_IR]); -} -#endif - -/* Service an interrupt request and start exception processing */ -INLINE void m68ki_exception_interrupt(uint int_level) -{ - uint vector, sr, new_pc; - - #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON - CPU_INSTR_MODE = INSTRUCTION_NO; - #endif /* M68K_EMULATE_ADDRESS_ERROR */ - - /* Turn off the stopped state */ - CPU_STOPPED &= STOP_LEVEL_HALT; - - /* If we are halted, don't do anything */ - if(CPU_STOPPED) - return; - - /* Always use the autovectors. */ - vector = EXCEPTION_INTERRUPT_AUTOVECTOR+int_level; - - /* Start exception processing */ - sr = m68ki_init_exception(); - - /* Set the interrupt mask to the level of the one being serviced */ - FLAG_INT_MASK = int_level<<8; - - /* Acknowledge the interrupt */ - m68ki_int_ack(int_level); - - /* Get the new PC */ - m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ - new_pc = m68ki_read_32(vector<<2); - - /* If vector is uninitialized, call the uninitialized interrupt vector */ - if(new_pc == 0) - new_pc = m68ki_read_32((EXCEPTION_UNINITIALIZED_INTERRUPT<<2)); - - /* Generate a stack frame */ - m68ki_stack_frame_3word(REG_PC, sr); - - m68ki_jump(new_pc); - - /* Update cycle count now */ - USE_CYCLES(CYC_EXCEPTION[vector]); -} - -/* ASG: Check for interrupts */ -INLINE void m68ki_check_interrupts(void) -{ - if(CPU_INT_LEVEL > FLAG_INT_MASK) - m68ki_exception_interrupt(CPU_INT_LEVEL>>8); -} - - -/* ======================================================================== */ -/* ============================== END OF FILE ============================= */ -/* ======================================================================== */ - -#endif /* M68KCPU__HEADER */ +#ifndef M68KCPU__HEADER +#define M68KCPU__HEADER + +/* ======================================================================== */ +/* GENERIC 68K CORE */ +/* ======================================================================== */ + +#include +#include +#include + +#if M68K_EMULATE_ADDRESS_ERROR +#include +#endif /* M68K_EMULATE_ADDRESS_ERROR */ + +#include "m68k.h" + + +/* ======================================================================== */ +/* ============================ GENERAL DEFINES =========================== */ +/* ======================================================================== */ + +/* Exception Vectors handled by emulation */ +#define EXCEPTION_RESET 0 +#define EXCEPTION_BUS_ERROR 2 /* This one is not emulated! */ +#define EXCEPTION_ADDRESS_ERROR 3 /* This one is partially emulated (doesn't stack a proper frame yet) */ +#define EXCEPTION_ILLEGAL_INSTRUCTION 4 +#define EXCEPTION_ZERO_DIVIDE 5 +#define EXCEPTION_CHK 6 +#define EXCEPTION_TRAPV 7 +#define EXCEPTION_PRIVILEGE_VIOLATION 8 +#define EXCEPTION_TRACE 9 +#define EXCEPTION_1010 10 +#define EXCEPTION_1111 11 +#define EXCEPTION_FORMAT_ERROR 14 +#define EXCEPTION_UNINITIALIZED_INTERRUPT 15 +#define EXCEPTION_SPURIOUS_INTERRUPT 24 +#define EXCEPTION_INTERRUPT_AUTOVECTOR 24 +#define EXCEPTION_TRAP_BASE 32 + +/* Function codes set by CPU during data/address bus activity */ +#define FUNCTION_CODE_USER_DATA 1 +#define FUNCTION_CODE_USER_PROGRAM 2 +#define FUNCTION_CODE_SUPERVISOR_DATA 5 +#define FUNCTION_CODE_SUPERVISOR_PROGRAM 6 +#define FUNCTION_CODE_CPU_SPACE 7 + +/* Different ways to stop the CPU */ +#define STOP_LEVEL_STOP 1 +#define STOP_LEVEL_HALT 2 + +/* Used for 68000 address error processing */ +#if M68K_EMULATE_ADDRESS_ERROR +#define INSTRUCTION_YES 0 +#define INSTRUCTION_NO 0x08 +#define MODE_READ 0x10 +#define MODE_WRITE 0 + +#define RUN_MODE_NORMAL 0 +#define RUN_MODE_BERR_AERR_RESET 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +/* ======================================================================== */ +/* ================================ MACROS ================================ */ +/* ======================================================================== */ + + +/* ---------------------------- General Macros ---------------------------- */ + +/* Bit Isolation Macros */ +#define BIT_0(A) ((A) & 0x00000001) +#define BIT_1(A) ((A) & 0x00000002) +#define BIT_2(A) ((A) & 0x00000004) +#define BIT_3(A) ((A) & 0x00000008) +#define BIT_4(A) ((A) & 0x00000010) +#define BIT_5(A) ((A) & 0x00000020) +#define BIT_6(A) ((A) & 0x00000040) +#define BIT_7(A) ((A) & 0x00000080) +#define BIT_8(A) ((A) & 0x00000100) +#define BIT_9(A) ((A) & 0x00000200) +#define BIT_A(A) ((A) & 0x00000400) +#define BIT_B(A) ((A) & 0x00000800) +#define BIT_C(A) ((A) & 0x00001000) +#define BIT_D(A) ((A) & 0x00002000) +#define BIT_E(A) ((A) & 0x00004000) +#define BIT_F(A) ((A) & 0x00008000) +#define BIT_10(A) ((A) & 0x00010000) +#define BIT_11(A) ((A) & 0x00020000) +#define BIT_12(A) ((A) & 0x00040000) +#define BIT_13(A) ((A) & 0x00080000) +#define BIT_14(A) ((A) & 0x00100000) +#define BIT_15(A) ((A) & 0x00200000) +#define BIT_16(A) ((A) & 0x00400000) +#define BIT_17(A) ((A) & 0x00800000) +#define BIT_18(A) ((A) & 0x01000000) +#define BIT_19(A) ((A) & 0x02000000) +#define BIT_1A(A) ((A) & 0x04000000) +#define BIT_1B(A) ((A) & 0x08000000) +#define BIT_1C(A) ((A) & 0x10000000) +#define BIT_1D(A) ((A) & 0x20000000) +#define BIT_1E(A) ((A) & 0x40000000) +#define BIT_1F(A) ((A) & 0x80000000) + +/* Get the most significant bit for specific sizes */ +#define GET_MSB_8(A) ((A) & 0x80) +#define GET_MSB_9(A) ((A) & 0x100) +#define GET_MSB_16(A) ((A) & 0x8000) +#define GET_MSB_17(A) ((A) & 0x10000) +#define GET_MSB_32(A) ((A) & 0x80000000) +#if M68K_USE_64_BIT +#define GET_MSB_33(A) ((A) & 0x100000000) +#endif /* M68K_USE_64_BIT */ + +/* Isolate nibbles */ +#define LOW_NIBBLE(A) ((A) & 0x0f) +#define HIGH_NIBBLE(A) ((A) & 0xf0) + +/* These are used to isolate 8, 16, and 32 bit sizes */ +#define MASK_OUT_ABOVE_2(A) ((A) & 3) +#define MASK_OUT_ABOVE_8(A) ((A) & 0xff) +#define MASK_OUT_ABOVE_16(A) ((A) & 0xffff) +#define MASK_OUT_BELOW_2(A) ((A) & ~3) +#define MASK_OUT_BELOW_8(A) ((A) & ~0xff) +#define MASK_OUT_BELOW_16(A) ((A) & ~0xffff) + +/* No need to mask if we are 32 bit */ +#if M68K_INT_GT_32_BIT || M68K_USE_64_BIT + #define MASK_OUT_ABOVE_32(A) ((A) & 0xffffffff) + #define MASK_OUT_BELOW_32(A) ((A) & ~0xffffffff) +#else + #define MASK_OUT_ABOVE_32(A) (A) + #define MASK_OUT_BELOW_32(A) 0 +#endif /* M68K_INT_GT_32_BIT || M68K_USE_64_BIT */ + +/* Simulate address lines of 68k family */ +#define ADDRESS_68K(A) ((A)&CPU_ADDRESS_MASK) + + +/* Shift & Rotate Macros. */ +#define LSL(A, C) ((A) << (C)) +#define LSR(A, C) ((A) >> (C)) + +/* Some > 32-bit optimizations */ +#if M68K_INT_GT_32_BIT + /* Shift left and right */ + #define LSR_32(A, C) ((A) >> (C)) + #define LSL_32(A, C) ((A) << (C)) +#else + /* We have to do this because the morons at ANSI decided that shifts + * by >= data size are undefined. + */ + #define LSR_32(A, C) ((C) < 32 ? (A) >> (C) : 0) + #define LSL_32(A, C) ((C) < 32 ? (A) << (C) : 0) +#endif /* M68K_INT_GT_32_BIT */ + +#if M68K_USE_64_BIT + #define LSL_32_64(A, C) ((A) << (C)) + #define LSR_32_64(A, C) ((A) >> (C)) + #define ROL_33_64(A, C) (LSL_32_64(A, C) | LSR_32_64(A, 33-(C))) + #define ROR_33_64(A, C) (LSR_32_64(A, C) | LSL_32_64(A, 33-(C))) +#endif /* M68K_USE_64_BIT */ + +#define ROL_8(A, C) MASK_OUT_ABOVE_8(LSL(A, C) | LSR(A, 8-(C))) +#define ROL_9(A, C) (LSL(A, C) | LSR(A, 9-(C))) +#define ROL_16(A, C) MASK_OUT_ABOVE_16(LSL(A, C) | LSR(A, 16-(C))) +#define ROL_17(A, C) (LSL(A, C) | LSR(A, 17-(C))) +#define ROL_32(A, C) MASK_OUT_ABOVE_32(LSL_32(A, C) | LSR_32(A, 32-(C))) +#define ROL_33(A, C) (LSL_32(A, C) | LSR_32(A, 33-(C))) + +#define ROR_8(A, C) MASK_OUT_ABOVE_8(LSR(A, C) | LSL(A, 8-(C))) +#define ROR_9(A, C) (LSR(A, C) | LSL(A, 9-(C))) +#define ROR_16(A, C) MASK_OUT_ABOVE_16(LSR(A, C) | LSL(A, 16-(C))) +#define ROR_17(A, C) (LSR(A, C) | LSL(A, 17-(C))) +#define ROR_32(A, C) MASK_OUT_ABOVE_32(LSR_32(A, C) | LSL_32(A, 32-(C))) +#define ROR_33(A, C) (LSR_32(A, C) | LSL_32(A, 33-(C))) + + + +/* ------------------------------ CPU Access ------------------------------ */ + +/* Access the CPU registers */ +#define REG_DA m68ki_cpu.dar /* easy access to data and address regs */ +#define REG_D m68ki_cpu.dar +#define REG_A (m68ki_cpu.dar+8) +#define REG_PC m68ki_cpu.pc +#define REG_SP_BASE m68ki_cpu.sp +#define REG_USP m68ki_cpu.sp[0] +#define REG_ISP m68ki_cpu.sp[4] +#define REG_SP m68ki_cpu.dar[15] +#define REG_IR m68ki_cpu.ir + +#define FLAG_T1 m68ki_cpu.t1_flag +#define FLAG_S m68ki_cpu.s_flag +#define FLAG_X m68ki_cpu.x_flag +#define FLAG_N m68ki_cpu.n_flag +#define FLAG_Z m68ki_cpu.not_z_flag +#define FLAG_V m68ki_cpu.v_flag +#define FLAG_C m68ki_cpu.c_flag +#define FLAG_INT_MASK m68ki_cpu.int_mask + +#define CPU_INT_LEVEL m68ki_cpu.int_level /* ASG: changed from CPU_INTS_PENDING */ +#define CPU_STOPPED m68ki_cpu.stopped +#if M68K_EMULATE_PREFETCH +#define CPU_PREF_ADDR m68ki_cpu.pref_addr +#define CPU_PREF_DATA m68ki_cpu.pref_data +#endif +#define CPU_ADDRESS_MASK 0x00ffffff +#if M68K_EMULATE_ADDRESS_ERROR +#define CPU_INSTR_MODE m68ki_cpu.instr_mode +#define CPU_RUN_MODE m68ki_cpu.run_mode +#endif + +#define CYC_INSTRUCTION m68ki_cycles +#define CYC_EXCEPTION m68ki_exception_cycle_table +#define CYC_BCC_NOTAKE_B ( -2 * MUL) +#define CYC_BCC_NOTAKE_W ( 2 * MUL) +#define CYC_DBCC_F_NOEXP ( -2 * MUL) +#define CYC_DBCC_F_EXP ( 2 * MUL) +#define CYC_SCC_R_TRUE ( 2 * MUL) +#define CYC_MOVEM_W ( 4 * MUL) +#define CYC_MOVEM_L ( 8 * MUL) +#define CYC_SHIFT ( 2 * MUL) +#define CYC_RESET (132 * MUL) + +#if M68K_EMULATE_INT_ACK == OPT_ON +#define CALLBACK_INT_ACK m68ki_cpu.int_ack_callback +#endif +#if M68K_EMULATE_RESET == OPT_ON +#define CALLBACK_RESET_INSTR m68ki_cpu.reset_instr_callback +#endif +#if M68K_TAS_HAS_CALLBACK == OPT_ON +#define CALLBACK_TAS_INSTR m68ki_cpu.tas_instr_callback +#endif +#if M68K_EMULATE_FC == OPT_ON +#define CALLBACK_SET_FC m68ki_cpu.set_fc_callback +#endif + + +/* ----------------------------- Configuration ---------------------------- */ + +/* These defines are dependant on the configuration defines in m68kconf.h */ + +/* Enable or disable callback functions */ +#if M68K_EMULATE_INT_ACK + #if M68K_EMULATE_INT_ACK == OPT_SPECIFY_HANDLER + #define m68ki_int_ack(A) M68K_INT_ACK_CALLBACK(A); + #else + #define m68ki_int_ack(A) CALLBACK_INT_ACK(A); + #endif +#else + /* Default action is to used autovector mode, which is most common */ + #define m68ki_int_ack(A) M68K_INT_ACK_AUTOVECTOR +#endif /* M68K_EMULATE_INT_ACK */ + +#if M68K_EMULATE_RESET + #if M68K_EMULATE_RESET == OPT_SPECIFY_HANDLER + #define m68ki_output_reset() M68K_RESET_CALLBACK(); + #else + #define m68ki_output_reset() CALLBACK_RESET_INSTR(); + #endif +#else + #define m68ki_output_reset() +#endif /* M68K_EMULATE_RESET */ + +#if M68K_TAS_HAS_CALLBACK + #if M68K_TAS_HAS_CALLBACK == OPT_SPECIFY_HANDLER + #define m68ki_tas_callback() M68K_TAS_CALLBACK() + #else + #define m68ki_tas_callback() CALLBACK_TAS_INSTR() + #endif +#else + #define m68ki_tas_callback() 0 +#endif /* M68K_TAS_HAS_CALLBACK */ + + +/* Enable or disable function code emulation */ +#if M68K_EMULATE_FC + #if M68K_EMULATE_FC == OPT_SPECIFY_HANDLER + #define m68ki_set_fc(A) M68K_SET_FC_CALLBACK(A); + #else + #define m68ki_set_fc(A) CALLBACK_SET_FC(A); + #endif + #define m68ki_use_data_space() m68ki_cpu.address_space = FUNCTION_CODE_USER_DATA; + #define m68ki_use_program_space() m68ki_cpu.address_space = FUNCTION_CODE_USER_PROGRAM; + #define m68ki_get_address_space() m68ki_cpu.address_space +#else + #define m68ki_set_fc(A) + #define m68ki_use_data_space() + #define m68ki_use_program_space() + #define m68ki_get_address_space() FUNCTION_CODE_USER_DATA +#endif /* M68K_EMULATE_FC */ + + +/* Enable or disable trace emulation */ +#if M68K_EMULATE_TRACE + /* Initiates trace checking before each instruction (t1) */ + #define m68ki_trace_t1() m68ki_cpu.tracing = FLAG_T1; + /* Clear all tracing */ + #define m68ki_clear_trace() m68ki_cpu.tracing = 0; + /* Cause a trace exception if we are tracing */ + #define m68ki_exception_if_trace() if(m68ki_cpu.tracing) m68ki_exception_trace(); +#else + #define m68ki_trace_t1() + #define m68ki_clear_trace() + #define m68ki_exception_if_trace() +#endif /* M68K_EMULATE_TRACE */ + + +/* Enable or disable Address error emulation */ +#if M68K_EMULATE_ADDRESS_ERROR + #define m68ki_set_address_error_trap() \ + if(setjmp(m68ki_cpu.aerr_trap) != 0) \ + { \ + m68ki_exception_address_error(); \ + } + + #define m68ki_check_address_error(ADDR, WRITE_MODE, FC) \ + if((ADDR)&1) \ + { \ + if (m68ki_cpu.aerr_enabled) \ + { \ + m68ki_cpu.aerr_address = ADDR; \ + m68ki_cpu.aerr_write_mode = WRITE_MODE; \ + m68ki_cpu.aerr_fc = FC; \ + longjmp(m68ki_cpu.aerr_trap, 1); \ + } \ + } +#else + #define m68ki_set_address_error_trap() + #define m68ki_check_address_error(ADDR, WRITE_MODE, FC) +#endif /* M68K_ADDRESS_ERROR */ + + +/* -------------------------- EA / Operand Access ------------------------- */ + +/* + * The general instruction format follows this pattern: + * .... XXX. .... .YYY + * where XXX is register X and YYY is register Y + */ + +/* Data Register Isolation */ +#define DX (REG_D[(REG_IR >> 9) & 7]) +#define DY (REG_D[REG_IR & 7]) + +/* Address Register Isolation */ +#define AX (REG_A[(REG_IR >> 9) & 7]) +#define AY (REG_A[REG_IR & 7]) + +/* Effective Address Calculations */ +#define EA_AY_AI_8() AY /* address register indirect */ +#define EA_AY_AI_16() EA_AY_AI_8() +#define EA_AY_AI_32() EA_AY_AI_8() +#define EA_AY_PI_8() (AY++) /* postincrement (size = byte) */ +#define EA_AY_PI_16() ((AY+=2)-2) /* postincrement (size = word) */ +#define EA_AY_PI_32() ((AY+=4)-4) /* postincrement (size = long) */ +#define EA_AY_PD_8() (--AY) /* predecrement (size = byte) */ +#define EA_AY_PD_16() (AY-=2) /* predecrement (size = word) */ +#define EA_AY_PD_32() (AY-=4) /* predecrement (size = long) */ +#define EA_AY_DI_8() (AY+MAKE_INT_16(m68ki_read_imm_16())) /* displacement */ +#define EA_AY_DI_16() EA_AY_DI_8() +#define EA_AY_DI_32() EA_AY_DI_8() +#define EA_AY_IX_8() m68ki_get_ea_ix(AY) /* indirect + index */ +#define EA_AY_IX_16() EA_AY_IX_8() +#define EA_AY_IX_32() EA_AY_IX_8() + +#define EA_AX_AI_8() AX +#define EA_AX_AI_16() EA_AX_AI_8() +#define EA_AX_AI_32() EA_AX_AI_8() +#define EA_AX_PI_8() (AX++) +#define EA_AX_PI_16() ((AX+=2)-2) +#define EA_AX_PI_32() ((AX+=4)-4) +#define EA_AX_PD_8() (--AX) +#define EA_AX_PD_16() (AX-=2) +#define EA_AX_PD_32() (AX-=4) +#define EA_AX_DI_8() (AX+MAKE_INT_16(m68ki_read_imm_16())) +#define EA_AX_DI_16() EA_AX_DI_8() +#define EA_AX_DI_32() EA_AX_DI_8() +#define EA_AX_IX_8() m68ki_get_ea_ix(AX) +#define EA_AX_IX_16() EA_AX_IX_8() +#define EA_AX_IX_32() EA_AX_IX_8() + +#define EA_A7_PI_8() ((REG_A[7]+=2)-2) +#define EA_A7_PD_8() (REG_A[7]-=2) + +#define EA_AW_8() MAKE_INT_16(m68ki_read_imm_16()) /* absolute word */ +#define EA_AW_16() EA_AW_8() +#define EA_AW_32() EA_AW_8() +#define EA_AL_8() m68ki_read_imm_32() /* absolute long */ +#define EA_AL_16() EA_AL_8() +#define EA_AL_32() EA_AL_8() +#define EA_PCDI_8() m68ki_get_ea_pcdi() /* pc indirect + displacement */ +#define EA_PCDI_16() EA_PCDI_8() +#define EA_PCDI_32() EA_PCDI_8() +#define EA_PCIX_8() m68ki_get_ea_pcix() /* pc indirect + index */ +#define EA_PCIX_16() EA_PCIX_8() +#define EA_PCIX_32() EA_PCIX_8() + + +#define OPER_I_8() m68ki_read_imm_8() +#define OPER_I_16() m68ki_read_imm_16() +#define OPER_I_32() m68ki_read_imm_32() + + +/* --------------------------- Status Register ---------------------------- */ + +/* Flag Calculation Macros */ +#define CFLAG_8(A) (A) +#define CFLAG_16(A) ((A)>>8) + +#if M68K_INT_GT_32_BIT + #define CFLAG_ADD_32(S, D, R) ((R)>>24) + #define CFLAG_SUB_32(S, D, R) ((R)>>24) +#else + #define CFLAG_ADD_32(S, D, R) (((S & D) | (~R & (S | D)))>>23) + #define CFLAG_SUB_32(S, D, R) (((S & R) | (~D & (S | R)))>>23) +#endif /* M68K_INT_GT_32_BIT */ + +#define VFLAG_ADD_8(S, D, R) ((S^R) & (D^R)) +#define VFLAG_ADD_16(S, D, R) (((S^R) & (D^R))>>8) +#define VFLAG_ADD_32(S, D, R) (((S^R) & (D^R))>>24) + +#define VFLAG_SUB_8(S, D, R) ((S^D) & (R^D)) +#define VFLAG_SUB_16(S, D, R) (((S^D) & (R^D))>>8) +#define VFLAG_SUB_32(S, D, R) (((S^D) & (R^D))>>24) + +#define NFLAG_8(A) (A) +#define NFLAG_16(A) ((A)>>8) +#define NFLAG_32(A) ((A)>>24) +#define NFLAG_64(A) ((A)>>56) + +#define ZFLAG_8(A) MASK_OUT_ABOVE_8(A) +#define ZFLAG_16(A) MASK_OUT_ABOVE_16(A) +#define ZFLAG_32(A) MASK_OUT_ABOVE_32(A) + + +/* Flag values */ +#define NFLAG_SET 0x80 +#define NFLAG_CLEAR 0 +#define CFLAG_SET 0x100 +#define CFLAG_CLEAR 0 +#define XFLAG_SET 0x100 +#define XFLAG_CLEAR 0 +#define VFLAG_SET 0x80 +#define VFLAG_CLEAR 0 +#define ZFLAG_SET 0 +#define ZFLAG_CLEAR 0xffffffff +#define SFLAG_SET 4 +#define SFLAG_CLEAR 0 + +/* Turn flag values into 1 or 0 */ +#define XFLAG_AS_1() ((FLAG_X>>8)&1) +#define NFLAG_AS_1() ((FLAG_N>>7)&1) +#define VFLAG_AS_1() ((FLAG_V>>7)&1) +#define ZFLAG_AS_1() (!FLAG_Z) +#define CFLAG_AS_1() ((FLAG_C>>8)&1) + + +/* Conditions */ +#define COND_CS() (FLAG_C&0x100) +#define COND_CC() (!COND_CS()) +#define COND_VS() (FLAG_V&0x80) +#define COND_VC() (!COND_VS()) +#define COND_NE() FLAG_Z +#define COND_EQ() (!COND_NE()) +#define COND_MI() (FLAG_N&0x80) +#define COND_PL() (!COND_MI()) +#define COND_LT() ((FLAG_N^FLAG_V)&0x80) +#define COND_GE() (!COND_LT()) +#define COND_HI() (COND_CC() && COND_NE()) +#define COND_LS() (COND_CS() || COND_EQ()) +#define COND_GT() (COND_GE() && COND_NE()) +#define COND_LE() (COND_LT() || COND_EQ()) + +/* Reversed conditions */ +#define COND_NOT_CS() COND_CC() +#define COND_NOT_CC() COND_CS() +#define COND_NOT_VS() COND_VC() +#define COND_NOT_VC() COND_VS() +#define COND_NOT_NE() COND_EQ() +#define COND_NOT_EQ() COND_NE() +#define COND_NOT_MI() COND_PL() +#define COND_NOT_PL() COND_MI() +#define COND_NOT_LT() COND_GE() +#define COND_NOT_GE() COND_LT() +#define COND_NOT_HI() COND_LS() +#define COND_NOT_LS() COND_HI() +#define COND_NOT_GT() COND_LE() +#define COND_NOT_LE() COND_GT() + +/* Not real conditions, but here for convenience */ +#define COND_XS() (FLAG_X&0x100) +#define COND_XC() (!COND_XS) + + +/* Get the condition code register */ +#define m68ki_get_ccr() ((COND_XS() >> 4) | \ + (COND_MI() >> 4) | \ + (COND_EQ() << 2) | \ + (COND_VS() >> 6) | \ + (COND_CS() >> 8)) + +/* Get the status register */ +#define m68ki_get_sr() ( FLAG_T1 | \ + (FLAG_S << 11) | \ + FLAG_INT_MASK | \ + m68ki_get_ccr()) + + + +/* ---------------------------- Cycle Counting ---------------------------- */ + +#ifdef M68K_OVERCLOCK_SHIFT +#define USE_CYCLES(A) m68ki_cpu.cycles += ((A) * m68ki_cpu.cycle_ratio) >> M68K_OVERCLOCK_SHIFT +#else +#define USE_CYCLES(A) m68ki_cpu.cycles += (A) +#endif +#define SET_CYCLES(A) m68ki_cpu.cycles = (A) + + +/* ----------------------------- Read / Write ----------------------------- */ + +/* Read data immediately following the PC */ +#define m68k_read_immediate_16(address) *(uint16 *)(m68ki_cpu.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) +#define m68k_read_immediate_32(address) (m68k_read_immediate_16(address) << 16) | (m68k_read_immediate_16(address+2)) + +/* Read data relative to the PC */ +#define m68k_read_pcrelative_8(address) READ_BYTE(m68ki_cpu.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) +#define m68k_read_pcrelative_16(address) m68k_read_immediate_16(address) +#define m68k_read_pcrelative_32(address) m68k_read_immediate_32(address) + +/* map read immediate 8 to read immediate 16 */ +#define m68ki_read_imm_8() MASK_OUT_ABOVE_8(m68ki_read_imm_16()) + +/* Map PC-relative reads */ +#define m68ki_read_pcrel_8(A) m68k_read_pcrelative_8(A) +#define m68ki_read_pcrel_16(A) m68k_read_pcrelative_16(A) +#define m68ki_read_pcrel_32(A) m68k_read_pcrelative_32(A) + + +/* ======================================================================== */ +/* =============================== PROTOTYPES ============================= */ +/* ======================================================================== */ + +/* Used by shift & rotate instructions */ +static const uint8 m68ki_shift_8_table[65] = +{ + 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff +}; + +static const uint16 m68ki_shift_16_table[65] = +{ + 0x0000, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, 0xff00, + 0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff +}; + +static const uint m68ki_shift_32_table[65] = +{ + 0x00000000, 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, 0xf8000000, + 0xfc000000, 0xfe000000, 0xff000000, 0xff800000, 0xffc00000, 0xffe00000, + 0xfff00000, 0xfff80000, 0xfffc0000, 0xfffe0000, 0xffff0000, 0xffff8000, + 0xffffc000, 0xffffe000, 0xfffff000, 0xfffff800, 0xfffffc00, 0xfffffe00, + 0xffffff00, 0xffffff80, 0xffffffc0, 0xffffffe0, 0xfffffff0, 0xfffffff8, + 0xfffffffc, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff +}; + + +/* Number of clock cycles to use for exception processing. + * I used 4 for any vectors that are undocumented for processing times. + */ +static const uint16 m68ki_exception_cycle_table[256] = +{ + 40*MUL, /* 0: Reset - Initial Stack Pointer */ + 4*MUL, /* 1: Reset - Initial Program Counter */ + 50*MUL, /* 2: Bus Error (unemulated) */ + 50*MUL, /* 3: Address Error (unemulated) */ + 34*MUL, /* 4: Illegal Instruction */ + 38*MUL, /* 5: Divide by Zero -- ASG: changed from 42 */ + 40*MUL, /* 6: CHK -- ASG: chanaged from 44 */ + 34*MUL, /* 7: TRAPV */ + 34*MUL, /* 8: Privilege Violation */ + 34*MUL, /* 9: Trace */ + 4*MUL, /* 10: 1010 */ + 4*MUL, /* 11: 1111 */ + 4*MUL, /* 12: RESERVED */ + 4*MUL, /* 13: Coprocessor Protocol Violation (unemulated) */ + 4*MUL, /* 14: Format Error */ + 44*MUL, /* 15: Uninitialized Interrupt */ + 4*MUL, /* 16: RESERVED */ + 4*MUL, /* 17: RESERVED */ + 4*MUL, /* 18: RESERVED */ + 4*MUL, /* 19: RESERVED */ + 4*MUL, /* 20: RESERVED */ + 4*MUL, /* 21: RESERVED */ + 4*MUL, /* 22: RESERVED */ + 4*MUL, /* 23: RESERVED */ + 44*MUL, /* 24: Spurious Interrupt */ + 54*MUL, /* 25: Level 1 Interrupt Autovector */ + 54*MUL, /* 26: Level 2 Interrupt Autovector */ + 54*MUL, /* 27: Level 3 Interrupt Autovector */ + 54*MUL, /* 28: Level 4 Interrupt Autovector */ + 54*MUL, /* 29: Level 5 Interrupt Autovector */ + 54*MUL, /* 30: Level 6 Interrupt Autovector */ + 54*MUL, /* 31: Level 7 Interrupt Autovector */ + 34*MUL, /* 32: TRAP #0 -- ASG: chanaged from 38 */ + 34*MUL, /* 33: TRAP #1 */ + 34*MUL, /* 34: TRAP #2 */ + 34*MUL, /* 35: TRAP #3 */ + 34*MUL, /* 36: TRAP #4 */ + 34*MUL, /* 37: TRAP #5 */ + 34*MUL, /* 38: TRAP #6 */ + 34*MUL, /* 39: TRAP #7 */ + 34*MUL, /* 40: TRAP #8 */ + 34*MUL, /* 41: TRAP #9 */ + 34*MUL, /* 42: TRAP #10 */ + 34*MUL, /* 43: TRAP #11 */ + 34*MUL, /* 44: TRAP #12 */ + 34*MUL, /* 45: TRAP #13 */ + 34*MUL, /* 46: TRAP #14 */ + 34*MUL, /* 47: TRAP #15 */ + 4*MUL, /* 48: FP Branch or Set on Unknown Condition (unemulated) */ + 4*MUL, /* 49: FP Inexact Result (unemulated) */ + 4*MUL, /* 50: FP Divide by Zero (unemulated) */ + 4*MUL, /* 51: FP Underflow (unemulated) */ + 4*MUL, /* 52: FP Operand Error (unemulated) */ + 4*MUL, /* 53: FP Overflow (unemulated) */ + 4*MUL, /* 54: FP Signaling NAN (unemulated) */ + 4*MUL, /* 55: FP Unimplemented Data Type (unemulated) */ + 4*MUL, /* 56: MMU Configuration Error (unemulated) */ + 4*MUL, /* 57: MMU Illegal Operation Error (unemulated) */ + 4*MUL, /* 58: MMU Access Level Violation Error (unemulated) */ + 4*MUL, /* 59: RESERVED */ + 4*MUL, /* 60: RESERVED */ + 4*MUL, /* 61: RESERVED */ + 4*MUL, /* 62: RESERVED */ + 4*MUL, /* 63: RESERVED */ + /* 64-255: User Defined */ + 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, + 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, + 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, + 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, + 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL, + 4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL,4*MUL +}; + +/* Read data immediately after the program counter */ +INLINE uint m68ki_read_imm_16(void); +INLINE uint m68ki_read_imm_32(void); + +/* Read from the current address space */ +INLINE uint m68ki_read_8(uint address); +INLINE uint m68ki_read_16(uint address); +INLINE uint m68ki_read_32(uint address); + +/* Write to the current data space */ +INLINE void m68ki_write_8(uint address, uint value); +INLINE void m68ki_write_16(uint address, uint value); +INLINE void m68ki_write_32(uint address, uint value); + +/* Indexed and PC-relative ea fetching */ +INLINE uint m68ki_get_ea_pcdi(void); +INLINE uint m68ki_get_ea_pcix(void); +INLINE uint m68ki_get_ea_ix(uint An); + +/* Operand fetching */ +INLINE uint OPER_AY_AI_8(void); +INLINE uint OPER_AY_AI_16(void); +INLINE uint OPER_AY_AI_32(void); +INLINE uint OPER_AY_PI_8(void); +INLINE uint OPER_AY_PI_16(void); +INLINE uint OPER_AY_PI_32(void); +INLINE uint OPER_AY_PD_8(void); +INLINE uint OPER_AY_PD_16(void); +INLINE uint OPER_AY_PD_32(void); +INLINE uint OPER_AY_DI_8(void); +INLINE uint OPER_AY_DI_16(void); +INLINE uint OPER_AY_DI_32(void); +INLINE uint OPER_AY_IX_8(void); +INLINE uint OPER_AY_IX_16(void); +INLINE uint OPER_AY_IX_32(void); + +INLINE uint OPER_AX_AI_8(void); +INLINE uint OPER_AX_AI_16(void); +INLINE uint OPER_AX_AI_32(void); +INLINE uint OPER_AX_PI_8(void); +INLINE uint OPER_AX_PI_16(void); +INLINE uint OPER_AX_PI_32(void); +INLINE uint OPER_AX_PD_8(void); +INLINE uint OPER_AX_PD_16(void); +INLINE uint OPER_AX_PD_32(void); +INLINE uint OPER_AX_DI_8(void); +INLINE uint OPER_AX_DI_16(void); +INLINE uint OPER_AX_DI_32(void); +INLINE uint OPER_AX_IX_8(void); +INLINE uint OPER_AX_IX_16(void); +INLINE uint OPER_AX_IX_32(void); + +INLINE uint OPER_A7_PI_8(void); +INLINE uint OPER_A7_PD_8(void); + +INLINE uint OPER_AW_8(void); +INLINE uint OPER_AW_16(void); +INLINE uint OPER_AW_32(void); +INLINE uint OPER_AL_8(void); +INLINE uint OPER_AL_16(void); +INLINE uint OPER_AL_32(void); +INLINE uint OPER_PCDI_8(void); +INLINE uint OPER_PCDI_16(void); +INLINE uint OPER_PCDI_32(void); +INLINE uint OPER_PCIX_8(void); +INLINE uint OPER_PCIX_16(void); +INLINE uint OPER_PCIX_32(void); + +/* Stack operations */ +INLINE void m68ki_push_16(uint value); +INLINE void m68ki_push_32(uint value); +INLINE uint m68ki_pull_16(void); +INLINE uint m68ki_pull_32(void); + +/* Program flow operations */ +INLINE void m68ki_jump(uint new_pc); +INLINE void m68ki_jump_vector(uint vector); +INLINE void m68ki_branch_8(uint offset); +INLINE void m68ki_branch_16(uint offset); +INLINE void m68ki_branch_32(uint offset); + +/* Status register operations. */ +INLINE void m68ki_set_s_flag(uint value); /* Only bit 2 of value should be set (i.e. 4 or 0) */ +INLINE void m68ki_set_ccr(uint value); /* set the condition code register */ +INLINE void m68ki_set_sr(uint value); /* set the status register */ + +/* Exception processing */ +INLINE uint m68ki_init_exception(void); /* Initial exception processing */ +INLINE void m68ki_stack_frame_3word(uint pc, uint sr); /* Stack various frame types */ +#if M68K_EMULATE_ADDRESS_ERROR +INLINE void m68ki_stack_frame_buserr(uint sr); +#endif +INLINE void m68ki_exception_trap(uint vector); +INLINE void m68ki_exception_trapN(uint vector); +#if M68K_EMULATE_TRACE +INLINE void m68ki_exception_trace(void); +#endif +static void m68ki_exception_privilege_violation(void); /* do not inline in order to reduce function size and allow inlining of read/write functions by the compile */ +INLINE void m68ki_exception_1010(void); +INLINE void m68ki_exception_1111(void); +INLINE void m68ki_exception_illegal(void); +#if M68K_EMULATE_ADDRESS_ERROR +INLINE void m68ki_exception_address_error(void); +#endif +INLINE void m68ki_exception_interrupt(uint int_level); +INLINE void m68ki_check_interrupts(void); /* ASG: check for interrupts */ + +/* ======================================================================== */ +/* =========================== UTILITY FUNCTIONS ========================== */ +/* ======================================================================== */ + + +/* ---------------------------- Read Immediate ---------------------------- */ + +/* Handles all immediate reads, does address error check, function code setting, + * and prefetching if they are enabled in m68kconf.h + */ +INLINE uint m68ki_read_imm_16(void) +{ + m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ +#if M68K_CHECK_PC_ADDRESS_ERROR + m68ki_check_address_error(REG_PC, MODE_READ, FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ +#endif +#if M68K_EMULATE_PREFETCH + if(MASK_OUT_BELOW_2(REG_PC) != CPU_PREF_ADDR) + { + CPU_PREF_ADDR = MASK_OUT_BELOW_2(REG_PC); + CPU_PREF_DATA = m68k_read_immediate_32(CPU_PREF_ADDR); + } + REG_PC += 2; + return MASK_OUT_ABOVE_16(CPU_PREF_DATA >> ((2-((REG_PC-2)&2))<<3)); +#else + uint pc = REG_PC; + REG_PC += 2; + return m68k_read_immediate_16(pc); +#endif /* M68K_EMULATE_PREFETCH */ +} + +INLINE uint m68ki_read_imm_32(void) +{ +#if M68K_EMULATE_PREFETCH + uint temp_val; + + m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ +#if M68K_CHECK_PC_ADDRESS_ERROR + m68ki_check_address_error(REG_PC, MODE_READ, FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ +#endif + if(MASK_OUT_BELOW_2(REG_PC) != CPU_PREF_ADDR) + { + CPU_PREF_ADDR = MASK_OUT_BELOW_2(REG_PC); + CPU_PREF_DATA = m68k_read_immediate_32(CPU_PREF_ADDR); + } + temp_val = CPU_PREF_DATA; + REG_PC += 2; + if(MASK_OUT_BELOW_2(REG_PC) != CPU_PREF_ADDR) + { + CPU_PREF_ADDR = MASK_OUT_BELOW_2(REG_PC); + CPU_PREF_DATA = m68k_read_immediate_32(CPU_PREF_ADDR); + temp_val = MASK_OUT_ABOVE_32((temp_val << 16) | (CPU_PREF_DATA >> 16)); + } + REG_PC += 2; + + return temp_val; +#else + m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ +#if M68K_CHECK_PC_ADDRESS_ERROR + m68ki_check_address_error(REG_PC, MODE_READ, FLAG_S | FUNCTION_CODE_USER_PROGRAM) /* auto-disable (see m68kcpu.h) */ +#endif + uint pc = REG_PC; + REG_PC += 4; + return m68k_read_immediate_32(pc); +#endif /* M68K_EMULATE_PREFETCH */ +} + + + +/* ------------------------- Top level read/write ------------------------- */ + +/* Handles all memory accesses (except for immediate reads if they are + * configured to use separate functions in m68kconf.h). + * All memory accesses must go through these top level functions. + * These functions will also check for address error and set the function + * code if they are enabled in m68kconf.h. + */ +INLINE uint m68ki_read_8(uint address) +{ + cpu_memory_map *temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; + uint val; + + m68ki_set_fc(FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ + + if (temp->read8) val = (*temp->read8)(ADDRESS_68K(address)); + else val = READ_BYTE(temp->base, (address) & 0xffff); + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_M68K_R, 1, address, val); +#endif + + return val; +} + +INLINE uint m68ki_read_16(uint address) +{ + cpu_memory_map *temp; + uint val; + + m68ki_set_fc(FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ + m68ki_check_address_error(address, MODE_READ, FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ + + temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; + if (temp->read16) val = (*temp->read16)(ADDRESS_68K(address)); + else val = *(uint16 *)(temp->base + ((address) & 0xffff)); + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_M68K_R, 2, address, val); +#endif + + return val; +} + +INLINE uint m68ki_read_32(uint address) +{ + cpu_memory_map *temp; + uint val; + + m68ki_set_fc(FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ + m68ki_check_address_error(address, MODE_READ, FLAG_S | m68ki_get_address_space()) /* auto-disable (see m68kcpu.h) */ + + temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; + if (temp->read16) val = ((*temp->read16)(ADDRESS_68K(address)) << 16) | ((*temp->read16)(ADDRESS_68K(address + 2))); + else val = m68k_read_immediate_32(address); + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_M68K_R, 4, address, val); +#endif + + return val; +} + +INLINE void m68ki_write_8(uint address, uint value) +{ + cpu_memory_map *temp; + + m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_M68K_W, 1, address, value); +#endif + + temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; + if (temp->write8) (*temp->write8)(ADDRESS_68K(address),value); + else WRITE_BYTE(temp->base, (address) & 0xffff, value); +} + +INLINE void m68ki_write_16(uint address, uint value) +{ + cpu_memory_map *temp; + + m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ + m68ki_check_address_error(address, MODE_WRITE, FLAG_S | FUNCTION_CODE_USER_DATA); /* auto-disable (see m68kcpu.h) */ + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_M68K_W, 2, address, value); +#endif + + temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; + if (temp->write16) (*temp->write16)(ADDRESS_68K(address),value); + else *(uint16 *)(temp->base + ((address) & 0xffff)) = value; +} + +INLINE void m68ki_write_32(uint address, uint value) +{ + cpu_memory_map *temp; + + m68ki_set_fc(FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ + m68ki_check_address_error(address, MODE_WRITE, FLAG_S | FUNCTION_CODE_USER_DATA) /* auto-disable (see m68kcpu.h) */ + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_M68K_W, 4, address, value); +#endif + + temp = &m68ki_cpu.memory_map[((address)>>16)&0xff]; + if (temp->write16) (*temp->write16)(ADDRESS_68K(address),value>>16); + else *(uint16 *)(temp->base + ((address) & 0xffff)) = value >> 16; + + temp = &m68ki_cpu.memory_map[((address + 2)>>16)&0xff]; + if (temp->write16) (*temp->write16)(ADDRESS_68K(address+2),value&0xffff); + else *(uint16 *)(temp->base + ((address + 2) & 0xffff)) = value; +} + + +/* --------------------- Effective Address Calculation -------------------- */ + +/* The program counter relative addressing modes cause operands to be + * retrieved from program space, not data space. + */ +INLINE uint m68ki_get_ea_pcdi(void) +{ + uint old_pc = REG_PC; + m68ki_use_program_space() /* auto-disable */ + return old_pc + MAKE_INT_16(m68ki_read_imm_16()); +} + + +INLINE uint m68ki_get_ea_pcix(void) +{ + m68ki_use_program_space() /* auto-disable */ + return m68ki_get_ea_ix(REG_PC); +} + +/* Indexed addressing modes are encoded as follows: + * + * Base instruction format: + * F E D C B A 9 8 7 6 | 5 4 3 | 2 1 0 + * x x x x x x x x x x | 1 1 0 | BASE REGISTER (An) + * + * Base instruction format for destination EA in move instructions: + * F E D C | B A 9 | 8 7 6 | 5 4 3 2 1 0 + * x x x x | BASE REG | 1 1 0 | X X X X X X (An) + * + * Brief extension format: + * F | E D C | B | A 9 | 8 | 7 6 5 4 3 2 1 0 + * D/A | REGISTER | W/L | SCALE | 0 | DISPLACEMENT + * + * Full extension format: + * F E D C B A 9 8 7 6 5 4 3 2 1 0 + * D/A | REGISTER | W/L | SCALE | 1 | BS | IS | BD SIZE | 0 | I/IS + * BASE DISPLACEMENT (0, 16, 32 bit) (bd) + * OUTER DISPLACEMENT (0, 16, 32 bit) (od) + * + * D/A: 0 = Dn, 1 = An (Xn) + * W/L: 0 = W (sign extend), 1 = L (.SIZE) + * SCALE: 00=1, 01=2, 10=4, 11=8 (*SCALE) + * BS: 0=add base reg, 1=suppress base reg (An suppressed) + * IS: 0=add index, 1=suppress index (Xn suppressed) + * BD SIZE: 00=reserved, 01=NULL, 10=Word, 11=Long (size of bd) + * + * IS I/IS Operation + * 0 000 No Memory Indirect + * 0 001 indir prex with null outer + * 0 010 indir prex with word outer + * 0 011 indir prex with long outer + * 0 100 reserved + * 0 101 indir postx with null outer + * 0 110 indir postx with word outer + * 0 111 indir postx with long outer + * 1 000 no memory indirect + * 1 001 mem indir with null outer + * 1 010 mem indir with word outer + * 1 011 mem indir with long outer + * 1 100-111 reserved + */ +INLINE uint m68ki_get_ea_ix(uint An) +{ + /* An = base register */ + uint extension = m68ki_read_imm_16(); + + uint Xn = 0; /* Index register */ + + /* Calculate index */ + Xn = REG_DA[extension>>12]; /* Xn */ + if(!BIT_B(extension)) /* W/L */ + Xn = MAKE_INT_16(Xn); + + /* Add base register and displacement and return */ + return An + Xn + MAKE_INT_8(extension); +} + + +/* Fetch operands */ +INLINE uint OPER_AY_AI_8(void) {uint ea = EA_AY_AI_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AY_AI_16(void) {uint ea = EA_AY_AI_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AY_AI_32(void) {uint ea = EA_AY_AI_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AY_PI_8(void) {uint ea = EA_AY_PI_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AY_PI_16(void) {uint ea = EA_AY_PI_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AY_PI_32(void) {uint ea = EA_AY_PI_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AY_PD_8(void) {uint ea = EA_AY_PD_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AY_PD_16(void) {uint ea = EA_AY_PD_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AY_PD_32(void) {uint ea = EA_AY_PD_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AY_DI_8(void) {uint ea = EA_AY_DI_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AY_DI_16(void) {uint ea = EA_AY_DI_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AY_DI_32(void) {uint ea = EA_AY_DI_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AY_IX_8(void) {uint ea = EA_AY_IX_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AY_IX_16(void) {uint ea = EA_AY_IX_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AY_IX_32(void) {uint ea = EA_AY_IX_32(); return m68ki_read_32(ea);} + +INLINE uint OPER_AX_AI_8(void) {uint ea = EA_AX_AI_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AX_AI_16(void) {uint ea = EA_AX_AI_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AX_AI_32(void) {uint ea = EA_AX_AI_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AX_PI_8(void) {uint ea = EA_AX_PI_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AX_PI_16(void) {uint ea = EA_AX_PI_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AX_PI_32(void) {uint ea = EA_AX_PI_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AX_PD_8(void) {uint ea = EA_AX_PD_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AX_PD_16(void) {uint ea = EA_AX_PD_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AX_PD_32(void) {uint ea = EA_AX_PD_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AX_DI_8(void) {uint ea = EA_AX_DI_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AX_DI_16(void) {uint ea = EA_AX_DI_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AX_DI_32(void) {uint ea = EA_AX_DI_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AX_IX_8(void) {uint ea = EA_AX_IX_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AX_IX_16(void) {uint ea = EA_AX_IX_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AX_IX_32(void) {uint ea = EA_AX_IX_32(); return m68ki_read_32(ea);} + +INLINE uint OPER_A7_PI_8(void) {uint ea = EA_A7_PI_8(); return m68ki_read_8(ea); } +INLINE uint OPER_A7_PD_8(void) {uint ea = EA_A7_PD_8(); return m68ki_read_8(ea); } + +INLINE uint OPER_AW_8(void) {uint ea = EA_AW_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AW_16(void) {uint ea = EA_AW_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AW_32(void) {uint ea = EA_AW_32(); return m68ki_read_32(ea);} +INLINE uint OPER_AL_8(void) {uint ea = EA_AL_8(); return m68ki_read_8(ea); } +INLINE uint OPER_AL_16(void) {uint ea = EA_AL_16(); return m68ki_read_16(ea);} +INLINE uint OPER_AL_32(void) {uint ea = EA_AL_32(); return m68ki_read_32(ea);} +INLINE uint OPER_PCDI_8(void) {uint ea = EA_PCDI_8(); return m68ki_read_pcrel_8(ea); } +INLINE uint OPER_PCDI_16(void) {uint ea = EA_PCDI_16(); return m68ki_read_pcrel_16(ea);} +INLINE uint OPER_PCDI_32(void) {uint ea = EA_PCDI_32(); return m68ki_read_pcrel_32(ea);} +INLINE uint OPER_PCIX_8(void) {uint ea = EA_PCIX_8(); return m68ki_read_pcrel_8(ea); } +INLINE uint OPER_PCIX_16(void) {uint ea = EA_PCIX_16(); return m68ki_read_pcrel_16(ea);} +INLINE uint OPER_PCIX_32(void) {uint ea = EA_PCIX_32(); return m68ki_read_pcrel_32(ea);} + + + +/* ---------------------------- Stack Functions --------------------------- */ + +/* Push/pull data from the stack */ +INLINE void m68ki_push_16(uint value) +{ + REG_SP = MASK_OUT_ABOVE_32(REG_SP - 2); + m68ki_write_16(REG_SP, value); +} + +INLINE void m68ki_push_32(uint value) +{ + REG_SP = MASK_OUT_ABOVE_32(REG_SP - 4); + m68ki_write_32(REG_SP, value); +} + +INLINE uint m68ki_pull_16(void) +{ + uint sp = REG_SP; + REG_SP = MASK_OUT_ABOVE_32(REG_SP + 2); + return m68ki_read_16(sp); +} + +INLINE uint m68ki_pull_32(void) +{ + uint sp = REG_SP; + REG_SP = MASK_OUT_ABOVE_32(REG_SP + 4); + return m68ki_read_32(sp); +} + + + +/* ----------------------------- Program Flow ----------------------------- */ + +/* Jump to a new program location or vector. + * These functions will also call the pc_changed callback if it was enabled + * in m68kconf.h. + */ +INLINE void m68ki_jump(uint new_pc) +{ + REG_PC = new_pc; +} + +INLINE void m68ki_jump_vector(uint vector) +{ + m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ + REG_PC = m68ki_read_32(vector<<2); +} + + +/* Branch to a new memory location. + * The 32-bit branch will call pc_changed if it was enabled in m68kconf.h. + * So far I've found no problems with not calling pc_changed for 8 or 16 + * bit branches. + */ +INLINE void m68ki_branch_8(uint offset) +{ + REG_PC += MAKE_INT_8(offset); +} + +INLINE void m68ki_branch_16(uint offset) +{ + REG_PC += MAKE_INT_16(offset); +} + +INLINE void m68ki_branch_32(uint offset) +{ + REG_PC += offset; +} + + + +/* ---------------------------- Status Register --------------------------- */ + +/* Set the S flag and change the active stack pointer. + * Note that value MUST be 4 or 0. + */ +INLINE void m68ki_set_s_flag(uint value) +{ + /* Backup the old stack pointer */ + REG_SP_BASE[FLAG_S] = REG_SP; + /* Set the S flag */ + FLAG_S = value; + /* Set the new stack pointer */ + REG_SP = REG_SP_BASE[FLAG_S]; +} + + +/* Set the condition code register */ +INLINE void m68ki_set_ccr(uint value) +{ + FLAG_X = BIT_4(value) << 4; + FLAG_N = BIT_3(value) << 4; + FLAG_Z = !BIT_2(value); + FLAG_V = BIT_1(value) << 6; + FLAG_C = BIT_0(value) << 8; +} + + +/* Set the status register and check for interrupts */ +INLINE void m68ki_set_sr(uint value) +{ + /* Set the status register */ + FLAG_T1 = BIT_F(value); + FLAG_INT_MASK = value & 0x0700; + m68ki_set_ccr(value); + m68ki_set_s_flag((value >> 11) & 4); + + /* Check current IRQ status */ + m68ki_check_interrupts(); +} + + +/* ------------------------- Exception Processing ------------------------- */ + +/* Initiate exception processing */ +INLINE uint m68ki_init_exception(void) +{ + /* Save the old status register */ + uint sr = m68ki_get_sr(); + + /* Turn off trace flag, clear pending traces */ + FLAG_T1 = 0; + m68ki_clear_trace() + + /* Enter supervisor mode */ + m68ki_set_s_flag(SFLAG_SET); + + return sr; +} + +/* 3 word stack frame (68000 only) */ +INLINE void m68ki_stack_frame_3word(uint pc, uint sr) +{ + m68ki_push_32(pc); + m68ki_push_16(sr); +} + +#if M68K_EMULATE_ADDRESS_ERROR +/* Bus error stack frame (68000 only). + */ +INLINE void m68ki_stack_frame_buserr(uint sr) +{ + m68ki_push_32(REG_PC); + m68ki_push_16(sr); + m68ki_push_16(REG_IR); + m68ki_push_32(m68ki_cpu.aerr_address); /* access address */ + /* 0 0 0 0 0 0 0 0 0 0 0 R/W I/N FC + * R/W 0 = write, 1 = read + * I/N 0 = instruction, 1 = not + * FC 3-bit function code + */ + m68ki_push_16(m68ki_cpu.aerr_write_mode | CPU_INSTR_MODE | m68ki_cpu.aerr_fc); +} +#endif + +/* Used for Group 2 exceptions. + */ +INLINE void m68ki_exception_trap(uint vector) +{ + uint sr = m68ki_init_exception(); + + m68ki_stack_frame_3word(REG_PC, sr); + + m68ki_jump_vector(vector); + + /* Use up some clock cycles */ + USE_CYCLES(CYC_EXCEPTION[vector]); +} + +/* Trap#n stacks a 0 frame but behaves like group2 otherwise */ +INLINE void m68ki_exception_trapN(uint vector) +{ + uint sr = m68ki_init_exception(); + m68ki_stack_frame_3word(REG_PC, sr); + m68ki_jump_vector(vector); + + /* Use up some clock cycles */ + USE_CYCLES(CYC_EXCEPTION[vector]); +} + +#if M68K_EMULATE_TRACE +/* Exception for trace mode */ +INLINE void m68ki_exception_trace(void) +{ + uint sr = m68ki_init_exception(); + + #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON + CPU_INSTR_MODE = INSTRUCTION_NO; + #endif /* M68K_EMULATE_ADDRESS_ERROR */ + + m68ki_stack_frame_3word(REG_PC, sr); + m68ki_jump_vector(EXCEPTION_TRACE); + + /* Trace nullifies a STOP instruction */ + CPU_STOPPED &= ~STOP_LEVEL_STOP; + + /* Use up some clock cycles */ + USE_CYCLES(CYC_EXCEPTION[EXCEPTION_TRACE]); +} +#endif + +/* Exception for privilege violation */ +static void m68ki_exception_privilege_violation(void) +{ + uint sr = m68ki_init_exception(); + + #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON + CPU_INSTR_MODE = INSTRUCTION_NO; + #endif /* M68K_EMULATE_ADDRESS_ERROR */ + + m68ki_stack_frame_3word(REG_PC-2, sr); + m68ki_jump_vector(EXCEPTION_PRIVILEGE_VIOLATION); + + /* Use up some clock cycles and undo the instruction's cycles */ + USE_CYCLES(CYC_EXCEPTION[EXCEPTION_PRIVILEGE_VIOLATION] - CYC_INSTRUCTION[REG_IR]); +} + +/* Exception for A-Line instructions */ +INLINE void m68ki_exception_1010(void) +{ + uint sr = m68ki_init_exception(); + m68ki_stack_frame_3word(REG_PC-2, sr); + m68ki_jump_vector(EXCEPTION_1010); + + /* Use up some clock cycles and undo the instruction's cycles */ + USE_CYCLES(CYC_EXCEPTION[EXCEPTION_1010] - CYC_INSTRUCTION[REG_IR]); +} + +/* Exception for F-Line instructions */ +INLINE void m68ki_exception_1111(void) +{ + uint sr = m68ki_init_exception(); + m68ki_stack_frame_3word(REG_PC-2, sr); + m68ki_jump_vector(EXCEPTION_1111); + + /* Use up some clock cycles and undo the instruction's cycles */ + USE_CYCLES(CYC_EXCEPTION[EXCEPTION_1111] - CYC_INSTRUCTION[REG_IR]); +} + +/* Exception for illegal instructions */ +INLINE void m68ki_exception_illegal(void) +{ + uint sr = m68ki_init_exception(); + + #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON + CPU_INSTR_MODE = INSTRUCTION_NO; + #endif /* M68K_EMULATE_ADDRESS_ERROR */ + + m68ki_stack_frame_3word(REG_PC-2, sr); + m68ki_jump_vector(EXCEPTION_ILLEGAL_INSTRUCTION); + + /* Use up some clock cycles and undo the instruction's cycles */ + USE_CYCLES(CYC_EXCEPTION[EXCEPTION_ILLEGAL_INSTRUCTION] - CYC_INSTRUCTION[REG_IR]); +} + + +#if M68K_EMULATE_ADDRESS_ERROR +/* Exception for address error */ +INLINE void m68ki_exception_address_error(void) +{ + uint sr = m68ki_init_exception(); + + /* If we were processing a bus error, address error, or reset, + * this is a catastrophic failure. + * Halt the CPU + */ + if(CPU_RUN_MODE == RUN_MODE_BERR_AERR_RESET) + { + CPU_STOPPED = STOP_LEVEL_HALT; + SET_CYCLES(m68ki_cpu.cycle_end - CYC_INSTRUCTION[REG_IR]); + return; + } + CPU_RUN_MODE = RUN_MODE_BERR_AERR_RESET; + + /* Note: This is implemented for 68000 only! */ + m68ki_stack_frame_buserr(sr); + + m68ki_jump_vector(EXCEPTION_ADDRESS_ERROR); + + /* Use up some clock cycles and undo the instruction's cycles */ + USE_CYCLES(CYC_EXCEPTION[EXCEPTION_ADDRESS_ERROR] - CYC_INSTRUCTION[REG_IR]); +} +#endif + +/* Service an interrupt request and start exception processing */ +INLINE void m68ki_exception_interrupt(uint int_level) +{ + uint vector, sr, new_pc; + + #if M68K_EMULATE_ADDRESS_ERROR == OPT_ON + CPU_INSTR_MODE = INSTRUCTION_NO; + #endif /* M68K_EMULATE_ADDRESS_ERROR */ + + /* Turn off the stopped state */ + CPU_STOPPED &= STOP_LEVEL_HALT; + + /* If we are halted, don't do anything */ + if(CPU_STOPPED) + return; + + /* Always use the autovectors. */ + vector = EXCEPTION_INTERRUPT_AUTOVECTOR+int_level; + + /* Start exception processing */ + sr = m68ki_init_exception(); + + /* Set the interrupt mask to the level of the one being serviced */ + FLAG_INT_MASK = int_level<<8; + + /* Acknowledge the interrupt */ + m68ki_int_ack(int_level); + + /* Get the new PC */ + m68ki_use_data_space() /* auto-disable (see m68kcpu.h) */ + new_pc = m68ki_read_32(vector<<2); + + /* If vector is uninitialized, call the uninitialized interrupt vector */ + if(new_pc == 0) + new_pc = m68ki_read_32((EXCEPTION_UNINITIALIZED_INTERRUPT<<2)); + + /* Generate a stack frame */ + m68ki_stack_frame_3word(REG_PC, sr); + + m68ki_jump(new_pc); + + /* Update cycle count now */ + USE_CYCLES(CYC_EXCEPTION[vector]); +} + +/* ASG: Check for interrupts */ +INLINE void m68ki_check_interrupts(void) +{ + if(CPU_INT_LEVEL > FLAG_INT_MASK) + m68ki_exception_interrupt(CPU_INT_LEVEL>>8); +} + + +/* ======================================================================== */ +/* ============================== END OF FILE ============================= */ +/* ======================================================================== */ + +#endif /* M68KCPU__HEADER */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68ki_cycles.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68ki_cycles.h similarity index 99% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68ki_cycles.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68ki_cycles.h index d679732e80..d49a776e9b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68ki_cycles.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68ki_cycles.h @@ -1,4099 +1,4099 @@ -static const unsigned char m68ki_cycles[0x10000] = -{ - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, - 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, - 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, - 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, - 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, - 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, - 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 32*7, 34*7, 28*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, - 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, - 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, - 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 16*7, 20*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 0*7, 0*7, 4*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 4*7, 4*7, 20*7, 0*7, 16*7, 4*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 18*7, 20*7, 18*7, 22*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 10*7, 12*7, 10*7, 14*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, - 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, - 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, - 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, - 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, - 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, - 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, - 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, -}; +static const unsigned char m68ki_cycles[0x10000] = +{ + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, + 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, + 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, + 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, + 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 0*7, 0*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, + 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 10*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, + 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 34*7, 32*7, 36*7, 32*7, 34*7, 28*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, + 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 28*7, 32*7, 28*7, 30*7, 24*7, 0*7, 0*7, 0*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, + 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 28*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 32*7, 30*7, 34*7, 30*7, 32*7, 26*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 24*7, 26*7, 20*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, + 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 22*7, 26*7, 22*7, 24*7, 18*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 20*7, 24*7, 20*7, 22*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 16*7, 20*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 0*7, 0*7, 4*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 4*7, 4*7, 20*7, 0*7, 16*7, 4*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 18*7, 20*7, 18*7, 22*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 10*7, 12*7, 10*7, 14*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 8*7, 12*7, 8*7, 12*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 14*7, 18*7, 14*7, 16*7, 10*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 14*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 8*7, 12*7, 8*7, 10*7, 4*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 10*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 12*7, 16*7, 12*7, 14*7, 8*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 16*7, 18*7, 12*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, 30*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, + 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 22*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, 24*7, + 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 26*7, 24*7, 28*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, + 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, + 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 20*7, 18*7, 22*7, 18*7, 20*7, 16*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, 12*7, + 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 14*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, 16*7, + 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 18*7, 16*7, 20*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, 6*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, 8*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, 0*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, + 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, 4*7, +}; diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68ki_instruction_jump_table.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68ki_instruction_jump_table.h similarity index 99% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68ki_instruction_jump_table.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68ki_instruction_jump_table.h index a3dbc50ee5..eac71feadb 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68ki_instruction_jump_table.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68ki_instruction_jump_table.h @@ -1,8195 +1,8195 @@ -static void (* const m68ki_instruction_jump_table[0x10000])(void) = -{ - m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, - m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi7, - m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd7, - m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, - m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, - m68k_op_ori_8_aw, m68k_op_ori_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_ori_16_toc, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, - m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, - m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, - m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, - m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, - m68k_op_ori_16_aw, m68k_op_ori_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_ori_16_tos, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, - m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, - m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, - m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, - m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, - m68k_op_ori_32_aw, m68k_op_ori_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, - m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi7, - m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd7, - m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, - m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, - m68k_op_andi_8_aw, m68k_op_andi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_andi_16_toc, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, - m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, - m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, - m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, - m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, - m68k_op_andi_16_aw, m68k_op_andi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_andi_16_tos, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, - m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, - m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, - m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, - m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, - m68k_op_andi_32_aw, m68k_op_andi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, - m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi7, - m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd7, - m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, - m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, - m68k_op_subi_8_aw, m68k_op_subi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, - m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, - m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, - m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, - m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, - m68k_op_subi_16_aw, m68k_op_subi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, - m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, - m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, - m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, - m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, - m68k_op_subi_32_aw, m68k_op_subi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, - m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi7, - m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd7, - m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, - m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, - m68k_op_addi_8_aw, m68k_op_addi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, - m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, - m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, - m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, - m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, - m68k_op_addi_16_aw, m68k_op_addi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, - m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, - m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, - m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, - m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, - m68k_op_addi_32_aw, m68k_op_addi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, - m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi7, - m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd7, - m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, - m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, - m68k_op_btst_8_s_aw, m68k_op_btst_8_s_al, m68k_op_btst_8_s_pcdi, m68k_op_btst_8_s_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, - m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi7, - m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd7, - m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, - m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, - m68k_op_bchg_8_s_aw, m68k_op_bchg_8_s_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, - m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi7, - m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd7, - m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, - m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, - m68k_op_bclr_8_s_aw, m68k_op_bclr_8_s_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, - m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi7, - m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd7, - m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, - m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, - m68k_op_bset_8_s_aw, m68k_op_bset_8_s_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, - m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi7, - m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd7, - m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, - m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, - m68k_op_eori_8_aw, m68k_op_eori_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_eori_16_toc, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, - m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, - m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, - m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, - m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, - m68k_op_eori_16_aw, m68k_op_eori_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_eori_16_tos, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, - m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, - m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, - m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, - m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, - m68k_op_eori_32_aw, m68k_op_eori_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, - m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi7, - m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd7, - m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, - m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, - m68k_op_cmpi_8_aw, m68k_op_cmpi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, - m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, - m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, - m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, - m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, - m68k_op_cmpi_16_aw, m68k_op_cmpi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, - m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, - m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, - m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, - m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, - m68k_op_cmpi_32_aw, m68k_op_cmpi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, - m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, - m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, - m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, - m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, - m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, - m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, - m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, - m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, - m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, - m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, - m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, - m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, - m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, - m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, - m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, - m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, - m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, - m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, - m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, - m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, - m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, - m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, - m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, - m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, - m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, - m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, - m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, - m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, - m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, - m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, - m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, - m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, - m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, - m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, - m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, - m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, - m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, - m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, - m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi7, - m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd7, - m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, - m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, - m68k_op_move_8_aw_aw, m68k_op_move_8_aw_al, m68k_op_move_8_aw_pcdi, m68k_op_move_8_aw_pcix, m68k_op_move_8_aw_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, - m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, - m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, - m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, - m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, - m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, - m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, - m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, - m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, - m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, - m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, - m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi7, - m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd7, - m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, - m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, - m68k_op_move_8_al_aw, m68k_op_move_8_al_al, m68k_op_move_8_al_pcdi, m68k_op_move_8_al_pcix, m68k_op_move_8_al_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, - m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, - m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, - m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, - m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, - m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, - m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, - m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, - m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, - m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, - m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, - m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, - m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, - m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, - m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, - m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, - m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, - m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, - m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, - m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, - m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, - m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, - m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, - m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, - m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, - m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, - m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, - m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, - m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, - m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, - m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, - m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, - m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, - m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, - m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, - m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, - m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, - m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, - m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, - m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, - m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, - m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, - m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, - m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, - m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, - m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, - m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, - m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, - m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, - m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, - m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, - m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, - m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, - m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, - m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, - m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, - m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, - m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, - m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, - m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, - m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, - m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi7, - m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd7, - m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, - m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, - m68k_op_move_8_pi7_aw, m68k_op_move_8_pi7_al, m68k_op_move_8_pi7_pcdi, m68k_op_move_8_pi7_pcix, m68k_op_move_8_pi7_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, - m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi7, - m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd7, - m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, - m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, - m68k_op_move_8_pd7_aw, m68k_op_move_8_pd7_al, m68k_op_move_8_pd7_pcdi, m68k_op_move_8_pd7_pcix, m68k_op_move_8_pd7_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, - m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, - m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, - m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, - m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, - m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, - m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, - m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, - m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, - m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, - m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, - m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, - m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, - m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, - m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, - m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, - m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, - m68k_op_move_32_aw_aw, m68k_op_move_32_aw_al, m68k_op_move_32_aw_pcdi, m68k_op_move_32_aw_pcix, m68k_op_move_32_aw_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, - m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, - m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, - m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, - m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, - m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, - m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, - m68k_op_move_32_al_aw, m68k_op_move_32_al_al, m68k_op_move_32_al_pcdi, m68k_op_move_32_al_pcix, m68k_op_move_32_al_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, - m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, - m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, - m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, - m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, - m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, - m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, - m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, - m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, - m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, - m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, - m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, - m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, - m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, - m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, - m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, - m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, - m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, - m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, - m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, - m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, - m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, - m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, - m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, - m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, - m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, - m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, - m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, - m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, - m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, - m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, - m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, - m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, - m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, - m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, - m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, - m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, - m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, - m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, - m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, - m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, - m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, - m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, - m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, - m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, - m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, - m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, - m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, - m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, - m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, - m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, - m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, - m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, - m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, - m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, - m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, - m68k_op_move_16_aw_aw, m68k_op_move_16_aw_al, m68k_op_move_16_aw_pcdi, m68k_op_move_16_aw_pcix, m68k_op_move_16_aw_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, - m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, - m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, - m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, - m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, - m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, - m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, - m68k_op_move_16_al_aw, m68k_op_move_16_al_al, m68k_op_move_16_al_pcdi, m68k_op_move_16_al_pcix, m68k_op_move_16_al_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, - m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, - m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, - m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, - m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, - m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, - m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, - m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, - m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, - m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, - m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, - m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, - m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, - m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, - m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, - m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, - m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, - m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, - m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, - m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, - m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, - m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, - m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, - m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, - m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, - m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, - m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, - m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, - m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, - m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, - m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, - m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, - m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, - m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, - m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, - m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, - m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, - m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, - m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, - m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, - m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, - m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, - m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, - m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, - m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, - m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, - m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, - m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, - m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, - m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, - m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi7, - m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd7, - m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, - m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, - m68k_op_negx_8_aw, m68k_op_negx_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, - m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, - m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, - m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, - m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, - m68k_op_negx_16_aw, m68k_op_negx_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, - m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, - m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, - m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, - m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, - m68k_op_negx_32_aw, m68k_op_negx_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, - m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, - m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, - m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, - m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, - m68k_op_move_16_frs_aw, m68k_op_move_16_frs_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, - m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi7, - m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd7, - m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, - m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, - m68k_op_clr_8_aw, m68k_op_clr_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, - m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, - m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, - m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, - m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, - m68k_op_clr_16_aw, m68k_op_clr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, - m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, - m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, - m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, - m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, - m68k_op_clr_32_aw, m68k_op_clr_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, - m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi7, - m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd7, - m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, - m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, - m68k_op_neg_8_aw, m68k_op_neg_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, - m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, - m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, - m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, - m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, - m68k_op_neg_16_aw, m68k_op_neg_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, - m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, - m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, - m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, - m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, - m68k_op_neg_32_aw, m68k_op_neg_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, - m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, - m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, - m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, - m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, - m68k_op_move_16_toc_aw, m68k_op_move_16_toc_al, m68k_op_move_16_toc_pcdi, m68k_op_move_16_toc_pcix, m68k_op_move_16_toc_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, - m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi7, - m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd7, - m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, - m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, - m68k_op_not_8_aw, m68k_op_not_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, - m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, - m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, - m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, - m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, - m68k_op_not_16_aw, m68k_op_not_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, - m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, - m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, - m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, - m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, - m68k_op_not_32_aw, m68k_op_not_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, - m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, - m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, - m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, - m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, - m68k_op_move_16_tos_aw, m68k_op_move_16_tos_al, m68k_op_move_16_tos_pcdi, m68k_op_move_16_tos_pcix, m68k_op_move_16_tos_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, - m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi7, - m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd7, - m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, - m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, - m68k_op_nbcd_8_aw, m68k_op_nbcd_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, - m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, - m68k_op_pea_32_aw, m68k_op_pea_32_al, m68k_op_pea_32_pcdi, m68k_op_pea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, - m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, - m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, - m68k_op_movem_16_re_aw, m68k_op_movem_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, - m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, - m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, - m68k_op_movem_32_re_aw, m68k_op_movem_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, - m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi7, - m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd7, - m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, - m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, - m68k_op_tst_8_aw, m68k_op_tst_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, - m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, - m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, - m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, - m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, - m68k_op_tst_16_aw, m68k_op_tst_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, - m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, - m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, - m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, - m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, - m68k_op_tst_32_aw, m68k_op_tst_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, - m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi7, - m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd7, - m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, - m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, - m68k_op_tas_8_aw, m68k_op_tas_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, - m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, - m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, - m68k_op_movem_16_er_aw, m68k_op_movem_16_er_al, m68k_op_movem_16_er_pcdi, m68k_op_movem_16_er_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, - m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, - m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, - m68k_op_movem_32_er_aw, m68k_op_movem_32_er_al, m68k_op_movem_32_er_pcdi, m68k_op_movem_32_er_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, - m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, - m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16_a7, - m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32_a7, - m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, - m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, - m68k_op_reset, m68k_op_nop, m68k_op_stop, m68k_op_rte_32, m68k_op_illegal, m68k_op_rts_32, m68k_op_trapv, m68k_op_rtr_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, - m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, - m68k_op_jsr_32_aw, m68k_op_jsr_32_al, m68k_op_jsr_32_pcdi, m68k_op_jsr_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, - m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, - m68k_op_jmp_32_aw, m68k_op_jmp_32_al, m68k_op_jmp_32_pcdi, m68k_op_jmp_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, - m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, - m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, - m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, - m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, - m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, - m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, - m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, - m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, - m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, - m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi7, - m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd7, - m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, - m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, - m68k_op_st_8_aw, m68k_op_st_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, - m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, - m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, - m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi7, - m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd7, - m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, - m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, - m68k_op_sf_8_aw, m68k_op_sf_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, - m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, - m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, - m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi7, - m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd7, - m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, - m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, - m68k_op_shi_8_aw, m68k_op_shi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, - m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, - m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, - m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi7, - m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd7, - m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, - m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, - m68k_op_sls_8_aw, m68k_op_sls_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, - m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, - m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, - m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi7, - m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd7, - m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, - m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, - m68k_op_scc_8_aw, m68k_op_scc_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, - m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, - m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, - m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi7, - m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd7, - m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, - m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, - m68k_op_scs_8_aw, m68k_op_scs_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, - m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, - m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, - m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi7, - m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd7, - m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, - m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, - m68k_op_sne_8_aw, m68k_op_sne_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, - m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, - m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, - m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi7, - m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd7, - m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, - m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, - m68k_op_seq_8_aw, m68k_op_seq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, - m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, - m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, - m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi7, - m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd7, - m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, - m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, - m68k_op_svc_8_aw, m68k_op_svc_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, - m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, - m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, - m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi7, - m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd7, - m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, - m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, - m68k_op_svs_8_aw, m68k_op_svs_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, - m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, - m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, - m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi7, - m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd7, - m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, - m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, - m68k_op_spl_8_aw, m68k_op_spl_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, - m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, - m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, - m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi7, - m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd7, - m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, - m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, - m68k_op_smi_8_aw, m68k_op_smi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, - m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, - m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, - m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi7, - m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd7, - m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, - m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, - m68k_op_sge_8_aw, m68k_op_sge_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, - m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, - m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, - m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi7, - m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd7, - m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, - m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, - m68k_op_slt_8_aw, m68k_op_slt_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, - m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, - m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, - m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, - m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, - m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, - m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, - m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, - m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, - m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, - m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, - m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, - m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, - m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, - m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, - m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, - m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, - m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, - m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, - m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, - m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, - m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, - m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi7, - m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd7, - m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, - m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, - m68k_op_sgt_8_aw, m68k_op_sgt_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, - m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, - m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, - m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, - m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, - m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, - m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, - m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, - m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, - m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, - m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, - m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, - m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, - m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, - m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, - m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, - m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, - m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, - m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, - m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, - m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, - m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, - m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi7, - m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd7, - m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, - m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, - m68k_op_sle_8_aw, m68k_op_sle_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_bra_16, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, - m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_32, - m68k_op_bsr_16, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, - m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_32, - m68k_op_bhi_16, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, - m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_32, - m68k_op_bls_16, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, - m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_32, - m68k_op_bcc_16, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, - m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_32, - m68k_op_bcs_16, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, - m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_32, - m68k_op_bne_16, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, - m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_32, - m68k_op_beq_16, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, - m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_32, - m68k_op_bvc_16, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, - m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_32, - m68k_op_bvs_16, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, - m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_32, - m68k_op_bpl_16, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, - m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_32, - m68k_op_bmi_16, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, - m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_32, - m68k_op_bge_16, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, - m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_32, - m68k_op_blt_16, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, - m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_32, - m68k_op_bgt_16, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, - m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_32, - m68k_op_ble_16, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, - m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, - m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, - m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, - m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, - m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, - m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, - m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, - m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, - m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, - m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, - m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, - m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, - m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, - m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, - m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, - m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, - m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, - m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, - m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, - m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, - m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, - m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_axy7, - m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, - m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, - m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, - m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, - m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, - m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, - m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, - m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, - m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, - m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, - m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, - m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, - m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, - m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, - m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, - m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, - m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, - m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, - m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, - m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, - m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, - m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, - m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, - m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, - m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, - m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, - m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, - m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, - m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, - m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, - m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, - m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, - m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, - m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, - m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, - m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, - m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, - m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, - m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, - m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, - m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, - m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, - m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, - m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, - m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, - m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, - m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, - m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_axy7, - m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, - m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, - m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, - m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, - m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, - m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, - m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, - m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, - m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, - m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, - m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, - m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, - m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, - m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, - m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, - m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, - m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, - m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, - m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, - m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, - m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, - m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, - m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, - m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, - m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, - m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, - m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, - m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, - m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, - m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, - m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, - m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, - m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, - m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, - m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, - m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, - m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, - m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, - m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, - m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, - m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, - m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, - m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, - m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, - m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, - m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, - m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, - m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, - m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, - m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, - m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, - m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, - m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, - m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_axy7, - m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, - m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, - m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, - m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, - m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, - m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, - m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, - m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, - m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, - m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, - m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, - m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, - m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, - m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, - m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, - m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, - m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, - m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, - m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, - m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, - m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, - m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, - m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, - m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, - m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, - m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, - m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, - m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, - m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, - m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, - m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, - m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, - m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, - m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, - m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, - m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, - m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, - m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, - m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, - m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, - m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, - m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, - m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, - m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, - m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, - m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, - m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, - m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_axy7, - m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, - m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, - m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, - m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, - m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, - m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, - m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, - m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, - m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, - m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, - m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, - m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, - m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, - m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, - m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, - m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, - m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, - m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, - m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, - m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, - m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, - m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, - m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, - m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, - m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, - m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, - m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, - m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, - m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, - m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, - m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, - m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, - m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, - m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, - m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, - m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, - m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, - m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, - m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, - m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, - m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, - m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, - m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, - m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, - m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, - m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, - m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, - m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, - m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, - m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, - m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_axy7, - m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, - m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, - m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, - m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, - m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, - m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, - m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, - m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, - m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, - m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, - m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, - m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, - m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, - m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, - m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, - m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, - m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, - m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, - m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, - m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, - m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, - m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, - m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, - m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, - m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, - m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, - m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, - m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, - m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, - m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, - m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, - m68k_op_asr_16_aw, m68k_op_asr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, - m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, - m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, - m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, - m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, - m68k_op_asl_16_aw, m68k_op_asl_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, - m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, - m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, - m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, - m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, - m68k_op_lsr_16_aw, m68k_op_lsr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, - m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, - m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, - m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, - m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, - m68k_op_lsl_16_aw, m68k_op_lsl_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, - m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, - m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, - m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, - m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, - m68k_op_roxr_16_aw, m68k_op_roxr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, - m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, - m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, - m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, - m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, - m68k_op_roxl_16_aw, m68k_op_roxl_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, - m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, - m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, - m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, - m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, - m68k_op_ror_16_aw, m68k_op_ror_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, - m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, - m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, - m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, - m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, - m68k_op_rol_16_aw, m68k_op_rol_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, - m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, - m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, - m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, - m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, - m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, - m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, - m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, - m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, - m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, - m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, - m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, - m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, - m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, - m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, - m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, - m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, - m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, - m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, - m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, - m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, - m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, - m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, - m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, - m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, - m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, - m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, - m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, - m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, - m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, - m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, - m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, - m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, - m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, - m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, - m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, - m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, - m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, - m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, - m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, - m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, - m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, - m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, - m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, - m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, - m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, - m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, - m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, -}; +static void (* const m68ki_instruction_jump_table[0x10000])(void) = +{ + m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, m68k_op_ori_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, m68k_op_ori_8_ai, + m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi, m68k_op_ori_8_pi7, + m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd, m68k_op_ori_8_pd7, + m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, m68k_op_ori_8_di, + m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, m68k_op_ori_8_ix, + m68k_op_ori_8_aw, m68k_op_ori_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_ori_16_toc, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, m68k_op_ori_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, m68k_op_ori_16_ai, + m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, m68k_op_ori_16_pi, + m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, m68k_op_ori_16_pd, + m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, m68k_op_ori_16_di, + m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, m68k_op_ori_16_ix, + m68k_op_ori_16_aw, m68k_op_ori_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_ori_16_tos, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, m68k_op_ori_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, m68k_op_ori_32_ai, + m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, m68k_op_ori_32_pi, + m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, m68k_op_ori_32_pd, + m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, m68k_op_ori_32_di, + m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, m68k_op_ori_32_ix, + m68k_op_ori_32_aw, m68k_op_ori_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, m68k_op_andi_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, m68k_op_andi_8_ai, + m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi, m68k_op_andi_8_pi7, + m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd, m68k_op_andi_8_pd7, + m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, m68k_op_andi_8_di, + m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, m68k_op_andi_8_ix, + m68k_op_andi_8_aw, m68k_op_andi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_andi_16_toc, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, m68k_op_andi_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, m68k_op_andi_16_ai, + m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, m68k_op_andi_16_pi, + m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, m68k_op_andi_16_pd, + m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, m68k_op_andi_16_di, + m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, m68k_op_andi_16_ix, + m68k_op_andi_16_aw, m68k_op_andi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_andi_16_tos, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, m68k_op_andi_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, m68k_op_andi_32_ai, + m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, m68k_op_andi_32_pi, + m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, m68k_op_andi_32_pd, + m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, m68k_op_andi_32_di, + m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, m68k_op_andi_32_ix, + m68k_op_andi_32_aw, m68k_op_andi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, m68k_op_subi_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, m68k_op_subi_8_ai, + m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi, m68k_op_subi_8_pi7, + m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd, m68k_op_subi_8_pd7, + m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, m68k_op_subi_8_di, + m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, m68k_op_subi_8_ix, + m68k_op_subi_8_aw, m68k_op_subi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, m68k_op_subi_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, m68k_op_subi_16_ai, + m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, m68k_op_subi_16_pi, + m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, m68k_op_subi_16_pd, + m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, m68k_op_subi_16_di, + m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, m68k_op_subi_16_ix, + m68k_op_subi_16_aw, m68k_op_subi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, m68k_op_subi_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, m68k_op_subi_32_ai, + m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, m68k_op_subi_32_pi, + m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, m68k_op_subi_32_pd, + m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, m68k_op_subi_32_di, + m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, m68k_op_subi_32_ix, + m68k_op_subi_32_aw, m68k_op_subi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, m68k_op_addi_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, m68k_op_addi_8_ai, + m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi, m68k_op_addi_8_pi7, + m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd, m68k_op_addi_8_pd7, + m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, m68k_op_addi_8_di, + m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, m68k_op_addi_8_ix, + m68k_op_addi_8_aw, m68k_op_addi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, m68k_op_addi_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, m68k_op_addi_16_ai, + m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, m68k_op_addi_16_pi, + m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, m68k_op_addi_16_pd, + m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, m68k_op_addi_16_di, + m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, m68k_op_addi_16_ix, + m68k_op_addi_16_aw, m68k_op_addi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, m68k_op_addi_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, m68k_op_addi_32_ai, + m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, m68k_op_addi_32_pi, + m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, m68k_op_addi_32_pd, + m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, m68k_op_addi_32_di, + m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, m68k_op_addi_32_ix, + m68k_op_addi_32_aw, m68k_op_addi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, m68k_op_btst_32_s_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, m68k_op_btst_8_s_ai, + m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi, m68k_op_btst_8_s_pi7, + m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd, m68k_op_btst_8_s_pd7, + m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, m68k_op_btst_8_s_di, + m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, m68k_op_btst_8_s_ix, + m68k_op_btst_8_s_aw, m68k_op_btst_8_s_al, m68k_op_btst_8_s_pcdi, m68k_op_btst_8_s_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, m68k_op_bchg_32_s_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, m68k_op_bchg_8_s_ai, + m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi, m68k_op_bchg_8_s_pi7, + m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd, m68k_op_bchg_8_s_pd7, + m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, m68k_op_bchg_8_s_di, + m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, m68k_op_bchg_8_s_ix, + m68k_op_bchg_8_s_aw, m68k_op_bchg_8_s_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, m68k_op_bclr_32_s_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, m68k_op_bclr_8_s_ai, + m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi, m68k_op_bclr_8_s_pi7, + m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd, m68k_op_bclr_8_s_pd7, + m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, m68k_op_bclr_8_s_di, + m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, m68k_op_bclr_8_s_ix, + m68k_op_bclr_8_s_aw, m68k_op_bclr_8_s_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, m68k_op_bset_32_s_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, m68k_op_bset_8_s_ai, + m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi, m68k_op_bset_8_s_pi7, + m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd, m68k_op_bset_8_s_pd7, + m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, m68k_op_bset_8_s_di, + m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, m68k_op_bset_8_s_ix, + m68k_op_bset_8_s_aw, m68k_op_bset_8_s_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, m68k_op_eori_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, m68k_op_eori_8_ai, + m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi, m68k_op_eori_8_pi7, + m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd, m68k_op_eori_8_pd7, + m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, m68k_op_eori_8_di, + m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, m68k_op_eori_8_ix, + m68k_op_eori_8_aw, m68k_op_eori_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_eori_16_toc, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, m68k_op_eori_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, m68k_op_eori_16_ai, + m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, m68k_op_eori_16_pi, + m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, m68k_op_eori_16_pd, + m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, m68k_op_eori_16_di, + m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, m68k_op_eori_16_ix, + m68k_op_eori_16_aw, m68k_op_eori_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_eori_16_tos, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, m68k_op_eori_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, m68k_op_eori_32_ai, + m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, m68k_op_eori_32_pi, + m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, m68k_op_eori_32_pd, + m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, m68k_op_eori_32_di, + m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, m68k_op_eori_32_ix, + m68k_op_eori_32_aw, m68k_op_eori_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, m68k_op_cmpi_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, m68k_op_cmpi_8_ai, + m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi, m68k_op_cmpi_8_pi7, + m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd, m68k_op_cmpi_8_pd7, + m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, m68k_op_cmpi_8_di, + m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, m68k_op_cmpi_8_ix, + m68k_op_cmpi_8_aw, m68k_op_cmpi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, m68k_op_cmpi_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, m68k_op_cmpi_16_ai, + m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, m68k_op_cmpi_16_pi, + m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, m68k_op_cmpi_16_pd, + m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, m68k_op_cmpi_16_di, + m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, m68k_op_cmpi_16_ix, + m68k_op_cmpi_16_aw, m68k_op_cmpi_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, m68k_op_cmpi_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, m68k_op_cmpi_32_ai, + m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, m68k_op_cmpi_32_pi, + m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, m68k_op_cmpi_32_pd, + m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, m68k_op_cmpi_32_di, + m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, m68k_op_cmpi_32_ix, + m68k_op_cmpi_32_aw, m68k_op_cmpi_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, m68k_op_btst_32_r_d, + m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, m68k_op_movep_16_er, + m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, m68k_op_btst_8_r_ai, + m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi, m68k_op_btst_8_r_pi7, + m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd, m68k_op_btst_8_r_pd7, + m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, m68k_op_btst_8_r_di, + m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, m68k_op_btst_8_r_ix, + m68k_op_btst_8_r_aw, m68k_op_btst_8_r_al, m68k_op_btst_8_r_pcdi, m68k_op_btst_8_r_pcix, m68k_op_btst_8_r_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, m68k_op_bchg_32_r_d, + m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, m68k_op_movep_32_er, + m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, m68k_op_bchg_8_r_ai, + m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi, m68k_op_bchg_8_r_pi7, + m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd, m68k_op_bchg_8_r_pd7, + m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, m68k_op_bchg_8_r_di, + m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, m68k_op_bchg_8_r_ix, + m68k_op_bchg_8_r_aw, m68k_op_bchg_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, m68k_op_bclr_32_r_d, + m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, m68k_op_movep_16_re, + m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, m68k_op_bclr_8_r_ai, + m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi, m68k_op_bclr_8_r_pi7, + m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd, m68k_op_bclr_8_r_pd7, + m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, m68k_op_bclr_8_r_di, + m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, m68k_op_bclr_8_r_ix, + m68k_op_bclr_8_r_aw, m68k_op_bclr_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, m68k_op_bset_32_r_d, + m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, m68k_op_movep_32_re, + m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, m68k_op_bset_8_r_ai, + m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi, m68k_op_bset_8_r_pi7, + m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd, m68k_op_bset_8_r_pd7, + m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, m68k_op_bset_8_r_di, + m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, m68k_op_bset_8_r_ix, + m68k_op_bset_8_r_aw, m68k_op_bset_8_r_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, + m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, + m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, + m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, + m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, + m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, + m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, + m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, + m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, + m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, + m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, m68k_op_move_8_aw_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, m68k_op_move_8_aw_ai, + m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi, m68k_op_move_8_aw_pi7, + m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd, m68k_op_move_8_aw_pd7, + m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, m68k_op_move_8_aw_di, + m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, m68k_op_move_8_aw_ix, + m68k_op_move_8_aw_aw, m68k_op_move_8_aw_al, m68k_op_move_8_aw_pcdi, m68k_op_move_8_aw_pcix, m68k_op_move_8_aw_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, + m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, + m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, + m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, + m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, + m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, + m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, + m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, + m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, + m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, + m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, m68k_op_move_8_al_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, m68k_op_move_8_al_ai, + m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi, m68k_op_move_8_al_pi7, + m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd, m68k_op_move_8_al_pd7, + m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, m68k_op_move_8_al_di, + m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, m68k_op_move_8_al_ix, + m68k_op_move_8_al_aw, m68k_op_move_8_al_al, m68k_op_move_8_al_pcdi, m68k_op_move_8_al_pcix, m68k_op_move_8_al_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, + m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, + m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, + m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, + m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, + m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, + m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, + m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, + m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, + m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, + m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, + m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, + m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, + m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, + m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, + m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, + m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, + m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, + m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, + m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, + m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, + m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, + m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, + m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, + m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, + m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, + m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, + m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, + m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, + m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, + m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, + m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, + m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, + m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, + m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, + m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, + m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, + m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, + m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, + m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, + m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, m68k_op_move_8_pi_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, m68k_op_move_8_pi_ai, + m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi, m68k_op_move_8_pi_pi7, + m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd, m68k_op_move_8_pi_pd7, + m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, m68k_op_move_8_pi_di, + m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, m68k_op_move_8_pi_ix, + m68k_op_move_8_pi_aw, m68k_op_move_8_pi_al, m68k_op_move_8_pi_pcdi, m68k_op_move_8_pi_pcix, m68k_op_move_8_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, m68k_op_move_8_pd_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, m68k_op_move_8_pd_ai, + m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi, m68k_op_move_8_pd_pi7, + m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd, m68k_op_move_8_pd_pd7, + m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, m68k_op_move_8_pd_di, + m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, m68k_op_move_8_pd_ix, + m68k_op_move_8_pd_aw, m68k_op_move_8_pd_al, m68k_op_move_8_pd_pcdi, m68k_op_move_8_pd_pcix, m68k_op_move_8_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, m68k_op_move_8_d_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, m68k_op_move_8_d_ai, + m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi, m68k_op_move_8_d_pi7, + m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd, m68k_op_move_8_d_pd7, + m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, m68k_op_move_8_d_di, + m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, m68k_op_move_8_d_ix, + m68k_op_move_8_d_aw, m68k_op_move_8_d_al, m68k_op_move_8_d_pcdi, m68k_op_move_8_d_pcix, m68k_op_move_8_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, m68k_op_move_8_ai_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, m68k_op_move_8_ai_ai, + m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi, m68k_op_move_8_ai_pi7, + m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd, m68k_op_move_8_ai_pd7, + m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, m68k_op_move_8_ai_di, + m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, m68k_op_move_8_ai_ix, + m68k_op_move_8_ai_aw, m68k_op_move_8_ai_al, m68k_op_move_8_ai_pcdi, m68k_op_move_8_ai_pcix, m68k_op_move_8_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, m68k_op_move_8_pi7_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, m68k_op_move_8_pi7_ai, + m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi, m68k_op_move_8_pi7_pi7, + m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd, m68k_op_move_8_pi7_pd7, + m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, m68k_op_move_8_pi7_di, + m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, m68k_op_move_8_pi7_ix, + m68k_op_move_8_pi7_aw, m68k_op_move_8_pi7_al, m68k_op_move_8_pi7_pcdi, m68k_op_move_8_pi7_pcix, m68k_op_move_8_pi7_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, m68k_op_move_8_pd7_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, m68k_op_move_8_pd7_ai, + m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi, m68k_op_move_8_pd7_pi7, + m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd, m68k_op_move_8_pd7_pd7, + m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, m68k_op_move_8_pd7_di, + m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, m68k_op_move_8_pd7_ix, + m68k_op_move_8_pd7_aw, m68k_op_move_8_pd7_al, m68k_op_move_8_pd7_pcdi, m68k_op_move_8_pd7_pcix, m68k_op_move_8_pd7_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, m68k_op_move_8_di_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, m68k_op_move_8_di_ai, + m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi, m68k_op_move_8_di_pi7, + m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd, m68k_op_move_8_di_pd7, + m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, m68k_op_move_8_di_di, + m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, m68k_op_move_8_di_ix, + m68k_op_move_8_di_aw, m68k_op_move_8_di_al, m68k_op_move_8_di_pcdi, m68k_op_move_8_di_pcix, m68k_op_move_8_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, m68k_op_move_8_ix_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, m68k_op_move_8_ix_ai, + m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi, m68k_op_move_8_ix_pi7, + m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd, m68k_op_move_8_ix_pd7, + m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, m68k_op_move_8_ix_di, + m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, m68k_op_move_8_ix_ix, + m68k_op_move_8_ix_aw, m68k_op_move_8_ix_al, m68k_op_move_8_ix_pcdi, m68k_op_move_8_ix_pcix, m68k_op_move_8_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, m68k_op_move_32_aw_d, + m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, m68k_op_move_32_aw_a, + m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, m68k_op_move_32_aw_ai, + m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, m68k_op_move_32_aw_pi, + m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, m68k_op_move_32_aw_pd, + m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, m68k_op_move_32_aw_di, + m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, m68k_op_move_32_aw_ix, + m68k_op_move_32_aw_aw, m68k_op_move_32_aw_al, m68k_op_move_32_aw_pcdi, m68k_op_move_32_aw_pcix, m68k_op_move_32_aw_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, m68k_op_move_32_al_d, + m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, m68k_op_move_32_al_a, + m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, m68k_op_move_32_al_ai, + m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, m68k_op_move_32_al_pi, + m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, m68k_op_move_32_al_pd, + m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, m68k_op_move_32_al_di, + m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, m68k_op_move_32_al_ix, + m68k_op_move_32_al_aw, m68k_op_move_32_al_al, m68k_op_move_32_al_pcdi, m68k_op_move_32_al_pcix, m68k_op_move_32_al_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, m68k_op_move_32_d_d, + m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, m68k_op_move_32_d_a, + m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, m68k_op_move_32_d_ai, + m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, m68k_op_move_32_d_pi, + m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, m68k_op_move_32_d_pd, + m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, m68k_op_move_32_d_di, + m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, m68k_op_move_32_d_ix, + m68k_op_move_32_d_aw, m68k_op_move_32_d_al, m68k_op_move_32_d_pcdi, m68k_op_move_32_d_pcix, m68k_op_move_32_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, m68k_op_movea_32_d, + m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, m68k_op_movea_32_a, + m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, m68k_op_movea_32_ai, + m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, m68k_op_movea_32_pi, + m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, m68k_op_movea_32_pd, + m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, m68k_op_movea_32_di, + m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, m68k_op_movea_32_ix, + m68k_op_movea_32_aw, m68k_op_movea_32_al, m68k_op_movea_32_pcdi, m68k_op_movea_32_pcix, m68k_op_movea_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, m68k_op_move_32_ai_d, + m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, m68k_op_move_32_ai_a, + m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, m68k_op_move_32_ai_ai, + m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, m68k_op_move_32_ai_pi, + m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, m68k_op_move_32_ai_pd, + m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, m68k_op_move_32_ai_di, + m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, m68k_op_move_32_ai_ix, + m68k_op_move_32_ai_aw, m68k_op_move_32_ai_al, m68k_op_move_32_ai_pcdi, m68k_op_move_32_ai_pcix, m68k_op_move_32_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, m68k_op_move_32_pi_d, + m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, m68k_op_move_32_pi_a, + m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, m68k_op_move_32_pi_ai, + m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, m68k_op_move_32_pi_pi, + m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, m68k_op_move_32_pi_pd, + m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, m68k_op_move_32_pi_di, + m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, m68k_op_move_32_pi_ix, + m68k_op_move_32_pi_aw, m68k_op_move_32_pi_al, m68k_op_move_32_pi_pcdi, m68k_op_move_32_pi_pcix, m68k_op_move_32_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, m68k_op_move_32_pd_d, + m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, m68k_op_move_32_pd_a, + m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, m68k_op_move_32_pd_ai, + m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, m68k_op_move_32_pd_pi, + m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, m68k_op_move_32_pd_pd, + m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, m68k_op_move_32_pd_di, + m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, m68k_op_move_32_pd_ix, + m68k_op_move_32_pd_aw, m68k_op_move_32_pd_al, m68k_op_move_32_pd_pcdi, m68k_op_move_32_pd_pcix, m68k_op_move_32_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, m68k_op_move_32_di_d, + m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, m68k_op_move_32_di_a, + m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, m68k_op_move_32_di_ai, + m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, m68k_op_move_32_di_pi, + m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, m68k_op_move_32_di_pd, + m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, m68k_op_move_32_di_di, + m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, m68k_op_move_32_di_ix, + m68k_op_move_32_di_aw, m68k_op_move_32_di_al, m68k_op_move_32_di_pcdi, m68k_op_move_32_di_pcix, m68k_op_move_32_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, m68k_op_move_32_ix_d, + m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, m68k_op_move_32_ix_a, + m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, m68k_op_move_32_ix_ai, + m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, m68k_op_move_32_ix_pi, + m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, m68k_op_move_32_ix_pd, + m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, m68k_op_move_32_ix_di, + m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, m68k_op_move_32_ix_ix, + m68k_op_move_32_ix_aw, m68k_op_move_32_ix_al, m68k_op_move_32_ix_pcdi, m68k_op_move_32_ix_pcix, m68k_op_move_32_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, m68k_op_move_16_aw_d, + m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, m68k_op_move_16_aw_a, + m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, m68k_op_move_16_aw_ai, + m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, m68k_op_move_16_aw_pi, + m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, m68k_op_move_16_aw_pd, + m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, m68k_op_move_16_aw_di, + m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, m68k_op_move_16_aw_ix, + m68k_op_move_16_aw_aw, m68k_op_move_16_aw_al, m68k_op_move_16_aw_pcdi, m68k_op_move_16_aw_pcix, m68k_op_move_16_aw_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, m68k_op_move_16_al_d, + m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, m68k_op_move_16_al_a, + m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, m68k_op_move_16_al_ai, + m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, m68k_op_move_16_al_pi, + m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, m68k_op_move_16_al_pd, + m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, m68k_op_move_16_al_di, + m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, m68k_op_move_16_al_ix, + m68k_op_move_16_al_aw, m68k_op_move_16_al_al, m68k_op_move_16_al_pcdi, m68k_op_move_16_al_pcix, m68k_op_move_16_al_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, m68k_op_move_16_d_d, + m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, m68k_op_move_16_d_a, + m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, m68k_op_move_16_d_ai, + m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, m68k_op_move_16_d_pi, + m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, m68k_op_move_16_d_pd, + m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, m68k_op_move_16_d_di, + m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, m68k_op_move_16_d_ix, + m68k_op_move_16_d_aw, m68k_op_move_16_d_al, m68k_op_move_16_d_pcdi, m68k_op_move_16_d_pcix, m68k_op_move_16_d_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, m68k_op_movea_16_d, + m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, m68k_op_movea_16_a, + m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, m68k_op_movea_16_ai, + m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, m68k_op_movea_16_pi, + m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, m68k_op_movea_16_pd, + m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, m68k_op_movea_16_di, + m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, m68k_op_movea_16_ix, + m68k_op_movea_16_aw, m68k_op_movea_16_al, m68k_op_movea_16_pcdi, m68k_op_movea_16_pcix, m68k_op_movea_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, m68k_op_move_16_ai_d, + m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, m68k_op_move_16_ai_a, + m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, m68k_op_move_16_ai_ai, + m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, m68k_op_move_16_ai_pi, + m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, m68k_op_move_16_ai_pd, + m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, m68k_op_move_16_ai_di, + m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, m68k_op_move_16_ai_ix, + m68k_op_move_16_ai_aw, m68k_op_move_16_ai_al, m68k_op_move_16_ai_pcdi, m68k_op_move_16_ai_pcix, m68k_op_move_16_ai_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, m68k_op_move_16_pi_d, + m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, m68k_op_move_16_pi_a, + m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, m68k_op_move_16_pi_ai, + m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, m68k_op_move_16_pi_pi, + m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, m68k_op_move_16_pi_pd, + m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, m68k_op_move_16_pi_di, + m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, m68k_op_move_16_pi_ix, + m68k_op_move_16_pi_aw, m68k_op_move_16_pi_al, m68k_op_move_16_pi_pcdi, m68k_op_move_16_pi_pcix, m68k_op_move_16_pi_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, m68k_op_move_16_pd_d, + m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, m68k_op_move_16_pd_a, + m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, m68k_op_move_16_pd_ai, + m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, m68k_op_move_16_pd_pi, + m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, m68k_op_move_16_pd_pd, + m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, m68k_op_move_16_pd_di, + m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, m68k_op_move_16_pd_ix, + m68k_op_move_16_pd_aw, m68k_op_move_16_pd_al, m68k_op_move_16_pd_pcdi, m68k_op_move_16_pd_pcix, m68k_op_move_16_pd_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, m68k_op_move_16_di_d, + m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, m68k_op_move_16_di_a, + m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, m68k_op_move_16_di_ai, + m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, m68k_op_move_16_di_pi, + m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, m68k_op_move_16_di_pd, + m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, m68k_op_move_16_di_di, + m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, m68k_op_move_16_di_ix, + m68k_op_move_16_di_aw, m68k_op_move_16_di_al, m68k_op_move_16_di_pcdi, m68k_op_move_16_di_pcix, m68k_op_move_16_di_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, m68k_op_move_16_ix_d, + m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, m68k_op_move_16_ix_a, + m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, m68k_op_move_16_ix_ai, + m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, m68k_op_move_16_ix_pi, + m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, m68k_op_move_16_ix_pd, + m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, m68k_op_move_16_ix_di, + m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, m68k_op_move_16_ix_ix, + m68k_op_move_16_ix_aw, m68k_op_move_16_ix_al, m68k_op_move_16_ix_pcdi, m68k_op_move_16_ix_pcix, m68k_op_move_16_ix_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, m68k_op_negx_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, m68k_op_negx_8_ai, + m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi, m68k_op_negx_8_pi7, + m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd, m68k_op_negx_8_pd7, + m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, m68k_op_negx_8_di, + m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, m68k_op_negx_8_ix, + m68k_op_negx_8_aw, m68k_op_negx_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, m68k_op_negx_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, m68k_op_negx_16_ai, + m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, m68k_op_negx_16_pi, + m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, m68k_op_negx_16_pd, + m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, m68k_op_negx_16_di, + m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, m68k_op_negx_16_ix, + m68k_op_negx_16_aw, m68k_op_negx_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, m68k_op_negx_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, m68k_op_negx_32_ai, + m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, m68k_op_negx_32_pi, + m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, m68k_op_negx_32_pd, + m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, m68k_op_negx_32_di, + m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, m68k_op_negx_32_ix, + m68k_op_negx_32_aw, m68k_op_negx_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, m68k_op_move_16_frs_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, m68k_op_move_16_frs_ai, + m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, m68k_op_move_16_frs_pi, + m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, m68k_op_move_16_frs_pd, + m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, m68k_op_move_16_frs_di, + m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, m68k_op_move_16_frs_ix, + m68k_op_move_16_frs_aw, m68k_op_move_16_frs_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, m68k_op_clr_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, m68k_op_clr_8_ai, + m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi, m68k_op_clr_8_pi7, + m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd, m68k_op_clr_8_pd7, + m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, m68k_op_clr_8_di, + m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, m68k_op_clr_8_ix, + m68k_op_clr_8_aw, m68k_op_clr_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, m68k_op_clr_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, m68k_op_clr_16_ai, + m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, m68k_op_clr_16_pi, + m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, m68k_op_clr_16_pd, + m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, m68k_op_clr_16_di, + m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, m68k_op_clr_16_ix, + m68k_op_clr_16_aw, m68k_op_clr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, m68k_op_clr_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, m68k_op_clr_32_ai, + m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, m68k_op_clr_32_pi, + m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, m68k_op_clr_32_pd, + m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, m68k_op_clr_32_di, + m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, m68k_op_clr_32_ix, + m68k_op_clr_32_aw, m68k_op_clr_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, m68k_op_neg_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, m68k_op_neg_8_ai, + m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi, m68k_op_neg_8_pi7, + m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd, m68k_op_neg_8_pd7, + m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, m68k_op_neg_8_di, + m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, m68k_op_neg_8_ix, + m68k_op_neg_8_aw, m68k_op_neg_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, m68k_op_neg_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, m68k_op_neg_16_ai, + m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, m68k_op_neg_16_pi, + m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, m68k_op_neg_16_pd, + m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, m68k_op_neg_16_di, + m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, m68k_op_neg_16_ix, + m68k_op_neg_16_aw, m68k_op_neg_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, m68k_op_neg_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, m68k_op_neg_32_ai, + m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, m68k_op_neg_32_pi, + m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, m68k_op_neg_32_pd, + m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, m68k_op_neg_32_di, + m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, m68k_op_neg_32_ix, + m68k_op_neg_32_aw, m68k_op_neg_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, m68k_op_move_16_toc_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, m68k_op_move_16_toc_ai, + m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, m68k_op_move_16_toc_pi, + m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, m68k_op_move_16_toc_pd, + m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, m68k_op_move_16_toc_di, + m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, m68k_op_move_16_toc_ix, + m68k_op_move_16_toc_aw, m68k_op_move_16_toc_al, m68k_op_move_16_toc_pcdi, m68k_op_move_16_toc_pcix, m68k_op_move_16_toc_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, m68k_op_not_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, m68k_op_not_8_ai, + m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi, m68k_op_not_8_pi7, + m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd, m68k_op_not_8_pd7, + m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, m68k_op_not_8_di, + m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, m68k_op_not_8_ix, + m68k_op_not_8_aw, m68k_op_not_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, m68k_op_not_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, m68k_op_not_16_ai, + m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, m68k_op_not_16_pi, + m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, m68k_op_not_16_pd, + m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, m68k_op_not_16_di, + m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, m68k_op_not_16_ix, + m68k_op_not_16_aw, m68k_op_not_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, m68k_op_not_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, m68k_op_not_32_ai, + m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, m68k_op_not_32_pi, + m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, m68k_op_not_32_pd, + m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, m68k_op_not_32_di, + m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, m68k_op_not_32_ix, + m68k_op_not_32_aw, m68k_op_not_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, m68k_op_move_16_tos_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, m68k_op_move_16_tos_ai, + m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, m68k_op_move_16_tos_pi, + m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, m68k_op_move_16_tos_pd, + m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, m68k_op_move_16_tos_di, + m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, m68k_op_move_16_tos_ix, + m68k_op_move_16_tos_aw, m68k_op_move_16_tos_al, m68k_op_move_16_tos_pcdi, m68k_op_move_16_tos_pcix, m68k_op_move_16_tos_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, m68k_op_nbcd_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, m68k_op_nbcd_8_ai, + m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi, m68k_op_nbcd_8_pi7, + m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd, m68k_op_nbcd_8_pd7, + m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, m68k_op_nbcd_8_di, + m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, m68k_op_nbcd_8_ix, + m68k_op_nbcd_8_aw, m68k_op_nbcd_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, m68k_op_swap_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, m68k_op_pea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, m68k_op_pea_32_di, + m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, m68k_op_pea_32_ix, + m68k_op_pea_32_aw, m68k_op_pea_32_al, m68k_op_pea_32_pcdi, m68k_op_pea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, m68k_op_ext_16, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, m68k_op_movem_16_re_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, m68k_op_movem_16_re_pd, + m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, m68k_op_movem_16_re_di, + m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, m68k_op_movem_16_re_ix, + m68k_op_movem_16_re_aw, m68k_op_movem_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, m68k_op_ext_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, m68k_op_movem_32_re_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, m68k_op_movem_32_re_pd, + m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, m68k_op_movem_32_re_di, + m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, m68k_op_movem_32_re_ix, + m68k_op_movem_32_re_aw, m68k_op_movem_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, m68k_op_tst_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, m68k_op_tst_8_ai, + m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi, m68k_op_tst_8_pi7, + m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd, m68k_op_tst_8_pd7, + m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, m68k_op_tst_8_di, + m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, m68k_op_tst_8_ix, + m68k_op_tst_8_aw, m68k_op_tst_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, m68k_op_tst_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, m68k_op_tst_16_ai, + m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, m68k_op_tst_16_pi, + m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, m68k_op_tst_16_pd, + m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, m68k_op_tst_16_di, + m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, m68k_op_tst_16_ix, + m68k_op_tst_16_aw, m68k_op_tst_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, m68k_op_tst_32_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, m68k_op_tst_32_ai, + m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, m68k_op_tst_32_pi, + m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, m68k_op_tst_32_pd, + m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, m68k_op_tst_32_di, + m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, m68k_op_tst_32_ix, + m68k_op_tst_32_aw, m68k_op_tst_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, m68k_op_tas_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, m68k_op_tas_8_ai, + m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi, m68k_op_tas_8_pi7, + m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd, m68k_op_tas_8_pd7, + m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, m68k_op_tas_8_di, + m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, m68k_op_tas_8_ix, + m68k_op_tas_8_aw, m68k_op_tas_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, m68k_op_movem_16_er_ai, + m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, m68k_op_movem_16_er_pi, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, m68k_op_movem_16_er_di, + m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, m68k_op_movem_16_er_ix, + m68k_op_movem_16_er_aw, m68k_op_movem_16_er_al, m68k_op_movem_16_er_pcdi, m68k_op_movem_16_er_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, m68k_op_movem_32_er_ai, + m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, m68k_op_movem_32_er_pi, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, m68k_op_movem_32_er_di, + m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, m68k_op_movem_32_er_ix, + m68k_op_movem_32_er_aw, m68k_op_movem_32_er_al, m68k_op_movem_32_er_pcdi, m68k_op_movem_32_er_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, + m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, m68k_op_trap, + m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16, m68k_op_link_16_a7, + m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32, m68k_op_unlk_32_a7, + m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, m68k_op_move_32_tou, + m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, m68k_op_move_32_fru, + m68k_op_reset, m68k_op_nop, m68k_op_stop, m68k_op_rte_32, m68k_op_illegal, m68k_op_rts_32, m68k_op_trapv, m68k_op_rtr_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, m68k_op_jsr_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, m68k_op_jsr_32_di, + m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, m68k_op_jsr_32_ix, + m68k_op_jsr_32_aw, m68k_op_jsr_32_al, m68k_op_jsr_32_pcdi, m68k_op_jsr_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, m68k_op_jmp_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, m68k_op_jmp_32_di, + m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, m68k_op_jmp_32_ix, + m68k_op_jmp_32_aw, m68k_op_jmp_32_al, m68k_op_jmp_32_pcdi, m68k_op_jmp_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, m68k_op_chk_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, m68k_op_chk_16_ai, + m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, m68k_op_chk_16_pi, + m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, m68k_op_chk_16_pd, + m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, m68k_op_chk_16_di, + m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, m68k_op_chk_16_ix, + m68k_op_chk_16_aw, m68k_op_chk_16_al, m68k_op_chk_16_pcdi, m68k_op_chk_16_pcix, m68k_op_chk_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, m68k_op_lea_32_ai, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, m68k_op_lea_32_di, + m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, m68k_op_lea_32_ix, + m68k_op_lea_32_aw, m68k_op_lea_32_al, m68k_op_lea_32_pcdi, m68k_op_lea_32_pcix, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, m68k_op_st_8_d, + m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, m68k_op_dbt_16, + m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, m68k_op_st_8_ai, + m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi, m68k_op_st_8_pi7, + m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd, m68k_op_st_8_pd7, + m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, m68k_op_st_8_di, + m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, m68k_op_st_8_ix, + m68k_op_st_8_aw, m68k_op_st_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, m68k_op_sf_8_d, + m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, m68k_op_dbf_16, + m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, m68k_op_sf_8_ai, + m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi, m68k_op_sf_8_pi7, + m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd, m68k_op_sf_8_pd7, + m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, m68k_op_sf_8_di, + m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, m68k_op_sf_8_ix, + m68k_op_sf_8_aw, m68k_op_sf_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, m68k_op_shi_8_d, + m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, m68k_op_dbhi_16, + m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, m68k_op_shi_8_ai, + m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi, m68k_op_shi_8_pi7, + m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd, m68k_op_shi_8_pd7, + m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, m68k_op_shi_8_di, + m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, m68k_op_shi_8_ix, + m68k_op_shi_8_aw, m68k_op_shi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, m68k_op_sls_8_d, + m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, m68k_op_dbls_16, + m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, m68k_op_sls_8_ai, + m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi, m68k_op_sls_8_pi7, + m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd, m68k_op_sls_8_pd7, + m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, m68k_op_sls_8_di, + m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, m68k_op_sls_8_ix, + m68k_op_sls_8_aw, m68k_op_sls_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, m68k_op_scc_8_d, + m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, m68k_op_dbcc_16, + m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, m68k_op_scc_8_ai, + m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi, m68k_op_scc_8_pi7, + m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd, m68k_op_scc_8_pd7, + m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, m68k_op_scc_8_di, + m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, m68k_op_scc_8_ix, + m68k_op_scc_8_aw, m68k_op_scc_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, m68k_op_scs_8_d, + m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, m68k_op_dbcs_16, + m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, m68k_op_scs_8_ai, + m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi, m68k_op_scs_8_pi7, + m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd, m68k_op_scs_8_pd7, + m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, m68k_op_scs_8_di, + m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, m68k_op_scs_8_ix, + m68k_op_scs_8_aw, m68k_op_scs_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, m68k_op_sne_8_d, + m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, m68k_op_dbne_16, + m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, m68k_op_sne_8_ai, + m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi, m68k_op_sne_8_pi7, + m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd, m68k_op_sne_8_pd7, + m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, m68k_op_sne_8_di, + m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, m68k_op_sne_8_ix, + m68k_op_sne_8_aw, m68k_op_sne_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, m68k_op_seq_8_d, + m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, m68k_op_dbeq_16, + m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, m68k_op_seq_8_ai, + m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi, m68k_op_seq_8_pi7, + m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd, m68k_op_seq_8_pd7, + m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, m68k_op_seq_8_di, + m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, m68k_op_seq_8_ix, + m68k_op_seq_8_aw, m68k_op_seq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, m68k_op_svc_8_d, + m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, m68k_op_dbvc_16, + m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, m68k_op_svc_8_ai, + m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi, m68k_op_svc_8_pi7, + m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd, m68k_op_svc_8_pd7, + m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, m68k_op_svc_8_di, + m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, m68k_op_svc_8_ix, + m68k_op_svc_8_aw, m68k_op_svc_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, m68k_op_svs_8_d, + m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, m68k_op_dbvs_16, + m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, m68k_op_svs_8_ai, + m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi, m68k_op_svs_8_pi7, + m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd, m68k_op_svs_8_pd7, + m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, m68k_op_svs_8_di, + m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, m68k_op_svs_8_ix, + m68k_op_svs_8_aw, m68k_op_svs_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, m68k_op_spl_8_d, + m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, m68k_op_dbpl_16, + m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, m68k_op_spl_8_ai, + m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi, m68k_op_spl_8_pi7, + m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd, m68k_op_spl_8_pd7, + m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, m68k_op_spl_8_di, + m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, m68k_op_spl_8_ix, + m68k_op_spl_8_aw, m68k_op_spl_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, m68k_op_smi_8_d, + m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, m68k_op_dbmi_16, + m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, m68k_op_smi_8_ai, + m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi, m68k_op_smi_8_pi7, + m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd, m68k_op_smi_8_pd7, + m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, m68k_op_smi_8_di, + m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, m68k_op_smi_8_ix, + m68k_op_smi_8_aw, m68k_op_smi_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, m68k_op_sge_8_d, + m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, m68k_op_dbge_16, + m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, m68k_op_sge_8_ai, + m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi, m68k_op_sge_8_pi7, + m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd, m68k_op_sge_8_pd7, + m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, m68k_op_sge_8_di, + m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, m68k_op_sge_8_ix, + m68k_op_sge_8_aw, m68k_op_sge_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, m68k_op_slt_8_d, + m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, m68k_op_dblt_16, + m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, m68k_op_slt_8_ai, + m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi, m68k_op_slt_8_pi7, + m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd, m68k_op_slt_8_pd7, + m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, m68k_op_slt_8_di, + m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, m68k_op_slt_8_ix, + m68k_op_slt_8_aw, m68k_op_slt_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, m68k_op_addq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, m68k_op_addq_8_ai, + m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi, m68k_op_addq_8_pi7, + m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd, m68k_op_addq_8_pd7, + m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, m68k_op_addq_8_di, + m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, m68k_op_addq_8_ix, + m68k_op_addq_8_aw, m68k_op_addq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, m68k_op_addq_16_d, + m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, m68k_op_addq_16_a, + m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, m68k_op_addq_16_ai, + m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, m68k_op_addq_16_pi, + m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, m68k_op_addq_16_pd, + m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, m68k_op_addq_16_di, + m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, m68k_op_addq_16_ix, + m68k_op_addq_16_aw, m68k_op_addq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, m68k_op_addq_32_d, + m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, m68k_op_addq_32_a, + m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, m68k_op_addq_32_ai, + m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, m68k_op_addq_32_pi, + m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, m68k_op_addq_32_pd, + m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, m68k_op_addq_32_di, + m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, m68k_op_addq_32_ix, + m68k_op_addq_32_aw, m68k_op_addq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, m68k_op_sgt_8_d, + m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, m68k_op_dbgt_16, + m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, m68k_op_sgt_8_ai, + m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi, m68k_op_sgt_8_pi7, + m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd, m68k_op_sgt_8_pd7, + m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, m68k_op_sgt_8_di, + m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, m68k_op_sgt_8_ix, + m68k_op_sgt_8_aw, m68k_op_sgt_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, m68k_op_subq_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, m68k_op_subq_8_ai, + m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi, m68k_op_subq_8_pi7, + m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd, m68k_op_subq_8_pd7, + m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, m68k_op_subq_8_di, + m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, m68k_op_subq_8_ix, + m68k_op_subq_8_aw, m68k_op_subq_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, m68k_op_subq_16_d, + m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, m68k_op_subq_16_a, + m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, m68k_op_subq_16_ai, + m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, m68k_op_subq_16_pi, + m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, m68k_op_subq_16_pd, + m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, m68k_op_subq_16_di, + m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, m68k_op_subq_16_ix, + m68k_op_subq_16_aw, m68k_op_subq_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, m68k_op_subq_32_d, + m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, m68k_op_subq_32_a, + m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, m68k_op_subq_32_ai, + m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, m68k_op_subq_32_pi, + m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, m68k_op_subq_32_pd, + m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, m68k_op_subq_32_di, + m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, m68k_op_subq_32_ix, + m68k_op_subq_32_aw, m68k_op_subq_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, m68k_op_sle_8_d, + m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, m68k_op_dble_16, + m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, m68k_op_sle_8_ai, + m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi, m68k_op_sle_8_pi7, + m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd, m68k_op_sle_8_pd7, + m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, m68k_op_sle_8_di, + m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, m68k_op_sle_8_ix, + m68k_op_sle_8_aw, m68k_op_sle_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_bra_16, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, + m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_8, m68k_op_bra_32, + m68k_op_bsr_16, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, + m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_8, m68k_op_bsr_32, + m68k_op_bhi_16, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, + m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_8, m68k_op_bhi_32, + m68k_op_bls_16, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, + m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_8, m68k_op_bls_32, + m68k_op_bcc_16, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, + m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_8, m68k_op_bcc_32, + m68k_op_bcs_16, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, + m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_8, m68k_op_bcs_32, + m68k_op_bne_16, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, + m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_8, m68k_op_bne_32, + m68k_op_beq_16, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, + m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_8, m68k_op_beq_32, + m68k_op_bvc_16, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, + m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_8, m68k_op_bvc_32, + m68k_op_bvs_16, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, + m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_8, m68k_op_bvs_32, + m68k_op_bpl_16, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, + m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_8, m68k_op_bpl_32, + m68k_op_bmi_16, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, + m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_8, m68k_op_bmi_32, + m68k_op_bge_16, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, + m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_8, m68k_op_bge_32, + m68k_op_blt_16, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, + m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_8, m68k_op_blt_32, + m68k_op_bgt_16, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, + m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_8, m68k_op_bgt_32, + m68k_op_ble_16, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, + m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_8, m68k_op_ble_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, m68k_op_moveq_32, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm, m68k_op_sbcd_8_mm_ay7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, m68k_op_or_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, m68k_op_or_8_er_ai, + m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi, m68k_op_or_8_er_pi7, + m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd, m68k_op_or_8_er_pd7, + m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, m68k_op_or_8_er_di, + m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, m68k_op_or_8_er_ix, + m68k_op_or_8_er_aw, m68k_op_or_8_er_al, m68k_op_or_8_er_pcdi, m68k_op_or_8_er_pcix, m68k_op_or_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, m68k_op_or_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, m68k_op_or_16_er_ai, + m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, m68k_op_or_16_er_pi, + m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, m68k_op_or_16_er_pd, + m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, m68k_op_or_16_er_di, + m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, m68k_op_or_16_er_ix, + m68k_op_or_16_er_aw, m68k_op_or_16_er_al, m68k_op_or_16_er_pcdi, m68k_op_or_16_er_pcix, m68k_op_or_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, m68k_op_or_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, m68k_op_or_32_er_ai, + m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, m68k_op_or_32_er_pi, + m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, m68k_op_or_32_er_pd, + m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, m68k_op_or_32_er_di, + m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, m68k_op_or_32_er_ix, + m68k_op_or_32_er_aw, m68k_op_or_32_er_al, m68k_op_or_32_er_pcdi, m68k_op_or_32_er_pcix, m68k_op_or_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, m68k_op_divu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, m68k_op_divu_16_ai, + m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, m68k_op_divu_16_pi, + m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, m68k_op_divu_16_pd, + m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, m68k_op_divu_16_di, + m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, m68k_op_divu_16_ix, + m68k_op_divu_16_aw, m68k_op_divu_16_al, m68k_op_divu_16_pcdi, m68k_op_divu_16_pcix, m68k_op_divu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, m68k_op_sbcd_8_rr, + m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_ax7, m68k_op_sbcd_8_mm_axy7, + m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, m68k_op_or_8_re_ai, + m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi, m68k_op_or_8_re_pi7, + m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd, m68k_op_or_8_re_pd7, + m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, m68k_op_or_8_re_di, + m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, m68k_op_or_8_re_ix, + m68k_op_or_8_re_aw, m68k_op_or_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, m68k_op_or_16_re_ai, + m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, m68k_op_or_16_re_pi, + m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, m68k_op_or_16_re_pd, + m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, m68k_op_or_16_re_di, + m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, m68k_op_or_16_re_ix, + m68k_op_or_16_re_aw, m68k_op_or_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, m68k_op_or_32_re_ai, + m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, m68k_op_or_32_re_pi, + m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, m68k_op_or_32_re_pd, + m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, m68k_op_or_32_re_di, + m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, m68k_op_or_32_re_ix, + m68k_op_or_32_re_aw, m68k_op_or_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, m68k_op_divs_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, m68k_op_divs_16_ai, + m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, m68k_op_divs_16_pi, + m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, m68k_op_divs_16_pd, + m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, m68k_op_divs_16_di, + m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, m68k_op_divs_16_ix, + m68k_op_divs_16_aw, m68k_op_divs_16_al, m68k_op_divs_16_pcdi, m68k_op_divs_16_pcix, m68k_op_divs_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm, m68k_op_subx_8_mm_ay7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, m68k_op_sub_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, m68k_op_sub_8_er_ai, + m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi, m68k_op_sub_8_er_pi7, + m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd, m68k_op_sub_8_er_pd7, + m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, m68k_op_sub_8_er_di, + m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, m68k_op_sub_8_er_ix, + m68k_op_sub_8_er_aw, m68k_op_sub_8_er_al, m68k_op_sub_8_er_pcdi, m68k_op_sub_8_er_pcix, m68k_op_sub_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, m68k_op_sub_16_er_d, + m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, m68k_op_sub_16_er_a, + m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, m68k_op_sub_16_er_ai, + m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, m68k_op_sub_16_er_pi, + m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, m68k_op_sub_16_er_pd, + m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, m68k_op_sub_16_er_di, + m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, m68k_op_sub_16_er_ix, + m68k_op_sub_16_er_aw, m68k_op_sub_16_er_al, m68k_op_sub_16_er_pcdi, m68k_op_sub_16_er_pcix, m68k_op_sub_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, m68k_op_sub_32_er_d, + m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, m68k_op_sub_32_er_a, + m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, m68k_op_sub_32_er_ai, + m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, m68k_op_sub_32_er_pi, + m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, m68k_op_sub_32_er_pd, + m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, m68k_op_sub_32_er_di, + m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, m68k_op_sub_32_er_ix, + m68k_op_sub_32_er_aw, m68k_op_sub_32_er_al, m68k_op_sub_32_er_pcdi, m68k_op_sub_32_er_pcix, m68k_op_sub_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, m68k_op_suba_16_d, + m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, m68k_op_suba_16_a, + m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, m68k_op_suba_16_ai, + m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, m68k_op_suba_16_pi, + m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, m68k_op_suba_16_pd, + m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, m68k_op_suba_16_di, + m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, m68k_op_suba_16_ix, + m68k_op_suba_16_aw, m68k_op_suba_16_al, m68k_op_suba_16_pcdi, m68k_op_suba_16_pcix, m68k_op_suba_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, m68k_op_subx_8_rr, + m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_ax7, m68k_op_subx_8_mm_axy7, + m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, m68k_op_sub_8_re_ai, + m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi, m68k_op_sub_8_re_pi7, + m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd, m68k_op_sub_8_re_pd7, + m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, m68k_op_sub_8_re_di, + m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, m68k_op_sub_8_re_ix, + m68k_op_sub_8_re_aw, m68k_op_sub_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, m68k_op_subx_16_rr, + m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, m68k_op_subx_16_mm, + m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, m68k_op_sub_16_re_ai, + m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, m68k_op_sub_16_re_pi, + m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, m68k_op_sub_16_re_pd, + m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, m68k_op_sub_16_re_di, + m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, m68k_op_sub_16_re_ix, + m68k_op_sub_16_re_aw, m68k_op_sub_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, m68k_op_subx_32_rr, + m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, m68k_op_subx_32_mm, + m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, m68k_op_sub_32_re_ai, + m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, m68k_op_sub_32_re_pi, + m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, m68k_op_sub_32_re_pd, + m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, m68k_op_sub_32_re_di, + m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, m68k_op_sub_32_re_ix, + m68k_op_sub_32_re_aw, m68k_op_sub_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, m68k_op_suba_32_d, + m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, m68k_op_suba_32_a, + m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, m68k_op_suba_32_ai, + m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, m68k_op_suba_32_pi, + m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, m68k_op_suba_32_pd, + m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, m68k_op_suba_32_di, + m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, m68k_op_suba_32_ix, + m68k_op_suba_32_aw, m68k_op_suba_32_al, m68k_op_suba_32_pcdi, m68k_op_suba_32_pcix, m68k_op_suba_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, m68k_op_1010, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8, m68k_op_cmpm_8_ay7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, m68k_op_cmp_8_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, m68k_op_cmp_8_ai, + m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi, m68k_op_cmp_8_pi7, + m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd, m68k_op_cmp_8_pd7, + m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, m68k_op_cmp_8_di, + m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, m68k_op_cmp_8_ix, + m68k_op_cmp_8_aw, m68k_op_cmp_8_al, m68k_op_cmp_8_pcdi, m68k_op_cmp_8_pcix, m68k_op_cmp_8_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, m68k_op_cmp_16_d, + m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, m68k_op_cmp_16_a, + m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, m68k_op_cmp_16_ai, + m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, m68k_op_cmp_16_pi, + m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, m68k_op_cmp_16_pd, + m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, m68k_op_cmp_16_di, + m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, m68k_op_cmp_16_ix, + m68k_op_cmp_16_aw, m68k_op_cmp_16_al, m68k_op_cmp_16_pcdi, m68k_op_cmp_16_pcix, m68k_op_cmp_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, m68k_op_cmp_32_d, + m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, m68k_op_cmp_32_a, + m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, m68k_op_cmp_32_ai, + m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, m68k_op_cmp_32_pi, + m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, m68k_op_cmp_32_pd, + m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, m68k_op_cmp_32_di, + m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, m68k_op_cmp_32_ix, + m68k_op_cmp_32_aw, m68k_op_cmp_32_al, m68k_op_cmp_32_pcdi, m68k_op_cmp_32_pcix, m68k_op_cmp_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, m68k_op_cmpa_16_d, + m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, m68k_op_cmpa_16_a, + m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, m68k_op_cmpa_16_ai, + m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, m68k_op_cmpa_16_pi, + m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, m68k_op_cmpa_16_pd, + m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, m68k_op_cmpa_16_di, + m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, m68k_op_cmpa_16_ix, + m68k_op_cmpa_16_aw, m68k_op_cmpa_16_al, m68k_op_cmpa_16_pcdi, m68k_op_cmpa_16_pcix, m68k_op_cmpa_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, m68k_op_eor_8_d, + m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_ax7, m68k_op_cmpm_8_axy7, + m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, m68k_op_eor_8_ai, + m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi, m68k_op_eor_8_pi7, + m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd, m68k_op_eor_8_pd7, + m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, m68k_op_eor_8_di, + m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, m68k_op_eor_8_ix, + m68k_op_eor_8_aw, m68k_op_eor_8_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, m68k_op_eor_16_d, + m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, m68k_op_cmpm_16, + m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, m68k_op_eor_16_ai, + m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, m68k_op_eor_16_pi, + m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, m68k_op_eor_16_pd, + m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, m68k_op_eor_16_di, + m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, m68k_op_eor_16_ix, + m68k_op_eor_16_aw, m68k_op_eor_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, m68k_op_eor_32_d, + m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, m68k_op_cmpm_32, + m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, m68k_op_eor_32_ai, + m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, m68k_op_eor_32_pi, + m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, m68k_op_eor_32_pd, + m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, m68k_op_eor_32_di, + m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, m68k_op_eor_32_ix, + m68k_op_eor_32_aw, m68k_op_eor_32_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, m68k_op_cmpa_32_d, + m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, m68k_op_cmpa_32_a, + m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, m68k_op_cmpa_32_ai, + m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, m68k_op_cmpa_32_pi, + m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, m68k_op_cmpa_32_pd, + m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, m68k_op_cmpa_32_di, + m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, m68k_op_cmpa_32_ix, + m68k_op_cmpa_32_aw, m68k_op_cmpa_32_al, m68k_op_cmpa_32_pcdi, m68k_op_cmpa_32_pcix, m68k_op_cmpa_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm, m68k_op_abcd_8_mm_ay7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, m68k_op_and_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, m68k_op_and_8_er_ai, + m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi, m68k_op_and_8_er_pi7, + m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd, m68k_op_and_8_er_pd7, + m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, m68k_op_and_8_er_di, + m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, m68k_op_and_8_er_ix, + m68k_op_and_8_er_aw, m68k_op_and_8_er_al, m68k_op_and_8_er_pcdi, m68k_op_and_8_er_pcix, m68k_op_and_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, m68k_op_and_16_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, m68k_op_and_16_er_ai, + m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, m68k_op_and_16_er_pi, + m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, m68k_op_and_16_er_pd, + m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, m68k_op_and_16_er_di, + m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, m68k_op_and_16_er_ix, + m68k_op_and_16_er_aw, m68k_op_and_16_er_al, m68k_op_and_16_er_pcdi, m68k_op_and_16_er_pcix, m68k_op_and_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, m68k_op_and_32_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, m68k_op_and_32_er_ai, + m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, m68k_op_and_32_er_pi, + m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, m68k_op_and_32_er_pd, + m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, m68k_op_and_32_er_di, + m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, m68k_op_and_32_er_ix, + m68k_op_and_32_er_aw, m68k_op_and_32_er_al, m68k_op_and_32_er_pcdi, m68k_op_and_32_er_pcix, m68k_op_and_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, m68k_op_mulu_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, m68k_op_mulu_16_ai, + m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, m68k_op_mulu_16_pi, + m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, m68k_op_mulu_16_pd, + m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, m68k_op_mulu_16_di, + m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, m68k_op_mulu_16_ix, + m68k_op_mulu_16_aw, m68k_op_mulu_16_al, m68k_op_mulu_16_pcdi, m68k_op_mulu_16_pcix, m68k_op_mulu_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, m68k_op_abcd_8_rr, + m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_ax7, m68k_op_abcd_8_mm_axy7, + m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, m68k_op_and_8_re_ai, + m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi, m68k_op_and_8_re_pi7, + m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd, m68k_op_and_8_re_pd7, + m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, m68k_op_and_8_re_di, + m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, m68k_op_and_8_re_ix, + m68k_op_and_8_re_aw, m68k_op_and_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, m68k_op_exg_32_dd, + m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, m68k_op_exg_32_aa, + m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, m68k_op_and_16_re_ai, + m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, m68k_op_and_16_re_pi, + m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, m68k_op_and_16_re_pd, + m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, m68k_op_and_16_re_di, + m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, m68k_op_and_16_re_ix, + m68k_op_and_16_re_aw, m68k_op_and_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, m68k_op_exg_32_da, + m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, m68k_op_and_32_re_ai, + m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, m68k_op_and_32_re_pi, + m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, m68k_op_and_32_re_pd, + m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, m68k_op_and_32_re_di, + m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, m68k_op_and_32_re_ix, + m68k_op_and_32_re_aw, m68k_op_and_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, m68k_op_muls_16_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, m68k_op_muls_16_ai, + m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, m68k_op_muls_16_pi, + m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, m68k_op_muls_16_pd, + m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, m68k_op_muls_16_di, + m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, m68k_op_muls_16_ix, + m68k_op_muls_16_aw, m68k_op_muls_16_al, m68k_op_muls_16_pcdi, m68k_op_muls_16_pcix, m68k_op_muls_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm, m68k_op_addx_8_mm_ay7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, m68k_op_add_8_er_d, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, m68k_op_add_8_er_ai, + m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi, m68k_op_add_8_er_pi7, + m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd, m68k_op_add_8_er_pd7, + m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, m68k_op_add_8_er_di, + m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, m68k_op_add_8_er_ix, + m68k_op_add_8_er_aw, m68k_op_add_8_er_al, m68k_op_add_8_er_pcdi, m68k_op_add_8_er_pcix, m68k_op_add_8_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, m68k_op_add_16_er_d, + m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, m68k_op_add_16_er_a, + m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, m68k_op_add_16_er_ai, + m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, m68k_op_add_16_er_pi, + m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, m68k_op_add_16_er_pd, + m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, m68k_op_add_16_er_di, + m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, m68k_op_add_16_er_ix, + m68k_op_add_16_er_aw, m68k_op_add_16_er_al, m68k_op_add_16_er_pcdi, m68k_op_add_16_er_pcix, m68k_op_add_16_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, m68k_op_add_32_er_d, + m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, m68k_op_add_32_er_a, + m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, m68k_op_add_32_er_ai, + m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, m68k_op_add_32_er_pi, + m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, m68k_op_add_32_er_pd, + m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, m68k_op_add_32_er_di, + m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, m68k_op_add_32_er_ix, + m68k_op_add_32_er_aw, m68k_op_add_32_er_al, m68k_op_add_32_er_pcdi, m68k_op_add_32_er_pcix, m68k_op_add_32_er_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, m68k_op_adda_16_d, + m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, m68k_op_adda_16_a, + m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, m68k_op_adda_16_ai, + m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, m68k_op_adda_16_pi, + m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, m68k_op_adda_16_pd, + m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, m68k_op_adda_16_di, + m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, m68k_op_adda_16_ix, + m68k_op_adda_16_aw, m68k_op_adda_16_al, m68k_op_adda_16_pcdi, m68k_op_adda_16_pcix, m68k_op_adda_16_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, m68k_op_addx_8_rr, + m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_ax7, m68k_op_addx_8_mm_axy7, + m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, m68k_op_add_8_re_ai, + m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi, m68k_op_add_8_re_pi7, + m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd, m68k_op_add_8_re_pd7, + m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, m68k_op_add_8_re_di, + m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, m68k_op_add_8_re_ix, + m68k_op_add_8_re_aw, m68k_op_add_8_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, m68k_op_addx_16_rr, + m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, m68k_op_addx_16_mm, + m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, m68k_op_add_16_re_ai, + m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, m68k_op_add_16_re_pi, + m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, m68k_op_add_16_re_pd, + m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, m68k_op_add_16_re_di, + m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, m68k_op_add_16_re_ix, + m68k_op_add_16_re_aw, m68k_op_add_16_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, m68k_op_addx_32_rr, + m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, m68k_op_addx_32_mm, + m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, m68k_op_add_32_re_ai, + m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, m68k_op_add_32_re_pi, + m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, m68k_op_add_32_re_pd, + m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, m68k_op_add_32_re_di, + m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, m68k_op_add_32_re_ix, + m68k_op_add_32_re_aw, m68k_op_add_32_re_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, m68k_op_adda_32_d, + m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, m68k_op_adda_32_a, + m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, m68k_op_adda_32_ai, + m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, m68k_op_adda_32_pi, + m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, m68k_op_adda_32_pd, + m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, m68k_op_adda_32_di, + m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, m68k_op_adda_32_ix, + m68k_op_adda_32_aw, m68k_op_adda_32_al, m68k_op_adda_32_pcdi, m68k_op_adda_32_pcix, m68k_op_adda_32_i, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, m68k_op_asr_16_ai, + m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, m68k_op_asr_16_pi, + m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, m68k_op_asr_16_pd, + m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, m68k_op_asr_16_di, + m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, m68k_op_asr_16_ix, + m68k_op_asr_16_aw, m68k_op_asr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, m68k_op_asl_16_ai, + m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, m68k_op_asl_16_pi, + m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, m68k_op_asl_16_pd, + m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, m68k_op_asl_16_di, + m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, m68k_op_asl_16_ix, + m68k_op_asl_16_aw, m68k_op_asl_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, m68k_op_lsr_16_ai, + m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, m68k_op_lsr_16_pi, + m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, m68k_op_lsr_16_pd, + m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, m68k_op_lsr_16_di, + m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, m68k_op_lsr_16_ix, + m68k_op_lsr_16_aw, m68k_op_lsr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, m68k_op_lsl_16_ai, + m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, m68k_op_lsl_16_pi, + m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, m68k_op_lsl_16_pd, + m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, m68k_op_lsl_16_di, + m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, m68k_op_lsl_16_ix, + m68k_op_lsl_16_aw, m68k_op_lsl_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, m68k_op_roxr_16_ai, + m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, m68k_op_roxr_16_pi, + m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, m68k_op_roxr_16_pd, + m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, m68k_op_roxr_16_di, + m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, m68k_op_roxr_16_ix, + m68k_op_roxr_16_aw, m68k_op_roxr_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, m68k_op_roxl_16_ai, + m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, m68k_op_roxl_16_pi, + m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, m68k_op_roxl_16_pd, + m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, m68k_op_roxl_16_di, + m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, m68k_op_roxl_16_ix, + m68k_op_roxl_16_aw, m68k_op_roxl_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, m68k_op_ror_16_ai, + m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, m68k_op_ror_16_pi, + m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, m68k_op_ror_16_pd, + m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, m68k_op_ror_16_di, + m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, m68k_op_ror_16_ix, + m68k_op_ror_16_aw, m68k_op_ror_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, m68k_op_rol_16_ai, + m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, m68k_op_rol_16_pi, + m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, m68k_op_rol_16_pd, + m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, m68k_op_rol_16_di, + m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, m68k_op_rol_16_ix, + m68k_op_rol_16_aw, m68k_op_rol_16_al, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, m68k_op_asr_8_s, + m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, m68k_op_lsr_8_s, + m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, m68k_op_roxr_8_s, + m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, m68k_op_ror_8_s, + m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, m68k_op_asr_8_r, + m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, m68k_op_lsr_8_r, + m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, m68k_op_roxr_8_r, + m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, m68k_op_ror_8_r, + m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, m68k_op_asr_16_s, + m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, m68k_op_lsr_16_s, + m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, m68k_op_roxr_16_s, + m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, m68k_op_ror_16_s, + m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, m68k_op_asr_16_r, + m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, m68k_op_lsr_16_r, + m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, m68k_op_roxr_16_r, + m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, m68k_op_ror_16_r, + m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, m68k_op_asr_32_s, + m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, m68k_op_lsr_32_s, + m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, m68k_op_roxr_32_s, + m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, m68k_op_ror_32_s, + m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, m68k_op_asr_32_r, + m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, m68k_op_lsr_32_r, + m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, m68k_op_roxr_32_r, + m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, m68k_op_ror_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, m68k_op_asl_8_s, + m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, m68k_op_lsl_8_s, + m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, m68k_op_roxl_8_s, + m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, m68k_op_rol_8_s, + m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, m68k_op_asl_8_r, + m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, m68k_op_lsl_8_r, + m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, m68k_op_roxl_8_r, + m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, m68k_op_rol_8_r, + m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, m68k_op_asl_16_s, + m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, m68k_op_lsl_16_s, + m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, m68k_op_roxl_16_s, + m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, m68k_op_rol_16_s, + m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, m68k_op_asl_16_r, + m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, m68k_op_lsl_16_r, + m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, m68k_op_roxl_16_r, + m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, m68k_op_rol_16_r, + m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, m68k_op_asl_32_s, + m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, m68k_op_lsl_32_s, + m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, m68k_op_roxl_32_s, + m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, m68k_op_rol_32_s, + m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, m68k_op_asl_32_r, + m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, m68k_op_lsl_32_r, + m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, m68k_op_roxl_32_r, + m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, m68k_op_rol_32_r, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, m68k_op_illegal, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, + m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, m68k_op_1111, +}; diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kops.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kops.h similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kops.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kops.h index 1a8d10d6ea..064772092d 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/m68kops.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/m68kops.h @@ -1,25490 +1,25490 @@ - -/* ======================================================================== */ -/* ============== CYCLE-ACCURATE DIV/MUL EXECUTION ======================== */ -/* ======================================================================== */ - -INLINE void UseDivuCycles(uint32 dst, uint32 src) -{ - int i; - - /* minimum cycle time */ - uint mcycles = 38 * MUL; - - /* 16-bit divisor */ - src <<= 16; - - /* 16-bit dividend */ - for (i=0; i<15; i++) - { - /* check if carry bit set */ - if ((sint32) dst < 0) - { - /* shift dividend and apply divisor */ - dst <<= 1; - dst -= src; - } - else - { - /* shift dividend and add two cycles */ - dst <<= 1; - mcycles += (2 * MUL); - - if (dst >= src) - { - /* apply divisor and remove one cycle */ - dst -= src; - mcycles -= 1 * MUL; - } - } - } - - USE_CYCLES(mcycles << 1); -} - -INLINE void UseDivsCycles(sint32 dst, sint16 src) -{ - /* minimum cycle time */ - uint mcycles = 6 * MUL; - - /* negative dividend */ - if (dst < 0) mcycles += 1 * MUL; - - if ((abs(dst) >> 16) < abs(src)) - { - int i; - - /* absolute quotient */ - uint32 quotient = abs(dst) / abs(src); - - /* add default cycle time */ - mcycles += (55 * MUL); - - /* positive divisor */ - if (src >= 0) - { - /* check dividend sign */ - if (dst >= 0) mcycles -= 1 * MUL; - else mcycles += 1 * MUL; - } - - /* check higher 15-bits of quotient */ - for (i=0; i<15; i++) - { - quotient >>= 1; - if (!(quotient & 1)) mcycles += 1 * MUL; - } - } - else - { - /* absolute overflow */ - mcycles += (2 * MUL); - } - - USE_CYCLES(mcycles << 1); -} - -INLINE void UseMuluCycles(uint16 src) -{ - /* minimum cycle time */ - uint mcycles = 38 * MUL; - - /* count number of bits set to 1 */ - while (src) - { - if (src & 1) mcycles += (2 * MUL); - src >>= 1; - } - - /* 38 + 2*N */ - USE_CYCLES(mcycles); -} - -INLINE void UseMulsCycles(sint16 src) -{ - /* minimum cycle time */ - uint mcycles = 38 * MUL; - - /* detect 01 or 10 patterns */ - sint32 tmp = src << 1; - tmp = (tmp ^ src) & 0xFFFF; - - /* count number of bits set to 1 */ - while (tmp) - { - if (tmp & 1) mcycles += (2 * MUL); - tmp >>= 1; - } - - /* 38 + 2*N */ - USE_CYCLES(mcycles); -} - - -/* ======================================================================== */ -/* ========================= INSTRUCTION HANDLERS ========================= */ -/* ======================================================================== */ - - -static void m68k_op_1010(void) -{ - m68ki_exception_1010(); -} - - -static void m68k_op_1111(void) -{ - m68ki_exception_1111(); -} - - -static void m68k_op_abcd_8_rr(void) -{ - uint* r_dst = &DX; - uint src = DY; - uint dst = *r_dst; - uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); - uint corf = 0; - - if(res > 9) - corf = 6; - res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); - FLAG_V = ~res; /* Undefined V behavior */ - - res += corf; - FLAG_X = FLAG_C = (res > 0x9f) << 8; - if(FLAG_C) - res -= 0xa0; - - FLAG_V &= res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; -} - - -static void m68k_op_abcd_8_mm_ax7(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); - uint corf = 0; - - if(res > 9) - corf = 6; - res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); - FLAG_V = ~res; /* Undefined V behavior */ - - res += corf; - FLAG_X = FLAG_C = (res > 0x9f) << 8; - if(FLAG_C) - res -= 0xa0; - - FLAG_V &= res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_abcd_8_mm_ay7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); - uint corf = 0; - - if(res > 9) - corf = 6; - res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); - FLAG_V = ~res; /* Undefined V behavior */ - - res += corf; - FLAG_X = FLAG_C = (res > 0x9f) << 8; - if(FLAG_C) - res -= 0xa0; - - FLAG_V &= res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_abcd_8_mm_axy7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); - uint corf = 0; - - if(res > 9) - corf = 6; - res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); - FLAG_V = ~res; /* Undefined V behavior */ - - res += corf; - FLAG_X = FLAG_C = (res > 0x9f) << 8; - if(FLAG_C) - res -= 0xa0; - - FLAG_V &= res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_abcd_8_mm(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); - uint corf = 0; - - if(res > 9) - corf = 6; - res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); - FLAG_V = ~res; /* Undefined V behavior */ - - res += corf; - FLAG_X = FLAG_C = (res > 0x9f) << 8; - if(FLAG_C) - res -= 0xa0; - - FLAG_V &= res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_add_8_er_d(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_8(DY); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_pi7(void) -{ - uint* r_dst = &DX; - uint src = OPER_A7_PI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_pd7(void) -{ - uint* r_dst = &DX; - uint src = OPER_A7_PD_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_8_er_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_d(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(DY); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_a(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(AY); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_16_er_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_add_32_er_d(void) -{ - uint* r_dst = &DX; - uint src = DY; - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_a(void) -{ - uint* r_dst = &DX; - uint src = AY; - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_32_er_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_add_8_re_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_di(void) -{ - uint ea = EA_AY_DI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_aw(void) -{ - uint ea = EA_AW_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_8_re_al(void) -{ - uint ea = EA_AL_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_add_16_re_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_add_16_re_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_add_16_re_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_add_16_re_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_add_16_re_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_add_16_re_aw(void) -{ - uint ea = EA_AW_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_add_16_re_al(void) -{ - uint ea = EA_AL_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_add_32_re_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_add_32_re_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_add_32_re_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_add_32_re_di(void) -{ - uint ea = EA_AY_DI_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_add_32_re_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_add_32_re_aw(void) -{ - uint ea = EA_AW_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_add_32_re_al(void) -{ - uint ea = EA_AL_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_adda_16_d(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY)); -} - - -static void m68k_op_adda_16_a(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY)); -} - - -static void m68k_op_adda_16_ai(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_AI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_pi(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_PI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_pd(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_PD_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_di(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_DI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_ix(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_IX_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_aw(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AW_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_al(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AL_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_pcdi(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_PCDI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_pcix(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_PCIX_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_16_i(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_I_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); -} - - -static void m68k_op_adda_32_d(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY); -} - - -static void m68k_op_adda_32_a(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY); -} - - -static void m68k_op_adda_32_ai(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_AY_AI_32() + *r_dst); -} - - -static void m68k_op_adda_32_pi(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_AY_PI_32() + *r_dst); -} - - -static void m68k_op_adda_32_pd(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_AY_PD_32() + *r_dst); -} - - -static void m68k_op_adda_32_di(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_AY_DI_32() + *r_dst); -} - - -static void m68k_op_adda_32_ix(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_AY_IX_32() + *r_dst); -} - - -static void m68k_op_adda_32_aw(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_AW_32() + *r_dst); -} - - -static void m68k_op_adda_32_al(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_AL_32() + *r_dst); -} - - -static void m68k_op_adda_32_pcdi(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_PCDI_32() + *r_dst); -} - - -static void m68k_op_adda_32_pcix(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_PCIX_32() + *r_dst); -} - - -static void m68k_op_adda_32_i(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(OPER_I_32() + *r_dst); -} - - -static void m68k_op_addi_8_d(void) -{ - uint* r_dst = &DY; - uint src = OPER_I_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_addi_8_ai(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_AI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_pi(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_pi7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_pd(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_pd7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_di(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_DI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_ix(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_IX_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_aw(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AW_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_8_al(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AL_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addi_16_d(void) -{ - uint* r_dst = &DY; - uint src = OPER_I_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_addi_16_ai(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_AI_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addi_16_pi(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PI_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addi_16_pd(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PD_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addi_16_di(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_DI_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addi_16_ix(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_IX_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addi_16_aw(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AW_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addi_16_al(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AL_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addi_32_d(void) -{ - uint* r_dst = &DY; - uint src = OPER_I_32(); - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_addi_32_ai(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_AI_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addi_32_pi(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PI_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addi_32_pd(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PD_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addi_32_di(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_DI_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addi_32_ix(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_IX_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addi_32_aw(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AW_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addi_32_al(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AL_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_d(void) -{ - uint* r_dst = &DY; - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_addq_8_ai(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_AI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_pi(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_pi7(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_A7_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_pd(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_pd7(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_di(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_DI_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_ix(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_IX_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_aw(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AW_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_8_al(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AL_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst; - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_addq_16_d(void) -{ - uint* r_dst = &DY; - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_addq_16_a(void) -{ - uint* r_dst = &AY; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1); -} - - -static void m68k_op_addq_16_ai(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_AI_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addq_16_pi(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PI_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addq_16_pd(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PD_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addq_16_di(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_DI_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addq_16_ix(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_IX_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addq_16_aw(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AW_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addq_16_al(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AL_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst; - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_addq_32_d(void) -{ - uint* r_dst = &DY; - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint dst = *r_dst; - uint res = src + dst; - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_addq_32_a(void) -{ - uint* r_dst = &AY; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1); -} - - -static void m68k_op_addq_32_ai(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_AI_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addq_32_pi(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PI_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addq_32_pd(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PD_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addq_32_di(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_DI_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addq_32_ix(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_IX_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addq_32_aw(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AW_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addq_32_al(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AL_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst; - - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_addx_8_rr(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_8(DY); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; -} - - -static void m68k_op_addx_16_rr(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(DY); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; -} - - -static void m68k_op_addx_32_rr(void) -{ - uint* r_dst = &DX; - uint src = DY; - uint dst = *r_dst; - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - *r_dst = res; -} - - -static void m68k_op_addx_8_mm_ax7(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_addx_8_mm_ay7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_addx_8_mm_axy7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_addx_8_mm(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_V = VFLAG_ADD_8(src, dst, res); - FLAG_X = FLAG_C = CFLAG_8(res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_addx_16_mm(void) -{ - uint src = OPER_AY_PD_16(); - uint ea = EA_AX_PD_16(); - uint dst = m68ki_read_16(ea); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_V = VFLAG_ADD_16(src, dst, res); - FLAG_X = FLAG_C = CFLAG_16(res); - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_addx_32_mm(void) -{ - uint src = OPER_AY_PD_32(); - uint ea = EA_AX_PD_32(); - uint dst = m68ki_read_32(ea); - uint res = src + dst + XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_ADD_32(src, dst, res); - FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_and_8_er_d(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (DY | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_ai(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_AI_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_pi(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PI_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_pi7(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PI_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_pd(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PD_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_pd7(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PD_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_di(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_DI_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_ix(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_IX_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_aw(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AW_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_al(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AL_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_pcdi(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCDI_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_pcix(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCIX_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_er_i(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_I_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_d(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (DY | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_ai(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_AI_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_pi(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PI_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_pd(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PD_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_di(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_DI_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_ix(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_IX_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_aw(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AW_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_al(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AL_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_pcdi(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCDI_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_pcix(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCIX_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_16_er_i(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_I_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_d(void) -{ - FLAG_Z = DX &= DY; - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_ai(void) -{ - FLAG_Z = DX &= OPER_AY_AI_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_pi(void) -{ - FLAG_Z = DX &= OPER_AY_PI_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_pd(void) -{ - FLAG_Z = DX &= OPER_AY_PD_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_di(void) -{ - FLAG_Z = DX &= OPER_AY_DI_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_ix(void) -{ - FLAG_Z = DX &= OPER_AY_IX_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_aw(void) -{ - FLAG_Z = DX &= OPER_AW_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_al(void) -{ - FLAG_Z = DX &= OPER_AL_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_pcdi(void) -{ - FLAG_Z = DX &= OPER_PCDI_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_pcix(void) -{ - FLAG_Z = DX &= OPER_PCIX_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_32_er_i(void) -{ - FLAG_Z = DX &= OPER_I_32(); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_and_8_re_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_di(void) -{ - uint ea = EA_AY_DI_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_aw(void) -{ - uint ea = EA_AW_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_8_re_al(void) -{ - uint ea = EA_AL_8(); - uint res = DX & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_and_16_re_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint res = DX & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_and_16_re_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint res = DX & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_and_16_re_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint res = DX & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_and_16_re_di(void) -{ - uint ea = EA_AY_DI_16(); - uint res = DX & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_and_16_re_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint res = DX & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_and_16_re_aw(void) -{ - uint ea = EA_AW_16(); - uint res = DX & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_and_16_re_al(void) -{ - uint ea = EA_AL_16(); - uint res = DX & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_and_32_re_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint res = DX & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_and_32_re_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint res = DX & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_and_32_re_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint res = DX & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_and_32_re_di(void) -{ - uint ea = EA_AY_DI_32(); - uint res = DX & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_and_32_re_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint res = DX & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_and_32_re_aw(void) -{ - uint ea = EA_AW_32(); - uint res = DX & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_and_32_re_al(void) -{ - uint ea = EA_AL_32(); - uint res = DX & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_8_d(void) -{ - FLAG_Z = MASK_OUT_ABOVE_8(DY &= (OPER_I_8() | 0xffffff00)); - - FLAG_N = NFLAG_8(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_andi_8_ai(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_AI_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_pi(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PI_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_pi7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PI_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_pd(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PD_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_pd7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PD_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_di(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_DI_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_ix(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_IX_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_aw(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AW_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_8_al(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AL_8(); - uint res = src & m68ki_read_8(ea); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_andi_16_d(void) -{ - FLAG_Z = MASK_OUT_ABOVE_16(DY &= (OPER_I_16() | 0xffff0000)); - - FLAG_N = NFLAG_16(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_andi_16_ai(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_AI_16(); - uint res = src & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_andi_16_pi(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PI_16(); - uint res = src & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_andi_16_pd(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PD_16(); - uint res = src & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_andi_16_di(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_DI_16(); - uint res = src & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_andi_16_ix(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_IX_16(); - uint res = src & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_andi_16_aw(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AW_16(); - uint res = src & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_andi_16_al(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AL_16(); - uint res = src & m68ki_read_16(ea); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_andi_32_d(void) -{ - FLAG_Z = DY &= (OPER_I_32()); - - FLAG_N = NFLAG_32(FLAG_Z); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_andi_32_ai(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_AI_32(); - uint res = src & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_32_pi(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PI_32(); - uint res = src & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_32_pd(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PD_32(); - uint res = src & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_32_di(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_DI_32(); - uint res = src & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_32_ix(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_IX_32(); - uint res = src & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_32_aw(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AW_32(); - uint res = src & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_32_al(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AL_32(); - uint res = src & m68ki_read_32(ea); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_andi_16_toc(void) -{ - m68ki_set_ccr(m68ki_get_ccr() & OPER_I_16()); -} - - -static void m68k_op_andi_16_tos(void) -{ - if(FLAG_S) - { - uint src = OPER_I_16(); - m68ki_set_sr(m68ki_get_sr() & src); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_asr_8_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = src >> shift; - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - if(GET_MSB_8(src)) - res |= m68ki_shift_8_table[shift]; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_X = FLAG_C = src << (9-shift); -} - - -static void m68k_op_asr_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = src >> shift; - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - if(GET_MSB_16(src)) - res |= m68ki_shift_16_table[shift]; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_X = FLAG_C = src << (9-shift); -} - - -static void m68k_op_asr_32_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = *r_dst; - uint res = src >> shift; - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - if(GET_MSB_32(src)) - res |= m68ki_shift_32_table[shift]; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_X = FLAG_C = src << (9-shift); -} - - -static void m68k_op_asr_8_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = src >> shift; - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 8) - { - if(GET_MSB_8(src)) - res |= m68ki_shift_8_table[shift]; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_X = FLAG_C = src << (9-shift); - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - if(GET_MSB_8(src)) - { - *r_dst |= 0xff; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_SET; - FLAG_Z = ZFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst &= 0xffffff00; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_8(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_asr_16_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = src >> shift; - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 16) - { - if(GET_MSB_16(src)) - res |= m68ki_shift_16_table[shift]; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_C = FLAG_X = (src >> (shift - 1))<<8; - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - if(GET_MSB_16(src)) - { - *r_dst |= 0xffff; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_SET; - FLAG_Z = ZFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst &= 0xffff0000; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_16(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_asr_32_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = *r_dst; - uint res = src >> shift; - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 32) - { - if(GET_MSB_32(src)) - res |= m68ki_shift_32_table[shift]; - - *r_dst = res; - - FLAG_C = FLAG_X = (src >> (shift - 1))<<8; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - if(GET_MSB_32(src)) - { - *r_dst = 0xffffffff; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_SET; - FLAG_Z = ZFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst = 0; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_32(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_asr_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - if(GET_MSB_16(src)) - res |= 0x8000; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = FLAG_X = src << 8; -} - - -static void m68k_op_asr_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - if(GET_MSB_16(src)) - res |= 0x8000; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = FLAG_X = src << 8; -} - - -static void m68k_op_asr_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - if(GET_MSB_16(src)) - res |= 0x8000; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = FLAG_X = src << 8; -} - - -static void m68k_op_asr_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - if(GET_MSB_16(src)) - res |= 0x8000; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = FLAG_X = src << 8; -} - - -static void m68k_op_asr_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - if(GET_MSB_16(src)) - res |= 0x8000; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = FLAG_X = src << 8; -} - - -static void m68k_op_asr_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - if(GET_MSB_16(src)) - res |= 0x8000; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = FLAG_X = src << 8; -} - - -static void m68k_op_asr_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - if(GET_MSB_16(src)) - res |= 0x8000; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = FLAG_X = src << 8; -} - - -static void m68k_op_asl_8_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = MASK_OUT_ABOVE_8(src << shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_X = FLAG_C = src << shift; - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - src &= m68ki_shift_8_table[shift + 1]; - FLAG_V = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7; -} - - -static void m68k_op_asl_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = MASK_OUT_ABOVE_16(src << shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> (8-shift); - src &= m68ki_shift_16_table[shift + 1]; - FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7; -} - - -static void m68k_op_asl_32_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32(src << shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> (24-shift); - src &= m68ki_shift_32_table[shift + 1]; - FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7; -} - - -static void m68k_op_asl_8_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = MASK_OUT_ABOVE_8(src << shift); - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 8) - { - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - FLAG_X = FLAG_C = src << shift; - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - src &= m68ki_shift_8_table[shift + 1]; - FLAG_V = (!(src == 0 || src == m68ki_shift_8_table[shift + 1]))<<7; - return; - } - - *r_dst &= 0xffffff00; - FLAG_X = FLAG_C = ((shift == 8 ? src & 1 : 0))<<8; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = (!(src == 0))<<7; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_8(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_asl_16_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = MASK_OUT_ABOVE_16(src << shift); - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 16) - { - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - FLAG_X = FLAG_C = (src << shift) >> 8; - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - src &= m68ki_shift_16_table[shift + 1]; - FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7; - return; - } - - *r_dst &= 0xffff0000; - FLAG_X = FLAG_C = ((shift == 16 ? src & 1 : 0))<<8; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = (!(src == 0))<<7; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_16(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_asl_32_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32(src << shift); - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 32) - { - *r_dst = res; - FLAG_X = FLAG_C = (src >> (32 - shift)) << 8; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - src &= m68ki_shift_32_table[shift + 1]; - FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7; - return; - } - - *r_dst = 0; - FLAG_X = FLAG_C = ((shift == 32 ? src & 1 : 0))<<8; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = (!(src == 0))<<7; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_32(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_asl_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - src &= 0xc000; - FLAG_V = (!(src == 0 || src == 0xc000))<<7; -} - - -static void m68k_op_asl_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - src &= 0xc000; - FLAG_V = (!(src == 0 || src == 0xc000))<<7; -} - - -static void m68k_op_asl_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - src &= 0xc000; - FLAG_V = (!(src == 0 || src == 0xc000))<<7; -} - - -static void m68k_op_asl_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - src &= 0xc000; - FLAG_V = (!(src == 0 || src == 0xc000))<<7; -} - - -static void m68k_op_asl_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - src &= 0xc000; - FLAG_V = (!(src == 0 || src == 0xc000))<<7; -} - - -static void m68k_op_asl_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - src &= 0xc000; - FLAG_V = (!(src == 0 || src == 0xc000))<<7; -} - - -static void m68k_op_asl_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - src &= 0xc000; - FLAG_V = (!(src == 0 || src == 0xc000))<<7; -} - - -static void m68k_op_bhi_8(void) -{ - if(COND_HI()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bls_8(void) -{ - if(COND_LS()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bcc_8(void) -{ - if(COND_CC()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bcs_8(void) -{ - if(COND_CS()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bne_8(void) -{ - if(COND_NE()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_beq_8(void) -{ - if(COND_EQ()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bvc_8(void) -{ - if(COND_VC()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bvs_8(void) -{ - if(COND_VS()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bpl_8(void) -{ - if(COND_PL()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bmi_8(void) -{ - if(COND_MI()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bge_8(void) -{ - if(COND_GE()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_blt_8(void) -{ - if(COND_LT()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bgt_8(void) -{ - if(COND_GT()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_ble_8(void) -{ - if(COND_LE()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bhi_16(void) -{ - if(COND_HI()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bls_16(void) -{ - if(COND_LS()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bcc_16(void) -{ - if(COND_CC()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bcs_16(void) -{ - if(COND_CS()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bne_16(void) -{ - if(COND_NE()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_beq_16(void) -{ - if(COND_EQ()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bvc_16(void) -{ - if(COND_VC()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bvs_16(void) -{ - if(COND_VS()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bpl_16(void) -{ - if(COND_PL()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bmi_16(void) -{ - if(COND_MI()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bge_16(void) -{ - if(COND_GE()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_blt_16(void) -{ - if(COND_LT()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bgt_16(void) -{ - if(COND_GT()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_ble_16(void) -{ - if(COND_LE()) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - return; - } - REG_PC += 2; - USE_CYCLES(CYC_BCC_NOTAKE_W); -} - - -static void m68k_op_bhi_32(void) -{ - if(COND_HI()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bls_32(void) -{ - if(COND_LS()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bcc_32(void) -{ - if(COND_CC()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bcs_32(void) -{ - if(COND_CS()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bne_32(void) -{ - if(COND_NE()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_beq_32(void) -{ - if(COND_EQ()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bvc_32(void) -{ - if(COND_VC()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bvs_32(void) -{ - if(COND_VS()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bpl_32(void) -{ - if(COND_PL()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bmi_32(void) -{ - if(COND_MI()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bge_32(void) -{ - if(COND_GE()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_blt_32(void) -{ - if(COND_LT()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bgt_32(void) -{ - if(COND_GT()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_ble_32(void) -{ - if(COND_LE()) - { - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); - return; - } - USE_CYCLES(CYC_BCC_NOTAKE_B); -} - - -static void m68k_op_bchg_32_r_d(void) -{ - uint* r_dst = &DY; - uint mask = 1 << (DX & 0x1f); - - FLAG_Z = *r_dst & mask; - *r_dst ^= mask; -} - - -static void m68k_op_bchg_8_r_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_di(void) -{ - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_aw(void) -{ - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_r_al(void) -{ - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_32_s_d(void) -{ - uint* r_dst = &DY; - uint mask = 1 << (OPER_I_8() & 0x1f); - - FLAG_Z = *r_dst & mask; - *r_dst ^= mask; -} - - -static void m68k_op_bchg_8_s_ai(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_pi(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_pi7(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_pd(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_pd7(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_di(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_ix(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_aw(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bchg_8_s_al(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src ^ mask); -} - - -static void m68k_op_bclr_32_r_d(void) -{ - uint* r_dst = &DY; - uint mask = 1 << (DX & 0x1f); - - FLAG_Z = *r_dst & mask; - *r_dst &= ~mask; -} - - -static void m68k_op_bclr_8_r_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_di(void) -{ - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_aw(void) -{ - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_r_al(void) -{ - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_32_s_d(void) -{ - uint* r_dst = &DY; - uint mask = 1 << (OPER_I_8() & 0x1f); - - FLAG_Z = *r_dst & mask; - *r_dst &= ~mask; -} - - -static void m68k_op_bclr_8_s_ai(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_pi(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_pi7(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_pd(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_pd7(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_di(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_ix(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_aw(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bclr_8_s_al(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src & ~mask); -} - - -static void m68k_op_bra_8(void) -{ - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); -} - - -static void m68k_op_bra_16(void) -{ - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); -} - - -static void m68k_op_bra_32(void) -{ - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); -} - - -static void m68k_op_bset_32_r_d(void) -{ - uint* r_dst = &DY; - uint mask = 1 << (DX & 0x1f); - - FLAG_Z = *r_dst & mask; - *r_dst |= mask; -} - - -static void m68k_op_bset_8_r_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_di(void) -{ - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_aw(void) -{ - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_r_al(void) -{ - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - uint mask = 1 << (DX & 7); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_32_s_d(void) -{ - uint* r_dst = &DY; - uint mask = 1 << (OPER_I_8() & 0x1f); - - FLAG_Z = *r_dst & mask; - *r_dst |= mask; -} - - -static void m68k_op_bset_8_s_ai(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_pi(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_pi7(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_pd(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_pd7(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_di(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_ix(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_aw(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bset_8_s_al(void) -{ - uint mask = 1 << (OPER_I_8() & 7); - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - - FLAG_Z = src & mask; - m68ki_write_8(ea, src | mask); -} - - -static void m68k_op_bsr_8(void) -{ - m68ki_push_32(REG_PC); - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); -} - - -static void m68k_op_bsr_16(void) -{ - uint offset = OPER_I_16(); - m68ki_push_32(REG_PC); - REG_PC -= 2; - m68ki_branch_16(offset); -} - - -static void m68k_op_bsr_32(void) -{ - m68ki_push_32(REG_PC); - m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); -} - - -static void m68k_op_btst_32_r_d(void) -{ - FLAG_Z = DY & (1 << (DX & 0x1f)); -} - - -static void m68k_op_btst_8_r_ai(void) -{ - FLAG_Z = OPER_AY_AI_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_pi(void) -{ - FLAG_Z = OPER_AY_PI_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_pi7(void) -{ - FLAG_Z = OPER_A7_PI_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_pd(void) -{ - FLAG_Z = OPER_AY_PD_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_pd7(void) -{ - FLAG_Z = OPER_A7_PD_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_di(void) -{ - FLAG_Z = OPER_AY_DI_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_ix(void) -{ - FLAG_Z = OPER_AY_IX_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_aw(void) -{ - FLAG_Z = OPER_AW_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_al(void) -{ - FLAG_Z = OPER_AL_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_pcdi(void) -{ - FLAG_Z = OPER_PCDI_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_pcix(void) -{ - FLAG_Z = OPER_PCIX_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_8_r_i(void) -{ - FLAG_Z = OPER_I_8() & (1 << (DX & 7)); -} - - -static void m68k_op_btst_32_s_d(void) -{ - FLAG_Z = DY & (1 << (OPER_I_8() & 0x1f)); -} - - -static void m68k_op_btst_8_s_ai(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_AY_AI_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_pi(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_AY_PI_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_pi7(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_A7_PI_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_pd(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_AY_PD_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_pd7(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_A7_PD_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_di(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_AY_DI_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_ix(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_AY_IX_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_aw(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_AW_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_al(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_AL_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_pcdi(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_PCDI_8() & (1 << bit); -} - - -static void m68k_op_btst_8_s_pcix(void) -{ - uint bit = OPER_I_8() & 7; - - FLAG_Z = OPER_PCIX_8() & (1 << bit); -} - - -static void m68k_op_chk_16_d(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(DY); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_ai(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_AY_AI_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_pi(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_AY_PI_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_pd(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_AY_PD_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_di(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_AY_DI_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_ix(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_AY_IX_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_aw(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_AW_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_al(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_AL_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_pcdi(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_PCDI_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_pcix(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_PCIX_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_chk_16_i(void) -{ - sint src = MAKE_INT_16(DX); - sint bound = MAKE_INT_16(OPER_I_16()); - - FLAG_Z = ZFLAG_16(src); /* Undocumented */ - FLAG_V = VFLAG_CLEAR; /* Undocumented */ - FLAG_C = CFLAG_CLEAR; /* Undocumented */ - - if(src >= 0 && src <= bound) - { - return; - } - FLAG_N = (src < 0)<<7; - m68ki_exception_trap(EXCEPTION_CHK); -} - - -static void m68k_op_clr_8_d(void) -{ - DY &= 0xffffff00; - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_8_al(void) -{ - m68ki_write_8(EA_AL_8(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_d(void) -{ - DY &= 0xffff0000; - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_ai(void) -{ - m68ki_write_16(EA_AY_AI_16(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_pi(void) -{ - m68ki_write_16(EA_AY_PI_16(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_pd(void) -{ - m68ki_write_16(EA_AY_PD_16(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_di(void) -{ - m68ki_write_16(EA_AY_DI_16(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_ix(void) -{ - m68ki_write_16(EA_AY_IX_16(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_aw(void) -{ - m68ki_write_16(EA_AW_16(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_16_al(void) -{ - m68ki_write_16(EA_AL_16(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_d(void) -{ - DY = 0; - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_ai(void) -{ - m68ki_write_32(EA_AY_AI_32(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_pi(void) -{ - m68ki_write_32(EA_AY_PI_32(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_pd(void) -{ - m68ki_write_32(EA_AY_PD_32(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_di(void) -{ - m68ki_write_32(EA_AY_DI_32(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_ix(void) -{ - m68ki_write_32(EA_AY_IX_32(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_aw(void) -{ - m68ki_write_32(EA_AW_32(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_clr_32_al(void) -{ - m68ki_write_32(EA_AL_32(), 0); - - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; -} - - -static void m68k_op_cmp_8_d(void) -{ - uint src = MASK_OUT_ABOVE_8(DY); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_ai(void) -{ - uint src = OPER_AY_AI_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_pi(void) -{ - uint src = OPER_AY_PI_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_pi7(void) -{ - uint src = OPER_A7_PI_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_pd(void) -{ - uint src = OPER_AY_PD_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_pd7(void) -{ - uint src = OPER_A7_PD_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_di(void) -{ - uint src = OPER_AY_DI_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_ix(void) -{ - uint src = OPER_AY_IX_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_aw(void) -{ - uint src = OPER_AW_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_al(void) -{ - uint src = OPER_AL_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_pcdi(void) -{ - uint src = OPER_PCDI_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_pcix(void) -{ - uint src = OPER_PCIX_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_8_i(void) -{ - uint src = OPER_I_8(); - uint dst = MASK_OUT_ABOVE_8(DX); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmp_16_d(void) -{ - uint src = MASK_OUT_ABOVE_16(DY); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_a(void) -{ - uint src = MASK_OUT_ABOVE_16(AY); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_ai(void) -{ - uint src = OPER_AY_AI_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_pi(void) -{ - uint src = OPER_AY_PI_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_pd(void) -{ - uint src = OPER_AY_PD_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_di(void) -{ - uint src = OPER_AY_DI_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_ix(void) -{ - uint src = OPER_AY_IX_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_aw(void) -{ - uint src = OPER_AW_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_al(void) -{ - uint src = OPER_AL_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_pcdi(void) -{ - uint src = OPER_PCDI_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_pcix(void) -{ - uint src = OPER_PCIX_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_16_i(void) -{ - uint src = OPER_I_16(); - uint dst = MASK_OUT_ABOVE_16(DX); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmp_32_d(void) -{ - uint src = DY; - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_a(void) -{ - uint src = AY; - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_ai(void) -{ - uint src = OPER_AY_AI_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_pi(void) -{ - uint src = OPER_AY_PI_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_pd(void) -{ - uint src = OPER_AY_PD_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_di(void) -{ - uint src = OPER_AY_DI_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_ix(void) -{ - uint src = OPER_AY_IX_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_aw(void) -{ - uint src = OPER_AW_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_al(void) -{ - uint src = OPER_AL_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_pcdi(void) -{ - uint src = OPER_PCDI_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_pcix(void) -{ - uint src = OPER_PCIX_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmp_32_i(void) -{ - uint src = OPER_I_32(); - uint dst = DX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_d(void) -{ - uint src = MAKE_INT_16(DY); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_a(void) -{ - uint src = MAKE_INT_16(AY); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_ai(void) -{ - uint src = MAKE_INT_16(OPER_AY_AI_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_pi(void) -{ - uint src = MAKE_INT_16(OPER_AY_PI_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_pd(void) -{ - uint src = MAKE_INT_16(OPER_AY_PD_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_di(void) -{ - uint src = MAKE_INT_16(OPER_AY_DI_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_ix(void) -{ - uint src = MAKE_INT_16(OPER_AY_IX_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_aw(void) -{ - uint src = MAKE_INT_16(OPER_AW_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_al(void) -{ - uint src = MAKE_INT_16(OPER_AL_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_pcdi(void) -{ - uint src = MAKE_INT_16(OPER_PCDI_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_pcix(void) -{ - uint src = MAKE_INT_16(OPER_PCIX_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_16_i(void) -{ - uint src = MAKE_INT_16(OPER_I_16()); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_d(void) -{ - uint src = DY; - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_a(void) -{ - uint src = AY; - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_ai(void) -{ - uint src = OPER_AY_AI_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_pi(void) -{ - uint src = OPER_AY_PI_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_pd(void) -{ - uint src = OPER_AY_PD_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_di(void) -{ - uint src = OPER_AY_DI_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_ix(void) -{ - uint src = OPER_AY_IX_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_aw(void) -{ - uint src = OPER_AW_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_al(void) -{ - uint src = OPER_AL_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_pcdi(void) -{ - uint src = OPER_PCDI_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_pcix(void) -{ - uint src = OPER_PCIX_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpa_32_i(void) -{ - uint src = OPER_I_32(); - uint dst = AX; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_8_d(void) -{ - uint src = OPER_I_8(); - uint dst = MASK_OUT_ABOVE_8(DY); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_ai(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_AY_AI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_pi(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_AY_PI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_pi7(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_A7_PI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_pd(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_AY_PD_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_pd7(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_A7_PD_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_di(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_AY_DI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_ix(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_AY_IX_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_aw(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_AW_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_8_al(void) -{ - uint src = OPER_I_8(); - uint dst = OPER_AL_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpi_16_d(void) -{ - uint src = OPER_I_16(); - uint dst = MASK_OUT_ABOVE_16(DY); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_16_ai(void) -{ - uint src = OPER_I_16(); - uint dst = OPER_AY_AI_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_16_pi(void) -{ - uint src = OPER_I_16(); - uint dst = OPER_AY_PI_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_16_pd(void) -{ - uint src = OPER_I_16(); - uint dst = OPER_AY_PD_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_16_di(void) -{ - uint src = OPER_I_16(); - uint dst = OPER_AY_DI_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_16_ix(void) -{ - uint src = OPER_I_16(); - uint dst = OPER_AY_IX_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_16_aw(void) -{ - uint src = OPER_I_16(); - uint dst = OPER_AW_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_16_al(void) -{ - uint src = OPER_I_16(); - uint dst = OPER_AL_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpi_32_d(void) -{ - uint src = OPER_I_32(); - uint dst = DY; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_32_ai(void) -{ - uint src = OPER_I_32(); - uint dst = OPER_AY_AI_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_32_pi(void) -{ - uint src = OPER_I_32(); - uint dst = OPER_AY_PI_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_32_pd(void) -{ - uint src = OPER_I_32(); - uint dst = OPER_AY_PD_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_32_di(void) -{ - uint src = OPER_I_32(); - uint dst = OPER_AY_DI_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_32_ix(void) -{ - uint src = OPER_I_32(); - uint dst = OPER_AY_IX_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_32_aw(void) -{ - uint src = OPER_I_32(); - uint dst = OPER_AW_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpi_32_al(void) -{ - uint src = OPER_I_32(); - uint dst = OPER_AL_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_cmpm_8_ax7(void) -{ - uint src = OPER_AY_PI_8(); - uint dst = OPER_A7_PI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpm_8_ay7(void) -{ - uint src = OPER_A7_PI_8(); - uint dst = OPER_AX_PI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpm_8_axy7(void) -{ - uint src = OPER_A7_PI_8(); - uint dst = OPER_A7_PI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpm_8(void) -{ - uint src = OPER_AY_PI_8(); - uint dst = OPER_AX_PI_8(); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_C = CFLAG_8(res); -} - - -static void m68k_op_cmpm_16(void) -{ - uint src = OPER_AY_PI_16(); - uint dst = OPER_AX_PI_16(); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_C = CFLAG_16(res); -} - - -static void m68k_op_cmpm_32(void) -{ - uint src = OPER_AY_PI_32(); - uint dst = OPER_AX_PI_32(); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_C = CFLAG_SUB_32(src, dst, res); -} - - -static void m68k_op_dbt_16(void) -{ - REG_PC += 2; -} - - -static void m68k_op_dbf_16(void) -{ - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); -} - - -static void m68k_op_dbhi_16(void) -{ - if(COND_NOT_HI()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbls_16(void) -{ - if(COND_NOT_LS()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbcc_16(void) -{ - if(COND_NOT_CC()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbcs_16(void) -{ - if(COND_NOT_CS()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbne_16(void) -{ - if(COND_NOT_NE()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbeq_16(void) -{ - if(COND_NOT_EQ()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbvc_16(void) -{ - if(COND_NOT_VC()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbvs_16(void) -{ - if(COND_NOT_VS()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbpl_16(void) -{ - if(COND_NOT_PL()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbmi_16(void) -{ - if(COND_NOT_MI()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbge_16(void) -{ - if(COND_NOT_GE()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dblt_16(void) -{ - if(COND_NOT_LT()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dbgt_16(void) -{ - if(COND_NOT_GT()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_dble_16(void) -{ - if(COND_NOT_LE()) - { - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(*r_dst - 1); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - if(res != 0xffff) - { - uint offset = OPER_I_16(); - REG_PC -= 2; - m68ki_branch_16(offset); - USE_CYCLES(CYC_DBCC_F_NOEXP); - - /* reset idle loop detection */ - m68ki_cpu.poll.detected = 0; - return; - } - REG_PC += 2; - USE_CYCLES(CYC_DBCC_F_EXP); - return; - } - REG_PC += 2; -} - - -static void m68k_op_divs_16_d(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(DY); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_ai(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_AI_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_pi(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_PI_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_pd(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_PD_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_di(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_DI_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_ix(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_IX_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_aw(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AW_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_al(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AL_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_pcdi(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_PCDI_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_pcix(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_PCIX_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divs_16_i(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_I_16()); - sint quotient; - sint remainder; - - if(src != 0) - { - UseDivsCycles(*r_dst,src); - - if((uint32)*r_dst == 0x80000000 && src == -1) - { - FLAG_Z = 0; - FLAG_N = NFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = 0; - return; - } - - quotient = MAKE_INT_32(*r_dst) / src; - remainder = MAKE_INT_32(*r_dst) % src; - - if(quotient == MAKE_INT_16(quotient)) - { - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_d(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(DY); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_divu_16_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_16(); - - if(src != 0) - { - uint quotient = *r_dst / src; - uint remainder = *r_dst % src; - - if(quotient < 0x10000) - { - UseDivuCycles(*r_dst,src); - FLAG_Z = quotient; - FLAG_N = NFLAG_16(quotient); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); - return; - } - USE_CYCLES(MUL * 10); - FLAG_V = VFLAG_SET; - FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ - FLAG_C = CFLAG_CLEAR; - return; - } - FLAG_C = CFLAG_CLEAR; - m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); -} - - -static void m68k_op_eor_8_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY ^= MASK_OUT_ABOVE_8(DX)); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_di(void) -{ - uint ea = EA_AY_DI_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_aw(void) -{ - uint ea = EA_AW_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_8_al(void) -{ - uint ea = EA_AL_8(); - uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY ^= MASK_OUT_ABOVE_16(DX)); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_aw(void) -{ - uint ea = EA_AW_16(); - uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_16_al(void) -{ - uint ea = EA_AL_16(); - uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_d(void) -{ - uint res = DY ^= DX; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint res = DX ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint res = DX ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint res = DX ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_di(void) -{ - uint ea = EA_AY_DI_32(); - uint res = DX ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint res = DX ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_aw(void) -{ - uint ea = EA_AW_32(); - uint res = DX ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eor_32_al(void) -{ - uint ea = EA_AL_32(); - uint res = DX ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY ^= OPER_I_8()); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_ai(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_AI_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_pi(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PI_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_pi7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PI_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_pd(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PD_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_pd7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PD_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_di(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_DI_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_ix(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_IX_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_aw(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AW_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_8_al(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AL_8(); - uint res = src ^ m68ki_read_8(ea); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY ^= OPER_I_16()); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_ai(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_AI_16(); - uint res = src ^ m68ki_read_16(ea); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_pi(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PI_16(); - uint res = src ^ m68ki_read_16(ea); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_pd(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PD_16(); - uint res = src ^ m68ki_read_16(ea); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_di(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_DI_16(); - uint res = src ^ m68ki_read_16(ea); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_ix(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_IX_16(); - uint res = src ^ m68ki_read_16(ea); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_aw(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AW_16(); - uint res = src ^ m68ki_read_16(ea); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_al(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AL_16(); - uint res = src ^ m68ki_read_16(ea); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_d(void) -{ - uint res = DY ^= OPER_I_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_ai(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_AI_32(); - uint res = src ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_pi(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PI_32(); - uint res = src ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_pd(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PD_32(); - uint res = src ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_di(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_DI_32(); - uint res = src ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_ix(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_IX_32(); - uint res = src ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_aw(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AW_32(); - uint res = src ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_32_al(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AL_32(); - uint res = src ^ m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_eori_16_toc(void) -{ - m68ki_set_ccr(m68ki_get_ccr() ^ OPER_I_16()); -} - - -static void m68k_op_eori_16_tos(void) -{ - if(FLAG_S) - { - uint src = OPER_I_16(); - m68ki_set_sr(m68ki_get_sr() ^ src); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_exg_32_dd(void) -{ - uint* reg_a = &DX; - uint* reg_b = &DY; - uint tmp = *reg_a; - *reg_a = *reg_b; - *reg_b = tmp; -} - - -static void m68k_op_exg_32_aa(void) -{ - uint* reg_a = &AX; - uint* reg_b = &AY; - uint tmp = *reg_a; - *reg_a = *reg_b; - *reg_b = tmp; -} - - -static void m68k_op_exg_32_da(void) -{ - uint* reg_a = &DX; - uint* reg_b = &AY; - uint tmp = *reg_a; - *reg_a = *reg_b; - *reg_b = tmp; -} - - -static void m68k_op_ext_16(void) -{ - uint* r_dst = &DY; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xff00 : 0); - - FLAG_N = NFLAG_16(*r_dst); - FLAG_Z = MASK_OUT_ABOVE_16(*r_dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_ext_32(void) -{ - uint* r_dst = &DY; - - *r_dst = MASK_OUT_ABOVE_16(*r_dst) | (GET_MSB_16(*r_dst) ? 0xffff0000 : 0); - - FLAG_N = NFLAG_32(*r_dst); - FLAG_Z = *r_dst; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_illegal(void) -{ - m68ki_exception_illegal(); -} - - -static void m68k_op_jmp_32_ai(void) -{ - m68ki_jump(EA_AY_AI_32()); -} - - -static void m68k_op_jmp_32_di(void) -{ - m68ki_jump(EA_AY_DI_32()); -} - - -static void m68k_op_jmp_32_ix(void) -{ - m68ki_jump(EA_AY_IX_32()); -} - - -static void m68k_op_jmp_32_aw(void) -{ - m68ki_jump(EA_AW_32()); -} - - -static void m68k_op_jmp_32_al(void) -{ - m68ki_jump(EA_AL_32()); -} - - -static void m68k_op_jmp_32_pcdi(void) -{ - m68ki_jump(EA_PCDI_32()); -} - - -static void m68k_op_jmp_32_pcix(void) -{ - m68ki_jump(EA_PCIX_32()); -} - - -static void m68k_op_jsr_32_ai(void) -{ - uint ea = EA_AY_AI_32(); - m68ki_push_32(REG_PC); - m68ki_jump(ea); -} - - -static void m68k_op_jsr_32_di(void) -{ - uint ea = EA_AY_DI_32(); - m68ki_push_32(REG_PC); - m68ki_jump(ea); -} - - -static void m68k_op_jsr_32_ix(void) -{ - uint ea = EA_AY_IX_32(); - m68ki_push_32(REG_PC); - m68ki_jump(ea); -} - - -static void m68k_op_jsr_32_aw(void) -{ - uint ea = EA_AW_32(); - m68ki_push_32(REG_PC); - m68ki_jump(ea); -} - - -static void m68k_op_jsr_32_al(void) -{ - uint ea = EA_AL_32(); - m68ki_push_32(REG_PC); - m68ki_jump(ea); -} - - -static void m68k_op_jsr_32_pcdi(void) -{ - uint ea = EA_PCDI_32(); - m68ki_push_32(REG_PC); - m68ki_jump(ea); -} - - -static void m68k_op_jsr_32_pcix(void) -{ - uint ea = EA_PCIX_32(); - m68ki_push_32(REG_PC); - m68ki_jump(ea); -} - - -static void m68k_op_lea_32_ai(void) -{ - AX = EA_AY_AI_32(); -} - - -static void m68k_op_lea_32_di(void) -{ - AX = EA_AY_DI_32(); -} - - -static void m68k_op_lea_32_ix(void) -{ - AX = EA_AY_IX_32(); -} - - -static void m68k_op_lea_32_aw(void) -{ - AX = EA_AW_32(); -} - - -static void m68k_op_lea_32_al(void) -{ - AX = EA_AL_32(); -} - - -static void m68k_op_lea_32_pcdi(void) -{ - AX = EA_PCDI_32(); -} - - -static void m68k_op_lea_32_pcix(void) -{ - AX = EA_PCIX_32(); -} - - -static void m68k_op_link_16_a7(void) -{ - REG_A[7] -= 4; - m68ki_write_32(REG_A[7], REG_A[7]); - REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16())); -} - - -static void m68k_op_link_16(void) -{ - uint* r_dst = &AY; - - m68ki_push_32(*r_dst); - *r_dst = REG_A[7]; - REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16())); -} - - -static void m68k_op_lsr_8_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = src >> shift; - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_X = FLAG_C = src << (9-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = src >> shift; - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_X = FLAG_C = src << (9-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_32_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = *r_dst; - uint res = src >> shift; - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_X = FLAG_C = src << (9-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_8_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = src >> shift; - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift <= 8) - { - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - FLAG_X = FLAG_C = src << (9-shift); - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst &= 0xffffff00; - FLAG_X = XFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_8(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = src >> shift; - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift <= 16) - { - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - FLAG_C = FLAG_X = (src >> (shift - 1))<<8; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst &= 0xffff0000; - FLAG_X = XFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_16(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_32_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = *r_dst; - uint res = src >> shift; - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 32) - { - *r_dst = res; - FLAG_C = FLAG_X = (src >> (shift - 1))<<8; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst = 0; - FLAG_X = FLAG_C = (shift == 32 ? GET_MSB_32(src)>>23 : 0); - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_32(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_C = FLAG_X = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_C = FLAG_X = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_C = FLAG_X = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_C = FLAG_X = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_C = FLAG_X = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_C = FLAG_X = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsr_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = src >> 1; - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_CLEAR; - FLAG_Z = res; - FLAG_C = FLAG_X = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_8_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = MASK_OUT_ABOVE_8(src << shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src << shift; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = MASK_OUT_ABOVE_16(src << shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> (8-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_32_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32(src << shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> (24-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_8_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = MASK_OUT_ABOVE_8(src << shift); - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift <= 8) - { - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - FLAG_X = FLAG_C = src << shift; - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst &= 0xffffff00; - FLAG_X = XFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_8(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = MASK_OUT_ABOVE_16(src << shift); - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift <= 16) - { - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - FLAG_X = FLAG_C = (src << shift) >> 8; - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst &= 0xffff0000; - FLAG_X = XFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_16(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_32_r(void) -{ - uint* r_dst = &DY; - uint shift = DX & 0x3f; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32(src << shift); - - if(shift != 0) - { - USE_CYCLES(shift * CYC_SHIFT); - - if(shift < 32) - { - *r_dst = res; - FLAG_X = FLAG_C = (src >> (32 - shift)) << 8; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - *r_dst = 0; - FLAG_X = FLAG_C = ((shift == 32 ? src & 1 : 0))<<8; - FLAG_N = NFLAG_CLEAR; - FLAG_Z = ZFLAG_SET; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_32(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_lsl_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(src << 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_X = FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_di(void) -{ - uint res = OPER_AY_DI_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_aw(void) -{ - uint res = OPER_AW_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_al(void) -{ - uint res = OPER_AL_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_d_i(void) -{ - uint res = OPER_I_8(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_8_ai_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ai_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_AX_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi7_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pi_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_AX_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd7_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_pd_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_AX_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_di_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_AX_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_ix_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_AX_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_aw_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_ai(void) -{ - uint res = OPER_AY_AI_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_pi(void) -{ - uint res = OPER_AY_PI_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_pi7(void) -{ - uint res = OPER_A7_PI_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_pd(void) -{ - uint res = OPER_AY_PD_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_pd7(void) -{ - uint res = OPER_A7_PD_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_di(void) -{ - uint res = OPER_AY_DI_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_ix(void) -{ - uint res = OPER_AY_IX_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_aw(void) -{ - uint res = OPER_AW_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_al(void) -{ - uint res = OPER_AL_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_pcdi(void) -{ - uint res = OPER_PCDI_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_pcix(void) -{ - uint res = OPER_PCIX_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_8_al_i(void) -{ - uint res = OPER_I_8(); - uint ea = EA_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_move_16_d_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_di(void) -{ - uint res = OPER_AY_DI_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_aw(void) -{ - uint res = OPER_AW_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_al(void) -{ - uint res = OPER_AL_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_d_i(void) -{ - uint res = OPER_I_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_16_ai_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_di(void) -{ - uint res = OPER_AY_DI_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_aw(void) -{ - uint res = OPER_AW_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_al(void) -{ - uint res = OPER_AL_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ai_i(void) -{ - uint res = OPER_I_16(); - uint ea = EA_AX_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_di(void) -{ - uint res = OPER_AY_DI_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_aw(void) -{ - uint res = OPER_AW_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_al(void) -{ - uint res = OPER_AL_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pi_i(void) -{ - uint res = OPER_I_16(); - uint ea = EA_AX_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_di(void) -{ - uint res = OPER_AY_DI_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_aw(void) -{ - uint res = OPER_AW_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_al(void) -{ - uint res = OPER_AL_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_pd_i(void) -{ - uint res = OPER_I_16(); - uint ea = EA_AX_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_di(void) -{ - uint res = OPER_AY_DI_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_aw(void) -{ - uint res = OPER_AW_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_al(void) -{ - uint res = OPER_AL_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_di_i(void) -{ - uint res = OPER_I_16(); - uint ea = EA_AX_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_di(void) -{ - uint res = OPER_AY_DI_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_aw(void) -{ - uint res = OPER_AW_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_al(void) -{ - uint res = OPER_AL_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_ix_i(void) -{ - uint res = OPER_I_16(); - uint ea = EA_AX_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_di(void) -{ - uint res = OPER_AY_DI_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_aw(void) -{ - uint res = OPER_AW_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_al(void) -{ - uint res = OPER_AL_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_aw_i(void) -{ - uint res = OPER_I_16(); - uint ea = EA_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_a(void) -{ - uint res = MASK_OUT_ABOVE_16(AY); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_ai(void) -{ - uint res = OPER_AY_AI_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_pi(void) -{ - uint res = OPER_AY_PI_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_pd(void) -{ - uint res = OPER_AY_PD_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_di(void) -{ - uint res = OPER_AY_DI_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_ix(void) -{ - uint res = OPER_AY_IX_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_aw(void) -{ - uint res = OPER_AW_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_al(void) -{ - uint res = OPER_AL_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_pcdi(void) -{ - uint res = OPER_PCDI_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_pcix(void) -{ - uint res = OPER_PCIX_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_16_al_i(void) -{ - uint res = OPER_I_16(); - uint ea = EA_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_move_32_d_d(void) -{ - uint res = DY; - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_a(void) -{ - uint res = AY; - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_di(void) -{ - uint res = OPER_AY_DI_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_aw(void) -{ - uint res = OPER_AW_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_al(void) -{ - uint res = OPER_AL_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_d_i(void) -{ - uint res = OPER_I_32(); - uint* r_dst = &DX; - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_move_32_ai_d(void) -{ - uint res = DY; - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_a(void) -{ - uint res = AY; - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_di(void) -{ - uint res = OPER_AY_DI_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_aw(void) -{ - uint res = OPER_AW_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_al(void) -{ - uint res = OPER_AL_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ai_i(void) -{ - uint res = OPER_I_32(); - uint ea = EA_AX_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_d(void) -{ - uint res = DY; - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_a(void) -{ - uint res = AY; - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_di(void) -{ - uint res = OPER_AY_DI_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_aw(void) -{ - uint res = OPER_AW_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_al(void) -{ - uint res = OPER_AL_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pi_i(void) -{ - uint res = OPER_I_32(); - uint ea = EA_AX_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_pd_d(void) -{ - uint res = DY; - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_a(void) -{ - uint res = AY; - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_di(void) -{ - uint res = OPER_AY_DI_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_aw(void) -{ - uint res = OPER_AW_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_al(void) -{ - uint res = OPER_AL_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_pd_i(void) -{ - uint res = OPER_I_32(); - uint ea = EA_AX_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_16(ea+2, res & 0xFFFF ); - m68ki_write_16(ea, (res >> 16) & 0xFFFF ); -} - - -static void m68k_op_move_32_di_d(void) -{ - uint res = DY; - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_a(void) -{ - uint res = AY; - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_di(void) -{ - uint res = OPER_AY_DI_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_aw(void) -{ - uint res = OPER_AW_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_al(void) -{ - uint res = OPER_AL_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_di_i(void) -{ - uint res = OPER_I_32(); - uint ea = EA_AX_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_d(void) -{ - uint res = DY; - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_a(void) -{ - uint res = AY; - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_di(void) -{ - uint res = OPER_AY_DI_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_aw(void) -{ - uint res = OPER_AW_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_al(void) -{ - uint res = OPER_AL_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_ix_i(void) -{ - uint res = OPER_I_32(); - uint ea = EA_AX_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_d(void) -{ - uint res = DY; - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_a(void) -{ - uint res = AY; - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_di(void) -{ - uint res = OPER_AY_DI_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_aw(void) -{ - uint res = OPER_AW_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_al(void) -{ - uint res = OPER_AL_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_aw_i(void) -{ - uint res = OPER_I_32(); - uint ea = EA_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_d(void) -{ - uint res = DY; - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_a(void) -{ - uint res = AY; - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_ai(void) -{ - uint res = OPER_AY_AI_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_pi(void) -{ - uint res = OPER_AY_PI_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_pd(void) -{ - uint res = OPER_AY_PD_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_di(void) -{ - uint res = OPER_AY_DI_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_ix(void) -{ - uint res = OPER_AY_IX_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_aw(void) -{ - uint res = OPER_AW_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_al(void) -{ - uint res = OPER_AL_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_pcdi(void) -{ - uint res = OPER_PCDI_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_pcix(void) -{ - uint res = OPER_PCIX_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_move_32_al_i(void) -{ - uint res = OPER_I_32(); - uint ea = EA_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_movea_16_d(void) -{ - AX = MAKE_INT_16(DY); -} - - -static void m68k_op_movea_16_a(void) -{ - AX = MAKE_INT_16(AY); -} - - -static void m68k_op_movea_16_ai(void) -{ - AX = MAKE_INT_16(OPER_AY_AI_16()); -} - - -static void m68k_op_movea_16_pi(void) -{ - AX = MAKE_INT_16(OPER_AY_PI_16()); -} - - -static void m68k_op_movea_16_pd(void) -{ - AX = MAKE_INT_16(OPER_AY_PD_16()); -} - - -static void m68k_op_movea_16_di(void) -{ - AX = MAKE_INT_16(OPER_AY_DI_16()); -} - - -static void m68k_op_movea_16_ix(void) -{ - AX = MAKE_INT_16(OPER_AY_IX_16()); -} - - -static void m68k_op_movea_16_aw(void) -{ - AX = MAKE_INT_16(OPER_AW_16()); -} - - -static void m68k_op_movea_16_al(void) -{ - AX = MAKE_INT_16(OPER_AL_16()); -} - - -static void m68k_op_movea_16_pcdi(void) -{ - AX = MAKE_INT_16(OPER_PCDI_16()); -} - - -static void m68k_op_movea_16_pcix(void) -{ - AX = MAKE_INT_16(OPER_PCIX_16()); -} - - -static void m68k_op_movea_16_i(void) -{ - AX = MAKE_INT_16(OPER_I_16()); -} - - -static void m68k_op_movea_32_d(void) -{ - AX = DY; -} - - -static void m68k_op_movea_32_a(void) -{ - AX = AY; -} - - -static void m68k_op_movea_32_ai(void) -{ - AX = OPER_AY_AI_32(); -} - - -static void m68k_op_movea_32_pi(void) -{ - AX = OPER_AY_PI_32(); -} - - -static void m68k_op_movea_32_pd(void) -{ - AX = OPER_AY_PD_32(); -} - - -static void m68k_op_movea_32_di(void) -{ - AX = OPER_AY_DI_32(); -} - - -static void m68k_op_movea_32_ix(void) -{ - AX = OPER_AY_IX_32(); -} - - -static void m68k_op_movea_32_aw(void) -{ - AX = OPER_AW_32(); -} - - -static void m68k_op_movea_32_al(void) -{ - AX = OPER_AL_32(); -} - - -static void m68k_op_movea_32_pcdi(void) -{ - AX = OPER_PCDI_32(); -} - - -static void m68k_op_movea_32_pcix(void) -{ - AX = OPER_PCIX_32(); -} - - -static void m68k_op_movea_32_i(void) -{ - AX = OPER_I_32(); -} - -static void m68k_op_move_16_toc_d(void) -{ - m68ki_set_ccr(DY); -} - - -static void m68k_op_move_16_toc_ai(void) -{ - m68ki_set_ccr(OPER_AY_AI_16()); -} - - -static void m68k_op_move_16_toc_pi(void) -{ - m68ki_set_ccr(OPER_AY_PI_16()); -} - - -static void m68k_op_move_16_toc_pd(void) -{ - m68ki_set_ccr(OPER_AY_PD_16()); -} - - -static void m68k_op_move_16_toc_di(void) -{ - m68ki_set_ccr(OPER_AY_DI_16()); -} - - -static void m68k_op_move_16_toc_ix(void) -{ - m68ki_set_ccr(OPER_AY_IX_16()); -} - - -static void m68k_op_move_16_toc_aw(void) -{ - m68ki_set_ccr(OPER_AW_16()); -} - - -static void m68k_op_move_16_toc_al(void) -{ - m68ki_set_ccr(OPER_AL_16()); -} - - -static void m68k_op_move_16_toc_pcdi(void) -{ - m68ki_set_ccr(OPER_PCDI_16()); -} - - -static void m68k_op_move_16_toc_pcix(void) -{ - m68ki_set_ccr(OPER_PCIX_16()); -} - - -static void m68k_op_move_16_toc_i(void) -{ - m68ki_set_ccr(OPER_I_16()); -} - - -static void m68k_op_move_16_frs_d(void) -{ - DY = MASK_OUT_BELOW_16(DY) | m68ki_get_sr(); -} - - -static void m68k_op_move_16_frs_ai(void) -{ - uint ea = EA_AY_AI_16(); - m68ki_write_16(ea, m68ki_get_sr()); -} - - -static void m68k_op_move_16_frs_pi(void) -{ - uint ea = EA_AY_PI_16(); - m68ki_write_16(ea, m68ki_get_sr()); -} - - -static void m68k_op_move_16_frs_pd(void) -{ - uint ea = EA_AY_PD_16(); - m68ki_write_16(ea, m68ki_get_sr()); -} - - -static void m68k_op_move_16_frs_di(void) -{ - uint ea = EA_AY_DI_16(); - m68ki_write_16(ea, m68ki_get_sr()); -} - - -static void m68k_op_move_16_frs_ix(void) -{ - uint ea = EA_AY_IX_16(); - m68ki_write_16(ea, m68ki_get_sr()); -} - - -static void m68k_op_move_16_frs_aw(void) -{ - uint ea = EA_AW_16(); - m68ki_write_16(ea, m68ki_get_sr()); -} - - -static void m68k_op_move_16_frs_al(void) -{ - uint ea = EA_AL_16(); - m68ki_write_16(ea, m68ki_get_sr()); -} - - -static void m68k_op_move_16_tos_d(void) -{ - if(FLAG_S) - { - m68ki_set_sr(DY); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_ai(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_AY_AI_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_pi(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_AY_PI_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_pd(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_AY_PD_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_di(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_AY_DI_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_ix(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_AY_IX_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_aw(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_AW_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_al(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_AL_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_pcdi(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_PCDI_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_pcix(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_PCIX_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_16_tos_i(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_I_16(); - m68ki_set_sr(new_sr); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_32_fru(void) -{ - if(FLAG_S) - { - AY = REG_USP; - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_move_32_tou(void) -{ - if(FLAG_S) - { - REG_USP = AY; - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_movem_16_re_pd(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = AY; - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - ea -= 2; - m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[15-i])); - count++; - } - AY = ea; - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_re_ai(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_AI_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_re_di(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_DI_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_re_ix(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_IX_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_re_aw(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AW_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_re_al(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AL_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_32_re_pd(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = AY; - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - ea -= 4; - m68ki_write_16(ea+2, REG_DA[15-i] & 0xFFFF ); - m68ki_write_16(ea, (REG_DA[15-i] >> 16) & 0xFFFF ); - count++; - } - AY = ea; - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_re_ai(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_AI_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_32(ea, REG_DA[i]); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_re_di(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_DI_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_32(ea, REG_DA[i]); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_re_ix(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_IX_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_32(ea, REG_DA[i]); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_re_aw(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AW_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_32(ea, REG_DA[i]); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_re_al(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AL_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - m68ki_write_32(ea, REG_DA[i]); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_16_er_pi(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = AY; - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); - ea += 2; - count++; - } - AY = ea; - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_er_pcdi(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_PCDI_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea))); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_er_pcix(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_PCIX_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea))); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_er_ai(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_AI_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_er_di(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_DI_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_er_ix(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_IX_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_er_aw(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AW_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_16_er_al(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AL_16(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); - ea += 2; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_W); -} - - -static void m68k_op_movem_32_er_pi(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = AY; - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_32(ea); - ea += 4; - count++; - } - AY = ea; - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_er_pcdi(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_PCDI_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_pcrel_32(ea); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_er_pcix(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_PCIX_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_pcrel_32(ea); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_er_ai(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_AI_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_32(ea); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_er_di(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_DI_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_32(ea); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_er_ix(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AY_IX_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_32(ea); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_er_aw(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AW_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_32(ea); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movem_32_er_al(void) -{ - uint i = 0; - uint register_list = OPER_I_16(); - uint ea = EA_AL_32(); - uint count = 0; - - for(; i < 16; i++) - if(register_list & (1 << i)) - { - REG_DA[i] = m68ki_read_32(ea); - ea += 4; - count++; - } - - USE_CYCLES(count * CYC_MOVEM_L); -} - - -static void m68k_op_movep_16_re(void) -{ - uint ea = EA_AY_DI_16(); - uint src = DX; - - m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 8)); - m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src)); -} - - -static void m68k_op_movep_32_re(void) -{ - uint ea = EA_AY_DI_32(); - uint src = DX; - - m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 24)); - m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 16)); - m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 8)); - m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src)); -} - - -static void m68k_op_movep_16_er(void) -{ - uint ea = EA_AY_DI_16(); - uint* r_dst = &DX; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8(ea) << 8) + m68ki_read_8(ea + 2)); -} - - -static void m68k_op_movep_32_er(void) -{ - uint ea = EA_AY_DI_32(); - - DX = (m68ki_read_8(ea) << 24) + (m68ki_read_8(ea + 2) << 16) - + (m68ki_read_8(ea + 4) << 8) + m68ki_read_8(ea + 6); -} - - -static void m68k_op_moveq_32(void) -{ - uint res = DX = MAKE_INT_8(MASK_OUT_ABOVE_8(REG_IR)); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_d(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(DY); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_ai(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_AI_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_pi(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_PI_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_pd(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_PD_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_di(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_DI_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_ix(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AY_IX_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_aw(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AW_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_al(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_AL_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_pcdi(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_PCDI_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_pcix(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_PCIX_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_muls_16_i(void) -{ - uint* r_dst = &DX; - sint src = MAKE_INT_16(OPER_I_16()); - uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); - - UseMulsCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_d(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(DY); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_mulu_16_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_16(); - uint res = src * MASK_OUT_ABOVE_16(*r_dst); - - UseMuluCycles(src); - - *r_dst = res; - - FLAG_Z = res; - FLAG_N = NFLAG_32(res); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_nbcd_8_d(void) -{ - uint* r_dst = &DY; - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_di(void) -{ - uint ea = EA_AY_DI_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_aw(void) -{ - uint ea = EA_AW_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_nbcd_8_al(void) -{ - uint ea = EA_AL_8(); - uint dst = m68ki_read_8(ea); - uint res = -dst - XFLAG_AS_1(); - - if(res) - { - FLAG_V = res; /* Undefined V behavior */ - - if(((res|dst) & 0x0f) == 0x0) - res = (res & 0xf0) + 6; - - res = MASK_OUT_ABOVE_8(res+0x9a); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - - m68ki_write_8(ea, res); - - FLAG_Z |= res; - FLAG_C = CFLAG_SET; - FLAG_X = XFLAG_SET; - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - } - else - { - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - FLAG_X = XFLAG_CLEAR; - FLAG_N = NFLAG_CLEAR; - } -} - - -static void m68k_op_neg_8_d(void) -{ - uint* r_dst = &DY; - uint res = 0 - MASK_OUT_ABOVE_8(*r_dst); - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = *r_dst & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_neg_8_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_di(void) -{ - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_aw(void) -{ - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_8_al(void) -{ - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_8(res); - FLAG_C = FLAG_X = CFLAG_8(res); - FLAG_V = src & res; - FLAG_Z = MASK_OUT_ABOVE_8(res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_neg_16_d(void) -{ - uint* r_dst = &DY; - uint res = 0 - MASK_OUT_ABOVE_16(*r_dst); - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (*r_dst & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_neg_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (src & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_neg_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (src & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_neg_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (src & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_neg_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (src & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_neg_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (src & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_neg_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (src & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_neg_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_16(res); - FLAG_C = FLAG_X = CFLAG_16(res); - FLAG_V = (src & res)>>8; - FLAG_Z = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_neg_32_d(void) -{ - uint* r_dst = &DY; - uint res = 0 - *r_dst; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(*r_dst, 0, res); - FLAG_V = (*r_dst & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_neg_32_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_neg_32_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_neg_32_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_neg_32_di(void) -{ - uint ea = EA_AY_DI_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_neg_32_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_neg_32_aw(void) -{ - uint ea = EA_AW_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_neg_32_al(void) -{ - uint ea = EA_AL_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - src; - - FLAG_N = NFLAG_32(res); - FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - FLAG_Z = MASK_OUT_ABOVE_32(res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_negx_8_d(void) -{ - uint* r_dst = &DY; - uint res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = *r_dst & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; -} - - -static void m68k_op_negx_8_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_di(void) -{ - uint ea = EA_AY_DI_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_aw(void) -{ - uint ea = EA_AW_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_8_al(void) -{ - uint ea = EA_AL_8(); - uint src = m68ki_read_8(ea); - uint res = 0 - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = src & res; - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_negx_16_d(void) -{ - uint* r_dst = &DY; - uint res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (*r_dst & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; -} - - -static void m68k_op_negx_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (src & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_negx_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (src & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_negx_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (src & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_negx_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (src & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_negx_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (src & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_negx_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (src & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_negx_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = (src & res)>>8; - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_negx_32_d(void) -{ - uint* r_dst = &DY; - uint res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(*r_dst, 0, res); - FLAG_V = (*r_dst & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - *r_dst = res; -} - - -static void m68k_op_negx_32_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_negx_32_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_negx_32_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_negx_32_di(void) -{ - uint ea = EA_AY_DI_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_negx_32_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_negx_32_aw(void) -{ - uint ea = EA_AW_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_negx_32_al(void) -{ - uint ea = EA_AL_32(); - uint src = m68ki_read_32(ea); - uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); - FLAG_V = (src & res)>>24; - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_nop(void) -{ -} - - -static void m68k_op_not_8_d(void) -{ - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_8(~*r_dst); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_di(void) -{ - uint ea = EA_AY_DI_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_aw(void) -{ - uint ea = EA_AW_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_8_al(void) -{ - uint ea = EA_AL_8(); - uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_d(void) -{ - uint* r_dst = &DY; - uint res = MASK_OUT_ABOVE_16(~*r_dst); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_aw(void) -{ - uint ea = EA_AW_16(); - uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_16_al(void) -{ - uint ea = EA_AL_16(); - uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_d(void) -{ - uint* r_dst = &DY; - uint res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_di(void) -{ - uint ea = EA_AY_DI_32(); - uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_aw(void) -{ - uint ea = EA_AW_32(); - uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_not_32_al(void) -{ - uint ea = EA_AL_32(); - uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_d(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= MASK_OUT_ABOVE_8(DY))); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_ai(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_AI_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_pi(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PI_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_pi7(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PI_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_pd(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PD_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_pd7(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PD_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_di(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_DI_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_ix(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_IX_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_aw(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_AW_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_al(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_AL_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_pcdi(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCDI_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_pcix(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCIX_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_er_i(void) -{ - uint res = MASK_OUT_ABOVE_8((DX |= OPER_I_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_d(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= MASK_OUT_ABOVE_16(DY))); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_ai(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_AI_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_pi(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PI_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_pd(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PD_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_di(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_DI_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_ix(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_IX_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_aw(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_AW_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_al(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_AL_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_pcdi(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCDI_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_pcix(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCIX_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_er_i(void) -{ - uint res = MASK_OUT_ABOVE_16((DX |= OPER_I_16())); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_d(void) -{ - uint res = DX |= DY; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_ai(void) -{ - uint res = DX |= OPER_AY_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_pi(void) -{ - uint res = DX |= OPER_AY_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_pd(void) -{ - uint res = DX |= OPER_AY_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_di(void) -{ - uint res = DX |= OPER_AY_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_ix(void) -{ - uint res = DX |= OPER_AY_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_aw(void) -{ - uint res = DX |= OPER_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_al(void) -{ - uint res = DX |= OPER_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_pcdi(void) -{ - uint res = DX |= OPER_PCDI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_pcix(void) -{ - uint res = DX |= OPER_PCIX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_er_i(void) -{ - uint res = DX |= OPER_I_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_di(void) -{ - uint ea = EA_AY_DI_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_aw(void) -{ - uint ea = EA_AW_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_8_re_al(void) -{ - uint ea = EA_AL_8(); - uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_re_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_re_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_re_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_re_di(void) -{ - uint ea = EA_AY_DI_16(); - uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_re_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_re_aw(void) -{ - uint ea = EA_AW_16(); - uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_16_re_al(void) -{ - uint ea = EA_AL_16(); - uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_re_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint res = DX | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_re_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint res = DX | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_re_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint res = DX | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_re_di(void) -{ - uint ea = EA_AY_DI_32(); - uint res = DX | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_re_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint res = DX | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_re_aw(void) -{ - uint ea = EA_AW_32(); - uint res = DX | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_or_32_re_al(void) -{ - uint ea = EA_AL_32(); - uint res = DX | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_d(void) -{ - uint res = MASK_OUT_ABOVE_8((DY |= OPER_I_8())); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_ai(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_AI_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_pi(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PI_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_pi7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PI_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_pd(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PD_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_pd7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PD_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_di(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_DI_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_ix(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_IX_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_aw(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AW_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_8_al(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AL_8(); - uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); - - m68ki_write_8(ea, res); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY |= OPER_I_16()); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_ai(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_AI_16(); - uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_pi(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PI_16(); - uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_pd(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PD_16(); - uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_di(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_DI_16(); - uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_ix(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_IX_16(); - uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_aw(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AW_16(); - uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_al(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AL_16(); - uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_d(void) -{ - uint res = DY |= OPER_I_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_ai(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_AI_32(); - uint res = src | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_pi(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PI_32(); - uint res = src | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_pd(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PD_32(); - uint res = src | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_di(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_DI_32(); - uint res = src | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_ix(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_IX_32(); - uint res = src | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_aw(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AW_32(); - uint res = src | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_32_al(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AL_32(); - uint res = src | m68ki_read_32(ea); - - m68ki_write_32(ea, res); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ori_16_toc(void) -{ - m68ki_set_ccr(m68ki_get_ccr() | OPER_I_16()); -} - - -static void m68k_op_ori_16_tos(void) -{ - if(FLAG_S) - { - uint src = OPER_I_16(); - m68ki_set_sr(m68ki_get_sr() | src); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_pea_32_ai(void) -{ - uint ea = EA_AY_AI_32(); - - m68ki_push_32(ea); -} - - -static void m68k_op_pea_32_di(void) -{ - uint ea = EA_AY_DI_32(); - - m68ki_push_32(ea); -} - - -static void m68k_op_pea_32_ix(void) -{ - uint ea = EA_AY_IX_32(); - - m68ki_push_32(ea); -} - - -static void m68k_op_pea_32_aw(void) -{ - uint ea = EA_AW_32(); - - m68ki_push_32(ea); -} - - -static void m68k_op_pea_32_al(void) -{ - uint ea = EA_AL_32(); - - m68ki_push_32(ea); -} - - -static void m68k_op_pea_32_pcdi(void) -{ - uint ea = EA_PCDI_32(); - - m68ki_push_32(ea); -} - - -static void m68k_op_pea_32_pcix(void) -{ - uint ea = EA_PCIX_32(); - - m68ki_push_32(ea); -} - - -static void m68k_op_reset(void) -{ - if(FLAG_S) - { - m68ki_output_reset() /* auto-disable (see m68kcpu.h) */ - USE_CYCLES(CYC_RESET); - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_ror_8_s(void) -{ - uint* r_dst = &DY; - uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint shift = orig_shift & 7; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROR_8(src, shift); - - if(orig_shift != 0) - USE_CYCLES(orig_shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = src << (9-orig_shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = ROR_16(src, shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << (9-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_32_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint64 src = *r_dst; - uint res = ROR_32(src, shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = src << (9-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_8_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift & 7; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROR_8(src, shift); - - if(orig_shift != 0) - { - USE_CYCLES(orig_shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - FLAG_C = src << (8-((shift-1)&7)); - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_8(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift & 15; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = ROR_16(src, shift); - - if(orig_shift != 0) - { - USE_CYCLES(orig_shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - FLAG_C = (src >> ((shift - 1) & 15)) << 8; - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_16(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_32_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift & 31; - uint64 src = *r_dst; - uint res = ROR_32(src, shift); - - if(orig_shift != 0) - { - USE_CYCLES(orig_shift * CYC_SHIFT); - - *r_dst = res; - FLAG_C = (src >> ((shift - 1) & 31)) << 8; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_32(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_16(src, 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_16(src, 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_16(src, 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_16(src, 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_16(src, 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_16(src, 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_ror_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_16(src, 1); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src << 8; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_8_s(void) -{ - uint* r_dst = &DY; - uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint shift = orig_shift & 7; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROL_8(src, shift); - - if(orig_shift != 0) - USE_CYCLES(orig_shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_C = src << orig_shift; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = ROL_16(src, shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> (8-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_32_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint64 src = *r_dst; - uint res = ROL_32(src, shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_C = src >> (24-shift); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_8_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift & 7; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROL_8(src, shift); - - if(orig_shift != 0) - { - USE_CYCLES(orig_shift * CYC_SHIFT); - - if(shift != 0) - { - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - FLAG_C = src << shift; - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - FLAG_C = (src & 1)<<8; - FLAG_N = NFLAG_8(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_8(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift & 15; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, shift)); - - if(orig_shift != 0) - { - USE_CYCLES(orig_shift * CYC_SHIFT); - - if(shift != 0) - { - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - FLAG_C = (src << shift) >> 8; - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - FLAG_C = (src & 1)<<8; - FLAG_N = NFLAG_16(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_16(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_32_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift & 31; - uint64 src = *r_dst; - uint res = ROL_32(src, shift); - - if(orig_shift != 0) - { - USE_CYCLES(orig_shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_C = (src >> ((32 - shift) & 0x1f)) << 8; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = CFLAG_CLEAR; - FLAG_N = NFLAG_32(src); - FLAG_Z = src; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rol_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_C = src >> 7; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_8_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res; - res = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_32_s(void) -{ -#if M68K_USE_64_BIT - - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint64 src = *r_dst; - uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - res = ROR_33_64(res, shift); - - FLAG_C = FLAG_X = res >> 24; - res = MASK_OUT_ABOVE_32(res); - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - -#else - - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift))); - uint new_x_flag = src & (1 << (shift - 1)); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_C = FLAG_X = (new_x_flag != 0)<<8; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - -#endif -} - - -static void m68k_op_roxr_8_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - - if(orig_shift != 0) - { - uint shift = orig_shift % 9; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift); - - USE_CYCLES(orig_shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res; - res = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = FLAG_X; - FLAG_N = NFLAG_8(*r_dst); - FLAG_Z = MASK_OUT_ABOVE_8(*r_dst); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - - if(orig_shift != 0) - { - uint shift = orig_shift % 17; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift); - - USE_CYCLES(orig_shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = FLAG_X; - FLAG_N = NFLAG_16(*r_dst); - FLAG_Z = MASK_OUT_ABOVE_16(*r_dst); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_32_r(void) -{ -#if M68K_USE_64_BIT - - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - - if(orig_shift != 0) - { - uint shift = orig_shift % 33; - uint64 src = *r_dst; - uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); - - res = ROR_33_64(res, shift); - - USE_CYCLES(orig_shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res >> 24; - res = MASK_OUT_ABOVE_32(res); - - *r_dst = res; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = FLAG_X; - FLAG_N = NFLAG_32(*r_dst); - FLAG_Z = *r_dst; - FLAG_V = VFLAG_CLEAR; - -#else - - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift % 33; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift))); - uint new_x_flag = src & (1 << (shift - 1)); - - if(orig_shift != 0) - USE_CYCLES(orig_shift * CYC_SHIFT); - - if(shift != 0) - { - *r_dst = res; - FLAG_X = (new_x_flag != 0)<<8; - } - else - res = src; - FLAG_C = FLAG_X; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - -#endif -} - - -static void m68k_op_roxr_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxr_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_8_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res; - res = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_s(void) -{ - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_32_s(void) -{ -#if M68K_USE_64_BIT - - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint64 src = *r_dst; - uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - res = ROL_33_64(res, shift); - - FLAG_C = FLAG_X = res >> 24; - res = MASK_OUT_ABOVE_32(res); - - *r_dst = res; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - -#else - - uint* r_dst = &DY; - uint shift = (((REG_IR >> 9) - 1) & 7) + 1; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1))); - uint new_x_flag = src & (1 << (32 - shift)); - - if(shift != 0) - USE_CYCLES(shift * CYC_SHIFT); - - *r_dst = res; - - FLAG_C = FLAG_X = (new_x_flag != 0)<<8; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - -#endif -} - - -static void m68k_op_roxl_8_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - - - if(orig_shift != 0) - { - uint shift = orig_shift % 9; - uint src = MASK_OUT_ABOVE_8(*r_dst); - uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift); - - USE_CYCLES(orig_shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res; - res = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = FLAG_X; - FLAG_N = NFLAG_8(*r_dst); - FLAG_Z = MASK_OUT_ABOVE_8(*r_dst); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_r(void) -{ - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - - if(orig_shift != 0) - { - uint shift = orig_shift % 17; - uint src = MASK_OUT_ABOVE_16(*r_dst); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift); - - USE_CYCLES(orig_shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = FLAG_X; - FLAG_N = NFLAG_16(*r_dst); - FLAG_Z = MASK_OUT_ABOVE_16(*r_dst); - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_32_r(void) -{ -#if M68K_USE_64_BIT - - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - - if(orig_shift != 0) - { - uint shift = orig_shift % 33; - uint64 src = *r_dst; - uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); - - res = ROL_33_64(res, shift); - - USE_CYCLES(orig_shift * CYC_SHIFT); - - FLAG_C = FLAG_X = res >> 24; - res = MASK_OUT_ABOVE_32(res); - - *r_dst = res; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - return; - } - - FLAG_C = FLAG_X; - FLAG_N = NFLAG_32(*r_dst); - FLAG_Z = *r_dst; - FLAG_V = VFLAG_CLEAR; - -#else - - uint* r_dst = &DY; - uint orig_shift = DX & 0x3f; - uint shift = orig_shift % 33; - uint src = *r_dst; - uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1))); - uint new_x_flag = src & (1 << (32 - shift)); - - if(orig_shift != 0) - USE_CYCLES(orig_shift * CYC_SHIFT); - - if(shift != 0) - { - *r_dst = res; - FLAG_X = (new_x_flag != 0)<<8; - } - else - res = src; - FLAG_C = FLAG_X; - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - -#endif -} - - -static void m68k_op_roxl_16_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = m68ki_read_16(ea); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = m68ki_read_16(ea); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = m68ki_read_16(ea); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = m68ki_read_16(ea); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = m68ki_read_16(ea); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_aw(void) -{ - uint ea = EA_AW_16(); - uint src = m68ki_read_16(ea); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_roxl_16_al(void) -{ - uint ea = EA_AL_16(); - uint src = m68ki_read_16(ea); - uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); - - FLAG_C = FLAG_X = res >> 8; - res = MASK_OUT_ABOVE_16(res); - - m68ki_write_16(ea, res); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_rte_32(void) -{ - if(FLAG_S) - { - uint new_sr; - uint new_pc; - - new_sr = m68ki_pull_16(); - new_pc = m68ki_pull_32(); - m68ki_jump(new_pc); - m68ki_set_sr(new_sr); - -#if M68K_EMULATE_ADDRESS_ERROR - CPU_INSTR_MODE = INSTRUCTION_YES; - CPU_RUN_MODE = RUN_MODE_NORMAL; -#endif - - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_rtr_32(void) -{ - m68ki_set_ccr(m68ki_pull_16()); - m68ki_jump(m68ki_pull_32()); -} - - -static void m68k_op_rts_32(void) -{ - m68ki_jump(m68ki_pull_32()); -} - - -static void m68k_op_sbcd_8_rr(void) -{ - uint* r_dst = &DX; - uint src = DY; - uint dst = *r_dst; - uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); - uint corf = 0; - - if(res > 0xf) - corf = 6; - - res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); - FLAG_V = res; /* Undefined V behavior */ - - if(res > 0xff) - { - res += 0xa0; - FLAG_X = FLAG_C = CFLAG_SET; - } - else if(res < corf) - FLAG_X = FLAG_C = CFLAG_SET; - else - FLAG_X = FLAG_C = 0; - - res = MASK_OUT_ABOVE_8(res-corf); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; -} - - -static void m68k_op_sbcd_8_mm_ax7(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); - uint corf = 0; - - if(res > 0xf) - corf = 6; - res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); - FLAG_V = res; /* Undefined V behavior */ - - if(res > 0xff) - { - res += 0xa0; - FLAG_X = FLAG_C = CFLAG_SET; - } - else if(res < corf) - FLAG_X = FLAG_C = CFLAG_SET; - else - FLAG_X = FLAG_C = 0; - - res = MASK_OUT_ABOVE_8(res-corf); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_sbcd_8_mm_ay7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); - uint corf = 0; - - if(res > 0xf) - corf = 6; - res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); - FLAG_V = res; /* Undefined V behavior */ - - if(res > 0xff) - { - res += 0xa0; - FLAG_X = FLAG_C = CFLAG_SET; - } - else if(res < corf) - FLAG_X = FLAG_C = CFLAG_SET; - else - FLAG_X = FLAG_C = 0; - - res = MASK_OUT_ABOVE_8(res-corf); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_sbcd_8_mm_axy7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); - uint corf = 0; - - if(res > 0xf) - corf = 6; - res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); - FLAG_V = res; /* Undefined V behavior */ - - if(res > 0xff) - { - res += 0xa0; - FLAG_X = FLAG_C = CFLAG_SET; - } - else if(res < corf) - FLAG_X = FLAG_C = CFLAG_SET; - else - FLAG_X = FLAG_C = 0; - - res = MASK_OUT_ABOVE_8(res-corf); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_sbcd_8_mm(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); - uint corf = 0; - - if(res > 0xf) - corf = 6; - res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); - FLAG_V = res; /* Undefined V behavior */ - - if(res > 0xff) - { - res += 0xa0; - FLAG_X = FLAG_C = CFLAG_SET; - } - else if(res < corf) - FLAG_X = FLAG_C = CFLAG_SET; - else - FLAG_X = FLAG_C = 0; - - res = MASK_OUT_ABOVE_8(res-corf); - - FLAG_V &= ~res; /* Undefined V behavior part II */ - FLAG_N = NFLAG_8(res); /* Undefined N behavior */ - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_st_8_d(void) -{ - DY |= 0xff; -} - - -static void m68k_op_st_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), 0xff); -} - - -static void m68k_op_st_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), 0xff); -} - - -static void m68k_op_st_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), 0xff); -} - - -static void m68k_op_st_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), 0xff); -} - - -static void m68k_op_st_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), 0xff); -} - - -static void m68k_op_st_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), 0xff); -} - - -static void m68k_op_st_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), 0xff); -} - - -static void m68k_op_st_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), 0xff); -} - - -static void m68k_op_st_8_al(void) -{ - m68ki_write_8(EA_AL_8(), 0xff); -} - - -static void m68k_op_sf_8_d(void) -{ - DY &= 0xffffff00; -} - - -static void m68k_op_sf_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), 0); -} - - -static void m68k_op_sf_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), 0); -} - - -static void m68k_op_sf_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), 0); -} - - -static void m68k_op_sf_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), 0); -} - - -static void m68k_op_sf_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), 0); -} - - -static void m68k_op_sf_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), 0); -} - - -static void m68k_op_sf_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), 0); -} - - -static void m68k_op_sf_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), 0); -} - - -static void m68k_op_sf_8_al(void) -{ - m68ki_write_8(EA_AL_8(), 0); -} - - -static void m68k_op_shi_8_d(void) -{ - if(COND_HI()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_sls_8_d(void) -{ - if(COND_LS()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_scc_8_d(void) -{ - if(COND_CC()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_scs_8_d(void) -{ - if(COND_CS()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_sne_8_d(void) -{ - if(COND_NE()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_seq_8_d(void) -{ - if(COND_EQ()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_svc_8_d(void) -{ - if(COND_VC()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_svs_8_d(void) -{ - if(COND_VS()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_spl_8_d(void) -{ - if(COND_PL()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_smi_8_d(void) -{ - if(COND_MI()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_sge_8_d(void) -{ - if(COND_GE()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_slt_8_d(void) -{ - if(COND_LT()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_sgt_8_d(void) -{ - if(COND_GT()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_sle_8_d(void) -{ - if(COND_LE()) - { - DY |= 0xff; - USE_CYCLES(CYC_SCC_R_TRUE); - return; - } - DY &= 0xffffff00; -} - - -static void m68k_op_shi_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_shi_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_HI() ? 0xff : 0); -} - - -static void m68k_op_sls_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_sls_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_LS() ? 0xff : 0); -} - - -static void m68k_op_scc_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scc_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_CC() ? 0xff : 0); -} - - -static void m68k_op_scs_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_scs_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_CS() ? 0xff : 0); -} - - -static void m68k_op_sne_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_sne_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_NE() ? 0xff : 0); -} - - -static void m68k_op_seq_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_seq_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_EQ() ? 0xff : 0); -} - - -static void m68k_op_svc_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svc_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_VC() ? 0xff : 0); -} - - -static void m68k_op_svs_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_svs_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_VS() ? 0xff : 0); -} - - -static void m68k_op_spl_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_spl_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_PL() ? 0xff : 0); -} - - -static void m68k_op_smi_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_smi_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_MI() ? 0xff : 0); -} - - -static void m68k_op_sge_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_sge_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_GE() ? 0xff : 0); -} - - -static void m68k_op_slt_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_slt_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_LT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sgt_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_GT() ? 0xff : 0); -} - - -static void m68k_op_sle_8_ai(void) -{ - m68ki_write_8(EA_AY_AI_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_pi(void) -{ - m68ki_write_8(EA_AY_PI_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_pi7(void) -{ - m68ki_write_8(EA_A7_PI_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_pd(void) -{ - m68ki_write_8(EA_AY_PD_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_pd7(void) -{ - m68ki_write_8(EA_A7_PD_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_di(void) -{ - m68ki_write_8(EA_AY_DI_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_ix(void) -{ - m68ki_write_8(EA_AY_IX_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_aw(void) -{ - m68ki_write_8(EA_AW_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_sle_8_al(void) -{ - m68ki_write_8(EA_AL_8(), COND_LE() ? 0xff : 0); -} - - -static void m68k_op_stop(void) -{ - if(FLAG_S) - { - uint new_sr = OPER_I_16(); - CPU_STOPPED |= STOP_LEVEL_STOP; - m68ki_set_sr(new_sr); - if (CPU_STOPPED) - { - SET_CYCLES(m68ki_cpu.cycle_end - 4*MUL); - } - return; - } - m68ki_exception_privilege_violation(); -} - - -static void m68k_op_sub_8_er_d(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_8(DY); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_pi7(void) -{ - uint* r_dst = &DX; - uint src = OPER_A7_PI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_pd7(void) -{ - uint* r_dst = &DX; - uint src = OPER_A7_PD_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_8_er_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_d(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(DY); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_a(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(AY); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_16_er_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_sub_32_er_d(void) -{ - uint* r_dst = &DX; - uint src = DY; - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_a(void) -{ - uint* r_dst = &DX; - uint src = AY; - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_ai(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_AI_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_pi(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PI_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_pd(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_PD_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_di(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_DI_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_ix(void) -{ - uint* r_dst = &DX; - uint src = OPER_AY_IX_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_aw(void) -{ - uint* r_dst = &DX; - uint src = OPER_AW_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_al(void) -{ - uint* r_dst = &DX; - uint src = OPER_AL_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_pcdi(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCDI_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_pcix(void) -{ - uint* r_dst = &DX; - uint src = OPER_PCIX_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_32_er_i(void) -{ - uint* r_dst = &DX; - uint src = OPER_I_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_sub_8_re_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_di(void) -{ - uint ea = EA_AY_DI_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_aw(void) -{ - uint ea = EA_AW_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_8_re_al(void) -{ - uint ea = EA_AL_8(); - uint src = MASK_OUT_ABOVE_8(DX); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_sub_16_re_ai(void) -{ - uint ea = EA_AY_AI_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_sub_16_re_pi(void) -{ - uint ea = EA_AY_PI_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_sub_16_re_pd(void) -{ - uint ea = EA_AY_PD_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_sub_16_re_di(void) -{ - uint ea = EA_AY_DI_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_sub_16_re_ix(void) -{ - uint ea = EA_AY_IX_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_sub_16_re_aw(void) -{ - uint ea = EA_AW_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_sub_16_re_al(void) -{ - uint ea = EA_AL_16(); - uint src = MASK_OUT_ABOVE_16(DX); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_sub_32_re_ai(void) -{ - uint ea = EA_AY_AI_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_sub_32_re_pi(void) -{ - uint ea = EA_AY_PI_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_sub_32_re_pd(void) -{ - uint ea = EA_AY_PD_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_sub_32_re_di(void) -{ - uint ea = EA_AY_DI_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_sub_32_re_ix(void) -{ - uint ea = EA_AY_IX_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_sub_32_re_aw(void) -{ - uint ea = EA_AW_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_sub_32_re_al(void) -{ - uint ea = EA_AL_32(); - uint src = DX; - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_suba_16_d(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY)); -} - - -static void m68k_op_suba_16_a(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY)); -} - - -static void m68k_op_suba_16_ai(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_AI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_pi(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_PI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_pd(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_PD_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_di(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_DI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_ix(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AY_IX_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_aw(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AW_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_al(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_AL_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_pcdi(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_PCDI_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_pcix(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_PCIX_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_16_i(void) -{ - uint* r_dst = &AX; - uint src = MAKE_INT_16(OPER_I_16()); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_d(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY); -} - - -static void m68k_op_suba_32_a(void) -{ - uint* r_dst = &AX; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY); -} - - -static void m68k_op_suba_32_ai(void) -{ - uint* r_dst = &AX; - uint src = OPER_AY_AI_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_pi(void) -{ - uint* r_dst = &AX; - uint src = OPER_AY_PI_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_pd(void) -{ - uint* r_dst = &AX; - uint src = OPER_AY_PD_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_di(void) -{ - uint* r_dst = &AX; - uint src = OPER_AY_DI_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_ix(void) -{ - uint* r_dst = &AX; - uint src = OPER_AY_IX_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_aw(void) -{ - uint* r_dst = &AX; - uint src = OPER_AW_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_al(void) -{ - uint* r_dst = &AX; - uint src = OPER_AL_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_pcdi(void) -{ - uint* r_dst = &AX; - uint src = OPER_PCDI_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_pcix(void) -{ - uint* r_dst = &AX; - uint src = OPER_PCIX_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_suba_32_i(void) -{ - uint* r_dst = &AX; - uint src = OPER_I_32(); - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); -} - - -static void m68k_op_subi_8_d(void) -{ - uint* r_dst = &DY; - uint src = OPER_I_8(); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_subi_8_ai(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_AI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_pi(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_pi7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_pd(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_pd7(void) -{ - uint src = OPER_I_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_di(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_DI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_ix(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AY_IX_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_aw(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AW_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_8_al(void) -{ - uint src = OPER_I_8(); - uint ea = EA_AL_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subi_16_d(void) -{ - uint* r_dst = &DY; - uint src = OPER_I_16(); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_subi_16_ai(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_AI_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subi_16_pi(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PI_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subi_16_pd(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_PD_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subi_16_di(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_DI_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subi_16_ix(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AY_IX_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subi_16_aw(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AW_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subi_16_al(void) -{ - uint src = OPER_I_16(); - uint ea = EA_AL_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subi_32_d(void) -{ - uint* r_dst = &DY; - uint src = OPER_I_32(); - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_subi_32_ai(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_AI_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subi_32_pi(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PI_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subi_32_pd(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_PD_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subi_32_di(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_DI_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subi_32_ix(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AY_IX_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subi_32_aw(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AW_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subi_32_al(void) -{ - uint src = OPER_I_32(); - uint ea = EA_AL_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_d(void) -{ - uint* r_dst = &DY; - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; -} - - -static void m68k_op_subq_8_ai(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_AI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_pi(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_pi7(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_A7_PI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_pd(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_pd7(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_di(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_DI_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_ix(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_IX_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_aw(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AW_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_8_al(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AL_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src; - - FLAG_N = NFLAG_8(res); - FLAG_Z = MASK_OUT_ABOVE_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - m68ki_write_8(ea, FLAG_Z); -} - - -static void m68k_op_subq_16_d(void) -{ - uint* r_dst = &DY; - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; -} - - -static void m68k_op_subq_16_a(void) -{ - uint* r_dst = &AY; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1)); -} - - -static void m68k_op_subq_16_ai(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_AI_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subq_16_pi(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PI_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subq_16_pd(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PD_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subq_16_di(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_DI_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subq_16_ix(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_IX_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subq_16_aw(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AW_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subq_16_al(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AL_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src; - - FLAG_N = NFLAG_16(res); - FLAG_Z = MASK_OUT_ABOVE_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - m68ki_write_16(ea, FLAG_Z); -} - - -static void m68k_op_subq_32_d(void) -{ - uint* r_dst = &DY; - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint dst = *r_dst; - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - *r_dst = FLAG_Z; -} - - -static void m68k_op_subq_32_a(void) -{ - uint* r_dst = &AY; - - *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1)); -} - - -static void m68k_op_subq_32_ai(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_AI_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subq_32_pi(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PI_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subq_32_pd(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_PD_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subq_32_di(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_DI_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subq_32_ix(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AY_IX_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subq_32_aw(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AW_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subq_32_al(void) -{ - uint src = (((REG_IR >> 9) - 1) & 7) + 1; - uint ea = EA_AL_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src; - - FLAG_N = NFLAG_32(res); - FLAG_Z = MASK_OUT_ABOVE_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - m68ki_write_32(ea, FLAG_Z); -} - - -static void m68k_op_subx_8_rr(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_8(DY); - uint dst = MASK_OUT_ABOVE_8(*r_dst); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; -} - - -static void m68k_op_subx_16_rr(void) -{ - uint* r_dst = &DX; - uint src = MASK_OUT_ABOVE_16(DY); - uint dst = MASK_OUT_ABOVE_16(*r_dst); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; -} - - -static void m68k_op_subx_32_rr(void) -{ - uint* r_dst = &DX; - uint src = DY; - uint dst = *r_dst; - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - *r_dst = res; -} - - -static void m68k_op_subx_8_mm_ax7(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_subx_8_mm_ay7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_subx_8_mm_axy7(void) -{ - uint src = OPER_A7_PD_8(); - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_subx_8_mm(void) -{ - uint src = OPER_AY_PD_8(); - uint ea = EA_AX_PD_8(); - uint dst = m68ki_read_8(ea); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_8(res); - FLAG_X = FLAG_C = CFLAG_8(res); - FLAG_V = VFLAG_SUB_8(src, dst, res); - - res = MASK_OUT_ABOVE_8(res); - FLAG_Z |= res; - - m68ki_write_8(ea, res); -} - - -static void m68k_op_subx_16_mm(void) -{ - uint src = OPER_AY_PD_16(); - uint ea = EA_AX_PD_16(); - uint dst = m68ki_read_16(ea); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_16(res); - FLAG_X = FLAG_C = CFLAG_16(res); - FLAG_V = VFLAG_SUB_16(src, dst, res); - - res = MASK_OUT_ABOVE_16(res); - FLAG_Z |= res; - - m68ki_write_16(ea, res); -} - - -static void m68k_op_subx_32_mm(void) -{ - uint src = OPER_AY_PD_32(); - uint ea = EA_AX_PD_32(); - uint dst = m68ki_read_32(ea); - uint res = dst - src - XFLAG_AS_1(); - - FLAG_N = NFLAG_32(res); - FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); - FLAG_V = VFLAG_SUB_32(src, dst, res); - - res = MASK_OUT_ABOVE_32(res); - FLAG_Z |= res; - - m68ki_write_32(ea, res); -} - - -static void m68k_op_swap_32(void) -{ - uint* r_dst = &DY; - - FLAG_Z = MASK_OUT_ABOVE_32(*r_dst<<16); - *r_dst = (*r_dst>>16) | FLAG_Z; - - FLAG_Z = *r_dst; - FLAG_N = NFLAG_32(*r_dst); - FLAG_C = CFLAG_CLEAR; - FLAG_V = VFLAG_CLEAR; -} - - -static void m68k_op_tas_8_d(void) -{ - uint* r_dst = &DY; - - FLAG_Z = MASK_OUT_ABOVE_8(*r_dst); - FLAG_N = NFLAG_8(*r_dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - *r_dst |= 0x80; -} - - -static void m68k_op_tas_8_ai(void) -{ - uint ea = EA_AY_AI_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_pi(void) -{ - uint ea = EA_AY_PI_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_pi7(void) -{ - uint ea = EA_A7_PI_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_pd(void) -{ - uint ea = EA_AY_PD_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_pd7(void) -{ - uint ea = EA_A7_PD_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_di(void) -{ - uint ea = EA_AY_DI_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_ix(void) -{ - uint ea = EA_AY_IX_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_aw(void) -{ - uint ea = EA_AW_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_tas_8_al(void) -{ - uint ea = EA_AL_8(); - uint dst = m68ki_read_8(ea); - - FLAG_Z = dst; - FLAG_N = NFLAG_8(dst); - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; - - /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback - disabled in order to function properly. Some Amiga software may also rely - on this, but only when accessing specific addresses so additional functionality - will be needed. */ - if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); -} - - -static void m68k_op_trap(void) -{ - /* Trap#n stacks exception frame type 0 */ - m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (REG_IR & 0xf)); /* HJB 990403 */ -} - - -static void m68k_op_trapv(void) -{ - if(COND_VC()) - { - return; - } - m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */ -} - - -static void m68k_op_tst_8_d(void) -{ - uint res = MASK_OUT_ABOVE_8(DY); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_ai(void) -{ - uint res = OPER_AY_AI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_pi(void) -{ - uint res = OPER_AY_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_pi7(void) -{ - uint res = OPER_A7_PI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_pd(void) -{ - uint res = OPER_AY_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_pd7(void) -{ - uint res = OPER_A7_PD_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_di(void) -{ - uint res = OPER_AY_DI_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_ix(void) -{ - uint res = OPER_AY_IX_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_aw(void) -{ - uint res = OPER_AW_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_8_al(void) -{ - uint res = OPER_AL_8(); - - FLAG_N = NFLAG_8(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_d(void) -{ - uint res = MASK_OUT_ABOVE_16(DY); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_ai(void) -{ - uint res = OPER_AY_AI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_pi(void) -{ - uint res = OPER_AY_PI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_pd(void) -{ - uint res = OPER_AY_PD_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_di(void) -{ - uint res = OPER_AY_DI_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_ix(void) -{ - uint res = OPER_AY_IX_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_aw(void) -{ - uint res = OPER_AW_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_16_al(void) -{ - uint res = OPER_AL_16(); - - FLAG_N = NFLAG_16(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_d(void) -{ - uint res = DY; - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_ai(void) -{ - uint res = OPER_AY_AI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_pi(void) -{ - uint res = OPER_AY_PI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_pd(void) -{ - uint res = OPER_AY_PD_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_di(void) -{ - uint res = OPER_AY_DI_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_ix(void) -{ - uint res = OPER_AY_IX_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_aw(void) -{ - uint res = OPER_AW_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_tst_32_al(void) -{ - uint res = OPER_AL_32(); - - FLAG_N = NFLAG_32(res); - FLAG_Z = res; - FLAG_V = VFLAG_CLEAR; - FLAG_C = CFLAG_CLEAR; -} - - -static void m68k_op_unlk_32_a7(void) -{ - REG_A[7] = m68ki_read_32(REG_A[7]); -} - - -static void m68k_op_unlk_32(void) -{ - uint* r_dst = &AY; - - REG_A[7] = *r_dst; - *r_dst = m68ki_pull_32(); -} - - -/* ======================================================================== */ -/* ========================= OPCODE TABLE BUILDER ========================= */ -/* ======================================================================== */ - -#ifndef BUILD_TABLES - -#include "m68ki_instruction_jump_table.h" - -#else - -/* This is used to generate the opcode handler jump table */ -typedef struct -{ - void (*opcode_handler)(void); /* handler function */ - unsigned int mask; /* mask on opcode */ - unsigned int match; /* what to match after masking */ - unsigned char cycles; /* cycles each cpu type takes */ -} opcode_handler_struct; - -/* opcode handler jump table */ -static void (*m68ki_instruction_jump_table[0x10000])(void); - -/* Opcode handler table */ -static const opcode_handler_struct m68k_opcode_handler_table[] = -{ -/* function mask match cyc */ - {m68k_op_1010 , 0xf000, 0xa000, 4}, - {m68k_op_1111 , 0xf000, 0xf000, 4}, - {m68k_op_moveq_32 , 0xf100, 0x7000, 4}, - {m68k_op_bra_8 , 0xff00, 0x6000, 10}, - {m68k_op_bsr_8 , 0xff00, 0x6100, 18}, - {m68k_op_bhi_8 , 0xff00, 0x6200, 10}, - {m68k_op_bls_8 , 0xff00, 0x6300, 10}, - {m68k_op_bcc_8 , 0xff00, 0x6400, 10}, - {m68k_op_bcs_8 , 0xff00, 0x6500, 10}, - {m68k_op_bne_8 , 0xff00, 0x6600, 10}, - {m68k_op_beq_8 , 0xff00, 0x6700, 10}, - {m68k_op_bvc_8 , 0xff00, 0x6800, 10}, - {m68k_op_bvs_8 , 0xff00, 0x6900, 10}, - {m68k_op_bpl_8 , 0xff00, 0x6a00, 10}, - {m68k_op_bmi_8 , 0xff00, 0x6b00, 10}, - {m68k_op_bge_8 , 0xff00, 0x6c00, 10}, - {m68k_op_blt_8 , 0xff00, 0x6d00, 10}, - {m68k_op_bgt_8 , 0xff00, 0x6e00, 10}, - {m68k_op_ble_8 , 0xff00, 0x6f00, 10}, - {m68k_op_btst_32_r_d , 0xf1f8, 0x0100, 6}, - {m68k_op_movep_16_er , 0xf1f8, 0x0108, 16}, - {m68k_op_btst_8_r_ai , 0xf1f8, 0x0110, 8}, - {m68k_op_btst_8_r_pi , 0xf1f8, 0x0118, 8}, - {m68k_op_btst_8_r_pd , 0xf1f8, 0x0120, 10}, - {m68k_op_btst_8_r_di , 0xf1f8, 0x0128, 12}, - {m68k_op_btst_8_r_ix , 0xf1f8, 0x0130, 14}, - {m68k_op_bchg_32_r_d , 0xf1f8, 0x0140, 8}, - {m68k_op_movep_32_er , 0xf1f8, 0x0148, 24}, - {m68k_op_bchg_8_r_ai , 0xf1f8, 0x0150, 12}, - {m68k_op_bchg_8_r_pi , 0xf1f8, 0x0158, 12}, - {m68k_op_bchg_8_r_pd , 0xf1f8, 0x0160, 14}, - {m68k_op_bchg_8_r_di , 0xf1f8, 0x0168, 16}, - {m68k_op_bchg_8_r_ix , 0xf1f8, 0x0170, 18}, - {m68k_op_bclr_32_r_d , 0xf1f8, 0x0180, 10}, - {m68k_op_movep_16_re , 0xf1f8, 0x0188, 16}, - {m68k_op_bclr_8_r_ai , 0xf1f8, 0x0190, 12}, - {m68k_op_bclr_8_r_pi , 0xf1f8, 0x0198, 12}, - {m68k_op_bclr_8_r_pd , 0xf1f8, 0x01a0, 14}, - {m68k_op_bclr_8_r_di , 0xf1f8, 0x01a8, 16}, - {m68k_op_bclr_8_r_ix , 0xf1f8, 0x01b0, 18}, - {m68k_op_bset_32_r_d , 0xf1f8, 0x01c0, 8}, - {m68k_op_movep_32_re , 0xf1f8, 0x01c8, 24}, - {m68k_op_bset_8_r_ai , 0xf1f8, 0x01d0, 12}, - {m68k_op_bset_8_r_pi , 0xf1f8, 0x01d8, 12}, - {m68k_op_bset_8_r_pd , 0xf1f8, 0x01e0, 14}, - {m68k_op_bset_8_r_di , 0xf1f8, 0x01e8, 16}, - {m68k_op_bset_8_r_ix , 0xf1f8, 0x01f0, 18}, - {m68k_op_move_8_d_d , 0xf1f8, 0x1000, 4}, - {m68k_op_move_8_d_ai , 0xf1f8, 0x1010, 8}, - {m68k_op_move_8_d_pi , 0xf1f8, 0x1018, 8}, - {m68k_op_move_8_d_pd , 0xf1f8, 0x1020, 10}, - {m68k_op_move_8_d_di , 0xf1f8, 0x1028, 12}, - {m68k_op_move_8_d_ix , 0xf1f8, 0x1030, 14}, - {m68k_op_move_8_ai_d , 0xf1f8, 0x1080, 8}, - {m68k_op_move_8_ai_ai , 0xf1f8, 0x1090, 12}, - {m68k_op_move_8_ai_pi , 0xf1f8, 0x1098, 12}, - {m68k_op_move_8_ai_pd , 0xf1f8, 0x10a0, 14}, - {m68k_op_move_8_ai_di , 0xf1f8, 0x10a8, 16}, - {m68k_op_move_8_ai_ix , 0xf1f8, 0x10b0, 18}, - {m68k_op_move_8_pi_d , 0xf1f8, 0x10c0, 8}, - {m68k_op_move_8_pi_ai , 0xf1f8, 0x10d0, 12}, - {m68k_op_move_8_pi_pi , 0xf1f8, 0x10d8, 12}, - {m68k_op_move_8_pi_pd , 0xf1f8, 0x10e0, 14}, - {m68k_op_move_8_pi_di , 0xf1f8, 0x10e8, 16}, - {m68k_op_move_8_pi_ix , 0xf1f8, 0x10f0, 18}, - {m68k_op_move_8_pd_d , 0xf1f8, 0x1100, 8}, - {m68k_op_move_8_pd_ai , 0xf1f8, 0x1110, 12}, - {m68k_op_move_8_pd_pi , 0xf1f8, 0x1118, 12}, - {m68k_op_move_8_pd_pd , 0xf1f8, 0x1120, 14}, - {m68k_op_move_8_pd_di , 0xf1f8, 0x1128, 16}, - {m68k_op_move_8_pd_ix , 0xf1f8, 0x1130, 18}, - {m68k_op_move_8_di_d , 0xf1f8, 0x1140, 12}, - {m68k_op_move_8_di_ai , 0xf1f8, 0x1150, 16}, - {m68k_op_move_8_di_pi , 0xf1f8, 0x1158, 16}, - {m68k_op_move_8_di_pd , 0xf1f8, 0x1160, 18}, - {m68k_op_move_8_di_di , 0xf1f8, 0x1168, 20}, - {m68k_op_move_8_di_ix , 0xf1f8, 0x1170, 22}, - {m68k_op_move_8_ix_d , 0xf1f8, 0x1180, 14}, - {m68k_op_move_8_ix_ai , 0xf1f8, 0x1190, 18}, - {m68k_op_move_8_ix_pi , 0xf1f8, 0x1198, 18}, - {m68k_op_move_8_ix_pd , 0xf1f8, 0x11a0, 20}, - {m68k_op_move_8_ix_di , 0xf1f8, 0x11a8, 22}, - {m68k_op_move_8_ix_ix , 0xf1f8, 0x11b0, 24}, - {m68k_op_move_32_d_d , 0xf1f8, 0x2000, 4}, - {m68k_op_move_32_d_a , 0xf1f8, 0x2008, 4}, - {m68k_op_move_32_d_ai , 0xf1f8, 0x2010, 12}, - {m68k_op_move_32_d_pi , 0xf1f8, 0x2018, 12}, - {m68k_op_move_32_d_pd , 0xf1f8, 0x2020, 14}, - {m68k_op_move_32_d_di , 0xf1f8, 0x2028, 16}, - {m68k_op_move_32_d_ix , 0xf1f8, 0x2030, 18}, - {m68k_op_movea_32_d , 0xf1f8, 0x2040, 4}, - {m68k_op_movea_32_a , 0xf1f8, 0x2048, 4}, - {m68k_op_movea_32_ai , 0xf1f8, 0x2050, 12}, - {m68k_op_movea_32_pi , 0xf1f8, 0x2058, 12}, - {m68k_op_movea_32_pd , 0xf1f8, 0x2060, 14}, - {m68k_op_movea_32_di , 0xf1f8, 0x2068, 16}, - {m68k_op_movea_32_ix , 0xf1f8, 0x2070, 18}, - {m68k_op_move_32_ai_d , 0xf1f8, 0x2080, 12}, - {m68k_op_move_32_ai_a , 0xf1f8, 0x2088, 12}, - {m68k_op_move_32_ai_ai , 0xf1f8, 0x2090, 20}, - {m68k_op_move_32_ai_pi , 0xf1f8, 0x2098, 20}, - {m68k_op_move_32_ai_pd , 0xf1f8, 0x20a0, 22}, - {m68k_op_move_32_ai_di , 0xf1f8, 0x20a8, 24}, - {m68k_op_move_32_ai_ix , 0xf1f8, 0x20b0, 26}, - {m68k_op_move_32_pi_d , 0xf1f8, 0x20c0, 12}, - {m68k_op_move_32_pi_a , 0xf1f8, 0x20c8, 12}, - {m68k_op_move_32_pi_ai , 0xf1f8, 0x20d0, 20}, - {m68k_op_move_32_pi_pi , 0xf1f8, 0x20d8, 20}, - {m68k_op_move_32_pi_pd , 0xf1f8, 0x20e0, 22}, - {m68k_op_move_32_pi_di , 0xf1f8, 0x20e8, 24}, - {m68k_op_move_32_pi_ix , 0xf1f8, 0x20f0, 26}, - {m68k_op_move_32_pd_d , 0xf1f8, 0x2100, 12}, - {m68k_op_move_32_pd_a , 0xf1f8, 0x2108, 12}, - {m68k_op_move_32_pd_ai , 0xf1f8, 0x2110, 20}, - {m68k_op_move_32_pd_pi , 0xf1f8, 0x2118, 20}, - {m68k_op_move_32_pd_pd , 0xf1f8, 0x2120, 22}, - {m68k_op_move_32_pd_di , 0xf1f8, 0x2128, 24}, - {m68k_op_move_32_pd_ix , 0xf1f8, 0x2130, 26}, - {m68k_op_move_32_di_d , 0xf1f8, 0x2140, 16}, - {m68k_op_move_32_di_a , 0xf1f8, 0x2148, 16}, - {m68k_op_move_32_di_ai , 0xf1f8, 0x2150, 24}, - {m68k_op_move_32_di_pi , 0xf1f8, 0x2158, 24}, - {m68k_op_move_32_di_pd , 0xf1f8, 0x2160, 26}, - {m68k_op_move_32_di_di , 0xf1f8, 0x2168, 28}, - {m68k_op_move_32_di_ix , 0xf1f8, 0x2170, 30}, - {m68k_op_move_32_ix_d , 0xf1f8, 0x2180, 18}, - {m68k_op_move_32_ix_a , 0xf1f8, 0x2188, 18}, - {m68k_op_move_32_ix_ai , 0xf1f8, 0x2190, 26}, - {m68k_op_move_32_ix_pi , 0xf1f8, 0x2198, 26}, - {m68k_op_move_32_ix_pd , 0xf1f8, 0x21a0, 28}, - {m68k_op_move_32_ix_di , 0xf1f8, 0x21a8, 30}, - {m68k_op_move_32_ix_ix , 0xf1f8, 0x21b0, 32}, - {m68k_op_move_16_d_d , 0xf1f8, 0x3000, 4}, - {m68k_op_move_16_d_a , 0xf1f8, 0x3008, 4}, - {m68k_op_move_16_d_ai , 0xf1f8, 0x3010, 8}, - {m68k_op_move_16_d_pi , 0xf1f8, 0x3018, 8}, - {m68k_op_move_16_d_pd , 0xf1f8, 0x3020, 10}, - {m68k_op_move_16_d_di , 0xf1f8, 0x3028, 12}, - {m68k_op_move_16_d_ix , 0xf1f8, 0x3030, 14}, - {m68k_op_movea_16_d , 0xf1f8, 0x3040, 4}, - {m68k_op_movea_16_a , 0xf1f8, 0x3048, 4}, - {m68k_op_movea_16_ai , 0xf1f8, 0x3050, 8}, - {m68k_op_movea_16_pi , 0xf1f8, 0x3058, 8}, - {m68k_op_movea_16_pd , 0xf1f8, 0x3060, 10}, - {m68k_op_movea_16_di , 0xf1f8, 0x3068, 12}, - {m68k_op_movea_16_ix , 0xf1f8, 0x3070, 14}, - {m68k_op_move_16_ai_d , 0xf1f8, 0x3080, 8}, - {m68k_op_move_16_ai_a , 0xf1f8, 0x3088, 8}, - {m68k_op_move_16_ai_ai , 0xf1f8, 0x3090, 12}, - {m68k_op_move_16_ai_pi , 0xf1f8, 0x3098, 12}, - {m68k_op_move_16_ai_pd , 0xf1f8, 0x30a0, 14}, - {m68k_op_move_16_ai_di , 0xf1f8, 0x30a8, 16}, - {m68k_op_move_16_ai_ix , 0xf1f8, 0x30b0, 18}, - {m68k_op_move_16_pi_d , 0xf1f8, 0x30c0, 8}, - {m68k_op_move_16_pi_a , 0xf1f8, 0x30c8, 8}, - {m68k_op_move_16_pi_ai , 0xf1f8, 0x30d0, 12}, - {m68k_op_move_16_pi_pi , 0xf1f8, 0x30d8, 12}, - {m68k_op_move_16_pi_pd , 0xf1f8, 0x30e0, 14}, - {m68k_op_move_16_pi_di , 0xf1f8, 0x30e8, 16}, - {m68k_op_move_16_pi_ix , 0xf1f8, 0x30f0, 18}, - {m68k_op_move_16_pd_d , 0xf1f8, 0x3100, 8}, - {m68k_op_move_16_pd_a , 0xf1f8, 0x3108, 8}, - {m68k_op_move_16_pd_ai , 0xf1f8, 0x3110, 12}, - {m68k_op_move_16_pd_pi , 0xf1f8, 0x3118, 12}, - {m68k_op_move_16_pd_pd , 0xf1f8, 0x3120, 14}, - {m68k_op_move_16_pd_di , 0xf1f8, 0x3128, 16}, - {m68k_op_move_16_pd_ix , 0xf1f8, 0x3130, 18}, - {m68k_op_move_16_di_d , 0xf1f8, 0x3140, 12}, - {m68k_op_move_16_di_a , 0xf1f8, 0x3148, 12}, - {m68k_op_move_16_di_ai , 0xf1f8, 0x3150, 16}, - {m68k_op_move_16_di_pi , 0xf1f8, 0x3158, 16}, - {m68k_op_move_16_di_pd , 0xf1f8, 0x3160, 18}, - {m68k_op_move_16_di_di , 0xf1f8, 0x3168, 20}, - {m68k_op_move_16_di_ix , 0xf1f8, 0x3170, 22}, - {m68k_op_move_16_ix_d , 0xf1f8, 0x3180, 14}, - {m68k_op_move_16_ix_a , 0xf1f8, 0x3188, 14}, - {m68k_op_move_16_ix_ai , 0xf1f8, 0x3190, 18}, - {m68k_op_move_16_ix_pi , 0xf1f8, 0x3198, 18}, - {m68k_op_move_16_ix_pd , 0xf1f8, 0x31a0, 20}, - {m68k_op_move_16_ix_di , 0xf1f8, 0x31a8, 22}, - {m68k_op_move_16_ix_ix , 0xf1f8, 0x31b0, 24}, - {m68k_op_chk_16_d , 0xf1f8, 0x4180, 10}, - {m68k_op_chk_16_ai , 0xf1f8, 0x4190, 14}, - {m68k_op_chk_16_pi , 0xf1f8, 0x4198, 14}, - {m68k_op_chk_16_pd , 0xf1f8, 0x41a0, 16}, - {m68k_op_chk_16_di , 0xf1f8, 0x41a8, 18}, - {m68k_op_chk_16_ix , 0xf1f8, 0x41b0, 20}, - {m68k_op_lea_32_ai , 0xf1f8, 0x41d0, 4}, - {m68k_op_lea_32_di , 0xf1f8, 0x41e8, 8}, - {m68k_op_lea_32_ix , 0xf1f8, 0x41f0, 12}, - {m68k_op_addq_8_d , 0xf1f8, 0x5000, 4}, - {m68k_op_addq_8_ai , 0xf1f8, 0x5010, 12}, - {m68k_op_addq_8_pi , 0xf1f8, 0x5018, 12}, - {m68k_op_addq_8_pd , 0xf1f8, 0x5020, 14}, - {m68k_op_addq_8_di , 0xf1f8, 0x5028, 16}, - {m68k_op_addq_8_ix , 0xf1f8, 0x5030, 18}, - {m68k_op_addq_16_d , 0xf1f8, 0x5040, 4}, - {m68k_op_addq_16_a , 0xf1f8, 0x5048, 8}, /* see Yacht.txt */ - {m68k_op_addq_16_ai , 0xf1f8, 0x5050, 12}, - {m68k_op_addq_16_pi , 0xf1f8, 0x5058, 12}, - {m68k_op_addq_16_pd , 0xf1f8, 0x5060, 14}, - {m68k_op_addq_16_di , 0xf1f8, 0x5068, 16}, - {m68k_op_addq_16_ix , 0xf1f8, 0x5070, 18}, - {m68k_op_addq_32_d , 0xf1f8, 0x5080, 8}, - {m68k_op_addq_32_a , 0xf1f8, 0x5088, 8}, - {m68k_op_addq_32_ai , 0xf1f8, 0x5090, 20}, - {m68k_op_addq_32_pi , 0xf1f8, 0x5098, 20}, - {m68k_op_addq_32_pd , 0xf1f8, 0x50a0, 22}, - {m68k_op_addq_32_di , 0xf1f8, 0x50a8, 24}, - {m68k_op_addq_32_ix , 0xf1f8, 0x50b0, 26}, - {m68k_op_subq_8_d , 0xf1f8, 0x5100, 4}, - {m68k_op_subq_8_ai , 0xf1f8, 0x5110, 12}, - {m68k_op_subq_8_pi , 0xf1f8, 0x5118, 12}, - {m68k_op_subq_8_pd , 0xf1f8, 0x5120, 14}, - {m68k_op_subq_8_di , 0xf1f8, 0x5128, 16}, - {m68k_op_subq_8_ix , 0xf1f8, 0x5130, 18}, - {m68k_op_subq_16_d , 0xf1f8, 0x5140, 4}, - {m68k_op_subq_16_a , 0xf1f8, 0x5148, 8}, - {m68k_op_subq_16_ai , 0xf1f8, 0x5150, 12}, - {m68k_op_subq_16_pi , 0xf1f8, 0x5158, 12}, - {m68k_op_subq_16_pd , 0xf1f8, 0x5160, 14}, - {m68k_op_subq_16_di , 0xf1f8, 0x5168, 16}, - {m68k_op_subq_16_ix , 0xf1f8, 0x5170, 18}, - {m68k_op_subq_32_d , 0xf1f8, 0x5180, 8}, - {m68k_op_subq_32_a , 0xf1f8, 0x5188, 8}, - {m68k_op_subq_32_ai , 0xf1f8, 0x5190, 20}, - {m68k_op_subq_32_pi , 0xf1f8, 0x5198, 20}, - {m68k_op_subq_32_pd , 0xf1f8, 0x51a0, 22}, - {m68k_op_subq_32_di , 0xf1f8, 0x51a8, 24}, - {m68k_op_subq_32_ix , 0xf1f8, 0x51b0, 26}, - {m68k_op_or_8_er_d , 0xf1f8, 0x8000, 4}, - {m68k_op_or_8_er_ai , 0xf1f8, 0x8010, 8}, - {m68k_op_or_8_er_pi , 0xf1f8, 0x8018, 8}, - {m68k_op_or_8_er_pd , 0xf1f8, 0x8020, 10}, - {m68k_op_or_8_er_di , 0xf1f8, 0x8028, 12}, - {m68k_op_or_8_er_ix , 0xf1f8, 0x8030, 14}, - {m68k_op_or_16_er_d , 0xf1f8, 0x8040, 4}, - {m68k_op_or_16_er_ai , 0xf1f8, 0x8050, 8}, - {m68k_op_or_16_er_pi , 0xf1f8, 0x8058, 8}, - {m68k_op_or_16_er_pd , 0xf1f8, 0x8060, 10}, - {m68k_op_or_16_er_di , 0xf1f8, 0x8068, 12}, - {m68k_op_or_16_er_ix , 0xf1f8, 0x8070, 14}, - {m68k_op_or_32_er_d , 0xf1f8, 0x8080, 8}, - {m68k_op_or_32_er_ai , 0xf1f8, 0x8090, 14}, - {m68k_op_or_32_er_pi , 0xf1f8, 0x8098, 14}, - {m68k_op_or_32_er_pd , 0xf1f8, 0x80a0, 16}, - {m68k_op_or_32_er_di , 0xf1f8, 0x80a8, 18}, - {m68k_op_or_32_er_ix , 0xf1f8, 0x80b0, 20}, - {m68k_op_divu_16_d , 0xf1f8, 0x80c0, 0}, - {m68k_op_divu_16_ai , 0xf1f8, 0x80d0, 4}, - {m68k_op_divu_16_pi , 0xf1f8, 0x80d8, 4}, - {m68k_op_divu_16_pd , 0xf1f8, 0x80e0, 6}, - {m68k_op_divu_16_di , 0xf1f8, 0x80e8, 8}, - {m68k_op_divu_16_ix , 0xf1f8, 0x80f0, 10}, - {m68k_op_sbcd_8_rr , 0xf1f8, 0x8100, 6}, - {m68k_op_sbcd_8_mm , 0xf1f8, 0x8108, 18}, - {m68k_op_or_8_re_ai , 0xf1f8, 0x8110, 12}, - {m68k_op_or_8_re_pi , 0xf1f8, 0x8118, 12}, - {m68k_op_or_8_re_pd , 0xf1f8, 0x8120, 14}, - {m68k_op_or_8_re_di , 0xf1f8, 0x8128, 16}, - {m68k_op_or_8_re_ix , 0xf1f8, 0x8130, 18}, - {m68k_op_or_16_re_ai , 0xf1f8, 0x8150, 12}, - {m68k_op_or_16_re_pi , 0xf1f8, 0x8158, 12}, - {m68k_op_or_16_re_pd , 0xf1f8, 0x8160, 14}, - {m68k_op_or_16_re_di , 0xf1f8, 0x8168, 16}, - {m68k_op_or_16_re_ix , 0xf1f8, 0x8170, 18}, - {m68k_op_or_32_re_ai , 0xf1f8, 0x8190, 20}, - {m68k_op_or_32_re_pi , 0xf1f8, 0x8198, 20}, - {m68k_op_or_32_re_pd , 0xf1f8, 0x81a0, 22}, - {m68k_op_or_32_re_di , 0xf1f8, 0x81a8, 24}, - {m68k_op_or_32_re_ix , 0xf1f8, 0x81b0, 26}, - {m68k_op_divs_16_d , 0xf1f8, 0x81c0, 0}, - {m68k_op_divs_16_ai , 0xf1f8, 0x81d0, 4}, - {m68k_op_divs_16_pi , 0xf1f8, 0x81d8, 4}, - {m68k_op_divs_16_pd , 0xf1f8, 0x81e0, 6}, - {m68k_op_divs_16_di , 0xf1f8, 0x81e8, 8}, - {m68k_op_divs_16_ix , 0xf1f8, 0x81f0, 10}, - {m68k_op_sub_8_er_d , 0xf1f8, 0x9000, 4}, - {m68k_op_sub_8_er_ai , 0xf1f8, 0x9010, 8}, - {m68k_op_sub_8_er_pi , 0xf1f8, 0x9018, 8}, - {m68k_op_sub_8_er_pd , 0xf1f8, 0x9020, 10}, - {m68k_op_sub_8_er_di , 0xf1f8, 0x9028, 12}, - {m68k_op_sub_8_er_ix , 0xf1f8, 0x9030, 14}, - {m68k_op_sub_16_er_d , 0xf1f8, 0x9040, 4}, - {m68k_op_sub_16_er_a , 0xf1f8, 0x9048, 4}, - {m68k_op_sub_16_er_ai , 0xf1f8, 0x9050, 8}, - {m68k_op_sub_16_er_pi , 0xf1f8, 0x9058, 8}, - {m68k_op_sub_16_er_pd , 0xf1f8, 0x9060, 10}, - {m68k_op_sub_16_er_di , 0xf1f8, 0x9068, 12}, - {m68k_op_sub_16_er_ix , 0xf1f8, 0x9070, 14}, - {m68k_op_sub_32_er_d , 0xf1f8, 0x9080, 8}, - {m68k_op_sub_32_er_a , 0xf1f8, 0x9088, 8}, - {m68k_op_sub_32_er_ai , 0xf1f8, 0x9090, 14}, - {m68k_op_sub_32_er_pi , 0xf1f8, 0x9098, 14}, - {m68k_op_sub_32_er_pd , 0xf1f8, 0x90a0, 16}, - {m68k_op_sub_32_er_di , 0xf1f8, 0x90a8, 18}, - {m68k_op_sub_32_er_ix , 0xf1f8, 0x90b0, 20}, - {m68k_op_suba_16_d , 0xf1f8, 0x90c0, 8}, - {m68k_op_suba_16_a , 0xf1f8, 0x90c8, 8}, - {m68k_op_suba_16_ai , 0xf1f8, 0x90d0, 12}, - {m68k_op_suba_16_pi , 0xf1f8, 0x90d8, 12}, - {m68k_op_suba_16_pd , 0xf1f8, 0x90e0, 14}, - {m68k_op_suba_16_di , 0xf1f8, 0x90e8, 16}, - {m68k_op_suba_16_ix , 0xf1f8, 0x90f0, 18}, - {m68k_op_subx_8_rr , 0xf1f8, 0x9100, 4}, - {m68k_op_subx_8_mm , 0xf1f8, 0x9108, 18}, - {m68k_op_sub_8_re_ai , 0xf1f8, 0x9110, 12}, - {m68k_op_sub_8_re_pi , 0xf1f8, 0x9118, 12}, - {m68k_op_sub_8_re_pd , 0xf1f8, 0x9120, 14}, - {m68k_op_sub_8_re_di , 0xf1f8, 0x9128, 16}, - {m68k_op_sub_8_re_ix , 0xf1f8, 0x9130, 18}, - {m68k_op_subx_16_rr , 0xf1f8, 0x9140, 4}, - {m68k_op_subx_16_mm , 0xf1f8, 0x9148, 18}, - {m68k_op_sub_16_re_ai , 0xf1f8, 0x9150, 12}, - {m68k_op_sub_16_re_pi , 0xf1f8, 0x9158, 12}, - {m68k_op_sub_16_re_pd , 0xf1f8, 0x9160, 14}, - {m68k_op_sub_16_re_di , 0xf1f8, 0x9168, 16}, - {m68k_op_sub_16_re_ix , 0xf1f8, 0x9170, 18}, - {m68k_op_subx_32_rr , 0xf1f8, 0x9180, 8}, - {m68k_op_subx_32_mm , 0xf1f8, 0x9188, 30}, - {m68k_op_sub_32_re_ai , 0xf1f8, 0x9190, 20}, - {m68k_op_sub_32_re_pi , 0xf1f8, 0x9198, 20}, - {m68k_op_sub_32_re_pd , 0xf1f8, 0x91a0, 22}, - {m68k_op_sub_32_re_di , 0xf1f8, 0x91a8, 24}, - {m68k_op_sub_32_re_ix , 0xf1f8, 0x91b0, 26}, - {m68k_op_suba_32_d , 0xf1f8, 0x91c0, 8}, - {m68k_op_suba_32_a , 0xf1f8, 0x91c8, 8}, - {m68k_op_suba_32_ai , 0xf1f8, 0x91d0, 14}, - {m68k_op_suba_32_pi , 0xf1f8, 0x91d8, 14}, - {m68k_op_suba_32_pd , 0xf1f8, 0x91e0, 16}, - {m68k_op_suba_32_di , 0xf1f8, 0x91e8, 18}, - {m68k_op_suba_32_ix , 0xf1f8, 0x91f0, 20}, - {m68k_op_cmp_8_d , 0xf1f8, 0xb000, 4}, - {m68k_op_cmp_8_ai , 0xf1f8, 0xb010, 8}, - {m68k_op_cmp_8_pi , 0xf1f8, 0xb018, 8}, - {m68k_op_cmp_8_pd , 0xf1f8, 0xb020, 10}, - {m68k_op_cmp_8_di , 0xf1f8, 0xb028, 12}, - {m68k_op_cmp_8_ix , 0xf1f8, 0xb030, 14}, - {m68k_op_cmp_16_d , 0xf1f8, 0xb040, 4}, - {m68k_op_cmp_16_a , 0xf1f8, 0xb048, 4}, - {m68k_op_cmp_16_ai , 0xf1f8, 0xb050, 8}, - {m68k_op_cmp_16_pi , 0xf1f8, 0xb058, 8}, - {m68k_op_cmp_16_pd , 0xf1f8, 0xb060, 10}, - {m68k_op_cmp_16_di , 0xf1f8, 0xb068, 12}, - {m68k_op_cmp_16_ix , 0xf1f8, 0xb070, 14}, - {m68k_op_cmp_32_d , 0xf1f8, 0xb080, 6}, - {m68k_op_cmp_32_a , 0xf1f8, 0xb088, 6}, - {m68k_op_cmp_32_ai , 0xf1f8, 0xb090, 14}, - {m68k_op_cmp_32_pi , 0xf1f8, 0xb098, 14}, - {m68k_op_cmp_32_pd , 0xf1f8, 0xb0a0, 16}, - {m68k_op_cmp_32_di , 0xf1f8, 0xb0a8, 18}, - {m68k_op_cmp_32_ix , 0xf1f8, 0xb0b0, 20}, - {m68k_op_cmpa_16_d , 0xf1f8, 0xb0c0, 6}, - {m68k_op_cmpa_16_a , 0xf1f8, 0xb0c8, 6}, - {m68k_op_cmpa_16_ai , 0xf1f8, 0xb0d0, 10}, - {m68k_op_cmpa_16_pi , 0xf1f8, 0xb0d8, 10}, - {m68k_op_cmpa_16_pd , 0xf1f8, 0xb0e0, 12}, - {m68k_op_cmpa_16_di , 0xf1f8, 0xb0e8, 14}, - {m68k_op_cmpa_16_ix , 0xf1f8, 0xb0f0, 16}, - {m68k_op_eor_8_d , 0xf1f8, 0xb100, 4}, - {m68k_op_cmpm_8 , 0xf1f8, 0xb108, 12}, - {m68k_op_eor_8_ai , 0xf1f8, 0xb110, 12}, - {m68k_op_eor_8_pi , 0xf1f8, 0xb118, 12}, - {m68k_op_eor_8_pd , 0xf1f8, 0xb120, 14}, - {m68k_op_eor_8_di , 0xf1f8, 0xb128, 16}, - {m68k_op_eor_8_ix , 0xf1f8, 0xb130, 18}, - {m68k_op_eor_16_d , 0xf1f8, 0xb140, 4}, - {m68k_op_cmpm_16 , 0xf1f8, 0xb148, 12}, - {m68k_op_eor_16_ai , 0xf1f8, 0xb150, 12}, - {m68k_op_eor_16_pi , 0xf1f8, 0xb158, 12}, - {m68k_op_eor_16_pd , 0xf1f8, 0xb160, 14}, - {m68k_op_eor_16_di , 0xf1f8, 0xb168, 16}, - {m68k_op_eor_16_ix , 0xf1f8, 0xb170, 18}, - {m68k_op_eor_32_d , 0xf1f8, 0xb180, 8}, - {m68k_op_cmpm_32 , 0xf1f8, 0xb188, 20}, - {m68k_op_eor_32_ai , 0xf1f8, 0xb190, 20}, - {m68k_op_eor_32_pi , 0xf1f8, 0xb198, 20}, - {m68k_op_eor_32_pd , 0xf1f8, 0xb1a0, 22}, - {m68k_op_eor_32_di , 0xf1f8, 0xb1a8, 24}, - {m68k_op_eor_32_ix , 0xf1f8, 0xb1b0, 26}, - {m68k_op_cmpa_32_d , 0xf1f8, 0xb1c0, 6}, - {m68k_op_cmpa_32_a , 0xf1f8, 0xb1c8, 6}, - {m68k_op_cmpa_32_ai , 0xf1f8, 0xb1d0, 14}, - {m68k_op_cmpa_32_pi , 0xf1f8, 0xb1d8, 14}, - {m68k_op_cmpa_32_pd , 0xf1f8, 0xb1e0, 16}, - {m68k_op_cmpa_32_di , 0xf1f8, 0xb1e8, 18}, - {m68k_op_cmpa_32_ix , 0xf1f8, 0xb1f0, 20}, - {m68k_op_and_8_er_d , 0xf1f8, 0xc000, 4}, - {m68k_op_and_8_er_ai , 0xf1f8, 0xc010, 8}, - {m68k_op_and_8_er_pi , 0xf1f8, 0xc018, 8}, - {m68k_op_and_8_er_pd , 0xf1f8, 0xc020, 10}, - {m68k_op_and_8_er_di , 0xf1f8, 0xc028, 12}, - {m68k_op_and_8_er_ix , 0xf1f8, 0xc030, 14}, - {m68k_op_and_16_er_d , 0xf1f8, 0xc040, 4}, - {m68k_op_and_16_er_ai , 0xf1f8, 0xc050, 8}, - {m68k_op_and_16_er_pi , 0xf1f8, 0xc058, 8}, - {m68k_op_and_16_er_pd , 0xf1f8, 0xc060, 10}, - {m68k_op_and_16_er_di , 0xf1f8, 0xc068, 12}, - {m68k_op_and_16_er_ix , 0xf1f8, 0xc070, 14}, - {m68k_op_and_32_er_d , 0xf1f8, 0xc080, 8}, - {m68k_op_and_32_er_ai , 0xf1f8, 0xc090, 14}, - {m68k_op_and_32_er_pi , 0xf1f8, 0xc098, 14}, - {m68k_op_and_32_er_pd , 0xf1f8, 0xc0a0, 16}, - {m68k_op_and_32_er_di , 0xf1f8, 0xc0a8, 18}, - {m68k_op_and_32_er_ix , 0xf1f8, 0xc0b0, 20}, - {m68k_op_mulu_16_d , 0xf1f8, 0xc0c0, 0}, - {m68k_op_mulu_16_ai , 0xf1f8, 0xc0d0, 4}, - {m68k_op_mulu_16_pi , 0xf1f8, 0xc0d8, 4}, - {m68k_op_mulu_16_pd , 0xf1f8, 0xc0e0, 6}, - {m68k_op_mulu_16_di , 0xf1f8, 0xc0e8, 8}, - {m68k_op_mulu_16_ix , 0xf1f8, 0xc0f0, 10}, - {m68k_op_abcd_8_rr , 0xf1f8, 0xc100, 6}, - {m68k_op_abcd_8_mm , 0xf1f8, 0xc108, 18}, - {m68k_op_and_8_re_ai , 0xf1f8, 0xc110, 12}, - {m68k_op_and_8_re_pi , 0xf1f8, 0xc118, 12}, - {m68k_op_and_8_re_pd , 0xf1f8, 0xc120, 14}, - {m68k_op_and_8_re_di , 0xf1f8, 0xc128, 16}, - {m68k_op_and_8_re_ix , 0xf1f8, 0xc130, 18}, - {m68k_op_exg_32_dd , 0xf1f8, 0xc140, 6}, - {m68k_op_exg_32_aa , 0xf1f8, 0xc148, 6}, - {m68k_op_and_16_re_ai , 0xf1f8, 0xc150, 12}, - {m68k_op_and_16_re_pi , 0xf1f8, 0xc158, 12}, - {m68k_op_and_16_re_pd , 0xf1f8, 0xc160, 14}, - {m68k_op_and_16_re_di , 0xf1f8, 0xc168, 16}, - {m68k_op_and_16_re_ix , 0xf1f8, 0xc170, 18}, - {m68k_op_exg_32_da , 0xf1f8, 0xc188, 6}, - {m68k_op_and_32_re_ai , 0xf1f8, 0xc190, 20}, - {m68k_op_and_32_re_pi , 0xf1f8, 0xc198, 20}, - {m68k_op_and_32_re_pd , 0xf1f8, 0xc1a0, 22}, - {m68k_op_and_32_re_di , 0xf1f8, 0xc1a8, 24}, - {m68k_op_and_32_re_ix , 0xf1f8, 0xc1b0, 26}, - {m68k_op_muls_16_d , 0xf1f8, 0xc1c0, 0}, - {m68k_op_muls_16_ai , 0xf1f8, 0xc1d0, 4}, - {m68k_op_muls_16_pi , 0xf1f8, 0xc1d8, 4}, - {m68k_op_muls_16_pd , 0xf1f8, 0xc1e0, 6}, - {m68k_op_muls_16_di , 0xf1f8, 0xc1e8, 8}, - {m68k_op_muls_16_ix , 0xf1f8, 0xc1f0, 10}, - {m68k_op_add_8_er_d , 0xf1f8, 0xd000, 4}, - {m68k_op_add_8_er_ai , 0xf1f8, 0xd010, 8}, - {m68k_op_add_8_er_pi , 0xf1f8, 0xd018, 8}, - {m68k_op_add_8_er_pd , 0xf1f8, 0xd020, 10}, - {m68k_op_add_8_er_di , 0xf1f8, 0xd028, 12}, - {m68k_op_add_8_er_ix , 0xf1f8, 0xd030, 14}, - {m68k_op_add_16_er_d , 0xf1f8, 0xd040, 4}, - {m68k_op_add_16_er_a , 0xf1f8, 0xd048, 4}, - {m68k_op_add_16_er_ai , 0xf1f8, 0xd050, 8}, - {m68k_op_add_16_er_pi , 0xf1f8, 0xd058, 8}, - {m68k_op_add_16_er_pd , 0xf1f8, 0xd060, 10}, - {m68k_op_add_16_er_di , 0xf1f8, 0xd068, 12}, - {m68k_op_add_16_er_ix , 0xf1f8, 0xd070, 14}, - {m68k_op_add_32_er_d , 0xf1f8, 0xd080, 8}, - {m68k_op_add_32_er_a , 0xf1f8, 0xd088, 8}, - {m68k_op_add_32_er_ai , 0xf1f8, 0xd090, 14}, - {m68k_op_add_32_er_pi , 0xf1f8, 0xd098, 14}, - {m68k_op_add_32_er_pd , 0xf1f8, 0xd0a0, 16}, - {m68k_op_add_32_er_di , 0xf1f8, 0xd0a8, 18}, - {m68k_op_add_32_er_ix , 0xf1f8, 0xd0b0, 20}, - {m68k_op_adda_16_d , 0xf1f8, 0xd0c0, 8}, - {m68k_op_adda_16_a , 0xf1f8, 0xd0c8, 8}, - {m68k_op_adda_16_ai , 0xf1f8, 0xd0d0, 12}, - {m68k_op_adda_16_pi , 0xf1f8, 0xd0d8, 12}, - {m68k_op_adda_16_pd , 0xf1f8, 0xd0e0, 14}, - {m68k_op_adda_16_di , 0xf1f8, 0xd0e8, 16}, - {m68k_op_adda_16_ix , 0xf1f8, 0xd0f0, 18}, - {m68k_op_addx_8_rr , 0xf1f8, 0xd100, 4}, - {m68k_op_addx_8_mm , 0xf1f8, 0xd108, 18}, - {m68k_op_add_8_re_ai , 0xf1f8, 0xd110, 12}, - {m68k_op_add_8_re_pi , 0xf1f8, 0xd118, 12}, - {m68k_op_add_8_re_pd , 0xf1f8, 0xd120, 14}, - {m68k_op_add_8_re_di , 0xf1f8, 0xd128, 16}, - {m68k_op_add_8_re_ix , 0xf1f8, 0xd130, 18}, - {m68k_op_addx_16_rr , 0xf1f8, 0xd140, 4}, - {m68k_op_addx_16_mm , 0xf1f8, 0xd148, 18}, - {m68k_op_add_16_re_ai , 0xf1f8, 0xd150, 12}, - {m68k_op_add_16_re_pi , 0xf1f8, 0xd158, 12}, - {m68k_op_add_16_re_pd , 0xf1f8, 0xd160, 14}, - {m68k_op_add_16_re_di , 0xf1f8, 0xd168, 16}, - {m68k_op_add_16_re_ix , 0xf1f8, 0xd170, 18}, - {m68k_op_addx_32_rr , 0xf1f8, 0xd180, 8}, - {m68k_op_addx_32_mm , 0xf1f8, 0xd188, 30}, - {m68k_op_add_32_re_ai , 0xf1f8, 0xd190, 20}, - {m68k_op_add_32_re_pi , 0xf1f8, 0xd198, 20}, - {m68k_op_add_32_re_pd , 0xf1f8, 0xd1a0, 22}, - {m68k_op_add_32_re_di , 0xf1f8, 0xd1a8, 24}, - {m68k_op_add_32_re_ix , 0xf1f8, 0xd1b0, 26}, - {m68k_op_adda_32_d , 0xf1f8, 0xd1c0, 8}, - {m68k_op_adda_32_a , 0xf1f8, 0xd1c8, 8}, - {m68k_op_adda_32_ai , 0xf1f8, 0xd1d0, 14}, - {m68k_op_adda_32_pi , 0xf1f8, 0xd1d8, 14}, - {m68k_op_adda_32_pd , 0xf1f8, 0xd1e0, 16}, - {m68k_op_adda_32_di , 0xf1f8, 0xd1e8, 18}, - {m68k_op_adda_32_ix , 0xf1f8, 0xd1f0, 20}, - {m68k_op_asr_8_s , 0xf1f8, 0xe000, 6}, - {m68k_op_lsr_8_s , 0xf1f8, 0xe008, 6}, - {m68k_op_roxr_8_s , 0xf1f8, 0xe010, 6}, - {m68k_op_ror_8_s , 0xf1f8, 0xe018, 6}, - {m68k_op_asr_8_r , 0xf1f8, 0xe020, 6}, - {m68k_op_lsr_8_r , 0xf1f8, 0xe028, 6}, - {m68k_op_roxr_8_r , 0xf1f8, 0xe030, 6}, - {m68k_op_ror_8_r , 0xf1f8, 0xe038, 6}, - {m68k_op_asr_16_s , 0xf1f8, 0xe040, 6}, - {m68k_op_lsr_16_s , 0xf1f8, 0xe048, 6}, - {m68k_op_roxr_16_s , 0xf1f8, 0xe050, 6}, - {m68k_op_ror_16_s , 0xf1f8, 0xe058, 6}, - {m68k_op_asr_16_r , 0xf1f8, 0xe060, 6}, - {m68k_op_lsr_16_r , 0xf1f8, 0xe068, 6}, - {m68k_op_roxr_16_r , 0xf1f8, 0xe070, 6}, - {m68k_op_ror_16_r , 0xf1f8, 0xe078, 6}, - {m68k_op_asr_32_s , 0xf1f8, 0xe080, 8}, - {m68k_op_lsr_32_s , 0xf1f8, 0xe088, 8}, - {m68k_op_roxr_32_s , 0xf1f8, 0xe090, 8}, - {m68k_op_ror_32_s , 0xf1f8, 0xe098, 8}, - {m68k_op_asr_32_r , 0xf1f8, 0xe0a0, 8}, - {m68k_op_lsr_32_r , 0xf1f8, 0xe0a8, 8}, - {m68k_op_roxr_32_r , 0xf1f8, 0xe0b0, 8}, - {m68k_op_ror_32_r , 0xf1f8, 0xe0b8, 8}, - {m68k_op_asl_8_s , 0xf1f8, 0xe100, 6}, - {m68k_op_lsl_8_s , 0xf1f8, 0xe108, 6}, - {m68k_op_roxl_8_s , 0xf1f8, 0xe110, 6}, - {m68k_op_rol_8_s , 0xf1f8, 0xe118, 6}, - {m68k_op_asl_8_r , 0xf1f8, 0xe120, 6}, - {m68k_op_lsl_8_r , 0xf1f8, 0xe128, 6}, - {m68k_op_roxl_8_r , 0xf1f8, 0xe130, 6}, - {m68k_op_rol_8_r , 0xf1f8, 0xe138, 6}, - {m68k_op_asl_16_s , 0xf1f8, 0xe140, 6}, - {m68k_op_lsl_16_s , 0xf1f8, 0xe148, 6}, - {m68k_op_roxl_16_s , 0xf1f8, 0xe150, 6}, - {m68k_op_rol_16_s , 0xf1f8, 0xe158, 6}, - {m68k_op_asl_16_r , 0xf1f8, 0xe160, 6}, - {m68k_op_lsl_16_r , 0xf1f8, 0xe168, 6}, - {m68k_op_roxl_16_r , 0xf1f8, 0xe170, 6}, - {m68k_op_rol_16_r , 0xf1f8, 0xe178, 6}, - {m68k_op_asl_32_s , 0xf1f8, 0xe180, 8}, - {m68k_op_lsl_32_s , 0xf1f8, 0xe188, 8}, - {m68k_op_roxl_32_s , 0xf1f8, 0xe190, 8}, - {m68k_op_rol_32_s , 0xf1f8, 0xe198, 8}, - {m68k_op_asl_32_r , 0xf1f8, 0xe1a0, 8}, - {m68k_op_lsl_32_r , 0xf1f8, 0xe1a8, 8}, - {m68k_op_roxl_32_r , 0xf1f8, 0xe1b0, 8}, - {m68k_op_rol_32_r , 0xf1f8, 0xe1b8, 8}, - {m68k_op_trap , 0xfff0, 0x4e40, 4}, - {m68k_op_btst_8_r_pi7 , 0xf1ff, 0x011f, 8}, - {m68k_op_btst_8_r_pd7 , 0xf1ff, 0x0127, 10}, - {m68k_op_btst_8_r_aw , 0xf1ff, 0x0138, 12}, - {m68k_op_btst_8_r_al , 0xf1ff, 0x0139, 16}, - {m68k_op_btst_8_r_pcdi , 0xf1ff, 0x013a, 12}, - {m68k_op_btst_8_r_pcix , 0xf1ff, 0x013b, 14}, - {m68k_op_btst_8_r_i , 0xf1ff, 0x013c, 10}, - {m68k_op_bchg_8_r_pi7 , 0xf1ff, 0x015f, 12}, - {m68k_op_bchg_8_r_pd7 , 0xf1ff, 0x0167, 14}, - {m68k_op_bchg_8_r_aw , 0xf1ff, 0x0178, 16}, - {m68k_op_bchg_8_r_al , 0xf1ff, 0x0179, 20}, - {m68k_op_bclr_8_r_pi7 , 0xf1ff, 0x019f, 12}, - {m68k_op_bclr_8_r_pd7 , 0xf1ff, 0x01a7, 14}, - {m68k_op_bclr_8_r_aw , 0xf1ff, 0x01b8, 16}, - {m68k_op_bclr_8_r_al , 0xf1ff, 0x01b9, 20}, - {m68k_op_bset_8_r_pi7 , 0xf1ff, 0x01df, 12}, - {m68k_op_bset_8_r_pd7 , 0xf1ff, 0x01e7, 14}, - {m68k_op_bset_8_r_aw , 0xf1ff, 0x01f8, 16}, - {m68k_op_bset_8_r_al , 0xf1ff, 0x01f9, 20}, - {m68k_op_move_8_d_pi7 , 0xf1ff, 0x101f, 8}, - {m68k_op_move_8_d_pd7 , 0xf1ff, 0x1027, 10}, - {m68k_op_move_8_d_aw , 0xf1ff, 0x1038, 12}, - {m68k_op_move_8_d_al , 0xf1ff, 0x1039, 16}, - {m68k_op_move_8_d_pcdi , 0xf1ff, 0x103a, 12}, - {m68k_op_move_8_d_pcix , 0xf1ff, 0x103b, 14}, - {m68k_op_move_8_d_i , 0xf1ff, 0x103c, 8}, - {m68k_op_move_8_ai_pi7 , 0xf1ff, 0x109f, 12}, - {m68k_op_move_8_ai_pd7 , 0xf1ff, 0x10a7, 14}, - {m68k_op_move_8_ai_aw , 0xf1ff, 0x10b8, 16}, - {m68k_op_move_8_ai_al , 0xf1ff, 0x10b9, 20}, - {m68k_op_move_8_ai_pcdi , 0xf1ff, 0x10ba, 16}, - {m68k_op_move_8_ai_pcix , 0xf1ff, 0x10bb, 18}, - {m68k_op_move_8_ai_i , 0xf1ff, 0x10bc, 12}, - {m68k_op_move_8_pi_pi7 , 0xf1ff, 0x10df, 12}, - {m68k_op_move_8_pi_pd7 , 0xf1ff, 0x10e7, 14}, - {m68k_op_move_8_pi_aw , 0xf1ff, 0x10f8, 16}, - {m68k_op_move_8_pi_al , 0xf1ff, 0x10f9, 20}, - {m68k_op_move_8_pi_pcdi , 0xf1ff, 0x10fa, 16}, - {m68k_op_move_8_pi_pcix , 0xf1ff, 0x10fb, 18}, - {m68k_op_move_8_pi_i , 0xf1ff, 0x10fc, 12}, - {m68k_op_move_8_pd_pi7 , 0xf1ff, 0x111f, 12}, - {m68k_op_move_8_pd_pd7 , 0xf1ff, 0x1127, 14}, - {m68k_op_move_8_pd_aw , 0xf1ff, 0x1138, 16}, - {m68k_op_move_8_pd_al , 0xf1ff, 0x1139, 20}, - {m68k_op_move_8_pd_pcdi , 0xf1ff, 0x113a, 16}, - {m68k_op_move_8_pd_pcix , 0xf1ff, 0x113b, 18}, - {m68k_op_move_8_pd_i , 0xf1ff, 0x113c, 12}, - {m68k_op_move_8_di_pi7 , 0xf1ff, 0x115f, 16}, - {m68k_op_move_8_di_pd7 , 0xf1ff, 0x1167, 18}, - {m68k_op_move_8_di_aw , 0xf1ff, 0x1178, 20}, - {m68k_op_move_8_di_al , 0xf1ff, 0x1179, 24}, - {m68k_op_move_8_di_pcdi , 0xf1ff, 0x117a, 20}, - {m68k_op_move_8_di_pcix , 0xf1ff, 0x117b, 22}, - {m68k_op_move_8_di_i , 0xf1ff, 0x117c, 16}, - {m68k_op_move_8_ix_pi7 , 0xf1ff, 0x119f, 18}, - {m68k_op_move_8_ix_pd7 , 0xf1ff, 0x11a7, 20}, - {m68k_op_move_8_ix_aw , 0xf1ff, 0x11b8, 22}, - {m68k_op_move_8_ix_al , 0xf1ff, 0x11b9, 26}, - {m68k_op_move_8_ix_pcdi , 0xf1ff, 0x11ba, 22}, - {m68k_op_move_8_ix_pcix , 0xf1ff, 0x11bb, 24}, - {m68k_op_move_8_ix_i , 0xf1ff, 0x11bc, 18}, - {m68k_op_move_32_d_aw , 0xf1ff, 0x2038, 16}, - {m68k_op_move_32_d_al , 0xf1ff, 0x2039, 20}, - {m68k_op_move_32_d_pcdi , 0xf1ff, 0x203a, 16}, - {m68k_op_move_32_d_pcix , 0xf1ff, 0x203b, 18}, - {m68k_op_move_32_d_i , 0xf1ff, 0x203c, 12}, - {m68k_op_movea_32_aw , 0xf1ff, 0x2078, 16}, - {m68k_op_movea_32_al , 0xf1ff, 0x2079, 20}, - {m68k_op_movea_32_pcdi , 0xf1ff, 0x207a, 16}, - {m68k_op_movea_32_pcix , 0xf1ff, 0x207b, 18}, - {m68k_op_movea_32_i , 0xf1ff, 0x207c, 12}, - {m68k_op_move_32_ai_aw , 0xf1ff, 0x20b8, 24}, - {m68k_op_move_32_ai_al , 0xf1ff, 0x20b9, 28}, - {m68k_op_move_32_ai_pcdi , 0xf1ff, 0x20ba, 24}, - {m68k_op_move_32_ai_pcix , 0xf1ff, 0x20bb, 26}, - {m68k_op_move_32_ai_i , 0xf1ff, 0x20bc, 20}, - {m68k_op_move_32_pi_aw , 0xf1ff, 0x20f8, 24}, - {m68k_op_move_32_pi_al , 0xf1ff, 0x20f9, 28}, - {m68k_op_move_32_pi_pcdi , 0xf1ff, 0x20fa, 24}, - {m68k_op_move_32_pi_pcix , 0xf1ff, 0x20fb, 26}, - {m68k_op_move_32_pi_i , 0xf1ff, 0x20fc, 20}, - {m68k_op_move_32_pd_aw , 0xf1ff, 0x2138, 24}, - {m68k_op_move_32_pd_al , 0xf1ff, 0x2139, 28}, - {m68k_op_move_32_pd_pcdi , 0xf1ff, 0x213a, 24}, - {m68k_op_move_32_pd_pcix , 0xf1ff, 0x213b, 26}, - {m68k_op_move_32_pd_i , 0xf1ff, 0x213c, 20}, - {m68k_op_move_32_di_aw , 0xf1ff, 0x2178, 28}, - {m68k_op_move_32_di_al , 0xf1ff, 0x2179, 32}, - {m68k_op_move_32_di_pcdi , 0xf1ff, 0x217a, 28}, - {m68k_op_move_32_di_pcix , 0xf1ff, 0x217b, 30}, - {m68k_op_move_32_di_i , 0xf1ff, 0x217c, 24}, - {m68k_op_move_32_ix_aw , 0xf1ff, 0x21b8, 30}, - {m68k_op_move_32_ix_al , 0xf1ff, 0x21b9, 34}, - {m68k_op_move_32_ix_pcdi , 0xf1ff, 0x21ba, 30}, - {m68k_op_move_32_ix_pcix , 0xf1ff, 0x21bb, 32}, - {m68k_op_move_32_ix_i , 0xf1ff, 0x21bc, 26}, - {m68k_op_move_16_d_aw , 0xf1ff, 0x3038, 12}, - {m68k_op_move_16_d_al , 0xf1ff, 0x3039, 16}, - {m68k_op_move_16_d_pcdi , 0xf1ff, 0x303a, 12}, - {m68k_op_move_16_d_pcix , 0xf1ff, 0x303b, 14}, - {m68k_op_move_16_d_i , 0xf1ff, 0x303c, 8}, - {m68k_op_movea_16_aw , 0xf1ff, 0x3078, 12}, - {m68k_op_movea_16_al , 0xf1ff, 0x3079, 16}, - {m68k_op_movea_16_pcdi , 0xf1ff, 0x307a, 12}, - {m68k_op_movea_16_pcix , 0xf1ff, 0x307b, 14}, - {m68k_op_movea_16_i , 0xf1ff, 0x307c, 8}, - {m68k_op_move_16_ai_aw , 0xf1ff, 0x30b8, 16}, - {m68k_op_move_16_ai_al , 0xf1ff, 0x30b9, 20}, - {m68k_op_move_16_ai_pcdi , 0xf1ff, 0x30ba, 16}, - {m68k_op_move_16_ai_pcix , 0xf1ff, 0x30bb, 18}, - {m68k_op_move_16_ai_i , 0xf1ff, 0x30bc, 12}, - {m68k_op_move_16_pi_aw , 0xf1ff, 0x30f8, 16}, - {m68k_op_move_16_pi_al , 0xf1ff, 0x30f9, 20}, - {m68k_op_move_16_pi_pcdi , 0xf1ff, 0x30fa, 16}, - {m68k_op_move_16_pi_pcix , 0xf1ff, 0x30fb, 18}, - {m68k_op_move_16_pi_i , 0xf1ff, 0x30fc, 12}, - {m68k_op_move_16_pd_aw , 0xf1ff, 0x3138, 16}, - {m68k_op_move_16_pd_al , 0xf1ff, 0x3139, 20}, - {m68k_op_move_16_pd_pcdi , 0xf1ff, 0x313a, 16}, - {m68k_op_move_16_pd_pcix , 0xf1ff, 0x313b, 18}, - {m68k_op_move_16_pd_i , 0xf1ff, 0x313c, 12}, - {m68k_op_move_16_di_aw , 0xf1ff, 0x3178, 20}, - {m68k_op_move_16_di_al , 0xf1ff, 0x3179, 24}, - {m68k_op_move_16_di_pcdi , 0xf1ff, 0x317a, 20}, - {m68k_op_move_16_di_pcix , 0xf1ff, 0x317b, 22}, - {m68k_op_move_16_di_i , 0xf1ff, 0x317c, 16}, - {m68k_op_move_16_ix_aw , 0xf1ff, 0x31b8, 22}, - {m68k_op_move_16_ix_al , 0xf1ff, 0x31b9, 26}, - {m68k_op_move_16_ix_pcdi , 0xf1ff, 0x31ba, 22}, - {m68k_op_move_16_ix_pcix , 0xf1ff, 0x31bb, 24}, - {m68k_op_move_16_ix_i , 0xf1ff, 0x31bc, 18}, - {m68k_op_chk_16_aw , 0xf1ff, 0x41b8, 18}, - {m68k_op_chk_16_al , 0xf1ff, 0x41b9, 22}, - {m68k_op_chk_16_pcdi , 0xf1ff, 0x41ba, 18}, - {m68k_op_chk_16_pcix , 0xf1ff, 0x41bb, 20}, - {m68k_op_chk_16_i , 0xf1ff, 0x41bc, 14}, - {m68k_op_lea_32_aw , 0xf1ff, 0x41f8, 8}, - {m68k_op_lea_32_al , 0xf1ff, 0x41f9, 12}, - {m68k_op_lea_32_pcdi , 0xf1ff, 0x41fa, 8}, - {m68k_op_lea_32_pcix , 0xf1ff, 0x41fb, 12}, - {m68k_op_addq_8_pi7 , 0xf1ff, 0x501f, 12}, - {m68k_op_addq_8_pd7 , 0xf1ff, 0x5027, 14}, - {m68k_op_addq_8_aw , 0xf1ff, 0x5038, 16}, - {m68k_op_addq_8_al , 0xf1ff, 0x5039, 20}, - {m68k_op_addq_16_aw , 0xf1ff, 0x5078, 16}, - {m68k_op_addq_16_al , 0xf1ff, 0x5079, 20}, - {m68k_op_addq_32_aw , 0xf1ff, 0x50b8, 24}, - {m68k_op_addq_32_al , 0xf1ff, 0x50b9, 28}, - {m68k_op_subq_8_pi7 , 0xf1ff, 0x511f, 12}, - {m68k_op_subq_8_pd7 , 0xf1ff, 0x5127, 14}, - {m68k_op_subq_8_aw , 0xf1ff, 0x5138, 16}, - {m68k_op_subq_8_al , 0xf1ff, 0x5139, 20}, - {m68k_op_subq_16_aw , 0xf1ff, 0x5178, 16}, - {m68k_op_subq_16_al , 0xf1ff, 0x5179, 20}, - {m68k_op_subq_32_aw , 0xf1ff, 0x51b8, 24}, - {m68k_op_subq_32_al , 0xf1ff, 0x51b9, 28}, - {m68k_op_or_8_er_pi7 , 0xf1ff, 0x801f, 8}, - {m68k_op_or_8_er_pd7 , 0xf1ff, 0x8027, 10}, - {m68k_op_or_8_er_aw , 0xf1ff, 0x8038, 12}, - {m68k_op_or_8_er_al , 0xf1ff, 0x8039, 16}, - {m68k_op_or_8_er_pcdi , 0xf1ff, 0x803a, 12}, - {m68k_op_or_8_er_pcix , 0xf1ff, 0x803b, 14}, - {m68k_op_or_8_er_i , 0xf1ff, 0x803c, 8}, - {m68k_op_or_16_er_aw , 0xf1ff, 0x8078, 12}, - {m68k_op_or_16_er_al , 0xf1ff, 0x8079, 16}, - {m68k_op_or_16_er_pcdi , 0xf1ff, 0x807a, 12}, - {m68k_op_or_16_er_pcix , 0xf1ff, 0x807b, 14}, - {m68k_op_or_16_er_i , 0xf1ff, 0x807c, 8}, - {m68k_op_or_32_er_aw , 0xf1ff, 0x80b8, 18}, - {m68k_op_or_32_er_al , 0xf1ff, 0x80b9, 22}, - {m68k_op_or_32_er_pcdi , 0xf1ff, 0x80ba, 18}, - {m68k_op_or_32_er_pcix , 0xf1ff, 0x80bb, 20}, - {m68k_op_or_32_er_i , 0xf1ff, 0x80bc, 16}, - {m68k_op_divu_16_aw , 0xf1ff, 0x80f8, 8}, - {m68k_op_divu_16_al , 0xf1ff, 0x80f9, 12}, - {m68k_op_divu_16_pcdi , 0xf1ff, 0x80fa, 8}, - {m68k_op_divu_16_pcix , 0xf1ff, 0x80fb, 10}, - {m68k_op_divu_16_i , 0xf1ff, 0x80fc, 4}, - {m68k_op_sbcd_8_mm_ay7 , 0xf1ff, 0x810f, 18}, - {m68k_op_or_8_re_pi7 , 0xf1ff, 0x811f, 12}, - {m68k_op_or_8_re_pd7 , 0xf1ff, 0x8127, 14}, - {m68k_op_or_8_re_aw , 0xf1ff, 0x8138, 16}, - {m68k_op_or_8_re_al , 0xf1ff, 0x8139, 20}, - {m68k_op_or_16_re_aw , 0xf1ff, 0x8178, 16}, - {m68k_op_or_16_re_al , 0xf1ff, 0x8179, 20}, - {m68k_op_or_32_re_aw , 0xf1ff, 0x81b8, 24}, - {m68k_op_or_32_re_al , 0xf1ff, 0x81b9, 28}, - {m68k_op_divs_16_aw , 0xf1ff, 0x81f8, 8}, - {m68k_op_divs_16_al , 0xf1ff, 0x81f9, 12}, - {m68k_op_divs_16_pcdi , 0xf1ff, 0x81fa, 8}, - {m68k_op_divs_16_pcix , 0xf1ff, 0x81fb, 10}, - {m68k_op_divs_16_i , 0xf1ff, 0x81fc, 4}, - {m68k_op_sub_8_er_pi7 , 0xf1ff, 0x901f, 8}, - {m68k_op_sub_8_er_pd7 , 0xf1ff, 0x9027, 10}, - {m68k_op_sub_8_er_aw , 0xf1ff, 0x9038, 12}, - {m68k_op_sub_8_er_al , 0xf1ff, 0x9039, 16}, - {m68k_op_sub_8_er_pcdi , 0xf1ff, 0x903a, 12}, - {m68k_op_sub_8_er_pcix , 0xf1ff, 0x903b, 14}, - {m68k_op_sub_8_er_i , 0xf1ff, 0x903c, 8}, - {m68k_op_sub_16_er_aw , 0xf1ff, 0x9078, 12}, - {m68k_op_sub_16_er_al , 0xf1ff, 0x9079, 16}, - {m68k_op_sub_16_er_pcdi , 0xf1ff, 0x907a, 12}, - {m68k_op_sub_16_er_pcix , 0xf1ff, 0x907b, 14}, - {m68k_op_sub_16_er_i , 0xf1ff, 0x907c, 8}, - {m68k_op_sub_32_er_aw , 0xf1ff, 0x90b8, 18}, - {m68k_op_sub_32_er_al , 0xf1ff, 0x90b9, 22}, - {m68k_op_sub_32_er_pcdi , 0xf1ff, 0x90ba, 18}, - {m68k_op_sub_32_er_pcix , 0xf1ff, 0x90bb, 20}, - {m68k_op_sub_32_er_i , 0xf1ff, 0x90bc, 16}, - {m68k_op_suba_16_aw , 0xf1ff, 0x90f8, 16}, - {m68k_op_suba_16_al , 0xf1ff, 0x90f9, 20}, - {m68k_op_suba_16_pcdi , 0xf1ff, 0x90fa, 16}, - {m68k_op_suba_16_pcix , 0xf1ff, 0x90fb, 18}, - {m68k_op_suba_16_i , 0xf1ff, 0x90fc, 12}, - {m68k_op_subx_8_mm_ay7 , 0xf1ff, 0x910f, 18}, - {m68k_op_sub_8_re_pi7 , 0xf1ff, 0x911f, 12}, - {m68k_op_sub_8_re_pd7 , 0xf1ff, 0x9127, 14}, - {m68k_op_sub_8_re_aw , 0xf1ff, 0x9138, 16}, - {m68k_op_sub_8_re_al , 0xf1ff, 0x9139, 20}, - {m68k_op_sub_16_re_aw , 0xf1ff, 0x9178, 16}, - {m68k_op_sub_16_re_al , 0xf1ff, 0x9179, 20}, - {m68k_op_sub_32_re_aw , 0xf1ff, 0x91b8, 24}, - {m68k_op_sub_32_re_al , 0xf1ff, 0x91b9, 28}, - {m68k_op_suba_32_aw , 0xf1ff, 0x91f8, 18}, - {m68k_op_suba_32_al , 0xf1ff, 0x91f9, 22}, - {m68k_op_suba_32_pcdi , 0xf1ff, 0x91fa, 18}, - {m68k_op_suba_32_pcix , 0xf1ff, 0x91fb, 20}, - {m68k_op_suba_32_i , 0xf1ff, 0x91fc, 16}, - {m68k_op_cmp_8_pi7 , 0xf1ff, 0xb01f, 8}, - {m68k_op_cmp_8_pd7 , 0xf1ff, 0xb027, 10}, - {m68k_op_cmp_8_aw , 0xf1ff, 0xb038, 12}, - {m68k_op_cmp_8_al , 0xf1ff, 0xb039, 16}, - {m68k_op_cmp_8_pcdi , 0xf1ff, 0xb03a, 12}, - {m68k_op_cmp_8_pcix , 0xf1ff, 0xb03b, 14}, - {m68k_op_cmp_8_i , 0xf1ff, 0xb03c, 8}, - {m68k_op_cmp_16_aw , 0xf1ff, 0xb078, 12}, - {m68k_op_cmp_16_al , 0xf1ff, 0xb079, 16}, - {m68k_op_cmp_16_pcdi , 0xf1ff, 0xb07a, 12}, - {m68k_op_cmp_16_pcix , 0xf1ff, 0xb07b, 14}, - {m68k_op_cmp_16_i , 0xf1ff, 0xb07c, 8}, - {m68k_op_cmp_32_aw , 0xf1ff, 0xb0b8, 18}, - {m68k_op_cmp_32_al , 0xf1ff, 0xb0b9, 22}, - {m68k_op_cmp_32_pcdi , 0xf1ff, 0xb0ba, 18}, - {m68k_op_cmp_32_pcix , 0xf1ff, 0xb0bb, 20}, - {m68k_op_cmp_32_i , 0xf1ff, 0xb0bc, 14}, - {m68k_op_cmpa_16_aw , 0xf1ff, 0xb0f8, 14}, - {m68k_op_cmpa_16_al , 0xf1ff, 0xb0f9, 18}, - {m68k_op_cmpa_16_pcdi , 0xf1ff, 0xb0fa, 14}, - {m68k_op_cmpa_16_pcix , 0xf1ff, 0xb0fb, 16}, - {m68k_op_cmpa_16_i , 0xf1ff, 0xb0fc, 10}, - {m68k_op_cmpm_8_ay7 , 0xf1ff, 0xb10f, 12}, - {m68k_op_eor_8_pi7 , 0xf1ff, 0xb11f, 12}, - {m68k_op_eor_8_pd7 , 0xf1ff, 0xb127, 14}, - {m68k_op_eor_8_aw , 0xf1ff, 0xb138, 16}, - {m68k_op_eor_8_al , 0xf1ff, 0xb139, 20}, - {m68k_op_eor_16_aw , 0xf1ff, 0xb178, 16}, - {m68k_op_eor_16_al , 0xf1ff, 0xb179, 20}, - {m68k_op_eor_32_aw , 0xf1ff, 0xb1b8, 24}, - {m68k_op_eor_32_al , 0xf1ff, 0xb1b9, 28}, - {m68k_op_cmpa_32_aw , 0xf1ff, 0xb1f8, 18}, - {m68k_op_cmpa_32_al , 0xf1ff, 0xb1f9, 22}, - {m68k_op_cmpa_32_pcdi , 0xf1ff, 0xb1fa, 18}, - {m68k_op_cmpa_32_pcix , 0xf1ff, 0xb1fb, 20}, - {m68k_op_cmpa_32_i , 0xf1ff, 0xb1fc, 14}, - {m68k_op_and_8_er_pi7 , 0xf1ff, 0xc01f, 8}, - {m68k_op_and_8_er_pd7 , 0xf1ff, 0xc027, 10}, - {m68k_op_and_8_er_aw , 0xf1ff, 0xc038, 12}, - {m68k_op_and_8_er_al , 0xf1ff, 0xc039, 16}, - {m68k_op_and_8_er_pcdi , 0xf1ff, 0xc03a, 12}, - {m68k_op_and_8_er_pcix , 0xf1ff, 0xc03b, 14}, - {m68k_op_and_8_er_i , 0xf1ff, 0xc03c, 8}, - {m68k_op_and_16_er_aw , 0xf1ff, 0xc078, 12}, - {m68k_op_and_16_er_al , 0xf1ff, 0xc079, 16}, - {m68k_op_and_16_er_pcdi , 0xf1ff, 0xc07a, 12}, - {m68k_op_and_16_er_pcix , 0xf1ff, 0xc07b, 14}, - {m68k_op_and_16_er_i , 0xf1ff, 0xc07c, 8}, - {m68k_op_and_32_er_aw , 0xf1ff, 0xc0b8, 18}, - {m68k_op_and_32_er_al , 0xf1ff, 0xc0b9, 22}, - {m68k_op_and_32_er_pcdi , 0xf1ff, 0xc0ba, 18}, - {m68k_op_and_32_er_pcix , 0xf1ff, 0xc0bb, 20}, - {m68k_op_and_32_er_i , 0xf1ff, 0xc0bc, 16}, - {m68k_op_mulu_16_aw , 0xf1ff, 0xc0f8, 8}, - {m68k_op_mulu_16_al , 0xf1ff, 0xc0f9, 12}, - {m68k_op_mulu_16_pcdi , 0xf1ff, 0xc0fa, 8}, - {m68k_op_mulu_16_pcix , 0xf1ff, 0xc0fb, 10}, - {m68k_op_mulu_16_i , 0xf1ff, 0xc0fc, 4}, - {m68k_op_abcd_8_mm_ay7 , 0xf1ff, 0xc10f, 18}, - {m68k_op_and_8_re_pi7 , 0xf1ff, 0xc11f, 12}, - {m68k_op_and_8_re_pd7 , 0xf1ff, 0xc127, 14}, - {m68k_op_and_8_re_aw , 0xf1ff, 0xc138, 16}, - {m68k_op_and_8_re_al , 0xf1ff, 0xc139, 20}, - {m68k_op_and_16_re_aw , 0xf1ff, 0xc178, 16}, - {m68k_op_and_16_re_al , 0xf1ff, 0xc179, 20}, - {m68k_op_and_32_re_aw , 0xf1ff, 0xc1b8, 24}, - {m68k_op_and_32_re_al , 0xf1ff, 0xc1b9, 28}, - {m68k_op_muls_16_aw , 0xf1ff, 0xc1f8, 8}, - {m68k_op_muls_16_al , 0xf1ff, 0xc1f9, 12}, - {m68k_op_muls_16_pcdi , 0xf1ff, 0xc1fa, 8}, - {m68k_op_muls_16_pcix , 0xf1ff, 0xc1fb, 10}, - {m68k_op_muls_16_i , 0xf1ff, 0xc1fc, 4}, - {m68k_op_add_8_er_pi7 , 0xf1ff, 0xd01f, 8}, - {m68k_op_add_8_er_pd7 , 0xf1ff, 0xd027, 10}, - {m68k_op_add_8_er_aw , 0xf1ff, 0xd038, 12}, - {m68k_op_add_8_er_al , 0xf1ff, 0xd039, 16}, - {m68k_op_add_8_er_pcdi , 0xf1ff, 0xd03a, 12}, - {m68k_op_add_8_er_pcix , 0xf1ff, 0xd03b, 14}, - {m68k_op_add_8_er_i , 0xf1ff, 0xd03c, 8}, - {m68k_op_add_16_er_aw , 0xf1ff, 0xd078, 12}, - {m68k_op_add_16_er_al , 0xf1ff, 0xd079, 16}, - {m68k_op_add_16_er_pcdi , 0xf1ff, 0xd07a, 12}, - {m68k_op_add_16_er_pcix , 0xf1ff, 0xd07b, 14}, - {m68k_op_add_16_er_i , 0xf1ff, 0xd07c, 8}, - {m68k_op_add_32_er_aw , 0xf1ff, 0xd0b8, 18}, - {m68k_op_add_32_er_al , 0xf1ff, 0xd0b9, 22}, - {m68k_op_add_32_er_pcdi , 0xf1ff, 0xd0ba, 18}, - {m68k_op_add_32_er_pcix , 0xf1ff, 0xd0bb, 20}, - {m68k_op_add_32_er_i , 0xf1ff, 0xd0bc, 16}, - {m68k_op_adda_16_aw , 0xf1ff, 0xd0f8, 16}, - {m68k_op_adda_16_al , 0xf1ff, 0xd0f9, 20}, - {m68k_op_adda_16_pcdi , 0xf1ff, 0xd0fa, 16}, - {m68k_op_adda_16_pcix , 0xf1ff, 0xd0fb, 18}, - {m68k_op_adda_16_i , 0xf1ff, 0xd0fc, 12}, - {m68k_op_addx_8_mm_ay7 , 0xf1ff, 0xd10f, 18}, - {m68k_op_add_8_re_pi7 , 0xf1ff, 0xd11f, 12}, - {m68k_op_add_8_re_pd7 , 0xf1ff, 0xd127, 14}, - {m68k_op_add_8_re_aw , 0xf1ff, 0xd138, 16}, - {m68k_op_add_8_re_al , 0xf1ff, 0xd139, 20}, - {m68k_op_add_16_re_aw , 0xf1ff, 0xd178, 16}, - {m68k_op_add_16_re_al , 0xf1ff, 0xd179, 20}, - {m68k_op_add_32_re_aw , 0xf1ff, 0xd1b8, 24}, - {m68k_op_add_32_re_al , 0xf1ff, 0xd1b9, 28}, - {m68k_op_adda_32_aw , 0xf1ff, 0xd1f8, 18}, - {m68k_op_adda_32_al , 0xf1ff, 0xd1f9, 22}, - {m68k_op_adda_32_pcdi , 0xf1ff, 0xd1fa, 18}, - {m68k_op_adda_32_pcix , 0xf1ff, 0xd1fb, 20}, - {m68k_op_adda_32_i , 0xf1ff, 0xd1fc, 16}, - {m68k_op_ori_8_d , 0xfff8, 0x0000, 8}, - {m68k_op_ori_8_ai , 0xfff8, 0x0010, 16}, - {m68k_op_ori_8_pi , 0xfff8, 0x0018, 16}, - {m68k_op_ori_8_pd , 0xfff8, 0x0020, 18}, - {m68k_op_ori_8_di , 0xfff8, 0x0028, 20}, - {m68k_op_ori_8_ix , 0xfff8, 0x0030, 22}, - {m68k_op_ori_16_d , 0xfff8, 0x0040, 8}, - {m68k_op_ori_16_ai , 0xfff8, 0x0050, 16}, - {m68k_op_ori_16_pi , 0xfff8, 0x0058, 16}, - {m68k_op_ori_16_pd , 0xfff8, 0x0060, 18}, - {m68k_op_ori_16_di , 0xfff8, 0x0068, 20}, - {m68k_op_ori_16_ix , 0xfff8, 0x0070, 22}, - {m68k_op_ori_32_d , 0xfff8, 0x0080, 16}, - {m68k_op_ori_32_ai , 0xfff8, 0x0090, 28}, - {m68k_op_ori_32_pi , 0xfff8, 0x0098, 28}, - {m68k_op_ori_32_pd , 0xfff8, 0x00a0, 30}, - {m68k_op_ori_32_di , 0xfff8, 0x00a8, 32}, - {m68k_op_ori_32_ix , 0xfff8, 0x00b0, 34}, - {m68k_op_andi_8_d , 0xfff8, 0x0200, 8}, - {m68k_op_andi_8_ai , 0xfff8, 0x0210, 16}, - {m68k_op_andi_8_pi , 0xfff8, 0x0218, 16}, - {m68k_op_andi_8_pd , 0xfff8, 0x0220, 18}, - {m68k_op_andi_8_di , 0xfff8, 0x0228, 20}, - {m68k_op_andi_8_ix , 0xfff8, 0x0230, 22}, - {m68k_op_andi_16_d , 0xfff8, 0x0240, 8}, - {m68k_op_andi_16_ai , 0xfff8, 0x0250, 16}, - {m68k_op_andi_16_pi , 0xfff8, 0x0258, 16}, - {m68k_op_andi_16_pd , 0xfff8, 0x0260, 18}, - {m68k_op_andi_16_di , 0xfff8, 0x0268, 20}, - {m68k_op_andi_16_ix , 0xfff8, 0x0270, 22}, - {m68k_op_andi_32_d , 0xfff8, 0x0280, 16}, /* see Yacht.txt */ - {m68k_op_andi_32_ai , 0xfff8, 0x0290, 28}, - {m68k_op_andi_32_pi , 0xfff8, 0x0298, 28}, - {m68k_op_andi_32_pd , 0xfff8, 0x02a0, 30}, - {m68k_op_andi_32_di , 0xfff8, 0x02a8, 32}, - {m68k_op_andi_32_ix , 0xfff8, 0x02b0, 34}, - {m68k_op_subi_8_d , 0xfff8, 0x0400, 8}, - {m68k_op_subi_8_ai , 0xfff8, 0x0410, 16}, - {m68k_op_subi_8_pi , 0xfff8, 0x0418, 16}, - {m68k_op_subi_8_pd , 0xfff8, 0x0420, 18}, - {m68k_op_subi_8_di , 0xfff8, 0x0428, 20}, - {m68k_op_subi_8_ix , 0xfff8, 0x0430, 22}, - {m68k_op_subi_16_d , 0xfff8, 0x0440, 8}, - {m68k_op_subi_16_ai , 0xfff8, 0x0450, 16}, - {m68k_op_subi_16_pi , 0xfff8, 0x0458, 16}, - {m68k_op_subi_16_pd , 0xfff8, 0x0460, 18}, - {m68k_op_subi_16_di , 0xfff8, 0x0468, 20}, - {m68k_op_subi_16_ix , 0xfff8, 0x0470, 22}, - {m68k_op_subi_32_d , 0xfff8, 0x0480, 16}, - {m68k_op_subi_32_ai , 0xfff8, 0x0490, 28}, - {m68k_op_subi_32_pi , 0xfff8, 0x0498, 28}, - {m68k_op_subi_32_pd , 0xfff8, 0x04a0, 30}, - {m68k_op_subi_32_di , 0xfff8, 0x04a8, 32}, - {m68k_op_subi_32_ix , 0xfff8, 0x04b0, 34}, - {m68k_op_addi_8_d , 0xfff8, 0x0600, 8}, - {m68k_op_addi_8_ai , 0xfff8, 0x0610, 16}, - {m68k_op_addi_8_pi , 0xfff8, 0x0618, 16}, - {m68k_op_addi_8_pd , 0xfff8, 0x0620, 18}, - {m68k_op_addi_8_di , 0xfff8, 0x0628, 20}, - {m68k_op_addi_8_ix , 0xfff8, 0x0630, 22}, - {m68k_op_addi_16_d , 0xfff8, 0x0640, 8}, - {m68k_op_addi_16_ai , 0xfff8, 0x0650, 16}, - {m68k_op_addi_16_pi , 0xfff8, 0x0658, 16}, - {m68k_op_addi_16_pd , 0xfff8, 0x0660, 18}, - {m68k_op_addi_16_di , 0xfff8, 0x0668, 20}, - {m68k_op_addi_16_ix , 0xfff8, 0x0670, 22}, - {m68k_op_addi_32_d , 0xfff8, 0x0680, 16}, - {m68k_op_addi_32_ai , 0xfff8, 0x0690, 28}, - {m68k_op_addi_32_pi , 0xfff8, 0x0698, 28}, - {m68k_op_addi_32_pd , 0xfff8, 0x06a0, 30}, - {m68k_op_addi_32_di , 0xfff8, 0x06a8, 32}, - {m68k_op_addi_32_ix , 0xfff8, 0x06b0, 34}, - {m68k_op_btst_32_s_d , 0xfff8, 0x0800, 10}, - {m68k_op_btst_8_s_ai , 0xfff8, 0x0810, 12}, - {m68k_op_btst_8_s_pi , 0xfff8, 0x0818, 12}, - {m68k_op_btst_8_s_pd , 0xfff8, 0x0820, 14}, - {m68k_op_btst_8_s_di , 0xfff8, 0x0828, 16}, - {m68k_op_btst_8_s_ix , 0xfff8, 0x0830, 18}, - {m68k_op_bchg_32_s_d , 0xfff8, 0x0840, 12}, - {m68k_op_bchg_8_s_ai , 0xfff8, 0x0850, 16}, - {m68k_op_bchg_8_s_pi , 0xfff8, 0x0858, 16}, - {m68k_op_bchg_8_s_pd , 0xfff8, 0x0860, 18}, - {m68k_op_bchg_8_s_di , 0xfff8, 0x0868, 20}, - {m68k_op_bchg_8_s_ix , 0xfff8, 0x0870, 22}, - {m68k_op_bclr_32_s_d , 0xfff8, 0x0880, 14}, - {m68k_op_bclr_8_s_ai , 0xfff8, 0x0890, 16}, - {m68k_op_bclr_8_s_pi , 0xfff8, 0x0898, 16}, - {m68k_op_bclr_8_s_pd , 0xfff8, 0x08a0, 18}, - {m68k_op_bclr_8_s_di , 0xfff8, 0x08a8, 20}, - {m68k_op_bclr_8_s_ix , 0xfff8, 0x08b0, 22}, - {m68k_op_bset_32_s_d , 0xfff8, 0x08c0, 12}, - {m68k_op_bset_8_s_ai , 0xfff8, 0x08d0, 16}, - {m68k_op_bset_8_s_pi , 0xfff8, 0x08d8, 16}, - {m68k_op_bset_8_s_pd , 0xfff8, 0x08e0, 18}, - {m68k_op_bset_8_s_di , 0xfff8, 0x08e8, 20}, - {m68k_op_bset_8_s_ix , 0xfff8, 0x08f0, 22}, - {m68k_op_eori_8_d , 0xfff8, 0x0a00, 8}, - {m68k_op_eori_8_ai , 0xfff8, 0x0a10, 16}, - {m68k_op_eori_8_pi , 0xfff8, 0x0a18, 16}, - {m68k_op_eori_8_pd , 0xfff8, 0x0a20, 18}, - {m68k_op_eori_8_di , 0xfff8, 0x0a28, 20}, - {m68k_op_eori_8_ix , 0xfff8, 0x0a30, 22}, - {m68k_op_eori_16_d , 0xfff8, 0x0a40, 8}, - {m68k_op_eori_16_ai , 0xfff8, 0x0a50, 16}, - {m68k_op_eori_16_pi , 0xfff8, 0x0a58, 16}, - {m68k_op_eori_16_pd , 0xfff8, 0x0a60, 18}, - {m68k_op_eori_16_di , 0xfff8, 0x0a68, 20}, - {m68k_op_eori_16_ix , 0xfff8, 0x0a70, 22}, - {m68k_op_eori_32_d , 0xfff8, 0x0a80, 16}, - {m68k_op_eori_32_ai , 0xfff8, 0x0a90, 28}, - {m68k_op_eori_32_pi , 0xfff8, 0x0a98, 28}, - {m68k_op_eori_32_pd , 0xfff8, 0x0aa0, 30}, - {m68k_op_eori_32_di , 0xfff8, 0x0aa8, 32}, - {m68k_op_eori_32_ix , 0xfff8, 0x0ab0, 34}, - {m68k_op_cmpi_8_d , 0xfff8, 0x0c00, 8}, - {m68k_op_cmpi_8_ai , 0xfff8, 0x0c10, 12}, - {m68k_op_cmpi_8_pi , 0xfff8, 0x0c18, 12}, - {m68k_op_cmpi_8_pd , 0xfff8, 0x0c20, 14}, - {m68k_op_cmpi_8_di , 0xfff8, 0x0c28, 16}, - {m68k_op_cmpi_8_ix , 0xfff8, 0x0c30, 18}, - {m68k_op_cmpi_16_d , 0xfff8, 0x0c40, 8}, - {m68k_op_cmpi_16_ai , 0xfff8, 0x0c50, 12}, - {m68k_op_cmpi_16_pi , 0xfff8, 0x0c58, 12}, - {m68k_op_cmpi_16_pd , 0xfff8, 0x0c60, 14}, - {m68k_op_cmpi_16_di , 0xfff8, 0x0c68, 16}, - {m68k_op_cmpi_16_ix , 0xfff8, 0x0c70, 18}, - {m68k_op_cmpi_32_d , 0xfff8, 0x0c80, 14}, - {m68k_op_cmpi_32_ai , 0xfff8, 0x0c90, 20}, - {m68k_op_cmpi_32_pi , 0xfff8, 0x0c98, 20}, - {m68k_op_cmpi_32_pd , 0xfff8, 0x0ca0, 22}, - {m68k_op_cmpi_32_di , 0xfff8, 0x0ca8, 24}, - {m68k_op_cmpi_32_ix , 0xfff8, 0x0cb0, 26}, - {m68k_op_move_8_aw_d , 0xfff8, 0x11c0, 12}, - {m68k_op_move_8_aw_ai , 0xfff8, 0x11d0, 16}, - {m68k_op_move_8_aw_pi , 0xfff8, 0x11d8, 16}, - {m68k_op_move_8_aw_pd , 0xfff8, 0x11e0, 18}, - {m68k_op_move_8_aw_di , 0xfff8, 0x11e8, 20}, - {m68k_op_move_8_aw_ix , 0xfff8, 0x11f0, 22}, - {m68k_op_move_8_al_d , 0xfff8, 0x13c0, 16}, - {m68k_op_move_8_al_ai , 0xfff8, 0x13d0, 20}, - {m68k_op_move_8_al_pi , 0xfff8, 0x13d8, 20}, - {m68k_op_move_8_al_pd , 0xfff8, 0x13e0, 22}, - {m68k_op_move_8_al_di , 0xfff8, 0x13e8, 24}, - {m68k_op_move_8_al_ix , 0xfff8, 0x13f0, 26}, - {m68k_op_move_8_pi7_d , 0xfff8, 0x1ec0, 8}, - {m68k_op_move_8_pi7_ai , 0xfff8, 0x1ed0, 12}, - {m68k_op_move_8_pi7_pi , 0xfff8, 0x1ed8, 12}, - {m68k_op_move_8_pi7_pd , 0xfff8, 0x1ee0, 14}, - {m68k_op_move_8_pi7_di , 0xfff8, 0x1ee8, 16}, - {m68k_op_move_8_pi7_ix , 0xfff8, 0x1ef0, 18}, - {m68k_op_move_8_pd7_d , 0xfff8, 0x1f00, 8}, - {m68k_op_move_8_pd7_ai , 0xfff8, 0x1f10, 12}, - {m68k_op_move_8_pd7_pi , 0xfff8, 0x1f18, 12}, - {m68k_op_move_8_pd7_pd , 0xfff8, 0x1f20, 14}, - {m68k_op_move_8_pd7_di , 0xfff8, 0x1f28, 16}, - {m68k_op_move_8_pd7_ix , 0xfff8, 0x1f30, 18}, - {m68k_op_move_32_aw_d , 0xfff8, 0x21c0, 16}, - {m68k_op_move_32_aw_a , 0xfff8, 0x21c8, 16}, - {m68k_op_move_32_aw_ai , 0xfff8, 0x21d0, 24}, - {m68k_op_move_32_aw_pi , 0xfff8, 0x21d8, 24}, - {m68k_op_move_32_aw_pd , 0xfff8, 0x21e0, 26}, - {m68k_op_move_32_aw_di , 0xfff8, 0x21e8, 28}, - {m68k_op_move_32_aw_ix , 0xfff8, 0x21f0, 30}, - {m68k_op_move_32_al_d , 0xfff8, 0x23c0, 20}, - {m68k_op_move_32_al_a , 0xfff8, 0x23c8, 20}, - {m68k_op_move_32_al_ai , 0xfff8, 0x23d0, 28}, - {m68k_op_move_32_al_pi , 0xfff8, 0x23d8, 28}, - {m68k_op_move_32_al_pd , 0xfff8, 0x23e0, 30}, - {m68k_op_move_32_al_di , 0xfff8, 0x23e8, 32}, - {m68k_op_move_32_al_ix , 0xfff8, 0x23f0, 34}, - {m68k_op_move_16_aw_d , 0xfff8, 0x31c0, 12}, - {m68k_op_move_16_aw_a , 0xfff8, 0x31c8, 12}, - {m68k_op_move_16_aw_ai , 0xfff8, 0x31d0, 16}, - {m68k_op_move_16_aw_pi , 0xfff8, 0x31d8, 16}, - {m68k_op_move_16_aw_pd , 0xfff8, 0x31e0, 18}, - {m68k_op_move_16_aw_di , 0xfff8, 0x31e8, 20}, - {m68k_op_move_16_aw_ix , 0xfff8, 0x31f0, 22}, - {m68k_op_move_16_al_d , 0xfff8, 0x33c0, 16}, - {m68k_op_move_16_al_a , 0xfff8, 0x33c8, 16}, - {m68k_op_move_16_al_ai , 0xfff8, 0x33d0, 20}, - {m68k_op_move_16_al_pi , 0xfff8, 0x33d8, 20}, - {m68k_op_move_16_al_pd , 0xfff8, 0x33e0, 22}, - {m68k_op_move_16_al_di , 0xfff8, 0x33e8, 24}, - {m68k_op_move_16_al_ix , 0xfff8, 0x33f0, 26}, - {m68k_op_negx_8_d , 0xfff8, 0x4000, 4}, - {m68k_op_negx_8_ai , 0xfff8, 0x4010, 12}, - {m68k_op_negx_8_pi , 0xfff8, 0x4018, 12}, - {m68k_op_negx_8_pd , 0xfff8, 0x4020, 14}, - {m68k_op_negx_8_di , 0xfff8, 0x4028, 16}, - {m68k_op_negx_8_ix , 0xfff8, 0x4030, 18}, - {m68k_op_negx_16_d , 0xfff8, 0x4040, 4}, - {m68k_op_negx_16_ai , 0xfff8, 0x4050, 12}, - {m68k_op_negx_16_pi , 0xfff8, 0x4058, 12}, - {m68k_op_negx_16_pd , 0xfff8, 0x4060, 14}, - {m68k_op_negx_16_di , 0xfff8, 0x4068, 16}, - {m68k_op_negx_16_ix , 0xfff8, 0x4070, 18}, - {m68k_op_negx_32_d , 0xfff8, 0x4080, 6}, - {m68k_op_negx_32_ai , 0xfff8, 0x4090, 20}, - {m68k_op_negx_32_pi , 0xfff8, 0x4098, 20}, - {m68k_op_negx_32_pd , 0xfff8, 0x40a0, 22}, - {m68k_op_negx_32_di , 0xfff8, 0x40a8, 24}, - {m68k_op_negx_32_ix , 0xfff8, 0x40b0, 26}, - {m68k_op_move_16_frs_d , 0xfff8, 0x40c0, 6}, - {m68k_op_move_16_frs_ai , 0xfff8, 0x40d0, 12}, - {m68k_op_move_16_frs_pi , 0xfff8, 0x40d8, 12}, - {m68k_op_move_16_frs_pd , 0xfff8, 0x40e0, 14}, - {m68k_op_move_16_frs_di , 0xfff8, 0x40e8, 16}, - {m68k_op_move_16_frs_ix , 0xfff8, 0x40f0, 18}, - {m68k_op_clr_8_d , 0xfff8, 0x4200, 4}, - {m68k_op_clr_8_ai , 0xfff8, 0x4210, 12}, - {m68k_op_clr_8_pi , 0xfff8, 0x4218, 12}, - {m68k_op_clr_8_pd , 0xfff8, 0x4220, 14}, - {m68k_op_clr_8_di , 0xfff8, 0x4228, 16}, - {m68k_op_clr_8_ix , 0xfff8, 0x4230, 18}, - {m68k_op_clr_16_d , 0xfff8, 0x4240, 4}, - {m68k_op_clr_16_ai , 0xfff8, 0x4250, 12}, - {m68k_op_clr_16_pi , 0xfff8, 0x4258, 12}, - {m68k_op_clr_16_pd , 0xfff8, 0x4260, 14}, - {m68k_op_clr_16_di , 0xfff8, 0x4268, 16}, - {m68k_op_clr_16_ix , 0xfff8, 0x4270, 18}, - {m68k_op_clr_32_d , 0xfff8, 0x4280, 6}, - {m68k_op_clr_32_ai , 0xfff8, 0x4290, 20}, - {m68k_op_clr_32_pi , 0xfff8, 0x4298, 20}, - {m68k_op_clr_32_pd , 0xfff8, 0x42a0, 22}, - {m68k_op_clr_32_di , 0xfff8, 0x42a8, 24}, - {m68k_op_clr_32_ix , 0xfff8, 0x42b0, 26}, - {m68k_op_neg_8_d , 0xfff8, 0x4400, 4}, - {m68k_op_neg_8_ai , 0xfff8, 0x4410, 12}, - {m68k_op_neg_8_pi , 0xfff8, 0x4418, 12}, - {m68k_op_neg_8_pd , 0xfff8, 0x4420, 14}, - {m68k_op_neg_8_di , 0xfff8, 0x4428, 16}, - {m68k_op_neg_8_ix , 0xfff8, 0x4430, 18}, - {m68k_op_neg_16_d , 0xfff8, 0x4440, 4}, - {m68k_op_neg_16_ai , 0xfff8, 0x4450, 12}, - {m68k_op_neg_16_pi , 0xfff8, 0x4458, 12}, - {m68k_op_neg_16_pd , 0xfff8, 0x4460, 14}, - {m68k_op_neg_16_di , 0xfff8, 0x4468, 16}, - {m68k_op_neg_16_ix , 0xfff8, 0x4470, 18}, - {m68k_op_neg_32_d , 0xfff8, 0x4480, 6}, - {m68k_op_neg_32_ai , 0xfff8, 0x4490, 20}, - {m68k_op_neg_32_pi , 0xfff8, 0x4498, 20}, - {m68k_op_neg_32_pd , 0xfff8, 0x44a0, 22}, - {m68k_op_neg_32_di , 0xfff8, 0x44a8, 24}, - {m68k_op_neg_32_ix , 0xfff8, 0x44b0, 26}, - {m68k_op_move_16_toc_d , 0xfff8, 0x44c0, 12}, - {m68k_op_move_16_toc_ai , 0xfff8, 0x44d0, 16}, - {m68k_op_move_16_toc_pi , 0xfff8, 0x44d8, 16}, - {m68k_op_move_16_toc_pd , 0xfff8, 0x44e0, 18}, - {m68k_op_move_16_toc_di , 0xfff8, 0x44e8, 20}, - {m68k_op_move_16_toc_ix , 0xfff8, 0x44f0, 22}, - {m68k_op_not_8_d , 0xfff8, 0x4600, 4}, - {m68k_op_not_8_ai , 0xfff8, 0x4610, 12}, - {m68k_op_not_8_pi , 0xfff8, 0x4618, 12}, - {m68k_op_not_8_pd , 0xfff8, 0x4620, 14}, - {m68k_op_not_8_di , 0xfff8, 0x4628, 16}, - {m68k_op_not_8_ix , 0xfff8, 0x4630, 18}, - {m68k_op_not_16_d , 0xfff8, 0x4640, 4}, - {m68k_op_not_16_ai , 0xfff8, 0x4650, 12}, - {m68k_op_not_16_pi , 0xfff8, 0x4658, 12}, - {m68k_op_not_16_pd , 0xfff8, 0x4660, 14}, - {m68k_op_not_16_di , 0xfff8, 0x4668, 16}, - {m68k_op_not_16_ix , 0xfff8, 0x4670, 18}, - {m68k_op_not_32_d , 0xfff8, 0x4680, 6}, - {m68k_op_not_32_ai , 0xfff8, 0x4690, 20}, - {m68k_op_not_32_pi , 0xfff8, 0x4698, 20}, - {m68k_op_not_32_pd , 0xfff8, 0x46a0, 22}, - {m68k_op_not_32_di , 0xfff8, 0x46a8, 24}, - {m68k_op_not_32_ix , 0xfff8, 0x46b0, 26}, - {m68k_op_move_16_tos_d , 0xfff8, 0x46c0, 12}, - {m68k_op_move_16_tos_ai , 0xfff8, 0x46d0, 16}, - {m68k_op_move_16_tos_pi , 0xfff8, 0x46d8, 16}, - {m68k_op_move_16_tos_pd , 0xfff8, 0x46e0, 18}, - {m68k_op_move_16_tos_di , 0xfff8, 0x46e8, 20}, - {m68k_op_move_16_tos_ix , 0xfff8, 0x46f0, 22}, - {m68k_op_nbcd_8_d , 0xfff8, 0x4800, 6}, - {m68k_op_nbcd_8_ai , 0xfff8, 0x4810, 12}, - {m68k_op_nbcd_8_pi , 0xfff8, 0x4818, 12}, - {m68k_op_nbcd_8_pd , 0xfff8, 0x4820, 14}, - {m68k_op_nbcd_8_di , 0xfff8, 0x4828, 16}, - {m68k_op_nbcd_8_ix , 0xfff8, 0x4830, 18}, - {m68k_op_swap_32 , 0xfff8, 0x4840, 4}, - {m68k_op_pea_32_ai , 0xfff8, 0x4850, 12}, - {m68k_op_pea_32_di , 0xfff8, 0x4868, 16}, - {m68k_op_pea_32_ix , 0xfff8, 0x4870, 20}, - {m68k_op_ext_16 , 0xfff8, 0x4880, 4}, - {m68k_op_movem_16_re_ai , 0xfff8, 0x4890, 8}, - {m68k_op_movem_16_re_pd , 0xfff8, 0x48a0, 8}, - {m68k_op_movem_16_re_di , 0xfff8, 0x48a8, 12}, - {m68k_op_movem_16_re_ix , 0xfff8, 0x48b0, 14}, - {m68k_op_ext_32 , 0xfff8, 0x48c0, 4}, - {m68k_op_movem_32_re_ai , 0xfff8, 0x48d0, 8}, - {m68k_op_movem_32_re_pd , 0xfff8, 0x48e0, 8}, - {m68k_op_movem_32_re_di , 0xfff8, 0x48e8, 12}, - {m68k_op_movem_32_re_ix , 0xfff8, 0x48f0, 14}, - {m68k_op_tst_8_d , 0xfff8, 0x4a00, 4}, - {m68k_op_tst_8_ai , 0xfff8, 0x4a10, 8}, - {m68k_op_tst_8_pi , 0xfff8, 0x4a18, 8}, - {m68k_op_tst_8_pd , 0xfff8, 0x4a20, 10}, - {m68k_op_tst_8_di , 0xfff8, 0x4a28, 12}, - {m68k_op_tst_8_ix , 0xfff8, 0x4a30, 14}, - {m68k_op_tst_16_d , 0xfff8, 0x4a40, 4}, - {m68k_op_tst_16_ai , 0xfff8, 0x4a50, 8}, - {m68k_op_tst_16_pi , 0xfff8, 0x4a58, 8}, - {m68k_op_tst_16_pd , 0xfff8, 0x4a60, 10}, - {m68k_op_tst_16_di , 0xfff8, 0x4a68, 12}, - {m68k_op_tst_16_ix , 0xfff8, 0x4a70, 14}, - {m68k_op_tst_32_d , 0xfff8, 0x4a80, 4}, - {m68k_op_tst_32_ai , 0xfff8, 0x4a90, 12}, - {m68k_op_tst_32_pi , 0xfff8, 0x4a98, 12}, - {m68k_op_tst_32_pd , 0xfff8, 0x4aa0, 14}, - {m68k_op_tst_32_di , 0xfff8, 0x4aa8, 16}, - {m68k_op_tst_32_ix , 0xfff8, 0x4ab0, 18}, - {m68k_op_tas_8_d , 0xfff8, 0x4ac0, 4}, - {m68k_op_tas_8_ai , 0xfff8, 0x4ad0, 14}, /* see Yacht.txt */ - {m68k_op_tas_8_pi , 0xfff8, 0x4ad8, 14}, /* see Yacht.txt */ - {m68k_op_tas_8_pd , 0xfff8, 0x4ae0, 16}, /* see Yacht.txt */ - {m68k_op_tas_8_di , 0xfff8, 0x4ae8, 18}, /* see Yacht.txt */ - {m68k_op_tas_8_ix , 0xfff8, 0x4af0, 20}, /* see Yacht.txt */ - {m68k_op_movem_16_er_ai , 0xfff8, 0x4c90, 12}, - {m68k_op_movem_16_er_pi , 0xfff8, 0x4c98, 12}, - {m68k_op_movem_16_er_di , 0xfff8, 0x4ca8, 16}, - {m68k_op_movem_16_er_ix , 0xfff8, 0x4cb0, 18}, - {m68k_op_movem_32_er_ai , 0xfff8, 0x4cd0, 12}, - {m68k_op_movem_32_er_pi , 0xfff8, 0x4cd8, 12}, - {m68k_op_movem_32_er_di , 0xfff8, 0x4ce8, 16}, - {m68k_op_movem_32_er_ix , 0xfff8, 0x4cf0, 18}, - {m68k_op_link_16 , 0xfff8, 0x4e50, 16}, - {m68k_op_unlk_32 , 0xfff8, 0x4e58, 12}, - {m68k_op_move_32_tou , 0xfff8, 0x4e60, 4}, - {m68k_op_move_32_fru , 0xfff8, 0x4e68, 4}, - {m68k_op_jsr_32_ai , 0xfff8, 0x4e90, 16}, - {m68k_op_jsr_32_di , 0xfff8, 0x4ea8, 18}, - {m68k_op_jsr_32_ix , 0xfff8, 0x4eb0, 22}, - {m68k_op_jmp_32_ai , 0xfff8, 0x4ed0, 8}, - {m68k_op_jmp_32_di , 0xfff8, 0x4ee8, 10}, - {m68k_op_jmp_32_ix , 0xfff8, 0x4ef0, 14}, - {m68k_op_st_8_d , 0xfff8, 0x50c0, 6}, - {m68k_op_dbt_16 , 0xfff8, 0x50c8, 12}, - {m68k_op_st_8_ai , 0xfff8, 0x50d0, 12}, - {m68k_op_st_8_pi , 0xfff8, 0x50d8, 12}, - {m68k_op_st_8_pd , 0xfff8, 0x50e0, 14}, - {m68k_op_st_8_di , 0xfff8, 0x50e8, 16}, - {m68k_op_st_8_ix , 0xfff8, 0x50f0, 18}, - {m68k_op_sf_8_d , 0xfff8, 0x51c0, 4}, - {m68k_op_dbf_16 , 0xfff8, 0x51c8, 12}, - {m68k_op_sf_8_ai , 0xfff8, 0x51d0, 12}, - {m68k_op_sf_8_pi , 0xfff8, 0x51d8, 12}, - {m68k_op_sf_8_pd , 0xfff8, 0x51e0, 14}, - {m68k_op_sf_8_di , 0xfff8, 0x51e8, 16}, - {m68k_op_sf_8_ix , 0xfff8, 0x51f0, 18}, - {m68k_op_shi_8_d , 0xfff8, 0x52c0, 4}, - {m68k_op_dbhi_16 , 0xfff8, 0x52c8, 12}, - {m68k_op_shi_8_ai , 0xfff8, 0x52d0, 12}, - {m68k_op_shi_8_pi , 0xfff8, 0x52d8, 12}, - {m68k_op_shi_8_pd , 0xfff8, 0x52e0, 14}, - {m68k_op_shi_8_di , 0xfff8, 0x52e8, 16}, - {m68k_op_shi_8_ix , 0xfff8, 0x52f0, 18}, - {m68k_op_sls_8_d , 0xfff8, 0x53c0, 4}, - {m68k_op_dbls_16 , 0xfff8, 0x53c8, 12}, - {m68k_op_sls_8_ai , 0xfff8, 0x53d0, 12}, - {m68k_op_sls_8_pi , 0xfff8, 0x53d8, 12}, - {m68k_op_sls_8_pd , 0xfff8, 0x53e0, 14}, - {m68k_op_sls_8_di , 0xfff8, 0x53e8, 16}, - {m68k_op_sls_8_ix , 0xfff8, 0x53f0, 18}, - {m68k_op_scc_8_d , 0xfff8, 0x54c0, 4}, - {m68k_op_dbcc_16 , 0xfff8, 0x54c8, 12}, - {m68k_op_scc_8_ai , 0xfff8, 0x54d0, 12}, - {m68k_op_scc_8_pi , 0xfff8, 0x54d8, 12}, - {m68k_op_scc_8_pd , 0xfff8, 0x54e0, 14}, - {m68k_op_scc_8_di , 0xfff8, 0x54e8, 16}, - {m68k_op_scc_8_ix , 0xfff8, 0x54f0, 18}, - {m68k_op_scs_8_d , 0xfff8, 0x55c0, 4}, - {m68k_op_dbcs_16 , 0xfff8, 0x55c8, 12}, - {m68k_op_scs_8_ai , 0xfff8, 0x55d0, 12}, - {m68k_op_scs_8_pi , 0xfff8, 0x55d8, 12}, - {m68k_op_scs_8_pd , 0xfff8, 0x55e0, 14}, - {m68k_op_scs_8_di , 0xfff8, 0x55e8, 16}, - {m68k_op_scs_8_ix , 0xfff8, 0x55f0, 18}, - {m68k_op_sne_8_d , 0xfff8, 0x56c0, 4}, - {m68k_op_dbne_16 , 0xfff8, 0x56c8, 12}, - {m68k_op_sne_8_ai , 0xfff8, 0x56d0, 12}, - {m68k_op_sne_8_pi , 0xfff8, 0x56d8, 12}, - {m68k_op_sne_8_pd , 0xfff8, 0x56e0, 14}, - {m68k_op_sne_8_di , 0xfff8, 0x56e8, 16}, - {m68k_op_sne_8_ix , 0xfff8, 0x56f0, 18}, - {m68k_op_seq_8_d , 0xfff8, 0x57c0, 4}, - {m68k_op_dbeq_16 , 0xfff8, 0x57c8, 12}, - {m68k_op_seq_8_ai , 0xfff8, 0x57d0, 12}, - {m68k_op_seq_8_pi , 0xfff8, 0x57d8, 12}, - {m68k_op_seq_8_pd , 0xfff8, 0x57e0, 14}, - {m68k_op_seq_8_di , 0xfff8, 0x57e8, 16}, - {m68k_op_seq_8_ix , 0xfff8, 0x57f0, 18}, - {m68k_op_svc_8_d , 0xfff8, 0x58c0, 4}, - {m68k_op_dbvc_16 , 0xfff8, 0x58c8, 12}, - {m68k_op_svc_8_ai , 0xfff8, 0x58d0, 12}, - {m68k_op_svc_8_pi , 0xfff8, 0x58d8, 12}, - {m68k_op_svc_8_pd , 0xfff8, 0x58e0, 14}, - {m68k_op_svc_8_di , 0xfff8, 0x58e8, 16}, - {m68k_op_svc_8_ix , 0xfff8, 0x58f0, 18}, - {m68k_op_svs_8_d , 0xfff8, 0x59c0, 4}, - {m68k_op_dbvs_16 , 0xfff8, 0x59c8, 12}, - {m68k_op_svs_8_ai , 0xfff8, 0x59d0, 12}, - {m68k_op_svs_8_pi , 0xfff8, 0x59d8, 12}, - {m68k_op_svs_8_pd , 0xfff8, 0x59e0, 14}, - {m68k_op_svs_8_di , 0xfff8, 0x59e8, 16}, - {m68k_op_svs_8_ix , 0xfff8, 0x59f0, 18}, - {m68k_op_spl_8_d , 0xfff8, 0x5ac0, 4}, - {m68k_op_dbpl_16 , 0xfff8, 0x5ac8, 12}, - {m68k_op_spl_8_ai , 0xfff8, 0x5ad0, 12}, - {m68k_op_spl_8_pi , 0xfff8, 0x5ad8, 12}, - {m68k_op_spl_8_pd , 0xfff8, 0x5ae0, 14}, - {m68k_op_spl_8_di , 0xfff8, 0x5ae8, 16}, - {m68k_op_spl_8_ix , 0xfff8, 0x5af0, 18}, - {m68k_op_smi_8_d , 0xfff8, 0x5bc0, 4}, - {m68k_op_dbmi_16 , 0xfff8, 0x5bc8, 12}, - {m68k_op_smi_8_ai , 0xfff8, 0x5bd0, 12}, - {m68k_op_smi_8_pi , 0xfff8, 0x5bd8, 12}, - {m68k_op_smi_8_pd , 0xfff8, 0x5be0, 14}, - {m68k_op_smi_8_di , 0xfff8, 0x5be8, 16}, - {m68k_op_smi_8_ix , 0xfff8, 0x5bf0, 18}, - {m68k_op_sge_8_d , 0xfff8, 0x5cc0, 4}, - {m68k_op_dbge_16 , 0xfff8, 0x5cc8, 12}, - {m68k_op_sge_8_ai , 0xfff8, 0x5cd0, 12}, - {m68k_op_sge_8_pi , 0xfff8, 0x5cd8, 12}, - {m68k_op_sge_8_pd , 0xfff8, 0x5ce0, 14}, - {m68k_op_sge_8_di , 0xfff8, 0x5ce8, 16}, - {m68k_op_sge_8_ix , 0xfff8, 0x5cf0, 18}, - {m68k_op_slt_8_d , 0xfff8, 0x5dc0, 4}, - {m68k_op_dblt_16 , 0xfff8, 0x5dc8, 12}, - {m68k_op_slt_8_ai , 0xfff8, 0x5dd0, 12}, - {m68k_op_slt_8_pi , 0xfff8, 0x5dd8, 12}, - {m68k_op_slt_8_pd , 0xfff8, 0x5de0, 14}, - {m68k_op_slt_8_di , 0xfff8, 0x5de8, 16}, - {m68k_op_slt_8_ix , 0xfff8, 0x5df0, 18}, - {m68k_op_sgt_8_d , 0xfff8, 0x5ec0, 4}, - {m68k_op_dbgt_16 , 0xfff8, 0x5ec8, 12}, - {m68k_op_sgt_8_ai , 0xfff8, 0x5ed0, 12}, - {m68k_op_sgt_8_pi , 0xfff8, 0x5ed8, 12}, - {m68k_op_sgt_8_pd , 0xfff8, 0x5ee0, 14}, - {m68k_op_sgt_8_di , 0xfff8, 0x5ee8, 16}, - {m68k_op_sgt_8_ix , 0xfff8, 0x5ef0, 18}, - {m68k_op_sle_8_d , 0xfff8, 0x5fc0, 4}, - {m68k_op_dble_16 , 0xfff8, 0x5fc8, 12}, - {m68k_op_sle_8_ai , 0xfff8, 0x5fd0, 12}, - {m68k_op_sle_8_pi , 0xfff8, 0x5fd8, 12}, - {m68k_op_sle_8_pd , 0xfff8, 0x5fe0, 14}, - {m68k_op_sle_8_di , 0xfff8, 0x5fe8, 16}, - {m68k_op_sle_8_ix , 0xfff8, 0x5ff0, 18}, - {m68k_op_sbcd_8_mm_ax7 , 0xfff8, 0x8f08, 18}, - {m68k_op_subx_8_mm_ax7 , 0xfff8, 0x9f08, 18}, - {m68k_op_cmpm_8_ax7 , 0xfff8, 0xbf08, 12}, - {m68k_op_abcd_8_mm_ax7 , 0xfff8, 0xcf08, 18}, - {m68k_op_addx_8_mm_ax7 , 0xfff8, 0xdf08, 18}, - {m68k_op_asr_16_ai , 0xfff8, 0xe0d0, 12}, - {m68k_op_asr_16_pi , 0xfff8, 0xe0d8, 12}, - {m68k_op_asr_16_pd , 0xfff8, 0xe0e0, 14}, - {m68k_op_asr_16_di , 0xfff8, 0xe0e8, 16}, - {m68k_op_asr_16_ix , 0xfff8, 0xe0f0, 18}, - {m68k_op_asl_16_ai , 0xfff8, 0xe1d0, 12}, - {m68k_op_asl_16_pi , 0xfff8, 0xe1d8, 12}, - {m68k_op_asl_16_pd , 0xfff8, 0xe1e0, 14}, - {m68k_op_asl_16_di , 0xfff8, 0xe1e8, 16}, - {m68k_op_asl_16_ix , 0xfff8, 0xe1f0, 18}, - {m68k_op_lsr_16_ai , 0xfff8, 0xe2d0, 12}, - {m68k_op_lsr_16_pi , 0xfff8, 0xe2d8, 12}, - {m68k_op_lsr_16_pd , 0xfff8, 0xe2e0, 14}, - {m68k_op_lsr_16_di , 0xfff8, 0xe2e8, 16}, - {m68k_op_lsr_16_ix , 0xfff8, 0xe2f0, 18}, - {m68k_op_lsl_16_ai , 0xfff8, 0xe3d0, 12}, - {m68k_op_lsl_16_pi , 0xfff8, 0xe3d8, 12}, - {m68k_op_lsl_16_pd , 0xfff8, 0xe3e0, 14}, - {m68k_op_lsl_16_di , 0xfff8, 0xe3e8, 16}, - {m68k_op_lsl_16_ix , 0xfff8, 0xe3f0, 18}, - {m68k_op_roxr_16_ai , 0xfff8, 0xe4d0, 12}, - {m68k_op_roxr_16_pi , 0xfff8, 0xe4d8, 12}, - {m68k_op_roxr_16_pd , 0xfff8, 0xe4e0, 14}, - {m68k_op_roxr_16_di , 0xfff8, 0xe4e8, 16}, - {m68k_op_roxr_16_ix , 0xfff8, 0xe4f0, 18}, - {m68k_op_roxl_16_ai , 0xfff8, 0xe5d0, 12}, - {m68k_op_roxl_16_pi , 0xfff8, 0xe5d8, 12}, - {m68k_op_roxl_16_pd , 0xfff8, 0xe5e0, 14}, - {m68k_op_roxl_16_di , 0xfff8, 0xe5e8, 16}, - {m68k_op_roxl_16_ix , 0xfff8, 0xe5f0, 18}, - {m68k_op_ror_16_ai , 0xfff8, 0xe6d0, 12}, - {m68k_op_ror_16_pi , 0xfff8, 0xe6d8, 12}, - {m68k_op_ror_16_pd , 0xfff8, 0xe6e0, 14}, - {m68k_op_ror_16_di , 0xfff8, 0xe6e8, 16}, - {m68k_op_ror_16_ix , 0xfff8, 0xe6f0, 18}, - {m68k_op_rol_16_ai , 0xfff8, 0xe7d0, 12}, - {m68k_op_rol_16_pi , 0xfff8, 0xe7d8, 12}, - {m68k_op_rol_16_pd , 0xfff8, 0xe7e0, 14}, - {m68k_op_rol_16_di , 0xfff8, 0xe7e8, 16}, - {m68k_op_rol_16_ix , 0xfff8, 0xe7f0, 18}, - {m68k_op_ori_8_pi7 , 0xffff, 0x001f, 16}, - {m68k_op_ori_8_pd7 , 0xffff, 0x0027, 18}, - {m68k_op_ori_8_aw , 0xffff, 0x0038, 20}, - {m68k_op_ori_8_al , 0xffff, 0x0039, 24}, - {m68k_op_ori_16_toc , 0xffff, 0x003c, 20}, - {m68k_op_ori_16_aw , 0xffff, 0x0078, 20}, - {m68k_op_ori_16_al , 0xffff, 0x0079, 24}, - {m68k_op_ori_16_tos , 0xffff, 0x007c, 20}, - {m68k_op_ori_32_aw , 0xffff, 0x00b8, 32}, - {m68k_op_ori_32_al , 0xffff, 0x00b9, 36}, - {m68k_op_andi_8_pi7 , 0xffff, 0x021f, 16}, - {m68k_op_andi_8_pd7 , 0xffff, 0x0227, 18}, - {m68k_op_andi_8_aw , 0xffff, 0x0238, 20}, - {m68k_op_andi_8_al , 0xffff, 0x0239, 24}, - {m68k_op_andi_16_toc , 0xffff, 0x023c, 20}, - {m68k_op_andi_16_aw , 0xffff, 0x0278, 20}, - {m68k_op_andi_16_al , 0xffff, 0x0279, 24}, - {m68k_op_andi_16_tos , 0xffff, 0x027c, 20}, - {m68k_op_andi_32_aw , 0xffff, 0x02b8, 32}, - {m68k_op_andi_32_al , 0xffff, 0x02b9, 36}, - {m68k_op_subi_8_pi7 , 0xffff, 0x041f, 16}, - {m68k_op_subi_8_pd7 , 0xffff, 0x0427, 18}, - {m68k_op_subi_8_aw , 0xffff, 0x0438, 20}, - {m68k_op_subi_8_al , 0xffff, 0x0439, 24}, - {m68k_op_subi_16_aw , 0xffff, 0x0478, 20}, - {m68k_op_subi_16_al , 0xffff, 0x0479, 24}, - {m68k_op_subi_32_aw , 0xffff, 0x04b8, 32}, - {m68k_op_subi_32_al , 0xffff, 0x04b9, 36}, - {m68k_op_addi_8_pi7 , 0xffff, 0x061f, 16}, - {m68k_op_addi_8_pd7 , 0xffff, 0x0627, 18}, - {m68k_op_addi_8_aw , 0xffff, 0x0638, 20}, - {m68k_op_addi_8_al , 0xffff, 0x0639, 24}, - {m68k_op_addi_16_aw , 0xffff, 0x0678, 20}, - {m68k_op_addi_16_al , 0xffff, 0x0679, 24}, - {m68k_op_addi_32_aw , 0xffff, 0x06b8, 32}, - {m68k_op_addi_32_al , 0xffff, 0x06b9, 36}, - {m68k_op_btst_8_s_pi7 , 0xffff, 0x081f, 12}, - {m68k_op_btst_8_s_pd7 , 0xffff, 0x0827, 14}, - {m68k_op_btst_8_s_aw , 0xffff, 0x0838, 16}, - {m68k_op_btst_8_s_al , 0xffff, 0x0839, 20}, - {m68k_op_btst_8_s_pcdi , 0xffff, 0x083a, 16}, - {m68k_op_btst_8_s_pcix , 0xffff, 0x083b, 18}, - {m68k_op_bchg_8_s_pi7 , 0xffff, 0x085f, 16}, - {m68k_op_bchg_8_s_pd7 , 0xffff, 0x0867, 18}, - {m68k_op_bchg_8_s_aw , 0xffff, 0x0878, 20}, - {m68k_op_bchg_8_s_al , 0xffff, 0x0879, 24}, - {m68k_op_bclr_8_s_pi7 , 0xffff, 0x089f, 16}, - {m68k_op_bclr_8_s_pd7 , 0xffff, 0x08a7, 18}, - {m68k_op_bclr_8_s_aw , 0xffff, 0x08b8, 20}, - {m68k_op_bclr_8_s_al , 0xffff, 0x08b9, 24}, - {m68k_op_bset_8_s_pi7 , 0xffff, 0x08df, 16}, - {m68k_op_bset_8_s_pd7 , 0xffff, 0x08e7, 18}, - {m68k_op_bset_8_s_aw , 0xffff, 0x08f8, 20}, - {m68k_op_bset_8_s_al , 0xffff, 0x08f9, 24}, - {m68k_op_eori_8_pi7 , 0xffff, 0x0a1f, 16}, - {m68k_op_eori_8_pd7 , 0xffff, 0x0a27, 18}, - {m68k_op_eori_8_aw , 0xffff, 0x0a38, 20}, - {m68k_op_eori_8_al , 0xffff, 0x0a39, 24}, - {m68k_op_eori_16_toc , 0xffff, 0x0a3c, 20}, - {m68k_op_eori_16_aw , 0xffff, 0x0a78, 20}, - {m68k_op_eori_16_al , 0xffff, 0x0a79, 24}, - {m68k_op_eori_16_tos , 0xffff, 0x0a7c, 20}, - {m68k_op_eori_32_aw , 0xffff, 0x0ab8, 32}, - {m68k_op_eori_32_al , 0xffff, 0x0ab9, 36}, - {m68k_op_cmpi_8_pi7 , 0xffff, 0x0c1f, 12}, - {m68k_op_cmpi_8_pd7 , 0xffff, 0x0c27, 14}, - {m68k_op_cmpi_8_aw , 0xffff, 0x0c38, 16}, - {m68k_op_cmpi_8_al , 0xffff, 0x0c39, 20}, - {m68k_op_cmpi_16_aw , 0xffff, 0x0c78, 16}, - {m68k_op_cmpi_16_al , 0xffff, 0x0c79, 20}, - {m68k_op_cmpi_32_aw , 0xffff, 0x0cb8, 24}, - {m68k_op_cmpi_32_al , 0xffff, 0x0cb9, 28}, - {m68k_op_move_8_aw_pi7 , 0xffff, 0x11df, 16}, - {m68k_op_move_8_aw_pd7 , 0xffff, 0x11e7, 18}, - {m68k_op_move_8_aw_aw , 0xffff, 0x11f8, 20}, - {m68k_op_move_8_aw_al , 0xffff, 0x11f9, 24}, - {m68k_op_move_8_aw_pcdi , 0xffff, 0x11fa, 20}, - {m68k_op_move_8_aw_pcix , 0xffff, 0x11fb, 22}, - {m68k_op_move_8_aw_i , 0xffff, 0x11fc, 16}, - {m68k_op_move_8_al_pi7 , 0xffff, 0x13df, 20}, - {m68k_op_move_8_al_pd7 , 0xffff, 0x13e7, 22}, - {m68k_op_move_8_al_aw , 0xffff, 0x13f8, 24}, - {m68k_op_move_8_al_al , 0xffff, 0x13f9, 28}, - {m68k_op_move_8_al_pcdi , 0xffff, 0x13fa, 24}, - {m68k_op_move_8_al_pcix , 0xffff, 0x13fb, 26}, - {m68k_op_move_8_al_i , 0xffff, 0x13fc, 20}, - {m68k_op_move_8_pi7_pi7 , 0xffff, 0x1edf, 12}, - {m68k_op_move_8_pi7_pd7 , 0xffff, 0x1ee7, 14}, - {m68k_op_move_8_pi7_aw , 0xffff, 0x1ef8, 16}, - {m68k_op_move_8_pi7_al , 0xffff, 0x1ef9, 20}, - {m68k_op_move_8_pi7_pcdi , 0xffff, 0x1efa, 16}, - {m68k_op_move_8_pi7_pcix , 0xffff, 0x1efb, 18}, - {m68k_op_move_8_pi7_i , 0xffff, 0x1efc, 12}, - {m68k_op_move_8_pd7_pi7 , 0xffff, 0x1f1f, 12}, - {m68k_op_move_8_pd7_pd7 , 0xffff, 0x1f27, 14}, - {m68k_op_move_8_pd7_aw , 0xffff, 0x1f38, 16}, - {m68k_op_move_8_pd7_al , 0xffff, 0x1f39, 20}, - {m68k_op_move_8_pd7_pcdi , 0xffff, 0x1f3a, 16}, - {m68k_op_move_8_pd7_pcix , 0xffff, 0x1f3b, 18}, - {m68k_op_move_8_pd7_i , 0xffff, 0x1f3c, 12}, - {m68k_op_move_32_aw_aw , 0xffff, 0x21f8, 28}, - {m68k_op_move_32_aw_al , 0xffff, 0x21f9, 32}, - {m68k_op_move_32_aw_pcdi , 0xffff, 0x21fa, 28}, - {m68k_op_move_32_aw_pcix , 0xffff, 0x21fb, 30}, - {m68k_op_move_32_aw_i , 0xffff, 0x21fc, 24}, - {m68k_op_move_32_al_aw , 0xffff, 0x23f8, 32}, - {m68k_op_move_32_al_al , 0xffff, 0x23f9, 36}, - {m68k_op_move_32_al_pcdi , 0xffff, 0x23fa, 32}, - {m68k_op_move_32_al_pcix , 0xffff, 0x23fb, 34}, - {m68k_op_move_32_al_i , 0xffff, 0x23fc, 28}, - {m68k_op_move_16_aw_aw , 0xffff, 0x31f8, 20}, - {m68k_op_move_16_aw_al , 0xffff, 0x31f9, 24}, - {m68k_op_move_16_aw_pcdi , 0xffff, 0x31fa, 20}, - {m68k_op_move_16_aw_pcix , 0xffff, 0x31fb, 22}, - {m68k_op_move_16_aw_i , 0xffff, 0x31fc, 16}, - {m68k_op_move_16_al_aw , 0xffff, 0x33f8, 24}, - {m68k_op_move_16_al_al , 0xffff, 0x33f9, 28}, - {m68k_op_move_16_al_pcdi , 0xffff, 0x33fa, 24}, - {m68k_op_move_16_al_pcix , 0xffff, 0x33fb, 26}, - {m68k_op_move_16_al_i , 0xffff, 0x33fc, 20}, - {m68k_op_negx_8_pi7 , 0xffff, 0x401f, 12}, - {m68k_op_negx_8_pd7 , 0xffff, 0x4027, 14}, - {m68k_op_negx_8_aw , 0xffff, 0x4038, 16}, - {m68k_op_negx_8_al , 0xffff, 0x4039, 20}, - {m68k_op_negx_16_aw , 0xffff, 0x4078, 16}, - {m68k_op_negx_16_al , 0xffff, 0x4079, 20}, - {m68k_op_negx_32_aw , 0xffff, 0x40b8, 24}, - {m68k_op_negx_32_al , 0xffff, 0x40b9, 28}, - {m68k_op_move_16_frs_aw , 0xffff, 0x40f8, 16}, - {m68k_op_move_16_frs_al , 0xffff, 0x40f9, 20}, - {m68k_op_clr_8_pi7 , 0xffff, 0x421f, 12}, - {m68k_op_clr_8_pd7 , 0xffff, 0x4227, 14}, - {m68k_op_clr_8_aw , 0xffff, 0x4238, 16}, - {m68k_op_clr_8_al , 0xffff, 0x4239, 20}, - {m68k_op_clr_16_aw , 0xffff, 0x4278, 16}, - {m68k_op_clr_16_al , 0xffff, 0x4279, 20}, - {m68k_op_clr_32_aw , 0xffff, 0x42b8, 24}, - {m68k_op_clr_32_al , 0xffff, 0x42b9, 28}, - {m68k_op_neg_8_pi7 , 0xffff, 0x441f, 12}, - {m68k_op_neg_8_pd7 , 0xffff, 0x4427, 14}, - {m68k_op_neg_8_aw , 0xffff, 0x4438, 16}, - {m68k_op_neg_8_al , 0xffff, 0x4439, 20}, - {m68k_op_neg_16_aw , 0xffff, 0x4478, 16}, - {m68k_op_neg_16_al , 0xffff, 0x4479, 20}, - {m68k_op_neg_32_aw , 0xffff, 0x44b8, 24}, - {m68k_op_neg_32_al , 0xffff, 0x44b9, 28}, - {m68k_op_move_16_toc_aw , 0xffff, 0x44f8, 20}, - {m68k_op_move_16_toc_al , 0xffff, 0x44f9, 24}, - {m68k_op_move_16_toc_pcdi , 0xffff, 0x44fa, 20}, - {m68k_op_move_16_toc_pcix , 0xffff, 0x44fb, 22}, - {m68k_op_move_16_toc_i , 0xffff, 0x44fc, 16}, - {m68k_op_not_8_pi7 , 0xffff, 0x461f, 12}, - {m68k_op_not_8_pd7 , 0xffff, 0x4627, 14}, - {m68k_op_not_8_aw , 0xffff, 0x4638, 16}, - {m68k_op_not_8_al , 0xffff, 0x4639, 20}, - {m68k_op_not_16_aw , 0xffff, 0x4678, 16}, - {m68k_op_not_16_al , 0xffff, 0x4679, 20}, - {m68k_op_not_32_aw , 0xffff, 0x46b8, 24}, - {m68k_op_not_32_al , 0xffff, 0x46b9, 28}, - {m68k_op_move_16_tos_aw , 0xffff, 0x46f8, 20}, - {m68k_op_move_16_tos_al , 0xffff, 0x46f9, 24}, - {m68k_op_move_16_tos_pcdi , 0xffff, 0x46fa, 20}, - {m68k_op_move_16_tos_pcix , 0xffff, 0x46fb, 22}, - {m68k_op_move_16_tos_i , 0xffff, 0x46fc, 16}, - {m68k_op_nbcd_8_pi7 , 0xffff, 0x481f, 12}, - {m68k_op_nbcd_8_pd7 , 0xffff, 0x4827, 14}, - {m68k_op_nbcd_8_aw , 0xffff, 0x4838, 16}, - {m68k_op_nbcd_8_al , 0xffff, 0x4839, 20}, - {m68k_op_pea_32_aw , 0xffff, 0x4878, 16}, - {m68k_op_pea_32_al , 0xffff, 0x4879, 20}, - {m68k_op_pea_32_pcdi , 0xffff, 0x487a, 16}, - {m68k_op_pea_32_pcix , 0xffff, 0x487b, 20}, - {m68k_op_movem_16_re_aw , 0xffff, 0x48b8, 12}, - {m68k_op_movem_16_re_al , 0xffff, 0x48b9, 16}, - {m68k_op_movem_32_re_aw , 0xffff, 0x48f8, 12}, - {m68k_op_movem_32_re_al , 0xffff, 0x48f9, 16}, - {m68k_op_tst_8_pi7 , 0xffff, 0x4a1f, 8}, - {m68k_op_tst_8_pd7 , 0xffff, 0x4a27, 10}, - {m68k_op_tst_8_aw , 0xffff, 0x4a38, 12}, - {m68k_op_tst_8_al , 0xffff, 0x4a39, 16}, - {m68k_op_tst_16_aw , 0xffff, 0x4a78, 12}, - {m68k_op_tst_16_al , 0xffff, 0x4a79, 16}, - {m68k_op_tst_32_aw , 0xffff, 0x4ab8, 16}, - {m68k_op_tst_32_al , 0xffff, 0x4ab9, 20}, - {m68k_op_tas_8_pi7 , 0xffff, 0x4adf, 14}, /* see Yacht.txt */ - {m68k_op_tas_8_pd7 , 0xffff, 0x4ae7, 16}, /* see Yacht.txt */ - {m68k_op_tas_8_aw , 0xffff, 0x4af8, 18}, /* see Yacht.txt */ - {m68k_op_tas_8_al , 0xffff, 0x4af9, 22}, /* see Yacht.txt */ - {m68k_op_illegal , 0xffff, 0x4afc, 4}, - {m68k_op_movem_16_er_aw , 0xffff, 0x4cb8, 16}, - {m68k_op_movem_16_er_al , 0xffff, 0x4cb9, 20}, - {m68k_op_movem_16_er_pcdi , 0xffff, 0x4cba, 16}, - {m68k_op_movem_16_er_pcix , 0xffff, 0x4cbb, 18}, - {m68k_op_movem_32_er_aw , 0xffff, 0x4cf8, 16}, - {m68k_op_movem_32_er_al , 0xffff, 0x4cf9, 20}, - {m68k_op_movem_32_er_pcdi , 0xffff, 0x4cfa, 16}, - {m68k_op_movem_32_er_pcix , 0xffff, 0x4cfb, 18}, - {m68k_op_link_16_a7 , 0xffff, 0x4e57, 16}, - {m68k_op_unlk_32_a7 , 0xffff, 0x4e5f, 12}, - {m68k_op_reset , 0xffff, 0x4e70, 0}, - {m68k_op_nop , 0xffff, 0x4e71, 4}, - {m68k_op_stop , 0xffff, 0x4e72, 4}, - {m68k_op_rte_32 , 0xffff, 0x4e73, 20}, - {m68k_op_rts_32 , 0xffff, 0x4e75, 16}, - {m68k_op_trapv , 0xffff, 0x4e76, 4}, - {m68k_op_rtr_32 , 0xffff, 0x4e77, 20}, - {m68k_op_jsr_32_aw , 0xffff, 0x4eb8, 18}, - {m68k_op_jsr_32_al , 0xffff, 0x4eb9, 20}, - {m68k_op_jsr_32_pcdi , 0xffff, 0x4eba, 18}, - {m68k_op_jsr_32_pcix , 0xffff, 0x4ebb, 22}, - {m68k_op_jmp_32_aw , 0xffff, 0x4ef8, 10}, - {m68k_op_jmp_32_al , 0xffff, 0x4ef9, 12}, - {m68k_op_jmp_32_pcdi , 0xffff, 0x4efa, 10}, - {m68k_op_jmp_32_pcix , 0xffff, 0x4efb, 14}, - {m68k_op_st_8_pi7 , 0xffff, 0x50df, 12}, - {m68k_op_st_8_pd7 , 0xffff, 0x50e7, 14}, - {m68k_op_st_8_aw , 0xffff, 0x50f8, 16}, - {m68k_op_st_8_al , 0xffff, 0x50f9, 20}, - {m68k_op_sf_8_pi7 , 0xffff, 0x51df, 12}, - {m68k_op_sf_8_pd7 , 0xffff, 0x51e7, 14}, - {m68k_op_sf_8_aw , 0xffff, 0x51f8, 16}, - {m68k_op_sf_8_al , 0xffff, 0x51f9, 20}, - {m68k_op_shi_8_pi7 , 0xffff, 0x52df, 12}, - {m68k_op_shi_8_pd7 , 0xffff, 0x52e7, 14}, - {m68k_op_shi_8_aw , 0xffff, 0x52f8, 16}, - {m68k_op_shi_8_al , 0xffff, 0x52f9, 20}, - {m68k_op_sls_8_pi7 , 0xffff, 0x53df, 12}, - {m68k_op_sls_8_pd7 , 0xffff, 0x53e7, 14}, - {m68k_op_sls_8_aw , 0xffff, 0x53f8, 16}, - {m68k_op_sls_8_al , 0xffff, 0x53f9, 20}, - {m68k_op_scc_8_pi7 , 0xffff, 0x54df, 12}, - {m68k_op_scc_8_pd7 , 0xffff, 0x54e7, 14}, - {m68k_op_scc_8_aw , 0xffff, 0x54f8, 16}, - {m68k_op_scc_8_al , 0xffff, 0x54f9, 20}, - {m68k_op_scs_8_pi7 , 0xffff, 0x55df, 12}, - {m68k_op_scs_8_pd7 , 0xffff, 0x55e7, 14}, - {m68k_op_scs_8_aw , 0xffff, 0x55f8, 16}, - {m68k_op_scs_8_al , 0xffff, 0x55f9, 20}, - {m68k_op_sne_8_pi7 , 0xffff, 0x56df, 12}, - {m68k_op_sne_8_pd7 , 0xffff, 0x56e7, 14}, - {m68k_op_sne_8_aw , 0xffff, 0x56f8, 16}, - {m68k_op_sne_8_al , 0xffff, 0x56f9, 20}, - {m68k_op_seq_8_pi7 , 0xffff, 0x57df, 12}, - {m68k_op_seq_8_pd7 , 0xffff, 0x57e7, 14}, - {m68k_op_seq_8_aw , 0xffff, 0x57f8, 16}, - {m68k_op_seq_8_al , 0xffff, 0x57f9, 20}, - {m68k_op_svc_8_pi7 , 0xffff, 0x58df, 12}, - {m68k_op_svc_8_pd7 , 0xffff, 0x58e7, 14}, - {m68k_op_svc_8_aw , 0xffff, 0x58f8, 16}, - {m68k_op_svc_8_al , 0xffff, 0x58f9, 20}, - {m68k_op_svs_8_pi7 , 0xffff, 0x59df, 12}, - {m68k_op_svs_8_pd7 , 0xffff, 0x59e7, 14}, - {m68k_op_svs_8_aw , 0xffff, 0x59f8, 16}, - {m68k_op_svs_8_al , 0xffff, 0x59f9, 20}, - {m68k_op_spl_8_pi7 , 0xffff, 0x5adf, 12}, - {m68k_op_spl_8_pd7 , 0xffff, 0x5ae7, 14}, - {m68k_op_spl_8_aw , 0xffff, 0x5af8, 16}, - {m68k_op_spl_8_al , 0xffff, 0x5af9, 20}, - {m68k_op_smi_8_pi7 , 0xffff, 0x5bdf, 12}, - {m68k_op_smi_8_pd7 , 0xffff, 0x5be7, 14}, - {m68k_op_smi_8_aw , 0xffff, 0x5bf8, 16}, - {m68k_op_smi_8_al , 0xffff, 0x5bf9, 20}, - {m68k_op_sge_8_pi7 , 0xffff, 0x5cdf, 12}, - {m68k_op_sge_8_pd7 , 0xffff, 0x5ce7, 14}, - {m68k_op_sge_8_aw , 0xffff, 0x5cf8, 16}, - {m68k_op_sge_8_al , 0xffff, 0x5cf9, 20}, - {m68k_op_slt_8_pi7 , 0xffff, 0x5ddf, 12}, - {m68k_op_slt_8_pd7 , 0xffff, 0x5de7, 14}, - {m68k_op_slt_8_aw , 0xffff, 0x5df8, 16}, - {m68k_op_slt_8_al , 0xffff, 0x5df9, 20}, - {m68k_op_sgt_8_pi7 , 0xffff, 0x5edf, 12}, - {m68k_op_sgt_8_pd7 , 0xffff, 0x5ee7, 14}, - {m68k_op_sgt_8_aw , 0xffff, 0x5ef8, 16}, - {m68k_op_sgt_8_al , 0xffff, 0x5ef9, 20}, - {m68k_op_sle_8_pi7 , 0xffff, 0x5fdf, 12}, - {m68k_op_sle_8_pd7 , 0xffff, 0x5fe7, 14}, - {m68k_op_sle_8_aw , 0xffff, 0x5ff8, 16}, - {m68k_op_sle_8_al , 0xffff, 0x5ff9, 20}, - {m68k_op_bra_16 , 0xffff, 0x6000, 10}, - {m68k_op_bra_32 , 0xffff, 0x60ff, 10}, - {m68k_op_bsr_16 , 0xffff, 0x6100, 18}, - {m68k_op_bsr_32 , 0xffff, 0x61ff, 18}, - {m68k_op_bhi_16 , 0xffff, 0x6200, 10}, - {m68k_op_bhi_32 , 0xffff, 0x62ff, 10}, - {m68k_op_bls_16 , 0xffff, 0x6300, 10}, - {m68k_op_bls_32 , 0xffff, 0x63ff, 10}, - {m68k_op_bcc_16 , 0xffff, 0x6400, 10}, - {m68k_op_bcc_32 , 0xffff, 0x64ff, 10}, - {m68k_op_bcs_16 , 0xffff, 0x6500, 10}, - {m68k_op_bcs_32 , 0xffff, 0x65ff, 10}, - {m68k_op_bne_16 , 0xffff, 0x6600, 10}, - {m68k_op_bne_32 , 0xffff, 0x66ff, 10}, - {m68k_op_beq_16 , 0xffff, 0x6700, 10}, - {m68k_op_beq_32 , 0xffff, 0x67ff, 10}, - {m68k_op_bvc_16 , 0xffff, 0x6800, 10}, - {m68k_op_bvc_32 , 0xffff, 0x68ff, 10}, - {m68k_op_bvs_16 , 0xffff, 0x6900, 10}, - {m68k_op_bvs_32 , 0xffff, 0x69ff, 10}, - {m68k_op_bpl_16 , 0xffff, 0x6a00, 10}, - {m68k_op_bpl_32 , 0xffff, 0x6aff, 10}, - {m68k_op_bmi_16 , 0xffff, 0x6b00, 10}, - {m68k_op_bmi_32 , 0xffff, 0x6bff, 10}, - {m68k_op_bge_16 , 0xffff, 0x6c00, 10}, - {m68k_op_bge_32 , 0xffff, 0x6cff, 10}, - {m68k_op_blt_16 , 0xffff, 0x6d00, 10}, - {m68k_op_blt_32 , 0xffff, 0x6dff, 10}, - {m68k_op_bgt_16 , 0xffff, 0x6e00, 10}, - {m68k_op_bgt_32 , 0xffff, 0x6eff, 10}, - {m68k_op_ble_16 , 0xffff, 0x6f00, 10}, - {m68k_op_ble_32 , 0xffff, 0x6fff, 10}, - {m68k_op_sbcd_8_mm_axy7 , 0xffff, 0x8f0f, 18}, - {m68k_op_subx_8_mm_axy7 , 0xffff, 0x9f0f, 18}, - {m68k_op_cmpm_8_axy7 , 0xffff, 0xbf0f, 12}, - {m68k_op_abcd_8_mm_axy7 , 0xffff, 0xcf0f, 18}, - {m68k_op_addx_8_mm_axy7 , 0xffff, 0xdf0f, 18}, - {m68k_op_asr_16_aw , 0xffff, 0xe0f8, 16}, - {m68k_op_asr_16_al , 0xffff, 0xe0f9, 20}, - {m68k_op_asl_16_aw , 0xffff, 0xe1f8, 16}, - {m68k_op_asl_16_al , 0xffff, 0xe1f9, 20}, - {m68k_op_lsr_16_aw , 0xffff, 0xe2f8, 16}, - {m68k_op_lsr_16_al , 0xffff, 0xe2f9, 20}, - {m68k_op_lsl_16_aw , 0xffff, 0xe3f8, 16}, - {m68k_op_lsl_16_al , 0xffff, 0xe3f9, 20}, - {m68k_op_roxr_16_aw , 0xffff, 0xe4f8, 16}, - {m68k_op_roxr_16_al , 0xffff, 0xe4f9, 20}, - {m68k_op_roxl_16_aw , 0xffff, 0xe5f8, 16}, - {m68k_op_roxl_16_al , 0xffff, 0xe5f9, 20}, - {m68k_op_ror_16_aw , 0xffff, 0xe6f8, 16}, - {m68k_op_ror_16_al , 0xffff, 0xe6f9, 20}, - {m68k_op_rol_16_aw , 0xffff, 0xe7f8, 16}, - {m68k_op_rol_16_al , 0xffff, 0xe7f9, 20}, - {0, 0, 0, 0} -}; - - -/* Build the opcode handler jump table */ -static void m68ki_build_opcode_table(void) -{ - const opcode_handler_struct *ostruct; - int instr; - int i; - int j; - - for(i = 0; i < 0x10000; i++) - { - /* default to illegal */ - m68ki_instruction_jump_table[i] = m68k_op_illegal; - m68ki_cycles[i] = 4; - } - - ostruct = &m68k_opcode_handler_table[0]; - while(ostruct->mask != 0xff00) - { - for(i = 0;i < 0x10000;i++) - { - if((i & ostruct->mask) == ostruct->match) - { - m68ki_instruction_jump_table[i] = ostruct->opcode_handler; - m68ki_cycles[i] = ostruct->cycles * MUL; - } - } - ostruct++; - } - while(ostruct->mask == 0xff00) - { - for(i = 0;i <= 0xff;i++) - { - m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler; - m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL; - } - ostruct++; - } - while(ostruct->mask == 0xf1f8) - { - for(i = 0;i < 8;i++) - { - for(j = 0;j < 8;j++) - { - instr = ostruct->match | (i << 9) | j; - m68ki_instruction_jump_table[instr] = ostruct->opcode_handler; - m68ki_cycles[instr] = ostruct->cycles * MUL; - } - } - ostruct++; - } - while(ostruct->mask == 0xfff0) - { - for(i = 0;i <= 0x0f;i++) - { - m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler; - m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL; - } - ostruct++; - } - while(ostruct->mask == 0xf1ff) - { - for(i = 0;i <= 0x07;i++) - { - m68ki_instruction_jump_table[ostruct->match | (i << 9)] = ostruct->opcode_handler; - m68ki_cycles[ostruct->match | (i << 9)] = ostruct->cycles * MUL; - } - ostruct++; - } - while(ostruct->mask == 0xfff8) - { - for(i = 0;i <= 0x07;i++) - { - m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler; - m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL; - } - ostruct++; - } - while(ostruct->mask == 0xffff) - { - m68ki_instruction_jump_table[ostruct->match] = ostruct->opcode_handler; - m68ki_cycles[ostruct->match] = ostruct->cycles * MUL; - ostruct++; - } -} - -#endif - -/* ======================================================================== */ -/* ============================== END OF FILE ============================= */ -/* ======================================================================== */ - - + +/* ======================================================================== */ +/* ============== CYCLE-ACCURATE DIV/MUL EXECUTION ======================== */ +/* ======================================================================== */ + +INLINE void UseDivuCycles(uint32 dst, uint32 src) +{ + int i; + + /* minimum cycle time */ + uint mcycles = 38 * MUL; + + /* 16-bit divisor */ + src <<= 16; + + /* 16-bit dividend */ + for (i=0; i<15; i++) + { + /* check if carry bit set */ + if ((sint32) dst < 0) + { + /* shift dividend and apply divisor */ + dst <<= 1; + dst -= src; + } + else + { + /* shift dividend and add two cycles */ + dst <<= 1; + mcycles += (2 * MUL); + + if (dst >= src) + { + /* apply divisor and remove one cycle */ + dst -= src; + mcycles -= 1 * MUL; + } + } + } + + USE_CYCLES(mcycles << 1); +} + +INLINE void UseDivsCycles(sint32 dst, sint16 src) +{ + /* minimum cycle time */ + uint mcycles = 6 * MUL; + + /* negative dividend */ + if (dst < 0) mcycles += 1 * MUL; + + if ((abs(dst) >> 16) < abs(src)) + { + int i; + + /* absolute quotient */ + uint32 quotient = abs(dst) / abs(src); + + /* add default cycle time */ + mcycles += (55 * MUL); + + /* positive divisor */ + if (src >= 0) + { + /* check dividend sign */ + if (dst >= 0) mcycles -= 1 * MUL; + else mcycles += 1 * MUL; + } + + /* check higher 15-bits of quotient */ + for (i=0; i<15; i++) + { + quotient >>= 1; + if (!(quotient & 1)) mcycles += 1 * MUL; + } + } + else + { + /* absolute overflow */ + mcycles += (2 * MUL); + } + + USE_CYCLES(mcycles << 1); +} + +INLINE void UseMuluCycles(uint16 src) +{ + /* minimum cycle time */ + uint mcycles = 38 * MUL; + + /* count number of bits set to 1 */ + while (src) + { + if (src & 1) mcycles += (2 * MUL); + src >>= 1; + } + + /* 38 + 2*N */ + USE_CYCLES(mcycles); +} + +INLINE void UseMulsCycles(sint16 src) +{ + /* minimum cycle time */ + uint mcycles = 38 * MUL; + + /* detect 01 or 10 patterns */ + sint32 tmp = src << 1; + tmp = (tmp ^ src) & 0xFFFF; + + /* count number of bits set to 1 */ + while (tmp) + { + if (tmp & 1) mcycles += (2 * MUL); + tmp >>= 1; + } + + /* 38 + 2*N */ + USE_CYCLES(mcycles); +} + + +/* ======================================================================== */ +/* ========================= INSTRUCTION HANDLERS ========================= */ +/* ======================================================================== */ + + +static void m68k_op_1010(void) +{ + m68ki_exception_1010(); +} + + +static void m68k_op_1111(void) +{ + m68ki_exception_1111(); +} + + +static void m68k_op_abcd_8_rr(void) +{ + uint* r_dst = &DX; + uint src = DY; + uint dst = *r_dst; + uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); + uint corf = 0; + + if(res > 9) + corf = 6; + res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); + FLAG_V = ~res; /* Undefined V behavior */ + + res += corf; + FLAG_X = FLAG_C = (res > 0x9f) << 8; + if(FLAG_C) + res -= 0xa0; + + FLAG_V &= res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; +} + + +static void m68k_op_abcd_8_mm_ax7(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); + uint corf = 0; + + if(res > 9) + corf = 6; + res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); + FLAG_V = ~res; /* Undefined V behavior */ + + res += corf; + FLAG_X = FLAG_C = (res > 0x9f) << 8; + if(FLAG_C) + res -= 0xa0; + + FLAG_V &= res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_abcd_8_mm_ay7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); + uint corf = 0; + + if(res > 9) + corf = 6; + res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); + FLAG_V = ~res; /* Undefined V behavior */ + + res += corf; + FLAG_X = FLAG_C = (res > 0x9f) << 8; + if(FLAG_C) + res -= 0xa0; + + FLAG_V &= res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_abcd_8_mm_axy7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); + uint corf = 0; + + if(res > 9) + corf = 6; + res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); + FLAG_V = ~res; /* Undefined V behavior */ + + res += corf; + FLAG_X = FLAG_C = (res > 0x9f) << 8; + if(FLAG_C) + res -= 0xa0; + + FLAG_V &= res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_abcd_8_mm(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(); + uint corf = 0; + + if(res > 9) + corf = 6; + res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst); + FLAG_V = ~res; /* Undefined V behavior */ + + res += corf; + FLAG_X = FLAG_C = (res > 0x9f) << 8; + if(FLAG_C) + res -= 0xa0; + + FLAG_V &= res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_add_8_er_d(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_8(DY); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_pi7(void) +{ + uint* r_dst = &DX; + uint src = OPER_A7_PI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_pd7(void) +{ + uint* r_dst = &DX; + uint src = OPER_A7_PD_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_8_er_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_d(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(DY); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_a(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(AY); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_16_er_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_add_32_er_d(void) +{ + uint* r_dst = &DX; + uint src = DY; + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_a(void) +{ + uint* r_dst = &DX; + uint src = AY; + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_32_er_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_add_8_re_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_di(void) +{ + uint ea = EA_AY_DI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_aw(void) +{ + uint ea = EA_AW_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_8_re_al(void) +{ + uint ea = EA_AL_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_add_16_re_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_add_16_re_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_add_16_re_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_add_16_re_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_add_16_re_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_add_16_re_aw(void) +{ + uint ea = EA_AW_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_add_16_re_al(void) +{ + uint ea = EA_AL_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_add_32_re_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_add_32_re_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_add_32_re_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_add_32_re_di(void) +{ + uint ea = EA_AY_DI_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_add_32_re_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_add_32_re_aw(void) +{ + uint ea = EA_AW_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_add_32_re_al(void) +{ + uint ea = EA_AL_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_adda_16_d(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY)); +} + + +static void m68k_op_adda_16_a(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY)); +} + + +static void m68k_op_adda_16_ai(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_AI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_pi(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_PI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_pd(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_PD_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_di(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_DI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_ix(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_IX_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_aw(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AW_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_al(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AL_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_pcdi(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_PCDI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_pcix(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_PCIX_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_16_i(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_I_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + src); +} + + +static void m68k_op_adda_32_d(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY); +} + + +static void m68k_op_adda_32_a(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY); +} + + +static void m68k_op_adda_32_ai(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_AY_AI_32() + *r_dst); +} + + +static void m68k_op_adda_32_pi(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_AY_PI_32() + *r_dst); +} + + +static void m68k_op_adda_32_pd(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_AY_PD_32() + *r_dst); +} + + +static void m68k_op_adda_32_di(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_AY_DI_32() + *r_dst); +} + + +static void m68k_op_adda_32_ix(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_AY_IX_32() + *r_dst); +} + + +static void m68k_op_adda_32_aw(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_AW_32() + *r_dst); +} + + +static void m68k_op_adda_32_al(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_AL_32() + *r_dst); +} + + +static void m68k_op_adda_32_pcdi(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_PCDI_32() + *r_dst); +} + + +static void m68k_op_adda_32_pcix(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_PCIX_32() + *r_dst); +} + + +static void m68k_op_adda_32_i(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(OPER_I_32() + *r_dst); +} + + +static void m68k_op_addi_8_d(void) +{ + uint* r_dst = &DY; + uint src = OPER_I_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_addi_8_ai(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_AI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_pi(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_pi7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_pd(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_pd7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_di(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_DI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_ix(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_IX_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_aw(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AW_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_8_al(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AL_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addi_16_d(void) +{ + uint* r_dst = &DY; + uint src = OPER_I_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_addi_16_ai(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_AI_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addi_16_pi(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PI_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addi_16_pd(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PD_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addi_16_di(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_DI_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addi_16_ix(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_IX_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addi_16_aw(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AW_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addi_16_al(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AL_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addi_32_d(void) +{ + uint* r_dst = &DY; + uint src = OPER_I_32(); + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_addi_32_ai(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_AI_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addi_32_pi(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PI_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addi_32_pd(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PD_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addi_32_di(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_DI_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addi_32_ix(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_IX_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addi_32_aw(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AW_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addi_32_al(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AL_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_d(void) +{ + uint* r_dst = &DY; + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_addq_8_ai(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_AI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_pi(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_pi7(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_A7_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_pd(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_pd7(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_di(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_DI_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_ix(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_IX_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_aw(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AW_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_8_al(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AL_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst; + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_addq_16_d(void) +{ + uint* r_dst = &DY; + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_addq_16_a(void) +{ + uint* r_dst = &AY; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1); +} + + +static void m68k_op_addq_16_ai(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_AI_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addq_16_pi(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PI_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addq_16_pd(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PD_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addq_16_di(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_DI_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addq_16_ix(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_IX_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addq_16_aw(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AW_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addq_16_al(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AL_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst; + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_addq_32_d(void) +{ + uint* r_dst = &DY; + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint dst = *r_dst; + uint res = src + dst; + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_addq_32_a(void) +{ + uint* r_dst = &AY; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1); +} + + +static void m68k_op_addq_32_ai(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_AI_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addq_32_pi(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PI_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addq_32_pd(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PD_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addq_32_di(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_DI_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addq_32_ix(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_IX_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addq_32_aw(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AW_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addq_32_al(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AL_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst; + + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_addx_8_rr(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_8(DY); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; +} + + +static void m68k_op_addx_16_rr(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(DY); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; +} + + +static void m68k_op_addx_32_rr(void) +{ + uint* r_dst = &DX; + uint src = DY; + uint dst = *r_dst; + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + *r_dst = res; +} + + +static void m68k_op_addx_8_mm_ax7(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_addx_8_mm_ay7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_addx_8_mm_axy7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_addx_8_mm(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_V = VFLAG_ADD_8(src, dst, res); + FLAG_X = FLAG_C = CFLAG_8(res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_addx_16_mm(void) +{ + uint src = OPER_AY_PD_16(); + uint ea = EA_AX_PD_16(); + uint dst = m68ki_read_16(ea); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_V = VFLAG_ADD_16(src, dst, res); + FLAG_X = FLAG_C = CFLAG_16(res); + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_addx_32_mm(void) +{ + uint src = OPER_AY_PD_32(); + uint ea = EA_AX_PD_32(); + uint dst = m68ki_read_32(ea); + uint res = src + dst + XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_ADD_32(src, dst, res); + FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res); + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_and_8_er_d(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (DY | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_ai(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_AI_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_pi(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PI_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_pi7(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PI_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_pd(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PD_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_pd7(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PD_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_di(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_DI_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_ix(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_IX_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_aw(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AW_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_al(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AL_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_pcdi(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCDI_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_pcix(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCIX_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_er_i(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_I_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_d(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (DY | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_ai(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_AI_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_pi(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PI_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_pd(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PD_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_di(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_DI_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_ix(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_IX_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_aw(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AW_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_al(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AL_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_pcdi(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCDI_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_pcix(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCIX_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_16_er_i(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_I_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_d(void) +{ + FLAG_Z = DX &= DY; + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_ai(void) +{ + FLAG_Z = DX &= OPER_AY_AI_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_pi(void) +{ + FLAG_Z = DX &= OPER_AY_PI_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_pd(void) +{ + FLAG_Z = DX &= OPER_AY_PD_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_di(void) +{ + FLAG_Z = DX &= OPER_AY_DI_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_ix(void) +{ + FLAG_Z = DX &= OPER_AY_IX_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_aw(void) +{ + FLAG_Z = DX &= OPER_AW_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_al(void) +{ + FLAG_Z = DX &= OPER_AL_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_pcdi(void) +{ + FLAG_Z = DX &= OPER_PCDI_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_pcix(void) +{ + FLAG_Z = DX &= OPER_PCIX_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_32_er_i(void) +{ + FLAG_Z = DX &= OPER_I_32(); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_and_8_re_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_di(void) +{ + uint ea = EA_AY_DI_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_aw(void) +{ + uint ea = EA_AW_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_8_re_al(void) +{ + uint ea = EA_AL_8(); + uint res = DX & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_and_16_re_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint res = DX & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_and_16_re_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint res = DX & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_and_16_re_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint res = DX & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_and_16_re_di(void) +{ + uint ea = EA_AY_DI_16(); + uint res = DX & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_and_16_re_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint res = DX & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_and_16_re_aw(void) +{ + uint ea = EA_AW_16(); + uint res = DX & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_and_16_re_al(void) +{ + uint ea = EA_AL_16(); + uint res = DX & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_and_32_re_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint res = DX & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_and_32_re_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint res = DX & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_and_32_re_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint res = DX & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_and_32_re_di(void) +{ + uint ea = EA_AY_DI_32(); + uint res = DX & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_and_32_re_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint res = DX & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_and_32_re_aw(void) +{ + uint ea = EA_AW_32(); + uint res = DX & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_and_32_re_al(void) +{ + uint ea = EA_AL_32(); + uint res = DX & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_8_d(void) +{ + FLAG_Z = MASK_OUT_ABOVE_8(DY &= (OPER_I_8() | 0xffffff00)); + + FLAG_N = NFLAG_8(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_andi_8_ai(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_AI_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_pi(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PI_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_pi7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PI_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_pd(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PD_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_pd7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PD_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_di(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_DI_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_ix(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_IX_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_aw(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AW_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_8_al(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AL_8(); + uint res = src & m68ki_read_8(ea); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_andi_16_d(void) +{ + FLAG_Z = MASK_OUT_ABOVE_16(DY &= (OPER_I_16() | 0xffff0000)); + + FLAG_N = NFLAG_16(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_andi_16_ai(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_AI_16(); + uint res = src & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_andi_16_pi(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PI_16(); + uint res = src & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_andi_16_pd(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PD_16(); + uint res = src & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_andi_16_di(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_DI_16(); + uint res = src & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_andi_16_ix(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_IX_16(); + uint res = src & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_andi_16_aw(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AW_16(); + uint res = src & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_andi_16_al(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AL_16(); + uint res = src & m68ki_read_16(ea); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_andi_32_d(void) +{ + FLAG_Z = DY &= (OPER_I_32()); + + FLAG_N = NFLAG_32(FLAG_Z); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_andi_32_ai(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_AI_32(); + uint res = src & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_32_pi(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PI_32(); + uint res = src & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_32_pd(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PD_32(); + uint res = src & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_32_di(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_DI_32(); + uint res = src & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_32_ix(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_IX_32(); + uint res = src & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_32_aw(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AW_32(); + uint res = src & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_32_al(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AL_32(); + uint res = src & m68ki_read_32(ea); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_andi_16_toc(void) +{ + m68ki_set_ccr(m68ki_get_ccr() & OPER_I_16()); +} + + +static void m68k_op_andi_16_tos(void) +{ + if(FLAG_S) + { + uint src = OPER_I_16(); + m68ki_set_sr(m68ki_get_sr() & src); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_asr_8_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = src >> shift; + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + if(GET_MSB_8(src)) + res |= m68ki_shift_8_table[shift]; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_X = FLAG_C = src << (9-shift); +} + + +static void m68k_op_asr_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = src >> shift; + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + if(GET_MSB_16(src)) + res |= m68ki_shift_16_table[shift]; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_X = FLAG_C = src << (9-shift); +} + + +static void m68k_op_asr_32_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = *r_dst; + uint res = src >> shift; + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + if(GET_MSB_32(src)) + res |= m68ki_shift_32_table[shift]; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_X = FLAG_C = src << (9-shift); +} + + +static void m68k_op_asr_8_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = src >> shift; + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 8) + { + if(GET_MSB_8(src)) + res |= m68ki_shift_8_table[shift]; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_X = FLAG_C = src << (9-shift); + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + if(GET_MSB_8(src)) + { + *r_dst |= 0xff; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_SET; + FLAG_Z = ZFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst &= 0xffffff00; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_8(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_asr_16_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = src >> shift; + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 16) + { + if(GET_MSB_16(src)) + res |= m68ki_shift_16_table[shift]; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_C = FLAG_X = (src >> (shift - 1))<<8; + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + if(GET_MSB_16(src)) + { + *r_dst |= 0xffff; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_SET; + FLAG_Z = ZFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst &= 0xffff0000; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_16(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_asr_32_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = *r_dst; + uint res = src >> shift; + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 32) + { + if(GET_MSB_32(src)) + res |= m68ki_shift_32_table[shift]; + + *r_dst = res; + + FLAG_C = FLAG_X = (src >> (shift - 1))<<8; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + if(GET_MSB_32(src)) + { + *r_dst = 0xffffffff; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_SET; + FLAG_Z = ZFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst = 0; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_32(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_asr_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + if(GET_MSB_16(src)) + res |= 0x8000; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = FLAG_X = src << 8; +} + + +static void m68k_op_asr_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + if(GET_MSB_16(src)) + res |= 0x8000; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = FLAG_X = src << 8; +} + + +static void m68k_op_asr_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + if(GET_MSB_16(src)) + res |= 0x8000; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = FLAG_X = src << 8; +} + + +static void m68k_op_asr_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + if(GET_MSB_16(src)) + res |= 0x8000; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = FLAG_X = src << 8; +} + + +static void m68k_op_asr_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + if(GET_MSB_16(src)) + res |= 0x8000; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = FLAG_X = src << 8; +} + + +static void m68k_op_asr_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + if(GET_MSB_16(src)) + res |= 0x8000; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = FLAG_X = src << 8; +} + + +static void m68k_op_asr_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + if(GET_MSB_16(src)) + res |= 0x8000; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = FLAG_X = src << 8; +} + + +static void m68k_op_asl_8_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = MASK_OUT_ABOVE_8(src << shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_X = FLAG_C = src << shift; + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + src &= m68ki_shift_8_table[shift + 1]; + FLAG_V = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7; +} + + +static void m68k_op_asl_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = MASK_OUT_ABOVE_16(src << shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> (8-shift); + src &= m68ki_shift_16_table[shift + 1]; + FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7; +} + + +static void m68k_op_asl_32_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32(src << shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> (24-shift); + src &= m68ki_shift_32_table[shift + 1]; + FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7; +} + + +static void m68k_op_asl_8_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = MASK_OUT_ABOVE_8(src << shift); + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 8) + { + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + FLAG_X = FLAG_C = src << shift; + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + src &= m68ki_shift_8_table[shift + 1]; + FLAG_V = (!(src == 0 || src == m68ki_shift_8_table[shift + 1]))<<7; + return; + } + + *r_dst &= 0xffffff00; + FLAG_X = FLAG_C = ((shift == 8 ? src & 1 : 0))<<8; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = (!(src == 0))<<7; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_8(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_asl_16_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = MASK_OUT_ABOVE_16(src << shift); + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 16) + { + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + FLAG_X = FLAG_C = (src << shift) >> 8; + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + src &= m68ki_shift_16_table[shift + 1]; + FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7; + return; + } + + *r_dst &= 0xffff0000; + FLAG_X = FLAG_C = ((shift == 16 ? src & 1 : 0))<<8; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = (!(src == 0))<<7; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_16(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_asl_32_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32(src << shift); + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 32) + { + *r_dst = res; + FLAG_X = FLAG_C = (src >> (32 - shift)) << 8; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + src &= m68ki_shift_32_table[shift + 1]; + FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7; + return; + } + + *r_dst = 0; + FLAG_X = FLAG_C = ((shift == 32 ? src & 1 : 0))<<8; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = (!(src == 0))<<7; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_32(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_asl_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + src &= 0xc000; + FLAG_V = (!(src == 0 || src == 0xc000))<<7; +} + + +static void m68k_op_asl_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + src &= 0xc000; + FLAG_V = (!(src == 0 || src == 0xc000))<<7; +} + + +static void m68k_op_asl_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + src &= 0xc000; + FLAG_V = (!(src == 0 || src == 0xc000))<<7; +} + + +static void m68k_op_asl_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + src &= 0xc000; + FLAG_V = (!(src == 0 || src == 0xc000))<<7; +} + + +static void m68k_op_asl_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + src &= 0xc000; + FLAG_V = (!(src == 0 || src == 0xc000))<<7; +} + + +static void m68k_op_asl_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + src &= 0xc000; + FLAG_V = (!(src == 0 || src == 0xc000))<<7; +} + + +static void m68k_op_asl_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + src &= 0xc000; + FLAG_V = (!(src == 0 || src == 0xc000))<<7; +} + + +static void m68k_op_bhi_8(void) +{ + if(COND_HI()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bls_8(void) +{ + if(COND_LS()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bcc_8(void) +{ + if(COND_CC()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bcs_8(void) +{ + if(COND_CS()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bne_8(void) +{ + if(COND_NE()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_beq_8(void) +{ + if(COND_EQ()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bvc_8(void) +{ + if(COND_VC()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bvs_8(void) +{ + if(COND_VS()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bpl_8(void) +{ + if(COND_PL()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bmi_8(void) +{ + if(COND_MI()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bge_8(void) +{ + if(COND_GE()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_blt_8(void) +{ + if(COND_LT()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bgt_8(void) +{ + if(COND_GT()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_ble_8(void) +{ + if(COND_LE()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bhi_16(void) +{ + if(COND_HI()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bls_16(void) +{ + if(COND_LS()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bcc_16(void) +{ + if(COND_CC()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bcs_16(void) +{ + if(COND_CS()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bne_16(void) +{ + if(COND_NE()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_beq_16(void) +{ + if(COND_EQ()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bvc_16(void) +{ + if(COND_VC()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bvs_16(void) +{ + if(COND_VS()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bpl_16(void) +{ + if(COND_PL()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bmi_16(void) +{ + if(COND_MI()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bge_16(void) +{ + if(COND_GE()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_blt_16(void) +{ + if(COND_LT()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bgt_16(void) +{ + if(COND_GT()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_ble_16(void) +{ + if(COND_LE()) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + return; + } + REG_PC += 2; + USE_CYCLES(CYC_BCC_NOTAKE_W); +} + + +static void m68k_op_bhi_32(void) +{ + if(COND_HI()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bls_32(void) +{ + if(COND_LS()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bcc_32(void) +{ + if(COND_CC()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bcs_32(void) +{ + if(COND_CS()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bne_32(void) +{ + if(COND_NE()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_beq_32(void) +{ + if(COND_EQ()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bvc_32(void) +{ + if(COND_VC()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bvs_32(void) +{ + if(COND_VS()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bpl_32(void) +{ + if(COND_PL()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bmi_32(void) +{ + if(COND_MI()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bge_32(void) +{ + if(COND_GE()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_blt_32(void) +{ + if(COND_LT()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bgt_32(void) +{ + if(COND_GT()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_ble_32(void) +{ + if(COND_LE()) + { + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); + return; + } + USE_CYCLES(CYC_BCC_NOTAKE_B); +} + + +static void m68k_op_bchg_32_r_d(void) +{ + uint* r_dst = &DY; + uint mask = 1 << (DX & 0x1f); + + FLAG_Z = *r_dst & mask; + *r_dst ^= mask; +} + + +static void m68k_op_bchg_8_r_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_di(void) +{ + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_aw(void) +{ + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_r_al(void) +{ + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_32_s_d(void) +{ + uint* r_dst = &DY; + uint mask = 1 << (OPER_I_8() & 0x1f); + + FLAG_Z = *r_dst & mask; + *r_dst ^= mask; +} + + +static void m68k_op_bchg_8_s_ai(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_pi(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_pi7(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_pd(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_pd7(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_di(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_ix(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_aw(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bchg_8_s_al(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src ^ mask); +} + + +static void m68k_op_bclr_32_r_d(void) +{ + uint* r_dst = &DY; + uint mask = 1 << (DX & 0x1f); + + FLAG_Z = *r_dst & mask; + *r_dst &= ~mask; +} + + +static void m68k_op_bclr_8_r_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_di(void) +{ + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_aw(void) +{ + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_r_al(void) +{ + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_32_s_d(void) +{ + uint* r_dst = &DY; + uint mask = 1 << (OPER_I_8() & 0x1f); + + FLAG_Z = *r_dst & mask; + *r_dst &= ~mask; +} + + +static void m68k_op_bclr_8_s_ai(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_pi(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_pi7(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_pd(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_pd7(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_di(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_ix(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_aw(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bclr_8_s_al(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src & ~mask); +} + + +static void m68k_op_bra_8(void) +{ + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); +} + + +static void m68k_op_bra_16(void) +{ + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); +} + + +static void m68k_op_bra_32(void) +{ + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); +} + + +static void m68k_op_bset_32_r_d(void) +{ + uint* r_dst = &DY; + uint mask = 1 << (DX & 0x1f); + + FLAG_Z = *r_dst & mask; + *r_dst |= mask; +} + + +static void m68k_op_bset_8_r_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_di(void) +{ + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_aw(void) +{ + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_r_al(void) +{ + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + uint mask = 1 << (DX & 7); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_32_s_d(void) +{ + uint* r_dst = &DY; + uint mask = 1 << (OPER_I_8() & 0x1f); + + FLAG_Z = *r_dst & mask; + *r_dst |= mask; +} + + +static void m68k_op_bset_8_s_ai(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_pi(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_pi7(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_pd(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_pd7(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_di(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_ix(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_aw(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bset_8_s_al(void) +{ + uint mask = 1 << (OPER_I_8() & 7); + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + + FLAG_Z = src & mask; + m68ki_write_8(ea, src | mask); +} + + +static void m68k_op_bsr_8(void) +{ + m68ki_push_32(REG_PC); + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); +} + + +static void m68k_op_bsr_16(void) +{ + uint offset = OPER_I_16(); + m68ki_push_32(REG_PC); + REG_PC -= 2; + m68ki_branch_16(offset); +} + + +static void m68k_op_bsr_32(void) +{ + m68ki_push_32(REG_PC); + m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR)); +} + + +static void m68k_op_btst_32_r_d(void) +{ + FLAG_Z = DY & (1 << (DX & 0x1f)); +} + + +static void m68k_op_btst_8_r_ai(void) +{ + FLAG_Z = OPER_AY_AI_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_pi(void) +{ + FLAG_Z = OPER_AY_PI_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_pi7(void) +{ + FLAG_Z = OPER_A7_PI_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_pd(void) +{ + FLAG_Z = OPER_AY_PD_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_pd7(void) +{ + FLAG_Z = OPER_A7_PD_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_di(void) +{ + FLAG_Z = OPER_AY_DI_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_ix(void) +{ + FLAG_Z = OPER_AY_IX_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_aw(void) +{ + FLAG_Z = OPER_AW_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_al(void) +{ + FLAG_Z = OPER_AL_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_pcdi(void) +{ + FLAG_Z = OPER_PCDI_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_pcix(void) +{ + FLAG_Z = OPER_PCIX_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_8_r_i(void) +{ + FLAG_Z = OPER_I_8() & (1 << (DX & 7)); +} + + +static void m68k_op_btst_32_s_d(void) +{ + FLAG_Z = DY & (1 << (OPER_I_8() & 0x1f)); +} + + +static void m68k_op_btst_8_s_ai(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_AY_AI_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_pi(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_AY_PI_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_pi7(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_A7_PI_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_pd(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_AY_PD_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_pd7(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_A7_PD_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_di(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_AY_DI_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_ix(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_AY_IX_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_aw(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_AW_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_al(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_AL_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_pcdi(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_PCDI_8() & (1 << bit); +} + + +static void m68k_op_btst_8_s_pcix(void) +{ + uint bit = OPER_I_8() & 7; + + FLAG_Z = OPER_PCIX_8() & (1 << bit); +} + + +static void m68k_op_chk_16_d(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(DY); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_ai(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_AY_AI_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_pi(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_AY_PI_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_pd(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_AY_PD_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_di(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_AY_DI_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_ix(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_AY_IX_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_aw(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_AW_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_al(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_AL_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_pcdi(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_PCDI_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_pcix(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_PCIX_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_chk_16_i(void) +{ + sint src = MAKE_INT_16(DX); + sint bound = MAKE_INT_16(OPER_I_16()); + + FLAG_Z = ZFLAG_16(src); /* Undocumented */ + FLAG_V = VFLAG_CLEAR; /* Undocumented */ + FLAG_C = CFLAG_CLEAR; /* Undocumented */ + + if(src >= 0 && src <= bound) + { + return; + } + FLAG_N = (src < 0)<<7; + m68ki_exception_trap(EXCEPTION_CHK); +} + + +static void m68k_op_clr_8_d(void) +{ + DY &= 0xffffff00; + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_8_al(void) +{ + m68ki_write_8(EA_AL_8(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_d(void) +{ + DY &= 0xffff0000; + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_ai(void) +{ + m68ki_write_16(EA_AY_AI_16(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_pi(void) +{ + m68ki_write_16(EA_AY_PI_16(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_pd(void) +{ + m68ki_write_16(EA_AY_PD_16(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_di(void) +{ + m68ki_write_16(EA_AY_DI_16(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_ix(void) +{ + m68ki_write_16(EA_AY_IX_16(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_aw(void) +{ + m68ki_write_16(EA_AW_16(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_16_al(void) +{ + m68ki_write_16(EA_AL_16(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_d(void) +{ + DY = 0; + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_ai(void) +{ + m68ki_write_32(EA_AY_AI_32(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_pi(void) +{ + m68ki_write_32(EA_AY_PI_32(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_pd(void) +{ + m68ki_write_32(EA_AY_PD_32(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_di(void) +{ + m68ki_write_32(EA_AY_DI_32(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_ix(void) +{ + m68ki_write_32(EA_AY_IX_32(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_aw(void) +{ + m68ki_write_32(EA_AW_32(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_clr_32_al(void) +{ + m68ki_write_32(EA_AL_32(), 0); + + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; +} + + +static void m68k_op_cmp_8_d(void) +{ + uint src = MASK_OUT_ABOVE_8(DY); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_ai(void) +{ + uint src = OPER_AY_AI_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_pi(void) +{ + uint src = OPER_AY_PI_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_pi7(void) +{ + uint src = OPER_A7_PI_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_pd(void) +{ + uint src = OPER_AY_PD_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_pd7(void) +{ + uint src = OPER_A7_PD_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_di(void) +{ + uint src = OPER_AY_DI_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_ix(void) +{ + uint src = OPER_AY_IX_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_aw(void) +{ + uint src = OPER_AW_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_al(void) +{ + uint src = OPER_AL_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_pcdi(void) +{ + uint src = OPER_PCDI_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_pcix(void) +{ + uint src = OPER_PCIX_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_8_i(void) +{ + uint src = OPER_I_8(); + uint dst = MASK_OUT_ABOVE_8(DX); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmp_16_d(void) +{ + uint src = MASK_OUT_ABOVE_16(DY); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_a(void) +{ + uint src = MASK_OUT_ABOVE_16(AY); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_ai(void) +{ + uint src = OPER_AY_AI_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_pi(void) +{ + uint src = OPER_AY_PI_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_pd(void) +{ + uint src = OPER_AY_PD_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_di(void) +{ + uint src = OPER_AY_DI_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_ix(void) +{ + uint src = OPER_AY_IX_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_aw(void) +{ + uint src = OPER_AW_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_al(void) +{ + uint src = OPER_AL_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_pcdi(void) +{ + uint src = OPER_PCDI_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_pcix(void) +{ + uint src = OPER_PCIX_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_16_i(void) +{ + uint src = OPER_I_16(); + uint dst = MASK_OUT_ABOVE_16(DX); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmp_32_d(void) +{ + uint src = DY; + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_a(void) +{ + uint src = AY; + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_ai(void) +{ + uint src = OPER_AY_AI_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_pi(void) +{ + uint src = OPER_AY_PI_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_pd(void) +{ + uint src = OPER_AY_PD_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_di(void) +{ + uint src = OPER_AY_DI_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_ix(void) +{ + uint src = OPER_AY_IX_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_aw(void) +{ + uint src = OPER_AW_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_al(void) +{ + uint src = OPER_AL_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_pcdi(void) +{ + uint src = OPER_PCDI_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_pcix(void) +{ + uint src = OPER_PCIX_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmp_32_i(void) +{ + uint src = OPER_I_32(); + uint dst = DX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_d(void) +{ + uint src = MAKE_INT_16(DY); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_a(void) +{ + uint src = MAKE_INT_16(AY); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_ai(void) +{ + uint src = MAKE_INT_16(OPER_AY_AI_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_pi(void) +{ + uint src = MAKE_INT_16(OPER_AY_PI_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_pd(void) +{ + uint src = MAKE_INT_16(OPER_AY_PD_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_di(void) +{ + uint src = MAKE_INT_16(OPER_AY_DI_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_ix(void) +{ + uint src = MAKE_INT_16(OPER_AY_IX_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_aw(void) +{ + uint src = MAKE_INT_16(OPER_AW_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_al(void) +{ + uint src = MAKE_INT_16(OPER_AL_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_pcdi(void) +{ + uint src = MAKE_INT_16(OPER_PCDI_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_pcix(void) +{ + uint src = MAKE_INT_16(OPER_PCIX_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_16_i(void) +{ + uint src = MAKE_INT_16(OPER_I_16()); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_d(void) +{ + uint src = DY; + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_a(void) +{ + uint src = AY; + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_ai(void) +{ + uint src = OPER_AY_AI_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_pi(void) +{ + uint src = OPER_AY_PI_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_pd(void) +{ + uint src = OPER_AY_PD_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_di(void) +{ + uint src = OPER_AY_DI_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_ix(void) +{ + uint src = OPER_AY_IX_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_aw(void) +{ + uint src = OPER_AW_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_al(void) +{ + uint src = OPER_AL_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_pcdi(void) +{ + uint src = OPER_PCDI_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_pcix(void) +{ + uint src = OPER_PCIX_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpa_32_i(void) +{ + uint src = OPER_I_32(); + uint dst = AX; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_8_d(void) +{ + uint src = OPER_I_8(); + uint dst = MASK_OUT_ABOVE_8(DY); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_ai(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_AY_AI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_pi(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_AY_PI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_pi7(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_A7_PI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_pd(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_AY_PD_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_pd7(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_A7_PD_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_di(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_AY_DI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_ix(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_AY_IX_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_aw(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_AW_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_8_al(void) +{ + uint src = OPER_I_8(); + uint dst = OPER_AL_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpi_16_d(void) +{ + uint src = OPER_I_16(); + uint dst = MASK_OUT_ABOVE_16(DY); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_16_ai(void) +{ + uint src = OPER_I_16(); + uint dst = OPER_AY_AI_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_16_pi(void) +{ + uint src = OPER_I_16(); + uint dst = OPER_AY_PI_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_16_pd(void) +{ + uint src = OPER_I_16(); + uint dst = OPER_AY_PD_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_16_di(void) +{ + uint src = OPER_I_16(); + uint dst = OPER_AY_DI_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_16_ix(void) +{ + uint src = OPER_I_16(); + uint dst = OPER_AY_IX_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_16_aw(void) +{ + uint src = OPER_I_16(); + uint dst = OPER_AW_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_16_al(void) +{ + uint src = OPER_I_16(); + uint dst = OPER_AL_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpi_32_d(void) +{ + uint src = OPER_I_32(); + uint dst = DY; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_32_ai(void) +{ + uint src = OPER_I_32(); + uint dst = OPER_AY_AI_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_32_pi(void) +{ + uint src = OPER_I_32(); + uint dst = OPER_AY_PI_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_32_pd(void) +{ + uint src = OPER_I_32(); + uint dst = OPER_AY_PD_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_32_di(void) +{ + uint src = OPER_I_32(); + uint dst = OPER_AY_DI_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_32_ix(void) +{ + uint src = OPER_I_32(); + uint dst = OPER_AY_IX_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_32_aw(void) +{ + uint src = OPER_I_32(); + uint dst = OPER_AW_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpi_32_al(void) +{ + uint src = OPER_I_32(); + uint dst = OPER_AL_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_cmpm_8_ax7(void) +{ + uint src = OPER_AY_PI_8(); + uint dst = OPER_A7_PI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpm_8_ay7(void) +{ + uint src = OPER_A7_PI_8(); + uint dst = OPER_AX_PI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpm_8_axy7(void) +{ + uint src = OPER_A7_PI_8(); + uint dst = OPER_A7_PI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpm_8(void) +{ + uint src = OPER_AY_PI_8(); + uint dst = OPER_AX_PI_8(); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_C = CFLAG_8(res); +} + + +static void m68k_op_cmpm_16(void) +{ + uint src = OPER_AY_PI_16(); + uint dst = OPER_AX_PI_16(); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_C = CFLAG_16(res); +} + + +static void m68k_op_cmpm_32(void) +{ + uint src = OPER_AY_PI_32(); + uint dst = OPER_AX_PI_32(); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_C = CFLAG_SUB_32(src, dst, res); +} + + +static void m68k_op_dbt_16(void) +{ + REG_PC += 2; +} + + +static void m68k_op_dbf_16(void) +{ + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); +} + + +static void m68k_op_dbhi_16(void) +{ + if(COND_NOT_HI()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbls_16(void) +{ + if(COND_NOT_LS()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbcc_16(void) +{ + if(COND_NOT_CC()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbcs_16(void) +{ + if(COND_NOT_CS()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbne_16(void) +{ + if(COND_NOT_NE()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbeq_16(void) +{ + if(COND_NOT_EQ()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbvc_16(void) +{ + if(COND_NOT_VC()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbvs_16(void) +{ + if(COND_NOT_VS()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbpl_16(void) +{ + if(COND_NOT_PL()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbmi_16(void) +{ + if(COND_NOT_MI()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbge_16(void) +{ + if(COND_NOT_GE()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dblt_16(void) +{ + if(COND_NOT_LT()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dbgt_16(void) +{ + if(COND_NOT_GT()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_dble_16(void) +{ + if(COND_NOT_LE()) + { + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(*r_dst - 1); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + if(res != 0xffff) + { + uint offset = OPER_I_16(); + REG_PC -= 2; + m68ki_branch_16(offset); + USE_CYCLES(CYC_DBCC_F_NOEXP); + + /* reset idle loop detection */ + m68ki_cpu.poll.detected = 0; + return; + } + REG_PC += 2; + USE_CYCLES(CYC_DBCC_F_EXP); + return; + } + REG_PC += 2; +} + + +static void m68k_op_divs_16_d(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(DY); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_ai(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_AI_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_pi(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_PI_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_pd(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_PD_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_di(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_DI_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_ix(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_IX_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_aw(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AW_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_al(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AL_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_pcdi(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_PCDI_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_pcix(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_PCIX_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divs_16_i(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_I_16()); + sint quotient; + sint remainder; + + if(src != 0) + { + UseDivsCycles(*r_dst,src); + + if((uint32)*r_dst == 0x80000000 && src == -1) + { + FLAG_Z = 0; + FLAG_N = NFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = 0; + return; + } + + quotient = MAKE_INT_32(*r_dst) / src; + remainder = MAKE_INT_32(*r_dst) % src; + + if(quotient == MAKE_INT_16(quotient)) + { + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_d(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(DY); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_divu_16_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_16(); + + if(src != 0) + { + uint quotient = *r_dst / src; + uint remainder = *r_dst % src; + + if(quotient < 0x10000) + { + UseDivuCycles(*r_dst,src); + FLAG_Z = quotient; + FLAG_N = NFLAG_16(quotient); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16)); + return; + } + USE_CYCLES(MUL * 10); + FLAG_V = VFLAG_SET; + FLAG_N = NFLAG_SET; /* undocumented behavior (fixes Blood Shot on Genesis) */ + FLAG_C = CFLAG_CLEAR; + return; + } + FLAG_C = CFLAG_CLEAR; + m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE); +} + + +static void m68k_op_eor_8_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY ^= MASK_OUT_ABOVE_8(DX)); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_di(void) +{ + uint ea = EA_AY_DI_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_aw(void) +{ + uint ea = EA_AW_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_8_al(void) +{ + uint ea = EA_AL_8(); + uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY ^= MASK_OUT_ABOVE_16(DX)); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_aw(void) +{ + uint ea = EA_AW_16(); + uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_16_al(void) +{ + uint ea = EA_AL_16(); + uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_d(void) +{ + uint res = DY ^= DX; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint res = DX ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint res = DX ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint res = DX ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_di(void) +{ + uint ea = EA_AY_DI_32(); + uint res = DX ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint res = DX ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_aw(void) +{ + uint ea = EA_AW_32(); + uint res = DX ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eor_32_al(void) +{ + uint ea = EA_AL_32(); + uint res = DX ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY ^= OPER_I_8()); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_ai(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_AI_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_pi(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PI_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_pi7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PI_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_pd(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PD_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_pd7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PD_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_di(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_DI_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_ix(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_IX_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_aw(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AW_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_8_al(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AL_8(); + uint res = src ^ m68ki_read_8(ea); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY ^= OPER_I_16()); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_ai(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_AI_16(); + uint res = src ^ m68ki_read_16(ea); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_pi(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PI_16(); + uint res = src ^ m68ki_read_16(ea); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_pd(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PD_16(); + uint res = src ^ m68ki_read_16(ea); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_di(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_DI_16(); + uint res = src ^ m68ki_read_16(ea); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_ix(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_IX_16(); + uint res = src ^ m68ki_read_16(ea); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_aw(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AW_16(); + uint res = src ^ m68ki_read_16(ea); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_al(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AL_16(); + uint res = src ^ m68ki_read_16(ea); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_d(void) +{ + uint res = DY ^= OPER_I_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_ai(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_AI_32(); + uint res = src ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_pi(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PI_32(); + uint res = src ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_pd(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PD_32(); + uint res = src ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_di(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_DI_32(); + uint res = src ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_ix(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_IX_32(); + uint res = src ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_aw(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AW_32(); + uint res = src ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_32_al(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AL_32(); + uint res = src ^ m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_eori_16_toc(void) +{ + m68ki_set_ccr(m68ki_get_ccr() ^ OPER_I_16()); +} + + +static void m68k_op_eori_16_tos(void) +{ + if(FLAG_S) + { + uint src = OPER_I_16(); + m68ki_set_sr(m68ki_get_sr() ^ src); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_exg_32_dd(void) +{ + uint* reg_a = &DX; + uint* reg_b = &DY; + uint tmp = *reg_a; + *reg_a = *reg_b; + *reg_b = tmp; +} + + +static void m68k_op_exg_32_aa(void) +{ + uint* reg_a = &AX; + uint* reg_b = &AY; + uint tmp = *reg_a; + *reg_a = *reg_b; + *reg_b = tmp; +} + + +static void m68k_op_exg_32_da(void) +{ + uint* reg_a = &DX; + uint* reg_b = &AY; + uint tmp = *reg_a; + *reg_a = *reg_b; + *reg_b = tmp; +} + + +static void m68k_op_ext_16(void) +{ + uint* r_dst = &DY; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xff00 : 0); + + FLAG_N = NFLAG_16(*r_dst); + FLAG_Z = MASK_OUT_ABOVE_16(*r_dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_ext_32(void) +{ + uint* r_dst = &DY; + + *r_dst = MASK_OUT_ABOVE_16(*r_dst) | (GET_MSB_16(*r_dst) ? 0xffff0000 : 0); + + FLAG_N = NFLAG_32(*r_dst); + FLAG_Z = *r_dst; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_illegal(void) +{ + m68ki_exception_illegal(); +} + + +static void m68k_op_jmp_32_ai(void) +{ + m68ki_jump(EA_AY_AI_32()); +} + + +static void m68k_op_jmp_32_di(void) +{ + m68ki_jump(EA_AY_DI_32()); +} + + +static void m68k_op_jmp_32_ix(void) +{ + m68ki_jump(EA_AY_IX_32()); +} + + +static void m68k_op_jmp_32_aw(void) +{ + m68ki_jump(EA_AW_32()); +} + + +static void m68k_op_jmp_32_al(void) +{ + m68ki_jump(EA_AL_32()); +} + + +static void m68k_op_jmp_32_pcdi(void) +{ + m68ki_jump(EA_PCDI_32()); +} + + +static void m68k_op_jmp_32_pcix(void) +{ + m68ki_jump(EA_PCIX_32()); +} + + +static void m68k_op_jsr_32_ai(void) +{ + uint ea = EA_AY_AI_32(); + m68ki_push_32(REG_PC); + m68ki_jump(ea); +} + + +static void m68k_op_jsr_32_di(void) +{ + uint ea = EA_AY_DI_32(); + m68ki_push_32(REG_PC); + m68ki_jump(ea); +} + + +static void m68k_op_jsr_32_ix(void) +{ + uint ea = EA_AY_IX_32(); + m68ki_push_32(REG_PC); + m68ki_jump(ea); +} + + +static void m68k_op_jsr_32_aw(void) +{ + uint ea = EA_AW_32(); + m68ki_push_32(REG_PC); + m68ki_jump(ea); +} + + +static void m68k_op_jsr_32_al(void) +{ + uint ea = EA_AL_32(); + m68ki_push_32(REG_PC); + m68ki_jump(ea); +} + + +static void m68k_op_jsr_32_pcdi(void) +{ + uint ea = EA_PCDI_32(); + m68ki_push_32(REG_PC); + m68ki_jump(ea); +} + + +static void m68k_op_jsr_32_pcix(void) +{ + uint ea = EA_PCIX_32(); + m68ki_push_32(REG_PC); + m68ki_jump(ea); +} + + +static void m68k_op_lea_32_ai(void) +{ + AX = EA_AY_AI_32(); +} + + +static void m68k_op_lea_32_di(void) +{ + AX = EA_AY_DI_32(); +} + + +static void m68k_op_lea_32_ix(void) +{ + AX = EA_AY_IX_32(); +} + + +static void m68k_op_lea_32_aw(void) +{ + AX = EA_AW_32(); +} + + +static void m68k_op_lea_32_al(void) +{ + AX = EA_AL_32(); +} + + +static void m68k_op_lea_32_pcdi(void) +{ + AX = EA_PCDI_32(); +} + + +static void m68k_op_lea_32_pcix(void) +{ + AX = EA_PCIX_32(); +} + + +static void m68k_op_link_16_a7(void) +{ + REG_A[7] -= 4; + m68ki_write_32(REG_A[7], REG_A[7]); + REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16())); +} + + +static void m68k_op_link_16(void) +{ + uint* r_dst = &AY; + + m68ki_push_32(*r_dst); + *r_dst = REG_A[7]; + REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16())); +} + + +static void m68k_op_lsr_8_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = src >> shift; + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_X = FLAG_C = src << (9-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = src >> shift; + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_X = FLAG_C = src << (9-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_32_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = *r_dst; + uint res = src >> shift; + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_X = FLAG_C = src << (9-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_8_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = src >> shift; + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift <= 8) + { + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + FLAG_X = FLAG_C = src << (9-shift); + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst &= 0xffffff00; + FLAG_X = XFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_8(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = src >> shift; + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift <= 16) + { + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + FLAG_C = FLAG_X = (src >> (shift - 1))<<8; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst &= 0xffff0000; + FLAG_X = XFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_16(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_32_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = *r_dst; + uint res = src >> shift; + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 32) + { + *r_dst = res; + FLAG_C = FLAG_X = (src >> (shift - 1))<<8; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst = 0; + FLAG_X = FLAG_C = (shift == 32 ? GET_MSB_32(src)>>23 : 0); + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_32(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_C = FLAG_X = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_C = FLAG_X = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_C = FLAG_X = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_C = FLAG_X = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_C = FLAG_X = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_C = FLAG_X = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsr_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = src >> 1; + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_CLEAR; + FLAG_Z = res; + FLAG_C = FLAG_X = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_8_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = MASK_OUT_ABOVE_8(src << shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src << shift; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = MASK_OUT_ABOVE_16(src << shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> (8-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_32_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32(src << shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> (24-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_8_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = MASK_OUT_ABOVE_8(src << shift); + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift <= 8) + { + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + FLAG_X = FLAG_C = src << shift; + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst &= 0xffffff00; + FLAG_X = XFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_8(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = MASK_OUT_ABOVE_16(src << shift); + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift <= 16) + { + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + FLAG_X = FLAG_C = (src << shift) >> 8; + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst &= 0xffff0000; + FLAG_X = XFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_16(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_32_r(void) +{ + uint* r_dst = &DY; + uint shift = DX & 0x3f; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32(src << shift); + + if(shift != 0) + { + USE_CYCLES(shift * CYC_SHIFT); + + if(shift < 32) + { + *r_dst = res; + FLAG_X = FLAG_C = (src >> (32 - shift)) << 8; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + *r_dst = 0; + FLAG_X = FLAG_C = ((shift == 32 ? src & 1 : 0))<<8; + FLAG_N = NFLAG_CLEAR; + FLAG_Z = ZFLAG_SET; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_32(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_lsl_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(src << 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_X = FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_di(void) +{ + uint res = OPER_AY_DI_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_aw(void) +{ + uint res = OPER_AW_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_al(void) +{ + uint res = OPER_AL_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_d_i(void) +{ + uint res = OPER_I_8(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_8_ai_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ai_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_AX_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi7_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pi_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_AX_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd7_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_pd_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_AX_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_di_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_AX_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_ix_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_AX_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_aw_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_ai(void) +{ + uint res = OPER_AY_AI_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_pi(void) +{ + uint res = OPER_AY_PI_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_pi7(void) +{ + uint res = OPER_A7_PI_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_pd(void) +{ + uint res = OPER_AY_PD_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_pd7(void) +{ + uint res = OPER_A7_PD_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_di(void) +{ + uint res = OPER_AY_DI_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_ix(void) +{ + uint res = OPER_AY_IX_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_aw(void) +{ + uint res = OPER_AW_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_al(void) +{ + uint res = OPER_AL_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_pcdi(void) +{ + uint res = OPER_PCDI_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_pcix(void) +{ + uint res = OPER_PCIX_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_8_al_i(void) +{ + uint res = OPER_I_8(); + uint ea = EA_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_move_16_d_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_di(void) +{ + uint res = OPER_AY_DI_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_aw(void) +{ + uint res = OPER_AW_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_al(void) +{ + uint res = OPER_AL_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_d_i(void) +{ + uint res = OPER_I_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_16_ai_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_di(void) +{ + uint res = OPER_AY_DI_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_aw(void) +{ + uint res = OPER_AW_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_al(void) +{ + uint res = OPER_AL_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ai_i(void) +{ + uint res = OPER_I_16(); + uint ea = EA_AX_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_di(void) +{ + uint res = OPER_AY_DI_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_aw(void) +{ + uint res = OPER_AW_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_al(void) +{ + uint res = OPER_AL_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pi_i(void) +{ + uint res = OPER_I_16(); + uint ea = EA_AX_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_di(void) +{ + uint res = OPER_AY_DI_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_aw(void) +{ + uint res = OPER_AW_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_al(void) +{ + uint res = OPER_AL_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_pd_i(void) +{ + uint res = OPER_I_16(); + uint ea = EA_AX_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_di(void) +{ + uint res = OPER_AY_DI_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_aw(void) +{ + uint res = OPER_AW_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_al(void) +{ + uint res = OPER_AL_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_di_i(void) +{ + uint res = OPER_I_16(); + uint ea = EA_AX_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_di(void) +{ + uint res = OPER_AY_DI_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_aw(void) +{ + uint res = OPER_AW_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_al(void) +{ + uint res = OPER_AL_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_ix_i(void) +{ + uint res = OPER_I_16(); + uint ea = EA_AX_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_di(void) +{ + uint res = OPER_AY_DI_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_aw(void) +{ + uint res = OPER_AW_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_al(void) +{ + uint res = OPER_AL_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_aw_i(void) +{ + uint res = OPER_I_16(); + uint ea = EA_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_a(void) +{ + uint res = MASK_OUT_ABOVE_16(AY); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_ai(void) +{ + uint res = OPER_AY_AI_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_pi(void) +{ + uint res = OPER_AY_PI_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_pd(void) +{ + uint res = OPER_AY_PD_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_di(void) +{ + uint res = OPER_AY_DI_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_ix(void) +{ + uint res = OPER_AY_IX_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_aw(void) +{ + uint res = OPER_AW_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_al(void) +{ + uint res = OPER_AL_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_pcdi(void) +{ + uint res = OPER_PCDI_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_pcix(void) +{ + uint res = OPER_PCIX_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_16_al_i(void) +{ + uint res = OPER_I_16(); + uint ea = EA_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_move_32_d_d(void) +{ + uint res = DY; + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_a(void) +{ + uint res = AY; + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_di(void) +{ + uint res = OPER_AY_DI_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_aw(void) +{ + uint res = OPER_AW_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_al(void) +{ + uint res = OPER_AL_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_d_i(void) +{ + uint res = OPER_I_32(); + uint* r_dst = &DX; + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_move_32_ai_d(void) +{ + uint res = DY; + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_a(void) +{ + uint res = AY; + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_di(void) +{ + uint res = OPER_AY_DI_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_aw(void) +{ + uint res = OPER_AW_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_al(void) +{ + uint res = OPER_AL_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ai_i(void) +{ + uint res = OPER_I_32(); + uint ea = EA_AX_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_d(void) +{ + uint res = DY; + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_a(void) +{ + uint res = AY; + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_di(void) +{ + uint res = OPER_AY_DI_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_aw(void) +{ + uint res = OPER_AW_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_al(void) +{ + uint res = OPER_AL_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pi_i(void) +{ + uint res = OPER_I_32(); + uint ea = EA_AX_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_pd_d(void) +{ + uint res = DY; + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_a(void) +{ + uint res = AY; + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_di(void) +{ + uint res = OPER_AY_DI_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_aw(void) +{ + uint res = OPER_AW_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_al(void) +{ + uint res = OPER_AL_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_pd_i(void) +{ + uint res = OPER_I_32(); + uint ea = EA_AX_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_16(ea+2, res & 0xFFFF ); + m68ki_write_16(ea, (res >> 16) & 0xFFFF ); +} + + +static void m68k_op_move_32_di_d(void) +{ + uint res = DY; + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_a(void) +{ + uint res = AY; + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_di(void) +{ + uint res = OPER_AY_DI_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_aw(void) +{ + uint res = OPER_AW_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_al(void) +{ + uint res = OPER_AL_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_di_i(void) +{ + uint res = OPER_I_32(); + uint ea = EA_AX_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_d(void) +{ + uint res = DY; + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_a(void) +{ + uint res = AY; + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_di(void) +{ + uint res = OPER_AY_DI_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_aw(void) +{ + uint res = OPER_AW_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_al(void) +{ + uint res = OPER_AL_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_ix_i(void) +{ + uint res = OPER_I_32(); + uint ea = EA_AX_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_d(void) +{ + uint res = DY; + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_a(void) +{ + uint res = AY; + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_di(void) +{ + uint res = OPER_AY_DI_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_aw(void) +{ + uint res = OPER_AW_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_al(void) +{ + uint res = OPER_AL_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_aw_i(void) +{ + uint res = OPER_I_32(); + uint ea = EA_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_d(void) +{ + uint res = DY; + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_a(void) +{ + uint res = AY; + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_ai(void) +{ + uint res = OPER_AY_AI_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_pi(void) +{ + uint res = OPER_AY_PI_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_pd(void) +{ + uint res = OPER_AY_PD_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_di(void) +{ + uint res = OPER_AY_DI_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_ix(void) +{ + uint res = OPER_AY_IX_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_aw(void) +{ + uint res = OPER_AW_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_al(void) +{ + uint res = OPER_AL_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_pcdi(void) +{ + uint res = OPER_PCDI_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_pcix(void) +{ + uint res = OPER_PCIX_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_move_32_al_i(void) +{ + uint res = OPER_I_32(); + uint ea = EA_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_movea_16_d(void) +{ + AX = MAKE_INT_16(DY); +} + + +static void m68k_op_movea_16_a(void) +{ + AX = MAKE_INT_16(AY); +} + + +static void m68k_op_movea_16_ai(void) +{ + AX = MAKE_INT_16(OPER_AY_AI_16()); +} + + +static void m68k_op_movea_16_pi(void) +{ + AX = MAKE_INT_16(OPER_AY_PI_16()); +} + + +static void m68k_op_movea_16_pd(void) +{ + AX = MAKE_INT_16(OPER_AY_PD_16()); +} + + +static void m68k_op_movea_16_di(void) +{ + AX = MAKE_INT_16(OPER_AY_DI_16()); +} + + +static void m68k_op_movea_16_ix(void) +{ + AX = MAKE_INT_16(OPER_AY_IX_16()); +} + + +static void m68k_op_movea_16_aw(void) +{ + AX = MAKE_INT_16(OPER_AW_16()); +} + + +static void m68k_op_movea_16_al(void) +{ + AX = MAKE_INT_16(OPER_AL_16()); +} + + +static void m68k_op_movea_16_pcdi(void) +{ + AX = MAKE_INT_16(OPER_PCDI_16()); +} + + +static void m68k_op_movea_16_pcix(void) +{ + AX = MAKE_INT_16(OPER_PCIX_16()); +} + + +static void m68k_op_movea_16_i(void) +{ + AX = MAKE_INT_16(OPER_I_16()); +} + + +static void m68k_op_movea_32_d(void) +{ + AX = DY; +} + + +static void m68k_op_movea_32_a(void) +{ + AX = AY; +} + + +static void m68k_op_movea_32_ai(void) +{ + AX = OPER_AY_AI_32(); +} + + +static void m68k_op_movea_32_pi(void) +{ + AX = OPER_AY_PI_32(); +} + + +static void m68k_op_movea_32_pd(void) +{ + AX = OPER_AY_PD_32(); +} + + +static void m68k_op_movea_32_di(void) +{ + AX = OPER_AY_DI_32(); +} + + +static void m68k_op_movea_32_ix(void) +{ + AX = OPER_AY_IX_32(); +} + + +static void m68k_op_movea_32_aw(void) +{ + AX = OPER_AW_32(); +} + + +static void m68k_op_movea_32_al(void) +{ + AX = OPER_AL_32(); +} + + +static void m68k_op_movea_32_pcdi(void) +{ + AX = OPER_PCDI_32(); +} + + +static void m68k_op_movea_32_pcix(void) +{ + AX = OPER_PCIX_32(); +} + + +static void m68k_op_movea_32_i(void) +{ + AX = OPER_I_32(); +} + +static void m68k_op_move_16_toc_d(void) +{ + m68ki_set_ccr(DY); +} + + +static void m68k_op_move_16_toc_ai(void) +{ + m68ki_set_ccr(OPER_AY_AI_16()); +} + + +static void m68k_op_move_16_toc_pi(void) +{ + m68ki_set_ccr(OPER_AY_PI_16()); +} + + +static void m68k_op_move_16_toc_pd(void) +{ + m68ki_set_ccr(OPER_AY_PD_16()); +} + + +static void m68k_op_move_16_toc_di(void) +{ + m68ki_set_ccr(OPER_AY_DI_16()); +} + + +static void m68k_op_move_16_toc_ix(void) +{ + m68ki_set_ccr(OPER_AY_IX_16()); +} + + +static void m68k_op_move_16_toc_aw(void) +{ + m68ki_set_ccr(OPER_AW_16()); +} + + +static void m68k_op_move_16_toc_al(void) +{ + m68ki_set_ccr(OPER_AL_16()); +} + + +static void m68k_op_move_16_toc_pcdi(void) +{ + m68ki_set_ccr(OPER_PCDI_16()); +} + + +static void m68k_op_move_16_toc_pcix(void) +{ + m68ki_set_ccr(OPER_PCIX_16()); +} + + +static void m68k_op_move_16_toc_i(void) +{ + m68ki_set_ccr(OPER_I_16()); +} + + +static void m68k_op_move_16_frs_d(void) +{ + DY = MASK_OUT_BELOW_16(DY) | m68ki_get_sr(); +} + + +static void m68k_op_move_16_frs_ai(void) +{ + uint ea = EA_AY_AI_16(); + m68ki_write_16(ea, m68ki_get_sr()); +} + + +static void m68k_op_move_16_frs_pi(void) +{ + uint ea = EA_AY_PI_16(); + m68ki_write_16(ea, m68ki_get_sr()); +} + + +static void m68k_op_move_16_frs_pd(void) +{ + uint ea = EA_AY_PD_16(); + m68ki_write_16(ea, m68ki_get_sr()); +} + + +static void m68k_op_move_16_frs_di(void) +{ + uint ea = EA_AY_DI_16(); + m68ki_write_16(ea, m68ki_get_sr()); +} + + +static void m68k_op_move_16_frs_ix(void) +{ + uint ea = EA_AY_IX_16(); + m68ki_write_16(ea, m68ki_get_sr()); +} + + +static void m68k_op_move_16_frs_aw(void) +{ + uint ea = EA_AW_16(); + m68ki_write_16(ea, m68ki_get_sr()); +} + + +static void m68k_op_move_16_frs_al(void) +{ + uint ea = EA_AL_16(); + m68ki_write_16(ea, m68ki_get_sr()); +} + + +static void m68k_op_move_16_tos_d(void) +{ + if(FLAG_S) + { + m68ki_set_sr(DY); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_ai(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_AY_AI_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_pi(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_AY_PI_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_pd(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_AY_PD_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_di(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_AY_DI_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_ix(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_AY_IX_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_aw(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_AW_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_al(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_AL_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_pcdi(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_PCDI_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_pcix(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_PCIX_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_16_tos_i(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_I_16(); + m68ki_set_sr(new_sr); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_32_fru(void) +{ + if(FLAG_S) + { + AY = REG_USP; + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_move_32_tou(void) +{ + if(FLAG_S) + { + REG_USP = AY; + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_movem_16_re_pd(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = AY; + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + ea -= 2; + m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[15-i])); + count++; + } + AY = ea; + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_re_ai(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_AI_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_re_di(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_DI_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_re_ix(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_IX_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_re_aw(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AW_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_re_al(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AL_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i])); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_32_re_pd(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = AY; + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + ea -= 4; + m68ki_write_16(ea+2, REG_DA[15-i] & 0xFFFF ); + m68ki_write_16(ea, (REG_DA[15-i] >> 16) & 0xFFFF ); + count++; + } + AY = ea; + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_re_ai(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_AI_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_32(ea, REG_DA[i]); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_re_di(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_DI_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_32(ea, REG_DA[i]); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_re_ix(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_IX_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_32(ea, REG_DA[i]); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_re_aw(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AW_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_32(ea, REG_DA[i]); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_re_al(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AL_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + m68ki_write_32(ea, REG_DA[i]); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_16_er_pi(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = AY; + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); + ea += 2; + count++; + } + AY = ea; + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_er_pcdi(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_PCDI_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea))); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_er_pcix(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_PCIX_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea))); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_er_ai(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_AI_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_er_di(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_DI_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_er_ix(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_IX_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_er_aw(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AW_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_16_er_al(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AL_16(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea))); + ea += 2; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_W); +} + + +static void m68k_op_movem_32_er_pi(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = AY; + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_32(ea); + ea += 4; + count++; + } + AY = ea; + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_er_pcdi(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_PCDI_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_pcrel_32(ea); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_er_pcix(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_PCIX_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_pcrel_32(ea); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_er_ai(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_AI_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_32(ea); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_er_di(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_DI_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_32(ea); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_er_ix(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AY_IX_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_32(ea); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_er_aw(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AW_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_32(ea); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movem_32_er_al(void) +{ + uint i = 0; + uint register_list = OPER_I_16(); + uint ea = EA_AL_32(); + uint count = 0; + + for(; i < 16; i++) + if(register_list & (1 << i)) + { + REG_DA[i] = m68ki_read_32(ea); + ea += 4; + count++; + } + + USE_CYCLES(count * CYC_MOVEM_L); +} + + +static void m68k_op_movep_16_re(void) +{ + uint ea = EA_AY_DI_16(); + uint src = DX; + + m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 8)); + m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src)); +} + + +static void m68k_op_movep_32_re(void) +{ + uint ea = EA_AY_DI_32(); + uint src = DX; + + m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 24)); + m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 16)); + m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 8)); + m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src)); +} + + +static void m68k_op_movep_16_er(void) +{ + uint ea = EA_AY_DI_16(); + uint* r_dst = &DX; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8(ea) << 8) + m68ki_read_8(ea + 2)); +} + + +static void m68k_op_movep_32_er(void) +{ + uint ea = EA_AY_DI_32(); + + DX = (m68ki_read_8(ea) << 24) + (m68ki_read_8(ea + 2) << 16) + + (m68ki_read_8(ea + 4) << 8) + m68ki_read_8(ea + 6); +} + + +static void m68k_op_moveq_32(void) +{ + uint res = DX = MAKE_INT_8(MASK_OUT_ABOVE_8(REG_IR)); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_d(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(DY); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_ai(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_AI_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_pi(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_PI_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_pd(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_PD_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_di(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_DI_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_ix(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AY_IX_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_aw(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AW_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_al(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_AL_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_pcdi(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_PCDI_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_pcix(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_PCIX_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_muls_16_i(void) +{ + uint* r_dst = &DX; + sint src = MAKE_INT_16(OPER_I_16()); + uint res = MASK_OUT_ABOVE_32( src * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst))); + + UseMulsCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_d(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(DY); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_mulu_16_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_16(); + uint res = src * MASK_OUT_ABOVE_16(*r_dst); + + UseMuluCycles(src); + + *r_dst = res; + + FLAG_Z = res; + FLAG_N = NFLAG_32(res); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_nbcd_8_d(void) +{ + uint* r_dst = &DY; + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_di(void) +{ + uint ea = EA_AY_DI_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_aw(void) +{ + uint ea = EA_AW_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_nbcd_8_al(void) +{ + uint ea = EA_AL_8(); + uint dst = m68ki_read_8(ea); + uint res = -dst - XFLAG_AS_1(); + + if(res) + { + FLAG_V = res; /* Undefined V behavior */ + + if(((res|dst) & 0x0f) == 0x0) + res = (res & 0xf0) + 6; + + res = MASK_OUT_ABOVE_8(res+0x9a); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + + m68ki_write_8(ea, res); + + FLAG_Z |= res; + FLAG_C = CFLAG_SET; + FLAG_X = XFLAG_SET; + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + } + else + { + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + FLAG_X = XFLAG_CLEAR; + FLAG_N = NFLAG_CLEAR; + } +} + + +static void m68k_op_neg_8_d(void) +{ + uint* r_dst = &DY; + uint res = 0 - MASK_OUT_ABOVE_8(*r_dst); + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = *r_dst & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_neg_8_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_di(void) +{ + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_aw(void) +{ + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_8_al(void) +{ + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_8(res); + FLAG_C = FLAG_X = CFLAG_8(res); + FLAG_V = src & res; + FLAG_Z = MASK_OUT_ABOVE_8(res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_neg_16_d(void) +{ + uint* r_dst = &DY; + uint res = 0 - MASK_OUT_ABOVE_16(*r_dst); + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (*r_dst & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_neg_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (src & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_neg_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (src & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_neg_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (src & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_neg_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (src & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_neg_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (src & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_neg_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (src & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_neg_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_16(res); + FLAG_C = FLAG_X = CFLAG_16(res); + FLAG_V = (src & res)>>8; + FLAG_Z = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_neg_32_d(void) +{ + uint* r_dst = &DY; + uint res = 0 - *r_dst; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(*r_dst, 0, res); + FLAG_V = (*r_dst & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_neg_32_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_neg_32_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_neg_32_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_neg_32_di(void) +{ + uint ea = EA_AY_DI_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_neg_32_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_neg_32_aw(void) +{ + uint ea = EA_AW_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_neg_32_al(void) +{ + uint ea = EA_AL_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - src; + + FLAG_N = NFLAG_32(res); + FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + FLAG_Z = MASK_OUT_ABOVE_32(res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_negx_8_d(void) +{ + uint* r_dst = &DY; + uint res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = *r_dst & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; +} + + +static void m68k_op_negx_8_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_di(void) +{ + uint ea = EA_AY_DI_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_aw(void) +{ + uint ea = EA_AW_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_8_al(void) +{ + uint ea = EA_AL_8(); + uint src = m68ki_read_8(ea); + uint res = 0 - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = src & res; + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_negx_16_d(void) +{ + uint* r_dst = &DY; + uint res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (*r_dst & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; +} + + +static void m68k_op_negx_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (src & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_negx_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (src & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_negx_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (src & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_negx_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (src & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_negx_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (src & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_negx_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (src & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_negx_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = (src & res)>>8; + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_negx_32_d(void) +{ + uint* r_dst = &DY; + uint res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(*r_dst, 0, res); + FLAG_V = (*r_dst & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + *r_dst = res; +} + + +static void m68k_op_negx_32_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_negx_32_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_negx_32_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_negx_32_di(void) +{ + uint ea = EA_AY_DI_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_negx_32_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_negx_32_aw(void) +{ + uint ea = EA_AW_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_negx_32_al(void) +{ + uint ea = EA_AL_32(); + uint src = m68ki_read_32(ea); + uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res); + FLAG_V = (src & res)>>24; + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_nop(void) +{ +} + + +static void m68k_op_not_8_d(void) +{ + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_8(~*r_dst); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_di(void) +{ + uint ea = EA_AY_DI_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_aw(void) +{ + uint ea = EA_AW_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_8_al(void) +{ + uint ea = EA_AL_8(); + uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_d(void) +{ + uint* r_dst = &DY; + uint res = MASK_OUT_ABOVE_16(~*r_dst); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_aw(void) +{ + uint ea = EA_AW_16(); + uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_16_al(void) +{ + uint ea = EA_AL_16(); + uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_d(void) +{ + uint* r_dst = &DY; + uint res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_di(void) +{ + uint ea = EA_AY_DI_32(); + uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_aw(void) +{ + uint ea = EA_AW_32(); + uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_not_32_al(void) +{ + uint ea = EA_AL_32(); + uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea)); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_d(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= MASK_OUT_ABOVE_8(DY))); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_ai(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_AI_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_pi(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PI_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_pi7(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PI_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_pd(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PD_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_pd7(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PD_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_di(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_DI_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_ix(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_IX_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_aw(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_AW_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_al(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_AL_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_pcdi(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCDI_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_pcix(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCIX_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_er_i(void) +{ + uint res = MASK_OUT_ABOVE_8((DX |= OPER_I_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_d(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= MASK_OUT_ABOVE_16(DY))); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_ai(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_AI_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_pi(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PI_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_pd(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PD_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_di(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_DI_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_ix(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_IX_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_aw(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_AW_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_al(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_AL_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_pcdi(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCDI_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_pcix(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCIX_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_er_i(void) +{ + uint res = MASK_OUT_ABOVE_16((DX |= OPER_I_16())); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_d(void) +{ + uint res = DX |= DY; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_ai(void) +{ + uint res = DX |= OPER_AY_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_pi(void) +{ + uint res = DX |= OPER_AY_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_pd(void) +{ + uint res = DX |= OPER_AY_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_di(void) +{ + uint res = DX |= OPER_AY_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_ix(void) +{ + uint res = DX |= OPER_AY_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_aw(void) +{ + uint res = DX |= OPER_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_al(void) +{ + uint res = DX |= OPER_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_pcdi(void) +{ + uint res = DX |= OPER_PCDI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_pcix(void) +{ + uint res = DX |= OPER_PCIX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_er_i(void) +{ + uint res = DX |= OPER_I_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_di(void) +{ + uint ea = EA_AY_DI_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_aw(void) +{ + uint ea = EA_AW_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_8_re_al(void) +{ + uint ea = EA_AL_8(); + uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_re_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_re_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_re_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_re_di(void) +{ + uint ea = EA_AY_DI_16(); + uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_re_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_re_aw(void) +{ + uint ea = EA_AW_16(); + uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_16_re_al(void) +{ + uint ea = EA_AL_16(); + uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_re_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint res = DX | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_re_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint res = DX | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_re_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint res = DX | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_re_di(void) +{ + uint ea = EA_AY_DI_32(); + uint res = DX | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_re_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint res = DX | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_re_aw(void) +{ + uint ea = EA_AW_32(); + uint res = DX | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_or_32_re_al(void) +{ + uint ea = EA_AL_32(); + uint res = DX | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_d(void) +{ + uint res = MASK_OUT_ABOVE_8((DY |= OPER_I_8())); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_ai(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_AI_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_pi(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PI_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_pi7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PI_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_pd(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PD_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_pd7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PD_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_di(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_DI_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_ix(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_IX_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_aw(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AW_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_8_al(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AL_8(); + uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea)); + + m68ki_write_8(ea, res); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY |= OPER_I_16()); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_ai(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_AI_16(); + uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_pi(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PI_16(); + uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_pd(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PD_16(); + uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_di(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_DI_16(); + uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_ix(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_IX_16(); + uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_aw(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AW_16(); + uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_al(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AL_16(); + uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_d(void) +{ + uint res = DY |= OPER_I_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_ai(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_AI_32(); + uint res = src | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_pi(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PI_32(); + uint res = src | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_pd(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PD_32(); + uint res = src | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_di(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_DI_32(); + uint res = src | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_ix(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_IX_32(); + uint res = src | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_aw(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AW_32(); + uint res = src | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_32_al(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AL_32(); + uint res = src | m68ki_read_32(ea); + + m68ki_write_32(ea, res); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ori_16_toc(void) +{ + m68ki_set_ccr(m68ki_get_ccr() | OPER_I_16()); +} + + +static void m68k_op_ori_16_tos(void) +{ + if(FLAG_S) + { + uint src = OPER_I_16(); + m68ki_set_sr(m68ki_get_sr() | src); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_pea_32_ai(void) +{ + uint ea = EA_AY_AI_32(); + + m68ki_push_32(ea); +} + + +static void m68k_op_pea_32_di(void) +{ + uint ea = EA_AY_DI_32(); + + m68ki_push_32(ea); +} + + +static void m68k_op_pea_32_ix(void) +{ + uint ea = EA_AY_IX_32(); + + m68ki_push_32(ea); +} + + +static void m68k_op_pea_32_aw(void) +{ + uint ea = EA_AW_32(); + + m68ki_push_32(ea); +} + + +static void m68k_op_pea_32_al(void) +{ + uint ea = EA_AL_32(); + + m68ki_push_32(ea); +} + + +static void m68k_op_pea_32_pcdi(void) +{ + uint ea = EA_PCDI_32(); + + m68ki_push_32(ea); +} + + +static void m68k_op_pea_32_pcix(void) +{ + uint ea = EA_PCIX_32(); + + m68ki_push_32(ea); +} + + +static void m68k_op_reset(void) +{ + if(FLAG_S) + { + m68ki_output_reset() /* auto-disable (see m68kcpu.h) */ + USE_CYCLES(CYC_RESET); + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_ror_8_s(void) +{ + uint* r_dst = &DY; + uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint shift = orig_shift & 7; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROR_8(src, shift); + + if(orig_shift != 0) + USE_CYCLES(orig_shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = src << (9-orig_shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = ROR_16(src, shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << (9-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_32_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint64 src = *r_dst; + uint res = ROR_32(src, shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = src << (9-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_8_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift & 7; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROR_8(src, shift); + + if(orig_shift != 0) + { + USE_CYCLES(orig_shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + FLAG_C = src << (8-((shift-1)&7)); + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_8(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift & 15; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = ROR_16(src, shift); + + if(orig_shift != 0) + { + USE_CYCLES(orig_shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + FLAG_C = (src >> ((shift - 1) & 15)) << 8; + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_16(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_32_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift & 31; + uint64 src = *r_dst; + uint res = ROR_32(src, shift); + + if(orig_shift != 0) + { + USE_CYCLES(orig_shift * CYC_SHIFT); + + *r_dst = res; + FLAG_C = (src >> ((shift - 1) & 31)) << 8; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_32(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_16(src, 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_16(src, 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_16(src, 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_16(src, 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_16(src, 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_16(src, 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_ror_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_16(src, 1); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src << 8; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_8_s(void) +{ + uint* r_dst = &DY; + uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint shift = orig_shift & 7; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROL_8(src, shift); + + if(orig_shift != 0) + USE_CYCLES(orig_shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_C = src << orig_shift; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = ROL_16(src, shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> (8-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_32_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint64 src = *r_dst; + uint res = ROL_32(src, shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_C = src >> (24-shift); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_8_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift & 7; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROL_8(src, shift); + + if(orig_shift != 0) + { + USE_CYCLES(orig_shift * CYC_SHIFT); + + if(shift != 0) + { + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + FLAG_C = src << shift; + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + FLAG_C = (src & 1)<<8; + FLAG_N = NFLAG_8(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_8(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift & 15; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, shift)); + + if(orig_shift != 0) + { + USE_CYCLES(orig_shift * CYC_SHIFT); + + if(shift != 0) + { + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + FLAG_C = (src << shift) >> 8; + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + FLAG_C = (src & 1)<<8; + FLAG_N = NFLAG_16(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_16(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_32_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift & 31; + uint64 src = *r_dst; + uint res = ROL_32(src, shift); + + if(orig_shift != 0) + { + USE_CYCLES(orig_shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_C = (src >> ((32 - shift) & 0x1f)) << 8; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = CFLAG_CLEAR; + FLAG_N = NFLAG_32(src); + FLAG_Z = src; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rol_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1)); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_C = src >> 7; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_8_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res; + res = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_32_s(void) +{ +#if M68K_USE_64_BIT + + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint64 src = *r_dst; + uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + res = ROR_33_64(res, shift); + + FLAG_C = FLAG_X = res >> 24; + res = MASK_OUT_ABOVE_32(res); + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + +#else + + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift))); + uint new_x_flag = src & (1 << (shift - 1)); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_C = FLAG_X = (new_x_flag != 0)<<8; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + +#endif +} + + +static void m68k_op_roxr_8_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + + if(orig_shift != 0) + { + uint shift = orig_shift % 9; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift); + + USE_CYCLES(orig_shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res; + res = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = FLAG_X; + FLAG_N = NFLAG_8(*r_dst); + FLAG_Z = MASK_OUT_ABOVE_8(*r_dst); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + + if(orig_shift != 0) + { + uint shift = orig_shift % 17; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift); + + USE_CYCLES(orig_shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = FLAG_X; + FLAG_N = NFLAG_16(*r_dst); + FLAG_Z = MASK_OUT_ABOVE_16(*r_dst); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_32_r(void) +{ +#if M68K_USE_64_BIT + + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + + if(orig_shift != 0) + { + uint shift = orig_shift % 33; + uint64 src = *r_dst; + uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); + + res = ROR_33_64(res, shift); + + USE_CYCLES(orig_shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res >> 24; + res = MASK_OUT_ABOVE_32(res); + + *r_dst = res; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = FLAG_X; + FLAG_N = NFLAG_32(*r_dst); + FLAG_Z = *r_dst; + FLAG_V = VFLAG_CLEAR; + +#else + + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift % 33; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift))); + uint new_x_flag = src & (1 << (shift - 1)); + + if(orig_shift != 0) + USE_CYCLES(orig_shift * CYC_SHIFT); + + if(shift != 0) + { + *r_dst = res; + FLAG_X = (new_x_flag != 0)<<8; + } + else + res = src; + FLAG_C = FLAG_X; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + +#endif +} + + +static void m68k_op_roxr_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxr_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_8_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res; + res = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_s(void) +{ + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_32_s(void) +{ +#if M68K_USE_64_BIT + + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint64 src = *r_dst; + uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + res = ROL_33_64(res, shift); + + FLAG_C = FLAG_X = res >> 24; + res = MASK_OUT_ABOVE_32(res); + + *r_dst = res; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + +#else + + uint* r_dst = &DY; + uint shift = (((REG_IR >> 9) - 1) & 7) + 1; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1))); + uint new_x_flag = src & (1 << (32 - shift)); + + if(shift != 0) + USE_CYCLES(shift * CYC_SHIFT); + + *r_dst = res; + + FLAG_C = FLAG_X = (new_x_flag != 0)<<8; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + +#endif +} + + +static void m68k_op_roxl_8_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + + + if(orig_shift != 0) + { + uint shift = orig_shift % 9; + uint src = MASK_OUT_ABOVE_8(*r_dst); + uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift); + + USE_CYCLES(orig_shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res; + res = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = FLAG_X; + FLAG_N = NFLAG_8(*r_dst); + FLAG_Z = MASK_OUT_ABOVE_8(*r_dst); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_r(void) +{ + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + + if(orig_shift != 0) + { + uint shift = orig_shift % 17; + uint src = MASK_OUT_ABOVE_16(*r_dst); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift); + + USE_CYCLES(orig_shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = FLAG_X; + FLAG_N = NFLAG_16(*r_dst); + FLAG_Z = MASK_OUT_ABOVE_16(*r_dst); + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_32_r(void) +{ +#if M68K_USE_64_BIT + + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + + if(orig_shift != 0) + { + uint shift = orig_shift % 33; + uint64 src = *r_dst; + uint64 res = src | (((uint64)XFLAG_AS_1()) << 32); + + res = ROL_33_64(res, shift); + + USE_CYCLES(orig_shift * CYC_SHIFT); + + FLAG_C = FLAG_X = res >> 24; + res = MASK_OUT_ABOVE_32(res); + + *r_dst = res; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + return; + } + + FLAG_C = FLAG_X; + FLAG_N = NFLAG_32(*r_dst); + FLAG_Z = *r_dst; + FLAG_V = VFLAG_CLEAR; + +#else + + uint* r_dst = &DY; + uint orig_shift = DX & 0x3f; + uint shift = orig_shift % 33; + uint src = *r_dst; + uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1))); + uint new_x_flag = src & (1 << (32 - shift)); + + if(orig_shift != 0) + USE_CYCLES(orig_shift * CYC_SHIFT); + + if(shift != 0) + { + *r_dst = res; + FLAG_X = (new_x_flag != 0)<<8; + } + else + res = src; + FLAG_C = FLAG_X; + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + +#endif +} + + +static void m68k_op_roxl_16_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = m68ki_read_16(ea); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = m68ki_read_16(ea); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = m68ki_read_16(ea); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = m68ki_read_16(ea); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = m68ki_read_16(ea); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_aw(void) +{ + uint ea = EA_AW_16(); + uint src = m68ki_read_16(ea); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_roxl_16_al(void) +{ + uint ea = EA_AL_16(); + uint src = m68ki_read_16(ea); + uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1); + + FLAG_C = FLAG_X = res >> 8; + res = MASK_OUT_ABOVE_16(res); + + m68ki_write_16(ea, res); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_rte_32(void) +{ + if(FLAG_S) + { + uint new_sr; + uint new_pc; + + new_sr = m68ki_pull_16(); + new_pc = m68ki_pull_32(); + m68ki_jump(new_pc); + m68ki_set_sr(new_sr); + +#if M68K_EMULATE_ADDRESS_ERROR + CPU_INSTR_MODE = INSTRUCTION_YES; + CPU_RUN_MODE = RUN_MODE_NORMAL; +#endif + + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_rtr_32(void) +{ + m68ki_set_ccr(m68ki_pull_16()); + m68ki_jump(m68ki_pull_32()); +} + + +static void m68k_op_rts_32(void) +{ + m68ki_jump(m68ki_pull_32()); +} + + +static void m68k_op_sbcd_8_rr(void) +{ + uint* r_dst = &DX; + uint src = DY; + uint dst = *r_dst; + uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); + uint corf = 0; + + if(res > 0xf) + corf = 6; + + res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); + FLAG_V = res; /* Undefined V behavior */ + + if(res > 0xff) + { + res += 0xa0; + FLAG_X = FLAG_C = CFLAG_SET; + } + else if(res < corf) + FLAG_X = FLAG_C = CFLAG_SET; + else + FLAG_X = FLAG_C = 0; + + res = MASK_OUT_ABOVE_8(res-corf); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; +} + + +static void m68k_op_sbcd_8_mm_ax7(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); + uint corf = 0; + + if(res > 0xf) + corf = 6; + res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); + FLAG_V = res; /* Undefined V behavior */ + + if(res > 0xff) + { + res += 0xa0; + FLAG_X = FLAG_C = CFLAG_SET; + } + else if(res < corf) + FLAG_X = FLAG_C = CFLAG_SET; + else + FLAG_X = FLAG_C = 0; + + res = MASK_OUT_ABOVE_8(res-corf); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_sbcd_8_mm_ay7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); + uint corf = 0; + + if(res > 0xf) + corf = 6; + res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); + FLAG_V = res; /* Undefined V behavior */ + + if(res > 0xff) + { + res += 0xa0; + FLAG_X = FLAG_C = CFLAG_SET; + } + else if(res < corf) + FLAG_X = FLAG_C = CFLAG_SET; + else + FLAG_X = FLAG_C = 0; + + res = MASK_OUT_ABOVE_8(res-corf); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_sbcd_8_mm_axy7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); + uint corf = 0; + + if(res > 0xf) + corf = 6; + res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); + FLAG_V = res; /* Undefined V behavior */ + + if(res > 0xff) + { + res += 0xa0; + FLAG_X = FLAG_C = CFLAG_SET; + } + else if(res < corf) + FLAG_X = FLAG_C = CFLAG_SET; + else + FLAG_X = FLAG_C = 0; + + res = MASK_OUT_ABOVE_8(res-corf); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_sbcd_8_mm(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(); + uint corf = 0; + + if(res > 0xf) + corf = 6; + res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src); + FLAG_V = res; /* Undefined V behavior */ + + if(res > 0xff) + { + res += 0xa0; + FLAG_X = FLAG_C = CFLAG_SET; + } + else if(res < corf) + FLAG_X = FLAG_C = CFLAG_SET; + else + FLAG_X = FLAG_C = 0; + + res = MASK_OUT_ABOVE_8(res-corf); + + FLAG_V &= ~res; /* Undefined V behavior part II */ + FLAG_N = NFLAG_8(res); /* Undefined N behavior */ + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_st_8_d(void) +{ + DY |= 0xff; +} + + +static void m68k_op_st_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), 0xff); +} + + +static void m68k_op_st_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), 0xff); +} + + +static void m68k_op_st_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), 0xff); +} + + +static void m68k_op_st_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), 0xff); +} + + +static void m68k_op_st_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), 0xff); +} + + +static void m68k_op_st_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), 0xff); +} + + +static void m68k_op_st_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), 0xff); +} + + +static void m68k_op_st_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), 0xff); +} + + +static void m68k_op_st_8_al(void) +{ + m68ki_write_8(EA_AL_8(), 0xff); +} + + +static void m68k_op_sf_8_d(void) +{ + DY &= 0xffffff00; +} + + +static void m68k_op_sf_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), 0); +} + + +static void m68k_op_sf_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), 0); +} + + +static void m68k_op_sf_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), 0); +} + + +static void m68k_op_sf_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), 0); +} + + +static void m68k_op_sf_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), 0); +} + + +static void m68k_op_sf_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), 0); +} + + +static void m68k_op_sf_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), 0); +} + + +static void m68k_op_sf_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), 0); +} + + +static void m68k_op_sf_8_al(void) +{ + m68ki_write_8(EA_AL_8(), 0); +} + + +static void m68k_op_shi_8_d(void) +{ + if(COND_HI()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_sls_8_d(void) +{ + if(COND_LS()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_scc_8_d(void) +{ + if(COND_CC()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_scs_8_d(void) +{ + if(COND_CS()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_sne_8_d(void) +{ + if(COND_NE()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_seq_8_d(void) +{ + if(COND_EQ()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_svc_8_d(void) +{ + if(COND_VC()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_svs_8_d(void) +{ + if(COND_VS()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_spl_8_d(void) +{ + if(COND_PL()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_smi_8_d(void) +{ + if(COND_MI()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_sge_8_d(void) +{ + if(COND_GE()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_slt_8_d(void) +{ + if(COND_LT()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_sgt_8_d(void) +{ + if(COND_GT()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_sle_8_d(void) +{ + if(COND_LE()) + { + DY |= 0xff; + USE_CYCLES(CYC_SCC_R_TRUE); + return; + } + DY &= 0xffffff00; +} + + +static void m68k_op_shi_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_shi_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_HI() ? 0xff : 0); +} + + +static void m68k_op_sls_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_sls_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_LS() ? 0xff : 0); +} + + +static void m68k_op_scc_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scc_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_CC() ? 0xff : 0); +} + + +static void m68k_op_scs_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_scs_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_CS() ? 0xff : 0); +} + + +static void m68k_op_sne_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_sne_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_NE() ? 0xff : 0); +} + + +static void m68k_op_seq_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_seq_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_EQ() ? 0xff : 0); +} + + +static void m68k_op_svc_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svc_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_VC() ? 0xff : 0); +} + + +static void m68k_op_svs_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_svs_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_VS() ? 0xff : 0); +} + + +static void m68k_op_spl_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_spl_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_PL() ? 0xff : 0); +} + + +static void m68k_op_smi_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_smi_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_MI() ? 0xff : 0); +} + + +static void m68k_op_sge_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_sge_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_GE() ? 0xff : 0); +} + + +static void m68k_op_slt_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_slt_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_LT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sgt_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_GT() ? 0xff : 0); +} + + +static void m68k_op_sle_8_ai(void) +{ + m68ki_write_8(EA_AY_AI_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_pi(void) +{ + m68ki_write_8(EA_AY_PI_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_pi7(void) +{ + m68ki_write_8(EA_A7_PI_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_pd(void) +{ + m68ki_write_8(EA_AY_PD_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_pd7(void) +{ + m68ki_write_8(EA_A7_PD_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_di(void) +{ + m68ki_write_8(EA_AY_DI_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_ix(void) +{ + m68ki_write_8(EA_AY_IX_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_aw(void) +{ + m68ki_write_8(EA_AW_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_sle_8_al(void) +{ + m68ki_write_8(EA_AL_8(), COND_LE() ? 0xff : 0); +} + + +static void m68k_op_stop(void) +{ + if(FLAG_S) + { + uint new_sr = OPER_I_16(); + CPU_STOPPED |= STOP_LEVEL_STOP; + m68ki_set_sr(new_sr); + if (CPU_STOPPED) + { + SET_CYCLES(m68ki_cpu.cycle_end - 4*MUL); + } + return; + } + m68ki_exception_privilege_violation(); +} + + +static void m68k_op_sub_8_er_d(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_8(DY); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_pi7(void) +{ + uint* r_dst = &DX; + uint src = OPER_A7_PI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_pd7(void) +{ + uint* r_dst = &DX; + uint src = OPER_A7_PD_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_8_er_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_d(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(DY); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_a(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(AY); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_16_er_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_sub_32_er_d(void) +{ + uint* r_dst = &DX; + uint src = DY; + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_a(void) +{ + uint* r_dst = &DX; + uint src = AY; + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_ai(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_AI_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_pi(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PI_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_pd(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_PD_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_di(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_DI_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_ix(void) +{ + uint* r_dst = &DX; + uint src = OPER_AY_IX_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_aw(void) +{ + uint* r_dst = &DX; + uint src = OPER_AW_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_al(void) +{ + uint* r_dst = &DX; + uint src = OPER_AL_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_pcdi(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCDI_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_pcix(void) +{ + uint* r_dst = &DX; + uint src = OPER_PCIX_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_32_er_i(void) +{ + uint* r_dst = &DX; + uint src = OPER_I_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_sub_8_re_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_di(void) +{ + uint ea = EA_AY_DI_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_aw(void) +{ + uint ea = EA_AW_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_8_re_al(void) +{ + uint ea = EA_AL_8(); + uint src = MASK_OUT_ABOVE_8(DX); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_sub_16_re_ai(void) +{ + uint ea = EA_AY_AI_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_sub_16_re_pi(void) +{ + uint ea = EA_AY_PI_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_sub_16_re_pd(void) +{ + uint ea = EA_AY_PD_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_sub_16_re_di(void) +{ + uint ea = EA_AY_DI_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_sub_16_re_ix(void) +{ + uint ea = EA_AY_IX_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_sub_16_re_aw(void) +{ + uint ea = EA_AW_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_sub_16_re_al(void) +{ + uint ea = EA_AL_16(); + uint src = MASK_OUT_ABOVE_16(DX); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_sub_32_re_ai(void) +{ + uint ea = EA_AY_AI_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_sub_32_re_pi(void) +{ + uint ea = EA_AY_PI_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_sub_32_re_pd(void) +{ + uint ea = EA_AY_PD_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_sub_32_re_di(void) +{ + uint ea = EA_AY_DI_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_sub_32_re_ix(void) +{ + uint ea = EA_AY_IX_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_sub_32_re_aw(void) +{ + uint ea = EA_AW_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_sub_32_re_al(void) +{ + uint ea = EA_AL_32(); + uint src = DX; + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_suba_16_d(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY)); +} + + +static void m68k_op_suba_16_a(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY)); +} + + +static void m68k_op_suba_16_ai(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_AI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_pi(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_PI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_pd(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_PD_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_di(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_DI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_ix(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AY_IX_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_aw(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AW_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_al(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_AL_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_pcdi(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_PCDI_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_pcix(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_PCIX_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_16_i(void) +{ + uint* r_dst = &AX; + uint src = MAKE_INT_16(OPER_I_16()); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_d(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY); +} + + +static void m68k_op_suba_32_a(void) +{ + uint* r_dst = &AX; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY); +} + + +static void m68k_op_suba_32_ai(void) +{ + uint* r_dst = &AX; + uint src = OPER_AY_AI_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_pi(void) +{ + uint* r_dst = &AX; + uint src = OPER_AY_PI_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_pd(void) +{ + uint* r_dst = &AX; + uint src = OPER_AY_PD_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_di(void) +{ + uint* r_dst = &AX; + uint src = OPER_AY_DI_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_ix(void) +{ + uint* r_dst = &AX; + uint src = OPER_AY_IX_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_aw(void) +{ + uint* r_dst = &AX; + uint src = OPER_AW_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_al(void) +{ + uint* r_dst = &AX; + uint src = OPER_AL_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_pcdi(void) +{ + uint* r_dst = &AX; + uint src = OPER_PCDI_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_pcix(void) +{ + uint* r_dst = &AX; + uint src = OPER_PCIX_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_suba_32_i(void) +{ + uint* r_dst = &AX; + uint src = OPER_I_32(); + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - src); +} + + +static void m68k_op_subi_8_d(void) +{ + uint* r_dst = &DY; + uint src = OPER_I_8(); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_subi_8_ai(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_AI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_pi(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_pi7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_pd(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_pd7(void) +{ + uint src = OPER_I_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_di(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_DI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_ix(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AY_IX_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_aw(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AW_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_8_al(void) +{ + uint src = OPER_I_8(); + uint ea = EA_AL_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subi_16_d(void) +{ + uint* r_dst = &DY; + uint src = OPER_I_16(); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_subi_16_ai(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_AI_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subi_16_pi(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PI_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subi_16_pd(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_PD_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subi_16_di(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_DI_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subi_16_ix(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AY_IX_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subi_16_aw(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AW_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subi_16_al(void) +{ + uint src = OPER_I_16(); + uint ea = EA_AL_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subi_32_d(void) +{ + uint* r_dst = &DY; + uint src = OPER_I_32(); + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_subi_32_ai(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_AI_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subi_32_pi(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PI_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subi_32_pd(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_PD_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subi_32_di(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_DI_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subi_32_ix(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AY_IX_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subi_32_aw(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AW_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subi_32_al(void) +{ + uint src = OPER_I_32(); + uint ea = EA_AL_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_d(void) +{ + uint* r_dst = &DY; + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z; +} + + +static void m68k_op_subq_8_ai(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_AI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_pi(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_pi7(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_A7_PI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_pd(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_pd7(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_di(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_DI_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_ix(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_IX_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_aw(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AW_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_8_al(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AL_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src; + + FLAG_N = NFLAG_8(res); + FLAG_Z = MASK_OUT_ABOVE_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + m68ki_write_8(ea, FLAG_Z); +} + + +static void m68k_op_subq_16_d(void) +{ + uint* r_dst = &DY; + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z; +} + + +static void m68k_op_subq_16_a(void) +{ + uint* r_dst = &AY; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1)); +} + + +static void m68k_op_subq_16_ai(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_AI_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subq_16_pi(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PI_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subq_16_pd(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PD_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subq_16_di(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_DI_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subq_16_ix(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_IX_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subq_16_aw(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AW_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subq_16_al(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AL_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src; + + FLAG_N = NFLAG_16(res); + FLAG_Z = MASK_OUT_ABOVE_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + m68ki_write_16(ea, FLAG_Z); +} + + +static void m68k_op_subq_32_d(void) +{ + uint* r_dst = &DY; + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint dst = *r_dst; + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + *r_dst = FLAG_Z; +} + + +static void m68k_op_subq_32_a(void) +{ + uint* r_dst = &AY; + + *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1)); +} + + +static void m68k_op_subq_32_ai(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_AI_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subq_32_pi(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PI_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subq_32_pd(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_PD_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subq_32_di(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_DI_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subq_32_ix(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AY_IX_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subq_32_aw(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AW_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subq_32_al(void) +{ + uint src = (((REG_IR >> 9) - 1) & 7) + 1; + uint ea = EA_AL_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src; + + FLAG_N = NFLAG_32(res); + FLAG_Z = MASK_OUT_ABOVE_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + m68ki_write_32(ea, FLAG_Z); +} + + +static void m68k_op_subx_8_rr(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_8(DY); + uint dst = MASK_OUT_ABOVE_8(*r_dst); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_8(*r_dst) | res; +} + + +static void m68k_op_subx_16_rr(void) +{ + uint* r_dst = &DX; + uint src = MASK_OUT_ABOVE_16(DY); + uint dst = MASK_OUT_ABOVE_16(*r_dst); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + *r_dst = MASK_OUT_BELOW_16(*r_dst) | res; +} + + +static void m68k_op_subx_32_rr(void) +{ + uint* r_dst = &DX; + uint src = DY; + uint dst = *r_dst; + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + *r_dst = res; +} + + +static void m68k_op_subx_8_mm_ax7(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_subx_8_mm_ay7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_subx_8_mm_axy7(void) +{ + uint src = OPER_A7_PD_8(); + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_subx_8_mm(void) +{ + uint src = OPER_AY_PD_8(); + uint ea = EA_AX_PD_8(); + uint dst = m68ki_read_8(ea); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_8(res); + FLAG_X = FLAG_C = CFLAG_8(res); + FLAG_V = VFLAG_SUB_8(src, dst, res); + + res = MASK_OUT_ABOVE_8(res); + FLAG_Z |= res; + + m68ki_write_8(ea, res); +} + + +static void m68k_op_subx_16_mm(void) +{ + uint src = OPER_AY_PD_16(); + uint ea = EA_AX_PD_16(); + uint dst = m68ki_read_16(ea); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_16(res); + FLAG_X = FLAG_C = CFLAG_16(res); + FLAG_V = VFLAG_SUB_16(src, dst, res); + + res = MASK_OUT_ABOVE_16(res); + FLAG_Z |= res; + + m68ki_write_16(ea, res); +} + + +static void m68k_op_subx_32_mm(void) +{ + uint src = OPER_AY_PD_32(); + uint ea = EA_AX_PD_32(); + uint dst = m68ki_read_32(ea); + uint res = dst - src - XFLAG_AS_1(); + + FLAG_N = NFLAG_32(res); + FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res); + FLAG_V = VFLAG_SUB_32(src, dst, res); + + res = MASK_OUT_ABOVE_32(res); + FLAG_Z |= res; + + m68ki_write_32(ea, res); +} + + +static void m68k_op_swap_32(void) +{ + uint* r_dst = &DY; + + FLAG_Z = MASK_OUT_ABOVE_32(*r_dst<<16); + *r_dst = (*r_dst>>16) | FLAG_Z; + + FLAG_Z = *r_dst; + FLAG_N = NFLAG_32(*r_dst); + FLAG_C = CFLAG_CLEAR; + FLAG_V = VFLAG_CLEAR; +} + + +static void m68k_op_tas_8_d(void) +{ + uint* r_dst = &DY; + + FLAG_Z = MASK_OUT_ABOVE_8(*r_dst); + FLAG_N = NFLAG_8(*r_dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + *r_dst |= 0x80; +} + + +static void m68k_op_tas_8_ai(void) +{ + uint ea = EA_AY_AI_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_pi(void) +{ + uint ea = EA_AY_PI_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_pi7(void) +{ + uint ea = EA_A7_PI_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_pd(void) +{ + uint ea = EA_AY_PD_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_pd7(void) +{ + uint ea = EA_A7_PD_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_di(void) +{ + uint ea = EA_AY_DI_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_ix(void) +{ + uint ea = EA_AY_IX_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_aw(void) +{ + uint ea = EA_AW_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_tas_8_al(void) +{ + uint ea = EA_AL_8(); + uint dst = m68ki_read_8(ea); + + FLAG_Z = dst; + FLAG_N = NFLAG_8(dst); + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; + + /* The Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS writeback + disabled in order to function properly. Some Amiga software may also rely + on this, but only when accessing specific addresses so additional functionality + will be needed. */ + if (m68ki_tas_callback()) m68ki_write_8(ea, dst | 0x80); +} + + +static void m68k_op_trap(void) +{ + /* Trap#n stacks exception frame type 0 */ + m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (REG_IR & 0xf)); /* HJB 990403 */ +} + + +static void m68k_op_trapv(void) +{ + if(COND_VC()) + { + return; + } + m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */ +} + + +static void m68k_op_tst_8_d(void) +{ + uint res = MASK_OUT_ABOVE_8(DY); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_ai(void) +{ + uint res = OPER_AY_AI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_pi(void) +{ + uint res = OPER_AY_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_pi7(void) +{ + uint res = OPER_A7_PI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_pd(void) +{ + uint res = OPER_AY_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_pd7(void) +{ + uint res = OPER_A7_PD_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_di(void) +{ + uint res = OPER_AY_DI_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_ix(void) +{ + uint res = OPER_AY_IX_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_aw(void) +{ + uint res = OPER_AW_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_8_al(void) +{ + uint res = OPER_AL_8(); + + FLAG_N = NFLAG_8(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_d(void) +{ + uint res = MASK_OUT_ABOVE_16(DY); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_ai(void) +{ + uint res = OPER_AY_AI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_pi(void) +{ + uint res = OPER_AY_PI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_pd(void) +{ + uint res = OPER_AY_PD_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_di(void) +{ + uint res = OPER_AY_DI_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_ix(void) +{ + uint res = OPER_AY_IX_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_aw(void) +{ + uint res = OPER_AW_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_16_al(void) +{ + uint res = OPER_AL_16(); + + FLAG_N = NFLAG_16(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_d(void) +{ + uint res = DY; + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_ai(void) +{ + uint res = OPER_AY_AI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_pi(void) +{ + uint res = OPER_AY_PI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_pd(void) +{ + uint res = OPER_AY_PD_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_di(void) +{ + uint res = OPER_AY_DI_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_ix(void) +{ + uint res = OPER_AY_IX_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_aw(void) +{ + uint res = OPER_AW_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_tst_32_al(void) +{ + uint res = OPER_AL_32(); + + FLAG_N = NFLAG_32(res); + FLAG_Z = res; + FLAG_V = VFLAG_CLEAR; + FLAG_C = CFLAG_CLEAR; +} + + +static void m68k_op_unlk_32_a7(void) +{ + REG_A[7] = m68ki_read_32(REG_A[7]); +} + + +static void m68k_op_unlk_32(void) +{ + uint* r_dst = &AY; + + REG_A[7] = *r_dst; + *r_dst = m68ki_pull_32(); +} + + +/* ======================================================================== */ +/* ========================= OPCODE TABLE BUILDER ========================= */ +/* ======================================================================== */ + +#ifndef BUILD_TABLES + +#include "m68ki_instruction_jump_table.h" + +#else + +/* This is used to generate the opcode handler jump table */ +typedef struct +{ + void (*opcode_handler)(void); /* handler function */ + unsigned int mask; /* mask on opcode */ + unsigned int match; /* what to match after masking */ + unsigned char cycles; /* cycles each cpu type takes */ +} opcode_handler_struct; + +/* opcode handler jump table */ +static void (*m68ki_instruction_jump_table[0x10000])(void); + +/* Opcode handler table */ +static const opcode_handler_struct m68k_opcode_handler_table[] = +{ +/* function mask match cyc */ + {m68k_op_1010 , 0xf000, 0xa000, 4}, + {m68k_op_1111 , 0xf000, 0xf000, 4}, + {m68k_op_moveq_32 , 0xf100, 0x7000, 4}, + {m68k_op_bra_8 , 0xff00, 0x6000, 10}, + {m68k_op_bsr_8 , 0xff00, 0x6100, 18}, + {m68k_op_bhi_8 , 0xff00, 0x6200, 10}, + {m68k_op_bls_8 , 0xff00, 0x6300, 10}, + {m68k_op_bcc_8 , 0xff00, 0x6400, 10}, + {m68k_op_bcs_8 , 0xff00, 0x6500, 10}, + {m68k_op_bne_8 , 0xff00, 0x6600, 10}, + {m68k_op_beq_8 , 0xff00, 0x6700, 10}, + {m68k_op_bvc_8 , 0xff00, 0x6800, 10}, + {m68k_op_bvs_8 , 0xff00, 0x6900, 10}, + {m68k_op_bpl_8 , 0xff00, 0x6a00, 10}, + {m68k_op_bmi_8 , 0xff00, 0x6b00, 10}, + {m68k_op_bge_8 , 0xff00, 0x6c00, 10}, + {m68k_op_blt_8 , 0xff00, 0x6d00, 10}, + {m68k_op_bgt_8 , 0xff00, 0x6e00, 10}, + {m68k_op_ble_8 , 0xff00, 0x6f00, 10}, + {m68k_op_btst_32_r_d , 0xf1f8, 0x0100, 6}, + {m68k_op_movep_16_er , 0xf1f8, 0x0108, 16}, + {m68k_op_btst_8_r_ai , 0xf1f8, 0x0110, 8}, + {m68k_op_btst_8_r_pi , 0xf1f8, 0x0118, 8}, + {m68k_op_btst_8_r_pd , 0xf1f8, 0x0120, 10}, + {m68k_op_btst_8_r_di , 0xf1f8, 0x0128, 12}, + {m68k_op_btst_8_r_ix , 0xf1f8, 0x0130, 14}, + {m68k_op_bchg_32_r_d , 0xf1f8, 0x0140, 8}, + {m68k_op_movep_32_er , 0xf1f8, 0x0148, 24}, + {m68k_op_bchg_8_r_ai , 0xf1f8, 0x0150, 12}, + {m68k_op_bchg_8_r_pi , 0xf1f8, 0x0158, 12}, + {m68k_op_bchg_8_r_pd , 0xf1f8, 0x0160, 14}, + {m68k_op_bchg_8_r_di , 0xf1f8, 0x0168, 16}, + {m68k_op_bchg_8_r_ix , 0xf1f8, 0x0170, 18}, + {m68k_op_bclr_32_r_d , 0xf1f8, 0x0180, 10}, + {m68k_op_movep_16_re , 0xf1f8, 0x0188, 16}, + {m68k_op_bclr_8_r_ai , 0xf1f8, 0x0190, 12}, + {m68k_op_bclr_8_r_pi , 0xf1f8, 0x0198, 12}, + {m68k_op_bclr_8_r_pd , 0xf1f8, 0x01a0, 14}, + {m68k_op_bclr_8_r_di , 0xf1f8, 0x01a8, 16}, + {m68k_op_bclr_8_r_ix , 0xf1f8, 0x01b0, 18}, + {m68k_op_bset_32_r_d , 0xf1f8, 0x01c0, 8}, + {m68k_op_movep_32_re , 0xf1f8, 0x01c8, 24}, + {m68k_op_bset_8_r_ai , 0xf1f8, 0x01d0, 12}, + {m68k_op_bset_8_r_pi , 0xf1f8, 0x01d8, 12}, + {m68k_op_bset_8_r_pd , 0xf1f8, 0x01e0, 14}, + {m68k_op_bset_8_r_di , 0xf1f8, 0x01e8, 16}, + {m68k_op_bset_8_r_ix , 0xf1f8, 0x01f0, 18}, + {m68k_op_move_8_d_d , 0xf1f8, 0x1000, 4}, + {m68k_op_move_8_d_ai , 0xf1f8, 0x1010, 8}, + {m68k_op_move_8_d_pi , 0xf1f8, 0x1018, 8}, + {m68k_op_move_8_d_pd , 0xf1f8, 0x1020, 10}, + {m68k_op_move_8_d_di , 0xf1f8, 0x1028, 12}, + {m68k_op_move_8_d_ix , 0xf1f8, 0x1030, 14}, + {m68k_op_move_8_ai_d , 0xf1f8, 0x1080, 8}, + {m68k_op_move_8_ai_ai , 0xf1f8, 0x1090, 12}, + {m68k_op_move_8_ai_pi , 0xf1f8, 0x1098, 12}, + {m68k_op_move_8_ai_pd , 0xf1f8, 0x10a0, 14}, + {m68k_op_move_8_ai_di , 0xf1f8, 0x10a8, 16}, + {m68k_op_move_8_ai_ix , 0xf1f8, 0x10b0, 18}, + {m68k_op_move_8_pi_d , 0xf1f8, 0x10c0, 8}, + {m68k_op_move_8_pi_ai , 0xf1f8, 0x10d0, 12}, + {m68k_op_move_8_pi_pi , 0xf1f8, 0x10d8, 12}, + {m68k_op_move_8_pi_pd , 0xf1f8, 0x10e0, 14}, + {m68k_op_move_8_pi_di , 0xf1f8, 0x10e8, 16}, + {m68k_op_move_8_pi_ix , 0xf1f8, 0x10f0, 18}, + {m68k_op_move_8_pd_d , 0xf1f8, 0x1100, 8}, + {m68k_op_move_8_pd_ai , 0xf1f8, 0x1110, 12}, + {m68k_op_move_8_pd_pi , 0xf1f8, 0x1118, 12}, + {m68k_op_move_8_pd_pd , 0xf1f8, 0x1120, 14}, + {m68k_op_move_8_pd_di , 0xf1f8, 0x1128, 16}, + {m68k_op_move_8_pd_ix , 0xf1f8, 0x1130, 18}, + {m68k_op_move_8_di_d , 0xf1f8, 0x1140, 12}, + {m68k_op_move_8_di_ai , 0xf1f8, 0x1150, 16}, + {m68k_op_move_8_di_pi , 0xf1f8, 0x1158, 16}, + {m68k_op_move_8_di_pd , 0xf1f8, 0x1160, 18}, + {m68k_op_move_8_di_di , 0xf1f8, 0x1168, 20}, + {m68k_op_move_8_di_ix , 0xf1f8, 0x1170, 22}, + {m68k_op_move_8_ix_d , 0xf1f8, 0x1180, 14}, + {m68k_op_move_8_ix_ai , 0xf1f8, 0x1190, 18}, + {m68k_op_move_8_ix_pi , 0xf1f8, 0x1198, 18}, + {m68k_op_move_8_ix_pd , 0xf1f8, 0x11a0, 20}, + {m68k_op_move_8_ix_di , 0xf1f8, 0x11a8, 22}, + {m68k_op_move_8_ix_ix , 0xf1f8, 0x11b0, 24}, + {m68k_op_move_32_d_d , 0xf1f8, 0x2000, 4}, + {m68k_op_move_32_d_a , 0xf1f8, 0x2008, 4}, + {m68k_op_move_32_d_ai , 0xf1f8, 0x2010, 12}, + {m68k_op_move_32_d_pi , 0xf1f8, 0x2018, 12}, + {m68k_op_move_32_d_pd , 0xf1f8, 0x2020, 14}, + {m68k_op_move_32_d_di , 0xf1f8, 0x2028, 16}, + {m68k_op_move_32_d_ix , 0xf1f8, 0x2030, 18}, + {m68k_op_movea_32_d , 0xf1f8, 0x2040, 4}, + {m68k_op_movea_32_a , 0xf1f8, 0x2048, 4}, + {m68k_op_movea_32_ai , 0xf1f8, 0x2050, 12}, + {m68k_op_movea_32_pi , 0xf1f8, 0x2058, 12}, + {m68k_op_movea_32_pd , 0xf1f8, 0x2060, 14}, + {m68k_op_movea_32_di , 0xf1f8, 0x2068, 16}, + {m68k_op_movea_32_ix , 0xf1f8, 0x2070, 18}, + {m68k_op_move_32_ai_d , 0xf1f8, 0x2080, 12}, + {m68k_op_move_32_ai_a , 0xf1f8, 0x2088, 12}, + {m68k_op_move_32_ai_ai , 0xf1f8, 0x2090, 20}, + {m68k_op_move_32_ai_pi , 0xf1f8, 0x2098, 20}, + {m68k_op_move_32_ai_pd , 0xf1f8, 0x20a0, 22}, + {m68k_op_move_32_ai_di , 0xf1f8, 0x20a8, 24}, + {m68k_op_move_32_ai_ix , 0xf1f8, 0x20b0, 26}, + {m68k_op_move_32_pi_d , 0xf1f8, 0x20c0, 12}, + {m68k_op_move_32_pi_a , 0xf1f8, 0x20c8, 12}, + {m68k_op_move_32_pi_ai , 0xf1f8, 0x20d0, 20}, + {m68k_op_move_32_pi_pi , 0xf1f8, 0x20d8, 20}, + {m68k_op_move_32_pi_pd , 0xf1f8, 0x20e0, 22}, + {m68k_op_move_32_pi_di , 0xf1f8, 0x20e8, 24}, + {m68k_op_move_32_pi_ix , 0xf1f8, 0x20f0, 26}, + {m68k_op_move_32_pd_d , 0xf1f8, 0x2100, 12}, + {m68k_op_move_32_pd_a , 0xf1f8, 0x2108, 12}, + {m68k_op_move_32_pd_ai , 0xf1f8, 0x2110, 20}, + {m68k_op_move_32_pd_pi , 0xf1f8, 0x2118, 20}, + {m68k_op_move_32_pd_pd , 0xf1f8, 0x2120, 22}, + {m68k_op_move_32_pd_di , 0xf1f8, 0x2128, 24}, + {m68k_op_move_32_pd_ix , 0xf1f8, 0x2130, 26}, + {m68k_op_move_32_di_d , 0xf1f8, 0x2140, 16}, + {m68k_op_move_32_di_a , 0xf1f8, 0x2148, 16}, + {m68k_op_move_32_di_ai , 0xf1f8, 0x2150, 24}, + {m68k_op_move_32_di_pi , 0xf1f8, 0x2158, 24}, + {m68k_op_move_32_di_pd , 0xf1f8, 0x2160, 26}, + {m68k_op_move_32_di_di , 0xf1f8, 0x2168, 28}, + {m68k_op_move_32_di_ix , 0xf1f8, 0x2170, 30}, + {m68k_op_move_32_ix_d , 0xf1f8, 0x2180, 18}, + {m68k_op_move_32_ix_a , 0xf1f8, 0x2188, 18}, + {m68k_op_move_32_ix_ai , 0xf1f8, 0x2190, 26}, + {m68k_op_move_32_ix_pi , 0xf1f8, 0x2198, 26}, + {m68k_op_move_32_ix_pd , 0xf1f8, 0x21a0, 28}, + {m68k_op_move_32_ix_di , 0xf1f8, 0x21a8, 30}, + {m68k_op_move_32_ix_ix , 0xf1f8, 0x21b0, 32}, + {m68k_op_move_16_d_d , 0xf1f8, 0x3000, 4}, + {m68k_op_move_16_d_a , 0xf1f8, 0x3008, 4}, + {m68k_op_move_16_d_ai , 0xf1f8, 0x3010, 8}, + {m68k_op_move_16_d_pi , 0xf1f8, 0x3018, 8}, + {m68k_op_move_16_d_pd , 0xf1f8, 0x3020, 10}, + {m68k_op_move_16_d_di , 0xf1f8, 0x3028, 12}, + {m68k_op_move_16_d_ix , 0xf1f8, 0x3030, 14}, + {m68k_op_movea_16_d , 0xf1f8, 0x3040, 4}, + {m68k_op_movea_16_a , 0xf1f8, 0x3048, 4}, + {m68k_op_movea_16_ai , 0xf1f8, 0x3050, 8}, + {m68k_op_movea_16_pi , 0xf1f8, 0x3058, 8}, + {m68k_op_movea_16_pd , 0xf1f8, 0x3060, 10}, + {m68k_op_movea_16_di , 0xf1f8, 0x3068, 12}, + {m68k_op_movea_16_ix , 0xf1f8, 0x3070, 14}, + {m68k_op_move_16_ai_d , 0xf1f8, 0x3080, 8}, + {m68k_op_move_16_ai_a , 0xf1f8, 0x3088, 8}, + {m68k_op_move_16_ai_ai , 0xf1f8, 0x3090, 12}, + {m68k_op_move_16_ai_pi , 0xf1f8, 0x3098, 12}, + {m68k_op_move_16_ai_pd , 0xf1f8, 0x30a0, 14}, + {m68k_op_move_16_ai_di , 0xf1f8, 0x30a8, 16}, + {m68k_op_move_16_ai_ix , 0xf1f8, 0x30b0, 18}, + {m68k_op_move_16_pi_d , 0xf1f8, 0x30c0, 8}, + {m68k_op_move_16_pi_a , 0xf1f8, 0x30c8, 8}, + {m68k_op_move_16_pi_ai , 0xf1f8, 0x30d0, 12}, + {m68k_op_move_16_pi_pi , 0xf1f8, 0x30d8, 12}, + {m68k_op_move_16_pi_pd , 0xf1f8, 0x30e0, 14}, + {m68k_op_move_16_pi_di , 0xf1f8, 0x30e8, 16}, + {m68k_op_move_16_pi_ix , 0xf1f8, 0x30f0, 18}, + {m68k_op_move_16_pd_d , 0xf1f8, 0x3100, 8}, + {m68k_op_move_16_pd_a , 0xf1f8, 0x3108, 8}, + {m68k_op_move_16_pd_ai , 0xf1f8, 0x3110, 12}, + {m68k_op_move_16_pd_pi , 0xf1f8, 0x3118, 12}, + {m68k_op_move_16_pd_pd , 0xf1f8, 0x3120, 14}, + {m68k_op_move_16_pd_di , 0xf1f8, 0x3128, 16}, + {m68k_op_move_16_pd_ix , 0xf1f8, 0x3130, 18}, + {m68k_op_move_16_di_d , 0xf1f8, 0x3140, 12}, + {m68k_op_move_16_di_a , 0xf1f8, 0x3148, 12}, + {m68k_op_move_16_di_ai , 0xf1f8, 0x3150, 16}, + {m68k_op_move_16_di_pi , 0xf1f8, 0x3158, 16}, + {m68k_op_move_16_di_pd , 0xf1f8, 0x3160, 18}, + {m68k_op_move_16_di_di , 0xf1f8, 0x3168, 20}, + {m68k_op_move_16_di_ix , 0xf1f8, 0x3170, 22}, + {m68k_op_move_16_ix_d , 0xf1f8, 0x3180, 14}, + {m68k_op_move_16_ix_a , 0xf1f8, 0x3188, 14}, + {m68k_op_move_16_ix_ai , 0xf1f8, 0x3190, 18}, + {m68k_op_move_16_ix_pi , 0xf1f8, 0x3198, 18}, + {m68k_op_move_16_ix_pd , 0xf1f8, 0x31a0, 20}, + {m68k_op_move_16_ix_di , 0xf1f8, 0x31a8, 22}, + {m68k_op_move_16_ix_ix , 0xf1f8, 0x31b0, 24}, + {m68k_op_chk_16_d , 0xf1f8, 0x4180, 10}, + {m68k_op_chk_16_ai , 0xf1f8, 0x4190, 14}, + {m68k_op_chk_16_pi , 0xf1f8, 0x4198, 14}, + {m68k_op_chk_16_pd , 0xf1f8, 0x41a0, 16}, + {m68k_op_chk_16_di , 0xf1f8, 0x41a8, 18}, + {m68k_op_chk_16_ix , 0xf1f8, 0x41b0, 20}, + {m68k_op_lea_32_ai , 0xf1f8, 0x41d0, 4}, + {m68k_op_lea_32_di , 0xf1f8, 0x41e8, 8}, + {m68k_op_lea_32_ix , 0xf1f8, 0x41f0, 12}, + {m68k_op_addq_8_d , 0xf1f8, 0x5000, 4}, + {m68k_op_addq_8_ai , 0xf1f8, 0x5010, 12}, + {m68k_op_addq_8_pi , 0xf1f8, 0x5018, 12}, + {m68k_op_addq_8_pd , 0xf1f8, 0x5020, 14}, + {m68k_op_addq_8_di , 0xf1f8, 0x5028, 16}, + {m68k_op_addq_8_ix , 0xf1f8, 0x5030, 18}, + {m68k_op_addq_16_d , 0xf1f8, 0x5040, 4}, + {m68k_op_addq_16_a , 0xf1f8, 0x5048, 8}, /* see Yacht.txt */ + {m68k_op_addq_16_ai , 0xf1f8, 0x5050, 12}, + {m68k_op_addq_16_pi , 0xf1f8, 0x5058, 12}, + {m68k_op_addq_16_pd , 0xf1f8, 0x5060, 14}, + {m68k_op_addq_16_di , 0xf1f8, 0x5068, 16}, + {m68k_op_addq_16_ix , 0xf1f8, 0x5070, 18}, + {m68k_op_addq_32_d , 0xf1f8, 0x5080, 8}, + {m68k_op_addq_32_a , 0xf1f8, 0x5088, 8}, + {m68k_op_addq_32_ai , 0xf1f8, 0x5090, 20}, + {m68k_op_addq_32_pi , 0xf1f8, 0x5098, 20}, + {m68k_op_addq_32_pd , 0xf1f8, 0x50a0, 22}, + {m68k_op_addq_32_di , 0xf1f8, 0x50a8, 24}, + {m68k_op_addq_32_ix , 0xf1f8, 0x50b0, 26}, + {m68k_op_subq_8_d , 0xf1f8, 0x5100, 4}, + {m68k_op_subq_8_ai , 0xf1f8, 0x5110, 12}, + {m68k_op_subq_8_pi , 0xf1f8, 0x5118, 12}, + {m68k_op_subq_8_pd , 0xf1f8, 0x5120, 14}, + {m68k_op_subq_8_di , 0xf1f8, 0x5128, 16}, + {m68k_op_subq_8_ix , 0xf1f8, 0x5130, 18}, + {m68k_op_subq_16_d , 0xf1f8, 0x5140, 4}, + {m68k_op_subq_16_a , 0xf1f8, 0x5148, 8}, + {m68k_op_subq_16_ai , 0xf1f8, 0x5150, 12}, + {m68k_op_subq_16_pi , 0xf1f8, 0x5158, 12}, + {m68k_op_subq_16_pd , 0xf1f8, 0x5160, 14}, + {m68k_op_subq_16_di , 0xf1f8, 0x5168, 16}, + {m68k_op_subq_16_ix , 0xf1f8, 0x5170, 18}, + {m68k_op_subq_32_d , 0xf1f8, 0x5180, 8}, + {m68k_op_subq_32_a , 0xf1f8, 0x5188, 8}, + {m68k_op_subq_32_ai , 0xf1f8, 0x5190, 20}, + {m68k_op_subq_32_pi , 0xf1f8, 0x5198, 20}, + {m68k_op_subq_32_pd , 0xf1f8, 0x51a0, 22}, + {m68k_op_subq_32_di , 0xf1f8, 0x51a8, 24}, + {m68k_op_subq_32_ix , 0xf1f8, 0x51b0, 26}, + {m68k_op_or_8_er_d , 0xf1f8, 0x8000, 4}, + {m68k_op_or_8_er_ai , 0xf1f8, 0x8010, 8}, + {m68k_op_or_8_er_pi , 0xf1f8, 0x8018, 8}, + {m68k_op_or_8_er_pd , 0xf1f8, 0x8020, 10}, + {m68k_op_or_8_er_di , 0xf1f8, 0x8028, 12}, + {m68k_op_or_8_er_ix , 0xf1f8, 0x8030, 14}, + {m68k_op_or_16_er_d , 0xf1f8, 0x8040, 4}, + {m68k_op_or_16_er_ai , 0xf1f8, 0x8050, 8}, + {m68k_op_or_16_er_pi , 0xf1f8, 0x8058, 8}, + {m68k_op_or_16_er_pd , 0xf1f8, 0x8060, 10}, + {m68k_op_or_16_er_di , 0xf1f8, 0x8068, 12}, + {m68k_op_or_16_er_ix , 0xf1f8, 0x8070, 14}, + {m68k_op_or_32_er_d , 0xf1f8, 0x8080, 8}, + {m68k_op_or_32_er_ai , 0xf1f8, 0x8090, 14}, + {m68k_op_or_32_er_pi , 0xf1f8, 0x8098, 14}, + {m68k_op_or_32_er_pd , 0xf1f8, 0x80a0, 16}, + {m68k_op_or_32_er_di , 0xf1f8, 0x80a8, 18}, + {m68k_op_or_32_er_ix , 0xf1f8, 0x80b0, 20}, + {m68k_op_divu_16_d , 0xf1f8, 0x80c0, 0}, + {m68k_op_divu_16_ai , 0xf1f8, 0x80d0, 4}, + {m68k_op_divu_16_pi , 0xf1f8, 0x80d8, 4}, + {m68k_op_divu_16_pd , 0xf1f8, 0x80e0, 6}, + {m68k_op_divu_16_di , 0xf1f8, 0x80e8, 8}, + {m68k_op_divu_16_ix , 0xf1f8, 0x80f0, 10}, + {m68k_op_sbcd_8_rr , 0xf1f8, 0x8100, 6}, + {m68k_op_sbcd_8_mm , 0xf1f8, 0x8108, 18}, + {m68k_op_or_8_re_ai , 0xf1f8, 0x8110, 12}, + {m68k_op_or_8_re_pi , 0xf1f8, 0x8118, 12}, + {m68k_op_or_8_re_pd , 0xf1f8, 0x8120, 14}, + {m68k_op_or_8_re_di , 0xf1f8, 0x8128, 16}, + {m68k_op_or_8_re_ix , 0xf1f8, 0x8130, 18}, + {m68k_op_or_16_re_ai , 0xf1f8, 0x8150, 12}, + {m68k_op_or_16_re_pi , 0xf1f8, 0x8158, 12}, + {m68k_op_or_16_re_pd , 0xf1f8, 0x8160, 14}, + {m68k_op_or_16_re_di , 0xf1f8, 0x8168, 16}, + {m68k_op_or_16_re_ix , 0xf1f8, 0x8170, 18}, + {m68k_op_or_32_re_ai , 0xf1f8, 0x8190, 20}, + {m68k_op_or_32_re_pi , 0xf1f8, 0x8198, 20}, + {m68k_op_or_32_re_pd , 0xf1f8, 0x81a0, 22}, + {m68k_op_or_32_re_di , 0xf1f8, 0x81a8, 24}, + {m68k_op_or_32_re_ix , 0xf1f8, 0x81b0, 26}, + {m68k_op_divs_16_d , 0xf1f8, 0x81c0, 0}, + {m68k_op_divs_16_ai , 0xf1f8, 0x81d0, 4}, + {m68k_op_divs_16_pi , 0xf1f8, 0x81d8, 4}, + {m68k_op_divs_16_pd , 0xf1f8, 0x81e0, 6}, + {m68k_op_divs_16_di , 0xf1f8, 0x81e8, 8}, + {m68k_op_divs_16_ix , 0xf1f8, 0x81f0, 10}, + {m68k_op_sub_8_er_d , 0xf1f8, 0x9000, 4}, + {m68k_op_sub_8_er_ai , 0xf1f8, 0x9010, 8}, + {m68k_op_sub_8_er_pi , 0xf1f8, 0x9018, 8}, + {m68k_op_sub_8_er_pd , 0xf1f8, 0x9020, 10}, + {m68k_op_sub_8_er_di , 0xf1f8, 0x9028, 12}, + {m68k_op_sub_8_er_ix , 0xf1f8, 0x9030, 14}, + {m68k_op_sub_16_er_d , 0xf1f8, 0x9040, 4}, + {m68k_op_sub_16_er_a , 0xf1f8, 0x9048, 4}, + {m68k_op_sub_16_er_ai , 0xf1f8, 0x9050, 8}, + {m68k_op_sub_16_er_pi , 0xf1f8, 0x9058, 8}, + {m68k_op_sub_16_er_pd , 0xf1f8, 0x9060, 10}, + {m68k_op_sub_16_er_di , 0xf1f8, 0x9068, 12}, + {m68k_op_sub_16_er_ix , 0xf1f8, 0x9070, 14}, + {m68k_op_sub_32_er_d , 0xf1f8, 0x9080, 8}, + {m68k_op_sub_32_er_a , 0xf1f8, 0x9088, 8}, + {m68k_op_sub_32_er_ai , 0xf1f8, 0x9090, 14}, + {m68k_op_sub_32_er_pi , 0xf1f8, 0x9098, 14}, + {m68k_op_sub_32_er_pd , 0xf1f8, 0x90a0, 16}, + {m68k_op_sub_32_er_di , 0xf1f8, 0x90a8, 18}, + {m68k_op_sub_32_er_ix , 0xf1f8, 0x90b0, 20}, + {m68k_op_suba_16_d , 0xf1f8, 0x90c0, 8}, + {m68k_op_suba_16_a , 0xf1f8, 0x90c8, 8}, + {m68k_op_suba_16_ai , 0xf1f8, 0x90d0, 12}, + {m68k_op_suba_16_pi , 0xf1f8, 0x90d8, 12}, + {m68k_op_suba_16_pd , 0xf1f8, 0x90e0, 14}, + {m68k_op_suba_16_di , 0xf1f8, 0x90e8, 16}, + {m68k_op_suba_16_ix , 0xf1f8, 0x90f0, 18}, + {m68k_op_subx_8_rr , 0xf1f8, 0x9100, 4}, + {m68k_op_subx_8_mm , 0xf1f8, 0x9108, 18}, + {m68k_op_sub_8_re_ai , 0xf1f8, 0x9110, 12}, + {m68k_op_sub_8_re_pi , 0xf1f8, 0x9118, 12}, + {m68k_op_sub_8_re_pd , 0xf1f8, 0x9120, 14}, + {m68k_op_sub_8_re_di , 0xf1f8, 0x9128, 16}, + {m68k_op_sub_8_re_ix , 0xf1f8, 0x9130, 18}, + {m68k_op_subx_16_rr , 0xf1f8, 0x9140, 4}, + {m68k_op_subx_16_mm , 0xf1f8, 0x9148, 18}, + {m68k_op_sub_16_re_ai , 0xf1f8, 0x9150, 12}, + {m68k_op_sub_16_re_pi , 0xf1f8, 0x9158, 12}, + {m68k_op_sub_16_re_pd , 0xf1f8, 0x9160, 14}, + {m68k_op_sub_16_re_di , 0xf1f8, 0x9168, 16}, + {m68k_op_sub_16_re_ix , 0xf1f8, 0x9170, 18}, + {m68k_op_subx_32_rr , 0xf1f8, 0x9180, 8}, + {m68k_op_subx_32_mm , 0xf1f8, 0x9188, 30}, + {m68k_op_sub_32_re_ai , 0xf1f8, 0x9190, 20}, + {m68k_op_sub_32_re_pi , 0xf1f8, 0x9198, 20}, + {m68k_op_sub_32_re_pd , 0xf1f8, 0x91a0, 22}, + {m68k_op_sub_32_re_di , 0xf1f8, 0x91a8, 24}, + {m68k_op_sub_32_re_ix , 0xf1f8, 0x91b0, 26}, + {m68k_op_suba_32_d , 0xf1f8, 0x91c0, 8}, + {m68k_op_suba_32_a , 0xf1f8, 0x91c8, 8}, + {m68k_op_suba_32_ai , 0xf1f8, 0x91d0, 14}, + {m68k_op_suba_32_pi , 0xf1f8, 0x91d8, 14}, + {m68k_op_suba_32_pd , 0xf1f8, 0x91e0, 16}, + {m68k_op_suba_32_di , 0xf1f8, 0x91e8, 18}, + {m68k_op_suba_32_ix , 0xf1f8, 0x91f0, 20}, + {m68k_op_cmp_8_d , 0xf1f8, 0xb000, 4}, + {m68k_op_cmp_8_ai , 0xf1f8, 0xb010, 8}, + {m68k_op_cmp_8_pi , 0xf1f8, 0xb018, 8}, + {m68k_op_cmp_8_pd , 0xf1f8, 0xb020, 10}, + {m68k_op_cmp_8_di , 0xf1f8, 0xb028, 12}, + {m68k_op_cmp_8_ix , 0xf1f8, 0xb030, 14}, + {m68k_op_cmp_16_d , 0xf1f8, 0xb040, 4}, + {m68k_op_cmp_16_a , 0xf1f8, 0xb048, 4}, + {m68k_op_cmp_16_ai , 0xf1f8, 0xb050, 8}, + {m68k_op_cmp_16_pi , 0xf1f8, 0xb058, 8}, + {m68k_op_cmp_16_pd , 0xf1f8, 0xb060, 10}, + {m68k_op_cmp_16_di , 0xf1f8, 0xb068, 12}, + {m68k_op_cmp_16_ix , 0xf1f8, 0xb070, 14}, + {m68k_op_cmp_32_d , 0xf1f8, 0xb080, 6}, + {m68k_op_cmp_32_a , 0xf1f8, 0xb088, 6}, + {m68k_op_cmp_32_ai , 0xf1f8, 0xb090, 14}, + {m68k_op_cmp_32_pi , 0xf1f8, 0xb098, 14}, + {m68k_op_cmp_32_pd , 0xf1f8, 0xb0a0, 16}, + {m68k_op_cmp_32_di , 0xf1f8, 0xb0a8, 18}, + {m68k_op_cmp_32_ix , 0xf1f8, 0xb0b0, 20}, + {m68k_op_cmpa_16_d , 0xf1f8, 0xb0c0, 6}, + {m68k_op_cmpa_16_a , 0xf1f8, 0xb0c8, 6}, + {m68k_op_cmpa_16_ai , 0xf1f8, 0xb0d0, 10}, + {m68k_op_cmpa_16_pi , 0xf1f8, 0xb0d8, 10}, + {m68k_op_cmpa_16_pd , 0xf1f8, 0xb0e0, 12}, + {m68k_op_cmpa_16_di , 0xf1f8, 0xb0e8, 14}, + {m68k_op_cmpa_16_ix , 0xf1f8, 0xb0f0, 16}, + {m68k_op_eor_8_d , 0xf1f8, 0xb100, 4}, + {m68k_op_cmpm_8 , 0xf1f8, 0xb108, 12}, + {m68k_op_eor_8_ai , 0xf1f8, 0xb110, 12}, + {m68k_op_eor_8_pi , 0xf1f8, 0xb118, 12}, + {m68k_op_eor_8_pd , 0xf1f8, 0xb120, 14}, + {m68k_op_eor_8_di , 0xf1f8, 0xb128, 16}, + {m68k_op_eor_8_ix , 0xf1f8, 0xb130, 18}, + {m68k_op_eor_16_d , 0xf1f8, 0xb140, 4}, + {m68k_op_cmpm_16 , 0xf1f8, 0xb148, 12}, + {m68k_op_eor_16_ai , 0xf1f8, 0xb150, 12}, + {m68k_op_eor_16_pi , 0xf1f8, 0xb158, 12}, + {m68k_op_eor_16_pd , 0xf1f8, 0xb160, 14}, + {m68k_op_eor_16_di , 0xf1f8, 0xb168, 16}, + {m68k_op_eor_16_ix , 0xf1f8, 0xb170, 18}, + {m68k_op_eor_32_d , 0xf1f8, 0xb180, 8}, + {m68k_op_cmpm_32 , 0xf1f8, 0xb188, 20}, + {m68k_op_eor_32_ai , 0xf1f8, 0xb190, 20}, + {m68k_op_eor_32_pi , 0xf1f8, 0xb198, 20}, + {m68k_op_eor_32_pd , 0xf1f8, 0xb1a0, 22}, + {m68k_op_eor_32_di , 0xf1f8, 0xb1a8, 24}, + {m68k_op_eor_32_ix , 0xf1f8, 0xb1b0, 26}, + {m68k_op_cmpa_32_d , 0xf1f8, 0xb1c0, 6}, + {m68k_op_cmpa_32_a , 0xf1f8, 0xb1c8, 6}, + {m68k_op_cmpa_32_ai , 0xf1f8, 0xb1d0, 14}, + {m68k_op_cmpa_32_pi , 0xf1f8, 0xb1d8, 14}, + {m68k_op_cmpa_32_pd , 0xf1f8, 0xb1e0, 16}, + {m68k_op_cmpa_32_di , 0xf1f8, 0xb1e8, 18}, + {m68k_op_cmpa_32_ix , 0xf1f8, 0xb1f0, 20}, + {m68k_op_and_8_er_d , 0xf1f8, 0xc000, 4}, + {m68k_op_and_8_er_ai , 0xf1f8, 0xc010, 8}, + {m68k_op_and_8_er_pi , 0xf1f8, 0xc018, 8}, + {m68k_op_and_8_er_pd , 0xf1f8, 0xc020, 10}, + {m68k_op_and_8_er_di , 0xf1f8, 0xc028, 12}, + {m68k_op_and_8_er_ix , 0xf1f8, 0xc030, 14}, + {m68k_op_and_16_er_d , 0xf1f8, 0xc040, 4}, + {m68k_op_and_16_er_ai , 0xf1f8, 0xc050, 8}, + {m68k_op_and_16_er_pi , 0xf1f8, 0xc058, 8}, + {m68k_op_and_16_er_pd , 0xf1f8, 0xc060, 10}, + {m68k_op_and_16_er_di , 0xf1f8, 0xc068, 12}, + {m68k_op_and_16_er_ix , 0xf1f8, 0xc070, 14}, + {m68k_op_and_32_er_d , 0xf1f8, 0xc080, 8}, + {m68k_op_and_32_er_ai , 0xf1f8, 0xc090, 14}, + {m68k_op_and_32_er_pi , 0xf1f8, 0xc098, 14}, + {m68k_op_and_32_er_pd , 0xf1f8, 0xc0a0, 16}, + {m68k_op_and_32_er_di , 0xf1f8, 0xc0a8, 18}, + {m68k_op_and_32_er_ix , 0xf1f8, 0xc0b0, 20}, + {m68k_op_mulu_16_d , 0xf1f8, 0xc0c0, 0}, + {m68k_op_mulu_16_ai , 0xf1f8, 0xc0d0, 4}, + {m68k_op_mulu_16_pi , 0xf1f8, 0xc0d8, 4}, + {m68k_op_mulu_16_pd , 0xf1f8, 0xc0e0, 6}, + {m68k_op_mulu_16_di , 0xf1f8, 0xc0e8, 8}, + {m68k_op_mulu_16_ix , 0xf1f8, 0xc0f0, 10}, + {m68k_op_abcd_8_rr , 0xf1f8, 0xc100, 6}, + {m68k_op_abcd_8_mm , 0xf1f8, 0xc108, 18}, + {m68k_op_and_8_re_ai , 0xf1f8, 0xc110, 12}, + {m68k_op_and_8_re_pi , 0xf1f8, 0xc118, 12}, + {m68k_op_and_8_re_pd , 0xf1f8, 0xc120, 14}, + {m68k_op_and_8_re_di , 0xf1f8, 0xc128, 16}, + {m68k_op_and_8_re_ix , 0xf1f8, 0xc130, 18}, + {m68k_op_exg_32_dd , 0xf1f8, 0xc140, 6}, + {m68k_op_exg_32_aa , 0xf1f8, 0xc148, 6}, + {m68k_op_and_16_re_ai , 0xf1f8, 0xc150, 12}, + {m68k_op_and_16_re_pi , 0xf1f8, 0xc158, 12}, + {m68k_op_and_16_re_pd , 0xf1f8, 0xc160, 14}, + {m68k_op_and_16_re_di , 0xf1f8, 0xc168, 16}, + {m68k_op_and_16_re_ix , 0xf1f8, 0xc170, 18}, + {m68k_op_exg_32_da , 0xf1f8, 0xc188, 6}, + {m68k_op_and_32_re_ai , 0xf1f8, 0xc190, 20}, + {m68k_op_and_32_re_pi , 0xf1f8, 0xc198, 20}, + {m68k_op_and_32_re_pd , 0xf1f8, 0xc1a0, 22}, + {m68k_op_and_32_re_di , 0xf1f8, 0xc1a8, 24}, + {m68k_op_and_32_re_ix , 0xf1f8, 0xc1b0, 26}, + {m68k_op_muls_16_d , 0xf1f8, 0xc1c0, 0}, + {m68k_op_muls_16_ai , 0xf1f8, 0xc1d0, 4}, + {m68k_op_muls_16_pi , 0xf1f8, 0xc1d8, 4}, + {m68k_op_muls_16_pd , 0xf1f8, 0xc1e0, 6}, + {m68k_op_muls_16_di , 0xf1f8, 0xc1e8, 8}, + {m68k_op_muls_16_ix , 0xf1f8, 0xc1f0, 10}, + {m68k_op_add_8_er_d , 0xf1f8, 0xd000, 4}, + {m68k_op_add_8_er_ai , 0xf1f8, 0xd010, 8}, + {m68k_op_add_8_er_pi , 0xf1f8, 0xd018, 8}, + {m68k_op_add_8_er_pd , 0xf1f8, 0xd020, 10}, + {m68k_op_add_8_er_di , 0xf1f8, 0xd028, 12}, + {m68k_op_add_8_er_ix , 0xf1f8, 0xd030, 14}, + {m68k_op_add_16_er_d , 0xf1f8, 0xd040, 4}, + {m68k_op_add_16_er_a , 0xf1f8, 0xd048, 4}, + {m68k_op_add_16_er_ai , 0xf1f8, 0xd050, 8}, + {m68k_op_add_16_er_pi , 0xf1f8, 0xd058, 8}, + {m68k_op_add_16_er_pd , 0xf1f8, 0xd060, 10}, + {m68k_op_add_16_er_di , 0xf1f8, 0xd068, 12}, + {m68k_op_add_16_er_ix , 0xf1f8, 0xd070, 14}, + {m68k_op_add_32_er_d , 0xf1f8, 0xd080, 8}, + {m68k_op_add_32_er_a , 0xf1f8, 0xd088, 8}, + {m68k_op_add_32_er_ai , 0xf1f8, 0xd090, 14}, + {m68k_op_add_32_er_pi , 0xf1f8, 0xd098, 14}, + {m68k_op_add_32_er_pd , 0xf1f8, 0xd0a0, 16}, + {m68k_op_add_32_er_di , 0xf1f8, 0xd0a8, 18}, + {m68k_op_add_32_er_ix , 0xf1f8, 0xd0b0, 20}, + {m68k_op_adda_16_d , 0xf1f8, 0xd0c0, 8}, + {m68k_op_adda_16_a , 0xf1f8, 0xd0c8, 8}, + {m68k_op_adda_16_ai , 0xf1f8, 0xd0d0, 12}, + {m68k_op_adda_16_pi , 0xf1f8, 0xd0d8, 12}, + {m68k_op_adda_16_pd , 0xf1f8, 0xd0e0, 14}, + {m68k_op_adda_16_di , 0xf1f8, 0xd0e8, 16}, + {m68k_op_adda_16_ix , 0xf1f8, 0xd0f0, 18}, + {m68k_op_addx_8_rr , 0xf1f8, 0xd100, 4}, + {m68k_op_addx_8_mm , 0xf1f8, 0xd108, 18}, + {m68k_op_add_8_re_ai , 0xf1f8, 0xd110, 12}, + {m68k_op_add_8_re_pi , 0xf1f8, 0xd118, 12}, + {m68k_op_add_8_re_pd , 0xf1f8, 0xd120, 14}, + {m68k_op_add_8_re_di , 0xf1f8, 0xd128, 16}, + {m68k_op_add_8_re_ix , 0xf1f8, 0xd130, 18}, + {m68k_op_addx_16_rr , 0xf1f8, 0xd140, 4}, + {m68k_op_addx_16_mm , 0xf1f8, 0xd148, 18}, + {m68k_op_add_16_re_ai , 0xf1f8, 0xd150, 12}, + {m68k_op_add_16_re_pi , 0xf1f8, 0xd158, 12}, + {m68k_op_add_16_re_pd , 0xf1f8, 0xd160, 14}, + {m68k_op_add_16_re_di , 0xf1f8, 0xd168, 16}, + {m68k_op_add_16_re_ix , 0xf1f8, 0xd170, 18}, + {m68k_op_addx_32_rr , 0xf1f8, 0xd180, 8}, + {m68k_op_addx_32_mm , 0xf1f8, 0xd188, 30}, + {m68k_op_add_32_re_ai , 0xf1f8, 0xd190, 20}, + {m68k_op_add_32_re_pi , 0xf1f8, 0xd198, 20}, + {m68k_op_add_32_re_pd , 0xf1f8, 0xd1a0, 22}, + {m68k_op_add_32_re_di , 0xf1f8, 0xd1a8, 24}, + {m68k_op_add_32_re_ix , 0xf1f8, 0xd1b0, 26}, + {m68k_op_adda_32_d , 0xf1f8, 0xd1c0, 8}, + {m68k_op_adda_32_a , 0xf1f8, 0xd1c8, 8}, + {m68k_op_adda_32_ai , 0xf1f8, 0xd1d0, 14}, + {m68k_op_adda_32_pi , 0xf1f8, 0xd1d8, 14}, + {m68k_op_adda_32_pd , 0xf1f8, 0xd1e0, 16}, + {m68k_op_adda_32_di , 0xf1f8, 0xd1e8, 18}, + {m68k_op_adda_32_ix , 0xf1f8, 0xd1f0, 20}, + {m68k_op_asr_8_s , 0xf1f8, 0xe000, 6}, + {m68k_op_lsr_8_s , 0xf1f8, 0xe008, 6}, + {m68k_op_roxr_8_s , 0xf1f8, 0xe010, 6}, + {m68k_op_ror_8_s , 0xf1f8, 0xe018, 6}, + {m68k_op_asr_8_r , 0xf1f8, 0xe020, 6}, + {m68k_op_lsr_8_r , 0xf1f8, 0xe028, 6}, + {m68k_op_roxr_8_r , 0xf1f8, 0xe030, 6}, + {m68k_op_ror_8_r , 0xf1f8, 0xe038, 6}, + {m68k_op_asr_16_s , 0xf1f8, 0xe040, 6}, + {m68k_op_lsr_16_s , 0xf1f8, 0xe048, 6}, + {m68k_op_roxr_16_s , 0xf1f8, 0xe050, 6}, + {m68k_op_ror_16_s , 0xf1f8, 0xe058, 6}, + {m68k_op_asr_16_r , 0xf1f8, 0xe060, 6}, + {m68k_op_lsr_16_r , 0xf1f8, 0xe068, 6}, + {m68k_op_roxr_16_r , 0xf1f8, 0xe070, 6}, + {m68k_op_ror_16_r , 0xf1f8, 0xe078, 6}, + {m68k_op_asr_32_s , 0xf1f8, 0xe080, 8}, + {m68k_op_lsr_32_s , 0xf1f8, 0xe088, 8}, + {m68k_op_roxr_32_s , 0xf1f8, 0xe090, 8}, + {m68k_op_ror_32_s , 0xf1f8, 0xe098, 8}, + {m68k_op_asr_32_r , 0xf1f8, 0xe0a0, 8}, + {m68k_op_lsr_32_r , 0xf1f8, 0xe0a8, 8}, + {m68k_op_roxr_32_r , 0xf1f8, 0xe0b0, 8}, + {m68k_op_ror_32_r , 0xf1f8, 0xe0b8, 8}, + {m68k_op_asl_8_s , 0xf1f8, 0xe100, 6}, + {m68k_op_lsl_8_s , 0xf1f8, 0xe108, 6}, + {m68k_op_roxl_8_s , 0xf1f8, 0xe110, 6}, + {m68k_op_rol_8_s , 0xf1f8, 0xe118, 6}, + {m68k_op_asl_8_r , 0xf1f8, 0xe120, 6}, + {m68k_op_lsl_8_r , 0xf1f8, 0xe128, 6}, + {m68k_op_roxl_8_r , 0xf1f8, 0xe130, 6}, + {m68k_op_rol_8_r , 0xf1f8, 0xe138, 6}, + {m68k_op_asl_16_s , 0xf1f8, 0xe140, 6}, + {m68k_op_lsl_16_s , 0xf1f8, 0xe148, 6}, + {m68k_op_roxl_16_s , 0xf1f8, 0xe150, 6}, + {m68k_op_rol_16_s , 0xf1f8, 0xe158, 6}, + {m68k_op_asl_16_r , 0xf1f8, 0xe160, 6}, + {m68k_op_lsl_16_r , 0xf1f8, 0xe168, 6}, + {m68k_op_roxl_16_r , 0xf1f8, 0xe170, 6}, + {m68k_op_rol_16_r , 0xf1f8, 0xe178, 6}, + {m68k_op_asl_32_s , 0xf1f8, 0xe180, 8}, + {m68k_op_lsl_32_s , 0xf1f8, 0xe188, 8}, + {m68k_op_roxl_32_s , 0xf1f8, 0xe190, 8}, + {m68k_op_rol_32_s , 0xf1f8, 0xe198, 8}, + {m68k_op_asl_32_r , 0xf1f8, 0xe1a0, 8}, + {m68k_op_lsl_32_r , 0xf1f8, 0xe1a8, 8}, + {m68k_op_roxl_32_r , 0xf1f8, 0xe1b0, 8}, + {m68k_op_rol_32_r , 0xf1f8, 0xe1b8, 8}, + {m68k_op_trap , 0xfff0, 0x4e40, 4}, + {m68k_op_btst_8_r_pi7 , 0xf1ff, 0x011f, 8}, + {m68k_op_btst_8_r_pd7 , 0xf1ff, 0x0127, 10}, + {m68k_op_btst_8_r_aw , 0xf1ff, 0x0138, 12}, + {m68k_op_btst_8_r_al , 0xf1ff, 0x0139, 16}, + {m68k_op_btst_8_r_pcdi , 0xf1ff, 0x013a, 12}, + {m68k_op_btst_8_r_pcix , 0xf1ff, 0x013b, 14}, + {m68k_op_btst_8_r_i , 0xf1ff, 0x013c, 10}, + {m68k_op_bchg_8_r_pi7 , 0xf1ff, 0x015f, 12}, + {m68k_op_bchg_8_r_pd7 , 0xf1ff, 0x0167, 14}, + {m68k_op_bchg_8_r_aw , 0xf1ff, 0x0178, 16}, + {m68k_op_bchg_8_r_al , 0xf1ff, 0x0179, 20}, + {m68k_op_bclr_8_r_pi7 , 0xf1ff, 0x019f, 12}, + {m68k_op_bclr_8_r_pd7 , 0xf1ff, 0x01a7, 14}, + {m68k_op_bclr_8_r_aw , 0xf1ff, 0x01b8, 16}, + {m68k_op_bclr_8_r_al , 0xf1ff, 0x01b9, 20}, + {m68k_op_bset_8_r_pi7 , 0xf1ff, 0x01df, 12}, + {m68k_op_bset_8_r_pd7 , 0xf1ff, 0x01e7, 14}, + {m68k_op_bset_8_r_aw , 0xf1ff, 0x01f8, 16}, + {m68k_op_bset_8_r_al , 0xf1ff, 0x01f9, 20}, + {m68k_op_move_8_d_pi7 , 0xf1ff, 0x101f, 8}, + {m68k_op_move_8_d_pd7 , 0xf1ff, 0x1027, 10}, + {m68k_op_move_8_d_aw , 0xf1ff, 0x1038, 12}, + {m68k_op_move_8_d_al , 0xf1ff, 0x1039, 16}, + {m68k_op_move_8_d_pcdi , 0xf1ff, 0x103a, 12}, + {m68k_op_move_8_d_pcix , 0xf1ff, 0x103b, 14}, + {m68k_op_move_8_d_i , 0xf1ff, 0x103c, 8}, + {m68k_op_move_8_ai_pi7 , 0xf1ff, 0x109f, 12}, + {m68k_op_move_8_ai_pd7 , 0xf1ff, 0x10a7, 14}, + {m68k_op_move_8_ai_aw , 0xf1ff, 0x10b8, 16}, + {m68k_op_move_8_ai_al , 0xf1ff, 0x10b9, 20}, + {m68k_op_move_8_ai_pcdi , 0xf1ff, 0x10ba, 16}, + {m68k_op_move_8_ai_pcix , 0xf1ff, 0x10bb, 18}, + {m68k_op_move_8_ai_i , 0xf1ff, 0x10bc, 12}, + {m68k_op_move_8_pi_pi7 , 0xf1ff, 0x10df, 12}, + {m68k_op_move_8_pi_pd7 , 0xf1ff, 0x10e7, 14}, + {m68k_op_move_8_pi_aw , 0xf1ff, 0x10f8, 16}, + {m68k_op_move_8_pi_al , 0xf1ff, 0x10f9, 20}, + {m68k_op_move_8_pi_pcdi , 0xf1ff, 0x10fa, 16}, + {m68k_op_move_8_pi_pcix , 0xf1ff, 0x10fb, 18}, + {m68k_op_move_8_pi_i , 0xf1ff, 0x10fc, 12}, + {m68k_op_move_8_pd_pi7 , 0xf1ff, 0x111f, 12}, + {m68k_op_move_8_pd_pd7 , 0xf1ff, 0x1127, 14}, + {m68k_op_move_8_pd_aw , 0xf1ff, 0x1138, 16}, + {m68k_op_move_8_pd_al , 0xf1ff, 0x1139, 20}, + {m68k_op_move_8_pd_pcdi , 0xf1ff, 0x113a, 16}, + {m68k_op_move_8_pd_pcix , 0xf1ff, 0x113b, 18}, + {m68k_op_move_8_pd_i , 0xf1ff, 0x113c, 12}, + {m68k_op_move_8_di_pi7 , 0xf1ff, 0x115f, 16}, + {m68k_op_move_8_di_pd7 , 0xf1ff, 0x1167, 18}, + {m68k_op_move_8_di_aw , 0xf1ff, 0x1178, 20}, + {m68k_op_move_8_di_al , 0xf1ff, 0x1179, 24}, + {m68k_op_move_8_di_pcdi , 0xf1ff, 0x117a, 20}, + {m68k_op_move_8_di_pcix , 0xf1ff, 0x117b, 22}, + {m68k_op_move_8_di_i , 0xf1ff, 0x117c, 16}, + {m68k_op_move_8_ix_pi7 , 0xf1ff, 0x119f, 18}, + {m68k_op_move_8_ix_pd7 , 0xf1ff, 0x11a7, 20}, + {m68k_op_move_8_ix_aw , 0xf1ff, 0x11b8, 22}, + {m68k_op_move_8_ix_al , 0xf1ff, 0x11b9, 26}, + {m68k_op_move_8_ix_pcdi , 0xf1ff, 0x11ba, 22}, + {m68k_op_move_8_ix_pcix , 0xf1ff, 0x11bb, 24}, + {m68k_op_move_8_ix_i , 0xf1ff, 0x11bc, 18}, + {m68k_op_move_32_d_aw , 0xf1ff, 0x2038, 16}, + {m68k_op_move_32_d_al , 0xf1ff, 0x2039, 20}, + {m68k_op_move_32_d_pcdi , 0xf1ff, 0x203a, 16}, + {m68k_op_move_32_d_pcix , 0xf1ff, 0x203b, 18}, + {m68k_op_move_32_d_i , 0xf1ff, 0x203c, 12}, + {m68k_op_movea_32_aw , 0xf1ff, 0x2078, 16}, + {m68k_op_movea_32_al , 0xf1ff, 0x2079, 20}, + {m68k_op_movea_32_pcdi , 0xf1ff, 0x207a, 16}, + {m68k_op_movea_32_pcix , 0xf1ff, 0x207b, 18}, + {m68k_op_movea_32_i , 0xf1ff, 0x207c, 12}, + {m68k_op_move_32_ai_aw , 0xf1ff, 0x20b8, 24}, + {m68k_op_move_32_ai_al , 0xf1ff, 0x20b9, 28}, + {m68k_op_move_32_ai_pcdi , 0xf1ff, 0x20ba, 24}, + {m68k_op_move_32_ai_pcix , 0xf1ff, 0x20bb, 26}, + {m68k_op_move_32_ai_i , 0xf1ff, 0x20bc, 20}, + {m68k_op_move_32_pi_aw , 0xf1ff, 0x20f8, 24}, + {m68k_op_move_32_pi_al , 0xf1ff, 0x20f9, 28}, + {m68k_op_move_32_pi_pcdi , 0xf1ff, 0x20fa, 24}, + {m68k_op_move_32_pi_pcix , 0xf1ff, 0x20fb, 26}, + {m68k_op_move_32_pi_i , 0xf1ff, 0x20fc, 20}, + {m68k_op_move_32_pd_aw , 0xf1ff, 0x2138, 24}, + {m68k_op_move_32_pd_al , 0xf1ff, 0x2139, 28}, + {m68k_op_move_32_pd_pcdi , 0xf1ff, 0x213a, 24}, + {m68k_op_move_32_pd_pcix , 0xf1ff, 0x213b, 26}, + {m68k_op_move_32_pd_i , 0xf1ff, 0x213c, 20}, + {m68k_op_move_32_di_aw , 0xf1ff, 0x2178, 28}, + {m68k_op_move_32_di_al , 0xf1ff, 0x2179, 32}, + {m68k_op_move_32_di_pcdi , 0xf1ff, 0x217a, 28}, + {m68k_op_move_32_di_pcix , 0xf1ff, 0x217b, 30}, + {m68k_op_move_32_di_i , 0xf1ff, 0x217c, 24}, + {m68k_op_move_32_ix_aw , 0xf1ff, 0x21b8, 30}, + {m68k_op_move_32_ix_al , 0xf1ff, 0x21b9, 34}, + {m68k_op_move_32_ix_pcdi , 0xf1ff, 0x21ba, 30}, + {m68k_op_move_32_ix_pcix , 0xf1ff, 0x21bb, 32}, + {m68k_op_move_32_ix_i , 0xf1ff, 0x21bc, 26}, + {m68k_op_move_16_d_aw , 0xf1ff, 0x3038, 12}, + {m68k_op_move_16_d_al , 0xf1ff, 0x3039, 16}, + {m68k_op_move_16_d_pcdi , 0xf1ff, 0x303a, 12}, + {m68k_op_move_16_d_pcix , 0xf1ff, 0x303b, 14}, + {m68k_op_move_16_d_i , 0xf1ff, 0x303c, 8}, + {m68k_op_movea_16_aw , 0xf1ff, 0x3078, 12}, + {m68k_op_movea_16_al , 0xf1ff, 0x3079, 16}, + {m68k_op_movea_16_pcdi , 0xf1ff, 0x307a, 12}, + {m68k_op_movea_16_pcix , 0xf1ff, 0x307b, 14}, + {m68k_op_movea_16_i , 0xf1ff, 0x307c, 8}, + {m68k_op_move_16_ai_aw , 0xf1ff, 0x30b8, 16}, + {m68k_op_move_16_ai_al , 0xf1ff, 0x30b9, 20}, + {m68k_op_move_16_ai_pcdi , 0xf1ff, 0x30ba, 16}, + {m68k_op_move_16_ai_pcix , 0xf1ff, 0x30bb, 18}, + {m68k_op_move_16_ai_i , 0xf1ff, 0x30bc, 12}, + {m68k_op_move_16_pi_aw , 0xf1ff, 0x30f8, 16}, + {m68k_op_move_16_pi_al , 0xf1ff, 0x30f9, 20}, + {m68k_op_move_16_pi_pcdi , 0xf1ff, 0x30fa, 16}, + {m68k_op_move_16_pi_pcix , 0xf1ff, 0x30fb, 18}, + {m68k_op_move_16_pi_i , 0xf1ff, 0x30fc, 12}, + {m68k_op_move_16_pd_aw , 0xf1ff, 0x3138, 16}, + {m68k_op_move_16_pd_al , 0xf1ff, 0x3139, 20}, + {m68k_op_move_16_pd_pcdi , 0xf1ff, 0x313a, 16}, + {m68k_op_move_16_pd_pcix , 0xf1ff, 0x313b, 18}, + {m68k_op_move_16_pd_i , 0xf1ff, 0x313c, 12}, + {m68k_op_move_16_di_aw , 0xf1ff, 0x3178, 20}, + {m68k_op_move_16_di_al , 0xf1ff, 0x3179, 24}, + {m68k_op_move_16_di_pcdi , 0xf1ff, 0x317a, 20}, + {m68k_op_move_16_di_pcix , 0xf1ff, 0x317b, 22}, + {m68k_op_move_16_di_i , 0xf1ff, 0x317c, 16}, + {m68k_op_move_16_ix_aw , 0xf1ff, 0x31b8, 22}, + {m68k_op_move_16_ix_al , 0xf1ff, 0x31b9, 26}, + {m68k_op_move_16_ix_pcdi , 0xf1ff, 0x31ba, 22}, + {m68k_op_move_16_ix_pcix , 0xf1ff, 0x31bb, 24}, + {m68k_op_move_16_ix_i , 0xf1ff, 0x31bc, 18}, + {m68k_op_chk_16_aw , 0xf1ff, 0x41b8, 18}, + {m68k_op_chk_16_al , 0xf1ff, 0x41b9, 22}, + {m68k_op_chk_16_pcdi , 0xf1ff, 0x41ba, 18}, + {m68k_op_chk_16_pcix , 0xf1ff, 0x41bb, 20}, + {m68k_op_chk_16_i , 0xf1ff, 0x41bc, 14}, + {m68k_op_lea_32_aw , 0xf1ff, 0x41f8, 8}, + {m68k_op_lea_32_al , 0xf1ff, 0x41f9, 12}, + {m68k_op_lea_32_pcdi , 0xf1ff, 0x41fa, 8}, + {m68k_op_lea_32_pcix , 0xf1ff, 0x41fb, 12}, + {m68k_op_addq_8_pi7 , 0xf1ff, 0x501f, 12}, + {m68k_op_addq_8_pd7 , 0xf1ff, 0x5027, 14}, + {m68k_op_addq_8_aw , 0xf1ff, 0x5038, 16}, + {m68k_op_addq_8_al , 0xf1ff, 0x5039, 20}, + {m68k_op_addq_16_aw , 0xf1ff, 0x5078, 16}, + {m68k_op_addq_16_al , 0xf1ff, 0x5079, 20}, + {m68k_op_addq_32_aw , 0xf1ff, 0x50b8, 24}, + {m68k_op_addq_32_al , 0xf1ff, 0x50b9, 28}, + {m68k_op_subq_8_pi7 , 0xf1ff, 0x511f, 12}, + {m68k_op_subq_8_pd7 , 0xf1ff, 0x5127, 14}, + {m68k_op_subq_8_aw , 0xf1ff, 0x5138, 16}, + {m68k_op_subq_8_al , 0xf1ff, 0x5139, 20}, + {m68k_op_subq_16_aw , 0xf1ff, 0x5178, 16}, + {m68k_op_subq_16_al , 0xf1ff, 0x5179, 20}, + {m68k_op_subq_32_aw , 0xf1ff, 0x51b8, 24}, + {m68k_op_subq_32_al , 0xf1ff, 0x51b9, 28}, + {m68k_op_or_8_er_pi7 , 0xf1ff, 0x801f, 8}, + {m68k_op_or_8_er_pd7 , 0xf1ff, 0x8027, 10}, + {m68k_op_or_8_er_aw , 0xf1ff, 0x8038, 12}, + {m68k_op_or_8_er_al , 0xf1ff, 0x8039, 16}, + {m68k_op_or_8_er_pcdi , 0xf1ff, 0x803a, 12}, + {m68k_op_or_8_er_pcix , 0xf1ff, 0x803b, 14}, + {m68k_op_or_8_er_i , 0xf1ff, 0x803c, 8}, + {m68k_op_or_16_er_aw , 0xf1ff, 0x8078, 12}, + {m68k_op_or_16_er_al , 0xf1ff, 0x8079, 16}, + {m68k_op_or_16_er_pcdi , 0xf1ff, 0x807a, 12}, + {m68k_op_or_16_er_pcix , 0xf1ff, 0x807b, 14}, + {m68k_op_or_16_er_i , 0xf1ff, 0x807c, 8}, + {m68k_op_or_32_er_aw , 0xf1ff, 0x80b8, 18}, + {m68k_op_or_32_er_al , 0xf1ff, 0x80b9, 22}, + {m68k_op_or_32_er_pcdi , 0xf1ff, 0x80ba, 18}, + {m68k_op_or_32_er_pcix , 0xf1ff, 0x80bb, 20}, + {m68k_op_or_32_er_i , 0xf1ff, 0x80bc, 16}, + {m68k_op_divu_16_aw , 0xf1ff, 0x80f8, 8}, + {m68k_op_divu_16_al , 0xf1ff, 0x80f9, 12}, + {m68k_op_divu_16_pcdi , 0xf1ff, 0x80fa, 8}, + {m68k_op_divu_16_pcix , 0xf1ff, 0x80fb, 10}, + {m68k_op_divu_16_i , 0xf1ff, 0x80fc, 4}, + {m68k_op_sbcd_8_mm_ay7 , 0xf1ff, 0x810f, 18}, + {m68k_op_or_8_re_pi7 , 0xf1ff, 0x811f, 12}, + {m68k_op_or_8_re_pd7 , 0xf1ff, 0x8127, 14}, + {m68k_op_or_8_re_aw , 0xf1ff, 0x8138, 16}, + {m68k_op_or_8_re_al , 0xf1ff, 0x8139, 20}, + {m68k_op_or_16_re_aw , 0xf1ff, 0x8178, 16}, + {m68k_op_or_16_re_al , 0xf1ff, 0x8179, 20}, + {m68k_op_or_32_re_aw , 0xf1ff, 0x81b8, 24}, + {m68k_op_or_32_re_al , 0xf1ff, 0x81b9, 28}, + {m68k_op_divs_16_aw , 0xf1ff, 0x81f8, 8}, + {m68k_op_divs_16_al , 0xf1ff, 0x81f9, 12}, + {m68k_op_divs_16_pcdi , 0xf1ff, 0x81fa, 8}, + {m68k_op_divs_16_pcix , 0xf1ff, 0x81fb, 10}, + {m68k_op_divs_16_i , 0xf1ff, 0x81fc, 4}, + {m68k_op_sub_8_er_pi7 , 0xf1ff, 0x901f, 8}, + {m68k_op_sub_8_er_pd7 , 0xf1ff, 0x9027, 10}, + {m68k_op_sub_8_er_aw , 0xf1ff, 0x9038, 12}, + {m68k_op_sub_8_er_al , 0xf1ff, 0x9039, 16}, + {m68k_op_sub_8_er_pcdi , 0xf1ff, 0x903a, 12}, + {m68k_op_sub_8_er_pcix , 0xf1ff, 0x903b, 14}, + {m68k_op_sub_8_er_i , 0xf1ff, 0x903c, 8}, + {m68k_op_sub_16_er_aw , 0xf1ff, 0x9078, 12}, + {m68k_op_sub_16_er_al , 0xf1ff, 0x9079, 16}, + {m68k_op_sub_16_er_pcdi , 0xf1ff, 0x907a, 12}, + {m68k_op_sub_16_er_pcix , 0xf1ff, 0x907b, 14}, + {m68k_op_sub_16_er_i , 0xf1ff, 0x907c, 8}, + {m68k_op_sub_32_er_aw , 0xf1ff, 0x90b8, 18}, + {m68k_op_sub_32_er_al , 0xf1ff, 0x90b9, 22}, + {m68k_op_sub_32_er_pcdi , 0xf1ff, 0x90ba, 18}, + {m68k_op_sub_32_er_pcix , 0xf1ff, 0x90bb, 20}, + {m68k_op_sub_32_er_i , 0xf1ff, 0x90bc, 16}, + {m68k_op_suba_16_aw , 0xf1ff, 0x90f8, 16}, + {m68k_op_suba_16_al , 0xf1ff, 0x90f9, 20}, + {m68k_op_suba_16_pcdi , 0xf1ff, 0x90fa, 16}, + {m68k_op_suba_16_pcix , 0xf1ff, 0x90fb, 18}, + {m68k_op_suba_16_i , 0xf1ff, 0x90fc, 12}, + {m68k_op_subx_8_mm_ay7 , 0xf1ff, 0x910f, 18}, + {m68k_op_sub_8_re_pi7 , 0xf1ff, 0x911f, 12}, + {m68k_op_sub_8_re_pd7 , 0xf1ff, 0x9127, 14}, + {m68k_op_sub_8_re_aw , 0xf1ff, 0x9138, 16}, + {m68k_op_sub_8_re_al , 0xf1ff, 0x9139, 20}, + {m68k_op_sub_16_re_aw , 0xf1ff, 0x9178, 16}, + {m68k_op_sub_16_re_al , 0xf1ff, 0x9179, 20}, + {m68k_op_sub_32_re_aw , 0xf1ff, 0x91b8, 24}, + {m68k_op_sub_32_re_al , 0xf1ff, 0x91b9, 28}, + {m68k_op_suba_32_aw , 0xf1ff, 0x91f8, 18}, + {m68k_op_suba_32_al , 0xf1ff, 0x91f9, 22}, + {m68k_op_suba_32_pcdi , 0xf1ff, 0x91fa, 18}, + {m68k_op_suba_32_pcix , 0xf1ff, 0x91fb, 20}, + {m68k_op_suba_32_i , 0xf1ff, 0x91fc, 16}, + {m68k_op_cmp_8_pi7 , 0xf1ff, 0xb01f, 8}, + {m68k_op_cmp_8_pd7 , 0xf1ff, 0xb027, 10}, + {m68k_op_cmp_8_aw , 0xf1ff, 0xb038, 12}, + {m68k_op_cmp_8_al , 0xf1ff, 0xb039, 16}, + {m68k_op_cmp_8_pcdi , 0xf1ff, 0xb03a, 12}, + {m68k_op_cmp_8_pcix , 0xf1ff, 0xb03b, 14}, + {m68k_op_cmp_8_i , 0xf1ff, 0xb03c, 8}, + {m68k_op_cmp_16_aw , 0xf1ff, 0xb078, 12}, + {m68k_op_cmp_16_al , 0xf1ff, 0xb079, 16}, + {m68k_op_cmp_16_pcdi , 0xf1ff, 0xb07a, 12}, + {m68k_op_cmp_16_pcix , 0xf1ff, 0xb07b, 14}, + {m68k_op_cmp_16_i , 0xf1ff, 0xb07c, 8}, + {m68k_op_cmp_32_aw , 0xf1ff, 0xb0b8, 18}, + {m68k_op_cmp_32_al , 0xf1ff, 0xb0b9, 22}, + {m68k_op_cmp_32_pcdi , 0xf1ff, 0xb0ba, 18}, + {m68k_op_cmp_32_pcix , 0xf1ff, 0xb0bb, 20}, + {m68k_op_cmp_32_i , 0xf1ff, 0xb0bc, 14}, + {m68k_op_cmpa_16_aw , 0xf1ff, 0xb0f8, 14}, + {m68k_op_cmpa_16_al , 0xf1ff, 0xb0f9, 18}, + {m68k_op_cmpa_16_pcdi , 0xf1ff, 0xb0fa, 14}, + {m68k_op_cmpa_16_pcix , 0xf1ff, 0xb0fb, 16}, + {m68k_op_cmpa_16_i , 0xf1ff, 0xb0fc, 10}, + {m68k_op_cmpm_8_ay7 , 0xf1ff, 0xb10f, 12}, + {m68k_op_eor_8_pi7 , 0xf1ff, 0xb11f, 12}, + {m68k_op_eor_8_pd7 , 0xf1ff, 0xb127, 14}, + {m68k_op_eor_8_aw , 0xf1ff, 0xb138, 16}, + {m68k_op_eor_8_al , 0xf1ff, 0xb139, 20}, + {m68k_op_eor_16_aw , 0xf1ff, 0xb178, 16}, + {m68k_op_eor_16_al , 0xf1ff, 0xb179, 20}, + {m68k_op_eor_32_aw , 0xf1ff, 0xb1b8, 24}, + {m68k_op_eor_32_al , 0xf1ff, 0xb1b9, 28}, + {m68k_op_cmpa_32_aw , 0xf1ff, 0xb1f8, 18}, + {m68k_op_cmpa_32_al , 0xf1ff, 0xb1f9, 22}, + {m68k_op_cmpa_32_pcdi , 0xf1ff, 0xb1fa, 18}, + {m68k_op_cmpa_32_pcix , 0xf1ff, 0xb1fb, 20}, + {m68k_op_cmpa_32_i , 0xf1ff, 0xb1fc, 14}, + {m68k_op_and_8_er_pi7 , 0xf1ff, 0xc01f, 8}, + {m68k_op_and_8_er_pd7 , 0xf1ff, 0xc027, 10}, + {m68k_op_and_8_er_aw , 0xf1ff, 0xc038, 12}, + {m68k_op_and_8_er_al , 0xf1ff, 0xc039, 16}, + {m68k_op_and_8_er_pcdi , 0xf1ff, 0xc03a, 12}, + {m68k_op_and_8_er_pcix , 0xf1ff, 0xc03b, 14}, + {m68k_op_and_8_er_i , 0xf1ff, 0xc03c, 8}, + {m68k_op_and_16_er_aw , 0xf1ff, 0xc078, 12}, + {m68k_op_and_16_er_al , 0xf1ff, 0xc079, 16}, + {m68k_op_and_16_er_pcdi , 0xf1ff, 0xc07a, 12}, + {m68k_op_and_16_er_pcix , 0xf1ff, 0xc07b, 14}, + {m68k_op_and_16_er_i , 0xf1ff, 0xc07c, 8}, + {m68k_op_and_32_er_aw , 0xf1ff, 0xc0b8, 18}, + {m68k_op_and_32_er_al , 0xf1ff, 0xc0b9, 22}, + {m68k_op_and_32_er_pcdi , 0xf1ff, 0xc0ba, 18}, + {m68k_op_and_32_er_pcix , 0xf1ff, 0xc0bb, 20}, + {m68k_op_and_32_er_i , 0xf1ff, 0xc0bc, 16}, + {m68k_op_mulu_16_aw , 0xf1ff, 0xc0f8, 8}, + {m68k_op_mulu_16_al , 0xf1ff, 0xc0f9, 12}, + {m68k_op_mulu_16_pcdi , 0xf1ff, 0xc0fa, 8}, + {m68k_op_mulu_16_pcix , 0xf1ff, 0xc0fb, 10}, + {m68k_op_mulu_16_i , 0xf1ff, 0xc0fc, 4}, + {m68k_op_abcd_8_mm_ay7 , 0xf1ff, 0xc10f, 18}, + {m68k_op_and_8_re_pi7 , 0xf1ff, 0xc11f, 12}, + {m68k_op_and_8_re_pd7 , 0xf1ff, 0xc127, 14}, + {m68k_op_and_8_re_aw , 0xf1ff, 0xc138, 16}, + {m68k_op_and_8_re_al , 0xf1ff, 0xc139, 20}, + {m68k_op_and_16_re_aw , 0xf1ff, 0xc178, 16}, + {m68k_op_and_16_re_al , 0xf1ff, 0xc179, 20}, + {m68k_op_and_32_re_aw , 0xf1ff, 0xc1b8, 24}, + {m68k_op_and_32_re_al , 0xf1ff, 0xc1b9, 28}, + {m68k_op_muls_16_aw , 0xf1ff, 0xc1f8, 8}, + {m68k_op_muls_16_al , 0xf1ff, 0xc1f9, 12}, + {m68k_op_muls_16_pcdi , 0xf1ff, 0xc1fa, 8}, + {m68k_op_muls_16_pcix , 0xf1ff, 0xc1fb, 10}, + {m68k_op_muls_16_i , 0xf1ff, 0xc1fc, 4}, + {m68k_op_add_8_er_pi7 , 0xf1ff, 0xd01f, 8}, + {m68k_op_add_8_er_pd7 , 0xf1ff, 0xd027, 10}, + {m68k_op_add_8_er_aw , 0xf1ff, 0xd038, 12}, + {m68k_op_add_8_er_al , 0xf1ff, 0xd039, 16}, + {m68k_op_add_8_er_pcdi , 0xf1ff, 0xd03a, 12}, + {m68k_op_add_8_er_pcix , 0xf1ff, 0xd03b, 14}, + {m68k_op_add_8_er_i , 0xf1ff, 0xd03c, 8}, + {m68k_op_add_16_er_aw , 0xf1ff, 0xd078, 12}, + {m68k_op_add_16_er_al , 0xf1ff, 0xd079, 16}, + {m68k_op_add_16_er_pcdi , 0xf1ff, 0xd07a, 12}, + {m68k_op_add_16_er_pcix , 0xf1ff, 0xd07b, 14}, + {m68k_op_add_16_er_i , 0xf1ff, 0xd07c, 8}, + {m68k_op_add_32_er_aw , 0xf1ff, 0xd0b8, 18}, + {m68k_op_add_32_er_al , 0xf1ff, 0xd0b9, 22}, + {m68k_op_add_32_er_pcdi , 0xf1ff, 0xd0ba, 18}, + {m68k_op_add_32_er_pcix , 0xf1ff, 0xd0bb, 20}, + {m68k_op_add_32_er_i , 0xf1ff, 0xd0bc, 16}, + {m68k_op_adda_16_aw , 0xf1ff, 0xd0f8, 16}, + {m68k_op_adda_16_al , 0xf1ff, 0xd0f9, 20}, + {m68k_op_adda_16_pcdi , 0xf1ff, 0xd0fa, 16}, + {m68k_op_adda_16_pcix , 0xf1ff, 0xd0fb, 18}, + {m68k_op_adda_16_i , 0xf1ff, 0xd0fc, 12}, + {m68k_op_addx_8_mm_ay7 , 0xf1ff, 0xd10f, 18}, + {m68k_op_add_8_re_pi7 , 0xf1ff, 0xd11f, 12}, + {m68k_op_add_8_re_pd7 , 0xf1ff, 0xd127, 14}, + {m68k_op_add_8_re_aw , 0xf1ff, 0xd138, 16}, + {m68k_op_add_8_re_al , 0xf1ff, 0xd139, 20}, + {m68k_op_add_16_re_aw , 0xf1ff, 0xd178, 16}, + {m68k_op_add_16_re_al , 0xf1ff, 0xd179, 20}, + {m68k_op_add_32_re_aw , 0xf1ff, 0xd1b8, 24}, + {m68k_op_add_32_re_al , 0xf1ff, 0xd1b9, 28}, + {m68k_op_adda_32_aw , 0xf1ff, 0xd1f8, 18}, + {m68k_op_adda_32_al , 0xf1ff, 0xd1f9, 22}, + {m68k_op_adda_32_pcdi , 0xf1ff, 0xd1fa, 18}, + {m68k_op_adda_32_pcix , 0xf1ff, 0xd1fb, 20}, + {m68k_op_adda_32_i , 0xf1ff, 0xd1fc, 16}, + {m68k_op_ori_8_d , 0xfff8, 0x0000, 8}, + {m68k_op_ori_8_ai , 0xfff8, 0x0010, 16}, + {m68k_op_ori_8_pi , 0xfff8, 0x0018, 16}, + {m68k_op_ori_8_pd , 0xfff8, 0x0020, 18}, + {m68k_op_ori_8_di , 0xfff8, 0x0028, 20}, + {m68k_op_ori_8_ix , 0xfff8, 0x0030, 22}, + {m68k_op_ori_16_d , 0xfff8, 0x0040, 8}, + {m68k_op_ori_16_ai , 0xfff8, 0x0050, 16}, + {m68k_op_ori_16_pi , 0xfff8, 0x0058, 16}, + {m68k_op_ori_16_pd , 0xfff8, 0x0060, 18}, + {m68k_op_ori_16_di , 0xfff8, 0x0068, 20}, + {m68k_op_ori_16_ix , 0xfff8, 0x0070, 22}, + {m68k_op_ori_32_d , 0xfff8, 0x0080, 16}, + {m68k_op_ori_32_ai , 0xfff8, 0x0090, 28}, + {m68k_op_ori_32_pi , 0xfff8, 0x0098, 28}, + {m68k_op_ori_32_pd , 0xfff8, 0x00a0, 30}, + {m68k_op_ori_32_di , 0xfff8, 0x00a8, 32}, + {m68k_op_ori_32_ix , 0xfff8, 0x00b0, 34}, + {m68k_op_andi_8_d , 0xfff8, 0x0200, 8}, + {m68k_op_andi_8_ai , 0xfff8, 0x0210, 16}, + {m68k_op_andi_8_pi , 0xfff8, 0x0218, 16}, + {m68k_op_andi_8_pd , 0xfff8, 0x0220, 18}, + {m68k_op_andi_8_di , 0xfff8, 0x0228, 20}, + {m68k_op_andi_8_ix , 0xfff8, 0x0230, 22}, + {m68k_op_andi_16_d , 0xfff8, 0x0240, 8}, + {m68k_op_andi_16_ai , 0xfff8, 0x0250, 16}, + {m68k_op_andi_16_pi , 0xfff8, 0x0258, 16}, + {m68k_op_andi_16_pd , 0xfff8, 0x0260, 18}, + {m68k_op_andi_16_di , 0xfff8, 0x0268, 20}, + {m68k_op_andi_16_ix , 0xfff8, 0x0270, 22}, + {m68k_op_andi_32_d , 0xfff8, 0x0280, 16}, /* see Yacht.txt */ + {m68k_op_andi_32_ai , 0xfff8, 0x0290, 28}, + {m68k_op_andi_32_pi , 0xfff8, 0x0298, 28}, + {m68k_op_andi_32_pd , 0xfff8, 0x02a0, 30}, + {m68k_op_andi_32_di , 0xfff8, 0x02a8, 32}, + {m68k_op_andi_32_ix , 0xfff8, 0x02b0, 34}, + {m68k_op_subi_8_d , 0xfff8, 0x0400, 8}, + {m68k_op_subi_8_ai , 0xfff8, 0x0410, 16}, + {m68k_op_subi_8_pi , 0xfff8, 0x0418, 16}, + {m68k_op_subi_8_pd , 0xfff8, 0x0420, 18}, + {m68k_op_subi_8_di , 0xfff8, 0x0428, 20}, + {m68k_op_subi_8_ix , 0xfff8, 0x0430, 22}, + {m68k_op_subi_16_d , 0xfff8, 0x0440, 8}, + {m68k_op_subi_16_ai , 0xfff8, 0x0450, 16}, + {m68k_op_subi_16_pi , 0xfff8, 0x0458, 16}, + {m68k_op_subi_16_pd , 0xfff8, 0x0460, 18}, + {m68k_op_subi_16_di , 0xfff8, 0x0468, 20}, + {m68k_op_subi_16_ix , 0xfff8, 0x0470, 22}, + {m68k_op_subi_32_d , 0xfff8, 0x0480, 16}, + {m68k_op_subi_32_ai , 0xfff8, 0x0490, 28}, + {m68k_op_subi_32_pi , 0xfff8, 0x0498, 28}, + {m68k_op_subi_32_pd , 0xfff8, 0x04a0, 30}, + {m68k_op_subi_32_di , 0xfff8, 0x04a8, 32}, + {m68k_op_subi_32_ix , 0xfff8, 0x04b0, 34}, + {m68k_op_addi_8_d , 0xfff8, 0x0600, 8}, + {m68k_op_addi_8_ai , 0xfff8, 0x0610, 16}, + {m68k_op_addi_8_pi , 0xfff8, 0x0618, 16}, + {m68k_op_addi_8_pd , 0xfff8, 0x0620, 18}, + {m68k_op_addi_8_di , 0xfff8, 0x0628, 20}, + {m68k_op_addi_8_ix , 0xfff8, 0x0630, 22}, + {m68k_op_addi_16_d , 0xfff8, 0x0640, 8}, + {m68k_op_addi_16_ai , 0xfff8, 0x0650, 16}, + {m68k_op_addi_16_pi , 0xfff8, 0x0658, 16}, + {m68k_op_addi_16_pd , 0xfff8, 0x0660, 18}, + {m68k_op_addi_16_di , 0xfff8, 0x0668, 20}, + {m68k_op_addi_16_ix , 0xfff8, 0x0670, 22}, + {m68k_op_addi_32_d , 0xfff8, 0x0680, 16}, + {m68k_op_addi_32_ai , 0xfff8, 0x0690, 28}, + {m68k_op_addi_32_pi , 0xfff8, 0x0698, 28}, + {m68k_op_addi_32_pd , 0xfff8, 0x06a0, 30}, + {m68k_op_addi_32_di , 0xfff8, 0x06a8, 32}, + {m68k_op_addi_32_ix , 0xfff8, 0x06b0, 34}, + {m68k_op_btst_32_s_d , 0xfff8, 0x0800, 10}, + {m68k_op_btst_8_s_ai , 0xfff8, 0x0810, 12}, + {m68k_op_btst_8_s_pi , 0xfff8, 0x0818, 12}, + {m68k_op_btst_8_s_pd , 0xfff8, 0x0820, 14}, + {m68k_op_btst_8_s_di , 0xfff8, 0x0828, 16}, + {m68k_op_btst_8_s_ix , 0xfff8, 0x0830, 18}, + {m68k_op_bchg_32_s_d , 0xfff8, 0x0840, 12}, + {m68k_op_bchg_8_s_ai , 0xfff8, 0x0850, 16}, + {m68k_op_bchg_8_s_pi , 0xfff8, 0x0858, 16}, + {m68k_op_bchg_8_s_pd , 0xfff8, 0x0860, 18}, + {m68k_op_bchg_8_s_di , 0xfff8, 0x0868, 20}, + {m68k_op_bchg_8_s_ix , 0xfff8, 0x0870, 22}, + {m68k_op_bclr_32_s_d , 0xfff8, 0x0880, 14}, + {m68k_op_bclr_8_s_ai , 0xfff8, 0x0890, 16}, + {m68k_op_bclr_8_s_pi , 0xfff8, 0x0898, 16}, + {m68k_op_bclr_8_s_pd , 0xfff8, 0x08a0, 18}, + {m68k_op_bclr_8_s_di , 0xfff8, 0x08a8, 20}, + {m68k_op_bclr_8_s_ix , 0xfff8, 0x08b0, 22}, + {m68k_op_bset_32_s_d , 0xfff8, 0x08c0, 12}, + {m68k_op_bset_8_s_ai , 0xfff8, 0x08d0, 16}, + {m68k_op_bset_8_s_pi , 0xfff8, 0x08d8, 16}, + {m68k_op_bset_8_s_pd , 0xfff8, 0x08e0, 18}, + {m68k_op_bset_8_s_di , 0xfff8, 0x08e8, 20}, + {m68k_op_bset_8_s_ix , 0xfff8, 0x08f0, 22}, + {m68k_op_eori_8_d , 0xfff8, 0x0a00, 8}, + {m68k_op_eori_8_ai , 0xfff8, 0x0a10, 16}, + {m68k_op_eori_8_pi , 0xfff8, 0x0a18, 16}, + {m68k_op_eori_8_pd , 0xfff8, 0x0a20, 18}, + {m68k_op_eori_8_di , 0xfff8, 0x0a28, 20}, + {m68k_op_eori_8_ix , 0xfff8, 0x0a30, 22}, + {m68k_op_eori_16_d , 0xfff8, 0x0a40, 8}, + {m68k_op_eori_16_ai , 0xfff8, 0x0a50, 16}, + {m68k_op_eori_16_pi , 0xfff8, 0x0a58, 16}, + {m68k_op_eori_16_pd , 0xfff8, 0x0a60, 18}, + {m68k_op_eori_16_di , 0xfff8, 0x0a68, 20}, + {m68k_op_eori_16_ix , 0xfff8, 0x0a70, 22}, + {m68k_op_eori_32_d , 0xfff8, 0x0a80, 16}, + {m68k_op_eori_32_ai , 0xfff8, 0x0a90, 28}, + {m68k_op_eori_32_pi , 0xfff8, 0x0a98, 28}, + {m68k_op_eori_32_pd , 0xfff8, 0x0aa0, 30}, + {m68k_op_eori_32_di , 0xfff8, 0x0aa8, 32}, + {m68k_op_eori_32_ix , 0xfff8, 0x0ab0, 34}, + {m68k_op_cmpi_8_d , 0xfff8, 0x0c00, 8}, + {m68k_op_cmpi_8_ai , 0xfff8, 0x0c10, 12}, + {m68k_op_cmpi_8_pi , 0xfff8, 0x0c18, 12}, + {m68k_op_cmpi_8_pd , 0xfff8, 0x0c20, 14}, + {m68k_op_cmpi_8_di , 0xfff8, 0x0c28, 16}, + {m68k_op_cmpi_8_ix , 0xfff8, 0x0c30, 18}, + {m68k_op_cmpi_16_d , 0xfff8, 0x0c40, 8}, + {m68k_op_cmpi_16_ai , 0xfff8, 0x0c50, 12}, + {m68k_op_cmpi_16_pi , 0xfff8, 0x0c58, 12}, + {m68k_op_cmpi_16_pd , 0xfff8, 0x0c60, 14}, + {m68k_op_cmpi_16_di , 0xfff8, 0x0c68, 16}, + {m68k_op_cmpi_16_ix , 0xfff8, 0x0c70, 18}, + {m68k_op_cmpi_32_d , 0xfff8, 0x0c80, 14}, + {m68k_op_cmpi_32_ai , 0xfff8, 0x0c90, 20}, + {m68k_op_cmpi_32_pi , 0xfff8, 0x0c98, 20}, + {m68k_op_cmpi_32_pd , 0xfff8, 0x0ca0, 22}, + {m68k_op_cmpi_32_di , 0xfff8, 0x0ca8, 24}, + {m68k_op_cmpi_32_ix , 0xfff8, 0x0cb0, 26}, + {m68k_op_move_8_aw_d , 0xfff8, 0x11c0, 12}, + {m68k_op_move_8_aw_ai , 0xfff8, 0x11d0, 16}, + {m68k_op_move_8_aw_pi , 0xfff8, 0x11d8, 16}, + {m68k_op_move_8_aw_pd , 0xfff8, 0x11e0, 18}, + {m68k_op_move_8_aw_di , 0xfff8, 0x11e8, 20}, + {m68k_op_move_8_aw_ix , 0xfff8, 0x11f0, 22}, + {m68k_op_move_8_al_d , 0xfff8, 0x13c0, 16}, + {m68k_op_move_8_al_ai , 0xfff8, 0x13d0, 20}, + {m68k_op_move_8_al_pi , 0xfff8, 0x13d8, 20}, + {m68k_op_move_8_al_pd , 0xfff8, 0x13e0, 22}, + {m68k_op_move_8_al_di , 0xfff8, 0x13e8, 24}, + {m68k_op_move_8_al_ix , 0xfff8, 0x13f0, 26}, + {m68k_op_move_8_pi7_d , 0xfff8, 0x1ec0, 8}, + {m68k_op_move_8_pi7_ai , 0xfff8, 0x1ed0, 12}, + {m68k_op_move_8_pi7_pi , 0xfff8, 0x1ed8, 12}, + {m68k_op_move_8_pi7_pd , 0xfff8, 0x1ee0, 14}, + {m68k_op_move_8_pi7_di , 0xfff8, 0x1ee8, 16}, + {m68k_op_move_8_pi7_ix , 0xfff8, 0x1ef0, 18}, + {m68k_op_move_8_pd7_d , 0xfff8, 0x1f00, 8}, + {m68k_op_move_8_pd7_ai , 0xfff8, 0x1f10, 12}, + {m68k_op_move_8_pd7_pi , 0xfff8, 0x1f18, 12}, + {m68k_op_move_8_pd7_pd , 0xfff8, 0x1f20, 14}, + {m68k_op_move_8_pd7_di , 0xfff8, 0x1f28, 16}, + {m68k_op_move_8_pd7_ix , 0xfff8, 0x1f30, 18}, + {m68k_op_move_32_aw_d , 0xfff8, 0x21c0, 16}, + {m68k_op_move_32_aw_a , 0xfff8, 0x21c8, 16}, + {m68k_op_move_32_aw_ai , 0xfff8, 0x21d0, 24}, + {m68k_op_move_32_aw_pi , 0xfff8, 0x21d8, 24}, + {m68k_op_move_32_aw_pd , 0xfff8, 0x21e0, 26}, + {m68k_op_move_32_aw_di , 0xfff8, 0x21e8, 28}, + {m68k_op_move_32_aw_ix , 0xfff8, 0x21f0, 30}, + {m68k_op_move_32_al_d , 0xfff8, 0x23c0, 20}, + {m68k_op_move_32_al_a , 0xfff8, 0x23c8, 20}, + {m68k_op_move_32_al_ai , 0xfff8, 0x23d0, 28}, + {m68k_op_move_32_al_pi , 0xfff8, 0x23d8, 28}, + {m68k_op_move_32_al_pd , 0xfff8, 0x23e0, 30}, + {m68k_op_move_32_al_di , 0xfff8, 0x23e8, 32}, + {m68k_op_move_32_al_ix , 0xfff8, 0x23f0, 34}, + {m68k_op_move_16_aw_d , 0xfff8, 0x31c0, 12}, + {m68k_op_move_16_aw_a , 0xfff8, 0x31c8, 12}, + {m68k_op_move_16_aw_ai , 0xfff8, 0x31d0, 16}, + {m68k_op_move_16_aw_pi , 0xfff8, 0x31d8, 16}, + {m68k_op_move_16_aw_pd , 0xfff8, 0x31e0, 18}, + {m68k_op_move_16_aw_di , 0xfff8, 0x31e8, 20}, + {m68k_op_move_16_aw_ix , 0xfff8, 0x31f0, 22}, + {m68k_op_move_16_al_d , 0xfff8, 0x33c0, 16}, + {m68k_op_move_16_al_a , 0xfff8, 0x33c8, 16}, + {m68k_op_move_16_al_ai , 0xfff8, 0x33d0, 20}, + {m68k_op_move_16_al_pi , 0xfff8, 0x33d8, 20}, + {m68k_op_move_16_al_pd , 0xfff8, 0x33e0, 22}, + {m68k_op_move_16_al_di , 0xfff8, 0x33e8, 24}, + {m68k_op_move_16_al_ix , 0xfff8, 0x33f0, 26}, + {m68k_op_negx_8_d , 0xfff8, 0x4000, 4}, + {m68k_op_negx_8_ai , 0xfff8, 0x4010, 12}, + {m68k_op_negx_8_pi , 0xfff8, 0x4018, 12}, + {m68k_op_negx_8_pd , 0xfff8, 0x4020, 14}, + {m68k_op_negx_8_di , 0xfff8, 0x4028, 16}, + {m68k_op_negx_8_ix , 0xfff8, 0x4030, 18}, + {m68k_op_negx_16_d , 0xfff8, 0x4040, 4}, + {m68k_op_negx_16_ai , 0xfff8, 0x4050, 12}, + {m68k_op_negx_16_pi , 0xfff8, 0x4058, 12}, + {m68k_op_negx_16_pd , 0xfff8, 0x4060, 14}, + {m68k_op_negx_16_di , 0xfff8, 0x4068, 16}, + {m68k_op_negx_16_ix , 0xfff8, 0x4070, 18}, + {m68k_op_negx_32_d , 0xfff8, 0x4080, 6}, + {m68k_op_negx_32_ai , 0xfff8, 0x4090, 20}, + {m68k_op_negx_32_pi , 0xfff8, 0x4098, 20}, + {m68k_op_negx_32_pd , 0xfff8, 0x40a0, 22}, + {m68k_op_negx_32_di , 0xfff8, 0x40a8, 24}, + {m68k_op_negx_32_ix , 0xfff8, 0x40b0, 26}, + {m68k_op_move_16_frs_d , 0xfff8, 0x40c0, 6}, + {m68k_op_move_16_frs_ai , 0xfff8, 0x40d0, 12}, + {m68k_op_move_16_frs_pi , 0xfff8, 0x40d8, 12}, + {m68k_op_move_16_frs_pd , 0xfff8, 0x40e0, 14}, + {m68k_op_move_16_frs_di , 0xfff8, 0x40e8, 16}, + {m68k_op_move_16_frs_ix , 0xfff8, 0x40f0, 18}, + {m68k_op_clr_8_d , 0xfff8, 0x4200, 4}, + {m68k_op_clr_8_ai , 0xfff8, 0x4210, 12}, + {m68k_op_clr_8_pi , 0xfff8, 0x4218, 12}, + {m68k_op_clr_8_pd , 0xfff8, 0x4220, 14}, + {m68k_op_clr_8_di , 0xfff8, 0x4228, 16}, + {m68k_op_clr_8_ix , 0xfff8, 0x4230, 18}, + {m68k_op_clr_16_d , 0xfff8, 0x4240, 4}, + {m68k_op_clr_16_ai , 0xfff8, 0x4250, 12}, + {m68k_op_clr_16_pi , 0xfff8, 0x4258, 12}, + {m68k_op_clr_16_pd , 0xfff8, 0x4260, 14}, + {m68k_op_clr_16_di , 0xfff8, 0x4268, 16}, + {m68k_op_clr_16_ix , 0xfff8, 0x4270, 18}, + {m68k_op_clr_32_d , 0xfff8, 0x4280, 6}, + {m68k_op_clr_32_ai , 0xfff8, 0x4290, 20}, + {m68k_op_clr_32_pi , 0xfff8, 0x4298, 20}, + {m68k_op_clr_32_pd , 0xfff8, 0x42a0, 22}, + {m68k_op_clr_32_di , 0xfff8, 0x42a8, 24}, + {m68k_op_clr_32_ix , 0xfff8, 0x42b0, 26}, + {m68k_op_neg_8_d , 0xfff8, 0x4400, 4}, + {m68k_op_neg_8_ai , 0xfff8, 0x4410, 12}, + {m68k_op_neg_8_pi , 0xfff8, 0x4418, 12}, + {m68k_op_neg_8_pd , 0xfff8, 0x4420, 14}, + {m68k_op_neg_8_di , 0xfff8, 0x4428, 16}, + {m68k_op_neg_8_ix , 0xfff8, 0x4430, 18}, + {m68k_op_neg_16_d , 0xfff8, 0x4440, 4}, + {m68k_op_neg_16_ai , 0xfff8, 0x4450, 12}, + {m68k_op_neg_16_pi , 0xfff8, 0x4458, 12}, + {m68k_op_neg_16_pd , 0xfff8, 0x4460, 14}, + {m68k_op_neg_16_di , 0xfff8, 0x4468, 16}, + {m68k_op_neg_16_ix , 0xfff8, 0x4470, 18}, + {m68k_op_neg_32_d , 0xfff8, 0x4480, 6}, + {m68k_op_neg_32_ai , 0xfff8, 0x4490, 20}, + {m68k_op_neg_32_pi , 0xfff8, 0x4498, 20}, + {m68k_op_neg_32_pd , 0xfff8, 0x44a0, 22}, + {m68k_op_neg_32_di , 0xfff8, 0x44a8, 24}, + {m68k_op_neg_32_ix , 0xfff8, 0x44b0, 26}, + {m68k_op_move_16_toc_d , 0xfff8, 0x44c0, 12}, + {m68k_op_move_16_toc_ai , 0xfff8, 0x44d0, 16}, + {m68k_op_move_16_toc_pi , 0xfff8, 0x44d8, 16}, + {m68k_op_move_16_toc_pd , 0xfff8, 0x44e0, 18}, + {m68k_op_move_16_toc_di , 0xfff8, 0x44e8, 20}, + {m68k_op_move_16_toc_ix , 0xfff8, 0x44f0, 22}, + {m68k_op_not_8_d , 0xfff8, 0x4600, 4}, + {m68k_op_not_8_ai , 0xfff8, 0x4610, 12}, + {m68k_op_not_8_pi , 0xfff8, 0x4618, 12}, + {m68k_op_not_8_pd , 0xfff8, 0x4620, 14}, + {m68k_op_not_8_di , 0xfff8, 0x4628, 16}, + {m68k_op_not_8_ix , 0xfff8, 0x4630, 18}, + {m68k_op_not_16_d , 0xfff8, 0x4640, 4}, + {m68k_op_not_16_ai , 0xfff8, 0x4650, 12}, + {m68k_op_not_16_pi , 0xfff8, 0x4658, 12}, + {m68k_op_not_16_pd , 0xfff8, 0x4660, 14}, + {m68k_op_not_16_di , 0xfff8, 0x4668, 16}, + {m68k_op_not_16_ix , 0xfff8, 0x4670, 18}, + {m68k_op_not_32_d , 0xfff8, 0x4680, 6}, + {m68k_op_not_32_ai , 0xfff8, 0x4690, 20}, + {m68k_op_not_32_pi , 0xfff8, 0x4698, 20}, + {m68k_op_not_32_pd , 0xfff8, 0x46a0, 22}, + {m68k_op_not_32_di , 0xfff8, 0x46a8, 24}, + {m68k_op_not_32_ix , 0xfff8, 0x46b0, 26}, + {m68k_op_move_16_tos_d , 0xfff8, 0x46c0, 12}, + {m68k_op_move_16_tos_ai , 0xfff8, 0x46d0, 16}, + {m68k_op_move_16_tos_pi , 0xfff8, 0x46d8, 16}, + {m68k_op_move_16_tos_pd , 0xfff8, 0x46e0, 18}, + {m68k_op_move_16_tos_di , 0xfff8, 0x46e8, 20}, + {m68k_op_move_16_tos_ix , 0xfff8, 0x46f0, 22}, + {m68k_op_nbcd_8_d , 0xfff8, 0x4800, 6}, + {m68k_op_nbcd_8_ai , 0xfff8, 0x4810, 12}, + {m68k_op_nbcd_8_pi , 0xfff8, 0x4818, 12}, + {m68k_op_nbcd_8_pd , 0xfff8, 0x4820, 14}, + {m68k_op_nbcd_8_di , 0xfff8, 0x4828, 16}, + {m68k_op_nbcd_8_ix , 0xfff8, 0x4830, 18}, + {m68k_op_swap_32 , 0xfff8, 0x4840, 4}, + {m68k_op_pea_32_ai , 0xfff8, 0x4850, 12}, + {m68k_op_pea_32_di , 0xfff8, 0x4868, 16}, + {m68k_op_pea_32_ix , 0xfff8, 0x4870, 20}, + {m68k_op_ext_16 , 0xfff8, 0x4880, 4}, + {m68k_op_movem_16_re_ai , 0xfff8, 0x4890, 8}, + {m68k_op_movem_16_re_pd , 0xfff8, 0x48a0, 8}, + {m68k_op_movem_16_re_di , 0xfff8, 0x48a8, 12}, + {m68k_op_movem_16_re_ix , 0xfff8, 0x48b0, 14}, + {m68k_op_ext_32 , 0xfff8, 0x48c0, 4}, + {m68k_op_movem_32_re_ai , 0xfff8, 0x48d0, 8}, + {m68k_op_movem_32_re_pd , 0xfff8, 0x48e0, 8}, + {m68k_op_movem_32_re_di , 0xfff8, 0x48e8, 12}, + {m68k_op_movem_32_re_ix , 0xfff8, 0x48f0, 14}, + {m68k_op_tst_8_d , 0xfff8, 0x4a00, 4}, + {m68k_op_tst_8_ai , 0xfff8, 0x4a10, 8}, + {m68k_op_tst_8_pi , 0xfff8, 0x4a18, 8}, + {m68k_op_tst_8_pd , 0xfff8, 0x4a20, 10}, + {m68k_op_tst_8_di , 0xfff8, 0x4a28, 12}, + {m68k_op_tst_8_ix , 0xfff8, 0x4a30, 14}, + {m68k_op_tst_16_d , 0xfff8, 0x4a40, 4}, + {m68k_op_tst_16_ai , 0xfff8, 0x4a50, 8}, + {m68k_op_tst_16_pi , 0xfff8, 0x4a58, 8}, + {m68k_op_tst_16_pd , 0xfff8, 0x4a60, 10}, + {m68k_op_tst_16_di , 0xfff8, 0x4a68, 12}, + {m68k_op_tst_16_ix , 0xfff8, 0x4a70, 14}, + {m68k_op_tst_32_d , 0xfff8, 0x4a80, 4}, + {m68k_op_tst_32_ai , 0xfff8, 0x4a90, 12}, + {m68k_op_tst_32_pi , 0xfff8, 0x4a98, 12}, + {m68k_op_tst_32_pd , 0xfff8, 0x4aa0, 14}, + {m68k_op_tst_32_di , 0xfff8, 0x4aa8, 16}, + {m68k_op_tst_32_ix , 0xfff8, 0x4ab0, 18}, + {m68k_op_tas_8_d , 0xfff8, 0x4ac0, 4}, + {m68k_op_tas_8_ai , 0xfff8, 0x4ad0, 14}, /* see Yacht.txt */ + {m68k_op_tas_8_pi , 0xfff8, 0x4ad8, 14}, /* see Yacht.txt */ + {m68k_op_tas_8_pd , 0xfff8, 0x4ae0, 16}, /* see Yacht.txt */ + {m68k_op_tas_8_di , 0xfff8, 0x4ae8, 18}, /* see Yacht.txt */ + {m68k_op_tas_8_ix , 0xfff8, 0x4af0, 20}, /* see Yacht.txt */ + {m68k_op_movem_16_er_ai , 0xfff8, 0x4c90, 12}, + {m68k_op_movem_16_er_pi , 0xfff8, 0x4c98, 12}, + {m68k_op_movem_16_er_di , 0xfff8, 0x4ca8, 16}, + {m68k_op_movem_16_er_ix , 0xfff8, 0x4cb0, 18}, + {m68k_op_movem_32_er_ai , 0xfff8, 0x4cd0, 12}, + {m68k_op_movem_32_er_pi , 0xfff8, 0x4cd8, 12}, + {m68k_op_movem_32_er_di , 0xfff8, 0x4ce8, 16}, + {m68k_op_movem_32_er_ix , 0xfff8, 0x4cf0, 18}, + {m68k_op_link_16 , 0xfff8, 0x4e50, 16}, + {m68k_op_unlk_32 , 0xfff8, 0x4e58, 12}, + {m68k_op_move_32_tou , 0xfff8, 0x4e60, 4}, + {m68k_op_move_32_fru , 0xfff8, 0x4e68, 4}, + {m68k_op_jsr_32_ai , 0xfff8, 0x4e90, 16}, + {m68k_op_jsr_32_di , 0xfff8, 0x4ea8, 18}, + {m68k_op_jsr_32_ix , 0xfff8, 0x4eb0, 22}, + {m68k_op_jmp_32_ai , 0xfff8, 0x4ed0, 8}, + {m68k_op_jmp_32_di , 0xfff8, 0x4ee8, 10}, + {m68k_op_jmp_32_ix , 0xfff8, 0x4ef0, 14}, + {m68k_op_st_8_d , 0xfff8, 0x50c0, 6}, + {m68k_op_dbt_16 , 0xfff8, 0x50c8, 12}, + {m68k_op_st_8_ai , 0xfff8, 0x50d0, 12}, + {m68k_op_st_8_pi , 0xfff8, 0x50d8, 12}, + {m68k_op_st_8_pd , 0xfff8, 0x50e0, 14}, + {m68k_op_st_8_di , 0xfff8, 0x50e8, 16}, + {m68k_op_st_8_ix , 0xfff8, 0x50f0, 18}, + {m68k_op_sf_8_d , 0xfff8, 0x51c0, 4}, + {m68k_op_dbf_16 , 0xfff8, 0x51c8, 12}, + {m68k_op_sf_8_ai , 0xfff8, 0x51d0, 12}, + {m68k_op_sf_8_pi , 0xfff8, 0x51d8, 12}, + {m68k_op_sf_8_pd , 0xfff8, 0x51e0, 14}, + {m68k_op_sf_8_di , 0xfff8, 0x51e8, 16}, + {m68k_op_sf_8_ix , 0xfff8, 0x51f0, 18}, + {m68k_op_shi_8_d , 0xfff8, 0x52c0, 4}, + {m68k_op_dbhi_16 , 0xfff8, 0x52c8, 12}, + {m68k_op_shi_8_ai , 0xfff8, 0x52d0, 12}, + {m68k_op_shi_8_pi , 0xfff8, 0x52d8, 12}, + {m68k_op_shi_8_pd , 0xfff8, 0x52e0, 14}, + {m68k_op_shi_8_di , 0xfff8, 0x52e8, 16}, + {m68k_op_shi_8_ix , 0xfff8, 0x52f0, 18}, + {m68k_op_sls_8_d , 0xfff8, 0x53c0, 4}, + {m68k_op_dbls_16 , 0xfff8, 0x53c8, 12}, + {m68k_op_sls_8_ai , 0xfff8, 0x53d0, 12}, + {m68k_op_sls_8_pi , 0xfff8, 0x53d8, 12}, + {m68k_op_sls_8_pd , 0xfff8, 0x53e0, 14}, + {m68k_op_sls_8_di , 0xfff8, 0x53e8, 16}, + {m68k_op_sls_8_ix , 0xfff8, 0x53f0, 18}, + {m68k_op_scc_8_d , 0xfff8, 0x54c0, 4}, + {m68k_op_dbcc_16 , 0xfff8, 0x54c8, 12}, + {m68k_op_scc_8_ai , 0xfff8, 0x54d0, 12}, + {m68k_op_scc_8_pi , 0xfff8, 0x54d8, 12}, + {m68k_op_scc_8_pd , 0xfff8, 0x54e0, 14}, + {m68k_op_scc_8_di , 0xfff8, 0x54e8, 16}, + {m68k_op_scc_8_ix , 0xfff8, 0x54f0, 18}, + {m68k_op_scs_8_d , 0xfff8, 0x55c0, 4}, + {m68k_op_dbcs_16 , 0xfff8, 0x55c8, 12}, + {m68k_op_scs_8_ai , 0xfff8, 0x55d0, 12}, + {m68k_op_scs_8_pi , 0xfff8, 0x55d8, 12}, + {m68k_op_scs_8_pd , 0xfff8, 0x55e0, 14}, + {m68k_op_scs_8_di , 0xfff8, 0x55e8, 16}, + {m68k_op_scs_8_ix , 0xfff8, 0x55f0, 18}, + {m68k_op_sne_8_d , 0xfff8, 0x56c0, 4}, + {m68k_op_dbne_16 , 0xfff8, 0x56c8, 12}, + {m68k_op_sne_8_ai , 0xfff8, 0x56d0, 12}, + {m68k_op_sne_8_pi , 0xfff8, 0x56d8, 12}, + {m68k_op_sne_8_pd , 0xfff8, 0x56e0, 14}, + {m68k_op_sne_8_di , 0xfff8, 0x56e8, 16}, + {m68k_op_sne_8_ix , 0xfff8, 0x56f0, 18}, + {m68k_op_seq_8_d , 0xfff8, 0x57c0, 4}, + {m68k_op_dbeq_16 , 0xfff8, 0x57c8, 12}, + {m68k_op_seq_8_ai , 0xfff8, 0x57d0, 12}, + {m68k_op_seq_8_pi , 0xfff8, 0x57d8, 12}, + {m68k_op_seq_8_pd , 0xfff8, 0x57e0, 14}, + {m68k_op_seq_8_di , 0xfff8, 0x57e8, 16}, + {m68k_op_seq_8_ix , 0xfff8, 0x57f0, 18}, + {m68k_op_svc_8_d , 0xfff8, 0x58c0, 4}, + {m68k_op_dbvc_16 , 0xfff8, 0x58c8, 12}, + {m68k_op_svc_8_ai , 0xfff8, 0x58d0, 12}, + {m68k_op_svc_8_pi , 0xfff8, 0x58d8, 12}, + {m68k_op_svc_8_pd , 0xfff8, 0x58e0, 14}, + {m68k_op_svc_8_di , 0xfff8, 0x58e8, 16}, + {m68k_op_svc_8_ix , 0xfff8, 0x58f0, 18}, + {m68k_op_svs_8_d , 0xfff8, 0x59c0, 4}, + {m68k_op_dbvs_16 , 0xfff8, 0x59c8, 12}, + {m68k_op_svs_8_ai , 0xfff8, 0x59d0, 12}, + {m68k_op_svs_8_pi , 0xfff8, 0x59d8, 12}, + {m68k_op_svs_8_pd , 0xfff8, 0x59e0, 14}, + {m68k_op_svs_8_di , 0xfff8, 0x59e8, 16}, + {m68k_op_svs_8_ix , 0xfff8, 0x59f0, 18}, + {m68k_op_spl_8_d , 0xfff8, 0x5ac0, 4}, + {m68k_op_dbpl_16 , 0xfff8, 0x5ac8, 12}, + {m68k_op_spl_8_ai , 0xfff8, 0x5ad0, 12}, + {m68k_op_spl_8_pi , 0xfff8, 0x5ad8, 12}, + {m68k_op_spl_8_pd , 0xfff8, 0x5ae0, 14}, + {m68k_op_spl_8_di , 0xfff8, 0x5ae8, 16}, + {m68k_op_spl_8_ix , 0xfff8, 0x5af0, 18}, + {m68k_op_smi_8_d , 0xfff8, 0x5bc0, 4}, + {m68k_op_dbmi_16 , 0xfff8, 0x5bc8, 12}, + {m68k_op_smi_8_ai , 0xfff8, 0x5bd0, 12}, + {m68k_op_smi_8_pi , 0xfff8, 0x5bd8, 12}, + {m68k_op_smi_8_pd , 0xfff8, 0x5be0, 14}, + {m68k_op_smi_8_di , 0xfff8, 0x5be8, 16}, + {m68k_op_smi_8_ix , 0xfff8, 0x5bf0, 18}, + {m68k_op_sge_8_d , 0xfff8, 0x5cc0, 4}, + {m68k_op_dbge_16 , 0xfff8, 0x5cc8, 12}, + {m68k_op_sge_8_ai , 0xfff8, 0x5cd0, 12}, + {m68k_op_sge_8_pi , 0xfff8, 0x5cd8, 12}, + {m68k_op_sge_8_pd , 0xfff8, 0x5ce0, 14}, + {m68k_op_sge_8_di , 0xfff8, 0x5ce8, 16}, + {m68k_op_sge_8_ix , 0xfff8, 0x5cf0, 18}, + {m68k_op_slt_8_d , 0xfff8, 0x5dc0, 4}, + {m68k_op_dblt_16 , 0xfff8, 0x5dc8, 12}, + {m68k_op_slt_8_ai , 0xfff8, 0x5dd0, 12}, + {m68k_op_slt_8_pi , 0xfff8, 0x5dd8, 12}, + {m68k_op_slt_8_pd , 0xfff8, 0x5de0, 14}, + {m68k_op_slt_8_di , 0xfff8, 0x5de8, 16}, + {m68k_op_slt_8_ix , 0xfff8, 0x5df0, 18}, + {m68k_op_sgt_8_d , 0xfff8, 0x5ec0, 4}, + {m68k_op_dbgt_16 , 0xfff8, 0x5ec8, 12}, + {m68k_op_sgt_8_ai , 0xfff8, 0x5ed0, 12}, + {m68k_op_sgt_8_pi , 0xfff8, 0x5ed8, 12}, + {m68k_op_sgt_8_pd , 0xfff8, 0x5ee0, 14}, + {m68k_op_sgt_8_di , 0xfff8, 0x5ee8, 16}, + {m68k_op_sgt_8_ix , 0xfff8, 0x5ef0, 18}, + {m68k_op_sle_8_d , 0xfff8, 0x5fc0, 4}, + {m68k_op_dble_16 , 0xfff8, 0x5fc8, 12}, + {m68k_op_sle_8_ai , 0xfff8, 0x5fd0, 12}, + {m68k_op_sle_8_pi , 0xfff8, 0x5fd8, 12}, + {m68k_op_sle_8_pd , 0xfff8, 0x5fe0, 14}, + {m68k_op_sle_8_di , 0xfff8, 0x5fe8, 16}, + {m68k_op_sle_8_ix , 0xfff8, 0x5ff0, 18}, + {m68k_op_sbcd_8_mm_ax7 , 0xfff8, 0x8f08, 18}, + {m68k_op_subx_8_mm_ax7 , 0xfff8, 0x9f08, 18}, + {m68k_op_cmpm_8_ax7 , 0xfff8, 0xbf08, 12}, + {m68k_op_abcd_8_mm_ax7 , 0xfff8, 0xcf08, 18}, + {m68k_op_addx_8_mm_ax7 , 0xfff8, 0xdf08, 18}, + {m68k_op_asr_16_ai , 0xfff8, 0xe0d0, 12}, + {m68k_op_asr_16_pi , 0xfff8, 0xe0d8, 12}, + {m68k_op_asr_16_pd , 0xfff8, 0xe0e0, 14}, + {m68k_op_asr_16_di , 0xfff8, 0xe0e8, 16}, + {m68k_op_asr_16_ix , 0xfff8, 0xe0f0, 18}, + {m68k_op_asl_16_ai , 0xfff8, 0xe1d0, 12}, + {m68k_op_asl_16_pi , 0xfff8, 0xe1d8, 12}, + {m68k_op_asl_16_pd , 0xfff8, 0xe1e0, 14}, + {m68k_op_asl_16_di , 0xfff8, 0xe1e8, 16}, + {m68k_op_asl_16_ix , 0xfff8, 0xe1f0, 18}, + {m68k_op_lsr_16_ai , 0xfff8, 0xe2d0, 12}, + {m68k_op_lsr_16_pi , 0xfff8, 0xe2d8, 12}, + {m68k_op_lsr_16_pd , 0xfff8, 0xe2e0, 14}, + {m68k_op_lsr_16_di , 0xfff8, 0xe2e8, 16}, + {m68k_op_lsr_16_ix , 0xfff8, 0xe2f0, 18}, + {m68k_op_lsl_16_ai , 0xfff8, 0xe3d0, 12}, + {m68k_op_lsl_16_pi , 0xfff8, 0xe3d8, 12}, + {m68k_op_lsl_16_pd , 0xfff8, 0xe3e0, 14}, + {m68k_op_lsl_16_di , 0xfff8, 0xe3e8, 16}, + {m68k_op_lsl_16_ix , 0xfff8, 0xe3f0, 18}, + {m68k_op_roxr_16_ai , 0xfff8, 0xe4d0, 12}, + {m68k_op_roxr_16_pi , 0xfff8, 0xe4d8, 12}, + {m68k_op_roxr_16_pd , 0xfff8, 0xe4e0, 14}, + {m68k_op_roxr_16_di , 0xfff8, 0xe4e8, 16}, + {m68k_op_roxr_16_ix , 0xfff8, 0xe4f0, 18}, + {m68k_op_roxl_16_ai , 0xfff8, 0xe5d0, 12}, + {m68k_op_roxl_16_pi , 0xfff8, 0xe5d8, 12}, + {m68k_op_roxl_16_pd , 0xfff8, 0xe5e0, 14}, + {m68k_op_roxl_16_di , 0xfff8, 0xe5e8, 16}, + {m68k_op_roxl_16_ix , 0xfff8, 0xe5f0, 18}, + {m68k_op_ror_16_ai , 0xfff8, 0xe6d0, 12}, + {m68k_op_ror_16_pi , 0xfff8, 0xe6d8, 12}, + {m68k_op_ror_16_pd , 0xfff8, 0xe6e0, 14}, + {m68k_op_ror_16_di , 0xfff8, 0xe6e8, 16}, + {m68k_op_ror_16_ix , 0xfff8, 0xe6f0, 18}, + {m68k_op_rol_16_ai , 0xfff8, 0xe7d0, 12}, + {m68k_op_rol_16_pi , 0xfff8, 0xe7d8, 12}, + {m68k_op_rol_16_pd , 0xfff8, 0xe7e0, 14}, + {m68k_op_rol_16_di , 0xfff8, 0xe7e8, 16}, + {m68k_op_rol_16_ix , 0xfff8, 0xe7f0, 18}, + {m68k_op_ori_8_pi7 , 0xffff, 0x001f, 16}, + {m68k_op_ori_8_pd7 , 0xffff, 0x0027, 18}, + {m68k_op_ori_8_aw , 0xffff, 0x0038, 20}, + {m68k_op_ori_8_al , 0xffff, 0x0039, 24}, + {m68k_op_ori_16_toc , 0xffff, 0x003c, 20}, + {m68k_op_ori_16_aw , 0xffff, 0x0078, 20}, + {m68k_op_ori_16_al , 0xffff, 0x0079, 24}, + {m68k_op_ori_16_tos , 0xffff, 0x007c, 20}, + {m68k_op_ori_32_aw , 0xffff, 0x00b8, 32}, + {m68k_op_ori_32_al , 0xffff, 0x00b9, 36}, + {m68k_op_andi_8_pi7 , 0xffff, 0x021f, 16}, + {m68k_op_andi_8_pd7 , 0xffff, 0x0227, 18}, + {m68k_op_andi_8_aw , 0xffff, 0x0238, 20}, + {m68k_op_andi_8_al , 0xffff, 0x0239, 24}, + {m68k_op_andi_16_toc , 0xffff, 0x023c, 20}, + {m68k_op_andi_16_aw , 0xffff, 0x0278, 20}, + {m68k_op_andi_16_al , 0xffff, 0x0279, 24}, + {m68k_op_andi_16_tos , 0xffff, 0x027c, 20}, + {m68k_op_andi_32_aw , 0xffff, 0x02b8, 32}, + {m68k_op_andi_32_al , 0xffff, 0x02b9, 36}, + {m68k_op_subi_8_pi7 , 0xffff, 0x041f, 16}, + {m68k_op_subi_8_pd7 , 0xffff, 0x0427, 18}, + {m68k_op_subi_8_aw , 0xffff, 0x0438, 20}, + {m68k_op_subi_8_al , 0xffff, 0x0439, 24}, + {m68k_op_subi_16_aw , 0xffff, 0x0478, 20}, + {m68k_op_subi_16_al , 0xffff, 0x0479, 24}, + {m68k_op_subi_32_aw , 0xffff, 0x04b8, 32}, + {m68k_op_subi_32_al , 0xffff, 0x04b9, 36}, + {m68k_op_addi_8_pi7 , 0xffff, 0x061f, 16}, + {m68k_op_addi_8_pd7 , 0xffff, 0x0627, 18}, + {m68k_op_addi_8_aw , 0xffff, 0x0638, 20}, + {m68k_op_addi_8_al , 0xffff, 0x0639, 24}, + {m68k_op_addi_16_aw , 0xffff, 0x0678, 20}, + {m68k_op_addi_16_al , 0xffff, 0x0679, 24}, + {m68k_op_addi_32_aw , 0xffff, 0x06b8, 32}, + {m68k_op_addi_32_al , 0xffff, 0x06b9, 36}, + {m68k_op_btst_8_s_pi7 , 0xffff, 0x081f, 12}, + {m68k_op_btst_8_s_pd7 , 0xffff, 0x0827, 14}, + {m68k_op_btst_8_s_aw , 0xffff, 0x0838, 16}, + {m68k_op_btst_8_s_al , 0xffff, 0x0839, 20}, + {m68k_op_btst_8_s_pcdi , 0xffff, 0x083a, 16}, + {m68k_op_btst_8_s_pcix , 0xffff, 0x083b, 18}, + {m68k_op_bchg_8_s_pi7 , 0xffff, 0x085f, 16}, + {m68k_op_bchg_8_s_pd7 , 0xffff, 0x0867, 18}, + {m68k_op_bchg_8_s_aw , 0xffff, 0x0878, 20}, + {m68k_op_bchg_8_s_al , 0xffff, 0x0879, 24}, + {m68k_op_bclr_8_s_pi7 , 0xffff, 0x089f, 16}, + {m68k_op_bclr_8_s_pd7 , 0xffff, 0x08a7, 18}, + {m68k_op_bclr_8_s_aw , 0xffff, 0x08b8, 20}, + {m68k_op_bclr_8_s_al , 0xffff, 0x08b9, 24}, + {m68k_op_bset_8_s_pi7 , 0xffff, 0x08df, 16}, + {m68k_op_bset_8_s_pd7 , 0xffff, 0x08e7, 18}, + {m68k_op_bset_8_s_aw , 0xffff, 0x08f8, 20}, + {m68k_op_bset_8_s_al , 0xffff, 0x08f9, 24}, + {m68k_op_eori_8_pi7 , 0xffff, 0x0a1f, 16}, + {m68k_op_eori_8_pd7 , 0xffff, 0x0a27, 18}, + {m68k_op_eori_8_aw , 0xffff, 0x0a38, 20}, + {m68k_op_eori_8_al , 0xffff, 0x0a39, 24}, + {m68k_op_eori_16_toc , 0xffff, 0x0a3c, 20}, + {m68k_op_eori_16_aw , 0xffff, 0x0a78, 20}, + {m68k_op_eori_16_al , 0xffff, 0x0a79, 24}, + {m68k_op_eori_16_tos , 0xffff, 0x0a7c, 20}, + {m68k_op_eori_32_aw , 0xffff, 0x0ab8, 32}, + {m68k_op_eori_32_al , 0xffff, 0x0ab9, 36}, + {m68k_op_cmpi_8_pi7 , 0xffff, 0x0c1f, 12}, + {m68k_op_cmpi_8_pd7 , 0xffff, 0x0c27, 14}, + {m68k_op_cmpi_8_aw , 0xffff, 0x0c38, 16}, + {m68k_op_cmpi_8_al , 0xffff, 0x0c39, 20}, + {m68k_op_cmpi_16_aw , 0xffff, 0x0c78, 16}, + {m68k_op_cmpi_16_al , 0xffff, 0x0c79, 20}, + {m68k_op_cmpi_32_aw , 0xffff, 0x0cb8, 24}, + {m68k_op_cmpi_32_al , 0xffff, 0x0cb9, 28}, + {m68k_op_move_8_aw_pi7 , 0xffff, 0x11df, 16}, + {m68k_op_move_8_aw_pd7 , 0xffff, 0x11e7, 18}, + {m68k_op_move_8_aw_aw , 0xffff, 0x11f8, 20}, + {m68k_op_move_8_aw_al , 0xffff, 0x11f9, 24}, + {m68k_op_move_8_aw_pcdi , 0xffff, 0x11fa, 20}, + {m68k_op_move_8_aw_pcix , 0xffff, 0x11fb, 22}, + {m68k_op_move_8_aw_i , 0xffff, 0x11fc, 16}, + {m68k_op_move_8_al_pi7 , 0xffff, 0x13df, 20}, + {m68k_op_move_8_al_pd7 , 0xffff, 0x13e7, 22}, + {m68k_op_move_8_al_aw , 0xffff, 0x13f8, 24}, + {m68k_op_move_8_al_al , 0xffff, 0x13f9, 28}, + {m68k_op_move_8_al_pcdi , 0xffff, 0x13fa, 24}, + {m68k_op_move_8_al_pcix , 0xffff, 0x13fb, 26}, + {m68k_op_move_8_al_i , 0xffff, 0x13fc, 20}, + {m68k_op_move_8_pi7_pi7 , 0xffff, 0x1edf, 12}, + {m68k_op_move_8_pi7_pd7 , 0xffff, 0x1ee7, 14}, + {m68k_op_move_8_pi7_aw , 0xffff, 0x1ef8, 16}, + {m68k_op_move_8_pi7_al , 0xffff, 0x1ef9, 20}, + {m68k_op_move_8_pi7_pcdi , 0xffff, 0x1efa, 16}, + {m68k_op_move_8_pi7_pcix , 0xffff, 0x1efb, 18}, + {m68k_op_move_8_pi7_i , 0xffff, 0x1efc, 12}, + {m68k_op_move_8_pd7_pi7 , 0xffff, 0x1f1f, 12}, + {m68k_op_move_8_pd7_pd7 , 0xffff, 0x1f27, 14}, + {m68k_op_move_8_pd7_aw , 0xffff, 0x1f38, 16}, + {m68k_op_move_8_pd7_al , 0xffff, 0x1f39, 20}, + {m68k_op_move_8_pd7_pcdi , 0xffff, 0x1f3a, 16}, + {m68k_op_move_8_pd7_pcix , 0xffff, 0x1f3b, 18}, + {m68k_op_move_8_pd7_i , 0xffff, 0x1f3c, 12}, + {m68k_op_move_32_aw_aw , 0xffff, 0x21f8, 28}, + {m68k_op_move_32_aw_al , 0xffff, 0x21f9, 32}, + {m68k_op_move_32_aw_pcdi , 0xffff, 0x21fa, 28}, + {m68k_op_move_32_aw_pcix , 0xffff, 0x21fb, 30}, + {m68k_op_move_32_aw_i , 0xffff, 0x21fc, 24}, + {m68k_op_move_32_al_aw , 0xffff, 0x23f8, 32}, + {m68k_op_move_32_al_al , 0xffff, 0x23f9, 36}, + {m68k_op_move_32_al_pcdi , 0xffff, 0x23fa, 32}, + {m68k_op_move_32_al_pcix , 0xffff, 0x23fb, 34}, + {m68k_op_move_32_al_i , 0xffff, 0x23fc, 28}, + {m68k_op_move_16_aw_aw , 0xffff, 0x31f8, 20}, + {m68k_op_move_16_aw_al , 0xffff, 0x31f9, 24}, + {m68k_op_move_16_aw_pcdi , 0xffff, 0x31fa, 20}, + {m68k_op_move_16_aw_pcix , 0xffff, 0x31fb, 22}, + {m68k_op_move_16_aw_i , 0xffff, 0x31fc, 16}, + {m68k_op_move_16_al_aw , 0xffff, 0x33f8, 24}, + {m68k_op_move_16_al_al , 0xffff, 0x33f9, 28}, + {m68k_op_move_16_al_pcdi , 0xffff, 0x33fa, 24}, + {m68k_op_move_16_al_pcix , 0xffff, 0x33fb, 26}, + {m68k_op_move_16_al_i , 0xffff, 0x33fc, 20}, + {m68k_op_negx_8_pi7 , 0xffff, 0x401f, 12}, + {m68k_op_negx_8_pd7 , 0xffff, 0x4027, 14}, + {m68k_op_negx_8_aw , 0xffff, 0x4038, 16}, + {m68k_op_negx_8_al , 0xffff, 0x4039, 20}, + {m68k_op_negx_16_aw , 0xffff, 0x4078, 16}, + {m68k_op_negx_16_al , 0xffff, 0x4079, 20}, + {m68k_op_negx_32_aw , 0xffff, 0x40b8, 24}, + {m68k_op_negx_32_al , 0xffff, 0x40b9, 28}, + {m68k_op_move_16_frs_aw , 0xffff, 0x40f8, 16}, + {m68k_op_move_16_frs_al , 0xffff, 0x40f9, 20}, + {m68k_op_clr_8_pi7 , 0xffff, 0x421f, 12}, + {m68k_op_clr_8_pd7 , 0xffff, 0x4227, 14}, + {m68k_op_clr_8_aw , 0xffff, 0x4238, 16}, + {m68k_op_clr_8_al , 0xffff, 0x4239, 20}, + {m68k_op_clr_16_aw , 0xffff, 0x4278, 16}, + {m68k_op_clr_16_al , 0xffff, 0x4279, 20}, + {m68k_op_clr_32_aw , 0xffff, 0x42b8, 24}, + {m68k_op_clr_32_al , 0xffff, 0x42b9, 28}, + {m68k_op_neg_8_pi7 , 0xffff, 0x441f, 12}, + {m68k_op_neg_8_pd7 , 0xffff, 0x4427, 14}, + {m68k_op_neg_8_aw , 0xffff, 0x4438, 16}, + {m68k_op_neg_8_al , 0xffff, 0x4439, 20}, + {m68k_op_neg_16_aw , 0xffff, 0x4478, 16}, + {m68k_op_neg_16_al , 0xffff, 0x4479, 20}, + {m68k_op_neg_32_aw , 0xffff, 0x44b8, 24}, + {m68k_op_neg_32_al , 0xffff, 0x44b9, 28}, + {m68k_op_move_16_toc_aw , 0xffff, 0x44f8, 20}, + {m68k_op_move_16_toc_al , 0xffff, 0x44f9, 24}, + {m68k_op_move_16_toc_pcdi , 0xffff, 0x44fa, 20}, + {m68k_op_move_16_toc_pcix , 0xffff, 0x44fb, 22}, + {m68k_op_move_16_toc_i , 0xffff, 0x44fc, 16}, + {m68k_op_not_8_pi7 , 0xffff, 0x461f, 12}, + {m68k_op_not_8_pd7 , 0xffff, 0x4627, 14}, + {m68k_op_not_8_aw , 0xffff, 0x4638, 16}, + {m68k_op_not_8_al , 0xffff, 0x4639, 20}, + {m68k_op_not_16_aw , 0xffff, 0x4678, 16}, + {m68k_op_not_16_al , 0xffff, 0x4679, 20}, + {m68k_op_not_32_aw , 0xffff, 0x46b8, 24}, + {m68k_op_not_32_al , 0xffff, 0x46b9, 28}, + {m68k_op_move_16_tos_aw , 0xffff, 0x46f8, 20}, + {m68k_op_move_16_tos_al , 0xffff, 0x46f9, 24}, + {m68k_op_move_16_tos_pcdi , 0xffff, 0x46fa, 20}, + {m68k_op_move_16_tos_pcix , 0xffff, 0x46fb, 22}, + {m68k_op_move_16_tos_i , 0xffff, 0x46fc, 16}, + {m68k_op_nbcd_8_pi7 , 0xffff, 0x481f, 12}, + {m68k_op_nbcd_8_pd7 , 0xffff, 0x4827, 14}, + {m68k_op_nbcd_8_aw , 0xffff, 0x4838, 16}, + {m68k_op_nbcd_8_al , 0xffff, 0x4839, 20}, + {m68k_op_pea_32_aw , 0xffff, 0x4878, 16}, + {m68k_op_pea_32_al , 0xffff, 0x4879, 20}, + {m68k_op_pea_32_pcdi , 0xffff, 0x487a, 16}, + {m68k_op_pea_32_pcix , 0xffff, 0x487b, 20}, + {m68k_op_movem_16_re_aw , 0xffff, 0x48b8, 12}, + {m68k_op_movem_16_re_al , 0xffff, 0x48b9, 16}, + {m68k_op_movem_32_re_aw , 0xffff, 0x48f8, 12}, + {m68k_op_movem_32_re_al , 0xffff, 0x48f9, 16}, + {m68k_op_tst_8_pi7 , 0xffff, 0x4a1f, 8}, + {m68k_op_tst_8_pd7 , 0xffff, 0x4a27, 10}, + {m68k_op_tst_8_aw , 0xffff, 0x4a38, 12}, + {m68k_op_tst_8_al , 0xffff, 0x4a39, 16}, + {m68k_op_tst_16_aw , 0xffff, 0x4a78, 12}, + {m68k_op_tst_16_al , 0xffff, 0x4a79, 16}, + {m68k_op_tst_32_aw , 0xffff, 0x4ab8, 16}, + {m68k_op_tst_32_al , 0xffff, 0x4ab9, 20}, + {m68k_op_tas_8_pi7 , 0xffff, 0x4adf, 14}, /* see Yacht.txt */ + {m68k_op_tas_8_pd7 , 0xffff, 0x4ae7, 16}, /* see Yacht.txt */ + {m68k_op_tas_8_aw , 0xffff, 0x4af8, 18}, /* see Yacht.txt */ + {m68k_op_tas_8_al , 0xffff, 0x4af9, 22}, /* see Yacht.txt */ + {m68k_op_illegal , 0xffff, 0x4afc, 4}, + {m68k_op_movem_16_er_aw , 0xffff, 0x4cb8, 16}, + {m68k_op_movem_16_er_al , 0xffff, 0x4cb9, 20}, + {m68k_op_movem_16_er_pcdi , 0xffff, 0x4cba, 16}, + {m68k_op_movem_16_er_pcix , 0xffff, 0x4cbb, 18}, + {m68k_op_movem_32_er_aw , 0xffff, 0x4cf8, 16}, + {m68k_op_movem_32_er_al , 0xffff, 0x4cf9, 20}, + {m68k_op_movem_32_er_pcdi , 0xffff, 0x4cfa, 16}, + {m68k_op_movem_32_er_pcix , 0xffff, 0x4cfb, 18}, + {m68k_op_link_16_a7 , 0xffff, 0x4e57, 16}, + {m68k_op_unlk_32_a7 , 0xffff, 0x4e5f, 12}, + {m68k_op_reset , 0xffff, 0x4e70, 0}, + {m68k_op_nop , 0xffff, 0x4e71, 4}, + {m68k_op_stop , 0xffff, 0x4e72, 4}, + {m68k_op_rte_32 , 0xffff, 0x4e73, 20}, + {m68k_op_rts_32 , 0xffff, 0x4e75, 16}, + {m68k_op_trapv , 0xffff, 0x4e76, 4}, + {m68k_op_rtr_32 , 0xffff, 0x4e77, 20}, + {m68k_op_jsr_32_aw , 0xffff, 0x4eb8, 18}, + {m68k_op_jsr_32_al , 0xffff, 0x4eb9, 20}, + {m68k_op_jsr_32_pcdi , 0xffff, 0x4eba, 18}, + {m68k_op_jsr_32_pcix , 0xffff, 0x4ebb, 22}, + {m68k_op_jmp_32_aw , 0xffff, 0x4ef8, 10}, + {m68k_op_jmp_32_al , 0xffff, 0x4ef9, 12}, + {m68k_op_jmp_32_pcdi , 0xffff, 0x4efa, 10}, + {m68k_op_jmp_32_pcix , 0xffff, 0x4efb, 14}, + {m68k_op_st_8_pi7 , 0xffff, 0x50df, 12}, + {m68k_op_st_8_pd7 , 0xffff, 0x50e7, 14}, + {m68k_op_st_8_aw , 0xffff, 0x50f8, 16}, + {m68k_op_st_8_al , 0xffff, 0x50f9, 20}, + {m68k_op_sf_8_pi7 , 0xffff, 0x51df, 12}, + {m68k_op_sf_8_pd7 , 0xffff, 0x51e7, 14}, + {m68k_op_sf_8_aw , 0xffff, 0x51f8, 16}, + {m68k_op_sf_8_al , 0xffff, 0x51f9, 20}, + {m68k_op_shi_8_pi7 , 0xffff, 0x52df, 12}, + {m68k_op_shi_8_pd7 , 0xffff, 0x52e7, 14}, + {m68k_op_shi_8_aw , 0xffff, 0x52f8, 16}, + {m68k_op_shi_8_al , 0xffff, 0x52f9, 20}, + {m68k_op_sls_8_pi7 , 0xffff, 0x53df, 12}, + {m68k_op_sls_8_pd7 , 0xffff, 0x53e7, 14}, + {m68k_op_sls_8_aw , 0xffff, 0x53f8, 16}, + {m68k_op_sls_8_al , 0xffff, 0x53f9, 20}, + {m68k_op_scc_8_pi7 , 0xffff, 0x54df, 12}, + {m68k_op_scc_8_pd7 , 0xffff, 0x54e7, 14}, + {m68k_op_scc_8_aw , 0xffff, 0x54f8, 16}, + {m68k_op_scc_8_al , 0xffff, 0x54f9, 20}, + {m68k_op_scs_8_pi7 , 0xffff, 0x55df, 12}, + {m68k_op_scs_8_pd7 , 0xffff, 0x55e7, 14}, + {m68k_op_scs_8_aw , 0xffff, 0x55f8, 16}, + {m68k_op_scs_8_al , 0xffff, 0x55f9, 20}, + {m68k_op_sne_8_pi7 , 0xffff, 0x56df, 12}, + {m68k_op_sne_8_pd7 , 0xffff, 0x56e7, 14}, + {m68k_op_sne_8_aw , 0xffff, 0x56f8, 16}, + {m68k_op_sne_8_al , 0xffff, 0x56f9, 20}, + {m68k_op_seq_8_pi7 , 0xffff, 0x57df, 12}, + {m68k_op_seq_8_pd7 , 0xffff, 0x57e7, 14}, + {m68k_op_seq_8_aw , 0xffff, 0x57f8, 16}, + {m68k_op_seq_8_al , 0xffff, 0x57f9, 20}, + {m68k_op_svc_8_pi7 , 0xffff, 0x58df, 12}, + {m68k_op_svc_8_pd7 , 0xffff, 0x58e7, 14}, + {m68k_op_svc_8_aw , 0xffff, 0x58f8, 16}, + {m68k_op_svc_8_al , 0xffff, 0x58f9, 20}, + {m68k_op_svs_8_pi7 , 0xffff, 0x59df, 12}, + {m68k_op_svs_8_pd7 , 0xffff, 0x59e7, 14}, + {m68k_op_svs_8_aw , 0xffff, 0x59f8, 16}, + {m68k_op_svs_8_al , 0xffff, 0x59f9, 20}, + {m68k_op_spl_8_pi7 , 0xffff, 0x5adf, 12}, + {m68k_op_spl_8_pd7 , 0xffff, 0x5ae7, 14}, + {m68k_op_spl_8_aw , 0xffff, 0x5af8, 16}, + {m68k_op_spl_8_al , 0xffff, 0x5af9, 20}, + {m68k_op_smi_8_pi7 , 0xffff, 0x5bdf, 12}, + {m68k_op_smi_8_pd7 , 0xffff, 0x5be7, 14}, + {m68k_op_smi_8_aw , 0xffff, 0x5bf8, 16}, + {m68k_op_smi_8_al , 0xffff, 0x5bf9, 20}, + {m68k_op_sge_8_pi7 , 0xffff, 0x5cdf, 12}, + {m68k_op_sge_8_pd7 , 0xffff, 0x5ce7, 14}, + {m68k_op_sge_8_aw , 0xffff, 0x5cf8, 16}, + {m68k_op_sge_8_al , 0xffff, 0x5cf9, 20}, + {m68k_op_slt_8_pi7 , 0xffff, 0x5ddf, 12}, + {m68k_op_slt_8_pd7 , 0xffff, 0x5de7, 14}, + {m68k_op_slt_8_aw , 0xffff, 0x5df8, 16}, + {m68k_op_slt_8_al , 0xffff, 0x5df9, 20}, + {m68k_op_sgt_8_pi7 , 0xffff, 0x5edf, 12}, + {m68k_op_sgt_8_pd7 , 0xffff, 0x5ee7, 14}, + {m68k_op_sgt_8_aw , 0xffff, 0x5ef8, 16}, + {m68k_op_sgt_8_al , 0xffff, 0x5ef9, 20}, + {m68k_op_sle_8_pi7 , 0xffff, 0x5fdf, 12}, + {m68k_op_sle_8_pd7 , 0xffff, 0x5fe7, 14}, + {m68k_op_sle_8_aw , 0xffff, 0x5ff8, 16}, + {m68k_op_sle_8_al , 0xffff, 0x5ff9, 20}, + {m68k_op_bra_16 , 0xffff, 0x6000, 10}, + {m68k_op_bra_32 , 0xffff, 0x60ff, 10}, + {m68k_op_bsr_16 , 0xffff, 0x6100, 18}, + {m68k_op_bsr_32 , 0xffff, 0x61ff, 18}, + {m68k_op_bhi_16 , 0xffff, 0x6200, 10}, + {m68k_op_bhi_32 , 0xffff, 0x62ff, 10}, + {m68k_op_bls_16 , 0xffff, 0x6300, 10}, + {m68k_op_bls_32 , 0xffff, 0x63ff, 10}, + {m68k_op_bcc_16 , 0xffff, 0x6400, 10}, + {m68k_op_bcc_32 , 0xffff, 0x64ff, 10}, + {m68k_op_bcs_16 , 0xffff, 0x6500, 10}, + {m68k_op_bcs_32 , 0xffff, 0x65ff, 10}, + {m68k_op_bne_16 , 0xffff, 0x6600, 10}, + {m68k_op_bne_32 , 0xffff, 0x66ff, 10}, + {m68k_op_beq_16 , 0xffff, 0x6700, 10}, + {m68k_op_beq_32 , 0xffff, 0x67ff, 10}, + {m68k_op_bvc_16 , 0xffff, 0x6800, 10}, + {m68k_op_bvc_32 , 0xffff, 0x68ff, 10}, + {m68k_op_bvs_16 , 0xffff, 0x6900, 10}, + {m68k_op_bvs_32 , 0xffff, 0x69ff, 10}, + {m68k_op_bpl_16 , 0xffff, 0x6a00, 10}, + {m68k_op_bpl_32 , 0xffff, 0x6aff, 10}, + {m68k_op_bmi_16 , 0xffff, 0x6b00, 10}, + {m68k_op_bmi_32 , 0xffff, 0x6bff, 10}, + {m68k_op_bge_16 , 0xffff, 0x6c00, 10}, + {m68k_op_bge_32 , 0xffff, 0x6cff, 10}, + {m68k_op_blt_16 , 0xffff, 0x6d00, 10}, + {m68k_op_blt_32 , 0xffff, 0x6dff, 10}, + {m68k_op_bgt_16 , 0xffff, 0x6e00, 10}, + {m68k_op_bgt_32 , 0xffff, 0x6eff, 10}, + {m68k_op_ble_16 , 0xffff, 0x6f00, 10}, + {m68k_op_ble_32 , 0xffff, 0x6fff, 10}, + {m68k_op_sbcd_8_mm_axy7 , 0xffff, 0x8f0f, 18}, + {m68k_op_subx_8_mm_axy7 , 0xffff, 0x9f0f, 18}, + {m68k_op_cmpm_8_axy7 , 0xffff, 0xbf0f, 12}, + {m68k_op_abcd_8_mm_axy7 , 0xffff, 0xcf0f, 18}, + {m68k_op_addx_8_mm_axy7 , 0xffff, 0xdf0f, 18}, + {m68k_op_asr_16_aw , 0xffff, 0xe0f8, 16}, + {m68k_op_asr_16_al , 0xffff, 0xe0f9, 20}, + {m68k_op_asl_16_aw , 0xffff, 0xe1f8, 16}, + {m68k_op_asl_16_al , 0xffff, 0xe1f9, 20}, + {m68k_op_lsr_16_aw , 0xffff, 0xe2f8, 16}, + {m68k_op_lsr_16_al , 0xffff, 0xe2f9, 20}, + {m68k_op_lsl_16_aw , 0xffff, 0xe3f8, 16}, + {m68k_op_lsl_16_al , 0xffff, 0xe3f9, 20}, + {m68k_op_roxr_16_aw , 0xffff, 0xe4f8, 16}, + {m68k_op_roxr_16_al , 0xffff, 0xe4f9, 20}, + {m68k_op_roxl_16_aw , 0xffff, 0xe5f8, 16}, + {m68k_op_roxl_16_al , 0xffff, 0xe5f9, 20}, + {m68k_op_ror_16_aw , 0xffff, 0xe6f8, 16}, + {m68k_op_ror_16_al , 0xffff, 0xe6f9, 20}, + {m68k_op_rol_16_aw , 0xffff, 0xe7f8, 16}, + {m68k_op_rol_16_al , 0xffff, 0xe7f9, 20}, + {0, 0, 0, 0} +}; + + +/* Build the opcode handler jump table */ +static void m68ki_build_opcode_table(void) +{ + const opcode_handler_struct *ostruct; + int instr; + int i; + int j; + + for(i = 0; i < 0x10000; i++) + { + /* default to illegal */ + m68ki_instruction_jump_table[i] = m68k_op_illegal; + m68ki_cycles[i] = 4; + } + + ostruct = &m68k_opcode_handler_table[0]; + while(ostruct->mask != 0xff00) + { + for(i = 0;i < 0x10000;i++) + { + if((i & ostruct->mask) == ostruct->match) + { + m68ki_instruction_jump_table[i] = ostruct->opcode_handler; + m68ki_cycles[i] = ostruct->cycles * MUL; + } + } + ostruct++; + } + while(ostruct->mask == 0xff00) + { + for(i = 0;i <= 0xff;i++) + { + m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler; + m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL; + } + ostruct++; + } + while(ostruct->mask == 0xf1f8) + { + for(i = 0;i < 8;i++) + { + for(j = 0;j < 8;j++) + { + instr = ostruct->match | (i << 9) | j; + m68ki_instruction_jump_table[instr] = ostruct->opcode_handler; + m68ki_cycles[instr] = ostruct->cycles * MUL; + } + } + ostruct++; + } + while(ostruct->mask == 0xfff0) + { + for(i = 0;i <= 0x0f;i++) + { + m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler; + m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL; + } + ostruct++; + } + while(ostruct->mask == 0xf1ff) + { + for(i = 0;i <= 0x07;i++) + { + m68ki_instruction_jump_table[ostruct->match | (i << 9)] = ostruct->opcode_handler; + m68ki_cycles[ostruct->match | (i << 9)] = ostruct->cycles * MUL; + } + ostruct++; + } + while(ostruct->mask == 0xfff8) + { + for(i = 0;i <= 0x07;i++) + { + m68ki_instruction_jump_table[ostruct->match | i] = ostruct->opcode_handler; + m68ki_cycles[ostruct->match | i] = ostruct->cycles * MUL; + } + ostruct++; + } + while(ostruct->mask == 0xffff) + { + m68ki_instruction_jump_table[ostruct->match] = ostruct->opcode_handler; + m68ki_cycles[ostruct->match] = ostruct->cycles * MUL; + ostruct++; + } +} + +#endif + +/* ======================================================================== */ +/* ============================== END OF FILE ============================= */ +/* ======================================================================== */ + + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/readme.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/readme.txt new file mode 100644 index 0000000000..91549011e4 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/readme.txt @@ -0,0 +1,315 @@ + MUSASHI + ======= + + Version 3.3 + + A portable Motorola M680x0 processor emulation engine. + Copyright 1998-2001 Karl Stenerud. All rights reserved. + + + +INTRODUCTION: +------------ + +Musashi is a Motorola 68000, 68010, 68EC020, and 68020 emulator written in C. +This emulator was written with two goals in mind: portability and speed. + +The emulator is written to ANSI C specifications with the exception that I use +inline functions. This is not compliant to the ANSI spec, but will be +compliant to the ANSI C9X spec. + +It has been successfully running in the MAME project (www.mame.net) for over 2 +years and so has had time to mature. + + + +LICENSE AND COPYRIGHT: +--------------------- + +The Musashi M680x0 emulator is copyright 1998-2001 Karl Stenerud. + +The source code included in this archive is provided AS-IS, free for any +non-commercial purpose. + +If you build a program using this core, please give credit to the author. + +If you wish to use this core in a commercial environment, please contact +the author to discuss commercial licensing. + + + +AVAILABILITY: +------------ +The latest version of this code can be obtained at: +http://kstenerud.cjb.net + + + +CONTACTING THE AUTHOR: +--------------------- +I can be reached at kstenerud@mame.net + + + +BASIC CONFIGURATION: +------------------- +The basic configuration will give you a standard 68000 that has sufficient +functionality to work in a primitive environment. + +This setup assumes that you only have 1 device interrupting it, that the +device will always request an autovectored interrupt, and it will always clear +the interrupt before the interrupt service routine finishes (but could +possibly re-assert the interrupt). +You will have only one address space, no tracing, and no instruction prefetch. + +To implement the basic configuration: + +- Open m68kconf.h and verify that the settings for INLINE and DECL_SPEC will + work with your compiler. (They are set for gcc) + +- In your host program, implement the following functions: + unsigned int m68k_read_memory_8(unsigned int address); + unsigned int m68k_read_memory_16(unsigned int address); + unsigned int m68k_read_memory_32(unsigned int address); + void m68k_write_memory_8(unsigned int address, unsigned int value); + void m68k_write_memory_16(unsigned int address, unsigned int value); + void m68k_write_memory_32(unsigned int address, unsigned int value); + +- In your host program, be sure to call m68k_pulse_reset() once before calling + any of the other functions as this initializes the core. + +- Use m68k_execute() to execute instructions and m68k_set_irq() to cause an + interrupt. + + + +ADDING PROPER INTERRUPT HANDLING: +-------------------------------- +The interrupt handling in the basic configuration doesn't emulate the +interrupt acknowledge phase of the CPU and automatically clears an interrupt +request during interrupt processing. +While this works for most systems, you may need more accurate interrupt +handling. + +To add proper interrupt handling: + +- In m68kconf.h, set M68K_EMULATE_INT_ACK to OPT_SPECIFY_HANDLER + +- In m68kconf.h, set M68K_INT_ACK_CALLBACK(A) to your interrupt acknowledge + routine + +- Your interrupt acknowledge routine must return an interrupt vector, + M68K_INT_ACK_AUTOVECTOR, or M68K_INT_ACK_SPURIOUS. most m68k + implementations just use autovectored interrupts. + +- When the interrupting device is satisfied, you must call m68k_set_irq(0) to + remove the interrupt request. + + + +MULTIPLE INTERRUPTS: +------------------- +The above system will work if you have only one device interrupting the CPU, +but if you have more than one device, you must do a bit more. + +To add multiple interrupts: + +- You must make an interrupt arbitration device that will take the highest + priority interrupt and encode it onto the IRQ pins on the CPU. + +- The interrupt arbitration device should use m68k_set_irq() to set the + highest pending interrupt, or 0 for no interrupts pending. + + + +SEPARATE IMMEDIATE AND PC-RELATIVE READS: +---------------------------------------- +You can write faster memory access functions if you know whether you are +fetching from ROM or RAM. Immediate reads are always from the program space +(Always in ROM unless it is running self-modifying code). +This will also separate the pc-relative reads, since some systems treat +PROGRAM mode reads and DATA mode reads differently (for program encryption, +for instance). See the section below (ADDRESS SPACE) for an explanation of +PROGRAM and DATA mode. + +To enable separate reads: + +- In m68kconf.h, turn on M68K_SEPARATE_READS. + +- In your host program, implement the following functions: + unsigned int m68k_read_immediate_16(unsigned int address); + unsigned int m68k_read_immediate_32(unsigned int address); + + unsigned int m68k_read_pcrelative_8(unsigned int address); + unsigned int m68k_read_pcrelative_16(unsigned int address); + unsigned int m68k_read_pcrelative_32(unsigned int address); + +- If you need to know the current PC (for banking and such), set + M68K_MONITOR_PC to OPT_SPECIFY_HANDLER, and set M68K_SET_PC_CALLBACK(A) to + your routine. + + + +ADDRESS SPACES: +-------------- +Most systems will only implement one address space, placing ROM at the lower +addresses and RAM at the higher. However, there is the possibility that a +system will implement ROM and RAM in the same address range, but in different +address spaces, or will have different mamory types that require different +handling for the program and the data. + +The 68k accomodates this by allowing different program spaces, the most +important to us being PROGRAM and DATA space. Here is a breakdown of +how information is fetched: + +- All immediate reads are fetched from PROGRAM space. + +- All PC-relative reads are fetched from PROGRAM space. + +- The initial stack pointer and program counter are fetched from PROGRAM space. + +- All other reads (except for those from the moves instruction for 68020) + are fetched from DATA space. + +The m68k deals with this by encoding the requested address space on the +function code pins: + + FC + Address Space 210 + ------------------ --- + USER DATA 001 + USER PROGRAM 010 + SUPERVISOR DATA 101 + SUPERVISOR PROGRAM 110 + CPU SPACE 111 <-- not emulated in this core since we emulate + interrupt acknowledge in another way. + +Problems arise here if you need to emulate this distinction (if, for example, +your ROM and RAM are at the same address range, with RAM and ROM enable +wired to the function code pins). + +There are 2 ways to deal with this situation using Musashi: + +1. If you only need the distinction between PROGRAM and DATA (the most common), + you can just separate the reads (see the preceeding section). This is the + faster solution. + +2. You can emulate the function code pins entirely. + +To emulate the function code pins: + +- In m68kconf.h, set M68K_EMULATE_FC to OPT_SPECIFY_HANDLER and set + M68K_SET_FC_CALLBACK(A) to your function code handler function. + +- Your function code handler should select the proper address space for + subsequent calls to m68k_read_xx (and m68k_write_xx for 68010+). + +Note: immediate reads are always done from program space, so technically you + don't need to implement the separate immediate reads, although you could + gain more speed improvements leaving them in and doing some clever + programming. + + + +USING DIFFERENT CPU TYPES: +------------------------- +The default is to enable only the 68000 cpu type. To change this, change the +settings for M68K_EMULATE_010 etc in m68kconf.h. + +To set the CPU type you want to use: + +- Make sure it is enabled in m68kconf.h. Current switches are: + M68K_EMULATE_010 + M68K_EMULATE_EC020 + M68K_EMULATE_020 + +- In your host program, call m68k_set_cpu_type() and then call + m68k_pulse_reset(). Valid CPU types are: + M68K_CPU_TYPE_68000, + M68K_CPU_TYPE_68010, + M68K_CPU_TYPE_68EC020, + M68K_CPU_TYPE_68020 + + + +CLOCK FREQUENCY: +--------------- +In order to emulate the correct clock frequency, you will have to calculate +how long it takes the emulation to execute a certain number of "cycles" and +vary your calls to m68k_execute() accordingly. +As well, it is a good idea to take away the CPU's timeslice when it writes to +a memory-mapped port in order to give the device it wrote to a chance to +react. + +You can use the functions m68k_cycles_run(), m68k_cycles_remaining(), +m68k_modify_timeslice(), and m68k_end_timeslice() to do this. +Try to use large cycle values in your calls to m68k_execute() since it will +increase throughput. You can always take away the timeslice later. + + + +MORE CORRECT EMULATION: +---------------------- +You may need to enable these in order to properly emulate some of the more +obscure functions of the m68k: + +- M68K_EMULATE_BKPT_ACK causes the CPU to call a breakpoint handler on a BKPT + instruction + +- M68K_EMULATE_TRACE causes the CPU to generate trace exceptions when the + trace bits are set + +- M68K_EMULATE_RESET causes the CPU to call a reset handler on a RESET + instruction. + +- M68K_EMULATE_PREFETCH emulates the 4-word instruction prefetch that is part + of the 68000/68010 (needed for Amiga emulation). + +- call m68k_pulse_halt() to emulate the HALT pin. + + + +CONVENIENCE FUNCTIONS: +--------------------- +These are in here for programmer convenience: + +- M68K_INSTRUCTION_HOOK lets you call a handler before each instruction. + +- M68K_LOG_ENABLE and M68K_LOG_1010_1111 lets you log illegal and A/F-line + instructions. + + + +MULTIPLE CPU EMULATION: +---------------------- +The default is to use only one CPU. To use more than one CPU in this core, +there are some things to keep in mind: + +- To have different cpus call different functions, use OPT_ON instead of + OPT_SPECIFY_HANDLER, and use the m68k_set_xxx_callback() functions to set + your callback handlers on a per-cpu basis. + +- Be sure to call set_cpu_type() for each CPU you use. + +- Use m68k_set_context() and m68k_get_context() to switch to another CPU. + + + +LOAD AND SAVE CPU CONTEXTS FROM DISK: +------------------------------------ +You can use them68k_load_context() and m68k_save_context() functions to load +and save the CPU state to disk. + + + +GET/SET INFORMATION FROM THE CPU: +-------------------------------- +You can use m68k_get_reg() and m68k_set_reg() to gain access to the internals +of the CPU. + + + +EXAMPLE: +------- + +I have included a file example.zip that contains a full example. diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/s68kconf.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/s68kconf.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/s68kconf.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/s68kconf.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/s68kcpu.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/s68kcpu.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/s68kcpu.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/s68kcpu.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/s68ki_cycles.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/s68ki_cycles.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/s68ki_cycles.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/m68k/s68ki_cycles.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/macros.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/macros.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/macros.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/macros.h index 9b4223cd07..b3a639bcf2 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/macros.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/macros.h @@ -1,70 +1,70 @@ -#ifndef _MACROS_H_ -#define _MACROS_H_ - -#ifdef LSB_FIRST - -#define READ_BYTE(BASE, ADDR) (BASE)[(ADDR)^1] - -#define READ_WORD(BASE, ADDR) (((BASE)[ADDR]<<8) | (BASE)[(ADDR)+1]) - -#define READ_WORD_LONG(BASE, ADDR) (((BASE)[(ADDR)+1]<<24) | \ - ((BASE)[(ADDR)]<<16) | \ - ((BASE)[(ADDR)+3]<<8) | \ - (BASE)[(ADDR)+2]) - -#define WRITE_BYTE(BASE, ADDR, VAL) (BASE)[(ADDR)^1] = (VAL)&0xff - -#define WRITE_WORD(BASE, ADDR, VAL) (BASE)[ADDR] = ((VAL)>>8) & 0xff; \ - (BASE)[(ADDR)+1] = (VAL)&0xff - -#define WRITE_WORD_LONG(BASE, ADDR, VAL) (BASE)[(ADDR+1)] = ((VAL)>>24) & 0xff; \ - (BASE)[(ADDR)] = ((VAL)>>16)&0xff; \ - (BASE)[(ADDR+3)] = ((VAL)>>8)&0xff; \ - (BASE)[(ADDR+2)] = (VAL)&0xff - -#else - -#define READ_BYTE(BASE, ADDR) (BASE)[ADDR] -#define READ_WORD(BASE, ADDR) *(uint16 *)((BASE) + (ADDR)) -#define READ_WORD_LONG(BASE, ADDR) *(uint32 *)((BASE) + (ADDR)) -#define WRITE_BYTE(BASE, ADDR, VAL) (BASE)[ADDR] = VAL & 0xff -#define WRITE_WORD(BASE, ADDR, VAL) *(uint16 *)((BASE) + (ADDR)) = VAL & 0xffff -#define WRITE_WORD_LONG(BASE, ADDR, VAL) *(uint32 *)((BASE) + (ADDR)) = VAL & 0xffffffff -#endif - -/* C89 compatibility */ -#ifndef M_PI -#define M_PI 3.14159265358979323846264338327f -#endif /* M_PI */ - -/* Set to your compiler's static inline keyword to enable it, or - * set it to blank to disable it. - * If you define INLINE in makefile or osd.h, it will override this value. - * NOTE: not enabling inline functions will SEVERELY slow down emulation. - */ -#ifndef INLINE -#define INLINE static __inline__ -#endif /* INLINE */ - -/* Alignment macros for cross compiler compatibility */ -#if defined(_MSC_VER) -#define ALIGNED_(x) __declspec(align(x)) -#elif defined(__GNUC__) -#define ALIGNED_(x) __attribute__ ((aligned(x))) -#endif - -/* Default CD image file access (read-only) functions */ -/* If you need to override default stdio.h functions with custom filesystem API, - redefine following macros in platform specific include file (osd.h) or Makefile -*/ -#ifndef cdStream -#define cdStream FILE -#define cdStreamOpen(fname) fopen(fname, "rb") -#define cdStreamClose fclose -#define cdStreamRead fread -#define cdStreamSeek fseek -#define cdStreamTell ftell -#define cdStreamGets fgets -#endif - -#endif /* _MACROS_H_ */ +#ifndef _MACROS_H_ +#define _MACROS_H_ + +#ifdef LSB_FIRST + +#define READ_BYTE(BASE, ADDR) (BASE)[(ADDR)^1] + +#define READ_WORD(BASE, ADDR) (((BASE)[ADDR]<<8) | (BASE)[(ADDR)+1]) + +#define READ_WORD_LONG(BASE, ADDR) (((BASE)[(ADDR)+1]<<24) | \ + ((BASE)[(ADDR)]<<16) | \ + ((BASE)[(ADDR)+3]<<8) | \ + (BASE)[(ADDR)+2]) + +#define WRITE_BYTE(BASE, ADDR, VAL) (BASE)[(ADDR)^1] = (VAL)&0xff + +#define WRITE_WORD(BASE, ADDR, VAL) (BASE)[ADDR] = ((VAL)>>8) & 0xff; \ + (BASE)[(ADDR)+1] = (VAL)&0xff + +#define WRITE_WORD_LONG(BASE, ADDR, VAL) (BASE)[(ADDR+1)] = ((VAL)>>24) & 0xff; \ + (BASE)[(ADDR)] = ((VAL)>>16)&0xff; \ + (BASE)[(ADDR+3)] = ((VAL)>>8)&0xff; \ + (BASE)[(ADDR+2)] = (VAL)&0xff + +#else + +#define READ_BYTE(BASE, ADDR) (BASE)[ADDR] +#define READ_WORD(BASE, ADDR) *(uint16 *)((BASE) + (ADDR)) +#define READ_WORD_LONG(BASE, ADDR) *(uint32 *)((BASE) + (ADDR)) +#define WRITE_BYTE(BASE, ADDR, VAL) (BASE)[ADDR] = VAL & 0xff +#define WRITE_WORD(BASE, ADDR, VAL) *(uint16 *)((BASE) + (ADDR)) = VAL & 0xffff +#define WRITE_WORD_LONG(BASE, ADDR, VAL) *(uint32 *)((BASE) + (ADDR)) = VAL & 0xffffffff +#endif + +/* C89 compatibility */ +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327f +#endif /* M_PI */ + +/* Set to your compiler's static inline keyword to enable it, or + * set it to blank to disable it. + * If you define INLINE in makefile or osd.h, it will override this value. + * NOTE: not enabling inline functions will SEVERELY slow down emulation. + */ +#ifndef INLINE +#define INLINE static __inline__ +#endif /* INLINE */ + +/* Alignment macros for cross compiler compatibility */ +#if defined(_MSC_VER) +#define ALIGNED_(x) __declspec(align(x)) +#elif defined(__GNUC__) +#define ALIGNED_(x) __attribute__ ((aligned(x))) +#endif + +/* Default CD image file access (read-only) functions */ +/* If you need to override default stdio.h functions with custom filesystem API, + redefine following macros in platform specific include file (osd.h) or Makefile +*/ +#ifndef cdStream +#define cdStream FILE +#define cdStreamOpen(fname) fopen(fname, "rb") +#define cdStreamClose fclose +#define cdStreamRead fread +#define cdStreamSeek fseek +#define cdStreamTell ftell +#define cdStreamGets fgets +#endif + +#endif /* _MACROS_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/mem68k.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/mem68k.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/mem68k.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/mem68k.c index 23f0d677b4..6371acc605 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/mem68k.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/mem68k.c @@ -1,1384 +1,1384 @@ -/*************************************************************************************** - * Genesis Plus - * Main 68k bus handlers - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -/*--------------------------------------------------------------------------*/ -/* Unused areas (return open bus data, i.e prefetched instruction word) */ -/*--------------------------------------------------------------------------*/ - -unsigned int m68k_read_bus_8(unsigned int address) -{ -#ifdef LOGERROR - error("Unused read8 %08X (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); -#endif - address = m68k.pc | (address & 1); - return READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff); -} - -unsigned int m68k_read_bus_16(unsigned int address) -{ -#ifdef LOGERROR - error("Unused read16 %08X (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); -#endif - address = m68k.pc; - return *(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)); -} - - -void m68k_unused_8_w(unsigned int address, unsigned int data) -{ -#ifdef LOGERROR - error("Unused write8 %08X = %02X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); -#endif -} - -void m68k_unused_16_w(unsigned int address, unsigned int data) -{ -#ifdef LOGERROR - error("Unused write16 %08X = %04X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); -#endif -} - - -/*--------------------------------------------------------------------------*/ -/* Illegal areas (cause system to lock-up since !DTACK is not returned) */ -/*--------------------------------------------------------------------------*/ - -void m68k_lockup_w_8 (unsigned int address, unsigned int data) -{ -#ifdef LOGERROR - error ("Lockup %08X = %02X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); -#endif - if (!config.force_dtack) - { - m68k_pulse_halt(); - m68k.cycles = m68k.cycle_end; - } -} - -void m68k_lockup_w_16 (unsigned int address, unsigned int data) -{ -#ifdef LOGERROR - error ("Lockup %08X = %04X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); -#endif - if (!config.force_dtack) - { - m68k_pulse_halt(); - m68k.cycles = m68k.cycle_end; - } -} - -unsigned int m68k_lockup_r_8 (unsigned int address) -{ -#ifdef LOGERROR - error ("Lockup %08X.b (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); -#endif - if (!config.force_dtack) - { - m68k_pulse_halt(); - m68k.cycles = m68k.cycle_end; - } - address = m68k.pc | (address & 1); - return READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff); -} - -unsigned int m68k_lockup_r_16 (unsigned int address) -{ -#ifdef LOGERROR - error ("Lockup %08X.w (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); -#endif - if (!config.force_dtack) - { - m68k_pulse_halt(); - m68k.cycles = m68k.cycle_end; - } - address = m68k.pc; - return *(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)); -} - - -/*--------------------------------------------------------------------------*/ -/* Z80 bus (accessed through I/O chip) */ -/*--------------------------------------------------------------------------*/ - -unsigned int z80_read_byte(unsigned int address) -{ - switch ((address >> 13) & 3) - { - case 2: /* YM2612 */ - { - return fm_read(m68k.cycles, address & 3); - } - - case 3: /* Misc */ - { - /* VDP (through 68k bus) */ - if ((address & 0xFF00) == 0x7F00) - { - return m68k_lockup_r_8(address); - } - return (m68k_read_bus_8(address) | 0xFF); - } - - default: /* ZRAM */ - { - return zram[address & 0x1FFF]; - } - } -} - -unsigned int z80_read_word(unsigned int address) -{ - unsigned int data = z80_read_byte(address); - return (data | (data << 8)); -} - -void z80_write_byte(unsigned int address, unsigned int data) -{ - switch ((address >> 13) & 3) - { - case 2: /* YM2612 */ - { - fm_write(m68k.cycles, address & 3, data); - return; - } - - case 3: - { - switch ((address >> 8) & 0x7F) - { - case 0x60: /* Bank register */ - { - gen_zbank_w(data & 1); - return; - } - - case 0x7F: /* VDP */ - { - m68k_lockup_w_8(address, data); - return; - } - - default: - { - m68k_unused_8_w(address, data); - return; - } - } - } - - default: /* ZRAM */ - { - zram[address & 0x1FFF] = data; - m68k.cycles += 2 * 7; /* ZRAM access latency (fixes Pacman 2: New Adventures & Puyo Puyo 2) */ - return; - } - } -} - -void z80_write_word(unsigned int address, unsigned int data) -{ - z80_write_byte(address, data >> 8); -} - - -/*--------------------------------------------------------------------------*/ -/* MAIN-CPU polling detection and SUB-CPU synchronization (MEGA CD mode) */ -/*--------------------------------------------------------------------------*/ - -static void m68k_poll_detect(unsigned int reg_mask) -{ - /* detect MAIN-CPU register polling */ - if (m68k.poll.detected & reg_mask) - { - if (m68k.cycles <= m68k.poll.cycle) - { - if (m68k.pc == m68k.poll.pc) - { - /* MAIN-CPU polling confirmed ? */ - if (m68k.poll.detected & 1) - { - /* idle MAIN-CPU until register is modified */ - m68k.cycles = m68k.cycle_end; - m68k.stopped = reg_mask; -#ifdef LOG_SCD - error("m68k stopped from %d cycles\n", m68k.cycles); -#endif - } - else - { - /* confirm MAIN-CPU polling */ - m68k.poll.detected |= 1; - m68k.poll.cycle = m68k.cycles + 840; - } - } - return; - } - } - else - { - /* set MAIN-CPU register access flag */ - m68k.poll.detected = reg_mask; - } - - /* reset MAIN-CPU polling detection */ - m68k.poll.cycle = m68k.cycles + 840; - m68k.poll.pc = m68k.pc; -} - -static void m68k_poll_sync(unsigned int reg_mask) -{ - /* relative SUB-CPU cycle counter */ - unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; - - if (!s68k.stopped) - { - /* save current SUB-CPU end cycle count (recursive execution is possible) */ - int end_cycle = s68k.cycle_end; - - /* sync SUB-CPU with MAIN-CPU */ - s68k_run(cycles); - - /* restore SUB-CPU end cycle count */ - s68k.cycle_end = end_cycle; - } - - /* SUB-CPU idle on register polling ? */ - if (s68k.stopped & reg_mask) - { - /* sync SUB-CPU with MAIN-CPU */ - s68k.cycles = cycles; - - /* restart SUB-CPU */ - s68k.stopped = 0; -#ifdef LOG_SCD - error("s68k started from %d cycles\n", cycles); -#endif - } - - /* clear CPU register access flags */ - s68k.poll.detected &= ~reg_mask; - m68k.poll.detected &= ~reg_mask; -} - -/*--------------------------------------------------------------------------*/ -/* I/O Control */ -/*--------------------------------------------------------------------------*/ - -unsigned int ctrl_io_read_byte(unsigned int address) -{ - switch ((address >> 8) & 0xFF) - { - case 0x00: /* I/O chip */ - { - if (!(address & 0xE0)) - { - return io_68k_read((address >> 1) & 0x0F); - } - return m68k_read_bus_8(address); - } - - case 0x11: /* Z80 BUSACK */ - { - if (!(address & 1)) - { - /* Unused bits return prefetched bus data (Time Killers) */ - address = m68k.pc; - - /* Check if bus has been requested and is not reseted */ - if (zstate == 3) - { - /* D0 is cleared */ - return (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) & 0xFE); - } - - /* D0 is set */ - return (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) | 0x01); - } - return m68k_read_bus_8(address); - } - - case 0x20: /* MEGA-CD */ - { -#ifdef LOG_SCD - error("[%d][%d]read byte CD register %X (%X)\n", v_counter, m68k.cycles, address, m68k.pc); -#endif - if (system_hw == SYSTEM_MCD) - { - /* register index ($A12000-A1203F mirrored up to $A120FF) */ - uint8 index = address & 0x3f; - - /* Memory Mode */ - if (index == 0x03) - { - m68k_poll_detect(1<<0x03); - return scd.regs[0x03>>1].byte.l; - } - - /* SUB-CPU communication flags */ - if (index == 0x0f) - { - if (!s68k.stopped) - { - /* relative SUB-CPU cycle counter */ - unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; - - /* save current SUB-CPU end cycle count (recursive execution is possible) */ - int end_cycle = s68k.cycle_end; - - /* sync SUB-CPU with MAIN-CPU (Dracula Unleashed w/ Sega CD Model 2 Boot ROM) */ - s68k_run(cycles); - - /* restore SUB-CPU end cycle count */ - s68k.cycle_end = end_cycle; - } - - m68k_poll_detect(1<<0x0f); - return scd.regs[0x0f>>1].byte.l; - } - - /* default registers */ - if (index < 0x30) - { - /* SUB-CPU communication words */ - if (index >= 0x20) - { - m68k_poll_detect(1 << (index - 0x10)); - } - - /* register LSB */ - if (address & 1) - { - return scd.regs[index >> 1].byte.l; - } - - /* register MSB */ - return scd.regs[index >> 1].byte.h; - } - } - - return m68k_read_bus_8(address); - } - - case 0x30: /* TIME */ - { - if (cart.hw.time_r) - { - unsigned int data = cart.hw.time_r(address); - if (address & 1) - { - return (data & 0xFF); - } - return (data >> 8); - } - return m68k_read_bus_8(address); - } - - case 0x41: /* BOOT ROM */ - { - if ((config.bios & 1) && (address & 1)) - { - unsigned int data = gen_bankswitch_r() & 1; - - /* Unused bits return prefetched bus data */ - address = m68k.pc; - data |= (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) & 0xFE); - return data; - } - return m68k_read_bus_8(address); - } - - case 0x50: /* SVP */ - { - if ((address & 0xFC) == 0x00) - { - unsigned int data = svp->ssp1601.gr[SSP_XST].byte.h; - return (address & 1) ? (data & 0xFF) : (data >> 8); - } - - if ((address & 0xFE) == 0x04) - { - unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h; - svp->ssp1601.gr[SSP_PM0].byte.h &= ~1; - return (address & 1) ? (data & 0xFF) : (data >> 8); - } - - return m68k_read_bus_8(address); - } - - case 0x10: /* MEMORY MODE */ - case 0x12: /* Z80 RESET */ - case 0x13: /* unknown */ - case 0x40: /* TMSS */ - case 0x44: /* RADICA */ - { - return m68k_read_bus_8(address); - } - - default: /* Invalid address */ - { - return m68k_lockup_r_8(address); - } - } -} - -unsigned int ctrl_io_read_word(unsigned int address) -{ - switch ((address >> 8) & 0xFF) - { - case 0x00: /* I/O chip */ - { - if (!(address & 0xE0)) - { - unsigned int data = io_68k_read((address >> 1) & 0x0F); - return (data << 8 | data); - } - return m68k_read_bus_16(address); - } - - case 0x11: /* Z80 BUSACK */ - { - /* Unused bits return prefetched bus data (Time Killers) */ - address = m68k.pc; - - /* Check if bus has been requested and is not reseted */ - if (zstate == 3) - { - /* D8 is cleared */ - return (*(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) & 0xFEFF); - } - - /* D8 is set */ - return (*(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) | 0x0100); - } - - case 0x20: /* MEGA-CD */ - { -#ifdef LOG_SCD - error("[%d][%d]read word CD register %X (%X)\n", v_counter, m68k.cycles, address, m68k.pc); -#endif - if (system_hw == SYSTEM_MCD) - { - /* register index ($A12000-A1203F mirrored up to $A120FF) */ - uint8 index = address & 0x3f; - - /* Memory Mode */ - if (index == 0x02) - { - m68k_poll_detect(1<<0x03); - return scd.regs[0x03>>1].w; - } - - /* CDC host data (word access only ?) */ - if (index == 0x08) - { - return cdc_host_r(); - } - - /* H-INT vector (word access only ?) */ - if (index == 0x06) - { - return *(uint16 *)(m68k.memory_map[scd.cartridge.boot].base + 0x72); - } - - /* Stopwatch counter (word read access only ?) */ - if (index == 0x0c) - { - /* relative SUB-CPU cycle counter */ - unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; - - /* cycle-accurate counter value */ - return (scd.regs[0x0c>>1].w + ((cycles - scd.stopwatch) / TIMERS_SCYCLES_RATIO)) & 0xfff; - } - - /* default registers */ - if (index < 0x30) - { - /* SUB-CPU communication words */ - if (index >= 0x20) - { - if (!s68k.stopped) - { - /* relative SUB-CPU cycle counter */ - unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; - - /* save current SUB-CPU end cycle count (recursive execution is possible) */ - int end_cycle = s68k.cycle_end; - - /* sync SUB-CPU with MAIN-CPU (Soul Star) */ - s68k_run(cycles); - - /* restore SUB-CPU end cycle count */ - s68k.cycle_end = end_cycle; - } - - m68k_poll_detect(3 << (index - 0x10)); - } - - return scd.regs[index >> 1].w; - } - } - - /* invalid address */ - return m68k_read_bus_16(address); - } - - case 0x30: /* TIME */ - { - if (cart.hw.time_r) - { - return cart.hw.time_r(address); - } - return m68k_read_bus_16(address); - } - - case 0x50: /* SVP */ - { - if ((address & 0xFC) == 0x00) - { - return svp->ssp1601.gr[SSP_XST].byte.h; - } - - if ((address & 0xFE) == 0x04) - { - unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h; - svp->ssp1601.gr[SSP_PM0].byte.h &= ~1; - return data; - } - - return m68k_read_bus_16(address); - } - - case 0x10: /* MEMORY MODE */ - case 0x12: /* Z80 RESET */ - case 0x13: /* unknown */ - case 0x40: /* TMSS */ - case 0x41: /* BOOT ROM */ - case 0x44: /* RADICA */ - { - return m68k_read_bus_16(address); - } - - default: /* Invalid address */ - { - return m68k_lockup_r_16(address); - } - } -} - -void ctrl_io_write_byte(unsigned int address, unsigned int data) -{ - switch ((address >> 8) & 0xFF) - { - case 0x00: /* I/O chip */ - { - if ((address & 0xE1) == 0x01) - { - /* get /LWR only */ - io_68k_write((address >> 1) & 0x0F, data); - return; - } - m68k_unused_8_w(address, data); - return; - } - - case 0x11: /* Z80 BUSREQ */ - { - if (!(address & 1)) - { - gen_zbusreq_w(data & 1, m68k.cycles); - return; - } - m68k_unused_8_w(address, data); - return; - } - - case 0x12: /* Z80 RESET */ - { - if (!(address & 1)) - { - gen_zreset_w(data & 1, m68k.cycles); - return; - } - m68k_unused_8_w(address, data); - return; - } - - case 0x20: /* MEGA-CD */ - { -#ifdef LOG_SCD - error("[%d][%d]write byte CD register %X -> 0x%02X (%X)\n", v_counter, m68k.cycles, address, data, m68k.pc); -#endif - if (system_hw == SYSTEM_MCD) - { - /* register index ($A12000-A1203F mirrored up to $A120FF) */ - switch (address & 0x3f) - { - case 0x00: /* SUB-CPU interrupt */ - { - /* IFL2 bit */ - if (data & 0x01) - { - /* level 2 interrupt enabled ? */ - if (scd.regs[0x32>>1].byte.l & 0x04) - { - if (!s68k.stopped) - { - /* relative SUB-CPU cycle counter */ - unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; - - /* save current SUB-CPU end cycle count (recursive execution is possible) */ - int end_cycle = s68k.cycle_end; - - /* sync SUB-CPU with MAIN-CPU (Earnest Evans, Fhey Area) */ - s68k_run(cycles); - - /* restore SUB-CPU end cycle count */ - s68k.cycle_end = end_cycle; - } - - /* set IFL2 flag */ - scd.regs[0x00].byte.h |= 0x01; - - /* trigger level 2 interrupt */ - scd.pending |= (1 << 2); - - /* update IRQ level */ - s68k_update_irq((scd.pending & scd.regs[0x32>>1].byte.l) >> 1); - } - } - - /* writing 0 does nothing */ - return; - } - - case 0x01: /* SUB-CPU control */ - { - unsigned int halted = s68k.stopped; - - /* RESET bit */ - if (data & 0x01) - { - /* trigger reset on 0->1 transition */ - if (!(scd.regs[0x00].byte.l & 0x01)) - { - /* reset SUB-CPU */ - s68k_pulse_reset(); - } - - /* BUSREQ bit */ - if (data & 0x02) - { - /* SUB-CPU bus requested */ - s68k_pulse_halt(); - } - else - { - /* SUB-CPU bus released */ - s68k_clear_halt(); - } - } - else - { - /* SUB-CPU is halted while !RESET is asserted */ - s68k_pulse_halt(); - } - - /* check if SUB-CPU halt status has changed */ - if (s68k.stopped != halted) - { - /* PRG-RAM (128KB bank) is normally mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ - unsigned int base = scd.cartridge.boot + 0x02; - - /* PRG-RAM can only be accessed from MAIN 68K & Z80 when SUB-CPU is halted (Dungeon Explorer USA version) */ - if ((data & 0x03) != 0x01) - { - m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = NULL; - m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = NULL; - m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = NULL; - m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = NULL; - zbank_memory_map[base].read = zbank_memory_map[base+1].read = NULL; - zbank_memory_map[base].write = zbank_memory_map[base+1].write = NULL; - } - else - { - m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = m68k_read_bus_8; - m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = m68k_read_bus_16; - m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = m68k_unused_8_w; - m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = m68k_unused_16_w; - zbank_memory_map[base].read = zbank_memory_map[base+1].read = zbank_unused_r; - zbank_memory_map[base].write = zbank_memory_map[base+1].write = zbank_unused_w; - } - } - - scd.regs[0x00].byte.l = data; - return; - } - - case 0x02: /* PRG-RAM Write Protection */ - { - scd.regs[0x02>>1].byte.h = data; - return; - } - - case 0x03: /* Memory mode */ - { - m68k_poll_sync(1<<0x03); - - /* PRG-RAM 128k bank mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ - m68k.memory_map[scd.cartridge.boot + 0x02].base = scd.prg_ram + ((data & 0xc0) << 11); - m68k.memory_map[scd.cartridge.boot + 0x03].base = m68k.memory_map[scd.cartridge.boot + 0x02].base + 0x10000; - - /* check current mode */ - if (scd.regs[0x03>>1].byte.l & 0x04) - { - /* DMNA bit */ - if (data & 0x02) - { - /* writing 1 to DMNA in 1M mode will return Word-RAM to SUB-CPU in 2M mode */ - scd.dmna = 1; - } - else - { - /* writing 0 to DMNA in 1M mode actually set DMNA bit */ - data |= 0x02; - - /* update BK0-1 & DMNA bits */ - scd.regs[0x03>>1].byte.l = (scd.regs[0x03>>1].byte.l & ~0xc2) | (data & 0xc2); - return; - } - } - else - { - /* writing 0 in 2M mode does nothing */ - if (data & 0x02) - { - /* Word-RAM is assigned to SUB-CPU */ - scd.dmna = 1; - - /* clear RET bit */ - scd.regs[0x03>>1].byte.l = (scd.regs[0x03>>1].byte.l & ~0xc3) | (data & 0xc2); - return; - } - } - - /* update BK0-1 bits */ - scd.regs[0x03>>1].byte.l = (scd.regs[0x02>>1].byte.l & ~0xc0) | (data & 0xc0); - return; - } - - case 0x0e: /* MAIN-CPU communication flags */ - case 0x0f: /* !LWR is ignored (Space Ace, Dragon's Lair) */ - { - m68k_poll_sync(1<<0x0e); - scd.regs[0x0e>>1].byte.h = data; - return; - } - - default: - { - /* MAIN-CPU communication words */ - if ((address & 0x30) == 0x10) - { - m68k_poll_sync(1 << (address & 0x1f)); - - /* register LSB */ - if (address & 1) - { - scd.regs[(address >> 1) & 0xff].byte.l = data; - return; - } - - /* register MSB */ - scd.regs[(address >> 1) & 0xff].byte.h = data; - return; - } - - /* invalid address */ - m68k_unused_8_w(address, data); - return; - } - } - } - - m68k_unused_8_w(address, data); - return; - } - - case 0x30: /* TIME */ - { - cart.hw.time_w(address, data); - return; - } - - case 0x41: /* BOOT ROM */ - { - if ((config.bios & 1) && (address & 1)) - { - gen_bankswitch_w(data & 1); - return; - } - m68k_unused_8_w(address, data); - return; - } - - case 0x10: /* MEMORY MODE */ - case 0x13: /* unknown */ - case 0x40: /* TMSS */ - case 0x44: /* RADICA */ - case 0x50: /* SVP */ - { - m68k_unused_8_w(address, data); - return; - } - - default: /* Invalid address */ - { - m68k_lockup_w_8(address, data); - return; - } - } -} - -void ctrl_io_write_word(unsigned int address, unsigned int data) -{ - switch ((address >> 8) & 0xFF) - { - case 0x00: /* I/O chip */ - { - if (!(address & 0xE0)) - { - io_68k_write((address >> 1) & 0x0F, data & 0xFF); - return; - } - m68k_unused_16_w(address, data); - return; - } - - case 0x11: /* Z80 BUSREQ */ - { - gen_zbusreq_w((data >> 8) & 1, m68k.cycles); - return; - } - - case 0x12: /* Z80 RESET */ - { - gen_zreset_w((data >> 8) & 1, m68k.cycles); - return; - } - - case 0x20: /* MEGA-CD */ - { -#ifdef LOG_SCD - error("[%d][%d]write word CD register %X -> 0x%04X (%X)\n", v_counter, m68k.cycles, address, data, m68k.pc); -#endif - if (system_hw == SYSTEM_MCD) - { - /* register index ($A12000-A1203F mirrored up to $A120FF) */ - switch (address & 0x3e) - { - case 0x00: /* SUB-CPU interrupt & control */ - { - unsigned int halted = s68k.stopped; - - /* RESET bit */ - if (data & 0x01) - { - /* trigger reset on 0->1 transition */ - if (!(scd.regs[0x00].byte.l & 0x01)) - { - /* reset SUB-CPU */ - s68k_pulse_reset(); - } - - /* BUSREQ bit */ - if (data & 0x02) - { - /* SUB-CPU bus requested */ - s68k_pulse_halt(); - } - else - { - /* SUB-CPU bus released */ - s68k_clear_halt(); - } - } - else - { - /* SUB-CPU is halted while !RESET is asserted */ - s68k_pulse_halt(); - } - - /* check if SUB-CPU halt status has changed */ - if (s68k.stopped != halted) - { - /* PRG-RAM (128KB bank) is normally mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ - unsigned int base = scd.cartridge.boot + 0x02; - - /* PRG-RAM can only be accessed from MAIN 68K & Z80 when SUB-CPU is halted (Dungeon Explorer USA version) */ - if ((data & 0x03) != 0x01) - { - m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = NULL; - m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = NULL; - m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = NULL; - m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = NULL; - zbank_memory_map[base].read = zbank_memory_map[base+1].read = NULL; - zbank_memory_map[base].write = zbank_memory_map[base+1].write = NULL; - } - else - { - m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = m68k_read_bus_8; - m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = m68k_read_bus_16; - m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = m68k_unused_8_w; - m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = m68k_unused_16_w; - zbank_memory_map[base].read = zbank_memory_map[base+1].read = zbank_unused_r; - zbank_memory_map[base].write = zbank_memory_map[base+1].write = zbank_unused_w; - } - } - - /* IFL2 bit */ - if (data & 0x100) - { - /* level 2 interrupt enabled ? */ - if (scd.regs[0x32>>1].byte.l & 0x04) - { - /* set IFL2 flag */ - scd.regs[0x00].byte.h |= 0x01; - - /* trigger level 2 interrupt */ - scd.pending |= (1 << 2); - - /* update IRQ level */ - s68k_update_irq((scd.pending & scd.regs[0x32>>1].byte.l) >> 1); - } - } - - /* update LSB only */ - scd.regs[0x00].byte.l = data & 0xff; - return; - } - - case 0x02: /* Memory Mode */ - { - m68k_poll_sync(1<<0x03); - - /* PRG-RAM 128k bank mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ - m68k.memory_map[scd.cartridge.boot + 0x02].base = scd.prg_ram + ((data & 0xc0) << 11); - m68k.memory_map[scd.cartridge.boot + 0x03].base = m68k.memory_map[scd.cartridge.boot + 0x02].base + 0x10000; - - /* check current mode */ - if (scd.regs[0x03>>1].byte.l & 0x04) - { - /* DMNA bit */ - if (data & 0x02) - { - /* writing 1 to DMNA in 1M mode will return Word-RAM to SUB-CPU in 2M mode */ - scd.dmna = 1; - } - else - { - /* writing 0 to DMNA in 1M mode actually set DMNA bit */ - data |= 0x02; - - /* update WP0-7, BK0-1 & DMNA bits */ - scd.regs[0x02>>1].w = (scd.regs[0x02>>1].w & ~0xffc2) | (data & 0xffc2); - return; - } - } - else - { - /* writing 0 in 2M mode does nothing */ - if (data & 0x02) - { - /* Word-RAM is assigned to SUB-CPU */ - scd.dmna = 1; - - /* clear RET bit */ - scd.regs[0x02>>1].w = (scd.regs[0x02>>1].w & ~0xffc3) | (data & 0xffc2); - return; - } - } - - /* update WP0-7 & BK0-1 bits */ - scd.regs[0x02>>1].w = (scd.regs[0x02>>1].w & ~0xffc0) | (data & 0xffc0); - return; - } - - case 0x06: /* H-INT vector (word access only ?) */ - { - *(uint16 *)(m68k.memory_map[scd.cartridge.boot].base + 0x72) = data; - return; - } - - case 0x0e: /* CPU communication flags */ - { - m68k_poll_sync(1<<0x0e); - - /* D8-D15 ignored -> only MAIN-CPU flags are updated (Mortal Kombat) */ - scd.regs[0x0e>>1].byte.h = data & 0xff; - return; - } - - default: - { - /* MAIN-CPU communication words */ - if ((address & 0x30) == 0x10) - { - m68k_poll_sync(3 << (address & 0x1e)); - scd.regs[(address >> 1) & 0xff].w = data; - return; - } - - /* invalid address */ - m68k_unused_16_w (address, data); - return; - } - } - } - - m68k_unused_16_w (address, data); - return; - } - - case 0x30: /* TIME */ - { - cart.hw.time_w(address, data); - return; - } - - case 0x40: /* TMSS */ - { - if (config.bios & 1) - { - gen_tmss_w(address & 3, data); - return; - } - m68k_unused_16_w(address, data); - return; - } - - case 0x50: /* SVP */ - { - if (!(address & 0xFD)) - { - svp->ssp1601.gr[SSP_XST].byte.h = data; - svp->ssp1601.gr[SSP_PM0].byte.h |= 2; - svp->ssp1601.emu_status &= ~SSP_WAIT_PM0; - return; - } - m68k_unused_16_w(address, data); - return; - } - - case 0x10: /* MEMORY MODE */ - case 0x13: /* unknown */ - case 0x41: /* BOOT ROM */ - case 0x44: /* RADICA */ - { - m68k_unused_16_w (address, data); - return; - } - - default: /* Invalid address */ - { - m68k_lockup_w_16 (address, data); - return; - } - } -} - - -/*--------------------------------------------------------------------------*/ -/* VDP */ -/*--------------------------------------------------------------------------*/ - -unsigned int vdp_read_byte(unsigned int address) -{ - switch (address & 0xFD) - { - case 0x00: /* DATA */ - { - return (vdp_68k_data_r() >> 8); - } - - case 0x01: /* DATA */ - { - return (vdp_68k_data_r() & 0xFF); - } - - case 0x04: /* CTRL */ - { - unsigned int data = (vdp_68k_ctrl_r(m68k.cycles) >> 8) & 3; - - /* Unused bits return prefetched bus data */ - address = m68k.pc; - data |= (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) & 0xFC); - - return data; - } - - case 0x05: /* CTRL */ - { - return (vdp_68k_ctrl_r(m68k.cycles) & 0xFF); - } - - case 0x08: /* HVC */ - case 0x0C: - { - return (vdp_hvc_r(m68k.cycles) >> 8); - } - - case 0x09: /* HVC */ - case 0x0D: - { - return (vdp_hvc_r(m68k.cycles) & 0xFF); - } - - case 0x18: /* Unused */ - case 0x19: - case 0x1C: - case 0x1D: - { - return m68k_read_bus_8(address); - } - - default: /* Invalid address */ - { - return m68k_lockup_r_8(address); - } - } -} - -unsigned int vdp_read_word(unsigned int address) -{ - switch (address & 0xFC) - { - case 0x00: /* DATA */ - { - return vdp_68k_data_r(); - } - - case 0x04: /* CTRL */ - { - unsigned int data = vdp_68k_ctrl_r(m68k.cycles) & 0x3FF; - - /* Unused bits return prefetched bus data */ - address = m68k.pc; - data |= (*(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) & 0xFC00); - - return data; - } - - case 0x08: /* HVC */ - case 0x0C: - { - return vdp_hvc_r(m68k.cycles); - } - - case 0x18: /* Unused */ - case 0x1C: - { - return m68k_read_bus_16(address); - } - - default: /* Invalid address */ - { - return m68k_lockup_r_16(address); - } - } -} - -void vdp_write_byte(unsigned int address, unsigned int data) -{ - switch (address & 0xFC) - { - case 0x00: /* Data port */ - { - vdp_68k_data_w(data << 8 | data); - return; - } - - case 0x04: /* Control port */ - { - vdp_68k_ctrl_w(data << 8 | data); - return; - } - - case 0x10: /* PSG */ - case 0x14: - { - if (address & 1) - { - psg_write(m68k.cycles, data); - return; - } - m68k_unused_8_w(address, data); - return; - } - - case 0x18: /* Unused */ - { - m68k_unused_8_w(address, data); - return; - } - - case 0x1C: /* TEST register */ - { - vdp_test_w(data << 8 | data); - return; - } - - default: /* Invalid address */ - { - m68k_lockup_w_8(address, data); - return; - } - } -} - -void vdp_write_word(unsigned int address, unsigned int data) -{ - switch (address & 0xFC) - { - case 0x00: /* DATA */ - { - vdp_68k_data_w(data); - return; - } - - case 0x04: /* CTRL */ - { - vdp_68k_ctrl_w(data); - return; - } - - case 0x10: /* PSG */ - case 0x14: - { - psg_write(m68k.cycles, data & 0xFF); - return; - } - - case 0x18: /* Unused */ - { - m68k_unused_16_w(address, data); - return; - } - - case 0x1C: /* Test register */ - { - vdp_test_w(data); - return; - } - - default: /* Invalid address */ - { - m68k_lockup_w_16 (address, data); - return; - } - } -} - - -/*--------------------------------------------------------------------------*/ -/* PICO (incomplete) */ -/*--------------------------------------------------------------------------*/ - -unsigned int pico_read_byte(unsigned int address) -{ - switch (address & 0xFF) - { - case 0x01: /* VERSION register */ - { - return (region_code >> 1); - } - - case 0x03: /* IO register */ - { - return ~input.pad[0]; - } - - case 0x05: /* PEN X coordinate (MSB) */ - { - return (input.analog[0][0] >> 8); - } - - case 0x07: /* PEN X coordinate (LSB) */ - { - return (input.analog[0][0] & 0xFF); - } - - case 0x09: /* PEN Y coordinate (MSB) */ - { - return (input.analog[0][1] >> 8); - } - - case 0x0B: /* PEN Y coordinate (LSB) */ - { - return (input.analog[0][1] & 0xFF); - } - - case 0x0D: /* PAGE register */ - { - return (1 << pico_current) - 1; - } - - case 0x10: /* ADPCM data registers (TODO) */ - case 0x11: - { - return 0xff; - } - - case 0x12: /* ADPCM control registers (TODO) */ - { - return 0x80; - } - - default: - { - return m68k_read_bus_8(address); - } - } -} - -unsigned int pico_read_word(unsigned int address) -{ - return (pico_read_byte(address | 1) | (pico_read_byte(address) << 8)); -} +/*************************************************************************************** + * Genesis Plus + * Main 68k bus handlers + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +/*--------------------------------------------------------------------------*/ +/* Unused areas (return open bus data, i.e prefetched instruction word) */ +/*--------------------------------------------------------------------------*/ + +unsigned int m68k_read_bus_8(unsigned int address) +{ +#ifdef LOGERROR + error("Unused read8 %08X (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); +#endif + address = m68k.pc | (address & 1); + return READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff); +} + +unsigned int m68k_read_bus_16(unsigned int address) +{ +#ifdef LOGERROR + error("Unused read16 %08X (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); +#endif + address = m68k.pc; + return *(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)); +} + + +void m68k_unused_8_w(unsigned int address, unsigned int data) +{ +#ifdef LOGERROR + error("Unused write8 %08X = %02X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); +#endif +} + +void m68k_unused_16_w(unsigned int address, unsigned int data) +{ +#ifdef LOGERROR + error("Unused write16 %08X = %04X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); +#endif +} + + +/*--------------------------------------------------------------------------*/ +/* Illegal areas (cause system to lock-up since !DTACK is not returned) */ +/*--------------------------------------------------------------------------*/ + +void m68k_lockup_w_8 (unsigned int address, unsigned int data) +{ +#ifdef LOGERROR + error ("Lockup %08X = %02X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); +#endif + if (!config.force_dtack) + { + m68k_pulse_halt(); + m68k.cycles = m68k.cycle_end; + } +} + +void m68k_lockup_w_16 (unsigned int address, unsigned int data) +{ +#ifdef LOGERROR + error ("Lockup %08X = %04X (%08X)\n", address, data, m68k_get_reg(M68K_REG_PC)); +#endif + if (!config.force_dtack) + { + m68k_pulse_halt(); + m68k.cycles = m68k.cycle_end; + } +} + +unsigned int m68k_lockup_r_8 (unsigned int address) +{ +#ifdef LOGERROR + error ("Lockup %08X.b (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); +#endif + if (!config.force_dtack) + { + m68k_pulse_halt(); + m68k.cycles = m68k.cycle_end; + } + address = m68k.pc | (address & 1); + return READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff); +} + +unsigned int m68k_lockup_r_16 (unsigned int address) +{ +#ifdef LOGERROR + error ("Lockup %08X.w (%08X)\n", address, m68k_get_reg(M68K_REG_PC)); +#endif + if (!config.force_dtack) + { + m68k_pulse_halt(); + m68k.cycles = m68k.cycle_end; + } + address = m68k.pc; + return *(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)); +} + + +/*--------------------------------------------------------------------------*/ +/* Z80 bus (accessed through I/O chip) */ +/*--------------------------------------------------------------------------*/ + +unsigned int z80_read_byte(unsigned int address) +{ + switch ((address >> 13) & 3) + { + case 2: /* YM2612 */ + { + return fm_read(m68k.cycles, address & 3); + } + + case 3: /* Misc */ + { + /* VDP (through 68k bus) */ + if ((address & 0xFF00) == 0x7F00) + { + return m68k_lockup_r_8(address); + } + return (m68k_read_bus_8(address) | 0xFF); + } + + default: /* ZRAM */ + { + return zram[address & 0x1FFF]; + } + } +} + +unsigned int z80_read_word(unsigned int address) +{ + unsigned int data = z80_read_byte(address); + return (data | (data << 8)); +} + +void z80_write_byte(unsigned int address, unsigned int data) +{ + switch ((address >> 13) & 3) + { + case 2: /* YM2612 */ + { + fm_write(m68k.cycles, address & 3, data); + return; + } + + case 3: + { + switch ((address >> 8) & 0x7F) + { + case 0x60: /* Bank register */ + { + gen_zbank_w(data & 1); + return; + } + + case 0x7F: /* VDP */ + { + m68k_lockup_w_8(address, data); + return; + } + + default: + { + m68k_unused_8_w(address, data); + return; + } + } + } + + default: /* ZRAM */ + { + zram[address & 0x1FFF] = data; + m68k.cycles += 2 * 7; /* ZRAM access latency (fixes Pacman 2: New Adventures & Puyo Puyo 2) */ + return; + } + } +} + +void z80_write_word(unsigned int address, unsigned int data) +{ + z80_write_byte(address, data >> 8); +} + + +/*--------------------------------------------------------------------------*/ +/* MAIN-CPU polling detection and SUB-CPU synchronization (MEGA CD mode) */ +/*--------------------------------------------------------------------------*/ + +static void m68k_poll_detect(unsigned int reg_mask) +{ + /* detect MAIN-CPU register polling */ + if (m68k.poll.detected & reg_mask) + { + if (m68k.cycles <= m68k.poll.cycle) + { + if (m68k.pc == m68k.poll.pc) + { + /* MAIN-CPU polling confirmed ? */ + if (m68k.poll.detected & 1) + { + /* idle MAIN-CPU until register is modified */ + m68k.cycles = m68k.cycle_end; + m68k.stopped = reg_mask; +#ifdef LOG_SCD + error("m68k stopped from %d cycles\n", m68k.cycles); +#endif + } + else + { + /* confirm MAIN-CPU polling */ + m68k.poll.detected |= 1; + m68k.poll.cycle = m68k.cycles + 840; + } + } + return; + } + } + else + { + /* set MAIN-CPU register access flag */ + m68k.poll.detected = reg_mask; + } + + /* reset MAIN-CPU polling detection */ + m68k.poll.cycle = m68k.cycles + 840; + m68k.poll.pc = m68k.pc; +} + +static void m68k_poll_sync(unsigned int reg_mask) +{ + /* relative SUB-CPU cycle counter */ + unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; + + if (!s68k.stopped) + { + /* save current SUB-CPU end cycle count (recursive execution is possible) */ + int end_cycle = s68k.cycle_end; + + /* sync SUB-CPU with MAIN-CPU */ + s68k_run(cycles); + + /* restore SUB-CPU end cycle count */ + s68k.cycle_end = end_cycle; + } + + /* SUB-CPU idle on register polling ? */ + if (s68k.stopped & reg_mask) + { + /* sync SUB-CPU with MAIN-CPU */ + s68k.cycles = cycles; + + /* restart SUB-CPU */ + s68k.stopped = 0; +#ifdef LOG_SCD + error("s68k started from %d cycles\n", cycles); +#endif + } + + /* clear CPU register access flags */ + s68k.poll.detected &= ~reg_mask; + m68k.poll.detected &= ~reg_mask; +} + +/*--------------------------------------------------------------------------*/ +/* I/O Control */ +/*--------------------------------------------------------------------------*/ + +unsigned int ctrl_io_read_byte(unsigned int address) +{ + switch ((address >> 8) & 0xFF) + { + case 0x00: /* I/O chip */ + { + if (!(address & 0xE0)) + { + return io_68k_read((address >> 1) & 0x0F); + } + return m68k_read_bus_8(address); + } + + case 0x11: /* Z80 BUSACK */ + { + if (!(address & 1)) + { + /* Unused bits return prefetched bus data (Time Killers) */ + address = m68k.pc; + + /* Check if bus has been requested and is not reseted */ + if (zstate == 3) + { + /* D0 is cleared */ + return (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) & 0xFE); + } + + /* D0 is set */ + return (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) | 0x01); + } + return m68k_read_bus_8(address); + } + + case 0x20: /* MEGA-CD */ + { +#ifdef LOG_SCD + error("[%d][%d]read byte CD register %X (%X)\n", v_counter, m68k.cycles, address, m68k.pc); +#endif + if (system_hw == SYSTEM_MCD) + { + /* register index ($A12000-A1203F mirrored up to $A120FF) */ + uint8 index = address & 0x3f; + + /* Memory Mode */ + if (index == 0x03) + { + m68k_poll_detect(1<<0x03); + return scd.regs[0x03>>1].byte.l; + } + + /* SUB-CPU communication flags */ + if (index == 0x0f) + { + if (!s68k.stopped) + { + /* relative SUB-CPU cycle counter */ + unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; + + /* save current SUB-CPU end cycle count (recursive execution is possible) */ + int end_cycle = s68k.cycle_end; + + /* sync SUB-CPU with MAIN-CPU (Dracula Unleashed w/ Sega CD Model 2 Boot ROM) */ + s68k_run(cycles); + + /* restore SUB-CPU end cycle count */ + s68k.cycle_end = end_cycle; + } + + m68k_poll_detect(1<<0x0f); + return scd.regs[0x0f>>1].byte.l; + } + + /* default registers */ + if (index < 0x30) + { + /* SUB-CPU communication words */ + if (index >= 0x20) + { + m68k_poll_detect(1 << (index - 0x10)); + } + + /* register LSB */ + if (address & 1) + { + return scd.regs[index >> 1].byte.l; + } + + /* register MSB */ + return scd.regs[index >> 1].byte.h; + } + } + + return m68k_read_bus_8(address); + } + + case 0x30: /* TIME */ + { + if (cart.hw.time_r) + { + unsigned int data = cart.hw.time_r(address); + if (address & 1) + { + return (data & 0xFF); + } + return (data >> 8); + } + return m68k_read_bus_8(address); + } + + case 0x41: /* BOOT ROM */ + { + if ((config.bios & 1) && (address & 1)) + { + unsigned int data = gen_bankswitch_r() & 1; + + /* Unused bits return prefetched bus data */ + address = m68k.pc; + data |= (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) & 0xFE); + return data; + } + return m68k_read_bus_8(address); + } + + case 0x50: /* SVP */ + { + if ((address & 0xFC) == 0x00) + { + unsigned int data = svp->ssp1601.gr[SSP_XST].byte.h; + return (address & 1) ? (data & 0xFF) : (data >> 8); + } + + if ((address & 0xFE) == 0x04) + { + unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h; + svp->ssp1601.gr[SSP_PM0].byte.h &= ~1; + return (address & 1) ? (data & 0xFF) : (data >> 8); + } + + return m68k_read_bus_8(address); + } + + case 0x10: /* MEMORY MODE */ + case 0x12: /* Z80 RESET */ + case 0x13: /* unknown */ + case 0x40: /* TMSS */ + case 0x44: /* RADICA */ + { + return m68k_read_bus_8(address); + } + + default: /* Invalid address */ + { + return m68k_lockup_r_8(address); + } + } +} + +unsigned int ctrl_io_read_word(unsigned int address) +{ + switch ((address >> 8) & 0xFF) + { + case 0x00: /* I/O chip */ + { + if (!(address & 0xE0)) + { + unsigned int data = io_68k_read((address >> 1) & 0x0F); + return (data << 8 | data); + } + return m68k_read_bus_16(address); + } + + case 0x11: /* Z80 BUSACK */ + { + /* Unused bits return prefetched bus data (Time Killers) */ + address = m68k.pc; + + /* Check if bus has been requested and is not reseted */ + if (zstate == 3) + { + /* D8 is cleared */ + return (*(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) & 0xFEFF); + } + + /* D8 is set */ + return (*(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) | 0x0100); + } + + case 0x20: /* MEGA-CD */ + { +#ifdef LOG_SCD + error("[%d][%d]read word CD register %X (%X)\n", v_counter, m68k.cycles, address, m68k.pc); +#endif + if (system_hw == SYSTEM_MCD) + { + /* register index ($A12000-A1203F mirrored up to $A120FF) */ + uint8 index = address & 0x3f; + + /* Memory Mode */ + if (index == 0x02) + { + m68k_poll_detect(1<<0x03); + return scd.regs[0x03>>1].w; + } + + /* CDC host data (word access only ?) */ + if (index == 0x08) + { + return cdc_host_r(); + } + + /* H-INT vector (word access only ?) */ + if (index == 0x06) + { + return *(uint16 *)(m68k.memory_map[scd.cartridge.boot].base + 0x72); + } + + /* Stopwatch counter (word read access only ?) */ + if (index == 0x0c) + { + /* relative SUB-CPU cycle counter */ + unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; + + /* cycle-accurate counter value */ + return (scd.regs[0x0c>>1].w + ((cycles - scd.stopwatch) / TIMERS_SCYCLES_RATIO)) & 0xfff; + } + + /* default registers */ + if (index < 0x30) + { + /* SUB-CPU communication words */ + if (index >= 0x20) + { + if (!s68k.stopped) + { + /* relative SUB-CPU cycle counter */ + unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; + + /* save current SUB-CPU end cycle count (recursive execution is possible) */ + int end_cycle = s68k.cycle_end; + + /* sync SUB-CPU with MAIN-CPU (Soul Star) */ + s68k_run(cycles); + + /* restore SUB-CPU end cycle count */ + s68k.cycle_end = end_cycle; + } + + m68k_poll_detect(3 << (index - 0x10)); + } + + return scd.regs[index >> 1].w; + } + } + + /* invalid address */ + return m68k_read_bus_16(address); + } + + case 0x30: /* TIME */ + { + if (cart.hw.time_r) + { + return cart.hw.time_r(address); + } + return m68k_read_bus_16(address); + } + + case 0x50: /* SVP */ + { + if ((address & 0xFC) == 0x00) + { + return svp->ssp1601.gr[SSP_XST].byte.h; + } + + if ((address & 0xFE) == 0x04) + { + unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h; + svp->ssp1601.gr[SSP_PM0].byte.h &= ~1; + return data; + } + + return m68k_read_bus_16(address); + } + + case 0x10: /* MEMORY MODE */ + case 0x12: /* Z80 RESET */ + case 0x13: /* unknown */ + case 0x40: /* TMSS */ + case 0x41: /* BOOT ROM */ + case 0x44: /* RADICA */ + { + return m68k_read_bus_16(address); + } + + default: /* Invalid address */ + { + return m68k_lockup_r_16(address); + } + } +} + +void ctrl_io_write_byte(unsigned int address, unsigned int data) +{ + switch ((address >> 8) & 0xFF) + { + case 0x00: /* I/O chip */ + { + if ((address & 0xE1) == 0x01) + { + /* get /LWR only */ + io_68k_write((address >> 1) & 0x0F, data); + return; + } + m68k_unused_8_w(address, data); + return; + } + + case 0x11: /* Z80 BUSREQ */ + { + if (!(address & 1)) + { + gen_zbusreq_w(data & 1, m68k.cycles); + return; + } + m68k_unused_8_w(address, data); + return; + } + + case 0x12: /* Z80 RESET */ + { + if (!(address & 1)) + { + gen_zreset_w(data & 1, m68k.cycles); + return; + } + m68k_unused_8_w(address, data); + return; + } + + case 0x20: /* MEGA-CD */ + { +#ifdef LOG_SCD + error("[%d][%d]write byte CD register %X -> 0x%02X (%X)\n", v_counter, m68k.cycles, address, data, m68k.pc); +#endif + if (system_hw == SYSTEM_MCD) + { + /* register index ($A12000-A1203F mirrored up to $A120FF) */ + switch (address & 0x3f) + { + case 0x00: /* SUB-CPU interrupt */ + { + /* IFL2 bit */ + if (data & 0x01) + { + /* level 2 interrupt enabled ? */ + if (scd.regs[0x32>>1].byte.l & 0x04) + { + if (!s68k.stopped) + { + /* relative SUB-CPU cycle counter */ + unsigned int cycles = (m68k.cycles * SCYCLES_PER_LINE) / MCYCLES_PER_LINE; + + /* save current SUB-CPU end cycle count (recursive execution is possible) */ + int end_cycle = s68k.cycle_end; + + /* sync SUB-CPU with MAIN-CPU (Earnest Evans, Fhey Area) */ + s68k_run(cycles); + + /* restore SUB-CPU end cycle count */ + s68k.cycle_end = end_cycle; + } + + /* set IFL2 flag */ + scd.regs[0x00].byte.h |= 0x01; + + /* trigger level 2 interrupt */ + scd.pending |= (1 << 2); + + /* update IRQ level */ + s68k_update_irq((scd.pending & scd.regs[0x32>>1].byte.l) >> 1); + } + } + + /* writing 0 does nothing */ + return; + } + + case 0x01: /* SUB-CPU control */ + { + unsigned int halted = s68k.stopped; + + /* RESET bit */ + if (data & 0x01) + { + /* trigger reset on 0->1 transition */ + if (!(scd.regs[0x00].byte.l & 0x01)) + { + /* reset SUB-CPU */ + s68k_pulse_reset(); + } + + /* BUSREQ bit */ + if (data & 0x02) + { + /* SUB-CPU bus requested */ + s68k_pulse_halt(); + } + else + { + /* SUB-CPU bus released */ + s68k_clear_halt(); + } + } + else + { + /* SUB-CPU is halted while !RESET is asserted */ + s68k_pulse_halt(); + } + + /* check if SUB-CPU halt status has changed */ + if (s68k.stopped != halted) + { + /* PRG-RAM (128KB bank) is normally mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ + unsigned int base = scd.cartridge.boot + 0x02; + + /* PRG-RAM can only be accessed from MAIN 68K & Z80 when SUB-CPU is halted (Dungeon Explorer USA version) */ + if ((data & 0x03) != 0x01) + { + m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = NULL; + m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = NULL; + m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = NULL; + m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = NULL; + zbank_memory_map[base].read = zbank_memory_map[base+1].read = NULL; + zbank_memory_map[base].write = zbank_memory_map[base+1].write = NULL; + } + else + { + m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = m68k_read_bus_8; + m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = m68k_read_bus_16; + m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = m68k_unused_8_w; + m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = m68k_unused_16_w; + zbank_memory_map[base].read = zbank_memory_map[base+1].read = zbank_unused_r; + zbank_memory_map[base].write = zbank_memory_map[base+1].write = zbank_unused_w; + } + } + + scd.regs[0x00].byte.l = data; + return; + } + + case 0x02: /* PRG-RAM Write Protection */ + { + scd.regs[0x02>>1].byte.h = data; + return; + } + + case 0x03: /* Memory mode */ + { + m68k_poll_sync(1<<0x03); + + /* PRG-RAM 128k bank mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ + m68k.memory_map[scd.cartridge.boot + 0x02].base = scd.prg_ram + ((data & 0xc0) << 11); + m68k.memory_map[scd.cartridge.boot + 0x03].base = m68k.memory_map[scd.cartridge.boot + 0x02].base + 0x10000; + + /* check current mode */ + if (scd.regs[0x03>>1].byte.l & 0x04) + { + /* DMNA bit */ + if (data & 0x02) + { + /* writing 1 to DMNA in 1M mode will return Word-RAM to SUB-CPU in 2M mode */ + scd.dmna = 1; + } + else + { + /* writing 0 to DMNA in 1M mode actually set DMNA bit */ + data |= 0x02; + + /* update BK0-1 & DMNA bits */ + scd.regs[0x03>>1].byte.l = (scd.regs[0x03>>1].byte.l & ~0xc2) | (data & 0xc2); + return; + } + } + else + { + /* writing 0 in 2M mode does nothing */ + if (data & 0x02) + { + /* Word-RAM is assigned to SUB-CPU */ + scd.dmna = 1; + + /* clear RET bit */ + scd.regs[0x03>>1].byte.l = (scd.regs[0x03>>1].byte.l & ~0xc3) | (data & 0xc2); + return; + } + } + + /* update BK0-1 bits */ + scd.regs[0x03>>1].byte.l = (scd.regs[0x02>>1].byte.l & ~0xc0) | (data & 0xc0); + return; + } + + case 0x0e: /* MAIN-CPU communication flags */ + case 0x0f: /* !LWR is ignored (Space Ace, Dragon's Lair) */ + { + m68k_poll_sync(1<<0x0e); + scd.regs[0x0e>>1].byte.h = data; + return; + } + + default: + { + /* MAIN-CPU communication words */ + if ((address & 0x30) == 0x10) + { + m68k_poll_sync(1 << (address & 0x1f)); + + /* register LSB */ + if (address & 1) + { + scd.regs[(address >> 1) & 0xff].byte.l = data; + return; + } + + /* register MSB */ + scd.regs[(address >> 1) & 0xff].byte.h = data; + return; + } + + /* invalid address */ + m68k_unused_8_w(address, data); + return; + } + } + } + + m68k_unused_8_w(address, data); + return; + } + + case 0x30: /* TIME */ + { + cart.hw.time_w(address, data); + return; + } + + case 0x41: /* BOOT ROM */ + { + if ((config.bios & 1) && (address & 1)) + { + gen_bankswitch_w(data & 1); + return; + } + m68k_unused_8_w(address, data); + return; + } + + case 0x10: /* MEMORY MODE */ + case 0x13: /* unknown */ + case 0x40: /* TMSS */ + case 0x44: /* RADICA */ + case 0x50: /* SVP */ + { + m68k_unused_8_w(address, data); + return; + } + + default: /* Invalid address */ + { + m68k_lockup_w_8(address, data); + return; + } + } +} + +void ctrl_io_write_word(unsigned int address, unsigned int data) +{ + switch ((address >> 8) & 0xFF) + { + case 0x00: /* I/O chip */ + { + if (!(address & 0xE0)) + { + io_68k_write((address >> 1) & 0x0F, data & 0xFF); + return; + } + m68k_unused_16_w(address, data); + return; + } + + case 0x11: /* Z80 BUSREQ */ + { + gen_zbusreq_w((data >> 8) & 1, m68k.cycles); + return; + } + + case 0x12: /* Z80 RESET */ + { + gen_zreset_w((data >> 8) & 1, m68k.cycles); + return; + } + + case 0x20: /* MEGA-CD */ + { +#ifdef LOG_SCD + error("[%d][%d]write word CD register %X -> 0x%04X (%X)\n", v_counter, m68k.cycles, address, data, m68k.pc); +#endif + if (system_hw == SYSTEM_MCD) + { + /* register index ($A12000-A1203F mirrored up to $A120FF) */ + switch (address & 0x3e) + { + case 0x00: /* SUB-CPU interrupt & control */ + { + unsigned int halted = s68k.stopped; + + /* RESET bit */ + if (data & 0x01) + { + /* trigger reset on 0->1 transition */ + if (!(scd.regs[0x00].byte.l & 0x01)) + { + /* reset SUB-CPU */ + s68k_pulse_reset(); + } + + /* BUSREQ bit */ + if (data & 0x02) + { + /* SUB-CPU bus requested */ + s68k_pulse_halt(); + } + else + { + /* SUB-CPU bus released */ + s68k_clear_halt(); + } + } + else + { + /* SUB-CPU is halted while !RESET is asserted */ + s68k_pulse_halt(); + } + + /* check if SUB-CPU halt status has changed */ + if (s68k.stopped != halted) + { + /* PRG-RAM (128KB bank) is normally mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ + unsigned int base = scd.cartridge.boot + 0x02; + + /* PRG-RAM can only be accessed from MAIN 68K & Z80 when SUB-CPU is halted (Dungeon Explorer USA version) */ + if ((data & 0x03) != 0x01) + { + m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = NULL; + m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = NULL; + m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = NULL; + m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = NULL; + zbank_memory_map[base].read = zbank_memory_map[base+1].read = NULL; + zbank_memory_map[base].write = zbank_memory_map[base+1].write = NULL; + } + else + { + m68k.memory_map[base].read8 = m68k.memory_map[base+1].read8 = m68k_read_bus_8; + m68k.memory_map[base].read16 = m68k.memory_map[base+1].read16 = m68k_read_bus_16; + m68k.memory_map[base].write8 = m68k.memory_map[base+1].write8 = m68k_unused_8_w; + m68k.memory_map[base].write16 = m68k.memory_map[base+1].write16 = m68k_unused_16_w; + zbank_memory_map[base].read = zbank_memory_map[base+1].read = zbank_unused_r; + zbank_memory_map[base].write = zbank_memory_map[base+1].write = zbank_unused_w; + } + } + + /* IFL2 bit */ + if (data & 0x100) + { + /* level 2 interrupt enabled ? */ + if (scd.regs[0x32>>1].byte.l & 0x04) + { + /* set IFL2 flag */ + scd.regs[0x00].byte.h |= 0x01; + + /* trigger level 2 interrupt */ + scd.pending |= (1 << 2); + + /* update IRQ level */ + s68k_update_irq((scd.pending & scd.regs[0x32>>1].byte.l) >> 1); + } + } + + /* update LSB only */ + scd.regs[0x00].byte.l = data & 0xff; + return; + } + + case 0x02: /* Memory Mode */ + { + m68k_poll_sync(1<<0x03); + + /* PRG-RAM 128k bank mapped to $020000-$03FFFF (resp. $420000-$43FFFF) */ + m68k.memory_map[scd.cartridge.boot + 0x02].base = scd.prg_ram + ((data & 0xc0) << 11); + m68k.memory_map[scd.cartridge.boot + 0x03].base = m68k.memory_map[scd.cartridge.boot + 0x02].base + 0x10000; + + /* check current mode */ + if (scd.regs[0x03>>1].byte.l & 0x04) + { + /* DMNA bit */ + if (data & 0x02) + { + /* writing 1 to DMNA in 1M mode will return Word-RAM to SUB-CPU in 2M mode */ + scd.dmna = 1; + } + else + { + /* writing 0 to DMNA in 1M mode actually set DMNA bit */ + data |= 0x02; + + /* update WP0-7, BK0-1 & DMNA bits */ + scd.regs[0x02>>1].w = (scd.regs[0x02>>1].w & ~0xffc2) | (data & 0xffc2); + return; + } + } + else + { + /* writing 0 in 2M mode does nothing */ + if (data & 0x02) + { + /* Word-RAM is assigned to SUB-CPU */ + scd.dmna = 1; + + /* clear RET bit */ + scd.regs[0x02>>1].w = (scd.regs[0x02>>1].w & ~0xffc3) | (data & 0xffc2); + return; + } + } + + /* update WP0-7 & BK0-1 bits */ + scd.regs[0x02>>1].w = (scd.regs[0x02>>1].w & ~0xffc0) | (data & 0xffc0); + return; + } + + case 0x06: /* H-INT vector (word access only ?) */ + { + *(uint16 *)(m68k.memory_map[scd.cartridge.boot].base + 0x72) = data; + return; + } + + case 0x0e: /* CPU communication flags */ + { + m68k_poll_sync(1<<0x0e); + + /* D8-D15 ignored -> only MAIN-CPU flags are updated (Mortal Kombat) */ + scd.regs[0x0e>>1].byte.h = data & 0xff; + return; + } + + default: + { + /* MAIN-CPU communication words */ + if ((address & 0x30) == 0x10) + { + m68k_poll_sync(3 << (address & 0x1e)); + scd.regs[(address >> 1) & 0xff].w = data; + return; + } + + /* invalid address */ + m68k_unused_16_w (address, data); + return; + } + } + } + + m68k_unused_16_w (address, data); + return; + } + + case 0x30: /* TIME */ + { + cart.hw.time_w(address, data); + return; + } + + case 0x40: /* TMSS */ + { + if (config.bios & 1) + { + gen_tmss_w(address & 3, data); + return; + } + m68k_unused_16_w(address, data); + return; + } + + case 0x50: /* SVP */ + { + if (!(address & 0xFD)) + { + svp->ssp1601.gr[SSP_XST].byte.h = data; + svp->ssp1601.gr[SSP_PM0].byte.h |= 2; + svp->ssp1601.emu_status &= ~SSP_WAIT_PM0; + return; + } + m68k_unused_16_w(address, data); + return; + } + + case 0x10: /* MEMORY MODE */ + case 0x13: /* unknown */ + case 0x41: /* BOOT ROM */ + case 0x44: /* RADICA */ + { + m68k_unused_16_w (address, data); + return; + } + + default: /* Invalid address */ + { + m68k_lockup_w_16 (address, data); + return; + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* VDP */ +/*--------------------------------------------------------------------------*/ + +unsigned int vdp_read_byte(unsigned int address) +{ + switch (address & 0xFD) + { + case 0x00: /* DATA */ + { + return (vdp_68k_data_r() >> 8); + } + + case 0x01: /* DATA */ + { + return (vdp_68k_data_r() & 0xFF); + } + + case 0x04: /* CTRL */ + { + unsigned int data = (vdp_68k_ctrl_r(m68k.cycles) >> 8) & 3; + + /* Unused bits return prefetched bus data */ + address = m68k.pc; + data |= (READ_BYTE(m68k.memory_map[((address)>>16)&0xff].base, (address) & 0xffff) & 0xFC); + + return data; + } + + case 0x05: /* CTRL */ + { + return (vdp_68k_ctrl_r(m68k.cycles) & 0xFF); + } + + case 0x08: /* HVC */ + case 0x0C: + { + return (vdp_hvc_r(m68k.cycles) >> 8); + } + + case 0x09: /* HVC */ + case 0x0D: + { + return (vdp_hvc_r(m68k.cycles) & 0xFF); + } + + case 0x18: /* Unused */ + case 0x19: + case 0x1C: + case 0x1D: + { + return m68k_read_bus_8(address); + } + + default: /* Invalid address */ + { + return m68k_lockup_r_8(address); + } + } +} + +unsigned int vdp_read_word(unsigned int address) +{ + switch (address & 0xFC) + { + case 0x00: /* DATA */ + { + return vdp_68k_data_r(); + } + + case 0x04: /* CTRL */ + { + unsigned int data = vdp_68k_ctrl_r(m68k.cycles) & 0x3FF; + + /* Unused bits return prefetched bus data */ + address = m68k.pc; + data |= (*(uint16 *)(m68k.memory_map[((address)>>16)&0xff].base + ((address) & 0xffff)) & 0xFC00); + + return data; + } + + case 0x08: /* HVC */ + case 0x0C: + { + return vdp_hvc_r(m68k.cycles); + } + + case 0x18: /* Unused */ + case 0x1C: + { + return m68k_read_bus_16(address); + } + + default: /* Invalid address */ + { + return m68k_lockup_r_16(address); + } + } +} + +void vdp_write_byte(unsigned int address, unsigned int data) +{ + switch (address & 0xFC) + { + case 0x00: /* Data port */ + { + vdp_68k_data_w(data << 8 | data); + return; + } + + case 0x04: /* Control port */ + { + vdp_68k_ctrl_w(data << 8 | data); + return; + } + + case 0x10: /* PSG */ + case 0x14: + { + if (address & 1) + { + psg_write(m68k.cycles, data); + return; + } + m68k_unused_8_w(address, data); + return; + } + + case 0x18: /* Unused */ + { + m68k_unused_8_w(address, data); + return; + } + + case 0x1C: /* TEST register */ + { + vdp_test_w(data << 8 | data); + return; + } + + default: /* Invalid address */ + { + m68k_lockup_w_8(address, data); + return; + } + } +} + +void vdp_write_word(unsigned int address, unsigned int data) +{ + switch (address & 0xFC) + { + case 0x00: /* DATA */ + { + vdp_68k_data_w(data); + return; + } + + case 0x04: /* CTRL */ + { + vdp_68k_ctrl_w(data); + return; + } + + case 0x10: /* PSG */ + case 0x14: + { + psg_write(m68k.cycles, data & 0xFF); + return; + } + + case 0x18: /* Unused */ + { + m68k_unused_16_w(address, data); + return; + } + + case 0x1C: /* Test register */ + { + vdp_test_w(data); + return; + } + + default: /* Invalid address */ + { + m68k_lockup_w_16 (address, data); + return; + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* PICO (incomplete) */ +/*--------------------------------------------------------------------------*/ + +unsigned int pico_read_byte(unsigned int address) +{ + switch (address & 0xFF) + { + case 0x01: /* VERSION register */ + { + return (region_code >> 1); + } + + case 0x03: /* IO register */ + { + return ~input.pad[0]; + } + + case 0x05: /* PEN X coordinate (MSB) */ + { + return (input.analog[0][0] >> 8); + } + + case 0x07: /* PEN X coordinate (LSB) */ + { + return (input.analog[0][0] & 0xFF); + } + + case 0x09: /* PEN Y coordinate (MSB) */ + { + return (input.analog[0][1] >> 8); + } + + case 0x0B: /* PEN Y coordinate (LSB) */ + { + return (input.analog[0][1] & 0xFF); + } + + case 0x0D: /* PAGE register */ + { + return (1 << pico_current) - 1; + } + + case 0x10: /* ADPCM data registers (TODO) */ + case 0x11: + { + return 0xff; + } + + case 0x12: /* ADPCM control registers (TODO) */ + { + return 0x80; + } + + default: + { + return m68k_read_bus_8(address); + } + } +} + +unsigned int pico_read_word(unsigned int address) +{ + return (pico_read_byte(address | 1) | (pico_read_byte(address) << 8)); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/mem68k.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/mem68k.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/mem68k.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/mem68k.h index 2d325e9225..c3e4af4d3f 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/mem68k.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/mem68k.h @@ -1,77 +1,77 @@ -/*************************************************************************************** - * Genesis Plus - * Main 68k bus handlers - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _MEM68K_H_ -#define _MEM68K_H_ - -/* unused areas */ -extern unsigned int m68k_read_bus_8(unsigned int address); -extern unsigned int m68k_read_bus_16(unsigned int address); -extern void m68k_unused_8_w(unsigned int address, unsigned int data); -extern void m68k_unused_16_w(unsigned int address, unsigned int data); - -/* illegal areas */ -extern unsigned int m68k_lockup_r_8(unsigned int address); -extern unsigned int m68k_lockup_r_16(unsigned int address); -extern void m68k_lockup_w_8(unsigned int address, unsigned int data); -extern void m68k_lockup_w_16(unsigned int address, unsigned int data); - -/* Z80 bus */ -extern unsigned int z80_read_byte(unsigned int address); -extern unsigned int z80_read_word(unsigned int address); -extern void z80_write_byte(unsigned int address, unsigned int data); -extern void z80_write_word(unsigned int address, unsigned int data); - -/* I/O & Control registers */ -extern unsigned int ctrl_io_read_byte(unsigned int address); -extern unsigned int ctrl_io_read_word(unsigned int address); -extern void ctrl_io_write_byte(unsigned int address, unsigned int data); -extern void ctrl_io_write_word(unsigned int address, unsigned int data); - -/* VDP */ -extern unsigned int vdp_read_byte(unsigned int address); -extern unsigned int vdp_read_word(unsigned int address); -extern void vdp_write_byte(unsigned int address, unsigned int data); -extern void vdp_write_word(unsigned int address, unsigned int data); - -/* PICO */ -extern unsigned int pico_read_byte(unsigned int address); -extern unsigned int pico_read_word(unsigned int address); - -#endif /* _MEM68K_H_ */ +/*************************************************************************************** + * Genesis Plus + * Main 68k bus handlers + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _MEM68K_H_ +#define _MEM68K_H_ + +/* unused areas */ +extern unsigned int m68k_read_bus_8(unsigned int address); +extern unsigned int m68k_read_bus_16(unsigned int address); +extern void m68k_unused_8_w(unsigned int address, unsigned int data); +extern void m68k_unused_16_w(unsigned int address, unsigned int data); + +/* illegal areas */ +extern unsigned int m68k_lockup_r_8(unsigned int address); +extern unsigned int m68k_lockup_r_16(unsigned int address); +extern void m68k_lockup_w_8(unsigned int address, unsigned int data); +extern void m68k_lockup_w_16(unsigned int address, unsigned int data); + +/* Z80 bus */ +extern unsigned int z80_read_byte(unsigned int address); +extern unsigned int z80_read_word(unsigned int address); +extern void z80_write_byte(unsigned int address, unsigned int data); +extern void z80_write_word(unsigned int address, unsigned int data); + +/* I/O & Control registers */ +extern unsigned int ctrl_io_read_byte(unsigned int address); +extern unsigned int ctrl_io_read_word(unsigned int address); +extern void ctrl_io_write_byte(unsigned int address, unsigned int data); +extern void ctrl_io_write_word(unsigned int address, unsigned int data); + +/* VDP */ +extern unsigned int vdp_read_byte(unsigned int address); +extern unsigned int vdp_read_word(unsigned int address); +extern void vdp_write_byte(unsigned int address, unsigned int data); +extern void vdp_write_word(unsigned int address, unsigned int data); + +/* PICO */ +extern unsigned int pico_read_byte(unsigned int address); +extern unsigned int pico_read_word(unsigned int address); + +#endif /* _MEM68K_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/membnk.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/membnk.c similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/membnk.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/membnk.c index d0083577fe..bff4317e8c 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/membnk.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/membnk.c @@ -1,325 +1,325 @@ -/*************************************************************************************** - * Genesis Plus - * Z80 bank access to 68k bus - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - - -t_zbank_memory_map zbank_memory_map[256]; - -/* - Handlers for access to unused addresses and those which make the - machine lock up. -*/ - -unsigned int zbank_unused_r(unsigned int address) -{ -#ifdef LOGERROR - error("Z80 bank unused read %06X (%x)\n", address, Z80.pc.d); -#endif - return 0xFF; -} - -void zbank_unused_w(unsigned int address, unsigned int data) -{ -#ifdef LOGERROR - error("Z80 bank unused write %06X = %02X (%x)\n", address, data, Z80.pc.d); -#endif -} - -unsigned int zbank_lockup_r(unsigned int address) -{ -#ifdef LOGERROR - error("Z80 bank lockup read %06X (%x)\n", address, Z80.pc.d); -#endif - if (!config.force_dtack) - { - Z80.cycles = 0xFFFFFFFF; - zstate = 0; - } - return 0xFF; -} - -void zbank_lockup_w(unsigned int address, unsigned int data) -{ -#ifdef LOGERROR - error("Z80 bank lockup write %06X = %02X (%x)\n", address, data, Z80.pc.d); -#endif - if (!config.force_dtack) - { - Z80.cycles = 0xFFFFFFFF; - zstate = 0; - } -} - -/* I/O & Control registers */ -unsigned int zbank_read_ctrl_io(unsigned int address) -{ - switch ((address >> 8) & 0xFF) - { - case 0x00: /* I/O chip */ - { - if (!(address & 0xE0)) - { - return (io_68k_read((address >> 1) & 0x0F)); - } - return zbank_unused_r(address); - } - - case 0x11: /* BUSACK */ - { - if (address & 1) - { - return zbank_unused_r(address); - } - return 0xFF; - } - - case 0x30: /* TIME */ - { - if (cart.hw.time_r) - { - unsigned int data = cart.hw.time_r(address); - if (address & 1) - { - return (data & 0xFF); - } - return (data >> 8); - } - return zbank_unused_r(address); - } - - case 0x41: /* OS ROM */ - { - if (address & 1) - { - return (gen_bankswitch_r() | 0xFE); - } - return zbank_unused_r(address); - } - - case 0x10: /* MEMORY MODE */ - case 0x12: /* RESET */ - case 0x20: /* MEGA-CD */ - case 0x40: /* TMSS */ - case 0x44: /* RADICA */ - case 0x50: /* SVP REGISTERS */ - { - return zbank_unused_r(address); - } - - default: /* Invalid address */ - { - return zbank_lockup_r(address); - } - } -} - -void zbank_write_ctrl_io(unsigned int address, unsigned int data) -{ - switch ((address >> 8) & 0xFF) - { - case 0x00: /* I/O chip */ - { - /* get /LWR only */ - if ((address & 0xE1) == 0x01) - { - io_68k_write((address >> 1) & 0x0F, data); - return; - } - zbank_unused_w(address, data); - return; - } - - case 0x11: /* BUSREQ */ - { - if (!(address & 1)) - { - gen_zbusreq_w(data & 1, Z80.cycles); - return; - } - zbank_unused_w(address, data); - return; - } - - case 0x12: /* RESET */ - { - if (!(address & 1)) - { - gen_zreset_w(data & 1, Z80.cycles); - return; - } - zbank_unused_w(address, data); - return; - } - - case 0x30: /* TIME */ - { - cart.hw.time_w(address, data); - return; - } - - case 0x41: /* OS ROM */ - { - if ((config.bios & 1) && (address & 1)) - { - gen_bankswitch_w(data & 1); - return; - } - zbank_unused_w(address, data); - return; - } - - case 0x10: /* MEMORY MODE */ - case 0x20: /* MEGA-CD */ - case 0x40: /* TMSS */ - case 0x44: /* RADICA */ - case 0x50: /* SVP REGISTERS */ - { - zbank_unused_w(address, data); - return; - } - - default: /* Invalid address */ - { - zbank_lockup_w(address, data); - return; - } - } -} - - -/* VDP */ -unsigned int zbank_read_vdp(unsigned int address) -{ - switch (address & 0xFD) - { - case 0x00: /* DATA */ - { - return (vdp_68k_data_r() >> 8); - } - - case 0x01: /* DATA */ - { - return (vdp_68k_data_r() & 0xFF); - } - - case 0x04: /* CTRL */ - { - return (((vdp_68k_ctrl_r(Z80.cycles) >> 8) & 3) | 0xFC); - } - - case 0x05: /* CTRL */ - { - return (vdp_68k_ctrl_r(Z80.cycles) & 0xFF); - } - - case 0x08: /* HVC */ - case 0x0C: - { - return (vdp_hvc_r(Z80.cycles) >> 8); - } - - case 0x09: /* HVC */ - case 0x0D: - { - return (vdp_hvc_r(Z80.cycles) & 0xFF); - } - - case 0x18: /* Unused */ - case 0x19: - case 0x1C: - case 0x1D: - { - return zbank_unused_r(address); - } - - default: /* Invalid address */ - { - return zbank_lockup_r(address); - } - } -} - -void zbank_write_vdp(unsigned int address, unsigned int data) -{ - switch (address & 0xFC) - { - case 0x00: /* Data port */ - { - vdp_68k_data_w(data << 8 | data); - return; - } - - case 0x04: /* Control port */ - { - vdp_68k_ctrl_w(data << 8 | data); - return; - } - - case 0x10: /* PSG */ - case 0x14: - { - if (address & 1) - { - psg_write(Z80.cycles, data); - return; - } - zbank_unused_w(address, data); - return; - } - - case 0x18: /* Unused */ - { - zbank_unused_w(address, data); - return; - } - - case 0x1C: /* TEST register */ - { - vdp_test_w(data << 8 | data); - return; - } - - default: /* Invalid address */ - { - zbank_lockup_w(address, data); - return; - } - } -} +/*************************************************************************************** + * Genesis Plus + * Z80 bank access to 68k bus + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + + +t_zbank_memory_map zbank_memory_map[256]; + +/* + Handlers for access to unused addresses and those which make the + machine lock up. +*/ + +unsigned int zbank_unused_r(unsigned int address) +{ +#ifdef LOGERROR + error("Z80 bank unused read %06X (%x)\n", address, Z80.pc.d); +#endif + return 0xFF; +} + +void zbank_unused_w(unsigned int address, unsigned int data) +{ +#ifdef LOGERROR + error("Z80 bank unused write %06X = %02X (%x)\n", address, data, Z80.pc.d); +#endif +} + +unsigned int zbank_lockup_r(unsigned int address) +{ +#ifdef LOGERROR + error("Z80 bank lockup read %06X (%x)\n", address, Z80.pc.d); +#endif + if (!config.force_dtack) + { + Z80.cycles = 0xFFFFFFFF; + zstate = 0; + } + return 0xFF; +} + +void zbank_lockup_w(unsigned int address, unsigned int data) +{ +#ifdef LOGERROR + error("Z80 bank lockup write %06X = %02X (%x)\n", address, data, Z80.pc.d); +#endif + if (!config.force_dtack) + { + Z80.cycles = 0xFFFFFFFF; + zstate = 0; + } +} + +/* I/O & Control registers */ +unsigned int zbank_read_ctrl_io(unsigned int address) +{ + switch ((address >> 8) & 0xFF) + { + case 0x00: /* I/O chip */ + { + if (!(address & 0xE0)) + { + return (io_68k_read((address >> 1) & 0x0F)); + } + return zbank_unused_r(address); + } + + case 0x11: /* BUSACK */ + { + if (address & 1) + { + return zbank_unused_r(address); + } + return 0xFF; + } + + case 0x30: /* TIME */ + { + if (cart.hw.time_r) + { + unsigned int data = cart.hw.time_r(address); + if (address & 1) + { + return (data & 0xFF); + } + return (data >> 8); + } + return zbank_unused_r(address); + } + + case 0x41: /* OS ROM */ + { + if (address & 1) + { + return (gen_bankswitch_r() | 0xFE); + } + return zbank_unused_r(address); + } + + case 0x10: /* MEMORY MODE */ + case 0x12: /* RESET */ + case 0x20: /* MEGA-CD */ + case 0x40: /* TMSS */ + case 0x44: /* RADICA */ + case 0x50: /* SVP REGISTERS */ + { + return zbank_unused_r(address); + } + + default: /* Invalid address */ + { + return zbank_lockup_r(address); + } + } +} + +void zbank_write_ctrl_io(unsigned int address, unsigned int data) +{ + switch ((address >> 8) & 0xFF) + { + case 0x00: /* I/O chip */ + { + /* get /LWR only */ + if ((address & 0xE1) == 0x01) + { + io_68k_write((address >> 1) & 0x0F, data); + return; + } + zbank_unused_w(address, data); + return; + } + + case 0x11: /* BUSREQ */ + { + if (!(address & 1)) + { + gen_zbusreq_w(data & 1, Z80.cycles); + return; + } + zbank_unused_w(address, data); + return; + } + + case 0x12: /* RESET */ + { + if (!(address & 1)) + { + gen_zreset_w(data & 1, Z80.cycles); + return; + } + zbank_unused_w(address, data); + return; + } + + case 0x30: /* TIME */ + { + cart.hw.time_w(address, data); + return; + } + + case 0x41: /* OS ROM */ + { + if ((config.bios & 1) && (address & 1)) + { + gen_bankswitch_w(data & 1); + return; + } + zbank_unused_w(address, data); + return; + } + + case 0x10: /* MEMORY MODE */ + case 0x20: /* MEGA-CD */ + case 0x40: /* TMSS */ + case 0x44: /* RADICA */ + case 0x50: /* SVP REGISTERS */ + { + zbank_unused_w(address, data); + return; + } + + default: /* Invalid address */ + { + zbank_lockup_w(address, data); + return; + } + } +} + + +/* VDP */ +unsigned int zbank_read_vdp(unsigned int address) +{ + switch (address & 0xFD) + { + case 0x00: /* DATA */ + { + return (vdp_68k_data_r() >> 8); + } + + case 0x01: /* DATA */ + { + return (vdp_68k_data_r() & 0xFF); + } + + case 0x04: /* CTRL */ + { + return (((vdp_68k_ctrl_r(Z80.cycles) >> 8) & 3) | 0xFC); + } + + case 0x05: /* CTRL */ + { + return (vdp_68k_ctrl_r(Z80.cycles) & 0xFF); + } + + case 0x08: /* HVC */ + case 0x0C: + { + return (vdp_hvc_r(Z80.cycles) >> 8); + } + + case 0x09: /* HVC */ + case 0x0D: + { + return (vdp_hvc_r(Z80.cycles) & 0xFF); + } + + case 0x18: /* Unused */ + case 0x19: + case 0x1C: + case 0x1D: + { + return zbank_unused_r(address); + } + + default: /* Invalid address */ + { + return zbank_lockup_r(address); + } + } +} + +void zbank_write_vdp(unsigned int address, unsigned int data) +{ + switch (address & 0xFC) + { + case 0x00: /* Data port */ + { + vdp_68k_data_w(data << 8 | data); + return; + } + + case 0x04: /* Control port */ + { + vdp_68k_ctrl_w(data << 8 | data); + return; + } + + case 0x10: /* PSG */ + case 0x14: + { + if (address & 1) + { + psg_write(Z80.cycles, data); + return; + } + zbank_unused_w(address, data); + return; + } + + case 0x18: /* Unused */ + { + zbank_unused_w(address, data); + return; + } + + case 0x1C: /* TEST register */ + { + vdp_test_w(data << 8 | data); + return; + } + + default: /* Invalid address */ + { + zbank_lockup_w(address, data); + return; + } + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/membnk.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/membnk.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/membnk.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/membnk.h index 2bf485f984..896045f60d 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/membnk.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/membnk.h @@ -1,60 +1,60 @@ -/*************************************************************************************** - * Genesis Plus - * Z80 bank access to 68k bus - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _MEMBNK_H_ -#define _MEMBNK_H_ - -extern unsigned int zbank_unused_r(unsigned int address); -extern void zbank_unused_w(unsigned int address, unsigned int data); -extern unsigned int zbank_lockup_r(unsigned int address); -extern void zbank_lockup_w(unsigned int address, unsigned int data); -extern unsigned int zbank_read_ctrl_io(unsigned int address); -extern void zbank_write_ctrl_io(unsigned int address, unsigned int data); -extern unsigned int zbank_read_vdp(unsigned int address); -extern void zbank_write_vdp(unsigned int address, unsigned int data); - -typedef struct -{ - unsigned int (*read)(unsigned int address); - void (*write)(unsigned int address, unsigned int data); -} t_zbank_memory_map; - -extern t_zbank_memory_map zbank_memory_map[256]; - -#endif /* _MEMBNK_H_ */ +/*************************************************************************************** + * Genesis Plus + * Z80 bank access to 68k bus + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _MEMBNK_H_ +#define _MEMBNK_H_ + +extern unsigned int zbank_unused_r(unsigned int address); +extern void zbank_unused_w(unsigned int address, unsigned int data); +extern unsigned int zbank_lockup_r(unsigned int address); +extern void zbank_lockup_w(unsigned int address, unsigned int data); +extern unsigned int zbank_read_ctrl_io(unsigned int address); +extern void zbank_write_ctrl_io(unsigned int address, unsigned int data); +extern unsigned int zbank_read_vdp(unsigned int address); +extern void zbank_write_vdp(unsigned int address, unsigned int data); + +typedef struct +{ + unsigned int (*read)(unsigned int address); + void (*write)(unsigned int address, unsigned int data); +} t_zbank_memory_map; + +extern t_zbank_memory_map zbank_memory_map[256]; + +#endif /* _MEMBNK_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/memz80.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/memz80.c similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/memz80.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/memz80.c index d8630d5652..118816dce7 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/memz80.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/memz80.c @@ -1,764 +1,764 @@ -/*************************************************************************************** - * Genesis Plus - * Z80 bus handlers (Genesis & Master System modes) - * - * Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - - -/*--------------------------------------------------------------------------*/ -/* Handlers for access to unused addresses and those which make the */ -/* machine lock up. */ -/*--------------------------------------------------------------------------*/ - -INLINE void z80_unused_w(unsigned int address, unsigned char data) -{ -#ifdef LOGERROR - error("Z80 unused write %04X = %02X (%x)\n", address, data, Z80.pc.w.l); -#endif -} - -INLINE unsigned char z80_unused_r(unsigned int address) -{ -#ifdef LOGERROR - error("Z80 unused read %04X (%x)\n", address, Z80.pc.w.l); -#endif - return 0xFF; -} - -INLINE void z80_lockup_w(unsigned int address, unsigned char data) -{ -#ifdef LOGERROR - error("Z80 lockup write %04X = %02X (%x)\n", address, data, Z80.pc.w.l); -#endif - if (!config.force_dtack) - { - Z80.cycles = 0xFFFFFFFF; - zstate = 0; - } -} - -INLINE unsigned char z80_lockup_r(unsigned int address) -{ -#ifdef LOGERROR - error("Z80 lockup read %04X (%x)\n", address, Z80.pc.w.l); -#endif - if (!config.force_dtack) - { - Z80.cycles = 0xFFFFFFFF; - zstate = 0; - } - return 0xFF; -} - - -/*--------------------------------------------------------------------------*/ -/* Z80 Memory handlers (Genesis mode) */ -/*--------------------------------------------------------------------------*/ - -unsigned char z80_memory_r(unsigned int address) -{ - switch((address >> 13) & 7) - { - case 0: /* $0000-$3FFF: Z80 RAM (8K mirrored) */ - case 1: - { - return zram[address & 0x1FFF]; - } - - case 2: /* $4000-$5FFF: YM2612 */ - { - return fm_read(Z80.cycles, address & 3); - } - - case 3: /* $7F00-$7FFF: VDP */ - { - if ((address >> 8) == 0x7F) - { - /* average Z80 wait-states when accessing 68k area */ - Z80.cycles += 3 * 15; - return (*zbank_memory_map[0xc0].read)(address); - } - return z80_unused_r(address); - } - - default: /* $8000-$FFFF: 68k bank (32K) */ - { - /* average Z80 wait-states when accessing 68k area */ - Z80.cycles += 3 * 15; - - address = zbank | (address & 0x7FFF); - if (zbank_memory_map[address >> 16].read) - { - return (*zbank_memory_map[address >> 16].read)(address); - } - return READ_BYTE(m68k.memory_map[address >> 16].base, address & 0xFFFF); - } - } -} - - -void z80_memory_w(unsigned int address, unsigned char data) -{ - switch((address >> 13) & 7) - { - case 0: /* $0000-$3FFF: Z80 RAM (8K mirrored) */ - case 1: - { - zram[address & 0x1FFF] = data; - return; - } - - case 2: /* $4000-$5FFF: YM2612 */ - { - fm_write(Z80.cycles, address & 3, data); - return; - } - - case 3: /* Bank register and VDP */ - { - switch(address >> 8) - { - case 0x60: /* $6000-$60FF: Bank register */ - { - gen_zbank_w(data & 1); - return; - } - - case 0x7F: /* $7F00-$7FFF: VDP */ - { - /* average Z80 wait-states when accessing 68k area */ - Z80.cycles += 3 * 15; - (*zbank_memory_map[0xc0].write)(address, data); - return; - } - - default: - { - z80_unused_w(address, data); - return; - } - } - } - - default: /* $8000-$FFFF: 68k bank (32K) */ - { - /* average Z80 wait-states when accessing 68k area */ - Z80.cycles += 3 * 15; - - address = zbank | (address & 0x7FFF); - if (zbank_memory_map[address >> 16].write) - { - (*zbank_memory_map[address >> 16].write)(address, data); - return; - } - WRITE_BYTE(m68k.memory_map[address >> 16].base, address & 0xFFFF, data); - return; - } - } -} - -/*--------------------------------------------------------------------------*/ -/* Unused Port handlers */ -/* */ -/* Ports are unused when not in Mark III compatibility mode. */ -/* */ -/* Genesis games that access ports anyway: */ -/* Thunder Force IV reads port $BF in it's interrupt handler. */ -/* */ -/*--------------------------------------------------------------------------*/ - -unsigned char z80_unused_port_r(unsigned int port) -{ -#if LOGERROR - error("Z80 unused read from port %04X (%x)\n", port, Z80.pc.w.l); -#endif - if (system_hw == SYSTEM_SMS) - { - unsigned int address = (Z80.pc.w.l - 1) & 0xFFFF; - return z80_readmap[address >> 10][address & 0x3FF]; - } - return 0xFF; -} - -void z80_unused_port_w(unsigned int port, unsigned char data) -{ -#if LOGERROR - error("Z80 unused write to port %04X = %02X (%x)\n", port, data, Z80.pc.w.l); -#endif -} - -/*--------------------------------------------------------------------------*/ -/* MegaDrive / Genesis port handlers (Master System compatibility mode) */ -/*--------------------------------------------------------------------------*/ - -void z80_md_port_w(unsigned int port, unsigned char data) -{ - switch (port & 0xC1) - { - case 0x01: - { - io_z80_write(1, data, Z80.cycles + PBC_CYCLE_OFFSET); - return; - } - - case 0x40: - case 0x41: - { - psg_write(Z80.cycles, data); - return; - } - - case 0x80: - { - vdp_z80_data_w(data); - return; - } - - case 0x81: - { - vdp_z80_ctrl_w(data); - return; - } - - default: - { - port &= 0xFF; - - /* write FM chip if enabled */ - if ((port >= 0xF0) && (config.ym2413 & 1)) - { - fm_write(Z80.cycles, port, data); - return; - } - - z80_unused_port_w(port, data); - return; - } - } -} - -unsigned char z80_md_port_r(unsigned int port) -{ - switch (port & 0xC1) - { - case 0x40: - { - return ((vdp_hvc_r(Z80.cycles - 15) >> 8) & 0xFF); - } - - case 0x41: - { - return (vdp_hvc_r(Z80.cycles - 15) & 0xFF); - } - - case 0x80: - { - return vdp_z80_data_r(); - } - - case 0x81: - { - return vdp_z80_ctrl_r(Z80.cycles); - } - - default: - { - port &= 0xFF; - - if ((port == 0xC0) || (port == 0xC1) || (port == 0xDC) || (port == 0xDD)) - { - return io_z80_read(port & 1); - } - - /* read FM chip if enabled */ - if ((port >= 0xF0) && (config.ym2413 & 1)) - { - return fm_read(Z80.cycles, port); - } - - return z80_unused_port_r(port); - } - } -} - - -/*--------------------------------------------------------------------------*/ -/* Game Gear port handlers */ -/*--------------------------------------------------------------------------*/ - -void z80_gg_port_w(unsigned int port, unsigned char data) -{ - switch(port & 0xC1) - { - case 0x00: - case 0x01: - { - port &= 0xFF; - - if (port < 0x07) - { - if (system_hw == SYSTEM_GG) - { - io_gg_write(port, data); - return; - } - } - - /* full address range is decoded by Game Gear I/O chip (fixes G-LOC Air Battle) */ - else if ((port == 0x3E) || (port == 0x3F)) - { - io_z80_write(port & 1, data, Z80.cycles + SMS_CYCLE_OFFSET); - return; - } - - z80_unused_port_w(port, data); - return; - } - - case 0x40: - case 0x41: - { - psg_write(Z80.cycles, data); - return; - } - - case 0x80: - { - vdp_z80_data_w(data); - return; - } - - case 0x81: - { - vdp_sms_ctrl_w(data); - return; - } - - default: - { - z80_unused_port_w(port & 0xFF, data); - return; - } - } -} - -unsigned char z80_gg_port_r(unsigned int port) -{ - switch(port & 0xC1) - { - case 0x00: - case 0x01: - { - port &= 0xFF; - - if (port < 0x07) - { - if (system_hw == SYSTEM_GG) - { - return io_gg_read(port); - } - } - - return z80_unused_port_r(port); - } - - case 0x40: - { - return ((vdp_hvc_r(Z80.cycles) >> 8) & 0xFF); - } - - case 0x41: - { - return (vdp_hvc_r(Z80.cycles) & 0xFF); - } - - case 0x80: - { - return vdp_z80_data_r(); - } - - case 0x81: - { - return vdp_z80_ctrl_r(Z80.cycles); - } - - default: - { - port &= 0xFF; - - /* full address range is decoded by Game Gear I/O chip */ - if ((port == 0xC0) || (port == 0xC1) || (port == 0xDC) || (port == 0xDD)) - { - return io_z80_read(port & 1); - } - - return z80_unused_port_r(port); - } - } -} - - -/*--------------------------------------------------------------------------*/ -/* Master System port handlers */ -/*--------------------------------------------------------------------------*/ - -void z80_ms_port_w(unsigned int port, unsigned char data) -{ - switch (port & 0xC1) - { - case 0x00: - case 0x01: - { - /* full address range is decoded by 315-5297 I/O chip (fixes Super Tetris / Power Boggle Boggle) */ - if ((region_code != REGION_JAPAN_NTSC) || ((port & 0xFE) == 0x3E)) - { - io_z80_write(port & 1, data, Z80.cycles + SMS_CYCLE_OFFSET); - return; - } - - z80_unused_port_w(port & 0xFF, data); - return; - } - - case 0x40: - case 0x41: - { - psg_write(Z80.cycles, data); - return; - } - - case 0x80: - { - vdp_z80_data_w(data); - return; - } - - case 0x81: - { - vdp_sms_ctrl_w(data); - return; - } - - default: - { - /* check if YM2413 chip is enabled */ - if (config.ym2413 & 1) - { - if (region_code == REGION_JAPAN_NTSC) - { - /* 315-5297 I/O chip decodes full address range */ - port &= 0xFF; - - /* internal YM2413 chip */ - if ((port == 0xF0) || (port == 0xF1)) - { - fm_write(Z80.cycles, port, data); - return; - } - - /* Audio control register (315-5297 I/O chip specific) */ - if (port == 0xF2) - { - /* D1 D0 - ----- - 0 0 : enable only PSG output (power-on default) - 0 1 : enable only FM output - 1 0 : disable both PSG & FM output - 1 1 : enable both PSG and FM output - */ - psg_config(Z80.cycles, config.psg_preamp, ((data + 1) & 0x02) ? 0x00 : 0xFF); - fm_write(Z80.cycles, 0x02, data); - io_reg[6] = data; - return; - } - } - else if (!(port & 4)) - { - /* external FM board */ - fm_write(Z80.cycles, port, data); - return; - } - } - - z80_unused_port_w(port & 0xFF, data); - return; - } - } -} - -unsigned char z80_ms_port_r(unsigned int port) -{ - switch (port & 0xC1) - { - case 0x00: - case 0x01: - { - return z80_unused_port_r(port & 0xFF); - } - - case 0x40: - { - return ((vdp_hvc_r(Z80.cycles) >> 8) & 0xFF); - } - - case 0x41: - { - return (vdp_hvc_r(Z80.cycles) & 0xFF); - } - - case 0x80: - { - return vdp_z80_data_r(); - } - - case 0x81: - { - return vdp_z80_ctrl_r(Z80.cycles); - } - - default: - { - if (region_code == REGION_JAPAN_NTSC) - { - /* 315-5297 I/O chip decodes full address range */ - port &= 0xFF; - - if (port == 0xF2) - { - /* D7-D5 : C-SYNC counter (not emulated) - D4-D2 : Always zero - D1 : Mute control bit 1 - D0 : Mute control bit 0 - */ - return io_reg[0x06] & 0x03; - } - - if ((port == 0xC0) || (port == 0xC1) || (port == 0xDC) || (port == 0xDD)) - { - /* read I/O ports if enabled */ - if (!(io_reg[0x0E] & 0x04)) - { - return io_z80_read(port & 1); - } - } - - return z80_unused_port_r(port); - } - else - { - uint8 data = 0xFF; - - /* read FM board if enabled */ - if (!(port & 4) && (config.ym2413 & 1)) - { - data = fm_read(Z80.cycles, port); - } - - /* read I/O ports if enabled */ - if (!(io_reg[0x0E] & 0x04)) - { - data &= io_z80_read(port & 1); - } - - return data; - } - } - } -} - -/*--------------------------------------------------------------------------*/ -/* Mark III port handlers */ -/*--------------------------------------------------------------------------*/ - -void z80_m3_port_w(unsigned int port, unsigned char data) -{ - switch (port & 0xC1) - { - case 0x00: - case 0x01: - { - z80_unused_port_w(port & 0xFF, data); - return; - } - - case 0x40: - case 0x41: - { - psg_write(Z80.cycles, data); - return; - } - - case 0x80: - { - vdp_z80_data_w(data); - return; - } - - case 0x81: - { - vdp_sms_ctrl_w(data); - return; - } - - default: - { - /* write FM chip if enabled */ - if (!(port & 4) && (config.ym2413 & 1)) - { - fm_write(Z80.cycles, port, data); - return; - } - - z80_unused_port_w(port & 0xFF, data); - return; - } - } -} - -unsigned char z80_m3_port_r(unsigned int port) -{ - switch (port & 0xC1) - { - case 0x00: - case 0x01: - { - return z80_unused_port_r(port & 0xFF); - } - - case 0x40: - { - return ((vdp_hvc_r(Z80.cycles) >> 8) & 0xFF); - } - - case 0x41: - { - return (vdp_hvc_r(Z80.cycles) & 0xFF); - } - - case 0x80: - { - return vdp_z80_data_r(); - } - - case 0x81: - { - return vdp_z80_ctrl_r(Z80.cycles); - } - - default: - { - /* read FM chip if enabled */ - if (!(port & 4) && (config.ym2413 & 1)) - { - /* I/O ports are automatically disabled by hardware */ - return fm_read(Z80.cycles, port); - } - - /* read I/O ports */ - return io_z80_read(port & 1); - } - } -} - - -/*--------------------------------------------------------------------------*/ -/* SG-1000 port handlers */ -/*--------------------------------------------------------------------------*/ - -void z80_sg_port_w(unsigned int port, unsigned char data) -{ - switch(port & 0xC1) - { - case 0x40: - case 0x41: - { - psg_write(Z80.cycles, data); - - /* Z80 !WAIT input is tied to SN76489AN chip READY pin (held low for 32 clocks after each write access) */ - Z80.cycles += (32 * 15); - return; - } - - case 0x80: - { - vdp_z80_data_w(data); - return; - } - - case 0x81: - { - vdp_tms_ctrl_w(data); - return; - } - - default: - { - z80_unused_port_w(port & 0xFF, data); - return; - } - } -} - -unsigned char z80_sg_port_r(unsigned int port) -{ - switch (port & 0xC1) - { - case 0x80: - { - return vdp_z80_data_r(); - } - - case 0x81: - { - return vdp_z80_ctrl_r(Z80.cycles); - } - - case 0xC0: - case 0xC1: - { - return io_z80_read(port & 1); - } - - default: - { - return z80_unused_port_r(port & 0xFF); - } - } -} +/*************************************************************************************** + * Genesis Plus + * Z80 bus handlers (Genesis & Master System modes) + * + * Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + + +/*--------------------------------------------------------------------------*/ +/* Handlers for access to unused addresses and those which make the */ +/* machine lock up. */ +/*--------------------------------------------------------------------------*/ + +INLINE void z80_unused_w(unsigned int address, unsigned char data) +{ +#ifdef LOGERROR + error("Z80 unused write %04X = %02X (%x)\n", address, data, Z80.pc.w.l); +#endif +} + +INLINE unsigned char z80_unused_r(unsigned int address) +{ +#ifdef LOGERROR + error("Z80 unused read %04X (%x)\n", address, Z80.pc.w.l); +#endif + return 0xFF; +} + +INLINE void z80_lockup_w(unsigned int address, unsigned char data) +{ +#ifdef LOGERROR + error("Z80 lockup write %04X = %02X (%x)\n", address, data, Z80.pc.w.l); +#endif + if (!config.force_dtack) + { + Z80.cycles = 0xFFFFFFFF; + zstate = 0; + } +} + +INLINE unsigned char z80_lockup_r(unsigned int address) +{ +#ifdef LOGERROR + error("Z80 lockup read %04X (%x)\n", address, Z80.pc.w.l); +#endif + if (!config.force_dtack) + { + Z80.cycles = 0xFFFFFFFF; + zstate = 0; + } + return 0xFF; +} + + +/*--------------------------------------------------------------------------*/ +/* Z80 Memory handlers (Genesis mode) */ +/*--------------------------------------------------------------------------*/ + +unsigned char z80_memory_r(unsigned int address) +{ + switch((address >> 13) & 7) + { + case 0: /* $0000-$3FFF: Z80 RAM (8K mirrored) */ + case 1: + { + return zram[address & 0x1FFF]; + } + + case 2: /* $4000-$5FFF: YM2612 */ + { + return fm_read(Z80.cycles, address & 3); + } + + case 3: /* $7F00-$7FFF: VDP */ + { + if ((address >> 8) == 0x7F) + { + /* average Z80 wait-states when accessing 68k area */ + Z80.cycles += 3 * 15; + return (*zbank_memory_map[0xc0].read)(address); + } + return z80_unused_r(address); + } + + default: /* $8000-$FFFF: 68k bank (32K) */ + { + /* average Z80 wait-states when accessing 68k area */ + Z80.cycles += 3 * 15; + + address = zbank | (address & 0x7FFF); + if (zbank_memory_map[address >> 16].read) + { + return (*zbank_memory_map[address >> 16].read)(address); + } + return READ_BYTE(m68k.memory_map[address >> 16].base, address & 0xFFFF); + } + } +} + + +void z80_memory_w(unsigned int address, unsigned char data) +{ + switch((address >> 13) & 7) + { + case 0: /* $0000-$3FFF: Z80 RAM (8K mirrored) */ + case 1: + { + zram[address & 0x1FFF] = data; + return; + } + + case 2: /* $4000-$5FFF: YM2612 */ + { + fm_write(Z80.cycles, address & 3, data); + return; + } + + case 3: /* Bank register and VDP */ + { + switch(address >> 8) + { + case 0x60: /* $6000-$60FF: Bank register */ + { + gen_zbank_w(data & 1); + return; + } + + case 0x7F: /* $7F00-$7FFF: VDP */ + { + /* average Z80 wait-states when accessing 68k area */ + Z80.cycles += 3 * 15; + (*zbank_memory_map[0xc0].write)(address, data); + return; + } + + default: + { + z80_unused_w(address, data); + return; + } + } + } + + default: /* $8000-$FFFF: 68k bank (32K) */ + { + /* average Z80 wait-states when accessing 68k area */ + Z80.cycles += 3 * 15; + + address = zbank | (address & 0x7FFF); + if (zbank_memory_map[address >> 16].write) + { + (*zbank_memory_map[address >> 16].write)(address, data); + return; + } + WRITE_BYTE(m68k.memory_map[address >> 16].base, address & 0xFFFF, data); + return; + } + } +} + +/*--------------------------------------------------------------------------*/ +/* Unused Port handlers */ +/* */ +/* Ports are unused when not in Mark III compatibility mode. */ +/* */ +/* Genesis games that access ports anyway: */ +/* Thunder Force IV reads port $BF in it's interrupt handler. */ +/* */ +/*--------------------------------------------------------------------------*/ + +unsigned char z80_unused_port_r(unsigned int port) +{ +#if LOGERROR + error("Z80 unused read from port %04X (%x)\n", port, Z80.pc.w.l); +#endif + if (system_hw == SYSTEM_SMS) + { + unsigned int address = (Z80.pc.w.l - 1) & 0xFFFF; + return z80_readmap[address >> 10][address & 0x3FF]; + } + return 0xFF; +} + +void z80_unused_port_w(unsigned int port, unsigned char data) +{ +#if LOGERROR + error("Z80 unused write to port %04X = %02X (%x)\n", port, data, Z80.pc.w.l); +#endif +} + +/*--------------------------------------------------------------------------*/ +/* MegaDrive / Genesis port handlers (Master System compatibility mode) */ +/*--------------------------------------------------------------------------*/ + +void z80_md_port_w(unsigned int port, unsigned char data) +{ + switch (port & 0xC1) + { + case 0x01: + { + io_z80_write(1, data, Z80.cycles + PBC_CYCLE_OFFSET); + return; + } + + case 0x40: + case 0x41: + { + psg_write(Z80.cycles, data); + return; + } + + case 0x80: + { + vdp_z80_data_w(data); + return; + } + + case 0x81: + { + vdp_z80_ctrl_w(data); + return; + } + + default: + { + port &= 0xFF; + + /* write FM chip if enabled */ + if ((port >= 0xF0) && (config.ym2413 & 1)) + { + fm_write(Z80.cycles, port, data); + return; + } + + z80_unused_port_w(port, data); + return; + } + } +} + +unsigned char z80_md_port_r(unsigned int port) +{ + switch (port & 0xC1) + { + case 0x40: + { + return ((vdp_hvc_r(Z80.cycles - 15) >> 8) & 0xFF); + } + + case 0x41: + { + return (vdp_hvc_r(Z80.cycles - 15) & 0xFF); + } + + case 0x80: + { + return vdp_z80_data_r(); + } + + case 0x81: + { + return vdp_z80_ctrl_r(Z80.cycles); + } + + default: + { + port &= 0xFF; + + if ((port == 0xC0) || (port == 0xC1) || (port == 0xDC) || (port == 0xDD)) + { + return io_z80_read(port & 1); + } + + /* read FM chip if enabled */ + if ((port >= 0xF0) && (config.ym2413 & 1)) + { + return fm_read(Z80.cycles, port); + } + + return z80_unused_port_r(port); + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* Game Gear port handlers */ +/*--------------------------------------------------------------------------*/ + +void z80_gg_port_w(unsigned int port, unsigned char data) +{ + switch(port & 0xC1) + { + case 0x00: + case 0x01: + { + port &= 0xFF; + + if (port < 0x07) + { + if (system_hw == SYSTEM_GG) + { + io_gg_write(port, data); + return; + } + } + + /* full address range is decoded by Game Gear I/O chip (fixes G-LOC Air Battle) */ + else if ((port == 0x3E) || (port == 0x3F)) + { + io_z80_write(port & 1, data, Z80.cycles + SMS_CYCLE_OFFSET); + return; + } + + z80_unused_port_w(port, data); + return; + } + + case 0x40: + case 0x41: + { + psg_write(Z80.cycles, data); + return; + } + + case 0x80: + { + vdp_z80_data_w(data); + return; + } + + case 0x81: + { + vdp_sms_ctrl_w(data); + return; + } + + default: + { + z80_unused_port_w(port & 0xFF, data); + return; + } + } +} + +unsigned char z80_gg_port_r(unsigned int port) +{ + switch(port & 0xC1) + { + case 0x00: + case 0x01: + { + port &= 0xFF; + + if (port < 0x07) + { + if (system_hw == SYSTEM_GG) + { + return io_gg_read(port); + } + } + + return z80_unused_port_r(port); + } + + case 0x40: + { + return ((vdp_hvc_r(Z80.cycles) >> 8) & 0xFF); + } + + case 0x41: + { + return (vdp_hvc_r(Z80.cycles) & 0xFF); + } + + case 0x80: + { + return vdp_z80_data_r(); + } + + case 0x81: + { + return vdp_z80_ctrl_r(Z80.cycles); + } + + default: + { + port &= 0xFF; + + /* full address range is decoded by Game Gear I/O chip */ + if ((port == 0xC0) || (port == 0xC1) || (port == 0xDC) || (port == 0xDD)) + { + return io_z80_read(port & 1); + } + + return z80_unused_port_r(port); + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* Master System port handlers */ +/*--------------------------------------------------------------------------*/ + +void z80_ms_port_w(unsigned int port, unsigned char data) +{ + switch (port & 0xC1) + { + case 0x00: + case 0x01: + { + /* full address range is decoded by 315-5297 I/O chip (fixes Super Tetris / Power Boggle Boggle) */ + if ((region_code != REGION_JAPAN_NTSC) || ((port & 0xFE) == 0x3E)) + { + io_z80_write(port & 1, data, Z80.cycles + SMS_CYCLE_OFFSET); + return; + } + + z80_unused_port_w(port & 0xFF, data); + return; + } + + case 0x40: + case 0x41: + { + psg_write(Z80.cycles, data); + return; + } + + case 0x80: + { + vdp_z80_data_w(data); + return; + } + + case 0x81: + { + vdp_sms_ctrl_w(data); + return; + } + + default: + { + /* check if YM2413 chip is enabled */ + if (config.ym2413 & 1) + { + if (region_code == REGION_JAPAN_NTSC) + { + /* 315-5297 I/O chip decodes full address range */ + port &= 0xFF; + + /* internal YM2413 chip */ + if ((port == 0xF0) || (port == 0xF1)) + { + fm_write(Z80.cycles, port, data); + return; + } + + /* Audio control register (315-5297 I/O chip specific) */ + if (port == 0xF2) + { + /* D1 D0 + ----- + 0 0 : enable only PSG output (power-on default) + 0 1 : enable only FM output + 1 0 : disable both PSG & FM output + 1 1 : enable both PSG and FM output + */ + psg_config(Z80.cycles, config.psg_preamp, ((data + 1) & 0x02) ? 0x00 : 0xFF); + fm_write(Z80.cycles, 0x02, data); + io_reg[6] = data; + return; + } + } + else if (!(port & 4)) + { + /* external FM board */ + fm_write(Z80.cycles, port, data); + return; + } + } + + z80_unused_port_w(port & 0xFF, data); + return; + } + } +} + +unsigned char z80_ms_port_r(unsigned int port) +{ + switch (port & 0xC1) + { + case 0x00: + case 0x01: + { + return z80_unused_port_r(port & 0xFF); + } + + case 0x40: + { + return ((vdp_hvc_r(Z80.cycles) >> 8) & 0xFF); + } + + case 0x41: + { + return (vdp_hvc_r(Z80.cycles) & 0xFF); + } + + case 0x80: + { + return vdp_z80_data_r(); + } + + case 0x81: + { + return vdp_z80_ctrl_r(Z80.cycles); + } + + default: + { + if (region_code == REGION_JAPAN_NTSC) + { + /* 315-5297 I/O chip decodes full address range */ + port &= 0xFF; + + if (port == 0xF2) + { + /* D7-D5 : C-SYNC counter (not emulated) + D4-D2 : Always zero + D1 : Mute control bit 1 + D0 : Mute control bit 0 + */ + return io_reg[0x06] & 0x03; + } + + if ((port == 0xC0) || (port == 0xC1) || (port == 0xDC) || (port == 0xDD)) + { + /* read I/O ports if enabled */ + if (!(io_reg[0x0E] & 0x04)) + { + return io_z80_read(port & 1); + } + } + + return z80_unused_port_r(port); + } + else + { + uint8 data = 0xFF; + + /* read FM board if enabled */ + if (!(port & 4) && (config.ym2413 & 1)) + { + data = fm_read(Z80.cycles, port); + } + + /* read I/O ports if enabled */ + if (!(io_reg[0x0E] & 0x04)) + { + data &= io_z80_read(port & 1); + } + + return data; + } + } + } +} + +/*--------------------------------------------------------------------------*/ +/* Mark III port handlers */ +/*--------------------------------------------------------------------------*/ + +void z80_m3_port_w(unsigned int port, unsigned char data) +{ + switch (port & 0xC1) + { + case 0x00: + case 0x01: + { + z80_unused_port_w(port & 0xFF, data); + return; + } + + case 0x40: + case 0x41: + { + psg_write(Z80.cycles, data); + return; + } + + case 0x80: + { + vdp_z80_data_w(data); + return; + } + + case 0x81: + { + vdp_sms_ctrl_w(data); + return; + } + + default: + { + /* write FM chip if enabled */ + if (!(port & 4) && (config.ym2413 & 1)) + { + fm_write(Z80.cycles, port, data); + return; + } + + z80_unused_port_w(port & 0xFF, data); + return; + } + } +} + +unsigned char z80_m3_port_r(unsigned int port) +{ + switch (port & 0xC1) + { + case 0x00: + case 0x01: + { + return z80_unused_port_r(port & 0xFF); + } + + case 0x40: + { + return ((vdp_hvc_r(Z80.cycles) >> 8) & 0xFF); + } + + case 0x41: + { + return (vdp_hvc_r(Z80.cycles) & 0xFF); + } + + case 0x80: + { + return vdp_z80_data_r(); + } + + case 0x81: + { + return vdp_z80_ctrl_r(Z80.cycles); + } + + default: + { + /* read FM chip if enabled */ + if (!(port & 4) && (config.ym2413 & 1)) + { + /* I/O ports are automatically disabled by hardware */ + return fm_read(Z80.cycles, port); + } + + /* read I/O ports */ + return io_z80_read(port & 1); + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* SG-1000 port handlers */ +/*--------------------------------------------------------------------------*/ + +void z80_sg_port_w(unsigned int port, unsigned char data) +{ + switch(port & 0xC1) + { + case 0x40: + case 0x41: + { + psg_write(Z80.cycles, data); + + /* Z80 !WAIT input is tied to SN76489AN chip READY pin (held low for 32 clocks after each write access) */ + Z80.cycles += (32 * 15); + return; + } + + case 0x80: + { + vdp_z80_data_w(data); + return; + } + + case 0x81: + { + vdp_tms_ctrl_w(data); + return; + } + + default: + { + z80_unused_port_w(port & 0xFF, data); + return; + } + } +} + +unsigned char z80_sg_port_r(unsigned int port) +{ + switch (port & 0xC1) + { + case 0x80: + { + return vdp_z80_data_r(); + } + + case 0x81: + { + return vdp_z80_ctrl_r(Z80.cycles); + } + + case 0xC0: + case 0xC1: + { + return io_z80_read(port & 1); + } + + default: + { + return z80_unused_port_r(port & 0xFF); + } + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/memz80.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/memz80.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/memz80.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/memz80.h index 8dcb2f8302..c3891a22bf 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/memz80.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/memz80.h @@ -1,60 +1,60 @@ -/*************************************************************************************** - * Genesis Plus - * Z80 bus handlers (Genesis & Master System modes) - * - * Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _MEMZ80_H_ -#define _MEMZ80_H_ - -extern unsigned char z80_memory_r(unsigned int address); -extern void z80_memory_w(unsigned int address, unsigned char data); -extern unsigned char z80_unused_port_r(unsigned int port); -extern void z80_unused_port_w(unsigned int port, unsigned char data); -extern unsigned char z80_md_port_r(unsigned int port); -extern void z80_md_port_w(unsigned int port, unsigned char data); -extern unsigned char z80_gg_port_r(unsigned int port); -extern void z80_gg_port_w(unsigned int port, unsigned char data); -extern unsigned char z80_ms_port_r(unsigned int port); -extern void z80_ms_port_w(unsigned int port, unsigned char data); -extern unsigned char z80_m3_port_r(unsigned int port); -extern void z80_m3_port_w(unsigned int port, unsigned char data); -extern unsigned char z80_sg_port_r(unsigned int port); -extern void z80_sg_port_w(unsigned int port, unsigned char data); - -#endif /* _MEMZ80_H_ */ +/*************************************************************************************** + * Genesis Plus + * Z80 bus handlers (Genesis & Master System modes) + * + * Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _MEMZ80_H_ +#define _MEMZ80_H_ + +extern unsigned char z80_memory_r(unsigned int address); +extern void z80_memory_w(unsigned int address, unsigned char data); +extern unsigned char z80_unused_port_r(unsigned int port); +extern void z80_unused_port_w(unsigned int port, unsigned char data); +extern unsigned char z80_md_port_r(unsigned int port); +extern void z80_md_port_w(unsigned int port, unsigned char data); +extern unsigned char z80_gg_port_r(unsigned int port); +extern void z80_gg_port_w(unsigned int port, unsigned char data); +extern unsigned char z80_ms_port_r(unsigned int port); +extern void z80_ms_port_w(unsigned int port, unsigned char data); +extern unsigned char z80_m3_port_r(unsigned int port); +extern void z80_m3_port_w(unsigned int port, unsigned char data); +extern unsigned char z80_sg_port_r(unsigned int port); +extern void z80_sg_port_w(unsigned int port, unsigned char data); + +#endif /* _MEMZ80_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/changes.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/changes.txt similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/changes.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/changes.txt index 7fd8b4f985..1fea70c9e0 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/changes.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/changes.txt @@ -1,96 +1,96 @@ -sms_ntsc Change Log -------------------- - -sms_ntsc 0.2.3 --------------- -- Moved configuration options to sms_ntsc_config.h, making it easier to -manage - -- Greatly clarified and improved demo to read any uncompressed BMP image -and write filtered image when done - -- Improved gamma to be properly applied to each RGB channel, and changed -default to compensate for difference between PC monitor and TV gamma - -- Improved contrast to be properly applied to each RGB channel rather -than just luma - -- Improved floating point calculations in library to be more stable and -not need double precision, which was causing problems with the sharpness -control on Windows when the DirectX libraries changed the FPU to single -precision mode - -- Added extern "C" to header, allowing use in C++ without having to -rename the source file - -- Made internal changes to factor out code common from all my NTSC -filter libraries, greatly simplifying things for me - - -sms_ntsc 0.2.2 --------------- -- Changed sms_ntsc_blit() again, this time to always take a pixel count -for input pitch (since the type is known) and a byte count for the -output pitch (since it can output at multiple depths now). I think I've -got the right interface this time. :) - -- Improved default blitter to have selectable input and output pixel -formats - -- Added parameters for resolution, color bleed, and artifacts - -- Added presets for composite video, S-video, RGB, and monochrome - -- Added SMS_NTSC_OUT_WIDTH() and SMS_NTSC_IN_WIDTH() for calculating -input/output widths - -- Improved demo with more controls and interpolation and darkening of -scanlines rather than duplicating them - -- Improved documentation - -- Interface changes: sms_ntsc_blit() takes output pitch in bytes again. -Sorry for the multiple changes; I think I got it right this time. :) - -- Removed: SMS_NTSC_CALC_WIDTH (use SMS_NTSC_OUT_WIDTH) - - -sms_ntsc 0.2.1 --------------- -- Added parameters for color fringing and edge artifacts - - -sms_ntsc 0.2.0 --------------- -- Changed sms_ntsc_blit() to take pixel counts instead of byte counts -for in_pitch and out_pitch, making it simpler to use. This requires that -current code be updated. - -- Significantly improved NTSC signal processing to give clearer image -and better sharpness control - -- Reduced scrolling shimmer and color artifacts to be closer to what -console generates - -- Added gamma curve parameter to allow better matching of darker colors -on a TV - -- Added ability to generate matching RGB palette for use in a normal -blitter - - -sms_ntsc 0.1.1 --------------- -- Changed sms_ntsc_blit() to accept 12-bit BGR pixels instead of palette -indicies and a separate palette. - -- Improved sms_ntsc_blit() to accept any input width, allowing all the -different screen widths to be handled without complication. Use -SMS_NTSC_CALC_WIDTH() to find the output width for a given input width. - -- Added toggling of left 8 column display to demo - - -sms_ntsc 0.1.0 --------------- -- First version +sms_ntsc Change Log +------------------- + +sms_ntsc 0.2.3 +-------------- +- Moved configuration options to sms_ntsc_config.h, making it easier to +manage + +- Greatly clarified and improved demo to read any uncompressed BMP image +and write filtered image when done + +- Improved gamma to be properly applied to each RGB channel, and changed +default to compensate for difference between PC monitor and TV gamma + +- Improved contrast to be properly applied to each RGB channel rather +than just luma + +- Improved floating point calculations in library to be more stable and +not need double precision, which was causing problems with the sharpness +control on Windows when the DirectX libraries changed the FPU to single +precision mode + +- Added extern "C" to header, allowing use in C++ without having to +rename the source file + +- Made internal changes to factor out code common from all my NTSC +filter libraries, greatly simplifying things for me + + +sms_ntsc 0.2.2 +-------------- +- Changed sms_ntsc_blit() again, this time to always take a pixel count +for input pitch (since the type is known) and a byte count for the +output pitch (since it can output at multiple depths now). I think I've +got the right interface this time. :) + +- Improved default blitter to have selectable input and output pixel +formats + +- Added parameters for resolution, color bleed, and artifacts + +- Added presets for composite video, S-video, RGB, and monochrome + +- Added SMS_NTSC_OUT_WIDTH() and SMS_NTSC_IN_WIDTH() for calculating +input/output widths + +- Improved demo with more controls and interpolation and darkening of +scanlines rather than duplicating them + +- Improved documentation + +- Interface changes: sms_ntsc_blit() takes output pitch in bytes again. +Sorry for the multiple changes; I think I got it right this time. :) + +- Removed: SMS_NTSC_CALC_WIDTH (use SMS_NTSC_OUT_WIDTH) + + +sms_ntsc 0.2.1 +-------------- +- Added parameters for color fringing and edge artifacts + + +sms_ntsc 0.2.0 +-------------- +- Changed sms_ntsc_blit() to take pixel counts instead of byte counts +for in_pitch and out_pitch, making it simpler to use. This requires that +current code be updated. + +- Significantly improved NTSC signal processing to give clearer image +and better sharpness control + +- Reduced scrolling shimmer and color artifacts to be closer to what +console generates + +- Added gamma curve parameter to allow better matching of darker colors +on a TV + +- Added ability to generate matching RGB palette for use in a normal +blitter + + +sms_ntsc 0.1.1 +-------------- +- Changed sms_ntsc_blit() to accept 12-bit BGR pixels instead of palette +indicies and a separate palette. + +- Improved sms_ntsc_blit() to accept any input width, allowing all the +different screen widths to be handled without complication. Use +SMS_NTSC_CALC_WIDTH() to find the output width for a given input width. + +- Added toggling of left 8 column display to demo + + +sms_ntsc 0.1.0 +-------------- +- First version diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/license.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/license.txt similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/license.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/license.txt index 5faba9d48c..5ab7695ab8 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/license.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/license.txt @@ -1,504 +1,504 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc.c index 3859cfd58b..d82961ca82 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc.c @@ -1,143 +1,143 @@ -/* md_ntsc 0.1.2. http://www.slack.net/~ant/ */ - -/* Modified for use with Genesis Plus GX -- EkeEke */ - -#include "shared.h" -#include "md_ntsc.h" - -/* Copyright (C) 2006 Shay Green. This module is free software; you -can redistribute it and/or modify it under the terms of the GNU Lesser -General Public License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. This -module is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -details. You should have received a copy of the GNU Lesser General Public -License along with this module; if not, write to the Free Software Foundation, -Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - -md_ntsc_setup_t const md_ntsc_monochrome = { 0,-1, 0, 0,.2, 0, 0,-.2,-.2,-1, 0, 0 }; -md_ntsc_setup_t const md_ntsc_composite = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -md_ntsc_setup_t const md_ntsc_svideo = { 0, 0, 0, 0, 0, 0,.2, -1, -1, 0, 0, 0 }; -md_ntsc_setup_t const md_ntsc_rgb = { 0, 0, 0, 0,.2, 0,.7, -1, -1,-1, 0, 0 }; - -#define alignment_count 2 -#define burst_count 1 -#define rescale_in 1 -#define rescale_out 1 - -#define artifacts_mid 0.40f -#define fringing_mid 0.30f -#define std_decoder_hue 0 - -#define gamma_size 8 -#define artifacts_max 1.00f -#define LUMA_CUTOFF 0.1974 - -#include "md_ntsc_impl.h" - -/* 2 input pixels -> 4 composite samples */ -pixel_info_t const md_ntsc_pixels [alignment_count] = { - { PIXEL_OFFSET( -4, -9 ), { 0.1f, 0.9f, 0.9f, 0.1f } }, - { PIXEL_OFFSET( -2, -7 ), { 0.1f, 0.9f, 0.9f, 0.1f } }, -}; - -static void correct_errors( md_ntsc_rgb_t color, md_ntsc_rgb_t* out ) -{ - unsigned i; - for ( i = 0; i < rgb_kernel_size / 4; i++ ) - { - md_ntsc_rgb_t error = color - - out [i ] - out [i + 2 +16] - out [i + 4 ] - out [i + 6 +16] - - out [i + 8] - out [(i+10)%16+16] - out [(i+12)%16] - out [(i+14)%16+16]; - CORRECT_ERROR( i + 6 + 16 ); - /*DISTRIBUTE_ERROR( 2+16, 4, 6+16 );*/ - } -} - -void md_ntsc_init( md_ntsc_t* ntsc, md_ntsc_setup_t const* setup ) -{ - int entry; - init_t impl; - if ( !setup ) - setup = &md_ntsc_composite; - init( &impl, setup ); - - for ( entry = 0; entry < md_ntsc_palette_size; entry++ ) - { - float bb = impl.to_float [entry >> 6 & 7]; - float gg = impl.to_float [entry >> 3 & 7]; - float rr = impl.to_float [entry & 7]; - - float y, i, q = RGB_TO_YIQ( rr, gg, bb, y, i ); - - int r, g, b = YIQ_TO_RGB( y, i, q, impl.to_rgb, int, r, g ); - md_ntsc_rgb_t rgb = PACK_RGB( r, g, b ); - - if ( setup->palette_out ) - RGB_PALETTE_OUT( rgb, &setup->palette_out [entry * 3] ); - - if ( ntsc ) - { - gen_kernel( &impl, y, i, q, ntsc->table [entry] ); - correct_errors( rgb, ntsc->table [entry] ); - } - } -} - -#ifndef CUSTOM_BLITTER -void md_ntsc_blit( md_ntsc_t const* ntsc, MD_NTSC_IN_T const* table, unsigned char* input, - int in_width, int vline) -{ - int const chunk_count = in_width / md_ntsc_in_chunk - 1; - - /* use palette entry 0 for unused pixels */ - MD_NTSC_IN_T border = table[0]; - - MD_NTSC_BEGIN_ROW( ntsc, border, - MD_NTSC_ADJ_IN( table[*input++] ), - MD_NTSC_ADJ_IN( table[*input++] ), - MD_NTSC_ADJ_IN( table[*input++] ) ); - - md_ntsc_out_t* restrict line_out = (md_ntsc_out_t*)(&bitmap.data[(vline * bitmap.pitch)]); - - int n; - - for ( n = chunk_count; n; --n ) - { - /* order of input and output pixels must not be altered */ - MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 0, *line_out++ ); - MD_NTSC_RGB_OUT( 1, *line_out++ ); - - MD_NTSC_COLOR_IN( 1, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 2, *line_out++ ); - MD_NTSC_RGB_OUT( 3, *line_out++ ); - - MD_NTSC_COLOR_IN( 2, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 4, *line_out++ ); - MD_NTSC_RGB_OUT( 5, *line_out++ ); - - MD_NTSC_COLOR_IN( 3, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 6, *line_out++ ); - MD_NTSC_RGB_OUT( 7, *line_out++ ); - } - - /* finish final pixels */ - MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); - MD_NTSC_RGB_OUT( 0, *line_out++ ); - MD_NTSC_RGB_OUT( 1, *line_out++ ); - - MD_NTSC_COLOR_IN( 1, ntsc, border ); - MD_NTSC_RGB_OUT( 2, *line_out++ ); - MD_NTSC_RGB_OUT( 3, *line_out++ ); - - MD_NTSC_COLOR_IN( 2, ntsc, border ); - MD_NTSC_RGB_OUT( 4, *line_out++ ); - MD_NTSC_RGB_OUT( 5, *line_out++ ); - - MD_NTSC_COLOR_IN( 3, ntsc, border ); - MD_NTSC_RGB_OUT( 6, *line_out++ ); - MD_NTSC_RGB_OUT( 7, *line_out++ ); -} -#endif +/* md_ntsc 0.1.2. http://www.slack.net/~ant/ */ + +/* Modified for use with Genesis Plus GX -- EkeEke */ + +#include "shared.h" +#include "md_ntsc.h" + +/* Copyright (C) 2006 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. You should have received a copy of the GNU Lesser General Public +License along with this module; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +md_ntsc_setup_t const md_ntsc_monochrome = { 0,-1, 0, 0,.2, 0, 0,-.2,-.2,-1, 0, 0 }; +md_ntsc_setup_t const md_ntsc_composite = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +md_ntsc_setup_t const md_ntsc_svideo = { 0, 0, 0, 0, 0, 0,.2, -1, -1, 0, 0, 0 }; +md_ntsc_setup_t const md_ntsc_rgb = { 0, 0, 0, 0,.2, 0,.7, -1, -1,-1, 0, 0 }; + +#define alignment_count 2 +#define burst_count 1 +#define rescale_in 1 +#define rescale_out 1 + +#define artifacts_mid 0.40f +#define fringing_mid 0.30f +#define std_decoder_hue 0 + +#define gamma_size 8 +#define artifacts_max 1.00f +#define LUMA_CUTOFF 0.1974 + +#include "md_ntsc_impl.h" + +/* 2 input pixels -> 4 composite samples */ +pixel_info_t const md_ntsc_pixels [alignment_count] = { + { PIXEL_OFFSET( -4, -9 ), { 0.1f, 0.9f, 0.9f, 0.1f } }, + { PIXEL_OFFSET( -2, -7 ), { 0.1f, 0.9f, 0.9f, 0.1f } }, +}; + +static void correct_errors( md_ntsc_rgb_t color, md_ntsc_rgb_t* out ) +{ + unsigned i; + for ( i = 0; i < rgb_kernel_size / 4; i++ ) + { + md_ntsc_rgb_t error = color - + out [i ] - out [i + 2 +16] - out [i + 4 ] - out [i + 6 +16] - + out [i + 8] - out [(i+10)%16+16] - out [(i+12)%16] - out [(i+14)%16+16]; + CORRECT_ERROR( i + 6 + 16 ); + /*DISTRIBUTE_ERROR( 2+16, 4, 6+16 );*/ + } +} + +void md_ntsc_init( md_ntsc_t* ntsc, md_ntsc_setup_t const* setup ) +{ + int entry; + init_t impl; + if ( !setup ) + setup = &md_ntsc_composite; + init( &impl, setup ); + + for ( entry = 0; entry < md_ntsc_palette_size; entry++ ) + { + float bb = impl.to_float [entry >> 6 & 7]; + float gg = impl.to_float [entry >> 3 & 7]; + float rr = impl.to_float [entry & 7]; + + float y, i, q = RGB_TO_YIQ( rr, gg, bb, y, i ); + + int r, g, b = YIQ_TO_RGB( y, i, q, impl.to_rgb, int, r, g ); + md_ntsc_rgb_t rgb = PACK_RGB( r, g, b ); + + if ( setup->palette_out ) + RGB_PALETTE_OUT( rgb, &setup->palette_out [entry * 3] ); + + if ( ntsc ) + { + gen_kernel( &impl, y, i, q, ntsc->table [entry] ); + correct_errors( rgb, ntsc->table [entry] ); + } + } +} + +#ifndef CUSTOM_BLITTER +void md_ntsc_blit( md_ntsc_t const* ntsc, MD_NTSC_IN_T const* table, unsigned char* input, + int in_width, int vline) +{ + int const chunk_count = in_width / md_ntsc_in_chunk - 1; + + /* use palette entry 0 for unused pixels */ + MD_NTSC_IN_T border = table[0]; + + MD_NTSC_BEGIN_ROW( ntsc, border, + MD_NTSC_ADJ_IN( table[*input++] ), + MD_NTSC_ADJ_IN( table[*input++] ), + MD_NTSC_ADJ_IN( table[*input++] ) ); + + md_ntsc_out_t* restrict line_out = (md_ntsc_out_t*)(&bitmap.data[(vline * bitmap.pitch)]); + + int n; + + for ( n = chunk_count; n; --n ) + { + /* order of input and output pixels must not be altered */ + MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 0, *line_out++ ); + MD_NTSC_RGB_OUT( 1, *line_out++ ); + + MD_NTSC_COLOR_IN( 1, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 2, *line_out++ ); + MD_NTSC_RGB_OUT( 3, *line_out++ ); + + MD_NTSC_COLOR_IN( 2, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 4, *line_out++ ); + MD_NTSC_RGB_OUT( 5, *line_out++ ); + + MD_NTSC_COLOR_IN( 3, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 6, *line_out++ ); + MD_NTSC_RGB_OUT( 7, *line_out++ ); + } + + /* finish final pixels */ + MD_NTSC_COLOR_IN( 0, ntsc, MD_NTSC_ADJ_IN( table[*input++] ) ); + MD_NTSC_RGB_OUT( 0, *line_out++ ); + MD_NTSC_RGB_OUT( 1, *line_out++ ); + + MD_NTSC_COLOR_IN( 1, ntsc, border ); + MD_NTSC_RGB_OUT( 2, *line_out++ ); + MD_NTSC_RGB_OUT( 3, *line_out++ ); + + MD_NTSC_COLOR_IN( 2, ntsc, border ); + MD_NTSC_RGB_OUT( 4, *line_out++ ); + MD_NTSC_RGB_OUT( 5, *line_out++ ); + + MD_NTSC_COLOR_IN( 3, ntsc, border ); + MD_NTSC_RGB_OUT( 6, *line_out++ ); + MD_NTSC_RGB_OUT( 7, *line_out++ ); +} +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc.h index d2c6350728..6cbbba1c05 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc.h @@ -1,154 +1,154 @@ -/* Sega Genesis/Mega Drive NTSC video filter */ - -/* md_ntsc 0.1.2 */ -#ifndef MD_NTSC_H -#define MD_NTSC_H - -#include "md_ntsc_config.h" - -#ifdef __cplusplus - extern "C" { -#endif - -/* Image parameters, ranging from -1.0 to 1.0. Actual internal values shown -in parenthesis and should remain fairly stable in future versions. */ -typedef struct md_ntsc_setup_t -{ - /* Basic parameters */ - double hue; /* -1 = -180 degrees +1 = +180 degrees */ - double saturation; /* -1 = grayscale (0.0) +1 = oversaturated colors (2.0) */ - double contrast; /* -1 = dark (0.5) +1 = light (1.5) */ - double brightness; /* -1 = dark (0.5) +1 = light (1.5) */ - double sharpness; /* edge contrast enhancement/blurring */ - - /* Advanced parameters */ - double gamma; /* -1 = dark (1.5) +1 = light (0.5) */ - double resolution; /* image resolution */ - double artifacts; /* artifacts caused by color changes */ - double fringing; /* color artifacts caused by brightness changes */ - double bleed; /* color bleed (color resolution reduction) */ - float const* decoder_matrix; /* optional RGB decoder matrix, 6 elements */ - - unsigned char* palette_out; /* optional RGB palette out, 3 bytes per color */ -} md_ntsc_setup_t; - -/* Video format presets */ -extern md_ntsc_setup_t const md_ntsc_composite; /* color bleeding + artifacts */ -extern md_ntsc_setup_t const md_ntsc_svideo; /* color bleeding only */ -extern md_ntsc_setup_t const md_ntsc_rgb; /* crisp image */ -extern md_ntsc_setup_t const md_ntsc_monochrome;/* desaturated + artifacts */ - -enum { md_ntsc_palette_size = 512 }; - -/* Initializes and adjusts parameters. Can be called multiple times on the same -md_ntsc_t object. Can pass NULL for either parameter. */ -typedef struct md_ntsc_t md_ntsc_t; -void md_ntsc_init( md_ntsc_t* ntsc, md_ntsc_setup_t const* setup ); - -/* Filters one row of pixels. Input pixel format is set by MD_NTSC_IN_FORMAT -and output RGB depth is set by MD_NTSC_OUT_DEPTH. Both default to 16-bit RGB. -In_row_width is the number of pixels to get to the next input row. */ -void md_ntsc_blit( md_ntsc_t const* ntsc, MD_NTSC_IN_T const* table, unsigned char* input, - int in_width, int vline); - -/* Number of output pixels written by blitter for given input width. */ -#define MD_NTSC_OUT_WIDTH( in_width ) \ - (((in_width) - 3) / md_ntsc_in_chunk * md_ntsc_out_chunk + md_ntsc_out_chunk) - -/* Number of input pixels that will fit within given output width. Might be -rounded down slightly; use MD_NTSC_OUT_WIDTH() on result to find rounded -value. */ -#define MD_NTSC_IN_WIDTH( out_width ) \ - ((out_width) / md_ntsc_out_chunk * md_ntsc_in_chunk - md_ntsc_in_chunk + 3) - - -/* Interface for user-defined custom blitters */ - -enum { md_ntsc_in_chunk = 4 }; /* number of input pixels read per chunk */ -enum { md_ntsc_out_chunk = 8 }; /* number of output pixels generated per chunk */ -enum { md_ntsc_black = 0 }; /* palette index for black */ - -/* Begin outputting row and start three pixels. First pixel will be cut off a bit. -Declares variables, so must be before first statement in a block (unless you're using C++). */ -#define MD_NTSC_BEGIN_ROW( ntsc, pixel0, pixel1, pixel2, pixel3 ) \ - md_ntsc_rgb_t raw_;\ - unsigned const md_pixel0_ = (pixel0);\ - md_ntsc_rgb_t const* kernel0 = MD_NTSC_IN_FORMAT( ntsc, md_pixel0_ );\ - unsigned const md_pixel1_ = (pixel1);\ - md_ntsc_rgb_t const* kernel1 = MD_NTSC_IN_FORMAT( ntsc, md_pixel1_ );\ - unsigned const md_pixel2_ = (pixel2);\ - md_ntsc_rgb_t const* kernel2 = MD_NTSC_IN_FORMAT( ntsc, md_pixel2_ );\ - unsigned const md_pixel3_ = (pixel3);\ - md_ntsc_rgb_t const* kernel3 = MD_NTSC_IN_FORMAT( ntsc, md_pixel3_ );\ - md_ntsc_rgb_t const* kernelx0;\ - md_ntsc_rgb_t const* kernelx1 = kernel0;\ - md_ntsc_rgb_t const* kernelx2 = kernel0;\ - md_ntsc_rgb_t const* kernelx3 = kernel0 - -/* Begin input pixel */ -#define MD_NTSC_COLOR_IN( index, ntsc, color ) \ - MD_NTSC_COLOR_IN_( index, color, MD_NTSC_IN_FORMAT, ntsc ) - -/* Generate output pixel */ -#define MD_NTSC_RGB_OUT( x, rgb_out ) {\ - raw_ =\ - kernel0 [x+ 0] + kernel1 [(x+6)%8+16] + kernel2 [(x+4)%8 ] + kernel3 [(x+2)%8+16] +\ - kernelx0 [x+ 8] + kernelx1 [(x+6)%8+24] + kernelx2 [(x+4)%8+8] + kernelx3 [(x+2)%8+24];\ - MD_NTSC_CLAMP_( raw_, 0 );\ - MD_NTSC_RGB_OUT_( rgb_out, 0 );\ -} - - -/* private */ -enum { md_ntsc_entry_size = 2 * 16 }; -typedef unsigned long md_ntsc_rgb_t; -struct md_ntsc_t { - md_ntsc_rgb_t table [md_ntsc_palette_size] [md_ntsc_entry_size]; -}; - -#define MD_NTSC_BGR9( ntsc, n ) (ntsc)->table [n & 0x1FF] - -#define MD_NTSC_RGB16( ntsc, n ) \ - (md_ntsc_rgb_t*) ((char*) (ntsc)->table +\ - ((n << 9 & 0x3800) | (n & 0x0700) | (n >> 8 & 0x00E0)) *\ - (md_ntsc_entry_size * sizeof (md_ntsc_rgb_t) / 32)) - -#define MD_NTSC_RGB15( ntsc, n ) \ - (md_ntsc_rgb_t*) ((char*) (ntsc)->table +\ - ((n << 8 & 0x1C00) | (n & 0x0380) | (n >> 8 & 0x0070)) *\ - (md_ntsc_entry_size * sizeof (md_ntsc_rgb_t) / 16)) - -/* common ntsc macros */ -#define md_ntsc_rgb_builder ((1L << 21) | (1 << 11) | (1 << 1)) -#define md_ntsc_clamp_mask (md_ntsc_rgb_builder * 3 / 2) -#define md_ntsc_clamp_add (md_ntsc_rgb_builder * 0x101) -#define MD_NTSC_CLAMP_( io, shift ) {\ - md_ntsc_rgb_t sub = (io) >> (9-(shift)) & md_ntsc_clamp_mask;\ - md_ntsc_rgb_t clamp = md_ntsc_clamp_add - sub;\ - io |= clamp;\ - clamp -= sub;\ - io &= clamp;\ -} - -#define MD_NTSC_COLOR_IN_( index, color, ENTRY, table ) {\ - unsigned color_;\ - kernelx##index = kernel##index;\ - kernel##index = (color_ = (color), ENTRY( table, color_ ));\ -} - -/* x is always zero except in snes_ntsc library */ -#if MD_NTSC_OUT_DEPTH == 15 -#define MD_NTSC_RGB_OUT_( rgb_out, x ) {\ - rgb_out = (raw_>>(14-x)& 0x7C00)|(raw_>>(9-x)&0x03E0)|(raw_>>(4-x)&0x001F);\ - } -#elif MD_NTSC_OUT_DEPTH == 16 -#define MD_NTSC_RGB_OUT_( rgb_out, x ) {\ - rgb_out = (raw_>>(13-x)& 0xF800)|(raw_>>(8-x)&0x07E0)|(raw_>>(4-x)&0x001F);\ - } -#endif - -#ifdef __cplusplus -} -#endif - -#endif +/* Sega Genesis/Mega Drive NTSC video filter */ + +/* md_ntsc 0.1.2 */ +#ifndef MD_NTSC_H +#define MD_NTSC_H + +#include "md_ntsc_config.h" + +#ifdef __cplusplus + extern "C" { +#endif + +/* Image parameters, ranging from -1.0 to 1.0. Actual internal values shown +in parenthesis and should remain fairly stable in future versions. */ +typedef struct md_ntsc_setup_t +{ + /* Basic parameters */ + double hue; /* -1 = -180 degrees +1 = +180 degrees */ + double saturation; /* -1 = grayscale (0.0) +1 = oversaturated colors (2.0) */ + double contrast; /* -1 = dark (0.5) +1 = light (1.5) */ + double brightness; /* -1 = dark (0.5) +1 = light (1.5) */ + double sharpness; /* edge contrast enhancement/blurring */ + + /* Advanced parameters */ + double gamma; /* -1 = dark (1.5) +1 = light (0.5) */ + double resolution; /* image resolution */ + double artifacts; /* artifacts caused by color changes */ + double fringing; /* color artifacts caused by brightness changes */ + double bleed; /* color bleed (color resolution reduction) */ + float const* decoder_matrix; /* optional RGB decoder matrix, 6 elements */ + + unsigned char* palette_out; /* optional RGB palette out, 3 bytes per color */ +} md_ntsc_setup_t; + +/* Video format presets */ +extern md_ntsc_setup_t const md_ntsc_composite; /* color bleeding + artifacts */ +extern md_ntsc_setup_t const md_ntsc_svideo; /* color bleeding only */ +extern md_ntsc_setup_t const md_ntsc_rgb; /* crisp image */ +extern md_ntsc_setup_t const md_ntsc_monochrome;/* desaturated + artifacts */ + +enum { md_ntsc_palette_size = 512 }; + +/* Initializes and adjusts parameters. Can be called multiple times on the same +md_ntsc_t object. Can pass NULL for either parameter. */ +typedef struct md_ntsc_t md_ntsc_t; +void md_ntsc_init( md_ntsc_t* ntsc, md_ntsc_setup_t const* setup ); + +/* Filters one row of pixels. Input pixel format is set by MD_NTSC_IN_FORMAT +and output RGB depth is set by MD_NTSC_OUT_DEPTH. Both default to 16-bit RGB. +In_row_width is the number of pixels to get to the next input row. */ +void md_ntsc_blit( md_ntsc_t const* ntsc, MD_NTSC_IN_T const* table, unsigned char* input, + int in_width, int vline); + +/* Number of output pixels written by blitter for given input width. */ +#define MD_NTSC_OUT_WIDTH( in_width ) \ + (((in_width) - 3) / md_ntsc_in_chunk * md_ntsc_out_chunk + md_ntsc_out_chunk) + +/* Number of input pixels that will fit within given output width. Might be +rounded down slightly; use MD_NTSC_OUT_WIDTH() on result to find rounded +value. */ +#define MD_NTSC_IN_WIDTH( out_width ) \ + ((out_width) / md_ntsc_out_chunk * md_ntsc_in_chunk - md_ntsc_in_chunk + 3) + + +/* Interface for user-defined custom blitters */ + +enum { md_ntsc_in_chunk = 4 }; /* number of input pixels read per chunk */ +enum { md_ntsc_out_chunk = 8 }; /* number of output pixels generated per chunk */ +enum { md_ntsc_black = 0 }; /* palette index for black */ + +/* Begin outputting row and start three pixels. First pixel will be cut off a bit. +Declares variables, so must be before first statement in a block (unless you're using C++). */ +#define MD_NTSC_BEGIN_ROW( ntsc, pixel0, pixel1, pixel2, pixel3 ) \ + md_ntsc_rgb_t raw_;\ + unsigned const md_pixel0_ = (pixel0);\ + md_ntsc_rgb_t const* kernel0 = MD_NTSC_IN_FORMAT( ntsc, md_pixel0_ );\ + unsigned const md_pixel1_ = (pixel1);\ + md_ntsc_rgb_t const* kernel1 = MD_NTSC_IN_FORMAT( ntsc, md_pixel1_ );\ + unsigned const md_pixel2_ = (pixel2);\ + md_ntsc_rgb_t const* kernel2 = MD_NTSC_IN_FORMAT( ntsc, md_pixel2_ );\ + unsigned const md_pixel3_ = (pixel3);\ + md_ntsc_rgb_t const* kernel3 = MD_NTSC_IN_FORMAT( ntsc, md_pixel3_ );\ + md_ntsc_rgb_t const* kernelx0;\ + md_ntsc_rgb_t const* kernelx1 = kernel0;\ + md_ntsc_rgb_t const* kernelx2 = kernel0;\ + md_ntsc_rgb_t const* kernelx3 = kernel0 + +/* Begin input pixel */ +#define MD_NTSC_COLOR_IN( index, ntsc, color ) \ + MD_NTSC_COLOR_IN_( index, color, MD_NTSC_IN_FORMAT, ntsc ) + +/* Generate output pixel */ +#define MD_NTSC_RGB_OUT( x, rgb_out ) {\ + raw_ =\ + kernel0 [x+ 0] + kernel1 [(x+6)%8+16] + kernel2 [(x+4)%8 ] + kernel3 [(x+2)%8+16] +\ + kernelx0 [x+ 8] + kernelx1 [(x+6)%8+24] + kernelx2 [(x+4)%8+8] + kernelx3 [(x+2)%8+24];\ + MD_NTSC_CLAMP_( raw_, 0 );\ + MD_NTSC_RGB_OUT_( rgb_out, 0 );\ +} + + +/* private */ +enum { md_ntsc_entry_size = 2 * 16 }; +typedef unsigned long md_ntsc_rgb_t; +struct md_ntsc_t { + md_ntsc_rgb_t table [md_ntsc_palette_size] [md_ntsc_entry_size]; +}; + +#define MD_NTSC_BGR9( ntsc, n ) (ntsc)->table [n & 0x1FF] + +#define MD_NTSC_RGB16( ntsc, n ) \ + (md_ntsc_rgb_t*) ((char*) (ntsc)->table +\ + ((n << 9 & 0x3800) | (n & 0x0700) | (n >> 8 & 0x00E0)) *\ + (md_ntsc_entry_size * sizeof (md_ntsc_rgb_t) / 32)) + +#define MD_NTSC_RGB15( ntsc, n ) \ + (md_ntsc_rgb_t*) ((char*) (ntsc)->table +\ + ((n << 8 & 0x1C00) | (n & 0x0380) | (n >> 8 & 0x0070)) *\ + (md_ntsc_entry_size * sizeof (md_ntsc_rgb_t) / 16)) + +/* common ntsc macros */ +#define md_ntsc_rgb_builder ((1L << 21) | (1 << 11) | (1 << 1)) +#define md_ntsc_clamp_mask (md_ntsc_rgb_builder * 3 / 2) +#define md_ntsc_clamp_add (md_ntsc_rgb_builder * 0x101) +#define MD_NTSC_CLAMP_( io, shift ) {\ + md_ntsc_rgb_t sub = (io) >> (9-(shift)) & md_ntsc_clamp_mask;\ + md_ntsc_rgb_t clamp = md_ntsc_clamp_add - sub;\ + io |= clamp;\ + clamp -= sub;\ + io &= clamp;\ +} + +#define MD_NTSC_COLOR_IN_( index, color, ENTRY, table ) {\ + unsigned color_;\ + kernelx##index = kernel##index;\ + kernel##index = (color_ = (color), ENTRY( table, color_ ));\ +} + +/* x is always zero except in snes_ntsc library */ +#if MD_NTSC_OUT_DEPTH == 15 +#define MD_NTSC_RGB_OUT_( rgb_out, x ) {\ + rgb_out = (raw_>>(14-x)& 0x7C00)|(raw_>>(9-x)&0x03E0)|(raw_>>(4-x)&0x001F);\ + } +#elif MD_NTSC_OUT_DEPTH == 16 +#define MD_NTSC_RGB_OUT_( rgb_out, x ) {\ + rgb_out = (raw_>>(13-x)& 0xF800)|(raw_>>(8-x)&0x07E0)|(raw_>>(4-x)&0x001F);\ + } +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc_config.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc_config.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc_config.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc_config.h index 8864dde3f5..750b65a6bf 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc_config.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc_config.h @@ -1,31 +1,31 @@ -/* Configure library by modifying this file */ - -#ifndef MD_NTSC_CONFIG_H -#define MD_NTSC_CONFIG_H - -/* Format of source & output pixels (RGB555 or RGB565 only)*/ -#ifdef USE_15BPP_RENDERING -#define MD_NTSC_IN_FORMAT MD_NTSC_RGB15 -#define MD_NTSC_OUT_DEPTH 15 -#else -#define MD_NTSC_IN_FORMAT MD_NTSC_RGB16 -#define MD_NTSC_OUT_DEPTH 16 -#endif - -/* Original CRAM format (not used) */ -/* #define MD_NTSC_IN_FORMAT MD_NTSC_BGR9 */ - -/* The following affect the built-in blitter only; a custom blitter can -handle things however it wants. */ - -/* Type of input pixel values (fixed to 16-bit) */ -#define MD_NTSC_IN_T unsigned short - -/* Each raw pixel input value is passed through this. You might want to mask -the pixel index if you use the high bits as flags, etc. */ -#define MD_NTSC_ADJ_IN( in ) in - -/* For each pixel, this is the basic operation: -output_color = MD_NTSC_ADJ_IN( MD_NTSC_IN_T ) */ - -#endif +/* Configure library by modifying this file */ + +#ifndef MD_NTSC_CONFIG_H +#define MD_NTSC_CONFIG_H + +/* Format of source & output pixels (RGB555 or RGB565 only)*/ +#ifdef USE_15BPP_RENDERING +#define MD_NTSC_IN_FORMAT MD_NTSC_RGB15 +#define MD_NTSC_OUT_DEPTH 15 +#else +#define MD_NTSC_IN_FORMAT MD_NTSC_RGB16 +#define MD_NTSC_OUT_DEPTH 16 +#endif + +/* Original CRAM format (not used) */ +/* #define MD_NTSC_IN_FORMAT MD_NTSC_BGR9 */ + +/* The following affect the built-in blitter only; a custom blitter can +handle things however it wants. */ + +/* Type of input pixel values (fixed to 16-bit) */ +#define MD_NTSC_IN_T unsigned short + +/* Each raw pixel input value is passed through this. You might want to mask +the pixel index if you use the high bits as flags, etc. */ +#define MD_NTSC_ADJ_IN( in ) in + +/* For each pixel, this is the basic operation: +output_color = MD_NTSC_ADJ_IN( MD_NTSC_IN_T ) */ + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc_impl.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc_impl.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc_impl.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc_impl.h index 274fb81c1b..76f05a27e7 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/md_ntsc_impl.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/md_ntsc_impl.h @@ -1,439 +1,439 @@ -/* md_ntsc 0.1.2. http://www.slack.net/~ant/ */ - -/* Common implementation of NTSC filters */ - -#include -#include - -/* Copyright (C) 2006-2007 Shay Green. This module is free software; you -can redistribute it and/or modify it under the terms of the GNU Lesser -General Public License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. This -module is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -details. You should have received a copy of the GNU Lesser General Public -License along with this module; if not, write to the Free Software Foundation, -Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - -#define DISABLE_CORRECTION 0 - -#undef PI -#define PI 3.14159265358979323846f - -#ifndef LUMA_CUTOFF - #define LUMA_CUTOFF 0.20 -#endif -#ifndef gamma_size - #define gamma_size 1 -#endif -#ifndef rgb_bits - #define rgb_bits 8 -#endif -#ifndef artifacts_max - #define artifacts_max (artifacts_mid * 1.5f) -#endif -#ifndef fringing_max - #define fringing_max (fringing_mid * 2) -#endif -#ifndef STD_HUE_CONDITION - #define STD_HUE_CONDITION( setup ) 1 -#endif - -#define ext_decoder_hue (std_decoder_hue + 15) -#define rgb_unit (1 << rgb_bits) -#define rgb_offset (rgb_unit * 2 + 0.5f) - -enum { burst_size = md_ntsc_entry_size / burst_count }; -enum { kernel_half = 16 }; -enum { kernel_size = kernel_half * 2 + 1 }; - -typedef struct init_t -{ - float to_rgb [burst_count * 6]; - float to_float [gamma_size]; - float contrast; - float brightness; - float artifacts; - float fringing; - float kernel [rescale_out * kernel_size * 2]; -} init_t; - -#define ROTATE_IQ( i, q, sin_b, cos_b ) {\ - float t;\ - t = i * cos_b - q * sin_b;\ - q = i * sin_b + q * cos_b;\ - i = t;\ -} - -static void init_filters( init_t* impl, md_ntsc_setup_t const* setup ) -{ -#if rescale_out > 1 - float kernels [kernel_size * 2]; -#else - float* const kernels = impl->kernel; -#endif - - /* generate luma (y) filter using sinc kernel */ - { - /* sinc with rolloff (dsf) */ - float const rolloff = 1 + (float) setup->sharpness * (float) 0.032; - float const maxh = 32; - float const pow_a_n = (float) pow( rolloff, maxh ); - float sum; - int i; - /* quadratic mapping to reduce negative (blurring) range */ - float to_angle = (float) setup->resolution + 1; - to_angle = PI / maxh * (float) LUMA_CUTOFF * (to_angle * to_angle + 1); - - kernels [kernel_size * 3 / 2] = maxh; /* default center value */ - for ( i = 0; i < kernel_half * 2 + 1; i++ ) - { - int x = i - kernel_half; - float angle = x * to_angle; - /* instability occurs at center point with rolloff very close to 1.0 */ - if ( x || pow_a_n > (float) 1.056 || pow_a_n < (float) 0.981 ) - { - float rolloff_cos_a = rolloff * (float) cos( angle ); - float num = 1 - rolloff_cos_a - - pow_a_n * (float) cos( maxh * angle ) + - pow_a_n * rolloff * (float) cos( (maxh - 1) * angle ); - float den = 1 - rolloff_cos_a - rolloff_cos_a + rolloff * rolloff; - float dsf = num / den; - kernels [kernel_size * 3 / 2 - kernel_half + i] = dsf - (float) 0.5; - } - } - - /* apply blackman window and find sum */ - sum = 0; - for ( i = 0; i < kernel_half * 2 + 1; i++ ) - { - float x = PI * 2 / (kernel_half * 2) * i; - float blackman = 0.42f - 0.5f * (float) cos( x ) + 0.08f * (float) cos( x * 2 ); - sum += (kernels [kernel_size * 3 / 2 - kernel_half + i] *= blackman); - } - - /* normalize kernel */ - sum = 1.0f / sum; - for ( i = 0; i < kernel_half * 2 + 1; i++ ) - { - int x = kernel_size * 3 / 2 - kernel_half + i; - kernels [x] *= sum; - assert( kernels [x] == kernels [x] ); /* catch numerical instability */ - } - } - - /* generate chroma (iq) filter using gaussian kernel */ - { - float const cutoff_factor = -0.03125f; - float cutoff = (float) setup->bleed; - int i; - - if ( cutoff < 0 ) - { - /* keep extreme value accessible only near upper end of scale (1.0) */ - cutoff *= cutoff; - cutoff *= cutoff; - cutoff *= cutoff; - cutoff *= -30.0f / 0.65f; - } - cutoff = cutoff_factor - 0.65f * cutoff_factor * cutoff; - - for ( i = -kernel_half; i <= kernel_half; i++ ) - kernels [kernel_size / 2 + i] = (float) exp( i * i * cutoff ); - - /* normalize even and odd phases separately */ - for ( i = 0; i < 2; i++ ) - { - float sum = 0; - int x; - for ( x = i; x < kernel_size; x += 2 ) - sum += kernels [x]; - - sum = 1.0f / sum; - for ( x = i; x < kernel_size; x += 2 ) - { - kernels [x] *= sum; - assert( kernels [x] == kernels [x] ); /* catch numerical instability */ - } - } - } - - /* - printf( "luma:\n" ); - for ( i = kernel_size; i < kernel_size * 2; i++ ) - printf( "%f\n", kernels [i] ); - printf( "chroma:\n" ); - for ( i = 0; i < kernel_size; i++ ) - printf( "%f\n", kernels [i] ); - */ - - /* generate linear rescale kernels */ - #if rescale_out > 1 - { - float weight = 1.0f; - float* out = impl->kernel; - int n = rescale_out; - do - { - float remain = 0; - int i; - weight -= 1.0f / rescale_in; - for ( i = 0; i < kernel_size * 2; i++ ) - { - float cur = kernels [i]; - float m = cur * weight; - *out++ = m + remain; - remain = cur - m; - } - } - while ( --n ); - } - #endif -} - -static float const default_decoder [6] = - { 0.956f, 0.621f, -0.272f, -0.647f, -1.105f, 1.702f }; - -static void init( init_t* impl, md_ntsc_setup_t const* setup ) -{ - impl->brightness = (float) setup->brightness * (0.5f * rgb_unit) + rgb_offset; - impl->contrast = (float) setup->contrast * (0.5f * rgb_unit) + rgb_unit; - #ifdef default_palette_contrast - if ( !setup->palette ) - impl->contrast *= default_palette_contrast; - #endif - - impl->artifacts = (float) setup->artifacts; - if ( impl->artifacts > 0 ) - impl->artifacts *= artifacts_max - artifacts_mid; - impl->artifacts = impl->artifacts * artifacts_mid + artifacts_mid; - - impl->fringing = (float) setup->fringing; - if ( impl->fringing > 0 ) - impl->fringing *= fringing_max - fringing_mid; - impl->fringing = impl->fringing * fringing_mid + fringing_mid; - - init_filters( impl, setup ); - - /* generate gamma table */ - if ( gamma_size > 1 ) - { - float const to_float = 1.0f / (gamma_size - (gamma_size > 1)); - float const gamma = 1.1333f - (float) setup->gamma * 0.5f; - /* match common PC's 2.2 gamma to TV's 2.65 gamma */ - int i; - for ( i = 0; i < gamma_size; i++ ) - impl->to_float [i] = - (float) pow( i * to_float, gamma ) * impl->contrast + impl->brightness; - } - - /* setup decoder matricies */ - { - float hue = (float) setup->hue * PI + PI / 180 * ext_decoder_hue; - float sat = (float) setup->saturation + 1; - float const* decoder = setup->decoder_matrix; - if ( !decoder ) - { - decoder = default_decoder; - if ( STD_HUE_CONDITION( setup ) ) - hue += PI / 180 * (std_decoder_hue - ext_decoder_hue); - } - - { - float s = (float) sin( hue ) * sat; - float c = (float) cos( hue ) * sat; - float* out = impl->to_rgb; - int n; - - n = burst_count; - do - { - float const* in = decoder; - int n = 3; - do - { - float i = *in++; - float q = *in++; - *out++ = i * c - q * s; - *out++ = i * s + q * c; - } - while ( --n ); - if ( burst_count <= 1 ) - break; - ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ - } - while ( --n ); - } - } -} - -/* kernel generation */ - -#define RGB_TO_YIQ( r, g, b, y, i ) (\ - (y = (r) * 0.299f + (g) * 0.587f + (b) * 0.114f),\ - (i = (r) * 0.596f - (g) * 0.275f - (b) * 0.321f),\ - ((r) * 0.212f - (g) * 0.523f + (b) * 0.311f)\ -) - -#define YIQ_TO_RGB( y, i, q, to_rgb, type, r, g ) (\ - r = (type) (y + to_rgb [0] * i + to_rgb [1] * q),\ - g = (type) (y + to_rgb [2] * i + to_rgb [3] * q),\ - (type) (y + to_rgb [4] * i + to_rgb [5] * q)\ -) - -#define PACK_RGB( r, g, b ) ((r) << 21 | (g) << 11 | (b) << 1) - -enum { rgb_kernel_size = burst_size / alignment_count }; -enum { rgb_bias = rgb_unit * 2 * md_ntsc_rgb_builder }; - -typedef struct pixel_info_t -{ - int offset; - float negate; - float kernel [4]; -} pixel_info_t; - -#if rescale_in > 1 - #define PIXEL_OFFSET_( ntsc, scaled ) \ - (kernel_size / 2 + ntsc + (scaled != 0) + (rescale_out - scaled) % rescale_out + \ - (kernel_size * 2 * scaled)) - - #define PIXEL_OFFSET( ntsc, scaled ) \ - PIXEL_OFFSET_( ((ntsc) - (scaled) / rescale_out * rescale_in),\ - (((scaled) + rescale_out * 10) % rescale_out) ),\ - (1.0f - (((ntsc) + 100) & 2)) -#else - #define PIXEL_OFFSET( ntsc, scaled ) \ - (kernel_size / 2 + (ntsc) - (scaled)),\ - (1.0f - (((ntsc) + 100) & 2)) -#endif - -extern pixel_info_t const md_ntsc_pixels [alignment_count]; - -/* Generate pixel at all burst phases and column alignments */ -static void gen_kernel( init_t* impl, float y, float i, float q, md_ntsc_rgb_t* out ) -{ - /* generate for each scanline burst phase */ - float const* to_rgb = impl->to_rgb; - int burst_remain = burst_count; - y -= rgb_offset; - do - { - /* Encode yiq into *two* composite signals (to allow control over artifacting). - Convolve these with kernels which: filter respective components, apply - sharpening, and rescale horizontally. Convert resulting yiq to rgb and pack - into integer. Based on algorithm by NewRisingSun. */ - pixel_info_t const* pixel = md_ntsc_pixels; - int alignment_remain = alignment_count; - do - { - /* negate is -1 when composite starts at odd multiple of 2 */ - float const yy = y * impl->fringing * pixel->negate; - float const ic0 = (i + yy) * pixel->kernel [0]; - float const qc1 = (q + yy) * pixel->kernel [1]; - float const ic2 = (i - yy) * pixel->kernel [2]; - float const qc3 = (q - yy) * pixel->kernel [3]; - - float const factor = impl->artifacts * pixel->negate; - float const ii = i * factor; - float const yc0 = (y + ii) * pixel->kernel [0]; - float const yc2 = (y - ii) * pixel->kernel [2]; - - float const qq = q * factor; - float const yc1 = (y + qq) * pixel->kernel [1]; - float const yc3 = (y - qq) * pixel->kernel [3]; - - float const* k = &impl->kernel [pixel->offset]; - int n; - ++pixel; - for ( n = rgb_kernel_size; n; --n ) - { - float i = k[0]*ic0 + k[2]*ic2; - float q = k[1]*qc1 + k[3]*qc3; - float y = k[kernel_size+0]*yc0 + k[kernel_size+1]*yc1 + - k[kernel_size+2]*yc2 + k[kernel_size+3]*yc3 + rgb_offset; - if ( rescale_out <= 1 ) - k--; - else if ( k < &impl->kernel [kernel_size * 2 * (rescale_out - 1)] ) - k += kernel_size * 2 - 1; - else - k -= kernel_size * 2 * (rescale_out - 1) + 2; - { - int r, g, b = YIQ_TO_RGB( y, i, q, to_rgb, int, r, g ); - *out++ = PACK_RGB( r, g, b ) - rgb_bias; - } - } - } - while ( alignment_count > 1 && --alignment_remain ); - - if ( burst_count <= 1 ) - break; - - to_rgb += 6; - - ROTATE_IQ( i, q, -0.866025f, -0.5f ); /* -120 degrees */ - } - while ( --burst_remain ); -} - -static void correct_errors( md_ntsc_rgb_t color, md_ntsc_rgb_t* out ); - -#if DISABLE_CORRECTION - #define CORRECT_ERROR( a ) { out [i] += rgb_bias; } - #define DISTRIBUTE_ERROR( a, b, c ) { out [i] += rgb_bias; } -#else - #define CORRECT_ERROR( a ) { out [a] += error; } - #define DISTRIBUTE_ERROR( a, b, c ) {\ - md_ntsc_rgb_t fourth = (error + 2 * md_ntsc_rgb_builder) >> 2;\ - fourth &= (rgb_bias >> 1) - md_ntsc_rgb_builder;\ - fourth -= rgb_bias >> 2;\ - out [a] += fourth;\ - out [b] += fourth;\ - out [c] += fourth;\ - out [i] += error - (fourth * 3);\ - } -#endif - -#define RGB_PALETTE_OUT( rgb, out_ )\ -{\ - unsigned char* out = (out_);\ - md_ntsc_rgb_t clamped = (rgb);\ - MD_NTSC_CLAMP_( clamped, (8 - rgb_bits) );\ - out [0] = (unsigned char) (clamped >> 21);\ - out [1] = (unsigned char) (clamped >> 11);\ - out [2] = (unsigned char) (clamped >> 1);\ -} - -/* blitter related */ - -#ifndef restrict - #if defined (__GNUC__) - #define restrict __restrict__ - #elif defined (_MSC_VER) && _MSC_VER > 1300 - #define restrict - #else - /* no support for restricted pointers */ - #define restrict - #endif -#endif - -#include - -#if MD_NTSC_OUT_DEPTH <= 16 - #if USHRT_MAX == 0xFFFF - typedef unsigned short md_ntsc_out_t; - #else - #error "Need 16-bit int type" - #endif - -#else - #if UINT_MAX == 0xFFFFFFFF - typedef unsigned int md_ntsc_out_t; - #elif ULONG_MAX == 0xFFFFFFFF - typedef unsigned long md_ntsc_out_t; - #else - #error "Need 32-bit int type" - #endif - -#endif +/* md_ntsc 0.1.2. http://www.slack.net/~ant/ */ + +/* Common implementation of NTSC filters */ + +#include +#include + +/* Copyright (C) 2006-2007 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. You should have received a copy of the GNU Lesser General Public +License along with this module; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#define DISABLE_CORRECTION 0 + +#undef PI +#define PI 3.14159265358979323846f + +#ifndef LUMA_CUTOFF + #define LUMA_CUTOFF 0.20 +#endif +#ifndef gamma_size + #define gamma_size 1 +#endif +#ifndef rgb_bits + #define rgb_bits 8 +#endif +#ifndef artifacts_max + #define artifacts_max (artifacts_mid * 1.5f) +#endif +#ifndef fringing_max + #define fringing_max (fringing_mid * 2) +#endif +#ifndef STD_HUE_CONDITION + #define STD_HUE_CONDITION( setup ) 1 +#endif + +#define ext_decoder_hue (std_decoder_hue + 15) +#define rgb_unit (1 << rgb_bits) +#define rgb_offset (rgb_unit * 2 + 0.5f) + +enum { burst_size = md_ntsc_entry_size / burst_count }; +enum { kernel_half = 16 }; +enum { kernel_size = kernel_half * 2 + 1 }; + +typedef struct init_t +{ + float to_rgb [burst_count * 6]; + float to_float [gamma_size]; + float contrast; + float brightness; + float artifacts; + float fringing; + float kernel [rescale_out * kernel_size * 2]; +} init_t; + +#define ROTATE_IQ( i, q, sin_b, cos_b ) {\ + float t;\ + t = i * cos_b - q * sin_b;\ + q = i * sin_b + q * cos_b;\ + i = t;\ +} + +static void init_filters( init_t* impl, md_ntsc_setup_t const* setup ) +{ +#if rescale_out > 1 + float kernels [kernel_size * 2]; +#else + float* const kernels = impl->kernel; +#endif + + /* generate luma (y) filter using sinc kernel */ + { + /* sinc with rolloff (dsf) */ + float const rolloff = 1 + (float) setup->sharpness * (float) 0.032; + float const maxh = 32; + float const pow_a_n = (float) pow( rolloff, maxh ); + float sum; + int i; + /* quadratic mapping to reduce negative (blurring) range */ + float to_angle = (float) setup->resolution + 1; + to_angle = PI / maxh * (float) LUMA_CUTOFF * (to_angle * to_angle + 1); + + kernels [kernel_size * 3 / 2] = maxh; /* default center value */ + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + int x = i - kernel_half; + float angle = x * to_angle; + /* instability occurs at center point with rolloff very close to 1.0 */ + if ( x || pow_a_n > (float) 1.056 || pow_a_n < (float) 0.981 ) + { + float rolloff_cos_a = rolloff * (float) cos( angle ); + float num = 1 - rolloff_cos_a - + pow_a_n * (float) cos( maxh * angle ) + + pow_a_n * rolloff * (float) cos( (maxh - 1) * angle ); + float den = 1 - rolloff_cos_a - rolloff_cos_a + rolloff * rolloff; + float dsf = num / den; + kernels [kernel_size * 3 / 2 - kernel_half + i] = dsf - (float) 0.5; + } + } + + /* apply blackman window and find sum */ + sum = 0; + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + float x = PI * 2 / (kernel_half * 2) * i; + float blackman = 0.42f - 0.5f * (float) cos( x ) + 0.08f * (float) cos( x * 2 ); + sum += (kernels [kernel_size * 3 / 2 - kernel_half + i] *= blackman); + } + + /* normalize kernel */ + sum = 1.0f / sum; + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + int x = kernel_size * 3 / 2 - kernel_half + i; + kernels [x] *= sum; + assert( kernels [x] == kernels [x] ); /* catch numerical instability */ + } + } + + /* generate chroma (iq) filter using gaussian kernel */ + { + float const cutoff_factor = -0.03125f; + float cutoff = (float) setup->bleed; + int i; + + if ( cutoff < 0 ) + { + /* keep extreme value accessible only near upper end of scale (1.0) */ + cutoff *= cutoff; + cutoff *= cutoff; + cutoff *= cutoff; + cutoff *= -30.0f / 0.65f; + } + cutoff = cutoff_factor - 0.65f * cutoff_factor * cutoff; + + for ( i = -kernel_half; i <= kernel_half; i++ ) + kernels [kernel_size / 2 + i] = (float) exp( i * i * cutoff ); + + /* normalize even and odd phases separately */ + for ( i = 0; i < 2; i++ ) + { + float sum = 0; + int x; + for ( x = i; x < kernel_size; x += 2 ) + sum += kernels [x]; + + sum = 1.0f / sum; + for ( x = i; x < kernel_size; x += 2 ) + { + kernels [x] *= sum; + assert( kernels [x] == kernels [x] ); /* catch numerical instability */ + } + } + } + + /* + printf( "luma:\n" ); + for ( i = kernel_size; i < kernel_size * 2; i++ ) + printf( "%f\n", kernels [i] ); + printf( "chroma:\n" ); + for ( i = 0; i < kernel_size; i++ ) + printf( "%f\n", kernels [i] ); + */ + + /* generate linear rescale kernels */ + #if rescale_out > 1 + { + float weight = 1.0f; + float* out = impl->kernel; + int n = rescale_out; + do + { + float remain = 0; + int i; + weight -= 1.0f / rescale_in; + for ( i = 0; i < kernel_size * 2; i++ ) + { + float cur = kernels [i]; + float m = cur * weight; + *out++ = m + remain; + remain = cur - m; + } + } + while ( --n ); + } + #endif +} + +static float const default_decoder [6] = + { 0.956f, 0.621f, -0.272f, -0.647f, -1.105f, 1.702f }; + +static void init( init_t* impl, md_ntsc_setup_t const* setup ) +{ + impl->brightness = (float) setup->brightness * (0.5f * rgb_unit) + rgb_offset; + impl->contrast = (float) setup->contrast * (0.5f * rgb_unit) + rgb_unit; + #ifdef default_palette_contrast + if ( !setup->palette ) + impl->contrast *= default_palette_contrast; + #endif + + impl->artifacts = (float) setup->artifacts; + if ( impl->artifacts > 0 ) + impl->artifacts *= artifacts_max - artifacts_mid; + impl->artifacts = impl->artifacts * artifacts_mid + artifacts_mid; + + impl->fringing = (float) setup->fringing; + if ( impl->fringing > 0 ) + impl->fringing *= fringing_max - fringing_mid; + impl->fringing = impl->fringing * fringing_mid + fringing_mid; + + init_filters( impl, setup ); + + /* generate gamma table */ + if ( gamma_size > 1 ) + { + float const to_float = 1.0f / (gamma_size - (gamma_size > 1)); + float const gamma = 1.1333f - (float) setup->gamma * 0.5f; + /* match common PC's 2.2 gamma to TV's 2.65 gamma */ + int i; + for ( i = 0; i < gamma_size; i++ ) + impl->to_float [i] = + (float) pow( i * to_float, gamma ) * impl->contrast + impl->brightness; + } + + /* setup decoder matricies */ + { + float hue = (float) setup->hue * PI + PI / 180 * ext_decoder_hue; + float sat = (float) setup->saturation + 1; + float const* decoder = setup->decoder_matrix; + if ( !decoder ) + { + decoder = default_decoder; + if ( STD_HUE_CONDITION( setup ) ) + hue += PI / 180 * (std_decoder_hue - ext_decoder_hue); + } + + { + float s = (float) sin( hue ) * sat; + float c = (float) cos( hue ) * sat; + float* out = impl->to_rgb; + int n; + + n = burst_count; + do + { + float const* in = decoder; + int n = 3; + do + { + float i = *in++; + float q = *in++; + *out++ = i * c - q * s; + *out++ = i * s + q * c; + } + while ( --n ); + if ( burst_count <= 1 ) + break; + ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ + } + while ( --n ); + } + } +} + +/* kernel generation */ + +#define RGB_TO_YIQ( r, g, b, y, i ) (\ + (y = (r) * 0.299f + (g) * 0.587f + (b) * 0.114f),\ + (i = (r) * 0.596f - (g) * 0.275f - (b) * 0.321f),\ + ((r) * 0.212f - (g) * 0.523f + (b) * 0.311f)\ +) + +#define YIQ_TO_RGB( y, i, q, to_rgb, type, r, g ) (\ + r = (type) (y + to_rgb [0] * i + to_rgb [1] * q),\ + g = (type) (y + to_rgb [2] * i + to_rgb [3] * q),\ + (type) (y + to_rgb [4] * i + to_rgb [5] * q)\ +) + +#define PACK_RGB( r, g, b ) ((r) << 21 | (g) << 11 | (b) << 1) + +enum { rgb_kernel_size = burst_size / alignment_count }; +enum { rgb_bias = rgb_unit * 2 * md_ntsc_rgb_builder }; + +typedef struct pixel_info_t +{ + int offset; + float negate; + float kernel [4]; +} pixel_info_t; + +#if rescale_in > 1 + #define PIXEL_OFFSET_( ntsc, scaled ) \ + (kernel_size / 2 + ntsc + (scaled != 0) + (rescale_out - scaled) % rescale_out + \ + (kernel_size * 2 * scaled)) + + #define PIXEL_OFFSET( ntsc, scaled ) \ + PIXEL_OFFSET_( ((ntsc) - (scaled) / rescale_out * rescale_in),\ + (((scaled) + rescale_out * 10) % rescale_out) ),\ + (1.0f - (((ntsc) + 100) & 2)) +#else + #define PIXEL_OFFSET( ntsc, scaled ) \ + (kernel_size / 2 + (ntsc) - (scaled)),\ + (1.0f - (((ntsc) + 100) & 2)) +#endif + +extern pixel_info_t const md_ntsc_pixels [alignment_count]; + +/* Generate pixel at all burst phases and column alignments */ +static void gen_kernel( init_t* impl, float y, float i, float q, md_ntsc_rgb_t* out ) +{ + /* generate for each scanline burst phase */ + float const* to_rgb = impl->to_rgb; + int burst_remain = burst_count; + y -= rgb_offset; + do + { + /* Encode yiq into *two* composite signals (to allow control over artifacting). + Convolve these with kernels which: filter respective components, apply + sharpening, and rescale horizontally. Convert resulting yiq to rgb and pack + into integer. Based on algorithm by NewRisingSun. */ + pixel_info_t const* pixel = md_ntsc_pixels; + int alignment_remain = alignment_count; + do + { + /* negate is -1 when composite starts at odd multiple of 2 */ + float const yy = y * impl->fringing * pixel->negate; + float const ic0 = (i + yy) * pixel->kernel [0]; + float const qc1 = (q + yy) * pixel->kernel [1]; + float const ic2 = (i - yy) * pixel->kernel [2]; + float const qc3 = (q - yy) * pixel->kernel [3]; + + float const factor = impl->artifacts * pixel->negate; + float const ii = i * factor; + float const yc0 = (y + ii) * pixel->kernel [0]; + float const yc2 = (y - ii) * pixel->kernel [2]; + + float const qq = q * factor; + float const yc1 = (y + qq) * pixel->kernel [1]; + float const yc3 = (y - qq) * pixel->kernel [3]; + + float const* k = &impl->kernel [pixel->offset]; + int n; + ++pixel; + for ( n = rgb_kernel_size; n; --n ) + { + float i = k[0]*ic0 + k[2]*ic2; + float q = k[1]*qc1 + k[3]*qc3; + float y = k[kernel_size+0]*yc0 + k[kernel_size+1]*yc1 + + k[kernel_size+2]*yc2 + k[kernel_size+3]*yc3 + rgb_offset; + if ( rescale_out <= 1 ) + k--; + else if ( k < &impl->kernel [kernel_size * 2 * (rescale_out - 1)] ) + k += kernel_size * 2 - 1; + else + k -= kernel_size * 2 * (rescale_out - 1) + 2; + { + int r, g, b = YIQ_TO_RGB( y, i, q, to_rgb, int, r, g ); + *out++ = PACK_RGB( r, g, b ) - rgb_bias; + } + } + } + while ( alignment_count > 1 && --alignment_remain ); + + if ( burst_count <= 1 ) + break; + + to_rgb += 6; + + ROTATE_IQ( i, q, -0.866025f, -0.5f ); /* -120 degrees */ + } + while ( --burst_remain ); +} + +static void correct_errors( md_ntsc_rgb_t color, md_ntsc_rgb_t* out ); + +#if DISABLE_CORRECTION + #define CORRECT_ERROR( a ) { out [i] += rgb_bias; } + #define DISTRIBUTE_ERROR( a, b, c ) { out [i] += rgb_bias; } +#else + #define CORRECT_ERROR( a ) { out [a] += error; } + #define DISTRIBUTE_ERROR( a, b, c ) {\ + md_ntsc_rgb_t fourth = (error + 2 * md_ntsc_rgb_builder) >> 2;\ + fourth &= (rgb_bias >> 1) - md_ntsc_rgb_builder;\ + fourth -= rgb_bias >> 2;\ + out [a] += fourth;\ + out [b] += fourth;\ + out [c] += fourth;\ + out [i] += error - (fourth * 3);\ + } +#endif + +#define RGB_PALETTE_OUT( rgb, out_ )\ +{\ + unsigned char* out = (out_);\ + md_ntsc_rgb_t clamped = (rgb);\ + MD_NTSC_CLAMP_( clamped, (8 - rgb_bits) );\ + out [0] = (unsigned char) (clamped >> 21);\ + out [1] = (unsigned char) (clamped >> 11);\ + out [2] = (unsigned char) (clamped >> 1);\ +} + +/* blitter related */ + +#ifndef restrict + #if defined (__GNUC__) + #define restrict __restrict__ + #elif defined (_MSC_VER) && _MSC_VER > 1300 + #define restrict + #else + /* no support for restricted pointers */ + #define restrict + #endif +#endif + +#include + +#if MD_NTSC_OUT_DEPTH <= 16 + #if USHRT_MAX == 0xFFFF + typedef unsigned short md_ntsc_out_t; + #else + #error "Need 16-bit int type" + #endif + +#else + #if UINT_MAX == 0xFFFFFFFF + typedef unsigned int md_ntsc_out_t; + #elif ULONG_MAX == 0xFFFFFFFF + typedef unsigned long md_ntsc_out_t; + #else + #error "Need 32-bit int type" + #endif + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/readme.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/readme.txt new file mode 100644 index 0000000000..d393d1ae05 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/readme.txt @@ -0,0 +1,58 @@ +sms_ntsc 0.2.3: Sega Master System NTSC Video Filter +---------------------------------------------------- +This library filters a Sega Master System image to match what a TV would +show, allowing an authentic image in an emulator. It uses a highly +optimized algorithm to perform the same signal processing as an NTSC +decoder in a TV, giving very similar pixel artifacts and color bleeding. +The usual picture controls can be adjusted: hue, saturation, contrast, +brightness, and sharpness. Additionally, the amount of NTSC chroma and +luma artifacts can be reduced, allowing an image that corresponds to +composite video (artifacts), S-video (color bleeding only), RGB (clean +pixels), or anywhere inbetween. + +The output is scaled to the proper horizontal width, leaving it up the +emulator to simply double the height. Specialized blitters can be easily +written using a special interface, allowing customization of input and +output pixel formats, optimization for the host platform, and efficient +scanline doubling. + +Blitting a 248x192 source image to a 581x384 pixel 16-bit RGB memory +buffer at 60 frames per second uses 7% CPU on a 2.0 GHz Athlon 3500+ and +33% CPU on a 10-year-old 400 MHz G3 PowerMac. + +Author : Shay Green +Website : http://www.slack.net/~ant/ +Forum : http://groups.google.com/group/blargg-sound-libs +License : GNU Lesser General Public License (LGPL) +Language: C or C++ + + +Getting Started +--------------- +Build a program from demo.c, sms_ntsc.c, and the SDL multimedia library +(see http://libsdl.org/). Run it with "test.bmp" in the same directory +and it should show the filtered image. See demo.c for more. + +See sms_ntsc.txt for documentation and sms_ntsc.h for reference. Post to +the discussion forum for assistance. + + +Files +----- +readme.txt Essential information +sms_ntsc.txt Library documentation +changes.txt Changes made since previous releases +license.txt GNU Lesser General Public License + +benchmark.c Measures frame rate and processor usage of library +demo.c Displays and saves NTSC filtered image +demo_impl.h Internal routines used by demo +test.bmp Test image for demo + +sms_ntsc_config.h Library configuration (modify as needed) +sms_ntsc.h Library header and source +sms_ntsc.c +sms_ntsc_impl.h + +-- +Shay Green diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.c index d41239e342..cdc6ce4eaa 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.c @@ -1,141 +1,141 @@ -/* sms_ntsc 0.2.3. http://www.slack.net/~ant/ */ - -/* Modified for use with Genesis Plus GX -- EkeEke */ - -#include "shared.h" -#include "sms_ntsc.h" - -/* Copyright (C) 2006-2007 Shay Green. This module is free software; you -can redistribute it and/or modify it under the terms of the GNU Lesser -General Public License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. This -module is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -details. You should have received a copy of the GNU Lesser General Public -License along with this module; if not, write to the Free Software Foundation, -Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - -sms_ntsc_setup_t const sms_ntsc_monochrome = { 0,-1, 0, 0,.2, 0, .2,-.2,-.2,-1, 0, 0 }; -sms_ntsc_setup_t const sms_ntsc_composite = { 0, 0, 0, 0, 0, 0,.25, 0, 0, 0, 0, 0 }; -sms_ntsc_setup_t const sms_ntsc_svideo = { 0, 0, 0, 0, 0, 0,.25, -1, -1, 0, 0, 0 }; -sms_ntsc_setup_t const sms_ntsc_rgb = { 0, 0, 0, 0,.2, 0,.70, -1, -1,-1, 0, 0 }; - -#define alignment_count 3 -#define burst_count 1 -#define rescale_in 8 -#define rescale_out 7 - -#define artifacts_mid 0.4f -#define artifacts_max 1.2f -#define fringing_mid 0.8f -#define std_decoder_hue 0 - -#define gamma_size 16 - -#include "sms_ntsc_impl.h" - -/* 3 input pixels -> 8 composite samples */ -pixel_info_t const sms_ntsc_pixels [alignment_count] = { - { PIXEL_OFFSET( -4, -9 ), { 1, 1, .6667f, 0 } }, - { PIXEL_OFFSET( -2, -7 ), { .3333f, 1, 1, .3333f } }, - { PIXEL_OFFSET( 0, -5 ), { 0, .6667f, 1, 1 } }, -}; - -static void correct_errors( sms_ntsc_rgb_t color, sms_ntsc_rgb_t* out ) -{ - unsigned i; - for ( i = 0; i < rgb_kernel_size / 2; i++ ) - { - sms_ntsc_rgb_t error = color - - out [i ] - out [(i+12)%14+14] - out [(i+10)%14+28] - - out [i + 7] - out [i + 5 +14] - out [i + 3 +28]; - CORRECT_ERROR( i + 3 + 28 ); - } -} - -void sms_ntsc_init( sms_ntsc_t* ntsc, sms_ntsc_setup_t const* setup ) -{ - int entry; - init_t impl; - if ( !setup ) - setup = &sms_ntsc_composite; - init( &impl, setup ); - - for ( entry = 0; entry < sms_ntsc_palette_size; entry++ ) - { - float bb = impl.to_float [entry >> 8 & 0x0F]; - float gg = impl.to_float [entry >> 4 & 0x0F]; - float rr = impl.to_float [entry & 0x0F]; - - float y, i, q = RGB_TO_YIQ( rr, gg, bb, y, i ); - - int r, g, b = YIQ_TO_RGB( y, i, q, impl.to_rgb, int, r, g ); - sms_ntsc_rgb_t rgb = PACK_RGB( r, g, b ); - - if ( setup->palette_out ) - RGB_PALETTE_OUT( rgb, &setup->palette_out [entry * 3] ); - - if ( ntsc ) - { - gen_kernel( &impl, y, i, q, ntsc->table [entry] ); - correct_errors( rgb, ntsc->table [entry] ); - } - } -} - -#ifndef CUSTOM_BLITTER -void sms_ntsc_blit( sms_ntsc_t const* ntsc, SMS_NTSC_IN_T const* table, unsigned char* input, - int in_width, int vline) -{ - int const chunk_count = in_width / sms_ntsc_in_chunk; - - /* handle extra 0, 1, or 2 pixels by placing them at beginning of row */ - int const in_extra = in_width - chunk_count * sms_ntsc_in_chunk; - unsigned const extra2 = (unsigned) -(in_extra >> 1 & 1); /* (unsigned) -1 = ~0 */ - unsigned const extra1 = (unsigned) -(in_extra & 1) | extra2; - - /* use palette entry 0 for unused pixels */ - SMS_NTSC_IN_T border = table[0]; - - SMS_NTSC_BEGIN_ROW( ntsc, border, - (SMS_NTSC_ADJ_IN( table[input[0]] )) & extra2, - (SMS_NTSC_ADJ_IN( table[input[extra2 & 1]] )) & extra1 ); - - sms_ntsc_out_t* restrict line_out = (sms_ntsc_out_t*)(&bitmap.data[(vline * bitmap.pitch)]); - - int n; - input += in_extra; - - for ( n = chunk_count; n; --n ) - { - /* order of input and output pixels must not be altered */ - SMS_NTSC_COLOR_IN( 0, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); - SMS_NTSC_RGB_OUT( 0, *line_out++ ); - SMS_NTSC_RGB_OUT( 1, *line_out++ ); - - SMS_NTSC_COLOR_IN( 1, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); - SMS_NTSC_RGB_OUT( 2, *line_out++ ); - SMS_NTSC_RGB_OUT( 3, *line_out++ ); - - SMS_NTSC_COLOR_IN( 2, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); - SMS_NTSC_RGB_OUT( 4, *line_out++ ); - SMS_NTSC_RGB_OUT( 5, *line_out++ ); - SMS_NTSC_RGB_OUT( 6, *line_out++ ); - } - - /* finish final pixels */ - SMS_NTSC_COLOR_IN( 0, ntsc, border ); - SMS_NTSC_RGB_OUT( 0, *line_out++ ); - SMS_NTSC_RGB_OUT( 1, *line_out++ ); - - SMS_NTSC_COLOR_IN( 1, ntsc, border ); - SMS_NTSC_RGB_OUT( 2, *line_out++ ); - SMS_NTSC_RGB_OUT( 3, *line_out++ ); - - SMS_NTSC_COLOR_IN( 2, ntsc, border ); - SMS_NTSC_RGB_OUT( 4, *line_out++ ); - SMS_NTSC_RGB_OUT( 5, *line_out++ ); - SMS_NTSC_RGB_OUT( 6, *line_out++ ); -} -#endif +/* sms_ntsc 0.2.3. http://www.slack.net/~ant/ */ + +/* Modified for use with Genesis Plus GX -- EkeEke */ + +#include "shared.h" +#include "sms_ntsc.h" + +/* Copyright (C) 2006-2007 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. You should have received a copy of the GNU Lesser General Public +License along with this module; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +sms_ntsc_setup_t const sms_ntsc_monochrome = { 0,-1, 0, 0,.2, 0, .2,-.2,-.2,-1, 0, 0 }; +sms_ntsc_setup_t const sms_ntsc_composite = { 0, 0, 0, 0, 0, 0,.25, 0, 0, 0, 0, 0 }; +sms_ntsc_setup_t const sms_ntsc_svideo = { 0, 0, 0, 0, 0, 0,.25, -1, -1, 0, 0, 0 }; +sms_ntsc_setup_t const sms_ntsc_rgb = { 0, 0, 0, 0,.2, 0,.70, -1, -1,-1, 0, 0 }; + +#define alignment_count 3 +#define burst_count 1 +#define rescale_in 8 +#define rescale_out 7 + +#define artifacts_mid 0.4f +#define artifacts_max 1.2f +#define fringing_mid 0.8f +#define std_decoder_hue 0 + +#define gamma_size 16 + +#include "sms_ntsc_impl.h" + +/* 3 input pixels -> 8 composite samples */ +pixel_info_t const sms_ntsc_pixels [alignment_count] = { + { PIXEL_OFFSET( -4, -9 ), { 1, 1, .6667f, 0 } }, + { PIXEL_OFFSET( -2, -7 ), { .3333f, 1, 1, .3333f } }, + { PIXEL_OFFSET( 0, -5 ), { 0, .6667f, 1, 1 } }, +}; + +static void correct_errors( sms_ntsc_rgb_t color, sms_ntsc_rgb_t* out ) +{ + unsigned i; + for ( i = 0; i < rgb_kernel_size / 2; i++ ) + { + sms_ntsc_rgb_t error = color - + out [i ] - out [(i+12)%14+14] - out [(i+10)%14+28] - + out [i + 7] - out [i + 5 +14] - out [i + 3 +28]; + CORRECT_ERROR( i + 3 + 28 ); + } +} + +void sms_ntsc_init( sms_ntsc_t* ntsc, sms_ntsc_setup_t const* setup ) +{ + int entry; + init_t impl; + if ( !setup ) + setup = &sms_ntsc_composite; + init( &impl, setup ); + + for ( entry = 0; entry < sms_ntsc_palette_size; entry++ ) + { + float bb = impl.to_float [entry >> 8 & 0x0F]; + float gg = impl.to_float [entry >> 4 & 0x0F]; + float rr = impl.to_float [entry & 0x0F]; + + float y, i, q = RGB_TO_YIQ( rr, gg, bb, y, i ); + + int r, g, b = YIQ_TO_RGB( y, i, q, impl.to_rgb, int, r, g ); + sms_ntsc_rgb_t rgb = PACK_RGB( r, g, b ); + + if ( setup->palette_out ) + RGB_PALETTE_OUT( rgb, &setup->palette_out [entry * 3] ); + + if ( ntsc ) + { + gen_kernel( &impl, y, i, q, ntsc->table [entry] ); + correct_errors( rgb, ntsc->table [entry] ); + } + } +} + +#ifndef CUSTOM_BLITTER +void sms_ntsc_blit( sms_ntsc_t const* ntsc, SMS_NTSC_IN_T const* table, unsigned char* input, + int in_width, int vline) +{ + int const chunk_count = in_width / sms_ntsc_in_chunk; + + /* handle extra 0, 1, or 2 pixels by placing them at beginning of row */ + int const in_extra = in_width - chunk_count * sms_ntsc_in_chunk; + unsigned const extra2 = (unsigned) -(in_extra >> 1 & 1); /* (unsigned) -1 = ~0 */ + unsigned const extra1 = (unsigned) -(in_extra & 1) | extra2; + + /* use palette entry 0 for unused pixels */ + SMS_NTSC_IN_T border = table[0]; + + SMS_NTSC_BEGIN_ROW( ntsc, border, + (SMS_NTSC_ADJ_IN( table[input[0]] )) & extra2, + (SMS_NTSC_ADJ_IN( table[input[extra2 & 1]] )) & extra1 ); + + sms_ntsc_out_t* restrict line_out = (sms_ntsc_out_t*)(&bitmap.data[(vline * bitmap.pitch)]); + + int n; + input += in_extra; + + for ( n = chunk_count; n; --n ) + { + /* order of input and output pixels must not be altered */ + SMS_NTSC_COLOR_IN( 0, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); + SMS_NTSC_RGB_OUT( 0, *line_out++ ); + SMS_NTSC_RGB_OUT( 1, *line_out++ ); + + SMS_NTSC_COLOR_IN( 1, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); + SMS_NTSC_RGB_OUT( 2, *line_out++ ); + SMS_NTSC_RGB_OUT( 3, *line_out++ ); + + SMS_NTSC_COLOR_IN( 2, ntsc, SMS_NTSC_ADJ_IN( table[*input++] ) ); + SMS_NTSC_RGB_OUT( 4, *line_out++ ); + SMS_NTSC_RGB_OUT( 5, *line_out++ ); + SMS_NTSC_RGB_OUT( 6, *line_out++ ); + } + + /* finish final pixels */ + SMS_NTSC_COLOR_IN( 0, ntsc, border ); + SMS_NTSC_RGB_OUT( 0, *line_out++ ); + SMS_NTSC_RGB_OUT( 1, *line_out++ ); + + SMS_NTSC_COLOR_IN( 1, ntsc, border ); + SMS_NTSC_RGB_OUT( 2, *line_out++ ); + SMS_NTSC_RGB_OUT( 3, *line_out++ ); + + SMS_NTSC_COLOR_IN( 2, ntsc, border ); + SMS_NTSC_RGB_OUT( 4, *line_out++ ); + SMS_NTSC_RGB_OUT( 5, *line_out++ ); + SMS_NTSC_RGB_OUT( 6, *line_out++ ); +} +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.h index 7546fa35ec..93c9ee1ab7 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.h @@ -1,154 +1,154 @@ -/* Sega Master System/Game Gear/TI 99/4A NTSC video filter */ - -/* sms_ntsc 0.2.3 */ -#ifndef SMS_NTSC_H -#define SMS_NTSC_H - -#include "sms_ntsc_config.h" - -#ifdef __cplusplus - extern "C" { -#endif - -/* Image parameters, ranging from -1.0 to 1.0. Actual internal values shown -in parenthesis and should remain fairly stable in future versions. */ -typedef struct sms_ntsc_setup_t -{ - /* Basic parameters */ - double hue; /* -1 = -180 degrees +1 = +180 degrees */ - double saturation; /* -1 = grayscale (0.0) +1 = oversaturated colors (2.0) */ - double contrast; /* -1 = dark (0.5) +1 = light (1.5) */ - double brightness; /* -1 = dark (0.5) +1 = light (1.5) */ - double sharpness; /* edge contrast enhancement/blurring */ - - /* Advanced parameters */ - double gamma; /* -1 = dark (1.5) +1 = light (0.5) */ - double resolution; /* image resolution */ - double artifacts; /* artifacts caused by color changes */ - double fringing; /* color artifacts caused by brightness changes */ - double bleed; /* color bleed (color resolution reduction) */ - float const* decoder_matrix; /* optional RGB decoder matrix, 6 elements */ - - unsigned char* palette_out; /* optional RGB palette out, 3 bytes per color */ -} sms_ntsc_setup_t; - -/* Video format presets */ -extern sms_ntsc_setup_t const sms_ntsc_composite; /* color bleeding + artifacts */ -extern sms_ntsc_setup_t const sms_ntsc_svideo; /* color bleeding only */ -extern sms_ntsc_setup_t const sms_ntsc_rgb; /* crisp image */ -extern sms_ntsc_setup_t const sms_ntsc_monochrome;/* desaturated + artifacts */ - -enum { sms_ntsc_palette_size = 4096 }; - -/* Initializes and adjusts parameters. Can be called multiple times on the same -sms_ntsc_t object. Can pass NULL for either parameter. */ -typedef struct sms_ntsc_t sms_ntsc_t; -void sms_ntsc_init( sms_ntsc_t* ntsc, sms_ntsc_setup_t const* setup ); - -/* Filters one row of pixels. Input pixel format is set by SMS_NTSC_IN_FORMAT -and output RGB depth is set by SMS_NTSC_OUT_DEPTH. Both default to 16-bit RGB. -In_row_width is the number of pixels to get to the next input row. */ -void sms_ntsc_blit( sms_ntsc_t const* ntsc, SMS_NTSC_IN_T const* table, unsigned char* input, - int in_width, int vline); - -/* Number of output pixels written by blitter for given input width. */ -#define SMS_NTSC_OUT_WIDTH( in_width ) \ - (((in_width) / sms_ntsc_in_chunk + 1) * sms_ntsc_out_chunk) - -/* Number of input pixels that will fit within given output width. Might be -rounded down slightly; use SMS_NTSC_OUT_WIDTH() on result to find rounded -value. */ -#define SMS_NTSC_IN_WIDTH( out_width ) \ - (((out_width) / sms_ntsc_out_chunk - 1) * sms_ntsc_in_chunk + 2) - - -/* Interface for user-defined custom blitters */ - -enum { sms_ntsc_in_chunk = 3 }; /* number of input pixels read per chunk */ -enum { sms_ntsc_out_chunk = 7 }; /* number of output pixels generated per chunk */ - -/* Begins outputting row and starts three pixels. First pixel will be cut off a bit. -Declares variables, so must be before first statement in a block (unless you're using C++). */ -#define SMS_NTSC_BEGIN_ROW( ntsc, pixel0, pixel1, pixel2 ) \ - SMS_NTSC_BEGIN_ROW_6_( pixel0, pixel1, pixel2, SMS_NTSC_IN_FORMAT, ntsc ) - -/* Begins input pixel */ -#define SMS_NTSC_COLOR_IN( in_index, ntsc, color_in ) \ - SMS_NTSC_COLOR_IN_( in_index, color_in, SMS_NTSC_IN_FORMAT, ntsc ) - -/* Generates output pixel */ -#define SMS_NTSC_RGB_OUT( x, rgb_out ) {\ - raw_ =\ - kernel0 [x ] + kernel1 [(x+12)%7+14] + kernel2 [(x+10)%7+28] +\ - kernelx0 [(x+7)%14] + kernelx1 [(x+ 5)%7+21] + kernelx2 [(x+ 3)%7+35];\ - SMS_NTSC_CLAMP_( raw_, 0 );\ - SMS_NTSC_RGB_OUT_( rgb_out, 0 );\ -} - -/* private */ -enum { sms_ntsc_entry_size = 3 * 14 }; -typedef unsigned long sms_ntsc_rgb_t; -struct sms_ntsc_t { - sms_ntsc_rgb_t table [sms_ntsc_palette_size] [sms_ntsc_entry_size]; -}; - -#define SMS_NTSC_BGR12( ntsc, n ) (ntsc)->table [n & 0xFFF] - -#define SMS_NTSC_RGB16( ntsc, n ) \ - (sms_ntsc_rgb_t const*) ((char const*) (ntsc)->table +\ - ((n << 10 & 0x7800) | (n & 0x0780) | (n >> 9 & 0x0078)) *\ - (sms_ntsc_entry_size * sizeof (sms_ntsc_rgb_t) / 8)) - -#define SMS_NTSC_RGB15( ntsc, n ) \ - (sms_ntsc_rgb_t const*) ((char const*) (ntsc)->table +\ - ((n << 9 & 0x3C00) | (n & 0x03C0) | (n >> 9 & 0x003C)) *\ - (sms_ntsc_entry_size * sizeof (sms_ntsc_rgb_t) / 4)) - -/* common 3->7 ntsc macros */ -#define SMS_NTSC_BEGIN_ROW_6_( pixel0, pixel1, pixel2, ENTRY, table ) \ - sms_ntsc_rgb_t raw_;\ - unsigned const sms_ntsc_pixel0_ = (pixel0);\ - sms_ntsc_rgb_t const* kernel0 = ENTRY( table, sms_ntsc_pixel0_ );\ - unsigned const sms_ntsc_pixel1_ = (pixel1);\ - sms_ntsc_rgb_t const* kernel1 = ENTRY( table, sms_ntsc_pixel1_ );\ - unsigned const sms_ntsc_pixel2_ = (pixel2);\ - sms_ntsc_rgb_t const* kernel2 = ENTRY( table, sms_ntsc_pixel2_ );\ - sms_ntsc_rgb_t const* kernelx0;\ - sms_ntsc_rgb_t const* kernelx1 = kernel0;\ - sms_ntsc_rgb_t const* kernelx2 = kernel0 - - -/* common ntsc macros */ -#define sms_ntsc_rgb_builder ((1L << 21) | (1 << 11) | (1 << 1)) -#define sms_ntsc_clamp_mask (sms_ntsc_rgb_builder * 3 / 2) -#define sms_ntsc_clamp_add (sms_ntsc_rgb_builder * 0x101) -#define SMS_NTSC_CLAMP_( io, shift ) {\ - sms_ntsc_rgb_t sub = (io) >> (9-(shift)) & sms_ntsc_clamp_mask;\ - sms_ntsc_rgb_t clamp = sms_ntsc_clamp_add - sub;\ - io |= clamp;\ - clamp -= sub;\ - io &= clamp;\ -} - -#define SMS_NTSC_COLOR_IN_( index, color, ENTRY, table ) {\ - unsigned color_;\ - kernelx##index = kernel##index;\ - kernel##index = (color_ = (color), ENTRY( table, color_ ));\ -} - -/* x is always zero except in snes_ntsc library */ -#if SMS_NTSC_OUT_DEPTH == 15 -#define SMS_NTSC_RGB_OUT_( rgb_out, x ) {\ - rgb_out = (raw_>>(14-x)& 0x7C00)|(raw_>>(9-x)&0x03E0)|(raw_>>(4-x)&0x001F);\ - } -#elif SMS_NTSC_OUT_DEPTH == 16 -#define SMS_NTSC_RGB_OUT_( rgb_out, x) {\ - rgb_out = (raw_>>(13-x)& 0xF800)|(raw_>>(8-x)&0x07E0)|(raw_>>(4-x)&0x001F);\ - } -#endif - -#ifdef __cplusplus - } -#endif - -#endif +/* Sega Master System/Game Gear/TI 99/4A NTSC video filter */ + +/* sms_ntsc 0.2.3 */ +#ifndef SMS_NTSC_H +#define SMS_NTSC_H + +#include "sms_ntsc_config.h" + +#ifdef __cplusplus + extern "C" { +#endif + +/* Image parameters, ranging from -1.0 to 1.0. Actual internal values shown +in parenthesis and should remain fairly stable in future versions. */ +typedef struct sms_ntsc_setup_t +{ + /* Basic parameters */ + double hue; /* -1 = -180 degrees +1 = +180 degrees */ + double saturation; /* -1 = grayscale (0.0) +1 = oversaturated colors (2.0) */ + double contrast; /* -1 = dark (0.5) +1 = light (1.5) */ + double brightness; /* -1 = dark (0.5) +1 = light (1.5) */ + double sharpness; /* edge contrast enhancement/blurring */ + + /* Advanced parameters */ + double gamma; /* -1 = dark (1.5) +1 = light (0.5) */ + double resolution; /* image resolution */ + double artifacts; /* artifacts caused by color changes */ + double fringing; /* color artifacts caused by brightness changes */ + double bleed; /* color bleed (color resolution reduction) */ + float const* decoder_matrix; /* optional RGB decoder matrix, 6 elements */ + + unsigned char* palette_out; /* optional RGB palette out, 3 bytes per color */ +} sms_ntsc_setup_t; + +/* Video format presets */ +extern sms_ntsc_setup_t const sms_ntsc_composite; /* color bleeding + artifacts */ +extern sms_ntsc_setup_t const sms_ntsc_svideo; /* color bleeding only */ +extern sms_ntsc_setup_t const sms_ntsc_rgb; /* crisp image */ +extern sms_ntsc_setup_t const sms_ntsc_monochrome;/* desaturated + artifacts */ + +enum { sms_ntsc_palette_size = 4096 }; + +/* Initializes and adjusts parameters. Can be called multiple times on the same +sms_ntsc_t object. Can pass NULL for either parameter. */ +typedef struct sms_ntsc_t sms_ntsc_t; +void sms_ntsc_init( sms_ntsc_t* ntsc, sms_ntsc_setup_t const* setup ); + +/* Filters one row of pixels. Input pixel format is set by SMS_NTSC_IN_FORMAT +and output RGB depth is set by SMS_NTSC_OUT_DEPTH. Both default to 16-bit RGB. +In_row_width is the number of pixels to get to the next input row. */ +void sms_ntsc_blit( sms_ntsc_t const* ntsc, SMS_NTSC_IN_T const* table, unsigned char* input, + int in_width, int vline); + +/* Number of output pixels written by blitter for given input width. */ +#define SMS_NTSC_OUT_WIDTH( in_width ) \ + (((in_width) / sms_ntsc_in_chunk + 1) * sms_ntsc_out_chunk) + +/* Number of input pixels that will fit within given output width. Might be +rounded down slightly; use SMS_NTSC_OUT_WIDTH() on result to find rounded +value. */ +#define SMS_NTSC_IN_WIDTH( out_width ) \ + (((out_width) / sms_ntsc_out_chunk - 1) * sms_ntsc_in_chunk + 2) + + +/* Interface for user-defined custom blitters */ + +enum { sms_ntsc_in_chunk = 3 }; /* number of input pixels read per chunk */ +enum { sms_ntsc_out_chunk = 7 }; /* number of output pixels generated per chunk */ + +/* Begins outputting row and starts three pixels. First pixel will be cut off a bit. +Declares variables, so must be before first statement in a block (unless you're using C++). */ +#define SMS_NTSC_BEGIN_ROW( ntsc, pixel0, pixel1, pixel2 ) \ + SMS_NTSC_BEGIN_ROW_6_( pixel0, pixel1, pixel2, SMS_NTSC_IN_FORMAT, ntsc ) + +/* Begins input pixel */ +#define SMS_NTSC_COLOR_IN( in_index, ntsc, color_in ) \ + SMS_NTSC_COLOR_IN_( in_index, color_in, SMS_NTSC_IN_FORMAT, ntsc ) + +/* Generates output pixel */ +#define SMS_NTSC_RGB_OUT( x, rgb_out ) {\ + raw_ =\ + kernel0 [x ] + kernel1 [(x+12)%7+14] + kernel2 [(x+10)%7+28] +\ + kernelx0 [(x+7)%14] + kernelx1 [(x+ 5)%7+21] + kernelx2 [(x+ 3)%7+35];\ + SMS_NTSC_CLAMP_( raw_, 0 );\ + SMS_NTSC_RGB_OUT_( rgb_out, 0 );\ +} + +/* private */ +enum { sms_ntsc_entry_size = 3 * 14 }; +typedef unsigned long sms_ntsc_rgb_t; +struct sms_ntsc_t { + sms_ntsc_rgb_t table [sms_ntsc_palette_size] [sms_ntsc_entry_size]; +}; + +#define SMS_NTSC_BGR12( ntsc, n ) (ntsc)->table [n & 0xFFF] + +#define SMS_NTSC_RGB16( ntsc, n ) \ + (sms_ntsc_rgb_t const*) ((char const*) (ntsc)->table +\ + ((n << 10 & 0x7800) | (n & 0x0780) | (n >> 9 & 0x0078)) *\ + (sms_ntsc_entry_size * sizeof (sms_ntsc_rgb_t) / 8)) + +#define SMS_NTSC_RGB15( ntsc, n ) \ + (sms_ntsc_rgb_t const*) ((char const*) (ntsc)->table +\ + ((n << 9 & 0x3C00) | (n & 0x03C0) | (n >> 9 & 0x003C)) *\ + (sms_ntsc_entry_size * sizeof (sms_ntsc_rgb_t) / 4)) + +/* common 3->7 ntsc macros */ +#define SMS_NTSC_BEGIN_ROW_6_( pixel0, pixel1, pixel2, ENTRY, table ) \ + sms_ntsc_rgb_t raw_;\ + unsigned const sms_ntsc_pixel0_ = (pixel0);\ + sms_ntsc_rgb_t const* kernel0 = ENTRY( table, sms_ntsc_pixel0_ );\ + unsigned const sms_ntsc_pixel1_ = (pixel1);\ + sms_ntsc_rgb_t const* kernel1 = ENTRY( table, sms_ntsc_pixel1_ );\ + unsigned const sms_ntsc_pixel2_ = (pixel2);\ + sms_ntsc_rgb_t const* kernel2 = ENTRY( table, sms_ntsc_pixel2_ );\ + sms_ntsc_rgb_t const* kernelx0;\ + sms_ntsc_rgb_t const* kernelx1 = kernel0;\ + sms_ntsc_rgb_t const* kernelx2 = kernel0 + + +/* common ntsc macros */ +#define sms_ntsc_rgb_builder ((1L << 21) | (1 << 11) | (1 << 1)) +#define sms_ntsc_clamp_mask (sms_ntsc_rgb_builder * 3 / 2) +#define sms_ntsc_clamp_add (sms_ntsc_rgb_builder * 0x101) +#define SMS_NTSC_CLAMP_( io, shift ) {\ + sms_ntsc_rgb_t sub = (io) >> (9-(shift)) & sms_ntsc_clamp_mask;\ + sms_ntsc_rgb_t clamp = sms_ntsc_clamp_add - sub;\ + io |= clamp;\ + clamp -= sub;\ + io &= clamp;\ +} + +#define SMS_NTSC_COLOR_IN_( index, color, ENTRY, table ) {\ + unsigned color_;\ + kernelx##index = kernel##index;\ + kernel##index = (color_ = (color), ENTRY( table, color_ ));\ +} + +/* x is always zero except in snes_ntsc library */ +#if SMS_NTSC_OUT_DEPTH == 15 +#define SMS_NTSC_RGB_OUT_( rgb_out, x ) {\ + rgb_out = (raw_>>(14-x)& 0x7C00)|(raw_>>(9-x)&0x03E0)|(raw_>>(4-x)&0x001F);\ + } +#elif SMS_NTSC_OUT_DEPTH == 16 +#define SMS_NTSC_RGB_OUT_( rgb_out, x) {\ + rgb_out = (raw_>>(13-x)& 0xF800)|(raw_>>(8-x)&0x07E0)|(raw_>>(4-x)&0x001F);\ + } +#endif + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.txt similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.txt index 21b010b099..1f29da2d21 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc.txt @@ -1,119 +1,119 @@ -sms_ntsc 0.2.3: Sega Master System NTSC Video Filter ----------------------------------------------------- -Author : Shay Green -Website : http://www.slack.net/~ant/ -Forum : http://groups.google.com/group/blargg-sound-libs -License : GNU Lesser General Public License (LGPL) -Language: C or C++ - - -Overview --------- -To perform NTSC filtering, first allocate memory for a sms_ntsc_t object -and call sms_ntsc_init(), then call sms_ntsc_blit() to perform -filtering. You can call sms_ntsc_init() at any time to change image -parameters. - -By default, sms_ntsc_blit() reads and writes pixels in 16-bit RGB. Edit -sms_ntsc_config.h to change this. - - -RGB Palette Generation ----------------------- -A 4096-color RGB palette can be generated for use in a normal blitter. -In your sms_ntsc_setup_t structure, point palette_out to a 12288-byte -buffer (4096 * 3) to hold the palette, then call sms_ntsc_init(). If you -only need the palette and aren't going to be using the NTSC blitter, -pass 0 for the first parameter. - - -Image Parameters ----------------- -Many image parameters can be adjusted and presets are provided for -composite video, S-video, RGB, and monochrome. Most are floating-point -values with a general range of -1.0 to 1.0, where 0 is normal. The -ranges are adjusted so that one parameter at an extreme (-1 or +1) and -the rest at zero shouldn't result in any internal overflow (garbage -pixels). Setting multiple parameters to their extreme can produce -garbage. Put another way, the state space defined by all parameters -within the range -1 to +1 is not fully usable, but some extreme corners -are very useful so I don't want to reduce the parameter ranges. - -The sharpness and resolution parameters have similar effects. Resolution -affects how crisp pixels are. Sharpness merely enhances the edges by -increasing contrast, which makes things brighter at the edges. Artifacts -sets how much "junk" is around the edges where colors and brightness -change in the image, where -1 completely eliminates them. (Color) bleed -affects how much colors blend together and the artifact colors at the -edges of pixels surrounded by black. (Color) fringing affects how much -color fringing occurs around the edges of bright objects, especially -white text on a black background. - -When using custom settings, initialize your sms_ntsc_setup_t using one -of the standard setups before customizing it. This will ensure that all -fields are properly initialized, including any added in future releases -of the library that your current code can't even know about. - - sms_ntsc_setup_t setup; - setup = sms_ntsc_composite; /* do this first */ - setup.sharpness = custom_sharpness; - sms_ntsc_init( ntsc, &setup ); - - -Image Size ----------- -For proper aspect ratio, the image generated by the library must be -doubled vertically. - -Use the SMS_NTSC_OUT_WIDTH() and SMS_NTSC_IN_WIDTH() macros to convert -between input and output widths that the blitter uses. For example, if -you are blitting an image 256 pixels wide, use SMS_NTSC_OUT_WIDTH( 256 ) -to find out how many output pixels are written per row. Another example, -use SMS_NTSC_IN_WIDTH( 640 ) to find how many input pixels will fit -within 640 output pixels. - - -Custom Blitter --------------- -You can write your own blitter, allowing customization of how input -pixels are obtained, the format of output pixels (15, 16, or 32-bit -RGB), optimizations for your platform, and additional effects like -efficient scanline doubling during blitting. - -Macros are included in sms_ntsc.h for writing your blitter so that your -code can be carried over without changes to improved versions of the -library. The default blitter at the end of sms_ntsc.c shows how to use -the macros. Contact me for further assistance. - -The SMS_NTSC_BEGIN_ROW macro allows starting up to three pixels. The -first pixel is cut off; its use is in specifying a background color -other than black for the sliver on the left edge. The next two pixels -can be used to handle the extra one or two pixels not handled by the -main chunks of three pixels. For example if you want to blit 257 input -pixels on a row (for whatever odd reason), you would start the first two -with SMS_NTSC_BEGIN_ROW( ... sms_ntsc_black, line_in [0], line_in [1] ), -then do the remaining 255 in chunks of three (255 is divisible by 3). - - -Limitations ------------ -The library's horizontal rescaling is too wide by about 3% in order to -allow a much more optimal implementation. This means that a 248 pixel -wide input image should appear as 563 output pixels, but with this -library appears as 581 output pixels. TV aspect ratios probably vary by -this much anyway. If you really need unscaled output, contact me and -I'll see about adding it. - - -Thanks ------- -Thanks to NewRisingSun for his original code and explanations of NTSC, -which was a starting point for me learning about NTSC video and -decoding. Thanks to the Nesdev forum for feedback and encouragement. -Thanks to Martin Freij (Nestopia author) and Charles MacDonald (SMS Plus -author) for significant ongoing testing and feedback as the library has -improved. Thanks to byuu (bsnes author) and pagefault (ZSNES team) for -feedback about the SNES version. - --- -Shay Green +sms_ntsc 0.2.3: Sega Master System NTSC Video Filter +---------------------------------------------------- +Author : Shay Green +Website : http://www.slack.net/~ant/ +Forum : http://groups.google.com/group/blargg-sound-libs +License : GNU Lesser General Public License (LGPL) +Language: C or C++ + + +Overview +-------- +To perform NTSC filtering, first allocate memory for a sms_ntsc_t object +and call sms_ntsc_init(), then call sms_ntsc_blit() to perform +filtering. You can call sms_ntsc_init() at any time to change image +parameters. + +By default, sms_ntsc_blit() reads and writes pixels in 16-bit RGB. Edit +sms_ntsc_config.h to change this. + + +RGB Palette Generation +---------------------- +A 4096-color RGB palette can be generated for use in a normal blitter. +In your sms_ntsc_setup_t structure, point palette_out to a 12288-byte +buffer (4096 * 3) to hold the palette, then call sms_ntsc_init(). If you +only need the palette and aren't going to be using the NTSC blitter, +pass 0 for the first parameter. + + +Image Parameters +---------------- +Many image parameters can be adjusted and presets are provided for +composite video, S-video, RGB, and monochrome. Most are floating-point +values with a general range of -1.0 to 1.0, where 0 is normal. The +ranges are adjusted so that one parameter at an extreme (-1 or +1) and +the rest at zero shouldn't result in any internal overflow (garbage +pixels). Setting multiple parameters to their extreme can produce +garbage. Put another way, the state space defined by all parameters +within the range -1 to +1 is not fully usable, but some extreme corners +are very useful so I don't want to reduce the parameter ranges. + +The sharpness and resolution parameters have similar effects. Resolution +affects how crisp pixels are. Sharpness merely enhances the edges by +increasing contrast, which makes things brighter at the edges. Artifacts +sets how much "junk" is around the edges where colors and brightness +change in the image, where -1 completely eliminates them. (Color) bleed +affects how much colors blend together and the artifact colors at the +edges of pixels surrounded by black. (Color) fringing affects how much +color fringing occurs around the edges of bright objects, especially +white text on a black background. + +When using custom settings, initialize your sms_ntsc_setup_t using one +of the standard setups before customizing it. This will ensure that all +fields are properly initialized, including any added in future releases +of the library that your current code can't even know about. + + sms_ntsc_setup_t setup; + setup = sms_ntsc_composite; /* do this first */ + setup.sharpness = custom_sharpness; + sms_ntsc_init( ntsc, &setup ); + + +Image Size +---------- +For proper aspect ratio, the image generated by the library must be +doubled vertically. + +Use the SMS_NTSC_OUT_WIDTH() and SMS_NTSC_IN_WIDTH() macros to convert +between input and output widths that the blitter uses. For example, if +you are blitting an image 256 pixels wide, use SMS_NTSC_OUT_WIDTH( 256 ) +to find out how many output pixels are written per row. Another example, +use SMS_NTSC_IN_WIDTH( 640 ) to find how many input pixels will fit +within 640 output pixels. + + +Custom Blitter +-------------- +You can write your own blitter, allowing customization of how input +pixels are obtained, the format of output pixels (15, 16, or 32-bit +RGB), optimizations for your platform, and additional effects like +efficient scanline doubling during blitting. + +Macros are included in sms_ntsc.h for writing your blitter so that your +code can be carried over without changes to improved versions of the +library. The default blitter at the end of sms_ntsc.c shows how to use +the macros. Contact me for further assistance. + +The SMS_NTSC_BEGIN_ROW macro allows starting up to three pixels. The +first pixel is cut off; its use is in specifying a background color +other than black for the sliver on the left edge. The next two pixels +can be used to handle the extra one or two pixels not handled by the +main chunks of three pixels. For example if you want to blit 257 input +pixels on a row (for whatever odd reason), you would start the first two +with SMS_NTSC_BEGIN_ROW( ... sms_ntsc_black, line_in [0], line_in [1] ), +then do the remaining 255 in chunks of three (255 is divisible by 3). + + +Limitations +----------- +The library's horizontal rescaling is too wide by about 3% in order to +allow a much more optimal implementation. This means that a 248 pixel +wide input image should appear as 563 output pixels, but with this +library appears as 581 output pixels. TV aspect ratios probably vary by +this much anyway. If you really need unscaled output, contact me and +I'll see about adding it. + + +Thanks +------ +Thanks to NewRisingSun for his original code and explanations of NTSC, +which was a starting point for me learning about NTSC video and +decoding. Thanks to the Nesdev forum for feedback and encouragement. +Thanks to Martin Freij (Nestopia author) and Charles MacDonald (SMS Plus +author) for significant ongoing testing and feedback as the library has +improved. Thanks to byuu (bsnes author) and pagefault (ZSNES team) for +feedback about the SNES version. + +-- +Shay Green diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc_config.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc_config.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc_config.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc_config.h index 6b9e0bff13..daa08fd6c7 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc_config.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc_config.h @@ -1,31 +1,31 @@ -/* Configure library by modifying this file */ - -#ifndef SMS_NTSC_CONFIG_H -#define SMS_NTSC_CONFIG_H - -/* Format of source & output pixels (RGB555 or RGB565 only) */ -#ifdef USE_15BPP_RENDERING -#define SMS_NTSC_IN_FORMAT SMS_NTSC_RGB15 -#define SMS_NTSC_OUT_DEPTH 15 -#else -#define SMS_NTSC_IN_FORMAT SMS_NTSC_RGB16 -#define SMS_NTSC_OUT_DEPTH 16 -#endif - -/* Original CRAM format (not used) */ -/* #define SMS_NTSC_IN_FORMAT SMS_NTSC_BGR12 */ - -/* The following affect the built-in blitter only; a custom blitter can -handle things however it wants. */ - -/* Type of input pixel values (fixed to 16-bit)*/ -#define SMS_NTSC_IN_T unsigned short - -/* Each raw pixel input value is passed through this. You might want to mask -the pixel index if you use the high bits as flags, etc. */ -#define SMS_NTSC_ADJ_IN( in ) in - -/* For each pixel, this is the basic operation: -output_color = SMS_NTSC_ADJ_IN( SMS_NTSC_IN_T ) */ - -#endif +/* Configure library by modifying this file */ + +#ifndef SMS_NTSC_CONFIG_H +#define SMS_NTSC_CONFIG_H + +/* Format of source & output pixels (RGB555 or RGB565 only) */ +#ifdef USE_15BPP_RENDERING +#define SMS_NTSC_IN_FORMAT SMS_NTSC_RGB15 +#define SMS_NTSC_OUT_DEPTH 15 +#else +#define SMS_NTSC_IN_FORMAT SMS_NTSC_RGB16 +#define SMS_NTSC_OUT_DEPTH 16 +#endif + +/* Original CRAM format (not used) */ +/* #define SMS_NTSC_IN_FORMAT SMS_NTSC_BGR12 */ + +/* The following affect the built-in blitter only; a custom blitter can +handle things however it wants. */ + +/* Type of input pixel values (fixed to 16-bit)*/ +#define SMS_NTSC_IN_T unsigned short + +/* Each raw pixel input value is passed through this. You might want to mask +the pixel index if you use the high bits as flags, etc. */ +#define SMS_NTSC_ADJ_IN( in ) in + +/* For each pixel, this is the basic operation: +output_color = SMS_NTSC_ADJ_IN( SMS_NTSC_IN_T ) */ + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc_impl.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc_impl.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc_impl.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc_impl.h index cf86a55220..c2f341558c 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/sms_ntsc_impl.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/ntsc/sms_ntsc_impl.h @@ -1,439 +1,439 @@ -/* sms_ntsc 0.2.3. http://www.slack.net/~ant/ */ - -/* Common implementation of NTSC filters */ - -#include -#include - -/* Copyright (C) 2006 Shay Green. This module is free software; you -can redistribute it and/or modify it under the terms of the GNU Lesser -General Public License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. This -module is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -details. You should have received a copy of the GNU Lesser General Public -License along with this module; if not, write to the Free Software Foundation, -Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - -#define DISABLE_CORRECTION 0 - -#undef PI -#define PI 3.14159265358979323846f - -#ifndef LUMA_CUTOFF - #define LUMA_CUTOFF 0.20 -#endif -#ifndef gamma_size - #define gamma_size 1 -#endif -#ifndef rgb_bits - #define rgb_bits 8 -#endif -#ifndef artifacts_max - #define artifacts_max (artifacts_mid * 1.5f) -#endif -#ifndef fringing_max - #define fringing_max (fringing_mid * 2) -#endif -#ifndef STD_HUE_CONDITION - #define STD_HUE_CONDITION( setup ) 1 -#endif - -#define ext_decoder_hue (std_decoder_hue + 15) -#define rgb_unit (1 << rgb_bits) -#define rgb_offset (rgb_unit * 2 + 0.5f) - -enum { burst_size = sms_ntsc_entry_size / burst_count }; -enum { kernel_half = 16 }; -enum { kernel_size = kernel_half * 2 + 1 }; - -typedef struct init_t -{ - float to_rgb [burst_count * 6]; - float to_float [gamma_size]; - float contrast; - float brightness; - float artifacts; - float fringing; - float kernel [rescale_out * kernel_size * 2]; -} init_t; - -#define ROTATE_IQ( i, q, sin_b, cos_b ) {\ - float t;\ - t = i * cos_b - q * sin_b;\ - q = i * sin_b + q * cos_b;\ - i = t;\ -} - -static void init_filters( init_t* impl, sms_ntsc_setup_t const* setup ) -{ -#if rescale_out > 1 - float kernels [kernel_size * 2]; -#else - float* const kernels = impl->kernel; -#endif - - /* generate luma (y) filter using sinc kernel */ - { - /* sinc with rolloff (dsf) */ - float const rolloff = 1 + (float) setup->sharpness * (float) 0.032; - float const maxh = 32; - float const pow_a_n = (float) pow( rolloff, maxh ); - float sum; - int i; - /* quadratic mapping to reduce negative (blurring) range */ - float to_angle = (float) setup->resolution + 1; - to_angle = PI / maxh * (float) LUMA_CUTOFF * (to_angle * to_angle + 1); - - kernels [kernel_size * 3 / 2] = maxh; /* default center value */ - for ( i = 0; i < kernel_half * 2 + 1; i++ ) - { - int x = i - kernel_half; - float angle = x * to_angle; - /* instability occurs at center point with rolloff very close to 1.0 */ - if ( x || pow_a_n > (float) 1.056 || pow_a_n < (float) 0.981 ) - { - float rolloff_cos_a = rolloff * (float) cos( angle ); - float num = 1 - rolloff_cos_a - - pow_a_n * (float) cos( maxh * angle ) + - pow_a_n * rolloff * (float) cos( (maxh - 1) * angle ); - float den = 1 - rolloff_cos_a - rolloff_cos_a + rolloff * rolloff; - float dsf = num / den; - kernels [kernel_size * 3 / 2 - kernel_half + i] = dsf - (float) 0.5; - } - } - - /* apply blackman window and find sum */ - sum = 0; - for ( i = 0; i < kernel_half * 2 + 1; i++ ) - { - float x = PI * 2 / (kernel_half * 2) * i; - float blackman = 0.42f - 0.5f * (float) cos( x ) + 0.08f * (float) cos( x * 2 ); - sum += (kernels [kernel_size * 3 / 2 - kernel_half + i] *= blackman); - } - - /* normalize kernel */ - sum = 1.0f / sum; - for ( i = 0; i < kernel_half * 2 + 1; i++ ) - { - int x = kernel_size * 3 / 2 - kernel_half + i; - kernels [x] *= sum; - assert( kernels [x] == kernels [x] ); /* catch numerical instability */ - } - } - - /* generate chroma (iq) filter using gaussian kernel */ - { - float const cutoff_factor = -0.03125f; - float cutoff = (float) setup->bleed; - int i; - - if ( cutoff < 0 ) - { - /* keep extreme value accessible only near upper end of scale (1.0) */ - cutoff *= cutoff; - cutoff *= cutoff; - cutoff *= cutoff; - cutoff *= -30.0f / 0.65f; - } - cutoff = cutoff_factor - 0.65f * cutoff_factor * cutoff; - - for ( i = -kernel_half; i <= kernel_half; i++ ) - kernels [kernel_size / 2 + i] = (float) exp( i * i * cutoff ); - - /* normalize even and odd phases separately */ - for ( i = 0; i < 2; i++ ) - { - float sum = 0; - int x; - for ( x = i; x < kernel_size; x += 2 ) - sum += kernels [x]; - - sum = 1.0f / sum; - for ( x = i; x < kernel_size; x += 2 ) - { - kernels [x] *= sum; - assert( kernels [x] == kernels [x] ); /* catch numerical instability */ - } - } - } - - /* - printf( "luma:\n" ); - for ( i = kernel_size; i < kernel_size * 2; i++ ) - printf( "%f\n", kernels [i] ); - printf( "chroma:\n" ); - for ( i = 0; i < kernel_size; i++ ) - printf( "%f\n", kernels [i] ); - */ - - /* generate linear rescale kernels */ - #if rescale_out > 1 - { - float weight = 1.0f; - float* out = impl->kernel; - int n = rescale_out; - do - { - float remain = 0; - int i; - weight -= 1.0f / rescale_in; - for ( i = 0; i < kernel_size * 2; i++ ) - { - float cur = kernels [i]; - float m = cur * weight; - *out++ = m + remain; - remain = cur - m; - } - } - while ( --n ); - } - #endif -} - -static float const default_decoder [6] = - { 0.956f, 0.621f, -0.272f, -0.647f, -1.105f, 1.702f }; - -static void init( init_t* impl, sms_ntsc_setup_t const* setup ) -{ - impl->brightness = (float) setup->brightness * (0.5f * rgb_unit) + rgb_offset; - impl->contrast = (float) setup->contrast * (0.5f * rgb_unit) + rgb_unit; - #ifdef default_palette_contrast - if ( !setup->palette ) - impl->contrast *= default_palette_contrast; - #endif - - impl->artifacts = (float) setup->artifacts; - if ( impl->artifacts > 0 ) - impl->artifacts *= artifacts_max - artifacts_mid; - impl->artifacts = impl->artifacts * artifacts_mid + artifacts_mid; - - impl->fringing = (float) setup->fringing; - if ( impl->fringing > 0 ) - impl->fringing *= fringing_max - fringing_mid; - impl->fringing = impl->fringing * fringing_mid + fringing_mid; - - init_filters( impl, setup ); - - /* generate gamma table */ - if ( gamma_size > 1 ) - { - float const to_float = 1.0f / (gamma_size - (gamma_size > 1)); - float const gamma = 1.1333f - (float) setup->gamma * 0.5f; - /* match common PC's 2.2 gamma to TV's 2.65 gamma */ - int i; - for ( i = 0; i < gamma_size; i++ ) - impl->to_float [i] = - (float) pow( i * to_float, gamma ) * impl->contrast + impl->brightness; - } - - /* setup decoder matricies */ - { - float hue = (float) setup->hue * PI + PI / 180 * ext_decoder_hue; - float sat = (float) setup->saturation + 1; - float const* decoder = setup->decoder_matrix; - if ( !decoder ) - { - decoder = default_decoder; - if ( STD_HUE_CONDITION( setup ) ) - hue += PI / 180 * (std_decoder_hue - ext_decoder_hue); - } - - { - float s = (float) sin( hue ) * sat; - float c = (float) cos( hue ) * sat; - float* out = impl->to_rgb; - int n; - - n = burst_count; - do - { - float const* in = decoder; - int n = 3; - do - { - float i = *in++; - float q = *in++; - *out++ = i * c - q * s; - *out++ = i * s + q * c; - } - while ( --n ); - if ( burst_count <= 1 ) - break; - ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ - } - while ( --n ); - } - } -} - -/* kernel generation */ - -#define RGB_TO_YIQ( r, g, b, y, i ) (\ - (y = (r) * 0.299f + (g) * 0.587f + (b) * 0.114f),\ - (i = (r) * 0.596f - (g) * 0.275f - (b) * 0.321f),\ - ((r) * 0.212f - (g) * 0.523f + (b) * 0.311f)\ -) - -#define YIQ_TO_RGB( y, i, q, to_rgb, type, r, g ) (\ - r = (type) (y + to_rgb [0] * i + to_rgb [1] * q),\ - g = (type) (y + to_rgb [2] * i + to_rgb [3] * q),\ - (type) (y + to_rgb [4] * i + to_rgb [5] * q)\ -) - -#define PACK_RGB( r, g, b ) ((r) << 21 | (g) << 11 | (b) << 1) - -enum { rgb_kernel_size = burst_size / alignment_count }; -enum { rgb_bias = rgb_unit * 2 * sms_ntsc_rgb_builder }; - -typedef struct pixel_info_t -{ - int offset; - float negate; - float kernel [4]; -} pixel_info_t; - -#if rescale_in > 1 - #define PIXEL_OFFSET_( ntsc, scaled ) \ - (kernel_size / 2 + ntsc + (scaled != 0) + (rescale_out - scaled) % rescale_out + \ - (kernel_size * 2 * scaled)) - - #define PIXEL_OFFSET( ntsc, scaled ) \ - PIXEL_OFFSET_( ((ntsc) - (scaled) / rescale_out * rescale_in),\ - (((scaled) + rescale_out * 10) % rescale_out) ),\ - (1.0f - (((ntsc) + 100) & 2)) -#else - #define PIXEL_OFFSET( ntsc, scaled ) \ - (kernel_size / 2 + (ntsc) - (scaled)),\ - (1.0f - (((ntsc) + 100) & 2)) -#endif - -extern pixel_info_t const sms_ntsc_pixels [alignment_count]; - -/* Generate pixel at all burst phases and column alignments */ -static void gen_kernel( init_t* impl, float y, float i, float q, sms_ntsc_rgb_t* out ) -{ - /* generate for each scanline burst phase */ - float const* to_rgb = impl->to_rgb; - int burst_remain = burst_count; - y -= rgb_offset; - do - { - /* Encode yiq into *two* composite signals (to allow control over artifacting). - Convolve these with kernels which: filter respective components, apply - sharpening, and rescale horizontally. Convert resulting yiq to rgb and pack - into integer. Based on algorithm by NewRisingSun. */ - pixel_info_t const* pixel = sms_ntsc_pixels; - int alignment_remain = alignment_count; - do - { - /* negate is -1 when composite starts at odd multiple of 2 */ - float const yy = y * impl->fringing * pixel->negate; - float const ic0 = (i + yy) * pixel->kernel [0]; - float const qc1 = (q + yy) * pixel->kernel [1]; - float const ic2 = (i - yy) * pixel->kernel [2]; - float const qc3 = (q - yy) * pixel->kernel [3]; - - float const factor = impl->artifacts * pixel->negate; - float const ii = i * factor; - float const yc0 = (y + ii) * pixel->kernel [0]; - float const yc2 = (y - ii) * pixel->kernel [2]; - - float const qq = q * factor; - float const yc1 = (y + qq) * pixel->kernel [1]; - float const yc3 = (y - qq) * pixel->kernel [3]; - - float const* k = &impl->kernel [pixel->offset]; - int n; - ++pixel; - for ( n = rgb_kernel_size; n; --n ) - { - float i = k[0]*ic0 + k[2]*ic2; - float q = k[1]*qc1 + k[3]*qc3; - float y = k[kernel_size+0]*yc0 + k[kernel_size+1]*yc1 + - k[kernel_size+2]*yc2 + k[kernel_size+3]*yc3 + rgb_offset; - if ( rescale_out <= 1 ) - k--; - else if ( k < &impl->kernel [kernel_size * 2 * (rescale_out - 1)] ) - k += kernel_size * 2 - 1; - else - k -= kernel_size * 2 * (rescale_out - 1) + 2; - { - int r, g, b = YIQ_TO_RGB( y, i, q, to_rgb, int, r, g ); - *out++ = PACK_RGB( r, g, b ) - rgb_bias; - } - } - } - while ( alignment_count > 1 && --alignment_remain ); - - if ( burst_count <= 1 ) - break; - - to_rgb += 6; - - ROTATE_IQ( i, q, -0.866025f, -0.5f ); /* -120 degrees */ - } - while ( --burst_remain ); -} - -static void correct_errors( sms_ntsc_rgb_t color, sms_ntsc_rgb_t* out ); - -#if DISABLE_CORRECTION - #define CORRECT_ERROR( a ) { out [i] += rgb_bias; } - #define DISTRIBUTE_ERROR( a, b, c ) { out [i] += rgb_bias; } -#else - #define CORRECT_ERROR( a ) { out [a] += error; } - #define DISTRIBUTE_ERROR( a, b, c ) {\ - sms_ntsc_rgb_t fourth = (error + 2 * sms_ntsc_rgb_builder) >> 2;\ - fourth &= (rgb_bias >> 1) - sms_ntsc_rgb_builder;\ - fourth -= rgb_bias >> 2;\ - out [a] += fourth;\ - out [b] += fourth;\ - out [c] += fourth;\ - out [i] += error - (fourth * 3);\ - } -#endif - -#define RGB_PALETTE_OUT( rgb, out_ )\ -{\ - unsigned char* out = (out_);\ - sms_ntsc_rgb_t clamped = (rgb);\ - SMS_NTSC_CLAMP_( clamped, (8 - rgb_bits) );\ - out [0] = (unsigned char) (clamped >> 21);\ - out [1] = (unsigned char) (clamped >> 11);\ - out [2] = (unsigned char) (clamped >> 1);\ -} - -/* blitter related */ - -#ifndef restrict - #if defined (__GNUC__) - #define restrict __restrict__ - #elif defined (_MSC_VER) && _MSC_VER > 1300 - #define restrict __restrict - #else - /* no support for restricted pointers */ - #define restrict - #endif -#endif - -#include - -#if SMS_NTSC_OUT_DEPTH <= 16 - #if USHRT_MAX == 0xFFFF - typedef unsigned short sms_ntsc_out_t; - #else - #error "Need 16-bit int type" - #endif - -#else - #if UINT_MAX == 0xFFFFFFFF - typedef unsigned int sms_ntsc_out_t; - #elif ULONG_MAX == 0xFFFFFFFF - typedef unsigned long sms_ntsc_out_t; - #else - #error "Need 32-bit int type" - #endif - -#endif +/* sms_ntsc 0.2.3. http://www.slack.net/~ant/ */ + +/* Common implementation of NTSC filters */ + +#include +#include + +/* Copyright (C) 2006 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. You should have received a copy of the GNU Lesser General Public +License along with this module; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#define DISABLE_CORRECTION 0 + +#undef PI +#define PI 3.14159265358979323846f + +#ifndef LUMA_CUTOFF + #define LUMA_CUTOFF 0.20 +#endif +#ifndef gamma_size + #define gamma_size 1 +#endif +#ifndef rgb_bits + #define rgb_bits 8 +#endif +#ifndef artifacts_max + #define artifacts_max (artifacts_mid * 1.5f) +#endif +#ifndef fringing_max + #define fringing_max (fringing_mid * 2) +#endif +#ifndef STD_HUE_CONDITION + #define STD_HUE_CONDITION( setup ) 1 +#endif + +#define ext_decoder_hue (std_decoder_hue + 15) +#define rgb_unit (1 << rgb_bits) +#define rgb_offset (rgb_unit * 2 + 0.5f) + +enum { burst_size = sms_ntsc_entry_size / burst_count }; +enum { kernel_half = 16 }; +enum { kernel_size = kernel_half * 2 + 1 }; + +typedef struct init_t +{ + float to_rgb [burst_count * 6]; + float to_float [gamma_size]; + float contrast; + float brightness; + float artifacts; + float fringing; + float kernel [rescale_out * kernel_size * 2]; +} init_t; + +#define ROTATE_IQ( i, q, sin_b, cos_b ) {\ + float t;\ + t = i * cos_b - q * sin_b;\ + q = i * sin_b + q * cos_b;\ + i = t;\ +} + +static void init_filters( init_t* impl, sms_ntsc_setup_t const* setup ) +{ +#if rescale_out > 1 + float kernels [kernel_size * 2]; +#else + float* const kernels = impl->kernel; +#endif + + /* generate luma (y) filter using sinc kernel */ + { + /* sinc with rolloff (dsf) */ + float const rolloff = 1 + (float) setup->sharpness * (float) 0.032; + float const maxh = 32; + float const pow_a_n = (float) pow( rolloff, maxh ); + float sum; + int i; + /* quadratic mapping to reduce negative (blurring) range */ + float to_angle = (float) setup->resolution + 1; + to_angle = PI / maxh * (float) LUMA_CUTOFF * (to_angle * to_angle + 1); + + kernels [kernel_size * 3 / 2] = maxh; /* default center value */ + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + int x = i - kernel_half; + float angle = x * to_angle; + /* instability occurs at center point with rolloff very close to 1.0 */ + if ( x || pow_a_n > (float) 1.056 || pow_a_n < (float) 0.981 ) + { + float rolloff_cos_a = rolloff * (float) cos( angle ); + float num = 1 - rolloff_cos_a - + pow_a_n * (float) cos( maxh * angle ) + + pow_a_n * rolloff * (float) cos( (maxh - 1) * angle ); + float den = 1 - rolloff_cos_a - rolloff_cos_a + rolloff * rolloff; + float dsf = num / den; + kernels [kernel_size * 3 / 2 - kernel_half + i] = dsf - (float) 0.5; + } + } + + /* apply blackman window and find sum */ + sum = 0; + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + float x = PI * 2 / (kernel_half * 2) * i; + float blackman = 0.42f - 0.5f * (float) cos( x ) + 0.08f * (float) cos( x * 2 ); + sum += (kernels [kernel_size * 3 / 2 - kernel_half + i] *= blackman); + } + + /* normalize kernel */ + sum = 1.0f / sum; + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + int x = kernel_size * 3 / 2 - kernel_half + i; + kernels [x] *= sum; + assert( kernels [x] == kernels [x] ); /* catch numerical instability */ + } + } + + /* generate chroma (iq) filter using gaussian kernel */ + { + float const cutoff_factor = -0.03125f; + float cutoff = (float) setup->bleed; + int i; + + if ( cutoff < 0 ) + { + /* keep extreme value accessible only near upper end of scale (1.0) */ + cutoff *= cutoff; + cutoff *= cutoff; + cutoff *= cutoff; + cutoff *= -30.0f / 0.65f; + } + cutoff = cutoff_factor - 0.65f * cutoff_factor * cutoff; + + for ( i = -kernel_half; i <= kernel_half; i++ ) + kernels [kernel_size / 2 + i] = (float) exp( i * i * cutoff ); + + /* normalize even and odd phases separately */ + for ( i = 0; i < 2; i++ ) + { + float sum = 0; + int x; + for ( x = i; x < kernel_size; x += 2 ) + sum += kernels [x]; + + sum = 1.0f / sum; + for ( x = i; x < kernel_size; x += 2 ) + { + kernels [x] *= sum; + assert( kernels [x] == kernels [x] ); /* catch numerical instability */ + } + } + } + + /* + printf( "luma:\n" ); + for ( i = kernel_size; i < kernel_size * 2; i++ ) + printf( "%f\n", kernels [i] ); + printf( "chroma:\n" ); + for ( i = 0; i < kernel_size; i++ ) + printf( "%f\n", kernels [i] ); + */ + + /* generate linear rescale kernels */ + #if rescale_out > 1 + { + float weight = 1.0f; + float* out = impl->kernel; + int n = rescale_out; + do + { + float remain = 0; + int i; + weight -= 1.0f / rescale_in; + for ( i = 0; i < kernel_size * 2; i++ ) + { + float cur = kernels [i]; + float m = cur * weight; + *out++ = m + remain; + remain = cur - m; + } + } + while ( --n ); + } + #endif +} + +static float const default_decoder [6] = + { 0.956f, 0.621f, -0.272f, -0.647f, -1.105f, 1.702f }; + +static void init( init_t* impl, sms_ntsc_setup_t const* setup ) +{ + impl->brightness = (float) setup->brightness * (0.5f * rgb_unit) + rgb_offset; + impl->contrast = (float) setup->contrast * (0.5f * rgb_unit) + rgb_unit; + #ifdef default_palette_contrast + if ( !setup->palette ) + impl->contrast *= default_palette_contrast; + #endif + + impl->artifacts = (float) setup->artifacts; + if ( impl->artifacts > 0 ) + impl->artifacts *= artifacts_max - artifacts_mid; + impl->artifacts = impl->artifacts * artifacts_mid + artifacts_mid; + + impl->fringing = (float) setup->fringing; + if ( impl->fringing > 0 ) + impl->fringing *= fringing_max - fringing_mid; + impl->fringing = impl->fringing * fringing_mid + fringing_mid; + + init_filters( impl, setup ); + + /* generate gamma table */ + if ( gamma_size > 1 ) + { + float const to_float = 1.0f / (gamma_size - (gamma_size > 1)); + float const gamma = 1.1333f - (float) setup->gamma * 0.5f; + /* match common PC's 2.2 gamma to TV's 2.65 gamma */ + int i; + for ( i = 0; i < gamma_size; i++ ) + impl->to_float [i] = + (float) pow( i * to_float, gamma ) * impl->contrast + impl->brightness; + } + + /* setup decoder matricies */ + { + float hue = (float) setup->hue * PI + PI / 180 * ext_decoder_hue; + float sat = (float) setup->saturation + 1; + float const* decoder = setup->decoder_matrix; + if ( !decoder ) + { + decoder = default_decoder; + if ( STD_HUE_CONDITION( setup ) ) + hue += PI / 180 * (std_decoder_hue - ext_decoder_hue); + } + + { + float s = (float) sin( hue ) * sat; + float c = (float) cos( hue ) * sat; + float* out = impl->to_rgb; + int n; + + n = burst_count; + do + { + float const* in = decoder; + int n = 3; + do + { + float i = *in++; + float q = *in++; + *out++ = i * c - q * s; + *out++ = i * s + q * c; + } + while ( --n ); + if ( burst_count <= 1 ) + break; + ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ + } + while ( --n ); + } + } +} + +/* kernel generation */ + +#define RGB_TO_YIQ( r, g, b, y, i ) (\ + (y = (r) * 0.299f + (g) * 0.587f + (b) * 0.114f),\ + (i = (r) * 0.596f - (g) * 0.275f - (b) * 0.321f),\ + ((r) * 0.212f - (g) * 0.523f + (b) * 0.311f)\ +) + +#define YIQ_TO_RGB( y, i, q, to_rgb, type, r, g ) (\ + r = (type) (y + to_rgb [0] * i + to_rgb [1] * q),\ + g = (type) (y + to_rgb [2] * i + to_rgb [3] * q),\ + (type) (y + to_rgb [4] * i + to_rgb [5] * q)\ +) + +#define PACK_RGB( r, g, b ) ((r) << 21 | (g) << 11 | (b) << 1) + +enum { rgb_kernel_size = burst_size / alignment_count }; +enum { rgb_bias = rgb_unit * 2 * sms_ntsc_rgb_builder }; + +typedef struct pixel_info_t +{ + int offset; + float negate; + float kernel [4]; +} pixel_info_t; + +#if rescale_in > 1 + #define PIXEL_OFFSET_( ntsc, scaled ) \ + (kernel_size / 2 + ntsc + (scaled != 0) + (rescale_out - scaled) % rescale_out + \ + (kernel_size * 2 * scaled)) + + #define PIXEL_OFFSET( ntsc, scaled ) \ + PIXEL_OFFSET_( ((ntsc) - (scaled) / rescale_out * rescale_in),\ + (((scaled) + rescale_out * 10) % rescale_out) ),\ + (1.0f - (((ntsc) + 100) & 2)) +#else + #define PIXEL_OFFSET( ntsc, scaled ) \ + (kernel_size / 2 + (ntsc) - (scaled)),\ + (1.0f - (((ntsc) + 100) & 2)) +#endif + +extern pixel_info_t const sms_ntsc_pixels [alignment_count]; + +/* Generate pixel at all burst phases and column alignments */ +static void gen_kernel( init_t* impl, float y, float i, float q, sms_ntsc_rgb_t* out ) +{ + /* generate for each scanline burst phase */ + float const* to_rgb = impl->to_rgb; + int burst_remain = burst_count; + y -= rgb_offset; + do + { + /* Encode yiq into *two* composite signals (to allow control over artifacting). + Convolve these with kernels which: filter respective components, apply + sharpening, and rescale horizontally. Convert resulting yiq to rgb and pack + into integer. Based on algorithm by NewRisingSun. */ + pixel_info_t const* pixel = sms_ntsc_pixels; + int alignment_remain = alignment_count; + do + { + /* negate is -1 when composite starts at odd multiple of 2 */ + float const yy = y * impl->fringing * pixel->negate; + float const ic0 = (i + yy) * pixel->kernel [0]; + float const qc1 = (q + yy) * pixel->kernel [1]; + float const ic2 = (i - yy) * pixel->kernel [2]; + float const qc3 = (q - yy) * pixel->kernel [3]; + + float const factor = impl->artifacts * pixel->negate; + float const ii = i * factor; + float const yc0 = (y + ii) * pixel->kernel [0]; + float const yc2 = (y - ii) * pixel->kernel [2]; + + float const qq = q * factor; + float const yc1 = (y + qq) * pixel->kernel [1]; + float const yc3 = (y - qq) * pixel->kernel [3]; + + float const* k = &impl->kernel [pixel->offset]; + int n; + ++pixel; + for ( n = rgb_kernel_size; n; --n ) + { + float i = k[0]*ic0 + k[2]*ic2; + float q = k[1]*qc1 + k[3]*qc3; + float y = k[kernel_size+0]*yc0 + k[kernel_size+1]*yc1 + + k[kernel_size+2]*yc2 + k[kernel_size+3]*yc3 + rgb_offset; + if ( rescale_out <= 1 ) + k--; + else if ( k < &impl->kernel [kernel_size * 2 * (rescale_out - 1)] ) + k += kernel_size * 2 - 1; + else + k -= kernel_size * 2 * (rescale_out - 1) + 2; + { + int r, g, b = YIQ_TO_RGB( y, i, q, to_rgb, int, r, g ); + *out++ = PACK_RGB( r, g, b ) - rgb_bias; + } + } + } + while ( alignment_count > 1 && --alignment_remain ); + + if ( burst_count <= 1 ) + break; + + to_rgb += 6; + + ROTATE_IQ( i, q, -0.866025f, -0.5f ); /* -120 degrees */ + } + while ( --burst_remain ); +} + +static void correct_errors( sms_ntsc_rgb_t color, sms_ntsc_rgb_t* out ); + +#if DISABLE_CORRECTION + #define CORRECT_ERROR( a ) { out [i] += rgb_bias; } + #define DISTRIBUTE_ERROR( a, b, c ) { out [i] += rgb_bias; } +#else + #define CORRECT_ERROR( a ) { out [a] += error; } + #define DISTRIBUTE_ERROR( a, b, c ) {\ + sms_ntsc_rgb_t fourth = (error + 2 * sms_ntsc_rgb_builder) >> 2;\ + fourth &= (rgb_bias >> 1) - sms_ntsc_rgb_builder;\ + fourth -= rgb_bias >> 2;\ + out [a] += fourth;\ + out [b] += fourth;\ + out [c] += fourth;\ + out [i] += error - (fourth * 3);\ + } +#endif + +#define RGB_PALETTE_OUT( rgb, out_ )\ +{\ + unsigned char* out = (out_);\ + sms_ntsc_rgb_t clamped = (rgb);\ + SMS_NTSC_CLAMP_( clamped, (8 - rgb_bits) );\ + out [0] = (unsigned char) (clamped >> 21);\ + out [1] = (unsigned char) (clamped >> 11);\ + out [2] = (unsigned char) (clamped >> 1);\ +} + +/* blitter related */ + +#ifndef restrict + #if defined (__GNUC__) + #define restrict __restrict__ + #elif defined (_MSC_VER) && _MSC_VER > 1300 + #define restrict __restrict + #else + /* no support for restricted pointers */ + #define restrict + #endif +#endif + +#include + +#if SMS_NTSC_OUT_DEPTH <= 16 + #if USHRT_MAX == 0xFFFF + typedef unsigned short sms_ntsc_out_t; + #else + #error "Need 16-bit int type" + #endif + +#else + #if UINT_MAX == 0xFFFFFFFF + typedef unsigned int sms_ntsc_out_t; + #elif ULONG_MAX == 0xFFFFFFFF + typedef unsigned long sms_ntsc_out_t; + #else + #error "Need 32-bit int type" + #endif + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/shared.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/shared.h similarity index 94% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/shared.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/shared.h index 700f27bff0..9d100d8dde 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/shared.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/shared.h @@ -1,41 +1,41 @@ -#ifndef _SHARED_H_ -#define _SHARED_H_ - -#include -#include -#include -#include - -#include "types.h" -#include "osd.h" -#include "macros.h" -#include "loadrom.h" -#include "m68k.h" -#include "z80.h" -#include "system.h" -#include "genesis.h" -#include "vdp_ctrl.h" -#include "vdp_render.h" -#include "mem68k.h" -#include "memz80.h" -#include "membnk.h" -#include "io_ctrl.h" -#include "input.h" -#include "sound.h" -#include "psg.h" -#include "ym2413.h" -#include "ym2612.h" -#ifdef HAVE_YM3438_CORE -#include "ym3438.h" -#endif -#ifdef HAVE_OPLL_CORE -#include "opll.h" -#endif -#include "sram.h" -#include "ggenie.h" -#include "areplay.h" -#include "svp.h" -#include "state.h" - -#endif /* _SHARED_H_ */ - +#ifndef _SHARED_H_ +#define _SHARED_H_ + +#include +#include +#include +#include + +#include "types.h" +#include "osd.h" +#include "macros.h" +#include "loadrom.h" +#include "m68k.h" +#include "z80.h" +#include "system.h" +#include "genesis.h" +#include "vdp_ctrl.h" +#include "vdp_render.h" +#include "mem68k.h" +#include "memz80.h" +#include "membnk.h" +#include "io_ctrl.h" +#include "input.h" +#include "sound.h" +#include "psg.h" +#include "ym2413.h" +#include "ym2612.h" +#ifdef HAVE_YM3438_CORE +#include "ym3438.h" +#endif +#ifdef HAVE_OPLL_CORE +#include "opll.h" +#endif +#include "sram.h" +#include "ggenie.h" +#include "areplay.h" +#include "svp.h" +#include "state.h" + +#endif /* _SHARED_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/blip_buf.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/blip_buf.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/blip_buf.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/blip_buf.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/blip_buf.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/blip_buf.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/blip_buf.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/blip_buf.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/eq.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/eq.c new file mode 100644 index 0000000000..40c8f1c01f --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/eq.c @@ -0,0 +1,132 @@ +/*---------------------------------------------------------------------------- +// +// 3 Band EQ :) +// +// EQ.C - Main Source file for 3 band EQ +// +// (c) Neil C / Etanza Systems / 2K6 +// +// Shouts / Loves / Moans = etanza at lycos dot co dot uk +// +// This work is hereby placed in the public domain for all purposes, including +// use in commercial applications. +// +// The author assumes NO RESPONSIBILITY for any problems caused by the use of +// this software. +// +//----------------------------------------------------------------------------*/ + +/* NOTES : +// +// - Original filter code by Paul Kellet (musicdsp.pdf) +// +// - Uses 4 first order filters in series, should give 24dB per octave +// +// - Now with P4 Denormal fix :) + + +//----------------------------------------------------------------------------*/ + +/* ---------- +//| Includes | +// ----------*/ +#include +#include +#include +#include "eq.h" +#include "macros.h" + + +/* ----------- +//| Constants | +// -----------*/ + +static double vsa = (1.0 / 4294967295.0); /* Very small amount (Denormal Fix) */ + + +/* --------------- +//| Initialise EQ | +// ---------------*/ + +/* Recommended frequencies are ... +// +// lowfreq = 880 Hz +// highfreq = 5000 Hz +// +// Set mixfreq to whatever rate your system is using (eg 48Khz)*/ + +void init_3band_state(EQSTATE * es, int lowfreq, int highfreq, int mixfreq) +{ + /* Clear state */ + + memset(es, 0, sizeof(EQSTATE)); + + /* Set Low/Mid/High gains to unity */ + + es->lg = 1.0; + es->mg = 1.0; + es->hg = 1.0; + + /* Calculate filter cutoff frequencies */ + + es->lf = 2 * sin(M_PI * ((double) lowfreq / (double) mixfreq)); + es->hf = 2 * sin(M_PI * ((double) highfreq / (double) mixfreq)); +} + + +/* --------------- +//| EQ one sample | +// ---------------*/ + +/* - sample can be any range you like :) +// +// Note that the output will depend on the gain settings for each band +// (especially the bass) so may require clipping before output, but you +// knew that anyway :)*/ + +double do_3band(EQSTATE * es, int sample) +{ + /* Locals */ + + double l, m, h; /* Low / Mid / High - Sample Values */ + + /* Filter #1 (lowpass) */ + + es->f1p0 += (es->lf * ((double) sample - es->f1p0)) + vsa; + es->f1p1 += (es->lf * (es->f1p0 - es->f1p1)); + es->f1p2 += (es->lf * (es->f1p1 - es->f1p2)); + es->f1p3 += (es->lf * (es->f1p2 - es->f1p3)); + + l = es->f1p3; + + /* Filter #2 (highpass) */ + + es->f2p0 += (es->hf * ((double) sample - es->f2p0)) + vsa; + es->f2p1 += (es->hf * (es->f2p0 - es->f2p1)); + es->f2p2 += (es->hf * (es->f2p1 - es->f2p2)); + es->f2p3 += (es->hf * (es->f2p2 - es->f2p3)); + + h = es->sdm3 - es->f2p3; + + /* Calculate midrange (signal - (low + high)) */ + + /* m = es->sdm3 - (h + l); */ + /* fix from http://www.musicdsp.org/showArchiveComment.php?ArchiveID=236 ? */ + m = sample - (h + l); + + /* Scale, Combine and store */ + + l *= es->lg; + m *= es->mg; + h *= es->hg; + + /* Shuffle history buffer */ + + es->sdm3 = es->sdm2; + es->sdm2 = es->sdm1; + es->sdm1 = sample; + + /* Return result */ + + return (int) (l + m + h); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/eq.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/eq.h similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/eq.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/eq.h index d1f37dc56c..4afa747e8d 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/eq.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/eq.h @@ -1,67 +1,67 @@ -/*--------------------------------------------------------------------------- -// -// 3 Band EQ :) -// -// EQ.H - Header file for 3 band EQ -// -// (c) Neil C / Etanza Systems / 2K6 -// -// Shouts / Loves / Moans = etanza at lycos dot co dot uk -// -// This work is hereby placed in the public domain for all purposes, including -// use in commercial applications. -// -// The author assumes NO RESPONSIBILITY for any problems caused by the use of -// this software. -// -//----------------------------------------------------------------------------*/ - -#ifndef __EQ3BAND__ -#define __EQ3BAND__ - -/* ------------ -//| Structures | -// ------------*/ - -typedef struct { - /* Filter #1 (Low band) */ - - double lf; /* Frequency */ - double f1p0; /* Poles ... */ - double f1p1; - double f1p2; - double f1p3; - - /* Filter #2 (High band) */ - - double hf; /* Frequency */ - double f2p0; /* Poles ... */ - double f2p1; - double f2p2; - double f2p3; - - /* Sample history buffer */ - - double sdm1; /* Sample data minus 1 */ - double sdm2; /* 2 */ - double sdm3; /* 3 */ - - /* Gain Controls */ - - double lg; /* low gain */ - double mg; /* mid gain */ - double hg; /* high gain */ - -} EQSTATE; - - -/* --------- -//| Exports | -// ---------*/ - -extern void init_3band_state(EQSTATE * es, int lowfreq, int highfreq, - int mixfreq); -extern double do_3band(EQSTATE * es, int sample); - - -#endif /* #ifndef __EQ3BAND__ */ +/*--------------------------------------------------------------------------- +// +// 3 Band EQ :) +// +// EQ.H - Header file for 3 band EQ +// +// (c) Neil C / Etanza Systems / 2K6 +// +// Shouts / Loves / Moans = etanza at lycos dot co dot uk +// +// This work is hereby placed in the public domain for all purposes, including +// use in commercial applications. +// +// The author assumes NO RESPONSIBILITY for any problems caused by the use of +// this software. +// +//----------------------------------------------------------------------------*/ + +#ifndef __EQ3BAND__ +#define __EQ3BAND__ + +/* ------------ +//| Structures | +// ------------*/ + +typedef struct { + /* Filter #1 (Low band) */ + + double lf; /* Frequency */ + double f1p0; /* Poles ... */ + double f1p1; + double f1p2; + double f1p3; + + /* Filter #2 (High band) */ + + double hf; /* Frequency */ + double f2p0; /* Poles ... */ + double f2p1; + double f2p2; + double f2p3; + + /* Sample history buffer */ + + double sdm1; /* Sample data minus 1 */ + double sdm2; /* 2 */ + double sdm3; /* 3 */ + + /* Gain Controls */ + + double lg; /* low gain */ + double mg; /* mid gain */ + double hg; /* high gain */ + +} EQSTATE; + + +/* --------- +//| Exports | +// ---------*/ + +extern void init_3band_state(EQSTATE * es, int lowfreq, int highfreq, + int mixfreq); +extern double do_3band(EQSTATE * es, int sample); + + +#endif /* #ifndef __EQ3BAND__ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/opll.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/opll.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/opll.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/opll.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/opll.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/opll.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/opll.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/opll.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/psg.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/psg.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/psg.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/psg.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/psg.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/psg.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/psg.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/psg.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/sound.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/sound.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/sound.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/sound.c index 61b4e211cd..fee4d6754f 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/sound.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/sound.c @@ -1,564 +1,564 @@ -/*************************************************************************************** - * Genesis Plus - * Sound Hardware - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "blip_buf.h" - -/* YM2612 internal clock = input clock / 6 = (master clock / 7) / 6 */ -#define YM2612_CLOCK_RATIO (7*6) - -/* FM output buffer (large enough to hold a whole frame at original chips rate) */ -#if defined(HAVE_YM3438_CORE) || defined(HAVE_OPLL_CORE) -static int fm_buffer[1080 * 2 * 24]; -#else -static int fm_buffer[1080 * 2]; -#endif - -static int fm_last[2]; -static int *fm_ptr; - -/* Cycle-accurate FM samples */ -static int fm_cycles_ratio; -static int fm_cycles_start; -static int fm_cycles_count; -static int fm_cycles_busy; - -/* YM chip function pointers */ -static void (*YM_Update)(int *buffer, int length); -void (*fm_reset)(unsigned int cycles); -void (*fm_write)(unsigned int cycles, unsigned int address, unsigned int data); -unsigned int (*fm_read)(unsigned int cycles, unsigned int address); - -#ifdef HAVE_YM3438_CORE -static ym3438_t ym3438; -static short ym3438_accm[24][2]; -static int ym3438_sample[2]; -static int ym3438_cycles; -#endif - -#ifdef HAVE_OPLL_CORE -static opll_t opll; -static int opll_accm[18][2]; -static int opll_sample; -static int opll_cycles; -static int opll_status; -#endif - -/* Run FM chip until required M-cycles */ -INLINE void fm_update(int cycles) -{ - if (cycles > fm_cycles_count) - { - /* number of samples to run */ - int samples = (cycles - fm_cycles_count + fm_cycles_ratio - 1) / fm_cycles_ratio; - - /* run FM chip to sample buffer */ - YM_Update(fm_ptr, samples); - - /* update FM buffer pointer */ - fm_ptr += (samples * 2); - - /* update FM cycle counter */ - fm_cycles_count += (samples * fm_cycles_ratio); - } -} - -static void YM2612_Reset(unsigned int cycles) -{ - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* reset FM chip */ - YM2612ResetChip(); - fm_cycles_busy = 0; -} - -static void YM2612_Write(unsigned int cycles, unsigned int a, unsigned int v) -{ - /* detect DATA port write */ - if (a & 1) - { - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* set FM BUSY end cycle (discrete or ASIC-integrated YM2612 chip only) */ - if (config.ym2612 < YM2612_ENHANCED) - { - fm_cycles_busy = (((cycles + YM2612_CLOCK_RATIO - 1) / YM2612_CLOCK_RATIO) + 32) * YM2612_CLOCK_RATIO; - } - } - - /* write FM register */ - YM2612Write(a, v); -} - -static unsigned int YM2612_Read(unsigned int cycles, unsigned int a) -{ - /* FM status can only be read from (A0,A1)=(0,0) on discrete YM2612 */ - if ((a == 0) || (config.ym2612 > YM2612_DISCRETE)) - { - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* read FM status */ - if (cycles >= fm_cycles_busy) - { - /* BUSY flag cleared */ - return YM2612Read(); - } - else - { - /* BUSY flag set */ - return YM2612Read() | 0x80; - } - } - - /* invalid FM status address */ - return 0x00; -} - -static void YM2413_Reset(unsigned int cycles) -{ - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* reset FM chip */ - YM2413ResetChip(); -} - -static void YM2413_Write(unsigned int cycles, unsigned int a, unsigned int v) -{ - /* detect DATA port write */ - if (a & 1) - { - /* synchronize FM chip with CPU */ - fm_update(cycles); - } - - /* write FM register */ - YM2413Write(a, v); -} - -static unsigned int YM2413_Read(unsigned int cycles, unsigned int a) -{ - return YM2413Read(); -} - -#ifdef HAVE_YM3438_CORE -static void YM3438_Update(int *buffer, int length) -{ - int i, j; - for (i = 0; i < length; i++) - { - OPN2_Clock(&ym3438, ym3438_accm[ym3438_cycles]); - ym3438_cycles = (ym3438_cycles + 1) % 24; - if (ym3438_cycles == 0) - { - ym3438_sample[0] = 0; - ym3438_sample[1] = 0; - for (j = 0; j < 24; j++) - { - ym3438_sample[0] += ym3438_accm[j][0]; - ym3438_sample[1] += ym3438_accm[j][1]; - } - } - *buffer++ = ym3438_sample[0] * 11; - *buffer++ = ym3438_sample[1] * 11; - } -} - -static void YM3438_Reset(unsigned int cycles) -{ - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* reset FM chip */ - OPN2_Reset(&ym3438); -} - -static void YM3438_Write(unsigned int cycles, unsigned int a, unsigned int v) -{ - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* write FM register */ - OPN2_Write(&ym3438, a, v); -} - -static unsigned int YM3438_Read(unsigned int cycles, unsigned int a) -{ - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* read FM status */ - return OPN2_Read(&ym3438, a); -} -#endif - -#ifdef HAVE_OPLL_CORE -static void OPLL2413_Update(int* buffer, int length) -{ - int i, j; - for (i = 0; i < length; i++) - { - OPLL_Clock(&opll, opll_accm[opll_cycles]); - opll_cycles = (opll_cycles + 1) % 18; - if (opll_cycles == 0) - { - opll_sample = 0; - for (j = 0; j < 18; j++) - { - opll_sample += opll_accm[j][0] + opll_accm[j][1]; - } - } - *buffer++ = opll_sample * 16 * opll_status; - *buffer++ = opll_sample * 16 * opll_status; - } -} - -static void OPLL2413_Reset(unsigned int cycles) -{ - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* reset FM chip */ - OPLL_Reset(&opll, opll_type_ym2413); -} - -static void OPLL2413_Write(unsigned int cycles, unsigned int a, unsigned int v) -{ - if (!(a&2)) - { - /* synchronize FM chip with CPU */ - fm_update(cycles); - - /* write FM register */ - OPLL_Write(&opll, a, v); - } - else - { - opll_status = v&1; - } -} - -static unsigned int OPLL2413_Read(unsigned int cycles, unsigned int a) -{ - return 0xf8 | opll_status; -} - -#endif - -void sound_init( void ) -{ - /* Initialize FM chip */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* YM2612 */ -#ifdef HAVE_YM3438_CORE - if (config.ym3438) - { - /* Nuked OPN2 */ - memset(&ym3438, 0, sizeof(ym3438)); - memset(&ym3438_sample, 0, sizeof(ym3438_sample)); - memset(&ym3438_accm, 0, sizeof(ym3438_accm)); - YM_Update = YM3438_Update; - fm_reset = YM3438_Reset; - fm_write = YM3438_Write; - fm_read = YM3438_Read; - - /* chip is running at internal clock */ - fm_cycles_ratio = YM2612_CLOCK_RATIO; - } - else -#endif - { - /* MAME OPN2*/ - YM2612Init(); - YM2612Config(config.ym2612); - YM_Update = YM2612Update; - fm_reset = YM2612_Reset; - fm_write = YM2612_Write; - fm_read = YM2612_Read; - - /* chip is running at sample clock */ - fm_cycles_ratio = YM2612_CLOCK_RATIO * 24; - } - } - else - { - /* YM2413 */ -#ifdef HAVE_OPLL_CORE - if (config.opll) - { - /* Nuked OPLL */ - memset(&opll, 0, sizeof(opll)); - memset(&opll_accm, 0, sizeof(opll_accm)); - opll_sample = 0; - opll_status = 0; - YM_Update = (config.ym2413 & 1) ? OPLL2413_Update : NULL; - fm_reset = OPLL2413_Reset; - fm_write = OPLL2413_Write; - fm_read = OPLL2413_Read; - - /* chip is running at internal clock */ - fm_cycles_ratio = 4 * 15; - } - else -#endif - { - YM2413Init(); - YM_Update = (config.ym2413 & 1) ? YM2413Update : NULL; - fm_reset = YM2413_Reset; - fm_write = YM2413_Write; - fm_read = YM2413_Read; - - /* chip is running at ZCLK / 72 = MCLK / 15 / 72 */ - fm_cycles_ratio = 72 * 15; - } - } - - /* Initialize PSG chip */ - psg_init((system_hw == SYSTEM_SG) ? PSG_DISCRETE : PSG_INTEGRATED); -} - -void sound_reset(void) -{ - /* reset sound chips */ - fm_reset(0); - psg_reset(); - psg_config(0, config.psg_preamp, 0xff); - - /* reset FM buffer ouput */ - fm_last[0] = fm_last[1] = 0; - - /* reset FM buffer pointer */ - fm_ptr = fm_buffer; - - /* reset FM cycle counters */ - fm_cycles_start = fm_cycles_count = 0; -} - -int sound_update(unsigned int cycles) -{ - /* Run PSG chip until end of frame */ - psg_end_frame(cycles); - - /* FM chip is enabled ? */ - if (YM_Update) - { - int prev_l, prev_r, preamp, time, l, r, *ptr; - - /* Run FM chip until end of frame */ - fm_update(cycles); - - /* FM output pre-amplification */ - preamp = config.fm_preamp; - - /* FM frame initial timestamp */ - time = fm_cycles_start; - - /* Restore last FM outputs from previous frame */ - prev_l = fm_last[0]; - prev_r = fm_last[1]; - - /* FM buffer start pointer */ - ptr = fm_buffer; - - /* flush FM samples */ - if (config.hq_fm) - { - /* high-quality Band-Limited synthesis */ - do - { - /* left & right channels */ - l = ((*ptr++ * preamp) / 100); - r = ((*ptr++ * preamp) / 100); - blip_add_delta(snd.blips[0], time, l-prev_l, r-prev_r); - prev_l = l; - prev_r = r; - - /* increment time counter */ - time += fm_cycles_ratio; - } - while (time < cycles); - } - else - { - /* faster Linear Interpolation */ - do - { - /* left & right channels */ - l = ((*ptr++ * preamp) / 100); - r = ((*ptr++ * preamp) / 100); - blip_add_delta_fast(snd.blips[0], time, l-prev_l, r-prev_r); - prev_l = l; - prev_r = r; - - /* increment time counter */ - time += fm_cycles_ratio; - } - while (time < cycles); - } - - /* reset FM buffer pointer */ - fm_ptr = fm_buffer; - - /* save last FM output for next frame */ - fm_last[0] = prev_l; - fm_last[1] = prev_r; - - /* adjust FM cycle counters for next frame */ - fm_cycles_count = fm_cycles_start = time - cycles; - if (fm_cycles_busy > cycles) - { - fm_cycles_busy -= cycles; - } - else - { - fm_cycles_busy = 0; - } - } - - /* end of blip buffer time frame */ - blip_end_frame(snd.blips[0], cycles); - - /* return number of available samples */ - return blip_samples_avail(snd.blips[0]); -} - -int sound_context_save(uint8 *state) -{ - int bufferptr = 0; - - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { -#ifdef HAVE_YM3438_CORE - save_param(&config.ym3438, sizeof(config.ym3438)); - if (config.ym3438) - { - save_param(&ym3438, sizeof(ym3438)); - save_param(&ym3438_accm, sizeof(ym3438_accm)); - save_param(&ym3438_sample, sizeof(ym3438_sample)); - save_param(&ym3438_cycles, sizeof(ym3438_cycles)); - } - else - { - bufferptr += YM2612SaveContext(state + sizeof(config.ym3438)); - } -#else - bufferptr = YM2612SaveContext(state); -#endif - } - else - { -#ifdef HAVE_OPLL_CORE - save_param(&config.opll, sizeof(config.opll)); - if (config.opll) - { - save_param(&opll, sizeof(opll)); - save_param(&opll_accm, sizeof(opll_accm)); - save_param(&opll_sample, sizeof(opll_sample)); - save_param(&opll_cycles, sizeof(opll_cycles)); - save_param(&opll_status, sizeof(opll_status)); - } - else -#endif - { - save_param(YM2413GetContextPtr(),YM2413GetContextSize()); - } - } - - bufferptr += psg_context_save(&state[bufferptr]); - - save_param(&fm_cycles_start,sizeof(fm_cycles_start)); - - return bufferptr; -} - -int sound_context_load(uint8 *state) -{ - int bufferptr = 0; - - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { -#ifdef HAVE_YM3438_CORE - uint8 config_ym3438; - load_param(&config_ym3438, sizeof(config_ym3438)); - if (config_ym3438) - { - load_param(&ym3438, sizeof(ym3438)); - load_param(&ym3438_accm, sizeof(ym3438_accm)); - load_param(&ym3438_sample, sizeof(ym3438_sample)); - load_param(&ym3438_cycles, sizeof(ym3438_cycles)); - } - else - { - bufferptr += YM2612LoadContext(state + sizeof(config_ym3438)); - } -#else - bufferptr = YM2612LoadContext(state); -#endif - } - else - { -#ifdef HAVE_OPLL_CORE - uint8 config_opll; - load_param(&config_opll, sizeof(config_opll)); - if (config_opll) - { - load_param(&opll, sizeof(opll)); - load_param(&opll_accm, sizeof(opll_accm)); - load_param(&opll_sample, sizeof(opll_sample)); - load_param(&opll_cycles, sizeof(opll_cycles)); - load_param(&opll_status, sizeof(opll_status)); - } - else -#endif - { - load_param(YM2413GetContextPtr(),YM2413GetContextSize()); - } - } - - bufferptr += psg_context_load(&state[bufferptr]); - - load_param(&fm_cycles_start,sizeof(fm_cycles_start)); - fm_cycles_count = fm_cycles_start; - - return bufferptr; -} +/*************************************************************************************** + * Genesis Plus + * Sound Hardware + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "blip_buf.h" + +/* YM2612 internal clock = input clock / 6 = (master clock / 7) / 6 */ +#define YM2612_CLOCK_RATIO (7*6) + +/* FM output buffer (large enough to hold a whole frame at original chips rate) */ +#if defined(HAVE_YM3438_CORE) || defined(HAVE_OPLL_CORE) +static int fm_buffer[1080 * 2 * 24]; +#else +static int fm_buffer[1080 * 2]; +#endif + +static int fm_last[2]; +static int *fm_ptr; + +/* Cycle-accurate FM samples */ +static int fm_cycles_ratio; +static int fm_cycles_start; +static int fm_cycles_count; +static int fm_cycles_busy; + +/* YM chip function pointers */ +static void (*YM_Update)(int *buffer, int length); +void (*fm_reset)(unsigned int cycles); +void (*fm_write)(unsigned int cycles, unsigned int address, unsigned int data); +unsigned int (*fm_read)(unsigned int cycles, unsigned int address); + +#ifdef HAVE_YM3438_CORE +static ym3438_t ym3438; +static short ym3438_accm[24][2]; +static int ym3438_sample[2]; +static int ym3438_cycles; +#endif + +#ifdef HAVE_OPLL_CORE +static opll_t opll; +static int opll_accm[18][2]; +static int opll_sample; +static int opll_cycles; +static int opll_status; +#endif + +/* Run FM chip until required M-cycles */ +INLINE void fm_update(int cycles) +{ + if (cycles > fm_cycles_count) + { + /* number of samples to run */ + int samples = (cycles - fm_cycles_count + fm_cycles_ratio - 1) / fm_cycles_ratio; + + /* run FM chip to sample buffer */ + YM_Update(fm_ptr, samples); + + /* update FM buffer pointer */ + fm_ptr += (samples * 2); + + /* update FM cycle counter */ + fm_cycles_count += (samples * fm_cycles_ratio); + } +} + +static void YM2612_Reset(unsigned int cycles) +{ + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* reset FM chip */ + YM2612ResetChip(); + fm_cycles_busy = 0; +} + +static void YM2612_Write(unsigned int cycles, unsigned int a, unsigned int v) +{ + /* detect DATA port write */ + if (a & 1) + { + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* set FM BUSY end cycle (discrete or ASIC-integrated YM2612 chip only) */ + if (config.ym2612 < YM2612_ENHANCED) + { + fm_cycles_busy = (((cycles + YM2612_CLOCK_RATIO - 1) / YM2612_CLOCK_RATIO) + 32) * YM2612_CLOCK_RATIO; + } + } + + /* write FM register */ + YM2612Write(a, v); +} + +static unsigned int YM2612_Read(unsigned int cycles, unsigned int a) +{ + /* FM status can only be read from (A0,A1)=(0,0) on discrete YM2612 */ + if ((a == 0) || (config.ym2612 > YM2612_DISCRETE)) + { + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* read FM status */ + if (cycles >= fm_cycles_busy) + { + /* BUSY flag cleared */ + return YM2612Read(); + } + else + { + /* BUSY flag set */ + return YM2612Read() | 0x80; + } + } + + /* invalid FM status address */ + return 0x00; +} + +static void YM2413_Reset(unsigned int cycles) +{ + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* reset FM chip */ + YM2413ResetChip(); +} + +static void YM2413_Write(unsigned int cycles, unsigned int a, unsigned int v) +{ + /* detect DATA port write */ + if (a & 1) + { + /* synchronize FM chip with CPU */ + fm_update(cycles); + } + + /* write FM register */ + YM2413Write(a, v); +} + +static unsigned int YM2413_Read(unsigned int cycles, unsigned int a) +{ + return YM2413Read(); +} + +#ifdef HAVE_YM3438_CORE +static void YM3438_Update(int *buffer, int length) +{ + int i, j; + for (i = 0; i < length; i++) + { + OPN2_Clock(&ym3438, ym3438_accm[ym3438_cycles]); + ym3438_cycles = (ym3438_cycles + 1) % 24; + if (ym3438_cycles == 0) + { + ym3438_sample[0] = 0; + ym3438_sample[1] = 0; + for (j = 0; j < 24; j++) + { + ym3438_sample[0] += ym3438_accm[j][0]; + ym3438_sample[1] += ym3438_accm[j][1]; + } + } + *buffer++ = ym3438_sample[0] * 11; + *buffer++ = ym3438_sample[1] * 11; + } +} + +static void YM3438_Reset(unsigned int cycles) +{ + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* reset FM chip */ + OPN2_Reset(&ym3438); +} + +static void YM3438_Write(unsigned int cycles, unsigned int a, unsigned int v) +{ + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* write FM register */ + OPN2_Write(&ym3438, a, v); +} + +static unsigned int YM3438_Read(unsigned int cycles, unsigned int a) +{ + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* read FM status */ + return OPN2_Read(&ym3438, a); +} +#endif + +#ifdef HAVE_OPLL_CORE +static void OPLL2413_Update(int* buffer, int length) +{ + int i, j; + for (i = 0; i < length; i++) + { + OPLL_Clock(&opll, opll_accm[opll_cycles]); + opll_cycles = (opll_cycles + 1) % 18; + if (opll_cycles == 0) + { + opll_sample = 0; + for (j = 0; j < 18; j++) + { + opll_sample += opll_accm[j][0] + opll_accm[j][1]; + } + } + *buffer++ = opll_sample * 16 * opll_status; + *buffer++ = opll_sample * 16 * opll_status; + } +} + +static void OPLL2413_Reset(unsigned int cycles) +{ + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* reset FM chip */ + OPLL_Reset(&opll, opll_type_ym2413); +} + +static void OPLL2413_Write(unsigned int cycles, unsigned int a, unsigned int v) +{ + if (!(a&2)) + { + /* synchronize FM chip with CPU */ + fm_update(cycles); + + /* write FM register */ + OPLL_Write(&opll, a, v); + } + else + { + opll_status = v&1; + } +} + +static unsigned int OPLL2413_Read(unsigned int cycles, unsigned int a) +{ + return 0xf8 | opll_status; +} + +#endif + +void sound_init( void ) +{ + /* Initialize FM chip */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* YM2612 */ +#ifdef HAVE_YM3438_CORE + if (config.ym3438) + { + /* Nuked OPN2 */ + memset(&ym3438, 0, sizeof(ym3438)); + memset(&ym3438_sample, 0, sizeof(ym3438_sample)); + memset(&ym3438_accm, 0, sizeof(ym3438_accm)); + YM_Update = YM3438_Update; + fm_reset = YM3438_Reset; + fm_write = YM3438_Write; + fm_read = YM3438_Read; + + /* chip is running at internal clock */ + fm_cycles_ratio = YM2612_CLOCK_RATIO; + } + else +#endif + { + /* MAME OPN2*/ + YM2612Init(); + YM2612Config(config.ym2612); + YM_Update = YM2612Update; + fm_reset = YM2612_Reset; + fm_write = YM2612_Write; + fm_read = YM2612_Read; + + /* chip is running at sample clock */ + fm_cycles_ratio = YM2612_CLOCK_RATIO * 24; + } + } + else + { + /* YM2413 */ +#ifdef HAVE_OPLL_CORE + if (config.opll) + { + /* Nuked OPLL */ + memset(&opll, 0, sizeof(opll)); + memset(&opll_accm, 0, sizeof(opll_accm)); + opll_sample = 0; + opll_status = 0; + YM_Update = (config.ym2413 & 1) ? OPLL2413_Update : NULL; + fm_reset = OPLL2413_Reset; + fm_write = OPLL2413_Write; + fm_read = OPLL2413_Read; + + /* chip is running at internal clock */ + fm_cycles_ratio = 4 * 15; + } + else +#endif + { + YM2413Init(); + YM_Update = (config.ym2413 & 1) ? YM2413Update : NULL; + fm_reset = YM2413_Reset; + fm_write = YM2413_Write; + fm_read = YM2413_Read; + + /* chip is running at ZCLK / 72 = MCLK / 15 / 72 */ + fm_cycles_ratio = 72 * 15; + } + } + + /* Initialize PSG chip */ + psg_init((system_hw == SYSTEM_SG) ? PSG_DISCRETE : PSG_INTEGRATED); +} + +void sound_reset(void) +{ + /* reset sound chips */ + fm_reset(0); + psg_reset(); + psg_config(0, config.psg_preamp, 0xff); + + /* reset FM buffer ouput */ + fm_last[0] = fm_last[1] = 0; + + /* reset FM buffer pointer */ + fm_ptr = fm_buffer; + + /* reset FM cycle counters */ + fm_cycles_start = fm_cycles_count = 0; +} + +int sound_update(unsigned int cycles) +{ + /* Run PSG chip until end of frame */ + psg_end_frame(cycles); + + /* FM chip is enabled ? */ + if (YM_Update) + { + int prev_l, prev_r, preamp, time, l, r, *ptr; + + /* Run FM chip until end of frame */ + fm_update(cycles); + + /* FM output pre-amplification */ + preamp = config.fm_preamp; + + /* FM frame initial timestamp */ + time = fm_cycles_start; + + /* Restore last FM outputs from previous frame */ + prev_l = fm_last[0]; + prev_r = fm_last[1]; + + /* FM buffer start pointer */ + ptr = fm_buffer; + + /* flush FM samples */ + if (config.hq_fm) + { + /* high-quality Band-Limited synthesis */ + do + { + /* left & right channels */ + l = ((*ptr++ * preamp) / 100); + r = ((*ptr++ * preamp) / 100); + blip_add_delta(snd.blips[0], time, l-prev_l, r-prev_r); + prev_l = l; + prev_r = r; + + /* increment time counter */ + time += fm_cycles_ratio; + } + while (time < cycles); + } + else + { + /* faster Linear Interpolation */ + do + { + /* left & right channels */ + l = ((*ptr++ * preamp) / 100); + r = ((*ptr++ * preamp) / 100); + blip_add_delta_fast(snd.blips[0], time, l-prev_l, r-prev_r); + prev_l = l; + prev_r = r; + + /* increment time counter */ + time += fm_cycles_ratio; + } + while (time < cycles); + } + + /* reset FM buffer pointer */ + fm_ptr = fm_buffer; + + /* save last FM output for next frame */ + fm_last[0] = prev_l; + fm_last[1] = prev_r; + + /* adjust FM cycle counters for next frame */ + fm_cycles_count = fm_cycles_start = time - cycles; + if (fm_cycles_busy > cycles) + { + fm_cycles_busy -= cycles; + } + else + { + fm_cycles_busy = 0; + } + } + + /* end of blip buffer time frame */ + blip_end_frame(snd.blips[0], cycles); + + /* return number of available samples */ + return blip_samples_avail(snd.blips[0]); +} + +int sound_context_save(uint8 *state) +{ + int bufferptr = 0; + + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { +#ifdef HAVE_YM3438_CORE + save_param(&config.ym3438, sizeof(config.ym3438)); + if (config.ym3438) + { + save_param(&ym3438, sizeof(ym3438)); + save_param(&ym3438_accm, sizeof(ym3438_accm)); + save_param(&ym3438_sample, sizeof(ym3438_sample)); + save_param(&ym3438_cycles, sizeof(ym3438_cycles)); + } + else + { + bufferptr += YM2612SaveContext(state + sizeof(config.ym3438)); + } +#else + bufferptr = YM2612SaveContext(state); +#endif + } + else + { +#ifdef HAVE_OPLL_CORE + save_param(&config.opll, sizeof(config.opll)); + if (config.opll) + { + save_param(&opll, sizeof(opll)); + save_param(&opll_accm, sizeof(opll_accm)); + save_param(&opll_sample, sizeof(opll_sample)); + save_param(&opll_cycles, sizeof(opll_cycles)); + save_param(&opll_status, sizeof(opll_status)); + } + else +#endif + { + save_param(YM2413GetContextPtr(),YM2413GetContextSize()); + } + } + + bufferptr += psg_context_save(&state[bufferptr]); + + save_param(&fm_cycles_start,sizeof(fm_cycles_start)); + + return bufferptr; +} + +int sound_context_load(uint8 *state) +{ + int bufferptr = 0; + + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { +#ifdef HAVE_YM3438_CORE + uint8 config_ym3438; + load_param(&config_ym3438, sizeof(config_ym3438)); + if (config_ym3438) + { + load_param(&ym3438, sizeof(ym3438)); + load_param(&ym3438_accm, sizeof(ym3438_accm)); + load_param(&ym3438_sample, sizeof(ym3438_sample)); + load_param(&ym3438_cycles, sizeof(ym3438_cycles)); + } + else + { + bufferptr += YM2612LoadContext(state + sizeof(config_ym3438)); + } +#else + bufferptr = YM2612LoadContext(state); +#endif + } + else + { +#ifdef HAVE_OPLL_CORE + uint8 config_opll; + load_param(&config_opll, sizeof(config_opll)); + if (config_opll) + { + load_param(&opll, sizeof(opll)); + load_param(&opll_accm, sizeof(opll_accm)); + load_param(&opll_sample, sizeof(opll_sample)); + load_param(&opll_cycles, sizeof(opll_cycles)); + load_param(&opll_status, sizeof(opll_status)); + } + else +#endif + { + load_param(YM2413GetContextPtr(),YM2413GetContextSize()); + } + } + + bufferptr += psg_context_load(&state[bufferptr]); + + load_param(&fm_cycles_start,sizeof(fm_cycles_start)); + fm_cycles_count = fm_cycles_start; + + return bufferptr; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/sound.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/sound.h similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/sound.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/sound.h index fc8a3476d2..43d47dbb78 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/sound.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/sound.h @@ -1,53 +1,53 @@ -/*************************************************************************************** - * Genesis Plus - * Sound Hardware - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _SOUND_H_ -#define _SOUND_H_ - -/* Function prototypes */ -extern void sound_init(void); -extern void sound_reset(void); -extern int sound_context_save(uint8 *state); -extern int sound_context_load(uint8 *state); -extern int sound_update(unsigned int cycles); -extern void (*fm_reset)(unsigned int cycles); -extern void (*fm_write)(unsigned int cycles, unsigned int address, unsigned int data); -extern unsigned int (*fm_read)(unsigned int cycles, unsigned int address); - -#endif /* _SOUND_H_ */ +/*************************************************************************************** + * Genesis Plus + * Sound Hardware + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2020 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _SOUND_H_ +#define _SOUND_H_ + +/* Function prototypes */ +extern void sound_init(void); +extern void sound_reset(void); +extern int sound_context_save(uint8 *state); +extern int sound_context_load(uint8 *state); +extern int sound_update(unsigned int cycles); +extern void (*fm_reset)(unsigned int cycles); +extern void (*fm_write)(unsigned int cycles, unsigned int address, unsigned int data); +extern unsigned int (*fm_read)(unsigned int cycles, unsigned int address); + +#endif /* _SOUND_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2413.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2413.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2413.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2413.c index 97fe03055e..4e2629d607 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2413.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2413.c @@ -1,1829 +1,1829 @@ -/* -** -** File: ym2413.c - software implementation of YM2413 -** FM sound generator type OPLL -** -** Copyright (C) 2002 Jarek Burczynski -** -** Version 1.0 -** -** - -to do: - -- make sure of the sinus amplitude bits - -- make sure of the EG resolution bits (looks like the biggest - modulation index generated by the modulator is 123, 124 = no modulation) -- find proper algorithm for attack phase of EG - -- tune up instruments ROM - -- support sample replay in test mode (it is NOT as simple as setting bit 0 - in register 0x0f and using register 0x10 for sample data). - Which games use this feature ? - -*/ - -/************************************************/ -/** Modifications for Genesis Plus GX (EkeEke) **/ -/************************************************/ -/** 2011/xx/xx: removed multiple chips support, cleaned code & added FM board interface **/ -/** 2021/04/23: fixed synchronization of carrier/modulator phase reset after channel Key ON (fixes Japanese Master System BIOS music) **/ -/** 2021/04/24: fixed intruments ROM (verified on YM2413B die, cf. https://siliconpr0n.org/archive/doku.php?id=vendor:yamaha:opl2#ym2413_instrument_rom) **/ -/** 2021/04/24: fixed EG resolution bits (verified on YM2413B die, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-03-20) **/ -/** 2021/04/24: fixed EG dump rate (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-12-31) **/ -/** 2021/04/25: fixed EG behavior for fastest attack rates (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) **/ -/** 2021/04/25: fixed EG behavior when SL = 0 (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-12-24) **/ -/** 2021/04/25: improved EG sustain phase transition comparator accuracy (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-12-31) **/ -/** 2021/05/04: improved EG increment steps accuracy (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-03-20) **/ -/** 2021/05/08: improved EG transitions accuracy (verified against https://github.com/nukeykt/Nuked-OPLL/blob/master/opll.c) **/ -/** 2021/05/11: improved EG attack phase algorithm accuracy (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) **/ -/************************************************/ - -#include "shared.h" - -#define FREQ_SH 16 /* 16.16 fixed point (frequency calculations) */ -#define EG_SH 16 /* 16.16 fixed point (EG timing) */ -#define LFO_SH 24 /* 8.24 fixed point (LFO calculations) */ - -#define FREQ_MASK ((1<>KSR */ - UINT8 mul; /* multiple: mul_tab[ML] */ - - /* Phase Generator */ - UINT32 phase; /* frequency counter */ - UINT32 freq; /* frequency counter step */ - UINT8 fb_shift; /* feedback shift value */ - INT32 op1_out[2]; /* slot1 output for feedback */ - - /* Envelope Generator */ - UINT8 eg_type; /* percussive/nonpercussive mode */ - UINT8 state; /* phase type */ - UINT32 TL; /* total level: TL << 2 */ - INT32 TLL; /* adjusted now TL */ - INT32 volume; /* envelope counter */ - UINT32 sl; /* sustain level: sl_tab[SL] */ - - UINT8 eg_sh_dp; /* (dump state) */ - UINT8 eg_sel_dp; /* (dump state) */ - UINT8 eg_sh_ar; /* (attack state) */ - UINT8 eg_sel_ar; /* (attack state) */ - UINT8 eg_sh_dr; /* (decay state) */ - UINT8 eg_sel_dr; /* (decay state) */ - UINT8 eg_sh_rr; /* (release state for non-perc.) */ - UINT8 eg_sel_rr; /* (release state for non-perc.) */ - UINT8 eg_sh_rs; /* (release state for perc.mode) */ - UINT8 eg_sel_rs; /* (release state for perc.mode) */ - - UINT32 key; /* 0 = KEY OFF, >0 = KEY ON */ - - /* LFO */ - UINT32 AMmask; /* LFO Amplitude Modulation enable mask */ - UINT8 vib; /* LFO Phase Modulation enable flag (active high)*/ - - /* waveform select */ - unsigned int wavetable; -} YM2413_OPLL_SLOT; - -typedef struct -{ - YM2413_OPLL_SLOT SLOT[2]; - - /* phase generator state */ - UINT32 block_fnum; /* block+fnum */ - UINT32 fc; /* Freq. freqement base */ - UINT32 ksl_base; /* KeyScaleLevel Base step */ - UINT8 kcode; /* key code (for key scaling) */ - UINT8 sus; /* sus on/off (release speed in percussive mode) */ -} YM2413_OPLL_CH; - -/* chip state */ -typedef struct { - YM2413_OPLL_CH P_CH[9]; /* OPLL chips have 9 channels */ - UINT8 instvol_r[9]; /* instrument/volume (or volume/volume in percussive mode) */ - - UINT32 eg_cnt; /* global envelope generator counter */ - UINT32 eg_timer; /* global envelope generator counter works at frequency = chipclock/72 */ - UINT32 eg_timer_add; /* step of eg_timer */ - UINT32 eg_timer_overflow; /* envelope generator timer overlfows every 1 sample (on real chip) */ - - UINT8 rhythm; /* Rhythm mode */ - - /* LFO */ - UINT32 lfo_am_cnt; - UINT32 lfo_am_inc; - UINT32 lfo_pm_cnt; - UINT32 lfo_pm_inc; - - UINT32 noise_rng; /* 23 bit noise shift register */ - UINT32 noise_p; /* current noise 'phase' */ - UINT32 noise_f; /* current noise period */ - - -/* instrument settings */ -/* - 0-user instrument - 1-15 - fixed instruments - 16 -bass drum settings - 17,18 - other percussion instruments -*/ - UINT8 inst_tab[19][8]; - - UINT32 fn_tab[1024]; /* fnumber->increment counter */ - - UINT8 address; /* address register */ - UINT8 status; /* status flag */ - - double clock; /* master clock (Hz) */ - int rate; /* sampling rate (Hz) */ -} YM2413; - -/* key scale level */ -/* table is 3dB/octave, DV converts this into 6dB/octave */ -/* 0.1875 is bit 0 weight of the envelope counter (volume) expressed in the 'decibel' scale */ -#define DV (0.1875/1.0) -static const UINT32 ksl_tab[8*16]= -{ - /* OCT 0 */ - 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, - 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, - 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, - 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, - /* OCT 1 */ - 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, - 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, - 0.000/DV, 0.750/DV, 1.125/DV, 1.500/DV, - 1.875/DV, 2.250/DV, 2.625/DV, 3.000/DV, - /* OCT 2 */ - 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, - 0.000/DV, 1.125/DV, 1.875/DV, 2.625/DV, - 3.000/DV, 3.750/DV, 4.125/DV, 4.500/DV, - 4.875/DV, 5.250/DV, 5.625/DV, 6.000/DV, - /* OCT 3 */ - 0.000/DV, 0.000/DV, 0.000/DV, 1.875/DV, - 3.000/DV, 4.125/DV, 4.875/DV, 5.625/DV, - 6.000/DV, 6.750/DV, 7.125/DV, 7.500/DV, - 7.875/DV, 8.250/DV, 8.625/DV, 9.000/DV, - /* OCT 4 */ - 0.000/DV, 0.000/DV, 3.000/DV, 4.875/DV, - 6.000/DV, 7.125/DV, 7.875/DV, 8.625/DV, - 9.000/DV, 9.750/DV,10.125/DV,10.500/DV, - 10.875/DV,11.250/DV,11.625/DV,12.000/DV, - /* OCT 5 */ - 0.000/DV, 3.000/DV, 6.000/DV, 7.875/DV, - 9.000/DV,10.125/DV,10.875/DV,11.625/DV, - 12.000/DV,12.750/DV,13.125/DV,13.500/DV, - 13.875/DV,14.250/DV,14.625/DV,15.000/DV, - /* OCT 6 */ - 0.000/DV, 6.000/DV, 9.000/DV,10.875/DV, - 12.000/DV,13.125/DV,13.875/DV,14.625/DV, - 15.000/DV,15.750/DV,16.125/DV,16.500/DV, - 16.875/DV,17.250/DV,17.625/DV,18.000/DV, - /* OCT 7 */ - 0.000/DV, 9.000/DV,12.000/DV,13.875/DV, - 15.000/DV,16.125/DV,16.875/DV,17.625/DV, - 18.000/DV,18.750/DV,19.125/DV,19.500/DV, - 19.875/DV,20.250/DV,20.625/DV,21.000/DV -}; -#undef DV - -/* sustain level table (3dB per step) */ -/* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,45 (dB)*/ -#define SC(db) (UINT32) ( db * (1.0/ENV_STEP) ) -static const UINT32 sl_tab[16]={ - SC( 0),SC( 1),SC( 2),SC(3 ),SC(4 ),SC(5 ),SC(6 ),SC( 7), - SC( 8),SC( 9),SC(10),SC(11),SC(12),SC(13),SC(14),SC(15) -}; -#undef SC - - -#define RATE_STEPS (16) - -static const unsigned char eg_inc[14*RATE_STEPS]={ - -/*cycle:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/ - -/* 0 */ 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, /* infinity rates for decay(s) */ - -/* 1 */ 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, /* rates 01..12 0 for decay(s) (increment by 0 or 1) */ -/* 2 */ 0,1, 1,1, 0,1, 0,1, 0,1, 1,1, 0,1, 0,1, /* rates 01..12 1 for decay(s) */ -/* 3 */ 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, /* rates 01..12 2 for decay(s) */ -/* 4 */ 0,1, 1,1, 1,1, 1,1, 0,1, 1,1, 1,1, 1,1, /* rates 01..12 3 for decay(s) */ - -/* 5 */ 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, /* rate 13 0 for decay(s) (increment by 0 or 1) */ -/* 6 */ 0,1, 0,1, 1,1, 1,1, 0,1, 0,1, 0,1, 0,1, /* rate 13 1 for decay(s) */ -/* 7 */ 0,1, 0,1, 1,1, 1,1, 0,1, 0,1, 1,1, 1,1, /* rate 13 2 for decay(s) */ -/* 8 */ 0,1, 0,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, /* rate 13 3 for decay(s) */ - -/* 9 */ 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, /* rate 14 0 for decay(s) (increment by 1) */ -/*10 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 1,1, 1,1, /* rate 14 1 for decay(s) */ -/*11 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 2,2, 2,2, /* rate 14 2 for decay(s) */ -/*12 */ 1,1, 1,1, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rate 14 3 for decay(s) */ - -/*13 */ 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rates 15 0, 15 1, 15 2, 15 3 for decay(s) (increment by 2) */ - -}; - -static const unsigned char eg_mul[17*RATE_STEPS]={ - -/*cycle:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/ - -/* 0 */ 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, /* infinity rates for attack */ - -/* 1 */ 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, /* rates 01..11 0 for attack */ -/* 2 */ 0,1, 1,1, 0,1, 0,1, 0,1, 1,1, 0,1, 0,1, /* rates 01..11 1 for attack */ -/* 3 */ 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, /* rates 01..11 2 for attack */ -/* 4 */ 0,1, 1,1, 1,1, 1,1, 0,1, 1,1, 1,1, 1,1, /* rates 01..11 3 for attack */ - -/* 5 */ 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, /* rate 12 0 for attack */ -/* 6 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 1,1, 1,1, /* rate 12 1 for attack */ -/* 7 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 2,2, 2,2, /* rate 12 2 for attack */ -/* 8 */ 1,1, 1,1, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rate 12 3 for attack */ - -/* 9 */ 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rate 13 0 for attack */ -/*10 */ 2,2, 2,2, 4,4, 4,4, 2,2, 2,2, 2,2, 2,2, /* rate 13 1 for attack */ -/*11 */ 2,2, 2,2, 4,4, 4,4, 2,2, 2,2, 4,4, 4,4, /* rate 13 2 for attack */ -/*12 */ 2,2, 2,2, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, /* rate 13 3 for attack */ - -/*13 */ 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, /* rate 14 0 for attack */ -/*14 */ 4,4, 4,4, 8,8, 8,8, 4,4, 4,4, 4,4, 4,4, /* rate 14 1 for attack */ -/*15 */ 4,4, 4,4, 8,8, 8,8, 4,4, 4,4, 8,8, 8,8, /* rate 14 2 for attack */ -/*16 */ 4,4, 4,4, 8,8, 8,8, 8,8, 8,8, 8,8, 8,8, /* rate 14 3 for attack */ - -}; - -#define O(a) (a*RATE_STEPS) - -static const unsigned char eg_rate_select[16+64+16]={ /* Envelope Generator rates (16 + 64 rates + 16 RKS) */ - -/* 16 infinite time rates */ -O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), -O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), - -/* rate 00 */ -O( 0),O( 0),O( 0),O( 0), /* never used since infinite time rates are directly forced in the code for rate 00 */ - -/* rates 01-11 */ -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), -O( 1),O( 2),O( 3),O( 4), - -/* rate 12 */ /* only used for decay(s), handled directly in the code for attack */ -O( 1),O( 2),O( 3),O( 4), - -/* rate 13 */ /* only used for decay(s), handled directly in the code for attack */ -O( 5),O( 6),O( 7),O( 8), - -/* rate 14 */ /* only used for decay(s), handled directly in the code for attack */ -O( 9),O(10),O(11),O(12), - -/* rate 15 */ /* only used for decay(s), handled directly in the code for attack */ -O(13),O(13),O(13),O(13), - -/* 16 dummy rates (same as 15 3) */ -O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), -O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), - -}; -#undef O - -/*rate 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ -/*shift 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0 */ -/*mask 8191, 4095, 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1, 0, 0, 0 */ -/*NB: for attack, above mask values lower 2 bits are cleared and rate 12 shift value is equal to 0 */ - -#define O(a) (a*1) -static const unsigned char eg_rate_shift[16+64+16]={ /* Envelope Generator counter shifts (16 + 64 rates + 16 RKS) */ - -/* 16 infinite time rates */ -O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), -O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), - -/* rate 00 */ -O(13),O(13),O(13),O(13), /* never used since infinite time rates are directly forced in the code for rate 00 */ - -/* rates 01-11 */ -O(12),O(12),O(12),O(12), -O(11),O(11),O(11),O(11), -O(10),O(10),O(10),O(10), -O( 9),O( 9),O( 9),O( 9), -O( 8),O( 8),O( 8),O( 8), -O( 7),O( 7),O( 7),O( 7), -O( 6),O( 6),O( 6),O( 6), -O( 5),O( 5),O( 5),O( 5), -O( 4),O( 4),O( 4),O( 4), -O( 3),O( 3),O( 3),O( 3), -O( 2),O( 2),O( 2),O( 2), - -/* rate 12 */ /* only used for decay(s), handled directly in the code for attack */ -O( 1),O( 1),O( 1),O( 1), - -/* rate 13 */ /* only used for decay(s), handled directly in the code for attack */ -O( 0),O( 0),O( 0),O( 0), - -/* rate 14 */ /* only used for decay(s), handled directly in the code for attack */ -O( 0),O( 0),O( 0),O( 0), - -/* rate 15 */ /* only used for decay(s), handled directly in the code for attack */ -O( 0),O( 0),O( 0),O( 0), - -/* 16 dummy rates (same as 15 3) */ -O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), -O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), - -}; -#undef O - - -/* multiple table */ -#define ML 2 -static const UINT8 mul_tab[16]= { -/* 1/2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,10,12,12,15,15 */ - 0.50*ML, 1.00*ML, 2.00*ML, 3.00*ML, 4.00*ML, 5.00*ML, 6.00*ML, 7.00*ML, - 8.00*ML, 9.00*ML,10.00*ML,10.00*ML,12.00*ML,12.00*ML,15.00*ML,15.00*ML -}; -#undef ML - -/* TL_TAB_LEN is calculated as: -* 11 - sinus amplitude bits (Y axis) -* 2 - sinus sign bit (Y axis) -* TL_RES_LEN - sinus resolution (X axis) -*/ -#define TL_TAB_LEN (11*2*TL_RES_LEN) -static signed int tl_tab[TL_TAB_LEN]; - -#define ENV_QUIET (TL_TAB_LEN>>5) - -/* sin waveform table in 'decibel' scale */ -/* two waveforms on OPLL type chips */ -static unsigned int sin_tab[SIN_LEN * 2]; - - -/* LFO Amplitude Modulation table (verified on real YM3812) - 27 output levels (triangle waveform); 1 level takes one of: 192, 256 or 448 samples - - Length: 210 elements. - - Each of the elements has to be repeated - exactly 64 times (on 64 consecutive samples). - The whole table takes: 64 * 210 = 13440 samples. - -We use data>>1, until we find what it really is on real chip... - -*/ - -#define LFO_AM_TAB_ELEMENTS 210 - -static const UINT8 lfo_am_table[LFO_AM_TAB_ELEMENTS] = { -0,0,0,0,0,0,0, -1,1,1,1, -2,2,2,2, -3,3,3,3, -4,4,4,4, -5,5,5,5, -6,6,6,6, -7,7,7,7, -8,8,8,8, -9,9,9,9, -10,10,10,10, -11,11,11,11, -12,12,12,12, -13,13,13,13, -14,14,14,14, -15,15,15,15, -16,16,16,16, -17,17,17,17, -18,18,18,18, -19,19,19,19, -20,20,20,20, -21,21,21,21, -22,22,22,22, -23,23,23,23, -24,24,24,24, -25,25,25,25, -26,26,26, -25,25,25,25, -24,24,24,24, -23,23,23,23, -22,22,22,22, -21,21,21,21, -20,20,20,20, -19,19,19,19, -18,18,18,18, -17,17,17,17, -16,16,16,16, -15,15,15,15, -14,14,14,14, -13,13,13,13, -12,12,12,12, -11,11,11,11, -10,10,10,10, -9,9,9,9, -8,8,8,8, -7,7,7,7, -6,6,6,6, -5,5,5,5, -4,4,4,4, -3,3,3,3, -2,2,2,2, -1,1,1,1 -}; - -/* LFO Phase Modulation table (verified on real YM2413) */ -static const INT8 lfo_pm_table[8*8] = { - -/* FNUM2/FNUM = 0 00xxxxxx (0x0000) */ -0, 0, 0, 0, 0, 0, 0, 0, - -/* FNUM2/FNUM = 0 01xxxxxx (0x0040) */ -1, 0, 0, 0,-1, 0, 0, 0, - -/* FNUM2/FNUM = 0 10xxxxxx (0x0080) */ -2, 1, 0,-1,-2,-1, 0, 1, - -/* FNUM2/FNUM = 0 11xxxxxx (0x00C0) */ -3, 1, 0,-1,-3,-1, 0, 1, - -/* FNUM2/FNUM = 1 00xxxxxx (0x0100) */ -4, 2, 0,-2,-4,-2, 0, 2, - -/* FNUM2/FNUM = 1 01xxxxxx (0x0140) */ -5, 2, 0,-2,-5,-2, 0, 2, - -/* FNUM2/FNUM = 1 10xxxxxx (0x0180) */ -6, 3, 0,-3,-6,-3, 0, 3, - -/* FNUM2/FNUM = 1 11xxxxxx (0x01C0) */ -7, 3, 0,-3,-7,-3, 0, 3, -}; - - -/* This is not 100% perfect yet but very close */ -/* - - multi parameters are 100% correct (instruments and drums) - - LFO PM and AM enable are 100% correct - - waveform DC and DM select are 100% correct -*/ -/* 2021/04/23: corrected with values extracted from YM2413 instrument ROM, cf. https://siliconpr0n.org/archive/doku.php?id=vendor:yamaha:opl2#ym2413_instrument_rom */ - -static unsigned char table[19][8] = { -/* MULT MULT modTL DcDmFb AR/DR AR/DR SL/RR SL/RR */ -/* 0 1 2 3 4 5 6 7 */ -/*{0x49, 0x4c, 0x4c, 0x12, 0x00, 0x00, 0x00, 0x00 }, */ /* 0 */ - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0 */ - -/*{0x61, 0x61, 0x1e, 0x17, 0xf0, 0x78, 0x00, 0x17 }, */ /* 1 */ - {0x71, 0x61, 0x1e, 0x17, 0xd0, 0x78, 0x00, 0x17 }, /* 1 */ - -/*{0x13, 0x41, 0x1e, 0x0d, 0xd7, 0xf7, 0x13, 0x13 }, */ /* 2 */ - {0x13, 0x41, 0x1a, 0x0d, 0xd8, 0xf7, 0x23, 0x13 }, /* 2 */ - -/*{0x13, 0x01, 0x99, 0x04, 0xf2, 0xf4, 0x11, 0x23 }, */ /* 3 */ - {0x13, 0x01, 0x99, 0x00, 0xf2, 0xc4, 0x11, 0x23 }, /* 3 */ - -/*{0x21, 0x61, 0x1b, 0x07, 0xaf, 0x64, 0x40, 0x27 }, */ /* 4 */ - {0x31, 0x61, 0x0e, 0x07, 0xa8, 0x64, 0x70, 0x27 }, /* 4 */ - -/*{0x22, 0x21, 0x1e, 0x09, 0xf0, 0x76, 0x08, 0x28 }, */ /* 5 */ -/*{0x22, 0x21, 0x1e, 0x06, 0xf0, 0x75, 0x08, 0x18 }, */ /* 5 */ - {0x32, 0x21, 0x1e, 0x06, 0xe0, 0x76, 0x00, 0x28 }, /* 5 */ - -/*{0x31, 0x22, 0x16, 0x09, 0x90, 0x7f, 0x00, 0x08 }, */ /* 6 */ -/*{0x31, 0x22, 0x16, 0x05, 0x90, 0x71, 0x00, 0x13 }, */ /* 6 */ - {0x31, 0x22, 0x16, 0x05, 0xe0, 0x71, 0x00, 0x18 }, /* 6 */ - -/*{0x21, 0x61, 0x1d, 0x07, 0x82, 0x80, 0x10, 0x17 }, */ /* 7 */ - {0x21, 0x61, 0x1d, 0x07, 0x82, 0x81, 0x10, 0x07 }, /* 7 */ - -/*{0x23, 0x21, 0x2d, 0x16, 0xc0, 0x70, 0x07, 0x07 }, */ /* 8 */ - {0x23, 0x21, 0x2d, 0x14, 0xa2, 0x72, 0x00, 0x07 }, /* 8 */ - - {0x61, 0x61, 0x1b, 0x06, 0x64, 0x65, 0x10, 0x17 }, /* 9 */ - -/*{0x61, 0x61, 0x0c, 0x08, 0x85, 0xa0, 0x79, 0x07 }, */ /* A */ -/*{0x61, 0x61, 0x0c, 0x18, 0x85, 0xf0, 0x70, 0x07 }, */ /* A */ - {0x41, 0x61, 0x0b, 0x18, 0x85, 0xf7, 0x71, 0x07 }, /* A */ - -/*{0x23, 0x01, 0x07, 0x11, 0xf0, 0xa4, 0x00, 0x22 }, */ /* B */ - {0x13, 0x01, 0x83, 0x11, 0xfa, 0xe4, 0x10, 0x04 }, /* B */ - -/*{0x97, 0xc1, 0x24, 0x07, 0xff, 0xf8, 0x22, 0x12 }, */ /* C */ - {0x17, 0xc1, 0x24, 0x07, 0xf8, 0xf8, 0x22, 0x12 }, /* C */ - -/*{0x61, 0x10, 0x0c, 0x08, 0xf2, 0xc4, 0x40, 0xc8 }, */ /* D */ -/*{0x61, 0x10, 0x0c, 0x05, 0xf2, 0xf4, 0x40, 0x44 }, */ /* D */ - {0x61, 0x50, 0x0c, 0x05, 0xc2, 0xf5, 0x20, 0x42 }, /* D */ - -/*{0x01, 0x01, 0x55, 0x03, 0xf3, 0x92, 0xf3, 0xf3 }, */ /* E */ - {0x01, 0x01, 0x55, 0x03, 0xc9, 0x95, 0x03, 0x02 }, /* E */ - -/*{0x61, 0x41, 0x89, 0x03, 0xf1, 0xf4, 0xf0, 0x13 }, */ /* F */ - {0x61, 0x41, 0x89, 0x03, 0xf1, 0xe4, 0x40, 0x13 }, /* F */ - -/* drum instruments definitions */ -/* MULTI MULTI modTL xxx AR/DR AR/DR SL/RR SL/RR */ -/* 0 1 2 3 4 5 6 7 */ -/*{0x01, 0x01, 0x16, 0x00, 0xfd, 0xf8, 0x2f, 0x6d },*/ /* BD(multi verified, modTL verified, mod env - verified(close), carr. env verifed) */ -/*{0x01, 0x01, 0x00, 0x00, 0xd8, 0xd8, 0xf9, 0xf8 },*/ /* HH(multi verified), SD(multi not used) */ -/*{0x05, 0x01, 0x00, 0x00, 0xf8, 0xba, 0x49, 0x55 },*/ /* TOM(multi,env verified), TOP CYM(multi verified, env verified) */ - {0x01, 0x01, 0x18, 0x0f, 0xdf, 0xf8, 0x6a, 0x6d }, /* BD */ - {0x01, 0x01, 0x00, 0x00, 0xc8, 0xd8, 0xa7, 0x48 }, /* HH, SD */ - {0x05, 0x01, 0x00, 0x00, 0xf8, 0xaa, 0x59, 0x55 } /* TOM, TOP CYM */ -}; - -static signed int output[2]; - -static UINT32 LFO_AM; -static INT32 LFO_PM; - -/* emulated chip */ -static YM2413 ym2413; - -/* advance LFO to next sample */ -INLINE void advance_lfo(void) -{ - /* LFO */ - ym2413.lfo_am_cnt += ym2413.lfo_am_inc; - if (ym2413.lfo_am_cnt >= (LFO_AM_TAB_ELEMENTS<> LFO_SH ] >> 1; - - ym2413.lfo_pm_cnt += ym2413.lfo_pm_inc; - LFO_PM = (ym2413.lfo_pm_cnt>>LFO_SH) & 7; -} - -/* advance to next sample */ -INLINE void advance(void) -{ - YM2413_OPLL_CH *CH; - YM2413_OPLL_SLOT *op; - unsigned int i; - - /* Envelope Generator */ - ym2413.eg_timer += ym2413.eg_timer_add; - - while (ym2413.eg_timer >= ym2413.eg_timer_overflow) - { - ym2413.eg_timer -= ym2413.eg_timer_overflow; - - ym2413.eg_cnt++; - - for (i=0; i<9*2; i++) - { - CH = &ym2413.P_CH[i>>1]; - - op = &CH->SLOT[i&1]; - - switch(op->state) - { - case EG_DMP: /* dump phase */ - if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ - { - op->state = EG_ATT; - - /* force envelope to zero when attack rate is set to 15.0-15.3 */ - if ((op->ar + op->ksr) >= 16+60) - { - op->volume = MIN_ATT_INDEX; - } - - /*dump phase is performed by both operators in each channel*/ - /*when CARRIER envelope gets down to zero level, - *phases in BOTH operators are reset (at the same time ?) - */ - if (i&1) - { - CH->SLOT[0].phase = CH->SLOT[1].phase = 0; - } - } - else if ( !(ym2413.eg_cnt & ((1<eg_sh_dp)-1) ) ) - { - op->volume += eg_inc[op->eg_sel_dp + ((ym2413.eg_cnt>>op->eg_sh_dp)&15)]; - } - break; - - case EG_ATT: /* attack phase */ - if (op->volume == MIN_ATT_INDEX) - { - op->state = EG_DEC; - } - else if ( !(ym2413.eg_cnt & (((1<eg_sh_ar)-1) & ~3)) ) - { - op->volume += (~op->volume * (eg_mul[op->eg_sel_ar + ((ym2413.eg_cnt>>op->eg_sh_ar)&15)]))>>4; - } - break; - - case EG_DEC: /* decay phase */ - if ( (op->volume & ~7) == op->sl ) /* envelope level lowest 3 bits are ignored by the comparator */ - { - op->state = EG_SUS; - } - else if ( !(ym2413.eg_cnt & ((1<eg_sh_dr)-1) ) ) - { - op->volume += eg_inc[op->eg_sel_dr + ((ym2413.eg_cnt>>op->eg_sh_dr)&15)]; - if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ - { - op->state = EG_OFF; - } - } - break; - - case EG_SUS: /* sustain phase */ - /* this is important behaviour: - one can change percusive/non-percussive modes on the fly and - the chip will remain in sustain phase - verified on real YM3812 */ - - if (op->eg_type) /* non-percussive mode (sustained tone) */ - { - /* do nothing */ - } - else /* percussive mode */ - { - /* during sustain phase chip adds Release Rate (in percussive mode) */ - if ( !(ym2413.eg_cnt & ((1<eg_sh_rr)-1) ) ) - { - op->volume += eg_inc[op->eg_sel_rr + ((ym2413.eg_cnt>>op->eg_sh_rr)&15)]; - if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ - { - op->state = EG_OFF; - } - } - /* else do nothing in sustain phase */ - } - break; - - case EG_REL: /* release phase */ - /* exclude modulators in melody channels from performing anything in this mode*/ - /* allowed are only carriers in melody mode and rhythm slots in rhythm mode */ - - /*This table shows which operators and on what conditions are allowed to perform EG_REL: - (a) - always perform EG_REL - (n) - never perform EG_REL - (r) - perform EG_REL in Rhythm mode ONLY - 0: 0 (n), 1 (a) - 1: 2 (n), 3 (a) - 2: 4 (n), 5 (a) - 3: 6 (n), 7 (a) - 4: 8 (n), 9 (a) - 5: 10(n), 11(a) - 6: 12(r), 13(a) - 7: 14(r), 15(a) - 8: 16(r), 17(a) - */ - if ( (i&1) || ((ym2413.rhythm&0x20) && (i>=12)) )/* exclude modulators */ - { - if (op->eg_type) /* non-percussive mode (sustained tone) */ - /*this is correct: use RR when SUS = OFF*/ - /*and use RS when SUS = ON*/ - { - if (CH->sus) - { - if ( !(ym2413.eg_cnt & ((1<eg_sh_rs)-1) ) ) - { - op->volume += eg_inc[op->eg_sel_rs + ((ym2413.eg_cnt>>op->eg_sh_rs)&15)]; - if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ - { - op->state = EG_OFF; - } - } - } - else - { - if ( !(ym2413.eg_cnt & ((1<eg_sh_rr)-1) ) ) - { - op->volume += eg_inc[op->eg_sel_rr + ((ym2413.eg_cnt>>op->eg_sh_rr)&15)]; - if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ - { - op->state = EG_OFF; - } - } - } - } - else /* percussive mode */ - { - if ( !(ym2413.eg_cnt & ((1<eg_sh_rs)-1) ) ) - { - op->volume += eg_inc[op->eg_sel_rs + ((ym2413.eg_cnt>>op->eg_sh_rs)&15)]; - if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ - { - op->state = EG_OFF; - } - } - } - } - break; - - case EG_OFF: /* envelope off */ - op->volume = MAX_ATT_INDEX; - break; - - default: - break; - } - } - } - - for (i=0; i<9*2; i++) - { - CH = &ym2413.P_CH[i/2]; - op = &CH->SLOT[i&1]; - - /* Phase Generator */ - if(op->vib) - { - UINT8 block; - - unsigned int fnum_lfo = 8*((CH->block_fnum&0x01c0) >> 6); - unsigned int block_fnum = CH->block_fnum * 2; - signed int lfo_fn_table_index_offset = lfo_pm_table[LFO_PM + fnum_lfo ]; - - if (lfo_fn_table_index_offset) /* LFO phase modulation active */ - { - block_fnum += lfo_fn_table_index_offset; - block = (block_fnum&0x1c00) >> 10; - op->phase += (ym2413.fn_tab[block_fnum&0x03ff] >> (7-block)) * op->mul; - } - else /* LFO phase modulation = zero */ - { - op->phase += op->freq; - } - } - else /* LFO phase modulation disabled for this operator */ - { - op->phase += op->freq; - } - } - - /* The Noise Generator of the YM3812 is 23-bit shift register. - * Period is equal to 2^23-2 samples. - * Register works at sampling frequency of the chip, so output - * can change on every sample. - * - * Output of the register and input to the bit 22 is: - * bit0 XOR bit14 XOR bit15 XOR bit22 - * - * Simply use bit 22 as the noise output. - */ - - ym2413.noise_p += ym2413.noise_f; - i = ym2413.noise_p >> FREQ_SH; /* number of events (shifts of the shift register) */ - ym2413.noise_p &= FREQ_MASK; - while (i) - { - /* - UINT32 j; - j = ( (chip->noise_rng) ^ (chip->noise_rng>>14) ^ (chip->noise_rng>>15) ^ (chip->noise_rng>>22) ) & 1; - chip->noise_rng = (j<<22) | (chip->noise_rng>>1); - */ - - /* - Instead of doing all the logic operations above, we - use a trick here (and use bit 0 as the noise output). - The difference is only that the noise bit changes one - step ahead. This doesn't matter since we don't know - what is real state of the noise_rng after the reset. - */ - - if (ym2413.noise_rng & 1) ym2413.noise_rng ^= 0x800302; - ym2413.noise_rng >>= 1; - - i--; - } -} - - -INLINE signed int op_calc(UINT32 phase, unsigned int env, signed int pm, unsigned int wave_tab) -{ - UINT32 p = (env<<5) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + (pm<<17))) >> FREQ_SH ) & SIN_MASK) ]; - - if (p >= TL_TAB_LEN) - return 0; - return tl_tab[p]; -} - -INLINE signed int op_calc1(UINT32 phase, unsigned int env, signed int pm, unsigned int wave_tab) -{ - UINT32 p = (env<<5) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + pm)) >> FREQ_SH ) & SIN_MASK) ]; - - if (p >= TL_TAB_LEN) - return 0; - return tl_tab[p]; -} - -#define volume_calc(OP) ((OP)->TLL + ((UINT32)(OP)->volume) + (LFO_AM & (OP)->AMmask)) - -/* calculate output */ -INLINE void chan_calc( YM2413_OPLL_CH *CH ) -{ - YM2413_OPLL_SLOT *SLOT; - unsigned int env; - signed int out; - signed int phase_modulation; /* phase modulation input (SLOT 2) */ - - /* SLOT 1 */ - SLOT = &CH->SLOT[SLOT1]; - env = volume_calc(SLOT); - out = SLOT->op1_out[0] + SLOT->op1_out[1]; - - SLOT->op1_out[0] = SLOT->op1_out[1]; - phase_modulation = SLOT->op1_out[0]; - - SLOT->op1_out[1] = 0; - - if( env < ENV_QUIET ) - { - if (!SLOT->fb_shift) - out = 0; - SLOT->op1_out[1] = op_calc1(SLOT->phase, env, (out<fb_shift), SLOT->wavetable ); - } - - /* SLOT 2 */ - - SLOT++; - env = volume_calc(SLOT); - if( env < ENV_QUIET ) - { - output[0] += op_calc(SLOT->phase, env, phase_modulation, SLOT->wavetable); - } -} - -/* - operators used in the rhythm sounds generation process: - - Envelope Generator: - -channel operator register number Bass High Snare Tom Top -/ slot number TL ARDR SLRR Wave Drum Hat Drum Tom Cymbal - 6 / 0 12 50 70 90 f0 + - 6 / 1 15 53 73 93 f3 + - 7 / 0 13 51 71 91 f1 + - 7 / 1 16 54 74 94 f4 + - 8 / 0 14 52 72 92 f2 + - 8 / 1 17 55 75 95 f5 + - - Phase Generator: - -channel operator register number Bass High Snare Tom Top -/ slot number MULTIPLE Drum Hat Drum Tom Cymbal - 6 / 0 12 30 + - 6 / 1 15 33 + - 7 / 0 13 31 + + + - 7 / 1 16 34 ----- n o t u s e d ----- - 8 / 0 14 32 + - 8 / 1 17 35 + + - -channel operator register number Bass High Snare Tom Top -number number BLK/FNUM2 FNUM Drum Hat Drum Tom Cymbal - 6 12,15 B6 A6 + - - 7 13,16 B7 A7 + + + - - 8 14,17 B8 A8 + + + - -*/ - -/* calculate rhythm */ - -INLINE void rhythm_calc( YM2413_OPLL_CH *CH, unsigned int noise ) -{ - YM2413_OPLL_SLOT *SLOT; - signed int out; - unsigned int env; - signed int phase_modulation; /* phase modulation input (SLOT 2) */ - - - /* Bass Drum (verified on real YM3812): - - depends on the channel 6 'connect' register: - when connect = 0 it works the same as in normal (non-rhythm) mode (op1->op2->out) - when connect = 1 _only_ operator 2 is present on output (op2->out), operator 1 is ignored - - output sample always is multiplied by 2 - */ - - - /* SLOT 1 */ - SLOT = &CH[6].SLOT[SLOT1]; - env = volume_calc(SLOT); - - out = SLOT->op1_out[0] + SLOT->op1_out[1]; - SLOT->op1_out[0] = SLOT->op1_out[1]; - - phase_modulation = SLOT->op1_out[0]; - - SLOT->op1_out[1] = 0; - if( env < ENV_QUIET ) - { - if (!SLOT->fb_shift) - out = 0; - SLOT->op1_out[1] = op_calc1(SLOT->phase, env, (out<fb_shift), SLOT->wavetable ); - } - - /* SLOT 2 */ - SLOT++; - env = volume_calc(SLOT); - if( env < ENV_QUIET ) - output[1] += op_calc(SLOT->phase, env, phase_modulation, SLOT->wavetable); - - - /* Phase generation is based on: */ - /* HH (13) channel 7->slot 1 combined with channel 8->slot 2 (same combination as TOP CYMBAL but different output phases) */ - /* SD (16) channel 7->slot 1 */ - /* TOM (14) channel 8->slot 1 */ - /* TOP (17) channel 7->slot 1 combined with channel 8->slot 2 (same combination as HIGH HAT but different output phases) */ - - /* Envelope generation based on: */ - /* HH channel 7->slot1 */ - /* SD channel 7->slot2 */ - /* TOM channel 8->slot1 */ - /* TOP channel 8->slot2 */ - - - /* The following formulas can be well optimized. - I leave them in direct form for now (in case I've missed something). - */ - - /* High Hat (verified on real YM3812) */ - env = volume_calc(&CH[7].SLOT[SLOT1]); - if( env < ENV_QUIET ) - { - - /* high hat phase generation: - phase = d0 or 234 (based on frequency only) - phase = 34 or 2d0 (based on noise) - */ - - /* base frequency derived from operator 1 in channel 7 */ - unsigned char bit7 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>7)&1; - unsigned char bit3 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>3)&1; - unsigned char bit2 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>2)&1; - - unsigned char res1 = (bit2 ^ bit7) | bit3; - - /* when res1 = 0 phase = 0x000 | 0xd0; */ - /* when res1 = 1 phase = 0x200 | (0xd0>>2); */ - UINT32 phase = res1 ? (0x200|(0xd0>>2)) : 0xd0; - - /* enable gate based on frequency of operator 2 in channel 8 */ - unsigned char bit5e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>5)&1; - unsigned char bit3e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>3)&1; - - unsigned char res2 = (bit3e | bit5e); - - /* when res2 = 0 pass the phase from calculation above (res1); */ - /* when res2 = 1 phase = 0x200 | (0xd0>>2); */ - if (res2) - phase = (0x200|(0xd0>>2)); - - - /* when phase & 0x200 is set and noise=1 then phase = 0x200|0xd0 */ - /* when phase & 0x200 is set and noise=0 then phase = 0x200|(0xd0>>2), ie no change */ - if (phase&0x200) - { - if (noise) - phase = 0x200|0xd0; - } - else - /* when phase & 0x200 is clear and noise=1 then phase = 0xd0>>2 */ - /* when phase & 0x200 is clear and noise=0 then phase = 0xd0, ie no change */ - { - if (noise) - phase = 0xd0>>2; - } - - output[1] += op_calc(phase<>FREQ_SH)>>8)&1; - - /* when bit8 = 0 phase = 0x100; */ - /* when bit8 = 1 phase = 0x200; */ - UINT32 phase = bit8 ? 0x200 : 0x100; - - /* Noise bit XOR'es phase by 0x100 */ - /* when noisebit = 0 pass the phase from calculation above */ - /* when noisebit = 1 phase ^= 0x100; */ - /* in other words: phase ^= (noisebit<<8); */ - if (noise) - phase ^= 0x100; - - output[1] += op_calc(phase<>FREQ_SH)>>7)&1; - unsigned char bit3 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>3)&1; - unsigned char bit2 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>2)&1; - - unsigned char res1 = (bit2 ^ bit7) | bit3; - - /* when res1 = 0 phase = 0x000 | 0x100; */ - /* when res1 = 1 phase = 0x200 | 0x100; */ - UINT32 phase = res1 ? 0x300 : 0x100; - - /* enable gate based on frequency of operator 2 in channel 8 */ - unsigned char bit5e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>5)&1; - unsigned char bit3e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>3)&1; - - unsigned char res2 = (bit3e | bit5e); - /* when res2 = 0 pass the phase from calculation above (res1); */ - /* when res2 = 1 phase = 0x200 | 0x100; */ - if (res2) - phase = 0x300; - - output[1] += op_calc(phase<>= 4; /* 12 bits here */ - if (n&1) /* round to nearest */ - n = (n>>1)+1; - else - n = n>>1; - /* 11 bits here (rounded) */ - tl_tab[ x*2 + 0 ] = n; - tl_tab[ x*2 + 1 ] = -tl_tab[ x*2 + 0 ]; - - for (i=1; i<11; i++) - { - tl_tab[ x*2+0 + i*2*TL_RES_LEN ] = tl_tab[ x*2+0 ]>>i; - tl_tab[ x*2+1 + i*2*TL_RES_LEN ] = -tl_tab[ x*2+0 + i*2*TL_RES_LEN ]; - } - } - - for (i=0; i0.0) - o = 8*log(1.0/m)/log(2); /* convert to 'decibels' */ - else - o = 8*log(-1.0/m)/log(2); /* convert to 'decibels' */ - - o = o / (ENV_STEP/4); - - n = (int)(2.0*o); - if (n&1) /* round to nearest */ - n = (n>>1)+1; - else - n = n>>1; - - /* waveform 0: standard sinus */ - sin_tab[ i ] = n*2 + (m>=0.0? 0: 1 ); - - /* waveform 1: __ __ */ - /* / \____/ \____*/ - /* output only first half of the sinus waveform (positive one) */ - if (i & (1<<(SIN_BITS-1)) ) - sin_tab[1*SIN_LEN+i] = TL_TAB_LEN; - else - sin_tab[1*SIN_LEN+i] = sin_tab[i]; - } - - return 1; -} - - -static void OPLL_initalize(void) -{ - int i; - - /* YM2413 always running at original frequency */ - double freqbase = 1.0; - - /* make fnumber -> increment counter table */ - for( i = 0 ; i < 1024; i++ ) - { - /* OPLL (YM2413) phase increment counter = 18bit */ - ym2413.fn_tab[i] = (UINT32)( (double)i * 64 * freqbase * (1<<(FREQ_SH-10)) ); /* -10 because chip works with 10.10 fixed point, while we use 16.16 */ - } - - /* Amplitude modulation: 27 output levels (triangle waveform); 1 level takes one of: 192, 256 or 448 samples */ - /* One entry from LFO_AM_TABLE lasts for 64 samples */ - ym2413.lfo_am_inc = (1.0 / 64.0 ) * (1<key ) - { - /* do NOT restart Phase Generator (verified on real YM2413)*/ - /* phase -> Dump */ - SLOT->state = EG_DMP; - } - SLOT->key |= key_set; -} - -INLINE void KEY_OFF(YM2413_OPLL_SLOT *SLOT, UINT32 key_clr) -{ - if( SLOT->key ) - { - SLOT->key &= key_clr; - - if( !SLOT->key ) - { - /* phase -> Release */ - if (SLOT->state>EG_REL) - SLOT->state = EG_REL; - } - } -} - -/* update phase increment counter of operator (also update the EG rates if necessary) */ -INLINE void CALC_FCSLOT(YM2413_OPLL_CH *CH,YM2413_OPLL_SLOT *SLOT) -{ - int ksr; - UINT32 SLOT_rs; - UINT32 SLOT_dp; - - /* (frequency) phase increment counter */ - SLOT->freq = CH->fc * SLOT->mul; - ksr = CH->kcode >> SLOT->KSR; - - if( SLOT->ksr != ksr ) - { - SLOT->ksr = ksr; - - /* calculate envelope generator rates */ - if ((SLOT->ar + SLOT->ksr) >= 16+60) - { - /* attack phase is skipped in case attack rate is set to 15.0-15.3 before attack phase is started */ - /* during attack phase, in case attack rate is changed to 15.0-15.3, attack phase is blocked */ - /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ - SLOT->eg_sh_ar = 13; - SLOT->eg_sel_ar = 0 * RATE_STEPS; - } - else if ((SLOT->ar + SLOT->ksr) >= 16+48) - { - /* attack rates 12.0 to 14.3 have similar specific behavior */ - /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ - SLOT->eg_sh_ar = 0; - SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr] + (4 * RATE_STEPS); - } - else - { - SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr]; - SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr]; - } - SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ]; - SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ]; - SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ]; - SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ]; - } - - if (CH->sus) - SLOT_rs = 16 + (5<<2); - else - SLOT_rs = 16 + (7<<2); - - SLOT->eg_sh_rs = eg_rate_shift [SLOT_rs + SLOT->ksr ]; - SLOT->eg_sel_rs = eg_rate_select[SLOT_rs + SLOT->ksr ]; - - SLOT_dp = 16 + (12<<2); - SLOT->eg_sh_dp = eg_rate_shift [SLOT_dp + SLOT->ksr ]; - SLOT->eg_sel_dp = eg_rate_select[SLOT_dp + SLOT->ksr ]; -} - -/* set multi,am,vib,EG-TYP,KSR,mul */ -INLINE void set_mul(int slot,int v) -{ - YM2413_OPLL_CH *CH = &ym2413.P_CH[slot/2]; - YM2413_OPLL_SLOT *SLOT = &CH->SLOT[slot&1]; - - SLOT->mul = mul_tab[v&0x0f]; - SLOT->KSR = (v&0x10) ? 0 : 2; - SLOT->eg_type = (v&0x20); - SLOT->vib = (v&0x40); - SLOT->AMmask = (v&0x80) ? ~0 : 0; - CALC_FCSLOT(CH,SLOT); -} - -/* set ksl, tl */ -INLINE void set_ksl_tl(int chan,int v) -{ - YM2413_OPLL_CH *CH = &ym2413.P_CH[chan]; - /* modulator */ - YM2413_OPLL_SLOT *SLOT = &CH->SLOT[SLOT1]; - - int ksl = v>>6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */ - - SLOT->ksl = ksl ? 3-ksl : 31; - SLOT->TL = (v&0x3f)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ - SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); -} - -/* set ksl , waveforms, feedback */ -INLINE void set_ksl_wave_fb(int chan,int v) -{ - YM2413_OPLL_CH *CH = &ym2413.P_CH[chan]; - /* modulator */ - YM2413_OPLL_SLOT *SLOT = &CH->SLOT[SLOT1]; - SLOT->wavetable = ((v&0x08)>>3)*SIN_LEN; - SLOT->fb_shift = (v&7) ? (v&7) + 8 : 0; - - /*carrier*/ - SLOT = &CH->SLOT[SLOT2]; - SLOT->wavetable = ((v&0x10)>>4)*SIN_LEN; - v >>= 6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */ - SLOT->ksl = v ? 3-v : 31; - SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); -} - -/* set attack rate & decay rate */ -INLINE void set_ar_dr(int slot,int v) -{ - YM2413_OPLL_CH *CH = &ym2413.P_CH[slot/2]; - YM2413_OPLL_SLOT *SLOT = &CH->SLOT[slot&1]; - - SLOT->ar = (v>>4) ? 16 + ((v>>4) <<2) : 0; - - if ((SLOT->ar + SLOT->ksr) >= 16+60) - { - /* attack phase is skipped in case attack rate is set to 15.0-15.3 before attack phase is started */ - /* during attack phase, in case attack rate is changed to 15.0-15.3, attack phase is blocked */ - /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ - SLOT->eg_sh_ar = 13; - SLOT->eg_sel_ar = 0 * RATE_STEPS; - } - else if ((SLOT->ar + SLOT->ksr) >= 16+48) - { - /* attack rates 12.0 to 14.3 have similar specific behavior */ - /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ - SLOT->eg_sh_ar = 0; - SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr] + (4 * RATE_STEPS); - } - else - { - SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr]; - SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr]; - } - - SLOT->dr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0; - SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ]; - SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ]; -} - -/* set sustain level & release rate */ -INLINE void set_sl_rr(int slot,int v) -{ - YM2413_OPLL_CH *CH = &ym2413.P_CH[slot/2]; - YM2413_OPLL_SLOT *SLOT = &CH->SLOT[slot&1]; - - SLOT->sl = sl_tab[ v>>4 ]; - - SLOT->rr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0; - SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ]; - SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ]; -} - -static void load_instrument(UINT32 chan, UINT32 slot, UINT8* inst ) -{ - set_mul(slot, inst[0]); - set_mul(slot+1, inst[1]); - set_ksl_tl(chan, inst[2]); - set_ksl_wave_fb(chan, inst[3]); - set_ar_dr(slot, inst[4]); - set_ar_dr(slot+1, inst[5]); - set_sl_rr(slot, inst[6]); - set_sl_rr(slot+1, inst[7]); -} - -static void update_instrument_zero(UINT8 r) -{ - UINT8* inst = &ym2413.inst_tab[0][0]; /* point to user instrument */ - UINT32 chan; - - UINT32 chan_max = 9; - if (ym2413.rhythm & 0x20) - chan_max=6; - - switch(r&7) - { - case 0: - for (chan=0; chanSLOT[SLOT1]; /* modulator envelope is HH */ - SLOT->TL = ((ym2413.instvol_r[7]>>4)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ - SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); - - /* Load instrument settings for channel nine. (Tom-tom and top cymbal) */ - load_instrument(8, 16, &ym2413.inst_tab[18][0]); - - CH = &ym2413.P_CH[8]; - SLOT = &CH->SLOT[SLOT1]; /* modulator envelope is TOM */ - SLOT->TL = ((ym2413.instvol_r[8]>>4)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ - SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); - } - - /* BD key on/off */ - if(v&0x10) - { - KEY_ON (&ym2413.P_CH[6].SLOT[SLOT1], 2); - KEY_ON (&ym2413.P_CH[6].SLOT[SLOT2], 2); - } - else - { - KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT1],~2); - KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT2],~2); - } - - /* HH key on/off */ - if(v&0x01) KEY_ON (&ym2413.P_CH[7].SLOT[SLOT1], 2); - else KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT1],~2); - - /* SD key on/off */ - if(v&0x08) KEY_ON (&ym2413.P_CH[7].SLOT[SLOT2], 2); - else KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT2],~2); - - /* TOM key on/off */ - if(v&0x04) KEY_ON (&ym2413.P_CH[8].SLOT[SLOT1], 2); - else KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT1],~2); - - /* TOP-CY key on/off */ - if(v&0x02) KEY_ON (&ym2413.P_CH[8].SLOT[SLOT2], 2); - else KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT2],~2); - } - else - { - /* rhythm ON to OFF */ - if (ym2413.rhythm&0x20) - { - /* Load instrument settings for channel seven(chan=6 since we're zero based).*/ - load_instrument(6, 12, &ym2413.inst_tab[ym2413.instvol_r[6]>>4][0]); - - /* Load instrument settings for channel eight.*/ - load_instrument(7, 14, &ym2413.inst_tab[ym2413.instvol_r[7]>>4][0]); - - /* Load instrument settings for channel nine.*/ - load_instrument(8, 16, &ym2413.inst_tab[ym2413.instvol_r[8]>>4][0]); - } - - /* BD key off */ - KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT1],~2); - KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT2],~2); - - /* HH key off */ - KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT1],~2); - - /* SD key off */ - KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT2],~2); - - /* TOM key off */ - KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT1],~2); - - /* TOP-CY off */ - KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT2],~2); - } - - ym2413.rhythm = v&0x3f; - break; - } - } - - break; - } - - case 0x10: - case 0x20: - { - int block_fnum; - - int chan = r&0x0f; - - if (chan >= 9) - chan -= 9; /* verified on real YM2413 */ - - CH = &ym2413.P_CH[chan]; - - if(r&0x10) - { - /* 10-18: FNUM 0-7 */ - block_fnum = (CH->block_fnum&0x0f00) | v; - } - else - { - /* 20-28: suson, keyon, block, FNUM 8 */ - block_fnum = ((v&0x0f)<<8) | (CH->block_fnum&0xff); - - if(v&0x10) - { - KEY_ON (&CH->SLOT[SLOT1], 1); - KEY_ON (&CH->SLOT[SLOT2], 1); - } - else - { - KEY_OFF(&CH->SLOT[SLOT1],~1); - KEY_OFF(&CH->SLOT[SLOT2],~1); - } - - CH->sus = v & 0x20; - } - - /* update */ - if(CH->block_fnum != block_fnum) - { - UINT8 block; - CH->block_fnum = block_fnum; - - /* BLK 2,1,0 bits -> bits 3,2,1 of kcode, FNUM MSB -> kcode LSB */ - CH->kcode = (block_fnum&0x0f00)>>8; - - CH->ksl_base = ksl_tab[block_fnum>>5]; - - block_fnum = block_fnum * 2; - block = (block_fnum&0x1c00) >> 10; - CH->fc = ym2413.fn_tab[block_fnum&0x03ff] >> (7-block); - - /* refresh Total Level in both SLOTs of this channel */ - CH->SLOT[SLOT1].TLL = CH->SLOT[SLOT1].TL + (CH->ksl_base>>CH->SLOT[SLOT1].ksl); - CH->SLOT[SLOT2].TLL = CH->SLOT[SLOT2].TL + (CH->ksl_base>>CH->SLOT[SLOT2].ksl); - - /* refresh frequency counter in both SLOTs of this channel */ - CALC_FCSLOT(CH,&CH->SLOT[SLOT1]); - CALC_FCSLOT(CH,&CH->SLOT[SLOT2]); - } - - break; - } - - case 0x30: /* inst 4 MSBs, VOL 4 LSBs */ - { - int chan = r&0x0f; - - if (chan >= 9) - chan -= 9; /* verified on real YM2413 */ - - CH = &ym2413.P_CH[chan]; - SLOT = &CH->SLOT[SLOT2]; /* carrier */ - SLOT->TL = ((v&0x0f)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ - SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); - - /*check wether we are in rhythm mode and handle instrument/volume register accordingly*/ - if ((chan>=6) && (ym2413.rhythm&0x20)) - { - /* we're in rhythm mode*/ - - if (chan>=7) /* only for channel 7 and 8 (channel 6 is handled in usual way)*/ - { - SLOT = &CH->SLOT[SLOT1]; /* modulator envelope is HH(chan=7) or TOM(chan=8) */ - SLOT->TL = ((v>>4)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ - SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); - } - } - else - { - if ((ym2413.instvol_r[chan]&0xf0) != (v&0xf0)) - { - ym2413.instvol_r[chan] = v; /* store for later use */ - load_instrument(chan, chan * 2, &ym2413.inst_tab[v>>4][0]); - } - } - - break; - } - - default: - break; - } -} - - -void YM2413Init(void) -{ - init_tables(); - - /* clear */ - memset(&ym2413,0,sizeof(YM2413)); - - /* init global tables */ - OPLL_initalize(); -} - -void YM2413ResetChip(void) -{ - int c,s; - int i; - - ym2413.eg_timer = 0; - ym2413.eg_cnt = 0; - - ym2413.noise_rng = 1; /* noise shift register */ - - - /* setup instruments table */ - for (i=0; i<19; i++) - { - for (c=0; c<8; c++) - { - ym2413.inst_tab[i][c] = table[i][c]; - } - } - - - /* reset with register write */ - OPLLWriteReg(0x0f,0); /*test reg*/ - for(i = 0x3f ; i >= 0x10 ; i-- ) OPLLWriteReg(i,0x00); - - /* reset operator parameters */ - for( c = 0 ; c < 9 ; c++ ) - { - YM2413_OPLL_CH *CH = &ym2413.P_CH[c]; - for(s = 0 ; s < 2 ; s++ ) - { - /* wave table */ - CH->SLOT[s].wavetable = 0; - CH->SLOT[s].state = EG_OFF; - CH->SLOT[s].volume = MAX_ATT_INDEX; - } - } -} - -/* YM2413 I/O interface */ - -void YM2413Write(unsigned int a, unsigned int v) -{ - if( !(a&2) ) - { - if( !(a&1) ) - { - /* address port */ - ym2413.address = v & 0xff; - } - else - { - /* data port */ - OPLLWriteReg(ym2413.address,v); - } - } - else - { - /* bit 0 enable/disable FM output (Master System / Mark-III FM adapter specific) */ - ym2413.status = v & 0x01; - } -} - -unsigned int YM2413Read(void) -{ - /* bit 0 returns latched FM enable status, bits 1-2 return zero (Master System / Mark-III FM adapter specific) */ - return 0xF8 | ym2413.status; -} - -void YM2413Update(int *buffer, int length) -{ - int i, out; - - for( i=0; i < length ; i++ ) - { - output[0] = 0; - output[1] = 0; - - advance_lfo(); - - /* FM part */ - chan_calc(&ym2413.P_CH[0]); - chan_calc(&ym2413.P_CH[1]); - chan_calc(&ym2413.P_CH[2]); - chan_calc(&ym2413.P_CH[3]); - chan_calc(&ym2413.P_CH[4]); - chan_calc(&ym2413.P_CH[5]); - - if(!(ym2413.rhythm&0x20)) - { - chan_calc(&ym2413.P_CH[6]); - chan_calc(&ym2413.P_CH[7]); - chan_calc(&ym2413.P_CH[8]); - } - else /* Rhythm part */ - { - rhythm_calc(&ym2413.P_CH[0], (ym2413.noise_rng>>0)&1 ); - } - - /* Melody (MO) & Rythm (RO) outputs mixing & amplification (latched bit controls FM output) */ - out = (output[0] + (output[1] * 2)) * 2 * ym2413.status; - - /* Store to stereo sound buffer */ - *buffer++ = out; - *buffer++ = out; - - advance(); - } -} - -unsigned char *YM2413GetContextPtr(void) -{ - return (unsigned char *)&ym2413; -} - -unsigned int YM2413GetContextSize(void) -{ - return sizeof(YM2413); -} +/* +** +** File: ym2413.c - software implementation of YM2413 +** FM sound generator type OPLL +** +** Copyright (C) 2002 Jarek Burczynski +** +** Version 1.0 +** +** + +to do: + +- make sure of the sinus amplitude bits + +- make sure of the EG resolution bits (looks like the biggest + modulation index generated by the modulator is 123, 124 = no modulation) +- find proper algorithm for attack phase of EG + +- tune up instruments ROM + +- support sample replay in test mode (it is NOT as simple as setting bit 0 + in register 0x0f and using register 0x10 for sample data). + Which games use this feature ? + +*/ + +/************************************************/ +/** Modifications for Genesis Plus GX (EkeEke) **/ +/************************************************/ +/** 2011/xx/xx: removed multiple chips support, cleaned code & added FM board interface **/ +/** 2021/04/23: fixed synchronization of carrier/modulator phase reset after channel Key ON (fixes Japanese Master System BIOS music) **/ +/** 2021/04/24: fixed intruments ROM (verified on YM2413B die, cf. https://siliconpr0n.org/archive/doku.php?id=vendor:yamaha:opl2#ym2413_instrument_rom) **/ +/** 2021/04/24: fixed EG resolution bits (verified on YM2413B die, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-03-20) **/ +/** 2021/04/24: fixed EG dump rate (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-12-31) **/ +/** 2021/04/25: fixed EG behavior for fastest attack rates (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) **/ +/** 2021/04/25: fixed EG behavior when SL = 0 (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-12-24) **/ +/** 2021/04/25: improved EG sustain phase transition comparator accuracy (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-12-31) **/ +/** 2021/05/04: improved EG increment steps accuracy (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2015-03-20) **/ +/** 2021/05/08: improved EG transitions accuracy (verified against https://github.com/nukeykt/Nuked-OPLL/blob/master/opll.c) **/ +/** 2021/05/11: improved EG attack phase algorithm accuracy (verified on YM2413 real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) **/ +/************************************************/ + +#include "shared.h" + +#define FREQ_SH 16 /* 16.16 fixed point (frequency calculations) */ +#define EG_SH 16 /* 16.16 fixed point (EG timing) */ +#define LFO_SH 24 /* 8.24 fixed point (LFO calculations) */ + +#define FREQ_MASK ((1<>KSR */ + UINT8 mul; /* multiple: mul_tab[ML] */ + + /* Phase Generator */ + UINT32 phase; /* frequency counter */ + UINT32 freq; /* frequency counter step */ + UINT8 fb_shift; /* feedback shift value */ + INT32 op1_out[2]; /* slot1 output for feedback */ + + /* Envelope Generator */ + UINT8 eg_type; /* percussive/nonpercussive mode */ + UINT8 state; /* phase type */ + UINT32 TL; /* total level: TL << 2 */ + INT32 TLL; /* adjusted now TL */ + INT32 volume; /* envelope counter */ + UINT32 sl; /* sustain level: sl_tab[SL] */ + + UINT8 eg_sh_dp; /* (dump state) */ + UINT8 eg_sel_dp; /* (dump state) */ + UINT8 eg_sh_ar; /* (attack state) */ + UINT8 eg_sel_ar; /* (attack state) */ + UINT8 eg_sh_dr; /* (decay state) */ + UINT8 eg_sel_dr; /* (decay state) */ + UINT8 eg_sh_rr; /* (release state for non-perc.) */ + UINT8 eg_sel_rr; /* (release state for non-perc.) */ + UINT8 eg_sh_rs; /* (release state for perc.mode) */ + UINT8 eg_sel_rs; /* (release state for perc.mode) */ + + UINT32 key; /* 0 = KEY OFF, >0 = KEY ON */ + + /* LFO */ + UINT32 AMmask; /* LFO Amplitude Modulation enable mask */ + UINT8 vib; /* LFO Phase Modulation enable flag (active high)*/ + + /* waveform select */ + unsigned int wavetable; +} YM2413_OPLL_SLOT; + +typedef struct +{ + YM2413_OPLL_SLOT SLOT[2]; + + /* phase generator state */ + UINT32 block_fnum; /* block+fnum */ + UINT32 fc; /* Freq. freqement base */ + UINT32 ksl_base; /* KeyScaleLevel Base step */ + UINT8 kcode; /* key code (for key scaling) */ + UINT8 sus; /* sus on/off (release speed in percussive mode) */ +} YM2413_OPLL_CH; + +/* chip state */ +typedef struct { + YM2413_OPLL_CH P_CH[9]; /* OPLL chips have 9 channels */ + UINT8 instvol_r[9]; /* instrument/volume (or volume/volume in percussive mode) */ + + UINT32 eg_cnt; /* global envelope generator counter */ + UINT32 eg_timer; /* global envelope generator counter works at frequency = chipclock/72 */ + UINT32 eg_timer_add; /* step of eg_timer */ + UINT32 eg_timer_overflow; /* envelope generator timer overlfows every 1 sample (on real chip) */ + + UINT8 rhythm; /* Rhythm mode */ + + /* LFO */ + UINT32 lfo_am_cnt; + UINT32 lfo_am_inc; + UINT32 lfo_pm_cnt; + UINT32 lfo_pm_inc; + + UINT32 noise_rng; /* 23 bit noise shift register */ + UINT32 noise_p; /* current noise 'phase' */ + UINT32 noise_f; /* current noise period */ + + +/* instrument settings */ +/* + 0-user instrument + 1-15 - fixed instruments + 16 -bass drum settings + 17,18 - other percussion instruments +*/ + UINT8 inst_tab[19][8]; + + UINT32 fn_tab[1024]; /* fnumber->increment counter */ + + UINT8 address; /* address register */ + UINT8 status; /* status flag */ + + double clock; /* master clock (Hz) */ + int rate; /* sampling rate (Hz) */ +} YM2413; + +/* key scale level */ +/* table is 3dB/octave, DV converts this into 6dB/octave */ +/* 0.1875 is bit 0 weight of the envelope counter (volume) expressed in the 'decibel' scale */ +#define DV (0.1875/1.0) +static const UINT32 ksl_tab[8*16]= +{ + /* OCT 0 */ + 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, + 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, + 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, + 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, + /* OCT 1 */ + 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, + 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, + 0.000/DV, 0.750/DV, 1.125/DV, 1.500/DV, + 1.875/DV, 2.250/DV, 2.625/DV, 3.000/DV, + /* OCT 2 */ + 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, + 0.000/DV, 1.125/DV, 1.875/DV, 2.625/DV, + 3.000/DV, 3.750/DV, 4.125/DV, 4.500/DV, + 4.875/DV, 5.250/DV, 5.625/DV, 6.000/DV, + /* OCT 3 */ + 0.000/DV, 0.000/DV, 0.000/DV, 1.875/DV, + 3.000/DV, 4.125/DV, 4.875/DV, 5.625/DV, + 6.000/DV, 6.750/DV, 7.125/DV, 7.500/DV, + 7.875/DV, 8.250/DV, 8.625/DV, 9.000/DV, + /* OCT 4 */ + 0.000/DV, 0.000/DV, 3.000/DV, 4.875/DV, + 6.000/DV, 7.125/DV, 7.875/DV, 8.625/DV, + 9.000/DV, 9.750/DV,10.125/DV,10.500/DV, + 10.875/DV,11.250/DV,11.625/DV,12.000/DV, + /* OCT 5 */ + 0.000/DV, 3.000/DV, 6.000/DV, 7.875/DV, + 9.000/DV,10.125/DV,10.875/DV,11.625/DV, + 12.000/DV,12.750/DV,13.125/DV,13.500/DV, + 13.875/DV,14.250/DV,14.625/DV,15.000/DV, + /* OCT 6 */ + 0.000/DV, 6.000/DV, 9.000/DV,10.875/DV, + 12.000/DV,13.125/DV,13.875/DV,14.625/DV, + 15.000/DV,15.750/DV,16.125/DV,16.500/DV, + 16.875/DV,17.250/DV,17.625/DV,18.000/DV, + /* OCT 7 */ + 0.000/DV, 9.000/DV,12.000/DV,13.875/DV, + 15.000/DV,16.125/DV,16.875/DV,17.625/DV, + 18.000/DV,18.750/DV,19.125/DV,19.500/DV, + 19.875/DV,20.250/DV,20.625/DV,21.000/DV +}; +#undef DV + +/* sustain level table (3dB per step) */ +/* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,45 (dB)*/ +#define SC(db) (UINT32) ( db * (1.0/ENV_STEP) ) +static const UINT32 sl_tab[16]={ + SC( 0),SC( 1),SC( 2),SC(3 ),SC(4 ),SC(5 ),SC(6 ),SC( 7), + SC( 8),SC( 9),SC(10),SC(11),SC(12),SC(13),SC(14),SC(15) +}; +#undef SC + + +#define RATE_STEPS (16) + +static const unsigned char eg_inc[14*RATE_STEPS]={ + +/*cycle:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/ + +/* 0 */ 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, /* infinity rates for decay(s) */ + +/* 1 */ 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, /* rates 01..12 0 for decay(s) (increment by 0 or 1) */ +/* 2 */ 0,1, 1,1, 0,1, 0,1, 0,1, 1,1, 0,1, 0,1, /* rates 01..12 1 for decay(s) */ +/* 3 */ 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, /* rates 01..12 2 for decay(s) */ +/* 4 */ 0,1, 1,1, 1,1, 1,1, 0,1, 1,1, 1,1, 1,1, /* rates 01..12 3 for decay(s) */ + +/* 5 */ 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, /* rate 13 0 for decay(s) (increment by 0 or 1) */ +/* 6 */ 0,1, 0,1, 1,1, 1,1, 0,1, 0,1, 0,1, 0,1, /* rate 13 1 for decay(s) */ +/* 7 */ 0,1, 0,1, 1,1, 1,1, 0,1, 0,1, 1,1, 1,1, /* rate 13 2 for decay(s) */ +/* 8 */ 0,1, 0,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, /* rate 13 3 for decay(s) */ + +/* 9 */ 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, /* rate 14 0 for decay(s) (increment by 1) */ +/*10 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 1,1, 1,1, /* rate 14 1 for decay(s) */ +/*11 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 2,2, 2,2, /* rate 14 2 for decay(s) */ +/*12 */ 1,1, 1,1, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rate 14 3 for decay(s) */ + +/*13 */ 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rates 15 0, 15 1, 15 2, 15 3 for decay(s) (increment by 2) */ + +}; + +static const unsigned char eg_mul[17*RATE_STEPS]={ + +/*cycle:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/ + +/* 0 */ 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, /* infinity rates for attack */ + +/* 1 */ 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, /* rates 01..11 0 for attack */ +/* 2 */ 0,1, 1,1, 0,1, 0,1, 0,1, 1,1, 0,1, 0,1, /* rates 01..11 1 for attack */ +/* 3 */ 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, 0,1, 1,1, /* rates 01..11 2 for attack */ +/* 4 */ 0,1, 1,1, 1,1, 1,1, 0,1, 1,1, 1,1, 1,1, /* rates 01..11 3 for attack */ + +/* 5 */ 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, /* rate 12 0 for attack */ +/* 6 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 1,1, 1,1, /* rate 12 1 for attack */ +/* 7 */ 1,1, 1,1, 2,2, 2,2, 1,1, 1,1, 2,2, 2,2, /* rate 12 2 for attack */ +/* 8 */ 1,1, 1,1, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rate 12 3 for attack */ + +/* 9 */ 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, /* rate 13 0 for attack */ +/*10 */ 2,2, 2,2, 4,4, 4,4, 2,2, 2,2, 2,2, 2,2, /* rate 13 1 for attack */ +/*11 */ 2,2, 2,2, 4,4, 4,4, 2,2, 2,2, 4,4, 4,4, /* rate 13 2 for attack */ +/*12 */ 2,2, 2,2, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, /* rate 13 3 for attack */ + +/*13 */ 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, /* rate 14 0 for attack */ +/*14 */ 4,4, 4,4, 8,8, 8,8, 4,4, 4,4, 4,4, 4,4, /* rate 14 1 for attack */ +/*15 */ 4,4, 4,4, 8,8, 8,8, 4,4, 4,4, 8,8, 8,8, /* rate 14 2 for attack */ +/*16 */ 4,4, 4,4, 8,8, 8,8, 8,8, 8,8, 8,8, 8,8, /* rate 14 3 for attack */ + +}; + +#define O(a) (a*RATE_STEPS) + +static const unsigned char eg_rate_select[16+64+16]={ /* Envelope Generator rates (16 + 64 rates + 16 RKS) */ + +/* 16 infinite time rates */ +O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), +O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), + +/* rate 00 */ +O( 0),O( 0),O( 0),O( 0), /* never used since infinite time rates are directly forced in the code for rate 00 */ + +/* rates 01-11 */ +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), +O( 1),O( 2),O( 3),O( 4), + +/* rate 12 */ /* only used for decay(s), handled directly in the code for attack */ +O( 1),O( 2),O( 3),O( 4), + +/* rate 13 */ /* only used for decay(s), handled directly in the code for attack */ +O( 5),O( 6),O( 7),O( 8), + +/* rate 14 */ /* only used for decay(s), handled directly in the code for attack */ +O( 9),O(10),O(11),O(12), + +/* rate 15 */ /* only used for decay(s), handled directly in the code for attack */ +O(13),O(13),O(13),O(13), + +/* 16 dummy rates (same as 15 3) */ +O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), +O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), + +}; +#undef O + +/*rate 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 */ +/*shift 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0 */ +/*mask 8191, 4095, 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1, 0, 0, 0 */ +/*NB: for attack, above mask values lower 2 bits are cleared and rate 12 shift value is equal to 0 */ + +#define O(a) (a*1) +static const unsigned char eg_rate_shift[16+64+16]={ /* Envelope Generator counter shifts (16 + 64 rates + 16 RKS) */ + +/* 16 infinite time rates */ +O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), +O(13),O(13),O(13),O(13),O(13),O(13),O(13),O(13), + +/* rate 00 */ +O(13),O(13),O(13),O(13), /* never used since infinite time rates are directly forced in the code for rate 00 */ + +/* rates 01-11 */ +O(12),O(12),O(12),O(12), +O(11),O(11),O(11),O(11), +O(10),O(10),O(10),O(10), +O( 9),O( 9),O( 9),O( 9), +O( 8),O( 8),O( 8),O( 8), +O( 7),O( 7),O( 7),O( 7), +O( 6),O( 6),O( 6),O( 6), +O( 5),O( 5),O( 5),O( 5), +O( 4),O( 4),O( 4),O( 4), +O( 3),O( 3),O( 3),O( 3), +O( 2),O( 2),O( 2),O( 2), + +/* rate 12 */ /* only used for decay(s), handled directly in the code for attack */ +O( 1),O( 1),O( 1),O( 1), + +/* rate 13 */ /* only used for decay(s), handled directly in the code for attack */ +O( 0),O( 0),O( 0),O( 0), + +/* rate 14 */ /* only used for decay(s), handled directly in the code for attack */ +O( 0),O( 0),O( 0),O( 0), + +/* rate 15 */ /* only used for decay(s), handled directly in the code for attack */ +O( 0),O( 0),O( 0),O( 0), + +/* 16 dummy rates (same as 15 3) */ +O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), +O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), + +}; +#undef O + + +/* multiple table */ +#define ML 2 +static const UINT8 mul_tab[16]= { +/* 1/2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,10,12,12,15,15 */ + 0.50*ML, 1.00*ML, 2.00*ML, 3.00*ML, 4.00*ML, 5.00*ML, 6.00*ML, 7.00*ML, + 8.00*ML, 9.00*ML,10.00*ML,10.00*ML,12.00*ML,12.00*ML,15.00*ML,15.00*ML +}; +#undef ML + +/* TL_TAB_LEN is calculated as: +* 11 - sinus amplitude bits (Y axis) +* 2 - sinus sign bit (Y axis) +* TL_RES_LEN - sinus resolution (X axis) +*/ +#define TL_TAB_LEN (11*2*TL_RES_LEN) +static signed int tl_tab[TL_TAB_LEN]; + +#define ENV_QUIET (TL_TAB_LEN>>5) + +/* sin waveform table in 'decibel' scale */ +/* two waveforms on OPLL type chips */ +static unsigned int sin_tab[SIN_LEN * 2]; + + +/* LFO Amplitude Modulation table (verified on real YM3812) + 27 output levels (triangle waveform); 1 level takes one of: 192, 256 or 448 samples + + Length: 210 elements. + + Each of the elements has to be repeated + exactly 64 times (on 64 consecutive samples). + The whole table takes: 64 * 210 = 13440 samples. + +We use data>>1, until we find what it really is on real chip... + +*/ + +#define LFO_AM_TAB_ELEMENTS 210 + +static const UINT8 lfo_am_table[LFO_AM_TAB_ELEMENTS] = { +0,0,0,0,0,0,0, +1,1,1,1, +2,2,2,2, +3,3,3,3, +4,4,4,4, +5,5,5,5, +6,6,6,6, +7,7,7,7, +8,8,8,8, +9,9,9,9, +10,10,10,10, +11,11,11,11, +12,12,12,12, +13,13,13,13, +14,14,14,14, +15,15,15,15, +16,16,16,16, +17,17,17,17, +18,18,18,18, +19,19,19,19, +20,20,20,20, +21,21,21,21, +22,22,22,22, +23,23,23,23, +24,24,24,24, +25,25,25,25, +26,26,26, +25,25,25,25, +24,24,24,24, +23,23,23,23, +22,22,22,22, +21,21,21,21, +20,20,20,20, +19,19,19,19, +18,18,18,18, +17,17,17,17, +16,16,16,16, +15,15,15,15, +14,14,14,14, +13,13,13,13, +12,12,12,12, +11,11,11,11, +10,10,10,10, +9,9,9,9, +8,8,8,8, +7,7,7,7, +6,6,6,6, +5,5,5,5, +4,4,4,4, +3,3,3,3, +2,2,2,2, +1,1,1,1 +}; + +/* LFO Phase Modulation table (verified on real YM2413) */ +static const INT8 lfo_pm_table[8*8] = { + +/* FNUM2/FNUM = 0 00xxxxxx (0x0000) */ +0, 0, 0, 0, 0, 0, 0, 0, + +/* FNUM2/FNUM = 0 01xxxxxx (0x0040) */ +1, 0, 0, 0,-1, 0, 0, 0, + +/* FNUM2/FNUM = 0 10xxxxxx (0x0080) */ +2, 1, 0,-1,-2,-1, 0, 1, + +/* FNUM2/FNUM = 0 11xxxxxx (0x00C0) */ +3, 1, 0,-1,-3,-1, 0, 1, + +/* FNUM2/FNUM = 1 00xxxxxx (0x0100) */ +4, 2, 0,-2,-4,-2, 0, 2, + +/* FNUM2/FNUM = 1 01xxxxxx (0x0140) */ +5, 2, 0,-2,-5,-2, 0, 2, + +/* FNUM2/FNUM = 1 10xxxxxx (0x0180) */ +6, 3, 0,-3,-6,-3, 0, 3, + +/* FNUM2/FNUM = 1 11xxxxxx (0x01C0) */ +7, 3, 0,-3,-7,-3, 0, 3, +}; + + +/* This is not 100% perfect yet but very close */ +/* + - multi parameters are 100% correct (instruments and drums) + - LFO PM and AM enable are 100% correct + - waveform DC and DM select are 100% correct +*/ +/* 2021/04/23: corrected with values extracted from YM2413 instrument ROM, cf. https://siliconpr0n.org/archive/doku.php?id=vendor:yamaha:opl2#ym2413_instrument_rom */ + +static unsigned char table[19][8] = { +/* MULT MULT modTL DcDmFb AR/DR AR/DR SL/RR SL/RR */ +/* 0 1 2 3 4 5 6 7 */ +/*{0x49, 0x4c, 0x4c, 0x12, 0x00, 0x00, 0x00, 0x00 }, */ /* 0 */ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0 */ + +/*{0x61, 0x61, 0x1e, 0x17, 0xf0, 0x78, 0x00, 0x17 }, */ /* 1 */ + {0x71, 0x61, 0x1e, 0x17, 0xd0, 0x78, 0x00, 0x17 }, /* 1 */ + +/*{0x13, 0x41, 0x1e, 0x0d, 0xd7, 0xf7, 0x13, 0x13 }, */ /* 2 */ + {0x13, 0x41, 0x1a, 0x0d, 0xd8, 0xf7, 0x23, 0x13 }, /* 2 */ + +/*{0x13, 0x01, 0x99, 0x04, 0xf2, 0xf4, 0x11, 0x23 }, */ /* 3 */ + {0x13, 0x01, 0x99, 0x00, 0xf2, 0xc4, 0x11, 0x23 }, /* 3 */ + +/*{0x21, 0x61, 0x1b, 0x07, 0xaf, 0x64, 0x40, 0x27 }, */ /* 4 */ + {0x31, 0x61, 0x0e, 0x07, 0xa8, 0x64, 0x70, 0x27 }, /* 4 */ + +/*{0x22, 0x21, 0x1e, 0x09, 0xf0, 0x76, 0x08, 0x28 }, */ /* 5 */ +/*{0x22, 0x21, 0x1e, 0x06, 0xf0, 0x75, 0x08, 0x18 }, */ /* 5 */ + {0x32, 0x21, 0x1e, 0x06, 0xe0, 0x76, 0x00, 0x28 }, /* 5 */ + +/*{0x31, 0x22, 0x16, 0x09, 0x90, 0x7f, 0x00, 0x08 }, */ /* 6 */ +/*{0x31, 0x22, 0x16, 0x05, 0x90, 0x71, 0x00, 0x13 }, */ /* 6 */ + {0x31, 0x22, 0x16, 0x05, 0xe0, 0x71, 0x00, 0x18 }, /* 6 */ + +/*{0x21, 0x61, 0x1d, 0x07, 0x82, 0x80, 0x10, 0x17 }, */ /* 7 */ + {0x21, 0x61, 0x1d, 0x07, 0x82, 0x81, 0x10, 0x07 }, /* 7 */ + +/*{0x23, 0x21, 0x2d, 0x16, 0xc0, 0x70, 0x07, 0x07 }, */ /* 8 */ + {0x23, 0x21, 0x2d, 0x14, 0xa2, 0x72, 0x00, 0x07 }, /* 8 */ + + {0x61, 0x61, 0x1b, 0x06, 0x64, 0x65, 0x10, 0x17 }, /* 9 */ + +/*{0x61, 0x61, 0x0c, 0x08, 0x85, 0xa0, 0x79, 0x07 }, */ /* A */ +/*{0x61, 0x61, 0x0c, 0x18, 0x85, 0xf0, 0x70, 0x07 }, */ /* A */ + {0x41, 0x61, 0x0b, 0x18, 0x85, 0xf7, 0x71, 0x07 }, /* A */ + +/*{0x23, 0x01, 0x07, 0x11, 0xf0, 0xa4, 0x00, 0x22 }, */ /* B */ + {0x13, 0x01, 0x83, 0x11, 0xfa, 0xe4, 0x10, 0x04 }, /* B */ + +/*{0x97, 0xc1, 0x24, 0x07, 0xff, 0xf8, 0x22, 0x12 }, */ /* C */ + {0x17, 0xc1, 0x24, 0x07, 0xf8, 0xf8, 0x22, 0x12 }, /* C */ + +/*{0x61, 0x10, 0x0c, 0x08, 0xf2, 0xc4, 0x40, 0xc8 }, */ /* D */ +/*{0x61, 0x10, 0x0c, 0x05, 0xf2, 0xf4, 0x40, 0x44 }, */ /* D */ + {0x61, 0x50, 0x0c, 0x05, 0xc2, 0xf5, 0x20, 0x42 }, /* D */ + +/*{0x01, 0x01, 0x55, 0x03, 0xf3, 0x92, 0xf3, 0xf3 }, */ /* E */ + {0x01, 0x01, 0x55, 0x03, 0xc9, 0x95, 0x03, 0x02 }, /* E */ + +/*{0x61, 0x41, 0x89, 0x03, 0xf1, 0xf4, 0xf0, 0x13 }, */ /* F */ + {0x61, 0x41, 0x89, 0x03, 0xf1, 0xe4, 0x40, 0x13 }, /* F */ + +/* drum instruments definitions */ +/* MULTI MULTI modTL xxx AR/DR AR/DR SL/RR SL/RR */ +/* 0 1 2 3 4 5 6 7 */ +/*{0x01, 0x01, 0x16, 0x00, 0xfd, 0xf8, 0x2f, 0x6d },*/ /* BD(multi verified, modTL verified, mod env - verified(close), carr. env verifed) */ +/*{0x01, 0x01, 0x00, 0x00, 0xd8, 0xd8, 0xf9, 0xf8 },*/ /* HH(multi verified), SD(multi not used) */ +/*{0x05, 0x01, 0x00, 0x00, 0xf8, 0xba, 0x49, 0x55 },*/ /* TOM(multi,env verified), TOP CYM(multi verified, env verified) */ + {0x01, 0x01, 0x18, 0x0f, 0xdf, 0xf8, 0x6a, 0x6d }, /* BD */ + {0x01, 0x01, 0x00, 0x00, 0xc8, 0xd8, 0xa7, 0x48 }, /* HH, SD */ + {0x05, 0x01, 0x00, 0x00, 0xf8, 0xaa, 0x59, 0x55 } /* TOM, TOP CYM */ +}; + +static signed int output[2]; + +static UINT32 LFO_AM; +static INT32 LFO_PM; + +/* emulated chip */ +static YM2413 ym2413; + +/* advance LFO to next sample */ +INLINE void advance_lfo(void) +{ + /* LFO */ + ym2413.lfo_am_cnt += ym2413.lfo_am_inc; + if (ym2413.lfo_am_cnt >= (LFO_AM_TAB_ELEMENTS<> LFO_SH ] >> 1; + + ym2413.lfo_pm_cnt += ym2413.lfo_pm_inc; + LFO_PM = (ym2413.lfo_pm_cnt>>LFO_SH) & 7; +} + +/* advance to next sample */ +INLINE void advance(void) +{ + YM2413_OPLL_CH *CH; + YM2413_OPLL_SLOT *op; + unsigned int i; + + /* Envelope Generator */ + ym2413.eg_timer += ym2413.eg_timer_add; + + while (ym2413.eg_timer >= ym2413.eg_timer_overflow) + { + ym2413.eg_timer -= ym2413.eg_timer_overflow; + + ym2413.eg_cnt++; + + for (i=0; i<9*2; i++) + { + CH = &ym2413.P_CH[i>>1]; + + op = &CH->SLOT[i&1]; + + switch(op->state) + { + case EG_DMP: /* dump phase */ + if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ + { + op->state = EG_ATT; + + /* force envelope to zero when attack rate is set to 15.0-15.3 */ + if ((op->ar + op->ksr) >= 16+60) + { + op->volume = MIN_ATT_INDEX; + } + + /*dump phase is performed by both operators in each channel*/ + /*when CARRIER envelope gets down to zero level, + *phases in BOTH operators are reset (at the same time ?) + */ + if (i&1) + { + CH->SLOT[0].phase = CH->SLOT[1].phase = 0; + } + } + else if ( !(ym2413.eg_cnt & ((1<eg_sh_dp)-1) ) ) + { + op->volume += eg_inc[op->eg_sel_dp + ((ym2413.eg_cnt>>op->eg_sh_dp)&15)]; + } + break; + + case EG_ATT: /* attack phase */ + if (op->volume == MIN_ATT_INDEX) + { + op->state = EG_DEC; + } + else if ( !(ym2413.eg_cnt & (((1<eg_sh_ar)-1) & ~3)) ) + { + op->volume += (~op->volume * (eg_mul[op->eg_sel_ar + ((ym2413.eg_cnt>>op->eg_sh_ar)&15)]))>>4; + } + break; + + case EG_DEC: /* decay phase */ + if ( (op->volume & ~7) == op->sl ) /* envelope level lowest 3 bits are ignored by the comparator */ + { + op->state = EG_SUS; + } + else if ( !(ym2413.eg_cnt & ((1<eg_sh_dr)-1) ) ) + { + op->volume += eg_inc[op->eg_sel_dr + ((ym2413.eg_cnt>>op->eg_sh_dr)&15)]; + if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ + { + op->state = EG_OFF; + } + } + break; + + case EG_SUS: /* sustain phase */ + /* this is important behaviour: + one can change percusive/non-percussive modes on the fly and + the chip will remain in sustain phase - verified on real YM3812 */ + + if (op->eg_type) /* non-percussive mode (sustained tone) */ + { + /* do nothing */ + } + else /* percussive mode */ + { + /* during sustain phase chip adds Release Rate (in percussive mode) */ + if ( !(ym2413.eg_cnt & ((1<eg_sh_rr)-1) ) ) + { + op->volume += eg_inc[op->eg_sel_rr + ((ym2413.eg_cnt>>op->eg_sh_rr)&15)]; + if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ + { + op->state = EG_OFF; + } + } + /* else do nothing in sustain phase */ + } + break; + + case EG_REL: /* release phase */ + /* exclude modulators in melody channels from performing anything in this mode*/ + /* allowed are only carriers in melody mode and rhythm slots in rhythm mode */ + + /*This table shows which operators and on what conditions are allowed to perform EG_REL: + (a) - always perform EG_REL + (n) - never perform EG_REL + (r) - perform EG_REL in Rhythm mode ONLY + 0: 0 (n), 1 (a) + 1: 2 (n), 3 (a) + 2: 4 (n), 5 (a) + 3: 6 (n), 7 (a) + 4: 8 (n), 9 (a) + 5: 10(n), 11(a) + 6: 12(r), 13(a) + 7: 14(r), 15(a) + 8: 16(r), 17(a) + */ + if ( (i&1) || ((ym2413.rhythm&0x20) && (i>=12)) )/* exclude modulators */ + { + if (op->eg_type) /* non-percussive mode (sustained tone) */ + /*this is correct: use RR when SUS = OFF*/ + /*and use RS when SUS = ON*/ + { + if (CH->sus) + { + if ( !(ym2413.eg_cnt & ((1<eg_sh_rs)-1) ) ) + { + op->volume += eg_inc[op->eg_sel_rs + ((ym2413.eg_cnt>>op->eg_sh_rs)&15)]; + if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ + { + op->state = EG_OFF; + } + } + } + else + { + if ( !(ym2413.eg_cnt & ((1<eg_sh_rr)-1) ) ) + { + op->volume += eg_inc[op->eg_sel_rr + ((ym2413.eg_cnt>>op->eg_sh_rr)&15)]; + if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ + { + op->state = EG_OFF; + } + } + } + } + else /* percussive mode */ + { + if ( !(ym2413.eg_cnt & ((1<eg_sh_rs)-1) ) ) + { + op->volume += eg_inc[op->eg_sel_rs + ((ym2413.eg_cnt>>op->eg_sh_rs)&15)]; + if ( (op->volume & ~3) == (MAX_ATT_INDEX & ~3) ) /* envelope level lowest 2 bits are ignored by the comparator */ + { + op->state = EG_OFF; + } + } + } + } + break; + + case EG_OFF: /* envelope off */ + op->volume = MAX_ATT_INDEX; + break; + + default: + break; + } + } + } + + for (i=0; i<9*2; i++) + { + CH = &ym2413.P_CH[i/2]; + op = &CH->SLOT[i&1]; + + /* Phase Generator */ + if(op->vib) + { + UINT8 block; + + unsigned int fnum_lfo = 8*((CH->block_fnum&0x01c0) >> 6); + unsigned int block_fnum = CH->block_fnum * 2; + signed int lfo_fn_table_index_offset = lfo_pm_table[LFO_PM + fnum_lfo ]; + + if (lfo_fn_table_index_offset) /* LFO phase modulation active */ + { + block_fnum += lfo_fn_table_index_offset; + block = (block_fnum&0x1c00) >> 10; + op->phase += (ym2413.fn_tab[block_fnum&0x03ff] >> (7-block)) * op->mul; + } + else /* LFO phase modulation = zero */ + { + op->phase += op->freq; + } + } + else /* LFO phase modulation disabled for this operator */ + { + op->phase += op->freq; + } + } + + /* The Noise Generator of the YM3812 is 23-bit shift register. + * Period is equal to 2^23-2 samples. + * Register works at sampling frequency of the chip, so output + * can change on every sample. + * + * Output of the register and input to the bit 22 is: + * bit0 XOR bit14 XOR bit15 XOR bit22 + * + * Simply use bit 22 as the noise output. + */ + + ym2413.noise_p += ym2413.noise_f; + i = ym2413.noise_p >> FREQ_SH; /* number of events (shifts of the shift register) */ + ym2413.noise_p &= FREQ_MASK; + while (i) + { + /* + UINT32 j; + j = ( (chip->noise_rng) ^ (chip->noise_rng>>14) ^ (chip->noise_rng>>15) ^ (chip->noise_rng>>22) ) & 1; + chip->noise_rng = (j<<22) | (chip->noise_rng>>1); + */ + + /* + Instead of doing all the logic operations above, we + use a trick here (and use bit 0 as the noise output). + The difference is only that the noise bit changes one + step ahead. This doesn't matter since we don't know + what is real state of the noise_rng after the reset. + */ + + if (ym2413.noise_rng & 1) ym2413.noise_rng ^= 0x800302; + ym2413.noise_rng >>= 1; + + i--; + } +} + + +INLINE signed int op_calc(UINT32 phase, unsigned int env, signed int pm, unsigned int wave_tab) +{ + UINT32 p = (env<<5) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + (pm<<17))) >> FREQ_SH ) & SIN_MASK) ]; + + if (p >= TL_TAB_LEN) + return 0; + return tl_tab[p]; +} + +INLINE signed int op_calc1(UINT32 phase, unsigned int env, signed int pm, unsigned int wave_tab) +{ + UINT32 p = (env<<5) + sin_tab[wave_tab + ((((signed int)((phase & ~FREQ_MASK) + pm)) >> FREQ_SH ) & SIN_MASK) ]; + + if (p >= TL_TAB_LEN) + return 0; + return tl_tab[p]; +} + +#define volume_calc(OP) ((OP)->TLL + ((UINT32)(OP)->volume) + (LFO_AM & (OP)->AMmask)) + +/* calculate output */ +INLINE void chan_calc( YM2413_OPLL_CH *CH ) +{ + YM2413_OPLL_SLOT *SLOT; + unsigned int env; + signed int out; + signed int phase_modulation; /* phase modulation input (SLOT 2) */ + + /* SLOT 1 */ + SLOT = &CH->SLOT[SLOT1]; + env = volume_calc(SLOT); + out = SLOT->op1_out[0] + SLOT->op1_out[1]; + + SLOT->op1_out[0] = SLOT->op1_out[1]; + phase_modulation = SLOT->op1_out[0]; + + SLOT->op1_out[1] = 0; + + if( env < ENV_QUIET ) + { + if (!SLOT->fb_shift) + out = 0; + SLOT->op1_out[1] = op_calc1(SLOT->phase, env, (out<fb_shift), SLOT->wavetable ); + } + + /* SLOT 2 */ + + SLOT++; + env = volume_calc(SLOT); + if( env < ENV_QUIET ) + { + output[0] += op_calc(SLOT->phase, env, phase_modulation, SLOT->wavetable); + } +} + +/* + operators used in the rhythm sounds generation process: + + Envelope Generator: + +channel operator register number Bass High Snare Tom Top +/ slot number TL ARDR SLRR Wave Drum Hat Drum Tom Cymbal + 6 / 0 12 50 70 90 f0 + + 6 / 1 15 53 73 93 f3 + + 7 / 0 13 51 71 91 f1 + + 7 / 1 16 54 74 94 f4 + + 8 / 0 14 52 72 92 f2 + + 8 / 1 17 55 75 95 f5 + + + Phase Generator: + +channel operator register number Bass High Snare Tom Top +/ slot number MULTIPLE Drum Hat Drum Tom Cymbal + 6 / 0 12 30 + + 6 / 1 15 33 + + 7 / 0 13 31 + + + + 7 / 1 16 34 ----- n o t u s e d ----- + 8 / 0 14 32 + + 8 / 1 17 35 + + + +channel operator register number Bass High Snare Tom Top +number number BLK/FNUM2 FNUM Drum Hat Drum Tom Cymbal + 6 12,15 B6 A6 + + + 7 13,16 B7 A7 + + + + + 8 14,17 B8 A8 + + + + +*/ + +/* calculate rhythm */ + +INLINE void rhythm_calc( YM2413_OPLL_CH *CH, unsigned int noise ) +{ + YM2413_OPLL_SLOT *SLOT; + signed int out; + unsigned int env; + signed int phase_modulation; /* phase modulation input (SLOT 2) */ + + + /* Bass Drum (verified on real YM3812): + - depends on the channel 6 'connect' register: + when connect = 0 it works the same as in normal (non-rhythm) mode (op1->op2->out) + when connect = 1 _only_ operator 2 is present on output (op2->out), operator 1 is ignored + - output sample always is multiplied by 2 + */ + + + /* SLOT 1 */ + SLOT = &CH[6].SLOT[SLOT1]; + env = volume_calc(SLOT); + + out = SLOT->op1_out[0] + SLOT->op1_out[1]; + SLOT->op1_out[0] = SLOT->op1_out[1]; + + phase_modulation = SLOT->op1_out[0]; + + SLOT->op1_out[1] = 0; + if( env < ENV_QUIET ) + { + if (!SLOT->fb_shift) + out = 0; + SLOT->op1_out[1] = op_calc1(SLOT->phase, env, (out<fb_shift), SLOT->wavetable ); + } + + /* SLOT 2 */ + SLOT++; + env = volume_calc(SLOT); + if( env < ENV_QUIET ) + output[1] += op_calc(SLOT->phase, env, phase_modulation, SLOT->wavetable); + + + /* Phase generation is based on: */ + /* HH (13) channel 7->slot 1 combined with channel 8->slot 2 (same combination as TOP CYMBAL but different output phases) */ + /* SD (16) channel 7->slot 1 */ + /* TOM (14) channel 8->slot 1 */ + /* TOP (17) channel 7->slot 1 combined with channel 8->slot 2 (same combination as HIGH HAT but different output phases) */ + + /* Envelope generation based on: */ + /* HH channel 7->slot1 */ + /* SD channel 7->slot2 */ + /* TOM channel 8->slot1 */ + /* TOP channel 8->slot2 */ + + + /* The following formulas can be well optimized. + I leave them in direct form for now (in case I've missed something). + */ + + /* High Hat (verified on real YM3812) */ + env = volume_calc(&CH[7].SLOT[SLOT1]); + if( env < ENV_QUIET ) + { + + /* high hat phase generation: + phase = d0 or 234 (based on frequency only) + phase = 34 or 2d0 (based on noise) + */ + + /* base frequency derived from operator 1 in channel 7 */ + unsigned char bit7 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>7)&1; + unsigned char bit3 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>3)&1; + unsigned char bit2 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>2)&1; + + unsigned char res1 = (bit2 ^ bit7) | bit3; + + /* when res1 = 0 phase = 0x000 | 0xd0; */ + /* when res1 = 1 phase = 0x200 | (0xd0>>2); */ + UINT32 phase = res1 ? (0x200|(0xd0>>2)) : 0xd0; + + /* enable gate based on frequency of operator 2 in channel 8 */ + unsigned char bit5e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>5)&1; + unsigned char bit3e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>3)&1; + + unsigned char res2 = (bit3e | bit5e); + + /* when res2 = 0 pass the phase from calculation above (res1); */ + /* when res2 = 1 phase = 0x200 | (0xd0>>2); */ + if (res2) + phase = (0x200|(0xd0>>2)); + + + /* when phase & 0x200 is set and noise=1 then phase = 0x200|0xd0 */ + /* when phase & 0x200 is set and noise=0 then phase = 0x200|(0xd0>>2), ie no change */ + if (phase&0x200) + { + if (noise) + phase = 0x200|0xd0; + } + else + /* when phase & 0x200 is clear and noise=1 then phase = 0xd0>>2 */ + /* when phase & 0x200 is clear and noise=0 then phase = 0xd0, ie no change */ + { + if (noise) + phase = 0xd0>>2; + } + + output[1] += op_calc(phase<>FREQ_SH)>>8)&1; + + /* when bit8 = 0 phase = 0x100; */ + /* when bit8 = 1 phase = 0x200; */ + UINT32 phase = bit8 ? 0x200 : 0x100; + + /* Noise bit XOR'es phase by 0x100 */ + /* when noisebit = 0 pass the phase from calculation above */ + /* when noisebit = 1 phase ^= 0x100; */ + /* in other words: phase ^= (noisebit<<8); */ + if (noise) + phase ^= 0x100; + + output[1] += op_calc(phase<>FREQ_SH)>>7)&1; + unsigned char bit3 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>3)&1; + unsigned char bit2 = ((CH[7].SLOT[SLOT1].phase>>FREQ_SH)>>2)&1; + + unsigned char res1 = (bit2 ^ bit7) | bit3; + + /* when res1 = 0 phase = 0x000 | 0x100; */ + /* when res1 = 1 phase = 0x200 | 0x100; */ + UINT32 phase = res1 ? 0x300 : 0x100; + + /* enable gate based on frequency of operator 2 in channel 8 */ + unsigned char bit5e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>5)&1; + unsigned char bit3e= ((CH[8].SLOT[SLOT2].phase>>FREQ_SH)>>3)&1; + + unsigned char res2 = (bit3e | bit5e); + /* when res2 = 0 pass the phase from calculation above (res1); */ + /* when res2 = 1 phase = 0x200 | 0x100; */ + if (res2) + phase = 0x300; + + output[1] += op_calc(phase<>= 4; /* 12 bits here */ + if (n&1) /* round to nearest */ + n = (n>>1)+1; + else + n = n>>1; + /* 11 bits here (rounded) */ + tl_tab[ x*2 + 0 ] = n; + tl_tab[ x*2 + 1 ] = -tl_tab[ x*2 + 0 ]; + + for (i=1; i<11; i++) + { + tl_tab[ x*2+0 + i*2*TL_RES_LEN ] = tl_tab[ x*2+0 ]>>i; + tl_tab[ x*2+1 + i*2*TL_RES_LEN ] = -tl_tab[ x*2+0 + i*2*TL_RES_LEN ]; + } + } + + for (i=0; i0.0) + o = 8*log(1.0/m)/log(2); /* convert to 'decibels' */ + else + o = 8*log(-1.0/m)/log(2); /* convert to 'decibels' */ + + o = o / (ENV_STEP/4); + + n = (int)(2.0*o); + if (n&1) /* round to nearest */ + n = (n>>1)+1; + else + n = n>>1; + + /* waveform 0: standard sinus */ + sin_tab[ i ] = n*2 + (m>=0.0? 0: 1 ); + + /* waveform 1: __ __ */ + /* / \____/ \____*/ + /* output only first half of the sinus waveform (positive one) */ + if (i & (1<<(SIN_BITS-1)) ) + sin_tab[1*SIN_LEN+i] = TL_TAB_LEN; + else + sin_tab[1*SIN_LEN+i] = sin_tab[i]; + } + + return 1; +} + + +static void OPLL_initalize(void) +{ + int i; + + /* YM2413 always running at original frequency */ + double freqbase = 1.0; + + /* make fnumber -> increment counter table */ + for( i = 0 ; i < 1024; i++ ) + { + /* OPLL (YM2413) phase increment counter = 18bit */ + ym2413.fn_tab[i] = (UINT32)( (double)i * 64 * freqbase * (1<<(FREQ_SH-10)) ); /* -10 because chip works with 10.10 fixed point, while we use 16.16 */ + } + + /* Amplitude modulation: 27 output levels (triangle waveform); 1 level takes one of: 192, 256 or 448 samples */ + /* One entry from LFO_AM_TABLE lasts for 64 samples */ + ym2413.lfo_am_inc = (1.0 / 64.0 ) * (1<key ) + { + /* do NOT restart Phase Generator (verified on real YM2413)*/ + /* phase -> Dump */ + SLOT->state = EG_DMP; + } + SLOT->key |= key_set; +} + +INLINE void KEY_OFF(YM2413_OPLL_SLOT *SLOT, UINT32 key_clr) +{ + if( SLOT->key ) + { + SLOT->key &= key_clr; + + if( !SLOT->key ) + { + /* phase -> Release */ + if (SLOT->state>EG_REL) + SLOT->state = EG_REL; + } + } +} + +/* update phase increment counter of operator (also update the EG rates if necessary) */ +INLINE void CALC_FCSLOT(YM2413_OPLL_CH *CH,YM2413_OPLL_SLOT *SLOT) +{ + int ksr; + UINT32 SLOT_rs; + UINT32 SLOT_dp; + + /* (frequency) phase increment counter */ + SLOT->freq = CH->fc * SLOT->mul; + ksr = CH->kcode >> SLOT->KSR; + + if( SLOT->ksr != ksr ) + { + SLOT->ksr = ksr; + + /* calculate envelope generator rates */ + if ((SLOT->ar + SLOT->ksr) >= 16+60) + { + /* attack phase is skipped in case attack rate is set to 15.0-15.3 before attack phase is started */ + /* during attack phase, in case attack rate is changed to 15.0-15.3, attack phase is blocked */ + /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ + SLOT->eg_sh_ar = 13; + SLOT->eg_sel_ar = 0 * RATE_STEPS; + } + else if ((SLOT->ar + SLOT->ksr) >= 16+48) + { + /* attack rates 12.0 to 14.3 have similar specific behavior */ + /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ + SLOT->eg_sh_ar = 0; + SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr] + (4 * RATE_STEPS); + } + else + { + SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr]; + SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr]; + } + SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ]; + SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ]; + SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ]; + SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ]; + } + + if (CH->sus) + SLOT_rs = 16 + (5<<2); + else + SLOT_rs = 16 + (7<<2); + + SLOT->eg_sh_rs = eg_rate_shift [SLOT_rs + SLOT->ksr ]; + SLOT->eg_sel_rs = eg_rate_select[SLOT_rs + SLOT->ksr ]; + + SLOT_dp = 16 + (12<<2); + SLOT->eg_sh_dp = eg_rate_shift [SLOT_dp + SLOT->ksr ]; + SLOT->eg_sel_dp = eg_rate_select[SLOT_dp + SLOT->ksr ]; +} + +/* set multi,am,vib,EG-TYP,KSR,mul */ +INLINE void set_mul(int slot,int v) +{ + YM2413_OPLL_CH *CH = &ym2413.P_CH[slot/2]; + YM2413_OPLL_SLOT *SLOT = &CH->SLOT[slot&1]; + + SLOT->mul = mul_tab[v&0x0f]; + SLOT->KSR = (v&0x10) ? 0 : 2; + SLOT->eg_type = (v&0x20); + SLOT->vib = (v&0x40); + SLOT->AMmask = (v&0x80) ? ~0 : 0; + CALC_FCSLOT(CH,SLOT); +} + +/* set ksl, tl */ +INLINE void set_ksl_tl(int chan,int v) +{ + YM2413_OPLL_CH *CH = &ym2413.P_CH[chan]; + /* modulator */ + YM2413_OPLL_SLOT *SLOT = &CH->SLOT[SLOT1]; + + int ksl = v>>6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */ + + SLOT->ksl = ksl ? 3-ksl : 31; + SLOT->TL = (v&0x3f)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ + SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); +} + +/* set ksl , waveforms, feedback */ +INLINE void set_ksl_wave_fb(int chan,int v) +{ + YM2413_OPLL_CH *CH = &ym2413.P_CH[chan]; + /* modulator */ + YM2413_OPLL_SLOT *SLOT = &CH->SLOT[SLOT1]; + SLOT->wavetable = ((v&0x08)>>3)*SIN_LEN; + SLOT->fb_shift = (v&7) ? (v&7) + 8 : 0; + + /*carrier*/ + SLOT = &CH->SLOT[SLOT2]; + SLOT->wavetable = ((v&0x10)>>4)*SIN_LEN; + v >>= 6; /* 0 / 1.5 / 3.0 / 6.0 dB/OCT */ + SLOT->ksl = v ? 3-v : 31; + SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); +} + +/* set attack rate & decay rate */ +INLINE void set_ar_dr(int slot,int v) +{ + YM2413_OPLL_CH *CH = &ym2413.P_CH[slot/2]; + YM2413_OPLL_SLOT *SLOT = &CH->SLOT[slot&1]; + + SLOT->ar = (v>>4) ? 16 + ((v>>4) <<2) : 0; + + if ((SLOT->ar + SLOT->ksr) >= 16+60) + { + /* attack phase is skipped in case attack rate is set to 15.0-15.3 before attack phase is started */ + /* during attack phase, in case attack rate is changed to 15.0-15.3, attack phase is blocked */ + /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ + SLOT->eg_sh_ar = 13; + SLOT->eg_sel_ar = 0 * RATE_STEPS; + } + else if ((SLOT->ar + SLOT->ksr) >= 16+48) + { + /* attack rates 12.0 to 14.3 have similar specific behavior */ + /* (verified on real hardware, cf. https://www.smspower.org/Development/YM2413ReverseEngineeringNotes2017-01-26) */ + SLOT->eg_sh_ar = 0; + SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr] + (4 * RATE_STEPS); + } + else + { + SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr]; + SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr]; + } + + SLOT->dr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0; + SLOT->eg_sh_dr = eg_rate_shift [SLOT->dr + SLOT->ksr ]; + SLOT->eg_sel_dr = eg_rate_select[SLOT->dr + SLOT->ksr ]; +} + +/* set sustain level & release rate */ +INLINE void set_sl_rr(int slot,int v) +{ + YM2413_OPLL_CH *CH = &ym2413.P_CH[slot/2]; + YM2413_OPLL_SLOT *SLOT = &CH->SLOT[slot&1]; + + SLOT->sl = sl_tab[ v>>4 ]; + + SLOT->rr = (v&0x0f)? 16 + ((v&0x0f)<<2) : 0; + SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr ]; + SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr ]; +} + +static void load_instrument(UINT32 chan, UINT32 slot, UINT8* inst ) +{ + set_mul(slot, inst[0]); + set_mul(slot+1, inst[1]); + set_ksl_tl(chan, inst[2]); + set_ksl_wave_fb(chan, inst[3]); + set_ar_dr(slot, inst[4]); + set_ar_dr(slot+1, inst[5]); + set_sl_rr(slot, inst[6]); + set_sl_rr(slot+1, inst[7]); +} + +static void update_instrument_zero(UINT8 r) +{ + UINT8* inst = &ym2413.inst_tab[0][0]; /* point to user instrument */ + UINT32 chan; + + UINT32 chan_max = 9; + if (ym2413.rhythm & 0x20) + chan_max=6; + + switch(r&7) + { + case 0: + for (chan=0; chanSLOT[SLOT1]; /* modulator envelope is HH */ + SLOT->TL = ((ym2413.instvol_r[7]>>4)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ + SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); + + /* Load instrument settings for channel nine. (Tom-tom and top cymbal) */ + load_instrument(8, 16, &ym2413.inst_tab[18][0]); + + CH = &ym2413.P_CH[8]; + SLOT = &CH->SLOT[SLOT1]; /* modulator envelope is TOM */ + SLOT->TL = ((ym2413.instvol_r[8]>>4)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ + SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); + } + + /* BD key on/off */ + if(v&0x10) + { + KEY_ON (&ym2413.P_CH[6].SLOT[SLOT1], 2); + KEY_ON (&ym2413.P_CH[6].SLOT[SLOT2], 2); + } + else + { + KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT1],~2); + KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT2],~2); + } + + /* HH key on/off */ + if(v&0x01) KEY_ON (&ym2413.P_CH[7].SLOT[SLOT1], 2); + else KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT1],~2); + + /* SD key on/off */ + if(v&0x08) KEY_ON (&ym2413.P_CH[7].SLOT[SLOT2], 2); + else KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT2],~2); + + /* TOM key on/off */ + if(v&0x04) KEY_ON (&ym2413.P_CH[8].SLOT[SLOT1], 2); + else KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT1],~2); + + /* TOP-CY key on/off */ + if(v&0x02) KEY_ON (&ym2413.P_CH[8].SLOT[SLOT2], 2); + else KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT2],~2); + } + else + { + /* rhythm ON to OFF */ + if (ym2413.rhythm&0x20) + { + /* Load instrument settings for channel seven(chan=6 since we're zero based).*/ + load_instrument(6, 12, &ym2413.inst_tab[ym2413.instvol_r[6]>>4][0]); + + /* Load instrument settings for channel eight.*/ + load_instrument(7, 14, &ym2413.inst_tab[ym2413.instvol_r[7]>>4][0]); + + /* Load instrument settings for channel nine.*/ + load_instrument(8, 16, &ym2413.inst_tab[ym2413.instvol_r[8]>>4][0]); + } + + /* BD key off */ + KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT1],~2); + KEY_OFF(&ym2413.P_CH[6].SLOT[SLOT2],~2); + + /* HH key off */ + KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT1],~2); + + /* SD key off */ + KEY_OFF(&ym2413.P_CH[7].SLOT[SLOT2],~2); + + /* TOM key off */ + KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT1],~2); + + /* TOP-CY off */ + KEY_OFF(&ym2413.P_CH[8].SLOT[SLOT2],~2); + } + + ym2413.rhythm = v&0x3f; + break; + } + } + + break; + } + + case 0x10: + case 0x20: + { + int block_fnum; + + int chan = r&0x0f; + + if (chan >= 9) + chan -= 9; /* verified on real YM2413 */ + + CH = &ym2413.P_CH[chan]; + + if(r&0x10) + { + /* 10-18: FNUM 0-7 */ + block_fnum = (CH->block_fnum&0x0f00) | v; + } + else + { + /* 20-28: suson, keyon, block, FNUM 8 */ + block_fnum = ((v&0x0f)<<8) | (CH->block_fnum&0xff); + + if(v&0x10) + { + KEY_ON (&CH->SLOT[SLOT1], 1); + KEY_ON (&CH->SLOT[SLOT2], 1); + } + else + { + KEY_OFF(&CH->SLOT[SLOT1],~1); + KEY_OFF(&CH->SLOT[SLOT2],~1); + } + + CH->sus = v & 0x20; + } + + /* update */ + if(CH->block_fnum != block_fnum) + { + UINT8 block; + CH->block_fnum = block_fnum; + + /* BLK 2,1,0 bits -> bits 3,2,1 of kcode, FNUM MSB -> kcode LSB */ + CH->kcode = (block_fnum&0x0f00)>>8; + + CH->ksl_base = ksl_tab[block_fnum>>5]; + + block_fnum = block_fnum * 2; + block = (block_fnum&0x1c00) >> 10; + CH->fc = ym2413.fn_tab[block_fnum&0x03ff] >> (7-block); + + /* refresh Total Level in both SLOTs of this channel */ + CH->SLOT[SLOT1].TLL = CH->SLOT[SLOT1].TL + (CH->ksl_base>>CH->SLOT[SLOT1].ksl); + CH->SLOT[SLOT2].TLL = CH->SLOT[SLOT2].TL + (CH->ksl_base>>CH->SLOT[SLOT2].ksl); + + /* refresh frequency counter in both SLOTs of this channel */ + CALC_FCSLOT(CH,&CH->SLOT[SLOT1]); + CALC_FCSLOT(CH,&CH->SLOT[SLOT2]); + } + + break; + } + + case 0x30: /* inst 4 MSBs, VOL 4 LSBs */ + { + int chan = r&0x0f; + + if (chan >= 9) + chan -= 9; /* verified on real YM2413 */ + + CH = &ym2413.P_CH[chan]; + SLOT = &CH->SLOT[SLOT2]; /* carrier */ + SLOT->TL = ((v&0x0f)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ + SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); + + /*check wether we are in rhythm mode and handle instrument/volume register accordingly*/ + if ((chan>=6) && (ym2413.rhythm&0x20)) + { + /* we're in rhythm mode*/ + + if (chan>=7) /* only for channel 7 and 8 (channel 6 is handled in usual way)*/ + { + SLOT = &CH->SLOT[SLOT1]; /* modulator envelope is HH(chan=7) or TOM(chan=8) */ + SLOT->TL = ((v>>4)<<2)<<(ENV_BITS-2-7); /* 7 bits TL (bit 6 = always 0) */ + SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); + } + } + else + { + if ((ym2413.instvol_r[chan]&0xf0) != (v&0xf0)) + { + ym2413.instvol_r[chan] = v; /* store for later use */ + load_instrument(chan, chan * 2, &ym2413.inst_tab[v>>4][0]); + } + } + + break; + } + + default: + break; + } +} + + +void YM2413Init(void) +{ + init_tables(); + + /* clear */ + memset(&ym2413,0,sizeof(YM2413)); + + /* init global tables */ + OPLL_initalize(); +} + +void YM2413ResetChip(void) +{ + int c,s; + int i; + + ym2413.eg_timer = 0; + ym2413.eg_cnt = 0; + + ym2413.noise_rng = 1; /* noise shift register */ + + + /* setup instruments table */ + for (i=0; i<19; i++) + { + for (c=0; c<8; c++) + { + ym2413.inst_tab[i][c] = table[i][c]; + } + } + + + /* reset with register write */ + OPLLWriteReg(0x0f,0); /*test reg*/ + for(i = 0x3f ; i >= 0x10 ; i-- ) OPLLWriteReg(i,0x00); + + /* reset operator parameters */ + for( c = 0 ; c < 9 ; c++ ) + { + YM2413_OPLL_CH *CH = &ym2413.P_CH[c]; + for(s = 0 ; s < 2 ; s++ ) + { + /* wave table */ + CH->SLOT[s].wavetable = 0; + CH->SLOT[s].state = EG_OFF; + CH->SLOT[s].volume = MAX_ATT_INDEX; + } + } +} + +/* YM2413 I/O interface */ + +void YM2413Write(unsigned int a, unsigned int v) +{ + if( !(a&2) ) + { + if( !(a&1) ) + { + /* address port */ + ym2413.address = v & 0xff; + } + else + { + /* data port */ + OPLLWriteReg(ym2413.address,v); + } + } + else + { + /* bit 0 enable/disable FM output (Master System / Mark-III FM adapter specific) */ + ym2413.status = v & 0x01; + } +} + +unsigned int YM2413Read(void) +{ + /* bit 0 returns latched FM enable status, bits 1-2 return zero (Master System / Mark-III FM adapter specific) */ + return 0xF8 | ym2413.status; +} + +void YM2413Update(int *buffer, int length) +{ + int i, out; + + for( i=0; i < length ; i++ ) + { + output[0] = 0; + output[1] = 0; + + advance_lfo(); + + /* FM part */ + chan_calc(&ym2413.P_CH[0]); + chan_calc(&ym2413.P_CH[1]); + chan_calc(&ym2413.P_CH[2]); + chan_calc(&ym2413.P_CH[3]); + chan_calc(&ym2413.P_CH[4]); + chan_calc(&ym2413.P_CH[5]); + + if(!(ym2413.rhythm&0x20)) + { + chan_calc(&ym2413.P_CH[6]); + chan_calc(&ym2413.P_CH[7]); + chan_calc(&ym2413.P_CH[8]); + } + else /* Rhythm part */ + { + rhythm_calc(&ym2413.P_CH[0], (ym2413.noise_rng>>0)&1 ); + } + + /* Melody (MO) & Rythm (RO) outputs mixing & amplification (latched bit controls FM output) */ + out = (output[0] + (output[1] * 2)) * 2 * ym2413.status; + + /* Store to stereo sound buffer */ + *buffer++ = out; + *buffer++ = out; + + advance(); + } +} + +unsigned char *YM2413GetContextPtr(void) +{ + return (unsigned char *)&ym2413; +} + +unsigned int YM2413GetContextSize(void) +{ + return sizeof(YM2413); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2413.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2413.h similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2413.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2413.h index ceb48bfc31..d69369e0fb 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2413.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2413.h @@ -1,23 +1,23 @@ -/* -** -** File: ym2413.c - software implementation of YM2413 -** FM sound generator type OPLL -** -** Copyright (C) 2002 Jarek Burczynski -** -** Version 1.0 -** -*/ - -#ifndef _H_YM2413_ -#define _H_YM2413_ - -extern void YM2413Init(void); -extern void YM2413ResetChip(void); -extern void YM2413Update(int *buffer, int length); -extern void YM2413Write(unsigned int a, unsigned int v); -extern unsigned int YM2413Read(void); -extern unsigned char *YM2413GetContextPtr(void); -extern unsigned int YM2413GetContextSize(void); - -#endif /*_H_YM2413_*/ +/* +** +** File: ym2413.c - software implementation of YM2413 +** FM sound generator type OPLL +** +** Copyright (C) 2002 Jarek Burczynski +** +** Version 1.0 +** +*/ + +#ifndef _H_YM2413_ +#define _H_YM2413_ + +extern void YM2413Init(void); +extern void YM2413ResetChip(void); +extern void YM2413Update(int *buffer, int length); +extern void YM2413Write(unsigned int a, unsigned int v); +extern unsigned int YM2413Read(void); +extern unsigned char *YM2413GetContextPtr(void); +extern unsigned int YM2413GetContextSize(void); + +#endif /*_H_YM2413_*/ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2612.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2612.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2612.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2612.c index 585ffe27d7..336127a072 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2612.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2612.c @@ -1,2260 +1,2260 @@ -/* -** -** software implementation of Yamaha FM sound generator (YM2612/YM3438) -** -** Original code (MAME fm.c) -** -** Copyright (C) 2001, 2002, 2003 Jarek Burczynski (bujar at mame dot net) -** Copyright (C) 1998 Tatsuyuki Satoh , MultiArcadeMachineEmulator development -** -** Version 1.4 (final beta) -** -** Additional code & fixes by Eke-Eke for Genesis Plus GX -** -** Huge thanks to Nemesis, most of those fixes came from his tests on Sega Genesis hardware -** Additional info from YM2612 die shot analysis by Sauraen -** See http://gendev.spritesmind.net/forum/viewtopic.php?t=386 -** -*/ - -/* -** CHANGELOG: -** -** 11-05-2021 Eke-Eke (Genesis Plus GX): -** - fixed potential issue with SSG-EG inverted attenuation level on Key OFF -** -** 03-12-2017 Eke-Eke (Genesis Plus GX): -** - improved 9-bit DAC emulation accuracy -** - added discrete YM2612 DAC distortion emulation ("ladder effect") -** - replaced configurable DAC depth with configurable chip types (discrete, integrated or enhanced) -** -** 26-09-2017 Eke-Eke (Genesis Plus GX): -** - fixed EG counter loopback behavior (verified on YM3438 die) -** - reverted changes to EG rates 2-7 increment values -** -** 09-04-2017 Eke-Eke (Genesis Plus GX): -** - fixed LFO PM implementation: block & keyscale code should not be modified by LFO (verified on YM2612 die) -** - fixed Timer B overflow handling -** -** 12-03-2017 Eke-Eke (Genesis Plus GX): -** - fixed Op1 self-feedback regression introduced by previous modifications -** - removed one-sample extra delay on Op1 calculated output -** - refactored chan_calc() function -** -** 01-09-2012 Eke-Eke (Genesis Plus GX): -** - removed input clock / output samplerate frequency ratio, chip now always run at (original) internal sample frequency -** - removed now uneeded extra bits of precision -** -** 2006~2012 Eke-Eke (Genesis Plus GX): -** - removed unused multichip support -** - added YM2612 Context external access functions -** - fixed LFO implementation: -** .added support for CH3 special mode: fixes various sound effects (birds in Warlock, bug sound in Aladdin...) -** .inverted LFO AM waveform: fixes Spider-Man & Venom : Separation Anxiety (intro), California Games (surfing event) -** .improved LFO timing accuracy: now updated AFTER sample output, like EG/PG updates, and without any precision loss anymore. -** - improved internal timers emulation -** - adjusted lowest EG rates increment values -** - fixed Attack Rate not being updated in some specific cases (Batman & Robin intro) -** - fixed EG behavior when Attack Rate is maximal -** - fixed EG behavior when SL=0 (Mega Turrican tracks 03,09...) or/and Key ON occurs at minimal attenuation -** - implemented EG output immediate changes on register writes -** - fixed YM2612 initial values (after the reset): fixes missing intro in B.O.B -** - implemented Detune overflow (Ariel, Comix Zone, Shaq Fu, Spiderman & many other games using GEMS sound engine) -** - implemented accurate CSM mode emulation -** - implemented accurate SSG-EG emulation (Asterix, Beavis&Butthead, Bubba'n Stix & many other games) -** - implemented accurate address/data ports behavior -** - added preliminar support for DAC precision -** -** 03-08-2003 Jarek Burczynski: -** - fixed YM2608 initial values (after the reset) -** - fixed flag and irqmask handling (YM2608) -** - fixed BUFRDY flag handling (YM2608) -** -** 14-06-2003 Jarek Burczynski: -** - implemented all of the YM2608 status register flags -** - implemented support for external memory read/write via YM2608 -** - implemented support for deltat memory limit register in YM2608 emulation -** -** 22-05-2003 Jarek Burczynski: -** - fixed LFO PM calculations (copy&paste bugfix) -** -** 08-05-2003 Jarek Burczynski: -** - fixed SSG support -** -** 22-04-2003 Jarek Burczynski: -** - implemented 100% correct LFO generator (verified on real YM2610 and YM2608) -** -** 15-04-2003 Jarek Burczynski: -** - added support for YM2608's register 0x110 - status mask -** -** 01-12-2002 Jarek Burczynski: -** - fixed register addressing in YM2608, YM2610, YM2610B chips. (verified on real YM2608) -** The addressing patch used for early Neo-Geo games can be removed now. -** -** 26-11-2002 Jarek Burczynski, Nicola Salmoria: -** - recreated YM2608 ADPCM ROM using data from real YM2608's output which leads to: -** - added emulation of YM2608 drums. -** - output of YM2608 is two times lower now - same as YM2610 (verified on real YM2608) -** -** 16-08-2002 Jarek Burczynski: -** - binary exact Envelope Generator (verified on real YM2203); -** identical to YM2151 -** - corrected 'off by one' error in feedback calculations (when feedback is off) -** - corrected connection (algorithm) calculation (verified on real YM2203 and YM2610) -** -** 18-12-2001 Jarek Burczynski: -** - added SSG-EG support (verified on real YM2203) -** -** 12-08-2001 Jarek Burczynski: -** - corrected sin_tab and tl_tab data (verified on real chip) -** - corrected feedback calculations (verified on real chip) -** - corrected phase generator calculations (verified on real chip) -** - corrected envelope generator calculations (verified on real chip) -** - corrected FM volume level (YM2610 and YM2610B). -** - changed YMxxxUpdateOne() functions (YM2203, YM2608, YM2610, YM2610B, YM2612) : -** this was needed to calculate YM2610 FM channels output correctly. -** (Each FM channel is calculated as in other chips, but the output of the channel -** gets shifted right by one *before* sending to accumulator. That was impossible to do -** with previous implementation). -** -** 23-07-2001 Jarek Burczynski, Nicola Salmoria: -** - corrected YM2610 ADPCM type A algorithm and tables (verified on real chip) -** -** 11-06-2001 Jarek Burczynski: -** - corrected end of sample bug in ADPCMA_calc_cha(). -** Real YM2610 checks for equality between current and end addresses (only 20 LSB bits). -** -** 08-12-98 hiro-shi: -** rename ADPCMA -> ADPCMB, ADPCMB -> ADPCMA -** move ROM limit check.(CALC_CH? -> 2610Write1/2) -** test program (ADPCMB_TEST) -** move ADPCM A/B end check. -** ADPCMB repeat flag(no check) -** change ADPCM volume rate (8->16) (32->48). -** -** 09-12-98 hiro-shi: -** change ADPCM volume. (8->16, 48->64) -** replace ym2610 ch0/3 (YM-2610B) -** change ADPCM_SHIFT (10->8) missing bank change 0x4000-0xffff. -** add ADPCM_SHIFT_MASK -** change ADPCMA_DECODE_MIN/MAX. -*/ - -/************************************************************************/ -/* comment of hiro-shi(Hiromitsu Shioya) */ -/* YM2610(B) = OPN-B */ -/* YM2610 : PSG:3ch FM:4ch ADPCM(18.5KHz):6ch DeltaT ADPCM:1ch */ -/* YM2610B : PSG:3ch FM:6ch ADPCM(18.5KHz):6ch DeltaT ADPCM:1ch */ -/************************************************************************/ - -#include "shared.h" - -/* envelope generator */ -#define ENV_BITS 10 -#define ENV_LEN (1<>3) - -/* sin waveform table in 'decibel' scale */ -static unsigned int sin_tab[SIN_LEN]; - -/* sustain level table (3dB per step) */ -/* bit0, bit1, bit2, bit3, bit4, bit5, bit6 */ -/* 1, 2, 4, 8, 16, 32, 64 (value)*/ -/* 0.75, 1.5, 3, 6, 12, 24, 48 (dB)*/ - -/* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,93 (dB)*/ -/* attenuation value (10 bits) = (SL << 2) << 3 */ -#define SC(db) (UINT32) ( db * (4.0/ENV_STEP) ) -static const UINT32 sl_table[16]={ - SC( 0),SC( 1),SC( 2),SC(3 ),SC(4 ),SC(5 ),SC(6 ),SC( 7), - SC( 8),SC( 9),SC(10),SC(11),SC(12),SC(13),SC(14),SC(31) -}; -#undef SC - - -#define RATE_STEPS (8) -static const UINT8 eg_inc[19*RATE_STEPS]={ - -/*cycle:0 1 2 3 4 5 6 7*/ - -/* 0 */ 0,1, 0,1, 0,1, 0,1, /* rates 00..11 0 (increment by 0 or 1) */ -/* 1 */ 0,1, 0,1, 1,1, 0,1, /* rates 00..11 1 */ -/* 2 */ 0,1, 1,1, 0,1, 1,1, /* rates 00..11 2 */ -/* 3 */ 0,1, 1,1, 1,1, 1,1, /* rates 00..11 3 */ - -/* 4 */ 1,1, 1,1, 1,1, 1,1, /* rate 12 0 (increment by 1) */ -/* 5 */ 1,1, 1,2, 1,1, 1,2, /* rate 12 1 */ -/* 6 */ 1,2, 1,2, 1,2, 1,2, /* rate 12 2 */ -/* 7 */ 1,2, 2,2, 1,2, 2,2, /* rate 12 3 */ - -/* 8 */ 2,2, 2,2, 2,2, 2,2, /* rate 13 0 (increment by 2) */ -/* 9 */ 2,2, 2,4, 2,2, 2,4, /* rate 13 1 */ -/*10 */ 2,4, 2,4, 2,4, 2,4, /* rate 13 2 */ -/*11 */ 2,4, 4,4, 2,4, 4,4, /* rate 13 3 */ - -/*12 */ 4,4, 4,4, 4,4, 4,4, /* rate 14 0 (increment by 4) */ -/*13 */ 4,4, 4,8, 4,4, 4,8, /* rate 14 1 */ -/*14 */ 4,8, 4,8, 4,8, 4,8, /* rate 14 2 */ -/*15 */ 4,8, 8,8, 4,8, 8,8, /* rate 14 3 */ - -/*16 */ 8,8, 8,8, 8,8, 8,8, /* rates 15 0, 15 1, 15 2, 15 3 (increment by 8) */ -/*17 */ 16,16,16,16,16,16,16,16, /* rates 15 2, 15 3 for attack */ -/*18 */ 0,0, 0,0, 0,0, 0,0, /* infinity rates for attack and decay(s) */ -}; - - -#define O(a) (a*RATE_STEPS) - -/*note that there is no O(17) in this table - it's directly in the code */ -static const UINT8 eg_rate_select[32+64+32]={ /* Envelope Generator rates (32 + 64 rates + 32 RKS) */ -/* 32 infinite time rates (same as Rate 0) */ -O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), -O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), -O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), -O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), - -/* rates 00-11 */ -/* -O( 0),O( 1) -*/ -O(18),O(18), /* from Nemesis's tests on real YM2612 hardware */ - O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), -O( 0),O( 1),O( 2),O( 3), - -/* rate 12 */ -O( 4),O( 5),O( 6),O( 7), - -/* rate 13 */ -O( 8),O( 9),O(10),O(11), - -/* rate 14 */ -O(12),O(13),O(14),O(15), - -/* rate 15 */ -O(16),O(16),O(16),O(16), - -/* 32 dummy rates (same as 15 3) */ -O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16), -O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16), -O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16), -O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16) - -}; -#undef O - -/*rate 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15*/ -/*shift 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0 */ -/*mask 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1, 0, 0, 0, 0, 0 */ - -#define O(a) (a*1) -static const UINT8 eg_rate_shift[32+64+32]={ /* Envelope Generator counter shifts (32 + 64 rates + 32 RKS) */ -/* 32 infinite time rates */ -/* O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), -O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), -O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), -O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), */ - -/* fixed (should be the same as rate 0, even if it makes no difference since increment value is 0 for these rates) */ -O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), -O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), -O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), -O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), - -/* rates 00-11 */ -O(11),O(11),O(11),O(11), -O(10),O(10),O(10),O(10), -O( 9),O( 9),O( 9),O( 9), -O( 8),O( 8),O( 8),O( 8), -O( 7),O( 7),O( 7),O( 7), -O( 6),O( 6),O( 6),O( 6), -O( 5),O( 5),O( 5),O( 5), -O( 4),O( 4),O( 4),O( 4), -O( 3),O( 3),O( 3),O( 3), -O( 2),O( 2),O( 2),O( 2), -O( 1),O( 1),O( 1),O( 1), -O( 0),O( 0),O( 0),O( 0), - -/* rate 12 */ -O( 0),O( 0),O( 0),O( 0), - -/* rate 13 */ -O( 0),O( 0),O( 0),O( 0), - -/* rate 14 */ -O( 0),O( 0),O( 0),O( 0), - -/* rate 15 */ -O( 0),O( 0),O( 0),O( 0), - -/* 32 dummy rates (same as 15 3) */ -O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), -O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), -O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), -O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0) - -}; -#undef O - -static const UINT8 dt_tab[4 * 32]={ -/* this is YM2151 and YM2612 phase increment data (in 10.10 fixed point format)*/ -/* FD=0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* FD=1 */ - 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8, -/* FD=2 */ - 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, - 5, 6, 6, 7, 8, 8, 9,10,11,12,13,14,16,16,16,16, -/* FD=3 */ - 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, - 8 , 8, 9,10,11,12,13,14,16,17,19,20,22,22,22,22 -}; - - -/* OPN key frequency number -> key code follow table */ -/* fnum higher 4bit -> keycode lower 2bit */ -static const UINT8 opn_fktable[16] = {0,0,0,0,0,0,0,1,2,3,3,3,3,3,3,3}; - - -/* 8 LFO speed parameters */ -/* each value represents number of samples that one LFO level will last for */ -static const UINT32 lfo_samples_per_step[8] = {108, 77, 71, 67, 62, 44, 8, 5}; - - -/*There are 4 different LFO AM depths available, they are: - 0 dB, 1.4 dB, 5.9 dB, 11.8 dB - Here is how it is generated (in EG steps): - - 11.8 dB = 0, 2, 4, 6, 8, 10,12,14,16...126,126,124,122,120,118,....4,2,0 - 5.9 dB = 0, 1, 2, 3, 4, 5, 6, 7, 8....63, 63, 62, 61, 60, 59,.....2,1,0 - 1.4 dB = 0, 0, 0, 0, 1, 1, 1, 1, 2,...15, 15, 15, 15, 14, 14,.....0,0,0 - - (1.4 dB is loosing precision as you can see) - - It's implemented as generator from 0..126 with step 2 then a shift - right N times, where N is: - 8 for 0 dB - 3 for 1.4 dB - 1 for 5.9 dB - 0 for 11.8 dB -*/ -static const UINT8 lfo_ams_depth_shift[4] = {8, 3, 1, 0}; - - - -/*There are 8 different LFO PM depths available, they are: - 0, 3.4, 6.7, 10, 14, 20, 40, 80 (cents) - - Modulation level at each depth depends on F-NUMBER bits: 4,5,6,7,8,9,10 - (bits 8,9,10 = FNUM MSB from OCT/FNUM register) - - Here we store only first quarter (positive one) of full waveform. - Full table (lfo_pm_table) containing all 128 waveforms is build - at run (init) time. - - One value in table below represents 4 (four) basic LFO steps - (1 PM step = 4 AM steps). - - For example: - at LFO SPEED=0 (which is 108 samples per basic LFO step) - one value from "lfo_pm_output" table lasts for 432 consecutive - samples (4*108=432) and one full LFO waveform cycle lasts for 13824 - samples (32*432=13824; 32 because we store only a quarter of whole - waveform in the table below) -*/ -static const UINT8 lfo_pm_output[7*8][8]={ -/* 7 bits meaningful (of F-NUMBER), 8 LFO output levels per one depth (out of 32), 8 LFO depths */ -/* FNUM BIT 4: 000 0001xxxx */ -/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 3 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 4 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 5 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 6 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 7 */ {0, 0, 0, 0, 1, 1, 1, 1}, - -/* FNUM BIT 5: 000 0010xxxx */ -/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 3 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 4 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 5 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 6 */ {0, 0, 0, 0, 1, 1, 1, 1}, -/* DEPTH 7 */ {0, 0, 1, 1, 2, 2, 2, 3}, - -/* FNUM BIT 6: 000 0100xxxx */ -/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 3 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 4 */ {0, 0, 0, 0, 0, 0, 0, 1}, -/* DEPTH 5 */ {0, 0, 0, 0, 1, 1, 1, 1}, -/* DEPTH 6 */ {0, 0, 1, 1, 2, 2, 2, 3}, -/* DEPTH 7 */ {0, 0, 2, 3, 4, 4, 5, 6}, - -/* FNUM BIT 7: 000 1000xxxx */ -/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 1, 1}, -/* DEPTH 3 */ {0, 0, 0, 0, 1, 1, 1, 1}, -/* DEPTH 4 */ {0, 0, 0, 1, 1, 1, 1, 2}, -/* DEPTH 5 */ {0, 0, 1, 1, 2, 2, 2, 3}, -/* DEPTH 6 */ {0, 0, 2, 3, 4, 4, 5, 6}, -/* DEPTH 7 */ {0, 0, 4, 6, 8, 8, 0xa, 0xc}, - -/* FNUM BIT 8: 001 0000xxxx */ -/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 1 */ {0, 0, 0, 0, 1, 1, 1, 1}, -/* DEPTH 2 */ {0, 0, 0, 1, 1, 1, 2, 2}, -/* DEPTH 3 */ {0, 0, 1, 1, 2, 2, 3, 3}, -/* DEPTH 4 */ {0, 0, 1, 2, 2, 2, 3, 4}, -/* DEPTH 5 */ {0, 0, 2, 3, 4, 4, 5, 6}, -/* DEPTH 6 */ {0, 0, 4, 6, 8, 8, 0xa, 0xc}, -/* DEPTH 7 */ {0, 0, 8, 0xc,0x10,0x10,0x14,0x18}, - -/* FNUM BIT 9: 010 0000xxxx */ -/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 1 */ {0, 0, 0, 0, 2, 2, 2, 2}, -/* DEPTH 2 */ {0, 0, 0, 2, 2, 2, 4, 4}, -/* DEPTH 3 */ {0, 0, 2, 2, 4, 4, 6, 6}, -/* DEPTH 4 */ {0, 0, 2, 4, 4, 4, 6, 8}, -/* DEPTH 5 */ {0, 0, 4, 6, 8, 8, 0xa, 0xc}, -/* DEPTH 6 */ {0, 0, 8, 0xc,0x10,0x10,0x14,0x18}, -/* DEPTH 7 */ {0, 0,0x10,0x18,0x20,0x20,0x28,0x30}, - -/* FNUM BIT10: 100 0000xxxx */ -/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, -/* DEPTH 1 */ {0, 0, 0, 0, 4, 4, 4, 4}, -/* DEPTH 2 */ {0, 0, 0, 4, 4, 4, 8, 8}, -/* DEPTH 3 */ {0, 0, 4, 4, 8, 8, 0xc, 0xc}, -/* DEPTH 4 */ {0, 0, 4, 8, 8, 8, 0xc,0x10}, -/* DEPTH 5 */ {0, 0, 8, 0xc,0x10,0x10,0x14,0x18}, -/* DEPTH 6 */ {0, 0,0x10,0x18,0x20,0x20,0x28,0x30}, -/* DEPTH 7 */ {0, 0,0x20,0x30,0x40,0x40,0x50,0x60}, - -}; - -/* all 128 LFO PM waveforms */ -static INT32 lfo_pm_table[128*8*32]; /* 128 combinations of 7 bits meaningful (of F-NUMBER), 8 LFO depths, 32 LFO output levels per one depth */ - -/* register number to channel number , slot offset */ -#define OPN_CHAN(N) (N&3) -#define OPN_SLOT(N) ((N>>2)&3) - -/* slot number */ -#define SLOT1 0 -#define SLOT2 2 -#define SLOT3 1 -#define SLOT4 3 - -/* struct describing a single operator (SLOT) */ -typedef struct -{ - INT32 *DT; /* detune :dt_tab[DT] */ - UINT8 KSR; /* key scale rate :3-KSR */ - UINT32 ar; /* attack rate */ - UINT32 d1r; /* decay rate */ - UINT32 d2r; /* sustain rate */ - UINT32 rr; /* release rate */ - UINT8 ksr; /* key scale rate :kcode>>(3-KSR) */ - UINT32 mul; /* multiple :ML_TABLE[ML] */ - - /* Phase Generator */ - UINT32 phase; /* phase counter */ - INT32 Incr; /* phase step */ - - /* Envelope Generator */ - UINT8 state; /* phase type */ - UINT32 tl; /* total level: TL << 3 */ - INT32 volume; /* envelope counter */ - UINT32 sl; /* sustain level:sl_table[SL] */ - UINT32 vol_out; /* current output from EG circuit (without AM from LFO) */ - - UINT8 eg_sh_ar; /* (attack state) */ - UINT8 eg_sel_ar; /* (attack state) */ - UINT8 eg_sh_d1r; /* (decay state) */ - UINT8 eg_sel_d1r; /* (decay state) */ - UINT8 eg_sh_d2r; /* (sustain state) */ - UINT8 eg_sel_d2r; /* (sustain state) */ - UINT8 eg_sh_rr; /* (release state) */ - UINT8 eg_sel_rr; /* (release state) */ - - UINT8 ssg; /* SSG-EG waveform */ - UINT8 ssgn; /* SSG-EG negated output */ - - UINT8 key; /* 0=last key was KEY OFF, 1=KEY ON */ - - /* LFO */ - UINT32 AMmask; /* AM enable flag */ - -} FM_SLOT; - -typedef struct -{ - FM_SLOT SLOT[4]; /* four SLOTs (operators) */ - - UINT8 ALGO; /* algorithm */ - UINT8 FB; /* feedback shift */ - INT32 op1_out[2]; /* op1 output for feedback */ - - INT32 *connect1; /* SLOT1 output pointer */ - INT32 *connect3; /* SLOT3 output pointer */ - INT32 *connect2; /* SLOT2 output pointer */ - INT32 *connect4; /* SLOT4 output pointer */ - - INT32 *mem_connect; /* where to put the delayed sample (MEM) */ - INT32 mem_value; /* delayed sample (MEM) value */ - - INT32 pms; /* channel PMS */ - UINT8 ams; /* channel AMS */ - - UINT32 fc; /* fnum,blk */ - UINT8 kcode; /* key code */ - UINT32 block_fnum; /* blk/fnum value (for LFO PM calculations) */ -} FM_CH; - - -typedef struct -{ - UINT16 address; /* address register */ - UINT8 status; /* status flag */ - UINT32 mode; /* mode CSM / 3SLOT */ - UINT8 fn_h; /* freq latch */ - INT32 TA; /* timer a value */ - INT32 TAL; /* timer a base */ - INT32 TAC; /* timer a counter */ - INT32 TB; /* timer b value */ - INT32 TBL; /* timer b base */ - INT32 TBC; /* timer b counter */ - INT32 dt_tab[8][32]; /* DeTune table */ - -} FM_ST; - - -/***********************************************************/ -/* OPN unit */ -/***********************************************************/ - -/* OPN 3slot struct */ -typedef struct -{ - UINT32 fc[3]; /* fnum3,blk3: calculated */ - UINT8 fn_h; /* freq3 latch */ - UINT8 kcode[3]; /* key code */ - UINT32 block_fnum[3]; /* current fnum value for this slot (can be different betweeen slots of one channel in 3slot mode) */ - UINT8 key_csm; /* CSM mode Key-ON flag */ - -} FM_3SLOT; - -/* OPN/A/B common state */ -typedef struct -{ - FM_ST ST; /* general state */ - FM_3SLOT SL3; /* 3 slot mode state */ - unsigned int pan[6*2]; /* fm channels output masks (0xffffffff = enable) */ - - /* EG */ - UINT32 eg_cnt; /* global envelope generator counter */ - UINT32 eg_timer; /* global envelope generator counter works at frequency = chipclock/144/3 */ - - /* LFO */ - UINT8 lfo_cnt; /* current LFO phase (out of 128) */ - UINT32 lfo_timer; /* current LFO phase runs at LFO frequency */ - UINT32 lfo_timer_overflow; /* LFO timer overflows every N samples (depends on LFO frequency) */ - UINT32 LFO_AM; /* current LFO AM step */ - UINT32 LFO_PM; /* current LFO PM step */ - -} FM_OPN; - -/***********************************************************/ -/* YM2612 chip */ -/***********************************************************/ -typedef struct -{ - FM_CH CH[6]; /* channel state */ - UINT8 dacen; /* DAC mode */ - INT32 dacout; /* DAC output */ - FM_OPN OPN; /* OPN state */ - -} YM2612; - -/* emulated chip */ -static YM2612 ym2612; - -/* current chip state */ -static INT32 m2,c1,c2; /* Phase Modulation input for operators 2,3,4 */ -static INT32 mem; /* one sample delay memory */ -static INT32 out_fm[6]; /* outputs of working channels */ - -/* chip type */ -static UINT32 op_mask[8][4]; /* operator output bitmasking (DAC quantization) */ -static int chip_type = YM2612_DISCRETE; - - -INLINE void FM_KEYON(FM_CH *CH , int s ) -{ - FM_SLOT *SLOT = &CH->SLOT[s]; - - if (!SLOT->key && !ym2612.OPN.SL3.key_csm) - { - /* restart Phase Generator */ - SLOT->phase = 0; - - /* reset SSG-EG inversion flag */ - SLOT->ssgn = 0; - - if ((SLOT->ar + SLOT->ksr) < 94 /*32+62*/) - { - SLOT->state = (SLOT->volume <= MIN_ATT_INDEX) ? ((SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC) : EG_ATT; - } - else - { - /* force attenuation level to 0 */ - SLOT->volume = MIN_ATT_INDEX; - - /* directly switch to Decay (or Sustain) */ - SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; - } - - /* recalculate EG output */ - if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - - SLOT->key = 1; -} - -INLINE void FM_KEYOFF(FM_CH *CH , int s ) -{ - FM_SLOT *SLOT = &CH->SLOT[s]; - - if (SLOT->key && !ym2612.OPN.SL3.key_csm) - { - if (SLOT->state>EG_REL) - { - SLOT->state = EG_REL; /* phase -> Release */ - - /* SSG-EG specific update */ - if (SLOT->ssg&0x08) - { - /* convert EG attenuation level */ - if (SLOT->ssgn ^ (SLOT->ssg&0x04)) - SLOT->volume = (0x200 - SLOT->volume) & MAX_ATT_INDEX; - - /* force EG attenuation level */ - if (SLOT->volume >= 0x200) - { - SLOT->volume = MAX_ATT_INDEX; - SLOT->state = EG_OFF; - } - - /* recalculate EG output */ - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - } - } - - SLOT->key = 0; -} - -INLINE void FM_KEYON_CSM(FM_CH *CH , int s ) -{ - FM_SLOT *SLOT = &CH->SLOT[s]; - - if (!SLOT->key && !ym2612.OPN.SL3.key_csm) - { - /* restart Phase Generator */ - SLOT->phase = 0; - - /* reset SSG-EG inversion flag */ - SLOT->ssgn = 0; - - if ((SLOT->ar + SLOT->ksr) < 94 /*32+62*/) - { - SLOT->state = (SLOT->volume <= MIN_ATT_INDEX) ? ((SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC) : EG_ATT; - } - else - { - /* force attenuation level to 0 */ - SLOT->volume = MIN_ATT_INDEX; - - /* directly switch to Decay (or Sustain) */ - SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; - } - - /* recalculate EG output */ - if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } -} - -INLINE void FM_KEYOFF_CSM(FM_CH *CH , int s ) -{ - FM_SLOT *SLOT = &CH->SLOT[s]; - if (!SLOT->key) - { - if (SLOT->state>EG_REL) - { - SLOT->state = EG_REL; /* phase -> Release */ - - /* SSG-EG specific update */ - if (SLOT->ssg&0x08) - { - /* convert EG attenuation level */ - if (SLOT->ssgn ^ (SLOT->ssg&0x04)) - SLOT->volume = (0x200 - SLOT->volume) & MAX_ATT_INDEX; - - /* force EG attenuation level */ - if (SLOT->volume >= 0x200) - { - SLOT->volume = MAX_ATT_INDEX; - SLOT->state = EG_OFF; - } - - /* recalculate EG output */ - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - } - } -} - -/* CSM Key Controll */ -INLINE void CSMKeyControll(FM_CH *CH) -{ - /* all key ON (verified by Nemesis on real hardware) */ - FM_KEYON_CSM(CH,SLOT1); - FM_KEYON_CSM(CH,SLOT2); - FM_KEYON_CSM(CH,SLOT3); - FM_KEYON_CSM(CH,SLOT4); - ym2612.OPN.SL3.key_csm = 1; -} - -INLINE void INTERNAL_TIMER_A() -{ - if (ym2612.OPN.ST.mode & 0x01) - { - ym2612.OPN.ST.TAC--; - if (ym2612.OPN.ST.TAC <= 0) - { - /* set status (if enabled) */ - if (ym2612.OPN.ST.mode & 0x04) - ym2612.OPN.ST.status |= 0x01; - - /* reload the counter */ - ym2612.OPN.ST.TAC = ym2612.OPN.ST.TAL; - - /* CSM mode auto key on */ - if ((ym2612.OPN.ST.mode & 0xC0) == 0x80) - CSMKeyControll(&ym2612.CH[2]); - } - } -} - -INLINE void INTERNAL_TIMER_B(int step) -{ - if (ym2612.OPN.ST.mode & 0x02) - { - ym2612.OPN.ST.TBC-=step; - if (ym2612.OPN.ST.TBC <= 0) - { - /* set status (if enabled) */ - if (ym2612.OPN.ST.mode & 0x08) - ym2612.OPN.ST.status |= 0x02; - - /* reload the counter */ - do - { - ym2612.OPN.ST.TBC += ym2612.OPN.ST.TBL; - } - while (ym2612.OPN.ST.TBC <= 0); - } - } -} - -/* OPN Mode Register Write */ -INLINE void set_timers(int v ) -{ - /* b7 = CSM MODE */ - /* b6 = 3 slot mode */ - /* b5 = reset b */ - /* b4 = reset a */ - /* b3 = timer enable b */ - /* b2 = timer enable a */ - /* b1 = load b */ - /* b0 = load a */ - - if ((ym2612.OPN.ST.mode ^ v) & 0xC0) - { - /* phase increment need to be recalculated */ - ym2612.CH[2].SLOT[SLOT1].Incr=-1; - - /* CSM mode disabled and CSM key ON active*/ - if (((v & 0xC0) != 0x80) && ym2612.OPN.SL3.key_csm) - { - /* CSM Mode Key OFF (verified by Nemesis on real hardware) */ - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT1); - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT2); - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT3); - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT4); - ym2612.OPN.SL3.key_csm = 0; - } - } - - /* reload Timers */ - if ((v&1) && !(ym2612.OPN.ST.mode&1)) - ym2612.OPN.ST.TAC = ym2612.OPN.ST.TAL; - if ((v&2) && !(ym2612.OPN.ST.mode&2)) - ym2612.OPN.ST.TBC = ym2612.OPN.ST.TBL; - - /* reset Timers flags */ - ym2612.OPN.ST.status &= (~v >> 4); - - ym2612.OPN.ST.mode = v; -} - -/* set algorithm connection */ -INLINE void setup_connection( FM_CH *CH, int ch ) -{ - INT32 *carrier = &out_fm[ch]; - - INT32 **om1 = &CH->connect1; - INT32 **om2 = &CH->connect3; - INT32 **oc1 = &CH->connect2; - - INT32 **memc = &CH->mem_connect; - - switch( CH->ALGO ){ - case 0: - /* M1---C1---MEM---M2---C2---OUT */ - *om1 = &c1; - *oc1 = &mem; - *om2 = &c2; - *memc= &m2; - break; - case 1: - /* M1------+-MEM---M2---C2---OUT */ - /* C1-+ */ - *om1 = &mem; - *oc1 = &mem; - *om2 = &c2; - *memc= &m2; - break; - case 2: - /* M1-----------------+-C2---OUT */ - /* C1---MEM---M2-+ */ - *om1 = &c2; - *oc1 = &mem; - *om2 = &c2; - *memc= &m2; - break; - case 3: - /* M1---C1---MEM------+-C2---OUT */ - /* M2-+ */ - *om1 = &c1; - *oc1 = &mem; - *om2 = &c2; - *memc= &c2; - break; - case 4: - /* M1---C1-+-OUT */ - /* M2---C2-+ */ - /* MEM: not used */ - *om1 = &c1; - *oc1 = carrier; - *om2 = &c2; - *memc= &mem; /* store it anywhere where it will not be used */ - break; - case 5: - /* +----C1----+ */ - /* M1-+-MEM---M2-+-OUT */ - /* +----C2----+ */ - *om1 = 0; /* special mark */ - *oc1 = carrier; - *om2 = carrier; - *memc= &m2; - break; - case 6: - /* M1---C1-+ */ - /* M2-+-OUT */ - /* C2-+ */ - /* MEM: not used */ - *om1 = &c1; - *oc1 = carrier; - *om2 = carrier; - *memc= &mem; /* store it anywhere where it will not be used */ - break; - case 7: - /* M1-+ */ - /* C1-+-OUT */ - /* M2-+ */ - /* C2-+ */ - /* MEM: not used*/ - *om1 = carrier; - *oc1 = carrier; - *om2 = carrier; - *memc= &mem; /* store it anywhere where it will not be used */ - break; - } - - CH->connect4 = carrier; -} - -/* set detune & multiple */ -INLINE void set_det_mul(FM_CH *CH,FM_SLOT *SLOT,int v) -{ - SLOT->mul = (v&0x0f)? (v&0x0f)*2 : 1; - SLOT->DT = ym2612.OPN.ST.dt_tab[(v>>4)&7]; - CH->SLOT[SLOT1].Incr=-1; -} - -/* set total level */ -INLINE void set_tl(FM_SLOT *SLOT , int v) -{ - SLOT->tl = (v&0x7f)<<(ENV_BITS-7); /* 7bit TL */ - - /* recalculate EG output */ - if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04)) && (SLOT->state > EG_REL)) - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; -} - -/* set attack rate & key scale */ -INLINE void set_ar_ksr(FM_CH *CH,FM_SLOT *SLOT,int v) -{ - UINT8 old_KSR = SLOT->KSR; - - SLOT->ar = (v&0x1f) ? 32 + ((v&0x1f)<<1) : 0; - - SLOT->KSR = 3-(v>>6); - if (SLOT->KSR != old_KSR) - { - CH->SLOT[SLOT1].Incr=-1; - } - - /* Even if it seems unnecessary to do it here, it could happen that KSR and KC */ - /* are modified but the resulted SLOT->ksr value (kc >> SLOT->KSR) remains unchanged. */ - /* In such case, Attack Rate would not be recalculated by "refresh_fc_eg_slot". */ - /* This actually fixes the intro of "The Adventures of Batman & Robin" (Eke-Eke) */ - if ((SLOT->ar + SLOT->ksr) < (32+62)) - { - SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr ]; - SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr ]; - } - else - { - /* verified by Nemesis on real hardware (Attack phase is blocked) */ - SLOT->eg_sh_ar = 0; - SLOT->eg_sel_ar = 18*RATE_STEPS; - } - } - -/* set decay rate */ -INLINE void set_dr(FM_SLOT *SLOT,int v) -{ - SLOT->d1r = (v&0x1f) ? 32 + ((v&0x1f)<<1) : 0; - - SLOT->eg_sh_d1r = eg_rate_shift [SLOT->d1r + SLOT->ksr]; - SLOT->eg_sel_d1r= eg_rate_select[SLOT->d1r + SLOT->ksr]; - -} - -/* set sustain rate */ -INLINE void set_sr(FM_SLOT *SLOT,int v) -{ - SLOT->d2r = (v&0x1f) ? 32 + ((v&0x1f)<<1) : 0; - - SLOT->eg_sh_d2r = eg_rate_shift [SLOT->d2r + SLOT->ksr]; - SLOT->eg_sel_d2r= eg_rate_select[SLOT->d2r + SLOT->ksr]; -} - -/* set release rate */ -INLINE void set_sl_rr(FM_SLOT *SLOT,int v) -{ - SLOT->sl = sl_table[ v>>4 ]; - - /* check EG state changes */ - if ((SLOT->state == EG_DEC) && (SLOT->volume >= (INT32)(SLOT->sl))) - SLOT->state = EG_SUS; - - SLOT->rr = 34 + ((v&0x0f)<<2); - - SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr]; - SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr]; -} - -/* advance LFO to next sample */ -INLINE void advance_lfo() -{ - if (ym2612.OPN.lfo_timer_overflow) /* LFO enabled ? */ - { - /* increment LFO timer (every samples) */ - ym2612.OPN.lfo_timer ++; - - /* when LFO is enabled, one level will last for 108, 77, 71, 67, 62, 44, 8 or 5 samples */ - if (ym2612.OPN.lfo_timer >= ym2612.OPN.lfo_timer_overflow) - { - ym2612.OPN.lfo_timer = 0; - - /* There are 128 LFO steps */ - ym2612.OPN.lfo_cnt = ( ym2612.OPN.lfo_cnt + 1 ) & 127; - - /* triangle (inverted) */ - /* AM: from 126 to 0 step -2, 0 to 126 step +2 */ - if (ym2612.OPN.lfo_cnt<64) - ym2612.OPN.LFO_AM = (ym2612.OPN.lfo_cnt ^ 63) << 1; - else - ym2612.OPN.LFO_AM = (ym2612.OPN.lfo_cnt & 63) << 1; - - /* PM works with 4 times slower clock */ - ym2612.OPN.LFO_PM = ym2612.OPN.lfo_cnt >> 2; - } - } -} - - -INLINE void advance_eg_channels(FM_CH *CH, unsigned int eg_cnt) -{ - unsigned int i = 6; /* six channels */ - unsigned int j; - FM_SLOT *SLOT; - - do - { - SLOT = &CH->SLOT[SLOT1]; - j = 4; /* four operators per channel */ - do - { - switch(SLOT->state) - { - case EG_ATT: /* attack phase */ - { - if (!(eg_cnt & ((1<eg_sh_ar)-1))) - { - /* update attenuation level */ - SLOT->volume += (~SLOT->volume * (eg_inc[SLOT->eg_sel_ar + ((eg_cnt>>SLOT->eg_sh_ar)&7)]))>>4; - - /* check phase transition*/ - if (SLOT->volume <= MIN_ATT_INDEX) - { - SLOT->volume = MIN_ATT_INDEX; - SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; /* special case where SL=0 */ - } - - /* recalculate EG output */ - if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) /* SSG-EG Output Inversion */ - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - break; - } - - case EG_DEC: /* decay phase */ - { - if (!(eg_cnt & ((1<eg_sh_d1r)-1))) - { - /* SSG EG type */ - if (SLOT->ssg&0x08) - { - /* update attenuation level */ - if (SLOT->volume < 0x200) - { - SLOT->volume += 4 * eg_inc[SLOT->eg_sel_d1r + ((eg_cnt>>SLOT->eg_sh_d1r)&7)]; - - /* recalculate EG output */ - if (SLOT->ssgn ^ (SLOT->ssg&0x04)) /* SSG-EG Output Inversion */ - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - } - else - { - /* update attenuation level */ - SLOT->volume += eg_inc[SLOT->eg_sel_d1r + ((eg_cnt>>SLOT->eg_sh_d1r)&7)]; - - /* recalculate EG output */ - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - - /* check phase transition*/ - if (SLOT->volume >= (INT32)(SLOT->sl)) - SLOT->state = EG_SUS; - } - break; - } - - case EG_SUS: /* sustain phase */ - { - if (!(eg_cnt & ((1<eg_sh_d2r)-1))) - { - /* SSG EG type */ - if (SLOT->ssg&0x08) - { - /* update attenuation level */ - if (SLOT->volume < 0x200) - { - SLOT->volume += 4 * eg_inc[SLOT->eg_sel_d2r + ((eg_cnt>>SLOT->eg_sh_d2r)&7)]; - - /* recalculate EG output */ - if (SLOT->ssgn ^ (SLOT->ssg&0x04)) /* SSG-EG Output Inversion */ - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - } - else - { - /* update attenuation level */ - SLOT->volume += eg_inc[SLOT->eg_sel_d2r + ((eg_cnt>>SLOT->eg_sh_d2r)&7)]; - - /* check phase transition*/ - if ( SLOT->volume >= MAX_ATT_INDEX ) - SLOT->volume = MAX_ATT_INDEX; - /* do not change SLOT->state (verified on real chip) */ - - /* recalculate EG output */ - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - } - break; - } - - case EG_REL: /* release phase */ - { - if (!(eg_cnt & ((1<eg_sh_rr)-1))) - { - /* SSG EG type */ - if (SLOT->ssg&0x08) - { - /* update attenuation level */ - if (SLOT->volume < 0x200) - SLOT->volume += 4 * eg_inc[SLOT->eg_sel_rr + ((eg_cnt>>SLOT->eg_sh_rr)&7)]; - - /* check phase transition */ - if (SLOT->volume >= 0x200) - { - SLOT->volume = MAX_ATT_INDEX; - SLOT->state = EG_OFF; - } - } - else - { - /* update attenuation level */ - SLOT->volume += eg_inc[SLOT->eg_sel_rr + ((eg_cnt>>SLOT->eg_sh_rr)&7)]; - - /* check phase transition*/ - if (SLOT->volume >= MAX_ATT_INDEX) - { - SLOT->volume = MAX_ATT_INDEX; - SLOT->state = EG_OFF; - } - } - - /* recalculate EG output */ - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - - } - break; - } - } - - /* next slot */ - SLOT++; - } while (--j); - - /* next channel */ - CH++; - } while (--i); -} - -/* SSG-EG update process */ -/* The behavior is based upon Nemesis tests on real hardware */ -/* This is actually executed before each samples */ -INLINE void update_ssg_eg_channels(FM_CH *CH) -{ - unsigned int i = 6; /* six channels */ - unsigned int j; - FM_SLOT *SLOT; - - do - { - j = 4; /* four operators per channel */ - SLOT = &CH->SLOT[SLOT1]; - - do - { - /* detect SSG-EG transition */ - /* this is not required during release phase as the attenuation has been forced to MAX and output invert flag is not used */ - /* if an Attack Phase is programmed, inversion can occur on each sample */ - if ((SLOT->ssg & 0x08) && (SLOT->volume >= 0x200) && (SLOT->state > EG_REL)) - { - if (SLOT->ssg & 0x01) /* bit 0 = hold SSG-EG */ - { - /* set inversion flag */ - if (SLOT->ssg & 0x02) - SLOT->ssgn = 4; - - /* force attenuation level during decay phases */ - if ((SLOT->state != EG_ATT) && !(SLOT->ssgn ^ (SLOT->ssg & 0x04))) - SLOT->volume = MAX_ATT_INDEX; - } - else /* loop SSG-EG */ - { - /* toggle output inversion flag or reset Phase Generator */ - if (SLOT->ssg & 0x02) - SLOT->ssgn ^= 4; - else - SLOT->phase = 0; - - /* same as Key ON */ - if (SLOT->state != EG_ATT) - { - if ((SLOT->ar + SLOT->ksr) < 94 /*32+62*/) - { - SLOT->state = (SLOT->volume <= MIN_ATT_INDEX) ? ((SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC) : EG_ATT; - } - else - { - /* Attack Rate is maximal: directly switch to Decay or Substain */ - SLOT->volume = MIN_ATT_INDEX; - SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; - } - } - } - - /* recalculate EG output */ - if (SLOT->ssgn ^ (SLOT->ssg&0x04)) - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - - /* next slot */ - SLOT++; - } while (--j); - - /* next channel */ - CH++; - } while (--i); -} - -INLINE void update_phase_lfo_slot(FM_SLOT *SLOT, UINT32 pm, UINT8 kc, UINT32 fc) -{ - INT32 lfo_fn_offset = lfo_pm_table[((fc & 0x7f0) << 4) + pm]; - - if (lfo_fn_offset) /* LFO phase modulation active */ - { - /* block is not modified by LFO PM */ - UINT8 blk = fc >> 11; - - /* LFO works with one more bit of a precision (12-bit) */ - fc = ((fc << 1) + lfo_fn_offset) & 0xfff; - - /* (frequency) phase increment counter (17-bit) */ - fc = (((fc << blk) >> 2) + SLOT->DT[kc]) & DT_MASK; - - /* update phase */ - SLOT->phase += ((fc * SLOT->mul) >> 1); - } - else /* LFO phase modulation = zero */ - { - SLOT->phase += SLOT->Incr; - } -} - -INLINE void update_phase_lfo_channel(FM_CH *CH) -{ - UINT32 fc = CH->block_fnum; - - INT32 lfo_fn_offset = lfo_pm_table[((fc & 0x7f0) << 4) + CH->pms + ym2612.OPN.LFO_PM]; - - if (lfo_fn_offset) /* LFO phase modulation active */ - { - UINT32 finc; - - /* block & keyscale code are not modified by LFO PM */ - UINT8 blk = fc >> 11; - UINT8 kc = CH->kcode; - - /* LFO works with one more bit of a precision (12-bit) */ - fc = ((fc << 1) + lfo_fn_offset) & 0xfff; - - /* (frequency) phase increment counter (17-bit) */ - fc = (fc << blk) >> 2; - - /* apply DETUNE & MUL operator specific values */ - finc = (fc + CH->SLOT[SLOT1].DT[kc]) & DT_MASK; - CH->SLOT[SLOT1].phase += ((finc * CH->SLOT[SLOT1].mul) >> 1); - - finc = (fc + CH->SLOT[SLOT2].DT[kc]) & DT_MASK; - CH->SLOT[SLOT2].phase += ((finc * CH->SLOT[SLOT2].mul) >> 1); - - finc = (fc + CH->SLOT[SLOT3].DT[kc]) & DT_MASK; - CH->SLOT[SLOT3].phase += ((finc * CH->SLOT[SLOT3].mul) >> 1); - - finc = (fc + CH->SLOT[SLOT4].DT[kc]) & DT_MASK; - CH->SLOT[SLOT4].phase += ((finc * CH->SLOT[SLOT4].mul) >> 1); - } - else /* LFO phase modulation = zero */ - { - CH->SLOT[SLOT1].phase += CH->SLOT[SLOT1].Incr; - CH->SLOT[SLOT2].phase += CH->SLOT[SLOT2].Incr; - CH->SLOT[SLOT3].phase += CH->SLOT[SLOT3].Incr; - CH->SLOT[SLOT4].phase += CH->SLOT[SLOT4].Incr; - } -} - -/* update phase increment and envelope generator */ -INLINE void refresh_fc_eg_slot(FM_SLOT *SLOT , unsigned int fc , unsigned int kc ) -{ - /* add detune value */ - fc += SLOT->DT[kc]; - - /* (frequency) phase overflow (credits to Nemesis) */ - fc &= DT_MASK; - - /* (frequency) phase increment counter */ - SLOT->Incr = (fc * SLOT->mul) >> 1; - - /* ksr */ - kc = kc >> SLOT->KSR; - - if( SLOT->ksr != kc ) - { - SLOT->ksr = kc; - - /* recalculate envelope generator rates */ - if ((SLOT->ar + kc) < (32+62)) - { - SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + kc ]; - SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + kc ]; - } - else - { - /* verified by Nemesis on real hardware (Attack phase is blocked) */ - SLOT->eg_sh_ar = 0; - SLOT->eg_sel_ar = 18*RATE_STEPS; - } - - SLOT->eg_sh_d1r = eg_rate_shift [SLOT->d1r + kc]; - SLOT->eg_sel_d1r= eg_rate_select[SLOT->d1r + kc]; - - SLOT->eg_sh_d2r = eg_rate_shift [SLOT->d2r + kc]; - SLOT->eg_sel_d2r= eg_rate_select[SLOT->d2r + kc]; - - SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + kc]; - SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + kc]; - } -} - -/* update phase increment counters */ -INLINE void refresh_fc_eg_chan(FM_CH *CH ) -{ - if( CH->SLOT[SLOT1].Incr==-1) - { - int fc = CH->fc; - int kc = CH->kcode; - refresh_fc_eg_slot(&CH->SLOT[SLOT1] , fc , kc ); - refresh_fc_eg_slot(&CH->SLOT[SLOT2] , fc , kc ); - refresh_fc_eg_slot(&CH->SLOT[SLOT3] , fc , kc ); - refresh_fc_eg_slot(&CH->SLOT[SLOT4] , fc , kc ); - } -} - -#define volume_calc(OP) ((OP)->vol_out + (AM & (OP)->AMmask)) - -INLINE signed int op_calc(UINT32 phase, unsigned int env, unsigned int pm, unsigned int opmask) -{ - UINT32 p = (env<<3) + sin_tab[ ( (phase >> SIN_BITS) + (pm >> 1) ) & SIN_MASK ]; - - if (p >= TL_TAB_LEN) - return 0; - return (tl_tab[p] & opmask); -} - -INLINE signed int op_calc1(UINT32 phase, unsigned int env, unsigned int pm, unsigned int opmask) -{ - UINT32 p = (env<<3) + sin_tab[ ( ( phase >> SIN_BITS ) + pm ) & SIN_MASK ]; - - if (p >= TL_TAB_LEN) - return 0; - return (tl_tab[p] & opmask); -} - -INLINE void chan_calc(FM_CH *CH, int num) -{ - do - { - INT32 out = 0; - UINT32 AM = ym2612.OPN.LFO_AM >> CH->ams; - unsigned int eg_out = volume_calc(&CH->SLOT[SLOT1]); - UINT32 *mask = op_mask[CH->ALGO]; - - m2 = c1 = c2 = mem = 0; - - *CH->mem_connect = CH->mem_value; /* restore delayed sample (MEM) value to m2 or c2 */ - - if( eg_out < ENV_QUIET ) /* SLOT 1 */ - { - if (CH->FB < SIN_BITS) - out = (CH->op1_out[0] + CH->op1_out[1]) >> CH->FB; - - out = op_calc1(CH->SLOT[SLOT1].phase, eg_out, out, mask[0]); - } - - CH->op1_out[0] = CH->op1_out[1]; - CH->op1_out[1] = out; - - if( !CH->connect1 ){ - /* algorithm 5 */ - mem = c1 = c2 = out; - }else{ - /* other algorithms */ - *CH->connect1 = out; - } - - eg_out = volume_calc(&CH->SLOT[SLOT3]); - if( eg_out < ENV_QUIET ) /* SLOT 3 */ - *CH->connect3 += op_calc(CH->SLOT[SLOT3].phase, eg_out, m2, mask[2]); - - eg_out = volume_calc(&CH->SLOT[SLOT2]); - if( eg_out < ENV_QUIET ) /* SLOT 2 */ - *CH->connect2 += op_calc(CH->SLOT[SLOT2].phase, eg_out, c1, mask[1]); - - eg_out = volume_calc(&CH->SLOT[SLOT4]); - if( eg_out < ENV_QUIET ) /* SLOT 4 */ - *CH->connect4 += op_calc(CH->SLOT[SLOT4].phase, eg_out, c2, mask[3]); - - /* store current MEM */ - CH->mem_value = mem; - - /* update phase counters AFTER output calculations */ - if (CH->pms) - { - /* 3-slot mode */ - if ((ym2612.OPN.ST.mode & 0xC0) && (CH == &ym2612.CH[2])) - { - /* keyscale code is not modifiedby LFO */ - UINT8 kc = ym2612.CH[2].kcode; - UINT32 pm = ym2612.CH[2].pms + ym2612.OPN.LFO_PM; - update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT1], pm, kc, ym2612.OPN.SL3.block_fnum[1]); - update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT2], pm, kc, ym2612.OPN.SL3.block_fnum[2]); - update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT3], pm, kc, ym2612.OPN.SL3.block_fnum[0]); - update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT4], pm, kc, ym2612.CH[2].block_fnum); - } - else - { - update_phase_lfo_channel(CH); - } - } - else /* no LFO phase modulation */ - { - CH->SLOT[SLOT1].phase += CH->SLOT[SLOT1].Incr; - CH->SLOT[SLOT2].phase += CH->SLOT[SLOT2].Incr; - CH->SLOT[SLOT3].phase += CH->SLOT[SLOT3].Incr; - CH->SLOT[SLOT4].phase += CH->SLOT[SLOT4].Incr; - } - - /* next channel */ - CH++; - } while (--num); -} - -/* write a OPN mode register 0x20-0x2f */ -INLINE void OPNWriteMode(int r, int v) -{ - UINT8 c; - FM_CH *CH; - - switch(r){ - case 0x21: /* Test */ - break; - - case 0x22: /* LFO FREQ */ - if (v&8) /* LFO enabled ? */ - { - ym2612.OPN.lfo_timer_overflow = lfo_samples_per_step[v&7]; - } - else - { - /* hold LFO waveform in reset state */ - ym2612.OPN.lfo_timer_overflow = 0; - ym2612.OPN.lfo_timer = 0; - ym2612.OPN.lfo_cnt = 0; - ym2612.OPN.LFO_PM = 0; - ym2612.OPN.LFO_AM = 126; - } - break; - case 0x24: /* timer A High */ - ym2612.OPN.ST.TA = (ym2612.OPN.ST.TA & 0x03)|(((int)v)<<2); - ym2612.OPN.ST.TAL = 1024 - ym2612.OPN.ST.TA; - break; - case 0x25: /* timer A Low */ - ym2612.OPN.ST.TA = (ym2612.OPN.ST.TA & 0x3fc)|(v&3); - ym2612.OPN.ST.TAL = 1024 - ym2612.OPN.ST.TA; - break; - case 0x26: /* timer B */ - ym2612.OPN.ST.TB = v; - ym2612.OPN.ST.TBL = (256 - v) << 4; - break; - case 0x27: /* mode, timer control */ - set_timers(v); - break; - case 0x28: /* key on / off */ - c = v & 0x03; - if( c == 3 ) break; - if (v&0x04) c+=3; /* CH 4-6 */ - CH = &ym2612.CH[c]; - if (v&0x10) FM_KEYON(CH,SLOT1); else FM_KEYOFF(CH,SLOT1); - if (v&0x20) FM_KEYON(CH,SLOT2); else FM_KEYOFF(CH,SLOT2); - if (v&0x40) FM_KEYON(CH,SLOT3); else FM_KEYOFF(CH,SLOT3); - if (v&0x80) FM_KEYON(CH,SLOT4); else FM_KEYOFF(CH,SLOT4); - break; - } -} - -/* write a OPN register (0x30-0xff) */ -INLINE void OPNWriteReg(int r, int v) -{ - FM_CH *CH; - FM_SLOT *SLOT; - - UINT8 c = OPN_CHAN(r); - - if (c == 3) return; /* 0xX3,0xX7,0xXB,0xXF */ - - if (r >= 0x100) c+=3; - - CH = &ym2612.CH[c]; - - SLOT = &(CH->SLOT[OPN_SLOT(r)]); - - switch( r & 0xf0 ) { - case 0x30: /* DET , MUL */ - set_det_mul(CH,SLOT,v); - break; - - case 0x40: /* TL */ - set_tl(SLOT,v); - break; - - case 0x50: /* KS, AR */ - set_ar_ksr(CH,SLOT,v); - break; - - case 0x60: /* bit7 = AM ENABLE, DR */ - set_dr(SLOT,v); - SLOT->AMmask = (v&0x80) ? ~0 : 0; - break; - - case 0x70: /* SR */ - set_sr(SLOT,v); - break; - - case 0x80: /* SL, RR */ - set_sl_rr(SLOT,v); - break; - - case 0x90: /* SSG-EG */ - SLOT->ssg = v&0x0f; - - /* recalculate EG output */ - if (SLOT->state > EG_REL) - { - if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) - SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; - else - SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; - } - - /* SSG-EG envelope shapes : - - E AtAlH - 1 0 0 0 \\\\ - - 1 0 0 1 \___ - - 1 0 1 0 \/\/ - ___ - 1 0 1 1 \ - - 1 1 0 0 //// - ___ - 1 1 0 1 / - - 1 1 1 0 /\/\ - - 1 1 1 1 /___ - - - E = SSG-EG enable - - - The shapes are generated using Attack, Decay and Sustain phases. - - Each single character in the diagrams above represents this whole - sequence: - - - when KEY-ON = 1, normal Attack phase is generated (*without* any - difference when compared to normal mode), - - - later, when envelope level reaches minimum level (max volume), - the EG switches to Decay phase (which works with bigger steps - when compared to normal mode - see below), - - - later when envelope level passes the SL level, - the EG swithes to Sustain phase (which works with bigger steps - when compared to normal mode - see below), - - - finally when envelope level reaches maximum level (min volume), - the EG switches to Attack phase again (depends on actual waveform). - - Important is that when switch to Attack phase occurs, the phase counter - of that operator will be zeroed-out (as in normal KEY-ON) but not always. - (I havent found the rule for that - perhaps only when the output level is low) - - The difference (when compared to normal Envelope Generator mode) is - that the resolution in Decay and Sustain phases is 4 times lower; - this results in only 256 steps instead of normal 1024. - In other words: - when SSG-EG is disabled, the step inside of the EG is one, - when SSG-EG is enabled, the step is four (in Decay and Sustain phases). - - Times between the level changes are the same in both modes. - - - Important: - Decay 1 Level (so called SL) is compared to actual SSG-EG output, so - it is the same in both SSG and no-SSG modes, with this exception: - - when the SSG-EG is enabled and is generating raising levels - (when the EG output is inverted) the SL will be found at wrong level !!! - For example, when SL=02: - 0 -6 = -6dB in non-inverted EG output - 96-6 = -90dB in inverted EG output - Which means that EG compares its level to SL as usual, and that the - output is simply inverted afterall. - - - The Yamaha's manuals say that AR should be set to 0x1f (max speed). - That is not necessary, but then EG will be generating Attack phase. - - */ - break; - - case 0xa0: - switch( OPN_SLOT(r) ){ - case 0: /* 0xa0-0xa2 : FNUM1 */ - { - UINT32 fn = (((UINT32)((ym2612.OPN.ST.fn_h)&7))<<8) + v; - UINT8 blk = ym2612.OPN.ST.fn_h>>3; - /* keyscale code */ - CH->kcode = (blk<<2) | opn_fktable[fn >> 7]; - /* phase increment counter */ - CH->fc = (fn<>1; - - /* store fnum in clear form for LFO PM calculations */ - CH->block_fnum = (blk<<11) | fn; - - CH->SLOT[SLOT1].Incr=-1; - break; - } - case 1: /* 0xa4-0xa6 : FNUM2,BLK */ - ym2612.OPN.ST.fn_h = v&0x3f; - break; - case 2: /* 0xa8-0xaa : 3CH FNUM1 */ - if(r < 0x100) - { - UINT32 fn = (((UINT32)(ym2612.OPN.SL3.fn_h&7))<<8) + v; - UINT8 blk = ym2612.OPN.SL3.fn_h>>3; - /* keyscale code */ - ym2612.OPN.SL3.kcode[c]= (blk<<2) | opn_fktable[fn >> 7]; - /* phase increment counter */ - ym2612.OPN.SL3.fc[c] = (fn<>1; - ym2612.OPN.SL3.block_fnum[c] = (blk<<11) | fn; - ym2612.CH[2].SLOT[SLOT1].Incr=-1; - } - break; - case 3: /* 0xac-0xae : 3CH FNUM2,BLK */ - if(r < 0x100) - ym2612.OPN.SL3.fn_h = v&0x3f; - break; - } - break; - - case 0xb0: - switch( OPN_SLOT(r) ){ - case 0: /* 0xb0-0xb2 : FB,ALGO */ - { - CH->ALGO = v&7; - CH->FB = SIN_BITS - ((v>>3)&7); - setup_connection( CH, c ); - break; - } - case 1: /* 0xb4-0xb6 : L , R , AMS , PMS */ - /* b0-2 PMS */ - CH->pms = (v & 7) * 32; /* CH->pms = PM depth * 32 (index in lfo_pm_table) */ - - /* b4-5 AMS */ - CH->ams = lfo_ams_depth_shift[(v>>4) & 0x03]; - - /* PAN : b7 = L, b6 = R */ - ym2612.OPN.pan[ c*2 ] = (v & 0x80) ? 0xffffffff : 0; - ym2612.OPN.pan[ c*2+1 ] = (v & 0x40) ? 0xffffffff : 0; - break; - } - break; - } -} - -static void reset_channels(FM_CH *CH , int num ) -{ - int c,s; - - for( c = 0 ; c < num ; c++ ) - { - CH[c].mem_value = 0; - CH[c].op1_out[0] = 0; - CH[c].op1_out[1] = 0; - for(s = 0 ; s < 4 ; s++ ) - { - CH[c].SLOT[s].Incr = -1; - CH[c].SLOT[s].key = 0; - CH[c].SLOT[s].phase = 0; - CH[c].SLOT[s].ssgn = 0; - CH[c].SLOT[s].state = EG_OFF; - CH[c].SLOT[s].volume = MAX_ATT_INDEX; - CH[c].SLOT[s].vol_out = MAX_ATT_INDEX; - } - } -} - -/* initialize generic tables */ -static void init_tables(void) -{ - signed int d,i,x; - signed int n; - double o,m; - - /* build Linear Power Table */ - for (x=0; x>= 4; /* 12 bits here */ - if (n&1) /* round to nearest */ - n = (n>>1)+1; - else - n = n>>1; - /* 11 bits here (rounded) */ - n <<= 2; /* 13 bits here (as in real chip) */ - - /* 14 bits (with sign bit) */ - tl_tab[ x*2 + 0 ] = n; - tl_tab[ x*2 + 1 ] = -tl_tab[ x*2 + 0 ]; - - /* one entry in the 'Power' table use the following format, xxxxxyyyyyyyys with: */ - /* s = sign bit */ - /* yyyyyyyy = 8-bits decimal part (0-TL_RES_LEN) */ - /* xxxxx = 5-bits integer 'shift' value (0-31) but, since Power table output is 13 bits, */ - /* any value above 13 (included) would be discarded. */ - for (i=1; i<13; i++) - { - tl_tab[ x*2+0 + i*2*TL_RES_LEN ] = tl_tab[ x*2+0 ]>>i; - tl_tab[ x*2+1 + i*2*TL_RES_LEN ] = -tl_tab[ x*2+0 + i*2*TL_RES_LEN ]; - } - } - - /* build Logarithmic Sinus table */ - for (i=0; i0.0) - o = 8*log(1.0/m)/log(2); /* convert to 'decibels' */ - else - o = 8*log(-1.0/m)/log(2); /* convert to 'decibels' */ - - o = o / (ENV_STEP/4); - - n = (int)(2.0*o); - if (n&1) /* round to nearest */ - n = (n>>1)+1; - else - n = n>>1; - - /* 13-bits (8.5) value is formatted for above 'Power' table */ - sin_tab[ i ] = n*2 + (m>=0.0? 0: 1 ); - } - - /* build LFO PM modulation table */ - for(i = 0; i < 8; i++) /* 8 PM depths */ - { - UINT8 fnum; - for (fnum=0; fnum<128; fnum++) /* 7 bits meaningful of F-NUMBER */ - { - UINT8 value; - UINT8 step; - UINT32 offset_depth = i; - UINT32 offset_fnum_bit; - UINT32 bit_tmp; - - for (step=0; step<8; step++) - { - value = 0; - for (bit_tmp=0; bit_tmp<7; bit_tmp++) /* 7 bits */ - { - if (fnum & (1<= 0xb4 ; i-- ) - { - OPNWriteReg(i ,0xc0); - OPNWriteReg(i|0x100,0xc0); - } - for(i = 0xb2 ; i >= 0x30 ; i-- ) - { - OPNWriteReg(i ,0); - OPNWriteReg(i|0x100,0); - } -} - -/* ym2612 write */ -/* n = number */ -/* a = address */ -/* v = value */ -void YM2612Write(unsigned int a, unsigned int v) -{ - v &= 0xff; /* adjust to 8 bit bus */ - - switch( a ) - { - case 0: /* address port 0 */ - ym2612.OPN.ST.address = v; - break; - - case 2: /* address port 1 */ - ym2612.OPN.ST.address = v | 0x100; - break; - - default: /* data port */ - { - int addr = ym2612.OPN.ST.address; /* verified by Nemesis on real YM2612 */ - switch( addr & 0x1f0 ) - { - case 0x20: /* 0x20-0x2f Mode */ - switch( addr ) - { - case 0x2a: /* DAC data (ym2612) */ - ym2612.dacout = ((int)v - 0x80) << 6; /* convert to 14-bit output */ - break; - case 0x2b: /* DAC Sel (ym2612) */ - /* b7 = dac enable */ - ym2612.dacen = v & 0x80; - break; - default: /* OPN section */ - /* write register */ - OPNWriteMode(addr,v); - } - break; - default: /* 0x30-0xff OPN section */ - /* write register */ - OPNWriteReg(addr,v); - } - break; - } - } -} - -unsigned int YM2612Read(void) -{ - return ym2612.OPN.ST.status; -} - -/* Generate samples for ym2612 */ -void YM2612Update(int *buffer, int length) -{ - int i; - int lt,rt; - - /* refresh PG increments and EG rates if required */ - refresh_fc_eg_chan(&ym2612.CH[0]); - refresh_fc_eg_chan(&ym2612.CH[1]); - - if (!(ym2612.OPN.ST.mode & 0xC0)) - { - refresh_fc_eg_chan(&ym2612.CH[2]); - } - else - { - /* 3SLOT MODE (operator order is 0,1,3,2) */ - if(ym2612.CH[2].SLOT[SLOT1].Incr==-1) - { - refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT1] , ym2612.OPN.SL3.fc[1] , ym2612.OPN.SL3.kcode[1] ); - refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT2] , ym2612.OPN.SL3.fc[2] , ym2612.OPN.SL3.kcode[2] ); - refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT3] , ym2612.OPN.SL3.fc[0] , ym2612.OPN.SL3.kcode[0] ); - refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT4] , ym2612.CH[2].fc , ym2612.CH[2].kcode ); - } - } - - refresh_fc_eg_chan(&ym2612.CH[3]); - refresh_fc_eg_chan(&ym2612.CH[4]); - refresh_fc_eg_chan(&ym2612.CH[5]); - - /* buffering */ - for(i=0; i= 3) - { - /* reset EG timer */ - ym2612.OPN.eg_timer = 0; - - /* increment EG counter */ - ym2612.OPN.eg_cnt++; - - /* EG counter is 12-bit only and zero value is skipped (verified on real hardware) */ - if (ym2612.OPN.eg_cnt == 4096) - ym2612.OPN.eg_cnt = 1; - - /* advance envelope generator */ - advance_eg_channels(&ym2612.CH[0], ym2612.OPN.eg_cnt); - } - - /* channels accumulator output clipping (14-bit max) */ - if (out_fm[0] > 8191) out_fm[0] = 8191; - else if (out_fm[0] < -8192) out_fm[0] = -8192; - if (out_fm[1] > 8191) out_fm[1] = 8191; - else if (out_fm[1] < -8192) out_fm[1] = -8192; - if (out_fm[2] > 8191) out_fm[2] = 8191; - else if (out_fm[2] < -8192) out_fm[2] = -8192; - if (out_fm[3] > 8191) out_fm[3] = 8191; - else if (out_fm[3] < -8192) out_fm[3] = -8192; - if (out_fm[4] > 8191) out_fm[4] = 8191; - else if (out_fm[4] < -8192) out_fm[4] = -8192; - if (out_fm[5] > 8191) out_fm[5] = 8191; - else if (out_fm[5] < -8192) out_fm[5] = -8192; - - /* stereo DAC output panning & mixing */ - lt = ((out_fm[0]) & ym2612.OPN.pan[0]); - rt = ((out_fm[0]) & ym2612.OPN.pan[1]); - lt += ((out_fm[1]) & ym2612.OPN.pan[2]); - rt += ((out_fm[1]) & ym2612.OPN.pan[3]); - lt += ((out_fm[2]) & ym2612.OPN.pan[4]); - rt += ((out_fm[2]) & ym2612.OPN.pan[5]); - lt += ((out_fm[3]) & ym2612.OPN.pan[6]); - rt += ((out_fm[3]) & ym2612.OPN.pan[7]); - lt += ((out_fm[4]) & ym2612.OPN.pan[8]); - rt += ((out_fm[4]) & ym2612.OPN.pan[9]); - lt += ((out_fm[5]) & ym2612.OPN.pan[10]); - rt += ((out_fm[5]) & ym2612.OPN.pan[11]); - - /* discrete YM2612 DAC */ - if (chip_type == YM2612_DISCRETE) - { - int i; - - /* DAC 'ladder effect' */ - for (i=0; i<6; i++) - { - if (out_fm[i] < 0) - { - /* -4 offset (-3 when not muted) on negative channel output (9-bit) */ - lt -= ((4 - (ym2612.OPN.pan[(2*i)+0] & 1)) << 5); - rt -= ((4 - (ym2612.OPN.pan[(2*i)+1] & 1)) << 5); - } - else - { - /* +4 offset (when muted or not) on positive channel output (9-bit) */ - lt += (4 << 5); - rt += (4 << 5); - } - } - } - - /* buffering */ - *buffer++ = lt; - *buffer++ = rt; - - /* CSM mode: if CSM Key ON has occurred, CSM Key OFF need to be sent */ - /* only if Timer A does not overflow again (i.e CSM Key ON not set again) */ - ym2612.OPN.SL3.key_csm <<= 1; - - /* timer A control */ - INTERNAL_TIMER_A(); - - /* CSM Mode Key ON still disabled */ - if (ym2612.OPN.SL3.key_csm & 2) - { - /* CSM Mode Key OFF (verified by Nemesis on real hardware) */ - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT1); - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT2); - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT3); - FM_KEYOFF_CSM(&ym2612.CH[2],SLOT4); - ym2612.OPN.SL3.key_csm = 0; - } - } - - /* timer B control */ - INTERNAL_TIMER_B(length); -} - -void YM2612Config(int type) -{ - /* YM2612 chip type */ - chip_type = type; - - /* carrier operator outputs bitmask */ - if (chip_type < YM2612_ENHANCED) - { - /* 9-bit DAC */ - op_mask[0][3] = 0xffffffe0; - op_mask[1][3] = 0xffffffe0; - op_mask[2][3] = 0xffffffe0; - op_mask[3][3] = 0xffffffe0; - op_mask[4][1] = 0xffffffe0; - op_mask[4][3] = 0xffffffe0; - op_mask[5][1] = 0xffffffe0; - op_mask[5][2] = 0xffffffe0; - op_mask[5][3] = 0xffffffe0; - op_mask[6][1] = 0xffffffe0; - op_mask[6][2] = 0xffffffe0; - op_mask[6][3] = 0xffffffe0; - op_mask[7][0] = 0xffffffe0; - op_mask[7][1] = 0xffffffe0; - op_mask[7][2] = 0xffffffe0; - op_mask[7][3] = 0xffffffe0; - } - else - { - /* 14-bit DAC */ - op_mask[0][3] = 0xffffffff; - op_mask[1][3] = 0xffffffff; - op_mask[2][3] = 0xffffffff; - op_mask[3][3] = 0xffffffff; - op_mask[4][1] = 0xffffffff; - op_mask[4][3] = 0xffffffff; - op_mask[5][1] = 0xffffffff; - op_mask[5][2] = 0xffffffff; - op_mask[5][3] = 0xffffffff; - op_mask[6][1] = 0xffffffff; - op_mask[6][2] = 0xffffffff; - op_mask[6][3] = 0xffffffff; - op_mask[7][0] = 0xffffffff; - op_mask[7][1] = 0xffffffff; - op_mask[7][2] = 0xffffffff; - op_mask[7][3] = 0xffffffff; - } -} - -int YM2612LoadContext(unsigned char *state) -{ - int c,s; - uint8 index; - int bufferptr = 0; - - /* restore YM2612 context */ - load_param(&ym2612, sizeof(ym2612)); - - /* restore DT table address pointer for each channel slots */ - for (c=0; c<6; c++) - { - for (s=0; s<4; s++) - { - load_param(&index,sizeof(index)); - bufferptr += sizeof(index); - ym2612.CH[c].SLOT[s].DT = ym2612.OPN.ST.dt_tab[index&7]; - } - } - - /* restore outputs connections */ - setup_connection(&ym2612.CH[0],0); - setup_connection(&ym2612.CH[1],1); - setup_connection(&ym2612.CH[2],2); - setup_connection(&ym2612.CH[3],3); - setup_connection(&ym2612.CH[4],4); - setup_connection(&ym2612.CH[5],5); - - return bufferptr; -} - -int YM2612SaveContext(unsigned char *state) -{ - int c,s; - uint8 index; - int bufferptr = 0; - - /* save YM2612 context */ - save_param(&ym2612, sizeof(ym2612)); - - /* save DT table index for each channel slots */ - for (c=0; c<6; c++) - { - for (s=0; s<4; s++) - { - index = (ym2612.CH[c].SLOT[s].DT - ym2612.OPN.ST.dt_tab[0]) >> 5; - save_param(&index,sizeof(index)); - bufferptr += sizeof(index); - } - } - - return bufferptr; -} +/* +** +** software implementation of Yamaha FM sound generator (YM2612/YM3438) +** +** Original code (MAME fm.c) +** +** Copyright (C) 2001, 2002, 2003 Jarek Burczynski (bujar at mame dot net) +** Copyright (C) 1998 Tatsuyuki Satoh , MultiArcadeMachineEmulator development +** +** Version 1.4 (final beta) +** +** Additional code & fixes by Eke-Eke for Genesis Plus GX +** +** Huge thanks to Nemesis, most of those fixes came from his tests on Sega Genesis hardware +** Additional info from YM2612 die shot analysis by Sauraen +** See http://gendev.spritesmind.net/forum/viewtopic.php?t=386 +** +*/ + +/* +** CHANGELOG: +** +** 11-05-2021 Eke-Eke (Genesis Plus GX): +** - fixed potential issue with SSG-EG inverted attenuation level on Key OFF +** +** 03-12-2017 Eke-Eke (Genesis Plus GX): +** - improved 9-bit DAC emulation accuracy +** - added discrete YM2612 DAC distortion emulation ("ladder effect") +** - replaced configurable DAC depth with configurable chip types (discrete, integrated or enhanced) +** +** 26-09-2017 Eke-Eke (Genesis Plus GX): +** - fixed EG counter loopback behavior (verified on YM3438 die) +** - reverted changes to EG rates 2-7 increment values +** +** 09-04-2017 Eke-Eke (Genesis Plus GX): +** - fixed LFO PM implementation: block & keyscale code should not be modified by LFO (verified on YM2612 die) +** - fixed Timer B overflow handling +** +** 12-03-2017 Eke-Eke (Genesis Plus GX): +** - fixed Op1 self-feedback regression introduced by previous modifications +** - removed one-sample extra delay on Op1 calculated output +** - refactored chan_calc() function +** +** 01-09-2012 Eke-Eke (Genesis Plus GX): +** - removed input clock / output samplerate frequency ratio, chip now always run at (original) internal sample frequency +** - removed now uneeded extra bits of precision +** +** 2006~2012 Eke-Eke (Genesis Plus GX): +** - removed unused multichip support +** - added YM2612 Context external access functions +** - fixed LFO implementation: +** .added support for CH3 special mode: fixes various sound effects (birds in Warlock, bug sound in Aladdin...) +** .inverted LFO AM waveform: fixes Spider-Man & Venom : Separation Anxiety (intro), California Games (surfing event) +** .improved LFO timing accuracy: now updated AFTER sample output, like EG/PG updates, and without any precision loss anymore. +** - improved internal timers emulation +** - adjusted lowest EG rates increment values +** - fixed Attack Rate not being updated in some specific cases (Batman & Robin intro) +** - fixed EG behavior when Attack Rate is maximal +** - fixed EG behavior when SL=0 (Mega Turrican tracks 03,09...) or/and Key ON occurs at minimal attenuation +** - implemented EG output immediate changes on register writes +** - fixed YM2612 initial values (after the reset): fixes missing intro in B.O.B +** - implemented Detune overflow (Ariel, Comix Zone, Shaq Fu, Spiderman & many other games using GEMS sound engine) +** - implemented accurate CSM mode emulation +** - implemented accurate SSG-EG emulation (Asterix, Beavis&Butthead, Bubba'n Stix & many other games) +** - implemented accurate address/data ports behavior +** - added preliminar support for DAC precision +** +** 03-08-2003 Jarek Burczynski: +** - fixed YM2608 initial values (after the reset) +** - fixed flag and irqmask handling (YM2608) +** - fixed BUFRDY flag handling (YM2608) +** +** 14-06-2003 Jarek Burczynski: +** - implemented all of the YM2608 status register flags +** - implemented support for external memory read/write via YM2608 +** - implemented support for deltat memory limit register in YM2608 emulation +** +** 22-05-2003 Jarek Burczynski: +** - fixed LFO PM calculations (copy&paste bugfix) +** +** 08-05-2003 Jarek Burczynski: +** - fixed SSG support +** +** 22-04-2003 Jarek Burczynski: +** - implemented 100% correct LFO generator (verified on real YM2610 and YM2608) +** +** 15-04-2003 Jarek Burczynski: +** - added support for YM2608's register 0x110 - status mask +** +** 01-12-2002 Jarek Burczynski: +** - fixed register addressing in YM2608, YM2610, YM2610B chips. (verified on real YM2608) +** The addressing patch used for early Neo-Geo games can be removed now. +** +** 26-11-2002 Jarek Burczynski, Nicola Salmoria: +** - recreated YM2608 ADPCM ROM using data from real YM2608's output which leads to: +** - added emulation of YM2608 drums. +** - output of YM2608 is two times lower now - same as YM2610 (verified on real YM2608) +** +** 16-08-2002 Jarek Burczynski: +** - binary exact Envelope Generator (verified on real YM2203); +** identical to YM2151 +** - corrected 'off by one' error in feedback calculations (when feedback is off) +** - corrected connection (algorithm) calculation (verified on real YM2203 and YM2610) +** +** 18-12-2001 Jarek Burczynski: +** - added SSG-EG support (verified on real YM2203) +** +** 12-08-2001 Jarek Burczynski: +** - corrected sin_tab and tl_tab data (verified on real chip) +** - corrected feedback calculations (verified on real chip) +** - corrected phase generator calculations (verified on real chip) +** - corrected envelope generator calculations (verified on real chip) +** - corrected FM volume level (YM2610 and YM2610B). +** - changed YMxxxUpdateOne() functions (YM2203, YM2608, YM2610, YM2610B, YM2612) : +** this was needed to calculate YM2610 FM channels output correctly. +** (Each FM channel is calculated as in other chips, but the output of the channel +** gets shifted right by one *before* sending to accumulator. That was impossible to do +** with previous implementation). +** +** 23-07-2001 Jarek Burczynski, Nicola Salmoria: +** - corrected YM2610 ADPCM type A algorithm and tables (verified on real chip) +** +** 11-06-2001 Jarek Burczynski: +** - corrected end of sample bug in ADPCMA_calc_cha(). +** Real YM2610 checks for equality between current and end addresses (only 20 LSB bits). +** +** 08-12-98 hiro-shi: +** rename ADPCMA -> ADPCMB, ADPCMB -> ADPCMA +** move ROM limit check.(CALC_CH? -> 2610Write1/2) +** test program (ADPCMB_TEST) +** move ADPCM A/B end check. +** ADPCMB repeat flag(no check) +** change ADPCM volume rate (8->16) (32->48). +** +** 09-12-98 hiro-shi: +** change ADPCM volume. (8->16, 48->64) +** replace ym2610 ch0/3 (YM-2610B) +** change ADPCM_SHIFT (10->8) missing bank change 0x4000-0xffff. +** add ADPCM_SHIFT_MASK +** change ADPCMA_DECODE_MIN/MAX. +*/ + +/************************************************************************/ +/* comment of hiro-shi(Hiromitsu Shioya) */ +/* YM2610(B) = OPN-B */ +/* YM2610 : PSG:3ch FM:4ch ADPCM(18.5KHz):6ch DeltaT ADPCM:1ch */ +/* YM2610B : PSG:3ch FM:6ch ADPCM(18.5KHz):6ch DeltaT ADPCM:1ch */ +/************************************************************************/ + +#include "shared.h" + +/* envelope generator */ +#define ENV_BITS 10 +#define ENV_LEN (1<>3) + +/* sin waveform table in 'decibel' scale */ +static unsigned int sin_tab[SIN_LEN]; + +/* sustain level table (3dB per step) */ +/* bit0, bit1, bit2, bit3, bit4, bit5, bit6 */ +/* 1, 2, 4, 8, 16, 32, 64 (value)*/ +/* 0.75, 1.5, 3, 6, 12, 24, 48 (dB)*/ + +/* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,93 (dB)*/ +/* attenuation value (10 bits) = (SL << 2) << 3 */ +#define SC(db) (UINT32) ( db * (4.0/ENV_STEP) ) +static const UINT32 sl_table[16]={ + SC( 0),SC( 1),SC( 2),SC(3 ),SC(4 ),SC(5 ),SC(6 ),SC( 7), + SC( 8),SC( 9),SC(10),SC(11),SC(12),SC(13),SC(14),SC(31) +}; +#undef SC + + +#define RATE_STEPS (8) +static const UINT8 eg_inc[19*RATE_STEPS]={ + +/*cycle:0 1 2 3 4 5 6 7*/ + +/* 0 */ 0,1, 0,1, 0,1, 0,1, /* rates 00..11 0 (increment by 0 or 1) */ +/* 1 */ 0,1, 0,1, 1,1, 0,1, /* rates 00..11 1 */ +/* 2 */ 0,1, 1,1, 0,1, 1,1, /* rates 00..11 2 */ +/* 3 */ 0,1, 1,1, 1,1, 1,1, /* rates 00..11 3 */ + +/* 4 */ 1,1, 1,1, 1,1, 1,1, /* rate 12 0 (increment by 1) */ +/* 5 */ 1,1, 1,2, 1,1, 1,2, /* rate 12 1 */ +/* 6 */ 1,2, 1,2, 1,2, 1,2, /* rate 12 2 */ +/* 7 */ 1,2, 2,2, 1,2, 2,2, /* rate 12 3 */ + +/* 8 */ 2,2, 2,2, 2,2, 2,2, /* rate 13 0 (increment by 2) */ +/* 9 */ 2,2, 2,4, 2,2, 2,4, /* rate 13 1 */ +/*10 */ 2,4, 2,4, 2,4, 2,4, /* rate 13 2 */ +/*11 */ 2,4, 4,4, 2,4, 4,4, /* rate 13 3 */ + +/*12 */ 4,4, 4,4, 4,4, 4,4, /* rate 14 0 (increment by 4) */ +/*13 */ 4,4, 4,8, 4,4, 4,8, /* rate 14 1 */ +/*14 */ 4,8, 4,8, 4,8, 4,8, /* rate 14 2 */ +/*15 */ 4,8, 8,8, 4,8, 8,8, /* rate 14 3 */ + +/*16 */ 8,8, 8,8, 8,8, 8,8, /* rates 15 0, 15 1, 15 2, 15 3 (increment by 8) */ +/*17 */ 16,16,16,16,16,16,16,16, /* rates 15 2, 15 3 for attack */ +/*18 */ 0,0, 0,0, 0,0, 0,0, /* infinity rates for attack and decay(s) */ +}; + + +#define O(a) (a*RATE_STEPS) + +/*note that there is no O(17) in this table - it's directly in the code */ +static const UINT8 eg_rate_select[32+64+32]={ /* Envelope Generator rates (32 + 64 rates + 32 RKS) */ +/* 32 infinite time rates (same as Rate 0) */ +O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), +O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), +O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), +O(18),O(18),O(18),O(18),O(18),O(18),O(18),O(18), + +/* rates 00-11 */ +/* +O( 0),O( 1) +*/ +O(18),O(18), /* from Nemesis's tests on real YM2612 hardware */ + O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), +O( 0),O( 1),O( 2),O( 3), + +/* rate 12 */ +O( 4),O( 5),O( 6),O( 7), + +/* rate 13 */ +O( 8),O( 9),O(10),O(11), + +/* rate 14 */ +O(12),O(13),O(14),O(15), + +/* rate 15 */ +O(16),O(16),O(16),O(16), + +/* 32 dummy rates (same as 15 3) */ +O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16), +O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16), +O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16), +O(16),O(16),O(16),O(16),O(16),O(16),O(16),O(16) + +}; +#undef O + +/*rate 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15*/ +/*shift 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0 */ +/*mask 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1, 0, 0, 0, 0, 0 */ + +#define O(a) (a*1) +static const UINT8 eg_rate_shift[32+64+32]={ /* Envelope Generator counter shifts (32 + 64 rates + 32 RKS) */ +/* 32 infinite time rates */ +/* O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), +O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), +O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), +O(0),O(0),O(0),O(0),O(0),O(0),O(0),O(0), */ + +/* fixed (should be the same as rate 0, even if it makes no difference since increment value is 0 for these rates) */ +O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), +O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), +O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), +O(11),O(11),O(11),O(11),O(11),O(11),O(11),O(11), + +/* rates 00-11 */ +O(11),O(11),O(11),O(11), +O(10),O(10),O(10),O(10), +O( 9),O( 9),O( 9),O( 9), +O( 8),O( 8),O( 8),O( 8), +O( 7),O( 7),O( 7),O( 7), +O( 6),O( 6),O( 6),O( 6), +O( 5),O( 5),O( 5),O( 5), +O( 4),O( 4),O( 4),O( 4), +O( 3),O( 3),O( 3),O( 3), +O( 2),O( 2),O( 2),O( 2), +O( 1),O( 1),O( 1),O( 1), +O( 0),O( 0),O( 0),O( 0), + +/* rate 12 */ +O( 0),O( 0),O( 0),O( 0), + +/* rate 13 */ +O( 0),O( 0),O( 0),O( 0), + +/* rate 14 */ +O( 0),O( 0),O( 0),O( 0), + +/* rate 15 */ +O( 0),O( 0),O( 0),O( 0), + +/* 32 dummy rates (same as 15 3) */ +O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), +O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), +O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0), +O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0),O( 0) + +}; +#undef O + +static const UINT8 dt_tab[4 * 32]={ +/* this is YM2151 and YM2612 phase increment data (in 10.10 fixed point format)*/ +/* FD=0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* FD=1 */ + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8, +/* FD=2 */ + 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, + 5, 6, 6, 7, 8, 8, 9,10,11,12,13,14,16,16,16,16, +/* FD=3 */ + 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, + 8 , 8, 9,10,11,12,13,14,16,17,19,20,22,22,22,22 +}; + + +/* OPN key frequency number -> key code follow table */ +/* fnum higher 4bit -> keycode lower 2bit */ +static const UINT8 opn_fktable[16] = {0,0,0,0,0,0,0,1,2,3,3,3,3,3,3,3}; + + +/* 8 LFO speed parameters */ +/* each value represents number of samples that one LFO level will last for */ +static const UINT32 lfo_samples_per_step[8] = {108, 77, 71, 67, 62, 44, 8, 5}; + + +/*There are 4 different LFO AM depths available, they are: + 0 dB, 1.4 dB, 5.9 dB, 11.8 dB + Here is how it is generated (in EG steps): + + 11.8 dB = 0, 2, 4, 6, 8, 10,12,14,16...126,126,124,122,120,118,....4,2,0 + 5.9 dB = 0, 1, 2, 3, 4, 5, 6, 7, 8....63, 63, 62, 61, 60, 59,.....2,1,0 + 1.4 dB = 0, 0, 0, 0, 1, 1, 1, 1, 2,...15, 15, 15, 15, 14, 14,.....0,0,0 + + (1.4 dB is loosing precision as you can see) + + It's implemented as generator from 0..126 with step 2 then a shift + right N times, where N is: + 8 for 0 dB + 3 for 1.4 dB + 1 for 5.9 dB + 0 for 11.8 dB +*/ +static const UINT8 lfo_ams_depth_shift[4] = {8, 3, 1, 0}; + + + +/*There are 8 different LFO PM depths available, they are: + 0, 3.4, 6.7, 10, 14, 20, 40, 80 (cents) + + Modulation level at each depth depends on F-NUMBER bits: 4,5,6,7,8,9,10 + (bits 8,9,10 = FNUM MSB from OCT/FNUM register) + + Here we store only first quarter (positive one) of full waveform. + Full table (lfo_pm_table) containing all 128 waveforms is build + at run (init) time. + + One value in table below represents 4 (four) basic LFO steps + (1 PM step = 4 AM steps). + + For example: + at LFO SPEED=0 (which is 108 samples per basic LFO step) + one value from "lfo_pm_output" table lasts for 432 consecutive + samples (4*108=432) and one full LFO waveform cycle lasts for 13824 + samples (32*432=13824; 32 because we store only a quarter of whole + waveform in the table below) +*/ +static const UINT8 lfo_pm_output[7*8][8]={ +/* 7 bits meaningful (of F-NUMBER), 8 LFO output levels per one depth (out of 32), 8 LFO depths */ +/* FNUM BIT 4: 000 0001xxxx */ +/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 3 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 4 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 5 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 6 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 7 */ {0, 0, 0, 0, 1, 1, 1, 1}, + +/* FNUM BIT 5: 000 0010xxxx */ +/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 3 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 4 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 5 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 6 */ {0, 0, 0, 0, 1, 1, 1, 1}, +/* DEPTH 7 */ {0, 0, 1, 1, 2, 2, 2, 3}, + +/* FNUM BIT 6: 000 0100xxxx */ +/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 3 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 4 */ {0, 0, 0, 0, 0, 0, 0, 1}, +/* DEPTH 5 */ {0, 0, 0, 0, 1, 1, 1, 1}, +/* DEPTH 6 */ {0, 0, 1, 1, 2, 2, 2, 3}, +/* DEPTH 7 */ {0, 0, 2, 3, 4, 4, 5, 6}, + +/* FNUM BIT 7: 000 1000xxxx */ +/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 1 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 2 */ {0, 0, 0, 0, 0, 0, 1, 1}, +/* DEPTH 3 */ {0, 0, 0, 0, 1, 1, 1, 1}, +/* DEPTH 4 */ {0, 0, 0, 1, 1, 1, 1, 2}, +/* DEPTH 5 */ {0, 0, 1, 1, 2, 2, 2, 3}, +/* DEPTH 6 */ {0, 0, 2, 3, 4, 4, 5, 6}, +/* DEPTH 7 */ {0, 0, 4, 6, 8, 8, 0xa, 0xc}, + +/* FNUM BIT 8: 001 0000xxxx */ +/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 1 */ {0, 0, 0, 0, 1, 1, 1, 1}, +/* DEPTH 2 */ {0, 0, 0, 1, 1, 1, 2, 2}, +/* DEPTH 3 */ {0, 0, 1, 1, 2, 2, 3, 3}, +/* DEPTH 4 */ {0, 0, 1, 2, 2, 2, 3, 4}, +/* DEPTH 5 */ {0, 0, 2, 3, 4, 4, 5, 6}, +/* DEPTH 6 */ {0, 0, 4, 6, 8, 8, 0xa, 0xc}, +/* DEPTH 7 */ {0, 0, 8, 0xc,0x10,0x10,0x14,0x18}, + +/* FNUM BIT 9: 010 0000xxxx */ +/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 1 */ {0, 0, 0, 0, 2, 2, 2, 2}, +/* DEPTH 2 */ {0, 0, 0, 2, 2, 2, 4, 4}, +/* DEPTH 3 */ {0, 0, 2, 2, 4, 4, 6, 6}, +/* DEPTH 4 */ {0, 0, 2, 4, 4, 4, 6, 8}, +/* DEPTH 5 */ {0, 0, 4, 6, 8, 8, 0xa, 0xc}, +/* DEPTH 6 */ {0, 0, 8, 0xc,0x10,0x10,0x14,0x18}, +/* DEPTH 7 */ {0, 0,0x10,0x18,0x20,0x20,0x28,0x30}, + +/* FNUM BIT10: 100 0000xxxx */ +/* DEPTH 0 */ {0, 0, 0, 0, 0, 0, 0, 0}, +/* DEPTH 1 */ {0, 0, 0, 0, 4, 4, 4, 4}, +/* DEPTH 2 */ {0, 0, 0, 4, 4, 4, 8, 8}, +/* DEPTH 3 */ {0, 0, 4, 4, 8, 8, 0xc, 0xc}, +/* DEPTH 4 */ {0, 0, 4, 8, 8, 8, 0xc,0x10}, +/* DEPTH 5 */ {0, 0, 8, 0xc,0x10,0x10,0x14,0x18}, +/* DEPTH 6 */ {0, 0,0x10,0x18,0x20,0x20,0x28,0x30}, +/* DEPTH 7 */ {0, 0,0x20,0x30,0x40,0x40,0x50,0x60}, + +}; + +/* all 128 LFO PM waveforms */ +static INT32 lfo_pm_table[128*8*32]; /* 128 combinations of 7 bits meaningful (of F-NUMBER), 8 LFO depths, 32 LFO output levels per one depth */ + +/* register number to channel number , slot offset */ +#define OPN_CHAN(N) (N&3) +#define OPN_SLOT(N) ((N>>2)&3) + +/* slot number */ +#define SLOT1 0 +#define SLOT2 2 +#define SLOT3 1 +#define SLOT4 3 + +/* struct describing a single operator (SLOT) */ +typedef struct +{ + INT32 *DT; /* detune :dt_tab[DT] */ + UINT8 KSR; /* key scale rate :3-KSR */ + UINT32 ar; /* attack rate */ + UINT32 d1r; /* decay rate */ + UINT32 d2r; /* sustain rate */ + UINT32 rr; /* release rate */ + UINT8 ksr; /* key scale rate :kcode>>(3-KSR) */ + UINT32 mul; /* multiple :ML_TABLE[ML] */ + + /* Phase Generator */ + UINT32 phase; /* phase counter */ + INT32 Incr; /* phase step */ + + /* Envelope Generator */ + UINT8 state; /* phase type */ + UINT32 tl; /* total level: TL << 3 */ + INT32 volume; /* envelope counter */ + UINT32 sl; /* sustain level:sl_table[SL] */ + UINT32 vol_out; /* current output from EG circuit (without AM from LFO) */ + + UINT8 eg_sh_ar; /* (attack state) */ + UINT8 eg_sel_ar; /* (attack state) */ + UINT8 eg_sh_d1r; /* (decay state) */ + UINT8 eg_sel_d1r; /* (decay state) */ + UINT8 eg_sh_d2r; /* (sustain state) */ + UINT8 eg_sel_d2r; /* (sustain state) */ + UINT8 eg_sh_rr; /* (release state) */ + UINT8 eg_sel_rr; /* (release state) */ + + UINT8 ssg; /* SSG-EG waveform */ + UINT8 ssgn; /* SSG-EG negated output */ + + UINT8 key; /* 0=last key was KEY OFF, 1=KEY ON */ + + /* LFO */ + UINT32 AMmask; /* AM enable flag */ + +} FM_SLOT; + +typedef struct +{ + FM_SLOT SLOT[4]; /* four SLOTs (operators) */ + + UINT8 ALGO; /* algorithm */ + UINT8 FB; /* feedback shift */ + INT32 op1_out[2]; /* op1 output for feedback */ + + INT32 *connect1; /* SLOT1 output pointer */ + INT32 *connect3; /* SLOT3 output pointer */ + INT32 *connect2; /* SLOT2 output pointer */ + INT32 *connect4; /* SLOT4 output pointer */ + + INT32 *mem_connect; /* where to put the delayed sample (MEM) */ + INT32 mem_value; /* delayed sample (MEM) value */ + + INT32 pms; /* channel PMS */ + UINT8 ams; /* channel AMS */ + + UINT32 fc; /* fnum,blk */ + UINT8 kcode; /* key code */ + UINT32 block_fnum; /* blk/fnum value (for LFO PM calculations) */ +} FM_CH; + + +typedef struct +{ + UINT16 address; /* address register */ + UINT8 status; /* status flag */ + UINT32 mode; /* mode CSM / 3SLOT */ + UINT8 fn_h; /* freq latch */ + INT32 TA; /* timer a value */ + INT32 TAL; /* timer a base */ + INT32 TAC; /* timer a counter */ + INT32 TB; /* timer b value */ + INT32 TBL; /* timer b base */ + INT32 TBC; /* timer b counter */ + INT32 dt_tab[8][32]; /* DeTune table */ + +} FM_ST; + + +/***********************************************************/ +/* OPN unit */ +/***********************************************************/ + +/* OPN 3slot struct */ +typedef struct +{ + UINT32 fc[3]; /* fnum3,blk3: calculated */ + UINT8 fn_h; /* freq3 latch */ + UINT8 kcode[3]; /* key code */ + UINT32 block_fnum[3]; /* current fnum value for this slot (can be different betweeen slots of one channel in 3slot mode) */ + UINT8 key_csm; /* CSM mode Key-ON flag */ + +} FM_3SLOT; + +/* OPN/A/B common state */ +typedef struct +{ + FM_ST ST; /* general state */ + FM_3SLOT SL3; /* 3 slot mode state */ + unsigned int pan[6*2]; /* fm channels output masks (0xffffffff = enable) */ + + /* EG */ + UINT32 eg_cnt; /* global envelope generator counter */ + UINT32 eg_timer; /* global envelope generator counter works at frequency = chipclock/144/3 */ + + /* LFO */ + UINT8 lfo_cnt; /* current LFO phase (out of 128) */ + UINT32 lfo_timer; /* current LFO phase runs at LFO frequency */ + UINT32 lfo_timer_overflow; /* LFO timer overflows every N samples (depends on LFO frequency) */ + UINT32 LFO_AM; /* current LFO AM step */ + UINT32 LFO_PM; /* current LFO PM step */ + +} FM_OPN; + +/***********************************************************/ +/* YM2612 chip */ +/***********************************************************/ +typedef struct +{ + FM_CH CH[6]; /* channel state */ + UINT8 dacen; /* DAC mode */ + INT32 dacout; /* DAC output */ + FM_OPN OPN; /* OPN state */ + +} YM2612; + +/* emulated chip */ +static YM2612 ym2612; + +/* current chip state */ +static INT32 m2,c1,c2; /* Phase Modulation input for operators 2,3,4 */ +static INT32 mem; /* one sample delay memory */ +static INT32 out_fm[6]; /* outputs of working channels */ + +/* chip type */ +static UINT32 op_mask[8][4]; /* operator output bitmasking (DAC quantization) */ +static int chip_type = YM2612_DISCRETE; + + +INLINE void FM_KEYON(FM_CH *CH , int s ) +{ + FM_SLOT *SLOT = &CH->SLOT[s]; + + if (!SLOT->key && !ym2612.OPN.SL3.key_csm) + { + /* restart Phase Generator */ + SLOT->phase = 0; + + /* reset SSG-EG inversion flag */ + SLOT->ssgn = 0; + + if ((SLOT->ar + SLOT->ksr) < 94 /*32+62*/) + { + SLOT->state = (SLOT->volume <= MIN_ATT_INDEX) ? ((SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC) : EG_ATT; + } + else + { + /* force attenuation level to 0 */ + SLOT->volume = MIN_ATT_INDEX; + + /* directly switch to Decay (or Sustain) */ + SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; + } + + /* recalculate EG output */ + if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + + SLOT->key = 1; +} + +INLINE void FM_KEYOFF(FM_CH *CH , int s ) +{ + FM_SLOT *SLOT = &CH->SLOT[s]; + + if (SLOT->key && !ym2612.OPN.SL3.key_csm) + { + if (SLOT->state>EG_REL) + { + SLOT->state = EG_REL; /* phase -> Release */ + + /* SSG-EG specific update */ + if (SLOT->ssg&0x08) + { + /* convert EG attenuation level */ + if (SLOT->ssgn ^ (SLOT->ssg&0x04)) + SLOT->volume = (0x200 - SLOT->volume) & MAX_ATT_INDEX; + + /* force EG attenuation level */ + if (SLOT->volume >= 0x200) + { + SLOT->volume = MAX_ATT_INDEX; + SLOT->state = EG_OFF; + } + + /* recalculate EG output */ + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + } + } + + SLOT->key = 0; +} + +INLINE void FM_KEYON_CSM(FM_CH *CH , int s ) +{ + FM_SLOT *SLOT = &CH->SLOT[s]; + + if (!SLOT->key && !ym2612.OPN.SL3.key_csm) + { + /* restart Phase Generator */ + SLOT->phase = 0; + + /* reset SSG-EG inversion flag */ + SLOT->ssgn = 0; + + if ((SLOT->ar + SLOT->ksr) < 94 /*32+62*/) + { + SLOT->state = (SLOT->volume <= MIN_ATT_INDEX) ? ((SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC) : EG_ATT; + } + else + { + /* force attenuation level to 0 */ + SLOT->volume = MIN_ATT_INDEX; + + /* directly switch to Decay (or Sustain) */ + SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; + } + + /* recalculate EG output */ + if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } +} + +INLINE void FM_KEYOFF_CSM(FM_CH *CH , int s ) +{ + FM_SLOT *SLOT = &CH->SLOT[s]; + if (!SLOT->key) + { + if (SLOT->state>EG_REL) + { + SLOT->state = EG_REL; /* phase -> Release */ + + /* SSG-EG specific update */ + if (SLOT->ssg&0x08) + { + /* convert EG attenuation level */ + if (SLOT->ssgn ^ (SLOT->ssg&0x04)) + SLOT->volume = (0x200 - SLOT->volume) & MAX_ATT_INDEX; + + /* force EG attenuation level */ + if (SLOT->volume >= 0x200) + { + SLOT->volume = MAX_ATT_INDEX; + SLOT->state = EG_OFF; + } + + /* recalculate EG output */ + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + } + } +} + +/* CSM Key Controll */ +INLINE void CSMKeyControll(FM_CH *CH) +{ + /* all key ON (verified by Nemesis on real hardware) */ + FM_KEYON_CSM(CH,SLOT1); + FM_KEYON_CSM(CH,SLOT2); + FM_KEYON_CSM(CH,SLOT3); + FM_KEYON_CSM(CH,SLOT4); + ym2612.OPN.SL3.key_csm = 1; +} + +INLINE void INTERNAL_TIMER_A() +{ + if (ym2612.OPN.ST.mode & 0x01) + { + ym2612.OPN.ST.TAC--; + if (ym2612.OPN.ST.TAC <= 0) + { + /* set status (if enabled) */ + if (ym2612.OPN.ST.mode & 0x04) + ym2612.OPN.ST.status |= 0x01; + + /* reload the counter */ + ym2612.OPN.ST.TAC = ym2612.OPN.ST.TAL; + + /* CSM mode auto key on */ + if ((ym2612.OPN.ST.mode & 0xC0) == 0x80) + CSMKeyControll(&ym2612.CH[2]); + } + } +} + +INLINE void INTERNAL_TIMER_B(int step) +{ + if (ym2612.OPN.ST.mode & 0x02) + { + ym2612.OPN.ST.TBC-=step; + if (ym2612.OPN.ST.TBC <= 0) + { + /* set status (if enabled) */ + if (ym2612.OPN.ST.mode & 0x08) + ym2612.OPN.ST.status |= 0x02; + + /* reload the counter */ + do + { + ym2612.OPN.ST.TBC += ym2612.OPN.ST.TBL; + } + while (ym2612.OPN.ST.TBC <= 0); + } + } +} + +/* OPN Mode Register Write */ +INLINE void set_timers(int v ) +{ + /* b7 = CSM MODE */ + /* b6 = 3 slot mode */ + /* b5 = reset b */ + /* b4 = reset a */ + /* b3 = timer enable b */ + /* b2 = timer enable a */ + /* b1 = load b */ + /* b0 = load a */ + + if ((ym2612.OPN.ST.mode ^ v) & 0xC0) + { + /* phase increment need to be recalculated */ + ym2612.CH[2].SLOT[SLOT1].Incr=-1; + + /* CSM mode disabled and CSM key ON active*/ + if (((v & 0xC0) != 0x80) && ym2612.OPN.SL3.key_csm) + { + /* CSM Mode Key OFF (verified by Nemesis on real hardware) */ + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT1); + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT2); + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT3); + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT4); + ym2612.OPN.SL3.key_csm = 0; + } + } + + /* reload Timers */ + if ((v&1) && !(ym2612.OPN.ST.mode&1)) + ym2612.OPN.ST.TAC = ym2612.OPN.ST.TAL; + if ((v&2) && !(ym2612.OPN.ST.mode&2)) + ym2612.OPN.ST.TBC = ym2612.OPN.ST.TBL; + + /* reset Timers flags */ + ym2612.OPN.ST.status &= (~v >> 4); + + ym2612.OPN.ST.mode = v; +} + +/* set algorithm connection */ +INLINE void setup_connection( FM_CH *CH, int ch ) +{ + INT32 *carrier = &out_fm[ch]; + + INT32 **om1 = &CH->connect1; + INT32 **om2 = &CH->connect3; + INT32 **oc1 = &CH->connect2; + + INT32 **memc = &CH->mem_connect; + + switch( CH->ALGO ){ + case 0: + /* M1---C1---MEM---M2---C2---OUT */ + *om1 = &c1; + *oc1 = &mem; + *om2 = &c2; + *memc= &m2; + break; + case 1: + /* M1------+-MEM---M2---C2---OUT */ + /* C1-+ */ + *om1 = &mem; + *oc1 = &mem; + *om2 = &c2; + *memc= &m2; + break; + case 2: + /* M1-----------------+-C2---OUT */ + /* C1---MEM---M2-+ */ + *om1 = &c2; + *oc1 = &mem; + *om2 = &c2; + *memc= &m2; + break; + case 3: + /* M1---C1---MEM------+-C2---OUT */ + /* M2-+ */ + *om1 = &c1; + *oc1 = &mem; + *om2 = &c2; + *memc= &c2; + break; + case 4: + /* M1---C1-+-OUT */ + /* M2---C2-+ */ + /* MEM: not used */ + *om1 = &c1; + *oc1 = carrier; + *om2 = &c2; + *memc= &mem; /* store it anywhere where it will not be used */ + break; + case 5: + /* +----C1----+ */ + /* M1-+-MEM---M2-+-OUT */ + /* +----C2----+ */ + *om1 = 0; /* special mark */ + *oc1 = carrier; + *om2 = carrier; + *memc= &m2; + break; + case 6: + /* M1---C1-+ */ + /* M2-+-OUT */ + /* C2-+ */ + /* MEM: not used */ + *om1 = &c1; + *oc1 = carrier; + *om2 = carrier; + *memc= &mem; /* store it anywhere where it will not be used */ + break; + case 7: + /* M1-+ */ + /* C1-+-OUT */ + /* M2-+ */ + /* C2-+ */ + /* MEM: not used*/ + *om1 = carrier; + *oc1 = carrier; + *om2 = carrier; + *memc= &mem; /* store it anywhere where it will not be used */ + break; + } + + CH->connect4 = carrier; +} + +/* set detune & multiple */ +INLINE void set_det_mul(FM_CH *CH,FM_SLOT *SLOT,int v) +{ + SLOT->mul = (v&0x0f)? (v&0x0f)*2 : 1; + SLOT->DT = ym2612.OPN.ST.dt_tab[(v>>4)&7]; + CH->SLOT[SLOT1].Incr=-1; +} + +/* set total level */ +INLINE void set_tl(FM_SLOT *SLOT , int v) +{ + SLOT->tl = (v&0x7f)<<(ENV_BITS-7); /* 7bit TL */ + + /* recalculate EG output */ + if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04)) && (SLOT->state > EG_REL)) + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; +} + +/* set attack rate & key scale */ +INLINE void set_ar_ksr(FM_CH *CH,FM_SLOT *SLOT,int v) +{ + UINT8 old_KSR = SLOT->KSR; + + SLOT->ar = (v&0x1f) ? 32 + ((v&0x1f)<<1) : 0; + + SLOT->KSR = 3-(v>>6); + if (SLOT->KSR != old_KSR) + { + CH->SLOT[SLOT1].Incr=-1; + } + + /* Even if it seems unnecessary to do it here, it could happen that KSR and KC */ + /* are modified but the resulted SLOT->ksr value (kc >> SLOT->KSR) remains unchanged. */ + /* In such case, Attack Rate would not be recalculated by "refresh_fc_eg_slot". */ + /* This actually fixes the intro of "The Adventures of Batman & Robin" (Eke-Eke) */ + if ((SLOT->ar + SLOT->ksr) < (32+62)) + { + SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + SLOT->ksr ]; + SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + SLOT->ksr ]; + } + else + { + /* verified by Nemesis on real hardware (Attack phase is blocked) */ + SLOT->eg_sh_ar = 0; + SLOT->eg_sel_ar = 18*RATE_STEPS; + } + } + +/* set decay rate */ +INLINE void set_dr(FM_SLOT *SLOT,int v) +{ + SLOT->d1r = (v&0x1f) ? 32 + ((v&0x1f)<<1) : 0; + + SLOT->eg_sh_d1r = eg_rate_shift [SLOT->d1r + SLOT->ksr]; + SLOT->eg_sel_d1r= eg_rate_select[SLOT->d1r + SLOT->ksr]; + +} + +/* set sustain rate */ +INLINE void set_sr(FM_SLOT *SLOT,int v) +{ + SLOT->d2r = (v&0x1f) ? 32 + ((v&0x1f)<<1) : 0; + + SLOT->eg_sh_d2r = eg_rate_shift [SLOT->d2r + SLOT->ksr]; + SLOT->eg_sel_d2r= eg_rate_select[SLOT->d2r + SLOT->ksr]; +} + +/* set release rate */ +INLINE void set_sl_rr(FM_SLOT *SLOT,int v) +{ + SLOT->sl = sl_table[ v>>4 ]; + + /* check EG state changes */ + if ((SLOT->state == EG_DEC) && (SLOT->volume >= (INT32)(SLOT->sl))) + SLOT->state = EG_SUS; + + SLOT->rr = 34 + ((v&0x0f)<<2); + + SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + SLOT->ksr]; + SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + SLOT->ksr]; +} + +/* advance LFO to next sample */ +INLINE void advance_lfo() +{ + if (ym2612.OPN.lfo_timer_overflow) /* LFO enabled ? */ + { + /* increment LFO timer (every samples) */ + ym2612.OPN.lfo_timer ++; + + /* when LFO is enabled, one level will last for 108, 77, 71, 67, 62, 44, 8 or 5 samples */ + if (ym2612.OPN.lfo_timer >= ym2612.OPN.lfo_timer_overflow) + { + ym2612.OPN.lfo_timer = 0; + + /* There are 128 LFO steps */ + ym2612.OPN.lfo_cnt = ( ym2612.OPN.lfo_cnt + 1 ) & 127; + + /* triangle (inverted) */ + /* AM: from 126 to 0 step -2, 0 to 126 step +2 */ + if (ym2612.OPN.lfo_cnt<64) + ym2612.OPN.LFO_AM = (ym2612.OPN.lfo_cnt ^ 63) << 1; + else + ym2612.OPN.LFO_AM = (ym2612.OPN.lfo_cnt & 63) << 1; + + /* PM works with 4 times slower clock */ + ym2612.OPN.LFO_PM = ym2612.OPN.lfo_cnt >> 2; + } + } +} + + +INLINE void advance_eg_channels(FM_CH *CH, unsigned int eg_cnt) +{ + unsigned int i = 6; /* six channels */ + unsigned int j; + FM_SLOT *SLOT; + + do + { + SLOT = &CH->SLOT[SLOT1]; + j = 4; /* four operators per channel */ + do + { + switch(SLOT->state) + { + case EG_ATT: /* attack phase */ + { + if (!(eg_cnt & ((1<eg_sh_ar)-1))) + { + /* update attenuation level */ + SLOT->volume += (~SLOT->volume * (eg_inc[SLOT->eg_sel_ar + ((eg_cnt>>SLOT->eg_sh_ar)&7)]))>>4; + + /* check phase transition*/ + if (SLOT->volume <= MIN_ATT_INDEX) + { + SLOT->volume = MIN_ATT_INDEX; + SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; /* special case where SL=0 */ + } + + /* recalculate EG output */ + if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) /* SSG-EG Output Inversion */ + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + break; + } + + case EG_DEC: /* decay phase */ + { + if (!(eg_cnt & ((1<eg_sh_d1r)-1))) + { + /* SSG EG type */ + if (SLOT->ssg&0x08) + { + /* update attenuation level */ + if (SLOT->volume < 0x200) + { + SLOT->volume += 4 * eg_inc[SLOT->eg_sel_d1r + ((eg_cnt>>SLOT->eg_sh_d1r)&7)]; + + /* recalculate EG output */ + if (SLOT->ssgn ^ (SLOT->ssg&0x04)) /* SSG-EG Output Inversion */ + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + } + else + { + /* update attenuation level */ + SLOT->volume += eg_inc[SLOT->eg_sel_d1r + ((eg_cnt>>SLOT->eg_sh_d1r)&7)]; + + /* recalculate EG output */ + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + + /* check phase transition*/ + if (SLOT->volume >= (INT32)(SLOT->sl)) + SLOT->state = EG_SUS; + } + break; + } + + case EG_SUS: /* sustain phase */ + { + if (!(eg_cnt & ((1<eg_sh_d2r)-1))) + { + /* SSG EG type */ + if (SLOT->ssg&0x08) + { + /* update attenuation level */ + if (SLOT->volume < 0x200) + { + SLOT->volume += 4 * eg_inc[SLOT->eg_sel_d2r + ((eg_cnt>>SLOT->eg_sh_d2r)&7)]; + + /* recalculate EG output */ + if (SLOT->ssgn ^ (SLOT->ssg&0x04)) /* SSG-EG Output Inversion */ + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + } + else + { + /* update attenuation level */ + SLOT->volume += eg_inc[SLOT->eg_sel_d2r + ((eg_cnt>>SLOT->eg_sh_d2r)&7)]; + + /* check phase transition*/ + if ( SLOT->volume >= MAX_ATT_INDEX ) + SLOT->volume = MAX_ATT_INDEX; + /* do not change SLOT->state (verified on real chip) */ + + /* recalculate EG output */ + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + } + break; + } + + case EG_REL: /* release phase */ + { + if (!(eg_cnt & ((1<eg_sh_rr)-1))) + { + /* SSG EG type */ + if (SLOT->ssg&0x08) + { + /* update attenuation level */ + if (SLOT->volume < 0x200) + SLOT->volume += 4 * eg_inc[SLOT->eg_sel_rr + ((eg_cnt>>SLOT->eg_sh_rr)&7)]; + + /* check phase transition */ + if (SLOT->volume >= 0x200) + { + SLOT->volume = MAX_ATT_INDEX; + SLOT->state = EG_OFF; + } + } + else + { + /* update attenuation level */ + SLOT->volume += eg_inc[SLOT->eg_sel_rr + ((eg_cnt>>SLOT->eg_sh_rr)&7)]; + + /* check phase transition*/ + if (SLOT->volume >= MAX_ATT_INDEX) + { + SLOT->volume = MAX_ATT_INDEX; + SLOT->state = EG_OFF; + } + } + + /* recalculate EG output */ + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + + } + break; + } + } + + /* next slot */ + SLOT++; + } while (--j); + + /* next channel */ + CH++; + } while (--i); +} + +/* SSG-EG update process */ +/* The behavior is based upon Nemesis tests on real hardware */ +/* This is actually executed before each samples */ +INLINE void update_ssg_eg_channels(FM_CH *CH) +{ + unsigned int i = 6; /* six channels */ + unsigned int j; + FM_SLOT *SLOT; + + do + { + j = 4; /* four operators per channel */ + SLOT = &CH->SLOT[SLOT1]; + + do + { + /* detect SSG-EG transition */ + /* this is not required during release phase as the attenuation has been forced to MAX and output invert flag is not used */ + /* if an Attack Phase is programmed, inversion can occur on each sample */ + if ((SLOT->ssg & 0x08) && (SLOT->volume >= 0x200) && (SLOT->state > EG_REL)) + { + if (SLOT->ssg & 0x01) /* bit 0 = hold SSG-EG */ + { + /* set inversion flag */ + if (SLOT->ssg & 0x02) + SLOT->ssgn = 4; + + /* force attenuation level during decay phases */ + if ((SLOT->state != EG_ATT) && !(SLOT->ssgn ^ (SLOT->ssg & 0x04))) + SLOT->volume = MAX_ATT_INDEX; + } + else /* loop SSG-EG */ + { + /* toggle output inversion flag or reset Phase Generator */ + if (SLOT->ssg & 0x02) + SLOT->ssgn ^= 4; + else + SLOT->phase = 0; + + /* same as Key ON */ + if (SLOT->state != EG_ATT) + { + if ((SLOT->ar + SLOT->ksr) < 94 /*32+62*/) + { + SLOT->state = (SLOT->volume <= MIN_ATT_INDEX) ? ((SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC) : EG_ATT; + } + else + { + /* Attack Rate is maximal: directly switch to Decay or Substain */ + SLOT->volume = MIN_ATT_INDEX; + SLOT->state = (SLOT->sl == MIN_ATT_INDEX) ? EG_SUS : EG_DEC; + } + } + } + + /* recalculate EG output */ + if (SLOT->ssgn ^ (SLOT->ssg&0x04)) + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + + /* next slot */ + SLOT++; + } while (--j); + + /* next channel */ + CH++; + } while (--i); +} + +INLINE void update_phase_lfo_slot(FM_SLOT *SLOT, UINT32 pm, UINT8 kc, UINT32 fc) +{ + INT32 lfo_fn_offset = lfo_pm_table[((fc & 0x7f0) << 4) + pm]; + + if (lfo_fn_offset) /* LFO phase modulation active */ + { + /* block is not modified by LFO PM */ + UINT8 blk = fc >> 11; + + /* LFO works with one more bit of a precision (12-bit) */ + fc = ((fc << 1) + lfo_fn_offset) & 0xfff; + + /* (frequency) phase increment counter (17-bit) */ + fc = (((fc << blk) >> 2) + SLOT->DT[kc]) & DT_MASK; + + /* update phase */ + SLOT->phase += ((fc * SLOT->mul) >> 1); + } + else /* LFO phase modulation = zero */ + { + SLOT->phase += SLOT->Incr; + } +} + +INLINE void update_phase_lfo_channel(FM_CH *CH) +{ + UINT32 fc = CH->block_fnum; + + INT32 lfo_fn_offset = lfo_pm_table[((fc & 0x7f0) << 4) + CH->pms + ym2612.OPN.LFO_PM]; + + if (lfo_fn_offset) /* LFO phase modulation active */ + { + UINT32 finc; + + /* block & keyscale code are not modified by LFO PM */ + UINT8 blk = fc >> 11; + UINT8 kc = CH->kcode; + + /* LFO works with one more bit of a precision (12-bit) */ + fc = ((fc << 1) + lfo_fn_offset) & 0xfff; + + /* (frequency) phase increment counter (17-bit) */ + fc = (fc << blk) >> 2; + + /* apply DETUNE & MUL operator specific values */ + finc = (fc + CH->SLOT[SLOT1].DT[kc]) & DT_MASK; + CH->SLOT[SLOT1].phase += ((finc * CH->SLOT[SLOT1].mul) >> 1); + + finc = (fc + CH->SLOT[SLOT2].DT[kc]) & DT_MASK; + CH->SLOT[SLOT2].phase += ((finc * CH->SLOT[SLOT2].mul) >> 1); + + finc = (fc + CH->SLOT[SLOT3].DT[kc]) & DT_MASK; + CH->SLOT[SLOT3].phase += ((finc * CH->SLOT[SLOT3].mul) >> 1); + + finc = (fc + CH->SLOT[SLOT4].DT[kc]) & DT_MASK; + CH->SLOT[SLOT4].phase += ((finc * CH->SLOT[SLOT4].mul) >> 1); + } + else /* LFO phase modulation = zero */ + { + CH->SLOT[SLOT1].phase += CH->SLOT[SLOT1].Incr; + CH->SLOT[SLOT2].phase += CH->SLOT[SLOT2].Incr; + CH->SLOT[SLOT3].phase += CH->SLOT[SLOT3].Incr; + CH->SLOT[SLOT4].phase += CH->SLOT[SLOT4].Incr; + } +} + +/* update phase increment and envelope generator */ +INLINE void refresh_fc_eg_slot(FM_SLOT *SLOT , unsigned int fc , unsigned int kc ) +{ + /* add detune value */ + fc += SLOT->DT[kc]; + + /* (frequency) phase overflow (credits to Nemesis) */ + fc &= DT_MASK; + + /* (frequency) phase increment counter */ + SLOT->Incr = (fc * SLOT->mul) >> 1; + + /* ksr */ + kc = kc >> SLOT->KSR; + + if( SLOT->ksr != kc ) + { + SLOT->ksr = kc; + + /* recalculate envelope generator rates */ + if ((SLOT->ar + kc) < (32+62)) + { + SLOT->eg_sh_ar = eg_rate_shift [SLOT->ar + kc ]; + SLOT->eg_sel_ar = eg_rate_select[SLOT->ar + kc ]; + } + else + { + /* verified by Nemesis on real hardware (Attack phase is blocked) */ + SLOT->eg_sh_ar = 0; + SLOT->eg_sel_ar = 18*RATE_STEPS; + } + + SLOT->eg_sh_d1r = eg_rate_shift [SLOT->d1r + kc]; + SLOT->eg_sel_d1r= eg_rate_select[SLOT->d1r + kc]; + + SLOT->eg_sh_d2r = eg_rate_shift [SLOT->d2r + kc]; + SLOT->eg_sel_d2r= eg_rate_select[SLOT->d2r + kc]; + + SLOT->eg_sh_rr = eg_rate_shift [SLOT->rr + kc]; + SLOT->eg_sel_rr = eg_rate_select[SLOT->rr + kc]; + } +} + +/* update phase increment counters */ +INLINE void refresh_fc_eg_chan(FM_CH *CH ) +{ + if( CH->SLOT[SLOT1].Incr==-1) + { + int fc = CH->fc; + int kc = CH->kcode; + refresh_fc_eg_slot(&CH->SLOT[SLOT1] , fc , kc ); + refresh_fc_eg_slot(&CH->SLOT[SLOT2] , fc , kc ); + refresh_fc_eg_slot(&CH->SLOT[SLOT3] , fc , kc ); + refresh_fc_eg_slot(&CH->SLOT[SLOT4] , fc , kc ); + } +} + +#define volume_calc(OP) ((OP)->vol_out + (AM & (OP)->AMmask)) + +INLINE signed int op_calc(UINT32 phase, unsigned int env, unsigned int pm, unsigned int opmask) +{ + UINT32 p = (env<<3) + sin_tab[ ( (phase >> SIN_BITS) + (pm >> 1) ) & SIN_MASK ]; + + if (p >= TL_TAB_LEN) + return 0; + return (tl_tab[p] & opmask); +} + +INLINE signed int op_calc1(UINT32 phase, unsigned int env, unsigned int pm, unsigned int opmask) +{ + UINT32 p = (env<<3) + sin_tab[ ( ( phase >> SIN_BITS ) + pm ) & SIN_MASK ]; + + if (p >= TL_TAB_LEN) + return 0; + return (tl_tab[p] & opmask); +} + +INLINE void chan_calc(FM_CH *CH, int num) +{ + do + { + INT32 out = 0; + UINT32 AM = ym2612.OPN.LFO_AM >> CH->ams; + unsigned int eg_out = volume_calc(&CH->SLOT[SLOT1]); + UINT32 *mask = op_mask[CH->ALGO]; + + m2 = c1 = c2 = mem = 0; + + *CH->mem_connect = CH->mem_value; /* restore delayed sample (MEM) value to m2 or c2 */ + + if( eg_out < ENV_QUIET ) /* SLOT 1 */ + { + if (CH->FB < SIN_BITS) + out = (CH->op1_out[0] + CH->op1_out[1]) >> CH->FB; + + out = op_calc1(CH->SLOT[SLOT1].phase, eg_out, out, mask[0]); + } + + CH->op1_out[0] = CH->op1_out[1]; + CH->op1_out[1] = out; + + if( !CH->connect1 ){ + /* algorithm 5 */ + mem = c1 = c2 = out; + }else{ + /* other algorithms */ + *CH->connect1 = out; + } + + eg_out = volume_calc(&CH->SLOT[SLOT3]); + if( eg_out < ENV_QUIET ) /* SLOT 3 */ + *CH->connect3 += op_calc(CH->SLOT[SLOT3].phase, eg_out, m2, mask[2]); + + eg_out = volume_calc(&CH->SLOT[SLOT2]); + if( eg_out < ENV_QUIET ) /* SLOT 2 */ + *CH->connect2 += op_calc(CH->SLOT[SLOT2].phase, eg_out, c1, mask[1]); + + eg_out = volume_calc(&CH->SLOT[SLOT4]); + if( eg_out < ENV_QUIET ) /* SLOT 4 */ + *CH->connect4 += op_calc(CH->SLOT[SLOT4].phase, eg_out, c2, mask[3]); + + /* store current MEM */ + CH->mem_value = mem; + + /* update phase counters AFTER output calculations */ + if (CH->pms) + { + /* 3-slot mode */ + if ((ym2612.OPN.ST.mode & 0xC0) && (CH == &ym2612.CH[2])) + { + /* keyscale code is not modifiedby LFO */ + UINT8 kc = ym2612.CH[2].kcode; + UINT32 pm = ym2612.CH[2].pms + ym2612.OPN.LFO_PM; + update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT1], pm, kc, ym2612.OPN.SL3.block_fnum[1]); + update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT2], pm, kc, ym2612.OPN.SL3.block_fnum[2]); + update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT3], pm, kc, ym2612.OPN.SL3.block_fnum[0]); + update_phase_lfo_slot(&ym2612.CH[2].SLOT[SLOT4], pm, kc, ym2612.CH[2].block_fnum); + } + else + { + update_phase_lfo_channel(CH); + } + } + else /* no LFO phase modulation */ + { + CH->SLOT[SLOT1].phase += CH->SLOT[SLOT1].Incr; + CH->SLOT[SLOT2].phase += CH->SLOT[SLOT2].Incr; + CH->SLOT[SLOT3].phase += CH->SLOT[SLOT3].Incr; + CH->SLOT[SLOT4].phase += CH->SLOT[SLOT4].Incr; + } + + /* next channel */ + CH++; + } while (--num); +} + +/* write a OPN mode register 0x20-0x2f */ +INLINE void OPNWriteMode(int r, int v) +{ + UINT8 c; + FM_CH *CH; + + switch(r){ + case 0x21: /* Test */ + break; + + case 0x22: /* LFO FREQ */ + if (v&8) /* LFO enabled ? */ + { + ym2612.OPN.lfo_timer_overflow = lfo_samples_per_step[v&7]; + } + else + { + /* hold LFO waveform in reset state */ + ym2612.OPN.lfo_timer_overflow = 0; + ym2612.OPN.lfo_timer = 0; + ym2612.OPN.lfo_cnt = 0; + ym2612.OPN.LFO_PM = 0; + ym2612.OPN.LFO_AM = 126; + } + break; + case 0x24: /* timer A High */ + ym2612.OPN.ST.TA = (ym2612.OPN.ST.TA & 0x03)|(((int)v)<<2); + ym2612.OPN.ST.TAL = 1024 - ym2612.OPN.ST.TA; + break; + case 0x25: /* timer A Low */ + ym2612.OPN.ST.TA = (ym2612.OPN.ST.TA & 0x3fc)|(v&3); + ym2612.OPN.ST.TAL = 1024 - ym2612.OPN.ST.TA; + break; + case 0x26: /* timer B */ + ym2612.OPN.ST.TB = v; + ym2612.OPN.ST.TBL = (256 - v) << 4; + break; + case 0x27: /* mode, timer control */ + set_timers(v); + break; + case 0x28: /* key on / off */ + c = v & 0x03; + if( c == 3 ) break; + if (v&0x04) c+=3; /* CH 4-6 */ + CH = &ym2612.CH[c]; + if (v&0x10) FM_KEYON(CH,SLOT1); else FM_KEYOFF(CH,SLOT1); + if (v&0x20) FM_KEYON(CH,SLOT2); else FM_KEYOFF(CH,SLOT2); + if (v&0x40) FM_KEYON(CH,SLOT3); else FM_KEYOFF(CH,SLOT3); + if (v&0x80) FM_KEYON(CH,SLOT4); else FM_KEYOFF(CH,SLOT4); + break; + } +} + +/* write a OPN register (0x30-0xff) */ +INLINE void OPNWriteReg(int r, int v) +{ + FM_CH *CH; + FM_SLOT *SLOT; + + UINT8 c = OPN_CHAN(r); + + if (c == 3) return; /* 0xX3,0xX7,0xXB,0xXF */ + + if (r >= 0x100) c+=3; + + CH = &ym2612.CH[c]; + + SLOT = &(CH->SLOT[OPN_SLOT(r)]); + + switch( r & 0xf0 ) { + case 0x30: /* DET , MUL */ + set_det_mul(CH,SLOT,v); + break; + + case 0x40: /* TL */ + set_tl(SLOT,v); + break; + + case 0x50: /* KS, AR */ + set_ar_ksr(CH,SLOT,v); + break; + + case 0x60: /* bit7 = AM ENABLE, DR */ + set_dr(SLOT,v); + SLOT->AMmask = (v&0x80) ? ~0 : 0; + break; + + case 0x70: /* SR */ + set_sr(SLOT,v); + break; + + case 0x80: /* SL, RR */ + set_sl_rr(SLOT,v); + break; + + case 0x90: /* SSG-EG */ + SLOT->ssg = v&0x0f; + + /* recalculate EG output */ + if (SLOT->state > EG_REL) + { + if ((SLOT->ssg&0x08) && (SLOT->ssgn ^ (SLOT->ssg&0x04))) + SLOT->vol_out = ((UINT32)(0x200 - SLOT->volume) & MAX_ATT_INDEX) + SLOT->tl; + else + SLOT->vol_out = (UINT32)SLOT->volume + SLOT->tl; + } + + /* SSG-EG envelope shapes : + + E AtAlH + 1 0 0 0 \\\\ + + 1 0 0 1 \___ + + 1 0 1 0 \/\/ + ___ + 1 0 1 1 \ + + 1 1 0 0 //// + ___ + 1 1 0 1 / + + 1 1 1 0 /\/\ + + 1 1 1 1 /___ + + + E = SSG-EG enable + + + The shapes are generated using Attack, Decay and Sustain phases. + + Each single character in the diagrams above represents this whole + sequence: + + - when KEY-ON = 1, normal Attack phase is generated (*without* any + difference when compared to normal mode), + + - later, when envelope level reaches minimum level (max volume), + the EG switches to Decay phase (which works with bigger steps + when compared to normal mode - see below), + + - later when envelope level passes the SL level, + the EG swithes to Sustain phase (which works with bigger steps + when compared to normal mode - see below), + + - finally when envelope level reaches maximum level (min volume), + the EG switches to Attack phase again (depends on actual waveform). + + Important is that when switch to Attack phase occurs, the phase counter + of that operator will be zeroed-out (as in normal KEY-ON) but not always. + (I havent found the rule for that - perhaps only when the output level is low) + + The difference (when compared to normal Envelope Generator mode) is + that the resolution in Decay and Sustain phases is 4 times lower; + this results in only 256 steps instead of normal 1024. + In other words: + when SSG-EG is disabled, the step inside of the EG is one, + when SSG-EG is enabled, the step is four (in Decay and Sustain phases). + + Times between the level changes are the same in both modes. + + + Important: + Decay 1 Level (so called SL) is compared to actual SSG-EG output, so + it is the same in both SSG and no-SSG modes, with this exception: + + when the SSG-EG is enabled and is generating raising levels + (when the EG output is inverted) the SL will be found at wrong level !!! + For example, when SL=02: + 0 -6 = -6dB in non-inverted EG output + 96-6 = -90dB in inverted EG output + Which means that EG compares its level to SL as usual, and that the + output is simply inverted afterall. + + + The Yamaha's manuals say that AR should be set to 0x1f (max speed). + That is not necessary, but then EG will be generating Attack phase. + + */ + break; + + case 0xa0: + switch( OPN_SLOT(r) ){ + case 0: /* 0xa0-0xa2 : FNUM1 */ + { + UINT32 fn = (((UINT32)((ym2612.OPN.ST.fn_h)&7))<<8) + v; + UINT8 blk = ym2612.OPN.ST.fn_h>>3; + /* keyscale code */ + CH->kcode = (blk<<2) | opn_fktable[fn >> 7]; + /* phase increment counter */ + CH->fc = (fn<>1; + + /* store fnum in clear form for LFO PM calculations */ + CH->block_fnum = (blk<<11) | fn; + + CH->SLOT[SLOT1].Incr=-1; + break; + } + case 1: /* 0xa4-0xa6 : FNUM2,BLK */ + ym2612.OPN.ST.fn_h = v&0x3f; + break; + case 2: /* 0xa8-0xaa : 3CH FNUM1 */ + if(r < 0x100) + { + UINT32 fn = (((UINT32)(ym2612.OPN.SL3.fn_h&7))<<8) + v; + UINT8 blk = ym2612.OPN.SL3.fn_h>>3; + /* keyscale code */ + ym2612.OPN.SL3.kcode[c]= (blk<<2) | opn_fktable[fn >> 7]; + /* phase increment counter */ + ym2612.OPN.SL3.fc[c] = (fn<>1; + ym2612.OPN.SL3.block_fnum[c] = (blk<<11) | fn; + ym2612.CH[2].SLOT[SLOT1].Incr=-1; + } + break; + case 3: /* 0xac-0xae : 3CH FNUM2,BLK */ + if(r < 0x100) + ym2612.OPN.SL3.fn_h = v&0x3f; + break; + } + break; + + case 0xb0: + switch( OPN_SLOT(r) ){ + case 0: /* 0xb0-0xb2 : FB,ALGO */ + { + CH->ALGO = v&7; + CH->FB = SIN_BITS - ((v>>3)&7); + setup_connection( CH, c ); + break; + } + case 1: /* 0xb4-0xb6 : L , R , AMS , PMS */ + /* b0-2 PMS */ + CH->pms = (v & 7) * 32; /* CH->pms = PM depth * 32 (index in lfo_pm_table) */ + + /* b4-5 AMS */ + CH->ams = lfo_ams_depth_shift[(v>>4) & 0x03]; + + /* PAN : b7 = L, b6 = R */ + ym2612.OPN.pan[ c*2 ] = (v & 0x80) ? 0xffffffff : 0; + ym2612.OPN.pan[ c*2+1 ] = (v & 0x40) ? 0xffffffff : 0; + break; + } + break; + } +} + +static void reset_channels(FM_CH *CH , int num ) +{ + int c,s; + + for( c = 0 ; c < num ; c++ ) + { + CH[c].mem_value = 0; + CH[c].op1_out[0] = 0; + CH[c].op1_out[1] = 0; + for(s = 0 ; s < 4 ; s++ ) + { + CH[c].SLOT[s].Incr = -1; + CH[c].SLOT[s].key = 0; + CH[c].SLOT[s].phase = 0; + CH[c].SLOT[s].ssgn = 0; + CH[c].SLOT[s].state = EG_OFF; + CH[c].SLOT[s].volume = MAX_ATT_INDEX; + CH[c].SLOT[s].vol_out = MAX_ATT_INDEX; + } + } +} + +/* initialize generic tables */ +static void init_tables(void) +{ + signed int d,i,x; + signed int n; + double o,m; + + /* build Linear Power Table */ + for (x=0; x>= 4; /* 12 bits here */ + if (n&1) /* round to nearest */ + n = (n>>1)+1; + else + n = n>>1; + /* 11 bits here (rounded) */ + n <<= 2; /* 13 bits here (as in real chip) */ + + /* 14 bits (with sign bit) */ + tl_tab[ x*2 + 0 ] = n; + tl_tab[ x*2 + 1 ] = -tl_tab[ x*2 + 0 ]; + + /* one entry in the 'Power' table use the following format, xxxxxyyyyyyyys with: */ + /* s = sign bit */ + /* yyyyyyyy = 8-bits decimal part (0-TL_RES_LEN) */ + /* xxxxx = 5-bits integer 'shift' value (0-31) but, since Power table output is 13 bits, */ + /* any value above 13 (included) would be discarded. */ + for (i=1; i<13; i++) + { + tl_tab[ x*2+0 + i*2*TL_RES_LEN ] = tl_tab[ x*2+0 ]>>i; + tl_tab[ x*2+1 + i*2*TL_RES_LEN ] = -tl_tab[ x*2+0 + i*2*TL_RES_LEN ]; + } + } + + /* build Logarithmic Sinus table */ + for (i=0; i0.0) + o = 8*log(1.0/m)/log(2); /* convert to 'decibels' */ + else + o = 8*log(-1.0/m)/log(2); /* convert to 'decibels' */ + + o = o / (ENV_STEP/4); + + n = (int)(2.0*o); + if (n&1) /* round to nearest */ + n = (n>>1)+1; + else + n = n>>1; + + /* 13-bits (8.5) value is formatted for above 'Power' table */ + sin_tab[ i ] = n*2 + (m>=0.0? 0: 1 ); + } + + /* build LFO PM modulation table */ + for(i = 0; i < 8; i++) /* 8 PM depths */ + { + UINT8 fnum; + for (fnum=0; fnum<128; fnum++) /* 7 bits meaningful of F-NUMBER */ + { + UINT8 value; + UINT8 step; + UINT32 offset_depth = i; + UINT32 offset_fnum_bit; + UINT32 bit_tmp; + + for (step=0; step<8; step++) + { + value = 0; + for (bit_tmp=0; bit_tmp<7; bit_tmp++) /* 7 bits */ + { + if (fnum & (1<= 0xb4 ; i-- ) + { + OPNWriteReg(i ,0xc0); + OPNWriteReg(i|0x100,0xc0); + } + for(i = 0xb2 ; i >= 0x30 ; i-- ) + { + OPNWriteReg(i ,0); + OPNWriteReg(i|0x100,0); + } +} + +/* ym2612 write */ +/* n = number */ +/* a = address */ +/* v = value */ +void YM2612Write(unsigned int a, unsigned int v) +{ + v &= 0xff; /* adjust to 8 bit bus */ + + switch( a ) + { + case 0: /* address port 0 */ + ym2612.OPN.ST.address = v; + break; + + case 2: /* address port 1 */ + ym2612.OPN.ST.address = v | 0x100; + break; + + default: /* data port */ + { + int addr = ym2612.OPN.ST.address; /* verified by Nemesis on real YM2612 */ + switch( addr & 0x1f0 ) + { + case 0x20: /* 0x20-0x2f Mode */ + switch( addr ) + { + case 0x2a: /* DAC data (ym2612) */ + ym2612.dacout = ((int)v - 0x80) << 6; /* convert to 14-bit output */ + break; + case 0x2b: /* DAC Sel (ym2612) */ + /* b7 = dac enable */ + ym2612.dacen = v & 0x80; + break; + default: /* OPN section */ + /* write register */ + OPNWriteMode(addr,v); + } + break; + default: /* 0x30-0xff OPN section */ + /* write register */ + OPNWriteReg(addr,v); + } + break; + } + } +} + +unsigned int YM2612Read(void) +{ + return ym2612.OPN.ST.status; +} + +/* Generate samples for ym2612 */ +void YM2612Update(int *buffer, int length) +{ + int i; + int lt,rt; + + /* refresh PG increments and EG rates if required */ + refresh_fc_eg_chan(&ym2612.CH[0]); + refresh_fc_eg_chan(&ym2612.CH[1]); + + if (!(ym2612.OPN.ST.mode & 0xC0)) + { + refresh_fc_eg_chan(&ym2612.CH[2]); + } + else + { + /* 3SLOT MODE (operator order is 0,1,3,2) */ + if(ym2612.CH[2].SLOT[SLOT1].Incr==-1) + { + refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT1] , ym2612.OPN.SL3.fc[1] , ym2612.OPN.SL3.kcode[1] ); + refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT2] , ym2612.OPN.SL3.fc[2] , ym2612.OPN.SL3.kcode[2] ); + refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT3] , ym2612.OPN.SL3.fc[0] , ym2612.OPN.SL3.kcode[0] ); + refresh_fc_eg_slot(&ym2612.CH[2].SLOT[SLOT4] , ym2612.CH[2].fc , ym2612.CH[2].kcode ); + } + } + + refresh_fc_eg_chan(&ym2612.CH[3]); + refresh_fc_eg_chan(&ym2612.CH[4]); + refresh_fc_eg_chan(&ym2612.CH[5]); + + /* buffering */ + for(i=0; i= 3) + { + /* reset EG timer */ + ym2612.OPN.eg_timer = 0; + + /* increment EG counter */ + ym2612.OPN.eg_cnt++; + + /* EG counter is 12-bit only and zero value is skipped (verified on real hardware) */ + if (ym2612.OPN.eg_cnt == 4096) + ym2612.OPN.eg_cnt = 1; + + /* advance envelope generator */ + advance_eg_channels(&ym2612.CH[0], ym2612.OPN.eg_cnt); + } + + /* channels accumulator output clipping (14-bit max) */ + if (out_fm[0] > 8191) out_fm[0] = 8191; + else if (out_fm[0] < -8192) out_fm[0] = -8192; + if (out_fm[1] > 8191) out_fm[1] = 8191; + else if (out_fm[1] < -8192) out_fm[1] = -8192; + if (out_fm[2] > 8191) out_fm[2] = 8191; + else if (out_fm[2] < -8192) out_fm[2] = -8192; + if (out_fm[3] > 8191) out_fm[3] = 8191; + else if (out_fm[3] < -8192) out_fm[3] = -8192; + if (out_fm[4] > 8191) out_fm[4] = 8191; + else if (out_fm[4] < -8192) out_fm[4] = -8192; + if (out_fm[5] > 8191) out_fm[5] = 8191; + else if (out_fm[5] < -8192) out_fm[5] = -8192; + + /* stereo DAC output panning & mixing */ + lt = ((out_fm[0]) & ym2612.OPN.pan[0]); + rt = ((out_fm[0]) & ym2612.OPN.pan[1]); + lt += ((out_fm[1]) & ym2612.OPN.pan[2]); + rt += ((out_fm[1]) & ym2612.OPN.pan[3]); + lt += ((out_fm[2]) & ym2612.OPN.pan[4]); + rt += ((out_fm[2]) & ym2612.OPN.pan[5]); + lt += ((out_fm[3]) & ym2612.OPN.pan[6]); + rt += ((out_fm[3]) & ym2612.OPN.pan[7]); + lt += ((out_fm[4]) & ym2612.OPN.pan[8]); + rt += ((out_fm[4]) & ym2612.OPN.pan[9]); + lt += ((out_fm[5]) & ym2612.OPN.pan[10]); + rt += ((out_fm[5]) & ym2612.OPN.pan[11]); + + /* discrete YM2612 DAC */ + if (chip_type == YM2612_DISCRETE) + { + int i; + + /* DAC 'ladder effect' */ + for (i=0; i<6; i++) + { + if (out_fm[i] < 0) + { + /* -4 offset (-3 when not muted) on negative channel output (9-bit) */ + lt -= ((4 - (ym2612.OPN.pan[(2*i)+0] & 1)) << 5); + rt -= ((4 - (ym2612.OPN.pan[(2*i)+1] & 1)) << 5); + } + else + { + /* +4 offset (when muted or not) on positive channel output (9-bit) */ + lt += (4 << 5); + rt += (4 << 5); + } + } + } + + /* buffering */ + *buffer++ = lt; + *buffer++ = rt; + + /* CSM mode: if CSM Key ON has occurred, CSM Key OFF need to be sent */ + /* only if Timer A does not overflow again (i.e CSM Key ON not set again) */ + ym2612.OPN.SL3.key_csm <<= 1; + + /* timer A control */ + INTERNAL_TIMER_A(); + + /* CSM Mode Key ON still disabled */ + if (ym2612.OPN.SL3.key_csm & 2) + { + /* CSM Mode Key OFF (verified by Nemesis on real hardware) */ + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT1); + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT2); + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT3); + FM_KEYOFF_CSM(&ym2612.CH[2],SLOT4); + ym2612.OPN.SL3.key_csm = 0; + } + } + + /* timer B control */ + INTERNAL_TIMER_B(length); +} + +void YM2612Config(int type) +{ + /* YM2612 chip type */ + chip_type = type; + + /* carrier operator outputs bitmask */ + if (chip_type < YM2612_ENHANCED) + { + /* 9-bit DAC */ + op_mask[0][3] = 0xffffffe0; + op_mask[1][3] = 0xffffffe0; + op_mask[2][3] = 0xffffffe0; + op_mask[3][3] = 0xffffffe0; + op_mask[4][1] = 0xffffffe0; + op_mask[4][3] = 0xffffffe0; + op_mask[5][1] = 0xffffffe0; + op_mask[5][2] = 0xffffffe0; + op_mask[5][3] = 0xffffffe0; + op_mask[6][1] = 0xffffffe0; + op_mask[6][2] = 0xffffffe0; + op_mask[6][3] = 0xffffffe0; + op_mask[7][0] = 0xffffffe0; + op_mask[7][1] = 0xffffffe0; + op_mask[7][2] = 0xffffffe0; + op_mask[7][3] = 0xffffffe0; + } + else + { + /* 14-bit DAC */ + op_mask[0][3] = 0xffffffff; + op_mask[1][3] = 0xffffffff; + op_mask[2][3] = 0xffffffff; + op_mask[3][3] = 0xffffffff; + op_mask[4][1] = 0xffffffff; + op_mask[4][3] = 0xffffffff; + op_mask[5][1] = 0xffffffff; + op_mask[5][2] = 0xffffffff; + op_mask[5][3] = 0xffffffff; + op_mask[6][1] = 0xffffffff; + op_mask[6][2] = 0xffffffff; + op_mask[6][3] = 0xffffffff; + op_mask[7][0] = 0xffffffff; + op_mask[7][1] = 0xffffffff; + op_mask[7][2] = 0xffffffff; + op_mask[7][3] = 0xffffffff; + } +} + +int YM2612LoadContext(unsigned char *state) +{ + int c,s; + uint8 index; + int bufferptr = 0; + + /* restore YM2612 context */ + load_param(&ym2612, sizeof(ym2612)); + + /* restore DT table address pointer for each channel slots */ + for (c=0; c<6; c++) + { + for (s=0; s<4; s++) + { + load_param(&index,sizeof(index)); + bufferptr += sizeof(index); + ym2612.CH[c].SLOT[s].DT = ym2612.OPN.ST.dt_tab[index&7]; + } + } + + /* restore outputs connections */ + setup_connection(&ym2612.CH[0],0); + setup_connection(&ym2612.CH[1],1); + setup_connection(&ym2612.CH[2],2); + setup_connection(&ym2612.CH[3],3); + setup_connection(&ym2612.CH[4],4); + setup_connection(&ym2612.CH[5],5); + + return bufferptr; +} + +int YM2612SaveContext(unsigned char *state) +{ + int c,s; + uint8 index; + int bufferptr = 0; + + /* save YM2612 context */ + save_param(&ym2612, sizeof(ym2612)); + + /* save DT table index for each channel slots */ + for (c=0; c<6; c++) + { + for (s=0; s<4; s++) + { + index = (ym2612.CH[c].SLOT[s].DT - ym2612.OPN.ST.dt_tab[0]) >> 5; + save_param(&index,sizeof(index)); + bufferptr += sizeof(index); + } + } + + return bufferptr; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2612.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2612.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2612.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2612.h index 969b558988..9ce89f238b 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym2612.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym2612.h @@ -1,34 +1,34 @@ -/* -** -** software implementation of Yamaha FM sound generator (YM2612/YM3438) -** -** Original code (MAME fm.c) -** -** Copyright (C) 2001, 2002, 2003 Jarek Burczynski (bujar at mame dot net) -** Copyright (C) 1998 Tatsuyuki Satoh , MultiArcadeMachineEmulator development -** -** Version 1.4 (final beta) -** -** Additional code & fixes by Eke-Eke for Genesis Plus GX -** -*/ - -#ifndef _H_YM2612_ -#define _H_YM2612_ - -enum { - YM2612_DISCRETE = 0, - YM2612_INTEGRATED, - YM2612_ENHANCED -}; - -extern void YM2612Init(void); -extern void YM2612Config(int type); -extern void YM2612ResetChip(void); -extern void YM2612Update(int *buffer, int length); -extern void YM2612Write(unsigned int a, unsigned int v); -extern unsigned int YM2612Read(void); -extern int YM2612LoadContext(unsigned char *state); -extern int YM2612SaveContext(unsigned char *state); - -#endif /* _YM2612_ */ +/* +** +** software implementation of Yamaha FM sound generator (YM2612/YM3438) +** +** Original code (MAME fm.c) +** +** Copyright (C) 2001, 2002, 2003 Jarek Burczynski (bujar at mame dot net) +** Copyright (C) 1998 Tatsuyuki Satoh , MultiArcadeMachineEmulator development +** +** Version 1.4 (final beta) +** +** Additional code & fixes by Eke-Eke for Genesis Plus GX +** +*/ + +#ifndef _H_YM2612_ +#define _H_YM2612_ + +enum { + YM2612_DISCRETE = 0, + YM2612_INTEGRATED, + YM2612_ENHANCED +}; + +extern void YM2612Init(void); +extern void YM2612Config(int type); +extern void YM2612ResetChip(void); +extern void YM2612Update(int *buffer, int length); +extern void YM2612Write(unsigned int a, unsigned int v); +extern unsigned int YM2612Read(void); +extern int YM2612LoadContext(unsigned char *state); +extern int YM2612SaveContext(unsigned char *state); + +#endif /* _YM2612_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym3438.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym3438.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym3438.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym3438.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym3438.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym3438.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/ym3438.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/sound/ym3438.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/state.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/state.c similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/state.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/state.c index dcee54d523..eb5ee8c462 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/state.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/state.c @@ -1,283 +1,283 @@ -/*************************************************************************************** - * Genesis Plus - * Savestate support - * - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -int state_load(unsigned char *state) -{ - int i, bufferptr = 0; - - /* signature check (GENPLUS-GX x.x.x) */ - char version[17]; - load_param(version,16); - version[16] = 0; - if (memcmp(version,STATE_VERSION,11)) - { - return 0; - } - - /* version check */ - if ((version[11] < 0x31) || (version[13] < 0x37) || (version[15] < 0x35)) - { - return 0; - } - - /* reset system */ - system_reset(); - - /* enable VDP access for TMSS systems */ - for (i=0xc0; i<0xe0; i+=8) - { - m68k.memory_map[i].read8 = vdp_read_byte; - m68k.memory_map[i].read16 = vdp_read_word; - m68k.memory_map[i].write8 = vdp_write_byte; - m68k.memory_map[i].write16 = vdp_write_word; - zbank_memory_map[i].read = zbank_read_vdp; - zbank_memory_map[i].write = zbank_write_vdp; - } - - /* GENESIS */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - load_param(work_ram, sizeof(work_ram)); - load_param(zram, sizeof(zram)); - load_param(&zstate, sizeof(zstate)); - load_param(&zbank, sizeof(zbank)); - if (zstate == 3) - { - m68k.memory_map[0xa0].read8 = z80_read_byte; - m68k.memory_map[0xa0].read16 = z80_read_word; - m68k.memory_map[0xa0].write8 = z80_write_byte; - m68k.memory_map[0xa0].write16 = z80_write_word; - } - else - { - m68k.memory_map[0xa0].read8 = m68k_read_bus_8; - m68k.memory_map[0xa0].read16 = m68k_read_bus_16; - m68k.memory_map[0xa0].write8 = m68k_unused_8_w; - m68k.memory_map[0xa0].write16 = m68k_unused_16_w; - } - } - else - { - load_param(work_ram, 0x2000); - } - - /* IO */ - load_param(io_reg, sizeof(io_reg)); - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - io_reg[0] = region_code | 0x20 | (config.bios & 1); - } - else - { - io_reg[0] = 0x80 | (region_code >> 1); - } - - /* VDP */ - bufferptr += vdp_context_load(&state[bufferptr]); - - /* SOUND */ - bufferptr += sound_context_load(&state[bufferptr]); - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - psg_config(0, config.psg_preamp, 0xff); - } - else - { - psg_config(0, config.psg_preamp, io_reg[6]); - } - - /* 68000 */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - uint16 tmp16; - uint32 tmp32; - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D0, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D1, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D2, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D3, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D4, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D5, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D6, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D7, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A0, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A1, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A2, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A3, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A4, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A5, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A6, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A7, tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_PC, tmp32); - load_param(&tmp16, 2); m68k_set_reg(M68K_REG_SR, tmp16); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_USP,tmp32); - load_param(&tmp32, 4); m68k_set_reg(M68K_REG_ISP,tmp32); - - load_param(&m68k.cycles, sizeof(m68k.cycles)); - load_param(&m68k.int_level, sizeof(m68k.int_level)); - load_param(&m68k.stopped, sizeof(m68k.stopped)); - } - - /* Z80 */ - load_param(&Z80, sizeof(Z80_Regs)); - Z80.irq_callback = z80_irq_callback; - - /* Extra HW */ - if (system_hw == SYSTEM_MCD) - { - /* handle case of MD cartridge using or not CD hardware */ - char id[5]; - load_param(id,4); - id[4] = 0; - - /* check if CD hardware was enabled before attempting to restore */ - if (memcmp(id,"SCD!",4)) - { - return 0; - } - - /* CD hardware */ - bufferptr += scd_context_load(&state[bufferptr]); - } - else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* MD cartridge hardware */ - bufferptr += md_cart_context_load(&state[bufferptr]); - } - else - { - /* MS cartridge hardware */ - bufferptr += sms_cart_context_load(&state[bufferptr]); - sms_cart_switch(~io_reg[0x0E]); - } - - return bufferptr; -} - -int state_save(unsigned char *state) -{ - /* buffer size */ - int bufferptr = 0; - - /* version string */ - char version[16]; - memcpy(version,STATE_VERSION,16); - save_param(version, 16); - - /* GENESIS */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - save_param(work_ram, sizeof(work_ram)); - save_param(zram, sizeof(zram)); - save_param(&zstate, sizeof(zstate)); - save_param(&zbank, sizeof(zbank)); - } - else - { - save_param(work_ram, 0x2000); - } - - /* IO */ - save_param(io_reg, sizeof(io_reg)); - - /* VDP */ - bufferptr += vdp_context_save(&state[bufferptr]); - - /* SOUND */ - bufferptr += sound_context_save(&state[bufferptr]); - - /* 68000 */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - uint16 tmp16; - uint32 tmp32; - tmp32 = m68k_get_reg(M68K_REG_D0); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_D1); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_D2); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_D3); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_D4); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_D5); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_D6); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_D7); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A0); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A1); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A2); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A3); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A4); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A5); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A6); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_A7); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_PC); save_param(&tmp32, 4); - tmp16 = m68k_get_reg(M68K_REG_SR); save_param(&tmp16, 2); - tmp32 = m68k_get_reg(M68K_REG_USP); save_param(&tmp32, 4); - tmp32 = m68k_get_reg(M68K_REG_ISP); save_param(&tmp32, 4); - - save_param(&m68k.cycles, sizeof(m68k.cycles)); - save_param(&m68k.int_level, sizeof(m68k.int_level)); - save_param(&m68k.stopped, sizeof(m68k.stopped)); - } - - /* Z80 */ - save_param(&Z80, sizeof(Z80_Regs)); - - /* External HW */ - if (system_hw == SYSTEM_MCD) - { - /* CD hardware ID flag */ - char id[4]; - memcpy(id,"SCD!",4); - save_param(id, 4); - - /* CD hardware */ - bufferptr += scd_context_save(&state[bufferptr]); - } - else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* MD cartridge hardware */ - bufferptr += md_cart_context_save(&state[bufferptr]); - } - else - { - /* MS cartridge hardware */ - bufferptr += sms_cart_context_save(&state[bufferptr]); - } - - /* return total size */ - return bufferptr; -} +/*************************************************************************************** + * Genesis Plus + * Savestate support + * + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" + +int state_load(unsigned char *state) +{ + int i, bufferptr = 0; + + /* signature check (GENPLUS-GX x.x.x) */ + char version[17]; + load_param(version,16); + version[16] = 0; + if (memcmp(version,STATE_VERSION,11)) + { + return 0; + } + + /* version check */ + if ((version[11] < 0x31) || (version[13] < 0x37) || (version[15] < 0x35)) + { + return 0; + } + + /* reset system */ + system_reset(); + + /* enable VDP access for TMSS systems */ + for (i=0xc0; i<0xe0; i+=8) + { + m68k.memory_map[i].read8 = vdp_read_byte; + m68k.memory_map[i].read16 = vdp_read_word; + m68k.memory_map[i].write8 = vdp_write_byte; + m68k.memory_map[i].write16 = vdp_write_word; + zbank_memory_map[i].read = zbank_read_vdp; + zbank_memory_map[i].write = zbank_write_vdp; + } + + /* GENESIS */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + load_param(work_ram, sizeof(work_ram)); + load_param(zram, sizeof(zram)); + load_param(&zstate, sizeof(zstate)); + load_param(&zbank, sizeof(zbank)); + if (zstate == 3) + { + m68k.memory_map[0xa0].read8 = z80_read_byte; + m68k.memory_map[0xa0].read16 = z80_read_word; + m68k.memory_map[0xa0].write8 = z80_write_byte; + m68k.memory_map[0xa0].write16 = z80_write_word; + } + else + { + m68k.memory_map[0xa0].read8 = m68k_read_bus_8; + m68k.memory_map[0xa0].read16 = m68k_read_bus_16; + m68k.memory_map[0xa0].write8 = m68k_unused_8_w; + m68k.memory_map[0xa0].write16 = m68k_unused_16_w; + } + } + else + { + load_param(work_ram, 0x2000); + } + + /* IO */ + load_param(io_reg, sizeof(io_reg)); + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + io_reg[0] = region_code | 0x20 | (config.bios & 1); + } + else + { + io_reg[0] = 0x80 | (region_code >> 1); + } + + /* VDP */ + bufferptr += vdp_context_load(&state[bufferptr]); + + /* SOUND */ + bufferptr += sound_context_load(&state[bufferptr]); + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + psg_config(0, config.psg_preamp, 0xff); + } + else + { + psg_config(0, config.psg_preamp, io_reg[6]); + } + + /* 68000 */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + uint16 tmp16; + uint32 tmp32; + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D0, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D1, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D2, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D3, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D4, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D5, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D6, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_D7, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A0, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A1, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A2, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A3, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A4, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A5, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A6, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_A7, tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_PC, tmp32); + load_param(&tmp16, 2); m68k_set_reg(M68K_REG_SR, tmp16); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_USP,tmp32); + load_param(&tmp32, 4); m68k_set_reg(M68K_REG_ISP,tmp32); + + load_param(&m68k.cycles, sizeof(m68k.cycles)); + load_param(&m68k.int_level, sizeof(m68k.int_level)); + load_param(&m68k.stopped, sizeof(m68k.stopped)); + } + + /* Z80 */ + load_param(&Z80, sizeof(Z80_Regs)); + Z80.irq_callback = z80_irq_callback; + + /* Extra HW */ + if (system_hw == SYSTEM_MCD) + { + /* handle case of MD cartridge using or not CD hardware */ + char id[5]; + load_param(id,4); + id[4] = 0; + + /* check if CD hardware was enabled before attempting to restore */ + if (memcmp(id,"SCD!",4)) + { + return 0; + } + + /* CD hardware */ + bufferptr += scd_context_load(&state[bufferptr]); + } + else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* MD cartridge hardware */ + bufferptr += md_cart_context_load(&state[bufferptr]); + } + else + { + /* MS cartridge hardware */ + bufferptr += sms_cart_context_load(&state[bufferptr]); + sms_cart_switch(~io_reg[0x0E]); + } + + return bufferptr; +} + +int state_save(unsigned char *state) +{ + /* buffer size */ + int bufferptr = 0; + + /* version string */ + char version[16]; + memcpy(version,STATE_VERSION,16); + save_param(version, 16); + + /* GENESIS */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + save_param(work_ram, sizeof(work_ram)); + save_param(zram, sizeof(zram)); + save_param(&zstate, sizeof(zstate)); + save_param(&zbank, sizeof(zbank)); + } + else + { + save_param(work_ram, 0x2000); + } + + /* IO */ + save_param(io_reg, sizeof(io_reg)); + + /* VDP */ + bufferptr += vdp_context_save(&state[bufferptr]); + + /* SOUND */ + bufferptr += sound_context_save(&state[bufferptr]); + + /* 68000 */ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + uint16 tmp16; + uint32 tmp32; + tmp32 = m68k_get_reg(M68K_REG_D0); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_D1); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_D2); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_D3); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_D4); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_D5); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_D6); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_D7); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A0); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A1); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A2); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A3); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A4); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A5); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A6); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_A7); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_PC); save_param(&tmp32, 4); + tmp16 = m68k_get_reg(M68K_REG_SR); save_param(&tmp16, 2); + tmp32 = m68k_get_reg(M68K_REG_USP); save_param(&tmp32, 4); + tmp32 = m68k_get_reg(M68K_REG_ISP); save_param(&tmp32, 4); + + save_param(&m68k.cycles, sizeof(m68k.cycles)); + save_param(&m68k.int_level, sizeof(m68k.int_level)); + save_param(&m68k.stopped, sizeof(m68k.stopped)); + } + + /* Z80 */ + save_param(&Z80, sizeof(Z80_Regs)); + + /* External HW */ + if (system_hw == SYSTEM_MCD) + { + /* CD hardware ID flag */ + char id[4]; + memcpy(id,"SCD!",4); + save_param(id, 4); + + /* CD hardware */ + bufferptr += scd_context_save(&state[bufferptr]); + } + else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* MD cartridge hardware */ + bufferptr += md_cart_context_save(&state[bufferptr]); + } + else + { + /* MS cartridge hardware */ + bufferptr += sms_cart_context_save(&state[bufferptr]); + } + + /* return total size */ + return bufferptr; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/state.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/state.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/state.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/state.h index 03ffa45f8b..d66fca017c 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/state.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/state.h @@ -1,57 +1,57 @@ -/*************************************************************************************** - * Genesis Plus - * Savestate support - * - * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _STATE_H_ -#define _STATE_H_ - -#define STATE_SIZE 0xfd000 -#define STATE_VERSION "GENPLUS-GX 1.7.5" - -#define load_param(param, size) \ - memcpy(param, &state[bufferptr], size); \ - bufferptr+= size; - -#define save_param(param, size) \ - memcpy(&state[bufferptr], param, size); \ - bufferptr+= size; - -/* Function prototypes */ -extern int state_load(unsigned char *state); -extern int state_save(unsigned char *state); - -#endif +/*************************************************************************************** + * Genesis Plus + * Savestate support + * + * Copyright (C) 2007-2019 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _STATE_H_ +#define _STATE_H_ + +#define STATE_SIZE 0xfd000 +#define STATE_VERSION "GENPLUS-GX 1.7.5" + +#define load_param(param, size) \ + memcpy(param, &state[bufferptr], size); \ + bufferptr+= size; + +#define save_param(param, size) \ + memcpy(&state[bufferptr], param, size); \ + bufferptr+= size; + +/* Function prototypes */ +extern int state_load(unsigned char *state); +extern int state_save(unsigned char *state); + +#endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/system.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/system.c similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/system.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/system.c index 358262ebcd..458c89a43f 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/system.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/system.c @@ -1,1392 +1,1392 @@ -/*************************************************************************************** - * Genesis Plus - * Virtual System emulation - * - * Support for 16-bit & 8-bit hardware modes - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2018 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "eq.h" - -/* Global variables */ -t_bitmap bitmap; -t_snd snd; -uint32 mcycles_vdp; -uint8 system_hw; -uint8 system_bios; -uint32 system_clock; -int16 SVP_cycles = 800; - -static uint8 pause_b; -static EQSTATE eq[2]; -static int16 llp,rrp; - -/******************************************************************************************/ -/* Audio subsystem */ -/******************************************************************************************/ - -int audio_init(int samplerate, double framerate) -{ - /* Shutdown first */ - audio_shutdown(); - - /* Clear the sound data context */ - memset(&snd, 0, sizeof (snd)); - - /* Initialize Blip Buffers */ - snd.blips[0] = blip_new(samplerate / 10); - if (!snd.blips[0]) - { - return -1; - } - - /* Mega CD sound hardware */ - if (system_hw == SYSTEM_MCD) - { - /* allocate blip buffers */ - snd.blips[1] = blip_new(samplerate / 10); - snd.blips[2] = blip_new(samplerate / 10); - if (!snd.blips[1] || !snd.blips[2]) - { - audio_shutdown(); - return -1; - } - } - - /* Initialize resampler internal rates */ - audio_set_rate(samplerate, framerate); - - /* Set audio enable flag */ - snd.enabled = 1; - - /* Reset audio */ - audio_reset(); - - return (0); -} - -void audio_set_rate(int samplerate, double framerate) -{ - /* Number of M-cycles executed per second. */ - /* All emulated chips are kept in sync by using a common oscillator (MCLOCK) */ - /* */ - /* The original console would run exactly 53693175 M-cycles per sec (53203424 for PAL), */ - /* 3420 M-cycles per line and 262 (313 for PAL) lines per frame, which gives an exact */ - /* framerate of 59.92 (49.70 for PAL) frames per second. */ - /* */ - /* Since audio samples are generated at the end of the frame, to prevent audio skipping */ - /* or lag between emulated frames, number of samples rendered per frame must be set to */ - /* output samplerate (number of samples played per second) divided by input framerate */ - /* (number of frames emulated per seconds). */ - /* */ - /* On some systems, we may want to achieve 100% smooth video rendering by synchronizing */ - /* frame emulation with VSYNC, which frequency is generally not exactly those values. */ - /* In that case, input framerate (number of frames emulated per seconds) is the same as */ - /* output framerate (number of frames rendered per seconds) by the host video hardware. */ - /* */ - /* When no framerate is specified, base clock is set to original master clock value. */ - /* Otherwise, it is set to number of M-cycles emulated per line (fixed) multiplied by */ - /* number of lines per frame (VDP mode specific) multiplied by input framerate. */ - /* */ - double mclk = framerate ? (MCYCLES_PER_LINE * (vdp_pal ? 313 : 262) * framerate) : system_clock; - - /* For maximal accuracy, sound chips are running at their original rate using common */ - /* master clock timebase so they remain perfectly synchronized together, while still */ - /* being synchronized with 68K and Z80 CPUs as well. Mixed sound chip output is then */ - /* resampled to desired rate at the end of each frame, using Blip Buffer. */ - blip_set_rates(snd.blips[0], mclk, samplerate); - - /* Mega CD sound hardware */ - if (system_hw == SYSTEM_MCD) - { - /* number of SCD master clocks run per second */ - mclk = (mclk / system_clock) * SCD_CLOCK; - - /* PCM core */ - pcm_init(mclk, samplerate); - - /* CDD core */ - cdd_init(samplerate); - } - - /* Reinitialize internal rates */ - snd.sample_rate = samplerate; - snd.frame_rate = framerate; -} - -void audio_reset(void) -{ - int i; - - /* Clear blip buffers */ - for (i=0; i<3; i++) - { - if (snd.blips[i]) - { - blip_clear(snd.blips[i]); - } - } - - /* Low-Pass filter */ - llp = 0; - rrp = 0; - - /* 3 band EQ */ - audio_set_equalizer(); -} - -void audio_set_equalizer(void) -{ - init_3band_state(&eq[0],config.low_freq,config.high_freq,snd.sample_rate); - init_3band_state(&eq[1],config.low_freq,config.high_freq,snd.sample_rate); - eq[0].lg = eq[1].lg = (double)(config.lg) / 100.0; - eq[0].mg = eq[1].mg = (double)(config.mg) / 100.0; - eq[0].hg = eq[1].hg = (double)(config.hg) / 100.0; -} - -void audio_shutdown(void) -{ - int i; - - /* Delete blip buffers */ - for (i=0; i<3; i++) - { - blip_delete(snd.blips[i]); - snd.blips[i] = 0; - } -} - -int audio_update(int16 *buffer) -{ - /* run sound chips until end of frame */ - int size = sound_update(mcycles_vdp); - - /* Mega CD specific */ - if (system_hw == SYSTEM_MCD) - { - /* sync PCM chip with other sound chips */ - pcm_update(size); - - /* read CDDA samples */ - cdd_read_audio(size); - -#ifdef ALIGN_SND - /* return an aligned number of samples if required */ - size &= ALIGN_SND; -#endif - - /* resample & mix FM/PSG, PCM & CD-DA streams to output buffer */ - blip_mix_samples(snd.blips[0], snd.blips[1], snd.blips[2], buffer, size); - } - else - { -#ifdef ALIGN_SND - /* return an aligned number of samples if required */ - size &= ALIGN_SND; -#endif - - /* resample FM/PSG mixed stream to output buffer */ - blip_read_samples(snd.blips[0], buffer, size); - } - - /* Audio filtering */ - if (config.filter) - { - int samples = size; - int16 *out = buffer; - int32 l, r; - - if (config.filter & 1) - { - /* single-pole low-pass filter (6 dB/octave) */ - uint32 factora = config.lp_range; - uint32 factorb = 0x10000 - factora; - - /* restore previous sample */ - l = llp; - r = rrp; - - do - { - /* apply low-pass filter */ - l = l*factora + out[0]*factorb; - r = r*factora + out[1]*factorb; - - /* 16.16 fixed point */ - l >>= 16; - r >>= 16; - - /* update sound buffer */ - *out++ = l; - *out++ = r; - } - while (--samples); - - /* save last samples for next frame */ - llp = l; - rrp = r; - } - else if (config.filter & 2) - { - do - { - /* 3 Band EQ */ - l = do_3band(&eq[0],out[0]); - r = do_3band(&eq[1],out[1]); - - /* clipping (16-bit samples) */ - if (l > 32767) l = 32767; - else if (l < -32768) l = -32768; - if (r > 32767) r = 32767; - else if (r < -32768) r = -32768; - - /* update sound buffer */ - *out++ = l; - *out++ = r; - } - while (--samples); - } - } - - /* Mono output mixing */ - if (config.mono) - { - int16 out; - int samples = size; - do - { - out = (buffer[0] + buffer[1]) / 2; - *buffer++ = out; - *buffer++ = out; - } - while (--samples); - } - -#ifdef LOGSOUND - error("%d samples returned\n\n",size); -#endif - - return size; -} - -/**************************************************************** - * Virtual System emulation - ****************************************************************/ -void system_init(void) -{ - gen_init(); - io_init(); - vdp_init(); - render_init(); - sound_init(); -} - -void system_reset(void) -{ - gen_reset(1); - io_reset(); - render_reset(); - vdp_reset(); - sound_reset(); - audio_reset(); -} - -void system_frame_gen(int do_skip) -{ - /* line counters */ - int start, end, line; - - /* reset frame cycle counter */ - mcycles_vdp = 0; - - /* reset VDP FIFO */ - fifo_write_cnt = 0; - fifo_slots = 0; - - /* check if display setings have changed during previous frame */ - if (bitmap.viewport.changed & 2) - { - /* interlaced modes */ - int old_interlaced = interlaced; - interlaced = (reg[12] & 0x02) >> 1; - - if (old_interlaced != interlaced) - { - /* double resolution mode */ - im2_flag = ((reg[12] & 0x06) == 0x06); - - /* reset field status flag */ - odd_frame = interlaced; - - /* video mode has changed */ - bitmap.viewport.changed = 5; - - /* update rendering mode */ - if (reg[1] & 0x04) - { - if (im2_flag) - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; - render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; - } - else - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; - render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; - } - } - } - else - { - /* clear flag */ - bitmap.viewport.changed &= ~2; - } - - /* active screen height */ - if (reg[1] & 0x04) - { - /* Mode 5 */ - if (reg[1] & 0x08) - { - /* 240 active lines */ - bitmap.viewport.h = 240; - bitmap.viewport.y = (config.overscan & 1) * 24 * vdp_pal; - } - else - { - /* 224 active lines */ - bitmap.viewport.h = 224; - bitmap.viewport.y = (config.overscan & 1) * (8 + (24 * vdp_pal)); - } - } - else - { - /* Mode 4 (192 active lines) */ - bitmap.viewport.h = 192; - bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); - } - - /* active screen width */ - bitmap.viewport.w = 256 + ((reg[12] & 0x01) << 6); - - /* check viewport changes */ - if (bitmap.viewport.h != bitmap.viewport.oh) - { - bitmap.viewport.oh = bitmap.viewport.h; - bitmap.viewport.changed |= 1; - } - } - - /* first line of overscan */ - if (bitmap.viewport.y) - { - blank_line(bitmap.viewport.h, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* clear DMA Busy, FIFO FULL & field flags */ - status &= 0xFEED; - - /* set VBLANK & FIFO EMPTY flags */ - status |= 0x0208; - - /* check interlaced modes */ - if (interlaced) - { - /* switch even/odd field flag */ - odd_frame ^= 1; - status |= (odd_frame << 4); - } - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(0); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* H-Int counter */ - if (h_counter == 0) - { - /* Horizontal Interrupt is pending */ - hint_pending = 0x10; - if (reg[0] & 0x10) - { - /* level 4 interrupt */ - m68k_update_irq(4); - } - } - - /* refresh inputs just before VINT (Warriors of Eternal Sun) */ - osd_input_update(); - - /* VDP always starts after VBLANK so VINT cannot occur on first frame after a VDP reset (verified on real hardware) */ - if (v_counter != bitmap.viewport.h) - { - /* reinitialize VCounter */ - v_counter = bitmap.viewport.h; - - /* delay between VBLANK flag & Vertical Interrupt (Dracula, OutRunners, VR Troopers) */ - m68k_run(788); - if (zstate == 1) - { - z80_run(788); - } - - /* set VINT flag */ - status |= 0x80; - - /* Vertical Interrupt */ - vint_pending = 0x20; - if (reg[1] & 0x20) - { - /* level 6 interrupt */ - m68k_set_irq(6); - } - - /* assert Z80 interrupt */ - Z80.irq_state = ASSERT_LINE; - } - - /* run 68k & Z80 until end of line */ - m68k_run(MCYCLES_PER_LINE); - if (zstate == 1) - { - z80_run(MCYCLES_PER_LINE); - } - - /* Z80 interrupt is cleared at the end of the line */ - Z80.irq_state = CLEAR_LINE; - - /* run SVP chip */ - if (svp) - { - ssp1601_run(SVP_cycles); - } - - /* update VDP cycle count */ - mcycles_vdp = MCYCLES_PER_LINE; - - /* initialize line count */ - line = bitmap.viewport.h + 1; - - /* initialize overscan area */ - start = lines_per_frame - bitmap.viewport.y; - end = bitmap.viewport.h + bitmap.viewport.y; - - /* Vertical Blanking */ - do - { - /* update VCounter */ - v_counter = line; - - /* render overscan */ - if ((line < end) || (line >= start)) - { - blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* run 68k & Z80 until end of line */ - m68k_run(mcycles_vdp + MCYCLES_PER_LINE); - if (zstate == 1) - { - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - } - - /* run SVP chip */ - if (svp) - { - ssp1601_run(SVP_cycles); - } - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - } - while (++line < (lines_per_frame - 1)); - - /* update VCounter */ - v_counter = line; - - /* last line of overscan */ - if (bitmap.viewport.y) - { - blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* reload H-Int counter */ - h_counter = reg[10]; - - /* clear VBLANK flag */ - status &= ~0x08; - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(mcycles_vdp); - } - - /* parse first line of sprites */ - if (reg[1] & 0x40) - { - parse_satb(-1); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* run 68k & Z80 until end of line */ - m68k_run(mcycles_vdp + MCYCLES_PER_LINE); - if (zstate == 1) - { - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - } - - /* run SVP chip */ - if (svp) - { - ssp1601_run(SVP_cycles); - } - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - - /* reset line count */ - line = 0; - - /* Active Display */ - do - { - /* update VCounter */ - v_counter = line; - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(mcycles_vdp); - } - - /* render scanline */ - if (!do_skip) - { - render_line(line); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* H-Int counter */ - if (h_counter == 0) - { - /* reload H-Int counter */ - h_counter = reg[10]; - - /* Horizontal Interrupt is pending */ - hint_pending = 0x10; - if (reg[0] & 0x10) - { - /* level 4 interrupt */ - m68k_update_irq(4); - } - } - else - { - /* decrement H-Int counter */ - h_counter--; - } - - /* run 68k & Z80 until end of line */ - m68k_run(mcycles_vdp + MCYCLES_PER_LINE); - if (zstate == 1) - { - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - } - - /* run SVP chip */ - if (svp) - { - ssp1601_run(SVP_cycles); - } - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - } - while (++line < bitmap.viewport.h); - - /* check viewport changes */ - if (bitmap.viewport.w != bitmap.viewport.ow) - { - bitmap.viewport.ow = bitmap.viewport.w; - bitmap.viewport.changed |= 1; - } - - /* adjust timings for next frame */ - input_end_frame(mcycles_vdp); - m68k.cycles -= mcycles_vdp; - Z80.cycles -= mcycles_vdp; -} - -void system_frame_scd(int do_skip) -{ - /* line counters */ - int start, end, line; - - /* reset frame cycle counter */ - mcycles_vdp = 0; - scd.cycles = 0; - - /* reset VDP FIFO */ - fifo_write_cnt = 0; - fifo_slots = 0; - - /* check if display setings have changed during previous frame */ - if (bitmap.viewport.changed & 2) - { - /* interlaced modes */ - int old_interlaced = interlaced; - interlaced = (reg[12] & 0x02) >> 1; - - if (old_interlaced != interlaced) - { - /* double resolution mode */ - im2_flag = ((reg[12] & 0x06) == 0x06); - - /* reset field status flag */ - odd_frame = interlaced; - - /* video mode has changed */ - bitmap.viewport.changed = 5; - - /* update rendering mode */ - if (reg[1] & 0x04) - { - if (im2_flag) - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; - render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; - } - else - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; - render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; - } - } - } - else - { - /* clear flag */ - bitmap.viewport.changed &= ~2; - } - - /* active screen height */ - if (reg[1] & 0x04) - { - /* Mode 5 */ - if (reg[1] & 0x08) - { - /* 240 active lines */ - bitmap.viewport.h = 240; - bitmap.viewport.y = (config.overscan & 1) * 24 * vdp_pal; - } - else - { - /* 224 active lines */ - bitmap.viewport.h = 224; - bitmap.viewport.y = (config.overscan & 1) * (8 + (24 * vdp_pal)); - } - } - else - { - /* Mode 4 (192 active lines) */ - bitmap.viewport.h = 192; - bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); - } - - /* active screen width */ - bitmap.viewport.w = 256 + ((reg[12] & 0x01) << 6); - - /* check viewport changes */ - if (bitmap.viewport.h != bitmap.viewport.oh) - { - bitmap.viewport.oh = bitmap.viewport.h; - bitmap.viewport.changed |= 1; - } - } - - /* first line of overscan */ - if (bitmap.viewport.y) - { - blank_line(bitmap.viewport.h, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* clear DMA Busy, FIFO FULL & field flags */ - status &= 0xFEED; - - /* set VBLANK & FIFO EMPTY flags */ - status |= 0x0208; - - /* check interlaced modes */ - if (interlaced) - { - /* switch even/odd field flag */ - odd_frame ^= 1; - status |= (odd_frame << 4); - } - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(0); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* H-Int counter */ - if (h_counter == 0) - { - /* Horizontal Interrupt is pending */ - hint_pending = 0x10; - if (reg[0] & 0x10) - { - /* level 4 interrupt */ - m68k_update_irq(4); - } - } - - /* refresh inputs just before VINT */ - osd_input_update(); - - /* VDP always starts after VBLANK so VINT cannot occur on first frame after a VDP reset (verified on real hardware) */ - if (v_counter != bitmap.viewport.h) - { - /* reinitialize VCounter */ - v_counter = bitmap.viewport.h; - - /* delay between VBLANK flag & Vertical Interrupt (Dracula, OutRunners, VR Troopers) */ - m68k_run(788); - if (zstate == 1) - { - z80_run(788); - } - - /* set VINT flag */ - status |= 0x80; - - /* Vertical Interrupt */ - vint_pending = 0x20; - if (reg[1] & 0x20) - { - /* level 6 interrupt */ - m68k_set_irq(6); - } - - /* assert Z80 interrupt */ - Z80.irq_state = ASSERT_LINE; - } - - /* run both 68k & CD hardware until end of line */ - scd_update(MCYCLES_PER_LINE); - - /* run Z80 until end of line */ - if (zstate == 1) - { - z80_run(MCYCLES_PER_LINE); - } - - /* Z80 interrupt is cleared at the end of the line */ - Z80.irq_state = CLEAR_LINE; - - /* update VDP cycle count */ - mcycles_vdp = MCYCLES_PER_LINE; - - /* initialize line count */ - line = bitmap.viewport.h + 1; - - /* initialize overscan area */ - start = lines_per_frame - bitmap.viewport.y; - end = bitmap.viewport.h + bitmap.viewport.y; - - /* Vertical Blanking */ - do - { - /* update VCounter */ - v_counter = line; - - /* render overscan */ - if ((line < end) || (line >= start)) - { - blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* run both 68k & CD hardware until end of line */ - scd_update(mcycles_vdp + MCYCLES_PER_LINE); - - /* run Z80 until end of line */ - if (zstate == 1) - { - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - } - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - } - while (++line < (lines_per_frame - 1)); - - /* update VCounter */ - v_counter = line; - - /* last line of overscan */ - if (bitmap.viewport.y) - { - blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* reload H-Int counter */ - h_counter = reg[10]; - - /* clear VBLANK flag */ - status &= ~0x08; - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(mcycles_vdp); - } - - /* parse first line of sprites */ - if (reg[1] & 0x40) - { - parse_satb(-1); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* run both 68k & CD hardware until end of line */ - scd_update(mcycles_vdp + MCYCLES_PER_LINE); - - /* run Z80 until end of line */ - if (zstate == 1) - { - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - } - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - - /* reset line count */ - line = 0; - - /* Active Display */ - do - { - /* update VCounter */ - v_counter = line; - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(mcycles_vdp); - } - - /* render scanline */ - if (!do_skip) - { - render_line(line); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* H-Int counter */ - if (h_counter == 0) - { - /* reload H-Int counter */ - h_counter = reg[10]; - - /* Horizontal Interrupt is pending */ - hint_pending = 0x10; - if (reg[0] & 0x10) - { - /* level 4 interrupt */ - m68k_update_irq(4); - } - } - else - { - /* decrement H-Int counter */ - h_counter--; - } - - /* run both 68k & CD hardware until end of line */ - scd_update(mcycles_vdp + MCYCLES_PER_LINE); - - /* run Z80 until end of line */ - if (zstate == 1) - { - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - } - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - } - while (++line < bitmap.viewport.h); - - /* check viewport changes */ - if (bitmap.viewport.w != bitmap.viewport.ow) - { - bitmap.viewport.ow = bitmap.viewport.w; - bitmap.viewport.changed |= 1; - } - - /* adjust timings for next frame */ - scd_end_frame(scd.cycles); - input_end_frame(mcycles_vdp); - m68k.cycles -= mcycles_vdp; - Z80.cycles -= mcycles_vdp; -} - -void system_frame_sms(int do_skip) -{ - /* line counter */ - int start, end, line; - - /* reset frame cycle count */ - mcycles_vdp = 0; - - /* reset VDP FIFO */ - fifo_write_cnt = 0; - fifo_slots = 0; - - /* check if display settings has changed during previous frame */ - if (bitmap.viewport.changed & 2) - { - bitmap.viewport.changed &= ~2; - - if (system_hw & SYSTEM_MD) - { - /* interlaced modes */ - int old_interlaced = interlaced; - interlaced = (reg[12] & 0x02) >> 1; - - if (old_interlaced != interlaced) - { - /* double resolution mode */ - im2_flag = ((reg[12] & 0x06) == 0x06); - - /* reset field status flag */ - odd_frame = interlaced; - - /* video mode has changed */ - bitmap.viewport.changed = 5; - - /* update rendering mode */ - if (reg[1] & 0x04) - { - if (im2_flag) - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; - render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; - } - else - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; - render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; - } - } - } - - /* active screen height */ - if (reg[1] & 0x04) - { - /* Mode 5 */ - if (reg[1] & 0x08) - { - /* 240 active lines */ - bitmap.viewport.h = 240; - bitmap.viewport.y = (config.overscan & 1) * 24 * vdp_pal; - } - else - { - /* 224 active lines */ - bitmap.viewport.h = 224; - bitmap.viewport.y = (config.overscan & 1) * (8 + (24 * vdp_pal)); - } - } - else - { - bitmap.viewport.h = 192; - bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); - } - } - else - { - /* check for VDP extended modes */ - int mode = (reg[0] & 0x06) | (reg[1] & 0x18); - - /* update active height */ - if (mode == 0x0E) - { - bitmap.viewport.h = 240; - } - else if (mode == 0x16) - { - bitmap.viewport.h = 224; - } - else - { - bitmap.viewport.h = 192; - } - - /* update vertical overscan */ - if (config.overscan & 1) - { - bitmap.viewport.y = (240 + 48*vdp_pal - bitmap.viewport.h) >> 1; - } - else - { - if ((system_hw == SYSTEM_GG) && !config.gg_extra) - { - /* Display area reduced to 160x144 */ - bitmap.viewport.y = (144 - bitmap.viewport.h) / 2; - } - else - { - bitmap.viewport.y = 0; - } - } - } - - /* active screen width */ - bitmap.viewport.w = 256 + ((reg[12] & 0x01) << 6); - - /* check viewport changes */ - if (bitmap.viewport.h != bitmap.viewport.oh) - { - bitmap.viewport.oh = bitmap.viewport.h; - bitmap.viewport.changed |= 1; - } - } - - /* initialize VCounter */ - v_counter = bitmap.viewport.h; - - /* first line of overscan */ - if (bitmap.viewport.y > 0) - { - blank_line(v_counter, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* Mega Drive VDP specific */ - if (system_hw & SYSTEM_MD) - { - /* clear DMA Busy & field flags */ - status &= 0xED; - - /* set VBLANK flag */ - status |= 0x08; - - /* interlaced modes only */ - if (interlaced) - { - /* switch even/odd field flag */ - odd_frame ^= 1; - status |= (odd_frame << 4); - } - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(0); - } - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* H-Int counter */ - if (h_counter == 0) - { - /* Horizontal Interrupt is pending */ - hint_pending = 0x10; - if (reg[0] & 0x10) - { - /* Cycle-accurate HINT */ - /* IRQ line is latched between instructions, during instruction last cycle. */ - /* This means that if Z80 cycle count is exactly a multiple of MCYCLES_PER_LINE, */ - /* interrupt should be triggered AFTER the next instruction. */ - if ((Z80.cycles % MCYCLES_PER_LINE) == 0) - { - z80_run(Z80.cycles + 1); - } - - /* Z80 interrupt */ - Z80.irq_state = ASSERT_LINE; - } - } - - /* refresh inputs just before VINT */ - osd_input_update(); - - /* run Z80 until end of line */ - z80_run(MCYCLES_PER_LINE); - - /* make sure VINT flag was not read (then cleared) by last instruction */ - if (v_counter == bitmap.viewport.h) - { - /* Set VINT flag */ - status |= 0x80; - - /* Vertical Interrupt */ - vint_pending = 0x20; - if (reg[1] & 0x20) - { - Z80.irq_state = ASSERT_LINE; - } - } - - /* update VDP cycle count */ - mcycles_vdp = MCYCLES_PER_LINE; - - /* initialize line count */ - line = bitmap.viewport.h + 1; - - /* initialize overscan area */ - start = lines_per_frame - bitmap.viewport.y; - end = bitmap.viewport.h + bitmap.viewport.y; - - /* Vertical Blanking */ - do - { - /* update VCounter */ - v_counter = line; - - /* render overscan */ - if ((line < end) || (line >= start)) - { - /* Master System & Game Gear VDP specific */ - if ((system_hw < SYSTEM_MD) && (line > (lines_per_frame - 16))) - { - /* Sprites are still processed during top border */ - if (reg[1] & 0x40) - { - render_obj((line - lines_per_frame) & 1); - } - - /* Sprites pre-processing occurs even when display is disabled */ - parse_satb(line - lines_per_frame); - } - - blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* run Z80 until end of line */ - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - } - while (++line < (lines_per_frame - 1)); - - /* update VCounter */ - v_counter = line; - - /* last line of overscan */ - if (bitmap.viewport.y > 0) - { - /* Master System & Game Gear VDP specific */ - if (system_hw < SYSTEM_MD) - { - /* Sprites are still processed during top border */ - if (reg[1] & 0x40) - { - render_obj(1); - } - } - - blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* reload H-Int counter */ - h_counter = reg[10]; - - /* Detect pause button input (in Game Gear Mode, NMI is not generated) */ - if (system_hw != SYSTEM_GG) - { - if (input.pad[0] & INPUT_START) - { - /* NMI is edge-triggered */ - if (!pause_b) - { - pause_b = 1; - z80_set_nmi_line(ASSERT_LINE); - z80_set_nmi_line(CLEAR_LINE); - } - } - else - { - pause_b = 0; - } - } - - /* 3-D glasses faking: skip rendering of left lens frame */ - do_skip |= (work_ram[0x1ffb] & cart.special & HW_3D_GLASSES); - - /* Mega Drive VDP specific */ - if (system_hw & SYSTEM_MD) - { - /* clear VBLANK flag */ - status &= ~0x08; - - /* run VDP DMA */ - if (dma_length) - { - vdp_dma_update(mcycles_vdp); - } - - /* parse first line of sprites */ - if (reg[1] & 0x40) - { - parse_satb(-1); - } - } - - /* Master System & Game Gear VDP specific */ - else - { - /* Sprites pre-processing occurs even when display is disabled */ - parse_satb(-1); - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* run Z80 until end of line */ - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - - /* latch Vertical Scroll register */ - vscroll = reg[9]; - - /* reset line count */ - line = 0; - - /* Active Display */ - do - { - /* run VDP DMA (Mega Drive VDP specific) */ - if (dma_length) - { - vdp_dma_update(mcycles_vdp); - } - - /* make sure that line has not already been rendered */ - if (v_counter != line) - { - /* update VCounter */ - v_counter = line; - - /* render scanline */ - if (!do_skip) - { - render_line(line); - } - } - - /* update 6-Buttons & Lightguns */ - input_refresh(); - - /* H-Int counter */ - if (h_counter == 0) - { - /* reload H-Int counter */ - h_counter = reg[10]; - - /* Horizontal Interrupt is pending */ - hint_pending = 0x10; - if (reg[0] & 0x10) - { - /* Cycle-accurate HINT */ - /* IRQ line is latched between instructions, during instruction last cycle. */ - /* This means that if Z80 cycle count is exactly a multiple of MCYCLES_PER_LINE, */ - /* interrupt should be triggered AFTER the next instruction. */ - if ((Z80.cycles % MCYCLES_PER_LINE) == 0) - { - z80_run(Z80.cycles + 1); - } - - /* assert Z80 interrupt */ - Z80.irq_state = ASSERT_LINE; - } - } - else - { - /* decrement H-Int counter */ - h_counter--; - } - - /* run Z80 until end of line */ - z80_run(mcycles_vdp + MCYCLES_PER_LINE); - - /* update VDP cycle count */ - mcycles_vdp += MCYCLES_PER_LINE; - } - while (++line < bitmap.viewport.h); - - /* check viewport changes */ - if (bitmap.viewport.w != bitmap.viewport.ow) - { - bitmap.viewport.ow = bitmap.viewport.w; - bitmap.viewport.changed |= 1; - } - - /* adjust timings for next frame */ - input_end_frame(mcycles_vdp); - Z80.cycles -= mcycles_vdp; -} +/*************************************************************************************** + * Genesis Plus + * Virtual System emulation + * + * Support for 16-bit & 8-bit hardware modes + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2018 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "eq.h" + +/* Global variables */ +t_bitmap bitmap; +t_snd snd; +uint32 mcycles_vdp; +uint8 system_hw; +uint8 system_bios; +uint32 system_clock; +int16 SVP_cycles = 800; + +static uint8 pause_b; +static EQSTATE eq[2]; +static int16 llp,rrp; + +/******************************************************************************************/ +/* Audio subsystem */ +/******************************************************************************************/ + +int audio_init(int samplerate, double framerate) +{ + /* Shutdown first */ + audio_shutdown(); + + /* Clear the sound data context */ + memset(&snd, 0, sizeof (snd)); + + /* Initialize Blip Buffers */ + snd.blips[0] = blip_new(samplerate / 10); + if (!snd.blips[0]) + { + return -1; + } + + /* Mega CD sound hardware */ + if (system_hw == SYSTEM_MCD) + { + /* allocate blip buffers */ + snd.blips[1] = blip_new(samplerate / 10); + snd.blips[2] = blip_new(samplerate / 10); + if (!snd.blips[1] || !snd.blips[2]) + { + audio_shutdown(); + return -1; + } + } + + /* Initialize resampler internal rates */ + audio_set_rate(samplerate, framerate); + + /* Set audio enable flag */ + snd.enabled = 1; + + /* Reset audio */ + audio_reset(); + + return (0); +} + +void audio_set_rate(int samplerate, double framerate) +{ + /* Number of M-cycles executed per second. */ + /* All emulated chips are kept in sync by using a common oscillator (MCLOCK) */ + /* */ + /* The original console would run exactly 53693175 M-cycles per sec (53203424 for PAL), */ + /* 3420 M-cycles per line and 262 (313 for PAL) lines per frame, which gives an exact */ + /* framerate of 59.92 (49.70 for PAL) frames per second. */ + /* */ + /* Since audio samples are generated at the end of the frame, to prevent audio skipping */ + /* or lag between emulated frames, number of samples rendered per frame must be set to */ + /* output samplerate (number of samples played per second) divided by input framerate */ + /* (number of frames emulated per seconds). */ + /* */ + /* On some systems, we may want to achieve 100% smooth video rendering by synchronizing */ + /* frame emulation with VSYNC, which frequency is generally not exactly those values. */ + /* In that case, input framerate (number of frames emulated per seconds) is the same as */ + /* output framerate (number of frames rendered per seconds) by the host video hardware. */ + /* */ + /* When no framerate is specified, base clock is set to original master clock value. */ + /* Otherwise, it is set to number of M-cycles emulated per line (fixed) multiplied by */ + /* number of lines per frame (VDP mode specific) multiplied by input framerate. */ + /* */ + double mclk = framerate ? (MCYCLES_PER_LINE * (vdp_pal ? 313 : 262) * framerate) : system_clock; + + /* For maximal accuracy, sound chips are running at their original rate using common */ + /* master clock timebase so they remain perfectly synchronized together, while still */ + /* being synchronized with 68K and Z80 CPUs as well. Mixed sound chip output is then */ + /* resampled to desired rate at the end of each frame, using Blip Buffer. */ + blip_set_rates(snd.blips[0], mclk, samplerate); + + /* Mega CD sound hardware */ + if (system_hw == SYSTEM_MCD) + { + /* number of SCD master clocks run per second */ + mclk = (mclk / system_clock) * SCD_CLOCK; + + /* PCM core */ + pcm_init(mclk, samplerate); + + /* CDD core */ + cdd_init(samplerate); + } + + /* Reinitialize internal rates */ + snd.sample_rate = samplerate; + snd.frame_rate = framerate; +} + +void audio_reset(void) +{ + int i; + + /* Clear blip buffers */ + for (i=0; i<3; i++) + { + if (snd.blips[i]) + { + blip_clear(snd.blips[i]); + } + } + + /* Low-Pass filter */ + llp = 0; + rrp = 0; + + /* 3 band EQ */ + audio_set_equalizer(); +} + +void audio_set_equalizer(void) +{ + init_3band_state(&eq[0],config.low_freq,config.high_freq,snd.sample_rate); + init_3band_state(&eq[1],config.low_freq,config.high_freq,snd.sample_rate); + eq[0].lg = eq[1].lg = (double)(config.lg) / 100.0; + eq[0].mg = eq[1].mg = (double)(config.mg) / 100.0; + eq[0].hg = eq[1].hg = (double)(config.hg) / 100.0; +} + +void audio_shutdown(void) +{ + int i; + + /* Delete blip buffers */ + for (i=0; i<3; i++) + { + blip_delete(snd.blips[i]); + snd.blips[i] = 0; + } +} + +int audio_update(int16 *buffer) +{ + /* run sound chips until end of frame */ + int size = sound_update(mcycles_vdp); + + /* Mega CD specific */ + if (system_hw == SYSTEM_MCD) + { + /* sync PCM chip with other sound chips */ + pcm_update(size); + + /* read CDDA samples */ + cdd_read_audio(size); + +#ifdef ALIGN_SND + /* return an aligned number of samples if required */ + size &= ALIGN_SND; +#endif + + /* resample & mix FM/PSG, PCM & CD-DA streams to output buffer */ + blip_mix_samples(snd.blips[0], snd.blips[1], snd.blips[2], buffer, size); + } + else + { +#ifdef ALIGN_SND + /* return an aligned number of samples if required */ + size &= ALIGN_SND; +#endif + + /* resample FM/PSG mixed stream to output buffer */ + blip_read_samples(snd.blips[0], buffer, size); + } + + /* Audio filtering */ + if (config.filter) + { + int samples = size; + int16 *out = buffer; + int32 l, r; + + if (config.filter & 1) + { + /* single-pole low-pass filter (6 dB/octave) */ + uint32 factora = config.lp_range; + uint32 factorb = 0x10000 - factora; + + /* restore previous sample */ + l = llp; + r = rrp; + + do + { + /* apply low-pass filter */ + l = l*factora + out[0]*factorb; + r = r*factora + out[1]*factorb; + + /* 16.16 fixed point */ + l >>= 16; + r >>= 16; + + /* update sound buffer */ + *out++ = l; + *out++ = r; + } + while (--samples); + + /* save last samples for next frame */ + llp = l; + rrp = r; + } + else if (config.filter & 2) + { + do + { + /* 3 Band EQ */ + l = do_3band(&eq[0],out[0]); + r = do_3band(&eq[1],out[1]); + + /* clipping (16-bit samples) */ + if (l > 32767) l = 32767; + else if (l < -32768) l = -32768; + if (r > 32767) r = 32767; + else if (r < -32768) r = -32768; + + /* update sound buffer */ + *out++ = l; + *out++ = r; + } + while (--samples); + } + } + + /* Mono output mixing */ + if (config.mono) + { + int16 out; + int samples = size; + do + { + out = (buffer[0] + buffer[1]) / 2; + *buffer++ = out; + *buffer++ = out; + } + while (--samples); + } + +#ifdef LOGSOUND + error("%d samples returned\n\n",size); +#endif + + return size; +} + +/**************************************************************** + * Virtual System emulation + ****************************************************************/ +void system_init(void) +{ + gen_init(); + io_init(); + vdp_init(); + render_init(); + sound_init(); +} + +void system_reset(void) +{ + gen_reset(1); + io_reset(); + render_reset(); + vdp_reset(); + sound_reset(); + audio_reset(); +} + +void system_frame_gen(int do_skip) +{ + /* line counters */ + int start, end, line; + + /* reset frame cycle counter */ + mcycles_vdp = 0; + + /* reset VDP FIFO */ + fifo_write_cnt = 0; + fifo_slots = 0; + + /* check if display setings have changed during previous frame */ + if (bitmap.viewport.changed & 2) + { + /* interlaced modes */ + int old_interlaced = interlaced; + interlaced = (reg[12] & 0x02) >> 1; + + if (old_interlaced != interlaced) + { + /* double resolution mode */ + im2_flag = ((reg[12] & 0x06) == 0x06); + + /* reset field status flag */ + odd_frame = interlaced; + + /* video mode has changed */ + bitmap.viewport.changed = 5; + + /* update rendering mode */ + if (reg[1] & 0x04) + { + if (im2_flag) + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; + render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; + } + else + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; + render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; + } + } + } + else + { + /* clear flag */ + bitmap.viewport.changed &= ~2; + } + + /* active screen height */ + if (reg[1] & 0x04) + { + /* Mode 5 */ + if (reg[1] & 0x08) + { + /* 240 active lines */ + bitmap.viewport.h = 240; + bitmap.viewport.y = (config.overscan & 1) * 24 * vdp_pal; + } + else + { + /* 224 active lines */ + bitmap.viewport.h = 224; + bitmap.viewport.y = (config.overscan & 1) * (8 + (24 * vdp_pal)); + } + } + else + { + /* Mode 4 (192 active lines) */ + bitmap.viewport.h = 192; + bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); + } + + /* active screen width */ + bitmap.viewport.w = 256 + ((reg[12] & 0x01) << 6); + + /* check viewport changes */ + if (bitmap.viewport.h != bitmap.viewport.oh) + { + bitmap.viewport.oh = bitmap.viewport.h; + bitmap.viewport.changed |= 1; + } + } + + /* first line of overscan */ + if (bitmap.viewport.y) + { + blank_line(bitmap.viewport.h, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* clear DMA Busy, FIFO FULL & field flags */ + status &= 0xFEED; + + /* set VBLANK & FIFO EMPTY flags */ + status |= 0x0208; + + /* check interlaced modes */ + if (interlaced) + { + /* switch even/odd field flag */ + odd_frame ^= 1; + status |= (odd_frame << 4); + } + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(0); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* H-Int counter */ + if (h_counter == 0) + { + /* Horizontal Interrupt is pending */ + hint_pending = 0x10; + if (reg[0] & 0x10) + { + /* level 4 interrupt */ + m68k_update_irq(4); + } + } + + /* refresh inputs just before VINT (Warriors of Eternal Sun) */ + osd_input_update(); + + /* VDP always starts after VBLANK so VINT cannot occur on first frame after a VDP reset (verified on real hardware) */ + if (v_counter != bitmap.viewport.h) + { + /* reinitialize VCounter */ + v_counter = bitmap.viewport.h; + + /* delay between VBLANK flag & Vertical Interrupt (Dracula, OutRunners, VR Troopers) */ + m68k_run(788); + if (zstate == 1) + { + z80_run(788); + } + + /* set VINT flag */ + status |= 0x80; + + /* Vertical Interrupt */ + vint_pending = 0x20; + if (reg[1] & 0x20) + { + /* level 6 interrupt */ + m68k_set_irq(6); + } + + /* assert Z80 interrupt */ + Z80.irq_state = ASSERT_LINE; + } + + /* run 68k & Z80 until end of line */ + m68k_run(MCYCLES_PER_LINE); + if (zstate == 1) + { + z80_run(MCYCLES_PER_LINE); + } + + /* Z80 interrupt is cleared at the end of the line */ + Z80.irq_state = CLEAR_LINE; + + /* run SVP chip */ + if (svp) + { + ssp1601_run(SVP_cycles); + } + + /* update VDP cycle count */ + mcycles_vdp = MCYCLES_PER_LINE; + + /* initialize line count */ + line = bitmap.viewport.h + 1; + + /* initialize overscan area */ + start = lines_per_frame - bitmap.viewport.y; + end = bitmap.viewport.h + bitmap.viewport.y; + + /* Vertical Blanking */ + do + { + /* update VCounter */ + v_counter = line; + + /* render overscan */ + if ((line < end) || (line >= start)) + { + blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* run 68k & Z80 until end of line */ + m68k_run(mcycles_vdp + MCYCLES_PER_LINE); + if (zstate == 1) + { + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + } + + /* run SVP chip */ + if (svp) + { + ssp1601_run(SVP_cycles); + } + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + } + while (++line < (lines_per_frame - 1)); + + /* update VCounter */ + v_counter = line; + + /* last line of overscan */ + if (bitmap.viewport.y) + { + blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* reload H-Int counter */ + h_counter = reg[10]; + + /* clear VBLANK flag */ + status &= ~0x08; + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(mcycles_vdp); + } + + /* parse first line of sprites */ + if (reg[1] & 0x40) + { + parse_satb(-1); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* run 68k & Z80 until end of line */ + m68k_run(mcycles_vdp + MCYCLES_PER_LINE); + if (zstate == 1) + { + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + } + + /* run SVP chip */ + if (svp) + { + ssp1601_run(SVP_cycles); + } + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + + /* reset line count */ + line = 0; + + /* Active Display */ + do + { + /* update VCounter */ + v_counter = line; + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(mcycles_vdp); + } + + /* render scanline */ + if (!do_skip) + { + render_line(line); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* H-Int counter */ + if (h_counter == 0) + { + /* reload H-Int counter */ + h_counter = reg[10]; + + /* Horizontal Interrupt is pending */ + hint_pending = 0x10; + if (reg[0] & 0x10) + { + /* level 4 interrupt */ + m68k_update_irq(4); + } + } + else + { + /* decrement H-Int counter */ + h_counter--; + } + + /* run 68k & Z80 until end of line */ + m68k_run(mcycles_vdp + MCYCLES_PER_LINE); + if (zstate == 1) + { + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + } + + /* run SVP chip */ + if (svp) + { + ssp1601_run(SVP_cycles); + } + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + } + while (++line < bitmap.viewport.h); + + /* check viewport changes */ + if (bitmap.viewport.w != bitmap.viewport.ow) + { + bitmap.viewport.ow = bitmap.viewport.w; + bitmap.viewport.changed |= 1; + } + + /* adjust timings for next frame */ + input_end_frame(mcycles_vdp); + m68k.cycles -= mcycles_vdp; + Z80.cycles -= mcycles_vdp; +} + +void system_frame_scd(int do_skip) +{ + /* line counters */ + int start, end, line; + + /* reset frame cycle counter */ + mcycles_vdp = 0; + scd.cycles = 0; + + /* reset VDP FIFO */ + fifo_write_cnt = 0; + fifo_slots = 0; + + /* check if display setings have changed during previous frame */ + if (bitmap.viewport.changed & 2) + { + /* interlaced modes */ + int old_interlaced = interlaced; + interlaced = (reg[12] & 0x02) >> 1; + + if (old_interlaced != interlaced) + { + /* double resolution mode */ + im2_flag = ((reg[12] & 0x06) == 0x06); + + /* reset field status flag */ + odd_frame = interlaced; + + /* video mode has changed */ + bitmap.viewport.changed = 5; + + /* update rendering mode */ + if (reg[1] & 0x04) + { + if (im2_flag) + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; + render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; + } + else + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; + render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; + } + } + } + else + { + /* clear flag */ + bitmap.viewport.changed &= ~2; + } + + /* active screen height */ + if (reg[1] & 0x04) + { + /* Mode 5 */ + if (reg[1] & 0x08) + { + /* 240 active lines */ + bitmap.viewport.h = 240; + bitmap.viewport.y = (config.overscan & 1) * 24 * vdp_pal; + } + else + { + /* 224 active lines */ + bitmap.viewport.h = 224; + bitmap.viewport.y = (config.overscan & 1) * (8 + (24 * vdp_pal)); + } + } + else + { + /* Mode 4 (192 active lines) */ + bitmap.viewport.h = 192; + bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); + } + + /* active screen width */ + bitmap.viewport.w = 256 + ((reg[12] & 0x01) << 6); + + /* check viewport changes */ + if (bitmap.viewport.h != bitmap.viewport.oh) + { + bitmap.viewport.oh = bitmap.viewport.h; + bitmap.viewport.changed |= 1; + } + } + + /* first line of overscan */ + if (bitmap.viewport.y) + { + blank_line(bitmap.viewport.h, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* clear DMA Busy, FIFO FULL & field flags */ + status &= 0xFEED; + + /* set VBLANK & FIFO EMPTY flags */ + status |= 0x0208; + + /* check interlaced modes */ + if (interlaced) + { + /* switch even/odd field flag */ + odd_frame ^= 1; + status |= (odd_frame << 4); + } + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(0); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* H-Int counter */ + if (h_counter == 0) + { + /* Horizontal Interrupt is pending */ + hint_pending = 0x10; + if (reg[0] & 0x10) + { + /* level 4 interrupt */ + m68k_update_irq(4); + } + } + + /* refresh inputs just before VINT */ + osd_input_update(); + + /* VDP always starts after VBLANK so VINT cannot occur on first frame after a VDP reset (verified on real hardware) */ + if (v_counter != bitmap.viewport.h) + { + /* reinitialize VCounter */ + v_counter = bitmap.viewport.h; + + /* delay between VBLANK flag & Vertical Interrupt (Dracula, OutRunners, VR Troopers) */ + m68k_run(788); + if (zstate == 1) + { + z80_run(788); + } + + /* set VINT flag */ + status |= 0x80; + + /* Vertical Interrupt */ + vint_pending = 0x20; + if (reg[1] & 0x20) + { + /* level 6 interrupt */ + m68k_set_irq(6); + } + + /* assert Z80 interrupt */ + Z80.irq_state = ASSERT_LINE; + } + + /* run both 68k & CD hardware until end of line */ + scd_update(MCYCLES_PER_LINE); + + /* run Z80 until end of line */ + if (zstate == 1) + { + z80_run(MCYCLES_PER_LINE); + } + + /* Z80 interrupt is cleared at the end of the line */ + Z80.irq_state = CLEAR_LINE; + + /* update VDP cycle count */ + mcycles_vdp = MCYCLES_PER_LINE; + + /* initialize line count */ + line = bitmap.viewport.h + 1; + + /* initialize overscan area */ + start = lines_per_frame - bitmap.viewport.y; + end = bitmap.viewport.h + bitmap.viewport.y; + + /* Vertical Blanking */ + do + { + /* update VCounter */ + v_counter = line; + + /* render overscan */ + if ((line < end) || (line >= start)) + { + blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* run both 68k & CD hardware until end of line */ + scd_update(mcycles_vdp + MCYCLES_PER_LINE); + + /* run Z80 until end of line */ + if (zstate == 1) + { + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + } + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + } + while (++line < (lines_per_frame - 1)); + + /* update VCounter */ + v_counter = line; + + /* last line of overscan */ + if (bitmap.viewport.y) + { + blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* reload H-Int counter */ + h_counter = reg[10]; + + /* clear VBLANK flag */ + status &= ~0x08; + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(mcycles_vdp); + } + + /* parse first line of sprites */ + if (reg[1] & 0x40) + { + parse_satb(-1); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* run both 68k & CD hardware until end of line */ + scd_update(mcycles_vdp + MCYCLES_PER_LINE); + + /* run Z80 until end of line */ + if (zstate == 1) + { + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + } + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + + /* reset line count */ + line = 0; + + /* Active Display */ + do + { + /* update VCounter */ + v_counter = line; + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(mcycles_vdp); + } + + /* render scanline */ + if (!do_skip) + { + render_line(line); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* H-Int counter */ + if (h_counter == 0) + { + /* reload H-Int counter */ + h_counter = reg[10]; + + /* Horizontal Interrupt is pending */ + hint_pending = 0x10; + if (reg[0] & 0x10) + { + /* level 4 interrupt */ + m68k_update_irq(4); + } + } + else + { + /* decrement H-Int counter */ + h_counter--; + } + + /* run both 68k & CD hardware until end of line */ + scd_update(mcycles_vdp + MCYCLES_PER_LINE); + + /* run Z80 until end of line */ + if (zstate == 1) + { + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + } + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + } + while (++line < bitmap.viewport.h); + + /* check viewport changes */ + if (bitmap.viewport.w != bitmap.viewport.ow) + { + bitmap.viewport.ow = bitmap.viewport.w; + bitmap.viewport.changed |= 1; + } + + /* adjust timings for next frame */ + scd_end_frame(scd.cycles); + input_end_frame(mcycles_vdp); + m68k.cycles -= mcycles_vdp; + Z80.cycles -= mcycles_vdp; +} + +void system_frame_sms(int do_skip) +{ + /* line counter */ + int start, end, line; + + /* reset frame cycle count */ + mcycles_vdp = 0; + + /* reset VDP FIFO */ + fifo_write_cnt = 0; + fifo_slots = 0; + + /* check if display settings has changed during previous frame */ + if (bitmap.viewport.changed & 2) + { + bitmap.viewport.changed &= ~2; + + if (system_hw & SYSTEM_MD) + { + /* interlaced modes */ + int old_interlaced = interlaced; + interlaced = (reg[12] & 0x02) >> 1; + + if (old_interlaced != interlaced) + { + /* double resolution mode */ + im2_flag = ((reg[12] & 0x06) == 0x06); + + /* reset field status flag */ + odd_frame = interlaced; + + /* video mode has changed */ + bitmap.viewport.changed = 5; + + /* update rendering mode */ + if (reg[1] & 0x04) + { + if (im2_flag) + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; + render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; + } + else + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; + render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; + } + } + } + + /* active screen height */ + if (reg[1] & 0x04) + { + /* Mode 5 */ + if (reg[1] & 0x08) + { + /* 240 active lines */ + bitmap.viewport.h = 240; + bitmap.viewport.y = (config.overscan & 1) * 24 * vdp_pal; + } + else + { + /* 224 active lines */ + bitmap.viewport.h = 224; + bitmap.viewport.y = (config.overscan & 1) * (8 + (24 * vdp_pal)); + } + } + else + { + bitmap.viewport.h = 192; + bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); + } + } + else + { + /* check for VDP extended modes */ + int mode = (reg[0] & 0x06) | (reg[1] & 0x18); + + /* update active height */ + if (mode == 0x0E) + { + bitmap.viewport.h = 240; + } + else if (mode == 0x16) + { + bitmap.viewport.h = 224; + } + else + { + bitmap.viewport.h = 192; + } + + /* update vertical overscan */ + if (config.overscan & 1) + { + bitmap.viewport.y = (240 + 48*vdp_pal - bitmap.viewport.h) >> 1; + } + else + { + if ((system_hw == SYSTEM_GG) && !config.gg_extra) + { + /* Display area reduced to 160x144 */ + bitmap.viewport.y = (144 - bitmap.viewport.h) / 2; + } + else + { + bitmap.viewport.y = 0; + } + } + } + + /* active screen width */ + bitmap.viewport.w = 256 + ((reg[12] & 0x01) << 6); + + /* check viewport changes */ + if (bitmap.viewport.h != bitmap.viewport.oh) + { + bitmap.viewport.oh = bitmap.viewport.h; + bitmap.viewport.changed |= 1; + } + } + + /* initialize VCounter */ + v_counter = bitmap.viewport.h; + + /* first line of overscan */ + if (bitmap.viewport.y > 0) + { + blank_line(v_counter, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* Mega Drive VDP specific */ + if (system_hw & SYSTEM_MD) + { + /* clear DMA Busy & field flags */ + status &= 0xED; + + /* set VBLANK flag */ + status |= 0x08; + + /* interlaced modes only */ + if (interlaced) + { + /* switch even/odd field flag */ + odd_frame ^= 1; + status |= (odd_frame << 4); + } + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(0); + } + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* H-Int counter */ + if (h_counter == 0) + { + /* Horizontal Interrupt is pending */ + hint_pending = 0x10; + if (reg[0] & 0x10) + { + /* Cycle-accurate HINT */ + /* IRQ line is latched between instructions, during instruction last cycle. */ + /* This means that if Z80 cycle count is exactly a multiple of MCYCLES_PER_LINE, */ + /* interrupt should be triggered AFTER the next instruction. */ + if ((Z80.cycles % MCYCLES_PER_LINE) == 0) + { + z80_run(Z80.cycles + 1); + } + + /* Z80 interrupt */ + Z80.irq_state = ASSERT_LINE; + } + } + + /* refresh inputs just before VINT */ + osd_input_update(); + + /* run Z80 until end of line */ + z80_run(MCYCLES_PER_LINE); + + /* make sure VINT flag was not read (then cleared) by last instruction */ + if (v_counter == bitmap.viewport.h) + { + /* Set VINT flag */ + status |= 0x80; + + /* Vertical Interrupt */ + vint_pending = 0x20; + if (reg[1] & 0x20) + { + Z80.irq_state = ASSERT_LINE; + } + } + + /* update VDP cycle count */ + mcycles_vdp = MCYCLES_PER_LINE; + + /* initialize line count */ + line = bitmap.viewport.h + 1; + + /* initialize overscan area */ + start = lines_per_frame - bitmap.viewport.y; + end = bitmap.viewport.h + bitmap.viewport.y; + + /* Vertical Blanking */ + do + { + /* update VCounter */ + v_counter = line; + + /* render overscan */ + if ((line < end) || (line >= start)) + { + /* Master System & Game Gear VDP specific */ + if ((system_hw < SYSTEM_MD) && (line > (lines_per_frame - 16))) + { + /* Sprites are still processed during top border */ + if (reg[1] & 0x40) + { + render_obj((line - lines_per_frame) & 1); + } + + /* Sprites pre-processing occurs even when display is disabled */ + parse_satb(line - lines_per_frame); + } + + blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* run Z80 until end of line */ + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + } + while (++line < (lines_per_frame - 1)); + + /* update VCounter */ + v_counter = line; + + /* last line of overscan */ + if (bitmap.viewport.y > 0) + { + /* Master System & Game Gear VDP specific */ + if (system_hw < SYSTEM_MD) + { + /* Sprites are still processed during top border */ + if (reg[1] & 0x40) + { + render_obj(1); + } + } + + blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* reload H-Int counter */ + h_counter = reg[10]; + + /* Detect pause button input (in Game Gear Mode, NMI is not generated) */ + if (system_hw != SYSTEM_GG) + { + if (input.pad[0] & INPUT_START) + { + /* NMI is edge-triggered */ + if (!pause_b) + { + pause_b = 1; + z80_set_nmi_line(ASSERT_LINE); + z80_set_nmi_line(CLEAR_LINE); + } + } + else + { + pause_b = 0; + } + } + + /* 3-D glasses faking: skip rendering of left lens frame */ + do_skip |= (work_ram[0x1ffb] & cart.special & HW_3D_GLASSES); + + /* Mega Drive VDP specific */ + if (system_hw & SYSTEM_MD) + { + /* clear VBLANK flag */ + status &= ~0x08; + + /* run VDP DMA */ + if (dma_length) + { + vdp_dma_update(mcycles_vdp); + } + + /* parse first line of sprites */ + if (reg[1] & 0x40) + { + parse_satb(-1); + } + } + + /* Master System & Game Gear VDP specific */ + else + { + /* Sprites pre-processing occurs even when display is disabled */ + parse_satb(-1); + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* run Z80 until end of line */ + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + + /* latch Vertical Scroll register */ + vscroll = reg[9]; + + /* reset line count */ + line = 0; + + /* Active Display */ + do + { + /* run VDP DMA (Mega Drive VDP specific) */ + if (dma_length) + { + vdp_dma_update(mcycles_vdp); + } + + /* make sure that line has not already been rendered */ + if (v_counter != line) + { + /* update VCounter */ + v_counter = line; + + /* render scanline */ + if (!do_skip) + { + render_line(line); + } + } + + /* update 6-Buttons & Lightguns */ + input_refresh(); + + /* H-Int counter */ + if (h_counter == 0) + { + /* reload H-Int counter */ + h_counter = reg[10]; + + /* Horizontal Interrupt is pending */ + hint_pending = 0x10; + if (reg[0] & 0x10) + { + /* Cycle-accurate HINT */ + /* IRQ line is latched between instructions, during instruction last cycle. */ + /* This means that if Z80 cycle count is exactly a multiple of MCYCLES_PER_LINE, */ + /* interrupt should be triggered AFTER the next instruction. */ + if ((Z80.cycles % MCYCLES_PER_LINE) == 0) + { + z80_run(Z80.cycles + 1); + } + + /* assert Z80 interrupt */ + Z80.irq_state = ASSERT_LINE; + } + } + else + { + /* decrement H-Int counter */ + h_counter--; + } + + /* run Z80 until end of line */ + z80_run(mcycles_vdp + MCYCLES_PER_LINE); + + /* update VDP cycle count */ + mcycles_vdp += MCYCLES_PER_LINE; + } + while (++line < bitmap.viewport.h); + + /* check viewport changes */ + if (bitmap.viewport.w != bitmap.viewport.ow) + { + bitmap.viewport.ow = bitmap.viewport.w; + bitmap.viewport.changed |= 1; + } + + /* adjust timings for next frame */ + input_end_frame(mcycles_vdp); + Z80.cycles -= mcycles_vdp; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/system.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/system.h new file mode 100644 index 0000000000..d38e014203 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/system.h @@ -0,0 +1,121 @@ +/*************************************************************************************** + * Genesis Plus + * Virtual System emulation + * + * Support for 16-bit & 8-bit hardware modes + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2018 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _SYSTEM_H_ +#define _SYSTEM_H_ + +#include "blip_buf.h" + +/* Supported hardware models */ +#define SYSTEM_SG 0x10 +#define SYSTEM_SGII 0x11 +#define SYSTEM_MARKIII 0x12 +#define SYSTEM_SMS 0x20 +#define SYSTEM_SMS2 0x21 +#define SYSTEM_GG 0x40 +#define SYSTEM_GGMS 0x41 +#define SYSTEM_MD 0x80 +#define SYSTEM_PBC 0x81 +#define SYSTEM_PICO 0x82 +#define SYSTEM_MCD 0x84 + +/* NTSC & PAL Master Clock frequencies */ +#define MCLOCK_NTSC 53693175 +#define MCLOCK_PAL 53203424 + +/* Number of M-Cycles executed per line */ +#define MCYCLES_PER_LINE 3420 + +/* Horizontal timing offsets when running in Z80 mode */ +#define SMS_CYCLE_OFFSET 530 +#define PBC_CYCLE_OFFSET 560 + +typedef struct +{ + uint8 *data; /* Bitmap data */ + int width; /* Bitmap width */ + int height; /* Bitmap height */ + int pitch; /* Bitmap pitch */ + struct + { + int x; /* X offset of viewport within bitmap */ + int y; /* Y offset of viewport within bitmap */ + int w; /* Width of viewport */ + int h; /* Height of viewport */ + int ow; /* Previous width of viewport */ + int oh; /* Previous height of viewport */ + int changed; /* 1= Viewport width or height have changed */ + } viewport; +} t_bitmap; + +typedef struct +{ + int sample_rate; /* Output Sample rate (8000-48000) */ + double frame_rate; /* Output Frame rate (usually 50 or 60 frames per second) */ + int enabled; /* 1= sound emulation is enabled */ + blip_t* blips[3]; /* Blip Buffer resampling (stereo) */ +} t_snd; + + +/* Global variables */ +extern t_bitmap bitmap; +extern t_snd snd; +extern uint32 mcycles_vdp; +extern int16 SVP_cycles; +extern uint8 system_hw; +extern uint8 system_bios; +extern uint32 system_clock; + +/* Function prototypes */ +extern int audio_init(int samplerate, double framerate); +extern void audio_set_rate(int samplerate, double framerate); +extern void audio_reset(void); +extern void audio_shutdown(void); +extern int audio_update(int16 *buffer); +extern void audio_set_equalizer(void); +extern void system_init(void); +extern void system_reset(void); +extern void system_frame_gen(int do_skip); +extern void system_frame_scd(int do_skip); +extern void system_frame_sms(int do_skip); + +#endif /* _SYSTEM_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/Block.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/Block.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/Block.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/Block.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/CHANGELOG b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/CHANGELOG similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/CHANGELOG rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/CHANGELOG diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/COPYING b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/COPYING similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/COPYING rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/COPYING diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/README b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/README similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/README rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/README diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/Version_script.in b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/Version_script.in similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/Version_script.in rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/Version_script.in diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/asm_arm.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/asm_arm.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/asm_arm.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/asm_arm.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/backends.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/backends.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/backends.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/backends.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/bitwise.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/bitwise.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/bitwise.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/bitwise.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/block.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/block.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/block.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/block.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/codebook.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/codebook.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/codebook.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/codebook.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/codebook.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/codebook.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/codebook.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/codebook.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/codec_internal.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/codec_internal.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/codec_internal.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/codec_internal.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/config_types.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/config_types.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/config_types.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/config_types.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/configure.in b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/configure.in similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/configure.in rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/configure.in diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/floor0.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/floor0.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/floor0.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/floor0.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/floor1.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/floor1.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/floor1.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/floor1.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/framing.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/framing.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/framing.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/framing.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/info.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/info.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/info.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/info.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/ivorbiscodec.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/ivorbiscodec.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/ivorbiscodec.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/ivorbiscodec.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/ivorbisfile.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/ivorbisfile.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/ivorbisfile.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/ivorbisfile.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/lsp_lookup.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/lsp_lookup.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/lsp_lookup.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/lsp_lookup.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mapping0.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mapping0.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mapping0.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mapping0.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mdct.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mdct.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mdct.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mdct.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mdct.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mdct.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mdct.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mdct.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mdct_lookup.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mdct_lookup.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/mdct_lookup.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/mdct_lookup.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/misc.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/misc.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/misc.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/misc.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/ogg.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/ogg.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/ogg.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/ogg.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/os.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/os.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/os.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/os.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/os_types.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/os_types.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/os_types.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/os_types.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/registry.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/registry.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/registry.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/registry.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/registry.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/registry.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/registry.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/registry.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/res012.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/res012.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/res012.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/res012.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/sharedbook.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/sharedbook.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/sharedbook.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/sharedbook.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/synthesis.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/synthesis.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/synthesis.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/synthesis.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/vorbisfile.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/vorbisfile.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/vorbisfile.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/vorbisfile.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/window.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/window.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/window.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/window.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/window.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/window.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/window.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/window.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/window_lookup.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/window_lookup.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/tremor/window_lookup.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/tremor/window_lookup.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/types.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/types.h similarity index 93% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/types.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/types.h index 5705cf12cc..4b99e4d2b0 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/types.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/types.h @@ -1,35 +1,35 @@ - -#ifndef _TYPES_H_ -#define _TYPES_H_ - -#undef uint8 -#undef uint16 -#undef uint32 -#undef int8 -#undef int16 -#undef int32 - -#define uint8 unsigned char -#define uint16 unsigned short -#define uint32 unsigned int -#define int8 signed char -#define int16 signed short -#define int32 signed int - -typedef union -{ - uint16 w; - struct - { -#ifdef LSB_FIRST - uint8 l; - uint8 h; -#else - uint8 h; - uint8 l; -#endif - } byte; - -} reg16_t; - -#endif /* _TYPES_H_ */ + +#ifndef _TYPES_H_ +#define _TYPES_H_ + +#undef uint8 +#undef uint16 +#undef uint32 +#undef int8 +#undef int16 +#undef int32 + +#define uint8 unsigned char +#define uint16 unsigned short +#define uint32 unsigned int +#define int8 signed char +#define int16 signed short +#define int32 signed int + +typedef union +{ + uint16 w; + struct + { +#ifdef LSB_FIRST + uint8 l; + uint8 h; +#else + uint8 h; + uint8 l; +#endif + } byte; + +} reg16_t; + +#endif /* _TYPES_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/CHANGELOG.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/CHANGELOG.txt new file mode 100644 index 0000000000..7b46c864e6 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/CHANGELOG.txt @@ -0,0 +1,401 @@ +-------------------- +Genesis Plus History +-------------------- + +All recent changes were backported from the GX version (Gamecube/Wii port), maintained by Eke-Eke. +Please look at http://code.google.com/p/genplus-gx/ for more infos. + + + +--------------------------------------------------------------------------------------------------------- +[04/12/2010] version 1.4.1 (Eke-Eke) +--------------------------------------------------------------------------------------------------------- + +[Core/Sound] +--------------- +* implemented Blargg's blip buffer in SN76489 core (all channels are now lineary interpolated) + +[Core/VDP] +--------------- +* improved 2-cell vscroll emulation accuracy, as verified on real hardware (Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge) +* improved VBLANK flag accuracy, as observed on real hardware. +* improved DMA operations accuracy, writes are now performed on a scanline basis: fixes Gaiares (flickering title screen). +* improved DMA Fill timing accuracy. +* fixed DMA with bad code values: fixes Williams Arcade Classics (corrupted gfx after soft reset). +* fixed horizontal resolution changes during HBLANK: fixes Bugs Bunny in Double Trouble (2nd stage). +* fixed Vertical Counter in interlace mode 1, as observed on real hardware. +* fixed horizontal border width, as observed on real hardware. +* various code improvments & optimizations. + +[Core/CPU] +--------------- +* fixed state of Z80 registers on reset (sound issues with Defender & Defender 2 in Williams Arcade Classics) +* implemented 68k undocumented flags behavior for DIVU/DIVS instructions (Bloodshot / Battle Frenzy) + +[Core/Extra] +--------------- +* improved emulation of copy-protection hardware found in some unlicensed cartridges (Mulan, Pocket Monsters II). +* enabled simultaneous use of multitap & J-CART (Super Skidmarks 6-player mode) +* improved savestate format: added DMA, SVP, cartridge mapping & internal registers state informations +* improved unlicensed ROM mappers emulation +* added Chinese Fighters III mapper support +* added Top Fighter mapper support +* fixed Barver Battle Saga mapper support +* fixed cartridge hardware soft-reset (Game Genie, SVP, ...) +* fixed Game Genie registers byte reads + + +---------------------------------------------------------------------------------------------------------------------------------------------------- +[06/30/10] version 1.4.0 (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +[Core/Sound] + +* completely rewrote sound processing/mixing: sound chips are now clocked with exact output framerate +to ensure 100% smooth video & audio playback, with no lag or skipping, while rendering an accurate number +of samples per frame and keeping PSG & FM chips in sync. +* improved PSG & FM chips synchronization with CPU execution (fixed point precision). +* improved YM2612 core general accuracy (SSG-EG, CSM mode,...) (based upon Nemesis recent tests on real hardware) +* improved YM2612 LFO emulation accuracy: fixes "Spider-Man & Venom : Separation Anxiety" (intro) +* fixed YM2612 bug with Timer B: fixes "Langrisser Hikari II"/"Der Langrisser II" (Sega logo) +* fixed YM2612 context saving/loading. +* fixed YM2612 state on reset. +* removed outdated & less accurate Gens YM2612 core +* added configurable YM2612 DAC resolution emulation. +* added configurable & faster FIR resampler (thanks to Blargg & AamirM), removed libsamplerate support. +* added configurable Low-Pass filtering +* added configurable 3-Band Equalizer (thanks to Neil C). +* added an option to boost SN76489 Noise Channel. +* adjusted SN76489 cut-off frequency. + + +[Core/VDP] + +* added support for CRAM writes during horizontal blanking (Striker, Zero the Kamikaze Squirrel,...) +* added support for 2-Cell vertical scrolling in Interlaced 2 mode +* added support for some undocumented mode register bits +* added proper emulation of HV Counter latch: fixes Sunset Riders intro +* added pixel-accurate emulation of mid-line display on/off (Nigel Mansell World Championship PAL, Ren & Stimpy's Invention PAL,...) +* improved FIFO timings accuracy: fixes Sol Deace intro +* improved sprite masking accuracy (thanks to Nemesis for his test program) +* improved sprites processing accuracy: fixes (un)masked sprites in Mickey Mania (3D level), Sonic 2 (VS mode). +* improved HBLANK flag timing accuracy: fixes Mega Turrican (Sky level) +* improved horizontal blanking & HINT/VINT occurence timing accuracy, as measured on real hardware. +* improved HCounter accuracy in 40-cell mode, as measured on real hardware. +* improved color accuracy in VDP highlight mode to match results observed on real hardware + + +[Core/CPU] + +* updated Z80 core to last version (fixes interrupt Mode 0 timing and some BIT instructions). +* fixed some Z80 instructions timing. +* improved Z80 interrupt accuracy +* improved 68k accuracy (initial Reset timing + auto-vectored interrupts handling). +* improved 68k timing accuracy for DIVU/DVIS (thanks to Jorge Cwik) & MULU/MULS instructions. +* improved Z80 & 68k cpu execution/synchronization accuracy by using Master Clock as common reference (now run exactly 3420 M-Cycles per line). +* modified Z80 & 68k cores to directly use external cycle count instead of intermediate counters. + + +[Core/Extra] + +* added Game Genie hardware emulation (Game Genie ROM is now fully supported). +* added Action Replay hardware emulation (Action replay ROM is now fully supported). +* added S&K "Lock-On" hardware emulation (you can "lock" any games to Sonic & Knuckles). +* added Cartridge "hot swap" feature. +* added missing EEPROM support in some games. +* added accurate TMSS emulation (VDP lock-out) +* fixed Realtec mapper emulation: fixes missing sound in Balloon Boy / Funny World. +* fixed lightgun auto-detection: fixes default cursor position in Lethal Enforcers II. +* lots of code cleanup, bugfixes & optimization. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [12/14/08] version 1.3.0 (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* YM2612 bugfixes (MAME core): + .fixed EG Decay->Substain transition when SL & DR are minimals: fix tracks #3 and #9 in "Mega Turrican" + .fixed a bug in SSG-EG emulation code: fix Level 1 music in "Alisia Dragoon" + .modified SSG-EG Decay End Level: fix some sound effects (ChainSaw, Zap...) in "Beavis & Butthead" + .improved Detune overflow accuracy: fix very high frequency sounds in many games + .fixed registers 0x20-0x26 Reset state: fix intro music in "B.O.B" + .reverted incorrect fix with KEY ON: fix "Flamethrower" sound effect in "Alien 3" and many others +* adjusted HCounter values: fixes line flickering in "Sonic 3D" bonus stage +* adjusted VINT timing: fixes hang-up in "V.R Troopers" +* improved HBLANK flag accuracy: fixes line flickering in "Gouketsuji Ichizoku" +* fixed broken Z80 access to WRAM: fixes hang-up in "Mamono Hunter Youko" +* modified JCART emulation: fixes corrupted tracks logo in "Micro Machines 2" +* added Blargg's NTSC Filters support (NTSC video artifacts emulation) +* optimized VDP rendering core, rewrote 68k interface (memory handlers, cycle execution, interrupts): greatly improved emulation speed + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [08/26/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* YM2612(MAME): fixed LFO phase update for CH3 special mode: fix sound effects in Warlock & Aladdin (thanks to AamirM) +* YM2612(MAME): fixed EG attenuation level on "KEY ON": fix Ecco 2's splash sound +* YM2612(MAME): fixed SSG-EG emulation: fix Bubba'n Stix (Track 5) and many others +* YM2612(MAME): replaced sample interpolation with libsamplerate support, High Quality mode is now more accurate +* implemented cycle-accurate HINT timings: every timing sensitive games/demos are now *finally* working fine +* fixed a bug affecting CRAM/VSRAM DMA timings +* fixed Sprite Attribute Table address mask for VRAM writes +* improved accuracy of 68k access to Z80: fix music in Pacman 2 when entering PAUSE menu +* disabled "Address Error" emulation when UMK3 hack is loaded: fix game crashing after a round ends up +* added support for some more unlicensed games: Pocket Monster, King of Fighter 98, Soul Blade (credits to Haze) +* improved Menacer emulation: fix lightgun support in Body Count & T2: The Arcade Game +* added Konami Justifier emulation: fix lightgun support in Lethal Enforcers 1 & 2 +* added Sega Mouse emulation (Populous 2, Body Count, Shangai 2, Fun'n Games, ...) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [07/16/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* adjusted (again) HINT timings: fix Double Dragon 2 (game freezed), hopefully does not break anything else +* fixed broken EEPROM support for Codemaster games +* modified input update timings: fix Dungeons & Dragons * Warriors of the Eternal Sun (thanks to Notaz) +* added support for "Ultimate Mortal Kombat Trilogy" hack (max. size supported is 10MBytes) +* added (VERY) preliminar support for PICO roms (credits to Notaz for his documentation) +* improved YM2612 emulation (credits to Nemesis for his tests on real hardware): + .implemented phase overflow emulation: improved fix for special music instrument used in Comix Zone, Flashback, Ariel, Shaq Fu... + .improved SSG-EG emulation in MAME core (also based on additional code from Alone Coder) + .improved Timers emulation accuracy + .improved Enveloppe Generator accuracy + .fixed Channel 3 CSM mode emulation + .implemented sample interpolation in MAME core to emulate the chip at original frequency (HQ YM2612 mode, from gens) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [06/01/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* improved HCounter accuracy: fix graphic glitches in "Striker (Europe)" +* improved HINT timing accuracy: fix flickering in "Zero The Kamikaze Squirrel (USA)" +* improved rendering accuracy when backdrop color is modified during HBLANK (Road Rash I/II/III) +* fixed broken Game Genie support + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/19/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* modified VINT timings a little bit: fix lockup during Desert Strike's intro +* corrected 68k interrupts handling: fix graphic glitches in Darius II/Sagaia + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/06/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* updated SVP core: fix some perspective issues in Virtua Racing (thanks to Notaz) +* added internal SAT update during VRAM Fill: fix unmasked sprites during Battletech's intro +* fixed m68k core issues with gcc 4.2.3: fix Xperts, Lemmings 2, M1 Abrams Battle Tank +* forced YM2612 Enveloppe update: fix intro music in Batman&Robin (thanks to Aamir) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/01/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* added SVP emulation: Virtua Racing is now emulated (big thanks to Notaz and TascoDeluxe) +* fixed VDP registers behaviour when VDP Mode 4 is enabled: fix Bass Masters Classic Pro, Captain Planet & The Planeeters +* corrected a bug in DMA Fill operation: fix James Pond 3, Rockman World/Megaman Willy Wars (corrupted VRAM) +* corrected typo errors in CPU cycle counters update: fix optiom screen music in "College Slam" and probably others games. +* added preliminary support of undocumented YM2612 bug: fixes soundtracks of Shaq Fu, Spiderman, Comix Zone, Ariel and some others +* added support for mappers & copy protection devices used in many unlicensed/pirate cartridges (see cart_hw.c for details) +* rewrote memory handlers for better modularity and some (little) speedup +* reduced Savestate size + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [01/07/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* fixed interleaved rom detection: roms with .smd extension should now work fine +* fixed a recently introduced bug in VDP registers writes: fixes bad colors in Toy Story (intro) +* updated list of games using EEPROM: added Sports Talk Baseball (internal memory check fixed) and Brian Lara Cricket +* fixed VINT flag update when VINT is disabled: fixes NCAA College Football +* adjusted DMA timings in H32 mode: fixes flickering in Out of this World, Kawasaki Superbike Challenge & Formula One +* adjusted line rendering and HBLANK timings: fixes flickering in Nigel Mansell's World Championship Racing, Deadly Moves/Power Athlete +* fixed unmapped ROM reads through Z80 Bank: fixes Zombie High (Proto) +* added support for custom ROM/RAM mapping used by Game no Kanzume Otokuyou + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [12/28/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* many sourcecode cleanup and optimization +* completely rewrote EEPROM emulation: now support all known EEPROM types (24C01-24C65) and mappers (Sega, Acclaim, EA, Codemasters) +used in a few games (now use internal game database) as external RAM. This should at least fix save support in the following games: + . NBA Jam (alternate Acclaim mapper) + . College Slam, Frank Thomas Big Hurt Baseball (24C65 type) + . NHLPA Hockey 93, Rings of Power (EA mapper) + . Micro Machines serie, Brian Lara Cricket 96/Shane Warne Cricket (Codemasters mapper) +* external RAM is now initialized to 0xFF by default: fix Micromachines 2, Dino Dini Soccer +* fixed SRAM 16-bits memory handlers: fix some Sega Sports and EA Sports games (NFL95, NBA Action 95, NHL97, NHL98,...) +* modified WRITE_xxx & READ_xxx macros for better portability and faster memory access on BIG ENDIAN platform +* completely rewrote BIG ENDIAN support in render.c and vdp.c: rendering should be a little faster +* rewrote ROM bankswitch emulation (Super Street Fighter II): ROM access are faster, using memory pointers instead of reading ROM copy from ARAM +* fixed leftmost Window/PlaneA column render and implemented Window bug (as described by Charles Mc Donald) +* improved "Sprite Limit" and "Sprite Collision" detection accuracy +* modified RGB565 Color Palette to use the full available color range (0-31;0-63) +* implemented "cycle accurate" HV Interrupt timings: fix Sesame's Street Counting Cafe, Legend of Galahad (intro) +* improved VDP access timings accuracy (added FIFO emulation): fix Double Clutch +* improved DMA timings accuracy: fix Winter Olympics (E), Arch Rivals and probably more +* fixed HCounter again: Road Rash serie (I,II,III) don't need timing hacks anymore +* fixed VCounter in Interlaced 2 mode: fix Combat Cars "VS-Mode" +* improved Interlaced 2 mode (double resolution) rendering: Sonic 2, Combat Cars ("VS-Modes") look far better +* added TMSS BIOS support (optional) +* rewrote part of the YM2162 MAME's core: fixed internal FM timers handling, removed non-YM2612 emulation code and unused multiple cpu support +* implemented "cycle accurate" FM timers & sound samples rendering +* improved Z80 Interrupt timing accuracy: fix Sonic 3 music slowdowns +* updated Z80 & 68000 cores to last MAME versions +* improved Soft Reset emulation: X-Men 2 and Eternal Champions (random character selection) now work more like on real hardware. +* added full overscan emulation (vertical & horizontal borders) for "pixel perfect" aspect ratio (tested against a real genesis) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [07/20/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* corrected TeamPlayer support: fix multiplayer in Gauntlet 4 (Sept. version), Pengo and a lot of others +* added J-Cart support: enable multiplayer in Codemasters games (Pete Sampras, Micromachines games, Super Skidmarks) +* added serial EEPROM autodetection: fix games with bad SRAM informations in header (NBA Jam TE) +* added SVP faking: display 2D graphics in Virtua Racing (the game is however still unplayable) +* added support for more internal IO registers: fixe some unlicensed games (Wisdom Tree games...) +* added preliminary support for unmapped protection device: fix some unlicensed games with special built-in hardware (Squirell King, Lion King 2...) +* added "Soft Reset" combo (in game, use L+Z triggers): this should be like pressing the RESET button on a real Genesis and this is required + in some games to enable special features or even complete the game (ex: X-Men). + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [06/21/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* added Multitap support (EA 4-Way Play and Sega Teamplayer): allowed up to four players in games supporting those peripherals +* added partial Sega Menacer lightgun support (use Analog Stick): automatically set when detecting the 6-in-1 Menacer game + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/18/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* you can now switch between FM cores without reseting the game. FM registers value are automatically restored when switching. +* removed the previous VINT timings modification because it brokes some games (Rocket Knight, Thunderforce III,...) +* added automatic Timing configuration (VDP latency, VINT timing & alternate Line Timing) at game loading, based upon specific romname detection. +This means you can still modify some of these options afterwards but they are now automatically set/unset when loading a game which need +special timing fixes. These fixes are also automatically desactivated when the current game doesn't need them. +For information, games that are actually detected and need special timings to run properly are: + .Legend of Galahad & Road Rash series (single line not rendered properly) + .Sesame Street Counting Cafe (don't boot) + .Chaos Engine/Soldiers of Fortune (graphic glitches on scrolling) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/08/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* VINT timings are now a little more accurate: fixes Sesame's Street Counting Cafe +* SN76496 MAX_OUTPUT back to normal +* modified FB_WNOISE value in SN76496 core according to John Kortink's last informations +* added support for Maxim's PSG core, same as used in SMSPLUS (it becomes the default PSG core) +* updated FM core to the latest MAME version +* corrected DAC output level (fixes voices and some special FX being too low) +* added support for Gens YM2612 (FM) core (MAME's one still remains default FM core) +* added configurable preamplification for each sound cores (see Emulator Options) +* added some other configurable sound options (boost overall volume, FM improvment for Gens YM2612) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/11/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* corrected MAX_OUTPUT value in SN76496 core: fix PSG sound (SFX) volume + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/17/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * added an option to enable alternate line rendering timing (fix single line error in Road Rash series and Legend of Galahad's Intro) + * Color RAM update now always reset color 0 to border color (fix color glitches in Mortal Kombat,...) (thanks to Noop's for the idea) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/09/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* modified HV counter tables (fix graphic glitches in Skitchin's sky, Lotus 2 Recs, Panorama Cotton, Dashin Desperados & maybe more) +* completely rewrote DMA timings emulation so that it works for all games (no more cpu freezing) +* added all DMA tranfer rates handling for each three DMA modes and added dma busy flag emulation +* modified interrupts handling on VDP register #0 and #1 writes (fix Lemmings status bar) +* added VDP RAM write latency (fix Chaos Engine/Soldier of Fortune gfx glitches) +* modified FM timers handling a bit (fix Vectorman2 music) +* corrected Sprite Limit rendering (fix Sonic 1 & Micromachines 2 title screens) +* corrected IO Registers writes (fix Decap' Attack controls, no more need for alternate input) +* corrected 6 Buttons Pad emulation (fix 6buttons detection in Mortal Kombat 3, Comix Zone and other 6-buttons compatible games) +* modified sound mixing a bit according to Generator sourcecode (FM and PSG ratios seems more correct) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [02/07/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* fixed fm timers (fix missing music in Castle of Illusion, Quackshot, Undead Line, Wonderboy in Monster Lair, Cal 50, Turbo Outrun, Thundeforce 4 and maybe more) +* added complete EEPROM emulation (save support now works fine in Wonderboy5, Megaman Willy Wars, NBA Jam...) (credits to Notaz, adapted from Picodrive code) +* added preliminar dma timing emulation (fix bottom screen in Legend of Galahad) (credits to Notaz, adapted from Picodrive code) +* hack: clear Vint pending after Hint (INT level 4) acknowledge (fix Fatal Rewind) +* hack: modify read_bus16 to return a random value (fake fetch) (fix Time Killers) +* modified cpu execution timings, with more correct hblank and interrupts timing (fix ISS Deluxe, Double Dragon 2 and certainly more) (Based on Gens code) +* modified busreq mechanism: better synchro between z80 & 68k (no need to dejitter anymore) (Based on Gens code) +* added sprite collision detection (fix Strider 2) +* modified dma fill operation for big endian platform (fix Contra Hardcorps gfx garbage) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/25/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Fixed a typo that made Z80 banked access to the VDP registers always fail. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/17/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Modified the rendering code to handle unaligned longword access to memory. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/20/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Modified 68000 emulator to prevent 'tas.b $mem' from writing data back + after a read (fixes Gargoyles). + * Fixed bug in 68000 emulator to swap order of words written for address + register indirect pre-decremented writes (fixes Jim Power graphics). + * Added support for 240-line displays (for Super Skidmarks). + * Rewrote part of the interrupt handling (fixes some raster effects). + * Removed sprite collision detection code (never really worked). + * Optimized sprite rendering inner loop. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/13/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + * Finished up memory map for VDP DMA V-bus reads. + * Fixed handling of 68000 writes to I/O chip at even addresses. + * Fixed bit 7 handling of control register in I/O chip. + * Finished up Z80 memory map. + * Added code to handle Genesis hardware lock-ups. + * Removed some faulty code from the 68000 memory map handlers. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/22/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Completed implementation of Z80 banked memory handlers. + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/PORTING.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/PORTING.txt similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/PORTING.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/PORTING.txt index 4c22fb0ef1..e347bdc0a6 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/PORTING.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/PORTING.txt @@ -1,89 +1,89 @@ - - Introduction - - Genesis Plus has reasonable speed, and very fast rendering. Here are some - details about porting it to another platform - - Porting rules - - - This program is released under the GPL, so please release the source - code for your derivative ports. Let me know if you need an alternative - to this. - - - Do not change the name of the emulator. Something like 'Genesis Plus / MacOS' - is fine as it keeps the original name. - - - Configure the CPU emulators for little or big-endian CPUs, and use the - ALIGN_LONG option to handle unaligned memory accesses if needed. E.g. if - the emulator crashes when a game scrolls horizontally, you need to enable - it. - - Requirements - - - At this time the 16-bit rendering code has been well tested and should - be used. There is code to support 8 through 32-bit displays, but I - haven't checked if it still works. - - - Audio output, if enabled, uses stereo 16-bit samples. - - Functions to use: - - int load_rom(char *filename); - - Loads a game which can be in BIN, SMD or ZIP formats. It returns zero if - an error has occured. - - void system_init(void); - - Initializes the virtual Genesis console. Call this once during startup. - - void audio_init(int rate); - - Initialize the sound emulation part of the emulator. Pass zero or don't - call the function to disable sound. Call this after running system_init(). - - void system_reset(void); - - Resets the virtual Genesis console. Call this once during setup, and later - as needed. - - int system_frame(int skip); - - Updates the emulation for a frame. Pass 1 to prevent rendering (which can - be used for frame skipping) and 0 to render the current display. - - This function returns 0 if the virtual Genesis console has locked up. - You can do what you'd like with this information, such as notify the user, - reset the machine, etc. - - If audio is enabled, the snd.buffer[] array will hold the current audio - data for this frame. - - void system_shutdown(void); - - Shuts down the emulator. - - Variables: - - The 'bitmap' structure needs to be filled out prior to calling system_init(). - This provides the rendering code with information about the type of bitmap - it is rendering to. I would advise sticking with a 1024x512 16-bit bitmap: - - memset(&bitmap, 0, sizeof(t_bitmap)); - bitmap.width = 1024; - bitmap.height = 512; - bitmap.depth = 16; - bitmap.granularity = 2; /* Bytes per pixel */ - bitmap.pitch = (bitmap.width * bitmap.granularity); - bitmap.data = (unsigned char *)bmp->pixels; /* Pointer to your bitmap */ - bitmap.viewport.w = 256; /* Initial size of display on power-up (do not change) */ - bitmap.viewport.h = 224; - bitmap.viewport.x = 0x20; /* Offset used for rendering (do not change) */ - bitmap.viewport.y = 0x00; - bitmap.remap = 1; - - The variable 'input.pad[0]' holds the button states for the first player - gamepad. Update this prior to calling system_frame(), and use the bitmasks - defined in system.h such as 'INPUT_UP', etc. - - See the Windows/SDL and DOS drivers for examples. + + Introduction + + Genesis Plus has reasonable speed, and very fast rendering. Here are some + details about porting it to another platform + + Porting rules + + - This program is released under the GPL, so please release the source + code for your derivative ports. Let me know if you need an alternative + to this. + + - Do not change the name of the emulator. Something like 'Genesis Plus / MacOS' + is fine as it keeps the original name. + + - Configure the CPU emulators for little or big-endian CPUs, and use the + ALIGN_LONG option to handle unaligned memory accesses if needed. E.g. if + the emulator crashes when a game scrolls horizontally, you need to enable + it. + + Requirements + + - At this time the 16-bit rendering code has been well tested and should + be used. There is code to support 8 through 32-bit displays, but I + haven't checked if it still works. + + - Audio output, if enabled, uses stereo 16-bit samples. + + Functions to use: + + int load_rom(char *filename); + + Loads a game which can be in BIN, SMD or ZIP formats. It returns zero if + an error has occured. + + void system_init(void); + + Initializes the virtual Genesis console. Call this once during startup. + + void audio_init(int rate); + + Initialize the sound emulation part of the emulator. Pass zero or don't + call the function to disable sound. Call this after running system_init(). + + void system_reset(void); + + Resets the virtual Genesis console. Call this once during setup, and later + as needed. + + int system_frame(int skip); + + Updates the emulation for a frame. Pass 1 to prevent rendering (which can + be used for frame skipping) and 0 to render the current display. + + This function returns 0 if the virtual Genesis console has locked up. + You can do what you'd like with this information, such as notify the user, + reset the machine, etc. + + If audio is enabled, the snd.buffer[] array will hold the current audio + data for this frame. + + void system_shutdown(void); + + Shuts down the emulator. + + Variables: + + The 'bitmap' structure needs to be filled out prior to calling system_init(). + This provides the rendering code with information about the type of bitmap + it is rendering to. I would advise sticking with a 1024x512 16-bit bitmap: + + memset(&bitmap, 0, sizeof(t_bitmap)); + bitmap.width = 1024; + bitmap.height = 512; + bitmap.depth = 16; + bitmap.granularity = 2; /* Bytes per pixel */ + bitmap.pitch = (bitmap.width * bitmap.granularity); + bitmap.data = (unsigned char *)bmp->pixels; /* Pointer to your bitmap */ + bitmap.viewport.w = 256; /* Initial size of display on power-up (do not change) */ + bitmap.viewport.h = 224; + bitmap.viewport.x = 0x20; /* Offset used for rendering (do not change) */ + bitmap.viewport.y = 0x00; + bitmap.remap = 1; + + The variable 'input.pad[0]' holds the button states for the first player + gamepad. Update this prior to calling system_frame(), and use the bitmasks + defined in system.h such as 'INPUT_UP', etc. + + See the Windows/SDL and DOS drivers for examples. diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/README.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/README.txt new file mode 100644 index 0000000000..e380580919 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/README.txt @@ -0,0 +1,186 @@ + ---------------------------------------------------------------------------- + Genesis Plus + ---------------------------------------------------------------------------- + + based on the original version 1.2a + by Charles Mac Donald + WWW: http://cgfm2.emuviews.com + + version 1.4 + by Eke-Eke + WWW: http://code.google.com/p/genplus-gx + + + What's New + ---------- + + see CHANGELOG + + + Features + --------- + + * NTSC (60Hz) & PAL (50Hz) hardware emulation + * highly accurate 68000 & Z80 CPU emulation + * highly accurate VDP emulation (HBLANK, DMA, FIFO, HV interrupts, undocumented registers, display mid-line changes) + * cycle-accurate YM2612 emulation (FM synthesis is done at the original frequency, using FIR resampling) + * cycle-accurate chip synchronization (68000/Z80/YM2612/SN76489) + * basic hardware latency emulation (VDP/68k, Z80/68k) + * full overscan area (horizontal & vertical colored borders) emulation (optional) + * accurate TMSS model emulation incl. internal BIOS support (optional) + * Blargg's software NTSC filters support (optional) + * PICO emulation (partial) + * 3-buttons & 6-buttons controllers support + * Sega Team Player & EA 4-Way Play multitap adapters support + * Sega Menacer & Konami Justifier lightguns support + * Sega Mouse support + * J-Cart adapter support(Micro Machines & Pete Sampras series, Super Skidmarks) + * SVP DSP emulation (Virtua Racing) + * SRAM support (up to 64kB) + * serial EEPROM emulation (all known chips) + * ROM bankswitch hardware support (Super Street Fighter 2) + * ROM/SRAM bankswitch hardware support (Phantasy Star 4, Legend of Thor, Sonic the Hedgehog 3) + * emulates most banking & copy protection devices used in unlicensed/pirate cartridges + * native Game Genie & Action Replay hardware emulation + * Lock-On hardware emulation + * support for ROM image up to 10MB (Ultimate MK3 hack) + + + Usage + ----- + + The Windows version runs windowed in a 16-bit desktop with 48Hz sound using SDL but + without joystick support. + + The DOS version has most of the functionality from SMS Plus, such + as audio, joysticks, etc. + + Windows/DOS controls: + + Arrow Keys - Directional pad + A,S,D,F - 1P gamepad, buttons A, B, C, StartTab - Hard Reset + Esc - Exit program + + F7 - Load Savestate (game.gpz) + F8 - Save Savestate (game.gpz) + F9 - Toggle CPU clock: PAL(50hz)/NTSC(60hz) + F10 - Soft Reset + F11 - Toggle Border emulation (vertical only) + F12 - Toggle Player # (keyboard/mouse) + + DOS only: + + F1-F4 - Set frameskip level (F1 = no skip ... F4 = skip 3 frames) + + Windows only: + + F4 - Toggle Audio (ONLY when Turbo mode is OFF) + F6 - Toggle Turbo mode (ONLY when Audio is OFF) + + + The mouse can be used for lightgun games, PICO games and when the Sega Mouse is activated. + + A SRAM file (game.srm) is automatically saved on exit and loaded on startup. + + DOS details: + + You can only support a second player if you are using a joystick driver + that supports more than one joystick. (e.g. Sidewinder, dual pads, etc.) + + Type 'gen -help' on the command line for a list of useful options. + + -res set the display resolution. + -vdriver specify video driver. + -depth specify color depth. (8, 16) + -scanlines use scanlines effect. + -scale scale display to full resolution. (slow) + -vsync wait for vertical sync before blitting. + -sound enable sound. (force speed throttling) + -sndrate specify sound rate. (8000, 11025, 22050, 44100) + -sndcard specify sound card. (0-7) + -swap swap left and right stereo output. + -joy specify joystick type. + + Here is a list of all the video drivers you can pass as a parameter + to the '-vdriver' option: + + auto, safe, vga, modex, vesa2l, vesa3, vbeaf + + Here is a list of all the joystick drivers you can pass as a parameter + to the '-joy' option: + + auto, none, standard, 2pads, 4button, 6button, 8button, fspro, wingex, + sidewinder, gamepadpro, grip, grip4, sneslpt1, sneslpt2, sneslpt3, + psxlpt1, psxlpt2, psxlpt3, n64lpt1, n64lpt2, n64lpt3, db9lpt1, db9lpt2, + db9lpt3, tglpt1, tglpt2, tglpt3, wingwar, segaisa, segapci, segapci2 + + You can put any commandline option into a plain text file which should + be called "gen.cfg". Put one option per line, please. Command line options + will override anything in the configuration file. + + Currently the zip loading code can manage a zipfile where the game + image is the first thing in it. If you try to open a huge archive of + games, only the first will be played. + + Credits and Acknowlegements + --------------------------- + + I would like to thank Omar Cornut, Christian Schiller, and Chris MacDonald + for their invaluable help and support with this project. + + Richard Bannister for the Macintosh port and all of the code fixes and + suggestions that have made Genesis Plus a better program. + (http://www.bannister.org) + + Extra features, emulation accuracy & game compatibility improvments by Eke-Eke + (from the Gamecube/Wii port: http://code.google.com/p/genplus-gx ) + + The Genesis emulator authors: Bart Trzynadlowski, Quintesson, Steve Snake, + James Ponder, Stef, Gerrie, Sardu, AamirM + + The regular people and many lurkers at segadev and spritesmind.net. + + The MAME team for the CPU and sound chip emulators. + + Maxim for his SN76489 emulator. + + Nemesis for his researches about the YM2612 and VDP. + + Notaz for his SVP emulator. + + Tasco Deluxe for his documentation of Realtec mapper. + + Haze for his reverse-engineering of most unlicensed games protection. + + Shay Green (Blargg) for his FIR Resampler & NTSC Video Filter. + + Neil C for his 3-Band EQ implementation. + + Jean-Loup Gailly and Mark Adler for their useful zip library. + + + Contact + ------- + + Charles MacDonald + E-mail: cgfm2@hotmail.com + WWW: http://cgfm2.emuviews.com + + Eke-Eke + E-mail: eke_eke31@yahoo.fr + WWW: http://code.google.com/p/genplus-gx + + + Legal + ----- + + Copyright (C) 1999, 2000, 2001, 2002, 2003 Charles MacDonald + Copyright (C) 2006-2010 Eke-Eke + + The source code is distributed under the terms of the GNU General Public + License. + + The Z80 CPU emulator, 68K CPU emulator, and the YM2612 emulation code + are taken from the MAME project, and terms of their use are covered under + the MAME license. (http://www.mame.net) + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/Makefile b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/Makefile new file mode 100644 index 0000000000..5f09e4b2c5 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/Makefile @@ -0,0 +1,151 @@ +# Makefile for genplus DOS +# +# (c) 1999, 2000, 2001, 2002, 2003 Charles MacDonald +# modified by Eke-Eke +# +# Defines : +# -DLSB_FIRST - Leave undefined for big-endian processors. +# -DDOS - Enable DOS/x86 specific code. +# -DDEBUG - Enable debugging code +# -DX86_ASM - Enable inline x86 assembly code in Z80 emulator + +CC = gcc +AS = nasm -f coff +LDFLAGS = +FLAGS = -I. -I.. -I../z80 -I../m68k -I../dos -I../sound -I../sound/SRC -I../cart_hw -I../cart_hw/svp -I../ntsc \ + -Wall -g \ + -O6 -march=i686 -fomit-frame-pointer \ + -DLSB_FIRST -DX86_ASM -DDOS + +LIBS = -lalleg -laudio -lz -lm + +OBJECTS = obj/z80.o + +OBJECTS += obj/m68kcpu.o \ + obj/m68kops.o + + +OBJECTS += obj/genesis.o \ + obj/vdp_ctrl.o \ + obj/vdp_render.o \ + obj/system.o \ + obj/io_ctrl.o \ + obj/mem68k.o \ + obj/memz80.o \ + obj/membnk.o \ + obj/state.o + +OBJECTS += obj/input.o \ + obj/gamepad.o \ + obj/lightgun.o \ + obj/mouse.o \ + obj/activator.o \ + obj/xe_a1p.o \ + obj/teamplayer.o \ + obj/paddle.o \ + obj/sportspad.o + + +OBJECTS += obj/sound.o \ + obj/sn76489.o \ + obj/ym2612.o + +OBJECTS += obj/Fir_Resampler.o +OBJECTS += obj/blip.o + +OBJECTS += obj/eq.o \ + +OBJECTS += obj/sram.o \ + obj/eeprom.o \ + obj/svp.o \ + obj/ssp16.o \ + obj/ggenie.o \ + obj/areplay.o \ + obj/md_cart.o \ + obj/sms_cart.o + +OBJECTS += obj/dos.o \ + obj/sealintf.o \ + obj/config.o \ + obj/error.o \ + obj/unzip.o \ + obj/fileio.o \ + obj/loadrom.o + +OBJECTS += obj/sms_ntsc.o \ + obj/md_ntsc.o + + +EXE = ../gen.exe + +all : $(EXE) + +$(EXE) : $(OBJ) + $(CC) -o $(EXE) $(OBJ) $(LIBS) $(LDFLAGS) + +obj/%.o : ../%.c ../%.h + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../asm/%.s + $(AS) $< -o $@ + +obj/%.o : ../sound/%.c ../sound/%.h + $(CC) -c $< -o $@ $(FLAGS) +obj/%.o : ../sound/%.c + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../sound/SRC/%.c ../sound/SRC/%.h + $(CC) -c $< -o $@ $(FLAGS) +obj/%.o : ../sound/SRC/%.c + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../input_hw/%.c ../input_hw/%.h + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../cart_hw/%.c ../cart_hw/%.h + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../cart_hw/svp/%.c + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../cart_hw/svp/%.c ../cart_hw/svp/%.h + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../z80/%.c ../z80/%.h + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ../m68k/%.c ../m68k/%.h + $(CC) -c $< -o $@ $(FLAGS) + +obj/%.o : ./%.c ./%.h + $(CC) -c $< -o $@ $(FLAGS) + + +obj/%.o : ../ntsc/%.c ../ntsc/%.h + $(CC) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@ + +pack : + strip $(EXE) + upx -1 $(EXE) + +clean : + rm -f obj/*.o + rm -f *.bak + rm -f *.exe + rm -f *.log + rm -f *.wav + rm -f *.zip +cleancpu : + rm -f obj/z80.oa + +makedir : + mkdir obj + +archive: + pk -dir -add -max \ + -excl=rom -excl=test \ + mdsrc.zip *.* + +# +# end of makefile +# diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/SEALINTF.C b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/SEALINTF.C similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/SEALINTF.C rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/SEALINTF.C index f7c9eac4dc..4f98d6c8f2 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/SEALINTF.C +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/SEALINTF.C @@ -1,288 +1,288 @@ - -#include "osd.h" - -int seal_sample_rate = 44100; -int seal_sound_card = -1; - -HAC hVoice[NUMVOICES]; -LPAUDIOWAVE lpWave[NUMVOICES]; -AUDIOINFO info; -AUDIOCAPS caps; -int c[MAX_STREAM_CHANNELS]; -int nominal_sample_rate; -static int attenuation = 0; -static int master_volume = 256; - - -void osd_update_audio(void) -{ - if (seal_sample_rate == 0) return; - AUpdateAudio(); -} - - -/* attenuation in dB */ -void osd_set_mastervolume(int _attenuation) -{ - float volume; - - attenuation = _attenuation; - - volume = 256.0; /* range is 0-256 */ - while (_attenuation++ < 0) - volume /= 1.122018454; /* = (10 ^ (1/20)) = 1dB */ - - master_volume = volume; - - ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME,master_volume); -} - - -int msdos_init_sound(int *rate, int card) -{ - int i; - - seal_sample_rate = *rate; - seal_sound_card = card; - - if (AInitialize() != AUDIO_ERROR_NONE) - return 1; - - /* Ask the user if no sound card was chosen */ - if (seal_sound_card == -1) - { - unsigned int k; - - printf("\n SELECT YOUR AUDIO DEVICE :\n\n" - " AWE32/64 playback requires onboard DRAM,\n" - " Sound Blaster playback is the most compatible & better for emulation\n\n"); - - for (k = 0;k < AGetAudioNumDevs();k++) - { - if (AGetAudioDevCaps(k,&caps) == AUDIO_ERROR_NONE) - printf(" %2d. %s\n",k,caps.szProductName); - } - printf("\n"); - - if (k < 10) - { - i = getch(); - seal_sound_card = i - '0'; - } - else - scanf("%d",&seal_sound_card); - } - - /* initialize SEAL audio library */ - if (seal_sound_card == 0) /* silence */ - { - /* update the Machine structure to show that sound is disabled */ - seal_sample_rate = 0; - exit(0); - return 0; - } - - /* open audio device */ - /* info.nDeviceId = AUDIO_DEVICE_MAPPER;*/ - info.nDeviceId = seal_sound_card; - /* always use 16 bit mixing if possible - better quality and same speed of 8 bit */ - info.wFormat = AUDIO_FORMAT_16BITS | AUDIO_FORMAT_STEREO | AUDIO_FORMAT_RAW_SAMPLE; - - info.nSampleRate = seal_sample_rate; - if (AOpenAudio(&info) != AUDIO_ERROR_NONE) - { - return (1); - } - - AGetAudioDevCaps(info.nDeviceId,&caps); - printf("Using `%s' at %d-bit %s %u Hz\n", - caps.szProductName, - info.wFormat & AUDIO_FORMAT_16BITS ? 16 : 8, - info.wFormat & AUDIO_FORMAT_STEREO ? "stereo" : "mono", - info.nSampleRate); - - /* open and allocate voices, allocate waveforms */ - if (AOpenVoices(NUMVOICES) != AUDIO_ERROR_NONE) - { - printf("voices initialization failed\n"); - return 1; - } - - for (i = 0; i < NUMVOICES; i++) - { - if (ACreateAudioVoice(&hVoice[i]) != AUDIO_ERROR_NONE) - { - printf("voice #%d creation failed\n",i); - return 1; - } - - ASetVoicePanning(hVoice[i],128); - - lpWave[i] = 0; - } - - /* update the Machine structure to reflect the actual sample rate */ - *rate = seal_sample_rate = info.nSampleRate; - - { - uclock_t a,b; - LONG start,end; - - - if ((lpWave[0] = (LPAUDIOWAVE)malloc(sizeof(AUDIOWAVE))) == 0) - return 1; - - lpWave[0]->wFormat = AUDIO_FORMAT_8BITS | AUDIO_FORMAT_MONO; - lpWave[0]->nSampleRate = seal_sample_rate; - lpWave[0]->dwLength = 3*seal_sample_rate; - lpWave[0]->dwLoopStart = 0; - lpWave[0]->dwLoopEnd = 3*seal_sample_rate; - if (ACreateAudioData(lpWave[0]) != AUDIO_ERROR_NONE) - { - free(lpWave[0]); - lpWave[0] = 0; - - return 1; - } - - memset(lpWave[0]->lpData,0,3*seal_sample_rate); - /* upload the data to the audio DRAM local memory */ - AWriteAudioData(lpWave[0],0,3*seal_sample_rate); - APrimeVoice(hVoice[0],lpWave[0]); - ASetVoiceFrequency(hVoice[0],seal_sample_rate); - ASetVoiceVolume(hVoice[0],0); - AStartVoice(hVoice[0]); - - a = uclock(); - /* wait some time to let everything stabilize */ - do - { - osd_update_audio(); - b = uclock(); - } while (b-a < UCLOCKS_PER_SEC/10); - - a = uclock(); - AGetVoicePosition(hVoice[0],&start); - do - { - osd_update_audio(); - b = uclock(); - } while (b-a < UCLOCKS_PER_SEC); - AGetVoicePosition(hVoice[0],&end); - - nominal_sample_rate = seal_sample_rate; - seal_sample_rate = end - start; - - AStopVoice(hVoice[0]); - ADestroyAudioData(lpWave[0]); - free(lpWave[0]); - lpWave[0] = 0; - } - - osd_set_mastervolume(0); /* start at maximum volume */ - - return 0; -} - - -void msdos_shutdown_sound(void) -{ - if (seal_sample_rate != 0) - { - int n; - - /* stop and release voices */ - for (n = 0; n < NUMVOICES; n++) - { - AStopVoice(hVoice[n]); - ADestroyAudioVoice(hVoice[n]); - if (lpWave[n]) - { - ADestroyAudioData(lpWave[n]); - free(lpWave[n]); - lpWave[n] = 0; - } - } - ACloseVoices(); - ACloseAudio(); - } -} - - -void playstreamedsample(int channel,signed char *data,int len,int freq,int volume,int pan,int bits) -{ - static int playing[NUMVOICES]; - static int c[NUMVOICES]; - - /* backwards compatibility with old 0-255 volume range */ - if (volume > 100) volume = volume * 25 / 255; - - if (seal_sample_rate == 0 || channel >= NUMVOICES) return; - - if (!playing[channel]) - { - if (lpWave[channel]) - { - AStopVoice(hVoice[channel]); - ADestroyAudioData(lpWave[channel]); - free(lpWave[channel]); - lpWave[channel] = 0; - } - - if ((lpWave[channel] = (LPAUDIOWAVE)malloc(sizeof(AUDIOWAVE))) == 0) - return; - - lpWave[channel]->wFormat = (bits == 8 ? AUDIO_FORMAT_8BITS : AUDIO_FORMAT_16BITS) - | AUDIO_FORMAT_MONO | AUDIO_FORMAT_LOOP; - lpWave[channel]->nSampleRate = nominal_sample_rate; - lpWave[channel]->dwLength = 3*len; - lpWave[channel]->dwLoopStart = 0; - lpWave[channel]->dwLoopEnd = 3*len; - if (ACreateAudioData(lpWave[channel]) != AUDIO_ERROR_NONE) - { - free(lpWave[channel]); - lpWave[channel] = 0; - return; - } - - memset(lpWave[channel]->lpData,0,3*len); - memcpy(lpWave[channel]->lpData,data,len); - - /* upload the data to the audio DRAM local memory */ - AWriteAudioData(lpWave[channel],0,3*len); - APrimeVoice(hVoice[channel],lpWave[channel]); - - /* need to cast to double because freq*nominal_sample_rate can exceed the size of an int */ - ASetVoiceFrequency(hVoice[channel],(double)freq*nominal_sample_rate/seal_sample_rate); - AStartVoice(hVoice[channel]); - playing[channel] = 1; - c[channel] = 1; - } - else - { - LONG pos; - - for(;;) - { - AGetVoicePosition(hVoice[channel],&pos); - if (c[channel] == 0 && pos >= len) break; - if (c[channel] == 1 && (pos < len || pos >= 2*len)) break; - if (c[channel] == 2 && pos < 2*len) break; - osd_update_audio(); - } - - memcpy(&lpWave[channel]->lpData[len * c[channel]],data,len); - AWriteAudioData(lpWave[channel],len*c[channel],len); - c[channel]++; - if (c[channel] == 3) c[channel] = 0; - } - - ASetVoiceVolume(hVoice[channel],volume * 64 / 100); - ASetVoicePanning(hVoice[channel],(pan + 100) * 255 / 200); -} - -void osd_play_streamed_sample_16(int channel,signed short *data,int len,int freq,int volume,int pan) -{ - playstreamedsample(channel,(signed char *)data,len,freq,volume,pan,16); -} - + +#include "osd.h" + +int seal_sample_rate = 44100; +int seal_sound_card = -1; + +HAC hVoice[NUMVOICES]; +LPAUDIOWAVE lpWave[NUMVOICES]; +AUDIOINFO info; +AUDIOCAPS caps; +int c[MAX_STREAM_CHANNELS]; +int nominal_sample_rate; +static int attenuation = 0; +static int master_volume = 256; + + +void osd_update_audio(void) +{ + if (seal_sample_rate == 0) return; + AUpdateAudio(); +} + + +/* attenuation in dB */ +void osd_set_mastervolume(int _attenuation) +{ + float volume; + + attenuation = _attenuation; + + volume = 256.0; /* range is 0-256 */ + while (_attenuation++ < 0) + volume /= 1.122018454; /* = (10 ^ (1/20)) = 1dB */ + + master_volume = volume; + + ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME,master_volume); +} + + +int msdos_init_sound(int *rate, int card) +{ + int i; + + seal_sample_rate = *rate; + seal_sound_card = card; + + if (AInitialize() != AUDIO_ERROR_NONE) + return 1; + + /* Ask the user if no sound card was chosen */ + if (seal_sound_card == -1) + { + unsigned int k; + + printf("\n SELECT YOUR AUDIO DEVICE :\n\n" + " AWE32/64 playback requires onboard DRAM,\n" + " Sound Blaster playback is the most compatible & better for emulation\n\n"); + + for (k = 0;k < AGetAudioNumDevs();k++) + { + if (AGetAudioDevCaps(k,&caps) == AUDIO_ERROR_NONE) + printf(" %2d. %s\n",k,caps.szProductName); + } + printf("\n"); + + if (k < 10) + { + i = getch(); + seal_sound_card = i - '0'; + } + else + scanf("%d",&seal_sound_card); + } + + /* initialize SEAL audio library */ + if (seal_sound_card == 0) /* silence */ + { + /* update the Machine structure to show that sound is disabled */ + seal_sample_rate = 0; + exit(0); + return 0; + } + + /* open audio device */ + /* info.nDeviceId = AUDIO_DEVICE_MAPPER;*/ + info.nDeviceId = seal_sound_card; + /* always use 16 bit mixing if possible - better quality and same speed of 8 bit */ + info.wFormat = AUDIO_FORMAT_16BITS | AUDIO_FORMAT_STEREO | AUDIO_FORMAT_RAW_SAMPLE; + + info.nSampleRate = seal_sample_rate; + if (AOpenAudio(&info) != AUDIO_ERROR_NONE) + { + return (1); + } + + AGetAudioDevCaps(info.nDeviceId,&caps); + printf("Using `%s' at %d-bit %s %u Hz\n", + caps.szProductName, + info.wFormat & AUDIO_FORMAT_16BITS ? 16 : 8, + info.wFormat & AUDIO_FORMAT_STEREO ? "stereo" : "mono", + info.nSampleRate); + + /* open and allocate voices, allocate waveforms */ + if (AOpenVoices(NUMVOICES) != AUDIO_ERROR_NONE) + { + printf("voices initialization failed\n"); + return 1; + } + + for (i = 0; i < NUMVOICES; i++) + { + if (ACreateAudioVoice(&hVoice[i]) != AUDIO_ERROR_NONE) + { + printf("voice #%d creation failed\n",i); + return 1; + } + + ASetVoicePanning(hVoice[i],128); + + lpWave[i] = 0; + } + + /* update the Machine structure to reflect the actual sample rate */ + *rate = seal_sample_rate = info.nSampleRate; + + { + uclock_t a,b; + LONG start,end; + + + if ((lpWave[0] = (LPAUDIOWAVE)malloc(sizeof(AUDIOWAVE))) == 0) + return 1; + + lpWave[0]->wFormat = AUDIO_FORMAT_8BITS | AUDIO_FORMAT_MONO; + lpWave[0]->nSampleRate = seal_sample_rate; + lpWave[0]->dwLength = 3*seal_sample_rate; + lpWave[0]->dwLoopStart = 0; + lpWave[0]->dwLoopEnd = 3*seal_sample_rate; + if (ACreateAudioData(lpWave[0]) != AUDIO_ERROR_NONE) + { + free(lpWave[0]); + lpWave[0] = 0; + + return 1; + } + + memset(lpWave[0]->lpData,0,3*seal_sample_rate); + /* upload the data to the audio DRAM local memory */ + AWriteAudioData(lpWave[0],0,3*seal_sample_rate); + APrimeVoice(hVoice[0],lpWave[0]); + ASetVoiceFrequency(hVoice[0],seal_sample_rate); + ASetVoiceVolume(hVoice[0],0); + AStartVoice(hVoice[0]); + + a = uclock(); + /* wait some time to let everything stabilize */ + do + { + osd_update_audio(); + b = uclock(); + } while (b-a < UCLOCKS_PER_SEC/10); + + a = uclock(); + AGetVoicePosition(hVoice[0],&start); + do + { + osd_update_audio(); + b = uclock(); + } while (b-a < UCLOCKS_PER_SEC); + AGetVoicePosition(hVoice[0],&end); + + nominal_sample_rate = seal_sample_rate; + seal_sample_rate = end - start; + + AStopVoice(hVoice[0]); + ADestroyAudioData(lpWave[0]); + free(lpWave[0]); + lpWave[0] = 0; + } + + osd_set_mastervolume(0); /* start at maximum volume */ + + return 0; +} + + +void msdos_shutdown_sound(void) +{ + if (seal_sample_rate != 0) + { + int n; + + /* stop and release voices */ + for (n = 0; n < NUMVOICES; n++) + { + AStopVoice(hVoice[n]); + ADestroyAudioVoice(hVoice[n]); + if (lpWave[n]) + { + ADestroyAudioData(lpWave[n]); + free(lpWave[n]); + lpWave[n] = 0; + } + } + ACloseVoices(); + ACloseAudio(); + } +} + + +void playstreamedsample(int channel,signed char *data,int len,int freq,int volume,int pan,int bits) +{ + static int playing[NUMVOICES]; + static int c[NUMVOICES]; + + /* backwards compatibility with old 0-255 volume range */ + if (volume > 100) volume = volume * 25 / 255; + + if (seal_sample_rate == 0 || channel >= NUMVOICES) return; + + if (!playing[channel]) + { + if (lpWave[channel]) + { + AStopVoice(hVoice[channel]); + ADestroyAudioData(lpWave[channel]); + free(lpWave[channel]); + lpWave[channel] = 0; + } + + if ((lpWave[channel] = (LPAUDIOWAVE)malloc(sizeof(AUDIOWAVE))) == 0) + return; + + lpWave[channel]->wFormat = (bits == 8 ? AUDIO_FORMAT_8BITS : AUDIO_FORMAT_16BITS) + | AUDIO_FORMAT_MONO | AUDIO_FORMAT_LOOP; + lpWave[channel]->nSampleRate = nominal_sample_rate; + lpWave[channel]->dwLength = 3*len; + lpWave[channel]->dwLoopStart = 0; + lpWave[channel]->dwLoopEnd = 3*len; + if (ACreateAudioData(lpWave[channel]) != AUDIO_ERROR_NONE) + { + free(lpWave[channel]); + lpWave[channel] = 0; + return; + } + + memset(lpWave[channel]->lpData,0,3*len); + memcpy(lpWave[channel]->lpData,data,len); + + /* upload the data to the audio DRAM local memory */ + AWriteAudioData(lpWave[channel],0,3*len); + APrimeVoice(hVoice[channel],lpWave[channel]); + + /* need to cast to double because freq*nominal_sample_rate can exceed the size of an int */ + ASetVoiceFrequency(hVoice[channel],(double)freq*nominal_sample_rate/seal_sample_rate); + AStartVoice(hVoice[channel]); + playing[channel] = 1; + c[channel] = 1; + } + else + { + LONG pos; + + for(;;) + { + AGetVoicePosition(hVoice[channel],&pos); + if (c[channel] == 0 && pos >= len) break; + if (c[channel] == 1 && (pos < len || pos >= 2*len)) break; + if (c[channel] == 2 && pos < 2*len) break; + osd_update_audio(); + } + + memcpy(&lpWave[channel]->lpData[len * c[channel]],data,len); + AWriteAudioData(lpWave[channel],len*c[channel],len); + c[channel]++; + if (c[channel] == 3) c[channel] = 0; + } + + ASetVoiceVolume(hVoice[channel],volume * 64 / 100); + ASetVoicePanning(hVoice[channel],(pan + 100) * 255 / 200); +} + +void osd_play_streamed_sample_16(int channel,signed short *data,int len,int freq,int volume,int pan) +{ + playstreamedsample(channel,(signed char *)data,len,freq,volume,pan,16); +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/SEALINTF.H b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/SEALINTF.H similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/SEALINTF.H rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/SEALINTF.H index d3c1d4ddc9..368ab71a48 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/SEALINTF.H +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/SEALINTF.H @@ -1,17 +1,17 @@ - -#ifndef _SEALINTF_H_ -#define _SEALINTF_H_ - -#define MAX_SOUND 4 -#define NUMVOICES 16 -#define MAX_STREAM_CHANNELS 6 - -/* Function prototypes */ -void osd_update_audio(void); -void osd_set_mastervolume(int _attenuation); -int msdos_init_sound(int *rate, int card); -void msdos_shutdown_sound(void); -void playstreamedsample(int channel,signed char *data,int len,int freq,int volume,int pan,int bits); -void osd_play_streamed_sample_16(int channel,signed short *data,int len,int freq,int volume,int pan); - -#endif /* _SEALINTF_H_ */ + +#ifndef _SEALINTF_H_ +#define _SEALINTF_H_ + +#define MAX_SOUND 4 +#define NUMVOICES 16 +#define MAX_STREAM_CHANNELS 6 + +/* Function prototypes */ +void osd_update_audio(void); +void osd_set_mastervolume(int _attenuation); +int msdos_init_sound(int *rate, int card); +void msdos_shutdown_sound(void); +void playstreamedsample(int channel,signed char *data,int len,int freq,int volume,int pan,int bits); +void osd_play_streamed_sample_16(int channel,signed short *data,int len,int freq,int volume,int pan); + +#endif /* _SEALINTF_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/config.c new file mode 100644 index 0000000000..b166c46710 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/config.c @@ -0,0 +1,298 @@ + +#include "osd.h" + +t_option option; +t_config config; + +void do_config(char *file) +{ + extern int __crt0_argc; + extern char **__crt0_argv; + + /* Our token list */ + int i, argc; + char *argv[TOKEN_LIST_SIZE]; + + set_option_defaults(); + for(i = 0; i < TOKEN_LIST_SIZE; i += 1) argv[i] = NULL; + + /* Check configuration file */ + if(file) parse_file(file, &argc, argv); + + /* Check extracted tokens */ + parse_args(argc, argv); + + /* Free token list */ + for(i = 0; i < argc; i += 1) if(argv[argc]) free (argv[argc]); + + /* Check command line */ + parse_args(__crt0_argc, __crt0_argv); +} + + +/* Parse configuration file */ +int parse_file(char *filename, int *argc, char **argv) +{ + char token[0x100]; + FILE *handle = NULL; + + *argc = 0; + handle = fopen(filename, "r"); + if(!handle) return (0); + + fscanf(handle, "%s", &token[0]); + while(!(feof(handle))) + { + int size = strlen(token) + 1; + argv[*argc] = malloc(size); + if(!argv[*argc]) return (0); + strcpy(argv[*argc], token); + *argc += 1; + fscanf(handle, "%s", &token[0]); + } + + if(handle) fclose(handle); + return (1); +} + + +int check_bool(char *token) +{ + int result = 1; + if(stricmp("off", token) == 0) + result = 0; + if(stricmp("no", token) == 0) + result = 0; + return (result); +} + + +void set_option_defaults(void) +{ + option.video_driver = GFX_AUTODETECT; + option.video_width = 640; + option.video_height = 480; + option.video_depth = 16; + + option.remap = 0; + option.scanlines = 0; + option.scale = 0; + + option.vsync = 0; + option.throttle = 0; + option.skip = 1; + + option.sound = 0; + option.sndcard = -1; + option.sndrate = 48000; + option.swap = 0; + + option.joy_driver = JOY_TYPE_NONE; +} + + +void set_config_defaults(void) +{ + int i; + + /* sound options */ + config.psg_preamp = 150; + config.fm_preamp = 100; + config.hq_fm = 1; + config.psgBoostNoise = 0; + config.filter = 1; + config.low_freq = 200; + config.high_freq = 8000; + config.lg = 1.0; + config.mg = 1.0; + config.hg = 1.0; + config.lp_range = 50; + config.rolloff = 0.999; + + /* system options */ + config.region_detect = 0; + config.force_dtack = 0; + config.addr_error = 1; + config.tmss = 0; + config.lock_on = 0; + config.romtype = 0; + + /* display options */ + config.overscan = 1; + config.render = 0; + + /* controllers options */ + input.system[0] = SYSTEM_MD_GAMEPAD; + input.system[1] = SYSTEM_MD_GAMEPAD; + config.gun_cursor[0] = 1; + config.gun_cursor[1] = 1; + config.invert_mouse = 0; + for (i=0;i \t Select video driver (auto)\n"); + printf(" -res \t Specify display resolution (320x240)\n"); + printf(" -depth \t Specify display depth (8)\n"); + printf(" -remap \t Enable raster-based palette effects (8-bit color only)\n"); + printf(" -scanlines \t Enable scanlines effect\n"); + printf(" -scale \t Scale display to width of screen\n"); + printf(" -vsync \t Enable vsync polling\n"); + printf(" -throttle \t Enable speed throttling\n"); + printf(" -skip \t Specify frame skip level (1=no frames skipped)\n"); + printf(" -sound \t Enable sound output\n"); + printf(" -sndcard \t Select sound card\n"); + printf(" -sndrate \t Specify sound sample rate (8000-44100)\n"); + printf(" -swap \t Swap left and right channels\n"); + printf(" -joy \t Select joystick driver (auto)\n"); +} + + +void parse_args(int argc, char **argv) +{ + int i, j; + + for(i = 0; i < argc; i += 1) + { + if(stricmp("-vdriver", argv[i]) == 0) + { + for(j = 0; video_driver_table[j].token != NULL; j += 1) + { + if(stricmp(argv[i+1], video_driver_table[j].token) == 0) + { + option.video_driver = video_driver_table[j].value; + } + } + } + + if(stricmp("-res", argv[i]) == 0) + { + option.video_width = atoi(argv[i+1]); + option.video_height = atoi(argv[i+2]); + } + + if(stricmp("-depth", argv[i]) == 0) + { + option.video_depth = atoi(argv[i+1]); + } + + if(stricmp("-remap", argv[i]) == 0) + { + option.remap = check_bool(argv[i+1]); + } + + if(stricmp("-scanlines", argv[i]) == 0) + { + option.scanlines = check_bool(argv[i+1]); + } + + if(stricmp("-scale", argv[i]) == 0) + { + option.scale = check_bool(argv[i+1]); + } + + if(stricmp("-vsync", argv[i]) == 0) + { + option.vsync = check_bool(argv[i+1]); + } + + if(stricmp("-throttle", argv[i]) == 0) + { + option.throttle = check_bool(argv[i+1]); + } + + if(stricmp("-skip", argv[i]) == 0) + { + option.skip = atoi(argv[i+1]); + if(!option.skip) option.skip = 1; + } + + if(stricmp("-sound", argv[i]) == 0) + { + option.sound = check_bool(argv[i+1]); + } + + if(stricmp("-sndcard", argv[i]) == 0) + { + option.sndcard = atoi(argv[i+1]); + } + + if(stricmp("-sndrate", argv[i]) == 0) + { + option.sndrate = atoi(argv[i+1]); + } + + if(stricmp("-swap", argv[i]) == 0) + { + option.swap = check_bool(argv[i+1]); + } + + if(stricmp("-joy", argv[i]) == 0) + { + for(j = 0; joy_driver_table[j].token != NULL; j += 1) + { + if(stricmp(argv[i+1], joy_driver_table[j].token) == 0) + { + option.joy_driver = joy_driver_table[j].value; + } + } + } + } + + if(option.remap) option.video_depth = 8; +} + + +t_strint video_driver_table[] = +{ + { "auto", GFX_AUTODETECT }, + { "safe", GFX_SAFE }, + { "vga", GFX_VGA }, + { "modex", GFX_MODEX }, + { "vesa2l", GFX_VESA2L }, + { "vesa3", GFX_VESA3 }, + { "vbeaf", GFX_VBEAF }, + { NULL, 0 } +}; + + +t_strint joy_driver_table[] = +{ + { "auto", JOY_TYPE_AUTODETECT }, + { "none", JOY_TYPE_NONE }, + { "standard", JOY_TYPE_STANDARD }, + { "2pads", JOY_TYPE_2PADS }, + { "4button", JOY_TYPE_4BUTTON }, + { "6button", JOY_TYPE_6BUTTON }, + { "8button", JOY_TYPE_8BUTTON }, + { "fspro", JOY_TYPE_FSPRO }, + { "wingex", JOY_TYPE_WINGEX }, + { "sidewinder", JOY_TYPE_SIDEWINDER }, + { "gamepadpro", JOY_TYPE_GAMEPAD_PRO }, + { "grip", JOY_TYPE_GRIP }, + { "grip4", JOY_TYPE_GRIP4 }, + { "sneslpt1", JOY_TYPE_SNESPAD_LPT1 }, + { "sneslpt2", JOY_TYPE_SNESPAD_LPT2 }, + { "sneslpt3", JOY_TYPE_SNESPAD_LPT3 }, + { "psxlpt1", JOY_TYPE_PSXPAD_LPT1 }, + { "psxlpt2", JOY_TYPE_PSXPAD_LPT2 }, + { "psxlpt3", JOY_TYPE_PSXPAD_LPT3 }, + { "n64lpt1", JOY_TYPE_N64PAD_LPT1 }, + { "n64lpt2", JOY_TYPE_N64PAD_LPT2 }, + { "n64lpt3", JOY_TYPE_N64PAD_LPT3 }, + { "db9lpt1", JOY_TYPE_DB9_LPT1 }, + { "db9lpt2", JOY_TYPE_DB9_LPT2 }, + { "db9lpt3", JOY_TYPE_DB9_LPT3 }, + { "tglpt1", JOY_TYPE_TURBOGRAFX_LPT1 }, + { "tglpt2", JOY_TYPE_TURBOGRAFX_LPT2 }, + { "tglpt3", JOY_TYPE_TURBOGRAFX_LPT3 }, + { "wingwar", JOY_TYPE_WINGWARRIOR }, + { "segaisa", JOY_TYPE_IFSEGA_ISA}, + { "segapci", JOY_TYPE_IFSEGA_PCI}, + { "segapci2", JOY_TYPE_IFSEGA_PCI_FAST}, + { NULL, 0 } +}; + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/config.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/config.h new file mode 100644 index 0000000000..c716e5744d --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/config.h @@ -0,0 +1,104 @@ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#define PATH_SIZE (0x100) +#define TOKEN_LIST_SIZE (0x20) + +typedef struct +{ + char *token; + int value; +}t_strint; + +typedef struct +{ + int video_width; + int video_height; + int video_depth; + int video_driver; + + int autores; + int autores_w; + int autores_h; + + int remap; + int blur; + int scanlines; + int scale; + + int vsync; + int throttle; + int fps; + int skip; + + int sound; + int sndcard; + int sndrate; + int swap; + + int wave; + char wavpath[PATH_SIZE]; + + int joy_driver; + + int split; /* 1= Split image at 2 megabit boundary */ + int flip; /* 1= Bit-flip image */ + int usa; /* 1= Set D6 of $1000 to indicate US machine */ + int softres; /* 1= Allow RUN+SELECT */ +} t_option; + +/**************************************************************************** + * Config Option + * + ****************************************************************************/ +typedef struct +{ + uint8 padtype; +} t_input_c; + +typedef struct +{ + uint8 hq_fm; + uint8 psgBoostNoise; + int32 psg_preamp; + int32 fm_preamp; + uint8 filter; + uint16 low_freq; + uint16 high_freq; + uint8 lp_range; + float lg; + float mg; + float hg; + float rolloff; + uint8 region_detect; + uint8 force_dtack; + uint8 addr_error; + uint8 tmss; + uint8 lock_on; + uint8 romtype; + uint8 overscan; + uint8 render; + uint8 ntsc; + t_input_c input[MAX_INPUTS]; + uint8 gun_cursor[2]; + uint8 invert_mouse; +} t_config; + +/* Global variables */ +extern t_option option; +extern t_config config; +extern t_strint video_driver_table[]; +extern t_strint joy_driver_table[]; + +/* Function prototypes */ +void do_config(char *file); +int parse_file(char *filename, int *argc, char **argv); +void parse_args(int argc, char **argv); +void print_options(void); +int check_bool(char *token); +void set_option_defaults(void); +void set_config_defaults(void); + +#endif /* _CONFIG_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/dos.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/dos.c similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/dos.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/dos.c index 526320d15b..626edd1f89 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/dos.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/dos.c @@ -1,681 +1,681 @@ -/* - dos.c -- - DOS interface code for the emulator -*/ - -#include "shared.h" -#include "osd.h" - -#define FRAMES_PER_SECOND 60 -#define MSG_LEN 1024 - -RGB vdp_palette[3][0x200]; -PALETTE gen_pal; -BITMAP *gen_bmp; - -volatile int frame_skip = 1; -volatile int frame_count = 0; -volatile int frames_rendered = 0; -volatile int frame_rate = 0; -volatile int tick_count = 0; -volatile int old_tick_count = 0; -volatile int skip = 0; - -int quit = 0; -unsigned char buf[STATE_SIZE]; - -uint8 log_error = 1; -uint8 debug_on = 0; - -void msg_print(int x, int y, char *fmt, ...) -{ - int i = bitmap.viewport.x; - int j = bitmap.viewport.y; - va_list ap; - char token[MSG_LEN]; - char str[MSG_LEN]; - - strcpy(str, "\0"); - va_start(ap, fmt); - vsprintf(token, fmt, ap); - strcat(str, token); - va_end(ap); - - textprintf_ex(gen_bmp, font, i+x+1, j+y , 0x00, -1, "%s", str); - textprintf_ex(gen_bmp, font, i+x-1, j+y , 0x00, -1, "%s", str); - textprintf_ex(gen_bmp, font, i+x , j+y+1, 0x00, -1, "%s", str); - textprintf_ex(gen_bmp, font, i+x , j+y-1, 0x00, -1, "%s", str); - textprintf_ex(gen_bmp, font, i+x , j+y , 0xffff, -1, "%s", str); -} - -int main (int argc, char *argv[]) -{ - if(argc < 2) - { - printf("Genesis Plus - Sega Mega Drive emulator (v1.0)\n"); - printf("(C) 1999, 2000, 2001, 2002, 2003 Charles MacDonald\n"); - printf("Usage %s file.[bin|smd|zip] [-options]\n", argv[0]); - printf("Type `%s -help' for a list of options.\n", argv[0]); - exit(1); - }; - - if(stricmp(argv[1], "-help") == 0) - { - print_options(); - return (0); - } - error_init(); - - cart.rom = malloc(0xA00000); - memset(cart.rom, 0, 0xA00000); - - if(!load_rom(argv[1])) - { - printf("File `%s' not found.\n", argv[1]); - return (0); - } - - - /* load BIOS */ - memset(bios_rom, 0, sizeof(bios_rom)); - FILE *f = fopen("./BIOS.bin", "rb"); - if (f!=NULL) - { - fread(&bios_rom, 0x800,1,f); - fclose(f); - int i; - for(i = 0; i < 0x800; i += 2) - { - uint8 temp = bios_rom[i]; - bios_rom[i] = bios_rom[i+1]; - bios_rom[i+1] = temp; - } - config.tmss |= 2; - } - - /* initialize genesis VM */ - init_machine(); - - /* default config */ - do_config("genplus.cfg"); - set_config_defaults(); - - /* initialize emulation */ - system_init(); - audio_init(option.sndrate, vdp_pal ? 50 : 60); - - f = fopen("./game.srm", "rb"); - if (f!=NULL) - { - fread(&sram.sram,0x10000,1, f); - fclose(f); - } - - /* reset emulation */ - system_reset(); - - /* emulation loop */ - for(;;) - { - dos_update_input(); - frame_count += 1; - if(quit) break; - if(frame_count % frame_skip == 0) - { - system_frame(0); - frames_rendered++; - dos_update_video(); - } - else - { - system_frame(1); - } - - audio_update(); - if(option.sound) - dos_update_audio(); - } - - f = fopen("./game.srm", "wb"); - if (f!=NULL) - { - fwrite(&sram.sram, 0x10000,1,f); - fclose(f); - } - - trash_machine(); - system_shutdown(); - error_shutdown(); - free(cart.rom); - - return (0); -} - -/* Timer handler */ -void tick_handler(void) -{ - tick_count += 1; - if(tick_count % FRAMES_PER_SECOND == 0) - { - frame_rate = frames_rendered; - frames_rendered = 0; - } -} -END_OF_FUNCTION(tick_handler); - - -int load_file(char *filename, char *buf, int size) -{ - FILE *fd = fopen(filename, "rb"); - if(!fd) return (0); - fread(buf, size, 1, fd); - fclose(fd); - return (1); -} - -int save_file(char *filename, char *buf, int size) -{ - FILE *fd = NULL; - if(!(fd = fopen(filename, "wb"))) return (0); - fwrite(buf, size, 1, fd); - fclose(fd); - return (1); -} - -static int joynum = 0; - -void dos_update_input(void) -{ - FILE *f; - - if(key[KEY_ESC] || key[KEY_END]) - { - quit = 1; - } - - while (input.dev[joynum] == NO_DEVICE) - { - joynum ++; - if (joynum > MAX_DEVICES - 1) joynum = 0; - } - - if(check_key(KEY_F11)) - { - joynum ++; - if (joynum > MAX_DEVICES - 1) joynum = 0; - - while (input.dev[joynum] == NO_DEVICE) - { - joynum ++; - if (joynum > MAX_DEVICES - 1) joynum = 0; - } - } - - input.pad[joynum] = 0; - - /* Is the joystick being used ? */ - if(option.joy_driver != JOY_TYPE_NONE) - { - poll_joystick(); - - /* Check player 1 joystick */ - if(joy[0].stick[0].axis[1].d1) input.pad[0] |= INPUT_UP; - else - if(joy[0].stick[0].axis[1].d2) input.pad[0] |= INPUT_DOWN; - - if(joy[0].stick[0].axis[0].d1) input.pad[0] |= INPUT_LEFT; - else - if(joy[0].stick[0].axis[0].d2) input.pad[0] |= INPUT_RIGHT; - - if(joy[0].button[0].b) input.pad[0] |= INPUT_A; - if(joy[0].button[1].b) input.pad[0] |= INPUT_B; - if(joy[0].button[2].b) input.pad[0] |= INPUT_C; - if(joy[0].button[3].b) input.pad[0] |= INPUT_START; - if(joy[0].button[4].b) input.pad[0] |= INPUT_X; - if(joy[0].button[5].b) input.pad[0] |= INPUT_Y; - if(joy[0].button[6].b) input.pad[0] |= INPUT_Z; - if(joy[0].button[7].b) input.pad[0] |= INPUT_MODE; - - /* More than one joystick supported ? */ - if(num_joysticks > 2) - { - /* Check player 2 joystick */ - if(joy[1].stick[0].axis[1].d1) input.pad[1] |= INPUT_UP; - else - if(joy[1].stick[0].axis[1].d2) input.pad[1] |= INPUT_DOWN; - - if(joy[1].stick[0].axis[0].d1) input.pad[1] |= INPUT_LEFT; - else - if(joy[1].stick[0].axis[0].d1) input.pad[1] |= INPUT_RIGHT; - - if(joy[1].button[0].b) input.pad[1] |= INPUT_A; - if(joy[1].button[1].b) input.pad[1] |= INPUT_B; - if(joy[1].button[2].b) input.pad[1] |= INPUT_C; - if(joy[1].button[3].b) input.pad[1] |= INPUT_START; - if(joy[1].button[4].b) input.pad[1] |= INPUT_X; - if(joy[1].button[5].b) input.pad[1] |= INPUT_Y; - if(joy[1].button[6].b) input.pad[1] |= INPUT_Z; - if(joy[1].button[7].b) input.pad[1] |= INPUT_MODE; - } - } - - /* keyboard */ - if(key[KEY_UP]) input.pad[joynum] |= INPUT_UP; - else - if(key[KEY_DOWN]) input.pad[joynum] |= INPUT_DOWN; - - if(key[KEY_LEFT]) input.pad[joynum] |= INPUT_LEFT; - else - if(key[KEY_RIGHT]) input.pad[joynum] |= INPUT_RIGHT; - - if(key[KEY_A]) input.pad[joynum] |= INPUT_A; - if(key[KEY_S]) input.pad[joynum] |= INPUT_B; - if(key[KEY_D]) input.pad[joynum] |= INPUT_C; - if(key[KEY_Z]) input.pad[joynum] |= INPUT_X; - if(key[KEY_X]) input.pad[joynum] |= INPUT_Y; - if(key[KEY_C]) input.pad[joynum] |= INPUT_Z; - if(key[KEY_V]) input.pad[joynum] |= INPUT_MODE; - - if(key[KEY_F]) input.pad[joynum] |= INPUT_START; - - extern uint8 pico_current; - if (input.dev[joynum] == DEVICE_LIGHTGUN) - { - /* Poll mouse if necessary */ - if(mouse_needs_poll() == TRUE) - poll_mouse(); - - /* Calculate X Y axis values */ - input.analog[joynum][0] = (mouse_x * bitmap.viewport.w) / SCREEN_W; - input.analog[joynum][1] = (mouse_y * bitmap.viewport.h) / SCREEN_H; - - /* Map mouse buttons to player #1 inputs */ - if(mouse_b & 4) input.pad[joynum] |= INPUT_C; - if(mouse_b & 2) input.pad[joynum] |= INPUT_B; - if(mouse_b & 1) input.pad[joynum] |= INPUT_A; - } - else if (input.dev[joynum] == DEVICE_MOUSE) - { - /* Poll mouse if necessary */ - if(mouse_needs_poll() == TRUE) - poll_mouse(); - - /* Get X & Y quantity of movement */ - get_mouse_mickeys(&input.analog[joynum][0], &input.analog[joynum][1]); - - /* Sega Mouse range is -256;+256 */ - input.analog[joynum][0] = (input.analog[joynum][0] * 256) / SCREEN_W; - input.analog[joynum][1] = (input.analog[joynum][1] * 256) / SCREEN_H; - - /* Vertical movement is upsidedown */ - if (!config.invert_mouse) input.analog[joynum][1] = 0 - input.analog[joynum][1]; - - /* Map mouse buttons to player #1 inputs */ - if(mouse_b & 4) input.pad[joynum] |= INPUT_C; - if(mouse_b & 1) input.pad[joynum] |= INPUT_B; - if(mouse_b & 2) input.pad[joynum] |= INPUT_A; - } - else if (system_hw == SYSTEM_PICO) - { - /* Poll mouse if necessary */ - if(mouse_needs_poll() == TRUE) - poll_mouse(); - - /* Calculate X Y axis values */ - input.analog[0][0] = 0x3c + (mouse_x * (0x17c-0x03c+1)) / SCREEN_W; - input.analog[0][1] = 0x1fc + (mouse_y * (0x2f7-0x1fc+1)) / SCREEN_H; - - /* Map mouse buttons to player #1 inputs */ - if(mouse_b & 2) input.pad[0] |= INPUT_B; - if(mouse_b & 1) input.pad[0] |= INPUT_A; - if(mouse_b & 4) pico_current++; - if (pico_current > 6) pico_current = 0; - } - - if(check_key(KEY_F1)) frame_skip = 1; - if(check_key(KEY_F2)) frame_skip = 2; - if(check_key(KEY_F3)) frame_skip = 3; - if(check_key(KEY_F4)) frame_skip = 4; - - if(check_key(KEY_F5)) log_error ^= 1; - if(check_key(KEY_F6)) debug_on ^= 1; - - if(check_key(KEY_F7)) - { - f = fopen("game.gpz","r+b"); - if (f) - { - fread(&buf, STATE_SIZE, 1, f); - state_load(buf); - fclose(f); - } - } - - if(check_key(KEY_F8)) - { - f = fopen("game.gpz","w+b"); - if (f) - { - state_save(buf); - fwrite(&buf, STATE_SIZE, 1, f); - fclose(f); - } - } - - if(check_key(KEY_F9)) - { - vdp_pal ^= 1; - - /* save YM2612 context */ - unsigned char *temp = malloc(YM2612GetContextSize()); - if (temp) - memcpy(temp, YM2612GetContextPtr(), YM2612GetContextSize()); - - /* reinitialize all timings */ - audio_init(snd.sample_rate, snd.frame_rate); - system_init(); - - /* restore YM2612 context */ - if (temp) - { - YM2612Restore(temp); - free(temp); - } - - /* reinitialize VC max value */ - static const uint16 vc_table[4][2] = - { - /* NTSC, PAL */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0xEA , 0x102}, /* Mode 5 (224 lines) */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0x106, 0x10A} /* Mode 5 (240 lines) */ - }; - vc_max = vc_table[(reg[1] >> 2) & 3][vdp_pal]; - - /* reinitialize overscan area */ - bitmap.viewport.y = (config.overscan & 1) ? (((reg[1] & 8) ? 0 : 8) + (vdp_pal ? 24 : 0)) : 0; - } - - if(check_key(KEY_F10)) set_softreset(); - if(check_key(KEY_TAB)) system_reset(); -} - -void dos_update_audio(void) -{ - osd_play_streamed_sample_16(option.swap ^ 0, snd.buffer[0], snd.buffer_size * 2, option.sndrate, FRAMES_PER_SECOND, -100); - osd_play_streamed_sample_16(option.swap ^ 1, snd.buffer[1], snd.buffer_size * 2, option.sndrate, FRAMES_PER_SECOND, 100); -} - -#if 0 -void dos_update_palette(void) -{ - if(is_border_dirty) - { - uint16 data = *(uint16 *)&cram[(border << 1)]; - RGB *color; - - is_border_dirty = 0; - - if(reg[12] & 8) - { - int j; - for(j = 0; j < 3; j += 1) - { - color = &vdp_palette[j][data]; - set_color((j << 6), color); - } - } - else - { - color = &vdp_palette[1][data]; - set_color(0x00, color); - set_color(0x40, color); - set_color(0x80, color); - } - } - - if(is_color_dirty) - { - int i; - uint16 *p = (uint16 *)&cram[0]; - is_color_dirty = 0; - - for(i = 0; i < 64; i += 1) - { - if((color_dirty[i]) && ((i & 0x0F) != 0x00)) - { - RGB *color; - color_dirty[i] = 0; - if(reg[12] & 8) - { - int j; - for(j = 0; j < 3; j += 1) - { - color = &vdp_palette[j][p[i]]; - set_color((j << 6) | i, color); - } - } - else - { - color = &vdp_palette[1][p[i]]; - set_color(0x00 | i, color); - set_color(0x40 | i, color); - set_color(0x80 | i, color); - } - } - } - } -} -#endif - -void dos_update_video(void) -{ - int width = (bitmap.viewport.w + 2 * bitmap.viewport.x); - int height = (bitmap.viewport.h + 2 * bitmap.viewport.y) << (interlaced ? 1:0); - int center_x = (SCREEN_W - width) / 2; - int center_y = (SCREEN_H / (option.scanlines ? 4 : 2)) - (height / 2); - - /* Wait for VSync */ - if(option.vsync) vsync(); - - if(bitmap.viewport.changed) - { - bitmap.viewport.changed = 0; - if(bitmap.remap) - { - clear(screen); - } - else - { - clear_to_color(screen, 0xFF); - } - } - -#if 0 - if(bitmap.remap == 0) - { - dos_update_palette(); - } -#endif - - msg_print(2, 2, "%d", frame_rate); - - if(option.scanlines) - { - int y; - for(y = 0; y < height; y += 1) - { - blit(gen_bmp, screen, 0x0, y, center_x, (center_y + y) << 1, width, 1); - } - } - else - { - stretch_blit(gen_bmp, screen, 0, 0, width, height, (SCREEN_W-352)/2, (SCREEN_H-240)/2, 352,240 << (interlaced ? 1:0)); - } -} - -void init_machine(void) -{ - do_config("gen.cfg"); - - if(option.sound) - { - msdos_init_sound(&option.sndrate, option.sndcard); - } - - allegro_init(); - install_mouse(); - install_keyboard(); - install_joystick(option.joy_driver); - - install_timer(); - LOCK_FUNCTION(tick_handler); - LOCK_VARIABLE(tick_count); - LOCK_VARIABLE(frame_rate); - install_int_ex(tick_handler, BPS_TO_TIMER(FRAMES_PER_SECOND)); - - set_color_depth(option.video_depth); - gen_bmp = create_bitmap(720, 576); - clear(gen_bmp); - - memset(&bitmap, 0, sizeof(bitmap)); - bitmap.data = (uint8 *)&gen_bmp->line[0][0]; - bitmap.width = gen_bmp->w; - bitmap.height = gen_bmp->h; - bitmap.depth = option.video_depth; - switch(option.video_depth) - { - case 8: - bitmap.granularity = 1; - break; - case 15: - bitmap.granularity = 2; - break; - case 16: - bitmap.granularity = 2; - break; - case 32: - bitmap.granularity = 4; - break; - } - bitmap.pitch = (bitmap.width * bitmap.granularity); - bitmap.viewport.w = 256; - bitmap.viewport.h = 224; - bitmap.viewport.x = 0x00; - bitmap.viewport.y = 0x00; - bitmap.remap = 0; - if(option.remap) bitmap.remap = 1; - else - if(bitmap.depth > 8) bitmap.remap = 1; - - make_vdp_palette(); - - memcpy(gen_pal, black_palette, sizeof(PALETTE)); - gen_pal[0xFE].r = \ - gen_pal[0xFE].g = \ - gen_pal[0xFE].b = 0x3F; - - dos_change_mode(); -} - -void trash_machine(void) -{ - if(option.sound) - { - msdos_shutdown_sound(); - } - clear(screen); - destroy_bitmap(gen_bmp); - set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); -} - -void make_vdp_palette(void) -{ - uint8 lut[3][8] = - { - {0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, 0x1C}, - {0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38}, - {0x20, 0x24, 0x28, 0x2C, 0x30, 0x34, 0x38, 0x3C}, - }; - - int j; - for(j = 0; j < 0x600; j += 1) - { - - int r = (j >> 6) & 7; - int g = (j >> 3) & 7; - int b = (j >> 0) & 7; - int i = (j >> 9) & 3; - - vdp_palette[i][j & 0x1FF].r = lut[i][r]; - vdp_palette[i][j & 0x1FF].g = lut[i][g]; - vdp_palette[i][j & 0x1FF].b = lut[i][b]; - } -} - -void dos_change_mode(void) -{ - int ret; - int width = option.video_width; - int height = option.video_height; - - if(option.scanlines) height *= 2; - ret = set_gfx_mode(option.video_driver, width, height, 0, 0); - if(ret != 0) - { - set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); - printf("Error setting graphics mode (%dx%d %dbpp).\nAllegro says: `%s'\n", width, height, option.video_depth, allegro_error); - exit(1); - } - - if(bitmap.depth == 8) - { - if(bitmap.remap) - { - int i; - for(i = 0; i < 0x100; i += 1) - { - gen_pal[i].r = ((i >> 5) & 7) << 3; - gen_pal[i].g = ((i >> 2) & 7) << 3; - gen_pal[i].b = ((i >> 0) & 3) << 4; - } - set_palette(gen_pal); - } - else - { - clear_to_color(screen, 0xFF); - gen_pal[0xfe].r = 0xff; - gen_pal[0xfe].g = 0xff; - gen_pal[0xfe].b = 0xff; - set_palette(gen_pal); - inp(0x3DA); - outp(0x3C0, 0x31); - outp(0x3C0, 0xFF); - } - } - else - { - clear(screen); - } -} - - - -/* Check if a key is pressed */ -int check_key(int code) -{ - static char lastbuf[0x100] = {0}; - - if((!key[code]) && (lastbuf[code] == 1)) - lastbuf[code] = 0; - - if((key[code]) && (lastbuf[code] == 0)) - { - lastbuf[code] = 1; - return (1); - } - - return (0); -} - +/* + dos.c -- + DOS interface code for the emulator +*/ + +#include "shared.h" +#include "osd.h" + +#define FRAMES_PER_SECOND 60 +#define MSG_LEN 1024 + +RGB vdp_palette[3][0x200]; +PALETTE gen_pal; +BITMAP *gen_bmp; + +volatile int frame_skip = 1; +volatile int frame_count = 0; +volatile int frames_rendered = 0; +volatile int frame_rate = 0; +volatile int tick_count = 0; +volatile int old_tick_count = 0; +volatile int skip = 0; + +int quit = 0; +unsigned char buf[STATE_SIZE]; + +uint8 log_error = 1; +uint8 debug_on = 0; + +void msg_print(int x, int y, char *fmt, ...) +{ + int i = bitmap.viewport.x; + int j = bitmap.viewport.y; + va_list ap; + char token[MSG_LEN]; + char str[MSG_LEN]; + + strcpy(str, "\0"); + va_start(ap, fmt); + vsprintf(token, fmt, ap); + strcat(str, token); + va_end(ap); + + textprintf_ex(gen_bmp, font, i+x+1, j+y , 0x00, -1, "%s", str); + textprintf_ex(gen_bmp, font, i+x-1, j+y , 0x00, -1, "%s", str); + textprintf_ex(gen_bmp, font, i+x , j+y+1, 0x00, -1, "%s", str); + textprintf_ex(gen_bmp, font, i+x , j+y-1, 0x00, -1, "%s", str); + textprintf_ex(gen_bmp, font, i+x , j+y , 0xffff, -1, "%s", str); +} + +int main (int argc, char *argv[]) +{ + if(argc < 2) + { + printf("Genesis Plus - Sega Mega Drive emulator (v1.0)\n"); + printf("(C) 1999, 2000, 2001, 2002, 2003 Charles MacDonald\n"); + printf("Usage %s file.[bin|smd|zip] [-options]\n", argv[0]); + printf("Type `%s -help' for a list of options.\n", argv[0]); + exit(1); + }; + + if(stricmp(argv[1], "-help") == 0) + { + print_options(); + return (0); + } + error_init(); + + cart.rom = malloc(0xA00000); + memset(cart.rom, 0, 0xA00000); + + if(!load_rom(argv[1])) + { + printf("File `%s' not found.\n", argv[1]); + return (0); + } + + + /* load BIOS */ + memset(bios_rom, 0, sizeof(bios_rom)); + FILE *f = fopen("./BIOS.bin", "rb"); + if (f!=NULL) + { + fread(&bios_rom, 0x800,1,f); + fclose(f); + int i; + for(i = 0; i < 0x800; i += 2) + { + uint8 temp = bios_rom[i]; + bios_rom[i] = bios_rom[i+1]; + bios_rom[i+1] = temp; + } + config.tmss |= 2; + } + + /* initialize genesis VM */ + init_machine(); + + /* default config */ + do_config("genplus.cfg"); + set_config_defaults(); + + /* initialize emulation */ + system_init(); + audio_init(option.sndrate, vdp_pal ? 50 : 60); + + f = fopen("./game.srm", "rb"); + if (f!=NULL) + { + fread(&sram.sram,0x10000,1, f); + fclose(f); + } + + /* reset emulation */ + system_reset(); + + /* emulation loop */ + for(;;) + { + dos_update_input(); + frame_count += 1; + if(quit) break; + if(frame_count % frame_skip == 0) + { + system_frame(0); + frames_rendered++; + dos_update_video(); + } + else + { + system_frame(1); + } + + audio_update(); + if(option.sound) + dos_update_audio(); + } + + f = fopen("./game.srm", "wb"); + if (f!=NULL) + { + fwrite(&sram.sram, 0x10000,1,f); + fclose(f); + } + + trash_machine(); + system_shutdown(); + error_shutdown(); + free(cart.rom); + + return (0); +} + +/* Timer handler */ +void tick_handler(void) +{ + tick_count += 1; + if(tick_count % FRAMES_PER_SECOND == 0) + { + frame_rate = frames_rendered; + frames_rendered = 0; + } +} +END_OF_FUNCTION(tick_handler); + + +int load_file(char *filename, char *buf, int size) +{ + FILE *fd = fopen(filename, "rb"); + if(!fd) return (0); + fread(buf, size, 1, fd); + fclose(fd); + return (1); +} + +int save_file(char *filename, char *buf, int size) +{ + FILE *fd = NULL; + if(!(fd = fopen(filename, "wb"))) return (0); + fwrite(buf, size, 1, fd); + fclose(fd); + return (1); +} + +static int joynum = 0; + +void dos_update_input(void) +{ + FILE *f; + + if(key[KEY_ESC] || key[KEY_END]) + { + quit = 1; + } + + while (input.dev[joynum] == NO_DEVICE) + { + joynum ++; + if (joynum > MAX_DEVICES - 1) joynum = 0; + } + + if(check_key(KEY_F11)) + { + joynum ++; + if (joynum > MAX_DEVICES - 1) joynum = 0; + + while (input.dev[joynum] == NO_DEVICE) + { + joynum ++; + if (joynum > MAX_DEVICES - 1) joynum = 0; + } + } + + input.pad[joynum] = 0; + + /* Is the joystick being used ? */ + if(option.joy_driver != JOY_TYPE_NONE) + { + poll_joystick(); + + /* Check player 1 joystick */ + if(joy[0].stick[0].axis[1].d1) input.pad[0] |= INPUT_UP; + else + if(joy[0].stick[0].axis[1].d2) input.pad[0] |= INPUT_DOWN; + + if(joy[0].stick[0].axis[0].d1) input.pad[0] |= INPUT_LEFT; + else + if(joy[0].stick[0].axis[0].d2) input.pad[0] |= INPUT_RIGHT; + + if(joy[0].button[0].b) input.pad[0] |= INPUT_A; + if(joy[0].button[1].b) input.pad[0] |= INPUT_B; + if(joy[0].button[2].b) input.pad[0] |= INPUT_C; + if(joy[0].button[3].b) input.pad[0] |= INPUT_START; + if(joy[0].button[4].b) input.pad[0] |= INPUT_X; + if(joy[0].button[5].b) input.pad[0] |= INPUT_Y; + if(joy[0].button[6].b) input.pad[0] |= INPUT_Z; + if(joy[0].button[7].b) input.pad[0] |= INPUT_MODE; + + /* More than one joystick supported ? */ + if(num_joysticks > 2) + { + /* Check player 2 joystick */ + if(joy[1].stick[0].axis[1].d1) input.pad[1] |= INPUT_UP; + else + if(joy[1].stick[0].axis[1].d2) input.pad[1] |= INPUT_DOWN; + + if(joy[1].stick[0].axis[0].d1) input.pad[1] |= INPUT_LEFT; + else + if(joy[1].stick[0].axis[0].d1) input.pad[1] |= INPUT_RIGHT; + + if(joy[1].button[0].b) input.pad[1] |= INPUT_A; + if(joy[1].button[1].b) input.pad[1] |= INPUT_B; + if(joy[1].button[2].b) input.pad[1] |= INPUT_C; + if(joy[1].button[3].b) input.pad[1] |= INPUT_START; + if(joy[1].button[4].b) input.pad[1] |= INPUT_X; + if(joy[1].button[5].b) input.pad[1] |= INPUT_Y; + if(joy[1].button[6].b) input.pad[1] |= INPUT_Z; + if(joy[1].button[7].b) input.pad[1] |= INPUT_MODE; + } + } + + /* keyboard */ + if(key[KEY_UP]) input.pad[joynum] |= INPUT_UP; + else + if(key[KEY_DOWN]) input.pad[joynum] |= INPUT_DOWN; + + if(key[KEY_LEFT]) input.pad[joynum] |= INPUT_LEFT; + else + if(key[KEY_RIGHT]) input.pad[joynum] |= INPUT_RIGHT; + + if(key[KEY_A]) input.pad[joynum] |= INPUT_A; + if(key[KEY_S]) input.pad[joynum] |= INPUT_B; + if(key[KEY_D]) input.pad[joynum] |= INPUT_C; + if(key[KEY_Z]) input.pad[joynum] |= INPUT_X; + if(key[KEY_X]) input.pad[joynum] |= INPUT_Y; + if(key[KEY_C]) input.pad[joynum] |= INPUT_Z; + if(key[KEY_V]) input.pad[joynum] |= INPUT_MODE; + + if(key[KEY_F]) input.pad[joynum] |= INPUT_START; + + extern uint8 pico_current; + if (input.dev[joynum] == DEVICE_LIGHTGUN) + { + /* Poll mouse if necessary */ + if(mouse_needs_poll() == TRUE) + poll_mouse(); + + /* Calculate X Y axis values */ + input.analog[joynum][0] = (mouse_x * bitmap.viewport.w) / SCREEN_W; + input.analog[joynum][1] = (mouse_y * bitmap.viewport.h) / SCREEN_H; + + /* Map mouse buttons to player #1 inputs */ + if(mouse_b & 4) input.pad[joynum] |= INPUT_C; + if(mouse_b & 2) input.pad[joynum] |= INPUT_B; + if(mouse_b & 1) input.pad[joynum] |= INPUT_A; + } + else if (input.dev[joynum] == DEVICE_MOUSE) + { + /* Poll mouse if necessary */ + if(mouse_needs_poll() == TRUE) + poll_mouse(); + + /* Get X & Y quantity of movement */ + get_mouse_mickeys(&input.analog[joynum][0], &input.analog[joynum][1]); + + /* Sega Mouse range is -256;+256 */ + input.analog[joynum][0] = (input.analog[joynum][0] * 256) / SCREEN_W; + input.analog[joynum][1] = (input.analog[joynum][1] * 256) / SCREEN_H; + + /* Vertical movement is upsidedown */ + if (!config.invert_mouse) input.analog[joynum][1] = 0 - input.analog[joynum][1]; + + /* Map mouse buttons to player #1 inputs */ + if(mouse_b & 4) input.pad[joynum] |= INPUT_C; + if(mouse_b & 1) input.pad[joynum] |= INPUT_B; + if(mouse_b & 2) input.pad[joynum] |= INPUT_A; + } + else if (system_hw == SYSTEM_PICO) + { + /* Poll mouse if necessary */ + if(mouse_needs_poll() == TRUE) + poll_mouse(); + + /* Calculate X Y axis values */ + input.analog[0][0] = 0x3c + (mouse_x * (0x17c-0x03c+1)) / SCREEN_W; + input.analog[0][1] = 0x1fc + (mouse_y * (0x2f7-0x1fc+1)) / SCREEN_H; + + /* Map mouse buttons to player #1 inputs */ + if(mouse_b & 2) input.pad[0] |= INPUT_B; + if(mouse_b & 1) input.pad[0] |= INPUT_A; + if(mouse_b & 4) pico_current++; + if (pico_current > 6) pico_current = 0; + } + + if(check_key(KEY_F1)) frame_skip = 1; + if(check_key(KEY_F2)) frame_skip = 2; + if(check_key(KEY_F3)) frame_skip = 3; + if(check_key(KEY_F4)) frame_skip = 4; + + if(check_key(KEY_F5)) log_error ^= 1; + if(check_key(KEY_F6)) debug_on ^= 1; + + if(check_key(KEY_F7)) + { + f = fopen("game.gpz","r+b"); + if (f) + { + fread(&buf, STATE_SIZE, 1, f); + state_load(buf); + fclose(f); + } + } + + if(check_key(KEY_F8)) + { + f = fopen("game.gpz","w+b"); + if (f) + { + state_save(buf); + fwrite(&buf, STATE_SIZE, 1, f); + fclose(f); + } + } + + if(check_key(KEY_F9)) + { + vdp_pal ^= 1; + + /* save YM2612 context */ + unsigned char *temp = malloc(YM2612GetContextSize()); + if (temp) + memcpy(temp, YM2612GetContextPtr(), YM2612GetContextSize()); + + /* reinitialize all timings */ + audio_init(snd.sample_rate, snd.frame_rate); + system_init(); + + /* restore YM2612 context */ + if (temp) + { + YM2612Restore(temp); + free(temp); + } + + /* reinitialize VC max value */ + static const uint16 vc_table[4][2] = + { + /* NTSC, PAL */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0xEA , 0x102}, /* Mode 5 (224 lines) */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0x106, 0x10A} /* Mode 5 (240 lines) */ + }; + vc_max = vc_table[(reg[1] >> 2) & 3][vdp_pal]; + + /* reinitialize overscan area */ + bitmap.viewport.y = (config.overscan & 1) ? (((reg[1] & 8) ? 0 : 8) + (vdp_pal ? 24 : 0)) : 0; + } + + if(check_key(KEY_F10)) set_softreset(); + if(check_key(KEY_TAB)) system_reset(); +} + +void dos_update_audio(void) +{ + osd_play_streamed_sample_16(option.swap ^ 0, snd.buffer[0], snd.buffer_size * 2, option.sndrate, FRAMES_PER_SECOND, -100); + osd_play_streamed_sample_16(option.swap ^ 1, snd.buffer[1], snd.buffer_size * 2, option.sndrate, FRAMES_PER_SECOND, 100); +} + +#if 0 +void dos_update_palette(void) +{ + if(is_border_dirty) + { + uint16 data = *(uint16 *)&cram[(border << 1)]; + RGB *color; + + is_border_dirty = 0; + + if(reg[12] & 8) + { + int j; + for(j = 0; j < 3; j += 1) + { + color = &vdp_palette[j][data]; + set_color((j << 6), color); + } + } + else + { + color = &vdp_palette[1][data]; + set_color(0x00, color); + set_color(0x40, color); + set_color(0x80, color); + } + } + + if(is_color_dirty) + { + int i; + uint16 *p = (uint16 *)&cram[0]; + is_color_dirty = 0; + + for(i = 0; i < 64; i += 1) + { + if((color_dirty[i]) && ((i & 0x0F) != 0x00)) + { + RGB *color; + color_dirty[i] = 0; + if(reg[12] & 8) + { + int j; + for(j = 0; j < 3; j += 1) + { + color = &vdp_palette[j][p[i]]; + set_color((j << 6) | i, color); + } + } + else + { + color = &vdp_palette[1][p[i]]; + set_color(0x00 | i, color); + set_color(0x40 | i, color); + set_color(0x80 | i, color); + } + } + } + } +} +#endif + +void dos_update_video(void) +{ + int width = (bitmap.viewport.w + 2 * bitmap.viewport.x); + int height = (bitmap.viewport.h + 2 * bitmap.viewport.y) << (interlaced ? 1:0); + int center_x = (SCREEN_W - width) / 2; + int center_y = (SCREEN_H / (option.scanlines ? 4 : 2)) - (height / 2); + + /* Wait for VSync */ + if(option.vsync) vsync(); + + if(bitmap.viewport.changed) + { + bitmap.viewport.changed = 0; + if(bitmap.remap) + { + clear(screen); + } + else + { + clear_to_color(screen, 0xFF); + } + } + +#if 0 + if(bitmap.remap == 0) + { + dos_update_palette(); + } +#endif + + msg_print(2, 2, "%d", frame_rate); + + if(option.scanlines) + { + int y; + for(y = 0; y < height; y += 1) + { + blit(gen_bmp, screen, 0x0, y, center_x, (center_y + y) << 1, width, 1); + } + } + else + { + stretch_blit(gen_bmp, screen, 0, 0, width, height, (SCREEN_W-352)/2, (SCREEN_H-240)/2, 352,240 << (interlaced ? 1:0)); + } +} + +void init_machine(void) +{ + do_config("gen.cfg"); + + if(option.sound) + { + msdos_init_sound(&option.sndrate, option.sndcard); + } + + allegro_init(); + install_mouse(); + install_keyboard(); + install_joystick(option.joy_driver); + + install_timer(); + LOCK_FUNCTION(tick_handler); + LOCK_VARIABLE(tick_count); + LOCK_VARIABLE(frame_rate); + install_int_ex(tick_handler, BPS_TO_TIMER(FRAMES_PER_SECOND)); + + set_color_depth(option.video_depth); + gen_bmp = create_bitmap(720, 576); + clear(gen_bmp); + + memset(&bitmap, 0, sizeof(bitmap)); + bitmap.data = (uint8 *)&gen_bmp->line[0][0]; + bitmap.width = gen_bmp->w; + bitmap.height = gen_bmp->h; + bitmap.depth = option.video_depth; + switch(option.video_depth) + { + case 8: + bitmap.granularity = 1; + break; + case 15: + bitmap.granularity = 2; + break; + case 16: + bitmap.granularity = 2; + break; + case 32: + bitmap.granularity = 4; + break; + } + bitmap.pitch = (bitmap.width * bitmap.granularity); + bitmap.viewport.w = 256; + bitmap.viewport.h = 224; + bitmap.viewport.x = 0x00; + bitmap.viewport.y = 0x00; + bitmap.remap = 0; + if(option.remap) bitmap.remap = 1; + else + if(bitmap.depth > 8) bitmap.remap = 1; + + make_vdp_palette(); + + memcpy(gen_pal, black_palette, sizeof(PALETTE)); + gen_pal[0xFE].r = \ + gen_pal[0xFE].g = \ + gen_pal[0xFE].b = 0x3F; + + dos_change_mode(); +} + +void trash_machine(void) +{ + if(option.sound) + { + msdos_shutdown_sound(); + } + clear(screen); + destroy_bitmap(gen_bmp); + set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); +} + +void make_vdp_palette(void) +{ + uint8 lut[3][8] = + { + {0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, 0x1C}, + {0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38}, + {0x20, 0x24, 0x28, 0x2C, 0x30, 0x34, 0x38, 0x3C}, + }; + + int j; + for(j = 0; j < 0x600; j += 1) + { + + int r = (j >> 6) & 7; + int g = (j >> 3) & 7; + int b = (j >> 0) & 7; + int i = (j >> 9) & 3; + + vdp_palette[i][j & 0x1FF].r = lut[i][r]; + vdp_palette[i][j & 0x1FF].g = lut[i][g]; + vdp_palette[i][j & 0x1FF].b = lut[i][b]; + } +} + +void dos_change_mode(void) +{ + int ret; + int width = option.video_width; + int height = option.video_height; + + if(option.scanlines) height *= 2; + ret = set_gfx_mode(option.video_driver, width, height, 0, 0); + if(ret != 0) + { + set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); + printf("Error setting graphics mode (%dx%d %dbpp).\nAllegro says: `%s'\n", width, height, option.video_depth, allegro_error); + exit(1); + } + + if(bitmap.depth == 8) + { + if(bitmap.remap) + { + int i; + for(i = 0; i < 0x100; i += 1) + { + gen_pal[i].r = ((i >> 5) & 7) << 3; + gen_pal[i].g = ((i >> 2) & 7) << 3; + gen_pal[i].b = ((i >> 0) & 3) << 4; + } + set_palette(gen_pal); + } + else + { + clear_to_color(screen, 0xFF); + gen_pal[0xfe].r = 0xff; + gen_pal[0xfe].g = 0xff; + gen_pal[0xfe].b = 0xff; + set_palette(gen_pal); + inp(0x3DA); + outp(0x3C0, 0x31); + outp(0x3C0, 0xFF); + } + } + else + { + clear(screen); + } +} + + + +/* Check if a key is pressed */ +int check_key(int code) +{ + static char lastbuf[0x100] = {0}; + + if((!key[code]) && (lastbuf[code] == 1)) + lastbuf[code] = 0; + + if((key[code]) && (lastbuf[code] == 0)) + { + lastbuf[code] = 1; + return (1); + } + + return (0); +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/dos.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/dos.h similarity index 95% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/dos.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/dos.h index 0f2a36b369..6216612222 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/dos.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/dos.h @@ -1,26 +1,26 @@ - -#ifndef _DOS_H_ -#define _DOS_H_ - -#define LOGERROR 1 - -/* Function prototypes */ -int load_file(char *filename, char *buf, int size); -int save_file(char *filename, char *buf, int size); -void dos_update_input(void); -void dos_update_audio(void); -void dos_update_palette(void); -void dos_update_video(void); -void init_machine(void); -void trash_machine(void); -void make_vdp_palette(void); -void dos_change_mode(void); -int check_key(int code); - -#define MAX_INPUTS 8 - -extern uint8 debug_on; -extern uint8 log_error; - -#endif /* _DOS_H_ */ - + +#ifndef _DOS_H_ +#define _DOS_H_ + +#define LOGERROR 1 + +/* Function prototypes */ +int load_file(char *filename, char *buf, int size); +int save_file(char *filename, char *buf, int size); +void dos_update_input(void); +void dos_update_audio(void); +void dos_update_palette(void); +void dos_update_video(void); +void init_machine(void); +void trash_machine(void); +void make_vdp_palette(void); +void dos_change_mode(void); +int check_key(int code); + +#define MAX_INPUTS 8 + +extern uint8 debug_on; +extern uint8 log_error; + +#endif /* _DOS_H_ */ + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/error.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/error.c new file mode 100644 index 0000000000..4775b35809 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/error.c @@ -0,0 +1,32 @@ + +#include "osd.h" + +FILE *error_log; + +struct { + int enabled; + int verbose; + FILE *log; +} t_error; + +void error_init(void) +{ +#ifdef LOG_ERROR + error_log = fopen("error.log","w"); +#endif +} + +void error_shutdown(void) +{ + if(error_log) fclose(error_log); +} + +void error(char *format, ...) +{ + if (!log_error) return; + va_list ap; + va_start(ap, format); + if(error_log) vfprintf(error_log, format, ap); + va_end(ap); +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/error.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/error.h new file mode 100644 index 0000000000..14dc8e6ead --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/error.h @@ -0,0 +1,13 @@ + +#ifndef _ERROR_H_ +#define _ERROR_H_ + +/* Global variables */ +FILE *error_log; + +/* Function prototypes */ +void error_init(void); +void error_shutdown(void); +void error(char *format, ...); + +#endif /* _ERROR_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/fileio.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/fileio.c new file mode 100644 index 0000000000..000487fb1f --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/fileio.c @@ -0,0 +1,151 @@ +#include "shared.h" + +/* + Load a normal file, or ZIP/GZ archive. + Returns NULL if an error occured. +*/ +uint8 *load_archive(char *filename, int *file_size) +{ + int size = 0; + uint8 *buf = NULL; + + if(check_zip(filename)) + { + unzFile *fd = NULL; + unz_file_info info; + int ret = 0; + + /* Attempt to open the archive */ + fd = unzOpen(filename); + if(!fd) return (NULL); + + /* Go to first file in archive */ + ret = unzGoToFirstFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return (NULL); + } + + ret = unzGetCurrentFileInfo(fd, &info, filename, 128, NULL, 0, NULL, 0); + if(ret != UNZ_OK) + { + unzClose(fd); + return (NULL); + } + + /* Open the file for reading */ + ret = unzOpenCurrentFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return (NULL); + } + + /* Allocate file data buffer */ + size = info.uncompressed_size; + buf = malloc(size); + if(!buf) + { + unzClose(fd); + return (NULL); + } + + /* Read (decompress) the file */ + ret = unzReadCurrentFile(fd, buf, info.uncompressed_size); + if(ret != info.uncompressed_size) + { + free(buf); + unzCloseCurrentFile(fd); + unzClose(fd); + return (NULL); + } + + /* Close the current file */ + ret = unzCloseCurrentFile(fd); + if(ret != UNZ_OK) + { + free(buf); + unzClose(fd); + return (NULL); + } + + /* Close the archive */ + ret = unzClose(fd); + if(ret != UNZ_OK) + { + free(buf); + return (NULL); + } + + /* Update file size and return pointer to file data */ + *file_size = size; + return (buf); + } + else + { + gzFile *gd = NULL; + + /* Open file */ + gd = gzopen(filename, "rb"); + if(!gd) return (0); + + /* Get file size */ + size = gzsize(gd); + + /* Allocate file data buffer */ + buf = malloc(size); + if(!buf) + { + gzclose(gd); + return (0); + } + + /* Read file data */ + gzread(gd, buf, size); + + /* Close file */ + gzclose(gd); + + /* Update file size and return pointer to file data */ + *file_size = size; + return (buf); + } +} + + +/* + Verifies if a file is a ZIP archive or not. + Returns: 1= ZIP archive, 0= not a ZIP archive +*/ +int check_zip(char *filename) +{ + uint8 buf[2]; + FILE *fd = NULL; + fd = fopen(filename, "rb"); + if(!fd) return (0); + fread(buf, 2, 1, fd); + fclose(fd); + if(memcmp(buf, "PK", 2) == 0) return (1); + return (0); +} + + +/* + Returns the size of a GZ compressed file. +*/ +int gzsize(gzFile *gd) +{ + #define CHUNKSIZE (0x10000) + int size = 0, length = 0; + unsigned char buffer[CHUNKSIZE]; + gzrewind(gd); + do { + size = gzread(gd, buffer, CHUNKSIZE); + if(size <= 0) break; + length += size; + } while (!gzeof(gd)); + gzrewind(gd); + return (length); + #undef CHUNKSIZE +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/fileio.h new file mode 100644 index 0000000000..789534d0c5 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/fileio.h @@ -0,0 +1,14 @@ +#ifndef _FILEIO_H_ +#define _FILEIO_H_ + +/* Global variables */ +extern int cart_size; +extern char cart_name[0x100]; + +/* Function prototypes */ +uint8 *load_archive(char *filename, int *file_size); +int load_cart(char *filename); +int check_zip(char *filename); +int gzsize(gzFile *gd); + +#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/osd.h new file mode 100644 index 0000000000..9b2a3835ae --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/osd.h @@ -0,0 +1,22 @@ + +#ifndef _OSD_H_ +#define _OSD_H_ + +#include +#include +#include +#include +#include +#include + +#include "shared.h" +#include "dos.h" +#include "config.h" +#include "sealintf.h" +#include "error.h" +#include "unzip.h" +#include "fileio.h" + +volatile int frame_count; + +#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/readme-djgpp.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/readme-djgpp.txt similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/readme-djgpp.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/readme-djgpp.txt index a6cd07ddef..04b314ec6f 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/readme-djgpp.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/readme-djgpp.txt @@ -1,3 +1,3 @@ -Compile with DJGPP. -You will also need to install Allegro and Seal libraries. +Compile with DJGPP. +You will also need to install Allegro and Seal libraries. Zlib is required for zipped rom support. \ No newline at end of file diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/unzip.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/unzip.c new file mode 100644 index 0000000000..1bbb143daa --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/unzip.c @@ -0,0 +1,1294 @@ +/* unzip.c -- IO on .zip files using zlib + Version 0.15 beta, Mar 19th, 1998, + + Read unzip.h for more info +*/ + + +#include +#include +#include +#include "zlib.h" +#include "unzip.h" + +#ifdef STDC +# include +# include +# include +#endif +#ifdef NO_ERRNO_H + extern int errno; +#else + #include +#endif + + +#ifndef local + #define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + + + +#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ + !defined(CASESENSITIVITYDEFAULT_NO) +#define CASESENSITIVITYDEFAULT_NO +#endif + + +#ifndef UNZ_BUFSIZE +#define UNZ_BUFSIZE (16384) +#endif + +#ifndef UNZ_MAXFILENAMEINZIP +#define UNZ_MAXFILENAMEINZIP (256) +#endif + +#ifndef ALLOC +# define ALLOC(size) (malloc(size)) +#endif +#ifndef TRYFREE +# define TRYFREE(p) {if (p) free(p);} +#endif + +#define SIZECENTRALDIRITEM (0x2e) +#define SIZEZIPLOCALHEADER (0x1e) + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +const char unz_copyright[] = + " unzip 0.15 Copyright 1998 Gilles Vollant "; + +/* unz_file_info_interntal contain internal info about a file in zipfile*/ +typedef struct unz_file_info_internal_s +{ + uLong offset_curfile;/* relative offset of local header 4 bytes */ +} unz_file_info_internal; + + +/* file_in_zip_read_info_s contain internal information about a file in zipfile, + when reading and decompress it */ +typedef struct +{ + char *read_buffer; /* internal buffer for compressed data */ + z_stream stream; /* zLib stream structure for inflate */ + + uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ + uLong stream_initialised; /* flag set if stream structure is initialised*/ + + uLong offset_local_extrafield;/* offset of the local extra field */ + uInt size_local_extrafield;/* size of the local extra field */ + uLong pos_local_extrafield; /* position in the local extra field in read*/ + + uLong crc32; /* crc32 of all data uncompressed */ + uLong crc32_wait; /* crc32 we must obtain after decompress all */ + uLong rest_read_compressed; /* number of byte to be decompressed */ + uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ + FILE* file; /* io structore of the zipfile */ + uLong compression_method; /* compression method (0==store) */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ +} file_in_zip_read_info_s; + + +/* unz_s contain internal information about the zipfile +*/ +typedef struct +{ + FILE* file; /* io structore of the zipfile */ + unz_global_info gi; /* public global information */ + uLong byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ + uLong num_file; /* number of the current file in the zipfile*/ + uLong pos_in_central_dir; /* pos of the current file in the central dir*/ + uLong current_file_ok; /* flag about the usability of the current file*/ + uLong central_pos; /* position of the beginning of the central dir*/ + + uLong size_central_dir; /* size of the central directory */ + uLong offset_central_dir; /* offset of start of central directory with + respect to the starting disk number */ + + unz_file_info cur_file_info; /* public info about the current file in zip*/ + unz_file_info_internal cur_file_info_internal; /* private info about it*/ + file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current + file if we are decompressing it */ +} unz_s; + + +/* =========================================================================== + Read a byte from a gz_stream; update next_in and avail_in. Return EOF + for end of file. + IN assertion: the stream s has been sucessfully opened for reading. +*/ + + +local int unzlocal_getByte(fin,pi) + FILE *fin; + int *pi; +{ + unsigned char c; + int err = fread(&c, 1, 1, fin); + if (err==1) + { + *pi = (int)c; + return UNZ_OK; + } + else + { + if (ferror(fin)) + return UNZ_ERRNO; + else + return UNZ_EOF; + } +} + + +/* =========================================================================== + Reads a long in LSB order from the given gz_stream. Sets +*/ +local int unzlocal_getShort (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i = 0; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + +local int unzlocal_getLong (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i = 0; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<16; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<24; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + + +/* My own strcmpi / strcasecmp */ +local int strcmpcasenosensitive_internal (fileName1,fileName2) + const char* fileName1; + const char* fileName2; +{ + for (;;) + { + char c1=*(fileName1++); + char c2=*(fileName2++); + if ((c1>='a') && (c1<='z')) + c1 -= 0x20; + if ((c2>='a') && (c2<='z')) + c2 -= 0x20; + if (c1=='\0') + return ((c2=='\0') ? 0 : -1); + if (c2=='\0') + return 1; + if (c1c2) + return 1; + } +} + + +#ifdef CASESENSITIVITYDEFAULT_NO +#define CASESENSITIVITYDEFAULTVALUE 2 +#else +#define CASESENSITIVITYDEFAULTVALUE 1 +#endif + +#ifndef STRCMPCASENOSENTIVEFUNCTION +#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal +#endif + +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) + +*/ +extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) + const char* fileName1; + const char* fileName2; + int iCaseSensitivity; +{ + if (iCaseSensitivity==0) + iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; + + if (iCaseSensitivity==1) + return strcmp(fileName1,fileName2); + + return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); +} + +#define BUFREADCOMMENT (0x400) + +/* + Locate the Central directory of a zipfile (at the end, just before + the global comment) +*/ +local uLong unzlocal_SearchCentralDir(fin) + FILE *fin; +{ + unsigned char* buf; + uLong uSizeFile; + uLong uBackRead; + uLong uMaxBack=0xffff; /* maximum size of global comment */ + uLong uPosFound=0; + + if (fseek(fin,0,SEEK_END) != 0) + return 0; + + + uSizeFile = ftell( fin ); + + if (uMaxBack>uSizeFile) + uMaxBack = uSizeFile; + + buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); + if (buf==NULL) + return 0; + + uBackRead = 4; + while (uBackReaduMaxBack) + uBackRead = uMaxBack; + else + uBackRead+=BUFREADCOMMENT; + uReadPos = uSizeFile-uBackRead ; + + uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? + (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); + if (fseek(fin,uReadPos,SEEK_SET)!=0) + break; + + if (fread(buf,(uInt)uReadSize,1,fin)!=1) + break; + + for (i=(int)uReadSize-3; (i--)>0;) + if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && + ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) + { + uPosFound = uReadPos+i; + break; + } + + if (uPosFound!=0) + break; + } + TRYFREE(buf); + return uPosFound; +} + +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer + "zlib/zlib109.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ +extern unzFile ZEXPORT unzOpen (path) + const char *path; +{ + unz_s us; + unz_s *s; + uLong central_pos,uL; + FILE * fin ; + + uLong number_disk; /* number of the current dist, used for + spaning ZIP, unsupported, always 0*/ + uLong number_disk_with_CD; /* number the the disk with central dir, used + for spaning ZIP, unsupported, always 0*/ + uLong number_entry_CD; /* total number of entries in + the central dir + (same than number_entry on nospan) */ + + int err=UNZ_OK; + + if (unz_copyright[0]!=' ') + return NULL; + + fin=fopen(path,"rb"); + if (fin==NULL) + return NULL; + + central_pos = unzlocal_SearchCentralDir(fin); + if (central_pos==0) + err=UNZ_ERRNO; + + if (fseek(fin,central_pos,SEEK_SET)!=0) + err=UNZ_ERRNO; + + /* the signature, already checked */ + if (unzlocal_getLong(fin,&uL)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of this disk */ + if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of the disk with the start of the central directory */ + if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir on this disk */ + if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir */ + if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((number_entry_CD!=us.gi.number_entry) || + (number_disk_with_CD!=0) || + (number_disk!=0)) + err=UNZ_BADZIPFILE; + + /* size of the central directory */ + if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* offset of start of central directory with respect to the + starting disk number */ + if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* zipfile comment length */ + if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((central_pospfile_in_zip_read!=NULL) + unzCloseCurrentFile(file); + + fclose(s->file); + TRYFREE(s); + return UNZ_OK; +} + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ +extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) + unzFile file; + unz_global_info *pglobal_info; +{ + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + *pglobal_info=s->gi; + return UNZ_OK; +} + + +/* + Translate date/time from Dos format to tm_unz (readable more easilty) +*/ +local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) + uLong ulDosDate; + tm_unz* ptm; +{ + uLong uDate; + uDate = (uLong)(ulDosDate>>16); + ptm->tm_mday = (uInt)(uDate&0x1f) ; + ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; + ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; + + ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); + ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; + ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; +} + +/* + Get Info about the current file in the zipfile, with internal only info +*/ +local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, + unz_file_info *pfile_info, + unz_file_info_internal + *pfile_info_internal, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); + +local int unzlocal_GetCurrentFileInfoInternal (file, + pfile_info, + pfile_info_internal, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + unz_file_info_internal *pfile_info_internal; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + unz_s* s; + unz_file_info file_info; + unz_file_info_internal file_info_internal; + int err=UNZ_OK; + uLong uMagic; + long lSeek=0; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) + err=UNZ_ERRNO; + + + /* we check the magic */ + if (err==UNZ_OK) + { + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x02014b50) + err=UNZ_BADZIPFILE; + } + + if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) + err=UNZ_ERRNO; + + unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); + + if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) + err=UNZ_ERRNO; + + lSeek+=file_info.size_filename; + if ((err==UNZ_OK) && (szFileName!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_filename0) && (fileNameBufferSize>0)) + if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek -= uSizeRead; + } + + if ((err==UNZ_OK) && (extraField!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + + if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) + if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek += file_info.size_file_extra - uSizeRead; + } + else + lSeek+=file_info.size_file_extra; + + if ((err==UNZ_OK) && (szComment!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + + if ((file_info.size_file_comment>0) && (commentBufferSize>0)) + if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek+=file_info.size_file_comment - uSizeRead; + } + else + lSeek+=file_info.size_file_comment; + + if ((err==UNZ_OK) && (pfile_info!=NULL)) + *pfile_info=file_info; + + if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) + *pfile_info_internal=file_info_internal; + + return err; +} + + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. +*/ +extern int ZEXPORT unzGetCurrentFileInfo (file, + pfile_info, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, + szFileName,fileNameBufferSize, + extraField,extraFieldBufferSize, + szComment,commentBufferSize); +} + +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ +extern int ZEXPORT unzGoToFirstFile (file) + unzFile file; +{ + int err=UNZ_OK; + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + s->pos_in_central_dir=s->offset_central_dir; + s->num_file=0; + err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ +extern int ZEXPORT unzGoToNextFile (file) + unzFile file; +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + if (s->num_file+1==s->gi.number_entry) + return UNZ_END_OF_LIST_OF_FILE; + + s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; + s->num_file++; + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzipStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ +extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) + unzFile file; + const char *szFileName; + int iCaseSensitivity; +{ + unz_s* s; + int err; + + uLong num_fileSaved; + uLong pos_in_central_dirSaved; + + if (file==NULL) + return UNZ_PARAMERROR; + + if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) + return UNZ_PARAMERROR; + + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + num_fileSaved = s->num_file; + pos_in_central_dirSaved = s->pos_in_central_dir; + + err = unzGoToFirstFile(file); + + while (err == UNZ_OK) + { + char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; + unzGetCurrentFileInfo(file,NULL, + szCurrentFileName,sizeof(szCurrentFileName)-1, + NULL,0,NULL,0); + if (unzStringFileNameCompare(szCurrentFileName, + szFileName,iCaseSensitivity)==0) + return UNZ_OK; + err = unzGoToNextFile(file); + } + + s->num_file = num_fileSaved ; + s->pos_in_central_dir = pos_in_central_dirSaved ; + return err; +} + + +/* + Read the local header of the current zipfile + Check the coherency of the local header and info in the end of central + directory about this file + store in *piSizeVar the size of extra info in local header + (filename and size of extra field data) +*/ +local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, + poffset_local_extrafield, + psize_local_extrafield) + unz_s* s; + uInt* piSizeVar; + uLong *poffset_local_extrafield; + uInt *psize_local_extrafield; +{ + uLong uMagic,uData,uFlags; + uLong size_filename; + uLong size_extra_field; + int err=UNZ_OK; + + *piSizeVar = 0; + *poffset_local_extrafield = 0; + *psize_local_extrafield = 0; + + if (fseek(s->file,s->cur_file_info_internal.offset_curfile + + s->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + + + if (err==UNZ_OK) + { + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x04034b50) + err=UNZ_BADZIPFILE; + } + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; +/* + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) + err=UNZ_BADZIPFILE; +*/ + if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) + err=UNZ_BADZIPFILE; + + if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + + if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) + err=UNZ_BADZIPFILE; + + *piSizeVar += (uInt)size_filename; + + if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) + err=UNZ_ERRNO; + *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + + SIZEZIPLOCALHEADER + size_filename; + *psize_local_extrafield = (uInt)size_extra_field; + + *piSizeVar += (uInt)size_extra_field; + + return err; +} + +/* + Open for reading data the current file in the zipfile. + If there is no error and the file is opened, the return value is UNZ_OK. +*/ +extern int ZEXPORT unzOpenCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + int Store; + uInt iSizeVar; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uLong offset_local_extrafield; /* offset of the local extra field */ + uInt size_local_extrafield; /* size of the local extra field */ + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_PARAMERROR; + + if (s->pfile_in_zip_read != NULL) + unzCloseCurrentFile(file); + + if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, + &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) + return UNZ_BADZIPFILE; + + pfile_in_zip_read_info = (file_in_zip_read_info_s*) + ALLOC(sizeof(file_in_zip_read_info_s)); + if (pfile_in_zip_read_info==NULL) + return UNZ_INTERNALERROR; + + pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); + pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; + pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; + pfile_in_zip_read_info->pos_local_extrafield=0; + + if (pfile_in_zip_read_info->read_buffer==NULL) + { + TRYFREE(pfile_in_zip_read_info); + return UNZ_INTERNALERROR; + } + + pfile_in_zip_read_info->stream_initialised=0; + + if ((s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + Store = s->cur_file_info.compression_method==0; + + pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; + pfile_in_zip_read_info->crc32=0; + pfile_in_zip_read_info->compression_method = + s->cur_file_info.compression_method; + pfile_in_zip_read_info->file=s->file; + pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; + + pfile_in_zip_read_info->stream.total_out = 0; + + if (!Store) + { + pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; + pfile_in_zip_read_info->stream.zfree = (free_func)0; + pfile_in_zip_read_info->stream.opaque = (voidpf)0; + + err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); + if (err == Z_OK) + pfile_in_zip_read_info->stream_initialised=1; + /* windowBits is passed < 0 to tell that there is no zlib header. + * Note that in this case inflate *requires* an extra "dummy" byte + * after the compressed stream in order to complete decompression and + * return Z_STREAM_END. + * In unzip, i don't wait absolutely Z_STREAM_END because I known the + * size of both compressed and uncompressed data + */ + } + pfile_in_zip_read_info->rest_read_compressed = + s->cur_file_info.compressed_size ; + pfile_in_zip_read_info->rest_read_uncompressed = + s->cur_file_info.uncompressed_size ; + + pfile_in_zip_read_info->pos_in_zipfile = + s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + + iSizeVar; + + pfile_in_zip_read_info->stream.avail_in = (uInt)0; + + + s->pfile_in_zip_read = pfile_in_zip_read_info; + return UNZ_OK; +} + + +/* + Read bytes from the current file. + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ +extern int ZEXPORT unzReadCurrentFile (file, buf, len) + unzFile file; + voidp buf; + unsigned len; +{ + int err=UNZ_OK; + uInt iRead = 0; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if ((pfile_in_zip_read_info->read_buffer == NULL)) + return UNZ_END_OF_LIST_OF_FILE; + if (len==0) + return 0; + + pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; + + pfile_in_zip_read_info->stream.avail_out = (uInt)len; + + if (len>pfile_in_zip_read_info->rest_read_uncompressed) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_uncompressed; + + while (pfile_in_zip_read_info->stream.avail_out>0) + { + if ((pfile_in_zip_read_info->stream.avail_in==0) && + (pfile_in_zip_read_info->rest_read_compressed>0)) + { + uInt uReadThis = UNZ_BUFSIZE; + if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; + if (uReadThis == 0) + return UNZ_EOF; + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->pos_in_zipfile + + pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, + pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + pfile_in_zip_read_info->pos_in_zipfile += uReadThis; + + pfile_in_zip_read_info->rest_read_compressed-=uReadThis; + + pfile_in_zip_read_info->stream.next_in = + (Bytef*)pfile_in_zip_read_info->read_buffer; + pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; + } + + if (pfile_in_zip_read_info->compression_method==0) + { + uInt uDoCopy,i ; + if (pfile_in_zip_read_info->stream.avail_out < + pfile_in_zip_read_info->stream.avail_in) + uDoCopy = pfile_in_zip_read_info->stream.avail_out ; + else + uDoCopy = pfile_in_zip_read_info->stream.avail_in ; + + for (i=0;istream.next_out+i) = + *(pfile_in_zip_read_info->stream.next_in+i); + + pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, + pfile_in_zip_read_info->stream.next_out, + uDoCopy); + pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; + pfile_in_zip_read_info->stream.avail_in -= uDoCopy; + pfile_in_zip_read_info->stream.avail_out -= uDoCopy; + pfile_in_zip_read_info->stream.next_out += uDoCopy; + pfile_in_zip_read_info->stream.next_in += uDoCopy; + pfile_in_zip_read_info->stream.total_out += uDoCopy; + iRead += uDoCopy; + } + else + { + uLong uTotalOutBefore,uTotalOutAfter; + const Bytef *bufBefore; + uLong uOutThis; + int flush=Z_SYNC_FLUSH; + + uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; + bufBefore = pfile_in_zip_read_info->stream.next_out; + + /* + if ((pfile_in_zip_read_info->rest_read_uncompressed == + pfile_in_zip_read_info->stream.avail_out) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + flush = Z_FINISH; + */ + err=inflate(&pfile_in_zip_read_info->stream,flush); + + uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; + uOutThis = uTotalOutAfter-uTotalOutBefore; + + pfile_in_zip_read_info->crc32 = + crc32(pfile_in_zip_read_info->crc32,bufBefore, + (uInt)(uOutThis)); + + pfile_in_zip_read_info->rest_read_uncompressed -= + uOutThis; + + iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); + + if (err==Z_STREAM_END) + return (iRead==0) ? UNZ_EOF : iRead; + if (err!=Z_OK) + break; + } + } + + if (err==Z_OK) + return iRead; + return err; +} + + +/* + Give the current position in uncompressed data +*/ +extern z_off_t ZEXPORT unztell (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + return (z_off_t)pfile_in_zip_read_info->stream.total_out; +} + + +/* + return 1 if the end of file was reached, 0 elsewhere +*/ +extern int ZEXPORT unzeof (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + return 1; + else + return 0; +} + +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field that can be read + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ +extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) + unzFile file; + voidp buf; + unsigned len; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uInt read_now; + uLong size_to_read; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + size_to_read = (pfile_in_zip_read_info->size_local_extrafield - + pfile_in_zip_read_info->pos_local_extrafield); + + if (buf==NULL) + return (int)size_to_read; + + if (len>size_to_read) + read_now = (uInt)size_to_read; + else + read_now = (uInt)len ; + + if (read_now==0) + return 0; + + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->offset_local_extrafield + + pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + + return (int)read_now; +} + +/* + Close the file in zip opened with unzipOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ +extern int ZEXPORT unzCloseCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + { + if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) + err=UNZ_CRCERROR; + } + + + TRYFREE(pfile_in_zip_read_info->read_buffer); + pfile_in_zip_read_info->read_buffer = NULL; + if (pfile_in_zip_read_info->stream_initialised) + inflateEnd(&pfile_in_zip_read_info->stream); + + pfile_in_zip_read_info->stream_initialised = 0; + TRYFREE(pfile_in_zip_read_info); + + s->pfile_in_zip_read=NULL; + + return err; +} + + +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ +extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) + unzFile file; + char *szComment; + uLong uSizeBuf; +{ +/* int err=UNZ_OK; */ + unz_s* s; + uLong uReadThis ; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + uReadThis = uSizeBuf; + if (uReadThis>s->gi.size_comment) + uReadThis = s->gi.size_comment; + + if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (uReadThis>0) + { + *szComment='\0'; + if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) + return UNZ_ERRNO; + } + + if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) + *(szComment+s->gi.size_comment)='\0'; + return (int)uReadThis; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/unzip.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/unzip.h new file mode 100644 index 0000000000..2c4e784a31 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/dos/unzip.h @@ -0,0 +1,273 @@ +/* unzip.h -- IO for uncompress .zip files using zlib + Version 0.15 beta, Mar 19th, 1998, + + Copyright (C) 1998 Gilles Vollant + + This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + Encryption and multi volume ZipFile (span) are not supported. + Old compressions used by old PKZip 1.x are not supported + + THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE + CAN CHANGE IN FUTURE VERSION !! + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* for more info about .ZIP format, see + ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip */ + +#ifndef _unz_H +#define _unz_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unzFile__; +typedef unzFile__ *unzFile; +#else +typedef voidp unzFile; +#endif + + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (Z_ERRNO) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) + +/* tm_unz contain date/time info */ +typedef struct tm_unz_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_unz; + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info_s +{ + uLong number_entry; /* total number of entries in + the central dir on this disk */ + uLong size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + + +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_info_s +{ + uLong version; /* version made by 2 bytes */ + uLong version_needed; /* version needed to extract 2 bytes */ + uLong flag; /* general purpose bit flag 2 bytes */ + uLong compression_method; /* compression method 2 bytes */ + uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ + uLong crc; /* crc-32 4 bytes */ + uLong compressed_size; /* compressed size 4 bytes */ + uLong uncompressed_size; /* uncompressed size 4 bytes */ + uLong size_filename; /* filename length 2 bytes */ + uLong size_file_extra; /* extra field length 2 bytes */ + uLong size_file_comment; /* file comment length 2 bytes */ + + uLong disk_num_start; /* disk number start 2 bytes */ + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ + + tm_unz tmu_date; +} unz_file_info; + +extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, + const char* fileName2, + int iCaseSensitivity)); +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) +*/ + + +extern unzFile ZEXPORT unzOpen OF((const char *path)); +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer + "zlib/zlib111.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ + +extern int ZEXPORT unzClose OF((unzFile file)); +/* + Close a ZipFile opened with unzipOpen. + If there is files inside the .Zip opened with unzOpenCurrentFile (see later), + these files MUST be closed with unzipCloseCurrentFile before call unzipClose. + return UNZ_OK if there is no problem. */ + +extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, + unz_global_info *pglobal_info)); +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ + + +extern int ZEXPORT unzGetGlobalComment OF((unzFile file, + char *szComment, + uLong uSizeBuf)); +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ + + +/***************************************************************************/ +/* Unzip package allow you browse the directory of the zipfile */ + +extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ + +extern int ZEXPORT unzGoToNextFile OF((unzFile file)); +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ + +extern int ZEXPORT unzLocateFile OF((unzFile file, + const char *szFileName, + int iCaseSensitivity)); +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ + + +extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); +/* + Get Info about the current file + if pfile_info!=NULL, the *pfile_info structure will contain somes info about + the current file + if szFileName!=NULL, the filemane string will be copied in szFileName + (fileNameBufferSize is the size of the buffer) + if extraField!=NULL, the extra field information will be copied in extraField + (extraFieldBufferSize is the size of the buffer). + This is the Central-header version of the extra field + if szComment!=NULL, the comment string of the file will be copied in szComment + (commentBufferSize is the size of the buffer) +*/ + +/***************************************************************************/ +/* for reading the content of the current zipfile, you can open it, read data + from it, and close it (you can close it before reading all the file) + */ + +extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); +/* + Open for reading data the current file in the zipfile. + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); +/* + Close the file in zip opened with unzOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ + +extern int ZEXPORT unzReadCurrentFile OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read bytes from the current file (opened by unzOpenCurrentFile) + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ + +extern z_off_t ZEXPORT unztell OF((unzFile file)); +/* + Give the current position in uncompressed data +*/ + +extern int ZEXPORT unzeof OF((unzFile file)); +/* + return 1 if the end of file was reached, 0 elsewhere +*/ + +extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _unz_H */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/Makefile b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/Makefile similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/Makefile rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/Makefile diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/config.c new file mode 100644 index 0000000000..9b5e465076 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/config.c @@ -0,0 +1,48 @@ + +#include "osd.h" + +t_config config; + + +void set_config_defaults(void) +{ + int i; + + /* sound options */ + config.psg_preamp = 150; + config.fm_preamp = 100; + config.hq_fm = 1; + config.psgBoostNoise = 0; + config.filter = 1; + config.low_freq = 200; + config.high_freq = 8000; + config.lg = 1.0; + config.mg = 1.0; + config.hg = 1.0; + config.lp_range = 60; + config.rolloff = 0.995; + config.dac_bits = 14; + + /* system options */ + config.region_detect = 0; + config.force_dtack = 0; + config.addr_error = 1; + config.tmss = 0; + config.lock_on = 0;//TYPE_SK; + config.romtype = 0; + + /* display options */ + config.overscan = 1; + config.render = 0; + + /* controllers options */ + input.system[0] = SYSTEM_MD_GAMEPAD; + input.system[1] = SYSTEM_MD_GAMEPAD; + config.gun_cursor[0] = 1; + config.gun_cursor[1] = 1; + config.invert_mouse = 0; + for (i=0;i + +#include "SDL.h" +#include "SDL_thread.h" + +#include "shared.h" +#include "sms_ntsc.h" +#include "md_ntsc.h" + +#define SOUND_FREQUENCY 48000 +#define SOUND_SAMPLES_SIZE 2048 + +#define VIDEO_WIDTH 320 +#define VIDEO_HEIGHT 240 + +int joynum = 0; + +int log_error = 0; +int debug_on = 0; +int turbo_mode = 0; +int use_sound = 1; +int fullscreen = 0; /* SDL_FULLSCREEN */ + +/* sound */ + +struct { + char* current_pos; + char* buffer; + int current_emulated_samples; +} sdl_sound; + +static void sdl_sound_callback(void *userdata, Uint8 *stream, int len) +{ + if(sdl_sound.current_emulated_samples < len) { + memset(stream, 0, len); + } + else { + memcpy(stream, sdl_sound.buffer, len); + /* loop to compensate desync */ + do { + sdl_sound.current_emulated_samples -= len; + } while(sdl_sound.current_emulated_samples > 2 * len); + memcpy(sdl_sound.buffer, + sdl_sound.current_pos - sdl_sound.current_emulated_samples, + sdl_sound.current_emulated_samples); + sdl_sound.current_pos = sdl_sound.buffer + sdl_sound.current_emulated_samples; + } +} + +static int sdl_sound_init() +{ + int n; + SDL_AudioSpec as_desired, as_obtained; + + if(SDL_Init(SDL_INIT_AUDIO) < 0) { + MessageBox(NULL, "SDL Audio initialization failed", "Error", 0); + return 0; + } + + as_desired.freq = SOUND_FREQUENCY; + as_desired.format = AUDIO_S16LSB; + as_desired.channels = 2; + as_desired.samples = SOUND_SAMPLES_SIZE; + as_desired.callback = sdl_sound_callback; + + if(SDL_OpenAudio(&as_desired, &as_obtained) == -1) { + MessageBox(NULL, "SDL Audio open failed", "Error", 0); + return 0; + } + + if(as_desired.samples != as_obtained.samples) { + MessageBox(NULL, "SDL Audio wrong setup", "Error", 0); + return 0; + } + + sdl_sound.current_emulated_samples = 0; + n = SOUND_SAMPLES_SIZE * 2 * sizeof(short) * 11; + sdl_sound.buffer = (char*)malloc(n); + if(!sdl_sound.buffer) { + MessageBox(NULL, "Can't allocate audio buffer", "Error", 0); + return 0; + } + memset(sdl_sound.buffer, 0, n); + sdl_sound.current_pos = sdl_sound.buffer; + return 1; +} + +static void sdl_sound_update() +{ + int i; + short* p; + + int size = audio_update(); + + if (use_sound) + { + SDL_LockAudio(); + p = (short*)sdl_sound.current_pos; + for(i = 0; i < size; ++i) { + *p = snd.buffer[0][i]; + ++p; + *p = snd.buffer[1][i]; + ++p; + } + sdl_sound.current_pos = (char*)p; + sdl_sound.current_emulated_samples += size * 2 * sizeof(short); + SDL_UnlockAudio(); + } +} + +static void sdl_sound_close() +{ + SDL_PauseAudio(1); + SDL_CloseAudio(); + if (sdl_sound.buffer) + free(sdl_sound.buffer); +} + +/* video */ +md_ntsc_t *md_ntsc; +sms_ntsc_t *sms_ntsc; + +struct { + SDL_Surface* surf_screen; + SDL_Surface* surf_bitmap; + SDL_Rect srect; + SDL_Rect drect; + Uint32 frames_rendered; +} sdl_video; + +static int sdl_video_init() +{ + if(SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { + MessageBox(NULL, "SDL Video initialization failed", "Error", 0); + return 0; + } + sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); + sdl_video.surf_bitmap = SDL_CreateRGBSurface(SDL_SWSURFACE, 720, 576, 16, 0, 0, 0, 0); + sdl_video.frames_rendered = 0; + SDL_ShowCursor(0); + + return 1; +} + +static void sdl_video_update() +{ + system_frame(0); + + /* viewport size changed */ + if(bitmap.viewport.changed & 1) + { + bitmap.viewport.changed &= ~1; + + /* source bitmap */ + sdl_video.srect.w = bitmap.viewport.w+2*bitmap.viewport.x; + sdl_video.srect.h = bitmap.viewport.h+2*bitmap.viewport.y; + sdl_video.srect.x = 0; + sdl_video.srect.y = 0; + if (sdl_video.srect.w > VIDEO_WIDTH) + { + sdl_video.srect.x = (sdl_video.srect.w - VIDEO_WIDTH) / 2; + sdl_video.srect.w = VIDEO_WIDTH; + } + if (sdl_video.srect.h > VIDEO_HEIGHT) + { + sdl_video.srect.y = (sdl_video.srect.h - VIDEO_HEIGHT) / 2; + sdl_video.srect.h = VIDEO_HEIGHT; + } + + /* destination bitmap */ + sdl_video.drect.w = sdl_video.srect.w; + sdl_video.drect.h = sdl_video.srect.h; + sdl_video.drect.x = (VIDEO_WIDTH - sdl_video.drect.w) / 2; + sdl_video.drect.y = (VIDEO_HEIGHT - sdl_video.drect.h) / 2; + + /* clear destination surface */ + SDL_FillRect(sdl_video.surf_screen, 0, 0); + + /*if (config.render && (interlaced || config.ntsc)) rect.h *= 2; + if (config.ntsc) rect.w = (reg[12]&1) ? MD_NTSC_OUT_WIDTH(rect.w) : SMS_NTSC_OUT_WIDTH(rect.w); + if (config.ntsc) + { + sms_ntsc = (sms_ntsc_t *)malloc(sizeof(sms_ntsc_t)); + md_ntsc = (md_ntsc_t *)malloc(sizeof(md_ntsc_t)); + + switch (config.ntsc) + { + case 1: + sms_ntsc_init(sms_ntsc, &sms_ntsc_composite); + md_ntsc_init(md_ntsc, &md_ntsc_composite); + break; + case 2: + sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo); + md_ntsc_init(md_ntsc, &md_ntsc_svideo); + break; + case 3: + sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb); + md_ntsc_init(md_ntsc, &md_ntsc_rgb); + break; + } + } + else + { + if (sms_ntsc) + { + free(sms_ntsc); + sms_ntsc = NULL; + } + + if (md_ntsc) + { + free(md_ntsc); + md_ntsc = NULL; + } + } */ + } + + SDL_BlitSurface(sdl_video.surf_bitmap, &sdl_video.srect, sdl_video.surf_screen, &sdl_video.drect); + SDL_UpdateRect(sdl_video.surf_screen, 0, 0, 0, 0); + + ++sdl_video.frames_rendered; +} + +static void sdl_video_close() +{ + if (sdl_video.surf_bitmap) + SDL_FreeSurface(sdl_video.surf_bitmap); + if (sdl_video.surf_screen) + SDL_FreeSurface(sdl_video.surf_screen); +} + +/* Timer Sync */ + +struct { + SDL_sem* sem_sync; + unsigned ticks; +} sdl_sync; + +/* sync */ + +static Uint32 sdl_sync_timer_callback(Uint32 interval) +{ + SDL_SemPost(sdl_sync.sem_sync); + char caption[100]; + sdl_sync.ticks++; + if (sdl_sync.ticks == (vdp_pal ? 50 : 20)) + { + int fps = vdp_pal ? (sdl_video.frames_rendered / 3) : sdl_video.frames_rendered; + sdl_sync.ticks = sdl_video.frames_rendered = 0; + sprintf(caption,"%d fps - %s ", fps, rominfo.international); + SDL_WM_SetCaption(caption, NULL); + } + return interval; +} + +static int sdl_sync_init() +{ + if(SDL_InitSubSystem(SDL_INIT_TIMER|SDL_INIT_EVENTTHREAD) < 0) + { + MessageBox(NULL, "SDL Timer initialization failed", "Error", 0); + return 0; + } + + sdl_sync.sem_sync = SDL_CreateSemaphore(0); + sdl_sync.ticks = 0; + return 1; +} + +static void sdl_sync_close() +{ + if(sdl_sync.sem_sync) + SDL_DestroySemaphore(sdl_sync.sem_sync); +} + +static int sdl_control_update(SDLKey keystate) +{ + switch (keystate) + { + case SDLK_TAB: + { + system_init(); + system_reset(); + break; + } + + case SDLK_F2: + { + if (fullscreen) fullscreen = 0; + else fullscreen = SDL_FULLSCREEN; + sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); + break; + } + + case SDLK_F3: + { + config.render ^=1; + break; + } + + case SDLK_F4: + { + if (!turbo_mode) use_sound ^= 1; + break; + } + + case SDLK_F5: + { + log_error ^= 1; + break; + } + + case SDLK_F6: + { + if (!use_sound) turbo_mode ^=1; + break; + } + + case SDLK_F7: + { + FILE *f = fopen("game.gpz","r+b"); + if (f) + { + uint8 buf[STATE_SIZE]; + fread(&buf, STATE_SIZE, 1, f); + state_load(buf); + fclose(f); + } + break; + } + + case SDLK_F8: + { + FILE *f = fopen("game.gpz","w+b"); + if (f) + { + uint8 buf[STATE_SIZE]; + state_save(buf); + fwrite(&buf, STATE_SIZE, 1, f); + fclose(f); + } + break; + } + + case SDLK_F9: + { + vdp_pal ^= 1; + + /* save YM2612 context */ + unsigned char *temp = malloc(YM2612GetContextSize()); + if (temp) + memcpy(temp, YM2612GetContextPtr(), YM2612GetContextSize()); + + /* reinitialize all timings */ + audio_init(snd.sample_rate, snd.frame_rate); + system_init(); + + /* restore YM2612 context */ + if (temp) + { + YM2612Restore(temp); + free(temp); + } + + /* reinitialize VC max value */ + static const uint16 vc_table[4][2] = + { + /* NTSC, PAL */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0xEA , 0x102}, /* Mode 5 (224 lines) */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0x106, 0x10A} /* Mode 5 (240 lines) */ + }; + vc_max = vc_table[(reg[1] >> 2) & 3][vdp_pal]; + + /* reinitialize display area */ + bitmap.viewport.changed = 3; + break; + } + + case SDLK_F10: + { + gen_softreset(1); + gen_softreset(0); + break; + } + + case SDLK_F11: + { + config.overscan ^= 1; + bitmap.viewport.changed = 3; + break; + } + + case SDLK_F12: + { + joynum = (joynum + 1) % MAX_DEVICES; + while (input.dev[joynum] == NO_DEVICE) + { + joynum = (joynum + 1) % MAX_DEVICES; + } + break; + } + + case SDLK_ESCAPE: + { + return 0; + } + + default: + break; + } + + return 1; +} + +int sdl_input_update(void) +{ + uint8 *keystate = SDL_GetKeyState(NULL); + + /* reset input */ + input.pad[joynum] = 0; + + switch (input.dev[joynum]) + { + case DEVICE_LIGHTGUN: + { + /* get mouse (absolute values) */ + int x,y; + int state = SDL_GetMouseState(&x,&y); + + /* Calculate X Y axis values */ + input.analog[joynum][0] = (x * bitmap.viewport.w) / VIDEO_WIDTH; + input.analog[joynum][1] = (y * bitmap.viewport.h) / VIDEO_HEIGHT; + + /* Start,Left,Right,Middle buttons -> 0 0 0 0 START MIDDLE RIGHT LEFT */ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; + if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; + if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_A; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; + + break; + } + + case DEVICE_PADDLE: + { + /* get mouse (absolute values) */ + int x; + int state = SDL_GetMouseState(&x, NULL); + + /* Range is [0;256], 128 being middle position */ + input.analog[joynum][0] = x * 256 /VIDEO_WIDTH; + + /* Button I -> 0 0 0 0 0 0 0 I*/ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; + + break; + } + + case DEVICE_SPORTSPAD: + { + /* get mouse (relative values) */ + int x,y; + int state = SDL_GetRelativeMouseState(&x,&y); + + /* Range is [0;256] */ + input.analog[joynum][0] = (unsigned char)(-x & 0xFF); + input.analog[joynum][1] = (unsigned char)(-y & 0xFF); + + /* Buttons I & II -> 0 0 0 0 0 0 II I*/ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; + if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; + + break; + } + + case DEVICE_MOUSE: + { + /* get mouse (relative values) */ + int x,y; + int state = SDL_GetRelativeMouseState(&x,&y); + + /* Sega Mouse range is [-256;+256] */ + input.analog[joynum][0] = x * 2; + input.analog[joynum][1] = y * 2; + + /* Vertical movement is upsidedown */ + if (!config.invert_mouse) + input.analog[joynum][1] = 0 - input.analog[joynum][1]; + + /* Start,Left,Right,Middle buttons -> 0 0 0 0 START MIDDLE RIGHT LEFT */ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; + if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; + if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_A; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; + + break; + } + + case DEVICE_XE_A1P: + { + /* A,B,C,D,Select,START,E1,E2 buttons -> E1(?) E2(?) START SELECT(?) A B C D */ + if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_START; + if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_A; + if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_Y; + if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_B; + if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_X; + if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_MODE; + if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_Z; + + /* Left Analog Stick (bidirectional) */ + if(keystate[SDLK_UP]) input.analog[joynum][1]-=2; + else if(keystate[SDLK_DOWN]) input.analog[joynum][1]+=2; + else input.analog[joynum][1] = 128; + if(keystate[SDLK_LEFT]) input.analog[joynum][0]-=2; + else if(keystate[SDLK_RIGHT]) input.analog[joynum][0]+=2; + else input.analog[joynum][0] = 128; + + /* Right Analog Stick (unidirectional) */ + if(keystate[SDLK_KP8]) input.analog[joynum+1][0]-=2; + else if(keystate[SDLK_KP2]) input.analog[joynum+1][0]+=2; + else if(keystate[SDLK_KP4]) input.analog[joynum+1][0]-=2; + else if(keystate[SDLK_KP6]) input.analog[joynum+1][0]+=2; + else input.analog[joynum+1][0] = 128; + + /* Limiters */ + if (input.analog[joynum][0] > 0xFF) input.analog[joynum][0] = 0xFF; + else if (input.analog[joynum][0] < 0) input.analog[joynum][0] = 0; + if (input.analog[joynum][1] > 0xFF) input.analog[joynum][1] = 0xFF; + else if (input.analog[joynum][1] < 0) input.analog[joynum][1] = 0; + if (input.analog[joynum+1][0] > 0xFF) input.analog[joynum+1][0] = 0xFF; + else if (input.analog[joynum+1][0] < 0) input.analog[joynum+1][0] = 0; + if (input.analog[joynum+1][1] > 0xFF) input.analog[joynum+1][1] = 0xFF; + else if (input.analog[joynum+1][1] < 0) input.analog[joynum+1][1] = 0; + + break; + } + + case DEVICE_ACTIVATOR: + { + if(keystate[SDLK_g]) input.pad[joynum] |= INPUT_ACTIVATOR_7L; + if(keystate[SDLK_h]) input.pad[joynum] |= INPUT_ACTIVATOR_7U; + if(keystate[SDLK_j]) input.pad[joynum] |= INPUT_ACTIVATOR_8L; + if(keystate[SDLK_k]) input.pad[joynum] |= INPUT_ACTIVATOR_8U; + } + + default: + { + if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_A; + if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_B; + if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; + if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_X; + if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_Y; + if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_Z; + if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_MODE; + + if(keystate[SDLK_UP]) input.pad[joynum] |= INPUT_UP; + else + if(keystate[SDLK_DOWN]) input.pad[joynum] |= INPUT_DOWN; + if(keystate[SDLK_LEFT]) input.pad[joynum] |= INPUT_LEFT; + else + if(keystate[SDLK_RIGHT]) input.pad[joynum] |= INPUT_RIGHT; + + break; + } + } + + if (system_hw == SYSTEM_PICO) + { + /* get mouse (absolute values) */ + int x,y; + int state = SDL_GetMouseState(&x,&y); + + /* Calculate X Y axis values */ + input.analog[0][0] = 0x3c + (x * (0x17c-0x03c+1)) / VIDEO_WIDTH; + input.analog[0][1] = 0x1fc + (y * (0x2f7-0x1fc+1)) / VIDEO_HEIGHT; + + /* Map mouse buttons to player #1 inputs */ + if(state & SDL_BUTTON_MMASK) pico_current++; + if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_B; + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_A; + } + + free (keystate); + return 1; +} + + +int main (int argc, char **argv) +{ + int running = 1; + + /* Print help if no game specified */ + if(argc < 2) + { + char caption[256]; + sprintf(caption, "Genesis Plus\\SDL by Charles MacDonald\nWWW: http://cgfm2.emuviews.com\nusage: %s gamename\n", argv[0]); + MessageBox(NULL, caption, "Information", 0); + exit(1); + } + + /* set default config */ + error_init(); + set_config_defaults(); + + /* Load ROM file */ + cart.rom = malloc(10*1024*1024); + memset(cart.rom, 0, 10*1024*1024); + if(!load_rom(argv[1])) + { + char caption[256]; + sprintf(caption, "Error loading file `%s'.", argv[1]); + MessageBox(NULL, caption, "Error", 0); + exit(1); + } + + /* load BIOS */ + memset(bios_rom, 0, sizeof(bios_rom)); + FILE *f = fopen(OS_ROM, "rb"); + if (f!=NULL) + { + fread(&bios_rom, 0x800,1,f); + fclose(f); + int i; + for(i = 0; i < 0x800; i += 2) + { + uint8 temp = bios_rom[i]; + bios_rom[i] = bios_rom[i+1]; + bios_rom[i+1] = temp; + } + config.tmss |= 2; + } + + /* initialize SDL */ + if(SDL_Init(0) < 0) + { + char caption[256]; + sprintf(caption, "SDL initialization failed"); + MessageBox(NULL, caption, "Error", 0); + exit(1); + } + sdl_video_init(); + if (use_sound) sdl_sound_init(); + sdl_sync_init(); + + /* initialize Genesis virtual system */ + SDL_LockSurface(sdl_video.surf_bitmap); + memset(&bitmap, 0, sizeof(t_bitmap)); + bitmap.width = 720; + bitmap.height = 576; + bitmap.depth = 16; + bitmap.granularity = 2; + bitmap.pitch = (bitmap.width * bitmap.granularity); + bitmap.data = sdl_video.surf_bitmap->pixels; + SDL_UnlockSurface(sdl_video.surf_bitmap); + bitmap.viewport.changed = 3; + + /* initialize emulation */ + audio_init(SOUND_FREQUENCY, vdp_pal ? 50.0 : 60.0); + system_init(); + + /* load SRAM */ + f = fopen("./game.srm", "rb"); + if (f!=NULL) + { + fread(sram.sram,0x10000,1, f); + fclose(f); + } + + /* reset emulation */ + system_reset(); + + if(use_sound) SDL_PauseAudio(0); + + /* 3 frames = 50 ms (60hz) or 60 ms (50hz) */ + if(sdl_sync.sem_sync) + SDL_SetTimer(vdp_pal ? 60 : 50, sdl_sync_timer_callback); + + /* emulation loop */ + while(running) + { + SDL_Event event; + if (SDL_PollEvent(&event)) + { + switch(event.type) + { + case SDL_QUIT: + running = 0; + break; + + case SDL_KEYDOWN: + running = sdl_control_update(event.key.keysym.sym); + break; + } + } + + sdl_video_update(); + sdl_sound_update(); + + if(!turbo_mode && sdl_sync.sem_sync && sdl_video.frames_rendered % 3 == 0) + { + SDL_SemWait(sdl_sync.sem_sync); + } + + } + + /* save SRAM */ + f = fopen("./game.srm", "wb"); + if (f!=NULL) + { + fwrite(sram.sram,0x10000,1, f); + fclose(f); + } + + system_shutdown(); + audio_shutdown(); + error_shutdown(); + free(cart.rom); + + sdl_video_close(); + sdl_sound_close(); + sdl_sync_close(); + SDL_Quit(); + + return 0; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/main.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/main.h new file mode 100644 index 0000000000..1f2ebe1715 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/main.h @@ -0,0 +1,10 @@ + +#ifndef _MAIN_H_ +#define _MAIN_H_ + +#define MAX_INPUTS 8 + +extern int debug_on; +extern int log_error; + +#endif /* _MAIN_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/md.ico b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/md.ico similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/md.ico rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/md.ico diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/osd.h new file mode 100644 index 0000000000..6bd8db22a0 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/osd.h @@ -0,0 +1,29 @@ + +#ifndef _OSD_H_ +#define _OSD_H_ + +#include +#include +#include +#include +#include + +#include +#include + +#include "shared.h" +#include "main.h" +#include "config.h" +#include "error.h" +#include "unzip.h" +#include "fileio.h" + +#define osd_input_Update sdl_input_update + +#define GG_ROM "./ggenie.bin" +#define AR_ROM "./areplay.bin" +#define OS_ROM "./bios.bin" +#define SK_ROM "./sk.bin" +#define SK_UPMEM "./sk2chip.bin" + +#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/readme-sdl.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/readme-sdl.txt new file mode 100644 index 0000000000..b58f6d8d19 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/readme-sdl.txt @@ -0,0 +1,5 @@ +Compile with MinGW. +You will also need to install the SDL library (http://www.libsdl.org/). +Zlib is required for zipped rom support. + +Please distribute required dlls with the executable. \ No newline at end of file diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/unzip.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/unzip.c new file mode 100644 index 0000000000..1bbb143daa --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/unzip.c @@ -0,0 +1,1294 @@ +/* unzip.c -- IO on .zip files using zlib + Version 0.15 beta, Mar 19th, 1998, + + Read unzip.h for more info +*/ + + +#include +#include +#include +#include "zlib.h" +#include "unzip.h" + +#ifdef STDC +# include +# include +# include +#endif +#ifdef NO_ERRNO_H + extern int errno; +#else + #include +#endif + + +#ifndef local + #define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + + + +#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ + !defined(CASESENSITIVITYDEFAULT_NO) +#define CASESENSITIVITYDEFAULT_NO +#endif + + +#ifndef UNZ_BUFSIZE +#define UNZ_BUFSIZE (16384) +#endif + +#ifndef UNZ_MAXFILENAMEINZIP +#define UNZ_MAXFILENAMEINZIP (256) +#endif + +#ifndef ALLOC +# define ALLOC(size) (malloc(size)) +#endif +#ifndef TRYFREE +# define TRYFREE(p) {if (p) free(p);} +#endif + +#define SIZECENTRALDIRITEM (0x2e) +#define SIZEZIPLOCALHEADER (0x1e) + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +const char unz_copyright[] = + " unzip 0.15 Copyright 1998 Gilles Vollant "; + +/* unz_file_info_interntal contain internal info about a file in zipfile*/ +typedef struct unz_file_info_internal_s +{ + uLong offset_curfile;/* relative offset of local header 4 bytes */ +} unz_file_info_internal; + + +/* file_in_zip_read_info_s contain internal information about a file in zipfile, + when reading and decompress it */ +typedef struct +{ + char *read_buffer; /* internal buffer for compressed data */ + z_stream stream; /* zLib stream structure for inflate */ + + uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ + uLong stream_initialised; /* flag set if stream structure is initialised*/ + + uLong offset_local_extrafield;/* offset of the local extra field */ + uInt size_local_extrafield;/* size of the local extra field */ + uLong pos_local_extrafield; /* position in the local extra field in read*/ + + uLong crc32; /* crc32 of all data uncompressed */ + uLong crc32_wait; /* crc32 we must obtain after decompress all */ + uLong rest_read_compressed; /* number of byte to be decompressed */ + uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ + FILE* file; /* io structore of the zipfile */ + uLong compression_method; /* compression method (0==store) */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ +} file_in_zip_read_info_s; + + +/* unz_s contain internal information about the zipfile +*/ +typedef struct +{ + FILE* file; /* io structore of the zipfile */ + unz_global_info gi; /* public global information */ + uLong byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ + uLong num_file; /* number of the current file in the zipfile*/ + uLong pos_in_central_dir; /* pos of the current file in the central dir*/ + uLong current_file_ok; /* flag about the usability of the current file*/ + uLong central_pos; /* position of the beginning of the central dir*/ + + uLong size_central_dir; /* size of the central directory */ + uLong offset_central_dir; /* offset of start of central directory with + respect to the starting disk number */ + + unz_file_info cur_file_info; /* public info about the current file in zip*/ + unz_file_info_internal cur_file_info_internal; /* private info about it*/ + file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current + file if we are decompressing it */ +} unz_s; + + +/* =========================================================================== + Read a byte from a gz_stream; update next_in and avail_in. Return EOF + for end of file. + IN assertion: the stream s has been sucessfully opened for reading. +*/ + + +local int unzlocal_getByte(fin,pi) + FILE *fin; + int *pi; +{ + unsigned char c; + int err = fread(&c, 1, 1, fin); + if (err==1) + { + *pi = (int)c; + return UNZ_OK; + } + else + { + if (ferror(fin)) + return UNZ_ERRNO; + else + return UNZ_EOF; + } +} + + +/* =========================================================================== + Reads a long in LSB order from the given gz_stream. Sets +*/ +local int unzlocal_getShort (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i = 0; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + +local int unzlocal_getLong (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i = 0; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<16; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<24; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + + +/* My own strcmpi / strcasecmp */ +local int strcmpcasenosensitive_internal (fileName1,fileName2) + const char* fileName1; + const char* fileName2; +{ + for (;;) + { + char c1=*(fileName1++); + char c2=*(fileName2++); + if ((c1>='a') && (c1<='z')) + c1 -= 0x20; + if ((c2>='a') && (c2<='z')) + c2 -= 0x20; + if (c1=='\0') + return ((c2=='\0') ? 0 : -1); + if (c2=='\0') + return 1; + if (c1c2) + return 1; + } +} + + +#ifdef CASESENSITIVITYDEFAULT_NO +#define CASESENSITIVITYDEFAULTVALUE 2 +#else +#define CASESENSITIVITYDEFAULTVALUE 1 +#endif + +#ifndef STRCMPCASENOSENTIVEFUNCTION +#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal +#endif + +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) + +*/ +extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) + const char* fileName1; + const char* fileName2; + int iCaseSensitivity; +{ + if (iCaseSensitivity==0) + iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; + + if (iCaseSensitivity==1) + return strcmp(fileName1,fileName2); + + return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); +} + +#define BUFREADCOMMENT (0x400) + +/* + Locate the Central directory of a zipfile (at the end, just before + the global comment) +*/ +local uLong unzlocal_SearchCentralDir(fin) + FILE *fin; +{ + unsigned char* buf; + uLong uSizeFile; + uLong uBackRead; + uLong uMaxBack=0xffff; /* maximum size of global comment */ + uLong uPosFound=0; + + if (fseek(fin,0,SEEK_END) != 0) + return 0; + + + uSizeFile = ftell( fin ); + + if (uMaxBack>uSizeFile) + uMaxBack = uSizeFile; + + buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); + if (buf==NULL) + return 0; + + uBackRead = 4; + while (uBackReaduMaxBack) + uBackRead = uMaxBack; + else + uBackRead+=BUFREADCOMMENT; + uReadPos = uSizeFile-uBackRead ; + + uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? + (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); + if (fseek(fin,uReadPos,SEEK_SET)!=0) + break; + + if (fread(buf,(uInt)uReadSize,1,fin)!=1) + break; + + for (i=(int)uReadSize-3; (i--)>0;) + if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && + ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) + { + uPosFound = uReadPos+i; + break; + } + + if (uPosFound!=0) + break; + } + TRYFREE(buf); + return uPosFound; +} + +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer + "zlib/zlib109.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ +extern unzFile ZEXPORT unzOpen (path) + const char *path; +{ + unz_s us; + unz_s *s; + uLong central_pos,uL; + FILE * fin ; + + uLong number_disk; /* number of the current dist, used for + spaning ZIP, unsupported, always 0*/ + uLong number_disk_with_CD; /* number the the disk with central dir, used + for spaning ZIP, unsupported, always 0*/ + uLong number_entry_CD; /* total number of entries in + the central dir + (same than number_entry on nospan) */ + + int err=UNZ_OK; + + if (unz_copyright[0]!=' ') + return NULL; + + fin=fopen(path,"rb"); + if (fin==NULL) + return NULL; + + central_pos = unzlocal_SearchCentralDir(fin); + if (central_pos==0) + err=UNZ_ERRNO; + + if (fseek(fin,central_pos,SEEK_SET)!=0) + err=UNZ_ERRNO; + + /* the signature, already checked */ + if (unzlocal_getLong(fin,&uL)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of this disk */ + if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of the disk with the start of the central directory */ + if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir on this disk */ + if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir */ + if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((number_entry_CD!=us.gi.number_entry) || + (number_disk_with_CD!=0) || + (number_disk!=0)) + err=UNZ_BADZIPFILE; + + /* size of the central directory */ + if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* offset of start of central directory with respect to the + starting disk number */ + if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* zipfile comment length */ + if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((central_pospfile_in_zip_read!=NULL) + unzCloseCurrentFile(file); + + fclose(s->file); + TRYFREE(s); + return UNZ_OK; +} + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ +extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) + unzFile file; + unz_global_info *pglobal_info; +{ + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + *pglobal_info=s->gi; + return UNZ_OK; +} + + +/* + Translate date/time from Dos format to tm_unz (readable more easilty) +*/ +local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) + uLong ulDosDate; + tm_unz* ptm; +{ + uLong uDate; + uDate = (uLong)(ulDosDate>>16); + ptm->tm_mday = (uInt)(uDate&0x1f) ; + ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; + ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; + + ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); + ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; + ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; +} + +/* + Get Info about the current file in the zipfile, with internal only info +*/ +local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, + unz_file_info *pfile_info, + unz_file_info_internal + *pfile_info_internal, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); + +local int unzlocal_GetCurrentFileInfoInternal (file, + pfile_info, + pfile_info_internal, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + unz_file_info_internal *pfile_info_internal; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + unz_s* s; + unz_file_info file_info; + unz_file_info_internal file_info_internal; + int err=UNZ_OK; + uLong uMagic; + long lSeek=0; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) + err=UNZ_ERRNO; + + + /* we check the magic */ + if (err==UNZ_OK) + { + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x02014b50) + err=UNZ_BADZIPFILE; + } + + if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) + err=UNZ_ERRNO; + + unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); + + if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) + err=UNZ_ERRNO; + + lSeek+=file_info.size_filename; + if ((err==UNZ_OK) && (szFileName!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_filename0) && (fileNameBufferSize>0)) + if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek -= uSizeRead; + } + + if ((err==UNZ_OK) && (extraField!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + + if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) + if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek += file_info.size_file_extra - uSizeRead; + } + else + lSeek+=file_info.size_file_extra; + + if ((err==UNZ_OK) && (szComment!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + + if ((file_info.size_file_comment>0) && (commentBufferSize>0)) + if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek+=file_info.size_file_comment - uSizeRead; + } + else + lSeek+=file_info.size_file_comment; + + if ((err==UNZ_OK) && (pfile_info!=NULL)) + *pfile_info=file_info; + + if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) + *pfile_info_internal=file_info_internal; + + return err; +} + + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. +*/ +extern int ZEXPORT unzGetCurrentFileInfo (file, + pfile_info, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, + szFileName,fileNameBufferSize, + extraField,extraFieldBufferSize, + szComment,commentBufferSize); +} + +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ +extern int ZEXPORT unzGoToFirstFile (file) + unzFile file; +{ + int err=UNZ_OK; + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + s->pos_in_central_dir=s->offset_central_dir; + s->num_file=0; + err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ +extern int ZEXPORT unzGoToNextFile (file) + unzFile file; +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + if (s->num_file+1==s->gi.number_entry) + return UNZ_END_OF_LIST_OF_FILE; + + s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; + s->num_file++; + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzipStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ +extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) + unzFile file; + const char *szFileName; + int iCaseSensitivity; +{ + unz_s* s; + int err; + + uLong num_fileSaved; + uLong pos_in_central_dirSaved; + + if (file==NULL) + return UNZ_PARAMERROR; + + if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) + return UNZ_PARAMERROR; + + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + num_fileSaved = s->num_file; + pos_in_central_dirSaved = s->pos_in_central_dir; + + err = unzGoToFirstFile(file); + + while (err == UNZ_OK) + { + char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; + unzGetCurrentFileInfo(file,NULL, + szCurrentFileName,sizeof(szCurrentFileName)-1, + NULL,0,NULL,0); + if (unzStringFileNameCompare(szCurrentFileName, + szFileName,iCaseSensitivity)==0) + return UNZ_OK; + err = unzGoToNextFile(file); + } + + s->num_file = num_fileSaved ; + s->pos_in_central_dir = pos_in_central_dirSaved ; + return err; +} + + +/* + Read the local header of the current zipfile + Check the coherency of the local header and info in the end of central + directory about this file + store in *piSizeVar the size of extra info in local header + (filename and size of extra field data) +*/ +local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, + poffset_local_extrafield, + psize_local_extrafield) + unz_s* s; + uInt* piSizeVar; + uLong *poffset_local_extrafield; + uInt *psize_local_extrafield; +{ + uLong uMagic,uData,uFlags; + uLong size_filename; + uLong size_extra_field; + int err=UNZ_OK; + + *piSizeVar = 0; + *poffset_local_extrafield = 0; + *psize_local_extrafield = 0; + + if (fseek(s->file,s->cur_file_info_internal.offset_curfile + + s->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + + + if (err==UNZ_OK) + { + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x04034b50) + err=UNZ_BADZIPFILE; + } + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; +/* + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) + err=UNZ_BADZIPFILE; +*/ + if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) + err=UNZ_BADZIPFILE; + + if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + + if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) + err=UNZ_BADZIPFILE; + + *piSizeVar += (uInt)size_filename; + + if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) + err=UNZ_ERRNO; + *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + + SIZEZIPLOCALHEADER + size_filename; + *psize_local_extrafield = (uInt)size_extra_field; + + *piSizeVar += (uInt)size_extra_field; + + return err; +} + +/* + Open for reading data the current file in the zipfile. + If there is no error and the file is opened, the return value is UNZ_OK. +*/ +extern int ZEXPORT unzOpenCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + int Store; + uInt iSizeVar; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uLong offset_local_extrafield; /* offset of the local extra field */ + uInt size_local_extrafield; /* size of the local extra field */ + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_PARAMERROR; + + if (s->pfile_in_zip_read != NULL) + unzCloseCurrentFile(file); + + if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, + &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) + return UNZ_BADZIPFILE; + + pfile_in_zip_read_info = (file_in_zip_read_info_s*) + ALLOC(sizeof(file_in_zip_read_info_s)); + if (pfile_in_zip_read_info==NULL) + return UNZ_INTERNALERROR; + + pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); + pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; + pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; + pfile_in_zip_read_info->pos_local_extrafield=0; + + if (pfile_in_zip_read_info->read_buffer==NULL) + { + TRYFREE(pfile_in_zip_read_info); + return UNZ_INTERNALERROR; + } + + pfile_in_zip_read_info->stream_initialised=0; + + if ((s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + Store = s->cur_file_info.compression_method==0; + + pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; + pfile_in_zip_read_info->crc32=0; + pfile_in_zip_read_info->compression_method = + s->cur_file_info.compression_method; + pfile_in_zip_read_info->file=s->file; + pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; + + pfile_in_zip_read_info->stream.total_out = 0; + + if (!Store) + { + pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; + pfile_in_zip_read_info->stream.zfree = (free_func)0; + pfile_in_zip_read_info->stream.opaque = (voidpf)0; + + err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); + if (err == Z_OK) + pfile_in_zip_read_info->stream_initialised=1; + /* windowBits is passed < 0 to tell that there is no zlib header. + * Note that in this case inflate *requires* an extra "dummy" byte + * after the compressed stream in order to complete decompression and + * return Z_STREAM_END. + * In unzip, i don't wait absolutely Z_STREAM_END because I known the + * size of both compressed and uncompressed data + */ + } + pfile_in_zip_read_info->rest_read_compressed = + s->cur_file_info.compressed_size ; + pfile_in_zip_read_info->rest_read_uncompressed = + s->cur_file_info.uncompressed_size ; + + pfile_in_zip_read_info->pos_in_zipfile = + s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + + iSizeVar; + + pfile_in_zip_read_info->stream.avail_in = (uInt)0; + + + s->pfile_in_zip_read = pfile_in_zip_read_info; + return UNZ_OK; +} + + +/* + Read bytes from the current file. + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ +extern int ZEXPORT unzReadCurrentFile (file, buf, len) + unzFile file; + voidp buf; + unsigned len; +{ + int err=UNZ_OK; + uInt iRead = 0; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if ((pfile_in_zip_read_info->read_buffer == NULL)) + return UNZ_END_OF_LIST_OF_FILE; + if (len==0) + return 0; + + pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; + + pfile_in_zip_read_info->stream.avail_out = (uInt)len; + + if (len>pfile_in_zip_read_info->rest_read_uncompressed) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_uncompressed; + + while (pfile_in_zip_read_info->stream.avail_out>0) + { + if ((pfile_in_zip_read_info->stream.avail_in==0) && + (pfile_in_zip_read_info->rest_read_compressed>0)) + { + uInt uReadThis = UNZ_BUFSIZE; + if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; + if (uReadThis == 0) + return UNZ_EOF; + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->pos_in_zipfile + + pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, + pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + pfile_in_zip_read_info->pos_in_zipfile += uReadThis; + + pfile_in_zip_read_info->rest_read_compressed-=uReadThis; + + pfile_in_zip_read_info->stream.next_in = + (Bytef*)pfile_in_zip_read_info->read_buffer; + pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; + } + + if (pfile_in_zip_read_info->compression_method==0) + { + uInt uDoCopy,i ; + if (pfile_in_zip_read_info->stream.avail_out < + pfile_in_zip_read_info->stream.avail_in) + uDoCopy = pfile_in_zip_read_info->stream.avail_out ; + else + uDoCopy = pfile_in_zip_read_info->stream.avail_in ; + + for (i=0;istream.next_out+i) = + *(pfile_in_zip_read_info->stream.next_in+i); + + pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, + pfile_in_zip_read_info->stream.next_out, + uDoCopy); + pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; + pfile_in_zip_read_info->stream.avail_in -= uDoCopy; + pfile_in_zip_read_info->stream.avail_out -= uDoCopy; + pfile_in_zip_read_info->stream.next_out += uDoCopy; + pfile_in_zip_read_info->stream.next_in += uDoCopy; + pfile_in_zip_read_info->stream.total_out += uDoCopy; + iRead += uDoCopy; + } + else + { + uLong uTotalOutBefore,uTotalOutAfter; + const Bytef *bufBefore; + uLong uOutThis; + int flush=Z_SYNC_FLUSH; + + uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; + bufBefore = pfile_in_zip_read_info->stream.next_out; + + /* + if ((pfile_in_zip_read_info->rest_read_uncompressed == + pfile_in_zip_read_info->stream.avail_out) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + flush = Z_FINISH; + */ + err=inflate(&pfile_in_zip_read_info->stream,flush); + + uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; + uOutThis = uTotalOutAfter-uTotalOutBefore; + + pfile_in_zip_read_info->crc32 = + crc32(pfile_in_zip_read_info->crc32,bufBefore, + (uInt)(uOutThis)); + + pfile_in_zip_read_info->rest_read_uncompressed -= + uOutThis; + + iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); + + if (err==Z_STREAM_END) + return (iRead==0) ? UNZ_EOF : iRead; + if (err!=Z_OK) + break; + } + } + + if (err==Z_OK) + return iRead; + return err; +} + + +/* + Give the current position in uncompressed data +*/ +extern z_off_t ZEXPORT unztell (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + return (z_off_t)pfile_in_zip_read_info->stream.total_out; +} + + +/* + return 1 if the end of file was reached, 0 elsewhere +*/ +extern int ZEXPORT unzeof (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + return 1; + else + return 0; +} + +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field that can be read + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ +extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) + unzFile file; + voidp buf; + unsigned len; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uInt read_now; + uLong size_to_read; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + size_to_read = (pfile_in_zip_read_info->size_local_extrafield - + pfile_in_zip_read_info->pos_local_extrafield); + + if (buf==NULL) + return (int)size_to_read; + + if (len>size_to_read) + read_now = (uInt)size_to_read; + else + read_now = (uInt)len ; + + if (read_now==0) + return 0; + + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->offset_local_extrafield + + pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + + return (int)read_now; +} + +/* + Close the file in zip opened with unzipOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ +extern int ZEXPORT unzCloseCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + { + if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) + err=UNZ_CRCERROR; + } + + + TRYFREE(pfile_in_zip_read_info->read_buffer); + pfile_in_zip_read_info->read_buffer = NULL; + if (pfile_in_zip_read_info->stream_initialised) + inflateEnd(&pfile_in_zip_read_info->stream); + + pfile_in_zip_read_info->stream_initialised = 0; + TRYFREE(pfile_in_zip_read_info); + + s->pfile_in_zip_read=NULL; + + return err; +} + + +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ +extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) + unzFile file; + char *szComment; + uLong uSizeBuf; +{ +/* int err=UNZ_OK; */ + unz_s* s; + uLong uReadThis ; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + uReadThis = uSizeBuf; + if (uReadThis>s->gi.size_comment) + uReadThis = s->gi.size_comment; + + if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (uReadThis>0) + { + *szComment='\0'; + if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) + return UNZ_ERRNO; + } + + if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) + *(szComment+s->gi.size_comment)='\0'; + return (int)uReadThis; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/unzip.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/unzip.h new file mode 100644 index 0000000000..2c4e784a31 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/unused/win/unzip.h @@ -0,0 +1,273 @@ +/* unzip.h -- IO for uncompress .zip files using zlib + Version 0.15 beta, Mar 19th, 1998, + + Copyright (C) 1998 Gilles Vollant + + This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + Encryption and multi volume ZipFile (span) are not supported. + Old compressions used by old PKZip 1.x are not supported + + THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE + CAN CHANGE IN FUTURE VERSION !! + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* for more info about .ZIP format, see + ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip */ + +#ifndef _unz_H +#define _unz_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unzFile__; +typedef unzFile__ *unzFile; +#else +typedef voidp unzFile; +#endif + + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (Z_ERRNO) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) + +/* tm_unz contain date/time info */ +typedef struct tm_unz_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_unz; + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info_s +{ + uLong number_entry; /* total number of entries in + the central dir on this disk */ + uLong size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + + +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_info_s +{ + uLong version; /* version made by 2 bytes */ + uLong version_needed; /* version needed to extract 2 bytes */ + uLong flag; /* general purpose bit flag 2 bytes */ + uLong compression_method; /* compression method 2 bytes */ + uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ + uLong crc; /* crc-32 4 bytes */ + uLong compressed_size; /* compressed size 4 bytes */ + uLong uncompressed_size; /* uncompressed size 4 bytes */ + uLong size_filename; /* filename length 2 bytes */ + uLong size_file_extra; /* extra field length 2 bytes */ + uLong size_file_comment; /* file comment length 2 bytes */ + + uLong disk_num_start; /* disk number start 2 bytes */ + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ + + tm_unz tmu_date; +} unz_file_info; + +extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, + const char* fileName2, + int iCaseSensitivity)); +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) +*/ + + +extern unzFile ZEXPORT unzOpen OF((const char *path)); +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer + "zlib/zlib111.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ + +extern int ZEXPORT unzClose OF((unzFile file)); +/* + Close a ZipFile opened with unzipOpen. + If there is files inside the .Zip opened with unzOpenCurrentFile (see later), + these files MUST be closed with unzipCloseCurrentFile before call unzipClose. + return UNZ_OK if there is no problem. */ + +extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, + unz_global_info *pglobal_info)); +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ + + +extern int ZEXPORT unzGetGlobalComment OF((unzFile file, + char *szComment, + uLong uSizeBuf)); +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ + + +/***************************************************************************/ +/* Unzip package allow you browse the directory of the zipfile */ + +extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ + +extern int ZEXPORT unzGoToNextFile OF((unzFile file)); +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ + +extern int ZEXPORT unzLocateFile OF((unzFile file, + const char *szFileName, + int iCaseSensitivity)); +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ + + +extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); +/* + Get Info about the current file + if pfile_info!=NULL, the *pfile_info structure will contain somes info about + the current file + if szFileName!=NULL, the filemane string will be copied in szFileName + (fileNameBufferSize is the size of the buffer) + if extraField!=NULL, the extra field information will be copied in extraField + (extraFieldBufferSize is the size of the buffer). + This is the Central-header version of the extra field + if szComment!=NULL, the comment string of the file will be copied in szComment + (commentBufferSize is the size of the buffer) +*/ + +/***************************************************************************/ +/* for reading the content of the current zipfile, you can open it, read data + from it, and close it (you can close it before reading all the file) + */ + +extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); +/* + Open for reading data the current file in the zipfile. + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); +/* + Close the file in zip opened with unzOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ + +extern int ZEXPORT unzReadCurrentFile OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read bytes from the current file (opened by unzOpenCurrentFile) + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ + +extern z_off_t ZEXPORT unztell OF((unzFile file)); +/* + Give the current position in uncompressed data +*/ + +extern int ZEXPORT unzeof OF((unzFile file)); +/* + return 1 if the end of file was reached, 0 elsewhere +*/ + +extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _unz_H */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_ctrl.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_ctrl.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_ctrl.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_ctrl.c index cc400639da..975f582de8 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_ctrl.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_ctrl.c @@ -1,3235 +1,3235 @@ -/*************************************************************************************** - * Genesis Plus - * Video Display Processor (68k & Z80 CPU interface) - * - * Support for SG-1000 (TMS99xx & 315-5066), Master System (315-5124 & 315-5246), Game Gear & Mega Drive VDP - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "hvc.h" - -/* Mark a pattern as modified */ -#define MARK_BG_DIRTY(addr) \ -{ \ - name = (addr >> 5) & 0x7FF; \ - if (bg_name_dirty[name] == 0) \ - { \ - bg_name_list[bg_list_index++] = name; \ - } \ - bg_name_dirty[name] |= (1 << ((addr >> 2) & 7)); \ -} - -/* VDP context */ -uint8 ALIGNED_(4) sat[0x400]; /* Internal copy of sprite attribute table */ -uint8 ALIGNED_(4) vram[0x10000]; /* Video RAM (64K x 8-bit) */ -uint8 ALIGNED_(4) cram[0x80]; /* On-chip color RAM (64 x 9-bit) */ -uint8 ALIGNED_(4) vsram[0x80]; /* On-chip vertical scroll RAM (40 x 11-bit) */ -uint8 reg[0x20]; /* Internal VDP registers (23 x 8-bit) */ -uint8 hint_pending; /* 0= Line interrupt is pending */ -uint8 vint_pending; /* 1= Frame interrupt is pending */ -uint16 status; /* VDP status flags */ -uint32 dma_length; /* DMA remaining length */ - -/* Global variables */ -uint16 ntab; /* Name table A base address */ -uint16 ntbb; /* Name table B base address */ -uint16 ntwb; /* Name table W base address */ -uint16 satb; /* Sprite attribute table base address */ -uint16 hscb; /* Horizontal scroll table base address */ -uint8 bg_name_dirty[0x800]; /* 1= This pattern is dirty */ -uint16 bg_name_list[0x800]; /* List of modified pattern indices */ -uint16 bg_list_index; /* # of modified patterns in list */ -uint8 hscroll_mask; /* Horizontal Scrolling line mask */ -uint8 playfield_shift; /* Width of planes A, B (in bits) */ -uint8 playfield_col_mask; /* Playfield column mask */ -uint16 playfield_row_mask; /* Playfield row mask */ -uint16 vscroll; /* Latched vertical scroll value */ -uint8 odd_frame; /* 1: odd field, 0: even field */ -uint8 im2_flag; /* 1= Interlace mode 2 is being used */ -uint8 interlaced; /* 1: Interlaced mode 1 or 2 */ -uint8 vdp_pal; /* 1: PAL , 0: NTSC (default) */ -uint8 h_counter; /* Horizontal counter */ -uint16 v_counter; /* Vertical counter */ -uint16 vc_max; /* Vertical counter overflow value */ -uint16 lines_per_frame; /* PAL: 313 lines, NTSC: 262 lines */ -uint16 max_sprite_pixels; /* Max. sprites pixels per line (parsing & rendering) */ -int32 fifo_write_cnt; /* VDP FIFO write count */ -uint32 fifo_slots; /* VDP FIFO access slot count */ -uint32 hvc_latch; /* latched HV counter */ -const uint8 *hctab; /* pointer to H Counter table */ - -/* Function pointers */ -void (*vdp_68k_data_w)(unsigned int data); -void (*vdp_z80_data_w)(unsigned int data); -unsigned int (*vdp_68k_data_r)(void); -unsigned int (*vdp_z80_data_r)(void); - -/* Function prototypes */ -static void vdp_68k_data_w_m4(unsigned int data); -static void vdp_68k_data_w_m5(unsigned int data); -static unsigned int vdp_68k_data_r_m4(void); -static unsigned int vdp_68k_data_r_m5(void); -static void vdp_z80_data_w_m4(unsigned int data); -static void vdp_z80_data_w_m5(unsigned int data); -static unsigned int vdp_z80_data_r_m4(void); -static unsigned int vdp_z80_data_r_m5(void); -static void vdp_z80_data_w_ms(unsigned int data); -static void vdp_z80_data_w_gg(unsigned int data); -static void vdp_z80_data_w_sg(unsigned int data); -static void vdp_bus_w(unsigned int data); -static void vdp_fifo_update(unsigned int cycles); -static void vdp_reg_w(unsigned int r, unsigned int d, unsigned int cycles); -static void vdp_dma_68k_ext(unsigned int length); -static void vdp_dma_68k_ram(unsigned int length); -static void vdp_dma_68k_io(unsigned int length); -static void vdp_dma_copy(unsigned int length); -static void vdp_dma_fill(unsigned int length); - -/* Tables that define the playfield layout */ -static const uint8 hscroll_mask_table[] = { 0x00, 0x07, 0xF8, 0xFF }; -static const uint8 shift_table[] = { 6, 7, 0, 8 }; -static const uint8 col_mask_table[] = { 0x0F, 0x1F, 0x0F, 0x3F }; -static const uint16 row_mask_table[] = { 0x0FF, 0x1FF, 0x2FF, 0x3FF }; - -static uint8 border; /* Border color index */ -static uint8 pending; /* Pending write flag */ -static uint8 code; /* Code register */ -static uint8 dma_type; /* DMA mode */ -static uint16 addr; /* Address register */ -static uint16 addr_latch; /* Latched A15, A14 of address */ -static uint16 sat_base_mask; /* Base bits of SAT */ -static uint16 sat_addr_mask; /* Index bits of SAT */ -static uint16 dma_src; /* DMA source address */ -static uint32 dma_endCycles; /* 68k cycles to DMA end */ -static int dmafill; /* DMA Fill pending flag */ -static int cached_write; /* 2nd part of 32-bit CTRL port write (Genesis mode) or LSB of CRAM data (Game Gear mode) */ -static uint16 fifo[4]; /* FIFO ring-buffer */ -static int fifo_idx; /* FIFO write index */ -static int fifo_byte_access; /* FIFO byte access flag */ -static uint32 fifo_cycles; /* FIFO next access cycle */ -static int *fifo_timing; /* FIFO slots timing table */ - - /* set Z80 or 68k interrupt lines */ -static void (*set_irq_line)(unsigned int level); -static void (*set_irq_line_delay)(unsigned int level); - -/* Vertical counter overflow values (see hvc.h) */ -static const uint16 vc_table[4][2] = -{ - /* NTSC, PAL */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0xEA , 0x102}, /* Mode 5 (224 lines) */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0x106, 0x10A} /* Mode 5 (240 lines) */ -}; - -/* FIFO access slots timings */ -static const int fifo_timing_h32[16+4] = -{ - 230, 510, 810, 970, 1130, 1450, 1610, 1770, 2090, 2250, 2410, 2730, 2890, 3050, 3350, 3370, - MCYCLES_PER_LINE + 230, MCYCLES_PER_LINE + 510, MCYCLES_PER_LINE + 810, MCYCLES_PER_LINE + 970, -}; - -static const int fifo_timing_h40[18+4] = -{ - 352, 820, 948, 1076, 1332, 1460, 1588, 1844, 1972, 2100, 2356, 2484, 2612, 2868, 2996, 3124, 3364, 3380, - MCYCLES_PER_LINE + 352, MCYCLES_PER_LINE + 820, MCYCLES_PER_LINE + 948, MCYCLES_PER_LINE + 1076, -}; - -/* DMA Timings (number of access slots per line) */ -static const uint8 dma_timing[2][2] = -{ -/* H32, H40 */ - {16 , 18}, /* active display */ - {166, 204} /* blank display */ -}; - -/* DMA processing functions (set by VDP register 23 high nibble) */ -static void (*const dma_func[16])(unsigned int length) = -{ - /* 0x0-0x3 : DMA from 68k bus $000000-$7FFFFF (external area) */ - vdp_dma_68k_ext,vdp_dma_68k_ext,vdp_dma_68k_ext,vdp_dma_68k_ext, - - /* 0x4-0x7 : DMA from 68k bus $800000-$FFFFFF (internal RAM & I/O) */ - vdp_dma_68k_ram, vdp_dma_68k_io,vdp_dma_68k_ram,vdp_dma_68k_ram, - - /* 0x8-0xB : DMA Fill */ - vdp_dma_fill,vdp_dma_fill,vdp_dma_fill,vdp_dma_fill, - - /* 0xC-0xF : DMA Copy */ - vdp_dma_copy,vdp_dma_copy,vdp_dma_copy,vdp_dma_copy -}; - -/* BG rendering functions */ -static void (*const render_bg_modes[16])(int line) = -{ - render_bg_m0, /* Graphics I */ - render_bg_m2, /* Graphics II */ - render_bg_m4, /* Mode 4 */ - render_bg_m4, /* Mode 4 */ - render_bg_m3, /* Multicolor */ - render_bg_m3x, /* Multicolor (Extended PG) */ - render_bg_m4, /* Mode 4 */ - render_bg_m4, /* Mode 4 */ - render_bg_m1, /* Text */ - render_bg_m1x, /* Text (Extended PG) */ - render_bg_m4, /* Mode 4 */ - render_bg_m4, /* Mode 4 */ - render_bg_inv, /* Invalid (1+3) */ - render_bg_inv, /* Invalid (1+2+3) */ - render_bg_m4, /* Mode 4 */ - render_bg_m4, /* Mode 4 */ -}; - -/*--------------------------------------------------------------------------*/ -/* Init, reset, context functions */ -/*--------------------------------------------------------------------------*/ - -void vdp_init(void) -{ - /* PAL/NTSC timings */ - lines_per_frame = vdp_pal ? 313: 262; - - /* CPU interrupt line(s)*/ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* 68k cpu */ - set_irq_line = m68k_set_irq; - set_irq_line_delay = m68k_set_irq_delay; - } - else - { - /* Z80 cpu */ - set_irq_line = z80_set_irq_line; - set_irq_line_delay = z80_set_irq_line; - } -} - -void vdp_reset(void) -{ - int i; - - memset ((char *) sat, 0, sizeof (sat)); - memset ((char *) vram, 0, sizeof (vram)); - memset ((char *) cram, 0, sizeof (cram)); - memset ((char *) vsram, 0, sizeof (vsram)); - memset ((char *) reg, 0, sizeof (reg)); - - addr = 0; - addr_latch = 0; - code = 0; - pending = 0; - border = 0; - hint_pending = 0; - vint_pending = 0; - dmafill = 0; - dma_src = 0; - dma_type = 0; - dma_length = 0; - dma_endCycles = 0; - odd_frame = 0; - im2_flag = 0; - interlaced = 0; - fifo_write_cnt = 0; - fifo_cycles = 0; - fifo_slots = 0; - fifo_idx = 0; - cached_write = -1; - fifo_byte_access = 1; - - ntab = 0; - ntbb = 0; - ntwb = 0; - satb = 0; - hscb = 0; - - vscroll = 0; - - hscroll_mask = 0x00; - playfield_shift = 6; - playfield_col_mask = 0x0F; - playfield_row_mask = 0x0FF; - sat_base_mask = 0xFE00; - sat_addr_mask = 0x01FF; - - /* reset pattern cache changes */ - bg_list_index = 0; - memset ((char *) bg_name_dirty, 0, sizeof (bg_name_dirty)); - memset ((char *) bg_name_list, 0, sizeof (bg_name_list)); - - /* default Window clipping */ - window_clip(0,0); - - /* reset VDP status (FIFO empty flag is set) */ - if (system_hw & SYSTEM_MD) - { - status = vdp_pal | 0x200; - } - else - { - status = 0; - } - - /* default display area */ - bitmap.viewport.w = 256; - bitmap.viewport.h = 192; - bitmap.viewport.ow = 256; - bitmap.viewport.oh = 192; - - /* default HVC */ - hvc_latch = 0x10000; - hctab = cycle2hc32; - vc_max = vc_table[0][vdp_pal]; - v_counter = bitmap.viewport.h; - h_counter = 0xff; - - /* default sprite pixel width */ - max_sprite_pixels = 256; - - /* default FIFO access slots timings */ - fifo_timing = (int *)fifo_timing_h32; - - /* default overscan area */ - if ((system_hw == SYSTEM_GG) && !config.gg_extra) - { - /* Display area reduced to 160x144 if overscan is disabled */ - bitmap.viewport.x = (config.overscan & 2) ? 14 : -48; - bitmap.viewport.y = (config.overscan & 1) ? (24 * (vdp_pal + 1)) : -24; - } - else - { - bitmap.viewport.x = (config.overscan & 2) * 7; - bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); - } - - /* default rendering mode */ - update_bg_pattern_cache = update_bg_pattern_cache_m4; - if (system_hw < SYSTEM_MD) - { - /* Mode 0 */ - render_bg = render_bg_m0; - render_obj = render_obj_tms; - parse_satb = parse_satb_tms; - } - else - { - /* Mode 4 */ - render_bg = render_bg_m4; - render_obj = render_obj_m4; - parse_satb = parse_satb_m4; - } - - /* default 68k bus interface (Mega Drive VDP only) */ - vdp_68k_data_w = vdp_68k_data_w_m4; - vdp_68k_data_r = vdp_68k_data_r_m4; - - /* default Z80 bus interface */ - switch (system_hw) - { - case SYSTEM_SG: - case SYSTEM_SGII: - { - /* SG-1000 (TMS99xx) or SG-1000 II (315-5066) VDP */ - vdp_z80_data_w = vdp_z80_data_w_sg; - vdp_z80_data_r = vdp_z80_data_r_m4; - break; - } - - case SYSTEM_GG: - { - /* Game Gear VDP */ - vdp_z80_data_w = vdp_z80_data_w_gg; - vdp_z80_data_r = vdp_z80_data_r_m4; - break; - } - - case SYSTEM_MARKIII: - case SYSTEM_SMS: - case SYSTEM_SMS2: - case SYSTEM_GGMS: - { - /* Master System or Game Gear (in MS compatibility mode) VDP */ - vdp_z80_data_w = vdp_z80_data_w_ms; - vdp_z80_data_r = vdp_z80_data_r_m4; - break; - } - - default: - { - /* Mega Drive VDP (in MS compatibility mode) */ - vdp_z80_data_w = vdp_z80_data_w_m4; - vdp_z80_data_r = vdp_z80_data_r_m4; - break; - } - } - - /* H-INT is disabled on startup (verified on VA4 MD1 with 315-5313 VDP) */ - reg[10] = 0xFF; - - /* Master System specific */ - if ((system_hw & SYSTEM_SMS) && (!(config.bios & 1) || !(system_bios & SYSTEM_SMS))) - { - /* force registers initialization (normally done by BOOT ROM on all Master System models) */ - vdp_reg_w(0 , 0x36, 0); - vdp_reg_w(1 , 0x80, 0); - vdp_reg_w(2 , 0xFF, 0); - vdp_reg_w(3 , 0xFF, 0); - vdp_reg_w(4 , 0xFF, 0); - vdp_reg_w(5 , 0xFF, 0); - vdp_reg_w(6 , 0xFF, 0); - - /* Mode 4 */ - render_bg = render_bg_m4; - render_obj = render_obj_m4; - parse_satb = parse_satb_m4; - } - - /* Mega Drive specific */ - else if (((system_hw == SYSTEM_MD) || (system_hw == SYSTEM_MCD)) && (config.bios & 1) && !(system_bios & SYSTEM_MD)) - { - /* force registers initialization (normally done by BOOT ROM, only on Mega Drive model with TMSS) */ - vdp_reg_w(0 , 0x04, 0); - vdp_reg_w(1 , 0x04, 0); - vdp_reg_w(12, 0x81, 0); - vdp_reg_w(15, 0x02, 0); - } - - /* reset color palette */ - for(i = 0; i < 0x20; i ++) - { - color_update_m4(i, 0x00); - } - color_update_m4(0x40, 0x00); -} - -int vdp_context_save(uint8 *state) -{ - int bufferptr = 0; - - save_param(sat, sizeof(sat)); - save_param(vram, sizeof(vram)); - save_param(cram, sizeof(cram)); - save_param(vsram, sizeof(vsram)); - save_param(reg, sizeof(reg)); - save_param(&addr, sizeof(addr)); - save_param(&addr_latch, sizeof(addr_latch)); - save_param(&code, sizeof(code)); - save_param(&pending, sizeof(pending)); - save_param(&status, sizeof(status)); - save_param(&dmafill, sizeof(dmafill)); - save_param(&fifo_idx, sizeof(fifo_idx)); - save_param(&fifo, sizeof(fifo)); - save_param(&h_counter, sizeof(h_counter)); - save_param(&hint_pending, sizeof(hint_pending)); - save_param(&vint_pending, sizeof(vint_pending)); - save_param(&dma_length, sizeof(dma_length)); - save_param(&dma_type, sizeof(dma_type)); - save_param(&dma_src, sizeof(dma_src)); - save_param(&cached_write, sizeof(cached_write)); - return bufferptr; -} - -int vdp_context_load(uint8 *state) -{ - int i, bufferptr = 0; - uint8 temp_reg[0x20]; - - load_param(sat, sizeof(sat)); - load_param(vram, sizeof(vram)); - load_param(cram, sizeof(cram)); - load_param(vsram, sizeof(vsram)); - load_param(temp_reg, sizeof(temp_reg)); - - /* restore VDP registers */ - if (system_hw < SYSTEM_MD) - { - if (system_hw >= SYSTEM_MARKIII) - { - for (i=0;i<0x10;i++) - { - pending = 1; - addr_latch = temp_reg[i]; - vdp_sms_ctrl_w(0x80 | i); - } - } - else - { - /* TMS-99xx registers are updated directly to prevent spurious 4K->16K VRAM switching */ - for (i=0;i<0x08;i++) - { - reg[i] = temp_reg[i]; - } - - /* Rendering mode */ - render_bg = render_bg_modes[((reg[0] & 0x02) | (reg[1] & 0x18)) >> 1]; - } - } - else - { - for (i=0;i<0x20;i++) - { - vdp_reg_w(i, temp_reg[i], 0); - } - } - - load_param(&addr, sizeof(addr)); - load_param(&addr_latch, sizeof(addr_latch)); - load_param(&code, sizeof(code)); - load_param(&pending, sizeof(pending)); - load_param(&status, sizeof(status)); - load_param(&dmafill, sizeof(dmafill)); - load_param(&fifo_idx, sizeof(fifo_idx)); - load_param(&fifo, sizeof(fifo)); - load_param(&h_counter, sizeof(h_counter)); - load_param(&hint_pending, sizeof(hint_pending)); - load_param(&vint_pending, sizeof(vint_pending)); - load_param(&dma_length, sizeof(dma_length)); - load_param(&dma_type, sizeof(dma_type)); - load_param(&dma_src, sizeof(dma_src)); - load_param(&cached_write, sizeof(cached_write)); - - /* restore FIFO byte access flag */ - fifo_byte_access = ((code & 0x0F) < 0x03); - - /* restore current NTSC/PAL mode */ - if (system_hw & SYSTEM_MD) - { - status = (status & ~1) | vdp_pal; - } - - if (reg[1] & 0x04) - { - /* Mode 5 */ - bg_list_index = 0x800; - - /* reinitialize palette */ - color_update_m5(0, *(uint16 *)&cram[border << 1]); - for(i = 1; i < 0x40; i++) - { - color_update_m5(i, *(uint16 *)&cram[i << 1]); - } - } - else - { - /* Modes 0,1,2,3,4 */ - bg_list_index = 0x200; - - /* reinitialize palette */ - for(i = 0; i < 0x20; i ++) - { - color_update_m4(i, *(uint16 *)&cram[i << 1]); - } - color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); - } - - /* invalidate tile cache */ - for (i=0;i VDP 32-cell Active 16 - Blanking 166 - 40-cell Active 18 - Blanking 204 - VRAM Fill 32-cell Active 15 - Blanking 165 - 40-cell Active 17 - Blanking 203 - VRAM Copy 32-cell Active 8 - Blanking 83 - 40-cell Active 9 - Blanking 102 - - 'Active' is the active display period, 'Blanking' is either the vertical - blanking period or when the display is forcibly blanked via register #1. - - The above transfer counts are all in bytes, unless the destination is - CRAM or VSRAM for a 68K > VDP transfer, in which case it is in words. - */ - unsigned int rate = dma_timing[(status & 8) || !(reg[1] & 0x40)][reg[12] & 1]; - - /* Adjust for 68k bus DMA to VRAM (one word = 2 access) or DMA Copy (one read + one write = 2 access) */ - rate = rate >> (dma_type & 1); - - /* Remaining DMA cycles */ - if (status & 8) - { - /* Process DMA until the end of VBLANK */ - /* NOTE: DMA timings can not change during VBLANK because active display width cannot be modified. */ - /* Indeed, writing VDP registers during DMA is either impossible (when doing DMA from 68k bus, CPU */ - /* is locked) or will abort DMA operation (in case of DMA Fill or Copy). */ - dma_cycles = ((lines_per_frame - bitmap.viewport.h - 1) * MCYCLES_PER_LINE) - cycles; - } - else - { - /* Process DMA until the end of current line */ - dma_cycles = (mcycles_vdp + MCYCLES_PER_LINE) - cycles; - } - - /* Remaining DMA bytes for that line */ - dma_bytes = (dma_cycles * rate) / MCYCLES_PER_LINE; - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] DMA type %d (%d access/line)(%d cycles left)-> %d access (%d remaining) (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE,dma_type, rate, dma_cycles, dma_bytes, dma_length, m68k_get_reg(M68K_REG_PC)); -#endif - - /* Check if DMA can be finished before the end of current line */ - if (dma_length < dma_bytes) - { - /* Adjust remaining DMA bytes */ - dma_bytes = dma_length; - dma_cycles = (dma_bytes * MCYCLES_PER_LINE) / rate; - } - - /* Update DMA timings */ - if (dma_type < 2) - { - /* 68K is frozen during DMA from 68k bus */ - m68k.cycles = cycles + dma_cycles; -#ifdef LOGVDP - error("-->CPU frozen for %d cycles\n", dma_cycles); -#endif - } - else - { - /* Set DMA Busy flag */ - status |= 0x02; - - /* 68K is still running, set DMA end cycle */ - dma_endCycles = cycles + dma_cycles; -#ifdef LOGVDP - error("-->DMA ends in %d cycles\n", dma_cycles); -#endif - } - - /* Process DMA */ - if (dma_bytes) - { - /* Update DMA length */ - dma_length -= dma_bytes; - - /* Process DMA operation */ - dma_func[reg[23] >> 4](dma_bytes); - - /* Check if DMA is finished */ - if (!dma_length) - { - /* DMA source address registers are incremented during DMA (even DMA Fill) */ - uint16 end = reg[21] + (reg[22] << 8) + reg[19] + (reg[20] << 8); - reg[21] = end & 0xff; - reg[22] = end >> 8; - - /* DMA length registers are decremented during DMA */ - reg[19] = reg[20] = 0; - - /* perform cached write, if any */ - if (cached_write >= 0) - { - vdp_68k_ctrl_w(cached_write); - cached_write = -1; - } - } - } -} - - -/*--------------------------------------------------------------------------*/ -/* Control port access functions */ -/*--------------------------------------------------------------------------*/ - -void vdp_68k_ctrl_w(unsigned int data) -{ - /* Check pending flag */ - if (pending == 0) - { - /* A single long word write instruction could have started DMA with the first word */ - if (dma_length) - { - /* 68k is frozen during 68k bus DMA */ - /* Second word should be written after DMA completion */ - /* See Formula One & Kawasaki Superbike Challenge */ - if (dma_type < 2) - { - /* Latch second control word for later */ - cached_write = data; - return; - } - } - - /* Check CD0-CD1 bits */ - if ((data & 0xC000) == 0x8000) - { - /* VDP register write */ - vdp_reg_w((data >> 8) & 0x1F, data & 0xFF, m68k.cycles); - } - else - { - /* Set pending flag (Mode 5 only) */ - pending = reg[1] & 4; - } - - /* Update address and code registers */ - addr = addr_latch | (data & 0x3FFF); - code = ((code & 0x3C) | ((data >> 14) & 0x03)); - } - else - { - /* Clear pending flag */ - pending = 0; - - /* Save address bits A15 and A14 */ - addr_latch = (data & 3) << 14; - - /* Update address and code registers */ - addr = addr_latch | (addr & 0x3FFF); - code = ((code & 0x03) | ((data >> 2) & 0x3C)); - - /* Detect DMA operation (CD5 bit set) */ - if (code & 0x20) - { - /* DMA must be enabled */ - if (reg[1] & 0x10) - { - /* DMA type */ - switch (reg[23] >> 6) - { - case 2: - { - /* DMA Fill */ - dma_type = 2; - - /* DMA is pending until next DATA port write */ - dmafill = 1; - - /* Set DMA Busy flag */ - status |= 0x02; - - /* DMA end cycle is not initialized yet (this prevents DMA Busy flag from being cleared on VDP status read) */ - dma_endCycles = 0xffffffff; - break; - } - - case 3: - { - /* DMA Copy */ - dma_type = 3; - - /* DMA length */ - dma_length = (reg[20] << 8) | reg[19]; - - /* Zero DMA length (pre-decrementing counter) */ - if (!dma_length) - { - dma_length = 0x10000; - } - - /* DMA source address */ - dma_src = (reg[22] << 8) | reg[21]; - - /* Trigger DMA */ - vdp_dma_update(m68k.cycles); - break; - } - - default: - { - /* DMA from 68k bus */ - dma_type = (code & 0x06) ? 0 : 1; - - /* DMA length */ - dma_length = (reg[20] << 8) | reg[19]; - - /* Zero DMA length (pre-decrementing counter) */ - if (!dma_length) - { - dma_length = 0x10000; - } - - /* DMA source address */ - dma_src = (reg[22] << 8) | reg[21]; - - /* Transfer from SVP ROM/RAM ($000000-$3fffff) or CD Word-RAM ($200000-$3fffff/$600000-$7fffff) */ - if (((system_hw == SYSTEM_MCD) && ((reg[23] & 0x70) == ((scd.cartridge.boot >> 1) + 0x10))) || (svp && !(reg[23] & 0x60))) - { - /* source data is available with one cycle delay, i.e first word written by VDP is */ - /* previous data being held on 68k bus at that time, then source words are written */ - /* normally to VDP RAM, with only last source word being ignored */ - addr += reg[15]; - dma_length--; - } - - /* Trigger DMA */ - vdp_dma_update(m68k.cycles); - break; - } - } - } - } - } - - /* - FIFO emulation (Chaos Engine/Soldier of Fortune, Double Clutch, Sol Deace) - -------------------------------------------------------------------------- - Each VRAM access is byte wide, so one VRAM write (word) need two slot access. - - NOTE: Invalid code 0x02 (register write) should not behave the same as VRAM - access, i.e data is ignored and only one access slot is used for each word, - BUT a few games ("Clue", "Microcosm") which accidentally corrupt code value - will have issues when emulating FIFO timings. They likely work fine on real - hardware because of periodical 68k wait-states which have been observed and - would naturaly add some delay between writes. Until those wait-states are - accurately measured and emulated, delay is forced when invalid code value - is being used. - */ - fifo_byte_access = ((code & 0x0F) <= 0x02); -} - -/* Mega Drive VDP control port specific (MS compatibility mode) */ -void vdp_z80_ctrl_w(unsigned int data) -{ - switch (pending) - { - case 0: - { - /* Latch LSB */ - addr_latch = data; - - /* Set LSB pending flag */ - pending = 1; - return; - } - - case 1: - { - /* Update address and code registers */ - addr = (addr & 0xC000) | ((data & 0x3F) << 8) | addr_latch ; - code = ((code & 0x3C) | ((data >> 6) & 0x03)); - - if ((code & 0x03) == 0x02) - { - /* VDP register write */ - vdp_reg_w(data & 0x1F, addr_latch, Z80.cycles); - - /* Clear pending flag */ - pending = 0; - return; - } - - /* Set Mode 5 pending flag */ - pending = (reg[1] & 4) >> 1; - - if (!pending && !(code & 0x03)) - { - /* Process VRAM read */ - fifo[0] = vram[addr & 0x3FFF]; - - /* Increment address register */ - addr += (reg[15] + 1); - } - return; - } - - case 2: - { - /* Latch LSB */ - addr_latch = data; - - /* Set LSB pending flag */ - pending = 3; - return; - } - - case 3: - { - /* Clear pending flag */ - pending = 0; - - /* Update address and code registers */ - addr = ((addr_latch & 3) << 14) | (addr & 0x3FFF); - code = ((code & 0x03) | ((addr_latch >> 2) & 0x3C)); - - /* Detect DMA operation (CD5 bit set) */ - if (code & 0x20) - { - /* DMA should be enabled */ - if (reg[1] & 0x10) - { - /* DMA type */ - switch (reg[23] >> 6) - { - case 2: - { - /* DMA Fill */ - dma_type = 2; - - /* DMA is pending until next DATA port write */ - dmafill = 1; - - /* Set DMA Busy flag */ - status |= 0x02; - - /* DMA end cycle is not initialized yet (this prevents DMA Busy flag from being cleared on VDP status read) */ - dma_endCycles = 0xffffffff; - break; - } - - case 3: - { - /* DMA copy */ - dma_type = 3; - - /* DMA length */ - dma_length = (reg[20] << 8) | reg[19]; - - /* Zero DMA length (pre-decrementing counter) */ - if (!dma_length) - { - dma_length = 0x10000; - } - - /* DMA source address */ - dma_src = (reg[22] << 8) | reg[21]; - - /* Trigger DMA */ - vdp_dma_update(Z80.cycles); - break; - } - - default: - { - /* DMA from 68k bus does not work when Z80 is in control */ - break; - } - } - } - } - } - return; - } -} - -/* Master System & Game Gear VDP control port specific */ -void vdp_sms_ctrl_w(unsigned int data) -{ - if (pending == 0) - { - /* Update address register LSB */ - addr = (addr & 0x3F00) | (data & 0xFF); - - /* Latch LSB */ - addr_latch = data; - - /* Set LSB pending flag */ - pending = 1; - } - else - { - /* Update address and code registers */ - code = (data >> 6) & 3; - addr = (data << 8 | addr_latch) & 0x3FFF; - - /* Clear pending flag */ - pending = 0; - - if (code == 0) - { - /* Process VRAM read */ - fifo[0] = vram[addr & 0x3FFF]; - - /* Increment address register */ - addr = (addr + 1) & 0x3FFF; - return; - } - - if (code == 2) - { - /* Save current VDP mode */ - int mode, prev = (reg[0] & 0x06) | (reg[1] & 0x18); - - /* Write VDP register 0-15 */ - vdp_reg_w(data & 0x0F, addr_latch, Z80.cycles); - - /* Check VDP mode changes */ - mode = (reg[0] & 0x06) | (reg[1] & 0x18); - prev ^= mode; - - if (prev) - { - /* Check for extended modes */ - if (system_hw > SYSTEM_SMS) - { - int height; - - if (mode == 0x0E) /* M1=0,M2=1,M3=1,M4=1 */ - { - /* Mode 4 extended (240 lines) */ - height = 240; - - /* Update vertical counter max value */ - vc_max = vc_table[3][vdp_pal]; - } - else if (mode == 0x16) /* M1=1,M2=1,M3=0,M4=1 */ - { - /* Mode 4 extended (224 lines) */ - height = 224; - - /* Update vertical counter max value */ - vc_max = vc_table[1][vdp_pal]; - } - else - { - /* Mode 4 default (224 lines) */ - height = 192; - - /* Default vertical counter max value */ - vc_max = vc_table[0][vdp_pal]; - } - - /* viewport changes should be applied on next frame */ - if (height != bitmap.viewport.h) - { - bitmap.viewport.changed |= 2; - } - } - - /* Rendering mode */ - render_bg = render_bg_modes[mode>>1]; - - /* Mode switching */ - if (prev & 0x04) - { - int i; - - if (mode & 0x04) - { - /* Mode 4 sprites */ - parse_satb = parse_satb_m4; - render_obj = render_obj_m4; - - /* force BG cache update*/ - bg_list_index = 0x200; - } - else - { - /* TMS-mode sprites */ - parse_satb = parse_satb_tms; - render_obj = render_obj_tms; - - /* BG cache is not used */ - bg_list_index = 0; - } - - /* reinitialize palette */ - for(i = 0; i < 0x20; i ++) - { - color_update_m4(i, *(uint16 *)&cram[i << 1]); - } - color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); - } - } - } - } -} - -/* SG-1000 VDP (TMS99xx) control port specific */ -void vdp_tms_ctrl_w(unsigned int data) -{ - if (pending == 0) - { - /* Latch LSB */ - addr_latch = data; - - /* Set LSB pending flag */ - pending = 1; - } - else - { - /* Update address and code registers */ - code = (data >> 6) & 3; - addr = (data << 8 | addr_latch) & 0x3FFF; - - /* Clear pending flag */ - pending = 0; - - if (code == 0) - { - /* Process VRAM read */ - fifo[0] = vram[addr & 0x3FFF]; - - /* Increment address register */ - addr = (addr + 1) & 0x3FFF; - return; - } - - if (code & 2) - { - /* VDP register index (0-7) */ - data &= 0x07; - - /* Write VDP register */ - vdp_reg_w(data, addr_latch, Z80.cycles); - - /* Check VDP mode changes */ - if (data < 2) - { - /* Rendering mode */ - render_bg = render_bg_modes[((reg[0] & 0x02) | (reg[1] & 0x18)) >> 1]; - } - } - } -} - - /* - * Status register - * - * Bits - * 0 NTSC(0)/PAL(1) - * 1 DMA Busy - * 2 During HBlank - * 3 During VBlank - * 4 0:1 even:odd field (interlaced modes only) - * 5 Sprite collision - * 6 Too many sprites per line - * 7 v interrupt occurred - * 8 Write FIFO full - * 9 Write FIFO empty - * 10 - 15 Open Bus - */ -unsigned int vdp_68k_ctrl_r(unsigned int cycles) -{ - unsigned int temp; - - /* Cycle-accurate VDP status read (adjust CPU time with current instruction execution time) */ - cycles += m68k_cycles(); - - /* Update FIFO status flags if not empty */ - if (fifo_write_cnt) - { - vdp_fifo_update(cycles); - } - - /* Check if DMA Busy flag is set */ - if (status & 2) - { - /* Check if DMA is finished */ - if (!dma_length && (cycles >= dma_endCycles)) - { - /* Clear DMA Busy flag */ - status &= 0xFFFD; - } - } - - /* Return VDP status */ - temp = status; - - /* Clear pending flag */ - pending = 0; - - /* Clear SOVR & SCOL flags */ - status &= 0xFF9F; - - /* VBLANK flag is set when display is disabled */ - if (!(reg[1] & 0x40)) - { - temp |= 0x08; - } - - /* Cycle-accurate VINT flag (Ex-Mutants, Tyrant / Mega-Lo-Mania, Marvel Land) */ - /* this allows VINT flag to be read just before vertical interrupt is being triggered */ - if ((v_counter == bitmap.viewport.h) && (cycles >= (mcycles_vdp + 788))) - { - /* check Z80 interrupt state to assure VINT has not already been triggered (and flag cleared) */ - if (Z80.irq_state != ASSERT_LINE) - { - temp |= 0x80; - } - } - - /* Cycle-accurate HBLANK flag (Sonic 3 & Sonic 2 "VS Modes", Bugs Bunny Double Trouble, Lemmings 2, Mega Turrican, V.R Troopers, Gouketsuji Ichizoku,...) */ - /* NB: this is not 100% accurate (see hvc.h for horizontal events timings in H32 and H40 mode) but is close enough to make no noticeable difference for games */ - if ((cycles % MCYCLES_PER_LINE) < 588) - { - temp |= 0x04; - } - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VDP 68k status read -> 0x%x (0x%x) (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, temp, status, m68k_get_reg(M68K_REG_PC)); -#endif - return (temp); -} - -unsigned int vdp_z80_ctrl_r(unsigned int cycles) -{ - unsigned int temp; - - /* Check if DMA busy flag is set (Mega Drive VDP specific) */ - if (status & 2) - { - /* Check if DMA is finished */ - if (!dma_length && (cycles >= dma_endCycles)) - { - /* Clear DMA Busy flag */ - status &= 0xFD; - } - } - - /* Check if we are already on next line */ - if ((cycles - mcycles_vdp) >= MCYCLES_PER_LINE) - { - /* check vertical position */ - if (v_counter == bitmap.viewport.h) - { - /* update VCounter to indicate VINT flag has been cleared & VINT should not be triggered */ - v_counter++; - - /* cycle-accurate VINT flag (immediately cleared after being read) */ - status |= 0x80; - } - else - { - /* update line counter */ - int line = (v_counter + 1) % lines_per_frame; - - /* check if we are within active display range */ - if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) - { - /* update VCounter to indicate next line has already been rendered */ - v_counter = line; - - /* render next line (cycle-accurate SCOL & SOVR flags) */ - render_line(line); - } - } - } - - /* Return VDP status */ - temp = status; - - /* Clear pending flag */ - pending = 0; - - /* Clear VINT, SOVR & SCOL flags */ - status &= 0xFF1F; - - /* Mega Drive VDP specific */ - if (system_hw & SYSTEM_MD) - { - /* Display OFF: VBLANK flag is set */ - if (!(reg[1] & 0x40)) - { - temp |= 0x08; - } - - /* HBLANK flag */ - if ((cycles % MCYCLES_PER_LINE) < 588) - { - temp |= 0x04; - } - } - else if (reg[0] & 0x04) - { - /* Mode 4 unused bits (fixes PGA Tour Golf) */ - temp |= 0x1F; - } - - /* Cycle-accurate SCOL flag */ - if ((temp & 0x20) && (v_counter == (spr_col >> 8))) - { - if (system_hw & SYSTEM_MD) - { - /* COL flag is set at HCount 0xFF on MD */ - if ((cycles % MCYCLES_PER_LINE) < 105) - { - status |= 0x20; - temp &= ~0x20; - } - } - else - { - /* COL flag is set at the pixel it occurs */ - uint8 hc = hctab[(cycles + SMS_CYCLE_OFFSET + 15) % MCYCLES_PER_LINE]; - if ((hc < (spr_col & 0xff)) || (hc > 0xf3)) - { - status |= 0x20; - temp &= ~0x20; - } - } - } - - /* Clear HINT & VINT pending flags */ - hint_pending = vint_pending = 0; - - /* Clear Z80 interrupt */ - Z80.irq_state = CLEAR_LINE; - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VDP Z80 status read -> 0x%x (0x%x) (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, temp, status, Z80.pc.w.l); -#endif - return (temp); -} - -/*--------------------------------------------------------------------------*/ -/* HV Counters */ -/*--------------------------------------------------------------------------*/ - -unsigned int vdp_hvc_r(unsigned int cycles) -{ - int vc; - unsigned int data = hvc_latch; - - /* Check if HVC latch is enabled */ - if (data) - { - /* Mode 5: HV counters are frozen (cf. lightgun games, Sunset Riders logo) */ - if (reg[1] & 0x04) - { -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] HVC latch read -> 0x%x (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, data & 0xffff, m68k_get_reg(M68K_REG_PC)); -#endif - /* return latched HVC value */ - return (data & 0xffff); - } - else - { - /* Mode 4: by default, VCounter runs normally & HCounter is frozen */ - data &= 0xff; - } - } - else - { - /* Cycle-accurate HCounter (Striker, Mickey Mania, Skitchin, Road Rash I,II,III, Sonic 3D Blast...) */ - data = hctab[cycles % MCYCLES_PER_LINE]; - } - - /* Cycle-accurate VCounter */ - vc = v_counter; - if ((cycles - mcycles_vdp) >= MCYCLES_PER_LINE) - { - vc = (vc + 1) % lines_per_frame; - } - - /* VCounter overflow */ - if (vc > vc_max) - { - vc -= lines_per_frame; - } - - /* Interlaced modes */ - if (interlaced) - { - /* Interlace mode 2 (Sonic the Hedgehog 2, Combat Cars) */ - vc <<= im2_flag; - - /* Replace bit 0 with bit 8 */ - vc = (vc & ~1) | ((vc >> 8) & 1); - } - - /* return HCounter in LSB & VCounter in MSB */ - data |= ((vc & 0xff) << 8); - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] HVC read -> 0x%x (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, data, m68k_get_reg(M68K_REG_PC)); -#endif - return (data); -} - - -/*--------------------------------------------------------------------------*/ -/* Test registers */ -/*--------------------------------------------------------------------------*/ - -void vdp_test_w(unsigned int data) -{ -#ifdef LOGERROR - error("Unused VDP Write 0x%x (%08x)\n", data, m68k_get_reg(M68K_REG_PC)); -#endif -} - - -/*--------------------------------------------------------------------------*/ -/* 68k interrupt handler (TODO: check how interrupts are handled in Mode 4) */ -/*--------------------------------------------------------------------------*/ - -int vdp_68k_irq_ack(int int_level) -{ -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] INT Level %d ack (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE,int_level, m68k_get_reg(M68K_REG_PC)); -#endif - - /* VINT has higher priority (Fatal Rewind) */ - if (reg[1] & vint_pending) - { -#ifdef LOGVDP - error("---> VINT cleared\n"); -#endif - - /* Clear VINT pending flag */ - vint_pending = 0; - status &= ~0x80; - - /* Update IRQ status */ - if (reg[0] & hint_pending) - { - m68k_set_irq(4); - } - else - { - m68k_set_irq(0); - } - } - else - { -#ifdef LOGVDP - error("---> HINT cleared\n"); -#endif - - /* Clear HINT pending flag */ - hint_pending = 0; - - /* Update IRQ status */ - m68k_set_irq(0); - } - - return M68K_INT_ACK_AUTOVECTOR; -} - - -/*--------------------------------------------------------------------------*/ -/* VDP registers update function */ -/*--------------------------------------------------------------------------*/ - -static void vdp_reg_w(unsigned int r, unsigned int d, unsigned int cycles) -{ -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VDP register %d write -> 0x%x (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, r, d, m68k_get_reg(M68K_REG_PC)); -#endif - - /* VDP registers #11 to #23 cannot be updated in Mode 4 (Captain Planet & Avengers, Bass Master Classic Pro Edition) */ - if (!(reg[1] & 4) && (r > 10)) - { - return; - } - - switch(r) - { - case 0: /* CTRL #1 */ - { - /* Look for changed bits */ - r = d ^ reg[0]; - reg[0] = d; - - /* Line Interrupt */ - if (r & hint_pending) - { - /* Update IRQ status */ - if (reg[1] & vint_pending) - { - set_irq_line(6); - } - else if (d & 0x10) - { - set_irq_line_delay(4); - } - else - { - set_irq_line(0); - } - } - - /* Palette selection */ - if (r & 0x04) - { - /* Mega Drive VDP only */ - if (system_hw & SYSTEM_MD) - { - /* Reset color palette */ - int i; - if (reg[1] & 0x04) - { - /* Mode 5 */ - color_update_m5(0x00, *(uint16 *)&cram[border << 1]); - for (i = 1; i < 0x40; i++) - { - color_update_m5(i, *(uint16 *)&cram[i << 1]); - } - } - else - { - /* Mode 4 */ - for (i = 0; i < 0x20; i++) - { - color_update_m4(i, *(uint16 *)&cram[i << 1]); - } - color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); - } - } - } - - /* HVC latch (Sunset Riders, Lightgun games) */ - if (r & 0x02) - { - /* Mega Drive VDP only */ - if (system_hw & SYSTEM_MD) - { - /* Mode 5 only */ - if (reg[1] & 0x04) - { - if (d & 0x02) - { - /* Latch current HVC */ - hvc_latch = vdp_hvc_r(cycles) | 0x10000; - } - else - { - /* Free-running HVC */ - hvc_latch = 0; - } - } - } - } - break; - } - - case 1: /* CTRL #2 */ - { - /* Look for changed bits */ - r = d ^ reg[1]; - reg[1] = d; - - /* 4K/16K address decoding */ - if (r & 0x80) - { - /* original TMS99xx hardware only (fixes Magical Kid Wiz) */ - if (system_hw == SYSTEM_SG) - { - int i; - - /* make temporary copy of 16KB VRAM */ - memcpy(vram + 0x4000, vram, 0x4000); - - /* re-arrange 16KB VRAM address decoding */ - if (d & 0x80) - { - /* 4K->16K address decoding */ - for (i=0; i<0x4000; i+=2) - { - *(uint16 *)(vram + ((i & 0x203F) | ((i << 6) & 0x1000) | ((i >> 1) & 0xFC0))) = *(uint16 *)(vram + 0x4000 + i); - } - } - else - { - /* 16K->4K address decoding */ - for (i=0; i<0x4000; i+=2) - { - *(uint16 *)(vram + ((i & 0x203F) | ((i >> 6) & 0x40) | ((i << 1) & 0x1F80))) = *(uint16 *)(vram + 0x4000 + i); - } - } - } - } - - /* Display status (modified during active display) */ - if ((r & 0x40) && (v_counter < bitmap.viewport.h)) - { - /* Cycle offset vs HBLANK */ - int offset = cycles - mcycles_vdp; - if (offset <= 860) - { - /* Sprite rendering is limited if display was disabled during HBLANK (Mickey Mania 3d level, Overdrive Demo) */ - if (d & 0x40) - { - /* NB: This is not 100% accurate. On real hardware, the maximal number of rendered sprites pixels */ - /* for the current line (normally 256 or 320 pixels) but also the maximal number of pre-processed */ - /* sprites for the next line (normally 64 or 80 sprites) are both reduced depending on the amount */ - /* of cycles spent with display disabled. Here we only reduce them by a fixed amount when display */ - /* has been reenabled after a specific point within HBLANK. */ - if (offset > 360) - { - max_sprite_pixels = 128; - } - } - - /* Redraw entire line (Legend of Galahad, Lemmings 2, Formula One, Kawasaki Super Bike, Deadly Moves,...) */ - render_line(v_counter); - - /* Restore default */ - max_sprite_pixels = 256 + ((reg[12] & 1) << 6); - } - else if (system_hw & SYSTEM_MD) - { - /* Active pixel offset */ - if (reg[12] & 1) - { - /* dot clock = MCLK / 8 */ - offset = ((offset - 860) / 8) + 16; - } - else - { - /* dot clock = MCLK / 10 */ - offset = ((offset - 860) / 10) + 16; - } - - /* Line is partially blanked (Nigel Mansell's World Championship Racing , Ren & Stimpy Show, ...) */ - if (offset < bitmap.viewport.w) - { - if (d & 0x40) - { - render_line(v_counter); - blank_line(v_counter, 0, offset); - } - else - { - blank_line(v_counter, offset, bitmap.viewport.w - offset); - } - } - } - } - - /* Frame Interrupt */ - if (r & vint_pending) - { - /* Update IRQ status */ - if (d & 0x20) - { - set_irq_line_delay(6); - } - else if (reg[0] & hint_pending) - { - set_irq_line(4); - } - else - { - set_irq_line(0); - } - } - - /* Active display height */ - if (r & 0x08) - { - /* Mega Drive VDP only */ - if (system_hw & SYSTEM_MD) - { - /* Mode 5 only */ - if (d & 0x04) - { - /* Changes should be applied on next frame */ - bitmap.viewport.changed |= 2; - - /* Update vertical counter max value */ - vc_max = vc_table[(d >> 2) & 3][vdp_pal]; - } - } - } - - /* Rendering mode */ - if (r & 0x04) - { - /* Mega Drive VDP only */ - if (system_hw & SYSTEM_MD) - { - int i; - if (d & 0x04) - { - /* Mode 5 rendering */ - parse_satb = parse_satb_m5; - update_bg_pattern_cache = update_bg_pattern_cache_m5; - if (im2_flag) - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; - render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; - } - else - { - render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; - render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; - } - - /* Reset color palette */ - color_update_m5(0x00, *(uint16 *)&cram[border << 1]); - for (i = 1; i < 0x40; i++) - { - color_update_m5(i, *(uint16 *)&cram[i << 1]); - } - - /* Mode 5 bus access */ - vdp_68k_data_w = vdp_68k_data_w_m5; - vdp_z80_data_w = vdp_z80_data_w_m5; - vdp_68k_data_r = vdp_68k_data_r_m5; - vdp_z80_data_r = vdp_z80_data_r_m5; - - /* Clear HVC latched value */ - hvc_latch = 0; - - /* Check if HVC latch bit is set */ - if (reg[0] & 0x02) - { - /* Latch current HVC */ - hvc_latch = vdp_hvc_r(cycles) | 0x10000; - } - - /* max tiles to invalidate */ - bg_list_index = 0x800; - } - else - { - /* Mode 4 rendering */ - parse_satb = parse_satb_m4; - update_bg_pattern_cache = update_bg_pattern_cache_m4; - render_bg = render_bg_m4; - render_obj = render_obj_m4; - - /* Reset color palette */ - for (i = 0; i < 0x20; i++) - { - color_update_m4(i, *(uint16 *)&cram[i << 1]); - } - color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); - - /* Mode 4 bus access */ - vdp_68k_data_w = vdp_68k_data_w_m4; - vdp_z80_data_w = vdp_z80_data_w_m4; - vdp_68k_data_r = vdp_68k_data_r_m4; - vdp_z80_data_r = vdp_z80_data_r_m4; - - /* Latch current HVC */ - hvc_latch = vdp_hvc_r(cycles) | 0x10000; - - /* max tiles to invalidate */ - bg_list_index = 0x200; - } - - /* Invalidate pattern cache */ - for (i=0;i> 2) & 3][vdp_pal]; - - /* Display height change should be applied on next frame */ - bitmap.viewport.changed |= 2; - } - else - { - /* No effect (cleared to avoid mode 5 detection elsewhere) */ - reg[1] &= ~0x04; - } - } - break; - } - - case 2: /* Plane A Name Table Base */ - { - reg[2] = d; - ntab = (d << 10) & 0xE000; - - /* Plane A Name Table Base changed during HBLANK */ - if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (cycles <= (mcycles_vdp + 860))) - { - /* render entire line */ - render_line(v_counter); - } - break; - } - - case 3: /* Window Plane Name Table Base */ - { - reg[3] = d; - if (reg[12] & 0x01) - { - ntwb = (d << 10) & 0xF000; - } - else - { - ntwb = (d << 10) & 0xF800; - } - - /* Window Plane Name Table Base changed during HBLANK */ - if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (cycles <= (mcycles_vdp + 860))) - { - /* render entire line */ - render_line(v_counter); - } - break; - } - - case 4: /* Plane B Name Table Base */ - { - reg[4] = d; - ntbb = (d << 13) & 0xE000; - - /* Plane B Name Table Base changed during HBLANK (Adventures of Batman & Robin) */ - if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (cycles <= (mcycles_vdp + 860))) - { - /* render entire line */ - render_line(v_counter); - } - - break; - } - - case 5: /* Sprite Attribute Table Base */ - { - reg[5] = d; - satb = (d << 9) & sat_base_mask; - break; - } - - case 7: /* Backdrop color */ - { - reg[7] = d; - - /* Check if backdrop color changed */ - d &= 0x3F; - - if (d != border) - { - /* Update backdrop color */ - border = d; - - /* Reset palette entry */ - if (reg[1] & 4) - { - /* Mode 5 */ - color_update_m5(0x00, *(uint16 *)&cram[d << 1]); - } - else - { - /* Mode 4 */ - color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (d & 0x0F)) << 1]); - } - - /* Backdrop color modified during HBLANK (Road Rash 1,2,3)*/ - if ((v_counter < bitmap.viewport.h) && (cycles <= (mcycles_vdp + 860))) - { - /* remap entire line */ - remap_line(v_counter); - } - } - break; - } - - case 8: /* Horizontal Scroll (Mode 4 only) */ - { - /* H-Scroll is latched at HCount 0xF3, HCount 0xF6 on MD */ - /* Line starts at HCount 0xF4, HCount 0xF6 on MD */ - if (system_hw < SYSTEM_MD) - { - cycles = cycles + 15; - } - - /* Check if H-Scroll has already been latched */ - if ((cycles - mcycles_vdp) >= MCYCLES_PER_LINE) - { - /* update line counter */ - int line = (v_counter + 1) % lines_per_frame; - - /* check if we are within active display range */ - if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) - { - /* update VCounter to indicate next line has already been rendered */ - v_counter = line; - - /* render next line before updating H-Scroll */ - render_line(line); - } - } - - reg[8] = d; - break; - } - - case 11: /* CTRL #3 */ - { - reg[11] = d; - - /* Horizontal scrolling mode */ - hscroll_mask = hscroll_mask_table[d & 0x03]; - - /* Vertical Scrolling mode */ - if (d & 0x04) - { - render_bg = im2_flag ? render_bg_m5_im2_vs : render_bg_m5_vs; - } - else - { - render_bg = im2_flag ? render_bg_m5_im2 : render_bg_m5; - } - break; - } - - case 12: /* CTRL #4 */ - { - /* Look for changed bits */ - r = d ^ reg[12]; - reg[12] = d; - - /* Shadow & Highlight mode */ - if (r & 0x08) - { - /* Reset color palette */ - int i; - color_update_m5(0x00, *(uint16 *)&cram[border << 1]); - for (i = 1; i < 0x40; i++) - { - color_update_m5(i, *(uint16 *)&cram[i << 1]); - } - - /* Update sprite rendering function */ - if (d & 0x08) - { - render_obj = im2_flag ? render_obj_m5_im2_ste : render_obj_m5_ste; - } - else - { - render_obj = im2_flag ? render_obj_m5_im2 : render_obj_m5; - } - } - - /* Interlaced modes */ - if (r & 0x06) - { - /* changes should be applied on next frame */ - bitmap.viewport.changed |= 2; - } - - /* Active display width */ - if (r & 0x01) - { - /* FIFO access slots timings depend on active width */ - if (fifo_slots) - { - /* Synchronize VDP FIFO */ - vdp_fifo_update(cycles); - } - - if (d & 0x01) - { - /* Update display-dependant registers */ - ntwb = (reg[3] << 10) & 0xF000; - satb = (reg[5] << 9) & 0xFC00; - sat_base_mask = 0xFC00; - sat_addr_mask = 0x03FF; - - /* Update HC table */ - hctab = cycle2hc40; - - /* Update clipping */ - window_clip(reg[17], 1); - - /* Update max sprite pixels per line*/ - max_sprite_pixels = 320; - - /* FIFO access slots timings */ - fifo_timing = (int *)fifo_timing_h40; - } - else - { - /* Update display-dependant registers */ - ntwb = (reg[3] << 10) & 0xF800; - satb = (reg[5] << 9) & 0xFE00; - sat_base_mask = 0xFE00; - sat_addr_mask = 0x01FF; - - /* Update HC table */ - hctab = cycle2hc32; - - /* Update clipping */ - window_clip(reg[17], 0); - - /* Update max sprite pixels per line*/ - max_sprite_pixels = 256; - - /* FIFO access slots timings */ - fifo_timing = (int *)fifo_timing_h32; - } - - /* Active screen width modified during VBLANK will be applied on upcoming frame */ - if (v_counter >= bitmap.viewport.h) - { - bitmap.viewport.w = max_sprite_pixels; - } - - /* Allow active screen width to be modified during first two lines (Bugs Bunny in Double Trouble) */ - else if (v_counter <= 1) - { - bitmap.viewport.w = max_sprite_pixels; - - /* Redraw lines */ - render_line(0); - if (v_counter) - { - render_line(1); - } - } - else - { - /* Screen width changes during active display (Golden Axe 3 intro, Ultraverse Prime) */ - /* should be applied on next frame since backend rendered framebuffer width is fixed */ - /* and can not be modified mid-frame. This is not 100% accurate but games generally */ - /* do this when the screen is blanked so it is likely unnoticeable. */ - bitmap.viewport.changed |= 2; - } - } - break; - } - - case 13: /* HScroll Base Address */ - { - reg[13] = d; - hscb = (d << 10) & 0xFC00; - break; - } - - case 16: /* Playfield size */ - { - reg[16] = d; - playfield_shift = shift_table[(d & 3)]; - playfield_col_mask = col_mask_table[(d & 3)]; - playfield_row_mask = row_mask_table[(d >> 4) & 3]; - break; - } - - case 17: /* Window/Plane A vertical clipping */ - { - reg[17] = d; - window_clip(d, reg[12] & 1); - break; - } - - default: - { - reg[r] = d; - break; - } - } -} - -/*--------------------------------------------------------------------------*/ -/* FIFO emulation (Mega Drive VDP specific) */ -/* ---------------------------------------- */ -/* */ -/* CPU access to VRAM, CRAM & VSRAM is limited during active display: */ -/* H32 mode -> 16 access per line */ -/* H40 mode -> 18 access per line */ -/* */ -/* with fixed access slots timings detailled below. */ -/* */ -/* Each VRAM access is byte wide, so one VRAM write (word) need two slots. */ -/* */ -/*--------------------------------------------------------------------------*/ - -static void vdp_fifo_update(unsigned int cycles) -{ - int fifo_read_cnt, line_slots = 0; - - /* number of access slots up to current line */ - int total_slots = dma_timing[0][reg[12] & 1] * ((v_counter + 1) % lines_per_frame); - - /* number of access slots within current line */ - cycles -= mcycles_vdp; - while (fifo_timing[line_slots] <= cycles) - { - line_slots++; - } - - /* number of processed FIFO entries since last access (byte access needs two slots to process one FIFO word) */ - fifo_read_cnt = (total_slots + line_slots - fifo_slots) >> fifo_byte_access; - - if (fifo_read_cnt > 0) - { - /* process FIFO entries */ - fifo_write_cnt -= fifo_read_cnt; - - /* Clear FIFO full flag */ - status &= 0xFEFF; - - if (fifo_write_cnt <= 0) - { - /* No more FIFO entries */ - fifo_write_cnt = 0; - - /* Set FIFO empty flag */ - status |= 0x200; - - /* Reinitialize FIFO access slot counter */ - fifo_slots = total_slots + line_slots; - } - else - { - /* Update FIFO access slot counter */ - fifo_slots += (fifo_read_cnt << fifo_byte_access); - } - } - - /* next FIFO update cycle */ - fifo_cycles = mcycles_vdp + fifo_timing[fifo_slots - total_slots + fifo_byte_access]; -} - - -/*--------------------------------------------------------------------------*/ -/* Internal 16-bit data bus access function (Mode 5 only) */ -/*--------------------------------------------------------------------------*/ -static void vdp_bus_w(unsigned int data) -{ - /* write data to next FIFO entry */ - fifo[fifo_idx] = data; - - /* increment FIFO write pointer */ - fifo_idx = (fifo_idx + 1) & 3; - - /* Check destination code (CD0-CD3) */ - switch (code & 0x0F) - { - case 0x01: /* VRAM */ - { - /* VRAM address */ - int index = addr & 0xFFFE; - - /* Pointer to VRAM */ - uint16 *p = (uint16 *)&vram[index]; - - /* Byte-swap data if A0 is set */ - if (addr & 1) - { - data = ((data >> 8) | (data << 8)) & 0xFFFF; - } - - /* Intercept writes to Sprite Attribute Table */ - if ((index & sat_base_mask) == satb) - { - /* Update internal SAT */ - *(uint16 *) &sat[index & sat_addr_mask] = data; - } - - /* Only write unique data to VRAM */ - if (data != *p) - { - int name; - - /* Write data to VRAM */ - *p = data; - - /* Update pattern cache */ - MARK_BG_DIRTY (index); - } - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_VRAM_W, 2, addr, data); -#endif - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - - case 0x03: /* CRAM */ - { - /* Pointer to CRAM 9-bit word */ - uint16 *p = (uint16 *)&cram[addr & 0x7E]; - - /* Pack 16-bit bus data (BBB0GGG0RRR0) to 9-bit CRAM data (BBBGGGRRR) */ - data = ((data & 0xE00) >> 3) | ((data & 0x0E0) >> 2) | ((data & 0x00E) >> 1); - - /* Check if CRAM data is being modified */ - if (data != *p) - { - /* CRAM index (64 words) */ - int index = (addr >> 1) & 0x3F; - - /* Write CRAM data */ - *p = data; - - /* Color entry 0 of each palette is never displayed (transparent pixel) */ - if (index & 0x0F) - { - /* Update color palette */ - color_update_m5(index, data); - } - - /* Update backdrop color */ - if (index == border) - { - color_update_m5(0x00, data); - } - - /* CRAM modified during HBLANK (Striker, Zero the Kamikaze, etc) */ - if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (m68k.cycles <= (mcycles_vdp + 860))) - { - /* Remap current line */ - remap_line(v_counter); - } - } - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_CRAM_W, 2, addr, data); -#endif - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] CRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - - case 0x05: /* VSRAM */ - { - *(uint16 *)&vsram[addr & 0x7E] = data; - - /* 2-cell Vscroll mode */ - if (reg[11] & 0x04) - { - /* VSRAM writes during HBLANK (Adventures of Batman & Robin) */ - if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (m68k.cycles <= (mcycles_vdp + 860))) - { - /* Redraw entire line */ - render_line(v_counter); - } - } - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_VSRAM_W, 2, addr, data); -#endif - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VSRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - - default: - { - /* add some delay until 68k periodical wait-states are accurately emulated ("Clue", "Microcosm") */ - m68k.cycles += 2; -#ifdef LOGERROR - error("[%d(%d)][%d(%d)] Invalid (%d) 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, code, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - } - - /* Increment address register */ - addr += reg[15]; -} - - -/*--------------------------------------------------------------------------*/ -/* 68k bus interface (Mega Drive VDP only) */ -/*--------------------------------------------------------------------------*/ - -static void vdp_68k_data_w_m4(unsigned int data) -{ - /* Clear pending flag */ - pending = 0; - - /* Restricted VDP writes during active display */ - if (!(status & 8) && (reg[1] & 0x40)) - { - /* Update VDP FIFO */ - vdp_fifo_update(m68k.cycles); - - /* Clear FIFO empty flag */ - status &= 0xFDFF; - - /* up to 4 words can be stored */ - if (fifo_write_cnt < 4) - { - /* Increment FIFO counter */ - fifo_write_cnt++; - - /* Set FIFO full flag if 4 words are stored */ - status |= ((fifo_write_cnt & 4) << 6); - } - else - { - /* CPU is halted until next FIFO entry processing */ - m68k.cycles = fifo_cycles; - - /* Update FIFO access slot counter */ - fifo_slots += (fifo_byte_access + 1); - } - } - - /* Check destination code */ - if (code & 0x02) - { - /* CRAM index (32 words) */ - int index = addr & 0x1F; - - /* Pointer to CRAM 9-bit word */ - uint16 *p = (uint16 *)&cram[index << 1]; - - /* Pack 16-bit data (xxx000BBGGRR) to 9-bit CRAM data (xxxBBGGRR) */ - data = ((data & 0xE00) >> 3) | (data & 0x3F); - - /* Check if CRAM data is being modified */ - if (data != *p) - { - /* Write CRAM data */ - *p = data; - - /* Update color palette */ - color_update_m4(index, data); - - /* Update backdrop color */ - if (index == (0x10 | (border & 0x0F))) - { - color_update_m4(0x40, data); - } - } - } - else - { - /* VRAM address (interleaved format) */ - int index = ((addr << 1) & 0x3FC) | ((addr & 0x200) >> 8) | (addr & 0x3C00); - - /* Pointer to VRAM */ - uint16 *p = (uint16 *)&vram[index]; - - /* Byte-swap data if A0 is set */ - if (addr & 1) - { - data = ((data >> 8) | (data << 8)) & 0xFFFF; - } - - /* Only write unique data to VRAM */ - if (data != *p) - { - int name; - - /* Write data to VRAM */ - *p = data; - - /* Update the pattern cache */ - MARK_BG_DIRTY (index); - } - } - - /* Increment address register (TODO: check how address is incremented in Mode 4) */ - addr += (reg[15] + 1); -} - -static void vdp_68k_data_w_m5(unsigned int data) -{ - /* Clear pending flag */ - pending = 0; - - /* Restricted VDP writes during active display */ - if (!(status & 8) && (reg[1] & 0x40)) - { - /* Update VDP FIFO */ - vdp_fifo_update(m68k.cycles); - - /* Clear FIFO empty flag */ - status &= 0xFDFF; - - /* up to 4 words can be stored */ - if (fifo_write_cnt < 4) - { - /* Increment FIFO counter */ - fifo_write_cnt++; - - /* Set FIFO full flag if 4 words are stored */ - status |= ((fifo_write_cnt & 4) << 6); - } - else - { - /* CPU is halted until next FIFO entry processing (Chaos Engine / Soldiers of Fortune, Double Clutch, Titan Overdrive Demo) */ - m68k.cycles = fifo_cycles; - - /* Update FIFO access slot counter */ - fifo_slots += (fifo_byte_access + 1); - } - } - - /* Write data */ - vdp_bus_w(data); - - /* Check if DMA Fill is pending */ - if (dmafill) - { - /* Clear DMA Fill pending flag */ - dmafill = 0; - - /* DMA length */ - dma_length = (reg[20] << 8) | reg[19]; - - /* Zero DMA length (pre-decrementing counter) */ - if (!dma_length) - { - dma_length = 0x10000; - } - - /* Trigger DMA */ - vdp_dma_update(m68k.cycles); - } -} - -static unsigned int vdp_68k_data_r_m4(void) -{ - /* VRAM address (interleaved format) */ - int index = ((addr << 1) & 0x3FC) | ((addr & 0x200) >> 8) | (addr & 0x3C00); - - /* Clear pending flag */ - pending = 0; - - /* Increment address register (TODO: check how address is incremented in Mode 4) */ - addr += (reg[15] + 1); - - /* Read VRAM data */ - return *(uint16 *) &vram[index]; -} - -static unsigned int vdp_68k_data_r_m5(void) -{ - uint16 data = 0; - - /* Clear pending flag */ - pending = 0; - - /* Check destination code (CD0-CD3) & CD4 */ - switch (code & 0x1F) - { - case 0x00: - { - /* read two bytes from VRAM */ - data = *(uint16 *)&vram[addr & 0xFFFE]; - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_VRAM_R, 2, addr, data); -#endif - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - - case 0x04: - { - /* VSRAM index */ - int index = addr & 0x7E; - - /* Check against VSRAM max size (80 x 11-bits) */ - if (index >= 0x50) - { - /* Wrap to address 0 (TODO: check if still true with Genesis 3 model) */ - index = 0; - } - - /* Read 11-bit word from VSRAM */ - data = *(uint16 *)&vsram[index] & 0x7FF; - - /* Unused bits are set using data from next available FIFO entry */ - data |= (fifo[fifo_idx] & ~0x7FF); - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_VSRAM_R, 2, addr, data); -#endif - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VSRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - - case 0x08: - { - /* Read 9-bit word from CRAM */ - data = *(uint16 *)&cram[addr & 0x7E]; - - /* Unpack 9-bit CRAM data (BBBGGGRRR) to 16-bit bus data (BBB0GGG0RRR0) */ - data = ((data & 0x1C0) << 3) | ((data & 0x038) << 2) | ((data & 0x007) << 1); - - /* Unused bits are set using data from next available FIFO entry */ - data |= (fifo[fifo_idx] & ~0xEEE); - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_CRAM_R, 2, addr, data); -#endif - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] CRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - - case 0x0c: /* undocumented 8-bit VRAM read */ - { - /* Read one byte from VRAM adjacent address */ - data = READ_BYTE(vram, addr ^ 1); - - /* Unused bits are set using data from next available FIFO entry */ - data |= (fifo[fifo_idx] & ~0xFF); - -#ifdef HOOK_CPU - if (cpu_hook) - cpu_hook(HOOK_VRAM_R, 2, addr, data); -#endif - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] 8-bit VRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - - default: - { - /* Invalid code value (normally locks VDP, hard reset required) */ -#ifdef LOGERROR - error("[%d(%d)][%d(%d)] Invalid (%d) 0x%x read (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, code, addr, m68k_get_reg(M68K_REG_PC)); -#endif - break; - } - } - - /* Increment address register */ - addr += reg[15]; - - /* Return data */ - return data; -} - - -/*--------------------------------------------------------------------------*/ -/* Z80 bus interface (Mega Drive VDP in Master System compatibility mode) */ -/*--------------------------------------------------------------------------*/ - -static void vdp_z80_data_w_m4(unsigned int data) -{ - /* Clear pending flag */ - pending = 0; - - /* Check destination code */ - if (code & 0x02) - { - /* CRAM index (32 words) */ - int index = addr & 0x1F; - - /* Pointer to CRAM word */ - uint16 *p = (uint16 *)&cram[index << 1]; - - /* Check if CRAM data is being modified */ - if (data != *p) - { - /* Write CRAM data */ - *p = data; - - /* Update color palette */ - color_update_m4(index, data); - - /* Update backdrop color */ - if (index == (0x10 | (border & 0x0F))) - { - color_update_m4(0x40, data); - } - } - } - else - { - /* VRAM address */ - int index = addr & 0x3FFF; - - /* Only write unique data to VRAM */ - if (data != vram[index]) - { - int name; - - /* Write data */ - vram[index] = data; - - /* Update pattern cache */ - MARK_BG_DIRTY(index); - } - } - - /* Increment address register (TODO: check how address is incremented in Mode 4) */ - addr += (reg[15] + 1); -} - -static void vdp_z80_data_w_m5(unsigned int data) -{ - /* Clear pending flag */ - pending = 0; - - /* Push byte into FIFO */ - fifo[fifo_idx] = data << 8; - fifo_idx = (fifo_idx + 1) & 3; - - /* Check destination code (CD0-CD3) */ - switch (code & 0x0F) - { - case 0x01: /* VRAM */ - { - /* VRAM address (write low byte to even address & high byte to odd address) */ - int index = addr ^ 1; - - /* Intercept writes to Sprite Attribute Table */ - if ((index & sat_base_mask) == satb) - { - /* Update internal SAT */ - WRITE_BYTE(sat, index & sat_addr_mask, data); - } - - /* Only write unique data to VRAM */ - if (data != READ_BYTE(vram, index)) - { - int name; - - /* Write data */ - WRITE_BYTE(vram, index, data); - - /* Update pattern cache */ - MARK_BG_DIRTY (index); - } - break; - } - - case 0x03: /* CRAM */ - { - /* Pointer to CRAM word */ - uint16 *p = (uint16 *)&cram[addr & 0x7E]; - - /* Pack 8-bit value into 9-bit CRAM data */ - if (addr & 1) - { - /* Write high byte (0000BBB0 -> BBBxxxxxx) */ - data = (*p & 0x3F) | ((data & 0x0E) << 5); - } - else - { - /* Write low byte (GGG0RRR0 -> xxxGGGRRR) */ - data = (*p & 0x1C0) | ((data & 0x0E) >> 1)| ((data & 0xE0) >> 2); - } - - /* Check if CRAM data is being modified */ - if (data != *p) - { - /* CRAM index (64 words) */ - int index = (addr >> 1) & 0x3F; - - /* Write CRAM data */ - *p = data; - - /* Color entry 0 of each palette is never displayed (transparent pixel) */ - if (index & 0x0F) - { - /* Update color palette */ - color_update_m5(index, data); - } - - /* Update backdrop color */ - if (index == border) - { - color_update_m5(0x00, data); - } - } - break; - } - - case 0x05: /* VSRAM */ - { - /* Write low byte to even address & high byte to odd address */ - WRITE_BYTE(vsram, (addr & 0x7F) ^ 1, data); - break; - } - } - - /* Increment address register */ - addr += reg[15]; - - /* Check if DMA Fill is pending */ - if (dmafill) - { - /* Clear DMA Fill pending flag */ - dmafill = 0; - - /* DMA length */ - dma_length = (reg[20] << 8) | reg[19]; - - /* Zero DMA length (pre-decrementing counter) */ - if (!dma_length) - { - dma_length = 0x10000; - } - - /* Trigger DMA */ - vdp_dma_update(Z80.cycles); - } -} - -static unsigned int vdp_z80_data_r_m4(void) -{ - /* Read buffer */ - unsigned int data = fifo[0]; - - /* Clear pending flag */ - pending = 0; - - /* Process next read */ - fifo[0] = vram[addr & 0x3FFF]; - - /* Increment address register (TODO: check how address is incremented with Mega Drive VDP in Mode 4) */ - addr += (reg[15] + 1); - - /* Return data */ - return data; -} - -static unsigned int vdp_z80_data_r_m5(void) -{ - unsigned int data = 0; - - /* Clear pending flag */ - pending = 0; - - /* Check destination code (CD0-CD3) & CD4 */ - switch (code & 0x1F) - { - case 0x00: /* VRAM */ - { - /* Return low byte from even address & high byte from odd address */ - data = READ_BYTE(vram, addr ^ 1); - break; - } - - case 0x04: /* VSRAM */ - { - /* Return low byte from even address & high byte from odd address */ - data = READ_BYTE(vsram, (addr & 0x7F) ^ 1); - break; - } - - case 0x08: /* CRAM */ - { - /* Read CRAM data */ - data = *(uint16 *)&cram[addr & 0x7E]; - - /* Unpack 9-bit CRAM data (BBBGGGRRR) to 16-bit data (BBB0GGG0RRR0) */ - data = ((data & 0x1C0) << 3) | ((data & 0x038) << 2) | ((data & 0x007) << 1); - - /* Return low byte from even address & high byte from odd address */ - if (addr & 1) - { - data = data >> 8; - } - - data &= 0xFF; - break; - } - } - - /* Increment address register */ - addr += reg[15]; - - /* Return data */ - return data; -} - - -/*-----------------------------------------------------------------------------*/ -/* Z80 bus interface (Master System, Game Gear & SG-1000 VDP) */ -/*-----------------------------------------------------------------------------*/ - -static void vdp_z80_data_w_ms(unsigned int data) -{ - /* Clear pending flag */ - pending = 0; - - if (code < 3) - { - int index; - - /* Check if we are already on next line */ - if ((Z80.cycles - mcycles_vdp) >= MCYCLES_PER_LINE) - { - /* update line counter */ - int line = (v_counter + 1) % lines_per_frame; - - /* check if we are within active display range */ - if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) - { - /* update VCounter to indicate next line has already been rendered */ - v_counter = line; - - /* render next line */ - render_line(line); - } - } - - /* VRAM address */ - index = addr & 0x3FFF; - - /* VRAM write */ - if (data != vram[index]) - { - int name; - vram[index] = data; - MARK_BG_DIRTY(index); - } - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, index, data, Z80.pc.w.l); -#endif - } - else - { - /* CRAM address */ - int index = addr & 0x1F; - - /* Pointer to CRAM word */ - uint16 *p = (uint16 *)&cram[index << 1]; - - /* Check if CRAM data is being modified */ - if (data != *p) - { - /* Write CRAM data */ - *p = data; - - /* Update color palette */ - color_update_m4(index, data); - - /* Update backdrop color */ - if (index == (0x10 | (border & 0x0F))) - { - color_update_m4(0x40, data); - } - } -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] CRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, addr, data, Z80.pc.w.l); -#endif - } - - /* Update read buffer */ - fifo[0] = data; - - /* Update address register */ - addr++; -} - -static void vdp_z80_data_w_gg(unsigned int data) -{ - /* Clear pending flag */ - pending = 0; - - if (code < 3) - { - int index; - - /* Check if we are already on next line */ - if ((Z80.cycles - mcycles_vdp) >= MCYCLES_PER_LINE) - { - /* update line counter */ - int line = (v_counter + 1) % lines_per_frame; - - /* check if we are within active display range */ - if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) - { - /* update VCounter to indicate next line has already been rendered */ - v_counter = line; - - /* render next line */ - render_line(line); - } - } - - /* VRAM address */ - index = addr & 0x3FFF; - - /* VRAM write */ - if (data != vram[index]) - { - int name; - vram[index] = data; - MARK_BG_DIRTY(index); - } -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, index, data, Z80.pc.w.l); -#endif - } - else - { - if (addr & 1) - { - /* Pointer to CRAM word */ - uint16 *p = (uint16 *)&cram[addr & 0x3E]; - - /* 12-bit data word */ - data = (data << 8) | cached_write; - - /* Check if CRAM data is being modified */ - if (data != *p) - { - /* Color index (0-31) */ - int index = (addr >> 1) & 0x1F; - - /* Write CRAM data */ - *p = data; - - /* Update color palette */ - color_update_m4(index, data); - - /* Update backdrop color */ - if (index == (0x10 | (border & 0x0F))) - { - color_update_m4(0x40, data); - } - } - } - else - { - /* Latch LSB */ - cached_write = data; - } -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] CRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, addr, data, Z80.pc.w.l); -#endif - } - - /* Update read buffer */ - fifo[0] = data; - - /* Update address register */ - addr++; -} - -static void vdp_z80_data_w_sg(unsigned int data) -{ - /* VRAM address */ - int index = addr & 0x3FFF; - - /* Clear pending flag */ - pending = 0; - - /* VRAM write */ - vram[index] = data; - - /* Update address register */ - addr++; - -#ifdef LOGVDP - error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, index, data, Z80.pc.w.l); -#endif -} - -/*--------------------------------------------------------------------------*/ -/* DMA operations (Mega Drive VDP only) */ -/*--------------------------------------------------------------------------*/ - -/* DMA from 68K bus: $000000-$7FFFFF (external area) */ -static void vdp_dma_68k_ext(unsigned int length) -{ - uint16 data; - - /* 68k bus source address */ - uint32 source = (reg[23] << 17) | (dma_src << 1); - - do - { - /* Read data word from 68k bus */ - if (m68k.memory_map[source>>16].read16) - { - data = m68k.memory_map[source>>16].read16(source); - } - else - { - data = *(uint16 *)(m68k.memory_map[source>>16].base + (source & 0xFFFF)); - } - - /* Increment source address */ - source += 2; - - /* 128k DMA window */ - source = (reg[23] << 17) | (source & 0x1FFFF); - - /* Write data word to VRAM, CRAM or VSRAM */ - vdp_bus_w(data); - } - while (--length); - - /* Update DMA source address */ - dma_src = (source >> 1) & 0xffff; -} - -/* DMA from 68K bus: $800000-$FFFFFF (internal area) except I/O area */ -static void vdp_dma_68k_ram(unsigned int length) -{ - uint16 data; - - /* 68k bus source address */ - uint32 source = (reg[23] << 17) | (dma_src << 1); - - do - { - /* access Work-RAM by default */ - data = *(uint16 *)(work_ram + (source & 0xFFFF)); - - /* Increment source address */ - source += 2; - - /* 128k DMA window */ - source = (reg[23] << 17) | (source & 0x1FFFF); - - /* Write data word to VRAM, CRAM or VSRAM */ - vdp_bus_w(data); - } - while (--length); - - /* Update DMA source address */ - dma_src = (source >> 1) & 0xffff; -} - -/* DMA from 68K bus: $A00000-$A1FFFF (I/O area) specific */ -static void vdp_dma_68k_io(unsigned int length) -{ - uint16 data; - - /* 68k bus source address */ - uint32 source = (reg[23] << 17) | (dma_src << 1); - - do - { - /* Z80 area */ - if (source <= 0xA0FFFF) - { - /* Return $FFFF only when the Z80 isn't hogging the Z-bus. - (e.g. Z80 isn't reset and 68000 has the bus) */ - data = ((zstate ^ 3) ? *(uint16 *)(work_ram + (source & 0xFFFF)) : 0xFFFF); - } - - /* The I/O chip and work RAM try to drive the data bus which results - in both values being combined in random ways when read. - We return the I/O chip values which seem to have precedence, */ - else if (source <= 0xA1001F) - { - data = io_68k_read((source >> 1) & 0x0F); - data = (data << 8 | data); - } - - /* All remaining locations access work RAM */ - else - { - data = *(uint16 *)(work_ram + (source & 0xFFFF)); - } - - /* Increment source address */ - source += 2; - - /* 128k DMA window */ - source = (reg[23] << 17) | (source & 0x1FFFF); - - /* Write data to VRAM, CRAM or VSRAM */ - vdp_bus_w(data); - } - while (--length); - - /* Update DMA source address */ - dma_src = (source >> 1) & 0xffff; -} - -/* VRAM Copy */ -static void vdp_dma_copy(unsigned int length) -{ - /* CD4 should be set (CD0-CD3 ignored) otherwise VDP locks (hard reset needed) */ - if (code & 0x10) - { - int name; - uint8 data; - - /* VRAM source address */ - uint16 source = dma_src; - - do - { - /* Read byte from adjacent VRAM source address */ - data = READ_BYTE(vram, source ^ 1); - - /* Intercept writes to Sprite Attribute Table */ - if ((addr & sat_base_mask) == satb) - { - /* Update internal SAT */ - WRITE_BYTE(sat, (addr & sat_addr_mask) ^ 1, data); - } - - /* Write byte to adjacent VRAM destination address */ - WRITE_BYTE(vram, addr ^ 1, data); - - /* Update pattern cache */ - MARK_BG_DIRTY(addr); - - /* Increment VRAM source address */ - source++; - - /* Increment VRAM destination address */ - addr += reg[15]; - } - while (--length); - - /* Update DMA source address */ - dma_src = source; - } -} - -/* DMA Fill */ -static void vdp_dma_fill(unsigned int length) -{ - /* Check destination code (CD0-CD3) */ - switch (code & 0x0F) - { - case 0x01: /* VRAM */ - { - int name; - - /* Get source data from last written FIFO entry */ - uint8 data = fifo[(fifo_idx+3)&3] >> 8; - - do - { - /* Intercept writes to Sprite Attribute Table */ - if ((addr & sat_base_mask) == satb) - { - /* Update internal SAT */ - WRITE_BYTE(sat, (addr & sat_addr_mask) ^ 1, data); - } - - /* Write byte to adjacent VRAM address */ - WRITE_BYTE(vram, addr ^ 1, data); - - /* Update pattern cache */ - MARK_BG_DIRTY (addr); - - /* Increment VRAM address */ - addr += reg[15]; - } - while (--length); - break; - } - - case 0x03: /* CRAM */ - { - /* Get source data from next available FIFO entry */ - uint16 data = fifo[fifo_idx]; - - /* Pack 16-bit bus data (BBB0GGG0RRR0) to 9-bit CRAM data (BBBGGGRRR) */ - data = ((data & 0xE00) >> 3) | ((data & 0x0E0) >> 2) | ((data & 0x00E) >> 1); - - do - { - /* Pointer to CRAM 9-bit word */ - uint16 *p = (uint16 *)&cram[addr & 0x7E]; - - /* Check if CRAM data is being modified */ - if (data != *p) - { - /* CRAM index (64 words) */ - int index = (addr >> 1) & 0x3F; - - /* Write CRAM data */ - *p = data; - - /* Color entry 0 of each palette is never displayed (transparent pixel) */ - if (index & 0x0F) - { - /* Update color palette */ - color_update_m5(index, data); - } - - /* Update backdrop color */ - if (index == border) - { - color_update_m5(0x00, data); - } - } - - /* Increment CRAM address */ - addr += reg[15]; - } - while (--length); - break; - } - - case 0x05: /* VSRAM */ - { - /* Get source data from next available FIFO entry */ - uint16 data = fifo[fifo_idx]; - - do - { - /* Write VSRAM data */ - *(uint16 *)&vsram[addr & 0x7E] = data; - - /* Increment VSRAM address */ - addr += reg[15]; - } - while (--length); - break; - } - - default: - { - /* invalid destination does nothing (Williams Greatest Hits after soft reset) */ - - /* address is still incremented */ - addr += reg[15] * length; - } - } -} +/*************************************************************************************** + * Genesis Plus + * Video Display Processor (68k & Z80 CPU interface) + * + * Support for SG-1000 (TMS99xx & 315-5066), Master System (315-5124 & 315-5246), Game Gear & Mega Drive VDP + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "hvc.h" + +/* Mark a pattern as modified */ +#define MARK_BG_DIRTY(addr) \ +{ \ + name = (addr >> 5) & 0x7FF; \ + if (bg_name_dirty[name] == 0) \ + { \ + bg_name_list[bg_list_index++] = name; \ + } \ + bg_name_dirty[name] |= (1 << ((addr >> 2) & 7)); \ +} + +/* VDP context */ +uint8 ALIGNED_(4) sat[0x400]; /* Internal copy of sprite attribute table */ +uint8 ALIGNED_(4) vram[0x10000]; /* Video RAM (64K x 8-bit) */ +uint8 ALIGNED_(4) cram[0x80]; /* On-chip color RAM (64 x 9-bit) */ +uint8 ALIGNED_(4) vsram[0x80]; /* On-chip vertical scroll RAM (40 x 11-bit) */ +uint8 reg[0x20]; /* Internal VDP registers (23 x 8-bit) */ +uint8 hint_pending; /* 0= Line interrupt is pending */ +uint8 vint_pending; /* 1= Frame interrupt is pending */ +uint16 status; /* VDP status flags */ +uint32 dma_length; /* DMA remaining length */ + +/* Global variables */ +uint16 ntab; /* Name table A base address */ +uint16 ntbb; /* Name table B base address */ +uint16 ntwb; /* Name table W base address */ +uint16 satb; /* Sprite attribute table base address */ +uint16 hscb; /* Horizontal scroll table base address */ +uint8 bg_name_dirty[0x800]; /* 1= This pattern is dirty */ +uint16 bg_name_list[0x800]; /* List of modified pattern indices */ +uint16 bg_list_index; /* # of modified patterns in list */ +uint8 hscroll_mask; /* Horizontal Scrolling line mask */ +uint8 playfield_shift; /* Width of planes A, B (in bits) */ +uint8 playfield_col_mask; /* Playfield column mask */ +uint16 playfield_row_mask; /* Playfield row mask */ +uint16 vscroll; /* Latched vertical scroll value */ +uint8 odd_frame; /* 1: odd field, 0: even field */ +uint8 im2_flag; /* 1= Interlace mode 2 is being used */ +uint8 interlaced; /* 1: Interlaced mode 1 or 2 */ +uint8 vdp_pal; /* 1: PAL , 0: NTSC (default) */ +uint8 h_counter; /* Horizontal counter */ +uint16 v_counter; /* Vertical counter */ +uint16 vc_max; /* Vertical counter overflow value */ +uint16 lines_per_frame; /* PAL: 313 lines, NTSC: 262 lines */ +uint16 max_sprite_pixels; /* Max. sprites pixels per line (parsing & rendering) */ +int32 fifo_write_cnt; /* VDP FIFO write count */ +uint32 fifo_slots; /* VDP FIFO access slot count */ +uint32 hvc_latch; /* latched HV counter */ +const uint8 *hctab; /* pointer to H Counter table */ + +/* Function pointers */ +void (*vdp_68k_data_w)(unsigned int data); +void (*vdp_z80_data_w)(unsigned int data); +unsigned int (*vdp_68k_data_r)(void); +unsigned int (*vdp_z80_data_r)(void); + +/* Function prototypes */ +static void vdp_68k_data_w_m4(unsigned int data); +static void vdp_68k_data_w_m5(unsigned int data); +static unsigned int vdp_68k_data_r_m4(void); +static unsigned int vdp_68k_data_r_m5(void); +static void vdp_z80_data_w_m4(unsigned int data); +static void vdp_z80_data_w_m5(unsigned int data); +static unsigned int vdp_z80_data_r_m4(void); +static unsigned int vdp_z80_data_r_m5(void); +static void vdp_z80_data_w_ms(unsigned int data); +static void vdp_z80_data_w_gg(unsigned int data); +static void vdp_z80_data_w_sg(unsigned int data); +static void vdp_bus_w(unsigned int data); +static void vdp_fifo_update(unsigned int cycles); +static void vdp_reg_w(unsigned int r, unsigned int d, unsigned int cycles); +static void vdp_dma_68k_ext(unsigned int length); +static void vdp_dma_68k_ram(unsigned int length); +static void vdp_dma_68k_io(unsigned int length); +static void vdp_dma_copy(unsigned int length); +static void vdp_dma_fill(unsigned int length); + +/* Tables that define the playfield layout */ +static const uint8 hscroll_mask_table[] = { 0x00, 0x07, 0xF8, 0xFF }; +static const uint8 shift_table[] = { 6, 7, 0, 8 }; +static const uint8 col_mask_table[] = { 0x0F, 0x1F, 0x0F, 0x3F }; +static const uint16 row_mask_table[] = { 0x0FF, 0x1FF, 0x2FF, 0x3FF }; + +static uint8 border; /* Border color index */ +static uint8 pending; /* Pending write flag */ +static uint8 code; /* Code register */ +static uint8 dma_type; /* DMA mode */ +static uint16 addr; /* Address register */ +static uint16 addr_latch; /* Latched A15, A14 of address */ +static uint16 sat_base_mask; /* Base bits of SAT */ +static uint16 sat_addr_mask; /* Index bits of SAT */ +static uint16 dma_src; /* DMA source address */ +static uint32 dma_endCycles; /* 68k cycles to DMA end */ +static int dmafill; /* DMA Fill pending flag */ +static int cached_write; /* 2nd part of 32-bit CTRL port write (Genesis mode) or LSB of CRAM data (Game Gear mode) */ +static uint16 fifo[4]; /* FIFO ring-buffer */ +static int fifo_idx; /* FIFO write index */ +static int fifo_byte_access; /* FIFO byte access flag */ +static uint32 fifo_cycles; /* FIFO next access cycle */ +static int *fifo_timing; /* FIFO slots timing table */ + + /* set Z80 or 68k interrupt lines */ +static void (*set_irq_line)(unsigned int level); +static void (*set_irq_line_delay)(unsigned int level); + +/* Vertical counter overflow values (see hvc.h) */ +static const uint16 vc_table[4][2] = +{ + /* NTSC, PAL */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0xEA , 0x102}, /* Mode 5 (224 lines) */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0x106, 0x10A} /* Mode 5 (240 lines) */ +}; + +/* FIFO access slots timings */ +static const int fifo_timing_h32[16+4] = +{ + 230, 510, 810, 970, 1130, 1450, 1610, 1770, 2090, 2250, 2410, 2730, 2890, 3050, 3350, 3370, + MCYCLES_PER_LINE + 230, MCYCLES_PER_LINE + 510, MCYCLES_PER_LINE + 810, MCYCLES_PER_LINE + 970, +}; + +static const int fifo_timing_h40[18+4] = +{ + 352, 820, 948, 1076, 1332, 1460, 1588, 1844, 1972, 2100, 2356, 2484, 2612, 2868, 2996, 3124, 3364, 3380, + MCYCLES_PER_LINE + 352, MCYCLES_PER_LINE + 820, MCYCLES_PER_LINE + 948, MCYCLES_PER_LINE + 1076, +}; + +/* DMA Timings (number of access slots per line) */ +static const uint8 dma_timing[2][2] = +{ +/* H32, H40 */ + {16 , 18}, /* active display */ + {166, 204} /* blank display */ +}; + +/* DMA processing functions (set by VDP register 23 high nibble) */ +static void (*const dma_func[16])(unsigned int length) = +{ + /* 0x0-0x3 : DMA from 68k bus $000000-$7FFFFF (external area) */ + vdp_dma_68k_ext,vdp_dma_68k_ext,vdp_dma_68k_ext,vdp_dma_68k_ext, + + /* 0x4-0x7 : DMA from 68k bus $800000-$FFFFFF (internal RAM & I/O) */ + vdp_dma_68k_ram, vdp_dma_68k_io,vdp_dma_68k_ram,vdp_dma_68k_ram, + + /* 0x8-0xB : DMA Fill */ + vdp_dma_fill,vdp_dma_fill,vdp_dma_fill,vdp_dma_fill, + + /* 0xC-0xF : DMA Copy */ + vdp_dma_copy,vdp_dma_copy,vdp_dma_copy,vdp_dma_copy +}; + +/* BG rendering functions */ +static void (*const render_bg_modes[16])(int line) = +{ + render_bg_m0, /* Graphics I */ + render_bg_m2, /* Graphics II */ + render_bg_m4, /* Mode 4 */ + render_bg_m4, /* Mode 4 */ + render_bg_m3, /* Multicolor */ + render_bg_m3x, /* Multicolor (Extended PG) */ + render_bg_m4, /* Mode 4 */ + render_bg_m4, /* Mode 4 */ + render_bg_m1, /* Text */ + render_bg_m1x, /* Text (Extended PG) */ + render_bg_m4, /* Mode 4 */ + render_bg_m4, /* Mode 4 */ + render_bg_inv, /* Invalid (1+3) */ + render_bg_inv, /* Invalid (1+2+3) */ + render_bg_m4, /* Mode 4 */ + render_bg_m4, /* Mode 4 */ +}; + +/*--------------------------------------------------------------------------*/ +/* Init, reset, context functions */ +/*--------------------------------------------------------------------------*/ + +void vdp_init(void) +{ + /* PAL/NTSC timings */ + lines_per_frame = vdp_pal ? 313: 262; + + /* CPU interrupt line(s)*/ + if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + /* 68k cpu */ + set_irq_line = m68k_set_irq; + set_irq_line_delay = m68k_set_irq_delay; + } + else + { + /* Z80 cpu */ + set_irq_line = z80_set_irq_line; + set_irq_line_delay = z80_set_irq_line; + } +} + +void vdp_reset(void) +{ + int i; + + memset ((char *) sat, 0, sizeof (sat)); + memset ((char *) vram, 0, sizeof (vram)); + memset ((char *) cram, 0, sizeof (cram)); + memset ((char *) vsram, 0, sizeof (vsram)); + memset ((char *) reg, 0, sizeof (reg)); + + addr = 0; + addr_latch = 0; + code = 0; + pending = 0; + border = 0; + hint_pending = 0; + vint_pending = 0; + dmafill = 0; + dma_src = 0; + dma_type = 0; + dma_length = 0; + dma_endCycles = 0; + odd_frame = 0; + im2_flag = 0; + interlaced = 0; + fifo_write_cnt = 0; + fifo_cycles = 0; + fifo_slots = 0; + fifo_idx = 0; + cached_write = -1; + fifo_byte_access = 1; + + ntab = 0; + ntbb = 0; + ntwb = 0; + satb = 0; + hscb = 0; + + vscroll = 0; + + hscroll_mask = 0x00; + playfield_shift = 6; + playfield_col_mask = 0x0F; + playfield_row_mask = 0x0FF; + sat_base_mask = 0xFE00; + sat_addr_mask = 0x01FF; + + /* reset pattern cache changes */ + bg_list_index = 0; + memset ((char *) bg_name_dirty, 0, sizeof (bg_name_dirty)); + memset ((char *) bg_name_list, 0, sizeof (bg_name_list)); + + /* default Window clipping */ + window_clip(0,0); + + /* reset VDP status (FIFO empty flag is set) */ + if (system_hw & SYSTEM_MD) + { + status = vdp_pal | 0x200; + } + else + { + status = 0; + } + + /* default display area */ + bitmap.viewport.w = 256; + bitmap.viewport.h = 192; + bitmap.viewport.ow = 256; + bitmap.viewport.oh = 192; + + /* default HVC */ + hvc_latch = 0x10000; + hctab = cycle2hc32; + vc_max = vc_table[0][vdp_pal]; + v_counter = bitmap.viewport.h; + h_counter = 0xff; + + /* default sprite pixel width */ + max_sprite_pixels = 256; + + /* default FIFO access slots timings */ + fifo_timing = (int *)fifo_timing_h32; + + /* default overscan area */ + if ((system_hw == SYSTEM_GG) && !config.gg_extra) + { + /* Display area reduced to 160x144 if overscan is disabled */ + bitmap.viewport.x = (config.overscan & 2) ? 14 : -48; + bitmap.viewport.y = (config.overscan & 1) ? (24 * (vdp_pal + 1)) : -24; + } + else + { + bitmap.viewport.x = (config.overscan & 2) * 7; + bitmap.viewport.y = (config.overscan & 1) * 24 * (vdp_pal + 1); + } + + /* default rendering mode */ + update_bg_pattern_cache = update_bg_pattern_cache_m4; + if (system_hw < SYSTEM_MD) + { + /* Mode 0 */ + render_bg = render_bg_m0; + render_obj = render_obj_tms; + parse_satb = parse_satb_tms; + } + else + { + /* Mode 4 */ + render_bg = render_bg_m4; + render_obj = render_obj_m4; + parse_satb = parse_satb_m4; + } + + /* default 68k bus interface (Mega Drive VDP only) */ + vdp_68k_data_w = vdp_68k_data_w_m4; + vdp_68k_data_r = vdp_68k_data_r_m4; + + /* default Z80 bus interface */ + switch (system_hw) + { + case SYSTEM_SG: + case SYSTEM_SGII: + { + /* SG-1000 (TMS99xx) or SG-1000 II (315-5066) VDP */ + vdp_z80_data_w = vdp_z80_data_w_sg; + vdp_z80_data_r = vdp_z80_data_r_m4; + break; + } + + case SYSTEM_GG: + { + /* Game Gear VDP */ + vdp_z80_data_w = vdp_z80_data_w_gg; + vdp_z80_data_r = vdp_z80_data_r_m4; + break; + } + + case SYSTEM_MARKIII: + case SYSTEM_SMS: + case SYSTEM_SMS2: + case SYSTEM_GGMS: + { + /* Master System or Game Gear (in MS compatibility mode) VDP */ + vdp_z80_data_w = vdp_z80_data_w_ms; + vdp_z80_data_r = vdp_z80_data_r_m4; + break; + } + + default: + { + /* Mega Drive VDP (in MS compatibility mode) */ + vdp_z80_data_w = vdp_z80_data_w_m4; + vdp_z80_data_r = vdp_z80_data_r_m4; + break; + } + } + + /* H-INT is disabled on startup (verified on VA4 MD1 with 315-5313 VDP) */ + reg[10] = 0xFF; + + /* Master System specific */ + if ((system_hw & SYSTEM_SMS) && (!(config.bios & 1) || !(system_bios & SYSTEM_SMS))) + { + /* force registers initialization (normally done by BOOT ROM on all Master System models) */ + vdp_reg_w(0 , 0x36, 0); + vdp_reg_w(1 , 0x80, 0); + vdp_reg_w(2 , 0xFF, 0); + vdp_reg_w(3 , 0xFF, 0); + vdp_reg_w(4 , 0xFF, 0); + vdp_reg_w(5 , 0xFF, 0); + vdp_reg_w(6 , 0xFF, 0); + + /* Mode 4 */ + render_bg = render_bg_m4; + render_obj = render_obj_m4; + parse_satb = parse_satb_m4; + } + + /* Mega Drive specific */ + else if (((system_hw == SYSTEM_MD) || (system_hw == SYSTEM_MCD)) && (config.bios & 1) && !(system_bios & SYSTEM_MD)) + { + /* force registers initialization (normally done by BOOT ROM, only on Mega Drive model with TMSS) */ + vdp_reg_w(0 , 0x04, 0); + vdp_reg_w(1 , 0x04, 0); + vdp_reg_w(12, 0x81, 0); + vdp_reg_w(15, 0x02, 0); + } + + /* reset color palette */ + for(i = 0; i < 0x20; i ++) + { + color_update_m4(i, 0x00); + } + color_update_m4(0x40, 0x00); +} + +int vdp_context_save(uint8 *state) +{ + int bufferptr = 0; + + save_param(sat, sizeof(sat)); + save_param(vram, sizeof(vram)); + save_param(cram, sizeof(cram)); + save_param(vsram, sizeof(vsram)); + save_param(reg, sizeof(reg)); + save_param(&addr, sizeof(addr)); + save_param(&addr_latch, sizeof(addr_latch)); + save_param(&code, sizeof(code)); + save_param(&pending, sizeof(pending)); + save_param(&status, sizeof(status)); + save_param(&dmafill, sizeof(dmafill)); + save_param(&fifo_idx, sizeof(fifo_idx)); + save_param(&fifo, sizeof(fifo)); + save_param(&h_counter, sizeof(h_counter)); + save_param(&hint_pending, sizeof(hint_pending)); + save_param(&vint_pending, sizeof(vint_pending)); + save_param(&dma_length, sizeof(dma_length)); + save_param(&dma_type, sizeof(dma_type)); + save_param(&dma_src, sizeof(dma_src)); + save_param(&cached_write, sizeof(cached_write)); + return bufferptr; +} + +int vdp_context_load(uint8 *state) +{ + int i, bufferptr = 0; + uint8 temp_reg[0x20]; + + load_param(sat, sizeof(sat)); + load_param(vram, sizeof(vram)); + load_param(cram, sizeof(cram)); + load_param(vsram, sizeof(vsram)); + load_param(temp_reg, sizeof(temp_reg)); + + /* restore VDP registers */ + if (system_hw < SYSTEM_MD) + { + if (system_hw >= SYSTEM_MARKIII) + { + for (i=0;i<0x10;i++) + { + pending = 1; + addr_latch = temp_reg[i]; + vdp_sms_ctrl_w(0x80 | i); + } + } + else + { + /* TMS-99xx registers are updated directly to prevent spurious 4K->16K VRAM switching */ + for (i=0;i<0x08;i++) + { + reg[i] = temp_reg[i]; + } + + /* Rendering mode */ + render_bg = render_bg_modes[((reg[0] & 0x02) | (reg[1] & 0x18)) >> 1]; + } + } + else + { + for (i=0;i<0x20;i++) + { + vdp_reg_w(i, temp_reg[i], 0); + } + } + + load_param(&addr, sizeof(addr)); + load_param(&addr_latch, sizeof(addr_latch)); + load_param(&code, sizeof(code)); + load_param(&pending, sizeof(pending)); + load_param(&status, sizeof(status)); + load_param(&dmafill, sizeof(dmafill)); + load_param(&fifo_idx, sizeof(fifo_idx)); + load_param(&fifo, sizeof(fifo)); + load_param(&h_counter, sizeof(h_counter)); + load_param(&hint_pending, sizeof(hint_pending)); + load_param(&vint_pending, sizeof(vint_pending)); + load_param(&dma_length, sizeof(dma_length)); + load_param(&dma_type, sizeof(dma_type)); + load_param(&dma_src, sizeof(dma_src)); + load_param(&cached_write, sizeof(cached_write)); + + /* restore FIFO byte access flag */ + fifo_byte_access = ((code & 0x0F) < 0x03); + + /* restore current NTSC/PAL mode */ + if (system_hw & SYSTEM_MD) + { + status = (status & ~1) | vdp_pal; + } + + if (reg[1] & 0x04) + { + /* Mode 5 */ + bg_list_index = 0x800; + + /* reinitialize palette */ + color_update_m5(0, *(uint16 *)&cram[border << 1]); + for(i = 1; i < 0x40; i++) + { + color_update_m5(i, *(uint16 *)&cram[i << 1]); + } + } + else + { + /* Modes 0,1,2,3,4 */ + bg_list_index = 0x200; + + /* reinitialize palette */ + for(i = 0; i < 0x20; i ++) + { + color_update_m4(i, *(uint16 *)&cram[i << 1]); + } + color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); + } + + /* invalidate tile cache */ + for (i=0;i VDP 32-cell Active 16 + Blanking 166 + 40-cell Active 18 + Blanking 204 + VRAM Fill 32-cell Active 15 + Blanking 165 + 40-cell Active 17 + Blanking 203 + VRAM Copy 32-cell Active 8 + Blanking 83 + 40-cell Active 9 + Blanking 102 + + 'Active' is the active display period, 'Blanking' is either the vertical + blanking period or when the display is forcibly blanked via register #1. + + The above transfer counts are all in bytes, unless the destination is + CRAM or VSRAM for a 68K > VDP transfer, in which case it is in words. + */ + unsigned int rate = dma_timing[(status & 8) || !(reg[1] & 0x40)][reg[12] & 1]; + + /* Adjust for 68k bus DMA to VRAM (one word = 2 access) or DMA Copy (one read + one write = 2 access) */ + rate = rate >> (dma_type & 1); + + /* Remaining DMA cycles */ + if (status & 8) + { + /* Process DMA until the end of VBLANK */ + /* NOTE: DMA timings can not change during VBLANK because active display width cannot be modified. */ + /* Indeed, writing VDP registers during DMA is either impossible (when doing DMA from 68k bus, CPU */ + /* is locked) or will abort DMA operation (in case of DMA Fill or Copy). */ + dma_cycles = ((lines_per_frame - bitmap.viewport.h - 1) * MCYCLES_PER_LINE) - cycles; + } + else + { + /* Process DMA until the end of current line */ + dma_cycles = (mcycles_vdp + MCYCLES_PER_LINE) - cycles; + } + + /* Remaining DMA bytes for that line */ + dma_bytes = (dma_cycles * rate) / MCYCLES_PER_LINE; + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] DMA type %d (%d access/line)(%d cycles left)-> %d access (%d remaining) (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE,dma_type, rate, dma_cycles, dma_bytes, dma_length, m68k_get_reg(M68K_REG_PC)); +#endif + + /* Check if DMA can be finished before the end of current line */ + if (dma_length < dma_bytes) + { + /* Adjust remaining DMA bytes */ + dma_bytes = dma_length; + dma_cycles = (dma_bytes * MCYCLES_PER_LINE) / rate; + } + + /* Update DMA timings */ + if (dma_type < 2) + { + /* 68K is frozen during DMA from 68k bus */ + m68k.cycles = cycles + dma_cycles; +#ifdef LOGVDP + error("-->CPU frozen for %d cycles\n", dma_cycles); +#endif + } + else + { + /* Set DMA Busy flag */ + status |= 0x02; + + /* 68K is still running, set DMA end cycle */ + dma_endCycles = cycles + dma_cycles; +#ifdef LOGVDP + error("-->DMA ends in %d cycles\n", dma_cycles); +#endif + } + + /* Process DMA */ + if (dma_bytes) + { + /* Update DMA length */ + dma_length -= dma_bytes; + + /* Process DMA operation */ + dma_func[reg[23] >> 4](dma_bytes); + + /* Check if DMA is finished */ + if (!dma_length) + { + /* DMA source address registers are incremented during DMA (even DMA Fill) */ + uint16 end = reg[21] + (reg[22] << 8) + reg[19] + (reg[20] << 8); + reg[21] = end & 0xff; + reg[22] = end >> 8; + + /* DMA length registers are decremented during DMA */ + reg[19] = reg[20] = 0; + + /* perform cached write, if any */ + if (cached_write >= 0) + { + vdp_68k_ctrl_w(cached_write); + cached_write = -1; + } + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* Control port access functions */ +/*--------------------------------------------------------------------------*/ + +void vdp_68k_ctrl_w(unsigned int data) +{ + /* Check pending flag */ + if (pending == 0) + { + /* A single long word write instruction could have started DMA with the first word */ + if (dma_length) + { + /* 68k is frozen during 68k bus DMA */ + /* Second word should be written after DMA completion */ + /* See Formula One & Kawasaki Superbike Challenge */ + if (dma_type < 2) + { + /* Latch second control word for later */ + cached_write = data; + return; + } + } + + /* Check CD0-CD1 bits */ + if ((data & 0xC000) == 0x8000) + { + /* VDP register write */ + vdp_reg_w((data >> 8) & 0x1F, data & 0xFF, m68k.cycles); + } + else + { + /* Set pending flag (Mode 5 only) */ + pending = reg[1] & 4; + } + + /* Update address and code registers */ + addr = addr_latch | (data & 0x3FFF); + code = ((code & 0x3C) | ((data >> 14) & 0x03)); + } + else + { + /* Clear pending flag */ + pending = 0; + + /* Save address bits A15 and A14 */ + addr_latch = (data & 3) << 14; + + /* Update address and code registers */ + addr = addr_latch | (addr & 0x3FFF); + code = ((code & 0x03) | ((data >> 2) & 0x3C)); + + /* Detect DMA operation (CD5 bit set) */ + if (code & 0x20) + { + /* DMA must be enabled */ + if (reg[1] & 0x10) + { + /* DMA type */ + switch (reg[23] >> 6) + { + case 2: + { + /* DMA Fill */ + dma_type = 2; + + /* DMA is pending until next DATA port write */ + dmafill = 1; + + /* Set DMA Busy flag */ + status |= 0x02; + + /* DMA end cycle is not initialized yet (this prevents DMA Busy flag from being cleared on VDP status read) */ + dma_endCycles = 0xffffffff; + break; + } + + case 3: + { + /* DMA Copy */ + dma_type = 3; + + /* DMA length */ + dma_length = (reg[20] << 8) | reg[19]; + + /* Zero DMA length (pre-decrementing counter) */ + if (!dma_length) + { + dma_length = 0x10000; + } + + /* DMA source address */ + dma_src = (reg[22] << 8) | reg[21]; + + /* Trigger DMA */ + vdp_dma_update(m68k.cycles); + break; + } + + default: + { + /* DMA from 68k bus */ + dma_type = (code & 0x06) ? 0 : 1; + + /* DMA length */ + dma_length = (reg[20] << 8) | reg[19]; + + /* Zero DMA length (pre-decrementing counter) */ + if (!dma_length) + { + dma_length = 0x10000; + } + + /* DMA source address */ + dma_src = (reg[22] << 8) | reg[21]; + + /* Transfer from SVP ROM/RAM ($000000-$3fffff) or CD Word-RAM ($200000-$3fffff/$600000-$7fffff) */ + if (((system_hw == SYSTEM_MCD) && ((reg[23] & 0x70) == ((scd.cartridge.boot >> 1) + 0x10))) || (svp && !(reg[23] & 0x60))) + { + /* source data is available with one cycle delay, i.e first word written by VDP is */ + /* previous data being held on 68k bus at that time, then source words are written */ + /* normally to VDP RAM, with only last source word being ignored */ + addr += reg[15]; + dma_length--; + } + + /* Trigger DMA */ + vdp_dma_update(m68k.cycles); + break; + } + } + } + } + } + + /* + FIFO emulation (Chaos Engine/Soldier of Fortune, Double Clutch, Sol Deace) + -------------------------------------------------------------------------- + Each VRAM access is byte wide, so one VRAM write (word) need two slot access. + + NOTE: Invalid code 0x02 (register write) should not behave the same as VRAM + access, i.e data is ignored and only one access slot is used for each word, + BUT a few games ("Clue", "Microcosm") which accidentally corrupt code value + will have issues when emulating FIFO timings. They likely work fine on real + hardware because of periodical 68k wait-states which have been observed and + would naturaly add some delay between writes. Until those wait-states are + accurately measured and emulated, delay is forced when invalid code value + is being used. + */ + fifo_byte_access = ((code & 0x0F) <= 0x02); +} + +/* Mega Drive VDP control port specific (MS compatibility mode) */ +void vdp_z80_ctrl_w(unsigned int data) +{ + switch (pending) + { + case 0: + { + /* Latch LSB */ + addr_latch = data; + + /* Set LSB pending flag */ + pending = 1; + return; + } + + case 1: + { + /* Update address and code registers */ + addr = (addr & 0xC000) | ((data & 0x3F) << 8) | addr_latch ; + code = ((code & 0x3C) | ((data >> 6) & 0x03)); + + if ((code & 0x03) == 0x02) + { + /* VDP register write */ + vdp_reg_w(data & 0x1F, addr_latch, Z80.cycles); + + /* Clear pending flag */ + pending = 0; + return; + } + + /* Set Mode 5 pending flag */ + pending = (reg[1] & 4) >> 1; + + if (!pending && !(code & 0x03)) + { + /* Process VRAM read */ + fifo[0] = vram[addr & 0x3FFF]; + + /* Increment address register */ + addr += (reg[15] + 1); + } + return; + } + + case 2: + { + /* Latch LSB */ + addr_latch = data; + + /* Set LSB pending flag */ + pending = 3; + return; + } + + case 3: + { + /* Clear pending flag */ + pending = 0; + + /* Update address and code registers */ + addr = ((addr_latch & 3) << 14) | (addr & 0x3FFF); + code = ((code & 0x03) | ((addr_latch >> 2) & 0x3C)); + + /* Detect DMA operation (CD5 bit set) */ + if (code & 0x20) + { + /* DMA should be enabled */ + if (reg[1] & 0x10) + { + /* DMA type */ + switch (reg[23] >> 6) + { + case 2: + { + /* DMA Fill */ + dma_type = 2; + + /* DMA is pending until next DATA port write */ + dmafill = 1; + + /* Set DMA Busy flag */ + status |= 0x02; + + /* DMA end cycle is not initialized yet (this prevents DMA Busy flag from being cleared on VDP status read) */ + dma_endCycles = 0xffffffff; + break; + } + + case 3: + { + /* DMA copy */ + dma_type = 3; + + /* DMA length */ + dma_length = (reg[20] << 8) | reg[19]; + + /* Zero DMA length (pre-decrementing counter) */ + if (!dma_length) + { + dma_length = 0x10000; + } + + /* DMA source address */ + dma_src = (reg[22] << 8) | reg[21]; + + /* Trigger DMA */ + vdp_dma_update(Z80.cycles); + break; + } + + default: + { + /* DMA from 68k bus does not work when Z80 is in control */ + break; + } + } + } + } + } + return; + } +} + +/* Master System & Game Gear VDP control port specific */ +void vdp_sms_ctrl_w(unsigned int data) +{ + if (pending == 0) + { + /* Update address register LSB */ + addr = (addr & 0x3F00) | (data & 0xFF); + + /* Latch LSB */ + addr_latch = data; + + /* Set LSB pending flag */ + pending = 1; + } + else + { + /* Update address and code registers */ + code = (data >> 6) & 3; + addr = (data << 8 | addr_latch) & 0x3FFF; + + /* Clear pending flag */ + pending = 0; + + if (code == 0) + { + /* Process VRAM read */ + fifo[0] = vram[addr & 0x3FFF]; + + /* Increment address register */ + addr = (addr + 1) & 0x3FFF; + return; + } + + if (code == 2) + { + /* Save current VDP mode */ + int mode, prev = (reg[0] & 0x06) | (reg[1] & 0x18); + + /* Write VDP register 0-15 */ + vdp_reg_w(data & 0x0F, addr_latch, Z80.cycles); + + /* Check VDP mode changes */ + mode = (reg[0] & 0x06) | (reg[1] & 0x18); + prev ^= mode; + + if (prev) + { + /* Check for extended modes */ + if (system_hw > SYSTEM_SMS) + { + int height; + + if (mode == 0x0E) /* M1=0,M2=1,M3=1,M4=1 */ + { + /* Mode 4 extended (240 lines) */ + height = 240; + + /* Update vertical counter max value */ + vc_max = vc_table[3][vdp_pal]; + } + else if (mode == 0x16) /* M1=1,M2=1,M3=0,M4=1 */ + { + /* Mode 4 extended (224 lines) */ + height = 224; + + /* Update vertical counter max value */ + vc_max = vc_table[1][vdp_pal]; + } + else + { + /* Mode 4 default (224 lines) */ + height = 192; + + /* Default vertical counter max value */ + vc_max = vc_table[0][vdp_pal]; + } + + /* viewport changes should be applied on next frame */ + if (height != bitmap.viewport.h) + { + bitmap.viewport.changed |= 2; + } + } + + /* Rendering mode */ + render_bg = render_bg_modes[mode>>1]; + + /* Mode switching */ + if (prev & 0x04) + { + int i; + + if (mode & 0x04) + { + /* Mode 4 sprites */ + parse_satb = parse_satb_m4; + render_obj = render_obj_m4; + + /* force BG cache update*/ + bg_list_index = 0x200; + } + else + { + /* TMS-mode sprites */ + parse_satb = parse_satb_tms; + render_obj = render_obj_tms; + + /* BG cache is not used */ + bg_list_index = 0; + } + + /* reinitialize palette */ + for(i = 0; i < 0x20; i ++) + { + color_update_m4(i, *(uint16 *)&cram[i << 1]); + } + color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); + } + } + } + } +} + +/* SG-1000 VDP (TMS99xx) control port specific */ +void vdp_tms_ctrl_w(unsigned int data) +{ + if (pending == 0) + { + /* Latch LSB */ + addr_latch = data; + + /* Set LSB pending flag */ + pending = 1; + } + else + { + /* Update address and code registers */ + code = (data >> 6) & 3; + addr = (data << 8 | addr_latch) & 0x3FFF; + + /* Clear pending flag */ + pending = 0; + + if (code == 0) + { + /* Process VRAM read */ + fifo[0] = vram[addr & 0x3FFF]; + + /* Increment address register */ + addr = (addr + 1) & 0x3FFF; + return; + } + + if (code & 2) + { + /* VDP register index (0-7) */ + data &= 0x07; + + /* Write VDP register */ + vdp_reg_w(data, addr_latch, Z80.cycles); + + /* Check VDP mode changes */ + if (data < 2) + { + /* Rendering mode */ + render_bg = render_bg_modes[((reg[0] & 0x02) | (reg[1] & 0x18)) >> 1]; + } + } + } +} + + /* + * Status register + * + * Bits + * 0 NTSC(0)/PAL(1) + * 1 DMA Busy + * 2 During HBlank + * 3 During VBlank + * 4 0:1 even:odd field (interlaced modes only) + * 5 Sprite collision + * 6 Too many sprites per line + * 7 v interrupt occurred + * 8 Write FIFO full + * 9 Write FIFO empty + * 10 - 15 Open Bus + */ +unsigned int vdp_68k_ctrl_r(unsigned int cycles) +{ + unsigned int temp; + + /* Cycle-accurate VDP status read (adjust CPU time with current instruction execution time) */ + cycles += m68k_cycles(); + + /* Update FIFO status flags if not empty */ + if (fifo_write_cnt) + { + vdp_fifo_update(cycles); + } + + /* Check if DMA Busy flag is set */ + if (status & 2) + { + /* Check if DMA is finished */ + if (!dma_length && (cycles >= dma_endCycles)) + { + /* Clear DMA Busy flag */ + status &= 0xFFFD; + } + } + + /* Return VDP status */ + temp = status; + + /* Clear pending flag */ + pending = 0; + + /* Clear SOVR & SCOL flags */ + status &= 0xFF9F; + + /* VBLANK flag is set when display is disabled */ + if (!(reg[1] & 0x40)) + { + temp |= 0x08; + } + + /* Cycle-accurate VINT flag (Ex-Mutants, Tyrant / Mega-Lo-Mania, Marvel Land) */ + /* this allows VINT flag to be read just before vertical interrupt is being triggered */ + if ((v_counter == bitmap.viewport.h) && (cycles >= (mcycles_vdp + 788))) + { + /* check Z80 interrupt state to assure VINT has not already been triggered (and flag cleared) */ + if (Z80.irq_state != ASSERT_LINE) + { + temp |= 0x80; + } + } + + /* Cycle-accurate HBLANK flag (Sonic 3 & Sonic 2 "VS Modes", Bugs Bunny Double Trouble, Lemmings 2, Mega Turrican, V.R Troopers, Gouketsuji Ichizoku,...) */ + /* NB: this is not 100% accurate (see hvc.h for horizontal events timings in H32 and H40 mode) but is close enough to make no noticeable difference for games */ + if ((cycles % MCYCLES_PER_LINE) < 588) + { + temp |= 0x04; + } + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VDP 68k status read -> 0x%x (0x%x) (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, temp, status, m68k_get_reg(M68K_REG_PC)); +#endif + return (temp); +} + +unsigned int vdp_z80_ctrl_r(unsigned int cycles) +{ + unsigned int temp; + + /* Check if DMA busy flag is set (Mega Drive VDP specific) */ + if (status & 2) + { + /* Check if DMA is finished */ + if (!dma_length && (cycles >= dma_endCycles)) + { + /* Clear DMA Busy flag */ + status &= 0xFD; + } + } + + /* Check if we are already on next line */ + if ((cycles - mcycles_vdp) >= MCYCLES_PER_LINE) + { + /* check vertical position */ + if (v_counter == bitmap.viewport.h) + { + /* update VCounter to indicate VINT flag has been cleared & VINT should not be triggered */ + v_counter++; + + /* cycle-accurate VINT flag (immediately cleared after being read) */ + status |= 0x80; + } + else + { + /* update line counter */ + int line = (v_counter + 1) % lines_per_frame; + + /* check if we are within active display range */ + if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) + { + /* update VCounter to indicate next line has already been rendered */ + v_counter = line; + + /* render next line (cycle-accurate SCOL & SOVR flags) */ + render_line(line); + } + } + } + + /* Return VDP status */ + temp = status; + + /* Clear pending flag */ + pending = 0; + + /* Clear VINT, SOVR & SCOL flags */ + status &= 0xFF1F; + + /* Mega Drive VDP specific */ + if (system_hw & SYSTEM_MD) + { + /* Display OFF: VBLANK flag is set */ + if (!(reg[1] & 0x40)) + { + temp |= 0x08; + } + + /* HBLANK flag */ + if ((cycles % MCYCLES_PER_LINE) < 588) + { + temp |= 0x04; + } + } + else if (reg[0] & 0x04) + { + /* Mode 4 unused bits (fixes PGA Tour Golf) */ + temp |= 0x1F; + } + + /* Cycle-accurate SCOL flag */ + if ((temp & 0x20) && (v_counter == (spr_col >> 8))) + { + if (system_hw & SYSTEM_MD) + { + /* COL flag is set at HCount 0xFF on MD */ + if ((cycles % MCYCLES_PER_LINE) < 105) + { + status |= 0x20; + temp &= ~0x20; + } + } + else + { + /* COL flag is set at the pixel it occurs */ + uint8 hc = hctab[(cycles + SMS_CYCLE_OFFSET + 15) % MCYCLES_PER_LINE]; + if ((hc < (spr_col & 0xff)) || (hc > 0xf3)) + { + status |= 0x20; + temp &= ~0x20; + } + } + } + + /* Clear HINT & VINT pending flags */ + hint_pending = vint_pending = 0; + + /* Clear Z80 interrupt */ + Z80.irq_state = CLEAR_LINE; + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VDP Z80 status read -> 0x%x (0x%x) (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, temp, status, Z80.pc.w.l); +#endif + return (temp); +} + +/*--------------------------------------------------------------------------*/ +/* HV Counters */ +/*--------------------------------------------------------------------------*/ + +unsigned int vdp_hvc_r(unsigned int cycles) +{ + int vc; + unsigned int data = hvc_latch; + + /* Check if HVC latch is enabled */ + if (data) + { + /* Mode 5: HV counters are frozen (cf. lightgun games, Sunset Riders logo) */ + if (reg[1] & 0x04) + { +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] HVC latch read -> 0x%x (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, data & 0xffff, m68k_get_reg(M68K_REG_PC)); +#endif + /* return latched HVC value */ + return (data & 0xffff); + } + else + { + /* Mode 4: by default, VCounter runs normally & HCounter is frozen */ + data &= 0xff; + } + } + else + { + /* Cycle-accurate HCounter (Striker, Mickey Mania, Skitchin, Road Rash I,II,III, Sonic 3D Blast...) */ + data = hctab[cycles % MCYCLES_PER_LINE]; + } + + /* Cycle-accurate VCounter */ + vc = v_counter; + if ((cycles - mcycles_vdp) >= MCYCLES_PER_LINE) + { + vc = (vc + 1) % lines_per_frame; + } + + /* VCounter overflow */ + if (vc > vc_max) + { + vc -= lines_per_frame; + } + + /* Interlaced modes */ + if (interlaced) + { + /* Interlace mode 2 (Sonic the Hedgehog 2, Combat Cars) */ + vc <<= im2_flag; + + /* Replace bit 0 with bit 8 */ + vc = (vc & ~1) | ((vc >> 8) & 1); + } + + /* return HCounter in LSB & VCounter in MSB */ + data |= ((vc & 0xff) << 8); + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] HVC read -> 0x%x (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, data, m68k_get_reg(M68K_REG_PC)); +#endif + return (data); +} + + +/*--------------------------------------------------------------------------*/ +/* Test registers */ +/*--------------------------------------------------------------------------*/ + +void vdp_test_w(unsigned int data) +{ +#ifdef LOGERROR + error("Unused VDP Write 0x%x (%08x)\n", data, m68k_get_reg(M68K_REG_PC)); +#endif +} + + +/*--------------------------------------------------------------------------*/ +/* 68k interrupt handler (TODO: check how interrupts are handled in Mode 4) */ +/*--------------------------------------------------------------------------*/ + +int vdp_68k_irq_ack(int int_level) +{ +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] INT Level %d ack (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE,int_level, m68k_get_reg(M68K_REG_PC)); +#endif + + /* VINT has higher priority (Fatal Rewind) */ + if (reg[1] & vint_pending) + { +#ifdef LOGVDP + error("---> VINT cleared\n"); +#endif + + /* Clear VINT pending flag */ + vint_pending = 0; + status &= ~0x80; + + /* Update IRQ status */ + if (reg[0] & hint_pending) + { + m68k_set_irq(4); + } + else + { + m68k_set_irq(0); + } + } + else + { +#ifdef LOGVDP + error("---> HINT cleared\n"); +#endif + + /* Clear HINT pending flag */ + hint_pending = 0; + + /* Update IRQ status */ + m68k_set_irq(0); + } + + return M68K_INT_ACK_AUTOVECTOR; +} + + +/*--------------------------------------------------------------------------*/ +/* VDP registers update function */ +/*--------------------------------------------------------------------------*/ + +static void vdp_reg_w(unsigned int r, unsigned int d, unsigned int cycles) +{ +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VDP register %d write -> 0x%x (%x)\n", v_counter, (v_counter + (cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, cycles, cycles%MCYCLES_PER_LINE, r, d, m68k_get_reg(M68K_REG_PC)); +#endif + + /* VDP registers #11 to #23 cannot be updated in Mode 4 (Captain Planet & Avengers, Bass Master Classic Pro Edition) */ + if (!(reg[1] & 4) && (r > 10)) + { + return; + } + + switch(r) + { + case 0: /* CTRL #1 */ + { + /* Look for changed bits */ + r = d ^ reg[0]; + reg[0] = d; + + /* Line Interrupt */ + if (r & hint_pending) + { + /* Update IRQ status */ + if (reg[1] & vint_pending) + { + set_irq_line(6); + } + else if (d & 0x10) + { + set_irq_line_delay(4); + } + else + { + set_irq_line(0); + } + } + + /* Palette selection */ + if (r & 0x04) + { + /* Mega Drive VDP only */ + if (system_hw & SYSTEM_MD) + { + /* Reset color palette */ + int i; + if (reg[1] & 0x04) + { + /* Mode 5 */ + color_update_m5(0x00, *(uint16 *)&cram[border << 1]); + for (i = 1; i < 0x40; i++) + { + color_update_m5(i, *(uint16 *)&cram[i << 1]); + } + } + else + { + /* Mode 4 */ + for (i = 0; i < 0x20; i++) + { + color_update_m4(i, *(uint16 *)&cram[i << 1]); + } + color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); + } + } + } + + /* HVC latch (Sunset Riders, Lightgun games) */ + if (r & 0x02) + { + /* Mega Drive VDP only */ + if (system_hw & SYSTEM_MD) + { + /* Mode 5 only */ + if (reg[1] & 0x04) + { + if (d & 0x02) + { + /* Latch current HVC */ + hvc_latch = vdp_hvc_r(cycles) | 0x10000; + } + else + { + /* Free-running HVC */ + hvc_latch = 0; + } + } + } + } + break; + } + + case 1: /* CTRL #2 */ + { + /* Look for changed bits */ + r = d ^ reg[1]; + reg[1] = d; + + /* 4K/16K address decoding */ + if (r & 0x80) + { + /* original TMS99xx hardware only (fixes Magical Kid Wiz) */ + if (system_hw == SYSTEM_SG) + { + int i; + + /* make temporary copy of 16KB VRAM */ + memcpy(vram + 0x4000, vram, 0x4000); + + /* re-arrange 16KB VRAM address decoding */ + if (d & 0x80) + { + /* 4K->16K address decoding */ + for (i=0; i<0x4000; i+=2) + { + *(uint16 *)(vram + ((i & 0x203F) | ((i << 6) & 0x1000) | ((i >> 1) & 0xFC0))) = *(uint16 *)(vram + 0x4000 + i); + } + } + else + { + /* 16K->4K address decoding */ + for (i=0; i<0x4000; i+=2) + { + *(uint16 *)(vram + ((i & 0x203F) | ((i >> 6) & 0x40) | ((i << 1) & 0x1F80))) = *(uint16 *)(vram + 0x4000 + i); + } + } + } + } + + /* Display status (modified during active display) */ + if ((r & 0x40) && (v_counter < bitmap.viewport.h)) + { + /* Cycle offset vs HBLANK */ + int offset = cycles - mcycles_vdp; + if (offset <= 860) + { + /* Sprite rendering is limited if display was disabled during HBLANK (Mickey Mania 3d level, Overdrive Demo) */ + if (d & 0x40) + { + /* NB: This is not 100% accurate. On real hardware, the maximal number of rendered sprites pixels */ + /* for the current line (normally 256 or 320 pixels) but also the maximal number of pre-processed */ + /* sprites for the next line (normally 64 or 80 sprites) are both reduced depending on the amount */ + /* of cycles spent with display disabled. Here we only reduce them by a fixed amount when display */ + /* has been reenabled after a specific point within HBLANK. */ + if (offset > 360) + { + max_sprite_pixels = 128; + } + } + + /* Redraw entire line (Legend of Galahad, Lemmings 2, Formula One, Kawasaki Super Bike, Deadly Moves,...) */ + render_line(v_counter); + + /* Restore default */ + max_sprite_pixels = 256 + ((reg[12] & 1) << 6); + } + else if (system_hw & SYSTEM_MD) + { + /* Active pixel offset */ + if (reg[12] & 1) + { + /* dot clock = MCLK / 8 */ + offset = ((offset - 860) / 8) + 16; + } + else + { + /* dot clock = MCLK / 10 */ + offset = ((offset - 860) / 10) + 16; + } + + /* Line is partially blanked (Nigel Mansell's World Championship Racing , Ren & Stimpy Show, ...) */ + if (offset < bitmap.viewport.w) + { + if (d & 0x40) + { + render_line(v_counter); + blank_line(v_counter, 0, offset); + } + else + { + blank_line(v_counter, offset, bitmap.viewport.w - offset); + } + } + } + } + + /* Frame Interrupt */ + if (r & vint_pending) + { + /* Update IRQ status */ + if (d & 0x20) + { + set_irq_line_delay(6); + } + else if (reg[0] & hint_pending) + { + set_irq_line(4); + } + else + { + set_irq_line(0); + } + } + + /* Active display height */ + if (r & 0x08) + { + /* Mega Drive VDP only */ + if (system_hw & SYSTEM_MD) + { + /* Mode 5 only */ + if (d & 0x04) + { + /* Changes should be applied on next frame */ + bitmap.viewport.changed |= 2; + + /* Update vertical counter max value */ + vc_max = vc_table[(d >> 2) & 3][vdp_pal]; + } + } + } + + /* Rendering mode */ + if (r & 0x04) + { + /* Mega Drive VDP only */ + if (system_hw & SYSTEM_MD) + { + int i; + if (d & 0x04) + { + /* Mode 5 rendering */ + parse_satb = parse_satb_m5; + update_bg_pattern_cache = update_bg_pattern_cache_m5; + if (im2_flag) + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_im2_vs : render_bg_m5_im2; + render_obj = (reg[12] & 0x08) ? render_obj_m5_im2_ste : render_obj_m5_im2; + } + else + { + render_bg = (reg[11] & 0x04) ? render_bg_m5_vs : render_bg_m5; + render_obj = (reg[12] & 0x08) ? render_obj_m5_ste : render_obj_m5; + } + + /* Reset color palette */ + color_update_m5(0x00, *(uint16 *)&cram[border << 1]); + for (i = 1; i < 0x40; i++) + { + color_update_m5(i, *(uint16 *)&cram[i << 1]); + } + + /* Mode 5 bus access */ + vdp_68k_data_w = vdp_68k_data_w_m5; + vdp_z80_data_w = vdp_z80_data_w_m5; + vdp_68k_data_r = vdp_68k_data_r_m5; + vdp_z80_data_r = vdp_z80_data_r_m5; + + /* Clear HVC latched value */ + hvc_latch = 0; + + /* Check if HVC latch bit is set */ + if (reg[0] & 0x02) + { + /* Latch current HVC */ + hvc_latch = vdp_hvc_r(cycles) | 0x10000; + } + + /* max tiles to invalidate */ + bg_list_index = 0x800; + } + else + { + /* Mode 4 rendering */ + parse_satb = parse_satb_m4; + update_bg_pattern_cache = update_bg_pattern_cache_m4; + render_bg = render_bg_m4; + render_obj = render_obj_m4; + + /* Reset color palette */ + for (i = 0; i < 0x20; i++) + { + color_update_m4(i, *(uint16 *)&cram[i << 1]); + } + color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (border & 0x0F)) << 1]); + + /* Mode 4 bus access */ + vdp_68k_data_w = vdp_68k_data_w_m4; + vdp_z80_data_w = vdp_z80_data_w_m4; + vdp_68k_data_r = vdp_68k_data_r_m4; + vdp_z80_data_r = vdp_z80_data_r_m4; + + /* Latch current HVC */ + hvc_latch = vdp_hvc_r(cycles) | 0x10000; + + /* max tiles to invalidate */ + bg_list_index = 0x200; + } + + /* Invalidate pattern cache */ + for (i=0;i> 2) & 3][vdp_pal]; + + /* Display height change should be applied on next frame */ + bitmap.viewport.changed |= 2; + } + else + { + /* No effect (cleared to avoid mode 5 detection elsewhere) */ + reg[1] &= ~0x04; + } + } + break; + } + + case 2: /* Plane A Name Table Base */ + { + reg[2] = d; + ntab = (d << 10) & 0xE000; + + /* Plane A Name Table Base changed during HBLANK */ + if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (cycles <= (mcycles_vdp + 860))) + { + /* render entire line */ + render_line(v_counter); + } + break; + } + + case 3: /* Window Plane Name Table Base */ + { + reg[3] = d; + if (reg[12] & 0x01) + { + ntwb = (d << 10) & 0xF000; + } + else + { + ntwb = (d << 10) & 0xF800; + } + + /* Window Plane Name Table Base changed during HBLANK */ + if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (cycles <= (mcycles_vdp + 860))) + { + /* render entire line */ + render_line(v_counter); + } + break; + } + + case 4: /* Plane B Name Table Base */ + { + reg[4] = d; + ntbb = (d << 13) & 0xE000; + + /* Plane B Name Table Base changed during HBLANK (Adventures of Batman & Robin) */ + if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (cycles <= (mcycles_vdp + 860))) + { + /* render entire line */ + render_line(v_counter); + } + + break; + } + + case 5: /* Sprite Attribute Table Base */ + { + reg[5] = d; + satb = (d << 9) & sat_base_mask; + break; + } + + case 7: /* Backdrop color */ + { + reg[7] = d; + + /* Check if backdrop color changed */ + d &= 0x3F; + + if (d != border) + { + /* Update backdrop color */ + border = d; + + /* Reset palette entry */ + if (reg[1] & 4) + { + /* Mode 5 */ + color_update_m5(0x00, *(uint16 *)&cram[d << 1]); + } + else + { + /* Mode 4 */ + color_update_m4(0x40, *(uint16 *)&cram[(0x10 | (d & 0x0F)) << 1]); + } + + /* Backdrop color modified during HBLANK (Road Rash 1,2,3)*/ + if ((v_counter < bitmap.viewport.h) && (cycles <= (mcycles_vdp + 860))) + { + /* remap entire line */ + remap_line(v_counter); + } + } + break; + } + + case 8: /* Horizontal Scroll (Mode 4 only) */ + { + /* H-Scroll is latched at HCount 0xF3, HCount 0xF6 on MD */ + /* Line starts at HCount 0xF4, HCount 0xF6 on MD */ + if (system_hw < SYSTEM_MD) + { + cycles = cycles + 15; + } + + /* Check if H-Scroll has already been latched */ + if ((cycles - mcycles_vdp) >= MCYCLES_PER_LINE) + { + /* update line counter */ + int line = (v_counter + 1) % lines_per_frame; + + /* check if we are within active display range */ + if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) + { + /* update VCounter to indicate next line has already been rendered */ + v_counter = line; + + /* render next line before updating H-Scroll */ + render_line(line); + } + } + + reg[8] = d; + break; + } + + case 11: /* CTRL #3 */ + { + reg[11] = d; + + /* Horizontal scrolling mode */ + hscroll_mask = hscroll_mask_table[d & 0x03]; + + /* Vertical Scrolling mode */ + if (d & 0x04) + { + render_bg = im2_flag ? render_bg_m5_im2_vs : render_bg_m5_vs; + } + else + { + render_bg = im2_flag ? render_bg_m5_im2 : render_bg_m5; + } + break; + } + + case 12: /* CTRL #4 */ + { + /* Look for changed bits */ + r = d ^ reg[12]; + reg[12] = d; + + /* Shadow & Highlight mode */ + if (r & 0x08) + { + /* Reset color palette */ + int i; + color_update_m5(0x00, *(uint16 *)&cram[border << 1]); + for (i = 1; i < 0x40; i++) + { + color_update_m5(i, *(uint16 *)&cram[i << 1]); + } + + /* Update sprite rendering function */ + if (d & 0x08) + { + render_obj = im2_flag ? render_obj_m5_im2_ste : render_obj_m5_ste; + } + else + { + render_obj = im2_flag ? render_obj_m5_im2 : render_obj_m5; + } + } + + /* Interlaced modes */ + if (r & 0x06) + { + /* changes should be applied on next frame */ + bitmap.viewport.changed |= 2; + } + + /* Active display width */ + if (r & 0x01) + { + /* FIFO access slots timings depend on active width */ + if (fifo_slots) + { + /* Synchronize VDP FIFO */ + vdp_fifo_update(cycles); + } + + if (d & 0x01) + { + /* Update display-dependant registers */ + ntwb = (reg[3] << 10) & 0xF000; + satb = (reg[5] << 9) & 0xFC00; + sat_base_mask = 0xFC00; + sat_addr_mask = 0x03FF; + + /* Update HC table */ + hctab = cycle2hc40; + + /* Update clipping */ + window_clip(reg[17], 1); + + /* Update max sprite pixels per line*/ + max_sprite_pixels = 320; + + /* FIFO access slots timings */ + fifo_timing = (int *)fifo_timing_h40; + } + else + { + /* Update display-dependant registers */ + ntwb = (reg[3] << 10) & 0xF800; + satb = (reg[5] << 9) & 0xFE00; + sat_base_mask = 0xFE00; + sat_addr_mask = 0x01FF; + + /* Update HC table */ + hctab = cycle2hc32; + + /* Update clipping */ + window_clip(reg[17], 0); + + /* Update max sprite pixels per line*/ + max_sprite_pixels = 256; + + /* FIFO access slots timings */ + fifo_timing = (int *)fifo_timing_h32; + } + + /* Active screen width modified during VBLANK will be applied on upcoming frame */ + if (v_counter >= bitmap.viewport.h) + { + bitmap.viewport.w = max_sprite_pixels; + } + + /* Allow active screen width to be modified during first two lines (Bugs Bunny in Double Trouble) */ + else if (v_counter <= 1) + { + bitmap.viewport.w = max_sprite_pixels; + + /* Redraw lines */ + render_line(0); + if (v_counter) + { + render_line(1); + } + } + else + { + /* Screen width changes during active display (Golden Axe 3 intro, Ultraverse Prime) */ + /* should be applied on next frame since backend rendered framebuffer width is fixed */ + /* and can not be modified mid-frame. This is not 100% accurate but games generally */ + /* do this when the screen is blanked so it is likely unnoticeable. */ + bitmap.viewport.changed |= 2; + } + } + break; + } + + case 13: /* HScroll Base Address */ + { + reg[13] = d; + hscb = (d << 10) & 0xFC00; + break; + } + + case 16: /* Playfield size */ + { + reg[16] = d; + playfield_shift = shift_table[(d & 3)]; + playfield_col_mask = col_mask_table[(d & 3)]; + playfield_row_mask = row_mask_table[(d >> 4) & 3]; + break; + } + + case 17: /* Window/Plane A vertical clipping */ + { + reg[17] = d; + window_clip(d, reg[12] & 1); + break; + } + + default: + { + reg[r] = d; + break; + } + } +} + +/*--------------------------------------------------------------------------*/ +/* FIFO emulation (Mega Drive VDP specific) */ +/* ---------------------------------------- */ +/* */ +/* CPU access to VRAM, CRAM & VSRAM is limited during active display: */ +/* H32 mode -> 16 access per line */ +/* H40 mode -> 18 access per line */ +/* */ +/* with fixed access slots timings detailled below. */ +/* */ +/* Each VRAM access is byte wide, so one VRAM write (word) need two slots. */ +/* */ +/*--------------------------------------------------------------------------*/ + +static void vdp_fifo_update(unsigned int cycles) +{ + int fifo_read_cnt, line_slots = 0; + + /* number of access slots up to current line */ + int total_slots = dma_timing[0][reg[12] & 1] * ((v_counter + 1) % lines_per_frame); + + /* number of access slots within current line */ + cycles -= mcycles_vdp; + while (fifo_timing[line_slots] <= cycles) + { + line_slots++; + } + + /* number of processed FIFO entries since last access (byte access needs two slots to process one FIFO word) */ + fifo_read_cnt = (total_slots + line_slots - fifo_slots) >> fifo_byte_access; + + if (fifo_read_cnt > 0) + { + /* process FIFO entries */ + fifo_write_cnt -= fifo_read_cnt; + + /* Clear FIFO full flag */ + status &= 0xFEFF; + + if (fifo_write_cnt <= 0) + { + /* No more FIFO entries */ + fifo_write_cnt = 0; + + /* Set FIFO empty flag */ + status |= 0x200; + + /* Reinitialize FIFO access slot counter */ + fifo_slots = total_slots + line_slots; + } + else + { + /* Update FIFO access slot counter */ + fifo_slots += (fifo_read_cnt << fifo_byte_access); + } + } + + /* next FIFO update cycle */ + fifo_cycles = mcycles_vdp + fifo_timing[fifo_slots - total_slots + fifo_byte_access]; +} + + +/*--------------------------------------------------------------------------*/ +/* Internal 16-bit data bus access function (Mode 5 only) */ +/*--------------------------------------------------------------------------*/ +static void vdp_bus_w(unsigned int data) +{ + /* write data to next FIFO entry */ + fifo[fifo_idx] = data; + + /* increment FIFO write pointer */ + fifo_idx = (fifo_idx + 1) & 3; + + /* Check destination code (CD0-CD3) */ + switch (code & 0x0F) + { + case 0x01: /* VRAM */ + { + /* VRAM address */ + int index = addr & 0xFFFE; + + /* Pointer to VRAM */ + uint16 *p = (uint16 *)&vram[index]; + + /* Byte-swap data if A0 is set */ + if (addr & 1) + { + data = ((data >> 8) | (data << 8)) & 0xFFFF; + } + + /* Intercept writes to Sprite Attribute Table */ + if ((index & sat_base_mask) == satb) + { + /* Update internal SAT */ + *(uint16 *) &sat[index & sat_addr_mask] = data; + } + + /* Only write unique data to VRAM */ + if (data != *p) + { + int name; + + /* Write data to VRAM */ + *p = data; + + /* Update pattern cache */ + MARK_BG_DIRTY (index); + } + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_VRAM_W, 2, addr, data); +#endif + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + + case 0x03: /* CRAM */ + { + /* Pointer to CRAM 9-bit word */ + uint16 *p = (uint16 *)&cram[addr & 0x7E]; + + /* Pack 16-bit bus data (BBB0GGG0RRR0) to 9-bit CRAM data (BBBGGGRRR) */ + data = ((data & 0xE00) >> 3) | ((data & 0x0E0) >> 2) | ((data & 0x00E) >> 1); + + /* Check if CRAM data is being modified */ + if (data != *p) + { + /* CRAM index (64 words) */ + int index = (addr >> 1) & 0x3F; + + /* Write CRAM data */ + *p = data; + + /* Color entry 0 of each palette is never displayed (transparent pixel) */ + if (index & 0x0F) + { + /* Update color palette */ + color_update_m5(index, data); + } + + /* Update backdrop color */ + if (index == border) + { + color_update_m5(0x00, data); + } + + /* CRAM modified during HBLANK (Striker, Zero the Kamikaze, etc) */ + if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (m68k.cycles <= (mcycles_vdp + 860))) + { + /* Remap current line */ + remap_line(v_counter); + } + } + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_CRAM_W, 2, addr, data); +#endif + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] CRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + + case 0x05: /* VSRAM */ + { + *(uint16 *)&vsram[addr & 0x7E] = data; + + /* 2-cell Vscroll mode */ + if (reg[11] & 0x04) + { + /* VSRAM writes during HBLANK (Adventures of Batman & Robin) */ + if ((v_counter < bitmap.viewport.h) && (reg[1] & 0x40) && (m68k.cycles <= (mcycles_vdp + 860))) + { + /* Redraw entire line */ + render_line(v_counter); + } + } + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_VSRAM_W, 2, addr, data); +#endif + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VSRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + + default: + { + /* add some delay until 68k periodical wait-states are accurately emulated ("Clue", "Microcosm") */ + m68k.cycles += 2; +#ifdef LOGERROR + error("[%d(%d)][%d(%d)] Invalid (%d) 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, code, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + } + + /* Increment address register */ + addr += reg[15]; +} + + +/*--------------------------------------------------------------------------*/ +/* 68k bus interface (Mega Drive VDP only) */ +/*--------------------------------------------------------------------------*/ + +static void vdp_68k_data_w_m4(unsigned int data) +{ + /* Clear pending flag */ + pending = 0; + + /* Restricted VDP writes during active display */ + if (!(status & 8) && (reg[1] & 0x40)) + { + /* Update VDP FIFO */ + vdp_fifo_update(m68k.cycles); + + /* Clear FIFO empty flag */ + status &= 0xFDFF; + + /* up to 4 words can be stored */ + if (fifo_write_cnt < 4) + { + /* Increment FIFO counter */ + fifo_write_cnt++; + + /* Set FIFO full flag if 4 words are stored */ + status |= ((fifo_write_cnt & 4) << 6); + } + else + { + /* CPU is halted until next FIFO entry processing */ + m68k.cycles = fifo_cycles; + + /* Update FIFO access slot counter */ + fifo_slots += (fifo_byte_access + 1); + } + } + + /* Check destination code */ + if (code & 0x02) + { + /* CRAM index (32 words) */ + int index = addr & 0x1F; + + /* Pointer to CRAM 9-bit word */ + uint16 *p = (uint16 *)&cram[index << 1]; + + /* Pack 16-bit data (xxx000BBGGRR) to 9-bit CRAM data (xxxBBGGRR) */ + data = ((data & 0xE00) >> 3) | (data & 0x3F); + + /* Check if CRAM data is being modified */ + if (data != *p) + { + /* Write CRAM data */ + *p = data; + + /* Update color palette */ + color_update_m4(index, data); + + /* Update backdrop color */ + if (index == (0x10 | (border & 0x0F))) + { + color_update_m4(0x40, data); + } + } + } + else + { + /* VRAM address (interleaved format) */ + int index = ((addr << 1) & 0x3FC) | ((addr & 0x200) >> 8) | (addr & 0x3C00); + + /* Pointer to VRAM */ + uint16 *p = (uint16 *)&vram[index]; + + /* Byte-swap data if A0 is set */ + if (addr & 1) + { + data = ((data >> 8) | (data << 8)) & 0xFFFF; + } + + /* Only write unique data to VRAM */ + if (data != *p) + { + int name; + + /* Write data to VRAM */ + *p = data; + + /* Update the pattern cache */ + MARK_BG_DIRTY (index); + } + } + + /* Increment address register (TODO: check how address is incremented in Mode 4) */ + addr += (reg[15] + 1); +} + +static void vdp_68k_data_w_m5(unsigned int data) +{ + /* Clear pending flag */ + pending = 0; + + /* Restricted VDP writes during active display */ + if (!(status & 8) && (reg[1] & 0x40)) + { + /* Update VDP FIFO */ + vdp_fifo_update(m68k.cycles); + + /* Clear FIFO empty flag */ + status &= 0xFDFF; + + /* up to 4 words can be stored */ + if (fifo_write_cnt < 4) + { + /* Increment FIFO counter */ + fifo_write_cnt++; + + /* Set FIFO full flag if 4 words are stored */ + status |= ((fifo_write_cnt & 4) << 6); + } + else + { + /* CPU is halted until next FIFO entry processing (Chaos Engine / Soldiers of Fortune, Double Clutch, Titan Overdrive Demo) */ + m68k.cycles = fifo_cycles; + + /* Update FIFO access slot counter */ + fifo_slots += (fifo_byte_access + 1); + } + } + + /* Write data */ + vdp_bus_w(data); + + /* Check if DMA Fill is pending */ + if (dmafill) + { + /* Clear DMA Fill pending flag */ + dmafill = 0; + + /* DMA length */ + dma_length = (reg[20] << 8) | reg[19]; + + /* Zero DMA length (pre-decrementing counter) */ + if (!dma_length) + { + dma_length = 0x10000; + } + + /* Trigger DMA */ + vdp_dma_update(m68k.cycles); + } +} + +static unsigned int vdp_68k_data_r_m4(void) +{ + /* VRAM address (interleaved format) */ + int index = ((addr << 1) & 0x3FC) | ((addr & 0x200) >> 8) | (addr & 0x3C00); + + /* Clear pending flag */ + pending = 0; + + /* Increment address register (TODO: check how address is incremented in Mode 4) */ + addr += (reg[15] + 1); + + /* Read VRAM data */ + return *(uint16 *) &vram[index]; +} + +static unsigned int vdp_68k_data_r_m5(void) +{ + uint16 data = 0; + + /* Clear pending flag */ + pending = 0; + + /* Check destination code (CD0-CD3) & CD4 */ + switch (code & 0x1F) + { + case 0x00: + { + /* read two bytes from VRAM */ + data = *(uint16 *)&vram[addr & 0xFFFE]; + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_VRAM_R, 2, addr, data); +#endif + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + + case 0x04: + { + /* VSRAM index */ + int index = addr & 0x7E; + + /* Check against VSRAM max size (80 x 11-bits) */ + if (index >= 0x50) + { + /* Wrap to address 0 (TODO: check if still true with Genesis 3 model) */ + index = 0; + } + + /* Read 11-bit word from VSRAM */ + data = *(uint16 *)&vsram[index] & 0x7FF; + + /* Unused bits are set using data from next available FIFO entry */ + data |= (fifo[fifo_idx] & ~0x7FF); + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_VSRAM_R, 2, addr, data); +#endif + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VSRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + + case 0x08: + { + /* Read 9-bit word from CRAM */ + data = *(uint16 *)&cram[addr & 0x7E]; + + /* Unpack 9-bit CRAM data (BBBGGGRRR) to 16-bit bus data (BBB0GGG0RRR0) */ + data = ((data & 0x1C0) << 3) | ((data & 0x038) << 2) | ((data & 0x007) << 1); + + /* Unused bits are set using data from next available FIFO entry */ + data |= (fifo[fifo_idx] & ~0xEEE); + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_CRAM_R, 2, addr, data); +#endif + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] CRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + + case 0x0c: /* undocumented 8-bit VRAM read */ + { + /* Read one byte from VRAM adjacent address */ + data = READ_BYTE(vram, addr ^ 1); + + /* Unused bits are set using data from next available FIFO entry */ + data |= (fifo[fifo_idx] & ~0xFF); + +#ifdef HOOK_CPU + if (cpu_hook) + cpu_hook(HOOK_VRAM_R, 2, addr, data); +#endif + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] 8-bit VRAM 0x%x read -> 0x%x (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, addr, data, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + + default: + { + /* Invalid code value (normally locks VDP, hard reset required) */ +#ifdef LOGERROR + error("[%d(%d)][%d(%d)] Invalid (%d) 0x%x read (%x)\n", v_counter, (v_counter + (m68k.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, m68k.cycles, m68k.cycles%MCYCLES_PER_LINE, code, addr, m68k_get_reg(M68K_REG_PC)); +#endif + break; + } + } + + /* Increment address register */ + addr += reg[15]; + + /* Return data */ + return data; +} + + +/*--------------------------------------------------------------------------*/ +/* Z80 bus interface (Mega Drive VDP in Master System compatibility mode) */ +/*--------------------------------------------------------------------------*/ + +static void vdp_z80_data_w_m4(unsigned int data) +{ + /* Clear pending flag */ + pending = 0; + + /* Check destination code */ + if (code & 0x02) + { + /* CRAM index (32 words) */ + int index = addr & 0x1F; + + /* Pointer to CRAM word */ + uint16 *p = (uint16 *)&cram[index << 1]; + + /* Check if CRAM data is being modified */ + if (data != *p) + { + /* Write CRAM data */ + *p = data; + + /* Update color palette */ + color_update_m4(index, data); + + /* Update backdrop color */ + if (index == (0x10 | (border & 0x0F))) + { + color_update_m4(0x40, data); + } + } + } + else + { + /* VRAM address */ + int index = addr & 0x3FFF; + + /* Only write unique data to VRAM */ + if (data != vram[index]) + { + int name; + + /* Write data */ + vram[index] = data; + + /* Update pattern cache */ + MARK_BG_DIRTY(index); + } + } + + /* Increment address register (TODO: check how address is incremented in Mode 4) */ + addr += (reg[15] + 1); +} + +static void vdp_z80_data_w_m5(unsigned int data) +{ + /* Clear pending flag */ + pending = 0; + + /* Push byte into FIFO */ + fifo[fifo_idx] = data << 8; + fifo_idx = (fifo_idx + 1) & 3; + + /* Check destination code (CD0-CD3) */ + switch (code & 0x0F) + { + case 0x01: /* VRAM */ + { + /* VRAM address (write low byte to even address & high byte to odd address) */ + int index = addr ^ 1; + + /* Intercept writes to Sprite Attribute Table */ + if ((index & sat_base_mask) == satb) + { + /* Update internal SAT */ + WRITE_BYTE(sat, index & sat_addr_mask, data); + } + + /* Only write unique data to VRAM */ + if (data != READ_BYTE(vram, index)) + { + int name; + + /* Write data */ + WRITE_BYTE(vram, index, data); + + /* Update pattern cache */ + MARK_BG_DIRTY (index); + } + break; + } + + case 0x03: /* CRAM */ + { + /* Pointer to CRAM word */ + uint16 *p = (uint16 *)&cram[addr & 0x7E]; + + /* Pack 8-bit value into 9-bit CRAM data */ + if (addr & 1) + { + /* Write high byte (0000BBB0 -> BBBxxxxxx) */ + data = (*p & 0x3F) | ((data & 0x0E) << 5); + } + else + { + /* Write low byte (GGG0RRR0 -> xxxGGGRRR) */ + data = (*p & 0x1C0) | ((data & 0x0E) >> 1)| ((data & 0xE0) >> 2); + } + + /* Check if CRAM data is being modified */ + if (data != *p) + { + /* CRAM index (64 words) */ + int index = (addr >> 1) & 0x3F; + + /* Write CRAM data */ + *p = data; + + /* Color entry 0 of each palette is never displayed (transparent pixel) */ + if (index & 0x0F) + { + /* Update color palette */ + color_update_m5(index, data); + } + + /* Update backdrop color */ + if (index == border) + { + color_update_m5(0x00, data); + } + } + break; + } + + case 0x05: /* VSRAM */ + { + /* Write low byte to even address & high byte to odd address */ + WRITE_BYTE(vsram, (addr & 0x7F) ^ 1, data); + break; + } + } + + /* Increment address register */ + addr += reg[15]; + + /* Check if DMA Fill is pending */ + if (dmafill) + { + /* Clear DMA Fill pending flag */ + dmafill = 0; + + /* DMA length */ + dma_length = (reg[20] << 8) | reg[19]; + + /* Zero DMA length (pre-decrementing counter) */ + if (!dma_length) + { + dma_length = 0x10000; + } + + /* Trigger DMA */ + vdp_dma_update(Z80.cycles); + } +} + +static unsigned int vdp_z80_data_r_m4(void) +{ + /* Read buffer */ + unsigned int data = fifo[0]; + + /* Clear pending flag */ + pending = 0; + + /* Process next read */ + fifo[0] = vram[addr & 0x3FFF]; + + /* Increment address register (TODO: check how address is incremented with Mega Drive VDP in Mode 4) */ + addr += (reg[15] + 1); + + /* Return data */ + return data; +} + +static unsigned int vdp_z80_data_r_m5(void) +{ + unsigned int data = 0; + + /* Clear pending flag */ + pending = 0; + + /* Check destination code (CD0-CD3) & CD4 */ + switch (code & 0x1F) + { + case 0x00: /* VRAM */ + { + /* Return low byte from even address & high byte from odd address */ + data = READ_BYTE(vram, addr ^ 1); + break; + } + + case 0x04: /* VSRAM */ + { + /* Return low byte from even address & high byte from odd address */ + data = READ_BYTE(vsram, (addr & 0x7F) ^ 1); + break; + } + + case 0x08: /* CRAM */ + { + /* Read CRAM data */ + data = *(uint16 *)&cram[addr & 0x7E]; + + /* Unpack 9-bit CRAM data (BBBGGGRRR) to 16-bit data (BBB0GGG0RRR0) */ + data = ((data & 0x1C0) << 3) | ((data & 0x038) << 2) | ((data & 0x007) << 1); + + /* Return low byte from even address & high byte from odd address */ + if (addr & 1) + { + data = data >> 8; + } + + data &= 0xFF; + break; + } + } + + /* Increment address register */ + addr += reg[15]; + + /* Return data */ + return data; +} + + +/*-----------------------------------------------------------------------------*/ +/* Z80 bus interface (Master System, Game Gear & SG-1000 VDP) */ +/*-----------------------------------------------------------------------------*/ + +static void vdp_z80_data_w_ms(unsigned int data) +{ + /* Clear pending flag */ + pending = 0; + + if (code < 3) + { + int index; + + /* Check if we are already on next line */ + if ((Z80.cycles - mcycles_vdp) >= MCYCLES_PER_LINE) + { + /* update line counter */ + int line = (v_counter + 1) % lines_per_frame; + + /* check if we are within active display range */ + if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) + { + /* update VCounter to indicate next line has already been rendered */ + v_counter = line; + + /* render next line */ + render_line(line); + } + } + + /* VRAM address */ + index = addr & 0x3FFF; + + /* VRAM write */ + if (data != vram[index]) + { + int name; + vram[index] = data; + MARK_BG_DIRTY(index); + } + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, index, data, Z80.pc.w.l); +#endif + } + else + { + /* CRAM address */ + int index = addr & 0x1F; + + /* Pointer to CRAM word */ + uint16 *p = (uint16 *)&cram[index << 1]; + + /* Check if CRAM data is being modified */ + if (data != *p) + { + /* Write CRAM data */ + *p = data; + + /* Update color palette */ + color_update_m4(index, data); + + /* Update backdrop color */ + if (index == (0x10 | (border & 0x0F))) + { + color_update_m4(0x40, data); + } + } +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] CRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, addr, data, Z80.pc.w.l); +#endif + } + + /* Update read buffer */ + fifo[0] = data; + + /* Update address register */ + addr++; +} + +static void vdp_z80_data_w_gg(unsigned int data) +{ + /* Clear pending flag */ + pending = 0; + + if (code < 3) + { + int index; + + /* Check if we are already on next line */ + if ((Z80.cycles - mcycles_vdp) >= MCYCLES_PER_LINE) + { + /* update line counter */ + int line = (v_counter + 1) % lines_per_frame; + + /* check if we are within active display range */ + if ((line < bitmap.viewport.h) && !(work_ram[0x1ffb] & cart.special & HW_3D_GLASSES)) + { + /* update VCounter to indicate next line has already been rendered */ + v_counter = line; + + /* render next line */ + render_line(line); + } + } + + /* VRAM address */ + index = addr & 0x3FFF; + + /* VRAM write */ + if (data != vram[index]) + { + int name; + vram[index] = data; + MARK_BG_DIRTY(index); + } +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, index, data, Z80.pc.w.l); +#endif + } + else + { + if (addr & 1) + { + /* Pointer to CRAM word */ + uint16 *p = (uint16 *)&cram[addr & 0x3E]; + + /* 12-bit data word */ + data = (data << 8) | cached_write; + + /* Check if CRAM data is being modified */ + if (data != *p) + { + /* Color index (0-31) */ + int index = (addr >> 1) & 0x1F; + + /* Write CRAM data */ + *p = data; + + /* Update color palette */ + color_update_m4(index, data); + + /* Update backdrop color */ + if (index == (0x10 | (border & 0x0F))) + { + color_update_m4(0x40, data); + } + } + } + else + { + /* Latch LSB */ + cached_write = data; + } +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] CRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, addr, data, Z80.pc.w.l); +#endif + } + + /* Update read buffer */ + fifo[0] = data; + + /* Update address register */ + addr++; +} + +static void vdp_z80_data_w_sg(unsigned int data) +{ + /* VRAM address */ + int index = addr & 0x3FFF; + + /* Clear pending flag */ + pending = 0; + + /* VRAM write */ + vram[index] = data; + + /* Update address register */ + addr++; + +#ifdef LOGVDP + error("[%d(%d)][%d(%d)] VRAM 0x%x write -> 0x%x (%x)\n", v_counter, (v_counter + (Z80.cycles - mcycles_vdp)/MCYCLES_PER_LINE)%lines_per_frame, Z80.cycles, Z80.cycles%MCYCLES_PER_LINE, index, data, Z80.pc.w.l); +#endif +} + +/*--------------------------------------------------------------------------*/ +/* DMA operations (Mega Drive VDP only) */ +/*--------------------------------------------------------------------------*/ + +/* DMA from 68K bus: $000000-$7FFFFF (external area) */ +static void vdp_dma_68k_ext(unsigned int length) +{ + uint16 data; + + /* 68k bus source address */ + uint32 source = (reg[23] << 17) | (dma_src << 1); + + do + { + /* Read data word from 68k bus */ + if (m68k.memory_map[source>>16].read16) + { + data = m68k.memory_map[source>>16].read16(source); + } + else + { + data = *(uint16 *)(m68k.memory_map[source>>16].base + (source & 0xFFFF)); + } + + /* Increment source address */ + source += 2; + + /* 128k DMA window */ + source = (reg[23] << 17) | (source & 0x1FFFF); + + /* Write data word to VRAM, CRAM or VSRAM */ + vdp_bus_w(data); + } + while (--length); + + /* Update DMA source address */ + dma_src = (source >> 1) & 0xffff; +} + +/* DMA from 68K bus: $800000-$FFFFFF (internal area) except I/O area */ +static void vdp_dma_68k_ram(unsigned int length) +{ + uint16 data; + + /* 68k bus source address */ + uint32 source = (reg[23] << 17) | (dma_src << 1); + + do + { + /* access Work-RAM by default */ + data = *(uint16 *)(work_ram + (source & 0xFFFF)); + + /* Increment source address */ + source += 2; + + /* 128k DMA window */ + source = (reg[23] << 17) | (source & 0x1FFFF); + + /* Write data word to VRAM, CRAM or VSRAM */ + vdp_bus_w(data); + } + while (--length); + + /* Update DMA source address */ + dma_src = (source >> 1) & 0xffff; +} + +/* DMA from 68K bus: $A00000-$A1FFFF (I/O area) specific */ +static void vdp_dma_68k_io(unsigned int length) +{ + uint16 data; + + /* 68k bus source address */ + uint32 source = (reg[23] << 17) | (dma_src << 1); + + do + { + /* Z80 area */ + if (source <= 0xA0FFFF) + { + /* Return $FFFF only when the Z80 isn't hogging the Z-bus. + (e.g. Z80 isn't reset and 68000 has the bus) */ + data = ((zstate ^ 3) ? *(uint16 *)(work_ram + (source & 0xFFFF)) : 0xFFFF); + } + + /* The I/O chip and work RAM try to drive the data bus which results + in both values being combined in random ways when read. + We return the I/O chip values which seem to have precedence, */ + else if (source <= 0xA1001F) + { + data = io_68k_read((source >> 1) & 0x0F); + data = (data << 8 | data); + } + + /* All remaining locations access work RAM */ + else + { + data = *(uint16 *)(work_ram + (source & 0xFFFF)); + } + + /* Increment source address */ + source += 2; + + /* 128k DMA window */ + source = (reg[23] << 17) | (source & 0x1FFFF); + + /* Write data to VRAM, CRAM or VSRAM */ + vdp_bus_w(data); + } + while (--length); + + /* Update DMA source address */ + dma_src = (source >> 1) & 0xffff; +} + +/* VRAM Copy */ +static void vdp_dma_copy(unsigned int length) +{ + /* CD4 should be set (CD0-CD3 ignored) otherwise VDP locks (hard reset needed) */ + if (code & 0x10) + { + int name; + uint8 data; + + /* VRAM source address */ + uint16 source = dma_src; + + do + { + /* Read byte from adjacent VRAM source address */ + data = READ_BYTE(vram, source ^ 1); + + /* Intercept writes to Sprite Attribute Table */ + if ((addr & sat_base_mask) == satb) + { + /* Update internal SAT */ + WRITE_BYTE(sat, (addr & sat_addr_mask) ^ 1, data); + } + + /* Write byte to adjacent VRAM destination address */ + WRITE_BYTE(vram, addr ^ 1, data); + + /* Update pattern cache */ + MARK_BG_DIRTY(addr); + + /* Increment VRAM source address */ + source++; + + /* Increment VRAM destination address */ + addr += reg[15]; + } + while (--length); + + /* Update DMA source address */ + dma_src = source; + } +} + +/* DMA Fill */ +static void vdp_dma_fill(unsigned int length) +{ + /* Check destination code (CD0-CD3) */ + switch (code & 0x0F) + { + case 0x01: /* VRAM */ + { + int name; + + /* Get source data from last written FIFO entry */ + uint8 data = fifo[(fifo_idx+3)&3] >> 8; + + do + { + /* Intercept writes to Sprite Attribute Table */ + if ((addr & sat_base_mask) == satb) + { + /* Update internal SAT */ + WRITE_BYTE(sat, (addr & sat_addr_mask) ^ 1, data); + } + + /* Write byte to adjacent VRAM address */ + WRITE_BYTE(vram, addr ^ 1, data); + + /* Update pattern cache */ + MARK_BG_DIRTY (addr); + + /* Increment VRAM address */ + addr += reg[15]; + } + while (--length); + break; + } + + case 0x03: /* CRAM */ + { + /* Get source data from next available FIFO entry */ + uint16 data = fifo[fifo_idx]; + + /* Pack 16-bit bus data (BBB0GGG0RRR0) to 9-bit CRAM data (BBBGGGRRR) */ + data = ((data & 0xE00) >> 3) | ((data & 0x0E0) >> 2) | ((data & 0x00E) >> 1); + + do + { + /* Pointer to CRAM 9-bit word */ + uint16 *p = (uint16 *)&cram[addr & 0x7E]; + + /* Check if CRAM data is being modified */ + if (data != *p) + { + /* CRAM index (64 words) */ + int index = (addr >> 1) & 0x3F; + + /* Write CRAM data */ + *p = data; + + /* Color entry 0 of each palette is never displayed (transparent pixel) */ + if (index & 0x0F) + { + /* Update color palette */ + color_update_m5(index, data); + } + + /* Update backdrop color */ + if (index == border) + { + color_update_m5(0x00, data); + } + } + + /* Increment CRAM address */ + addr += reg[15]; + } + while (--length); + break; + } + + case 0x05: /* VSRAM */ + { + /* Get source data from next available FIFO entry */ + uint16 data = fifo[fifo_idx]; + + do + { + /* Write VSRAM data */ + *(uint16 *)&vsram[addr & 0x7E] = data; + + /* Increment VSRAM address */ + addr += reg[15]; + } + while (--length); + break; + } + + default: + { + /* invalid destination does nothing (Williams Greatest Hits after soft reset) */ + + /* address is still incremented */ + addr += reg[15] * length; + } + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_ctrl.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_ctrl.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_ctrl.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_ctrl.h index 26153812a2..e71cf27413 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_ctrl.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_ctrl.h @@ -1,106 +1,106 @@ -/*************************************************************************************** - * Genesis Plus - * Video Display Processor (68k & Z80 CPU interface) - * - * Support for SG-1000 (TMS99xx & 315-5066), Master System (315-5124 & 315-5246), Game Gear & Mega Drive VDP - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _VDP_H_ -#define _VDP_H_ - -/* VDP context */ -extern uint8 reg[0x20]; -extern uint8 sat[0x400]; -extern uint8 vram[0x10000]; -extern uint8 cram[0x80]; -extern uint8 vsram[0x80]; -extern uint8 hint_pending; -extern uint8 vint_pending; -extern uint16 status; -extern uint32 dma_length; - -/* Global variables */ -extern uint16 ntab; -extern uint16 ntbb; -extern uint16 ntwb; -extern uint16 satb; -extern uint16 hscb; -extern uint8 bg_name_dirty[0x800]; -extern uint16 bg_name_list[0x800]; -extern uint16 bg_list_index; -extern uint8 hscroll_mask; -extern uint8 playfield_shift; -extern uint8 playfield_col_mask; -extern uint16 playfield_row_mask; -extern uint8 odd_frame; -extern uint8 im2_flag; -extern uint8 interlaced; -extern uint8 vdp_pal; -extern uint8 h_counter; -extern uint16 v_counter; -extern uint16 vc_max; -extern uint16 vscroll; -extern uint16 lines_per_frame; -extern uint16 max_sprite_pixels; -extern int32 fifo_write_cnt; -extern uint32 fifo_slots; -extern uint32 hvc_latch; -extern const uint8 *hctab; - -/* Function pointers */ -extern void (*vdp_68k_data_w)(unsigned int data); -extern void (*vdp_z80_data_w)(unsigned int data); -extern unsigned int (*vdp_68k_data_r)(void); -extern unsigned int (*vdp_z80_data_r)(void); - -/* Function prototypes */ -extern void vdp_init(void); -extern void vdp_reset(void); -extern int vdp_context_save(uint8 *state); -extern int vdp_context_load(uint8 *state); -extern void vdp_dma_update(unsigned int cycles); -extern void vdp_68k_ctrl_w(unsigned int data); -extern void vdp_z80_ctrl_w(unsigned int data); -extern void vdp_sms_ctrl_w(unsigned int data); -extern void vdp_tms_ctrl_w(unsigned int data); -extern unsigned int vdp_68k_ctrl_r(unsigned int cycles); -extern unsigned int vdp_z80_ctrl_r(unsigned int cycles); -extern unsigned int vdp_hvc_r(unsigned int cycles); -extern void vdp_test_w(unsigned int data); -extern int vdp_68k_irq_ack(int int_level); - -#endif /* _VDP_H_ */ +/*************************************************************************************** + * Genesis Plus + * Video Display Processor (68k & Z80 CPU interface) + * + * Support for SG-1000 (TMS99xx & 315-5066), Master System (315-5124 & 315-5246), Game Gear & Mega Drive VDP + * + * Copyright (C) 1998-2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2017 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _VDP_H_ +#define _VDP_H_ + +/* VDP context */ +extern uint8 reg[0x20]; +extern uint8 sat[0x400]; +extern uint8 vram[0x10000]; +extern uint8 cram[0x80]; +extern uint8 vsram[0x80]; +extern uint8 hint_pending; +extern uint8 vint_pending; +extern uint16 status; +extern uint32 dma_length; + +/* Global variables */ +extern uint16 ntab; +extern uint16 ntbb; +extern uint16 ntwb; +extern uint16 satb; +extern uint16 hscb; +extern uint8 bg_name_dirty[0x800]; +extern uint16 bg_name_list[0x800]; +extern uint16 bg_list_index; +extern uint8 hscroll_mask; +extern uint8 playfield_shift; +extern uint8 playfield_col_mask; +extern uint16 playfield_row_mask; +extern uint8 odd_frame; +extern uint8 im2_flag; +extern uint8 interlaced; +extern uint8 vdp_pal; +extern uint8 h_counter; +extern uint16 v_counter; +extern uint16 vc_max; +extern uint16 vscroll; +extern uint16 lines_per_frame; +extern uint16 max_sprite_pixels; +extern int32 fifo_write_cnt; +extern uint32 fifo_slots; +extern uint32 hvc_latch; +extern const uint8 *hctab; + +/* Function pointers */ +extern void (*vdp_68k_data_w)(unsigned int data); +extern void (*vdp_z80_data_w)(unsigned int data); +extern unsigned int (*vdp_68k_data_r)(void); +extern unsigned int (*vdp_z80_data_r)(void); + +/* Function prototypes */ +extern void vdp_init(void); +extern void vdp_reset(void); +extern int vdp_context_save(uint8 *state); +extern int vdp_context_load(uint8 *state); +extern void vdp_dma_update(unsigned int cycles); +extern void vdp_68k_ctrl_w(unsigned int data); +extern void vdp_z80_ctrl_w(unsigned int data); +extern void vdp_sms_ctrl_w(unsigned int data); +extern void vdp_tms_ctrl_w(unsigned int data); +extern unsigned int vdp_68k_ctrl_r(unsigned int cycles); +extern unsigned int vdp_z80_ctrl_r(unsigned int cycles); +extern unsigned int vdp_hvc_r(unsigned int cycles); +extern void vdp_test_w(unsigned int data); +extern int vdp_68k_irq_ack(int int_level); + +#endif /* _VDP_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_render.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_render.c similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_render.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_render.c index 6b65e22146..4eeda455eb 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_render.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_render.c @@ -1,4233 +1,4233 @@ -/*************************************************************************************** - * Genesis Plus - * Video Display Processor (pixel output rendering) - * - * Support for all TMS99xx modes, Mode 4 & Mode 5 rendering - * - * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "md_ntsc.h" -#include "sms_ntsc.h" - -#ifndef HAVE_NO_SPRITE_LIMIT -#define MAX_SPRITES_PER_LINE 20 -#define TMS_MAX_SPRITES_PER_LINE 4 -#define MODE4_MAX_SPRITES_PER_LINE 8 -#define MODE5_MAX_SPRITES_PER_LINE (bitmap.viewport.w >> 4) -#define MODE5_MAX_SPRITE_PIXELS max_sprite_pixels -#endif - -/*** NTSC Filters ***/ -extern md_ntsc_t *md_ntsc; -extern sms_ntsc_t *sms_ntsc; - - -/* Output pixels type*/ -#if defined(USE_8BPP_RENDERING) -#define PIXEL_OUT_T uint8 -#elif defined(USE_32BPP_RENDERING) -#define PIXEL_OUT_T uint32 -#else -#define PIXEL_OUT_T uint16 -#endif - - -/* Pixel priority look-up tables information */ -#define LUT_MAX (6) -#define LUT_SIZE (0x10000) - - -#ifdef ALIGN_LONG -#undef READ_LONG -#undef WRITE_LONG - -INLINE uint32 READ_LONG(void *address) -{ - if ((uint32)address & 3) - { -#ifdef LSB_FIRST /* little endian version */ - return ( *((uint8 *)address) + - (*((uint8 *)address+1) << 8) + - (*((uint8 *)address+2) << 16) + - (*((uint8 *)address+3) << 24) ); -#else /* big endian version */ - return ( *((uint8 *)address+3) + - (*((uint8 *)address+2) << 8) + - (*((uint8 *)address+1) << 16) + - (*((uint8 *)address) << 24) ); -#endif /* LSB_FIRST */ - } - else return *(uint32 *)address; -} - -INLINE void WRITE_LONG(void *address, uint32 data) -{ - if ((uint32)address & 3) - { -#ifdef LSB_FIRST - *((uint8 *)address) = data; - *((uint8 *)address+1) = (data >> 8); - *((uint8 *)address+2) = (data >> 16); - *((uint8 *)address+3) = (data >> 24); -#else - *((uint8 *)address+3) = data; - *((uint8 *)address+2) = (data >> 8); - *((uint8 *)address+1) = (data >> 16); - *((uint8 *)address) = (data >> 24); -#endif /* LSB_FIRST */ - return; - } - else *(uint32 *)address = data; -} - -#endif /* ALIGN_LONG */ - - -/* Draw 2-cell column (8-pixels high) */ -/* - Pattern cache base address: VHN NNNNNNNN NNYYYxxx - with : - x = Pattern Pixel (0-7) - Y = Pattern Row (0-7) - N = Pattern Number (0-2047) from pattern attribute - H = Horizontal Flip bit from pattern attribute - V = Vertical Flip bit from pattern attribute -*/ -#define GET_LSB_TILE(ATTR, LINE) \ - atex = atex_table[(ATTR >> 13) & 7]; \ - src = (uint32 *)&bg_pattern_cache[(ATTR & 0x00001FFF) << 6 | (LINE)]; -#define GET_MSB_TILE(ATTR, LINE) \ - atex = atex_table[(ATTR >> 29) & 7]; \ - src = (uint32 *)&bg_pattern_cache[(ATTR & 0x1FFF0000) >> 10 | (LINE)]; - -/* Draw 2-cell column (16 pixels high) */ -/* - Pattern cache base address: VHN NNNNNNNN NYYYYxxx - with : - x = Pattern Pixel (0-7) - Y = Pattern Row (0-15) - N = Pattern Number (0-1023) - H = Horizontal Flip bit - V = Vertical Flip bit -*/ -#define GET_LSB_TILE_IM2(ATTR, LINE) \ - atex = atex_table[(ATTR >> 13) & 7]; \ - src = (uint32 *)&bg_pattern_cache[((ATTR & 0x000003FF) << 7 | (ATTR & 0x00001800) << 6 | (LINE)) ^ ((ATTR & 0x00001000) >> 6)]; -#define GET_MSB_TILE_IM2(ATTR, LINE) \ - atex = atex_table[(ATTR >> 29) & 7]; \ - src = (uint32 *)&bg_pattern_cache[((ATTR & 0x03FF0000) >> 9 | (ATTR & 0x18000000) >> 10 | (LINE)) ^ ((ATTR & 0x10000000) >> 22)]; - -/* - One column = 2 tiles - Two pattern attributes are written in VRAM as two consecutives 16-bit words: - - P = priority bit - C = color palette (2 bits) - V = Vertical Flip bit - H = Horizontal Flip bit - N = Pattern Number (11 bits) - - (MSB) PCCVHNNN NNNNNNNN (LSB) (MSB) PCCVHNNN NNNNNNNN (LSB) - PATTERN1 PATTERN2 - - Both pattern attributes are read from VRAM as one 32-bit word: - - LIT_ENDIAN: (MSB) PCCVHNNN NNNNNNNN PCCVHNNN NNNNNNNN (LSB) - PATTERN2 PATTERN1 - - BIG_ENDIAN: (MSB) PCCVHNNN NNNNNNNN PCCVHNNN NNNNNNNN (LSB) - PATTERN1 PATTERN2 - - - In line buffers, one pixel = one byte: (msb) 0Pppcccc (lsb) - with: - P = priority bit (from pattern attribute) - p = color palette (from pattern attribute) - c = color data (from pattern cache) - - One pattern = 8 pixels = 8 bytes = two 32-bit writes per pattern -*/ - -#ifdef ALIGN_LONG -#ifdef LSB_FIRST -#define DRAW_COLUMN(ATTR, LINE) \ - GET_LSB_TILE(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; \ - GET_MSB_TILE(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; -#define DRAW_COLUMN_IM2(ATTR, LINE) \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; -#else -#define DRAW_COLUMN(ATTR, LINE) \ - GET_MSB_TILE(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; \ - GET_LSB_TILE(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; -#define DRAW_COLUMN_IM2(ATTR, LINE) \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - WRITE_LONG(dst, src[0] | atex); \ - dst++; \ - WRITE_LONG(dst, src[1] | atex); \ - dst++; -#endif -#else /* NOT ALIGNED */ -#ifdef LSB_FIRST -#define DRAW_COLUMN(ATTR, LINE) \ - GET_LSB_TILE(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); \ - GET_MSB_TILE(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); -#define DRAW_COLUMN_IM2(ATTR, LINE) \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); -#else -#define DRAW_COLUMN(ATTR, LINE) \ - GET_MSB_TILE(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); \ - GET_LSB_TILE(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); -#define DRAW_COLUMN_IM2(ATTR, LINE) \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - *dst++ = (src[0] | atex); \ - *dst++ = (src[1] | atex); -#endif -#endif /* ALIGN_LONG */ - -#ifdef ALT_RENDERER -/* Draw background tiles directly using priority look-up table */ -/* SRC_A = layer A rendered pixel line (4 bytes = 4 pixels at once) */ -/* SRC_B = layer B cached pixel line (4 bytes = 4 pixels at once) */ -/* Note: cache address is always aligned so no need to use READ_LONG macro */ -/* This might be faster or slower than original method, depending on */ -/* architecture (x86, PowerPC), cache size, memory access speed, etc... */ - -#ifdef LSB_FIRST -#define DRAW_BG_TILE(SRC_A, SRC_B) \ - *lb++ = table[((SRC_B << 8) & 0xff00) | (SRC_A & 0xff)]; \ - *lb++ = table[(SRC_B & 0xff00) | ((SRC_A >> 8) & 0xff)]; \ - *lb++ = table[((SRC_B >> 8) & 0xff00) | ((SRC_A >> 16) & 0xff)]; \ - *lb++ = table[((SRC_B >> 16) & 0xff00) | ((SRC_A >> 24) & 0xff)]; -#else -#define DRAW_BG_TILE(SRC_A, SRC_B) \ - *lb++ = table[((SRC_B >> 16) & 0xff00) | ((SRC_A >> 24) & 0xff)]; \ - *lb++ = table[((SRC_B >> 8) & 0xff00) | ((SRC_A >> 16) & 0xff)]; \ - *lb++ = table[(SRC_B & 0xff00) | ((SRC_A >> 8) & 0xff)]; \ - *lb++ = table[((SRC_B << 8) & 0xff00) | (SRC_A & 0xff)]; -#endif - -#ifdef ALIGN_LONG -#ifdef LSB_FIRST -#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ - GET_LSB_TILE(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_MSB_TILE(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#else -#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ - GET_MSB_TILE(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_LSB_TILE(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = READ_LONG((uint32 *)lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#endif -#else /* NOT ALIGNED */ -#ifdef LSB_FIRST -#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ - GET_LSB_TILE(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_MSB_TILE(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#else -#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ - GET_MSB_TILE(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_LSB_TILE(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ - GET_MSB_TILE_IM2(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - GET_LSB_TILE_IM2(ATTR, LINE) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[0] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) \ - SRC_A = *(uint32 *)(lb); \ - SRC_B = (src[1] | atex); \ - DRAW_BG_TILE(SRC_A, SRC_B) -#endif -#endif /* ALIGN_LONG */ -#endif /* ALT_RENDERER */ - -#define DRAW_SPRITE_TILE(WIDTH,ATTR,TABLE) \ - for (i=0;i> 10); \ - } \ - } - -#define DRAW_SPRITE_TILE_ACCURATE(WIDTH,ATTR,TABLE) \ - for (i=0;i> 1); \ - status |= 0x20; \ - } \ - } \ - } - -#define DRAW_SPRITE_TILE_ACCURATE_2X(WIDTH,ATTR,TABLE) \ - for (i=0;i> 1); \ - status |= 0x20; \ - } \ - temp &= 0x00FF; \ - temp |= (lb[i+1] << 8); \ - lb[i+1] = TABLE[temp | ATTR]; \ - if ((temp & 0x8000) && !(status & 0x20)) \ - { \ - spr_col = (v_counter << 8) | ((xpos + i + 1 + 13) >> 1); \ - status |= 0x20; \ - } \ - } \ - } - - -/* Pixels conversion macro */ -/* 4-bit color channels are either compressed to 2/3-bit or dithered to 5/6/8-bit equivalents */ -/* 3:3:2 RGB */ -#if defined(USE_8BPP_RENDERING) -#define MAKE_PIXEL(r,g,b) (((r) >> 1) << 5 | ((g) >> 1) << 2 | (b) >> 2) - -/* 5:5:5 RGB */ -#elif defined(USE_15BPP_RENDERING) -#if defined(USE_ABGR) -#define MAKE_PIXEL(r,g,b) ((1 << 15) | (b) << 11 | ((b) >> 3) << 10 | (g) << 6 | ((g) >> 3) << 5 | (r) << 1 | (r) >> 3) -#else -#define MAKE_PIXEL(r,g,b) ((1 << 15) | (r) << 11 | ((r) >> 3) << 10 | (g) << 6 | ((g) >> 3) << 5 | (b) << 1 | (b) >> 3) -#endif -/* 5:6:5 RGB */ -#elif defined(USE_16BPP_RENDERING) -#define MAKE_PIXEL(r,g,b) ((r) << 12 | ((r) >> 3) << 11 | (g) << 7 | ((g) >> 2) << 5 | (b) << 1 | (b) >> 3) - -/* 8:8:8 RGB */ -#elif defined(USE_32BPP_RENDERING) -#define MAKE_PIXEL(r,g,b) ((0xff << 24) | (r) << 20 | (r) << 16 | (g) << 12 | (g) << 8 | (b) << 4 | (b)) -#endif - -/* Window & Plane A clipping */ -static struct clip_t -{ - uint8 left; - uint8 right; - uint8 enable; -} clip[2]; - -/* Pattern attribute (priority + palette bits) expansion table */ -static const uint32 atex_table[] = -{ - 0x00000000, - 0x10101010, - 0x20202020, - 0x30303030, - 0x40404040, - 0x50505050, - 0x60606060, - 0x70707070 -}; - -/* fixed Master System palette for Modes 0,1,2,3 */ -static const uint8 tms_crom[16] = -{ - 0x00, 0x00, 0x08, 0x0C, - 0x10, 0x30, 0x01, 0x3C, - 0x02, 0x03, 0x05, 0x0F, - 0x04, 0x33, 0x15, 0x3F -}; - -/* original SG-1000 palette */ -#if defined(USE_8BPP_RENDERING) -static const uint8 tms_palette[16] = -{ - 0x00, 0x00, 0x39, 0x79, - 0x4B, 0x6F, 0xC9, 0x5B, - 0xE9, 0xED, 0xD5, 0xD9, - 0x35, 0xCE, 0xDA, 0xFF -}; - -#elif defined(USE_15BPP_RENDERING) -static const uint16 tms_palette[16] = -{ - 0x8000, 0x8000, 0x9308, 0xAF6F, - 0xA95D, 0xBDDF, 0xE949, 0xA3BE, - 0xFD4A, 0xFDEF, 0xEB0A, 0xF330, - 0x92A7, 0xE177, 0xE739, 0xFFFF -}; - -#elif defined(USE_16BPP_RENDERING) -static const uint16 tms_palette[16] = -{ - 0x0000, 0x0000, 0x2648, 0x5ECF, - 0x52BD, 0x7BBE, 0xD289, 0x475E, - 0xF2AA, 0xFBCF, 0xD60A, 0xE670, - 0x2567, 0xC2F7, 0xCE59, 0xFFFF -}; - -#elif defined(USE_32BPP_RENDERING) -static const uint32 tms_palette[16] = -{ - 0xFF000000, 0xFF000000, 0xFF21C842, 0xFF5EDC78, - 0xFF5455ED, 0xFF7D76FC, 0xFFD4524D, 0xFF42EBF5, - 0xFFFC5554, 0xFFFF7978, 0xFFD4C154, 0xFFE6CE80, - 0xFF21B03B, 0xFFC95BB4, 0xFFCCCCCC, 0xFFFFFFFF -}; -#endif - -/* Cached and flipped patterns */ -static uint8 ALIGNED_(4) bg_pattern_cache[0x80000]; - -/* Sprite pattern name offset look-up table (Mode 5) */ -static uint8 name_lut[0x400]; - -/* Bitplane to packed pixel look-up table (Mode 4) */ -static uint32 bp_lut[0x10000]; - -/* Layer priority pixel look-up tables */ -static uint8 lut[LUT_MAX][LUT_SIZE]; - -/* Output pixel data look-up tables*/ -static PIXEL_OUT_T pixel[0x100]; -static PIXEL_OUT_T pixel_lut[3][0x200]; -static PIXEL_OUT_T pixel_lut_m4[0x40]; - -/* Background & Sprite line buffers */ -static uint8 linebuf[2][0x200]; - -/* Sprite limit flag */ -static uint8 spr_ovr; - -/* Sprite parsing lists */ -typedef struct -{ - uint16 ypos; - uint16 xpos; - uint16 attr; - uint16 size; -} object_info_t; - -static object_info_t obj_info[2][MAX_SPRITES_PER_LINE]; - -/* Sprite Counter */ -static uint8 object_count[2]; - -/* Sprite Collision Info */ -uint16 spr_col; - -/* Function pointers */ -void (*render_bg)(int line); -void (*render_obj)(int line); -void (*parse_satb)(int line); -void (*update_bg_pattern_cache)(int index); - - -/*--------------------------------------------------------------------------*/ -/* Sprite pattern name offset look-up table function (Mode 5) */ -/*--------------------------------------------------------------------------*/ - -static void make_name_lut(void) -{ - int vcol, vrow; - int width, height; - int flipx, flipy; - int i; - - for (i = 0; i < 0x400; i += 1) - { - /* Sprite settings */ - vcol = i & 3; - vrow = (i >> 2) & 3; - height = (i >> 4) & 3; - width = (i >> 6) & 3; - flipx = (i >> 8) & 1; - flipy = (i >> 9) & 1; - - if ((vrow > height) || vcol > width) - { - /* Invalid settings (unused) */ - name_lut[i] = -1; - } - else - { - /* Adjust column & row index if sprite is flipped */ - if(flipx) vcol = (width - vcol); - if(flipy) vrow = (height - vrow); - - /* Pattern offset (pattern order is up->down->left->right) */ - name_lut[i] = vrow + (vcol * (height + 1)); - } - } -} - - -/*--------------------------------------------------------------------------*/ -/* Bitplane to packed pixel look-up table function (Mode 4) */ -/*--------------------------------------------------------------------------*/ - -static void make_bp_lut(void) -{ - int x,i,j; - uint32 out; - - /* ---------------------- */ - /* Pattern color encoding */ - /* -------------------------------------------------------------------------*/ - /* 4 byteplanes are required to define one pattern line (8 pixels) */ - /* A single pixel color is coded with 4 bits (c3 c2 c1 c0) */ - /* Each bit is coming from byteplane bits, as explained below: */ - /* pixel 0: c3 = bp3 bit 7, c2 = bp2 bit 7, c1 = bp1 bit 7, c0 = bp0 bit 7 */ - /* pixel 1: c3 = bp3 bit 6, c2 = bp2 bit 6, c1 = bp1 bit 6, c0 = bp0 bit 6 */ - /* ... */ - /* pixel 7: c3 = bp3 bit 0, c2 = bp2 bit 0, c1 = bp1 bit 0, c0 = bp0 bit 0 */ - /* -------------------------------------------------------------------------*/ - - for(i = 0; i < 0x100; i++) - for(j = 0; j < 0x100; j++) - { - out = 0; - for(x = 0; x < 8; x++) - { - /* pixel line data = hh00gg00ff00ee00dd00cc00bb00aa00 (32-bit) */ - /* aa-hh = upper or lower 2-bit values of pixels 0-7 (shifted) */ - out |= (j & (0x80 >> x)) ? (uint32)(8 << (x << 2)) : 0; - out |= (i & (0x80 >> x)) ? (uint32)(4 << (x << 2)) : 0; - } - - /* i = low byte in VRAM (bp0 or bp2) */ - /* j = high byte in VRAM (bp1 or bp3) */ - #ifdef LSB_FIRST - bp_lut[(j << 8) | (i)] = out; - #else - bp_lut[(i << 8) | (j)] = out; - #endif - } -} - - -/*--------------------------------------------------------------------------*/ -/* Layers priority pixel look-up tables functions */ -/*--------------------------------------------------------------------------*/ - -/* Input (bx): d5-d0=color, d6=priority, d7=unused */ -/* Input (ax): d5-d0=color, d6=priority, d7=unused */ -/* Output: d5-d0=color, d6=priority, d7=zero */ -static uint32 make_lut_bg(uint32 bx, uint32 ax) -{ - int bf = (bx & 0x7F); - int bp = (bx & 0x40); - int b = (bx & 0x0F); - - int af = (ax & 0x7F); - int ap = (ax & 0x40); - int a = (ax & 0x0F); - - int c = (ap ? (a ? af : bf) : (bp ? (b ? bf : af) : (a ? af : bf))); - - /* Strip palette & priority bits from transparent pixels */ - if((c & 0x0F) == 0x00) c &= 0x80; - - return (c); -} - -/* Input (bx): d5-d0=color, d6=priority, d7=unused */ -/* Input (sx): d5-d0=color, d6=priority, d7=unused */ -/* Output: d5-d0=color, d6=priority, d7=intensity select (0=half/1=normal) */ -static uint32 make_lut_bg_ste(uint32 bx, uint32 ax) -{ - int bf = (bx & 0x7F); - int bp = (bx & 0x40); - int b = (bx & 0x0F); - - int af = (ax & 0x7F); - int ap = (ax & 0x40); - int a = (ax & 0x0F); - - int c = (ap ? (a ? af : bf) : (bp ? (b ? bf : af) : (a ? af : bf))); - - /* Half intensity when both pixels are low priority */ - c |= ((ap | bp) << 1); - - /* Strip palette & priority bits from transparent pixels */ - if((c & 0x0F) == 0x00) c &= 0x80; - - return (c); -} - -/* Input (bx): d5-d0=color, d6=priority/1, d7=sprite pixel marker */ -/* Input (sx): d5-d0=color, d6=priority, d7=unused */ -/* Output: d5-d0=color, d6=priority, d7=sprite pixel marker */ -static uint32 make_lut_obj(uint32 bx, uint32 sx) -{ - int c; - - int bf = (bx & 0x7F); - int bs = (bx & 0x80); - int sf = (sx & 0x7F); - - if((sx & 0x0F) == 0) return bx; - - c = (bs ? bf : sf); - - /* Strip palette bits from transparent pixels */ - if((c & 0x0F) == 0x00) c &= 0xC0; - - return (c | 0x80); -} - - -/* Input (bx): d5-d0=color, d6=priority, d7=opaque sprite pixel marker */ -/* Input (sx): d5-d0=color, d6=priority, d7=unused */ -/* Output: d5-d0=color, d6=zero/priority, d7=opaque sprite pixel marker */ -static uint32 make_lut_bgobj(uint32 bx, uint32 sx) -{ - int c; - - int bf = (bx & 0x3F); - int bs = (bx & 0x80); - int bp = (bx & 0x40); - int b = (bx & 0x0F); - - int sf = (sx & 0x3F); - int sp = (sx & 0x40); - int s = (sx & 0x0F); - - if(s == 0) return bx; - - /* Previous sprite has higher priority */ - if(bs) return bx; - - c = (sp ? sf : (bp ? (b ? bf : sf) : sf)); - - /* Strip palette & priority bits from transparent pixels */ - if((c & 0x0F) == 0x00) c &= 0x80; - - return (c | 0x80); -} - -/* Input (bx): d5-d0=color, d6=priority, d7=intensity (half/normal) */ -/* Input (sx): d5-d0=color, d6=priority, d7=sprite marker */ -/* Output: d5-d0=color, d6=intensity (half/normal), d7=(double/invalid) */ -static uint32 make_lut_bgobj_ste(uint32 bx, uint32 sx) -{ - int c; - - int bf = (bx & 0x3F); - int bp = (bx & 0x40); - int b = (bx & 0x0F); - int bi = (bx & 0x80) >> 1; - - int sf = (sx & 0x3F); - int sp = (sx & 0x40); - int s = (sx & 0x0F); - int si = sp | bi; - - if(sp) - { - if(s) - { - if((sf & 0x3E) == 0x3E) - { - if(sf & 1) - { - c = (bf | 0x00); - } - else - { - c = (bx & 0x80) ? (bf | 0x80) : (bf | 0x40); - } - } - else - { - if(sf == 0x0E || sf == 0x1E || sf == 0x2E) - { - c = (sf | 0x40); - } - else - { - c = (sf | si); - } - } - } - else - { - c = (bf | bi); - } - } - else - { - if(bp) - { - if(b) - { - c = (bf | bi); - } - else - { - if(s) - { - if((sf & 0x3E) == 0x3E) - { - if(sf & 1) - { - c = (bf | 0x00); - } - else - { - c = (bx & 0x80) ? (bf | 0x80) : (bf | 0x40); - } - } - else - { - if(sf == 0x0E || sf == 0x1E || sf == 0x2E) - { - c = (sf | 0x40); - } - else - { - c = (sf | si); - } - } - } - else - { - c = (bf | bi); - } - } - } - else - { - if(s) - { - if((sf & 0x3E) == 0x3E) - { - if(sf & 1) - { - c = (bf | 0x00); - } - else - { - c = (bx & 0x80) ? (bf | 0x80) : (bf | 0x40); - } - } - else - { - if(sf == 0x0E || sf == 0x1E || sf == 0x2E) - { - c = (sf | 0x40); - } - else - { - c = (sf | si); - } - } - } - else - { - c = (bf | bi); - } - } - } - - if((c & 0x0f) == 0x00) c &= 0xC0; - - return (c); -} - -/* Input (bx): d3-d0=color, d4=palette, d5=priority, d6=zero, d7=sprite pixel marker */ -/* Input (sx): d3-d0=color, d7-d4=zero */ -/* Output: d3-d0=color, d4=palette, d5=zero/priority, d6=zero, d7=sprite pixel marker */ -static uint32 make_lut_bgobj_m4(uint32 bx, uint32 sx) -{ - int c; - - int bf = (bx & 0x3F); - int bs = (bx & 0x80); - int bp = (bx & 0x20); - int b = (bx & 0x0F); - - int s = (sx & 0x0F); - int sf = (s | 0x10); /* force palette bit */ - - /* Transparent sprite pixel */ - if(s == 0) return bx; - - /* Previous sprite has higher priority */ - if(bs) return bx; - - /* note: priority bit is always 0 for Modes 0,1,2,3 */ - c = (bp ? (b ? bf : sf) : sf); - - return (c | 0x80); -} - - -/*--------------------------------------------------------------------------*/ -/* Pixel layer merging function */ -/*--------------------------------------------------------------------------*/ - -INLINE void merge(uint8 *srca, uint8 *srcb, uint8 *dst, uint8 *table, int width) -{ - do - { - *dst++ = table[(*srcb++ << 8) | (*srca++)]; - } - while (--width); -} - - -/*--------------------------------------------------------------------------*/ -/* Pixel color lookup tables initialization */ -/*--------------------------------------------------------------------------*/ - -static void palette_init(void) -{ - int r, g, b, i; - - /************************************************/ - /* Each R,G,B color channel is 4-bit with a */ - /* total of 15 different intensity levels. */ - /* */ - /* Color intensity depends on the mode: */ - /* */ - /* normal : xxx0 (0-14) */ - /* shadow : 0xxx (0-7) */ - /* highlight: 1xxx - 1 (7-14) */ - /* mode4 : xxxx(*) (0-15) */ - /* GG mode : xxxx (0-15) */ - /* */ - /* with x = original CRAM value (2, 3 or 4-bit) */ - /* (*) 2-bit CRAM value is expanded to 4-bit */ - /************************************************/ - - /* Initialize Mode 5 pixel color look-up tables */ - for (i = 0; i < 0x200; i++) - { - /* CRAM 9-bit value (BBBGGGRRR) */ - r = (i >> 0) & 7; - g = (i >> 3) & 7; - b = (i >> 6) & 7; - - /* Convert to output pixel format */ - pixel_lut[0][i] = MAKE_PIXEL(r,g,b); - pixel_lut[1][i] = MAKE_PIXEL(r<<1,g<<1,b<<1); - pixel_lut[2][i] = MAKE_PIXEL(r+7,g+7,b+7); - } - - /* Initialize Mode 4 pixel color look-up table */ - for (i = 0; i < 0x40; i++) - { - /* CRAM 6-bit value (000BBGGRR) */ - r = (i >> 0) & 3; - g = (i >> 2) & 3; - b = (i >> 4) & 3; - - /* Expand to full range & convert to output pixel format */ - pixel_lut_m4[i] = MAKE_PIXEL((r << 2) | r, (g << 2) | g, (b << 2) | b); - } -} - - -/*--------------------------------------------------------------------------*/ -/* Color palette update functions */ -/*--------------------------------------------------------------------------*/ - -void color_update_m4(int index, unsigned int data) -{ - switch (system_hw) - { - case SYSTEM_GG: - { - /* CRAM value (BBBBGGGGRRRR) */ - int r = (data >> 0) & 0x0F; - int g = (data >> 4) & 0x0F; - int b = (data >> 8) & 0x0F; - - /* Convert to output pixel */ - data = MAKE_PIXEL(r,g,b); - break; - } - - case SYSTEM_SG: - case SYSTEM_SGII: - { - /* Fixed TMS99xx palette */ - if (index & 0x0F) - { - /* Colors 1-15 */ - data = tms_palette[index & 0x0F]; - } - else - { - /* Backdrop color */ - data = tms_palette[reg[7] & 0x0F]; - } - break; - } - - default: - { - /* Test M4 bit */ - if (!(reg[0] & 0x04)) - { - if (system_hw & SYSTEM_MD) - { - /* Invalid Mode (black screen) */ - data = 0x00; - } - else if (system_hw != SYSTEM_GGMS) - { - /* Fixed CRAM palette */ - if (index & 0x0F) - { - /* Colors 1-15 */ - data = tms_crom[index & 0x0F]; - } - else - { - /* Backdrop color */ - data = tms_crom[reg[7] & 0x0F]; - } - } - } - - /* Mode 4 palette */ - data = pixel_lut_m4[data & 0x3F]; - break; - } - } - - - /* Input pixel: x0xiiiii (normal) or 01000000 (backdrop) */ - if (reg[0] & 0x04) - { - /* Mode 4 */ - pixel[0x00 | index] = data; - pixel[0x20 | index] = data; - pixel[0x80 | index] = data; - pixel[0xA0 | index] = data; - } - else - { - /* TMS99xx modes (palette bit forced to 1 because Game Gear uses CRAM palette #1) */ - if ((index == 0x40) || (index == (0x10 | (reg[7] & 0x0F)))) - { - /* Update backdrop color */ - pixel[0x40] = data; - - /* Update transparent color */ - pixel[0x10] = data; - pixel[0x30] = data; - pixel[0x90] = data; - pixel[0xB0] = data; - } - - if (index & 0x0F) - { - /* update non-transparent colors */ - pixel[0x00 | index] = data; - pixel[0x20 | index] = data; - pixel[0x80 | index] = data; - pixel[0xA0 | index] = data; - } - } -} - -void color_update_m5(int index, unsigned int data) -{ - /* Palette Mode */ - if (!(reg[0] & 0x04)) - { - /* Color value is limited to 00X00X00X */ - data &= 0x49; - } - - if(reg[12] & 0x08) - { - /* Mode 5 (Shadow/Normal/Highlight) */ - pixel[0x00 | index] = pixel_lut[0][data]; - pixel[0x40 | index] = pixel_lut[1][data]; - pixel[0x80 | index] = pixel_lut[2][data]; - } - else - { - /* Mode 5 (Normal) */ - data = pixel_lut[1][data]; - - /* Input pixel: xxiiiiii */ - pixel[0x00 | index] = data; - pixel[0x40 | index] = data; - pixel[0x80 | index] = data; - } -} - - -/*--------------------------------------------------------------------------*/ -/* Background layers rendering functions */ -/*--------------------------------------------------------------------------*/ - -/* Graphics I */ -void render_bg_m0(int line) -{ - uint8 color, name, pattern; - - uint8 *lb = &linebuf[0][0x20]; - uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; - uint8 *ct = &vram[((reg[3] << 6) & 0x3FC0)]; - uint8 *pg = &vram[((reg[4] << 11) & 0x3800) + (line & 7)]; - - /* 32 x 8 pixels */ - int width = 32; - - do - { - name = *nt++; - color = ct[name >> 3]; - pattern = pg[name << 3]; - - *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 1) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 0) & 1) << 2)) & 0x0F); - } - while (--width); -} - -/* Text */ -void render_bg_m1(int line) -{ - uint8 pattern; - uint8 color = reg[7]; - - uint8 *lb = &linebuf[0][0x20]; - uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line >> 3) * 40)]; - uint8 *pg = &vram[((reg[4] << 11) & 0x3800) + (line & 7)]; - - /* 40 x 6 pixels */ - int width = 40; - - /* Left border (8 pixels) */ - memset (lb, 0x40, 8); - lb += 8; - - do - { - pattern = pg[*nt++ << 3]; - - *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); - } - while (--width); - - /* Right borders (8 pixels) */ - memset(lb, 0x40, 8); -} - -/* Text + extended PG */ -void render_bg_m1x(int line) -{ - uint8 pattern; - uint8 *pg; - - uint8 color = reg[7]; - - uint8 *lb = &linebuf[0][0x20]; - uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line >> 3) * 40)]; - - uint16 pg_mask = ~0x3800 ^ (reg[4] << 11); - - /* 40 x 6 pixels */ - int width = 40; - - /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ - if (system_hw > SYSTEM_SMS) - { - pg_mask |= 0x1800; - } - - pg = &vram[((0x2000 + ((line & 0xC0) << 5)) & pg_mask) + (line & 7)]; - - /* Left border (8 pixels) */ - memset (lb, 0x40, 8); - lb += 8; - - do - { - pattern = pg[*nt++ << 3]; - - *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); - } - while (--width); - - /* Right borders (8 pixels) */ - memset(lb, 0x40, 8); -} - -/* Graphics II */ -void render_bg_m2(int line) -{ - uint8 color, pattern; - uint16 name; - uint8 *ct, *pg; - - uint8 *lb = &linebuf[0][0x20]; - uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; - - uint16 ct_mask = ~0x3FC0 ^ (reg[3] << 6); - uint16 pg_mask = ~0x3800 ^ (reg[4] << 11); - - /* 32 x 8 pixels */ - int width = 32; - - /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ - if (system_hw > SYSTEM_SMS) - { - ct_mask |= 0x1FC0; - pg_mask |= 0x1800; - } - - ct = &vram[((0x2000 + ((line & 0xC0) << 5)) & ct_mask) + (line & 7)]; - pg = &vram[((0x2000 + ((line & 0xC0) << 5)) & pg_mask) + (line & 7)]; - - do - { - name = *nt++ << 3 ; - color = ct[name & ct_mask]; - pattern = pg[name]; - - *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 1) & 1) << 2)) & 0x0F); - *lb++ = 0x10 | ((color >> (((pattern >> 0) & 1) << 2)) & 0x0F); - } - while (--width); -} - -/* Multicolor */ -void render_bg_m3(int line) -{ - uint8 color; - uint8 *lb = &linebuf[0][0x20]; - uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; - uint8 *pg = &vram[((reg[4] << 11) & 0x3800) + ((line >> 2) & 7)]; - - /* 32 x 8 pixels */ - int width = 32; - - do - { - color = pg[*nt++ << 3]; - - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - } - while (--width); -} - -/* Multicolor + extended PG */ -void render_bg_m3x(int line) -{ - uint8 color; - uint8 *pg; - - uint8 *lb = &linebuf[0][0x20]; - uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; - - uint16 pg_mask = ~0x3800 ^ (reg[4] << 11); - - /* 32 x 8 pixels */ - int width = 32; - - /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ - if (system_hw > SYSTEM_SMS) - { - pg_mask |= 0x1800; - } - - pg = &vram[((0x2000 + ((line & 0xC0) << 5)) & pg_mask) + ((line >> 2) & 7)]; - - do - { - color = pg[*nt++ << 3]; - - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - } - while (--width); -} - -/* Invalid (2+3/1+2+3) */ -void render_bg_inv(int line) -{ - uint8 color = reg[7]; - - uint8 *lb = &linebuf[0][0x20]; - - /* 40 x 6 pixels */ - int width = 40; - - /* Left border (8 pixels) */ - memset (lb, 0x40, 8); - lb += 8; - - do - { - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 4) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - *lb++ = 0x10 | ((color >> 0) & 0x0F); - } - while (--width); - - /* Right borders (8 pixels) */ - memset(lb, 0x40, 8); -} - -/* Mode 4 */ -void render_bg_m4(int line) -{ - int column; - uint16 *nt; - uint32 attr, atex, *src; - - /* 32 x 8 pixels */ - int width = 32; - - /* Horizontal scrolling */ - int index = ((reg[0] & 0x40) && (line < 0x10)) ? 0x100 : reg[0x08]; - int shift = index & 7; - - /* Background line buffer */ - uint32 *dst = (uint32 *)&linebuf[0][0x20 + shift]; - - /* Vertical scrolling */ - int v_line = line + vscroll; - - /* Pattern name table mask */ - uint16 nt_mask = ~0x3C00 ^ (reg[2] << 10); - - /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ - if (system_hw > SYSTEM_SMS) - { - nt_mask |= 0x400; - } - - /* Test for extended modes (Master System II & Game gear VDP only) */ - if (bitmap.viewport.h > 192) - { - /* Vertical scroll mask */ - v_line = v_line % 256; - - /* Pattern name Table */ - nt = (uint16 *)&vram[(0x3700 & nt_mask) + ((v_line >> 3) << 6)]; - } - else - { - /* Vertical scroll mask */ - v_line = v_line % 224; - - /* Pattern name Table */ - nt = (uint16 *)&vram[(0x3800 + ((v_line >> 3) << 6)) & nt_mask]; - } - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - /* Tile column index */ - index = (0x100 - index) >> 3; - - /* Clip left-most column if required */ - if (shift) - { - memset(&linebuf[0][0x20], 0, shift); - index++; - } - - /* Draw tiles */ - for(column = 0; column < width; column++, index++) - { - /* Stop vertical scrolling for rightmost eight tiles */ - if((column == 24) && (reg[0] & 0x80)) - { - /* Clear Pattern name table start address */ - if (bitmap.viewport.h > 192) - { - nt = (uint16 *)&vram[(0x3700 & nt_mask) + ((line >> 3) << 6)]; - } - else - { - nt = (uint16 *)&vram[(0x3800 + ((line >> 3) << 6)) & nt_mask]; - } - - /* Clear Pattern row index */ - v_line = (line & 7) << 3; - } - - /* Read name table attribute word */ - attr = nt[index % width]; -#ifndef LSB_FIRST - attr = (((attr & 0xFF) << 8) | ((attr & 0xFF00) >> 8)); -#endif - - /* Expand priority and palette bits */ - atex = atex_table[(attr >> 11) & 3]; - - /* Cached pattern data line (4 bytes = 4 pixels at once) */ - src = (uint32 *)&bg_pattern_cache[((attr & 0x7FF) << 6) | (v_line)]; - - /* Copy left & right half, adding the attribute bits in */ -#ifdef ALIGN_LONG - WRITE_LONG(dst, src[0] | atex); - dst++; - WRITE_LONG(dst, src[1] | atex); - dst++; -#else - *dst++ = (src[0] | atex); - *dst++ = (src[1] | atex); -#endif - } -} - -/* Mode 5 */ -#ifndef ALT_RENDERER -void render_bg_m5(int line) -{ - int column; - uint32 atex, atbuf, *src, *dst; - - /* Common data */ - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = *(uint32 *)&vsram[0]; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - - /* Window & Plane A */ - int a = (reg[18] & 0x1F) << 3; - int w = (reg[18] >> 7) & 1; - - /* Plane B width */ - int start = 0; - int end = bitmap.viewport.w >> 4; - - /* Plane B scroll */ -#ifdef LSB_FIRST - uint32 shift = (xscroll >> 16) & 0x0F; - uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); - uint32 v_line = (line + (yscroll >> 16)) & pf_row_mask; -#else - uint32 shift = (xscroll & 0x0F); - uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); - uint32 v_line = (line + yscroll) & pf_row_mask; -#endif - - /* Plane B name table */ - uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - if(shift) - { - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x10 + shift]; - - atbuf = nt[(index - 1) & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - else - { - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x20]; - } - - for(column = 0; column < end; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Plane A */ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); - v_line = (line + yscroll) & pf_row_mask; -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); - v_line = (line + (yscroll >> 16)) & pf_row_mask; -#endif - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - if(shift) - { - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index - 1) & pf_col_mask]; - } - - DRAW_COLUMN(atbuf, v_line) - } - else - { - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - } - - for(column = start; column < end; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - - /* Window */ - if (w) - { - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = (line & 7) << 3; - - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN(atbuf, v_line) - } - } - - /* Merge background layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); -} - -void render_bg_m5_vs(int line) -{ - int column; - uint32 atex, atbuf, *src, *dst; - uint32 v_line, *nt; - - /* Common data */ - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = 0; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - uint32 *vs = (uint32 *)&vsram[0]; - - /* Window & Plane A */ - int a = (reg[18] & 0x1F) << 3; - int w = (reg[18] >> 7) & 1; - - /* Plane B width */ - int start = 0; - int end = bitmap.viewport.w >> 4; - - /* Plane B horizontal scroll */ -#ifdef LSB_FIRST - uint32 shift = (xscroll >> 16) & 0x0F; - uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); -#else - uint32 shift = (xscroll & 0x0F); - uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); -#endif - - /* Left-most column vertical scrolling when partially shown horizontally (verified on PAL MD2) */ - /* TODO: check on Genesis 3 models since it apparently behaves differently */ - /* In H32 mode, vertical scrolling is disabled, in H40 mode, same value is used for both planes */ - /* See Formula One / Kawasaki Superbike Challenge (H32) & Gynoug / Cutie Suzuki no Ringside Angel (H40) */ - if (reg[12] & 1) - { - yscroll = vs[19] & (vs[19] >> 16); - } - - if(shift) - { - /* Plane B vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x10 + shift]; - - atbuf = nt[(index - 1) & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - else - { - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x20]; - } - - for(column = 0; column < end; column++, index++) - { - /* Plane B vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + (vs[column] >> 16)) & pf_row_mask; -#else - v_line = (line + vs[column]) & pf_row_mask; -#endif - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Plane A */ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A horizontal scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); -#endif - - if(shift) - { - /* Plane A vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index - 1) & pf_col_mask]; - } - - DRAW_COLUMN(atbuf, v_line) - } - else - { - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - } - - for(column = start; column < end; column++, index++) - { - /* Plane A vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + vs[column]) & pf_row_mask; -#else - v_line = (line + (vs[column] >> 16)) & pf_row_mask; -#endif - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - - /* Window */ - if (w) - { - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = (line & 7) << 3; - - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN(atbuf, v_line) - } - } - - /* Merge background layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); -} - -void render_bg_m5_im2(int line) -{ - int column; - uint32 atex, atbuf, *src, *dst; - - /* Common data */ - int odd = odd_frame; - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = *(uint32 *)&vsram[0]; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - - /* Window & Plane A */ - int a = (reg[18] & 0x1F) << 3; - int w = (reg[18] >> 7) & 1; - - /* Plane B width */ - int start = 0; - int end = bitmap.viewport.w >> 4; - - /* Plane B scroll */ -#ifdef LSB_FIRST - uint32 shift = (xscroll >> 16) & 0x0F; - uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); - uint32 v_line = (line + (yscroll >> 17)) & pf_row_mask; -#else - uint32 shift = (xscroll & 0x0F); - uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); - uint32 v_line = (line + (yscroll >> 1)) & pf_row_mask; -#endif - - /* Plane B name table */ - uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - if(shift) - { - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x10 + shift]; - - atbuf = nt[(index - 1) & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - else - { - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x20]; - } - - for(column = 0; column < end; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Plane A */ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); - v_line = (line + (yscroll >> 1)) & pf_row_mask; -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); - v_line = (line + (yscroll >> 17)) & pf_row_mask; -#endif - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - if(shift) - { - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index - 1) & pf_col_mask]; - } - - DRAW_COLUMN_IM2(atbuf, v_line) - } - else - { - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - } - - for(column = start; column < end; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - - /* Window */ - if (w) - { - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = ((line & 7) << 1 | odd) << 3; - - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - } - - /* Merge background layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); -} - -void render_bg_m5_im2_vs(int line) -{ - int column; - uint32 atex, atbuf, *src, *dst; - uint32 v_line, *nt; - - /* Common data */ - int odd = odd_frame; - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = 0; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - uint32 *vs = (uint32 *)&vsram[0]; - - /* Window & Plane A */ - int a = (reg[18] & 0x1F) << 3; - int w = (reg[18] >> 7) & 1; - - /* Plane B width */ - int start = 0; - int end = bitmap.viewport.w >> 4; - - /* Plane B horizontal scroll */ -#ifdef LSB_FIRST - uint32 shift = (xscroll >> 16) & 0x0F; - uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); -#else - uint32 shift = (xscroll & 0x0F); - uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); -#endif - - /* Left-most column vertical scrolling when partially shown horizontally (verified on PAL MD2) */ - /* TODO: check on Genesis 3 models since it apparently behaves differently */ - /* In H32 mode, vertical scrolling is disabled, in H40 mode, same value is used for both planes */ - /* See Formula One / Kawasaki Superbike Challenge (H32) & Gynoug / Cutie Suzuki no Ringside Angel (H40) */ - if (reg[12] & 1) - { - yscroll = (vs[19] >> 1) & (vs[19] >> 17); - } - - if(shift) - { - /* Plane B vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x10 + shift]; - - atbuf = nt[(index - 1) & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - else - { - /* Plane B line buffer */ - dst = (uint32 *)&linebuf[0][0x20]; - } - - for(column = 0; column < end; column++, index++) - { - /* Plane B vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + (vs[column] >> 17)) & pf_row_mask; -#else - v_line = (line + (vs[column] >> 1)) & pf_row_mask; -#endif - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Plane A */ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A horizontal scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); -#endif - - if(shift) - { - /* Plane A vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index - 1) & pf_col_mask]; - } - - DRAW_COLUMN_IM2(atbuf, v_line) - } - else - { - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - } - - for(column = start; column < end; column++, index++) - { - /* Plane A vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + (vs[column] >> 1)) & pf_row_mask; -#else - v_line = (line + (vs[column] >> 17)) & pf_row_mask; -#endif - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - - /* Window */ - if (w) - { - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = ((line & 7) << 1 | odd) << 3; - - /* Plane A line buffer */ - dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - } - - /* Merge background layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); -} - -#else - -void render_bg_m5(int line) -{ - int column, start, end; - uint32 atex, atbuf, *src, *dst; - uint32 shift, index, v_line, *nt; - uint8 *lb; - - /* Scroll Planes common data */ - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = *(uint32 *)&vsram[0]; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - - /* Number of columns to draw */ - int width = bitmap.viewport.w >> 4; - - /* Layer priority table */ - uint8 *table = lut[(reg[12] & 8) >> 2]; - - /* Window vertical range (cell 0-31) */ - int a = (reg[18] & 0x1F) << 3; - - /* Window position (0=top, 1=bottom) */ - int w = (reg[18] >> 7) & 1; - - /* Test against current line */ - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Plane A */ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); - v_line = (line + yscroll) & pf_row_mask; -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); - v_line = (line + (yscroll >> 16)) & pf_row_mask; -#endif - - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - if(shift) - { - /* Left-most column is partially shown */ - dst -= 4; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index-1) & pf_col_mask]; - } - - DRAW_COLUMN(atbuf, v_line) - } - - for(column = start; column < end; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - else - { - /* Window width */ - start = 0; - end = width; - } - - /* Window Plane */ - if (w) - { - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; - - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = (line & 7) << 3; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN(atbuf, v_line) - } - } - - /* Plane B scroll */ -#ifdef LSB_FIRST - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); - v_line = (line + (yscroll >> 16)) & pf_row_mask; -#else - shift = (xscroll & 0x0F); - index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); - v_line = (line + yscroll) & pf_row_mask; -#endif - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - /* Background line buffer */ - lb = &linebuf[0][0x20]; - - if(shift) - { - /* Left-most column is partially shown */ - lb -= (0x10 - shift); - - atbuf = nt[(index-1) & pf_col_mask]; - DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) - } - - for(column = 0; column < width; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) - } -} - -void render_bg_m5_vs(int line) -{ - int column, start, end; - uint32 atex, atbuf, *src, *dst; - uint32 shift, index, v_line, *nt; - uint8 *lb; - - /* Scroll Planes common data */ - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = 0; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - uint32 *vs = (uint32 *)&vsram[0]; - - /* Number of columns to draw */ - int width = bitmap.viewport.w >> 4; - - /* Layer priority table */ - uint8 *table = lut[(reg[12] & 8) >> 2]; - - /* Window vertical range (cell 0-31) */ - int a = (reg[18] & 0x1F) << 3; - - /* Window position (0=top, 1=bottom) */ - int w = (reg[18] >> 7) & 1; - - /* Test against current line */ - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Left-most column vertical scrolling when partially shown horizontally */ - /* Same value for both planes, only in 40-cell mode, verified on PAL MD2 */ - /* See Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge */ - if (reg[12] & 1) - { - yscroll = vs[19] & (vs[19] >> 16); - } - - /* Plane A*/ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A horizontal scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); -#endif - - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; - - if(shift) - { - /* Left-most column is partially shown */ - dst -= 4; - - /* Plane A vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index-1) & pf_col_mask]; - } - - DRAW_COLUMN(atbuf, v_line) - } - - for(column = start; column < end; column++, index++) - { - /* Plane A vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + vs[column]) & pf_row_mask; -#else - v_line = (line + (vs[column] >> 16)) & pf_row_mask; -#endif - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - else - { - /* Window width */ - start = 0; - end = width; - } - - /* Window Plane */ - if (w) - { - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; - - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = (line & 7) << 3; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN(atbuf, v_line) - } - } - - /* Plane B horizontal scroll */ -#ifdef LSB_FIRST - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); -#else - shift = (xscroll & 0x0F); - index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); -#endif - - /* Background line buffer */ - lb = &linebuf[0][0x20]; - - if(shift) - { - /* Left-most column is partially shown */ - lb -= (0x10 - shift); - - /* Plane B vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - atbuf = nt[(index-1) & pf_col_mask]; - DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) - } - - for(column = 0; column < width; column++, index++) - { - /* Plane B vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + (vs[column] >> 16)) & pf_row_mask; -#else - v_line = (line + vs[column]) & pf_row_mask; -#endif - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) - } -} - -void render_bg_m5_im2(int line) -{ - int column, start, end; - uint32 atex, atbuf, *src, *dst; - uint32 shift, index, v_line, *nt; - uint8 *lb; - - /* Scroll Planes common data */ - int odd = odd_frame; - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = *(uint32 *)&vsram[0]; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - - /* Number of columns to draw */ - int width = bitmap.viewport.w >> 4; - - /* Layer priority table */ - uint8 *table = lut[(reg[12] & 8) >> 2]; - - /* Window vertical range (cell 0-31) */ - int a = (reg[18] & 0x1F) << 3; - - /* Window position (0=top, 1=bottom) */ - int w = (reg[18] >> 7) & 1; - - /* Test against current line */ - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Plane A */ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); - v_line = (line + (yscroll >> 1)) & pf_row_mask; -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); - v_line = (line + (yscroll >> 17)) & pf_row_mask; -#endif - - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - if(shift) - { - /* Left-most column is partially shown */ - dst -= 4; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index-1) & pf_col_mask]; - } - - DRAW_COLUMN_IM2(atbuf, v_line) - } - - for(column = start; column < end; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - else - { - /* Window width */ - start = 0; - end = width; - } - - /* Window Plane */ - if (w) - { - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; - - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = ((line & 7) << 1 | odd) << 3; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - } - - /* Plane B scroll */ -#ifdef LSB_FIRST - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); - v_line = (line + (yscroll >> 17)) & pf_row_mask; -#else - shift = (xscroll & 0x0F); - index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); - v_line = (line + (yscroll >> 1)) & pf_row_mask; -#endif - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - /* Background line buffer */ - lb = &linebuf[0][0x20]; - - if(shift) - { - /* Left-most column is partially shown */ - lb -= (0x10 - shift); - - atbuf = nt[(index-1) & pf_col_mask]; - DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) - } - - for(column = 0; column < width; column++, index++) - { - atbuf = nt[index & pf_col_mask]; - DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) - } -} - -void render_bg_m5_im2_vs(int line) -{ - int column, start, end; - uint32 atex, atbuf, *src, *dst; - uint32 shift, index, v_line, *nt; - uint8 *lb; - - /* common data */ - int odd = odd_frame; - uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; - uint32 yscroll = 0; - uint32 pf_col_mask = playfield_col_mask; - uint32 pf_row_mask = playfield_row_mask; - uint32 pf_shift = playfield_shift; - uint32 *vs = (uint32 *)&vsram[0]; - - /* Number of columns to draw */ - int width = bitmap.viewport.w >> 4; - - /* Layer priority table */ - uint8 *table = lut[(reg[12] & 8) >> 2]; - - /* Window vertical range (cell 0-31) */ - uint32 a = (reg[18] & 0x1F) << 3; - - /* Window position (0=top, 1=bottom) */ - uint32 w = (reg[18] >> 7) & 1; - - /* Test against current line */ - if (w == (line >= a)) - { - /* Window takes up entire line */ - a = 0; - w = 1; - } - else - { - /* Window and Plane A share the line */ - a = clip[0].enable; - w = clip[1].enable; - } - - /* Left-most column vertical scrolling when partially shown horizontally */ - /* Same value for both planes, only in 40-cell mode, verified on PAL MD2 */ - /* See Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge */ - if (reg[12] & 1) - { - /* only in 40-cell mode, verified on MD2 */ - yscroll = (vs[19] >> 1) & (vs[19] >> 17); - } - - /* Plane A */ - if (a) - { - /* Plane A width */ - start = clip[0].left; - end = clip[0].right; - - /* Plane A horizontal scroll */ -#ifdef LSB_FIRST - shift = (xscroll & 0x0F); - index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); -#else - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); -#endif - - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; - - if(shift) - { - /* Left-most column is partially shown */ - dst -= 4; - - /* Plane A vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - /* Window bug */ - if (start) - { - atbuf = nt[index & pf_col_mask]; - } - else - { - atbuf = nt[(index-1) & pf_col_mask]; - } - - DRAW_COLUMN_IM2(atbuf, v_line) - } - - for(column = start; column < end; column++, index++) - { - /* Plane A vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + (vs[column] >> 1)) & pf_row_mask; -#else - v_line = (line + (vs[column] >> 17)) & pf_row_mask; -#endif - - /* Plane A name table */ - nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - - /* Window width */ - start = clip[1].left; - end = clip[1].right; - } - else - { - /* Window width */ - start = 0; - end = width; - } - - /* Window Plane */ - if (w) - { - /* Background line buffer */ - dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; - - /* Window name table */ - nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; - - /* Pattern row index */ - v_line = ((line & 7) << 1 | odd) << 3; - - for(column = start; column < end; column++) - { - atbuf = nt[column]; - DRAW_COLUMN_IM2(atbuf, v_line) - } - } - - /* Plane B horizontal scroll */ -#ifdef LSB_FIRST - shift = (xscroll >> 16) & 0x0F; - index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); -#else - shift = (xscroll & 0x0F); - index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); -#endif - - /* Background line buffer */ - lb = &linebuf[0][0x20]; - - if(shift) - { - /* Left-most column is partially shown */ - lb -= (0x10 - shift); - - /* Plane B vertical scroll */ - v_line = (line + yscroll) & pf_row_mask; - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - atbuf = nt[(index-1) & pf_col_mask]; - DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) - } - - for(column = 0; column < width; column++, index++) - { - /* Plane B vertical scroll */ -#ifdef LSB_FIRST - v_line = (line + (vs[column] >> 17)) & pf_row_mask; -#else - v_line = (line + (vs[column] >> 1)) & pf_row_mask; -#endif - - /* Plane B name table */ - nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - atbuf = nt[index & pf_col_mask]; - DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) - } -} -#endif - - -/*--------------------------------------------------------------------------*/ -/* Sprite layer rendering functions */ -/*--------------------------------------------------------------------------*/ - -void render_obj_tms(int line) -{ - int x, start, end; - uint8 *lb, *sg; - uint8 color, pattern[2]; - uint16 temp; - - /* Sprite list for current line */ - object_info_t *object_info = obj_info[line]; - int count = object_count[line]; - - /* Default sprite width (8 pixels) */ - int width = 8; - - /* Adjust width for 16x16 sprites */ - width <<= ((reg[1] & 0x02) >> 1); - - /* Adjust width for zoomed sprites */ - width <<= (reg[1] & 0x01); - - /* Latch SOVR flag from previous line to VDP status */ - status |= spr_ovr; - - /* Clear SOVR flag for current line */ - spr_ovr = 0; - - /* Draw sprites in front-to-back order */ - while (count--) - { - /* Sprite X position */ - start = object_info->xpos; - - /* Sprite Color + Early Clock bit */ - color = object_info->size; - - /* X position shift (32 pixels) */ - start -= ((color & 0x80) >> 2); - - /* Pointer to line buffer */ - lb = &linebuf[0][0x20 + start]; - - if ((start + width) > 256) - { - /* Clip sprites on right edge */ - end = 256 - start; - start = 0; - } - else - { - end = width; - - if (start < 0) - { - /* Clip sprites on left edge */ - start = 0 - start; - } - else - { - start = 0; - } - } - - /* Sprite Color (0-15) */ - color &= 0x0F; - - /* Sprite Pattern Name */ - temp = object_info->attr; - - /* Mask two LSB for 16x16 sprites */ - temp &= ~((reg[1] & 0x02) >> 0); - temp &= ~((reg[1] & 0x02) >> 1); - - /* Pointer to sprite generator table */ - sg = (uint8 *)&vram[((reg[6] << 11) & 0x3800) | (temp << 3) | object_info->ypos]; - - /* Sprite Pattern data (2 x 8 pixels) */ - pattern[0] = sg[0x00]; - pattern[1] = sg[0x10]; - - if (reg[1] & 0x01) - { - /* Zoomed sprites are rendered at half speed */ - for (x=start; x> 4) & 1]; - temp = (temp >> (7 - ((x >> 1) & 7))) & 0x01; - temp = temp * color; - temp |= (lb[x] << 8); - lb[x] = lut[5][temp]; - status |= ((temp & 0x8000) >> 10); - temp &= 0x00FF; - temp |= (lb[x+1] << 8); - lb[x+1] = lut[5][temp]; - status |= ((temp & 0x8000) >> 10); - } - } - else - { - /* Normal sprites */ - for (x=start; x> 3) & 1]; - temp = (temp >> (7 - (x & 7))) & 0x01; - temp = temp * color; - temp |= (lb[x] << 8); - lb[x] = lut[5][temp]; - status |= ((temp & 0x8000) >> 10); - } - } - - /* Next sprite entry */ - object_info++; - } - - /* handle Game Gear reduced screen (160x144) */ - if ((system_hw == SYSTEM_GG) && !config.gg_extra && (v_counter < bitmap.viewport.h)) - { - int line = v_counter - (bitmap.viewport.h - 144) / 2; - if ((line < 0) || (line >= 144)) - { - memset(&linebuf[0][0x20], 0x40, 256); - } - else - { - if (bitmap.viewport.x > 0) - { - memset(&linebuf[0][0x20], 0x40, 48); - memset(&linebuf[0][0x20+48+160], 0x40, 48); - } - } - } -} - -void render_obj_m4(int line) -{ - int i, xpos, end; - uint8 *src, *lb; - uint16 temp; - - /* Sprite list for current line */ - object_info_t *object_info = obj_info[line]; - int count = object_count[line]; - - /* Default sprite width */ - int width = 8; - - /* Sprite Generator address mask (LSB is masked for 8x16 sprites) */ - uint16 sg_mask = (~0x1C0 ^ (reg[6] << 6)) & (~((reg[1] & 0x02) >> 1)); - - /* Zoomed sprites (not working on Genesis VDP) */ - if (system_hw < SYSTEM_MD) - { - width <<= (reg[1] & 0x01); - } - - /* Unused bits used as a mask on 315-5124 VDP only */ - if (system_hw > SYSTEM_SMS) - { - sg_mask |= 0xC0; - } - - /* Latch SOVR flag from previous line to VDP status */ - status |= spr_ovr; - - /* Clear SOVR flag for current line */ - spr_ovr = 0; - - /* Draw sprites in front-to-back order */ - while (count--) - { - /* Sprite pattern index */ - temp = (object_info->attr | 0x100) & sg_mask; - - /* Pointer to pattern cache line */ - src = (uint8 *)&bg_pattern_cache[(temp << 6) | (object_info->ypos << 3)]; - - /* Sprite X position */ - xpos = object_info->xpos; - - /* X position shift */ - xpos -= (reg[0] & 0x08); - - if (xpos < 0) - { - /* Clip sprites on left edge */ - src = src - xpos; - end = xpos + width; - xpos = 0; - } - else if ((xpos + width) > 256) - { - /* Clip sprites on right edge */ - end = 256 - xpos; - } - else - { - /* Sprite maximal width */ - end = width; - } - - /* Pointer to line buffer */ - lb = &linebuf[0][0x20 + xpos]; - - if (width > 8) - { - /* Draw sprite pattern (zoomed sprites are rendered at half speed) */ - DRAW_SPRITE_TILE_ACCURATE_2X(end,0,lut[5]) - - /* 315-5124 VDP specific */ - if (system_hw < SYSTEM_SMS2) - { - /* only 4 first sprites can be zoomed */ - if (count == (object_count[line] - 4)) - { - /* Set default width for remaining sprites */ - width = 8; - } - } - } - else - { - /* Draw sprite pattern */ - DRAW_SPRITE_TILE_ACCURATE(end,0,lut[5]) - } - - /* Next sprite entry */ - object_info++; - } - - /* handle Game Gear reduced screen (160x144) */ - if ((system_hw == SYSTEM_GG) && !config.gg_extra && (v_counter < bitmap.viewport.h)) - { - int line = v_counter - (bitmap.viewport.h - 144) / 2; - if ((line < 0) || (line >= 144)) - { - memset(&linebuf[0][0x20], 0x40, 256); - } - else - { - if (bitmap.viewport.x > 0) - { - memset(&linebuf[0][0x20], 0x40, 48); - memset(&linebuf[0][0x20+48+160], 0x40, 48); - } - } - } -} - -void render_obj_m5(int line) -{ - int i, column; - int xpos, width; - int pixelcount = 0; - int masked = 0; - int max_pixels = MODE5_MAX_SPRITE_PIXELS; - - uint8 *src, *s, *lb; - uint32 temp, v_line; - uint32 attr, name, atex; - - /* Sprite list for current line */ - object_info_t *object_info = obj_info[line]; - int count = object_count[line]; - - /* Draw sprites in front-to-back order */ - while (count--) - { - /* Sprite X position */ - xpos = object_info->xpos; - - /* Sprite masking */ - if (xpos) - { - /* Requires at least one sprite with xpos > 0 */ - spr_ovr = 1; - } - else if (spr_ovr) - { - /* Remaining sprites are not drawn */ - masked = 1; - } - - /* Display area offset */ - xpos = xpos - 0x80; - - /* Sprite size */ - temp = object_info->size; - - /* Sprite width */ - width = 8 + ((temp & 0x0C) << 1); - - /* Update pixel count (off-screen sprites are included) */ - pixelcount += width; - - /* Is sprite across visible area ? */ - if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) - { - /* Sprite attributes */ - attr = object_info->attr; - - /* Sprite vertical offset */ - v_line = object_info->ypos; - - /* Sprite priority + palette bits */ - atex = (attr >> 9) & 0x70; - - /* Pattern name base */ - name = attr & 0x07FF; - - /* Mask vflip/hflip */ - attr &= 0x1800; - - /* Pointer into pattern name offset look-up table */ - s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; - - /* Pointer into line buffer */ - lb = &linebuf[0][0x20 + xpos]; - - /* Max. number of sprite pixels rendered per line */ - if (pixelcount > max_pixels) - { - /* Adjust number of pixels to draw */ - width -= (pixelcount - max_pixels); - } - - /* Number of tiles to draw */ - width = width >> 3; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - /* Draw sprite patterns */ - for (column = 0; column < width; column++, lb+=8) - { - temp = attr | ((name + s[column]) & 0x07FF); - src = &bg_pattern_cache[(temp << 6) | (v_line)]; - DRAW_SPRITE_TILE(8,atex,lut[1]) - } - } - - /* Sprite limit */ - if (pixelcount >= max_pixels) - { - /* Sprite masking is effective on next line if max pixel width is reached */ - spr_ovr = (pixelcount >= bitmap.viewport.w); - - /* Stop sprite rendering */ - return; - } - - /* Next sprite entry */ - object_info++; - } - - /* Clear sprite masking for next line */ - spr_ovr = 0; -} - -void render_obj_m5_ste(int line) -{ - int i, column; - int xpos, width; - int pixelcount = 0; - int masked = 0; - int max_pixels = MODE5_MAX_SPRITE_PIXELS; - - uint8 *src, *s, *lb; - uint32 temp, v_line; - uint32 attr, name, atex; - - /* Sprite list for current line */ - object_info_t *object_info = obj_info[line]; - int count = object_count[line]; - - /* Clear sprite line buffer */ - memset(&linebuf[1][0], 0, bitmap.viewport.w + 0x40); - - /* Draw sprites in front-to-back order */ - while (count--) - { - /* Sprite X position */ - xpos = object_info->xpos; - - /* Sprite masking */ - if (xpos) - { - /* Requires at least one sprite with xpos > 0 */ - spr_ovr = 1; - } - else if (spr_ovr) - { - /* Remaining sprites are not drawn */ - masked = 1; - } - - /* Display area offset */ - xpos = xpos - 0x80; - - /* Sprite size */ - temp = object_info->size; - - /* Sprite width */ - width = 8 + ((temp & 0x0C) << 1); - - /* Update pixel count (off-screen sprites are included) */ - pixelcount += width; - - /* Is sprite across visible area ? */ - if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) - { - /* Sprite attributes */ - attr = object_info->attr; - - /* Sprite vertical offset */ - v_line = object_info->ypos; - - /* Sprite priority + palette bits */ - atex = (attr >> 9) & 0x70; - - /* Pattern name base */ - name = attr & 0x07FF; - - /* Mask vflip/hflip */ - attr &= 0x1800; - - /* Pointer into pattern name offset look-up table */ - s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; - - /* Pointer into line buffer */ - lb = &linebuf[1][0x20 + xpos]; - - /* Adjust number of pixels to draw for sprite limit */ - if (pixelcount > max_pixels) - { - width -= (pixelcount - max_pixels); - } - - /* Number of tiles to draw */ - width = width >> 3; - - /* Pattern row index */ - v_line = (v_line & 7) << 3; - - /* Draw sprite patterns */ - for (column = 0; column < width; column++, lb+=8) - { - temp = attr | ((name + s[column]) & 0x07FF); - src = &bg_pattern_cache[(temp << 6) | (v_line)]; - DRAW_SPRITE_TILE(8,atex,lut[3]) - } - } - - /* Sprite limit */ - if (pixelcount >= max_pixels) - { - /* Sprite masking is effective on next line if max pixel width is reached */ - spr_ovr = (pixelcount >= bitmap.viewport.w); - - /* Merge background & sprite layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); - - /* Stop sprite rendering */ - return; - } - - /* Next sprite entry */ - object_info++; - } - - /* Clear sprite masking for next line */ - spr_ovr = 0; - - /* Merge background & sprite layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); -} - -void render_obj_m5_im2(int line) -{ - int i, column; - int xpos, width; - int pixelcount = 0; - int masked = 0; - int odd = odd_frame; - int max_pixels = MODE5_MAX_SPRITE_PIXELS; - - uint8 *src, *s, *lb; - uint32 temp, v_line; - uint32 attr, name, atex; - - /* Sprite list for current line */ - object_info_t *object_info = obj_info[line]; - int count = object_count[line]; - - /* Draw sprites in front-to-back order */ - while (count--) - { - /* Sprite X position */ - xpos = object_info->xpos; - - /* Sprite masking */ - if (xpos) - { - /* Requires at least one sprite with xpos > 0 */ - spr_ovr = 1; - } - else if (spr_ovr) - { - /* Remaining sprites are not drawn */ - masked = 1; - } - - /* Display area offset */ - xpos = xpos - 0x80; - - /* Sprite size */ - temp = object_info->size; - - /* Sprite width */ - width = 8 + ((temp & 0x0C) << 1); - - /* Update pixel count (off-screen sprites are included) */ - pixelcount += width; - - /* Is sprite across visible area ? */ - if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) - { - /* Sprite attributes */ - attr = object_info->attr; - - /* Sprite y offset */ - v_line = object_info->ypos; - - /* Sprite priority + palette bits */ - atex = (attr >> 9) & 0x70; - - /* Pattern name base */ - name = attr & 0x03FF; - - /* Mask vflip/hflip */ - attr &= 0x1800; - - /* Pattern name offset lookup table */ - s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; - - /* Pointer into line buffer */ - lb = &linebuf[0][0x20 + xpos]; - - /* Adjust width for sprite limit */ - if (pixelcount > max_pixels) - { - width -= (pixelcount - max_pixels); - } - - /* Number of tiles to draw */ - width = width >> 3; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - /* Render sprite patterns */ - for(column = 0; column < width; column ++, lb+=8) - { - temp = attr | (((name + s[column]) & 0x3ff) << 1); - src = &bg_pattern_cache[((temp << 6) | (v_line)) ^ ((attr & 0x1000) >> 6)]; - DRAW_SPRITE_TILE(8,atex,lut[1]) - } - } - - /* Sprite Limit */ - if (pixelcount >= max_pixels) - { - /* Sprite masking is effective on next line if max pixel width is reached */ - spr_ovr = (pixelcount >= bitmap.viewport.w); - - /* Stop sprite rendering */ - return; - } - - /* Next sprite entry */ - object_info++; - } - - /* Clear sprite masking for next line */ - spr_ovr = 0; -} - -void render_obj_m5_im2_ste(int line) -{ - int i, column; - int xpos, width; - int pixelcount = 0; - int masked = 0; - int odd = odd_frame; - int max_pixels = MODE5_MAX_SPRITE_PIXELS; - - uint8 *src, *s, *lb; - uint32 temp, v_line; - uint32 attr, name, atex; - - /* Sprite list for current line */ - object_info_t *object_info = obj_info[line]; - int count = object_count[line]; - - /* Clear sprite line buffer */ - memset(&linebuf[1][0], 0, bitmap.viewport.w + 0x40); - - /* Draw sprites in front-to-back order */ - while (count--) - { - /* Sprite X position */ - xpos = object_info->xpos; - - /* Sprite masking */ - if (xpos) - { - /* Requires at least one sprite with xpos > 0 */ - spr_ovr = 1; - } - else if (spr_ovr) - { - /* Remaining sprites are not drawn */ - masked = 1; - } - - /* Display area offset */ - xpos = xpos - 0x80; - - /* Sprite size */ - temp = object_info->size; - - /* Sprite width */ - width = 8 + ((temp & 0x0C) << 1); - - /* Update pixel count (off-screen sprites are included) */ - pixelcount += width; - - /* Is sprite across visible area ? */ - if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) - { - /* Sprite attributes */ - attr = object_info->attr; - - /* Sprite y offset */ - v_line = object_info->ypos; - - /* Sprite priority + palette bits */ - atex = (attr >> 9) & 0x70; - - /* Pattern name base */ - name = attr & 0x03FF; - - /* Mask vflip/hflip */ - attr &= 0x1800; - - /* Pattern name offset lookup table */ - s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; - - /* Pointer into line buffer */ - lb = &linebuf[1][0x20 + xpos]; - - /* Adjust width for sprite limit */ - if (pixelcount > max_pixels) - { - width -= (pixelcount - max_pixels); - } - - /* Number of tiles to draw */ - width = width >> 3; - - /* Pattern row index */ - v_line = (((v_line & 7) << 1) | odd) << 3; - - /* Render sprite patterns */ - for(column = 0; column < width; column ++, lb+=8) - { - temp = attr | (((name + s[column]) & 0x3ff) << 1); - src = &bg_pattern_cache[((temp << 6) | (v_line)) ^ ((attr & 0x1000) >> 6)]; - DRAW_SPRITE_TILE(8,atex,lut[3]) - } - } - - /* Sprite Limit */ - if (pixelcount >= max_pixels) - { - /* Sprite masking is effective on next line if max pixel width is reached */ - spr_ovr = (pixelcount >= bitmap.viewport.w); - - /* Merge background & sprite layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); - - /* Stop sprite rendering */ - return; - } - - /* Next sprite entry */ - object_info++; - } - - /* Clear sprite masking for next line */ - spr_ovr = 0; - - /* Merge background & sprite layers */ - merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); -} - - -/*--------------------------------------------------------------------------*/ -/* Sprites Parsing functions */ -/*--------------------------------------------------------------------------*/ - -void parse_satb_tms(int line) -{ - int i = 0; - - /* Sprite counter (4 max. per line) */ - int count = 0; - - /* no sprites in Text modes */ - if (!(reg[1] & 0x10)) - { - /* Y position */ - int ypos; - - /* Sprite list for next line */ - object_info_t *object_info = obj_info[(line + 1) & 1]; - - /* Pointer to sprite attribute table */ - uint8 *st = &vram[(reg[5] << 7) & 0x3F80]; - - /* Sprite height (8 pixels by default) */ - int height = 8; - - /* Adjust height for 16x16 sprites */ - height <<= ((reg[1] & 0x02) >> 1); - - /* Adjust height for zoomed sprites */ - height <<= (reg[1] & 0x01); - - /* Parse Sprite Table (32 entries) */ - do - { - /* Sprite Y position */ - ypos = st[i << 2]; - - /* Check end of sprite list marker */ - if (ypos == 0xD0) - { - break; - } - - /* Wrap Y coordinate for sprites > 256-32 */ - if (ypos >= 224) - { - ypos -= 256; - } - - /* Y range */ - ypos = line - ypos; - - /* Sprite is visible on this line ? */ - if ((ypos >= 0) && (ypos < height)) - { - /* Sprite overflow */ - if (count == TMS_MAX_SPRITES_PER_LINE) - { - /* Flag is set only during active area */ - if (line < bitmap.viewport.h) - { - spr_ovr = 0x40; - } - break; - } - - /* Adjust Y range back for zoomed sprites */ - ypos >>= (reg[1] & 0x01); - - /* Store sprite attributes for later processing */ - object_info->ypos = ypos; - object_info->xpos = st[(i << 2) + 1]; - object_info->attr = st[(i << 2) + 2]; - object_info->size = st[(i << 2) + 3]; - - /* Increment Sprite count */ - ++count; - - /* Next sprite entry */ - object_info++; - } - } - while (++i < 32); - } - - /* Update sprite count for next line */ - object_count[(line + 1) & 1] = count; - - /* Insert number of last sprite entry processed */ - status = (status & 0xE0) | (i & 0x1F); -} - -void parse_satb_m4(int line) -{ - int i = 0; - uint8 *st; - - /* Sprite counter (8 max. per line) */ - int count = 0; - - /* Y position */ - int ypos; - - /* Sprite list for next line */ - object_info_t *object_info = obj_info[(line + 1) & 1]; - - /* Sprite height (8x8 or 8x16) */ - int height = 8 + ((reg[1] & 0x02) << 2); - - /* Sprite attribute table address mask */ - uint16 st_mask = ~0x3F80 ^ (reg[5] << 7); - - /* Unused bits used as a mask on 315-5124 VDP only */ - if (system_hw > SYSTEM_SMS) - { - st_mask |= 0x80; - } - - /* Pointer to sprite attribute table */ - st = &vram[st_mask & 0x3F00]; - - /* Parse Sprite Table (64 entries) */ - do - { - /* Sprite Y position */ - ypos = st[i]; - - /* Check end of sprite list marker (no effect in extended modes) */ - if ((ypos == 208) && (bitmap.viewport.h == 192)) - { - break; - } - - /* Wrap Y coordinate (NB: this is likely not 100% accurate and needs to be verified on real hardware) */ - if (ypos > (bitmap.viewport.h + 16)) - { - ypos -= 256; - } - - /* Y range */ - ypos = line - ypos; - - /* Adjust Y range for zoomed sprites (not working on Mega Drive VDP) */ - if (system_hw < SYSTEM_MD) - { - ypos >>= (reg[1] & 0x01); - } - - /* Check if sprite is visible on this line */ - if ((ypos >= 0) && (ypos < height)) - { - /* Sprite overflow */ - if (count == MODE4_MAX_SPRITES_PER_LINE) - { - /* Flag is set only during active area */ - if ((line >= 0) && (line < bitmap.viewport.h)) - { - spr_ovr = 0x40; - } - break; - } - - /* Store sprite attributes for later processing */ - object_info->ypos = ypos; - object_info->xpos = st[(0x80 + (i << 1)) & st_mask]; - object_info->attr = st[(0x81 + (i << 1)) & st_mask]; - - /* Increment Sprite count */ - ++count; - - /* Next sprite entry */ - object_info++; - } - } - while (++i < 64); - - /* Update sprite count for next line */ - object_count[(line + 1) & 1] = count; -} - -void parse_satb_m5(int line) -{ - /* Y position */ - int ypos; - - /* Sprite height (8,16,24,32 pixels)*/ - int height; - - /* Sprite size data */ - int size; - - /* Sprite link data */ - int link = 0; - - /* Sprite counter */ - int count = 0; - - /* max. number of rendered sprites (16 or 20 sprites per line by default) */ - int max = MODE5_MAX_SPRITES_PER_LINE; - - /* max. number of parsed sprites (64 or 80 sprites per line by default) */ - int total = max_sprite_pixels >> 2; - - /* Pointer to sprite attribute table */ - uint16 *p = (uint16 *) &vram[satb]; - - /* Pointer to internal RAM */ - uint16 *q = (uint16 *) &sat[0]; - - /* Sprite list for next line */ - object_info_t *object_info = obj_info[(line + 1) & 1]; - - /* Adjust line offset */ - line += 0x81; - - do - { - /* Read Y position from internal SAT cache */ - ypos = (q[link] >> im2_flag) & 0x1FF; - - /* Check if sprite Y position has been reached */ - if (line >= ypos) - { - /* Read sprite size from internal SAT cache */ - size = q[link + 1] >> 8; - - /* Sprite height */ - height = 8 + ((size & 3) << 3); - - /* Y range */ - ypos = line - ypos; - - /* Check if sprite is visible on current line */ - if (ypos < height) - { - /* Sprite overflow */ - if (count == max) - { - status |= 0x40; - break; - } - - /* Update sprite list (only name, attribute & xpos are parsed from VRAM) */ - object_info->attr = p[link + 2]; - object_info->xpos = p[link + 3] & 0x1ff; - object_info->ypos = ypos; - object_info->size = size & 0x0f; - - /* Increment Sprite count */ - ++count; - - /* Next sprite entry */ - object_info++; - } - } - - /* Read link data from internal SAT cache */ - link = (q[link + 1] & 0x7F) << 2; - - /* Stop parsing if link data points to first entry (#0) or after the last entry (#64 in H32 mode, #80 in H40 mode) */ - if ((link == 0) || (link >= bitmap.viewport.w)) break; - } - while (--total); - - /* Update sprite count for next line (line value already incremented) */ - object_count[line & 1] = count; -} - - -/*--------------------------------------------------------------------------*/ -/* Pattern cache update function */ -/*--------------------------------------------------------------------------*/ - -void update_bg_pattern_cache_m4(int index) -{ - int i; - uint8 x, y, c; - uint8 *dst; - uint16 name, bp01, bp23; - uint32 bp; - - for(i = 0; i < index; i++) - { - /* Get modified pattern name index */ - name = bg_name_list[i]; - - /* Pattern cache base address */ - dst = &bg_pattern_cache[name << 6]; - - /* Check modified lines */ - for(y = 0; y < 8; y++) - { - if(bg_name_dirty[name] & (1 << y)) - { - /* Byteplane data */ - bp01 = *(uint16 *)&vram[(name << 5) | (y << 2) | (0)]; - bp23 = *(uint16 *)&vram[(name << 5) | (y << 2) | (2)]; - - /* Convert to pixel line data (4 bytes = 8 pixels)*/ - /* (msb) p7p6 p5p4 p3p2 p1p0 (lsb) */ - bp = (bp_lut[bp01] >> 2) | (bp_lut[bp23]); - - /* Update cached line (8 pixels = 8 bytes) */ - for(x = 0; x < 8; x++) - { - /* Extract pixel data */ - c = bp & 0x0F; - - /* Pattern cache data (one pattern = 8 bytes) */ - /* byte0 <-> p0 p1 p2 p3 p4 p5 p6 p7 <-> byte7 (hflip = 0) */ - /* byte0 <-> p7 p6 p5 p4 p3 p2 p1 p0 <-> byte7 (hflip = 1) */ - dst[0x00000 | (y << 3) | (x)] = (c); /* vflip=0 & hflip=0 */ - dst[0x08000 | (y << 3) | (x ^ 7)] = (c); /* vflip=0 & hflip=1 */ - dst[0x10000 | ((y ^ 7) << 3) | (x)] = (c); /* vflip=1 & hflip=0 */ - dst[0x18000 | ((y ^ 7) << 3) | (x ^ 7)] = (c); /* vflip=1 & hflip=1 */ - - /* Next pixel */ - bp = bp >> 4; - } - } - } - - /* Clear modified pattern flag */ - bg_name_dirty[name] = 0; - } -} - -void update_bg_pattern_cache_m5(int index) -{ - int i; - uint8 x, y, c; - uint8 *dst; - uint16 name; - uint32 bp; - - for(i = 0; i < index; i++) - { - /* Get modified pattern name index */ - name = bg_name_list[i]; - - /* Pattern cache base address */ - dst = &bg_pattern_cache[name << 6]; - - /* Check modified lines */ - for(y = 0; y < 8; y ++) - { - if(bg_name_dirty[name] & (1 << y)) - { - /* Byteplane data (one pattern = 4 bytes) */ - /* LIT_ENDIAN: byte0 (lsb) p2p3 p0p1 p6p7 p4p5 (msb) byte3 */ - /* BIG_ENDIAN: byte0 (msb) p0p1 p2p3 p4p5 p6p7 (lsb) byte3 */ - bp = *(uint32 *)&vram[(name << 5) | (y << 2)]; - - /* Update cached line (8 pixels = 8 bytes) */ - for(x = 0; x < 8; x ++) - { - /* Extract pixel data */ - c = bp & 0x0F; - - /* Pattern cache data (one pattern = 8 bytes) */ - /* byte0 <-> p0 p1 p2 p3 p4 p5 p6 p7 <-> byte7 (hflip = 0) */ - /* byte0 <-> p7 p6 p5 p4 p3 p2 p1 p0 <-> byte7 (hflip = 1) */ -#ifdef LSB_FIRST - /* Byteplane data = (msb) p4p5 p6p7 p0p1 p2p3 (lsb) */ - dst[0x00000 | (y << 3) | (x ^ 3)] = (c); /* vflip=0, hflip=0 */ - dst[0x20000 | (y << 3) | (x ^ 4)] = (c); /* vflip=0, hflip=1 */ - dst[0x40000 | ((y ^ 7) << 3) | (x ^ 3)] = (c); /* vflip=1, hflip=0 */ - dst[0x60000 | ((y ^ 7) << 3) | (x ^ 4)] = (c); /* vflip=1, hflip=1 */ -#else - /* Byteplane data = (msb) p0p1 p2p3 p4p5 p6p7 (lsb) */ - dst[0x00000 | (y << 3) | (x ^ 7)] = (c); /* vflip=0, hflip=0 */ - dst[0x20000 | (y << 3) | (x)] = (c); /* vflip=0, hflip=1 */ - dst[0x40000 | ((y ^ 7) << 3) | (x ^ 7)] = (c); /* vflip=1, hflip=0 */ - dst[0x60000 | ((y ^ 7) << 3) | (x)] = (c); /* vflip=1, hflip=1 */ -#endif - /* Next pixel */ - bp = bp >> 4; - } - } - } - - /* Clear modified pattern flag */ - bg_name_dirty[name] = 0; - } -} - - -/*--------------------------------------------------------------------------*/ -/* Window & Plane A clipping update function (Mode 5) */ -/*--------------------------------------------------------------------------*/ - -void window_clip(unsigned int data, unsigned int sw) -{ - /* Window size and invert flags */ - int hp = (data & 0x1f); - int hf = (data >> 7) & 1; - - /* Perform horizontal clipping; the results are applied in reverse - if the horizontal inversion flag is set - */ - int a = hf; - int w = hf ^ 1; - - /* Display width (16 or 20 columns) */ - sw = 16 + (sw << 2); - - if(hp) - { - if(hp > sw) - { - /* Plane W takes up entire line */ - clip[w].left = 0; - clip[w].right = sw; - clip[w].enable = 1; - clip[a].enable = 0; - } - else - { - /* Plane W takes left side, Plane A takes right side */ - clip[w].left = 0; - clip[a].right = sw; - clip[a].left = clip[w].right = hp; - clip[0].enable = clip[1].enable = 1; - } - } - else - { - /* Plane A takes up entire line */ - clip[a].left = 0; - clip[a].right = sw; - clip[a].enable = 1; - clip[w].enable = 0; - } -} - - -/*--------------------------------------------------------------------------*/ -/* Init, reset routines */ -/*--------------------------------------------------------------------------*/ - -void render_init(void) -{ - int bx, ax; - - /* Initialize layers priority pixel look-up tables */ - uint16 index; - for (bx = 0; bx < 0x100; bx++) - { - for (ax = 0; ax < 0x100; ax++) - { - index = (bx << 8) | (ax); - - lut[0][index] = make_lut_bg(bx, ax); - lut[1][index] = make_lut_bgobj(bx, ax); - lut[2][index] = make_lut_bg_ste(bx, ax); - lut[3][index] = make_lut_obj(bx, ax); - lut[4][index] = make_lut_bgobj_ste(bx, ax); - lut[5][index] = make_lut_bgobj_m4(bx,ax); - } - } - - /* Initialize pixel color look-up tables */ - palette_init(); - - /* Make sprite pattern name index look-up table (Mode 5) */ - make_name_lut(); - - /* Make bitplane to pixel look-up table (Mode 4) */ - make_bp_lut(); -} - -void render_reset(void) -{ - /* Clear display bitmap */ - memset(bitmap.data, 0, bitmap.pitch * bitmap.height); - - /* Clear line buffers */ - memset(linebuf, 0, sizeof(linebuf)); - - /* Clear color palettes */ - memset(pixel, 0, sizeof(pixel)); - - /* Clear pattern cache */ - memset ((char *) bg_pattern_cache, 0, sizeof (bg_pattern_cache)); - - /* Reset Sprite infos */ - spr_ovr = spr_col = object_count[0] = object_count[1] = 0; -} - - -/*--------------------------------------------------------------------------*/ -/* Line rendering functions */ -/*--------------------------------------------------------------------------*/ - -void render_line(int line) -{ - /* Check display status */ - if (reg[1] & 0x40) - { - /* Update pattern cache */ - if (bg_list_index) - { - update_bg_pattern_cache(bg_list_index); - bg_list_index = 0; - } - - /* Render BG layer(s) */ - render_bg(line); - - /* Render sprite layer */ - render_obj(line & 1); - - /* Left-most column blanking */ - if (reg[0] & 0x20) - { - if (system_hw > SYSTEM_SGII) - { - memset(&linebuf[0][0x20], 0x40, 8); - } - } - - /* Parse sprites for next line */ - if (line < (bitmap.viewport.h - 1)) - { - parse_satb(line); - } - - /* Horizontal borders */ - if (bitmap.viewport.x > 0) - { - memset(&linebuf[0][0x20 - bitmap.viewport.x], 0x40, bitmap.viewport.x); - memset(&linebuf[0][0x20 + bitmap.viewport.w], 0x40, bitmap.viewport.x); - } - } - else - { - /* Master System & Game Gear VDP specific */ - if (system_hw < SYSTEM_MD) - { - /* Update SOVR flag */ - status |= spr_ovr; - spr_ovr = 0; - - /* Sprites are still parsed when display is disabled */ - parse_satb(line); - } - - /* Blanked line */ - memset(&linebuf[0][0x20 - bitmap.viewport.x], 0x40, bitmap.viewport.w + 2*bitmap.viewport.x); - } - - /* Pixel color remapping */ - remap_line(line); -} - -void blank_line(int line, int offset, int width) -{ - memset(&linebuf[0][0x20 + offset], 0x40, width); - remap_line(line); -} - -void remap_line(int line) -{ - /* Line width */ - int width = bitmap.viewport.w + 2*bitmap.viewport.x; - - /* Pixel line buffer */ - uint8 *src = &linebuf[0][0x20 - bitmap.viewport.x]; - - /* Adjust line offset in framebuffer */ - line = (line + bitmap.viewport.y) % lines_per_frame; - - /* Take care of Game Gear reduced screen when overscan is disabled */ - if (line < 0) return; - - /* Adjust for interlaced output */ - if (interlaced && config.render) - { - line = (line * 2) + odd_frame; - } - -#if defined(USE_15BPP_RENDERING) || defined(USE_16BPP_RENDERING) - /* NTSC Filter (only supported for 15 or 16-bit pixels rendering) */ - if (config.ntsc) - { - if (reg[12] & 0x01) - { - md_ntsc_blit(md_ntsc, ( MD_NTSC_IN_T const * )pixel, src, width, line); - } - else - { - sms_ntsc_blit(sms_ntsc, ( SMS_NTSC_IN_T const * )pixel, src, width, line); - } - } - else -#endif - { -#ifdef CUSTOM_BLITTER - CUSTOM_BLITTER(line, width, pixel, src) -#else - /* Convert VDP pixel data to output pixel format */ - PIXEL_OUT_T *dst = ((PIXEL_OUT_T *)&bitmap.data[(line * bitmap.pitch)]); - if (config.lcd) - { - do - { - RENDER_PIXEL_LCD(src,dst,pixel,config.lcd); - } - while (--width); - } - else - { - do - { - *dst++ = pixel[*src++]; - } - while (--width); - } - #endif - } -} +/*************************************************************************************** + * Genesis Plus + * Video Display Processor (pixel output rendering) + * + * Support for all TMS99xx modes, Mode 4 & Mode 5 rendering + * + * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#include "shared.h" +#include "md_ntsc.h" +#include "sms_ntsc.h" + +#ifndef HAVE_NO_SPRITE_LIMIT +#define MAX_SPRITES_PER_LINE 20 +#define TMS_MAX_SPRITES_PER_LINE 4 +#define MODE4_MAX_SPRITES_PER_LINE 8 +#define MODE5_MAX_SPRITES_PER_LINE (bitmap.viewport.w >> 4) +#define MODE5_MAX_SPRITE_PIXELS max_sprite_pixels +#endif + +/*** NTSC Filters ***/ +extern md_ntsc_t *md_ntsc; +extern sms_ntsc_t *sms_ntsc; + + +/* Output pixels type*/ +#if defined(USE_8BPP_RENDERING) +#define PIXEL_OUT_T uint8 +#elif defined(USE_32BPP_RENDERING) +#define PIXEL_OUT_T uint32 +#else +#define PIXEL_OUT_T uint16 +#endif + + +/* Pixel priority look-up tables information */ +#define LUT_MAX (6) +#define LUT_SIZE (0x10000) + + +#ifdef ALIGN_LONG +#undef READ_LONG +#undef WRITE_LONG + +INLINE uint32 READ_LONG(void *address) +{ + if ((uint32)address & 3) + { +#ifdef LSB_FIRST /* little endian version */ + return ( *((uint8 *)address) + + (*((uint8 *)address+1) << 8) + + (*((uint8 *)address+2) << 16) + + (*((uint8 *)address+3) << 24) ); +#else /* big endian version */ + return ( *((uint8 *)address+3) + + (*((uint8 *)address+2) << 8) + + (*((uint8 *)address+1) << 16) + + (*((uint8 *)address) << 24) ); +#endif /* LSB_FIRST */ + } + else return *(uint32 *)address; +} + +INLINE void WRITE_LONG(void *address, uint32 data) +{ + if ((uint32)address & 3) + { +#ifdef LSB_FIRST + *((uint8 *)address) = data; + *((uint8 *)address+1) = (data >> 8); + *((uint8 *)address+2) = (data >> 16); + *((uint8 *)address+3) = (data >> 24); +#else + *((uint8 *)address+3) = data; + *((uint8 *)address+2) = (data >> 8); + *((uint8 *)address+1) = (data >> 16); + *((uint8 *)address) = (data >> 24); +#endif /* LSB_FIRST */ + return; + } + else *(uint32 *)address = data; +} + +#endif /* ALIGN_LONG */ + + +/* Draw 2-cell column (8-pixels high) */ +/* + Pattern cache base address: VHN NNNNNNNN NNYYYxxx + with : + x = Pattern Pixel (0-7) + Y = Pattern Row (0-7) + N = Pattern Number (0-2047) from pattern attribute + H = Horizontal Flip bit from pattern attribute + V = Vertical Flip bit from pattern attribute +*/ +#define GET_LSB_TILE(ATTR, LINE) \ + atex = atex_table[(ATTR >> 13) & 7]; \ + src = (uint32 *)&bg_pattern_cache[(ATTR & 0x00001FFF) << 6 | (LINE)]; +#define GET_MSB_TILE(ATTR, LINE) \ + atex = atex_table[(ATTR >> 29) & 7]; \ + src = (uint32 *)&bg_pattern_cache[(ATTR & 0x1FFF0000) >> 10 | (LINE)]; + +/* Draw 2-cell column (16 pixels high) */ +/* + Pattern cache base address: VHN NNNNNNNN NYYYYxxx + with : + x = Pattern Pixel (0-7) + Y = Pattern Row (0-15) + N = Pattern Number (0-1023) + H = Horizontal Flip bit + V = Vertical Flip bit +*/ +#define GET_LSB_TILE_IM2(ATTR, LINE) \ + atex = atex_table[(ATTR >> 13) & 7]; \ + src = (uint32 *)&bg_pattern_cache[((ATTR & 0x000003FF) << 7 | (ATTR & 0x00001800) << 6 | (LINE)) ^ ((ATTR & 0x00001000) >> 6)]; +#define GET_MSB_TILE_IM2(ATTR, LINE) \ + atex = atex_table[(ATTR >> 29) & 7]; \ + src = (uint32 *)&bg_pattern_cache[((ATTR & 0x03FF0000) >> 9 | (ATTR & 0x18000000) >> 10 | (LINE)) ^ ((ATTR & 0x10000000) >> 22)]; + +/* + One column = 2 tiles + Two pattern attributes are written in VRAM as two consecutives 16-bit words: + + P = priority bit + C = color palette (2 bits) + V = Vertical Flip bit + H = Horizontal Flip bit + N = Pattern Number (11 bits) + + (MSB) PCCVHNNN NNNNNNNN (LSB) (MSB) PCCVHNNN NNNNNNNN (LSB) + PATTERN1 PATTERN2 + + Both pattern attributes are read from VRAM as one 32-bit word: + + LIT_ENDIAN: (MSB) PCCVHNNN NNNNNNNN PCCVHNNN NNNNNNNN (LSB) + PATTERN2 PATTERN1 + + BIG_ENDIAN: (MSB) PCCVHNNN NNNNNNNN PCCVHNNN NNNNNNNN (LSB) + PATTERN1 PATTERN2 + + + In line buffers, one pixel = one byte: (msb) 0Pppcccc (lsb) + with: + P = priority bit (from pattern attribute) + p = color palette (from pattern attribute) + c = color data (from pattern cache) + + One pattern = 8 pixels = 8 bytes = two 32-bit writes per pattern +*/ + +#ifdef ALIGN_LONG +#ifdef LSB_FIRST +#define DRAW_COLUMN(ATTR, LINE) \ + GET_LSB_TILE(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; \ + GET_MSB_TILE(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; +#define DRAW_COLUMN_IM2(ATTR, LINE) \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; +#else +#define DRAW_COLUMN(ATTR, LINE) \ + GET_MSB_TILE(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; \ + GET_LSB_TILE(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; +#define DRAW_COLUMN_IM2(ATTR, LINE) \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + WRITE_LONG(dst, src[0] | atex); \ + dst++; \ + WRITE_LONG(dst, src[1] | atex); \ + dst++; +#endif +#else /* NOT ALIGNED */ +#ifdef LSB_FIRST +#define DRAW_COLUMN(ATTR, LINE) \ + GET_LSB_TILE(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); \ + GET_MSB_TILE(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); +#define DRAW_COLUMN_IM2(ATTR, LINE) \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); +#else +#define DRAW_COLUMN(ATTR, LINE) \ + GET_MSB_TILE(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); \ + GET_LSB_TILE(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); +#define DRAW_COLUMN_IM2(ATTR, LINE) \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + *dst++ = (src[0] | atex); \ + *dst++ = (src[1] | atex); +#endif +#endif /* ALIGN_LONG */ + +#ifdef ALT_RENDERER +/* Draw background tiles directly using priority look-up table */ +/* SRC_A = layer A rendered pixel line (4 bytes = 4 pixels at once) */ +/* SRC_B = layer B cached pixel line (4 bytes = 4 pixels at once) */ +/* Note: cache address is always aligned so no need to use READ_LONG macro */ +/* This might be faster or slower than original method, depending on */ +/* architecture (x86, PowerPC), cache size, memory access speed, etc... */ + +#ifdef LSB_FIRST +#define DRAW_BG_TILE(SRC_A, SRC_B) \ + *lb++ = table[((SRC_B << 8) & 0xff00) | (SRC_A & 0xff)]; \ + *lb++ = table[(SRC_B & 0xff00) | ((SRC_A >> 8) & 0xff)]; \ + *lb++ = table[((SRC_B >> 8) & 0xff00) | ((SRC_A >> 16) & 0xff)]; \ + *lb++ = table[((SRC_B >> 16) & 0xff00) | ((SRC_A >> 24) & 0xff)]; +#else +#define DRAW_BG_TILE(SRC_A, SRC_B) \ + *lb++ = table[((SRC_B >> 16) & 0xff00) | ((SRC_A >> 24) & 0xff)]; \ + *lb++ = table[((SRC_B >> 8) & 0xff00) | ((SRC_A >> 16) & 0xff)]; \ + *lb++ = table[(SRC_B & 0xff00) | ((SRC_A >> 8) & 0xff)]; \ + *lb++ = table[((SRC_B << 8) & 0xff00) | (SRC_A & 0xff)]; +#endif + +#ifdef ALIGN_LONG +#ifdef LSB_FIRST +#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ + GET_LSB_TILE(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_MSB_TILE(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#else +#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ + GET_MSB_TILE(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_LSB_TILE(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = READ_LONG((uint32 *)lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#endif +#else /* NOT ALIGNED */ +#ifdef LSB_FIRST +#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ + GET_LSB_TILE(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_MSB_TILE(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#else +#define DRAW_BG_COLUMN(ATTR, LINE, SRC_A, SRC_B) \ + GET_MSB_TILE(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_LSB_TILE(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#define DRAW_BG_COLUMN_IM2(ATTR, LINE, SRC_A, SRC_B) \ + GET_MSB_TILE_IM2(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + GET_LSB_TILE_IM2(ATTR, LINE) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[0] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) \ + SRC_A = *(uint32 *)(lb); \ + SRC_B = (src[1] | atex); \ + DRAW_BG_TILE(SRC_A, SRC_B) +#endif +#endif /* ALIGN_LONG */ +#endif /* ALT_RENDERER */ + +#define DRAW_SPRITE_TILE(WIDTH,ATTR,TABLE) \ + for (i=0;i> 10); \ + } \ + } + +#define DRAW_SPRITE_TILE_ACCURATE(WIDTH,ATTR,TABLE) \ + for (i=0;i> 1); \ + status |= 0x20; \ + } \ + } \ + } + +#define DRAW_SPRITE_TILE_ACCURATE_2X(WIDTH,ATTR,TABLE) \ + for (i=0;i> 1); \ + status |= 0x20; \ + } \ + temp &= 0x00FF; \ + temp |= (lb[i+1] << 8); \ + lb[i+1] = TABLE[temp | ATTR]; \ + if ((temp & 0x8000) && !(status & 0x20)) \ + { \ + spr_col = (v_counter << 8) | ((xpos + i + 1 + 13) >> 1); \ + status |= 0x20; \ + } \ + } \ + } + + +/* Pixels conversion macro */ +/* 4-bit color channels are either compressed to 2/3-bit or dithered to 5/6/8-bit equivalents */ +/* 3:3:2 RGB */ +#if defined(USE_8BPP_RENDERING) +#define MAKE_PIXEL(r,g,b) (((r) >> 1) << 5 | ((g) >> 1) << 2 | (b) >> 2) + +/* 5:5:5 RGB */ +#elif defined(USE_15BPP_RENDERING) +#if defined(USE_ABGR) +#define MAKE_PIXEL(r,g,b) ((1 << 15) | (b) << 11 | ((b) >> 3) << 10 | (g) << 6 | ((g) >> 3) << 5 | (r) << 1 | (r) >> 3) +#else +#define MAKE_PIXEL(r,g,b) ((1 << 15) | (r) << 11 | ((r) >> 3) << 10 | (g) << 6 | ((g) >> 3) << 5 | (b) << 1 | (b) >> 3) +#endif +/* 5:6:5 RGB */ +#elif defined(USE_16BPP_RENDERING) +#define MAKE_PIXEL(r,g,b) ((r) << 12 | ((r) >> 3) << 11 | (g) << 7 | ((g) >> 2) << 5 | (b) << 1 | (b) >> 3) + +/* 8:8:8 RGB */ +#elif defined(USE_32BPP_RENDERING) +#define MAKE_PIXEL(r,g,b) ((0xff << 24) | (r) << 20 | (r) << 16 | (g) << 12 | (g) << 8 | (b) << 4 | (b)) +#endif + +/* Window & Plane A clipping */ +static struct clip_t +{ + uint8 left; + uint8 right; + uint8 enable; +} clip[2]; + +/* Pattern attribute (priority + palette bits) expansion table */ +static const uint32 atex_table[] = +{ + 0x00000000, + 0x10101010, + 0x20202020, + 0x30303030, + 0x40404040, + 0x50505050, + 0x60606060, + 0x70707070 +}; + +/* fixed Master System palette for Modes 0,1,2,3 */ +static const uint8 tms_crom[16] = +{ + 0x00, 0x00, 0x08, 0x0C, + 0x10, 0x30, 0x01, 0x3C, + 0x02, 0x03, 0x05, 0x0F, + 0x04, 0x33, 0x15, 0x3F +}; + +/* original SG-1000 palette */ +#if defined(USE_8BPP_RENDERING) +static const uint8 tms_palette[16] = +{ + 0x00, 0x00, 0x39, 0x79, + 0x4B, 0x6F, 0xC9, 0x5B, + 0xE9, 0xED, 0xD5, 0xD9, + 0x35, 0xCE, 0xDA, 0xFF +}; + +#elif defined(USE_15BPP_RENDERING) +static const uint16 tms_palette[16] = +{ + 0x8000, 0x8000, 0x9308, 0xAF6F, + 0xA95D, 0xBDDF, 0xE949, 0xA3BE, + 0xFD4A, 0xFDEF, 0xEB0A, 0xF330, + 0x92A7, 0xE177, 0xE739, 0xFFFF +}; + +#elif defined(USE_16BPP_RENDERING) +static const uint16 tms_palette[16] = +{ + 0x0000, 0x0000, 0x2648, 0x5ECF, + 0x52BD, 0x7BBE, 0xD289, 0x475E, + 0xF2AA, 0xFBCF, 0xD60A, 0xE670, + 0x2567, 0xC2F7, 0xCE59, 0xFFFF +}; + +#elif defined(USE_32BPP_RENDERING) +static const uint32 tms_palette[16] = +{ + 0xFF000000, 0xFF000000, 0xFF21C842, 0xFF5EDC78, + 0xFF5455ED, 0xFF7D76FC, 0xFFD4524D, 0xFF42EBF5, + 0xFFFC5554, 0xFFFF7978, 0xFFD4C154, 0xFFE6CE80, + 0xFF21B03B, 0xFFC95BB4, 0xFFCCCCCC, 0xFFFFFFFF +}; +#endif + +/* Cached and flipped patterns */ +static uint8 ALIGNED_(4) bg_pattern_cache[0x80000]; + +/* Sprite pattern name offset look-up table (Mode 5) */ +static uint8 name_lut[0x400]; + +/* Bitplane to packed pixel look-up table (Mode 4) */ +static uint32 bp_lut[0x10000]; + +/* Layer priority pixel look-up tables */ +static uint8 lut[LUT_MAX][LUT_SIZE]; + +/* Output pixel data look-up tables*/ +static PIXEL_OUT_T pixel[0x100]; +static PIXEL_OUT_T pixel_lut[3][0x200]; +static PIXEL_OUT_T pixel_lut_m4[0x40]; + +/* Background & Sprite line buffers */ +static uint8 linebuf[2][0x200]; + +/* Sprite limit flag */ +static uint8 spr_ovr; + +/* Sprite parsing lists */ +typedef struct +{ + uint16 ypos; + uint16 xpos; + uint16 attr; + uint16 size; +} object_info_t; + +static object_info_t obj_info[2][MAX_SPRITES_PER_LINE]; + +/* Sprite Counter */ +static uint8 object_count[2]; + +/* Sprite Collision Info */ +uint16 spr_col; + +/* Function pointers */ +void (*render_bg)(int line); +void (*render_obj)(int line); +void (*parse_satb)(int line); +void (*update_bg_pattern_cache)(int index); + + +/*--------------------------------------------------------------------------*/ +/* Sprite pattern name offset look-up table function (Mode 5) */ +/*--------------------------------------------------------------------------*/ + +static void make_name_lut(void) +{ + int vcol, vrow; + int width, height; + int flipx, flipy; + int i; + + for (i = 0; i < 0x400; i += 1) + { + /* Sprite settings */ + vcol = i & 3; + vrow = (i >> 2) & 3; + height = (i >> 4) & 3; + width = (i >> 6) & 3; + flipx = (i >> 8) & 1; + flipy = (i >> 9) & 1; + + if ((vrow > height) || vcol > width) + { + /* Invalid settings (unused) */ + name_lut[i] = -1; + } + else + { + /* Adjust column & row index if sprite is flipped */ + if(flipx) vcol = (width - vcol); + if(flipy) vrow = (height - vrow); + + /* Pattern offset (pattern order is up->down->left->right) */ + name_lut[i] = vrow + (vcol * (height + 1)); + } + } +} + + +/*--------------------------------------------------------------------------*/ +/* Bitplane to packed pixel look-up table function (Mode 4) */ +/*--------------------------------------------------------------------------*/ + +static void make_bp_lut(void) +{ + int x,i,j; + uint32 out; + + /* ---------------------- */ + /* Pattern color encoding */ + /* -------------------------------------------------------------------------*/ + /* 4 byteplanes are required to define one pattern line (8 pixels) */ + /* A single pixel color is coded with 4 bits (c3 c2 c1 c0) */ + /* Each bit is coming from byteplane bits, as explained below: */ + /* pixel 0: c3 = bp3 bit 7, c2 = bp2 bit 7, c1 = bp1 bit 7, c0 = bp0 bit 7 */ + /* pixel 1: c3 = bp3 bit 6, c2 = bp2 bit 6, c1 = bp1 bit 6, c0 = bp0 bit 6 */ + /* ... */ + /* pixel 7: c3 = bp3 bit 0, c2 = bp2 bit 0, c1 = bp1 bit 0, c0 = bp0 bit 0 */ + /* -------------------------------------------------------------------------*/ + + for(i = 0; i < 0x100; i++) + for(j = 0; j < 0x100; j++) + { + out = 0; + for(x = 0; x < 8; x++) + { + /* pixel line data = hh00gg00ff00ee00dd00cc00bb00aa00 (32-bit) */ + /* aa-hh = upper or lower 2-bit values of pixels 0-7 (shifted) */ + out |= (j & (0x80 >> x)) ? (uint32)(8 << (x << 2)) : 0; + out |= (i & (0x80 >> x)) ? (uint32)(4 << (x << 2)) : 0; + } + + /* i = low byte in VRAM (bp0 or bp2) */ + /* j = high byte in VRAM (bp1 or bp3) */ + #ifdef LSB_FIRST + bp_lut[(j << 8) | (i)] = out; + #else + bp_lut[(i << 8) | (j)] = out; + #endif + } +} + + +/*--------------------------------------------------------------------------*/ +/* Layers priority pixel look-up tables functions */ +/*--------------------------------------------------------------------------*/ + +/* Input (bx): d5-d0=color, d6=priority, d7=unused */ +/* Input (ax): d5-d0=color, d6=priority, d7=unused */ +/* Output: d5-d0=color, d6=priority, d7=zero */ +static uint32 make_lut_bg(uint32 bx, uint32 ax) +{ + int bf = (bx & 0x7F); + int bp = (bx & 0x40); + int b = (bx & 0x0F); + + int af = (ax & 0x7F); + int ap = (ax & 0x40); + int a = (ax & 0x0F); + + int c = (ap ? (a ? af : bf) : (bp ? (b ? bf : af) : (a ? af : bf))); + + /* Strip palette & priority bits from transparent pixels */ + if((c & 0x0F) == 0x00) c &= 0x80; + + return (c); +} + +/* Input (bx): d5-d0=color, d6=priority, d7=unused */ +/* Input (sx): d5-d0=color, d6=priority, d7=unused */ +/* Output: d5-d0=color, d6=priority, d7=intensity select (0=half/1=normal) */ +static uint32 make_lut_bg_ste(uint32 bx, uint32 ax) +{ + int bf = (bx & 0x7F); + int bp = (bx & 0x40); + int b = (bx & 0x0F); + + int af = (ax & 0x7F); + int ap = (ax & 0x40); + int a = (ax & 0x0F); + + int c = (ap ? (a ? af : bf) : (bp ? (b ? bf : af) : (a ? af : bf))); + + /* Half intensity when both pixels are low priority */ + c |= ((ap | bp) << 1); + + /* Strip palette & priority bits from transparent pixels */ + if((c & 0x0F) == 0x00) c &= 0x80; + + return (c); +} + +/* Input (bx): d5-d0=color, d6=priority/1, d7=sprite pixel marker */ +/* Input (sx): d5-d0=color, d6=priority, d7=unused */ +/* Output: d5-d0=color, d6=priority, d7=sprite pixel marker */ +static uint32 make_lut_obj(uint32 bx, uint32 sx) +{ + int c; + + int bf = (bx & 0x7F); + int bs = (bx & 0x80); + int sf = (sx & 0x7F); + + if((sx & 0x0F) == 0) return bx; + + c = (bs ? bf : sf); + + /* Strip palette bits from transparent pixels */ + if((c & 0x0F) == 0x00) c &= 0xC0; + + return (c | 0x80); +} + + +/* Input (bx): d5-d0=color, d6=priority, d7=opaque sprite pixel marker */ +/* Input (sx): d5-d0=color, d6=priority, d7=unused */ +/* Output: d5-d0=color, d6=zero/priority, d7=opaque sprite pixel marker */ +static uint32 make_lut_bgobj(uint32 bx, uint32 sx) +{ + int c; + + int bf = (bx & 0x3F); + int bs = (bx & 0x80); + int bp = (bx & 0x40); + int b = (bx & 0x0F); + + int sf = (sx & 0x3F); + int sp = (sx & 0x40); + int s = (sx & 0x0F); + + if(s == 0) return bx; + + /* Previous sprite has higher priority */ + if(bs) return bx; + + c = (sp ? sf : (bp ? (b ? bf : sf) : sf)); + + /* Strip palette & priority bits from transparent pixels */ + if((c & 0x0F) == 0x00) c &= 0x80; + + return (c | 0x80); +} + +/* Input (bx): d5-d0=color, d6=priority, d7=intensity (half/normal) */ +/* Input (sx): d5-d0=color, d6=priority, d7=sprite marker */ +/* Output: d5-d0=color, d6=intensity (half/normal), d7=(double/invalid) */ +static uint32 make_lut_bgobj_ste(uint32 bx, uint32 sx) +{ + int c; + + int bf = (bx & 0x3F); + int bp = (bx & 0x40); + int b = (bx & 0x0F); + int bi = (bx & 0x80) >> 1; + + int sf = (sx & 0x3F); + int sp = (sx & 0x40); + int s = (sx & 0x0F); + int si = sp | bi; + + if(sp) + { + if(s) + { + if((sf & 0x3E) == 0x3E) + { + if(sf & 1) + { + c = (bf | 0x00); + } + else + { + c = (bx & 0x80) ? (bf | 0x80) : (bf | 0x40); + } + } + else + { + if(sf == 0x0E || sf == 0x1E || sf == 0x2E) + { + c = (sf | 0x40); + } + else + { + c = (sf | si); + } + } + } + else + { + c = (bf | bi); + } + } + else + { + if(bp) + { + if(b) + { + c = (bf | bi); + } + else + { + if(s) + { + if((sf & 0x3E) == 0x3E) + { + if(sf & 1) + { + c = (bf | 0x00); + } + else + { + c = (bx & 0x80) ? (bf | 0x80) : (bf | 0x40); + } + } + else + { + if(sf == 0x0E || sf == 0x1E || sf == 0x2E) + { + c = (sf | 0x40); + } + else + { + c = (sf | si); + } + } + } + else + { + c = (bf | bi); + } + } + } + else + { + if(s) + { + if((sf & 0x3E) == 0x3E) + { + if(sf & 1) + { + c = (bf | 0x00); + } + else + { + c = (bx & 0x80) ? (bf | 0x80) : (bf | 0x40); + } + } + else + { + if(sf == 0x0E || sf == 0x1E || sf == 0x2E) + { + c = (sf | 0x40); + } + else + { + c = (sf | si); + } + } + } + else + { + c = (bf | bi); + } + } + } + + if((c & 0x0f) == 0x00) c &= 0xC0; + + return (c); +} + +/* Input (bx): d3-d0=color, d4=palette, d5=priority, d6=zero, d7=sprite pixel marker */ +/* Input (sx): d3-d0=color, d7-d4=zero */ +/* Output: d3-d0=color, d4=palette, d5=zero/priority, d6=zero, d7=sprite pixel marker */ +static uint32 make_lut_bgobj_m4(uint32 bx, uint32 sx) +{ + int c; + + int bf = (bx & 0x3F); + int bs = (bx & 0x80); + int bp = (bx & 0x20); + int b = (bx & 0x0F); + + int s = (sx & 0x0F); + int sf = (s | 0x10); /* force palette bit */ + + /* Transparent sprite pixel */ + if(s == 0) return bx; + + /* Previous sprite has higher priority */ + if(bs) return bx; + + /* note: priority bit is always 0 for Modes 0,1,2,3 */ + c = (bp ? (b ? bf : sf) : sf); + + return (c | 0x80); +} + + +/*--------------------------------------------------------------------------*/ +/* Pixel layer merging function */ +/*--------------------------------------------------------------------------*/ + +INLINE void merge(uint8 *srca, uint8 *srcb, uint8 *dst, uint8 *table, int width) +{ + do + { + *dst++ = table[(*srcb++ << 8) | (*srca++)]; + } + while (--width); +} + + +/*--------------------------------------------------------------------------*/ +/* Pixel color lookup tables initialization */ +/*--------------------------------------------------------------------------*/ + +static void palette_init(void) +{ + int r, g, b, i; + + /************************************************/ + /* Each R,G,B color channel is 4-bit with a */ + /* total of 15 different intensity levels. */ + /* */ + /* Color intensity depends on the mode: */ + /* */ + /* normal : xxx0 (0-14) */ + /* shadow : 0xxx (0-7) */ + /* highlight: 1xxx - 1 (7-14) */ + /* mode4 : xxxx(*) (0-15) */ + /* GG mode : xxxx (0-15) */ + /* */ + /* with x = original CRAM value (2, 3 or 4-bit) */ + /* (*) 2-bit CRAM value is expanded to 4-bit */ + /************************************************/ + + /* Initialize Mode 5 pixel color look-up tables */ + for (i = 0; i < 0x200; i++) + { + /* CRAM 9-bit value (BBBGGGRRR) */ + r = (i >> 0) & 7; + g = (i >> 3) & 7; + b = (i >> 6) & 7; + + /* Convert to output pixel format */ + pixel_lut[0][i] = MAKE_PIXEL(r,g,b); + pixel_lut[1][i] = MAKE_PIXEL(r<<1,g<<1,b<<1); + pixel_lut[2][i] = MAKE_PIXEL(r+7,g+7,b+7); + } + + /* Initialize Mode 4 pixel color look-up table */ + for (i = 0; i < 0x40; i++) + { + /* CRAM 6-bit value (000BBGGRR) */ + r = (i >> 0) & 3; + g = (i >> 2) & 3; + b = (i >> 4) & 3; + + /* Expand to full range & convert to output pixel format */ + pixel_lut_m4[i] = MAKE_PIXEL((r << 2) | r, (g << 2) | g, (b << 2) | b); + } +} + + +/*--------------------------------------------------------------------------*/ +/* Color palette update functions */ +/*--------------------------------------------------------------------------*/ + +void color_update_m4(int index, unsigned int data) +{ + switch (system_hw) + { + case SYSTEM_GG: + { + /* CRAM value (BBBBGGGGRRRR) */ + int r = (data >> 0) & 0x0F; + int g = (data >> 4) & 0x0F; + int b = (data >> 8) & 0x0F; + + /* Convert to output pixel */ + data = MAKE_PIXEL(r,g,b); + break; + } + + case SYSTEM_SG: + case SYSTEM_SGII: + { + /* Fixed TMS99xx palette */ + if (index & 0x0F) + { + /* Colors 1-15 */ + data = tms_palette[index & 0x0F]; + } + else + { + /* Backdrop color */ + data = tms_palette[reg[7] & 0x0F]; + } + break; + } + + default: + { + /* Test M4 bit */ + if (!(reg[0] & 0x04)) + { + if (system_hw & SYSTEM_MD) + { + /* Invalid Mode (black screen) */ + data = 0x00; + } + else if (system_hw != SYSTEM_GGMS) + { + /* Fixed CRAM palette */ + if (index & 0x0F) + { + /* Colors 1-15 */ + data = tms_crom[index & 0x0F]; + } + else + { + /* Backdrop color */ + data = tms_crom[reg[7] & 0x0F]; + } + } + } + + /* Mode 4 palette */ + data = pixel_lut_m4[data & 0x3F]; + break; + } + } + + + /* Input pixel: x0xiiiii (normal) or 01000000 (backdrop) */ + if (reg[0] & 0x04) + { + /* Mode 4 */ + pixel[0x00 | index] = data; + pixel[0x20 | index] = data; + pixel[0x80 | index] = data; + pixel[0xA0 | index] = data; + } + else + { + /* TMS99xx modes (palette bit forced to 1 because Game Gear uses CRAM palette #1) */ + if ((index == 0x40) || (index == (0x10 | (reg[7] & 0x0F)))) + { + /* Update backdrop color */ + pixel[0x40] = data; + + /* Update transparent color */ + pixel[0x10] = data; + pixel[0x30] = data; + pixel[0x90] = data; + pixel[0xB0] = data; + } + + if (index & 0x0F) + { + /* update non-transparent colors */ + pixel[0x00 | index] = data; + pixel[0x20 | index] = data; + pixel[0x80 | index] = data; + pixel[0xA0 | index] = data; + } + } +} + +void color_update_m5(int index, unsigned int data) +{ + /* Palette Mode */ + if (!(reg[0] & 0x04)) + { + /* Color value is limited to 00X00X00X */ + data &= 0x49; + } + + if(reg[12] & 0x08) + { + /* Mode 5 (Shadow/Normal/Highlight) */ + pixel[0x00 | index] = pixel_lut[0][data]; + pixel[0x40 | index] = pixel_lut[1][data]; + pixel[0x80 | index] = pixel_lut[2][data]; + } + else + { + /* Mode 5 (Normal) */ + data = pixel_lut[1][data]; + + /* Input pixel: xxiiiiii */ + pixel[0x00 | index] = data; + pixel[0x40 | index] = data; + pixel[0x80 | index] = data; + } +} + + +/*--------------------------------------------------------------------------*/ +/* Background layers rendering functions */ +/*--------------------------------------------------------------------------*/ + +/* Graphics I */ +void render_bg_m0(int line) +{ + uint8 color, name, pattern; + + uint8 *lb = &linebuf[0][0x20]; + uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; + uint8 *ct = &vram[((reg[3] << 6) & 0x3FC0)]; + uint8 *pg = &vram[((reg[4] << 11) & 0x3800) + (line & 7)]; + + /* 32 x 8 pixels */ + int width = 32; + + do + { + name = *nt++; + color = ct[name >> 3]; + pattern = pg[name << 3]; + + *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 1) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 0) & 1) << 2)) & 0x0F); + } + while (--width); +} + +/* Text */ +void render_bg_m1(int line) +{ + uint8 pattern; + uint8 color = reg[7]; + + uint8 *lb = &linebuf[0][0x20]; + uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line >> 3) * 40)]; + uint8 *pg = &vram[((reg[4] << 11) & 0x3800) + (line & 7)]; + + /* 40 x 6 pixels */ + int width = 40; + + /* Left border (8 pixels) */ + memset (lb, 0x40, 8); + lb += 8; + + do + { + pattern = pg[*nt++ << 3]; + + *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); + } + while (--width); + + /* Right borders (8 pixels) */ + memset(lb, 0x40, 8); +} + +/* Text + extended PG */ +void render_bg_m1x(int line) +{ + uint8 pattern; + uint8 *pg; + + uint8 color = reg[7]; + + uint8 *lb = &linebuf[0][0x20]; + uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line >> 3) * 40)]; + + uint16 pg_mask = ~0x3800 ^ (reg[4] << 11); + + /* 40 x 6 pixels */ + int width = 40; + + /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ + if (system_hw > SYSTEM_SMS) + { + pg_mask |= 0x1800; + } + + pg = &vram[((0x2000 + ((line & 0xC0) << 5)) & pg_mask) + (line & 7)]; + + /* Left border (8 pixels) */ + memset (lb, 0x40, 8); + lb += 8; + + do + { + pattern = pg[*nt++ << 3]; + + *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); + } + while (--width); + + /* Right borders (8 pixels) */ + memset(lb, 0x40, 8); +} + +/* Graphics II */ +void render_bg_m2(int line) +{ + uint8 color, pattern; + uint16 name; + uint8 *ct, *pg; + + uint8 *lb = &linebuf[0][0x20]; + uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; + + uint16 ct_mask = ~0x3FC0 ^ (reg[3] << 6); + uint16 pg_mask = ~0x3800 ^ (reg[4] << 11); + + /* 32 x 8 pixels */ + int width = 32; + + /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ + if (system_hw > SYSTEM_SMS) + { + ct_mask |= 0x1FC0; + pg_mask |= 0x1800; + } + + ct = &vram[((0x2000 + ((line & 0xC0) << 5)) & ct_mask) + (line & 7)]; + pg = &vram[((0x2000 + ((line & 0xC0) << 5)) & pg_mask) + (line & 7)]; + + do + { + name = *nt++ << 3 ; + color = ct[name & ct_mask]; + pattern = pg[name]; + + *lb++ = 0x10 | ((color >> (((pattern >> 7) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 6) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 5) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 4) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 3) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 2) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 1) & 1) << 2)) & 0x0F); + *lb++ = 0x10 | ((color >> (((pattern >> 0) & 1) << 2)) & 0x0F); + } + while (--width); +} + +/* Multicolor */ +void render_bg_m3(int line) +{ + uint8 color; + uint8 *lb = &linebuf[0][0x20]; + uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; + uint8 *pg = &vram[((reg[4] << 11) & 0x3800) + ((line >> 2) & 7)]; + + /* 32 x 8 pixels */ + int width = 32; + + do + { + color = pg[*nt++ << 3]; + + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + } + while (--width); +} + +/* Multicolor + extended PG */ +void render_bg_m3x(int line) +{ + uint8 color; + uint8 *pg; + + uint8 *lb = &linebuf[0][0x20]; + uint8 *nt = &vram[((reg[2] << 10) & 0x3C00) + ((line & 0xF8) << 2)]; + + uint16 pg_mask = ~0x3800 ^ (reg[4] << 11); + + /* 32 x 8 pixels */ + int width = 32; + + /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ + if (system_hw > SYSTEM_SMS) + { + pg_mask |= 0x1800; + } + + pg = &vram[((0x2000 + ((line & 0xC0) << 5)) & pg_mask) + ((line >> 2) & 7)]; + + do + { + color = pg[*nt++ << 3]; + + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + } + while (--width); +} + +/* Invalid (2+3/1+2+3) */ +void render_bg_inv(int line) +{ + uint8 color = reg[7]; + + uint8 *lb = &linebuf[0][0x20]; + + /* 40 x 6 pixels */ + int width = 40; + + /* Left border (8 pixels) */ + memset (lb, 0x40, 8); + lb += 8; + + do + { + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 4) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + *lb++ = 0x10 | ((color >> 0) & 0x0F); + } + while (--width); + + /* Right borders (8 pixels) */ + memset(lb, 0x40, 8); +} + +/* Mode 4 */ +void render_bg_m4(int line) +{ + int column; + uint16 *nt; + uint32 attr, atex, *src; + + /* 32 x 8 pixels */ + int width = 32; + + /* Horizontal scrolling */ + int index = ((reg[0] & 0x40) && (line < 0x10)) ? 0x100 : reg[0x08]; + int shift = index & 7; + + /* Background line buffer */ + uint32 *dst = (uint32 *)&linebuf[0][0x20 + shift]; + + /* Vertical scrolling */ + int v_line = line + vscroll; + + /* Pattern name table mask */ + uint16 nt_mask = ~0x3C00 ^ (reg[2] << 10); + + /* Unused bits used as a mask on TMS99xx & 315-5124 VDP only */ + if (system_hw > SYSTEM_SMS) + { + nt_mask |= 0x400; + } + + /* Test for extended modes (Master System II & Game gear VDP only) */ + if (bitmap.viewport.h > 192) + { + /* Vertical scroll mask */ + v_line = v_line % 256; + + /* Pattern name Table */ + nt = (uint16 *)&vram[(0x3700 & nt_mask) + ((v_line >> 3) << 6)]; + } + else + { + /* Vertical scroll mask */ + v_line = v_line % 224; + + /* Pattern name Table */ + nt = (uint16 *)&vram[(0x3800 + ((v_line >> 3) << 6)) & nt_mask]; + } + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + /* Tile column index */ + index = (0x100 - index) >> 3; + + /* Clip left-most column if required */ + if (shift) + { + memset(&linebuf[0][0x20], 0, shift); + index++; + } + + /* Draw tiles */ + for(column = 0; column < width; column++, index++) + { + /* Stop vertical scrolling for rightmost eight tiles */ + if((column == 24) && (reg[0] & 0x80)) + { + /* Clear Pattern name table start address */ + if (bitmap.viewport.h > 192) + { + nt = (uint16 *)&vram[(0x3700 & nt_mask) + ((line >> 3) << 6)]; + } + else + { + nt = (uint16 *)&vram[(0x3800 + ((line >> 3) << 6)) & nt_mask]; + } + + /* Clear Pattern row index */ + v_line = (line & 7) << 3; + } + + /* Read name table attribute word */ + attr = nt[index % width]; +#ifndef LSB_FIRST + attr = (((attr & 0xFF) << 8) | ((attr & 0xFF00) >> 8)); +#endif + + /* Expand priority and palette bits */ + atex = atex_table[(attr >> 11) & 3]; + + /* Cached pattern data line (4 bytes = 4 pixels at once) */ + src = (uint32 *)&bg_pattern_cache[((attr & 0x7FF) << 6) | (v_line)]; + + /* Copy left & right half, adding the attribute bits in */ +#ifdef ALIGN_LONG + WRITE_LONG(dst, src[0] | atex); + dst++; + WRITE_LONG(dst, src[1] | atex); + dst++; +#else + *dst++ = (src[0] | atex); + *dst++ = (src[1] | atex); +#endif + } +} + +/* Mode 5 */ +#ifndef ALT_RENDERER +void render_bg_m5(int line) +{ + int column; + uint32 atex, atbuf, *src, *dst; + + /* Common data */ + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = *(uint32 *)&vsram[0]; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + + /* Window & Plane A */ + int a = (reg[18] & 0x1F) << 3; + int w = (reg[18] >> 7) & 1; + + /* Plane B width */ + int start = 0; + int end = bitmap.viewport.w >> 4; + + /* Plane B scroll */ +#ifdef LSB_FIRST + uint32 shift = (xscroll >> 16) & 0x0F; + uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); + uint32 v_line = (line + (yscroll >> 16)) & pf_row_mask; +#else + uint32 shift = (xscroll & 0x0F); + uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); + uint32 v_line = (line + yscroll) & pf_row_mask; +#endif + + /* Plane B name table */ + uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + if(shift) + { + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x10 + shift]; + + atbuf = nt[(index - 1) & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + else + { + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x20]; + } + + for(column = 0; column < end; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Plane A */ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); + v_line = (line + yscroll) & pf_row_mask; +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); + v_line = (line + (yscroll >> 16)) & pf_row_mask; +#endif + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + if(shift) + { + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index - 1) & pf_col_mask]; + } + + DRAW_COLUMN(atbuf, v_line) + } + else + { + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + } + + for(column = start; column < end; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + + /* Window */ + if (w) + { + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = (line & 7) << 3; + + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN(atbuf, v_line) + } + } + + /* Merge background layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); +} + +void render_bg_m5_vs(int line) +{ + int column; + uint32 atex, atbuf, *src, *dst; + uint32 v_line, *nt; + + /* Common data */ + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = 0; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + uint32 *vs = (uint32 *)&vsram[0]; + + /* Window & Plane A */ + int a = (reg[18] & 0x1F) << 3; + int w = (reg[18] >> 7) & 1; + + /* Plane B width */ + int start = 0; + int end = bitmap.viewport.w >> 4; + + /* Plane B horizontal scroll */ +#ifdef LSB_FIRST + uint32 shift = (xscroll >> 16) & 0x0F; + uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); +#else + uint32 shift = (xscroll & 0x0F); + uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); +#endif + + /* Left-most column vertical scrolling when partially shown horizontally (verified on PAL MD2) */ + /* TODO: check on Genesis 3 models since it apparently behaves differently */ + /* In H32 mode, vertical scrolling is disabled, in H40 mode, same value is used for both planes */ + /* See Formula One / Kawasaki Superbike Challenge (H32) & Gynoug / Cutie Suzuki no Ringside Angel (H40) */ + if (reg[12] & 1) + { + yscroll = vs[19] & (vs[19] >> 16); + } + + if(shift) + { + /* Plane B vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x10 + shift]; + + atbuf = nt[(index - 1) & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + else + { + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x20]; + } + + for(column = 0; column < end; column++, index++) + { + /* Plane B vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + (vs[column] >> 16)) & pf_row_mask; +#else + v_line = (line + vs[column]) & pf_row_mask; +#endif + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Plane A */ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A horizontal scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); +#endif + + if(shift) + { + /* Plane A vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index - 1) & pf_col_mask]; + } + + DRAW_COLUMN(atbuf, v_line) + } + else + { + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + } + + for(column = start; column < end; column++, index++) + { + /* Plane A vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + vs[column]) & pf_row_mask; +#else + v_line = (line + (vs[column] >> 16)) & pf_row_mask; +#endif + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + + /* Window */ + if (w) + { + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = (line & 7) << 3; + + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN(atbuf, v_line) + } + } + + /* Merge background layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); +} + +void render_bg_m5_im2(int line) +{ + int column; + uint32 atex, atbuf, *src, *dst; + + /* Common data */ + int odd = odd_frame; + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = *(uint32 *)&vsram[0]; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + + /* Window & Plane A */ + int a = (reg[18] & 0x1F) << 3; + int w = (reg[18] >> 7) & 1; + + /* Plane B width */ + int start = 0; + int end = bitmap.viewport.w >> 4; + + /* Plane B scroll */ +#ifdef LSB_FIRST + uint32 shift = (xscroll >> 16) & 0x0F; + uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); + uint32 v_line = (line + (yscroll >> 17)) & pf_row_mask; +#else + uint32 shift = (xscroll & 0x0F); + uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); + uint32 v_line = (line + (yscroll >> 1)) & pf_row_mask; +#endif + + /* Plane B name table */ + uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + if(shift) + { + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x10 + shift]; + + atbuf = nt[(index - 1) & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + else + { + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x20]; + } + + for(column = 0; column < end; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Plane A */ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); + v_line = (line + (yscroll >> 1)) & pf_row_mask; +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); + v_line = (line + (yscroll >> 17)) & pf_row_mask; +#endif + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + if(shift) + { + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index - 1) & pf_col_mask]; + } + + DRAW_COLUMN_IM2(atbuf, v_line) + } + else + { + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + } + + for(column = start; column < end; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + + /* Window */ + if (w) + { + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = ((line & 7) << 1 | odd) << 3; + + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + } + + /* Merge background layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); +} + +void render_bg_m5_im2_vs(int line) +{ + int column; + uint32 atex, atbuf, *src, *dst; + uint32 v_line, *nt; + + /* Common data */ + int odd = odd_frame; + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = 0; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + uint32 *vs = (uint32 *)&vsram[0]; + + /* Window & Plane A */ + int a = (reg[18] & 0x1F) << 3; + int w = (reg[18] >> 7) & 1; + + /* Plane B width */ + int start = 0; + int end = bitmap.viewport.w >> 4; + + /* Plane B horizontal scroll */ +#ifdef LSB_FIRST + uint32 shift = (xscroll >> 16) & 0x0F; + uint32 index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); +#else + uint32 shift = (xscroll & 0x0F); + uint32 index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); +#endif + + /* Left-most column vertical scrolling when partially shown horizontally (verified on PAL MD2) */ + /* TODO: check on Genesis 3 models since it apparently behaves differently */ + /* In H32 mode, vertical scrolling is disabled, in H40 mode, same value is used for both planes */ + /* See Formula One / Kawasaki Superbike Challenge (H32) & Gynoug / Cutie Suzuki no Ringside Angel (H40) */ + if (reg[12] & 1) + { + yscroll = (vs[19] >> 1) & (vs[19] >> 17); + } + + if(shift) + { + /* Plane B vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x10 + shift]; + + atbuf = nt[(index - 1) & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + else + { + /* Plane B line buffer */ + dst = (uint32 *)&linebuf[0][0x20]; + } + + for(column = 0; column < end; column++, index++) + { + /* Plane B vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + (vs[column] >> 17)) & pf_row_mask; +#else + v_line = (line + (vs[column] >> 1)) & pf_row_mask; +#endif + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Plane A */ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A horizontal scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); +#endif + + if(shift) + { + /* Plane A vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x10 + shift + (start << 4)]; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index - 1) & pf_col_mask]; + } + + DRAW_COLUMN_IM2(atbuf, v_line) + } + else + { + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + } + + for(column = start; column < end; column++, index++) + { + /* Plane A vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + (vs[column] >> 1)) & pf_row_mask; +#else + v_line = (line + (vs[column] >> 17)) & pf_row_mask; +#endif + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + + /* Window */ + if (w) + { + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = ((line & 7) << 1 | odd) << 3; + + /* Plane A line buffer */ + dst = (uint32 *)&linebuf[1][0x20 + (start << 4)]; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + } + + /* Merge background layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[(reg[12] & 0x08) >> 2], bitmap.viewport.w); +} + +#else + +void render_bg_m5(int line) +{ + int column, start, end; + uint32 atex, atbuf, *src, *dst; + uint32 shift, index, v_line, *nt; + uint8 *lb; + + /* Scroll Planes common data */ + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = *(uint32 *)&vsram[0]; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + + /* Number of columns to draw */ + int width = bitmap.viewport.w >> 4; + + /* Layer priority table */ + uint8 *table = lut[(reg[12] & 8) >> 2]; + + /* Window vertical range (cell 0-31) */ + int a = (reg[18] & 0x1F) << 3; + + /* Window position (0=top, 1=bottom) */ + int w = (reg[18] >> 7) & 1; + + /* Test against current line */ + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Plane A */ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); + v_line = (line + yscroll) & pf_row_mask; +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); + v_line = (line + (yscroll >> 16)) & pf_row_mask; +#endif + + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + if(shift) + { + /* Left-most column is partially shown */ + dst -= 4; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index-1) & pf_col_mask]; + } + + DRAW_COLUMN(atbuf, v_line) + } + + for(column = start; column < end; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + else + { + /* Window width */ + start = 0; + end = width; + } + + /* Window Plane */ + if (w) + { + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; + + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = (line & 7) << 3; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN(atbuf, v_line) + } + } + + /* Plane B scroll */ +#ifdef LSB_FIRST + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); + v_line = (line + (yscroll >> 16)) & pf_row_mask; +#else + shift = (xscroll & 0x0F); + index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); + v_line = (line + yscroll) & pf_row_mask; +#endif + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + /* Background line buffer */ + lb = &linebuf[0][0x20]; + + if(shift) + { + /* Left-most column is partially shown */ + lb -= (0x10 - shift); + + atbuf = nt[(index-1) & pf_col_mask]; + DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) + } + + for(column = 0; column < width; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) + } +} + +void render_bg_m5_vs(int line) +{ + int column, start, end; + uint32 atex, atbuf, *src, *dst; + uint32 shift, index, v_line, *nt; + uint8 *lb; + + /* Scroll Planes common data */ + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = 0; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + uint32 *vs = (uint32 *)&vsram[0]; + + /* Number of columns to draw */ + int width = bitmap.viewport.w >> 4; + + /* Layer priority table */ + uint8 *table = lut[(reg[12] & 8) >> 2]; + + /* Window vertical range (cell 0-31) */ + int a = (reg[18] & 0x1F) << 3; + + /* Window position (0=top, 1=bottom) */ + int w = (reg[18] >> 7) & 1; + + /* Test against current line */ + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Left-most column vertical scrolling when partially shown horizontally */ + /* Same value for both planes, only in 40-cell mode, verified on PAL MD2 */ + /* See Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge */ + if (reg[12] & 1) + { + yscroll = vs[19] & (vs[19] >> 16); + } + + /* Plane A*/ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A horizontal scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); +#endif + + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; + + if(shift) + { + /* Left-most column is partially shown */ + dst -= 4; + + /* Plane A vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index-1) & pf_col_mask]; + } + + DRAW_COLUMN(atbuf, v_line) + } + + for(column = start; column < end; column++, index++) + { + /* Plane A vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + vs[column]) & pf_row_mask; +#else + v_line = (line + (vs[column] >> 16)) & pf_row_mask; +#endif + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + else + { + /* Window width */ + start = 0; + end = width; + } + + /* Window Plane */ + if (w) + { + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; + + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = (line & 7) << 3; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN(atbuf, v_line) + } + } + + /* Plane B horizontal scroll */ +#ifdef LSB_FIRST + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); +#else + shift = (xscroll & 0x0F); + index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); +#endif + + /* Background line buffer */ + lb = &linebuf[0][0x20]; + + if(shift) + { + /* Left-most column is partially shown */ + lb -= (0x10 - shift); + + /* Plane B vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + atbuf = nt[(index-1) & pf_col_mask]; + DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) + } + + for(column = 0; column < width; column++, index++) + { + /* Plane B vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + (vs[column] >> 16)) & pf_row_mask; +#else + v_line = (line + vs[column]) & pf_row_mask; +#endif + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_BG_COLUMN(atbuf, v_line, xscroll, yscroll) + } +} + +void render_bg_m5_im2(int line) +{ + int column, start, end; + uint32 atex, atbuf, *src, *dst; + uint32 shift, index, v_line, *nt; + uint8 *lb; + + /* Scroll Planes common data */ + int odd = odd_frame; + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = *(uint32 *)&vsram[0]; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + + /* Number of columns to draw */ + int width = bitmap.viewport.w >> 4; + + /* Layer priority table */ + uint8 *table = lut[(reg[12] & 8) >> 2]; + + /* Window vertical range (cell 0-31) */ + int a = (reg[18] & 0x1F) << 3; + + /* Window position (0=top, 1=bottom) */ + int w = (reg[18] >> 7) & 1; + + /* Test against current line */ + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Plane A */ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); + v_line = (line + (yscroll >> 1)) & pf_row_mask; +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); + v_line = (line + (yscroll >> 17)) & pf_row_mask; +#endif + + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + if(shift) + { + /* Left-most column is partially shown */ + dst -= 4; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index-1) & pf_col_mask]; + } + + DRAW_COLUMN_IM2(atbuf, v_line) + } + + for(column = start; column < end; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + else + { + /* Window width */ + start = 0; + end = width; + } + + /* Window Plane */ + if (w) + { + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; + + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = ((line & 7) << 1 | odd) << 3; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + } + + /* Plane B scroll */ +#ifdef LSB_FIRST + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); + v_line = (line + (yscroll >> 17)) & pf_row_mask; +#else + shift = (xscroll & 0x0F); + index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); + v_line = (line + (yscroll >> 1)) & pf_row_mask; +#endif + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + /* Background line buffer */ + lb = &linebuf[0][0x20]; + + if(shift) + { + /* Left-most column is partially shown */ + lb -= (0x10 - shift); + + atbuf = nt[(index-1) & pf_col_mask]; + DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) + } + + for(column = 0; column < width; column++, index++) + { + atbuf = nt[index & pf_col_mask]; + DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) + } +} + +void render_bg_m5_im2_vs(int line) +{ + int column, start, end; + uint32 atex, atbuf, *src, *dst; + uint32 shift, index, v_line, *nt; + uint8 *lb; + + /* common data */ + int odd = odd_frame; + uint32 xscroll = *(uint32 *)&vram[hscb + ((line & hscroll_mask) << 2)]; + uint32 yscroll = 0; + uint32 pf_col_mask = playfield_col_mask; + uint32 pf_row_mask = playfield_row_mask; + uint32 pf_shift = playfield_shift; + uint32 *vs = (uint32 *)&vsram[0]; + + /* Number of columns to draw */ + int width = bitmap.viewport.w >> 4; + + /* Layer priority table */ + uint8 *table = lut[(reg[12] & 8) >> 2]; + + /* Window vertical range (cell 0-31) */ + uint32 a = (reg[18] & 0x1F) << 3; + + /* Window position (0=top, 1=bottom) */ + uint32 w = (reg[18] >> 7) & 1; + + /* Test against current line */ + if (w == (line >= a)) + { + /* Window takes up entire line */ + a = 0; + w = 1; + } + else + { + /* Window and Plane A share the line */ + a = clip[0].enable; + w = clip[1].enable; + } + + /* Left-most column vertical scrolling when partially shown horizontally */ + /* Same value for both planes, only in 40-cell mode, verified on PAL MD2 */ + /* See Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge */ + if (reg[12] & 1) + { + /* only in 40-cell mode, verified on MD2 */ + yscroll = (vs[19] >> 1) & (vs[19] >> 17); + } + + /* Plane A */ + if (a) + { + /* Plane A width */ + start = clip[0].left; + end = clip[0].right; + + /* Plane A horizontal scroll */ +#ifdef LSB_FIRST + shift = (xscroll & 0x0F); + index = pf_col_mask + start + 1 - ((xscroll >> 4) & pf_col_mask); +#else + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + start + 1 - ((xscroll >> 20) & pf_col_mask); +#endif + + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4) + shift]; + + if(shift) + { + /* Left-most column is partially shown */ + dst -= 4; + + /* Plane A vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + /* Window bug */ + if (start) + { + atbuf = nt[index & pf_col_mask]; + } + else + { + atbuf = nt[(index-1) & pf_col_mask]; + } + + DRAW_COLUMN_IM2(atbuf, v_line) + } + + for(column = start; column < end; column++, index++) + { + /* Plane A vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + (vs[column] >> 1)) & pf_row_mask; +#else + v_line = (line + (vs[column] >> 17)) & pf_row_mask; +#endif + + /* Plane A name table */ + nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + + /* Window width */ + start = clip[1].left; + end = clip[1].right; + } + else + { + /* Window width */ + start = 0; + end = width; + } + + /* Window Plane */ + if (w) + { + /* Background line buffer */ + dst = (uint32 *)&linebuf[0][0x20 + (start << 4)]; + + /* Window name table */ + nt = (uint32 *)&vram[ntwb | ((line >> 3) << (6 + (reg[12] & 1)))]; + + /* Pattern row index */ + v_line = ((line & 7) << 1 | odd) << 3; + + for(column = start; column < end; column++) + { + atbuf = nt[column]; + DRAW_COLUMN_IM2(atbuf, v_line) + } + } + + /* Plane B horizontal scroll */ +#ifdef LSB_FIRST + shift = (xscroll >> 16) & 0x0F; + index = pf_col_mask + 1 - ((xscroll >> 20) & pf_col_mask); +#else + shift = (xscroll & 0x0F); + index = pf_col_mask + 1 - ((xscroll >> 4) & pf_col_mask); +#endif + + /* Background line buffer */ + lb = &linebuf[0][0x20]; + + if(shift) + { + /* Left-most column is partially shown */ + lb -= (0x10 - shift); + + /* Plane B vertical scroll */ + v_line = (line + yscroll) & pf_row_mask; + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + atbuf = nt[(index-1) & pf_col_mask]; + DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) + } + + for(column = 0; column < width; column++, index++) + { + /* Plane B vertical scroll */ +#ifdef LSB_FIRST + v_line = (line + (vs[column] >> 17)) & pf_row_mask; +#else + v_line = (line + (vs[column] >> 1)) & pf_row_mask; +#endif + + /* Plane B name table */ + nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)]; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + atbuf = nt[index & pf_col_mask]; + DRAW_BG_COLUMN_IM2(atbuf, v_line, xscroll, yscroll) + } +} +#endif + + +/*--------------------------------------------------------------------------*/ +/* Sprite layer rendering functions */ +/*--------------------------------------------------------------------------*/ + +void render_obj_tms(int line) +{ + int x, start, end; + uint8 *lb, *sg; + uint8 color, pattern[2]; + uint16 temp; + + /* Sprite list for current line */ + object_info_t *object_info = obj_info[line]; + int count = object_count[line]; + + /* Default sprite width (8 pixels) */ + int width = 8; + + /* Adjust width for 16x16 sprites */ + width <<= ((reg[1] & 0x02) >> 1); + + /* Adjust width for zoomed sprites */ + width <<= (reg[1] & 0x01); + + /* Latch SOVR flag from previous line to VDP status */ + status |= spr_ovr; + + /* Clear SOVR flag for current line */ + spr_ovr = 0; + + /* Draw sprites in front-to-back order */ + while (count--) + { + /* Sprite X position */ + start = object_info->xpos; + + /* Sprite Color + Early Clock bit */ + color = object_info->size; + + /* X position shift (32 pixels) */ + start -= ((color & 0x80) >> 2); + + /* Pointer to line buffer */ + lb = &linebuf[0][0x20 + start]; + + if ((start + width) > 256) + { + /* Clip sprites on right edge */ + end = 256 - start; + start = 0; + } + else + { + end = width; + + if (start < 0) + { + /* Clip sprites on left edge */ + start = 0 - start; + } + else + { + start = 0; + } + } + + /* Sprite Color (0-15) */ + color &= 0x0F; + + /* Sprite Pattern Name */ + temp = object_info->attr; + + /* Mask two LSB for 16x16 sprites */ + temp &= ~((reg[1] & 0x02) >> 0); + temp &= ~((reg[1] & 0x02) >> 1); + + /* Pointer to sprite generator table */ + sg = (uint8 *)&vram[((reg[6] << 11) & 0x3800) | (temp << 3) | object_info->ypos]; + + /* Sprite Pattern data (2 x 8 pixels) */ + pattern[0] = sg[0x00]; + pattern[1] = sg[0x10]; + + if (reg[1] & 0x01) + { + /* Zoomed sprites are rendered at half speed */ + for (x=start; x> 4) & 1]; + temp = (temp >> (7 - ((x >> 1) & 7))) & 0x01; + temp = temp * color; + temp |= (lb[x] << 8); + lb[x] = lut[5][temp]; + status |= ((temp & 0x8000) >> 10); + temp &= 0x00FF; + temp |= (lb[x+1] << 8); + lb[x+1] = lut[5][temp]; + status |= ((temp & 0x8000) >> 10); + } + } + else + { + /* Normal sprites */ + for (x=start; x> 3) & 1]; + temp = (temp >> (7 - (x & 7))) & 0x01; + temp = temp * color; + temp |= (lb[x] << 8); + lb[x] = lut[5][temp]; + status |= ((temp & 0x8000) >> 10); + } + } + + /* Next sprite entry */ + object_info++; + } + + /* handle Game Gear reduced screen (160x144) */ + if ((system_hw == SYSTEM_GG) && !config.gg_extra && (v_counter < bitmap.viewport.h)) + { + int line = v_counter - (bitmap.viewport.h - 144) / 2; + if ((line < 0) || (line >= 144)) + { + memset(&linebuf[0][0x20], 0x40, 256); + } + else + { + if (bitmap.viewport.x > 0) + { + memset(&linebuf[0][0x20], 0x40, 48); + memset(&linebuf[0][0x20+48+160], 0x40, 48); + } + } + } +} + +void render_obj_m4(int line) +{ + int i, xpos, end; + uint8 *src, *lb; + uint16 temp; + + /* Sprite list for current line */ + object_info_t *object_info = obj_info[line]; + int count = object_count[line]; + + /* Default sprite width */ + int width = 8; + + /* Sprite Generator address mask (LSB is masked for 8x16 sprites) */ + uint16 sg_mask = (~0x1C0 ^ (reg[6] << 6)) & (~((reg[1] & 0x02) >> 1)); + + /* Zoomed sprites (not working on Genesis VDP) */ + if (system_hw < SYSTEM_MD) + { + width <<= (reg[1] & 0x01); + } + + /* Unused bits used as a mask on 315-5124 VDP only */ + if (system_hw > SYSTEM_SMS) + { + sg_mask |= 0xC0; + } + + /* Latch SOVR flag from previous line to VDP status */ + status |= spr_ovr; + + /* Clear SOVR flag for current line */ + spr_ovr = 0; + + /* Draw sprites in front-to-back order */ + while (count--) + { + /* Sprite pattern index */ + temp = (object_info->attr | 0x100) & sg_mask; + + /* Pointer to pattern cache line */ + src = (uint8 *)&bg_pattern_cache[(temp << 6) | (object_info->ypos << 3)]; + + /* Sprite X position */ + xpos = object_info->xpos; + + /* X position shift */ + xpos -= (reg[0] & 0x08); + + if (xpos < 0) + { + /* Clip sprites on left edge */ + src = src - xpos; + end = xpos + width; + xpos = 0; + } + else if ((xpos + width) > 256) + { + /* Clip sprites on right edge */ + end = 256 - xpos; + } + else + { + /* Sprite maximal width */ + end = width; + } + + /* Pointer to line buffer */ + lb = &linebuf[0][0x20 + xpos]; + + if (width > 8) + { + /* Draw sprite pattern (zoomed sprites are rendered at half speed) */ + DRAW_SPRITE_TILE_ACCURATE_2X(end,0,lut[5]) + + /* 315-5124 VDP specific */ + if (system_hw < SYSTEM_SMS2) + { + /* only 4 first sprites can be zoomed */ + if (count == (object_count[line] - 4)) + { + /* Set default width for remaining sprites */ + width = 8; + } + } + } + else + { + /* Draw sprite pattern */ + DRAW_SPRITE_TILE_ACCURATE(end,0,lut[5]) + } + + /* Next sprite entry */ + object_info++; + } + + /* handle Game Gear reduced screen (160x144) */ + if ((system_hw == SYSTEM_GG) && !config.gg_extra && (v_counter < bitmap.viewport.h)) + { + int line = v_counter - (bitmap.viewport.h - 144) / 2; + if ((line < 0) || (line >= 144)) + { + memset(&linebuf[0][0x20], 0x40, 256); + } + else + { + if (bitmap.viewport.x > 0) + { + memset(&linebuf[0][0x20], 0x40, 48); + memset(&linebuf[0][0x20+48+160], 0x40, 48); + } + } + } +} + +void render_obj_m5(int line) +{ + int i, column; + int xpos, width; + int pixelcount = 0; + int masked = 0; + int max_pixels = MODE5_MAX_SPRITE_PIXELS; + + uint8 *src, *s, *lb; + uint32 temp, v_line; + uint32 attr, name, atex; + + /* Sprite list for current line */ + object_info_t *object_info = obj_info[line]; + int count = object_count[line]; + + /* Draw sprites in front-to-back order */ + while (count--) + { + /* Sprite X position */ + xpos = object_info->xpos; + + /* Sprite masking */ + if (xpos) + { + /* Requires at least one sprite with xpos > 0 */ + spr_ovr = 1; + } + else if (spr_ovr) + { + /* Remaining sprites are not drawn */ + masked = 1; + } + + /* Display area offset */ + xpos = xpos - 0x80; + + /* Sprite size */ + temp = object_info->size; + + /* Sprite width */ + width = 8 + ((temp & 0x0C) << 1); + + /* Update pixel count (off-screen sprites are included) */ + pixelcount += width; + + /* Is sprite across visible area ? */ + if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) + { + /* Sprite attributes */ + attr = object_info->attr; + + /* Sprite vertical offset */ + v_line = object_info->ypos; + + /* Sprite priority + palette bits */ + atex = (attr >> 9) & 0x70; + + /* Pattern name base */ + name = attr & 0x07FF; + + /* Mask vflip/hflip */ + attr &= 0x1800; + + /* Pointer into pattern name offset look-up table */ + s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; + + /* Pointer into line buffer */ + lb = &linebuf[0][0x20 + xpos]; + + /* Max. number of sprite pixels rendered per line */ + if (pixelcount > max_pixels) + { + /* Adjust number of pixels to draw */ + width -= (pixelcount - max_pixels); + } + + /* Number of tiles to draw */ + width = width >> 3; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + /* Draw sprite patterns */ + for (column = 0; column < width; column++, lb+=8) + { + temp = attr | ((name + s[column]) & 0x07FF); + src = &bg_pattern_cache[(temp << 6) | (v_line)]; + DRAW_SPRITE_TILE(8,atex,lut[1]) + } + } + + /* Sprite limit */ + if (pixelcount >= max_pixels) + { + /* Sprite masking is effective on next line if max pixel width is reached */ + spr_ovr = (pixelcount >= bitmap.viewport.w); + + /* Stop sprite rendering */ + return; + } + + /* Next sprite entry */ + object_info++; + } + + /* Clear sprite masking for next line */ + spr_ovr = 0; +} + +void render_obj_m5_ste(int line) +{ + int i, column; + int xpos, width; + int pixelcount = 0; + int masked = 0; + int max_pixels = MODE5_MAX_SPRITE_PIXELS; + + uint8 *src, *s, *lb; + uint32 temp, v_line; + uint32 attr, name, atex; + + /* Sprite list for current line */ + object_info_t *object_info = obj_info[line]; + int count = object_count[line]; + + /* Clear sprite line buffer */ + memset(&linebuf[1][0], 0, bitmap.viewport.w + 0x40); + + /* Draw sprites in front-to-back order */ + while (count--) + { + /* Sprite X position */ + xpos = object_info->xpos; + + /* Sprite masking */ + if (xpos) + { + /* Requires at least one sprite with xpos > 0 */ + spr_ovr = 1; + } + else if (spr_ovr) + { + /* Remaining sprites are not drawn */ + masked = 1; + } + + /* Display area offset */ + xpos = xpos - 0x80; + + /* Sprite size */ + temp = object_info->size; + + /* Sprite width */ + width = 8 + ((temp & 0x0C) << 1); + + /* Update pixel count (off-screen sprites are included) */ + pixelcount += width; + + /* Is sprite across visible area ? */ + if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) + { + /* Sprite attributes */ + attr = object_info->attr; + + /* Sprite vertical offset */ + v_line = object_info->ypos; + + /* Sprite priority + palette bits */ + atex = (attr >> 9) & 0x70; + + /* Pattern name base */ + name = attr & 0x07FF; + + /* Mask vflip/hflip */ + attr &= 0x1800; + + /* Pointer into pattern name offset look-up table */ + s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; + + /* Pointer into line buffer */ + lb = &linebuf[1][0x20 + xpos]; + + /* Adjust number of pixels to draw for sprite limit */ + if (pixelcount > max_pixels) + { + width -= (pixelcount - max_pixels); + } + + /* Number of tiles to draw */ + width = width >> 3; + + /* Pattern row index */ + v_line = (v_line & 7) << 3; + + /* Draw sprite patterns */ + for (column = 0; column < width; column++, lb+=8) + { + temp = attr | ((name + s[column]) & 0x07FF); + src = &bg_pattern_cache[(temp << 6) | (v_line)]; + DRAW_SPRITE_TILE(8,atex,lut[3]) + } + } + + /* Sprite limit */ + if (pixelcount >= max_pixels) + { + /* Sprite masking is effective on next line if max pixel width is reached */ + spr_ovr = (pixelcount >= bitmap.viewport.w); + + /* Merge background & sprite layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); + + /* Stop sprite rendering */ + return; + } + + /* Next sprite entry */ + object_info++; + } + + /* Clear sprite masking for next line */ + spr_ovr = 0; + + /* Merge background & sprite layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); +} + +void render_obj_m5_im2(int line) +{ + int i, column; + int xpos, width; + int pixelcount = 0; + int masked = 0; + int odd = odd_frame; + int max_pixels = MODE5_MAX_SPRITE_PIXELS; + + uint8 *src, *s, *lb; + uint32 temp, v_line; + uint32 attr, name, atex; + + /* Sprite list for current line */ + object_info_t *object_info = obj_info[line]; + int count = object_count[line]; + + /* Draw sprites in front-to-back order */ + while (count--) + { + /* Sprite X position */ + xpos = object_info->xpos; + + /* Sprite masking */ + if (xpos) + { + /* Requires at least one sprite with xpos > 0 */ + spr_ovr = 1; + } + else if (spr_ovr) + { + /* Remaining sprites are not drawn */ + masked = 1; + } + + /* Display area offset */ + xpos = xpos - 0x80; + + /* Sprite size */ + temp = object_info->size; + + /* Sprite width */ + width = 8 + ((temp & 0x0C) << 1); + + /* Update pixel count (off-screen sprites are included) */ + pixelcount += width; + + /* Is sprite across visible area ? */ + if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) + { + /* Sprite attributes */ + attr = object_info->attr; + + /* Sprite y offset */ + v_line = object_info->ypos; + + /* Sprite priority + palette bits */ + atex = (attr >> 9) & 0x70; + + /* Pattern name base */ + name = attr & 0x03FF; + + /* Mask vflip/hflip */ + attr &= 0x1800; + + /* Pattern name offset lookup table */ + s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; + + /* Pointer into line buffer */ + lb = &linebuf[0][0x20 + xpos]; + + /* Adjust width for sprite limit */ + if (pixelcount > max_pixels) + { + width -= (pixelcount - max_pixels); + } + + /* Number of tiles to draw */ + width = width >> 3; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + /* Render sprite patterns */ + for(column = 0; column < width; column ++, lb+=8) + { + temp = attr | (((name + s[column]) & 0x3ff) << 1); + src = &bg_pattern_cache[((temp << 6) | (v_line)) ^ ((attr & 0x1000) >> 6)]; + DRAW_SPRITE_TILE(8,atex,lut[1]) + } + } + + /* Sprite Limit */ + if (pixelcount >= max_pixels) + { + /* Sprite masking is effective on next line if max pixel width is reached */ + spr_ovr = (pixelcount >= bitmap.viewport.w); + + /* Stop sprite rendering */ + return; + } + + /* Next sprite entry */ + object_info++; + } + + /* Clear sprite masking for next line */ + spr_ovr = 0; +} + +void render_obj_m5_im2_ste(int line) +{ + int i, column; + int xpos, width; + int pixelcount = 0; + int masked = 0; + int odd = odd_frame; + int max_pixels = MODE5_MAX_SPRITE_PIXELS; + + uint8 *src, *s, *lb; + uint32 temp, v_line; + uint32 attr, name, atex; + + /* Sprite list for current line */ + object_info_t *object_info = obj_info[line]; + int count = object_count[line]; + + /* Clear sprite line buffer */ + memset(&linebuf[1][0], 0, bitmap.viewport.w + 0x40); + + /* Draw sprites in front-to-back order */ + while (count--) + { + /* Sprite X position */ + xpos = object_info->xpos; + + /* Sprite masking */ + if (xpos) + { + /* Requires at least one sprite with xpos > 0 */ + spr_ovr = 1; + } + else if (spr_ovr) + { + /* Remaining sprites are not drawn */ + masked = 1; + } + + /* Display area offset */ + xpos = xpos - 0x80; + + /* Sprite size */ + temp = object_info->size; + + /* Sprite width */ + width = 8 + ((temp & 0x0C) << 1); + + /* Update pixel count (off-screen sprites are included) */ + pixelcount += width; + + /* Is sprite across visible area ? */ + if (((xpos + width) > 0) && (xpos < bitmap.viewport.w) && !masked) + { + /* Sprite attributes */ + attr = object_info->attr; + + /* Sprite y offset */ + v_line = object_info->ypos; + + /* Sprite priority + palette bits */ + atex = (attr >> 9) & 0x70; + + /* Pattern name base */ + name = attr & 0x03FF; + + /* Mask vflip/hflip */ + attr &= 0x1800; + + /* Pattern name offset lookup table */ + s = &name_lut[((attr >> 3) & 0x300) | (temp << 4) | ((v_line & 0x18) >> 1)]; + + /* Pointer into line buffer */ + lb = &linebuf[1][0x20 + xpos]; + + /* Adjust width for sprite limit */ + if (pixelcount > max_pixels) + { + width -= (pixelcount - max_pixels); + } + + /* Number of tiles to draw */ + width = width >> 3; + + /* Pattern row index */ + v_line = (((v_line & 7) << 1) | odd) << 3; + + /* Render sprite patterns */ + for(column = 0; column < width; column ++, lb+=8) + { + temp = attr | (((name + s[column]) & 0x3ff) << 1); + src = &bg_pattern_cache[((temp << 6) | (v_line)) ^ ((attr & 0x1000) >> 6)]; + DRAW_SPRITE_TILE(8,atex,lut[3]) + } + } + + /* Sprite Limit */ + if (pixelcount >= max_pixels) + { + /* Sprite masking is effective on next line if max pixel width is reached */ + spr_ovr = (pixelcount >= bitmap.viewport.w); + + /* Merge background & sprite layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); + + /* Stop sprite rendering */ + return; + } + + /* Next sprite entry */ + object_info++; + } + + /* Clear sprite masking for next line */ + spr_ovr = 0; + + /* Merge background & sprite layers */ + merge(&linebuf[1][0x20], &linebuf[0][0x20], &linebuf[0][0x20], lut[4], bitmap.viewport.w); +} + + +/*--------------------------------------------------------------------------*/ +/* Sprites Parsing functions */ +/*--------------------------------------------------------------------------*/ + +void parse_satb_tms(int line) +{ + int i = 0; + + /* Sprite counter (4 max. per line) */ + int count = 0; + + /* no sprites in Text modes */ + if (!(reg[1] & 0x10)) + { + /* Y position */ + int ypos; + + /* Sprite list for next line */ + object_info_t *object_info = obj_info[(line + 1) & 1]; + + /* Pointer to sprite attribute table */ + uint8 *st = &vram[(reg[5] << 7) & 0x3F80]; + + /* Sprite height (8 pixels by default) */ + int height = 8; + + /* Adjust height for 16x16 sprites */ + height <<= ((reg[1] & 0x02) >> 1); + + /* Adjust height for zoomed sprites */ + height <<= (reg[1] & 0x01); + + /* Parse Sprite Table (32 entries) */ + do + { + /* Sprite Y position */ + ypos = st[i << 2]; + + /* Check end of sprite list marker */ + if (ypos == 0xD0) + { + break; + } + + /* Wrap Y coordinate for sprites > 256-32 */ + if (ypos >= 224) + { + ypos -= 256; + } + + /* Y range */ + ypos = line - ypos; + + /* Sprite is visible on this line ? */ + if ((ypos >= 0) && (ypos < height)) + { + /* Sprite overflow */ + if (count == TMS_MAX_SPRITES_PER_LINE) + { + /* Flag is set only during active area */ + if (line < bitmap.viewport.h) + { + spr_ovr = 0x40; + } + break; + } + + /* Adjust Y range back for zoomed sprites */ + ypos >>= (reg[1] & 0x01); + + /* Store sprite attributes for later processing */ + object_info->ypos = ypos; + object_info->xpos = st[(i << 2) + 1]; + object_info->attr = st[(i << 2) + 2]; + object_info->size = st[(i << 2) + 3]; + + /* Increment Sprite count */ + ++count; + + /* Next sprite entry */ + object_info++; + } + } + while (++i < 32); + } + + /* Update sprite count for next line */ + object_count[(line + 1) & 1] = count; + + /* Insert number of last sprite entry processed */ + status = (status & 0xE0) | (i & 0x1F); +} + +void parse_satb_m4(int line) +{ + int i = 0; + uint8 *st; + + /* Sprite counter (8 max. per line) */ + int count = 0; + + /* Y position */ + int ypos; + + /* Sprite list for next line */ + object_info_t *object_info = obj_info[(line + 1) & 1]; + + /* Sprite height (8x8 or 8x16) */ + int height = 8 + ((reg[1] & 0x02) << 2); + + /* Sprite attribute table address mask */ + uint16 st_mask = ~0x3F80 ^ (reg[5] << 7); + + /* Unused bits used as a mask on 315-5124 VDP only */ + if (system_hw > SYSTEM_SMS) + { + st_mask |= 0x80; + } + + /* Pointer to sprite attribute table */ + st = &vram[st_mask & 0x3F00]; + + /* Parse Sprite Table (64 entries) */ + do + { + /* Sprite Y position */ + ypos = st[i]; + + /* Check end of sprite list marker (no effect in extended modes) */ + if ((ypos == 208) && (bitmap.viewport.h == 192)) + { + break; + } + + /* Wrap Y coordinate (NB: this is likely not 100% accurate and needs to be verified on real hardware) */ + if (ypos > (bitmap.viewport.h + 16)) + { + ypos -= 256; + } + + /* Y range */ + ypos = line - ypos; + + /* Adjust Y range for zoomed sprites (not working on Mega Drive VDP) */ + if (system_hw < SYSTEM_MD) + { + ypos >>= (reg[1] & 0x01); + } + + /* Check if sprite is visible on this line */ + if ((ypos >= 0) && (ypos < height)) + { + /* Sprite overflow */ + if (count == MODE4_MAX_SPRITES_PER_LINE) + { + /* Flag is set only during active area */ + if ((line >= 0) && (line < bitmap.viewport.h)) + { + spr_ovr = 0x40; + } + break; + } + + /* Store sprite attributes for later processing */ + object_info->ypos = ypos; + object_info->xpos = st[(0x80 + (i << 1)) & st_mask]; + object_info->attr = st[(0x81 + (i << 1)) & st_mask]; + + /* Increment Sprite count */ + ++count; + + /* Next sprite entry */ + object_info++; + } + } + while (++i < 64); + + /* Update sprite count for next line */ + object_count[(line + 1) & 1] = count; +} + +void parse_satb_m5(int line) +{ + /* Y position */ + int ypos; + + /* Sprite height (8,16,24,32 pixels)*/ + int height; + + /* Sprite size data */ + int size; + + /* Sprite link data */ + int link = 0; + + /* Sprite counter */ + int count = 0; + + /* max. number of rendered sprites (16 or 20 sprites per line by default) */ + int max = MODE5_MAX_SPRITES_PER_LINE; + + /* max. number of parsed sprites (64 or 80 sprites per line by default) */ + int total = max_sprite_pixels >> 2; + + /* Pointer to sprite attribute table */ + uint16 *p = (uint16 *) &vram[satb]; + + /* Pointer to internal RAM */ + uint16 *q = (uint16 *) &sat[0]; + + /* Sprite list for next line */ + object_info_t *object_info = obj_info[(line + 1) & 1]; + + /* Adjust line offset */ + line += 0x81; + + do + { + /* Read Y position from internal SAT cache */ + ypos = (q[link] >> im2_flag) & 0x1FF; + + /* Check if sprite Y position has been reached */ + if (line >= ypos) + { + /* Read sprite size from internal SAT cache */ + size = q[link + 1] >> 8; + + /* Sprite height */ + height = 8 + ((size & 3) << 3); + + /* Y range */ + ypos = line - ypos; + + /* Check if sprite is visible on current line */ + if (ypos < height) + { + /* Sprite overflow */ + if (count == max) + { + status |= 0x40; + break; + } + + /* Update sprite list (only name, attribute & xpos are parsed from VRAM) */ + object_info->attr = p[link + 2]; + object_info->xpos = p[link + 3] & 0x1ff; + object_info->ypos = ypos; + object_info->size = size & 0x0f; + + /* Increment Sprite count */ + ++count; + + /* Next sprite entry */ + object_info++; + } + } + + /* Read link data from internal SAT cache */ + link = (q[link + 1] & 0x7F) << 2; + + /* Stop parsing if link data points to first entry (#0) or after the last entry (#64 in H32 mode, #80 in H40 mode) */ + if ((link == 0) || (link >= bitmap.viewport.w)) break; + } + while (--total); + + /* Update sprite count for next line (line value already incremented) */ + object_count[line & 1] = count; +} + + +/*--------------------------------------------------------------------------*/ +/* Pattern cache update function */ +/*--------------------------------------------------------------------------*/ + +void update_bg_pattern_cache_m4(int index) +{ + int i; + uint8 x, y, c; + uint8 *dst; + uint16 name, bp01, bp23; + uint32 bp; + + for(i = 0; i < index; i++) + { + /* Get modified pattern name index */ + name = bg_name_list[i]; + + /* Pattern cache base address */ + dst = &bg_pattern_cache[name << 6]; + + /* Check modified lines */ + for(y = 0; y < 8; y++) + { + if(bg_name_dirty[name] & (1 << y)) + { + /* Byteplane data */ + bp01 = *(uint16 *)&vram[(name << 5) | (y << 2) | (0)]; + bp23 = *(uint16 *)&vram[(name << 5) | (y << 2) | (2)]; + + /* Convert to pixel line data (4 bytes = 8 pixels)*/ + /* (msb) p7p6 p5p4 p3p2 p1p0 (lsb) */ + bp = (bp_lut[bp01] >> 2) | (bp_lut[bp23]); + + /* Update cached line (8 pixels = 8 bytes) */ + for(x = 0; x < 8; x++) + { + /* Extract pixel data */ + c = bp & 0x0F; + + /* Pattern cache data (one pattern = 8 bytes) */ + /* byte0 <-> p0 p1 p2 p3 p4 p5 p6 p7 <-> byte7 (hflip = 0) */ + /* byte0 <-> p7 p6 p5 p4 p3 p2 p1 p0 <-> byte7 (hflip = 1) */ + dst[0x00000 | (y << 3) | (x)] = (c); /* vflip=0 & hflip=0 */ + dst[0x08000 | (y << 3) | (x ^ 7)] = (c); /* vflip=0 & hflip=1 */ + dst[0x10000 | ((y ^ 7) << 3) | (x)] = (c); /* vflip=1 & hflip=0 */ + dst[0x18000 | ((y ^ 7) << 3) | (x ^ 7)] = (c); /* vflip=1 & hflip=1 */ + + /* Next pixel */ + bp = bp >> 4; + } + } + } + + /* Clear modified pattern flag */ + bg_name_dirty[name] = 0; + } +} + +void update_bg_pattern_cache_m5(int index) +{ + int i; + uint8 x, y, c; + uint8 *dst; + uint16 name; + uint32 bp; + + for(i = 0; i < index; i++) + { + /* Get modified pattern name index */ + name = bg_name_list[i]; + + /* Pattern cache base address */ + dst = &bg_pattern_cache[name << 6]; + + /* Check modified lines */ + for(y = 0; y < 8; y ++) + { + if(bg_name_dirty[name] & (1 << y)) + { + /* Byteplane data (one pattern = 4 bytes) */ + /* LIT_ENDIAN: byte0 (lsb) p2p3 p0p1 p6p7 p4p5 (msb) byte3 */ + /* BIG_ENDIAN: byte0 (msb) p0p1 p2p3 p4p5 p6p7 (lsb) byte3 */ + bp = *(uint32 *)&vram[(name << 5) | (y << 2)]; + + /* Update cached line (8 pixels = 8 bytes) */ + for(x = 0; x < 8; x ++) + { + /* Extract pixel data */ + c = bp & 0x0F; + + /* Pattern cache data (one pattern = 8 bytes) */ + /* byte0 <-> p0 p1 p2 p3 p4 p5 p6 p7 <-> byte7 (hflip = 0) */ + /* byte0 <-> p7 p6 p5 p4 p3 p2 p1 p0 <-> byte7 (hflip = 1) */ +#ifdef LSB_FIRST + /* Byteplane data = (msb) p4p5 p6p7 p0p1 p2p3 (lsb) */ + dst[0x00000 | (y << 3) | (x ^ 3)] = (c); /* vflip=0, hflip=0 */ + dst[0x20000 | (y << 3) | (x ^ 4)] = (c); /* vflip=0, hflip=1 */ + dst[0x40000 | ((y ^ 7) << 3) | (x ^ 3)] = (c); /* vflip=1, hflip=0 */ + dst[0x60000 | ((y ^ 7) << 3) | (x ^ 4)] = (c); /* vflip=1, hflip=1 */ +#else + /* Byteplane data = (msb) p0p1 p2p3 p4p5 p6p7 (lsb) */ + dst[0x00000 | (y << 3) | (x ^ 7)] = (c); /* vflip=0, hflip=0 */ + dst[0x20000 | (y << 3) | (x)] = (c); /* vflip=0, hflip=1 */ + dst[0x40000 | ((y ^ 7) << 3) | (x ^ 7)] = (c); /* vflip=1, hflip=0 */ + dst[0x60000 | ((y ^ 7) << 3) | (x)] = (c); /* vflip=1, hflip=1 */ +#endif + /* Next pixel */ + bp = bp >> 4; + } + } + } + + /* Clear modified pattern flag */ + bg_name_dirty[name] = 0; + } +} + + +/*--------------------------------------------------------------------------*/ +/* Window & Plane A clipping update function (Mode 5) */ +/*--------------------------------------------------------------------------*/ + +void window_clip(unsigned int data, unsigned int sw) +{ + /* Window size and invert flags */ + int hp = (data & 0x1f); + int hf = (data >> 7) & 1; + + /* Perform horizontal clipping; the results are applied in reverse + if the horizontal inversion flag is set + */ + int a = hf; + int w = hf ^ 1; + + /* Display width (16 or 20 columns) */ + sw = 16 + (sw << 2); + + if(hp) + { + if(hp > sw) + { + /* Plane W takes up entire line */ + clip[w].left = 0; + clip[w].right = sw; + clip[w].enable = 1; + clip[a].enable = 0; + } + else + { + /* Plane W takes left side, Plane A takes right side */ + clip[w].left = 0; + clip[a].right = sw; + clip[a].left = clip[w].right = hp; + clip[0].enable = clip[1].enable = 1; + } + } + else + { + /* Plane A takes up entire line */ + clip[a].left = 0; + clip[a].right = sw; + clip[a].enable = 1; + clip[w].enable = 0; + } +} + + +/*--------------------------------------------------------------------------*/ +/* Init, reset routines */ +/*--------------------------------------------------------------------------*/ + +void render_init(void) +{ + int bx, ax; + + /* Initialize layers priority pixel look-up tables */ + uint16 index; + for (bx = 0; bx < 0x100; bx++) + { + for (ax = 0; ax < 0x100; ax++) + { + index = (bx << 8) | (ax); + + lut[0][index] = make_lut_bg(bx, ax); + lut[1][index] = make_lut_bgobj(bx, ax); + lut[2][index] = make_lut_bg_ste(bx, ax); + lut[3][index] = make_lut_obj(bx, ax); + lut[4][index] = make_lut_bgobj_ste(bx, ax); + lut[5][index] = make_lut_bgobj_m4(bx,ax); + } + } + + /* Initialize pixel color look-up tables */ + palette_init(); + + /* Make sprite pattern name index look-up table (Mode 5) */ + make_name_lut(); + + /* Make bitplane to pixel look-up table (Mode 4) */ + make_bp_lut(); +} + +void render_reset(void) +{ + /* Clear display bitmap */ + memset(bitmap.data, 0, bitmap.pitch * bitmap.height); + + /* Clear line buffers */ + memset(linebuf, 0, sizeof(linebuf)); + + /* Clear color palettes */ + memset(pixel, 0, sizeof(pixel)); + + /* Clear pattern cache */ + memset ((char *) bg_pattern_cache, 0, sizeof (bg_pattern_cache)); + + /* Reset Sprite infos */ + spr_ovr = spr_col = object_count[0] = object_count[1] = 0; +} + + +/*--------------------------------------------------------------------------*/ +/* Line rendering functions */ +/*--------------------------------------------------------------------------*/ + +void render_line(int line) +{ + /* Check display status */ + if (reg[1] & 0x40) + { + /* Update pattern cache */ + if (bg_list_index) + { + update_bg_pattern_cache(bg_list_index); + bg_list_index = 0; + } + + /* Render BG layer(s) */ + render_bg(line); + + /* Render sprite layer */ + render_obj(line & 1); + + /* Left-most column blanking */ + if (reg[0] & 0x20) + { + if (system_hw > SYSTEM_SGII) + { + memset(&linebuf[0][0x20], 0x40, 8); + } + } + + /* Parse sprites for next line */ + if (line < (bitmap.viewport.h - 1)) + { + parse_satb(line); + } + + /* Horizontal borders */ + if (bitmap.viewport.x > 0) + { + memset(&linebuf[0][0x20 - bitmap.viewport.x], 0x40, bitmap.viewport.x); + memset(&linebuf[0][0x20 + bitmap.viewport.w], 0x40, bitmap.viewport.x); + } + } + else + { + /* Master System & Game Gear VDP specific */ + if (system_hw < SYSTEM_MD) + { + /* Update SOVR flag */ + status |= spr_ovr; + spr_ovr = 0; + + /* Sprites are still parsed when display is disabled */ + parse_satb(line); + } + + /* Blanked line */ + memset(&linebuf[0][0x20 - bitmap.viewport.x], 0x40, bitmap.viewport.w + 2*bitmap.viewport.x); + } + + /* Pixel color remapping */ + remap_line(line); +} + +void blank_line(int line, int offset, int width) +{ + memset(&linebuf[0][0x20 + offset], 0x40, width); + remap_line(line); +} + +void remap_line(int line) +{ + /* Line width */ + int width = bitmap.viewport.w + 2*bitmap.viewport.x; + + /* Pixel line buffer */ + uint8 *src = &linebuf[0][0x20 - bitmap.viewport.x]; + + /* Adjust line offset in framebuffer */ + line = (line + bitmap.viewport.y) % lines_per_frame; + + /* Take care of Game Gear reduced screen when overscan is disabled */ + if (line < 0) return; + + /* Adjust for interlaced output */ + if (interlaced && config.render) + { + line = (line * 2) + odd_frame; + } + +#if defined(USE_15BPP_RENDERING) || defined(USE_16BPP_RENDERING) + /* NTSC Filter (only supported for 15 or 16-bit pixels rendering) */ + if (config.ntsc) + { + if (reg[12] & 0x01) + { + md_ntsc_blit(md_ntsc, ( MD_NTSC_IN_T const * )pixel, src, width, line); + } + else + { + sms_ntsc_blit(sms_ntsc, ( SMS_NTSC_IN_T const * )pixel, src, width, line); + } + } + else +#endif + { +#ifdef CUSTOM_BLITTER + CUSTOM_BLITTER(line, width, pixel, src) +#else + /* Convert VDP pixel data to output pixel format */ + PIXEL_OUT_T *dst = ((PIXEL_OUT_T *)&bitmap.data[(line * bitmap.pitch)]); + if (config.lcd) + { + do + { + RENDER_PIXEL_LCD(src,dst,pixel,config.lcd); + } + while (--width); + } + else + { + do + { + *dst++ = pixel[*src++]; + } + while (--width); + } + #endif + } +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_render.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_render.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_render.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_render.h index f5b2faa010..8950a6a9c0 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/vdp_render.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/vdp_render.h @@ -1,143 +1,143 @@ -/*************************************************************************************** - * Genesis Plus - * Video Display Processor (pixel output rendering) - * - * Support for all TMS99xx modes, Mode 4 & Mode 5 rendering - * - * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _RENDER_H_ -#define _RENDER_H_ - -/* 3:3:2 RGB */ -#if defined(USE_8BPP_RENDERING) -#define PIXEL(r,g,b) (((r) << 5) | ((g) << 2) | (b)) -#define GET_R(pixel) (((pixel) & 0xe0) >> 5) -#define GET_G(pixel) (((pixel) & 0x1c) >> 2) -#define GET_B(pixel) (((pixel) & 0x03) >> 0) - -/* 5:5:5 RGB */ -#elif defined(USE_15BPP_RENDERING) -#if defined(USE_ABGR) -#define PIXEL(r,g,b) ((1 << 15) | ((b) << 10) | ((g) << 5) | (r)) -#define GET_B(pixel) (((pixel) & 0x7c00) >> 10) -#define GET_G(pixel) (((pixel) & 0x03e0) >> 5) -#define GET_R(pixel) (((pixel) & 0x001f) >> 0) -#else -#define PIXEL(r,g,b) ((1 << 15) | ((r) << 10) | ((g) << 5) | (b)) -#define GET_R(pixel) (((pixel) & 0x7c00) >> 10) -#define GET_G(pixel) (((pixel) & 0x03e0) >> 5) -#define GET_B(pixel) (((pixel) & 0x001f) >> 0) -#endif - -/* 5:6:5 RGB */ -#elif defined(USE_16BPP_RENDERING) -#define PIXEL(r,g,b) (((r) << 11) | ((g) << 5) | (b)) -#define GET_R(pixel) (((pixel) & 0xf800) >> 11) -#define GET_G(pixel) (((pixel) & 0x07e0) >> 5) -#define GET_B(pixel) (((pixel) & 0x001f) >> 0) - -/* 8:8:8 RGB */ -#elif defined(USE_32BPP_RENDERING) -#define PIXEL(r,g,b) ((0xff << 24) | ((r) << 16) | ((g) << 8) | (b)) -#define GET_R(pixel) (((pixel) & 0xff0000) >> 16) -#define GET_G(pixel) (((pixel) & 0x00ff00) >> 8) -#define GET_B(pixel) (((pixel) & 0x0000ff) >> 0) -#endif - -/* LCD image persistence (ghosting) filter */ -/* Simulates (roughly) the slow decay response time of passive-matrix LCD */ -/* Rate value is formatted as 0.8 fixed-point integer (between 0.0 and 0.99609375), a higher value meaning a slower decay */ -/* Required for proper display of some effects in a few Game Gear games (James Pond 3, Power Drift, Super Monaco GP II,...) */ -#define RENDER_PIXEL_LCD(in,out,table,rate) \ -{ \ - PIXEL_OUT_T pixel_out = table[*in++]; \ - PIXEL_OUT_T pixel_old = *out; \ - uint8 r = GET_R(pixel_out); \ - uint8 g = GET_G(pixel_out); \ - uint8 b = GET_B(pixel_out); \ - int r_decay = GET_R(pixel_old) - r; \ - int g_decay = GET_G(pixel_old) - g; \ - int b_decay = GET_B(pixel_old) - b; \ - if (r_decay > 0) r += (rate * r_decay) >> 8; \ - if (g_decay > 0) g += (rate * g_decay) >> 8; \ - if (b_decay > 0) b += (rate * b_decay) >> 8; \ - *out++ = PIXEL(r,g,b); \ -} - -/* Global variables */ -extern uint16 spr_col; - -/* Function prototypes */ -extern void render_init(void); -extern void render_reset(void); -extern void render_line(int line); -extern void blank_line(int line, int offset, int width); -extern void remap_line(int line); -extern void window_clip(unsigned int data, unsigned int sw); -extern void render_bg_m0(int line); -extern void render_bg_m1(int line); -extern void render_bg_m1x(int line); -extern void render_bg_m2(int line); -extern void render_bg_m3(int line); -extern void render_bg_m3x(int line); -extern void render_bg_inv(int line); -extern void render_bg_m4(int line); -extern void render_bg_m5(int line); -extern void render_bg_m5_vs(int line); -extern void render_bg_m5_im2(int line); -extern void render_bg_m5_im2_vs(int line); -extern void render_obj_tms(int line); -extern void render_obj_m4(int line); -extern void render_obj_m5(int line); -extern void render_obj_m5_ste(int line); -extern void render_obj_m5_im2(int line); -extern void render_obj_m5_im2_ste(int line); -extern void parse_satb_tms(int line); -extern void parse_satb_m4(int line); -extern void parse_satb_m5(int line); -extern void update_bg_pattern_cache_m4(int index); -extern void update_bg_pattern_cache_m5(int index); -extern void color_update_m4(int index, unsigned int data); -extern void color_update_m5(int index, unsigned int data); - -/* Function pointers */ -extern void (*render_bg)(int line); -extern void (*render_obj)(int line); -extern void (*parse_satb)(int line); -extern void (*update_bg_pattern_cache)(int index); - -#endif /* _RENDER_H_ */ +/*************************************************************************************** + * Genesis Plus + * Video Display Processor (pixel output rendering) + * + * Support for all TMS99xx modes, Mode 4 & Mode 5 rendering + * + * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code) + * Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _RENDER_H_ +#define _RENDER_H_ + +/* 3:3:2 RGB */ +#if defined(USE_8BPP_RENDERING) +#define PIXEL(r,g,b) (((r) << 5) | ((g) << 2) | (b)) +#define GET_R(pixel) (((pixel) & 0xe0) >> 5) +#define GET_G(pixel) (((pixel) & 0x1c) >> 2) +#define GET_B(pixel) (((pixel) & 0x03) >> 0) + +/* 5:5:5 RGB */ +#elif defined(USE_15BPP_RENDERING) +#if defined(USE_ABGR) +#define PIXEL(r,g,b) ((1 << 15) | ((b) << 10) | ((g) << 5) | (r)) +#define GET_B(pixel) (((pixel) & 0x7c00) >> 10) +#define GET_G(pixel) (((pixel) & 0x03e0) >> 5) +#define GET_R(pixel) (((pixel) & 0x001f) >> 0) +#else +#define PIXEL(r,g,b) ((1 << 15) | ((r) << 10) | ((g) << 5) | (b)) +#define GET_R(pixel) (((pixel) & 0x7c00) >> 10) +#define GET_G(pixel) (((pixel) & 0x03e0) >> 5) +#define GET_B(pixel) (((pixel) & 0x001f) >> 0) +#endif + +/* 5:6:5 RGB */ +#elif defined(USE_16BPP_RENDERING) +#define PIXEL(r,g,b) (((r) << 11) | ((g) << 5) | (b)) +#define GET_R(pixel) (((pixel) & 0xf800) >> 11) +#define GET_G(pixel) (((pixel) & 0x07e0) >> 5) +#define GET_B(pixel) (((pixel) & 0x001f) >> 0) + +/* 8:8:8 RGB */ +#elif defined(USE_32BPP_RENDERING) +#define PIXEL(r,g,b) ((0xff << 24) | ((r) << 16) | ((g) << 8) | (b)) +#define GET_R(pixel) (((pixel) & 0xff0000) >> 16) +#define GET_G(pixel) (((pixel) & 0x00ff00) >> 8) +#define GET_B(pixel) (((pixel) & 0x0000ff) >> 0) +#endif + +/* LCD image persistence (ghosting) filter */ +/* Simulates (roughly) the slow decay response time of passive-matrix LCD */ +/* Rate value is formatted as 0.8 fixed-point integer (between 0.0 and 0.99609375), a higher value meaning a slower decay */ +/* Required for proper display of some effects in a few Game Gear games (James Pond 3, Power Drift, Super Monaco GP II,...) */ +#define RENDER_PIXEL_LCD(in,out,table,rate) \ +{ \ + PIXEL_OUT_T pixel_out = table[*in++]; \ + PIXEL_OUT_T pixel_old = *out; \ + uint8 r = GET_R(pixel_out); \ + uint8 g = GET_G(pixel_out); \ + uint8 b = GET_B(pixel_out); \ + int r_decay = GET_R(pixel_old) - r; \ + int g_decay = GET_G(pixel_old) - g; \ + int b_decay = GET_B(pixel_old) - b; \ + if (r_decay > 0) r += (rate * r_decay) >> 8; \ + if (g_decay > 0) g += (rate * g_decay) >> 8; \ + if (b_decay > 0) b += (rate * b_decay) >> 8; \ + *out++ = PIXEL(r,g,b); \ +} + +/* Global variables */ +extern uint16 spr_col; + +/* Function prototypes */ +extern void render_init(void); +extern void render_reset(void); +extern void render_line(int line); +extern void blank_line(int line, int offset, int width); +extern void remap_line(int line); +extern void window_clip(unsigned int data, unsigned int sw); +extern void render_bg_m0(int line); +extern void render_bg_m1(int line); +extern void render_bg_m1x(int line); +extern void render_bg_m2(int line); +extern void render_bg_m3(int line); +extern void render_bg_m3x(int line); +extern void render_bg_inv(int line); +extern void render_bg_m4(int line); +extern void render_bg_m5(int line); +extern void render_bg_m5_vs(int line); +extern void render_bg_m5_im2(int line); +extern void render_bg_m5_im2_vs(int line); +extern void render_obj_tms(int line); +extern void render_obj_m4(int line); +extern void render_obj_m5(int line); +extern void render_obj_m5_ste(int line); +extern void render_obj_m5_im2(int line); +extern void render_obj_m5_im2_ste(int line); +extern void parse_satb_tms(int line); +extern void parse_satb_m4(int line); +extern void parse_satb_m5(int line); +extern void update_bg_pattern_cache_m4(int index); +extern void update_bg_pattern_cache_m5(int index); +extern void color_update_m4(int index, unsigned int data); +extern void color_update_m5(int index, unsigned int data); + +/* Function pointers */ +extern void (*render_bg)(int line); +extern void (*render_obj)(int line); +extern void (*parse_satb)(int line); +extern void (*update_bg_pattern_cache)(int index); + +#endif /* _RENDER_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/CHANGELOG.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/CHANGELOG.txt new file mode 100644 index 0000000000..815d39701b --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/CHANGELOG.txt @@ -0,0 +1,492 @@ +-------------------- +Genesis Plus History +-------------------- + +All recent changes were backported from the GX version (Gamecube/Wii port), maintained by Eke-Eke. +Please look at http://code.google.com/p/genplus-gx/ for more infos. + + +--------------------------------------------------------------------------------------------------------- +[07/08/2011] version 1.6.0 (Eke-Eke) +--------------------------------------------------------------------------------------------------------- + +[Core/Sound] +--------------- +* added YM2413 emulation in Master System compatibility mode. +* fixed SN76489 noise boost initialization. +* minor YM2612 core optimizations. + +[Core/VDP] +--------------- +* added accurate emulation of SG-1000, Master System (315-5124, 315-5246) & Game Gear VDP. +* added support for all TMS9918 rendering modes. +* improved Mega Drive VDP timings accuracy in Master System Compatibility mode. +* fixed color palette initialization. +* fixed shifted sprites rendering in Mode 4. +* modified pixel rendering support (pixel depth is now forced at compilation time). + +[Core/CPU] +--------------- +* optimized 68k core (rewrote 68k interrupt handling, removed multiple CPU types support & unused code) for 5~8% speed improvment + +[Core/IO] +--------------- +* added accurate emulation of Master System (315-5216, 315-5237, 315-5297) & Game Gear I/O controllers. +* added Terebi Oekaki tablet emulation. +* improved Mouse emulation (fixes mouse support in Cannon Fodder). +* improved Justifier emulation (fixes gun support in Lethal Enforcers 2). +* improved 6-Buttons control pad emulation (fixes Duke Nukem 3D) +* modified lightgun emulation to use common key inputs for all devices. +* 2-buttons controller is now picked by default for Master System games. + +[Core/MD] +--------------- +* added copy-protection hardware emulation for some new dumped games (Tiny Toon Adventures 3, Mighty Morphin Power Rangers & The Battle of Red Cliffs). +* added Game Toshokan in EEPROM database (verified on real cartridge). +* fixed Micro Machines 2 - Turbo Tournament EEPROM size (verified on real cartridge). +* modified SRAM banswitch hardware emulation to be more compatible with some hacks. + +[Core/MS] +--------------- +* added Cyborg Z to Korean mapper database. + +[Core/GG] +--------------- +* added 93C46 EEPROM emulation (Majors Pro Baseball, World Series Baseball & World Series Baseball 95). + +[Core/General] +--------------- +* added support for .mdx ROM format. +* added Game Gear & SG-1000 ROM support. +* added accurate emulation of SG-1000, Master System (I, II) & Game Gear hardware models for 100% compatibility. +* updated to new Genesis Plus license (see http://cgfm2.emuviews.com/) +* removed DOS port +* various code cleanup. + + +--------------------------------------------------------------------------------------------------------- +[31/03/2011] version 1.5.0 (Eke-Eke) +--------------------------------------------------------------------------------------------------------- + +[Core/VDP] +--------------- +* added support for Master System compatibility mode (Z80 ports access mode), incl. Mode 5 rendering. +* added Mode 4 rendering for both Genesis & Master System modes. +* added alternate BG planes rendering functions (should be faster on PPC architectures). + +[Core/IO] +--------------- +* added support for Master System compatibility mode (Z80 ports access mode). +* added Master System peripherals emulation (Control Pad, Paddle, Sports Pad & Light Phaser). +* added XE-1AP (analog controller) emulation. +* added Activator emulation. + +[Core/Extra] +--------------- +* added support for all known Master System cartridge mappers. +* added copy-protection hardware emulation for a few MD unlicensed games: fixes 777 Casino (crash when talking to bunny girls). +(NB: most of those unlicensed games seem to have been already patched by ROM dumpers, main purpose is documenting them) +* added support for Top Shooter arcade board controller. (A=Shoot, B=Bet, C/RIGHT=Coins, START=Start, hold UP on startup to enter service mode) +* improved King of Fighters 98 mapper emulation (registers address decoding is now 100% accurate) +* fixed Game Genie when several codes affect same ROM address. +* fixed EEPROM types for Brian Lara Cricket & NBA Jam TE (verified on real cartridges) + +[Core/General] +--------------- +* added Master System compatibility mode emulation (automatically enabled when loading ROM file with .sms extension). +* improved savestate stability & compatibility (support for old 1.4.x savestates is preserved) +* various code cleanup & comments. + + +--------------------------------------------------------------------------------------------------------- +[04/12/2010] version 1.4.1 (Eke-Eke) +--------------------------------------------------------------------------------------------------------- + +[Core/Sound] +--------------- +* implemented Blargg's blip buffer in SN76489 core (all channels are now lineary interpolated) + +[Core/VDP] +--------------- +* improved 2-cell vscroll emulation accuracy, as verified on real hardware (Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge) +* improved VBLANK flag accuracy, as observed on real hardware. +* improved DMA operations accuracy, writes are now performed on a scanline basis: fixes Gaiares (flickering title screen). +* improved DMA Fill timing accuracy. +* fixed DMA with bad code values: fixes Williams Arcade Classics (corrupted gfx after soft reset). +* fixed horizontal resolution changes during HBLANK: fixes Bugs Bunny in Double Trouble (2nd stage). +* fixed Vertical Counter in interlace mode 1, as observed on real hardware. +* fixed horizontal border width, as observed on real hardware. +* various code improvments & optimizations. + +[Core/CPU] +--------------- +* fixed state of Z80 registers on reset (sound issues with Defender & Defender 2 in Williams Arcade Classics) +* implemented 68k undocumented flags behavior for DIVU/DIVS instructions (Bloodshot / Battle Frenzy) + +[Core/Extra] +--------------- +* improved emulation of copy-protection hardware found in some unlicensed cartridges (Mulan, Pocket Monsters II). +* enabled simultaneous use of multitap & J-CART (Super Skidmarks 6-player mode) +* improved savestate format: added DMA, SVP, cartridge mapping & internal registers state informations +* improved unlicensed ROM mappers emulation +* added Chinese Fighters III mapper support +* added Top Fighter mapper support +* fixed Barver Battle Saga mapper support +* fixed cartridge hardware soft-reset (Game Genie, SVP, ...) +* fixed Game Genie registers byte reads + + +---------------------------------------------------------------------------------------------------------------------------------------------------- +[06/30/10] version 1.4.0 (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +[Core/Sound] + +* completely rewrote sound processing/mixing: sound chips are now clocked with exact output framerate +to ensure 100% smooth video & audio playback, with no lag or skipping, while rendering an accurate number +of samples per frame and keeping PSG & FM chips in sync. +* improved PSG & FM chips synchronization with CPU execution (fixed point precision). +* improved YM2612 core general accuracy (SSG-EG, CSM mode,...) (based upon Nemesis recent tests on real hardware) +* improved YM2612 LFO emulation accuracy: fixes "Spider-Man & Venom : Separation Anxiety" (intro) +* fixed YM2612 bug with Timer B: fixes "Langrisser Hikari II"/"Der Langrisser II" (Sega logo) +* fixed YM2612 context saving/loading. +* fixed YM2612 state on reset. +* removed outdated & less accurate Gens YM2612 core +* added configurable YM2612 DAC resolution emulation. +* added configurable & faster FIR resampler (thanks to Blargg & AamirM), removed libsamplerate support. +* added configurable Low-Pass filtering +* added configurable 3-Band Equalizer (thanks to Neil C). +* added an option to boost SN76489 Noise Channel. +* adjusted SN76489 cut-off frequency. + + +[Core/VDP] + +* added support for CRAM writes during horizontal blanking (Striker, Zero the Kamikaze Squirrel,...) +* added support for 2-Cell vertical scrolling in Interlaced 2 mode +* added support for some undocumented mode register bits +* added proper emulation of HV Counter latch: fixes Sunset Riders intro +* added pixel-accurate emulation of mid-line display on/off (Nigel Mansell World Championship PAL, Ren & Stimpy's Invention PAL,...) +* improved FIFO timings accuracy: fixes Sol Deace intro +* improved sprite masking accuracy (thanks to Nemesis for his test program) +* improved sprites processing accuracy: fixes (un)masked sprites in Mickey Mania (3D level), Sonic 2 (VS mode). +* improved HBLANK flag timing accuracy: fixes Mega Turrican (Sky level) +* improved horizontal blanking & HINT/VINT occurence timing accuracy, as measured on real hardware. +* improved HCounter accuracy in 40-cell mode, as measured on real hardware. +* improved color accuracy in VDP highlight mode to match results observed on real hardware + + +[Core/CPU] + +* updated Z80 core to last version (fixes interrupt Mode 0 timing and some BIT instructions). +* fixed some Z80 instructions timing. +* improved Z80 interrupt accuracy +* improved 68k accuracy (initial Reset timing + auto-vectored interrupts handling). +* improved 68k timing accuracy for DIVU/DVIS (thanks to Jorge Cwik) & MULU/MULS instructions. +* improved Z80 & 68k cpu execution/synchronization accuracy by using Master Clock as common reference (now run exactly 3420 M-Cycles per line). +* modified Z80 & 68k cores to directly use external cycle count instead of intermediate counters. + + +[Core/Extra] + +* added Game Genie hardware emulation (Game Genie ROM is now fully supported). +* added Action Replay hardware emulation (Action replay ROM is now fully supported). +* added S&K "Lock-On" hardware emulation (you can "lock" any games to Sonic & Knuckles). +* added Cartridge "hot swap" feature. +* added missing EEPROM support in some games. +* added accurate TMSS emulation (VDP lock-out) +* fixed Realtec mapper emulation: fixes missing sound in Balloon Boy / Funny World. +* fixed lightgun auto-detection: fixes default cursor position in Lethal Enforcers II. +* lots of code cleanup, bugfixes & optimization. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [12/14/08] version 1.3.0 (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* YM2612 bugfixes (MAME core): + .fixed EG Decay->Substain transition when SL & DR are minimals: fix tracks #3 and #9 in "Mega Turrican" + .fixed a bug in SSG-EG emulation code: fix Level 1 music in "Alisia Dragoon" + .modified SSG-EG Decay End Level: fix some sound effects (ChainSaw, Zap...) in "Beavis & Butthead" + .improved Detune overflow accuracy: fix very high frequency sounds in many games + .fixed registers 0x20-0x26 Reset state: fix intro music in "B.O.B" + .reverted incorrect fix with KEY ON: fix "Flamethrower" sound effect in "Alien 3" and many others +* adjusted HCounter values: fixes line flickering in "Sonic 3D" bonus stage +* adjusted VINT timing: fixes hang-up in "V.R Troopers" +* improved HBLANK flag accuracy: fixes line flickering in "Gouketsuji Ichizoku" +* fixed broken Z80 access to WRAM: fixes hang-up in "Mamono Hunter Youko" +* modified JCART emulation: fixes corrupted tracks logo in "Micro Machines 2" +* added Blargg's NTSC Filters support (NTSC video artifacts emulation) +* optimized VDP rendering core, rewrote 68k interface (memory handlers, cycle execution, interrupts): greatly improved emulation speed + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [08/26/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* YM2612(MAME): fixed LFO phase update for CH3 special mode: fix sound effects in Warlock & Aladdin (thanks to AamirM) +* YM2612(MAME): fixed EG attenuation level on "KEY ON": fix Ecco 2's splash sound +* YM2612(MAME): fixed SSG-EG emulation: fix Bubba'n Stix (Track 5) and many others +* YM2612(MAME): replaced sample interpolation with libsamplerate support, High Quality mode is now more accurate +* implemented cycle-accurate HINT timings: every timing sensitive games/demos are now *finally* working fine +* fixed a bug affecting CRAM/VSRAM DMA timings +* fixed Sprite Attribute Table address mask for VRAM writes +* improved accuracy of 68k access to Z80: fix music in Pacman 2 when entering PAUSE menu +* disabled "Address Error" emulation when UMK3 hack is loaded: fix game crashing after a round ends up +* added support for some more unlicensed games: Pocket Monster, King of Fighter 98, Soul Blade (credits to Haze) +* improved Menacer emulation: fix lightgun support in Body Count & T2: The Arcade Game +* added Konami Justifier emulation: fix lightgun support in Lethal Enforcers 1 & 2 +* added Sega Mouse emulation (Populous 2, Body Count, Shangai 2, Fun'n Games, ...) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [07/16/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* adjusted (again) HINT timings: fix Double Dragon 2 (game freezed), hopefully does not break anything else +* fixed broken EEPROM support for Codemaster games +* modified input update timings: fix Dungeons & Dragons * Warriors of the Eternal Sun (thanks to Notaz) +* added support for "Ultimate Mortal Kombat Trilogy" hack (max. size supported is 10MBytes) +* added (VERY) preliminar support for PICO roms (credits to Notaz for his documentation) +* improved YM2612 emulation (credits to Nemesis for his tests on real hardware): + .implemented phase overflow emulation: improved fix for special music instrument used in Comix Zone, Flashback, Ariel, Shaq Fu... + .improved SSG-EG emulation in MAME core (also based on additional code from Alone Coder) + .improved Timers emulation accuracy + .improved Enveloppe Generator accuracy + .fixed Channel 3 CSM mode emulation + .implemented sample interpolation in MAME core to emulate the chip at original frequency (HQ YM2612 mode, from gens) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [06/01/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* improved HCounter accuracy: fix graphic glitches in "Striker (Europe)" +* improved HINT timing accuracy: fix flickering in "Zero The Kamikaze Squirrel (USA)" +* improved rendering accuracy when backdrop color is modified during HBLANK (Road Rash I/II/III) +* fixed broken Game Genie support + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/19/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* modified VINT timings a little bit: fix lockup during Desert Strike's intro +* corrected 68k interrupts handling: fix graphic glitches in Darius II/Sagaia + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/06/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* updated SVP core: fix some perspective issues in Virtua Racing (thanks to Notaz) +* added internal SAT update during VRAM Fill: fix unmasked sprites during Battletech's intro +* fixed m68k core issues with gcc 4.2.3: fix Xperts, Lemmings 2, M1 Abrams Battle Tank +* forced YM2612 Enveloppe update: fix intro music in Batman&Robin (thanks to Aamir) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/01/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* added SVP emulation: Virtua Racing is now emulated (big thanks to Notaz and TascoDeluxe) +* fixed VDP registers behaviour when VDP Mode 4 is enabled: fix Bass Masters Classic Pro, Captain Planet & The Planeeters +* corrected a bug in DMA Fill operation: fix James Pond 3, Rockman World/Megaman Willy Wars (corrupted VRAM) +* corrected typo errors in CPU cycle counters update: fix optiom screen music in "College Slam" and probably others games. +* added preliminary support of undocumented YM2612 bug: fixes soundtracks of Shaq Fu, Spiderman, Comix Zone, Ariel and some others +* added support for mappers & copy protection devices used in many unlicensed/pirate cartridges (see cart_hw.c for details) +* rewrote memory handlers for better modularity and some (little) speedup +* reduced Savestate size + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [01/07/08] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* fixed interleaved rom detection: roms with .smd extension should now work fine +* fixed a recently introduced bug in VDP registers writes: fixes bad colors in Toy Story (intro) +* updated list of games using EEPROM: added Sports Talk Baseball (internal memory check fixed) and Brian Lara Cricket +* fixed VINT flag update when VINT is disabled: fixes NCAA College Football +* adjusted DMA timings in H32 mode: fixes flickering in Out of this World, Kawasaki Superbike Challenge & Formula One +* adjusted line rendering and HBLANK timings: fixes flickering in Nigel Mansell's World Championship Racing, Deadly Moves/Power Athlete +* fixed unmapped ROM reads through Z80 Bank: fixes Zombie High (Proto) +* added support for custom ROM/RAM mapping used by Game no Kanzume Otokuyou + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [12/28/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* many sourcecode cleanup and optimization +* completely rewrote EEPROM emulation: now support all known EEPROM types (24C01-24C65) and mappers (Sega, Acclaim, EA, Codemasters) +used in a few games (now use internal game database) as external RAM. This should at least fix save support in the following games: + . NBA Jam (alternate Acclaim mapper) + . College Slam, Frank Thomas Big Hurt Baseball (24C65 type) + . NHLPA Hockey 93, Rings of Power (EA mapper) + . Micro Machines serie, Brian Lara Cricket 96/Shane Warne Cricket (Codemasters mapper) +* external RAM is now initialized to 0xFF by default: fix Micromachines 2, Dino Dini Soccer +* fixed SRAM 16-bits memory handlers: fix some Sega Sports and EA Sports games (NFL95, NBA Action 95, NHL97, NHL98,...) +* modified WRITE_xxx & READ_xxx macros for better portability and faster memory access on BIG ENDIAN platform +* completely rewrote BIG ENDIAN support in render.c and vdp.c: rendering should be a little faster +* rewrote ROM bankswitch emulation (Super Street Fighter II): ROM access are faster, using memory pointers instead of reading ROM copy from ARAM +* fixed leftmost Window/PlaneA column render and implemented Window bug (as described by Charles Mc Donald) +* improved "Sprite Limit" and "Sprite Collision" detection accuracy +* modified RGB565 Color Palette to use the full available color range (0-31;0-63) +* implemented "cycle accurate" HV Interrupt timings: fix Sesame's Street Counting Cafe, Legend of Galahad (intro) +* improved VDP access timings accuracy (added FIFO emulation): fix Double Clutch +* improved DMA timings accuracy: fix Winter Olympics (E), Arch Rivals and probably more +* fixed HCounter again: Road Rash serie (I,II,III) don't need timing hacks anymore +* fixed VCounter in Interlaced 2 mode: fix Combat Cars "VS-Mode" +* improved Interlaced 2 mode (double resolution) rendering: Sonic 2, Combat Cars ("VS-Modes") look far better +* added TMSS BIOS support (optional) +* rewrote part of the YM2162 MAME's core: fixed internal FM timers handling, removed non-YM2612 emulation code and unused multiple cpu support +* implemented "cycle accurate" FM timers & sound samples rendering +* improved Z80 Interrupt timing accuracy: fix Sonic 3 music slowdowns +* updated Z80 & 68000 cores to last MAME versions +* improved Soft Reset emulation: X-Men 2 and Eternal Champions (random character selection) now work more like on real hardware. +* added full overscan emulation (vertical & horizontal borders) for "pixel perfect" aspect ratio (tested against a real genesis) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [07/20/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* corrected TeamPlayer support: fix multiplayer in Gauntlet 4 (Sept. version), Pengo and a lot of others +* added J-Cart support: enable multiplayer in Codemasters games (Pete Sampras, Micromachines games, Super Skidmarks) +* added serial EEPROM autodetection: fix games with bad SRAM informations in header (NBA Jam TE) +* added SVP faking: display 2D graphics in Virtua Racing (the game is however still unplayable) +* added support for more internal IO registers: fixe some unlicensed games (Wisdom Tree games...) +* added preliminary support for unmapped protection device: fix some unlicensed games with special built-in hardware (Squirell King, Lion King 2...) +* added "Soft Reset" combo (in game, use L+Z triggers): this should be like pressing the RESET button on a real Genesis and this is required + in some games to enable special features or even complete the game (ex: X-Men). + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [06/21/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* added Multitap support (EA 4-Way Play and Sega Teamplayer): allowed up to four players in games supporting those peripherals +* added partial Sega Menacer lightgun support (use Analog Stick): automatically set when detecting the 6-in-1 Menacer game + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/18/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* you can now switch between FM cores without reseting the game. FM registers value are automatically restored when switching. +* removed the previous VINT timings modification because it brokes some games (Rocket Knight, Thunderforce III,...) +* added automatic Timing configuration (VDP latency, VINT timing & alternate Line Timing) at game loading, based upon specific romname detection. +This means you can still modify some of these options afterwards but they are now automatically set/unset when loading a game which need +special timing fixes. These fixes are also automatically desactivated when the current game doesn't need them. +For information, games that are actually detected and need special timings to run properly are: + .Legend of Galahad & Road Rash series (single line not rendered properly) + .Sesame Street Counting Cafe (don't boot) + .Chaos Engine/Soldiers of Fortune (graphic glitches on scrolling) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/08/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* VINT timings are now a little more accurate: fixes Sesame's Street Counting Cafe +* SN76496 MAX_OUTPUT back to normal +* modified FB_WNOISE value in SN76496 core according to John Kortink's last informations +* added support for Maxim's PSG core, same as used in SMSPLUS (it becomes the default PSG core) +* updated FM core to the latest MAME version +* corrected DAC output level (fixes voices and some special FX being too low) +* added support for Gens YM2612 (FM) core (MAME's one still remains default FM core) +* added configurable preamplification for each sound cores (see Emulator Options) +* added some other configurable sound options (boost overall volume, FM improvment for Gens YM2612) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/11/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* corrected MAX_OUTPUT value in SN76496 core: fix PSG sound (SFX) volume + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/17/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * added an option to enable alternate line rendering timing (fix single line error in Road Rash series and Legend of Galahad's Intro) + * Color RAM update now always reset color 0 to border color (fix color glitches in Mortal Kombat,...) (thanks to Noop's for the idea) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/09/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* modified HV counter tables (fix graphic glitches in Skitchin's sky, Lotus 2 Recs, Panorama Cotton, Dashin Desperados & maybe more) +* completely rewrote DMA timings emulation so that it works for all games (no more cpu freezing) +* added all DMA tranfer rates handling for each three DMA modes and added dma busy flag emulation +* modified interrupts handling on VDP register #0 and #1 writes (fix Lemmings status bar) +* added VDP RAM write latency (fix Chaos Engine/Soldier of Fortune gfx glitches) +* modified FM timers handling a bit (fix Vectorman2 music) +* corrected Sprite Limit rendering (fix Sonic 1 & Micromachines 2 title screens) +* corrected IO Registers writes (fix Decap' Attack controls, no more need for alternate input) +* corrected 6 Buttons Pad emulation (fix 6buttons detection in Mortal Kombat 3, Comix Zone and other 6-buttons compatible games) +* modified sound mixing a bit according to Generator sourcecode (FM and PSG ratios seems more correct) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [02/07/07] (Eke-Eke) +---------------------------------------------------------------------------------------------------------------------------------------------------- + +* fixed fm timers (fix missing music in Castle of Illusion, Quackshot, Undead Line, Wonderboy in Monster Lair, Cal 50, Turbo Outrun, Thundeforce 4 and maybe more) +* added complete EEPROM emulation (save support now works fine in Wonderboy5, Megaman Willy Wars, NBA Jam...) (credits to Notaz, adapted from Picodrive code) +* added preliminar dma timing emulation (fix bottom screen in Legend of Galahad) (credits to Notaz, adapted from Picodrive code) +* hack: clear Vint pending after Hint (INT level 4) acknowledge (fix Fatal Rewind) +* hack: modify read_bus16 to return a random value (fake fetch) (fix Time Killers) +* modified cpu execution timings, with more correct hblank and interrupts timing (fix ISS Deluxe, Double Dragon 2 and certainly more) (Based on Gens code) +* modified busreq mechanism: better synchro between z80 & 68k (no need to dejitter anymore) (Based on Gens code) +* added sprite collision detection (fix Strider 2) +* modified dma fill operation for big endian platform (fix Contra Hardcorps gfx garbage) + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/25/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Fixed a typo that made Z80 banked access to the VDP registers always fail. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [05/17/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Modified the rendering code to handle unaligned longword access to memory. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/20/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Modified 68000 emulator to prevent 'tas.b $mem' from writing data back + after a read (fixes Gargoyles). + * Fixed bug in 68000 emulator to swap order of words written for address + register indirect pre-decremented writes (fixes Jim Power graphics). + * Added support for 240-line displays (for Super Skidmarks). + * Rewrote part of the interrupt handling (fixes some raster effects). + * Removed sprite collision detection code (never really worked). + * Optimized sprite rendering inner loop. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [04/13/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + * Finished up memory map for VDP DMA V-bus reads. + * Fixed handling of 68000 writes to I/O chip at even addresses. + * Fixed bit 7 handling of control register in I/O chip. + * Finished up Z80 memory map. + * Added code to handle Genesis hardware lock-ups. + * Removed some faulty code from the 68000 memory map handlers. + + +---------------------------------------------------------------------------------------------------------------------------------------------------- + [03/22/03] (Charles MacDonald) +---------------------------------------------------------------------------------------------------------------------------------------------------- + + * Completed implementation of Z80 banked memory handlers. + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/LICENSE.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/LICENSE.txt similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/LICENSE.txt rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/LICENSE.txt index f28a39982a..b7b39e6694 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/LICENSE.txt +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/LICENSE.txt @@ -1,552 +1,552 @@ - -Unless otherwise explicitly stated, all code in Genesis Plus is released -under the following license: - -Copyright Charles MacDonald -Some portions copyright Nicola Salmoria and the MAME team -All rights reserved. - -Copyright (c) 2006-2011 Eke-Eke -All rights reserved. - -Redistribution and use of this code or any derivative works are permitted -provided that the following conditions are met: - -* Redistributions may not be sold, nor may they be used in a commercial -product or activity. - -* Redistributions that are modified from the original source must include the -complete source code, including the source code for all components used by a -binary built from the modified sources. However, as a special exception, the -source code distributed need not include anything that is normally distributed -(in either source or binary form) with the major components (compiler, kernel, -and so on) of the operating system on which the executable runs, unless that -component itself accompanies the executable. - -* Redistributions must reproduce the above copyright notice, this list of -conditions and the following disclaimer in the documentation and/or other -materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------------------------- - - -NTSC Filter, Blip Buffer and FIR Resampling libraries are distributed under the -terms of the GNU Lesser General Public License - - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - + +Unless otherwise explicitly stated, all code in Genesis Plus is released +under the following license: + +Copyright Charles MacDonald +Some portions copyright Nicola Salmoria and the MAME team +All rights reserved. + +Copyright (c) 2006-2011 Eke-Eke +All rights reserved. + +Redistribution and use of this code or any derivative works are permitted +provided that the following conditions are met: + +* Redistributions may not be sold, nor may they be used in a commercial +product or activity. + +* Redistributions that are modified from the original source must include the +complete source code, including the source code for all components used by a +binary built from the modified sources. However, as a special exception, the +source code distributed need not include anything that is normally distributed +(in either source or binary form) with the major components (compiler, kernel, +and so on) of the operating system on which the executable runs, unless that +component itself accompanies the executable. + +* Redistributions must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or other +materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------------------------- + + +NTSC Filter, Blip Buffer and FIR Resampling libraries are distributed under the +terms of the GNU Lesser General Public License + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/README.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/README.txt new file mode 100644 index 0000000000..eae932c848 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/README.txt @@ -0,0 +1,130 @@ + ---------------------------------------------------------------------------- + Genesis Plus + ---------------------------------------------------------------------------- + + based on the original version 1.3 + by Charles Mac Donald + WWW: http://cgfm2.emuviews.com + + version 1.6 + backported from Genesis Plus GX + by Eke-Eke + WWW: http://code.google.com/p/genplus-gx + + + What's New + ---------- + + see CHANGELOG.txt + + + Features + --------- + + * accurate SG-1000, Mark-III, Master System (I & II), Game Gear, Genesis & Mega Drive emulation (incl. backwards compatibility modes) + * NTSC (60Hz) & PAL (50Hz) hardware emulation + * highly accurate 68000 & Z80 CPU emulation + * highly accurate VDP emulation (all rendering modes, HBLANK, DMA, FIFO, HV interrupts, undocumented registers, display mid-line changes) + * cycle-accurate YM2612 & YM2413 emulation (FM synthesis is done at the original frequency, using FIR resampling) + * cycle-accurate chip synchronization (68000/Z80/YM2612/SN76489) + * basic hardware latency emulation (VDP/68k, Z80/68k) + * full overscan area (horizontal & vertical colored borders) emulation (optional) + * accurate TMSS model emulation incl. internal BIOS support (optional) + * Blargg's software NTSC filters support (optional) + * PICO emulation (partial) + * 2-buttons, 3-buttons & 6-buttons controllers emulation + * Sega Team Player & EA 4-Way Play multitap adapters emulation + * Sega Light Phaser, Menacer & Konami Justifier lightguns emulation + * Sega Mouse emulation + * Sega Activator emulation + * XE-1AP emulation + * Sega Paddle & Sports Pad emulation + * Terebe Oekaki emulation + * J-Cart adapter support(Micro Machines & Pete Sampras series, Super Skidmarks) + * SVP DSP emulation (Virtua Racing) + * SRAM support (up to 64kB) + * I2C (24Cxx) and MicroWire (93C46) EEPROM emulation (all known chips) + * ROM bankswitch hardware emulation (Super Street Fighter 2) + * SRAM bankswitch hardware emulation (Phantasy Star 4, Legend of Thor, Sonic the Hedgehog 3) + * emulation of banking & copy protection devices used in all known unlicensed/pirate cartridges + * emulation of all known Master System & Game Gear cartridge mappers + * native Game Genie & Action Replay hardware emulation + * Lock-On hardware emulation + * support for ROM image up to 10MB (Ultimate MK3 hack) + + + Usage + ----- + + The Windows version runs windowed in a 16-bit desktop with 48Hz sound using SDL but + without joystick support. + + + Controls + ----- + + Arrow Keys - Directional pad + A/Q,S,D,F - buttons A, B(1), C(2), START + W,X,C,V - buttons X, Y, Z, MODE if 6-buttons controller is enabled + Tab - Hard Reset + Esc - Exit program + + F2 - Toggle Fullscreen/Windowed mode + F4 - Toggle Audio (Turbo mode must be disabled first) + F6 - Toggle Turbo mode (Audio must be disabled first) + F7 - Load Savestate (game.gpz) + F8 - Save Savestate (game.gpz) + F9 - Toggle VDP mode: PAL(50hz)/NTSC(60hz) + F10 - Soft Reset + F11 - Toggle Border emulation + F12 - Toggle Player # (test only) + + + The mouse is used for lightguns, Sega Mouse, PICO & Terebi Oekaki tablet (automatically detected when loading supported game). + + A SRAM file (game.srm) is automatically saved on exit and loaded on startup. + + + Credits and Acknowlegements + --------------------------- + + Original code by Charles MacDonald + + Modified Genesis Plus GX code by Eke-Eke (http://code.google.com/p/genplus-gx ) + + The Genesis emulator authors: Bart Trzynadlowski, Steve Snake, Stef, Notaz, AamirM + + The regular people at spritesmind.net and smspower.org. + + The MAME team for the CPU and sound chip emulators. + + Maxim for his SN76489 emulator. + + Nemesis for his researches about the YM2612 and VDP. + + Notaz for his SVP emulator. + + Tasco Deluxe for his documentation of Realtec mapper. + + Haze for his reverse-engineering of most unlicensed games protection. + + Shay Green (Blargg) for his FIR Resampler & NTSC Video Filter. + + Neil C for his 3-Band EQ implementation. + + Jean-Loup Gailly and Mark Adler for their useful zip library. + + + Contact + ------- + + Eke-Eke + E-mail: ekeeke31@gmail.com + WWW: http://code.google.com/p/genplus-gx + + + Legal + ----- + + See license.txt for licensing terms. + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/config.c new file mode 100644 index 0000000000..1dd8d3b89c --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/config.c @@ -0,0 +1,51 @@ + +#include "osd.h" + +t_config config; + + +void set_config_defaults(void) +{ + int i; + + /* sound options */ + config.psg_preamp = 150; + config.fm_preamp = 100; + config.hq_fm = 1; + config.psgBoostNoise = 1; + config.filter = 0; + config.low_freq = 200; + config.high_freq = 8000; + config.lg = 1.0; + config.mg = 1.0; + config.hg = 1.0; + config.lp_range = 60; + config.dac_bits = 14; + config.ym2413 = 2; /* = AUTO (0 = always OFF, 1 = always ON) */ + + /* system options */ + config.system = 0; /* = AUTO (or SYSTEM_SG, SYSTEM_MARKIII, SYSTEM_SMS, SYSTEM_SMS2, SYSTEM_GG, SYSTEM_MD) */ + config.region_detect = 0; /* = AUTO (1 = USA, 2 = EUROPE, 3 = JAPAN/NTSC, 4 = JAPAN/PAL) */ + config.vdp_mode = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ + config.master_clock = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ + config.force_dtack = 0; + config.addr_error = 1; + config.bios = 0; + config.lock_on = 0; /* = OFF (can be TYPE_SK, TYPE_GG & TYPE_AR) */ + + /* display options */ + config.overscan = 0; /* 3 = all borders (0 = no borders , 1 = vertical borders only, 2 = horizontal borders only) */ + config.gg_extra = 0; /* 1 = show extended Game Gear screen (256x192) */ + config.render = 0; /* 1 = double resolution output (only when interlaced mode 2 is enabled) */ + + /* controllers options */ + input.system[0] = SYSTEM_MD_GAMEPAD; + input.system[1] = SYSTEM_MD_GAMEPAD; + config.gun_cursor[0] = 1; + config.gun_cursor[1] = 1; + config.invert_mouse = 0; + for (i=0;i + +static int check_zip(char *filename); + +int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension) +{ + int size = 0; + + if(check_zip(filename)) + { + unz_file_info info; + int ret = 0; + char fname[256]; + + /* Attempt to open the archive */ + unzFile *fd = unzOpen(filename); + if (!fd) return 0; + + /* Go to first file in archive */ + ret = unzGoToFirstFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Get file informations and update filename */ + ret = unzGetCurrentFileInfo(fd, &info, fname, 256, NULL, 0, NULL, 0); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Compressed filename extension */ + if (extension) + { + strncpy(extension, &fname[strlen(fname) - 3], 3); + extension[3] = 0; + } + + /* Open the file for reading */ + ret = unzOpenCurrentFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Retrieve uncompressed file size */ + size = info.uncompressed_size; + if(size > maxsize) + { + size = maxsize; + } + + /* Read (decompress) the file */ + ret = unzReadCurrentFile(fd, buffer, size); + if(ret != size) + { + unzCloseCurrentFile(fd); + unzClose(fd); + return 0; + } + + /* Close the current file */ + ret = unzCloseCurrentFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Close the archive */ + ret = unzClose(fd); + if(ret != UNZ_OK) return 0; + } + else + { + /* Open file */ + gzFile *gd = gzopen(filename, "rb"); + if (!gd) return 0; + + /* Read file data */ + size = gzread(gd, buffer, maxsize); + + /* filename extension */ + if (extension) + { + strncpy(extension, &filename[strlen(filename) - 3], 3); + extension[3] = 0; + } + + /* Close file */ + gzclose(gd); + } + + /* Return loaded ROM size */ + return size; +} + +/* + Verifies if a file is a ZIP archive or not. + Returns: 1= ZIP archive, 0= not a ZIP archive +*/ +static int check_zip(char *filename) +{ + uint8 buf[2]; + FILE *fd = fopen(filename, "rb"); + if(!fd) return (0); + fread(buf, 2, 1, fd); + fclose(fd); + if(memcmp(buf, "PK", 2) == 0) return (1); + return (0); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/fileio.h new file mode 100644 index 0000000000..f95a8e8a73 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/fileio.h @@ -0,0 +1,48 @@ +/* + * fileio.c + * + * Load a normal file, or ZIP/GZ archive. + * Returns loaded ROM size (zero if an error occured) + * + * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald + * modified by Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _FILEIO_H_ +#define _FILEIO_H_ + +/* Function prototypes */ +extern int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension); + +#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/icon.rc b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/icon.rc new file mode 100644 index 0000000000..e7c0c0663d --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/icon.rc @@ -0,0 +1 @@ +MAINICON ICON "md.ico" diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/main.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/main.c new file mode 100644 index 0000000000..a222fb6950 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/main.c @@ -0,0 +1,934 @@ +#ifdef __WIN32__ +#include +#else +#define MessageBox(owner, text, caption, type) printf("%s: %s\n", caption, text) +#endif + +#include "SDL.h" +#include "SDL_thread.h" + +#include "shared.h" +#include "sms_ntsc.h" +#include "md_ntsc.h" + +#define SOUND_FREQUENCY 48000 +#define SOUND_SAMPLES_SIZE 2048 + +#define VIDEO_WIDTH 320 +#define VIDEO_HEIGHT 240 + +int joynum = 0; + +int log_error = 0; +int debug_on = 0; +int turbo_mode = 0; +int use_sound = 1; +int fullscreen = 0; /* SDL_FULLSCREEN */ + +/* sound */ + +struct { + char* current_pos; + char* buffer; + int current_emulated_samples; +} sdl_sound; + + +static uint8 brm_format[0x40] = +{ + 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x00,0x00,0x00,0x00,0x40, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x53,0x45,0x47,0x41,0x5f,0x43,0x44,0x5f,0x52,0x4f,0x4d,0x00,0x01,0x00,0x00,0x00, + 0x52,0x41,0x4d,0x5f,0x43,0x41,0x52,0x54,0x52,0x49,0x44,0x47,0x45,0x5f,0x5f,0x5f +}; + + +static short soundframe[SOUND_SAMPLES_SIZE]; + +static void sdl_sound_callback(void *userdata, Uint8 *stream, int len) +{ + if(sdl_sound.current_emulated_samples < len) { + memset(stream, 0, len); + } + else { + memcpy(stream, sdl_sound.buffer, len); + /* loop to compensate desync */ + do { + sdl_sound.current_emulated_samples -= len; + } while(sdl_sound.current_emulated_samples > 2 * len); + memcpy(sdl_sound.buffer, + sdl_sound.current_pos - sdl_sound.current_emulated_samples, + sdl_sound.current_emulated_samples); + sdl_sound.current_pos = sdl_sound.buffer + sdl_sound.current_emulated_samples; + } +} + +static int sdl_sound_init() +{ + int n; + SDL_AudioSpec as_desired, as_obtained; + + if(SDL_Init(SDL_INIT_AUDIO) < 0) { + MessageBox(NULL, "SDL Audio initialization failed", "Error", 0); + return 0; + } + + as_desired.freq = SOUND_FREQUENCY; + as_desired.format = AUDIO_S16LSB; + as_desired.channels = 2; + as_desired.samples = SOUND_SAMPLES_SIZE; + as_desired.callback = sdl_sound_callback; + + if(SDL_OpenAudio(&as_desired, &as_obtained) == -1) { + MessageBox(NULL, "SDL Audio open failed", "Error", 0); + return 0; + } + + if(as_desired.samples != as_obtained.samples) { + MessageBox(NULL, "SDL Audio wrong setup", "Error", 0); + return 0; + } + + sdl_sound.current_emulated_samples = 0; + n = SOUND_SAMPLES_SIZE * 2 * sizeof(short) * 20; + sdl_sound.buffer = (char*)malloc(n); + if(!sdl_sound.buffer) { + MessageBox(NULL, "Can't allocate audio buffer", "Error", 0); + return 0; + } + memset(sdl_sound.buffer, 0, n); + sdl_sound.current_pos = sdl_sound.buffer; + return 1; +} + +static void sdl_sound_update(enabled) +{ + int size = audio_update(soundframe) * 2; + + if (enabled) + { + int i; + short *out; + + SDL_LockAudio(); + out = (short*)sdl_sound.current_pos; + for(i = 0; i < size; i++) + { + *out++ = soundframe[i]; + } + sdl_sound.current_pos = (char*)out; + sdl_sound.current_emulated_samples += size * sizeof(short); + SDL_UnlockAudio(); + } +} + +static void sdl_sound_close() +{ + SDL_PauseAudio(1); + SDL_CloseAudio(); + if (sdl_sound.buffer) + free(sdl_sound.buffer); +} + +/* video */ +md_ntsc_t *md_ntsc; +sms_ntsc_t *sms_ntsc; + +struct { + SDL_Surface* surf_screen; + SDL_Surface* surf_bitmap; + SDL_Rect srect; + SDL_Rect drect; + Uint32 frames_rendered; +} sdl_video; + +static int sdl_video_init() +{ + if(SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { + MessageBox(NULL, "SDL Video initialization failed", "Error", 0); + return 0; + } + sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); + sdl_video.surf_bitmap = SDL_CreateRGBSurface(SDL_SWSURFACE, 720, 576, 16, 0, 0, 0, 0); + sdl_video.frames_rendered = 0; + SDL_ShowCursor(0); + return 1; +} + +static void sdl_video_update() +{ + if (system_hw == SYSTEM_MCD) + { + system_frame_scd(0); + } + else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) + { + system_frame_gen(0); + } + else + { + system_frame_sms(0); + } + + /* viewport size changed */ + if(bitmap.viewport.changed & 1) + { + bitmap.viewport.changed &= ~1; + + /* source bitmap */ + sdl_video.srect.w = bitmap.viewport.w+2*bitmap.viewport.x; + sdl_video.srect.h = bitmap.viewport.h+2*bitmap.viewport.y; + sdl_video.srect.x = 0; + sdl_video.srect.y = 0; + if (sdl_video.srect.w > VIDEO_WIDTH) + { + sdl_video.srect.x = (sdl_video.srect.w - VIDEO_WIDTH) / 2; + sdl_video.srect.w = VIDEO_WIDTH; + } + if (sdl_video.srect.h > VIDEO_HEIGHT) + { + sdl_video.srect.y = (sdl_video.srect.h - VIDEO_HEIGHT) / 2; + sdl_video.srect.h = VIDEO_HEIGHT; + } + + /* destination bitmap */ + sdl_video.drect.w = sdl_video.srect.w; + sdl_video.drect.h = sdl_video.srect.h; + sdl_video.drect.x = (VIDEO_WIDTH - sdl_video.drect.w) / 2; + sdl_video.drect.y = (VIDEO_HEIGHT - sdl_video.drect.h) / 2; + + /* clear destination surface */ + SDL_FillRect(sdl_video.surf_screen, 0, 0); + +#if 0 + if (config.render && (interlaced || config.ntsc)) rect.h *= 2; + if (config.ntsc) rect.w = (reg[12]&1) ? MD_NTSC_OUT_WIDTH(rect.w) : SMS_NTSC_OUT_WIDTH(rect.w); + if (config.ntsc) + { + sms_ntsc = (sms_ntsc_t *)malloc(sizeof(sms_ntsc_t)); + md_ntsc = (md_ntsc_t *)malloc(sizeof(md_ntsc_t)); + + switch (config.ntsc) + { + case 1: + sms_ntsc_init(sms_ntsc, &sms_ntsc_composite); + md_ntsc_init(md_ntsc, &md_ntsc_composite); + break; + case 2: + sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo); + md_ntsc_init(md_ntsc, &md_ntsc_svideo); + break; + case 3: + sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb); + md_ntsc_init(md_ntsc, &md_ntsc_rgb); + break; + } + } + else + { + if (sms_ntsc) + { + free(sms_ntsc); + sms_ntsc = NULL; + } + + if (md_ntsc) + { + free(md_ntsc); + md_ntsc = NULL; + } + } +#endif + } + + SDL_BlitSurface(sdl_video.surf_bitmap, &sdl_video.srect, sdl_video.surf_screen, &sdl_video.drect); + SDL_UpdateRect(sdl_video.surf_screen, 0, 0, 0, 0); + + ++sdl_video.frames_rendered; +} + +static void sdl_video_close() +{ + if (sdl_video.surf_bitmap) + SDL_FreeSurface(sdl_video.surf_bitmap); + if (sdl_video.surf_screen) + SDL_FreeSurface(sdl_video.surf_screen); +} + +/* Timer Sync */ + +struct { + SDL_sem* sem_sync; + unsigned ticks; +} sdl_sync; + +static Uint32 sdl_sync_timer_callback(Uint32 interval) +{ + SDL_SemPost(sdl_sync.sem_sync); + sdl_sync.ticks++; + if (sdl_sync.ticks == (vdp_pal ? 50 : 20)) + { + SDL_Event event; + SDL_UserEvent userevent; + + userevent.type = SDL_USEREVENT; + userevent.code = vdp_pal ? (sdl_video.frames_rendered / 3) : sdl_video.frames_rendered; + userevent.data1 = NULL; + userevent.data2 = NULL; + sdl_sync.ticks = sdl_video.frames_rendered = 0; + + event.type = SDL_USEREVENT; + event.user = userevent; + + SDL_PushEvent(&event); + } + return interval; +} + +static int sdl_sync_init() +{ + if(SDL_InitSubSystem(SDL_INIT_TIMER|SDL_INIT_EVENTTHREAD) < 0) + { + MessageBox(NULL, "SDL Timer initialization failed", "Error", 0); + return 0; + } + + sdl_sync.sem_sync = SDL_CreateSemaphore(0); + sdl_sync.ticks = 0; + return 1; +} + +static void sdl_sync_close() +{ + if(sdl_sync.sem_sync) + SDL_DestroySemaphore(sdl_sync.sem_sync); +} + +static const uint16 vc_table[4][2] = +{ + /* NTSC, PAL */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0xEA , 0x102}, /* Mode 5 (224 lines) */ + {0xDA , 0xF2}, /* Mode 4 (192 lines) */ + {0x106, 0x10A} /* Mode 5 (240 lines) */ +}; + +static int sdl_control_update(SDLKey keystate) +{ + switch (keystate) + { + case SDLK_TAB: + { + system_reset(); + break; + } + + case SDLK_F1: + { + if (SDL_ShowCursor(-1)) SDL_ShowCursor(0); + else SDL_ShowCursor(1); + break; + } + + case SDLK_F2: + { + if (fullscreen) fullscreen = 0; + else fullscreen = SDL_FULLSCREEN; + sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); + break; + } + + case SDLK_F3: + { + if (config.bios == 0) config.bios = 3; + else if (config.bios == 3) config.bios = 1; + break; + } + + case SDLK_F4: + { + if (!turbo_mode) use_sound ^= 1; + break; + } + + case SDLK_F5: + { + log_error ^= 1; + break; + } + + case SDLK_F6: + { + if (!use_sound) + { + turbo_mode ^=1; + sdl_sync.ticks = 0; + } + break; + } + + case SDLK_F7: + { + FILE *f = fopen("game.gp0","rb"); + if (f) + { + uint8 buf[STATE_SIZE]; + fread(&buf, STATE_SIZE, 1, f); + state_load(buf); + fclose(f); + } + break; + } + + case SDLK_F8: + { + FILE *f = fopen("game.gp0","wb"); + if (f) + { + uint8 buf[STATE_SIZE]; + int len = state_save(buf); + fwrite(&buf, len, 1, f); + fclose(f); + } + break; + } + + case SDLK_F9: + { + config.region_detect = (config.region_detect + 1) % 5; + get_region(0); + + /* framerate has changed, reinitialize audio timings */ + audio_init(snd.sample_rate, 0); + + /* system with region BIOS should be reinitialized */ + if ((system_hw == SYSTEM_MCD) || ((system_hw & SYSTEM_SMS) && (config.bios & 1))) + { + system_init(); + system_reset(); + } + else + { + /* reinitialize I/O region register */ + if (system_hw == SYSTEM_MD) + { + io_reg[0x00] = 0x20 | region_code | (config.bios & 1); + } + else + { + io_reg[0x00] = 0x80 | (region_code >> 1); + } + + /* reinitialize VDP */ + if (vdp_pal) + { + status |= 1; + lines_per_frame = 313; + } + else + { + status &= ~1; + lines_per_frame = 262; + } + + /* reinitialize VC max value */ + switch (bitmap.viewport.h) + { + case 192: + vc_max = vc_table[0][vdp_pal]; + break; + case 224: + vc_max = vc_table[1][vdp_pal]; + break; + case 240: + vc_max = vc_table[3][vdp_pal]; + break; + } + } + break; + } + + case SDLK_F10: + { + gen_reset(0); + break; + } + + case SDLK_F11: + { + config.overscan = (config.overscan + 1) & 3; + if ((system_hw == SYSTEM_GG) && !config.gg_extra) + { + bitmap.viewport.x = (config.overscan & 2) ? 14 : -48; + } + else + { + bitmap.viewport.x = (config.overscan & 2) * 7; + } + bitmap.viewport.changed = 3; + break; + } + + case SDLK_F12: + { + joynum = (joynum + 1) % MAX_DEVICES; + while (input.dev[joynum] == NO_DEVICE) + { + joynum = (joynum + 1) % MAX_DEVICES; + } + break; + } + + case SDLK_ESCAPE: + { + return 0; + } + + default: + break; + } + + return 1; +} + +int sdl_input_update(void) +{ + uint8 *keystate = SDL_GetKeyState(NULL); + + /* reset input */ + input.pad[joynum] = 0; + + switch (input.dev[joynum]) + { + case DEVICE_LIGHTGUN: + { + /* get mouse coordinates (absolute values) */ + int x,y; + int state = SDL_GetMouseState(&x,&y); + + /* X axis */ + input.analog[joynum][0] = x - (VIDEO_WIDTH-bitmap.viewport.w)/2; + + /* Y axis */ + input.analog[joynum][1] = y - (VIDEO_HEIGHT-bitmap.viewport.h)/2; + + /* TRIGGER, B, C (Menacer only), START (Menacer & Justifier only) */ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_A; + if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_B; + if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_C; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; + break; + } + + case DEVICE_PADDLE: + { + /* get mouse (absolute values) */ + int x; + int state = SDL_GetMouseState(&x, NULL); + + /* Range is [0;256], 128 being middle position */ + input.analog[joynum][0] = x * 256 /VIDEO_WIDTH; + + /* Button I -> 0 0 0 0 0 0 0 I*/ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; + + break; + } + + case DEVICE_SPORTSPAD: + { + /* get mouse (relative values) */ + int x,y; + int state = SDL_GetRelativeMouseState(&x,&y); + + /* Range is [0;256] */ + input.analog[joynum][0] = (unsigned char)(-x & 0xFF); + input.analog[joynum][1] = (unsigned char)(-y & 0xFF); + + /* Buttons I & II -> 0 0 0 0 0 0 II I*/ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; + if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; + + break; + } + + case DEVICE_MOUSE: + { + /* get mouse (relative values) */ + int x,y; + int state = SDL_GetRelativeMouseState(&x,&y); + + /* Sega Mouse range is [-256;+256] */ + input.analog[joynum][0] = x * 2; + input.analog[joynum][1] = y * 2; + + /* Vertical movement is upsidedown */ + if (!config.invert_mouse) + input.analog[joynum][1] = 0 - input.analog[joynum][1]; + + /* Start,Left,Right,Middle buttons -> 0 0 0 0 START MIDDLE RIGHT LEFT */ + if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; + if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; + if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_A; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; + + break; + } + + case DEVICE_XE_A1P: + { + /* A,B,C,D,Select,START,E1,E2 buttons -> E1(?) E2(?) START SELECT(?) A B C D */ + if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_START; + if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_A; + if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_Y; + if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_B; + if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_X; + if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_MODE; + if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_Z; + + /* Left Analog Stick (bidirectional) */ + if(keystate[SDLK_UP]) input.analog[joynum][1]-=2; + else if(keystate[SDLK_DOWN]) input.analog[joynum][1]+=2; + else input.analog[joynum][1] = 128; + if(keystate[SDLK_LEFT]) input.analog[joynum][0]-=2; + else if(keystate[SDLK_RIGHT]) input.analog[joynum][0]+=2; + else input.analog[joynum][0] = 128; + + /* Right Analog Stick (unidirectional) */ + if(keystate[SDLK_KP8]) input.analog[joynum+1][0]-=2; + else if(keystate[SDLK_KP2]) input.analog[joynum+1][0]+=2; + else if(keystate[SDLK_KP4]) input.analog[joynum+1][0]-=2; + else if(keystate[SDLK_KP6]) input.analog[joynum+1][0]+=2; + else input.analog[joynum+1][0] = 128; + + /* Limiters */ + if (input.analog[joynum][0] > 0xFF) input.analog[joynum][0] = 0xFF; + else if (input.analog[joynum][0] < 0) input.analog[joynum][0] = 0; + if (input.analog[joynum][1] > 0xFF) input.analog[joynum][1] = 0xFF; + else if (input.analog[joynum][1] < 0) input.analog[joynum][1] = 0; + if (input.analog[joynum+1][0] > 0xFF) input.analog[joynum+1][0] = 0xFF; + else if (input.analog[joynum+1][0] < 0) input.analog[joynum+1][0] = 0; + if (input.analog[joynum+1][1] > 0xFF) input.analog[joynum+1][1] = 0xFF; + else if (input.analog[joynum+1][1] < 0) input.analog[joynum+1][1] = 0; + + break; + } + + case DEVICE_PICO: + { + /* get mouse (absolute values) */ + int x,y; + int state = SDL_GetMouseState(&x,&y); + + /* Calculate X Y axis values */ + input.analog[0][0] = 0x3c + (x * (0x17c-0x03c+1)) / VIDEO_WIDTH; + input.analog[0][1] = 0x1fc + (y * (0x2f7-0x1fc+1)) / VIDEO_HEIGHT; + + /* Map mouse buttons to player #1 inputs */ + if(state & SDL_BUTTON_MMASK) pico_current = (pico_current + 1) & 7; + if(state & SDL_BUTTON_RMASK) input.pad[0] |= INPUT_PICO_RED; + if(state & SDL_BUTTON_LMASK) input.pad[0] |= INPUT_PICO_PEN; + + break; + } + + case DEVICE_TEREBI: + { + /* get mouse (absolute values) */ + int x,y; + int state = SDL_GetMouseState(&x,&y); + + /* Calculate X Y axis values */ + input.analog[0][0] = (x * 250) / VIDEO_WIDTH; + input.analog[0][1] = (y * 250) / VIDEO_HEIGHT; + + /* Map mouse buttons to player #1 inputs */ + if(state & SDL_BUTTON_RMASK) input.pad[0] |= INPUT_B; + + break; + } + + case DEVICE_ACTIVATOR: + { + if(keystate[SDLK_g]) input.pad[joynum] |= INPUT_ACTIVATOR_7L; + if(keystate[SDLK_h]) input.pad[joynum] |= INPUT_ACTIVATOR_7U; + if(keystate[SDLK_j]) input.pad[joynum] |= INPUT_ACTIVATOR_8L; + if(keystate[SDLK_k]) input.pad[joynum] |= INPUT_ACTIVATOR_8U; + } + + default: + { + if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_A; + if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_B; + if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; + if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; + if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_X; + if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_Y; + if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_Z; + if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_MODE; + + if(keystate[SDLK_UP]) input.pad[joynum] |= INPUT_UP; + else + if(keystate[SDLK_DOWN]) input.pad[joynum] |= INPUT_DOWN; + if(keystate[SDLK_LEFT]) input.pad[joynum] |= INPUT_LEFT; + else + if(keystate[SDLK_RIGHT]) input.pad[joynum] |= INPUT_RIGHT; + + break; + } + } + return 1; +} + + +int main (int argc, char **argv) +{ + FILE *fp; + int running = 1; + + /* Print help if no game specified */ + if(argc < 2) + { + char caption[256]; + sprintf(caption, "Genesis Plus GX\\SDL\nusage: %s gamename\n", argv[0]); + MessageBox(NULL, caption, "Information", 0); + exit(1); + } + + /* set default config */ + error_init(); + set_config_defaults(); + + /* mark all BIOS as unloaded */ + system_bios = 0; + + /* Genesis BOOT ROM support (2KB max) */ + memset(boot_rom, 0xFF, 0x800); + fp = fopen(MD_BIOS, "rb"); + if (fp != NULL) + { + int i; + + /* read BOOT ROM */ + fread(boot_rom, 1, 0x800, fp); + fclose(fp); + + /* check BOOT ROM */ + if (!memcmp((char *)(boot_rom + 0x120),"GENESIS OS", 10)) + { + /* mark Genesis BIOS as loaded */ + system_bios = SYSTEM_MD; + } + + /* Byteswap ROM */ + for (i=0; i<0x800; i+=2) + { + uint8 temp = boot_rom[i]; + boot_rom[i] = boot_rom[i+1]; + boot_rom[i+1] = temp; + } + } + + /* initialize SDL */ + if(SDL_Init(0) < 0) + { + char caption[256]; + sprintf(caption, "SDL initialization failed"); + MessageBox(NULL, caption, "Error", 0); + exit(1); + } + sdl_video_init(); + if (use_sound) sdl_sound_init(); + sdl_sync_init(); + + /* initialize Genesis virtual system */ + SDL_LockSurface(sdl_video.surf_bitmap); + memset(&bitmap, 0, sizeof(t_bitmap)); + bitmap.width = 720; + bitmap.height = 576; +#if defined(USE_8BPP_RENDERING) + bitmap.pitch = (bitmap.width * 1); +#elif defined(USE_15BPP_RENDERING) + bitmap.pitch = (bitmap.width * 2); +#elif defined(USE_16BPP_RENDERING) + bitmap.pitch = (bitmap.width * 2); +#elif defined(USE_32BPP_RENDERING) + bitmap.pitch = (bitmap.width * 4); +#endif + bitmap.data = sdl_video.surf_bitmap->pixels; + SDL_UnlockSurface(sdl_video.surf_bitmap); + bitmap.viewport.changed = 3; + + /* Load game file */ + if(!load_rom(argv[1])) + { + char caption[256]; + sprintf(caption, "Error loading file `%s'.", argv[1]); + MessageBox(NULL, caption, "Error", 0); + exit(1); + } + + /* initialize system hardware */ + audio_init(SOUND_FREQUENCY, 0); + system_init(); + + /* Mega CD specific */ + if (system_hw == SYSTEM_MCD) + { + /* load internal backup RAM */ + fp = fopen("./scd.brm", "rb"); + if (fp!=NULL) + { + fread(scd.bram, 0x2000, 1, fp); + fclose(fp); + } + + /* check if internal backup RAM is formatted */ + if (memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) + { + /* clear internal backup RAM */ + memset(scd.bram, 0x00, 0x200); + + /* Internal Backup RAM size fields */ + brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00; + brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (sizeof(scd.bram) / 64) - 3; + + /* format internal backup RAM */ + memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40); + } + + /* load cartridge backup RAM */ + if (scd.cartridge.id) + { + fp = fopen("./cart.brm", "rb"); + if (fp!=NULL) + { + fread(scd.cartridge.area, scd.cartridge.mask + 1, 1, fp); + fclose(fp); + } + + /* check if cartridge backup RAM is formatted */ + if (memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) + { + /* clear cartridge backup RAM */ + memset(scd.cartridge.area, 0x00, scd.cartridge.mask + 1); + + /* Cartridge Backup RAM size fields */ + brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = (((scd.cartridge.mask + 1) / 64) - 3) >> 8; + brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (((scd.cartridge.mask + 1) / 64) - 3) & 0xff; + + /* format cartridge backup RAM */ + memcpy(scd.cartridge.area + scd.cartridge.mask + 1 - sizeof(brm_format), brm_format, sizeof(brm_format)); + } + } + } + + if (sram.on) + { + /* load SRAM */ + fp = fopen("./game.srm", "rb"); + if (fp!=NULL) + { + fread(sram.sram,0x10000,1, fp); + fclose(fp); + } + } + + /* reset system hardware */ + system_reset(); + + if(use_sound) SDL_PauseAudio(0); + + /* 3 frames = 50 ms (60hz) or 60 ms (50hz) */ + if(sdl_sync.sem_sync) + SDL_SetTimer(vdp_pal ? 60 : 50, sdl_sync_timer_callback); + + /* emulation loop */ + while(running) + { + SDL_Event event; + if (SDL_PollEvent(&event)) + { + switch(event.type) + { + case SDL_USEREVENT: + { + char caption[100]; + sprintf(caption,"Genesis Plus GX - %d fps - %s)", event.user.code, (rominfo.international[0] != 0x20) ? rominfo.international : rominfo.domestic); + SDL_WM_SetCaption(caption, NULL); + break; + } + + case SDL_QUIT: + { + running = 0; + break; + } + + case SDL_KEYDOWN: + { + running = sdl_control_update(event.key.keysym.sym); + break; + } + } + } + + sdl_video_update(); + sdl_sound_update(use_sound); + + if(!turbo_mode && sdl_sync.sem_sync && sdl_video.frames_rendered % 3 == 0) + { + SDL_SemWait(sdl_sync.sem_sync); + } + } + + if (system_hw == SYSTEM_MCD) + { + /* save internal backup RAM (if formatted) */ + if (!memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) + { + fp = fopen("./scd.brm", "wb"); + if (fp!=NULL) + { + fwrite(scd.bram, 0x2000, 1, fp); + fclose(fp); + } + } + + /* save cartridge backup RAM (if formatted) */ + if (scd.cartridge.id) + { + if (!memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) + { + fp = fopen("./cart.brm", "wb"); + if (fp!=NULL) + { + fwrite(scd.cartridge.area, scd.cartridge.mask + 1, 1, fp); + fclose(fp); + } + } + } + } + + if (sram.on) + { + /* save SRAM */ + fp = fopen("./game.srm", "wb"); + if (fp!=NULL) + { + fwrite(sram.sram,0x10000,1, fp); + fclose(fp); + } + } + + audio_shutdown(); + error_shutdown(); + + sdl_video_close(); + sdl_sound_close(); + sdl_sync_close(); + SDL_Quit(); + + return 0; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/main.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/main.h new file mode 100644 index 0000000000..e36ee17419 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/main.h @@ -0,0 +1,11 @@ + +#ifndef _MAIN_H_ +#define _MAIN_H_ + +#define MAX_INPUTS 8 + +extern int debug_on; +extern int log_error; +extern int sdl_input_update(void); + +#endif /* _MAIN_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/md.ico b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/md.ico similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/md.ico rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/md.ico diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/osd.h new file mode 100644 index 0000000000..0f64719d30 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/osd.h @@ -0,0 +1,35 @@ + +#ifndef _OSD_H_ +#define _OSD_H_ + +#include +#include +#include +#include + +#include +#include + +#include "shared.h" +#include "main.h" +#include "config.h" +#include "error.h" +#include "unzip.h" +#include "fileio.h" + +#define osd_input_update sdl_input_update + +#define GG_ROM "./ggenie.bin" +#define AR_ROM "./areplay.bin" +#define SK_ROM "./sk.bin" +#define SK_UPMEM "./sk2chip.bin" +#define CD_BIOS_US "./bios_CD_U.bin" +#define CD_BIOS_EU "./bios_CD_E.bin" +#define CD_BIOS_JP "./bios_CD_J.bin" +#define MD_BIOS "./bios_MD.bin" +#define MS_BIOS_US "./bios_U.sms" +#define MS_BIOS_EU "./bios_E.sms" +#define MS_BIOS_JP "./bios_J.sms" +#define GG_BIOS "./bios.gg" + +#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/readme-sdl.txt b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/readme-sdl.txt new file mode 100644 index 0000000000..b58f6d8d19 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/readme-sdl.txt @@ -0,0 +1,5 @@ +Compile with MinGW. +You will also need to install the SDL library (http://www.libsdl.org/). +Zlib is required for zipped rom support. + +Please distribute required dlls with the executable. \ No newline at end of file diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/unzip.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/unzip.c new file mode 100644 index 0000000000..85d10312af --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/unzip.c @@ -0,0 +1,1294 @@ +/* unzip.c -- IO on .zip files using zlib + Version 0.15 beta, Mar 19th, 1998, + + Read unzip.h for more info +*/ + + +#include +#include +#include +#include +#include "unzip.h" + +#ifdef STDC +# include +# include +# include +#endif +#ifdef NO_ERRNO_H + extern int errno; +#else + #include +#endif + + +#ifndef local + #define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + + + +#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ + !defined(CASESENSITIVITYDEFAULT_NO) +#define CASESENSITIVITYDEFAULT_NO +#endif + + +#ifndef UNZ_BUFSIZE +#define UNZ_BUFSIZE (16384) +#endif + +#ifndef UNZ_MAXFILENAMEINZIP +#define UNZ_MAXFILENAMEINZIP (256) +#endif + +#ifndef ALLOC +# define ALLOC(size) (malloc(size)) +#endif +#ifndef TRYFREE +# define TRYFREE(p) {if (p) free(p);} +#endif + +#define SIZECENTRALDIRITEM (0x2e) +#define SIZEZIPLOCALHEADER (0x1e) + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +const char unz_copyright[] = + " unzip 0.15 Copyright 1998 Gilles Vollant "; + +/* unz_file_info_interntal contain internal info about a file in zipfile*/ +typedef struct unz_file_info_internal_s +{ + uLong offset_curfile;/* relative offset of local header 4 bytes */ +} unz_file_info_internal; + + +/* file_in_zip_read_info_s contain internal information about a file in zipfile, + when reading and decompress it */ +typedef struct +{ + char *read_buffer; /* internal buffer for compressed data */ + z_stream stream; /* zLib stream structure for inflate */ + + uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ + uLong stream_initialised; /* flag set if stream structure is initialised*/ + + uLong offset_local_extrafield;/* offset of the local extra field */ + uInt size_local_extrafield;/* size of the local extra field */ + uLong pos_local_extrafield; /* position in the local extra field in read*/ + + uLong crc32; /* crc32 of all data uncompressed */ + uLong crc32_wait; /* crc32 we must obtain after decompress all */ + uLong rest_read_compressed; /* number of byte to be decompressed */ + uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ + FILE* file; /* io structore of the zipfile */ + uLong compression_method; /* compression method (0==store) */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ +} file_in_zip_read_info_s; + + +/* unz_s contain internal information about the zipfile +*/ +typedef struct +{ + FILE* file; /* io structore of the zipfile */ + unz_global_info gi; /* public global information */ + uLong byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ + uLong num_file; /* number of the current file in the zipfile*/ + uLong pos_in_central_dir; /* pos of the current file in the central dir*/ + uLong current_file_ok; /* flag about the usability of the current file*/ + uLong central_pos; /* position of the beginning of the central dir*/ + + uLong size_central_dir; /* size of the central directory */ + uLong offset_central_dir; /* offset of start of central directory with + respect to the starting disk number */ + + unz_file_info cur_file_info; /* public info about the current file in zip*/ + unz_file_info_internal cur_file_info_internal; /* private info about it*/ + file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current + file if we are decompressing it */ +} unz_s; + + +/* =========================================================================== + Read a byte from a gz_stream; update next_in and avail_in. Return EOF + for end of file. + IN assertion: the stream s has been sucessfully opened for reading. +*/ + + +local int unzlocal_getByte(fin,pi) + FILE *fin; + int *pi; +{ + unsigned char c; + int err = fread(&c, 1, 1, fin); + if (err==1) + { + *pi = (int)c; + return UNZ_OK; + } + else + { + if (ferror(fin)) + return UNZ_ERRNO; + else + return UNZ_EOF; + } +} + + +/* =========================================================================== + Reads a long in LSB order from the given gz_stream. Sets +*/ +local int unzlocal_getShort (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i = 0; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + +local int unzlocal_getLong (fin,pX) + FILE* fin; + uLong *pX; +{ + uLong x ; + int i = 0; + int err; + + err = unzlocal_getByte(fin,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<16; + + if (err==UNZ_OK) + err = unzlocal_getByte(fin,&i); + x += ((uLong)i)<<24; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + + +/* My own strcmpi / strcasecmp */ +local int strcmpcasenosensitive_internal (fileName1,fileName2) + const char* fileName1; + const char* fileName2; +{ + for (;;) + { + char c1=*(fileName1++); + char c2=*(fileName2++); + if ((c1>='a') && (c1<='z')) + c1 -= 0x20; + if ((c2>='a') && (c2<='z')) + c2 -= 0x20; + if (c1=='\0') + return ((c2=='\0') ? 0 : -1); + if (c2=='\0') + return 1; + if (c1c2) + return 1; + } +} + + +#ifdef CASESENSITIVITYDEFAULT_NO +#define CASESENSITIVITYDEFAULTVALUE 2 +#else +#define CASESENSITIVITYDEFAULTVALUE 1 +#endif + +#ifndef STRCMPCASENOSENTIVEFUNCTION +#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal +#endif + +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) + +*/ +extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) + const char* fileName1; + const char* fileName2; + int iCaseSensitivity; +{ + if (iCaseSensitivity==0) + iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; + + if (iCaseSensitivity==1) + return strcmp(fileName1,fileName2); + + return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); +} + +#define BUFREADCOMMENT (0x400) + +/* + Locate the Central directory of a zipfile (at the end, just before + the global comment) +*/ +local uLong unzlocal_SearchCentralDir(fin) + FILE *fin; +{ + unsigned char* buf; + uLong uSizeFile; + uLong uBackRead; + uLong uMaxBack=0xffff; /* maximum size of global comment */ + uLong uPosFound=0; + + if (fseek(fin,0,SEEK_END) != 0) + return 0; + + + uSizeFile = ftell( fin ); + + if (uMaxBack>uSizeFile) + uMaxBack = uSizeFile; + + buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); + if (buf==NULL) + return 0; + + uBackRead = 4; + while (uBackReaduMaxBack) + uBackRead = uMaxBack; + else + uBackRead+=BUFREADCOMMENT; + uReadPos = uSizeFile-uBackRead ; + + uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? + (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); + if (fseek(fin,uReadPos,SEEK_SET)!=0) + break; + + if (fread(buf,(uInt)uReadSize,1,fin)!=1) + break; + + for (i=(int)uReadSize-3; (i--)>0;) + if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && + ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) + { + uPosFound = uReadPos+i; + break; + } + + if (uPosFound!=0) + break; + } + TRYFREE(buf); + return uPosFound; +} + +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer + "zlib/zlib109.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ +extern unzFile ZEXPORT unzOpen (path) + const char *path; +{ + unz_s us; + unz_s *s; + uLong central_pos,uL; + FILE * fin ; + + uLong number_disk; /* number of the current dist, used for + spaning ZIP, unsupported, always 0*/ + uLong number_disk_with_CD; /* number the the disk with central dir, used + for spaning ZIP, unsupported, always 0*/ + uLong number_entry_CD; /* total number of entries in + the central dir + (same than number_entry on nospan) */ + + int err=UNZ_OK; + + if (unz_copyright[0]!=' ') + return NULL; + + fin=fopen(path,"rb"); + if (fin==NULL) + return NULL; + + central_pos = unzlocal_SearchCentralDir(fin); + if (central_pos==0) + err=UNZ_ERRNO; + + if (fseek(fin,central_pos,SEEK_SET)!=0) + err=UNZ_ERRNO; + + /* the signature, already checked */ + if (unzlocal_getLong(fin,&uL)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of this disk */ + if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of the disk with the start of the central directory */ + if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir on this disk */ + if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir */ + if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((number_entry_CD!=us.gi.number_entry) || + (number_disk_with_CD!=0) || + (number_disk!=0)) + err=UNZ_BADZIPFILE; + + /* size of the central directory */ + if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* offset of start of central directory with respect to the + starting disk number */ + if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* zipfile comment length */ + if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((central_pospfile_in_zip_read!=NULL) + unzCloseCurrentFile(file); + + fclose(s->file); + TRYFREE(s); + return UNZ_OK; +} + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ +extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) + unzFile file; + unz_global_info *pglobal_info; +{ + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + *pglobal_info=s->gi; + return UNZ_OK; +} + + +/* + Translate date/time from Dos format to tm_unz (readable more easilty) +*/ +local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) + uLong ulDosDate; + tm_unz* ptm; +{ + uLong uDate; + uDate = (uLong)(ulDosDate>>16); + ptm->tm_mday = (uInt)(uDate&0x1f) ; + ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; + ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; + + ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); + ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; + ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; +} + +/* + Get Info about the current file in the zipfile, with internal only info +*/ +local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, + unz_file_info *pfile_info, + unz_file_info_internal + *pfile_info_internal, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); + +local int unzlocal_GetCurrentFileInfoInternal (file, + pfile_info, + pfile_info_internal, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + unz_file_info_internal *pfile_info_internal; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + unz_s* s; + unz_file_info file_info; + unz_file_info_internal file_info_internal; + int err=UNZ_OK; + uLong uMagic; + long lSeek=0; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) + err=UNZ_ERRNO; + + + /* we check the magic */ + if (err==UNZ_OK) + { + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x02014b50) + err=UNZ_BADZIPFILE; + } + + if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) + err=UNZ_ERRNO; + + unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); + + if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) + err=UNZ_ERRNO; + + lSeek+=file_info.size_filename; + if ((err==UNZ_OK) && (szFileName!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_filename0) && (fileNameBufferSize>0)) + if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek -= uSizeRead; + } + + if ((err==UNZ_OK) && (extraField!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + + if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) + if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek += file_info.size_file_extra - uSizeRead; + } + else + lSeek+=file_info.size_file_extra; + + if ((err==UNZ_OK) && (szComment!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + + if ((file_info.size_file_comment>0) && (commentBufferSize>0)) + if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) + err=UNZ_ERRNO; + lSeek+=file_info.size_file_comment - uSizeRead; + } + else + lSeek+=file_info.size_file_comment; + + if ((err==UNZ_OK) && (pfile_info!=NULL)) + *pfile_info=file_info; + + if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) + *pfile_info_internal=file_info_internal; + + return err; +} + + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. +*/ +extern int ZEXPORT unzGetCurrentFileInfo (file, + pfile_info, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, + szFileName,fileNameBufferSize, + extraField,extraFieldBufferSize, + szComment,commentBufferSize); +} + +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ +extern int ZEXPORT unzGoToFirstFile (file) + unzFile file; +{ + int err=UNZ_OK; + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + s->pos_in_central_dir=s->offset_central_dir; + s->num_file=0; + err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ +extern int ZEXPORT unzGoToNextFile (file) + unzFile file; +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + if (s->num_file+1==s->gi.number_entry) + return UNZ_END_OF_LIST_OF_FILE; + + s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; + s->num_file++; + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzipStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ +extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) + unzFile file; + const char *szFileName; + int iCaseSensitivity; +{ + unz_s* s; + int err; + + uLong num_fileSaved; + uLong pos_in_central_dirSaved; + + if (file==NULL) + return UNZ_PARAMERROR; + + if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) + return UNZ_PARAMERROR; + + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + num_fileSaved = s->num_file; + pos_in_central_dirSaved = s->pos_in_central_dir; + + err = unzGoToFirstFile(file); + + while (err == UNZ_OK) + { + char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; + unzGetCurrentFileInfo(file,NULL, + szCurrentFileName,sizeof(szCurrentFileName)-1, + NULL,0,NULL,0); + if (unzStringFileNameCompare(szCurrentFileName, + szFileName,iCaseSensitivity)==0) + return UNZ_OK; + err = unzGoToNextFile(file); + } + + s->num_file = num_fileSaved ; + s->pos_in_central_dir = pos_in_central_dirSaved ; + return err; +} + + +/* + Read the local header of the current zipfile + Check the coherency of the local header and info in the end of central + directory about this file + store in *piSizeVar the size of extra info in local header + (filename and size of extra field data) +*/ +local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, + poffset_local_extrafield, + psize_local_extrafield) + unz_s* s; + uInt* piSizeVar; + uLong *poffset_local_extrafield; + uInt *psize_local_extrafield; +{ + uLong uMagic,uData,uFlags; + uLong size_filename; + uLong size_extra_field; + int err=UNZ_OK; + + *piSizeVar = 0; + *poffset_local_extrafield = 0; + *psize_local_extrafield = 0; + + if (fseek(s->file,s->cur_file_info_internal.offset_curfile + + s->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + + + if (err==UNZ_OK) + { + if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x04034b50) + err=UNZ_BADZIPFILE; + } + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; +/* + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) + err=UNZ_BADZIPFILE; +*/ + if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(s->file,&uData) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) + err=UNZ_BADZIPFILE; + + if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ + err=UNZ_ERRNO; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + + if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) + err=UNZ_BADZIPFILE; + + *piSizeVar += (uInt)size_filename; + + if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) + err=UNZ_ERRNO; + *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + + SIZEZIPLOCALHEADER + size_filename; + *psize_local_extrafield = (uInt)size_extra_field; + + *piSizeVar += (uInt)size_extra_field; + + return err; +} + +/* + Open for reading data the current file in the zipfile. + If there is no error and the file is opened, the return value is UNZ_OK. +*/ +extern int ZEXPORT unzOpenCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + int Store; + uInt iSizeVar; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uLong offset_local_extrafield; /* offset of the local extra field */ + uInt size_local_extrafield; /* size of the local extra field */ + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_PARAMERROR; + + if (s->pfile_in_zip_read != NULL) + unzCloseCurrentFile(file); + + if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, + &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) + return UNZ_BADZIPFILE; + + pfile_in_zip_read_info = (file_in_zip_read_info_s*) + ALLOC(sizeof(file_in_zip_read_info_s)); + if (pfile_in_zip_read_info==NULL) + return UNZ_INTERNALERROR; + + pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); + pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; + pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; + pfile_in_zip_read_info->pos_local_extrafield=0; + + if (pfile_in_zip_read_info->read_buffer==NULL) + { + TRYFREE(pfile_in_zip_read_info); + return UNZ_INTERNALERROR; + } + + pfile_in_zip_read_info->stream_initialised=0; + + if ((s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + Store = s->cur_file_info.compression_method==0; + + pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; + pfile_in_zip_read_info->crc32=0; + pfile_in_zip_read_info->compression_method = + s->cur_file_info.compression_method; + pfile_in_zip_read_info->file=s->file; + pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; + + pfile_in_zip_read_info->stream.total_out = 0; + + if (!Store) + { + pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; + pfile_in_zip_read_info->stream.zfree = (free_func)0; + pfile_in_zip_read_info->stream.opaque = (voidpf)0; + + err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); + if (err == Z_OK) + pfile_in_zip_read_info->stream_initialised=1; + /* windowBits is passed < 0 to tell that there is no zlib header. + * Note that in this case inflate *requires* an extra "dummy" byte + * after the compressed stream in order to complete decompression and + * return Z_STREAM_END. + * In unzip, i don't wait absolutely Z_STREAM_END because I known the + * size of both compressed and uncompressed data + */ + } + pfile_in_zip_read_info->rest_read_compressed = + s->cur_file_info.compressed_size ; + pfile_in_zip_read_info->rest_read_uncompressed = + s->cur_file_info.uncompressed_size ; + + pfile_in_zip_read_info->pos_in_zipfile = + s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + + iSizeVar; + + pfile_in_zip_read_info->stream.avail_in = (uInt)0; + + + s->pfile_in_zip_read = pfile_in_zip_read_info; + return UNZ_OK; +} + + +/* + Read bytes from the current file. + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ +extern int ZEXPORT unzReadCurrentFile (file, buf, len) + unzFile file; + voidp buf; + unsigned len; +{ + int err=UNZ_OK; + uInt iRead = 0; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if ((pfile_in_zip_read_info->read_buffer == NULL)) + return UNZ_END_OF_LIST_OF_FILE; + if (len==0) + return 0; + + pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; + + pfile_in_zip_read_info->stream.avail_out = (uInt)len; + + if (len>pfile_in_zip_read_info->rest_read_uncompressed) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_uncompressed; + + while (pfile_in_zip_read_info->stream.avail_out>0) + { + if ((pfile_in_zip_read_info->stream.avail_in==0) && + (pfile_in_zip_read_info->rest_read_compressed>0)) + { + uInt uReadThis = UNZ_BUFSIZE; + if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; + if (uReadThis == 0) + return UNZ_EOF; + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->pos_in_zipfile + + pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) + return UNZ_ERRNO; + if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, + pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + pfile_in_zip_read_info->pos_in_zipfile += uReadThis; + + pfile_in_zip_read_info->rest_read_compressed-=uReadThis; + + pfile_in_zip_read_info->stream.next_in = + (Bytef*)pfile_in_zip_read_info->read_buffer; + pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; + } + + if (pfile_in_zip_read_info->compression_method==0) + { + uInt uDoCopy,i ; + if (pfile_in_zip_read_info->stream.avail_out < + pfile_in_zip_read_info->stream.avail_in) + uDoCopy = pfile_in_zip_read_info->stream.avail_out ; + else + uDoCopy = pfile_in_zip_read_info->stream.avail_in ; + + for (i=0;istream.next_out+i) = + *(pfile_in_zip_read_info->stream.next_in+i); + + pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, + pfile_in_zip_read_info->stream.next_out, + uDoCopy); + pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; + pfile_in_zip_read_info->stream.avail_in -= uDoCopy; + pfile_in_zip_read_info->stream.avail_out -= uDoCopy; + pfile_in_zip_read_info->stream.next_out += uDoCopy; + pfile_in_zip_read_info->stream.next_in += uDoCopy; + pfile_in_zip_read_info->stream.total_out += uDoCopy; + iRead += uDoCopy; + } + else + { + uLong uTotalOutBefore,uTotalOutAfter; + const Bytef *bufBefore; + uLong uOutThis; + int flush=Z_SYNC_FLUSH; + + uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; + bufBefore = pfile_in_zip_read_info->stream.next_out; + + /* + if ((pfile_in_zip_read_info->rest_read_uncompressed == + pfile_in_zip_read_info->stream.avail_out) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + flush = Z_FINISH; + */ + err=inflate(&pfile_in_zip_read_info->stream,flush); + + uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; + uOutThis = uTotalOutAfter-uTotalOutBefore; + + pfile_in_zip_read_info->crc32 = + crc32(pfile_in_zip_read_info->crc32,bufBefore, + (uInt)(uOutThis)); + + pfile_in_zip_read_info->rest_read_uncompressed -= + uOutThis; + + iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); + + if (err==Z_STREAM_END) + return (iRead==0) ? UNZ_EOF : iRead; + if (err!=Z_OK) + break; + } + } + + if (err==Z_OK) + return iRead; + return err; +} + + +/* + Give the current position in uncompressed data +*/ +extern z_off_t ZEXPORT unztell (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + return (z_off_t)pfile_in_zip_read_info->stream.total_out; +} + + +/* + return 1 if the end of file was reached, 0 elsewhere +*/ +extern int ZEXPORT unzeof (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + return 1; + else + return 0; +} + +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field that can be read + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ +extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) + unzFile file; + voidp buf; + unsigned len; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uInt read_now; + uLong size_to_read; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + size_to_read = (pfile_in_zip_read_info->size_local_extrafield - + pfile_in_zip_read_info->pos_local_extrafield); + + if (buf==NULL) + return (int)size_to_read; + + if (len>size_to_read) + read_now = (uInt)size_to_read; + else + read_now = (uInt)len ; + + if (read_now==0) + return 0; + + if (fseek(pfile_in_zip_read_info->file, + pfile_in_zip_read_info->offset_local_extrafield + + pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) + return UNZ_ERRNO; + + return (int)read_now; +} + +/* + Close the file in zip opened with unzipOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ +extern int ZEXPORT unzCloseCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + { + if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) + err=UNZ_CRCERROR; + } + + + TRYFREE(pfile_in_zip_read_info->read_buffer); + pfile_in_zip_read_info->read_buffer = NULL; + if (pfile_in_zip_read_info->stream_initialised) + inflateEnd(&pfile_in_zip_read_info->stream); + + pfile_in_zip_read_info->stream_initialised = 0; + TRYFREE(pfile_in_zip_read_info); + + s->pfile_in_zip_read=NULL; + + return err; +} + + +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ +extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) + unzFile file; + char *szComment; + uLong uSizeBuf; +{ +/* int err=UNZ_OK; */ + unz_s* s; + uLong uReadThis ; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + uReadThis = uSizeBuf; + if (uReadThis>s->gi.size_comment) + uReadThis = s->gi.size_comment; + + if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) + return UNZ_ERRNO; + + if (uReadThis>0) + { + *szComment='\0'; + if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) + return UNZ_ERRNO; + } + + if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) + *(szComment+s->gi.size_comment)='\0'; + return (int)uReadThis; +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/unzip.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/unzip.h new file mode 100644 index 0000000000..2c4e784a31 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/win/unzip.h @@ -0,0 +1,273 @@ +/* unzip.h -- IO for uncompress .zip files using zlib + Version 0.15 beta, Mar 19th, 1998, + + Copyright (C) 1998 Gilles Vollant + + This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + Encryption and multi volume ZipFile (span) are not supported. + Old compressions used by old PKZip 1.x are not supported + + THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE + CAN CHANGE IN FUTURE VERSION !! + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* for more info about .ZIP format, see + ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip */ + +#ifndef _unz_H +#define _unz_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unzFile__; +typedef unzFile__ *unzFile; +#else +typedef voidp unzFile; +#endif + + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (Z_ERRNO) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) + +/* tm_unz contain date/time info */ +typedef struct tm_unz_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_unz; + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info_s +{ + uLong number_entry; /* total number of entries in + the central dir on this disk */ + uLong size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + + +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_info_s +{ + uLong version; /* version made by 2 bytes */ + uLong version_needed; /* version needed to extract 2 bytes */ + uLong flag; /* general purpose bit flag 2 bytes */ + uLong compression_method; /* compression method 2 bytes */ + uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ + uLong crc; /* crc-32 4 bytes */ + uLong compressed_size; /* compressed size 4 bytes */ + uLong uncompressed_size; /* uncompressed size 4 bytes */ + uLong size_filename; /* filename length 2 bytes */ + uLong size_file_extra; /* extra field length 2 bytes */ + uLong size_file_comment; /* file comment length 2 bytes */ + + uLong disk_num_start; /* disk number start 2 bytes */ + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ + + tm_unz tmu_date; +} unz_file_info; + +extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, + const char* fileName2, + int iCaseSensitivity)); +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) +*/ + + +extern unzFile ZEXPORT unzOpen OF((const char *path)); +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer + "zlib/zlib111.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ + +extern int ZEXPORT unzClose OF((unzFile file)); +/* + Close a ZipFile opened with unzipOpen. + If there is files inside the .Zip opened with unzOpenCurrentFile (see later), + these files MUST be closed with unzipCloseCurrentFile before call unzipClose. + return UNZ_OK if there is no problem. */ + +extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, + unz_global_info *pglobal_info)); +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ + + +extern int ZEXPORT unzGetGlobalComment OF((unzFile file, + char *szComment, + uLong uSizeBuf)); +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ + + +/***************************************************************************/ +/* Unzip package allow you browse the directory of the zipfile */ + +extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ + +extern int ZEXPORT unzGoToNextFile OF((unzFile file)); +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ + +extern int ZEXPORT unzLocateFile OF((unzFile file, + const char *szFileName, + int iCaseSensitivity)); +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ + + +extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); +/* + Get Info about the current file + if pfile_info!=NULL, the *pfile_info structure will contain somes info about + the current file + if szFileName!=NULL, the filemane string will be copied in szFileName + (fileNameBufferSize is the size of the buffer) + if extraField!=NULL, the extra field information will be copied in extraField + (extraFieldBufferSize is the size of the buffer). + This is the Central-header version of the extra field + if szComment!=NULL, the comment string of the file will be copied in szComment + (commentBufferSize is the size of the buffer) +*/ + +/***************************************************************************/ +/* for reading the content of the current zipfile, you can open it, read data + from it, and close it (you can close it before reading all the file) + */ + +extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); +/* + Open for reading data the current file in the zipfile. + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); +/* + Close the file in zip opened with unzOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ + +extern int ZEXPORT unzReadCurrentFile OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read bytes from the current file (opened by unzOpenCurrentFile) + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ + +extern z_off_t ZEXPORT unztell OF((unzFile file)); +/* + Give the current position in uncompressed data +*/ + +extern int ZEXPORT unzeof OF((unzFile file)); +/* + return 1 if the end of file was reached, 0 elsewhere +*/ + +extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _unz_H */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/osd_cpu.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/osd_cpu.h similarity index 97% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/osd_cpu.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/osd_cpu.h index 5f5e5af834..b7dbdef194 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/osd_cpu.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/osd_cpu.h @@ -1,47 +1,47 @@ -/******************************************************************************* -* * -* Define size independent data types and operations. * -* * -* The following types must be supported by all platforms: * -* * -* UINT8 - Unsigned 8-bit Integer INT8 - Signed 8-bit integer * -* UINT16 - Unsigned 16-bit Integer INT16 - Signed 16-bit integer * -* UINT32 - Unsigned 32-bit Integer INT32 - Signed 32-bit integer * -* * -*******************************************************************************/ - -#ifndef OSD_CPU_H -#define OSD_CPU_H - -#undef TRUE -#undef FALSE -#define TRUE 1 -#define FALSE 0 - -typedef unsigned char UINT8; -typedef unsigned short UINT16; -typedef unsigned int UINT32; -typedef signed char INT8; -typedef signed short INT16; -typedef signed int INT32; - -/****************************************************************************** - * Union of UINT8, UINT16 and UINT32 in native endianess of the target - * This is used to access bytes and words in a machine independent manner. - * The upper bytes h2 and h3 normally contain zero (16 bit CPU cores) - * thus PAIR.d can be used to pass arguments to the memory system - * which expects 'int' really. - ******************************************************************************/ - -typedef union { -#ifdef LSB_FIRST - struct { UINT8 l,h,h2,h3; } b; - struct { UINT16 l,h; } w; -#else - struct { UINT8 h3,h2,h,l; } b; - struct { UINT16 h,l; } w; -#endif - UINT32 d; -} PAIR; - -#endif /* defined OSD_CPU_H */ +/******************************************************************************* +* * +* Define size independent data types and operations. * +* * +* The following types must be supported by all platforms: * +* * +* UINT8 - Unsigned 8-bit Integer INT8 - Signed 8-bit integer * +* UINT16 - Unsigned 16-bit Integer INT16 - Signed 16-bit integer * +* UINT32 - Unsigned 32-bit Integer INT32 - Signed 32-bit integer * +* * +*******************************************************************************/ + +#ifndef OSD_CPU_H +#define OSD_CPU_H + +#undef TRUE +#undef FALSE +#define TRUE 1 +#define FALSE 0 + +typedef unsigned char UINT8; +typedef unsigned short UINT16; +typedef unsigned int UINT32; +typedef signed char INT8; +typedef signed short INT16; +typedef signed int INT32; + +/****************************************************************************** + * Union of UINT8, UINT16 and UINT32 in native endianess of the target + * This is used to access bytes and words in a machine independent manner. + * The upper bytes h2 and h3 normally contain zero (16 bit CPU cores) + * thus PAIR.d can be used to pass arguments to the memory system + * which expects 'int' really. + ******************************************************************************/ + +typedef union { +#ifdef LSB_FIRST + struct { UINT8 l,h,h2,h3; } b; + struct { UINT16 l,h; } w; +#else + struct { UINT8 h3,h2,h,l; } b; + struct { UINT16 h,l; } w; +#endif + UINT32 d; +} PAIR; + +#endif /* defined OSD_CPU_H */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/z80.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/z80.c similarity index 98% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/z80.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/z80.c index ce467733a5..bcf3154d97 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/z80.c +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/z80.c @@ -1,3479 +1,3479 @@ -/***************************************************************************** - * - * z80.c - * Portable Z80 emulator V3.9 - * - * Copyright Juergen Buchmueller, all rights reserved. - * - * - This source code is released as freeware for non-commercial purposes. - * - You are free to use and redistribute this code in modified or - * unmodified form, provided you list me in the credits. - * - If you modify this source code, you must add a notice to each modified - * source file that it has been changed. If you're a nice person, you - * will clearly mark each change too. :) - * - If you wish to use this for commercial purposes, please contact me at - * pullmoll@t-online.de - * - The author of this copywritten work reserves the right to change the - * terms of its usage and license at any time, including retroactively - * - This entire notice must remain in the source code. - * - * TODO: - * - If LD A,I or LD A,R is interrupted, P/V flag gets reset, even if IFF2 - * was set before this instruction - * - Ideally, the tiny differences between Z80 types should be supported, - * currently known differences: - * - LD A,I/R P/V flag reset glitch is fixed on CMOS Z80 - * - OUT (C),0 outputs 0 on NMOS Z80, $FF on CMOS Z80 - * - SCF/CCF X/Y flags is ((flags | A) & 0x28) on SGS/SHARP/ZiLOG NMOS Z80, - * (flags & A & 0x28) on NEC NMOS Z80, other models unknown. - * However, people from the Speccy scene mention that SCF/CCF X/Y results - * are inconsistant and may be influenced by I and R registers. - * This Z80 emulator assumes a ZiLOG NMOS model. - * - * Additional changes [Eke-Eke]: - * - Removed z80_burn function (unused) - * - Discarded multi-chip support (unused) - * - Fixed cycle counting for FD and DD prefixed instructions - * - Fixed behavior of chained FD and DD prefixes (R register should be only incremented by one - * - Implemented cycle-accurate INI/IND (needed by SMS emulation) - * - Fixed Z80 reset - * - Made SZHVC_add & SZHVC_sub tables statically allocated - * - Fixed compiler warning when BIG_SWITCH is defined - * Changes in 3.9: - * - Fixed cycle counts for LD IYL/IXL/IYH/IXH,n [Marshmellow] - * - Fixed X/Y flags in CCF/SCF/BIT, ZEXALL is happy now [hap] - * - Simplified DAA, renamed MEMPTR (3.8) to WZ, added TODO [hap] - * - Fixed IM2 interrupt cycles [eke] - * Changes in 3.8 [Miodrag Milanovic]: - * - Added MEMPTR register (according to informations provided - * by Vladimir Kladov - * - BIT n,(HL) now return valid values due to use of MEMPTR - * - Fixed BIT 6,(XY+o) undocumented instructions - * Changes in 3.7 [Aaron Giles]: - * - Changed NMI handling. NMIs are now latched in set_irq_state - * but are not taken there. Instead they are taken at the start of the - * execute loop. - * - Changed IRQ handling. IRQ state is set in set_irq_state but not taken - * except during the inner execute loop. - * - Removed x86 assembly hacks and obsolete timing loop catchers. - * Changes in 3.6: - * - Got rid of the code that would inexactly emulate a Z80, i.e. removed - * all the #if Z80_EXACT #else branches. - * - Removed leading underscores from local register name shortcuts as - * this violates the C99 standard. - * - Renamed the registers inside the Z80 context to lower case to avoid - * ambiguities (shortcuts would have had the same names as the fields - * of the structure). - * Changes in 3.5: - * - Implemented OTIR, INIR, etc. without look-up table for PF flag. - * [Ramsoft, Sean Young] - * Changes in 3.4: - * - Removed Z80-MSX specific code as it's not needed any more. - * - Implemented DAA without look-up table [Ramsoft, Sean Young] - * Changes in 3.3: - * - Fixed undocumented flags XF & YF in the non-asm versions of CP, - * and all the 16 bit arithmetic instructions. [Sean Young] - * Changes in 3.2: - * - Fixed undocumented flags XF & YF of RRCA, and CF and HF of - * INI/IND/OUTI/OUTD/INIR/INDR/OTIR/OTDR [Sean Young] - * Changes in 3.1: - * - removed the REPEAT_AT_ONCE execution of LDIR/CPIR etc. opcodes - * for readabilities sake and because the implementation was buggy - * (and I was not able to find the difference) - * Changes in 3.0: - * - 'finished' switch to dynamically overrideable cycle count tables - * Changes in 2.9: - * - added methods to access and override the cycle count tables - * - fixed handling and timing of multiple DD/FD prefixed opcodes - * Changes in 2.8: - * - OUTI/OUTD/OTIR/OTDR also pre-decrement the B register now. - * This was wrong because of a bug fix on the wrong side - * (astrocade sound driver). - * Changes in 2.7: - * - removed z80_vm specific code, it's not needed (and never was). - * Changes in 2.6: - * - BUSY_LOOP_HACKS needed to call change_pc() earlier, before - * checking the opcodes at the new address, because otherwise they - * might access the old (wrong or even NULL) banked memory region. - * Thanks to Sean Young for finding this nasty bug. - * Changes in 2.5: - * - Burning cycles always adjusts the ICount by a multiple of 4. - * - In REPEAT_AT_ONCE cases the R register wasn't incremented twice - * per repetition as it should have been. Those repeated opcodes - * could also underflow the ICount. - * - Simplified TIME_LOOP_HACKS for BC and added two more for DE + HL - * timing loops. I think those hacks weren't endian safe before too. - * Changes in 2.4: - * - z80_reset zaps the entire context, sets IX and IY to 0xffff(!) and - * sets the Z flag. With these changes the Tehkan World Cup driver - * _seems_ to work again. - * Changes in 2.3: - * - External termination of the execution loop calls z80_burn() and - * z80_vm_burn() to burn an amount of cycles (R adjustment) - * - Shortcuts which burn CPU cycles (BUSY_LOOP_HACKS and TIME_LOOP_HACKS) - * now also adjust the R register depending on the skipped opcodes. - * Changes in 2.2: - * - Fixed bugs in CPL, SCF and CCF instructions flag handling. - * - Changed variable EA and ARG16() function to UINT32; this - * produces slightly more efficient code. - * - The DD/FD XY CB opcodes where XY is 40-7F and Y is not 6/E - * are changed to calls to the X6/XE opcodes to reduce object size. - * They're hardly ever used so this should not yield a speed penalty. - * New in 2.0: - * - Optional more exact Z80 emulation (#define Z80_EXACT 1) according - * to a detailed description by Sean Young which can be found at: - * http://www.msxnet.org/tech/z80-documented.pdf - *****************************************************************************/ -#include "shared.h" -#include "z80.h" - -/* execute main opcodes inside a big switch statement */ -#define BIG_SWITCH 1 - -#define VERBOSE 0 - -#if VERBOSE -#define LOG(x) logerror x -#else -#define LOG(x) -#endif - -#define cpu_readop(a) z80_readmap[(a) >> 10][(a) & 0x03FF] -#define cpu_readop_arg(a) z80_readmap[(a) >> 10][(a) & 0x03FF] - -#define CF 0x01 -#define NF 0x02 -#define PF 0x04 -#define VF PF -#define XF 0x08 -#define HF 0x10 -#define YF 0x20 -#define ZF 0x40 -#define SF 0x80 - -#define INT_IRQ 0x01 -#define NMI_IRQ 0x02 - -#define PCD Z80.pc.d -#define PC Z80.pc.w.l - -#define SPD Z80.sp.d -#define SP Z80.sp.w.l - -#define AFD Z80.af.d -#define AF Z80.af.w.l -#define A Z80.af.b.h -#define F Z80.af.b.l - -#define BCD Z80.bc.d -#define BC Z80.bc.w.l -#define B Z80.bc.b.h -#define C Z80.bc.b.l - -#define DED Z80.de.d -#define DE Z80.de.w.l -#define D Z80.de.b.h -#define E Z80.de.b.l - -#define HLD Z80.hl.d -#define HL Z80.hl.w.l -#define H Z80.hl.b.h -#define L Z80.hl.b.l - -#define IXD Z80.ix.d -#define IX Z80.ix.w.l -#define HX Z80.ix.b.h -#define LX Z80.ix.b.l - -#define IYD Z80.iy.d -#define IY Z80.iy.w.l -#define HY Z80.iy.b.h -#define LY Z80.iy.b.l - -#define WZ Z80.wz.w.l -#define WZ_H Z80.wz.b.h -#define WZ_L Z80.wz.b.l - -#define I Z80.i -#define R Z80.r -#define R2 Z80.r2 -#define IM Z80.im -#define IFF1 Z80.iff1 -#define IFF2 Z80.iff2 -#define HALT Z80.halt - -#ifdef Z80_OVERCLOCK_SHIFT -#define USE_CYCLES(A) Z80.cycles += ((A) * z80_cycle_ratio) >> Z80_OVERCLOCK_SHIFT -UINT32 z80_cycle_ratio; -#else -#define USE_CYCLES(A) Z80.cycles += (A) -#endif - -Z80_Regs Z80; - -unsigned char *z80_readmap[64]; -unsigned char *z80_writemap[64]; - -void (*z80_writemem)(unsigned int address, unsigned char data); -unsigned char (*z80_readmem)(unsigned int address); -void (*z80_writeport)(unsigned int port, unsigned char data); -unsigned char (*z80_readport)(unsigned int port); - -static UINT32 EA; - -static UINT8 SZ[256]; /* zero and sign flags */ -static UINT8 SZ_BIT[256]; /* zero, sign and parity/overflow (=zero) flags for BIT opcode */ -static UINT8 SZP[256]; /* zero, sign and parity flags */ -static UINT8 SZHV_inc[256]; /* zero, sign, half carry and overflow flags INC r8 */ -static UINT8 SZHV_dec[256]; /* zero, sign, half carry and overflow flags DEC r8 */ - -static UINT8 SZHVC_add[2*256*256]; /* flags for ADD opcode */ -static UINT8 SZHVC_sub[2*256*256]; /* flags for SUB opcode */ - -static const UINT16 cc_op[0x100] = { - 4*15,10*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15, 4*15,11*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15, - 8*15,10*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15,12*15,11*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15, - 7*15,10*15,16*15, 6*15, 4*15, 4*15, 7*15, 4*15, 7*15,11*15,16*15, 6*15, 4*15, 4*15, 7*15, 4*15, - 7*15,10*15,13*15, 6*15,11*15,11*15,10*15, 4*15, 7*15,11*15,13*15, 6*15, 4*15, 4*15, 7*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 7*15, 7*15, 7*15, 7*15, 7*15, 7*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, - 5*15,10*15,10*15,10*15,10*15,11*15, 7*15,11*15, 5*15,10*15,10*15, 0*15,10*15,17*15, 7*15,11*15, - 5*15,10*15,10*15,11*15,10*15,11*15, 7*15,11*15, 5*15, 4*15,10*15,11*15,10*15, 0*15, 7*15,11*15, - 5*15,10*15,10*15,19*15,10*15,11*15, 7*15,11*15, 5*15, 4*15,10*15, 4*15,10*15, 0*15, 7*15,11*15, - 5*15,10*15,10*15, 4*15,10*15,11*15, 7*15,11*15, 5*15, 6*15,10*15, 4*15,10*15, 0*15, 7*15,11*15}; - -static const UINT16 cc_cb[0x100] = { - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15}; - -static const UINT16 cc_ed[0x100] = { - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15, - 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15, - 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15,18*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15,18*15, - 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 8*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15,16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15, - 16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15,16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15}; - -/*static const UINT8 cc_xy[0x100] = { - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15,15*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15,15*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, - 4*15,14*15,20*15,10*15, 9*15, 9*15,11*15, 4*15, 4*15,15*15,20*15,10*15, 9*15, 9*15,11*15, 4*15, - 4*15, 4*15, 4*15, 4*15,23*15,23*15,19*15, 4*15, 4*15,15*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, - 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, -19*15,19*15,19*15,19*15,19*15,19*15, 4*15,19*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 0*15, 4*15, 4*15, 4*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, - 4*15,14*15, 4*15,23*15, 4*15,15*15, 4*15, 4*15, 4*15, 8*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, - 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15,10*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15}; -*/ - -/* illegal combo should return 4 + cc_op[i] */ -static const UINT16 cc_xy[0x100] ={ - 8*15,14*15,11*15,10*15, 8*15, 8*15,11*15, 8*15, 8*15,15*15,11*15,10*15, 8*15, 8*15,11*15, 8*15, - 12*15,14*15,11*15,10*15, 8*15, 8*15,11*15, 8*15,16*15,15*15,11*15,10*15, 8*15, 8*15,11*15, 8*15, - 11*15,14*15,20*15,10*15, 9*15, 9*15,12*15, 8*15,11*15,15*15,20*15,10*15, 9*15, 9*15,12*15, 8*15, - 11*15,14*15,17*15,10*15,23*15,23*15,19*15, 8*15,11*15,15*15,17*15,10*15, 8*15, 8*15,11*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, - 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, - 19*15,19*15,19*15,19*15,19*15,19*15, 8*15,19*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, - 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, - 9*15,14*15,14*15,14*15,14*15,15*15,11*15,15*15, 9*15,14*15,14*15, 0*15,14*15,21*15,11*15,15*15, - 9*15,14*15,14*15,15*15,14*15,15*15,11*15,15*15, 9*15, 8*15,14*15,15*15,14*15, 4*15,11*15,15*15, - 9*15,14*15,14*15,23*15,14*15,15*15,11*15,15*15, 9*15, 8*15,14*15, 8*15,14*15, 4*15,11*15,15*15, - 9*15,14*15,14*15, 8*15,14*15,15*15,11*15,15*15, 9*15,10*15,14*15, 8*15,14*15, 4*15,11*15,15*15}; - -static const UINT16 cc_xycb[0x100] = { - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, - 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, - 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, - 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, - 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15}; - -/* extra cycles if jr/jp/call taken and 'interrupt latency' on rst 0-7 */ -static const UINT16 cc_ex[0x100] = { - 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, - 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* DJNZ */ - 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* JR NZ/JR Z */ - 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* JR NC/JR C */ - 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, - 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, - 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, - 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, - 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, - 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, - 0*15, 0*15, 4*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 4*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* INI/IND (cycle-accurate I/O port reads) */ - 5*15, 5*15, 5*15, 5*15, 0*15, 0*15, 0*15, 0*15, 5*15, 5*15, 5*15, 5*15, 0*15, 0*15, 0*15, 0*15, /* LDIR/CPIR/INIR/OTIR LDDR/CPDR/INDR/OTDR */ - 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, - 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, - 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, - 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15}; - -static const UINT16 *cc[6]; -#define Z80_TABLE_dd Z80_TABLE_xy -#define Z80_TABLE_fd Z80_TABLE_xy - -typedef void (*funcptr)(void); - -#define PROTOTYPES(tablename,prefix) \ - INLINE void prefix##_00(void); INLINE void prefix##_01(void); INLINE void prefix##_02(void); INLINE void prefix##_03(void); \ - INLINE void prefix##_04(void); INLINE void prefix##_05(void); INLINE void prefix##_06(void); INLINE void prefix##_07(void); \ - INLINE void prefix##_08(void); INLINE void prefix##_09(void); INLINE void prefix##_0a(void); INLINE void prefix##_0b(void); \ - INLINE void prefix##_0c(void); INLINE void prefix##_0d(void); INLINE void prefix##_0e(void); INLINE void prefix##_0f(void); \ - INLINE void prefix##_10(void); INLINE void prefix##_11(void); INLINE void prefix##_12(void); INLINE void prefix##_13(void); \ - INLINE void prefix##_14(void); INLINE void prefix##_15(void); INLINE void prefix##_16(void); INLINE void prefix##_17(void); \ - INLINE void prefix##_18(void); INLINE void prefix##_19(void); INLINE void prefix##_1a(void); INLINE void prefix##_1b(void); \ - INLINE void prefix##_1c(void); INLINE void prefix##_1d(void); INLINE void prefix##_1e(void); INLINE void prefix##_1f(void); \ - INLINE void prefix##_20(void); INLINE void prefix##_21(void); INLINE void prefix##_22(void); INLINE void prefix##_23(void); \ - INLINE void prefix##_24(void); INLINE void prefix##_25(void); INLINE void prefix##_26(void); INLINE void prefix##_27(void); \ - INLINE void prefix##_28(void); INLINE void prefix##_29(void); INLINE void prefix##_2a(void); INLINE void prefix##_2b(void); \ - INLINE void prefix##_2c(void); INLINE void prefix##_2d(void); INLINE void prefix##_2e(void); INLINE void prefix##_2f(void); \ - INLINE void prefix##_30(void); INLINE void prefix##_31(void); INLINE void prefix##_32(void); INLINE void prefix##_33(void); \ - INLINE void prefix##_34(void); INLINE void prefix##_35(void); INLINE void prefix##_36(void); INLINE void prefix##_37(void); \ - INLINE void prefix##_38(void); INLINE void prefix##_39(void); INLINE void prefix##_3a(void); INLINE void prefix##_3b(void); \ - INLINE void prefix##_3c(void); INLINE void prefix##_3d(void); INLINE void prefix##_3e(void); INLINE void prefix##_3f(void); \ - INLINE void prefix##_40(void); INLINE void prefix##_41(void); INLINE void prefix##_42(void); INLINE void prefix##_43(void); \ - INLINE void prefix##_44(void); INLINE void prefix##_45(void); INLINE void prefix##_46(void); INLINE void prefix##_47(void); \ - INLINE void prefix##_48(void); INLINE void prefix##_49(void); INLINE void prefix##_4a(void); INLINE void prefix##_4b(void); \ - INLINE void prefix##_4c(void); INLINE void prefix##_4d(void); INLINE void prefix##_4e(void); INLINE void prefix##_4f(void); \ - INLINE void prefix##_50(void); INLINE void prefix##_51(void); INLINE void prefix##_52(void); INLINE void prefix##_53(void); \ - INLINE void prefix##_54(void); INLINE void prefix##_55(void); INLINE void prefix##_56(void); INLINE void prefix##_57(void); \ - INLINE void prefix##_58(void); INLINE void prefix##_59(void); INLINE void prefix##_5a(void); INLINE void prefix##_5b(void); \ - INLINE void prefix##_5c(void); INLINE void prefix##_5d(void); INLINE void prefix##_5e(void); INLINE void prefix##_5f(void); \ - INLINE void prefix##_60(void); INLINE void prefix##_61(void); INLINE void prefix##_62(void); INLINE void prefix##_63(void); \ - INLINE void prefix##_64(void); INLINE void prefix##_65(void); INLINE void prefix##_66(void); INLINE void prefix##_67(void); \ - INLINE void prefix##_68(void); INLINE void prefix##_69(void); INLINE void prefix##_6a(void); INLINE void prefix##_6b(void); \ - INLINE void prefix##_6c(void); INLINE void prefix##_6d(void); INLINE void prefix##_6e(void); INLINE void prefix##_6f(void); \ - INLINE void prefix##_70(void); INLINE void prefix##_71(void); INLINE void prefix##_72(void); INLINE void prefix##_73(void); \ - INLINE void prefix##_74(void); INLINE void prefix##_75(void); INLINE void prefix##_76(void); INLINE void prefix##_77(void); \ - INLINE void prefix##_78(void); INLINE void prefix##_79(void); INLINE void prefix##_7a(void); INLINE void prefix##_7b(void); \ - INLINE void prefix##_7c(void); INLINE void prefix##_7d(void); INLINE void prefix##_7e(void); INLINE void prefix##_7f(void); \ - INLINE void prefix##_80(void); INLINE void prefix##_81(void); INLINE void prefix##_82(void); INLINE void prefix##_83(void); \ - INLINE void prefix##_84(void); INLINE void prefix##_85(void); INLINE void prefix##_86(void); INLINE void prefix##_87(void); \ - INLINE void prefix##_88(void); INLINE void prefix##_89(void); INLINE void prefix##_8a(void); INLINE void prefix##_8b(void); \ - INLINE void prefix##_8c(void); INLINE void prefix##_8d(void); INLINE void prefix##_8e(void); INLINE void prefix##_8f(void); \ - INLINE void prefix##_90(void); INLINE void prefix##_91(void); INLINE void prefix##_92(void); INLINE void prefix##_93(void); \ - INLINE void prefix##_94(void); INLINE void prefix##_95(void); INLINE void prefix##_96(void); INLINE void prefix##_97(void); \ - INLINE void prefix##_98(void); INLINE void prefix##_99(void); INLINE void prefix##_9a(void); INLINE void prefix##_9b(void); \ - INLINE void prefix##_9c(void); INLINE void prefix##_9d(void); INLINE void prefix##_9e(void); INLINE void prefix##_9f(void); \ - INLINE void prefix##_a0(void); INLINE void prefix##_a1(void); INLINE void prefix##_a2(void); INLINE void prefix##_a3(void); \ - INLINE void prefix##_a4(void); INLINE void prefix##_a5(void); INLINE void prefix##_a6(void); INLINE void prefix##_a7(void); \ - INLINE void prefix##_a8(void); INLINE void prefix##_a9(void); INLINE void prefix##_aa(void); INLINE void prefix##_ab(void); \ - INLINE void prefix##_ac(void); INLINE void prefix##_ad(void); INLINE void prefix##_ae(void); INLINE void prefix##_af(void); \ - INLINE void prefix##_b0(void); INLINE void prefix##_b1(void); INLINE void prefix##_b2(void); INLINE void prefix##_b3(void); \ - INLINE void prefix##_b4(void); INLINE void prefix##_b5(void); INLINE void prefix##_b6(void); INLINE void prefix##_b7(void); \ - INLINE void prefix##_b8(void); INLINE void prefix##_b9(void); INLINE void prefix##_ba(void); INLINE void prefix##_bb(void); \ - INLINE void prefix##_bc(void); INLINE void prefix##_bd(void); INLINE void prefix##_be(void); INLINE void prefix##_bf(void); \ - INLINE void prefix##_c0(void); INLINE void prefix##_c1(void); INLINE void prefix##_c2(void); INLINE void prefix##_c3(void); \ - INLINE void prefix##_c4(void); INLINE void prefix##_c5(void); INLINE void prefix##_c6(void); INLINE void prefix##_c7(void); \ - INLINE void prefix##_c8(void); INLINE void prefix##_c9(void); INLINE void prefix##_ca(void); INLINE void prefix##_cb(void); \ - INLINE void prefix##_cc(void); INLINE void prefix##_cd(void); INLINE void prefix##_ce(void); INLINE void prefix##_cf(void); \ - INLINE void prefix##_d0(void); INLINE void prefix##_d1(void); INLINE void prefix##_d2(void); INLINE void prefix##_d3(void); \ - INLINE void prefix##_d4(void); INLINE void prefix##_d5(void); INLINE void prefix##_d6(void); INLINE void prefix##_d7(void); \ - INLINE void prefix##_d8(void); INLINE void prefix##_d9(void); INLINE void prefix##_da(void); INLINE void prefix##_db(void); \ - INLINE void prefix##_dc(void); INLINE void prefix##_dd(void); INLINE void prefix##_de(void); INLINE void prefix##_df(void); \ - INLINE void prefix##_e0(void); INLINE void prefix##_e1(void); INLINE void prefix##_e2(void); INLINE void prefix##_e3(void); \ - INLINE void prefix##_e4(void); INLINE void prefix##_e5(void); INLINE void prefix##_e6(void); INLINE void prefix##_e7(void); \ - INLINE void prefix##_e8(void); INLINE void prefix##_e9(void); INLINE void prefix##_ea(void); INLINE void prefix##_eb(void); \ - INLINE void prefix##_ec(void); INLINE void prefix##_ed(void); INLINE void prefix##_ee(void); INLINE void prefix##_ef(void); \ - INLINE void prefix##_f0(void); INLINE void prefix##_f1(void); INLINE void prefix##_f2(void); INLINE void prefix##_f3(void); \ - INLINE void prefix##_f4(void); INLINE void prefix##_f5(void); INLINE void prefix##_f6(void); INLINE void prefix##_f7(void); \ - INLINE void prefix##_f8(void); INLINE void prefix##_f9(void); INLINE void prefix##_fa(void); INLINE void prefix##_fb(void); \ - INLINE void prefix##_fc(void); INLINE void prefix##_fd(void); INLINE void prefix##_fe(void); INLINE void prefix##_ff(void); - -#define FUNCTABLE(tablename,prefix) \ -static const funcptr tablename[0x100] = { \ - prefix##_00,prefix##_01,prefix##_02,prefix##_03,prefix##_04,prefix##_05,prefix##_06,prefix##_07, \ - prefix##_08,prefix##_09,prefix##_0a,prefix##_0b,prefix##_0c,prefix##_0d,prefix##_0e,prefix##_0f, \ - prefix##_10,prefix##_11,prefix##_12,prefix##_13,prefix##_14,prefix##_15,prefix##_16,prefix##_17, \ - prefix##_18,prefix##_19,prefix##_1a,prefix##_1b,prefix##_1c,prefix##_1d,prefix##_1e,prefix##_1f, \ - prefix##_20,prefix##_21,prefix##_22,prefix##_23,prefix##_24,prefix##_25,prefix##_26,prefix##_27, \ - prefix##_28,prefix##_29,prefix##_2a,prefix##_2b,prefix##_2c,prefix##_2d,prefix##_2e,prefix##_2f, \ - prefix##_30,prefix##_31,prefix##_32,prefix##_33,prefix##_34,prefix##_35,prefix##_36,prefix##_37, \ - prefix##_38,prefix##_39,prefix##_3a,prefix##_3b,prefix##_3c,prefix##_3d,prefix##_3e,prefix##_3f, \ - prefix##_40,prefix##_41,prefix##_42,prefix##_43,prefix##_44,prefix##_45,prefix##_46,prefix##_47, \ - prefix##_48,prefix##_49,prefix##_4a,prefix##_4b,prefix##_4c,prefix##_4d,prefix##_4e,prefix##_4f, \ - prefix##_50,prefix##_51,prefix##_52,prefix##_53,prefix##_54,prefix##_55,prefix##_56,prefix##_57, \ - prefix##_58,prefix##_59,prefix##_5a,prefix##_5b,prefix##_5c,prefix##_5d,prefix##_5e,prefix##_5f, \ - prefix##_60,prefix##_61,prefix##_62,prefix##_63,prefix##_64,prefix##_65,prefix##_66,prefix##_67, \ - prefix##_68,prefix##_69,prefix##_6a,prefix##_6b,prefix##_6c,prefix##_6d,prefix##_6e,prefix##_6f, \ - prefix##_70,prefix##_71,prefix##_72,prefix##_73,prefix##_74,prefix##_75,prefix##_76,prefix##_77, \ - prefix##_78,prefix##_79,prefix##_7a,prefix##_7b,prefix##_7c,prefix##_7d,prefix##_7e,prefix##_7f, \ - prefix##_80,prefix##_81,prefix##_82,prefix##_83,prefix##_84,prefix##_85,prefix##_86,prefix##_87, \ - prefix##_88,prefix##_89,prefix##_8a,prefix##_8b,prefix##_8c,prefix##_8d,prefix##_8e,prefix##_8f, \ - prefix##_90,prefix##_91,prefix##_92,prefix##_93,prefix##_94,prefix##_95,prefix##_96,prefix##_97, \ - prefix##_98,prefix##_99,prefix##_9a,prefix##_9b,prefix##_9c,prefix##_9d,prefix##_9e,prefix##_9f, \ - prefix##_a0,prefix##_a1,prefix##_a2,prefix##_a3,prefix##_a4,prefix##_a5,prefix##_a6,prefix##_a7, \ - prefix##_a8,prefix##_a9,prefix##_aa,prefix##_ab,prefix##_ac,prefix##_ad,prefix##_ae,prefix##_af, \ - prefix##_b0,prefix##_b1,prefix##_b2,prefix##_b3,prefix##_b4,prefix##_b5,prefix##_b6,prefix##_b7, \ - prefix##_b8,prefix##_b9,prefix##_ba,prefix##_bb,prefix##_bc,prefix##_bd,prefix##_be,prefix##_bf, \ - prefix##_c0,prefix##_c1,prefix##_c2,prefix##_c3,prefix##_c4,prefix##_c5,prefix##_c6,prefix##_c7, \ - prefix##_c8,prefix##_c9,prefix##_ca,prefix##_cb,prefix##_cc,prefix##_cd,prefix##_ce,prefix##_cf, \ - prefix##_d0,prefix##_d1,prefix##_d2,prefix##_d3,prefix##_d4,prefix##_d5,prefix##_d6,prefix##_d7, \ - prefix##_d8,prefix##_d9,prefix##_da,prefix##_db,prefix##_dc,prefix##_dd,prefix##_de,prefix##_df, \ - prefix##_e0,prefix##_e1,prefix##_e2,prefix##_e3,prefix##_e4,prefix##_e5,prefix##_e6,prefix##_e7, \ - prefix##_e8,prefix##_e9,prefix##_ea,prefix##_eb,prefix##_ec,prefix##_ed,prefix##_ee,prefix##_ef, \ - prefix##_f0,prefix##_f1,prefix##_f2,prefix##_f3,prefix##_f4,prefix##_f5,prefix##_f6,prefix##_f7, \ - prefix##_f8,prefix##_f9,prefix##_fa,prefix##_fb,prefix##_fc,prefix##_fd,prefix##_fe,prefix##_ff \ -} - -PROTOTYPES(Z80op,op) -PROTOTYPES(Z80cb,cb) -PROTOTYPES(Z80dd,dd) -PROTOTYPES(Z80ed,ed) -PROTOTYPES(Z80fd,fd) -PROTOTYPES(Z80xycb,xycb) - -#ifndef BIG_SWITCH -FUNCTABLE(Z80op,op); -#endif -FUNCTABLE(Z80cb,cb); -FUNCTABLE(Z80dd,dd); -FUNCTABLE(Z80ed,ed); -FUNCTABLE(Z80fd,fd); -FUNCTABLE(Z80xycb,xycb); - -/****************************************************************************/ -/* Burn an odd amount of cycles, that is instructions taking something */ -/* different from 4 T-states per opcode (and R increment) */ -/****************************************************************************/ -INLINE void BURNODD(int cycles, int opcodes, int cyclesum) -{ - if( cycles > 0 ) - { - R += (cycles / cyclesum) * opcodes; - USE_CYCLES((cycles / cyclesum) * cyclesum * 15); - } -} - -/*************************************************************** - * define an opcode function - ***************************************************************/ -#define OP(prefix,opcode) INLINE void prefix##_##opcode(void) - -/*************************************************************** - * adjust cycle count by n T-states - ***************************************************************/ -#define CC(prefix,opcode) USE_CYCLES(cc[Z80_TABLE_##prefix][opcode]) - -/*************************************************************** - * execute an opcode - ***************************************************************/ -#define EXEC(prefix,opcode) \ -{ \ - unsigned op = opcode; \ - CC(prefix,op); \ - (*Z80##prefix[op])(); \ -} - -#if BIG_SWITCH -#define EXEC_INLINE(prefix,opcode) \ -{ \ - unsigned op = opcode; \ - CC(prefix,op); \ - switch(op) \ - { \ - case 0x00:prefix##_##00();break; case 0x01:prefix##_##01();break; case 0x02:prefix##_##02();break; case 0x03:prefix##_##03();break; \ - case 0x04:prefix##_##04();break; case 0x05:prefix##_##05();break; case 0x06:prefix##_##06();break; case 0x07:prefix##_##07();break; \ - case 0x08:prefix##_##08();break; case 0x09:prefix##_##09();break; case 0x0a:prefix##_##0a();break; case 0x0b:prefix##_##0b();break; \ - case 0x0c:prefix##_##0c();break; case 0x0d:prefix##_##0d();break; case 0x0e:prefix##_##0e();break; case 0x0f:prefix##_##0f();break; \ - case 0x10:prefix##_##10();break; case 0x11:prefix##_##11();break; case 0x12:prefix##_##12();break; case 0x13:prefix##_##13();break; \ - case 0x14:prefix##_##14();break; case 0x15:prefix##_##15();break; case 0x16:prefix##_##16();break; case 0x17:prefix##_##17();break; \ - case 0x18:prefix##_##18();break; case 0x19:prefix##_##19();break; case 0x1a:prefix##_##1a();break; case 0x1b:prefix##_##1b();break; \ - case 0x1c:prefix##_##1c();break; case 0x1d:prefix##_##1d();break; case 0x1e:prefix##_##1e();break; case 0x1f:prefix##_##1f();break; \ - case 0x20:prefix##_##20();break; case 0x21:prefix##_##21();break; case 0x22:prefix##_##22();break; case 0x23:prefix##_##23();break; \ - case 0x24:prefix##_##24();break; case 0x25:prefix##_##25();break; case 0x26:prefix##_##26();break; case 0x27:prefix##_##27();break; \ - case 0x28:prefix##_##28();break; case 0x29:prefix##_##29();break; case 0x2a:prefix##_##2a();break; case 0x2b:prefix##_##2b();break; \ - case 0x2c:prefix##_##2c();break; case 0x2d:prefix##_##2d();break; case 0x2e:prefix##_##2e();break; case 0x2f:prefix##_##2f();break; \ - case 0x30:prefix##_##30();break; case 0x31:prefix##_##31();break; case 0x32:prefix##_##32();break; case 0x33:prefix##_##33();break; \ - case 0x34:prefix##_##34();break; case 0x35:prefix##_##35();break; case 0x36:prefix##_##36();break; case 0x37:prefix##_##37();break; \ - case 0x38:prefix##_##38();break; case 0x39:prefix##_##39();break; case 0x3a:prefix##_##3a();break; case 0x3b:prefix##_##3b();break; \ - case 0x3c:prefix##_##3c();break; case 0x3d:prefix##_##3d();break; case 0x3e:prefix##_##3e();break; case 0x3f:prefix##_##3f();break; \ - case 0x40:prefix##_##40();break; case 0x41:prefix##_##41();break; case 0x42:prefix##_##42();break; case 0x43:prefix##_##43();break; \ - case 0x44:prefix##_##44();break; case 0x45:prefix##_##45();break; case 0x46:prefix##_##46();break; case 0x47:prefix##_##47();break; \ - case 0x48:prefix##_##48();break; case 0x49:prefix##_##49();break; case 0x4a:prefix##_##4a();break; case 0x4b:prefix##_##4b();break; \ - case 0x4c:prefix##_##4c();break; case 0x4d:prefix##_##4d();break; case 0x4e:prefix##_##4e();break; case 0x4f:prefix##_##4f();break; \ - case 0x50:prefix##_##50();break; case 0x51:prefix##_##51();break; case 0x52:prefix##_##52();break; case 0x53:prefix##_##53();break; \ - case 0x54:prefix##_##54();break; case 0x55:prefix##_##55();break; case 0x56:prefix##_##56();break; case 0x57:prefix##_##57();break; \ - case 0x58:prefix##_##58();break; case 0x59:prefix##_##59();break; case 0x5a:prefix##_##5a();break; case 0x5b:prefix##_##5b();break; \ - case 0x5c:prefix##_##5c();break; case 0x5d:prefix##_##5d();break; case 0x5e:prefix##_##5e();break; case 0x5f:prefix##_##5f();break; \ - case 0x60:prefix##_##60();break; case 0x61:prefix##_##61();break; case 0x62:prefix##_##62();break; case 0x63:prefix##_##63();break; \ - case 0x64:prefix##_##64();break; case 0x65:prefix##_##65();break; case 0x66:prefix##_##66();break; case 0x67:prefix##_##67();break; \ - case 0x68:prefix##_##68();break; case 0x69:prefix##_##69();break; case 0x6a:prefix##_##6a();break; case 0x6b:prefix##_##6b();break; \ - case 0x6c:prefix##_##6c();break; case 0x6d:prefix##_##6d();break; case 0x6e:prefix##_##6e();break; case 0x6f:prefix##_##6f();break; \ - case 0x70:prefix##_##70();break; case 0x71:prefix##_##71();break; case 0x72:prefix##_##72();break; case 0x73:prefix##_##73();break; \ - case 0x74:prefix##_##74();break; case 0x75:prefix##_##75();break; case 0x76:prefix##_##76();break; case 0x77:prefix##_##77();break; \ - case 0x78:prefix##_##78();break; case 0x79:prefix##_##79();break; case 0x7a:prefix##_##7a();break; case 0x7b:prefix##_##7b();break; \ - case 0x7c:prefix##_##7c();break; case 0x7d:prefix##_##7d();break; case 0x7e:prefix##_##7e();break; case 0x7f:prefix##_##7f();break; \ - case 0x80:prefix##_##80();break; case 0x81:prefix##_##81();break; case 0x82:prefix##_##82();break; case 0x83:prefix##_##83();break; \ - case 0x84:prefix##_##84();break; case 0x85:prefix##_##85();break; case 0x86:prefix##_##86();break; case 0x87:prefix##_##87();break; \ - case 0x88:prefix##_##88();break; case 0x89:prefix##_##89();break; case 0x8a:prefix##_##8a();break; case 0x8b:prefix##_##8b();break; \ - case 0x8c:prefix##_##8c();break; case 0x8d:prefix##_##8d();break; case 0x8e:prefix##_##8e();break; case 0x8f:prefix##_##8f();break; \ - case 0x90:prefix##_##90();break; case 0x91:prefix##_##91();break; case 0x92:prefix##_##92();break; case 0x93:prefix##_##93();break; \ - case 0x94:prefix##_##94();break; case 0x95:prefix##_##95();break; case 0x96:prefix##_##96();break; case 0x97:prefix##_##97();break; \ - case 0x98:prefix##_##98();break; case 0x99:prefix##_##99();break; case 0x9a:prefix##_##9a();break; case 0x9b:prefix##_##9b();break; \ - case 0x9c:prefix##_##9c();break; case 0x9d:prefix##_##9d();break; case 0x9e:prefix##_##9e();break; case 0x9f:prefix##_##9f();break; \ - case 0xa0:prefix##_##a0();break; case 0xa1:prefix##_##a1();break; case 0xa2:prefix##_##a2();break; case 0xa3:prefix##_##a3();break; \ - case 0xa4:prefix##_##a4();break; case 0xa5:prefix##_##a5();break; case 0xa6:prefix##_##a6();break; case 0xa7:prefix##_##a7();break; \ - case 0xa8:prefix##_##a8();break; case 0xa9:prefix##_##a9();break; case 0xaa:prefix##_##aa();break; case 0xab:prefix##_##ab();break; \ - case 0xac:prefix##_##ac();break; case 0xad:prefix##_##ad();break; case 0xae:prefix##_##ae();break; case 0xaf:prefix##_##af();break; \ - case 0xb0:prefix##_##b0();break; case 0xb1:prefix##_##b1();break; case 0xb2:prefix##_##b2();break; case 0xb3:prefix##_##b3();break; \ - case 0xb4:prefix##_##b4();break; case 0xb5:prefix##_##b5();break; case 0xb6:prefix##_##b6();break; case 0xb7:prefix##_##b7();break; \ - case 0xb8:prefix##_##b8();break; case 0xb9:prefix##_##b9();break; case 0xba:prefix##_##ba();break; case 0xbb:prefix##_##bb();break; \ - case 0xbc:prefix##_##bc();break; case 0xbd:prefix##_##bd();break; case 0xbe:prefix##_##be();break; case 0xbf:prefix##_##bf();break; \ - case 0xc0:prefix##_##c0();break; case 0xc1:prefix##_##c1();break; case 0xc2:prefix##_##c2();break; case 0xc3:prefix##_##c3();break; \ - case 0xc4:prefix##_##c4();break; case 0xc5:prefix##_##c5();break; case 0xc6:prefix##_##c6();break; case 0xc7:prefix##_##c7();break; \ - case 0xc8:prefix##_##c8();break; case 0xc9:prefix##_##c9();break; case 0xca:prefix##_##ca();break; case 0xcb:prefix##_##cb();break; \ - case 0xcc:prefix##_##cc();break; case 0xcd:prefix##_##cd();break; case 0xce:prefix##_##ce();break; case 0xcf:prefix##_##cf();break; \ - case 0xd0:prefix##_##d0();break; case 0xd1:prefix##_##d1();break; case 0xd2:prefix##_##d2();break; case 0xd3:prefix##_##d3();break; \ - case 0xd4:prefix##_##d4();break; case 0xd5:prefix##_##d5();break; case 0xd6:prefix##_##d6();break; case 0xd7:prefix##_##d7();break; \ - case 0xd8:prefix##_##d8();break; case 0xd9:prefix##_##d9();break; case 0xda:prefix##_##da();break; case 0xdb:prefix##_##db();break; \ - case 0xdc:prefix##_##dc();break; case 0xdd:prefix##_##dd();break; case 0xde:prefix##_##de();break; case 0xdf:prefix##_##df();break; \ - case 0xe0:prefix##_##e0();break; case 0xe1:prefix##_##e1();break; case 0xe2:prefix##_##e2();break; case 0xe3:prefix##_##e3();break; \ - case 0xe4:prefix##_##e4();break; case 0xe5:prefix##_##e5();break; case 0xe6:prefix##_##e6();break; case 0xe7:prefix##_##e7();break; \ - case 0xe8:prefix##_##e8();break; case 0xe9:prefix##_##e9();break; case 0xea:prefix##_##ea();break; case 0xeb:prefix##_##eb();break; \ - case 0xec:prefix##_##ec();break; case 0xed:prefix##_##ed();break; case 0xee:prefix##_##ee();break; case 0xef:prefix##_##ef();break; \ - case 0xf0:prefix##_##f0();break; case 0xf1:prefix##_##f1();break; case 0xf2:prefix##_##f2();break; case 0xf3:prefix##_##f3();break; \ - case 0xf4:prefix##_##f4();break; case 0xf5:prefix##_##f5();break; case 0xf6:prefix##_##f6();break; case 0xf7:prefix##_##f7();break; \ - case 0xf8:prefix##_##f8();break; case 0xf9:prefix##_##f9();break; case 0xfa:prefix##_##fa();break; case 0xfb:prefix##_##fb();break; \ - case 0xfc:prefix##_##fc();break; case 0xfd:prefix##_##fd();break; case 0xfe:prefix##_##fe();break; case 0xff:prefix##_##ff();break; \ - } \ -} -#else -#define EXEC_INLINE EXEC -#endif - - -/*************************************************************** - * Enter HALT state; write 1 to fake port on first execution - ***************************************************************/ -#define ENTER_HALT { \ - PC--; \ - HALT = 1; \ -} - -/*************************************************************** - * Leave HALT state; write 0 to fake port - ***************************************************************/ -#define LEAVE_HALT { \ - if( HALT ) \ - { \ - HALT = 0; \ - PC++; \ - } \ -} - -/*************************************************************** - * Input a byte from given I/O port - ***************************************************************/ -#define IN(port) z80_readport(port) - -/*************************************************************** - * Output a byte to given I/O port - ***************************************************************/ -#define OUT(port,value) z80_writeport(port,value) - -/*************************************************************** - * Read a byte from given memory location - ***************************************************************/ -#define RM(addr) z80_readmem(addr) - -/*************************************************************** - * Write a byte to given memory location - ***************************************************************/ -#define WM(addr,value) z80_writemem(addr,value) - -/*************************************************************** - * Read a word from given memory location - ***************************************************************/ -INLINE void RM16( UINT32 addr, PAIR *r ) -{ - r->b.l = RM(addr); - r->b.h = RM((addr+1)&0xffff); -} - -/*************************************************************** - * Write a word to given memory location - ***************************************************************/ -INLINE void WM16( UINT32 addr, PAIR *r ) -{ - WM(addr,r->b.l); - WM((addr+1)&0xffff,r->b.h); -} - -/*************************************************************** - * ROP() is identical to RM() except it is used for - * reading opcodes. In case of system with memory mapped I/O, - * this function can be used to greatly speed up emulation - ***************************************************************/ -INLINE UINT8 ROP(void) -{ - unsigned pc = PCD; - PC++; - return cpu_readop(pc); -} - -/**************************************************************** - * ARG() is identical to ROP() except it is used - * for reading opcode arguments. This difference can be used to - * support systems that use different encoding mechanisms for - * opcodes and opcode arguments - ***************************************************************/ -INLINE UINT8 ARG(void) -{ - unsigned pc = PCD; - PC++; - return cpu_readop_arg(pc); -} - -INLINE UINT32 ARG16(void) -{ - unsigned pc = PCD; - PC += 2; - return cpu_readop_arg(pc) | (cpu_readop_arg((pc+1)&0xffff) << 8); -} - -/*************************************************************** - * Calculate the effective address EA of an opcode using - * IX+offset resp. IY+offset addressing. - ***************************************************************/ -#define EAX do { EA = (UINT32)(UINT16)(IX + (INT8)ARG()); WZ = EA; } while (0) -#define EAY do { EA = (UINT32)(UINT16)(IY + (INT8)ARG()); WZ = EA; } while (0) - -/*************************************************************** - * POP - ***************************************************************/ -#define POP(DR) do { RM16( SPD, &Z80.DR ); SP += 2; } while (0) - -/*************************************************************** - * PUSH - ***************************************************************/ -#define PUSH(SR) do { SP -= 2; WM16( SPD, &Z80.SR ); } while (0) - -/*************************************************************** - * JP - ***************************************************************/ -#define JP { \ - PCD = ARG16(); \ - WZ = PCD; \ -} - -/*************************************************************** - * JP_COND - ***************************************************************/ -#define JP_COND(cond) { \ - if (cond) \ - { \ - PCD = ARG16(); \ - WZ = PCD; \ - } \ - else \ - { \ - WZ = ARG16(); /* implicit do PC += 2 */ \ - } \ -} - -/*************************************************************** - * JR - ***************************************************************/ -#define JR() { \ - INT8 arg = (INT8)ARG(); /* ARG() also increments PC */ \ - PC += arg; /* so don't do PC += ARG() */ \ - WZ = PC; \ -} - -/*************************************************************** - * JR_COND - ***************************************************************/ -#define JR_COND(cond, opcode) { \ - if (cond) \ - { \ - JR(); \ - CC(ex, opcode); \ - } \ - else PC++; \ -} - -/*************************************************************** - * CALL - ***************************************************************/ -#define CALL() { \ - EA = ARG16(); \ - WZ = EA; \ - PUSH(pc); \ - PCD = EA; \ -} - -/*************************************************************** - * CALL_COND - ***************************************************************/ -#define CALL_COND(cond, opcode) { \ - if (cond) \ - { \ - EA = ARG16(); \ - WZ = EA; \ - PUSH(pc); \ - PCD = EA; \ - CC(ex, opcode); \ - } \ - else \ - { \ - WZ = ARG16(); /* implicit call PC+=2; */ \ - } \ -} - -/*************************************************************** - * RET_COND - ***************************************************************/ -#define RET_COND(cond, opcode) do { \ - if (cond) \ - { \ - POP(pc); \ - WZ = PC; \ - CC(ex, opcode); \ - } \ -} while (0) - -/*************************************************************** - * RETN - ***************************************************************/ -#define RETN do { \ - LOG(("Z80 #%d RETN IFF1:%d IFF2:%d\n", cpu_getactivecpu(), IFF1, IFF2)); \ - POP( pc ); \ - WZ = PC; \ - IFF1 = IFF2; \ -} while (0) - -/*************************************************************** - * RETI - ***************************************************************/ -#define RETI { \ - POP( pc ); \ - WZ = PC; \ -/* according to http://www.msxnet.org/tech/z80-documented.pdf */ \ - IFF1 = IFF2; \ -} - -/*************************************************************** - * LD R,A - ***************************************************************/ -#define LD_R_A { \ - R = A; \ - R2 = A & 0x80; /* keep bit 7 of R */ \ -} - -/*************************************************************** - * LD A,R - ***************************************************************/ -#define LD_A_R { \ - A = (R & 0x7f) | R2; \ - F = (F & CF) | SZ[A] | ( IFF2 << 2 ); \ -} - -/*************************************************************** - * LD I,A - ***************************************************************/ -#define LD_I_A { \ - I = A; \ -} - -/*************************************************************** - * LD A,I - ***************************************************************/ -#define LD_A_I { \ - A = I; \ - F = (F & CF) | SZ[A] | ( IFF2 << 2 ); \ -} - -/*************************************************************** - * RST - ***************************************************************/ -#define RST(addr) \ - PUSH( pc ); \ - PCD = addr; \ - WZ = PC; \ - -/*************************************************************** - * INC r8 - ***************************************************************/ -INLINE UINT8 INC(UINT8 value) -{ - UINT8 res = value + 1; - F = (F & CF) | SZHV_inc[res]; - return (UINT8)res; -} - -/*************************************************************** - * DEC r8 - ***************************************************************/ -INLINE UINT8 DEC(UINT8 value) -{ - UINT8 res = value - 1; - F = (F & CF) | SZHV_dec[res]; - return res; -} - -/*************************************************************** - * RLCA - ***************************************************************/ -#define RLCA \ - A = (A << 1) | (A >> 7); \ - F = (F & (SF | ZF | PF)) | (A & (YF | XF | CF)) - -/*************************************************************** - * RRCA - ***************************************************************/ -#define RRCA \ - F = (F & (SF | ZF | PF)) | (A & CF); \ - A = (A >> 1) | (A << 7); \ - F |= (A & (YF | XF) ) - -/*************************************************************** - * RLA - ***************************************************************/ -#define RLA { \ - UINT8 res = (A << 1) | (F & CF); \ - UINT8 c = (A & 0x80) ? CF : 0; \ - F = (F & (SF | ZF | PF)) | c | (res & (YF | XF)); \ - A = res; \ -} - -/*************************************************************** - * RRA - ***************************************************************/ -#define RRA { \ - UINT8 res = (A >> 1) | (F << 7); \ - UINT8 c = (A & 0x01) ? CF : 0; \ - F = (F & (SF | ZF | PF)) | c | (res & (YF | XF)); \ - A = res; \ -} - -/*************************************************************** - * RRD - ***************************************************************/ -#define RRD { \ - UINT8 n = RM(HL); \ - WZ = HL+1; \ - WM( HL, (n >> 4) | (A << 4) ); \ - A = (A & 0xf0) | (n & 0x0f); \ - F = (F & CF) | SZP[A]; \ -} - -/*************************************************************** - * RLD - ***************************************************************/ -#define RLD { \ - UINT8 n = RM(HL); \ - WZ = HL+1; \ - WM( HL, (n << 4) | (A & 0x0f) ); \ - A = (A & 0xf0) | (n >> 4); \ - F = (F & CF) | SZP[A]; \ -} - -/*************************************************************** - * ADD A,n - ***************************************************************/ -#define ADD(value) \ -{ \ - UINT32 ah = AFD & 0xff00; \ - UINT32 res = (UINT8)((ah >> 8) + value); \ - F = SZHVC_add[ah | res]; \ - A = res; \ -} - -/*************************************************************** - * ADC A,n - ***************************************************************/ -#define ADC(value) \ -{ \ - UINT32 ah = AFD & 0xff00, c = AFD & 1; \ - UINT32 res = (UINT8)((ah >> 8) + value + c); \ - F = SZHVC_add[(c << 16) | ah | res]; \ - A = res; \ -} - -/*************************************************************** - * SUB n - ***************************************************************/ -#define SUB(value) \ -{ \ - UINT32 ah = AFD & 0xff00; \ - UINT32 res = (UINT8)((ah >> 8) - value); \ - F = SZHVC_sub[ah | res]; \ - A = res; \ -} - -/*************************************************************** - * SBC A,n - ***************************************************************/ -#define SBC(value) \ -{ \ - UINT32 ah = AFD & 0xff00, c = AFD & 1; \ - UINT32 res = (UINT8)((ah >> 8) - value - c); \ - F = SZHVC_sub[(c<<16) | ah | res]; \ - A = res; \ -} - -/*************************************************************** - * NEG - ***************************************************************/ -#define NEG { \ - UINT8 value = A; \ - A = 0; \ - SUB(value); \ -} - -/*************************************************************** - * DAA - ***************************************************************/ -#define DAA { \ - UINT8 a = A; \ - if (F & NF) { \ - if ((F&HF) | ((A&0xf)>9)) a-=6; \ - if ((F&CF) | (A>0x99)) a-=0x60; \ - } \ - else { \ - if ((F&HF) | ((A&0xf)>9)) a+=6; \ - if ((F&CF) | (A>0x99)) a+=0x60; \ - } \ - \ - F = (F&(CF|NF)) | (A>0x99) | ((A^a)&HF) | SZP[a]; \ - A = a; \ -} - -/*************************************************************** - * AND n - ***************************************************************/ -#define AND(value) \ - A &= value; \ - F = SZP[A] | HF - -/*************************************************************** - * OR n - ***************************************************************/ -#define OR(value) \ - A |= value; \ - F = SZP[A] - -/*************************************************************** - * XOR n - ***************************************************************/ -#define XOR(value) \ - A ^= value; \ - F = SZP[A] - -/*************************************************************** - * CP n - ***************************************************************/ -#define CP(value) \ -{ \ - unsigned val = value; \ - UINT32 ah = AFD & 0xff00; \ - UINT32 res = (UINT8)((ah >> 8) - val); \ - F = (SZHVC_sub[ah | res] & ~(YF | XF)) | (val & (YF | XF)); \ -} - -/*************************************************************** - * EX AF,AF' - ***************************************************************/ -#define EX_AF \ -{ \ - PAIR tmp; \ - tmp = Z80.af; Z80.af = Z80.af2; Z80.af2 = tmp; \ -} - -/*************************************************************** - * EX DE,HL - ***************************************************************/ -#define EX_DE_HL \ -{ \ - PAIR tmp; \ - tmp = Z80.de; Z80.de = Z80.hl; Z80.hl = tmp; \ -} - -/*************************************************************** - * EXX - ***************************************************************/ -#define EXX \ -{ \ - PAIR tmp; \ - tmp = Z80.bc; Z80.bc = Z80.bc2; Z80.bc2 = tmp; \ - tmp = Z80.de; Z80.de = Z80.de2; Z80.de2 = tmp; \ - tmp = Z80.hl; Z80.hl = Z80.hl2; Z80.hl2 = tmp; \ -} - -/*************************************************************** - * EX (SP),r16 - ***************************************************************/ -#define EXSP(DR) \ -{ \ - PAIR tmp = { { 0, 0, 0, 0 } }; \ - RM16( SPD, &tmp ); \ - WM16( SPD, &Z80.DR ); \ - Z80.DR = tmp; \ - WZ = Z80.DR.d; \ -} - - -/*************************************************************** - * ADD16 - ***************************************************************/ -#define ADD16(DR,SR) \ -{ \ - UINT32 res = Z80.DR.d + Z80.SR.d; \ - WZ = Z80.DR.d + 1; \ - F = (F & (SF | ZF | VF)) | \ - (((Z80.DR.d ^ res ^ Z80.SR.d) >> 8) & HF) | \ - ((res >> 16) & CF) | ((res >> 8) & (YF | XF)); \ - Z80.DR.w.l = (UINT16)res; \ -} - -/*************************************************************** - * ADC r16,r16 - ***************************************************************/ -#define ADC16(Reg) \ -{ \ - UINT32 res = HLD + Z80.Reg.d + (F & CF); \ - WZ = HL + 1; \ - F = (((HLD ^ res ^ Z80.Reg.d) >> 8) & HF) | \ - ((res >> 16) & CF) | \ - ((res >> 8) & (SF | YF | XF)) | \ - ((res & 0xffff) ? 0 : ZF) | \ - (((Z80.Reg.d ^ HLD ^ 0x8000) & (Z80.Reg.d ^ res) & 0x8000) >> 13); \ - HL = (UINT16)res; \ -} - -/*************************************************************** - * SBC r16,r16 - ***************************************************************/ -#define SBC16(Reg) \ -{ \ - UINT32 res = HLD - Z80.Reg.d - (F & CF); \ - WZ = HL + 1; \ - F = (((HLD ^ res ^ Z80.Reg.d) >> 8) & HF) | NF | \ - ((res >> 16) & CF) | \ - ((res >> 8) & (SF | YF | XF)) | \ - ((res & 0xffff) ? 0 : ZF) | \ - (((Z80.Reg.d ^ HLD) & (HLD ^ res) &0x8000) >> 13); \ - HL = (UINT16)res; \ -} - -/*************************************************************** - * RLC r8 - ***************************************************************/ -INLINE UINT8 RLC(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x80) ? CF : 0; - res = ((res << 1) | (res >> 7)) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * RRC r8 - ***************************************************************/ -INLINE UINT8 RRC(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x01) ? CF : 0; - res = ((res >> 1) | (res << 7)) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * RL r8 - ***************************************************************/ -INLINE UINT8 RL(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x80) ? CF : 0; - res = ((res << 1) | (F & CF)) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * RR r8 - ***************************************************************/ -INLINE UINT8 RR(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x01) ? CF : 0; - res = ((res >> 1) | (F << 7)) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * SLA r8 - ***************************************************************/ -INLINE UINT8 SLA(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x80) ? CF : 0; - res = (res << 1) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * SRA r8 - ***************************************************************/ -INLINE UINT8 SRA(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x01) ? CF : 0; - res = ((res >> 1) | (res & 0x80)) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * SLL r8 - ***************************************************************/ -INLINE UINT8 SLL(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x80) ? CF : 0; - res = ((res << 1) | 0x01) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * SRL r8 - ***************************************************************/ -INLINE UINT8 SRL(UINT8 value) -{ - unsigned res = value; - unsigned c = (res & 0x01) ? CF : 0; - res = (res >> 1) & 0xff; - F = SZP[res] | c; - return res; -} - -/*************************************************************** - * BIT bit,r8 - ***************************************************************/ -#undef BIT -#define BIT(bit,reg) \ - F = (F & CF) | HF | (SZ_BIT[reg & (1<>8) & (YF|XF)) - -/*************************************************************** - * RES bit,r8 - ***************************************************************/ -INLINE UINT8 RES(UINT8 bit, UINT8 value) -{ - return value & ~(1< flag 5 */ \ - if( (A + io) & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ - HL++; DE++; BC--; \ - if( BC ) F |= VF; \ -} - -/*************************************************************** - * CPI - ***************************************************************/ -#define CPI { \ - UINT8 val = RM(HL); \ - UINT8 res = A - val; \ - WZ++; \ - HL++; BC--; \ - F = (F & CF) | (SZ[res]&~(YF|XF)) | ((A^val^res)&HF) | NF; \ - if( F & HF ) res -= 1; \ - if( res & 0x02 ) F |= YF; /* bit 1 -> flag 5 */ \ - if( res & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ - if( BC ) F |= VF; \ -} - -/*************************************************************** - * INI - ***************************************************************/ -#define INI { \ - unsigned t; \ - UINT8 io = IN(BC); \ - WZ = BC + 1; \ - CC(ex,0xa2); \ - B--; \ - WM( HL, io ); \ - HL++; \ - F = SZ[B]; \ - t = (unsigned)((C + 1) & 0xff) + (unsigned)io; \ - if( io & SF ) F |= NF; \ - if( t & 0x100 ) F |= HF | CF; \ - F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ -} - -/*************************************************************** - * OUTI - ***************************************************************/ -#define OUTI { \ - unsigned t; \ - UINT8 io = RM(HL); \ - B--; \ - WZ = BC + 1; \ - OUT( BC, io ); \ - HL++; \ - F = SZ[B]; \ - t = (unsigned)L + (unsigned)io; \ - if( io & SF ) F |= NF; \ - if( t & 0x100 ) F |= HF | CF; \ - F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ -} - -/*************************************************************** - * LDD - ***************************************************************/ -#define LDD { \ - UINT8 io = RM(HL); \ - WM( DE, io ); \ - F &= SF | ZF | CF; \ - if( (A + io) & 0x02 ) F |= YF; /* bit 1 -> flag 5 */ \ - if( (A + io) & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ - HL--; DE--; BC--; \ - if( BC ) F |= VF; \ -} - -/*************************************************************** - * CPD - ***************************************************************/ -#define CPD { \ - UINT8 val = RM(HL); \ - UINT8 res = A - val; \ - WZ--; \ - HL--; BC--; \ - F = (F & CF) | (SZ[res]&~(YF|XF)) | ((A^val^res)&HF) | NF; \ - if( F & HF ) res -= 1; \ - if( res & 0x02 ) F |= YF; /* bit 1 -> flag 5 */ \ - if( res & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ - if( BC ) F |= VF; \ -} - -/*************************************************************** - * IND - ***************************************************************/ -#define IND { \ - unsigned t; \ - UINT8 io = IN(BC); \ - WZ = BC - 1; \ - CC(ex,0xaa); \ - B--; \ - WM( HL, io ); \ - HL--; \ - F = SZ[B]; \ - t = ((unsigned)(C - 1) & 0xff) + (unsigned)io; \ - if( io & SF ) F |= NF; \ - if( t & 0x100 ) F |= HF | CF; \ - F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ -} - -/*************************************************************** - * OUTD - ***************************************************************/ -#define OUTD { \ - unsigned t; \ - UINT8 io = RM(HL); \ - B--; \ - WZ = BC - 1; \ - OUT( BC, io ); \ - HL--; \ - F = SZ[B]; \ - t = (unsigned)L + (unsigned)io; \ - if( io & SF ) F |= NF; \ - if( t & 0x100 ) F |= HF | CF; \ - F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ -} - -/*************************************************************** - * LDIR - ***************************************************************/ -#define LDIR \ - LDI; \ - if( BC ) \ - { \ - PC -= 2; \ - WZ = PC + 1; \ - CC(ex,0xb0); \ - } - -/*************************************************************** - * CPIR - ***************************************************************/ -#define CPIR \ - CPI; \ - if( BC && !(F & ZF) ) \ - { \ - PC -= 2; \ - WZ = PC + 1; \ - CC(ex,0xb1); \ - } - -/*************************************************************** - * INIR - ***************************************************************/ -#define INIR \ - INI; \ - if( B ) \ - { \ - PC -= 2; \ - CC(ex,0xb2); \ - } - -/*************************************************************** - * OTIR - ***************************************************************/ -#define OTIR \ - OUTI; \ - if( B ) \ - { \ - PC -= 2; \ - CC(ex,0xb3); \ - } - -/*************************************************************** - * LDDR - ***************************************************************/ -#define LDDR \ - LDD; \ - if( BC ) \ - { \ - PC -= 2; \ - WZ = PC + 1; \ - CC(ex,0xb8); \ - } - -/*************************************************************** - * CPDR - ***************************************************************/ -#define CPDR \ - CPD; \ - if( BC && !(F & ZF) ) \ - { \ - PC -= 2; \ - WZ = PC + 1; \ - CC(ex,0xb9); \ - } - -/*************************************************************** - * INDR - ***************************************************************/ -#define INDR \ - IND; \ - if( B ) \ - { \ - PC -= 2; \ - CC(ex,0xba); \ - } - -/*************************************************************** - * OTDR - ***************************************************************/ -#define OTDR \ - OUTD; \ - if( B ) \ - { \ - PC -= 2; \ - CC(ex,0xbb); \ - } - -/*************************************************************** - * EI - ***************************************************************/ -#define EI { \ - IFF1 = IFF2 = 1; \ - Z80.after_ei = TRUE; \ -} - -/********************************************************** - * opcodes with CB prefix - * rotate, shift and bit operations - **********************************************************/ -OP(cb,00) { B = RLC(B); } /* RLC B */ -OP(cb,01) { C = RLC(C); } /* RLC C */ -OP(cb,02) { D = RLC(D); } /* RLC D */ -OP(cb,03) { E = RLC(E); } /* RLC E */ -OP(cb,04) { H = RLC(H); } /* RLC H */ -OP(cb,05) { L = RLC(L); } /* RLC L */ -OP(cb,06) { WM( HL, RLC(RM(HL)) ); } /* RLC (HL) */ -OP(cb,07) { A = RLC(A); } /* RLC A */ - -OP(cb,08) { B = RRC(B); } /* RRC B */ -OP(cb,09) { C = RRC(C); } /* RRC C */ -OP(cb,0a) { D = RRC(D); } /* RRC D */ -OP(cb,0b) { E = RRC(E); } /* RRC E */ -OP(cb,0c) { H = RRC(H); } /* RRC H */ -OP(cb,0d) { L = RRC(L); } /* RRC L */ -OP(cb,0e) { WM( HL, RRC(RM(HL)) ); } /* RRC (HL) */ -OP(cb,0f) { A = RRC(A); } /* RRC A */ - -OP(cb,10) { B = RL(B); } /* RL B */ -OP(cb,11) { C = RL(C); } /* RL C */ -OP(cb,12) { D = RL(D); } /* RL D */ -OP(cb,13) { E = RL(E); } /* RL E */ -OP(cb,14) { H = RL(H); } /* RL H */ -OP(cb,15) { L = RL(L); } /* RL L */ -OP(cb,16) { WM( HL, RL(RM(HL)) ); } /* RL (HL) */ -OP(cb,17) { A = RL(A); } /* RL A */ - -OP(cb,18) { B = RR(B); } /* RR B */ -OP(cb,19) { C = RR(C); } /* RR C */ -OP(cb,1a) { D = RR(D); } /* RR D */ -OP(cb,1b) { E = RR(E); } /* RR E */ -OP(cb,1c) { H = RR(H); } /* RR H */ -OP(cb,1d) { L = RR(L); } /* RR L */ -OP(cb,1e) { WM( HL, RR(RM(HL)) ); } /* RR (HL) */ -OP(cb,1f) { A = RR(A); } /* RR A */ - -OP(cb,20) { B = SLA(B); } /* SLA B */ -OP(cb,21) { C = SLA(C); } /* SLA C */ -OP(cb,22) { D = SLA(D); } /* SLA D */ -OP(cb,23) { E = SLA(E); } /* SLA E */ -OP(cb,24) { H = SLA(H); } /* SLA H */ -OP(cb,25) { L = SLA(L); } /* SLA L */ -OP(cb,26) { WM( HL, SLA(RM(HL)) ); } /* SLA (HL) */ -OP(cb,27) { A = SLA(A); } /* SLA A */ - -OP(cb,28) { B = SRA(B); } /* SRA B */ -OP(cb,29) { C = SRA(C); } /* SRA C */ -OP(cb,2a) { D = SRA(D); } /* SRA D */ -OP(cb,2b) { E = SRA(E); } /* SRA E */ -OP(cb,2c) { H = SRA(H); } /* SRA H */ -OP(cb,2d) { L = SRA(L); } /* SRA L */ -OP(cb,2e) { WM( HL, SRA(RM(HL)) ); } /* SRA (HL) */ -OP(cb,2f) { A = SRA(A); } /* SRA A */ - -OP(cb,30) { B = SLL(B); } /* SLL B */ -OP(cb,31) { C = SLL(C); } /* SLL C */ -OP(cb,32) { D = SLL(D); } /* SLL D */ -OP(cb,33) { E = SLL(E); } /* SLL E */ -OP(cb,34) { H = SLL(H); } /* SLL H */ -OP(cb,35) { L = SLL(L); } /* SLL L */ -OP(cb,36) { WM( HL, SLL(RM(HL)) ); } /* SLL (HL) */ -OP(cb,37) { A = SLL(A); } /* SLL A */ - -OP(cb,38) { B = SRL(B); } /* SRL B */ -OP(cb,39) { C = SRL(C); } /* SRL C */ -OP(cb,3a) { D = SRL(D); } /* SRL D */ -OP(cb,3b) { E = SRL(E); } /* SRL E */ -OP(cb,3c) { H = SRL(H); } /* SRL H */ -OP(cb,3d) { L = SRL(L); } /* SRL L */ -OP(cb,3e) { WM( HL, SRL(RM(HL)) ); } /* SRL (HL) */ -OP(cb,3f) { A = SRL(A); } /* SRL A */ - -OP(cb,40) { BIT(0,B); } /* BIT 0,B */ -OP(cb,41) { BIT(0,C); } /* BIT 0,C */ -OP(cb,42) { BIT(0,D); } /* BIT 0,D */ -OP(cb,43) { BIT(0,E); } /* BIT 0,E */ -OP(cb,44) { BIT(0,H); } /* BIT 0,H */ -OP(cb,45) { BIT(0,L); } /* BIT 0,L */ -OP(cb,46) { BIT_HL(0,RM(HL)); } /* BIT 0,(HL) */ -OP(cb,47) { BIT(0,A); } /* BIT 0,A */ - -OP(cb,48) { BIT(1,B); } /* BIT 1,B */ -OP(cb,49) { BIT(1,C); } /* BIT 1,C */ -OP(cb,4a) { BIT(1,D); } /* BIT 1,D */ -OP(cb,4b) { BIT(1,E); } /* BIT 1,E */ -OP(cb,4c) { BIT(1,H); } /* BIT 1,H */ -OP(cb,4d) { BIT(1,L); } /* BIT 1,L */ -OP(cb,4e) { BIT_HL(1,RM(HL)); } /* BIT 1,(HL) */ -OP(cb,4f) { BIT(1,A); } /* BIT 1,A */ - -OP(cb,50) { BIT(2,B); } /* BIT 2,B */ -OP(cb,51) { BIT(2,C); } /* BIT 2,C */ -OP(cb,52) { BIT(2,D); } /* BIT 2,D */ -OP(cb,53) { BIT(2,E); } /* BIT 2,E */ -OP(cb,54) { BIT(2,H); } /* BIT 2,H */ -OP(cb,55) { BIT(2,L); } /* BIT 2,L */ -OP(cb,56) { BIT_HL(2,RM(HL)); } /* BIT 2,(HL) */ -OP(cb,57) { BIT(2,A); } /* BIT 2,A */ - -OP(cb,58) { BIT(3,B); } /* BIT 3,B */ -OP(cb,59) { BIT(3,C); } /* BIT 3,C */ -OP(cb,5a) { BIT(3,D); } /* BIT 3,D */ -OP(cb,5b) { BIT(3,E); } /* BIT 3,E */ -OP(cb,5c) { BIT(3,H); } /* BIT 3,H */ -OP(cb,5d) { BIT(3,L); } /* BIT 3,L */ -OP(cb,5e) { BIT_HL(3,RM(HL)); } /* BIT 3,(HL) */ -OP(cb,5f) { BIT(3,A); } /* BIT 3,A */ - -OP(cb,60) { BIT(4,B); } /* BIT 4,B */ -OP(cb,61) { BIT(4,C); } /* BIT 4,C */ -OP(cb,62) { BIT(4,D); } /* BIT 4,D */ -OP(cb,63) { BIT(4,E); } /* BIT 4,E */ -OP(cb,64) { BIT(4,H); } /* BIT 4,H */ -OP(cb,65) { BIT(4,L); } /* BIT 4,L */ -OP(cb,66) { BIT_HL(4,RM(HL)); } /* BIT 4,(HL) */ -OP(cb,67) { BIT(4,A); } /* BIT 4,A */ - -OP(cb,68) { BIT(5,B); } /* BIT 5,B */ -OP(cb,69) { BIT(5,C); } /* BIT 5,C */ -OP(cb,6a) { BIT(5,D); } /* BIT 5,D */ -OP(cb,6b) { BIT(5,E); } /* BIT 5,E */ -OP(cb,6c) { BIT(5,H); } /* BIT 5,H */ -OP(cb,6d) { BIT(5,L); } /* BIT 5,L */ -OP(cb,6e) { BIT_HL(5,RM(HL)); } /* BIT 5,(HL) */ -OP(cb,6f) { BIT(5,A); } /* BIT 5,A */ - -OP(cb,70) { BIT(6,B); } /* BIT 6,B */ -OP(cb,71) { BIT(6,C); } /* BIT 6,C */ -OP(cb,72) { BIT(6,D); } /* BIT 6,D */ -OP(cb,73) { BIT(6,E); } /* BIT 6,E */ -OP(cb,74) { BIT(6,H); } /* BIT 6,H */ -OP(cb,75) { BIT(6,L); } /* BIT 6,L */ -OP(cb,76) { BIT_HL(6,RM(HL)); } /* BIT 6,(HL) */ -OP(cb,77) { BIT(6,A); } /* BIT 6,A */ - -OP(cb,78) { BIT(7,B); } /* BIT 7,B */ -OP(cb,79) { BIT(7,C); } /* BIT 7,C */ -OP(cb,7a) { BIT(7,D); } /* BIT 7,D */ -OP(cb,7b) { BIT(7,E); } /* BIT 7,E */ -OP(cb,7c) { BIT(7,H); } /* BIT 7,H */ -OP(cb,7d) { BIT(7,L); } /* BIT 7,L */ -OP(cb,7e) { BIT_HL(7,RM(HL)); } /* BIT 7,(HL) */ -OP(cb,7f) { BIT(7,A); } /* BIT 7,A */ - -OP(cb,80) { B = RES(0,B); } /* RES 0,B */ -OP(cb,81) { C = RES(0,C); } /* RES 0,C */ -OP(cb,82) { D = RES(0,D); } /* RES 0,D */ -OP(cb,83) { E = RES(0,E); } /* RES 0,E */ -OP(cb,84) { H = RES(0,H); } /* RES 0,H */ -OP(cb,85) { L = RES(0,L); } /* RES 0,L */ -OP(cb,86) { WM( HL, RES(0,RM(HL)) ); } /* RES 0,(HL) */ -OP(cb,87) { A = RES(0,A); } /* RES 0,A */ - -OP(cb,88) { B = RES(1,B); } /* RES 1,B */ -OP(cb,89) { C = RES(1,C); } /* RES 1,C */ -OP(cb,8a) { D = RES(1,D); } /* RES 1,D */ -OP(cb,8b) { E = RES(1,E); } /* RES 1,E */ -OP(cb,8c) { H = RES(1,H); } /* RES 1,H */ -OP(cb,8d) { L = RES(1,L); } /* RES 1,L */ -OP(cb,8e) { WM( HL, RES(1,RM(HL)) ); } /* RES 1,(HL) */ -OP(cb,8f) { A = RES(1,A); } /* RES 1,A */ - -OP(cb,90) { B = RES(2,B); } /* RES 2,B */ -OP(cb,91) { C = RES(2,C); } /* RES 2,C */ -OP(cb,92) { D = RES(2,D); } /* RES 2,D */ -OP(cb,93) { E = RES(2,E); } /* RES 2,E */ -OP(cb,94) { H = RES(2,H); } /* RES 2,H */ -OP(cb,95) { L = RES(2,L); } /* RES 2,L */ -OP(cb,96) { WM( HL, RES(2,RM(HL)) ); } /* RES 2,(HL) */ -OP(cb,97) { A = RES(2,A); } /* RES 2,A */ - -OP(cb,98) { B = RES(3,B); } /* RES 3,B */ -OP(cb,99) { C = RES(3,C); } /* RES 3,C */ -OP(cb,9a) { D = RES(3,D); } /* RES 3,D */ -OP(cb,9b) { E = RES(3,E); } /* RES 3,E */ -OP(cb,9c) { H = RES(3,H); } /* RES 3,H */ -OP(cb,9d) { L = RES(3,L); } /* RES 3,L */ -OP(cb,9e) { WM( HL, RES(3,RM(HL)) ); } /* RES 3,(HL) */ -OP(cb,9f) { A = RES(3,A); } /* RES 3,A */ - -OP(cb,a0) { B = RES(4,B); } /* RES 4,B */ -OP(cb,a1) { C = RES(4,C); } /* RES 4,C */ -OP(cb,a2) { D = RES(4,D); } /* RES 4,D */ -OP(cb,a3) { E = RES(4,E); } /* RES 4,E */ -OP(cb,a4) { H = RES(4,H); } /* RES 4,H */ -OP(cb,a5) { L = RES(4,L); } /* RES 4,L */ -OP(cb,a6) { WM( HL, RES(4,RM(HL)) ); } /* RES 4,(HL) */ -OP(cb,a7) { A = RES(4,A); } /* RES 4,A */ - -OP(cb,a8) { B = RES(5,B); } /* RES 5,B */ -OP(cb,a9) { C = RES(5,C); } /* RES 5,C */ -OP(cb,aa) { D = RES(5,D); } /* RES 5,D */ -OP(cb,ab) { E = RES(5,E); } /* RES 5,E */ -OP(cb,ac) { H = RES(5,H); } /* RES 5,H */ -OP(cb,ad) { L = RES(5,L); } /* RES 5,L */ -OP(cb,ae) { WM( HL, RES(5,RM(HL)) ); } /* RES 5,(HL) */ -OP(cb,af) { A = RES(5,A); } /* RES 5,A */ - -OP(cb,b0) { B = RES(6,B); } /* RES 6,B */ -OP(cb,b1) { C = RES(6,C); } /* RES 6,C */ -OP(cb,b2) { D = RES(6,D); } /* RES 6,D */ -OP(cb,b3) { E = RES(6,E); } /* RES 6,E */ -OP(cb,b4) { H = RES(6,H); } /* RES 6,H */ -OP(cb,b5) { L = RES(6,L); } /* RES 6,L */ -OP(cb,b6) { WM( HL, RES(6,RM(HL)) ); } /* RES 6,(HL) */ -OP(cb,b7) { A = RES(6,A); } /* RES 6,A */ - -OP(cb,b8) { B = RES(7,B); } /* RES 7,B */ -OP(cb,b9) { C = RES(7,C); } /* RES 7,C */ -OP(cb,ba) { D = RES(7,D); } /* RES 7,D */ -OP(cb,bb) { E = RES(7,E); } /* RES 7,E */ -OP(cb,bc) { H = RES(7,H); } /* RES 7,H */ -OP(cb,bd) { L = RES(7,L); } /* RES 7,L */ -OP(cb,be) { WM( HL, RES(7,RM(HL)) ); } /* RES 7,(HL) */ -OP(cb,bf) { A = RES(7,A); } /* RES 7,A */ - -OP(cb,c0) { B = SET(0,B); } /* SET 0,B */ -OP(cb,c1) { C = SET(0,C); } /* SET 0,C */ -OP(cb,c2) { D = SET(0,D); } /* SET 0,D */ -OP(cb,c3) { E = SET(0,E); } /* SET 0,E */ -OP(cb,c4) { H = SET(0,H); } /* SET 0,H */ -OP(cb,c5) { L = SET(0,L); } /* SET 0,L */ -OP(cb,c6) { WM( HL, SET(0,RM(HL)) ); } /* SET 0,(HL) */ -OP(cb,c7) { A = SET(0,A); } /* SET 0,A */ - -OP(cb,c8) { B = SET(1,B); } /* SET 1,B */ -OP(cb,c9) { C = SET(1,C); } /* SET 1,C */ -OP(cb,ca) { D = SET(1,D); } /* SET 1,D */ -OP(cb,cb) { E = SET(1,E); } /* SET 1,E */ -OP(cb,cc) { H = SET(1,H); } /* SET 1,H */ -OP(cb,cd) { L = SET(1,L); } /* SET 1,L */ -OP(cb,ce) { WM( HL, SET(1,RM(HL)) ); } /* SET 1,(HL) */ -OP(cb,cf) { A = SET(1,A); } /* SET 1,A */ - -OP(cb,d0) { B = SET(2,B); } /* SET 2,B */ -OP(cb,d1) { C = SET(2,C); } /* SET 2,C */ -OP(cb,d2) { D = SET(2,D); } /* SET 2,D */ -OP(cb,d3) { E = SET(2,E); } /* SET 2,E */ -OP(cb,d4) { H = SET(2,H); } /* SET 2,H */ -OP(cb,d5) { L = SET(2,L); } /* SET 2,L */ -OP(cb,d6) { WM( HL, SET(2,RM(HL)) ); } /* SET 2,(HL) */ -OP(cb,d7) { A = SET(2,A); } /* SET 2,A */ - -OP(cb,d8) { B = SET(3,B); } /* SET 3,B */ -OP(cb,d9) { C = SET(3,C); } /* SET 3,C */ -OP(cb,da) { D = SET(3,D); } /* SET 3,D */ -OP(cb,db) { E = SET(3,E); } /* SET 3,E */ -OP(cb,dc) { H = SET(3,H); } /* SET 3,H */ -OP(cb,dd) { L = SET(3,L); } /* SET 3,L */ -OP(cb,de) { WM( HL, SET(3,RM(HL)) ); } /* SET 3,(HL) */ -OP(cb,df) { A = SET(3,A); } /* SET 3,A */ - -OP(cb,e0) { B = SET(4,B); } /* SET 4,B */ -OP(cb,e1) { C = SET(4,C); } /* SET 4,C */ -OP(cb,e2) { D = SET(4,D); } /* SET 4,D */ -OP(cb,e3) { E = SET(4,E); } /* SET 4,E */ -OP(cb,e4) { H = SET(4,H); } /* SET 4,H */ -OP(cb,e5) { L = SET(4,L); } /* SET 4,L */ -OP(cb,e6) { WM( HL, SET(4,RM(HL)) ); } /* SET 4,(HL) */ -OP(cb,e7) { A = SET(4,A); } /* SET 4,A */ - -OP(cb,e8) { B = SET(5,B); } /* SET 5,B */ -OP(cb,e9) { C = SET(5,C); } /* SET 5,C */ -OP(cb,ea) { D = SET(5,D); } /* SET 5,D */ -OP(cb,eb) { E = SET(5,E); } /* SET 5,E */ -OP(cb,ec) { H = SET(5,H); } /* SET 5,H */ -OP(cb,ed) { L = SET(5,L); } /* SET 5,L */ -OP(cb,ee) { WM( HL, SET(5,RM(HL)) ); } /* SET 5,(HL) */ -OP(cb,ef) { A = SET(5,A); } /* SET 5,A */ - -OP(cb,f0) { B = SET(6,B); } /* SET 6,B */ -OP(cb,f1) { C = SET(6,C); } /* SET 6,C */ -OP(cb,f2) { D = SET(6,D); } /* SET 6,D */ -OP(cb,f3) { E = SET(6,E); } /* SET 6,E */ -OP(cb,f4) { H = SET(6,H); } /* SET 6,H */ -OP(cb,f5) { L = SET(6,L); } /* SET 6,L */ -OP(cb,f6) { WM( HL, SET(6,RM(HL)) ); } /* SET 6,(HL) */ -OP(cb,f7) { A = SET(6,A); } /* SET 6,A */ - -OP(cb,f8) { B = SET(7,B); } /* SET 7,B */ -OP(cb,f9) { C = SET(7,C); } /* SET 7,C */ -OP(cb,fa) { D = SET(7,D); } /* SET 7,D */ -OP(cb,fb) { E = SET(7,E); } /* SET 7,E */ -OP(cb,fc) { H = SET(7,H); } /* SET 7,H */ -OP(cb,fd) { L = SET(7,L); } /* SET 7,L */ -OP(cb,fe) { WM( HL, SET(7,RM(HL)) ); } /* SET 7,(HL) */ -OP(cb,ff) { A = SET(7,A); } /* SET 7,A */ - - -/********************************************************** -* opcodes with DD/FD CB prefix -* rotate, shift and bit operations with (IX+o) -**********************************************************/ -OP(xycb,00) { B = RLC( RM(EA) ); WM( EA,B ); } /* RLC B=(XY+o) */ -OP(xycb,01) { C = RLC( RM(EA) ); WM( EA,C ); } /* RLC C=(XY+o) */ -OP(xycb,02) { D = RLC( RM(EA) ); WM( EA,D ); } /* RLC D=(XY+o) */ -OP(xycb,03) { E = RLC( RM(EA) ); WM( EA,E ); } /* RLC E=(XY+o) */ -OP(xycb,04) { H = RLC( RM(EA) ); WM( EA,H ); } /* RLC H=(XY+o) */ -OP(xycb,05) { L = RLC( RM(EA) ); WM( EA,L ); } /* RLC L=(XY+o) */ -OP(xycb,06) { WM( EA, RLC( RM(EA) ) ); } /* RLC (XY+o) */ -OP(xycb,07) { A = RLC( RM(EA) ); WM( EA,A ); } /* RLC A=(XY+o) */ - -OP(xycb,08) { B = RRC( RM(EA) ); WM( EA,B ); } /* RRC B=(XY+o) */ -OP(xycb,09) { C = RRC( RM(EA) ); WM( EA,C ); } /* RRC C=(XY+o) */ -OP(xycb,0a) { D = RRC( RM(EA) ); WM( EA,D ); } /* RRC D=(XY+o) */ -OP(xycb,0b) { E = RRC( RM(EA) ); WM( EA,E ); } /* RRC E=(XY+o) */ -OP(xycb,0c) { H = RRC( RM(EA) ); WM( EA,H ); } /* RRC H=(XY+o) */ -OP(xycb,0d) { L = RRC( RM(EA) ); WM( EA,L ); } /* RRC L=(XY+o) */ -OP(xycb,0e) { WM( EA,RRC( RM(EA) ) ); } /* RRC (XY+o) */ -OP(xycb,0f) { A = RRC( RM(EA) ); WM( EA,A ); } /* RRC A=(XY+o) */ - -OP(xycb,10) { B = RL( RM(EA) ); WM( EA,B ); } /* RL B=(XY+o) */ -OP(xycb,11) { C = RL( RM(EA) ); WM( EA,C ); } /* RL C=(XY+o) */ -OP(xycb,12) { D = RL( RM(EA) ); WM( EA,D ); } /* RL D=(XY+o) */ -OP(xycb,13) { E = RL( RM(EA) ); WM( EA,E ); } /* RL E=(XY+o) */ -OP(xycb,14) { H = RL( RM(EA) ); WM( EA,H ); } /* RL H=(XY+o) */ -OP(xycb,15) { L = RL( RM(EA) ); WM( EA,L ); } /* RL L=(XY+o) */ -OP(xycb,16) { WM( EA,RL( RM(EA) ) ); } /* RL (XY+o) */ -OP(xycb,17) { A = RL( RM(EA) ); WM( EA,A ); } /* RL A=(XY+o) */ - -OP(xycb,18) { B = RR( RM(EA) ); WM( EA,B ); } /* RR B=(XY+o) */ -OP(xycb,19) { C = RR( RM(EA) ); WM( EA,C ); } /* RR C=(XY+o) */ -OP(xycb,1a) { D = RR( RM(EA) ); WM( EA,D ); } /* RR D=(XY+o) */ -OP(xycb,1b) { E = RR( RM(EA) ); WM( EA,E ); } /* RR E=(XY+o) */ -OP(xycb,1c) { H = RR( RM(EA) ); WM( EA,H ); } /* RR H=(XY+o) */ -OP(xycb,1d) { L = RR( RM(EA) ); WM( EA,L ); } /* RR L=(XY+o) */ -OP(xycb,1e) { WM( EA,RR( RM(EA) ) ); } /* RR (XY+o) */ -OP(xycb,1f) { A = RR( RM(EA) ); WM( EA,A ); } /* RR A=(XY+o) */ - -OP(xycb,20) { B = SLA( RM(EA) ); WM( EA,B ); } /* SLA B=(XY+o) */ -OP(xycb,21) { C = SLA( RM(EA) ); WM( EA,C ); } /* SLA C=(XY+o) */ -OP(xycb,22) { D = SLA( RM(EA) ); WM( EA,D ); } /* SLA D=(XY+o) */ -OP(xycb,23) { E = SLA( RM(EA) ); WM( EA,E ); } /* SLA E=(XY+o) */ -OP(xycb,24) { H = SLA( RM(EA) ); WM( EA,H ); } /* SLA H=(XY+o) */ -OP(xycb,25) { L = SLA( RM(EA) ); WM( EA,L ); } /* SLA L=(XY+o) */ -OP(xycb,26) { WM( EA,SLA( RM(EA) ) ); } /* SLA (XY+o) */ -OP(xycb,27) { A = SLA( RM(EA) ); WM( EA,A ); } /* SLA A=(XY+o) */ - -OP(xycb,28) { B = SRA( RM(EA) ); WM( EA,B ); } /* SRA B=(XY+o) */ -OP(xycb,29) { C = SRA( RM(EA) ); WM( EA,C ); } /* SRA C=(XY+o) */ -OP(xycb,2a) { D = SRA( RM(EA) ); WM( EA,D ); } /* SRA D=(XY+o) */ -OP(xycb,2b) { E = SRA( RM(EA) ); WM( EA,E ); } /* SRA E=(XY+o) */ -OP(xycb,2c) { H = SRA( RM(EA) ); WM( EA,H ); } /* SRA H=(XY+o) */ -OP(xycb,2d) { L = SRA( RM(EA) ); WM( EA,L ); } /* SRA L=(XY+o) */ -OP(xycb,2e) { WM( EA,SRA( RM(EA) ) ); } /* SRA (XY+o) */ -OP(xycb,2f) { A = SRA( RM(EA) ); WM( EA,A ); } /* SRA A=(XY+o) */ - -OP(xycb,30) { B = SLL( RM(EA) ); WM( EA,B ); } /* SLL B=(XY+o) */ -OP(xycb,31) { C = SLL( RM(EA) ); WM( EA,C ); } /* SLL C=(XY+o) */ -OP(xycb,32) { D = SLL( RM(EA) ); WM( EA,D ); } /* SLL D=(XY+o) */ -OP(xycb,33) { E = SLL( RM(EA) ); WM( EA,E ); } /* SLL E=(XY+o) */ -OP(xycb,34) { H = SLL( RM(EA) ); WM( EA,H ); } /* SLL H=(XY+o) */ -OP(xycb,35) { L = SLL( RM(EA) ); WM( EA,L ); } /* SLL L=(XY+o) */ -OP(xycb,36) { WM( EA,SLL( RM(EA) ) ); } /* SLL (XY+o) */ -OP(xycb,37) { A = SLL( RM(EA) ); WM( EA,A ); } /* SLL A=(XY+o) */ - -OP(xycb,38) { B = SRL( RM(EA) ); WM( EA,B ); } /* SRL B=(XY+o) */ -OP(xycb,39) { C = SRL( RM(EA) ); WM( EA,C ); } /* SRL C=(XY+o) */ -OP(xycb,3a) { D = SRL( RM(EA) ); WM( EA,D ); } /* SRL D=(XY+o) */ -OP(xycb,3b) { E = SRL( RM(EA) ); WM( EA,E ); } /* SRL E=(XY+o) */ -OP(xycb,3c) { H = SRL( RM(EA) ); WM( EA,H ); } /* SRL H=(XY+o) */ -OP(xycb,3d) { L = SRL( RM(EA) ); WM( EA,L ); } /* SRL L=(XY+o) */ -OP(xycb,3e) { WM( EA,SRL( RM(EA) ) ); } /* SRL (XY+o) */ -OP(xycb,3f) { A = SRL( RM(EA) ); WM( EA,A ); } /* SRL A=(XY+o) */ - -OP(xycb,40) { xycb_46(); } /* BIT 0,(XY+o) */ -OP(xycb,41) { xycb_46(); } /* BIT 0,(XY+o) */ -OP(xycb,42) { xycb_46(); } /* BIT 0,(XY+o) */ -OP(xycb,43) { xycb_46(); } /* BIT 0,(XY+o) */ -OP(xycb,44) { xycb_46(); } /* BIT 0,(XY+o) */ -OP(xycb,45) { xycb_46(); } /* BIT 0,(XY+o) */ -OP(xycb,46) { BIT_XY(0,RM(EA)); } /* BIT 0,(XY+o) */ -OP(xycb,47) { xycb_46(); } /* BIT 0,(XY+o) */ - -OP(xycb,48) { xycb_4e(); } /* BIT 1,(XY+o) */ -OP(xycb,49) { xycb_4e(); } /* BIT 1,(XY+o) */ -OP(xycb,4a) { xycb_4e(); } /* BIT 1,(XY+o) */ -OP(xycb,4b) { xycb_4e(); } /* BIT 1,(XY+o) */ -OP(xycb,4c) { xycb_4e(); } /* BIT 1,(XY+o) */ -OP(xycb,4d) { xycb_4e(); } /* BIT 1,(XY+o) */ -OP(xycb,4e) { BIT_XY(1,RM(EA)); } /* BIT 1,(XY+o) */ -OP(xycb,4f) { xycb_4e(); } /* BIT 1,(XY+o) */ - -OP(xycb,50) { xycb_56(); } /* BIT 2,(XY+o) */ -OP(xycb,51) { xycb_56(); } /* BIT 2,(XY+o) */ -OP(xycb,52) { xycb_56(); } /* BIT 2,(XY+o) */ -OP(xycb,53) { xycb_56(); } /* BIT 2,(XY+o) */ -OP(xycb,54) { xycb_56(); } /* BIT 2,(XY+o) */ -OP(xycb,55) { xycb_56(); } /* BIT 2,(XY+o) */ -OP(xycb,56) { BIT_XY(2,RM(EA)); } /* BIT 2,(XY+o) */ -OP(xycb,57) { xycb_56(); } /* BIT 2,(XY+o) */ - -OP(xycb,58) { xycb_5e(); } /* BIT 3,(XY+o) */ -OP(xycb,59) { xycb_5e(); } /* BIT 3,(XY+o) */ -OP(xycb,5a) { xycb_5e(); } /* BIT 3,(XY+o) */ -OP(xycb,5b) { xycb_5e(); } /* BIT 3,(XY+o) */ -OP(xycb,5c) { xycb_5e(); } /* BIT 3,(XY+o) */ -OP(xycb,5d) { xycb_5e(); } /* BIT 3,(XY+o) */ -OP(xycb,5e) { BIT_XY(3,RM(EA)); } /* BIT 3,(XY+o) */ -OP(xycb,5f) { xycb_5e(); } /* BIT 3,(XY+o) */ - -OP(xycb,60) { xycb_66(); } /* BIT 4,(XY+o) */ -OP(xycb,61) { xycb_66(); } /* BIT 4,(XY+o) */ -OP(xycb,62) { xycb_66(); } /* BIT 4,(XY+o) */ -OP(xycb,63) { xycb_66(); } /* BIT 4,(XY+o) */ -OP(xycb,64) { xycb_66(); } /* BIT 4,(XY+o) */ -OP(xycb,65) { xycb_66(); } /* BIT 4,(XY+o) */ -OP(xycb,66) { BIT_XY(4,RM(EA)); } /* BIT 4,(XY+o) */ -OP(xycb,67) { xycb_66(); } /* BIT 4,(XY+o) */ - -OP(xycb,68) { xycb_6e(); } /* BIT 5,(XY+o) */ -OP(xycb,69) { xycb_6e(); } /* BIT 5,(XY+o) */ -OP(xycb,6a) { xycb_6e(); } /* BIT 5,(XY+o) */ -OP(xycb,6b) { xycb_6e(); } /* BIT 5,(XY+o) */ -OP(xycb,6c) { xycb_6e(); } /* BIT 5,(XY+o) */ -OP(xycb,6d) { xycb_6e(); } /* BIT 5,(XY+o) */ -OP(xycb,6e) { BIT_XY(5,RM(EA)); } /* BIT 5,(XY+o) */ -OP(xycb,6f) { xycb_6e(); } /* BIT 5,(XY+o) */ - -OP(xycb,70) { xycb_76(); } /* BIT 6,(XY+o) */ -OP(xycb,71) { xycb_76(); } /* BIT 6,(XY+o) */ -OP(xycb,72) { xycb_76(); } /* BIT 6,(XY+o) */ -OP(xycb,73) { xycb_76(); } /* BIT 6,(XY+o) */ -OP(xycb,74) { xycb_76(); } /* BIT 6,(XY+o) */ -OP(xycb,75) { xycb_76(); } /* BIT 6,(XY+o) */ -OP(xycb,76) { BIT_XY(6,RM(EA)); } /* BIT 6,(XY+o) */ -OP(xycb,77) { xycb_76(); } /* BIT 6,(XY+o) */ - -OP(xycb,78) { xycb_7e(); } /* BIT 7,(XY+o) */ -OP(xycb,79) { xycb_7e(); } /* BIT 7,(XY+o) */ -OP(xycb,7a) { xycb_7e(); } /* BIT 7,(XY+o) */ -OP(xycb,7b) { xycb_7e(); } /* BIT 7,(XY+o) */ -OP(xycb,7c) { xycb_7e(); } /* BIT 7,(XY+o) */ -OP(xycb,7d) { xycb_7e(); } /* BIT 7,(XY+o) */ -OP(xycb,7e) { BIT_XY(7,RM(EA)); } /* BIT 7,(XY+o) */ -OP(xycb,7f) { xycb_7e(); } /* BIT 7,(XY+o) */ - -OP(xycb,80) { B = RES(0, RM(EA) ); WM( EA,B ); } /* RES 0,B=(XY+o) */ -OP(xycb,81) { C = RES(0, RM(EA) ); WM( EA,C ); } /* RES 0,C=(XY+o) */ -OP(xycb,82) { D = RES(0, RM(EA) ); WM( EA,D ); } /* RES 0,D=(XY+o) */ -OP(xycb,83) { E = RES(0, RM(EA) ); WM( EA,E ); } /* RES 0,E=(XY+o) */ -OP(xycb,84) { H = RES(0, RM(EA) ); WM( EA,H ); } /* RES 0,H=(XY+o) */ -OP(xycb,85) { L = RES(0, RM(EA) ); WM( EA,L ); } /* RES 0,L=(XY+o) */ -OP(xycb,86) { WM( EA, RES(0,RM(EA)) ); } /* RES 0,(XY+o) */ -OP(xycb,87) { A = RES(0, RM(EA) ); WM( EA,A ); } /* RES 0,A=(XY+o) */ - -OP(xycb,88) { B = RES(1, RM(EA) ); WM( EA,B ); } /* RES 1,B=(XY+o) */ -OP(xycb,89) { C = RES(1, RM(EA) ); WM( EA,C ); } /* RES 1,C=(XY+o) */ -OP(xycb,8a) { D = RES(1, RM(EA) ); WM( EA,D ); } /* RES 1,D=(XY+o) */ -OP(xycb,8b) { E = RES(1, RM(EA) ); WM( EA,E ); } /* RES 1,E=(XY+o) */ -OP(xycb,8c) { H = RES(1, RM(EA) ); WM( EA,H ); } /* RES 1,H=(XY+o) */ -OP(xycb,8d) { L = RES(1, RM(EA) ); WM( EA,L ); } /* RES 1,L=(XY+o) */ -OP(xycb,8e) { WM( EA, RES(1,RM(EA)) ); } /* RES 1,(XY+o) */ -OP(xycb,8f) { A = RES(1, RM(EA) ); WM( EA,A ); } /* RES 1,A=(XY+o) */ - -OP(xycb,90) { B = RES(2, RM(EA) ); WM( EA,B ); } /* RES 2,B=(XY+o) */ -OP(xycb,91) { C = RES(2, RM(EA) ); WM( EA,C ); } /* RES 2,C=(XY+o) */ -OP(xycb,92) { D = RES(2, RM(EA) ); WM( EA,D ); } /* RES 2,D=(XY+o) */ -OP(xycb,93) { E = RES(2, RM(EA) ); WM( EA,E ); } /* RES 2,E=(XY+o) */ -OP(xycb,94) { H = RES(2, RM(EA) ); WM( EA,H ); } /* RES 2,H=(XY+o) */ -OP(xycb,95) { L = RES(2, RM(EA) ); WM( EA,L ); } /* RES 2,L=(XY+o) */ -OP(xycb,96) { WM( EA, RES(2,RM(EA)) ); } /* RES 2,(XY+o) */ -OP(xycb,97) { A = RES(2, RM(EA) ); WM( EA,A ); } /* RES 2,A=(XY+o) */ - -OP(xycb,98) { B = RES(3, RM(EA) ); WM( EA,B ); } /* RES 3,B=(XY+o) */ -OP(xycb,99) { C = RES(3, RM(EA) ); WM( EA,C ); } /* RES 3,C=(XY+o) */ -OP(xycb,9a) { D = RES(3, RM(EA) ); WM( EA,D ); } /* RES 3,D=(XY+o) */ -OP(xycb,9b) { E = RES(3, RM(EA) ); WM( EA,E ); } /* RES 3,E=(XY+o) */ -OP(xycb,9c) { H = RES(3, RM(EA) ); WM( EA,H ); } /* RES 3,H=(XY+o) */ -OP(xycb,9d) { L = RES(3, RM(EA) ); WM( EA,L ); } /* RES 3,L=(XY+o) */ -OP(xycb,9e) { WM( EA, RES(3,RM(EA)) ); } /* RES 3,(XY+o) */ -OP(xycb,9f) { A = RES(3, RM(EA) ); WM( EA,A ); } /* RES 3,A=(XY+o) */ - -OP(xycb,a0) { B = RES(4, RM(EA) ); WM( EA,B ); } /* RES 4,B=(XY+o) */ -OP(xycb,a1) { C = RES(4, RM(EA) ); WM( EA,C ); } /* RES 4,C=(XY+o) */ -OP(xycb,a2) { D = RES(4, RM(EA) ); WM( EA,D ); } /* RES 4,D=(XY+o) */ -OP(xycb,a3) { E = RES(4, RM(EA) ); WM( EA,E ); } /* RES 4,E=(XY+o) */ -OP(xycb,a4) { H = RES(4, RM(EA) ); WM( EA,H ); } /* RES 4,H=(XY+o) */ -OP(xycb,a5) { L = RES(4, RM(EA) ); WM( EA,L ); } /* RES 4,L=(XY+o) */ -OP(xycb,a6) { WM( EA, RES(4,RM(EA)) ); } /* RES 4,(XY+o) */ -OP(xycb,a7) { A = RES(4, RM(EA) ); WM( EA,A ); } /* RES 4,A=(XY+o) */ - -OP(xycb,a8) { B = RES(5, RM(EA) ); WM( EA,B ); } /* RES 5,B=(XY+o) */ -OP(xycb,a9) { C = RES(5, RM(EA) ); WM( EA,C ); } /* RES 5,C=(XY+o) */ -OP(xycb,aa) { D = RES(5, RM(EA) ); WM( EA,D ); } /* RES 5,D=(XY+o) */ -OP(xycb,ab) { E = RES(5, RM(EA) ); WM( EA,E ); } /* RES 5,E=(XY+o) */ -OP(xycb,ac) { H = RES(5, RM(EA) ); WM( EA,H ); } /* RES 5,H=(XY+o) */ -OP(xycb,ad) { L = RES(5, RM(EA) ); WM( EA,L ); } /* RES 5,L=(XY+o) */ -OP(xycb,ae) { WM( EA, RES(5,RM(EA)) ); } /* RES 5,(XY+o) */ -OP(xycb,af) { A = RES(5, RM(EA) ); WM( EA,A ); } /* RES 5,A=(XY+o) */ - -OP(xycb,b0) { B = RES(6, RM(EA) ); WM( EA,B ); } /* RES 6,B=(XY+o) */ -OP(xycb,b1) { C = RES(6, RM(EA) ); WM( EA,C ); } /* RES 6,C=(XY+o) */ -OP(xycb,b2) { D = RES(6, RM(EA) ); WM( EA,D ); } /* RES 6,D=(XY+o) */ -OP(xycb,b3) { E = RES(6, RM(EA) ); WM( EA,E ); } /* RES 6,E=(XY+o) */ -OP(xycb,b4) { H = RES(6, RM(EA) ); WM( EA,H ); } /* RES 6,H=(XY+o) */ -OP(xycb,b5) { L = RES(6, RM(EA) ); WM( EA,L ); } /* RES 6,L=(XY+o) */ -OP(xycb,b6) { WM( EA, RES(6,RM(EA)) ); } /* RES 6,(XY+o) */ -OP(xycb,b7) { A = RES(6, RM(EA) ); WM( EA,A ); } /* RES 6,A=(XY+o) */ - -OP(xycb,b8) { B = RES(7, RM(EA) ); WM( EA,B ); } /* RES 7,B=(XY+o) */ -OP(xycb,b9) { C = RES(7, RM(EA) ); WM( EA,C ); } /* RES 7,C=(XY+o) */ -OP(xycb,ba) { D = RES(7, RM(EA) ); WM( EA,D ); } /* RES 7,D=(XY+o) */ -OP(xycb,bb) { E = RES(7, RM(EA) ); WM( EA,E ); } /* RES 7,E=(XY+o) */ -OP(xycb,bc) { H = RES(7, RM(EA) ); WM( EA,H ); } /* RES 7,H=(XY+o) */ -OP(xycb,bd) { L = RES(7, RM(EA) ); WM( EA,L ); } /* RES 7,L=(XY+o) */ -OP(xycb,be) { WM( EA, RES(7,RM(EA)) ); } /* RES 7,(XY+o) */ -OP(xycb,bf) { A = RES(7, RM(EA) ); WM( EA,A ); } /* RES 7,A=(XY+o) */ - -OP(xycb,c0) { B = SET(0, RM(EA) ); WM( EA,B ); } /* SET 0,B=(XY+o) */ -OP(xycb,c1) { C = SET(0, RM(EA) ); WM( EA,C ); } /* SET 0,C=(XY+o) */ -OP(xycb,c2) { D = SET(0, RM(EA) ); WM( EA,D ); } /* SET 0,D=(XY+o) */ -OP(xycb,c3) { E = SET(0, RM(EA) ); WM( EA,E ); } /* SET 0,E=(XY+o) */ -OP(xycb,c4) { H = SET(0, RM(EA) ); WM( EA,H ); } /* SET 0,H=(XY+o) */ -OP(xycb,c5) { L = SET(0, RM(EA) ); WM( EA,L ); } /* SET 0,L=(XY+o) */ -OP(xycb,c6) { WM( EA, SET(0,RM(EA)) ); } /* SET 0,(XY+o) */ -OP(xycb,c7) { A = SET(0, RM(EA) ); WM( EA,A ); } /* SET 0,A=(XY+o) */ - -OP(xycb,c8) { B = SET(1, RM(EA) ); WM( EA,B ); } /* SET 1,B=(XY+o) */ -OP(xycb,c9) { C = SET(1, RM(EA) ); WM( EA,C ); } /* SET 1,C=(XY+o) */ -OP(xycb,ca) { D = SET(1, RM(EA) ); WM( EA,D ); } /* SET 1,D=(XY+o) */ -OP(xycb,cb) { E = SET(1, RM(EA) ); WM( EA,E ); } /* SET 1,E=(XY+o) */ -OP(xycb,cc) { H = SET(1, RM(EA) ); WM( EA,H ); } /* SET 1,H=(XY+o) */ -OP(xycb,cd) { L = SET(1, RM(EA) ); WM( EA,L ); } /* SET 1,L=(XY+o) */ -OP(xycb,ce) { WM( EA, SET(1,RM(EA)) ); } /* SET 1,(XY+o) */ -OP(xycb,cf) { A = SET(1, RM(EA) ); WM( EA,A ); } /* SET 1,A=(XY+o) */ - -OP(xycb,d0) { B = SET(2, RM(EA) ); WM( EA,B ); } /* SET 2,B=(XY+o) */ -OP(xycb,d1) { C = SET(2, RM(EA) ); WM( EA,C ); } /* SET 2,C=(XY+o) */ -OP(xycb,d2) { D = SET(2, RM(EA) ); WM( EA,D ); } /* SET 2,D=(XY+o) */ -OP(xycb,d3) { E = SET(2, RM(EA) ); WM( EA,E ); } /* SET 2,E=(XY+o) */ -OP(xycb,d4) { H = SET(2, RM(EA) ); WM( EA,H ); } /* SET 2,H=(XY+o) */ -OP(xycb,d5) { L = SET(2, RM(EA) ); WM( EA,L ); } /* SET 2,L=(XY+o) */ -OP(xycb,d6) { WM( EA, SET(2,RM(EA)) ); } /* SET 2,(XY+o) */ -OP(xycb,d7) { A = SET(2, RM(EA) ); WM( EA,A ); } /* SET 2,A=(XY+o) */ - -OP(xycb,d8) { B = SET(3, RM(EA) ); WM( EA,B ); } /* SET 3,B=(XY+o) */ -OP(xycb,d9) { C = SET(3, RM(EA) ); WM( EA,C ); } /* SET 3,C=(XY+o) */ -OP(xycb,da) { D = SET(3, RM(EA) ); WM( EA,D ); } /* SET 3,D=(XY+o) */ -OP(xycb,db) { E = SET(3, RM(EA) ); WM( EA,E ); } /* SET 3,E=(XY+o) */ -OP(xycb,dc) { H = SET(3, RM(EA) ); WM( EA,H ); } /* SET 3,H=(XY+o) */ -OP(xycb,dd) { L = SET(3, RM(EA) ); WM( EA,L ); } /* SET 3,L=(XY+o) */ -OP(xycb,de) { WM( EA, SET(3,RM(EA)) ); } /* SET 3,(XY+o) */ -OP(xycb,df) { A = SET(3, RM(EA) ); WM( EA,A ); } /* SET 3,A=(XY+o) */ - -OP(xycb,e0) { B = SET(4, RM(EA) ); WM( EA,B ); } /* SET 4,B=(XY+o) */ -OP(xycb,e1) { C = SET(4, RM(EA) ); WM( EA,C ); } /* SET 4,C=(XY+o) */ -OP(xycb,e2) { D = SET(4, RM(EA) ); WM( EA,D ); } /* SET 4,D=(XY+o) */ -OP(xycb,e3) { E = SET(4, RM(EA) ); WM( EA,E ); } /* SET 4,E=(XY+o) */ -OP(xycb,e4) { H = SET(4, RM(EA) ); WM( EA,H ); } /* SET 4,H=(XY+o) */ -OP(xycb,e5) { L = SET(4, RM(EA) ); WM( EA,L ); } /* SET 4,L=(XY+o) */ -OP(xycb,e6) { WM( EA, SET(4,RM(EA)) ); } /* SET 4,(XY+o) */ -OP(xycb,e7) { A = SET(4, RM(EA) ); WM( EA,A ); } /* SET 4,A=(XY+o) */ - -OP(xycb,e8) { B = SET(5, RM(EA) ); WM( EA,B ); } /* SET 5,B=(XY+o) */ -OP(xycb,e9) { C = SET(5, RM(EA) ); WM( EA,C ); } /* SET 5,C=(XY+o) */ -OP(xycb,ea) { D = SET(5, RM(EA) ); WM( EA,D ); } /* SET 5,D=(XY+o) */ -OP(xycb,eb) { E = SET(5, RM(EA) ); WM( EA,E ); } /* SET 5,E=(XY+o) */ -OP(xycb,ec) { H = SET(5, RM(EA) ); WM( EA,H ); } /* SET 5,H=(XY+o) */ -OP(xycb,ed) { L = SET(5, RM(EA) ); WM( EA,L ); } /* SET 5,L=(XY+o) */ -OP(xycb,ee) { WM( EA, SET(5,RM(EA)) ); } /* SET 5,(XY+o) */ -OP(xycb,ef) { A = SET(5, RM(EA) ); WM( EA,A ); } /* SET 5,A=(XY+o) */ - -OP(xycb,f0) { B = SET(6, RM(EA) ); WM( EA,B ); } /* SET 6,B=(XY+o) */ -OP(xycb,f1) { C = SET(6, RM(EA) ); WM( EA,C ); } /* SET 6,C=(XY+o) */ -OP(xycb,f2) { D = SET(6, RM(EA) ); WM( EA,D ); } /* SET 6,D=(XY+o) */ -OP(xycb,f3) { E = SET(6, RM(EA) ); WM( EA,E ); } /* SET 6,E=(XY+o) */ -OP(xycb,f4) { H = SET(6, RM(EA) ); WM( EA,H ); } /* SET 6,H=(XY+o) */ -OP(xycb,f5) { L = SET(6, RM(EA) ); WM( EA,L ); } /* SET 6,L=(XY+o) */ -OP(xycb,f6) { WM( EA, SET(6,RM(EA)) ); } /* SET 6,(XY+o) */ -OP(xycb,f7) { A = SET(6, RM(EA) ); WM( EA,A ); } /* SET 6,A=(XY+o) */ - -OP(xycb,f8) { B = SET(7, RM(EA) ); WM( EA,B ); } /* SET 7,B=(XY+o) */ -OP(xycb,f9) { C = SET(7, RM(EA) ); WM( EA,C ); } /* SET 7,C=(XY+o) */ -OP(xycb,fa) { D = SET(7, RM(EA) ); WM( EA,D ); } /* SET 7,D=(XY+o) */ -OP(xycb,fb) { E = SET(7, RM(EA) ); WM( EA,E ); } /* SET 7,E=(XY+o) */ -OP(xycb,fc) { H = SET(7, RM(EA) ); WM( EA,H ); } /* SET 7,H=(XY+o) */ -OP(xycb,fd) { L = SET(7, RM(EA) ); WM( EA,L ); } /* SET 7,L=(XY+o) */ -OP(xycb,fe) { WM( EA, SET(7,RM(EA)) ); } /* SET 7,(XY+o) */ -OP(xycb,ff) { A = SET(7, RM(EA) ); WM( EA,A ); } /* SET 7,A=(XY+o) */ - -OP(illegal,1) { -#if VERBOSE - logerror("Z80 #%d ill. opcode $%02x $%02x\n", - cpu_getactivecpu(), cpu_readop((PCD-1)&0xffff), cpu_readop(PCD)); -#endif -} -/********************************************************** - * IX register related opcodes (DD prefix) - **********************************************************/ -OP(dd,00) { illegal_1(); op_00(); } /* DB DD */ -OP(dd,01) { illegal_1(); op_01(); } /* DB DD */ -OP(dd,02) { illegal_1(); op_02(); } /* DB DD */ -OP(dd,03) { illegal_1(); op_03(); } /* DB DD */ -OP(dd,04) { illegal_1(); op_04(); } /* DB DD */ -OP(dd,05) { illegal_1(); op_05(); } /* DB DD */ -OP(dd,06) { illegal_1(); op_06(); } /* DB DD */ -OP(dd,07) { illegal_1(); op_07(); } /* DB DD */ - -OP(dd,08) { illegal_1(); op_08(); } /* DB DD */ -OP(dd,09) { ADD16(ix,bc); } /* ADD IX,BC */ -OP(dd,0a) { illegal_1(); op_0a(); } /* DB DD */ -OP(dd,0b) { illegal_1(); op_0b(); } /* DB DD */ -OP(dd,0c) { illegal_1(); op_0c(); } /* DB DD */ -OP(dd,0d) { illegal_1(); op_0d(); } /* DB DD */ -OP(dd,0e) { illegal_1(); op_0e(); } /* DB DD */ -OP(dd,0f) { illegal_1(); op_0f(); } /* DB DD */ - -OP(dd,10) { illegal_1(); op_10(); } /* DB DD */ -OP(dd,11) { illegal_1(); op_11(); } /* DB DD */ -OP(dd,12) { illegal_1(); op_12(); } /* DB DD */ -OP(dd,13) { illegal_1(); op_13(); } /* DB DD */ -OP(dd,14) { illegal_1(); op_14(); } /* DB DD */ -OP(dd,15) { illegal_1(); op_15(); } /* DB DD */ -OP(dd,16) { illegal_1(); op_16(); } /* DB DD */ -OP(dd,17) { illegal_1(); op_17(); } /* DB DD */ - -OP(dd,18) { illegal_1(); op_18(); } /* DB DD */ -OP(dd,19) { ADD16(ix,de); } /* ADD IX,DE */ -OP(dd,1a) { illegal_1(); op_1a(); } /* DB DD */ -OP(dd,1b) { illegal_1(); op_1b(); } /* DB DD */ -OP(dd,1c) { illegal_1(); op_1c(); } /* DB DD */ -OP(dd,1d) { illegal_1(); op_1d(); } /* DB DD */ -OP(dd,1e) { illegal_1(); op_1e(); } /* DB DD */ -OP(dd,1f) { illegal_1(); op_1f(); } /* DB DD */ - -OP(dd,20) { illegal_1(); op_20(); } /* DB DD */ -OP(dd,21) { IX = ARG16(); } /* LD IX,w */ -OP(dd,22) { EA = ARG16(); WM16( EA, &Z80.ix ); WZ = EA+1; } /* LD (w),IX */ -OP(dd,23) { IX++; } /* INC IX */ -OP(dd,24) { HX = INC(HX); } /* INC HX */ -OP(dd,25) { HX = DEC(HX); } /* DEC HX */ -OP(dd,26) { HX = ARG(); } /* LD HX,n */ -OP(dd,27) { illegal_1(); op_27(); } /* DB DD */ - -OP(dd,28) { illegal_1(); op_28(); } /* DB DD */ -OP(dd,29) { ADD16(ix,ix); } /* ADD IX,IX */ -OP(dd,2a) { EA = ARG16(); RM16( EA, &Z80.ix ); WZ = EA+1; } /* LD IX,(w) */ -OP(dd,2b) { IX--; } /* DEC IX */ -OP(dd,2c) { LX = INC(LX); } /* INC LX */ -OP(dd,2d) { LX = DEC(LX); } /* DEC LX */ -OP(dd,2e) { LX = ARG(); } /* LD LX,n */ -OP(dd,2f) { illegal_1(); op_2f(); } /* DB DD */ - -OP(dd,30) { illegal_1(); op_30(); } /* DB DD */ -OP(dd,31) { illegal_1(); op_31(); } /* DB DD */ -OP(dd,32) { illegal_1(); op_32(); } /* DB DD */ -OP(dd,33) { illegal_1(); op_33(); } /* DB DD */ -OP(dd,34) { EAX; WM( EA, INC(RM(EA)) ); } /* INC (IX+o) */ -OP(dd,35) { EAX; WM( EA, DEC(RM(EA)) ); } /* DEC (IX+o) */ -OP(dd,36) { EAX; WM( EA, ARG() ); } /* LD (IX+o),n */ -OP(dd,37) { illegal_1(); op_37(); } /* DB DD */ - -OP(dd,38) { illegal_1(); op_38(); } /* DB DD */ -OP(dd,39) { ADD16(ix,sp); } /* ADD IX,SP */ -OP(dd,3a) { illegal_1(); op_3a(); } /* DB DD */ -OP(dd,3b) { illegal_1(); op_3b(); } /* DB DD */ -OP(dd,3c) { illegal_1(); op_3c(); } /* DB DD */ -OP(dd,3d) { illegal_1(); op_3d(); } /* DB DD */ -OP(dd,3e) { illegal_1(); op_3e(); } /* DB DD */ -OP(dd,3f) { illegal_1(); op_3f(); } /* DB DD */ - -OP(dd,40) { illegal_1(); op_40(); } /* DB DD */ -OP(dd,41) { illegal_1(); op_41(); } /* DB DD */ -OP(dd,42) { illegal_1(); op_42(); } /* DB DD */ -OP(dd,43) { illegal_1(); op_43(); } /* DB DD */ -OP(dd,44) { B = HX; } /* LD B,HX */ -OP(dd,45) { B = LX; } /* LD B,LX */ -OP(dd,46) { EAX; B = RM(EA); } /* LD B,(IX+o) */ -OP(dd,47) { illegal_1(); op_47(); } /* DB DD */ - -OP(dd,48) { illegal_1(); op_48(); } /* DB DD */ -OP(dd,49) { illegal_1(); op_49(); } /* DB DD */ -OP(dd,4a) { illegal_1(); op_4a(); } /* DB DD */ -OP(dd,4b) { illegal_1(); op_4b(); } /* DB DD */ -OP(dd,4c) { C = HX; } /* LD C,HX */ -OP(dd,4d) { C = LX; } /* LD C,LX */ -OP(dd,4e) { EAX; C = RM(EA); } /* LD C,(IX+o) */ -OP(dd,4f) { illegal_1(); op_4f(); } /* DB DD */ - -OP(dd,50) { illegal_1(); op_50(); } /* DB DD */ -OP(dd,51) { illegal_1(); op_51(); } /* DB DD */ -OP(dd,52) { illegal_1(); op_52(); } /* DB DD */ -OP(dd,53) { illegal_1(); op_53(); } /* DB DD */ -OP(dd,54) { D = HX; } /* LD D,HX */ -OP(dd,55) { D = LX; } /* LD D,LX */ -OP(dd,56) { EAX; D = RM(EA); } /* LD D,(IX+o) */ -OP(dd,57) { illegal_1(); op_57(); } /* DB DD */ - -OP(dd,58) { illegal_1(); op_58(); } /* DB DD */ -OP(dd,59) { illegal_1(); op_59(); } /* DB DD */ -OP(dd,5a) { illegal_1(); op_5a(); } /* DB DD */ -OP(dd,5b) { illegal_1(); op_5b(); } /* DB DD */ -OP(dd,5c) { E = HX; } /* LD E,HX */ -OP(dd,5d) { E = LX; } /* LD E,LX */ -OP(dd,5e) { EAX; E = RM(EA); } /* LD E,(IX+o) */ -OP(dd,5f) { illegal_1(); op_5f(); } /* DB DD */ - -OP(dd,60) { HX = B; } /* LD HX,B */ -OP(dd,61) { HX = C; } /* LD HX,C */ -OP(dd,62) { HX = D; } /* LD HX,D */ -OP(dd,63) { HX = E; } /* LD HX,E */ -OP(dd,64) { } /* LD HX,HX */ -OP(dd,65) { HX = LX; } /* LD HX,LX */ -OP(dd,66) { EAX; H = RM(EA); } /* LD H,(IX+o) */ -OP(dd,67) { HX = A; } /* LD HX,A */ - -OP(dd,68) { LX = B; } /* LD LX,B */ -OP(dd,69) { LX = C; } /* LD LX,C */ -OP(dd,6a) { LX = D; } /* LD LX,D */ -OP(dd,6b) { LX = E; } /* LD LX,E */ -OP(dd,6c) { LX = HX; } /* LD LX,HX */ -OP(dd,6d) { } /* LD LX,LX */ -OP(dd,6e) { EAX; L = RM(EA); } /* LD L,(IX+o) */ -OP(dd,6f) { LX = A; } /* LD LX,A */ - -OP(dd,70) { EAX; WM( EA, B ); } /* LD (IX+o),B */ -OP(dd,71) { EAX; WM( EA, C ); } /* LD (IX+o),C */ -OP(dd,72) { EAX; WM( EA, D ); } /* LD (IX+o),D */ -OP(dd,73) { EAX; WM( EA, E ); } /* LD (IX+o),E */ -OP(dd,74) { EAX; WM( EA, H ); } /* LD (IX+o),H */ -OP(dd,75) { EAX; WM( EA, L ); } /* LD (IX+o),L */ -OP(dd,76) { illegal_1(); op_76(); } /* DB DD */ -OP(dd,77) { EAX; WM( EA, A ); } /* LD (IX+o),A */ - -OP(dd,78) { illegal_1(); op_78(); } /* DB DD */ -OP(dd,79) { illegal_1(); op_79(); } /* DB DD */ -OP(dd,7a) { illegal_1(); op_7a(); } /* DB DD */ -OP(dd,7b) { illegal_1(); op_7b(); } /* DB DD */ -OP(dd,7c) { A = HX; } /* LD A,HX */ -OP(dd,7d) { A = LX; } /* LD A,LX */ -OP(dd,7e) { EAX; A = RM(EA); } /* LD A,(IX+o) */ -OP(dd,7f) { illegal_1(); op_7f(); } /* DB DD */ - -OP(dd,80) { illegal_1(); op_80(); } /* DB DD */ -OP(dd,81) { illegal_1(); op_81(); } /* DB DD */ -OP(dd,82) { illegal_1(); op_82(); } /* DB DD */ -OP(dd,83) { illegal_1(); op_83(); } /* DB DD */ -OP(dd,84) { ADD(HX); } /* ADD A,HX */ -OP(dd,85) { ADD(LX); } /* ADD A,LX */ -OP(dd,86) { EAX; ADD(RM(EA)); } /* ADD A,(IX+o) */ -OP(dd,87) { illegal_1(); op_87(); } /* DB DD */ - -OP(dd,88) { illegal_1(); op_88(); } /* DB DD */ -OP(dd,89) { illegal_1(); op_89(); } /* DB DD */ -OP(dd,8a) { illegal_1(); op_8a(); } /* DB DD */ -OP(dd,8b) { illegal_1(); op_8b(); } /* DB DD */ -OP(dd,8c) { ADC(HX); } /* ADC A,HX */ -OP(dd,8d) { ADC(LX); } /* ADC A,LX */ -OP(dd,8e) { EAX; ADC(RM(EA)); } /* ADC A,(IX+o) */ -OP(dd,8f) { illegal_1(); op_8f(); } /* DB DD */ - -OP(dd,90) { illegal_1(); op_90(); } /* DB DD */ -OP(dd,91) { illegal_1(); op_91(); } /* DB DD */ -OP(dd,92) { illegal_1(); op_92(); } /* DB DD */ -OP(dd,93) { illegal_1(); op_93(); } /* DB DD */ -OP(dd,94) { SUB(HX); } /* SUB HX */ -OP(dd,95) { SUB(LX); } /* SUB LX */ -OP(dd,96) { EAX; SUB(RM(EA)); } /* SUB (IX+o) */ -OP(dd,97) { illegal_1(); op_97(); } /* DB DD */ - -OP(dd,98) { illegal_1(); op_98(); } /* DB DD */ -OP(dd,99) { illegal_1(); op_99(); } /* DB DD */ -OP(dd,9a) { illegal_1(); op_9a(); } /* DB DD */ -OP(dd,9b) { illegal_1(); op_9b(); } /* DB DD */ -OP(dd,9c) { SBC(HX); } /* SBC A,HX */ -OP(dd,9d) { SBC(LX); } /* SBC A,LX */ -OP(dd,9e) { EAX; SBC(RM(EA)); } /* SBC A,(IX+o) */ -OP(dd,9f) { illegal_1(); op_9f(); } /* DB DD */ - -OP(dd,a0) { illegal_1(); op_a0(); } /* DB DD */ -OP(dd,a1) { illegal_1(); op_a1(); } /* DB DD */ -OP(dd,a2) { illegal_1(); op_a2(); } /* DB DD */ -OP(dd,a3) { illegal_1(); op_a3(); } /* DB DD */ -OP(dd,a4) { AND(HX); } /* AND HX */ -OP(dd,a5) { AND(LX); } /* AND LX */ -OP(dd,a6) { EAX; AND(RM(EA)); } /* AND (IX+o) */ -OP(dd,a7) { illegal_1(); op_a7(); } /* DB DD */ - -OP(dd,a8) { illegal_1(); op_a8(); } /* DB DD */ -OP(dd,a9) { illegal_1(); op_a9(); } /* DB DD */ -OP(dd,aa) { illegal_1(); op_aa(); } /* DB DD */ -OP(dd,ab) { illegal_1(); op_ab(); } /* DB DD */ -OP(dd,ac) { XOR(HX); } /* XOR HX */ -OP(dd,ad) { XOR(LX); } /* XOR LX */ -OP(dd,ae) { EAX; XOR(RM(EA)); } /* XOR (IX+o) */ -OP(dd,af) { illegal_1(); op_af(); } /* DB DD */ - -OP(dd,b0) { illegal_1(); op_b0(); } /* DB DD */ -OP(dd,b1) { illegal_1(); op_b1(); } /* DB DD */ -OP(dd,b2) { illegal_1(); op_b2(); } /* DB DD */ -OP(dd,b3) { illegal_1(); op_b3(); } /* DB DD */ -OP(dd,b4) { OR(HX); } /* OR HX */ -OP(dd,b5) { OR(LX); } /* OR LX */ -OP(dd,b6) { EAX; OR(RM(EA)); } /* OR (IX+o) */ -OP(dd,b7) { illegal_1(); op_b7(); } /* DB DD */ - -OP(dd,b8) { illegal_1(); op_b8(); } /* DB DD */ -OP(dd,b9) { illegal_1(); op_b9(); } /* DB DD */ -OP(dd,ba) { illegal_1(); op_ba(); } /* DB DD */ -OP(dd,bb) { illegal_1(); op_bb(); } /* DB DD */ -OP(dd,bc) { CP(HX); } /* CP HX */ -OP(dd,bd) { CP(LX); } /* CP LX */ -OP(dd,be) { EAX; CP(RM(EA)); } /* CP (IX+o) */ -OP(dd,bf) { illegal_1(); op_bf(); } /* DB DD */ - -OP(dd,c0) { illegal_1(); op_c0(); } /* DB DD */ -OP(dd,c1) { illegal_1(); op_c1(); } /* DB DD */ -OP(dd,c2) { illegal_1(); op_c2(); } /* DB DD */ -OP(dd,c3) { illegal_1(); op_c3(); } /* DB DD */ -OP(dd,c4) { illegal_1(); op_c4(); } /* DB DD */ -OP(dd,c5) { illegal_1(); op_c5(); } /* DB DD */ -OP(dd,c6) { illegal_1(); op_c6(); } /* DB DD */ -OP(dd,c7) { illegal_1(); op_c7(); } /* DB DD */ - -OP(dd,c8) { illegal_1(); op_c8(); } /* DB DD */ -OP(dd,c9) { illegal_1(); op_c9(); } /* DB DD */ -OP(dd,ca) { illegal_1(); op_ca(); } /* DB DD */ -OP(dd,cb) { EAX; EXEC(xycb,ARG()); } /* **** DD CB xx */ -OP(dd,cc) { illegal_1(); op_cc(); } /* DB DD */ -OP(dd,cd) { illegal_1(); op_cd(); } /* DB DD */ -OP(dd,ce) { illegal_1(); op_ce(); } /* DB DD */ -OP(dd,cf) { illegal_1(); op_cf(); } /* DB DD */ - -OP(dd,d0) { illegal_1(); op_d0(); } /* DB DD */ -OP(dd,d1) { illegal_1(); op_d1(); } /* DB DD */ -OP(dd,d2) { illegal_1(); op_d2(); } /* DB DD */ -OP(dd,d3) { illegal_1(); op_d3(); } /* DB DD */ -OP(dd,d4) { illegal_1(); op_d4(); } /* DB DD */ -OP(dd,d5) { illegal_1(); op_d5(); } /* DB DD */ -OP(dd,d6) { illegal_1(); op_d6(); } /* DB DD */ -OP(dd,d7) { illegal_1(); op_d7(); } /* DB DD */ - -OP(dd,d8) { illegal_1(); op_d8(); } /* DB DD */ -OP(dd,d9) { illegal_1(); op_d9(); } /* DB DD */ -OP(dd,da) { illegal_1(); op_da(); } /* DB DD */ -OP(dd,db) { illegal_1(); op_db(); } /* DB DD */ -OP(dd,dc) { illegal_1(); op_dc(); } /* DB DD */ -OP(dd,dd) { EXEC(dd,ROP()); } /* **** DD DD xx */ -OP(dd,de) { illegal_1(); op_de(); } /* DB DD */ -OP(dd,df) { illegal_1(); op_df(); } /* DB DD */ - -OP(dd,e0) { illegal_1(); op_e0(); } /* DB DD */ -OP(dd,e1) { POP( ix ); } /* POP IX */ -OP(dd,e2) { illegal_1(); op_e2(); } /* DB DD */ -OP(dd,e3) { EXSP( ix ); } /* EX (SP),IX */ -OP(dd,e4) { illegal_1(); op_e4(); } /* DB DD */ -OP(dd,e5) { PUSH( ix ); } /* PUSH IX */ -OP(dd,e6) { illegal_1(); op_e6(); } /* DB DD */ -OP(dd,e7) { illegal_1(); op_e7(); } /* DB DD */ - -OP(dd,e8) { illegal_1(); op_e8(); } /* DB DD */ -OP(dd,e9) { PC = IX; } /* JP (IX) */ -OP(dd,ea) { illegal_1(); op_ea(); } /* DB DD */ -OP(dd,eb) { illegal_1(); op_eb(); } /* DB DD */ -OP(dd,ec) { illegal_1(); op_ec(); } /* DB DD */ -OP(dd,ed) { illegal_1(); op_ed(); } /* DB DD */ -OP(dd,ee) { illegal_1(); op_ee(); } /* DB DD */ -OP(dd,ef) { illegal_1(); op_ef(); } /* DB DD */ - -OP(dd,f0) { illegal_1(); op_f0(); } /* DB DD */ -OP(dd,f1) { illegal_1(); op_f1(); } /* DB DD */ -OP(dd,f2) { illegal_1(); op_f2(); } /* DB DD */ -OP(dd,f3) { illegal_1(); op_f3(); } /* DB DD */ -OP(dd,f4) { illegal_1(); op_f4(); } /* DB DD */ -OP(dd,f5) { illegal_1(); op_f5(); } /* DB DD */ -OP(dd,f6) { illegal_1(); op_f6(); } /* DB DD */ -OP(dd,f7) { illegal_1(); op_f7(); } /* DB DD */ - -OP(dd,f8) { illegal_1(); op_f8(); } /* DB DD */ -OP(dd,f9) { SP = IX; } /* LD SP,IX */ -OP(dd,fa) { illegal_1(); op_fa(); } /* DB DD */ -OP(dd,fb) { illegal_1(); op_fb(); } /* DB DD */ -OP(dd,fc) { illegal_1(); op_fc(); } /* DB DD */ -OP(dd,fd) { EXEC(fd,ROP()); } /* **** DD FD xx */ -OP(dd,fe) { illegal_1(); op_fe(); } /* DB DD */ -OP(dd,ff) { illegal_1(); op_ff(); } /* DB DD */ - -/********************************************************** - * IY register related opcodes (FD prefix) - **********************************************************/ -OP(fd,00) { illegal_1(); op_00(); } /* DB FD */ -OP(fd,01) { illegal_1(); op_01(); } /* DB FD */ -OP(fd,02) { illegal_1(); op_02(); } /* DB FD */ -OP(fd,03) { illegal_1(); op_03(); } /* DB FD */ -OP(fd,04) { illegal_1(); op_04(); } /* DB FD */ -OP(fd,05) { illegal_1(); op_05(); } /* DB FD */ -OP(fd,06) { illegal_1(); op_06(); } /* DB FD */ -OP(fd,07) { illegal_1(); op_07(); } /* DB FD */ - -OP(fd,08) { illegal_1(); op_08(); } /* DB FD */ -OP(fd,09) { ADD16(iy,bc); } /* ADD IY,BC */ -OP(fd,0a) { illegal_1(); op_0a(); } /* DB FD */ -OP(fd,0b) { illegal_1(); op_0b(); } /* DB FD */ -OP(fd,0c) { illegal_1(); op_0c(); } /* DB FD */ -OP(fd,0d) { illegal_1(); op_0d(); } /* DB FD */ -OP(fd,0e) { illegal_1(); op_0e(); } /* DB FD */ -OP(fd,0f) { illegal_1(); op_0f(); } /* DB FD */ - -OP(fd,10) { illegal_1(); op_10(); } /* DB FD */ -OP(fd,11) { illegal_1(); op_11(); } /* DB FD */ -OP(fd,12) { illegal_1(); op_12(); } /* DB FD */ -OP(fd,13) { illegal_1(); op_13(); } /* DB FD */ -OP(fd,14) { illegal_1(); op_14(); } /* DB FD */ -OP(fd,15) { illegal_1(); op_15(); } /* DB FD */ -OP(fd,16) { illegal_1(); op_16(); } /* DB FD */ -OP(fd,17) { illegal_1(); op_17(); } /* DB FD */ - -OP(fd,18) { illegal_1(); op_18(); } /* DB FD */ -OP(fd,19) { ADD16(iy,de); } /* ADD IY,DE */ -OP(fd,1a) { illegal_1(); op_1a(); } /* DB FD */ -OP(fd,1b) { illegal_1(); op_1b(); } /* DB FD */ -OP(fd,1c) { illegal_1(); op_1c(); } /* DB FD */ -OP(fd,1d) { illegal_1(); op_1d(); } /* DB FD */ -OP(fd,1e) { illegal_1(); op_1e(); } /* DB FD */ -OP(fd,1f) { illegal_1(); op_1f(); } /* DB FD */ - -OP(fd,20) { illegal_1(); op_20(); } /* DB FD */ -OP(fd,21) { IY = ARG16(); } /* LD IY,w */ -OP(fd,22) { EA = ARG16(); WM16( EA, &Z80.iy ); WZ = EA+1; } /* LD (w),IY */ -OP(fd,23) { IY++; } /* INC IY */ -OP(fd,24) { HY = INC(HY); } /* INC HY */ -OP(fd,25) { HY = DEC(HY); } /* DEC HY */ -OP(fd,26) { HY = ARG(); } /* LD HY,n */ -OP(fd,27) { illegal_1(); op_27(); } /* DB FD */ - -OP(fd,28) { illegal_1(); op_28(); } /* DB FD */ -OP(fd,29) { ADD16(iy,iy); } /* ADD IY,IY */ -OP(fd,2a) { EA = ARG16(); RM16( EA, &Z80.iy ); WZ = EA+1; } /* LD IY,(w) */ -OP(fd,2b) { IY--; } /* DEC IY */ -OP(fd,2c) { LY = INC(LY); } /* INC LY */ -OP(fd,2d) { LY = DEC(LY); } /* DEC LY */ -OP(fd,2e) { LY = ARG(); } /* LD LY,n */ -OP(fd,2f) { illegal_1(); op_2f(); } /* DB FD */ - -OP(fd,30) { illegal_1(); op_30(); } /* DB FD */ -OP(fd,31) { illegal_1(); op_31(); } /* DB FD */ -OP(fd,32) { illegal_1(); op_32(); } /* DB FD */ -OP(fd,33) { illegal_1(); op_33(); } /* DB FD */ -OP(fd,34) { EAY; WM( EA, INC(RM(EA)) ); } /* INC (IY+o) */ -OP(fd,35) { EAY; WM( EA, DEC(RM(EA)) ); } /* DEC (IY+o) */ -OP(fd,36) { EAY; WM( EA, ARG() ); } /* LD (IY+o),n */ -OP(fd,37) { illegal_1(); op_37(); } /* DB FD */ - -OP(fd,38) { illegal_1(); op_38(); } /* DB FD */ -OP(fd,39) { ADD16(iy,sp); } /* ADD IY,SP */ -OP(fd,3a) { illegal_1(); op_3a(); } /* DB FD */ -OP(fd,3b) { illegal_1(); op_3b(); } /* DB FD */ -OP(fd,3c) { illegal_1(); op_3c(); } /* DB FD */ -OP(fd,3d) { illegal_1(); op_3d(); } /* DB FD */ -OP(fd,3e) { illegal_1(); op_3e(); } /* DB FD */ -OP(fd,3f) { illegal_1(); op_3f(); } /* DB FD */ - -OP(fd,40) { illegal_1(); op_40(); } /* DB FD */ -OP(fd,41) { illegal_1(); op_41(); } /* DB FD */ -OP(fd,42) { illegal_1(); op_42(); } /* DB FD */ -OP(fd,43) { illegal_1(); op_43(); } /* DB FD */ -OP(fd,44) { B = HY; } /* LD B,HY */ -OP(fd,45) { B = LY; } /* LD B,LY */ -OP(fd,46) { EAY; B = RM(EA); } /* LD B,(IY+o) */ -OP(fd,47) { illegal_1(); op_47(); } /* DB FD */ - -OP(fd,48) { illegal_1(); op_48(); } /* DB FD */ -OP(fd,49) { illegal_1(); op_49(); } /* DB FD */ -OP(fd,4a) { illegal_1(); op_4a(); } /* DB FD */ -OP(fd,4b) { illegal_1(); op_4b(); } /* DB FD */ -OP(fd,4c) { C = HY; } /* LD C,HY */ -OP(fd,4d) { C = LY; } /* LD C,LY */ -OP(fd,4e) { EAY; C = RM(EA); } /* LD C,(IY+o) */ -OP(fd,4f) { illegal_1(); op_4f(); } /* DB FD */ - -OP(fd,50) { illegal_1(); op_50(); } /* DB FD */ -OP(fd,51) { illegal_1(); op_51(); } /* DB FD */ -OP(fd,52) { illegal_1(); op_52(); } /* DB FD */ -OP(fd,53) { illegal_1(); op_53(); } /* DB FD */ -OP(fd,54) { D = HY; } /* LD D,HY */ -OP(fd,55) { D = LY; } /* LD D,LY */ -OP(fd,56) { EAY; D = RM(EA); } /* LD D,(IY+o) */ -OP(fd,57) { illegal_1(); op_57(); } /* DB FD */ - -OP(fd,58) { illegal_1(); op_58(); } /* DB FD */ -OP(fd,59) { illegal_1(); op_59(); } /* DB FD */ -OP(fd,5a) { illegal_1(); op_5a(); } /* DB FD */ -OP(fd,5b) { illegal_1(); op_5b(); } /* DB FD */ -OP(fd,5c) { E = HY; } /* LD E,HY */ -OP(fd,5d) { E = LY; } /* LD E,LY */ -OP(fd,5e) { EAY; E = RM(EA); } /* LD E,(IY+o) */ -OP(fd,5f) { illegal_1(); op_5f(); } /* DB FD */ - -OP(fd,60) { HY = B; } /* LD HY,B */ -OP(fd,61) { HY = C; } /* LD HY,C */ -OP(fd,62) { HY = D; } /* LD HY,D */ -OP(fd,63) { HY = E; } /* LD HY,E */ -OP(fd,64) { } /* LD HY,HY */ -OP(fd,65) { HY = LY; } /* LD HY,LY */ -OP(fd,66) { EAY; H = RM(EA); } /* LD H,(IY+o) */ -OP(fd,67) { HY = A; } /* LD HY,A */ - -OP(fd,68) { LY = B; } /* LD LY,B */ -OP(fd,69) { LY = C; } /* LD LY,C */ -OP(fd,6a) { LY = D; } /* LD LY,D */ -OP(fd,6b) { LY = E; } /* LD LY,E */ -OP(fd,6c) { LY = HY; } /* LD LY,HY */ -OP(fd,6d) { } /* LD LY,LY */ -OP(fd,6e) { EAY; L = RM(EA); } /* LD L,(IY+o) */ -OP(fd,6f) { LY = A; } /* LD LY,A */ - -OP(fd,70) { EAY; WM( EA, B ); } /* LD (IY+o),B */ -OP(fd,71) { EAY; WM( EA, C ); } /* LD (IY+o),C */ -OP(fd,72) { EAY; WM( EA, D ); } /* LD (IY+o),D */ -OP(fd,73) { EAY; WM( EA, E ); } /* LD (IY+o),E */ -OP(fd,74) { EAY; WM( EA, H ); } /* LD (IY+o),H */ -OP(fd,75) { EAY; WM( EA, L ); } /* LD (IY+o),L */ -OP(fd,76) { illegal_1(); op_76(); } /* DB FD */ -OP(fd,77) { EAY; WM( EA, A ); } /* LD (IY+o),A */ - -OP(fd,78) { illegal_1(); op_78(); } /* DB FD */ -OP(fd,79) { illegal_1(); op_79(); } /* DB FD */ -OP(fd,7a) { illegal_1(); op_7a(); } /* DB FD */ -OP(fd,7b) { illegal_1(); op_7b(); } /* DB FD */ -OP(fd,7c) { A = HY; } /* LD A,HY */ -OP(fd,7d) { A = LY; } /* LD A,LY */ -OP(fd,7e) { EAY; A = RM(EA); } /* LD A,(IY+o) */ -OP(fd,7f) { illegal_1(); op_7f(); } /* DB FD */ - -OP(fd,80) { illegal_1(); op_80(); } /* DB FD */ -OP(fd,81) { illegal_1(); op_81(); } /* DB FD */ -OP(fd,82) { illegal_1(); op_82(); } /* DB FD */ -OP(fd,83) { illegal_1(); op_83(); } /* DB FD */ -OP(fd,84) { ADD(HY); } /* ADD A,HY */ -OP(fd,85) { ADD(LY); } /* ADD A,LY */ -OP(fd,86) { EAY; ADD(RM(EA)); } /* ADD A,(IY+o) */ -OP(fd,87) { illegal_1(); op_87(); } /* DB FD */ - -OP(fd,88) { illegal_1(); op_88(); } /* DB FD */ -OP(fd,89) { illegal_1(); op_89(); } /* DB FD */ -OP(fd,8a) { illegal_1(); op_8a(); } /* DB FD */ -OP(fd,8b) { illegal_1(); op_8b(); } /* DB FD */ -OP(fd,8c) { ADC(HY); } /* ADC A,HY */ -OP(fd,8d) { ADC(LY); } /* ADC A,LY */ -OP(fd,8e) { EAY; ADC(RM(EA)); } /* ADC A,(IY+o) */ -OP(fd,8f) { illegal_1(); op_8f(); } /* DB FD */ - -OP(fd,90) { illegal_1(); op_90(); } /* DB FD */ -OP(fd,91) { illegal_1(); op_91(); } /* DB FD */ -OP(fd,92) { illegal_1(); op_92(); } /* DB FD */ -OP(fd,93) { illegal_1(); op_93(); } /* DB FD */ -OP(fd,94) { SUB(HY); } /* SUB HY */ -OP(fd,95) { SUB(LY); } /* SUB LY */ -OP(fd,96) { EAY; SUB(RM(EA)); } /* SUB (IY+o) */ -OP(fd,97) { illegal_1(); op_97(); } /* DB FD */ - -OP(fd,98) { illegal_1(); op_98(); } /* DB FD */ -OP(fd,99) { illegal_1(); op_99(); } /* DB FD */ -OP(fd,9a) { illegal_1(); op_9a(); } /* DB FD */ -OP(fd,9b) { illegal_1(); op_9b(); } /* DB FD */ -OP(fd,9c) { SBC(HY); } /* SBC A,HY */ -OP(fd,9d) { SBC(LY); } /* SBC A,LY */ -OP(fd,9e) { EAY; SBC(RM(EA)); } /* SBC A,(IY+o) */ -OP(fd,9f) { illegal_1(); op_9f(); } /* DB FD */ - -OP(fd,a0) { illegal_1(); op_a0(); } /* DB FD */ -OP(fd,a1) { illegal_1(); op_a1(); } /* DB FD */ -OP(fd,a2) { illegal_1(); op_a2(); } /* DB FD */ -OP(fd,a3) { illegal_1(); op_a3(); } /* DB FD */ -OP(fd,a4) { AND(HY); } /* AND HY */ -OP(fd,a5) { AND(LY); } /* AND LY */ -OP(fd,a6) { EAY; AND(RM(EA)); } /* AND (IY+o) */ -OP(fd,a7) { illegal_1(); op_a7(); } /* DB FD */ - -OP(fd,a8) { illegal_1(); op_a8(); } /* DB FD */ -OP(fd,a9) { illegal_1(); op_a9(); } /* DB FD */ -OP(fd,aa) { illegal_1(); op_aa(); } /* DB FD */ -OP(fd,ab) { illegal_1(); op_ab(); } /* DB FD */ -OP(fd,ac) { XOR(HY); } /* XOR HY */ -OP(fd,ad) { XOR(LY); } /* XOR LY */ -OP(fd,ae) { EAY; XOR(RM(EA)); } /* XOR (IY+o) */ -OP(fd,af) { illegal_1(); op_af(); } /* DB FD */ - -OP(fd,b0) { illegal_1(); op_b0(); } /* DB FD */ -OP(fd,b1) { illegal_1(); op_b1(); } /* DB FD */ -OP(fd,b2) { illegal_1(); op_b2(); } /* DB FD */ -OP(fd,b3) { illegal_1(); op_b3(); } /* DB FD */ -OP(fd,b4) { OR(HY); } /* OR HY */ -OP(fd,b5) { OR(LY); } /* OR LY */ -OP(fd,b6) { EAY; OR(RM(EA)); } /* OR (IY+o) */ -OP(fd,b7) { illegal_1(); op_b7(); } /* DB FD */ - -OP(fd,b8) { illegal_1(); op_b8(); } /* DB FD */ -OP(fd,b9) { illegal_1(); op_b9(); } /* DB FD */ -OP(fd,ba) { illegal_1(); op_ba(); } /* DB FD */ -OP(fd,bb) { illegal_1(); op_bb(); } /* DB FD */ -OP(fd,bc) { CP(HY); } /* CP HY */ -OP(fd,bd) { CP(LY); } /* CP LY */ -OP(fd,be) { EAY; CP(RM(EA)); } /* CP (IY+o) */ -OP(fd,bf) { illegal_1(); op_bf(); } /* DB FD */ - -OP(fd,c0) { illegal_1(); op_c0(); } /* DB FD */ -OP(fd,c1) { illegal_1(); op_c1(); } /* DB FD */ -OP(fd,c2) { illegal_1(); op_c2(); } /* DB FD */ -OP(fd,c3) { illegal_1(); op_c3(); } /* DB FD */ -OP(fd,c4) { illegal_1(); op_c4(); } /* DB FD */ -OP(fd,c5) { illegal_1(); op_c5(); } /* DB FD */ -OP(fd,c6) { illegal_1(); op_c6(); } /* DB FD */ -OP(fd,c7) { illegal_1(); op_c7(); } /* DB FD */ - -OP(fd,c8) { illegal_1(); op_c8(); } /* DB FD */ -OP(fd,c9) { illegal_1(); op_c9(); } /* DB FD */ -OP(fd,ca) { illegal_1(); op_ca(); } /* DB FD */ -OP(fd,cb) { EAY; EXEC(xycb,ARG()); } /* **** FD CB xx */ -OP(fd,cc) { illegal_1(); op_cc(); } /* DB FD */ -OP(fd,cd) { illegal_1(); op_cd(); } /* DB FD */ -OP(fd,ce) { illegal_1(); op_ce(); } /* DB FD */ -OP(fd,cf) { illegal_1(); op_cf(); } /* DB FD */ - -OP(fd,d0) { illegal_1(); op_d0(); } /* DB FD */ -OP(fd,d1) { illegal_1(); op_d1(); } /* DB FD */ -OP(fd,d2) { illegal_1(); op_d2(); } /* DB FD */ -OP(fd,d3) { illegal_1(); op_d3(); } /* DB FD */ -OP(fd,d4) { illegal_1(); op_d4(); } /* DB FD */ -OP(fd,d5) { illegal_1(); op_d5(); } /* DB FD */ -OP(fd,d6) { illegal_1(); op_d6(); } /* DB FD */ -OP(fd,d7) { illegal_1(); op_d7(); } /* DB FD */ - -OP(fd,d8) { illegal_1(); op_d8(); } /* DB FD */ -OP(fd,d9) { illegal_1(); op_d9(); } /* DB FD */ -OP(fd,da) { illegal_1(); op_da(); } /* DB FD */ -OP(fd,db) { illegal_1(); op_db(); } /* DB FD */ -OP(fd,dc) { illegal_1(); op_dc(); } /* DB FD */ -OP(fd,dd) { EXEC(dd,ROP()); } /* **** FD DD xx */ -OP(fd,de) { illegal_1(); op_de(); } /* DB FD */ -OP(fd,df) { illegal_1(); op_df(); } /* DB FD */ - -OP(fd,e0) { illegal_1(); op_e0(); } /* DB FD */ -OP(fd,e1) { POP( iy ); } /* POP IY */ -OP(fd,e2) { illegal_1(); op_e2(); } /* DB FD */ -OP(fd,e3) { EXSP( iy ); } /* EX (SP),IY */ -OP(fd,e4) { illegal_1(); op_e4(); } /* DB FD */ -OP(fd,e5) { PUSH( iy ); } /* PUSH IY */ -OP(fd,e6) { illegal_1(); op_e6(); } /* DB FD */ -OP(fd,e7) { illegal_1(); op_e7(); } /* DB FD */ - -OP(fd,e8) { illegal_1(); op_e8(); } /* DB FD */ -OP(fd,e9) { PC = IY; } /* JP (IY) */ -OP(fd,ea) { illegal_1(); op_ea(); } /* DB FD */ -OP(fd,eb) { illegal_1(); op_eb(); } /* DB FD */ -OP(fd,ec) { illegal_1(); op_ec(); } /* DB FD */ -OP(fd,ed) { illegal_1(); op_ed(); } /* DB FD */ -OP(fd,ee) { illegal_1(); op_ee(); } /* DB FD */ -OP(fd,ef) { illegal_1(); op_ef(); } /* DB FD */ - -OP(fd,f0) { illegal_1(); op_f0(); } /* DB FD */ -OP(fd,f1) { illegal_1(); op_f1(); } /* DB FD */ -OP(fd,f2) { illegal_1(); op_f2(); } /* DB FD */ -OP(fd,f3) { illegal_1(); op_f3(); } /* DB FD */ -OP(fd,f4) { illegal_1(); op_f4(); } /* DB FD */ -OP(fd,f5) { illegal_1(); op_f5(); } /* DB FD */ -OP(fd,f6) { illegal_1(); op_f6(); } /* DB FD */ -OP(fd,f7) { illegal_1(); op_f7(); } /* DB FD */ - -OP(fd,f8) { illegal_1(); op_f8(); } /* DB FD */ -OP(fd,f9) { SP = IY; } /* LD SP,IY */ -OP(fd,fa) { illegal_1(); op_fa(); } /* DB FD */ -OP(fd,fb) { illegal_1(); op_fb(); } /* DB FD */ -OP(fd,fc) { illegal_1(); op_fc(); } /* DB FD */ -OP(fd,fd) { EXEC(fd,ROP()); } /* **** FD FD xx */ -OP(fd,fe) { illegal_1(); op_fe(); } /* DB FD */ -OP(fd,ff) { illegal_1(); op_ff(); } /* DB FD */ - -OP(illegal,2) -{ -#if VERBOSE -logerror("Z80 #%d ill. opcode $ed $%02x\n", - cpu_getactivecpu(), cpu_readop((PCD-1)&0xffff)); -#endif -} - -/********************************************************** - * special opcodes (ED prefix) - **********************************************************/ -OP(ed,00) { illegal_2(); } /* DB ED */ -OP(ed,01) { illegal_2(); } /* DB ED */ -OP(ed,02) { illegal_2(); } /* DB ED */ -OP(ed,03) { illegal_2(); } /* DB ED */ -OP(ed,04) { illegal_2(); } /* DB ED */ -OP(ed,05) { illegal_2(); } /* DB ED */ -OP(ed,06) { illegal_2(); } /* DB ED */ -OP(ed,07) { illegal_2(); } /* DB ED */ - -OP(ed,08) { illegal_2(); } /* DB ED */ -OP(ed,09) { illegal_2(); } /* DB ED */ -OP(ed,0a) { illegal_2(); } /* DB ED */ -OP(ed,0b) { illegal_2(); } /* DB ED */ -OP(ed,0c) { illegal_2(); } /* DB ED */ -OP(ed,0d) { illegal_2(); } /* DB ED */ -OP(ed,0e) { illegal_2(); } /* DB ED */ -OP(ed,0f) { illegal_2(); } /* DB ED */ - -OP(ed,10) { illegal_2(); } /* DB ED */ -OP(ed,11) { illegal_2(); } /* DB ED */ -OP(ed,12) { illegal_2(); } /* DB ED */ -OP(ed,13) { illegal_2(); } /* DB ED */ -OP(ed,14) { illegal_2(); } /* DB ED */ -OP(ed,15) { illegal_2(); } /* DB ED */ -OP(ed,16) { illegal_2(); } /* DB ED */ -OP(ed,17) { illegal_2(); } /* DB ED */ - -OP(ed,18) { illegal_2(); } /* DB ED */ -OP(ed,19) { illegal_2(); } /* DB ED */ -OP(ed,1a) { illegal_2(); } /* DB ED */ -OP(ed,1b) { illegal_2(); } /* DB ED */ -OP(ed,1c) { illegal_2(); } /* DB ED */ -OP(ed,1d) { illegal_2(); } /* DB ED */ -OP(ed,1e) { illegal_2(); } /* DB ED */ -OP(ed,1f) { illegal_2(); } /* DB ED */ - -OP(ed,20) { illegal_2(); } /* DB ED */ -OP(ed,21) { illegal_2(); } /* DB ED */ -OP(ed,22) { illegal_2(); } /* DB ED */ -OP(ed,23) { illegal_2(); } /* DB ED */ -OP(ed,24) { illegal_2(); } /* DB ED */ -OP(ed,25) { illegal_2(); } /* DB ED */ -OP(ed,26) { illegal_2(); } /* DB ED */ -OP(ed,27) { illegal_2(); } /* DB ED */ - -OP(ed,28) { illegal_2(); } /* DB ED */ -OP(ed,29) { illegal_2(); } /* DB ED */ -OP(ed,2a) { illegal_2(); } /* DB ED */ -OP(ed,2b) { illegal_2(); } /* DB ED */ -OP(ed,2c) { illegal_2(); } /* DB ED */ -OP(ed,2d) { illegal_2(); } /* DB ED */ -OP(ed,2e) { illegal_2(); } /* DB ED */ -OP(ed,2f) { illegal_2(); } /* DB ED */ - -OP(ed,30) { illegal_2(); } /* DB ED */ -OP(ed,31) { illegal_2(); } /* DB ED */ -OP(ed,32) { illegal_2(); } /* DB ED */ -OP(ed,33) { illegal_2(); } /* DB ED */ -OP(ed,34) { illegal_2(); } /* DB ED */ -OP(ed,35) { illegal_2(); } /* DB ED */ -OP(ed,36) { illegal_2(); } /* DB ED */ -OP(ed,37) { illegal_2(); } /* DB ED */ - -OP(ed,38) { illegal_2(); } /* DB ED */ -OP(ed,39) { illegal_2(); } /* DB ED */ -OP(ed,3a) { illegal_2(); } /* DB ED */ -OP(ed,3b) { illegal_2(); } /* DB ED */ -OP(ed,3c) { illegal_2(); } /* DB ED */ -OP(ed,3d) { illegal_2(); } /* DB ED */ -OP(ed,3e) { illegal_2(); } /* DB ED */ -OP(ed,3f) { illegal_2(); } /* DB ED */ - -OP(ed,40) { B = IN(BC); F = (F & CF) | SZP[B]; } /* IN B,(C) */ -OP(ed,41) { OUT(BC, B); } /* OUT (C),B */ -OP(ed,42) { SBC16( bc ); } /* SBC HL,BC */ -OP(ed,43) { EA = ARG16(); WM16( EA, &Z80.bc ); WZ = EA+1; } /* LD (w),BC */ -OP(ed,44) { NEG; } /* NEG */ -OP(ed,45) { RETN; } /* RETN; */ -OP(ed,46) { IM = 0; } /* IM 0 */ -OP(ed,47) { LD_I_A; } /* LD I,A */ - -OP(ed,48) { C = IN(BC); F = (F & CF) | SZP[C]; } /* IN C,(C) */ -OP(ed,49) { OUT(BC, C); } /* OUT (C),C */ -OP(ed,4a) { ADC16( bc ); } /* ADC HL,BC */ -OP(ed,4b) { EA = ARG16(); RM16( EA, &Z80.bc ); WZ = EA+1; } /* LD BC,(w) */ -OP(ed,4c) { NEG; } /* NEG */ -OP(ed,4d) { RETI; } /* RETI */ -OP(ed,4e) { IM = 0; } /* IM 0 */ -OP(ed,4f) { LD_R_A; } /* LD R,A */ - -OP(ed,50) { D = IN(BC); F = (F & CF) | SZP[D]; } /* IN D,(C) */ -OP(ed,51) { OUT(BC, D); } /* OUT (C),D */ -OP(ed,52) { SBC16( de ); } /* SBC HL,DE */ -OP(ed,53) { EA = ARG16(); WM16( EA, &Z80.de ); WZ = EA+1; } /* LD (w),DE */ -OP(ed,54) { NEG; } /* NEG */ -OP(ed,55) { RETN; } /* RETN; */ -OP(ed,56) { IM = 1; } /* IM 1 */ -OP(ed,57) { LD_A_I; } /* LD A,I */ - -OP(ed,58) { E = IN(BC); F = (F & CF) | SZP[E]; } /* IN E,(C) */ -OP(ed,59) { OUT(BC, E); } /* OUT (C),E */ -OP(ed,5a) { ADC16( de ); } /* ADC HL,DE */ -OP(ed,5b) { EA = ARG16(); RM16( EA, &Z80.de ); WZ = EA+1; } /* LD DE,(w) */ -OP(ed,5c) { NEG; } /* NEG */ -OP(ed,5d) { RETI; } /* RETI */ -OP(ed,5e) { IM = 2; } /* IM 2 */ -OP(ed,5f) { LD_A_R; } /* LD A,R */ - -OP(ed,60) { H = IN(BC); F = (F & CF) | SZP[H]; } /* IN H,(C) */ -OP(ed,61) { OUT(BC, H); } /* OUT (C),H */ -OP(ed,62) { SBC16( hl ); } /* SBC HL,HL */ -OP(ed,63) { EA = ARG16(); WM16( EA, &Z80.hl ); WZ = EA+1; } /* LD (w),HL */ -OP(ed,64) { NEG; } /* NEG */ -OP(ed,65) { RETN; } /* RETN; */ -OP(ed,66) { IM = 0; } /* IM 0 */ -OP(ed,67) { RRD; } /* RRD (HL) */ - -OP(ed,68) { L = IN(BC); F = (F & CF) | SZP[L]; } /* IN L,(C) */ -OP(ed,69) { OUT(BC, L); } /* OUT (C),L */ -OP(ed,6a) { ADC16( hl ); } /* ADC HL,HL */ -OP(ed,6b) { EA = ARG16(); RM16( EA, &Z80.hl ); WZ = EA+1; } /* LD HL,(w) */ -OP(ed,6c) { NEG; } /* NEG */ -OP(ed,6d) { RETI; } /* RETI */ -OP(ed,6e) { IM = 0; } /* IM 0 */ -OP(ed,6f) { RLD; } /* RLD (HL) */ - -OP(ed,70) { UINT8 res = IN(BC); F = (F & CF) | SZP[res]; } /* IN 0,(C) */ -OP(ed,71) { OUT(BC, 0); } /* OUT (C),0 */ -OP(ed,72) { SBC16( sp ); } /* SBC HL,SP */ -OP(ed,73) { EA = ARG16(); WM16( EA, &Z80.sp ); WZ = EA+1; } /* LD (w),SP */ -OP(ed,74) { NEG; } /* NEG */ -OP(ed,75) { RETN; } /* RETN; */ -OP(ed,76) { IM = 1; } /* IM 1 */ -OP(ed,77) { illegal_2(); } /* DB ED,77 */ - -OP(ed,78) { A = IN(BC); F = (F & CF) | SZP[A]; WZ = BC+1; } /* IN E,(C) */ -OP(ed,79) { OUT(BC, A); WZ = BC + 1; } /* OUT (C),A */ -OP(ed,7a) { ADC16( sp ); } /* ADC HL,SP */ -OP(ed,7b) { EA = ARG16(); RM16( EA, &Z80.sp ); WZ = EA+1; } /* LD SP,(w) */ -OP(ed,7c) { NEG; } /* NEG */ -OP(ed,7d) { RETI; } /* RETI */ -OP(ed,7e) { IM = 2; } /* IM 2 */ -OP(ed,7f) { illegal_2(); } /* DB ED,7F */ - -OP(ed,80) { illegal_2(); } /* DB ED */ -OP(ed,81) { illegal_2(); } /* DB ED */ -OP(ed,82) { illegal_2(); } /* DB ED */ -OP(ed,83) { illegal_2(); } /* DB ED */ -OP(ed,84) { illegal_2(); } /* DB ED */ -OP(ed,85) { illegal_2(); } /* DB ED */ -OP(ed,86) { illegal_2(); } /* DB ED */ -OP(ed,87) { illegal_2(); } /* DB ED */ - -OP(ed,88) { illegal_2(); } /* DB ED */ -OP(ed,89) { illegal_2(); } /* DB ED */ -OP(ed,8a) { illegal_2(); } /* DB ED */ -OP(ed,8b) { illegal_2(); } /* DB ED */ -OP(ed,8c) { illegal_2(); } /* DB ED */ -OP(ed,8d) { illegal_2(); } /* DB ED */ -OP(ed,8e) { illegal_2(); } /* DB ED */ -OP(ed,8f) { illegal_2(); } /* DB ED */ - -OP(ed,90) { illegal_2(); } /* DB ED */ -OP(ed,91) { illegal_2(); } /* DB ED */ -OP(ed,92) { illegal_2(); } /* DB ED */ -OP(ed,93) { illegal_2(); } /* DB ED */ -OP(ed,94) { illegal_2(); } /* DB ED */ -OP(ed,95) { illegal_2(); } /* DB ED */ -OP(ed,96) { illegal_2(); } /* DB ED */ -OP(ed,97) { illegal_2(); } /* DB ED */ - -OP(ed,98) { illegal_2(); } /* DB ED */ -OP(ed,99) { illegal_2(); } /* DB ED */ -OP(ed,9a) { illegal_2(); } /* DB ED */ -OP(ed,9b) { illegal_2(); } /* DB ED */ -OP(ed,9c) { illegal_2(); } /* DB ED */ -OP(ed,9d) { illegal_2(); } /* DB ED */ -OP(ed,9e) { illegal_2(); } /* DB ED */ -OP(ed,9f) { illegal_2(); } /* DB ED */ - -OP(ed,a0) { LDI; } /* LDI */ -OP(ed,a1) { CPI; } /* CPI */ -OP(ed,a2) { INI; } /* INI */ -OP(ed,a3) { OUTI; } /* OUTI */ -OP(ed,a4) { illegal_2(); } /* DB ED */ -OP(ed,a5) { illegal_2(); } /* DB ED */ -OP(ed,a6) { illegal_2(); } /* DB ED */ -OP(ed,a7) { illegal_2(); } /* DB ED */ - -OP(ed,a8) { LDD; } /* LDD */ -OP(ed,a9) { CPD; } /* CPD */ -OP(ed,aa) { IND; } /* IND */ -OP(ed,ab) { OUTD; } /* OUTD */ -OP(ed,ac) { illegal_2(); } /* DB ED */ -OP(ed,ad) { illegal_2(); } /* DB ED */ -OP(ed,ae) { illegal_2(); } /* DB ED */ -OP(ed,af) { illegal_2(); } /* DB ED */ - -OP(ed,b0) { LDIR; } /* LDIR */ -OP(ed,b1) { CPIR; } /* CPIR */ -OP(ed,b2) { INIR; } /* INIR */ -OP(ed,b3) { OTIR; } /* OTIR */ -OP(ed,b4) { illegal_2(); } /* DB ED */ -OP(ed,b5) { illegal_2(); } /* DB ED */ -OP(ed,b6) { illegal_2(); } /* DB ED */ -OP(ed,b7) { illegal_2(); } /* DB ED */ - -OP(ed,b8) { LDDR; } /* LDDR */ -OP(ed,b9) { CPDR; } /* CPDR */ -OP(ed,ba) { INDR; } /* INDR */ -OP(ed,bb) { OTDR; } /* OTDR */ -OP(ed,bc) { illegal_2(); } /* DB ED */ -OP(ed,bd) { illegal_2(); } /* DB ED */ -OP(ed,be) { illegal_2(); } /* DB ED */ -OP(ed,bf) { illegal_2(); } /* DB ED */ - -OP(ed,c0) { illegal_2(); } /* DB ED */ -OP(ed,c1) { illegal_2(); } /* DB ED */ -OP(ed,c2) { illegal_2(); } /* DB ED */ -OP(ed,c3) { illegal_2(); } /* DB ED */ -OP(ed,c4) { illegal_2(); } /* DB ED */ -OP(ed,c5) { illegal_2(); } /* DB ED */ -OP(ed,c6) { illegal_2(); } /* DB ED */ -OP(ed,c7) { illegal_2(); } /* DB ED */ - -OP(ed,c8) { illegal_2(); } /* DB ED */ -OP(ed,c9) { illegal_2(); } /* DB ED */ -OP(ed,ca) { illegal_2(); } /* DB ED */ -OP(ed,cb) { illegal_2(); } /* DB ED */ -OP(ed,cc) { illegal_2(); } /* DB ED */ -OP(ed,cd) { illegal_2(); } /* DB ED */ -OP(ed,ce) { illegal_2(); } /* DB ED */ -OP(ed,cf) { illegal_2(); } /* DB ED */ - -OP(ed,d0) { illegal_2(); } /* DB ED */ -OP(ed,d1) { illegal_2(); } /* DB ED */ -OP(ed,d2) { illegal_2(); } /* DB ED */ -OP(ed,d3) { illegal_2(); } /* DB ED */ -OP(ed,d4) { illegal_2(); } /* DB ED */ -OP(ed,d5) { illegal_2(); } /* DB ED */ -OP(ed,d6) { illegal_2(); } /* DB ED */ -OP(ed,d7) { illegal_2(); } /* DB ED */ - -OP(ed,d8) { illegal_2(); } /* DB ED */ -OP(ed,d9) { illegal_2(); } /* DB ED */ -OP(ed,da) { illegal_2(); } /* DB ED */ -OP(ed,db) { illegal_2(); } /* DB ED */ -OP(ed,dc) { illegal_2(); } /* DB ED */ -OP(ed,dd) { illegal_2(); } /* DB ED */ -OP(ed,de) { illegal_2(); } /* DB ED */ -OP(ed,df) { illegal_2(); } /* DB ED */ - -OP(ed,e0) { illegal_2(); } /* DB ED */ -OP(ed,e1) { illegal_2(); } /* DB ED */ -OP(ed,e2) { illegal_2(); } /* DB ED */ -OP(ed,e3) { illegal_2(); } /* DB ED */ -OP(ed,e4) { illegal_2(); } /* DB ED */ -OP(ed,e5) { illegal_2(); } /* DB ED */ -OP(ed,e6) { illegal_2(); } /* DB ED */ -OP(ed,e7) { illegal_2(); } /* DB ED */ - -OP(ed,e8) { illegal_2(); } /* DB ED */ -OP(ed,e9) { illegal_2(); } /* DB ED */ -OP(ed,ea) { illegal_2(); } /* DB ED */ -OP(ed,eb) { illegal_2(); } /* DB ED */ -OP(ed,ec) { illegal_2(); } /* DB ED */ -OP(ed,ed) { illegal_2(); } /* DB ED */ -OP(ed,ee) { illegal_2(); } /* DB ED */ -OP(ed,ef) { illegal_2(); } /* DB ED */ - -OP(ed,f0) { illegal_2(); } /* DB ED */ -OP(ed,f1) { illegal_2(); } /* DB ED */ -OP(ed,f2) { illegal_2(); } /* DB ED */ -OP(ed,f3) { illegal_2(); } /* DB ED */ -OP(ed,f4) { illegal_2(); } /* DB ED */ -OP(ed,f5) { illegal_2(); } /* DB ED */ -OP(ed,f6) { illegal_2(); } /* DB ED */ -OP(ed,f7) { illegal_2(); } /* DB ED */ - -OP(ed,f8) { illegal_2(); } /* DB ED */ -OP(ed,f9) { illegal_2(); } /* DB ED */ -OP(ed,fa) { illegal_2(); } /* DB ED */ -OP(ed,fb) { illegal_2(); } /* DB ED */ -OP(ed,fc) { illegal_2(); } /* DB ED */ -OP(ed,fd) { illegal_2(); } /* DB ED */ -OP(ed,fe) { illegal_2(); } /* DB ED */ -OP(ed,ff) { illegal_2(); } /* DB ED */ - - -/********************************************************** - * main opcodes - **********************************************************/ -OP(op,00) { } /* NOP */ -OP(op,01) { BC = ARG16(); } /* LD BC,w */ -OP(op,02) { WM( BC, A ); WZ_L = (BC + 1) & 0xFF; WZ_H = A; } /* LD (BC),A */ -OP(op,03) { BC++; } /* INC BC */ -OP(op,04) { B = INC(B); } /* INC B */ -OP(op,05) { B = DEC(B); } /* DEC B */ -OP(op,06) { B = ARG(); } /* LD B,n */ -OP(op,07) { RLCA; } /* RLCA */ - -OP(op,08) { EX_AF; } /* EX AF,AF' */ -OP(op,09) { ADD16(hl, bc); } /* ADD HL,BC */ -OP(op,0a) { A = RM( BC ); WZ=BC+1; } /* LD A,(BC) */ -OP(op,0b) { BC--; } /* DEC BC */ -OP(op,0c) { C = INC(C); } /* INC C */ -OP(op,0d) { C = DEC(C); } /* DEC C */ -OP(op,0e) { C = ARG(); } /* LD C,n */ -OP(op,0f) { RRCA; } /* RRCA */ - -OP(op,10) { B--; JR_COND( B, 0x10 ); } /* DJNZ o */ -OP(op,11) { DE = ARG16(); } /* LD DE,w */ -OP(op,12) { WM( DE, A ); WZ_L = (DE + 1) & 0xFF; WZ_H = A; } /* LD (DE),A */ -OP(op,13) { DE++; } /* INC DE */ -OP(op,14) { D = INC(D); } /* INC D */ -OP(op,15) { D = DEC(D); } /* DEC D */ -OP(op,16) { D = ARG(); } /* LD D,n */ -OP(op,17) { RLA; } /* RLA */ - -OP(op,18) { JR(); } /* JR o */ -OP(op,19) { ADD16(hl, de); } /* ADD HL,DE */ -OP(op,1a) { A = RM( DE ); WZ=DE+1; } /* LD A,(DE) */ -OP(op,1b) { DE--; } /* DEC DE */ -OP(op,1c) { E = INC(E); } /* INC E */ -OP(op,1d) { E = DEC(E); } /* DEC E */ -OP(op,1e) { E = ARG(); } /* LD E,n */ -OP(op,1f) { RRA; } /* RRA */ - -OP(op,20) { JR_COND( !(F & ZF), 0x20 ); } /* JR NZ,o */ -OP(op,21) { HL = ARG16(); } /* LD HL,w */ -OP(op,22) { EA = ARG16(); WM16( EA, &Z80.hl ); WZ = EA+1; } /* LD (w),HL */ -OP(op,23) { HL++; } /* INC HL */ -OP(op,24) { H = INC(H); } /* INC H */ -OP(op,25) { H = DEC(H); } /* DEC H */ -OP(op,26) { H = ARG(); } /* LD H,n */ -OP(op,27) { DAA; } /* DAA */ - -OP(op,28) { JR_COND( F & ZF, 0x28 ); } /* JR Z,o */ -OP(op,29) { ADD16(hl, hl); } /* ADD HL,HL */ -OP(op,2a) { EA = ARG16(); RM16( EA, &Z80.hl ); WZ = EA+1; } /* LD HL,(w) */ -OP(op,2b) { HL--; } /* DEC HL */ -OP(op,2c) { L = INC(L); } /* INC L */ -OP(op,2d) { L = DEC(L); } /* DEC L */ -OP(op,2e) { L = ARG(); } /* LD L,n */ -OP(op,2f) { A ^= 0xff; F = (F&(SF|ZF|PF|CF))|HF|NF|(A&(YF|XF)); } /* CPL */ - -OP(op,30) { JR_COND( !(F & CF), 0x30 ); } /* JR NC,o */ -OP(op,31) { SP = ARG16(); } /* LD SP,w */ -OP(op,32) { EA = ARG16(); WM( EA, A ); WZ_L=(EA+1)&0xFF;WZ_H=A; } /* LD (w),A */ -OP(op,33) { SP++; } /* INC SP */ -OP(op,34) { WM( HL, INC(RM(HL)) ); } /* INC (HL) */ -OP(op,35) { WM( HL, DEC(RM(HL)) ); } /* DEC (HL) */ -OP(op,36) { WM( HL, ARG() ); } /* LD (HL),n */ -OP(op,37) { F = (F & (SF|ZF|YF|XF|PF)) | CF | (A & (YF|XF)); } /* SCF */ - -OP(op,38) { JR_COND( F & CF, 0x38 ); } /* JR C,o */ -OP(op,39) { ADD16(hl, sp); } /* ADD HL,SP */ -OP(op,3a) { EA = ARG16(); A = RM( EA ); WZ = EA+1; } /* LD A,(w) */ -OP(op,3b) { SP--; } /* DEC SP */ -OP(op,3c) { A = INC(A); } /* INC A */ -OP(op,3d) { A = DEC(A); } /* DEC A */ -OP(op,3e) { A = ARG(); } /* LD A,n */ -OP(op,3f) { F = ((F&(SF|ZF|YF|XF|PF|CF))|((F&CF)<<4)|(A&(YF|XF)))^CF; } /* CCF */ - -OP(op,40) { } /* LD B,B */ -OP(op,41) { B = C; } /* LD B,C */ -OP(op,42) { B = D; } /* LD B,D */ -OP(op,43) { B = E; } /* LD B,E */ -OP(op,44) { B = H; } /* LD B,H */ -OP(op,45) { B = L; } /* LD B,L */ -OP(op,46) { B = RM(HL); } /* LD B,(HL) */ -OP(op,47) { B = A; } /* LD B,A */ - -OP(op,48) { C = B; } /* LD C,B */ -OP(op,49) { } /* LD C,C */ -OP(op,4a) { C = D; } /* LD C,D */ -OP(op,4b) { C = E; } /* LD C,E */ -OP(op,4c) { C = H; } /* LD C,H */ -OP(op,4d) { C = L; } /* LD C,L */ -OP(op,4e) { C = RM(HL); } /* LD C,(HL) */ -OP(op,4f) { C = A; } /* LD C,A */ - -OP(op,50) { D = B; } /* LD D,B */ -OP(op,51) { D = C; } /* LD D,C */ -OP(op,52) { } /* LD D,D */ -OP(op,53) { D = E; } /* LD D,E */ -OP(op,54) { D = H; } /* LD D,H */ -OP(op,55) { D = L; } /* LD D,L */ -OP(op,56) { D = RM(HL); } /* LD D,(HL) */ -OP(op,57) { D = A; } /* LD D,A */ - -OP(op,58) { E = B; } /* LD E,B */ -OP(op,59) { E = C; } /* LD E,C */ -OP(op,5a) { E = D; } /* LD E,D */ -OP(op,5b) { } /* LD E,E */ -OP(op,5c) { E = H; } /* LD E,H */ -OP(op,5d) { E = L; } /* LD E,L */ -OP(op,5e) { E = RM(HL); } /* LD E,(HL) */ -OP(op,5f) { E = A; } /* LD E,A */ - -OP(op,60) { H = B; } /* LD H,B */ -OP(op,61) { H = C; } /* LD H,C */ -OP(op,62) { H = D; } /* LD H,D */ -OP(op,63) { H = E; } /* LD H,E */ -OP(op,64) { } /* LD H,H */ -OP(op,65) { H = L; } /* LD H,L */ -OP(op,66) { H = RM(HL); } /* LD H,(HL) */ -OP(op,67) { H = A; } /* LD H,A */ - -OP(op,68) { L = B; } /* LD L,B */ -OP(op,69) { L = C; } /* LD L,C */ -OP(op,6a) { L = D; } /* LD L,D */ -OP(op,6b) { L = E; } /* LD L,E */ -OP(op,6c) { L = H; } /* LD L,H */ -OP(op,6d) { } /* LD L,L */ -OP(op,6e) { L = RM(HL); } /* LD L,(HL) */ -OP(op,6f) { L = A; } /* LD L,A */ - -OP(op,70) { WM( HL, B ); } /* LD (HL),B */ -OP(op,71) { WM( HL, C ); } /* LD (HL),C */ -OP(op,72) { WM( HL, D ); } /* LD (HL),D */ -OP(op,73) { WM( HL, E ); } /* LD (HL),E */ -OP(op,74) { WM( HL, H ); } /* LD (HL),H */ -OP(op,75) { WM( HL, L ); } /* LD (HL),L */ -OP(op,76) { ENTER_HALT; } /* HALT */ -OP(op,77) { WM( HL, A ); } /* LD (HL),A */ - -OP(op,78) { A = B; } /* LD A,B */ -OP(op,79) { A = C; } /* LD A,C */ -OP(op,7a) { A = D; } /* LD A,D */ -OP(op,7b) { A = E; } /* LD A,E */ -OP(op,7c) { A = H; } /* LD A,H */ -OP(op,7d) { A = L; } /* LD A,L */ -OP(op,7e) { A = RM(HL); } /* LD A,(HL) */ -OP(op,7f) { } /* LD A,A */ - -OP(op,80) { ADD(B); } /* ADD A,B */ -OP(op,81) { ADD(C); } /* ADD A,C */ -OP(op,82) { ADD(D); } /* ADD A,D */ -OP(op,83) { ADD(E); } /* ADD A,E */ -OP(op,84) { ADD(H); } /* ADD A,H */ -OP(op,85) { ADD(L); } /* ADD A,L */ -OP(op,86) { ADD(RM(HL)); } /* ADD A,(HL) */ -OP(op,87) { ADD(A); } /* ADD A,A */ - -OP(op,88) { ADC(B); } /* ADC A,B */ -OP(op,89) { ADC(C); } /* ADC A,C */ -OP(op,8a) { ADC(D); } /* ADC A,D */ -OP(op,8b) { ADC(E); } /* ADC A,E */ -OP(op,8c) { ADC(H); } /* ADC A,H */ -OP(op,8d) { ADC(L); } /* ADC A,L */ -OP(op,8e) { ADC(RM(HL)); } /* ADC A,(HL) */ -OP(op,8f) { ADC(A); } /* ADC A,A */ - -OP(op,90) { SUB(B); } /* SUB B */ -OP(op,91) { SUB(C); } /* SUB C */ -OP(op,92) { SUB(D); } /* SUB D */ -OP(op,93) { SUB(E); } /* SUB E */ -OP(op,94) { SUB(H); } /* SUB H */ -OP(op,95) { SUB(L); } /* SUB L */ -OP(op,96) { SUB(RM(HL)); } /* SUB (HL) */ -OP(op,97) { SUB(A); } /* SUB A */ - -OP(op,98) { SBC(B); } /* SBC A,B */ -OP(op,99) { SBC(C); } /* SBC A,C */ -OP(op,9a) { SBC(D); } /* SBC A,D */ -OP(op,9b) { SBC(E); } /* SBC A,E */ -OP(op,9c) { SBC(H); } /* SBC A,H */ -OP(op,9d) { SBC(L); } /* SBC A,L */ -OP(op,9e) { SBC(RM(HL)); } /* SBC A,(HL) */ -OP(op,9f) { SBC(A); } /* SBC A,A */ - -OP(op,a0) { AND(B); } /* AND B */ -OP(op,a1) { AND(C); } /* AND C */ -OP(op,a2) { AND(D); } /* AND D */ -OP(op,a3) { AND(E); } /* AND E */ -OP(op,a4) { AND(H); } /* AND H */ -OP(op,a5) { AND(L); } /* AND L */ -OP(op,a6) { AND(RM(HL)); } /* AND (HL) */ -OP(op,a7) { AND(A); } /* AND A */ - -OP(op,a8) { XOR(B); } /* XOR B */ -OP(op,a9) { XOR(C); } /* XOR C */ -OP(op,aa) { XOR(D); } /* XOR D */ -OP(op,ab) { XOR(E); } /* XOR E */ -OP(op,ac) { XOR(H); } /* XOR H */ -OP(op,ad) { XOR(L); } /* XOR L */ -OP(op,ae) { XOR(RM(HL)); } /* XOR (HL) */ -OP(op,af) { XOR(A); } /* XOR A */ - -OP(op,b0) { OR(B); } /* OR B */ -OP(op,b1) { OR(C); } /* OR C */ -OP(op,b2) { OR(D); } /* OR D */ -OP(op,b3) { OR(E); } /* OR E */ -OP(op,b4) { OR(H); } /* OR H */ -OP(op,b5) { OR(L); } /* OR L */ -OP(op,b6) { OR(RM(HL)); } /* OR (HL) */ -OP(op,b7) { OR(A); } /* OR A */ - -OP(op,b8) { CP(B); } /* CP B */ -OP(op,b9) { CP(C); } /* CP C */ -OP(op,ba) { CP(D); } /* CP D */ -OP(op,bb) { CP(E); } /* CP E */ -OP(op,bc) { CP(H); } /* CP H */ -OP(op,bd) { CP(L); } /* CP L */ -OP(op,be) { CP(RM(HL)); } /* CP (HL) */ -OP(op,bf) { CP(A); } /* CP A */ - -OP(op,c0) { RET_COND( !(F & ZF), 0xc0 ); } /* RET NZ */ -OP(op,c1) { POP( bc ); } /* POP BC */ -OP(op,c2) { JP_COND( !(F & ZF) ); } /* JP NZ,a */ -OP(op,c3) { JP; } /* JP a */ -OP(op,c4) { CALL_COND( !(F & ZF), 0xc4 ); } /* CALL NZ,a */ -OP(op,c5) { PUSH( bc ); } /* PUSH BC */ -OP(op,c6) { ADD(ARG()); } /* ADD A,n */ -OP(op,c7) { RST(0x00); } /* RST 0 */ - -OP(op,c8) { RET_COND( F & ZF, 0xc8 ); } /* RET Z */ -OP(op,c9) { POP( pc ); WZ=PCD; } /* RET */ -OP(op,ca) { JP_COND( F & ZF ); } /* JP Z,a */ -OP(op,cb) { R++; EXEC(cb,ROP()); } /* **** CB xx */ -OP(op,cc) { CALL_COND( F & ZF, 0xcc ); } /* CALL Z,a */ -OP(op,cd) { CALL(); } /* CALL a */ -OP(op,ce) { ADC(ARG()); } /* ADC A,n */ -OP(op,cf) { RST(0x08); } /* RST 1 */ - -OP(op,d0) { RET_COND( !(F & CF), 0xd0 ); } /* RET NC */ -OP(op,d1) { POP( de ); } /* POP DE */ -OP(op,d2) { JP_COND( !(F & CF) ); } /* JP NC,a */ -OP(op,d3) { unsigned n = ARG() | (A << 8); OUT( n, A ); WZ_L = ((n & 0xff) + 1) & 0xff; WZ_H = A; } /* OUT (n),A */ -OP(op,d4) { CALL_COND( !(F & CF), 0xd4 ); } /* CALL NC,a */ -OP(op,d5) { PUSH( de ); } /* PUSH DE */ -OP(op,d6) { SUB(ARG()); } /* SUB n */ -OP(op,d7) { RST(0x10); } /* RST 2 */ - -OP(op,d8) { RET_COND( F & CF, 0xd8 ); } /* RET C */ -OP(op,d9) { EXX; } /* EXX */ -OP(op,da) { JP_COND( F & CF ); } /* JP C,a */ -OP(op,db) { unsigned n = ARG() | (A << 8); A = IN( n ); WZ = n + 1; } /* IN A,(n) */ -OP(op,dc) { CALL_COND( F & CF, 0xdc ); } /* CALL C,a */ -OP(op,dd) { R++; EXEC(dd,ROP()); } /* **** DD xx */ -OP(op,de) { SBC(ARG()); } /* SBC A,n */ -OP(op,df) { RST(0x18); } /* RST 3 */ - -OP(op,e0) { RET_COND( !(F & PF), 0xe0 ); } /* RET PO */ -OP(op,e1) { POP( hl ); } /* POP HL */ -OP(op,e2) { JP_COND( !(F & PF) ); } /* JP PO,a */ -OP(op,e3) { EXSP( hl ); } /* EX HL,(SP) */ -OP(op,e4) { CALL_COND( !(F & PF), 0xe4 ); } /* CALL PO,a */ -OP(op,e5) { PUSH( hl ); } /* PUSH HL */ -OP(op,e6) { AND(ARG()); } /* AND n */ -OP(op,e7) { RST(0x20); } /* RST 4 */ - -OP(op,e8) { RET_COND( F & PF, 0xe8 ); } /* RET PE */ -OP(op,e9) { PC = HL; } /* JP (HL) */ -OP(op,ea) { JP_COND( F & PF ); } /* JP PE,a */ -OP(op,eb) { EX_DE_HL; } /* EX DE,HL */ -OP(op,ec) { CALL_COND( F & PF, 0xec ); } /* CALL PE,a */ -OP(op,ed) { R++; EXEC(ed,ROP()); } /* **** ED xx */ -OP(op,ee) { XOR(ARG()); } /* XOR n */ -OP(op,ef) { RST(0x28); } /* RST 5 */ - -OP(op,f0) { RET_COND( !(F & SF), 0xf0 ); } /* RET P */ -OP(op,f1) { POP( af ); } /* POP AF */ -OP(op,f2) { JP_COND( !(F & SF) ); } /* JP P,a */ -OP(op,f3) { IFF1 = IFF2 = 0; } /* DI */ -OP(op,f4) { CALL_COND( !(F & SF), 0xf4 ); } /* CALL P,a */ -OP(op,f5) { PUSH( af ); } /* PUSH AF */ -OP(op,f6) { OR(ARG()); } /* OR n */ -OP(op,f7) { RST(0x30); } /* RST 6 */ - -OP(op,f8) { RET_COND( F & SF, 0xf8 ); } /* RET M */ -OP(op,f9) { SP = HL; } /* LD SP,HL */ -OP(op,fa) { JP_COND(F & SF); } /* JP M,a */ -OP(op,fb) { EI; } /* EI */ -OP(op,fc) { CALL_COND( F & SF, 0xfc ); } /* CALL M,a */ -OP(op,fd) { R++; EXEC(fd,ROP()); } /* **** FD xx */ -OP(op,fe) { CP(ARG()); } /* CP n */ -OP(op,ff) { RST(0x38); } /* RST 7 */ - - -static void take_interrupt(void) -{ - /* Check if processor was halted */ - LEAVE_HALT; - - /* Clear both interrupt flip flops */ - IFF1 = IFF2 = 0; - - LOG(("Z80 #%d single int. irq_vector $%02x\n", cpu_getactivecpu(), irq_vector)); - - /* Interrupt mode 1. RST 38h */ - if( IM == 1 ) - { - LOG(("Z80 #%d IM1 $0038\n",cpu_getactivecpu() )); - PUSH( pc ); - PCD = 0x0038; - /* RST $38 + 'interrupt latency' cycles */ - USE_CYCLES(cc[Z80_TABLE_op][0xff] + cc[Z80_TABLE_ex][0xff]); - } - else - { - /* call back the cpu interface to retrieve the vector */ - int irq_vector = (*Z80.irq_callback)(0); - - /* Interrupt mode 2. Call [Z80.i:databyte] */ - if( IM == 2 ) - { - irq_vector = (irq_vector & 0xff) | (I << 8); - PUSH( pc ); - RM16( irq_vector, &Z80.pc ); - LOG(("Z80 #%d IM2 [$%04x] = $%04x\n",cpu_getactivecpu() , irq_vector, PCD)); - /* CALL $xxxx + 'interrupt latency' cycles */ - USE_CYCLES(cc[Z80_TABLE_op][0xcd] + cc[Z80_TABLE_ex][0xff]); - } - else - { - /* Interrupt mode 0. We check for CALL and JP instructions, */ - /* if neither of these were found we assume a 1 byte opcode */ - /* was placed on the databus */ - LOG(("Z80 #%d IM0 $%04x\n",cpu_getactivecpu() , irq_vector)); - switch (irq_vector & 0xff0000) - { - case 0xcd0000: /* call */ - PUSH( pc ); - PCD = irq_vector & 0xffff; - /* CALL $xxxx + 'interrupt latency' cycles */ - USE_CYCLES(cc[Z80_TABLE_op][0xcd] + cc[Z80_TABLE_ex][0xff]); - break; - case 0xc30000: /* jump */ - PCD = irq_vector & 0xffff; - /* JP $xxxx + 2 cycles */ - USE_CYCLES(cc[Z80_TABLE_op][0xc3] + cc[Z80_TABLE_ex][0xff]); - break; - default: /* rst (or other opcodes?) */ - PUSH( pc ); - PCD = irq_vector & 0x0038; - /* RST $xx + 2 cycles */ - USE_CYCLES(cc[Z80_TABLE_op][0xff] + cc[Z80_TABLE_ex][0xff]); - break; - } - } - } - WZ=PCD; -} - -/**************************************************************************** - * Processor initialization - ****************************************************************************/ -void z80_init(const void *config, int (*irqcallback)(int)) -{ - int i, p; - - int oldval, newval, val; - UINT8 *padd = &SZHVC_add[ 0*256]; - UINT8 *padc = &SZHVC_add[256*256]; - UINT8 *psub = &SZHVC_sub[ 0*256]; - UINT8 *psbc = &SZHVC_sub[256*256]; - for (oldval = 0; oldval < 256; oldval++) - { - for (newval = 0; newval < 256; newval++) - { - /* add or adc w/o carry set */ - val = newval - oldval; - *padd = (newval) ? ((newval & 0x80) ? SF : 0) : ZF; - *padd |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) < (oldval & 0x0f) ) *padd |= HF; - if( newval < oldval ) *padd |= CF; - if( (val^oldval^0x80) & (val^newval) & 0x80 ) *padd |= VF; - padd++; - - /* adc with carry set */ - val = newval - oldval - 1; - *padc = (newval) ? ((newval & 0x80) ? SF : 0) : ZF; - *padc |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) <= (oldval & 0x0f) ) *padc |= HF; - if( newval <= oldval ) *padc |= CF; - if( (val^oldval^0x80) & (val^newval) & 0x80 ) *padc |= VF; - padc++; - - /* cp, sub or sbc w/o carry set */ - val = oldval - newval; - *psub = NF | ((newval) ? ((newval & 0x80) ? SF : 0) : ZF); - *psub |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) > (oldval & 0x0f) ) *psub |= HF; - if( newval > oldval ) *psub |= CF; - if( (val^oldval) & (oldval^newval) & 0x80 ) *psub |= VF; - psub++; - - /* sbc with carry set */ - val = oldval - newval - 1; - *psbc = NF | ((newval) ? ((newval & 0x80) ? SF : 0) : ZF); - *psbc |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) >= (oldval & 0x0f) ) *psbc |= HF; - if( newval >= oldval ) *psbc |= CF; - if( (val^oldval) & (oldval^newval) & 0x80 ) *psbc |= VF; - psbc++; - } - } - - for (i = 0; i < 256; i++) - { - p = 0; - if( i&0x01 ) ++p; - if( i&0x02 ) ++p; - if( i&0x04 ) ++p; - if( i&0x08 ) ++p; - if( i&0x10 ) ++p; - if( i&0x20 ) ++p; - if( i&0x40 ) ++p; - if( i&0x80 ) ++p; - SZ[i] = i ? i & SF : ZF; - SZ[i] |= (i & (YF | XF)); /* undocumented flag bits 5+3 */ - SZ_BIT[i] = i ? i & SF : ZF | PF; - SZ_BIT[i] |= (i & (YF | XF)); /* undocumented flag bits 5+3 */ - SZP[i] = SZ[i] | ((p & 1) ? 0 : PF); - SZHV_inc[i] = SZ[i]; - if( i == 0x80 ) SZHV_inc[i] |= VF; - if( (i & 0x0f) == 0x00 ) SZHV_inc[i] |= HF; - SZHV_dec[i] = SZ[i] | NF; - if( i == 0x7f ) SZHV_dec[i] |= VF; - if( (i & 0x0f) == 0x0f ) SZHV_dec[i] |= HF; - } - - /* Initialize Z80 */ - memset(&Z80, 0, sizeof(Z80)); - Z80.daisy = config; - Z80.irq_callback = irqcallback; -#ifdef Z80_OVERCLOCK_SHIFT - z80_cycle_ratio = 1 << Z80_OVERCLOCK_SHIFT; -#endif - - /* Clear registers values (NB: should be random on real hardware ?) */ - AF = BC = DE = HL = SP = IX = IY =0; - F = ZF; /* Zero flag is set */ - - /* setup cycle tables */ - cc[Z80_TABLE_op] = cc_op; - cc[Z80_TABLE_cb] = cc_cb; - cc[Z80_TABLE_ed] = cc_ed; - cc[Z80_TABLE_xy] = cc_xy; - cc[Z80_TABLE_xycb] = cc_xycb; - cc[Z80_TABLE_ex] = cc_ex; -} - -/**************************************************************************** - * Do a reset - ****************************************************************************/ -void z80_reset(void) -{ - PC = 0x0000; - I = 0; - R = 0; - R2 = 0; - IM = 0; - IFF1 = IFF2 = 0; - HALT = 0; - - Z80.after_ei = FALSE; - - WZ=PCD; -} - -/**************************************************************************** - * Run until given cycle count - ****************************************************************************/ -void z80_run(unsigned int cycles) -{ - while( Z80.cycles < cycles ) - { - /* check for IRQs before each instruction */ - if (Z80.irq_state && IFF1 && !Z80.after_ei) - { - take_interrupt(); - if (Z80.cycles >= cycles) return; - } - - Z80.after_ei = FALSE; - R++; - EXEC_INLINE(op,ROP()); - } -} - -/**************************************************************************** - * Get all registers in given buffer - ****************************************************************************/ -void z80_get_context (void *dst) -{ - if( dst ) - *(Z80_Regs*)dst = Z80; -} - -/**************************************************************************** - * Set all registers to given values - ****************************************************************************/ -void z80_set_context (void *src) -{ - if( src ) - Z80 = *(Z80_Regs*)src; -} - -/**************************************************************************** - * Set IRQ lines - ****************************************************************************/ -void z80_set_irq_line(unsigned int state) -{ - Z80.irq_state = state; -} - -void z80_set_nmi_line(unsigned int state) -{ - /* mark an NMI pending on the rising edge */ - if (Z80.nmi_state == CLEAR_LINE && state != CLEAR_LINE) - { - LOG(("Z80 #%d take NMI\n", cpu_getactivecpu())); - LEAVE_HALT; /* Check if processor was halted */ - - IFF1 = 0; - PUSH( pc ); - PCD = 0x0066; - WZ=PCD; - - USE_CYCLES(11*15); - } - - Z80.nmi_state = state; -} - +/***************************************************************************** + * + * z80.c + * Portable Z80 emulator V3.9 + * + * Copyright Juergen Buchmueller, all rights reserved. + * + * - This source code is released as freeware for non-commercial purposes. + * - You are free to use and redistribute this code in modified or + * unmodified form, provided you list me in the credits. + * - If you modify this source code, you must add a notice to each modified + * source file that it has been changed. If you're a nice person, you + * will clearly mark each change too. :) + * - If you wish to use this for commercial purposes, please contact me at + * pullmoll@t-online.de + * - The author of this copywritten work reserves the right to change the + * terms of its usage and license at any time, including retroactively + * - This entire notice must remain in the source code. + * + * TODO: + * - If LD A,I or LD A,R is interrupted, P/V flag gets reset, even if IFF2 + * was set before this instruction + * - Ideally, the tiny differences between Z80 types should be supported, + * currently known differences: + * - LD A,I/R P/V flag reset glitch is fixed on CMOS Z80 + * - OUT (C),0 outputs 0 on NMOS Z80, $FF on CMOS Z80 + * - SCF/CCF X/Y flags is ((flags | A) & 0x28) on SGS/SHARP/ZiLOG NMOS Z80, + * (flags & A & 0x28) on NEC NMOS Z80, other models unknown. + * However, people from the Speccy scene mention that SCF/CCF X/Y results + * are inconsistant and may be influenced by I and R registers. + * This Z80 emulator assumes a ZiLOG NMOS model. + * + * Additional changes [Eke-Eke]: + * - Removed z80_burn function (unused) + * - Discarded multi-chip support (unused) + * - Fixed cycle counting for FD and DD prefixed instructions + * - Fixed behavior of chained FD and DD prefixes (R register should be only incremented by one + * - Implemented cycle-accurate INI/IND (needed by SMS emulation) + * - Fixed Z80 reset + * - Made SZHVC_add & SZHVC_sub tables statically allocated + * - Fixed compiler warning when BIG_SWITCH is defined + * Changes in 3.9: + * - Fixed cycle counts for LD IYL/IXL/IYH/IXH,n [Marshmellow] + * - Fixed X/Y flags in CCF/SCF/BIT, ZEXALL is happy now [hap] + * - Simplified DAA, renamed MEMPTR (3.8) to WZ, added TODO [hap] + * - Fixed IM2 interrupt cycles [eke] + * Changes in 3.8 [Miodrag Milanovic]: + * - Added MEMPTR register (according to informations provided + * by Vladimir Kladov + * - BIT n,(HL) now return valid values due to use of MEMPTR + * - Fixed BIT 6,(XY+o) undocumented instructions + * Changes in 3.7 [Aaron Giles]: + * - Changed NMI handling. NMIs are now latched in set_irq_state + * but are not taken there. Instead they are taken at the start of the + * execute loop. + * - Changed IRQ handling. IRQ state is set in set_irq_state but not taken + * except during the inner execute loop. + * - Removed x86 assembly hacks and obsolete timing loop catchers. + * Changes in 3.6: + * - Got rid of the code that would inexactly emulate a Z80, i.e. removed + * all the #if Z80_EXACT #else branches. + * - Removed leading underscores from local register name shortcuts as + * this violates the C99 standard. + * - Renamed the registers inside the Z80 context to lower case to avoid + * ambiguities (shortcuts would have had the same names as the fields + * of the structure). + * Changes in 3.5: + * - Implemented OTIR, INIR, etc. without look-up table for PF flag. + * [Ramsoft, Sean Young] + * Changes in 3.4: + * - Removed Z80-MSX specific code as it's not needed any more. + * - Implemented DAA without look-up table [Ramsoft, Sean Young] + * Changes in 3.3: + * - Fixed undocumented flags XF & YF in the non-asm versions of CP, + * and all the 16 bit arithmetic instructions. [Sean Young] + * Changes in 3.2: + * - Fixed undocumented flags XF & YF of RRCA, and CF and HF of + * INI/IND/OUTI/OUTD/INIR/INDR/OTIR/OTDR [Sean Young] + * Changes in 3.1: + * - removed the REPEAT_AT_ONCE execution of LDIR/CPIR etc. opcodes + * for readabilities sake and because the implementation was buggy + * (and I was not able to find the difference) + * Changes in 3.0: + * - 'finished' switch to dynamically overrideable cycle count tables + * Changes in 2.9: + * - added methods to access and override the cycle count tables + * - fixed handling and timing of multiple DD/FD prefixed opcodes + * Changes in 2.8: + * - OUTI/OUTD/OTIR/OTDR also pre-decrement the B register now. + * This was wrong because of a bug fix on the wrong side + * (astrocade sound driver). + * Changes in 2.7: + * - removed z80_vm specific code, it's not needed (and never was). + * Changes in 2.6: + * - BUSY_LOOP_HACKS needed to call change_pc() earlier, before + * checking the opcodes at the new address, because otherwise they + * might access the old (wrong or even NULL) banked memory region. + * Thanks to Sean Young for finding this nasty bug. + * Changes in 2.5: + * - Burning cycles always adjusts the ICount by a multiple of 4. + * - In REPEAT_AT_ONCE cases the R register wasn't incremented twice + * per repetition as it should have been. Those repeated opcodes + * could also underflow the ICount. + * - Simplified TIME_LOOP_HACKS for BC and added two more for DE + HL + * timing loops. I think those hacks weren't endian safe before too. + * Changes in 2.4: + * - z80_reset zaps the entire context, sets IX and IY to 0xffff(!) and + * sets the Z flag. With these changes the Tehkan World Cup driver + * _seems_ to work again. + * Changes in 2.3: + * - External termination of the execution loop calls z80_burn() and + * z80_vm_burn() to burn an amount of cycles (R adjustment) + * - Shortcuts which burn CPU cycles (BUSY_LOOP_HACKS and TIME_LOOP_HACKS) + * now also adjust the R register depending on the skipped opcodes. + * Changes in 2.2: + * - Fixed bugs in CPL, SCF and CCF instructions flag handling. + * - Changed variable EA and ARG16() function to UINT32; this + * produces slightly more efficient code. + * - The DD/FD XY CB opcodes where XY is 40-7F and Y is not 6/E + * are changed to calls to the X6/XE opcodes to reduce object size. + * They're hardly ever used so this should not yield a speed penalty. + * New in 2.0: + * - Optional more exact Z80 emulation (#define Z80_EXACT 1) according + * to a detailed description by Sean Young which can be found at: + * http://www.msxnet.org/tech/z80-documented.pdf + *****************************************************************************/ +#include "shared.h" +#include "z80.h" + +/* execute main opcodes inside a big switch statement */ +#define BIG_SWITCH 1 + +#define VERBOSE 0 + +#if VERBOSE +#define LOG(x) logerror x +#else +#define LOG(x) +#endif + +#define cpu_readop(a) z80_readmap[(a) >> 10][(a) & 0x03FF] +#define cpu_readop_arg(a) z80_readmap[(a) >> 10][(a) & 0x03FF] + +#define CF 0x01 +#define NF 0x02 +#define PF 0x04 +#define VF PF +#define XF 0x08 +#define HF 0x10 +#define YF 0x20 +#define ZF 0x40 +#define SF 0x80 + +#define INT_IRQ 0x01 +#define NMI_IRQ 0x02 + +#define PCD Z80.pc.d +#define PC Z80.pc.w.l + +#define SPD Z80.sp.d +#define SP Z80.sp.w.l + +#define AFD Z80.af.d +#define AF Z80.af.w.l +#define A Z80.af.b.h +#define F Z80.af.b.l + +#define BCD Z80.bc.d +#define BC Z80.bc.w.l +#define B Z80.bc.b.h +#define C Z80.bc.b.l + +#define DED Z80.de.d +#define DE Z80.de.w.l +#define D Z80.de.b.h +#define E Z80.de.b.l + +#define HLD Z80.hl.d +#define HL Z80.hl.w.l +#define H Z80.hl.b.h +#define L Z80.hl.b.l + +#define IXD Z80.ix.d +#define IX Z80.ix.w.l +#define HX Z80.ix.b.h +#define LX Z80.ix.b.l + +#define IYD Z80.iy.d +#define IY Z80.iy.w.l +#define HY Z80.iy.b.h +#define LY Z80.iy.b.l + +#define WZ Z80.wz.w.l +#define WZ_H Z80.wz.b.h +#define WZ_L Z80.wz.b.l + +#define I Z80.i +#define R Z80.r +#define R2 Z80.r2 +#define IM Z80.im +#define IFF1 Z80.iff1 +#define IFF2 Z80.iff2 +#define HALT Z80.halt + +#ifdef Z80_OVERCLOCK_SHIFT +#define USE_CYCLES(A) Z80.cycles += ((A) * z80_cycle_ratio) >> Z80_OVERCLOCK_SHIFT +UINT32 z80_cycle_ratio; +#else +#define USE_CYCLES(A) Z80.cycles += (A) +#endif + +Z80_Regs Z80; + +unsigned char *z80_readmap[64]; +unsigned char *z80_writemap[64]; + +void (*z80_writemem)(unsigned int address, unsigned char data); +unsigned char (*z80_readmem)(unsigned int address); +void (*z80_writeport)(unsigned int port, unsigned char data); +unsigned char (*z80_readport)(unsigned int port); + +static UINT32 EA; + +static UINT8 SZ[256]; /* zero and sign flags */ +static UINT8 SZ_BIT[256]; /* zero, sign and parity/overflow (=zero) flags for BIT opcode */ +static UINT8 SZP[256]; /* zero, sign and parity flags */ +static UINT8 SZHV_inc[256]; /* zero, sign, half carry and overflow flags INC r8 */ +static UINT8 SZHV_dec[256]; /* zero, sign, half carry and overflow flags DEC r8 */ + +static UINT8 SZHVC_add[2*256*256]; /* flags for ADD opcode */ +static UINT8 SZHVC_sub[2*256*256]; /* flags for SUB opcode */ + +static const UINT16 cc_op[0x100] = { + 4*15,10*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15, 4*15,11*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15, + 8*15,10*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15,12*15,11*15, 7*15, 6*15, 4*15, 4*15, 7*15, 4*15, + 7*15,10*15,16*15, 6*15, 4*15, 4*15, 7*15, 4*15, 7*15,11*15,16*15, 6*15, 4*15, 4*15, 7*15, 4*15, + 7*15,10*15,13*15, 6*15,11*15,11*15,10*15, 4*15, 7*15,11*15,13*15, 6*15, 4*15, 4*15, 7*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 7*15, 7*15, 7*15, 7*15, 7*15, 7*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 7*15, 4*15, + 5*15,10*15,10*15,10*15,10*15,11*15, 7*15,11*15, 5*15,10*15,10*15, 0*15,10*15,17*15, 7*15,11*15, + 5*15,10*15,10*15,11*15,10*15,11*15, 7*15,11*15, 5*15, 4*15,10*15,11*15,10*15, 0*15, 7*15,11*15, + 5*15,10*15,10*15,19*15,10*15,11*15, 7*15,11*15, 5*15, 4*15,10*15, 4*15,10*15, 0*15, 7*15,11*15, + 5*15,10*15,10*15, 4*15,10*15,11*15, 7*15,11*15, 5*15, 6*15,10*15, 4*15,10*15, 0*15, 7*15,11*15}; + +static const UINT16 cc_cb[0x100] = { + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,12*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15,15*15, 8*15}; + +static const UINT16 cc_ed[0x100] = { + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15, + 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 9*15, + 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15,18*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15,18*15, + 12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 8*15,12*15,12*15,15*15,20*15, 8*15,14*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15,16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15, + 16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15,16*15,16*15,16*15,16*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15, 8*15}; + +/*static const UINT8 cc_xy[0x100] = { + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15,15*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15,15*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, + 4*15,14*15,20*15,10*15, 9*15, 9*15,11*15, 4*15, 4*15,15*15,20*15,10*15, 9*15, 9*15,11*15, 4*15, + 4*15, 4*15, 4*15, 4*15,23*15,23*15,19*15, 4*15, 4*15,15*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, + 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, +19*15,19*15,19*15,19*15,19*15,19*15, 4*15,19*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, 4*15, 4*15, 4*15, 4*15, 9*15, 9*15,19*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 0*15, 4*15, 4*15, 4*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, + 4*15,14*15, 4*15,23*15, 4*15,15*15, 4*15, 4*15, 4*15, 8*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, + 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15,10*15, 4*15, 4*15, 4*15, 4*15, 4*15, 4*15}; +*/ + +/* illegal combo should return 4 + cc_op[i] */ +static const UINT16 cc_xy[0x100] ={ + 8*15,14*15,11*15,10*15, 8*15, 8*15,11*15, 8*15, 8*15,15*15,11*15,10*15, 8*15, 8*15,11*15, 8*15, + 12*15,14*15,11*15,10*15, 8*15, 8*15,11*15, 8*15,16*15,15*15,11*15,10*15, 8*15, 8*15,11*15, 8*15, + 11*15,14*15,20*15,10*15, 9*15, 9*15,12*15, 8*15,11*15,15*15,20*15,10*15, 9*15, 9*15,12*15, 8*15, + 11*15,14*15,17*15,10*15,23*15,23*15,19*15, 8*15,11*15,15*15,17*15,10*15, 8*15, 8*15,11*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, + 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15, 9*15,19*15, 9*15, + 19*15,19*15,19*15,19*15,19*15,19*15, 8*15,19*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, + 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, 8*15, 8*15, 8*15, 8*15, 9*15, 9*15,19*15, 8*15, + 9*15,14*15,14*15,14*15,14*15,15*15,11*15,15*15, 9*15,14*15,14*15, 0*15,14*15,21*15,11*15,15*15, + 9*15,14*15,14*15,15*15,14*15,15*15,11*15,15*15, 9*15, 8*15,14*15,15*15,14*15, 4*15,11*15,15*15, + 9*15,14*15,14*15,23*15,14*15,15*15,11*15,15*15, 9*15, 8*15,14*15, 8*15,14*15, 4*15,11*15,15*15, + 9*15,14*15,14*15, 8*15,14*15,15*15,11*15,15*15, 9*15,10*15,14*15, 8*15,14*15, 4*15,11*15,15*15}; + +static const UINT16 cc_xycb[0x100] = { + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, + 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, + 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, + 20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15,20*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15, + 23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15,23*15}; + +/* extra cycles if jr/jp/call taken and 'interrupt latency' on rst 0-7 */ +static const UINT16 cc_ex[0x100] = { + 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, + 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* DJNZ */ + 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* JR NZ/JR Z */ + 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 5*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* JR NC/JR C */ + 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, + 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, + 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, + 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, + 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, + 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, + 0*15, 0*15, 4*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 0*15, 4*15, 0*15, 0*15, 0*15, 0*15, 0*15, /* INI/IND (cycle-accurate I/O port reads) */ + 5*15, 5*15, 5*15, 5*15, 0*15, 0*15, 0*15, 0*15, 5*15, 5*15, 5*15, 5*15, 0*15, 0*15, 0*15, 0*15, /* LDIR/CPIR/INIR/OTIR LDDR/CPDR/INDR/OTDR */ + 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, + 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, + 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, + 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15, 6*15, 0*15, 0*15, 0*15, 7*15, 0*15, 0*15, 2*15}; + +static const UINT16 *cc[6]; +#define Z80_TABLE_dd Z80_TABLE_xy +#define Z80_TABLE_fd Z80_TABLE_xy + +typedef void (*funcptr)(void); + +#define PROTOTYPES(tablename,prefix) \ + INLINE void prefix##_00(void); INLINE void prefix##_01(void); INLINE void prefix##_02(void); INLINE void prefix##_03(void); \ + INLINE void prefix##_04(void); INLINE void prefix##_05(void); INLINE void prefix##_06(void); INLINE void prefix##_07(void); \ + INLINE void prefix##_08(void); INLINE void prefix##_09(void); INLINE void prefix##_0a(void); INLINE void prefix##_0b(void); \ + INLINE void prefix##_0c(void); INLINE void prefix##_0d(void); INLINE void prefix##_0e(void); INLINE void prefix##_0f(void); \ + INLINE void prefix##_10(void); INLINE void prefix##_11(void); INLINE void prefix##_12(void); INLINE void prefix##_13(void); \ + INLINE void prefix##_14(void); INLINE void prefix##_15(void); INLINE void prefix##_16(void); INLINE void prefix##_17(void); \ + INLINE void prefix##_18(void); INLINE void prefix##_19(void); INLINE void prefix##_1a(void); INLINE void prefix##_1b(void); \ + INLINE void prefix##_1c(void); INLINE void prefix##_1d(void); INLINE void prefix##_1e(void); INLINE void prefix##_1f(void); \ + INLINE void prefix##_20(void); INLINE void prefix##_21(void); INLINE void prefix##_22(void); INLINE void prefix##_23(void); \ + INLINE void prefix##_24(void); INLINE void prefix##_25(void); INLINE void prefix##_26(void); INLINE void prefix##_27(void); \ + INLINE void prefix##_28(void); INLINE void prefix##_29(void); INLINE void prefix##_2a(void); INLINE void prefix##_2b(void); \ + INLINE void prefix##_2c(void); INLINE void prefix##_2d(void); INLINE void prefix##_2e(void); INLINE void prefix##_2f(void); \ + INLINE void prefix##_30(void); INLINE void prefix##_31(void); INLINE void prefix##_32(void); INLINE void prefix##_33(void); \ + INLINE void prefix##_34(void); INLINE void prefix##_35(void); INLINE void prefix##_36(void); INLINE void prefix##_37(void); \ + INLINE void prefix##_38(void); INLINE void prefix##_39(void); INLINE void prefix##_3a(void); INLINE void prefix##_3b(void); \ + INLINE void prefix##_3c(void); INLINE void prefix##_3d(void); INLINE void prefix##_3e(void); INLINE void prefix##_3f(void); \ + INLINE void prefix##_40(void); INLINE void prefix##_41(void); INLINE void prefix##_42(void); INLINE void prefix##_43(void); \ + INLINE void prefix##_44(void); INLINE void prefix##_45(void); INLINE void prefix##_46(void); INLINE void prefix##_47(void); \ + INLINE void prefix##_48(void); INLINE void prefix##_49(void); INLINE void prefix##_4a(void); INLINE void prefix##_4b(void); \ + INLINE void prefix##_4c(void); INLINE void prefix##_4d(void); INLINE void prefix##_4e(void); INLINE void prefix##_4f(void); \ + INLINE void prefix##_50(void); INLINE void prefix##_51(void); INLINE void prefix##_52(void); INLINE void prefix##_53(void); \ + INLINE void prefix##_54(void); INLINE void prefix##_55(void); INLINE void prefix##_56(void); INLINE void prefix##_57(void); \ + INLINE void prefix##_58(void); INLINE void prefix##_59(void); INLINE void prefix##_5a(void); INLINE void prefix##_5b(void); \ + INLINE void prefix##_5c(void); INLINE void prefix##_5d(void); INLINE void prefix##_5e(void); INLINE void prefix##_5f(void); \ + INLINE void prefix##_60(void); INLINE void prefix##_61(void); INLINE void prefix##_62(void); INLINE void prefix##_63(void); \ + INLINE void prefix##_64(void); INLINE void prefix##_65(void); INLINE void prefix##_66(void); INLINE void prefix##_67(void); \ + INLINE void prefix##_68(void); INLINE void prefix##_69(void); INLINE void prefix##_6a(void); INLINE void prefix##_6b(void); \ + INLINE void prefix##_6c(void); INLINE void prefix##_6d(void); INLINE void prefix##_6e(void); INLINE void prefix##_6f(void); \ + INLINE void prefix##_70(void); INLINE void prefix##_71(void); INLINE void prefix##_72(void); INLINE void prefix##_73(void); \ + INLINE void prefix##_74(void); INLINE void prefix##_75(void); INLINE void prefix##_76(void); INLINE void prefix##_77(void); \ + INLINE void prefix##_78(void); INLINE void prefix##_79(void); INLINE void prefix##_7a(void); INLINE void prefix##_7b(void); \ + INLINE void prefix##_7c(void); INLINE void prefix##_7d(void); INLINE void prefix##_7e(void); INLINE void prefix##_7f(void); \ + INLINE void prefix##_80(void); INLINE void prefix##_81(void); INLINE void prefix##_82(void); INLINE void prefix##_83(void); \ + INLINE void prefix##_84(void); INLINE void prefix##_85(void); INLINE void prefix##_86(void); INLINE void prefix##_87(void); \ + INLINE void prefix##_88(void); INLINE void prefix##_89(void); INLINE void prefix##_8a(void); INLINE void prefix##_8b(void); \ + INLINE void prefix##_8c(void); INLINE void prefix##_8d(void); INLINE void prefix##_8e(void); INLINE void prefix##_8f(void); \ + INLINE void prefix##_90(void); INLINE void prefix##_91(void); INLINE void prefix##_92(void); INLINE void prefix##_93(void); \ + INLINE void prefix##_94(void); INLINE void prefix##_95(void); INLINE void prefix##_96(void); INLINE void prefix##_97(void); \ + INLINE void prefix##_98(void); INLINE void prefix##_99(void); INLINE void prefix##_9a(void); INLINE void prefix##_9b(void); \ + INLINE void prefix##_9c(void); INLINE void prefix##_9d(void); INLINE void prefix##_9e(void); INLINE void prefix##_9f(void); \ + INLINE void prefix##_a0(void); INLINE void prefix##_a1(void); INLINE void prefix##_a2(void); INLINE void prefix##_a3(void); \ + INLINE void prefix##_a4(void); INLINE void prefix##_a5(void); INLINE void prefix##_a6(void); INLINE void prefix##_a7(void); \ + INLINE void prefix##_a8(void); INLINE void prefix##_a9(void); INLINE void prefix##_aa(void); INLINE void prefix##_ab(void); \ + INLINE void prefix##_ac(void); INLINE void prefix##_ad(void); INLINE void prefix##_ae(void); INLINE void prefix##_af(void); \ + INLINE void prefix##_b0(void); INLINE void prefix##_b1(void); INLINE void prefix##_b2(void); INLINE void prefix##_b3(void); \ + INLINE void prefix##_b4(void); INLINE void prefix##_b5(void); INLINE void prefix##_b6(void); INLINE void prefix##_b7(void); \ + INLINE void prefix##_b8(void); INLINE void prefix##_b9(void); INLINE void prefix##_ba(void); INLINE void prefix##_bb(void); \ + INLINE void prefix##_bc(void); INLINE void prefix##_bd(void); INLINE void prefix##_be(void); INLINE void prefix##_bf(void); \ + INLINE void prefix##_c0(void); INLINE void prefix##_c1(void); INLINE void prefix##_c2(void); INLINE void prefix##_c3(void); \ + INLINE void prefix##_c4(void); INLINE void prefix##_c5(void); INLINE void prefix##_c6(void); INLINE void prefix##_c7(void); \ + INLINE void prefix##_c8(void); INLINE void prefix##_c9(void); INLINE void prefix##_ca(void); INLINE void prefix##_cb(void); \ + INLINE void prefix##_cc(void); INLINE void prefix##_cd(void); INLINE void prefix##_ce(void); INLINE void prefix##_cf(void); \ + INLINE void prefix##_d0(void); INLINE void prefix##_d1(void); INLINE void prefix##_d2(void); INLINE void prefix##_d3(void); \ + INLINE void prefix##_d4(void); INLINE void prefix##_d5(void); INLINE void prefix##_d6(void); INLINE void prefix##_d7(void); \ + INLINE void prefix##_d8(void); INLINE void prefix##_d9(void); INLINE void prefix##_da(void); INLINE void prefix##_db(void); \ + INLINE void prefix##_dc(void); INLINE void prefix##_dd(void); INLINE void prefix##_de(void); INLINE void prefix##_df(void); \ + INLINE void prefix##_e0(void); INLINE void prefix##_e1(void); INLINE void prefix##_e2(void); INLINE void prefix##_e3(void); \ + INLINE void prefix##_e4(void); INLINE void prefix##_e5(void); INLINE void prefix##_e6(void); INLINE void prefix##_e7(void); \ + INLINE void prefix##_e8(void); INLINE void prefix##_e9(void); INLINE void prefix##_ea(void); INLINE void prefix##_eb(void); \ + INLINE void prefix##_ec(void); INLINE void prefix##_ed(void); INLINE void prefix##_ee(void); INLINE void prefix##_ef(void); \ + INLINE void prefix##_f0(void); INLINE void prefix##_f1(void); INLINE void prefix##_f2(void); INLINE void prefix##_f3(void); \ + INLINE void prefix##_f4(void); INLINE void prefix##_f5(void); INLINE void prefix##_f6(void); INLINE void prefix##_f7(void); \ + INLINE void prefix##_f8(void); INLINE void prefix##_f9(void); INLINE void prefix##_fa(void); INLINE void prefix##_fb(void); \ + INLINE void prefix##_fc(void); INLINE void prefix##_fd(void); INLINE void prefix##_fe(void); INLINE void prefix##_ff(void); + +#define FUNCTABLE(tablename,prefix) \ +static const funcptr tablename[0x100] = { \ + prefix##_00,prefix##_01,prefix##_02,prefix##_03,prefix##_04,prefix##_05,prefix##_06,prefix##_07, \ + prefix##_08,prefix##_09,prefix##_0a,prefix##_0b,prefix##_0c,prefix##_0d,prefix##_0e,prefix##_0f, \ + prefix##_10,prefix##_11,prefix##_12,prefix##_13,prefix##_14,prefix##_15,prefix##_16,prefix##_17, \ + prefix##_18,prefix##_19,prefix##_1a,prefix##_1b,prefix##_1c,prefix##_1d,prefix##_1e,prefix##_1f, \ + prefix##_20,prefix##_21,prefix##_22,prefix##_23,prefix##_24,prefix##_25,prefix##_26,prefix##_27, \ + prefix##_28,prefix##_29,prefix##_2a,prefix##_2b,prefix##_2c,prefix##_2d,prefix##_2e,prefix##_2f, \ + prefix##_30,prefix##_31,prefix##_32,prefix##_33,prefix##_34,prefix##_35,prefix##_36,prefix##_37, \ + prefix##_38,prefix##_39,prefix##_3a,prefix##_3b,prefix##_3c,prefix##_3d,prefix##_3e,prefix##_3f, \ + prefix##_40,prefix##_41,prefix##_42,prefix##_43,prefix##_44,prefix##_45,prefix##_46,prefix##_47, \ + prefix##_48,prefix##_49,prefix##_4a,prefix##_4b,prefix##_4c,prefix##_4d,prefix##_4e,prefix##_4f, \ + prefix##_50,prefix##_51,prefix##_52,prefix##_53,prefix##_54,prefix##_55,prefix##_56,prefix##_57, \ + prefix##_58,prefix##_59,prefix##_5a,prefix##_5b,prefix##_5c,prefix##_5d,prefix##_5e,prefix##_5f, \ + prefix##_60,prefix##_61,prefix##_62,prefix##_63,prefix##_64,prefix##_65,prefix##_66,prefix##_67, \ + prefix##_68,prefix##_69,prefix##_6a,prefix##_6b,prefix##_6c,prefix##_6d,prefix##_6e,prefix##_6f, \ + prefix##_70,prefix##_71,prefix##_72,prefix##_73,prefix##_74,prefix##_75,prefix##_76,prefix##_77, \ + prefix##_78,prefix##_79,prefix##_7a,prefix##_7b,prefix##_7c,prefix##_7d,prefix##_7e,prefix##_7f, \ + prefix##_80,prefix##_81,prefix##_82,prefix##_83,prefix##_84,prefix##_85,prefix##_86,prefix##_87, \ + prefix##_88,prefix##_89,prefix##_8a,prefix##_8b,prefix##_8c,prefix##_8d,prefix##_8e,prefix##_8f, \ + prefix##_90,prefix##_91,prefix##_92,prefix##_93,prefix##_94,prefix##_95,prefix##_96,prefix##_97, \ + prefix##_98,prefix##_99,prefix##_9a,prefix##_9b,prefix##_9c,prefix##_9d,prefix##_9e,prefix##_9f, \ + prefix##_a0,prefix##_a1,prefix##_a2,prefix##_a3,prefix##_a4,prefix##_a5,prefix##_a6,prefix##_a7, \ + prefix##_a8,prefix##_a9,prefix##_aa,prefix##_ab,prefix##_ac,prefix##_ad,prefix##_ae,prefix##_af, \ + prefix##_b0,prefix##_b1,prefix##_b2,prefix##_b3,prefix##_b4,prefix##_b5,prefix##_b6,prefix##_b7, \ + prefix##_b8,prefix##_b9,prefix##_ba,prefix##_bb,prefix##_bc,prefix##_bd,prefix##_be,prefix##_bf, \ + prefix##_c0,prefix##_c1,prefix##_c2,prefix##_c3,prefix##_c4,prefix##_c5,prefix##_c6,prefix##_c7, \ + prefix##_c8,prefix##_c9,prefix##_ca,prefix##_cb,prefix##_cc,prefix##_cd,prefix##_ce,prefix##_cf, \ + prefix##_d0,prefix##_d1,prefix##_d2,prefix##_d3,prefix##_d4,prefix##_d5,prefix##_d6,prefix##_d7, \ + prefix##_d8,prefix##_d9,prefix##_da,prefix##_db,prefix##_dc,prefix##_dd,prefix##_de,prefix##_df, \ + prefix##_e0,prefix##_e1,prefix##_e2,prefix##_e3,prefix##_e4,prefix##_e5,prefix##_e6,prefix##_e7, \ + prefix##_e8,prefix##_e9,prefix##_ea,prefix##_eb,prefix##_ec,prefix##_ed,prefix##_ee,prefix##_ef, \ + prefix##_f0,prefix##_f1,prefix##_f2,prefix##_f3,prefix##_f4,prefix##_f5,prefix##_f6,prefix##_f7, \ + prefix##_f8,prefix##_f9,prefix##_fa,prefix##_fb,prefix##_fc,prefix##_fd,prefix##_fe,prefix##_ff \ +} + +PROTOTYPES(Z80op,op) +PROTOTYPES(Z80cb,cb) +PROTOTYPES(Z80dd,dd) +PROTOTYPES(Z80ed,ed) +PROTOTYPES(Z80fd,fd) +PROTOTYPES(Z80xycb,xycb) + +#ifndef BIG_SWITCH +FUNCTABLE(Z80op,op); +#endif +FUNCTABLE(Z80cb,cb); +FUNCTABLE(Z80dd,dd); +FUNCTABLE(Z80ed,ed); +FUNCTABLE(Z80fd,fd); +FUNCTABLE(Z80xycb,xycb); + +/****************************************************************************/ +/* Burn an odd amount of cycles, that is instructions taking something */ +/* different from 4 T-states per opcode (and R increment) */ +/****************************************************************************/ +INLINE void BURNODD(int cycles, int opcodes, int cyclesum) +{ + if( cycles > 0 ) + { + R += (cycles / cyclesum) * opcodes; + USE_CYCLES((cycles / cyclesum) * cyclesum * 15); + } +} + +/*************************************************************** + * define an opcode function + ***************************************************************/ +#define OP(prefix,opcode) INLINE void prefix##_##opcode(void) + +/*************************************************************** + * adjust cycle count by n T-states + ***************************************************************/ +#define CC(prefix,opcode) USE_CYCLES(cc[Z80_TABLE_##prefix][opcode]) + +/*************************************************************** + * execute an opcode + ***************************************************************/ +#define EXEC(prefix,opcode) \ +{ \ + unsigned op = opcode; \ + CC(prefix,op); \ + (*Z80##prefix[op])(); \ +} + +#if BIG_SWITCH +#define EXEC_INLINE(prefix,opcode) \ +{ \ + unsigned op = opcode; \ + CC(prefix,op); \ + switch(op) \ + { \ + case 0x00:prefix##_##00();break; case 0x01:prefix##_##01();break; case 0x02:prefix##_##02();break; case 0x03:prefix##_##03();break; \ + case 0x04:prefix##_##04();break; case 0x05:prefix##_##05();break; case 0x06:prefix##_##06();break; case 0x07:prefix##_##07();break; \ + case 0x08:prefix##_##08();break; case 0x09:prefix##_##09();break; case 0x0a:prefix##_##0a();break; case 0x0b:prefix##_##0b();break; \ + case 0x0c:prefix##_##0c();break; case 0x0d:prefix##_##0d();break; case 0x0e:prefix##_##0e();break; case 0x0f:prefix##_##0f();break; \ + case 0x10:prefix##_##10();break; case 0x11:prefix##_##11();break; case 0x12:prefix##_##12();break; case 0x13:prefix##_##13();break; \ + case 0x14:prefix##_##14();break; case 0x15:prefix##_##15();break; case 0x16:prefix##_##16();break; case 0x17:prefix##_##17();break; \ + case 0x18:prefix##_##18();break; case 0x19:prefix##_##19();break; case 0x1a:prefix##_##1a();break; case 0x1b:prefix##_##1b();break; \ + case 0x1c:prefix##_##1c();break; case 0x1d:prefix##_##1d();break; case 0x1e:prefix##_##1e();break; case 0x1f:prefix##_##1f();break; \ + case 0x20:prefix##_##20();break; case 0x21:prefix##_##21();break; case 0x22:prefix##_##22();break; case 0x23:prefix##_##23();break; \ + case 0x24:prefix##_##24();break; case 0x25:prefix##_##25();break; case 0x26:prefix##_##26();break; case 0x27:prefix##_##27();break; \ + case 0x28:prefix##_##28();break; case 0x29:prefix##_##29();break; case 0x2a:prefix##_##2a();break; case 0x2b:prefix##_##2b();break; \ + case 0x2c:prefix##_##2c();break; case 0x2d:prefix##_##2d();break; case 0x2e:prefix##_##2e();break; case 0x2f:prefix##_##2f();break; \ + case 0x30:prefix##_##30();break; case 0x31:prefix##_##31();break; case 0x32:prefix##_##32();break; case 0x33:prefix##_##33();break; \ + case 0x34:prefix##_##34();break; case 0x35:prefix##_##35();break; case 0x36:prefix##_##36();break; case 0x37:prefix##_##37();break; \ + case 0x38:prefix##_##38();break; case 0x39:prefix##_##39();break; case 0x3a:prefix##_##3a();break; case 0x3b:prefix##_##3b();break; \ + case 0x3c:prefix##_##3c();break; case 0x3d:prefix##_##3d();break; case 0x3e:prefix##_##3e();break; case 0x3f:prefix##_##3f();break; \ + case 0x40:prefix##_##40();break; case 0x41:prefix##_##41();break; case 0x42:prefix##_##42();break; case 0x43:prefix##_##43();break; \ + case 0x44:prefix##_##44();break; case 0x45:prefix##_##45();break; case 0x46:prefix##_##46();break; case 0x47:prefix##_##47();break; \ + case 0x48:prefix##_##48();break; case 0x49:prefix##_##49();break; case 0x4a:prefix##_##4a();break; case 0x4b:prefix##_##4b();break; \ + case 0x4c:prefix##_##4c();break; case 0x4d:prefix##_##4d();break; case 0x4e:prefix##_##4e();break; case 0x4f:prefix##_##4f();break; \ + case 0x50:prefix##_##50();break; case 0x51:prefix##_##51();break; case 0x52:prefix##_##52();break; case 0x53:prefix##_##53();break; \ + case 0x54:prefix##_##54();break; case 0x55:prefix##_##55();break; case 0x56:prefix##_##56();break; case 0x57:prefix##_##57();break; \ + case 0x58:prefix##_##58();break; case 0x59:prefix##_##59();break; case 0x5a:prefix##_##5a();break; case 0x5b:prefix##_##5b();break; \ + case 0x5c:prefix##_##5c();break; case 0x5d:prefix##_##5d();break; case 0x5e:prefix##_##5e();break; case 0x5f:prefix##_##5f();break; \ + case 0x60:prefix##_##60();break; case 0x61:prefix##_##61();break; case 0x62:prefix##_##62();break; case 0x63:prefix##_##63();break; \ + case 0x64:prefix##_##64();break; case 0x65:prefix##_##65();break; case 0x66:prefix##_##66();break; case 0x67:prefix##_##67();break; \ + case 0x68:prefix##_##68();break; case 0x69:prefix##_##69();break; case 0x6a:prefix##_##6a();break; case 0x6b:prefix##_##6b();break; \ + case 0x6c:prefix##_##6c();break; case 0x6d:prefix##_##6d();break; case 0x6e:prefix##_##6e();break; case 0x6f:prefix##_##6f();break; \ + case 0x70:prefix##_##70();break; case 0x71:prefix##_##71();break; case 0x72:prefix##_##72();break; case 0x73:prefix##_##73();break; \ + case 0x74:prefix##_##74();break; case 0x75:prefix##_##75();break; case 0x76:prefix##_##76();break; case 0x77:prefix##_##77();break; \ + case 0x78:prefix##_##78();break; case 0x79:prefix##_##79();break; case 0x7a:prefix##_##7a();break; case 0x7b:prefix##_##7b();break; \ + case 0x7c:prefix##_##7c();break; case 0x7d:prefix##_##7d();break; case 0x7e:prefix##_##7e();break; case 0x7f:prefix##_##7f();break; \ + case 0x80:prefix##_##80();break; case 0x81:prefix##_##81();break; case 0x82:prefix##_##82();break; case 0x83:prefix##_##83();break; \ + case 0x84:prefix##_##84();break; case 0x85:prefix##_##85();break; case 0x86:prefix##_##86();break; case 0x87:prefix##_##87();break; \ + case 0x88:prefix##_##88();break; case 0x89:prefix##_##89();break; case 0x8a:prefix##_##8a();break; case 0x8b:prefix##_##8b();break; \ + case 0x8c:prefix##_##8c();break; case 0x8d:prefix##_##8d();break; case 0x8e:prefix##_##8e();break; case 0x8f:prefix##_##8f();break; \ + case 0x90:prefix##_##90();break; case 0x91:prefix##_##91();break; case 0x92:prefix##_##92();break; case 0x93:prefix##_##93();break; \ + case 0x94:prefix##_##94();break; case 0x95:prefix##_##95();break; case 0x96:prefix##_##96();break; case 0x97:prefix##_##97();break; \ + case 0x98:prefix##_##98();break; case 0x99:prefix##_##99();break; case 0x9a:prefix##_##9a();break; case 0x9b:prefix##_##9b();break; \ + case 0x9c:prefix##_##9c();break; case 0x9d:prefix##_##9d();break; case 0x9e:prefix##_##9e();break; case 0x9f:prefix##_##9f();break; \ + case 0xa0:prefix##_##a0();break; case 0xa1:prefix##_##a1();break; case 0xa2:prefix##_##a2();break; case 0xa3:prefix##_##a3();break; \ + case 0xa4:prefix##_##a4();break; case 0xa5:prefix##_##a5();break; case 0xa6:prefix##_##a6();break; case 0xa7:prefix##_##a7();break; \ + case 0xa8:prefix##_##a8();break; case 0xa9:prefix##_##a9();break; case 0xaa:prefix##_##aa();break; case 0xab:prefix##_##ab();break; \ + case 0xac:prefix##_##ac();break; case 0xad:prefix##_##ad();break; case 0xae:prefix##_##ae();break; case 0xaf:prefix##_##af();break; \ + case 0xb0:prefix##_##b0();break; case 0xb1:prefix##_##b1();break; case 0xb2:prefix##_##b2();break; case 0xb3:prefix##_##b3();break; \ + case 0xb4:prefix##_##b4();break; case 0xb5:prefix##_##b5();break; case 0xb6:prefix##_##b6();break; case 0xb7:prefix##_##b7();break; \ + case 0xb8:prefix##_##b8();break; case 0xb9:prefix##_##b9();break; case 0xba:prefix##_##ba();break; case 0xbb:prefix##_##bb();break; \ + case 0xbc:prefix##_##bc();break; case 0xbd:prefix##_##bd();break; case 0xbe:prefix##_##be();break; case 0xbf:prefix##_##bf();break; \ + case 0xc0:prefix##_##c0();break; case 0xc1:prefix##_##c1();break; case 0xc2:prefix##_##c2();break; case 0xc3:prefix##_##c3();break; \ + case 0xc4:prefix##_##c4();break; case 0xc5:prefix##_##c5();break; case 0xc6:prefix##_##c6();break; case 0xc7:prefix##_##c7();break; \ + case 0xc8:prefix##_##c8();break; case 0xc9:prefix##_##c9();break; case 0xca:prefix##_##ca();break; case 0xcb:prefix##_##cb();break; \ + case 0xcc:prefix##_##cc();break; case 0xcd:prefix##_##cd();break; case 0xce:prefix##_##ce();break; case 0xcf:prefix##_##cf();break; \ + case 0xd0:prefix##_##d0();break; case 0xd1:prefix##_##d1();break; case 0xd2:prefix##_##d2();break; case 0xd3:prefix##_##d3();break; \ + case 0xd4:prefix##_##d4();break; case 0xd5:prefix##_##d5();break; case 0xd6:prefix##_##d6();break; case 0xd7:prefix##_##d7();break; \ + case 0xd8:prefix##_##d8();break; case 0xd9:prefix##_##d9();break; case 0xda:prefix##_##da();break; case 0xdb:prefix##_##db();break; \ + case 0xdc:prefix##_##dc();break; case 0xdd:prefix##_##dd();break; case 0xde:prefix##_##de();break; case 0xdf:prefix##_##df();break; \ + case 0xe0:prefix##_##e0();break; case 0xe1:prefix##_##e1();break; case 0xe2:prefix##_##e2();break; case 0xe3:prefix##_##e3();break; \ + case 0xe4:prefix##_##e4();break; case 0xe5:prefix##_##e5();break; case 0xe6:prefix##_##e6();break; case 0xe7:prefix##_##e7();break; \ + case 0xe8:prefix##_##e8();break; case 0xe9:prefix##_##e9();break; case 0xea:prefix##_##ea();break; case 0xeb:prefix##_##eb();break; \ + case 0xec:prefix##_##ec();break; case 0xed:prefix##_##ed();break; case 0xee:prefix##_##ee();break; case 0xef:prefix##_##ef();break; \ + case 0xf0:prefix##_##f0();break; case 0xf1:prefix##_##f1();break; case 0xf2:prefix##_##f2();break; case 0xf3:prefix##_##f3();break; \ + case 0xf4:prefix##_##f4();break; case 0xf5:prefix##_##f5();break; case 0xf6:prefix##_##f6();break; case 0xf7:prefix##_##f7();break; \ + case 0xf8:prefix##_##f8();break; case 0xf9:prefix##_##f9();break; case 0xfa:prefix##_##fa();break; case 0xfb:prefix##_##fb();break; \ + case 0xfc:prefix##_##fc();break; case 0xfd:prefix##_##fd();break; case 0xfe:prefix##_##fe();break; case 0xff:prefix##_##ff();break; \ + } \ +} +#else +#define EXEC_INLINE EXEC +#endif + + +/*************************************************************** + * Enter HALT state; write 1 to fake port on first execution + ***************************************************************/ +#define ENTER_HALT { \ + PC--; \ + HALT = 1; \ +} + +/*************************************************************** + * Leave HALT state; write 0 to fake port + ***************************************************************/ +#define LEAVE_HALT { \ + if( HALT ) \ + { \ + HALT = 0; \ + PC++; \ + } \ +} + +/*************************************************************** + * Input a byte from given I/O port + ***************************************************************/ +#define IN(port) z80_readport(port) + +/*************************************************************** + * Output a byte to given I/O port + ***************************************************************/ +#define OUT(port,value) z80_writeport(port,value) + +/*************************************************************** + * Read a byte from given memory location + ***************************************************************/ +#define RM(addr) z80_readmem(addr) + +/*************************************************************** + * Write a byte to given memory location + ***************************************************************/ +#define WM(addr,value) z80_writemem(addr,value) + +/*************************************************************** + * Read a word from given memory location + ***************************************************************/ +INLINE void RM16( UINT32 addr, PAIR *r ) +{ + r->b.l = RM(addr); + r->b.h = RM((addr+1)&0xffff); +} + +/*************************************************************** + * Write a word to given memory location + ***************************************************************/ +INLINE void WM16( UINT32 addr, PAIR *r ) +{ + WM(addr,r->b.l); + WM((addr+1)&0xffff,r->b.h); +} + +/*************************************************************** + * ROP() is identical to RM() except it is used for + * reading opcodes. In case of system with memory mapped I/O, + * this function can be used to greatly speed up emulation + ***************************************************************/ +INLINE UINT8 ROP(void) +{ + unsigned pc = PCD; + PC++; + return cpu_readop(pc); +} + +/**************************************************************** + * ARG() is identical to ROP() except it is used + * for reading opcode arguments. This difference can be used to + * support systems that use different encoding mechanisms for + * opcodes and opcode arguments + ***************************************************************/ +INLINE UINT8 ARG(void) +{ + unsigned pc = PCD; + PC++; + return cpu_readop_arg(pc); +} + +INLINE UINT32 ARG16(void) +{ + unsigned pc = PCD; + PC += 2; + return cpu_readop_arg(pc) | (cpu_readop_arg((pc+1)&0xffff) << 8); +} + +/*************************************************************** + * Calculate the effective address EA of an opcode using + * IX+offset resp. IY+offset addressing. + ***************************************************************/ +#define EAX do { EA = (UINT32)(UINT16)(IX + (INT8)ARG()); WZ = EA; } while (0) +#define EAY do { EA = (UINT32)(UINT16)(IY + (INT8)ARG()); WZ = EA; } while (0) + +/*************************************************************** + * POP + ***************************************************************/ +#define POP(DR) do { RM16( SPD, &Z80.DR ); SP += 2; } while (0) + +/*************************************************************** + * PUSH + ***************************************************************/ +#define PUSH(SR) do { SP -= 2; WM16( SPD, &Z80.SR ); } while (0) + +/*************************************************************** + * JP + ***************************************************************/ +#define JP { \ + PCD = ARG16(); \ + WZ = PCD; \ +} + +/*************************************************************** + * JP_COND + ***************************************************************/ +#define JP_COND(cond) { \ + if (cond) \ + { \ + PCD = ARG16(); \ + WZ = PCD; \ + } \ + else \ + { \ + WZ = ARG16(); /* implicit do PC += 2 */ \ + } \ +} + +/*************************************************************** + * JR + ***************************************************************/ +#define JR() { \ + INT8 arg = (INT8)ARG(); /* ARG() also increments PC */ \ + PC += arg; /* so don't do PC += ARG() */ \ + WZ = PC; \ +} + +/*************************************************************** + * JR_COND + ***************************************************************/ +#define JR_COND(cond, opcode) { \ + if (cond) \ + { \ + JR(); \ + CC(ex, opcode); \ + } \ + else PC++; \ +} + +/*************************************************************** + * CALL + ***************************************************************/ +#define CALL() { \ + EA = ARG16(); \ + WZ = EA; \ + PUSH(pc); \ + PCD = EA; \ +} + +/*************************************************************** + * CALL_COND + ***************************************************************/ +#define CALL_COND(cond, opcode) { \ + if (cond) \ + { \ + EA = ARG16(); \ + WZ = EA; \ + PUSH(pc); \ + PCD = EA; \ + CC(ex, opcode); \ + } \ + else \ + { \ + WZ = ARG16(); /* implicit call PC+=2; */ \ + } \ +} + +/*************************************************************** + * RET_COND + ***************************************************************/ +#define RET_COND(cond, opcode) do { \ + if (cond) \ + { \ + POP(pc); \ + WZ = PC; \ + CC(ex, opcode); \ + } \ +} while (0) + +/*************************************************************** + * RETN + ***************************************************************/ +#define RETN do { \ + LOG(("Z80 #%d RETN IFF1:%d IFF2:%d\n", cpu_getactivecpu(), IFF1, IFF2)); \ + POP( pc ); \ + WZ = PC; \ + IFF1 = IFF2; \ +} while (0) + +/*************************************************************** + * RETI + ***************************************************************/ +#define RETI { \ + POP( pc ); \ + WZ = PC; \ +/* according to http://www.msxnet.org/tech/z80-documented.pdf */ \ + IFF1 = IFF2; \ +} + +/*************************************************************** + * LD R,A + ***************************************************************/ +#define LD_R_A { \ + R = A; \ + R2 = A & 0x80; /* keep bit 7 of R */ \ +} + +/*************************************************************** + * LD A,R + ***************************************************************/ +#define LD_A_R { \ + A = (R & 0x7f) | R2; \ + F = (F & CF) | SZ[A] | ( IFF2 << 2 ); \ +} + +/*************************************************************** + * LD I,A + ***************************************************************/ +#define LD_I_A { \ + I = A; \ +} + +/*************************************************************** + * LD A,I + ***************************************************************/ +#define LD_A_I { \ + A = I; \ + F = (F & CF) | SZ[A] | ( IFF2 << 2 ); \ +} + +/*************************************************************** + * RST + ***************************************************************/ +#define RST(addr) \ + PUSH( pc ); \ + PCD = addr; \ + WZ = PC; \ + +/*************************************************************** + * INC r8 + ***************************************************************/ +INLINE UINT8 INC(UINT8 value) +{ + UINT8 res = value + 1; + F = (F & CF) | SZHV_inc[res]; + return (UINT8)res; +} + +/*************************************************************** + * DEC r8 + ***************************************************************/ +INLINE UINT8 DEC(UINT8 value) +{ + UINT8 res = value - 1; + F = (F & CF) | SZHV_dec[res]; + return res; +} + +/*************************************************************** + * RLCA + ***************************************************************/ +#define RLCA \ + A = (A << 1) | (A >> 7); \ + F = (F & (SF | ZF | PF)) | (A & (YF | XF | CF)) + +/*************************************************************** + * RRCA + ***************************************************************/ +#define RRCA \ + F = (F & (SF | ZF | PF)) | (A & CF); \ + A = (A >> 1) | (A << 7); \ + F |= (A & (YF | XF) ) + +/*************************************************************** + * RLA + ***************************************************************/ +#define RLA { \ + UINT8 res = (A << 1) | (F & CF); \ + UINT8 c = (A & 0x80) ? CF : 0; \ + F = (F & (SF | ZF | PF)) | c | (res & (YF | XF)); \ + A = res; \ +} + +/*************************************************************** + * RRA + ***************************************************************/ +#define RRA { \ + UINT8 res = (A >> 1) | (F << 7); \ + UINT8 c = (A & 0x01) ? CF : 0; \ + F = (F & (SF | ZF | PF)) | c | (res & (YF | XF)); \ + A = res; \ +} + +/*************************************************************** + * RRD + ***************************************************************/ +#define RRD { \ + UINT8 n = RM(HL); \ + WZ = HL+1; \ + WM( HL, (n >> 4) | (A << 4) ); \ + A = (A & 0xf0) | (n & 0x0f); \ + F = (F & CF) | SZP[A]; \ +} + +/*************************************************************** + * RLD + ***************************************************************/ +#define RLD { \ + UINT8 n = RM(HL); \ + WZ = HL+1; \ + WM( HL, (n << 4) | (A & 0x0f) ); \ + A = (A & 0xf0) | (n >> 4); \ + F = (F & CF) | SZP[A]; \ +} + +/*************************************************************** + * ADD A,n + ***************************************************************/ +#define ADD(value) \ +{ \ + UINT32 ah = AFD & 0xff00; \ + UINT32 res = (UINT8)((ah >> 8) + value); \ + F = SZHVC_add[ah | res]; \ + A = res; \ +} + +/*************************************************************** + * ADC A,n + ***************************************************************/ +#define ADC(value) \ +{ \ + UINT32 ah = AFD & 0xff00, c = AFD & 1; \ + UINT32 res = (UINT8)((ah >> 8) + value + c); \ + F = SZHVC_add[(c << 16) | ah | res]; \ + A = res; \ +} + +/*************************************************************** + * SUB n + ***************************************************************/ +#define SUB(value) \ +{ \ + UINT32 ah = AFD & 0xff00; \ + UINT32 res = (UINT8)((ah >> 8) - value); \ + F = SZHVC_sub[ah | res]; \ + A = res; \ +} + +/*************************************************************** + * SBC A,n + ***************************************************************/ +#define SBC(value) \ +{ \ + UINT32 ah = AFD & 0xff00, c = AFD & 1; \ + UINT32 res = (UINT8)((ah >> 8) - value - c); \ + F = SZHVC_sub[(c<<16) | ah | res]; \ + A = res; \ +} + +/*************************************************************** + * NEG + ***************************************************************/ +#define NEG { \ + UINT8 value = A; \ + A = 0; \ + SUB(value); \ +} + +/*************************************************************** + * DAA + ***************************************************************/ +#define DAA { \ + UINT8 a = A; \ + if (F & NF) { \ + if ((F&HF) | ((A&0xf)>9)) a-=6; \ + if ((F&CF) | (A>0x99)) a-=0x60; \ + } \ + else { \ + if ((F&HF) | ((A&0xf)>9)) a+=6; \ + if ((F&CF) | (A>0x99)) a+=0x60; \ + } \ + \ + F = (F&(CF|NF)) | (A>0x99) | ((A^a)&HF) | SZP[a]; \ + A = a; \ +} + +/*************************************************************** + * AND n + ***************************************************************/ +#define AND(value) \ + A &= value; \ + F = SZP[A] | HF + +/*************************************************************** + * OR n + ***************************************************************/ +#define OR(value) \ + A |= value; \ + F = SZP[A] + +/*************************************************************** + * XOR n + ***************************************************************/ +#define XOR(value) \ + A ^= value; \ + F = SZP[A] + +/*************************************************************** + * CP n + ***************************************************************/ +#define CP(value) \ +{ \ + unsigned val = value; \ + UINT32 ah = AFD & 0xff00; \ + UINT32 res = (UINT8)((ah >> 8) - val); \ + F = (SZHVC_sub[ah | res] & ~(YF | XF)) | (val & (YF | XF)); \ +} + +/*************************************************************** + * EX AF,AF' + ***************************************************************/ +#define EX_AF \ +{ \ + PAIR tmp; \ + tmp = Z80.af; Z80.af = Z80.af2; Z80.af2 = tmp; \ +} + +/*************************************************************** + * EX DE,HL + ***************************************************************/ +#define EX_DE_HL \ +{ \ + PAIR tmp; \ + tmp = Z80.de; Z80.de = Z80.hl; Z80.hl = tmp; \ +} + +/*************************************************************** + * EXX + ***************************************************************/ +#define EXX \ +{ \ + PAIR tmp; \ + tmp = Z80.bc; Z80.bc = Z80.bc2; Z80.bc2 = tmp; \ + tmp = Z80.de; Z80.de = Z80.de2; Z80.de2 = tmp; \ + tmp = Z80.hl; Z80.hl = Z80.hl2; Z80.hl2 = tmp; \ +} + +/*************************************************************** + * EX (SP),r16 + ***************************************************************/ +#define EXSP(DR) \ +{ \ + PAIR tmp = { { 0, 0, 0, 0 } }; \ + RM16( SPD, &tmp ); \ + WM16( SPD, &Z80.DR ); \ + Z80.DR = tmp; \ + WZ = Z80.DR.d; \ +} + + +/*************************************************************** + * ADD16 + ***************************************************************/ +#define ADD16(DR,SR) \ +{ \ + UINT32 res = Z80.DR.d + Z80.SR.d; \ + WZ = Z80.DR.d + 1; \ + F = (F & (SF | ZF | VF)) | \ + (((Z80.DR.d ^ res ^ Z80.SR.d) >> 8) & HF) | \ + ((res >> 16) & CF) | ((res >> 8) & (YF | XF)); \ + Z80.DR.w.l = (UINT16)res; \ +} + +/*************************************************************** + * ADC r16,r16 + ***************************************************************/ +#define ADC16(Reg) \ +{ \ + UINT32 res = HLD + Z80.Reg.d + (F & CF); \ + WZ = HL + 1; \ + F = (((HLD ^ res ^ Z80.Reg.d) >> 8) & HF) | \ + ((res >> 16) & CF) | \ + ((res >> 8) & (SF | YF | XF)) | \ + ((res & 0xffff) ? 0 : ZF) | \ + (((Z80.Reg.d ^ HLD ^ 0x8000) & (Z80.Reg.d ^ res) & 0x8000) >> 13); \ + HL = (UINT16)res; \ +} + +/*************************************************************** + * SBC r16,r16 + ***************************************************************/ +#define SBC16(Reg) \ +{ \ + UINT32 res = HLD - Z80.Reg.d - (F & CF); \ + WZ = HL + 1; \ + F = (((HLD ^ res ^ Z80.Reg.d) >> 8) & HF) | NF | \ + ((res >> 16) & CF) | \ + ((res >> 8) & (SF | YF | XF)) | \ + ((res & 0xffff) ? 0 : ZF) | \ + (((Z80.Reg.d ^ HLD) & (HLD ^ res) &0x8000) >> 13); \ + HL = (UINT16)res; \ +} + +/*************************************************************** + * RLC r8 + ***************************************************************/ +INLINE UINT8 RLC(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x80) ? CF : 0; + res = ((res << 1) | (res >> 7)) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * RRC r8 + ***************************************************************/ +INLINE UINT8 RRC(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x01) ? CF : 0; + res = ((res >> 1) | (res << 7)) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * RL r8 + ***************************************************************/ +INLINE UINT8 RL(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x80) ? CF : 0; + res = ((res << 1) | (F & CF)) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * RR r8 + ***************************************************************/ +INLINE UINT8 RR(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x01) ? CF : 0; + res = ((res >> 1) | (F << 7)) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * SLA r8 + ***************************************************************/ +INLINE UINT8 SLA(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x80) ? CF : 0; + res = (res << 1) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * SRA r8 + ***************************************************************/ +INLINE UINT8 SRA(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x01) ? CF : 0; + res = ((res >> 1) | (res & 0x80)) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * SLL r8 + ***************************************************************/ +INLINE UINT8 SLL(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x80) ? CF : 0; + res = ((res << 1) | 0x01) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * SRL r8 + ***************************************************************/ +INLINE UINT8 SRL(UINT8 value) +{ + unsigned res = value; + unsigned c = (res & 0x01) ? CF : 0; + res = (res >> 1) & 0xff; + F = SZP[res] | c; + return res; +} + +/*************************************************************** + * BIT bit,r8 + ***************************************************************/ +#undef BIT +#define BIT(bit,reg) \ + F = (F & CF) | HF | (SZ_BIT[reg & (1<>8) & (YF|XF)) + +/*************************************************************** + * RES bit,r8 + ***************************************************************/ +INLINE UINT8 RES(UINT8 bit, UINT8 value) +{ + return value & ~(1< flag 5 */ \ + if( (A + io) & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ + HL++; DE++; BC--; \ + if( BC ) F |= VF; \ +} + +/*************************************************************** + * CPI + ***************************************************************/ +#define CPI { \ + UINT8 val = RM(HL); \ + UINT8 res = A - val; \ + WZ++; \ + HL++; BC--; \ + F = (F & CF) | (SZ[res]&~(YF|XF)) | ((A^val^res)&HF) | NF; \ + if( F & HF ) res -= 1; \ + if( res & 0x02 ) F |= YF; /* bit 1 -> flag 5 */ \ + if( res & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ + if( BC ) F |= VF; \ +} + +/*************************************************************** + * INI + ***************************************************************/ +#define INI { \ + unsigned t; \ + UINT8 io = IN(BC); \ + WZ = BC + 1; \ + CC(ex,0xa2); \ + B--; \ + WM( HL, io ); \ + HL++; \ + F = SZ[B]; \ + t = (unsigned)((C + 1) & 0xff) + (unsigned)io; \ + if( io & SF ) F |= NF; \ + if( t & 0x100 ) F |= HF | CF; \ + F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ +} + +/*************************************************************** + * OUTI + ***************************************************************/ +#define OUTI { \ + unsigned t; \ + UINT8 io = RM(HL); \ + B--; \ + WZ = BC + 1; \ + OUT( BC, io ); \ + HL++; \ + F = SZ[B]; \ + t = (unsigned)L + (unsigned)io; \ + if( io & SF ) F |= NF; \ + if( t & 0x100 ) F |= HF | CF; \ + F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ +} + +/*************************************************************** + * LDD + ***************************************************************/ +#define LDD { \ + UINT8 io = RM(HL); \ + WM( DE, io ); \ + F &= SF | ZF | CF; \ + if( (A + io) & 0x02 ) F |= YF; /* bit 1 -> flag 5 */ \ + if( (A + io) & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ + HL--; DE--; BC--; \ + if( BC ) F |= VF; \ +} + +/*************************************************************** + * CPD + ***************************************************************/ +#define CPD { \ + UINT8 val = RM(HL); \ + UINT8 res = A - val; \ + WZ--; \ + HL--; BC--; \ + F = (F & CF) | (SZ[res]&~(YF|XF)) | ((A^val^res)&HF) | NF; \ + if( F & HF ) res -= 1; \ + if( res & 0x02 ) F |= YF; /* bit 1 -> flag 5 */ \ + if( res & 0x08 ) F |= XF; /* bit 3 -> flag 3 */ \ + if( BC ) F |= VF; \ +} + +/*************************************************************** + * IND + ***************************************************************/ +#define IND { \ + unsigned t; \ + UINT8 io = IN(BC); \ + WZ = BC - 1; \ + CC(ex,0xaa); \ + B--; \ + WM( HL, io ); \ + HL--; \ + F = SZ[B]; \ + t = ((unsigned)(C - 1) & 0xff) + (unsigned)io; \ + if( io & SF ) F |= NF; \ + if( t & 0x100 ) F |= HF | CF; \ + F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ +} + +/*************************************************************** + * OUTD + ***************************************************************/ +#define OUTD { \ + unsigned t; \ + UINT8 io = RM(HL); \ + B--; \ + WZ = BC - 1; \ + OUT( BC, io ); \ + HL--; \ + F = SZ[B]; \ + t = (unsigned)L + (unsigned)io; \ + if( io & SF ) F |= NF; \ + if( t & 0x100 ) F |= HF | CF; \ + F |= SZP[(UINT8)(t & 0x07) ^ B] & PF; \ +} + +/*************************************************************** + * LDIR + ***************************************************************/ +#define LDIR \ + LDI; \ + if( BC ) \ + { \ + PC -= 2; \ + WZ = PC + 1; \ + CC(ex,0xb0); \ + } + +/*************************************************************** + * CPIR + ***************************************************************/ +#define CPIR \ + CPI; \ + if( BC && !(F & ZF) ) \ + { \ + PC -= 2; \ + WZ = PC + 1; \ + CC(ex,0xb1); \ + } + +/*************************************************************** + * INIR + ***************************************************************/ +#define INIR \ + INI; \ + if( B ) \ + { \ + PC -= 2; \ + CC(ex,0xb2); \ + } + +/*************************************************************** + * OTIR + ***************************************************************/ +#define OTIR \ + OUTI; \ + if( B ) \ + { \ + PC -= 2; \ + CC(ex,0xb3); \ + } + +/*************************************************************** + * LDDR + ***************************************************************/ +#define LDDR \ + LDD; \ + if( BC ) \ + { \ + PC -= 2; \ + WZ = PC + 1; \ + CC(ex,0xb8); \ + } + +/*************************************************************** + * CPDR + ***************************************************************/ +#define CPDR \ + CPD; \ + if( BC && !(F & ZF) ) \ + { \ + PC -= 2; \ + WZ = PC + 1; \ + CC(ex,0xb9); \ + } + +/*************************************************************** + * INDR + ***************************************************************/ +#define INDR \ + IND; \ + if( B ) \ + { \ + PC -= 2; \ + CC(ex,0xba); \ + } + +/*************************************************************** + * OTDR + ***************************************************************/ +#define OTDR \ + OUTD; \ + if( B ) \ + { \ + PC -= 2; \ + CC(ex,0xbb); \ + } + +/*************************************************************** + * EI + ***************************************************************/ +#define EI { \ + IFF1 = IFF2 = 1; \ + Z80.after_ei = TRUE; \ +} + +/********************************************************** + * opcodes with CB prefix + * rotate, shift and bit operations + **********************************************************/ +OP(cb,00) { B = RLC(B); } /* RLC B */ +OP(cb,01) { C = RLC(C); } /* RLC C */ +OP(cb,02) { D = RLC(D); } /* RLC D */ +OP(cb,03) { E = RLC(E); } /* RLC E */ +OP(cb,04) { H = RLC(H); } /* RLC H */ +OP(cb,05) { L = RLC(L); } /* RLC L */ +OP(cb,06) { WM( HL, RLC(RM(HL)) ); } /* RLC (HL) */ +OP(cb,07) { A = RLC(A); } /* RLC A */ + +OP(cb,08) { B = RRC(B); } /* RRC B */ +OP(cb,09) { C = RRC(C); } /* RRC C */ +OP(cb,0a) { D = RRC(D); } /* RRC D */ +OP(cb,0b) { E = RRC(E); } /* RRC E */ +OP(cb,0c) { H = RRC(H); } /* RRC H */ +OP(cb,0d) { L = RRC(L); } /* RRC L */ +OP(cb,0e) { WM( HL, RRC(RM(HL)) ); } /* RRC (HL) */ +OP(cb,0f) { A = RRC(A); } /* RRC A */ + +OP(cb,10) { B = RL(B); } /* RL B */ +OP(cb,11) { C = RL(C); } /* RL C */ +OP(cb,12) { D = RL(D); } /* RL D */ +OP(cb,13) { E = RL(E); } /* RL E */ +OP(cb,14) { H = RL(H); } /* RL H */ +OP(cb,15) { L = RL(L); } /* RL L */ +OP(cb,16) { WM( HL, RL(RM(HL)) ); } /* RL (HL) */ +OP(cb,17) { A = RL(A); } /* RL A */ + +OP(cb,18) { B = RR(B); } /* RR B */ +OP(cb,19) { C = RR(C); } /* RR C */ +OP(cb,1a) { D = RR(D); } /* RR D */ +OP(cb,1b) { E = RR(E); } /* RR E */ +OP(cb,1c) { H = RR(H); } /* RR H */ +OP(cb,1d) { L = RR(L); } /* RR L */ +OP(cb,1e) { WM( HL, RR(RM(HL)) ); } /* RR (HL) */ +OP(cb,1f) { A = RR(A); } /* RR A */ + +OP(cb,20) { B = SLA(B); } /* SLA B */ +OP(cb,21) { C = SLA(C); } /* SLA C */ +OP(cb,22) { D = SLA(D); } /* SLA D */ +OP(cb,23) { E = SLA(E); } /* SLA E */ +OP(cb,24) { H = SLA(H); } /* SLA H */ +OP(cb,25) { L = SLA(L); } /* SLA L */ +OP(cb,26) { WM( HL, SLA(RM(HL)) ); } /* SLA (HL) */ +OP(cb,27) { A = SLA(A); } /* SLA A */ + +OP(cb,28) { B = SRA(B); } /* SRA B */ +OP(cb,29) { C = SRA(C); } /* SRA C */ +OP(cb,2a) { D = SRA(D); } /* SRA D */ +OP(cb,2b) { E = SRA(E); } /* SRA E */ +OP(cb,2c) { H = SRA(H); } /* SRA H */ +OP(cb,2d) { L = SRA(L); } /* SRA L */ +OP(cb,2e) { WM( HL, SRA(RM(HL)) ); } /* SRA (HL) */ +OP(cb,2f) { A = SRA(A); } /* SRA A */ + +OP(cb,30) { B = SLL(B); } /* SLL B */ +OP(cb,31) { C = SLL(C); } /* SLL C */ +OP(cb,32) { D = SLL(D); } /* SLL D */ +OP(cb,33) { E = SLL(E); } /* SLL E */ +OP(cb,34) { H = SLL(H); } /* SLL H */ +OP(cb,35) { L = SLL(L); } /* SLL L */ +OP(cb,36) { WM( HL, SLL(RM(HL)) ); } /* SLL (HL) */ +OP(cb,37) { A = SLL(A); } /* SLL A */ + +OP(cb,38) { B = SRL(B); } /* SRL B */ +OP(cb,39) { C = SRL(C); } /* SRL C */ +OP(cb,3a) { D = SRL(D); } /* SRL D */ +OP(cb,3b) { E = SRL(E); } /* SRL E */ +OP(cb,3c) { H = SRL(H); } /* SRL H */ +OP(cb,3d) { L = SRL(L); } /* SRL L */ +OP(cb,3e) { WM( HL, SRL(RM(HL)) ); } /* SRL (HL) */ +OP(cb,3f) { A = SRL(A); } /* SRL A */ + +OP(cb,40) { BIT(0,B); } /* BIT 0,B */ +OP(cb,41) { BIT(0,C); } /* BIT 0,C */ +OP(cb,42) { BIT(0,D); } /* BIT 0,D */ +OP(cb,43) { BIT(0,E); } /* BIT 0,E */ +OP(cb,44) { BIT(0,H); } /* BIT 0,H */ +OP(cb,45) { BIT(0,L); } /* BIT 0,L */ +OP(cb,46) { BIT_HL(0,RM(HL)); } /* BIT 0,(HL) */ +OP(cb,47) { BIT(0,A); } /* BIT 0,A */ + +OP(cb,48) { BIT(1,B); } /* BIT 1,B */ +OP(cb,49) { BIT(1,C); } /* BIT 1,C */ +OP(cb,4a) { BIT(1,D); } /* BIT 1,D */ +OP(cb,4b) { BIT(1,E); } /* BIT 1,E */ +OP(cb,4c) { BIT(1,H); } /* BIT 1,H */ +OP(cb,4d) { BIT(1,L); } /* BIT 1,L */ +OP(cb,4e) { BIT_HL(1,RM(HL)); } /* BIT 1,(HL) */ +OP(cb,4f) { BIT(1,A); } /* BIT 1,A */ + +OP(cb,50) { BIT(2,B); } /* BIT 2,B */ +OP(cb,51) { BIT(2,C); } /* BIT 2,C */ +OP(cb,52) { BIT(2,D); } /* BIT 2,D */ +OP(cb,53) { BIT(2,E); } /* BIT 2,E */ +OP(cb,54) { BIT(2,H); } /* BIT 2,H */ +OP(cb,55) { BIT(2,L); } /* BIT 2,L */ +OP(cb,56) { BIT_HL(2,RM(HL)); } /* BIT 2,(HL) */ +OP(cb,57) { BIT(2,A); } /* BIT 2,A */ + +OP(cb,58) { BIT(3,B); } /* BIT 3,B */ +OP(cb,59) { BIT(3,C); } /* BIT 3,C */ +OP(cb,5a) { BIT(3,D); } /* BIT 3,D */ +OP(cb,5b) { BIT(3,E); } /* BIT 3,E */ +OP(cb,5c) { BIT(3,H); } /* BIT 3,H */ +OP(cb,5d) { BIT(3,L); } /* BIT 3,L */ +OP(cb,5e) { BIT_HL(3,RM(HL)); } /* BIT 3,(HL) */ +OP(cb,5f) { BIT(3,A); } /* BIT 3,A */ + +OP(cb,60) { BIT(4,B); } /* BIT 4,B */ +OP(cb,61) { BIT(4,C); } /* BIT 4,C */ +OP(cb,62) { BIT(4,D); } /* BIT 4,D */ +OP(cb,63) { BIT(4,E); } /* BIT 4,E */ +OP(cb,64) { BIT(4,H); } /* BIT 4,H */ +OP(cb,65) { BIT(4,L); } /* BIT 4,L */ +OP(cb,66) { BIT_HL(4,RM(HL)); } /* BIT 4,(HL) */ +OP(cb,67) { BIT(4,A); } /* BIT 4,A */ + +OP(cb,68) { BIT(5,B); } /* BIT 5,B */ +OP(cb,69) { BIT(5,C); } /* BIT 5,C */ +OP(cb,6a) { BIT(5,D); } /* BIT 5,D */ +OP(cb,6b) { BIT(5,E); } /* BIT 5,E */ +OP(cb,6c) { BIT(5,H); } /* BIT 5,H */ +OP(cb,6d) { BIT(5,L); } /* BIT 5,L */ +OP(cb,6e) { BIT_HL(5,RM(HL)); } /* BIT 5,(HL) */ +OP(cb,6f) { BIT(5,A); } /* BIT 5,A */ + +OP(cb,70) { BIT(6,B); } /* BIT 6,B */ +OP(cb,71) { BIT(6,C); } /* BIT 6,C */ +OP(cb,72) { BIT(6,D); } /* BIT 6,D */ +OP(cb,73) { BIT(6,E); } /* BIT 6,E */ +OP(cb,74) { BIT(6,H); } /* BIT 6,H */ +OP(cb,75) { BIT(6,L); } /* BIT 6,L */ +OP(cb,76) { BIT_HL(6,RM(HL)); } /* BIT 6,(HL) */ +OP(cb,77) { BIT(6,A); } /* BIT 6,A */ + +OP(cb,78) { BIT(7,B); } /* BIT 7,B */ +OP(cb,79) { BIT(7,C); } /* BIT 7,C */ +OP(cb,7a) { BIT(7,D); } /* BIT 7,D */ +OP(cb,7b) { BIT(7,E); } /* BIT 7,E */ +OP(cb,7c) { BIT(7,H); } /* BIT 7,H */ +OP(cb,7d) { BIT(7,L); } /* BIT 7,L */ +OP(cb,7e) { BIT_HL(7,RM(HL)); } /* BIT 7,(HL) */ +OP(cb,7f) { BIT(7,A); } /* BIT 7,A */ + +OP(cb,80) { B = RES(0,B); } /* RES 0,B */ +OP(cb,81) { C = RES(0,C); } /* RES 0,C */ +OP(cb,82) { D = RES(0,D); } /* RES 0,D */ +OP(cb,83) { E = RES(0,E); } /* RES 0,E */ +OP(cb,84) { H = RES(0,H); } /* RES 0,H */ +OP(cb,85) { L = RES(0,L); } /* RES 0,L */ +OP(cb,86) { WM( HL, RES(0,RM(HL)) ); } /* RES 0,(HL) */ +OP(cb,87) { A = RES(0,A); } /* RES 0,A */ + +OP(cb,88) { B = RES(1,B); } /* RES 1,B */ +OP(cb,89) { C = RES(1,C); } /* RES 1,C */ +OP(cb,8a) { D = RES(1,D); } /* RES 1,D */ +OP(cb,8b) { E = RES(1,E); } /* RES 1,E */ +OP(cb,8c) { H = RES(1,H); } /* RES 1,H */ +OP(cb,8d) { L = RES(1,L); } /* RES 1,L */ +OP(cb,8e) { WM( HL, RES(1,RM(HL)) ); } /* RES 1,(HL) */ +OP(cb,8f) { A = RES(1,A); } /* RES 1,A */ + +OP(cb,90) { B = RES(2,B); } /* RES 2,B */ +OP(cb,91) { C = RES(2,C); } /* RES 2,C */ +OP(cb,92) { D = RES(2,D); } /* RES 2,D */ +OP(cb,93) { E = RES(2,E); } /* RES 2,E */ +OP(cb,94) { H = RES(2,H); } /* RES 2,H */ +OP(cb,95) { L = RES(2,L); } /* RES 2,L */ +OP(cb,96) { WM( HL, RES(2,RM(HL)) ); } /* RES 2,(HL) */ +OP(cb,97) { A = RES(2,A); } /* RES 2,A */ + +OP(cb,98) { B = RES(3,B); } /* RES 3,B */ +OP(cb,99) { C = RES(3,C); } /* RES 3,C */ +OP(cb,9a) { D = RES(3,D); } /* RES 3,D */ +OP(cb,9b) { E = RES(3,E); } /* RES 3,E */ +OP(cb,9c) { H = RES(3,H); } /* RES 3,H */ +OP(cb,9d) { L = RES(3,L); } /* RES 3,L */ +OP(cb,9e) { WM( HL, RES(3,RM(HL)) ); } /* RES 3,(HL) */ +OP(cb,9f) { A = RES(3,A); } /* RES 3,A */ + +OP(cb,a0) { B = RES(4,B); } /* RES 4,B */ +OP(cb,a1) { C = RES(4,C); } /* RES 4,C */ +OP(cb,a2) { D = RES(4,D); } /* RES 4,D */ +OP(cb,a3) { E = RES(4,E); } /* RES 4,E */ +OP(cb,a4) { H = RES(4,H); } /* RES 4,H */ +OP(cb,a5) { L = RES(4,L); } /* RES 4,L */ +OP(cb,a6) { WM( HL, RES(4,RM(HL)) ); } /* RES 4,(HL) */ +OP(cb,a7) { A = RES(4,A); } /* RES 4,A */ + +OP(cb,a8) { B = RES(5,B); } /* RES 5,B */ +OP(cb,a9) { C = RES(5,C); } /* RES 5,C */ +OP(cb,aa) { D = RES(5,D); } /* RES 5,D */ +OP(cb,ab) { E = RES(5,E); } /* RES 5,E */ +OP(cb,ac) { H = RES(5,H); } /* RES 5,H */ +OP(cb,ad) { L = RES(5,L); } /* RES 5,L */ +OP(cb,ae) { WM( HL, RES(5,RM(HL)) ); } /* RES 5,(HL) */ +OP(cb,af) { A = RES(5,A); } /* RES 5,A */ + +OP(cb,b0) { B = RES(6,B); } /* RES 6,B */ +OP(cb,b1) { C = RES(6,C); } /* RES 6,C */ +OP(cb,b2) { D = RES(6,D); } /* RES 6,D */ +OP(cb,b3) { E = RES(6,E); } /* RES 6,E */ +OP(cb,b4) { H = RES(6,H); } /* RES 6,H */ +OP(cb,b5) { L = RES(6,L); } /* RES 6,L */ +OP(cb,b6) { WM( HL, RES(6,RM(HL)) ); } /* RES 6,(HL) */ +OP(cb,b7) { A = RES(6,A); } /* RES 6,A */ + +OP(cb,b8) { B = RES(7,B); } /* RES 7,B */ +OP(cb,b9) { C = RES(7,C); } /* RES 7,C */ +OP(cb,ba) { D = RES(7,D); } /* RES 7,D */ +OP(cb,bb) { E = RES(7,E); } /* RES 7,E */ +OP(cb,bc) { H = RES(7,H); } /* RES 7,H */ +OP(cb,bd) { L = RES(7,L); } /* RES 7,L */ +OP(cb,be) { WM( HL, RES(7,RM(HL)) ); } /* RES 7,(HL) */ +OP(cb,bf) { A = RES(7,A); } /* RES 7,A */ + +OP(cb,c0) { B = SET(0,B); } /* SET 0,B */ +OP(cb,c1) { C = SET(0,C); } /* SET 0,C */ +OP(cb,c2) { D = SET(0,D); } /* SET 0,D */ +OP(cb,c3) { E = SET(0,E); } /* SET 0,E */ +OP(cb,c4) { H = SET(0,H); } /* SET 0,H */ +OP(cb,c5) { L = SET(0,L); } /* SET 0,L */ +OP(cb,c6) { WM( HL, SET(0,RM(HL)) ); } /* SET 0,(HL) */ +OP(cb,c7) { A = SET(0,A); } /* SET 0,A */ + +OP(cb,c8) { B = SET(1,B); } /* SET 1,B */ +OP(cb,c9) { C = SET(1,C); } /* SET 1,C */ +OP(cb,ca) { D = SET(1,D); } /* SET 1,D */ +OP(cb,cb) { E = SET(1,E); } /* SET 1,E */ +OP(cb,cc) { H = SET(1,H); } /* SET 1,H */ +OP(cb,cd) { L = SET(1,L); } /* SET 1,L */ +OP(cb,ce) { WM( HL, SET(1,RM(HL)) ); } /* SET 1,(HL) */ +OP(cb,cf) { A = SET(1,A); } /* SET 1,A */ + +OP(cb,d0) { B = SET(2,B); } /* SET 2,B */ +OP(cb,d1) { C = SET(2,C); } /* SET 2,C */ +OP(cb,d2) { D = SET(2,D); } /* SET 2,D */ +OP(cb,d3) { E = SET(2,E); } /* SET 2,E */ +OP(cb,d4) { H = SET(2,H); } /* SET 2,H */ +OP(cb,d5) { L = SET(2,L); } /* SET 2,L */ +OP(cb,d6) { WM( HL, SET(2,RM(HL)) ); } /* SET 2,(HL) */ +OP(cb,d7) { A = SET(2,A); } /* SET 2,A */ + +OP(cb,d8) { B = SET(3,B); } /* SET 3,B */ +OP(cb,d9) { C = SET(3,C); } /* SET 3,C */ +OP(cb,da) { D = SET(3,D); } /* SET 3,D */ +OP(cb,db) { E = SET(3,E); } /* SET 3,E */ +OP(cb,dc) { H = SET(3,H); } /* SET 3,H */ +OP(cb,dd) { L = SET(3,L); } /* SET 3,L */ +OP(cb,de) { WM( HL, SET(3,RM(HL)) ); } /* SET 3,(HL) */ +OP(cb,df) { A = SET(3,A); } /* SET 3,A */ + +OP(cb,e0) { B = SET(4,B); } /* SET 4,B */ +OP(cb,e1) { C = SET(4,C); } /* SET 4,C */ +OP(cb,e2) { D = SET(4,D); } /* SET 4,D */ +OP(cb,e3) { E = SET(4,E); } /* SET 4,E */ +OP(cb,e4) { H = SET(4,H); } /* SET 4,H */ +OP(cb,e5) { L = SET(4,L); } /* SET 4,L */ +OP(cb,e6) { WM( HL, SET(4,RM(HL)) ); } /* SET 4,(HL) */ +OP(cb,e7) { A = SET(4,A); } /* SET 4,A */ + +OP(cb,e8) { B = SET(5,B); } /* SET 5,B */ +OP(cb,e9) { C = SET(5,C); } /* SET 5,C */ +OP(cb,ea) { D = SET(5,D); } /* SET 5,D */ +OP(cb,eb) { E = SET(5,E); } /* SET 5,E */ +OP(cb,ec) { H = SET(5,H); } /* SET 5,H */ +OP(cb,ed) { L = SET(5,L); } /* SET 5,L */ +OP(cb,ee) { WM( HL, SET(5,RM(HL)) ); } /* SET 5,(HL) */ +OP(cb,ef) { A = SET(5,A); } /* SET 5,A */ + +OP(cb,f0) { B = SET(6,B); } /* SET 6,B */ +OP(cb,f1) { C = SET(6,C); } /* SET 6,C */ +OP(cb,f2) { D = SET(6,D); } /* SET 6,D */ +OP(cb,f3) { E = SET(6,E); } /* SET 6,E */ +OP(cb,f4) { H = SET(6,H); } /* SET 6,H */ +OP(cb,f5) { L = SET(6,L); } /* SET 6,L */ +OP(cb,f6) { WM( HL, SET(6,RM(HL)) ); } /* SET 6,(HL) */ +OP(cb,f7) { A = SET(6,A); } /* SET 6,A */ + +OP(cb,f8) { B = SET(7,B); } /* SET 7,B */ +OP(cb,f9) { C = SET(7,C); } /* SET 7,C */ +OP(cb,fa) { D = SET(7,D); } /* SET 7,D */ +OP(cb,fb) { E = SET(7,E); } /* SET 7,E */ +OP(cb,fc) { H = SET(7,H); } /* SET 7,H */ +OP(cb,fd) { L = SET(7,L); } /* SET 7,L */ +OP(cb,fe) { WM( HL, SET(7,RM(HL)) ); } /* SET 7,(HL) */ +OP(cb,ff) { A = SET(7,A); } /* SET 7,A */ + + +/********************************************************** +* opcodes with DD/FD CB prefix +* rotate, shift and bit operations with (IX+o) +**********************************************************/ +OP(xycb,00) { B = RLC( RM(EA) ); WM( EA,B ); } /* RLC B=(XY+o) */ +OP(xycb,01) { C = RLC( RM(EA) ); WM( EA,C ); } /* RLC C=(XY+o) */ +OP(xycb,02) { D = RLC( RM(EA) ); WM( EA,D ); } /* RLC D=(XY+o) */ +OP(xycb,03) { E = RLC( RM(EA) ); WM( EA,E ); } /* RLC E=(XY+o) */ +OP(xycb,04) { H = RLC( RM(EA) ); WM( EA,H ); } /* RLC H=(XY+o) */ +OP(xycb,05) { L = RLC( RM(EA) ); WM( EA,L ); } /* RLC L=(XY+o) */ +OP(xycb,06) { WM( EA, RLC( RM(EA) ) ); } /* RLC (XY+o) */ +OP(xycb,07) { A = RLC( RM(EA) ); WM( EA,A ); } /* RLC A=(XY+o) */ + +OP(xycb,08) { B = RRC( RM(EA) ); WM( EA,B ); } /* RRC B=(XY+o) */ +OP(xycb,09) { C = RRC( RM(EA) ); WM( EA,C ); } /* RRC C=(XY+o) */ +OP(xycb,0a) { D = RRC( RM(EA) ); WM( EA,D ); } /* RRC D=(XY+o) */ +OP(xycb,0b) { E = RRC( RM(EA) ); WM( EA,E ); } /* RRC E=(XY+o) */ +OP(xycb,0c) { H = RRC( RM(EA) ); WM( EA,H ); } /* RRC H=(XY+o) */ +OP(xycb,0d) { L = RRC( RM(EA) ); WM( EA,L ); } /* RRC L=(XY+o) */ +OP(xycb,0e) { WM( EA,RRC( RM(EA) ) ); } /* RRC (XY+o) */ +OP(xycb,0f) { A = RRC( RM(EA) ); WM( EA,A ); } /* RRC A=(XY+o) */ + +OP(xycb,10) { B = RL( RM(EA) ); WM( EA,B ); } /* RL B=(XY+o) */ +OP(xycb,11) { C = RL( RM(EA) ); WM( EA,C ); } /* RL C=(XY+o) */ +OP(xycb,12) { D = RL( RM(EA) ); WM( EA,D ); } /* RL D=(XY+o) */ +OP(xycb,13) { E = RL( RM(EA) ); WM( EA,E ); } /* RL E=(XY+o) */ +OP(xycb,14) { H = RL( RM(EA) ); WM( EA,H ); } /* RL H=(XY+o) */ +OP(xycb,15) { L = RL( RM(EA) ); WM( EA,L ); } /* RL L=(XY+o) */ +OP(xycb,16) { WM( EA,RL( RM(EA) ) ); } /* RL (XY+o) */ +OP(xycb,17) { A = RL( RM(EA) ); WM( EA,A ); } /* RL A=(XY+o) */ + +OP(xycb,18) { B = RR( RM(EA) ); WM( EA,B ); } /* RR B=(XY+o) */ +OP(xycb,19) { C = RR( RM(EA) ); WM( EA,C ); } /* RR C=(XY+o) */ +OP(xycb,1a) { D = RR( RM(EA) ); WM( EA,D ); } /* RR D=(XY+o) */ +OP(xycb,1b) { E = RR( RM(EA) ); WM( EA,E ); } /* RR E=(XY+o) */ +OP(xycb,1c) { H = RR( RM(EA) ); WM( EA,H ); } /* RR H=(XY+o) */ +OP(xycb,1d) { L = RR( RM(EA) ); WM( EA,L ); } /* RR L=(XY+o) */ +OP(xycb,1e) { WM( EA,RR( RM(EA) ) ); } /* RR (XY+o) */ +OP(xycb,1f) { A = RR( RM(EA) ); WM( EA,A ); } /* RR A=(XY+o) */ + +OP(xycb,20) { B = SLA( RM(EA) ); WM( EA,B ); } /* SLA B=(XY+o) */ +OP(xycb,21) { C = SLA( RM(EA) ); WM( EA,C ); } /* SLA C=(XY+o) */ +OP(xycb,22) { D = SLA( RM(EA) ); WM( EA,D ); } /* SLA D=(XY+o) */ +OP(xycb,23) { E = SLA( RM(EA) ); WM( EA,E ); } /* SLA E=(XY+o) */ +OP(xycb,24) { H = SLA( RM(EA) ); WM( EA,H ); } /* SLA H=(XY+o) */ +OP(xycb,25) { L = SLA( RM(EA) ); WM( EA,L ); } /* SLA L=(XY+o) */ +OP(xycb,26) { WM( EA,SLA( RM(EA) ) ); } /* SLA (XY+o) */ +OP(xycb,27) { A = SLA( RM(EA) ); WM( EA,A ); } /* SLA A=(XY+o) */ + +OP(xycb,28) { B = SRA( RM(EA) ); WM( EA,B ); } /* SRA B=(XY+o) */ +OP(xycb,29) { C = SRA( RM(EA) ); WM( EA,C ); } /* SRA C=(XY+o) */ +OP(xycb,2a) { D = SRA( RM(EA) ); WM( EA,D ); } /* SRA D=(XY+o) */ +OP(xycb,2b) { E = SRA( RM(EA) ); WM( EA,E ); } /* SRA E=(XY+o) */ +OP(xycb,2c) { H = SRA( RM(EA) ); WM( EA,H ); } /* SRA H=(XY+o) */ +OP(xycb,2d) { L = SRA( RM(EA) ); WM( EA,L ); } /* SRA L=(XY+o) */ +OP(xycb,2e) { WM( EA,SRA( RM(EA) ) ); } /* SRA (XY+o) */ +OP(xycb,2f) { A = SRA( RM(EA) ); WM( EA,A ); } /* SRA A=(XY+o) */ + +OP(xycb,30) { B = SLL( RM(EA) ); WM( EA,B ); } /* SLL B=(XY+o) */ +OP(xycb,31) { C = SLL( RM(EA) ); WM( EA,C ); } /* SLL C=(XY+o) */ +OP(xycb,32) { D = SLL( RM(EA) ); WM( EA,D ); } /* SLL D=(XY+o) */ +OP(xycb,33) { E = SLL( RM(EA) ); WM( EA,E ); } /* SLL E=(XY+o) */ +OP(xycb,34) { H = SLL( RM(EA) ); WM( EA,H ); } /* SLL H=(XY+o) */ +OP(xycb,35) { L = SLL( RM(EA) ); WM( EA,L ); } /* SLL L=(XY+o) */ +OP(xycb,36) { WM( EA,SLL( RM(EA) ) ); } /* SLL (XY+o) */ +OP(xycb,37) { A = SLL( RM(EA) ); WM( EA,A ); } /* SLL A=(XY+o) */ + +OP(xycb,38) { B = SRL( RM(EA) ); WM( EA,B ); } /* SRL B=(XY+o) */ +OP(xycb,39) { C = SRL( RM(EA) ); WM( EA,C ); } /* SRL C=(XY+o) */ +OP(xycb,3a) { D = SRL( RM(EA) ); WM( EA,D ); } /* SRL D=(XY+o) */ +OP(xycb,3b) { E = SRL( RM(EA) ); WM( EA,E ); } /* SRL E=(XY+o) */ +OP(xycb,3c) { H = SRL( RM(EA) ); WM( EA,H ); } /* SRL H=(XY+o) */ +OP(xycb,3d) { L = SRL( RM(EA) ); WM( EA,L ); } /* SRL L=(XY+o) */ +OP(xycb,3e) { WM( EA,SRL( RM(EA) ) ); } /* SRL (XY+o) */ +OP(xycb,3f) { A = SRL( RM(EA) ); WM( EA,A ); } /* SRL A=(XY+o) */ + +OP(xycb,40) { xycb_46(); } /* BIT 0,(XY+o) */ +OP(xycb,41) { xycb_46(); } /* BIT 0,(XY+o) */ +OP(xycb,42) { xycb_46(); } /* BIT 0,(XY+o) */ +OP(xycb,43) { xycb_46(); } /* BIT 0,(XY+o) */ +OP(xycb,44) { xycb_46(); } /* BIT 0,(XY+o) */ +OP(xycb,45) { xycb_46(); } /* BIT 0,(XY+o) */ +OP(xycb,46) { BIT_XY(0,RM(EA)); } /* BIT 0,(XY+o) */ +OP(xycb,47) { xycb_46(); } /* BIT 0,(XY+o) */ + +OP(xycb,48) { xycb_4e(); } /* BIT 1,(XY+o) */ +OP(xycb,49) { xycb_4e(); } /* BIT 1,(XY+o) */ +OP(xycb,4a) { xycb_4e(); } /* BIT 1,(XY+o) */ +OP(xycb,4b) { xycb_4e(); } /* BIT 1,(XY+o) */ +OP(xycb,4c) { xycb_4e(); } /* BIT 1,(XY+o) */ +OP(xycb,4d) { xycb_4e(); } /* BIT 1,(XY+o) */ +OP(xycb,4e) { BIT_XY(1,RM(EA)); } /* BIT 1,(XY+o) */ +OP(xycb,4f) { xycb_4e(); } /* BIT 1,(XY+o) */ + +OP(xycb,50) { xycb_56(); } /* BIT 2,(XY+o) */ +OP(xycb,51) { xycb_56(); } /* BIT 2,(XY+o) */ +OP(xycb,52) { xycb_56(); } /* BIT 2,(XY+o) */ +OP(xycb,53) { xycb_56(); } /* BIT 2,(XY+o) */ +OP(xycb,54) { xycb_56(); } /* BIT 2,(XY+o) */ +OP(xycb,55) { xycb_56(); } /* BIT 2,(XY+o) */ +OP(xycb,56) { BIT_XY(2,RM(EA)); } /* BIT 2,(XY+o) */ +OP(xycb,57) { xycb_56(); } /* BIT 2,(XY+o) */ + +OP(xycb,58) { xycb_5e(); } /* BIT 3,(XY+o) */ +OP(xycb,59) { xycb_5e(); } /* BIT 3,(XY+o) */ +OP(xycb,5a) { xycb_5e(); } /* BIT 3,(XY+o) */ +OP(xycb,5b) { xycb_5e(); } /* BIT 3,(XY+o) */ +OP(xycb,5c) { xycb_5e(); } /* BIT 3,(XY+o) */ +OP(xycb,5d) { xycb_5e(); } /* BIT 3,(XY+o) */ +OP(xycb,5e) { BIT_XY(3,RM(EA)); } /* BIT 3,(XY+o) */ +OP(xycb,5f) { xycb_5e(); } /* BIT 3,(XY+o) */ + +OP(xycb,60) { xycb_66(); } /* BIT 4,(XY+o) */ +OP(xycb,61) { xycb_66(); } /* BIT 4,(XY+o) */ +OP(xycb,62) { xycb_66(); } /* BIT 4,(XY+o) */ +OP(xycb,63) { xycb_66(); } /* BIT 4,(XY+o) */ +OP(xycb,64) { xycb_66(); } /* BIT 4,(XY+o) */ +OP(xycb,65) { xycb_66(); } /* BIT 4,(XY+o) */ +OP(xycb,66) { BIT_XY(4,RM(EA)); } /* BIT 4,(XY+o) */ +OP(xycb,67) { xycb_66(); } /* BIT 4,(XY+o) */ + +OP(xycb,68) { xycb_6e(); } /* BIT 5,(XY+o) */ +OP(xycb,69) { xycb_6e(); } /* BIT 5,(XY+o) */ +OP(xycb,6a) { xycb_6e(); } /* BIT 5,(XY+o) */ +OP(xycb,6b) { xycb_6e(); } /* BIT 5,(XY+o) */ +OP(xycb,6c) { xycb_6e(); } /* BIT 5,(XY+o) */ +OP(xycb,6d) { xycb_6e(); } /* BIT 5,(XY+o) */ +OP(xycb,6e) { BIT_XY(5,RM(EA)); } /* BIT 5,(XY+o) */ +OP(xycb,6f) { xycb_6e(); } /* BIT 5,(XY+o) */ + +OP(xycb,70) { xycb_76(); } /* BIT 6,(XY+o) */ +OP(xycb,71) { xycb_76(); } /* BIT 6,(XY+o) */ +OP(xycb,72) { xycb_76(); } /* BIT 6,(XY+o) */ +OP(xycb,73) { xycb_76(); } /* BIT 6,(XY+o) */ +OP(xycb,74) { xycb_76(); } /* BIT 6,(XY+o) */ +OP(xycb,75) { xycb_76(); } /* BIT 6,(XY+o) */ +OP(xycb,76) { BIT_XY(6,RM(EA)); } /* BIT 6,(XY+o) */ +OP(xycb,77) { xycb_76(); } /* BIT 6,(XY+o) */ + +OP(xycb,78) { xycb_7e(); } /* BIT 7,(XY+o) */ +OP(xycb,79) { xycb_7e(); } /* BIT 7,(XY+o) */ +OP(xycb,7a) { xycb_7e(); } /* BIT 7,(XY+o) */ +OP(xycb,7b) { xycb_7e(); } /* BIT 7,(XY+o) */ +OP(xycb,7c) { xycb_7e(); } /* BIT 7,(XY+o) */ +OP(xycb,7d) { xycb_7e(); } /* BIT 7,(XY+o) */ +OP(xycb,7e) { BIT_XY(7,RM(EA)); } /* BIT 7,(XY+o) */ +OP(xycb,7f) { xycb_7e(); } /* BIT 7,(XY+o) */ + +OP(xycb,80) { B = RES(0, RM(EA) ); WM( EA,B ); } /* RES 0,B=(XY+o) */ +OP(xycb,81) { C = RES(0, RM(EA) ); WM( EA,C ); } /* RES 0,C=(XY+o) */ +OP(xycb,82) { D = RES(0, RM(EA) ); WM( EA,D ); } /* RES 0,D=(XY+o) */ +OP(xycb,83) { E = RES(0, RM(EA) ); WM( EA,E ); } /* RES 0,E=(XY+o) */ +OP(xycb,84) { H = RES(0, RM(EA) ); WM( EA,H ); } /* RES 0,H=(XY+o) */ +OP(xycb,85) { L = RES(0, RM(EA) ); WM( EA,L ); } /* RES 0,L=(XY+o) */ +OP(xycb,86) { WM( EA, RES(0,RM(EA)) ); } /* RES 0,(XY+o) */ +OP(xycb,87) { A = RES(0, RM(EA) ); WM( EA,A ); } /* RES 0,A=(XY+o) */ + +OP(xycb,88) { B = RES(1, RM(EA) ); WM( EA,B ); } /* RES 1,B=(XY+o) */ +OP(xycb,89) { C = RES(1, RM(EA) ); WM( EA,C ); } /* RES 1,C=(XY+o) */ +OP(xycb,8a) { D = RES(1, RM(EA) ); WM( EA,D ); } /* RES 1,D=(XY+o) */ +OP(xycb,8b) { E = RES(1, RM(EA) ); WM( EA,E ); } /* RES 1,E=(XY+o) */ +OP(xycb,8c) { H = RES(1, RM(EA) ); WM( EA,H ); } /* RES 1,H=(XY+o) */ +OP(xycb,8d) { L = RES(1, RM(EA) ); WM( EA,L ); } /* RES 1,L=(XY+o) */ +OP(xycb,8e) { WM( EA, RES(1,RM(EA)) ); } /* RES 1,(XY+o) */ +OP(xycb,8f) { A = RES(1, RM(EA) ); WM( EA,A ); } /* RES 1,A=(XY+o) */ + +OP(xycb,90) { B = RES(2, RM(EA) ); WM( EA,B ); } /* RES 2,B=(XY+o) */ +OP(xycb,91) { C = RES(2, RM(EA) ); WM( EA,C ); } /* RES 2,C=(XY+o) */ +OP(xycb,92) { D = RES(2, RM(EA) ); WM( EA,D ); } /* RES 2,D=(XY+o) */ +OP(xycb,93) { E = RES(2, RM(EA) ); WM( EA,E ); } /* RES 2,E=(XY+o) */ +OP(xycb,94) { H = RES(2, RM(EA) ); WM( EA,H ); } /* RES 2,H=(XY+o) */ +OP(xycb,95) { L = RES(2, RM(EA) ); WM( EA,L ); } /* RES 2,L=(XY+o) */ +OP(xycb,96) { WM( EA, RES(2,RM(EA)) ); } /* RES 2,(XY+o) */ +OP(xycb,97) { A = RES(2, RM(EA) ); WM( EA,A ); } /* RES 2,A=(XY+o) */ + +OP(xycb,98) { B = RES(3, RM(EA) ); WM( EA,B ); } /* RES 3,B=(XY+o) */ +OP(xycb,99) { C = RES(3, RM(EA) ); WM( EA,C ); } /* RES 3,C=(XY+o) */ +OP(xycb,9a) { D = RES(3, RM(EA) ); WM( EA,D ); } /* RES 3,D=(XY+o) */ +OP(xycb,9b) { E = RES(3, RM(EA) ); WM( EA,E ); } /* RES 3,E=(XY+o) */ +OP(xycb,9c) { H = RES(3, RM(EA) ); WM( EA,H ); } /* RES 3,H=(XY+o) */ +OP(xycb,9d) { L = RES(3, RM(EA) ); WM( EA,L ); } /* RES 3,L=(XY+o) */ +OP(xycb,9e) { WM( EA, RES(3,RM(EA)) ); } /* RES 3,(XY+o) */ +OP(xycb,9f) { A = RES(3, RM(EA) ); WM( EA,A ); } /* RES 3,A=(XY+o) */ + +OP(xycb,a0) { B = RES(4, RM(EA) ); WM( EA,B ); } /* RES 4,B=(XY+o) */ +OP(xycb,a1) { C = RES(4, RM(EA) ); WM( EA,C ); } /* RES 4,C=(XY+o) */ +OP(xycb,a2) { D = RES(4, RM(EA) ); WM( EA,D ); } /* RES 4,D=(XY+o) */ +OP(xycb,a3) { E = RES(4, RM(EA) ); WM( EA,E ); } /* RES 4,E=(XY+o) */ +OP(xycb,a4) { H = RES(4, RM(EA) ); WM( EA,H ); } /* RES 4,H=(XY+o) */ +OP(xycb,a5) { L = RES(4, RM(EA) ); WM( EA,L ); } /* RES 4,L=(XY+o) */ +OP(xycb,a6) { WM( EA, RES(4,RM(EA)) ); } /* RES 4,(XY+o) */ +OP(xycb,a7) { A = RES(4, RM(EA) ); WM( EA,A ); } /* RES 4,A=(XY+o) */ + +OP(xycb,a8) { B = RES(5, RM(EA) ); WM( EA,B ); } /* RES 5,B=(XY+o) */ +OP(xycb,a9) { C = RES(5, RM(EA) ); WM( EA,C ); } /* RES 5,C=(XY+o) */ +OP(xycb,aa) { D = RES(5, RM(EA) ); WM( EA,D ); } /* RES 5,D=(XY+o) */ +OP(xycb,ab) { E = RES(5, RM(EA) ); WM( EA,E ); } /* RES 5,E=(XY+o) */ +OP(xycb,ac) { H = RES(5, RM(EA) ); WM( EA,H ); } /* RES 5,H=(XY+o) */ +OP(xycb,ad) { L = RES(5, RM(EA) ); WM( EA,L ); } /* RES 5,L=(XY+o) */ +OP(xycb,ae) { WM( EA, RES(5,RM(EA)) ); } /* RES 5,(XY+o) */ +OP(xycb,af) { A = RES(5, RM(EA) ); WM( EA,A ); } /* RES 5,A=(XY+o) */ + +OP(xycb,b0) { B = RES(6, RM(EA) ); WM( EA,B ); } /* RES 6,B=(XY+o) */ +OP(xycb,b1) { C = RES(6, RM(EA) ); WM( EA,C ); } /* RES 6,C=(XY+o) */ +OP(xycb,b2) { D = RES(6, RM(EA) ); WM( EA,D ); } /* RES 6,D=(XY+o) */ +OP(xycb,b3) { E = RES(6, RM(EA) ); WM( EA,E ); } /* RES 6,E=(XY+o) */ +OP(xycb,b4) { H = RES(6, RM(EA) ); WM( EA,H ); } /* RES 6,H=(XY+o) */ +OP(xycb,b5) { L = RES(6, RM(EA) ); WM( EA,L ); } /* RES 6,L=(XY+o) */ +OP(xycb,b6) { WM( EA, RES(6,RM(EA)) ); } /* RES 6,(XY+o) */ +OP(xycb,b7) { A = RES(6, RM(EA) ); WM( EA,A ); } /* RES 6,A=(XY+o) */ + +OP(xycb,b8) { B = RES(7, RM(EA) ); WM( EA,B ); } /* RES 7,B=(XY+o) */ +OP(xycb,b9) { C = RES(7, RM(EA) ); WM( EA,C ); } /* RES 7,C=(XY+o) */ +OP(xycb,ba) { D = RES(7, RM(EA) ); WM( EA,D ); } /* RES 7,D=(XY+o) */ +OP(xycb,bb) { E = RES(7, RM(EA) ); WM( EA,E ); } /* RES 7,E=(XY+o) */ +OP(xycb,bc) { H = RES(7, RM(EA) ); WM( EA,H ); } /* RES 7,H=(XY+o) */ +OP(xycb,bd) { L = RES(7, RM(EA) ); WM( EA,L ); } /* RES 7,L=(XY+o) */ +OP(xycb,be) { WM( EA, RES(7,RM(EA)) ); } /* RES 7,(XY+o) */ +OP(xycb,bf) { A = RES(7, RM(EA) ); WM( EA,A ); } /* RES 7,A=(XY+o) */ + +OP(xycb,c0) { B = SET(0, RM(EA) ); WM( EA,B ); } /* SET 0,B=(XY+o) */ +OP(xycb,c1) { C = SET(0, RM(EA) ); WM( EA,C ); } /* SET 0,C=(XY+o) */ +OP(xycb,c2) { D = SET(0, RM(EA) ); WM( EA,D ); } /* SET 0,D=(XY+o) */ +OP(xycb,c3) { E = SET(0, RM(EA) ); WM( EA,E ); } /* SET 0,E=(XY+o) */ +OP(xycb,c4) { H = SET(0, RM(EA) ); WM( EA,H ); } /* SET 0,H=(XY+o) */ +OP(xycb,c5) { L = SET(0, RM(EA) ); WM( EA,L ); } /* SET 0,L=(XY+o) */ +OP(xycb,c6) { WM( EA, SET(0,RM(EA)) ); } /* SET 0,(XY+o) */ +OP(xycb,c7) { A = SET(0, RM(EA) ); WM( EA,A ); } /* SET 0,A=(XY+o) */ + +OP(xycb,c8) { B = SET(1, RM(EA) ); WM( EA,B ); } /* SET 1,B=(XY+o) */ +OP(xycb,c9) { C = SET(1, RM(EA) ); WM( EA,C ); } /* SET 1,C=(XY+o) */ +OP(xycb,ca) { D = SET(1, RM(EA) ); WM( EA,D ); } /* SET 1,D=(XY+o) */ +OP(xycb,cb) { E = SET(1, RM(EA) ); WM( EA,E ); } /* SET 1,E=(XY+o) */ +OP(xycb,cc) { H = SET(1, RM(EA) ); WM( EA,H ); } /* SET 1,H=(XY+o) */ +OP(xycb,cd) { L = SET(1, RM(EA) ); WM( EA,L ); } /* SET 1,L=(XY+o) */ +OP(xycb,ce) { WM( EA, SET(1,RM(EA)) ); } /* SET 1,(XY+o) */ +OP(xycb,cf) { A = SET(1, RM(EA) ); WM( EA,A ); } /* SET 1,A=(XY+o) */ + +OP(xycb,d0) { B = SET(2, RM(EA) ); WM( EA,B ); } /* SET 2,B=(XY+o) */ +OP(xycb,d1) { C = SET(2, RM(EA) ); WM( EA,C ); } /* SET 2,C=(XY+o) */ +OP(xycb,d2) { D = SET(2, RM(EA) ); WM( EA,D ); } /* SET 2,D=(XY+o) */ +OP(xycb,d3) { E = SET(2, RM(EA) ); WM( EA,E ); } /* SET 2,E=(XY+o) */ +OP(xycb,d4) { H = SET(2, RM(EA) ); WM( EA,H ); } /* SET 2,H=(XY+o) */ +OP(xycb,d5) { L = SET(2, RM(EA) ); WM( EA,L ); } /* SET 2,L=(XY+o) */ +OP(xycb,d6) { WM( EA, SET(2,RM(EA)) ); } /* SET 2,(XY+o) */ +OP(xycb,d7) { A = SET(2, RM(EA) ); WM( EA,A ); } /* SET 2,A=(XY+o) */ + +OP(xycb,d8) { B = SET(3, RM(EA) ); WM( EA,B ); } /* SET 3,B=(XY+o) */ +OP(xycb,d9) { C = SET(3, RM(EA) ); WM( EA,C ); } /* SET 3,C=(XY+o) */ +OP(xycb,da) { D = SET(3, RM(EA) ); WM( EA,D ); } /* SET 3,D=(XY+o) */ +OP(xycb,db) { E = SET(3, RM(EA) ); WM( EA,E ); } /* SET 3,E=(XY+o) */ +OP(xycb,dc) { H = SET(3, RM(EA) ); WM( EA,H ); } /* SET 3,H=(XY+o) */ +OP(xycb,dd) { L = SET(3, RM(EA) ); WM( EA,L ); } /* SET 3,L=(XY+o) */ +OP(xycb,de) { WM( EA, SET(3,RM(EA)) ); } /* SET 3,(XY+o) */ +OP(xycb,df) { A = SET(3, RM(EA) ); WM( EA,A ); } /* SET 3,A=(XY+o) */ + +OP(xycb,e0) { B = SET(4, RM(EA) ); WM( EA,B ); } /* SET 4,B=(XY+o) */ +OP(xycb,e1) { C = SET(4, RM(EA) ); WM( EA,C ); } /* SET 4,C=(XY+o) */ +OP(xycb,e2) { D = SET(4, RM(EA) ); WM( EA,D ); } /* SET 4,D=(XY+o) */ +OP(xycb,e3) { E = SET(4, RM(EA) ); WM( EA,E ); } /* SET 4,E=(XY+o) */ +OP(xycb,e4) { H = SET(4, RM(EA) ); WM( EA,H ); } /* SET 4,H=(XY+o) */ +OP(xycb,e5) { L = SET(4, RM(EA) ); WM( EA,L ); } /* SET 4,L=(XY+o) */ +OP(xycb,e6) { WM( EA, SET(4,RM(EA)) ); } /* SET 4,(XY+o) */ +OP(xycb,e7) { A = SET(4, RM(EA) ); WM( EA,A ); } /* SET 4,A=(XY+o) */ + +OP(xycb,e8) { B = SET(5, RM(EA) ); WM( EA,B ); } /* SET 5,B=(XY+o) */ +OP(xycb,e9) { C = SET(5, RM(EA) ); WM( EA,C ); } /* SET 5,C=(XY+o) */ +OP(xycb,ea) { D = SET(5, RM(EA) ); WM( EA,D ); } /* SET 5,D=(XY+o) */ +OP(xycb,eb) { E = SET(5, RM(EA) ); WM( EA,E ); } /* SET 5,E=(XY+o) */ +OP(xycb,ec) { H = SET(5, RM(EA) ); WM( EA,H ); } /* SET 5,H=(XY+o) */ +OP(xycb,ed) { L = SET(5, RM(EA) ); WM( EA,L ); } /* SET 5,L=(XY+o) */ +OP(xycb,ee) { WM( EA, SET(5,RM(EA)) ); } /* SET 5,(XY+o) */ +OP(xycb,ef) { A = SET(5, RM(EA) ); WM( EA,A ); } /* SET 5,A=(XY+o) */ + +OP(xycb,f0) { B = SET(6, RM(EA) ); WM( EA,B ); } /* SET 6,B=(XY+o) */ +OP(xycb,f1) { C = SET(6, RM(EA) ); WM( EA,C ); } /* SET 6,C=(XY+o) */ +OP(xycb,f2) { D = SET(6, RM(EA) ); WM( EA,D ); } /* SET 6,D=(XY+o) */ +OP(xycb,f3) { E = SET(6, RM(EA) ); WM( EA,E ); } /* SET 6,E=(XY+o) */ +OP(xycb,f4) { H = SET(6, RM(EA) ); WM( EA,H ); } /* SET 6,H=(XY+o) */ +OP(xycb,f5) { L = SET(6, RM(EA) ); WM( EA,L ); } /* SET 6,L=(XY+o) */ +OP(xycb,f6) { WM( EA, SET(6,RM(EA)) ); } /* SET 6,(XY+o) */ +OP(xycb,f7) { A = SET(6, RM(EA) ); WM( EA,A ); } /* SET 6,A=(XY+o) */ + +OP(xycb,f8) { B = SET(7, RM(EA) ); WM( EA,B ); } /* SET 7,B=(XY+o) */ +OP(xycb,f9) { C = SET(7, RM(EA) ); WM( EA,C ); } /* SET 7,C=(XY+o) */ +OP(xycb,fa) { D = SET(7, RM(EA) ); WM( EA,D ); } /* SET 7,D=(XY+o) */ +OP(xycb,fb) { E = SET(7, RM(EA) ); WM( EA,E ); } /* SET 7,E=(XY+o) */ +OP(xycb,fc) { H = SET(7, RM(EA) ); WM( EA,H ); } /* SET 7,H=(XY+o) */ +OP(xycb,fd) { L = SET(7, RM(EA) ); WM( EA,L ); } /* SET 7,L=(XY+o) */ +OP(xycb,fe) { WM( EA, SET(7,RM(EA)) ); } /* SET 7,(XY+o) */ +OP(xycb,ff) { A = SET(7, RM(EA) ); WM( EA,A ); } /* SET 7,A=(XY+o) */ + +OP(illegal,1) { +#if VERBOSE + logerror("Z80 #%d ill. opcode $%02x $%02x\n", + cpu_getactivecpu(), cpu_readop((PCD-1)&0xffff), cpu_readop(PCD)); +#endif +} +/********************************************************** + * IX register related opcodes (DD prefix) + **********************************************************/ +OP(dd,00) { illegal_1(); op_00(); } /* DB DD */ +OP(dd,01) { illegal_1(); op_01(); } /* DB DD */ +OP(dd,02) { illegal_1(); op_02(); } /* DB DD */ +OP(dd,03) { illegal_1(); op_03(); } /* DB DD */ +OP(dd,04) { illegal_1(); op_04(); } /* DB DD */ +OP(dd,05) { illegal_1(); op_05(); } /* DB DD */ +OP(dd,06) { illegal_1(); op_06(); } /* DB DD */ +OP(dd,07) { illegal_1(); op_07(); } /* DB DD */ + +OP(dd,08) { illegal_1(); op_08(); } /* DB DD */ +OP(dd,09) { ADD16(ix,bc); } /* ADD IX,BC */ +OP(dd,0a) { illegal_1(); op_0a(); } /* DB DD */ +OP(dd,0b) { illegal_1(); op_0b(); } /* DB DD */ +OP(dd,0c) { illegal_1(); op_0c(); } /* DB DD */ +OP(dd,0d) { illegal_1(); op_0d(); } /* DB DD */ +OP(dd,0e) { illegal_1(); op_0e(); } /* DB DD */ +OP(dd,0f) { illegal_1(); op_0f(); } /* DB DD */ + +OP(dd,10) { illegal_1(); op_10(); } /* DB DD */ +OP(dd,11) { illegal_1(); op_11(); } /* DB DD */ +OP(dd,12) { illegal_1(); op_12(); } /* DB DD */ +OP(dd,13) { illegal_1(); op_13(); } /* DB DD */ +OP(dd,14) { illegal_1(); op_14(); } /* DB DD */ +OP(dd,15) { illegal_1(); op_15(); } /* DB DD */ +OP(dd,16) { illegal_1(); op_16(); } /* DB DD */ +OP(dd,17) { illegal_1(); op_17(); } /* DB DD */ + +OP(dd,18) { illegal_1(); op_18(); } /* DB DD */ +OP(dd,19) { ADD16(ix,de); } /* ADD IX,DE */ +OP(dd,1a) { illegal_1(); op_1a(); } /* DB DD */ +OP(dd,1b) { illegal_1(); op_1b(); } /* DB DD */ +OP(dd,1c) { illegal_1(); op_1c(); } /* DB DD */ +OP(dd,1d) { illegal_1(); op_1d(); } /* DB DD */ +OP(dd,1e) { illegal_1(); op_1e(); } /* DB DD */ +OP(dd,1f) { illegal_1(); op_1f(); } /* DB DD */ + +OP(dd,20) { illegal_1(); op_20(); } /* DB DD */ +OP(dd,21) { IX = ARG16(); } /* LD IX,w */ +OP(dd,22) { EA = ARG16(); WM16( EA, &Z80.ix ); WZ = EA+1; } /* LD (w),IX */ +OP(dd,23) { IX++; } /* INC IX */ +OP(dd,24) { HX = INC(HX); } /* INC HX */ +OP(dd,25) { HX = DEC(HX); } /* DEC HX */ +OP(dd,26) { HX = ARG(); } /* LD HX,n */ +OP(dd,27) { illegal_1(); op_27(); } /* DB DD */ + +OP(dd,28) { illegal_1(); op_28(); } /* DB DD */ +OP(dd,29) { ADD16(ix,ix); } /* ADD IX,IX */ +OP(dd,2a) { EA = ARG16(); RM16( EA, &Z80.ix ); WZ = EA+1; } /* LD IX,(w) */ +OP(dd,2b) { IX--; } /* DEC IX */ +OP(dd,2c) { LX = INC(LX); } /* INC LX */ +OP(dd,2d) { LX = DEC(LX); } /* DEC LX */ +OP(dd,2e) { LX = ARG(); } /* LD LX,n */ +OP(dd,2f) { illegal_1(); op_2f(); } /* DB DD */ + +OP(dd,30) { illegal_1(); op_30(); } /* DB DD */ +OP(dd,31) { illegal_1(); op_31(); } /* DB DD */ +OP(dd,32) { illegal_1(); op_32(); } /* DB DD */ +OP(dd,33) { illegal_1(); op_33(); } /* DB DD */ +OP(dd,34) { EAX; WM( EA, INC(RM(EA)) ); } /* INC (IX+o) */ +OP(dd,35) { EAX; WM( EA, DEC(RM(EA)) ); } /* DEC (IX+o) */ +OP(dd,36) { EAX; WM( EA, ARG() ); } /* LD (IX+o),n */ +OP(dd,37) { illegal_1(); op_37(); } /* DB DD */ + +OP(dd,38) { illegal_1(); op_38(); } /* DB DD */ +OP(dd,39) { ADD16(ix,sp); } /* ADD IX,SP */ +OP(dd,3a) { illegal_1(); op_3a(); } /* DB DD */ +OP(dd,3b) { illegal_1(); op_3b(); } /* DB DD */ +OP(dd,3c) { illegal_1(); op_3c(); } /* DB DD */ +OP(dd,3d) { illegal_1(); op_3d(); } /* DB DD */ +OP(dd,3e) { illegal_1(); op_3e(); } /* DB DD */ +OP(dd,3f) { illegal_1(); op_3f(); } /* DB DD */ + +OP(dd,40) { illegal_1(); op_40(); } /* DB DD */ +OP(dd,41) { illegal_1(); op_41(); } /* DB DD */ +OP(dd,42) { illegal_1(); op_42(); } /* DB DD */ +OP(dd,43) { illegal_1(); op_43(); } /* DB DD */ +OP(dd,44) { B = HX; } /* LD B,HX */ +OP(dd,45) { B = LX; } /* LD B,LX */ +OP(dd,46) { EAX; B = RM(EA); } /* LD B,(IX+o) */ +OP(dd,47) { illegal_1(); op_47(); } /* DB DD */ + +OP(dd,48) { illegal_1(); op_48(); } /* DB DD */ +OP(dd,49) { illegal_1(); op_49(); } /* DB DD */ +OP(dd,4a) { illegal_1(); op_4a(); } /* DB DD */ +OP(dd,4b) { illegal_1(); op_4b(); } /* DB DD */ +OP(dd,4c) { C = HX; } /* LD C,HX */ +OP(dd,4d) { C = LX; } /* LD C,LX */ +OP(dd,4e) { EAX; C = RM(EA); } /* LD C,(IX+o) */ +OP(dd,4f) { illegal_1(); op_4f(); } /* DB DD */ + +OP(dd,50) { illegal_1(); op_50(); } /* DB DD */ +OP(dd,51) { illegal_1(); op_51(); } /* DB DD */ +OP(dd,52) { illegal_1(); op_52(); } /* DB DD */ +OP(dd,53) { illegal_1(); op_53(); } /* DB DD */ +OP(dd,54) { D = HX; } /* LD D,HX */ +OP(dd,55) { D = LX; } /* LD D,LX */ +OP(dd,56) { EAX; D = RM(EA); } /* LD D,(IX+o) */ +OP(dd,57) { illegal_1(); op_57(); } /* DB DD */ + +OP(dd,58) { illegal_1(); op_58(); } /* DB DD */ +OP(dd,59) { illegal_1(); op_59(); } /* DB DD */ +OP(dd,5a) { illegal_1(); op_5a(); } /* DB DD */ +OP(dd,5b) { illegal_1(); op_5b(); } /* DB DD */ +OP(dd,5c) { E = HX; } /* LD E,HX */ +OP(dd,5d) { E = LX; } /* LD E,LX */ +OP(dd,5e) { EAX; E = RM(EA); } /* LD E,(IX+o) */ +OP(dd,5f) { illegal_1(); op_5f(); } /* DB DD */ + +OP(dd,60) { HX = B; } /* LD HX,B */ +OP(dd,61) { HX = C; } /* LD HX,C */ +OP(dd,62) { HX = D; } /* LD HX,D */ +OP(dd,63) { HX = E; } /* LD HX,E */ +OP(dd,64) { } /* LD HX,HX */ +OP(dd,65) { HX = LX; } /* LD HX,LX */ +OP(dd,66) { EAX; H = RM(EA); } /* LD H,(IX+o) */ +OP(dd,67) { HX = A; } /* LD HX,A */ + +OP(dd,68) { LX = B; } /* LD LX,B */ +OP(dd,69) { LX = C; } /* LD LX,C */ +OP(dd,6a) { LX = D; } /* LD LX,D */ +OP(dd,6b) { LX = E; } /* LD LX,E */ +OP(dd,6c) { LX = HX; } /* LD LX,HX */ +OP(dd,6d) { } /* LD LX,LX */ +OP(dd,6e) { EAX; L = RM(EA); } /* LD L,(IX+o) */ +OP(dd,6f) { LX = A; } /* LD LX,A */ + +OP(dd,70) { EAX; WM( EA, B ); } /* LD (IX+o),B */ +OP(dd,71) { EAX; WM( EA, C ); } /* LD (IX+o),C */ +OP(dd,72) { EAX; WM( EA, D ); } /* LD (IX+o),D */ +OP(dd,73) { EAX; WM( EA, E ); } /* LD (IX+o),E */ +OP(dd,74) { EAX; WM( EA, H ); } /* LD (IX+o),H */ +OP(dd,75) { EAX; WM( EA, L ); } /* LD (IX+o),L */ +OP(dd,76) { illegal_1(); op_76(); } /* DB DD */ +OP(dd,77) { EAX; WM( EA, A ); } /* LD (IX+o),A */ + +OP(dd,78) { illegal_1(); op_78(); } /* DB DD */ +OP(dd,79) { illegal_1(); op_79(); } /* DB DD */ +OP(dd,7a) { illegal_1(); op_7a(); } /* DB DD */ +OP(dd,7b) { illegal_1(); op_7b(); } /* DB DD */ +OP(dd,7c) { A = HX; } /* LD A,HX */ +OP(dd,7d) { A = LX; } /* LD A,LX */ +OP(dd,7e) { EAX; A = RM(EA); } /* LD A,(IX+o) */ +OP(dd,7f) { illegal_1(); op_7f(); } /* DB DD */ + +OP(dd,80) { illegal_1(); op_80(); } /* DB DD */ +OP(dd,81) { illegal_1(); op_81(); } /* DB DD */ +OP(dd,82) { illegal_1(); op_82(); } /* DB DD */ +OP(dd,83) { illegal_1(); op_83(); } /* DB DD */ +OP(dd,84) { ADD(HX); } /* ADD A,HX */ +OP(dd,85) { ADD(LX); } /* ADD A,LX */ +OP(dd,86) { EAX; ADD(RM(EA)); } /* ADD A,(IX+o) */ +OP(dd,87) { illegal_1(); op_87(); } /* DB DD */ + +OP(dd,88) { illegal_1(); op_88(); } /* DB DD */ +OP(dd,89) { illegal_1(); op_89(); } /* DB DD */ +OP(dd,8a) { illegal_1(); op_8a(); } /* DB DD */ +OP(dd,8b) { illegal_1(); op_8b(); } /* DB DD */ +OP(dd,8c) { ADC(HX); } /* ADC A,HX */ +OP(dd,8d) { ADC(LX); } /* ADC A,LX */ +OP(dd,8e) { EAX; ADC(RM(EA)); } /* ADC A,(IX+o) */ +OP(dd,8f) { illegal_1(); op_8f(); } /* DB DD */ + +OP(dd,90) { illegal_1(); op_90(); } /* DB DD */ +OP(dd,91) { illegal_1(); op_91(); } /* DB DD */ +OP(dd,92) { illegal_1(); op_92(); } /* DB DD */ +OP(dd,93) { illegal_1(); op_93(); } /* DB DD */ +OP(dd,94) { SUB(HX); } /* SUB HX */ +OP(dd,95) { SUB(LX); } /* SUB LX */ +OP(dd,96) { EAX; SUB(RM(EA)); } /* SUB (IX+o) */ +OP(dd,97) { illegal_1(); op_97(); } /* DB DD */ + +OP(dd,98) { illegal_1(); op_98(); } /* DB DD */ +OP(dd,99) { illegal_1(); op_99(); } /* DB DD */ +OP(dd,9a) { illegal_1(); op_9a(); } /* DB DD */ +OP(dd,9b) { illegal_1(); op_9b(); } /* DB DD */ +OP(dd,9c) { SBC(HX); } /* SBC A,HX */ +OP(dd,9d) { SBC(LX); } /* SBC A,LX */ +OP(dd,9e) { EAX; SBC(RM(EA)); } /* SBC A,(IX+o) */ +OP(dd,9f) { illegal_1(); op_9f(); } /* DB DD */ + +OP(dd,a0) { illegal_1(); op_a0(); } /* DB DD */ +OP(dd,a1) { illegal_1(); op_a1(); } /* DB DD */ +OP(dd,a2) { illegal_1(); op_a2(); } /* DB DD */ +OP(dd,a3) { illegal_1(); op_a3(); } /* DB DD */ +OP(dd,a4) { AND(HX); } /* AND HX */ +OP(dd,a5) { AND(LX); } /* AND LX */ +OP(dd,a6) { EAX; AND(RM(EA)); } /* AND (IX+o) */ +OP(dd,a7) { illegal_1(); op_a7(); } /* DB DD */ + +OP(dd,a8) { illegal_1(); op_a8(); } /* DB DD */ +OP(dd,a9) { illegal_1(); op_a9(); } /* DB DD */ +OP(dd,aa) { illegal_1(); op_aa(); } /* DB DD */ +OP(dd,ab) { illegal_1(); op_ab(); } /* DB DD */ +OP(dd,ac) { XOR(HX); } /* XOR HX */ +OP(dd,ad) { XOR(LX); } /* XOR LX */ +OP(dd,ae) { EAX; XOR(RM(EA)); } /* XOR (IX+o) */ +OP(dd,af) { illegal_1(); op_af(); } /* DB DD */ + +OP(dd,b0) { illegal_1(); op_b0(); } /* DB DD */ +OP(dd,b1) { illegal_1(); op_b1(); } /* DB DD */ +OP(dd,b2) { illegal_1(); op_b2(); } /* DB DD */ +OP(dd,b3) { illegal_1(); op_b3(); } /* DB DD */ +OP(dd,b4) { OR(HX); } /* OR HX */ +OP(dd,b5) { OR(LX); } /* OR LX */ +OP(dd,b6) { EAX; OR(RM(EA)); } /* OR (IX+o) */ +OP(dd,b7) { illegal_1(); op_b7(); } /* DB DD */ + +OP(dd,b8) { illegal_1(); op_b8(); } /* DB DD */ +OP(dd,b9) { illegal_1(); op_b9(); } /* DB DD */ +OP(dd,ba) { illegal_1(); op_ba(); } /* DB DD */ +OP(dd,bb) { illegal_1(); op_bb(); } /* DB DD */ +OP(dd,bc) { CP(HX); } /* CP HX */ +OP(dd,bd) { CP(LX); } /* CP LX */ +OP(dd,be) { EAX; CP(RM(EA)); } /* CP (IX+o) */ +OP(dd,bf) { illegal_1(); op_bf(); } /* DB DD */ + +OP(dd,c0) { illegal_1(); op_c0(); } /* DB DD */ +OP(dd,c1) { illegal_1(); op_c1(); } /* DB DD */ +OP(dd,c2) { illegal_1(); op_c2(); } /* DB DD */ +OP(dd,c3) { illegal_1(); op_c3(); } /* DB DD */ +OP(dd,c4) { illegal_1(); op_c4(); } /* DB DD */ +OP(dd,c5) { illegal_1(); op_c5(); } /* DB DD */ +OP(dd,c6) { illegal_1(); op_c6(); } /* DB DD */ +OP(dd,c7) { illegal_1(); op_c7(); } /* DB DD */ + +OP(dd,c8) { illegal_1(); op_c8(); } /* DB DD */ +OP(dd,c9) { illegal_1(); op_c9(); } /* DB DD */ +OP(dd,ca) { illegal_1(); op_ca(); } /* DB DD */ +OP(dd,cb) { EAX; EXEC(xycb,ARG()); } /* **** DD CB xx */ +OP(dd,cc) { illegal_1(); op_cc(); } /* DB DD */ +OP(dd,cd) { illegal_1(); op_cd(); } /* DB DD */ +OP(dd,ce) { illegal_1(); op_ce(); } /* DB DD */ +OP(dd,cf) { illegal_1(); op_cf(); } /* DB DD */ + +OP(dd,d0) { illegal_1(); op_d0(); } /* DB DD */ +OP(dd,d1) { illegal_1(); op_d1(); } /* DB DD */ +OP(dd,d2) { illegal_1(); op_d2(); } /* DB DD */ +OP(dd,d3) { illegal_1(); op_d3(); } /* DB DD */ +OP(dd,d4) { illegal_1(); op_d4(); } /* DB DD */ +OP(dd,d5) { illegal_1(); op_d5(); } /* DB DD */ +OP(dd,d6) { illegal_1(); op_d6(); } /* DB DD */ +OP(dd,d7) { illegal_1(); op_d7(); } /* DB DD */ + +OP(dd,d8) { illegal_1(); op_d8(); } /* DB DD */ +OP(dd,d9) { illegal_1(); op_d9(); } /* DB DD */ +OP(dd,da) { illegal_1(); op_da(); } /* DB DD */ +OP(dd,db) { illegal_1(); op_db(); } /* DB DD */ +OP(dd,dc) { illegal_1(); op_dc(); } /* DB DD */ +OP(dd,dd) { EXEC(dd,ROP()); } /* **** DD DD xx */ +OP(dd,de) { illegal_1(); op_de(); } /* DB DD */ +OP(dd,df) { illegal_1(); op_df(); } /* DB DD */ + +OP(dd,e0) { illegal_1(); op_e0(); } /* DB DD */ +OP(dd,e1) { POP( ix ); } /* POP IX */ +OP(dd,e2) { illegal_1(); op_e2(); } /* DB DD */ +OP(dd,e3) { EXSP( ix ); } /* EX (SP),IX */ +OP(dd,e4) { illegal_1(); op_e4(); } /* DB DD */ +OP(dd,e5) { PUSH( ix ); } /* PUSH IX */ +OP(dd,e6) { illegal_1(); op_e6(); } /* DB DD */ +OP(dd,e7) { illegal_1(); op_e7(); } /* DB DD */ + +OP(dd,e8) { illegal_1(); op_e8(); } /* DB DD */ +OP(dd,e9) { PC = IX; } /* JP (IX) */ +OP(dd,ea) { illegal_1(); op_ea(); } /* DB DD */ +OP(dd,eb) { illegal_1(); op_eb(); } /* DB DD */ +OP(dd,ec) { illegal_1(); op_ec(); } /* DB DD */ +OP(dd,ed) { illegal_1(); op_ed(); } /* DB DD */ +OP(dd,ee) { illegal_1(); op_ee(); } /* DB DD */ +OP(dd,ef) { illegal_1(); op_ef(); } /* DB DD */ + +OP(dd,f0) { illegal_1(); op_f0(); } /* DB DD */ +OP(dd,f1) { illegal_1(); op_f1(); } /* DB DD */ +OP(dd,f2) { illegal_1(); op_f2(); } /* DB DD */ +OP(dd,f3) { illegal_1(); op_f3(); } /* DB DD */ +OP(dd,f4) { illegal_1(); op_f4(); } /* DB DD */ +OP(dd,f5) { illegal_1(); op_f5(); } /* DB DD */ +OP(dd,f6) { illegal_1(); op_f6(); } /* DB DD */ +OP(dd,f7) { illegal_1(); op_f7(); } /* DB DD */ + +OP(dd,f8) { illegal_1(); op_f8(); } /* DB DD */ +OP(dd,f9) { SP = IX; } /* LD SP,IX */ +OP(dd,fa) { illegal_1(); op_fa(); } /* DB DD */ +OP(dd,fb) { illegal_1(); op_fb(); } /* DB DD */ +OP(dd,fc) { illegal_1(); op_fc(); } /* DB DD */ +OP(dd,fd) { EXEC(fd,ROP()); } /* **** DD FD xx */ +OP(dd,fe) { illegal_1(); op_fe(); } /* DB DD */ +OP(dd,ff) { illegal_1(); op_ff(); } /* DB DD */ + +/********************************************************** + * IY register related opcodes (FD prefix) + **********************************************************/ +OP(fd,00) { illegal_1(); op_00(); } /* DB FD */ +OP(fd,01) { illegal_1(); op_01(); } /* DB FD */ +OP(fd,02) { illegal_1(); op_02(); } /* DB FD */ +OP(fd,03) { illegal_1(); op_03(); } /* DB FD */ +OP(fd,04) { illegal_1(); op_04(); } /* DB FD */ +OP(fd,05) { illegal_1(); op_05(); } /* DB FD */ +OP(fd,06) { illegal_1(); op_06(); } /* DB FD */ +OP(fd,07) { illegal_1(); op_07(); } /* DB FD */ + +OP(fd,08) { illegal_1(); op_08(); } /* DB FD */ +OP(fd,09) { ADD16(iy,bc); } /* ADD IY,BC */ +OP(fd,0a) { illegal_1(); op_0a(); } /* DB FD */ +OP(fd,0b) { illegal_1(); op_0b(); } /* DB FD */ +OP(fd,0c) { illegal_1(); op_0c(); } /* DB FD */ +OP(fd,0d) { illegal_1(); op_0d(); } /* DB FD */ +OP(fd,0e) { illegal_1(); op_0e(); } /* DB FD */ +OP(fd,0f) { illegal_1(); op_0f(); } /* DB FD */ + +OP(fd,10) { illegal_1(); op_10(); } /* DB FD */ +OP(fd,11) { illegal_1(); op_11(); } /* DB FD */ +OP(fd,12) { illegal_1(); op_12(); } /* DB FD */ +OP(fd,13) { illegal_1(); op_13(); } /* DB FD */ +OP(fd,14) { illegal_1(); op_14(); } /* DB FD */ +OP(fd,15) { illegal_1(); op_15(); } /* DB FD */ +OP(fd,16) { illegal_1(); op_16(); } /* DB FD */ +OP(fd,17) { illegal_1(); op_17(); } /* DB FD */ + +OP(fd,18) { illegal_1(); op_18(); } /* DB FD */ +OP(fd,19) { ADD16(iy,de); } /* ADD IY,DE */ +OP(fd,1a) { illegal_1(); op_1a(); } /* DB FD */ +OP(fd,1b) { illegal_1(); op_1b(); } /* DB FD */ +OP(fd,1c) { illegal_1(); op_1c(); } /* DB FD */ +OP(fd,1d) { illegal_1(); op_1d(); } /* DB FD */ +OP(fd,1e) { illegal_1(); op_1e(); } /* DB FD */ +OP(fd,1f) { illegal_1(); op_1f(); } /* DB FD */ + +OP(fd,20) { illegal_1(); op_20(); } /* DB FD */ +OP(fd,21) { IY = ARG16(); } /* LD IY,w */ +OP(fd,22) { EA = ARG16(); WM16( EA, &Z80.iy ); WZ = EA+1; } /* LD (w),IY */ +OP(fd,23) { IY++; } /* INC IY */ +OP(fd,24) { HY = INC(HY); } /* INC HY */ +OP(fd,25) { HY = DEC(HY); } /* DEC HY */ +OP(fd,26) { HY = ARG(); } /* LD HY,n */ +OP(fd,27) { illegal_1(); op_27(); } /* DB FD */ + +OP(fd,28) { illegal_1(); op_28(); } /* DB FD */ +OP(fd,29) { ADD16(iy,iy); } /* ADD IY,IY */ +OP(fd,2a) { EA = ARG16(); RM16( EA, &Z80.iy ); WZ = EA+1; } /* LD IY,(w) */ +OP(fd,2b) { IY--; } /* DEC IY */ +OP(fd,2c) { LY = INC(LY); } /* INC LY */ +OP(fd,2d) { LY = DEC(LY); } /* DEC LY */ +OP(fd,2e) { LY = ARG(); } /* LD LY,n */ +OP(fd,2f) { illegal_1(); op_2f(); } /* DB FD */ + +OP(fd,30) { illegal_1(); op_30(); } /* DB FD */ +OP(fd,31) { illegal_1(); op_31(); } /* DB FD */ +OP(fd,32) { illegal_1(); op_32(); } /* DB FD */ +OP(fd,33) { illegal_1(); op_33(); } /* DB FD */ +OP(fd,34) { EAY; WM( EA, INC(RM(EA)) ); } /* INC (IY+o) */ +OP(fd,35) { EAY; WM( EA, DEC(RM(EA)) ); } /* DEC (IY+o) */ +OP(fd,36) { EAY; WM( EA, ARG() ); } /* LD (IY+o),n */ +OP(fd,37) { illegal_1(); op_37(); } /* DB FD */ + +OP(fd,38) { illegal_1(); op_38(); } /* DB FD */ +OP(fd,39) { ADD16(iy,sp); } /* ADD IY,SP */ +OP(fd,3a) { illegal_1(); op_3a(); } /* DB FD */ +OP(fd,3b) { illegal_1(); op_3b(); } /* DB FD */ +OP(fd,3c) { illegal_1(); op_3c(); } /* DB FD */ +OP(fd,3d) { illegal_1(); op_3d(); } /* DB FD */ +OP(fd,3e) { illegal_1(); op_3e(); } /* DB FD */ +OP(fd,3f) { illegal_1(); op_3f(); } /* DB FD */ + +OP(fd,40) { illegal_1(); op_40(); } /* DB FD */ +OP(fd,41) { illegal_1(); op_41(); } /* DB FD */ +OP(fd,42) { illegal_1(); op_42(); } /* DB FD */ +OP(fd,43) { illegal_1(); op_43(); } /* DB FD */ +OP(fd,44) { B = HY; } /* LD B,HY */ +OP(fd,45) { B = LY; } /* LD B,LY */ +OP(fd,46) { EAY; B = RM(EA); } /* LD B,(IY+o) */ +OP(fd,47) { illegal_1(); op_47(); } /* DB FD */ + +OP(fd,48) { illegal_1(); op_48(); } /* DB FD */ +OP(fd,49) { illegal_1(); op_49(); } /* DB FD */ +OP(fd,4a) { illegal_1(); op_4a(); } /* DB FD */ +OP(fd,4b) { illegal_1(); op_4b(); } /* DB FD */ +OP(fd,4c) { C = HY; } /* LD C,HY */ +OP(fd,4d) { C = LY; } /* LD C,LY */ +OP(fd,4e) { EAY; C = RM(EA); } /* LD C,(IY+o) */ +OP(fd,4f) { illegal_1(); op_4f(); } /* DB FD */ + +OP(fd,50) { illegal_1(); op_50(); } /* DB FD */ +OP(fd,51) { illegal_1(); op_51(); } /* DB FD */ +OP(fd,52) { illegal_1(); op_52(); } /* DB FD */ +OP(fd,53) { illegal_1(); op_53(); } /* DB FD */ +OP(fd,54) { D = HY; } /* LD D,HY */ +OP(fd,55) { D = LY; } /* LD D,LY */ +OP(fd,56) { EAY; D = RM(EA); } /* LD D,(IY+o) */ +OP(fd,57) { illegal_1(); op_57(); } /* DB FD */ + +OP(fd,58) { illegal_1(); op_58(); } /* DB FD */ +OP(fd,59) { illegal_1(); op_59(); } /* DB FD */ +OP(fd,5a) { illegal_1(); op_5a(); } /* DB FD */ +OP(fd,5b) { illegal_1(); op_5b(); } /* DB FD */ +OP(fd,5c) { E = HY; } /* LD E,HY */ +OP(fd,5d) { E = LY; } /* LD E,LY */ +OP(fd,5e) { EAY; E = RM(EA); } /* LD E,(IY+o) */ +OP(fd,5f) { illegal_1(); op_5f(); } /* DB FD */ + +OP(fd,60) { HY = B; } /* LD HY,B */ +OP(fd,61) { HY = C; } /* LD HY,C */ +OP(fd,62) { HY = D; } /* LD HY,D */ +OP(fd,63) { HY = E; } /* LD HY,E */ +OP(fd,64) { } /* LD HY,HY */ +OP(fd,65) { HY = LY; } /* LD HY,LY */ +OP(fd,66) { EAY; H = RM(EA); } /* LD H,(IY+o) */ +OP(fd,67) { HY = A; } /* LD HY,A */ + +OP(fd,68) { LY = B; } /* LD LY,B */ +OP(fd,69) { LY = C; } /* LD LY,C */ +OP(fd,6a) { LY = D; } /* LD LY,D */ +OP(fd,6b) { LY = E; } /* LD LY,E */ +OP(fd,6c) { LY = HY; } /* LD LY,HY */ +OP(fd,6d) { } /* LD LY,LY */ +OP(fd,6e) { EAY; L = RM(EA); } /* LD L,(IY+o) */ +OP(fd,6f) { LY = A; } /* LD LY,A */ + +OP(fd,70) { EAY; WM( EA, B ); } /* LD (IY+o),B */ +OP(fd,71) { EAY; WM( EA, C ); } /* LD (IY+o),C */ +OP(fd,72) { EAY; WM( EA, D ); } /* LD (IY+o),D */ +OP(fd,73) { EAY; WM( EA, E ); } /* LD (IY+o),E */ +OP(fd,74) { EAY; WM( EA, H ); } /* LD (IY+o),H */ +OP(fd,75) { EAY; WM( EA, L ); } /* LD (IY+o),L */ +OP(fd,76) { illegal_1(); op_76(); } /* DB FD */ +OP(fd,77) { EAY; WM( EA, A ); } /* LD (IY+o),A */ + +OP(fd,78) { illegal_1(); op_78(); } /* DB FD */ +OP(fd,79) { illegal_1(); op_79(); } /* DB FD */ +OP(fd,7a) { illegal_1(); op_7a(); } /* DB FD */ +OP(fd,7b) { illegal_1(); op_7b(); } /* DB FD */ +OP(fd,7c) { A = HY; } /* LD A,HY */ +OP(fd,7d) { A = LY; } /* LD A,LY */ +OP(fd,7e) { EAY; A = RM(EA); } /* LD A,(IY+o) */ +OP(fd,7f) { illegal_1(); op_7f(); } /* DB FD */ + +OP(fd,80) { illegal_1(); op_80(); } /* DB FD */ +OP(fd,81) { illegal_1(); op_81(); } /* DB FD */ +OP(fd,82) { illegal_1(); op_82(); } /* DB FD */ +OP(fd,83) { illegal_1(); op_83(); } /* DB FD */ +OP(fd,84) { ADD(HY); } /* ADD A,HY */ +OP(fd,85) { ADD(LY); } /* ADD A,LY */ +OP(fd,86) { EAY; ADD(RM(EA)); } /* ADD A,(IY+o) */ +OP(fd,87) { illegal_1(); op_87(); } /* DB FD */ + +OP(fd,88) { illegal_1(); op_88(); } /* DB FD */ +OP(fd,89) { illegal_1(); op_89(); } /* DB FD */ +OP(fd,8a) { illegal_1(); op_8a(); } /* DB FD */ +OP(fd,8b) { illegal_1(); op_8b(); } /* DB FD */ +OP(fd,8c) { ADC(HY); } /* ADC A,HY */ +OP(fd,8d) { ADC(LY); } /* ADC A,LY */ +OP(fd,8e) { EAY; ADC(RM(EA)); } /* ADC A,(IY+o) */ +OP(fd,8f) { illegal_1(); op_8f(); } /* DB FD */ + +OP(fd,90) { illegal_1(); op_90(); } /* DB FD */ +OP(fd,91) { illegal_1(); op_91(); } /* DB FD */ +OP(fd,92) { illegal_1(); op_92(); } /* DB FD */ +OP(fd,93) { illegal_1(); op_93(); } /* DB FD */ +OP(fd,94) { SUB(HY); } /* SUB HY */ +OP(fd,95) { SUB(LY); } /* SUB LY */ +OP(fd,96) { EAY; SUB(RM(EA)); } /* SUB (IY+o) */ +OP(fd,97) { illegal_1(); op_97(); } /* DB FD */ + +OP(fd,98) { illegal_1(); op_98(); } /* DB FD */ +OP(fd,99) { illegal_1(); op_99(); } /* DB FD */ +OP(fd,9a) { illegal_1(); op_9a(); } /* DB FD */ +OP(fd,9b) { illegal_1(); op_9b(); } /* DB FD */ +OP(fd,9c) { SBC(HY); } /* SBC A,HY */ +OP(fd,9d) { SBC(LY); } /* SBC A,LY */ +OP(fd,9e) { EAY; SBC(RM(EA)); } /* SBC A,(IY+o) */ +OP(fd,9f) { illegal_1(); op_9f(); } /* DB FD */ + +OP(fd,a0) { illegal_1(); op_a0(); } /* DB FD */ +OP(fd,a1) { illegal_1(); op_a1(); } /* DB FD */ +OP(fd,a2) { illegal_1(); op_a2(); } /* DB FD */ +OP(fd,a3) { illegal_1(); op_a3(); } /* DB FD */ +OP(fd,a4) { AND(HY); } /* AND HY */ +OP(fd,a5) { AND(LY); } /* AND LY */ +OP(fd,a6) { EAY; AND(RM(EA)); } /* AND (IY+o) */ +OP(fd,a7) { illegal_1(); op_a7(); } /* DB FD */ + +OP(fd,a8) { illegal_1(); op_a8(); } /* DB FD */ +OP(fd,a9) { illegal_1(); op_a9(); } /* DB FD */ +OP(fd,aa) { illegal_1(); op_aa(); } /* DB FD */ +OP(fd,ab) { illegal_1(); op_ab(); } /* DB FD */ +OP(fd,ac) { XOR(HY); } /* XOR HY */ +OP(fd,ad) { XOR(LY); } /* XOR LY */ +OP(fd,ae) { EAY; XOR(RM(EA)); } /* XOR (IY+o) */ +OP(fd,af) { illegal_1(); op_af(); } /* DB FD */ + +OP(fd,b0) { illegal_1(); op_b0(); } /* DB FD */ +OP(fd,b1) { illegal_1(); op_b1(); } /* DB FD */ +OP(fd,b2) { illegal_1(); op_b2(); } /* DB FD */ +OP(fd,b3) { illegal_1(); op_b3(); } /* DB FD */ +OP(fd,b4) { OR(HY); } /* OR HY */ +OP(fd,b5) { OR(LY); } /* OR LY */ +OP(fd,b6) { EAY; OR(RM(EA)); } /* OR (IY+o) */ +OP(fd,b7) { illegal_1(); op_b7(); } /* DB FD */ + +OP(fd,b8) { illegal_1(); op_b8(); } /* DB FD */ +OP(fd,b9) { illegal_1(); op_b9(); } /* DB FD */ +OP(fd,ba) { illegal_1(); op_ba(); } /* DB FD */ +OP(fd,bb) { illegal_1(); op_bb(); } /* DB FD */ +OP(fd,bc) { CP(HY); } /* CP HY */ +OP(fd,bd) { CP(LY); } /* CP LY */ +OP(fd,be) { EAY; CP(RM(EA)); } /* CP (IY+o) */ +OP(fd,bf) { illegal_1(); op_bf(); } /* DB FD */ + +OP(fd,c0) { illegal_1(); op_c0(); } /* DB FD */ +OP(fd,c1) { illegal_1(); op_c1(); } /* DB FD */ +OP(fd,c2) { illegal_1(); op_c2(); } /* DB FD */ +OP(fd,c3) { illegal_1(); op_c3(); } /* DB FD */ +OP(fd,c4) { illegal_1(); op_c4(); } /* DB FD */ +OP(fd,c5) { illegal_1(); op_c5(); } /* DB FD */ +OP(fd,c6) { illegal_1(); op_c6(); } /* DB FD */ +OP(fd,c7) { illegal_1(); op_c7(); } /* DB FD */ + +OP(fd,c8) { illegal_1(); op_c8(); } /* DB FD */ +OP(fd,c9) { illegal_1(); op_c9(); } /* DB FD */ +OP(fd,ca) { illegal_1(); op_ca(); } /* DB FD */ +OP(fd,cb) { EAY; EXEC(xycb,ARG()); } /* **** FD CB xx */ +OP(fd,cc) { illegal_1(); op_cc(); } /* DB FD */ +OP(fd,cd) { illegal_1(); op_cd(); } /* DB FD */ +OP(fd,ce) { illegal_1(); op_ce(); } /* DB FD */ +OP(fd,cf) { illegal_1(); op_cf(); } /* DB FD */ + +OP(fd,d0) { illegal_1(); op_d0(); } /* DB FD */ +OP(fd,d1) { illegal_1(); op_d1(); } /* DB FD */ +OP(fd,d2) { illegal_1(); op_d2(); } /* DB FD */ +OP(fd,d3) { illegal_1(); op_d3(); } /* DB FD */ +OP(fd,d4) { illegal_1(); op_d4(); } /* DB FD */ +OP(fd,d5) { illegal_1(); op_d5(); } /* DB FD */ +OP(fd,d6) { illegal_1(); op_d6(); } /* DB FD */ +OP(fd,d7) { illegal_1(); op_d7(); } /* DB FD */ + +OP(fd,d8) { illegal_1(); op_d8(); } /* DB FD */ +OP(fd,d9) { illegal_1(); op_d9(); } /* DB FD */ +OP(fd,da) { illegal_1(); op_da(); } /* DB FD */ +OP(fd,db) { illegal_1(); op_db(); } /* DB FD */ +OP(fd,dc) { illegal_1(); op_dc(); } /* DB FD */ +OP(fd,dd) { EXEC(dd,ROP()); } /* **** FD DD xx */ +OP(fd,de) { illegal_1(); op_de(); } /* DB FD */ +OP(fd,df) { illegal_1(); op_df(); } /* DB FD */ + +OP(fd,e0) { illegal_1(); op_e0(); } /* DB FD */ +OP(fd,e1) { POP( iy ); } /* POP IY */ +OP(fd,e2) { illegal_1(); op_e2(); } /* DB FD */ +OP(fd,e3) { EXSP( iy ); } /* EX (SP),IY */ +OP(fd,e4) { illegal_1(); op_e4(); } /* DB FD */ +OP(fd,e5) { PUSH( iy ); } /* PUSH IY */ +OP(fd,e6) { illegal_1(); op_e6(); } /* DB FD */ +OP(fd,e7) { illegal_1(); op_e7(); } /* DB FD */ + +OP(fd,e8) { illegal_1(); op_e8(); } /* DB FD */ +OP(fd,e9) { PC = IY; } /* JP (IY) */ +OP(fd,ea) { illegal_1(); op_ea(); } /* DB FD */ +OP(fd,eb) { illegal_1(); op_eb(); } /* DB FD */ +OP(fd,ec) { illegal_1(); op_ec(); } /* DB FD */ +OP(fd,ed) { illegal_1(); op_ed(); } /* DB FD */ +OP(fd,ee) { illegal_1(); op_ee(); } /* DB FD */ +OP(fd,ef) { illegal_1(); op_ef(); } /* DB FD */ + +OP(fd,f0) { illegal_1(); op_f0(); } /* DB FD */ +OP(fd,f1) { illegal_1(); op_f1(); } /* DB FD */ +OP(fd,f2) { illegal_1(); op_f2(); } /* DB FD */ +OP(fd,f3) { illegal_1(); op_f3(); } /* DB FD */ +OP(fd,f4) { illegal_1(); op_f4(); } /* DB FD */ +OP(fd,f5) { illegal_1(); op_f5(); } /* DB FD */ +OP(fd,f6) { illegal_1(); op_f6(); } /* DB FD */ +OP(fd,f7) { illegal_1(); op_f7(); } /* DB FD */ + +OP(fd,f8) { illegal_1(); op_f8(); } /* DB FD */ +OP(fd,f9) { SP = IY; } /* LD SP,IY */ +OP(fd,fa) { illegal_1(); op_fa(); } /* DB FD */ +OP(fd,fb) { illegal_1(); op_fb(); } /* DB FD */ +OP(fd,fc) { illegal_1(); op_fc(); } /* DB FD */ +OP(fd,fd) { EXEC(fd,ROP()); } /* **** FD FD xx */ +OP(fd,fe) { illegal_1(); op_fe(); } /* DB FD */ +OP(fd,ff) { illegal_1(); op_ff(); } /* DB FD */ + +OP(illegal,2) +{ +#if VERBOSE +logerror("Z80 #%d ill. opcode $ed $%02x\n", + cpu_getactivecpu(), cpu_readop((PCD-1)&0xffff)); +#endif +} + +/********************************************************** + * special opcodes (ED prefix) + **********************************************************/ +OP(ed,00) { illegal_2(); } /* DB ED */ +OP(ed,01) { illegal_2(); } /* DB ED */ +OP(ed,02) { illegal_2(); } /* DB ED */ +OP(ed,03) { illegal_2(); } /* DB ED */ +OP(ed,04) { illegal_2(); } /* DB ED */ +OP(ed,05) { illegal_2(); } /* DB ED */ +OP(ed,06) { illegal_2(); } /* DB ED */ +OP(ed,07) { illegal_2(); } /* DB ED */ + +OP(ed,08) { illegal_2(); } /* DB ED */ +OP(ed,09) { illegal_2(); } /* DB ED */ +OP(ed,0a) { illegal_2(); } /* DB ED */ +OP(ed,0b) { illegal_2(); } /* DB ED */ +OP(ed,0c) { illegal_2(); } /* DB ED */ +OP(ed,0d) { illegal_2(); } /* DB ED */ +OP(ed,0e) { illegal_2(); } /* DB ED */ +OP(ed,0f) { illegal_2(); } /* DB ED */ + +OP(ed,10) { illegal_2(); } /* DB ED */ +OP(ed,11) { illegal_2(); } /* DB ED */ +OP(ed,12) { illegal_2(); } /* DB ED */ +OP(ed,13) { illegal_2(); } /* DB ED */ +OP(ed,14) { illegal_2(); } /* DB ED */ +OP(ed,15) { illegal_2(); } /* DB ED */ +OP(ed,16) { illegal_2(); } /* DB ED */ +OP(ed,17) { illegal_2(); } /* DB ED */ + +OP(ed,18) { illegal_2(); } /* DB ED */ +OP(ed,19) { illegal_2(); } /* DB ED */ +OP(ed,1a) { illegal_2(); } /* DB ED */ +OP(ed,1b) { illegal_2(); } /* DB ED */ +OP(ed,1c) { illegal_2(); } /* DB ED */ +OP(ed,1d) { illegal_2(); } /* DB ED */ +OP(ed,1e) { illegal_2(); } /* DB ED */ +OP(ed,1f) { illegal_2(); } /* DB ED */ + +OP(ed,20) { illegal_2(); } /* DB ED */ +OP(ed,21) { illegal_2(); } /* DB ED */ +OP(ed,22) { illegal_2(); } /* DB ED */ +OP(ed,23) { illegal_2(); } /* DB ED */ +OP(ed,24) { illegal_2(); } /* DB ED */ +OP(ed,25) { illegal_2(); } /* DB ED */ +OP(ed,26) { illegal_2(); } /* DB ED */ +OP(ed,27) { illegal_2(); } /* DB ED */ + +OP(ed,28) { illegal_2(); } /* DB ED */ +OP(ed,29) { illegal_2(); } /* DB ED */ +OP(ed,2a) { illegal_2(); } /* DB ED */ +OP(ed,2b) { illegal_2(); } /* DB ED */ +OP(ed,2c) { illegal_2(); } /* DB ED */ +OP(ed,2d) { illegal_2(); } /* DB ED */ +OP(ed,2e) { illegal_2(); } /* DB ED */ +OP(ed,2f) { illegal_2(); } /* DB ED */ + +OP(ed,30) { illegal_2(); } /* DB ED */ +OP(ed,31) { illegal_2(); } /* DB ED */ +OP(ed,32) { illegal_2(); } /* DB ED */ +OP(ed,33) { illegal_2(); } /* DB ED */ +OP(ed,34) { illegal_2(); } /* DB ED */ +OP(ed,35) { illegal_2(); } /* DB ED */ +OP(ed,36) { illegal_2(); } /* DB ED */ +OP(ed,37) { illegal_2(); } /* DB ED */ + +OP(ed,38) { illegal_2(); } /* DB ED */ +OP(ed,39) { illegal_2(); } /* DB ED */ +OP(ed,3a) { illegal_2(); } /* DB ED */ +OP(ed,3b) { illegal_2(); } /* DB ED */ +OP(ed,3c) { illegal_2(); } /* DB ED */ +OP(ed,3d) { illegal_2(); } /* DB ED */ +OP(ed,3e) { illegal_2(); } /* DB ED */ +OP(ed,3f) { illegal_2(); } /* DB ED */ + +OP(ed,40) { B = IN(BC); F = (F & CF) | SZP[B]; } /* IN B,(C) */ +OP(ed,41) { OUT(BC, B); } /* OUT (C),B */ +OP(ed,42) { SBC16( bc ); } /* SBC HL,BC */ +OP(ed,43) { EA = ARG16(); WM16( EA, &Z80.bc ); WZ = EA+1; } /* LD (w),BC */ +OP(ed,44) { NEG; } /* NEG */ +OP(ed,45) { RETN; } /* RETN; */ +OP(ed,46) { IM = 0; } /* IM 0 */ +OP(ed,47) { LD_I_A; } /* LD I,A */ + +OP(ed,48) { C = IN(BC); F = (F & CF) | SZP[C]; } /* IN C,(C) */ +OP(ed,49) { OUT(BC, C); } /* OUT (C),C */ +OP(ed,4a) { ADC16( bc ); } /* ADC HL,BC */ +OP(ed,4b) { EA = ARG16(); RM16( EA, &Z80.bc ); WZ = EA+1; } /* LD BC,(w) */ +OP(ed,4c) { NEG; } /* NEG */ +OP(ed,4d) { RETI; } /* RETI */ +OP(ed,4e) { IM = 0; } /* IM 0 */ +OP(ed,4f) { LD_R_A; } /* LD R,A */ + +OP(ed,50) { D = IN(BC); F = (F & CF) | SZP[D]; } /* IN D,(C) */ +OP(ed,51) { OUT(BC, D); } /* OUT (C),D */ +OP(ed,52) { SBC16( de ); } /* SBC HL,DE */ +OP(ed,53) { EA = ARG16(); WM16( EA, &Z80.de ); WZ = EA+1; } /* LD (w),DE */ +OP(ed,54) { NEG; } /* NEG */ +OP(ed,55) { RETN; } /* RETN; */ +OP(ed,56) { IM = 1; } /* IM 1 */ +OP(ed,57) { LD_A_I; } /* LD A,I */ + +OP(ed,58) { E = IN(BC); F = (F & CF) | SZP[E]; } /* IN E,(C) */ +OP(ed,59) { OUT(BC, E); } /* OUT (C),E */ +OP(ed,5a) { ADC16( de ); } /* ADC HL,DE */ +OP(ed,5b) { EA = ARG16(); RM16( EA, &Z80.de ); WZ = EA+1; } /* LD DE,(w) */ +OP(ed,5c) { NEG; } /* NEG */ +OP(ed,5d) { RETI; } /* RETI */ +OP(ed,5e) { IM = 2; } /* IM 2 */ +OP(ed,5f) { LD_A_R; } /* LD A,R */ + +OP(ed,60) { H = IN(BC); F = (F & CF) | SZP[H]; } /* IN H,(C) */ +OP(ed,61) { OUT(BC, H); } /* OUT (C),H */ +OP(ed,62) { SBC16( hl ); } /* SBC HL,HL */ +OP(ed,63) { EA = ARG16(); WM16( EA, &Z80.hl ); WZ = EA+1; } /* LD (w),HL */ +OP(ed,64) { NEG; } /* NEG */ +OP(ed,65) { RETN; } /* RETN; */ +OP(ed,66) { IM = 0; } /* IM 0 */ +OP(ed,67) { RRD; } /* RRD (HL) */ + +OP(ed,68) { L = IN(BC); F = (F & CF) | SZP[L]; } /* IN L,(C) */ +OP(ed,69) { OUT(BC, L); } /* OUT (C),L */ +OP(ed,6a) { ADC16( hl ); } /* ADC HL,HL */ +OP(ed,6b) { EA = ARG16(); RM16( EA, &Z80.hl ); WZ = EA+1; } /* LD HL,(w) */ +OP(ed,6c) { NEG; } /* NEG */ +OP(ed,6d) { RETI; } /* RETI */ +OP(ed,6e) { IM = 0; } /* IM 0 */ +OP(ed,6f) { RLD; } /* RLD (HL) */ + +OP(ed,70) { UINT8 res = IN(BC); F = (F & CF) | SZP[res]; } /* IN 0,(C) */ +OP(ed,71) { OUT(BC, 0); } /* OUT (C),0 */ +OP(ed,72) { SBC16( sp ); } /* SBC HL,SP */ +OP(ed,73) { EA = ARG16(); WM16( EA, &Z80.sp ); WZ = EA+1; } /* LD (w),SP */ +OP(ed,74) { NEG; } /* NEG */ +OP(ed,75) { RETN; } /* RETN; */ +OP(ed,76) { IM = 1; } /* IM 1 */ +OP(ed,77) { illegal_2(); } /* DB ED,77 */ + +OP(ed,78) { A = IN(BC); F = (F & CF) | SZP[A]; WZ = BC+1; } /* IN E,(C) */ +OP(ed,79) { OUT(BC, A); WZ = BC + 1; } /* OUT (C),A */ +OP(ed,7a) { ADC16( sp ); } /* ADC HL,SP */ +OP(ed,7b) { EA = ARG16(); RM16( EA, &Z80.sp ); WZ = EA+1; } /* LD SP,(w) */ +OP(ed,7c) { NEG; } /* NEG */ +OP(ed,7d) { RETI; } /* RETI */ +OP(ed,7e) { IM = 2; } /* IM 2 */ +OP(ed,7f) { illegal_2(); } /* DB ED,7F */ + +OP(ed,80) { illegal_2(); } /* DB ED */ +OP(ed,81) { illegal_2(); } /* DB ED */ +OP(ed,82) { illegal_2(); } /* DB ED */ +OP(ed,83) { illegal_2(); } /* DB ED */ +OP(ed,84) { illegal_2(); } /* DB ED */ +OP(ed,85) { illegal_2(); } /* DB ED */ +OP(ed,86) { illegal_2(); } /* DB ED */ +OP(ed,87) { illegal_2(); } /* DB ED */ + +OP(ed,88) { illegal_2(); } /* DB ED */ +OP(ed,89) { illegal_2(); } /* DB ED */ +OP(ed,8a) { illegal_2(); } /* DB ED */ +OP(ed,8b) { illegal_2(); } /* DB ED */ +OP(ed,8c) { illegal_2(); } /* DB ED */ +OP(ed,8d) { illegal_2(); } /* DB ED */ +OP(ed,8e) { illegal_2(); } /* DB ED */ +OP(ed,8f) { illegal_2(); } /* DB ED */ + +OP(ed,90) { illegal_2(); } /* DB ED */ +OP(ed,91) { illegal_2(); } /* DB ED */ +OP(ed,92) { illegal_2(); } /* DB ED */ +OP(ed,93) { illegal_2(); } /* DB ED */ +OP(ed,94) { illegal_2(); } /* DB ED */ +OP(ed,95) { illegal_2(); } /* DB ED */ +OP(ed,96) { illegal_2(); } /* DB ED */ +OP(ed,97) { illegal_2(); } /* DB ED */ + +OP(ed,98) { illegal_2(); } /* DB ED */ +OP(ed,99) { illegal_2(); } /* DB ED */ +OP(ed,9a) { illegal_2(); } /* DB ED */ +OP(ed,9b) { illegal_2(); } /* DB ED */ +OP(ed,9c) { illegal_2(); } /* DB ED */ +OP(ed,9d) { illegal_2(); } /* DB ED */ +OP(ed,9e) { illegal_2(); } /* DB ED */ +OP(ed,9f) { illegal_2(); } /* DB ED */ + +OP(ed,a0) { LDI; } /* LDI */ +OP(ed,a1) { CPI; } /* CPI */ +OP(ed,a2) { INI; } /* INI */ +OP(ed,a3) { OUTI; } /* OUTI */ +OP(ed,a4) { illegal_2(); } /* DB ED */ +OP(ed,a5) { illegal_2(); } /* DB ED */ +OP(ed,a6) { illegal_2(); } /* DB ED */ +OP(ed,a7) { illegal_2(); } /* DB ED */ + +OP(ed,a8) { LDD; } /* LDD */ +OP(ed,a9) { CPD; } /* CPD */ +OP(ed,aa) { IND; } /* IND */ +OP(ed,ab) { OUTD; } /* OUTD */ +OP(ed,ac) { illegal_2(); } /* DB ED */ +OP(ed,ad) { illegal_2(); } /* DB ED */ +OP(ed,ae) { illegal_2(); } /* DB ED */ +OP(ed,af) { illegal_2(); } /* DB ED */ + +OP(ed,b0) { LDIR; } /* LDIR */ +OP(ed,b1) { CPIR; } /* CPIR */ +OP(ed,b2) { INIR; } /* INIR */ +OP(ed,b3) { OTIR; } /* OTIR */ +OP(ed,b4) { illegal_2(); } /* DB ED */ +OP(ed,b5) { illegal_2(); } /* DB ED */ +OP(ed,b6) { illegal_2(); } /* DB ED */ +OP(ed,b7) { illegal_2(); } /* DB ED */ + +OP(ed,b8) { LDDR; } /* LDDR */ +OP(ed,b9) { CPDR; } /* CPDR */ +OP(ed,ba) { INDR; } /* INDR */ +OP(ed,bb) { OTDR; } /* OTDR */ +OP(ed,bc) { illegal_2(); } /* DB ED */ +OP(ed,bd) { illegal_2(); } /* DB ED */ +OP(ed,be) { illegal_2(); } /* DB ED */ +OP(ed,bf) { illegal_2(); } /* DB ED */ + +OP(ed,c0) { illegal_2(); } /* DB ED */ +OP(ed,c1) { illegal_2(); } /* DB ED */ +OP(ed,c2) { illegal_2(); } /* DB ED */ +OP(ed,c3) { illegal_2(); } /* DB ED */ +OP(ed,c4) { illegal_2(); } /* DB ED */ +OP(ed,c5) { illegal_2(); } /* DB ED */ +OP(ed,c6) { illegal_2(); } /* DB ED */ +OP(ed,c7) { illegal_2(); } /* DB ED */ + +OP(ed,c8) { illegal_2(); } /* DB ED */ +OP(ed,c9) { illegal_2(); } /* DB ED */ +OP(ed,ca) { illegal_2(); } /* DB ED */ +OP(ed,cb) { illegal_2(); } /* DB ED */ +OP(ed,cc) { illegal_2(); } /* DB ED */ +OP(ed,cd) { illegal_2(); } /* DB ED */ +OP(ed,ce) { illegal_2(); } /* DB ED */ +OP(ed,cf) { illegal_2(); } /* DB ED */ + +OP(ed,d0) { illegal_2(); } /* DB ED */ +OP(ed,d1) { illegal_2(); } /* DB ED */ +OP(ed,d2) { illegal_2(); } /* DB ED */ +OP(ed,d3) { illegal_2(); } /* DB ED */ +OP(ed,d4) { illegal_2(); } /* DB ED */ +OP(ed,d5) { illegal_2(); } /* DB ED */ +OP(ed,d6) { illegal_2(); } /* DB ED */ +OP(ed,d7) { illegal_2(); } /* DB ED */ + +OP(ed,d8) { illegal_2(); } /* DB ED */ +OP(ed,d9) { illegal_2(); } /* DB ED */ +OP(ed,da) { illegal_2(); } /* DB ED */ +OP(ed,db) { illegal_2(); } /* DB ED */ +OP(ed,dc) { illegal_2(); } /* DB ED */ +OP(ed,dd) { illegal_2(); } /* DB ED */ +OP(ed,de) { illegal_2(); } /* DB ED */ +OP(ed,df) { illegal_2(); } /* DB ED */ + +OP(ed,e0) { illegal_2(); } /* DB ED */ +OP(ed,e1) { illegal_2(); } /* DB ED */ +OP(ed,e2) { illegal_2(); } /* DB ED */ +OP(ed,e3) { illegal_2(); } /* DB ED */ +OP(ed,e4) { illegal_2(); } /* DB ED */ +OP(ed,e5) { illegal_2(); } /* DB ED */ +OP(ed,e6) { illegal_2(); } /* DB ED */ +OP(ed,e7) { illegal_2(); } /* DB ED */ + +OP(ed,e8) { illegal_2(); } /* DB ED */ +OP(ed,e9) { illegal_2(); } /* DB ED */ +OP(ed,ea) { illegal_2(); } /* DB ED */ +OP(ed,eb) { illegal_2(); } /* DB ED */ +OP(ed,ec) { illegal_2(); } /* DB ED */ +OP(ed,ed) { illegal_2(); } /* DB ED */ +OP(ed,ee) { illegal_2(); } /* DB ED */ +OP(ed,ef) { illegal_2(); } /* DB ED */ + +OP(ed,f0) { illegal_2(); } /* DB ED */ +OP(ed,f1) { illegal_2(); } /* DB ED */ +OP(ed,f2) { illegal_2(); } /* DB ED */ +OP(ed,f3) { illegal_2(); } /* DB ED */ +OP(ed,f4) { illegal_2(); } /* DB ED */ +OP(ed,f5) { illegal_2(); } /* DB ED */ +OP(ed,f6) { illegal_2(); } /* DB ED */ +OP(ed,f7) { illegal_2(); } /* DB ED */ + +OP(ed,f8) { illegal_2(); } /* DB ED */ +OP(ed,f9) { illegal_2(); } /* DB ED */ +OP(ed,fa) { illegal_2(); } /* DB ED */ +OP(ed,fb) { illegal_2(); } /* DB ED */ +OP(ed,fc) { illegal_2(); } /* DB ED */ +OP(ed,fd) { illegal_2(); } /* DB ED */ +OP(ed,fe) { illegal_2(); } /* DB ED */ +OP(ed,ff) { illegal_2(); } /* DB ED */ + + +/********************************************************** + * main opcodes + **********************************************************/ +OP(op,00) { } /* NOP */ +OP(op,01) { BC = ARG16(); } /* LD BC,w */ +OP(op,02) { WM( BC, A ); WZ_L = (BC + 1) & 0xFF; WZ_H = A; } /* LD (BC),A */ +OP(op,03) { BC++; } /* INC BC */ +OP(op,04) { B = INC(B); } /* INC B */ +OP(op,05) { B = DEC(B); } /* DEC B */ +OP(op,06) { B = ARG(); } /* LD B,n */ +OP(op,07) { RLCA; } /* RLCA */ + +OP(op,08) { EX_AF; } /* EX AF,AF' */ +OP(op,09) { ADD16(hl, bc); } /* ADD HL,BC */ +OP(op,0a) { A = RM( BC ); WZ=BC+1; } /* LD A,(BC) */ +OP(op,0b) { BC--; } /* DEC BC */ +OP(op,0c) { C = INC(C); } /* INC C */ +OP(op,0d) { C = DEC(C); } /* DEC C */ +OP(op,0e) { C = ARG(); } /* LD C,n */ +OP(op,0f) { RRCA; } /* RRCA */ + +OP(op,10) { B--; JR_COND( B, 0x10 ); } /* DJNZ o */ +OP(op,11) { DE = ARG16(); } /* LD DE,w */ +OP(op,12) { WM( DE, A ); WZ_L = (DE + 1) & 0xFF; WZ_H = A; } /* LD (DE),A */ +OP(op,13) { DE++; } /* INC DE */ +OP(op,14) { D = INC(D); } /* INC D */ +OP(op,15) { D = DEC(D); } /* DEC D */ +OP(op,16) { D = ARG(); } /* LD D,n */ +OP(op,17) { RLA; } /* RLA */ + +OP(op,18) { JR(); } /* JR o */ +OP(op,19) { ADD16(hl, de); } /* ADD HL,DE */ +OP(op,1a) { A = RM( DE ); WZ=DE+1; } /* LD A,(DE) */ +OP(op,1b) { DE--; } /* DEC DE */ +OP(op,1c) { E = INC(E); } /* INC E */ +OP(op,1d) { E = DEC(E); } /* DEC E */ +OP(op,1e) { E = ARG(); } /* LD E,n */ +OP(op,1f) { RRA; } /* RRA */ + +OP(op,20) { JR_COND( !(F & ZF), 0x20 ); } /* JR NZ,o */ +OP(op,21) { HL = ARG16(); } /* LD HL,w */ +OP(op,22) { EA = ARG16(); WM16( EA, &Z80.hl ); WZ = EA+1; } /* LD (w),HL */ +OP(op,23) { HL++; } /* INC HL */ +OP(op,24) { H = INC(H); } /* INC H */ +OP(op,25) { H = DEC(H); } /* DEC H */ +OP(op,26) { H = ARG(); } /* LD H,n */ +OP(op,27) { DAA; } /* DAA */ + +OP(op,28) { JR_COND( F & ZF, 0x28 ); } /* JR Z,o */ +OP(op,29) { ADD16(hl, hl); } /* ADD HL,HL */ +OP(op,2a) { EA = ARG16(); RM16( EA, &Z80.hl ); WZ = EA+1; } /* LD HL,(w) */ +OP(op,2b) { HL--; } /* DEC HL */ +OP(op,2c) { L = INC(L); } /* INC L */ +OP(op,2d) { L = DEC(L); } /* DEC L */ +OP(op,2e) { L = ARG(); } /* LD L,n */ +OP(op,2f) { A ^= 0xff; F = (F&(SF|ZF|PF|CF))|HF|NF|(A&(YF|XF)); } /* CPL */ + +OP(op,30) { JR_COND( !(F & CF), 0x30 ); } /* JR NC,o */ +OP(op,31) { SP = ARG16(); } /* LD SP,w */ +OP(op,32) { EA = ARG16(); WM( EA, A ); WZ_L=(EA+1)&0xFF;WZ_H=A; } /* LD (w),A */ +OP(op,33) { SP++; } /* INC SP */ +OP(op,34) { WM( HL, INC(RM(HL)) ); } /* INC (HL) */ +OP(op,35) { WM( HL, DEC(RM(HL)) ); } /* DEC (HL) */ +OP(op,36) { WM( HL, ARG() ); } /* LD (HL),n */ +OP(op,37) { F = (F & (SF|ZF|YF|XF|PF)) | CF | (A & (YF|XF)); } /* SCF */ + +OP(op,38) { JR_COND( F & CF, 0x38 ); } /* JR C,o */ +OP(op,39) { ADD16(hl, sp); } /* ADD HL,SP */ +OP(op,3a) { EA = ARG16(); A = RM( EA ); WZ = EA+1; } /* LD A,(w) */ +OP(op,3b) { SP--; } /* DEC SP */ +OP(op,3c) { A = INC(A); } /* INC A */ +OP(op,3d) { A = DEC(A); } /* DEC A */ +OP(op,3e) { A = ARG(); } /* LD A,n */ +OP(op,3f) { F = ((F&(SF|ZF|YF|XF|PF|CF))|((F&CF)<<4)|(A&(YF|XF)))^CF; } /* CCF */ + +OP(op,40) { } /* LD B,B */ +OP(op,41) { B = C; } /* LD B,C */ +OP(op,42) { B = D; } /* LD B,D */ +OP(op,43) { B = E; } /* LD B,E */ +OP(op,44) { B = H; } /* LD B,H */ +OP(op,45) { B = L; } /* LD B,L */ +OP(op,46) { B = RM(HL); } /* LD B,(HL) */ +OP(op,47) { B = A; } /* LD B,A */ + +OP(op,48) { C = B; } /* LD C,B */ +OP(op,49) { } /* LD C,C */ +OP(op,4a) { C = D; } /* LD C,D */ +OP(op,4b) { C = E; } /* LD C,E */ +OP(op,4c) { C = H; } /* LD C,H */ +OP(op,4d) { C = L; } /* LD C,L */ +OP(op,4e) { C = RM(HL); } /* LD C,(HL) */ +OP(op,4f) { C = A; } /* LD C,A */ + +OP(op,50) { D = B; } /* LD D,B */ +OP(op,51) { D = C; } /* LD D,C */ +OP(op,52) { } /* LD D,D */ +OP(op,53) { D = E; } /* LD D,E */ +OP(op,54) { D = H; } /* LD D,H */ +OP(op,55) { D = L; } /* LD D,L */ +OP(op,56) { D = RM(HL); } /* LD D,(HL) */ +OP(op,57) { D = A; } /* LD D,A */ + +OP(op,58) { E = B; } /* LD E,B */ +OP(op,59) { E = C; } /* LD E,C */ +OP(op,5a) { E = D; } /* LD E,D */ +OP(op,5b) { } /* LD E,E */ +OP(op,5c) { E = H; } /* LD E,H */ +OP(op,5d) { E = L; } /* LD E,L */ +OP(op,5e) { E = RM(HL); } /* LD E,(HL) */ +OP(op,5f) { E = A; } /* LD E,A */ + +OP(op,60) { H = B; } /* LD H,B */ +OP(op,61) { H = C; } /* LD H,C */ +OP(op,62) { H = D; } /* LD H,D */ +OP(op,63) { H = E; } /* LD H,E */ +OP(op,64) { } /* LD H,H */ +OP(op,65) { H = L; } /* LD H,L */ +OP(op,66) { H = RM(HL); } /* LD H,(HL) */ +OP(op,67) { H = A; } /* LD H,A */ + +OP(op,68) { L = B; } /* LD L,B */ +OP(op,69) { L = C; } /* LD L,C */ +OP(op,6a) { L = D; } /* LD L,D */ +OP(op,6b) { L = E; } /* LD L,E */ +OP(op,6c) { L = H; } /* LD L,H */ +OP(op,6d) { } /* LD L,L */ +OP(op,6e) { L = RM(HL); } /* LD L,(HL) */ +OP(op,6f) { L = A; } /* LD L,A */ + +OP(op,70) { WM( HL, B ); } /* LD (HL),B */ +OP(op,71) { WM( HL, C ); } /* LD (HL),C */ +OP(op,72) { WM( HL, D ); } /* LD (HL),D */ +OP(op,73) { WM( HL, E ); } /* LD (HL),E */ +OP(op,74) { WM( HL, H ); } /* LD (HL),H */ +OP(op,75) { WM( HL, L ); } /* LD (HL),L */ +OP(op,76) { ENTER_HALT; } /* HALT */ +OP(op,77) { WM( HL, A ); } /* LD (HL),A */ + +OP(op,78) { A = B; } /* LD A,B */ +OP(op,79) { A = C; } /* LD A,C */ +OP(op,7a) { A = D; } /* LD A,D */ +OP(op,7b) { A = E; } /* LD A,E */ +OP(op,7c) { A = H; } /* LD A,H */ +OP(op,7d) { A = L; } /* LD A,L */ +OP(op,7e) { A = RM(HL); } /* LD A,(HL) */ +OP(op,7f) { } /* LD A,A */ + +OP(op,80) { ADD(B); } /* ADD A,B */ +OP(op,81) { ADD(C); } /* ADD A,C */ +OP(op,82) { ADD(D); } /* ADD A,D */ +OP(op,83) { ADD(E); } /* ADD A,E */ +OP(op,84) { ADD(H); } /* ADD A,H */ +OP(op,85) { ADD(L); } /* ADD A,L */ +OP(op,86) { ADD(RM(HL)); } /* ADD A,(HL) */ +OP(op,87) { ADD(A); } /* ADD A,A */ + +OP(op,88) { ADC(B); } /* ADC A,B */ +OP(op,89) { ADC(C); } /* ADC A,C */ +OP(op,8a) { ADC(D); } /* ADC A,D */ +OP(op,8b) { ADC(E); } /* ADC A,E */ +OP(op,8c) { ADC(H); } /* ADC A,H */ +OP(op,8d) { ADC(L); } /* ADC A,L */ +OP(op,8e) { ADC(RM(HL)); } /* ADC A,(HL) */ +OP(op,8f) { ADC(A); } /* ADC A,A */ + +OP(op,90) { SUB(B); } /* SUB B */ +OP(op,91) { SUB(C); } /* SUB C */ +OP(op,92) { SUB(D); } /* SUB D */ +OP(op,93) { SUB(E); } /* SUB E */ +OP(op,94) { SUB(H); } /* SUB H */ +OP(op,95) { SUB(L); } /* SUB L */ +OP(op,96) { SUB(RM(HL)); } /* SUB (HL) */ +OP(op,97) { SUB(A); } /* SUB A */ + +OP(op,98) { SBC(B); } /* SBC A,B */ +OP(op,99) { SBC(C); } /* SBC A,C */ +OP(op,9a) { SBC(D); } /* SBC A,D */ +OP(op,9b) { SBC(E); } /* SBC A,E */ +OP(op,9c) { SBC(H); } /* SBC A,H */ +OP(op,9d) { SBC(L); } /* SBC A,L */ +OP(op,9e) { SBC(RM(HL)); } /* SBC A,(HL) */ +OP(op,9f) { SBC(A); } /* SBC A,A */ + +OP(op,a0) { AND(B); } /* AND B */ +OP(op,a1) { AND(C); } /* AND C */ +OP(op,a2) { AND(D); } /* AND D */ +OP(op,a3) { AND(E); } /* AND E */ +OP(op,a4) { AND(H); } /* AND H */ +OP(op,a5) { AND(L); } /* AND L */ +OP(op,a6) { AND(RM(HL)); } /* AND (HL) */ +OP(op,a7) { AND(A); } /* AND A */ + +OP(op,a8) { XOR(B); } /* XOR B */ +OP(op,a9) { XOR(C); } /* XOR C */ +OP(op,aa) { XOR(D); } /* XOR D */ +OP(op,ab) { XOR(E); } /* XOR E */ +OP(op,ac) { XOR(H); } /* XOR H */ +OP(op,ad) { XOR(L); } /* XOR L */ +OP(op,ae) { XOR(RM(HL)); } /* XOR (HL) */ +OP(op,af) { XOR(A); } /* XOR A */ + +OP(op,b0) { OR(B); } /* OR B */ +OP(op,b1) { OR(C); } /* OR C */ +OP(op,b2) { OR(D); } /* OR D */ +OP(op,b3) { OR(E); } /* OR E */ +OP(op,b4) { OR(H); } /* OR H */ +OP(op,b5) { OR(L); } /* OR L */ +OP(op,b6) { OR(RM(HL)); } /* OR (HL) */ +OP(op,b7) { OR(A); } /* OR A */ + +OP(op,b8) { CP(B); } /* CP B */ +OP(op,b9) { CP(C); } /* CP C */ +OP(op,ba) { CP(D); } /* CP D */ +OP(op,bb) { CP(E); } /* CP E */ +OP(op,bc) { CP(H); } /* CP H */ +OP(op,bd) { CP(L); } /* CP L */ +OP(op,be) { CP(RM(HL)); } /* CP (HL) */ +OP(op,bf) { CP(A); } /* CP A */ + +OP(op,c0) { RET_COND( !(F & ZF), 0xc0 ); } /* RET NZ */ +OP(op,c1) { POP( bc ); } /* POP BC */ +OP(op,c2) { JP_COND( !(F & ZF) ); } /* JP NZ,a */ +OP(op,c3) { JP; } /* JP a */ +OP(op,c4) { CALL_COND( !(F & ZF), 0xc4 ); } /* CALL NZ,a */ +OP(op,c5) { PUSH( bc ); } /* PUSH BC */ +OP(op,c6) { ADD(ARG()); } /* ADD A,n */ +OP(op,c7) { RST(0x00); } /* RST 0 */ + +OP(op,c8) { RET_COND( F & ZF, 0xc8 ); } /* RET Z */ +OP(op,c9) { POP( pc ); WZ=PCD; } /* RET */ +OP(op,ca) { JP_COND( F & ZF ); } /* JP Z,a */ +OP(op,cb) { R++; EXEC(cb,ROP()); } /* **** CB xx */ +OP(op,cc) { CALL_COND( F & ZF, 0xcc ); } /* CALL Z,a */ +OP(op,cd) { CALL(); } /* CALL a */ +OP(op,ce) { ADC(ARG()); } /* ADC A,n */ +OP(op,cf) { RST(0x08); } /* RST 1 */ + +OP(op,d0) { RET_COND( !(F & CF), 0xd0 ); } /* RET NC */ +OP(op,d1) { POP( de ); } /* POP DE */ +OP(op,d2) { JP_COND( !(F & CF) ); } /* JP NC,a */ +OP(op,d3) { unsigned n = ARG() | (A << 8); OUT( n, A ); WZ_L = ((n & 0xff) + 1) & 0xff; WZ_H = A; } /* OUT (n),A */ +OP(op,d4) { CALL_COND( !(F & CF), 0xd4 ); } /* CALL NC,a */ +OP(op,d5) { PUSH( de ); } /* PUSH DE */ +OP(op,d6) { SUB(ARG()); } /* SUB n */ +OP(op,d7) { RST(0x10); } /* RST 2 */ + +OP(op,d8) { RET_COND( F & CF, 0xd8 ); } /* RET C */ +OP(op,d9) { EXX; } /* EXX */ +OP(op,da) { JP_COND( F & CF ); } /* JP C,a */ +OP(op,db) { unsigned n = ARG() | (A << 8); A = IN( n ); WZ = n + 1; } /* IN A,(n) */ +OP(op,dc) { CALL_COND( F & CF, 0xdc ); } /* CALL C,a */ +OP(op,dd) { R++; EXEC(dd,ROP()); } /* **** DD xx */ +OP(op,de) { SBC(ARG()); } /* SBC A,n */ +OP(op,df) { RST(0x18); } /* RST 3 */ + +OP(op,e0) { RET_COND( !(F & PF), 0xe0 ); } /* RET PO */ +OP(op,e1) { POP( hl ); } /* POP HL */ +OP(op,e2) { JP_COND( !(F & PF) ); } /* JP PO,a */ +OP(op,e3) { EXSP( hl ); } /* EX HL,(SP) */ +OP(op,e4) { CALL_COND( !(F & PF), 0xe4 ); } /* CALL PO,a */ +OP(op,e5) { PUSH( hl ); } /* PUSH HL */ +OP(op,e6) { AND(ARG()); } /* AND n */ +OP(op,e7) { RST(0x20); } /* RST 4 */ + +OP(op,e8) { RET_COND( F & PF, 0xe8 ); } /* RET PE */ +OP(op,e9) { PC = HL; } /* JP (HL) */ +OP(op,ea) { JP_COND( F & PF ); } /* JP PE,a */ +OP(op,eb) { EX_DE_HL; } /* EX DE,HL */ +OP(op,ec) { CALL_COND( F & PF, 0xec ); } /* CALL PE,a */ +OP(op,ed) { R++; EXEC(ed,ROP()); } /* **** ED xx */ +OP(op,ee) { XOR(ARG()); } /* XOR n */ +OP(op,ef) { RST(0x28); } /* RST 5 */ + +OP(op,f0) { RET_COND( !(F & SF), 0xf0 ); } /* RET P */ +OP(op,f1) { POP( af ); } /* POP AF */ +OP(op,f2) { JP_COND( !(F & SF) ); } /* JP P,a */ +OP(op,f3) { IFF1 = IFF2 = 0; } /* DI */ +OP(op,f4) { CALL_COND( !(F & SF), 0xf4 ); } /* CALL P,a */ +OP(op,f5) { PUSH( af ); } /* PUSH AF */ +OP(op,f6) { OR(ARG()); } /* OR n */ +OP(op,f7) { RST(0x30); } /* RST 6 */ + +OP(op,f8) { RET_COND( F & SF, 0xf8 ); } /* RET M */ +OP(op,f9) { SP = HL; } /* LD SP,HL */ +OP(op,fa) { JP_COND(F & SF); } /* JP M,a */ +OP(op,fb) { EI; } /* EI */ +OP(op,fc) { CALL_COND( F & SF, 0xfc ); } /* CALL M,a */ +OP(op,fd) { R++; EXEC(fd,ROP()); } /* **** FD xx */ +OP(op,fe) { CP(ARG()); } /* CP n */ +OP(op,ff) { RST(0x38); } /* RST 7 */ + + +static void take_interrupt(void) +{ + /* Check if processor was halted */ + LEAVE_HALT; + + /* Clear both interrupt flip flops */ + IFF1 = IFF2 = 0; + + LOG(("Z80 #%d single int. irq_vector $%02x\n", cpu_getactivecpu(), irq_vector)); + + /* Interrupt mode 1. RST 38h */ + if( IM == 1 ) + { + LOG(("Z80 #%d IM1 $0038\n",cpu_getactivecpu() )); + PUSH( pc ); + PCD = 0x0038; + /* RST $38 + 'interrupt latency' cycles */ + USE_CYCLES(cc[Z80_TABLE_op][0xff] + cc[Z80_TABLE_ex][0xff]); + } + else + { + /* call back the cpu interface to retrieve the vector */ + int irq_vector = (*Z80.irq_callback)(0); + + /* Interrupt mode 2. Call [Z80.i:databyte] */ + if( IM == 2 ) + { + irq_vector = (irq_vector & 0xff) | (I << 8); + PUSH( pc ); + RM16( irq_vector, &Z80.pc ); + LOG(("Z80 #%d IM2 [$%04x] = $%04x\n",cpu_getactivecpu() , irq_vector, PCD)); + /* CALL $xxxx + 'interrupt latency' cycles */ + USE_CYCLES(cc[Z80_TABLE_op][0xcd] + cc[Z80_TABLE_ex][0xff]); + } + else + { + /* Interrupt mode 0. We check for CALL and JP instructions, */ + /* if neither of these were found we assume a 1 byte opcode */ + /* was placed on the databus */ + LOG(("Z80 #%d IM0 $%04x\n",cpu_getactivecpu() , irq_vector)); + switch (irq_vector & 0xff0000) + { + case 0xcd0000: /* call */ + PUSH( pc ); + PCD = irq_vector & 0xffff; + /* CALL $xxxx + 'interrupt latency' cycles */ + USE_CYCLES(cc[Z80_TABLE_op][0xcd] + cc[Z80_TABLE_ex][0xff]); + break; + case 0xc30000: /* jump */ + PCD = irq_vector & 0xffff; + /* JP $xxxx + 2 cycles */ + USE_CYCLES(cc[Z80_TABLE_op][0xc3] + cc[Z80_TABLE_ex][0xff]); + break; + default: /* rst (or other opcodes?) */ + PUSH( pc ); + PCD = irq_vector & 0x0038; + /* RST $xx + 2 cycles */ + USE_CYCLES(cc[Z80_TABLE_op][0xff] + cc[Z80_TABLE_ex][0xff]); + break; + } + } + } + WZ=PCD; +} + +/**************************************************************************** + * Processor initialization + ****************************************************************************/ +void z80_init(const void *config, int (*irqcallback)(int)) +{ + int i, p; + + int oldval, newval, val; + UINT8 *padd = &SZHVC_add[ 0*256]; + UINT8 *padc = &SZHVC_add[256*256]; + UINT8 *psub = &SZHVC_sub[ 0*256]; + UINT8 *psbc = &SZHVC_sub[256*256]; + for (oldval = 0; oldval < 256; oldval++) + { + for (newval = 0; newval < 256; newval++) + { + /* add or adc w/o carry set */ + val = newval - oldval; + *padd = (newval) ? ((newval & 0x80) ? SF : 0) : ZF; + *padd |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ + if( (newval & 0x0f) < (oldval & 0x0f) ) *padd |= HF; + if( newval < oldval ) *padd |= CF; + if( (val^oldval^0x80) & (val^newval) & 0x80 ) *padd |= VF; + padd++; + + /* adc with carry set */ + val = newval - oldval - 1; + *padc = (newval) ? ((newval & 0x80) ? SF : 0) : ZF; + *padc |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ + if( (newval & 0x0f) <= (oldval & 0x0f) ) *padc |= HF; + if( newval <= oldval ) *padc |= CF; + if( (val^oldval^0x80) & (val^newval) & 0x80 ) *padc |= VF; + padc++; + + /* cp, sub or sbc w/o carry set */ + val = oldval - newval; + *psub = NF | ((newval) ? ((newval & 0x80) ? SF : 0) : ZF); + *psub |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ + if( (newval & 0x0f) > (oldval & 0x0f) ) *psub |= HF; + if( newval > oldval ) *psub |= CF; + if( (val^oldval) & (oldval^newval) & 0x80 ) *psub |= VF; + psub++; + + /* sbc with carry set */ + val = oldval - newval - 1; + *psbc = NF | ((newval) ? ((newval & 0x80) ? SF : 0) : ZF); + *psbc |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ + if( (newval & 0x0f) >= (oldval & 0x0f) ) *psbc |= HF; + if( newval >= oldval ) *psbc |= CF; + if( (val^oldval) & (oldval^newval) & 0x80 ) *psbc |= VF; + psbc++; + } + } + + for (i = 0; i < 256; i++) + { + p = 0; + if( i&0x01 ) ++p; + if( i&0x02 ) ++p; + if( i&0x04 ) ++p; + if( i&0x08 ) ++p; + if( i&0x10 ) ++p; + if( i&0x20 ) ++p; + if( i&0x40 ) ++p; + if( i&0x80 ) ++p; + SZ[i] = i ? i & SF : ZF; + SZ[i] |= (i & (YF | XF)); /* undocumented flag bits 5+3 */ + SZ_BIT[i] = i ? i & SF : ZF | PF; + SZ_BIT[i] |= (i & (YF | XF)); /* undocumented flag bits 5+3 */ + SZP[i] = SZ[i] | ((p & 1) ? 0 : PF); + SZHV_inc[i] = SZ[i]; + if( i == 0x80 ) SZHV_inc[i] |= VF; + if( (i & 0x0f) == 0x00 ) SZHV_inc[i] |= HF; + SZHV_dec[i] = SZ[i] | NF; + if( i == 0x7f ) SZHV_dec[i] |= VF; + if( (i & 0x0f) == 0x0f ) SZHV_dec[i] |= HF; + } + + /* Initialize Z80 */ + memset(&Z80, 0, sizeof(Z80)); + Z80.daisy = config; + Z80.irq_callback = irqcallback; +#ifdef Z80_OVERCLOCK_SHIFT + z80_cycle_ratio = 1 << Z80_OVERCLOCK_SHIFT; +#endif + + /* Clear registers values (NB: should be random on real hardware ?) */ + AF = BC = DE = HL = SP = IX = IY =0; + F = ZF; /* Zero flag is set */ + + /* setup cycle tables */ + cc[Z80_TABLE_op] = cc_op; + cc[Z80_TABLE_cb] = cc_cb; + cc[Z80_TABLE_ed] = cc_ed; + cc[Z80_TABLE_xy] = cc_xy; + cc[Z80_TABLE_xycb] = cc_xycb; + cc[Z80_TABLE_ex] = cc_ex; +} + +/**************************************************************************** + * Do a reset + ****************************************************************************/ +void z80_reset(void) +{ + PC = 0x0000; + I = 0; + R = 0; + R2 = 0; + IM = 0; + IFF1 = IFF2 = 0; + HALT = 0; + + Z80.after_ei = FALSE; + + WZ=PCD; +} + +/**************************************************************************** + * Run until given cycle count + ****************************************************************************/ +void z80_run(unsigned int cycles) +{ + while( Z80.cycles < cycles ) + { + /* check for IRQs before each instruction */ + if (Z80.irq_state && IFF1 && !Z80.after_ei) + { + take_interrupt(); + if (Z80.cycles >= cycles) return; + } + + Z80.after_ei = FALSE; + R++; + EXEC_INLINE(op,ROP()); + } +} + +/**************************************************************************** + * Get all registers in given buffer + ****************************************************************************/ +void z80_get_context (void *dst) +{ + if( dst ) + *(Z80_Regs*)dst = Z80; +} + +/**************************************************************************** + * Set all registers to given values + ****************************************************************************/ +void z80_set_context (void *src) +{ + if( src ) + Z80 = *(Z80_Regs*)src; +} + +/**************************************************************************** + * Set IRQ lines + ****************************************************************************/ +void z80_set_irq_line(unsigned int state) +{ + Z80.irq_state = state; +} + +void z80_set_nmi_line(unsigned int state) +{ + /* mark an NMI pending on the rising edge */ + if (Z80.nmi_state == CLEAR_LINE && state != CLEAR_LINE) + { + LOG(("Z80 #%d take NMI\n", cpu_getactivecpu())); + LEAVE_HALT; /* Check if processor was halted */ + + IFF1 = 0; + PUSH( pc ); + PCD = 0x0066; + WZ=PCD; + + USE_CYCLES(11*15); + } + + Z80.nmi_state = state; +} + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/z80.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/z80.h similarity index 96% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/z80.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/z80.h index a85f106560..222070e0c1 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/z80/z80.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/genplusgx_source/z80/z80.h @@ -1,75 +1,75 @@ -#ifndef Z80_H_ -#define Z80_H_ - -#include "osd_cpu.h" - -enum -{ - /* line states */ - CLEAR_LINE = 0, /* clear (a fired, held or pulsed) line */ - ASSERT_LINE, /* assert an interrupt immediately */ - HOLD_LINE, /* hold interrupt line until acknowledged */ - PULSE_LINE /* pulse interrupt line for one instruction */ -}; - -enum { - Z80_PC, Z80_SP, - Z80_A, Z80_B, Z80_C, Z80_D, Z80_E, Z80_H, Z80_L, - Z80_AF, Z80_BC, Z80_DE, Z80_HL, - Z80_IX, Z80_IY, Z80_AF2, Z80_BC2, Z80_DE2, Z80_HL2, - Z80_R, Z80_I, Z80_IM, Z80_IFF1, Z80_IFF2, Z80_HALT, - Z80_DC0, Z80_DC1, Z80_DC2, Z80_DC3, Z80_WZ -}; - -enum { - Z80_TABLE_op, - Z80_TABLE_cb, - Z80_TABLE_ed, - Z80_TABLE_xy, - Z80_TABLE_xycb, - Z80_TABLE_ex /* cycles counts for taken jr/jp/call and interrupt latency (rst opcodes) */ -}; - -/****************************************************************************/ -/* The Z80 registers. HALT is set to 1 when the CPU is halted, the refresh */ -/* register is calculated as follows: refresh=(Z80.r&127)|(Z80.r2&128) */ -/****************************************************************************/ -typedef struct -{ - PAIR pc,sp,af,bc,de,hl,ix,iy,wz; - PAIR af2,bc2,de2,hl2; - UINT8 r,r2,iff1,iff2,halt,im,i; - UINT8 nmi_state; /* nmi line state */ - UINT8 nmi_pending; /* nmi pending */ - UINT8 irq_state; /* irq line state */ - UINT8 after_ei; /* are we in the EI shadow? */ - UINT32 cycles; /* master clock cycles global counter */ - const struct z80_irq_daisy_chain *daisy; - int (*irq_callback)(int irqline); -} Z80_Regs; - - -extern Z80_Regs Z80; - -#ifdef Z80_OVERCLOCK_SHIFT -extern UINT32 z80_cycle_ratio; -#endif - -extern unsigned char *z80_readmap[64]; -extern unsigned char *z80_writemap[64]; - -extern void (*z80_writemem)(unsigned int address, unsigned char data); -extern unsigned char (*z80_readmem)(unsigned int address); -extern void (*z80_writeport)(unsigned int port, unsigned char data); -extern unsigned char (*z80_readport)(unsigned int port); - -extern void z80_init(const void *config, int (*irqcallback)(int)); -extern void z80_reset (void); -extern void z80_run(unsigned int cycles); -extern void z80_get_context (void *dst); -extern void z80_set_context (void *src); -extern void z80_set_irq_line(unsigned int state); -extern void z80_set_nmi_line(unsigned int state); - -#endif - +#ifndef Z80_H_ +#define Z80_H_ + +#include "osd_cpu.h" + +enum +{ + /* line states */ + CLEAR_LINE = 0, /* clear (a fired, held or pulsed) line */ + ASSERT_LINE, /* assert an interrupt immediately */ + HOLD_LINE, /* hold interrupt line until acknowledged */ + PULSE_LINE /* pulse interrupt line for one instruction */ +}; + +enum { + Z80_PC, Z80_SP, + Z80_A, Z80_B, Z80_C, Z80_D, Z80_E, Z80_H, Z80_L, + Z80_AF, Z80_BC, Z80_DE, Z80_HL, + Z80_IX, Z80_IY, Z80_AF2, Z80_BC2, Z80_DE2, Z80_HL2, + Z80_R, Z80_I, Z80_IM, Z80_IFF1, Z80_IFF2, Z80_HALT, + Z80_DC0, Z80_DC1, Z80_DC2, Z80_DC3, Z80_WZ +}; + +enum { + Z80_TABLE_op, + Z80_TABLE_cb, + Z80_TABLE_ed, + Z80_TABLE_xy, + Z80_TABLE_xycb, + Z80_TABLE_ex /* cycles counts for taken jr/jp/call and interrupt latency (rst opcodes) */ +}; + +/****************************************************************************/ +/* The Z80 registers. HALT is set to 1 when the CPU is halted, the refresh */ +/* register is calculated as follows: refresh=(Z80.r&127)|(Z80.r2&128) */ +/****************************************************************************/ +typedef struct +{ + PAIR pc,sp,af,bc,de,hl,ix,iy,wz; + PAIR af2,bc2,de2,hl2; + UINT8 r,r2,iff1,iff2,halt,im,i; + UINT8 nmi_state; /* nmi line state */ + UINT8 nmi_pending; /* nmi pending */ + UINT8 irq_state; /* irq line state */ + UINT8 after_ei; /* are we in the EI shadow? */ + UINT32 cycles; /* master clock cycles global counter */ + const struct z80_irq_daisy_chain *daisy; + int (*irq_callback)(int irqline); +} Z80_Regs; + + +extern Z80_Regs Z80; + +#ifdef Z80_OVERCLOCK_SHIFT +extern UINT32 z80_cycle_ratio; +#endif + +extern unsigned char *z80_readmap[64]; +extern unsigned char *z80_writemap[64]; + +extern void (*z80_writemem)(unsigned int address, unsigned char data); +extern unsigned char (*z80_readmem)(unsigned int address); +extern void (*z80_writeport)(unsigned int port, unsigned char data); +extern unsigned char (*z80_readport)(unsigned int port); + +extern void z80_init(const void *config, int (*irqcallback)(int)); +extern void z80_reset (void); +extern void z80_run(unsigned int cycles); +extern void z80_get_context (void *dst); +extern void z80_set_context (void *src); +extern void z80_set_irq_line(unsigned int state); +extern void z80_set_nmi_line(unsigned int state); + +#endif + diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/libretro.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/libretro.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/libretro.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/libretro.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/libretro.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/libretro.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/libretro.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/libretro.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/scrc32.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/scrc32.c similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/scrc32.c rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/scrc32.c diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/scrc32.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/scrc32.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/libretro/scrc32.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/libretro/scrc32.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/other/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Deps/other/config.c new file mode 100644 index 0000000000..80a9ec405e --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/other/config.c @@ -0,0 +1,57 @@ + +#include "shared.h" + +t_config config; + + +void set_config_defaults(void) +{ + int i; + + /* sound options */ + config.psg_preamp = 150; + config.fm_preamp = 100; + config.hq_fm = 1; + config.hq_psg = 1; + config.filter = 1; + config.low_freq = 200; + config.high_freq = 8000; + config.lg = 100; + config.mg = 100; + config.hg = 100; + config.lp_range = 0x7fff; /* 0.6 in 0.16 fixed point */ + config.ym2612 = YM2612_DISCRETE; + config.ym2413 = 2; /* = AUTO (0 = always OFF, 1 = always ON) */ + config.ym3438 = 0; + config.opll = 0; + config.mono = 0; + + /* system options */ + config.system = 0; /* = AUTO (or SYSTEM_SG, SYSTEM_MARKIII, SYSTEM_SMS, SYSTEM_SMS2, SYSTEM_GG, SYSTEM_MD) */ + config.region_detect = 0; /* = AUTO (1 = USA, 2 = EUROPE, 3 = JAPAN/NTSC, 4 = JAPAN/PAL) */ + config.vdp_mode = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ + config.master_clock = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ + config.force_dtack = 0; + config.addr_error = 1; + config.bios = 0; + config.lock_on = 0; /* = OFF (can be TYPE_SK, TYPE_GG & TYPE_AR) */ + config.ntsc = 0; + config.lcd = 0; /* 0.8 fixed point */ + + /* display options */ + config.overscan = 0; /* 3 = all borders (0 = no borders , 1 = vertical borders only, 2 = horizontal borders only) */ + config.gg_extra = 0; /* 1 = show extended Game Gear screen (256x192) */ + config.render = 0; /* 1 = double resolution output (only when interlaced mode 2 is enabled) */ + + /* controllers options */ + input.system[0] = SYSTEM_GAMEPAD; + input.system[1] = SYSTEM_GAMEPAD; + config.gun_cursor[0] = 1; + config.gun_cursor[1] = 1; + config.invert_mouse = 0; + for (i=0;i + +static int check_zip(char *filename); + +int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension) +{ + int size = 0; + + if(check_zip(filename)) + { + unz_file_info info; + int ret = 0; + char fname[256]; + + /* Attempt to open the archive */ + unzFile *fd = unzOpen(filename); + if (!fd) return 0; + + /* Go to first file in archive */ + ret = unzGoToFirstFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Get file informations and update filename */ + ret = unzGetCurrentFileInfo(fd, &info, fname, 256, NULL, 0, NULL, 0); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Compressed filename extension */ + if (extension) + { + strncpy(extension, &fname[strlen(fname) - 3], 3); + extension[3] = 0; + } + + /* Open the file for reading */ + ret = unzOpenCurrentFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Retrieve uncompressed file size */ + size = info.uncompressed_size; + if(size > maxsize) + { + size = maxsize; + } + + /* Read (decompress) the file */ + ret = unzReadCurrentFile(fd, buffer, size); + if(ret != size) + { + unzCloseCurrentFile(fd); + unzClose(fd); + return 0; + } + + /* Close the current file */ + ret = unzCloseCurrentFile(fd); + if(ret != UNZ_OK) + { + unzClose(fd); + return 0; + } + + /* Close the archive */ + ret = unzClose(fd); + if(ret != UNZ_OK) return 0; + } + else + { + /* Open file */ + gzFile gd = gzopen(filename, "rb"); + if (!gd) return 0; + + /* Read file data */ + size = gzread(gd, buffer, maxsize); + + /* filename extension */ + if (extension) + { + strncpy(extension, &filename[strlen(filename) - 3], 3); + extension[3] = 0; + } + + /* Close file */ + gzclose(gd); + } + + /* Return loaded ROM size */ + return size; +} + +/* + Verifies if a file is a ZIP archive or not. + Returns: 1= ZIP archive, 0= not a ZIP archive +*/ +static int check_zip(char *filename) +{ + uint8 buf[2]; + FILE *fd = fopen(filename, "rb"); + if(!fd) return (0); + fread(buf, 2, 1, fd); + fclose(fd); + if(memcmp(buf, "PK", 2) == 0) return (1); + return (0); +} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Deps/other/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/other/fileio.h new file mode 100644 index 0000000000..f95a8e8a73 --- /dev/null +++ b/Cores/Genesis-Plus-GX/PVGenesis/Deps/other/fileio.h @@ -0,0 +1,48 @@ +/* + * fileio.c + * + * Load a normal file, or ZIP/GZ archive. + * Returns loaded ROM size (zero if an error occured) + * + * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald + * modified by Eke-Eke (Genesis Plus GX) + * + * Redistribution and use of this code or any derivative works are permitted + * provided that the following conditions are met: + * + * - Redistributions may not be sold, nor may they be used in a commercial + * product or activity. + * + * - Redistributions that are modified from the original source must include the + * complete source code, including the source code for all components used by a + * binary built from the modified sources. However, as a special exception, the + * source code distributed need not include anything that is normally distributed + * (in either source or binary form) with the major components (compiler, kernel, + * and so on) of the operating system on which the executable runs, unless that + * component itself accompanies the executable. + * + * - Redistributions must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************************/ + +#ifndef _FILEIO_H_ +#define _FILEIO_H_ + +/* Function prototypes */ +extern int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension); + +#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Deps/other/osd.h similarity index 100% rename from Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/osd.h rename to Cores/Genesis-Plus-GX/PVGenesis/Deps/other/osd.h diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/config.c deleted file mode 100644 index b7b7958d28..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/config.c +++ /dev/null @@ -1,261 +0,0 @@ -/**************************************************************************** - * config.c - * - * Genesis Plus GX configuration file support - * - * Copyright Eke-Eke (2007-2013) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "gui.h" -#include "file_load.h" - -static int config_load(void) -{ - /* open configuration file */ - char fname[MAXPATHLEN]; - sprintf (fname, "%s/config.ini", DEFAULT_PATH); - FILE *fp = fopen(fname, "rb"); - if (fp) - { - /* check file size */ - fseek(fp, 0, SEEK_END); - if (ftell(fp) != sizeof(config)) - { - fclose(fp); - return 0; - } - - /* check version */ - char version[16]; - fseek(fp, 0, SEEK_SET); - fread(version, 16, 1, fp); - if (memcmp(version,CONFIG_VERSION,16)) - { - fclose(fp); - return 0; - } - - /* read file */ - fseek(fp, 0, SEEK_SET); - fread(&config, sizeof(config), 1, fp); - fclose(fp); - return 1; - } - return 0; -} - -void config_save(void) -{ - /* open configuration file */ - char fname[MAXPATHLEN]; - sprintf (fname, "%s/config.ini", DEFAULT_PATH); - FILE *fp = fopen(fname, "wb"); - if (fp) - { - /* write file */ - fwrite(&config, sizeof(config), 1, fp); - fclose(fp); - } -} - -void config_default(void) -{ - /* version TAG */ - strncpy(config.version,CONFIG_VERSION,16); - - /* sound options */ - config.psg_preamp = 150; - config.fm_preamp = 100; - config.hq_fm = 1; - config.psgBoostNoise = 1; - config.filter = 1; - config.lp_range = 0x9999; /* 0.6 in 16.16 fixed point */ - config.low_freq = 880; - config.high_freq = 5000; - config.lg = 1.0; - config.mg = 1.0; - config.hg = 1.0; - config.dac_bits = 14; - config.ym2413 = 2; /* AUTO */ - config.mono = 0; - - /* system options */ - config.system = 0; /* AUTO */ - config.region_detect = 0; /* AUTO */ - config.vdp_mode = 0; /* AUTO */ - config.master_clock = 0; /* AUTO */ - config.force_dtack = 0; - config.addr_error = 1; - config.bios = 0; - config.lock_on = 0; - config.hot_swap = 0; - - /* video options */ - config.xshift = 0; - config.yshift = 0; - config.xscale = 0; - config.yscale = 0; - config.aspect = 1; - config.overscan = 3; /* FULL */ - config.gg_extra = 0; - config.ntsc = 0; - config.vsync = 1; /* AUTO */ - config.bilinear = 1; - config.vfilter = 1; - - if (VIDEO_HaveComponentCable()) - { - config.render = 2; - } - else - { - config.render = 0; - } - - switch (vmode->viTVMode >> 2) - { - case VI_PAL: - config.tv_mode = 1; /* 50hz only */ - break; - - case VI_EURGB60: - config.tv_mode = 2; /* 50/60hz */ - break; - - default: - config.tv_mode = 0; /* 60hz only */ - break; - } - -#ifdef HW_RVL - config.trap = 0; - config.gamma = VI_GM_1_0 / 10.0; -#endif - - /* controllers options */ - config.gun_cursor[0] = 1; - config.gun_cursor[1] = 1; - config.invert_mouse = 0; - - /* on-screen options */ - config.cd_leds = 0; - - /* menu options */ - config.autoload = 0; - config.autocheat = 0; -#ifdef HW_RVL - config.s_auto = 1; -#else - config.s_auto = 0; - config.v_prog = 1; -#endif - config.s_default = 1; - config.s_device = 0; - config.l_device = 0; - config.bg_overlay = 0; - config.screen_w = 658; - config.bgm_volume = 100.0; - config.sfx_volume = 100.0; - - /* default ROM directories */ -#ifdef HW_RVL - sprintf (config.lastdir[0][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[1][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[2][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[3][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[4][TYPE_SD], "sd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[0][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[1][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[2][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[3][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[4][TYPE_USB], "usb:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[0][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[1][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[2][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[3][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[4][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); -#else - sprintf (config.lastdir[0][TYPE_SD], "%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[1][TYPE_SD], "%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[2][TYPE_SD], "%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[3][TYPE_SD], "%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[4][TYPE_SD], "%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[0][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[1][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[2][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[3][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); - sprintf (config.lastdir[4][TYPE_DVD], "dvd:%s/roms/", DEFAULT_PATH); -#endif - - /* try to restore user config */ - int loaded = config_load(); - -#ifndef HW_RVL - /* detect progressive mode enable/disable requests */ - PAD_ScanPads(); - if (PAD_ButtonsHeld(0) & PAD_BUTTON_B) - { - /* swap progressive mode enable flag and play some sound to inform user */ - config.v_prog ^= 1; - ASND_Pause(0); - int voice = ASND_GetFirstUnusedVoice(); - ASND_SetVoice(voice,VOICE_MONO_16BIT,44100,0,(u8 *)intro_pcm,intro_pcm_size,200,200,NULL); - sleep (2); - ASND_Pause(1); - } - - /* switch into 480p if component cable has been detected and progressive mode is enabled */ - if (VIDEO_HaveComponentCable() && config.v_prog) - { - vmode = &TVNtsc480Prog; - VIDEO_Configure (vmode); - VIDEO_Flush(); - VIDEO_WaitVSync(); - VIDEO_WaitVSync(); - } -#endif - - /* inform user if default config is used */ - if (!loaded) - { - GUI_WaitPrompt("Warning","Default Settings restored"); - gx_input_SetDefault(); - } - - /* default emulated inputs */ - input.system[0] = SYSTEM_MD_GAMEPAD; - input.system[1] = (config.input[1].device != -1) ? SYSTEM_MD_GAMEPAD : NO_SYSTEM; - input_init(); -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/config.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/config.h deleted file mode 100644 index c4f992af8b..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/config.h +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** - * config.c - * - * Genesis Plus GX configuration file support - * - * Copyright Eke-Eke (2007-2013) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _CONFIG_H_ -#define _CONFIG_H_ - -#define CONFIG_VERSION "GENPLUS-GX 1.7.4" - -/**************************************************************************** - * Config Option - * - ****************************************************************************/ -typedef struct -{ - char version[16]; - uint8 hq_fm; - uint8 filter; - uint8 psgBoostNoise; - uint8 dac_bits; - uint8 ym2413; - uint8 mono; - int16 psg_preamp; - int16 fm_preamp; - uint32 lp_range; - int16 low_freq; - int16 high_freq; - int16 lg; - int16 mg; - int16 hg; - uint8 system; - uint8 region_detect; - uint8 master_clock; - uint8 vdp_mode; - uint8 force_dtack; - uint8 addr_error; - uint8 bios; - uint8 lock_on; - uint8 hot_swap; - uint8 invert_mouse; - uint8 gun_cursor[2]; - uint8 overscan; - uint8 gg_extra; - uint8 ntsc; - uint8 vsync; - uint8 render; - uint8 tv_mode; - uint8 bilinear; - uint8 vfilter; - uint8 aspect; - int16 xshift; - int16 yshift; - int16 xscale; - int16 yscale; -#ifdef HW_RVL - uint32 trap; - float gamma; -#else - uint8 v_prog; -#endif - t_input_config input[MAX_INPUTS]; - uint16 pad_keymap[4][MAX_KEYS+1]; -#ifdef HW_RVL - uint32 wpad_keymap[4*3][MAX_KEYS]; -#endif - uint8 autoload; - uint8 autocheat; - uint8 s_auto; - uint8 s_default; - uint8 s_device; - uint8 l_device; - uint8 bg_overlay; - uint8 cd_leds; - int16 screen_w; - float bgm_volume; - float sfx_volume; - char lastdir[FILETYPE_MAX][TYPE_RECENT][MAXPATHLEN]; -} t_config; - -/* Global data */ -t_config config; - - -extern void config_save(void); -extern void config_default(void); - - -#endif /* _CONFIG_H_ */ - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/fileio.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/fileio.c deleted file mode 100644 index 4d97eb05a6..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/fileio.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * fileio.c - * - * Load a normal file, or ZIP/GZ archive into ROM buffer. - * Returns loaded ROM size (zero if an error occured). - * - * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "file_load.h" -#include "gui.h" - -/* - * Zip file header definition - */ -typedef struct -{ - unsigned int zipid __attribute__ ((__packed__)); // 0x04034b50 - unsigned short zipversion __attribute__ ((__packed__)); - unsigned short zipflags __attribute__ ((__packed__)); - unsigned short compressionMethod __attribute__ ((__packed__)); - unsigned short lastmodtime __attribute__ ((__packed__)); - unsigned short lastmoddate __attribute__ ((__packed__)); - unsigned int crc32 __attribute__ ((__packed__)); - unsigned int compressedSize __attribute__ ((__packed__)); - unsigned int uncompressedSize __attribute__ ((__packed__)); - unsigned short filenameLength __attribute__ ((__packed__)); - unsigned short extraDataLength __attribute__ ((__packed__)); -} PKZIPHEADER; - - -/* - * Zip files are stored little endian - * Support functions for short and int types - */ -static inline u32 FLIP32 (u32 b) -{ - unsigned int c; - c = (b & 0xff000000) >> 24; - c |= (b & 0xff0000) >> 8; - c |= (b & 0xff00) << 8; - c |= (b & 0xff) << 24; - return c; -} - -static inline u16 FLIP16 (u16 b) -{ - u16 c; - c = (b & 0xff00) >> 8; - c |= (b & 0xff) << 8; - return c; -} - -int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension) -{ - int size = 0; - char in[CHUNKSIZE]; - char msg[64] = "Unable to open file"; - - /* Open file */ - FILE *fd = fopen(filename, "rb"); - - /* Master System & Game Gear BIOS are optional files */ - if (!strcmp(filename,MS_BIOS_US) || !strcmp(filename,MS_BIOS_EU) || !strcmp(filename,MS_BIOS_JP) || !strcmp(filename,GG_BIOS)) - { - /* disable all messages */ - SILENT = 1; - } - - /* Mega CD BIOS are required files */ - if (!strcmp(filename,CD_BIOS_US) || !strcmp(filename,CD_BIOS_EU) || !strcmp(filename,CD_BIOS_JP)) - { - sprintf(msg,"Unable to open %s", filename + 14); - } - - if (!fd) - { - GUI_WaitPrompt("Error", msg); - SILENT = 0; - return 0; - } - - /* Read first chunk */ - fread(in, CHUNKSIZE, 1, fd); - - /* Detect Zip file */ - if (memcmp(in, "PK", 2) == 0) - { - /* Inflate buffer */ - char out[CHUNKSIZE]; - - /* PKZip header pointer */ - PKZIPHEADER *pkzip = (PKZIPHEADER *) in; - - /* Retrieve uncompressed ROM size */ - size = FLIP32(pkzip->uncompressedSize); - - /* Check ROM size */ - if (size > maxsize) - { - fclose(fd); - GUI_WaitPrompt("Error","File is too large"); - SILENT = 0; - return 0; - } - - sprintf (msg, "Unzipping %d bytes ...", size); - GUI_MsgBoxUpdate("Information",msg); - - /* Initialize zip stream */ - z_stream zs; - memset (&zs, 0, sizeof (z_stream)); - zs.zalloc = Z_NULL; - zs.zfree = Z_NULL; - zs.opaque = Z_NULL; - zs.avail_in = 0; - zs.next_in = Z_NULL; - int res = inflateInit2(&zs, -MAX_WBITS); - - if (res != Z_OK) - { - fclose(fd); - GUI_WaitPrompt("Error","Unable to unzip file"); - SILENT = 0; - return 0; - } - - /* Compressed filename offset */ - int offset = sizeof (PKZIPHEADER) + FLIP16(pkzip->filenameLength); - - if (extension) - { - memcpy(extension, &in[offset - 3], 3); - extension[3] = 0; - } - - - /* Initial Zip buffer offset */ - offset += FLIP16(pkzip->extraDataLength); - zs.next_in = (Bytef *)&in[offset]; - - /* Initial Zip remaining chunk size */ - zs.avail_in = CHUNKSIZE - offset; - - /* Start unzipping file */ - do - { - /* Inflate data until output buffer is empty */ - do - { - zs.avail_out = CHUNKSIZE; - zs.next_out = (Bytef *) out; - res = inflate(&zs, Z_NO_FLUSH); - - if (res == Z_MEM_ERROR) - { - inflateEnd(&zs); - fclose(fd); - GUI_WaitPrompt("Error","Unable to unzip file"); - SILENT = 0; - return 0; - } - - offset = CHUNKSIZE - zs.avail_out; - if (offset) - { - memcpy(buffer, out, offset); - buffer += offset; - } - } - while (zs.avail_out == 0); - - /* Read next chunk of zipped data */ - fread(in, CHUNKSIZE, 1, fd); - zs.next_in = (Bytef *)&in[0]; - zs.avail_in = CHUNKSIZE; - } - while (res != Z_STREAM_END); - inflateEnd (&zs); - } - else - { - /* Get file size */ - fseek(fd, 0, SEEK_END); - size = ftell(fd); - fseek(fd, 0, SEEK_SET); - - /* size limit */ - if(size > maxsize) - { - fclose(fd); - GUI_WaitPrompt("Error","File is too large"); - SILENT = 0; - return 0; - } - - sprintf((char *)msg,"Loading %d bytes ...", size); - GUI_MsgBoxUpdate("Information", (char *)msg); - - /* filename extension */ - if (extension) - { - memcpy(extension, &filename[strlen(filename) - 3], 3); - extension[3] = 0; - } - - /* Read into buffer */ - int left = size; - while (left > CHUNKSIZE) - { - fread(buffer, CHUNKSIZE, 1, fd); - buffer += CHUNKSIZE; - left -= CHUNKSIZE; - } - - /* Read remaining bytes */ - fread(buffer, left, 1, fd); - } - - /* Close file */ - fclose(fd); - - /* Return loaded ROM size */ - SILENT = 0; - return size; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/fileio.h deleted file mode 100644 index 4e1c6c6050..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/fileio/fileio.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * fileio.c - * - * Load a normal file, or ZIP/GZ archive into ROM buffer. - * Returns loaded ROM size (zero if an error occured). - * - * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _FILEIO_H_ -#define _FILEIO_H_ - -/* Function prototypes */ -int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension); - -#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_audio.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_audio.c deleted file mode 100644 index dc3a7a0165..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_audio.c +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************** - * gx_audio.c - * - * Genesis Plus GX audio support - * - * Copyright Eke-Eke (2007-2013), based on original work from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" - -/* Length is dimensionned for at least one frame of emulation */ -#define SOUND_BUFFER_LEN 4096 - -/* Number of sound buffers */ -#define SOUND_BUFFER_NUM 3 - -/* audio DMA status */ -u32 audioStarted; - -/* DMA soundbuffers (required to be 32-bytes aligned) */ -static u8 soundbuffer[SOUND_BUFFER_NUM][SOUND_BUFFER_LEN] ATTRIBUTE_ALIGN(32); - -/* Current work soundbuffer */ -static u8 mixbuffer; - -/* Background music */ -static u8 *Bg_music_ogg = NULL; -static u32 Bg_music_ogg_size = 0; - -/* Frame Sync */ -static u8 audio_sync; - -/***************************************************************************************/ -/* Audio engine */ -/***************************************************************************************/ - -/* Audio DMA callback */ -static void ai_callback(void) -{ -#ifdef LOG_TIMING - u64 current = gettime(); - if (prevtime) - { - delta_time[frame_cnt] = diff_nsec(prevtime, current); - frame_cnt = (frame_cnt + 1) % LOGSIZE; - } - prevtime = current; -#endif - - audio_sync = 0; -} - -/* AUDIO engine initialization */ -void gx_audio_Init(void) -{ - /* Initialize AUDIO processing library (ASNDLIB) */ - /* AUDIO & DSP hardware are initialized */ - /* Default samplerate is set to 48kHz */ - ASND_Init(); - - /* Load background music from FAT device */ - char fname[MAXPATHLEN]; - sprintf(fname,"%s/Bg_music.ogg",DEFAULT_PATH); - FILE *f = fopen(fname,"rb"); - if (f) - { - struct stat filestat; - stat(fname, &filestat); - Bg_music_ogg_size = filestat.st_size; - Bg_music_ogg = memalign(32,Bg_music_ogg_size); - if (Bg_music_ogg) - { - fread(Bg_music_ogg,1,Bg_music_ogg_size,f); - } - fclose(f); - } -} - -/* AUDIO engine shutdown */ -void gx_audio_Shutdown(void) -{ - PauseOgg(1); - StopOgg(); - ASND_Pause(1); - ASND_End(); - if (Bg_music_ogg) - { - free(Bg_music_ogg); - } -} - -/*** - gx_audio_Update - - This function retrieves samples for the frame then set the next DMA parameters - Parameters will be taken in account only when current DMA operation is over - ***/ -int gx_audio_Update(void) -{ - if (!audio_sync) - { - /* Current available soundbuffer */ - s16 *sb = (s16 *)(soundbuffer[mixbuffer]); - - /* Retrieve audio samples (size must be multiple of 32 bytes) */ - int size = audio_update(sb) * 4; - - #ifdef LOG_TIMING - if (prevtime && (frame_cnt < LOGSIZE - 1)) - { - delta_samp[frame_cnt + 1] = size; - } - else - { - delta_samp[0] = size; - } - #endif - - /* Update DMA settings */ - DCFlushRange((void *)sb, size); - AUDIO_InitDMA((u32) sb, size); - mixbuffer = (mixbuffer + 1) % SOUND_BUFFER_NUM; - audio_sync = 1; - - /* Start Audio DMA */ - /* this is called once to kick-off DMA from external memory to audio interface */ - /* DMA operation is automatically restarted when all samples have been sent. */ - /* If DMA settings are not updated at that time, previous sound buffer will be used. */ - /* Therefore we need to make sure frame emulation is completed before current DMA is */ - /* completed, by synchronizing frame emulation with DMA start and also by syncing it */ - /* with Video Interrupt and outputing a suitable number of samples per frame. */ - if (!audioStarted) - { - /* restart audio DMA */ - AUDIO_StopDMA(); - AUDIO_StartDMA(); - audioStarted = 1; - } - - return SYNC_AUDIO; - } - - return NO_SYNC; -} - -/*** - gx_audio_Start - - This function restart the audio engine - This is called when coming back from Main Menu - ***/ -void gx_audio_Start(void) -{ - /* shutdown background music */ - PauseOgg(1); - StopOgg(); - - /* shutdown menu audio processing */ - ASND_Pause(1); - ASND_End(); - AUDIO_StopDMA(); - AUDIO_RegisterDMACallback(NULL); - DSP_Halt(); - - /* DMA Interrupt callback */ - AUDIO_RegisterDMACallback(ai_callback); - - /* reset emulation audio processing */ - memset(soundbuffer, 0, 3 * SOUND_BUFFER_LEN); - audioStarted = 0; - mixbuffer = 0; - audio_sync = 0; -} - -/*** - gx_audio_Stop - - This function stops current Audio DMA process - This is called when going back to Main Menu - DMA need to be restarted when going back to the game (see above) - ***/ -void gx_audio_Stop(void) -{ - /* restart menu audio processing */ - DSP_Unhalt(); - ASND_Init(); - ASND_Pause(0); - - /* play background music */ - if (Bg_music_ogg && !Shutdown) - { - PauseOgg(0); - PlayOgg((char *)Bg_music_ogg, Bg_music_ogg_size, 0, OGG_INFINITE_TIME); - SetVolumeOgg(((int)config.bgm_volume * 255) / 100); - } -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_input.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_input.c deleted file mode 100644 index c382192de7..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/gx_input.c +++ /dev/null @@ -1,1625 +0,0 @@ -/**************************************************************************** - * gx_input.c - * - * Genesis Plus GX input support - * - * Copyright Eke-Eke (2007-2012) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "font.h" -#include "gui.h" -#include "cheats.h" - -#ifdef HW_RVL -#include -#endif - -/* Analog sticks sensitivity */ -#define ANALOG_SENSITIVITY 30 - -/* Delay before held keys triggering */ -/* higher is the value, less responsive is the key update */ -#define HELD_DELAY 30 - -/* Direction & selection update speed when a key is being held */ -/* lower is the value, faster is the key update */ -#define HELD_SPEED 4 - - -/* Configurable keys */ -#define KEY_BUTTONA 0 -#define KEY_BUTTONB 1 -#define KEY_BUTTONC 2 -#define KEY_START 3 -#define KEY_BUTTONX 4 -#define KEY_BUTTONY 5 -#define KEY_BUTTONZ 6 -#define KEY_MODE 7 -#define KEY_MENU 8 - -#ifdef HW_RVL - -#define PAD_UP 0 -#define PAD_DOWN 1 -#define PAD_LEFT 2 -#define PAD_RIGHT 3 - -/* default directions mapping */ -static u32 wpad_dirmap[3][4] = -{ - {WPAD_BUTTON_RIGHT, WPAD_BUTTON_LEFT, WPAD_BUTTON_UP, WPAD_BUTTON_DOWN}, /* WIIMOTE */ - {WPAD_BUTTON_UP, WPAD_BUTTON_DOWN, WPAD_BUTTON_LEFT, WPAD_BUTTON_RIGHT}, /* WIIMOTE + NUNCHUK */ - {WPAD_CLASSIC_BUTTON_UP, WPAD_CLASSIC_BUTTON_DOWN, WPAD_CLASSIC_BUTTON_LEFT, WPAD_CLASSIC_BUTTON_RIGHT} /* CLASSIC */ -}; - -#define WPAD_BUTTONS_HELD (WPAD_BUTTON_UP | WPAD_BUTTON_DOWN | WPAD_BUTTON_LEFT | WPAD_BUTTON_RIGHT | \ - WPAD_BUTTON_MINUS | WPAD_BUTTON_PLUS | WPAD_BUTTON_A | WPAD_BUTTON_2 | \ - WPAD_CLASSIC_BUTTON_UP | WPAD_CLASSIC_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_RIGHT | \ - WPAD_CLASSIC_BUTTON_FULL_L | WPAD_CLASSIC_BUTTON_FULL_R | WPAD_CLASSIC_BUTTON_A) - -#endif - -#define PAD_BUTTONS_HELD (PAD_BUTTON_UP | PAD_BUTTON_DOWN | PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | \ - PAD_TRIGGER_L | PAD_TRIGGER_R | PAD_BUTTON_A) - -static char keyname[MAX_KEYS][16]; - -static int held_cnt = 0; -static int inputs_disabled = 0; - -/***************************************************************************************/ -/* Gamecube PAD support */ -/***************************************************************************************/ -static void pad_config(int chan, int first_key, int last_key) -{ - u16 p = 0; - char msg[64]; - - /* disable background PAD scanning */ - inputs_disabled = 1; - - /* Check if PAD is connected */ - VIDEO_WaitVSync(); - if (!(PAD_ScanPads() & (1< ANALOG_SENSITIVITY) - { - ConfigRequested = 1; - return; - } - - /* D-PAD */ - if ((p & PAD_BUTTON_UP) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; - else if ((p & PAD_BUTTON_DOWN) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; - if ((p & PAD_BUTTON_LEFT) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; - else if ((p & PAD_BUTTON_RIGHT) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; - - /* Buttons */ - if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; - if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; - if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; - if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_XE_A1P: - { - /* Left Stick analog position [0-255] */ - input.analog[i][0] = (x + 128); - input.analog[i][1] = y ? (127 - y) : (128 - y); - - /* Right Stick analog position [0-255] */ - x = PAD_SubStickX(chan); - y = PAD_SubStickY(chan); - - /* Emulated stick is unidirectional but can be rotated */ - if (abs(x) > abs(y)) - { - input.analog[i+1][0] = (x + 128); - } - else - { - input.analog[i+1][0] = (y + 128); - } - - /* Buttons */ - if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_XE_A; - if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_XE_B; - if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_XE_C; - if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_XE_START; - if (p & pad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_XE_D; - if (p & pad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_XE_E1; - if (p & pad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_XE_E2; - if (p & pad_keymap[KEY_MODE]) input.pad[i] |= INPUT_XE_SELECT; - - break; - } - - case DEVICE_SPORTSPAD: - { - /* Y analog position [0-255] */ - input.analog[i][1] = y ? (127 - y) : (128 - y); - - /* default inputs are checked below */ - } - - case DEVICE_PADDLE: - { - /* Default menu key (right analog stick) */ - if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) - { - ConfigRequested = 1; - return; - } - - /* X analog position [0-255] */ - input.analog[i][0] = (x + 128); - - /* Buttons */ - if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; - if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; - if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_PAD2B: - { - /* Default menu key (right analog stick) */ - if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) - { - ConfigRequested = 1; - return; - } - - /* D-PAD */ - if ((p & PAD_BUTTON_UP) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; - else if ((p & PAD_BUTTON_DOWN) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; - if ((p & PAD_BUTTON_LEFT) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; - else if ((p & PAD_BUTTON_RIGHT) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; - - /* Buttons */ - if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; - if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; - if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_LIGHTGUN: - { - /* Default menu key (right analog stick) */ - if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) - { - ConfigRequested = 1; - return; - } - - /* Gun screen position (x,y) */ - input.analog[i][0] += x / ANALOG_SENSITIVITY; - input.analog[i][1] -= y / ANALOG_SENSITIVITY; - - /* Limits */ - if (input.analog[i][0] < 0) input.analog[i][0] = 0; - else if (input.analog[i][0] > bitmap.viewport.w) input.analog[i][0] = bitmap.viewport.w; - if (input.analog[i][1] < 0) input.analog[i][1] = 0; - else if (input.analog[i][1] > bitmap.viewport.h) input.analog[i][1] = bitmap.viewport.h; - - /* Buttons */ - if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; - if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; - if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; - if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_MOUSE: - { - /* Default menu key (right analog stick) */ - if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) - { - ConfigRequested = 1; - return; - } - - /* Mouse relative movement (-255,255) */ - input.analog[i][0] = (x / ANALOG_SENSITIVITY) * 2; - input.analog[i][1] = (y / ANALOG_SENSITIVITY) * 2; - - /* Y-Axis inversion */ - if (config.invert_mouse) - { - input.analog[i][1] = -input.analog[i][1]; - } - - /* Buttons */ - if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_MOUSE_CENTER; - if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_MOUSE_LEFT; - if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_MOUSE_RIGHT; - if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_PICO: - { - /* Default menu key (right analog stick) */ - if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) - { - ConfigRequested = 1; - return; - } - - /* D-PAD */ - if (p & PAD_BUTTON_UP) input.pad[0] |= INPUT_UP; - else if (p & PAD_BUTTON_DOWN) input.pad[0] |= INPUT_DOWN; - if (p & PAD_BUTTON_LEFT) input.pad[0] |= INPUT_LEFT; - else if (p & PAD_BUTTON_RIGHT) input.pad[0] |= INPUT_RIGHT; - - /* PEN screen position (x,y) */ - input.analog[0][0] += x / ANALOG_SENSITIVITY; - input.analog[0][1] -= y / ANALOG_SENSITIVITY; - - /* Limits */ - if (input.analog[0][0] < 0x17c) input.analog[0][0] = 0x17c; - else if (input.analog[0][0] > 0x3c) input.analog[0][0] = 0x3c; - if (input.analog[0][1] < 0x1fc) input.analog[0][1] = 0x1fc; - else if (input.analog[0][1] > 0x3f3) input.analog[0][1] = 0x3f3; - - /* PEN button */ - if (p & pad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_PICO_RED; - - /* RED button */ - if (p & pad_keymap[KEY_BUTTONB]) input.pad[0] |= INPUT_PICO_PEN; - - /* PAGE index increment */ - if (p & pad_keymap[KEY_BUTTONC]) pico_current = (pico_current + 1) & 7; - - break; - } - - case DEVICE_TEREBI: - { - /* Default menu key (right analog stick) */ - if (PAD_SubStickX(chan) > ANALOG_SENSITIVITY) - { - ConfigRequested = 1; - return; - } - - /* PEN screen position (x,y) */ - input.analog[0][0] += x / ANALOG_SENSITIVITY; - input.analog[0][1] -= y / ANALOG_SENSITIVITY; - - /* Limits */ - if (input.analog[0][0] < 0) input.analog[0][0] = 0; - else if (input.analog[0][0] > 250) input.analog[0][0] = 250; - if (input.analog[0][1] < 0) input.analog[0][1] = 0; - else if (input.analog[0][1] > 250) input.analog[0][1] = 250; - - /* PEN button */ - if (p & pad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_BUTTON1; - - break; - } - - case DEVICE_ACTIVATOR: - { - /* Left & right analog stick angle [0-360] */ - float ang; - - /* Left stick values */ - if ((abs(x) > ANALOG_SENSITIVITY) || (abs(y) > ANALOG_SENSITIVITY)) - { - /* Calculate angle (in degree) */ - ang = 90.0 - (atan((float)y / (float)x) * 180.0 / M_PI); - if (x < 0) ang += 180.0; - - /* 8 bottom sensors = 8 areas */ - if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2L; - else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3L; - else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4L; - else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5L; - else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6L; - else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7L; - else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8L; - else input.pad[i] |= INPUT_ACTIVATOR_1L; - } - - /* Right stick values */ - x = PAD_SubStickX(chan); - y = PAD_SubStickY(chan); - - if ((abs(x) > ANALOG_SENSITIVITY) || (abs(y) > ANALOG_SENSITIVITY)) - { - /* Calculate angle (in degree) */ - ang = 90.0 - (atan((float)y / (float)x) * 180.0 / M_PI); - if (x < 0) ang += 180.0; - - /* 8 top sensors = 8 areas */ - if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2U; - else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3U; - else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4U; - else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5U; - else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6U; - else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7U; - else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8U; - else input.pad[i] |= INPUT_ACTIVATOR_1U; - } - - break; - } - } -} - -/***************************************************************************************/ -/* Wii WPAD support */ -/***************************************************************************************/ -#ifdef HW_RVL - -static int wpad_StickX(WPADData *data, u8 right) -{ - struct joystick_t* js = NULL; - - switch (data->exp.type) - { - case WPAD_EXP_NUNCHUK: - js = right ? NULL : &data->exp.nunchuk.js; - break; - - case WPAD_EXP_CLASSIC: - js = right ? &data->exp.classic.rjs : &data->exp.classic.ljs; - break; - - default: - break; - } - - if (js) - { - /* raw X value */ - int x = js->pos.x; - - /* value returned is sometime above calibrated limits */ - if (x > js->max.x) return 127; - if (x < js->min.x) return -128; - - /* adjust against center position */ - x -= js->center.x; - - /* return interpolated range [-128;127] */ - if (x > 0) - { - return (int)(127.0 * ((float)x / (float)(js->max.x - js->center.x))); - } - { - return (int)(128.0 * ((float)x / (float)(js->center.x - js->min.x))); - } - } - - return 0; -} - -static int wpad_StickY(WPADData *data, u8 right) -{ - struct joystick_t* js = NULL; - - switch (data->exp.type) - { - case WPAD_EXP_NUNCHUK: - js = right ? NULL : &data->exp.nunchuk.js; - break; - - case WPAD_EXP_CLASSIC: - js = right ? &data->exp.classic.rjs : &data->exp.classic.ljs; - break; - - default: - break; - } - - if (js) - { - /* raw Y value */ - int y = js->pos.y; - - /* value returned is sometime above calibrated limits */ - if (y > js->max.y) return 127; - if (y < js->min.y) return -128; - - /* adjust against center position */ - y -= js->center.y; - - /* return interpolated range [-128;127] */ - if (y > 0) - { - return (int)(127.0 * ((float)y / (float)(js->max.y - js->center.y))); - } - { - return (int)(128.0 * ((float)y / (float)(js->center.y - js->min.y))); - } - } - - return 0; -} - -static void wpad_config(u8 exp, int chan, int first_key, int last_key) -{ - char msg[64]; - u32 p = 255; - - /* Disable background PAD scanning */ - inputs_disabled = 1; - - /* Check if device is connected */ - WPAD_Probe(chan, &p); - if (((exp > WPAD_EXP_NONE) && (p != exp)) || (p == 255)) - { - /* device not detected */ - if (exp == WPAD_EXP_NONE) sprintf(msg, "WIIMOTE #%d is not connected !", chan+1); - if (exp == WPAD_EXP_NUNCHUK) sprintf(msg, "NUNCHUK #%d is not connected !", chan+1); - if (exp == WPAD_EXP_CLASSIC) sprintf(msg, "CLASSIC #%d is not connected !", chan+1); - GUI_WaitPrompt("Error",msg); - - /* re-enable background PAD scanning and exit */ - inputs_disabled = 0; - return; - } - - /* Configure each keys */ - do - { - /* ignore unused keys */ - if (strcmp(keyname[first_key], "N.A")) - { - /* remove any pending buttons */ - while (WPAD_ButtonsHeld(chan)) - { - VIDEO_WaitVSync(); - WPAD_ScanPads(); - } - - /* configurable button */ - sprintf(msg,"Press key for %s\n(HOME to return)",keyname[first_key]); - GUI_MsgBoxUpdate(0,msg); - - /* wait for user input */ - p = 0; - while (!p) - { - VIDEO_WaitVSync(); - WPAD_ScanPads(); - p = WPAD_ButtonsDown(chan); - } - - /* detect pressed key */ - switch (exp) - { - /* Wiimote (TODO: add motion sensing !) */ - case WPAD_EXP_NONE: - { - if (p & WPAD_BUTTON_2) p = WPAD_BUTTON_2; - else if (p & WPAD_BUTTON_1) p = WPAD_BUTTON_1; - else if (p & WPAD_BUTTON_B) p = WPAD_BUTTON_B; - else if (p & WPAD_BUTTON_A) p = WPAD_BUTTON_A; - else if (p & WPAD_BUTTON_PLUS) p = WPAD_BUTTON_PLUS; - else if (p & WPAD_BUTTON_MINUS) p = WPAD_BUTTON_MINUS; - else first_key = MAX_KEYS; - break; - } - - /* Wiimote + Nunchuk (TODO: add motion sensing !) */ - case WPAD_EXP_NUNCHUK: - { - if (p & WPAD_BUTTON_2) p = WPAD_BUTTON_2; - else if (p & WPAD_BUTTON_1) p = WPAD_BUTTON_1; - else if (p & WPAD_BUTTON_B) p = WPAD_BUTTON_B; - else if (p & WPAD_BUTTON_A) p = WPAD_BUTTON_A; - else if (p & WPAD_BUTTON_PLUS) p = WPAD_BUTTON_PLUS; - else if (p & WPAD_BUTTON_MINUS) p= WPAD_BUTTON_MINUS; - else if (p & WPAD_NUNCHUK_BUTTON_Z) p = WPAD_NUNCHUK_BUTTON_Z; - else if (p & WPAD_NUNCHUK_BUTTON_C) p = WPAD_NUNCHUK_BUTTON_C; - else first_key = MAX_KEYS; - break; - } - - /* Classic Controller */ - case WPAD_EXP_CLASSIC: - { - if (p & WPAD_CLASSIC_BUTTON_X) p = WPAD_CLASSIC_BUTTON_X; - else if (p & WPAD_CLASSIC_BUTTON_A) p = WPAD_CLASSIC_BUTTON_A; - else if (p & WPAD_CLASSIC_BUTTON_Y) p = WPAD_CLASSIC_BUTTON_Y; - else if (p & WPAD_CLASSIC_BUTTON_B) p = WPAD_CLASSIC_BUTTON_B; - else if (p & WPAD_CLASSIC_BUTTON_ZL) p = WPAD_CLASSIC_BUTTON_ZL; - else if (p & WPAD_CLASSIC_BUTTON_ZR) p = WPAD_CLASSIC_BUTTON_ZR; - else if (p & WPAD_CLASSIC_BUTTON_PLUS) p = WPAD_CLASSIC_BUTTON_PLUS; - else if (p & WPAD_CLASSIC_BUTTON_MINUS) p = WPAD_CLASSIC_BUTTON_MINUS; - else if (p & WPAD_CLASSIC_BUTTON_FULL_L) p = WPAD_CLASSIC_BUTTON_FULL_L; - else if (p & WPAD_CLASSIC_BUTTON_FULL_R) p = WPAD_CLASSIC_BUTTON_FULL_R; - else first_key = MAX_KEYS; - break; - } - - default: - { - first_key = MAX_KEYS; - break; - } - } - - /* update key mapping */ - if (first_key < MAX_KEYS) - { - config.wpad_keymap[exp + (chan * 3)][first_key] = p; - } - } - } - while (first_key++ < last_key); - - /* remove any pending buttons */ - while (WPAD_ButtonsHeld(chan)) - { - VIDEO_WaitVSync(); - WPAD_ScanPads(); - } - - /* re-enable background PAD scanning and exit */ - inputs_disabled = 0; -} - -static void wpad_update(s8 chan, u8 i, u32 exp) -{ - /* WPAD data */ - WPADData *data = WPAD_Data(chan); - - /* WPAD status */ - u32 p = data->btns_h; - - /* Analog sticks */ - s8 x = 0; - s8 y = 0; - - if (exp != WPAD_EXP_NONE) - { - x = wpad_StickX(data,0); - y = wpad_StickY(data,0); - } - - /* Retrieve current key mapping */ - u32 *wpad_keymap = config.wpad_keymap[exp + (chan * 3)]; - - /* Emulated device */ - switch (input.dev[i]) - { - case DEVICE_PAD6B: - { - /* Extra buttons */ - if (p & wpad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_X; - if (p & wpad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_Y; - if (p & wpad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_Z; - if (p & wpad_keymap[KEY_MODE]) input.pad[i] |= INPUT_MODE; - } - - case DEVICE_PAD3B: - { - /* D- PAD */ - if ((p & wpad_dirmap[exp][PAD_UP]) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; - else if ((p & wpad_dirmap[exp][PAD_DOWN]) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; - if ((p & wpad_dirmap[exp][PAD_LEFT]) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; - else if ((p & wpad_dirmap[exp][PAD_RIGHT]) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; - - /* Buttons */ - if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; - if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; - if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_XE_A1P: - { - /* Left Stick analog position [0-255] */ - input.analog[i][0] = (x + 128); - input.analog[i][1] = y ? (127 - y) : (128 - y); - - /* Right Stick analog position [0-255] */ - if (exp == WPAD_EXP_CLASSIC) - { - /* Classic Controller right stick */ - x = wpad_StickX(data,1); - y = wpad_StickY(data,1); - - /* Emulated stick is unidirectional but can be rotated */ - if (abs(x) > abs(y)) - { - input.analog[i+1][0] = (x + 128); - } - else - { - input.analog[i+1][0] = (y + 128); - } - } - else - { - /* Wiimote D-PAD */ - if ((p & wpad_dirmap[exp][PAD_DOWN]) || (p & wpad_dirmap[exp][PAD_LEFT])) input.analog[i+1][0]-=2; - else if ((p & wpad_dirmap[exp][PAD_UP]) || (p & wpad_dirmap[exp][PAD_RIGHT])) input.analog[i+1][0]+=2; - - /* Limits */ - if (input.analog[i+1][0] < 0) input.analog[i+1][0] = 0; - else if (input.analog[i+1][0] > 255) input.analog[i+1][0] = 255; - } - - /* Buttons */ - if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_XE_A; - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_XE_B; - if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_XE_C; - if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_XE_START; - if (p & wpad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_XE_D; - if (p & wpad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_XE_E1; - if (p & wpad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_XE_E2; - if (p & wpad_keymap[KEY_MODE]) input.pad[i] |= INPUT_XE_SELECT; - - break; - } - - case DEVICE_SPORTSPAD: - { - /* X analog position [0-255] */ - if (p & wpad_dirmap[exp][PAD_LEFT]) input.analog[i][0]-=2; - else if (p & wpad_dirmap[exp][PAD_RIGHT]) input.analog[i][0]+=2; - else input.analog[i][0] = (x + 128); - - /* Y analog position [0-255] */ - if (p & wpad_dirmap[exp][PAD_UP]) input.analog[i][1]-=2; - else if (p & wpad_dirmap[exp][PAD_DOWN]) input.analog[i][1]+=2; - else input.analog[i][1] = y ? (127 - y) : (128 - y); - - /* Limits */ - if (input.analog[i][0] < 0) input.analog[i][0] = 0; - else if (input.analog[i][0] > 255) input.analog[i][0] = 255; - if (input.analog[i][1] < 0) input.analog[i][1] = 0; - else if (input.analog[i][1] > 255) input.analog[i][1] = 255; - - /* Buttons */ - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; - if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; - if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_PADDLE: - { - /* X analog position [0-255] */ - if (exp == WPAD_EXP_NONE) - { - /* Wiimote D-PAD */ - if (p & wpad_dirmap[exp][PAD_LEFT]) input.analog[i][0]-=2; - else if (p & wpad_dirmap[exp][PAD_RIGHT]) input.analog[i][0]+=2; - - /* Limits */ - if (input.analog[i][0] < 0) input.analog[i][0] = 0; - else if (input.analog[i][0] > 255) input.analog[i][0] = 255; - } - else - { - /* Left analog stick */ - input.analog[i][0] = (x + 128); - } - - /* Buttons */ - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; - if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_PAD2B: - { - /* D-PAD */ - if ((p & wpad_dirmap[exp][PAD_UP]) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; - else if ((p & wpad_dirmap[exp][PAD_DOWN]) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; - if ((p & wpad_dirmap[exp][PAD_LEFT]) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; - else if ((p & wpad_dirmap[exp][PAD_RIGHT]) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; - - /* Buttons */ - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_BUTTON1; - if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_BUTTON2; - if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_LIGHTGUN: - { - /* Gun screen position (x,y) */ - if (exp != WPAD_EXP_CLASSIC) - { - /* Wiimote IR */ - struct ir_t ir; - WPAD_IR(chan, &ir); - - if (ir.valid) - { - /* screen position */ - input.analog[i][0] = (ir.x * bitmap.viewport.w) / 640; - input.analog[i][1] = (ir.y * bitmap.viewport.h) / 480; - } - else - { - /* lightgun should point outside screen area */ - input.analog[i][0] = 512; - input.analog[i][1] = 512; - } - } - else - { - /* Classic Controller analog stick */ - input.analog[i][0] += x / ANALOG_SENSITIVITY; - input.analog[i][1] -= y / ANALOG_SENSITIVITY; - - /* Limits */ - if (input.analog[i][0] < 0) input.analog[i][0] = 0; - else if (input.analog[i][0] > bitmap.viewport.w) input.analog[i][0] = bitmap.viewport.w; - if (input.analog[i][1] < 0) input.analog[i][1] = 0; - else if (input.analog[i][1] > bitmap.viewport.h) input.analog[i][1] = bitmap.viewport.h; - } - - /* Buttons */ - if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; - if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; - if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_MOUSE: - { - /* Mouse relative movement (-255,255) */ - input.analog[i][0] = (x / ANALOG_SENSITIVITY) * 2; - input.analog[i][1] = (y / ANALOG_SENSITIVITY) * 2; - - /* Wiimote IR (buggy) */ - if (exp != WPAD_EXP_CLASSIC) - { - struct ir_t ir; - WPAD_IR(chan, &ir); - - /* Only if Wiimote is pointed to screen */ - if(ir.smooth_valid) - { - input.analog[i][0] = (int)((ir.sx - 512) / 2 / ANALOG_SENSITIVITY); - input.analog[i][1] = (int)((ir.sy - 384) * 2 / 3 / ANALOG_SENSITIVITY); - } - } - - /* USB mouse support */ - if (MOUSE_IsConnected()) - { - /* read mouse data */ - mouse_event event; - MOUSE_GetEvent(&event); - MOUSE_FlushEvents(); - - /* mouse position (-127;+127) -> (-255;+255) */ - input.analog[i][0] = event.rx * 2; - input.analog[i][1] = event.ry * 2; - - /* mouse buttons */ - if (event.button & 1) input.pad[i] |= INPUT_MOUSE_RIGHT; - if (event.button & 2) input.pad[i] |= INPUT_MOUSE_CENTER; - if (event.button & 4) input.pad[i] |= INPUT_MOUSE_LEFT; - } - - /* Y-Axis inversion */ - if (config.invert_mouse) - { - input.analog[i][1] = -input.analog[i][1]; - } - - /* Buttons */ - if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_MOUSE_CENTER; - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_MOUSE_LEFT; - if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_MOUSE_RIGHT; - if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; - - break; - } - - case DEVICE_PICO: - { - /* D-PAD */ - if (p & PAD_BUTTON_UP) input.pad[i] |= INPUT_UP; - else if (p & PAD_BUTTON_DOWN) input.pad[i] |= INPUT_DOWN; - if (p & PAD_BUTTON_LEFT) input.pad[i] |= INPUT_LEFT; - else if (p & PAD_BUTTON_RIGHT) input.pad[i] |= INPUT_RIGHT; - - /* PEN screen position (x,y) */ - input.analog[0][0] += x / ANALOG_SENSITIVITY; - input.analog[0][1] -= y / ANALOG_SENSITIVITY; - - /* Limits */ - if (input.analog[0][0] < 0x17c) input.analog[0][0] = 0x17c; - else if (input.analog[0][0] > 0x3c) input.analog[0][0] = 0x3c; - if (input.analog[0][1] < 0x1fc) input.analog[0][1] = 0x1fc; - else if (input.analog[0][1] > 0x3f3) input.analog[0][1] = 0x3f3; - - /* Wiimote IR */ - if (exp != WPAD_EXP_CLASSIC) - { - struct ir_t ir; - WPAD_IR(chan, &ir); - if (ir.valid) - { - input.analog[0][0] = 0x3c + (ir.x * (0x17c - 0x3c + 1)) / 640; - input.analog[0][1] = 0x1fc + (ir.y * (0x3f3 - 0x1fc + 1)) / 480; - } - } - - /* PEN button */ - if (p & wpad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_PICO_PEN; - - /* RED button */ - if (p & wpad_keymap[KEY_BUTTONB]) input.pad[0] |= INPUT_PICO_RED; - - /* PAGE index increment */ - if (p & wpad_keymap[KEY_BUTTONC]) pico_current = (pico_current + 1) & 7; - - break; - } - - case DEVICE_TEREBI: - { - /* PEN screen position (x,y) */ - input.analog[0][0] += x / ANALOG_SENSITIVITY; - input.analog[0][1] -= y / ANALOG_SENSITIVITY; - - /* Limits */ - if (input.analog[0][0] < 0) input.analog[0][0] = 0; - else if (input.analog[0][0] > 250) input.analog[0][0] = 250; - if (input.analog[0][1] < 0) input.analog[0][1] = 0; - else if (input.analog[0][1] > 250) input.analog[0][1] = 250; - - /* Wiimote IR */ - if (exp != WPAD_EXP_CLASSIC) - { - struct ir_t ir; - WPAD_IR(chan, &ir); - if (ir.valid) - { - input.analog[0][0] = (ir.x * 250) / 640; - input.analog[0][1] = (ir.y * 250) / 480; - } - } - - /* PEN button */ - if (p & wpad_keymap[KEY_BUTTONA]) input.pad[0] |= INPUT_BUTTON1; - - break; - } - - case DEVICE_ACTIVATOR: - { - /* Classic Controller only */ - if (exp == WPAD_EXP_CLASSIC) - { - /* Left stick */ - float mag = data->exp.classic.ljs.mag; - float ang = data->exp.classic.ljs.ang; - - if (mag > 0.5) - { - /* 8 bottom sensors = 8 areas */ - if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2L; - else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3L; - else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4L; - else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5L; - else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6L; - else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7L; - else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8L; - else input.pad[i] |= INPUT_ACTIVATOR_1L; - } - - /* Right stick */ - mag = data->exp.classic.rjs.mag; - ang = data->exp.classic.rjs.ang; - - if (mag > 0.5) - { - /* 8 top sensors = 8 areas */ - if ((ang > 22.5) && (ang <= 67.5)) input.pad[i] |= INPUT_ACTIVATOR_2U; - else if ((ang > 67.5) && (ang <= 112.5)) input.pad[i] |= INPUT_ACTIVATOR_3U; - else if ((ang > 112.5) && (ang <= 157.5)) input.pad[i] |= INPUT_ACTIVATOR_4U; - else if ((ang > 157.5) && (ang <= 202.5)) input.pad[i] |= INPUT_ACTIVATOR_5U; - else if ((ang > 202.5) && (ang <= 247.5)) input.pad[i] |= INPUT_ACTIVATOR_6U; - else if ((ang > 247.5) && (ang <= 292.5)) input.pad[i] |= INPUT_ACTIVATOR_7U; - else if ((ang > 292.5) && (ang <= 337.5)) input.pad[i] |= INPUT_ACTIVATOR_8U; - else input.pad[i] |= INPUT_ACTIVATOR_1U; - } - } - - break; - } - } -} -#endif - - -/***************************************************************************************/ -/* GX Input interface */ -/***************************************************************************************/ -void gx_input_Init(void) -{ - PAD_Init(); -#ifdef HW_RVL - WPAD_Init(); - WPAD_SetIdleTimeout(60); - WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); - WPAD_SetVRes(WPAD_CHAN_ALL,640,480); -#endif -} - -int gx_input_FindDevices(void) -{ - int i; -#ifdef HW_RVL - u32 wpad; -#endif - int found = 0; - int player = 0; - - VIDEO_WaitVSync(); - u32 pad = PAD_ScanPads(); - - for (i=0; i 0) - { - wpad_update(config.input[player].port, i, config.input[player].device - 1); - } -#endif - - /* increment player index */ - player ++; - } - } - - /* Update RAM patches */ - RAMCheatUpdate(); -} - -/* Menu inputs update function */ -void gx_input_UpdateMenu(void) -{ - /* Check if inputs update are disabled */ - if (inputs_disabled) return; - - /* PAD status update */ - PAD_ScanPads(); - - /* PAD pressed keys */ - s16 pp = PAD_ButtonsDown(0); - - /* PAD held keys (direction/selection) */ - s16 hp = PAD_ButtonsHeld(0) & PAD_BUTTONS_HELD; - - /* PAD analog sticks (handled as PAD held direction keys) */ - s8 x = PAD_StickX(0); - s8 y = PAD_StickY(0); - if (x > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_RIGHT; - else if (x < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_LEFT; - else if (y > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_UP; - else if (y < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_DOWN; - -#ifdef HW_RVL - /* WPAD status update */ - WPAD_ScanPads(); - WPADData *data = WPAD_Data(0); - - /* WPAD pressed keys */ - u32 pw = data->btns_d; - - /* WPAD held keys (direction/selection) */ - u32 hw = data->btns_h & WPAD_BUTTONS_HELD; - - /* WPAD analog sticks (handled as PAD held direction keys) */ - x = wpad_StickX(data, 0); - y = wpad_StickY(data, 0); - if (x > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_RIGHT; - else if (x < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_LEFT; - else if (y > ANALOG_SENSITIVITY) hp |= PAD_BUTTON_UP; - else if (y < -ANALOG_SENSITIVITY) hp |= PAD_BUTTON_DOWN; -#endif - - /* check if any direction/selection key is being held or just being pressed/released */ -#ifdef HW_RVL - if (pp||pw) held_cnt = 0; - else if (hp||hw) held_cnt++; - else held_cnt = 0; -#else - if (pp) held_cnt = 0; - else if (hp) held_cnt++; - else held_cnt = 0; -#endif - - /* initial delay (prevents triggering to start immediately) */ - if (held_cnt > HELD_DELAY) - { - /* key triggering */ - pp |= hp; -#ifdef HW_RVL - pw |= hw; -#endif - - /* delay until next triggering (adjusts direction/selection update speed) */ - held_cnt -= HELD_SPEED; - } - -#ifdef HW_RVL - /* Wiimote direction keys */ - WPAD_IR(0, &m_input.ir); - if (m_input.ir.valid) - { - /* Wiimote is handled vertically */ - if (pw & WPAD_BUTTON_UP) pp |= PAD_BUTTON_UP; - else if (pw & WPAD_BUTTON_DOWN) pp |= PAD_BUTTON_DOWN; - else if (pw & WPAD_BUTTON_LEFT) pp |= PAD_BUTTON_LEFT; - else if (pw & WPAD_BUTTON_RIGHT) pp |= PAD_BUTTON_RIGHT; - } - else - { - /* Wiimote is handled horizontally */ - if (pw & WPAD_BUTTON_UP) pp |= PAD_BUTTON_LEFT; - else if (pw & WPAD_BUTTON_DOWN) pp |= PAD_BUTTON_RIGHT; - else if (pw & WPAD_BUTTON_LEFT) pp |= PAD_BUTTON_DOWN; - else if (pw & WPAD_BUTTON_RIGHT) pp |= PAD_BUTTON_UP; - } - - /* Classic Controller direction keys */ - if (pw & WPAD_CLASSIC_BUTTON_UP) pp |= PAD_BUTTON_UP; - else if (pw & WPAD_CLASSIC_BUTTON_DOWN) pp |= PAD_BUTTON_DOWN; - else if (pw & WPAD_CLASSIC_BUTTON_LEFT) pp |= PAD_BUTTON_LEFT; - else if (pw & WPAD_CLASSIC_BUTTON_RIGHT) pp |= PAD_BUTTON_RIGHT; - - /* WPAD buttons */ - if (pw & WPAD_BUTTON_A) pp |= PAD_BUTTON_A; - if (pw & WPAD_BUTTON_B) pp |= PAD_BUTTON_B; - if (pw & WPAD_BUTTON_2) pp |= PAD_BUTTON_A; - if (pw & WPAD_BUTTON_1) pp |= PAD_BUTTON_B; - if (pw & WPAD_BUTTON_HOME) pp |= PAD_TRIGGER_Z; - if (pw & WPAD_BUTTON_PLUS) pp |= PAD_TRIGGER_L; - if (pw & WPAD_BUTTON_MINUS) pp |= PAD_TRIGGER_R; - if (pw & WPAD_CLASSIC_BUTTON_FULL_L) pp |= PAD_TRIGGER_L; - if (pw & WPAD_CLASSIC_BUTTON_FULL_R) pp |= PAD_TRIGGER_R; - if (pw & WPAD_CLASSIC_BUTTON_A) pp |= PAD_BUTTON_A; - if (pw & WPAD_CLASSIC_BUTTON_B) pp |= PAD_BUTTON_B; - if (pw & WPAD_CLASSIC_BUTTON_HOME) pp |= PAD_TRIGGER_Z; -#endif - - /* Update menu inputs */ - m_input.keys = pp; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/main.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/main.c deleted file mode 100644 index 4b3856bb54..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/main.c +++ /dev/null @@ -1,623 +0,0 @@ -/**************************************************************************** - * main.c - * - * Genesis Plus GX - * - * Copyright Eke-Eke (2007-2012), based on original work from Softdev (2006) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#include "shared.h" -#include "font.h" -#include "gui.h" -#include "menu.h" -#include "history.h" -#include "file_slot.h" -#include "file_load.h" -#include "filesel.h" -#include "cheats.h" - -#include - -/* output samplerate, adjusted to take resampler precision in account */ -#define SAMPLERATE_48KHZ 47992 - -u32 Shutdown = 0; -u32 ConfigRequested = 1; -char osd_version[32]; - -#ifdef LOG_TIMING -u64 prevtime; -u32 frame_cnt; -u32 delta_time[LOGSIZE]; -u32 delta_samp[LOGSIZE]; -#endif - - -#ifdef HW_RVL -/**************************************************************************** - * Power Button callback - ***************************************************************************/ -static void PowerOff_cb(void) -{ - Shutdown = 1; - ConfigRequested = 1; -} -#endif - -/**************************************************************************** - * Reset Button callback - ***************************************************************************/ -static void Reset_cb(void) -{ - if (system_hw & SYSTEM_MD) - { - /* Soft Reset */ - gen_reset(0); - } - else if (system_hw == SYSTEM_SMS) - { - /* assert RESET input (Master System model 1 only) */ - io_reg[0x0D] &= ~IO_RESET_HI; - } -} - -/*************************************************************************** - * Genesis Plus Virtual Machine - * - ***************************************************************************/ -static void init_machine(void) -{ - /* system is not initialized */ - config.hot_swap &= 0x01; - - /* mark all BIOS as unloaded */ - system_bios = 0; - - /* Genesis BOOT ROM support (2KB max) */ - memset(boot_rom, 0xFF, 0x800); - FILE *fp = fopen(MD_BIOS, "rb"); - if (fp != NULL) - { - /* read BOOT ROM */ - fread(boot_rom, 1, 0x800, fp); - fclose(fp); - - /* check BOOT ROM */ - if (!memcmp((char *)(boot_rom + 0x120),"GENESIS OS", 10)) - { - /* mark Genesis BIOS as loaded */ - system_bios = SYSTEM_MD; - } - } - - /* allocate global work bitmap */ - memset(&bitmap, 0, sizeof (bitmap)); - bitmap.width = 720; - bitmap.height = 576; - bitmap.pitch = bitmap.width * 2; - bitmap.viewport.w = 256; - bitmap.viewport.h = 224; - bitmap.viewport.x = 0; - bitmap.viewport.y = 0; - bitmap.data = texturemem; -} - -static void run_emulation(void) -{ - int sync; - - /* main emulation loop */ - while (1) - { - /* emulated system */ - if (system_hw == SYSTEM_MCD) - { - /* 16-bit hardware + CD */ - while (!ConfigRequested) - { - /* render frame */ - system_frame_scd(0); - - /* audio/video sync */ - sync = NO_SYNC; - while (sync != (SYNC_VIDEO | SYNC_AUDIO)) - { - /* update video */ - sync |= gx_video_Update(); - - /* update audio */ - sync |= gx_audio_Update(); - } - - /* check interlaced mode change */ - if (bitmap.viewport.changed & 4) - { - /* VSYNC "original" mode */ - if (!config.render && config.vsync && (gc_pal == vdp_pal)) - { - /* framerate has changed, reinitialize audio timings */ - audio_init(SAMPLERATE_48KHZ, get_framerate()); - } - - /* clear flag */ - bitmap.viewport.changed &= ~4; - } - } - } - else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* 16-bit hardware */ - while (!ConfigRequested) - { - /* render frame */ - system_frame_gen(0); - - /* audio/video sync */ - sync = NO_SYNC; - while (sync != (SYNC_VIDEO | SYNC_AUDIO)) - { - /* update video */ - sync |= gx_video_Update(); - - /* update audio */ - sync |= gx_audio_Update(); - } - - /* check interlaced mode change */ - if (bitmap.viewport.changed & 4) - { - /* VSYNC "original" mode */ - if (!config.render && config.vsync && (gc_pal == vdp_pal)) - { - /* framerate has changed, reinitialize audio timings */ - audio_init(SAMPLERATE_48KHZ, get_framerate()); - } - - /* clear flag */ - bitmap.viewport.changed &= ~4; - } - } - } - else - { - /* 8-bit hardware */ - while (!ConfigRequested) - { - /* render frame */ - system_frame_sms(0); - - /* audio/video sync */ - sync = NO_SYNC; - while (sync != (SYNC_VIDEO | SYNC_AUDIO)) - { - /* update video */ - sync |= gx_video_Update(); - - /* update audio */ - sync |= gx_audio_Update(); - } - - /* check interlaced mode change (PBC mode only) */ - if (bitmap.viewport.changed & 4) - { - /* "original" mode */ - if (!config.render && config.vsync && (gc_pal == vdp_pal)) - { - /* framerate has changed, reinitialize audio timings */ - audio_init(SAMPLERATE_48KHZ, get_framerate()); - } - - /* clear flag */ - bitmap.viewport.changed &= ~4; - } - } - } - - /* stop video & audio */ - gx_audio_Stop(); - gx_video_Stop(); - -#ifdef LOG_TIMING - if (system_hw) - { - FILE *f; - char filename[64]; - - memset(filename, 0, 64); - strcpy(filename,"timings-"); - if (!config.vsync || (config.tv_mode == !vdp_pal)) - { - strcat(filename,"no_"); - } - else - { - if (gc_pal) - { - strcat(filename,"50hz_"); - } - else - { - strcat(filename,"60hz_"); - } - } - strcat(filename,"vsync-"); - if (vdp_pal) - { - strcat(filename,"pal-"); - } - else - { - strcat(filename,"ntsc-"); - } - if (config.render == 2) - { - strcat(filename,"prog.txt"); - } - else - { - if (!config.render && !interlaced) - { - strcat(filename,"no_"); - } - strcat(filename,"int.txt"); - } - - f = fopen(filename,"a"); - if (f != NULL) - { - int i; - u32 min,max; - double total = 0; - double nsamples = 0; - - if (delta_time[LOGSIZE - 1] != 0) - { - frame_cnt = LOGSIZE; - } - - min = max = delta_time[0]; - - for (i=0; i delta_time[i]) min = delta_time[i]; - if (max < delta_time[i]) max = delta_time[i]; - } - fprintf(f,"\n"); - fprintf(f,"min = %d ns\n", min); - fprintf(f,"max = %d ns\n", max); - fprintf(f,"avg = %8.5f ns (%5.8f samples/sec, %5.8f samples/frame)\n\n\n", total/(double)i, nsamples/total*1000000000.0, nsamples/(double)i); - fclose(f); - } - } - - memset(delta_time,0,LOGSIZE); - memset(delta_samp,0,LOGSIZE); - frame_cnt = prevtime = 0; -#endif - - /* show menu */ - ConfigRequested = 0; - mainmenu(); - - /* restart video & audio */ - gx_video_Start(); - gx_audio_Start(); - } -} - -/********************************************************************************************************************************************************* - Get emulator input framerate (actually used by audio emulation to approximate number of samples rendered on each frame, see audio_init in system.c) -*********************************************************************************************************************************************************/ -double get_framerate(void) -{ - /* Run emulator at original VDP framerate if console TV mode does not match emulated TV mode or VSYNC is disabled */ - if (!config.vsync || (config.tv_mode == !vdp_pal)) - { - return 0.0; - } - - /* Otherwise, run emulator at Wii/Gamecube framerate to ensure perfect video synchronization */ - if (vdp_pal) - { - /* 288p -> 13500000 pixels/sec, 864 pixels/line, 312 lines/field -> fps = 13500000/864/312 = 50.08 hz */ - /* 288i,576i -> 13500000 pixels/sec, 864 pixels/line, 312.5 lines/field (two fields = one frame = 625 lines) -> fps = 13500000/864/312.5 = 50.00 hz */ - return (config.render || interlaced) ? (27000000.0/864.0/625.0) : (13500000.0/864.0/312.0); - } - else - { - /* 240p -> 13500000 pixels/sec, 858 pixels/line, 263 lines/field -> fps = 13500000/858/263 = 59.83 hz */ - /* 240i,480i -> 13500000 pixels/sec, 858 pixels/line, 262.5 lines/field (two fields = one frame = 525 lines) -> fps = 13500000/858/262.5 = 59.94 hz */ - /* 480p -> 27000000 pixels/sec, 858 pixels/line, 525 lines/field -> fps = 27000000/858/525 = 59.94 hz */ - return (config.render || interlaced) ? (27000000.0/858.0/525.0) : (13500000.0/858.0/263.0); - } -} - -/******************************************* - Restart emulation when loading a new game -********************************************/ -void reloadrom(void) -{ - /* Cartridge "Hot Swap" support (make sure system has already been inited once and use cartridges) */ - if ((config.hot_swap == 3) && ((system_hw != SYSTEM_MCD) || scd.cartridge.boot)) - { - /* Only initialize cartridge hardware */ - if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - /* 16-bit cartridge */ - md_cart_init(); - md_cart_reset(1); - } - else - { - /* 8-bit cartridge */ - sms_cart_init(); - sms_cart_reset(); - } - } - - /* Disc Swap support (automatically enabled if CD tray is open) */ - else if ((system_hw != SYSTEM_MCD) || (cdd.status != CD_OPEN)) - { - /* Initialize audio emulation */ - interlaced = 0; - audio_init(SAMPLERATE_48KHZ, get_framerate()); - - /* Switch virtual system on */ - system_init(); - system_reset(); - - /* Allow hot swap */ - config.hot_swap |= 2; - } - - /* Auto-Load Backup RAM */ - slot_autoload(0,config.s_device); - - /* Auto-Load State */ - slot_autoload(config.s_default,config.s_device); - - /* Load Cheat file */ - CheatLoad(); -} - -/************************************************** - Shutdown everything properly -***************************************************/ -void shutdown(void) -{ - /* save current config */ - config_save(); - - /* auto-save State file */ - slot_autosave(config.s_default,config.s_device); - - /* shutdown emulation */ - audio_shutdown(); - gx_audio_Shutdown(); - gx_video_Shutdown(); -#ifdef HW_RVL - DI_Close(); -#endif -} - -/*************************************************************************** - * M A I N - * - ***************************************************************************/ -int main (int argc, char *argv[]) -{ - #ifdef HW_RVL - /* enable 64-byte fetch mode for L2 cache */ - L2Enhance(); - - /* initialize DI interface */ - DI_UseCache(0); - DI_Init(); - - sprintf(osd_version, "%s (IOS %d)", VERSION, IOS_GetVersion()); -#else - sprintf(osd_version, "%s (GCN)", VERSION); -#endif - - /* initialize video engine */ - gx_video_Init(); - -#ifndef HW_RVL - /* initialize DVD interface */ - DVD_Init(); -#endif - - /* initialize input engine */ - gx_input_Init(); - - /* initialize FAT devices */ - int retry = 0; - int fatMounted = 0; - - /* try to mount FAT devices during 3 seconds */ - while (!fatMounted && (retry < 12)) - { - fatMounted = fatInitDefault(); - usleep(250000); - retry++; - } - - if (fatMounted) - { - /* base directory */ - char pathname[MAXPATHLEN]; - sprintf (pathname, DEFAULT_PATH); - DIR *dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - - /* default SRAM & Savestate files directories */ - sprintf (pathname, "%s/saves",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/saves/md",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/saves/ms",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/saves/gg",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/saves/sg",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/saves/cd",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - - /* default Snapshot files directories */ - sprintf (pathname, "%s/snaps",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/snaps/md",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/snaps/ms",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/snaps/gg",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/snaps/sg",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/snaps/cd",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - - /* default Cheat files directories */ - sprintf (pathname, "%s/cheats",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/cheats/md",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/cheats/ms",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/cheats/gg",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/cheats/sg",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - sprintf (pathname, "%s/cheats/cd",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - - /* default BIOS ROM files directories */ - sprintf (pathname, "%s/bios",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - - /* default LOCK-ON ROM files directories */ - sprintf (pathname, "%s/lock-on",DEFAULT_PATH); - dir = opendir(pathname); - if (dir) closedir(dir); - else mkdir(pathname,S_IRWXU); - } - - /* initialize sound engine */ - gx_audio_Init(); - - /* initialize genesis plus core */ - history_default(); - config_default(); - init_machine(); - - /* auto-load last ROM file */ - if (config.autoload) - { - SILENT = 1; - if (OpenDirectory(TYPE_RECENT, -1)) - { - if (LoadFile(0)) - { - reloadrom(); - gx_video_Start(); - gx_audio_Start(); - ConfigRequested = 0; - } - } - SILENT = 0; - } - - /* show disclaimer */ - if (ConfigRequested) - { - legal(); - } - -#ifdef HW_RVL - /* power button callback */ - SYS_SetPowerCallback(PowerOff_cb); -#endif - - /* reset button callback */ - SYS_SetResetCallback(Reset_cb); - - /* main emulation loop */ - run_emulation(); - - /* we should never return anyway */ - return 0; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/osd.h deleted file mode 100644 index 20e8a4d7e7..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/gx/osd.h +++ /dev/null @@ -1,95 +0,0 @@ -/*************************************************/ -/* port specific stuff should be put there */ -/*************************************************/ - -#ifndef _OSD_H_ -#define _OSD_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef HW_RVL -#include -#include -#include "vi_encoder.h" -#endif - -#include "gx_input.h" -#include "gx_audio.h" -#include "gx_video.h" -#include "file_load.h" -#include "cheats.h" - -#include "config.h" -#include "fileio.h" - -#define DEFAULT_PATH "/genplus" - -/*************************************************/ -/* required by Genesis Plus GX core */ -/*************************************************/ -#define GG_ROM "/genplus/lock-on/ggenie.bin" -#define AR_ROM "/genplus/lock-on/areplay.bin" -#define SK_ROM "/genplus/lock-on/sk.bin" -#define SK_UPMEM "/genplus/lock-on/sk2chip.bin" -#define MS_BIOS_US "/genplus/bios/bios_U.sms" -#define MS_BIOS_EU "/genplus/bios/bios_E.sms" -#define MS_BIOS_JP "/genplus/bios/bios_J.sms" -#define GG_BIOS "/genplus/bios/bios.gg" -#define MD_BIOS "/genplus/bios/bios_MD.bin" -#define CD_BIOS_US "/genplus/bios/bios_CD_U.bin" -#define CD_BIOS_EU "/genplus/bios/bios_CD_E.bin" -#define CD_BIOS_JP "/genplus/bios/bios_CD_J.bin" -#define CD_BRAM_US "/genplus/saves/cd/scd_U.brm" -#define CD_BRAM_EU "/genplus/saves/cd/scd_E.brm" -#define CD_BRAM_JP "/genplus/saves/cd/scd_J.brm" -#define CART_BRAM "/genplus/saves/cd/cart.brm" - -/*********************************************************/ -/* implemented by Genesis Plus GX core (GC/Wii specific) */ -/*********************************************************/ - -/* 32 bytes aligned sound buffers (8 samples alignment) */ -#define ALIGN_SND 0xfffffff8 - -/* use Wii DVD LED to indicate when virtual CD tray is open */ -#ifdef HW_RVL -#define CD_TRAY_CALLBACK *(u32*)0xcd0000c0 = (*(u32*)0xcd0000c0 & ~0x20) | ((cdd.status == CD_OPEN) << 5); -#endif - -/*************************************************/ - -#define VERSION "Genesis Plus GX 1.7.4" - -#define NO_SYNC 0 -#define SYNC_VIDEO 1 -#define SYNC_AUDIO 2 - -/* globals */ -extern void legal(void); -extern double get_framerate(void); -extern void reloadrom(void); -extern void shutdown(void); -extern u32 Shutdown; -extern u32 ConfigRequested; -extern char osd_version[32]; - -#ifdef LOG_TIMING -#include -#define LOGSIZE 2000 -extern u64 prevtime; -extern u32 frame_cnt; -extern u32 delta_time[LOGSIZE]; -extern u32 delta_samp[LOGSIZE]; -#endif - -#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/readme.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/readme.txt deleted file mode 100644 index 48e603faae..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/m68k/readme.txt +++ /dev/null @@ -1,315 +0,0 @@ - MUSASHI - ======= - - Version 3.3 - - A portable Motorola M680x0 processor emulation engine. - Copyright 1998-2001 Karl Stenerud. All rights reserved. - - - -INTRODUCTION: ------------- - -Musashi is a Motorola 68000, 68010, 68EC020, and 68020 emulator written in C. -This emulator was written with two goals in mind: portability and speed. - -The emulator is written to ANSI C specifications with the exception that I use -inline functions. This is not compliant to the ANSI spec, but will be -compliant to the ANSI C9X spec. - -It has been successfully running in the MAME project (www.mame.net) for over 2 -years and so has had time to mature. - - - -LICENSE AND COPYRIGHT: ---------------------- - -The Musashi M680x0 emulator is copyright 1998-2001 Karl Stenerud. - -The source code included in this archive is provided AS-IS, free for any -non-commercial purpose. - -If you build a program using this core, please give credit to the author. - -If you wish to use this core in a commercial environment, please contact -the author to discuss commercial licensing. - - - -AVAILABILITY: ------------- -The latest version of this code can be obtained at: -http://kstenerud.cjb.net - - - -CONTACTING THE AUTHOR: ---------------------- -I can be reached at kstenerud@mame.net - - - -BASIC CONFIGURATION: -------------------- -The basic configuration will give you a standard 68000 that has sufficient -functionality to work in a primitive environment. - -This setup assumes that you only have 1 device interrupting it, that the -device will always request an autovectored interrupt, and it will always clear -the interrupt before the interrupt service routine finishes (but could -possibly re-assert the interrupt). -You will have only one address space, no tracing, and no instruction prefetch. - -To implement the basic configuration: - -- Open m68kconf.h and verify that the settings for INLINE and DECL_SPEC will - work with your compiler. (They are set for gcc) - -- In your host program, implement the following functions: - unsigned int m68k_read_memory_8(unsigned int address); - unsigned int m68k_read_memory_16(unsigned int address); - unsigned int m68k_read_memory_32(unsigned int address); - void m68k_write_memory_8(unsigned int address, unsigned int value); - void m68k_write_memory_16(unsigned int address, unsigned int value); - void m68k_write_memory_32(unsigned int address, unsigned int value); - -- In your host program, be sure to call m68k_pulse_reset() once before calling - any of the other functions as this initializes the core. - -- Use m68k_execute() to execute instructions and m68k_set_irq() to cause an - interrupt. - - - -ADDING PROPER INTERRUPT HANDLING: --------------------------------- -The interrupt handling in the basic configuration doesn't emulate the -interrupt acknowledge phase of the CPU and automatically clears an interrupt -request during interrupt processing. -While this works for most systems, you may need more accurate interrupt -handling. - -To add proper interrupt handling: - -- In m68kconf.h, set M68K_EMULATE_INT_ACK to OPT_SPECIFY_HANDLER - -- In m68kconf.h, set M68K_INT_ACK_CALLBACK(A) to your interrupt acknowledge - routine - -- Your interrupt acknowledge routine must return an interrupt vector, - M68K_INT_ACK_AUTOVECTOR, or M68K_INT_ACK_SPURIOUS. most m68k - implementations just use autovectored interrupts. - -- When the interrupting device is satisfied, you must call m68k_set_irq(0) to - remove the interrupt request. - - - -MULTIPLE INTERRUPTS: -------------------- -The above system will work if you have only one device interrupting the CPU, -but if you have more than one device, you must do a bit more. - -To add multiple interrupts: - -- You must make an interrupt arbitration device that will take the highest - priority interrupt and encode it onto the IRQ pins on the CPU. - -- The interrupt arbitration device should use m68k_set_irq() to set the - highest pending interrupt, or 0 for no interrupts pending. - - - -SEPARATE IMMEDIATE AND PC-RELATIVE READS: ----------------------------------------- -You can write faster memory access functions if you know whether you are -fetching from ROM or RAM. Immediate reads are always from the program space -(Always in ROM unless it is running self-modifying code). -This will also separate the pc-relative reads, since some systems treat -PROGRAM mode reads and DATA mode reads differently (for program encryption, -for instance). See the section below (ADDRESS SPACE) for an explanation of -PROGRAM and DATA mode. - -To enable separate reads: - -- In m68kconf.h, turn on M68K_SEPARATE_READS. - -- In your host program, implement the following functions: - unsigned int m68k_read_immediate_16(unsigned int address); - unsigned int m68k_read_immediate_32(unsigned int address); - - unsigned int m68k_read_pcrelative_8(unsigned int address); - unsigned int m68k_read_pcrelative_16(unsigned int address); - unsigned int m68k_read_pcrelative_32(unsigned int address); - -- If you need to know the current PC (for banking and such), set - M68K_MONITOR_PC to OPT_SPECIFY_HANDLER, and set M68K_SET_PC_CALLBACK(A) to - your routine. - - - -ADDRESS SPACES: --------------- -Most systems will only implement one address space, placing ROM at the lower -addresses and RAM at the higher. However, there is the possibility that a -system will implement ROM and RAM in the same address range, but in different -address spaces, or will have different mamory types that require different -handling for the program and the data. - -The 68k accomodates this by allowing different program spaces, the most -important to us being PROGRAM and DATA space. Here is a breakdown of -how information is fetched: - -- All immediate reads are fetched from PROGRAM space. - -- All PC-relative reads are fetched from PROGRAM space. - -- The initial stack pointer and program counter are fetched from PROGRAM space. - -- All other reads (except for those from the moves instruction for 68020) - are fetched from DATA space. - -The m68k deals with this by encoding the requested address space on the -function code pins: - - FC - Address Space 210 - ------------------ --- - USER DATA 001 - USER PROGRAM 010 - SUPERVISOR DATA 101 - SUPERVISOR PROGRAM 110 - CPU SPACE 111 <-- not emulated in this core since we emulate - interrupt acknowledge in another way. - -Problems arise here if you need to emulate this distinction (if, for example, -your ROM and RAM are at the same address range, with RAM and ROM enable -wired to the function code pins). - -There are 2 ways to deal with this situation using Musashi: - -1. If you only need the distinction between PROGRAM and DATA (the most common), - you can just separate the reads (see the preceeding section). This is the - faster solution. - -2. You can emulate the function code pins entirely. - -To emulate the function code pins: - -- In m68kconf.h, set M68K_EMULATE_FC to OPT_SPECIFY_HANDLER and set - M68K_SET_FC_CALLBACK(A) to your function code handler function. - -- Your function code handler should select the proper address space for - subsequent calls to m68k_read_xx (and m68k_write_xx for 68010+). - -Note: immediate reads are always done from program space, so technically you - don't need to implement the separate immediate reads, although you could - gain more speed improvements leaving them in and doing some clever - programming. - - - -USING DIFFERENT CPU TYPES: -------------------------- -The default is to enable only the 68000 cpu type. To change this, change the -settings for M68K_EMULATE_010 etc in m68kconf.h. - -To set the CPU type you want to use: - -- Make sure it is enabled in m68kconf.h. Current switches are: - M68K_EMULATE_010 - M68K_EMULATE_EC020 - M68K_EMULATE_020 - -- In your host program, call m68k_set_cpu_type() and then call - m68k_pulse_reset(). Valid CPU types are: - M68K_CPU_TYPE_68000, - M68K_CPU_TYPE_68010, - M68K_CPU_TYPE_68EC020, - M68K_CPU_TYPE_68020 - - - -CLOCK FREQUENCY: ---------------- -In order to emulate the correct clock frequency, you will have to calculate -how long it takes the emulation to execute a certain number of "cycles" and -vary your calls to m68k_execute() accordingly. -As well, it is a good idea to take away the CPU's timeslice when it writes to -a memory-mapped port in order to give the device it wrote to a chance to -react. - -You can use the functions m68k_cycles_run(), m68k_cycles_remaining(), -m68k_modify_timeslice(), and m68k_end_timeslice() to do this. -Try to use large cycle values in your calls to m68k_execute() since it will -increase throughput. You can always take away the timeslice later. - - - -MORE CORRECT EMULATION: ----------------------- -You may need to enable these in order to properly emulate some of the more -obscure functions of the m68k: - -- M68K_EMULATE_BKPT_ACK causes the CPU to call a breakpoint handler on a BKPT - instruction - -- M68K_EMULATE_TRACE causes the CPU to generate trace exceptions when the - trace bits are set - -- M68K_EMULATE_RESET causes the CPU to call a reset handler on a RESET - instruction. - -- M68K_EMULATE_PREFETCH emulates the 4-word instruction prefetch that is part - of the 68000/68010 (needed for Amiga emulation). - -- call m68k_pulse_halt() to emulate the HALT pin. - - - -CONVENIENCE FUNCTIONS: ---------------------- -These are in here for programmer convenience: - -- M68K_INSTRUCTION_HOOK lets you call a handler before each instruction. - -- M68K_LOG_ENABLE and M68K_LOG_1010_1111 lets you log illegal and A/F-line - instructions. - - - -MULTIPLE CPU EMULATION: ----------------------- -The default is to use only one CPU. To use more than one CPU in this core, -there are some things to keep in mind: - -- To have different cpus call different functions, use OPT_ON instead of - OPT_SPECIFY_HANDLER, and use the m68k_set_xxx_callback() functions to set - your callback handlers on a per-cpu basis. - -- Be sure to call set_cpu_type() for each CPU you use. - -- Use m68k_set_context() and m68k_get_context() to switch to another CPU. - - - -LOAD AND SAVE CPU CONTEXTS FROM DISK: ------------------------------------- -You can use them68k_load_context() and m68k_save_context() functions to load -and save the CPU state to disk. - - - -GET/SET INFORMATION FROM THE CPU: --------------------------------- -You can use m68k_get_reg() and m68k_set_reg() to gain access to the internals -of the CPU. - - - -EXAMPLE: -------- - -I have included a file example.zip that contains a full example. diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/readme.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/readme.txt deleted file mode 100644 index 152daa04e4..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/ntsc/readme.txt +++ /dev/null @@ -1,58 +0,0 @@ -sms_ntsc 0.2.3: Sega Master System NTSC Video Filter ----------------------------------------------------- -This library filters a Sega Master System image to match what a TV would -show, allowing an authentic image in an emulator. It uses a highly -optimized algorithm to perform the same signal processing as an NTSC -decoder in a TV, giving very similar pixel artifacts and color bleeding. -The usual picture controls can be adjusted: hue, saturation, contrast, -brightness, and sharpness. Additionally, the amount of NTSC chroma and -luma artifacts can be reduced, allowing an image that corresponds to -composite video (artifacts), S-video (color bleeding only), RGB (clean -pixels), or anywhere inbetween. - -The output is scaled to the proper horizontal width, leaving it up the -emulator to simply double the height. Specialized blitters can be easily -written using a special interface, allowing customization of input and -output pixel formats, optimization for the host platform, and efficient -scanline doubling. - -Blitting a 248x192 source image to a 581x384 pixel 16-bit RGB memory -buffer at 60 frames per second uses 7% CPU on a 2.0 GHz Athlon 3500+ and -33% CPU on a 10-year-old 400 MHz G3 PowerMac. - -Author : Shay Green -Website : http://www.slack.net/~ant/ -Forum : http://groups.google.com/group/blargg-sound-libs -License : GNU Lesser General Public License (LGPL) -Language: C or C++ - - -Getting Started ---------------- -Build a program from demo.c, sms_ntsc.c, and the SDL multimedia library -(see http://libsdl.org/). Run it with "test.bmp" in the same directory -and it should show the filtered image. See demo.c for more. - -See sms_ntsc.txt for documentation and sms_ntsc.h for reference. Post to -the discussion forum for assistance. - - -Files ------ -readme.txt Essential information -sms_ntsc.txt Library documentation -changes.txt Changes made since previous releases -license.txt GNU Lesser General Public License - -benchmark.c Measures frame rate and processor usage of library -demo.c Displays and saves NTSC filtered image -demo_impl.h Internal routines used by demo -test.bmp Test image for demo - -sms_ntsc_config.h Library configuration (modify as needed) -sms_ntsc.h Library header and source -sms_ntsc.c -sms_ntsc_impl.h - --- -Shay Green diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/eq.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/eq.c deleted file mode 100644 index 2f57e2eabf..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/sound/eq.c +++ /dev/null @@ -1,132 +0,0 @@ -/*---------------------------------------------------------------------------- -// -// 3 Band EQ :) -// -// EQ.C - Main Source file for 3 band EQ -// -// (c) Neil C / Etanza Systems / 2K6 -// -// Shouts / Loves / Moans = etanza at lycos dot co dot uk -// -// This work is hereby placed in the public domain for all purposes, including -// use in commercial applications. -// -// The author assumes NO RESPONSIBILITY for any problems caused by the use of -// this software. -// -//----------------------------------------------------------------------------*/ - -/* NOTES : -// -// - Original filter code by Paul Kellet (musicdsp.pdf) -// -// - Uses 4 first order filters in series, should give 24dB per octave -// -// - Now with P4 Denormal fix :) - - -//----------------------------------------------------------------------------*/ - -/* ---------- -//| Includes | -// ----------*/ -#include -#include -#include -#include "eq.h" -#include "macros.h" - - -/* ----------- -//| Constants | -// -----------*/ - -static double vsa = (1.0 / 4294967295.0); /* Very small amount (Denormal Fix) */ - - -/* --------------- -//| Initialise EQ | -// ---------------*/ - -/* Recommended frequencies are ... -// -// lowfreq = 880 Hz -// highfreq = 5000 Hz -// -// Set mixfreq to whatever rate your system is using (eg 48Khz)*/ - -void init_3band_state(EQSTATE * es, int lowfreq, int highfreq, int mixfreq) -{ - /* Clear state */ - - memset(es, 0, sizeof(EQSTATE)); - - /* Set Low/Mid/High gains to unity */ - - es->lg = 1.0; - es->mg = 1.0; - es->hg = 1.0; - - /* Calculate filter cutoff frequencies */ - - es->lf = 2 * sin(M_PI * ((double) lowfreq / (double) mixfreq)); - es->hf = 2 * sin(M_PI * ((double) highfreq / (double) mixfreq)); -} - - -/* --------------- -//| EQ one sample | -// ---------------*/ - -/* - sample can be any range you like :) -// -// Note that the output will depend on the gain settings for each band -// (especially the bass) so may require clipping before output, but you -// knew that anyway :)*/ - -double do_3band(EQSTATE * es, int sample) -{ - /* Locals */ - - double l, m, h; /* Low / Mid / High - Sample Values */ - - /* Filter #1 (lowpass) */ - - es->f1p0 += (es->lf * ((double) sample - es->f1p0)) + vsa; - es->f1p1 += (es->lf * (es->f1p0 - es->f1p1)); - es->f1p2 += (es->lf * (es->f1p1 - es->f1p2)); - es->f1p3 += (es->lf * (es->f1p2 - es->f1p3)); - - l = es->f1p3; - - /* Filter #2 (highpass) */ - - es->f2p0 += (es->hf * ((double) sample - es->f2p0)) + vsa; - es->f2p1 += (es->hf * (es->f2p0 - es->f2p1)); - es->f2p2 += (es->hf * (es->f2p1 - es->f2p2)); - es->f2p3 += (es->hf * (es->f2p2 - es->f2p3)); - - h = es->sdm3 - es->f2p3; - - /* Calculate midrange (signal - (low + high)) */ - - /* m = es->sdm3 - (h + l); */ - /* fix from http://www.musicdsp.org/showArchiveComment.php?ArchiveID=236 ? */ - m = sample - (h + l); - - /* Scale, Combine and store */ - - l *= es->lg; - m *= es->mg; - h *= es->hg; - - /* Shuffle history buffer */ - - es->sdm3 = es->sdm2; - es->sdm2 = es->sdm1; - es->sdm1 = sample; - - /* Return result */ - - return (int) (l + m + h); -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/system.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/system.h deleted file mode 100644 index ac72727a9d..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/system.h +++ /dev/null @@ -1,121 +0,0 @@ -/*************************************************************************************** - * Genesis Plus - * Virtual System emulation - * - * Support for 16-bit & 8-bit hardware modes - * - * Copyright (C) 1998-2003 Charles Mac Donald (original code) - * Copyright (C) 2007-2018 Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _SYSTEM_H_ -#define _SYSTEM_H_ - -#include "blip_buf.h" - -/* Supported hardware models */ -#define SYSTEM_SG 0x10 -#define SYSTEM_SGII 0x11 -#define SYSTEM_MARKIII 0x12 -#define SYSTEM_SMS 0x20 -#define SYSTEM_SMS2 0x21 -#define SYSTEM_GG 0x40 -#define SYSTEM_GGMS 0x41 -#define SYSTEM_MD 0x80 -#define SYSTEM_PBC 0x81 -#define SYSTEM_PICO 0x82 -#define SYSTEM_MCD 0x84 - -/* NTSC & PAL Master Clock frequencies */ -#define MCLOCK_NTSC 53693175 -#define MCLOCK_PAL 53203424 - -/* Number of M-Cycles executed per line */ -#define MCYCLES_PER_LINE 3420 - -/* Horizontal timing offsets when running in Z80 mode */ -#define SMS_CYCLE_OFFSET 530 -#define PBC_CYCLE_OFFSET 560 - -typedef struct -{ - uint8 *data; /* Bitmap data */ - int width; /* Bitmap width */ - int height; /* Bitmap height */ - int pitch; /* Bitmap pitch */ - struct - { - int x; /* X offset of viewport within bitmap */ - int y; /* Y offset of viewport within bitmap */ - int w; /* Width of viewport */ - int h; /* Height of viewport */ - int ow; /* Previous width of viewport */ - int oh; /* Previous height of viewport */ - int changed; /* 1= Viewport width or height have changed */ - } viewport; -} t_bitmap; - -typedef struct -{ - int sample_rate; /* Output Sample rate (8000-48000) */ - double frame_rate; /* Output Frame rate (usually 50 or 60 frames per second) */ - int enabled; /* 1= sound emulation is enabled */ - blip_t* blips[3]; /* Blip Buffer resampling (stereo) */ -} t_snd; - - -/* Global variables */ -extern t_bitmap bitmap; -extern t_snd snd; -extern uint32 mcycles_vdp; -extern int16 SVP_cycles; -extern uint8 system_hw; -extern uint8 system_bios; -extern uint32 system_clock; - -/* Function prototypes */ -extern int audio_init(int samplerate, double framerate); -extern void audio_set_rate(int samplerate, double framerate); -extern void audio_reset(void); -extern void audio_shutdown(void); -extern int audio_update(int16 *buffer); -extern void audio_set_equalizer(void); -extern void system_init(void); -extern void system_reset(void); -extern void system_frame_gen(int do_skip); -extern void system_frame_scd(int do_skip); -extern void system_frame_sms(int do_skip); - -#endif /* _SYSTEM_H_ */ - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/CHANGELOG.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/CHANGELOG.txt deleted file mode 100644 index ef03f8049f..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/CHANGELOG.txt +++ /dev/null @@ -1,401 +0,0 @@ --------------------- -Genesis Plus History --------------------- - -All recent changes were backported from the GX version (Gamecube/Wii port), maintained by Eke-Eke. -Please look at http://code.google.com/p/genplus-gx/ for more infos. - - - ---------------------------------------------------------------------------------------------------------- -[04/12/2010] version 1.4.1 (Eke-Eke) ---------------------------------------------------------------------------------------------------------- - -[Core/Sound] ---------------- -* implemented Blargg's blip buffer in SN76489 core (all channels are now lineary interpolated) - -[Core/VDP] ---------------- -* improved 2-cell vscroll emulation accuracy, as verified on real hardware (Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge) -* improved VBLANK flag accuracy, as observed on real hardware. -* improved DMA operations accuracy, writes are now performed on a scanline basis: fixes Gaiares (flickering title screen). -* improved DMA Fill timing accuracy. -* fixed DMA with bad code values: fixes Williams Arcade Classics (corrupted gfx after soft reset). -* fixed horizontal resolution changes during HBLANK: fixes Bugs Bunny in Double Trouble (2nd stage). -* fixed Vertical Counter in interlace mode 1, as observed on real hardware. -* fixed horizontal border width, as observed on real hardware. -* various code improvments & optimizations. - -[Core/CPU] ---------------- -* fixed state of Z80 registers on reset (sound issues with Defender & Defender 2 in Williams Arcade Classics) -* implemented 68k undocumented flags behavior for DIVU/DIVS instructions (Bloodshot / Battle Frenzy) - -[Core/Extra] ---------------- -* improved emulation of copy-protection hardware found in some unlicensed cartridges (Mulan, Pocket Monsters II). -* enabled simultaneous use of multitap & J-CART (Super Skidmarks 6-player mode) -* improved savestate format: added DMA, SVP, cartridge mapping & internal registers state informations -* improved unlicensed ROM mappers emulation -* added Chinese Fighters III mapper support -* added Top Fighter mapper support -* fixed Barver Battle Saga mapper support -* fixed cartridge hardware soft-reset (Game Genie, SVP, ...) -* fixed Game Genie registers byte reads - - ----------------------------------------------------------------------------------------------------------------------------------------------------- -[06/30/10] version 1.4.0 (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -[Core/Sound] - -* completely rewrote sound processing/mixing: sound chips are now clocked with exact output framerate -to ensure 100% smooth video & audio playback, with no lag or skipping, while rendering an accurate number -of samples per frame and keeping PSG & FM chips in sync. -* improved PSG & FM chips synchronization with CPU execution (fixed point precision). -* improved YM2612 core general accuracy (SSG-EG, CSM mode,...) (based upon Nemesis recent tests on real hardware) -* improved YM2612 LFO emulation accuracy: fixes "Spider-Man & Venom : Separation Anxiety" (intro) -* fixed YM2612 bug with Timer B: fixes "Langrisser Hikari II"/"Der Langrisser II" (Sega logo) -* fixed YM2612 context saving/loading. -* fixed YM2612 state on reset. -* removed outdated & less accurate Gens YM2612 core -* added configurable YM2612 DAC resolution emulation. -* added configurable & faster FIR resampler (thanks to Blargg & AamirM), removed libsamplerate support. -* added configurable Low-Pass filtering -* added configurable 3-Band Equalizer (thanks to Neil C). -* added an option to boost SN76489 Noise Channel. -* adjusted SN76489 cut-off frequency. - - -[Core/VDP] - -* added support for CRAM writes during horizontal blanking (Striker, Zero the Kamikaze Squirrel,...) -* added support for 2-Cell vertical scrolling in Interlaced 2 mode -* added support for some undocumented mode register bits -* added proper emulation of HV Counter latch: fixes Sunset Riders intro -* added pixel-accurate emulation of mid-line display on/off (Nigel Mansell World Championship PAL, Ren & Stimpy's Invention PAL,...) -* improved FIFO timings accuracy: fixes Sol Deace intro -* improved sprite masking accuracy (thanks to Nemesis for his test program) -* improved sprites processing accuracy: fixes (un)masked sprites in Mickey Mania (3D level), Sonic 2 (VS mode). -* improved HBLANK flag timing accuracy: fixes Mega Turrican (Sky level) -* improved horizontal blanking & HINT/VINT occurence timing accuracy, as measured on real hardware. -* improved HCounter accuracy in 40-cell mode, as measured on real hardware. -* improved color accuracy in VDP highlight mode to match results observed on real hardware - - -[Core/CPU] - -* updated Z80 core to last version (fixes interrupt Mode 0 timing and some BIT instructions). -* fixed some Z80 instructions timing. -* improved Z80 interrupt accuracy -* improved 68k accuracy (initial Reset timing + auto-vectored interrupts handling). -* improved 68k timing accuracy for DIVU/DVIS (thanks to Jorge Cwik) & MULU/MULS instructions. -* improved Z80 & 68k cpu execution/synchronization accuracy by using Master Clock as common reference (now run exactly 3420 M-Cycles per line). -* modified Z80 & 68k cores to directly use external cycle count instead of intermediate counters. - - -[Core/Extra] - -* added Game Genie hardware emulation (Game Genie ROM is now fully supported). -* added Action Replay hardware emulation (Action replay ROM is now fully supported). -* added S&K "Lock-On" hardware emulation (you can "lock" any games to Sonic & Knuckles). -* added Cartridge "hot swap" feature. -* added missing EEPROM support in some games. -* added accurate TMSS emulation (VDP lock-out) -* fixed Realtec mapper emulation: fixes missing sound in Balloon Boy / Funny World. -* fixed lightgun auto-detection: fixes default cursor position in Lethal Enforcers II. -* lots of code cleanup, bugfixes & optimization. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [12/14/08] version 1.3.0 (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* YM2612 bugfixes (MAME core): - .fixed EG Decay->Substain transition when SL & DR are minimals: fix tracks #3 and #9 in "Mega Turrican" - .fixed a bug in SSG-EG emulation code: fix Level 1 music in "Alisia Dragoon" - .modified SSG-EG Decay End Level: fix some sound effects (ChainSaw, Zap...) in "Beavis & Butthead" - .improved Detune overflow accuracy: fix very high frequency sounds in many games - .fixed registers 0x20-0x26 Reset state: fix intro music in "B.O.B" - .reverted incorrect fix with KEY ON: fix "Flamethrower" sound effect in "Alien 3" and many others -* adjusted HCounter values: fixes line flickering in "Sonic 3D" bonus stage -* adjusted VINT timing: fixes hang-up in "V.R Troopers" -* improved HBLANK flag accuracy: fixes line flickering in "Gouketsuji Ichizoku" -* fixed broken Z80 access to WRAM: fixes hang-up in "Mamono Hunter Youko" -* modified JCART emulation: fixes corrupted tracks logo in "Micro Machines 2" -* added Blargg's NTSC Filters support (NTSC video artifacts emulation) -* optimized VDP rendering core, rewrote 68k interface (memory handlers, cycle execution, interrupts): greatly improved emulation speed - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [08/26/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* YM2612(MAME): fixed LFO phase update for CH3 special mode: fix sound effects in Warlock & Aladdin (thanks to AamirM) -* YM2612(MAME): fixed EG attenuation level on "KEY ON": fix Ecco 2's splash sound -* YM2612(MAME): fixed SSG-EG emulation: fix Bubba'n Stix (Track 5) and many others -* YM2612(MAME): replaced sample interpolation with libsamplerate support, High Quality mode is now more accurate -* implemented cycle-accurate HINT timings: every timing sensitive games/demos are now *finally* working fine -* fixed a bug affecting CRAM/VSRAM DMA timings -* fixed Sprite Attribute Table address mask for VRAM writes -* improved accuracy of 68k access to Z80: fix music in Pacman 2 when entering PAUSE menu -* disabled "Address Error" emulation when UMK3 hack is loaded: fix game crashing after a round ends up -* added support for some more unlicensed games: Pocket Monster, King of Fighter 98, Soul Blade (credits to Haze) -* improved Menacer emulation: fix lightgun support in Body Count & T2: The Arcade Game -* added Konami Justifier emulation: fix lightgun support in Lethal Enforcers 1 & 2 -* added Sega Mouse emulation (Populous 2, Body Count, Shangai 2, Fun'n Games, ...) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [07/16/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* adjusted (again) HINT timings: fix Double Dragon 2 (game freezed), hopefully does not break anything else -* fixed broken EEPROM support for Codemaster games -* modified input update timings: fix Dungeons & Dragons * Warriors of the Eternal Sun (thanks to Notaz) -* added support for "Ultimate Mortal Kombat Trilogy" hack (max. size supported is 10MBytes) -* added (VERY) preliminar support for PICO roms (credits to Notaz for his documentation) -* improved YM2612 emulation (credits to Nemesis for his tests on real hardware): - .implemented phase overflow emulation: improved fix for special music instrument used in Comix Zone, Flashback, Ariel, Shaq Fu... - .improved SSG-EG emulation in MAME core (also based on additional code from Alone Coder) - .improved Timers emulation accuracy - .improved Enveloppe Generator accuracy - .fixed Channel 3 CSM mode emulation - .implemented sample interpolation in MAME core to emulate the chip at original frequency (HQ YM2612 mode, from gens) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [06/01/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* improved HCounter accuracy: fix graphic glitches in "Striker (Europe)" -* improved HINT timing accuracy: fix flickering in "Zero The Kamikaze Squirrel (USA)" -* improved rendering accuracy when backdrop color is modified during HBLANK (Road Rash I/II/III) -* fixed broken Game Genie support - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/19/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* modified VINT timings a little bit: fix lockup during Desert Strike's intro -* corrected 68k interrupts handling: fix graphic glitches in Darius II/Sagaia - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/06/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* updated SVP core: fix some perspective issues in Virtua Racing (thanks to Notaz) -* added internal SAT update during VRAM Fill: fix unmasked sprites during Battletech's intro -* fixed m68k core issues with gcc 4.2.3: fix Xperts, Lemmings 2, M1 Abrams Battle Tank -* forced YM2612 Enveloppe update: fix intro music in Batman&Robin (thanks to Aamir) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/01/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* added SVP emulation: Virtua Racing is now emulated (big thanks to Notaz and TascoDeluxe) -* fixed VDP registers behaviour when VDP Mode 4 is enabled: fix Bass Masters Classic Pro, Captain Planet & The Planeeters -* corrected a bug in DMA Fill operation: fix James Pond 3, Rockman World/Megaman Willy Wars (corrupted VRAM) -* corrected typo errors in CPU cycle counters update: fix optiom screen music in "College Slam" and probably others games. -* added preliminary support of undocumented YM2612 bug: fixes soundtracks of Shaq Fu, Spiderman, Comix Zone, Ariel and some others -* added support for mappers & copy protection devices used in many unlicensed/pirate cartridges (see cart_hw.c for details) -* rewrote memory handlers for better modularity and some (little) speedup -* reduced Savestate size - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [01/07/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* fixed interleaved rom detection: roms with .smd extension should now work fine -* fixed a recently introduced bug in VDP registers writes: fixes bad colors in Toy Story (intro) -* updated list of games using EEPROM: added Sports Talk Baseball (internal memory check fixed) and Brian Lara Cricket -* fixed VINT flag update when VINT is disabled: fixes NCAA College Football -* adjusted DMA timings in H32 mode: fixes flickering in Out of this World, Kawasaki Superbike Challenge & Formula One -* adjusted line rendering and HBLANK timings: fixes flickering in Nigel Mansell's World Championship Racing, Deadly Moves/Power Athlete -* fixed unmapped ROM reads through Z80 Bank: fixes Zombie High (Proto) -* added support for custom ROM/RAM mapping used by Game no Kanzume Otokuyou - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [12/28/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* many sourcecode cleanup and optimization -* completely rewrote EEPROM emulation: now support all known EEPROM types (24C01-24C65) and mappers (Sega, Acclaim, EA, Codemasters) -used in a few games (now use internal game database) as external RAM. This should at least fix save support in the following games: - . NBA Jam (alternate Acclaim mapper) - . College Slam, Frank Thomas Big Hurt Baseball (24C65 type) - . NHLPA Hockey 93, Rings of Power (EA mapper) - . Micro Machines serie, Brian Lara Cricket 96/Shane Warne Cricket (Codemasters mapper) -* external RAM is now initialized to 0xFF by default: fix Micromachines 2, Dino Dini Soccer -* fixed SRAM 16-bits memory handlers: fix some Sega Sports and EA Sports games (NFL95, NBA Action 95, NHL97, NHL98,...) -* modified WRITE_xxx & READ_xxx macros for better portability and faster memory access on BIG ENDIAN platform -* completely rewrote BIG ENDIAN support in render.c and vdp.c: rendering should be a little faster -* rewrote ROM bankswitch emulation (Super Street Fighter II): ROM access are faster, using memory pointers instead of reading ROM copy from ARAM -* fixed leftmost Window/PlaneA column render and implemented Window bug (as described by Charles Mc Donald) -* improved "Sprite Limit" and "Sprite Collision" detection accuracy -* modified RGB565 Color Palette to use the full available color range (0-31;0-63) -* implemented "cycle accurate" HV Interrupt timings: fix Sesame's Street Counting Cafe, Legend of Galahad (intro) -* improved VDP access timings accuracy (added FIFO emulation): fix Double Clutch -* improved DMA timings accuracy: fix Winter Olympics (E), Arch Rivals and probably more -* fixed HCounter again: Road Rash serie (I,II,III) don't need timing hacks anymore -* fixed VCounter in Interlaced 2 mode: fix Combat Cars "VS-Mode" -* improved Interlaced 2 mode (double resolution) rendering: Sonic 2, Combat Cars ("VS-Modes") look far better -* added TMSS BIOS support (optional) -* rewrote part of the YM2162 MAME's core: fixed internal FM timers handling, removed non-YM2612 emulation code and unused multiple cpu support -* implemented "cycle accurate" FM timers & sound samples rendering -* improved Z80 Interrupt timing accuracy: fix Sonic 3 music slowdowns -* updated Z80 & 68000 cores to last MAME versions -* improved Soft Reset emulation: X-Men 2 and Eternal Champions (random character selection) now work more like on real hardware. -* added full overscan emulation (vertical & horizontal borders) for "pixel perfect" aspect ratio (tested against a real genesis) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [07/20/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* corrected TeamPlayer support: fix multiplayer in Gauntlet 4 (Sept. version), Pengo and a lot of others -* added J-Cart support: enable multiplayer in Codemasters games (Pete Sampras, Micromachines games, Super Skidmarks) -* added serial EEPROM autodetection: fix games with bad SRAM informations in header (NBA Jam TE) -* added SVP faking: display 2D graphics in Virtua Racing (the game is however still unplayable) -* added support for more internal IO registers: fixe some unlicensed games (Wisdom Tree games...) -* added preliminary support for unmapped protection device: fix some unlicensed games with special built-in hardware (Squirell King, Lion King 2...) -* added "Soft Reset" combo (in game, use L+Z triggers): this should be like pressing the RESET button on a real Genesis and this is required - in some games to enable special features or even complete the game (ex: X-Men). - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [06/21/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* added Multitap support (EA 4-Way Play and Sega Teamplayer): allowed up to four players in games supporting those peripherals -* added partial Sega Menacer lightgun support (use Analog Stick): automatically set when detecting the 6-in-1 Menacer game - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/18/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* you can now switch between FM cores without reseting the game. FM registers value are automatically restored when switching. -* removed the previous VINT timings modification because it brokes some games (Rocket Knight, Thunderforce III,...) -* added automatic Timing configuration (VDP latency, VINT timing & alternate Line Timing) at game loading, based upon specific romname detection. -This means you can still modify some of these options afterwards but they are now automatically set/unset when loading a game which need -special timing fixes. These fixes are also automatically desactivated when the current game doesn't need them. -For information, games that are actually detected and need special timings to run properly are: - .Legend of Galahad & Road Rash series (single line not rendered properly) - .Sesame Street Counting Cafe (don't boot) - .Chaos Engine/Soldiers of Fortune (graphic glitches on scrolling) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/08/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* VINT timings are now a little more accurate: fixes Sesame's Street Counting Cafe -* SN76496 MAX_OUTPUT back to normal -* modified FB_WNOISE value in SN76496 core according to John Kortink's last informations -* added support for Maxim's PSG core, same as used in SMSPLUS (it becomes the default PSG core) -* updated FM core to the latest MAME version -* corrected DAC output level (fixes voices and some special FX being too low) -* added support for Gens YM2612 (FM) core (MAME's one still remains default FM core) -* added configurable preamplification for each sound cores (see Emulator Options) -* added some other configurable sound options (boost overall volume, FM improvment for Gens YM2612) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/11/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* corrected MAX_OUTPUT value in SN76496 core: fix PSG sound (SFX) volume - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/17/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * added an option to enable alternate line rendering timing (fix single line error in Road Rash series and Legend of Galahad's Intro) - * Color RAM update now always reset color 0 to border color (fix color glitches in Mortal Kombat,...) (thanks to Noop's for the idea) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/09/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* modified HV counter tables (fix graphic glitches in Skitchin's sky, Lotus 2 Recs, Panorama Cotton, Dashin Desperados & maybe more) -* completely rewrote DMA timings emulation so that it works for all games (no more cpu freezing) -* added all DMA tranfer rates handling for each three DMA modes and added dma busy flag emulation -* modified interrupts handling on VDP register #0 and #1 writes (fix Lemmings status bar) -* added VDP RAM write latency (fix Chaos Engine/Soldier of Fortune gfx glitches) -* modified FM timers handling a bit (fix Vectorman2 music) -* corrected Sprite Limit rendering (fix Sonic 1 & Micromachines 2 title screens) -* corrected IO Registers writes (fix Decap' Attack controls, no more need for alternate input) -* corrected 6 Buttons Pad emulation (fix 6buttons detection in Mortal Kombat 3, Comix Zone and other 6-buttons compatible games) -* modified sound mixing a bit according to Generator sourcecode (FM and PSG ratios seems more correct) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [02/07/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* fixed fm timers (fix missing music in Castle of Illusion, Quackshot, Undead Line, Wonderboy in Monster Lair, Cal 50, Turbo Outrun, Thundeforce 4 and maybe more) -* added complete EEPROM emulation (save support now works fine in Wonderboy5, Megaman Willy Wars, NBA Jam...) (credits to Notaz, adapted from Picodrive code) -* added preliminar dma timing emulation (fix bottom screen in Legend of Galahad) (credits to Notaz, adapted from Picodrive code) -* hack: clear Vint pending after Hint (INT level 4) acknowledge (fix Fatal Rewind) -* hack: modify read_bus16 to return a random value (fake fetch) (fix Time Killers) -* modified cpu execution timings, with more correct hblank and interrupts timing (fix ISS Deluxe, Double Dragon 2 and certainly more) (Based on Gens code) -* modified busreq mechanism: better synchro between z80 & 68k (no need to dejitter anymore) (Based on Gens code) -* added sprite collision detection (fix Strider 2) -* modified dma fill operation for big endian platform (fix Contra Hardcorps gfx garbage) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/25/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Fixed a typo that made Z80 banked access to the VDP registers always fail. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/17/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Modified the rendering code to handle unaligned longword access to memory. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/20/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Modified 68000 emulator to prevent 'tas.b $mem' from writing data back - after a read (fixes Gargoyles). - * Fixed bug in 68000 emulator to swap order of words written for address - register indirect pre-decremented writes (fixes Jim Power graphics). - * Added support for 240-line displays (for Super Skidmarks). - * Rewrote part of the interrupt handling (fixes some raster effects). - * Removed sprite collision detection code (never really worked). - * Optimized sprite rendering inner loop. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/13/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - * Finished up memory map for VDP DMA V-bus reads. - * Fixed handling of 68000 writes to I/O chip at even addresses. - * Fixed bit 7 handling of control register in I/O chip. - * Finished up Z80 memory map. - * Added code to handle Genesis hardware lock-ups. - * Removed some faulty code from the 68000 memory map handlers. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/22/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Completed implementation of Z80 banked memory handlers. - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/README.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/README.txt deleted file mode 100644 index 5ad42c52a4..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/README.txt +++ /dev/null @@ -1,186 +0,0 @@ - ---------------------------------------------------------------------------- - Genesis Plus - ---------------------------------------------------------------------------- - - based on the original version 1.2a - by Charles Mac Donald - WWW: http://cgfm2.emuviews.com - - version 1.4 - by Eke-Eke - WWW: http://code.google.com/p/genplus-gx - - - What's New - ---------- - - see CHANGELOG - - - Features - --------- - - * NTSC (60Hz) & PAL (50Hz) hardware emulation - * highly accurate 68000 & Z80 CPU emulation - * highly accurate VDP emulation (HBLANK, DMA, FIFO, HV interrupts, undocumented registers, display mid-line changes) - * cycle-accurate YM2612 emulation (FM synthesis is done at the original frequency, using FIR resampling) - * cycle-accurate chip synchronization (68000/Z80/YM2612/SN76489) - * basic hardware latency emulation (VDP/68k, Z80/68k) - * full overscan area (horizontal & vertical colored borders) emulation (optional) - * accurate TMSS model emulation incl. internal BIOS support (optional) - * Blargg's software NTSC filters support (optional) - * PICO emulation (partial) - * 3-buttons & 6-buttons controllers support - * Sega Team Player & EA 4-Way Play multitap adapters support - * Sega Menacer & Konami Justifier lightguns support - * Sega Mouse support - * J-Cart adapter support(Micro Machines & Pete Sampras series, Super Skidmarks) - * SVP DSP emulation (Virtua Racing) - * SRAM support (up to 64kB) - * serial EEPROM emulation (all known chips) - * ROM bankswitch hardware support (Super Street Fighter 2) - * ROM/SRAM bankswitch hardware support (Phantasy Star 4, Legend of Thor, Sonic the Hedgehog 3) - * emulates most banking & copy protection devices used in unlicensed/pirate cartridges - * native Game Genie & Action Replay hardware emulation - * Lock-On hardware emulation - * support for ROM image up to 10MB (Ultimate MK3 hack) - - - Usage - ----- - - The Windows version runs windowed in a 16-bit desktop with 48Hz sound using SDL but - without joystick support. - - The DOS version has most of the functionality from SMS Plus, such - as audio, joysticks, etc. - - Windows/DOS controls: - - Arrow Keys - Directional pad - A,S,D,F - 1P gamepad, buttons A, B, C, StartTab - Hard Reset - Esc - Exit program - - F7 - Load Savestate (game.gpz) - F8 - Save Savestate (game.gpz) - F9 - Toggle CPU clock: PAL(50hz)/NTSC(60hz) - F10 - Soft Reset - F11 - Toggle Border emulation (vertical only) - F12 - Toggle Player # (keyboard/mouse) - - DOS only: - - F1-F4 - Set frameskip level (F1 = no skip ... F4 = skip 3 frames) - - Windows only: - - F4 - Toggle Audio (ONLY when Turbo mode is OFF) - F6 - Toggle Turbo mode (ONLY when Audio is OFF) - - - The mouse can be used for lightgun games, PICO games and when the Sega Mouse is activated. - - A SRAM file (game.srm) is automatically saved on exit and loaded on startup. - - DOS details: - - You can only support a second player if you are using a joystick driver - that supports more than one joystick. (e.g. Sidewinder, dual pads, etc.) - - Type 'gen -help' on the command line for a list of useful options. - - -res set the display resolution. - -vdriver specify video driver. - -depth specify color depth. (8, 16) - -scanlines use scanlines effect. - -scale scale display to full resolution. (slow) - -vsync wait for vertical sync before blitting. - -sound enable sound. (force speed throttling) - -sndrate specify sound rate. (8000, 11025, 22050, 44100) - -sndcard specify sound card. (0-7) - -swap swap left and right stereo output. - -joy specify joystick type. - - Here is a list of all the video drivers you can pass as a parameter - to the '-vdriver' option: - - auto, safe, vga, modex, vesa2l, vesa3, vbeaf - - Here is a list of all the joystick drivers you can pass as a parameter - to the '-joy' option: - - auto, none, standard, 2pads, 4button, 6button, 8button, fspro, wingex, - sidewinder, gamepadpro, grip, grip4, sneslpt1, sneslpt2, sneslpt3, - psxlpt1, psxlpt2, psxlpt3, n64lpt1, n64lpt2, n64lpt3, db9lpt1, db9lpt2, - db9lpt3, tglpt1, tglpt2, tglpt3, wingwar, segaisa, segapci, segapci2 - - You can put any commandline option into a plain text file which should - be called "gen.cfg". Put one option per line, please. Command line options - will override anything in the configuration file. - - Currently the zip loading code can manage a zipfile where the game - image is the first thing in it. If you try to open a huge archive of - games, only the first will be played. - - Credits and Acknowlegements - --------------------------- - - I would like to thank Omar Cornut, Christian Schiller, and Chris MacDonald - for their invaluable help and support with this project. - - Richard Bannister for the Macintosh port and all of the code fixes and - suggestions that have made Genesis Plus a better program. - (http://www.bannister.org) - - Extra features, emulation accuracy & game compatibility improvments by Eke-Eke - (from the Gamecube/Wii port: http://code.google.com/p/genplus-gx ) - - The Genesis emulator authors: Bart Trzynadlowski, Quintesson, Steve Snake, - James Ponder, Stef, Gerrie, Sardu, AamirM - - The regular people and many lurkers at segadev and spritesmind.net. - - The MAME team for the CPU and sound chip emulators. - - Maxim for his SN76489 emulator. - - Nemesis for his researches about the YM2612 and VDP. - - Notaz for his SVP emulator. - - Tasco Deluxe for his documentation of Realtec mapper. - - Haze for his reverse-engineering of most unlicensed games protection. - - Shay Green (Blargg) for his FIR Resampler & NTSC Video Filter. - - Neil C for his 3-Band EQ implementation. - - Jean-Loup Gailly and Mark Adler for their useful zip library. - - - Contact - ------- - - Charles MacDonald - E-mail: cgfm2@hotmail.com - WWW: http://cgfm2.emuviews.com - - Eke-Eke - E-mail: eke_eke31@yahoo.fr - WWW: http://code.google.com/p/genplus-gx - - - Legal - ----- - - Copyright (C) 1999, 2000, 2001, 2002, 2003 Charles MacDonald - Copyright (C) 2006-2010 Eke-Eke - - The source code is distributed under the terms of the GNU General Public - License. - - The Z80 CPU emulator, 68K CPU emulator, and the YM2612 emulation code - are taken from the MAME project, and terms of their use are covered under - the MAME license. (http://www.mame.net) - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/Makefile b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/Makefile deleted file mode 100644 index 22579cef6f..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/Makefile +++ /dev/null @@ -1,151 +0,0 @@ -# Makefile for genplus DOS -# -# (c) 1999, 2000, 2001, 2002, 2003 Charles MacDonald -# modified by Eke-Eke -# -# Defines : -# -DLSB_FIRST - Leave undefined for big-endian processors. -# -DDOS - Enable DOS/x86 specific code. -# -DDEBUG - Enable debugging code -# -DX86_ASM - Enable inline x86 assembly code in Z80 emulator - -CC = gcc -AS = nasm -f coff -LDFLAGS = -FLAGS = -I. -I.. -I../z80 -I../m68k -I../dos -I../sound -I../sound/SRC -I../cart_hw -I../cart_hw/svp -I../ntsc \ - -Wall -g \ - -O6 -march=i686 -fomit-frame-pointer \ - -DLSB_FIRST -DX86_ASM -DDOS - -LIBS = -lalleg -laudio -lz -lm - -OBJECTS = obj/z80.o - -OBJECTS += obj/m68kcpu.o \ - obj/m68kops.o - - -OBJECTS += obj/genesis.o \ - obj/vdp_ctrl.o \ - obj/vdp_render.o \ - obj/system.o \ - obj/io_ctrl.o \ - obj/mem68k.o \ - obj/memz80.o \ - obj/membnk.o \ - obj/state.o - -OBJECTS += obj/input.o \ - obj/gamepad.o \ - obj/lightgun.o \ - obj/mouse.o \ - obj/activator.o \ - obj/xe_a1p.o \ - obj/teamplayer.o \ - obj/paddle.o \ - obj/sportspad.o - - -OBJECTS += obj/sound.o \ - obj/sn76489.o \ - obj/ym2612.o - -OBJECTS += obj/Fir_Resampler.o -OBJECTS += obj/blip.o - -OBJECTS += obj/eq.o \ - -OBJECTS += obj/sram.o \ - obj/eeprom.o \ - obj/svp.o \ - obj/ssp16.o \ - obj/ggenie.o \ - obj/areplay.o \ - obj/md_cart.o \ - obj/sms_cart.o - -OBJECTS += obj/dos.o \ - obj/sealintf.o \ - obj/config.o \ - obj/error.o \ - obj/unzip.o \ - obj/fileio.o \ - obj/loadrom.o - -OBJECTS += obj/sms_ntsc.o \ - obj/md_ntsc.o - - -EXE = ../gen.exe - -all : $(EXE) - -$(EXE) : $(OBJ) - $(CC) -o $(EXE) $(OBJ) $(LIBS) $(LDFLAGS) - -obj/%.o : ../%.c ../%.h - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../asm/%.s - $(AS) $< -o $@ - -obj/%.o : ../sound/%.c ../sound/%.h - $(CC) -c $< -o $@ $(FLAGS) -obj/%.o : ../sound/%.c - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../sound/SRC/%.c ../sound/SRC/%.h - $(CC) -c $< -o $@ $(FLAGS) -obj/%.o : ../sound/SRC/%.c - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../input_hw/%.c ../input_hw/%.h - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../cart_hw/%.c ../cart_hw/%.h - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../cart_hw/svp/%.c - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../cart_hw/svp/%.c ../cart_hw/svp/%.h - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../z80/%.c ../z80/%.h - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ../m68k/%.c ../m68k/%.h - $(CC) -c $< -o $@ $(FLAGS) - -obj/%.o : ./%.c ./%.h - $(CC) -c $< -o $@ $(FLAGS) - - -obj/%.o : ../ntsc/%.c ../ntsc/%.h - $(CC) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@ - -pack : - strip $(EXE) - upx -1 $(EXE) - -clean : - rm -f obj/*.o - rm -f *.bak - rm -f *.exe - rm -f *.log - rm -f *.wav - rm -f *.zip -cleancpu : - rm -f obj/z80.oa - -makedir : - mkdir obj - -archive: - pk -dir -add -max \ - -excl=rom -excl=test \ - mdsrc.zip *.* - -# -# end of makefile -# diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/config.c deleted file mode 100644 index f362fe222d..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/config.c +++ /dev/null @@ -1,298 +0,0 @@ - -#include "osd.h" - -t_option option; -t_config config; - -void do_config(char *file) -{ - extern int __crt0_argc; - extern char **__crt0_argv; - - /* Our token list */ - int i, argc; - char *argv[TOKEN_LIST_SIZE]; - - set_option_defaults(); - for(i = 0; i < TOKEN_LIST_SIZE; i += 1) argv[i] = NULL; - - /* Check configuration file */ - if(file) parse_file(file, &argc, argv); - - /* Check extracted tokens */ - parse_args(argc, argv); - - /* Free token list */ - for(i = 0; i < argc; i += 1) if(argv[argc]) free (argv[argc]); - - /* Check command line */ - parse_args(__crt0_argc, __crt0_argv); -} - - -/* Parse configuration file */ -int parse_file(char *filename, int *argc, char **argv) -{ - char token[0x100]; - FILE *handle = NULL; - - *argc = 0; - handle = fopen(filename, "r"); - if(!handle) return (0); - - fscanf(handle, "%s", &token[0]); - while(!(feof(handle))) - { - int size = strlen(token) + 1; - argv[*argc] = malloc(size); - if(!argv[*argc]) return (0); - strcpy(argv[*argc], token); - *argc += 1; - fscanf(handle, "%s", &token[0]); - } - - if(handle) fclose(handle); - return (1); -} - - -int check_bool(char *token) -{ - int result = 1; - if(stricmp("off", token) == 0) - result = 0; - if(stricmp("no", token) == 0) - result = 0; - return (result); -} - - -void set_option_defaults(void) -{ - option.video_driver = GFX_AUTODETECT; - option.video_width = 640; - option.video_height = 480; - option.video_depth = 16; - - option.remap = 0; - option.scanlines = 0; - option.scale = 0; - - option.vsync = 0; - option.throttle = 0; - option.skip = 1; - - option.sound = 0; - option.sndcard = -1; - option.sndrate = 48000; - option.swap = 0; - - option.joy_driver = JOY_TYPE_NONE; -} - - -void set_config_defaults(void) -{ - int i; - - /* sound options */ - config.psg_preamp = 150; - config.fm_preamp = 100; - config.hq_fm = 1; - config.psgBoostNoise = 0; - config.filter = 1; - config.low_freq = 200; - config.high_freq = 8000; - config.lg = 1.0; - config.mg = 1.0; - config.hg = 1.0; - config.lp_range = 50; - config.rolloff = 0.999; - - /* system options */ - config.region_detect = 0; - config.force_dtack = 0; - config.addr_error = 1; - config.tmss = 0; - config.lock_on = 0; - config.romtype = 0; - - /* display options */ - config.overscan = 1; - config.render = 0; - - /* controllers options */ - input.system[0] = SYSTEM_MD_GAMEPAD; - input.system[1] = SYSTEM_MD_GAMEPAD; - config.gun_cursor[0] = 1; - config.gun_cursor[1] = 1; - config.invert_mouse = 0; - for (i=0;i \t Select video driver (auto)\n"); - printf(" -res \t Specify display resolution (320x240)\n"); - printf(" -depth \t Specify display depth (8)\n"); - printf(" -remap \t Enable raster-based palette effects (8-bit color only)\n"); - printf(" -scanlines \t Enable scanlines effect\n"); - printf(" -scale \t Scale display to width of screen\n"); - printf(" -vsync \t Enable vsync polling\n"); - printf(" -throttle \t Enable speed throttling\n"); - printf(" -skip \t Specify frame skip level (1=no frames skipped)\n"); - printf(" -sound \t Enable sound output\n"); - printf(" -sndcard \t Select sound card\n"); - printf(" -sndrate \t Specify sound sample rate (8000-44100)\n"); - printf(" -swap \t Swap left and right channels\n"); - printf(" -joy \t Select joystick driver (auto)\n"); -} - - -void parse_args(int argc, char **argv) -{ - int i, j; - - for(i = 0; i < argc; i += 1) - { - if(stricmp("-vdriver", argv[i]) == 0) - { - for(j = 0; video_driver_table[j].token != NULL; j += 1) - { - if(stricmp(argv[i+1], video_driver_table[j].token) == 0) - { - option.video_driver = video_driver_table[j].value; - } - } - } - - if(stricmp("-res", argv[i]) == 0) - { - option.video_width = atoi(argv[i+1]); - option.video_height = atoi(argv[i+2]); - } - - if(stricmp("-depth", argv[i]) == 0) - { - option.video_depth = atoi(argv[i+1]); - } - - if(stricmp("-remap", argv[i]) == 0) - { - option.remap = check_bool(argv[i+1]); - } - - if(stricmp("-scanlines", argv[i]) == 0) - { - option.scanlines = check_bool(argv[i+1]); - } - - if(stricmp("-scale", argv[i]) == 0) - { - option.scale = check_bool(argv[i+1]); - } - - if(stricmp("-vsync", argv[i]) == 0) - { - option.vsync = check_bool(argv[i+1]); - } - - if(stricmp("-throttle", argv[i]) == 0) - { - option.throttle = check_bool(argv[i+1]); - } - - if(stricmp("-skip", argv[i]) == 0) - { - option.skip = atoi(argv[i+1]); - if(!option.skip) option.skip = 1; - } - - if(stricmp("-sound", argv[i]) == 0) - { - option.sound = check_bool(argv[i+1]); - } - - if(stricmp("-sndcard", argv[i]) == 0) - { - option.sndcard = atoi(argv[i+1]); - } - - if(stricmp("-sndrate", argv[i]) == 0) - { - option.sndrate = atoi(argv[i+1]); - } - - if(stricmp("-swap", argv[i]) == 0) - { - option.swap = check_bool(argv[i+1]); - } - - if(stricmp("-joy", argv[i]) == 0) - { - for(j = 0; joy_driver_table[j].token != NULL; j += 1) - { - if(stricmp(argv[i+1], joy_driver_table[j].token) == 0) - { - option.joy_driver = joy_driver_table[j].value; - } - } - } - } - - if(option.remap) option.video_depth = 8; -} - - -t_strint video_driver_table[] = -{ - { "auto", GFX_AUTODETECT }, - { "safe", GFX_SAFE }, - { "vga", GFX_VGA }, - { "modex", GFX_MODEX }, - { "vesa2l", GFX_VESA2L }, - { "vesa3", GFX_VESA3 }, - { "vbeaf", GFX_VBEAF }, - { NULL, 0 } -}; - - -t_strint joy_driver_table[] = -{ - { "auto", JOY_TYPE_AUTODETECT }, - { "none", JOY_TYPE_NONE }, - { "standard", JOY_TYPE_STANDARD }, - { "2pads", JOY_TYPE_2PADS }, - { "4button", JOY_TYPE_4BUTTON }, - { "6button", JOY_TYPE_6BUTTON }, - { "8button", JOY_TYPE_8BUTTON }, - { "fspro", JOY_TYPE_FSPRO }, - { "wingex", JOY_TYPE_WINGEX }, - { "sidewinder", JOY_TYPE_SIDEWINDER }, - { "gamepadpro", JOY_TYPE_GAMEPAD_PRO }, - { "grip", JOY_TYPE_GRIP }, - { "grip4", JOY_TYPE_GRIP4 }, - { "sneslpt1", JOY_TYPE_SNESPAD_LPT1 }, - { "sneslpt2", JOY_TYPE_SNESPAD_LPT2 }, - { "sneslpt3", JOY_TYPE_SNESPAD_LPT3 }, - { "psxlpt1", JOY_TYPE_PSXPAD_LPT1 }, - { "psxlpt2", JOY_TYPE_PSXPAD_LPT2 }, - { "psxlpt3", JOY_TYPE_PSXPAD_LPT3 }, - { "n64lpt1", JOY_TYPE_N64PAD_LPT1 }, - { "n64lpt2", JOY_TYPE_N64PAD_LPT2 }, - { "n64lpt3", JOY_TYPE_N64PAD_LPT3 }, - { "db9lpt1", JOY_TYPE_DB9_LPT1 }, - { "db9lpt2", JOY_TYPE_DB9_LPT2 }, - { "db9lpt3", JOY_TYPE_DB9_LPT3 }, - { "tglpt1", JOY_TYPE_TURBOGRAFX_LPT1 }, - { "tglpt2", JOY_TYPE_TURBOGRAFX_LPT2 }, - { "tglpt3", JOY_TYPE_TURBOGRAFX_LPT3 }, - { "wingwar", JOY_TYPE_WINGWARRIOR }, - { "segaisa", JOY_TYPE_IFSEGA_ISA}, - { "segapci", JOY_TYPE_IFSEGA_PCI}, - { "segapci2", JOY_TYPE_IFSEGA_PCI_FAST}, - { NULL, 0 } -}; - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/config.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/config.h deleted file mode 100644 index 9f5a424eb0..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/config.h +++ /dev/null @@ -1,104 +0,0 @@ - -#ifndef _CONFIG_H_ -#define _CONFIG_H_ - -#define PATH_SIZE (0x100) -#define TOKEN_LIST_SIZE (0x20) - -typedef struct -{ - char *token; - int value; -}t_strint; - -typedef struct -{ - int video_width; - int video_height; - int video_depth; - int video_driver; - - int autores; - int autores_w; - int autores_h; - - int remap; - int blur; - int scanlines; - int scale; - - int vsync; - int throttle; - int fps; - int skip; - - int sound; - int sndcard; - int sndrate; - int swap; - - int wave; - char wavpath[PATH_SIZE]; - - int joy_driver; - - int split; /* 1= Split image at 2 megabit boundary */ - int flip; /* 1= Bit-flip image */ - int usa; /* 1= Set D6 of $1000 to indicate US machine */ - int softres; /* 1= Allow RUN+SELECT */ -} t_option; - -/**************************************************************************** - * Config Option - * - ****************************************************************************/ -typedef struct -{ - uint8 padtype; -} t_input_c; - -typedef struct -{ - uint8 hq_fm; - uint8 psgBoostNoise; - int32 psg_preamp; - int32 fm_preamp; - uint8 filter; - uint16 low_freq; - uint16 high_freq; - uint8 lp_range; - float lg; - float mg; - float hg; - float rolloff; - uint8 region_detect; - uint8 force_dtack; - uint8 addr_error; - uint8 tmss; - uint8 lock_on; - uint8 romtype; - uint8 overscan; - uint8 render; - uint8 ntsc; - t_input_c input[MAX_INPUTS]; - uint8 gun_cursor[2]; - uint8 invert_mouse; -} t_config; - -/* Global variables */ -extern t_option option; -extern t_config config; -extern t_strint video_driver_table[]; -extern t_strint joy_driver_table[]; - -/* Function prototypes */ -void do_config(char *file); -int parse_file(char *filename, int *argc, char **argv); -void parse_args(int argc, char **argv); -void print_options(void); -int check_bool(char *token); -void set_option_defaults(void); -void set_config_defaults(void); - -#endif /* _CONFIG_H_ */ - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/error.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/error.c deleted file mode 100644 index f8cd443d68..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/error.c +++ /dev/null @@ -1,32 +0,0 @@ - -#include "osd.h" - -FILE *error_log; - -struct { - int enabled; - int verbose; - FILE *log; -} t_error; - -void error_init(void) -{ -#ifdef LOG_ERROR - error_log = fopen("error.log","w"); -#endif -} - -void error_shutdown(void) -{ - if(error_log) fclose(error_log); -} - -void error(char *format, ...) -{ - if (!log_error) return; - va_list ap; - va_start(ap, format); - if(error_log) vfprintf(error_log, format, ap); - va_end(ap); -} - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/error.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/error.h deleted file mode 100644 index 1d5b270d28..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/error.h +++ /dev/null @@ -1,13 +0,0 @@ - -#ifndef _ERROR_H_ -#define _ERROR_H_ - -/* Global variables */ -FILE *error_log; - -/* Function prototypes */ -void error_init(void); -void error_shutdown(void); -void error(char *format, ...); - -#endif /* _ERROR_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/fileio.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/fileio.c deleted file mode 100644 index aaea1dfb45..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/fileio.c +++ /dev/null @@ -1,151 +0,0 @@ -#include "shared.h" - -/* - Load a normal file, or ZIP/GZ archive. - Returns NULL if an error occured. -*/ -uint8 *load_archive(char *filename, int *file_size) -{ - int size = 0; - uint8 *buf = NULL; - - if(check_zip(filename)) - { - unzFile *fd = NULL; - unz_file_info info; - int ret = 0; - - /* Attempt to open the archive */ - fd = unzOpen(filename); - if(!fd) return (NULL); - - /* Go to first file in archive */ - ret = unzGoToFirstFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return (NULL); - } - - ret = unzGetCurrentFileInfo(fd, &info, filename, 128, NULL, 0, NULL, 0); - if(ret != UNZ_OK) - { - unzClose(fd); - return (NULL); - } - - /* Open the file for reading */ - ret = unzOpenCurrentFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return (NULL); - } - - /* Allocate file data buffer */ - size = info.uncompressed_size; - buf = malloc(size); - if(!buf) - { - unzClose(fd); - return (NULL); - } - - /* Read (decompress) the file */ - ret = unzReadCurrentFile(fd, buf, info.uncompressed_size); - if(ret != info.uncompressed_size) - { - free(buf); - unzCloseCurrentFile(fd); - unzClose(fd); - return (NULL); - } - - /* Close the current file */ - ret = unzCloseCurrentFile(fd); - if(ret != UNZ_OK) - { - free(buf); - unzClose(fd); - return (NULL); - } - - /* Close the archive */ - ret = unzClose(fd); - if(ret != UNZ_OK) - { - free(buf); - return (NULL); - } - - /* Update file size and return pointer to file data */ - *file_size = size; - return (buf); - } - else - { - gzFile *gd = NULL; - - /* Open file */ - gd = gzopen(filename, "rb"); - if(!gd) return (0); - - /* Get file size */ - size = gzsize(gd); - - /* Allocate file data buffer */ - buf = malloc(size); - if(!buf) - { - gzclose(gd); - return (0); - } - - /* Read file data */ - gzread(gd, buf, size); - - /* Close file */ - gzclose(gd); - - /* Update file size and return pointer to file data */ - *file_size = size; - return (buf); - } -} - - -/* - Verifies if a file is a ZIP archive or not. - Returns: 1= ZIP archive, 0= not a ZIP archive -*/ -int check_zip(char *filename) -{ - uint8 buf[2]; - FILE *fd = NULL; - fd = fopen(filename, "rb"); - if(!fd) return (0); - fread(buf, 2, 1, fd); - fclose(fd); - if(memcmp(buf, "PK", 2) == 0) return (1); - return (0); -} - - -/* - Returns the size of a GZ compressed file. -*/ -int gzsize(gzFile *gd) -{ - #define CHUNKSIZE (0x10000) - int size = 0, length = 0; - unsigned char buffer[CHUNKSIZE]; - gzrewind(gd); - do { - size = gzread(gd, buffer, CHUNKSIZE); - if(size <= 0) break; - length += size; - } while (!gzeof(gd)); - gzrewind(gd); - return (length); - #undef CHUNKSIZE -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/fileio.h deleted file mode 100644 index b99bfc2e57..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/fileio.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _FILEIO_H_ -#define _FILEIO_H_ - -/* Global variables */ -extern int cart_size; -extern char cart_name[0x100]; - -/* Function prototypes */ -uint8 *load_archive(char *filename, int *file_size); -int load_cart(char *filename); -int check_zip(char *filename); -int gzsize(gzFile *gd); - -#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/osd.h deleted file mode 100644 index 893e0b1b90..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/osd.h +++ /dev/null @@ -1,22 +0,0 @@ - -#ifndef _OSD_H_ -#define _OSD_H_ - -#include -#include -#include -#include -#include -#include - -#include "shared.h" -#include "dos.h" -#include "config.h" -#include "sealintf.h" -#include "error.h" -#include "unzip.h" -#include "fileio.h" - -volatile int frame_count; - -#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/unzip.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/unzip.c deleted file mode 100644 index 90e8618169..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/unzip.c +++ /dev/null @@ -1,1294 +0,0 @@ -/* unzip.c -- IO on .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Read unzip.h for more info -*/ - - -#include -#include -#include -#include "zlib.h" -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else - #include -#endif - - -#ifndef local - #define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - - -#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ - !defined(CASESENSITIVITYDEFAULT_NO) -#define CASESENSITIVITYDEFAULT_NO -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (16384) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -const char unz_copyright[] = - " unzip 0.15 Copyright 1998 Gilles Vollant "; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info_internal_s -{ - uLong offset_curfile;/* relative offset of local header 4 bytes */ -} unz_file_info_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - - uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - uLong offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - uLong pos_local_extrafield; /* position in the local extra field in read*/ - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - uLong rest_read_compressed; /* number of byte to be decompressed */ - uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - FILE* file; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ -} file_in_zip_read_info_s; - - -/* unz_s contain internal information about the zipfile -*/ -typedef struct -{ - FILE* file; /* io structore of the zipfile */ - unz_global_info gi; /* public global information */ - uLong byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ - uLong num_file; /* number of the current file in the zipfile*/ - uLong pos_in_central_dir; /* pos of the current file in the central dir*/ - uLong current_file_ok; /* flag about the usability of the current file*/ - uLong central_pos; /* position of the beginning of the central dir*/ - - uLong size_central_dir; /* size of the central directory */ - uLong offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info cur_file_info; /* public info about the current file in zip*/ - unz_file_info_internal cur_file_info_internal; /* private info about it*/ - file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ -} unz_s; - - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unzlocal_getByte(fin,pi) - FILE *fin; - int *pi; -{ - unsigned char c; - int err = fread(&c, 1, 1, fin); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ferror(fin)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unzlocal_getShort (fin,pX) - FILE* fin; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unzlocal_getLong (fin,pX) - FILE* fin; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (fileName1,fileName2) - const char* fileName1; - const char* fileName2; -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) - const char* fileName1; - const char* fileName2; - int iCaseSensitivity; -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#define BUFREADCOMMENT (0x400) - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local uLong unzlocal_SearchCentralDir(fin) - FILE *fin; -{ - unsigned char* buf; - uLong uSizeFile; - uLong uBackRead; - uLong uMaxBack=0xffff; /* maximum size of global comment */ - uLong uPosFound=0; - - if (fseek(fin,0,SEEK_END) != 0) - return 0; - - - uSizeFile = ftell( fin ); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); - if (fseek(fin,uReadPos,SEEK_SET)!=0) - break; - - if (fread(buf,(uInt)uReadSize,1,fin)!=1) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer - "zlib/zlib109.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -extern unzFile ZEXPORT unzOpen (path) - const char *path; -{ - unz_s us; - unz_s *s; - uLong central_pos,uL; - FILE * fin ; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - uLong number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - fin=fopen(path,"rb"); - if (fin==NULL) - return NULL; - - central_pos = unzlocal_SearchCentralDir(fin); - if (central_pos==0) - err=UNZ_ERRNO; - - if (fseek(fin,central_pos,SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unzlocal_getLong(fin,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir */ - if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* zipfile comment length */ - if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((central_pospfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - fclose(s->file); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) - unzFile file; - unz_global_info *pglobal_info; -{ - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - - -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) - uLong ulDosDate; - tm_unz* ptm; -{ - uLong uDate; - uDate = (uLong)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info *pfile_info, - unz_file_info_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unzlocal_GetCurrentFileInfoInternal (file, - pfile_info, - pfile_info_internal, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - unz_file_info_internal *pfile_info_internal; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - unz_s* s; - unz_file_info file_info; - unz_file_info_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - { - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename0) && (fileNameBufferSize>0)) - if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - if ((err==UNZ_OK) && (extraField!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek += file_info.size_file_extra - uSizeRead; - } - else - lSeek+=file_info.size_file_extra; - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; - } - else - lSeek+=file_info.size_file_comment; - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo (file, - pfile_info, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (file) - unzFile file; -{ - int err=UNZ_OK; - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (file) - unzFile file; -{ - unz_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzipStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) - unzFile file; - const char *szFileName; - int iCaseSensitivity; -{ - unz_s* s; - int err; - - uLong num_fileSaved; - uLong pos_in_central_dirSaved; - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - unzGetCurrentFileInfo(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - return err; -} - - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, - poffset_local_extrafield, - psize_local_extrafield) - unz_s* s; - uInt* piSizeVar; - uLong *poffset_local_extrafield; - uInt *psize_local_extrafield; -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (fseek(s->file,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - { - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - - if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile (file) - unzFile file; -{ - int err=UNZ_OK; - int Store; - uInt iSizeVar; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uLong offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, - &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip_read_info_s*) - ALLOC(sizeof(file_in_zip_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if ((s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - Store = s->cur_file_info.compression_method==0; - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->compression_method = - s->cur_file_info.compression_method; - pfile_in_zip_read_info->file=s->file; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if (!Store) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=1; - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - - s->pfile_in_zip_read = pfile_in_zip_read_info; - return UNZ_OK; -} - - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile (file, buf, len) - unzFile file; - voidp buf; - unsigned len; -{ - int err=UNZ_OK; - uInt iRead = 0; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if ((pfile_in_zip_read_info->read_buffer == NULL)) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - if (len>pfile_in_zip_read_info->rest_read_uncompressed) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, - pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if (pfile_in_zip_read_info->compression_method==0) - { - uInt uDoCopy,i ; - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;istream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else - { - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) - unzFile file; - voidp buf; - unsigned len; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uInt read_now; - uLong size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzipOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (file) - unzFile file; -{ - int err=UNZ_OK; - - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised) - inflateEnd(&pfile_in_zip_read_info->stream); - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) - unzFile file; - char *szComment; - uLong uSizeBuf; -{ -/* int err=UNZ_OK; */ - unz_s* s; - uLong uReadThis ; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/unzip.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/unzip.h deleted file mode 100644 index a30f79cb44..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/dos/unzip.h +++ /dev/null @@ -1,273 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Copyright (C) 1998 Gilles Vollant - - This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g - WinZip, InfoZip tools and compatible. - Encryption and multi volume ZipFile (span) are not supported. - Old compressions used by old PKZip 1.x are not supported - - THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE - CAN CHANGE IN FUTURE VERSION !! - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - -/* for more info about .ZIP format, see - ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip - PkWare has also a specification at : - ftp://ftp.pkware.com/probdesc.zip */ - -#ifndef _unz_H -#define _unz_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer - "zlib/zlib111.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzipOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _unz_H */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/config.c deleted file mode 100644 index 8cbc943955..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/config.c +++ /dev/null @@ -1,48 +0,0 @@ - -#include "osd.h" - -t_config config; - - -void set_config_defaults(void) -{ - int i; - - /* sound options */ - config.psg_preamp = 150; - config.fm_preamp = 100; - config.hq_fm = 1; - config.psgBoostNoise = 0; - config.filter = 1; - config.low_freq = 200; - config.high_freq = 8000; - config.lg = 1.0; - config.mg = 1.0; - config.hg = 1.0; - config.lp_range = 60; - config.rolloff = 0.995; - config.dac_bits = 14; - - /* system options */ - config.region_detect = 0; - config.force_dtack = 0; - config.addr_error = 1; - config.tmss = 0; - config.lock_on = 0;//TYPE_SK; - config.romtype = 0; - - /* display options */ - config.overscan = 1; - config.render = 0; - - /* controllers options */ - input.system[0] = SYSTEM_MD_GAMEPAD; - input.system[1] = SYSTEM_MD_GAMEPAD; - config.gun_cursor[0] = 1; - config.gun_cursor[1] = 1; - config.invert_mouse = 0; - for (i=0;i - -#include "SDL.h" -#include "SDL_thread.h" - -#include "shared.h" -#include "sms_ntsc.h" -#include "md_ntsc.h" - -#define SOUND_FREQUENCY 48000 -#define SOUND_SAMPLES_SIZE 2048 - -#define VIDEO_WIDTH 320 -#define VIDEO_HEIGHT 240 - -int joynum = 0; - -int log_error = 0; -int debug_on = 0; -int turbo_mode = 0; -int use_sound = 1; -int fullscreen = 0; /* SDL_FULLSCREEN */ - -/* sound */ - -struct { - char* current_pos; - char* buffer; - int current_emulated_samples; -} sdl_sound; - -static void sdl_sound_callback(void *userdata, Uint8 *stream, int len) -{ - if(sdl_sound.current_emulated_samples < len) { - memset(stream, 0, len); - } - else { - memcpy(stream, sdl_sound.buffer, len); - /* loop to compensate desync */ - do { - sdl_sound.current_emulated_samples -= len; - } while(sdl_sound.current_emulated_samples > 2 * len); - memcpy(sdl_sound.buffer, - sdl_sound.current_pos - sdl_sound.current_emulated_samples, - sdl_sound.current_emulated_samples); - sdl_sound.current_pos = sdl_sound.buffer + sdl_sound.current_emulated_samples; - } -} - -static int sdl_sound_init() -{ - int n; - SDL_AudioSpec as_desired, as_obtained; - - if(SDL_Init(SDL_INIT_AUDIO) < 0) { - MessageBox(NULL, "SDL Audio initialization failed", "Error", 0); - return 0; - } - - as_desired.freq = SOUND_FREQUENCY; - as_desired.format = AUDIO_S16LSB; - as_desired.channels = 2; - as_desired.samples = SOUND_SAMPLES_SIZE; - as_desired.callback = sdl_sound_callback; - - if(SDL_OpenAudio(&as_desired, &as_obtained) == -1) { - MessageBox(NULL, "SDL Audio open failed", "Error", 0); - return 0; - } - - if(as_desired.samples != as_obtained.samples) { - MessageBox(NULL, "SDL Audio wrong setup", "Error", 0); - return 0; - } - - sdl_sound.current_emulated_samples = 0; - n = SOUND_SAMPLES_SIZE * 2 * sizeof(short) * 11; - sdl_sound.buffer = (char*)malloc(n); - if(!sdl_sound.buffer) { - MessageBox(NULL, "Can't allocate audio buffer", "Error", 0); - return 0; - } - memset(sdl_sound.buffer, 0, n); - sdl_sound.current_pos = sdl_sound.buffer; - return 1; -} - -static void sdl_sound_update() -{ - int i; - short* p; - - int size = audio_update(); - - if (use_sound) - { - SDL_LockAudio(); - p = (short*)sdl_sound.current_pos; - for(i = 0; i < size; ++i) { - *p = snd.buffer[0][i]; - ++p; - *p = snd.buffer[1][i]; - ++p; - } - sdl_sound.current_pos = (char*)p; - sdl_sound.current_emulated_samples += size * 2 * sizeof(short); - SDL_UnlockAudio(); - } -} - -static void sdl_sound_close() -{ - SDL_PauseAudio(1); - SDL_CloseAudio(); - if (sdl_sound.buffer) - free(sdl_sound.buffer); -} - -/* video */ -md_ntsc_t *md_ntsc; -sms_ntsc_t *sms_ntsc; - -struct { - SDL_Surface* surf_screen; - SDL_Surface* surf_bitmap; - SDL_Rect srect; - SDL_Rect drect; - Uint32 frames_rendered; -} sdl_video; - -static int sdl_video_init() -{ - if(SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { - MessageBox(NULL, "SDL Video initialization failed", "Error", 0); - return 0; - } - sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); - sdl_video.surf_bitmap = SDL_CreateRGBSurface(SDL_SWSURFACE, 720, 576, 16, 0, 0, 0, 0); - sdl_video.frames_rendered = 0; - SDL_ShowCursor(0); - - return 1; -} - -static void sdl_video_update() -{ - system_frame(0); - - /* viewport size changed */ - if(bitmap.viewport.changed & 1) - { - bitmap.viewport.changed &= ~1; - - /* source bitmap */ - sdl_video.srect.w = bitmap.viewport.w+2*bitmap.viewport.x; - sdl_video.srect.h = bitmap.viewport.h+2*bitmap.viewport.y; - sdl_video.srect.x = 0; - sdl_video.srect.y = 0; - if (sdl_video.srect.w > VIDEO_WIDTH) - { - sdl_video.srect.x = (sdl_video.srect.w - VIDEO_WIDTH) / 2; - sdl_video.srect.w = VIDEO_WIDTH; - } - if (sdl_video.srect.h > VIDEO_HEIGHT) - { - sdl_video.srect.y = (sdl_video.srect.h - VIDEO_HEIGHT) / 2; - sdl_video.srect.h = VIDEO_HEIGHT; - } - - /* destination bitmap */ - sdl_video.drect.w = sdl_video.srect.w; - sdl_video.drect.h = sdl_video.srect.h; - sdl_video.drect.x = (VIDEO_WIDTH - sdl_video.drect.w) / 2; - sdl_video.drect.y = (VIDEO_HEIGHT - sdl_video.drect.h) / 2; - - /* clear destination surface */ - SDL_FillRect(sdl_video.surf_screen, 0, 0); - - /*if (config.render && (interlaced || config.ntsc)) rect.h *= 2; - if (config.ntsc) rect.w = (reg[12]&1) ? MD_NTSC_OUT_WIDTH(rect.w) : SMS_NTSC_OUT_WIDTH(rect.w); - if (config.ntsc) - { - sms_ntsc = (sms_ntsc_t *)malloc(sizeof(sms_ntsc_t)); - md_ntsc = (md_ntsc_t *)malloc(sizeof(md_ntsc_t)); - - switch (config.ntsc) - { - case 1: - sms_ntsc_init(sms_ntsc, &sms_ntsc_composite); - md_ntsc_init(md_ntsc, &md_ntsc_composite); - break; - case 2: - sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo); - md_ntsc_init(md_ntsc, &md_ntsc_svideo); - break; - case 3: - sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb); - md_ntsc_init(md_ntsc, &md_ntsc_rgb); - break; - } - } - else - { - if (sms_ntsc) - { - free(sms_ntsc); - sms_ntsc = NULL; - } - - if (md_ntsc) - { - free(md_ntsc); - md_ntsc = NULL; - } - } */ - } - - SDL_BlitSurface(sdl_video.surf_bitmap, &sdl_video.srect, sdl_video.surf_screen, &sdl_video.drect); - SDL_UpdateRect(sdl_video.surf_screen, 0, 0, 0, 0); - - ++sdl_video.frames_rendered; -} - -static void sdl_video_close() -{ - if (sdl_video.surf_bitmap) - SDL_FreeSurface(sdl_video.surf_bitmap); - if (sdl_video.surf_screen) - SDL_FreeSurface(sdl_video.surf_screen); -} - -/* Timer Sync */ - -struct { - SDL_sem* sem_sync; - unsigned ticks; -} sdl_sync; - -/* sync */ - -static Uint32 sdl_sync_timer_callback(Uint32 interval) -{ - SDL_SemPost(sdl_sync.sem_sync); - char caption[100]; - sdl_sync.ticks++; - if (sdl_sync.ticks == (vdp_pal ? 50 : 20)) - { - int fps = vdp_pal ? (sdl_video.frames_rendered / 3) : sdl_video.frames_rendered; - sdl_sync.ticks = sdl_video.frames_rendered = 0; - sprintf(caption,"%d fps - %s ", fps, rominfo.international); - SDL_WM_SetCaption(caption, NULL); - } - return interval; -} - -static int sdl_sync_init() -{ - if(SDL_InitSubSystem(SDL_INIT_TIMER|SDL_INIT_EVENTTHREAD) < 0) - { - MessageBox(NULL, "SDL Timer initialization failed", "Error", 0); - return 0; - } - - sdl_sync.sem_sync = SDL_CreateSemaphore(0); - sdl_sync.ticks = 0; - return 1; -} - -static void sdl_sync_close() -{ - if(sdl_sync.sem_sync) - SDL_DestroySemaphore(sdl_sync.sem_sync); -} - -static int sdl_control_update(SDLKey keystate) -{ - switch (keystate) - { - case SDLK_TAB: - { - system_init(); - system_reset(); - break; - } - - case SDLK_F2: - { - if (fullscreen) fullscreen = 0; - else fullscreen = SDL_FULLSCREEN; - sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); - break; - } - - case SDLK_F3: - { - config.render ^=1; - break; - } - - case SDLK_F4: - { - if (!turbo_mode) use_sound ^= 1; - break; - } - - case SDLK_F5: - { - log_error ^= 1; - break; - } - - case SDLK_F6: - { - if (!use_sound) turbo_mode ^=1; - break; - } - - case SDLK_F7: - { - FILE *f = fopen("game.gpz","r+b"); - if (f) - { - uint8 buf[STATE_SIZE]; - fread(&buf, STATE_SIZE, 1, f); - state_load(buf); - fclose(f); - } - break; - } - - case SDLK_F8: - { - FILE *f = fopen("game.gpz","w+b"); - if (f) - { - uint8 buf[STATE_SIZE]; - state_save(buf); - fwrite(&buf, STATE_SIZE, 1, f); - fclose(f); - } - break; - } - - case SDLK_F9: - { - vdp_pal ^= 1; - - /* save YM2612 context */ - unsigned char *temp = malloc(YM2612GetContextSize()); - if (temp) - memcpy(temp, YM2612GetContextPtr(), YM2612GetContextSize()); - - /* reinitialize all timings */ - audio_init(snd.sample_rate, snd.frame_rate); - system_init(); - - /* restore YM2612 context */ - if (temp) - { - YM2612Restore(temp); - free(temp); - } - - /* reinitialize VC max value */ - static const uint16 vc_table[4][2] = - { - /* NTSC, PAL */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0xEA , 0x102}, /* Mode 5 (224 lines) */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0x106, 0x10A} /* Mode 5 (240 lines) */ - }; - vc_max = vc_table[(reg[1] >> 2) & 3][vdp_pal]; - - /* reinitialize display area */ - bitmap.viewport.changed = 3; - break; - } - - case SDLK_F10: - { - gen_softreset(1); - gen_softreset(0); - break; - } - - case SDLK_F11: - { - config.overscan ^= 1; - bitmap.viewport.changed = 3; - break; - } - - case SDLK_F12: - { - joynum = (joynum + 1) % MAX_DEVICES; - while (input.dev[joynum] == NO_DEVICE) - { - joynum = (joynum + 1) % MAX_DEVICES; - } - break; - } - - case SDLK_ESCAPE: - { - return 0; - } - - default: - break; - } - - return 1; -} - -int sdl_input_update(void) -{ - uint8 *keystate = SDL_GetKeyState(NULL); - - /* reset input */ - input.pad[joynum] = 0; - - switch (input.dev[joynum]) - { - case DEVICE_LIGHTGUN: - { - /* get mouse (absolute values) */ - int x,y; - int state = SDL_GetMouseState(&x,&y); - - /* Calculate X Y axis values */ - input.analog[joynum][0] = (x * bitmap.viewport.w) / VIDEO_WIDTH; - input.analog[joynum][1] = (y * bitmap.viewport.h) / VIDEO_HEIGHT; - - /* Start,Left,Right,Middle buttons -> 0 0 0 0 START MIDDLE RIGHT LEFT */ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; - if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; - if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_A; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; - - break; - } - - case DEVICE_PADDLE: - { - /* get mouse (absolute values) */ - int x; - int state = SDL_GetMouseState(&x, NULL); - - /* Range is [0;256], 128 being middle position */ - input.analog[joynum][0] = x * 256 /VIDEO_WIDTH; - - /* Button I -> 0 0 0 0 0 0 0 I*/ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; - - break; - } - - case DEVICE_SPORTSPAD: - { - /* get mouse (relative values) */ - int x,y; - int state = SDL_GetRelativeMouseState(&x,&y); - - /* Range is [0;256] */ - input.analog[joynum][0] = (unsigned char)(-x & 0xFF); - input.analog[joynum][1] = (unsigned char)(-y & 0xFF); - - /* Buttons I & II -> 0 0 0 0 0 0 II I*/ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; - if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; - - break; - } - - case DEVICE_MOUSE: - { - /* get mouse (relative values) */ - int x,y; - int state = SDL_GetRelativeMouseState(&x,&y); - - /* Sega Mouse range is [-256;+256] */ - input.analog[joynum][0] = x * 2; - input.analog[joynum][1] = y * 2; - - /* Vertical movement is upsidedown */ - if (!config.invert_mouse) - input.analog[joynum][1] = 0 - input.analog[joynum][1]; - - /* Start,Left,Right,Middle buttons -> 0 0 0 0 START MIDDLE RIGHT LEFT */ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; - if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; - if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_A; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; - - break; - } - - case DEVICE_XE_A1P: - { - /* A,B,C,D,Select,START,E1,E2 buttons -> E1(?) E2(?) START SELECT(?) A B C D */ - if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_START; - if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_A; - if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_Y; - if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_B; - if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_X; - if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_MODE; - if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_Z; - - /* Left Analog Stick (bidirectional) */ - if(keystate[SDLK_UP]) input.analog[joynum][1]-=2; - else if(keystate[SDLK_DOWN]) input.analog[joynum][1]+=2; - else input.analog[joynum][1] = 128; - if(keystate[SDLK_LEFT]) input.analog[joynum][0]-=2; - else if(keystate[SDLK_RIGHT]) input.analog[joynum][0]+=2; - else input.analog[joynum][0] = 128; - - /* Right Analog Stick (unidirectional) */ - if(keystate[SDLK_KP8]) input.analog[joynum+1][0]-=2; - else if(keystate[SDLK_KP2]) input.analog[joynum+1][0]+=2; - else if(keystate[SDLK_KP4]) input.analog[joynum+1][0]-=2; - else if(keystate[SDLK_KP6]) input.analog[joynum+1][0]+=2; - else input.analog[joynum+1][0] = 128; - - /* Limiters */ - if (input.analog[joynum][0] > 0xFF) input.analog[joynum][0] = 0xFF; - else if (input.analog[joynum][0] < 0) input.analog[joynum][0] = 0; - if (input.analog[joynum][1] > 0xFF) input.analog[joynum][1] = 0xFF; - else if (input.analog[joynum][1] < 0) input.analog[joynum][1] = 0; - if (input.analog[joynum+1][0] > 0xFF) input.analog[joynum+1][0] = 0xFF; - else if (input.analog[joynum+1][0] < 0) input.analog[joynum+1][0] = 0; - if (input.analog[joynum+1][1] > 0xFF) input.analog[joynum+1][1] = 0xFF; - else if (input.analog[joynum+1][1] < 0) input.analog[joynum+1][1] = 0; - - break; - } - - case DEVICE_ACTIVATOR: - { - if(keystate[SDLK_g]) input.pad[joynum] |= INPUT_ACTIVATOR_7L; - if(keystate[SDLK_h]) input.pad[joynum] |= INPUT_ACTIVATOR_7U; - if(keystate[SDLK_j]) input.pad[joynum] |= INPUT_ACTIVATOR_8L; - if(keystate[SDLK_k]) input.pad[joynum] |= INPUT_ACTIVATOR_8U; - } - - default: - { - if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_A; - if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_B; - if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; - if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_X; - if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_Y; - if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_Z; - if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_MODE; - - if(keystate[SDLK_UP]) input.pad[joynum] |= INPUT_UP; - else - if(keystate[SDLK_DOWN]) input.pad[joynum] |= INPUT_DOWN; - if(keystate[SDLK_LEFT]) input.pad[joynum] |= INPUT_LEFT; - else - if(keystate[SDLK_RIGHT]) input.pad[joynum] |= INPUT_RIGHT; - - break; - } - } - - if (system_hw == SYSTEM_PICO) - { - /* get mouse (absolute values) */ - int x,y; - int state = SDL_GetMouseState(&x,&y); - - /* Calculate X Y axis values */ - input.analog[0][0] = 0x3c + (x * (0x17c-0x03c+1)) / VIDEO_WIDTH; - input.analog[0][1] = 0x1fc + (y * (0x2f7-0x1fc+1)) / VIDEO_HEIGHT; - - /* Map mouse buttons to player #1 inputs */ - if(state & SDL_BUTTON_MMASK) pico_current++; - if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_B; - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_A; - } - - free (keystate); - return 1; -} - - -int main (int argc, char **argv) -{ - int running = 1; - - /* Print help if no game specified */ - if(argc < 2) - { - char caption[256]; - sprintf(caption, "Genesis Plus\\SDL by Charles MacDonald\nWWW: http://cgfm2.emuviews.com\nusage: %s gamename\n", argv[0]); - MessageBox(NULL, caption, "Information", 0); - exit(1); - } - - /* set default config */ - error_init(); - set_config_defaults(); - - /* Load ROM file */ - cart.rom = malloc(10*1024*1024); - memset(cart.rom, 0, 10*1024*1024); - if(!load_rom(argv[1])) - { - char caption[256]; - sprintf(caption, "Error loading file `%s'.", argv[1]); - MessageBox(NULL, caption, "Error", 0); - exit(1); - } - - /* load BIOS */ - memset(bios_rom, 0, sizeof(bios_rom)); - FILE *f = fopen(OS_ROM, "rb"); - if (f!=NULL) - { - fread(&bios_rom, 0x800,1,f); - fclose(f); - int i; - for(i = 0; i < 0x800; i += 2) - { - uint8 temp = bios_rom[i]; - bios_rom[i] = bios_rom[i+1]; - bios_rom[i+1] = temp; - } - config.tmss |= 2; - } - - /* initialize SDL */ - if(SDL_Init(0) < 0) - { - char caption[256]; - sprintf(caption, "SDL initialization failed"); - MessageBox(NULL, caption, "Error", 0); - exit(1); - } - sdl_video_init(); - if (use_sound) sdl_sound_init(); - sdl_sync_init(); - - /* initialize Genesis virtual system */ - SDL_LockSurface(sdl_video.surf_bitmap); - memset(&bitmap, 0, sizeof(t_bitmap)); - bitmap.width = 720; - bitmap.height = 576; - bitmap.depth = 16; - bitmap.granularity = 2; - bitmap.pitch = (bitmap.width * bitmap.granularity); - bitmap.data = sdl_video.surf_bitmap->pixels; - SDL_UnlockSurface(sdl_video.surf_bitmap); - bitmap.viewport.changed = 3; - - /* initialize emulation */ - audio_init(SOUND_FREQUENCY, vdp_pal ? 50.0 : 60.0); - system_init(); - - /* load SRAM */ - f = fopen("./game.srm", "rb"); - if (f!=NULL) - { - fread(sram.sram,0x10000,1, f); - fclose(f); - } - - /* reset emulation */ - system_reset(); - - if(use_sound) SDL_PauseAudio(0); - - /* 3 frames = 50 ms (60hz) or 60 ms (50hz) */ - if(sdl_sync.sem_sync) - SDL_SetTimer(vdp_pal ? 60 : 50, sdl_sync_timer_callback); - - /* emulation loop */ - while(running) - { - SDL_Event event; - if (SDL_PollEvent(&event)) - { - switch(event.type) - { - case SDL_QUIT: - running = 0; - break; - - case SDL_KEYDOWN: - running = sdl_control_update(event.key.keysym.sym); - break; - } - } - - sdl_video_update(); - sdl_sound_update(); - - if(!turbo_mode && sdl_sync.sem_sync && sdl_video.frames_rendered % 3 == 0) - { - SDL_SemWait(sdl_sync.sem_sync); - } - - } - - /* save SRAM */ - f = fopen("./game.srm", "wb"); - if (f!=NULL) - { - fwrite(sram.sram,0x10000,1, f); - fclose(f); - } - - system_shutdown(); - audio_shutdown(); - error_shutdown(); - free(cart.rom); - - sdl_video_close(); - sdl_sound_close(); - sdl_sync_close(); - SDL_Quit(); - - return 0; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/main.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/main.h deleted file mode 100644 index e2e531f630..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/main.h +++ /dev/null @@ -1,10 +0,0 @@ - -#ifndef _MAIN_H_ -#define _MAIN_H_ - -#define MAX_INPUTS 8 - -extern int debug_on; -extern int log_error; - -#endif /* _MAIN_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/osd.h deleted file mode 100644 index 2ec2e2d32d..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/osd.h +++ /dev/null @@ -1,29 +0,0 @@ - -#ifndef _OSD_H_ -#define _OSD_H_ - -#include -#include -#include -#include -#include - -#include -#include - -#include "shared.h" -#include "main.h" -#include "config.h" -#include "error.h" -#include "unzip.h" -#include "fileio.h" - -#define osd_input_Update sdl_input_update - -#define GG_ROM "./ggenie.bin" -#define AR_ROM "./areplay.bin" -#define OS_ROM "./bios.bin" -#define SK_ROM "./sk.bin" -#define SK_UPMEM "./sk2chip.bin" - -#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/readme-sdl.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/readme-sdl.txt deleted file mode 100644 index 3c8eb6485a..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/readme-sdl.txt +++ /dev/null @@ -1,5 +0,0 @@ -Compile with MinGW. -You will also need to install the SDL library (http://www.libsdl.org/). -Zlib is required for zipped rom support. - -Please distribute required dlls with the executable. \ No newline at end of file diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/unzip.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/unzip.c deleted file mode 100644 index 90e8618169..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/unzip.c +++ /dev/null @@ -1,1294 +0,0 @@ -/* unzip.c -- IO on .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Read unzip.h for more info -*/ - - -#include -#include -#include -#include "zlib.h" -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else - #include -#endif - - -#ifndef local - #define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - - -#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ - !defined(CASESENSITIVITYDEFAULT_NO) -#define CASESENSITIVITYDEFAULT_NO -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (16384) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -const char unz_copyright[] = - " unzip 0.15 Copyright 1998 Gilles Vollant "; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info_internal_s -{ - uLong offset_curfile;/* relative offset of local header 4 bytes */ -} unz_file_info_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - - uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - uLong offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - uLong pos_local_extrafield; /* position in the local extra field in read*/ - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - uLong rest_read_compressed; /* number of byte to be decompressed */ - uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - FILE* file; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ -} file_in_zip_read_info_s; - - -/* unz_s contain internal information about the zipfile -*/ -typedef struct -{ - FILE* file; /* io structore of the zipfile */ - unz_global_info gi; /* public global information */ - uLong byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ - uLong num_file; /* number of the current file in the zipfile*/ - uLong pos_in_central_dir; /* pos of the current file in the central dir*/ - uLong current_file_ok; /* flag about the usability of the current file*/ - uLong central_pos; /* position of the beginning of the central dir*/ - - uLong size_central_dir; /* size of the central directory */ - uLong offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info cur_file_info; /* public info about the current file in zip*/ - unz_file_info_internal cur_file_info_internal; /* private info about it*/ - file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ -} unz_s; - - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unzlocal_getByte(fin,pi) - FILE *fin; - int *pi; -{ - unsigned char c; - int err = fread(&c, 1, 1, fin); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ferror(fin)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unzlocal_getShort (fin,pX) - FILE* fin; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unzlocal_getLong (fin,pX) - FILE* fin; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (fileName1,fileName2) - const char* fileName1; - const char* fileName2; -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) - const char* fileName1; - const char* fileName2; - int iCaseSensitivity; -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#define BUFREADCOMMENT (0x400) - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local uLong unzlocal_SearchCentralDir(fin) - FILE *fin; -{ - unsigned char* buf; - uLong uSizeFile; - uLong uBackRead; - uLong uMaxBack=0xffff; /* maximum size of global comment */ - uLong uPosFound=0; - - if (fseek(fin,0,SEEK_END) != 0) - return 0; - - - uSizeFile = ftell( fin ); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); - if (fseek(fin,uReadPos,SEEK_SET)!=0) - break; - - if (fread(buf,(uInt)uReadSize,1,fin)!=1) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer - "zlib/zlib109.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -extern unzFile ZEXPORT unzOpen (path) - const char *path; -{ - unz_s us; - unz_s *s; - uLong central_pos,uL; - FILE * fin ; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - uLong number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - fin=fopen(path,"rb"); - if (fin==NULL) - return NULL; - - central_pos = unzlocal_SearchCentralDir(fin); - if (central_pos==0) - err=UNZ_ERRNO; - - if (fseek(fin,central_pos,SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unzlocal_getLong(fin,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir */ - if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* zipfile comment length */ - if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((central_pospfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - fclose(s->file); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) - unzFile file; - unz_global_info *pglobal_info; -{ - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - - -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) - uLong ulDosDate; - tm_unz* ptm; -{ - uLong uDate; - uDate = (uLong)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info *pfile_info, - unz_file_info_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unzlocal_GetCurrentFileInfoInternal (file, - pfile_info, - pfile_info_internal, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - unz_file_info_internal *pfile_info_internal; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - unz_s* s; - unz_file_info file_info; - unz_file_info_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - { - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename0) && (fileNameBufferSize>0)) - if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - if ((err==UNZ_OK) && (extraField!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek += file_info.size_file_extra - uSizeRead; - } - else - lSeek+=file_info.size_file_extra; - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; - } - else - lSeek+=file_info.size_file_comment; - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo (file, - pfile_info, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (file) - unzFile file; -{ - int err=UNZ_OK; - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (file) - unzFile file; -{ - unz_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzipStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) - unzFile file; - const char *szFileName; - int iCaseSensitivity; -{ - unz_s* s; - int err; - - uLong num_fileSaved; - uLong pos_in_central_dirSaved; - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - unzGetCurrentFileInfo(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - return err; -} - - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, - poffset_local_extrafield, - psize_local_extrafield) - unz_s* s; - uInt* piSizeVar; - uLong *poffset_local_extrafield; - uInt *psize_local_extrafield; -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (fseek(s->file,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - { - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - - if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile (file) - unzFile file; -{ - int err=UNZ_OK; - int Store; - uInt iSizeVar; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uLong offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, - &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip_read_info_s*) - ALLOC(sizeof(file_in_zip_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if ((s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - Store = s->cur_file_info.compression_method==0; - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->compression_method = - s->cur_file_info.compression_method; - pfile_in_zip_read_info->file=s->file; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if (!Store) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=1; - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - - s->pfile_in_zip_read = pfile_in_zip_read_info; - return UNZ_OK; -} - - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile (file, buf, len) - unzFile file; - voidp buf; - unsigned len; -{ - int err=UNZ_OK; - uInt iRead = 0; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if ((pfile_in_zip_read_info->read_buffer == NULL)) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - if (len>pfile_in_zip_read_info->rest_read_uncompressed) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, - pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if (pfile_in_zip_read_info->compression_method==0) - { - uInt uDoCopy,i ; - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;istream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else - { - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) - unzFile file; - voidp buf; - unsigned len; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uInt read_now; - uLong size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzipOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (file) - unzFile file; -{ - int err=UNZ_OK; - - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised) - inflateEnd(&pfile_in_zip_read_info->stream); - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) - unzFile file; - char *szComment; - uLong uSizeBuf; -{ -/* int err=UNZ_OK; */ - unz_s* s; - uLong uReadThis ; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/unzip.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/unzip.h deleted file mode 100644 index a30f79cb44..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/unused/win/unzip.h +++ /dev/null @@ -1,273 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Copyright (C) 1998 Gilles Vollant - - This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g - WinZip, InfoZip tools and compatible. - Encryption and multi volume ZipFile (span) are not supported. - Old compressions used by old PKZip 1.x are not supported - - THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE - CAN CHANGE IN FUTURE VERSION !! - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - -/* for more info about .ZIP format, see - ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip - PkWare has also a specification at : - ftp://ftp.pkware.com/probdesc.zip */ - -#ifndef _unz_H -#define _unz_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer - "zlib/zlib111.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzipOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _unz_H */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/CHANGELOG.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/CHANGELOG.txt deleted file mode 100644 index f2b3190b6c..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/CHANGELOG.txt +++ /dev/null @@ -1,492 +0,0 @@ --------------------- -Genesis Plus History --------------------- - -All recent changes were backported from the GX version (Gamecube/Wii port), maintained by Eke-Eke. -Please look at http://code.google.com/p/genplus-gx/ for more infos. - - ---------------------------------------------------------------------------------------------------------- -[07/08/2011] version 1.6.0 (Eke-Eke) ---------------------------------------------------------------------------------------------------------- - -[Core/Sound] ---------------- -* added YM2413 emulation in Master System compatibility mode. -* fixed SN76489 noise boost initialization. -* minor YM2612 core optimizations. - -[Core/VDP] ---------------- -* added accurate emulation of SG-1000, Master System (315-5124, 315-5246) & Game Gear VDP. -* added support for all TMS9918 rendering modes. -* improved Mega Drive VDP timings accuracy in Master System Compatibility mode. -* fixed color palette initialization. -* fixed shifted sprites rendering in Mode 4. -* modified pixel rendering support (pixel depth is now forced at compilation time). - -[Core/CPU] ---------------- -* optimized 68k core (rewrote 68k interrupt handling, removed multiple CPU types support & unused code) for 5~8% speed improvment - -[Core/IO] ---------------- -* added accurate emulation of Master System (315-5216, 315-5237, 315-5297) & Game Gear I/O controllers. -* added Terebi Oekaki tablet emulation. -* improved Mouse emulation (fixes mouse support in Cannon Fodder). -* improved Justifier emulation (fixes gun support in Lethal Enforcers 2). -* improved 6-Buttons control pad emulation (fixes Duke Nukem 3D) -* modified lightgun emulation to use common key inputs for all devices. -* 2-buttons controller is now picked by default for Master System games. - -[Core/MD] ---------------- -* added copy-protection hardware emulation for some new dumped games (Tiny Toon Adventures 3, Mighty Morphin Power Rangers & The Battle of Red Cliffs). -* added Game Toshokan in EEPROM database (verified on real cartridge). -* fixed Micro Machines 2 - Turbo Tournament EEPROM size (verified on real cartridge). -* modified SRAM banswitch hardware emulation to be more compatible with some hacks. - -[Core/MS] ---------------- -* added Cyborg Z to Korean mapper database. - -[Core/GG] ---------------- -* added 93C46 EEPROM emulation (Majors Pro Baseball, World Series Baseball & World Series Baseball 95). - -[Core/General] ---------------- -* added support for .mdx ROM format. -* added Game Gear & SG-1000 ROM support. -* added accurate emulation of SG-1000, Master System (I, II) & Game Gear hardware models for 100% compatibility. -* updated to new Genesis Plus license (see http://cgfm2.emuviews.com/) -* removed DOS port -* various code cleanup. - - ---------------------------------------------------------------------------------------------------------- -[31/03/2011] version 1.5.0 (Eke-Eke) ---------------------------------------------------------------------------------------------------------- - -[Core/VDP] ---------------- -* added support for Master System compatibility mode (Z80 ports access mode), incl. Mode 5 rendering. -* added Mode 4 rendering for both Genesis & Master System modes. -* added alternate BG planes rendering functions (should be faster on PPC architectures). - -[Core/IO] ---------------- -* added support for Master System compatibility mode (Z80 ports access mode). -* added Master System peripherals emulation (Control Pad, Paddle, Sports Pad & Light Phaser). -* added XE-1AP (analog controller) emulation. -* added Activator emulation. - -[Core/Extra] ---------------- -* added support for all known Master System cartridge mappers. -* added copy-protection hardware emulation for a few MD unlicensed games: fixes 777 Casino (crash when talking to bunny girls). -(NB: most of those unlicensed games seem to have been already patched by ROM dumpers, main purpose is documenting them) -* added support for Top Shooter arcade board controller. (A=Shoot, B=Bet, C/RIGHT=Coins, START=Start, hold UP on startup to enter service mode) -* improved King of Fighters 98 mapper emulation (registers address decoding is now 100% accurate) -* fixed Game Genie when several codes affect same ROM address. -* fixed EEPROM types for Brian Lara Cricket & NBA Jam TE (verified on real cartridges) - -[Core/General] ---------------- -* added Master System compatibility mode emulation (automatically enabled when loading ROM file with .sms extension). -* improved savestate stability & compatibility (support for old 1.4.x savestates is preserved) -* various code cleanup & comments. - - ---------------------------------------------------------------------------------------------------------- -[04/12/2010] version 1.4.1 (Eke-Eke) ---------------------------------------------------------------------------------------------------------- - -[Core/Sound] ---------------- -* implemented Blargg's blip buffer in SN76489 core (all channels are now lineary interpolated) - -[Core/VDP] ---------------- -* improved 2-cell vscroll emulation accuracy, as verified on real hardware (Gynoug, Cutie Suzuki no Ringside Angel, Formula One, Kawasaki Superbike Challenge) -* improved VBLANK flag accuracy, as observed on real hardware. -* improved DMA operations accuracy, writes are now performed on a scanline basis: fixes Gaiares (flickering title screen). -* improved DMA Fill timing accuracy. -* fixed DMA with bad code values: fixes Williams Arcade Classics (corrupted gfx after soft reset). -* fixed horizontal resolution changes during HBLANK: fixes Bugs Bunny in Double Trouble (2nd stage). -* fixed Vertical Counter in interlace mode 1, as observed on real hardware. -* fixed horizontal border width, as observed on real hardware. -* various code improvments & optimizations. - -[Core/CPU] ---------------- -* fixed state of Z80 registers on reset (sound issues with Defender & Defender 2 in Williams Arcade Classics) -* implemented 68k undocumented flags behavior for DIVU/DIVS instructions (Bloodshot / Battle Frenzy) - -[Core/Extra] ---------------- -* improved emulation of copy-protection hardware found in some unlicensed cartridges (Mulan, Pocket Monsters II). -* enabled simultaneous use of multitap & J-CART (Super Skidmarks 6-player mode) -* improved savestate format: added DMA, SVP, cartridge mapping & internal registers state informations -* improved unlicensed ROM mappers emulation -* added Chinese Fighters III mapper support -* added Top Fighter mapper support -* fixed Barver Battle Saga mapper support -* fixed cartridge hardware soft-reset (Game Genie, SVP, ...) -* fixed Game Genie registers byte reads - - ----------------------------------------------------------------------------------------------------------------------------------------------------- -[06/30/10] version 1.4.0 (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -[Core/Sound] - -* completely rewrote sound processing/mixing: sound chips are now clocked with exact output framerate -to ensure 100% smooth video & audio playback, with no lag or skipping, while rendering an accurate number -of samples per frame and keeping PSG & FM chips in sync. -* improved PSG & FM chips synchronization with CPU execution (fixed point precision). -* improved YM2612 core general accuracy (SSG-EG, CSM mode,...) (based upon Nemesis recent tests on real hardware) -* improved YM2612 LFO emulation accuracy: fixes "Spider-Man & Venom : Separation Anxiety" (intro) -* fixed YM2612 bug with Timer B: fixes "Langrisser Hikari II"/"Der Langrisser II" (Sega logo) -* fixed YM2612 context saving/loading. -* fixed YM2612 state on reset. -* removed outdated & less accurate Gens YM2612 core -* added configurable YM2612 DAC resolution emulation. -* added configurable & faster FIR resampler (thanks to Blargg & AamirM), removed libsamplerate support. -* added configurable Low-Pass filtering -* added configurable 3-Band Equalizer (thanks to Neil C). -* added an option to boost SN76489 Noise Channel. -* adjusted SN76489 cut-off frequency. - - -[Core/VDP] - -* added support for CRAM writes during horizontal blanking (Striker, Zero the Kamikaze Squirrel,...) -* added support for 2-Cell vertical scrolling in Interlaced 2 mode -* added support for some undocumented mode register bits -* added proper emulation of HV Counter latch: fixes Sunset Riders intro -* added pixel-accurate emulation of mid-line display on/off (Nigel Mansell World Championship PAL, Ren & Stimpy's Invention PAL,...) -* improved FIFO timings accuracy: fixes Sol Deace intro -* improved sprite masking accuracy (thanks to Nemesis for his test program) -* improved sprites processing accuracy: fixes (un)masked sprites in Mickey Mania (3D level), Sonic 2 (VS mode). -* improved HBLANK flag timing accuracy: fixes Mega Turrican (Sky level) -* improved horizontal blanking & HINT/VINT occurence timing accuracy, as measured on real hardware. -* improved HCounter accuracy in 40-cell mode, as measured on real hardware. -* improved color accuracy in VDP highlight mode to match results observed on real hardware - - -[Core/CPU] - -* updated Z80 core to last version (fixes interrupt Mode 0 timing and some BIT instructions). -* fixed some Z80 instructions timing. -* improved Z80 interrupt accuracy -* improved 68k accuracy (initial Reset timing + auto-vectored interrupts handling). -* improved 68k timing accuracy for DIVU/DVIS (thanks to Jorge Cwik) & MULU/MULS instructions. -* improved Z80 & 68k cpu execution/synchronization accuracy by using Master Clock as common reference (now run exactly 3420 M-Cycles per line). -* modified Z80 & 68k cores to directly use external cycle count instead of intermediate counters. - - -[Core/Extra] - -* added Game Genie hardware emulation (Game Genie ROM is now fully supported). -* added Action Replay hardware emulation (Action replay ROM is now fully supported). -* added S&K "Lock-On" hardware emulation (you can "lock" any games to Sonic & Knuckles). -* added Cartridge "hot swap" feature. -* added missing EEPROM support in some games. -* added accurate TMSS emulation (VDP lock-out) -* fixed Realtec mapper emulation: fixes missing sound in Balloon Boy / Funny World. -* fixed lightgun auto-detection: fixes default cursor position in Lethal Enforcers II. -* lots of code cleanup, bugfixes & optimization. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [12/14/08] version 1.3.0 (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* YM2612 bugfixes (MAME core): - .fixed EG Decay->Substain transition when SL & DR are minimals: fix tracks #3 and #9 in "Mega Turrican" - .fixed a bug in SSG-EG emulation code: fix Level 1 music in "Alisia Dragoon" - .modified SSG-EG Decay End Level: fix some sound effects (ChainSaw, Zap...) in "Beavis & Butthead" - .improved Detune overflow accuracy: fix very high frequency sounds in many games - .fixed registers 0x20-0x26 Reset state: fix intro music in "B.O.B" - .reverted incorrect fix with KEY ON: fix "Flamethrower" sound effect in "Alien 3" and many others -* adjusted HCounter values: fixes line flickering in "Sonic 3D" bonus stage -* adjusted VINT timing: fixes hang-up in "V.R Troopers" -* improved HBLANK flag accuracy: fixes line flickering in "Gouketsuji Ichizoku" -* fixed broken Z80 access to WRAM: fixes hang-up in "Mamono Hunter Youko" -* modified JCART emulation: fixes corrupted tracks logo in "Micro Machines 2" -* added Blargg's NTSC Filters support (NTSC video artifacts emulation) -* optimized VDP rendering core, rewrote 68k interface (memory handlers, cycle execution, interrupts): greatly improved emulation speed - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [08/26/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* YM2612(MAME): fixed LFO phase update for CH3 special mode: fix sound effects in Warlock & Aladdin (thanks to AamirM) -* YM2612(MAME): fixed EG attenuation level on "KEY ON": fix Ecco 2's splash sound -* YM2612(MAME): fixed SSG-EG emulation: fix Bubba'n Stix (Track 5) and many others -* YM2612(MAME): replaced sample interpolation with libsamplerate support, High Quality mode is now more accurate -* implemented cycle-accurate HINT timings: every timing sensitive games/demos are now *finally* working fine -* fixed a bug affecting CRAM/VSRAM DMA timings -* fixed Sprite Attribute Table address mask for VRAM writes -* improved accuracy of 68k access to Z80: fix music in Pacman 2 when entering PAUSE menu -* disabled "Address Error" emulation when UMK3 hack is loaded: fix game crashing after a round ends up -* added support for some more unlicensed games: Pocket Monster, King of Fighter 98, Soul Blade (credits to Haze) -* improved Menacer emulation: fix lightgun support in Body Count & T2: The Arcade Game -* added Konami Justifier emulation: fix lightgun support in Lethal Enforcers 1 & 2 -* added Sega Mouse emulation (Populous 2, Body Count, Shangai 2, Fun'n Games, ...) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [07/16/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* adjusted (again) HINT timings: fix Double Dragon 2 (game freezed), hopefully does not break anything else -* fixed broken EEPROM support for Codemaster games -* modified input update timings: fix Dungeons & Dragons * Warriors of the Eternal Sun (thanks to Notaz) -* added support for "Ultimate Mortal Kombat Trilogy" hack (max. size supported is 10MBytes) -* added (VERY) preliminar support for PICO roms (credits to Notaz for his documentation) -* improved YM2612 emulation (credits to Nemesis for his tests on real hardware): - .implemented phase overflow emulation: improved fix for special music instrument used in Comix Zone, Flashback, Ariel, Shaq Fu... - .improved SSG-EG emulation in MAME core (also based on additional code from Alone Coder) - .improved Timers emulation accuracy - .improved Enveloppe Generator accuracy - .fixed Channel 3 CSM mode emulation - .implemented sample interpolation in MAME core to emulate the chip at original frequency (HQ YM2612 mode, from gens) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [06/01/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* improved HCounter accuracy: fix graphic glitches in "Striker (Europe)" -* improved HINT timing accuracy: fix flickering in "Zero The Kamikaze Squirrel (USA)" -* improved rendering accuracy when backdrop color is modified during HBLANK (Road Rash I/II/III) -* fixed broken Game Genie support - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/19/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* modified VINT timings a little bit: fix lockup during Desert Strike's intro -* corrected 68k interrupts handling: fix graphic glitches in Darius II/Sagaia - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/06/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* updated SVP core: fix some perspective issues in Virtua Racing (thanks to Notaz) -* added internal SAT update during VRAM Fill: fix unmasked sprites during Battletech's intro -* fixed m68k core issues with gcc 4.2.3: fix Xperts, Lemmings 2, M1 Abrams Battle Tank -* forced YM2612 Enveloppe update: fix intro music in Batman&Robin (thanks to Aamir) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/01/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* added SVP emulation: Virtua Racing is now emulated (big thanks to Notaz and TascoDeluxe) -* fixed VDP registers behaviour when VDP Mode 4 is enabled: fix Bass Masters Classic Pro, Captain Planet & The Planeeters -* corrected a bug in DMA Fill operation: fix James Pond 3, Rockman World/Megaman Willy Wars (corrupted VRAM) -* corrected typo errors in CPU cycle counters update: fix optiom screen music in "College Slam" and probably others games. -* added preliminary support of undocumented YM2612 bug: fixes soundtracks of Shaq Fu, Spiderman, Comix Zone, Ariel and some others -* added support for mappers & copy protection devices used in many unlicensed/pirate cartridges (see cart_hw.c for details) -* rewrote memory handlers for better modularity and some (little) speedup -* reduced Savestate size - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [01/07/08] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* fixed interleaved rom detection: roms with .smd extension should now work fine -* fixed a recently introduced bug in VDP registers writes: fixes bad colors in Toy Story (intro) -* updated list of games using EEPROM: added Sports Talk Baseball (internal memory check fixed) and Brian Lara Cricket -* fixed VINT flag update when VINT is disabled: fixes NCAA College Football -* adjusted DMA timings in H32 mode: fixes flickering in Out of this World, Kawasaki Superbike Challenge & Formula One -* adjusted line rendering and HBLANK timings: fixes flickering in Nigel Mansell's World Championship Racing, Deadly Moves/Power Athlete -* fixed unmapped ROM reads through Z80 Bank: fixes Zombie High (Proto) -* added support for custom ROM/RAM mapping used by Game no Kanzume Otokuyou - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [12/28/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* many sourcecode cleanup and optimization -* completely rewrote EEPROM emulation: now support all known EEPROM types (24C01-24C65) and mappers (Sega, Acclaim, EA, Codemasters) -used in a few games (now use internal game database) as external RAM. This should at least fix save support in the following games: - . NBA Jam (alternate Acclaim mapper) - . College Slam, Frank Thomas Big Hurt Baseball (24C65 type) - . NHLPA Hockey 93, Rings of Power (EA mapper) - . Micro Machines serie, Brian Lara Cricket 96/Shane Warne Cricket (Codemasters mapper) -* external RAM is now initialized to 0xFF by default: fix Micromachines 2, Dino Dini Soccer -* fixed SRAM 16-bits memory handlers: fix some Sega Sports and EA Sports games (NFL95, NBA Action 95, NHL97, NHL98,...) -* modified WRITE_xxx & READ_xxx macros for better portability and faster memory access on BIG ENDIAN platform -* completely rewrote BIG ENDIAN support in render.c and vdp.c: rendering should be a little faster -* rewrote ROM bankswitch emulation (Super Street Fighter II): ROM access are faster, using memory pointers instead of reading ROM copy from ARAM -* fixed leftmost Window/PlaneA column render and implemented Window bug (as described by Charles Mc Donald) -* improved "Sprite Limit" and "Sprite Collision" detection accuracy -* modified RGB565 Color Palette to use the full available color range (0-31;0-63) -* implemented "cycle accurate" HV Interrupt timings: fix Sesame's Street Counting Cafe, Legend of Galahad (intro) -* improved VDP access timings accuracy (added FIFO emulation): fix Double Clutch -* improved DMA timings accuracy: fix Winter Olympics (E), Arch Rivals and probably more -* fixed HCounter again: Road Rash serie (I,II,III) don't need timing hacks anymore -* fixed VCounter in Interlaced 2 mode: fix Combat Cars "VS-Mode" -* improved Interlaced 2 mode (double resolution) rendering: Sonic 2, Combat Cars ("VS-Modes") look far better -* added TMSS BIOS support (optional) -* rewrote part of the YM2162 MAME's core: fixed internal FM timers handling, removed non-YM2612 emulation code and unused multiple cpu support -* implemented "cycle accurate" FM timers & sound samples rendering -* improved Z80 Interrupt timing accuracy: fix Sonic 3 music slowdowns -* updated Z80 & 68000 cores to last MAME versions -* improved Soft Reset emulation: X-Men 2 and Eternal Champions (random character selection) now work more like on real hardware. -* added full overscan emulation (vertical & horizontal borders) for "pixel perfect" aspect ratio (tested against a real genesis) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [07/20/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* corrected TeamPlayer support: fix multiplayer in Gauntlet 4 (Sept. version), Pengo and a lot of others -* added J-Cart support: enable multiplayer in Codemasters games (Pete Sampras, Micromachines games, Super Skidmarks) -* added serial EEPROM autodetection: fix games with bad SRAM informations in header (NBA Jam TE) -* added SVP faking: display 2D graphics in Virtua Racing (the game is however still unplayable) -* added support for more internal IO registers: fixe some unlicensed games (Wisdom Tree games...) -* added preliminary support for unmapped protection device: fix some unlicensed games with special built-in hardware (Squirell King, Lion King 2...) -* added "Soft Reset" combo (in game, use L+Z triggers): this should be like pressing the RESET button on a real Genesis and this is required - in some games to enable special features or even complete the game (ex: X-Men). - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [06/21/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* added Multitap support (EA 4-Way Play and Sega Teamplayer): allowed up to four players in games supporting those peripherals -* added partial Sega Menacer lightgun support (use Analog Stick): automatically set when detecting the 6-in-1 Menacer game - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/18/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* you can now switch between FM cores without reseting the game. FM registers value are automatically restored when switching. -* removed the previous VINT timings modification because it brokes some games (Rocket Knight, Thunderforce III,...) -* added automatic Timing configuration (VDP latency, VINT timing & alternate Line Timing) at game loading, based upon specific romname detection. -This means you can still modify some of these options afterwards but they are now automatically set/unset when loading a game which need -special timing fixes. These fixes are also automatically desactivated when the current game doesn't need them. -For information, games that are actually detected and need special timings to run properly are: - .Legend of Galahad & Road Rash series (single line not rendered properly) - .Sesame Street Counting Cafe (don't boot) - .Chaos Engine/Soldiers of Fortune (graphic glitches on scrolling) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/08/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* VINT timings are now a little more accurate: fixes Sesame's Street Counting Cafe -* SN76496 MAX_OUTPUT back to normal -* modified FB_WNOISE value in SN76496 core according to John Kortink's last informations -* added support for Maxim's PSG core, same as used in SMSPLUS (it becomes the default PSG core) -* updated FM core to the latest MAME version -* corrected DAC output level (fixes voices and some special FX being too low) -* added support for Gens YM2612 (FM) core (MAME's one still remains default FM core) -* added configurable preamplification for each sound cores (see Emulator Options) -* added some other configurable sound options (boost overall volume, FM improvment for Gens YM2612) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/11/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* corrected MAX_OUTPUT value in SN76496 core: fix PSG sound (SFX) volume - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/17/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * added an option to enable alternate line rendering timing (fix single line error in Road Rash series and Legend of Galahad's Intro) - * Color RAM update now always reset color 0 to border color (fix color glitches in Mortal Kombat,...) (thanks to Noop's for the idea) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/09/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* modified HV counter tables (fix graphic glitches in Skitchin's sky, Lotus 2 Recs, Panorama Cotton, Dashin Desperados & maybe more) -* completely rewrote DMA timings emulation so that it works for all games (no more cpu freezing) -* added all DMA tranfer rates handling for each three DMA modes and added dma busy flag emulation -* modified interrupts handling on VDP register #0 and #1 writes (fix Lemmings status bar) -* added VDP RAM write latency (fix Chaos Engine/Soldier of Fortune gfx glitches) -* modified FM timers handling a bit (fix Vectorman2 music) -* corrected Sprite Limit rendering (fix Sonic 1 & Micromachines 2 title screens) -* corrected IO Registers writes (fix Decap' Attack controls, no more need for alternate input) -* corrected 6 Buttons Pad emulation (fix 6buttons detection in Mortal Kombat 3, Comix Zone and other 6-buttons compatible games) -* modified sound mixing a bit according to Generator sourcecode (FM and PSG ratios seems more correct) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [02/07/07] (Eke-Eke) ----------------------------------------------------------------------------------------------------------------------------------------------------- - -* fixed fm timers (fix missing music in Castle of Illusion, Quackshot, Undead Line, Wonderboy in Monster Lair, Cal 50, Turbo Outrun, Thundeforce 4 and maybe more) -* added complete EEPROM emulation (save support now works fine in Wonderboy5, Megaman Willy Wars, NBA Jam...) (credits to Notaz, adapted from Picodrive code) -* added preliminar dma timing emulation (fix bottom screen in Legend of Galahad) (credits to Notaz, adapted from Picodrive code) -* hack: clear Vint pending after Hint (INT level 4) acknowledge (fix Fatal Rewind) -* hack: modify read_bus16 to return a random value (fake fetch) (fix Time Killers) -* modified cpu execution timings, with more correct hblank and interrupts timing (fix ISS Deluxe, Double Dragon 2 and certainly more) (Based on Gens code) -* modified busreq mechanism: better synchro between z80 & 68k (no need to dejitter anymore) (Based on Gens code) -* added sprite collision detection (fix Strider 2) -* modified dma fill operation for big endian platform (fix Contra Hardcorps gfx garbage) - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/25/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Fixed a typo that made Z80 banked access to the VDP registers always fail. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [05/17/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Modified the rendering code to handle unaligned longword access to memory. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/20/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Modified 68000 emulator to prevent 'tas.b $mem' from writing data back - after a read (fixes Gargoyles). - * Fixed bug in 68000 emulator to swap order of words written for address - register indirect pre-decremented writes (fixes Jim Power graphics). - * Added support for 240-line displays (for Super Skidmarks). - * Rewrote part of the interrupt handling (fixes some raster effects). - * Removed sprite collision detection code (never really worked). - * Optimized sprite rendering inner loop. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [04/13/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - * Finished up memory map for VDP DMA V-bus reads. - * Fixed handling of 68000 writes to I/O chip at even addresses. - * Fixed bit 7 handling of control register in I/O chip. - * Finished up Z80 memory map. - * Added code to handle Genesis hardware lock-ups. - * Removed some faulty code from the 68000 memory map handlers. - - ----------------------------------------------------------------------------------------------------------------------------------------------------- - [03/22/03] (Charles MacDonald) ----------------------------------------------------------------------------------------------------------------------------------------------------- - - * Completed implementation of Z80 banked memory handlers. - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/README.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/README.txt deleted file mode 100644 index 52fc097d7f..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/README.txt +++ /dev/null @@ -1,130 +0,0 @@ - ---------------------------------------------------------------------------- - Genesis Plus - ---------------------------------------------------------------------------- - - based on the original version 1.3 - by Charles Mac Donald - WWW: http://cgfm2.emuviews.com - - version 1.6 - backported from Genesis Plus GX - by Eke-Eke - WWW: http://code.google.com/p/genplus-gx - - - What's New - ---------- - - see CHANGELOG.txt - - - Features - --------- - - * accurate SG-1000, Mark-III, Master System (I & II), Game Gear, Genesis & Mega Drive emulation (incl. backwards compatibility modes) - * NTSC (60Hz) & PAL (50Hz) hardware emulation - * highly accurate 68000 & Z80 CPU emulation - * highly accurate VDP emulation (all rendering modes, HBLANK, DMA, FIFO, HV interrupts, undocumented registers, display mid-line changes) - * cycle-accurate YM2612 & YM2413 emulation (FM synthesis is done at the original frequency, using FIR resampling) - * cycle-accurate chip synchronization (68000/Z80/YM2612/SN76489) - * basic hardware latency emulation (VDP/68k, Z80/68k) - * full overscan area (horizontal & vertical colored borders) emulation (optional) - * accurate TMSS model emulation incl. internal BIOS support (optional) - * Blargg's software NTSC filters support (optional) - * PICO emulation (partial) - * 2-buttons, 3-buttons & 6-buttons controllers emulation - * Sega Team Player & EA 4-Way Play multitap adapters emulation - * Sega Light Phaser, Menacer & Konami Justifier lightguns emulation - * Sega Mouse emulation - * Sega Activator emulation - * XE-1AP emulation - * Sega Paddle & Sports Pad emulation - * Terebe Oekaki emulation - * J-Cart adapter support(Micro Machines & Pete Sampras series, Super Skidmarks) - * SVP DSP emulation (Virtua Racing) - * SRAM support (up to 64kB) - * I2C (24Cxx) and MicroWire (93C46) EEPROM emulation (all known chips) - * ROM bankswitch hardware emulation (Super Street Fighter 2) - * SRAM bankswitch hardware emulation (Phantasy Star 4, Legend of Thor, Sonic the Hedgehog 3) - * emulation of banking & copy protection devices used in all known unlicensed/pirate cartridges - * emulation of all known Master System & Game Gear cartridge mappers - * native Game Genie & Action Replay hardware emulation - * Lock-On hardware emulation - * support for ROM image up to 10MB (Ultimate MK3 hack) - - - Usage - ----- - - The Windows version runs windowed in a 16-bit desktop with 48Hz sound using SDL but - without joystick support. - - - Controls - ----- - - Arrow Keys - Directional pad - A/Q,S,D,F - buttons A, B(1), C(2), START - W,X,C,V - buttons X, Y, Z, MODE if 6-buttons controller is enabled - Tab - Hard Reset - Esc - Exit program - - F2 - Toggle Fullscreen/Windowed mode - F4 - Toggle Audio (Turbo mode must be disabled first) - F6 - Toggle Turbo mode (Audio must be disabled first) - F7 - Load Savestate (game.gpz) - F8 - Save Savestate (game.gpz) - F9 - Toggle VDP mode: PAL(50hz)/NTSC(60hz) - F10 - Soft Reset - F11 - Toggle Border emulation - F12 - Toggle Player # (test only) - - - The mouse is used for lightguns, Sega Mouse, PICO & Terebi Oekaki tablet (automatically detected when loading supported game). - - A SRAM file (game.srm) is automatically saved on exit and loaded on startup. - - - Credits and Acknowlegements - --------------------------- - - Original code by Charles MacDonald - - Modified Genesis Plus GX code by Eke-Eke (http://code.google.com/p/genplus-gx ) - - The Genesis emulator authors: Bart Trzynadlowski, Steve Snake, Stef, Notaz, AamirM - - The regular people at spritesmind.net and smspower.org. - - The MAME team for the CPU and sound chip emulators. - - Maxim for his SN76489 emulator. - - Nemesis for his researches about the YM2612 and VDP. - - Notaz for his SVP emulator. - - Tasco Deluxe for his documentation of Realtec mapper. - - Haze for his reverse-engineering of most unlicensed games protection. - - Shay Green (Blargg) for his FIR Resampler & NTSC Video Filter. - - Neil C for his 3-Band EQ implementation. - - Jean-Loup Gailly and Mark Adler for their useful zip library. - - - Contact - ------- - - Eke-Eke - E-mail: ekeeke31@gmail.com - WWW: http://code.google.com/p/genplus-gx - - - Legal - ----- - - See license.txt for licensing terms. - diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/config.c deleted file mode 100644 index 812dfcff79..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/config.c +++ /dev/null @@ -1,51 +0,0 @@ - -#include "osd.h" - -t_config config; - - -void set_config_defaults(void) -{ - int i; - - /* sound options */ - config.psg_preamp = 150; - config.fm_preamp = 100; - config.hq_fm = 1; - config.psgBoostNoise = 1; - config.filter = 0; - config.low_freq = 200; - config.high_freq = 8000; - config.lg = 1.0; - config.mg = 1.0; - config.hg = 1.0; - config.lp_range = 60; - config.dac_bits = 14; - config.ym2413 = 2; /* = AUTO (0 = always OFF, 1 = always ON) */ - - /* system options */ - config.system = 0; /* = AUTO (or SYSTEM_SG, SYSTEM_MARKIII, SYSTEM_SMS, SYSTEM_SMS2, SYSTEM_GG, SYSTEM_MD) */ - config.region_detect = 0; /* = AUTO (1 = USA, 2 = EUROPE, 3 = JAPAN/NTSC, 4 = JAPAN/PAL) */ - config.vdp_mode = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ - config.master_clock = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ - config.force_dtack = 0; - config.addr_error = 1; - config.bios = 0; - config.lock_on = 0; /* = OFF (can be TYPE_SK, TYPE_GG & TYPE_AR) */ - - /* display options */ - config.overscan = 0; /* 3 = all borders (0 = no borders , 1 = vertical borders only, 2 = horizontal borders only) */ - config.gg_extra = 0; /* 1 = show extended Game Gear screen (256x192) */ - config.render = 0; /* 1 = double resolution output (only when interlaced mode 2 is enabled) */ - - /* controllers options */ - input.system[0] = SYSTEM_MD_GAMEPAD; - input.system[1] = SYSTEM_MD_GAMEPAD; - config.gun_cursor[0] = 1; - config.gun_cursor[1] = 1; - config.invert_mouse = 0; - for (i=0;i - -static int check_zip(char *filename); - -int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension) -{ - int size = 0; - - if(check_zip(filename)) - { - unz_file_info info; - int ret = 0; - char fname[256]; - - /* Attempt to open the archive */ - unzFile *fd = unzOpen(filename); - if (!fd) return 0; - - /* Go to first file in archive */ - ret = unzGoToFirstFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Get file informations and update filename */ - ret = unzGetCurrentFileInfo(fd, &info, fname, 256, NULL, 0, NULL, 0); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Compressed filename extension */ - if (extension) - { - strncpy(extension, &fname[strlen(fname) - 3], 3); - extension[3] = 0; - } - - /* Open the file for reading */ - ret = unzOpenCurrentFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Retrieve uncompressed file size */ - size = info.uncompressed_size; - if(size > maxsize) - { - size = maxsize; - } - - /* Read (decompress) the file */ - ret = unzReadCurrentFile(fd, buffer, size); - if(ret != size) - { - unzCloseCurrentFile(fd); - unzClose(fd); - return 0; - } - - /* Close the current file */ - ret = unzCloseCurrentFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Close the archive */ - ret = unzClose(fd); - if(ret != UNZ_OK) return 0; - } - else - { - /* Open file */ - gzFile *gd = gzopen(filename, "rb"); - if (!gd) return 0; - - /* Read file data */ - size = gzread(gd, buffer, maxsize); - - /* filename extension */ - if (extension) - { - strncpy(extension, &filename[strlen(filename) - 3], 3); - extension[3] = 0; - } - - /* Close file */ - gzclose(gd); - } - - /* Return loaded ROM size */ - return size; -} - -/* - Verifies if a file is a ZIP archive or not. - Returns: 1= ZIP archive, 0= not a ZIP archive -*/ -static int check_zip(char *filename) -{ - uint8 buf[2]; - FILE *fd = fopen(filename, "rb"); - if(!fd) return (0); - fread(buf, 2, 1, fd); - fclose(fd); - if(memcmp(buf, "PK", 2) == 0) return (1); - return (0); -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/fileio.h deleted file mode 100644 index 30db2e0ec4..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/fileio.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * fileio.c - * - * Load a normal file, or ZIP/GZ archive. - * Returns loaded ROM size (zero if an error occured) - * - * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald - * modified by Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _FILEIO_H_ -#define _FILEIO_H_ - -/* Function prototypes */ -extern int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension); - -#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/icon.rc b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/icon.rc deleted file mode 100644 index 0b47594d50..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/icon.rc +++ /dev/null @@ -1 +0,0 @@ -MAINICON ICON "md.ico" diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/main.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/main.c deleted file mode 100644 index 1b867e1cab..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/main.c +++ /dev/null @@ -1,934 +0,0 @@ -#ifdef __WIN32__ -#include -#else -#define MessageBox(owner, text, caption, type) printf("%s: %s\n", caption, text) -#endif - -#include "SDL.h" -#include "SDL_thread.h" - -#include "shared.h" -#include "sms_ntsc.h" -#include "md_ntsc.h" - -#define SOUND_FREQUENCY 48000 -#define SOUND_SAMPLES_SIZE 2048 - -#define VIDEO_WIDTH 320 -#define VIDEO_HEIGHT 240 - -int joynum = 0; - -int log_error = 0; -int debug_on = 0; -int turbo_mode = 0; -int use_sound = 1; -int fullscreen = 0; /* SDL_FULLSCREEN */ - -/* sound */ - -struct { - char* current_pos; - char* buffer; - int current_emulated_samples; -} sdl_sound; - - -static uint8 brm_format[0x40] = -{ - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x00,0x00,0x00,0x00,0x40, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x53,0x45,0x47,0x41,0x5f,0x43,0x44,0x5f,0x52,0x4f,0x4d,0x00,0x01,0x00,0x00,0x00, - 0x52,0x41,0x4d,0x5f,0x43,0x41,0x52,0x54,0x52,0x49,0x44,0x47,0x45,0x5f,0x5f,0x5f -}; - - -static short soundframe[SOUND_SAMPLES_SIZE]; - -static void sdl_sound_callback(void *userdata, Uint8 *stream, int len) -{ - if(sdl_sound.current_emulated_samples < len) { - memset(stream, 0, len); - } - else { - memcpy(stream, sdl_sound.buffer, len); - /* loop to compensate desync */ - do { - sdl_sound.current_emulated_samples -= len; - } while(sdl_sound.current_emulated_samples > 2 * len); - memcpy(sdl_sound.buffer, - sdl_sound.current_pos - sdl_sound.current_emulated_samples, - sdl_sound.current_emulated_samples); - sdl_sound.current_pos = sdl_sound.buffer + sdl_sound.current_emulated_samples; - } -} - -static int sdl_sound_init() -{ - int n; - SDL_AudioSpec as_desired, as_obtained; - - if(SDL_Init(SDL_INIT_AUDIO) < 0) { - MessageBox(NULL, "SDL Audio initialization failed", "Error", 0); - return 0; - } - - as_desired.freq = SOUND_FREQUENCY; - as_desired.format = AUDIO_S16LSB; - as_desired.channels = 2; - as_desired.samples = SOUND_SAMPLES_SIZE; - as_desired.callback = sdl_sound_callback; - - if(SDL_OpenAudio(&as_desired, &as_obtained) == -1) { - MessageBox(NULL, "SDL Audio open failed", "Error", 0); - return 0; - } - - if(as_desired.samples != as_obtained.samples) { - MessageBox(NULL, "SDL Audio wrong setup", "Error", 0); - return 0; - } - - sdl_sound.current_emulated_samples = 0; - n = SOUND_SAMPLES_SIZE * 2 * sizeof(short) * 20; - sdl_sound.buffer = (char*)malloc(n); - if(!sdl_sound.buffer) { - MessageBox(NULL, "Can't allocate audio buffer", "Error", 0); - return 0; - } - memset(sdl_sound.buffer, 0, n); - sdl_sound.current_pos = sdl_sound.buffer; - return 1; -} - -static void sdl_sound_update(enabled) -{ - int size = audio_update(soundframe) * 2; - - if (enabled) - { - int i; - short *out; - - SDL_LockAudio(); - out = (short*)sdl_sound.current_pos; - for(i = 0; i < size; i++) - { - *out++ = soundframe[i]; - } - sdl_sound.current_pos = (char*)out; - sdl_sound.current_emulated_samples += size * sizeof(short); - SDL_UnlockAudio(); - } -} - -static void sdl_sound_close() -{ - SDL_PauseAudio(1); - SDL_CloseAudio(); - if (sdl_sound.buffer) - free(sdl_sound.buffer); -} - -/* video */ -md_ntsc_t *md_ntsc; -sms_ntsc_t *sms_ntsc; - -struct { - SDL_Surface* surf_screen; - SDL_Surface* surf_bitmap; - SDL_Rect srect; - SDL_Rect drect; - Uint32 frames_rendered; -} sdl_video; - -static int sdl_video_init() -{ - if(SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { - MessageBox(NULL, "SDL Video initialization failed", "Error", 0); - return 0; - } - sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); - sdl_video.surf_bitmap = SDL_CreateRGBSurface(SDL_SWSURFACE, 720, 576, 16, 0, 0, 0, 0); - sdl_video.frames_rendered = 0; - SDL_ShowCursor(0); - return 1; -} - -static void sdl_video_update() -{ - if (system_hw == SYSTEM_MCD) - { - system_frame_scd(0); - } - else if ((system_hw & SYSTEM_PBC) == SYSTEM_MD) - { - system_frame_gen(0); - } - else - { - system_frame_sms(0); - } - - /* viewport size changed */ - if(bitmap.viewport.changed & 1) - { - bitmap.viewport.changed &= ~1; - - /* source bitmap */ - sdl_video.srect.w = bitmap.viewport.w+2*bitmap.viewport.x; - sdl_video.srect.h = bitmap.viewport.h+2*bitmap.viewport.y; - sdl_video.srect.x = 0; - sdl_video.srect.y = 0; - if (sdl_video.srect.w > VIDEO_WIDTH) - { - sdl_video.srect.x = (sdl_video.srect.w - VIDEO_WIDTH) / 2; - sdl_video.srect.w = VIDEO_WIDTH; - } - if (sdl_video.srect.h > VIDEO_HEIGHT) - { - sdl_video.srect.y = (sdl_video.srect.h - VIDEO_HEIGHT) / 2; - sdl_video.srect.h = VIDEO_HEIGHT; - } - - /* destination bitmap */ - sdl_video.drect.w = sdl_video.srect.w; - sdl_video.drect.h = sdl_video.srect.h; - sdl_video.drect.x = (VIDEO_WIDTH - sdl_video.drect.w) / 2; - sdl_video.drect.y = (VIDEO_HEIGHT - sdl_video.drect.h) / 2; - - /* clear destination surface */ - SDL_FillRect(sdl_video.surf_screen, 0, 0); - -#if 0 - if (config.render && (interlaced || config.ntsc)) rect.h *= 2; - if (config.ntsc) rect.w = (reg[12]&1) ? MD_NTSC_OUT_WIDTH(rect.w) : SMS_NTSC_OUT_WIDTH(rect.w); - if (config.ntsc) - { - sms_ntsc = (sms_ntsc_t *)malloc(sizeof(sms_ntsc_t)); - md_ntsc = (md_ntsc_t *)malloc(sizeof(md_ntsc_t)); - - switch (config.ntsc) - { - case 1: - sms_ntsc_init(sms_ntsc, &sms_ntsc_composite); - md_ntsc_init(md_ntsc, &md_ntsc_composite); - break; - case 2: - sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo); - md_ntsc_init(md_ntsc, &md_ntsc_svideo); - break; - case 3: - sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb); - md_ntsc_init(md_ntsc, &md_ntsc_rgb); - break; - } - } - else - { - if (sms_ntsc) - { - free(sms_ntsc); - sms_ntsc = NULL; - } - - if (md_ntsc) - { - free(md_ntsc); - md_ntsc = NULL; - } - } -#endif - } - - SDL_BlitSurface(sdl_video.surf_bitmap, &sdl_video.srect, sdl_video.surf_screen, &sdl_video.drect); - SDL_UpdateRect(sdl_video.surf_screen, 0, 0, 0, 0); - - ++sdl_video.frames_rendered; -} - -static void sdl_video_close() -{ - if (sdl_video.surf_bitmap) - SDL_FreeSurface(sdl_video.surf_bitmap); - if (sdl_video.surf_screen) - SDL_FreeSurface(sdl_video.surf_screen); -} - -/* Timer Sync */ - -struct { - SDL_sem* sem_sync; - unsigned ticks; -} sdl_sync; - -static Uint32 sdl_sync_timer_callback(Uint32 interval) -{ - SDL_SemPost(sdl_sync.sem_sync); - sdl_sync.ticks++; - if (sdl_sync.ticks == (vdp_pal ? 50 : 20)) - { - SDL_Event event; - SDL_UserEvent userevent; - - userevent.type = SDL_USEREVENT; - userevent.code = vdp_pal ? (sdl_video.frames_rendered / 3) : sdl_video.frames_rendered; - userevent.data1 = NULL; - userevent.data2 = NULL; - sdl_sync.ticks = sdl_video.frames_rendered = 0; - - event.type = SDL_USEREVENT; - event.user = userevent; - - SDL_PushEvent(&event); - } - return interval; -} - -static int sdl_sync_init() -{ - if(SDL_InitSubSystem(SDL_INIT_TIMER|SDL_INIT_EVENTTHREAD) < 0) - { - MessageBox(NULL, "SDL Timer initialization failed", "Error", 0); - return 0; - } - - sdl_sync.sem_sync = SDL_CreateSemaphore(0); - sdl_sync.ticks = 0; - return 1; -} - -static void sdl_sync_close() -{ - if(sdl_sync.sem_sync) - SDL_DestroySemaphore(sdl_sync.sem_sync); -} - -static const uint16 vc_table[4][2] = -{ - /* NTSC, PAL */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0xEA , 0x102}, /* Mode 5 (224 lines) */ - {0xDA , 0xF2}, /* Mode 4 (192 lines) */ - {0x106, 0x10A} /* Mode 5 (240 lines) */ -}; - -static int sdl_control_update(SDLKey keystate) -{ - switch (keystate) - { - case SDLK_TAB: - { - system_reset(); - break; - } - - case SDLK_F1: - { - if (SDL_ShowCursor(-1)) SDL_ShowCursor(0); - else SDL_ShowCursor(1); - break; - } - - case SDLK_F2: - { - if (fullscreen) fullscreen = 0; - else fullscreen = SDL_FULLSCREEN; - sdl_video.surf_screen = SDL_SetVideoMode(VIDEO_WIDTH, VIDEO_HEIGHT, 16, SDL_SWSURFACE | fullscreen); - break; - } - - case SDLK_F3: - { - if (config.bios == 0) config.bios = 3; - else if (config.bios == 3) config.bios = 1; - break; - } - - case SDLK_F4: - { - if (!turbo_mode) use_sound ^= 1; - break; - } - - case SDLK_F5: - { - log_error ^= 1; - break; - } - - case SDLK_F6: - { - if (!use_sound) - { - turbo_mode ^=1; - sdl_sync.ticks = 0; - } - break; - } - - case SDLK_F7: - { - FILE *f = fopen("game.gp0","rb"); - if (f) - { - uint8 buf[STATE_SIZE]; - fread(&buf, STATE_SIZE, 1, f); - state_load(buf); - fclose(f); - } - break; - } - - case SDLK_F8: - { - FILE *f = fopen("game.gp0","wb"); - if (f) - { - uint8 buf[STATE_SIZE]; - int len = state_save(buf); - fwrite(&buf, len, 1, f); - fclose(f); - } - break; - } - - case SDLK_F9: - { - config.region_detect = (config.region_detect + 1) % 5; - get_region(0); - - /* framerate has changed, reinitialize audio timings */ - audio_init(snd.sample_rate, 0); - - /* system with region BIOS should be reinitialized */ - if ((system_hw == SYSTEM_MCD) || ((system_hw & SYSTEM_SMS) && (config.bios & 1))) - { - system_init(); - system_reset(); - } - else - { - /* reinitialize I/O region register */ - if (system_hw == SYSTEM_MD) - { - io_reg[0x00] = 0x20 | region_code | (config.bios & 1); - } - else - { - io_reg[0x00] = 0x80 | (region_code >> 1); - } - - /* reinitialize VDP */ - if (vdp_pal) - { - status |= 1; - lines_per_frame = 313; - } - else - { - status &= ~1; - lines_per_frame = 262; - } - - /* reinitialize VC max value */ - switch (bitmap.viewport.h) - { - case 192: - vc_max = vc_table[0][vdp_pal]; - break; - case 224: - vc_max = vc_table[1][vdp_pal]; - break; - case 240: - vc_max = vc_table[3][vdp_pal]; - break; - } - } - break; - } - - case SDLK_F10: - { - gen_reset(0); - break; - } - - case SDLK_F11: - { - config.overscan = (config.overscan + 1) & 3; - if ((system_hw == SYSTEM_GG) && !config.gg_extra) - { - bitmap.viewport.x = (config.overscan & 2) ? 14 : -48; - } - else - { - bitmap.viewport.x = (config.overscan & 2) * 7; - } - bitmap.viewport.changed = 3; - break; - } - - case SDLK_F12: - { - joynum = (joynum + 1) % MAX_DEVICES; - while (input.dev[joynum] == NO_DEVICE) - { - joynum = (joynum + 1) % MAX_DEVICES; - } - break; - } - - case SDLK_ESCAPE: - { - return 0; - } - - default: - break; - } - - return 1; -} - -int sdl_input_update(void) -{ - uint8 *keystate = SDL_GetKeyState(NULL); - - /* reset input */ - input.pad[joynum] = 0; - - switch (input.dev[joynum]) - { - case DEVICE_LIGHTGUN: - { - /* get mouse coordinates (absolute values) */ - int x,y; - int state = SDL_GetMouseState(&x,&y); - - /* X axis */ - input.analog[joynum][0] = x - (VIDEO_WIDTH-bitmap.viewport.w)/2; - - /* Y axis */ - input.analog[joynum][1] = y - (VIDEO_HEIGHT-bitmap.viewport.h)/2; - - /* TRIGGER, B, C (Menacer only), START (Menacer & Justifier only) */ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_A; - if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_B; - if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_C; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; - break; - } - - case DEVICE_PADDLE: - { - /* get mouse (absolute values) */ - int x; - int state = SDL_GetMouseState(&x, NULL); - - /* Range is [0;256], 128 being middle position */ - input.analog[joynum][0] = x * 256 /VIDEO_WIDTH; - - /* Button I -> 0 0 0 0 0 0 0 I*/ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; - - break; - } - - case DEVICE_SPORTSPAD: - { - /* get mouse (relative values) */ - int x,y; - int state = SDL_GetRelativeMouseState(&x,&y); - - /* Range is [0;256] */ - input.analog[joynum][0] = (unsigned char)(-x & 0xFF); - input.analog[joynum][1] = (unsigned char)(-y & 0xFF); - - /* Buttons I & II -> 0 0 0 0 0 0 II I*/ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; - if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; - - break; - } - - case DEVICE_MOUSE: - { - /* get mouse (relative values) */ - int x,y; - int state = SDL_GetRelativeMouseState(&x,&y); - - /* Sega Mouse range is [-256;+256] */ - input.analog[joynum][0] = x * 2; - input.analog[joynum][1] = y * 2; - - /* Vertical movement is upsidedown */ - if (!config.invert_mouse) - input.analog[joynum][1] = 0 - input.analog[joynum][1]; - - /* Start,Left,Right,Middle buttons -> 0 0 0 0 START MIDDLE RIGHT LEFT */ - if(state & SDL_BUTTON_LMASK) input.pad[joynum] |= INPUT_B; - if(state & SDL_BUTTON_RMASK) input.pad[joynum] |= INPUT_C; - if(state & SDL_BUTTON_MMASK) input.pad[joynum] |= INPUT_A; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; - - break; - } - - case DEVICE_XE_A1P: - { - /* A,B,C,D,Select,START,E1,E2 buttons -> E1(?) E2(?) START SELECT(?) A B C D */ - if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_START; - if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_A; - if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_Y; - if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_B; - if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_X; - if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_MODE; - if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_Z; - - /* Left Analog Stick (bidirectional) */ - if(keystate[SDLK_UP]) input.analog[joynum][1]-=2; - else if(keystate[SDLK_DOWN]) input.analog[joynum][1]+=2; - else input.analog[joynum][1] = 128; - if(keystate[SDLK_LEFT]) input.analog[joynum][0]-=2; - else if(keystate[SDLK_RIGHT]) input.analog[joynum][0]+=2; - else input.analog[joynum][0] = 128; - - /* Right Analog Stick (unidirectional) */ - if(keystate[SDLK_KP8]) input.analog[joynum+1][0]-=2; - else if(keystate[SDLK_KP2]) input.analog[joynum+1][0]+=2; - else if(keystate[SDLK_KP4]) input.analog[joynum+1][0]-=2; - else if(keystate[SDLK_KP6]) input.analog[joynum+1][0]+=2; - else input.analog[joynum+1][0] = 128; - - /* Limiters */ - if (input.analog[joynum][0] > 0xFF) input.analog[joynum][0] = 0xFF; - else if (input.analog[joynum][0] < 0) input.analog[joynum][0] = 0; - if (input.analog[joynum][1] > 0xFF) input.analog[joynum][1] = 0xFF; - else if (input.analog[joynum][1] < 0) input.analog[joynum][1] = 0; - if (input.analog[joynum+1][0] > 0xFF) input.analog[joynum+1][0] = 0xFF; - else if (input.analog[joynum+1][0] < 0) input.analog[joynum+1][0] = 0; - if (input.analog[joynum+1][1] > 0xFF) input.analog[joynum+1][1] = 0xFF; - else if (input.analog[joynum+1][1] < 0) input.analog[joynum+1][1] = 0; - - break; - } - - case DEVICE_PICO: - { - /* get mouse (absolute values) */ - int x,y; - int state = SDL_GetMouseState(&x,&y); - - /* Calculate X Y axis values */ - input.analog[0][0] = 0x3c + (x * (0x17c-0x03c+1)) / VIDEO_WIDTH; - input.analog[0][1] = 0x1fc + (y * (0x2f7-0x1fc+1)) / VIDEO_HEIGHT; - - /* Map mouse buttons to player #1 inputs */ - if(state & SDL_BUTTON_MMASK) pico_current = (pico_current + 1) & 7; - if(state & SDL_BUTTON_RMASK) input.pad[0] |= INPUT_PICO_RED; - if(state & SDL_BUTTON_LMASK) input.pad[0] |= INPUT_PICO_PEN; - - break; - } - - case DEVICE_TEREBI: - { - /* get mouse (absolute values) */ - int x,y; - int state = SDL_GetMouseState(&x,&y); - - /* Calculate X Y axis values */ - input.analog[0][0] = (x * 250) / VIDEO_WIDTH; - input.analog[0][1] = (y * 250) / VIDEO_HEIGHT; - - /* Map mouse buttons to player #1 inputs */ - if(state & SDL_BUTTON_RMASK) input.pad[0] |= INPUT_B; - - break; - } - - case DEVICE_ACTIVATOR: - { - if(keystate[SDLK_g]) input.pad[joynum] |= INPUT_ACTIVATOR_7L; - if(keystate[SDLK_h]) input.pad[joynum] |= INPUT_ACTIVATOR_7U; - if(keystate[SDLK_j]) input.pad[joynum] |= INPUT_ACTIVATOR_8L; - if(keystate[SDLK_k]) input.pad[joynum] |= INPUT_ACTIVATOR_8U; - } - - default: - { - if(keystate[SDLK_a]) input.pad[joynum] |= INPUT_A; - if(keystate[SDLK_s]) input.pad[joynum] |= INPUT_B; - if(keystate[SDLK_d]) input.pad[joynum] |= INPUT_C; - if(keystate[SDLK_f]) input.pad[joynum] |= INPUT_START; - if(keystate[SDLK_z]) input.pad[joynum] |= INPUT_X; - if(keystate[SDLK_x]) input.pad[joynum] |= INPUT_Y; - if(keystate[SDLK_c]) input.pad[joynum] |= INPUT_Z; - if(keystate[SDLK_v]) input.pad[joynum] |= INPUT_MODE; - - if(keystate[SDLK_UP]) input.pad[joynum] |= INPUT_UP; - else - if(keystate[SDLK_DOWN]) input.pad[joynum] |= INPUT_DOWN; - if(keystate[SDLK_LEFT]) input.pad[joynum] |= INPUT_LEFT; - else - if(keystate[SDLK_RIGHT]) input.pad[joynum] |= INPUT_RIGHT; - - break; - } - } - return 1; -} - - -int main (int argc, char **argv) -{ - FILE *fp; - int running = 1; - - /* Print help if no game specified */ - if(argc < 2) - { - char caption[256]; - sprintf(caption, "Genesis Plus GX\\SDL\nusage: %s gamename\n", argv[0]); - MessageBox(NULL, caption, "Information", 0); - exit(1); - } - - /* set default config */ - error_init(); - set_config_defaults(); - - /* mark all BIOS as unloaded */ - system_bios = 0; - - /* Genesis BOOT ROM support (2KB max) */ - memset(boot_rom, 0xFF, 0x800); - fp = fopen(MD_BIOS, "rb"); - if (fp != NULL) - { - int i; - - /* read BOOT ROM */ - fread(boot_rom, 1, 0x800, fp); - fclose(fp); - - /* check BOOT ROM */ - if (!memcmp((char *)(boot_rom + 0x120),"GENESIS OS", 10)) - { - /* mark Genesis BIOS as loaded */ - system_bios = SYSTEM_MD; - } - - /* Byteswap ROM */ - for (i=0; i<0x800; i+=2) - { - uint8 temp = boot_rom[i]; - boot_rom[i] = boot_rom[i+1]; - boot_rom[i+1] = temp; - } - } - - /* initialize SDL */ - if(SDL_Init(0) < 0) - { - char caption[256]; - sprintf(caption, "SDL initialization failed"); - MessageBox(NULL, caption, "Error", 0); - exit(1); - } - sdl_video_init(); - if (use_sound) sdl_sound_init(); - sdl_sync_init(); - - /* initialize Genesis virtual system */ - SDL_LockSurface(sdl_video.surf_bitmap); - memset(&bitmap, 0, sizeof(t_bitmap)); - bitmap.width = 720; - bitmap.height = 576; -#if defined(USE_8BPP_RENDERING) - bitmap.pitch = (bitmap.width * 1); -#elif defined(USE_15BPP_RENDERING) - bitmap.pitch = (bitmap.width * 2); -#elif defined(USE_16BPP_RENDERING) - bitmap.pitch = (bitmap.width * 2); -#elif defined(USE_32BPP_RENDERING) - bitmap.pitch = (bitmap.width * 4); -#endif - bitmap.data = sdl_video.surf_bitmap->pixels; - SDL_UnlockSurface(sdl_video.surf_bitmap); - bitmap.viewport.changed = 3; - - /* Load game file */ - if(!load_rom(argv[1])) - { - char caption[256]; - sprintf(caption, "Error loading file `%s'.", argv[1]); - MessageBox(NULL, caption, "Error", 0); - exit(1); - } - - /* initialize system hardware */ - audio_init(SOUND_FREQUENCY, 0); - system_init(); - - /* Mega CD specific */ - if (system_hw == SYSTEM_MCD) - { - /* load internal backup RAM */ - fp = fopen("./scd.brm", "rb"); - if (fp!=NULL) - { - fread(scd.bram, 0x2000, 1, fp); - fclose(fp); - } - - /* check if internal backup RAM is formatted */ - if (memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) - { - /* clear internal backup RAM */ - memset(scd.bram, 0x00, 0x200); - - /* Internal Backup RAM size fields */ - brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00; - brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (sizeof(scd.bram) / 64) - 3; - - /* format internal backup RAM */ - memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40); - } - - /* load cartridge backup RAM */ - if (scd.cartridge.id) - { - fp = fopen("./cart.brm", "rb"); - if (fp!=NULL) - { - fread(scd.cartridge.area, scd.cartridge.mask + 1, 1, fp); - fclose(fp); - } - - /* check if cartridge backup RAM is formatted */ - if (memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) - { - /* clear cartridge backup RAM */ - memset(scd.cartridge.area, 0x00, scd.cartridge.mask + 1); - - /* Cartridge Backup RAM size fields */ - brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = (((scd.cartridge.mask + 1) / 64) - 3) >> 8; - brm_format[0x11] = brm_format[0x13] = brm_format[0x15] = brm_format[0x17] = (((scd.cartridge.mask + 1) / 64) - 3) & 0xff; - - /* format cartridge backup RAM */ - memcpy(scd.cartridge.area + scd.cartridge.mask + 1 - sizeof(brm_format), brm_format, sizeof(brm_format)); - } - } - } - - if (sram.on) - { - /* load SRAM */ - fp = fopen("./game.srm", "rb"); - if (fp!=NULL) - { - fread(sram.sram,0x10000,1, fp); - fclose(fp); - } - } - - /* reset system hardware */ - system_reset(); - - if(use_sound) SDL_PauseAudio(0); - - /* 3 frames = 50 ms (60hz) or 60 ms (50hz) */ - if(sdl_sync.sem_sync) - SDL_SetTimer(vdp_pal ? 60 : 50, sdl_sync_timer_callback); - - /* emulation loop */ - while(running) - { - SDL_Event event; - if (SDL_PollEvent(&event)) - { - switch(event.type) - { - case SDL_USEREVENT: - { - char caption[100]; - sprintf(caption,"Genesis Plus GX - %d fps - %s)", event.user.code, (rominfo.international[0] != 0x20) ? rominfo.international : rominfo.domestic); - SDL_WM_SetCaption(caption, NULL); - break; - } - - case SDL_QUIT: - { - running = 0; - break; - } - - case SDL_KEYDOWN: - { - running = sdl_control_update(event.key.keysym.sym); - break; - } - } - } - - sdl_video_update(); - sdl_sound_update(use_sound); - - if(!turbo_mode && sdl_sync.sem_sync && sdl_video.frames_rendered % 3 == 0) - { - SDL_SemWait(sdl_sync.sem_sync); - } - } - - if (system_hw == SYSTEM_MCD) - { - /* save internal backup RAM (if formatted) */ - if (!memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20)) - { - fp = fopen("./scd.brm", "wb"); - if (fp!=NULL) - { - fwrite(scd.bram, 0x2000, 1, fp); - fclose(fp); - } - } - - /* save cartridge backup RAM (if formatted) */ - if (scd.cartridge.id) - { - if (!memcmp(scd.cartridge.area + scd.cartridge.mask + 1 - 0x20, brm_format + 0x20, 0x20)) - { - fp = fopen("./cart.brm", "wb"); - if (fp!=NULL) - { - fwrite(scd.cartridge.area, scd.cartridge.mask + 1, 1, fp); - fclose(fp); - } - } - } - } - - if (sram.on) - { - /* save SRAM */ - fp = fopen("./game.srm", "wb"); - if (fp!=NULL) - { - fwrite(sram.sram,0x10000,1, fp); - fclose(fp); - } - } - - audio_shutdown(); - error_shutdown(); - - sdl_video_close(); - sdl_sound_close(); - sdl_sync_close(); - SDL_Quit(); - - return 0; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/main.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/main.h deleted file mode 100644 index dfa5d8d52e..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/main.h +++ /dev/null @@ -1,11 +0,0 @@ - -#ifndef _MAIN_H_ -#define _MAIN_H_ - -#define MAX_INPUTS 8 - -extern int debug_on; -extern int log_error; -extern int sdl_input_update(void); - -#endif /* _MAIN_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/osd.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/osd.h deleted file mode 100644 index ad95a52b00..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/osd.h +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef _OSD_H_ -#define _OSD_H_ - -#include -#include -#include -#include - -#include -#include - -#include "shared.h" -#include "main.h" -#include "config.h" -#include "error.h" -#include "unzip.h" -#include "fileio.h" - -#define osd_input_update sdl_input_update - -#define GG_ROM "./ggenie.bin" -#define AR_ROM "./areplay.bin" -#define SK_ROM "./sk.bin" -#define SK_UPMEM "./sk2chip.bin" -#define CD_BIOS_US "./bios_CD_U.bin" -#define CD_BIOS_EU "./bios_CD_E.bin" -#define CD_BIOS_JP "./bios_CD_J.bin" -#define MD_BIOS "./bios_MD.bin" -#define MS_BIOS_US "./bios_U.sms" -#define MS_BIOS_EU "./bios_E.sms" -#define MS_BIOS_JP "./bios_J.sms" -#define GG_BIOS "./bios.gg" - -#endif /* _OSD_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/readme-sdl.txt b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/readme-sdl.txt deleted file mode 100644 index 3c8eb6485a..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/readme-sdl.txt +++ /dev/null @@ -1,5 +0,0 @@ -Compile with MinGW. -You will also need to install the SDL library (http://www.libsdl.org/). -Zlib is required for zipped rom support. - -Please distribute required dlls with the executable. \ No newline at end of file diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/unzip.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/unzip.c deleted file mode 100644 index ef52bc6269..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/unzip.c +++ /dev/null @@ -1,1294 +0,0 @@ -/* unzip.c -- IO on .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Read unzip.h for more info -*/ - - -#include -#include -#include -#include -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else - #include -#endif - - -#ifndef local - #define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - - -#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ - !defined(CASESENSITIVITYDEFAULT_NO) -#define CASESENSITIVITYDEFAULT_NO -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (16384) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -const char unz_copyright[] = - " unzip 0.15 Copyright 1998 Gilles Vollant "; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info_internal_s -{ - uLong offset_curfile;/* relative offset of local header 4 bytes */ -} unz_file_info_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - - uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - uLong offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - uLong pos_local_extrafield; /* position in the local extra field in read*/ - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - uLong rest_read_compressed; /* number of byte to be decompressed */ - uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - FILE* file; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ -} file_in_zip_read_info_s; - - -/* unz_s contain internal information about the zipfile -*/ -typedef struct -{ - FILE* file; /* io structore of the zipfile */ - unz_global_info gi; /* public global information */ - uLong byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ - uLong num_file; /* number of the current file in the zipfile*/ - uLong pos_in_central_dir; /* pos of the current file in the central dir*/ - uLong current_file_ok; /* flag about the usability of the current file*/ - uLong central_pos; /* position of the beginning of the central dir*/ - - uLong size_central_dir; /* size of the central directory */ - uLong offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info cur_file_info; /* public info about the current file in zip*/ - unz_file_info_internal cur_file_info_internal; /* private info about it*/ - file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ -} unz_s; - - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unzlocal_getByte(fin,pi) - FILE *fin; - int *pi; -{ - unsigned char c; - int err = fread(&c, 1, 1, fin); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ferror(fin)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unzlocal_getShort (fin,pX) - FILE* fin; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unzlocal_getLong (fin,pX) - FILE* fin; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (fileName1,fileName2) - const char* fileName1; - const char* fileName2; -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) - const char* fileName1; - const char* fileName2; - int iCaseSensitivity; -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#define BUFREADCOMMENT (0x400) - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local uLong unzlocal_SearchCentralDir(fin) - FILE *fin; -{ - unsigned char* buf; - uLong uSizeFile; - uLong uBackRead; - uLong uMaxBack=0xffff; /* maximum size of global comment */ - uLong uPosFound=0; - - if (fseek(fin,0,SEEK_END) != 0) - return 0; - - - uSizeFile = ftell( fin ); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); - if (fseek(fin,uReadPos,SEEK_SET)!=0) - break; - - if (fread(buf,(uInt)uReadSize,1,fin)!=1) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer - "zlib/zlib109.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -extern unzFile ZEXPORT unzOpen (path) - const char *path; -{ - unz_s us; - unz_s *s; - uLong central_pos,uL; - FILE * fin ; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - uLong number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - fin=fopen(path,"rb"); - if (fin==NULL) - return NULL; - - central_pos = unzlocal_SearchCentralDir(fin); - if (central_pos==0) - err=UNZ_ERRNO; - - if (fseek(fin,central_pos,SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unzlocal_getLong(fin,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir */ - if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* zipfile comment length */ - if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((central_pospfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - fclose(s->file); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) - unzFile file; - unz_global_info *pglobal_info; -{ - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - - -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) - uLong ulDosDate; - tm_unz* ptm; -{ - uLong uDate; - uDate = (uLong)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info *pfile_info, - unz_file_info_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unzlocal_GetCurrentFileInfoInternal (file, - pfile_info, - pfile_info_internal, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - unz_file_info_internal *pfile_info_internal; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - unz_s* s; - unz_file_info file_info; - unz_file_info_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - { - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename0) && (fileNameBufferSize>0)) - if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - if ((err==UNZ_OK) && (extraField!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek += file_info.size_file_extra - uSizeRead; - } - else - lSeek+=file_info.size_file_extra; - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; - } - else - lSeek+=file_info.size_file_comment; - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo (file, - pfile_info, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (file) - unzFile file; -{ - int err=UNZ_OK; - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (file) - unzFile file; -{ - unz_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzipStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) - unzFile file; - const char *szFileName; - int iCaseSensitivity; -{ - unz_s* s; - int err; - - uLong num_fileSaved; - uLong pos_in_central_dirSaved; - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - unzGetCurrentFileInfo(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - return err; -} - - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, - poffset_local_extrafield, - psize_local_extrafield) - unz_s* s; - uInt* piSizeVar; - uLong *poffset_local_extrafield; - uInt *psize_local_extrafield; -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (fseek(s->file,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - { - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - - if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile (file) - unzFile file; -{ - int err=UNZ_OK; - int Store; - uInt iSizeVar; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uLong offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, - &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip_read_info_s*) - ALLOC(sizeof(file_in_zip_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if ((s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - Store = s->cur_file_info.compression_method==0; - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->compression_method = - s->cur_file_info.compression_method; - pfile_in_zip_read_info->file=s->file; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if (!Store) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=1; - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - - s->pfile_in_zip_read = pfile_in_zip_read_info; - return UNZ_OK; -} - - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile (file, buf, len) - unzFile file; - voidp buf; - unsigned len; -{ - int err=UNZ_OK; - uInt iRead = 0; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if ((pfile_in_zip_read_info->read_buffer == NULL)) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - if (len>pfile_in_zip_read_info->rest_read_uncompressed) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, - pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if (pfile_in_zip_read_info->compression_method==0) - { - uInt uDoCopy,i ; - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;istream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else - { - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) - unzFile file; - voidp buf; - unsigned len; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uInt read_now; - uLong size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzipOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (file) - unzFile file; -{ - int err=UNZ_OK; - - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised) - inflateEnd(&pfile_in_zip_read_info->stream); - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) - unzFile file; - char *szComment; - uLong uSizeBuf; -{ -/* int err=UNZ_OK; */ - unz_s* s; - uLong uReadThis ; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/unzip.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/unzip.h deleted file mode 100644 index a30f79cb44..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/genplusgx_source/win/unzip.h +++ /dev/null @@ -1,273 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Copyright (C) 1998 Gilles Vollant - - This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g - WinZip, InfoZip tools and compatible. - Encryption and multi volume ZipFile (span) are not supported. - Old compressions used by old PKZip 1.x are not supported - - THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE - CAN CHANGE IN FUTURE VERSION !! - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - -/* for more info about .ZIP format, see - ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip - PkWare has also a specification at : - ftp://ftp.pkware.com/probdesc.zip */ - -#ifndef _unz_H -#define _unz_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer - "zlib/zlib111.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzipOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _unz_H */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/config.c b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/config.c deleted file mode 100644 index 482ce46432..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/config.c +++ /dev/null @@ -1,57 +0,0 @@ - -#include "shared.h" - -t_config config; - - -void set_config_defaults(void) -{ - int i; - - /* sound options */ - config.psg_preamp = 150; - config.fm_preamp = 100; - config.hq_fm = 1; - config.hq_psg = 1; - config.filter = 1; - config.low_freq = 200; - config.high_freq = 8000; - config.lg = 100; - config.mg = 100; - config.hg = 100; - config.lp_range = 0x7fff; /* 0.6 in 0.16 fixed point */ - config.ym2612 = YM2612_DISCRETE; - config.ym2413 = 2; /* = AUTO (0 = always OFF, 1 = always ON) */ - config.ym3438 = 0; - config.opll = 0; - config.mono = 0; - - /* system options */ - config.system = 0; /* = AUTO (or SYSTEM_SG, SYSTEM_MARKIII, SYSTEM_SMS, SYSTEM_SMS2, SYSTEM_GG, SYSTEM_MD) */ - config.region_detect = 0; /* = AUTO (1 = USA, 2 = EUROPE, 3 = JAPAN/NTSC, 4 = JAPAN/PAL) */ - config.vdp_mode = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ - config.master_clock = 0; /* = AUTO (1 = NTSC, 2 = PAL) */ - config.force_dtack = 0; - config.addr_error = 1; - config.bios = 0; - config.lock_on = 0; /* = OFF (can be TYPE_SK, TYPE_GG & TYPE_AR) */ - config.ntsc = 0; - config.lcd = 0; /* 0.8 fixed point */ - - /* display options */ - config.overscan = 0; /* 3 = all borders (0 = no borders , 1 = vertical borders only, 2 = horizontal borders only) */ - config.gg_extra = 0; /* 1 = show extended Game Gear screen (256x192) */ - config.render = 0; /* 1 = double resolution output (only when interlaced mode 2 is enabled) */ - - /* controllers options */ - input.system[0] = SYSTEM_GAMEPAD; - input.system[1] = SYSTEM_GAMEPAD; - config.gun_cursor[0] = 1; - config.gun_cursor[1] = 1; - config.invert_mouse = 0; - for (i=0;i - -static int check_zip(char *filename); - -int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension) -{ - int size = 0; - - if(check_zip(filename)) - { - unz_file_info info; - int ret = 0; - char fname[256]; - - /* Attempt to open the archive */ - unzFile *fd = unzOpen(filename); - if (!fd) return 0; - - /* Go to first file in archive */ - ret = unzGoToFirstFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Get file informations and update filename */ - ret = unzGetCurrentFileInfo(fd, &info, fname, 256, NULL, 0, NULL, 0); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Compressed filename extension */ - if (extension) - { - strncpy(extension, &fname[strlen(fname) - 3], 3); - extension[3] = 0; - } - - /* Open the file for reading */ - ret = unzOpenCurrentFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Retrieve uncompressed file size */ - size = info.uncompressed_size; - if(size > maxsize) - { - size = maxsize; - } - - /* Read (decompress) the file */ - ret = unzReadCurrentFile(fd, buffer, size); - if(ret != size) - { - unzCloseCurrentFile(fd); - unzClose(fd); - return 0; - } - - /* Close the current file */ - ret = unzCloseCurrentFile(fd); - if(ret != UNZ_OK) - { - unzClose(fd); - return 0; - } - - /* Close the archive */ - ret = unzClose(fd); - if(ret != UNZ_OK) return 0; - } - else - { - /* Open file */ - gzFile gd = gzopen(filename, "rb"); - if (!gd) return 0; - - /* Read file data */ - size = gzread(gd, buffer, maxsize); - - /* filename extension */ - if (extension) - { - strncpy(extension, &filename[strlen(filename) - 3], 3); - extension[3] = 0; - } - - /* Close file */ - gzclose(gd); - } - - /* Return loaded ROM size */ - return size; -} - -/* - Verifies if a file is a ZIP archive or not. - Returns: 1= ZIP archive, 0= not a ZIP archive -*/ -static int check_zip(char *filename) -{ - uint8 buf[2]; - FILE *fd = fopen(filename, "rb"); - if(!fd) return (0); - fread(buf, 2, 1, fd); - fclose(fd); - if(memcmp(buf, "PK", 2) == 0) return (1); - return (0); -} diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/fileio.h b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/fileio.h deleted file mode 100644 index 30db2e0ec4..0000000000 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/GenesisCore/other/fileio.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * fileio.c - * - * Load a normal file, or ZIP/GZ archive. - * Returns loaded ROM size (zero if an error occured) - * - * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald - * modified by Eke-Eke (Genesis Plus GX) - * - * Redistribution and use of this code or any derivative works are permitted - * provided that the following conditions are met: - * - * - Redistributions may not be sold, nor may they be used in a commercial - * product or activity. - * - * - Redistributions that are modified from the original source must include the - * complete source code, including the source code for all components used by a - * binary built from the modified sources. However, as a special exception, the - * source code distributed need not include anything that is normally distributed - * (in either source or binary form) with the major components (compiler, kernel, - * and so on) of the operating system on which the executable runs, unless that - * component itself accompanies the executable. - * - * - Redistributions must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************************/ - -#ifndef _FILEIO_H_ -#define _FILEIO_H_ - -/* Function prototypes */ -extern int load_archive(char *filename, unsigned char *buffer, int maxsize, char *extension); - -#endif /* _FILEIO_H_ */ diff --git a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m index df9aaba3ca..7fe10daed9 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m +++ b/Cores/Genesis-Plus-GX/PVGenesis/Genesis/PVGenesisEmulatorCore.m @@ -16,7 +16,7 @@ #import //#import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -281,11 +281,16 @@ static void video_callback(const void *data, unsigned width, unsigned height, si strongCurrent->_videoWidth = width; strongCurrent->_videoHeight = height; - dispatch_queue_t the_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - - dispatch_apply(height, the_queue, ^(size_t y){ + static dispatch_queue_t memory_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INTERACTIVE, 0); + memory_queue = dispatch_queue_create("com.provenance.video", queueAttributes); + }); + + dispatch_apply(height, memory_queue, ^(size_t y){ const uint32_t *src = (uint32_t*)data + y * (pitch >> 2); //pitch is in bytes not pixels - uint32_t *dst = strongCurrent->videoBuffer + y * 720; + uint32_t *dst = strongCurrent->videoBuffer + y * 720; //width memcpy(dst, src, sizeof(uint32_t)*width); }); @@ -365,7 +370,7 @@ static bool environment_callback(unsigned cmd, void *data) - (id)init { if ((self = [super init])) { - videoBufferA = (uint32_t *)malloc(720 * 576 * sizeof(uint32_t)); + videoBufferA = (uint32_t *)malloc(720 * 576 * sizeof(uint32_t)); videoBufferB = (uint32_t *)malloc(720 * 576 * sizeof(uint32_t)); } diff --git a/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis-Prefix.pch b/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis-Prefix.pch index b5ffd7806e..37fdbe6793 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis-Prefix.pch +++ b/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis-Prefix.pch @@ -5,6 +5,5 @@ // #ifdef __OBJC__ - #import #import #endif diff --git a/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis.h b/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis.h index c80c82e1b2..e461e94a21 100644 --- a/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis.h +++ b/Cores/Genesis-Plus-GX/PVGenesis/PVGenesis.h @@ -6,7 +6,7 @@ // Copyright © 2016 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVGenesis. FOUNDATION_EXPORT double PVGenesisVersionNumber; diff --git a/Cores/Mednafen/Config.xcconfig b/Cores/Mednafen/Config.xcconfig new file mode 100644 index 0000000000..1a9df9e9ab --- /dev/null +++ b/Cores/Mednafen/Config.xcconfig @@ -0,0 +1,47 @@ +// +// Config.xcconfig +// Mednafen +// +// Created by Joseph Mattiello on 12/06/22. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) HAVE_LROUND HAVE_MKDIR HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP HAVE_STDINT_H HAVE_STDLIB_H HAVE_SYS_PARAM_H HAVE_UNISTD_H INLINE="inline" LSB_FIRST MEDNAFEN_VERSION_NUMERIC=0x00102701 MPC_FIXED_POINT PSS_STYLE=1 SIZEOF_CHAR=1 SIZEOF_DOUBLE=8 SIZEOF_INT=4 SIZEOF_LONG=8 SIZEOF_LONG_LONG=8 SIZEOF_OFF_T=8 SIZEOF_PTRDIFF_T=8 SIZEOF_SHORT=2 SIZEOF_SIZE_T=8 SIZEOF_VOID_P=8 STDC_HEADERS WANT_FANCY_SCALERS=1 WANT_GB_EMU WANT_GBA_EMU WANT_LYNX_EMU WANT_NES_EMU WANT_NGP_EMU WANT_PCE_EMU WANT_PCE_FAST_EMU WANT_PCFX_EMU WANT_PSX_EMU WANT_SNES_EMU WANT_SNES_FAUST_EMU WANT_SS_EMU WANT_STEREO_SOUND WANT_VB_EMU WANT_WSWAN_EMU __LIBRETRO__ __STDC_LIMIT_MACROS=1 + +//GCC_PREPROCESSOR_DEFINITIONS[configuration=Debug] = $(inherited) DEBUG=1 +//GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = NDEBUG $(inherited) + +//GCC_PREPROCESSOR_DEFINITIONS[arch=armv7] = $(inherited) ARCH_ARM +//GCC_PREPROCESSOR_DEFINITIONS[arch=armv7s] = $(inherited) ARCH_ARM +//GCC_PREPROCESSOR_DEFINITIONS[arch=arm64] = $(inherited) ARCH_ARM +//GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64] = $(inherited) + +OTHER_CFLAGS = $(inherited) -funroll-loops -fPIC -Wall -Wno-sign-compare -Wno-unused-variable -Wno-unused-function -Wno-uninitialized -Wno-strict-aliasing -Wno-aggressive-loop-optimizations -fno-fast-math -fomit-frame-pointer -fsigned-char -Wshadow -Wempty-body -Wignored-qualifiers -Wvla -Wvariadic-macros -Wdisabled-optimization -DMEDNAFEN_VERSION=\"1.27.1\" -DPACKAGE=\"mednafen\" -DICONV_CONST= +OTHER_CFLAGS[arch=armv7] = -mfpu=neon $(inherited) +OTHER_CFLAGS[arch=armv7s] = -mfpu=neon $(inherited) +OTHER_CFLAGS[arch=arm64] = -mfpu=neon $(inherited) +OTHER_CFLAGS[arch=x86_64] = $(inherited) + +// MacOS Catalyst +GCC_PREPROCESSOR_DEFINITIONS[sdk=macosx*] = $(inherited) +OTHER_CFLAGS[sdk=macosx*] = $(inherited) +EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*] = $(inherited) + +// iPhone +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) +OTHER_CFLAGS[sdk=iphonesimulator*] = $(inherited) + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) +EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvos*] = $(inherited) +// gSPNeon.cpp + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited +OTHER_CFLAGS[sdk=appletvsimulator*] = $(inherited) diff --git a/Cores/Mednafen/MednafenGameCore+Controls.mm b/Cores/Mednafen/MednafenGameCore+Controls.mm new file mode 100644 index 0000000000..ac0d6b701e --- /dev/null +++ b/Cores/Mednafen/MednafenGameCore+Controls.mm @@ -0,0 +1,1570 @@ +// +// MednafenMultiDisc.m +// PVMednafen +// +// Created by Joseph Mattiello on 2/18/18. +// + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wall" +#pragma clang diagnostic ignored "-Wextra" +#include +#include +#include +#include +#include +#pragma clang diagnostic pop + +#import "MednafenGameCore.h" + +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +#import +#import +#import +#import +#else +#import +#import +#endif + + +#import +#import +#import +#import + +#import +#import + +@implementation MednafenGameCore (Controls) + +#pragma mark - Input - + +//Controller Stacks start here: + +#pragma mark Atari Lynx +- (void)didPushLynxButton:(PVLynxButton)button forPlayer:(NSInteger)player { + inputBuffer[player][0] |= 1 << LynxMap[button]; +} + +- (void)didReleaseLynxButton:(PVLynxButton)button forPlayer:(NSInteger)player { + inputBuffer[player][0] &= ~(1 << LynxMap[button]); +} + +- (NSInteger)LynxControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVLynxButtonUp: + return DPAD_PRESSED(up); + case PVLynxButtonDown: + return DPAD_PRESSED(down); + case PVLynxButtonLeft: + return DPAD_PRESSED(left); + case PVLynxButtonRight: + return DPAD_PRESSED(right); + case PVLynxButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]?:[[[gamepad rightThumbstick] right] isPressed]?:[[gamepad rightTrigger] isPressed]; + case PVLynxButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]?:[[[gamepad rightThumbstick] left] isPressed]?:[[gamepad leftTrigger] isPressed]; + case PVLynxButtonOption1: + return [[gamepad leftShoulder] isPressed]; + case PVLynxButtonOption2: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVLynxButtonUp: + return [[dpad up] isPressed]; + case PVLynxButtonDown: + return [[dpad down] isPressed]; + case PVLynxButtonLeft: + return [[dpad left] isPressed]; + case PVLynxButtonRight: + return [[dpad right] isPressed]; + case PVLynxButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVLynxButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVLynxButtonOption1: + return [[gamepad leftShoulder] isPressed]; + case PVLynxButtonOption2: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVLynxButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVLynxButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVLynxButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVLynxButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVLynxButtonB: + return [[gamepad buttonA] isPressed]; + break; + case PVLynxButtonA: + return [[gamepad buttonX] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} + +#pragma mark SNES +- (void)didPushSNESButton:(enum PVSNESButton)button forPlayer:(NSInteger)player { + int mappedButton = SNESMap[button]; + inputBuffer[player][0] |= 1 << mappedButton; +} + +-(void)didReleaseSNESButton:(enum PVSNESButton)button forPlayer:(NSInteger)player { + inputBuffer[player][0] &= ~(1 << SNESMap[button]); +} + +#pragma mark NES +- (void)didPushNESButton:(enum PVNESButton)button forPlayer:(NSInteger)player { + int mappedButton = NESMap[button]; + inputBuffer[player][0] |= 1 << mappedButton; +} + +-(void)didReleaseNESButton:(enum PVNESButton)button forPlayer:(NSInteger)player { + inputBuffer[player][0] &= ~(1 << NESMap[button]); +} + +#pragma mark GB / GBC +- (void)didPushGBButton:(enum PVGBButton)button forPlayer:(NSInteger)player { + int mappedButton = GBMap[button]; + inputBuffer[player][0] |= 1 << mappedButton; +} + +-(void)didReleaseGBButton:(enum PVGBButton)button forPlayer:(NSInteger)player { + inputBuffer[player][0] &= ~(1 << GBMap[button]); +} + +#pragma mark GBA +- (void)didPushGBAButton:(enum PVGBAButton)button forPlayer:(NSInteger)player { + int mappedButton = GBAMap[button]; + inputBuffer[player][0] |= 1 << mappedButton; +} + +-(void)didReleaseGBAButton:(enum PVGBAButton)button forPlayer:(NSInteger)player { + int mappedButton = GBAMap[button]; + inputBuffer[player][0] &= ~(1 << mappedButton); +} + +#pragma mark Sega +- (void)didPushSegaButton:(enum PVGenesisButton)button forPlayer:(NSInteger)player { + int mappedButton = GenesisMap[button]; + inputBuffer[player][0] |= 1 << mappedButton; +} + +-(void)didReleaseSegaButton:(enum PVGenesisButton)button forPlayer:(NSInteger)player { + inputBuffer[player][0] &= ~(1 << GenesisMap[button]); +} + +#pragma mark Neo Geo +- (void)didPushNGPButton:(PVNGPButton)button forPlayer:(NSInteger)player +{ + inputBuffer[player][0] |= 1 << NeoMap[button]; +} + +- (void)didReleaseNGPButton:(PVNGPButton)button forPlayer:(NSInteger)player +{ + inputBuffer[player][0] &= ~(1 << NeoMap[button]); +} + +#pragma mark PC-* +#pragma mark PCE aka TurboGFX-16 & SuperGFX +- (void)didPushPCEButton:(PVPCEButton)button forPlayer:(NSInteger)player +{ + if (button != PVPCEButtonMode) { // Check for six button mode toggle + inputBuffer[player][0] |= 1 << PCEMap[button]; + } else { + inputBuffer[player][0] ^= 1 << PCEMap[button]; + } +} + +- (void)didReleasePCEButton:(PVPCEButton)button forPlayer:(NSInteger)player +{ + if (button != PVPCEButtonMode) + inputBuffer[player][0] &= ~(1 << PCEMap[button]); +} + +#pragma mark PCE-CD +- (void)didPushPCECDButton:(PVPCECDButton)button forPlayer:(NSInteger)player +{ + if (button != PVPCECDButtonMode) { // Check for six button mode toggle + inputBuffer[player][0] |= 1 << PCEMap[button]; + } else { + inputBuffer[player][0] ^= 1 << PCEMap[button]; + } +} + +- (void)didReleasePCECDButton:(PVPCECDButton)button forPlayer:(NSInteger)player; +{ + if (button != PVPCECDButtonMode) { + inputBuffer[player][0] &= ~(1 << PCEMap[button]); + } +} + +#pragma mark PCFX +- (void)didPushPCFXButton:(PVPCFXButton)button forPlayer:(NSInteger)player; +{ + if (button != PVPCFXButtonMode) { // Check for six button mode toggle + inputBuffer[player][0] |= 1 << PCFXMap[button]; + } else { + inputBuffer[player][0] ^= 1 << PCFXMap[button]; + } +} + +- (void)didReleasePCFXButton:(PVPCFXButton)button forPlayer:(NSInteger)player; +{ + if (button != PVPCFXButtonMode) { + inputBuffer[player][0] &= ~(1 << PCFXMap[button]); + } +} + +#pragma mark SS Sega Saturn +- (void)didPushSSButton:(enum PVSaturnButton)button forPlayer:(NSInteger)player +{ + // int mappedButton = SSMap[button]; + // inputBuffer[player][0] |= 1 << mappedButton; + if (button == PVSaturnButtonStart) { + DLOG("Start on"); + self.isStartPressed = true; + } + inputBuffer[player][0] |= 1 << SSMap[button]; +} + +-(void)didReleaseSSButton:(enum PVSaturnButton)button forPlayer:(NSInteger)player { + // inputBuffer[player][0] &= ~(1 << SSMap[button]); + if (button == PVSaturnButtonStart) { + DLOG("Start off"); + self.isStartPressed = false; + } + inputBuffer[player][0] &= ~(1 << SSMap[button]); +} + +#pragma mark PSX +- (void)didPushPSXButton:(PVPSXButton)button forPlayer:(NSInteger)player; +{ + if (button == PVPSXButtonStart) { + self.isStartPressed = true; + } else if (button == PVPSXButtonSelect) { + self.isSelectPressed = true; + } else if (button == PVPSXButtonL3) { + self.isL3Pressed = true; + } else if (button == PVPSXButtonR3) { + self.isR3Pressed = true; + } else if (button == PVPSXButtonAnalogMode) { + self.isAnalogModePressed = true; + } + inputBuffer[player][0] |= 1 << PSXMap[button]; +} + +- (void)didReleasePSXButton:(PVPSXButton)button forPlayer:(NSInteger)player; +{ + if (button == PVPSXButtonStart) { + self.isStartPressed = false; + } else if (button == PVPSXButtonSelect) { + self.isSelectPressed = false; + } else if (button == PVPSXButtonL3) { + self.isL3Pressed = false; + } else if (button == PVPSXButtonR3) { + self.isR3Pressed = false; + } else if (button == PVPSXButtonAnalogMode) { + self.isAnalogModePressed = false; + } + inputBuffer[player][0] &= ~(1 << PSXMap[button]); +} + +- (void)didMovePSXJoystickDirection:(PVPSXButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { + // TODO + // Fix the analog circle-to-square axis range conversion by scaling between a value of 1.00 and 1.50 + // We cannot use MDFNI_SetSetting("psx.input.port1.dualshock.axis_scale", "1.33") directly. + // Background: https://mednafen.github.io/documentation/psx.html#Section_analog_range + // double scaledValue = MIN(floor(0.5 + value * 1.33), 32767); // 30712 / cos(2*pi/8) / 32767 = 1.33 + + uint16 modifiedValue = value * 32767; + + int analogNumber = PSXMap[button] - 17; + int address = analogNumber; + + if (analogNumber % 2 != 0) { + axis[analogNumber] = -1 * modifiedValue; + address -= 1; + } + else { + axis[analogNumber] = modifiedValue; + } + + uint16 actualValue = 32767 + axis[analogNumber] + axis[analogNumber ^ 1]; + + uint8 *buf = (uint8 *)inputBuffer[player]; + Mednafen::MDFN_en16lsb(&buf[3]+address, (uint16) actualValue); +} + +#pragma mark Virtual Boy +- (void)didPushVBButton:(PVVBButton)button forPlayer:(NSInteger)player; +{ + inputBuffer[player][0] |= 1 << VBMap[button]; +} + +- (void)didReleaseVBButton:(PVVBButton)button forPlayer:(NSInteger)player; +{ + inputBuffer[player][0] &= ~(1 << VBMap[button]); +} + +#pragma mark WonderSwan +- (void)didPushWSButton:(PVWSButton)button forPlayer:(NSInteger)player; +{ + inputBuffer[player][0] |= 1 << WSMap[button]; +} + +- (void)didReleaseWSButton:(PVWSButton)button forPlayer:(NSInteger)player; +{ + inputBuffer[player][0] &= ~(1 << WSMap[button]); +} + +- (NSInteger)controllerValueForButtonID:(unsigned)buttonID forPlayer:(NSInteger)player withAnalogMode:(bool)analogMode { + GCController *controller = nil; + + if (player == 0) { + controller = self.controller1; + } + else if (player == 1) { + controller = self.controller2; + } + else if (player == 2) { + controller = self.controller3; + } + else if (player == 3) { + controller = self.controller4; + } + + switch (self.systemType) { + case MednaSystemSMS: + case MednaSystemMD: + // TODO: Unused since Mednafen sega support is 'low priority' + return 0; + break; + case MednaSystemSS: + return [self SSValueForButtonID:buttonID forController:controller]; + break; + case MednaSystemGB: + return [self GBValueForButtonID:buttonID forController:controller]; + break; + case MednaSystemGBA: + return [self GBAValueForButtonID:buttonID forController:controller]; + break; + case MednaSystemSNES: + return [self SNESValueForButtonID:buttonID forController:controller]; + break; + case MednaSystemNES: + return [self NESValueForButtonID:buttonID forController:controller]; + break; + case MednaSystemNeoGeo: + return [self NeoGeoValueForButtonID:buttonID forController:controller]; + break; + case MednaSystemLynx: + return [self LynxControllerValueForButtonID:buttonID forController:controller]; + break; + + case MednaSystemPCE: + case MednaSystemPCFX: + return [self PCEValueForButtonID:buttonID forController:controller]; + break; + + case MednaSystemPSX: + return [self PSXcontrollerValueForButtonID:buttonID forController:controller withAnalogMode:analogMode]; + break; + + case MednaSystemVirtualBoy: + return [self VirtualBoyControllerValueForButtonID:buttonID forController:controller]; + break; + + case MednaSystemWonderSwan: + return [self WonderSwanControllerValueForButtonID:buttonID forController:controller]; + break; + + default: + break; + } + + return 0; +} +#pragma mark SS Buttons +- (NSInteger)SSValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = controller.extendedGamepad; //[[controller extendedGamepad] capture]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + // Maps the Sega Saturn Controls to the 8BitDo M30 if enabled in Settings/Controller + if (PVSettingsModel.shared.use8BitdoM30) { + switch (buttonID) { + case PVSaturnButtonUp: + return DPAD_PRESSED(up); + case PVSaturnButtonDown: + return DPAD_PRESSED(down); + case PVSaturnButtonLeft: + return DPAD_PRESSED(left); + case PVSaturnButtonRight: + return DPAD_PRESSED(right); + case PVSaturnButtonA: + return [[gamepad buttonA] isPressed]; + case PVSaturnButtonB: + return [[gamepad buttonB] isPressed]; + case PVSaturnButtonC: + return [[gamepad rightShoulder] isPressed]; + case PVSaturnButtonX: + return [[gamepad buttonX] isPressed]; + case PVSaturnButtonY: + return [[gamepad buttonY] isPressed]; + case PVSaturnButtonZ: + return [[gamepad leftShoulder] isPressed]; + case PVSaturnButtonL: + return [[gamepad leftTrigger] isPressed]; + case PVSaturnButtonStart: +#if TARGET_OS_TV + return self.isStartPressed || [[gamepad buttonMenu] isPressed]; + case PVSaturnButtonR: + return [[gamepad rightTrigger] isPressed]; +#else + return self.isStartPressed || [[gamepad rightTrigger] isPressed]; + // no Access to the R Shoulder Button on the Saturn Controller using the M30 due to Start Mismapping on iOS, for now +#endif + default: + break; + } + } else { // Non 8BitdoM30 + GCDualSenseGamepad *dualSense = [gamepad isKindOfClass:[GCDualSenseGamepad class]] ? gamepad : nil; + GCDualShockGamepad *dualShock = [gamepad isKindOfClass:[GCDualShockGamepad class]] ? gamepad : nil; + GCXboxGamepad *xbox = [gamepad isKindOfClass:[GCXboxGamepad class]] ? gamepad : nil; + + + switch (buttonID) { + case PVSaturnButtonUp: + return DPAD_PRESSED(up); + case PVSaturnButtonDown: + return DPAD_PRESSED(down); + case PVSaturnButtonLeft: + return DPAD_PRESSED(left); + case PVSaturnButtonRight: + return DPAD_PRESSED(right); + case PVSaturnButtonA: + return [[gamepad buttonA] isPressed]; + case PVSaturnButtonB: + return [[gamepad buttonB] isPressed]; + case PVSaturnButtonC: + return [[gamepad leftShoulder] isPressed]; + case PVSaturnButtonX: + return [[gamepad buttonX] isPressed]; + case PVSaturnButtonY: + return [[gamepad buttonY] isPressed]; + case PVSaturnButtonZ: + return [[gamepad rightShoulder] isPressed]; + case PVSaturnButtonL: + return [[gamepad leftTrigger] isPressed]; + case PVSaturnButtonStart: + { + BOOL isStart = NO; + if (dualSense) { + isStart = self.isStartPressed || dualSense.touchpadButton.isPressed; + } else if (dualShock) { + isStart = self.isStartPressed || dualShock.touchpadButton.isPressed; + } else if (xbox) { + isStart = self.isStartPressed || xbox.buttonShare.isPressed; + } else { +// if (!gamepad.buttonHome.isBoundToSystemGesture) { +// return gamepad.buttonHome.isPressed; +// } + if (gamepad.buttonOptions) { + isStart = gamepad.buttonOptions.isPressed; + } + + bool modifier1Pressed = [[gamepad leftShoulder] isPressed] && [[gamepad rightShoulder] isPressed]; + bool modifier2Pressed = [[gamepad leftTrigger] isPressed] && [[gamepad rightTrigger] isPressed]; + bool modifiersPressed = modifier1Pressed && modifier2Pressed; + + isStart = self.isStartPressed || (modifiersPressed && [[gamepad buttonX] isPressed]); + } + DLOG("isStart: %@", isStart ? @"Yes" : @"No"); + return isStart; + } + case PVSaturnButtonR: + return [[gamepad rightTrigger] isPressed]; + default: + break; + }} + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSaturnButtonUp: + return [[dpad up] isPressed]; + case PVSaturnButtonDown: + return [[dpad down] isPressed]; + case PVSaturnButtonLeft: + return [[dpad left] isPressed]; + case PVSaturnButtonRight: + return [[dpad right] isPressed]; + case PVSaturnButtonA: + return [[gamepad buttonA] isPressed]; + case PVSaturnButtonB: + return [[gamepad buttonB] isPressed]; + case PVSaturnButtonC: + return [[gamepad leftShoulder] isPressed]; + case PVSaturnButtonX: + return [[gamepad buttonX] isPressed]; + case PVSaturnButtonY: + return [[gamepad buttonY] isPressed]; + case PVSaturnButtonZ: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSaturnButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVSaturnButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVSaturnButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVSaturnButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVSaturnButtonA: + return [[gamepad buttonA] isPressed]; + break; + case PVSaturnButtonB: + return [[gamepad buttonX] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} +#pragma mark GB Buttons +- (NSInteger)GBValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVGBButtonUp: + return DPAD_PRESSED(up); + case PVGBButtonDown: + return DPAD_PRESSED(down); + case PVGBButtonLeft: + return DPAD_PRESSED(left); + case PVGBButtonRight: + return DPAD_PRESSED(right); + case PVGBButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVGBButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVGBButtonSelect: + return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed]; + case PVGBButtonStart: + return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; + default: + NSLog(@"Unknown button %i", buttonID); + break; + } + + // if (buttonID == GBMap[PVGBButtonUp]) { + // return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; + // } + // else if (buttonID == GBMap[PVGBButtonDown]) { + // return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; + // } + // else if (buttonID == GBMap[PVGBButtonLeft]) { + // return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; + // } + // else if (buttonID == GBMap[PVGBButtonRight]) { + // return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; + // } + // else if (buttonID == GBMap[PVGBButtonA]) { + // return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + // } + // else if (buttonID == GBMap[PVGBButtonB]) { + // return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + // } + // else if (buttonID == GBMap[PVGBButtonSelect]) { + // return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed]; + // } + // else if (buttonID == GBMap[PVGBButtonStart]) { + // return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; + // } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVGBButtonUp: + return [[dpad up] isPressed]; + case PVGBButtonDown: + return [[dpad down] isPressed]; + case PVGBButtonLeft: + return [[dpad left] isPressed]; + case PVGBButtonRight: + return [[dpad right] isPressed]; + case PVGBButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVGBButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVGBButtonSelect: + return [[gamepad leftShoulder] isPressed]; + case PVGBButtonStart: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVGBButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVGBButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVGBButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVGBButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVGBButtonA: + return [[gamepad buttonX] isPressed]; + break; + case PVGBButtonB: + return [[gamepad buttonA] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} +#pragma mark GBA Buttons +- (NSInteger)GBAValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVGBAButtonUp: + return DPAD_PRESSED(up); + case PVGBAButtonDown: + return DPAD_PRESSED(down); + case PVGBAButtonLeft: + return DPAD_PRESSED(left); + case PVGBAButtonRight: + return DPAD_PRESSED(right); + case PVGBAButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVGBAButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVGBAButtonL: + return [[gamepad leftShoulder] isPressed]; + case PVGBAButtonR: + return [[gamepad rightShoulder] isPressed]; + case PVGBAButtonSelect: + return [[gamepad leftTrigger] isPressed]; + case PVGBAButtonStart: + return [[gamepad rightTrigger] isPressed]; + default: + break; + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVGBAButtonUp: + return [[dpad up] isPressed]; + case PVGBAButtonDown: + return [[dpad down] isPressed]; + case PVGBAButtonLeft: + return [[dpad left] isPressed]; + case PVGBAButtonRight: + return [[dpad right] isPressed]; + case PVGBAButtonB: + return [[gamepad buttonA] isPressed]; + case PVGBAButtonA: + return [[gamepad buttonB] isPressed]; + case PVGBAButtonL: + return [[gamepad leftShoulder] isPressed]; + case PVGBAButtonR: + return [[gamepad rightShoulder] isPressed]; + case PVGBAButtonSelect: + return [[gamepad buttonX] isPressed]; + case PVGBAButtonStart: + return [[gamepad buttonY] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVGBAButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVGBAButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVGBAButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVGBAButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVGBAButtonA: + return [[gamepad buttonX] isPressed]; + break; + case PVGBAButtonB: + return [[gamepad buttonA] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} + +#pragma mark SNES Buttons +- (NSInteger)SNESValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSNESButtonUp: + return DPAD_PRESSED(up); + case PVSNESButtonDown: + return DPAD_PRESSED(down); + case PVSNESButtonLeft: + return DPAD_PRESSED(left); + case PVSNESButtonRight: + return DPAD_PRESSED(right); + case PVSNESButtonB: + return [[gamepad buttonA] isPressed]; + case PVSNESButtonA: + return [[gamepad buttonB] isPressed]; + case PVSNESButtonX: + return [[gamepad buttonY] isPressed]; + case PVSNESButtonY: + return [[gamepad buttonX] isPressed]; + case PVSNESButtonTriggerLeft: + return [[gamepad leftShoulder] isPressed]; + case PVSNESButtonTriggerRight: + return [[gamepad rightShoulder] isPressed]; + case PVSNESButtonSelect: + return [[gamepad leftTrigger] isPressed]; + case PVSNESButtonStart: + return [[gamepad rightTrigger] isPressed]; + default: + break; + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSNESButtonUp: + return [[dpad up] isPressed]; + case PVSNESButtonDown: + return [[dpad down] isPressed]; + case PVSNESButtonLeft: + return [[dpad left] isPressed]; + case PVSNESButtonRight: + return [[dpad right] isPressed]; + case PVSNESButtonB: + return [[gamepad buttonA] isPressed]; + case PVSNESButtonA: + return [[gamepad buttonB] isPressed]; + case PVSNESButtonX: + return [[gamepad buttonY] isPressed]; + case PVSNESButtonY: + return [[gamepad buttonX] isPressed]; + case PVSNESButtonTriggerLeft: + return [[gamepad leftShoulder] isPressed]; + case PVSNESButtonTriggerRight: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSNESButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVSNESButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVSNESButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVSNESButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVSNESButtonA: + return [[gamepad buttonX] isPressed]; + break; + case PVSNESButtonB: + return [[gamepad buttonA] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} +#pragma mark NES Buttons +- (NSInteger)NESValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVNESButtonUp: + return DPAD_PRESSED(up); + case PVNESButtonDown: + return DPAD_PRESSED(down); + case PVNESButtonLeft: + return DPAD_PRESSED(left); + case PVNESButtonRight: + return DPAD_PRESSED(right); + case PVNESButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVNESButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVNESButtonSelect: + return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed]; + case PVNESButtonStart: + return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; + default: + break; + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVNESButtonUp: + return [[dpad up] isPressed]; + case PVNESButtonDown: + return [[dpad down] isPressed]; + case PVNESButtonLeft: + return [[dpad left] isPressed]; + case PVNESButtonRight: + return [[dpad right] isPressed]; + case PVNESButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVNESButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVNESButtonSelect: + return [[gamepad leftShoulder] isPressed]; + case PVNESButtonStart: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVNESButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVNESButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVNESButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVNESButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVNESButtonA: + return [[gamepad buttonX] isPressed]; + break; + case PVNESButtonB: + return [[gamepad buttonA] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} +#pragma mark NEOGEOPOCKET Buttons +- (NSInteger)NeoGeoValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVNGPButtonUp: + return DPAD_PRESSED(up); + case PVNGPButtonDown: + return DPAD_PRESSED(down); + case PVNGPButtonLeft: + return DPAD_PRESSED(left); + case PVNGPButtonRight: + return DPAD_PRESSED(right); + case PVNGPButtonB: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVNGPButtonA: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVNGPButtonOption: + return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed] ?: [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; + default: + break; + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVNGPButtonUp: + return [[dpad up] isPressed]; + case PVNGPButtonDown: + return [[dpad down] isPressed]; + case PVNGPButtonLeft: + return [[dpad left] isPressed]; + case PVNGPButtonRight: + return [[dpad right] isPressed]; + case PVNGPButtonB: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVNGPButtonA: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVNGPButtonOption: + return [[gamepad leftShoulder] isPressed] ?: [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVNGPButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVNGPButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVNGPButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVNGPButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVNGPButtonA: + return [[gamepad buttonA] isPressed]; + break; + case PVNGPButtonB: + return [[gamepad buttonX] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} +#pragma mark PCE Buttons +- (NSInteger)PCEValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + if (PVSettingsModel.shared.use8BitdoM30) // M30 Mode + {switch (buttonID) { + // D-Pad + case PVPCEButtonUp: + return [[[gamepad leftThumbstick] up] value] > DEADZONE; + case PVPCEButtonDown: + return [[[gamepad leftThumbstick] down] value] > DEADZONE; + case PVPCEButtonLeft: + return [[[gamepad leftThumbstick] left] value] > DEADZONE; + case PVPCEButtonRight: + return [[[gamepad leftThumbstick] right] value] > DEADZONE; + + // Select + Run + case PVPCEButtonSelect: + return [[gamepad leftTrigger] isPressed]; + case PVPCEButtonRun: + return [[gamepad rightTrigger] isPressed]; + + // NEC Avenue 6 button layout + case PVPCEButtonButton1: + return [[gamepad rightShoulder] isPressed]; + case PVPCEButtonButton2: + return [[gamepad buttonB] isPressed]; + case PVPCEButtonButton3: + return [[gamepad buttonA] isPressed]; + case PVPCEButtonButton4: + return [[gamepad buttonX] isPressed]; + case PVPCEButtonButton5: + return [[gamepad buttonY] isPressed]; + case PVPCEButtonButton6: + return [[gamepad leftShoulder] isPressed]; + + // Toggle to the 6 Button Mode when the Extended Buttons are pressed + case PVPCEButtonMode: + return [[gamepad buttonB] isPressed] || [[gamepad buttonX] isPressed] || [[gamepad buttonY] isPressed] || [[gamepad leftShoulder] isPressed] || [[gamepad buttonA] isPressed] || [[gamepad rightShoulder] isPressed]; + default: + break; + }} + {switch (buttonID) { // Non M30 mode + // D-Pad + case PVPCEButtonUp: + return DPAD_PRESSED(up); + case PVPCEButtonDown: + return DPAD_PRESSED(down); + case PVPCEButtonLeft: + return DPAD_PRESSED(left); + case PVPCEButtonRight: + return DPAD_PRESSED(right); + + // Standard Buttons + case PVPCEButtonButton1: + return [[gamepad buttonB] isPressed]; + case PVPCEButtonButton2: + return [[gamepad buttonA] isPressed]; + + case PVPCEButtonSelect: + return [[gamepad leftTrigger] isPressed]; + case PVPCEButtonRun: + return [[gamepad rightTrigger] isPressed]; + + // Extended Buttons + case PVPCEButtonButton3: + return [[gamepad buttonX] isPressed]; + case PVPCEButtonButton4: + return [[gamepad leftShoulder] isPressed]; + case PVPCEButtonButton5: + return [[gamepad buttonY] isPressed]; + case PVPCEButtonButton6: + return [[gamepad rightShoulder] isPressed]; + + // Toggle the Mode: Extended Buttons are pressed + case PVPCEButtonMode: + return [[gamepad buttonX] isPressed] || [[gamepad leftShoulder] isPressed] || [[gamepad buttonY] isPressed] || [[gamepad rightShoulder] isPressed]; + default: + break; + }} + } + else if ([controller gamepad]) + { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + // D-Pad + case PVPCEButtonUp: + return [[dpad up] isPressed]; + case PVPCEButtonDown: + return [[dpad down] isPressed]; + case PVPCEButtonLeft: + return [[dpad left] isPressed]; + case PVPCEButtonRight: + return [[dpad right] isPressed]; + + // Standard Buttons + case PVPCEButtonButton1: + return [[gamepad buttonB] isPressed]; + case PVPCEButtonButton2: + return [[gamepad buttonA] isPressed]; + + case PVPCEButtonSelect: + return [[gamepad leftShoulder] isPressed]; + case PVPCEButtonRun: + return [[gamepad rightShoulder] isPressed]; + + // Extended Buttons + case PVPCEButtonButton3: + return [[gamepad buttonX] isPressed]; + case PVPCEButtonButton4: + return [[gamepad buttonY] isPressed]; + + // Toggle the Mode: Extended Buttons are pressed + case PVPCEButtonMode: + return [[gamepad buttonX] isPressed] || [[gamepad buttonY] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVPCEButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVPCEButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVPCEButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVPCEButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVPCEButtonButton1: + return [[gamepad buttonA] isPressed]; + break; + case PVPCEButtonButton2: + return [[gamepad buttonX] isPressed]; + break; + default: + break; + } + } +#endif + + return 0; +} +#pragma mark PSX Buttons +- (float)PSXAnalogControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + switch (buttonID) { + case PVPSXButtonLeftAnalogUp: + return [gamepad leftThumbstick].up.value; + case PVPSXButtonLeftAnalogDown: + return [gamepad leftThumbstick].down.value; + case PVPSXButtonLeftAnalogLeft: + return [gamepad leftThumbstick].left.value; + case PVPSXButtonLeftAnalogRight: + return [gamepad leftThumbstick].right.value; + case PVPSXButtonRightAnalogUp: + return [gamepad rightThumbstick].up.value; + case PVPSXButtonRightAnalogDown: + return [gamepad rightThumbstick].down.value; + case PVPSXButtonRightAnalogLeft: + return [gamepad rightThumbstick].left.value; + case PVPSXButtonRightAnalogRight: + return [gamepad rightThumbstick].right.value; + default: + break; + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + switch (buttonID) { + case PVPSXButtonLeftAnalogUp: + return [gamepad dpad].up.value; + case PVPSXButtonLeftAnalogDown: + return [gamepad dpad].down.value; + case PVPSXButtonLeftAnalogLeft: + return [gamepad dpad].left.value; + case PVPSXButtonLeftAnalogRight: + return [gamepad dpad].right.value; + default: + break; + } + } + return 0; +} + +- (NSInteger)PSXcontrollerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller withAnalogMode:(bool)analogMode { + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [[controller extendedGamepad] capture]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + if (@available(iOS 14, *)) { + + if ([gamepad isKindOfClass:[GCDualSenseGamepad class]]) { + GCDualSenseGamepad *dualSense = gamepad; + } else if ([gamepad isKindOfClass:[GCDualShockGamepad class]]) { + GCDualShockGamepad *dualShock = gamepad; + + } else if ([gamepad isKindOfClass:[GCXboxGamepad class]]) { + GCXboxGamepad *xboxGamepad = gamepad; + } + } + + GCDualSenseGamepad *dualSense = [gamepad isKindOfClass:[GCDualSenseGamepad class]] ? gamepad : nil; + + bool modifier1Pressed = [[gamepad leftShoulder] isPressed] && [[gamepad rightShoulder] isPressed]; + bool modifier2Pressed = [[gamepad leftTrigger] isPressed] && [[gamepad rightTrigger] isPressed]; + bool modifiersPressed = modifier1Pressed && modifier2Pressed; + + switch (buttonID) { + case PVPSXButtonUp: + return ([[dpad up] isPressed] || (!analogMode && [[[gamepad leftThumbstick] up] isPressed])); + case PVPSXButtonDown: + return ([[dpad down] isPressed] || (!analogMode && [[[gamepad leftThumbstick] down] isPressed])) && !modifiersPressed; + case PVPSXButtonLeft: + return ([[dpad left] isPressed] || (!analogMode && [[[gamepad leftThumbstick] left] isPressed])); + case PVPSXButtonRight: + return ([[dpad right] isPressed] || (!analogMode && [[[gamepad leftThumbstick] right] isPressed])) && !modifiersPressed; + case PVPSXButtonLeftAnalogUp: + return analogMode ? [gamepad leftThumbstick].up.value : [gamepad leftThumbstick].up.pressed; + case PVPSXButtonLeftAnalogDown: + return analogMode ? [gamepad leftThumbstick].down.value : [gamepad leftThumbstick].down.pressed; + case PVPSXButtonLeftAnalogLeft: + return analogMode ? [gamepad leftThumbstick].left.value : [gamepad leftThumbstick].left.pressed; + case PVPSXButtonLeftAnalogRight: + return analogMode ? [gamepad leftThumbstick].right.value : [gamepad leftThumbstick].right.pressed; + case PVPSXButtonSquare: + return [[gamepad buttonX] isPressed] && !modifiersPressed; + case PVPSXButtonTriangle: + return [[gamepad buttonY] isPressed]; + case PVPSXButtonCross: + return [[gamepad buttonA] isPressed] && !modifiersPressed; + case PVPSXButtonCircle: + return [[gamepad buttonB] isPressed] && !modifiersPressed; + case PVPSXButtonL1: + return [[gamepad leftShoulder] isPressed] && !modifier2Pressed; + case PVPSXButtonL2: + return [[gamepad leftTrigger] isPressed] && !modifier1Pressed; + case PVPSXButtonL3: + return self.isL3Pressed || [[gamepad leftThumbstickButton] isPressed] || (modifiersPressed && [[dpad down] isPressed]); + case PVPSXButtonR1: + return [[gamepad rightShoulder] isPressed] && !modifier2Pressed; + case PVPSXButtonR2: + return [[gamepad rightTrigger] isPressed] && !modifier1Pressed; + case PVPSXButtonR3: + return self.isR3Pressed || [[gamepad rightThumbstickButton] isPressed] || (modifiersPressed && [[gamepad buttonA] isPressed]); + case PVPSXButtonSelect: + return self.isSelectPressed || (modifiersPressed && [[dpad right] isPressed]); + case PVPSXButtonStart: + return self.isStartPressed || (modifiersPressed && [[gamepad buttonX] isPressed]); + case PVPSXButtonAnalogMode: + return self.isAnalogModePressed || (modifiersPressed && [[gamepad buttonB] isPressed]); + default: + break; + } + } + else if ([controller gamepad]) + { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + bool modifierPressed = [[gamepad leftShoulder] isPressed] && [[gamepad rightShoulder] isPressed]; + + switch (buttonID) { + case PVPSXButtonUp: + return [[dpad up] isPressed] && !modifierPressed; + case PVPSXButtonDown: + return [[dpad down] isPressed] && !modifierPressed; + case PVPSXButtonLeft: + return [[dpad left] isPressed]; + case PVPSXButtonRight: + return [[dpad right] isPressed] && !modifierPressed; + case PVPSXButtonSquare: + return [[gamepad buttonX] isPressed] && !modifierPressed; + case PVPSXButtonTriangle: + return [[gamepad buttonY] isPressed] && !modifierPressed; + case PVPSXButtonCross: + return [[gamepad buttonA] isPressed] && !modifierPressed; + case PVPSXButtonCircle: + return [[gamepad buttonB] isPressed] && !modifierPressed; + case PVPSXButtonL1: + return [[gamepad leftShoulder] isPressed]; + case PVPSXButtonL2: + return modifierPressed && [[dpad up] isPressed]; + case PVPSXButtonL3: + return self.isL3Pressed || modifierPressed && [[dpad down] isPressed]; + case PVPSXButtonR1: + return [[gamepad rightShoulder] isPressed]; + case PVPSXButtonR2: + return modifierPressed && [[gamepad buttonY] isPressed]; + case PVPSXButtonR3: + return self.isR3Pressed || modifierPressed && [[gamepad buttonA] isPressed]; + case PVPSXButtonSelect: + return self.isSelectPressed || (modifierPressed && [[dpad right] isPressed]); + case PVPSXButtonStart: + return self.isStartPressed || (modifierPressed && [[gamepad buttonX] isPressed]); + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVPSXButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVPSXButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVPSXButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVPSXButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVPSXButtonCross: + return [[gamepad buttonA] isPressed]; + break; + case PVPSXButtonCircle: + return [[gamepad buttonX] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} +#pragma mark VirtualBoy Buttons +- (NSInteger)VirtualBoyControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVVBButtonLeftUp: + return DPAD_PRESSED(up); + case PVVBButtonLeftDown: + return DPAD_PRESSED(down); + case PVVBButtonLeftLeft: + return DPAD_PRESSED(left); + case PVVBButtonLeftRight: + return DPAD_PRESSED(right); + case PVVBButtonRightUp: + return [[[gamepad rightThumbstick] up] isPressed]; + case PVVBButtonRightDown: + return [[[gamepad rightThumbstick] down] isPressed]; + case PVVBButtonRightLeft: + return [[[gamepad rightThumbstick] left] isPressed]; + case PVVBButtonRightRight: + return [[[gamepad rightThumbstick] right] isPressed]; + case PVVBButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVVBButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVVBButtonL: + return [[gamepad leftShoulder] isPressed]; + case PVVBButtonR: + return [[gamepad rightShoulder] isPressed]; + case PVVBButtonStart: + return [[gamepad rightTrigger] isPressed]; + case PVVBButtonSelect: + return [[gamepad leftTrigger] isPressed]; + default: + break; + } + } + else if ([controller gamepad]) + { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVVBButtonLeftUp: + return [[dpad up] isPressed]; + case PVVBButtonLeftDown: + return [[dpad down] isPressed]; + case PVVBButtonLeftLeft: + return [[dpad left] isPressed]; + case PVVBButtonLeftRight: + return [[dpad right] isPressed]; + case PVVBButtonA: + return [[gamepad buttonB] isPressed]; + case PVVBButtonB: + return [[gamepad buttonA] isPressed]; + case PVVBButtonL: + return [[gamepad leftShoulder] isPressed]; + case PVVBButtonR: + return [[gamepad rightShoulder] isPressed]; + case PVVBButtonStart: + return [[gamepad buttonY] isPressed]; + case PVVBButtonSelect: + return [[gamepad buttonX] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVVBButtonLeftUp: + return [[dpad up] value] > 0.5; + break; + case PVVBButtonLeftDown: + return [[dpad down] value] > 0.5; + break; + case PVVBButtonLeftLeft: + return [[dpad left] value] > 0.5; + break; + case PVVBButtonLeftRight: + return [[dpad right] value] > 0.5; + break; + case PVVBButtonA: + return [[gamepad buttonA] isPressed]; + break; + case PVVBButtonB: + return [[gamepad buttonX] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} +#pragma mark Wonderswan Buttons +- (NSInteger)WonderSwanControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + /* WonderSwan has a Top (Y) D-Pad and a lower (X) D-Pad. MFi controllers + may have the Joy Stick and Left D-Pad in either Top/Bottom configuration. + Another Option is to map to Left/Right Joystick and Make left D-Pad same as + left JoyStick, but if the games require using Left/Right hand at same time it + may be difficult to his the right d-pad and action buttons at the same time. + -joe M */ + case PVWSButtonX1: + return [[[gamepad leftThumbstick] up] isPressed]; + case PVWSButtonX3: + return [[[gamepad leftThumbstick] down] isPressed]; + case PVWSButtonX4: + return [[[gamepad leftThumbstick] left] isPressed]; + case PVWSButtonX2: + return [[[gamepad leftThumbstick] right] isPressed]; + case PVWSButtonY1: + return [[dpad up] isPressed]; + case PVWSButtonY3: + return [[dpad down] isPressed]; + case PVWSButtonY4: + return [[dpad left] isPressed]; + case PVWSButtonY2: + return [[dpad right] isPressed]; + case PVWSButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVWSButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVWSButtonStart: + return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; + case PVWSButtonSound: + return [[gamepad leftShoulder] isPressed]; + default: + break; + } + } + else if ([controller gamepad]) + { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVWSButtonX1: + return [[dpad up] isPressed]; + case PVWSButtonX3: + return [[dpad down] isPressed]; + case PVWSButtonX4: + return [[dpad left] isPressed]; + case PVWSButtonX2: + return [[dpad right] isPressed]; + case PVWSButtonA: + return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; + case PVWSButtonB: + return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; + case PVWSButtonStart: + return [[gamepad rightShoulder] isPressed]; + case PVWSButtonSound: + return [[gamepad leftShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVWSButtonX1: + return [[dpad up] value] > 0.5; + break; + case PVWSButtonX3: + return [[dpad down] value] > 0.5; + break; + case PVWSButtonX4: + return [[dpad left] value] > 0.5; + break; + case PVWSButtonX2: + return [[dpad right] value] > 0.5; + break; + case PVWSButtonA: + return [[gamepad buttonA] isPressed]; + break; + case PVWSButtonB: + return [[gamepad buttonX] isPressed]; + break; + default: + break; + } + } +#endif + return 0; +} + +//- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { +// +//} +// +//- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { +// +//} +// +//- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { +// +//} + +@end diff --git a/Cores/Mednafen/MednafenGameCore.h b/Cores/Mednafen/MednafenGameCore.h index b1017d3b33..8cc73a6985 100644 --- a/Cores/Mednafen/MednafenGameCore.h +++ b/Cores/Mednafen/MednafenGameCore.h @@ -27,6 +27,7 @@ #import #import +#import @class OERingBuffer; @@ -48,6 +49,34 @@ typedef NS_ENUM(NSInteger, MednaSystem) { MednaSystemWonderSwan }; +#pragma mark - Input maps +static int GBAMap[PVGBAButtonCount]; +static int GBMap[PVGBButtonCount]; +static int SNESMap[PVSNESButtonCount]; +static int NESMap[PVNESButtonCount]; +static int PCEMap[PVPCEButtonCount]; +static int PCFXMap[PVPCFXButtonCount]; + +// Map OE button order to Mednafen button order + +// Pause, B, 1, 2, ↓, ↑, ←, → +static const int LynxMap[] = { 6, 7, 4, 5, 0, 1, 3, 2 }; + +// ↑, ↓, ←, →, A, B, Start, Select +//const int NESMap[PVNESButtonCount] = { 4, 5, 6, 7, 0, 1, 3, 2}; + +// Select, [Triangle], [X], Start, R1, R2, left stick u, left stick left, +static const int PSXMap[] = { 4, 6, 7, 5, 12, 13, 14, 15, 10, 8, 1, 11, 9, 2, 3, 0, 16, 24, 23, 22, 21, 20, 19, 18, 17 }; +static const int VBMap[] = { 9, 8, 7, 6, 4, 13, 12, 5, 3, 2, 0, 1, 10, 11 }; +static const int WSMap[] = { 0, 2, 3, 1, 4, 6, 7, 5, 9, 10, 8, 11 }; +static const int NeoMap[] = { 0, 1, 2, 3, 4, 5, 6}; + +// SS Sega Saturn +static int SSMap[PVSaturnButtonCount]; // = { 4, 5, 6, 7, 10, 8, 9, 2, 1, 0, 15, 3, 11 }; + +// SMS, GG and MD unused as of now. Mednafen support is not maintained +static const int GenesisMap[] = { 5, 7, 11, 10, 0 ,1, 2, 3, 4, 6, 8, 9}; + __attribute__((visibility("default"))) @interface MednafenGameCore : PVEmulatorCore @@ -59,8 +88,28 @@ __attribute__((visibility("default"))) @end + +#define DEADZONE 0.1f +#define OUTSIDE_DEADZONE(x) gamepad.leftThumbstick.x.value > DEADZONE +#define DPAD_PRESSED(x) [[dpad x] isPressed]?:OUTSIDE_DEADZONE(x) + // for Swift -@interface MednafenGameCore() +@interface MednafenGameCore() { + uint32_t *inputBuffer[13]; + int16_t axis[8]; + int videoWidth, videoHeight; + int videoOffsetX, videoOffsetY; + int multiTapPlayerCount; + NSString *romName; + double sampleRate; + double masterClock; + + BOOL _isSBIRequired; + + NSString *mednafenCoreModule; + NSTimeInterval mednafenCoreTiming; +} + @property (nonatomic, assign) MednaSystem systemType; @property (nonatomic, assign) NSUInteger maxDiscs; @@ -74,3 +123,89 @@ __attribute__((visibility("default"))) - (BOOL)getCheatSupport; @end + +@interface MednafenGameCore (Controls) + +- (void)didPushLynxButton:(PVLynxButton)button forPlayer:(NSInteger)player; +- (void)didReleaseLynxButton:(PVLynxButton)button forPlayer:(NSInteger)player; +- (NSInteger)LynxControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; + +#pragma mark SNES +- (void)didPushSNESButton:(enum PVSNESButton)button forPlayer:(NSInteger)player; +- (void)didReleaseSNESButton:(enum PVSNESButton)button forPlayer:(NSInteger)player; + +#pragma mark NES +- (void)didPushNESButton:(enum PVNESButton)button forPlayer:(NSInteger)player; +- (void)didReleaseNESButton:(enum PVNESButton)button forPlayer:(NSInteger)player; + +#pragma mark GB / GBC +- (void)didPushGBButton:(enum PVGBButton)button forPlayer:(NSInteger)player; +- (void)didReleaseGBButton:(enum PVGBButton)button forPlayer:(NSInteger)player; + +#pragma mark GBA +- (void)didPushGBAButton:(enum PVGBAButton)button forPlayer:(NSInteger)player; +- (void)didReleaseGBAButton:(enum PVGBAButton)button forPlayer:(NSInteger)player; + +#pragma mark Sega +- (void)didPushSegaButton:(enum PVGenesisButton)button forPlayer:(NSInteger)player; +- (void)didReleaseSegaButton:(enum PVGenesisButton)button forPlayer:(NSInteger)player; + +#pragma mark Neo Geo +- (void)didPushNGPButton:(PVNGPButton)button forPlayer:(NSInteger)player; +- (void)didReleaseNGPButton:(PVNGPButton)button forPlayer:(NSInteger)player; + +#pragma mark PC-* +#pragma mark PCE aka TurboGFX-16 & SuperGFX +- (void)didPushPCEButton:(PVPCEButton)button forPlayer:(NSInteger)player; +- (void)didReleasePCEButton:(PVPCEButton)button forPlayer:(NSInteger)player; + +#pragma mark PCE-CD +- (void)didPushPCECDButton:(PVPCECDButton)button forPlayer:(NSInteger)player; +- (void)didReleasePCECDButton:(PVPCECDButton)button forPlayer:(NSInteger)player; +#pragma mark PCFX +- (void)didPushPCFXButton:(PVPCFXButton)button forPlayer:(NSInteger)player; +- (void)didReleasePCFXButton:(PVPCFXButton)button forPlayer:(NSInteger)player; +#pragma mark SS Sega Saturn +- (void)didPushSSButton:(enum PVSaturnButton)button forPlayer:(NSInteger)player; +-(void)didReleaseSSButton:(enum PVSaturnButton)button forPlayer:(NSInteger)player; + +#pragma mark PSX +- (void)didPushPSXButton:(PVPSXButton)button forPlayer:(NSInteger)player; + +- (void)didReleasePSXButton:(PVPSXButton)button forPlayer:(NSInteger)player; +- (void)didMovePSXJoystickDirection:(PVPSXButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +#pragma mark Virtual Boy +- (void)didPushVBButton:(PVVBButton)button forPlayer:(NSInteger)player; +- (void)didReleaseVBButton:(PVVBButton)button forPlayer:(NSInteger)player; +#pragma mark WonderSwan +- (void)didPushWSButton:(PVWSButton)button forPlayer:(NSInteger)player; +- (void)didReleaseWSButton:(PVWSButton)button forPlayer:(NSInteger)player; + +- (NSInteger)controllerValueForButtonID:(unsigned)buttonID forPlayer:(NSInteger)player withAnalogMode:(bool)analogMode; +#pragma mark SS Buttons +- (NSInteger)SSValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +#pragma mark GB Buttons +- (NSInteger)GBValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +#pragma mark GBA Buttons +- (NSInteger)GBAValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; + +#pragma mark SNES Buttons +- (NSInteger)SNESValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +#pragma mark NES Buttons +- (NSInteger)NESValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +#pragma mark NEOGEOPOCKET Buttons +- (NSInteger)NeoGeoValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +#pragma mark PCE Buttons +- (NSInteger)PCEValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +#pragma mark PSX Buttons +- (float)PSXAnalogControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +- (NSInteger)PSXcontrollerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller withAnalogMode:(bool)analogMode; +#pragma mark VirtualBoy Buttons +- (NSInteger)VirtualBoyControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; +#pragma mark Wonderswan Buttons +- (NSInteger)WonderSwanControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller; + +//- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; +//- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player; +//- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +@end diff --git a/Cores/Mednafen/MednafenGameCore.mm b/Cores/Mednafen/MednafenGameCore.mm index 7cc9c6e43e..9abec5ada8 100644 --- a/Cores/Mednafen/MednafenGameCore.mm +++ b/Cores/Mednafen/MednafenGameCore.mm @@ -1,28 +1,28 @@ /* Copyright (c) 2013, OpenEmu Team - - + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the OpenEmu Team nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma clang diagnostic push @@ -37,7 +37,7 @@ #import "MednafenGameCore.h" -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -48,7 +48,7 @@ #endif -#import +#import #import #import #import @@ -73,59 +73,20 @@ @interface MednafenGameCore (MultiTap) static Mednafen::MDFN_Surface *frontBufferSurf; NSMutableDictionary *cheatList; -#pragma mark - Input maps -int GBAMap[PVGBAButtonCount]; -int GBMap[PVGBButtonCount]; -int SNESMap[PVSNESButtonCount]; -int NESMap[PVNESButtonCount]; -int PCEMap[PVPCEButtonCount]; -int PCFXMap[PVPCFXButtonCount]; - -// Map OE button order to Mednafen button order - -// Pause, B, 1, 2, ↓, ↑, ←, → -const int LynxMap[] = { 6, 7, 4, 5, 0, 1, 3, 2 }; - -// ↑, ↓, ←, →, A, B, Start, Select -//const int NESMap[PVNESButtonCount] = { 4, 5, 6, 7, 0, 1, 3, 2}; - -// Select, [Triangle], [X], Start, R1, R2, left stick u, left stick left, -const int PSXMap[] = { 4, 6, 7, 5, 12, 13, 14, 15, 10, 8, 1, 11, 9, 2, 3, 0, 16, 24, 23, 22, 21, 20, 19, 18, 17 }; -const int VBMap[] = { 9, 8, 7, 6, 4, 13, 12, 5, 3, 2, 0, 1, 10, 11 }; -const int WSMap[] = { 0, 2, 3, 1, 4, 6, 7, 5, 9, 10, 8, 11 }; -const int NeoMap[] = { 0, 1, 2, 3, 4, 5, 6}; - -// SS Sega Saturn -const int SSMap[] = { 4, 5, 6, 7, 10, 8, 9, 2, 1, 0, 15, 3, 11 }; -// SMS, GG and MD unused as of now. Mednafen support is not maintained -const int GenesisMap[] = { 5, 7, 11, 10, 0 ,1, 2, 3, 4, 6, 8, 9}; namespace MDFN_IEN_VB { - extern void VIP_SetParallaxDisable(bool disabled); - extern void VIP_SetAnaglyphColors(uint32 lcolor, uint32 rcolor); - int mednafenCurrentDisplayMode = 1; +extern void VIP_SetParallaxDisable(bool disabled); +extern void VIP_SetAnaglyphColors(uint32 lcolor, uint32 rcolor); +int mednafenCurrentDisplayMode = 1; } @interface MednafenGameCore () { - uint32_t *inputBuffer[8]; - int16 axis[8]; - int videoWidth, videoHeight; - int videoOffsetX, videoOffsetY; - int multiTapPlayerCount; - NSString *romName; - double sampleRate; - double masterClock; - - BOOL _isSBIRequired; - - NSString *mednafenCoreModule; - NSTimeInterval mednafenCoreTiming; OEIntSize mednafenCoreAspect; - + Mednafen::EmulateSpecStruct spec; } @@ -144,18 +105,18 @@ static void mednafen_init(MednafenGameCore* current) { NSString* batterySavesDirectory = current.batterySavesPath; NSString* biosPath = current.BIOSPath; - + Mednafen::MDFNI_InitializeModules(); - + std::vector settings; - + MDFNI_Initialize([biosPath UTF8String], settings); - + // Set bios/system file and memcard save paths Mednafen::MDFNI_SetSetting("pce.cdbios", [[[biosPath stringByAppendingPathComponent:@"syscard3"] stringByAppendingPathExtension:@"pce"] UTF8String]); // PCE CD BIOS Mednafen::MDFNI_SetSetting("pce_fast.cdbios", [[[biosPath stringByAppendingPathComponent:@"syscard3"] stringByAppendingPathExtension:@"pce"] UTF8String]); // PCE CD BIOS Mednafen::MDFNI_SetSetting("pcfx.bios", [[[biosPath stringByAppendingPathComponent:@"pcfx"] stringByAppendingPathExtension:@"rom"] UTF8String]); // PCFX BIOS - + Mednafen::MDFNI_SetSetting("psx.bios_jp", [[[biosPath stringByAppendingPathComponent:@"scph5500"] stringByAppendingPathExtension:@"bin"] UTF8String]); // JP SCPH-5500 BIOS Mednafen::MDFNI_SetSetting("psx.bios_na", [[[biosPath stringByAppendingPathComponent:@"scph5501"] stringByAppendingPathExtension:@"bin"] UTF8String]); // NA SCPH-5501 BIOS Mednafen::MDFNI_SetSetting("psx.bios_eu", [[[biosPath stringByAppendingPathComponent:@"scph5502"] stringByAppendingPathExtension:@"bin"] UTF8String]); // EU SCPH-5502 BIOS @@ -168,26 +129,34 @@ static void mednafen_init(MednafenGameCore* current) if ([[NSFileManager defaultManager] fileExistsAtPath:gbaBIOSPath]) { Mednafen::MDFNI_SetSetting("gba.bios", [[[biosPath stringByAppendingPathComponent:@"GBA"] stringByAppendingPathExtension:@"BIOS"] UTF8String]); // } - + Mednafen::MDFNI_SetSetting("filesys.path_sav", [batterySavesDirectory UTF8String]); // Memcards - - // MARK: Global settings - - // Enable time synchronization(waiting) for frame blitting. - // Disable to reduce latency, at the cost of potentially increased video "juddering", with the maximum reduction in latency being about 1 video frame's time. - // Will work best with emulated systems that are not very computationally expensive to emulate, combined with running on a relatively fast CPU. - // Default: 1 - BOOL video_blit_timesync = current.video_blit_timesync; - Mednafen::MDFNI_SetSettingB("video.blit_timesync", video_blit_timesync); - BOOL video_fs = current.video_fs; - Mednafen::MDFNI_SetSettingB("video.fs", video_fs); // Enable fullscreen mode. Default: 0 + // MARK: Global settings + + // Enable time synchronization(waiting) for frame blitting. + // Disable to reduce latency, at the cost of potentially increased video "juddering", with the maximum reduction in latency being about 1 video frame's time. + // Will work best with emulated systems that are not very computationally expensive to emulate, combined with running on a relatively fast CPU. + // Default: 1 +// BOOL video_blit_timesync = current.video_blit_timesync; +// Mednafen::MDFNI_SetSettingUI("video.blit_timesync", video_blit_timesync); +// +// BOOL video_fs = current.video_fs; +// Mednafen::MDFNI_SetSettingUI("video.fs", video_fs); // Enable fullscreen mode. Default: 0 +// +// const char* video_opengl = current.video_opengl ? "opengl" : "default"; +// Mednafen::MDFNI_SetSetting("video.driver", video_opengl); - const char* video_opengl = current.video_opengl ? "opengl" : "default"; - Mednafen::MDFNI_SetSetting("video.driver", video_opengl); + // Cache cd's to memory + BOOL cd_image_memcache = current.cd_image_memcache; + Mednafen::MDFNI_SetSettingB("cd.image_memcache", cd_image_memcache); + + // MARK: Sound + // TODO: Read from device? +// Mednafen::MDFNI_SetSettingUI("sound.rate", "44100"); // MARK: VirtualBoy - + // VB defaults. dox http://mednafen.sourceforge.net/documentation/09x/vb.html Mednafen::MDFNI_SetSetting("vb.disable_parallax", "1"); // Disable parallax for BG and OBJ rendering Mednafen::MDFNI_SetSetting("vb.anaglyph.preset", "disabled"); // Disable anaglyph preset @@ -195,9 +164,9 @@ static void mednafen_init(MednafenGameCore* current) Mednafen::MDFNI_SetSetting("vb.anaglyph.rcolor", "0x000000"); // Anaglyph r color Mednafen::MDFNI_SetSetting("vb.default_color", "0xFF0000"); // Anaglyph r color - + //MDFNI_SetSetting("vb.allow_draw_skip", "1"); // Allow draw skipping - + // Display latency reduction hack. // Reduces latency in games by displaying the framebuffer 20ms earlier. This hack has some potential of causing graphical glitches, so it is disabled by default. BOOL vb_instant_display_hack = current.vb_instant_display_hack; @@ -207,133 +176,191 @@ static void mednafen_init(MednafenGameCore* current) Mednafen::MDFNI_SetSetting("vb.3dmode", vb_sidebyside); // This setting refers to pixels before vb.xscale(fs) scaling is taken into consideration. For example, a value of "100" here will result in a separation of 300 screen pixels if vb.xscale(fs) is set to "3". - int seperation = [MednafenGameCore intForOption:@"FullTMEMEmulation"]; - Mednafen::MDFNI_SetSettingUI("vb.sidebyside.separation", seperation); +// int seperation = current.vb_sidebyside_seperation; +// Mednafen::MDFNI_SetSetting("vb.sidebyside.separation", seperation); // Mednafen::MDFNI_SetSetting("vb.sidebyside.separation", [NSString stringWithFormat:@"%i", seperation].UTF8String); - // MARK: SNES Faust settings + // MARK: SNES Faust settings BOOL snes_faust_spex = current.mednafen_snesFast_spex; Mednafen::MDFNI_SetSettingB("snes_faust.spex", snes_faust_spex); - // Enable 1-frame speculative execution for video output. - // Hack to reduce input->output video latency by 1 frame. Enabling will increase CPU usage, - // and may cause video glitches(such as "jerkiness") in some oddball games, but most commercially-released games should be fine. - // Default 0 - -// MDFNI_SetSetting("snes_faust.special", "nn2x"); - + // Enable 1-frame speculative execution for video output. + // Hack to reduce input->output video latency by 1 frame. Enabling will increase CPU usage, + // and may cause video glitches(such as "jerkiness") in some oddball games, but most commercially-released games should be fine. + // Default 0 + + // MDFNI_SetSetting("snes_faust.special", "nn2x"); + // MARK: Sega Saturn Settings - Mednafen::MDFNI_SetSetting("ss.region_default", "na"); // Used if region autodetection fails or is disabled. + // https://mednafen.github.io/documentation/ss.html + BOOL ss_h_overscan = current.ss_h_overscan; + Mednafen::MDFNI_SetSettingB("ss.h_overscan", ss_h_overscan); // Show horizontal overscan area. 1 default + + const char* ss_cart_autodefault; + switch (current.ss_cart_autodefault) { + case 0: + ss_cart_autodefault = "none"; + break; + case 1: + ss_cart_autodefault = "backup"; + break; + case 2: + ss_cart_autodefault = "extram1"; + break; + case 3: + ss_cart_autodefault = "extram4"; + break; + case 4: + ss_cart_autodefault = "cs1ram16"; + break; + default: + ss_cart_autodefault = "backup"; + break; + } + Mednafen::MDFNI_SetSetting("ss.cart.auto_default", ss_cart_autodefault); + const char* ss_region_default; + switch (current.ss_region_default) { + case 0: + ss_region_default = "jp"; + break; + case 1: + ss_region_default = "na"; + break; + case 2: + ss_region_default = "eu"; + break; + case 3: + ss_region_default = "kr"; + break; + case 4: + ss_region_default = "tw"; + break; + case 5: + ss_region_default = "as"; + break; + case 6: + ss_region_default = "br"; + break; + case 7: + ss_region_default = "la"; + break; + default: + ss_region_default = "jp"; + break; + } + Mednafen::MDFNI_SetSetting("ss.region_default", ss_region_default); - // MARK: NES Settings - + // MARK: NES Settings + Mednafen::MDFNI_SetSettingUI("nes.clipsides", 1); // Clip left+right 8 pixel columns. 0 default Mednafen::MDFNI_SetSettingB("nes.correct_aspect", true); // Correct the aspect ratio. 0 default - - - // MARK: PSX Settings + + + // MARK: PSX Settings BOOL psx_h_overscan = current.psx_h_overscan; Mednafen::MDFNI_SetSettingB("psx.h_overscan", psx_h_overscan); // Show horizontal overscan area. 1 default Mednafen::MDFNI_SetSetting("psx.region_default", "na"); // Set default region to North America if auto detect fails, default: jp - + Mednafen::MDFNI_SetSettingB("psx.input.analog_mode_ct", false); // Enable Analog mode toggle - /* - 0x0001=SELECT - 0x0002=L3 - 0x0004=R3 - 0x0008=START - 0x0010=D-Pad Up - 0x0020=D-Pad Right - 0x0040=D-Pad Down - 0x0080=D-Pad Left - 0x0100=L2 - 0x0200=R2 - 0x0400=L1 - 0x0800=R1 - 0x1000=△ - 0x2000=○ - 0x4000=x - 0x8000=□ - */ - // Analog/Digital Toggle - uint64 amct = + /* + 0x0001=SELECT + 0x0002=L3 + 0x0004=R3 + 0x0008=START + 0x0010=D-Pad Up + 0x0020=D-Pad Right + 0x0040=D-Pad Down + 0x0080=D-Pad Left + 0x0100=L2 + 0x0200=R2 + 0x0400=L1 + 0x0800=R1 + 0x1000=△ + 0x2000=○ + 0x4000=x + 0x8000=□ + */ + // Analog/Digital Toggle + uint64 amct = ((1 << PSXMap[PVPSXButtonL1]) | (1 << PSXMap[PVPSXButtonR1]) | (1 << PSXMap[PVPSXButtonL2]) | (1 << PSXMap[PVPSXButtonR2]) | (1 << PSXMap[PVPSXButtonCircle])) || ((1 << PSXMap[PVPSXButtonL1]) | (1 << PSXMap[PVPSXButtonR1]) | (1 << PSXMap[PVPSXButtonCircle])); Mednafen::MDFNI_SetSettingUI("psx.input.analog_mode_ct.compare", amct); - - // MARK: PCE Settings -// MDFNI_SetSetting("pce.disable_softreset", "1"); // PCE: To prevent soft resets due to accidentally hitting RUN and SEL at the same time. -// MDFNI_SetSetting("pce.adpcmextraprec", "1"); // PCE: Enabling this option causes the MSM5205 ADPCM predictor to be outputted with full precision of 12-bits, -// // rather than only outputting 10-bits of precision(as an actual MSM5205 does). -// // Enable this option to reduce whining noise during ADPCM playback. + + // MARK: PCE Settings + // MDFNI_SetSetting("pce.disable_softreset", "1"); // PCE: To prevent soft resets due to accidentally hitting RUN and SEL at the same time. + // MDFNI_SetSetting("pce.adpcmextraprec", "1"); // PCE: Enabling this option causes the MSM5205 ADPCM predictor to be outputted with full precision of 12-bits, + // // rather than only outputting 10-bits of precision(as an actual MSM5205 does). + // // Enable this option to reduce whining noise during ADPCM playback. Mednafen::MDFNI_SetSetting("pce.slstart", "0"); // PCE: First rendered scanline 4 default Mednafen::MDFNI_SetSetting("pce.slend", "239"); // PCE: Last rendered scanline 235 default, 241 max Mednafen::MDFNI_SetSetting("pce.h_overscan", "1"); // PCE: Show horizontal overscan are, default 0. Needed for correctly displaying the system aspect ratio. Mednafen::MDFNI_SetSetting("pce.resamp_quality", "5"); // PCE: Audio resampler quality, default 3 Higher values correspond to better SNR and better preservation of higher frequencies("brightness"), at the cost of increased computational complexity and a negligible increase in latency. Higher values will also slightly increase the probability of sample clipping(relevant if Mednafen's volume control settings are set too high), due to increased (time-domain) ringing. Mednafen::MDFNI_SetSetting("pce.resamp_rate_error", "0.0000001"); // PCE: Sound output rate tolerance. Lower values correspond to better matching of the output rate of the resampler to the actual desired output rate, at the expense of increased RAM usage and poorer CPU cache utilization. default 0.0000009 Mednafen::MDFNI_SetSetting("pce.cdpsgvolume", "62"); // PCE: PSG volume when playing a CD game. Setting this volume control too high may cause sample clipping. default 100 - - // MARK: PCE_Fast settings - + + // MARK: PCE_Fast settings + Mednafen::MDFNI_SetSetting("pce_fast.cdspeed", "4"); // PCE: CD-ROM data transfer speed multiplier. Default is 1 -// MDFNI_SetSetting("pce_fast.disable_softreset", "1"); // PCE: To prevent soft resets due to accidentally hitting RUN and SEL at the same time + // MDFNI_SetSetting("pce_fast.disable_softreset", "1"); // PCE: To prevent soft resets due to accidentally hitting RUN and SEL at the same time Mednafen::MDFNI_SetSetting("pce_fast.slstart", "0"); // PCE: First rendered scanline Mednafen::MDFNI_SetSetting("pce_fast.slend", "239"); // PCE: Last rendered scanline - - // MARK: PC-FX Settings + + // MARK: PC-FX Settings Mednafen::MDFNI_SetSetting("pcfx.cdspeed", "8"); // PCFX: Emulated CD-ROM speed. Setting the value higher than 2, the default, will decrease loading times in most games by some degree. -// MDFNI_SetSetting("pcfx.input.port1.multitap", "1"); // PCFX: EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5. + // MDFNI_SetSetting("pcfx.input.port1.multitap", "1"); // PCFX: EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5. Mednafen::MDFNI_SetSetting("pcfx.nospritelimit", "1"); // PCFX: Remove 16-sprites-per-scanline hardware limit. Mednafen::MDFNI_SetSetting("pcfx.slstart", "4"); // PCFX: First rendered scanline 4 default Mednafen::MDFNI_SetSetting("pcfx.slend", "235"); // PCFX: Last rendered scanline 235 default, 239max + + // MARK: Cheats Mednafen::MDFNI_SetSetting("cheats", "1"); // // MARK: HUD // Enable FPS #if DEBUG - Mednafen::MDFNI_SetSetting("fps.autoenable", "1"); +// Mednafen::MDFNI_SetSettingUI("fps.autoenable", 1); #endif - -// NSString *cfgPath = [[current BIOSPath] stringByAppendingPathComponent:@"mednafen-export.cfg"]; -// Mednafen::MDFN_SaveSettings(cfgPath.UTF8String); + + // NSString *cfgPath = [[current BIOSPath] stringByAppendingPathComponent:@"mednafen-export.cfg"]; + // Mednafen::MDFN_SaveSettings(cfgPath.UTF8String); } - (id)init { if((self = [super init])) { _current = self; - + multiTapPlayerCount = 2; - - for(unsigned i = 0; i < 8; i++) { + + for(unsigned i = 0; i < 13; i++) { inputBuffer[i] = (uint32_t *) calloc(9, sizeof(uint32_t)); } - - GBAMap[PVGBAButtonRight] = 4; + + GBAMap[PVGBAButtonRight] = 4; GBAMap[PVGBAButtonLeft] = 5; GBAMap[PVGBAButtonUp] = 6; GBAMap[PVGBAButtonDown] = 7; GBAMap[PVGBAButtonA] = 0; - GBAMap[PVGBAButtonB] = 1; + GBAMap[PVGBAButtonB] = 1; - GBAMap[PVGBAButtonSelect] = 2; - GBAMap[PVGBAButtonStart] = 3; + GBAMap[PVGBAButtonSelect] = 2; + GBAMap[PVGBAButtonStart] = 3; GBAMap[PVGBAButtonR] = 8; - GBAMap[PVGBAButtonL] = 9; - - // Gameboy + Color Map - GBMap[PVGBButtonRight] = 4; + GBAMap[PVGBAButtonL] = 9; + + // Gameboy + Color Map + GBMap[PVGBButtonRight] = 4; GBMap[PVGBButtonLeft] = 5; GBMap[PVGBButtonUp] = 6; GBMap[PVGBButtonDown] = 7; GBMap[PVGBButtonA] = 0; - GBMap[PVGBButtonB] = 1; - GBMap[PVGBButtonSelect] = 2; - GBMap[PVGBButtonStart] = 3; - - // SNES Map + GBMap[PVGBButtonB] = 1; + GBMap[PVGBButtonSelect] = 2; + GBMap[PVGBButtonStart] = 3; + + // SNES Map SNESMap[PVSNESButtonUp] = 4; SNESMap[PVSNESButtonDown] = 5; SNESMap[PVSNESButtonLeft] = 6; @@ -361,59 +388,100 @@ - (id)init { NESMap[PVNESButtonSelect] = 2; NESMap[PVNESButtonStart] = 3; - - // PCE Map + + // PCE Map PCEMap[PVPCEButtonUp] = 4; PCEMap[PVPCEButtonRight] = 5; PCEMap[PVPCEButtonDown] = 6; PCEMap[PVPCEButtonLeft] = 7; - + PCEMap[PVPCEButtonButton1] = 0; PCEMap[PVPCEButtonButton2] = 1; PCEMap[PVPCEButtonButton3] = 8; PCEMap[PVPCEButtonButton4] = 9; PCEMap[PVPCEButtonButton5] = 10; PCEMap[PVPCEButtonButton6] = 11; - + PCEMap[PVPCEButtonSelect] = 2; PCEMap[PVPCEButtonRun] = 3; PCEMap[PVPCEButtonMode] = 12; - - // PCFX Map + + // PCFX Map PCFXMap[PVPCFXButtonUp] = 8; PCFXMap[PVPCFXButtonRight] = 9; PCFXMap[PVPCFXButtonDown] = 10; PCFXMap[PVPCFXButtonLeft] = 11; - + PCFXMap[PVPCFXButtonButton1] = 0; PCFXMap[PVPCFXButtonButton2] = 1; PCFXMap[PVPCFXButtonButton3] = 2; PCFXMap[PVPCFXButtonButton4] = 3; PCFXMap[PVPCFXButtonButton5] = 4; PCFXMap[PVPCFXButtonButton6] = 5; - + PCFXMap[PVPCFXButtonSelect] = 6; PCFXMap[PVPCFXButtonRun] = 7; PCFXMap[PVPCFXButtonMode] = 12; + // Saturn SS map + // static const int SSMap[] = { 4, 5, 6, 7, 10, 8, 9, 2, 1, 0, 15, 3, 11 }; + /* IDIISG IODevice_Gamepad_IDII = + { + IDIIS_Button("z", "Z", 10), + IDIIS_Button("y", "Y", 9), + IDIIS_Button("x", "X", 8), + IDIIS_Button("rs", "Right Shoulder", 12), + + IDIIS_Button("up", "UP ↑", 0, "down"), + IDIIS_Button("down", "DOWN ↓", 1, "up"), + IDIIS_Button("left", "LEFT ←", 2, "right"), + IDIIS_Button("right", "RIGHT →", 3, "left"), + + IDIIS_Button("b", "B", 6), + IDIIS_Button("c", "C", 7), + IDIIS_Button("a", "A", 5), + IDIIS_Button("start", "START", 4), + + IDIIS_Padding<1>(), + IDIIS_Padding<1>(), + IDIIS_Padding<1>(), + IDIIS_Button("ls", "Left Shoulder", 11), + }; + */ + SSMap[PVSaturnButtonUp] = 4; + SSMap[PVSaturnButtonDown] = 5; + SSMap[PVSaturnButtonLeft] = 6; + SSMap[PVSaturnButtonRight] = 7; + + SSMap[PVSaturnButtonStart] = 3; + + SSMap[PVSaturnButtonA] = 10; + SSMap[PVSaturnButtonB] = 8; + SSMap[PVSaturnButtonC] = 9; + SSMap[PVSaturnButtonX] = 2; + SSMap[PVSaturnButtonY] = 1; + SSMap[PVSaturnButtonZ] = 0; + + SSMap[PVSaturnButtonL] = 11; + SSMap[PVSaturnButtonR] = 12; } - + cheatList = [[NSMutableDictionary alloc] init]; [self parseOptions]; - + return self; } - (void)dealloc { - for(unsigned i = 0; i < 8; i++) { + for(unsigned i = 0; i < 13; i++) { free(inputBuffer[i]); } - - + + if (_current == self) { _current = nil; - delete backBufferSurf; - delete frontBufferSurf; + delete backBufferSurf; + delete frontBufferSurf; } } @@ -426,30 +494,30 @@ static void emulation_run(BOOL skipFrame) { int32 rects[game->fb_height];//int32 *rects = new int32[game->fb_height]; //(int32 *)malloc(sizeof(int32) * game->fb_height); memset(rects, 0, game->fb_height*sizeof(int32)); rects[0] = ~0; - - current->spec = {0}; + + current->spec = {0}; current->spec.surface = backBufferSurf; current->spec.SoundRate = current->sampleRate; current->spec.SoundBuf = sound_buf; current->spec.LineWidths = rects; current->spec.SoundBufMaxSize = sizeof(sound_buf) / 2; - current->spec.SoundBufSize = 0; + current->spec.SoundBufSize = 0; current->spec.SoundVolume = 1.0; current->spec.soundmultiplier = 1.0; - current->spec.skip = skipFrame; - + current->spec.skip = skipFrame; + MDFNI_Emulate(¤t->spec); - + current->mednafenCoreTiming = current->masterClock / current->spec.MasterCycles; // Fix for game stutter. mednafenCoreTiming flutters on init before settling so // now we reset the game speed each frame to make sure current->gameInterval // is up to date while respecting the current game speed setting [current setGameSpeed:[current gameSpeed]]; - + current->videoOffsetX = current->spec.DisplayRect.x; current->videoOffsetY = current->spec.DisplayRect.y; - if(game->multires) { + if(game->multires || current->_systemType == MednaSystemPSX) { current->videoWidth = rects[current->spec.DisplayRect.y]; } else { @@ -457,35 +525,13 @@ static void emulation_run(BOOL skipFrame) { } current->videoHeight = current->spec.DisplayRect.h; -// if(current->_systemType == MednaSystemPSX) -// { -// current->videoWidth = rects[current->spec.DisplayRect.y]; -// current->videoOffsetX = current->spec.DisplayRect.x; -// } -// else if(game->multires) -// { -// current->videoWidth = rects[current->spec.DisplayRect.y]; -// current->videoOffsetX = current->spec.DisplayRect.x; -// } -// else -// { -// current->videoWidth = current->spec.DisplayRect.w; -// current->videoOffsetX = current->spec.DisplayRect.x; -// } -// -// current->videoHeight = current->spec.DisplayRect.h; -// current->videoOffsetY = current->spec.DisplayRect.y; - update_audio_batch(current->spec.SoundBuf, current->spec.SoundBufSize); - - //delete[] rects; } -- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error -{ +- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { [self parseOptions]; [[NSFileManager defaultManager] createDirectoryAtPath:[self batterySavesPath] withIntermediateDirectories:YES attributes:nil error:NULL]; - + if([[self systemIdentifier] isEqualToString:@"com.provenance.lynx"]) { self.systemType = MednaSystemLynx; @@ -495,61 +541,61 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); sampleRate = 48000; } - else if([[self systemIdentifier] isEqualToString:@"com.provenance.nes"]) - { - self.systemType = MednaSystemNES; - - mednafenCoreModule = @"nes"; - //mednafenCoreAspect = OEIntSizeMake(4, 3); - //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); - sampleRate = 48000; - } - else if([[self systemIdentifier] isEqualToString:@"com.provenance.snes"]) - { - self.systemType = MednaSystemSNES; - + else if([[self systemIdentifier] isEqualToString:@"com.provenance.nes"]) + { + self.systemType = MednaSystemNES; + + mednafenCoreModule = @"nes"; + //mednafenCoreAspect = OEIntSizeMake(4, 3); + //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); + sampleRate = 48000; + } + else if([[self systemIdentifier] isEqualToString:@"com.provenance.snes"]) + { + self.systemType = MednaSystemSNES; + mednafenCoreModule = self.mednafen_snesFast ? @"snes_faust" : @"snes"; - - //mednafenCoreAspect = OEIntSizeMake(4, 3); - //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); - sampleRate = 48000; - } - else if([[self systemIdentifier] isEqualToString:@"com.provenance.gb"] || [[self systemIdentifier] isEqualToString:@"com.provenance.gbc"]) - { - self.systemType = MednaSystemGB; - - mednafenCoreModule = @"gb"; - //mednafenCoreAspect = OEIntSizeMake(10, 9); - //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); - sampleRate = 48000; - } - else if([[self systemIdentifier] isEqualToString:@"com.provenance.gba"]) - { - self.systemType = MednaSystemGBA; - - mednafenCoreModule = @"gba"; - //mednafenCoreAspect = OEIntSizeMake(3, 2); - //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); - sampleRate = 44100; - } - else if([[self systemIdentifier] isEqualToString:@"com.provenance.genesis"]) // Genesis aka Megaddrive - { - self.systemType = MednaSystemMD; - - mednafenCoreModule = @"md"; - //mednafenCoreAspect = OEIntSizeMake(4, 3); - //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); - sampleRate = 48000; - } - else if([[self systemIdentifier] isEqualToString:@"com.provenance.mastersystem"]) - { - self.systemType = MednaSystemSMS; - - mednafenCoreModule = @"sms"; - //mednafenCoreAspect = OEIntSizeMake(256 * (8.0/7.0), 192); - //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); - sampleRate = 48000; - } + + //mednafenCoreAspect = OEIntSizeMake(4, 3); + //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); + sampleRate = 48000; + } + else if([[self systemIdentifier] isEqualToString:@"com.provenance.gb"] || [[self systemIdentifier] isEqualToString:@"com.provenance.gbc"]) + { + self.systemType = MednaSystemGB; + + mednafenCoreModule = @"gb"; + //mednafenCoreAspect = OEIntSizeMake(10, 9); + //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); + sampleRate = 48000; + } + else if([[self systemIdentifier] isEqualToString:@"com.provenance.gba"]) + { + self.systemType = MednaSystemGBA; + + mednafenCoreModule = @"gba"; + //mednafenCoreAspect = OEIntSizeMake(3, 2); + //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); + sampleRate = 44100; + } + else if([[self systemIdentifier] isEqualToString:@"com.provenance.genesis"]) // Genesis aka Megaddrive + { + self.systemType = MednaSystemMD; + + mednafenCoreModule = @"md"; + //mednafenCoreAspect = OEIntSizeMake(4, 3); + //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); + sampleRate = 48000; + } + else if([[self systemIdentifier] isEqualToString:@"com.provenance.mastersystem"]) + { + self.systemType = MednaSystemSMS; + + mednafenCoreModule = @"sms"; + //mednafenCoreAspect = OEIntSizeMake(256 * (8.0/7.0), 192); + //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); + sampleRate = 48000; + } else if([[self systemIdentifier] isEqualToString:@"com.provenance.ngp"] || [[self systemIdentifier] isEqualToString:@"com.provenance.ngpc"]) { self.systemType = MednaSystemNeoGeo; @@ -562,8 +608,8 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error else if([[self systemIdentifier] isEqualToString:@"com.provenance.pce"] || [[self systemIdentifier] isEqualToString:@"com.provenance.pcecd"] || [[self systemIdentifier] isEqualToString:@"com.provenance.sgfx"]) { self.systemType = MednaSystemPCE; - - + + mednafenCoreModule = self.mednafen_pceFast ? @"pce_fast" : @"pce"; //mednafenCoreAspect = OEIntSizeMake(256 * (8.0/7.0), 240); //mednafenCoreAspect = OEIntSizeMake(game->nominal_width, game->nominal_height); @@ -620,26 +666,26 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error NSLog(@"MednafenGameCore loadFileAtPath: Incorrect systemIdentifier"); assert(false); } - + assert(_current); mednafen_init(_current); Mednafen::NativeVFS fs = Mednafen::NativeVFS(); - + game = Mednafen::MDFNI_LoadGame([mednafenCoreModule UTF8String], &fs, [path UTF8String]); assert(game); - + if(!game) { if (error) { NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to load game.", - NSLocalizedFailureReasonErrorKey: @"Mednafen failed to load game.", - NSLocalizedRecoverySuggestionErrorKey: @"Check the file isn't corrupt and supported Mednafen ROM format." - }; - + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Mednafen failed to load game.", + NSLocalizedRecoverySuggestionErrorKey: @"Check the file isn't corrupt and supported Mednafen ROM format." + }; + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain code:PVEmulatorCoreErrorCodeCouldNotLoadRom userInfo:userInfo]; - + *error = newError; } return NO; @@ -653,10 +699,10 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error Mednafen::MDFN_PixelFormat pix_fmt(Mednafen::MDFN_COLORSPACE_RGB, 4, 0, 8, 16, 24); backBufferSurf = new Mednafen::MDFN_Surface(NULL, game->fb_width, game->fb_height, game->fb_width, pix_fmt); frontBufferSurf = new Mednafen::MDFN_Surface(NULL, game->fb_width, game->fb_height, game->fb_width, pix_fmt); - + masterClock = game->MasterClock >> 32; BOOL multiDiscGame = NO; - + if (self.systemType == MednaSystemPCE) { game->SetInput(0, "gamepad", (uint8_t *)inputBuffer[0]); @@ -709,87 +755,89 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error } // PSX: Set multitap configuration if detected -// NSString *serial = [self romSerial]; -// NSNumber* multitapCount = [MednafenGameCore multiDiscPSXGames][serial]; -// -// FIXME: "forget about multitap for now :)" - // Set multitap configuration if detected - // if (multiTapGames[[current ROMSerial]]) - // { - // current->multiTapPlayerCount = [[multiTapGames objectForKey:[current ROMSerial]] intValue]; - // - // if([multiTap5PlayerPort2 containsObject:[current ROMSerial]]) - // MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 - // else - // { - // MDFNI_SetSetting("psx.input.pport1.multitap", "1"); // Enable multitap on PSX port 1 - // if(current->multiTapPlayerCount > 5) - // MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 - // } - // } - - -// if (multitapCount != nil) -// { -// multiTapPlayerCount = [multitapCount intValue]; -// -// if([[MednafenGameCore multiTap5PlayerPort2] containsObject:serial]) { -// MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 -// } else { -// MDFNI_SetSetting("psx.input.pport1.multitap", "1"); // Enable multitap on PSX port 1 -// if(multiTapPlayerCount > 5) { -// MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 -// } -// } -// } + // NSString *serial = [self romSerial]; + // NSNumber* multitapCount = [MednafenGameCore multiDiscPSXGames][serial]; + // + // FIXME: "forget about multitap for now :)" + // Set multitap configuration if detected + // if (multiTapGames[[current ROMSerial]]) + // { + // current->multiTapPlayerCount = [[multiTapGames objectForKey:[current ROMSerial]] intValue]; + // + // if([multiTap5PlayerPort2 containsObject:[current ROMSerial]]) + // MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 + // else + // { + // MDFNI_SetSetting("psx.input.pport1.multitap", "1"); // Enable multitap on PSX port 1 + // if(current->multiTapPlayerCount > 5) + // MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 + // } + // } + + + // if (multitapCount != nil) + // { + // multiTapPlayerCount = [multitapCount intValue]; + // + // if([[MednafenGameCore multiTap5PlayerPort2] containsObject:serial]) { + // MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 + // } else { + // MDFNI_SetSetting("psx.input.pport1.multitap", "1"); // Enable multitap on PSX port 1 + // if(multiTapPlayerCount > 5) { + // MDFNI_SetSetting("psx.input.pport2.multitap", "1"); // Enable multitap on PSX port 2 + // } + // } + // } // PSX: Check if SBI file is required - if ([MednafenGameCore sbiRequiredGames][self.romSerial]) - { - _isSBIRequired = YES; - } + if ([MednafenGameCore sbiRequiredGames][self.romSerial]) + { + _isSBIRequired = YES; + } // Handle required SBI files for games // TODO: Handle SBI Games -// if(_isSBIRequired && _allCueSheetFiles.count && ([path.pathExtension.lowercaseString isEqualToString:@"cue"] || [path.pathExtension.lowercaseString isEqualToString:@"m3u"])) -// { -// NSURL *romPath = [NSURL fileURLWithPath:path.stringByDeletingLastPathComponent]; -// -// BOOL missingFileStatus = NO; -// NSUInteger missingFileCount = 0; -// NSMutableString *missingFilesList = [NSMutableString string]; -// -// // Build a path to SBI file and check if it exists -// for(NSString *cueSheetFile in _allCueSheetFiles) -// { -// NSString *extensionlessFilename = cueSheetFile.stringByDeletingPathExtension; -// NSURL *sbiFile = [romPath URLByAppendingPathComponent:[extensionlessFilename stringByAppendingPathExtension:@"sbi"]]; -// -// // Check if the required SBI files exist -// if(![sbiFile checkResourceIsReachableAndReturnError:nil]) -// { -// missingFileStatus = YES; -// missingFileCount++; -// [missingFilesList appendString:[NSString stringWithFormat:@"\"%@\"\n\n", extensionlessFilename]]; -// } -// } -// // Alert the user of missing SBI files that are required for the game -// if(missingFileStatus) -// { -// NSError *outErr = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotLoadROMError userInfo:@{ -// NSLocalizedDescriptionKey : missingFileCount > 1 ? @"Required SBI files missing." : @"Required SBI file missing.", -// NSLocalizedRecoverySuggestionErrorKey : missingFileCount > 1 ? [NSString stringWithFormat:@"To run this game you need SBI files for the discs:\n\n%@Drag and drop the required files onto the game library window and try again.\n\nFor more information, visit:\nhttps://github.com/OpenEmu/OpenEmu/wiki/User-guide:-CD-based-games#q-i-have-a-sbi-file", missingFilesList] : [NSString stringWithFormat:@"To run this game you need a SBI file for the disc:\n\n%@Drag and drop the required file onto the game library window and try again.\n\nFor more information, visit:\nhttps://github.com/OpenEmu/OpenEmu/wiki/User-guide:-CD-based-games#q-i-have-a-sbi-file", missingFilesList], -// }]; -// -// *error = outErr; -// -// return NO; -// } -// } + // if(_isSBIRequired && _allCueSheetFiles.count && ([path.pathExtension.lowercaseString isEqualToString:@"cue"] || [path.pathExtension.lowercaseString isEqualToString:@"m3u"])) + // { + // NSURL *romPath = [NSURL fileURLWithPath:path.stringByDeletingLastPathComponent]; + // + // BOOL missingFileStatus = NO; + // NSUInteger missingFileCount = 0; + // NSMutableString *missingFilesList = [NSMutableString string]; + // + // // Build a path to SBI file and check if it exists + // for(NSString *cueSheetFile in _allCueSheetFiles) + // { + // NSString *extensionlessFilename = cueSheetFile.stringByDeletingPathExtension; + // NSURL *sbiFile = [romPath URLByAppendingPathComponent:[extensionlessFilename stringByAppendingPathExtension:@"sbi"]]; + // + // // Check if the required SBI files exist + // if(![sbiFile checkResourceIsReachableAndReturnError:nil]) + // { + // missingFileStatus = YES; + // missingFileCount++; + // [missingFilesList appendString:[NSString stringWithFormat:@"\"%@\"\n\n", extensionlessFilename]]; + // } + // } + // // Alert the user of missing SBI files that are required for the game + // if(missingFileStatus) + // { + // NSError *outErr = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotLoadROMError userInfo:@{ + // NSLocalizedDescriptionKey : missingFileCount > 1 ? @"Required SBI files missing." : @"Required SBI file missing.", + // NSLocalizedRecoverySuggestionErrorKey : missingFileCount > 1 ? [NSString stringWithFormat:@"To run this game you need SBI files for the discs:\n\n%@Drag and drop the required files onto the game library window and try again.\n\nFor more information, visit:\nhttps://github.com/OpenEmu/OpenEmu/wiki/User-guide:-CD-based-games#q-i-have-a-sbi-file", missingFilesList] : [NSString stringWithFormat:@"To run this game you need a SBI file for the disc:\n\n%@Drag and drop the required file onto the game library window and try again.\n\nFor more information, visit:\nhttps://github.com/OpenEmu/OpenEmu/wiki/User-guide:-CD-based-games#q-i-have-a-sbi-file", missingFilesList], + // }]; + // + // *error = outErr; + // + // return NO; + // } + // } } else { game->SetInput(0, "gamepad", (uint8_t *)inputBuffer[0]); - game->SetInput(1, "gamepad", (uint8_t *)inputBuffer[0]); + game->SetInput(1, "gamepad", (uint8_t *)inputBuffer[1]); +// game->SetInput(2, "gamepad", (uint8_t *)inputBuffer[2]); +// game->SetInput(3, "gamepad", (uint8_t *)inputBuffer[3]); } if (multiDiscGame && ![path.pathExtension.lowercaseString isEqualToString:@"m3u"]) { @@ -798,20 +846,20 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error if (rangeOfDocuments.location != NSNotFound) { m3uPath = [m3uPath substringFromIndex:rangeOfDocuments.location + 11]; } - + if (error) { NSString *message = [NSString stringWithFormat:@"This game requires multiple discs and must be loaded using a m3u file with all %lu discs.\n\nTo enable disc switching and ensure save files load across discs, it cannot be loaded as a single disc.\n\nPlease install a .m3u file with the filename %@.\nSee https://bitly.com/provm3u", self.maxDiscs, m3uPath]; - + NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to load game.", - NSLocalizedFailureReasonErrorKey: @"Missing required m3u file.", - NSLocalizedRecoverySuggestionErrorKey: message - }; - + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Missing required m3u file.", + NSLocalizedRecoverySuggestionErrorKey: message + }; + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain code:PVEmulatorCoreErrorCodeMissingM3U userInfo:userInfo]; - + *error = newError; } return NO; @@ -825,28 +873,28 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error ILOG(@"Loaded m3u containing %lu cue sheets or ccd",numberOfMatches); } - -// BOOL success = + + // BOOL success = Mednafen::MDFNI_SetMedia(0, 2, 0, 0); // Disc selection API -// if (!success) { -// NSString *message = [NSString stringWithFormat:@"MDFNI_SetMedia returned 0. Check your m3u or other file paths."]; -// -// NSDictionary *userInfo = @{ -// NSLocalizedDescriptionKey: @"Failed to load game.", -// NSLocalizedFailureReasonErrorKey: @"MDFNI_SetMedia returned 0", -// NSLocalizedRecoverySuggestionErrorKey: message -// }; -// -// NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain -// code:PVEmulatorCoreErrorCodeMissingM3U -// userInfo:userInfo]; -// -// *error = newError; -// return NO; -// } - + // if (!success) { + // NSString *message = [NSString stringWithFormat:@"MDFNI_SetMedia returned 0. Check your m3u or other file paths."]; + // + // NSDictionary *userInfo = @{ + // NSLocalizedDescriptionKey: @"Failed to load game.", + // NSLocalizedFailureReasonErrorKey: @"MDFNI_SetMedia returned 0", + // NSLocalizedRecoverySuggestionErrorKey: message + // }; + // + // NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + // code:PVEmulatorCoreErrorCodeMissingM3U + // userInfo:userInfo]; + // + // *error = newError; + // return NO; + // } + emulation_run(NO); - + return YES; } @@ -863,40 +911,40 @@ -(NSUInteger)maxNumberPlayers { case MednaSystemPCE: maxPlayers = 5; break; - case MednaSystemMD: - case MednaSystemSMS: - case MednaSystemNES: - case MednaSystemSNES: + case MednaSystemMD: + case MednaSystemSMS: + case MednaSystemNES: + case MednaSystemSNES: case MednaSystemSS: case MednaSystemPCFX: maxPlayers = 2; break; - case MednaSystemGB: - case MednaSystemGBA: + case MednaSystemGB: + case MednaSystemGBA: case MednaSystemNeoGeo: case MednaSystemLynx: case MednaSystemVirtualBoy: - case MednaSystemGG: + case MednaSystemGG: case MednaSystemWonderSwan: maxPlayers = 1; break; - } + } return maxPlayers; } - (void)pollControllers { unsigned maxValue = 0; - const int*map = nullptr; + const int*map = nullptr; switch (self.systemType) { - case MednaSystemGBA: - maxValue = PVGBAButtonCount; - map = GBAMap; - break; - case MednaSystemGB: - maxValue = PVGBButtonCount; - map = GBMap; - break; + case MednaSystemGBA: + maxValue = PVGBAButtonCount; + map = GBAMap; + break; + case MednaSystemGB: + maxValue = PVGBButtonCount; + map = GBMap; + break; case MednaSystemPSX: maxValue = PVPSXButtonCount; map = PSXMap; @@ -909,14 +957,14 @@ - (void)pollControllers { maxValue = PVLynxButtonCount; map = LynxMap; break; - case MednaSystemSNES: - maxValue = PVSNESButtonCount; - map = SNESMap; - break; - case MednaSystemNES: - maxValue = PVNESButtonCount; - map = NESMap; - break; + case MednaSystemSNES: + maxValue = PVSNESButtonCount; + map = SNESMap; + break; + case MednaSystemNES: + maxValue = PVNESButtonCount; + map = NESMap; + break; case MednaSystemPCE: maxValue = PVPCEButtonCount; map = PCEMap; @@ -937,19 +985,19 @@ - (void)pollControllers { maxValue = PVWSButtonCount; map = WSMap; break; - case MednaSystemGG: - return; - break; - case MednaSystemMD: - return; - break; - case MednaSystemSMS: - return; - break; - } + case MednaSystemGG: + return; + break; + case MednaSystemMD: + return; + break; + case MednaSystemSMS: + return; + break; + } NSUInteger maxNumberPlayers = MIN([self maxNumberPlayers], 4); - + for (NSInteger playerIndex = 0; playerIndex < maxNumberPlayers; playerIndex++) { GCController *controller = nil; @@ -975,7 +1023,7 @@ - (void)pollControllers { for (unsigned i=0; i 0) { @@ -996,17 +1044,17 @@ - (void)pollControllers { - (void)executeFrameSkippingFrame: (BOOL) skip { - // Should we be using controller callbacks instead? - if (!skip && (self.controller1 || self.controller2 || self.controller3 || self.controller4)) { - [self pollControllers]; - } - - emulation_run(skip); + // Should we be using controller callbacks instead? + if (!skip && (self.controller1 || self.controller2 || self.controller3 || self.controller4)) { + [self pollControllers]; + } + + emulation_run(skip); } - (void)executeFrame { - [self executeFrameSkippingFrame:NO]; + [self executeFrameSkippingFrame:NO]; } - (void)resetEmulation @@ -1021,20 +1069,17 @@ - (void)stopEmulation [super stopEmulation]; } -- (NSTimeInterval)frameInterval -{ +- (NSTimeInterval)frameInterval { return mednafenCoreTiming ?: 60; } # pragma mark - Video -- (CGRect)screenRect -{ +- (CGRect)screenRect { return CGRectMake(videoOffsetX, videoOffsetY, videoWidth, videoHeight); } -- (CGSize)bufferSize -{ +- (CGSize)bufferSize { if ( game == NULL ) { return CGSizeMake(0, 0); @@ -1045,13 +1090,11 @@ - (CGSize)bufferSize } } -- (CGSize)aspectSize -{ - return CGSizeMake(mednafenCoreAspect.width,mednafenCoreAspect.height); +- (CGSize)aspectSize { + return CGSizeMake(mednafenCoreAspect.width, mednafenCoreAspect.height); } -- (const void *)videoBuffer -{ +- (const void *)videoBuffer { if ( frontBufferSurf == NULL ) { return NULL; @@ -1097,7 +1140,7 @@ - (BOOL)rendersToOpenGL { static size_t update_audio_batch(const int16_t *data, size_t frames) { GET_CURRENT_OR_RETURN(frames); - + [[current ringBufferAtIndex:0] write:data maxLength:frames * [current channelCount] * 2]; return frames; } @@ -1116,77 +1159,77 @@ - (NSUInteger)channelCount # pragma mark - Save States - (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error { - if (game != nil ) { + if (game != nil ) { BOOL success = Mednafen::MDFNI_SaveState(fileName.fileSystemRepresentation, "", NULL, NULL, NULL); if (!success) { if (error) { NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to save state.", - NSLocalizedFailureReasonErrorKey: @"Core failed to create save state.", - NSLocalizedRecoverySuggestionErrorKey: @"" - }; - + NSLocalizedDescriptionKey: @"Failed to save state.", + NSLocalizedFailureReasonErrorKey: @"Core failed to create save state.", + NSLocalizedRecoverySuggestionErrorKey: @"" + }; + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain code:PVEmulatorCoreErrorCodeCouldNotSaveState userInfo:userInfo]; - + *error = newError; } - } - return success; - } else { + } + return success; + } else { if (error) { NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to save state.", - NSLocalizedFailureReasonErrorKey: @"Core failed to create save state because no game is loaded.", - NSLocalizedRecoverySuggestionErrorKey: @"" - }; - + NSLocalizedDescriptionKey: @"Failed to save state.", + NSLocalizedFailureReasonErrorKey: @"Core failed to create save state because no game is loaded.", + NSLocalizedRecoverySuggestionErrorKey: @"" + }; + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain code:PVEmulatorCoreErrorCodeCouldNotSaveState userInfo:userInfo]; - + *error = newError; } - return NO; - } + return NO; + } } - (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error { - if (game != nil ) { + if (game != nil ) { BOOL success = Mednafen::MDFNI_LoadState(fileName.fileSystemRepresentation, ""); if (!success) { if (error) { NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to save state.", - NSLocalizedFailureReasonErrorKey: @"Core failed to load save state.", - NSLocalizedRecoverySuggestionErrorKey: @"" - }; - + NSLocalizedDescriptionKey: @"Failed to save state.", + NSLocalizedFailureReasonErrorKey: @"Core failed to load save state.", + NSLocalizedRecoverySuggestionErrorKey: @"" + }; + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain code:PVEmulatorCoreErrorCodeCouldNotLoadState userInfo:userInfo]; - + *error = newError; } - } - return success; - } else { + } + return success; + } else { if (error) { NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to save state.", - NSLocalizedFailureReasonErrorKey: @"No game loaded.", - NSLocalizedRecoverySuggestionErrorKey: @"" - }; - + NSLocalizedDescriptionKey: @"Failed to save state.", + NSLocalizedFailureReasonErrorKey: @"No game loaded.", + NSLocalizedRecoverySuggestionErrorKey: @"" + }; + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain code:PVEmulatorCoreErrorCodeCouldNotLoadState userInfo:userInfo]; - + *error = newError; } - return NO; - } + return NO; + } } - (NSData *)serializeStateWithError:(NSError **)outError @@ -1195,20 +1238,20 @@ - (NSData *)serializeStateWithError:(NSError **)outError MDFNSS_SaveSM(&stream, true); size_t length = stream.map_size(); void *bytes = stream.map(); - + if(length) { return [NSData dataWithBytes:bytes length:length]; } if(outError) { assert(false); - // TODO: "fix error log" -// *outError = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotSaveStateError userInfo:@{ -// NSLocalizedDescriptionKey : @"Save state data could not be written", -// NSLocalizedRecoverySuggestionErrorKey : @"The emulator could not write the state data." -// }]; + // TODO: "fix error log" + // *outError = [NSError errorWithDomain:OEGameCoreErrorDomain code:OEGameCoreCouldNotSaveStateError userInfo:@{ + // NSLocalizedDescriptionKey : @"Save state data could not be written", + // NSLocalizedRecoverySuggestionErrorKey : @"The emulator could not write the state data." + // }]; } - + return nil; } @@ -1216,23 +1259,23 @@ - (BOOL)deserializeState:(NSData *)state withError:(NSError **)outError { NSError *error; const void *bytes = [state bytes]; size_t length = [state length]; - + Mednafen::MemoryStream stream(length, -1); memcpy(stream.map(), bytes, length); MDFNSS_LoadSM(&stream, true); size_t serialSize = stream.map_size(); - + if(serialSize != length) { - // TODO: "fix error log" -// error = [NSError errorWithDomain:OEGameCoreErrorDomain -// code:OEGameCoreStateHasWrongSizeError -// userInfo:@{ -// NSLocalizedDescriptionKey : @"Save state has wrong file size.", -// NSLocalizedRecoverySuggestionErrorKey : [NSString stringWithFormat:@"The size of the save state does not have the right size, %lu expected, got: %ld.", serialSize, [state length]], -// }]; + // TODO: "fix error log" + // error = [NSError errorWithDomain:OEGameCoreErrorDomain + // code:OEGameCoreStateHasWrongSizeError + // userInfo:@{ + // NSLocalizedDescriptionKey : @"Save state has wrong file size.", + // NSLocalizedRecoverySuggestionErrorKey : [NSString stringWithFormat:@"The size of the save state does not have the right size, %lu expected, got: %ld.", serialSize, [state length]], + // }]; } - + if(error) { if(outError) { *outError = error; @@ -1243,1477 +1286,6 @@ - (BOOL)deserializeState:(NSData *)state withError:(NSError **)outError { } } -#pragma mark - Input - - -//Controller Stacks start here: - -#pragma mark Atari Lynx -- (void)didPushLynxButton:(PVLynxButton)button forPlayer:(NSInteger)player { - inputBuffer[player][0] |= 1 << LynxMap[button]; -} - -- (void)didReleaseLynxButton:(PVLynxButton)button forPlayer:(NSInteger)player { - inputBuffer[player][0] &= ~(1 << LynxMap[button]); -} - -- (NSInteger)LynxControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVLynxButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVLynxButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVLynxButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVLynxButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVLynxButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]?:[[[gamepad rightThumbstick] right] isPressed]?:[[gamepad rightTrigger] isPressed]; - case PVLynxButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]?:[[[gamepad rightThumbstick] left] isPressed]?:[[gamepad leftTrigger] isPressed]; - case PVLynxButtonOption1: - return [[gamepad leftShoulder] isPressed]; - case PVLynxButtonOption2: - return [[gamepad rightShoulder] isPressed]; - default: - break; - } - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVLynxButtonUp: - return [[dpad up] isPressed]; - case PVLynxButtonDown: - return [[dpad down] isPressed]; - case PVLynxButtonLeft: - return [[dpad left] isPressed]; - case PVLynxButtonRight: - return [[dpad right] isPressed]; - case PVLynxButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVLynxButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVLynxButtonOption1: - return [[gamepad leftShoulder] isPressed]; - case PVLynxButtonOption2: - return [[gamepad rightShoulder] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVLynxButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVLynxButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVLynxButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVLynxButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVLynxButtonB: - return [[gamepad buttonA] isPressed]; - break; - case PVLynxButtonA: - return [[gamepad buttonX] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} - -#pragma mark SNES -- (void)didPushSNESButton:(enum PVSNESButton)button forPlayer:(NSInteger)player { - int mappedButton = SNESMap[button]; - inputBuffer[player][0] |= 1 << mappedButton; -} - --(void)didReleaseSNESButton:(enum PVSNESButton)button forPlayer:(NSInteger)player { - inputBuffer[player][0] &= ~(1 << SNESMap[button]); -} - -#pragma mark NES -- (void)didPushNESButton:(enum PVNESButton)button forPlayer:(NSInteger)player { - int mappedButton = NESMap[button]; - inputBuffer[player][0] |= 1 << mappedButton; -} - --(void)didReleaseNESButton:(enum PVNESButton)button forPlayer:(NSInteger)player { - inputBuffer[player][0] &= ~(1 << NESMap[button]); -} - -#pragma mark GB / GBC -- (void)didPushGBButton:(enum PVGBButton)button forPlayer:(NSInteger)player { - int mappedButton = GBMap[button]; - inputBuffer[player][0] |= 1 << mappedButton; -} - --(void)didReleaseGBButton:(enum PVGBButton)button forPlayer:(NSInteger)player { - inputBuffer[player][0] &= ~(1 << GBMap[button]); -} - -#pragma mark GBA -- (void)didPushGBAButton:(enum PVGBAButton)button forPlayer:(NSInteger)player { - int mappedButton = GBAMap[button]; - inputBuffer[player][0] |= 1 << mappedButton; -} - --(void)didReleaseGBAButton:(enum PVGBAButton)button forPlayer:(NSInteger)player { - int mappedButton = GBAMap[button]; - inputBuffer[player][0] &= ~(1 << mappedButton); -} - -#pragma mark Sega -- (void)didPushSegaButton:(enum PVGenesisButton)button forPlayer:(NSInteger)player { - int mappedButton = GenesisMap[button]; - inputBuffer[player][0] |= 1 << mappedButton; -} - --(void)didReleaseSegaButton:(enum PVGenesisButton)button forPlayer:(NSInteger)player { - inputBuffer[player][0] &= ~(1 << GenesisMap[button]); -} - -#pragma mark Neo Geo -- (void)didPushNGPButton:(PVNGPButton)button forPlayer:(NSInteger)player -{ - inputBuffer[player][0] |= 1 << NeoMap[button]; -} - -- (void)didReleaseNGPButton:(PVNGPButton)button forPlayer:(NSInteger)player -{ - inputBuffer[player][0] &= ~(1 << NeoMap[button]); -} - -#pragma mark PC-* -#pragma mark PCE aka TurboGFX-16 & SuperGFX -- (void)didPushPCEButton:(PVPCEButton)button forPlayer:(NSInteger)player -{ - if (button != PVPCEButtonMode) { // Check for six button mode toggle - inputBuffer[player][0] |= 1 << PCEMap[button]; - } else { - inputBuffer[player][0] ^= 1 << PCEMap[button]; - } -} - -- (void)didReleasePCEButton:(PVPCEButton)button forPlayer:(NSInteger)player -{ - if (button != PVPCEButtonMode) - inputBuffer[player][0] &= ~(1 << PCEMap[button]); -} - -#pragma mark PCE-CD -- (void)didPushPCECDButton:(PVPCECDButton)button forPlayer:(NSInteger)player -{ - if (button != PVPCECDButtonMode) { // Check for six button mode toggle - inputBuffer[player][0] |= 1 << PCEMap[button]; - } else { - inputBuffer[player][0] ^= 1 << PCEMap[button]; - } -} - -- (void)didReleasePCECDButton:(PVPCECDButton)button forPlayer:(NSInteger)player; -{ - if (button != PVPCECDButtonMode) { - inputBuffer[player][0] &= ~(1 << PCEMap[button]); - } -} - -#pragma mark PCFX -- (void)didPushPCFXButton:(PVPCFXButton)button forPlayer:(NSInteger)player; -{ - if (button != PVPCFXButtonMode) { // Check for six button mode toggle - inputBuffer[player][0] |= 1 << PCFXMap[button]; - } else { - inputBuffer[player][0] ^= 1 << PCFXMap[button]; - } -} - -- (void)didReleasePCFXButton:(PVPCFXButton)button forPlayer:(NSInteger)player; -{ - if (button != PVPCFXButtonMode) { - inputBuffer[player][0] &= ~(1 << PCFXMap[button]); - } -} - -#pragma mark SS Sega Saturn -- (void)didPushSSButton:(enum PVSaturnButton)button forPlayer:(NSInteger)player -{ -// int mappedButton = SSMap[button]; -// inputBuffer[player][0] |= 1 << mappedButton; - if (button == PVSaturnButtonStart) { - self.isStartPressed = true; - } - inputBuffer[player][0] |= 1 << SSMap[button]; -} - --(void)didReleaseSSButton:(enum PVSaturnButton)button forPlayer:(NSInteger)player { -// inputBuffer[player][0] &= ~(1 << SSMap[button]); - if (button == PVSaturnButtonStart) { - self.isStartPressed = false; - } - inputBuffer[player][0] &= ~(1 << SSMap[button]); -} - -#pragma mark PSX -- (void)didPushPSXButton:(PVPSXButton)button forPlayer:(NSInteger)player; -{ - if (button == PVPSXButtonStart) { - self.isStartPressed = true; - } else if (button == PVPSXButtonSelect) { - self.isSelectPressed = true; - } else if (button == PVPSXButtonL3) { - self.isL3Pressed = true; - } else if (button == PVPSXButtonR3) { - self.isR3Pressed = true; - } else if (button == PVPSXButtonAnalogMode) { - self.isAnalogModePressed = true; - } - inputBuffer[player][0] |= 1 << PSXMap[button]; -} - -- (void)didReleasePSXButton:(PVPSXButton)button forPlayer:(NSInteger)player; -{ - if (button == PVPSXButtonStart) { - self.isStartPressed = false; - } else if (button == PVPSXButtonSelect) { - self.isSelectPressed = false; - } else if (button == PVPSXButtonL3) { - self.isL3Pressed = false; - } else if (button == PVPSXButtonR3) { - self.isR3Pressed = false; - } else if (button == PVPSXButtonAnalogMode) { - self.isAnalogModePressed = false; - } - inputBuffer[player][0] &= ~(1 << PSXMap[button]); -} - -- (void)didMovePSXJoystickDirection:(PVPSXButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player -{ - // TODO - // Fix the analog circle-to-square axis range conversion by scaling between a value of 1.00 and 1.50 - // We cannot use MDFNI_SetSetting("psx.input.port1.dualshock.axis_scale", "1.33") directly. - // Background: https://mednafen.github.io/documentation/psx.html#Section_analog_range - // double scaledValue = MIN(floor(0.5 + value * 1.33), 32767); // 30712 / cos(2*pi/8) / 32767 = 1.33 - - uint16 modifiedValue = value * 32767; - - int analogNumber = PSXMap[button] - 17; - int address = analogNumber; - - if (analogNumber % 2 != 0) { - axis[analogNumber] = -1 * modifiedValue; - address -= 1; - } - else { - axis[analogNumber] = modifiedValue; - } - - uint16 actualValue = 32767 + axis[analogNumber] + axis[analogNumber ^ 1]; - - uint8 *buf = (uint8 *)inputBuffer[player]; - Mednafen::MDFN_en16lsb(&buf[3]+address, (uint16) actualValue); -} - -#pragma mark Virtual Boy -- (void)didPushVBButton:(PVVBButton)button forPlayer:(NSInteger)player; -{ - inputBuffer[player][0] |= 1 << VBMap[button]; -} - -- (void)didReleaseVBButton:(PVVBButton)button forPlayer:(NSInteger)player; -{ - inputBuffer[player][0] &= ~(1 << VBMap[button]); -} - -#pragma mark WonderSwan -- (void)didPushWSButton:(PVWSButton)button forPlayer:(NSInteger)player; -{ - inputBuffer[player][0] |= 1 << WSMap[button]; -} - -- (void)didReleaseWSButton:(PVWSButton)button forPlayer:(NSInteger)player; -{ - inputBuffer[player][0] &= ~(1 << WSMap[button]); -} - -- (NSInteger)controllerValueForButtonID:(unsigned)buttonID forPlayer:(NSInteger)player withAnalogMode:(bool)analogMode { - GCController *controller = nil; - - if (player == 0) { - controller = self.controller1; - } - else if (player == 1) { - controller = self.controller2; - } - else if (player == 2) { - controller = self.controller3; - } - else if (player == 3) { - controller = self.controller4; - } - - switch (self.systemType) { - case MednaSystemSMS: - case MednaSystemMD: - // TODO: Unused since Mednafen sega support is 'low priority' - return 0; - break; - case MednaSystemSS: - return [self SSValueForButtonID:buttonID forController:controller]; - break; - case MednaSystemGB: - return [self GBValueForButtonID:buttonID forController:controller]; - break; - case MednaSystemGBA: - return [self GBAValueForButtonID:buttonID forController:controller]; - break; - case MednaSystemSNES: - return [self SNESValueForButtonID:buttonID forController:controller]; - break; - case MednaSystemNES: - return [self NESValueForButtonID:buttonID forController:controller]; - break; - case MednaSystemNeoGeo: - return [self NeoGeoValueForButtonID:buttonID forController:controller]; - break; - case MednaSystemLynx: - return [self LynxControllerValueForButtonID:buttonID forController:controller]; - break; - - case MednaSystemPCE: - case MednaSystemPCFX: - return [self PCEValueForButtonID:buttonID forController:controller]; - break; - - case MednaSystemPSX: - return [self PSXcontrollerValueForButtonID:buttonID forController:controller withAnalogMode:analogMode]; - break; - - case MednaSystemVirtualBoy: - return [self VirtualBoyControllerValueForButtonID:buttonID forController:controller]; - break; - - case MednaSystemWonderSwan: - return [self WonderSwanControllerValueForButtonID:buttonID forController:controller]; - break; - - default: - break; - } - - return 0; -} -#pragma mark SS Buttons -- (NSInteger)SSValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - if (PVSettingsModel.shared.use8BitdoM30) // Maps the Sega Saturn Controls to the 8BitDo M30 if enabled in Settings/Controller - { switch (buttonID) { - case PVSaturnButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] value] > 0.1; - case PVSaturnButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] value] > 0.1; - case PVSaturnButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] value] > 0.1; - case PVSaturnButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] value] > 0.1; - case PVSaturnButtonA: - return [[gamepad buttonA] isPressed]; - case PVSaturnButtonB: - return [[gamepad buttonB] isPressed]; - case PVSaturnButtonC: - return [[gamepad rightShoulder] isPressed]; - case PVSaturnButtonX: - return [[gamepad buttonX] isPressed]; - case PVSaturnButtonY: - return [[gamepad buttonY] isPressed]; - case PVSaturnButtonZ: - return [[gamepad leftShoulder] isPressed]; - case PVSaturnButtonL: - return [[gamepad leftTrigger] isPressed]; - case PVSaturnButtonStart: -#if TARGET_OS_TV - return [[gamepad buttonMenu] isPressed]; - case PVSaturnButtonR: - return [[gamepad rightTrigger] isPressed]; -#else - return [[gamepad rightTrigger] isPressed]; // no Access to the R Shoulder Button on the Saturn Controller using the M30 due to Start Mismapping on iOS, for now -#endif - default: - break; - }} - { - GCDualSenseGamepad *dualSense = [gamepad isKindOfClass:[GCDualSenseGamepad class]] ? gamepad : nil; - - switch (buttonID) { - case PVSaturnButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVSaturnButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVSaturnButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVSaturnButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVSaturnButtonA: - return [[gamepad buttonA] isPressed]; - case PVSaturnButtonB: - return [[gamepad buttonB] isPressed]; - case PVSaturnButtonC: - return [[gamepad leftShoulder] isPressed]; - case PVSaturnButtonX: - return [[gamepad buttonX] isPressed]; - case PVSaturnButtonY: - return [[gamepad buttonY] isPressed]; - case PVSaturnButtonZ: - return [[gamepad rightShoulder] isPressed]; - case PVSaturnButtonL: - return [[gamepad leftTrigger] isPressed]; - case PVSaturnButtonR: - return [[gamepad rightTrigger] isPressed]; - case PVSaturnButtonStart: - return [[dualSense buttonHome] isPressed]; - default: - break; - }} - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVSaturnButtonUp: - return [[dpad up] isPressed]; - case PVSaturnButtonDown: - return [[dpad down] isPressed]; - case PVSaturnButtonLeft: - return [[dpad left] isPressed]; - case PVSaturnButtonRight: - return [[dpad right] isPressed]; - case PVSaturnButtonA: - return [[gamepad buttonA] isPressed]; - case PVSaturnButtonB: - return [[gamepad buttonB] isPressed]; - case PVSaturnButtonC: - return [[gamepad leftShoulder] isPressed]; - case PVSaturnButtonX: - return [[gamepad buttonX] isPressed]; - case PVSaturnButtonY: - return [[gamepad buttonY] isPressed]; - case PVSaturnButtonZ: - return [[gamepad rightShoulder] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVSaturnButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVSaturnButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVSaturnButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVSaturnButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVSaturnButtonA: - return [[gamepad buttonA] isPressed]; - break; - case PVSaturnButtonB: - return [[gamepad buttonX] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark GB Buttons -- (NSInteger)GBValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVGBButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVGBButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVGBButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVGBButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVGBButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVGBButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVGBButtonSelect: - return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed]; - case PVGBButtonStart: - return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; - default: - NSLog(@"Unknown button %i", buttonID); - break; - } - -// if (buttonID == GBMap[PVGBButtonUp]) { -// return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; -// } -// else if (buttonID == GBMap[PVGBButtonDown]) { -// return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; -// } -// else if (buttonID == GBMap[PVGBButtonLeft]) { -// return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; -// } -// else if (buttonID == GBMap[PVGBButtonRight]) { -// return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; -// } -// else if (buttonID == GBMap[PVGBButtonA]) { -// return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; -// } -// else if (buttonID == GBMap[PVGBButtonB]) { -// return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; -// } -// else if (buttonID == GBMap[PVGBButtonSelect]) { -// return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed]; -// } -// else if (buttonID == GBMap[PVGBButtonStart]) { -// return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; -// } - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVGBButtonUp: - return [[dpad up] isPressed]; - case PVGBButtonDown: - return [[dpad down] isPressed]; - case PVGBButtonLeft: - return [[dpad left] isPressed]; - case PVGBButtonRight: - return [[dpad right] isPressed]; - case PVGBButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVGBButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVGBButtonSelect: - return [[gamepad leftShoulder] isPressed]; - case PVGBButtonStart: - return [[gamepad rightShoulder] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVGBButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVGBButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVGBButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVGBButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVGBButtonA: - return [[gamepad buttonX] isPressed]; - break; - case PVGBButtonB: - return [[gamepad buttonA] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark GBA Buttons -- (NSInteger)GBAValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVGBAButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVGBAButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVGBAButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVGBAButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVGBAButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVGBAButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVGBAButtonL: - return [[gamepad leftShoulder] isPressed]; - case PVGBAButtonR: - return [[gamepad rightShoulder] isPressed]; - case PVGBAButtonSelect: - return [[gamepad leftTrigger] isPressed]; - case PVGBAButtonStart: - return [[gamepad rightTrigger] isPressed]; - default: - break; - } - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVGBAButtonUp: - return [[dpad up] isPressed]; - case PVGBAButtonDown: - return [[dpad down] isPressed]; - case PVGBAButtonLeft: - return [[dpad left] isPressed]; - case PVGBAButtonRight: - return [[dpad right] isPressed]; - case PVGBAButtonB: - return [[gamepad buttonA] isPressed]; - case PVGBAButtonA: - return [[gamepad buttonB] isPressed]; - case PVGBAButtonL: - return [[gamepad leftShoulder] isPressed]; - case PVGBAButtonR: - return [[gamepad rightShoulder] isPressed]; - case PVGBAButtonSelect: - return [[gamepad buttonX] isPressed]; - case PVGBAButtonStart: - return [[gamepad buttonY] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVGBAButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVGBAButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVGBAButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVGBAButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVGBAButtonA: - return [[gamepad buttonX] isPressed]; - break; - case PVGBAButtonB: - return [[gamepad buttonA] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark SNES Buttons -- (NSInteger)SNESValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVSNESButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVSNESButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVSNESButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVSNESButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVSNESButtonB: - return [[gamepad buttonA] isPressed]; - case PVSNESButtonA: - return [[gamepad buttonB] isPressed]; - case PVSNESButtonX: - return [[gamepad buttonY] isPressed]; - case PVSNESButtonY: - return [[gamepad buttonX] isPressed]; - case PVSNESButtonTriggerLeft: - return [[gamepad leftShoulder] isPressed]; - case PVSNESButtonTriggerRight: - return [[gamepad rightShoulder] isPressed]; - case PVSNESButtonSelect: - return [[gamepad leftTrigger] isPressed]; - case PVSNESButtonStart: - return [[gamepad rightTrigger] isPressed]; - default: - break; - } - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVSNESButtonUp: - return [[dpad up] isPressed]; - case PVSNESButtonDown: - return [[dpad down] isPressed]; - case PVSNESButtonLeft: - return [[dpad left] isPressed]; - case PVSNESButtonRight: - return [[dpad right] isPressed]; - case PVSNESButtonB: - return [[gamepad buttonA] isPressed]; - case PVSNESButtonA: - return [[gamepad buttonB] isPressed]; - case PVSNESButtonX: - return [[gamepad buttonY] isPressed]; - case PVSNESButtonY: - return [[gamepad buttonX] isPressed]; - case PVSNESButtonTriggerLeft: - return [[gamepad leftShoulder] isPressed]; - case PVSNESButtonTriggerRight: - return [[gamepad rightShoulder] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVSNESButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVSNESButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVSNESButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVSNESButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVSNESButtonA: - return [[gamepad buttonX] isPressed]; - break; - case PVSNESButtonB: - return [[gamepad buttonA] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark NES Buttons -- (NSInteger)NESValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVNESButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVNESButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVNESButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVNESButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVNESButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVNESButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVNESButtonSelect: - return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed]; - case PVNESButtonStart: - return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; - default: - break; - } - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVNESButtonUp: - return [[dpad up] isPressed]; - case PVNESButtonDown: - return [[dpad down] isPressed]; - case PVNESButtonLeft: - return [[dpad left] isPressed]; - case PVNESButtonRight: - return [[dpad right] isPressed]; - case PVNESButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVNESButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVNESButtonSelect: - return [[gamepad leftShoulder] isPressed]; - case PVNESButtonStart: - return [[gamepad rightShoulder] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVNESButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVNESButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVNESButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVNESButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVNESButtonA: - return [[gamepad buttonX] isPressed]; - break; - case PVNESButtonB: - return [[gamepad buttonA] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark NEOGEOPOCKET Buttons -- (NSInteger)NeoGeoValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVNGPButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVNGPButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVNGPButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVNGPButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVNGPButtonB: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVNGPButtonA: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVNGPButtonOption: - return [[gamepad leftShoulder] isPressed]?:[[gamepad leftTrigger] isPressed] ?: [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; - default: - break; - } - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVNGPButtonUp: - return [[dpad up] isPressed]; - case PVNGPButtonDown: - return [[dpad down] isPressed]; - case PVNGPButtonLeft: - return [[dpad left] isPressed]; - case PVNGPButtonRight: - return [[dpad right] isPressed]; - case PVNGPButtonB: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVNGPButtonA: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVNGPButtonOption: - return [[gamepad leftShoulder] isPressed] ?: [[gamepad rightShoulder] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVNGPButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVNGPButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVNGPButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVNGPButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVNGPButtonA: - return [[gamepad buttonA] isPressed]; - break; - case PVNGPButtonB: - return [[gamepad buttonX] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark PCE Buttons -- (NSInteger)PCEValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) - { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - if (PVSettingsModel.shared.use8BitdoM30) // M30 Mode - {switch (buttonID) { - // D-Pad - case PVPCEButtonUp: - return [[[gamepad leftThumbstick] up] value] > 0.1; - case PVPCEButtonDown: - return [[[gamepad leftThumbstick] down] value] > 0.1; - case PVPCEButtonLeft: - return [[[gamepad leftThumbstick] left] value] > 0.1; - case PVPCEButtonRight: - return [[[gamepad leftThumbstick] right] value] > 0.1; - - // Select + Run - case PVPCEButtonSelect: - return [[gamepad leftTrigger] isPressed]; - case PVPCEButtonRun: - return [[gamepad rightTrigger] isPressed]; - - // NEC Avenue 6 button layout - case PVPCEButtonButton1: - return [[gamepad rightShoulder] isPressed]; - case PVPCEButtonButton2: - return [[gamepad buttonB] isPressed]; - case PVPCEButtonButton3: - return [[gamepad buttonA] isPressed]; - case PVPCEButtonButton4: - return [[gamepad buttonX] isPressed]; - case PVPCEButtonButton5: - return [[gamepad buttonY] isPressed]; - case PVPCEButtonButton6: - return [[gamepad leftShoulder] isPressed]; - - // Toggle to the 6 Button Mode when the Extended Buttons are pressed - case PVPCEButtonMode: - return [[gamepad buttonB] isPressed] || [[gamepad buttonX] isPressed] || [[gamepad buttonY] isPressed] || [[gamepad leftShoulder] isPressed] || [[gamepad buttonA] isPressed] || [[gamepad rightShoulder] isPressed]; - default: - break; - }} - {switch (buttonID) { // Non M30 mode - // D-Pad - case PVPCEButtonUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] value] > 0.1; - case PVPCEButtonDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] value] > 0.1; - case PVPCEButtonLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] value] > 0.1; - case PVPCEButtonRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] value] > 0.1; - - // Standard Buttons - case PVPCEButtonButton1: - return [[gamepad buttonB] isPressed]; - case PVPCEButtonButton2: - return [[gamepad buttonA] isPressed]; - - case PVPCEButtonSelect: - return [[gamepad leftTrigger] isPressed]; - case PVPCEButtonRun: - return [[gamepad rightTrigger] isPressed]; - - // Extended Buttons - case PVPCEButtonButton3: - return [[gamepad buttonX] isPressed]; - case PVPCEButtonButton4: - return [[gamepad leftShoulder] isPressed]; - case PVPCEButtonButton5: - return [[gamepad buttonY] isPressed]; - case PVPCEButtonButton6: - return [[gamepad rightShoulder] isPressed]; - - // Toggle the Mode: Extended Buttons are pressed - case PVPCEButtonMode: - return [[gamepad buttonX] isPressed] || [[gamepad leftShoulder] isPressed] || [[gamepad buttonY] isPressed] || [[gamepad rightShoulder] isPressed]; - default: - break; - }} - } - else if ([controller gamepad]) - { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - // D-Pad - case PVPCEButtonUp: - return [[dpad up] isPressed]; - case PVPCEButtonDown: - return [[dpad down] isPressed]; - case PVPCEButtonLeft: - return [[dpad left] isPressed]; - case PVPCEButtonRight: - return [[dpad right] isPressed]; - - // Standard Buttons - case PVPCEButtonButton1: - return [[gamepad buttonB] isPressed]; - case PVPCEButtonButton2: - return [[gamepad buttonA] isPressed]; - - case PVPCEButtonSelect: - return [[gamepad leftShoulder] isPressed]; - case PVPCEButtonRun: - return [[gamepad rightShoulder] isPressed]; - - // Extended Buttons - case PVPCEButtonButton3: - return [[gamepad buttonX] isPressed]; - case PVPCEButtonButton4: - return [[gamepad buttonY] isPressed]; - - // Toggle the Mode: Extended Buttons are pressed - case PVPCEButtonMode: - return [[gamepad buttonX] isPressed] || [[gamepad buttonY] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVPCEButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVPCEButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVPCEButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVPCEButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVPCEButtonButton1: - return [[gamepad buttonA] isPressed]; - break; - case PVPCEButtonButton2: - return [[gamepad buttonX] isPressed]; - break; - default: - break; - } - } -#endif - - return 0; -} -#pragma mark PSX Buttons -- (float)PSXAnalogControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) - { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - switch (buttonID) { - case PVPSXButtonLeftAnalogUp: - return [gamepad leftThumbstick].up.value; - case PVPSXButtonLeftAnalogDown: - return [gamepad leftThumbstick].down.value; - case PVPSXButtonLeftAnalogLeft: - return [gamepad leftThumbstick].left.value; - case PVPSXButtonLeftAnalogRight: - return [gamepad leftThumbstick].right.value; - case PVPSXButtonRightAnalogUp: - return [gamepad rightThumbstick].up.value; - case PVPSXButtonRightAnalogDown: - return [gamepad rightThumbstick].down.value; - case PVPSXButtonRightAnalogLeft: - return [gamepad rightThumbstick].left.value; - case PVPSXButtonRightAnalogRight: - return [gamepad rightThumbstick].right.value; - default: - break; - } - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - switch (buttonID) { - case PVPSXButtonLeftAnalogUp: - return [gamepad dpad].up.value; - case PVPSXButtonLeftAnalogDown: - return [gamepad dpad].down.value; - case PVPSXButtonLeftAnalogLeft: - return [gamepad dpad].left.value; - case PVPSXButtonLeftAnalogRight: - return [gamepad dpad].right.value; - default: - break; - } - } - return 0; -} - -- (NSInteger)PSXcontrollerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller withAnalogMode:(bool)analogMode { - if ([controller extendedGamepad]) - { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - bool modifier1Pressed = [[gamepad leftShoulder] isPressed] && [[gamepad rightShoulder] isPressed]; - bool modifier2Pressed = [[gamepad leftTrigger] isPressed] && [[gamepad rightTrigger] isPressed]; - bool modifiersPressed = modifier1Pressed && modifier2Pressed; - - switch (buttonID) { - case PVPSXButtonUp: - return ([[dpad up] isPressed] || (!analogMode && [[[gamepad leftThumbstick] up] isPressed])); - case PVPSXButtonDown: - return ([[dpad down] isPressed] || (!analogMode && [[[gamepad leftThumbstick] down] isPressed])) && !modifiersPressed; - case PVPSXButtonLeft: - return ([[dpad left] isPressed] || (!analogMode && [[[gamepad leftThumbstick] left] isPressed])); - case PVPSXButtonRight: - return ([[dpad right] isPressed] || (!analogMode && [[[gamepad leftThumbstick] right] isPressed])) && !modifiersPressed; - case PVPSXButtonLeftAnalogUp: - return [gamepad leftThumbstick].up.value; - case PVPSXButtonLeftAnalogDown: - return [gamepad leftThumbstick].down.value; - case PVPSXButtonLeftAnalogLeft: - return [gamepad leftThumbstick].left.value; - case PVPSXButtonLeftAnalogRight: - return [gamepad leftThumbstick].right.value; - case PVPSXButtonSquare: - return [[gamepad buttonX] isPressed] && !modifiersPressed; - case PVPSXButtonTriangle: - return [[gamepad buttonY] isPressed]; - case PVPSXButtonCross: - return [[gamepad buttonA] isPressed] && !modifiersPressed; - case PVPSXButtonCircle: - return [[gamepad buttonB] isPressed] && !modifiersPressed; - case PVPSXButtonL1: - return [[gamepad leftShoulder] isPressed] && !modifier2Pressed; - case PVPSXButtonL2: - return [[gamepad leftTrigger] isPressed] && !modifier1Pressed; - case PVPSXButtonL3: - return self.isL3Pressed || [[gamepad leftThumbstickButton] isPressed] || (modifiersPressed && [[dpad down] isPressed]); - case PVPSXButtonR1: - return [[gamepad rightShoulder] isPressed] && !modifier2Pressed; - case PVPSXButtonR2: - return [[gamepad rightTrigger] isPressed] && !modifier1Pressed; - case PVPSXButtonR3: - return self.isR3Pressed || [[gamepad rightThumbstickButton] isPressed] || (modifiersPressed && [[gamepad buttonA] isPressed]); - case PVPSXButtonSelect: - return self.isSelectPressed || (modifiersPressed && [[dpad right] isPressed]); - case PVPSXButtonStart: - return self.isStartPressed || (modifiersPressed && [[gamepad buttonX] isPressed]); - case PVPSXButtonAnalogMode: - return self.isAnalogModePressed || (modifiersPressed && [[gamepad buttonB] isPressed]); - default: - break; - } - } - else if ([controller gamepad]) - { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - bool modifierPressed = [[gamepad leftShoulder] isPressed] && [[gamepad rightShoulder] isPressed]; - - switch (buttonID) { - case PVPSXButtonUp: - return [[dpad up] isPressed] && !modifierPressed; - case PVPSXButtonDown: - return [[dpad down] isPressed] && !modifierPressed; - case PVPSXButtonLeft: - return [[dpad left] isPressed]; - case PVPSXButtonRight: - return [[dpad right] isPressed] && !modifierPressed; - case PVPSXButtonSquare: - return [[gamepad buttonX] isPressed] && !modifierPressed; - case PVPSXButtonTriangle: - return [[gamepad buttonY] isPressed] && !modifierPressed; - case PVPSXButtonCross: - return [[gamepad buttonA] isPressed] && !modifierPressed; - case PVPSXButtonCircle: - return [[gamepad buttonB] isPressed] && !modifierPressed; - case PVPSXButtonL1: - return [[gamepad leftShoulder] isPressed]; - case PVPSXButtonL2: - return modifierPressed && [[dpad up] isPressed]; - case PVPSXButtonL3: - return self.isL3Pressed || modifierPressed && [[dpad down] isPressed]; - case PVPSXButtonR1: - return [[gamepad rightShoulder] isPressed]; - case PVPSXButtonR2: - return modifierPressed && [[gamepad buttonY] isPressed]; - case PVPSXButtonR3: - return self.isR3Pressed || modifierPressed && [[gamepad buttonA] isPressed]; - case PVPSXButtonSelect: - return self.isSelectPressed || (modifierPressed && [[dpad right] isPressed]); - case PVPSXButtonStart: - return self.isStartPressed || (modifierPressed && [[gamepad buttonX] isPressed]); - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVPSXButtonUp: - return [[dpad up] value] > 0.5; - break; - case PVPSXButtonDown: - return [[dpad down] value] > 0.5; - break; - case PVPSXButtonLeft: - return [[dpad left] value] > 0.5; - break; - case PVPSXButtonRight: - return [[dpad right] value] > 0.5; - break; - case PVPSXButtonCross: - return [[gamepad buttonA] isPressed]; - break; - case PVPSXButtonCircle: - return [[gamepad buttonX] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark VirtualBoy Buttons -- (NSInteger)VirtualBoyControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) - { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVVBButtonLeftUp: - return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; - case PVVBButtonLeftDown: - return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; - case PVVBButtonLeftLeft: - return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; - case PVVBButtonLeftRight: - return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; - case PVVBButtonRightUp: - return [[[gamepad rightThumbstick] up] isPressed]; - case PVVBButtonRightDown: - return [[[gamepad rightThumbstick] down] isPressed]; - case PVVBButtonRightLeft: - return [[[gamepad rightThumbstick] left] isPressed]; - case PVVBButtonRightRight: - return [[[gamepad rightThumbstick] right] isPressed]; - case PVVBButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVVBButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVVBButtonL: - return [[gamepad leftShoulder] isPressed]; - case PVVBButtonR: - return [[gamepad rightShoulder] isPressed]; - case PVVBButtonStart: - return [[gamepad rightTrigger] isPressed]; - case PVVBButtonSelect: - return [[gamepad leftTrigger] isPressed]; - default: - break; - } - } - else if ([controller gamepad]) - { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVVBButtonLeftUp: - return [[dpad up] isPressed]; - case PVVBButtonLeftDown: - return [[dpad down] isPressed]; - case PVVBButtonLeftLeft: - return [[dpad left] isPressed]; - case PVVBButtonLeftRight: - return [[dpad right] isPressed]; - case PVVBButtonA: - return [[gamepad buttonB] isPressed]; - case PVVBButtonB: - return [[gamepad buttonA] isPressed]; - case PVVBButtonL: - return [[gamepad leftShoulder] isPressed]; - case PVVBButtonR: - return [[gamepad rightShoulder] isPressed]; - case PVVBButtonStart: - return [[gamepad buttonY] isPressed]; - case PVVBButtonSelect: - return [[gamepad buttonX] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVVBButtonLeftUp: - return [[dpad up] value] > 0.5; - break; - case PVVBButtonLeftDown: - return [[dpad down] value] > 0.5; - break; - case PVVBButtonLeftLeft: - return [[dpad left] value] > 0.5; - break; - case PVVBButtonLeftRight: - return [[dpad right] value] > 0.5; - break; - case PVVBButtonA: - return [[gamepad buttonA] isPressed]; - break; - case PVVBButtonB: - return [[gamepad buttonX] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} -#pragma mark Wonderswan Buttons -- (NSInteger)WonderSwanControllerValueForButtonID:(unsigned)buttonID forController:(GCController*)controller { - if ([controller extendedGamepad]) - { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - /* WonderSwan has a Top (Y) D-Pad and a lower (X) D-Pad. MFi controllers - may have the Joy Stick and Left D-Pad in either Top/Bottom configuration. - Another Option is to map to Left/Right Joystick and Make left D-Pad same as - left JoyStick, but if the games require using Left/Right hand at same time it - may be difficult to his the right d-pad and action buttons at the same time. - -joe M */ - case PVWSButtonX1: - return [[[gamepad leftThumbstick] up] isPressed]; - case PVWSButtonX3: - return [[[gamepad leftThumbstick] down] isPressed]; - case PVWSButtonX4: - return [[[gamepad leftThumbstick] left] isPressed]; - case PVWSButtonX2: - return [[[gamepad leftThumbstick] right] isPressed]; - case PVWSButtonY1: - return [[dpad up] isPressed]; - case PVWSButtonY3: - return [[dpad down] isPressed]; - case PVWSButtonY4: - return [[dpad left] isPressed]; - case PVWSButtonY2: - return [[dpad right] isPressed]; - case PVWSButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVWSButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVWSButtonStart: - return [[gamepad rightShoulder] isPressed]?:[[gamepad rightTrigger] isPressed]; - case PVWSButtonSound: - return [[gamepad leftShoulder] isPressed]; - default: - break; - } - } - else if ([controller gamepad]) - { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVWSButtonX1: - return [[dpad up] isPressed]; - case PVWSButtonX3: - return [[dpad down] isPressed]; - case PVWSButtonX4: - return [[dpad left] isPressed]; - case PVWSButtonX2: - return [[dpad right] isPressed]; - case PVWSButtonA: - return [[gamepad buttonB] isPressed]?:[[gamepad buttonX] isPressed]; - case PVWSButtonB: - return [[gamepad buttonA] isPressed]?:[[gamepad buttonY] isPressed]; - case PVWSButtonStart: - return [[gamepad rightShoulder] isPressed]; - case PVWSButtonSound: - return [[gamepad leftShoulder] isPressed]; - default: - break; - } - } -#if TARGET_OS_TV - else if ([controller microGamepad]) - { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - switch (buttonID) { - case PVWSButtonX1: - return [[dpad up] value] > 0.5; - break; - case PVWSButtonX3: - return [[dpad down] value] > 0.5; - break; - case PVWSButtonX4: - return [[dpad left] value] > 0.5; - break; - case PVWSButtonX2: - return [[dpad right] value] > 0.5; - break; - case PVWSButtonA: - return [[gamepad buttonA] isPressed]; - break; - case PVWSButtonB: - return [[gamepad buttonX] isPressed]; - break; - default: - break; - } - } -#endif - return 0; -} - - (void)changeDisplayMode { if (self.systemType == MednaSystemVirtualBoy) @@ -2725,55 +1297,55 @@ - (void)changeDisplayMode MDFN_IEN_VB::VIP_SetParallaxDisable(true); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 1: // (2D) white/black MDFN_IEN_VB::VIP_SetAnaglyphColors(0xFFFFFF, 0x000000); MDFN_IEN_VB::VIP_SetParallaxDisable(true); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 2: // (2D) purple/black MDFN_IEN_VB::VIP_SetAnaglyphColors(0xFF00FF, 0x000000); MDFN_IEN_VB::VIP_SetParallaxDisable(true); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 3: // (3D) red/blue MDFN_IEN_VB::VIP_SetAnaglyphColors(0xFF0000, 0x0000FF); MDFN_IEN_VB::VIP_SetParallaxDisable(false); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 4: // (3D) red/cyan MDFN_IEN_VB::VIP_SetAnaglyphColors(0xFF0000, 0x00B7EB); MDFN_IEN_VB::VIP_SetParallaxDisable(false); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 5: // (3D) red/electric cyan MDFN_IEN_VB::VIP_SetAnaglyphColors(0xFF0000, 0x00FFFF); MDFN_IEN_VB::VIP_SetParallaxDisable(false); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 6: // (3D) red/green MDFN_IEN_VB::VIP_SetAnaglyphColors(0xFF0000, 0x00FF00); MDFN_IEN_VB::VIP_SetParallaxDisable(false); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 7: // (3D) green/red MDFN_IEN_VB::VIP_SetAnaglyphColors(0x00FF00, 0xFF0000); MDFN_IEN_VB::VIP_SetParallaxDisable(false); MDFN_IEN_VB::mednafenCurrentDisplayMode++; break; - + case 8: // (3D) yellow/blue MDFN_IEN_VB::VIP_SetAnaglyphColors(0xFFFF00, 0x0000FF); MDFN_IEN_VB::VIP_SetParallaxDisable(false); MDFN_IEN_VB::mednafenCurrentDisplayMode = 0; break; - + default: return; break; @@ -2800,10 +1372,10 @@ - (BOOL)setPSXCheatCodes @synchronized(self) { // Apply enabled cheats found in dictionary // int cheatIdx=0; - + BOOL cheatListSuccessfull = YES; - NSMutableArray *failedCheats = [NSMutableArray new]; - + NSMutableArray *failedCheats = [NSMutableArray new]; + for (id key in cheatList) { if ([[cheatList valueForKey:key] isEqual:@YES]) @@ -2812,9 +1384,9 @@ - (BOOL)setPSXCheatCodes NSString *singleCode=[key stringByReplacingOccurrencesOfString:@":" withString:@""]; singleCode=[singleCode stringByReplacingOccurrencesOfString:@"+" withString:@""]; singleCode=[singleCode stringByReplacingOccurrencesOfString:@"-" withString:@""]; - + int len=0; - + while( (len+12)<=[singleCode length]) { [multipleCodes addObject:[singleCode substringWithRange:NSMakeRange(len,12)]]; len+=12; @@ -2839,18 +1411,18 @@ - (BOOL)setPSXCheatCodes */ } } - @catch (NSException *exception) { - cheatListSuccessfull = NO; - [failedCheats addObject:singleCode]; -// [cheatList removeObjectForKey:singleCode]; - ELOG(@"Game Code Error %@", exception.reason); - } + @catch (NSException *exception) { + cheatListSuccessfull = NO; + [failedCheats addObject:singleCode]; + // [cheatList removeObjectForKey:singleCode]; + ELOG(@"Game Code Error %@", exception.reason); + } } } } } - [cheatList removeObjectsForKeys:failedCheats]; - + [cheatList removeObjectsForKeys:failedCheats]; + return cheatListSuccessfull; } } @@ -2859,9 +1431,9 @@ - (BOOL)setPSXCheatCodes - (BOOL)setSNESCheatCodes { @synchronized(self) { - + BOOL cheatListSuccessfull = YES; - NSMutableArray *failedCheats = [NSMutableArray new]; + NSMutableArray *failedCheats = [NSMutableArray new]; for (id key in cheatList) { if ([[cheatList valueForKey:key] isEqual:@YES]) @@ -2870,7 +1442,7 @@ - (BOOL)setSNESCheatCodes multipleCodes = [key componentsSeparatedByString:@"+"]; ILOG(@"Multiple Codes %@", multipleCodes); - + for (NSString *singleCode in multipleCodes) { if (singleCode!= nil && singleCode.length > 0) { ILOG(@"Applying Code %@",singleCode); @@ -2892,15 +1464,15 @@ - (BOOL)setSNESCheatCodes } @catch (NSException *exception) { cheatListSuccessfull = NO; - [failedCheats addObject:singleCode]; -// [cheatList removeObjectForKey:singleCode]; + [failedCheats addObject:singleCode]; + // [cheatList removeObjectForKey:singleCode]; ELOG(@"Game Code Error %@", exception.reason); } } } } } - [cheatList removeObjectsForKeys:failedCheats]; + [cheatList removeObjectsForKeys:failedCheats]; return cheatListSuccessfull; } } @@ -2908,9 +1480,9 @@ - (BOOL)setSNESCheatCodes - (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled error:(NSError**)error { @synchronized(self) { - + BOOL cheatListSuccessfull = NO; - + if (!(self.getCheatSupport)) { return false; } @@ -2921,7 +1493,7 @@ - (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab NSLog(@"Applying Cheat Code %@ %@ %@", code, type, cheatList); Mednafen::MDFN_FlushGameCheats(1); - + switch (self.systemType) { case MednaSystemPSX: cheatListSuccessfull = self.setPSXCheatCodes; @@ -2929,27 +1501,16 @@ - (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab case MednaSystemSNES: cheatListSuccessfull = self.setSNESCheatCodes; break; - default: - cheatListSuccessfull = NO; - break; + default: + cheatListSuccessfull = NO; + break; } - + Mednafen::MDFNMP_ApplyPeriodicCheats(); // if no error til this point, return true return cheatListSuccessfull; } } -//- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { -// -//} -// -//- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { -// -//} -// -//- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { -// -//} @end diff --git a/Cores/Mednafen/MednafenGameCore.swift b/Cores/Mednafen/MednafenGameCore.swift index 3712c2d98f..6e34a75de0 100644 --- a/Cores/Mednafen/MednafenGameCore.swift +++ b/Cores/Mednafen/MednafenGameCore.swift @@ -6,7 +6,7 @@ // import PVSupport -import UIKit +import Foundation // import PVMednafen.Private extension MednafenGameCore: DiscSwappable { @@ -80,34 +80,128 @@ extension MednafenGameCore: CoreOptional { public static var options: [CoreOption] = { var options = [CoreOption]() - let videoGroup:CoreOption = .group(.init(title: "Video", - description: "Video options for all Mednafen cores."), - subOptions: [video_blit_timesync, video_fs, video_openglOption]) + let globalGroup:CoreOption = .group(.init(title: "Core", + description: "Global options for all Mednafen cores."), + subOptions: [cd_image_memcache]) + options.append(globalGroup) + + // These seem to be broken, mednafen console says not found +// let videoGroup:CoreOption = .group(.init(title: "Video", +// description: "Video options for all Mednafen cores."), +// subOptions: [video_blit_timesync, video_fs, video_openglOption]) +// +// +// options.append(videoGroup) + - - options.append(videoGroup) - let fastGroup:CoreOption = .group(.init(title: "Fast Cores", description: "Alternative versions of cores that trade accuracy for speed"), subOptions: [pceFastOption, snesFastOption]) - options.append(fastGroup) let snesFaustGroup:CoreOption = .group(.init(title: "SNES Faust", description: ""), subOptions: [snesFastSpexOption]) - options.append(snesFaustGroup) let psxGroup:CoreOption = .group(.init(title: "PlayStation", description: ""), subOptions: [psx_h_overscan]) - options.append(psxGroup) + let ssGroup:CoreOption = .group(.init(title: "Sega Saturn", + description: ""), + subOptions: [ss_region_default, ss_cart_autodefault, ss_h_overscan]) + /* + ss.input.port1,2,3,4 gamepad default + none + gamepad + 3dpad // https://segaretro.org/3D_Control_Pad + mouse + wheel + mission + dmission + gun + keyboard + jpkeyboard + + --- + ss.input.port1.3dpad.mode.defpos enum digital + analog digital Default position for switch "Mode". + Sets the position for the switch to the value specified upon startup and virtual input device change. + + digital - Digital(+) + + analog - Analog(○) + Analog mode is not compatible with all games. For some compatible games, analog mode reportedly must be enabled before the game boots up for the game to recognize it properly. + + --- + ss.region_default enum jp + na + eu + kr + tw + as + br + la jp Default region to use. + Used if region autodetection fails or is disabled. + + jp - Japan + + na - North America + + eu - Europe + + kr - South Korea + + tw - Taiwan + + as - China + + br - Brazil + + la - Latin America + + -- + ss.scsp.resamp_quality integer 0 through 10 4 SCSP output resampler quality. + 0 is lowest quality and CPU usage, 10 is highest quality and CPU usage. The resampler that this setting refers to is used for converting from 44.1KHz to the sampling rate of the host audio device Mednafen is using. Changing Mednafen's output rate, via the "sound.rate" setting, to "44100" may bypass the resampler, which can decrease CPU usage by Mednafen, and can increase or decrease audio quality, depending on various operating system and hardware factors. + + -- + + ss.slend integer 0 through 239 239 Last displayed scanline in NTSC mode. + + -- + + ss.slendp integer -16 through 271 255 Last displayed scanline in PAL mode. + + -- + + ss.smpc.autortc.lang enum english + german + french + spanish + italian + japanese english BIOS language. + Also affects language used in some games(e.g. the European release of "Panzer Dragoon"). + + english - English + + german - Deutsch + + french - Français + + spanish - Español + + italian - Italiano + + japanese - 日本語 + */ + + options.append(ssGroup) + var vbOptions = [vb_instant_display_hack, vb_sidebyside] vbOptions.append(.range(.init( title: "Side-by-side separation", @@ -126,6 +220,7 @@ extension MednafenGameCore: CoreOptional { return options }() + // MARK: Global - Video static var video_blit_timesync: CoreOption = { .bool(.init( title: "Enable time synchronization(waiting) for frame blitting", @@ -149,7 +244,17 @@ extension MednafenGameCore: CoreOptional { requiresRestart: true), defaultValue: false) }() + + // MARK: Global - CD + // cd.image_memcach + static var cd_image_memcache: CoreOption = { + .bool(.init( + title: "Cache CD in memory", + description: "Reads the entire CD image(s) into memory at startup(which will cause a small delay). Can help obviate emulation hiccups due to emulated CD access. May cause more harm than good on low memory systems.", + requiresRestart: true), defaultValue: false) + }() + // MARK: PCE static var pceFastOption: CoreOption = { .bool(.init( title: "PCE Fast", @@ -158,6 +263,7 @@ extension MednafenGameCore: CoreOptional { defaultValue: false) }() + // MARK: SNES static var snesFastOption: CoreOption = { .bool(.init( title: "SNES Fast", @@ -172,6 +278,7 @@ extension MednafenGameCore: CoreOptional { requiresRestart: true), defaultValue: false) }() + // MARK: PSX static var psx_h_overscan: CoreOption = { .bool(.init( title: "Overscan", @@ -179,6 +286,49 @@ extension MednafenGameCore: CoreOptional { requiresRestart: true), defaultValue: true) }() + // MARK: SS + static var ss_h_overscan: CoreOption = { + .bool(.init( + title: "Overscan", + description: "Show horizontal overscan area.", + requiresRestart: true), defaultValue: true) + }() + + // ss.cart.auto_default + // none, backup*, extram1, extram4, cs1ram16 + static var ss_cart_autodefault: CoreOption = { + .enumeration(.init(title: "Default cart", + description: "Default expansion cart when autodetection fails.", + requiresRestart: true), + values: [ + .init(title: "none", description: "None", value: 0), + .init(title: "backup", description: "Backup Memory(512KiB)", value: 1), + .init(title: "extram1", description: "1MiB Extended RAM", value: 2), + .init(title: "extram4", description: "4MiB Extended RAM", value: 3), + .init(title: "cs1ram16", description: "16MiB RAM mapped in A-bus CS1", value: 4), + ], + defaultValue: 1) + }() + + // ss.region_default + static var ss_region_default: CoreOption = { + .enumeration(.init(title: "Default region", + description: "Used if region autodetection fails.", + requiresRestart: true), + values: [ + .init(title: "jp", description: "Japan", value: 0), + .init(title: "na", description: "North America", value: 1), + .init(title: "eu", description: "Europe", value: 2), + .init(title: "kr", description: "South Korea", value: 3), + .init(title: "tw", description: "Taiwan", value: 4), + .init(title: "as", description: "China", value: 5), + .init(title: "br", description: "Brazil", value: 6), + .init(title: "la", description: "Latin Ameica", value: 7), + ], + defaultValue: 0) + }() + + // MARK: VB static var vb_instant_display_hack: CoreOption = { .bool(.init( title: "Display latency reduction hack", @@ -195,20 +345,35 @@ extension MednafenGameCore: CoreOptional { } @objc public extension MednafenGameCore { + // Global Video @objc(video_blit_timesync) var video_blit_timesync: Bool { MednafenGameCore.valueForOption(MednafenGameCore.video_blit_timesync).asBool } @objc(video_fs) var video_fs: Bool { MednafenGameCore.valueForOption(MednafenGameCore.video_fs).asBool } + // Global - CD + @objc(cd_image_memcache) var cd_image_memcache: Bool { MednafenGameCore.valueForOption(MednafenGameCore.cd_image_memcache).asBool } + + // PCE @objc(mednafen_pceFast) var mednafen_pceFast: Bool { MednafenGameCore.valueForOption(MednafenGameCore.pceFastOption).asBool } + + // SNES Fast @objc(mednafen_snesFast) var mednafen_snesFast: Bool { MednafenGameCore.valueForOption(MednafenGameCore.snesFastOption).asBool } @objc(mednafen_snesFast_spex) var mednafen_snesFast_spex: Bool { MednafenGameCore.valueForOption(MednafenGameCore.snesFastSpexOption).asBool } + // PSX @objc(psx_h_overscan) var psx_h_overscan: Bool { MednafenGameCore.valueForOption(MednafenGameCore.psx_h_overscan).asBool } + // SS + @objc(ss_region_default) var ss_region_default: Int { MednafenGameCore.valueForOption(MednafenGameCore.ss_region_default).asInt ?? 0 } + @objc(ss_h_overscan) var ss_h_overscan: Bool { MednafenGameCore.valueForOption(MednafenGameCore.ss_h_overscan).asBool } + @objc(ss_cart_autodefault) var ss_cart_autodefault: Int { MednafenGameCore.valueForOption(MednafenGameCore.ss_cart_autodefault).asInt ?? 1} + + // VB @objc(vb_instant_display_hack) var vb_instant_display_hack: Bool { MednafenGameCore.valueForOption(MednafenGameCore.vb_instant_display_hack).asBool } @objc(vb_sidebyside) var vb_sidebyside: Bool { MednafenGameCore.valueForOption(MednafenGameCore.vb_sidebyside).asBool } + // Helpers static func bool(forOption option: String) -> Bool { return storedValueForOption(Bool.self, option) ?? false } @@ -228,6 +393,8 @@ extension MednafenGameCore: CoreOptional { return value } + + // TODO: Fix me, FINISH FOR MAKE BETTER func parseOptions() { self.video_opengl = MednafenGameCore.valueForOption(MednafenGameCore.video_openglOption).asBool; } diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj b/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj index d78454a133..76d11fa5bf 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj +++ b/Cores/Mednafen/PVMednafen.xcodeproj/project.pbxproj @@ -8,611 +8,34 @@ /* Begin PBXBuildFile section */ 0AF2CF4C259CBB8E00E6A51F /* superfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB30E248811EE000A3922 /* superfx.cpp */; }; - 0AF2CF85259CBB9D00E6A51F /* superfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB30E248811EE000A3922 /* superfx.cpp */; }; 11AFB2BE24880B99000A3922 /* ExtMemStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BA24880B98000A3922 /* ExtMemStream.cpp */; }; - 11AFB2BF24880B99000A3922 /* ExtMemStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BA24880B98000A3922 /* ExtMemStream.cpp */; }; 11AFB2C024880B99000A3922 /* VirtualFS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BB24880B98000A3922 /* VirtualFS.cpp */; }; - 11AFB2C124880B99000A3922 /* VirtualFS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BB24880B98000A3922 /* VirtualFS.cpp */; }; 11AFB2C224880B99000A3922 /* MTStreamReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BC24880B98000A3922 /* MTStreamReader.cpp */; }; - 11AFB2C324880B99000A3922 /* MTStreamReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BC24880B98000A3922 /* MTStreamReader.cpp */; }; 11AFB2C424880B99000A3922 /* NativeVFS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BD24880B99000A3922 /* NativeVFS.cpp */; }; - 11AFB2C524880B99000A3922 /* NativeVFS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2BD24880B99000A3922 /* NativeVFS.cpp */; }; 11AFB2CE24880BF4000A3922 /* DSPUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CC24880BF3000A3922 /* DSPUtility.cpp */; }; - 11AFB2CF24880BF4000A3922 /* DSPUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CC24880BF3000A3922 /* DSPUtility.cpp */; }; 11AFB2D024880BF4000A3922 /* SwiftResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CD24880BF3000A3922 /* SwiftResampler.cpp */; }; - 11AFB2D124880BF4000A3922 /* SwiftResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CD24880BF3000A3922 /* SwiftResampler.cpp */; }; 11AFB2E624880C49000A3922 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D524880C3C000A3922 /* debug.cpp */; }; 11AFB2E724880C49000A3922 /* dis65816.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D924880C3D000A3922 /* dis65816.cpp */; }; 11AFB2E824880C49000A3922 /* msu1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D624880C3D000A3922 /* msu1.cpp */; }; 11AFB2E924880C49000A3922 /* ppu_mt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D424880C3C000A3922 /* ppu_mt.cpp */; }; 11AFB2EA24880C49000A3922 /* ppu_mtrender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D824880C3D000A3922 /* ppu_mtrender.cpp */; }; 11AFB2EB24880C49000A3922 /* ppu_st.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D724880C3D000A3922 /* ppu_st.cpp */; }; - 11AFB2EC24880C4A000A3922 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D524880C3C000A3922 /* debug.cpp */; }; - 11AFB2ED24880C4A000A3922 /* dis65816.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D924880C3D000A3922 /* dis65816.cpp */; }; - 11AFB2EE24880C4A000A3922 /* msu1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D624880C3D000A3922 /* msu1.cpp */; }; - 11AFB2EF24880C4A000A3922 /* ppu_mt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D424880C3C000A3922 /* ppu_mt.cpp */; }; - 11AFB2F024880C4A000A3922 /* ppu_mtrender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D824880C3D000A3922 /* ppu_mtrender.cpp */; }; - 11AFB2F124880C4A000A3922 /* ppu_st.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2D724880C3D000A3922 /* ppu_st.cpp */; }; 11AFB30F24881206000A3922 /* cx4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB302248811EC000A3922 /* cx4.cpp */; }; 11AFB31024881206000A3922 /* dsp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB30A248811EE000A3922 /* dsp1.cpp */; }; 11AFB31124881206000A3922 /* dsp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB309248811ED000A3922 /* dsp2.cpp */; }; 11AFB31224881206000A3922 /* sa1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB300248811EC000A3922 /* sa1.cpp */; }; 11AFB31324881206000A3922 /* sa1cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB30B248811EE000A3922 /* sa1cpu.cpp */; }; 11AFB31424881206000A3922 /* sdd1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB301248811EC000A3922 /* sdd1.cpp */; }; - 11AFB31624881207000A3922 /* cx4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB302248811EC000A3922 /* cx4.cpp */; }; - 11AFB31724881207000A3922 /* dsp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB30A248811EE000A3922 /* dsp1.cpp */; }; - 11AFB31824881207000A3922 /* dsp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB309248811ED000A3922 /* dsp2.cpp */; }; - 11AFB31924881207000A3922 /* sa1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB300248811EC000A3922 /* sa1.cpp */; }; - 11AFB31A24881207000A3922 /* sa1cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB30B248811EE000A3922 /* sa1cpu.cpp */; }; - 11AFB31B24881207000A3922 /* sdd1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB301248811EC000A3922 /* sdd1.cpp */; }; 11AFB31F2488132B000A3922 /* Deinterlacer_Blend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB31D2488132A000A3922 /* Deinterlacer_Blend.cpp */; }; - 11AFB3202488132B000A3922 /* Deinterlacer_Blend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB31D2488132A000A3922 /* Deinterlacer_Blend.cpp */; }; 11AFB3212488132B000A3922 /* Deinterlacer_Simple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB31E2488132A000A3922 /* Deinterlacer_Simple.cpp */; }; - 11AFB3222488132B000A3922 /* Deinterlacer_Simple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB31E2488132A000A3922 /* Deinterlacer_Simple.cpp */; }; 11AFB328248813A9000A3922 /* CDInterface_ST.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB325248813A8000A3922 /* CDInterface_ST.cpp */; }; - 11AFB329248813A9000A3922 /* CDInterface_ST.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB325248813A8000A3922 /* CDInterface_ST.cpp */; }; 11AFB32A248813A9000A3922 /* CDInterface_MT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB326248813A8000A3922 /* CDInterface_MT.cpp */; }; - 11AFB32B248813A9000A3922 /* CDInterface_MT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB326248813A8000A3922 /* CDInterface_MT.cpp */; }; 11AFB32C248813A9000A3922 /* CDInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB327248813A8000A3922 /* CDInterface.cpp */; }; - 11AFB32D248813A9000A3922 /* CDInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB327248813A8000A3922 /* CDInterface.cpp */; }; 11AFB33124881CBB000A3922 /* MThreading_POSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2F824880D19000A3922 /* MThreading_POSIX.cpp */; }; - 11AFB33224881CBC000A3922 /* MThreading_POSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2F824880D19000A3922 /* MThreading_POSIX.cpp */; }; 11AFB33424882054000A3922 /* idct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB33324882053000A3922 /* idct.cpp */; }; - 11AFB33524882054000A3922 /* idct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB33324882053000A3922 /* idct.cpp */; }; 11AFB339248820AF000A3922 /* crc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB3382488209B000A3922 /* crc.cpp */; }; - 11AFB33A248820AF000A3922 /* crc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB3382488209B000A3922 /* crc.cpp */; }; - B314E31021081E9200D0C27A /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B314E30F21081E9200D0C27A /* PVSupport.framework */; }; B3223CDD1E09E0CA007BB244 /* MednafenGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 824088340FFDDCF400F0FE7D /* MednafenGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3223CDE1E09E0CB007BB244 /* MednafenGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 824088340FFDDCF400F0FE7D /* MednafenGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B324C32421919BC6009F4EDC /* gte.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0E020736EEA0097D86F /* gte.cpp */; }; - B324C32521919BC6009F4EDC /* gpu_polygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB10D20736EEA0097D86F /* gpu_polygon.cpp */; }; - B324C32621919BC6009F4EDC /* mdec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0E220736EEA0097D86F /* mdec.cpp */; }; - B324C32721919BC6009F4EDC /* dualanalog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C220736EEA0097D86F /* dualanalog.cpp */; }; - B324C32821919BC6009F4EDC /* sio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0F320736EEA0097D86F /* sio.cpp */; }; - B324C32921919BC6009F4EDC /* memcard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C320736EEA0097D86F /* memcard.cpp */; }; - B324C32A21919BC6009F4EDC /* guncon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C420736EEA0097D86F /* guncon.cpp */; }; - B324C32B21919BC6009F4EDC /* gpu_sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0BF20736EEA0097D86F /* gpu_sprite.cpp */; }; - B324C32C21919BC6009F4EDC /* psx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0B620736EEA0097D86F /* psx.cpp */; }; - B324C32D21919BC6009F4EDC /* dis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0EF20736EEA0097D86F /* dis.cpp */; }; - B324C32E21919BC6009F4EDC /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0F520736EEA0097D86F /* cpu.cpp */; }; - B324C32F21919BC6009F4EDC /* irq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB10C20736EEA0097D86F /* irq.cpp */; }; - B324C33021919BC6009F4EDC /* dualshock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0CC20736EEA0097D86F /* dualshock.cpp */; }; - B324C33121919BC6009F4EDC /* spu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0E120736EEA0097D86F /* spu.cpp */; }; - B324C33221919BC6009F4EDC /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0BE20736EEA0097D86F /* dma.cpp */; }; - B324C33321919BC6009F4EDC /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0DF20736EEA0097D86F /* timer.cpp */; }; - B324C33421919BC6009F4EDC /* frontio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0E620736EEA0097D86F /* frontio.cpp */; }; - B324C33521919BC6009F4EDC /* gpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB10A20736EEA0097D86F /* gpu.cpp */; }; - B324C33621919BC6009F4EDC /* gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C820736EEA0097D86F /* gamepad.cpp */; }; - B324C33721919BC6009F4EDC /* justifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C620736EEA0097D86F /* justifier.cpp */; }; - B324C33821919BC6009F4EDC /* gpu_line.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0BD20736EEA0097D86F /* gpu_line.cpp */; }; - B324C33921919BC6009F4EDC /* negcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0CE20736EEA0097D86F /* negcon.cpp */; }; - B324C33A21919BC6009F4EDC /* multitap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C920736EEA0097D86F /* multitap.cpp */; }; - B324C33B21919BC6009F4EDC /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C720736EEA0097D86F /* mouse.cpp */; }; - B324C33C21919BC6009F4EDC /* cdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB10B20736EEA0097D86F /* cdc.cpp */; }; - B324C34621919C1C009F4EDC /* vdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB11A20736EEA0097D86F /* vdc.cpp */; }; - B324C35021919CD6009F4EDC /* 88.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADAE20736EE90097D86F /* 88.cpp */; }; - B324C35121919CD6009F4EDC /* 67.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB020736EE90097D86F /* 67.cpp */; }; - B324C35221919CD6009F4EDC /* 248.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3720736EE80097D86F /* 248.cpp */; }; - B324C35321919CD6009F4EDC /* 23.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1B20736EE80097D86F /* 23.cpp */; }; - B324C35421919CD6009F4EDC /* 70.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB620736EE90097D86F /* 70.cpp */; }; - B324C35521919CD6009F4EDC /* 8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB320736EE90097D86F /* 8.cpp */; }; - B324C35621919CD6009F4EDC /* 90.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0F20736EE80097D86F /* 90.cpp */; }; - B324C35721919CD6009F4EDC /* 22.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2020736EE80097D86F /* 22.cpp */; }; - B324C35821919CD6009F4EDC /* 89.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4720736EE80097D86F /* 89.cpp */; }; - B324C35921919CD6009F4EDC /* 68.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF720736EE80097D86F /* 68.cpp */; }; - B324C35A21919CD6009F4EDC /* vrc7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1020736EE80097D86F /* vrc7.cpp */; }; - B324C35B21919CD6009F4EDC /* 77.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4C20736EE80097D86F /* 77.cpp */; }; - B324C35C21919CD6009F4EDC /* 187.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1420736EE80097D86F /* 187.cpp */; }; - B324C35D21919CD6009F4EDC /* 33.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3220736EE80097D86F /* 33.cpp */; }; - B324C35E21919CD6009F4EDC /* 222.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF920736EE80097D86F /* 222.cpp */; }; - B324C35F21919CD6009F4EDC /* bbattler2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACC320736EE80097D86F /* bbattler2.cpp */; }; - B324C36021919CD6009F4EDC /* 112.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4120736EE80097D86F /* 112.cpp */; }; - B324C36121919CD6009F4EDC /* 232.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1620736EE80097D86F /* 232.cpp */; }; - B324C36221919CD6009F4EDC /* mmc3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3620736EE80097D86F /* mmc3.cpp */; }; - B324C36321919CD6009F4EDC /* 38.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3D20736EE80097D86F /* 38.cpp */; }; - B324C36421919CD6009F4EDC /* 208.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0320736EE80097D86F /* 208.cpp */; }; - B324C36521919CD6009F4EDC /* deirom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2F20736EE80097D86F /* deirom.cpp */; }; - B324C36621919CD6009F4EDC /* nsfe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADE220736EE90097D86F /* nsfe.cpp */; }; - B324C36721919CD6009F4EDC /* 76.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4920736EE80097D86F /* 76.cpp */; }; - B324C36821919CD6009F4EDC /* ftrainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACC120736EE80097D86F /* ftrainer.cpp */; }; - B324C36921919CD6009F4EDC /* 82.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACFC20736EE80097D86F /* 82.cpp */; }; - B324C36A21919CD6009F4EDC /* toprider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACCA20736EE80097D86F /* toprider.cpp */; }; - B324C36B21919CD6009F4EDC /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADBE20736EE90097D86F /* ppu.cpp */; }; - B324C36C21919CD6009F4EDC /* 193.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1520736EE80097D86F /* 193.cpp */; }; - B324C36D21919CD6009F4EDC /* 152.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0E20736EE80097D86F /* 152.cpp */; }; - B324C36E21919CD6009F4EDC /* 93.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1920736EE80097D86F /* 93.cpp */; }; - B324C36F21919CD6009F4EDC /* emu2413.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB220736EE90097D86F /* emu2413.cpp */; }; - B324C37021919CD6009F4EDC /* 94.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACFF20736EE80097D86F /* 94.cpp */; }; - B324C37121919CD6009F4EDC /* 30.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2B20736EE80097D86F /* 30.cpp */; }; - B324C37221919CD6009F4EDC /* 96.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACFB20736EE80097D86F /* 96.cpp */; }; - B324C37321919CD6009F4EDC /* 241.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1E20736EE80097D86F /* 241.cpp */; }; - B324C37421919CD6009F4EDC /* 156.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACFE20736EE80097D86F /* 156.cpp */; }; - B324C37521919CD6009F4EDC /* partytap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACCD20736EE80097D86F /* partytap.cpp */; }; - B324C37621919CD6009F4EDC /* nes_ntsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACB420736EE80097D86F /* nes_ntsc.cpp */; }; - B324C37721919CD6009F4EDC /* 92.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1220736EE80097D86F /* 92.cpp */; }; - B324C37821919CD6009F4EDC /* 189.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4D20736EE80097D86F /* 189.cpp */; }; - B324C37921919CD6009F4EDC /* 8237.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0120736EE80097D86F /* 8237.cpp */; }; - B324C37A21919CD6009F4EDC /* nes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACE420736EE80097D86F /* nes.cpp */; }; - B324C37B21919CD6009F4EDC /* 99.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB520736EE90097D86F /* 99.cpp */; }; - B324C37C21919CD6009F4EDC /* maxicart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4520736EE80097D86F /* maxicart.cpp */; }; - B324C37D21919CD6009F4EDC /* ines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADE320736EE90097D86F /* ines.cpp */; }; - B324C37E21919CD6009F4EDC /* sachen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3020736EE80097D86F /* sachen.cpp */; }; - B324C37F21919CD6009F4EDC /* 75.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4620736EE80097D86F /* 75.cpp */; }; - B324C38021919CD6009F4EDC /* suborkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACCC20736EE80097D86F /* suborkb.cpp */; }; - B324C38121919CD6009F4EDC /* 113.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4320736EE80097D86F /* 113.cpp */; }; - B324C38221919CD6009F4EDC /* oekakids.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACC220736EE80097D86F /* oekakids.cpp */; }; - B324C38321919CD6009F4EDC /* h2288.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0C20736EE80097D86F /* h2288.cpp */; }; - B324C38421919CD6009F4EDC /* cursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACD020736EE80097D86F /* cursor.cpp */; }; - B324C38521919CD6009F4EDC /* colordreams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4220736EE80097D86F /* colordreams.cpp */; }; - B324C38621919CD6009F4EDC /* 185.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0D20736EE80097D86F /* 185.cpp */; }; - B324C38721919CD6009F4EDC /* 40.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF820736EE80097D86F /* 40.cpp */; }; - B324C38821919CD6009F4EDC /* 21.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2420736EE80097D86F /* 21.cpp */; }; - B324C38921919CD6009F4EDC /* mmc5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4020736EE80097D86F /* mmc5.cpp */; }; - B324C38A21919CD6009F4EDC /* zapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACC820736EE80097D86F /* zapper.cpp */; }; - B324C38B21919CD6009F4EDC /* 73.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADAF20736EE90097D86F /* 73.cpp */; }; - B324C38C21919CD6009F4EDC /* 117.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3420736EE80097D86F /* 117.cpp */; }; - B324C38D21919CD6009F4EDC /* 182.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF620736EE80097D86F /* 182.cpp */; }; - B324C38E21919CD6009F4EDC /* 16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3520736EE80097D86F /* 16.cpp */; }; - B324C38F21919CD6009F4EDC /* nina06.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB120736EE90097D86F /* nina06.cpp */; }; - B324C39021919CD6009F4EDC /* fme7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0820736EE80097D86F /* fme7.cpp */; }; - B324C39121919CD6009F4EDC /* 78.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1720736EE80097D86F /* 78.cpp */; }; - B324C39221919CD6009F4EDC /* nsf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB920736EE90097D86F /* nsf.cpp */; }; - B324C39321919CD6009F4EDC /* vsuni.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADBC20736EE90097D86F /* vsuni.cpp */; }; - B324C39421919CD6009F4EDC /* 51.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1320736EE80097D86F /* 51.cpp */; }; - B324C39521919CD6009F4EDC /* 234.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0220736EE80097D86F /* 234.cpp */; }; - B324C39621919CD6009F4EDC /* 15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3A20736EE80097D86F /* 15.cpp */; }; - B324C39721919CD6009F4EDC /* 86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1120736EE80097D86F /* 86.cpp */; }; - B324C39821919CD6009F4EDC /* 46.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0920736EE80097D86F /* 46.cpp */; }; - B324C39921919CD6009F4EDC /* 87.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1A20736EE80097D86F /* 87.cpp */; }; - B324C39A21919CD6009F4EDC /* 228.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4B20736EE80097D86F /* 228.cpp */; }; - B324C39B21919CD6009F4EDC /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACBC20736EE80097D86F /* input.cpp */; }; - B324C39C21919CD6009F4EDC /* n106.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4A20736EE80097D86F /* n106.cpp */; }; - B324C39D21919CD6009F4EDC /* 151.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1820736EE80097D86F /* 151.cpp */; }; - B324C39E21919CD6009F4EDC /* 244.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3120736EE80097D86F /* 244.cpp */; }; - B324C39F21919CD6009F4EDC /* supervision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3820736EE80097D86F /* supervision.cpp */; }; - B324C3A021919CD6009F4EDC /* hypershot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACC020736EE80097D86F /* hypershot.cpp */; }; - B324C3A121919CD6009F4EDC /* 34.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2220736EE80097D86F /* 34.cpp */; }; - B324C3A321919CD6009F4EDC /* 95.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0620736EE80097D86F /* 95.cpp */; }; - B324C3A421919CD6009F4EDC /* 114.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3920736EE80097D86F /* 114.cpp */; }; - B324C3A521919CD6009F4EDC /* malee.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3320736EE80097D86F /* malee.cpp */; }; - B324C3A621919CD6009F4EDC /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF220736EE80097D86F /* sound.cpp */; }; - B324C3A721919CD6009F4EDC /* unif.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF020736EE80097D86F /* unif.cpp */; }; - B324C3A821919CD6009F4EDC /* 18.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2920736EE80097D86F /* 18.cpp */; }; - B324C3A921919CD6009F4EDC /* arkanoid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACCF20736EE80097D86F /* arkanoid.cpp */; }; - B324C3AA21919CD6009F4EDC /* simple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1D20736EE80097D86F /* simple.cpp */; }; - B324C3AB21919CD6009F4EDC /* powerpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACC720736EE80097D86F /* powerpad.cpp */; }; - B324C3AC21919CD6009F4EDC /* vrc6.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0720736EE80097D86F /* vrc6.cpp */; }; - B324C3AD21919CD6009F4EDC /* 180.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0520736EE80097D86F /* 180.cpp */; }; - B324C3AE21919CD6009F4EDC /* 242.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2320736EE80097D86F /* 242.cpp */; }; - B324C3AF21919CD6009F4EDC /* 246.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2720736EE80097D86F /* 246.cpp */; }; - B324C3B021919CD6009F4EDC /* 25.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2520736EE80097D86F /* 25.cpp */; }; - B324C3B121919CD6009F4EDC /* mmc1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3B20736EE80097D86F /* mmc1.cpp */; }; - B324C3B221919CD6009F4EDC /* 41.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACFA20736EE80097D86F /* 41.cpp */; }; - B324C3B321919CD6009F4EDC /* 97.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF520736EE80097D86F /* 97.cpp */; }; - B324C3B421919CD6009F4EDC /* 184.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0B20736EE80097D86F /* 184.cpp */; }; - B324C3B521919CD6009F4EDC /* 190.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0A20736EE80097D86F /* 190.cpp */; }; - B324C3B621919CD6009F4EDC /* ffe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2A20736EE80097D86F /* ffe.cpp */; }; - B324C3B721919CD6009F4EDC /* 240.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD1C20736EE80097D86F /* 240.cpp */; }; - B324C3B821919CD6009F4EDC /* 32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2E20736EE80097D86F /* 32.cpp */; }; - B324C3B921919CD6009F4EDC /* super24.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD3E20736EE80097D86F /* super24.cpp */; }; - B324C3BA21919CD6009F4EDC /* fds-sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACAB20736EE80097D86F /* fds-sound.cpp */; }; - B324C3BB21919CD6009F4EDC /* novel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2C20736EE80097D86F /* novel.cpp */; }; - B324C3BC21919CD6009F4EDC /* palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADC520736EE90097D86F /* palette.cpp */; }; - B324C3BD21919CD6009F4EDC /* 107.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4420736EE80097D86F /* 107.cpp */; }; - B324C3BE21919CD6009F4EDC /* 80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0020736EE80097D86F /* 80.cpp */; }; - B324C3BF21919CD6009F4EDC /* fds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACF320736EE80097D86F /* fds.cpp */; }; - B324C3C021919CD6009F4EDC /* codemasters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2820736EE80097D86F /* codemasters.cpp */; }; - B324C3C121919CD6009F4EDC /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADE420736EE90097D86F /* cart.cpp */; }; - B324C3C221919CD6009F4EDC /* x6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACEF20736EE80097D86F /* x6502.cpp */; }; - B324C3C321919CD6009F4EDC /* mahjong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACCE20736EE80097D86F /* mahjong.cpp */; }; - B324C3C421919CD6009F4EDC /* dis6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADD020736EE90097D86F /* dis6502.cpp */; }; - B324C3C521919CD6009F4EDC /* 72.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB420736EE90097D86F /* 72.cpp */; }; - B324C3C621919CD6009F4EDC /* mmc2and4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD2D20736EE80097D86F /* mmc2and4.cpp */; }; - B324C3C721919CD6009F4EDC /* tengen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB720736EE90097D86F /* tengen.cpp */; }; - B324C3C821919CD6009F4EDC /* 163.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD4820736EE80097D86F /* 163.cpp */; }; - B324C3C921919CD6009F4EDC /* 65.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADB820736EE90097D86F /* 65.cpp */; }; - B324C3CA21919CD6009F4EDC /* 42.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAD0420736EE80097D86F /* 42.cpp */; }; - B324C3CB21919CD6009F4EDC /* 140.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACFD20736EE80097D86F /* 140.cpp */; }; - B324C3CC21919CD6009F4EDC /* shadow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACBF20736EE80097D86F /* shadow.cpp */; }; - B324C3CD21919CD6009F4EDC /* fkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACC520736EE80097D86F /* fkb.cpp */; }; - B324C3D721919D34009F4EDC /* map_ssf2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB31720736EEB0097D86F /* map_ssf2.cpp */; }; - B324C3D821919D34009F4EDC /* map_rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB31A20736EEB0097D86F /* map_rom.cpp */; }; - B324C3D921919D34009F4EDC /* memvdp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2F220736EEB0097D86F /* memvdp.cpp */; }; - B324C3DA21919D34009F4EDC /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB31320736EEB0097D86F /* sound.cpp */; }; - B324C3DB21919D34009F4EDC /* interrupt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB33F20736EEB0097D86F /* interrupt.cpp */; }; - B324C3DC21919D34009F4EDC /* mem68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB30D20736EEB0097D86F /* mem68k.cpp */; }; - B324C3DD21919D34009F4EDC /* header.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB30620736EEB0097D86F /* header.cpp */; }; - B324C3DE21919D34009F4EDC /* map_rmx3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB32420736EEB0097D86F /* map_rmx3.cpp */; }; - B324C3DF21919D34009F4EDC /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB34020736EEB0097D86F /* timer.cpp */; }; - B324C3E021919D34009F4EDC /* map_realtec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB32520736EEB0097D86F /* map_realtec.cpp */; }; - B324C3E121919D34009F4EDC /* genesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2EF20736EEB0097D86F /* genesis.cpp */; }; - B324C3E221919D34009F4EDC /* pcm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB34320736EEB0097D86F /* pcm.cpp */; }; - B324C3E321919D34009F4EDC /* memz80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB33920736EEB0097D86F /* memz80.cpp */; }; - B324C3E421919D34009F4EDC /* system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB31020736EEB0097D86F /* system.cpp */; }; - B324C3E521919D34009F4EDC /* membnk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2F320736EEB0097D86F /* membnk.cpp */; }; - B324C3E621919D34009F4EDC /* multitap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2FA20736EEB0097D86F /* multitap.cpp */; }; - B324C3E721919D34009F4EDC /* map_ff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB31B20736EEB0097D86F /* map_ff.cpp */; }; - B324C3E821919D34009F4EDC /* genio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB30A20736EEB0097D86F /* genio.cpp */; }; - B324C3E921919D34009F4EDC /* cd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB33C20736EEB0097D86F /* cd.cpp */; }; - B324C3EA21919D34009F4EDC /* cdc_cdd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB34220736EEB0097D86F /* cdc_cdd.cpp */; }; - B324C3EB21919D34009F4EDC /* map_sbb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB32720736EEB0097D86F /* map_sbb.cpp */; }; - B324C3EC21919D34009F4EDC /* map_sram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB32920736EEB0097D86F /* map_sram.cpp */; }; - B324C3ED21919D34009F4EDC /* 4way.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2F820736EEB0097D86F /* 4way.cpp */; }; - B324C3EE21919D34009F4EDC /* map_svp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB32820736EEB0097D86F /* map_svp.cpp */; }; - B324C3EF21919D34009F4EDC /* map_eeprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB31620736EEB0097D86F /* map_eeprom.cpp */; }; - B324C3F021919D34009F4EDC /* megamouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2FC20736EEB0097D86F /* megamouse.cpp */; }; - B324C3F121919D34009F4EDC /* vdp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2F620736EEB0097D86F /* vdp.cpp */; }; - B324C3F221919D34009F4EDC /* gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2F920736EEB0097D86F /* gamepad.cpp */; }; - B324C3F321919D34009F4EDC /* map_yase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB33620736EEB0097D86F /* map_yase.cpp */; }; - B324C3F421919D34009F4EDC /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB33720736EEB0097D86F /* cart.cpp */; }; - B324C3FD21919D73009F4EDC /* string.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB36420736EEB0097D86F /* string.cpp */; }; - B324C3FE21919D73009F4EDC /* cputest.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB12320736EEA0097D86F /* cputest.c */; }; - B324C3FF21919D73009F4EDC /* snes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB29020736EEB0097D86F /* snes.cpp */; }; - B324C40021919D73009F4EDC /* sha256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE1C20736EE90097D86F /* sha256.cpp */; }; - B324C40121919D73009F4EDC /* Stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB29920736EEB0097D86F /* Stream.cpp */; }; - B324C40221919D73009F4EDC /* git.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3CA20736EEC0097D86F /* git.cpp */; }; - B324C40321919D73009F4EDC /* player.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADE520736EE90097D86F /* player.cpp */; }; - B324C40421919D73009F4EDC /* IPSPatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB29A20736EEB0097D86F /* IPSPatcher.cpp */; }; - B324C40521919D73009F4EDC /* GZFileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB2420736EE80097D86F /* GZFileStream.cpp */; }; - B324C40621919D73009F4EDC /* resample.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB13520736EEA0097D86F /* resample.c */; }; - B324C40721919D73009F4EDC /* file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB28820736EEB0097D86F /* file.cpp */; }; - B324C40821919D73009F4EDC /* escape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB36220736EEB0097D86F /* escape.cpp */; }; - B324C40921919D73009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB1920736EE80097D86F /* memory.cpp */; }; - B324C40A21919D73009F4EDC /* cdplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB10F20736EEA0097D86F /* cdplay.cpp */; }; - B324C40B21919D73009F4EDC /* netplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3AB20736EEC0097D86F /* netplay.cpp */; }; - B324C40C21919D73009F4EDC /* SNSFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB1C20736EE80097D86F /* SNSFLoader.cpp */; }; - B324C40D21919D73009F4EDC /* general.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAA620736EE70097D86F /* general.cpp */; }; - B324C40E21919D73009F4EDC /* error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4E20736EE90097D86F /* error.cpp */; }; - B324C40F21919D73009F4EDC /* Net.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABDB20736EE80097D86F /* Net.cpp */; }; - B324C41021919D73009F4EDC /* MemoryStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB11E20736EEA0097D86F /* MemoryStream.cpp */; }; - B324C41121919D73009F4EDC /* FileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB28720736EEB0097D86F /* FileStream.cpp */; }; - B324C41221919D73009F4EDC /* psx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB28B20736EEB0097D86F /* psx.cpp */; }; - B324C41321919D73009F4EDC /* gb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB28F20736EEB0097D86F /* gb.cpp */; }; - B324C41421919D73009F4EDC /* sha1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE1B20736EE90097D86F /* sha1.cpp */; }; - B324C41521919D73009F4EDC /* endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB11420736EEA0097D86F /* endian.cpp */; }; - B324C41621919D73009F4EDC /* state_rewind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2EB20736EEB0097D86F /* state_rewind.cpp */; }; - B324C41721919D73009F4EDC /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2B120736EEB0097D86F /* debug.cpp */; }; - B324C41821919D73009F4EDC /* ZLInflateFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB2220736EE80097D86F /* ZLInflateFilter.cpp */; }; - B324C41921919D73009F4EDC /* Net_POSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABDC20736EE80097D86F /* Net_POSIX.cpp */; }; - B324C41A21919D73009F4EDC /* SPCReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4C20736EE90097D86F /* SPCReader.cpp */; }; - B324C41B21919D73009F4EDC /* settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3AC20736EEC0097D86F /* settings.cpp */; }; - B324C41C21919D73009F4EDC /* state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB11D20736EEA0097D86F /* state.cpp */; }; - B324C41D21919D73009F4EDC /* mednafen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB1B20736EE80097D86F /* mednafen.cpp */; }; - B324C41F21919D73009F4EDC /* movie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3AD20736EEC0097D86F /* movie.cpp */; }; - B324C42021919D73009F4EDC /* ZIPReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB2020736EE80097D86F /* ZIPReader.cpp */; }; - B324C42121919D73009F4EDC /* mempatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA9F20736EE70097D86F /* mempatcher.cpp */; }; - B324C42221919D73009F4EDC /* PSFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE0C20736EE90097D86F /* PSFLoader.cpp */; }; - B324C42321919D73009F4EDC /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE1720736EE90097D86F /* md5.cpp */; }; - B324C42421919D73009F4EDC /* demo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAA320736EE70097D86F /* demo.cpp */; }; - B324C42E21919DC9009F4EDC /* smp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFE820736EEA0097D86F /* smp.cpp */; }; - B324C42F21919DC9009F4EDC /* bus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF3F20736EE90097D86F /* bus.cpp */; }; - B324C43021919DC9009F4EDC /* opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF6E20736EE90097D86F /* opcodes.cpp */; }; - B324C43121919DC9009F4EDC /* bus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF7B20736EE90097D86F /* bus.cpp */; }; - B324C43221919DC9009F4EDC /* echo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFC120736EEA0097D86F /* echo.cpp */; }; - B324C43321919DC9009F4EDC /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB01620736EEA0097D86F /* ppu.cpp */; }; - B324C43421919DC9009F4EDC /* algorithms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEAD20736EE90097D86F /* algorithms.cpp */; }; - B324C43521919DC9009F4EDC /* cx4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF0820736EE90097D86F /* cx4.cpp */; }; - B324C43621919DC9009F4EDC /* opcode_write.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEB320736EE90097D86F /* opcode_write.cpp */; }; - B324C43721919DC9009F4EDC /* decomp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF4B20736EE90097D86F /* decomp.cpp */; }; - B324C43821919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE9B20736EE90097D86F /* serialization.cpp */; }; - B324C43921919DC9009F4EDC /* opcode_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF6C20736EE90097D86F /* opcode_table.cpp */; }; - B324C43A21919DC9009F4EDC /* bsx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF1820736EE90097D86F /* bsx.cpp */; }; - B324C43B21919DC9009F4EDC /* opcode_mov.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFCC20736EEA0097D86F /* opcode_mov.cpp */; }; - B324C43C21919DC9009F4EDC /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAED920736EE90097D86F /* cpu.cpp */; }; - B324C43D21919DC9009F4EDC /* dsp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEE120736EE90097D86F /* dsp2.cpp */; }; - B324C43E21919DC9009F4EDC /* gameboyheader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF8C20736EEA0097D86F /* gameboyheader.cpp */; }; - B324C43F21919DC9009F4EDC /* arm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB00F20736EEA0097D86F /* arm.c */; }; - B324C44021919DC9009F4EDC /* bg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02320736EEA0097D86F /* bg.cpp */; }; - B324C44121919DC9009F4EDC /* scpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEC220736EE90097D86F /* scpu.cpp */; }; - B324C44221919DC9009F4EDC /* mmio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF3C20736EE90097D86F /* mmio.cpp */; }; - B324C44321919DC9009F4EDC /* bsx_flash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF1720736EE90097D86F /* bsx_flash.cpp */; }; - B324C44421919DC9009F4EDC /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF9F20736EEA0097D86F /* video.cpp */; }; - B324C44521919DC9009F4EDC /* opcode_read.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFCD20736EEA0097D86F /* opcode_read.cpp */; }; - B324C44621919DC9009F4EDC /* windows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02220736EEA0097D86F /* windows.cpp */; }; - B324C44721919DC9009F4EDC /* dsp4emu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEF320736EE90097D86F /* dsp4emu.c */; }; - B324C44821919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEE420736EE90097D86F /* serialization.cpp */; }; - B324C44921919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02920736EEA0097D86F /* serialization.cpp */; }; - B324C44A21919DC9009F4EDC /* event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAECA20736EE90097D86F /* event.cpp */; }; - B324C44B21919DC9009F4EDC /* functions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF0E20736EE90097D86F /* functions.cpp */; }; - B324C44C21919DC9009F4EDC /* line.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02020736EEA0097D86F /* line.cpp */; }; - B324C44D21919DC9009F4EDC /* sdsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFC720736EEA0097D86F /* sdsp.cpp */; }; - B324C44E21919DC9009F4EDC /* data.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF0A20736EE90097D86F /* data.cpp */; }; - B324C44F21919DC9009F4EDC /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF4320736EE90097D86F /* dma.cpp */; }; - B324C45021919DC9009F4EDC /* dsp3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEF520736EE90097D86F /* dsp3.cpp */; }; - B324C45121919DC9009F4EDC /* spc7110.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF4C20736EE90097D86F /* spc7110.cpp */; }; - B324C45221919DC9009F4EDC /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEB020736EE90097D86F /* table.cpp */; }; - B324C45321919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF2420736EE90097D86F /* serialization.cpp */; }; - B324C45421919DC9009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEC020736EE90097D86F /* memory.cpp */; }; - B324C45521919DC9009F4EDC /* mmio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF7720736EE90097D86F /* mmio.cpp */; }; - B324C45621919DC9009F4EDC /* dsp1emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF2220736EE90097D86F /* dsp1emu.cpp */; }; - B324C45721919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF8B20736EEA0097D86F /* serialization.cpp */; }; - B324C45821919DC9009F4EDC /* oam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02620736EEA0097D86F /* oam.cpp */; }; - B324C45921919DC9009F4EDC /* libco.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB00820736EEA0097D86F /* libco.c */; }; - B324C45A21919DC9009F4EDC /* joypad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEC920736EE90097D86F /* joypad.cpp */; }; - B324C45B21919DC9009F4EDC /* cartridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF8920736EE90097D86F /* cartridge.cpp */; }; - B324C45C21919DC9009F4EDC /* cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02720736EEA0097D86F /* cache.cpp */; }; - B324C45D21919DC9009F4EDC /* opcode_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFD020736EEA0097D86F /* opcode_misc.cpp */; }; - B324C45E21919DC9009F4EDC /* disasm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF7520736EE90097D86F /* disasm.cpp */; }; - B324C45F21919DC9009F4EDC /* core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEAF20736EE90097D86F /* core.cpp */; }; - B324C46021919DC9009F4EDC /* addsub.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02520736EEA0097D86F /* addsub.cpp */; }; - B324C46121919DC9009F4EDC /* opcode_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEB220736EE90097D86F /* opcode_misc.cpp */; }; - B324C46221919DC9009F4EDC /* sdd1emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF5820736EE90097D86F /* sdd1emu.cpp */; }; - B324C46321919DC9009F4EDC /* brr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFBD20736EEA0097D86F /* brr.cpp */; }; - B324C46421919DC9009F4EDC /* system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE9C20736EE90097D86F /* system.cpp */; }; - B324C46521919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF5A20736EE90097D86F /* serialization.cpp */; }; - B324C46621919DC9009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEA120736EE90097D86F /* memory.cpp */; }; - B324C46721919DC9009F4EDC /* counter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFBF20736EEA0097D86F /* counter.cpp */; }; - B324C46821919DC9009F4EDC /* obc1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEFF20736EE90097D86F /* obc1.cpp */; }; - B324C46921919DC9009F4EDC /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFA320736EEA0097D86F /* config.cpp */; }; - B324C46A21919DC9009F4EDC /* voice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFB920736EEA0097D86F /* voice.cpp */; }; - B324C46B21919DC9009F4EDC /* core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF6B20736EE90097D86F /* core.cpp */; }; - B324C46C21919DC9009F4EDC /* sa1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF4920736EE90097D86F /* sa1.cpp */; }; - B324C46D21919DC9009F4EDC /* opcode_pc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFD320736EEA0097D86F /* opcode_pc.cpp */; }; - B324C46E21919DC9009F4EDC /* srtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF6120736EE90097D86F /* srtc.cpp */; }; - B324C46F21919DC9009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB01920736EEA0097D86F /* memory.cpp */; }; - B324C47021919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF2D20736EE90097D86F /* serialization.cpp */; }; - B324C47121919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF0120736EE90097D86F /* serialization.cpp */; }; - B324C47221919DC9009F4EDC /* opcode_pc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEB620736EE90097D86F /* opcode_pc.cpp */; }; - B324C47321919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFD220736EEA0097D86F /* serialization.cpp */; }; - B324C47421919DC9009F4EDC /* opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF0D20736EE90097D86F /* opcodes.cpp */; }; - B324C47521919DC9009F4EDC /* header.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF8A20736EE90097D86F /* header.cpp */; }; - B324C47621919DC9009F4EDC /* opcode_rmw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFD520736EEA0097D86F /* opcode_rmw.cpp */; }; - B324C47721919DC9009F4EDC /* opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEE520736EE90097D86F /* opcodes.cpp */; }; - B324C47821919DC9009F4EDC /* mmio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEC420736EE90097D86F /* mmio.cpp */; }; - B324C47921919DC9009F4EDC /* oam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF0920736EE90097D86F /* oam.cpp */; }; - B324C47A21919DC9009F4EDC /* opcode_rmw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEBB20736EE90097D86F /* opcode_rmw.cpp */; }; - B324C47B21919DC9009F4EDC /* interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE8F20736EE90097D86F /* interface.cpp */; }; - B324C47C21919DC9009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF7120736EE90097D86F /* memory.cpp */; }; - B324C47D21919DC9009F4EDC /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFA520736EEA0097D86F /* input.cpp */; }; - B324C47E21919DC9009F4EDC /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF9620736EEA0097D86F /* cheat.cpp */; }; - B324C47F21919DC9009F4EDC /* bsx_cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF1620736EE90097D86F /* bsx_cart.cpp */; }; - B324C48021919DC9009F4EDC /* irq.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAECC20736EE90097D86F /* irq.cpp */; }; - B324C48121919DC9009F4EDC /* mmio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB01D20736EEA0097D86F /* mmio.cpp */; }; - B324C48221919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF8120736EE90097D86F /* serialization.cpp */; }; - B324C48321919DC9009F4EDC /* opcode_read.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEAE20736EE90097D86F /* opcode_read.cpp */; }; - B324C48421919DC9009F4EDC /* dsp3emu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEF820736EE90097D86F /* dsp3emu.c */; }; - B324C48521919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF6320736EE90097D86F /* serialization.cpp */; }; - B324C48621919DC9009F4EDC /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAED320736EE90097D86F /* dma.cpp */; }; - B324C48721919DC9009F4EDC /* mode7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02420736EEA0097D86F /* mode7.cpp */; }; - B324C48821919DC9009F4EDC /* sjlj.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB00220736EEA0097D86F /* sjlj.c */; }; - B324C48921919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFAF20736EEA0097D86F /* serialization.cpp */; }; - B324C48A21919DC9009F4EDC /* smemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE9920736EE90097D86F /* smemory.cpp */; }; - B324C48B21919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEB520736EE90097D86F /* serialization.cpp */; }; - B324C48C21919DC9009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF3820736EE90097D86F /* memory.cpp */; }; - B324C48D21919DC9009F4EDC /* gaussian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFBC20736EEA0097D86F /* gaussian.cpp */; }; - B324C48E21919DC9009F4EDC /* timing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAECB20736EE90097D86F /* timing.cpp */; }; - B324C48F21919DC9009F4EDC /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB02120736EEA0097D86F /* render.cpp */; }; - B324C49021919DC9009F4EDC /* dsp4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAEEC20736EE90097D86F /* dsp4.cpp */; }; - B324C49121919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFC020736EEA0097D86F /* serialization.cpp */; }; - B324C49221919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAECE20736EE90097D86F /* serialization.cpp */; }; - B324C49321919DC9009F4EDC /* st010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF3020736EE90097D86F /* st010.cpp */; }; - B324C49421919DC9009F4EDC /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFCF20736EEA0097D86F /* table.cpp */; }; - B324C49521919DC9009F4EDC /* bsx_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF1A20736EE90097D86F /* bsx_base.cpp */; }; - B324C49621919DC9009F4EDC /* envelope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFC620736EEA0097D86F /* envelope.cpp */; }; - B324C49721919DC9009F4EDC /* dsp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF2120736EE90097D86F /* dsp1.cpp */; }; - B324C49821919DC9009F4EDC /* system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFB020736EEA0097D86F /* system.cpp */; }; - B324C49921919DC9009F4EDC /* st010_op.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF2C20736EE90097D86F /* st010_op.cpp */; }; - B324C49A21919DC9009F4EDC /* sdd1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF5620736EE90097D86F /* sdd1.cpp */; }; - B324C49B21919DC9009F4EDC /* misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFBB20736EEA0097D86F /* misc.cpp */; }; - B324C49C21919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF4120736EE90097D86F /* serialization.cpp */; }; - B324C49D21919DC9009F4EDC /* audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFAD20736EEA0097D86F /* audio.cpp */; }; - B324C49E21919DC9009F4EDC /* timing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF8020736EE90097D86F /* timing.cpp */; }; - B324C49F21919DC9009F4EDC /* generic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE9820736EE90097D86F /* generic.cpp */; }; - B324C4A021919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF4D20736EE90097D86F /* serialization.cpp */; }; - B324C4A121919DC9009F4EDC /* serialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF0B20736EE90097D86F /* serialization.cpp */; }; - B324C4A221919DC9009F4EDC /* algorithms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFCB20736EEA0097D86F /* algorithms.cpp */; }; - B324C4A321919DC9009F4EDC /* scheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFA920736EEA0097D86F /* scheduler.cpp */; }; - B324C4A421919DC9009F4EDC /* superfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAF8220736EE90097D86F /* superfx.cpp */; }; - B324C4AE21919E72009F4EDC /* sram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA9D20736EE70097D86F /* sram.cpp */; }; - B324C4AF21919E72009F4EDC /* Mode1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7920736EE70097D86F /* Mode1.cpp */; }; - B324C4B021919E72009F4EDC /* Mode0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7720736EE70097D86F /* Mode0.cpp */; }; - B324C4B121919E72009F4EDC /* Globals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7C20736EE70097D86F /* Globals.cpp */; }; - B324C4B221919E72009F4EDC /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA8320736EE70097D86F /* Sound.cpp */; }; - B324C4B321919E72009F4EDC /* flash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA8620736EE70097D86F /* flash.cpp */; }; - B324C4B421919E72009F4EDC /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA6B20736EE70097D86F /* bios.cpp */; }; - B324C4B521919E72009F4EDC /* arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA9B20736EE70097D86F /* arm.cpp */; }; - B324C4B621919E72009F4EDC /* thumb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7020736EE70097D86F /* thumb.cpp */; }; - B324C4B721919E72009F4EDC /* Mode3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7D20736EE70097D86F /* Mode3.cpp */; }; - B324C4B821919E72009F4EDC /* Mode4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7520736EE70097D86F /* Mode4.cpp */; }; - B324C4B921919E72009F4EDC /* Mode5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7420736EE70097D86F /* Mode5.cpp */; }; - B324C4BA21919E72009F4EDC /* Gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA9E20736EE70097D86F /* Gfx.cpp */; }; - B324C4BB21919E72009F4EDC /* eeprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA9C20736EE70097D86F /* eeprom.cpp */; }; - B324C4BC21919E72009F4EDC /* GBA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA8020736EE70097D86F /* GBA.cpp */; }; - B324C4BD21919E72009F4EDC /* RTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA8120736EE70097D86F /* RTC.cpp */; }; - B324C4BE21919E72009F4EDC /* Mode2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7E20736EE70097D86F /* Mode2.cpp */; }; - B324C4BF21919E72009F4EDC /* GBAinline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA6A20736EE70097D86F /* GBAinline.cpp */; }; - B324C4CA2191A1AC009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB29E20736EEB0097D86F /* memory.cpp */; }; - B324C4CB2191A1AC009F4EDC /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2A320736EEB0097D86F /* sound.cpp */; }; - B324C4CC2191A1AC009F4EDC /* gb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2A520736EEB0097D86F /* gb.cpp */; }; - B324C4CD2191A1AC009F4EDC /* z80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2A420736EEB0097D86F /* z80.cpp */; }; - B324C4CE2191A1AC009F4EDC /* gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2AE20736EEB0097D86F /* gfx.cpp */; }; - B324C4CF2191A1AC009F4EDC /* gbGlobals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2B020736EEB0097D86F /* gbGlobals.cpp */; }; - B324C4D62191A1F7009F4EDC /* libgb-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C4D52191A1AC009F4EDC /* libgb-tvOS.a */; }; - B324C53E2191A8A5009F4EDC /* mpc_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAF020736EE80097D86F /* mpc_decoder.c */; }; - B324C53F2191A8A5009F4EDC /* mpc_bits_reader.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAF520736EE80097D86F /* mpc_bits_reader.c */; }; - B324C5402191A8A5009F4EDC /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAFD20736EE80097D86F /* huffman.c */; }; - B324C5412191A8A5009F4EDC /* synth_filter.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB0920736EE80097D86F /* synth_filter.c */; }; - B324C5422191A8A5009F4EDC /* mpc_demux.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB0520736EE80097D86F /* mpc_demux.c */; }; - B324C5432191A8A5009F4EDC /* streaminfo.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAED20736EE80097D86F /* streaminfo.c */; }; - B324C5442191A8A5009F4EDC /* requant.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAF420736EE80097D86F /* requant.c */; }; - B324C5452191A8A5009F4EDC /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAFE20736EE80097D86F /* crc32.c */; }; - B324C54D2191A8D3009F4EDC /* libmpcdec-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C54C2191A8A5009F4EDC /* libmpcdec-tvOS.a */; }; - B324C5502191AAD1009F4EDC /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3B220736EEC0097D86F /* input.cpp */; }; - B324C5512191AAD1009F4EDC /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3AF20736EEC0097D86F /* ppu.cpp */; }; - B324C5522191AAD1009F4EDC /* apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3BC20736EEC0097D86F /* apu.cpp */; }; - B324C5532191AAD1009F4EDC /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3BD20736EEC0097D86F /* cpu.cpp */; }; - B324C5542191AAD1009F4EDC /* snes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3BB20736EEC0097D86F /* snes.cpp */; }; - B324C5552191AAD1009F4EDC /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3C820736EEC0097D86F /* cart.cpp */; }; - B324C55D2191AAF7009F4EDC /* libsnes_faust-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C55C2191AAD1009F4EDC /* libsnes_faust-tvOS.a */; }; - B324C5602191AAFE009F4EDC /* triostr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABD520736EE80097D86F /* triostr.c */; }; - B324C5612191AAFE009F4EDC /* trio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABCD20736EE80097D86F /* trio.c */; }; - B324C5622191AAFE009F4EDC /* trionan.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABD020736EE80097D86F /* trionan.c */; }; - B324C56A2191AB2E009F4EDC /* libtrio-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C5692191AAFE009F4EDC /* libtrio-tvOS.a */; }; - B324C56D2191AB34009F4EDC /* bitwise.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAE420736EE80097D86F /* bitwise.c */; }; - B324C56E2191AB34009F4EDC /* synthesis.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAACB20736EE80097D86F /* synthesis.c */; }; - B324C56F2191AB34009F4EDC /* vorbisfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAE820736EE80097D86F /* vorbisfile.c */; }; - B324C5702191AB34009F4EDC /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAE920736EE80097D86F /* window.c */; }; - B324C5712191AB34009F4EDC /* floor1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAC920736EE80097D86F /* floor1.c */; }; - B324C5722191AB34009F4EDC /* framing.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAAF20736EE70097D86F /* framing.c */; }; - B324C5732191AB34009F4EDC /* sharedbook.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAC720736EE80097D86F /* sharedbook.c */; }; - B324C5742191AB34009F4EDC /* codebook.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAABC20736EE70097D86F /* codebook.c */; }; - B324C5752191AB34009F4EDC /* registry.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAE520736EE80097D86F /* registry.c */; }; - B324C5762191AB34009F4EDC /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAAC20736EE70097D86F /* block.c */; }; - B324C5772191AB34009F4EDC /* floor0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAABE20736EE70097D86F /* floor0.c */; }; - B324C5782191AB34009F4EDC /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAB320736EE70097D86F /* info.c */; }; - B324C5792191AB34009F4EDC /* res012.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAC320736EE80097D86F /* res012.c */; }; - B324C57A2191AB34009F4EDC /* mapping0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAACF20736EE80097D86F /* mapping0.c */; }; - B324C57B2191AB34009F4EDC /* mdct.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAB720736EE70097D86F /* mdct.c */; }; - B324C5852191AB4E009F4EDC /* quicklz.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2DD20736EEB0097D86F /* quicklz.c */; }; - B324C58D2191AB86009F4EDC /* libtremor-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C5822191AB34009F4EDC /* libtremor-tvOS.a */; }; - B324C58E2191AB8D009F4EDC /* libquicklz-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C58C2191AB4E009F4EDC /* libquicklz-tvOS.a */; }; - B324C5912191AB9D009F4EDC /* png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6620736EE80097D86F /* png.cpp */; }; - B324C5922191AB9D009F4EDC /* font-data.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6920736EE80097D86F /* font-data.cpp */; }; - B324C5932191AB9D009F4EDC /* Deinterlacer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6020736EE80097D86F /* Deinterlacer.cpp */; }; - B324C5942191AB9D009F4EDC /* primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB7320736EE80097D86F /* primitives.cpp */; }; - B324C5952191AB9D009F4EDC /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6C20736EE80097D86F /* video.cpp */; }; - B324C5962191AB9D009F4EDC /* resize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB5E20736EE80097D86F /* resize.cpp */; }; - B324C5972191AB9D009F4EDC /* surface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB7520736EE80097D86F /* surface.cpp */; }; - B324C5982191AB9D009F4EDC /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6120736EE80097D86F /* text.cpp */; }; - B324C5992191AB9D009F4EDC /* tblur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6A20736EE80097D86F /* tblur.cpp */; }; - B324C5A32191ABAD009F4EDC /* Blip_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39420736EEB0097D86F /* Blip_Buffer.cpp */; }; - B324C5A42191ABAD009F4EDC /* OwlResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39520736EEB0097D86F /* OwlResampler.cpp */; }; - B324C5A52191ABAD009F4EDC /* okiadpcm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB38E20736EEB0097D86F /* okiadpcm.cpp */; }; - B324C5A62191ABAD009F4EDC /* WAVRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39820736EEB0097D86F /* WAVRecord.cpp */; }; - B324C5A72191ABAD009F4EDC /* Fir_Resampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39120736EEB0097D86F /* Fir_Resampler.cpp */; }; - B324C5A82191ABAD009F4EDC /* Stereo_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39620736EEB0097D86F /* Stereo_Buffer.cpp */; }; - B324C5B32191ABB7009F4EDC /* CDAccess_Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9420736EE80097D86F /* CDAccess_Image.cpp */; }; - B324C5B42191ABB7009F4EDC /* l-ec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9320736EE80097D86F /* l-ec.cpp */; }; - B324C5B52191ABB7009F4EDC /* CDAFReader_Vorbis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB8920736EE80097D86F /* CDAFReader_Vorbis.cpp */; }; - B324C5B62191ABB7009F4EDC /* crc32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9220736EE80097D86F /* crc32.cpp */; }; - B324C5B72191ABB7009F4EDC /* galois.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9020736EE80097D86F /* galois.cpp */; }; - B324C5B82191ABB7009F4EDC /* scsicd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9C20736EE80097D86F /* scsicd.cpp */; }; - B324C5B92191ABB7009F4EDC /* CDAccess_CCD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9520736EE80097D86F /* CDAccess_CCD.cpp */; }; - B324C5BA2191ABB7009F4EDC /* CDAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABB520736EE80097D86F /* CDAccess.cpp */; }; - B324C5BB2191ABB7009F4EDC /* CDUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB8C20736EE80097D86F /* CDUtility.cpp */; }; - B324C5BC2191ABB7009F4EDC /* CDAFReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB8B20736EE80097D86F /* CDAFReader.cpp */; }; - B324C5BD2191ABB7009F4EDC /* lec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9620736EE80097D86F /* lec.cpp */; }; - B324C5BE2191ABB7009F4EDC /* CDAFReader_MPC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB8D20736EE80097D86F /* CDAFReader_MPC.cpp */; }; - B324C5BF2191ABB7009F4EDC /* recover-raw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABB320736EE80097D86F /* recover-raw.cpp */; }; - B324C5C72191AC05009F4EDC /* libvideo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C5A02191AB9D009F4EDC /* libvideo-tvOS.a */; }; - B324C5C82191AC0A009F4EDC /* libsound-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C5AF2191ABAD009F4EDC /* libsound-tvOS.a */; }; - B324C5C92191AC10009F4EDC /* libcdrom-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C5C62191ABB7009F4EDC /* libcdrom-tvOS.a */; }; - B324C5CC2191ACE1009F4EDC /* huc6273.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB17220736EEA0097D86F /* huc6273.cpp */; }; - B324C5CD2191ACE1009F4EDC /* pcfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB17120736EEA0097D86F /* pcfx.cpp */; }; - B324C5CE2191ACE1009F4EDC /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB15520736EEA0097D86F /* timer.cpp */; }; - B324C5CF2191ACE1009F4EDC /* king.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB16420736EEA0097D86F /* king.cpp */; }; - B324C5D12191ACE1009F4EDC /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB14320736EEA0097D86F /* input.cpp */; }; - B324C5D22191ACE1009F4EDC /* fxscsi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB15A20736EEA0097D86F /* fxscsi.cpp */; }; - B324C5D32191ACE1009F4EDC /* rainbow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB14420736EEA0097D86F /* rainbow.cpp */; }; - B324C5D42191ACE1009F4EDC /* interrupt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB15320736EEA0097D86F /* interrupt.cpp */; }; - B324C5D52191ACE1009F4EDC /* gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB14B20736EEA0097D86F /* gamepad.cpp */; }; - B324C5D62191ACE1009F4EDC /* soundbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB13C20736EEA0097D86F /* soundbox.cpp */; }; - B324C5D72191ACE1009F4EDC /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB14A20736EEA0097D86F /* mouse.cpp */; }; - B324C5DF2191AD10009F4EDC /* libpcfx-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C5DE2191ACE1009F4EDC /* libpcfx-tvOS.a */; }; - B324C5E22191AD13009F4EDC /* v30mz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE5920736EE90097D86F /* v30mz.cpp */; }; - B324C5E32191AD13009F4EDC /* gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE8820736EE90097D86F /* gfx.cpp */; }; - B324C5E42191AD13009F4EDC /* comm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE6920736EE90097D86F /* comm.cpp */; }; - B324C5E52191AD13009F4EDC /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE5720736EE90097D86F /* memory.cpp */; }; - B324C5E62191AD13009F4EDC /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE6720736EE90097D86F /* sound.cpp */; }; - B324C5E72191AD13009F4EDC /* eeprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE8720736EE90097D86F /* eeprom.cpp */; }; - B324C5E82191AD13009F4EDC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE8920736EE90097D86F /* main.cpp */; }; - B324C5E92191AD13009F4EDC /* tcache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE5B20736EE90097D86F /* tcache.cpp */; }; - B324C5EA2191AD13009F4EDC /* interrupt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE5C20736EE90097D86F /* interrupt.cpp */; }; - B324C5EB2191AD13009F4EDC /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE6420736EE90097D86F /* rtc.cpp */; }; - B324C5F32191AD3B009F4EDC /* libwonderswan-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C5F22191AD13009F4EDC /* libwonderswan-tvOS.a */; }; - B324C62521920724009F4EDC /* libgba-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C4C521919E72009F4EDC /* libgba-tvOS.a */; }; B324C63221920C56009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B314E30F21081E9200D0C27A /* PVSupport.framework */; }; - B32CF13921923EB40058E2E7 /* Sms_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2B520736EEB0097D86F /* Sms_Apu.cpp */; }; - B32CF13A21923EB40058E2E7 /* Ym2612_Emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2BB20736EEB0097D86F /* Ym2612_Emu.cpp */; }; - B32CF13B21923EB40058E2E7 /* Gb_Apu_State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2C220736EEB0097D86F /* Gb_Apu_State.cpp */; }; - B32CF13C21923EB40058E2E7 /* pce_psg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2D620736EEB0097D86F /* pce_psg.cpp */; }; - B32CF13D21923EB40058E2E7 /* Gb_Oscs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2C420736EEB0097D86F /* Gb_Oscs.cpp */; }; - B32CF13E21923EB40058E2E7 /* Gb_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2C520736EEB0097D86F /* Gb_Apu.cpp */; }; - B32CF13F21923EB40058E2E7 /* emu2413.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2D320736EEB0097D86F /* emu2413.cpp */; }; - B32CF14721923F030058E2E7 /* libhwaudio-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF14621923EB50058E2E7 /* libhwaudio-tvOS.a */; }; - B32CF14A21923F330058E2E7 /* vsu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24820736EEB0097D86F /* vsu.cpp */; }; - B32CF14B21923F330058E2E7 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24020736EEB0097D86F /* input.cpp */; }; - B32CF14C21923F330058E2E7 /* vip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB23F20736EEB0097D86F /* vip.cpp */; }; - B32CF14D21923F330058E2E7 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24520736EEB0097D86F /* timer.cpp */; }; - B32CF14E21923F330058E2E7 /* vb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24120736EEB0097D86F /* vb.cpp */; }; - B32CF15821923F520058E2E7 /* T6W28_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB05B20736EEA0097D86F /* T6W28_Apu.cpp */; }; - B32CF15921923F520058E2E7 /* neopop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0AF20736EEA0097D86F /* neopop.cpp */; }; - B32CF15A21923F520058E2E7 /* flash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB05C20736EEA0097D86F /* flash.cpp */; }; - B32CF15B21923F520058E2E7 /* gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0AD20736EEA0097D86F /* gfx.cpp */; }; - B32CF15C21923F520058E2E7 /* TLCS900h_interpret.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB08C20736EEA0097D86F /* TLCS900h_interpret.cpp */; }; - B32CF15D21923F520058E2E7 /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB04020736EEA0097D86F /* dma.cpp */; }; - B32CF15E21923F520058E2E7 /* TLCS900h_disassemble_src.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB07320736EEA0097D86F /* TLCS900h_disassemble_src.cpp */; }; - B32CF15F21923F520058E2E7 /* interrupt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB04320736EEA0097D86F /* interrupt.cpp */; }; - B32CF16021923F520058E2E7 /* biosHLE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB03E20736EEA0097D86F /* biosHLE.cpp */; }; - B32CF16121923F520058E2E7 /* gfx_scanline_colour.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB04F20736EEA0097D86F /* gfx_scanline_colour.cpp */; }; - B32CF16221923F520058E2E7 /* Z80_interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB04620736EEA0097D86F /* Z80_interface.cpp */; }; - B32CF16321923F520058E2E7 /* TLCS900h_disassemble_dst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB09320736EEA0097D86F /* TLCS900h_disassemble_dst.cpp */; }; - B32CF16421923F520058E2E7 /* TLCS900h_interpret_reg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB09620736EEA0097D86F /* TLCS900h_interpret_reg.cpp */; }; - B32CF16521923F520058E2E7 /* TLCS900h_registers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0A920736EEA0097D86F /* TLCS900h_registers.cpp */; }; - B32CF16621923F520058E2E7 /* TLCS900h_disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB08D20736EEA0097D86F /* TLCS900h_disassemble.cpp */; }; - B32CF16721923F520058E2E7 /* mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB07120736EEA0097D86F /* mem.cpp */; }; - B32CF16821923F520058E2E7 /* TLCS900h_interpret_dst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB09220736EEA0097D86F /* TLCS900h_interpret_dst.cpp */; }; - B32CF16921923F520058E2E7 /* TLCS900h_interpret_single.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB08520736EEA0097D86F /* TLCS900h_interpret_single.cpp */; }; - B32CF16A21923F520058E2E7 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB05520736EEA0097D86F /* sound.cpp */; }; - B32CF16B21923F520058E2E7 /* TLCS900h_disassemble_extra.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB08220736EEA0097D86F /* TLCS900h_disassemble_extra.cpp */; }; - B32CF16C21923F520058E2E7 /* rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB05420736EEA0097D86F /* rom.cpp */; }; - B32CF16D21923F520058E2E7 /* TLCS900h_disassemble_reg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB08F20736EEA0097D86F /* TLCS900h_disassemble_reg.cpp */; }; - B32CF16E21923F520058E2E7 /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB05020736EEA0097D86F /* rtc.cpp */; }; - B32CF16F21923F520058E2E7 /* TLCS900h_interpret_src.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB08820736EEA0097D86F /* TLCS900h_interpret_src.cpp */; }; - B32CF17021923F520058E2E7 /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB03920736EEA0097D86F /* bios.cpp */; }; - B32CF17121923F520058E2E7 /* gfx_scanline_mono.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB04120736EEA0097D86F /* gfx_scanline_mono.cpp */; }; - B32CF17B21923F740058E2E7 /* system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABF020736EE80097D86F /* system.cpp */; }; - B32CF17C21923F740058E2E7 /* susie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABF620736EE80097D86F /* susie.cpp */; }; - B32CF17D21923F740058E2E7 /* rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABEF20736EE80097D86F /* rom.cpp */; }; - B32CF17E21923F740058E2E7 /* memmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABEA20736EE80097D86F /* memmap.cpp */; }; - B32CF17F21923F740058E2E7 /* ram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABE920736EE80097D86F /* ram.cpp */; }; - B32CF18021923F740058E2E7 /* mikie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABEB20736EE80097D86F /* mikie.cpp */; }; - B32CF18121923F740058E2E7 /* c65c02.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAC0020736EE80097D86F /* c65c02.cpp */; }; - B32CF18221923F740058E2E7 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAC0120736EE80097D86F /* cart.cpp */; }; - B32CF18C21923F790058E2E7 /* tsushin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB27720736EEB0097D86F /* tsushin.cpp */; }; - B32CF18D21923F790058E2E7 /* mcgenjin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB27320736EEB0097D86F /* mcgenjin.cpp */; }; - B32CF18E21923F790058E2E7 /* tsushinkb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB25C20736EEB0097D86F /* tsushinkb.cpp */; }; - B32CF18F21923F790058E2E7 /* gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB25A20736EEB0097D86F /* gamepad.cpp */; }; - B32CF19021923F790058E2E7 /* pcecd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB26920736EEB0097D86F /* pcecd.cpp */; }; - B32CF19121923F790058E2E7 /* huc6280.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB25420736EEB0097D86F /* huc6280.cpp */; }; - B32CF19221923F790058E2E7 /* vce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB26320736EEB0097D86F /* vce.cpp */; }; - B32CF19321923F790058E2E7 /* huc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB28520736EEB0097D86F /* huc.cpp */; }; - B32CF19421923F790058E2E7 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB25620736EEB0097D86F /* input.cpp */; }; - B32CF19521923F790058E2E7 /* hes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB26E20736EEB0097D86F /* hes.cpp */; }; - B32CF19621923F790058E2E7 /* dis6280.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB25720736EEB0097D86F /* dis6280.cpp */; }; - B32CF19721923F790058E2E7 /* pce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB26C20736EEB0097D86F /* pce.cpp */; }; - B32CF19821923F790058E2E7 /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB25920736EEB0097D86F /* mouse.cpp */; }; - B32CF1A221923F7F0058E2E7 /* pcecd_drive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21C20736EEB0097D86F /* pcecd_drive.cpp */; }; - B32CF1A321923F7F0058E2E7 /* huc6280.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21E20736EEB0097D86F /* huc6280.cpp */; }; - B32CF1A421923F7F0058E2E7 /* psg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB22C20736EEB0097D86F /* psg.cpp */; }; - B32CF1A521923F7F0058E2E7 /* huc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB23920736EEB0097D86F /* huc.cpp */; }; - B32CF1A621923F7F0058E2E7 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21F20736EEB0097D86F /* input.cpp */; }; - B32CF1A721923F7F0058E2E7 /* pce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB22720736EEB0097D86F /* pce.cpp */; }; - B32CF1A821923F7F0058E2E7 /* vdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21B20736EEB0097D86F /* vdc.cpp */; }; - B32CF1A921923F7F0058E2E7 /* hes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB22820736EEB0097D86F /* hes.cpp */; }; - B32CF1AA21923F7F0058E2E7 /* pcecd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB22320736EEB0097D86F /* pcecd.cpp */; }; - B32CF1B421923F850058E2E7 /* system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE3620736EE90097D86F /* system.cpp */; }; - B32CF1B521923F850058E2E7 /* pio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4820736EE90097D86F /* pio.cpp */; }; - B32CF1B621923F850058E2E7 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE3720736EE90097D86F /* sound.cpp */; }; - B32CF1B721923F850058E2E7 /* tms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE3420736EE90097D86F /* tms.cpp */; }; - B32CF1B821923F850058E2E7 /* memz80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE3920736EE90097D86F /* memz80.cpp */; }; - B32CF1B921923F850058E2E7 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4A20736EE90097D86F /* cart.cpp */; }; - B32CF1BA21923F850058E2E7 /* vdp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE2920736EE90097D86F /* vdp.cpp */; }; - B32CF1BB21923F850058E2E7 /* sms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4B20736EE90097D86F /* sms.cpp */; }; - B32CF1BC21923F850058E2E7 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE2620736EE90097D86F /* render.cpp */; }; - B32CF1BD21923F850058E2E7 /* romdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE3820736EE90097D86F /* romdb.cpp */; }; - B32CF1C7219240270058E2E7 /* arcade_card.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE1120736EE90097D86F /* arcade_card.cpp */; }; - B32CF1CF219240770058E2E7 /* libhwmisc-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF1CE219240270058E2E7 /* libhwmisc-tvOS.a */; }; - B32CF1D0219240770058E2E7 /* liblynx-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF18921923F740058E2E7 /* liblynx-tvOS.a */; }; - B32CF1D1219240770058E2E7 /* libneogeopocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF17821923F520058E2E7 /* libneogeopocket-tvOS.a */; }; - B32CF1D2219240770058E2E7 /* libpce-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF19F21923F790058E2E7 /* libpce-tvOS.a */; }; - B32CF1D3219240770058E2E7 /* libpcefast-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF1B121923F7F0058E2E7 /* libpcefast-tvOS.a */; }; - B32CF1D5219240770058E2E7 /* libvirtualboy-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B32CF15521923F330058E2E7 /* libvirtualboy-tvOS.a */; }; - B32CF1D6219241EE0058E2E7 /* libhwvideo-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C34C21919C1C009F4EDC /* libhwvideo-tvOS.a */; }; - B32CF1D7219241EE0058E2E7 /* libmednafen-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C42A21919D73009F4EDC /* libmednafen-tvOS.a */; }; - B32CF1D8219241EE0058E2E7 /* libnes-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C3D321919CD6009F4EDC /* libnes-tvOS.a */; }; - B32CF1D9219241EE0058E2E7 /* libpsx-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C34221919BC6009F4EDC /* libpsx-tvOS.a */; }; - B32CF1DA219241EE0058E2E7 /* libsnes-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C4AA21919DC9009F4EDC /* libsnes-tvOS.a */; }; B3335036207AFBDE0036A448 /* cdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB10B20736EEA0097D86F /* cdc.cpp */; }; B3335037207AFBDE0036A448 /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0F520736EEA0097D86F /* cpu.cpp */; }; B3335038207AFBDE0036A448 /* dis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0EF20736EEA0097D86F /* dis.cpp */; }; @@ -638,7 +61,7 @@ B333504C207AFBE70036A448 /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C720736EEA0097D86F /* mouse.cpp */; }; B333504D207AFBE70036A448 /* multitap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0C920736EEA0097D86F /* multitap.cpp */; }; B333504E207AFBE70036A448 /* negcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB0CE20736EEA0097D86F /* negcon.cpp */; }; - B333504F207AFBFC0036A448 /* libpsx-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B333502D207AFBA30036A448 /* libpsx-iOS.a */; }; + B333504F207AFBFC0036A448 /* libpsx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B333502D207AFBA30036A448 /* libpsx.a */; }; B333506B207AFD8B0036A448 /* comm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE6920736EE90097D86F /* comm.cpp */; }; B333506C207AFD8B0036A448 /* eeprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE8720736EE90097D86F /* eeprom.cpp */; }; B333506D207AFD8B0036A448 /* gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE8820736EE90097D86F /* gfx.cpp */; }; @@ -649,14 +72,14 @@ B3335072207AFD8B0036A448 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE6720736EE90097D86F /* sound.cpp */; }; B3335073207AFD8B0036A448 /* tcache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE5B20736EE90097D86F /* tcache.cpp */; }; B3335074207AFD8B0036A448 /* v30mz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE5920736EE90097D86F /* v30mz.cpp */; }; - B3335075207AFD9C0036A448 /* libwonderswan-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335062207AFD3D0036A448 /* libwonderswan-iOS.a */; }; + B3335075207AFD9C0036A448 /* libwonderswan.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335062207AFD3D0036A448 /* libwonderswan.a */; }; B333509B207AFF350036A448 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24020736EEB0097D86F /* input.cpp */; }; - B333509C207AFF3F0036A448 /* libvirtualboy-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335092207AFF2B0036A448 /* libvirtualboy-iOS.a */; }; + B333509C207AFF3F0036A448 /* libvirtualboy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335092207AFF2B0036A448 /* libvirtualboy.a */; }; B333509D207AFF560036A448 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24520736EEB0097D86F /* timer.cpp */; }; B333509E207AFF560036A448 /* vb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24120736EEB0097D86F /* vb.cpp */; }; B333509F207AFF560036A448 /* vip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB23F20736EEB0097D86F /* vip.cpp */; }; B33350A0207AFF560036A448 /* vsu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB24820736EEB0097D86F /* vsu.cpp */; }; - B33350AE207B00080036A448 /* libnes-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33350A5207AFFE80036A448 /* libnes-iOS.a */; }; + B33350AE207B00080036A448 /* libnes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33350A5207AFFE80036A448 /* libnes.a */; }; B33350AF207B00150036A448 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADE420736EE90097D86F /* cart.cpp */; }; B33350B0207B00150036A448 /* dis6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADD020736EE90097D86F /* dis6502.cpp */; }; B33350B1207B00150036A448 /* fds-sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAACAB20736EE80097D86F /* fds-sound.cpp */; }; @@ -788,7 +211,7 @@ B333519C207B010D0036A448 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB29E20736EEB0097D86F /* memory.cpp */; }; B333519D207B010D0036A448 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2A320736EEB0097D86F /* sound.cpp */; }; B333519E207B010D0036A448 /* z80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2A420736EEB0097D86F /* z80.cpp */; }; - B333519F207B01230036A448 /* libgb-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335190207B00F70036A448 /* libgb-iOS.a */; }; + B333519F207B01230036A448 /* libgb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335190207B00F70036A448 /* libgb.a */; }; B33351EE207B01ED0036A448 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4A20736EE90097D86F /* cart.cpp */; }; B33351EF207B01ED0036A448 /* memz80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE3920736EE90097D86F /* memz80.cpp */; }; B33351F0207B01ED0036A448 /* pio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4820736EE90097D86F /* pio.cpp */; }; @@ -906,12 +329,12 @@ B333527B207B02CA0036A448 /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA8320736EE70097D86F /* Sound.cpp */; }; B333527C207B02CA0036A448 /* sram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA9D20736EE70097D86F /* sram.cpp */; }; B333527D207B02CA0036A448 /* thumb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA7020736EE70097D86F /* thumb.cpp */; }; - B333527E207B02EB0036A448 /* libgba-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351A4207B01460036A448 /* libgba-iOS.a */; }; - B333527F207B02EB0036A448 /* liblynx-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351B1207B01570036A448 /* liblynx-iOS.a */; }; - B3335281207B02EB0036A448 /* libneogeopocket-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351BE207B016F0036A448 /* libneogeopocket-iOS.a */; }; - B3335282207B02EB0036A448 /* libpce-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351CB207B01860036A448 /* libpce-iOS.a */; }; - B3335283207B02EB0036A448 /* libpcefast-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351D8207B01970036A448 /* libpcefast-iOS.a */; }; - B3335284207B02EB0036A448 /* libpcfx-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351FC207B020C0036A448 /* libpcfx-iOS.a */; }; + B333527E207B02EB0036A448 /* libgba.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351A4207B01460036A448 /* libgba.a */; }; + B333527F207B02EB0036A448 /* liblynx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351B1207B01570036A448 /* liblynx.a */; }; + B3335281207B02EB0036A448 /* libneogeopocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351BE207B016F0036A448 /* libneogeopocket.a */; }; + B3335282207B02EB0036A448 /* libpce.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351CB207B01860036A448 /* libpce.a */; }; + B3335283207B02EB0036A448 /* libpcefast.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351D8207B01970036A448 /* libpcefast.a */; }; + B3335284207B02EB0036A448 /* libpcfx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33351FC207B020C0036A448 /* libpcfx.a */; }; B3335286207B02F70036A448 /* c65c02.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAC0020736EE80097D86F /* c65c02.cpp */; }; B3335287207B02F70036A448 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAC0120736EE80097D86F /* cart.cpp */; }; B3335288207B02F70036A448 /* memmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABEA20736EE80097D86F /* memmap.cpp */; }; @@ -931,10 +354,10 @@ B33352DF207B06B90036A448 /* arcade_card.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE1120736EE90097D86F /* arcade_card.cpp */; }; B33352E0207B06D70036A448 /* v810_cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADFF20736EE90097D86F /* v810_cpu.cpp */; }; B33352E1207B06D70036A448 /* v810_fp_ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE0020736EE90097D86F /* v810_fp_ops.cpp */; }; - B33352E2207B072C0036A448 /* libhwaudio-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352A7207B06550036A448 /* libhwaudio-iOS.a */; }; - B33352E3207B072C0036A448 /* libhwcpu-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352C1207B06730036A448 /* libhwcpu-iOS.a */; }; - B33352E4207B072C0036A448 /* libhwmisc-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352CE207B067F0036A448 /* libhwmisc-iOS.a */; }; - B33352E5207B072C0036A448 /* libhwvideo-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352B4207B06620036A448 /* libhwvideo-iOS.a */; }; + B33352E2207B072C0036A448 /* libhwaudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352A7207B06550036A448 /* libhwaudio.a */; }; + B33352E3207B072C0036A448 /* libhwcpu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352C1207B06730036A448 /* libhwcpu.a */; }; + B33352E4207B072C0036A448 /* libhwmisc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352CE207B067F0036A448 /* libhwmisc.a */; }; + B33352E5207B072C0036A448 /* libhwvideo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33352B4207B06620036A448 /* libhwvideo.a */; }; B33352E8207B07C20036A448 /* z80_ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADFA20736EE90097D86F /* z80_ops.cpp */; }; B33352E9207B07FD0036A448 /* z80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADF520736EE90097D86F /* z80.cpp */; }; B3335479207B1B780036A448 /* CDAccess_CCD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9520736EE80097D86F /* CDAccess_CCD.cpp */; }; @@ -950,15 +373,15 @@ B3335485207B1B780036A448 /* lec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9620736EE80097D86F /* lec.cpp */; }; B3335486207B1B780036A448 /* recover-raw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABB320736EE80097D86F /* recover-raw.cpp */; }; B3335487207B1B780036A448 /* scsicd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB9C20736EE80097D86F /* scsicd.cpp */; }; - B3335488207B1B8E0036A448 /* libcdrom-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B333546F207B1B500036A448 /* libcdrom-iOS.a */; }; + B3335488207B1B8E0036A448 /* libcdrom.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B333546F207B1B500036A448 /* libcdrom.a */; }; B333549C207B1C000036A448 /* Blip_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39420736EEB0097D86F /* Blip_Buffer.cpp */; }; B333549D207B1C000036A448 /* Fir_Resampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39120736EEB0097D86F /* Fir_Resampler.cpp */; }; B333549E207B1C000036A448 /* okiadpcm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB38E20736EEB0097D86F /* okiadpcm.cpp */; }; B333549F207B1C000036A448 /* OwlResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39520736EEB0097D86F /* OwlResampler.cpp */; }; B33354A0207B1C000036A448 /* Stereo_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39620736EEB0097D86F /* Stereo_Buffer.cpp */; }; B33354A1207B1C000036A448 /* WAVRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB39820736EEB0097D86F /* WAVRecord.cpp */; }; - B33354A2207B1C0D0036A448 /* libsound-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335493207B1BF30036A448 /* libsound-iOS.a */; }; - B33354BD207B1C600036A448 /* libvideo-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33354B4207B1C520036A448 /* libvideo-iOS.a */; }; + B33354A2207B1C0D0036A448 /* libsound.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3335493207B1BF30036A448 /* libsound.a */; }; + B33354BD207B1C600036A448 /* libvideo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33354B4207B1C520036A448 /* libvideo.a */; }; B33354BE207B1C870036A448 /* Deinterlacer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6020736EE80097D86F /* Deinterlacer.cpp */; }; B33354BF207B1C870036A448 /* font-data.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6920736EE80097D86F /* font-data.cpp */; }; B33354C0207B1C870036A448 /* png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB6620736EE80097D86F /* png.cpp */; }; @@ -1004,7 +427,7 @@ B3335598207B1DA80036A448 /* mempatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAA9F20736EE70097D86F /* mempatcher.cpp */; }; B3335599207B1DA80036A448 /* Net.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABDB20736EE80097D86F /* Net.cpp */; }; B333559A207B1DA80036A448 /* FileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB28720736EEB0097D86F /* FileStream.cpp */; }; - B333559C207B1DB10036A448 /* libmednafen-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33354CB207B1D850036A448 /* libmednafen-iOS.a */; }; + B333559C207B1DB10036A448 /* libmednafen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33354CB207B1D850036A448 /* libmednafen.a */; }; B333559D207B1DC50036A448 /* thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94454E3617852E44006C057B /* thread.cpp */; }; B33355AB207B1EAE0036A448 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAFE20736EE80097D86F /* crc32.c */; }; B33355AC207B1EAE0036A448 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAFD20736EE80097D86F /* huffman.c */; }; @@ -1014,10 +437,10 @@ B33355B0207B1EAE0036A448 /* requant.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAF420736EE80097D86F /* requant.c */; }; B33355B1207B1EAE0036A448 /* streaminfo.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAED20736EE80097D86F /* streaminfo.c */; }; B33355B2207B1EAE0036A448 /* synth_filter.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB0920736EE80097D86F /* synth_filter.c */; }; - B33355B3207B1EBC0036A448 /* libmpcdec-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355A2207B1E930036A448 /* libmpcdec-iOS.a */; }; + B33355B3207B1EBC0036A448 /* libmpcdec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355A2207B1E930036A448 /* libmpcdec.a */; }; B33355C1207B205E0036A448 /* quicklz.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB2DD20736EEB0097D86F /* quicklz.c */; }; - B33355C2207B207F0036A448 /* libquicklz-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355B8207B20420036A448 /* libquicklz-iOS.a */; }; - B33355D0207B20CB0036A448 /* libtremor-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355C7207B20BE0036A448 /* libtremor-iOS.a */; }; + B33355C2207B207F0036A448 /* libquicklz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355B8207B20420036A448 /* libquicklz.a */; }; + B33355D0207B20CB0036A448 /* libtremor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355C7207B20BE0036A448 /* libtremor.a */; }; B33355D1207B20E50036A448 /* bitwise.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAE420736EE80097D86F /* bitwise.c */; }; B33355D2207B20E50036A448 /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAAAC20736EE70097D86F /* block.c */; }; B33355D3207B20E50036A448 /* codebook.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAABC20736EE70097D86F /* codebook.c */; }; @@ -1036,39 +459,20 @@ B33355ED207B27B60036A448 /* trio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABCD20736EE80097D86F /* trio.c */; }; B33355EE207B27B60036A448 /* trionan.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABD020736EE80097D86F /* trionan.c */; }; B33355EF207B27B60036A448 /* triostr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AAABD520736EE80097D86F /* triostr.c */; }; - B33355F0207B28570036A448 /* libtrio-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355E4207B278E0036A448 /* libtrio-iOS.a */; }; + B33355F0207B28570036A448 /* libtrio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33355E4207B278E0036A448 /* libtrio.a */; }; B33355F1207B2A650036A448 /* MednafenGameCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8C20522B86001D3D2E /* MednafenGameCore.swift */; }; - B33355F3207B3BAD0036A448 /* MednafenGameCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8C20522B86001D3D2E /* MednafenGameCore.swift */; }; - B33355F4207B3BAD0036A448 /* MednafenMultiDisc.m in Sources */ = {isa = PBXBuildFile; fileRef = B3CF44B72039B64A005BEB14 /* MednafenMultiDisc.m */; }; - B33355F5207B3BAD0036A448 /* stubs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 94454E3B17852E61006C057B /* stubs.mm */; }; - B33355F6207B3BAD0036A448 /* MednafenMultiTap.m in Sources */ = {isa = PBXBuildFile; fileRef = B3CF44BA2039B6D0005BEB14 /* MednafenMultiTap.m */; }; - B33355F7207B3BAD0036A448 /* MednafenGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 824088350FFDDCF400F0FE7D /* MednafenGameCore.mm */; }; - B33355F8207B3BAD0036A448 /* thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94454E3617852E44006C057B /* thread.cpp */; }; B340E4661E08887700AD0E8B /* PVMednafen.h in Headers */ = {isa = PBXBuildFile; fileRef = B340E4641E08887700AD0E8B /* PVMednafen.h */; settings = {ATTRIBUTES = (Public, ); }; }; B340E5E71E0889FB00AD0E8B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5E61E0889FB00AD0E8B /* libz.tbd */; }; - B340E5E91E088A0100AD0E8B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5E81E088A0100AD0E8B /* libz.tbd */; }; B340E5EB1E088A1100AD0E8B /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5EA1E088A1100AD0E8B /* libiconv.tbd */; }; - B340E5ED1E088A1E00AD0E8B /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5EC1E088A1E00AD0E8B /* libiconv.tbd */; }; - B340E5EF1E088A3500AD0E8B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5EE1E088A3500AD0E8B /* UIKit.framework */; }; B340E5F11E088A3A00AD0E8B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5F01E088A3A00AD0E8B /* Foundation.framework */; }; - B340E5F31E088A4000AD0E8B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5F21E088A4000AD0E8B /* UIKit.framework */; }; - B340E5F51E088A4500AD0E8B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B340E5F41E088A4500AD0E8B /* Foundation.framework */; }; B3547B60205858EF00CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B5F205858EF00CFF7D8 /* Core.plist */; }; - B3547B61205858EF00CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B5F205858EF00CFF7D8 /* Core.plist */; }; - B35D6686218185710005A992 /* z80_ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADFA20736EE90097D86F /* z80_ops.cpp */; }; - B35D6687218185710005A992 /* v810_cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADFF20736EE90097D86F /* v810_cpu.cpp */; }; - B35D6688218185710005A992 /* z80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADF520736EE90097D86F /* z80.cpp */; }; - B35D6689218185710005A992 /* v810_fp_ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE0020736EE90097D86F /* v810_fp_ops.cpp */; }; - B35D6691218185A60005A992 /* libhwcpu-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B35D6690218185710005A992 /* libhwcpu-tvOS.a */; }; - B36CBFED2039819100728482 /* PVMednafen.h in Headers */ = {isa = PBXBuildFile; fileRef = B340E4641E08887700AD0E8B /* PVMednafen.h */; settings = {ATTRIBUTES = (Public, ); }; }; B393F252277C0C1C0097F71C /* m68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADEB20736EE90097D86F /* m68k.cpp */; }; - B393F260277C0C4E0097F71C /* m68k.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAADEB20736EE90097D86F /* m68k.cpp */; }; - B393F261277C109C0097F71C /* libhwcpu-m68k-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */; }; - B393F262277C10A40097F71C /* libhwcpu-m68k-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */; }; + B393F261277C109C0097F71C /* libhwcpu-m68k.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B393F251277C0BF70097F71C /* libhwcpu-m68k.a */; }; B3AAB425207379230097D86F /* stubs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 94454E3B17852E61006C057B /* stubs.mm */; }; B3AAB43D2073820C0097D86F /* MednafenGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 824088350FFDDCF400F0FE7D /* MednafenGameCore.mm */; }; B3AAB43F2073820C0097D86F /* MednafenMultiDisc.m in Sources */ = {isa = PBXBuildFile; fileRef = B3CF44B72039B64A005BEB14 /* MednafenMultiDisc.m */; }; B3AAB4402073820C0097D86F /* MednafenMultiTap.m in Sources */ = {isa = PBXBuildFile; fileRef = B3CF44BA2039B6D0005BEB14 /* MednafenMultiTap.m */; }; + B3B8C3BF290E15EC002B839A /* MednafenGameCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3B8C3BE290E15EB002B839A /* MednafenGameCore+Controls.mm */; }; B3FBDF01207FF13400E661D1 /* interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE8F20736EE90097D86F /* interface.cpp */; }; B3FBDF02207FF19800E661D1 /* generic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE9820736EE90097D86F /* generic.cpp */; }; B3FBDF03207FF19800E661D1 /* smemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE9920736EE90097D86F /* smemory.cpp */; }; @@ -1188,61 +592,21 @@ B3FBDF93207FF40800E661D1 /* opcode_mov.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFCC20736EEA0097D86F /* opcode_mov.cpp */; }; B3FBDF94207FF40F00E661D1 /* algorithms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFCB20736EEA0097D86F /* algorithms.cpp */; }; B3FBDF97207FF43000E661D1 /* smp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAFE820736EEA0097D86F /* smp.cpp */; }; - B3FBDF9A207FF51D00E661D1 /* libsnes-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FBDEF8207FF0E300E661D1 /* libsnes-iOS.a */; }; + B3FBDF9A207FF51D00E661D1 /* libsnes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FBDEF8207FF0E300E661D1 /* libsnes.a */; }; B3FBDFA8207FF5F200E661D1 /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3AF20736EEC0097D86F /* ppu.cpp */; }; B3FBDFA9207FF5F200E661D1 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3B220736EEC0097D86F /* input.cpp */; }; B3FBDFAA207FF5F200E661D1 /* snes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3BB20736EEC0097D86F /* snes.cpp */; }; B3FBDFAB207FF5F200E661D1 /* apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3BC20736EEC0097D86F /* apu.cpp */; }; B3FBDFAC207FF5F200E661D1 /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3BD20736EEC0097D86F /* cpu.cpp */; }; B3FBDFAD207FF5F200E661D1 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB3C820736EEC0097D86F /* cart.cpp */; }; - B3FBDFAE207FFB1F00E661D1 /* libsnes_faust-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FBDF9F207FF5D800E661D1 /* libsnes_faust-iOS.a */; }; + B3FBDFAE207FFB1F00E661D1 /* libsnes_faust.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FBDF9F207FF5D800E661D1 /* libsnes_faust.a */; }; B3FBDFAF207FFBE500E661D1 /* SNSFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAB1C20736EE80097D86F /* SNSFLoader.cpp */; }; B3FBDFB0207FFC1E00E661D1 /* SPCReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAAE4C20736EE90097D86F /* SPCReader.cpp */; }; B3FBDFB3207FFC6100E661D1 /* snes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB29020736EEB0097D86F /* snes.cpp */; }; C66D56112626B12100CDECE9 /* Time_POSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D560B2626B12100CDECE9 /* Time_POSIX.cpp */; }; - C66D56122626B12100CDECE9 /* Time_POSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D560B2626B12100CDECE9 /* Time_POSIX.cpp */; }; C66D56172626B2FB00CDECE9 /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D56162626B2FB00CDECE9 /* convert.cpp */; }; - C66D56182626B2FB00CDECE9 /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D56162626B2FB00CDECE9 /* convert.cpp */; }; C66D561B2626B37300CDECE9 /* testsexp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D56192626B37200CDECE9 /* testsexp.cpp */; }; - C66D561C2626B37300CDECE9 /* testsexp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D56192626B37200CDECE9 /* testsexp.cpp */; }; C66D56222626B4E700CDECE9 /* CDAFReader_PCM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D561F2626B4E700CDECE9 /* CDAFReader_PCM.cpp */; }; - C66D56232626B4E700CDECE9 /* CDAFReader_PCM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C66D561F2626B4E700CDECE9 /* CDAFReader_PCM.cpp */; }; - C6E1B62925AA9CB4007C3CF1 /* scu_dsp_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB17B20736EEA0097D86F /* scu_dsp_misc.cpp */; }; - C6E1B62A25AA9CB4007C3CF1 /* scu_dsp_jmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18020736EEA0097D86F /* scu_dsp_jmp.cpp */; }; - C6E1B62B25AA9CB4007C3CF1 /* 3dpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18920736EEA0097D86F /* 3dpad.cpp */; }; - C6E1B62C25AA9CB4007C3CF1 /* mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18B20736EEA0097D86F /* mouse.cpp */; }; - C6E1B62D25AA9CB4007C3CF1 /* gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18D20736EEA0097D86F /* gamepad.cpp */; }; - C6E1B62E25AA9CB4007C3CF1 /* multitap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18E20736EEA0097D86F /* multitap.cpp */; }; - C6E1B62F25AA9CB4007C3CF1 /* wheel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB19620736EEA0097D86F /* wheel.cpp */; }; - C6E1B63025AA9CB4007C3CF1 /* gun.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB19920736EEA0097D86F /* gun.cpp */; }; - C6E1B63125AA9CB4007C3CF1 /* mission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB19C20736EEA0097D86F /* mission.cpp */; }; - C6E1B63225AA9CB4007C3CF1 /* keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1A820736EEA0097D86F /* keyboard.cpp */; }; - C6E1B63325AA9CB4007C3CF1 /* jpkeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1A920736EEA0097D86F /* jpkeyboard.cpp */; }; - C6E1B63425AA9CB4007C3CF1 /* db.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1AF20736EEA0097D86F /* db.cpp */; }; - C6E1B63525AA9CB4007C3CF1 /* scu_dsp_mvi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1B820736EEA0097D86F /* scu_dsp_mvi.cpp */; }; - C6E1B63625AA9CB4007C3CF1 /* vdp2_render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1BA20736EEA0097D86F /* vdp2_render.cpp */; }; - C6E1B63725AA9CB4007C3CF1 /* vdp1_poly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1C120736EEA0097D86F /* vdp1_poly.cpp */; }; - C6E1B63825AA9CB4007C3CF1 /* ssf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1C620736EEA0097D86F /* ssf.cpp */; }; - C6E1B63925AA9CB4007C3CF1 /* gen_dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1CF20736EEA0097D86F /* gen_dsp.cpp */; }; - C6E1B63A25AA9CB4007C3CF1 /* ss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1D220736EEA0097D86F /* ss.cpp */; }; - C6E1B63B25AA9CB4007C3CF1 /* smpc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1D520736EEA0097D86F /* smpc.cpp */; }; - C6E1B63C25AA9CB4007C3CF1 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1D720736EEA0097D86F /* sound.cpp */; }; - C6E1B63D25AA9CB4007C3CF1 /* ar4mp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1DB20736EEA0097D86F /* ar4mp.cpp */; }; - C6E1B63E25AA9CB4007C3CF1 /* extram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1E420736EEA0097D86F /* extram.cpp */; }; - C6E1B63F25AA9CB4007C3CF1 /* backup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1E620736EEA0097D86F /* backup.cpp */; }; - C6E1B64025AA9CB4007C3CF1 /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1E820736EEA0097D86F /* debug.cpp */; }; - C6E1B64125AA9CB4007C3CF1 /* cs1ram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1E920736EEA0097D86F /* cs1ram.cpp */; }; - C6E1B64225AA9CB4007C3CF1 /* vdp1_sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1F820736EEA0097D86F /* vdp1_sprite.cpp */; }; - C6E1B64325AA9CB4007C3CF1 /* vdp1_line.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1FB20736EEA0097D86F /* vdp1_line.cpp */; }; - C6E1B64425AA9CB4007C3CF1 /* vdp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21120736EEB0097D86F /* vdp2.cpp */; }; - C6E1B64525AA9CB4007C3CF1 /* cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21520736EEB0097D86F /* cart.cpp */; }; - C6E1B64625AA9CB4007C3CF1 /* vdp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21620736EEB0097D86F /* vdp1.cpp */; }; - C6E1B64725AA9CB4007C3CF1 /* scu_dsp_gen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21820736EEB0097D86F /* scu_dsp_gen.cpp */; }; - C6E1B64825AA9CD6007C3CF1 /* libsaturn-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C6E1B62825AA9C15007C3CF1 /* libsaturn-tvOS.a */; }; - C6E1B64B25AAA00E007C3CF1 /* cdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB20E20736EEB0097D86F /* cdb.cpp */; }; - C6E1B64C25AAA042007C3CF1 /* rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB1E720736EEA0097D86F /* rom.cpp */; }; - C6E1B64F25AAA24A007C3CF1 /* DSPUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CC24880BF3000A3922 /* DSPUtility.cpp */; }; - C6E1B65125AAA24A007C3CF1 /* SwiftResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CD24880BF3000A3922 /* SwiftResampler.cpp */; }; C6E1B66F25AAC1B1007C3CF1 /* scu_dsp_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB17B20736EEA0097D86F /* scu_dsp_misc.cpp */; }; C6E1B67025AAC1B1007C3CF1 /* scu_dsp_jmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18020736EEA0097D86F /* scu_dsp_jmp.cpp */; }; C6E1B67125AAC1B1007C3CF1 /* 3dpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB18920736EEA0097D86F /* 3dpad.cpp */; }; @@ -1278,185 +642,10 @@ C6E1B68F25AAC1B2007C3CF1 /* scu_dsp_gen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AAB21820736EEB0097D86F /* scu_dsp_gen.cpp */; }; C6E1B69325AAC243007C3CF1 /* DSPUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CC24880BF3000A3922 /* DSPUtility.cpp */; }; C6E1B69425AAC243007C3CF1 /* SwiftResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2CD24880BF3000A3922 /* SwiftResampler.cpp */; }; - C6E1B69525AAC5A3007C3CF1 /* libsaturn-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C6E1B66E25AAC123007C3CF1 /* libsaturn-iOS.a */; }; + C6E1B69525AAC5A3007C3CF1 /* libsaturn.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C6E1B66E25AAC123007C3CF1 /* libsaturn.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 11389F98248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C5B02191ABB7009F4EDC; - remoteInfo = "cdrom-tvOS"; - }; - 11389F9A248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C4C82191A1AC009F4EDC; - remoteInfo = "gb-tvOS"; - }; - 11389F9C248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C4AC21919E72009F4EDC; - remoteInfo = "gba-tvOS"; - }; - 11389F9E248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF13721923EB40058E2E7; - remoteInfo = "hwaudio-tvOS"; - }; - 11389FA0248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF1C5219240270058E2E7; - remoteInfo = "hwmisc-tvOS"; - }; - 11389FA2248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C34421919C1C009F4EDC; - remoteInfo = "hwvideo-tvOS"; - }; - 11389FA4248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF17921923F740058E2E7; - remoteInfo = "lynx-tvOS"; - }; - 11389FA6248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C3FB21919D73009F4EDC; - remoteInfo = "mednafen-tvOS"; - }; - 11389FA8248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C53C2191A8A5009F4EDC; - remoteInfo = "mpcdec-tvOS"; - }; - 11389FAA248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF15621923F520058E2E7; - remoteInfo = "neogeopocket-tvOS"; - }; - 11389FAC248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C34E21919CD6009F4EDC; - remoteInfo = "nes-tvOS"; - }; - 11389FAE248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF18A21923F790058E2E7; - remoteInfo = "pce-tvOS"; - }; - 11389FB0248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF1A021923F7F0058E2E7; - remoteInfo = "pcefast-tvOS"; - }; - 11389FB2248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C5CA2191ACE1009F4EDC; - remoteInfo = "pcfx-tvOS"; - }; - 11389FB4248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C32221919BC6009F4EDC; - remoteInfo = "psx-tvOS"; - }; - 11389FB6248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C5832191AB4E009F4EDC; - remoteInfo = "quicklz-tvOS"; - }; - 11389FB8248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF1B221923F850058E2E7; - remoteInfo = "segamastersystem-tvOS"; - }; - 11389FBA248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C42C21919DC9009F4EDC; - remoteInfo = "snes-tvOS"; - }; - 11389FBC248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C54E2191AAD1009F4EDC; - remoteInfo = "snes_faust-tvOS"; - }; - 11389FBE248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C5A12191ABAD009F4EDC; - remoteInfo = "sound-tvOS"; - }; - 11389FC0248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C56B2191AB34009F4EDC; - remoteInfo = "tremor-tvOS"; - }; - 11389FC2248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C55E2191AAFE009F4EDC; - remoteInfo = "trio-tvOS"; - }; - 11389FC4248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C58F2191AB9D009F4EDC; - remoteInfo = "video-tvOS"; - }; - 11389FC6248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32CF14821923F330058E2E7; - remoteInfo = "virtualboy-tvOS"; - }; - 11389FC8248D4F6B0089CBFF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B324C5E02191AD13009F4EDC; - remoteInfo = "wonderswan-tvOS"; - }; B31737FD2783F8AF002D3ACD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -1646,27 +835,6 @@ remoteGlobalIDString = B3FBDF9E207FF5D800E661D1; remoteInfo = snes_faust; }; - B35D6692218185FF0005A992 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B35D6684218185710005A992; - remoteInfo = "hwcpu-tvOS"; - }; - B36C7D5227AE10F600715677 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B393F253277C0C340097F71C; - remoteInfo = "hwcpu-m68k-tvOS"; - }; - C6E1B64925AA9DC1007C3CF1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C6E1B5A925AA9C15007C3CF1; - remoteInfo = "saturn-tvOS"; - }; C6E1B69025AAC1D5007C3CF1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -1684,115 +852,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - B324C33E21919BC6009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C34821919C1C009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C3CF21919CD6009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C3F621919D34009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C42621919D73009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C4A621919DC9009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C4C121919E72009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C4D12191A1AC009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C5472191A8A5009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C5572191AAD1009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C5642191AAFE009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C57D2191AB34009F4EDC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C5872191AB4E009F4EDC /* CopyFiles */ = { + B333502B207AFBA30036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1801,7 +861,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B324C59B2191AB9D009F4EDC /* CopyFiles */ = { + B3335060207AFD3D0036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1810,7 +870,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5AA2191ABAD009F4EDC /* CopyFiles */ = { + B3335090207AFF2B0036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1819,7 +879,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5C12191ABB7009F4EDC /* CopyFiles */ = { + B33350A3207AFFE80036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1828,7 +888,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5D92191ACE1009F4EDC /* CopyFiles */ = { + B333518E207B00F70036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1837,7 +897,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5ED2191AD13009F4EDC /* CopyFiles */ = { + B33351A2207B01460036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1846,7 +906,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF14121923EB40058E2E7 /* CopyFiles */ = { + B33351AF207B01570036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1855,7 +915,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF15021923F330058E2E7 /* CopyFiles */ = { + B33351BC207B016F0036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1864,7 +924,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF17321923F520058E2E7 /* CopyFiles */ = { + B33351C9207B01860036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1873,7 +933,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF18421923F740058E2E7 /* CopyFiles */ = { + B33351D6207B01970036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1882,7 +942,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF19A21923F790058E2E7 /* CopyFiles */ = { + B33351E3207B01C60036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1891,7 +951,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF1AC21923F7F0058E2E7 /* CopyFiles */ = { + B33351FA207B020C0036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1900,7 +960,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF1BF21923F850058E2E7 /* CopyFiles */ = { + B3335243207B02770036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1909,7 +969,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF1C9219240270058E2E7 /* CopyFiles */ = { + B33352A5207B06550036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1918,7 +978,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B333502B207AFBA30036A448 /* CopyFiles */ = { + B33352B2207B06610036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1927,7 +987,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3335060207AFD3D0036A448 /* CopyFiles */ = { + B33352BF207B06730036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1936,7 +996,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3335090207AFF2B0036A448 /* CopyFiles */ = { + B33352CC207B067F0036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1945,7 +1005,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33350A3207AFFE80036A448 /* CopyFiles */ = { + B333546D207B1B500036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1954,7 +1014,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B333518E207B00F70036A448 /* CopyFiles */ = { + B3335491207B1BF30036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1963,7 +1023,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33351A2207B01460036A448 /* CopyFiles */ = { + B33354B2207B1C520036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1972,7 +1032,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33351AF207B01570036A448 /* CopyFiles */ = { + B33354C9207B1D850036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1981,7 +1041,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33351BC207B016F0036A448 /* CopyFiles */ = { + B33355A0207B1E930036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1990,7 +1050,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33351C9207B01860036A448 /* CopyFiles */ = { + B33355B6207B20420036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -1999,7 +1059,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33351D6207B01970036A448 /* CopyFiles */ = { + B33355C5207B20BE0036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -2008,7 +1068,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33351E3207B01C60036A448 /* CopyFiles */ = { + B33355E2207B278E0036A448 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -2017,7 +1077,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33351FA207B020C0036A448 /* CopyFiles */ = { + B393F24C277C0BF70097F71C /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -2026,7 +1086,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3335243207B02770036A448 /* CopyFiles */ = { + B3FBDEF6207FF0E300E661D1 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -2035,7 +1095,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33352A5207B06550036A448 /* CopyFiles */ = { + B3FBDF9D207FF5D800E661D1 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -2044,160 +1104,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B33352B2207B06610036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352BF207B06730036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352CC207B067F0036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B333546D207B1B500036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3335491207B1BF30036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33354B2207B1C520036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33354C9207B1D850036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355A0207B1E930036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355B6207B20420036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355C5207B20BE0036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355E2207B278E0036A448 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B35D668C218185710005A992 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B393F24C277C0BF70097F71C /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B393F25A277C0C340097F71C /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3FBDEF6207FF0E300E661D1 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3FBDF9D207FF5D800E661D1 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C6E1B62325AA9C15007C3CF1 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C6E1B66925AAC123007C3CF1 /* CopyFiles */ = { + C6E1B66925AAC123007C3CF1 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "include/$(PRODUCT_NAME)"; @@ -2280,61 +1187,34 @@ 94454E3717852E44006C057B /* thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = ""; }; 94454E3B17852E61006C057B /* stubs.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = stubs.mm; sourceTree = ""; }; B314E30F21081E9200D0C27A /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C34221919BC6009F4EDC /* libpsx-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpsx-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C34C21919C1C009F4EDC /* libhwvideo-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwvideo-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C3D321919CD6009F4EDC /* libnes-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libnes-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C3FA21919D34009F4EDC /* libmegadrive-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmegadrive-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C42A21919D73009F4EDC /* libmednafen-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmednafen-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C4AA21919DC9009F4EDC /* libsnes-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnes-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C4C521919E72009F4EDC /* libgba-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libgba-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C4D52191A1AC009F4EDC /* libgb-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libgb-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C54C2191A8A5009F4EDC /* libmpcdec-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmpcdec-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C55C2191AAD1009F4EDC /* libsnes_faust-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnes_faust-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C5692191AAFE009F4EDC /* libtrio-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libtrio-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C5822191AB34009F4EDC /* libtremor-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libtremor-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C58C2191AB4E009F4EDC /* libquicklz-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libquicklz-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C5A02191AB9D009F4EDC /* libvideo-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libvideo-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C5AF2191ABAD009F4EDC /* libsound-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsound-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C5C62191ABB7009F4EDC /* libcdrom-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcdrom-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C5DE2191ACE1009F4EDC /* libpcfx-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpcfx-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B324C5F22191AD13009F4EDC /* libwonderswan-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libwonderswan-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF14621923EB50058E2E7 /* libhwaudio-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwaudio-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF15521923F330058E2E7 /* libvirtualboy-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libvirtualboy-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF17821923F520058E2E7 /* libneogeopocket-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libneogeopocket-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF18921923F740058E2E7 /* liblynx-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "liblynx-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF19F21923F790058E2E7 /* libpce-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpce-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF1B121923F7F0058E2E7 /* libpcefast-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpcefast-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF1C421923F850058E2E7 /* libsegamastersystem-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsegamastersystem-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B32CF1CE219240270058E2E7 /* libhwmisc-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwmisc-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B333502D207AFBA30036A448 /* libpsx-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpsx-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3335062207AFD3D0036A448 /* libwonderswan-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libwonderswan-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3335092207AFF2B0036A448 /* libvirtualboy-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libvirtualboy-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33350A5207AFFE80036A448 /* libnes-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libnes-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3335190207B00F70036A448 /* libgb-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libgb-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33351A4207B01460036A448 /* libgba-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libgba-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33351B1207B01570036A448 /* liblynx-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "liblynx-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33351BE207B016F0036A448 /* libneogeopocket-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libneogeopocket-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33351CB207B01860036A448 /* libpce-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpce-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33351D8207B01970036A448 /* libpcefast-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpcefast-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33351E5207B01C60036A448 /* libsegamastersystem-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsegamastersystem-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33351FC207B020C0036A448 /* libpcfx-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpcfx-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3335245207B02770036A448 /* libmegadrive-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmegadrive-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33352A7207B06550036A448 /* libhwaudio-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwaudio-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33352B4207B06620036A448 /* libhwvideo-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwvideo-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33352C1207B06730036A448 /* libhwcpu-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33352CE207B067F0036A448 /* libhwmisc-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwmisc-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B333546F207B1B500036A448 /* libcdrom-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libcdrom-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3335493207B1BF30036A448 /* libsound-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsound-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33354B4207B1C520036A448 /* libvideo-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libvideo-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33354CB207B1D850036A448 /* libmednafen-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmednafen-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33355A2207B1E930036A448 /* libmpcdec-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmpcdec-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33355B8207B20420036A448 /* libquicklz-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libquicklz-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33355C7207B20BE0036A448 /* libtremor-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libtremor-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B33355E4207B278E0036A448 /* libtrio-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libtrio-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B333502D207AFBA30036A448 /* libpsx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpsx.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3335062207AFD3D0036A448 /* libwonderswan.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libwonderswan.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3335092207AFF2B0036A448 /* libvirtualboy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libvirtualboy.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33350A5207AFFE80036A448 /* libnes.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libnes.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3335190207B00F70036A448 /* libgb.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgb.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33351A4207B01460036A448 /* libgba.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgba.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33351B1207B01570036A448 /* liblynx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblynx.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33351BE207B016F0036A448 /* libneogeopocket.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libneogeopocket.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33351CB207B01860036A448 /* libpce.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpce.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33351D8207B01970036A448 /* libpcefast.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpcefast.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33351E5207B01C60036A448 /* libsegamastersystem.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsegamastersystem.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33351FC207B020C0036A448 /* libpcfx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpcfx.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3335245207B02770036A448 /* libmegadrive.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmegadrive.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33352A7207B06550036A448 /* libhwaudio.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhwaudio.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33352B4207B06620036A448 /* libhwvideo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhwvideo.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33352C1207B06730036A448 /* libhwcpu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhwcpu.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33352CE207B067F0036A448 /* libhwmisc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhwmisc.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B333546F207B1B500036A448 /* libcdrom.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libcdrom.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3335493207B1BF30036A448 /* libsound.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsound.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33354B4207B1C520036A448 /* libvideo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libvideo.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33354CB207B1D850036A448 /* libmednafen.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmednafen.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33355A2207B1E930036A448 /* libmpcdec.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmpcdec.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33355B8207B20420036A448 /* libquicklz.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libquicklz.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33355C7207B20BE0036A448 /* libtremor.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtremor.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B33355E4207B278E0036A448 /* libtrio.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtrio.a; sourceTree = BUILT_PRODUCTS_DIR; }; B340E4621E08887600AD0E8B /* PVMednafen.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMednafen.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B340E4641E08887700AD0E8B /* PVMednafen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMednafen.h; sourceTree = ""; }; B340E4651E08887700AD0E8B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B340E46F1E08888700AD0E8B /* PVMednafen.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMednafen.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B340E5E61E0889FB00AD0E8B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.1.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; B340E5E81E088A0100AD0E8B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; B340E5EA1E088A1100AD0E8B /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.1.sdk/usr/lib/libiconv.tbd; sourceTree = DEVELOPER_DIR; }; @@ -2345,9 +1225,7 @@ B340E5F41E088A4500AD0E8B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B34CB0EC2274BA81009134B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B3547B5F205858EF00CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; - B35D6690218185710005A992 /* libhwcpu-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-m68k-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-m68k-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B393F251277C0BF70097F71C /* libhwcpu-m68k.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhwcpu-m68k.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B3A74C8C20522B86001D3D2E /* MednafenGameCore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MednafenGameCore.swift; sourceTree = ""; }; B3AA9D6A20736B030097D86F /* README.PORTING */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.PORTING; sourceTree = ""; }; B3AA9D6B20736B030097D86F /* acinclude.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = acinclude.m4; sourceTree = ""; }; @@ -4021,10 +2899,12 @@ B3AAB3C720736EEC0097D86F /* snes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snes.h; sourceTree = ""; }; B3AAB3C820736EEC0097D86F /* cart.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cart.cpp; sourceTree = ""; }; B3AAB3CA20736EEC0097D86F /* git.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = git.cpp; sourceTree = ""; }; + B3B5BF9B293F13F1006BFC55 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; + B3B8C3BE290E15EB002B839A /* MednafenGameCore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MednafenGameCore+Controls.mm"; sourceTree = ""; }; B3CF44B72039B64A005BEB14 /* MednafenMultiDisc.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MednafenMultiDisc.m; sourceTree = ""; }; B3CF44BA2039B6D0005BEB14 /* MednafenMultiTap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MednafenMultiTap.m; sourceTree = ""; }; - B3FBDEF8207FF0E300E661D1 /* libsnes-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnes-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3FBDF9F207FF5D800E661D1 /* libsnes_faust-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnes_faust-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FBDEF8207FF0E300E661D1 /* libsnes.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsnes.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FBDF9F207FF5D800E661D1 /* libsnes_faust.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsnes_faust.a; sourceTree = BUILT_PRODUCTS_DIR; }; C66D560A2626B12100CDECE9 /* Makefile.am.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; path = Makefile.am.inc; sourceTree = ""; }; C66D560B2626B12100CDECE9 /* Time_POSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Time_POSIX.cpp; sourceTree = ""; }; C66D560C2626B12100CDECE9 /* Time_Win32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Time_Win32.cpp; sourceTree = ""; }; @@ -4035,545 +2915,303 @@ C66D561D2626B48700CDECE9 /* jump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jump.h; sourceTree = ""; }; C66D561F2626B4E700CDECE9 /* CDAFReader_PCM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CDAFReader_PCM.cpp; sourceTree = ""; }; C66D56212626B4E700CDECE9 /* CDAFReader_PCM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDAFReader_PCM.h; sourceTree = ""; }; - C6E1B62825AA9C15007C3CF1 /* libsaturn-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsaturn-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - C6E1B66E25AAC123007C3CF1 /* libsaturn-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsaturn-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C6E1B66E25AAC123007C3CF1 /* libsaturn.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsaturn.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B324C33D21919BC6009F4EDC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C34721919C1C009F4EDC /* Frameworks */ = { + B333502A207AFBA30036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C3CE21919CD6009F4EDC /* Frameworks */ = { + B333505F207AFD3D0036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C3F521919D34009F4EDC /* Frameworks */ = { + B333508F207AFF2B0036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C42521919D73009F4EDC /* Frameworks */ = { + B33350A2207AFFE80036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C4A521919DC9009F4EDC /* Frameworks */ = { + B333518D207B00F70036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C4C021919E72009F4EDC /* Frameworks */ = { + B33351A1207B01460036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C4D02191A1AC009F4EDC /* Frameworks */ = { + B33351AE207B01570036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5462191A8A5009F4EDC /* Frameworks */ = { + B33351BB207B016F0036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5562191AAD1009F4EDC /* Frameworks */ = { + B33351C8207B01860036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5632191AAFE009F4EDC /* Frameworks */ = { + B33351D5207B01970036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C57C2191AB34009F4EDC /* Frameworks */ = { + B33351E2207B01C60036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5862191AB4E009F4EDC /* Frameworks */ = { + B33351F9207B020C0036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C59A2191AB9D009F4EDC /* Frameworks */ = { + B3335242207B02770036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5A92191ABAD009F4EDC /* Frameworks */ = { + B33352A4207B06550036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5C02191ABB7009F4EDC /* Frameworks */ = { + B33352B1207B06610036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5D82191ACE1009F4EDC /* Frameworks */ = { + B33352BE207B06730036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B393F261277C109C0097F71C /* libhwcpu-m68k.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5EC2191AD13009F4EDC /* Frameworks */ = { + B33352CB207B067F0036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF14021923EB40058E2E7 /* Frameworks */ = { + B333546C207B1B500036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF14F21923F330058E2E7 /* Frameworks */ = { + B3335490207B1BF30036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF17221923F520058E2E7 /* Frameworks */ = { + B33354B1207B1C520036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF18321923F740058E2E7 /* Frameworks */ = { + B33354C8207B1D850036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF19921923F790058E2E7 /* Frameworks */ = { + B333559F207B1E930036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF1AB21923F7F0058E2E7 /* Frameworks */ = { + B33355B5207B20420036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF1BE21923F850058E2E7 /* Frameworks */ = { + B33355C4207B20BE0036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF1C8219240270058E2E7 /* Frameworks */ = { + B33355E1207B278E0036A448 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B333502A207AFBA30036A448 /* Frameworks */ = { + B340E45E1E08887600AD0E8B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B324C63221920C56009F4EDC /* PVSupport.framework in Frameworks */, + B340E5F11E088A3A00AD0E8B /* Foundation.framework in Frameworks */, + B3FBDFAE207FFB1F00E661D1 /* libsnes_faust.a in Frameworks */, + B3FBDF9A207FF51D00E661D1 /* libsnes.a in Frameworks */, + B33355F0207B28570036A448 /* libtrio.a in Frameworks */, + B33355D0207B20CB0036A448 /* libtremor.a in Frameworks */, + B33355C2207B207F0036A448 /* libquicklz.a in Frameworks */, + B33355B3207B1EBC0036A448 /* libmpcdec.a in Frameworks */, + B333559C207B1DB10036A448 /* libmednafen.a in Frameworks */, + C6E1B69525AAC5A3007C3CF1 /* libsaturn.a in Frameworks */, + B33354BD207B1C600036A448 /* libvideo.a in Frameworks */, + B33354A2207B1C0D0036A448 /* libsound.a in Frameworks */, + B3335488207B1B8E0036A448 /* libcdrom.a in Frameworks */, + B33352E2207B072C0036A448 /* libhwaudio.a in Frameworks */, + B33352E3207B072C0036A448 /* libhwcpu.a in Frameworks */, + B33352E4207B072C0036A448 /* libhwmisc.a in Frameworks */, + B33352E5207B072C0036A448 /* libhwvideo.a in Frameworks */, + B333527E207B02EB0036A448 /* libgba.a in Frameworks */, + B333527F207B02EB0036A448 /* liblynx.a in Frameworks */, + B3335281207B02EB0036A448 /* libneogeopocket.a in Frameworks */, + B3335282207B02EB0036A448 /* libpce.a in Frameworks */, + B3335283207B02EB0036A448 /* libpcefast.a in Frameworks */, + B3335284207B02EB0036A448 /* libpcfx.a in Frameworks */, + B333519F207B01230036A448 /* libgb.a in Frameworks */, + B33350AE207B00080036A448 /* libnes.a in Frameworks */, + B333509C207AFF3F0036A448 /* libvirtualboy.a in Frameworks */, + B3335075207AFD9C0036A448 /* libwonderswan.a in Frameworks */, + B333504F207AFBFC0036A448 /* libpsx.a in Frameworks */, + B340E5EB1E088A1100AD0E8B /* libiconv.tbd in Frameworks */, + B340E5E71E0889FB00AD0E8B /* libz.tbd in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B333505F207AFD3D0036A448 /* Frameworks */ = { + B393F24B277C0BF70097F71C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B333508F207AFF2B0036A448 /* Frameworks */ = { + B3FBDEF5207FF0E300E661D1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B33350A2207AFFE80036A448 /* Frameworks */ = { + B3FBDF9C207FF5D800E661D1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B333518D207B00F70036A448 /* Frameworks */ = { + C6E1B66825AAC123007C3CF1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B33351A1207B01460036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* Mednafen */ = { + isa = PBXGroup; + children = ( + B3B5BF9B293F13F1006BFC55 /* Config.xcconfig */, + 11AFB33D248828D5000A3922 /* UPDATING.md */, + 08FB77AFFE84173DC02AAC07 /* Classes */, + 32C88E010371C26100C91783 /* Other Sources */, + 089C167CFE841241C02AAC07 /* Resources */, + B340E4631E08887700AD0E8B /* PVMednafen */, + 19C28FB8FE9D52D311CA2CBB /* Products */, + B340E5E51E0889FB00AD0E8B /* Frameworks */, ); - runOnlyForDeploymentPostprocessing = 0; + name = Mednafen; + sourceTree = ""; }; - B33351AE207B01570036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D5B49B7048680CD000E48DA /* Info.plist */, + 089C167DFE841241C02AAC07 /* InfoPlist.strings */, ); - runOnlyForDeploymentPostprocessing = 0; + name = Resources; + sourceTree = ""; }; - B33351BB207B016F0036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 08FB77AFFE84173DC02AAC07 /* Classes */ = { + isa = PBXGroup; + children = ( + 8CB3E08917F1DFFF0090372A /* include */, + B3AA9D6920736B030097D86F /* mednafen */, + 824088340FFDDCF400F0FE7D /* MednafenGameCore.h */, + 824088350FFDDCF400F0FE7D /* MednafenGameCore.mm */, + B3B8C3BE290E15EB002B839A /* MednafenGameCore+Controls.mm */, + B3A74C8C20522B86001D3D2E /* MednafenGameCore.swift */, + B3CF44B72039B64A005BEB14 /* MednafenMultiDisc.m */, + B3CF44BA2039B6D0005BEB14 /* MednafenMultiTap.m */, + 94454E3B17852E61006C057B /* stubs.mm */, + 94454E3617852E44006C057B /* thread.cpp */, + 94454E3717852E44006C057B /* thread.h */, ); - runOnlyForDeploymentPostprocessing = 0; + name = Classes; + sourceTree = ""; }; - B33351C8207B01860036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 11AFB2FB24880D1E000A3922 /* mthreading */ = { + isa = PBXGroup; + children = ( + 11AFB2F824880D19000A3922 /* MThreading_POSIX.cpp */, ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351D5207B01970036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351E2207B01C60036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351F9207B020C0036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3335242207B02770036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352A4207B06550036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352B1207B06610036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352BE207B06730036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B393F261277C109C0097F71C /* libhwcpu-m68k-iOS.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352CB207B067F0036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B333546C207B1B500036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3335490207B1BF30036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33354B1207B1C520036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33354C8207B1D850036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B333559F207B1E930036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355B5207B20420036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355C4207B20BE0036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355E1207B278E0036A448 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B340E45E1E08887600AD0E8B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C63221920C56009F4EDC /* PVSupport.framework in Frameworks */, - B340E5F31E088A4000AD0E8B /* UIKit.framework in Frameworks */, - B340E5F11E088A3A00AD0E8B /* Foundation.framework in Frameworks */, - B3FBDFAE207FFB1F00E661D1 /* libsnes_faust-iOS.a in Frameworks */, - B3FBDF9A207FF51D00E661D1 /* libsnes-iOS.a in Frameworks */, - B33355F0207B28570036A448 /* libtrio-iOS.a in Frameworks */, - B33355D0207B20CB0036A448 /* libtremor-iOS.a in Frameworks */, - B33355C2207B207F0036A448 /* libquicklz-iOS.a in Frameworks */, - B33355B3207B1EBC0036A448 /* libmpcdec-iOS.a in Frameworks */, - B333559C207B1DB10036A448 /* libmednafen-iOS.a in Frameworks */, - C6E1B69525AAC5A3007C3CF1 /* libsaturn-iOS.a in Frameworks */, - B33354BD207B1C600036A448 /* libvideo-iOS.a in Frameworks */, - B33354A2207B1C0D0036A448 /* libsound-iOS.a in Frameworks */, - B3335488207B1B8E0036A448 /* libcdrom-iOS.a in Frameworks */, - B33352E2207B072C0036A448 /* libhwaudio-iOS.a in Frameworks */, - B33352E3207B072C0036A448 /* libhwcpu-iOS.a in Frameworks */, - B33352E4207B072C0036A448 /* libhwmisc-iOS.a in Frameworks */, - B33352E5207B072C0036A448 /* libhwvideo-iOS.a in Frameworks */, - B333527E207B02EB0036A448 /* libgba-iOS.a in Frameworks */, - B333527F207B02EB0036A448 /* liblynx-iOS.a in Frameworks */, - B3335281207B02EB0036A448 /* libneogeopocket-iOS.a in Frameworks */, - B3335282207B02EB0036A448 /* libpce-iOS.a in Frameworks */, - B3335283207B02EB0036A448 /* libpcefast-iOS.a in Frameworks */, - B3335284207B02EB0036A448 /* libpcfx-iOS.a in Frameworks */, - B333519F207B01230036A448 /* libgb-iOS.a in Frameworks */, - B33350AE207B00080036A448 /* libnes-iOS.a in Frameworks */, - B333509C207AFF3F0036A448 /* libvirtualboy-iOS.a in Frameworks */, - B3335075207AFD9C0036A448 /* libwonderswan-iOS.a in Frameworks */, - B333504F207AFBFC0036A448 /* libpsx-iOS.a in Frameworks */, - B340E5EB1E088A1100AD0E8B /* libiconv.tbd in Frameworks */, - B340E5E71E0889FB00AD0E8B /* libz.tbd in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B340E46B1E08888700AD0E8B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C6E1B64825AA9CD6007C3CF1 /* libsaturn-tvOS.a in Frameworks */, - B32CF1D6219241EE0058E2E7 /* libhwvideo-tvOS.a in Frameworks */, - B32CF1D7219241EE0058E2E7 /* libmednafen-tvOS.a in Frameworks */, - B32CF1D8219241EE0058E2E7 /* libnes-tvOS.a in Frameworks */, - B32CF1D9219241EE0058E2E7 /* libpsx-tvOS.a in Frameworks */, - B32CF1DA219241EE0058E2E7 /* libsnes-tvOS.a in Frameworks */, - B32CF1CF219240770058E2E7 /* libhwmisc-tvOS.a in Frameworks */, - B32CF1D0219240770058E2E7 /* liblynx-tvOS.a in Frameworks */, - B32CF1D1219240770058E2E7 /* libneogeopocket-tvOS.a in Frameworks */, - B32CF1D2219240770058E2E7 /* libpce-tvOS.a in Frameworks */, - B32CF1D3219240770058E2E7 /* libpcefast-tvOS.a in Frameworks */, - B32CF1D5219240770058E2E7 /* libvirtualboy-tvOS.a in Frameworks */, - B32CF14721923F030058E2E7 /* libhwaudio-tvOS.a in Frameworks */, - B324C62521920724009F4EDC /* libgba-tvOS.a in Frameworks */, - B324C5F32191AD3B009F4EDC /* libwonderswan-tvOS.a in Frameworks */, - B324C5DF2191AD10009F4EDC /* libpcfx-tvOS.a in Frameworks */, - B324C5C92191AC10009F4EDC /* libcdrom-tvOS.a in Frameworks */, - B324C5C82191AC0A009F4EDC /* libsound-tvOS.a in Frameworks */, - B324C5C72191AC05009F4EDC /* libvideo-tvOS.a in Frameworks */, - B324C58E2191AB8D009F4EDC /* libquicklz-tvOS.a in Frameworks */, - B324C58D2191AB86009F4EDC /* libtremor-tvOS.a in Frameworks */, - B324C56A2191AB2E009F4EDC /* libtrio-tvOS.a in Frameworks */, - B324C55D2191AAF7009F4EDC /* libsnes_faust-tvOS.a in Frameworks */, - B324C54D2191A8D3009F4EDC /* libmpcdec-tvOS.a in Frameworks */, - B324C4D62191A1F7009F4EDC /* libgb-tvOS.a in Frameworks */, - B35D6691218185A60005A992 /* libhwcpu-tvOS.a in Frameworks */, - B314E31021081E9200D0C27A /* PVSupport.framework in Frameworks */, - B340E5F51E088A4500AD0E8B /* Foundation.framework in Frameworks */, - B340E5EF1E088A3500AD0E8B /* UIKit.framework in Frameworks */, - B340E5ED1E088A1E00AD0E8B /* libiconv.tbd in Frameworks */, - B340E5E91E088A0100AD0E8B /* libz.tbd in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B35D668B218185710005A992 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B393F262277C10A40097F71C /* libhwcpu-m68k-tvOS.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B393F24B277C0BF70097F71C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B393F259277C0C340097F71C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3FBDEF5207FF0E300E661D1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3FBDF9C207FF5D800E661D1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C6E1B62225AA9C15007C3CF1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C6E1B66825AAC123007C3CF1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* Mednafen */ = { - isa = PBXGroup; - children = ( - 11AFB33D248828D5000A3922 /* UPDATING.md */, - 08FB77AFFE84173DC02AAC07 /* Classes */, - 32C88E010371C26100C91783 /* Other Sources */, - 089C167CFE841241C02AAC07 /* Resources */, - B340E4631E08887700AD0E8B /* PVMednafen */, - 19C28FB8FE9D52D311CA2CBB /* Products */, - B340E5E51E0889FB00AD0E8B /* Frameworks */, - ); - name = Mednafen; - sourceTree = ""; - }; - 089C167CFE841241C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 8D5B49B7048680CD000E48DA /* Info.plist */, - 089C167DFE841241C02AAC07 /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 08FB77AFFE84173DC02AAC07 /* Classes */ = { - isa = PBXGroup; - children = ( - 8CB3E08917F1DFFF0090372A /* include */, - B3AA9D6920736B030097D86F /* mednafen */, - 824088340FFDDCF400F0FE7D /* MednafenGameCore.h */, - 824088350FFDDCF400F0FE7D /* MednafenGameCore.mm */, - B3A74C8C20522B86001D3D2E /* MednafenGameCore.swift */, - B3CF44B72039B64A005BEB14 /* MednafenMultiDisc.m */, - B3CF44BA2039B6D0005BEB14 /* MednafenMultiTap.m */, - 94454E3B17852E61006C057B /* stubs.mm */, - 94454E3617852E44006C057B /* thread.cpp */, - 94454E3717852E44006C057B /* thread.h */, - ); - name = Classes; - sourceTree = ""; - }; - 11AFB2FB24880D1E000A3922 /* mthreading */ = { - isa = PBXGroup; - children = ( - 11AFB2F824880D19000A3922 /* MThreading_POSIX.cpp */, - ); - path = mthreading; - sourceTree = ""; + path = mthreading; + sourceTree = ""; }; 11AFB2FC248811CE000A3922 /* cart */ = { isa = PBXGroup; @@ -4604,65 +3242,35 @@ isa = PBXGroup; children = ( B340E4621E08887600AD0E8B /* PVMednafen.framework */, - B340E46F1E08888700AD0E8B /* PVMednafen.framework */, - B333502D207AFBA30036A448 /* libpsx-iOS.a */, - B3335062207AFD3D0036A448 /* libwonderswan-iOS.a */, - B3335092207AFF2B0036A448 /* libvirtualboy-iOS.a */, - B33350A5207AFFE80036A448 /* libnes-iOS.a */, - B3335190207B00F70036A448 /* libgb-iOS.a */, - B33351A4207B01460036A448 /* libgba-iOS.a */, - B33351B1207B01570036A448 /* liblynx-iOS.a */, - B33351BE207B016F0036A448 /* libneogeopocket-iOS.a */, - B33351CB207B01860036A448 /* libpce-iOS.a */, - B33351D8207B01970036A448 /* libpcefast-iOS.a */, - B33351E5207B01C60036A448 /* libsegamastersystem-iOS.a */, - B33351FC207B020C0036A448 /* libpcfx-iOS.a */, - B3335245207B02770036A448 /* libmegadrive-iOS.a */, - B33352A7207B06550036A448 /* libhwaudio-iOS.a */, - B33352B4207B06620036A448 /* libhwvideo-iOS.a */, - B33352C1207B06730036A448 /* libhwcpu-iOS.a */, - B33352CE207B067F0036A448 /* libhwmisc-iOS.a */, - B333546F207B1B500036A448 /* libcdrom-iOS.a */, - B3335493207B1BF30036A448 /* libsound-iOS.a */, - B33354B4207B1C520036A448 /* libvideo-iOS.a */, - B33354CB207B1D850036A448 /* libmednafen-iOS.a */, - B33355A2207B1E930036A448 /* libmpcdec-iOS.a */, - B33355B8207B20420036A448 /* libquicklz-iOS.a */, - B33355C7207B20BE0036A448 /* libtremor-iOS.a */, - B33355E4207B278E0036A448 /* libtrio-iOS.a */, - B3FBDEF8207FF0E300E661D1 /* libsnes-iOS.a */, - B3FBDF9F207FF5D800E661D1 /* libsnes_faust-iOS.a */, - B35D6690218185710005A992 /* libhwcpu-tvOS.a */, - B324C34221919BC6009F4EDC /* libpsx-tvOS.a */, - B324C34C21919C1C009F4EDC /* libhwvideo-tvOS.a */, - B324C3D321919CD6009F4EDC /* libnes-tvOS.a */, - B324C3FA21919D34009F4EDC /* libmegadrive-tvOS.a */, - B324C42A21919D73009F4EDC /* libmednafen-tvOS.a */, - B324C4AA21919DC9009F4EDC /* libsnes-tvOS.a */, - B324C4C521919E72009F4EDC /* libgba-tvOS.a */, - B324C4D52191A1AC009F4EDC /* libgb-tvOS.a */, - B324C54C2191A8A5009F4EDC /* libmpcdec-tvOS.a */, - B324C55C2191AAD1009F4EDC /* libsnes_faust-tvOS.a */, - B324C5692191AAFE009F4EDC /* libtrio-tvOS.a */, - B324C5822191AB34009F4EDC /* libtremor-tvOS.a */, - B324C58C2191AB4E009F4EDC /* libquicklz-tvOS.a */, - B324C5A02191AB9D009F4EDC /* libvideo-tvOS.a */, - B324C5AF2191ABAD009F4EDC /* libsound-tvOS.a */, - B324C5C62191ABB7009F4EDC /* libcdrom-tvOS.a */, - B324C5DE2191ACE1009F4EDC /* libpcfx-tvOS.a */, - B324C5F22191AD13009F4EDC /* libwonderswan-tvOS.a */, - B32CF14621923EB50058E2E7 /* libhwaudio-tvOS.a */, - B32CF15521923F330058E2E7 /* libvirtualboy-tvOS.a */, - B32CF17821923F520058E2E7 /* libneogeopocket-tvOS.a */, - B32CF18921923F740058E2E7 /* liblynx-tvOS.a */, - B32CF19F21923F790058E2E7 /* libpce-tvOS.a */, - B32CF1B121923F7F0058E2E7 /* libpcefast-tvOS.a */, - B32CF1C421923F850058E2E7 /* libsegamastersystem-tvOS.a */, - B32CF1CE219240270058E2E7 /* libhwmisc-tvOS.a */, - C6E1B62825AA9C15007C3CF1 /* libsaturn-tvOS.a */, - C6E1B66E25AAC123007C3CF1 /* libsaturn-iOS.a */, - B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */, - B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */, + B333502D207AFBA30036A448 /* libpsx.a */, + B3335062207AFD3D0036A448 /* libwonderswan.a */, + B3335092207AFF2B0036A448 /* libvirtualboy.a */, + B33350A5207AFFE80036A448 /* libnes.a */, + B3335190207B00F70036A448 /* libgb.a */, + B33351A4207B01460036A448 /* libgba.a */, + B33351B1207B01570036A448 /* liblynx.a */, + B33351BE207B016F0036A448 /* libneogeopocket.a */, + B33351CB207B01860036A448 /* libpce.a */, + B33351D8207B01970036A448 /* libpcefast.a */, + B33351E5207B01C60036A448 /* libsegamastersystem.a */, + B33351FC207B020C0036A448 /* libpcfx.a */, + B3335245207B02770036A448 /* libmegadrive.a */, + B33352A7207B06550036A448 /* libhwaudio.a */, + B33352B4207B06620036A448 /* libhwvideo.a */, + B33352C1207B06730036A448 /* libhwcpu.a */, + B33352CE207B067F0036A448 /* libhwmisc.a */, + B333546F207B1B500036A448 /* libcdrom.a */, + B3335493207B1BF30036A448 /* libsound.a */, + B33354B4207B1C520036A448 /* libvideo.a */, + B33354CB207B1D850036A448 /* libmednafen.a */, + B33355A2207B1E930036A448 /* libmpcdec.a */, + B33355B8207B20420036A448 /* libquicklz.a */, + B33355C7207B20BE0036A448 /* libtremor.a */, + B33355E4207B278E0036A448 /* libtrio.a */, + B3FBDEF8207FF0E300E661D1 /* libsnes.a */, + B3FBDF9F207FF5D800E661D1 /* libsnes_faust.a */, + C6E1B66E25AAC123007C3CF1 /* libsaturn.a */, + B393F251277C0BF70097F71C /* libhwcpu-m68k.a */, ); name = Products; sourceTree = ""; @@ -7662,6527 +6270,1995 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B340E46C1E08888700AD0E8B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B36CBFED2039819100728482 /* PVMednafen.h in Headers */, - B3223CDE1E09E0CB007BB244 /* MednafenGameCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B324C32221919BC6009F4EDC /* psx-tvOS */ = { + B333502C207AFBA30036A448 /* psx */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C33F21919BC6009F4EDC /* Build configuration list for PBXNativeTarget "psx-tvOS" */; + buildConfigurationList = B3335035207AFBA40036A448 /* Build configuration list for PBXNativeTarget "psx" */; buildPhases = ( - B324C32321919BC6009F4EDC /* Sources */, - B324C33D21919BC6009F4EDC /* Frameworks */, - B324C33E21919BC6009F4EDC /* CopyFiles */, + B3335029207AFBA30036A448 /* Sources */, + B333502A207AFBA30036A448 /* Frameworks */, + B333502B207AFBA30036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "psx-tvOS"; + name = psx; productName = psx; - productReference = B324C34221919BC6009F4EDC /* libpsx-tvOS.a */; + productReference = B333502D207AFBA30036A448 /* libpsx.a */; productType = "com.apple.product-type.library.static"; }; - B324C34421919C1C009F4EDC /* hwvideo-tvOS */ = { + B3335061207AFD3D0036A448 /* wonderswan */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C34921919C1C009F4EDC /* Build configuration list for PBXNativeTarget "hwvideo-tvOS" */; + buildConfigurationList = B3335068207AFD3D0036A448 /* Build configuration list for PBXNativeTarget "wonderswan" */; buildPhases = ( - B324C34521919C1C009F4EDC /* Sources */, - B324C34721919C1C009F4EDC /* Frameworks */, - B324C34821919C1C009F4EDC /* CopyFiles */, + B333505E207AFD3D0036A448 /* Sources */, + B333505F207AFD3D0036A448 /* Frameworks */, + B3335060207AFD3D0036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "hwvideo-tvOS"; - productName = hwvideo; - productReference = B324C34C21919C1C009F4EDC /* libhwvideo-tvOS.a */; + name = wonderswan; + productName = wonderswan; + productReference = B3335062207AFD3D0036A448 /* libwonderswan.a */; productType = "com.apple.product-type.library.static"; }; - B324C34E21919CD6009F4EDC /* nes-tvOS */ = { + B3335091207AFF2B0036A448 /* virtualboy */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C3D021919CD6009F4EDC /* Build configuration list for PBXNativeTarget "nes-tvOS" */; + buildConfigurationList = B3335098207AFF2C0036A448 /* Build configuration list for PBXNativeTarget "virtualboy" */; buildPhases = ( - B324C34F21919CD6009F4EDC /* Sources */, - B324C3CE21919CD6009F4EDC /* Frameworks */, - B324C3CF21919CD6009F4EDC /* CopyFiles */, + B333508E207AFF2B0036A448 /* Sources */, + B333508F207AFF2B0036A448 /* Frameworks */, + B3335090207AFF2B0036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "nes-tvOS"; - productName = nes; - productReference = B324C3D321919CD6009F4EDC /* libnes-tvOS.a */; + name = virtualboy; + productName = virtualboy; + productReference = B3335092207AFF2B0036A448 /* libvirtualboy.a */; productType = "com.apple.product-type.library.static"; }; - B324C3D521919D34009F4EDC /* megadrive-tvOS */ = { + B33350A4207AFFE80036A448 /* nes */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C3F721919D34009F4EDC /* Build configuration list for PBXNativeTarget "megadrive-tvOS" */; + buildConfigurationList = B33350AB207AFFE90036A448 /* Build configuration list for PBXNativeTarget "nes" */; buildPhases = ( - B324C3D621919D34009F4EDC /* Sources */, - B324C3F521919D34009F4EDC /* Frameworks */, - B324C3F621919D34009F4EDC /* CopyFiles */, + B33350A1207AFFE80036A448 /* Sources */, + B33350A2207AFFE80036A448 /* Frameworks */, + B33350A3207AFFE80036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "megadrive-tvOS"; - productName = megadrive; - productReference = B324C3FA21919D34009F4EDC /* libmegadrive-tvOS.a */; + name = nes; + productName = nes; + productReference = B33350A5207AFFE80036A448 /* libnes.a */; productType = "com.apple.product-type.library.static"; }; - B324C3FB21919D73009F4EDC /* mednafen-tvOS */ = { + B333518F207B00F70036A448 /* gb */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C42721919D73009F4EDC /* Build configuration list for PBXNativeTarget "mednafen-tvOS" */; + buildConfigurationList = B3335196207B00F80036A448 /* Build configuration list for PBXNativeTarget "gb" */; buildPhases = ( - B324C3FC21919D73009F4EDC /* Sources */, - B324C42521919D73009F4EDC /* Frameworks */, - B324C42621919D73009F4EDC /* CopyFiles */, + B333518C207B00F70036A448 /* Sources */, + B333518D207B00F70036A448 /* Frameworks */, + B333518E207B00F70036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "mednafen-tvOS"; - productName = mednafen; - productReference = B324C42A21919D73009F4EDC /* libmednafen-tvOS.a */; + name = gb; + productName = gb; + productReference = B3335190207B00F70036A448 /* libgb.a */; productType = "com.apple.product-type.library.static"; }; - B324C42C21919DC9009F4EDC /* snes-tvOS */ = { + B33351A3207B01460036A448 /* gba */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C4A721919DC9009F4EDC /* Build configuration list for PBXNativeTarget "snes-tvOS" */; + buildConfigurationList = B33351AA207B01470036A448 /* Build configuration list for PBXNativeTarget "gba" */; buildPhases = ( - B324C42D21919DC9009F4EDC /* Sources */, - B324C4A521919DC9009F4EDC /* Frameworks */, - B324C4A621919DC9009F4EDC /* CopyFiles */, + B33351A0207B01460036A448 /* Sources */, + B33351A1207B01460036A448 /* Frameworks */, + B33351A2207B01460036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "snes-tvOS"; - productName = snes; - productReference = B324C4AA21919DC9009F4EDC /* libsnes-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B324C4AC21919E72009F4EDC /* gba-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B324C4C221919E72009F4EDC /* Build configuration list for PBXNativeTarget "gba-tvOS" */; - buildPhases = ( - B324C4AD21919E72009F4EDC /* Sources */, - B324C4C021919E72009F4EDC /* Frameworks */, - B324C4C121919E72009F4EDC /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "gba-tvOS"; + name = gba; productName = gba; - productReference = B324C4C521919E72009F4EDC /* libgba-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B324C4C82191A1AC009F4EDC /* gb-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B324C4D22191A1AC009F4EDC /* Build configuration list for PBXNativeTarget "gb-tvOS" */; - buildPhases = ( - B324C4C92191A1AC009F4EDC /* Sources */, - B324C4D02191A1AC009F4EDC /* Frameworks */, - B324C4D12191A1AC009F4EDC /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "gb-tvOS"; - productName = gb; - productReference = B324C4D52191A1AC009F4EDC /* libgb-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B324C53C2191A8A5009F4EDC /* mpcdec-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B324C5482191A8A5009F4EDC /* Build configuration list for PBXNativeTarget "mpcdec-tvOS" */; - buildPhases = ( - B324C53D2191A8A5009F4EDC /* Sources */, - B324C5462191A8A5009F4EDC /* Frameworks */, - B324C5472191A8A5009F4EDC /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "mpcdec-tvOS"; - productName = mpcdec; - productReference = B324C54C2191A8A5009F4EDC /* libmpcdec-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B324C54E2191AAD1009F4EDC /* snes_faust-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B324C5582191AAD1009F4EDC /* Build configuration list for PBXNativeTarget "snes_faust-tvOS" */; - buildPhases = ( - B324C54F2191AAD1009F4EDC /* Sources */, - B324C5562191AAD1009F4EDC /* Frameworks */, - B324C5572191AAD1009F4EDC /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "snes_faust-tvOS"; - productName = snes_faust; - productReference = B324C55C2191AAD1009F4EDC /* libsnes_faust-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B324C55E2191AAFE009F4EDC /* trio-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B324C5652191AAFE009F4EDC /* Build configuration list for PBXNativeTarget "trio-tvOS" */; - buildPhases = ( - B324C55F2191AAFE009F4EDC /* Sources */, - B324C5632191AAFE009F4EDC /* Frameworks */, - B324C5642191AAFE009F4EDC /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "trio-tvOS"; - productName = trio; - productReference = B324C5692191AAFE009F4EDC /* libtrio-tvOS.a */; + productReference = B33351A4207B01460036A448 /* libgba.a */; productType = "com.apple.product-type.library.static"; }; - B324C56B2191AB34009F4EDC /* tremor-tvOS */ = { + B33351B0207B01570036A448 /* lynx */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C57E2191AB34009F4EDC /* Build configuration list for PBXNativeTarget "tremor-tvOS" */; + buildConfigurationList = B33351B7207B01570036A448 /* Build configuration list for PBXNativeTarget "lynx" */; buildPhases = ( - B324C56C2191AB34009F4EDC /* Sources */, - B324C57C2191AB34009F4EDC /* Frameworks */, - B324C57D2191AB34009F4EDC /* CopyFiles */, + B33351AD207B01570036A448 /* Sources */, + B33351AE207B01570036A448 /* Frameworks */, + B33351AF207B01570036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "tremor-tvOS"; - productName = tremor; - productReference = B324C5822191AB34009F4EDC /* libtremor-tvOS.a */; + name = lynx; + productName = lynx; + productReference = B33351B1207B01570036A448 /* liblynx.a */; productType = "com.apple.product-type.library.static"; }; - B324C5832191AB4E009F4EDC /* quicklz-tvOS */ = { + B33351BD207B016F0036A448 /* neogeopocket */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C5882191AB4E009F4EDC /* Build configuration list for PBXNativeTarget "quicklz-tvOS" */; + buildConfigurationList = B33351C4207B016F0036A448 /* Build configuration list for PBXNativeTarget "neogeopocket" */; buildPhases = ( - B324C5842191AB4E009F4EDC /* Sources */, - B324C5862191AB4E009F4EDC /* Frameworks */, - B324C5872191AB4E009F4EDC /* CopyFiles */, + B33351BA207B016F0036A448 /* Sources */, + B33351BB207B016F0036A448 /* Frameworks */, + B33351BC207B016F0036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "quicklz-tvOS"; - productName = quicklz; - productReference = B324C58C2191AB4E009F4EDC /* libquicklz-tvOS.a */; + name = neogeopocket; + productName = neogeopocket; + productReference = B33351BE207B016F0036A448 /* libneogeopocket.a */; productType = "com.apple.product-type.library.static"; }; - B324C58F2191AB9D009F4EDC /* video-tvOS */ = { + B33351CA207B01860036A448 /* pce */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C59C2191AB9D009F4EDC /* Build configuration list for PBXNativeTarget "video-tvOS" */; + buildConfigurationList = B33351D1207B01860036A448 /* Build configuration list for PBXNativeTarget "pce" */; buildPhases = ( - B324C5902191AB9D009F4EDC /* Sources */, - B324C59A2191AB9D009F4EDC /* Frameworks */, - B324C59B2191AB9D009F4EDC /* CopyFiles */, + B33351C7207B01860036A448 /* Sources */, + B33351C8207B01860036A448 /* Frameworks */, + B33351C9207B01860036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "video-tvOS"; - productName = video; - productReference = B324C5A02191AB9D009F4EDC /* libvideo-tvOS.a */; + name = pce; + productName = pce; + productReference = B33351CB207B01860036A448 /* libpce.a */; productType = "com.apple.product-type.library.static"; }; - B324C5A12191ABAD009F4EDC /* sound-tvOS */ = { + B33351D7207B01970036A448 /* pcefast */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C5AB2191ABAD009F4EDC /* Build configuration list for PBXNativeTarget "sound-tvOS" */; + buildConfigurationList = B33351DE207B01980036A448 /* Build configuration list for PBXNativeTarget "pcefast" */; buildPhases = ( - B324C5A22191ABAD009F4EDC /* Sources */, - B324C5A92191ABAD009F4EDC /* Frameworks */, - B324C5AA2191ABAD009F4EDC /* CopyFiles */, + B33351D4207B01970036A448 /* Sources */, + B33351D5207B01970036A448 /* Frameworks */, + B33351D6207B01970036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "sound-tvOS"; - productName = sound; - productReference = B324C5AF2191ABAD009F4EDC /* libsound-tvOS.a */; + name = pcefast; + productName = pcefast; + productReference = B33351D8207B01970036A448 /* libpcefast.a */; productType = "com.apple.product-type.library.static"; }; - B324C5B02191ABB7009F4EDC /* cdrom-tvOS */ = { + B33351E4207B01C60036A448 /* segamastersystem */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C5C22191ABB7009F4EDC /* Build configuration list for PBXNativeTarget "cdrom-tvOS" */; + buildConfigurationList = B33351EB207B01C60036A448 /* Build configuration list for PBXNativeTarget "segamastersystem" */; buildPhases = ( - B324C5B12191ABB7009F4EDC /* Sources */, - B324C5C02191ABB7009F4EDC /* Frameworks */, - B324C5C12191ABB7009F4EDC /* CopyFiles */, + B33351E1207B01C60036A448 /* Sources */, + B33351E2207B01C60036A448 /* Frameworks */, + B33351E3207B01C60036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "cdrom-tvOS"; - productName = cdrom; - productReference = B324C5C62191ABB7009F4EDC /* libcdrom-tvOS.a */; + name = segamastersystem; + productName = segamastersystem; + productReference = B33351E5207B01C60036A448 /* libsegamastersystem.a */; productType = "com.apple.product-type.library.static"; }; - B324C5CA2191ACE1009F4EDC /* pcfx-tvOS */ = { + B33351FB207B020C0036A448 /* pcfx */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C5DA2191ACE1009F4EDC /* Build configuration list for PBXNativeTarget "pcfx-tvOS" */; + buildConfigurationList = B3335202207B020D0036A448 /* Build configuration list for PBXNativeTarget "pcfx" */; buildPhases = ( - B324C5CB2191ACE1009F4EDC /* Sources */, - B324C5D82191ACE1009F4EDC /* Frameworks */, - B324C5D92191ACE1009F4EDC /* CopyFiles */, + B33351F8207B020C0036A448 /* Sources */, + B33351F9207B020C0036A448 /* Frameworks */, + B33351FA207B020C0036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "pcfx-tvOS"; + name = pcfx; productName = pcfx; - productReference = B324C5DE2191ACE1009F4EDC /* libpcfx-tvOS.a */; + productReference = B33351FC207B020C0036A448 /* libpcfx.a */; productType = "com.apple.product-type.library.static"; }; - B324C5E02191AD13009F4EDC /* wonderswan-tvOS */ = { + B3335244207B02770036A448 /* megadrive */ = { isa = PBXNativeTarget; - buildConfigurationList = B324C5EE2191AD13009F4EDC /* Build configuration list for PBXNativeTarget "wonderswan-tvOS" */; + buildConfigurationList = B333524B207B02780036A448 /* Build configuration list for PBXNativeTarget "megadrive" */; buildPhases = ( - B324C5E12191AD13009F4EDC /* Sources */, - B324C5EC2191AD13009F4EDC /* Frameworks */, - B324C5ED2191AD13009F4EDC /* CopyFiles */, + B3335241207B02770036A448 /* Sources */, + B3335242207B02770036A448 /* Frameworks */, + B3335243207B02770036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "wonderswan-tvOS"; - productName = wonderswan; - productReference = B324C5F22191AD13009F4EDC /* libwonderswan-tvOS.a */; + name = megadrive; + productName = megadrive; + productReference = B3335245207B02770036A448 /* libmegadrive.a */; productType = "com.apple.product-type.library.static"; }; - B32CF13721923EB40058E2E7 /* hwaudio-tvOS */ = { + B33352A6207B06550036A448 /* hwaudio */ = { isa = PBXNativeTarget; - buildConfigurationList = B32CF14221923EB40058E2E7 /* Build configuration list for PBXNativeTarget "hwaudio-tvOS" */; + buildConfigurationList = B33352AD207B06550036A448 /* Build configuration list for PBXNativeTarget "hwaudio" */; buildPhases = ( - B32CF13821923EB40058E2E7 /* Sources */, - B32CF14021923EB40058E2E7 /* Frameworks */, - B32CF14121923EB40058E2E7 /* CopyFiles */, + B33352A3207B06550036A448 /* Sources */, + B33352A4207B06550036A448 /* Frameworks */, + B33352A5207B06550036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "hwaudio-tvOS"; + name = hwaudio; productName = hwaudio; - productReference = B32CF14621923EB50058E2E7 /* libhwaudio-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B32CF14821923F330058E2E7 /* virtualboy-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B32CF15121923F330058E2E7 /* Build configuration list for PBXNativeTarget "virtualboy-tvOS" */; - buildPhases = ( - B32CF14921923F330058E2E7 /* Sources */, - B32CF14F21923F330058E2E7 /* Frameworks */, - B32CF15021923F330058E2E7 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "virtualboy-tvOS"; - productName = virtualboy; - productReference = B32CF15521923F330058E2E7 /* libvirtualboy-tvOS.a */; + productReference = B33352A7207B06550036A448 /* libhwaudio.a */; productType = "com.apple.product-type.library.static"; }; - B32CF15621923F520058E2E7 /* neogeopocket-tvOS */ = { + B33352B3207B06610036A448 /* hwvideo */ = { isa = PBXNativeTarget; - buildConfigurationList = B32CF17421923F520058E2E7 /* Build configuration list for PBXNativeTarget "neogeopocket-tvOS" */; + buildConfigurationList = B33352BA207B06620036A448 /* Build configuration list for PBXNativeTarget "hwvideo" */; buildPhases = ( - B32CF15721923F520058E2E7 /* Sources */, - B32CF17221923F520058E2E7 /* Frameworks */, - B32CF17321923F520058E2E7 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "neogeopocket-tvOS"; - productName = neogeopocket; - productReference = B32CF17821923F520058E2E7 /* libneogeopocket-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B32CF17921923F740058E2E7 /* lynx-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B32CF18521923F740058E2E7 /* Build configuration list for PBXNativeTarget "lynx-tvOS" */; - buildPhases = ( - B32CF17A21923F740058E2E7 /* Sources */, - B32CF18321923F740058E2E7 /* Frameworks */, - B32CF18421923F740058E2E7 /* CopyFiles */, + B33352B0207B06610036A448 /* Sources */, + B33352B1207B06610036A448 /* Frameworks */, + B33352B2207B06610036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "lynx-tvOS"; - productName = lynx; - productReference = B32CF18921923F740058E2E7 /* liblynx-tvOS.a */; + name = hwvideo; + productName = hwvideo; + productReference = B33352B4207B06620036A448 /* libhwvideo.a */; productType = "com.apple.product-type.library.static"; }; - B32CF18A21923F790058E2E7 /* pce-tvOS */ = { + B33352C0207B06730036A448 /* hwcpu */ = { isa = PBXNativeTarget; - buildConfigurationList = B32CF19B21923F790058E2E7 /* Build configuration list for PBXNativeTarget "pce-tvOS" */; + buildConfigurationList = B33352C7207B06740036A448 /* Build configuration list for PBXNativeTarget "hwcpu" */; buildPhases = ( - B32CF18B21923F790058E2E7 /* Sources */, - B32CF19921923F790058E2E7 /* Frameworks */, - B32CF19A21923F790058E2E7 /* CopyFiles */, + B33352BD207B06730036A448 /* Sources */, + B33352BE207B06730036A448 /* Frameworks */, + B33352BF207B06730036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( + B31737FE2783F8AF002D3ACD /* PBXTargetDependency */, ); - name = "pce-tvOS"; - productName = pce; - productReference = B32CF19F21923F790058E2E7 /* libpce-tvOS.a */; + name = hwcpu; + productName = hwcpu; + productReference = B33352C1207B06730036A448 /* libhwcpu.a */; productType = "com.apple.product-type.library.static"; }; - B32CF1A021923F7F0058E2E7 /* pcefast-tvOS */ = { + B33352CD207B067F0036A448 /* hwmisc */ = { isa = PBXNativeTarget; - buildConfigurationList = B32CF1AD21923F7F0058E2E7 /* Build configuration list for PBXNativeTarget "pcefast-tvOS" */; + buildConfigurationList = B33352D4207B067F0036A448 /* Build configuration list for PBXNativeTarget "hwmisc" */; buildPhases = ( - B32CF1A121923F7F0058E2E7 /* Sources */, - B32CF1AB21923F7F0058E2E7 /* Frameworks */, - B32CF1AC21923F7F0058E2E7 /* CopyFiles */, + B33352CA207B067F0036A448 /* Sources */, + B33352CB207B067F0036A448 /* Frameworks */, + B33352CC207B067F0036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "pcefast-tvOS"; - productName = pcefast; - productReference = B32CF1B121923F7F0058E2E7 /* libpcefast-tvOS.a */; + name = hwmisc; + productName = hwmisc; + productReference = B33352CE207B067F0036A448 /* libhwmisc.a */; productType = "com.apple.product-type.library.static"; }; - B32CF1B221923F850058E2E7 /* segamastersystem-tvOS */ = { + B333546E207B1B500036A448 /* cdrom */ = { isa = PBXNativeTarget; - buildConfigurationList = B32CF1C021923F850058E2E7 /* Build configuration list for PBXNativeTarget "segamastersystem-tvOS" */; + buildConfigurationList = B3335477207B1B500036A448 /* Build configuration list for PBXNativeTarget "cdrom" */; buildPhases = ( - B32CF1B321923F850058E2E7 /* Sources */, - B32CF1BE21923F850058E2E7 /* Frameworks */, - B32CF1BF21923F850058E2E7 /* CopyFiles */, + B333546B207B1B500036A448 /* Sources */, + B333546C207B1B500036A448 /* Frameworks */, + B333546D207B1B500036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "segamastersystem-tvOS"; - productName = segamastersystem; - productReference = B32CF1C421923F850058E2E7 /* libsegamastersystem-tvOS.a */; + name = cdrom; + productName = cdrom; + productReference = B333546F207B1B500036A448 /* libcdrom.a */; productType = "com.apple.product-type.library.static"; }; - B32CF1C5219240270058E2E7 /* hwmisc-tvOS */ = { + B3335492207B1BF30036A448 /* sound */ = { isa = PBXNativeTarget; - buildConfigurationList = B32CF1CA219240270058E2E7 /* Build configuration list for PBXNativeTarget "hwmisc-tvOS" */; + buildConfigurationList = B3335499207B1BF40036A448 /* Build configuration list for PBXNativeTarget "sound" */; buildPhases = ( - B32CF1C6219240270058E2E7 /* Sources */, - B32CF1C8219240270058E2E7 /* Frameworks */, - B32CF1C9219240270058E2E7 /* CopyFiles */, + B333548F207B1BF30036A448 /* Sources */, + B3335490207B1BF30036A448 /* Frameworks */, + B3335491207B1BF30036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "hwmisc-tvOS"; - productName = hwmisc; - productReference = B32CF1CE219240270058E2E7 /* libhwmisc-tvOS.a */; + name = sound; + productName = sound; + productReference = B3335493207B1BF30036A448 /* libsound.a */; productType = "com.apple.product-type.library.static"; }; - B333502C207AFBA30036A448 /* psx-iOS */ = { + B33354B3207B1C520036A448 /* video */ = { isa = PBXNativeTarget; - buildConfigurationList = B3335035207AFBA40036A448 /* Build configuration list for PBXNativeTarget "psx-iOS" */; + buildConfigurationList = B33354BA207B1C520036A448 /* Build configuration list for PBXNativeTarget "video" */; buildPhases = ( - B3335029207AFBA30036A448 /* Sources */, - B333502A207AFBA30036A448 /* Frameworks */, - B333502B207AFBA30036A448 /* CopyFiles */, + B33354B0207B1C520036A448 /* Sources */, + B33354B1207B1C520036A448 /* Frameworks */, + B33354B2207B1C520036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "psx-iOS"; - productName = psx; - productReference = B333502D207AFBA30036A448 /* libpsx-iOS.a */; + name = video; + productName = video; + productReference = B33354B4207B1C520036A448 /* libvideo.a */; productType = "com.apple.product-type.library.static"; }; - B3335061207AFD3D0036A448 /* wonderswan-iOS */ = { + B33354CA207B1D850036A448 /* mednafen */ = { isa = PBXNativeTarget; - buildConfigurationList = B3335068207AFD3D0036A448 /* Build configuration list for PBXNativeTarget "wonderswan-iOS" */; + buildConfigurationList = B33354D1207B1D860036A448 /* Build configuration list for PBXNativeTarget "mednafen" */; buildPhases = ( - B333505E207AFD3D0036A448 /* Sources */, - B333505F207AFD3D0036A448 /* Frameworks */, - B3335060207AFD3D0036A448 /* CopyFiles */, + B33354C7207B1D850036A448 /* Sources */, + B33354C8207B1D850036A448 /* Frameworks */, + B33354C9207B1D850036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "wonderswan-iOS"; - productName = wonderswan; - productReference = B3335062207AFD3D0036A448 /* libwonderswan-iOS.a */; + name = mednafen; + productName = mednafen; + productReference = B33354CB207B1D850036A448 /* libmednafen.a */; productType = "com.apple.product-type.library.static"; }; - B3335091207AFF2B0036A448 /* virtualboy-iOS */ = { + B33355A1207B1E930036A448 /* mpcdec */ = { isa = PBXNativeTarget; - buildConfigurationList = B3335098207AFF2C0036A448 /* Build configuration list for PBXNativeTarget "virtualboy-iOS" */; + buildConfigurationList = B33355A8207B1E930036A448 /* Build configuration list for PBXNativeTarget "mpcdec" */; buildPhases = ( - B333508E207AFF2B0036A448 /* Sources */, - B333508F207AFF2B0036A448 /* Frameworks */, - B3335090207AFF2B0036A448 /* CopyFiles */, + B333559E207B1E930036A448 /* Sources */, + B333559F207B1E930036A448 /* Frameworks */, + B33355A0207B1E930036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "virtualboy-iOS"; - productName = virtualboy; - productReference = B3335092207AFF2B0036A448 /* libvirtualboy-iOS.a */; + name = mpcdec; + productName = mpcdec; + productReference = B33355A2207B1E930036A448 /* libmpcdec.a */; productType = "com.apple.product-type.library.static"; }; - B33350A4207AFFE80036A448 /* nes-iOS */ = { + B33355B7207B20420036A448 /* quicklz */ = { isa = PBXNativeTarget; - buildConfigurationList = B33350AB207AFFE90036A448 /* Build configuration list for PBXNativeTarget "nes-iOS" */; + buildConfigurationList = B33355BE207B20420036A448 /* Build configuration list for PBXNativeTarget "quicklz" */; buildPhases = ( - B33350A1207AFFE80036A448 /* Sources */, - B33350A2207AFFE80036A448 /* Frameworks */, - B33350A3207AFFE80036A448 /* CopyFiles */, + B33355B4207B20420036A448 /* Sources */, + B33355B5207B20420036A448 /* Frameworks */, + B33355B6207B20420036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "nes-iOS"; - productName = nes; - productReference = B33350A5207AFFE80036A448 /* libnes-iOS.a */; + name = quicklz; + productName = quicklz; + productReference = B33355B8207B20420036A448 /* libquicklz.a */; productType = "com.apple.product-type.library.static"; }; - B333518F207B00F70036A448 /* gb-iOS */ = { + B33355C6207B20BE0036A448 /* tremor */ = { isa = PBXNativeTarget; - buildConfigurationList = B3335196207B00F80036A448 /* Build configuration list for PBXNativeTarget "gb-iOS" */; + buildConfigurationList = B33355CD207B20BF0036A448 /* Build configuration list for PBXNativeTarget "tremor" */; buildPhases = ( - B333518C207B00F70036A448 /* Sources */, - B333518D207B00F70036A448 /* Frameworks */, - B333518E207B00F70036A448 /* CopyFiles */, + B33355C3207B20BE0036A448 /* Sources */, + B33355C4207B20BE0036A448 /* Frameworks */, + B33355C5207B20BE0036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "gb-iOS"; - productName = gb; - productReference = B3335190207B00F70036A448 /* libgb-iOS.a */; + name = tremor; + productName = tremor; + productReference = B33355C7207B20BE0036A448 /* libtremor.a */; productType = "com.apple.product-type.library.static"; }; - B33351A3207B01460036A448 /* gba-iOS */ = { + B33355E3207B278E0036A448 /* trio */ = { isa = PBXNativeTarget; - buildConfigurationList = B33351AA207B01470036A448 /* Build configuration list for PBXNativeTarget "gba-iOS" */; + buildConfigurationList = B33355EA207B278F0036A448 /* Build configuration list for PBXNativeTarget "trio" */; buildPhases = ( - B33351A0207B01460036A448 /* Sources */, - B33351A1207B01460036A448 /* Frameworks */, - B33351A2207B01460036A448 /* CopyFiles */, + B33355E0207B278E0036A448 /* Sources */, + B33355E1207B278E0036A448 /* Frameworks */, + B33355E2207B278E0036A448 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "gba-iOS"; - productName = gba; - productReference = B33351A4207B01460036A448 /* libgba-iOS.a */; + name = trio; + productName = trio; + productReference = B33355E4207B278E0036A448 /* libtrio.a */; productType = "com.apple.product-type.library.static"; }; - B33351B0207B01570036A448 /* lynx-iOS */ = { + B340E4611E08887600AD0E8B /* PVMednafen */ = { isa = PBXNativeTarget; - buildConfigurationList = B33351B7207B01570036A448 /* Build configuration list for PBXNativeTarget "lynx-iOS" */; + buildConfigurationList = B340E4671E08887700AD0E8B /* Build configuration list for PBXNativeTarget "PVMednafen" */; buildPhases = ( - B33351AD207B01570036A448 /* Sources */, - B33351AE207B01570036A448 /* Frameworks */, - B33351AF207B01570036A448 /* CopyFiles */, + B340E45F1E08887600AD0E8B /* Headers */, + B340E45D1E08887600AD0E8B /* Sources */, + B340E45E1E08887600AD0E8B /* Frameworks */, + B340E4601E08887600AD0E8B /* Resources */, ); buildRules = ( ); dependencies = ( + C6E1B69125AAC1D5007C3CF1 /* PBXTargetDependency */, + B34AB5882106DF8400C45F09 /* PBXTargetDependency */, + B34AB58A2106DF8400C45F09 /* PBXTargetDependency */, + B34AB58C2106DF8400C45F09 /* PBXTargetDependency */, + B34AB58E2106DF8400C45F09 /* PBXTargetDependency */, + B34AB5902106DF8400C45F09 /* PBXTargetDependency */, + B34AB5922106DF8400C45F09 /* PBXTargetDependency */, + B34AB5942106DF8400C45F09 /* PBXTargetDependency */, + B34AB5962106DF8400C45F09 /* PBXTargetDependency */, + B34AB5982106DF8400C45F09 /* PBXTargetDependency */, + B34AB59A2106DF8400C45F09 /* PBXTargetDependency */, + B34AB59C2106DF8400C45F09 /* PBXTargetDependency */, + B34AB59E2106DF8400C45F09 /* PBXTargetDependency */, + B34AB5A22106DF8400C45F09 /* PBXTargetDependency */, + B34AB5A42106DF8400C45F09 /* PBXTargetDependency */, + B34AB5A62106DF8400C45F09 /* PBXTargetDependency */, + B34AB5A82106DF8400C45F09 /* PBXTargetDependency */, + B34AB5AA2106DF8400C45F09 /* PBXTargetDependency */, + B34AB5AC2106DF8400C45F09 /* PBXTargetDependency */, + B34AB5AE2106DF8400C45F09 /* PBXTargetDependency */, + B34AB5B02106DF8400C45F09 /* PBXTargetDependency */, + B34AB5B22106DF8400C45F09 /* PBXTargetDependency */, + B34AB5B42106DF8400C45F09 /* PBXTargetDependency */, + B34AB5B62106DF8400C45F09 /* PBXTargetDependency */, + B34AB5B82106DF8400C45F09 /* PBXTargetDependency */, + B34AB5BA2106DF8400C45F09 /* PBXTargetDependency */, + B34AB5BC2106DF8400C45F09 /* PBXTargetDependency */, + C6E1B69725AAC5A3007C3CF1 /* PBXTargetDependency */, ); - name = "lynx-iOS"; - productName = lynx; - productReference = B33351B1207B01570036A448 /* liblynx-iOS.a */; - productType = "com.apple.product-type.library.static"; + name = PVMednafen; + productName = PVMednafen; + productReference = B340E4621E08887600AD0E8B /* PVMednafen.framework */; + productType = "com.apple.product-type.framework"; }; - B33351BD207B016F0036A448 /* neogeopocket-iOS */ = { + B393F245277C0BF70097F71C /* hwcpu-m68k */ = { isa = PBXNativeTarget; - buildConfigurationList = B33351C4207B016F0036A448 /* Build configuration list for PBXNativeTarget "neogeopocket-iOS" */; + buildConfigurationList = B393F24D277C0BF70097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k" */; buildPhases = ( - B33351BA207B016F0036A448 /* Sources */, - B33351BB207B016F0036A448 /* Frameworks */, - B33351BC207B016F0036A448 /* CopyFiles */, + B393F246277C0BF70097F71C /* Sources */, + B393F24B277C0BF70097F71C /* Frameworks */, + B393F24C277C0BF70097F71C /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "neogeopocket-iOS"; - productName = neogeopocket; - productReference = B33351BE207B016F0036A448 /* libneogeopocket-iOS.a */; + name = "hwcpu-m68k"; + productName = hwcpu; + productReference = B393F251277C0BF70097F71C /* libhwcpu-m68k.a */; productType = "com.apple.product-type.library.static"; }; - B33351CA207B01860036A448 /* pce-iOS */ = { + B3FBDEF7207FF0E300E661D1 /* snes */ = { isa = PBXNativeTarget; - buildConfigurationList = B33351D1207B01860036A448 /* Build configuration list for PBXNativeTarget "pce-iOS" */; + buildConfigurationList = B3FBDF00207FF0E400E661D1 /* Build configuration list for PBXNativeTarget "snes" */; buildPhases = ( - B33351C7207B01860036A448 /* Sources */, - B33351C8207B01860036A448 /* Frameworks */, - B33351C9207B01860036A448 /* CopyFiles */, + B3FBDEF4207FF0E300E661D1 /* Sources */, + B3FBDEF5207FF0E300E661D1 /* Frameworks */, + B3FBDEF6207FF0E300E661D1 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "pce-iOS"; - productName = pce; - productReference = B33351CB207B01860036A448 /* libpce-iOS.a */; + name = snes; + productName = snes; + productReference = B3FBDEF8207FF0E300E661D1 /* libsnes.a */; productType = "com.apple.product-type.library.static"; }; - B33351D7207B01970036A448 /* pcefast-iOS */ = { + B3FBDF9E207FF5D800E661D1 /* snes_faust */ = { isa = PBXNativeTarget; - buildConfigurationList = B33351DE207B01980036A448 /* Build configuration list for PBXNativeTarget "pcefast-iOS" */; + buildConfigurationList = B3FBDFA5207FF5D900E661D1 /* Build configuration list for PBXNativeTarget "snes_faust" */; buildPhases = ( - B33351D4207B01970036A448 /* Sources */, - B33351D5207B01970036A448 /* Frameworks */, - B33351D6207B01970036A448 /* CopyFiles */, + B3FBDF9B207FF5D800E661D1 /* Sources */, + B3FBDF9C207FF5D800E661D1 /* Frameworks */, + B3FBDF9D207FF5D800E661D1 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "pcefast-iOS"; - productName = pcefast; - productReference = B33351D8207B01970036A448 /* libpcefast-iOS.a */; + name = snes_faust; + productName = snes_faust; + productReference = B3FBDF9F207FF5D800E661D1 /* libsnes_faust.a */; productType = "com.apple.product-type.library.static"; }; - B33351E4207B01C60036A448 /* segamastersystem-iOS */ = { + C6E1B65325AAC123007C3CF1 /* saturn */ = { isa = PBXNativeTarget; - buildConfigurationList = B33351EB207B01C60036A448 /* Build configuration list for PBXNativeTarget "segamastersystem-iOS" */; + buildConfigurationList = C6E1B66A25AAC123007C3CF1 /* Build configuration list for PBXNativeTarget "saturn" */; buildPhases = ( - B33351E1207B01C60036A448 /* Sources */, - B33351E2207B01C60036A448 /* Frameworks */, - B33351E3207B01C60036A448 /* CopyFiles */, + C6E1B65425AAC123007C3CF1 /* Sources */, + C6E1B66825AAC123007C3CF1 /* Frameworks */, + C6E1B66925AAC123007C3CF1 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = "segamastersystem-iOS"; - productName = segamastersystem; - productReference = B33351E5207B01C60036A448 /* libsegamastersystem-iOS.a */; + name = saturn; + productName = snes_faust; + productReference = C6E1B66E25AAC123007C3CF1 /* libsaturn.a */; productType = "com.apple.product-type.library.static"; }; - B33351FB207B020C0036A448 /* pcfx-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3335202207B020D0036A448 /* Build configuration list for PBXNativeTarget "pcfx-iOS" */; - buildPhases = ( - B33351F8207B020C0036A448 /* Sources */, - B33351F9207B020C0036A448 /* Frameworks */, - B33351FA207B020C0036A448 /* CopyFiles */, - ); - buildRules = ( +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastSwiftUpdateCheck = 1160; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B333502C207AFBA30036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3335061207AFD3D0036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3335091207AFF2B0036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33350A4207AFFE80036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B333518F207B00F70036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33351A3207B01460036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33351B0207B01570036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33351BD207B016F0036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33351CA207B01860036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33351D7207B01970036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33351E4207B01C60036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33351FB207B020C0036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3335244207B02770036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33352A6207B06550036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33352B3207B06610036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33352C0207B06730036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33352CD207B067F0036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B333546E207B1B500036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3335492207B1BF30036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33354B3207B1C520036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33354CA207B1D850036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33355A1207B1E930036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33355B7207B20420036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33355C6207B20BE0036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B33355E3207B278E0036A448 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B340E4611E08887600AD0E8B = { + CreatedOnToolsVersion = 8.1; + LastSwiftMigration = 1020; + }; + B3FBDEF7207FF0E300E661D1 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3FBDF9E207FF5D800E661D1 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVMednafen" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 1; + knownRegions = ( + en, + Base, ); - dependencies = ( + mainGroup = 089C166AFE841209C02AAC07 /* Mednafen */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B340E4611E08887600AD0E8B /* PVMednafen */, + B333502C207AFBA30036A448 /* psx */, + B3335061207AFD3D0036A448 /* wonderswan */, + B3335091207AFF2B0036A448 /* virtualboy */, + B33350A4207AFFE80036A448 /* nes */, + B333518F207B00F70036A448 /* gb */, + B33351A3207B01460036A448 /* gba */, + B33351B0207B01570036A448 /* lynx */, + B33351BD207B016F0036A448 /* neogeopocket */, + B33351CA207B01860036A448 /* pce */, + B33351D7207B01970036A448 /* pcefast */, + B33351E4207B01C60036A448 /* segamastersystem */, + B33351FB207B020C0036A448 /* pcfx */, + B3335244207B02770036A448 /* megadrive */, + B33352A6207B06550036A448 /* hwaudio */, + B33352B3207B06610036A448 /* hwvideo */, + B33352C0207B06730036A448 /* hwcpu */, + B393F245277C0BF70097F71C /* hwcpu-m68k */, + B33352CD207B067F0036A448 /* hwmisc */, + B333546E207B1B500036A448 /* cdrom */, + B3335492207B1BF30036A448 /* sound */, + B33354B3207B1C520036A448 /* video */, + B33354CA207B1D850036A448 /* mednafen */, + B33355A1207B1E930036A448 /* mpcdec */, + B33355B7207B20420036A448 /* quicklz */, + B33355C6207B20BE0036A448 /* tremor */, + B33355E3207B278E0036A448 /* trio */, + B3FBDEF7207FF0E300E661D1 /* snes */, + B3FBDF9E207FF5D800E661D1 /* snes_faust */, + C6E1B65325AAC123007C3CF1 /* saturn */, ); - name = "pcfx-iOS"; - productName = pcfx; - productReference = B33351FC207B020C0036A448 /* libpcfx-iOS.a */; - productType = "com.apple.product-type.library.static"; }; - B3335244207B02770036A448 /* megadrive-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B333524B207B02780036A448 /* Build configuration list for PBXNativeTarget "megadrive-iOS" */; - buildPhases = ( - B3335241207B02770036A448 /* Sources */, - B3335242207B02770036A448 /* Frameworks */, - B3335243207B02770036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B340E4601E08887600AD0E8B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3547B60205858EF00CFF7D8 /* Core.plist in Resources */, ); - name = "megadrive-iOS"; - productName = megadrive; - productReference = B3335245207B02770036A448 /* libmegadrive-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33352A6207B06550036A448 /* hwaudio-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33352AD207B06550036A448 /* Build configuration list for PBXNativeTarget "hwaudio-iOS" */; - buildPhases = ( - B33352A3207B06550036A448 /* Sources */, - B33352A4207B06550036A448 /* Frameworks */, - B33352A5207B06550036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B3335029207AFBA30036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B333503F207AFBDE0036A448 /* gte.cpp in Sources */, + B333503C207AFBDE0036A448 /* gpu_polygon.cpp in Sources */, + B3335041207AFBDE0036A448 /* mdec.cpp in Sources */, + B3335046207AFBE70036A448 /* dualanalog.cpp in Sources */, + B3335043207AFBDE0036A448 /* sio.cpp in Sources */, + B333504B207AFBE70036A448 /* memcard.cpp in Sources */, + B3335049207AFBE70036A448 /* guncon.cpp in Sources */, + B333503D207AFBDE0036A448 /* gpu_sprite.cpp in Sources */, + B3335042207AFBDE0036A448 /* psx.cpp in Sources */, + B3335038207AFBDE0036A448 /* dis.cpp in Sources */, + B3335037207AFBDE0036A448 /* cpu.cpp in Sources */, + B3335040207AFBDE0036A448 /* irq.cpp in Sources */, + B3335047207AFBE70036A448 /* dualshock.cpp in Sources */, + B3335044207AFBDE0036A448 /* spu.cpp in Sources */, + B3335039207AFBDE0036A448 /* dma.cpp in Sources */, + B3335045207AFBDE0036A448 /* timer.cpp in Sources */, + B333503A207AFBDE0036A448 /* frontio.cpp in Sources */, + B333503E207AFBDE0036A448 /* gpu.cpp in Sources */, + B3335048207AFBE70036A448 /* gamepad.cpp in Sources */, + B333504A207AFBE70036A448 /* justifier.cpp in Sources */, + B333503B207AFBDE0036A448 /* gpu_line.cpp in Sources */, + B333504E207AFBE70036A448 /* negcon.cpp in Sources */, + B333504D207AFBE70036A448 /* multitap.cpp in Sources */, + B333504C207AFBE70036A448 /* mouse.cpp in Sources */, + B3335036207AFBDE0036A448 /* cdc.cpp in Sources */, ); - name = "hwaudio-iOS"; - productName = hwaudio; - productReference = B33352A7207B06550036A448 /* libhwaudio-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33352B3207B06610036A448 /* hwvideo-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33352BA207B06620036A448 /* Build configuration list for PBXNativeTarget "hwvideo-iOS" */; - buildPhases = ( - B33352B0207B06610036A448 /* Sources */, - B33352B1207B06610036A448 /* Frameworks */, - B33352B2207B06610036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B333505E207AFD3D0036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3335074207AFD8B0036A448 /* v30mz.cpp in Sources */, + B333506D207AFD8B0036A448 /* gfx.cpp in Sources */, + B333506B207AFD8B0036A448 /* comm.cpp in Sources */, + B3335070207AFD8B0036A448 /* memory.cpp in Sources */, + B3335072207AFD8B0036A448 /* sound.cpp in Sources */, + B333506C207AFD8B0036A448 /* eeprom.cpp in Sources */, + B333506F207AFD8B0036A448 /* main.cpp in Sources */, + B3335073207AFD8B0036A448 /* tcache.cpp in Sources */, + B333506E207AFD8B0036A448 /* interrupt.cpp in Sources */, + B3335071207AFD8B0036A448 /* rtc.cpp in Sources */, ); - name = "hwvideo-iOS"; - productName = hwvideo; - productReference = B33352B4207B06620036A448 /* libhwvideo-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33352C0207B06730036A448 /* hwcpu-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33352C7207B06740036A448 /* Build configuration list for PBXNativeTarget "hwcpu-iOS" */; - buildPhases = ( - B33352BD207B06730036A448 /* Sources */, - B33352BE207B06730036A448 /* Frameworks */, - B33352BF207B06730036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - B31737FE2783F8AF002D3ACD /* PBXTargetDependency */, + B333508E207AFF2B0036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33350A0207AFF560036A448 /* vsu.cpp in Sources */, + B333509B207AFF350036A448 /* input.cpp in Sources */, + B333509F207AFF560036A448 /* vip.cpp in Sources */, + B333509D207AFF560036A448 /* timer.cpp in Sources */, + B333509E207AFF560036A448 /* vb.cpp in Sources */, ); - name = "hwcpu-iOS"; - productName = hwcpu; - productReference = B33352C1207B06730036A448 /* libhwcpu-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33352CD207B067F0036A448 /* hwmisc-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33352D4207B067F0036A448 /* Build configuration list for PBXNativeTarget "hwmisc-iOS" */; - buildPhases = ( - B33352CA207B067F0036A448 /* Sources */, - B33352CB207B067F0036A448 /* Frameworks */, - B33352CC207B067F0036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33350A1207AFFE80036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B333514D207B00A30036A448 /* 88.cpp in Sources */, + B3335140207B00A30036A448 /* 67.cpp in Sources */, + B3335173207B00A30036A448 /* 248.cpp in Sources */, + B3335133207B00A30036A448 /* 23.cpp in Sources */, + B3335142207B00A30036A448 /* 70.cpp in Sources */, + B333512D207B00A30036A448 /* 8.cpp in Sources */, + B333514F207B00A30036A448 /* 90.cpp in Sources */, + B3335132207B00A30036A448 /* 22.cpp in Sources */, + B333514E207B00A30036A448 /* 89.cpp in Sources */, + B3335141207B00A30036A448 /* 68.cpp in Sources */, + B333518B207B00A30036A448 /* vrc7.cpp in Sources */, + B3335147207B00A30036A448 /* 77.cpp in Sources */, + B3335165207B00A30036A448 /* 187.cpp in Sources */, + B3335137207B00A30036A448 /* 33.cpp in Sources */, + B333516A207B00A30036A448 /* 222.cpp in Sources */, + B33350C1207B00360036A448 /* bbattler2.cpp in Sources */, + B3335158207B00A30036A448 /* 112.cpp in Sources */, + B333516C207B00A30036A448 /* 232.cpp in Sources */, + B3335180207B00A30036A448 /* mmc3.cpp in Sources */, + B3335139207B00A30036A448 /* 38.cpp in Sources */, + B3335169207B00A30036A448 /* 208.cpp in Sources */, + B3335177207B00A30036A448 /* deirom.cpp in Sources */, + B33350B8207B00150036A448 /* nsfe.cpp in Sources */, + B3335146207B00A30036A448 /* 76.cpp in Sources */, + B33350C4207B00360036A448 /* ftrainer.cpp in Sources */, + B333514A207B00A30036A448 /* 82.cpp in Sources */, + B33350CC207B00360036A448 /* toprider.cpp in Sources */, + B33350BE207B001D0036A448 /* ppu.cpp in Sources */, + B3335168207B00A30036A448 /* 193.cpp in Sources */, + B333515E207B00A30036A448 /* 152.cpp in Sources */, + B3335151207B00A30036A448 /* 93.cpp in Sources */, + B3335178207B00A30036A448 /* emu2413.cpp in Sources */, + B3335152207B00A30036A448 /* 94.cpp in Sources */, + B3335135207B00A30036A448 /* 30.cpp in Sources */, + B3335154207B00A30036A448 /* 96.cpp in Sources */, + B333516F207B00A30036A448 /* 241.cpp in Sources */, + B333515F207B00A30036A448 /* 156.cpp in Sources */, + B33350C8207B00360036A448 /* partytap.cpp in Sources */, + B33350BF207B002A0036A448 /* nes_ntsc.cpp in Sources */, + B3335150207B00A30036A448 /* 92.cpp in Sources */, + B3335166207B00A30036A448 /* 189.cpp in Sources */, + B3335174207B00A30036A448 /* 8237.cpp in Sources */, + B33350B6207B00150036A448 /* nes.cpp in Sources */, + B3335156207B00A30036A448 /* 99.cpp in Sources */, + B333517D207B00A30036A448 /* maxicart.cpp in Sources */, + B33350B4207B00150036A448 /* ines.cpp in Sources */, + B3335185207B00A30036A448 /* sachen.cpp in Sources */, + B3335145207B00A30036A448 /* 75.cpp in Sources */, + B33350CB207B00360036A448 /* suborkb.cpp in Sources */, + B3335159207B00A30036A448 /* 113.cpp in Sources */, + B33350C7207B00360036A448 /* oekakids.cpp in Sources */, + B333517B207B00A30036A448 /* h2288.cpp in Sources */, + B33350C2207B00360036A448 /* cursor.cpp in Sources */, + B3335176207B00A30036A448 /* colordreams.cpp in Sources */, + B3335164207B00A30036A448 /* 185.cpp in Sources */, + B333513A207B00A30036A448 /* 40.cpp in Sources */, + B3335131207B00A30036A448 /* 21.cpp in Sources */, + B3335181207B00A30036A448 /* mmc5.cpp in Sources */, + B33350CD207B00360036A448 /* zapper.cpp in Sources */, + B3335144207B00A30036A448 /* 73.cpp in Sources */, + B333515B207B00A30036A448 /* 117.cpp in Sources */, + B3335162207B00A30036A448 /* 182.cpp in Sources */, + B333512F207B00A30036A448 /* 16.cpp in Sources */, + B3335183207B00A30036A448 /* nina06.cpp in Sources */, + B333517A207B00A30036A448 /* fme7.cpp in Sources */, + B3335148207B00A30036A448 /* 78.cpp in Sources */, + B33350B7207B00150036A448 /* nsf.cpp in Sources */, + B33350BB207B00150036A448 /* vsuni.cpp in Sources */, + B333513E207B00A30036A448 /* 51.cpp in Sources */, + B333516D207B00A30036A448 /* 234.cpp in Sources */, + B333512E207B00A30036A448 /* 15.cpp in Sources */, + B333514B207B00A30036A448 /* 86.cpp in Sources */, + B333513D207B00A30036A448 /* 46.cpp in Sources */, + B333514C207B00A30036A448 /* 87.cpp in Sources */, + B333516B207B00A30036A448 /* 228.cpp in Sources */, + B33350B5207B00150036A448 /* input.cpp in Sources */, + B3335182207B00A30036A448 /* n106.cpp in Sources */, + B333515D207B00A30036A448 /* 151.cpp in Sources */, + B3335171207B00A30036A448 /* 244.cpp in Sources */, + B3335188207B00A30036A448 /* supervision.cpp in Sources */, + B33350C5207B00360036A448 /* hypershot.cpp in Sources */, + B3335138207B00A30036A448 /* 34.cpp in Sources */, + B3335153207B00A30036A448 /* 95.cpp in Sources */, + B333515A207B00A30036A448 /* 114.cpp in Sources */, + B333517C207B00A30036A448 /* malee.cpp in Sources */, + B33350B9207B00150036A448 /* sound.cpp in Sources */, + B33350BA207B00150036A448 /* unif.cpp in Sources */, + B3335130207B00A30036A448 /* 18.cpp in Sources */, + B33350C0207B00360036A448 /* arkanoid.cpp in Sources */, + B3335186207B00A30036A448 /* simple.cpp in Sources */, + B33350C9207B00360036A448 /* powerpad.cpp in Sources */, + B333518A207B00A30036A448 /* vrc6.cpp in Sources */, + B3335161207B00A30036A448 /* 180.cpp in Sources */, + B3335170207B00A30036A448 /* 242.cpp in Sources */, + B3335172207B00A30036A448 /* 246.cpp in Sources */, + B3335134207B00A30036A448 /* 25.cpp in Sources */, + B333517E207B00A30036A448 /* mmc1.cpp in Sources */, + B333513B207B00A30036A448 /* 41.cpp in Sources */, + B3335155207B00A30036A448 /* 97.cpp in Sources */, + B3335163207B00A30036A448 /* 184.cpp in Sources */, + B3335167207B00A30036A448 /* 190.cpp in Sources */, + B3335179207B00A30036A448 /* ffe.cpp in Sources */, + B333516E207B00A30036A448 /* 240.cpp in Sources */, + B3335136207B00A30036A448 /* 32.cpp in Sources */, + B3335187207B00A30036A448 /* super24.cpp in Sources */, + B33350B1207B00150036A448 /* fds-sound.cpp in Sources */, + B3335184207B00A30036A448 /* novel.cpp in Sources */, + B33350BD207B001D0036A448 /* palette.cpp in Sources */, + B3335157207B00A30036A448 /* 107.cpp in Sources */, + B3335149207B00A30036A448 /* 80.cpp in Sources */, + B33350B2207B00150036A448 /* fds.cpp in Sources */, + B3335175207B00A30036A448 /* codemasters.cpp in Sources */, + B33350AF207B00150036A448 /* cart.cpp in Sources */, + B33350BC207B00150036A448 /* x6502.cpp in Sources */, + B33350C6207B00360036A448 /* mahjong.cpp in Sources */, + B33350B0207B00150036A448 /* dis6502.cpp in Sources */, + B3335143207B00A30036A448 /* 72.cpp in Sources */, + B333517F207B00A30036A448 /* mmc2and4.cpp in Sources */, + B3335189207B00A30036A448 /* tengen.cpp in Sources */, + B3335160207B00A30036A448 /* 163.cpp in Sources */, + B333513F207B00A30036A448 /* 65.cpp in Sources */, + B333513C207B00A30036A448 /* 42.cpp in Sources */, + B333515C207B00A30036A448 /* 140.cpp in Sources */, + B33350CA207B00360036A448 /* shadow.cpp in Sources */, + B33350C3207B00360036A448 /* fkb.cpp in Sources */, ); - name = "hwmisc-iOS"; - productName = hwmisc; - productReference = B33352CE207B067F0036A448 /* libhwmisc-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B333546E207B1B500036A448 /* cdrom-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3335477207B1B500036A448 /* Build configuration list for PBXNativeTarget "cdrom-iOS" */; - buildPhases = ( - B333546B207B1B500036A448 /* Sources */, - B333546C207B1B500036A448 /* Frameworks */, - B333546D207B1B500036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B333518C207B00F70036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B333519C207B010D0036A448 /* memory.cpp in Sources */, + B333519D207B010D0036A448 /* sound.cpp in Sources */, + B3335199207B010D0036A448 /* gb.cpp in Sources */, + B333519E207B010D0036A448 /* z80.cpp in Sources */, + B333519B207B010D0036A448 /* gfx.cpp in Sources */, + B333519A207B010D0036A448 /* gbGlobals.cpp in Sources */, ); - name = "cdrom-iOS"; - productName = cdrom; - productReference = B333546F207B1B500036A448 /* libcdrom-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B3335492207B1BF30036A448 /* sound-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3335499207B1BF40036A448 /* Build configuration list for PBXNativeTarget "sound-iOS" */; - buildPhases = ( - B333548F207B1BF30036A448 /* Sources */, - B3335490207B1BF30036A448 /* Frameworks */, - B3335491207B1BF30036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33351A0207B01460036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B333527C207B02CA0036A448 /* sram.cpp in Sources */, + B3335275207B02CA0036A448 /* Mode1.cpp in Sources */, + B3335274207B02CA0036A448 /* Mode0.cpp in Sources */, + B3335273207B02CA0036A448 /* Globals.cpp in Sources */, + B333527B207B02CA0036A448 /* Sound.cpp in Sources */, + B333526F207B02CA0036A448 /* flash.cpp in Sources */, + B333526D207B02CA0036A448 /* bios.cpp in Sources */, + B333526C207B02CA0036A448 /* arm.cpp in Sources */, + B333527D207B02CA0036A448 /* thumb.cpp in Sources */, + B3335277207B02CA0036A448 /* Mode3.cpp in Sources */, + B3335278207B02CA0036A448 /* Mode4.cpp in Sources */, + B3335279207B02CA0036A448 /* Mode5.cpp in Sources */, + B3335272207B02CA0036A448 /* Gfx.cpp in Sources */, + B333526E207B02CA0036A448 /* eeprom.cpp in Sources */, + B3335270207B02CA0036A448 /* GBA.cpp in Sources */, + B333527A207B02CA0036A448 /* RTC.cpp in Sources */, + B3335276207B02CA0036A448 /* Mode2.cpp in Sources */, + B3335271207B02CA0036A448 /* GBAinline.cpp in Sources */, ); - name = "sound-iOS"; - productName = sound; - productReference = B3335493207B1BF30036A448 /* libsound-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33354B3207B1C520036A448 /* video-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33354BA207B1C520036A448 /* Build configuration list for PBXNativeTarget "video-iOS" */; - buildPhases = ( - B33354B0207B1C520036A448 /* Sources */, - B33354B1207B1C520036A448 /* Frameworks */, - B33354B2207B1C520036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33351AD207B01570036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B333528D207B02F70036A448 /* system.cpp in Sources */, + B333528C207B02F70036A448 /* susie.cpp in Sources */, + B333528B207B02F70036A448 /* rom.cpp in Sources */, + B3335288207B02F70036A448 /* memmap.cpp in Sources */, + B333528A207B02F70036A448 /* ram.cpp in Sources */, + B3335289207B02F70036A448 /* mikie.cpp in Sources */, + B3335286207B02F70036A448 /* c65c02.cpp in Sources */, + B3335287207B02F70036A448 /* cart.cpp in Sources */, ); - name = "video-iOS"; - productName = video; - productReference = B33354B4207B1C520036A448 /* libvideo-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33354CA207B1D850036A448 /* mednafen-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33354D1207B1D860036A448 /* Build configuration list for PBXNativeTarget "mednafen-iOS" */; - buildPhases = ( - B33354C7207B1D850036A448 /* Sources */, - B33354C8207B1D850036A448 /* Frameworks */, - B33354C9207B1D850036A448 /* CopyFiles */, + B33351BA207B016F0036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3335234207B02530036A448 /* T6W28_Apu.cpp in Sources */, + B3335230207B02530036A448 /* neopop.cpp in Sources */, + B333522A207B02530036A448 /* flash.cpp in Sources */, + B333522D207B02530036A448 /* gfx.cpp in Sources */, + B333523F207B025E0036A448 /* TLCS900h_interpret.cpp in Sources */, + B3335229207B02530036A448 /* dma.cpp in Sources */, + B3335239207B025E0036A448 /* TLCS900h_disassemble_src.cpp in Sources */, + B333522E207B02530036A448 /* interrupt.cpp in Sources */, + B3335228207B02530036A448 /* biosHLE.cpp in Sources */, + B333522B207B02530036A448 /* gfx_scanline_colour.cpp in Sources */, + B3335235207B02530036A448 /* Z80_interface.cpp in Sources */, + B3335236207B025E0036A448 /* TLCS900h_disassemble_dst.cpp in Sources */, + B333523C207B025E0036A448 /* TLCS900h_interpret_reg.cpp in Sources */, + B3335240207B025E0036A448 /* TLCS900h_registers.cpp in Sources */, + B333523A207B025E0036A448 /* TLCS900h_disassemble.cpp in Sources */, + B333522F207B02530036A448 /* mem.cpp in Sources */, + B333523B207B025E0036A448 /* TLCS900h_interpret_dst.cpp in Sources */, + B333523D207B025E0036A448 /* TLCS900h_interpret_single.cpp in Sources */, + B3335233207B02530036A448 /* sound.cpp in Sources */, + B3335237207B025E0036A448 /* TLCS900h_disassemble_extra.cpp in Sources */, + B3335231207B02530036A448 /* rom.cpp in Sources */, + B3335238207B025E0036A448 /* TLCS900h_disassemble_reg.cpp in Sources */, + B3335232207B02530036A448 /* rtc.cpp in Sources */, + B333523E207B025E0036A448 /* TLCS900h_interpret_src.cpp in Sources */, + B3335227207B02530036A448 /* bios.cpp in Sources */, + B333522C207B02530036A448 /* gfx_scanline_mono.cpp in Sources */, ); - buildRules = ( - ); - dependencies = ( - ); - name = "mednafen-iOS"; - productName = mednafen; - productReference = B33354CB207B1D850036A448 /* libmednafen-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33355A1207B1E930036A448 /* mpcdec-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33355A8207B1E930036A448 /* Build configuration list for PBXNativeTarget "mpcdec-iOS" */; - buildPhases = ( - B333559E207B1E930036A448 /* Sources */, - B333559F207B1E930036A448 /* Frameworks */, - B33355A0207B1E930036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33351C7207B01860036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3335222207B02310036A448 /* tsushin.cpp in Sources */, + B333521F207B02310036A448 /* mcgenjin.cpp in Sources */, + B3335226207B023A0036A448 /* tsushinkb.cpp in Sources */, + B3335224207B023A0036A448 /* gamepad.cpp in Sources */, + B3335221207B02310036A448 /* pcecd.cpp in Sources */, + B333521D207B02310036A448 /* huc6280.cpp in Sources */, + B3335223207B02310036A448 /* vce.cpp in Sources */, + B333521C207B02310036A448 /* huc.cpp in Sources */, + B333521E207B02310036A448 /* input.cpp in Sources */, + B333521B207B02310036A448 /* hes.cpp in Sources */, + B333521A207B02310036A448 /* dis6280.cpp in Sources */, + B3335220207B02310036A448 /* pce.cpp in Sources */, + B3335225207B023A0036A448 /* mouse.cpp in Sources */, ); - name = "mpcdec-iOS"; - productName = mpcdec; - productReference = B33355A2207B1E930036A448 /* libmpcdec-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33355B7207B20420036A448 /* quicklz-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33355BE207B20420036A448 /* Build configuration list for PBXNativeTarget "quicklz-iOS" */; - buildPhases = ( - B33355B4207B20420036A448 /* Sources */, - B33355B5207B20420036A448 /* Frameworks */, - B33355B6207B20420036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33351D4207B01970036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3335216207B02250036A448 /* pcecd_drive.cpp in Sources */, + B3335213207B02250036A448 /* huc6280.cpp in Sources */, + B3335218207B02250036A448 /* psg.cpp in Sources */, + B3335212207B02250036A448 /* huc.cpp in Sources */, + B3335214207B02250036A448 /* input.cpp in Sources */, + B3335215207B02250036A448 /* pce.cpp in Sources */, + B3335219207B02250036A448 /* vdc.cpp in Sources */, + B3335211207B02250036A448 /* hes.cpp in Sources */, + B3335217207B02250036A448 /* pcecd.cpp in Sources */, ); - name = "quicklz-iOS"; - productName = quicklz; - productReference = B33355B8207B20420036A448 /* libquicklz-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33355C6207B20BE0036A448 /* tremor-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33355CD207B20BF0036A448 /* Build configuration list for PBXNativeTarget "tremor-iOS" */; - buildPhases = ( - B33355C3207B20BE0036A448 /* Sources */, - B33355C4207B20BE0036A448 /* Frameworks */, - B33355C5207B20BE0036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33351E1207B01C60036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33351F5207B01ED0036A448 /* system.cpp in Sources */, + B33351F0207B01ED0036A448 /* pio.cpp in Sources */, + B33351F4207B01ED0036A448 /* sound.cpp in Sources */, + B33351F6207B01ED0036A448 /* tms.cpp in Sources */, + B33351EF207B01ED0036A448 /* memz80.cpp in Sources */, + B33351EE207B01ED0036A448 /* cart.cpp in Sources */, + B33351F7207B01ED0036A448 /* vdp.cpp in Sources */, + B33351F3207B01ED0036A448 /* sms.cpp in Sources */, + B33351F1207B01ED0036A448 /* render.cpp in Sources */, + B33351F2207B01ED0036A448 /* romdb.cpp in Sources */, ); - name = "tremor-iOS"; - productName = tremor; - productReference = B33355C7207B20BE0036A448 /* libtremor-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B33355E3207B278E0036A448 /* trio-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33355EA207B278F0036A448 /* Build configuration list for PBXNativeTarget "trio-iOS" */; - buildPhases = ( - B33355E0207B278E0036A448 /* Sources */, - B33355E1207B278E0036A448 /* Frameworks */, - B33355E2207B278E0036A448 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33351F8207B020C0036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3335206207B02100036A448 /* huc6273.cpp in Sources */, + B333520B207B02100036A448 /* pcfx.cpp in Sources */, + B333520E207B02100036A448 /* timer.cpp in Sources */, + B333520A207B02100036A448 /* king.cpp in Sources */, + B3335207207B02100036A448 /* input.cpp in Sources */, + 11AFB33424882054000A3922 /* idct.cpp in Sources */, + B3335205207B02100036A448 /* fxscsi.cpp in Sources */, + B333520C207B02100036A448 /* rainbow.cpp in Sources */, + B3335208207B02100036A448 /* interrupt.cpp in Sources */, + B3335210207B02180036A448 /* gamepad.cpp in Sources */, + B333520D207B02100036A448 /* soundbox.cpp in Sources */, + B333520F207B02180036A448 /* mouse.cpp in Sources */, ); - name = "trio-iOS"; - productName = trio; - productReference = B33355E4207B278E0036A448 /* libtrio-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B340E4611E08887600AD0E8B /* PVMednafen-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B340E4671E08887700AD0E8B /* Build configuration list for PBXNativeTarget "PVMednafen-iOS" */; - buildPhases = ( - B340E45F1E08887600AD0E8B /* Headers */, - B340E45D1E08887600AD0E8B /* Sources */, - B340E45E1E08887600AD0E8B /* Frameworks */, - B340E4601E08887600AD0E8B /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - C6E1B69125AAC1D5007C3CF1 /* PBXTargetDependency */, - B34AB5882106DF8400C45F09 /* PBXTargetDependency */, - B34AB58A2106DF8400C45F09 /* PBXTargetDependency */, - B34AB58C2106DF8400C45F09 /* PBXTargetDependency */, - B34AB58E2106DF8400C45F09 /* PBXTargetDependency */, - B34AB5902106DF8400C45F09 /* PBXTargetDependency */, - B34AB5922106DF8400C45F09 /* PBXTargetDependency */, - B34AB5942106DF8400C45F09 /* PBXTargetDependency */, - B34AB5962106DF8400C45F09 /* PBXTargetDependency */, - B34AB5982106DF8400C45F09 /* PBXTargetDependency */, - B34AB59A2106DF8400C45F09 /* PBXTargetDependency */, - B34AB59C2106DF8400C45F09 /* PBXTargetDependency */, - B34AB59E2106DF8400C45F09 /* PBXTargetDependency */, - B34AB5A22106DF8400C45F09 /* PBXTargetDependency */, - B34AB5A42106DF8400C45F09 /* PBXTargetDependency */, - B34AB5A62106DF8400C45F09 /* PBXTargetDependency */, - B34AB5A82106DF8400C45F09 /* PBXTargetDependency */, - B34AB5AA2106DF8400C45F09 /* PBXTargetDependency */, - B34AB5AC2106DF8400C45F09 /* PBXTargetDependency */, - B34AB5AE2106DF8400C45F09 /* PBXTargetDependency */, - B34AB5B02106DF8400C45F09 /* PBXTargetDependency */, - B34AB5B22106DF8400C45F09 /* PBXTargetDependency */, - B34AB5B42106DF8400C45F09 /* PBXTargetDependency */, - B34AB5B62106DF8400C45F09 /* PBXTargetDependency */, - B34AB5B82106DF8400C45F09 /* PBXTargetDependency */, - B34AB5BA2106DF8400C45F09 /* PBXTargetDependency */, - B34AB5BC2106DF8400C45F09 /* PBXTargetDependency */, - C6E1B69725AAC5A3007C3CF1 /* PBXTargetDependency */, + B3335241207B02770036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3335260207B029A0036A448 /* map_ssf2.cpp in Sources */, + B333525D207B029A0036A448 /* map_rom.cpp in Sources */, + B3335253207B02800036A448 /* memvdp.cpp in Sources */, + B3335255207B02800036A448 /* sound.cpp in Sources */, + B3335265207B02B20036A448 /* interrupt.cpp in Sources */, + B3335251207B02800036A448 /* mem68k.cpp in Sources */, + B3335250207B02800036A448 /* header.cpp in Sources */, + B333525C207B029A0036A448 /* map_rmx3.cpp in Sources */, + B3335267207B02B20036A448 /* timer.cpp in Sources */, + B333525B207B029A0036A448 /* map_realtec.cpp in Sources */, + B333524E207B02800036A448 /* genesis.cpp in Sources */, + B3335266207B02B20036A448 /* pcm.cpp in Sources */, + B3335254207B02800036A448 /* memz80.cpp in Sources */, + B3335256207B02800036A448 /* system.cpp in Sources */, + B3335252207B02800036A448 /* membnk.cpp in Sources */, + B333526B207B02BC0036A448 /* multitap.cpp in Sources */, + B333525A207B029A0036A448 /* map_ff.cpp in Sources */, + B333524F207B02800036A448 /* genio.cpp in Sources */, + B3335263207B02B20036A448 /* cd.cpp in Sources */, + B3335264207B02B20036A448 /* cdc_cdd.cpp in Sources */, + B333525E207B029A0036A448 /* map_sbb.cpp in Sources */, + B333525F207B029A0036A448 /* map_sram.cpp in Sources */, + B3335268207B02BC0036A448 /* 4way.cpp in Sources */, + B3335261207B029A0036A448 /* map_svp.cpp in Sources */, + B3335259207B029A0036A448 /* map_eeprom.cpp in Sources */, + B333526A207B02BC0036A448 /* megamouse.cpp in Sources */, + B3335257207B02800036A448 /* vdp.cpp in Sources */, + B3335269207B02BC0036A448 /* gamepad.cpp in Sources */, + B3335262207B029A0036A448 /* map_yase.cpp in Sources */, + B3335258207B029A0036A448 /* cart.cpp in Sources */, ); - name = "PVMednafen-iOS"; - productName = PVMednafen; - productReference = B340E4621E08887600AD0E8B /* PVMednafen.framework */; - productType = "com.apple.product-type.framework"; + runOnlyForDeploymentPostprocessing = 0; }; - B340E46E1E08888700AD0E8B /* PVMednafen-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B340E4741E08888700AD0E8B /* Build configuration list for PBXNativeTarget "PVMednafen-tvOS" */; - buildPhases = ( - B340E46C1E08888700AD0E8B /* Headers */, - B340E46A1E08888700AD0E8B /* Sources */, - B340E46B1E08888700AD0E8B /* Frameworks */, - B340E46D1E08888700AD0E8B /* Resources */, - ); - buildRules = ( + B33352A3207B06550036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33352DC207B06B10036A448 /* Sms_Apu.cpp in Sources */, + B33352DE207B06B10036A448 /* Ym2612_Emu.cpp in Sources */, + B33352D8207B06B10036A448 /* Gb_Apu_State.cpp in Sources */, + B33352DB207B06B10036A448 /* pce_psg.cpp in Sources */, + B33352DA207B06B10036A448 /* Gb_Oscs.cpp in Sources */, + B33352D9207B06B10036A448 /* Gb_Apu.cpp in Sources */, + B33352DD207B06B10036A448 /* emu2413.cpp in Sources */, ); - dependencies = ( - C6E1B64A25AA9DC1007C3CF1 /* PBXTargetDependency */, - 11389F99248D4F6B0089CBFF /* PBXTargetDependency */, - 11389F9B248D4F6B0089CBFF /* PBXTargetDependency */, - 11389F9D248D4F6B0089CBFF /* PBXTargetDependency */, - 11389F9F248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FA1248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FA3248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FA5248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FA7248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FA9248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FAB248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FAD248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FAF248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FB1248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FB3248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FB5248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FB7248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FB9248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FBB248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FBD248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FBF248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FC1248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FC3248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FC5248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FC7248D4F6B0089CBFF /* PBXTargetDependency */, - 11389FC9248D4F6B0089CBFF /* PBXTargetDependency */, - B35D6693218185FF0005A992 /* PBXTargetDependency */, - ); - name = "PVMednafen-tvOS"; - productName = "PVMednafen tvOS"; - productReference = B340E46F1E08888700AD0E8B /* PVMednafen.framework */; - productType = "com.apple.product-type.framework"; + runOnlyForDeploymentPostprocessing = 0; }; - B35D6684218185710005A992 /* hwcpu-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B35D668D218185710005A992 /* Build configuration list for PBXNativeTarget "hwcpu-tvOS" */; - buildPhases = ( - B35D6685218185710005A992 /* Sources */, - B35D668B218185710005A992 /* Frameworks */, - B35D668C218185710005A992 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - B36C7D5327AE10F600715677 /* PBXTargetDependency */, + B33352B0207B06610036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33352D7207B06990036A448 /* vdc.cpp in Sources */, + C66D56172626B2FB00CDECE9 /* convert.cpp in Sources */, ); - name = "hwcpu-tvOS"; - productName = hwcpu; - productReference = B35D6690218185710005A992 /* libhwcpu-tvOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B393F245277C0BF70097F71C /* hwcpu-m68k-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B393F24D277C0BF70097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-iOS" */; - buildPhases = ( - B393F246277C0BF70097F71C /* Sources */, - B393F24B277C0BF70097F71C /* Frameworks */, - B393F24C277C0BF70097F71C /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( + B33352BD207B06730036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33352E8207B07C20036A448 /* z80_ops.cpp in Sources */, + B33352E0207B06D70036A448 /* v810_cpu.cpp in Sources */, + B33352E9207B07FD0036A448 /* z80.cpp in Sources */, + B33352E1207B06D70036A448 /* v810_fp_ops.cpp in Sources */, ); - name = "hwcpu-m68k-iOS"; - productName = hwcpu; - productReference = B393F251277C0BF70097F71C /* libhwcpu-m68k-iOS.a */; - productType = "com.apple.product-type.library.static"; + runOnlyForDeploymentPostprocessing = 0; }; - B393F253277C0C340097F71C /* hwcpu-m68k-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B393F25B277C0C340097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-tvOS" */; - buildPhases = ( - B393F254277C0C340097F71C /* Sources */, - B393F259277C0C340097F71C /* Frameworks */, - B393F25A277C0C340097F71C /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "hwcpu-m68k-tvOS"; - productName = hwcpu; - productReference = B393F25F277C0C340097F71C /* libhwcpu-m68k-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3FBDEF7207FF0E300E661D1 /* snes-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3FBDF00207FF0E400E661D1 /* Build configuration list for PBXNativeTarget "snes-iOS" */; - buildPhases = ( - B3FBDEF4207FF0E300E661D1 /* Sources */, - B3FBDEF5207FF0E300E661D1 /* Frameworks */, - B3FBDEF6207FF0E300E661D1 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "snes-iOS"; - productName = snes; - productReference = B3FBDEF8207FF0E300E661D1 /* libsnes-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3FBDF9E207FF5D800E661D1 /* snes_faust-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3FBDFA5207FF5D900E661D1 /* Build configuration list for PBXNativeTarget "snes_faust-iOS" */; - buildPhases = ( - B3FBDF9B207FF5D800E661D1 /* Sources */, - B3FBDF9C207FF5D800E661D1 /* Frameworks */, - B3FBDF9D207FF5D800E661D1 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "snes_faust-iOS"; - productName = snes_faust; - productReference = B3FBDF9F207FF5D800E661D1 /* libsnes_faust-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - C6E1B5A925AA9C15007C3CF1 /* saturn-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = C6E1B62425AA9C15007C3CF1 /* Build configuration list for PBXNativeTarget "saturn-tvOS" */; - buildPhases = ( - C6E1B5AA25AA9C15007C3CF1 /* Sources */, - C6E1B62225AA9C15007C3CF1 /* Frameworks */, - C6E1B62325AA9C15007C3CF1 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "saturn-tvOS"; - productName = snes; - productReference = C6E1B62825AA9C15007C3CF1 /* libsaturn-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - C6E1B65325AAC123007C3CF1 /* saturn-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = C6E1B66A25AAC123007C3CF1 /* Build configuration list for PBXNativeTarget "saturn-iOS" */; - buildPhases = ( - C6E1B65425AAC123007C3CF1 /* Sources */, - C6E1B66825AAC123007C3CF1 /* Frameworks */, - C6E1B66925AAC123007C3CF1 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "saturn-iOS"; - productName = snes_faust; - productReference = C6E1B66E25AAC123007C3CF1 /* libsaturn-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - CLASSPREFIX = PV; - LastSwiftUpdateCheck = 1160; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = "Provenance Emu"; - TargetAttributes = { - B333502C207AFBA30036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B3335061207AFD3D0036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B3335091207AFF2B0036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33350A4207AFFE80036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B333518F207B00F70036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33351A3207B01460036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33351B0207B01570036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33351BD207B016F0036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33351CA207B01860036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33351D7207B01970036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33351E4207B01C60036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33351FB207B020C0036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B3335244207B02770036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33352A6207B06550036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33352B3207B06610036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33352C0207B06730036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33352CD207B067F0036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B333546E207B1B500036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B3335492207B1BF30036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33354B3207B1C520036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33354CA207B1D850036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33355A1207B1E930036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33355B7207B20420036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33355C6207B20BE0036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B33355E3207B278E0036A448 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B340E4611E08887600AD0E8B = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 1020; - }; - B340E46E1E08888700AD0E8B = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 0920; - }; - B3FBDEF7207FF0E300E661D1 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - B3FBDF9E207FF5D800E661D1 = { - CreatedOnToolsVersion = 9.3; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVMednafen" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 1; - knownRegions = ( - en, - Base, - ); - mainGroup = 089C166AFE841209C02AAC07 /* Mednafen */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - B340E4611E08887600AD0E8B /* PVMednafen-iOS */, - B340E46E1E08888700AD0E8B /* PVMednafen-tvOS */, - B333502C207AFBA30036A448 /* psx-iOS */, - B324C32221919BC6009F4EDC /* psx-tvOS */, - B3335061207AFD3D0036A448 /* wonderswan-iOS */, - B324C5E02191AD13009F4EDC /* wonderswan-tvOS */, - B3335091207AFF2B0036A448 /* virtualboy-iOS */, - B32CF14821923F330058E2E7 /* virtualboy-tvOS */, - B33350A4207AFFE80036A448 /* nes-iOS */, - B324C34E21919CD6009F4EDC /* nes-tvOS */, - B333518F207B00F70036A448 /* gb-iOS */, - B324C4C82191A1AC009F4EDC /* gb-tvOS */, - B33351A3207B01460036A448 /* gba-iOS */, - B324C4AC21919E72009F4EDC /* gba-tvOS */, - B33351B0207B01570036A448 /* lynx-iOS */, - B32CF17921923F740058E2E7 /* lynx-tvOS */, - B33351BD207B016F0036A448 /* neogeopocket-iOS */, - B32CF15621923F520058E2E7 /* neogeopocket-tvOS */, - B33351CA207B01860036A448 /* pce-iOS */, - B32CF18A21923F790058E2E7 /* pce-tvOS */, - B33351D7207B01970036A448 /* pcefast-iOS */, - B32CF1A021923F7F0058E2E7 /* pcefast-tvOS */, - B33351E4207B01C60036A448 /* segamastersystem-iOS */, - B32CF1B221923F850058E2E7 /* segamastersystem-tvOS */, - B33351FB207B020C0036A448 /* pcfx-iOS */, - B324C5CA2191ACE1009F4EDC /* pcfx-tvOS */, - B3335244207B02770036A448 /* megadrive-iOS */, - B324C3D521919D34009F4EDC /* megadrive-tvOS */, - B33352A6207B06550036A448 /* hwaudio-iOS */, - B32CF13721923EB40058E2E7 /* hwaudio-tvOS */, - B33352B3207B06610036A448 /* hwvideo-iOS */, - B324C34421919C1C009F4EDC /* hwvideo-tvOS */, - B33352C0207B06730036A448 /* hwcpu-iOS */, - B35D6684218185710005A992 /* hwcpu-tvOS */, - B393F245277C0BF70097F71C /* hwcpu-m68k-iOS */, - B393F253277C0C340097F71C /* hwcpu-m68k-tvOS */, - B33352CD207B067F0036A448 /* hwmisc-iOS */, - B32CF1C5219240270058E2E7 /* hwmisc-tvOS */, - B333546E207B1B500036A448 /* cdrom-iOS */, - B324C5B02191ABB7009F4EDC /* cdrom-tvOS */, - B3335492207B1BF30036A448 /* sound-iOS */, - B324C5A12191ABAD009F4EDC /* sound-tvOS */, - B33354B3207B1C520036A448 /* video-iOS */, - B324C58F2191AB9D009F4EDC /* video-tvOS */, - B33354CA207B1D850036A448 /* mednafen-iOS */, - B324C3FB21919D73009F4EDC /* mednafen-tvOS */, - B33355A1207B1E930036A448 /* mpcdec-iOS */, - B324C53C2191A8A5009F4EDC /* mpcdec-tvOS */, - B33355B7207B20420036A448 /* quicklz-iOS */, - B324C5832191AB4E009F4EDC /* quicklz-tvOS */, - B33355C6207B20BE0036A448 /* tremor-iOS */, - B324C56B2191AB34009F4EDC /* tremor-tvOS */, - B33355E3207B278E0036A448 /* trio-iOS */, - B324C55E2191AAFE009F4EDC /* trio-tvOS */, - B3FBDEF7207FF0E300E661D1 /* snes-iOS */, - B324C42C21919DC9009F4EDC /* snes-tvOS */, - B3FBDF9E207FF5D800E661D1 /* snes_faust-iOS */, - B324C54E2191AAD1009F4EDC /* snes_faust-tvOS */, - C6E1B5A925AA9C15007C3CF1 /* saturn-tvOS */, - C6E1B65325AAC123007C3CF1 /* saturn-iOS */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - B340E4601E08887600AD0E8B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B60205858EF00CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B340E46D1E08888700AD0E8B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B61205858EF00CFF7D8 /* Core.plist in Resources */, + B33352CA207B067F0036A448 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33352DF207B06B90036A448 /* arcade_card.cpp in Sources */, + C66D561B2626B37300CDECE9 /* testsexp.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - B324C32321919BC6009F4EDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C32421919BC6009F4EDC /* gte.cpp in Sources */, - B324C32521919BC6009F4EDC /* gpu_polygon.cpp in Sources */, - B324C32621919BC6009F4EDC /* mdec.cpp in Sources */, - B324C32721919BC6009F4EDC /* dualanalog.cpp in Sources */, - B324C32821919BC6009F4EDC /* sio.cpp in Sources */, - B324C32921919BC6009F4EDC /* memcard.cpp in Sources */, - B324C32A21919BC6009F4EDC /* guncon.cpp in Sources */, - B324C32B21919BC6009F4EDC /* gpu_sprite.cpp in Sources */, - B324C32C21919BC6009F4EDC /* psx.cpp in Sources */, - B324C32D21919BC6009F4EDC /* dis.cpp in Sources */, - B324C32E21919BC6009F4EDC /* cpu.cpp in Sources */, - B324C32F21919BC6009F4EDC /* irq.cpp in Sources */, - B324C33021919BC6009F4EDC /* dualshock.cpp in Sources */, - B324C33121919BC6009F4EDC /* spu.cpp in Sources */, - B324C33221919BC6009F4EDC /* dma.cpp in Sources */, - B324C33321919BC6009F4EDC /* timer.cpp in Sources */, - B324C33421919BC6009F4EDC /* frontio.cpp in Sources */, - B324C33521919BC6009F4EDC /* gpu.cpp in Sources */, - B324C33621919BC6009F4EDC /* gamepad.cpp in Sources */, - B324C33721919BC6009F4EDC /* justifier.cpp in Sources */, - B324C33821919BC6009F4EDC /* gpu_line.cpp in Sources */, - B324C33921919BC6009F4EDC /* negcon.cpp in Sources */, - B324C33A21919BC6009F4EDC /* multitap.cpp in Sources */, - B324C33B21919BC6009F4EDC /* mouse.cpp in Sources */, - B324C33C21919BC6009F4EDC /* cdc.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C34521919C1C009F4EDC /* Sources */ = { + B333546B207B1B500036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C34621919C1C009F4EDC /* vdc.cpp in Sources */, - C66D56182626B2FB00CDECE9 /* convert.cpp in Sources */, + B333547A207B1B780036A448 /* CDAccess_Image.cpp in Sources */, + B3335484207B1B780036A448 /* l-ec.cpp in Sources */, + B333547E207B1B780036A448 /* CDAFReader_Vorbis.cpp in Sources */, + B3335482207B1B780036A448 /* crc32.cpp in Sources */, + B3335483207B1B780036A448 /* galois.cpp in Sources */, + B3335487207B1B780036A448 /* scsicd.cpp in Sources */, + B3335479207B1B780036A448 /* CDAccess_CCD.cpp in Sources */, + C66D56222626B4E700CDECE9 /* CDAFReader_PCM.cpp in Sources */, + B333547B207B1B780036A448 /* CDAccess.cpp in Sources */, + B3335481207B1B780036A448 /* CDUtility.cpp in Sources */, + B333547F207B1B780036A448 /* CDAFReader.cpp in Sources */, + B3335485207B1B780036A448 /* lec.cpp in Sources */, + B333547C207B1B780036A448 /* CDAFReader_MPC.cpp in Sources */, + B3335486207B1B780036A448 /* recover-raw.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C34F21919CD6009F4EDC /* Sources */ = { + B333548F207B1BF30036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C35021919CD6009F4EDC /* 88.cpp in Sources */, - B324C35121919CD6009F4EDC /* 67.cpp in Sources */, - B324C35221919CD6009F4EDC /* 248.cpp in Sources */, - B324C35321919CD6009F4EDC /* 23.cpp in Sources */, - B324C35421919CD6009F4EDC /* 70.cpp in Sources */, - B324C35521919CD6009F4EDC /* 8.cpp in Sources */, - B324C35621919CD6009F4EDC /* 90.cpp in Sources */, - B324C35721919CD6009F4EDC /* 22.cpp in Sources */, - B324C35821919CD6009F4EDC /* 89.cpp in Sources */, - B324C35921919CD6009F4EDC /* 68.cpp in Sources */, - B324C35A21919CD6009F4EDC /* vrc7.cpp in Sources */, - B324C35B21919CD6009F4EDC /* 77.cpp in Sources */, - B324C35C21919CD6009F4EDC /* 187.cpp in Sources */, - B324C35D21919CD6009F4EDC /* 33.cpp in Sources */, - B324C35E21919CD6009F4EDC /* 222.cpp in Sources */, - B324C35F21919CD6009F4EDC /* bbattler2.cpp in Sources */, - B324C36021919CD6009F4EDC /* 112.cpp in Sources */, - B324C36121919CD6009F4EDC /* 232.cpp in Sources */, - B324C36221919CD6009F4EDC /* mmc3.cpp in Sources */, - B324C36321919CD6009F4EDC /* 38.cpp in Sources */, - B324C36421919CD6009F4EDC /* 208.cpp in Sources */, - B324C36521919CD6009F4EDC /* deirom.cpp in Sources */, - B324C36621919CD6009F4EDC /* nsfe.cpp in Sources */, - B324C36721919CD6009F4EDC /* 76.cpp in Sources */, - B324C36821919CD6009F4EDC /* ftrainer.cpp in Sources */, - B324C36921919CD6009F4EDC /* 82.cpp in Sources */, - B324C36A21919CD6009F4EDC /* toprider.cpp in Sources */, - B324C36B21919CD6009F4EDC /* ppu.cpp in Sources */, - B324C36C21919CD6009F4EDC /* 193.cpp in Sources */, - B324C36D21919CD6009F4EDC /* 152.cpp in Sources */, - B324C36E21919CD6009F4EDC /* 93.cpp in Sources */, - B324C36F21919CD6009F4EDC /* emu2413.cpp in Sources */, - B324C37021919CD6009F4EDC /* 94.cpp in Sources */, - B324C37121919CD6009F4EDC /* 30.cpp in Sources */, - B324C37221919CD6009F4EDC /* 96.cpp in Sources */, - B324C37321919CD6009F4EDC /* 241.cpp in Sources */, - B324C37421919CD6009F4EDC /* 156.cpp in Sources */, - B324C37521919CD6009F4EDC /* partytap.cpp in Sources */, - B324C37621919CD6009F4EDC /* nes_ntsc.cpp in Sources */, - B324C37721919CD6009F4EDC /* 92.cpp in Sources */, - B324C37821919CD6009F4EDC /* 189.cpp in Sources */, - B324C37921919CD6009F4EDC /* 8237.cpp in Sources */, - B324C37A21919CD6009F4EDC /* nes.cpp in Sources */, - B324C37B21919CD6009F4EDC /* 99.cpp in Sources */, - B324C37C21919CD6009F4EDC /* maxicart.cpp in Sources */, - B324C37D21919CD6009F4EDC /* ines.cpp in Sources */, - B324C37E21919CD6009F4EDC /* sachen.cpp in Sources */, - B324C37F21919CD6009F4EDC /* 75.cpp in Sources */, - B324C38021919CD6009F4EDC /* suborkb.cpp in Sources */, - B324C38121919CD6009F4EDC /* 113.cpp in Sources */, - B324C38221919CD6009F4EDC /* oekakids.cpp in Sources */, - B324C38321919CD6009F4EDC /* h2288.cpp in Sources */, - B324C38421919CD6009F4EDC /* cursor.cpp in Sources */, - B324C38521919CD6009F4EDC /* colordreams.cpp in Sources */, - B324C38621919CD6009F4EDC /* 185.cpp in Sources */, - B324C38721919CD6009F4EDC /* 40.cpp in Sources */, - B324C38821919CD6009F4EDC /* 21.cpp in Sources */, - B324C38921919CD6009F4EDC /* mmc5.cpp in Sources */, - B324C38A21919CD6009F4EDC /* zapper.cpp in Sources */, - B324C38B21919CD6009F4EDC /* 73.cpp in Sources */, - B324C38C21919CD6009F4EDC /* 117.cpp in Sources */, - B324C38D21919CD6009F4EDC /* 182.cpp in Sources */, - B324C38E21919CD6009F4EDC /* 16.cpp in Sources */, - B324C38F21919CD6009F4EDC /* nina06.cpp in Sources */, - B324C39021919CD6009F4EDC /* fme7.cpp in Sources */, - B324C39121919CD6009F4EDC /* 78.cpp in Sources */, - B324C39221919CD6009F4EDC /* nsf.cpp in Sources */, - B324C39321919CD6009F4EDC /* vsuni.cpp in Sources */, - B324C39421919CD6009F4EDC /* 51.cpp in Sources */, - B324C39521919CD6009F4EDC /* 234.cpp in Sources */, - B324C39621919CD6009F4EDC /* 15.cpp in Sources */, - B324C39721919CD6009F4EDC /* 86.cpp in Sources */, - B324C39821919CD6009F4EDC /* 46.cpp in Sources */, - B324C39921919CD6009F4EDC /* 87.cpp in Sources */, - B324C39A21919CD6009F4EDC /* 228.cpp in Sources */, - B324C39B21919CD6009F4EDC /* input.cpp in Sources */, - B324C39C21919CD6009F4EDC /* n106.cpp in Sources */, - B324C39D21919CD6009F4EDC /* 151.cpp in Sources */, - B324C39E21919CD6009F4EDC /* 244.cpp in Sources */, - B324C39F21919CD6009F4EDC /* supervision.cpp in Sources */, - B324C3A021919CD6009F4EDC /* hypershot.cpp in Sources */, - B324C3A121919CD6009F4EDC /* 34.cpp in Sources */, - B324C3A321919CD6009F4EDC /* 95.cpp in Sources */, - B324C3A421919CD6009F4EDC /* 114.cpp in Sources */, - B324C3A521919CD6009F4EDC /* malee.cpp in Sources */, - B324C3A621919CD6009F4EDC /* sound.cpp in Sources */, - B324C3A721919CD6009F4EDC /* unif.cpp in Sources */, - B324C3A821919CD6009F4EDC /* 18.cpp in Sources */, - B324C3A921919CD6009F4EDC /* arkanoid.cpp in Sources */, - B324C3AA21919CD6009F4EDC /* simple.cpp in Sources */, - B324C3AB21919CD6009F4EDC /* powerpad.cpp in Sources */, - B324C3AC21919CD6009F4EDC /* vrc6.cpp in Sources */, - B324C3AD21919CD6009F4EDC /* 180.cpp in Sources */, - B324C3AE21919CD6009F4EDC /* 242.cpp in Sources */, - B324C3AF21919CD6009F4EDC /* 246.cpp in Sources */, - B324C3B021919CD6009F4EDC /* 25.cpp in Sources */, - B324C3B121919CD6009F4EDC /* mmc1.cpp in Sources */, - B324C3B221919CD6009F4EDC /* 41.cpp in Sources */, - B324C3B321919CD6009F4EDC /* 97.cpp in Sources */, - B324C3B421919CD6009F4EDC /* 184.cpp in Sources */, - B324C3B521919CD6009F4EDC /* 190.cpp in Sources */, - B324C3B621919CD6009F4EDC /* ffe.cpp in Sources */, - B324C3B721919CD6009F4EDC /* 240.cpp in Sources */, - B324C3B821919CD6009F4EDC /* 32.cpp in Sources */, - B324C3B921919CD6009F4EDC /* super24.cpp in Sources */, - B324C3BA21919CD6009F4EDC /* fds-sound.cpp in Sources */, - B324C3BB21919CD6009F4EDC /* novel.cpp in Sources */, - B324C3BC21919CD6009F4EDC /* palette.cpp in Sources */, - B324C3BD21919CD6009F4EDC /* 107.cpp in Sources */, - B324C3BE21919CD6009F4EDC /* 80.cpp in Sources */, - B324C3BF21919CD6009F4EDC /* fds.cpp in Sources */, - B324C3C021919CD6009F4EDC /* codemasters.cpp in Sources */, - B324C3C121919CD6009F4EDC /* cart.cpp in Sources */, - B324C3C221919CD6009F4EDC /* x6502.cpp in Sources */, - B324C3C321919CD6009F4EDC /* mahjong.cpp in Sources */, - B324C3C421919CD6009F4EDC /* dis6502.cpp in Sources */, - B324C3C521919CD6009F4EDC /* 72.cpp in Sources */, - B324C3C621919CD6009F4EDC /* mmc2and4.cpp in Sources */, - B324C3C721919CD6009F4EDC /* tengen.cpp in Sources */, - B324C3C821919CD6009F4EDC /* 163.cpp in Sources */, - B324C3C921919CD6009F4EDC /* 65.cpp in Sources */, - B324C3CA21919CD6009F4EDC /* 42.cpp in Sources */, - B324C3CB21919CD6009F4EDC /* 140.cpp in Sources */, - B324C3CC21919CD6009F4EDC /* shadow.cpp in Sources */, - B324C3CD21919CD6009F4EDC /* fkb.cpp in Sources */, + C6E1B69325AAC243007C3CF1 /* DSPUtility.cpp in Sources */, + C6E1B69425AAC243007C3CF1 /* SwiftResampler.cpp in Sources */, + B333549C207B1C000036A448 /* Blip_Buffer.cpp in Sources */, + B333549F207B1C000036A448 /* OwlResampler.cpp in Sources */, + B333549E207B1C000036A448 /* okiadpcm.cpp in Sources */, + B33354A1207B1C000036A448 /* WAVRecord.cpp in Sources */, + B333549D207B1C000036A448 /* Fir_Resampler.cpp in Sources */, + B33354A0207B1C000036A448 /* Stereo_Buffer.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C3D621919D34009F4EDC /* Sources */ = { + B33354B0207B1C520036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C3D721919D34009F4EDC /* map_ssf2.cpp in Sources */, - B324C3D821919D34009F4EDC /* map_rom.cpp in Sources */, - B324C3D921919D34009F4EDC /* memvdp.cpp in Sources */, - B324C3DA21919D34009F4EDC /* sound.cpp in Sources */, - B324C3DB21919D34009F4EDC /* interrupt.cpp in Sources */, - B324C3DC21919D34009F4EDC /* mem68k.cpp in Sources */, - B324C3DD21919D34009F4EDC /* header.cpp in Sources */, - B324C3DE21919D34009F4EDC /* map_rmx3.cpp in Sources */, - B324C3DF21919D34009F4EDC /* timer.cpp in Sources */, - B324C3E021919D34009F4EDC /* map_realtec.cpp in Sources */, - B324C3E121919D34009F4EDC /* genesis.cpp in Sources */, - B324C3E221919D34009F4EDC /* pcm.cpp in Sources */, - B324C3E321919D34009F4EDC /* memz80.cpp in Sources */, - B324C3E421919D34009F4EDC /* system.cpp in Sources */, - B324C3E521919D34009F4EDC /* membnk.cpp in Sources */, - B324C3E621919D34009F4EDC /* multitap.cpp in Sources */, - B324C3E721919D34009F4EDC /* map_ff.cpp in Sources */, - B324C3E821919D34009F4EDC /* genio.cpp in Sources */, - B324C3E921919D34009F4EDC /* cd.cpp in Sources */, - B324C3EA21919D34009F4EDC /* cdc_cdd.cpp in Sources */, - B324C3EB21919D34009F4EDC /* map_sbb.cpp in Sources */, - B324C3EC21919D34009F4EDC /* map_sram.cpp in Sources */, - B324C3ED21919D34009F4EDC /* 4way.cpp in Sources */, - B324C3EE21919D34009F4EDC /* map_svp.cpp in Sources */, - B324C3EF21919D34009F4EDC /* map_eeprom.cpp in Sources */, - B324C3F021919D34009F4EDC /* megamouse.cpp in Sources */, - B324C3F121919D34009F4EDC /* vdp.cpp in Sources */, - B324C3F221919D34009F4EDC /* gamepad.cpp in Sources */, - B324C3F321919D34009F4EDC /* map_yase.cpp in Sources */, - B324C3F421919D34009F4EDC /* cart.cpp in Sources */, + B33354C0207B1C870036A448 /* png.cpp in Sources */, + B33354BF207B1C870036A448 /* font-data.cpp in Sources */, + B33354BE207B1C870036A448 /* Deinterlacer.cpp in Sources */, + B33354C1207B1C870036A448 /* primitives.cpp in Sources */, + B33354C6207B1C870036A448 /* video.cpp in Sources */, + B33354C2207B1C870036A448 /* resize.cpp in Sources */, + B33354C3207B1C870036A448 /* surface.cpp in Sources */, + B33354C5207B1C870036A448 /* text.cpp in Sources */, + B33354C4207B1C870036A448 /* tblur.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C3FC21919D73009F4EDC /* Sources */ = { + B33354C7207B1D850036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C3FD21919D73009F4EDC /* string.cpp in Sources */, - B324C3FE21919D73009F4EDC /* cputest.c in Sources */, - B324C3FF21919D73009F4EDC /* snes.cpp in Sources */, - B324C40021919D73009F4EDC /* sha256.cpp in Sources */, - B324C40121919D73009F4EDC /* Stream.cpp in Sources */, - B324C40221919D73009F4EDC /* git.cpp in Sources */, - B324C40321919D73009F4EDC /* player.cpp in Sources */, - 11AFB329248813A9000A3922 /* CDInterface_ST.cpp in Sources */, - B324C40421919D73009F4EDC /* IPSPatcher.cpp in Sources */, - B324C40521919D73009F4EDC /* GZFileStream.cpp in Sources */, - B324C40621919D73009F4EDC /* resample.c in Sources */, - 11AFB32B248813A9000A3922 /* CDInterface_MT.cpp in Sources */, - B324C40721919D73009F4EDC /* file.cpp in Sources */, - B324C40821919D73009F4EDC /* escape.cpp in Sources */, - 11AFB2C524880B99000A3922 /* NativeVFS.cpp in Sources */, - B324C40921919D73009F4EDC /* memory.cpp in Sources */, - B324C40A21919D73009F4EDC /* cdplay.cpp in Sources */, - B324C40B21919D73009F4EDC /* netplay.cpp in Sources */, - B324C40C21919D73009F4EDC /* SNSFLoader.cpp in Sources */, - B324C40D21919D73009F4EDC /* general.cpp in Sources */, - 11AFB32D248813A9000A3922 /* CDInterface.cpp in Sources */, - B324C40E21919D73009F4EDC /* error.cpp in Sources */, - B324C40F21919D73009F4EDC /* Net.cpp in Sources */, - B324C41021919D73009F4EDC /* MemoryStream.cpp in Sources */, - B324C41121919D73009F4EDC /* FileStream.cpp in Sources */, - 11AFB2C324880B99000A3922 /* MTStreamReader.cpp in Sources */, - B324C41221919D73009F4EDC /* psx.cpp in Sources */, - 11AFB2BF24880B99000A3922 /* ExtMemStream.cpp in Sources */, - B324C41321919D73009F4EDC /* gb.cpp in Sources */, - B324C41421919D73009F4EDC /* sha1.cpp in Sources */, - 11AFB33224881CBC000A3922 /* MThreading_POSIX.cpp in Sources */, - 11AFB3202488132B000A3922 /* Deinterlacer_Blend.cpp in Sources */, - B324C41521919D73009F4EDC /* endian.cpp in Sources */, - B324C41621919D73009F4EDC /* state_rewind.cpp in Sources */, - B324C41721919D73009F4EDC /* debug.cpp in Sources */, - B324C41821919D73009F4EDC /* ZLInflateFilter.cpp in Sources */, - 11AFB2D124880BF4000A3922 /* SwiftResampler.cpp in Sources */, - B324C41921919D73009F4EDC /* Net_POSIX.cpp in Sources */, - 11AFB2C124880B99000A3922 /* VirtualFS.cpp in Sources */, - 11AFB3222488132B000A3922 /* Deinterlacer_Simple.cpp in Sources */, - B324C41A21919D73009F4EDC /* SPCReader.cpp in Sources */, - 11AFB2CF24880BF4000A3922 /* DSPUtility.cpp in Sources */, - B324C41B21919D73009F4EDC /* settings.cpp in Sources */, - B324C41C21919D73009F4EDC /* state.cpp in Sources */, - B324C41D21919D73009F4EDC /* mednafen.cpp in Sources */, - B324C41F21919D73009F4EDC /* movie.cpp in Sources */, - B324C42021919D73009F4EDC /* ZIPReader.cpp in Sources */, - B324C42121919D73009F4EDC /* mempatcher.cpp in Sources */, - B324C42221919D73009F4EDC /* PSFLoader.cpp in Sources */, - 11AFB33A248820AF000A3922 /* crc.cpp in Sources */, - B324C42321919D73009F4EDC /* md5.cpp in Sources */, - B324C42421919D73009F4EDC /* demo.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C42D21919DC9009F4EDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C42E21919DC9009F4EDC /* smp.cpp in Sources */, - B324C42F21919DC9009F4EDC /* bus.cpp in Sources */, - B324C43021919DC9009F4EDC /* opcodes.cpp in Sources */, - B324C43121919DC9009F4EDC /* bus.cpp in Sources */, - B324C43221919DC9009F4EDC /* echo.cpp in Sources */, - B324C43321919DC9009F4EDC /* ppu.cpp in Sources */, - B324C43421919DC9009F4EDC /* algorithms.cpp in Sources */, - B324C43521919DC9009F4EDC /* cx4.cpp in Sources */, - B324C43621919DC9009F4EDC /* opcode_write.cpp in Sources */, - B324C43721919DC9009F4EDC /* decomp.cpp in Sources */, - B324C43821919DC9009F4EDC /* serialization.cpp in Sources */, - B324C43921919DC9009F4EDC /* opcode_table.cpp in Sources */, - B324C43A21919DC9009F4EDC /* bsx.cpp in Sources */, - B324C43B21919DC9009F4EDC /* opcode_mov.cpp in Sources */, - B324C43C21919DC9009F4EDC /* cpu.cpp in Sources */, - B324C43D21919DC9009F4EDC /* dsp2.cpp in Sources */, - B324C43E21919DC9009F4EDC /* gameboyheader.cpp in Sources */, - B324C43F21919DC9009F4EDC /* arm.c in Sources */, - B324C44021919DC9009F4EDC /* bg.cpp in Sources */, - B324C44121919DC9009F4EDC /* scpu.cpp in Sources */, - B324C44221919DC9009F4EDC /* mmio.cpp in Sources */, - B324C44321919DC9009F4EDC /* bsx_flash.cpp in Sources */, - B324C44421919DC9009F4EDC /* video.cpp in Sources */, - B324C44521919DC9009F4EDC /* opcode_read.cpp in Sources */, - B324C44621919DC9009F4EDC /* windows.cpp in Sources */, - B324C44721919DC9009F4EDC /* dsp4emu.c in Sources */, - B324C44821919DC9009F4EDC /* serialization.cpp in Sources */, - B324C44921919DC9009F4EDC /* serialization.cpp in Sources */, - B324C44A21919DC9009F4EDC /* event.cpp in Sources */, - B324C44B21919DC9009F4EDC /* functions.cpp in Sources */, - B324C44C21919DC9009F4EDC /* line.cpp in Sources */, - B324C44D21919DC9009F4EDC /* sdsp.cpp in Sources */, - B324C44E21919DC9009F4EDC /* data.cpp in Sources */, - B324C44F21919DC9009F4EDC /* dma.cpp in Sources */, - B324C45021919DC9009F4EDC /* dsp3.cpp in Sources */, - B324C45121919DC9009F4EDC /* spc7110.cpp in Sources */, - B324C45221919DC9009F4EDC /* table.cpp in Sources */, - B324C45321919DC9009F4EDC /* serialization.cpp in Sources */, - B324C45421919DC9009F4EDC /* memory.cpp in Sources */, - B324C45521919DC9009F4EDC /* mmio.cpp in Sources */, - B324C45621919DC9009F4EDC /* dsp1emu.cpp in Sources */, - B324C45721919DC9009F4EDC /* serialization.cpp in Sources */, - B324C45821919DC9009F4EDC /* oam.cpp in Sources */, - B324C45921919DC9009F4EDC /* libco.c in Sources */, - B324C45A21919DC9009F4EDC /* joypad.cpp in Sources */, - B324C45B21919DC9009F4EDC /* cartridge.cpp in Sources */, - B324C45C21919DC9009F4EDC /* cache.cpp in Sources */, - B324C45D21919DC9009F4EDC /* opcode_misc.cpp in Sources */, - B324C45E21919DC9009F4EDC /* disasm.cpp in Sources */, - B324C45F21919DC9009F4EDC /* core.cpp in Sources */, - B324C46021919DC9009F4EDC /* addsub.cpp in Sources */, - B324C46121919DC9009F4EDC /* opcode_misc.cpp in Sources */, - B324C46221919DC9009F4EDC /* sdd1emu.cpp in Sources */, - B324C46321919DC9009F4EDC /* brr.cpp in Sources */, - B324C46421919DC9009F4EDC /* system.cpp in Sources */, - B324C46521919DC9009F4EDC /* serialization.cpp in Sources */, - B324C46621919DC9009F4EDC /* memory.cpp in Sources */, - B324C46721919DC9009F4EDC /* counter.cpp in Sources */, - B324C46821919DC9009F4EDC /* obc1.cpp in Sources */, - B324C46921919DC9009F4EDC /* config.cpp in Sources */, - B324C46A21919DC9009F4EDC /* voice.cpp in Sources */, - B324C46B21919DC9009F4EDC /* core.cpp in Sources */, - B324C46C21919DC9009F4EDC /* sa1.cpp in Sources */, - B324C46D21919DC9009F4EDC /* opcode_pc.cpp in Sources */, - B324C46E21919DC9009F4EDC /* srtc.cpp in Sources */, - B324C46F21919DC9009F4EDC /* memory.cpp in Sources */, - B324C47021919DC9009F4EDC /* serialization.cpp in Sources */, - B324C47121919DC9009F4EDC /* serialization.cpp in Sources */, - B324C47221919DC9009F4EDC /* opcode_pc.cpp in Sources */, - B324C47321919DC9009F4EDC /* serialization.cpp in Sources */, - B324C47421919DC9009F4EDC /* opcodes.cpp in Sources */, - B324C47521919DC9009F4EDC /* header.cpp in Sources */, - B324C47621919DC9009F4EDC /* opcode_rmw.cpp in Sources */, - B324C47721919DC9009F4EDC /* opcodes.cpp in Sources */, - B324C47821919DC9009F4EDC /* mmio.cpp in Sources */, - B324C47921919DC9009F4EDC /* oam.cpp in Sources */, - B324C47A21919DC9009F4EDC /* opcode_rmw.cpp in Sources */, - B324C47B21919DC9009F4EDC /* interface.cpp in Sources */, - B324C47C21919DC9009F4EDC /* memory.cpp in Sources */, - B324C47D21919DC9009F4EDC /* input.cpp in Sources */, - B324C47E21919DC9009F4EDC /* cheat.cpp in Sources */, - B324C47F21919DC9009F4EDC /* bsx_cart.cpp in Sources */, - B324C48021919DC9009F4EDC /* irq.cpp in Sources */, - B324C48121919DC9009F4EDC /* mmio.cpp in Sources */, - B324C48221919DC9009F4EDC /* serialization.cpp in Sources */, - B324C48321919DC9009F4EDC /* opcode_read.cpp in Sources */, - B324C48421919DC9009F4EDC /* dsp3emu.c in Sources */, - B324C48521919DC9009F4EDC /* serialization.cpp in Sources */, - B324C48621919DC9009F4EDC /* dma.cpp in Sources */, - B324C48721919DC9009F4EDC /* mode7.cpp in Sources */, - B324C48821919DC9009F4EDC /* sjlj.c in Sources */, - B324C48921919DC9009F4EDC /* serialization.cpp in Sources */, - B324C48A21919DC9009F4EDC /* smemory.cpp in Sources */, - B324C48B21919DC9009F4EDC /* serialization.cpp in Sources */, - B324C48C21919DC9009F4EDC /* memory.cpp in Sources */, - B324C48D21919DC9009F4EDC /* gaussian.cpp in Sources */, - B324C48E21919DC9009F4EDC /* timing.cpp in Sources */, - B324C48F21919DC9009F4EDC /* render.cpp in Sources */, - B324C49021919DC9009F4EDC /* dsp4.cpp in Sources */, - B324C49121919DC9009F4EDC /* serialization.cpp in Sources */, - B324C49221919DC9009F4EDC /* serialization.cpp in Sources */, - B324C49321919DC9009F4EDC /* st010.cpp in Sources */, - B324C49421919DC9009F4EDC /* table.cpp in Sources */, - B324C49521919DC9009F4EDC /* bsx_base.cpp in Sources */, - B324C49621919DC9009F4EDC /* envelope.cpp in Sources */, - B324C49721919DC9009F4EDC /* dsp1.cpp in Sources */, - B324C49821919DC9009F4EDC /* system.cpp in Sources */, - B324C49921919DC9009F4EDC /* st010_op.cpp in Sources */, - B324C49A21919DC9009F4EDC /* sdd1.cpp in Sources */, - B324C49B21919DC9009F4EDC /* misc.cpp in Sources */, - B324C49C21919DC9009F4EDC /* serialization.cpp in Sources */, - B324C49D21919DC9009F4EDC /* audio.cpp in Sources */, - B324C49E21919DC9009F4EDC /* timing.cpp in Sources */, - B324C49F21919DC9009F4EDC /* generic.cpp in Sources */, - B324C4A021919DC9009F4EDC /* serialization.cpp in Sources */, - B324C4A121919DC9009F4EDC /* serialization.cpp in Sources */, - B324C4A221919DC9009F4EDC /* algorithms.cpp in Sources */, - B324C4A321919DC9009F4EDC /* scheduler.cpp in Sources */, - B324C4A421919DC9009F4EDC /* superfx.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C4AD21919E72009F4EDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C4AE21919E72009F4EDC /* sram.cpp in Sources */, - B324C4AF21919E72009F4EDC /* Mode1.cpp in Sources */, - B324C4B021919E72009F4EDC /* Mode0.cpp in Sources */, - B324C4B121919E72009F4EDC /* Globals.cpp in Sources */, - B324C4B221919E72009F4EDC /* Sound.cpp in Sources */, - B324C4B321919E72009F4EDC /* flash.cpp in Sources */, - B324C4B421919E72009F4EDC /* bios.cpp in Sources */, - B324C4B521919E72009F4EDC /* arm.cpp in Sources */, - B324C4B621919E72009F4EDC /* thumb.cpp in Sources */, - B324C4B721919E72009F4EDC /* Mode3.cpp in Sources */, - B324C4B821919E72009F4EDC /* Mode4.cpp in Sources */, - B324C4B921919E72009F4EDC /* Mode5.cpp in Sources */, - B324C4BA21919E72009F4EDC /* Gfx.cpp in Sources */, - B324C4BB21919E72009F4EDC /* eeprom.cpp in Sources */, - B324C4BC21919E72009F4EDC /* GBA.cpp in Sources */, - B324C4BD21919E72009F4EDC /* RTC.cpp in Sources */, - B324C4BE21919E72009F4EDC /* Mode2.cpp in Sources */, - B324C4BF21919E72009F4EDC /* GBAinline.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C4C92191A1AC009F4EDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C4CA2191A1AC009F4EDC /* memory.cpp in Sources */, - B324C4CB2191A1AC009F4EDC /* sound.cpp in Sources */, - B324C4CC2191A1AC009F4EDC /* gb.cpp in Sources */, - B324C4CD2191A1AC009F4EDC /* z80.cpp in Sources */, - B324C4CE2191A1AC009F4EDC /* gfx.cpp in Sources */, - B324C4CF2191A1AC009F4EDC /* gbGlobals.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B324C53D2191A8A5009F4EDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C53E2191A8A5009F4EDC /* mpc_decoder.c in Sources */, - B324C53F2191A8A5009F4EDC /* mpc_bits_reader.c in Sources */, - B324C5402191A8A5009F4EDC /* huffman.c in Sources */, - B324C5412191A8A5009F4EDC /* synth_filter.c in Sources */, - B324C5422191A8A5009F4EDC /* mpc_demux.c in Sources */, - B324C5432191A8A5009F4EDC /* streaminfo.c in Sources */, - B324C5442191A8A5009F4EDC /* requant.c in Sources */, - B324C5452191A8A5009F4EDC /* crc32.c in Sources */, + B333558A207B1DA80036A448 /* string.cpp in Sources */, + B3335560207B1DA80036A448 /* cputest.c in Sources */, + B3FBDFB3207FFC6100E661D1 /* snes.cpp in Sources */, + B3335596207B1DA80036A448 /* sha256.cpp in Sources */, + B3335581207B1DA80036A448 /* Stream.cpp in Sources */, + B333555B207B1DA80036A448 /* git.cpp in Sources */, + B3335597207B1DA80036A448 /* player.cpp in Sources */, + 11AFB328248813A9000A3922 /* CDInterface_ST.cpp in Sources */, + B333555F207B1DA80036A448 /* IPSPatcher.cpp in Sources */, + B3335573207B1DA80036A448 /* GZFileStream.cpp in Sources */, + B3335583207B1DA80036A448 /* resample.c in Sources */, + 11AFB32A248813A9000A3922 /* CDInterface_MT.cpp in Sources */, + B333558C207B1DA80036A448 /* file.cpp in Sources */, + B3335591207B1DA80036A448 /* escape.cpp in Sources */, + 11AFB2C424880B99000A3922 /* NativeVFS.cpp in Sources */, + B3335566207B1DA80036A448 /* memory.cpp in Sources */, + B333558B207B1DA80036A448 /* cdplay.cpp in Sources */, + B3335589207B1DA80036A448 /* netplay.cpp in Sources */, + B3FBDFAF207FFBE500E661D1 /* SNSFLoader.cpp in Sources */, + B333557D207B1DA80036A448 /* general.cpp in Sources */, + 11AFB32C248813A9000A3922 /* CDInterface.cpp in Sources */, + B3335582207B1DA80036A448 /* error.cpp in Sources */, + B3335599207B1DA80036A448 /* Net.cpp in Sources */, + B333556A207B1DA80036A448 /* MemoryStream.cpp in Sources */, + B333559A207B1DA80036A448 /* FileStream.cpp in Sources */, + 11AFB2C224880B99000A3922 /* MTStreamReader.cpp in Sources */, + B333557B207B1DA80036A448 /* psx.cpp in Sources */, + 11AFB2BE24880B99000A3922 /* ExtMemStream.cpp in Sources */, + B3335570207B1DA80036A448 /* gb.cpp in Sources */, + B333556E207B1DA80036A448 /* sha1.cpp in Sources */, + 11AFB33124881CBB000A3922 /* MThreading_POSIX.cpp in Sources */, + 11AFB31F2488132B000A3922 /* Deinterlacer_Blend.cpp in Sources */, + B333555E207B1DA80036A448 /* endian.cpp in Sources */, + B333557F207B1DA80036A448 /* state_rewind.cpp in Sources */, + B333557C207B1DA80036A448 /* debug.cpp in Sources */, + B333556B207B1DA80036A448 /* ZLInflateFilter.cpp in Sources */, + 11AFB2D024880BF4000A3922 /* SwiftResampler.cpp in Sources */, + B3335590207B1DA80036A448 /* Net_POSIX.cpp in Sources */, + 11AFB2C024880B99000A3922 /* VirtualFS.cpp in Sources */, + 11AFB3212488132B000A3922 /* Deinterlacer_Simple.cpp in Sources */, + B3FBDFB0207FFC1E00E661D1 /* SPCReader.cpp in Sources */, + 11AFB2CE24880BF4000A3922 /* DSPUtility.cpp in Sources */, + B3335580207B1DA80036A448 /* settings.cpp in Sources */, + B3335559207B1DA80036A448 /* state.cpp in Sources */, + B3335595207B1DA80036A448 /* mednafen.cpp in Sources */, + B3335577207B1DA80036A448 /* movie.cpp in Sources */, + B3335568207B1DA80036A448 /* ZIPReader.cpp in Sources */, + B3335598207B1DA80036A448 /* mempatcher.cpp in Sources */, + B3335567207B1DA80036A448 /* PSFLoader.cpp in Sources */, + 11AFB339248820AF000A3922 /* crc.cpp in Sources */, + B333558F207B1DA80036A448 /* md5.cpp in Sources */, + B333556C207B1DA80036A448 /* demo.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C54F2191AAD1009F4EDC /* Sources */ = { + B333559E207B1E930036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0AF2CF85259CBB9D00E6A51F /* superfx.cpp in Sources */, - B324C5502191AAD1009F4EDC /* input.cpp in Sources */, - 11AFB31A24881207000A3922 /* sa1cpu.cpp in Sources */, - B324C5512191AAD1009F4EDC /* ppu.cpp in Sources */, - 11AFB2EE24880C4A000A3922 /* msu1.cpp in Sources */, - B324C5522191AAD1009F4EDC /* apu.cpp in Sources */, - 11AFB2F024880C4A000A3922 /* ppu_mtrender.cpp in Sources */, - 11AFB2EF24880C4A000A3922 /* ppu_mt.cpp in Sources */, - 11AFB31624881207000A3922 /* cx4.cpp in Sources */, - 11AFB31724881207000A3922 /* dsp1.cpp in Sources */, - 11AFB31824881207000A3922 /* dsp2.cpp in Sources */, - B324C5532191AAD1009F4EDC /* cpu.cpp in Sources */, - 11AFB31B24881207000A3922 /* sdd1.cpp in Sources */, - B324C5542191AAD1009F4EDC /* snes.cpp in Sources */, - B324C5552191AAD1009F4EDC /* cart.cpp in Sources */, - 11AFB2EC24880C4A000A3922 /* debug.cpp in Sources */, - 11AFB31924881207000A3922 /* sa1.cpp in Sources */, - 11AFB2F124880C4A000A3922 /* ppu_st.cpp in Sources */, - 11AFB2ED24880C4A000A3922 /* dis65816.cpp in Sources */, + B33355AE207B1EAE0036A448 /* mpc_decoder.c in Sources */, + B33355AD207B1EAE0036A448 /* mpc_bits_reader.c in Sources */, + B33355AC207B1EAE0036A448 /* huffman.c in Sources */, + B33355B2207B1EAE0036A448 /* synth_filter.c in Sources */, + B33355AF207B1EAE0036A448 /* mpc_demux.c in Sources */, + B33355B1207B1EAE0036A448 /* streaminfo.c in Sources */, + B33355B0207B1EAE0036A448 /* requant.c in Sources */, + B33355AB207B1EAE0036A448 /* crc32.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C55F2191AAFE009F4EDC /* Sources */ = { + B33355B4207B20420036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C5602191AAFE009F4EDC /* triostr.c in Sources */, - B324C5612191AAFE009F4EDC /* trio.c in Sources */, - B324C5622191AAFE009F4EDC /* trionan.c in Sources */, + B33355C1207B205E0036A448 /* quicklz.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C56C2191AB34009F4EDC /* Sources */ = { + B33355C3207B20BE0036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C56D2191AB34009F4EDC /* bitwise.c in Sources */, - B324C56E2191AB34009F4EDC /* synthesis.c in Sources */, - B324C56F2191AB34009F4EDC /* vorbisfile.c in Sources */, - B324C5702191AB34009F4EDC /* window.c in Sources */, - B324C5712191AB34009F4EDC /* floor1.c in Sources */, - B324C5722191AB34009F4EDC /* framing.c in Sources */, - B324C5732191AB34009F4EDC /* sharedbook.c in Sources */, - B324C5742191AB34009F4EDC /* codebook.c in Sources */, - B324C5752191AB34009F4EDC /* registry.c in Sources */, - B324C5762191AB34009F4EDC /* block.c in Sources */, - B324C5772191AB34009F4EDC /* floor0.c in Sources */, - B324C5782191AB34009F4EDC /* info.c in Sources */, - B324C5792191AB34009F4EDC /* res012.c in Sources */, - B324C57A2191AB34009F4EDC /* mapping0.c in Sources */, - B324C57B2191AB34009F4EDC /* mdct.c in Sources */, + B33355D1207B20E50036A448 /* bitwise.c in Sources */, + B33355DD207B20E50036A448 /* synthesis.c in Sources */, + B33355DE207B20E50036A448 /* vorbisfile.c in Sources */, + B33355DF207B20E50036A448 /* window.c in Sources */, + B33355D5207B20E50036A448 /* floor1.c in Sources */, + B33355D6207B20E50036A448 /* framing.c in Sources */, + B33355DC207B20E50036A448 /* sharedbook.c in Sources */, + B33355D3207B20E50036A448 /* codebook.c in Sources */, + B33355DA207B20E50036A448 /* registry.c in Sources */, + B33355D2207B20E50036A448 /* block.c in Sources */, + B33355D4207B20E50036A448 /* floor0.c in Sources */, + B33355D7207B20E50036A448 /* info.c in Sources */, + B33355DB207B20E50036A448 /* res012.c in Sources */, + B33355D8207B20E50036A448 /* mapping0.c in Sources */, + B33355D9207B20E50036A448 /* mdct.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5842191AB4E009F4EDC /* Sources */ = { + B33355E0207B278E0036A448 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C5852191AB4E009F4EDC /* quicklz.c in Sources */, + B33355EF207B27B60036A448 /* triostr.c in Sources */, + B33355ED207B27B60036A448 /* trio.c in Sources */, + B33355EE207B27B60036A448 /* trionan.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5902191AB9D009F4EDC /* Sources */ = { + B340E45D1E08887600AD0E8B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C5912191AB9D009F4EDC /* png.cpp in Sources */, - B324C5922191AB9D009F4EDC /* font-data.cpp in Sources */, - B324C5932191AB9D009F4EDC /* Deinterlacer.cpp in Sources */, - B324C5942191AB9D009F4EDC /* primitives.cpp in Sources */, - B324C5952191AB9D009F4EDC /* video.cpp in Sources */, - B324C5962191AB9D009F4EDC /* resize.cpp in Sources */, - B324C5972191AB9D009F4EDC /* surface.cpp in Sources */, - B324C5982191AB9D009F4EDC /* text.cpp in Sources */, - B324C5992191AB9D009F4EDC /* tblur.cpp in Sources */, + B33355F1207B2A650036A448 /* MednafenGameCore.swift in Sources */, + B3AAB43F2073820C0097D86F /* MednafenMultiDisc.m in Sources */, + B3AAB425207379230097D86F /* stubs.mm in Sources */, + B3AAB4402073820C0097D86F /* MednafenMultiTap.m in Sources */, + B3AAB43D2073820C0097D86F /* MednafenGameCore.mm in Sources */, + C66D56112626B12100CDECE9 /* Time_POSIX.cpp in Sources */, + B3B8C3BF290E15EC002B839A /* MednafenGameCore+Controls.mm in Sources */, + B333559D207B1DC50036A448 /* thread.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5A22191ABAD009F4EDC /* Sources */ = { + B393F246277C0BF70097F71C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C6E1B64F25AAA24A007C3CF1 /* DSPUtility.cpp in Sources */, - C6E1B65125AAA24A007C3CF1 /* SwiftResampler.cpp in Sources */, - B324C5A32191ABAD009F4EDC /* Blip_Buffer.cpp in Sources */, - B324C5A42191ABAD009F4EDC /* OwlResampler.cpp in Sources */, - B324C5A52191ABAD009F4EDC /* okiadpcm.cpp in Sources */, - B324C5A62191ABAD009F4EDC /* WAVRecord.cpp in Sources */, - B324C5A72191ABAD009F4EDC /* Fir_Resampler.cpp in Sources */, - B324C5A82191ABAD009F4EDC /* Stereo_Buffer.cpp in Sources */, + B393F252277C0C1C0097F71C /* m68k.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5B12191ABB7009F4EDC /* Sources */ = { + B3FBDEF4207FF0E300E661D1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C5B32191ABB7009F4EDC /* CDAccess_Image.cpp in Sources */, - B324C5B42191ABB7009F4EDC /* l-ec.cpp in Sources */, - B324C5B52191ABB7009F4EDC /* CDAFReader_Vorbis.cpp in Sources */, - B324C5B62191ABB7009F4EDC /* crc32.cpp in Sources */, - B324C5B72191ABB7009F4EDC /* galois.cpp in Sources */, - B324C5B82191ABB7009F4EDC /* scsicd.cpp in Sources */, - B324C5B92191ABB7009F4EDC /* CDAccess_CCD.cpp in Sources */, - C66D56232626B4E700CDECE9 /* CDAFReader_PCM.cpp in Sources */, - B324C5BA2191ABB7009F4EDC /* CDAccess.cpp in Sources */, - B324C5BB2191ABB7009F4EDC /* CDUtility.cpp in Sources */, - B324C5BC2191ABB7009F4EDC /* CDAFReader.cpp in Sources */, - B324C5BD2191ABB7009F4EDC /* lec.cpp in Sources */, - B324C5BE2191ABB7009F4EDC /* CDAFReader_MPC.cpp in Sources */, - B324C5BF2191ABB7009F4EDC /* recover-raw.cpp in Sources */, + B3FBDF97207FF43000E661D1 /* smp.cpp in Sources */, + B3FBDF6F207FF37C00E661D1 /* bus.cpp in Sources */, + B3FBDF80207FF3BC00E661D1 /* opcodes.cpp in Sources */, + B3FBDF84207FF3BC00E661D1 /* bus.cpp in Sources */, + B3FBDF2C207FF22000E661D1 /* echo.cpp in Sources */, + B3FBDF4B207FF30A00E661D1 /* ppu.cpp in Sources */, + B3FBDF07207FF1AF00E661D1 /* algorithms.cpp in Sources */, + B3FBDF5B207FF34700E661D1 /* cx4.cpp in Sources */, + B3FBDF0C207FF1AF00E661D1 /* opcode_write.cpp in Sources */, + B3FBDF76207FF39000E661D1 /* decomp.cpp in Sources */, + B3FBDF04207FF19800E661D1 /* serialization.cpp in Sources */, + B3FBDF7F207FF3BC00E661D1 /* opcode_table.cpp in Sources */, + B3FBDF59207FF33E00E661D1 /* bsx.cpp in Sources */, + B3FBDF93207FF40800E661D1 /* opcode_mov.cpp in Sources */, + B3FBDF19207FF1CD00E661D1 /* cpu.cpp in Sources */, + B3FBDF64207FF35700E661D1 /* dsp2.cpp in Sources */, + B3FBDF1D207FF1EB00E661D1 /* gameboyheader.cpp in Sources */, + B3FBDF4A207FF2D700E661D1 /* arm.c in Sources */, + B3FBDF51207FF31200E661D1 /* bg.cpp in Sources */, + B3FBDF11207FF1CD00E661D1 /* scpu.cpp in Sources */, + B3FBDF6E207FF37C00E661D1 /* mmio.cpp in Sources */, + B3FBDF58207FF33E00E661D1 /* bsx_flash.cpp in Sources */, + B3FBDF1F207FF20A00E661D1 /* video.cpp in Sources */, + B3FBDF92207FF40300E661D1 /* opcode_read.cpp in Sources */, + B3FBDF50207FF31200E661D1 /* windows.cpp in Sources */, + B3FBDF6A207FF36600E661D1 /* dsp4emu.c in Sources */, + B3FBDF65207FF35700E661D1 /* serialization.cpp in Sources */, + B3FBDF56207FF31900E661D1 /* serialization.cpp in Sources */, + B3FBDF14207FF1CD00E661D1 /* event.cpp in Sources */, + B3FBDF60207FF34700E661D1 /* functions.cpp in Sources */, + B3FBDF4E207FF31200E661D1 /* line.cpp in Sources */, + B3FBDF2E207FF22000E661D1 /* sdsp.cpp in Sources */, + B3FBDF5D207FF34700E661D1 /* data.cpp in Sources */, + B3FBDF71207FF37C00E661D1 /* dma.cpp in Sources */, + B3FBDF67207FF35E00E661D1 /* dsp3.cpp in Sources */, + B3FBDF77207FF39000E661D1 /* spc7110.cpp in Sources */, + B3FBDF0A207FF1AF00E661D1 /* table.cpp in Sources */, + B3FBDF63207FF34F00E661D1 /* serialization.cpp in Sources */, + B3FBDF10207FF1CD00E661D1 /* memory.cpp in Sources */, + B3FBDF83207FF3BC00E661D1 /* mmio.cpp in Sources */, + B3FBDF62207FF34F00E661D1 /* dsp1emu.cpp in Sources */, + B3FBDF1C207FF1EB00E661D1 /* serialization.cpp in Sources */, + B3FBDF54207FF31200E661D1 /* oam.cpp in Sources */, + B3FBDF49207FF2D700E661D1 /* libco.c in Sources */, + B3FBDF13207FF1CD00E661D1 /* joypad.cpp in Sources */, + B3FBDF1A207FF1EB00E661D1 /* cartridge.cpp in Sources */, + B3FBDF55207FF31200E661D1 /* cache.cpp in Sources */, + B3FBDF8C207FF3E400E661D1 /* opcode_misc.cpp in Sources */, + B3FBDF82207FF3BC00E661D1 /* disasm.cpp in Sources */, + B3FBDF09207FF1AF00E661D1 /* core.cpp in Sources */, + B3FBDF53207FF31200E661D1 /* addsub.cpp in Sources */, + B3FBDF0B207FF1AF00E661D1 /* opcode_misc.cpp in Sources */, + B3FBDF74207FF38900E661D1 /* sdd1emu.cpp in Sources */, + B3FBDF29207FF22000E661D1 /* brr.cpp in Sources */, + B3FBDF05207FF19800E661D1 /* system.cpp in Sources */, + B3FBDF75207FF38900E661D1 /* serialization.cpp in Sources */, + B3FBDF06207FF19D00E661D1 /* memory.cpp in Sources */, + B3FBDF2A207FF22000E661D1 /* counter.cpp in Sources */, + B3FBDF6B207FF36C00E661D1 /* obc1.cpp in Sources */, + B3FBDF20207FF20A00E661D1 /* config.cpp in Sources */, + B3FBDF26207FF22000E661D1 /* voice.cpp in Sources */, + B3FBDF7E207FF3BC00E661D1 /* core.cpp in Sources */, + B3FBDF72207FF37C00E661D1 /* sa1.cpp in Sources */, + B3FBDF8A207FF3DF00E661D1 /* opcode_pc.cpp in Sources */, + B3FBDF79207FF39A00E661D1 /* srtc.cpp in Sources */, + B3FBDF4C207FF30A00E661D1 /* memory.cpp in Sources */, + B3FBDF7C207FF3A400E661D1 /* serialization.cpp in Sources */, + B3FBDF6C207FF36C00E661D1 /* serialization.cpp in Sources */, + B3FBDF0E207FF1AF00E661D1 /* opcode_pc.cpp in Sources */, + B3FBDF89207FF3DF00E661D1 /* serialization.cpp in Sources */, + B3FBDF5F207FF34700E661D1 /* opcodes.cpp in Sources */, + B3FBDF1B207FF1EB00E661D1 /* header.cpp in Sources */, + B3FBDF88207FF3D500E661D1 /* opcode_rmw.cpp in Sources */, + B3FBDF66207FF35700E661D1 /* opcodes.cpp in Sources */, + B3FBDF12207FF1CD00E661D1 /* mmio.cpp in Sources */, + B3FBDF5C207FF34700E661D1 /* oam.cpp in Sources */, + B3FBDF0F207FF1AF00E661D1 /* opcode_rmw.cpp in Sources */, + B3FBDF01207FF13400E661D1 /* interface.cpp in Sources */, + B3FBDF81207FF3BC00E661D1 /* memory.cpp in Sources */, + B3FBDF21207FF20A00E661D1 /* input.cpp in Sources */, + B3FBDF1E207FF1F400E661D1 /* cheat.cpp in Sources */, + B3FBDF57207FF33E00E661D1 /* bsx_cart.cpp in Sources */, + B3FBDF16207FF1CD00E661D1 /* irq.cpp in Sources */, + B3FBDF4D207FF30A00E661D1 /* mmio.cpp in Sources */, + B3FBDF86207FF3BC00E661D1 /* serialization.cpp in Sources */, + B3FBDF08207FF1AF00E661D1 /* opcode_read.cpp in Sources */, + B3FBDF68207FF35E00E661D1 /* dsp3emu.c in Sources */, + B3FBDF7A207FF39A00E661D1 /* serialization.cpp in Sources */, + B3FBDF18207FF1CD00E661D1 /* dma.cpp in Sources */, + B3FBDF52207FF31200E661D1 /* mode7.cpp in Sources */, + B3FBDF46207FF2D700E661D1 /* sjlj.c in Sources */, + B3FBDF24207FF20A00E661D1 /* serialization.cpp in Sources */, + B3FBDF03207FF19800E661D1 /* smemory.cpp in Sources */, + B3FBDF0D207FF1AF00E661D1 /* serialization.cpp in Sources */, + B3FBDF6D207FF37C00E661D1 /* memory.cpp in Sources */, + B3FBDF28207FF22000E661D1 /* gaussian.cpp in Sources */, + B3FBDF15207FF1CD00E661D1 /* timing.cpp in Sources */, + B3FBDF4F207FF31200E661D1 /* render.cpp in Sources */, + B3FBDF69207FF36600E661D1 /* dsp4.cpp in Sources */, + B3FBDF2B207FF22000E661D1 /* serialization.cpp in Sources */, + B3FBDF17207FF1CD00E661D1 /* serialization.cpp in Sources */, + B3FBDF7D207FF3A400E661D1 /* st010.cpp in Sources */, + B3FBDF8B207FF3E400E661D1 /* table.cpp in Sources */, + B3FBDF5A207FF33E00E661D1 /* bsx_base.cpp in Sources */, + B3FBDF2D207FF22000E661D1 /* envelope.cpp in Sources */, + B3FBDF61207FF34F00E661D1 /* dsp1.cpp in Sources */, + B3FBDF25207FF20A00E661D1 /* system.cpp in Sources */, + B3FBDF7B207FF3A400E661D1 /* st010_op.cpp in Sources */, + B3FBDF73207FF38900E661D1 /* sdd1.cpp in Sources */, + B3FBDF27207FF22000E661D1 /* misc.cpp in Sources */, + B3FBDF70207FF37C00E661D1 /* serialization.cpp in Sources */, + B3FBDF23207FF20A00E661D1 /* audio.cpp in Sources */, + B3FBDF85207FF3BC00E661D1 /* timing.cpp in Sources */, + B3FBDF02207FF19800E661D1 /* generic.cpp in Sources */, + B3FBDF78207FF39000E661D1 /* serialization.cpp in Sources */, + B3FBDF5E207FF34700E661D1 /* serialization.cpp in Sources */, + B3FBDF94207FF40F00E661D1 /* algorithms.cpp in Sources */, + B3FBDF22207FF20A00E661D1 /* scheduler.cpp in Sources */, + B3FBDF87207FF3BC00E661D1 /* superfx.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5CB2191ACE1009F4EDC /* Sources */ = { + B3FBDF9B207FF5D800E661D1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C5CC2191ACE1009F4EDC /* huc6273.cpp in Sources */, - B324C5CD2191ACE1009F4EDC /* pcfx.cpp in Sources */, - B324C5CE2191ACE1009F4EDC /* timer.cpp in Sources */, - B324C5CF2191ACE1009F4EDC /* king.cpp in Sources */, - B324C5D12191ACE1009F4EDC /* input.cpp in Sources */, - 11AFB33524882054000A3922 /* idct.cpp in Sources */, - B324C5D22191ACE1009F4EDC /* fxscsi.cpp in Sources */, - B324C5D32191ACE1009F4EDC /* rainbow.cpp in Sources */, - B324C5D42191ACE1009F4EDC /* interrupt.cpp in Sources */, - B324C5D52191ACE1009F4EDC /* gamepad.cpp in Sources */, - B324C5D62191ACE1009F4EDC /* soundbox.cpp in Sources */, - B324C5D72191ACE1009F4EDC /* mouse.cpp in Sources */, + 0AF2CF4C259CBB8E00E6A51F /* superfx.cpp in Sources */, + B3FBDFA9207FF5F200E661D1 /* input.cpp in Sources */, + 11AFB31324881206000A3922 /* sa1cpu.cpp in Sources */, + B3FBDFA8207FF5F200E661D1 /* ppu.cpp in Sources */, + 11AFB2E824880C49000A3922 /* msu1.cpp in Sources */, + B3FBDFAB207FF5F200E661D1 /* apu.cpp in Sources */, + 11AFB2EA24880C49000A3922 /* ppu_mtrender.cpp in Sources */, + 11AFB2E924880C49000A3922 /* ppu_mt.cpp in Sources */, + 11AFB30F24881206000A3922 /* cx4.cpp in Sources */, + 11AFB31024881206000A3922 /* dsp1.cpp in Sources */, + 11AFB31124881206000A3922 /* dsp2.cpp in Sources */, + B3FBDFAC207FF5F200E661D1 /* cpu.cpp in Sources */, + 11AFB31424881206000A3922 /* sdd1.cpp in Sources */, + B3FBDFAA207FF5F200E661D1 /* snes.cpp in Sources */, + B3FBDFAD207FF5F200E661D1 /* cart.cpp in Sources */, + 11AFB2E624880C49000A3922 /* debug.cpp in Sources */, + 11AFB31224881206000A3922 /* sa1.cpp in Sources */, + 11AFB2EB24880C49000A3922 /* ppu_st.cpp in Sources */, + 11AFB2E724880C49000A3922 /* dis65816.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B324C5E12191AD13009F4EDC /* Sources */ = { + C6E1B65425AAC123007C3CF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B324C5E22191AD13009F4EDC /* v30mz.cpp in Sources */, - B324C5E32191AD13009F4EDC /* gfx.cpp in Sources */, - B324C5E42191AD13009F4EDC /* comm.cpp in Sources */, - B324C5E52191AD13009F4EDC /* memory.cpp in Sources */, - B324C5E62191AD13009F4EDC /* sound.cpp in Sources */, - B324C5E72191AD13009F4EDC /* eeprom.cpp in Sources */, - B324C5E82191AD13009F4EDC /* main.cpp in Sources */, - B324C5E92191AD13009F4EDC /* tcache.cpp in Sources */, - B324C5EA2191AD13009F4EDC /* interrupt.cpp in Sources */, - B324C5EB2191AD13009F4EDC /* rtc.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B32CF13821923EB40058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF13921923EB40058E2E7 /* Sms_Apu.cpp in Sources */, - B32CF13A21923EB40058E2E7 /* Ym2612_Emu.cpp in Sources */, - B32CF13B21923EB40058E2E7 /* Gb_Apu_State.cpp in Sources */, - B32CF13C21923EB40058E2E7 /* pce_psg.cpp in Sources */, - B32CF13D21923EB40058E2E7 /* Gb_Oscs.cpp in Sources */, - B32CF13E21923EB40058E2E7 /* Gb_Apu.cpp in Sources */, - B32CF13F21923EB40058E2E7 /* emu2413.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B32CF14921923F330058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF14A21923F330058E2E7 /* vsu.cpp in Sources */, - B32CF14B21923F330058E2E7 /* input.cpp in Sources */, - B32CF14C21923F330058E2E7 /* vip.cpp in Sources */, - B32CF14D21923F330058E2E7 /* timer.cpp in Sources */, - B32CF14E21923F330058E2E7 /* vb.cpp in Sources */, + C6E1B66F25AAC1B1007C3CF1 /* scu_dsp_misc.cpp in Sources */, + C6E1B67025AAC1B1007C3CF1 /* scu_dsp_jmp.cpp in Sources */, + C6E1B67125AAC1B1007C3CF1 /* 3dpad.cpp in Sources */, + C6E1B67225AAC1B1007C3CF1 /* mouse.cpp in Sources */, + C6E1B67325AAC1B1007C3CF1 /* gamepad.cpp in Sources */, + C6E1B67425AAC1B1007C3CF1 /* multitap.cpp in Sources */, + C6E1B67525AAC1B1007C3CF1 /* wheel.cpp in Sources */, + C6E1B67625AAC1B1007C3CF1 /* gun.cpp in Sources */, + C6E1B67725AAC1B1007C3CF1 /* mission.cpp in Sources */, + C6E1B67825AAC1B1007C3CF1 /* keyboard.cpp in Sources */, + C6E1B67925AAC1B1007C3CF1 /* jpkeyboard.cpp in Sources */, + C6E1B67A25AAC1B1007C3CF1 /* db.cpp in Sources */, + C6E1B67B25AAC1B1007C3CF1 /* scu_dsp_mvi.cpp in Sources */, + C6E1B67C25AAC1B1007C3CF1 /* vdp2_render.cpp in Sources */, + C6E1B67D25AAC1B1007C3CF1 /* vdp1_poly.cpp in Sources */, + C6E1B67E25AAC1B1007C3CF1 /* ssf.cpp in Sources */, + C6E1B67F25AAC1B1007C3CF1 /* gen_dsp.cpp in Sources */, + C6E1B68025AAC1B1007C3CF1 /* ss.cpp in Sources */, + C6E1B68125AAC1B1007C3CF1 /* smpc.cpp in Sources */, + C6E1B68225AAC1B1007C3CF1 /* sound.cpp in Sources */, + C6E1B68325AAC1B1007C3CF1 /* ar4mp.cpp in Sources */, + C6E1B68425AAC1B1007C3CF1 /* extram.cpp in Sources */, + C6E1B68525AAC1B1007C3CF1 /* backup.cpp in Sources */, + C6E1B68625AAC1B1007C3CF1 /* rom.cpp in Sources */, + C6E1B68725AAC1B1007C3CF1 /* debug.cpp in Sources */, + C6E1B68825AAC1B2007C3CF1 /* cs1ram.cpp in Sources */, + C6E1B68925AAC1B2007C3CF1 /* vdp1_sprite.cpp in Sources */, + C6E1B68A25AAC1B2007C3CF1 /* vdp1_line.cpp in Sources */, + C6E1B68B25AAC1B2007C3CF1 /* cdb.cpp in Sources */, + C6E1B68C25AAC1B2007C3CF1 /* vdp2.cpp in Sources */, + C6E1B68D25AAC1B2007C3CF1 /* cart.cpp in Sources */, + C6E1B68E25AAC1B2007C3CF1 /* vdp1.cpp in Sources */, + C6E1B68F25AAC1B2007C3CF1 /* scu_dsp_gen.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B32CF15721923F520058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF15821923F520058E2E7 /* T6W28_Apu.cpp in Sources */, - B32CF15921923F520058E2E7 /* neopop.cpp in Sources */, - B32CF15A21923F520058E2E7 /* flash.cpp in Sources */, - B32CF15B21923F520058E2E7 /* gfx.cpp in Sources */, - B32CF15C21923F520058E2E7 /* TLCS900h_interpret.cpp in Sources */, - B32CF15D21923F520058E2E7 /* dma.cpp in Sources */, - B32CF15E21923F520058E2E7 /* TLCS900h_disassemble_src.cpp in Sources */, - B32CF15F21923F520058E2E7 /* interrupt.cpp in Sources */, - B32CF16021923F520058E2E7 /* biosHLE.cpp in Sources */, - B32CF16121923F520058E2E7 /* gfx_scanline_colour.cpp in Sources */, - B32CF16221923F520058E2E7 /* Z80_interface.cpp in Sources */, - B32CF16321923F520058E2E7 /* TLCS900h_disassemble_dst.cpp in Sources */, - B32CF16421923F520058E2E7 /* TLCS900h_interpret_reg.cpp in Sources */, - B32CF16521923F520058E2E7 /* TLCS900h_registers.cpp in Sources */, - B32CF16621923F520058E2E7 /* TLCS900h_disassemble.cpp in Sources */, - B32CF16721923F520058E2E7 /* mem.cpp in Sources */, - B32CF16821923F520058E2E7 /* TLCS900h_interpret_dst.cpp in Sources */, - B32CF16921923F520058E2E7 /* TLCS900h_interpret_single.cpp in Sources */, - B32CF16A21923F520058E2E7 /* sound.cpp in Sources */, - B32CF16B21923F520058E2E7 /* TLCS900h_disassemble_extra.cpp in Sources */, - B32CF16C21923F520058E2E7 /* rom.cpp in Sources */, - B32CF16D21923F520058E2E7 /* TLCS900h_disassemble_reg.cpp in Sources */, - B32CF16E21923F520058E2E7 /* rtc.cpp in Sources */, - B32CF16F21923F520058E2E7 /* TLCS900h_interpret_src.cpp in Sources */, - B32CF17021923F520058E2E7 /* bios.cpp in Sources */, - B32CF17121923F520058E2E7 /* gfx_scanline_mono.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B31737FE2783F8AF002D3ACD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B393F245277C0BF70097F71C /* hwcpu-m68k */; + targetProxy = B31737FD2783F8AF002D3ACD /* PBXContainerItemProxy */; }; - B32CF17A21923F740058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF17B21923F740058E2E7 /* system.cpp in Sources */, - B32CF17C21923F740058E2E7 /* susie.cpp in Sources */, - B32CF17D21923F740058E2E7 /* rom.cpp in Sources */, - B32CF17E21923F740058E2E7 /* memmap.cpp in Sources */, - B32CF17F21923F740058E2E7 /* ram.cpp in Sources */, - B32CF18021923F740058E2E7 /* mikie.cpp in Sources */, - B32CF18121923F740058E2E7 /* c65c02.cpp in Sources */, - B32CF18221923F740058E2E7 /* cart.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB5882106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B333502C207AFBA30036A448 /* psx */; + targetProxy = B34AB5872106DF8400C45F09 /* PBXContainerItemProxy */; }; - B32CF18B21923F790058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF18C21923F790058E2E7 /* tsushin.cpp in Sources */, - B32CF18D21923F790058E2E7 /* mcgenjin.cpp in Sources */, - B32CF18E21923F790058E2E7 /* tsushinkb.cpp in Sources */, - B32CF18F21923F790058E2E7 /* gamepad.cpp in Sources */, - B32CF19021923F790058E2E7 /* pcecd.cpp in Sources */, - B32CF19121923F790058E2E7 /* huc6280.cpp in Sources */, - B32CF19221923F790058E2E7 /* vce.cpp in Sources */, - B32CF19321923F790058E2E7 /* huc.cpp in Sources */, - B32CF19421923F790058E2E7 /* input.cpp in Sources */, - B32CF19521923F790058E2E7 /* hes.cpp in Sources */, - B32CF19621923F790058E2E7 /* dis6280.cpp in Sources */, - B32CF19721923F790058E2E7 /* pce.cpp in Sources */, - B32CF19821923F790058E2E7 /* mouse.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB58A2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3335061207AFD3D0036A448 /* wonderswan */; + targetProxy = B34AB5892106DF8400C45F09 /* PBXContainerItemProxy */; }; - B32CF1A121923F7F0058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF1A221923F7F0058E2E7 /* pcecd_drive.cpp in Sources */, - B32CF1A321923F7F0058E2E7 /* huc6280.cpp in Sources */, - B32CF1A421923F7F0058E2E7 /* psg.cpp in Sources */, - B32CF1A521923F7F0058E2E7 /* huc.cpp in Sources */, - B32CF1A621923F7F0058E2E7 /* input.cpp in Sources */, - B32CF1A721923F7F0058E2E7 /* pce.cpp in Sources */, - B32CF1A821923F7F0058E2E7 /* vdc.cpp in Sources */, - B32CF1A921923F7F0058E2E7 /* hes.cpp in Sources */, - B32CF1AA21923F7F0058E2E7 /* pcecd.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB58C2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3335091207AFF2B0036A448 /* virtualboy */; + targetProxy = B34AB58B2106DF8400C45F09 /* PBXContainerItemProxy */; }; - B32CF1B321923F850058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF1B421923F850058E2E7 /* system.cpp in Sources */, - B32CF1B521923F850058E2E7 /* pio.cpp in Sources */, - B32CF1B621923F850058E2E7 /* sound.cpp in Sources */, - B32CF1B721923F850058E2E7 /* tms.cpp in Sources */, - B32CF1B821923F850058E2E7 /* memz80.cpp in Sources */, - B32CF1B921923F850058E2E7 /* cart.cpp in Sources */, - B32CF1BA21923F850058E2E7 /* vdp.cpp in Sources */, - B32CF1BB21923F850058E2E7 /* sms.cpp in Sources */, - B32CF1BC21923F850058E2E7 /* render.cpp in Sources */, - B32CF1BD21923F850058E2E7 /* romdb.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB58E2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33350A4207AFFE80036A448 /* nes */; + targetProxy = B34AB58D2106DF8400C45F09 /* PBXContainerItemProxy */; }; - B32CF1C6219240270058E2E7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B32CF1C7219240270058E2E7 /* arcade_card.cpp in Sources */, - C66D561C2626B37300CDECE9 /* testsexp.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB5902106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B333518F207B00F70036A448 /* gb */; + targetProxy = B34AB58F2106DF8400C45F09 /* PBXContainerItemProxy */; }; - B3335029207AFBA30036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B333503F207AFBDE0036A448 /* gte.cpp in Sources */, - B333503C207AFBDE0036A448 /* gpu_polygon.cpp in Sources */, - B3335041207AFBDE0036A448 /* mdec.cpp in Sources */, - B3335046207AFBE70036A448 /* dualanalog.cpp in Sources */, - B3335043207AFBDE0036A448 /* sio.cpp in Sources */, - B333504B207AFBE70036A448 /* memcard.cpp in Sources */, - B3335049207AFBE70036A448 /* guncon.cpp in Sources */, - B333503D207AFBDE0036A448 /* gpu_sprite.cpp in Sources */, - B3335042207AFBDE0036A448 /* psx.cpp in Sources */, - B3335038207AFBDE0036A448 /* dis.cpp in Sources */, - B3335037207AFBDE0036A448 /* cpu.cpp in Sources */, - B3335040207AFBDE0036A448 /* irq.cpp in Sources */, - B3335047207AFBE70036A448 /* dualshock.cpp in Sources */, - B3335044207AFBDE0036A448 /* spu.cpp in Sources */, - B3335039207AFBDE0036A448 /* dma.cpp in Sources */, - B3335045207AFBDE0036A448 /* timer.cpp in Sources */, - B333503A207AFBDE0036A448 /* frontio.cpp in Sources */, - B333503E207AFBDE0036A448 /* gpu.cpp in Sources */, - B3335048207AFBE70036A448 /* gamepad.cpp in Sources */, - B333504A207AFBE70036A448 /* justifier.cpp in Sources */, - B333503B207AFBDE0036A448 /* gpu_line.cpp in Sources */, - B333504E207AFBE70036A448 /* negcon.cpp in Sources */, - B333504D207AFBE70036A448 /* multitap.cpp in Sources */, - B333504C207AFBE70036A448 /* mouse.cpp in Sources */, - B3335036207AFBDE0036A448 /* cdc.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB5922106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33351A3207B01460036A448 /* gba */; + targetProxy = B34AB5912106DF8400C45F09 /* PBXContainerItemProxy */; }; - B333505E207AFD3D0036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3335074207AFD8B0036A448 /* v30mz.cpp in Sources */, - B333506D207AFD8B0036A448 /* gfx.cpp in Sources */, - B333506B207AFD8B0036A448 /* comm.cpp in Sources */, - B3335070207AFD8B0036A448 /* memory.cpp in Sources */, - B3335072207AFD8B0036A448 /* sound.cpp in Sources */, - B333506C207AFD8B0036A448 /* eeprom.cpp in Sources */, - B333506F207AFD8B0036A448 /* main.cpp in Sources */, - B3335073207AFD8B0036A448 /* tcache.cpp in Sources */, - B333506E207AFD8B0036A448 /* interrupt.cpp in Sources */, - B3335071207AFD8B0036A448 /* rtc.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB5942106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33351B0207B01570036A448 /* lynx */; + targetProxy = B34AB5932106DF8400C45F09 /* PBXContainerItemProxy */; }; - B333508E207AFF2B0036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33350A0207AFF560036A448 /* vsu.cpp in Sources */, - B333509B207AFF350036A448 /* input.cpp in Sources */, - B333509F207AFF560036A448 /* vip.cpp in Sources */, - B333509D207AFF560036A448 /* timer.cpp in Sources */, - B333509E207AFF560036A448 /* vb.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; + B34AB5962106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33351BD207B016F0036A448 /* neogeopocket */; + targetProxy = B34AB5952106DF8400C45F09 /* PBXContainerItemProxy */; }; - B33350A1207AFFE80036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B333514D207B00A30036A448 /* 88.cpp in Sources */, - B3335140207B00A30036A448 /* 67.cpp in Sources */, - B3335173207B00A30036A448 /* 248.cpp in Sources */, - B3335133207B00A30036A448 /* 23.cpp in Sources */, - B3335142207B00A30036A448 /* 70.cpp in Sources */, - B333512D207B00A30036A448 /* 8.cpp in Sources */, - B333514F207B00A30036A448 /* 90.cpp in Sources */, - B3335132207B00A30036A448 /* 22.cpp in Sources */, - B333514E207B00A30036A448 /* 89.cpp in Sources */, - B3335141207B00A30036A448 /* 68.cpp in Sources */, - B333518B207B00A30036A448 /* vrc7.cpp in Sources */, - B3335147207B00A30036A448 /* 77.cpp in Sources */, - B3335165207B00A30036A448 /* 187.cpp in Sources */, - B3335137207B00A30036A448 /* 33.cpp in Sources */, - B333516A207B00A30036A448 /* 222.cpp in Sources */, - B33350C1207B00360036A448 /* bbattler2.cpp in Sources */, - B3335158207B00A30036A448 /* 112.cpp in Sources */, - B333516C207B00A30036A448 /* 232.cpp in Sources */, - B3335180207B00A30036A448 /* mmc3.cpp in Sources */, - B3335139207B00A30036A448 /* 38.cpp in Sources */, - B3335169207B00A30036A448 /* 208.cpp in Sources */, - B3335177207B00A30036A448 /* deirom.cpp in Sources */, - B33350B8207B00150036A448 /* nsfe.cpp in Sources */, - B3335146207B00A30036A448 /* 76.cpp in Sources */, - B33350C4207B00360036A448 /* ftrainer.cpp in Sources */, - B333514A207B00A30036A448 /* 82.cpp in Sources */, - B33350CC207B00360036A448 /* toprider.cpp in Sources */, - B33350BE207B001D0036A448 /* ppu.cpp in Sources */, - B3335168207B00A30036A448 /* 193.cpp in Sources */, - B333515E207B00A30036A448 /* 152.cpp in Sources */, - B3335151207B00A30036A448 /* 93.cpp in Sources */, - B3335178207B00A30036A448 /* emu2413.cpp in Sources */, - B3335152207B00A30036A448 /* 94.cpp in Sources */, - B3335135207B00A30036A448 /* 30.cpp in Sources */, - B3335154207B00A30036A448 /* 96.cpp in Sources */, - B333516F207B00A30036A448 /* 241.cpp in Sources */, - B333515F207B00A30036A448 /* 156.cpp in Sources */, - B33350C8207B00360036A448 /* partytap.cpp in Sources */, - B33350BF207B002A0036A448 /* nes_ntsc.cpp in Sources */, - B3335150207B00A30036A448 /* 92.cpp in Sources */, - B3335166207B00A30036A448 /* 189.cpp in Sources */, - B3335174207B00A30036A448 /* 8237.cpp in Sources */, - B33350B6207B00150036A448 /* nes.cpp in Sources */, - B3335156207B00A30036A448 /* 99.cpp in Sources */, - B333517D207B00A30036A448 /* maxicart.cpp in Sources */, - B33350B4207B00150036A448 /* ines.cpp in Sources */, - B3335185207B00A30036A448 /* sachen.cpp in Sources */, - B3335145207B00A30036A448 /* 75.cpp in Sources */, - B33350CB207B00360036A448 /* suborkb.cpp in Sources */, - B3335159207B00A30036A448 /* 113.cpp in Sources */, - B33350C7207B00360036A448 /* oekakids.cpp in Sources */, - B333517B207B00A30036A448 /* h2288.cpp in Sources */, - B33350C2207B00360036A448 /* cursor.cpp in Sources */, - B3335176207B00A30036A448 /* colordreams.cpp in Sources */, - B3335164207B00A30036A448 /* 185.cpp in Sources */, - B333513A207B00A30036A448 /* 40.cpp in Sources */, - B3335131207B00A30036A448 /* 21.cpp in Sources */, - B3335181207B00A30036A448 /* mmc5.cpp in Sources */, - B33350CD207B00360036A448 /* zapper.cpp in Sources */, - B3335144207B00A30036A448 /* 73.cpp in Sources */, - B333515B207B00A30036A448 /* 117.cpp in Sources */, - B3335162207B00A30036A448 /* 182.cpp in Sources */, - B333512F207B00A30036A448 /* 16.cpp in Sources */, - B3335183207B00A30036A448 /* nina06.cpp in Sources */, - B333517A207B00A30036A448 /* fme7.cpp in Sources */, - B3335148207B00A30036A448 /* 78.cpp in Sources */, - B33350B7207B00150036A448 /* nsf.cpp in Sources */, - B33350BB207B00150036A448 /* vsuni.cpp in Sources */, - B333513E207B00A30036A448 /* 51.cpp in Sources */, - B333516D207B00A30036A448 /* 234.cpp in Sources */, - B333512E207B00A30036A448 /* 15.cpp in Sources */, - B333514B207B00A30036A448 /* 86.cpp in Sources */, - B333513D207B00A30036A448 /* 46.cpp in Sources */, - B333514C207B00A30036A448 /* 87.cpp in Sources */, - B333516B207B00A30036A448 /* 228.cpp in Sources */, - B33350B5207B00150036A448 /* input.cpp in Sources */, - B3335182207B00A30036A448 /* n106.cpp in Sources */, - B333515D207B00A30036A448 /* 151.cpp in Sources */, - B3335171207B00A30036A448 /* 244.cpp in Sources */, - B3335188207B00A30036A448 /* supervision.cpp in Sources */, - B33350C5207B00360036A448 /* hypershot.cpp in Sources */, - B3335138207B00A30036A448 /* 34.cpp in Sources */, - B3335153207B00A30036A448 /* 95.cpp in Sources */, - B333515A207B00A30036A448 /* 114.cpp in Sources */, - B333517C207B00A30036A448 /* malee.cpp in Sources */, - B33350B9207B00150036A448 /* sound.cpp in Sources */, - B33350BA207B00150036A448 /* unif.cpp in Sources */, - B3335130207B00A30036A448 /* 18.cpp in Sources */, - B33350C0207B00360036A448 /* arkanoid.cpp in Sources */, - B3335186207B00A30036A448 /* simple.cpp in Sources */, - B33350C9207B00360036A448 /* powerpad.cpp in Sources */, - B333518A207B00A30036A448 /* vrc6.cpp in Sources */, - B3335161207B00A30036A448 /* 180.cpp in Sources */, - B3335170207B00A30036A448 /* 242.cpp in Sources */, - B3335172207B00A30036A448 /* 246.cpp in Sources */, - B3335134207B00A30036A448 /* 25.cpp in Sources */, - B333517E207B00A30036A448 /* mmc1.cpp in Sources */, - B333513B207B00A30036A448 /* 41.cpp in Sources */, - B3335155207B00A30036A448 /* 97.cpp in Sources */, - B3335163207B00A30036A448 /* 184.cpp in Sources */, - B3335167207B00A30036A448 /* 190.cpp in Sources */, - B3335179207B00A30036A448 /* ffe.cpp in Sources */, - B333516E207B00A30036A448 /* 240.cpp in Sources */, - B3335136207B00A30036A448 /* 32.cpp in Sources */, - B3335187207B00A30036A448 /* super24.cpp in Sources */, - B33350B1207B00150036A448 /* fds-sound.cpp in Sources */, - B3335184207B00A30036A448 /* novel.cpp in Sources */, - B33350BD207B001D0036A448 /* palette.cpp in Sources */, - B3335157207B00A30036A448 /* 107.cpp in Sources */, - B3335149207B00A30036A448 /* 80.cpp in Sources */, - B33350B2207B00150036A448 /* fds.cpp in Sources */, - B3335175207B00A30036A448 /* codemasters.cpp in Sources */, - B33350AF207B00150036A448 /* cart.cpp in Sources */, - B33350BC207B00150036A448 /* x6502.cpp in Sources */, - B33350C6207B00360036A448 /* mahjong.cpp in Sources */, - B33350B0207B00150036A448 /* dis6502.cpp in Sources */, - B3335143207B00A30036A448 /* 72.cpp in Sources */, - B333517F207B00A30036A448 /* mmc2and4.cpp in Sources */, - B3335189207B00A30036A448 /* tengen.cpp in Sources */, - B3335160207B00A30036A448 /* 163.cpp in Sources */, - B333513F207B00A30036A448 /* 65.cpp in Sources */, - B333513C207B00A30036A448 /* 42.cpp in Sources */, - B333515C207B00A30036A448 /* 140.cpp in Sources */, - B33350CA207B00360036A448 /* shadow.cpp in Sources */, - B33350C3207B00360036A448 /* fkb.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B333518C207B00F70036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B333519C207B010D0036A448 /* memory.cpp in Sources */, - B333519D207B010D0036A448 /* sound.cpp in Sources */, - B3335199207B010D0036A448 /* gb.cpp in Sources */, - B333519E207B010D0036A448 /* z80.cpp in Sources */, - B333519B207B010D0036A448 /* gfx.cpp in Sources */, - B333519A207B010D0036A448 /* gbGlobals.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351A0207B01460036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B333527C207B02CA0036A448 /* sram.cpp in Sources */, - B3335275207B02CA0036A448 /* Mode1.cpp in Sources */, - B3335274207B02CA0036A448 /* Mode0.cpp in Sources */, - B3335273207B02CA0036A448 /* Globals.cpp in Sources */, - B333527B207B02CA0036A448 /* Sound.cpp in Sources */, - B333526F207B02CA0036A448 /* flash.cpp in Sources */, - B333526D207B02CA0036A448 /* bios.cpp in Sources */, - B333526C207B02CA0036A448 /* arm.cpp in Sources */, - B333527D207B02CA0036A448 /* thumb.cpp in Sources */, - B3335277207B02CA0036A448 /* Mode3.cpp in Sources */, - B3335278207B02CA0036A448 /* Mode4.cpp in Sources */, - B3335279207B02CA0036A448 /* Mode5.cpp in Sources */, - B3335272207B02CA0036A448 /* Gfx.cpp in Sources */, - B333526E207B02CA0036A448 /* eeprom.cpp in Sources */, - B3335270207B02CA0036A448 /* GBA.cpp in Sources */, - B333527A207B02CA0036A448 /* RTC.cpp in Sources */, - B3335276207B02CA0036A448 /* Mode2.cpp in Sources */, - B3335271207B02CA0036A448 /* GBAinline.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351AD207B01570036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B333528D207B02F70036A448 /* system.cpp in Sources */, - B333528C207B02F70036A448 /* susie.cpp in Sources */, - B333528B207B02F70036A448 /* rom.cpp in Sources */, - B3335288207B02F70036A448 /* memmap.cpp in Sources */, - B333528A207B02F70036A448 /* ram.cpp in Sources */, - B3335289207B02F70036A448 /* mikie.cpp in Sources */, - B3335286207B02F70036A448 /* c65c02.cpp in Sources */, - B3335287207B02F70036A448 /* cart.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351BA207B016F0036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3335234207B02530036A448 /* T6W28_Apu.cpp in Sources */, - B3335230207B02530036A448 /* neopop.cpp in Sources */, - B333522A207B02530036A448 /* flash.cpp in Sources */, - B333522D207B02530036A448 /* gfx.cpp in Sources */, - B333523F207B025E0036A448 /* TLCS900h_interpret.cpp in Sources */, - B3335229207B02530036A448 /* dma.cpp in Sources */, - B3335239207B025E0036A448 /* TLCS900h_disassemble_src.cpp in Sources */, - B333522E207B02530036A448 /* interrupt.cpp in Sources */, - B3335228207B02530036A448 /* biosHLE.cpp in Sources */, - B333522B207B02530036A448 /* gfx_scanline_colour.cpp in Sources */, - B3335235207B02530036A448 /* Z80_interface.cpp in Sources */, - B3335236207B025E0036A448 /* TLCS900h_disassemble_dst.cpp in Sources */, - B333523C207B025E0036A448 /* TLCS900h_interpret_reg.cpp in Sources */, - B3335240207B025E0036A448 /* TLCS900h_registers.cpp in Sources */, - B333523A207B025E0036A448 /* TLCS900h_disassemble.cpp in Sources */, - B333522F207B02530036A448 /* mem.cpp in Sources */, - B333523B207B025E0036A448 /* TLCS900h_interpret_dst.cpp in Sources */, - B333523D207B025E0036A448 /* TLCS900h_interpret_single.cpp in Sources */, - B3335233207B02530036A448 /* sound.cpp in Sources */, - B3335237207B025E0036A448 /* TLCS900h_disassemble_extra.cpp in Sources */, - B3335231207B02530036A448 /* rom.cpp in Sources */, - B3335238207B025E0036A448 /* TLCS900h_disassemble_reg.cpp in Sources */, - B3335232207B02530036A448 /* rtc.cpp in Sources */, - B333523E207B025E0036A448 /* TLCS900h_interpret_src.cpp in Sources */, - B3335227207B02530036A448 /* bios.cpp in Sources */, - B333522C207B02530036A448 /* gfx_scanline_mono.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351C7207B01860036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3335222207B02310036A448 /* tsushin.cpp in Sources */, - B333521F207B02310036A448 /* mcgenjin.cpp in Sources */, - B3335226207B023A0036A448 /* tsushinkb.cpp in Sources */, - B3335224207B023A0036A448 /* gamepad.cpp in Sources */, - B3335221207B02310036A448 /* pcecd.cpp in Sources */, - B333521D207B02310036A448 /* huc6280.cpp in Sources */, - B3335223207B02310036A448 /* vce.cpp in Sources */, - B333521C207B02310036A448 /* huc.cpp in Sources */, - B333521E207B02310036A448 /* input.cpp in Sources */, - B333521B207B02310036A448 /* hes.cpp in Sources */, - B333521A207B02310036A448 /* dis6280.cpp in Sources */, - B3335220207B02310036A448 /* pce.cpp in Sources */, - B3335225207B023A0036A448 /* mouse.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351D4207B01970036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3335216207B02250036A448 /* pcecd_drive.cpp in Sources */, - B3335213207B02250036A448 /* huc6280.cpp in Sources */, - B3335218207B02250036A448 /* psg.cpp in Sources */, - B3335212207B02250036A448 /* huc.cpp in Sources */, - B3335214207B02250036A448 /* input.cpp in Sources */, - B3335215207B02250036A448 /* pce.cpp in Sources */, - B3335219207B02250036A448 /* vdc.cpp in Sources */, - B3335211207B02250036A448 /* hes.cpp in Sources */, - B3335217207B02250036A448 /* pcecd.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351E1207B01C60036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33351F5207B01ED0036A448 /* system.cpp in Sources */, - B33351F0207B01ED0036A448 /* pio.cpp in Sources */, - B33351F4207B01ED0036A448 /* sound.cpp in Sources */, - B33351F6207B01ED0036A448 /* tms.cpp in Sources */, - B33351EF207B01ED0036A448 /* memz80.cpp in Sources */, - B33351EE207B01ED0036A448 /* cart.cpp in Sources */, - B33351F7207B01ED0036A448 /* vdp.cpp in Sources */, - B33351F3207B01ED0036A448 /* sms.cpp in Sources */, - B33351F1207B01ED0036A448 /* render.cpp in Sources */, - B33351F2207B01ED0036A448 /* romdb.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33351F8207B020C0036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3335206207B02100036A448 /* huc6273.cpp in Sources */, - B333520B207B02100036A448 /* pcfx.cpp in Sources */, - B333520E207B02100036A448 /* timer.cpp in Sources */, - B333520A207B02100036A448 /* king.cpp in Sources */, - B3335207207B02100036A448 /* input.cpp in Sources */, - 11AFB33424882054000A3922 /* idct.cpp in Sources */, - B3335205207B02100036A448 /* fxscsi.cpp in Sources */, - B333520C207B02100036A448 /* rainbow.cpp in Sources */, - B3335208207B02100036A448 /* interrupt.cpp in Sources */, - B3335210207B02180036A448 /* gamepad.cpp in Sources */, - B333520D207B02100036A448 /* soundbox.cpp in Sources */, - B333520F207B02180036A448 /* mouse.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3335241207B02770036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3335260207B029A0036A448 /* map_ssf2.cpp in Sources */, - B333525D207B029A0036A448 /* map_rom.cpp in Sources */, - B3335253207B02800036A448 /* memvdp.cpp in Sources */, - B3335255207B02800036A448 /* sound.cpp in Sources */, - B3335265207B02B20036A448 /* interrupt.cpp in Sources */, - B3335251207B02800036A448 /* mem68k.cpp in Sources */, - B3335250207B02800036A448 /* header.cpp in Sources */, - B333525C207B029A0036A448 /* map_rmx3.cpp in Sources */, - B3335267207B02B20036A448 /* timer.cpp in Sources */, - B333525B207B029A0036A448 /* map_realtec.cpp in Sources */, - B333524E207B02800036A448 /* genesis.cpp in Sources */, - B3335266207B02B20036A448 /* pcm.cpp in Sources */, - B3335254207B02800036A448 /* memz80.cpp in Sources */, - B3335256207B02800036A448 /* system.cpp in Sources */, - B3335252207B02800036A448 /* membnk.cpp in Sources */, - B333526B207B02BC0036A448 /* multitap.cpp in Sources */, - B333525A207B029A0036A448 /* map_ff.cpp in Sources */, - B333524F207B02800036A448 /* genio.cpp in Sources */, - B3335263207B02B20036A448 /* cd.cpp in Sources */, - B3335264207B02B20036A448 /* cdc_cdd.cpp in Sources */, - B333525E207B029A0036A448 /* map_sbb.cpp in Sources */, - B333525F207B029A0036A448 /* map_sram.cpp in Sources */, - B3335268207B02BC0036A448 /* 4way.cpp in Sources */, - B3335261207B029A0036A448 /* map_svp.cpp in Sources */, - B3335259207B029A0036A448 /* map_eeprom.cpp in Sources */, - B333526A207B02BC0036A448 /* megamouse.cpp in Sources */, - B3335257207B02800036A448 /* vdp.cpp in Sources */, - B3335269207B02BC0036A448 /* gamepad.cpp in Sources */, - B3335262207B029A0036A448 /* map_yase.cpp in Sources */, - B3335258207B029A0036A448 /* cart.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352A3207B06550036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33352DC207B06B10036A448 /* Sms_Apu.cpp in Sources */, - B33352DE207B06B10036A448 /* Ym2612_Emu.cpp in Sources */, - B33352D8207B06B10036A448 /* Gb_Apu_State.cpp in Sources */, - B33352DB207B06B10036A448 /* pce_psg.cpp in Sources */, - B33352DA207B06B10036A448 /* Gb_Oscs.cpp in Sources */, - B33352D9207B06B10036A448 /* Gb_Apu.cpp in Sources */, - B33352DD207B06B10036A448 /* emu2413.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352B0207B06610036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33352D7207B06990036A448 /* vdc.cpp in Sources */, - C66D56172626B2FB00CDECE9 /* convert.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352BD207B06730036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33352E8207B07C20036A448 /* z80_ops.cpp in Sources */, - B33352E0207B06D70036A448 /* v810_cpu.cpp in Sources */, - B33352E9207B07FD0036A448 /* z80.cpp in Sources */, - B33352E1207B06D70036A448 /* v810_fp_ops.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33352CA207B067F0036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33352DF207B06B90036A448 /* arcade_card.cpp in Sources */, - C66D561B2626B37300CDECE9 /* testsexp.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B333546B207B1B500036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B333547A207B1B780036A448 /* CDAccess_Image.cpp in Sources */, - B3335484207B1B780036A448 /* l-ec.cpp in Sources */, - B333547E207B1B780036A448 /* CDAFReader_Vorbis.cpp in Sources */, - B3335482207B1B780036A448 /* crc32.cpp in Sources */, - B3335483207B1B780036A448 /* galois.cpp in Sources */, - B3335487207B1B780036A448 /* scsicd.cpp in Sources */, - B3335479207B1B780036A448 /* CDAccess_CCD.cpp in Sources */, - C66D56222626B4E700CDECE9 /* CDAFReader_PCM.cpp in Sources */, - B333547B207B1B780036A448 /* CDAccess.cpp in Sources */, - B3335481207B1B780036A448 /* CDUtility.cpp in Sources */, - B333547F207B1B780036A448 /* CDAFReader.cpp in Sources */, - B3335485207B1B780036A448 /* lec.cpp in Sources */, - B333547C207B1B780036A448 /* CDAFReader_MPC.cpp in Sources */, - B3335486207B1B780036A448 /* recover-raw.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B333548F207B1BF30036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C6E1B69325AAC243007C3CF1 /* DSPUtility.cpp in Sources */, - C6E1B69425AAC243007C3CF1 /* SwiftResampler.cpp in Sources */, - B333549C207B1C000036A448 /* Blip_Buffer.cpp in Sources */, - B333549F207B1C000036A448 /* OwlResampler.cpp in Sources */, - B333549E207B1C000036A448 /* okiadpcm.cpp in Sources */, - B33354A1207B1C000036A448 /* WAVRecord.cpp in Sources */, - B333549D207B1C000036A448 /* Fir_Resampler.cpp in Sources */, - B33354A0207B1C000036A448 /* Stereo_Buffer.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33354B0207B1C520036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33354C0207B1C870036A448 /* png.cpp in Sources */, - B33354BF207B1C870036A448 /* font-data.cpp in Sources */, - B33354BE207B1C870036A448 /* Deinterlacer.cpp in Sources */, - B33354C1207B1C870036A448 /* primitives.cpp in Sources */, - B33354C6207B1C870036A448 /* video.cpp in Sources */, - B33354C2207B1C870036A448 /* resize.cpp in Sources */, - B33354C3207B1C870036A448 /* surface.cpp in Sources */, - B33354C5207B1C870036A448 /* text.cpp in Sources */, - B33354C4207B1C870036A448 /* tblur.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33354C7207B1D850036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B333558A207B1DA80036A448 /* string.cpp in Sources */, - B3335560207B1DA80036A448 /* cputest.c in Sources */, - B3FBDFB3207FFC6100E661D1 /* snes.cpp in Sources */, - B3335596207B1DA80036A448 /* sha256.cpp in Sources */, - B3335581207B1DA80036A448 /* Stream.cpp in Sources */, - B333555B207B1DA80036A448 /* git.cpp in Sources */, - B3335597207B1DA80036A448 /* player.cpp in Sources */, - 11AFB328248813A9000A3922 /* CDInterface_ST.cpp in Sources */, - B333555F207B1DA80036A448 /* IPSPatcher.cpp in Sources */, - B3335573207B1DA80036A448 /* GZFileStream.cpp in Sources */, - B3335583207B1DA80036A448 /* resample.c in Sources */, - 11AFB32A248813A9000A3922 /* CDInterface_MT.cpp in Sources */, - B333558C207B1DA80036A448 /* file.cpp in Sources */, - B3335591207B1DA80036A448 /* escape.cpp in Sources */, - 11AFB2C424880B99000A3922 /* NativeVFS.cpp in Sources */, - B3335566207B1DA80036A448 /* memory.cpp in Sources */, - B333558B207B1DA80036A448 /* cdplay.cpp in Sources */, - B3335589207B1DA80036A448 /* netplay.cpp in Sources */, - B3FBDFAF207FFBE500E661D1 /* SNSFLoader.cpp in Sources */, - B333557D207B1DA80036A448 /* general.cpp in Sources */, - 11AFB32C248813A9000A3922 /* CDInterface.cpp in Sources */, - B3335582207B1DA80036A448 /* error.cpp in Sources */, - B3335599207B1DA80036A448 /* Net.cpp in Sources */, - B333556A207B1DA80036A448 /* MemoryStream.cpp in Sources */, - B333559A207B1DA80036A448 /* FileStream.cpp in Sources */, - 11AFB2C224880B99000A3922 /* MTStreamReader.cpp in Sources */, - B333557B207B1DA80036A448 /* psx.cpp in Sources */, - 11AFB2BE24880B99000A3922 /* ExtMemStream.cpp in Sources */, - B3335570207B1DA80036A448 /* gb.cpp in Sources */, - B333556E207B1DA80036A448 /* sha1.cpp in Sources */, - 11AFB33124881CBB000A3922 /* MThreading_POSIX.cpp in Sources */, - 11AFB31F2488132B000A3922 /* Deinterlacer_Blend.cpp in Sources */, - B333555E207B1DA80036A448 /* endian.cpp in Sources */, - B333557F207B1DA80036A448 /* state_rewind.cpp in Sources */, - B333557C207B1DA80036A448 /* debug.cpp in Sources */, - B333556B207B1DA80036A448 /* ZLInflateFilter.cpp in Sources */, - 11AFB2D024880BF4000A3922 /* SwiftResampler.cpp in Sources */, - B3335590207B1DA80036A448 /* Net_POSIX.cpp in Sources */, - 11AFB2C024880B99000A3922 /* VirtualFS.cpp in Sources */, - 11AFB3212488132B000A3922 /* Deinterlacer_Simple.cpp in Sources */, - B3FBDFB0207FFC1E00E661D1 /* SPCReader.cpp in Sources */, - 11AFB2CE24880BF4000A3922 /* DSPUtility.cpp in Sources */, - B3335580207B1DA80036A448 /* settings.cpp in Sources */, - B3335559207B1DA80036A448 /* state.cpp in Sources */, - B3335595207B1DA80036A448 /* mednafen.cpp in Sources */, - B3335577207B1DA80036A448 /* movie.cpp in Sources */, - B3335568207B1DA80036A448 /* ZIPReader.cpp in Sources */, - B3335598207B1DA80036A448 /* mempatcher.cpp in Sources */, - B3335567207B1DA80036A448 /* PSFLoader.cpp in Sources */, - 11AFB339248820AF000A3922 /* crc.cpp in Sources */, - B333558F207B1DA80036A448 /* md5.cpp in Sources */, - B333556C207B1DA80036A448 /* demo.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B333559E207B1E930036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33355AE207B1EAE0036A448 /* mpc_decoder.c in Sources */, - B33355AD207B1EAE0036A448 /* mpc_bits_reader.c in Sources */, - B33355AC207B1EAE0036A448 /* huffman.c in Sources */, - B33355B2207B1EAE0036A448 /* synth_filter.c in Sources */, - B33355AF207B1EAE0036A448 /* mpc_demux.c in Sources */, - B33355B1207B1EAE0036A448 /* streaminfo.c in Sources */, - B33355B0207B1EAE0036A448 /* requant.c in Sources */, - B33355AB207B1EAE0036A448 /* crc32.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355B4207B20420036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33355C1207B205E0036A448 /* quicklz.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355C3207B20BE0036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33355D1207B20E50036A448 /* bitwise.c in Sources */, - B33355DD207B20E50036A448 /* synthesis.c in Sources */, - B33355DE207B20E50036A448 /* vorbisfile.c in Sources */, - B33355DF207B20E50036A448 /* window.c in Sources */, - B33355D5207B20E50036A448 /* floor1.c in Sources */, - B33355D6207B20E50036A448 /* framing.c in Sources */, - B33355DC207B20E50036A448 /* sharedbook.c in Sources */, - B33355D3207B20E50036A448 /* codebook.c in Sources */, - B33355DA207B20E50036A448 /* registry.c in Sources */, - B33355D2207B20E50036A448 /* block.c in Sources */, - B33355D4207B20E50036A448 /* floor0.c in Sources */, - B33355D7207B20E50036A448 /* info.c in Sources */, - B33355DB207B20E50036A448 /* res012.c in Sources */, - B33355D8207B20E50036A448 /* mapping0.c in Sources */, - B33355D9207B20E50036A448 /* mdct.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B33355E0207B278E0036A448 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33355EF207B27B60036A448 /* triostr.c in Sources */, - B33355ED207B27B60036A448 /* trio.c in Sources */, - B33355EE207B27B60036A448 /* trionan.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B340E45D1E08887600AD0E8B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33355F1207B2A650036A448 /* MednafenGameCore.swift in Sources */, - B3AAB43F2073820C0097D86F /* MednafenMultiDisc.m in Sources */, - B3AAB425207379230097D86F /* stubs.mm in Sources */, - B3AAB4402073820C0097D86F /* MednafenMultiTap.m in Sources */, - B3AAB43D2073820C0097D86F /* MednafenGameCore.mm in Sources */, - C66D56112626B12100CDECE9 /* Time_POSIX.cpp in Sources */, - B333559D207B1DC50036A448 /* thread.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B340E46A1E08888700AD0E8B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33355F4207B3BAD0036A448 /* MednafenMultiDisc.m in Sources */, - B33355F8207B3BAD0036A448 /* thread.cpp in Sources */, - B33355F7207B3BAD0036A448 /* MednafenGameCore.mm in Sources */, - B33355F5207B3BAD0036A448 /* stubs.mm in Sources */, - B33355F3207B3BAD0036A448 /* MednafenGameCore.swift in Sources */, - C66D56122626B12100CDECE9 /* Time_POSIX.cpp in Sources */, - B33355F6207B3BAD0036A448 /* MednafenMultiTap.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B35D6685218185710005A992 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B35D6686218185710005A992 /* z80_ops.cpp in Sources */, - B35D6687218185710005A992 /* v810_cpu.cpp in Sources */, - B35D6688218185710005A992 /* z80.cpp in Sources */, - B35D6689218185710005A992 /* v810_fp_ops.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B393F246277C0BF70097F71C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B393F252277C0C1C0097F71C /* m68k.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B393F254277C0C340097F71C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B393F260277C0C4E0097F71C /* m68k.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3FBDEF4207FF0E300E661D1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3FBDF97207FF43000E661D1 /* smp.cpp in Sources */, - B3FBDF6F207FF37C00E661D1 /* bus.cpp in Sources */, - B3FBDF80207FF3BC00E661D1 /* opcodes.cpp in Sources */, - B3FBDF84207FF3BC00E661D1 /* bus.cpp in Sources */, - B3FBDF2C207FF22000E661D1 /* echo.cpp in Sources */, - B3FBDF4B207FF30A00E661D1 /* ppu.cpp in Sources */, - B3FBDF07207FF1AF00E661D1 /* algorithms.cpp in Sources */, - B3FBDF5B207FF34700E661D1 /* cx4.cpp in Sources */, - B3FBDF0C207FF1AF00E661D1 /* opcode_write.cpp in Sources */, - B3FBDF76207FF39000E661D1 /* decomp.cpp in Sources */, - B3FBDF04207FF19800E661D1 /* serialization.cpp in Sources */, - B3FBDF7F207FF3BC00E661D1 /* opcode_table.cpp in Sources */, - B3FBDF59207FF33E00E661D1 /* bsx.cpp in Sources */, - B3FBDF93207FF40800E661D1 /* opcode_mov.cpp in Sources */, - B3FBDF19207FF1CD00E661D1 /* cpu.cpp in Sources */, - B3FBDF64207FF35700E661D1 /* dsp2.cpp in Sources */, - B3FBDF1D207FF1EB00E661D1 /* gameboyheader.cpp in Sources */, - B3FBDF4A207FF2D700E661D1 /* arm.c in Sources */, - B3FBDF51207FF31200E661D1 /* bg.cpp in Sources */, - B3FBDF11207FF1CD00E661D1 /* scpu.cpp in Sources */, - B3FBDF6E207FF37C00E661D1 /* mmio.cpp in Sources */, - B3FBDF58207FF33E00E661D1 /* bsx_flash.cpp in Sources */, - B3FBDF1F207FF20A00E661D1 /* video.cpp in Sources */, - B3FBDF92207FF40300E661D1 /* opcode_read.cpp in Sources */, - B3FBDF50207FF31200E661D1 /* windows.cpp in Sources */, - B3FBDF6A207FF36600E661D1 /* dsp4emu.c in Sources */, - B3FBDF65207FF35700E661D1 /* serialization.cpp in Sources */, - B3FBDF56207FF31900E661D1 /* serialization.cpp in Sources */, - B3FBDF14207FF1CD00E661D1 /* event.cpp in Sources */, - B3FBDF60207FF34700E661D1 /* functions.cpp in Sources */, - B3FBDF4E207FF31200E661D1 /* line.cpp in Sources */, - B3FBDF2E207FF22000E661D1 /* sdsp.cpp in Sources */, - B3FBDF5D207FF34700E661D1 /* data.cpp in Sources */, - B3FBDF71207FF37C00E661D1 /* dma.cpp in Sources */, - B3FBDF67207FF35E00E661D1 /* dsp3.cpp in Sources */, - B3FBDF77207FF39000E661D1 /* spc7110.cpp in Sources */, - B3FBDF0A207FF1AF00E661D1 /* table.cpp in Sources */, - B3FBDF63207FF34F00E661D1 /* serialization.cpp in Sources */, - B3FBDF10207FF1CD00E661D1 /* memory.cpp in Sources */, - B3FBDF83207FF3BC00E661D1 /* mmio.cpp in Sources */, - B3FBDF62207FF34F00E661D1 /* dsp1emu.cpp in Sources */, - B3FBDF1C207FF1EB00E661D1 /* serialization.cpp in Sources */, - B3FBDF54207FF31200E661D1 /* oam.cpp in Sources */, - B3FBDF49207FF2D700E661D1 /* libco.c in Sources */, - B3FBDF13207FF1CD00E661D1 /* joypad.cpp in Sources */, - B3FBDF1A207FF1EB00E661D1 /* cartridge.cpp in Sources */, - B3FBDF55207FF31200E661D1 /* cache.cpp in Sources */, - B3FBDF8C207FF3E400E661D1 /* opcode_misc.cpp in Sources */, - B3FBDF82207FF3BC00E661D1 /* disasm.cpp in Sources */, - B3FBDF09207FF1AF00E661D1 /* core.cpp in Sources */, - B3FBDF53207FF31200E661D1 /* addsub.cpp in Sources */, - B3FBDF0B207FF1AF00E661D1 /* opcode_misc.cpp in Sources */, - B3FBDF74207FF38900E661D1 /* sdd1emu.cpp in Sources */, - B3FBDF29207FF22000E661D1 /* brr.cpp in Sources */, - B3FBDF05207FF19800E661D1 /* system.cpp in Sources */, - B3FBDF75207FF38900E661D1 /* serialization.cpp in Sources */, - B3FBDF06207FF19D00E661D1 /* memory.cpp in Sources */, - B3FBDF2A207FF22000E661D1 /* counter.cpp in Sources */, - B3FBDF6B207FF36C00E661D1 /* obc1.cpp in Sources */, - B3FBDF20207FF20A00E661D1 /* config.cpp in Sources */, - B3FBDF26207FF22000E661D1 /* voice.cpp in Sources */, - B3FBDF7E207FF3BC00E661D1 /* core.cpp in Sources */, - B3FBDF72207FF37C00E661D1 /* sa1.cpp in Sources */, - B3FBDF8A207FF3DF00E661D1 /* opcode_pc.cpp in Sources */, - B3FBDF79207FF39A00E661D1 /* srtc.cpp in Sources */, - B3FBDF4C207FF30A00E661D1 /* memory.cpp in Sources */, - B3FBDF7C207FF3A400E661D1 /* serialization.cpp in Sources */, - B3FBDF6C207FF36C00E661D1 /* serialization.cpp in Sources */, - B3FBDF0E207FF1AF00E661D1 /* opcode_pc.cpp in Sources */, - B3FBDF89207FF3DF00E661D1 /* serialization.cpp in Sources */, - B3FBDF5F207FF34700E661D1 /* opcodes.cpp in Sources */, - B3FBDF1B207FF1EB00E661D1 /* header.cpp in Sources */, - B3FBDF88207FF3D500E661D1 /* opcode_rmw.cpp in Sources */, - B3FBDF66207FF35700E661D1 /* opcodes.cpp in Sources */, - B3FBDF12207FF1CD00E661D1 /* mmio.cpp in Sources */, - B3FBDF5C207FF34700E661D1 /* oam.cpp in Sources */, - B3FBDF0F207FF1AF00E661D1 /* opcode_rmw.cpp in Sources */, - B3FBDF01207FF13400E661D1 /* interface.cpp in Sources */, - B3FBDF81207FF3BC00E661D1 /* memory.cpp in Sources */, - B3FBDF21207FF20A00E661D1 /* input.cpp in Sources */, - B3FBDF1E207FF1F400E661D1 /* cheat.cpp in Sources */, - B3FBDF57207FF33E00E661D1 /* bsx_cart.cpp in Sources */, - B3FBDF16207FF1CD00E661D1 /* irq.cpp in Sources */, - B3FBDF4D207FF30A00E661D1 /* mmio.cpp in Sources */, - B3FBDF86207FF3BC00E661D1 /* serialization.cpp in Sources */, - B3FBDF08207FF1AF00E661D1 /* opcode_read.cpp in Sources */, - B3FBDF68207FF35E00E661D1 /* dsp3emu.c in Sources */, - B3FBDF7A207FF39A00E661D1 /* serialization.cpp in Sources */, - B3FBDF18207FF1CD00E661D1 /* dma.cpp in Sources */, - B3FBDF52207FF31200E661D1 /* mode7.cpp in Sources */, - B3FBDF46207FF2D700E661D1 /* sjlj.c in Sources */, - B3FBDF24207FF20A00E661D1 /* serialization.cpp in Sources */, - B3FBDF03207FF19800E661D1 /* smemory.cpp in Sources */, - B3FBDF0D207FF1AF00E661D1 /* serialization.cpp in Sources */, - B3FBDF6D207FF37C00E661D1 /* memory.cpp in Sources */, - B3FBDF28207FF22000E661D1 /* gaussian.cpp in Sources */, - B3FBDF15207FF1CD00E661D1 /* timing.cpp in Sources */, - B3FBDF4F207FF31200E661D1 /* render.cpp in Sources */, - B3FBDF69207FF36600E661D1 /* dsp4.cpp in Sources */, - B3FBDF2B207FF22000E661D1 /* serialization.cpp in Sources */, - B3FBDF17207FF1CD00E661D1 /* serialization.cpp in Sources */, - B3FBDF7D207FF3A400E661D1 /* st010.cpp in Sources */, - B3FBDF8B207FF3E400E661D1 /* table.cpp in Sources */, - B3FBDF5A207FF33E00E661D1 /* bsx_base.cpp in Sources */, - B3FBDF2D207FF22000E661D1 /* envelope.cpp in Sources */, - B3FBDF61207FF34F00E661D1 /* dsp1.cpp in Sources */, - B3FBDF25207FF20A00E661D1 /* system.cpp in Sources */, - B3FBDF7B207FF3A400E661D1 /* st010_op.cpp in Sources */, - B3FBDF73207FF38900E661D1 /* sdd1.cpp in Sources */, - B3FBDF27207FF22000E661D1 /* misc.cpp in Sources */, - B3FBDF70207FF37C00E661D1 /* serialization.cpp in Sources */, - B3FBDF23207FF20A00E661D1 /* audio.cpp in Sources */, - B3FBDF85207FF3BC00E661D1 /* timing.cpp in Sources */, - B3FBDF02207FF19800E661D1 /* generic.cpp in Sources */, - B3FBDF78207FF39000E661D1 /* serialization.cpp in Sources */, - B3FBDF5E207FF34700E661D1 /* serialization.cpp in Sources */, - B3FBDF94207FF40F00E661D1 /* algorithms.cpp in Sources */, - B3FBDF22207FF20A00E661D1 /* scheduler.cpp in Sources */, - B3FBDF87207FF3BC00E661D1 /* superfx.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3FBDF9B207FF5D800E661D1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0AF2CF4C259CBB8E00E6A51F /* superfx.cpp in Sources */, - B3FBDFA9207FF5F200E661D1 /* input.cpp in Sources */, - 11AFB31324881206000A3922 /* sa1cpu.cpp in Sources */, - B3FBDFA8207FF5F200E661D1 /* ppu.cpp in Sources */, - 11AFB2E824880C49000A3922 /* msu1.cpp in Sources */, - B3FBDFAB207FF5F200E661D1 /* apu.cpp in Sources */, - 11AFB2EA24880C49000A3922 /* ppu_mtrender.cpp in Sources */, - 11AFB2E924880C49000A3922 /* ppu_mt.cpp in Sources */, - 11AFB30F24881206000A3922 /* cx4.cpp in Sources */, - 11AFB31024881206000A3922 /* dsp1.cpp in Sources */, - 11AFB31124881206000A3922 /* dsp2.cpp in Sources */, - B3FBDFAC207FF5F200E661D1 /* cpu.cpp in Sources */, - 11AFB31424881206000A3922 /* sdd1.cpp in Sources */, - B3FBDFAA207FF5F200E661D1 /* snes.cpp in Sources */, - B3FBDFAD207FF5F200E661D1 /* cart.cpp in Sources */, - 11AFB2E624880C49000A3922 /* debug.cpp in Sources */, - 11AFB31224881206000A3922 /* sa1.cpp in Sources */, - 11AFB2EB24880C49000A3922 /* ppu_st.cpp in Sources */, - 11AFB2E724880C49000A3922 /* dis65816.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C6E1B5AA25AA9C15007C3CF1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C6E1B64C25AAA042007C3CF1 /* rom.cpp in Sources */, - C6E1B64B25AAA00E007C3CF1 /* cdb.cpp in Sources */, - C6E1B62925AA9CB4007C3CF1 /* scu_dsp_misc.cpp in Sources */, - C6E1B62A25AA9CB4007C3CF1 /* scu_dsp_jmp.cpp in Sources */, - C6E1B62B25AA9CB4007C3CF1 /* 3dpad.cpp in Sources */, - C6E1B62C25AA9CB4007C3CF1 /* mouse.cpp in Sources */, - C6E1B62D25AA9CB4007C3CF1 /* gamepad.cpp in Sources */, - C6E1B62E25AA9CB4007C3CF1 /* multitap.cpp in Sources */, - C6E1B62F25AA9CB4007C3CF1 /* wheel.cpp in Sources */, - C6E1B63025AA9CB4007C3CF1 /* gun.cpp in Sources */, - C6E1B63125AA9CB4007C3CF1 /* mission.cpp in Sources */, - C6E1B63225AA9CB4007C3CF1 /* keyboard.cpp in Sources */, - C6E1B63325AA9CB4007C3CF1 /* jpkeyboard.cpp in Sources */, - C6E1B63425AA9CB4007C3CF1 /* db.cpp in Sources */, - C6E1B63525AA9CB4007C3CF1 /* scu_dsp_mvi.cpp in Sources */, - C6E1B63625AA9CB4007C3CF1 /* vdp2_render.cpp in Sources */, - C6E1B63725AA9CB4007C3CF1 /* vdp1_poly.cpp in Sources */, - C6E1B63825AA9CB4007C3CF1 /* ssf.cpp in Sources */, - C6E1B63925AA9CB4007C3CF1 /* gen_dsp.cpp in Sources */, - C6E1B63A25AA9CB4007C3CF1 /* ss.cpp in Sources */, - C6E1B63B25AA9CB4007C3CF1 /* smpc.cpp in Sources */, - C6E1B63C25AA9CB4007C3CF1 /* sound.cpp in Sources */, - C6E1B63D25AA9CB4007C3CF1 /* ar4mp.cpp in Sources */, - C6E1B63E25AA9CB4007C3CF1 /* extram.cpp in Sources */, - C6E1B63F25AA9CB4007C3CF1 /* backup.cpp in Sources */, - C6E1B64025AA9CB4007C3CF1 /* debug.cpp in Sources */, - C6E1B64125AA9CB4007C3CF1 /* cs1ram.cpp in Sources */, - C6E1B64225AA9CB4007C3CF1 /* vdp1_sprite.cpp in Sources */, - C6E1B64325AA9CB4007C3CF1 /* vdp1_line.cpp in Sources */, - C6E1B64425AA9CB4007C3CF1 /* vdp2.cpp in Sources */, - C6E1B64525AA9CB4007C3CF1 /* cart.cpp in Sources */, - C6E1B64625AA9CB4007C3CF1 /* vdp1.cpp in Sources */, - C6E1B64725AA9CB4007C3CF1 /* scu_dsp_gen.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C6E1B65425AAC123007C3CF1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C6E1B66F25AAC1B1007C3CF1 /* scu_dsp_misc.cpp in Sources */, - C6E1B67025AAC1B1007C3CF1 /* scu_dsp_jmp.cpp in Sources */, - C6E1B67125AAC1B1007C3CF1 /* 3dpad.cpp in Sources */, - C6E1B67225AAC1B1007C3CF1 /* mouse.cpp in Sources */, - C6E1B67325AAC1B1007C3CF1 /* gamepad.cpp in Sources */, - C6E1B67425AAC1B1007C3CF1 /* multitap.cpp in Sources */, - C6E1B67525AAC1B1007C3CF1 /* wheel.cpp in Sources */, - C6E1B67625AAC1B1007C3CF1 /* gun.cpp in Sources */, - C6E1B67725AAC1B1007C3CF1 /* mission.cpp in Sources */, - C6E1B67825AAC1B1007C3CF1 /* keyboard.cpp in Sources */, - C6E1B67925AAC1B1007C3CF1 /* jpkeyboard.cpp in Sources */, - C6E1B67A25AAC1B1007C3CF1 /* db.cpp in Sources */, - C6E1B67B25AAC1B1007C3CF1 /* scu_dsp_mvi.cpp in Sources */, - C6E1B67C25AAC1B1007C3CF1 /* vdp2_render.cpp in Sources */, - C6E1B67D25AAC1B1007C3CF1 /* vdp1_poly.cpp in Sources */, - C6E1B67E25AAC1B1007C3CF1 /* ssf.cpp in Sources */, - C6E1B67F25AAC1B1007C3CF1 /* gen_dsp.cpp in Sources */, - C6E1B68025AAC1B1007C3CF1 /* ss.cpp in Sources */, - C6E1B68125AAC1B1007C3CF1 /* smpc.cpp in Sources */, - C6E1B68225AAC1B1007C3CF1 /* sound.cpp in Sources */, - C6E1B68325AAC1B1007C3CF1 /* ar4mp.cpp in Sources */, - C6E1B68425AAC1B1007C3CF1 /* extram.cpp in Sources */, - C6E1B68525AAC1B1007C3CF1 /* backup.cpp in Sources */, - C6E1B68625AAC1B1007C3CF1 /* rom.cpp in Sources */, - C6E1B68725AAC1B1007C3CF1 /* debug.cpp in Sources */, - C6E1B68825AAC1B2007C3CF1 /* cs1ram.cpp in Sources */, - C6E1B68925AAC1B2007C3CF1 /* vdp1_sprite.cpp in Sources */, - C6E1B68A25AAC1B2007C3CF1 /* vdp1_line.cpp in Sources */, - C6E1B68B25AAC1B2007C3CF1 /* cdb.cpp in Sources */, - C6E1B68C25AAC1B2007C3CF1 /* vdp2.cpp in Sources */, - C6E1B68D25AAC1B2007C3CF1 /* cart.cpp in Sources */, - C6E1B68E25AAC1B2007C3CF1 /* vdp1.cpp in Sources */, - C6E1B68F25AAC1B2007C3CF1 /* scu_dsp_gen.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 11389F99248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C5B02191ABB7009F4EDC /* cdrom-tvOS */; - targetProxy = 11389F98248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389F9B248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C4C82191A1AC009F4EDC /* gb-tvOS */; - targetProxy = 11389F9A248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389F9D248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C4AC21919E72009F4EDC /* gba-tvOS */; - targetProxy = 11389F9C248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389F9F248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF13721923EB40058E2E7 /* hwaudio-tvOS */; - targetProxy = 11389F9E248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FA1248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF1C5219240270058E2E7 /* hwmisc-tvOS */; - targetProxy = 11389FA0248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FA3248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C34421919C1C009F4EDC /* hwvideo-tvOS */; - targetProxy = 11389FA2248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FA5248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF17921923F740058E2E7 /* lynx-tvOS */; - targetProxy = 11389FA4248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FA7248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C3FB21919D73009F4EDC /* mednafen-tvOS */; - targetProxy = 11389FA6248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FA9248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C53C2191A8A5009F4EDC /* mpcdec-tvOS */; - targetProxy = 11389FA8248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FAB248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF15621923F520058E2E7 /* neogeopocket-tvOS */; - targetProxy = 11389FAA248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FAD248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C34E21919CD6009F4EDC /* nes-tvOS */; - targetProxy = 11389FAC248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FAF248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF18A21923F790058E2E7 /* pce-tvOS */; - targetProxy = 11389FAE248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FB1248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF1A021923F7F0058E2E7 /* pcefast-tvOS */; - targetProxy = 11389FB0248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FB3248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C5CA2191ACE1009F4EDC /* pcfx-tvOS */; - targetProxy = 11389FB2248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FB5248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C32221919BC6009F4EDC /* psx-tvOS */; - targetProxy = 11389FB4248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FB7248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C5832191AB4E009F4EDC /* quicklz-tvOS */; - targetProxy = 11389FB6248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FB9248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF1B221923F850058E2E7 /* segamastersystem-tvOS */; - targetProxy = 11389FB8248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FBB248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C42C21919DC9009F4EDC /* snes-tvOS */; - targetProxy = 11389FBA248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FBD248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C54E2191AAD1009F4EDC /* snes_faust-tvOS */; - targetProxy = 11389FBC248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FBF248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C5A12191ABAD009F4EDC /* sound-tvOS */; - targetProxy = 11389FBE248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FC1248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C56B2191AB34009F4EDC /* tremor-tvOS */; - targetProxy = 11389FC0248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FC3248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C55E2191AAFE009F4EDC /* trio-tvOS */; - targetProxy = 11389FC2248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FC5248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C58F2191AB9D009F4EDC /* video-tvOS */; - targetProxy = 11389FC4248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FC7248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B32CF14821923F330058E2E7 /* virtualboy-tvOS */; - targetProxy = 11389FC6248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - 11389FC9248D4F6B0089CBFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B324C5E02191AD13009F4EDC /* wonderswan-tvOS */; - targetProxy = 11389FC8248D4F6B0089CBFF /* PBXContainerItemProxy */; - }; - B31737FE2783F8AF002D3ACD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B393F245277C0BF70097F71C /* hwcpu-m68k-iOS */; - targetProxy = B31737FD2783F8AF002D3ACD /* PBXContainerItemProxy */; - }; - B34AB5882106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B333502C207AFBA30036A448 /* psx-iOS */; - targetProxy = B34AB5872106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB58A2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3335061207AFD3D0036A448 /* wonderswan-iOS */; - targetProxy = B34AB5892106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB58C2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3335091207AFF2B0036A448 /* virtualboy-iOS */; - targetProxy = B34AB58B2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB58E2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33350A4207AFFE80036A448 /* nes-iOS */; - targetProxy = B34AB58D2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5902106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B333518F207B00F70036A448 /* gb-iOS */; - targetProxy = B34AB58F2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5922106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33351A3207B01460036A448 /* gba-iOS */; - targetProxy = B34AB5912106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5942106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33351B0207B01570036A448 /* lynx-iOS */; - targetProxy = B34AB5932106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5962106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33351BD207B016F0036A448 /* neogeopocket-iOS */; - targetProxy = B34AB5952106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5982106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33351CA207B01860036A448 /* pce-iOS */; - targetProxy = B34AB5972106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB59A2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33351D7207B01970036A448 /* pcefast-iOS */; - targetProxy = B34AB5992106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB59C2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33351E4207B01C60036A448 /* segamastersystem-iOS */; - targetProxy = B34AB59B2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB59E2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33351FB207B020C0036A448 /* pcfx-iOS */; - targetProxy = B34AB59D2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5A22106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33352A6207B06550036A448 /* hwaudio-iOS */; - targetProxy = B34AB5A12106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5A42106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33352B3207B06610036A448 /* hwvideo-iOS */; - targetProxy = B34AB5A32106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5A62106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33352C0207B06730036A448 /* hwcpu-iOS */; - targetProxy = B34AB5A52106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5A82106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33352CD207B067F0036A448 /* hwmisc-iOS */; - targetProxy = B34AB5A72106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5AA2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B333546E207B1B500036A448 /* cdrom-iOS */; - targetProxy = B34AB5A92106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5AC2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3335492207B1BF30036A448 /* sound-iOS */; - targetProxy = B34AB5AB2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5AE2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33354B3207B1C520036A448 /* video-iOS */; - targetProxy = B34AB5AD2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5B02106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33354CA207B1D850036A448 /* mednafen-iOS */; - targetProxy = B34AB5AF2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5B22106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33355A1207B1E930036A448 /* mpcdec-iOS */; - targetProxy = B34AB5B12106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5B42106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33355B7207B20420036A448 /* quicklz-iOS */; - targetProxy = B34AB5B32106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5B62106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33355C6207B20BE0036A448 /* tremor-iOS */; - targetProxy = B34AB5B52106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5B82106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33355E3207B278E0036A448 /* trio-iOS */; - targetProxy = B34AB5B72106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5BA2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3FBDEF7207FF0E300E661D1 /* snes-iOS */; - targetProxy = B34AB5B92106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B34AB5BC2106DF8400C45F09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3FBDF9E207FF5D800E661D1 /* snes_faust-iOS */; - targetProxy = B34AB5BB2106DF8400C45F09 /* PBXContainerItemProxy */; - }; - B35D6693218185FF0005A992 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B35D6684218185710005A992 /* hwcpu-tvOS */; - targetProxy = B35D6692218185FF0005A992 /* PBXContainerItemProxy */; - }; - B36C7D5327AE10F600715677 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B393F253277C0C340097F71C /* hwcpu-m68k-tvOS */; - targetProxy = B36C7D5227AE10F600715677 /* PBXContainerItemProxy */; - }; - C6E1B64A25AA9DC1007C3CF1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = C6E1B5A925AA9C15007C3CF1 /* saturn-tvOS */; - targetProxy = C6E1B64925AA9DC1007C3CF1 /* PBXContainerItemProxy */; - }; - C6E1B69125AAC1D5007C3CF1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = C6E1B65325AAC123007C3CF1 /* saturn-iOS */; - targetProxy = C6E1B69025AAC1D5007C3CF1 /* PBXContainerItemProxy */; - }; - C6E1B69725AAC5A3007C3CF1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = C6E1B65325AAC123007C3CF1 /* saturn-iOS */; - targetProxy = C6E1B69625AAC5A3007C3CF1 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - B34CB0EC2274BA81009134B4 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 1DEB913F08733D840010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - DEAD_CODE_STRIPPING = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/src\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - WANT_GB_EMU, - WANT_GBA_EMU, - WANT_LYNX_EMU, - WANT_NES_EMU, - WANT_NGP_EMU, - WANT_PCE_FAST_EMU, - WANT_PCE_EMU, - WANT_PCFX_EMU, - WANT_PSX_EMU, - WANT_SS_EMU, - WANT_SNES_EMU, - WANT_SNES_FAUST_EMU, - WANT_VB_EMU, - WANT_WSWAN_EMU, - "WANT_FANCY_SCALERS=1", - HAVE_MKDIR, - "MEDNAFEN_VERSION=\\\"1.27.1\\\"", - "PACKAGE=\\\"mednafen\\\"", - "MEDNAFEN_VERSION_NUMERIC=0x00102701", - "PSS_STYLE=1", - MPC_FIXED_POINT, - ARCH_ARM, - STDC_HEADERS, - "ICONV_CONST=", - LSB_FIRST, - __STDC_LIMIT_MACROS, - "SIZEOF_DOUBLE=8", - "SIZEOF_CHAR=1", - "SIZEOF_SHORT=2", - "SIZEOF_INT=4", - "SIZEOF_LONG=8", - "SIZEOF_LONG_LONG=8", - "SIZEOF_OFF_T=8", - "SIZEOF_VOID_P=8", - "SIZEOF_SIZE_T=8", - "SIZEOF_PTRDIFF_T=8", - HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP, - ); - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/libsndfile", - "\"$(SRCROOT)\"", - ); - LLVM_LTO = NO; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-mfpu=neon", - "-Wall", - "-Wshadow", - "-Wempty-body", - "-Wignored-qualifiers", - "-Wvla", - "-Wvariadic-macros", - "-Wdisabled-optimization", - ); - SDKROOT = iphoneos; - SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Debug; - }; - 1DEB914008733D840010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - DEAD_CODE_STRIPPING = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/src\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = s; - GCC_PREPROCESSOR_DEFINITIONS = ( - WANT_GB_EMU, - WANT_GBA_EMU, - WANT_LYNX_EMU, - WANT_NES_EMU, - WANT_NGP_EMU, - WANT_PCE_FAST_EMU, - WANT_PCE_EMU, - WANT_PCFX_EMU, - WANT_PSX_EMU, - WANT_SS_EMU, - WANT_SNES_EMU, - WANT_SNES_FAUST_EMU, - WANT_VB_EMU, - WANT_WSWAN_EMU, - "WANT_FANCY_SCALERS=1", - HAVE_MKDIR, - "MEDNAFEN_VERSION=\\\"1.27.1\\\"", - "PACKAGE=\\\"mednafen\\\"", - "MEDNAFEN_VERSION_NUMERIC=0x00102701", - "PSS_STYLE=1", - MPC_FIXED_POINT, - ARCH_ARM, - STDC_HEADERS, - "ICONV_CONST=", - LSB_FIRST, - __STDC_LIMIT_MACROS, - "SIZEOF_DOUBLE=8", - "SIZEOF_CHAR=1", - "SIZEOF_SHORT=2", - "SIZEOF_INT=4", - "SIZEOF_LONG=8", - "SIZEOF_LONG_LONG=8", - "SIZEOF_OFF_T=8", - "SIZEOF_VOID_P=8", - "SIZEOF_SIZE_T=8", - "SIZEOF_PTRDIFF_T=8", - HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP, - ); - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/libsndfile", - "\"$(SRCROOT)\"", - ); - LLVM_LTO = NO; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "-DHAVE_UNISTD_H", - "-DMEDNAFEN_VERSION=\\\"1.27.1\\\"", - "-DPACKAGE=\\\"mednafen\\\"", - "-DMEDNAFEN_VERSION_NUMERIC=0x00102701", - "-DHAVE_LROUND", - "-DHAVE_STDINT_H", - "-DHAVE_STDLIB_H", - "-DHAVE_SYS_PARAM_H", - "-DNDEBUG", - "-funroll-loops", - "-fPIC", - "-Wall", - "-Wno-sign-compare", - "-Wno-unused-variable", - "-Wno-unused-function", - "-Wno-uninitialized", - "-Wno-strict-aliasing", - "-Wno-aggressive-loop-optimizations", - "-fno-fast-math", - "-fomit-frame-pointer", - "-fsigned-char", - "-DWANT_STEREO_SOUND", - "-DSTDC_HEADERS", - "-D__STDC_LIMIT_MACROS", - "-D__LIBRETRO__", - "-DINLINE=\"inline\"", - ); - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Release; - }; - B324C34021919BC6009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C34121919BC6009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C34A21919C1C009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C34B21919C1C009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C3D121919CD6009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C3D221919CD6009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C3F821919D34009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C3F921919D34009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C42821919D73009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C42921919D73009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C4A821919DC9009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C4A921919DC9009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C4C321919E72009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C4C421919E72009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C4D32191A1AC009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C4D42191A1AC009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C4D72191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - DEAD_CODE_STRIPPING = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/src\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = s; - GCC_PREPROCESSOR_DEFINITIONS = ( - WANT_GB_EMU, - WANT_GBA_EMU, - WANT_LYNX_EMU, - WANT_NES_EMU, - WANT_NGP_EMU, - WANT_PCE_FAST_EMU, - WANT_PCE_EMU, - WANT_PCFX_EMU, - WANT_PSX_EMU, - WANT_SS_EMU, - WANT_SNES_EMU, - WANT_SNES_FAUST_EMU, - WANT_VB_EMU, - WANT_WSWAN_EMU, - "WANT_FANCY_SCALERS=1", - HAVE_MKDIR, - "MEDNAFEN_VERSION=\\\"1.27.1\\\"", - "PACKAGE=\\\"mednafen\\\"", - "MEDNAFEN_VERSION_NUMERIC=0x00102701", - "PSS_STYLE=1", - MPC_FIXED_POINT, - ARCH_ARM, - STDC_HEADERS, - "ICONV_CONST=", - LSB_FIRST, - __STDC_LIMIT_MACROS, - "SIZEOF_DOUBLE=8", - "SIZEOF_CHAR=1", - "SIZEOF_SHORT=2", - "SIZEOF_INT=4", - "SIZEOF_LONG=8", - "SIZEOF_LONG_LONG=8", - "SIZEOF_OFF_T=8", - "SIZEOF_VOID_P=8", - "SIZEOF_SIZE_T=8", - "SIZEOF_PTRDIFF_T=8", - HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP, - ); - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/libsndfile", - "\"$(SRCROOT)\"", - ); - LLVM_LTO = NO; - ONLY_ACTIVE_ARCH = NO; - OTHER_CFLAGS = ( - "-DHAVE_UNISTD_H", - "-DMEDNAFEN_VERSION=\\\"1.27.1\\\"", - "-DPACKAGE=\\\"mednafen\\\"", - "-DMEDNAFEN_VERSION_NUMERIC=0x00102701", - "-DHAVE_LROUND", - "-DHAVE_STDINT_H", - "-DHAVE_STDLIB_H", - "-DHAVE_SYS_PARAM_H", - "-DNDEBUG", - "-funroll-loops", - "-fPIC", - "-Wall", - "-Wno-sign-compare", - "-Wno-unused-variable", - "-Wno-unused-function", - "-Wno-uninitialized", - "-Wno-strict-aliasing", - "-Wno-aggressive-loop-optimizations", - "-fno-fast-math", - "-fomit-frame-pointer", - "-fsigned-char", - "-DWANT_STEREO_SOUND", - "-DSTDC_HEADERS", - "-D__STDC_LIMIT_MACROS", - "-D__LIBRETRO__", - "-DINLINE=\"inline\"", - ); - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Archive; - }; - B324C4D82191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/mednafen/src\""; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - LSB_FIRST, - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVMednafen/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.27.1; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; - PRODUCT_NAME = PVMednafen; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT) \"$(SRCROOT)/PVMednafen\""; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; - USE_HEADERMAP = YES; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C4D92191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/src\"", - ); - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - LSB_FIRST, - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVMednafen/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.27.1; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; - PRODUCT_NAME = PVMednafen; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C4DA2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4DB2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4DC2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4DD2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4DE2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4DF2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E02191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E12191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E22191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E32191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E42191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E52191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E62191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E72191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E82191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4E92191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4EA2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4EB2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4EC2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4ED2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4EE2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4EF2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = s; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F02191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = s; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F12191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F22191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F32191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F42191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F52191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F62191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F72191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "MPC_FIXED_POINT=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F82191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4F92191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-fvisibility=hidden", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4FA2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4FB2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4FC2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C4FD2191A22A009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C5492191A8A5009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - "MPC_FIXED_POINT=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C54A2191A8A5009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "MPC_FIXED_POINT=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C54B2191A8A5009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "MPC_FIXED_POINT=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C5592191AAD1009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C55A2191AAD1009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C55B2191AAD1009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C5662191AAFE009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C5672191AAFE009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C5682191AAFE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C57F2191AB34009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C5802191AB34009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-fvisibility=hidden", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C5812191AB34009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-fvisibility=hidden", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C5892191AB4E009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_STRICT_ALIASING = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C58A2191AB4E009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B324C58B2191AB4E009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C59D2191AB9D009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B324C59E2191AB9D009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; + B34AB5982106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33351CA207B01860036A448 /* pce */; + targetProxy = B34AB5972106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C59F2191AB9D009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; + B34AB59A2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33351D7207B01970036A448 /* pcefast */; + targetProxy = B34AB5992106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5AC2191ABAD009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; + B34AB59C2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33351E4207B01C60036A448 /* segamastersystem */; + targetProxy = B34AB59B2106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5AD2191ABAD009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; + B34AB59E2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33351FB207B020C0036A448 /* pcfx */; + targetProxy = B34AB59D2106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5AE2191ABAD009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; + B34AB5A22106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33352A6207B06550036A448 /* hwaudio */; + targetProxy = B34AB5A12106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5C32191ABB7009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; + B34AB5A42106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33352B3207B06610036A448 /* hwvideo */; + targetProxy = B34AB5A32106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5C42191ABB7009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; + B34AB5A62106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33352C0207B06730036A448 /* hwcpu */; + targetProxy = B34AB5A52106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5C52191ABB7009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; + B34AB5A82106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33352CD207B067F0036A448 /* hwmisc */; + targetProxy = B34AB5A72106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5DB2191ACE1009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; + B34AB5AA2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B333546E207B1B500036A448 /* cdrom */; + targetProxy = B34AB5A92106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5DC2191ACE1009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; + B34AB5AC2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3335492207B1BF30036A448 /* sound */; + targetProxy = B34AB5AB2106DF8400C45F09 /* PBXContainerItemProxy */; + }; + B34AB5AE2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33354B3207B1C520036A448 /* video */; + targetProxy = B34AB5AD2106DF8400C45F09 /* PBXContainerItemProxy */; + }; + B34AB5B02106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33354CA207B1D850036A448 /* mednafen */; + targetProxy = B34AB5AF2106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5DD2191ACE1009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; + B34AB5B22106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33355A1207B1E930036A448 /* mpcdec */; + targetProxy = B34AB5B12106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5EF2191AD13009F4EDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; + B34AB5B42106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33355B7207B20420036A448 /* quicklz */; + targetProxy = B34AB5B32106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5F02191AD13009F4EDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; + B34AB5B62106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33355C6207B20BE0036A448 /* tremor */; + targetProxy = B34AB5B52106DF8400C45F09 /* PBXContainerItemProxy */; }; - B324C5F12191AD13009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; + B34AB5B82106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B33355E3207B278E0036A448 /* trio */; + targetProxy = B34AB5B72106DF8400C45F09 /* PBXContainerItemProxy */; }; - B32CF14321923EB40058E2E7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; + B34AB5BA2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3FBDEF7207FF0E300E661D1 /* snes */; + targetProxy = B34AB5B92106DF8400C45F09 /* PBXContainerItemProxy */; }; - B32CF14421923EB40058E2E7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Release; + B34AB5BC2106DF8400C45F09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3FBDF9E207FF5D800E661D1 /* snes_faust */; + targetProxy = B34AB5BB2106DF8400C45F09 /* PBXContainerItemProxy */; }; - B32CF14521923EB40058E2E7 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; + C6E1B69125AAC1D5007C3CF1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C6E1B65325AAC123007C3CF1 /* saturn */; + targetProxy = C6E1B69025AAC1D5007C3CF1 /* PBXContainerItemProxy */; + }; + C6E1B69725AAC5A3007C3CF1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C6E1B65325AAC123007C3CF1 /* saturn */; + targetProxy = C6E1B69625AAC5A3007C3CF1 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B34CB0EC2274BA81009134B4 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; }; - B32CF15221923F330058E2E7 /* Debug */ = { +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1DEB913F08733D840010E9CD /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3B5BF9B293F13F1006BFC55 /* Config.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/mednafen/src\"", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/mednafen/include\"", + "\"$(SRCROOT)/mednafen/intl\"", + "\"$(SRCROOT)/include\"", + "\"$(SRCROOT)/PVMednafen\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/libsndfile", + "\"$(SRCROOT)\"", + ); + LLVM_LTO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Debug; }; - B32CF15321923F330058E2E7 /* Release */ = { + 1DEB914008733D840010E9CD /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3B5BF9B293F13F1006BFC55 /* Config.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/mednafen/src\"", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PREPROCESSOR_DEFINITIONS = ( + NDEBUG, + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/mednafen/include\"", + "\"$(SRCROOT)/mednafen/intl\"", + "\"$(SRCROOT)/include\"", + "\"$(SRCROOT)/PVMednafen\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/libsndfile", + "\"$(SRCROOT)\"", + ); + LLVM_LTO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Release; }; - B32CF15421923F330058E2E7 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B32CF17521923F520058E2E7 /* Debug */ = { + B324C4D72191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3B5BF9B293F13F1006BFC55 /* Config.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/mednafen/src\"", + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = s; GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", + NDEBUG, "$(inherited)", ); - GCC_STRICT_ALIASING = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B32CF17621923F520058E2E7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/mednafen/include\"", + "\"$(SRCROOT)/mednafen/intl\"", + "\"$(SRCROOT)/include\"", + "\"$(SRCROOT)/PVMednafen\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/libsndfile", + "\"$(SRCROOT)\"", + ); + LLVM_LTO = NO; + ONLY_ACTIVE_ARCH = NO; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; - name = Release; + name = Archive; }; - B32CF17721923F520058E2E7 /* Archive */ = { + B324C4D82191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; + FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/mednafen/src\""; + GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVMednafen/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.27.1; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; + PRODUCT_NAME = PVMednafen; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT) \"$(SRCROOT)/PVMednafen\""; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; + USE_HEADERMAP = YES; VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Archive; }; - B32CF18621923F740058E2E7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B32CF18721923F740058E2E7 /* Release */ = { + B324C4DA2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14195,22 +8271,25 @@ COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B32CF18821923F740058E2E7 /* Archive */ = { + B324C4DC2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14223,55 +8302,25 @@ COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Archive; }; - B32CF19C21923F790058E2E7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B32CF19D21923F790058E2E7 /* Release */ = { + B324C4DD2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14288,18 +8337,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B32CF19E21923F790058E2E7 /* Archive */ = { + B324C4DE2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14316,18 +8367,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Archive; }; - B32CF1AE21923F7F0058E2E7 /* Debug */ = { + B324C4E02191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14338,29 +8391,28 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_NS_ASSERTIONS = NO; GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + LD_NO_PIE = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B32CF1AF21923F7F0058E2E7 /* Release */ = { + B324C4E22191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14372,23 +8424,27 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; + GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + LD_NO_PIE = YES; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B32CF1B021923F7F0058E2E7 /* Archive */ = { + B324C4E42191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14405,51 +8461,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Archive; }; - B32CF1C121923F850058E2E7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B32CF1C221923F850058E2E7 /* Release */ = { + B324C4E52191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14461,23 +8486,26 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; + GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B32CF1C321923F850058E2E7 /* Archive */ = { + B324C4E62191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14494,51 +8522,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Archive; }; - B32CF1CB219240270058E2E7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B32CF1CC219240270058E2E7 /* Release */ = { + B324C4E72191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14555,18 +8552,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B32CF1CD219240270058E2E7 /* Archive */ = { + B324C4E82191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14583,18 +8582,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Archive; }; - B3335033207AFBA40036A448 /* Debug */ = { + B324C4E92191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14605,30 +8606,26 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B3335034207AFBA40036A448 /* Release */ = { + B324C4EA2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14641,7 +8638,6 @@ COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; @@ -14649,15 +8645,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B3335069207AFD3D0036A448 /* Debug */ = { + B324C4EC2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14668,30 +8666,26 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B333506A207AFD3D0036A448 /* Release */ = { + B324C4ED2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14704,7 +8698,6 @@ COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; @@ -14712,15 +8705,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B3335099207AFF2C0036A448 /* Debug */ = { + B324C4EF2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14731,29 +8726,26 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = s; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B333509A207AFF2C0036A448 /* Release */ = { + B324C4F12191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14770,18 +8762,19 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B33350AC207AFFE90036A448 /* Debug */ = { + B324C4F22191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14792,29 +8785,25 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B33350AD207AFFE90036A448 /* Release */ = { + B324C4F32191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14831,18 +8820,19 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B3335197207B00F80036A448 /* Debug */ = { + B324C4F42191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14853,30 +8843,25 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B3335198207B00F80036A448 /* Release */ = { + B324C4F52191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14888,25 +8873,24 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B33351AB207B01470036A448 /* Debug */ = { + B324C4F72191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14917,30 +8901,25 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B33351AC207B01470036A448 /* Release */ = { + B324C4F82191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14952,25 +8931,25 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_DYNAMIC_NO_PIC = NO; + GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - LD_NO_PIE = YES; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B33351B8207B01570036A448 /* Debug */ = { + B324C4F92191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -14981,29 +8960,29 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ( + "$(inherited)", + "-fvisibility=hidden", + ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B33351B9207B01570036A448 /* Release */ = { + B324C4FA2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15020,18 +8999,19 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B33351C5207B016F0036A448 /* Debug */ = { + B324C4FB2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15042,30 +9022,33 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_STRICT_ALIASING = NO; + ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/mednafen/include\"", + "\"$(SRCROOT)/mednafen/intl\"", + "\"$(SRCROOT)/include\"", + "\"$(SRCROOT)/PVMednafen\"", + "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Archive; }; - B33351C6207B016F0036A448 /* Release */ = { + B324C4FD2191A22A009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15077,24 +9060,24 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B33351D2207B01860036A448 /* Debug */ = { + B3335033207AFBA40036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15108,11 +9091,8 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; @@ -15120,14 +9100,16 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33351D3207B01860036A448 /* Release */ = { + B3335034207AFBA40036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15140,6 +9122,7 @@ COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; @@ -15147,15 +9130,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33351DF207B01980036A448 /* Debug */ = { + B3335069207AFD3D0036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15169,11 +9154,8 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; @@ -15181,14 +9163,16 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33351E0207B01980036A448 /* Release */ = { + B333506A207AFD3D0036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15201,6 +9185,7 @@ COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; @@ -15208,15 +9193,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33351EC207B01C60036A448 /* Debug */ = { + B3335099207AFF2C0036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15230,10 +9217,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; @@ -15242,14 +9225,16 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33351ED207B01C60036A448 /* Release */ = { + B333509A207AFF2C0036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15269,15 +9254,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B3335203207B020D0036A448 /* Debug */ = { + B33350AC207AFFE90036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15291,10 +9278,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; @@ -15303,14 +9286,16 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B3335204207B020D0036A448 /* Release */ = { + B33350AD207AFFE90036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15330,15 +9315,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B333524C207B02780036A448 /* Debug */ = { + B3335197207B00F80036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15352,26 +9339,25 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + LD_NO_PIE = YES; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B333524D207B02780036A448 /* Release */ = { + B3335198207B00F80036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15383,23 +9369,27 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; + GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + LD_NO_PIE = YES; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33352AE207B06550036A448 /* Debug */ = { + B33351AB207B01470036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15413,26 +9403,25 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + LD_NO_PIE = YES; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33352AF207B06550036A448 /* Release */ = { + B33351AC207B01470036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15444,23 +9433,27 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; + GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + LD_NO_PIE = YES; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33352BB207B06620036A448 /* Debug */ = { + B33351B8207B01570036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15474,10 +9467,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; @@ -15486,14 +9475,16 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33352BC207B06620036A448 /* Release */ = { + B33351B9207B01570036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15513,15 +9504,17 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33352C8207B06740036A448 /* Debug */ = { + B33351C5207B016F0036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15535,25 +9528,25 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33352C9207B06740036A448 /* Release */ = { + B33351C6207B016F0036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15565,23 +9558,26 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = s; + GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33352D5207B067F0036A448 /* Debug */ = { + B33351D2207B01860036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15595,25 +9591,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33352D6207B067F0036A448 /* Release */ = { + B33351D3207B01860036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15630,17 +9625,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B3335475207B1B500036A448 /* Debug */ = { + B33351DF207B01980036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15654,25 +9652,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B3335476207B1B500036A448 /* Release */ = { + B33351E0207B01980036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15689,17 +9686,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B333549A207B1BF40036A448 /* Debug */ = { + B33351EC207B01C60036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15713,25 +9713,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B333549B207B1BF40036A448 /* Release */ = { + B33351ED207B01C60036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15748,17 +9747,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33354BB207B1C520036A448 /* Debug */ = { + B3335203207B020D0036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15772,25 +9774,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33354BC207B1C520036A448 /* Release */ = { + B3335204207B020D0036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15807,17 +9808,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33354D2207B1D860036A448 /* Debug */ = { + B333524C207B02780036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15831,25 +9835,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33354D3207B1D860036A448 /* Release */ = { + B333524D207B02780036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15866,17 +9869,20 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33355A9207B1E930036A448 /* Debug */ = { + B33352AE207B06550036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15890,26 +9896,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - "MPC_FIXED_POINT=1", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33355AA207B1E930036A448 /* Release */ = { + B33352AF207B06550036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15921,26 +9925,25 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "MPC_FIXED_POINT=1", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33355BF207B20420036A448 /* Debug */ = { + B33352BB207B06620036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15954,26 +9957,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33355C0207B20420036A448 /* Release */ = { + B33352BC207B06620036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -15985,23 +9986,25 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33355CE207B20BF0036A448 /* Debug */ = { + B33352C8207B06740036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16015,10 +10018,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; @@ -16026,14 +10025,16 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33355CF207B20BF0036A448 /* Release */ = { + B33352C9207B06740036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16045,26 +10046,25 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = s; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-fvisibility=hidden", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B33355EB207B278F0036A448 /* Debug */ = { + B33352D5207B067F0036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16078,10 +10078,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; @@ -16089,14 +10085,16 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B33355EC207B278F0036A448 /* Release */ = { + B33352D6207B067F0036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16115,265 +10113,135 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B340E4681E08887700AD0E8B /* Debug */ = { + B3335475207B1B500036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_STYLE = Manual; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/mednafen/src\""; - GCC_NO_COMMON_BLOCKS = YES; + GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - LSB_FIRST, - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVMednafen/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.27.1; MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; - PRODUCT_NAME = PVMednafen; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_COMPILATION_MODE = singlefile; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT) \"$(SRCROOT)/PVMednafen\""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; - USE_HEADERMAP = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B340E4691E08887700AD0E8B /* Release */ = { + B3335476207B1B500036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_STYLE = Manual; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; - FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/mednafen/src\""; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - LSB_FIRST, - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVMednafen/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.27.1; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; - PRODUCT_NAME = PVMednafen; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT) \"$(SRCROOT)/PVMednafen\""; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; - USE_HEADERMAP = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; }; name = Release; }; - B340E4751E08888700AD0E8B /* Debug */ = { + B333549A207B1BF40036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/src\"", - ); - GCC_NO_COMMON_BLOCKS = YES; + GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - LSB_FIRST, - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVMednafen/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.27.1; MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; - PRODUCT_NAME = PVMednafen; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_COMPILATION_MODE = singlefile; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B340E4761E08888700AD0E8B /* Release */ = { + B333549B207B1BF40036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/src\"", - ); - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - LSB_FIRST, - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVMednafen/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.27.1; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; - PRODUCT_NAME = PVMednafen; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; }; name = Release; }; - B35D668E218185710005A992 /* Debug */ = { + B33354BB207B1C520036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16387,26 +10255,23 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B35D668F218185710005A992 /* Release */ = { + B33354BC207B1C520036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16418,24 +10283,24 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = s; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B393F24E277C0BF70097F71C /* Debug */ = { + B33354D2207B1D860036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16449,26 +10314,23 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B393F24F277C0BF70097F71C /* Release */ = { + B33354D3207B1D860036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16480,24 +10342,54 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = 1; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B393F250277C0BF70097F71C /* Archive */ = { + B33355A9207B1E930036A448 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B33355AA207B1E930036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16509,24 +10401,24 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = 1; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Archive; + name = Release; }; - B393F25C277C0C340097F71C /* Debug */ = { + B33355BF207B20420036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16540,26 +10432,24 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B393F25D277C0C340097F71C /* Release */ = { + B33355C0207B20420036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16571,24 +10461,55 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = 1; + GCC_STRICT_ALIASING = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B393F25E277C0C340097F71C /* Archive */ = { + B33355CE207B20BF0036A448 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B33355CF207B20BF0036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16600,24 +10521,28 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = 1; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ( + "$(inherited)", + "-fvisibility=hidden", + ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Archive; + name = Release; }; - B3FBDEFE207FF0E300E661D1 /* Debug */ = { + B33355EB207B278F0036A448 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16631,33 +10556,23 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", - ); MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B3FBDEFF207FF0E300E661D1 /* Release */ = { + B33355EC207B278F0036A448 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16671,28 +10586,176 @@ ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B340E4681E08887700AD0E8B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_TESTABILITY = YES; + FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/mednafen/src\""; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVMednafen/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.27.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; + PRODUCT_NAME = PVMednafen; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_COMPILATION_MODE = singlefile; + SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT) \"$(SRCROOT)/PVMednafen\""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; + USE_HEADERMAP = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B340E4691E08887700AD0E8B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/mednafen/src\""; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = PVMednafen/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", ); + MARKETING_VERSION = 1.27.1; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMednafen"; + PRODUCT_NAME = PVMednafen; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT) \"$(SRCROOT)/PVMednafen\""; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PVMednafen\""; + USE_HEADERMAP = YES; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B393F24E277C0BF70097F71C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; - name = Release; + name = Debug; }; - B3FBDFA6207FF5D900E661D1 /* Debug */ = { + B393F24F277C0BF70097F71C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16703,28 +10766,27 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); + ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 1; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = YES; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - B3FBDFA7207FF5D900E661D1 /* Release */ = { + B393F250277C0BF70097F71C /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16736,22 +10798,26 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 2; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - C6E1B62525AA9C15007C3CF1 /* Debug */ = { + B3FBDEFE207FF0E300E661D1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16765,10 +10831,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = ( @@ -16782,17 +10844,18 @@ MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - C6E1B62625AA9C15007C3CF1 /* Release */ = { + B3FBDEFF207FF0E300E661D1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16804,7 +10867,6 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; - GCC_OPTIMIZATION_LEVEL = 2; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = ( @@ -16816,48 +10878,51 @@ "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-DHAVE_UNISTD_H", - "-DMEDNAFEN_VERSION=\\\"1.26.1\\\"", - "-DPACKAGE=\\\"mednafen\\\"", - "-DMEDNAFEN_VERSION_NUMERIC=0x00102601", - "-DHAVE_LROUND", - "-DHAVE_STDINT_H", - "-DHAVE_STDLIB_H", - "-DHAVE_SYS_PARAM_H", - "-DNDEBUG", - "-funroll-loops", - "-fPIC", - "-Wall", - "-Wno-sign-compare", - "-Wno-unused-variable", - "-Wno-unused-function", - "-Wno-uninitialized", - "-Wno-strict-aliasing", - "-Wno-aggressive-loop-optimizations", - "-fno-fast-math", - "-fomit-frame-pointer", - "-fsigned-char", - "-DWANT_STEREO_SOUND", - "-DSTDC_HEADERS", - "-D__STDC_LIMIT_MACROS", - "-D__LIBRETRO__", - "-DINLINE=\"inline\"", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; }; - C6E1B62725AA9C15007C3CF1 /* Archive */ = { + B3FBDFA6207FF5D900E661D1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3FBDFA7207FF5D900E661D1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16871,29 +10936,22 @@ ENABLE_NS_ASSERTIONS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/mednafen/include\"", - "\"$(SRCROOT)/mednafen/intl\"", - "\"$(SRCROOT)/include\"", - "\"$(SRCROOT)/PVMednafen\"", - "\"$(SRCROOT)/mednafen/src/snes/src/lib\"", - ); MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Archive; + name = Release; }; C6E1B66B25AAC123007C3CF1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16907,10 +10965,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; MTL_ENABLE_DEBUG_INFO = YES; @@ -16918,14 +10972,16 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; C6E1B66C25AAC123007C3CF1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16944,8 +11000,9 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; @@ -16953,6 +11010,7 @@ C6E1B66D25AAC123007C3CF1 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -16971,8 +11029,9 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -16990,267 +11049,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B324C33F21919BC6009F4EDC /* Build configuration list for PBXNativeTarget "psx-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C34021919BC6009F4EDC /* Debug */, - B324C34121919BC6009F4EDC /* Release */, - B324C4DB2191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C34921919C1C009F4EDC /* Build configuration list for PBXNativeTarget "hwvideo-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C34A21919C1C009F4EDC /* Debug */, - B324C34B21919C1C009F4EDC /* Release */, - B324C4EE2191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C3D021919CD6009F4EDC /* Build configuration list for PBXNativeTarget "nes-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C3D121919CD6009F4EDC /* Debug */, - B324C3D221919CD6009F4EDC /* Release */, - B324C4DF2191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C3F721919D34009F4EDC /* Build configuration list for PBXNativeTarget "megadrive-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C3F821919D34009F4EDC /* Debug */, - B324C3F921919D34009F4EDC /* Release */, - B324C4EB2191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C42721919D73009F4EDC /* Build configuration list for PBXNativeTarget "mednafen-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C42821919D73009F4EDC /* Debug */, - B324C42921919D73009F4EDC /* Release */, - B324C4F62191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C4A721919DC9009F4EDC /* Build configuration list for PBXNativeTarget "snes-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C4A821919DC9009F4EDC /* Debug */, - B324C4A921919DC9009F4EDC /* Release */, - B324C4FC2191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C4C221919E72009F4EDC /* Build configuration list for PBXNativeTarget "gba-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C4C321919E72009F4EDC /* Debug */, - B324C4C421919E72009F4EDC /* Release */, - B324C4E32191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C4D22191A1AC009F4EDC /* Build configuration list for PBXNativeTarget "gb-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C4D32191A1AC009F4EDC /* Debug */, - B324C4D42191A1AC009F4EDC /* Release */, - B324C4E12191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5482191A8A5009F4EDC /* Build configuration list for PBXNativeTarget "mpcdec-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5492191A8A5009F4EDC /* Debug */, - B324C54A2191A8A5009F4EDC /* Release */, - B324C54B2191A8A5009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5582191AAD1009F4EDC /* Build configuration list for PBXNativeTarget "snes_faust-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5592191AAD1009F4EDC /* Debug */, - B324C55A2191AAD1009F4EDC /* Release */, - B324C55B2191AAD1009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5652191AAFE009F4EDC /* Build configuration list for PBXNativeTarget "trio-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5662191AAFE009F4EDC /* Debug */, - B324C5672191AAFE009F4EDC /* Release */, - B324C5682191AAFE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C57E2191AB34009F4EDC /* Build configuration list for PBXNativeTarget "tremor-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C57F2191AB34009F4EDC /* Debug */, - B324C5802191AB34009F4EDC /* Release */, - B324C5812191AB34009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5882191AB4E009F4EDC /* Build configuration list for PBXNativeTarget "quicklz-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5892191AB4E009F4EDC /* Debug */, - B324C58A2191AB4E009F4EDC /* Release */, - B324C58B2191AB4E009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C59C2191AB9D009F4EDC /* Build configuration list for PBXNativeTarget "video-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C59D2191AB9D009F4EDC /* Debug */, - B324C59E2191AB9D009F4EDC /* Release */, - B324C59F2191AB9D009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5AB2191ABAD009F4EDC /* Build configuration list for PBXNativeTarget "sound-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5AC2191ABAD009F4EDC /* Debug */, - B324C5AD2191ABAD009F4EDC /* Release */, - B324C5AE2191ABAD009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5C22191ABB7009F4EDC /* Build configuration list for PBXNativeTarget "cdrom-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5C32191ABB7009F4EDC /* Debug */, - B324C5C42191ABB7009F4EDC /* Release */, - B324C5C52191ABB7009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5DA2191ACE1009F4EDC /* Build configuration list for PBXNativeTarget "pcfx-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5DB2191ACE1009F4EDC /* Debug */, - B324C5DC2191ACE1009F4EDC /* Release */, - B324C5DD2191ACE1009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B324C5EE2191AD13009F4EDC /* Build configuration list for PBXNativeTarget "wonderswan-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B324C5EF2191AD13009F4EDC /* Debug */, - B324C5F02191AD13009F4EDC /* Release */, - B324C5F12191AD13009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF14221923EB40058E2E7 /* Build configuration list for PBXNativeTarget "hwaudio-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF14321923EB40058E2E7 /* Debug */, - B32CF14421923EB40058E2E7 /* Release */, - B32CF14521923EB40058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF15121923F330058E2E7 /* Build configuration list for PBXNativeTarget "virtualboy-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF15221923F330058E2E7 /* Debug */, - B32CF15321923F330058E2E7 /* Release */, - B32CF15421923F330058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF17421923F520058E2E7 /* Build configuration list for PBXNativeTarget "neogeopocket-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF17521923F520058E2E7 /* Debug */, - B32CF17621923F520058E2E7 /* Release */, - B32CF17721923F520058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF18521923F740058E2E7 /* Build configuration list for PBXNativeTarget "lynx-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF18621923F740058E2E7 /* Debug */, - B32CF18721923F740058E2E7 /* Release */, - B32CF18821923F740058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF19B21923F790058E2E7 /* Build configuration list for PBXNativeTarget "pce-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF19C21923F790058E2E7 /* Debug */, - B32CF19D21923F790058E2E7 /* Release */, - B32CF19E21923F790058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF1AD21923F7F0058E2E7 /* Build configuration list for PBXNativeTarget "pcefast-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF1AE21923F7F0058E2E7 /* Debug */, - B32CF1AF21923F7F0058E2E7 /* Release */, - B32CF1B021923F7F0058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF1C021923F850058E2E7 /* Build configuration list for PBXNativeTarget "segamastersystem-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF1C121923F850058E2E7 /* Debug */, - B32CF1C221923F850058E2E7 /* Release */, - B32CF1C321923F850058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B32CF1CA219240270058E2E7 /* Build configuration list for PBXNativeTarget "hwmisc-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B32CF1CB219240270058E2E7 /* Debug */, - B32CF1CC219240270058E2E7 /* Release */, - B32CF1CD219240270058E2E7 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3335035207AFBA40036A448 /* Build configuration list for PBXNativeTarget "psx-iOS" */ = { + B3335035207AFBA40036A448 /* Build configuration list for PBXNativeTarget "psx" */ = { isa = XCConfigurationList; buildConfigurations = ( B3335033207AFBA40036A448 /* Debug */, @@ -17260,7 +11059,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3335068207AFD3D0036A448 /* Build configuration list for PBXNativeTarget "wonderswan-iOS" */ = { + B3335068207AFD3D0036A448 /* Build configuration list for PBXNativeTarget "wonderswan" */ = { isa = XCConfigurationList; buildConfigurations = ( B3335069207AFD3D0036A448 /* Debug */, @@ -17270,7 +11069,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3335098207AFF2C0036A448 /* Build configuration list for PBXNativeTarget "virtualboy-iOS" */ = { + B3335098207AFF2C0036A448 /* Build configuration list for PBXNativeTarget "virtualboy" */ = { isa = XCConfigurationList; buildConfigurations = ( B3335099207AFF2C0036A448 /* Debug */, @@ -17280,7 +11079,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33350AB207AFFE90036A448 /* Build configuration list for PBXNativeTarget "nes-iOS" */ = { + B33350AB207AFFE90036A448 /* Build configuration list for PBXNativeTarget "nes" */ = { isa = XCConfigurationList; buildConfigurations = ( B33350AC207AFFE90036A448 /* Debug */, @@ -17290,7 +11089,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3335196207B00F80036A448 /* Build configuration list for PBXNativeTarget "gb-iOS" */ = { + B3335196207B00F80036A448 /* Build configuration list for PBXNativeTarget "gb" */ = { isa = XCConfigurationList; buildConfigurations = ( B3335197207B00F80036A448 /* Debug */, @@ -17300,7 +11099,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33351AA207B01470036A448 /* Build configuration list for PBXNativeTarget "gba-iOS" */ = { + B33351AA207B01470036A448 /* Build configuration list for PBXNativeTarget "gba" */ = { isa = XCConfigurationList; buildConfigurations = ( B33351AB207B01470036A448 /* Debug */, @@ -17310,7 +11109,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33351B7207B01570036A448 /* Build configuration list for PBXNativeTarget "lynx-iOS" */ = { + B33351B7207B01570036A448 /* Build configuration list for PBXNativeTarget "lynx" */ = { isa = XCConfigurationList; buildConfigurations = ( B33351B8207B01570036A448 /* Debug */, @@ -17320,7 +11119,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33351C4207B016F0036A448 /* Build configuration list for PBXNativeTarget "neogeopocket-iOS" */ = { + B33351C4207B016F0036A448 /* Build configuration list for PBXNativeTarget "neogeopocket" */ = { isa = XCConfigurationList; buildConfigurations = ( B33351C5207B016F0036A448 /* Debug */, @@ -17330,7 +11129,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33351D1207B01860036A448 /* Build configuration list for PBXNativeTarget "pce-iOS" */ = { + B33351D1207B01860036A448 /* Build configuration list for PBXNativeTarget "pce" */ = { isa = XCConfigurationList; buildConfigurations = ( B33351D2207B01860036A448 /* Debug */, @@ -17340,7 +11139,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33351DE207B01980036A448 /* Build configuration list for PBXNativeTarget "pcefast-iOS" */ = { + B33351DE207B01980036A448 /* Build configuration list for PBXNativeTarget "pcefast" */ = { isa = XCConfigurationList; buildConfigurations = ( B33351DF207B01980036A448 /* Debug */, @@ -17350,7 +11149,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33351EB207B01C60036A448 /* Build configuration list for PBXNativeTarget "segamastersystem-iOS" */ = { + B33351EB207B01C60036A448 /* Build configuration list for PBXNativeTarget "segamastersystem" */ = { isa = XCConfigurationList; buildConfigurations = ( B33351EC207B01C60036A448 /* Debug */, @@ -17360,7 +11159,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3335202207B020D0036A448 /* Build configuration list for PBXNativeTarget "pcfx-iOS" */ = { + B3335202207B020D0036A448 /* Build configuration list for PBXNativeTarget "pcfx" */ = { isa = XCConfigurationList; buildConfigurations = ( B3335203207B020D0036A448 /* Debug */, @@ -17370,7 +11169,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B333524B207B02780036A448 /* Build configuration list for PBXNativeTarget "megadrive-iOS" */ = { + B333524B207B02780036A448 /* Build configuration list for PBXNativeTarget "megadrive" */ = { isa = XCConfigurationList; buildConfigurations = ( B333524C207B02780036A448 /* Debug */, @@ -17380,7 +11179,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33352AD207B06550036A448 /* Build configuration list for PBXNativeTarget "hwaudio-iOS" */ = { + B33352AD207B06550036A448 /* Build configuration list for PBXNativeTarget "hwaudio" */ = { isa = XCConfigurationList; buildConfigurations = ( B33352AE207B06550036A448 /* Debug */, @@ -17390,7 +11189,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33352BA207B06620036A448 /* Build configuration list for PBXNativeTarget "hwvideo-iOS" */ = { + B33352BA207B06620036A448 /* Build configuration list for PBXNativeTarget "hwvideo" */ = { isa = XCConfigurationList; buildConfigurations = ( B33352BB207B06620036A448 /* Debug */, @@ -17400,7 +11199,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33352C7207B06740036A448 /* Build configuration list for PBXNativeTarget "hwcpu-iOS" */ = { + B33352C7207B06740036A448 /* Build configuration list for PBXNativeTarget "hwcpu" */ = { isa = XCConfigurationList; buildConfigurations = ( B33352C8207B06740036A448 /* Debug */, @@ -17410,7 +11209,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33352D4207B067F0036A448 /* Build configuration list for PBXNativeTarget "hwmisc-iOS" */ = { + B33352D4207B067F0036A448 /* Build configuration list for PBXNativeTarget "hwmisc" */ = { isa = XCConfigurationList; buildConfigurations = ( B33352D5207B067F0036A448 /* Debug */, @@ -17420,7 +11219,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3335477207B1B500036A448 /* Build configuration list for PBXNativeTarget "cdrom-iOS" */ = { + B3335477207B1B500036A448 /* Build configuration list for PBXNativeTarget "cdrom" */ = { isa = XCConfigurationList; buildConfigurations = ( B3335475207B1B500036A448 /* Debug */, @@ -17430,7 +11229,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3335499207B1BF40036A448 /* Build configuration list for PBXNativeTarget "sound-iOS" */ = { + B3335499207B1BF40036A448 /* Build configuration list for PBXNativeTarget "sound" */ = { isa = XCConfigurationList; buildConfigurations = ( B333549A207B1BF40036A448 /* Debug */, @@ -17440,7 +11239,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33354BA207B1C520036A448 /* Build configuration list for PBXNativeTarget "video-iOS" */ = { + B33354BA207B1C520036A448 /* Build configuration list for PBXNativeTarget "video" */ = { isa = XCConfigurationList; buildConfigurations = ( B33354BB207B1C520036A448 /* Debug */, @@ -17450,7 +11249,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33354D1207B1D860036A448 /* Build configuration list for PBXNativeTarget "mednafen-iOS" */ = { + B33354D1207B1D860036A448 /* Build configuration list for PBXNativeTarget "mednafen" */ = { isa = XCConfigurationList; buildConfigurations = ( B33354D2207B1D860036A448 /* Debug */, @@ -17460,7 +11259,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33355A8207B1E930036A448 /* Build configuration list for PBXNativeTarget "mpcdec-iOS" */ = { + B33355A8207B1E930036A448 /* Build configuration list for PBXNativeTarget "mpcdec" */ = { isa = XCConfigurationList; buildConfigurations = ( B33355A9207B1E930036A448 /* Debug */, @@ -17470,7 +11269,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33355BE207B20420036A448 /* Build configuration list for PBXNativeTarget "quicklz-iOS" */ = { + B33355BE207B20420036A448 /* Build configuration list for PBXNativeTarget "quicklz" */ = { isa = XCConfigurationList; buildConfigurations = ( B33355BF207B20420036A448 /* Debug */, @@ -17480,7 +11279,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33355CD207B20BF0036A448 /* Build configuration list for PBXNativeTarget "tremor-iOS" */ = { + B33355CD207B20BF0036A448 /* Build configuration list for PBXNativeTarget "tremor" */ = { isa = XCConfigurationList; buildConfigurations = ( B33355CE207B20BF0036A448 /* Debug */, @@ -17490,7 +11289,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33355EA207B278F0036A448 /* Build configuration list for PBXNativeTarget "trio-iOS" */ = { + B33355EA207B278F0036A448 /* Build configuration list for PBXNativeTarget "trio" */ = { isa = XCConfigurationList; buildConfigurations = ( B33355EB207B278F0036A448 /* Debug */, @@ -17500,7 +11299,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B340E4671E08887700AD0E8B /* Build configuration list for PBXNativeTarget "PVMednafen-iOS" */ = { + B340E4671E08887700AD0E8B /* Build configuration list for PBXNativeTarget "PVMednafen" */ = { isa = XCConfigurationList; buildConfigurations = ( B340E4681E08887700AD0E8B /* Debug */, @@ -17510,27 +11309,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B340E4741E08888700AD0E8B /* Build configuration list for PBXNativeTarget "PVMednafen-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B340E4751E08888700AD0E8B /* Debug */, - B340E4761E08888700AD0E8B /* Release */, - B324C4D92191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B35D668D218185710005A992 /* Build configuration list for PBXNativeTarget "hwcpu-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B35D668E218185710005A992 /* Debug */, - B35D668F218185710005A992 /* Release */, - B324C4F02191A22A009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B393F24D277C0BF70097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-iOS" */ = { + B393F24D277C0BF70097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k" */ = { isa = XCConfigurationList; buildConfigurations = ( B393F24E277C0BF70097F71C /* Debug */, @@ -17540,17 +11319,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B393F25B277C0C340097F71C /* Build configuration list for PBXNativeTarget "hwcpu-m68k-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B393F25C277C0C340097F71C /* Debug */, - B393F25D277C0C340097F71C /* Release */, - B393F25E277C0C340097F71C /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3FBDF00207FF0E400E661D1 /* Build configuration list for PBXNativeTarget "snes-iOS" */ = { + B3FBDF00207FF0E400E661D1 /* Build configuration list for PBXNativeTarget "snes" */ = { isa = XCConfigurationList; buildConfigurations = ( B3FBDEFE207FF0E300E661D1 /* Debug */, @@ -17560,7 +11329,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3FBDFA5207FF5D900E661D1 /* Build configuration list for PBXNativeTarget "snes_faust-iOS" */ = { + B3FBDFA5207FF5D900E661D1 /* Build configuration list for PBXNativeTarget "snes_faust" */ = { isa = XCConfigurationList; buildConfigurations = ( B3FBDFA6207FF5D900E661D1 /* Debug */, @@ -17570,17 +11339,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C6E1B62425AA9C15007C3CF1 /* Build configuration list for PBXNativeTarget "saturn-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C6E1B62525AA9C15007C3CF1 /* Debug */, - C6E1B62625AA9C15007C3CF1 /* Release */, - C6E1B62725AA9C15007C3CF1 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C6E1B66A25AAC123007C3CF1 /* Build configuration list for PBXNativeTarget "saturn-iOS" */ = { + C6E1B66A25AAC123007C3CF1 /* Build configuration list for PBXNativeTarget "saturn" */ = { isa = XCConfigurationList; buildConfigurations = ( C6E1B66B25AAC123007C3CF1 /* Debug */, diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/PVMednafen.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/PVMednafen.xcscheme index 05a0ef8d66..8208866923 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/PVMednafen.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/PVMednafen.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B340E4611E08887600AD0E8B" BuildableName = "PVMednafen.framework" - BlueprintName = "PVMednafen-iOS" + BlueprintName = "PVMednafen" ReferencedContainer = "container:PVMednafen.xcodeproj"> @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -59,7 +59,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B340E4611E08887600AD0E8B" BuildableName = "PVMednafen.framework" - BlueprintName = "PVMednafen-iOS" + BlueprintName = "PVMednafen" ReferencedContainer = "container:PVMednafen.xcodeproj"> @@ -75,7 +75,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B340E4611E08887600AD0E8B" BuildableName = "PVMednafen.framework" - BlueprintName = "PVMednafen-iOS" + BlueprintName = "PVMednafen" ReferencedContainer = "container:PVMednafen.xcodeproj"> diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/cdrom-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/cdrom-iOS.xcscheme index 8a3e4f1f00..dcadf36fe5 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/cdrom-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/cdrom-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/cdrom-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/cdrom-tvOS.xcscheme deleted file mode 100644 index 3ea53102c1..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/cdrom-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gb-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gb-iOS.xcscheme index 7f7bdc9d33..988c02ab1f 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gb-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gb-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gb-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gb-tvOS.xcscheme deleted file mode 100644 index 2a15706570..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gb-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gba-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gba-iOS.xcscheme index 3bd7278c57..31f7a66925 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gba-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gba-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gba-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gba-tvOS.xcscheme deleted file mode 100644 index 2f4ad4d24b..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/gba-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwaudio-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwaudio-iOS.xcscheme index 67f450ad10..f0cce829bf 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwaudio-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwaudio-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwaudio-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwaudio-tvOS.xcscheme deleted file mode 100644 index 1582b50113..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwaudio-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwcpu-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwcpu-iOS.xcscheme index 3e6b3171d4..e7e7b4ef17 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwcpu-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwcpu-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwcpu-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwcpu-tvOS.xcscheme deleted file mode 100644 index df3fb07486..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwcpu-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwmisc-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwmisc-iOS.xcscheme index c912bbbb18..636fe33da9 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwmisc-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwmisc-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwmisc-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwmisc-tvOS.xcscheme deleted file mode 100644 index d6a6f3b61f..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwmisc-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwvideo-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwvideo-iOS.xcscheme index 2031032a18..5d4611a4a5 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwvideo-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwvideo-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwvideo-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwvideo-tvOS.xcscheme deleted file mode 100644 index 794857893c..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/hwvideo-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/lynx-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/lynx-iOS.xcscheme index 0d7cd511a6..fe67e14817 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/lynx-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/lynx-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/lynx-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/lynx-tvOS.xcscheme deleted file mode 100644 index 3039719ae9..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/lynx-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mednafen-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mednafen-iOS.xcscheme index fb81033a18..13a6661aad 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mednafen-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mednafen-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mednafen-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mednafen-tvOS.xcscheme deleted file mode 100644 index 39576e11b0..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mednafen-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/megadrive-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/megadrive-iOS.xcscheme index 9f902f24d0..176f391725 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/megadrive-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/megadrive-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/megadrive-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/megadrive-tvOS.xcscheme deleted file mode 100644 index f266a90246..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/megadrive-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mpcdec-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mpcdec-iOS.xcscheme index c6f83f6d9f..a188038818 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mpcdec-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mpcdec-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mpcdec-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mpcdec-tvOS.xcscheme deleted file mode 100644 index a3b40b3f6d..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/mpcdec-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket-iOS.xcscheme deleted file mode 100644 index 08982b7292..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket-tvOS.xcscheme deleted file mode 100644 index 84b0fac1a3..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket.xcscheme new file mode 100644 index 0000000000..eed04a2055 --- /dev/null +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/neogeopocket.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/nes-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/nes-iOS.xcscheme index 44d65afd6e..ed77e21d35 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/nes-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/nes-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/nes-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/nes-tvOS.xcscheme deleted file mode 100644 index b70e011d9a..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/nes-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pce-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pce-iOS.xcscheme index 9f8de8ac2e..af5cf62cfc 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pce-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pce-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pce-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pce-tvOS.xcscheme deleted file mode 100644 index 2082bee68f..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pce-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcefast-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcefast-iOS.xcscheme index 836c395cdc..eb2a2e3a2f 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcefast-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcefast-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcefast-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcefast-tvOS.xcscheme deleted file mode 100644 index 71b661dfb4..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcefast-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcfx-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcfx-iOS.xcscheme index eb41966d96..3fad45d6b9 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcfx-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcfx-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcfx-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcfx-tvOS.xcscheme deleted file mode 100644 index c219dd4c14..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/pcfx-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/psx-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/psx-iOS.xcscheme index 494b229482..3dc1e0a4f6 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/psx-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/psx-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/psx-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/psx-tvOS.xcscheme deleted file mode 100644 index 3e016819bf..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/psx-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/quicklz-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/quicklz-iOS.xcscheme index 811faa96d1..2d9e0c7620 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/quicklz-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/quicklz-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/quicklz-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/quicklz-tvOS.xcscheme deleted file mode 100644 index b3f7828a63..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/quicklz-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/saturn-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/saturn-iOS.xcscheme index 405c938d2f..7871ee514e 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/saturn-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/saturn-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/saturn-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/saturn-tvOS.xcscheme deleted file mode 100644 index 558c3e85aa..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/saturn-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/segamastersystem-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/segamastersystem-iOS.xcscheme index 762e7e3734..3651bc69f4 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/segamastersystem-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/segamastersystem-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/segamastersystem-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/segamastersystem-tvOS.xcscheme deleted file mode 100644 index ade55967c5..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/segamastersystem-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes-iOS.xcscheme index d34e5a7870..4468d24704 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes-tvOS.xcscheme deleted file mode 100644 index e76f5cbcc4..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes_faust-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes_faust-iOS.xcscheme index 9fdd09d016..a206de1017 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes_faust-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes_faust-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes_faust-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes_faust-tvOS.xcscheme deleted file mode 100644 index 662261feb6..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/snes_faust-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/sound-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/sound-iOS.xcscheme index c02d5459d2..d03934b61f 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/sound-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/sound-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/sound-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/sound-tvOS.xcscheme deleted file mode 100644 index 6c42db7e54..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/sound-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/tremor-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/tremor-iOS.xcscheme index 5d5ffede87..e883b4e4b0 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/tremor-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/tremor-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/tremor-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/tremor-tvOS.xcscheme deleted file mode 100644 index f167ee0f89..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/tremor-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/trio-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/trio-iOS.xcscheme index 5b51f2005c..f81020f17d 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/trio-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/trio-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/trio-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/trio-tvOS.xcscheme deleted file mode 100644 index 5f41bb0e65..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/trio-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/video-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/video-iOS.xcscheme index bf263e64fa..ae62078db3 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/video-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/video-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/video-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/video-tvOS.xcscheme deleted file mode 100644 index 0c509c4b9f..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/video-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/virtualboy-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/virtualboy-iOS.xcscheme index 6202a82b28..d8a8662947 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/virtualboy-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/virtualboy-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/virtualboy-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/virtualboy-tvOS.xcscheme deleted file mode 100644 index b2d311134e..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/virtualboy-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/wonderswan-iOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/wonderswan-iOS.xcscheme index 5af1bb1a13..afc1a5f968 100644 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/wonderswan-iOS.xcscheme +++ b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/wonderswan-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/wonderswan-tvOS.xcscheme b/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/wonderswan-tvOS.xcscheme deleted file mode 100644 index ad7ebf9e89..0000000000 --- a/Cores/Mednafen/PVMednafen.xcodeproj/xcshareddata/xcschemes/wonderswan-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mednafen/PVMednafen/PVMednafen.h b/Cores/Mednafen/PVMednafen/PVMednafen.h index 266a05cf0a..e23fb33840 100644 --- a/Cores/Mednafen/PVMednafen/PVMednafen.h +++ b/Cores/Mednafen/PVMednafen/PVMednafen.h @@ -6,7 +6,7 @@ // // -#import +#import //! Project version number for PVMednafen. FOUNDATION_EXPORT double PVMednafenVersionNumber; diff --git a/Cores/Mini_vMac/BuildFlags.xcconfig b/Cores/Mini_vMac/BuildFlags.xcconfig new file mode 100644 index 0000000000..7e40aed06c --- /dev/null +++ b/Cores/Mini_vMac/BuildFlags.xcconfig @@ -0,0 +1,25 @@ +// +// BuildFlags.xcconfig +// PVMiniVMac +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/Mini_vMac/PVMiniVMac-Prefix.pch b/Cores/Mini_vMac/PVMiniVMac-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/Mini_vMac/PVMiniVMac.h b/Cores/Mini_vMac/PVMiniVMac.h new file mode 100644 index 0000000000..9bb7098cea --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac.h @@ -0,0 +1,19 @@ +// +// PVMiniVMac.h +// PVMiniVMac +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVMiniVMac. +FOUNDATION_EXPORT double PVMiniVMacVersionNumber; + +//! Project version string for PVMiniVMac. +FOUNDATION_EXPORT const unsigned char PVMiniVMacVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.pbxproj b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..8e9db080dc --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.pbxproj @@ -0,0 +1,1398 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libminivmac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libminivmac.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVMiniVMacCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVMiniVMacCore.mm */; }; + B37022C92872554300B3F6DA /* PVMiniVMacCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVMiniVMacCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVMiniVMac.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVMiniVMac.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022D02872564500B3F6DA /* retrostubs.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702295287253B300B3F6DA /* retrostubs.c */; }; + B37022D12872564500B3F6DA /* libretro-core.c in Sources */ = {isa = PBXBuildFile; fileRef = B37022B3287253B300B3F6DA /* libretro-core.c */; }; + B37022D62872565C00B3F6DA /* ADBEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702258287253B200B3F6DA /* ADBEMDEV.c */; }; + B37022D82872565C00B3F6DA /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702278287253B200B3F6DA /* IWMEMDEV.c */; }; + B37022D92872565C00B3F6DA /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = B370222F287253B200B3F6DA /* MOUSEMDV.c */; }; + B37022DA2872565C00B3F6DA /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702239287253B200B3F6DA /* GLOBGLUE.c */; }; + B37022DB2872565C00B3F6DA /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702281287253B200B3F6DA /* M68KITAB.c */; }; + B37022DC2872565C00B3F6DA /* VIDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702254287253B200B3F6DA /* VIDEMDEV.c */; }; + B37022DD2872565C00B3F6DA /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B370224F287253B200B3F6DA /* RTCEMDEV.c */; }; + B37022E22872565C00B3F6DA /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702276287253B200B3F6DA /* PROGMAIN.c */; }; + B37022E32872565C00B3F6DA /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702240287253B200B3F6DA /* SCCEMDEV.c */; }; + B37022E42872565C00B3F6DA /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = B370227D287253B200B3F6DA /* SCSIEMDV.c */; }; + B37022E52872565C00B3F6DA /* VIA2EMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702237287253B200B3F6DA /* VIA2EMDV.c */; }; + B37022E92872565C00B3F6DA /* OSGLUERETRO.c in Sources */ = {isa = PBXBuildFile; fileRef = B370225C287253B200B3F6DA /* OSGLUERETRO.c */; }; + B37022EA2872565C00B3F6DA /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702247287253B200B3F6DA /* SONYEMDV.c */; }; + B37022EB2872565C00B3F6DA /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702265287253B200B3F6DA /* VIAEMDEV.c */; }; + B37022ED2872565C00B3F6DA /* DISAM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702245287253B200B3F6DA /* DISAM68K.c */; }; + B37022EE2872565C00B3F6DA /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B370227F287253B200B3F6DA /* ROMEMDEV.c */; }; + B37022EF2872565C00B3F6DA /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = B370223F287253B200B3F6DA /* SCRNEMDV.c */; }; + B37022F02872565C00B3F6DA /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702251287253B200B3F6DA /* MINEM68K.c */; }; + B37022F12872565C00B3F6DA /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B370223B287253B200B3F6DA /* SNDEMDEV.c */; }; + B37022F22872565C00B3F6DA /* ASCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = B3702262287253B200B3F6DA /* ASCEMDEV.c */; }; + B39768F82859E23200558958 /* libminivmac-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libminivmac-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libminivmac.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libminivmac.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libminivmac-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libminivmac-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37021FE287253B200B3F6DA /* COPYING.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.txt; sourceTree = ""; }; + B3702200287253B200B3F6DA /* CMDARGT1.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = CMDARGT1.i; sourceTree = ""; }; + B3702201287253B200B3F6DA /* SPOTHRCF.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SPOTHRCF.i; sourceTree = ""; }; + B3702202287253B200B3F6DA /* WRDMCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRDMCFLS.i; sourceTree = ""; }; + B3702203287253B200B3F6DA /* WRDVCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRDVCFLS.i; sourceTree = ""; }; + B3702204287253B200B3F6DA /* GNBLDOPT.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = GNBLDOPT.i; sourceTree = ""; }; + B3702205287253B200B3F6DA /* tool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tool.c; sourceTree = ""; }; + B3702206287253B200B3F6DA /* WRCCCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRCCCFLS.i; sourceTree = ""; }; + B3702207287253B200B3F6DA /* WRCNFGGL.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRCNFGGL.i; sourceTree = ""; }; + B3702208287253B200B3F6DA /* STRUTILS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = STRUTILS.i; sourceTree = ""; }; + B3702209287253B200B3F6DA /* DFFILDEF.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = DFFILDEF.i; sourceTree = ""; }; + B370220A287253B200B3F6DA /* WRPLCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRPLCFLS.i; sourceTree = ""; }; + B370220B287253B200B3F6DA /* SPBLDOPT.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SPBLDOPT.i; sourceTree = ""; }; + B370220C287253B200B3F6DA /* SPBASDEF.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SPBASDEF.i; sourceTree = ""; }; + B370220D287253B200B3F6DA /* CNFGDLFT.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = CNFGDLFT.i; sourceTree = ""; }; + B370220E287253B200B3F6DA /* WRMPLIST.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRMPLIST.i; sourceTree = ""; }; + B370220F287253B200B3F6DA /* WRTEXTFL.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRTEXTFL.i; sourceTree = ""; }; + B3702210287253B200B3F6DA /* CONFIGUR.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = CONFIGUR.i; sourceTree = ""; }; + B3702211287253B200B3F6DA /* SPCNFGAP.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SPCNFGAP.i; sourceTree = ""; }; + B3702212287253B200B3F6DA /* SPFILDEF.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SPFILDEF.i; sourceTree = ""; }; + B3702213287253B200B3F6DA /* SPCNFGGL.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SPCNFGGL.i; sourceTree = ""; }; + B3702214287253B200B3F6DA /* WRMSCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRMSCFLS.i; sourceTree = ""; }; + B3702215287253B200B3F6DA /* WRBGCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRBGCFLS.i; sourceTree = ""; }; + B3702216287253B200B3F6DA /* WRLCCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRLCCFLS.i; sourceTree = ""; }; + B3702217287253B200B3F6DA /* WRMACRES.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRMACRES.i; sourceTree = ""; }; + B3702218287253B200B3F6DA /* WRMW8FLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRMW8FLS.i; sourceTree = ""; }; + B3702219287253B200B3F6DA /* USFILDEF.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = USFILDEF.i; sourceTree = ""; }; + B370221A287253B200B3F6DA /* BLDUTIL3.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = BLDUTIL3.i; sourceTree = ""; }; + B370221B287253B200B3F6DA /* WRCNFGAP.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRCNFGAP.i; sourceTree = ""; }; + B370221C287253B200B3F6DA /* CNFGOPTS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = CNFGOPTS.i; sourceTree = ""; }; + B370221D287253B200B3F6DA /* COREDEFS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = COREDEFS.i; sourceTree = ""; }; + B370221E287253B200B3F6DA /* WRMVCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRMVCFLS.i; sourceTree = ""; }; + B370221F287253B200B3F6DA /* BLDUTIL4.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = BLDUTIL4.i; sourceTree = ""; }; + B3702220287253B200B3F6DA /* WRMPWFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRMPWFLS.i; sourceTree = ""; }; + B3702221287253B200B3F6DA /* WRSNCFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRSNCFLS.i; sourceTree = ""; }; + B3702222287253B200B3F6DA /* WRXCDFLS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = WRXCDFLS.i; sourceTree = ""; }; + B3702224287253B200B3F6DA /* CNFGGLOB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = ""; }; + B3702225287253B200B3F6DA /* EMCONFIG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = ""; }; + B3702226287253B200B3F6DA /* SOUNDGLU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SOUNDGLU.h; sourceTree = ""; }; + B3702227287253B200B3F6DA /* STRCONST.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCONST.h; sourceTree = ""; }; + B3702228287253B200B3F6DA /* CNFGRAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFGRAPI.h; sourceTree = ""; }; + B3702229287253B200B3F6DA /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B370222B287253B200B3F6DA /* OSGLUSDL.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUSDL.c; sourceTree = ""; }; + B370222C287253B200B3F6DA /* ICONAPPM.r */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.rez; path = ICONAPPM.r; sourceTree = ""; }; + B370222D287253B200B3F6DA /* VIAEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VIAEMDEV.h; sourceTree = ""; }; + B370222E287253B200B3F6DA /* OSGLUWIN.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUWIN.c; sourceTree = ""; }; + B370222F287253B200B3F6DA /* MOUSEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MOUSEMDV.c; sourceTree = ""; }; + B3702230287253B200B3F6DA /* OSGLUOSX.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUOSX.c; sourceTree = ""; }; + B3702231287253B200B3F6DA /* ASCEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASCEMDEV.h; sourceTree = ""; }; + B3702232287253B200B3F6DA /* SYSDEPNS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SYSDEPNS.h; sourceTree = ""; }; + B3702233287253B200B3F6DA /* main.r */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.rez; path = main.r; sourceTree = ""; }; + B3702234287253B200B3F6DA /* DATE2SEC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DATE2SEC.h; sourceTree = ""; }; + B3702235287253B200B3F6DA /* KBRDEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBRDEMDV.h; sourceTree = ""; }; + B3702236287253B200B3F6DA /* STRCNPOL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNPOL.h; sourceTree = ""; }; + B3702237287253B200B3F6DA /* VIA2EMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VIA2EMDV.c; sourceTree = ""; }; + B3702238287253B200B3F6DA /* STRCNSRL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNSRL.h; sourceTree = ""; }; + B3702239287253B200B3F6DA /* GLOBGLUE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = GLOBGLUE.c; sourceTree = ""; }; + B370223A287253B200B3F6DA /* OSGLUSD2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUSD2.c; sourceTree = ""; }; + B370223B287253B200B3F6DA /* SNDEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SNDEMDEV.c; sourceTree = ""; }; + B370223C287253B200B3F6DA /* OSGLUXWN.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUXWN.c; sourceTree = ""; }; + B370223D287253B200B3F6DA /* ICONROMO.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ICONROMO.icns; sourceTree = ""; }; + B370223E287253B200B3F6DA /* SGLUDDSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SGLUDDSP.h; sourceTree = ""; }; + B370223F287253B200B3F6DA /* SCRNEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SCRNEMDV.c; sourceTree = ""; }; + B3702240287253B200B3F6DA /* SCCEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SCCEMDEV.c; sourceTree = ""; }; + B3702241287253B200B3F6DA /* SGLUALSA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SGLUALSA.h; sourceTree = ""; }; + B3702242287253B200B3F6DA /* ICONDSKO.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ICONDSKO.icns; sourceTree = ""; }; + B3702243287253B200B3F6DA /* OSGLUMAC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUMAC.c; sourceTree = ""; }; + B3702244287253B200B3F6DA /* PMUEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = PMUEMDEV.c; sourceTree = ""; }; + B3702245287253B200B3F6DA /* DISAM68K.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = DISAM68K.c; sourceTree = ""; }; + B3702246287253B200B3F6DA /* SCRNMAPR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCRNMAPR.h; sourceTree = ""; }; + B3702247287253B200B3F6DA /* SONYEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SONYEMDV.c; sourceTree = ""; }; + B3702248287253B200B3F6DA /* SCSIEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCSIEMDV.h; sourceTree = ""; }; + B3702249287253B200B3F6DA /* PBUFSTDC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PBUFSTDC.h; sourceTree = ""; }; + B370224A287253B200B3F6DA /* STRCNITA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNITA.h; sourceTree = ""; }; + B370224B287253B200B3F6DA /* IWMEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IWMEMDEV.h; sourceTree = ""; }; + B370224C287253B200B3F6DA /* HPMCHACK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HPMCHACK.h; sourceTree = ""; }; + B370224D287253B200B3F6DA /* ACTVCODE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ACTVCODE.h; sourceTree = ""; }; + B370224E287253B200B3F6DA /* ADBSHARE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADBSHARE.h; sourceTree = ""; }; + B370224F287253B200B3F6DA /* RTCEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = RTCEMDEV.c; sourceTree = ""; }; + B3702250287253B200B3F6DA /* STRCNCAT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNCAT.h; sourceTree = ""; }; + B3702251287253B200B3F6DA /* MINEM68K.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MINEM68K.c; sourceTree = ""; }; + B3702252287253B200B3F6DA /* PROGMAIN.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PROGMAIN.h; sourceTree = ""; }; + B3702253287253B200B3F6DA /* ICONDSKM.r */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.rez; path = ICONDSKM.r; sourceTree = ""; }; + B3702254287253B200B3F6DA /* VIDEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VIDEMDEV.c; sourceTree = ""; }; + B3702255287253B200B3F6DA /* ICONAPPO.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ICONAPPO.icns; sourceTree = ""; }; + B3702256287253B200B3F6DA /* SCRNTRNS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCRNTRNS.h; sourceTree = ""; }; + B3702257287253B200B3F6DA /* ENDIANAC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ENDIANAC.h; sourceTree = ""; }; + B3702258287253B200B3F6DA /* ADBEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ADBEMDEV.c; sourceTree = ""; }; + B3702259287253B200B3F6DA /* STRCNFRE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNFRE.h; sourceTree = ""; }; + B370225A287253B200B3F6DA /* ALTKEYSM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ALTKEYSM.h; sourceTree = ""; }; + B370225B287253B200B3F6DA /* MYOSGLUE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MYOSGLUE.h; sourceTree = ""; }; + B370225C287253B200B3F6DA /* OSGLUERETRO.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUERETRO.c; sourceTree = ""; }; + B370225D287253B200B3F6DA /* SCRNHACK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCRNHACK.h; sourceTree = ""; }; + B370225E287253B200B3F6DA /* M68KITAB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = M68KITAB.h; sourceTree = ""; }; + B370225F287253B200B3F6DA /* ROMEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ROMEMDEV.h; sourceTree = ""; }; + B3702260287253B200B3F6DA /* INTLCHAR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = INTLCHAR.h; sourceTree = ""; }; + B3702261287253B200B3F6DA /* KBRDEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = KBRDEMDV.c; sourceTree = ""; }; + B3702262287253B200B3F6DA /* ASCEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ASCEMDEV.c; sourceTree = ""; }; + B3702263287253B200B3F6DA /* OSGLUCCO.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OSGLUCCO.m; sourceTree = ""; }; + B3702264287253B200B3F6DA /* MOUSEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MOUSEMDV.h; sourceTree = ""; }; + B3702265287253B200B3F6DA /* VIAEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VIAEMDEV.c; sourceTree = ""; }; + B3702266287253B200B3F6DA /* STRCNSPA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNSPA.h; sourceTree = ""; }; + B3702267287253B200B3F6DA /* SCCEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCCEMDEV.h; sourceTree = ""; }; + B3702268287253B200B3F6DA /* FPMATHEM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FPMATHEM.h; sourceTree = ""; }; + B3702269287253B200B3F6DA /* CONTROLM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CONTROLM.h; sourceTree = ""; }; + B370226A287253B200B3F6DA /* ICONAPPW.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = ICONAPPW.ico; sourceTree = ""; }; + B370226B287253B200B3F6DA /* DISAM68K.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DISAM68K.h; sourceTree = ""; }; + B370226C287253B200B3F6DA /* PMUEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PMUEMDEV.h; sourceTree = ""; }; + B370226D287253B200B3F6DA /* OSGLUNDS.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUNDS.c; sourceTree = ""; }; + B370226E287253B200B3F6DA /* SCRNEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCRNEMDV.h; sourceTree = ""; }; + B370226F287253B200B3F6DA /* GLOBGLUE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLOBGLUE.h; sourceTree = ""; }; + B3702270287253B200B3F6DA /* VIA2EMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VIA2EMDV.h; sourceTree = ""; }; + B3702271287253B200B3F6DA /* FPCPEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FPCPEMDV.h; sourceTree = ""; }; + B3702272287253B200B3F6DA /* SNDEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SNDEMDEV.h; sourceTree = ""; }; + B3702273287253B200B3F6DA /* ICONROMM.r */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.rez; path = ICONROMM.r; sourceTree = ""; }; + B3702274287253B200B3F6DA /* MINEM68K.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MINEM68K.h; sourceTree = ""; }; + B3702275287253B200B3F6DA /* RTCEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTCEMDEV.h; sourceTree = ""; }; + B3702276287253B200B3F6DA /* PROGMAIN.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = PROGMAIN.c; sourceTree = ""; }; + B3702277287253B200B3F6DA /* ICONDSKW.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = ICONDSKW.ico; sourceTree = ""; }; + B3702278287253B200B3F6DA /* IWMEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = IWMEMDEV.c; sourceTree = ""; }; + B3702279287253B200B3F6DA /* ICONROMW.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = ICONROMW.ico; sourceTree = ""; }; + B370227A287253B200B3F6DA /* COMOSGLU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = COMOSGLU.h; sourceTree = ""; }; + B370227B287253B200B3F6DA /* STRCNCZE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNCZE.h; sourceTree = ""; }; + B370227C287253B200B3F6DA /* OSGLUGTK.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = OSGLUGTK.c; sourceTree = ""; }; + B370227D287253B200B3F6DA /* SCSIEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SCSIEMDV.c; sourceTree = ""; }; + B370227E287253B200B3F6DA /* SONYEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SONYEMDV.h; sourceTree = ""; }; + B370227F287253B200B3F6DA /* ROMEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ROMEMDEV.c; sourceTree = ""; }; + B3702280287253B200B3F6DA /* STRCNGER.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNGER.h; sourceTree = ""; }; + B3702281287253B200B3F6DA /* M68KITAB.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = M68KITAB.c; sourceTree = ""; }; + B3702282287253B200B3F6DA /* ADBEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADBEMDEV.h; sourceTree = ""; }; + B3702283287253B200B3F6DA /* STRCNPTB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNPTB.h; sourceTree = ""; }; + B3702284287253B300B3F6DA /* VIDEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VIDEMDEV.h; sourceTree = ""; }; + B3702285287253B300B3F6DA /* BPFILTER.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BPFILTER.h; sourceTree = ""; }; + B3702286287253B300B3F6DA /* STRCNENG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNENG.h; sourceTree = ""; }; + B3702287287253B300B3F6DA /* STRCNDUT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNDUT.h; sourceTree = ""; }; + B370228B287253B300B3F6DA /* firmware.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = firmware.a; sourceTree = ""; }; + B370228D287253B300B3F6DA /* mydriver.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = mydriver.a; sourceTree = ""; }; + B370228E287253B300B3F6DA /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B370228F287253B300B3F6DA /* trans.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = trans.txt; sourceTree = ""; }; + B3702290287253B300B3F6DA /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3702291287253B300B3F6DA /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; + B3702292287253B300B3F6DA /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3702293287253B300B3F6DA /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3702295287253B300B3F6DA /* retrostubs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retrostubs.c; sourceTree = ""; }; + B3702297287253B300B3F6DA /* filebrowser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = filebrowser.c; sourceTree = ""; }; + B3702298287253B300B3F6DA /* c64menu.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = c64menu.i; sourceTree = ""; }; + B370229A287253B300B3F6DA /* calculator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = calculator.c; sourceTree = ""; }; + B370229B287253B300B3F6DA /* node_editor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = node_editor.c; sourceTree = ""; }; + B370229C287253B300B3F6DA /* nuklear.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nuklear.h; sourceTree = ""; }; + B370229D287253B300B3F6DA /* Readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Readme.md; sourceTree = ""; }; + B370229E287253B300B3F6DA /* style.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = style.c; sourceTree = ""; }; + B370229F287253B300B3F6DA /* overview.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = overview.c; sourceTree = ""; }; + B37022A0287253B300B3F6DA /* gui.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = gui.i; sourceTree = ""; }; + B37022A2287253B300B3F6DA /* SDL_gfxPrimitives.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_gfxPrimitives.h; sourceTree = ""; }; + B37022A3287253B300B3F6DA /* RSDL_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RSDL_wrapper.h; sourceTree = ""; }; + B37022A4287253B300B3F6DA /* font2.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = font2.i; sourceTree = ""; }; + B37022A5287253B300B3F6DA /* SDL_gfxPrimitives.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_gfxPrimitives.c; sourceTree = ""; }; + B37022A6287253B300B3F6DA /* retro_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_surface.c; sourceTree = ""; }; + B37022A7287253B300B3F6DA /* nuklear_retro_soft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nuklear_retro_soft.h; sourceTree = ""; }; + B37022A8287253B300B3F6DA /* vkboard.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = vkboard.i; sourceTree = ""; }; + B37022A9287253B300B3F6DA /* filebrowser.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = filebrowser.i; sourceTree = ""; }; + B37022AA287253B300B3F6DA /* app.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = app.c; sourceTree = ""; }; + B37022AB287253B300B3F6DA /* libretro-core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "libretro-core.h"; sourceTree = ""; }; + B37022AD287253B300B3F6DA /* retroscreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retroscreen.h; sourceTree = ""; }; + B37022AE287253B300B3F6DA /* features_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = features_cpu.h; sourceTree = ""; }; + B37022AF287253B300B3F6DA /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B37022B0287253B300B3F6DA /* retro_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_video.h; sourceTree = ""; }; + B37022B1287253B300B3F6DA /* MACkeymap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MACkeymap.h; sourceTree = ""; }; + B37022B2287253B300B3F6DA /* vkbd.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = vkbd.i; sourceTree = ""; }; + B37022B3287253B300B3F6DA /* libretro-core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libretro-core.c"; sourceTree = ""; }; + B37022B4287253B300B3F6DA /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B37022B5287253B300B3F6DA /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B37022B7287253B300B3F6DA /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B37022B8287253B300B3F6DA /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B37022BA287253B300B3F6DA /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B37022BB287253B300B3F6DA /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B37022BC287253B300B3F6DA /* readme_android.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme_android.txt; sourceTree = ""; }; + B37022BD287253B300B3F6DA /* PVMiniVMac-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVMiniVMac-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVMiniVMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMiniVMac.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVMiniVMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMiniVMac.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVMiniVMacCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMiniVMacCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVMiniVMacCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVMiniVMacCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVMiniVMac.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMiniVMac.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3CE80022873FDB100B6BB5A /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libminivmac.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libminivmac-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37021FC287253B200B3F6DA /* libretro-minivmac */ = { + isa = PBXGroup; + children = ( + B37022B5287253B300B3F6DA /* .gitignore */, + B3702291287253B300B3F6DA /* .gitmodules */, + B3702290287253B300B3F6DA /* Makefile */, + B3702292287253B300B3F6DA /* README */, + B3702293287253B300B3F6DA /* Makefile.common */, + B37022B8287253B300B3F6DA /* link.T */, + B37022B7287253B300B3F6DA /* .gitlab-ci.yml */, + B37022B9287253B300B3F6DA /* jni */, + B3702294287253B300B3F6DA /* libretro */, + B37022B6287253B300B3F6DA /* libretro-common */, + B37021FD287253B200B3F6DA /* minivmac */, + ); + path = "libretro-minivmac"; + sourceTree = ""; + }; + B37021FD287253B200B3F6DA /* minivmac */ = { + isa = PBXGroup; + children = ( + B37021FE287253B200B3F6DA /* COPYING.txt */, + B3702229287253B200B3F6DA /* README.txt */, + B3702223287253B200B3F6DA /* cfg */, + B3702288287253B300B3F6DA /* extras */, + B37021FF287253B200B3F6DA /* setup */, + B370222A287253B200B3F6DA /* src */, + ); + path = minivmac; + sourceTree = ""; + }; + B37021FF287253B200B3F6DA /* setup */ = { + isa = PBXGroup; + children = ( + B3702200287253B200B3F6DA /* CMDARGT1.i */, + B3702201287253B200B3F6DA /* SPOTHRCF.i */, + B3702202287253B200B3F6DA /* WRDMCFLS.i */, + B3702203287253B200B3F6DA /* WRDVCFLS.i */, + B3702204287253B200B3F6DA /* GNBLDOPT.i */, + B3702205287253B200B3F6DA /* tool.c */, + B3702206287253B200B3F6DA /* WRCCCFLS.i */, + B3702207287253B200B3F6DA /* WRCNFGGL.i */, + B3702208287253B200B3F6DA /* STRUTILS.i */, + B3702209287253B200B3F6DA /* DFFILDEF.i */, + B370220A287253B200B3F6DA /* WRPLCFLS.i */, + B370220B287253B200B3F6DA /* SPBLDOPT.i */, + B370220C287253B200B3F6DA /* SPBASDEF.i */, + B370220D287253B200B3F6DA /* CNFGDLFT.i */, + B370220E287253B200B3F6DA /* WRMPLIST.i */, + B370220F287253B200B3F6DA /* WRTEXTFL.i */, + B3702210287253B200B3F6DA /* CONFIGUR.i */, + B3702211287253B200B3F6DA /* SPCNFGAP.i */, + B3702212287253B200B3F6DA /* SPFILDEF.i */, + B3702213287253B200B3F6DA /* SPCNFGGL.i */, + B3702214287253B200B3F6DA /* WRMSCFLS.i */, + B3702215287253B200B3F6DA /* WRBGCFLS.i */, + B3702216287253B200B3F6DA /* WRLCCFLS.i */, + B3702217287253B200B3F6DA /* WRMACRES.i */, + B3702218287253B200B3F6DA /* WRMW8FLS.i */, + B3702219287253B200B3F6DA /* USFILDEF.i */, + B370221A287253B200B3F6DA /* BLDUTIL3.i */, + B370221B287253B200B3F6DA /* WRCNFGAP.i */, + B370221C287253B200B3F6DA /* CNFGOPTS.i */, + B370221D287253B200B3F6DA /* COREDEFS.i */, + B370221E287253B200B3F6DA /* WRMVCFLS.i */, + B370221F287253B200B3F6DA /* BLDUTIL4.i */, + B3702220287253B200B3F6DA /* WRMPWFLS.i */, + B3702221287253B200B3F6DA /* WRSNCFLS.i */, + B3702222287253B200B3F6DA /* WRXCDFLS.i */, + ); + path = setup; + sourceTree = ""; + }; + B3702223287253B200B3F6DA /* cfg */ = { + isa = PBXGroup; + children = ( + B3702224287253B200B3F6DA /* CNFGGLOB.h */, + B3702225287253B200B3F6DA /* EMCONFIG.h */, + B3702226287253B200B3F6DA /* SOUNDGLU.h */, + B3702227287253B200B3F6DA /* STRCONST.h */, + B3702228287253B200B3F6DA /* CNFGRAPI.h */, + ); + path = cfg; + sourceTree = ""; + }; + B370222A287253B200B3F6DA /* src */ = { + isa = PBXGroup; + children = ( + B3702258287253B200B3F6DA /* ADBEMDEV.c */, + B3702262287253B200B3F6DA /* ASCEMDEV.c */, + B3702245287253B200B3F6DA /* DISAM68K.c */, + B3702239287253B200B3F6DA /* GLOBGLUE.c */, + B3702278287253B200B3F6DA /* IWMEMDEV.c */, + B3702261287253B200B3F6DA /* KBRDEMDV.c */, + B3702281287253B200B3F6DA /* M68KITAB.c */, + B3702251287253B200B3F6DA /* MINEM68K.c */, + B370222F287253B200B3F6DA /* MOUSEMDV.c */, + B370225C287253B200B3F6DA /* OSGLUERETRO.c */, + B370227C287253B200B3F6DA /* OSGLUGTK.c */, + B3702243287253B200B3F6DA /* OSGLUMAC.c */, + B370226D287253B200B3F6DA /* OSGLUNDS.c */, + B3702230287253B200B3F6DA /* OSGLUOSX.c */, + B370223A287253B200B3F6DA /* OSGLUSD2.c */, + B370222B287253B200B3F6DA /* OSGLUSDL.c */, + B370222E287253B200B3F6DA /* OSGLUWIN.c */, + B370223C287253B200B3F6DA /* OSGLUXWN.c */, + B3702244287253B200B3F6DA /* PMUEMDEV.c */, + B3702276287253B200B3F6DA /* PROGMAIN.c */, + B370227F287253B200B3F6DA /* ROMEMDEV.c */, + B370224F287253B200B3F6DA /* RTCEMDEV.c */, + B3702240287253B200B3F6DA /* SCCEMDEV.c */, + B370223F287253B200B3F6DA /* SCRNEMDV.c */, + B370227D287253B200B3F6DA /* SCSIEMDV.c */, + B370223B287253B200B3F6DA /* SNDEMDEV.c */, + B3702247287253B200B3F6DA /* SONYEMDV.c */, + B3702237287253B200B3F6DA /* VIA2EMDV.c */, + B3702265287253B200B3F6DA /* VIAEMDEV.c */, + B3702254287253B200B3F6DA /* VIDEMDEV.c */, + B370224D287253B200B3F6DA /* ACTVCODE.h */, + B3702282287253B200B3F6DA /* ADBEMDEV.h */, + B370224E287253B200B3F6DA /* ADBSHARE.h */, + B370225A287253B200B3F6DA /* ALTKEYSM.h */, + B3702231287253B200B3F6DA /* ASCEMDEV.h */, + B3702285287253B300B3F6DA /* BPFILTER.h */, + B370227A287253B200B3F6DA /* COMOSGLU.h */, + B3702269287253B200B3F6DA /* CONTROLM.h */, + B3702234287253B200B3F6DA /* DATE2SEC.h */, + B370226B287253B200B3F6DA /* DISAM68K.h */, + B3702257287253B200B3F6DA /* ENDIANAC.h */, + B3702271287253B200B3F6DA /* FPCPEMDV.h */, + B3702268287253B200B3F6DA /* FPMATHEM.h */, + B370226F287253B200B3F6DA /* GLOBGLUE.h */, + B370224C287253B200B3F6DA /* HPMCHACK.h */, + B3702260287253B200B3F6DA /* INTLCHAR.h */, + B370224B287253B200B3F6DA /* IWMEMDEV.h */, + B3702235287253B200B3F6DA /* KBRDEMDV.h */, + B370225E287253B200B3F6DA /* M68KITAB.h */, + B3702274287253B200B3F6DA /* MINEM68K.h */, + B3702264287253B200B3F6DA /* MOUSEMDV.h */, + B370225B287253B200B3F6DA /* MYOSGLUE.h */, + B3702249287253B200B3F6DA /* PBUFSTDC.h */, + B370226C287253B200B3F6DA /* PMUEMDEV.h */, + B3702252287253B200B3F6DA /* PROGMAIN.h */, + B370225F287253B200B3F6DA /* ROMEMDEV.h */, + B3702275287253B200B3F6DA /* RTCEMDEV.h */, + B3702267287253B200B3F6DA /* SCCEMDEV.h */, + B370226E287253B200B3F6DA /* SCRNEMDV.h */, + B370225D287253B200B3F6DA /* SCRNHACK.h */, + B3702246287253B200B3F6DA /* SCRNMAPR.h */, + B3702256287253B200B3F6DA /* SCRNTRNS.h */, + B3702248287253B200B3F6DA /* SCSIEMDV.h */, + B3702241287253B200B3F6DA /* SGLUALSA.h */, + B370223E287253B200B3F6DA /* SGLUDDSP.h */, + B3702272287253B200B3F6DA /* SNDEMDEV.h */, + B370227E287253B200B3F6DA /* SONYEMDV.h */, + B3702250287253B200B3F6DA /* STRCNCAT.h */, + B370227B287253B200B3F6DA /* STRCNCZE.h */, + B3702287287253B300B3F6DA /* STRCNDUT.h */, + B3702286287253B300B3F6DA /* STRCNENG.h */, + B3702259287253B200B3F6DA /* STRCNFRE.h */, + B3702280287253B200B3F6DA /* STRCNGER.h */, + B370224A287253B200B3F6DA /* STRCNITA.h */, + B3702236287253B200B3F6DA /* STRCNPOL.h */, + B3702283287253B200B3F6DA /* STRCNPTB.h */, + B3702266287253B200B3F6DA /* STRCNSPA.h */, + B3702238287253B200B3F6DA /* STRCNSRL.h */, + B3702232287253B200B3F6DA /* SYSDEPNS.h */, + B3702270287253B200B3F6DA /* VIA2EMDV.h */, + B370222D287253B200B3F6DA /* VIAEMDEV.h */, + B3702284287253B300B3F6DA /* VIDEMDEV.h */, + B3702255287253B200B3F6DA /* ICONAPPO.icns */, + B3702242287253B200B3F6DA /* ICONDSKO.icns */, + B370223D287253B200B3F6DA /* ICONROMO.icns */, + B370226A287253B200B3F6DA /* ICONAPPW.ico */, + B3702277287253B200B3F6DA /* ICONDSKW.ico */, + B3702279287253B200B3F6DA /* ICONROMW.ico */, + B3702263287253B200B3F6DA /* OSGLUCCO.m */, + B370222C287253B200B3F6DA /* ICONAPPM.r */, + B3702253287253B200B3F6DA /* ICONDSKM.r */, + B3702273287253B200B3F6DA /* ICONROMM.r */, + B3702233287253B200B3F6DA /* main.r */, + ); + path = src; + sourceTree = ""; + }; + B3702288287253B300B3F6DA /* extras */ = { + isa = PBXGroup; + children = ( + B3702289287253B300B3F6DA /* mydriver */, + B370228F287253B300B3F6DA /* trans.txt */, + ); + path = extras; + sourceTree = ""; + }; + B3702289287253B300B3F6DA /* mydriver */ = { + isa = PBXGroup; + children = ( + B370228A287253B300B3F6DA /* video */, + B370228C287253B300B3F6DA /* disk */, + ); + path = mydriver; + sourceTree = ""; + }; + B370228A287253B300B3F6DA /* video */ = { + isa = PBXGroup; + children = ( + B370228B287253B300B3F6DA /* firmware.a */, + ); + path = video; + sourceTree = ""; + }; + B370228C287253B300B3F6DA /* disk */ = { + isa = PBXGroup; + children = ( + B370228D287253B300B3F6DA /* mydriver.a */, + B370228E287253B300B3F6DA /* README.txt */, + ); + path = disk; + sourceTree = ""; + }; + B3702294287253B300B3F6DA /* libretro */ = { + isa = PBXGroup; + children = ( + B37022B3287253B300B3F6DA /* libretro-core.c */, + B3702295287253B300B3F6DA /* retrostubs.c */, + B37022AB287253B300B3F6DA /* libretro-core.h */, + B37022B1287253B300B3F6DA /* MACkeymap.h */, + B37022B2287253B300B3F6DA /* vkbd.i */, + B37022B4287253B300B3F6DA /* link.T */, + B37022AC287253B300B3F6DA /* include */, + B3702296287253B300B3F6DA /* nukleargui */, + ); + path = libretro; + sourceTree = ""; + }; + B3702296287253B300B3F6DA /* nukleargui */ = { + isa = PBXGroup; + children = ( + B3702297287253B300B3F6DA /* filebrowser.c */, + B3702298287253B300B3F6DA /* c64menu.i */, + B3702299287253B300B3F6DA /* nuklear */, + B37022A0287253B300B3F6DA /* gui.i */, + B37022A1287253B300B3F6DA /* retro */, + B37022A8287253B300B3F6DA /* vkboard.i */, + B37022A9287253B300B3F6DA /* filebrowser.i */, + B37022AA287253B300B3F6DA /* app.c */, + ); + path = nukleargui; + sourceTree = ""; + }; + B3702299287253B300B3F6DA /* nuklear */ = { + isa = PBXGroup; + children = ( + B370229A287253B300B3F6DA /* calculator.c */, + B370229B287253B300B3F6DA /* node_editor.c */, + B370229C287253B300B3F6DA /* nuklear.h */, + B370229D287253B300B3F6DA /* Readme.md */, + B370229E287253B300B3F6DA /* style.c */, + B370229F287253B300B3F6DA /* overview.c */, + ); + path = nuklear; + sourceTree = ""; + }; + B37022A1287253B300B3F6DA /* retro */ = { + isa = PBXGroup; + children = ( + B37022A2287253B300B3F6DA /* SDL_gfxPrimitives.h */, + B37022A3287253B300B3F6DA /* RSDL_wrapper.h */, + B37022A4287253B300B3F6DA /* font2.i */, + B37022A5287253B300B3F6DA /* SDL_gfxPrimitives.c */, + B37022A6287253B300B3F6DA /* retro_surface.c */, + B37022A7287253B300B3F6DA /* nuklear_retro_soft.h */, + ); + path = retro; + sourceTree = ""; + }; + B37022AC287253B300B3F6DA /* include */ = { + isa = PBXGroup; + children = ( + B37022AD287253B300B3F6DA /* retroscreen.h */, + B37022AE287253B300B3F6DA /* features_cpu.h */, + B37022AF287253B300B3F6DA /* retro_common_api.h */, + B37022B0287253B300B3F6DA /* retro_video.h */, + ); + path = include; + sourceTree = ""; + }; + B37022B6287253B300B3F6DA /* libretro-common */ = { + isa = PBXGroup; + children = ( + ); + path = "libretro-common"; + sourceTree = ""; + }; + B37022B9287253B300B3F6DA /* jni */ = { + isa = PBXGroup; + children = ( + B37022BA287253B300B3F6DA /* Android.mk */, + B37022BB287253B300B3F6DA /* Application.mk */, + B37022BC287253B300B3F6DA /* readme_android.txt */, + ); + path = jni; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVMiniVMac */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVMiniVMac.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVMiniVMac; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVMiniVMacCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVMiniVMacCore.h */, + B37022C6287253B300B3F6DA /* PVMiniVMacCore.mm */, + ); + path = PVMiniVMacCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B37021FC287253B200B3F6DA /* libretro-minivmac */, + B37022BE287253B300B3F6DA /* PVMiniVMac */, + B37022C4287253B300B3F6DA /* PVMiniVMacCore */, + B37022C3287253B300B3F6DA /* PVMiniVMac.h */, + B37022BD287253B300B3F6DA /* PVMiniVMac-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVMiniVMac.framework */, + B30178D3207C901D0051B93D /* libminivmac.a */, + B3344BC32859E088006E6B3A /* libminivmac-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3CE80022873FDB100B6BB5A /* PVLibRetro.framework */, + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVMiniVMac.h in Headers */, + B37022C92872554300B3F6DA /* PVMiniVMacCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* minivmac */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "minivmac" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = minivmac; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libminivmac.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* minivmac-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "minivmac-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "minivmac-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libminivmac-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVMiniVMac */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVMiniVMac" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVMiniVMac; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVMiniVMac.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVMiniVMac" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVMiniVMac */, + B3344B522859E088006E6B3A /* minivmac-libretro */, + B30178D2207C901D0051B93D /* minivmac */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022E92872565C00B3F6DA /* OSGLUERETRO.c in Sources */, + B37022ED2872565C00B3F6DA /* DISAM68K.c in Sources */, + B37022E32872565C00B3F6DA /* SCCEMDEV.c in Sources */, + B37022EE2872565C00B3F6DA /* ROMEMDEV.c in Sources */, + B37022EF2872565C00B3F6DA /* SCRNEMDV.c in Sources */, + B37022F12872565C00B3F6DA /* SNDEMDEV.c in Sources */, + B37022E22872565C00B3F6DA /* PROGMAIN.c in Sources */, + B37022EA2872565C00B3F6DA /* SONYEMDV.c in Sources */, + B37022D92872565C00B3F6DA /* MOUSEMDV.c in Sources */, + B37022DD2872565C00B3F6DA /* RTCEMDEV.c in Sources */, + B37022E52872565C00B3F6DA /* VIA2EMDV.c in Sources */, + B37022DB2872565C00B3F6DA /* M68KITAB.c in Sources */, + B37022E42872565C00B3F6DA /* SCSIEMDV.c in Sources */, + B37022DA2872565C00B3F6DA /* GLOBGLUE.c in Sources */, + B37022EB2872565C00B3F6DA /* VIAEMDEV.c in Sources */, + B37022D82872565C00B3F6DA /* IWMEMDEV.c in Sources */, + B37022D62872565C00B3F6DA /* ADBEMDEV.c in Sources */, + B37022F02872565C00B3F6DA /* MINEM68K.c in Sources */, + B37022DC2872565C00B3F6DA /* VIDEMDEV.c in Sources */, + B37022F22872565C00B3F6DA /* ASCEMDEV.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022D02872564500B3F6DA /* retrostubs.c in Sources */, + B37022D12872564500B3F6DA /* libretro-core.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVMiniVMacCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* minivmac-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = minivmac; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = minivmac; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVMiniVMac/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMiniVMac"; + PRODUCT_NAME = PVMiniVMac; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = minivmac; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "minivmac-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "minivmac-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "minivmac-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVMiniVMac/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMiniVMac"; + PRODUCT_NAME = PVMiniVMac; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVMiniVMac/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMiniVMac"; + PRODUCT_NAME = PVMiniVMac; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "minivmac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "minivmac-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVMiniVMac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVMiniVMac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/Mini_vMac/PVMiniVMac.xcodeproj/xcshareddata/xcschemes/PVMiniVMac.xcscheme b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/xcshareddata/xcschemes/PVMiniVMac.xcscheme new file mode 100644 index 0000000000..1ddbbd9da2 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac.xcodeproj/xcshareddata/xcschemes/PVMiniVMac.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Mini_vMac/PVMiniVMac/Core.plist b/Cores/Mini_vMac/PVMiniVMac/Core.plist new file mode 100644 index 0000000000..ea096ad7f4 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.minivmac + PVPrincipleClass + PVMiniVMacCore + PVSupportedSystems + + com.provenance.macintosh + + PVProjectName + Mini vMac + PVProjectURL + https://www.gryphel.com/c/minivmac/ + PVProjectVersion + 36.04 + + diff --git a/Cores/Mini_vMac/PVMiniVMac/Info.plist b/Cores/Mini_vMac/PVMiniVMac/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/Mini_vMac/PVMiniVMac/PVMiniVMac.h b/Cores/Mini_vMac/PVMiniVMac/PVMiniVMac.h new file mode 100644 index 0000000000..c76b314282 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMac/PVMiniVMac.h @@ -0,0 +1,18 @@ +// +// PVMiniVMac.h +// PVMiniVMac +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVMiniVMac. +FOUNDATION_EXPORT double PVMiniVMacVersionNumber; + +//! Project version string for PVMiniVMac. +FOUNDATION_EXPORT const unsigned char PVMiniVMacVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/Mini_vMac/PVMiniVMacCore/PVMiniVMacCore.h b/Cores/Mini_vMac/PVMiniVMacCore/PVMiniVMacCore.h new file mode 100644 index 0000000000..e90330b914 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMacCore/PVMiniVMacCore.h @@ -0,0 +1,43 @@ +// +// PVMiniVMacCore.h +// PVMiniVMac +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVMiniVMacCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/Mini_vMac/PVMiniVMacCore/PVMiniVMacCore.mm b/Cores/Mini_vMac/PVMiniVMacCore/PVMiniVMacCore.mm new file mode 100644 index 0000000000..b607b7ee92 --- /dev/null +++ b/Cores/Mini_vMac/PVMiniVMacCore/PVMiniVMacCore.mm @@ -0,0 +1,152 @@ +// +// PVMiniVMacCore.m +// PVMiniVMac +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVMiniVMacCore.h" +#include +//#import "PVMiniVMacCore+Controls.h" +//#import "PVMiniVMacCore+Audio.h" +//#import "PVMiniVMacCore+Video.h" +// +//#import "PVMiniVMacCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVMiniVMacCore() { + +} + +@end + +#pragma mark - PVMiniVMacCore Begin + +@implementation PVMiniVMacCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 13.63; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1440, 1080); +} + +- (GLenum)pixelFormat { + return GL_BGRA; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_BYTE; +} + +- (GLenum)internalPixelFormat { + return GL_RGBA; +} + +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/Mini_vMac/libretro-minivmac b/Cores/Mini_vMac/libretro-minivmac new file mode 160000 index 0000000000..7fc3e2e7b9 --- /dev/null +++ b/Cores/Mini_vMac/libretro-minivmac @@ -0,0 +1 @@ +Subproject commit 7fc3e2e7b9234ef2446bc49cf830e4d600123251 diff --git a/Cores/Mu/BuildFlags.xcconfig b/Cores/Mu/BuildFlags.xcconfig new file mode 100644 index 0000000000..891d5f691d --- /dev/null +++ b/Cores/Mu/BuildFlags.xcconfig @@ -0,0 +1,34 @@ +// +// BuildFlags.xcconfig +// PVMu +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 EMU_SUPPORT_PALM_OS5=1 IS_IOS_BUILD=1 IOS=1 INLINE=inline +GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = $(inherited) NDEBUG=1 EMU_NO_SAFETY=1 +// LOG_PERFORMANCE +// NO_TRANSLATION=1 +OTHER_CFLAGS = $(inherited) -fstrict-aliasing -I$(PROJECT_DIR)/Mu/libretroBuildsSystem/fixIncludes/stdbool + +// translate_aarch64.cpp +// translate_x86_64.c + +EXCLUDED_SOURCE_FILE_NAMES[arch=x86_64] = $(inherited) translate_aarch64.cpp +EXCLUDED_SOURCE_FILE_NAMES[arch=arm64] = $(inherited) translate_x86_64.c + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/Mu/Mu b/Cores/Mu/Mu new file mode 160000 index 0000000000..1aefeec9e1 --- /dev/null +++ b/Cores/Mu/Mu @@ -0,0 +1 @@ +Subproject commit 1aefeec9e1926e7e4089c8a398c73c1437dcee9b diff --git a/Cores/Mu/PVMu-Prefix.pch b/Cores/Mu/PVMu-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/Mu/PVMu-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/Mu/PVMu.xcodeproj/project.pbxproj b/Cores/Mu/PVMu.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..c146d60b6c --- /dev/null +++ b/Cores/Mu/PVMu.xcodeproj/project.pbxproj @@ -0,0 +1,2240 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libmu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libmu.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B3231BF3289666CE003CC116 /* w86l488.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682C32895F86E003E465F /* w86l488.c */; }; + B3231BF4289666CE003CC116 /* sdCard.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683012895F86E003E465F /* sdCard.c */; }; + B3231BF5289666CE003CC116 /* silkscreen.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682FE2895F86E003E465F /* silkscreen.c */; }; + B3231BF6289666CE003CC116 /* tps65010.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682E22895F86E003E465F /* tps65010.c */; }; + B3231BF7289666CE003CC116 /* emulator.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683022895F86E003E465F /* emulator.c */; }; + B3231BF8289666CE003CC116 /* tsc2101.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682C52895F86E003E465F /* tsc2101.c */; }; + B3231BF9289666CE003CC116 /* pdiUsbD12.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682F82895F86E003E465F /* pdiUsbD12.c */; }; + B3231BFA289666CE003CC116 /* flx68000.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683002895F86E003E465F /* flx68000.c */; }; + B3231BFB289666CE003CC116 /* sed1376.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682FF2895F86E003E465F /* sed1376.c */; }; + B3231BFC289666CE003CC116 /* dbvz.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682F42895F86E003E465F /* dbvz.c */; }; + B3231BFD289666CE003CC116 /* ads7846.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682C62895F86E003E465F /* ads7846.c */; }; + B3231BFE289666CE003CC116 /* m5XXBus.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682C72895F86E003E465F /* m5XXBus.c */; }; + B3231C0B289666E2003CC116 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B306819C2895F86B003E465F /* libretro.c */; }; + B3231C0C289666E2003CC116 /* cursors.c in Sources */ = {isa = PBXBuildFile; fileRef = B306819D2895F86B003E465F /* cursors.c */; }; + B3231C0F28966754003CC116 /* pxa260_TIMR.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682E42895F86E003E465F /* pxa260_TIMR.c */; }; + B3231C1028966754003CC116 /* pxa260I2c.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682EE2895F86E003E465F /* pxa260I2c.c */; }; + B3231C1128966754003CC116 /* pxa260_RTC.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682ED2895F86E003E465F /* pxa260_RTC.c */; }; + B3231C1228966754003CC116 /* pxa260Timing.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682EB2895F86E003E465F /* pxa260Timing.c */; }; + B3231C1328966754003CC116 /* pxa260Memctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682F22895F86E003E465F /* pxa260Memctrl.c */; }; + B3231C1428966754003CC116 /* pxa260.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682EF2895F86E003E465F /* pxa260.c */; }; + B3231C1528966754003CC116 /* pxa260_GPIO.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682E82895F86E003E465F /* pxa260_GPIO.c */; }; + B3231C1628966754003CC116 /* pxa260_DSP.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682F02895F86E003E465F /* pxa260_DSP.c */; }; + B3231C1728966754003CC116 /* pxa260_IC.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682E72895F86E003E465F /* pxa260_IC.c */; }; + B3231C1828966754003CC116 /* pxa260_PwrClk.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682EA2895F86E003E465F /* pxa260_PwrClk.c */; }; + B3231C1928966754003CC116 /* pxa260_LCD.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682EC2895F86E003E465F /* pxa260_LCD.c */; }; + B3231C1A28966754003CC116 /* pxa260_DMA.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682E62895F86E003E465F /* pxa260_DMA.c */; }; + B3231C1B28966754003CC116 /* pxa260_UART.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682F12895F86E003E465F /* pxa260_UART.c */; }; + B3231C1C28966754003CC116 /* pxa260Ssp.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682F32895F86E003E465F /* pxa260Ssp.c */; }; + B3231C1D28966754003CC116 /* pxa260Udc.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682E92895F86E003E465F /* pxa260Udc.c */; }; + B3231C2D28966761003CC116 /* m68kopnz.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682C22895F86E003E465F /* m68kopnz.c */; }; + B3231C2E28966761003CC116 /* m68kdasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682BE2895F86E003E465F /* m68kdasm.c */; }; + B3231C2F28966761003CC116 /* m68kopac.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682BF2895F86E003E465F /* m68kopac.c */; }; + B3231C3028966761003CC116 /* m68kopdm.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682C12895F86E003E465F /* m68kopdm.c */; }; + B3231C3128966761003CC116 /* m68kcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682BD2895F86E003E465F /* m68kcpu.c */; }; + B3231C3228966761003CC116 /* m68kops.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682C02895F86E003E465F /* m68kops.c */; }; + B3231C3928966769003CC116 /* launcher.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682FD2895F86E003E465F /* launcher.c */; }; + B3231C3B2896676F003CC116 /* blip_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682F72895F86E003E465F /* blip_buf.c */; }; + B3231C3D28966791003CC116 /* mmu.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682E02895F86E003E465F /* mmu.c */; }; + B3231C3E28966791003CC116 /* disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682CC2895F86E003E465F /* disasm.c */; }; + B3231C3F28966791003CC116 /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682CE2895F86E003E465F /* mem.c */; }; + B3231C4028966791003CC116 /* emuVarPool.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682D62895F86E003E465F /* emuVarPool.c */; }; + B3231C4128966791003CC116 /* asmcode.c in Sources */ = {isa = PBXBuildFile; fileRef = B30682DF2895F86E003E465F /* asmcode.c */; }; + B3231C4728966828003CC116 /* translate_aarch64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B30682D02895F86E003E465F /* translate_aarch64.cpp */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVMuCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVMuCore.mm */; }; + B37022C92872554300B3F6DA /* PVMuCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVMuCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVMu.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVMu.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libmu-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libmu-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libmu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmu.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B306815C2895F86B003E465F /* applyHalTable.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = applyHalTable.py; sourceTree = ""; }; + B306815E2895F86B003E465F /* mainwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mainwindow.h; sourceTree = ""; }; + B306815F2895F86B003E465F /* mainwindow.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mainwindow.ui; sourceTree = ""; }; + B30681602895F86B003E465F /* mainwindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainwindow.cpp; sourceTree = ""; }; + B30681612895F86B003E465F /* BufferGraphViewer.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = BufferGraphViewer.pro; sourceTree = ""; }; + B30681622895F86B003E465F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B30681642895F86B003E465F /* MakePalmBitmap.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = MakePalmBitmap.pro; sourceTree = ""; }; + B30681652895F86B003E465F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B30681662895F86B003E465F /* dalAddrFromPc.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = dalAddrFromPc.py; sourceTree = ""; }; + B30681672895F86B003E465F /* muStyle.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = muStyle.xml; sourceTree = ""; }; + B30681682895F86B003E465F /* getOs4FunctionNames.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = getOs4FunctionNames.py; sourceTree = ""; }; + B306816A2895F86B003E465F /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B306816B2895F86B003E465F /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B306816C2895F86B003E465F /* convert.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = convert.sh; sourceTree = ""; }; + B306816F2895F86B003E465F /* armLib.lkr */ = {isa = PBXFileReference; lastKnownFileType = text; path = armLib.lkr; sourceTree = ""; }; + B30681702895F86B003E465F /* TstSuite.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = TstSuite.def; sourceTree = ""; }; + B30681712895F86B003E465F /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B30681722895F86B003E465F /* viewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = viewer.h; sourceTree = ""; }; + B30681732895F86B003E465F /* make.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = make.sh; sourceTree = ""; }; + B30681742895F86B003E465F /* cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpu.c; sourceTree = ""; }; + B30681752895F86B003E465F /* tools.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tools.c; sourceTree = ""; }; + B30681762895F86B003E465F /* tests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tests.h; sourceTree = ""; }; + B30681772895F86B003E465F /* testSuite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testSuite.c; sourceTree = ""; }; + B30681782895F86B003E465F /* TstSuite.rcp */ = {isa = PBXFileReference; lastKnownFileType = text; path = TstSuite.rcp; sourceTree = ""; }; + B30681792895F86B003E465F /* ugui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui.h; sourceTree = ""; }; + B306817A2895F86B003E465F /* install.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install.sh; sourceTree = ""; }; + B306817C2895F86B003E465F /* armDefines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armDefines.h; sourceTree = ""; }; + B306817D2895F86B003E465F /* armTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armTests.h; sourceTree = ""; }; + B306817E2895F86B003E465F /* armControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armControl.h; sourceTree = ""; }; + B306817F2895F86B003E465F /* armControl.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = armControl.S; sourceTree = ""; }; + B30681802895F86B003E465F /* tsc2101Driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tsc2101Driver.h; sourceTree = ""; }; + B30681812895F86B003E465F /* armSideCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armSideCode.h; sourceTree = ""; }; + B30681822895F86B003E465F /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B30681832895F86B003E465F /* armTests.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armTests.c; sourceTree = ""; }; + B30681842895F86B003E465F /* armControl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armControl.c; sourceTree = ""; }; + B30681852895F86B003E465F /* armSideCode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armSideCode.c; sourceTree = ""; }; + B30681862895F86B003E465F /* tsc2101Driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tsc2101Driver.c; sourceTree = ""; }; + B30681872895F86B003E465F /* armPrimitives.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armPrimitives.h; sourceTree = ""; }; + B30681882895F86B003E465F /* ByteOrderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ByteOrderUtils.h; sourceTree = ""; }; + B30681892895F86B003E465F /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B306818A2895F86B003E465F /* debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debug.c; sourceTree = ""; }; + B306818B2895F86B003E465F /* testSuiteConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = testSuiteConfig.h; sourceTree = ""; }; + B306818C2895F86B003E465F /* dbvzRegisterNames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbvzRegisterNames.h; sourceTree = ""; }; + B306818D2895F86B003E465F /* PceNativeCall.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PceNativeCall.h; sourceTree = ""; }; + B306818E2895F86B003E465F /* tests.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tests.c; sourceTree = ""; }; + B306818F2895F86B003E465F /* testSuite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = testSuite.h; sourceTree = ""; }; + B30681902895F86B003E465F /* sed1376RegisterNames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sed1376RegisterNames.h; sourceTree = ""; }; + B30681912895F86B003E465F /* tools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tools.h; sourceTree = ""; }; + B30681922895F86B003E465F /* cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; + B30681932895F86B003E465F /* viewer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = viewer.c; sourceTree = ""; }; + B30681942895F86B003E465F /* appIcon.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = appIcon.svg; sourceTree = ""; }; + B30681952895F86B003E465F /* ugui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ugui.c; sourceTree = ""; }; + B30681962895F86B003E465F /* TstSuiteRsc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TstSuiteRsc.h; sourceTree = ""; }; + B30681972895F86B003E465F /* ugui_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ugui_config.h; sourceTree = ""; }; + B30681982895F86B003E465F /* armPrimitives.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armPrimitives.c; sourceTree = ""; }; + B30681992895F86B003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B306819A2895F86B003E465F /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B306819C2895F86B003E465F /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B306819D2895F86B003E465F /* cursors.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cursors.c; sourceTree = ""; }; + B306819E2895F86B003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B306819F2895F86B003E465F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B30681A02895F86B003E465F /* mu_libretro.info */ = {isa = PBXFileReference; lastKnownFileType = text; path = mu_libretro.info; sourceTree = ""; }; + B30681A12895F86B003E465F /* Makefile.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.libretro; sourceTree = ""; }; + B30681A22895F86B003E465F /* installRootedAndroid.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = installRootedAndroid.sh; sourceTree = ""; }; + B30681A52895F86B003E465F /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B30681A72895F86B003E465F /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B30681A92895F86B003E465F /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B30681AA2895F86B003E465F /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B30681AB2895F86B003E465F /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B30681AD2895F86B003E465F /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B30681B02895F86B003E465F /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B30681B22895F86B003E465F /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B30681B42895F86B003E465F /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B30681B62895F86B003E465F /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B30681B72895F86C003E465F /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B30681B82895F86C003E465F /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B30681B92895F86C003E465F /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B30681BA2895F86C003E465F /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B30681BB2895F86C003E465F /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B30681BD2895F86C003E465F /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B30681BE2895F86C003E465F /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B30681BF2895F86C003E465F /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B30681C02895F86C003E465F /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B30681C12895F86C003E465F /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B30681C22895F86C003E465F /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B30681C42895F86C003E465F /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B30681C62895F86C003E465F /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B30681C82895F86C003E465F /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B30681C92895F86C003E465F /* cursors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cursors.h; sourceTree = ""; }; + B30681CB2895F86C003E465F /* Makefile.linux_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.linux_x86_64; sourceTree = ""; }; + B30681CC2895F86C003E465F /* Makefile.osx_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.osx_x86; sourceTree = ""; }; + B30681CD2895F86C003E465F /* Makefile.linux-portable_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile.linux-portable_x86_64"; sourceTree = ""; }; + B30681CE2895F86C003E465F /* Makefile.windows_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_x86; sourceTree = ""; }; + B30681CF2895F86C003E465F /* Makefile.linux_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.linux_x86; sourceTree = ""; }; + B30681D02895F86C003E465F /* Makefile.rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.rules; sourceTree = ""; }; + B30681D12895F86C003E465F /* Makefile.ps3_ppc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.ps3_ppc; sourceTree = ""; }; + B30681D22895F86C003E465F /* Makefile.windows_msvc2003_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_msvc2003_x86; sourceTree = ""; }; + B30681D32895F86C003E465F /* Makefile.wii_ppc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.wii_ppc; sourceTree = ""; }; + B30681D42895F86C003E465F /* Makefile.windows_msvc2005_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_msvc2005_x86; sourceTree = ""; }; + B30681D52895F86C003E465F /* Makefile.windows_msvc2010_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_msvc2010_x86; sourceTree = ""; }; + B30681D62895F86C003E465F /* Makefile.linux-portable_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile.linux-portable_x86"; sourceTree = ""; }; + B30681D72895F86C003E465F /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B30681D82895F86C003E465F /* Makefile.vita_arm */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.vita_arm; sourceTree = ""; }; + B30681D92895F86C003E465F /* Makefile.mingw_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mingw_x86; sourceTree = ""; }; + B30681DA2895F86C003E465F /* Makefile.windows_msvc2010_x64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_msvc2010_x64; sourceTree = ""; }; + B30681DB2895F86C003E465F /* Makefile.windows_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_x86_64; sourceTree = ""; }; + B30681DC2895F86C003E465F /* Makefile.windows_msvc2008_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_msvc2008_x86; sourceTree = ""; }; + B30681DD2895F86C003E465F /* Makefile.mingw_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mingw_x86_64; sourceTree = ""; }; + B30681DE2895F86C003E465F /* Makefile.windows_msvc2015_x64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_msvc2015_x64; sourceTree = ""; }; + B30681DF2895F86C003E465F /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B30681E02895F86C003E465F /* Makefile.osx_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.osx_x86_64; sourceTree = ""; }; + B30681E32895F86C003E465F /* stdbool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdbool.h; sourceTree = ""; }; + B30681E52895F86C003E465F /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B30681E62895F86C003E465F /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B30681E72895F86C003E465F /* readmeNdk.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readmeNdk.txt; sourceTree = ""; }; + B30681E92895F86C003E465F /* Y.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Y.png; sourceTree = ""; }; + B30681EA2895F86C003E465F /* X.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = X.png; sourceTree = ""; }; + B30681EB2895F86C003E465F /* X3_wswan.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = X3_wswan.png; sourceTree = ""; }; + B30681EC2895F86C003E465F /* rgui.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rgui.png; sourceTree = ""; }; + B30681ED2895F86C003E465F /* show.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = show.png; sourceTree = ""; }; + B30681EE2895F86C003E465F /* X4_wswan.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = X4_wswan.png; sourceTree = ""; }; + B30681EF2895F86C003E465F /* X2_wswan.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = X2_wswan.png; sourceTree = ""; }; + B30681F02895F86C003E465F /* palm.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = palm.cfg; sourceTree = ""; }; + B30681F12895F86C003E465F /* X1_wswan.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = X1_wswan.png; sourceTree = ""; }; + B30681F22895F86C003E465F /* B.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = B.png; sourceTree = ""; }; + B30681F32895F86C003E465F /* C.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = C.png; sourceTree = ""; }; + B30681F42895F86C003E465F /* A.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = A.png; sourceTree = ""; }; + B30681F52895F86C003E465F /* start.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = start.png; sourceTree = ""; }; + B30681F62895F86C003E465F /* hide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hide.png; sourceTree = ""; }; + B30681F82895F86C003E465F /* cursor16x16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cursor16x16.png; sourceTree = ""; }; + B30681F92895F86C003E465F /* silkscreen.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = silkscreen.svg; sourceTree = ""; }; + B30681FA2895F86C003E465F /* cursor32x32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cursor32x32.png; sourceTree = ""; }; + B30681FB2895F86C003E465F /* silkscreen160x60.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = silkscreen160x60.png; sourceTree = ""; }; + B30681FC2895F86C003E465F /* roadmap.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = roadmap.txt; sourceTree = ""; }; + B30681FE2895F86C003E465F /* sdCardCrcTables.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdCardCrcTables.c.h; sourceTree = ""; }; + B30682002895F86C003E465F /* m68kexternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kexternal.h; sourceTree = ""; }; + B30682012895F86C003E465F /* m68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; + B30682022895F86C003E465F /* m68kcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kcpu.h; sourceTree = ""; }; + B30682032895F86C003E465F /* m68kconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kconf.h; sourceTree = ""; }; + B30682042895F86C003E465F /* m68kops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kops.h; sourceTree = ""; }; + B30682052895F86C003E465F /* tungstenT3Bus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tungstenT3Bus.h; sourceTree = ""; }; + B30682062895F86C003E465F /* pdiUsbD12CommandNames.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pdiUsbD12CommandNames.c.h; sourceTree = ""; }; + B30682072895F86C003E465F /* dbvzTiming.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbvzTiming.c.h; sourceTree = ""; }; + B30682082895F86C003E465F /* pdiUsbD12.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pdiUsbD12.h; sourceTree = ""; }; + B30682092895F86C003E465F /* sed1376.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sed1376.h; sourceTree = ""; }; + B306820A2895F86C003E465F /* dbvzRegisterAccessors.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbvzRegisterAccessors.c.h; sourceTree = ""; }; + B306820B2895F86C003E465F /* silkscreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = silkscreen.h; sourceTree = ""; }; + B306820D2895F86C003E465F /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B306820E2895F86C003E465F /* translate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = translate.h; sourceTree = ""; }; + B306820F2895F86C003E465F /* mmu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mmu.h; sourceTree = ""; }; + B30682112895F86C003E465F /* uArmGlue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uArmGlue.h; sourceTree = ""; }; + B30682122895F86C003E465F /* CPU_2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPU_2.h; sourceTree = ""; }; + B30682132895F86C003E465F /* icache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = icache.h; sourceTree = ""; }; + B30682142895F86C003E465F /* asmcode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asmcode.h; sourceTree = ""; }; + B30682152895F86C003E465F /* literalpool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = literalpool.h; sourceTree = ""; }; + B30682162895F86C003E465F /* cpudefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpudefs.h; sourceTree = ""; }; + B30682172895F86C003E465F /* armsnippets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armsnippets.h; sourceTree = ""; }; + B30682182895F86C003E465F /* disasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disasm.h; sourceTree = ""; }; + B30682192895F86C003E465F /* emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emu.h; sourceTree = ""; }; + B306821A2895F86C003E465F /* cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; + B306821C2895F86C003E465F /* os.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = os.h; sourceTree = ""; }; + B306821D2895F86C003E465F /* mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = ""; }; + B306821E2895F86C003E465F /* bitfield.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitfield.h; sourceTree = ""; }; + B30682202895F86C003E465F /* pxa260_UART.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_UART.h; sourceTree = ""; }; + B30682212895F86C003E465F /* pxa260_DSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_DSP.h; sourceTree = ""; }; + B30682222895F86C003E465F /* pxa260.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260.h; sourceTree = ""; }; + B30682232895F86C003E465F /* pxa260I2c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260I2c.h; sourceTree = ""; }; + B30682242895F86C003E465F /* pxa260_CPU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_CPU.h; sourceTree = ""; }; + B30682252895F86C003E465F /* pxa260_RTC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_RTC.h; sourceTree = ""; }; + B30682262895F86C003E465F /* pxa260Ssp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260Ssp.h; sourceTree = ""; }; + B30682272895F86C003E465F /* pxa260Memctrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260Memctrl.h; sourceTree = ""; }; + B30682282895F86C003E465F /* pxa260_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_types.h; sourceTree = ""; }; + B30682292895F86C003E465F /* pxa260_math64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_math64.h; sourceTree = ""; }; + B306822A2895F86C003E465F /* pxa260_TIMR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_TIMR.h; sourceTree = ""; }; + B306822B2895F86C003E465F /* pxa260_DMA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_DMA.h; sourceTree = ""; }; + B306822C2895F86C003E465F /* pxa260_GPIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_GPIO.h; sourceTree = ""; }; + B306822D2895F86C003E465F /* pxa260_IC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_IC.h; sourceTree = ""; }; + B306822E2895F86C003E465F /* pxa260_LCD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_LCD.h; sourceTree = ""; }; + B306822F2895F86C003E465F /* pxa260Timing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260Timing.h; sourceTree = ""; }; + B30682302895F86C003E465F /* pxa260_PwrClk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260_PwrClk.h; sourceTree = ""; }; + B30682312895F86C003E465F /* pxa260Udc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260Udc.h; sourceTree = ""; }; + B30682322895F86C003E465F /* pxa260Accessors.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pxa260Accessors.c.h; sourceTree = ""; }; + B30682332895F86C003E465F /* sdCard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdCard.h; sourceTree = ""; }; + B30682342895F86C003E465F /* flx68000.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flx68000.h; sourceTree = ""; }; + B30682352895F86C003E465F /* emulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emulator.h; sourceTree = ""; }; + B30682362895F86C003E465F /* sdCardAccessors.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdCardAccessors.c.h; sourceTree = ""; }; + B30682372895F86C003E465F /* sed1376Accessors.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sed1376Accessors.c.h; sourceTree = ""; }; + B30682392895F86C003E465F /* blip_buf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blip_buf.h; sourceTree = ""; }; + B306823A2895F86D003E465F /* portability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = portability.h; sourceTree = ""; }; + B306823B2895F86D003E465F /* w86l488.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = w86l488.h; sourceTree = ""; }; + B306823C2895F86D003E465F /* fixings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fixings.h; sourceTree = ""; }; + B306823D2895F86D003E465F /* m5XXBus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m5XXBus.h; sourceTree = ""; }; + B306823E2895F86D003E465F /* ads7846.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ads7846.h; sourceTree = ""; }; + B306823F2895F86D003E465F /* sed1376RegisterNames.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sed1376RegisterNames.c.h; sourceTree = ""; }; + B30682412895F86D003E465F /* launcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = launcher.h; sourceTree = ""; }; + B30682422895F86D003E465F /* tsc2101.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tsc2101.h; sourceTree = ""; }; + B30682432895F86D003E465F /* dbvz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbvz.h; sourceTree = ""; }; + B30682442895F86D003E465F /* sdCardCommandNames.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdCardCommandNames.c.h; sourceTree = ""; }; + B30682452895F86D003E465F /* dbvzRegisterNames.c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbvzRegisterNames.c.h; sourceTree = ""; }; + B30682462895F86D003E465F /* tps65010.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tps65010.h; sourceTree = ""; }; + B30682482895F86D003E465F /* unimplementedHardware.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = unimplementedHardware.txt; sourceTree = ""; }; + B30682492895F86D003E465F /* accidentalFinds.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = accidentalFinds.txt; sourceTree = ""; }; + B306824A2895F86D003E465F /* missingFunctions.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = missingFunctions.txt; sourceTree = ""; }; + B306824B2895F86D003E465F /* brokenLibretroPlatforms.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = brokenLibretroPlatforms.txt; sourceTree = ""; }; + B306824C2895F86D003E465F /* futureTimeline.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = futureTimeline.txt; sourceTree = ""; }; + B306824F2895F86D003E465F /* speakerIssues.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = speakerIssues.txt; sourceTree = ""; }; + B30682502895F86D003E465F /* pwmAnalogOutput.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pwmAnalogOutput.png; sourceTree = ""; }; + B30682512895F86D003E465F /* properPwmSineWave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = properPwmSineWave.png; sourceTree = ""; }; + B30682532895F86D003E465F /* sdCardFullAccessLogGood.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdCardFullAccessLogGood.txt; sourceTree = ""; }; + B30682542895F86D003E465F /* possibleCauses.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = possibleCauses.txt; sourceTree = ""; }; + B30682552895F86D003E465F /* sdCardWriteTransferLogGood.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdCardWriteTransferLogGood.txt; sourceTree = ""; }; + B30682572895F86D003E465F /* runningAt80Percent.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = runningAt80Percent.txt; sourceTree = ""; }; + B30682582895F86D003E465F /* crashWhen100PercentSpeed.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = crashWhen100PercentSpeed.txt; sourceTree = ""; }; + B30682592895F86D003E465F /* differenceWhenRunningFaster.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = differenceWhenRunningFaster.txt; sourceTree = ""; }; + B306825B2895F86D003E465F /* PortDValuesPoweredOff.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = PortDValuesPoweredOff.txt; sourceTree = ""; }; + B306825C2895F86D003E465F /* beforePowerDownRegs.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = beforePowerDownRegs.txt; sourceTree = ""; }; + B306825D2895F86D003E465F /* PortKValuesPoweredOff.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = PortKValuesPoweredOff.txt; sourceTree = ""; }; + B306825E2895F86D003E465F /* powerButtonBugCanidates.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = powerButtonBugCanidates.txt; sourceTree = ""; }; + B306825F2895F86D003E465F /* powerButtonBugCause.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = powerButtonBugCause.txt; sourceTree = ""; }; + B30682602895F86D003E465F /* duringPowerDownRegs.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = duringPowerDownRegs.txt; sourceTree = ""; }; + B30682612895F86D003E465F /* T3Crash.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = T3Crash.txt; sourceTree = ""; }; + B30682632895F86D003E465F /* text.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = text.txt; sourceTree = ""; }; + B30682642895F86D003E465F /* Screenshot_20190426-220702.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Screenshot_20190426-220702.png"; sourceTree = ""; }; + B30682652895F86D003E465F /* currentBug.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = currentBug.txt; sourceTree = ""; }; + B30682662895F86D003E465F /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B30682692895F86D003E465F /* ISSUE_TEMPLATE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ISSUE_TEMPLATE.md; sourceTree = ""; }; + B306826B2895F86D003E465F /* changelog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = changelog.txt; sourceTree = ""; }; + B306826C2895F86D003E465F /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B306826E2895F86D003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682702895F86D003E465F /* touchscreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = touchscreen.h; sourceTree = ""; }; + B30682722895F86D003E465F /* Mu.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Mu.icns; sourceTree = ""; }; + B30682732895F86D003E465F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B30682742895F86D003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682752895F86D003E465F /* mainwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mainwindow.h; sourceTree = ""; }; + B30682762895F86D003E465F /* statemanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = statemanager.h; sourceTree = ""; }; + B30682772895F86D003E465F /* settingsmanager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = settingsmanager.cpp; sourceTree = ""; }; + B30682782895F86D003E465F /* debugviewer.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = debugviewer.ui; sourceTree = ""; }; + B306827A2895F86D003E465F /* notes.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = notes.svg; sourceTree = ""; }; + B306827B2895F86D003E465F /* reset.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = reset.svg; sourceTree = ""; }; + B306827C2895F86D003E465F /* debugger.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = debugger.svg; sourceTree = ""; }; + B306827D2895F86D003E465F /* screenshot.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = screenshot.svg; sourceTree = ""; }; + B306827E2895F86D003E465F /* todo.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = todo.svg; sourceTree = ""; }; + B306827F2895F86D003E465F /* down.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = down.svg; sourceTree = ""; }; + B30682802895F86D003E465F /* power.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = power.svg; sourceTree = ""; }; + B30682812895F86D003E465F /* stateManager.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = stateManager.svg; sourceTree = ""; }; + B30682822895F86D003E465F /* up.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = up.svg; sourceTree = ""; }; + B30682832895F86D003E465F /* install.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = install.svg; sourceTree = ""; }; + B30682842895F86D003E465F /* stop.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = stop.svg; sourceTree = ""; }; + B30682852895F86D003E465F /* voiceMemo.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = voiceMemo.svg; sourceTree = ""; }; + B30682862895F86D003E465F /* right.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = right.svg; sourceTree = ""; }; + B30682872895F86D003E465F /* play.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = play.svg; sourceTree = ""; }; + B30682882895F86D003E465F /* settingsManager.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = settingsManager.svg; sourceTree = ""; }; + B30682892895F86D003E465F /* boot.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = boot.svg; sourceTree = ""; }; + B306828A2895F86D003E465F /* calendar.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = calendar.svg; sourceTree = ""; }; + B306828B2895F86D003E465F /* center.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = center.svg; sourceTree = ""; }; + B306828C2895F86D003E465F /* pause.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = pause.svg; sourceTree = ""; }; + B306828D2895F86D003E465F /* left.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = left.svg; sourceTree = ""; }; + B306828E2895F86D003E465F /* addressBook.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = addressBook.svg; sourceTree = ""; }; + B306828F2895F86D003E465F /* emuwrapper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emuwrapper.cpp; sourceTree = ""; }; + B30682902895F86D003E465F /* mainwindow.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = mainwindow.qrc; sourceTree = ""; }; + B30682912895F86D003E465F /* settingsmanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = settingsmanager.h; sourceTree = ""; }; + B30682922895F86D003E465F /* debugviewer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debugviewer.cpp; sourceTree = ""; }; + B30682932895F86D003E465F /* mainwindow.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mainwindow.ui; sourceTree = ""; }; + B30682942895F86D003E465F /* debugviewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugviewer.h; sourceTree = ""; }; + B30682952895F86D003E465F /* Mu.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Mu.pro; sourceTree = ""; }; + B30682962895F86D003E465F /* mainwindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainwindow.cpp; sourceTree = ""; }; + B30682972895F86D003E465F /* touchscreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = touchscreen.cpp; sourceTree = ""; }; + B30682982895F86D003E465F /* statemanager.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = statemanager.ui; sourceTree = ""; }; + B30682992895F86D003E465F /* statemanager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = statemanager.cpp; sourceTree = ""; }; + B306829D2895F86D003E465F /* libs.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libs.xml; sourceTree = ""; }; + B306829F2895F86D003E465F /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B30682A12895F86D003E465F /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B30682A32895F86D003E465F /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B30682A42895F86D003E465F /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; + B30682A52895F86D003E465F /* local.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = local.properties; sourceTree = ""; }; + B30682A82895F86D003E465F /* gradle-wrapper.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "gradle-wrapper.jar"; sourceTree = ""; }; + B30682A92895F86D003E465F /* gradle-wrapper.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gradle-wrapper.properties"; sourceTree = ""; }; + B30682AA2895F86D003E465F /* gradlew */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew; sourceTree = ""; }; + B30682AB2895F86D003E465F /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B30682AC2895F86D003E465F /* gradle.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradle.properties; sourceTree = ""; }; + B30682AD2895F86D003E465F /* gradlew.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew.bat; sourceTree = ""; }; + B30682AF2895F86E003E465F /* app.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = app.rc; sourceTree = ""; }; + B30682B02895F86E003E465F /* Mu.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Mu.ico; sourceTree = ""; }; + B30682B12895F86E003E465F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B30682B22895F86E003E465F /* emuwrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emuwrapper.h; sourceTree = ""; }; + B30682B32895F86E003E465F /* settingsmanager.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = settingsmanager.ui; sourceTree = ""; }; + B30682B52895F86E003E465F /* Mu.iml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Mu.iml; sourceTree = ""; }; + B30682B62895F86E003E465F /* vcs.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = vcs.xml; sourceTree = ""; }; + B30682B72895F86E003E465F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B30682B82895F86E003E465F /* modules.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = modules.xml; sourceTree = ""; }; + B30682B92895F86E003E465F /* misc.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = misc.xml; sourceTree = ""; }; + B30682BC2895F86E003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682BD2895F86E003E465F /* m68kcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kcpu.c; sourceTree = ""; }; + B30682BE2895F86E003E465F /* m68kdasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kdasm.c; sourceTree = ""; }; + B30682BF2895F86E003E465F /* m68kopac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kopac.c; sourceTree = ""; }; + B30682C02895F86E003E465F /* m68kops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kops.c; sourceTree = ""; }; + B30682C12895F86E003E465F /* m68kopdm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kopdm.c; sourceTree = ""; }; + B30682C22895F86E003E465F /* m68kopnz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kopnz.c; sourceTree = ""; }; + B30682C32895F86E003E465F /* w86l488.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = w86l488.c; sourceTree = ""; }; + B30682C42895F86E003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682C52895F86E003E465F /* tsc2101.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tsc2101.c; sourceTree = ""; }; + B30682C62895F86E003E465F /* ads7846.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ads7846.c; sourceTree = ""; }; + B30682C72895F86E003E465F /* m5XXBus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m5XXBus.c; sourceTree = ""; }; + B30682C92895F86E003E465F /* thumb_interpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = thumb_interpreter.cpp; sourceTree = ""; }; + B30682CA2895F86E003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682CB2895F86E003E465F /* coproc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = coproc.cpp; sourceTree = ""; }; + B30682CC2895F86E003E465F /* disasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disasm.c; sourceTree = ""; }; + B30682CD2895F86E003E465F /* asmcode_x86_64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = asmcode_x86_64.S; sourceTree = ""; }; + B30682CE2895F86E003E465F /* mem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mem.c; sourceTree = ""; }; + B30682CF2895F86E003E465F /* translate_arm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = translate_arm.cpp; sourceTree = ""; }; + B30682D02895F86E003E465F /* translate_aarch64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = translate_aarch64.cpp; sourceTree = ""; }; + B30682D12895F86E003E465F /* translate_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = translate_x86.c; sourceTree = ""; }; + B30682D32895F86E003E465F /* uArmGlue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uArmGlue.cpp; sourceTree = ""; }; + B30682D42895F86E003E465F /* icache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = icache.c; sourceTree = ""; }; + B30682D52895F86E003E465F /* CPU_2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CPU_2.c; sourceTree = ""; }; + B30682D62895F86E003E465F /* emuVarPool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emuVarPool.c; sourceTree = ""; }; + B30682D72895F86E003E465F /* arm_interpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = arm_interpreter.cpp; sourceTree = ""; }; + B30682D82895F86E003E465F /* translate_x86_64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = translate_x86_64.c; sourceTree = ""; }; + B30682DA2895F86E003E465F /* os-win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "os-win32.c"; sourceTree = ""; }; + B30682DB2895F86E003E465F /* os-linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "os-linux.c"; sourceTree = ""; }; + B30682DC2895F86E003E465F /* asmcode_x86.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = asmcode_x86.S; sourceTree = ""; }; + B30682DD2895F86E003E465F /* cpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpu.cpp; sourceTree = ""; }; + B30682DE2895F86E003E465F /* asmcode_aarch64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = asmcode_aarch64.S; sourceTree = ""; }; + B30682DF2895F86E003E465F /* asmcode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = asmcode.c; sourceTree = ""; }; + B30682E02895F86E003E465F /* mmu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mmu.c; sourceTree = ""; }; + B30682E12895F86E003E465F /* asmcode_arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = asmcode_arm.S; sourceTree = ""; }; + B30682E22895F86E003E465F /* tps65010.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tps65010.c; sourceTree = ""; }; + B30682E42895F86E003E465F /* pxa260_TIMR.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_TIMR.c; sourceTree = ""; }; + B30682E52895F86E003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682E62895F86E003E465F /* pxa260_DMA.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_DMA.c; sourceTree = ""; }; + B30682E72895F86E003E465F /* pxa260_IC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_IC.c; sourceTree = ""; }; + B30682E82895F86E003E465F /* pxa260_GPIO.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_GPIO.c; sourceTree = ""; }; + B30682E92895F86E003E465F /* pxa260Udc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260Udc.c; sourceTree = ""; }; + B30682EA2895F86E003E465F /* pxa260_PwrClk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_PwrClk.c; sourceTree = ""; }; + B30682EB2895F86E003E465F /* pxa260Timing.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260Timing.c; sourceTree = ""; }; + B30682EC2895F86E003E465F /* pxa260_LCD.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_LCD.c; sourceTree = ""; }; + B30682ED2895F86E003E465F /* pxa260_RTC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_RTC.c; sourceTree = ""; }; + B30682EE2895F86E003E465F /* pxa260I2c.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260I2c.c; sourceTree = ""; }; + B30682EF2895F86E003E465F /* pxa260.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260.c; sourceTree = ""; }; + B30682F02895F86E003E465F /* pxa260_DSP.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_DSP.c; sourceTree = ""; }; + B30682F12895F86E003E465F /* pxa260_UART.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260_UART.c; sourceTree = ""; }; + B30682F22895F86E003E465F /* pxa260Memctrl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260Memctrl.c; sourceTree = ""; }; + B30682F32895F86E003E465F /* pxa260Ssp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pxa260Ssp.c; sourceTree = ""; }; + B30682F42895F86E003E465F /* dbvz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dbvz.c; sourceTree = ""; }; + B30682F62895F86E003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682F72895F86E003E465F /* blip_buf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blip_buf.c; sourceTree = ""; }; + B30682F82895F86E003E465F /* pdiUsbD12.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pdiUsbD12.c; sourceTree = ""; }; + B30682F92895F86E003E465F /* makefile.all */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.all; sourceTree = ""; }; + B30682FB2895F86E003E465F /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B30682FC2895F86E003E465F /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B30682FD2895F86E003E465F /* launcher.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = launcher.c; sourceTree = ""; }; + B30682FE2895F86E003E465F /* silkscreen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = silkscreen.c; sourceTree = ""; }; + B30682FF2895F86E003E465F /* sed1376.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sed1376.c; sourceTree = ""; }; + B30683002895F86E003E465F /* flx68000.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = flx68000.c; sourceTree = ""; }; + B30683012895F86E003E465F /* sdCard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdCard.c; sourceTree = ""; }; + B30683022895F86E003E465F /* emulator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emulator.c; sourceTree = ""; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libmu-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmu-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVMu-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVMu-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVMu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMu.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVMuCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMuCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVMuCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVMuCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVMu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMu.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libmu.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libmu-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B30681592895F86B003E465F /* Mu */ = { + isa = PBXGroup; + children = ( + B306819A2895F86B003E465F /* LICENSE */, + B30682662895F86D003E465F /* readme.md */, + B306826B2895F86D003E465F /* changelog.txt */, + B30681992895F86B003E465F /* CMakeLists.txt */, + B30681FC2895F86C003E465F /* roadmap.txt */, + B306826C2895F86D003E465F /* .gitlab-ci.yml */, + B30682682895F86D003E465F /* .github */, + B30682B42895F86E003E465F /* .idea */, + B30682472895F86D003E465F /* bugs */, + B30681F72895F86C003E465F /* images */, + B30681FD2895F86C003E465F /* include */, + B306819B2895F86B003E465F /* libretroBuildSystem */, + B306826D2895F86D003E465F /* qtBuildSystem */, + B30682BA2895F86E003E465F /* src */, + B306815A2895F86B003E465F /* tools */, + ); + path = Mu; + sourceTree = ""; + }; + B306815A2895F86B003E465F /* tools */ = { + isa = PBXGroup; + children = ( + B306815B2895F86B003E465F /* desktop */, + B306816D2895F86B003E465F /* palm */, + ); + path = tools; + sourceTree = ""; + }; + B306815B2895F86B003E465F /* desktop */ = { + isa = PBXGroup; + children = ( + B306815C2895F86B003E465F /* applyHalTable.py */, + B306815D2895F86B003E465F /* BufferGraphViewer */, + B30681632895F86B003E465F /* MakePalmBitmap */, + B30681662895F86B003E465F /* dalAddrFromPc.py */, + B30681672895F86B003E465F /* muStyle.xml */, + B30681682895F86B003E465F /* getOs4FunctionNames.py */, + B30681692895F86B003E465F /* export16BitImageProperly */, + ); + path = desktop; + sourceTree = ""; + }; + B306815D2895F86B003E465F /* BufferGraphViewer */ = { + isa = PBXGroup; + children = ( + B306815E2895F86B003E465F /* mainwindow.h */, + B306815F2895F86B003E465F /* mainwindow.ui */, + B30681602895F86B003E465F /* mainwindow.cpp */, + B30681612895F86B003E465F /* BufferGraphViewer.pro */, + B30681622895F86B003E465F /* main.cpp */, + ); + path = BufferGraphViewer; + sourceTree = ""; + }; + B30681632895F86B003E465F /* MakePalmBitmap */ = { + isa = PBXGroup; + children = ( + B30681642895F86B003E465F /* MakePalmBitmap.pro */, + B30681652895F86B003E465F /* main.cpp */, + ); + path = MakePalmBitmap; + sourceTree = ""; + }; + B30681692895F86B003E465F /* export16BitImageProperly */ = { + isa = PBXGroup; + children = ( + B306816A2895F86B003E465F /* readme.md */, + B306816B2895F86B003E465F /* main.c */, + B306816C2895F86B003E465F /* convert.sh */, + ); + path = export16BitImageProperly; + sourceTree = ""; + }; + B306816D2895F86B003E465F /* palm */ = { + isa = PBXGroup; + children = ( + B306816E2895F86B003E465F /* hwTestSuite */, + ); + path = palm; + sourceTree = ""; + }; + B306816E2895F86B003E465F /* hwTestSuite */ = { + isa = PBXGroup; + children = ( + B306816F2895F86B003E465F /* armLib.lkr */, + B30681702895F86B003E465F /* TstSuite.def */, + B30681712895F86B003E465F /* debug.h */, + B30681722895F86B003E465F /* viewer.h */, + B30681732895F86B003E465F /* make.sh */, + B30681742895F86B003E465F /* cpu.c */, + B30681752895F86B003E465F /* tools.c */, + B30681762895F86B003E465F /* tests.h */, + B30681772895F86B003E465F /* testSuite.c */, + B30681782895F86B003E465F /* TstSuite.rcp */, + B30681792895F86B003E465F /* ugui.h */, + B306817A2895F86B003E465F /* install.sh */, + B306817B2895F86B003E465F /* armSideCode */, + B30681872895F86B003E465F /* armPrimitives.h */, + B30681882895F86B003E465F /* ByteOrderUtils.h */, + B30681892895F86B003E465F /* readme.md */, + B306818A2895F86B003E465F /* debug.c */, + B306818B2895F86B003E465F /* testSuiteConfig.h */, + B306818C2895F86B003E465F /* dbvzRegisterNames.h */, + B306818D2895F86B003E465F /* PceNativeCall.h */, + B306818E2895F86B003E465F /* tests.c */, + B306818F2895F86B003E465F /* testSuite.h */, + B30681902895F86B003E465F /* sed1376RegisterNames.h */, + B30681912895F86B003E465F /* tools.h */, + B30681922895F86B003E465F /* cpu.h */, + B30681932895F86B003E465F /* viewer.c */, + B30681942895F86B003E465F /* appIcon.svg */, + B30681952895F86B003E465F /* ugui.c */, + B30681962895F86B003E465F /* TstSuiteRsc.h */, + B30681972895F86B003E465F /* ugui_config.h */, + B30681982895F86B003E465F /* armPrimitives.c */, + ); + path = hwTestSuite; + sourceTree = ""; + }; + B306817B2895F86B003E465F /* armSideCode */ = { + isa = PBXGroup; + children = ( + B306817C2895F86B003E465F /* armDefines.h */, + B306817D2895F86B003E465F /* armTests.h */, + B306817E2895F86B003E465F /* armControl.h */, + B306817F2895F86B003E465F /* armControl.S */, + B30681802895F86B003E465F /* tsc2101Driver.h */, + B30681812895F86B003E465F /* armSideCode.h */, + B30681822895F86B003E465F /* readme.md */, + B30681832895F86B003E465F /* armTests.c */, + B30681842895F86B003E465F /* armControl.c */, + B30681852895F86B003E465F /* armSideCode.c */, + B30681862895F86B003E465F /* tsc2101Driver.c */, + ); + path = armSideCode; + sourceTree = ""; + }; + B306819B2895F86B003E465F /* libretroBuildSystem */ = { + isa = PBXGroup; + children = ( + B306819F2895F86B003E465F /* Makefile */, + B306819D2895F86B003E465F /* cursors.c */, + B306819C2895F86B003E465F /* libretro.c */, + B30681C92895F86C003E465F /* cursors.h */, + B30681A02895F86B003E465F /* mu_libretro.info */, + B30681A12895F86B003E465F /* Makefile.libretro */, + B30681A22895F86B003E465F /* installRootedAndroid.sh */, + B306819E2895F86B003E465F /* CMakeLists.txt */, + B30681CA2895F86C003E465F /* build */, + B30681E12895F86C003E465F /* fixIncludes */, + B30681E42895F86C003E465F /* jni */, + B30681A32895F86B003E465F /* libretro-common */, + B30681E82895F86C003E465F /* overlay */, + ); + path = libretroBuildSystem; + sourceTree = ""; + }; + B30681A32895F86B003E465F /* libretro-common */ = { + isa = PBXGroup; + children = ( + B30681A42895F86B003E465F /* encodings */, + B30681A62895F86B003E465F /* vfs */, + B30681A82895F86B003E465F /* compat */, + B30681AC2895F86B003E465F /* streams */, + B30681AE2895F86B003E465F /* include */, + B30681C52895F86C003E465F /* memmap */, + B30681C72895F86C003E465F /* string */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B30681A42895F86B003E465F /* encodings */ = { + isa = PBXGroup; + children = ( + B30681A52895F86B003E465F /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B30681A62895F86B003E465F /* vfs */ = { + isa = PBXGroup; + children = ( + B30681A72895F86B003E465F /* vfs_implementation.c */, + ); + path = vfs; + sourceTree = ""; + }; + B30681A82895F86B003E465F /* compat */ = { + isa = PBXGroup; + children = ( + B30681A92895F86B003E465F /* compat_strl.c */, + B30681AA2895F86B003E465F /* compat_posix_string.c */, + B30681AB2895F86B003E465F /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B30681AC2895F86B003E465F /* streams */ = { + isa = PBXGroup; + children = ( + B30681AD2895F86B003E465F /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B30681AE2895F86B003E465F /* include */ = { + isa = PBXGroup; + children = ( + B30681AF2895F86B003E465F /* encodings */, + B30681B12895F86B003E465F /* vfs */, + B30681B32895F86B003E465F /* compat */, + B30681BA2895F86C003E465F /* retro_common_api.h */, + B30681BB2895F86C003E465F /* retro_inline.h */, + B30681BC2895F86C003E465F /* streams */, + B30681BE2895F86C003E465F /* retro_miscellaneous.h */, + B30681BF2895F86C003E465F /* boolean.h */, + B30681C02895F86C003E465F /* memmap.h */, + B30681C12895F86C003E465F /* libretro.h */, + B30681C22895F86C003E465F /* retro_assert.h */, + B30681C32895F86C003E465F /* string */, + ); + path = include; + sourceTree = ""; + }; + B30681AF2895F86B003E465F /* encodings */ = { + isa = PBXGroup; + children = ( + B30681B02895F86B003E465F /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B30681B12895F86B003E465F /* vfs */ = { + isa = PBXGroup; + children = ( + B30681B22895F86B003E465F /* vfs_implementation.h */, + ); + path = vfs; + sourceTree = ""; + }; + B30681B32895F86B003E465F /* compat */ = { + isa = PBXGroup; + children = ( + B30681B42895F86B003E465F /* strl.h */, + B30681B52895F86B003E465F /* msvc */, + B30681B72895F86C003E465F /* fopen_utf8.h */, + B30681B82895F86C003E465F /* posix_string.h */, + B30681B92895F86C003E465F /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B30681B52895F86B003E465F /* msvc */ = { + isa = PBXGroup; + children = ( + B30681B62895F86B003E465F /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B30681BC2895F86C003E465F /* streams */ = { + isa = PBXGroup; + children = ( + B30681BD2895F86C003E465F /* file_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B30681C32895F86C003E465F /* string */ = { + isa = PBXGroup; + children = ( + B30681C42895F86C003E465F /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B30681C52895F86C003E465F /* memmap */ = { + isa = PBXGroup; + children = ( + B30681C62895F86C003E465F /* memmap.c */, + ); + path = memmap; + sourceTree = ""; + }; + B30681C72895F86C003E465F /* string */ = { + isa = PBXGroup; + children = ( + B30681C82895F86C003E465F /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B30681CA2895F86C003E465F /* build */ = { + isa = PBXGroup; + children = ( + B30681CB2895F86C003E465F /* Makefile.linux_x86_64 */, + B30681CC2895F86C003E465F /* Makefile.osx_x86 */, + B30681CD2895F86C003E465F /* Makefile.linux-portable_x86_64 */, + B30681CE2895F86C003E465F /* Makefile.windows_x86 */, + B30681CF2895F86C003E465F /* Makefile.linux_x86 */, + B30681D02895F86C003E465F /* Makefile.rules */, + B30681D12895F86C003E465F /* Makefile.ps3_ppc */, + B30681D22895F86C003E465F /* Makefile.windows_msvc2003_x86 */, + B30681D32895F86C003E465F /* Makefile.wii_ppc */, + B30681D42895F86C003E465F /* Makefile.windows_msvc2005_x86 */, + B30681D52895F86C003E465F /* Makefile.windows_msvc2010_x86 */, + B30681D62895F86C003E465F /* Makefile.linux-portable_x86 */, + B30681D72895F86C003E465F /* Makefile.common */, + B30681D82895F86C003E465F /* Makefile.vita_arm */, + B30681D92895F86C003E465F /* Makefile.mingw_x86 */, + B30681DA2895F86C003E465F /* Makefile.windows_msvc2010_x64 */, + B30681DB2895F86C003E465F /* Makefile.windows_x86_64 */, + B30681DC2895F86C003E465F /* Makefile.windows_msvc2008_x86 */, + B30681DD2895F86C003E465F /* Makefile.mingw_x86_64 */, + B30681DE2895F86C003E465F /* Makefile.windows_msvc2015_x64 */, + B30681DF2895F86C003E465F /* link.T */, + B30681E02895F86C003E465F /* Makefile.osx_x86_64 */, + ); + path = build; + sourceTree = ""; + }; + B30681E12895F86C003E465F /* fixIncludes */ = { + isa = PBXGroup; + children = ( + B30681E22895F86C003E465F /* stdbool */, + ); + path = fixIncludes; + sourceTree = ""; + }; + B30681E22895F86C003E465F /* stdbool */ = { + isa = PBXGroup; + children = ( + B30681E32895F86C003E465F /* stdbool.h */, + ); + path = stdbool; + sourceTree = ""; + }; + B30681E42895F86C003E465F /* jni */ = { + isa = PBXGroup; + children = ( + B30681E52895F86C003E465F /* Android.mk */, + B30681E62895F86C003E465F /* Application.mk */, + B30681E72895F86C003E465F /* readmeNdk.txt */, + ); + path = jni; + sourceTree = ""; + }; + B30681E82895F86C003E465F /* overlay */ = { + isa = PBXGroup; + children = ( + B30681E92895F86C003E465F /* Y.png */, + B30681EA2895F86C003E465F /* X.png */, + B30681EB2895F86C003E465F /* X3_wswan.png */, + B30681EC2895F86C003E465F /* rgui.png */, + B30681ED2895F86C003E465F /* show.png */, + B30681EE2895F86C003E465F /* X4_wswan.png */, + B30681EF2895F86C003E465F /* X2_wswan.png */, + B30681F02895F86C003E465F /* palm.cfg */, + B30681F12895F86C003E465F /* X1_wswan.png */, + B30681F22895F86C003E465F /* B.png */, + B30681F32895F86C003E465F /* C.png */, + B30681F42895F86C003E465F /* A.png */, + B30681F52895F86C003E465F /* start.png */, + B30681F62895F86C003E465F /* hide.png */, + ); + path = overlay; + sourceTree = ""; + }; + B30681F72895F86C003E465F /* images */ = { + isa = PBXGroup; + children = ( + B30681F82895F86C003E465F /* cursor16x16.png */, + B30681F92895F86C003E465F /* silkscreen.svg */, + B30681FA2895F86C003E465F /* cursor32x32.png */, + B30681FB2895F86C003E465F /* silkscreen160x60.png */, + ); + path = images; + sourceTree = ""; + }; + B30681FD2895F86C003E465F /* include */ = { + isa = PBXGroup; + children = ( + B30681FE2895F86C003E465F /* sdCardCrcTables.c.h */, + B30681FF2895F86C003E465F /* m68k */, + B30682052895F86C003E465F /* tungstenT3Bus.h */, + B30682062895F86C003E465F /* pdiUsbD12CommandNames.c.h */, + B30682072895F86C003E465F /* dbvzTiming.c.h */, + B30682082895F86C003E465F /* pdiUsbD12.h */, + B30682092895F86C003E465F /* sed1376.h */, + B306820A2895F86C003E465F /* dbvzRegisterAccessors.c.h */, + B306820B2895F86C003E465F /* silkscreen.h */, + B306820C2895F86C003E465F /* armv5te */, + B306821F2895F86C003E465F /* pxa260 */, + B30682332895F86C003E465F /* sdCard.h */, + B30682342895F86C003E465F /* flx68000.h */, + B30682352895F86C003E465F /* emulator.h */, + B30682362895F86C003E465F /* sdCardAccessors.c.h */, + B30682372895F86C003E465F /* sed1376Accessors.c.h */, + B30682382895F86C003E465F /* audio */, + B306823A2895F86D003E465F /* portability.h */, + B306823B2895F86D003E465F /* w86l488.h */, + B306823C2895F86D003E465F /* fixings.h */, + B306823D2895F86D003E465F /* m5XXBus.h */, + B306823E2895F86D003E465F /* ads7846.h */, + B306823F2895F86D003E465F /* sed1376RegisterNames.c.h */, + B30682402895F86D003E465F /* fileLauncher */, + B30682422895F86D003E465F /* tsc2101.h */, + B30682432895F86D003E465F /* dbvz.h */, + B30682442895F86D003E465F /* sdCardCommandNames.c.h */, + B30682452895F86D003E465F /* dbvzRegisterNames.c.h */, + B30682462895F86D003E465F /* tps65010.h */, + ); + path = include; + sourceTree = ""; + }; + B30681FF2895F86C003E465F /* m68k */ = { + isa = PBXGroup; + children = ( + B30682002895F86C003E465F /* m68kexternal.h */, + B30682012895F86C003E465F /* m68k.h */, + B30682022895F86C003E465F /* m68kcpu.h */, + B30682032895F86C003E465F /* m68kconf.h */, + B30682042895F86C003E465F /* m68kops.h */, + ); + path = m68k; + sourceTree = ""; + }; + B306820C2895F86C003E465F /* armv5te */ = { + isa = PBXGroup; + children = ( + B306820D2895F86C003E465F /* debug.h */, + B306820E2895F86C003E465F /* translate.h */, + B306820F2895F86C003E465F /* mmu.h */, + B30682102895F86C003E465F /* uArm */, + B30682142895F86C003E465F /* asmcode.h */, + B30682152895F86C003E465F /* literalpool.h */, + B30682162895F86C003E465F /* cpudefs.h */, + B30682172895F86C003E465F /* armsnippets.h */, + B30682182895F86C003E465F /* disasm.h */, + B30682192895F86C003E465F /* emu.h */, + B306821A2895F86C003E465F /* cpu.h */, + B306821B2895F86C003E465F /* os */, + B306821D2895F86C003E465F /* mem.h */, + B306821E2895F86C003E465F /* bitfield.h */, + ); + path = armv5te; + sourceTree = ""; + }; + B30682102895F86C003E465F /* uArm */ = { + isa = PBXGroup; + children = ( + B30682112895F86C003E465F /* uArmGlue.h */, + B30682122895F86C003E465F /* CPU_2.h */, + B30682132895F86C003E465F /* icache.h */, + ); + path = uArm; + sourceTree = ""; + }; + B306821B2895F86C003E465F /* os */ = { + isa = PBXGroup; + children = ( + B306821C2895F86C003E465F /* os.h */, + ); + path = os; + sourceTree = ""; + }; + B306821F2895F86C003E465F /* pxa260 */ = { + isa = PBXGroup; + children = ( + B30682202895F86C003E465F /* pxa260_UART.h */, + B30682212895F86C003E465F /* pxa260_DSP.h */, + B30682222895F86C003E465F /* pxa260.h */, + B30682232895F86C003E465F /* pxa260I2c.h */, + B30682242895F86C003E465F /* pxa260_CPU.h */, + B30682252895F86C003E465F /* pxa260_RTC.h */, + B30682262895F86C003E465F /* pxa260Ssp.h */, + B30682272895F86C003E465F /* pxa260Memctrl.h */, + B30682282895F86C003E465F /* pxa260_types.h */, + B30682292895F86C003E465F /* pxa260_math64.h */, + B306822A2895F86C003E465F /* pxa260_TIMR.h */, + B306822B2895F86C003E465F /* pxa260_DMA.h */, + B306822C2895F86C003E465F /* pxa260_GPIO.h */, + B306822D2895F86C003E465F /* pxa260_IC.h */, + B306822E2895F86C003E465F /* pxa260_LCD.h */, + B306822F2895F86C003E465F /* pxa260Timing.h */, + B30682302895F86C003E465F /* pxa260_PwrClk.h */, + B30682312895F86C003E465F /* pxa260Udc.h */, + B30682322895F86C003E465F /* pxa260Accessors.c.h */, + ); + path = pxa260; + sourceTree = ""; + }; + B30682382895F86C003E465F /* audio */ = { + isa = PBXGroup; + children = ( + B30682392895F86C003E465F /* blip_buf.h */, + ); + path = audio; + sourceTree = ""; + }; + B30682402895F86D003E465F /* fileLauncher */ = { + isa = PBXGroup; + children = ( + B30682412895F86D003E465F /* launcher.h */, + ); + path = fileLauncher; + sourceTree = ""; + }; + B30682472895F86D003E465F /* bugs */ = { + isa = PBXGroup; + children = ( + B30682482895F86D003E465F /* unimplementedHardware.txt */, + B30682492895F86D003E465F /* accidentalFinds.txt */, + B306824A2895F86D003E465F /* missingFunctions.txt */, + B306824B2895F86D003E465F /* brokenLibretroPlatforms.txt */, + B306824C2895F86D003E465F /* futureTimeline.txt */, + B306824D2895F86D003E465F /* fixed */, + B30682622895F86D003E465F /* shadowTheifBug */, + B30682652895F86D003E465F /* currentBug.txt */, + ); + path = bugs; + sourceTree = ""; + }; + B306824D2895F86D003E465F /* fixed */ = { + isa = PBXGroup; + children = ( + B306824E2895F86D003E465F /* weirdAudio */, + B30682522895F86D003E465F /* sdCardImplementation */, + B30682562895F86D003E465F /* crashingWhenRunningAtFullspeed */, + B306825A2895F86D003E465F /* powerButtonBug */, + B30682612895F86D003E465F /* T3Crash.txt */, + ); + path = fixed; + sourceTree = ""; + }; + B306824E2895F86D003E465F /* weirdAudio */ = { + isa = PBXGroup; + children = ( + B306824F2895F86D003E465F /* speakerIssues.txt */, + B30682502895F86D003E465F /* pwmAnalogOutput.png */, + B30682512895F86D003E465F /* properPwmSineWave.png */, + ); + path = weirdAudio; + sourceTree = ""; + }; + B30682522895F86D003E465F /* sdCardImplementation */ = { + isa = PBXGroup; + children = ( + B30682532895F86D003E465F /* sdCardFullAccessLogGood.txt */, + B30682542895F86D003E465F /* possibleCauses.txt */, + B30682552895F86D003E465F /* sdCardWriteTransferLogGood.txt */, + ); + path = sdCardImplementation; + sourceTree = ""; + }; + B30682562895F86D003E465F /* crashingWhenRunningAtFullspeed */ = { + isa = PBXGroup; + children = ( + B30682572895F86D003E465F /* runningAt80Percent.txt */, + B30682582895F86D003E465F /* crashWhen100PercentSpeed.txt */, + B30682592895F86D003E465F /* differenceWhenRunningFaster.txt */, + ); + path = crashingWhenRunningAtFullspeed; + sourceTree = ""; + }; + B306825A2895F86D003E465F /* powerButtonBug */ = { + isa = PBXGroup; + children = ( + B306825B2895F86D003E465F /* PortDValuesPoweredOff.txt */, + B306825C2895F86D003E465F /* beforePowerDownRegs.txt */, + B306825D2895F86D003E465F /* PortKValuesPoweredOff.txt */, + B306825E2895F86D003E465F /* powerButtonBugCanidates.txt */, + B306825F2895F86D003E465F /* powerButtonBugCause.txt */, + B30682602895F86D003E465F /* duringPowerDownRegs.txt */, + ); + path = powerButtonBug; + sourceTree = ""; + }; + B30682622895F86D003E465F /* shadowTheifBug */ = { + isa = PBXGroup; + children = ( + B30682632895F86D003E465F /* text.txt */, + B30682642895F86D003E465F /* Screenshot_20190426-220702.png */, + ); + path = shadowTheifBug; + sourceTree = ""; + }; + B30682682895F86D003E465F /* .github */ = { + isa = PBXGroup; + children = ( + B30682692895F86D003E465F /* ISSUE_TEMPLATE.md */, + ); + path = .github; + sourceTree = ""; + }; + B306826D2895F86D003E465F /* qtBuildSystem */ = { + isa = PBXGroup; + children = ( + B306826E2895F86D003E465F /* CMakeLists.txt */, + B306826F2895F86D003E465F /* Mu */, + ); + path = qtBuildSystem; + sourceTree = ""; + }; + B306826F2895F86D003E465F /* Mu */ = { + isa = PBXGroup; + children = ( + B30682702895F86D003E465F /* touchscreen.h */, + B30682712895F86D003E465F /* macos */, + B30682742895F86D003E465F /* CMakeLists.txt */, + B30682752895F86D003E465F /* mainwindow.h */, + B30682762895F86D003E465F /* statemanager.h */, + B30682772895F86D003E465F /* settingsmanager.cpp */, + B30682782895F86D003E465F /* debugviewer.ui */, + B30682792895F86D003E465F /* images */, + B306828F2895F86D003E465F /* emuwrapper.cpp */, + B30682902895F86D003E465F /* mainwindow.qrc */, + B30682912895F86D003E465F /* settingsmanager.h */, + B30682922895F86D003E465F /* debugviewer.cpp */, + B30682932895F86D003E465F /* mainwindow.ui */, + B30682942895F86D003E465F /* debugviewer.h */, + B30682952895F86D003E465F /* Mu.pro */, + B30682962895F86D003E465F /* mainwindow.cpp */, + B30682972895F86D003E465F /* touchscreen.cpp */, + B30682982895F86D003E465F /* statemanager.ui */, + B30682992895F86D003E465F /* statemanager.cpp */, + B306829A2895F86D003E465F /* android */, + B30682AE2895F86D003E465F /* windows */, + B30682B12895F86E003E465F /* main.cpp */, + B30682B22895F86E003E465F /* emuwrapper.h */, + B30682B32895F86E003E465F /* settingsmanager.ui */, + ); + path = Mu; + sourceTree = ""; + }; + B30682712895F86D003E465F /* macos */ = { + isa = PBXGroup; + children = ( + B30682722895F86D003E465F /* Mu.icns */, + B30682732895F86D003E465F /* Info.plist */, + ); + path = macos; + sourceTree = ""; + }; + B30682792895F86D003E465F /* images */ = { + isa = PBXGroup; + children = ( + B306827A2895F86D003E465F /* notes.svg */, + B306827B2895F86D003E465F /* reset.svg */, + B306827C2895F86D003E465F /* debugger.svg */, + B306827D2895F86D003E465F /* screenshot.svg */, + B306827E2895F86D003E465F /* todo.svg */, + B306827F2895F86D003E465F /* down.svg */, + B30682802895F86D003E465F /* power.svg */, + B30682812895F86D003E465F /* stateManager.svg */, + B30682822895F86D003E465F /* up.svg */, + B30682832895F86D003E465F /* install.svg */, + B30682842895F86D003E465F /* stop.svg */, + B30682852895F86D003E465F /* voiceMemo.svg */, + B30682862895F86D003E465F /* right.svg */, + B30682872895F86D003E465F /* play.svg */, + B30682882895F86D003E465F /* settingsManager.svg */, + B30682892895F86D003E465F /* boot.svg */, + B306828A2895F86D003E465F /* calendar.svg */, + B306828B2895F86D003E465F /* center.svg */, + B306828C2895F86D003E465F /* pause.svg */, + B306828D2895F86D003E465F /* left.svg */, + B306828E2895F86D003E465F /* addressBook.svg */, + ); + path = images; + sourceTree = ""; + }; + B306829A2895F86D003E465F /* android */ = { + isa = PBXGroup; + children = ( + B306829B2895F86D003E465F /* res */, + B30682A42895F86D003E465F /* AndroidManifest.xml */, + B30682A52895F86D003E465F /* local.properties */, + B30682A62895F86D003E465F /* gradle */, + B30682AA2895F86D003E465F /* gradlew */, + B30682AB2895F86D003E465F /* build.gradle */, + B30682AC2895F86D003E465F /* gradle.properties */, + B30682AD2895F86D003E465F /* gradlew.bat */, + ); + path = android; + sourceTree = ""; + }; + B306829B2895F86D003E465F /* res */ = { + isa = PBXGroup; + children = ( + B306829C2895F86D003E465F /* values */, + B306829E2895F86D003E465F /* drawable-hdpi */, + B30682A02895F86D003E465F /* drawable-ldpi */, + B30682A22895F86D003E465F /* drawable-mdpi */, + ); + path = res; + sourceTree = ""; + }; + B306829C2895F86D003E465F /* values */ = { + isa = PBXGroup; + children = ( + B306829D2895F86D003E465F /* libs.xml */, + ); + path = values; + sourceTree = ""; + }; + B306829E2895F86D003E465F /* drawable-hdpi */ = { + isa = PBXGroup; + children = ( + B306829F2895F86D003E465F /* icon.png */, + ); + path = "drawable-hdpi"; + sourceTree = ""; + }; + B30682A02895F86D003E465F /* drawable-ldpi */ = { + isa = PBXGroup; + children = ( + B30682A12895F86D003E465F /* icon.png */, + ); + path = "drawable-ldpi"; + sourceTree = ""; + }; + B30682A22895F86D003E465F /* drawable-mdpi */ = { + isa = PBXGroup; + children = ( + B30682A32895F86D003E465F /* icon.png */, + ); + path = "drawable-mdpi"; + sourceTree = ""; + }; + B30682A62895F86D003E465F /* gradle */ = { + isa = PBXGroup; + children = ( + B30682A72895F86D003E465F /* wrapper */, + ); + path = gradle; + sourceTree = ""; + }; + B30682A72895F86D003E465F /* wrapper */ = { + isa = PBXGroup; + children = ( + B30682A82895F86D003E465F /* gradle-wrapper.jar */, + B30682A92895F86D003E465F /* gradle-wrapper.properties */, + ); + path = wrapper; + sourceTree = ""; + }; + B30682AE2895F86D003E465F /* windows */ = { + isa = PBXGroup; + children = ( + B30682AF2895F86E003E465F /* app.rc */, + B30682B02895F86E003E465F /* Mu.ico */, + ); + path = windows; + sourceTree = ""; + }; + B30682B42895F86E003E465F /* .idea */ = { + isa = PBXGroup; + children = ( + B30682B52895F86E003E465F /* Mu.iml */, + B30682B62895F86E003E465F /* vcs.xml */, + B30682B72895F86E003E465F /* .gitignore */, + B30682B82895F86E003E465F /* modules.xml */, + B30682B92895F86E003E465F /* misc.xml */, + ); + path = .idea; + sourceTree = ""; + }; + B30682BA2895F86E003E465F /* src */ = { + isa = PBXGroup; + children = ( + B30682F92895F86E003E465F /* makefile.all */, + B30682C62895F86E003E465F /* ads7846.c */, + B30682F42895F86E003E465F /* dbvz.c */, + B30683022895F86E003E465F /* emulator.c */, + B30683002895F86E003E465F /* flx68000.c */, + B30682C72895F86E003E465F /* m5XXBus.c */, + B30682F82895F86E003E465F /* pdiUsbD12.c */, + B30683012895F86E003E465F /* sdCard.c */, + B30682FF2895F86E003E465F /* sed1376.c */, + B30682FE2895F86E003E465F /* silkscreen.c */, + B30682E22895F86E003E465F /* tps65010.c */, + B30682C52895F86E003E465F /* tsc2101.c */, + B30682C32895F86E003E465F /* w86l488.c */, + B30682C42895F86E003E465F /* CMakeLists.txt */, + B30682C82895F86E003E465F /* armv5te */, + B30682F52895F86E003E465F /* audio */, + B30682FA2895F86E003E465F /* fileLauncher */, + B30682BB2895F86E003E465F /* m68k */, + B30682E32895F86E003E465F /* pxa260 */, + ); + path = src; + sourceTree = ""; + }; + B30682BB2895F86E003E465F /* m68k */ = { + isa = PBXGroup; + children = ( + B30682BC2895F86E003E465F /* CMakeLists.txt */, + B30682BD2895F86E003E465F /* m68kcpu.c */, + B30682BE2895F86E003E465F /* m68kdasm.c */, + B30682BF2895F86E003E465F /* m68kopac.c */, + B30682C02895F86E003E465F /* m68kops.c */, + B30682C12895F86E003E465F /* m68kopdm.c */, + B30682C22895F86E003E465F /* m68kopnz.c */, + ); + path = m68k; + sourceTree = ""; + }; + B30682C82895F86E003E465F /* armv5te */ = { + isa = PBXGroup; + children = ( + B30682DF2895F86E003E465F /* asmcode.c */, + B30682CC2895F86E003E465F /* disasm.c */, + B30682D62895F86E003E465F /* emuVarPool.c */, + B30682CE2895F86E003E465F /* mem.c */, + B30682E02895F86E003E465F /* mmu.c */, + B30682D82895F86E003E465F /* translate_x86_64.c */, + B30682D12895F86E003E465F /* translate_x86.c */, + B30682D72895F86E003E465F /* arm_interpreter.cpp */, + B30682CB2895F86E003E465F /* coproc.cpp */, + B30682DD2895F86E003E465F /* cpu.cpp */, + B30682C92895F86E003E465F /* thumb_interpreter.cpp */, + B30682D02895F86E003E465F /* translate_aarch64.cpp */, + B30682CF2895F86E003E465F /* translate_arm.cpp */, + B30682DE2895F86E003E465F /* asmcode_aarch64.S */, + B30682E12895F86E003E465F /* asmcode_arm.S */, + B30682CD2895F86E003E465F /* asmcode_x86_64.S */, + B30682DC2895F86E003E465F /* asmcode_x86.S */, + B30682CA2895F86E003E465F /* CMakeLists.txt */, + B30682D92895F86E003E465F /* os */, + B30682D22895F86E003E465F /* uArm */, + ); + path = armv5te; + sourceTree = ""; + }; + B30682D22895F86E003E465F /* uArm */ = { + isa = PBXGroup; + children = ( + B30682D32895F86E003E465F /* uArmGlue.cpp */, + B30682D42895F86E003E465F /* icache.c */, + B30682D52895F86E003E465F /* CPU_2.c */, + ); + path = uArm; + sourceTree = ""; + }; + B30682D92895F86E003E465F /* os */ = { + isa = PBXGroup; + children = ( + B30682DA2895F86E003E465F /* os-win32.c */, + B30682DB2895F86E003E465F /* os-linux.c */, + ); + path = os; + sourceTree = ""; + }; + B30682E32895F86E003E465F /* pxa260 */ = { + isa = PBXGroup; + children = ( + B30682E62895F86E003E465F /* pxa260_DMA.c */, + B30682F02895F86E003E465F /* pxa260_DSP.c */, + B30682E82895F86E003E465F /* pxa260_GPIO.c */, + B30682E72895F86E003E465F /* pxa260_IC.c */, + B30682EC2895F86E003E465F /* pxa260_LCD.c */, + B30682EA2895F86E003E465F /* pxa260_PwrClk.c */, + B30682ED2895F86E003E465F /* pxa260_RTC.c */, + B30682E42895F86E003E465F /* pxa260_TIMR.c */, + B30682F12895F86E003E465F /* pxa260_UART.c */, + B30682EF2895F86E003E465F /* pxa260.c */, + B30682EE2895F86E003E465F /* pxa260I2c.c */, + B30682F22895F86E003E465F /* pxa260Memctrl.c */, + B30682F32895F86E003E465F /* pxa260Ssp.c */, + B30682EB2895F86E003E465F /* pxa260Timing.c */, + B30682E92895F86E003E465F /* pxa260Udc.c */, + B30682E52895F86E003E465F /* CMakeLists.txt */, + ); + path = pxa260; + sourceTree = ""; + }; + B30682F52895F86E003E465F /* audio */ = { + isa = PBXGroup; + children = ( + B30682F62895F86E003E465F /* CMakeLists.txt */, + B30682F72895F86E003E465F /* blip_buf.c */, + ); + path = audio; + sourceTree = ""; + }; + B30682FA2895F86E003E465F /* fileLauncher */ = { + isa = PBXGroup; + children = ( + B30682FB2895F86E003E465F /* CMakeLists.txt */, + B30682FC2895F86E003E465F /* readme.md */, + B30682FD2895F86E003E465F /* launcher.c */, + ); + path = fileLauncher; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVMu */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVMu.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVMu; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVMuCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVMuCore.h */, + B37022C6287253B300B3F6DA /* PVMuCore.mm */, + ); + path = PVMuCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B30681592895F86B003E465F /* Mu */, + B37022BE287253B300B3F6DA /* PVMu */, + B37022C4287253B300B3F6DA /* PVMuCore */, + B37022BD287253B300B3F6DA /* PVMu-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVMu.framework */, + B30178D3207C901D0051B93D /* libmu.a */, + B3344BC32859E088006E6B3A /* libmu-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVMu.h in Headers */, + B37022C92872554300B3F6DA /* PVMuCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* mu */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "mu" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = mu; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libmu.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* mu-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "mu-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "mu-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libmu-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVMu */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVMu" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVMu; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVMu.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVMu" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVMu */, + B3344B522859E088006E6B3A /* mu-libretro */, + B30178D2207C901D0051B93D /* mu */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3231C1D28966754003CC116 /* pxa260Udc.c in Sources */, + B3231C1628966754003CC116 /* pxa260_DSP.c in Sources */, + B3231C3028966761003CC116 /* m68kopdm.c in Sources */, + B3231C4028966791003CC116 /* emuVarPool.c in Sources */, + B3231C3928966769003CC116 /* launcher.c in Sources */, + B3231BF5289666CE003CC116 /* silkscreen.c in Sources */, + B3231C1B28966754003CC116 /* pxa260_UART.c in Sources */, + B3231BFB289666CE003CC116 /* sed1376.c in Sources */, + B3231C1828966754003CC116 /* pxa260_PwrClk.c in Sources */, + B3231C1C28966754003CC116 /* pxa260Ssp.c in Sources */, + B3231C3128966761003CC116 /* m68kcpu.c in Sources */, + B3231C1528966754003CC116 /* pxa260_GPIO.c in Sources */, + B3231C2F28966761003CC116 /* m68kopac.c in Sources */, + B3231C2E28966761003CC116 /* m68kdasm.c in Sources */, + B3231BF7289666CE003CC116 /* emulator.c in Sources */, + B3231BFD289666CE003CC116 /* ads7846.c in Sources */, + B3231C1A28966754003CC116 /* pxa260_DMA.c in Sources */, + B3231C1928966754003CC116 /* pxa260_LCD.c in Sources */, + B3231BF8289666CE003CC116 /* tsc2101.c in Sources */, + B3231C1028966754003CC116 /* pxa260I2c.c in Sources */, + B3231C3B2896676F003CC116 /* blip_buf.c in Sources */, + B3231C0F28966754003CC116 /* pxa260_TIMR.c in Sources */, + B3231C4128966791003CC116 /* asmcode.c in Sources */, + B3231C3D28966791003CC116 /* mmu.c in Sources */, + B3231C1728966754003CC116 /* pxa260_IC.c in Sources */, + B3231BFA289666CE003CC116 /* flx68000.c in Sources */, + B3231C1428966754003CC116 /* pxa260.c in Sources */, + B3231C3E28966791003CC116 /* disasm.c in Sources */, + B3231C1228966754003CC116 /* pxa260Timing.c in Sources */, + B3231C4728966828003CC116 /* translate_aarch64.cpp in Sources */, + B3231C3F28966791003CC116 /* mem.c in Sources */, + B3231BFC289666CE003CC116 /* dbvz.c in Sources */, + B3231C2D28966761003CC116 /* m68kopnz.c in Sources */, + B3231BF4289666CE003CC116 /* sdCard.c in Sources */, + B3231BF6289666CE003CC116 /* tps65010.c in Sources */, + B3231BF3289666CE003CC116 /* w86l488.c in Sources */, + B3231C1128966754003CC116 /* pxa260_RTC.c in Sources */, + B3231BFE289666CE003CC116 /* m5XXBus.c in Sources */, + B3231BF9289666CE003CC116 /* pdiUsbD12.c in Sources */, + B3231C3228966761003CC116 /* m68kops.c in Sources */, + B3231C1328966754003CC116 /* pxa260Memctrl.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3231C0B289666E2003CC116 /* libretro.c in Sources */, + B3231C0C289666E2003CC116 /* cursors.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVMuCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* mu-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = mu; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = mu; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Mu/include\"", + "\"$(SRCROOT)/Mu/libretroBuildSystem/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ( + "$(inherited)", + "-mno-thumb", + "-mfpu=neon", + "-fno-operator-names", + "-fno-rtti", + "-ffast-math", + "-ftree-vectorize", + "-fno-strict-aliasing", + "-frename-registers", + "-fno-rtti", + "-fpermissive", + "-fno-operator-names", + "-fsingle-precision-constant", + "-DTARGET_NO_NIXPROF", + ); + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVMu/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMu"; + PRODUCT_NAME = PVMu; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = mu; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = "mu-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = "mu-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = "mu-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Mu/include\"", + "\"$(SRCROOT)/Mu/libretroBuildSystem/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Mu/include\"", + "\"$(SRCROOT)/Mu/libretroBuildSystem/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "$(inherited)", + "-mno-thumb", + "-mfpu=neon", + "-fno-operator-names", + "-fno-rtti", + "-ffast-math", + "-ftree-vectorize", + "-fno-strict-aliasing", + "-frename-registers", + "-fno-rtti", + "-fpermissive", + "-fno-operator-names", + "-fsingle-precision-constant", + "-DTARGET_NO_NIXPROF", + ); + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVMu/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMu"; + PRODUCT_NAME = PVMu; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVMu/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMu"; + PRODUCT_NAME = PVMu; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "mu" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "mu-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVMu" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVMu" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/Mu/PVMu.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/Mu/PVMu.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/Mu/PVMu.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/Mu/PVMu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/Mu/PVMu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/Mu/PVMu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/Mu/PVMu.xcodeproj/xcshareddata/xcschemes/PVMu.xcscheme b/Cores/Mu/PVMu.xcodeproj/xcshareddata/xcschemes/PVMu.xcscheme new file mode 100644 index 0000000000..39a54a5f53 --- /dev/null +++ b/Cores/Mu/PVMu.xcodeproj/xcshareddata/xcschemes/PVMu.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Mu/PVMu/Core.plist b/Cores/Mu/PVMu/Core.plist new file mode 100644 index 0000000000..767818f83d --- /dev/null +++ b/Cores/Mu/PVMu/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.Mu + PVPrincipleClass + PVMuCore + PVSupportedSystems + + com.provenance.palmos + + PVProjectName + Mu + PVProjectURL + https://meepingsnesroms.github.io + PVProjectVersion + 0 + + diff --git a/Cores/Mu/PVMu/Info.plist b/Cores/Mu/PVMu/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/Mu/PVMu/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/Mu/PVMu/PVMu.h b/Cores/Mu/PVMu/PVMu.h new file mode 100644 index 0000000000..65b3ed2220 --- /dev/null +++ b/Cores/Mu/PVMu/PVMu.h @@ -0,0 +1,19 @@ +// +// PVMu.h +// PVMu +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVMu. +FOUNDATION_EXPORT double PVMuVersionNumber; + +//! Project version string for PVMu. +FOUNDATION_EXPORT const unsigned char PVMuVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/Mu/PVMuCore/PVMuCore.h b/Cores/Mu/PVMuCore/PVMuCore.h new file mode 100644 index 0000000000..a73311dff4 --- /dev/null +++ b/Cores/Mu/PVMuCore/PVMuCore.h @@ -0,0 +1,43 @@ +// +// PVMuCore.h +// PVMu +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVMuCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/Mu/PVMuCore/PVMuCore.mm b/Cores/Mu/PVMuCore/PVMuCore.mm new file mode 100644 index 0000000000..83092c79b7 --- /dev/null +++ b/Cores/Mu/PVMuCore/PVMuCore.mm @@ -0,0 +1,152 @@ +// +// PVMuCore.m +// PVMu +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVMuCore.h" +#include +//#import "PVMuCore+Controls.h" +//#import "PVMuCore+Audio.h" +//#import "PVMuCore+Video.h" +// +//#import "PVMuCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVMuCore() { + +} + +@end + +#pragma mark - PVMuCore Begin + +@implementation PVMuCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCodes { return NO; } + +- (NSTimeInterval)frameInterval { + return 13.63; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1440, 1080); +} + +- (GLenum)pixelFormat { + return GL_BGRA; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_BYTE; +} + +- (GLenum)internalPixelFormat { + return GL_RGBA; +} + +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/Mupen64Plus-NX/Config.xcconfig b/Cores/Mupen64Plus-NX/Config.xcconfig new file mode 100644 index 0000000000..92d5425f9e --- /dev/null +++ b/Cores/Mupen64Plus-NX/Config.xcconfig @@ -0,0 +1,53 @@ +// +// Config.xcconfig +// PVMupen64Plus-NX +// +// Created by Joseph Mattiello on 9/22/21. +// +// + +// CFLAGS/LDFLAGS All +OTHER_CFLAGS[arch=*] = $(inherited) -pthread -fPIC -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer -fPIC +OTHER_LDFLAGS= $(inherited) +// -EGL < android + +// DEFINES by Arch's +GCC_PREPROCESSOR_DEFINITIONS[arch=*] = $(inherited) __LIBRETRO__ IOS MUPENPLUSAPI=1 TXFILTER_LIB=1 GL_SILENCE_DEPRECATION=1 VFP_HARD=1 NO_ASM MUPENPLUSAPI=1 TXFILTER_LIB=1 M64P_PLUGIN_PROTOTYPES=1 PROVENANCE GCC __LIBRETRO__=1 HAVE_OPENGLES=1 HAVE_OPENGLES3=1 GLES3=1 HAVE_ARM_NEON_ASM_OPTIMIZATIONS=1 HAVE_PARALLEL_RSP=1 PARALLEL_INTEGRATION=1 HAVE_THR_AL=1 HAVE_PARALLEL_RDP=0 PNG_ARM_NEON_OPT=0 JIT_ENABLED=1 HAVE_NEON=1 HAVE_THREADS=1 GCC=1 +// strdup=_strdup strlcpy=_strlcpy __unix__ +GCC_PREPROCESSOR_DEFINITIONS[arch=arm64] = $(inherited) NEW_DYNAREC=4 DYNAREC=3 +GCC_PREPROCESSOR_DEFINITIONS[arch=armv7s] = $(inherited) NEW_DYNAREC=3 +GCC_PREPROCESSOR_DEFINITIONS[arch=armv7] = $(inherited) NEW_DYNAREC=3 +GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64] = $(inherited) NEW_DYNAREC=2 NO_ASM=0 HAVE_ARM_NEON_ASM_OPTIMIZATIONS=0 + +// MacOS Catalyst +GCC_PREPROCESSOR_DEFINITIONS[sdk=macosx*] = $(inherited) OS_MAC_OS_X=1 SDL_VIDEO_OPENGL=1 +OTHER_CFLAGS[sdk=macosx*] = $(inherited) -fno-strict-aliasing -fvisibility=hidden -DGCC -pthread -fPIC -D__unix__ -D__VEC4_OPT -D__NEON_OPT -DX86_ASM +EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*] = $(inherited) 3DMathNeon.cpp gSPNeon.cpp RSP_LoadMatrixNeon.cpp CRC_OPT_NEON.cpp + +// iPhone +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -DOS_IOS -mfpu=neon -D__VEC4_OPT -D__NEON_OPT +EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*] = $(inherited) 3DMath.cpp + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 +OTHER_CFLAGS[sdk=iphonesimulator*] = $(inherited) -DOS_IOS +EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*] = $(inherited) sinc_resampler_neon.S s16_to_float_neon.c s16_to_float_neon.S float_to_s16_neon.c float_to_s16_neon.S 3DMathNeon.cpp gSPNeon.cpp + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -DOS_IOS -mfpu=neon -D__VEC4_OPT +EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvos*] = $(inherited) 3DMath.cpp + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 +OTHER_CFLAGS[sdk=appletvsimulator*] = $(inherited) -DOS_IOS + + + +//X64 +//SOURCES_C += \ +// $(CORE_DIR)/src/device/r4300/new_dynarec/new_dynarec.c +//SOURCES_NASM += \ +// $(CORE_DIR)/src/device/r4300/new_dynarec/x86/linkage_x64.asm + diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NX-Prefix.pch b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NX.xcodeproj/project.pbxproj b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..d8a8521d63 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX.xcodeproj/project.pbxproj @@ -0,0 +1,9757 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B32296E828783C1200585AD8 /* callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A59D2877D0BA0037A946 /* callbacks.c */; }; + B32296E928783C1200585AD8 /* callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A59D2877D0BA0037A946 /* callbacks.c */; }; + B32296EA28783C2300585AD8 /* debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5962877D0BA0037A946 /* debugger.c */; }; + B32296EB28783C2300585AD8 /* frontend.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A58F2877D0BA0037A946 /* frontend.c */; }; + B32296EC28783C2300585AD8 /* debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5962877D0BA0037A946 /* debugger.c */; }; + B32296ED28783C2300585AD8 /* frontend.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A58F2877D0BA0037A946 /* frontend.c */; }; + B32296EE28783C2B00585AD8 /* asm_defines.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5762877D0BA0037A946 /* asm_defines.c */; }; + B32296EF28783C2C00585AD8 /* asm_defines.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5762877D0BA0037A946 /* asm_defines.c */; }; + B32296F028783C5D00585AD8 /* config.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4FD2877D0BA0037A946 /* config.c */; }; + B32296F128783C5D00585AD8 /* config.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4FD2877D0BA0037A946 /* config.c */; }; + B32296F228783C8000585AD8 /* clock_ctime_plus_delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5592877D0BA0037A946 /* clock_ctime_plus_delta.c */; }; + B32296F328783C8000585AD8 /* file_storage.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A56A2877D0BA0037A946 /* file_storage.c */; }; + B32296F428783C8000585AD8 /* dummy_video_capture.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5692877D0BA0037A946 /* dummy_video_capture.c */; }; + B32296F528783C8100585AD8 /* clock_ctime_plus_delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5592877D0BA0037A946 /* clock_ctime_plus_delta.c */; }; + B32296F628783C8100585AD8 /* file_storage.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A56A2877D0BA0037A946 /* file_storage.c */; }; + B32296F728783C8100585AD8 /* dummy_video_capture.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5692877D0BA0037A946 /* dummy_video_capture.c */; }; + B32296F828783C8A00585AD8 /* video_capture_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5662877D0BA0037A946 /* video_capture_backend.c */; }; + B32296F928783C8A00585AD8 /* video_capture_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5662877D0BA0037A946 /* video_capture_backend.c */; }; + B32296FA28783C9700585AD8 /* input_plugin_compat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A55D2877D0BA0037A946 /* input_plugin_compat.c */; }; + B32296FB28783C9700585AD8 /* audio_plugin_compat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A55B2877D0BA0037A946 /* audio_plugin_compat.c */; }; + B32296FC28783C9700585AD8 /* input_plugin_compat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A55D2877D0BA0037A946 /* input_plugin_compat.c */; }; + B32296FD28783C9700585AD8 /* audio_plugin_compat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A55B2877D0BA0037A946 /* audio_plugin_compat.c */; }; + B32296FE28783CC000585AD8 /* cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6232877D0BA0037A946 /* cart.c */; }; + B32296FF28783CC000585AD8 /* sram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6222877D0BA0037A946 /* sram.c */; }; + B322970028783CC000585AD8 /* flashram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A62F2877D0BA0037A946 /* flashram.c */; }; + B322970128783CC000585AD8 /* cart_rom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6262877D0BA0037A946 /* cart_rom.c */; }; + B322970228783CC000585AD8 /* eeprom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A62A2877D0BA0037A946 /* eeprom.c */; }; + B322970328783CC000585AD8 /* af_rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6272877D0BA0037A946 /* af_rtc.c */; }; + B322970428783CC000585AD8 /* is_viewer.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6252877D0BA0037A946 /* is_viewer.c */; }; + B322970528783CC100585AD8 /* cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6232877D0BA0037A946 /* cart.c */; }; + B322970628783CC100585AD8 /* sram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6222877D0BA0037A946 /* sram.c */; }; + B322970728783CC100585AD8 /* flashram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A62F2877D0BA0037A946 /* flashram.c */; }; + B322970828783CC100585AD8 /* cart_rom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6262877D0BA0037A946 /* cart_rom.c */; }; + B322970928783CC100585AD8 /* eeprom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A62A2877D0BA0037A946 /* eeprom.c */; }; + B322970A28783CC100585AD8 /* af_rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6272877D0BA0037A946 /* af_rtc.c */; }; + B322970B28783CC100585AD8 /* is_viewer.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6252877D0BA0037A946 /* is_viewer.c */; }; + B322970C28783CD200585AD8 /* mempak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6392877D0BA0037A946 /* mempak.c */; }; + B322970D28783CD200585AD8 /* game_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A63C2877D0BA0037A946 /* game_controller.c */; }; + B322970E28783CD200585AD8 /* transferpak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6372877D0BA0037A946 /* transferpak.c */; }; + B322970F28783CD200585AD8 /* rumblepak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6362877D0BA0037A946 /* rumblepak.c */; }; + B322971028783CD200585AD8 /* biopak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6342877D0BA0037A946 /* biopak.c */; }; + B322971128783CD200585AD8 /* mempak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6392877D0BA0037A946 /* mempak.c */; }; + B322971228783CD200585AD8 /* game_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A63C2877D0BA0037A946 /* game_controller.c */; }; + B322971328783CD200585AD8 /* transferpak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6372877D0BA0037A946 /* transferpak.c */; }; + B322971428783CD200585AD8 /* rumblepak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6362877D0BA0037A946 /* rumblepak.c */; }; + B322971528783CD200585AD8 /* biopak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6342877D0BA0037A946 /* biopak.c */; }; + B322971628783CE000585AD8 /* disk.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6202877D0BA0037A946 /* disk.c */; }; + B322971728783CE000585AD8 /* dd_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A61F2877D0BA0037A946 /* dd_controller.c */; }; + B322971828783CE100585AD8 /* disk.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6202877D0BA0037A946 /* disk.c */; }; + B322971928783CE100585AD8 /* dd_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A61F2877D0BA0037A946 /* dd_controller.c */; }; + B322971A28783CEA00585AD8 /* device.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6302877D0BA0037A946 /* device.c */; }; + B322971B28783CEA00585AD8 /* device.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6302877D0BA0037A946 /* device.c */; }; + B322971C28783CFD00585AD8 /* m64282fp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6182877D0BA0037A946 /* m64282fp.c */; }; + B322971D28783CFD00585AD8 /* gb_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A61A2877D0BA0037A946 /* gb_cart.c */; }; + B322971E28783CFD00585AD8 /* mbc3_rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A61B2877D0BA0037A946 /* mbc3_rtc.c */; }; + B322971F28783CFD00585AD8 /* m64282fp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6182877D0BA0037A946 /* m64282fp.c */; }; + B322972028783CFD00585AD8 /* gb_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A61A2877D0BA0037A946 /* gb_cart.c */; }; + B322972128783CFD00585AD8 /* mbc3_rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A61B2877D0BA0037A946 /* mbc3_rtc.c */; }; + B322972228783D0C00585AD8 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C72877D0BA0037A946 /* memory.c */; }; + B322972328783D0C00585AD8 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C72877D0BA0037A946 /* memory.c */; }; + B322972428783D1B00585AD8 /* cic.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5BD2877D0BA0037A946 /* cic.c */; }; + B322972528783D1B00585AD8 /* pif.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C32877D0BA0037A946 /* pif.c */; }; + B322972628783D1B00585AD8 /* n64_cic_nus_6105.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C22877D0BA0037A946 /* n64_cic_nus_6105.c */; }; + B322972728783D1B00585AD8 /* bootrom_hle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C42877D0BA0037A946 /* bootrom_hle.c */; }; + B322972828783D1C00585AD8 /* cic.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5BD2877D0BA0037A946 /* cic.c */; }; + B322972928783D1C00585AD8 /* pif.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C32877D0BA0037A946 /* pif.c */; }; + B322972A28783D1C00585AD8 /* n64_cic_nus_6105.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C22877D0BA0037A946 /* n64_cic_nus_6105.c */; }; + B322972B28783D1C00585AD8 /* bootrom_hle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5C42877D0BA0037A946 /* bootrom_hle.c */; }; + B322972C28783D4300585AD8 /* pure_interp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5CE2877D0BA0037A946 /* pure_interp.c */; }; + B322972D28783D4300585AD8 /* tlb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6082877D0BA0037A946 /* tlb.c */; }; + B322972E28783D4300585AD8 /* cp1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6062877D0BA0037A946 /* cp1.c */; }; + B322972F28783D4300585AD8 /* cached_interp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5CD2877D0BA0037A946 /* cached_interp.c */; }; + B322973028783D4300585AD8 /* idec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6092877D0BA0037A946 /* idec.c */; }; + B322973128783D4300585AD8 /* cp0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5D52877D0BA0037A946 /* cp0.c */; }; + B322973228783D4300585AD8 /* interrupt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5D02877D0BA0037A946 /* interrupt.c */; }; + B322973328783D4300585AD8 /* r4300_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5D22877D0BA0037A946 /* r4300_core.c */; }; + B322973428783D4400585AD8 /* pure_interp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5CE2877D0BA0037A946 /* pure_interp.c */; }; + B322973528783D4400585AD8 /* tlb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6082877D0BA0037A946 /* tlb.c */; }; + B322973628783D4400585AD8 /* cp1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6062877D0BA0037A946 /* cp1.c */; }; + B322973728783D4400585AD8 /* cached_interp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5CD2877D0BA0037A946 /* cached_interp.c */; }; + B322973828783D4400585AD8 /* idec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6092877D0BA0037A946 /* idec.c */; }; + B322973928783D4400585AD8 /* cp0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5D52877D0BA0037A946 /* cp0.c */; }; + B322973A28783D4400585AD8 /* interrupt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5D02877D0BA0037A946 /* interrupt.c */; }; + B322973B28783D4400585AD8 /* r4300_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5D22877D0BA0037A946 /* r4300_core.c */; }; + B322973C28783D5400585AD8 /* mi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5A72877D0BA0037A946 /* mi_controller.c */; }; + B322973D28783D5400585AD8 /* ai_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5B72877D0BA0037A946 /* ai_controller.c */; }; + B322973E28783D5400585AD8 /* mi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5A72877D0BA0037A946 /* mi_controller.c */; }; + B322973F28783D5400585AD8 /* ai_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5B72877D0BA0037A946 /* ai_controller.c */; }; + B322974028783D7B00585AD8 /* pi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5B12877D0BA0037A946 /* pi_controller.c */; }; + B322974128783D7B00585AD8 /* rdp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5AC2877D0BA0037A946 /* rdp_core.c */; }; + B322974228783D7B00585AD8 /* rsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5BB2877D0BA0037A946 /* rsp_core.c */; }; + B322974328783D7B00585AD8 /* fb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5A92877D0BA0037A946 /* fb.c */; }; + B322974428783D7B00585AD8 /* ri_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5AF2877D0BA0037A946 /* ri_controller.c */; }; + B322974528783D7B00585AD8 /* si_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5B42877D0BA0037A946 /* si_controller.c */; }; + B322974628783D7B00585AD8 /* vi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5A42877D0BA0037A946 /* vi_controller.c */; }; + B322974728783D7B00585AD8 /* pi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5B12877D0BA0037A946 /* pi_controller.c */; }; + B322974828783D7B00585AD8 /* rdp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5AC2877D0BA0037A946 /* rdp_core.c */; }; + B322974928783D7B00585AD8 /* rsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5BB2877D0BA0037A946 /* rsp_core.c */; }; + B322974A28783D7B00585AD8 /* fb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5A92877D0BA0037A946 /* fb.c */; }; + B322974B28783D7B00585AD8 /* ri_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5AF2877D0BA0037A946 /* ri_controller.c */; }; + B322974C28783D7B00585AD8 /* si_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5B42877D0BA0037A946 /* si_controller.c */; }; + B322974D28783D7B00585AD8 /* vi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5A42877D0BA0037A946 /* vi_controller.c */; }; + B322974E28783D8700585AD8 /* rdram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5CB2877D0BA0037A946 /* rdram.c */; }; + B322974F28783D8800585AD8 /* rdram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5CB2877D0BA0037A946 /* rdram.c */; }; + B322975028783DA000585AD8 /* savestates.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6452877D0BA0037A946 /* savestates.c */; }; + B322975128783DA000585AD8 /* cheat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A64C2877D0BB0037A946 /* cheat.c */; }; + B322975228783DA000585AD8 /* rom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6532877D0BB0037A946 /* rom.c */; }; + B322975328783DA000585AD8 /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6432877D0BA0037A946 /* util.c */; }; + B322975428783DA100585AD8 /* savestates.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6452877D0BA0037A946 /* savestates.c */; }; + B322975528783DA100585AD8 /* cheat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A64C2877D0BB0037A946 /* cheat.c */; }; + B322975628783DA100585AD8 /* rom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6532877D0BB0037A946 /* rom.c */; }; + B322975728783DA100585AD8 /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6432877D0BA0037A946 /* util.c */; }; + B322975828783DB600585AD8 /* dummy_input.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A57C2877D0BA0037A946 /* dummy_input.c */; }; + B322975928783DB600585AD8 /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A57E2877D0BA0037A946 /* plugin.c */; }; + B322975A28783DB600585AD8 /* dummy_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5782877D0BA0037A946 /* dummy_audio.c */; }; + B322975B28783DB600585AD8 /* dummy_input.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A57C2877D0BA0037A946 /* dummy_input.c */; }; + B322975C28783DB600585AD8 /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A57E2877D0BA0037A946 /* plugin.c */; }; + B322975D28783DB600585AD8 /* dummy_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5782877D0BA0037A946 /* dummy_audio.c */; }; + B322975E28783DD000585AD8 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5432877D0BA0037A946 /* unzip.c */; }; + B322975F28783DD000585AD8 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5452877D0BA0037A946 /* ioapi.c */; }; + B322976028783DD000585AD8 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5442877D0BA0037A946 /* zip.c */; }; + B322976128783DD000585AD8 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5432877D0BA0037A946 /* unzip.c */; }; + B322976228783DD000585AD8 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5452877D0BA0037A946 /* ioapi.c */; }; + B322976328783DD000585AD8 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5442877D0BA0037A946 /* zip.c */; }; + B322976428783E2100585AD8 /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A41B2877D0B90037A946 /* pngrutil.c */; }; + B322976528783E2100585AD8 /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4172877D0B90037A946 /* pngmem.c */; }; + B322976628783E2100585AD8 /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A41C2877D0B90037A946 /* pngset.c */; }; + B322976728783E2100585AD8 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4192877D0B90037A946 /* png.c */; }; + B322976828783E2100585AD8 /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A40C2877D0B90037A946 /* pngwutil.c */; }; + B322976928783E2100585AD8 /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A41A2877D0B90037A946 /* pngrtran.c */; }; + B322976A28783E2100585AD8 /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3FE2877D0B90037A946 /* pngrio.c */; }; + B322976B28783E2100585AD8 /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4022877D0B90037A946 /* pngtrans.c */; }; + B322976C28783E2100585AD8 /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A40D2877D0B90037A946 /* pngwtran.c */; }; + B322976D28783E2100585AD8 /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3FF2877D0B90037A946 /* pngerror.c */; }; + B322976E28783E2100585AD8 /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4002877D0B90037A946 /* pngwio.c */; }; + B322976F28783E2100585AD8 /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4102877D0B90037A946 /* pngpread.c */; }; + B322977028783E2100585AD8 /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4052877D0B90037A946 /* pngwrite.c */; }; + B322977128783E2100585AD8 /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4182877D0B90037A946 /* pngget.c */; }; + B322977228783E2100585AD8 /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4122877D0B90037A946 /* pngread.c */; }; + B322977328783E2100585AD8 /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A41B2877D0B90037A946 /* pngrutil.c */; }; + B322977428783E2100585AD8 /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4172877D0B90037A946 /* pngmem.c */; }; + B322977528783E2100585AD8 /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A41C2877D0B90037A946 /* pngset.c */; }; + B322977628783E2100585AD8 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4192877D0B90037A946 /* png.c */; }; + B322977728783E2100585AD8 /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A40C2877D0B90037A946 /* pngwutil.c */; }; + B322977828783E2100585AD8 /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A41A2877D0B90037A946 /* pngrtran.c */; }; + B322977928783E2100585AD8 /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3FE2877D0B90037A946 /* pngrio.c */; }; + B322977A28783E2100585AD8 /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4022877D0B90037A946 /* pngtrans.c */; }; + B322977B28783E2100585AD8 /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A40D2877D0B90037A946 /* pngwtran.c */; }; + B322977C28783E2100585AD8 /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3FF2877D0B90037A946 /* pngerror.c */; }; + B322977D28783E2100585AD8 /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4002877D0B90037A946 /* pngwio.c */; }; + B322977E28783E2100585AD8 /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4102877D0B90037A946 /* pngpread.c */; }; + B322977F28783E2100585AD8 /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4052877D0B90037A946 /* pngwrite.c */; }; + B322978028783E2100585AD8 /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4182877D0B90037A946 /* pngget.c */; }; + B322978128783E2100585AD8 /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4122877D0B90037A946 /* pngread.c */; }; + B322978228783E3900585AD8 /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4312877D0BA0037A946 /* uncompr.c */; }; + B322978328783E3900585AD8 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A42A2877D0BA0037A946 /* zutil.c */; }; + B322978428783E3900585AD8 /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A42E2877D0BA0037A946 /* gzlib.c */; }; + B322978528783E3900585AD8 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4372877D0BA0037A946 /* adler32.c */; }; + B322978628783E3900585AD8 /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4322877D0BA0037A946 /* gzwrite.c */; }; + B322978728783E3900585AD8 /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4252877D0BA0037A946 /* gzread.c */; }; + B322978828783E3900585AD8 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4362877D0BA0037A946 /* inffast.c */; }; + B322978928783E3900585AD8 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4212877D0BA0037A946 /* compress.c */; }; + B322978A28783E3900585AD8 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4222877D0BA0037A946 /* deflate.c */; }; + B322978B28783E3900585AD8 /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4292877D0BA0037A946 /* infback.c */; }; + B322978C28783E3900585AD8 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4302877D0BA0037A946 /* inftrees.c */; }; + B322978D28783E3900585AD8 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4282877D0BA0037A946 /* crc32.c */; }; + B322978E28783E3900585AD8 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4202877D0BA0037A946 /* inflate.c */; }; + B322978F28783E3900585AD8 /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4342877D0BA0037A946 /* gzclose.c */; }; + B322979028783E3900585AD8 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4332877D0BA0037A946 /* trees.c */; }; + B322979128783E3900585AD8 /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4312877D0BA0037A946 /* uncompr.c */; }; + B322979228783E3900585AD8 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A42A2877D0BA0037A946 /* zutil.c */; }; + B322979328783E3900585AD8 /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A42E2877D0BA0037A946 /* gzlib.c */; }; + B322979428783E3900585AD8 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4372877D0BA0037A946 /* adler32.c */; }; + B322979528783E3900585AD8 /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4322877D0BA0037A946 /* gzwrite.c */; }; + B322979628783E3900585AD8 /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4252877D0BA0037A946 /* gzread.c */; }; + B322979728783E3900585AD8 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4362877D0BA0037A946 /* inffast.c */; }; + B322979828783E3900585AD8 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4212877D0BA0037A946 /* compress.c */; }; + B322979928783E3900585AD8 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4222877D0BA0037A946 /* deflate.c */; }; + B322979A28783E3900585AD8 /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4292877D0BA0037A946 /* infback.c */; }; + B322979B28783E3900585AD8 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4302877D0BA0037A946 /* inftrees.c */; }; + B322979C28783E3900585AD8 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4282877D0BA0037A946 /* crc32.c */; }; + B322979D28783E3900585AD8 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4202877D0BA0037A946 /* inflate.c */; }; + B322979E28783E3900585AD8 /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4342877D0BA0037A946 /* gzclose.c */; }; + B322979F28783E3900585AD8 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4332877D0BA0037A946 /* trees.c */; }; + B32297A128783EB600585AD8 /* osal_files_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B32297A028783EB600585AD8 /* osal_files_ios.mm */; }; + B32297A228783EB600585AD8 /* osal_files_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B32297A028783EB600585AD8 /* osal_files_ios.mm */; }; + B32297A328783F1600585AD8 /* new_dynarec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5F02877D0BA0037A946 /* new_dynarec.c */; }; + B32297A428783F1600585AD8 /* linkage_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6032877D0BA0037A946 /* linkage_arm64.S */; }; + B32297A528783F1600585AD8 /* new_dynarec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A5F02877D0BA0037A946 /* new_dynarec.c */; }; + B32297A628783F1600585AD8 /* linkage_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A6032877D0BA0037A946 /* linkage_arm64.S */; }; + B32297A728783F5B00585AD8 /* memalign.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3442877D0B90037A946 /* memalign.c */; }; + B32297A828783F5B00585AD8 /* memalign.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3442877D0B90037A946 /* memalign.c */; }; + B32297A928783F7500585AD8 /* emulate_game_controller_via_libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4F92877D0BA0037A946 /* emulate_game_controller_via_libretro.c */; }; + B32297AA28783F7500585AD8 /* emulate_game_controller_via_libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4F92877D0BA0037A946 /* emulate_game_controller_via_libretro.c */; }; + B32297AB28783F9600585AD8 /* audio_resampler.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AE2877D0B90037A946 /* audio_resampler.c */; }; + B32297AC28783F9600585AD8 /* sinc_resampler.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AB2877D0B90037A946 /* sinc_resampler.c */; }; + B32297AD28783F9600585AD8 /* nearest_resampler.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AC2877D0B90037A946 /* nearest_resampler.c */; }; + B32297AE28783F9600585AD8 /* audio_resampler.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AE2877D0B90037A946 /* audio_resampler.c */; }; + B32297AF28783F9600585AD8 /* sinc_resampler.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AB2877D0B90037A946 /* sinc_resampler.c */; }; + B32297B028783F9600585AD8 /* nearest_resampler.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AC2877D0B90037A946 /* nearest_resampler.c */; }; + B32297B128783FC100585AD8 /* audio_backend_libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4F82877D0BA0037A946 /* audio_backend_libretro.c */; }; + B32297B228783FC200585AD8 /* audio_backend_libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4F82877D0BA0037A946 /* audio_backend_libretro.c */; }; + B32297B328783FD800585AD8 /* config_file_userdata.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2652877D0B90037A946 /* config_file_userdata.c */; }; + B32297B428783FD800585AD8 /* config_file.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A26F2877D0B90037A946 /* config_file.c */; }; + B32297B528783FD800585AD8 /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2642877D0B90037A946 /* file_path.c */; }; + B32297B628783FD800585AD8 /* file_path_io.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2632877D0B90037A946 /* file_path_io.c */; }; + B32297B728783FD900585AD8 /* config_file_userdata.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2652877D0B90037A946 /* config_file_userdata.c */; }; + B32297B828783FD900585AD8 /* config_file.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A26F2877D0B90037A946 /* config_file.c */; }; + B32297B928783FD900585AD8 /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2642877D0B90037A946 /* file_path.c */; }; + B32297BA28783FD900585AD8 /* file_path_io.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2632877D0B90037A946 /* file_path_io.c */; }; + B32297BB28783FE200585AD8 /* rtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3462877D0B90037A946 /* rtime.c */; }; + B32297BC28783FE300585AD8 /* rtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3462877D0B90037A946 /* rtime.c */; }; + B32297BD28783FF100585AD8 /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2092877D0B90037A946 /* compat_strl.c */; }; + B32297BE28783FF100585AD8 /* compat_strcasestr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A20B2877D0B90037A946 /* compat_strcasestr.c */; }; + B32297BF28783FF100585AD8 /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A20A2877D0B90037A946 /* compat_posix_string.c */; }; + B32297C028783FF100585AD8 /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2092877D0B90037A946 /* compat_strl.c */; }; + B32297C128783FF100585AD8 /* compat_strcasestr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A20B2877D0B90037A946 /* compat_strcasestr.c */; }; + B32297C228783FF100585AD8 /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A20A2877D0B90037A946 /* compat_posix_string.c */; }; + B32297C328783FFF00585AD8 /* s16_to_float.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B12877D0B90037A946 /* s16_to_float.c */; }; + B32297C428783FFF00585AD8 /* float_to_s16_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B22877D0B90037A946 /* float_to_s16_neon.c */; }; + B32297C528783FFF00585AD8 /* s16_to_float.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B12877D0B90037A946 /* s16_to_float.c */; }; + B32297C628783FFF00585AD8 /* float_to_s16_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B22877D0B90037A946 /* float_to_s16_neon.c */; }; + B32297C72878400900585AD8 /* float_to_s16_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B52877D0B90037A946 /* float_to_s16_neon.S */; }; + B32297C82878400900585AD8 /* s16_to_float_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B62877D0B90037A946 /* s16_to_float_neon.S */; }; + B32297C92878400900585AD8 /* float_to_s16.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B42877D0B90037A946 /* float_to_s16.c */; }; + B32297CA2878400900585AD8 /* s16_to_float_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B32877D0B90037A946 /* s16_to_float_neon.c */; }; + B32297CB2878400A00585AD8 /* float_to_s16_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B52877D0B90037A946 /* float_to_s16_neon.S */; }; + B32297CC2878400A00585AD8 /* s16_to_float_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B62877D0B90037A946 /* s16_to_float_neon.S */; }; + B32297CD2878400A00585AD8 /* float_to_s16.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B42877D0B90037A946 /* float_to_s16.c */; }; + B32297CE2878400A00585AD8 /* s16_to_float_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3B32877D0B90037A946 /* s16_to_float_neon.c */; }; + B32297CF2878401100585AD8 /* features_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A33B2877D0B90037A946 /* features_cpu.c */; }; + B32297D02878401200585AD8 /* features_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A33B2877D0B90037A946 /* features_cpu.c */; }; + B32297D12878401C00585AD8 /* string_list.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A25F2877D0B90037A946 /* string_list.c */; }; + B32297D22878401C00585AD8 /* string_list.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A25F2877D0B90037A946 /* string_list.c */; }; + B32297D32878402500585AD8 /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2002877D0B90037A946 /* encoding_utf.c */; }; + B32297D42878402600585AD8 /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2002877D0B90037A946 /* encoding_utf.c */; }; + B32297D52878403300585AD8 /* vfs_implementation.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2022877D0B90037A946 /* vfs_implementation.c */; }; + B32297D62878403400585AD8 /* vfs_implementation.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2022877D0B90037A946 /* vfs_implementation.c */; }; + B32297D72878403E00585AD8 /* file_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A27D2877D0B90037A946 /* file_stream.c */; }; + B32297D82878403E00585AD8 /* file_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A27D2877D0B90037A946 /* file_stream.c */; }; + B32297D92878404B00585AD8 /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A20F2877D0B90037A946 /* fopen_utf8.c */; }; + B32297DA2878404B00585AD8 /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A20F2877D0B90037A946 /* fopen_utf8.c */; }; + B32297DB2878405400585AD8 /* glsm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3832877D0B90037A946 /* glsm.c */; }; + B32297DC2878405400585AD8 /* glsm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3832877D0B90037A946 /* glsm.c */; }; + B32297DD287840D300585AD8 /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DB62877D0B70037A946 /* convert.cpp */; }; + B32297DE287840D300585AD8 /* CombinerKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF92877D0B70037A946 /* CombinerKey.cpp */; }; + B32297DF287840D300585AD8 /* DepthBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF22877D0B70037A946 /* DepthBuffer.cpp */; }; + B32297E0287840D300585AD8 /* DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF72877D0B70037A946 /* DisplayWindow.cpp */; }; + B32297E1287840D300585AD8 /* DebugDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E222877D0B70037A946 /* DebugDump.cpp */; }; + B32297E2287840D300585AD8 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E652877D0B70037A946 /* Debugger.cpp */; }; + B32297E3287840D300585AD8 /* Combiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E5E2877D0B70037A946 /* Combiner.cpp */; }; + B32297E4287840D300585AD8 /* CommonPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E252877D0B70037A946 /* CommonPluginAPI.cpp */; }; + B32297E5287840D300585AD8 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E212877D0B70037A946 /* Config.cpp */; }; + B32297E6287840D300585AD8 /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DB62877D0B70037A946 /* convert.cpp */; }; + B32297E7287840D300585AD8 /* CombinerKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF92877D0B70037A946 /* CombinerKey.cpp */; }; + B32297E8287840D300585AD8 /* DepthBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF22877D0B70037A946 /* DepthBuffer.cpp */; }; + B32297E9287840D300585AD8 /* DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF72877D0B70037A946 /* DisplayWindow.cpp */; }; + B32297EA287840D300585AD8 /* DebugDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E222877D0B70037A946 /* DebugDump.cpp */; }; + B32297EB287840D300585AD8 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E652877D0B70037A946 /* Debugger.cpp */; }; + B32297EC287840D300585AD8 /* Combiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E5E2877D0B70037A946 /* Combiner.cpp */; }; + B32297ED287840D300585AD8 /* CommonPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E252877D0B70037A946 /* CommonPluginAPI.cpp */; }; + B32297EE287840D300585AD8 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E212877D0B70037A946 /* Config.cpp */; }; + B32297EF28789D9800585AD8 /* glsym_es3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2532877D0B90037A946 /* glsym_es3.c */; }; + B32297F028789D9900585AD8 /* glsym_es3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2532877D0B90037A946 /* glsym_es3.c */; }; + B32297F128789DB900585AD8 /* 3DMathNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E612877D0B70037A946 /* 3DMathNeon.cpp */; }; + B32297F228789DB900585AD8 /* 3DMathNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E612877D0B70037A946 /* 3DMathNeon.cpp */; }; + B32297F328789DF600585AD8 /* gSPNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E602877D0B70037A946 /* gSPNeon.cpp */; }; + B32297F428789DFF00585AD8 /* gSPNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E602877D0B70037A946 /* gSPNeon.cpp */; }; + B32297F528789E4D00585AD8 /* sinc_resampler_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AD2877D0B90037A946 /* sinc_resampler_neon.S */; }; + B32297F628789E4E00585AD8 /* sinc_resampler_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3AD2877D0B90037A946 /* sinc_resampler_neon.S */; }; + B32297F728789F9500585AD8 /* CRC32_ARMV8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E672877D0B70037A946 /* CRC32_ARMV8.cpp */; }; + B32297F828789F9500585AD8 /* CRC32_ARMV8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E672877D0B70037A946 /* CRC32_ARMV8.cpp */; }; + B32297F928789FB000585AD8 /* libco.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3DD2877D0B90037A946 /* libco.c */; }; + B32297FA28789FB000585AD8 /* libco.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3DD2877D0B90037A946 /* libco.c */; }; + B32297FB28789FF000585AD8 /* parallel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1402877D0B80037A946 /* parallel.cpp */; }; + B32297FC28789FF100585AD8 /* parallel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1402877D0B80037A946 /* parallel.cpp */; }; + B32297FD2878A00600585AD8 /* rsp_disasm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1942877D0B80037A946 /* rsp_disasm.cpp */; }; + B32297FE2878A00600585AD8 /* rsp_disasm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1942877D0B80037A946 /* rsp_disasm.cpp */; }; + B32297FF2878A01500585AD8 /* jit_allocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1472877D0B80037A946 /* jit_allocator.cpp */; }; + B32298002878A01600585AD8 /* jit_allocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1472877D0B80037A946 /* jit_allocator.cpp */; }; + B32298012878A04700585AD8 /* rsp_core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1B22877D0B80037A946 /* rsp_core.cpp */; }; + B32298022878A04700585AD8 /* rsp_core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1B22877D0B80037A946 /* rsp_core.cpp */; }; + B32298032878A05200585AD8 /* reciprocal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1BD2877D0B80037A946 /* reciprocal.cpp */; }; + B32298042878A05200585AD8 /* reciprocal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1BD2877D0B80037A946 /* reciprocal.cpp */; }; + B32298052878A05700585AD8 /* vfunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1BF2877D0B80037A946 /* vfunctions.cpp */; }; + B32298062878A05800585AD8 /* vfunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1BF2877D0B80037A946 /* vfunctions.cpp */; }; + B32298072878A05D00585AD8 /* cp0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1C22877D0B80037A946 /* cp0.cpp */; }; + B32298082878A05D00585AD8 /* cp0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1C22877D0B80037A946 /* cp0.cpp */; }; + B32298092878A06100585AD8 /* ls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1C32877D0B80037A946 /* ls.cpp */; }; + B322980A2878A06200585AD8 /* ls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1C32877D0B80037A946 /* ls.cpp */; }; + B322980B2878A06700585AD8 /* cp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1C42877D0B80037A946 /* cp2.cpp */; }; + B322980C2878A06700585AD8 /* cp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1C42877D0B80037A946 /* cp2.cpp */; }; + B322980D2878A09200585AD8 /* rsp_jit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1902877D0B80037A946 /* rsp_jit.cpp */; }; + B322980E2878A09200585AD8 /* rsp_jit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A1902877D0B80037A946 /* rsp_jit.cpp */; }; + B322980F2878A09C00585AD8 /* jit_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0872877D0B80037A946 /* jit_disasm.c */; }; + B32298102878A09C00585AD8 /* jit_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0872877D0B80037A946 /* jit_disasm.c */; }; + B32298112878A0D600585AD8 /* jit_note.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0992877D0B80037A946 /* jit_note.c */; }; + B32298122878A0D600585AD8 /* lightning.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0AD2877D0B80037A946 /* lightning.c */; }; + B32298132878A0D600585AD8 /* jit_memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0802877D0B80037A946 /* jit_memory.c */; }; + B32298142878A0D600585AD8 /* jit_size.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0842877D0B80037A946 /* jit_size.c */; }; + B32298152878A0D600585AD8 /* jit_names.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0AA2877D0B80037A946 /* jit_names.c */; }; + B32298162878A0D600585AD8 /* jit_print.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0A12877D0B80037A946 /* jit_print.c */; }; + B32298172878A0D600585AD8 /* jit_note.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0992877D0B80037A946 /* jit_note.c */; }; + B32298182878A0D600585AD8 /* lightning.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0AD2877D0B80037A946 /* lightning.c */; }; + B32298192878A0D600585AD8 /* jit_memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0802877D0B80037A946 /* jit_memory.c */; }; + B322981A2878A0D600585AD8 /* jit_size.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0842877D0B80037A946 /* jit_size.c */; }; + B322981B2878A0D600585AD8 /* jit_names.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0AA2877D0B80037A946 /* jit_names.c */; }; + B322981C2878A0D600585AD8 /* jit_print.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0A12877D0B80037A946 /* jit_print.c */; }; + B322981D2878A3C900585AD8 /* alist_nead.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A03B2877D0B80037A946 /* alist_nead.c */; }; + B322981E2878A3C900585AD8 /* musyx.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0372877D0B80037A946 /* musyx.c */; }; + B322981F2878A3C900585AD8 /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0472877D0B80037A946 /* audio.c */; }; + B32298202878A3C900585AD8 /* alist.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A03F2877D0B80037A946 /* alist.c */; }; + B32298212878A3C900585AD8 /* re2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0352877D0B80037A946 /* re2.c */; }; + B32298222878A3C900585AD8 /* mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0452877D0B80037A946 /* mp3.c */; }; + B32298232878A3C900585AD8 /* alist_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A02D2877D0B80037A946 /* alist_audio.c */; }; + B32298242878A3C900585AD8 /* hle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0332877D0B80037A946 /* hle.c */; }; + B32298252878A3C900585AD8 /* alist_naudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0402877D0B80037A946 /* alist_naudio.c */; }; + B32298262878A3C900585AD8 /* hvqm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0392877D0B80037A946 /* hvqm.c */; }; + B32298272878A3C900585AD8 /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A02E2877D0B80037A946 /* jpeg.c */; }; + B32298282878A3C900585AD8 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A02F2877D0B80037A946 /* memory.c */; }; + B32298292878A3C900585AD8 /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0412877D0B80037A946 /* plugin.c */; }; + B322982A2878A3C900585AD8 /* cicx105.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A03C2877D0B80037A946 /* cicx105.c */; }; + B322982B2878A3CA00585AD8 /* alist_nead.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A03B2877D0B80037A946 /* alist_nead.c */; }; + B322982C2878A3CA00585AD8 /* musyx.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0372877D0B80037A946 /* musyx.c */; }; + B322982D2878A3CA00585AD8 /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0472877D0B80037A946 /* audio.c */; }; + B322982E2878A3CA00585AD8 /* alist.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A03F2877D0B80037A946 /* alist.c */; }; + B322982F2878A3CA00585AD8 /* re2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0352877D0B80037A946 /* re2.c */; }; + B32298302878A3CA00585AD8 /* mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0452877D0B80037A946 /* mp3.c */; }; + B32298312878A3CA00585AD8 /* alist_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A02D2877D0B80037A946 /* alist_audio.c */; }; + B32298322878A3CA00585AD8 /* hle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0332877D0B80037A946 /* hle.c */; }; + B32298332878A3CA00585AD8 /* alist_naudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0402877D0B80037A946 /* alist_naudio.c */; }; + B32298342878A3CA00585AD8 /* hvqm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0392877D0B80037A946 /* hvqm.c */; }; + B32298352878A3CA00585AD8 /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A02E2877D0B80037A946 /* jpeg.c */; }; + B32298362878A3CA00585AD8 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A02F2877D0B80037A946 /* memory.c */; }; + B32298372878A3CA00585AD8 /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0412877D0B80037A946 /* plugin.c */; }; + B32298382878A3CA00585AD8 /* cicx105.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A03C2877D0B80037A946 /* cicx105.c */; }; + B32298392878A40200585AD8 /* TxReSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E542877D0B70037A946 /* TxReSample.cpp */; }; + B322983A2878A40200585AD8 /* TxFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E442877D0B70037A946 /* TxFilter.cpp */; }; + B322983B2878A40200585AD8 /* TxTexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E362877D0B70037A946 /* TxTexCache.cpp */; }; + B322983C2878A40200585AD8 /* TextureFilters_2xsai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E562877D0B70037A946 /* TextureFilters_2xsai.cpp */; }; + B322983D2878A40200585AD8 /* TxHiResNoCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E552877D0B70037A946 /* TxHiResNoCache.cpp */; }; + B322983E2878A40200585AD8 /* TxFilterExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E582877D0B70037A946 /* TxFilterExport.cpp */; }; + B322983F2878A40200585AD8 /* TxHiResLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E432877D0B70037A946 /* TxHiResLoader.cpp */; }; + B32298402878A40200585AD8 /* TxHiResCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E462877D0B70037A946 /* TxHiResCache.cpp */; }; + B32298412878A40200585AD8 /* TxDbg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E392877D0B70037A946 /* TxDbg.cpp */; }; + B32298422878A40200585AD8 /* TxImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E292877D0B70037A946 /* TxImage.cpp */; }; + B32298432878A40200585AD8 /* TextureFilters_hq4x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E332877D0B70037A946 /* TextureFilters_hq4x.cpp */; }; + B32298442878A40200585AD8 /* TxCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E492877D0B70037A946 /* TxCache.cpp */; }; + B32298452878A40200585AD8 /* TextureFilters_hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E3B2877D0B70037A946 /* TextureFilters_hq2x.cpp */; }; + B32298462878A40200585AD8 /* TextureFilters_xbrz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E342877D0B70037A946 /* TextureFilters_xbrz.cpp */; }; + B32298472878A40200585AD8 /* TextureFilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E2A2877D0B70037A946 /* TextureFilters.cpp */; }; + B32298482878A40200585AD8 /* TxQuantize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E3D2877D0B70037A946 /* TxQuantize.cpp */; }; + B32298492878A40200585AD8 /* TxUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E4A2877D0B70037A946 /* TxUtil.cpp */; }; + B322984A2878A40300585AD8 /* TxReSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E542877D0B70037A946 /* TxReSample.cpp */; }; + B322984B2878A40300585AD8 /* TxFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E442877D0B70037A946 /* TxFilter.cpp */; }; + B322984C2878A40300585AD8 /* TxTexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E362877D0B70037A946 /* TxTexCache.cpp */; }; + B322984D2878A40300585AD8 /* TextureFilters_2xsai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E562877D0B70037A946 /* TextureFilters_2xsai.cpp */; }; + B322984E2878A40300585AD8 /* TxHiResNoCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E552877D0B70037A946 /* TxHiResNoCache.cpp */; }; + B322984F2878A40300585AD8 /* TxFilterExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E582877D0B70037A946 /* TxFilterExport.cpp */; }; + B32298502878A40300585AD8 /* TxHiResLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E432877D0B70037A946 /* TxHiResLoader.cpp */; }; + B32298512878A40300585AD8 /* TxHiResCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E462877D0B70037A946 /* TxHiResCache.cpp */; }; + B32298522878A40300585AD8 /* TxDbg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E392877D0B70037A946 /* TxDbg.cpp */; }; + B32298532878A40300585AD8 /* TxImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E292877D0B70037A946 /* TxImage.cpp */; }; + B32298542878A40300585AD8 /* TextureFilters_hq4x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E332877D0B70037A946 /* TextureFilters_hq4x.cpp */; }; + B32298552878A40300585AD8 /* TxCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E492877D0B70037A946 /* TxCache.cpp */; }; + B32298562878A40300585AD8 /* TextureFilters_hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E3B2877D0B70037A946 /* TextureFilters_hq2x.cpp */; }; + B32298572878A40300585AD8 /* TextureFilters_xbrz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E342877D0B70037A946 /* TextureFilters_xbrz.cpp */; }; + B32298582878A40300585AD8 /* TextureFilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E2A2877D0B70037A946 /* TextureFilters.cpp */; }; + B32298592878A40300585AD8 /* TxQuantize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E3D2877D0B70037A946 /* TxQuantize.cpp */; }; + B322985A2878A40300585AD8 /* TxUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E4A2877D0B70037A946 /* TxUtil.cpp */; }; + B322985B2878A41000585AD8 /* RSP_LoadMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE72877D0B70037A946 /* RSP_LoadMatrix.cpp */; }; + B322985C2878A41100585AD8 /* RSP_LoadMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE72877D0B70037A946 /* RSP_LoadMatrix.cpp */; }; + B322985D2878A47500585AD8 /* VI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89F572877D0B70037A946 /* VI.cpp */; }; + B322985E2878A47500585AD8 /* TextDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DAF2877D0B70037A946 /* TextDrawer.cpp */; }; + B322985F2878A47500585AD8 /* FrameBufferInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC92877D0B70037A946 /* FrameBufferInfo.cpp */; }; + B32298602878A47500585AD8 /* gSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DAE2877D0B70037A946 /* gSP.cpp */; }; + B32298612878A47500585AD8 /* TexrectDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EEA2877D0B70037A946 /* TexrectDrawer.cpp */; }; + B32298622878A47500585AD8 /* ZlutTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EE82877D0B70037A946 /* ZlutTexture.cpp */; }; + B32298632878A47500585AD8 /* TextureFilterHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF82877D0B70037A946 /* TextureFilterHandler.cpp */; }; + B32298642878A47500585AD8 /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE42877D0B70037A946 /* FrameBuffer.cpp */; }; + B32298652878A47500585AD8 /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D3A2877D0B60037A946 /* Performance.cpp */; }; + B32298662878A47500585AD8 /* PaletteTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DFB2877D0B70037A946 /* PaletteTexture.cpp */; }; + B32298672878A47500585AD8 /* DisplayLoadProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF12877D0B70037A946 /* DisplayLoadProgress.cpp */; }; + B32298682878A47500585AD8 /* GBI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DDC2877D0B70037A946 /* GBI.cpp */; }; + B32298692878A47500585AD8 /* PostProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC22877D0B70037A946 /* PostProcessor.cpp */; }; + B322986A2878A47500585AD8 /* RDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D042877D0B60037A946 /* RDP.cpp */; }; + B322986B2878A47500585AD8 /* RSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E6D2877D0B70037A946 /* RSP.cpp */; }; + B322986C2878A47500585AD8 /* gDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EF22877D0B70037A946 /* gDP.cpp */; }; + B322986D2878A47500585AD8 /* N64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89F552877D0B70037A946 /* N64.cpp */; }; + B322986E2878A47500585AD8 /* GLideN64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DB22877D0B70037A946 /* GLideN64.cpp */; }; + B322986F2878A47500585AD8 /* SoftwareRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC82877D0B70037A946 /* SoftwareRender.cpp */; }; + B32298702878A47500585AD8 /* Textures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DAC2877D0B70037A946 /* Textures.cpp */; }; + B32298712878A47500585AD8 /* VI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89F572877D0B70037A946 /* VI.cpp */; }; + B32298722878A47500585AD8 /* TextDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DAF2877D0B70037A946 /* TextDrawer.cpp */; }; + B32298732878A47500585AD8 /* FrameBufferInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC92877D0B70037A946 /* FrameBufferInfo.cpp */; }; + B32298742878A47500585AD8 /* gSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DAE2877D0B70037A946 /* gSP.cpp */; }; + B32298752878A47500585AD8 /* TexrectDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EEA2877D0B70037A946 /* TexrectDrawer.cpp */; }; + B32298762878A47500585AD8 /* ZlutTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EE82877D0B70037A946 /* ZlutTexture.cpp */; }; + B32298772878A47500585AD8 /* TextureFilterHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF82877D0B70037A946 /* TextureFilterHandler.cpp */; }; + B32298782878A47500585AD8 /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE42877D0B70037A946 /* FrameBuffer.cpp */; }; + B32298792878A47500585AD8 /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D3A2877D0B60037A946 /* Performance.cpp */; }; + B322987A2878A47500585AD8 /* PaletteTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DFB2877D0B70037A946 /* PaletteTexture.cpp */; }; + B322987B2878A47500585AD8 /* DisplayLoadProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF12877D0B70037A946 /* DisplayLoadProgress.cpp */; }; + B322987C2878A47500585AD8 /* GBI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DDC2877D0B70037A946 /* GBI.cpp */; }; + B322987D2878A47500585AD8 /* PostProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC22877D0B70037A946 /* PostProcessor.cpp */; }; + B322987E2878A47500585AD8 /* RDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D042877D0B60037A946 /* RDP.cpp */; }; + B322987F2878A47500585AD8 /* RSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E6D2877D0B70037A946 /* RSP.cpp */; }; + B32298802878A47500585AD8 /* gDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EF22877D0B70037A946 /* gDP.cpp */; }; + B32298812878A47500585AD8 /* N64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89F552877D0B70037A946 /* N64.cpp */; }; + B32298822878A47500585AD8 /* GLideN64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DB22877D0B70037A946 /* GLideN64.cpp */; }; + B32298832878A47500585AD8 /* SoftwareRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC82877D0B70037A946 /* SoftwareRender.cpp */; }; + B32298842878A47500585AD8 /* Textures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DAC2877D0B70037A946 /* Textures.cpp */; }; + B32298852878A49800585AD8 /* mupen64plus_DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E882877D0B70037A946 /* mupen64plus_DisplayWindow.cpp */; }; + B32298862878A49800585AD8 /* mupen64plus_DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E882877D0B70037A946 /* mupen64plus_DisplayWindow.cpp */; }; + B32298872878A4C500585AD8 /* CommonAPIImpl_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF52877D0B70037A946 /* CommonAPIImpl_common.cpp */; }; + B32298882878A4C500585AD8 /* CommonAPIImpl_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DF52877D0B70037A946 /* CommonAPIImpl_common.cpp */; }; + B32298892878A4D500585AD8 /* NoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC32877D0B70037A946 /* NoiseTexture.cpp */; }; + B322988A2878A4D500585AD8 /* NoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC32877D0B70037A946 /* NoiseTexture.cpp */; }; + B322988B2878A4DF00585AD8 /* ClipPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DEA2877D0B70037A946 /* ClipPolygon.cpp */; }; + B322988C2878A4DF00585AD8 /* ClipPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DEA2877D0B70037A946 /* ClipPolygon.cpp */; }; + B322988D2878A4EC00585AD8 /* DepthBufferRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE92877D0B70037A946 /* DepthBufferRender.cpp */; }; + B322988E2878A4ED00585AD8 /* DepthBufferRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE92877D0B70037A946 /* DepthBufferRender.cpp */; }; + B322988F2878A4FD00585AD8 /* BlueNoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DB82877D0B70037A946 /* BlueNoiseTexture.cpp */; }; + B32298902878A4FD00585AD8 /* RDRAMtoColorBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DBB2877D0B70037A946 /* RDRAMtoColorBuffer.cpp */; }; + B32298912878A4FD00585AD8 /* ColorBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC02877D0B70037A946 /* ColorBufferToRDRAM.cpp */; }; + B32298922878A4FD00585AD8 /* DepthBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DBA2877D0B70037A946 /* DepthBufferToRDRAM.cpp */; }; + B32298932878A4FD00585AD8 /* BlueNoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DB82877D0B70037A946 /* BlueNoiseTexture.cpp */; }; + B32298942878A4FD00585AD8 /* RDRAMtoColorBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DBB2877D0B70037A946 /* RDRAMtoColorBuffer.cpp */; }; + B32298952878A4FD00585AD8 /* ColorBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DC02877D0B70037A946 /* ColorBufferToRDRAM.cpp */; }; + B32298962878A4FD00585AD8 /* DepthBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DBA2877D0B70037A946 /* DepthBufferToRDRAM.cpp */; }; + B32298972878A51700585AD8 /* CombinerProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EE72877D0B70037A946 /* CombinerProgram.cpp */; }; + B32298982878A51700585AD8 /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E7E2877D0B70037A946 /* Context.cpp */; }; + B32298992878A51700585AD8 /* ObjectHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E7C2877D0B70037A946 /* ObjectHandle.cpp */; }; + B322989A2878A51700585AD8 /* ColorBufferReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E832877D0B70037A946 /* ColorBufferReader.cpp */; }; + B322989B2878A51800585AD8 /* CombinerProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EE72877D0B70037A946 /* CombinerProgram.cpp */; }; + B322989C2878A51800585AD8 /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E7E2877D0B70037A946 /* Context.cpp */; }; + B322989D2878A51800585AD8 /* ObjectHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E7C2877D0B70037A946 /* ObjectHandle.cpp */; }; + B322989E2878A51800585AD8 /* ColorBufferReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E832877D0B70037A946 /* ColorBufferReader.cpp */; }; + B322989F2878A52E00585AD8 /* GraphicsDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E6B2877D0B70037A946 /* GraphicsDrawer.cpp */; }; + B32298A02878A52E00585AD8 /* GraphicsDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E6B2877D0B70037A946 /* GraphicsDrawer.cpp */; }; + B32298A12878A56200585AD8 /* opengl_Command.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ED42877D0B70037A946 /* opengl_Command.cpp */; }; + B32298A22878A56200585AD8 /* opengl_WrappedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC82877D0B70037A946 /* opengl_WrappedFunctions.cpp */; }; + B32298A32878A56200585AD8 /* opengl_Wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ED12877D0B70037A946 /* opengl_Wrapper.cpp */; }; + B32298A42878A56200585AD8 /* opengl_ObjectPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ECB2877D0B70037A946 /* opengl_ObjectPool.cpp */; }; + B32298A52878A56200585AD8 /* RingBufferPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC92877D0B70037A946 /* RingBufferPool.cpp */; }; + B32298A62878A56200585AD8 /* opengl_Command.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ED42877D0B70037A946 /* opengl_Command.cpp */; }; + B32298A72878A56200585AD8 /* opengl_WrappedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC82877D0B70037A946 /* opengl_WrappedFunctions.cpp */; }; + B32298A82878A56200585AD8 /* opengl_Wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ED12877D0B70037A946 /* opengl_Wrapper.cpp */; }; + B32298A92878A56200585AD8 /* opengl_ObjectPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ECB2877D0B70037A946 /* opengl_ObjectPool.cpp */; }; + B32298AA2878A56200585AD8 /* RingBufferPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC92877D0B70037A946 /* RingBufferPool.cpp */; }; + B32298AB2878A59300585AD8 /* opengl_BufferManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E932877D0B70037A946 /* opengl_BufferManipulationObjectFactory.cpp */; }; + B32298AC2878A59300585AD8 /* opengl_GLInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC42877D0B70037A946 /* opengl_GLInfo.cpp */; }; + B32298AD2878A59300585AD8 /* opengl_Parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB52877D0B70037A946 /* opengl_Parameters.cpp */; }; + B32298AE2878A59300585AD8 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E892877D0B70037A946 /* opengl_ColorBufferReaderWithBufferStorage.cpp */; }; + B32298AF2878A59300585AD8 /* opengl_UnbufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC62877D0B70037A946 /* opengl_UnbufferedDrawer.cpp */; }; + B32298B02878A59300585AD8 /* opengl_TextureManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB42877D0B70037A946 /* opengl_TextureManipulationObjectFactory.cpp */; }; + B32298B12878A59300585AD8 /* opengl_CachedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC32877D0B70037A946 /* opengl_CachedFunctions.cpp */; }; + B32298B22878A59300585AD8 /* opengl_ContextImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E8B2877D0B70037A946 /* opengl_ContextImpl.cpp */; }; + B32298B32878A59300585AD8 /* opengl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB82877D0B70037A946 /* opengl_Utils.cpp */; }; + B32298B42878A59300585AD8 /* opengl_Attributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E912877D0B70037A946 /* opengl_Attributes.cpp */; }; + B32298B52878A59300585AD8 /* opengl_ColorBufferReaderWithEGLImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E8D2877D0B70037A946 /* opengl_ColorBufferReaderWithEGLImage.cpp */; }; + B32298B62878A59300585AD8 /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ED52877D0B70037A946 /* opengl_ColorBufferReaderWithReadPixels.cpp */; }; + B32298B72878A59300585AD8 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB72877D0B70037A946 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */; }; + B32298B82878A59300585AD8 /* opengl_BufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC02877D0B70037A946 /* opengl_BufferedDrawer.cpp */; }; + B32298B92878A59300585AD8 /* opengl_BufferManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E932877D0B70037A946 /* opengl_BufferManipulationObjectFactory.cpp */; }; + B32298BA2878A59300585AD8 /* opengl_GLInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC42877D0B70037A946 /* opengl_GLInfo.cpp */; }; + B32298BB2878A59300585AD8 /* opengl_Parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB52877D0B70037A946 /* opengl_Parameters.cpp */; }; + B32298BC2878A59300585AD8 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E892877D0B70037A946 /* opengl_ColorBufferReaderWithBufferStorage.cpp */; }; + B32298BD2878A59300585AD8 /* opengl_UnbufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC62877D0B70037A946 /* opengl_UnbufferedDrawer.cpp */; }; + B32298BE2878A59300585AD8 /* opengl_TextureManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB42877D0B70037A946 /* opengl_TextureManipulationObjectFactory.cpp */; }; + B32298BF2878A59300585AD8 /* opengl_CachedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC32877D0B70037A946 /* opengl_CachedFunctions.cpp */; }; + B32298C02878A59300585AD8 /* opengl_ContextImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E8B2877D0B70037A946 /* opengl_ContextImpl.cpp */; }; + B32298C12878A59300585AD8 /* opengl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB82877D0B70037A946 /* opengl_Utils.cpp */; }; + B32298C22878A59300585AD8 /* opengl_Attributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E912877D0B70037A946 /* opengl_Attributes.cpp */; }; + B32298C32878A59300585AD8 /* opengl_ColorBufferReaderWithEGLImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E8D2877D0B70037A946 /* opengl_ColorBufferReaderWithEGLImage.cpp */; }; + B32298C42878A59300585AD8 /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89ED52877D0B70037A946 /* opengl_ColorBufferReaderWithReadPixels.cpp */; }; + B32298C52878A59300585AD8 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EB72877D0B70037A946 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */; }; + B32298C62878A59300585AD8 /* opengl_BufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EC02877D0B70037A946 /* opengl_BufferedDrawer.cpp */; }; + B32298C72878A5B400585AD8 /* glsl_CombinerProgramUniformFactoryCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAB2877D0B70037A946 /* glsl_CombinerProgramUniformFactoryCommon.cpp */; }; + B32298C82878A5B400585AD8 /* glsl_FXAA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E982877D0B70037A946 /* glsl_FXAA.cpp */; }; + B32298C92878A5B400585AD8 /* glsl_CombinerProgramBuilderCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAE2877D0B70037A946 /* glsl_CombinerProgramBuilderCommon.cpp */; }; + B32298CA2878A5B400585AD8 /* glsl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAF2877D0B70037A946 /* glsl_Utils.cpp */; }; + B32298CB2878A5B400585AD8 /* glsl_CombinerProgramUniformFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA32877D0B70037A946 /* glsl_CombinerProgramUniformFactory.cpp */; }; + B32298CC2878A5B400585AD8 /* glsl_CombinerProgramBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E9E2877D0B70037A946 /* glsl_CombinerProgramBuilder.cpp */; }; + B32298CD2878A5B400585AD8 /* glsl_CombinerProgramUniformFactoryAccurate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA72877D0B70037A946 /* glsl_CombinerProgramUniformFactoryAccurate.cpp */; }; + B32298CE2878A5B400585AD8 /* glsl_ShaderStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAC2877D0B70037A946 /* glsl_ShaderStorage.cpp */; }; + B32298CF2878A5B400585AD8 /* glsl_CombinerInputs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA12877D0B70037A946 /* glsl_CombinerInputs.cpp */; }; + B32298D02878A5B400585AD8 /* glsl_SpecialShadersFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E9D2877D0B70037A946 /* glsl_SpecialShadersFactory.cpp */; }; + B32298D12878A5B400585AD8 /* glsl_CombinerProgramBuilderAccurate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA52877D0B70037A946 /* glsl_CombinerProgramBuilderAccurate.cpp */; }; + B32298D22878A5B400585AD8 /* glsl_CombinerProgramUniformFactoryFast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA02877D0B70037A946 /* glsl_CombinerProgramUniformFactoryFast.cpp */; }; + B32298D32878A5B400585AD8 /* glsl_CombinerProgramBuilderFast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAD2877D0B70037A946 /* glsl_CombinerProgramBuilderFast.cpp */; }; + B32298D42878A5B400585AD8 /* glsl_CombinerProgramImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E9C2877D0B70037A946 /* glsl_CombinerProgramImpl.cpp */; }; + B32298D52878A5B500585AD8 /* glsl_CombinerProgramUniformFactoryCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAB2877D0B70037A946 /* glsl_CombinerProgramUniformFactoryCommon.cpp */; }; + B32298D62878A5B500585AD8 /* glsl_FXAA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E982877D0B70037A946 /* glsl_FXAA.cpp */; }; + B32298D72878A5B500585AD8 /* glsl_CombinerProgramBuilderCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAE2877D0B70037A946 /* glsl_CombinerProgramBuilderCommon.cpp */; }; + B32298D82878A5B500585AD8 /* glsl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAF2877D0B70037A946 /* glsl_Utils.cpp */; }; + B32298D92878A5B500585AD8 /* glsl_CombinerProgramUniformFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA32877D0B70037A946 /* glsl_CombinerProgramUniformFactory.cpp */; }; + B32298DA2878A5B500585AD8 /* glsl_CombinerProgramBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E9E2877D0B70037A946 /* glsl_CombinerProgramBuilder.cpp */; }; + B32298DB2878A5B500585AD8 /* glsl_CombinerProgramUniformFactoryAccurate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA72877D0B70037A946 /* glsl_CombinerProgramUniformFactoryAccurate.cpp */; }; + B32298DC2878A5B500585AD8 /* glsl_ShaderStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAC2877D0B70037A946 /* glsl_ShaderStorage.cpp */; }; + B32298DD2878A5B500585AD8 /* glsl_CombinerInputs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA12877D0B70037A946 /* glsl_CombinerInputs.cpp */; }; + B32298DE2878A5B500585AD8 /* glsl_SpecialShadersFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E9D2877D0B70037A946 /* glsl_SpecialShadersFactory.cpp */; }; + B32298DF2878A5B500585AD8 /* glsl_CombinerProgramBuilderAccurate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA52877D0B70037A946 /* glsl_CombinerProgramBuilderAccurate.cpp */; }; + B32298E02878A5B500585AD8 /* glsl_CombinerProgramUniformFactoryFast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EA02877D0B70037A946 /* glsl_CombinerProgramUniformFactoryFast.cpp */; }; + B32298E12878A5B500585AD8 /* glsl_CombinerProgramBuilderFast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EAD2877D0B70037A946 /* glsl_CombinerProgramBuilderFast.cpp */; }; + B32298E22878A5B500585AD8 /* glsl_CombinerProgramImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89E9C2877D0B70037A946 /* glsl_CombinerProgramImpl.cpp */; }; + B32298E32878A5CD00585AD8 /* GraphicBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EDC2877D0B70037A946 /* GraphicBuffer.cpp */; }; + B32298E42878A5CE00585AD8 /* GraphicBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EDC2877D0B70037A946 /* GraphicBuffer.cpp */; }; + B32298E52878A5D500585AD8 /* MemoryStatus_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE22877D0B70037A946 /* MemoryStatus_mupenplus.cpp */; }; + B32298E62878A5D500585AD8 /* MemoryStatus_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE22877D0B70037A946 /* MemoryStatus_mupenplus.cpp */; }; + B32298E72878A60600585AD8 /* F3DBETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D1D2877D0B60037A946 /* F3DBETA.cpp */; }; + B32298E82878A60600585AD8 /* F3DFLX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D272877D0B60037A946 /* F3DFLX2.cpp */; }; + B32298E92878A60600585AD8 /* T3DUX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D2D2877D0B60037A946 /* T3DUX.cpp */; }; + B32298EA2878A60600585AD8 /* F3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D282877D0B60037A946 /* F3D.cpp */; }; + B32298EB2878A60600585AD8 /* F3DDKR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D072877D0B60037A946 /* F3DDKR.cpp */; }; + B32298EC2878A60600585AD8 /* F3DPD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0F2877D0B60037A946 /* F3DPD.cpp */; }; + B32298ED2878A60600585AD8 /* F3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D372877D0B60037A946 /* F3DEX.cpp */; }; + B32298EE2878A60600585AD8 /* F3DAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D1F2877D0B60037A946 /* F3DAM.cpp */; }; + B32298EF2878A60600585AD8 /* F3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D082877D0B60037A946 /* F3DEX2.cpp */; }; + B32298F02878A60600585AD8 /* F3DEX2CBFD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0A2877D0B60037A946 /* F3DEX2CBFD.cpp */; }; + B32298F12878A60600585AD8 /* F5Indi_Naboo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D302877D0B60037A946 /* F5Indi_Naboo.cpp */; }; + B32298F22878A60600585AD8 /* L3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D2A2877D0B60037A946 /* L3DEX.cpp */; }; + B32298F32878A60600585AD8 /* ZSortBOSS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D232877D0B60037A946 /* ZSortBOSS.cpp */; }; + B32298F42878A60600585AD8 /* Turbo3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D152877D0B60037A946 /* Turbo3D.cpp */; }; + B32298F52878A60600585AD8 /* F3DTEXA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D172877D0B60037A946 /* F3DTEXA.cpp */; }; + B32298F62878A60600585AD8 /* ZSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0B2877D0B60037A946 /* ZSort.cpp */; }; + B32298F72878A60600585AD8 /* F3DZEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D162877D0B60037A946 /* F3DZEX2.cpp */; }; + B32298F82878A60600585AD8 /* F3DEX2ACCLAIM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D182877D0B60037A946 /* F3DEX2ACCLAIM.cpp */; }; + B32298F92878A60600585AD8 /* F3DSETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D242877D0B60037A946 /* F3DSETA.cpp */; }; + B32298FA2878A60600585AD8 /* L3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D092877D0B60037A946 /* L3DEX2.cpp */; }; + B32298FB2878A60600585AD8 /* F5Rogue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D2B2877D0B60037A946 /* F5Rogue.cpp */; }; + B32298FC2878A60600585AD8 /* L3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D1B2877D0B60037A946 /* L3D.cpp */; }; + B32298FD2878A60600585AD8 /* S2DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D192877D0B60037A946 /* S2DEX.cpp */; }; + B32298FE2878A60600585AD8 /* F3DGOLDEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D382877D0B60037A946 /* F3DGOLDEN.cpp */; }; + B32298FF2878A60600585AD8 /* S2DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0C2877D0B60037A946 /* S2DEX2.cpp */; }; + B32299002878A60700585AD8 /* F3DBETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D1D2877D0B60037A946 /* F3DBETA.cpp */; }; + B32299012878A60700585AD8 /* F3DFLX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D272877D0B60037A946 /* F3DFLX2.cpp */; }; + B32299022878A60700585AD8 /* T3DUX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D2D2877D0B60037A946 /* T3DUX.cpp */; }; + B32299032878A60700585AD8 /* F3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D282877D0B60037A946 /* F3D.cpp */; }; + B32299042878A60700585AD8 /* F3DDKR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D072877D0B60037A946 /* F3DDKR.cpp */; }; + B32299052878A60700585AD8 /* F3DPD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0F2877D0B60037A946 /* F3DPD.cpp */; }; + B32299062878A60700585AD8 /* F3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D372877D0B60037A946 /* F3DEX.cpp */; }; + B32299072878A60700585AD8 /* F3DAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D1F2877D0B60037A946 /* F3DAM.cpp */; }; + B32299082878A60700585AD8 /* F3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D082877D0B60037A946 /* F3DEX2.cpp */; }; + B32299092878A60700585AD8 /* F3DEX2CBFD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0A2877D0B60037A946 /* F3DEX2CBFD.cpp */; }; + B322990A2878A60700585AD8 /* F5Indi_Naboo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D302877D0B60037A946 /* F5Indi_Naboo.cpp */; }; + B322990B2878A60700585AD8 /* L3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D2A2877D0B60037A946 /* L3DEX.cpp */; }; + B322990C2878A60700585AD8 /* ZSortBOSS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D232877D0B60037A946 /* ZSortBOSS.cpp */; }; + B322990D2878A60700585AD8 /* Turbo3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D152877D0B60037A946 /* Turbo3D.cpp */; }; + B322990E2878A60700585AD8 /* F3DTEXA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D172877D0B60037A946 /* F3DTEXA.cpp */; }; + B322990F2878A60700585AD8 /* ZSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0B2877D0B60037A946 /* ZSort.cpp */; }; + B32299102878A60700585AD8 /* F3DZEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D162877D0B60037A946 /* F3DZEX2.cpp */; }; + B32299112878A60700585AD8 /* F3DEX2ACCLAIM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D182877D0B60037A946 /* F3DEX2ACCLAIM.cpp */; }; + B32299122878A60700585AD8 /* F3DSETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D242877D0B60037A946 /* F3DSETA.cpp */; }; + B32299132878A60700585AD8 /* L3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D092877D0B60037A946 /* L3DEX2.cpp */; }; + B32299142878A60700585AD8 /* F5Rogue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D2B2877D0B60037A946 /* F5Rogue.cpp */; }; + B32299152878A60700585AD8 /* L3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D1B2877D0B60037A946 /* L3D.cpp */; }; + B32299162878A60700585AD8 /* S2DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D192877D0B60037A946 /* S2DEX.cpp */; }; + B32299172878A60700585AD8 /* F3DGOLDEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D382877D0B60037A946 /* F3DGOLDEN.cpp */; }; + B32299182878A60700585AD8 /* S2DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D0C2877D0B60037A946 /* S2DEX2.cpp */; }; + B32299192878A61000585AD8 /* MupenPlusPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EF02877D0B70037A946 /* MupenPlusPluginAPI.cpp */; }; + B322991A2878A61600585AD8 /* MupenPlusPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89EF02877D0B70037A946 /* MupenPlusPluginAPI.cpp */; }; + B322991B2878A61D00585AD8 /* MupenPlusAPIImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE02877D0B70037A946 /* MupenPlusAPIImpl.cpp */; }; + B322991C2878A61E00585AD8 /* MupenPlusAPIImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89DE02877D0B70037A946 /* MupenPlusAPIImpl.cpp */; }; + B322991D2878A63100585AD8 /* Config_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3F32877D0B90037A946 /* Config_mupenplus.cpp */; }; + B322991E2878A63200585AD8 /* Config_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3F32877D0B90037A946 /* Config_mupenplus.cpp */; }; + B322991F2878A63A00585AD8 /* CommonAPIImpl_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3F62877D0B90037A946 /* CommonAPIImpl_mupenplus.cpp */; }; + B32299202878A63B00585AD8 /* CommonAPIImpl_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3F62877D0B90037A946 /* CommonAPIImpl_mupenplus.cpp */; }; + B32299212878A64400585AD8 /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D3B2877D0B60037A946 /* Log.cpp */; }; + B32299222878A64500585AD8 /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89D3B2877D0B60037A946 /* Log.cpp */; }; + B32299232878A66C00585AD8 /* parallel_al.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89C892877D0B60037A946 /* parallel_al.cpp */; }; + B32299242878A66D00585AD8 /* parallel_al.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89C892877D0B60037A946 /* parallel_al.cpp */; }; + B32299252878A67300585AD8 /* interface.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C89C872877D0B60037A946 /* interface.c */; }; + B32299262878A67300585AD8 /* interface.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C89C872877D0B60037A946 /* interface.c */; }; + B32299272878A67700585AD8 /* n64video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C89C882877D0B60037A946 /* n64video.c */; }; + B32299282878A67800585AD8 /* n64video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C89C882877D0B60037A946 /* n64video.c */; }; + B322992B2878A6BE00585AD8 /* rdp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89F5C2877D0B70037A946 /* rdp.cpp */; }; + B322992C2878A6BE00585AD8 /* rdp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C89F5C2877D0B70037A946 /* rdp.cpp */; }; + B322992D2878A78F00585AD8 /* rglgen.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2572877D0B90037A946 /* rglgen.c */; }; + B322992E2878A79000585AD8 /* rglgen.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A2572877D0B90037A946 /* rglgen.c */; }; + B322992F2878A88300585AD8 /* string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3CE2877D0B90037A946 /* string.c */; }; + B32299302878A88300585AD8 /* string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3CE2877D0B90037A946 /* string.c */; }; + B32299312878A95600585AD8 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A53E2877D0BA0037A946 /* md5.c */; }; + B32299322878A95600585AD8 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A53E2877D0BA0037A946 /* md5.c */; }; + B32299332878ACAC00585AD8 /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3CA2877D0B90037A946 /* stdstring.c */; }; + B32299342878ACAC00585AD8 /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A3CA2877D0B90037A946 /* stdstring.c */; }; + B32299352878ACBD00585AD8 /* vidext_libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4FC2877D0BA0037A946 /* vidext_libretro.c */; }; + B32299362878ACBE00585AD8 /* vidext_libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A4FC2877D0BA0037A946 /* vidext_libretro.c */; }; + B32299382878AF8800585AD8 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B32299372878AF8800585AD8 /* libc++.tbd */; }; + B324C62B21920BC2009F4EDC /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E811DED272E00896D96 /* libz.tbd */; }; + B324C63021920BDA009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; }; + B324C63121920BDB009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilter = ios; }; + B3274E8B2106C19600857F52 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3055BEE20730B60001212D2 /* PVSupport.framework */; }; + B33809312877C5530009C732 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B338091F2877C5530009C732 /* Core.plist */; }; + B33809322877C5530009C732 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B338091F2877C5530009C732 /* Core.plist */; }; + B33809332877C5530009C732 /* PVMupen64Plus-NX.h in Headers */ = {isa = PBXBuildFile; fileRef = B33809202877C5530009C732 /* PVMupen64Plus-NX.h */; }; + B33809342877C5530009C732 /* PVMupen64Plus-NX.h in Headers */ = {isa = PBXBuildFile; fileRef = B33809202877C5530009C732 /* PVMupen64Plus-NX.h */; }; + B33809362877C5530009C732 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B33809212877C5530009C732 /* Info.plist */; }; + B33809372877C5530009C732 /* PVMupen64Plus-NXCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B33809232877C5530009C732 /* PVMupen64Plus-NXCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B33809382877C5530009C732 /* PVMupen64Plus-NXCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B33809232877C5530009C732 /* PVMupen64Plus-NXCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B33809532877C5FE0009C732 /* libmupen64plus-nx-retro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E4C1DED23C600896D96 /* libmupen64plus-nx-retro.a */; }; + B33809562877C5FE0009C732 /* libmupen64plus-nx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3800FF5208522DC00FA03B8 /* libmupen64plus-nx.a */; }; + B33809592877C6090009C732 /* libmupen64plus-nx-retro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF703921916E60000FA7F9 /* libmupen64plus-nx-retro.a */; }; + B338095C2877C6090009C732 /* libmupen64plus-nx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF705221916E87000FA7F9 /* libmupen64plus-nx.a */; }; + B37263B526EA164900E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A326EA0D6700E95488 /* libz.tbd */; }; + B3962AED26FBD8A500FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilter = maccatalyst; }; + B39E129A28925CB000016387 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39E129928925CB000016387 /* PVLibRetro.framework */; }; + B3AE1DD420731F2700AD06D4 /* libdl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AE1DD320731F2700AD06D4 /* libdl.tbd */; }; + B3AF705821916ED0000FA7F9 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF705721916ED0000FA7F9 /* PVSupport.framework */; }; + B3C8A65A2877D1A80037A946 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0492877D0B80037A946 /* libretro.c */; }; + B3C8A65B2877D1A90037A946 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A0492877D0B80037A946 /* libretro.c */; }; + B3C8A65C2877D2A20037A946 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A64D2877D0BB0037A946 /* main.c */; }; + B3C8A65D2877D2A30037A946 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C8A64D2877D0BB0037A946 /* main.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B31737FF2783F925002D3ACD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3303E4B1DED23C600896D96; + remoteInfo = "png-iOS"; + }; + B33809542877C5FE0009C732 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3303E4B1DED23C600896D96; + remoteInfo = "mupen64plus-nx-retro-iOS"; + }; + B33809572877C5FE0009C732 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3800FF4208522DC00FA03B8; + remoteInfo = "mupen64plus-nx-iOS"; + }; + B338095A2877C6090009C732 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3AF702121916E60000FA7F9; + remoteInfo = "mupen64plus-nx-retro-tvOS"; + }; + B338095D2877C6090009C732 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3AF703A21916E87000FA7F9; + remoteInfo = "mupen64plus-nx-tvOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B3303E4A1DED23C600896D96 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3800FF3208522DC00FA03B8 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3AF703521916E60000FA7F9 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3AF704E21916E87000FA7F9 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 3D208E971182550400BEAA42 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; + 3D208E9D1182551500BEAA42 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 3DC2145D166C6D7F0014251E /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; + 3DC2145E166C6D7F0014251E /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; + 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3055BEE20730B60001212D2 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B30BF1AD2775320F00FF9E07 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; + B32297A028783EB600585AD8 /* osal_files_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osal_files_ios.mm; sourceTree = ""; }; + B32299372878AF8800585AD8 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.4.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; }; + B32299392878AFA200585AD8 /* libc.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libc.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/libc.tbd; sourceTree = DEVELOPER_DIR; }; + B322993A2878AFA200585AD8 /* libc++.1.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.1.tbd"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/libc++.1.tbd"; sourceTree = DEVELOPER_DIR; }; + B322993B2878AFA200585AD8 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; }; + B3303E4C1DED23C600896D96 /* libmupen64plus-nx-retro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmupen64plus-nx-retro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3303E811DED272E00896D96 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B338091F2877C5530009C732 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B33809202877C5530009C732 /* PVMupen64Plus-NX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMupen64Plus-NX.h"; sourceTree = ""; }; + B33809212877C5530009C732 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B33809232877C5530009C732 /* PVMupen64Plus-NXCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMupen64Plus-NXCore.h"; sourceTree = ""; }; + B33809242877C5530009C732 /* PVMupen64Plus-NXCore+Controls.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVMupen64Plus-NXCore+Controls.m"; sourceTree = ""; }; + B33809252877C5530009C732 /* PVMupen64Plus-NXCore+Saves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMupen64Plus-NXCore+Saves.h"; sourceTree = ""; }; + B33809262877C5530009C732 /* PVMupen64Plus-NXCore+Mupen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVMupen64Plus-NXCore+Mupen.m"; sourceTree = ""; }; + B33809272877C5530009C732 /* Mupen-NXOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Mupen-NXOptions.swift"; sourceTree = ""; }; + B33809282877C5530009C732 /* PVMupen64Plus-NXCore+Cheats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMupen64Plus-NXCore+Cheats.h"; sourceTree = ""; }; + B33809292877C5530009C732 /* PVMupen64Plus-NXCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMupen64Plus-NXCore+Controls.h"; sourceTree = ""; }; + B338092A2877C5530009C732 /* PVMupen64Plus-NXCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVMupen64Plus-NXCore.m"; sourceTree = ""; }; + B338092B2877C5530009C732 /* PVMupen64Plus-NXCore+Mupen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMupen64Plus-NXCore+Mupen.h"; sourceTree = ""; }; + B338092C2877C5530009C732 /* PVMupen64Plus-NXCore+Saves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVMupen64Plus-NXCore+Saves.m"; sourceTree = ""; }; + B338092D2877C5530009C732 /* PVMupen64Plus-NXCore+Audio.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PVMupen64Plus-NXCore+Audio.swift"; sourceTree = ""; }; + B338092E2877C5530009C732 /* PVMupen64Plus-NXCore+Video.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PVMupen64Plus-NXCore+Video.swift"; sourceTree = ""; }; + B338092F2877C5530009C732 /* PVMupen64Plus-NXCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVMupen64Plus-NXCore.mm"; sourceTree = ""; }; + B33809302877C5530009C732 /* PVMupen64Plus-NXCore+Cheats.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVMupen64Plus-NXCore+Cheats.m"; sourceTree = ""; }; + B34CB0ED2274BA8C009134B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + B37263A326EA0D6700E95488 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; + B37263B626EA164E00E95488 /* libdl.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libdl.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/usr/lib/libdl.tbd; sourceTree = DEVELOPER_DIR; }; + B37EFF381C72F43300857158 /* PVMupen64Plus-NX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "PVMupen64Plus-NX.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3800FF5208522DC00FA03B8 /* libmupen64plus-nx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmupen64plus-nx.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; + B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; + B39E129928925CB000016387 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39E8CB52053B53100380DCD /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Core.plist; path = "PVMupen64Plus-NX/Core.plist"; sourceTree = ""; }; + B3AE1DD320731F2700AD06D4 /* libdl.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libdl.tbd; path = usr/lib/libdl.tbd; sourceTree = SDKROOT; }; + B3AF703921916E60000FA7F9 /* libmupen64plus-nx-retro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmupen64plus-nx-retro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3AF705221916E87000FA7F9 /* libmupen64plus-nx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libmupen64plus-nx.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3AF705721916ED0000FA7F9 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B3B9081DED130B00602746 /* PVMupen64Plus-NX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "PVMupen64Plus-NX.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C89C872877D0B60037A946 /* interface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface.c; sourceTree = ""; }; + B3C89C882877D0B60037A946 /* n64video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = n64video.c; sourceTree = ""; }; + B3C89C892877D0B60037A946 /* parallel_al.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = parallel_al.cpp; sourceTree = ""; }; + B3C89C8A2877D0B60037A946 /* vdac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdac.h; sourceTree = ""; }; + B3C89C8B2877D0B60037A946 /* plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugin.h; sourceTree = ""; }; + B3C89C8E2877D0B60037A946 /* fetch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fetch.c; sourceTree = ""; }; + B3C89C8F2877D0B60037A946 /* gamma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gamma.c; sourceTree = ""; }; + B3C89C902877D0B60037A946 /* video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video.c; sourceTree = ""; }; + B3C89C912877D0B60037A946 /* vi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vi.c; sourceTree = ""; }; + B3C89C922877D0B60037A946 /* restore.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = restore.c; sourceTree = ""; }; + B3C89C932877D0B60037A946 /* divot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = divot.c; sourceTree = ""; }; + B3C89C942877D0B60037A946 /* lerp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lerp.c; sourceTree = ""; }; + B3C89C952877D0B60037A946 /* rdp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rdp.c; sourceTree = ""; }; + B3C89C962877D0B60037A946 /* vi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vi.c; sourceTree = ""; }; + B3C89C982877D0B60037A946 /* rasterizer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rasterizer.c; sourceTree = ""; }; + B3C89C992877D0B60037A946 /* combiner.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = combiner.c; sourceTree = ""; }; + B3C89C9A2877D0B60037A946 /* rdp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rdp.c; sourceTree = ""; }; + B3C89C9B2877D0B60037A946 /* fbuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fbuffer.c; sourceTree = ""; }; + B3C89C9C2877D0B60037A946 /* zbuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zbuffer.c; sourceTree = ""; }; + B3C89C9D2877D0B60037A946 /* blender.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blender.c; sourceTree = ""; }; + B3C89C9E2877D0B60037A946 /* tcoord.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tcoord.c; sourceTree = ""; }; + B3C89C9F2877D0B60037A946 /* rdram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rdram.c; sourceTree = ""; }; + B3C89CA02877D0B60037A946 /* dither.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dither.c; sourceTree = ""; }; + B3C89CA12877D0B60037A946 /* tmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tmem.c; sourceTree = ""; }; + B3C89CA22877D0B60037A946 /* tex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tex.c; sourceTree = ""; }; + B3C89CA32877D0B60037A946 /* coverage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = coverage.c; sourceTree = ""; }; + B3C89CA42877D0B60037A946 /* version.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.h.in; sourceTree = ""; }; + B3C89CA52877D0B60037A946 /* n64video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = n64video.h; sourceTree = ""; }; + B3C89CA62877D0B60037A946 /* msg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msg.h; sourceTree = ""; }; + B3C89CA72877D0B60037A946 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B3C89CA82877D0B60037A946 /* plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plugin.c; sourceTree = ""; }; + B3C89CA92877D0B60037A946 /* parallel_al.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = parallel_al.h; sourceTree = ""; }; + B3C89CAA2877D0B60037A946 /* Gfx #1.3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Gfx #1.3.h"; sourceTree = ""; }; + B3C89CAB2877D0B60037A946 /* rdp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rdp.h; sourceTree = ""; }; + B3C89CAD2877D0B60037A946 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3C89CB02877D0B60037A946 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3C89CB22877D0B60037A946 /* gpl-2.0.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gpl-2.0.txt"; sourceTree = ""; }; + B3C89CB42877D0B60037A946 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B3C89CB62877D0B60037A946 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B3C89CB82877D0B60037A946 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3C89CBB2877D0B60037A946 /* libGLideNHQ.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libGLideNHQ.vcxproj; sourceTree = ""; }; + B3C89CBC2877D0B60037A946 /* GLideN64_Builder.cmd */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideN64_Builder.cmd; sourceTree = ""; }; + B3C89CBD2877D0B60037A946 /* GLideNUI.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GLideNUI.vcxproj.filters; sourceTree = ""; }; + B3C89CBE2877D0B60037A946 /* GLideN64.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideN64.sln; sourceTree = ""; }; + B3C89CBF2877D0B60037A946 /* GLideNUI.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideNUI.pro; sourceTree = ""; }; + B3C89CC02877D0B60037A946 /* GLideN64.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GLideN64.vcxproj.filters; sourceTree = ""; }; + B3C89CC12877D0B60037A946 /* ticpp.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ticpp.vcxproj; sourceTree = ""; }; + B3C89CC22877D0B60037A946 /* GLideNUI-wtl.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "GLideNUI-wtl.vcxproj"; sourceTree = ""; }; + B3C89CC32877D0B60037A946 /* osal.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = osal.vcxproj; sourceTree = ""; }; + B3C89CC42877D0B60037A946 /* libGLideNHQ.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libGLideNHQ.vcxproj.filters; sourceTree = ""; }; + B3C89CC82877D0B60037A946 /* freetype253MT_D.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = freetype253MT_D.lib; sourceTree = ""; }; + B3C89CC92877D0B60037A946 /* zlibd.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = zlibd.lib; sourceTree = ""; }; + B3C89CCA2877D0B60037A946 /* libpngd.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpngd.lib; sourceTree = ""; }; + B3C89CCC2877D0B60037A946 /* zlib.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = zlib.lib; sourceTree = ""; }; + B3C89CCD2877D0B60037A946 /* libpng.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpng.lib; sourceTree = ""; }; + B3C89CCE2877D0B60037A946 /* freetype253MT.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = freetype253MT.lib; sourceTree = ""; }; + B3C89CD12877D0B60037A946 /* freetype253MT_D.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = freetype253MT_D.lib; sourceTree = ""; }; + B3C89CD22877D0B60037A946 /* zlibd.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = zlibd.lib; sourceTree = ""; }; + B3C89CD32877D0B60037A946 /* libpngd.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpngd.lib; sourceTree = ""; }; + B3C89CD52877D0B60037A946 /* zlib.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = zlib.lib; sourceTree = ""; }; + B3C89CD62877D0B60037A946 /* libpng.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpng.lib; sourceTree = ""; }; + B3C89CD72877D0B60037A946 /* freetype253MT.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = freetype253MT.lib; sourceTree = ""; }; + B3C89CD92877D0B60037A946 /* freetype253MT_D.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = freetype253MT_D.lib; sourceTree = ""; }; + B3C89CDA2877D0B60037A946 /* zlibd.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = zlibd.lib; sourceTree = ""; }; + B3C89CDB2877D0B60037A946 /* libpngd.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpngd.lib; sourceTree = ""; }; + B3C89CDD2877D0B60037A946 /* zlib.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = zlib.lib; sourceTree = ""; }; + B3C89CDE2877D0B60037A946 /* libpng.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpng.lib; sourceTree = ""; }; + B3C89CDF2877D0B60037A946 /* freetype253MT.lib */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = freetype253MT.lib; sourceTree = ""; }; + B3C89CE02877D0B60037A946 /* GLideNUI.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GLideNUI.vcxproj; sourceTree = ""; }; + B3C89CE12877D0B60037A946 /* ticpp.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ticpp.vcxproj.filters; sourceTree = ""; }; + B3C89CE22877D0B60037A946 /* ts2lang.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ts2lang.vcxproj; sourceTree = ""; }; + B3C89CE32877D0B60037A946 /* ts2lang.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ts2lang.vcxproj.filters; sourceTree = ""; }; + B3C89CE42877D0B60037A946 /* GLideNUI-wtl.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "GLideNUI-wtl.vcxproj.filters"; sourceTree = ""; }; + B3C89CE52877D0B60037A946 /* osal.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = osal.vcxproj.filters; sourceTree = ""; }; + B3C89CE62877D0B60037A946 /* GLideN64.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GLideN64.vcxproj; sourceTree = ""; }; + B3C89CE82877D0B60037A946 /* Readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Readme.txt; sourceTree = ""; }; + B3C89CE92877D0B60037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C89CEB2877D0B60037A946 /* GLideN64.custom.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideN64.custom.ini; sourceTree = ""; }; + B3C89CEC2877D0B60037A946 /* GLideN64.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideN64.ini; sourceTree = ""; }; + B3C89CED2877D0B60037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C89CF02877D0B60037A946 /* build.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = build.yml; sourceTree = ""; }; + B3C89CF12877D0B60037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C89CF32877D0B60037A946 /* gliden64_pt_BR.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gliden64_pt_BR.ts; sourceTree = ""; }; + B3C89CF42877D0B60037A946 /* gliden64_fr.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gliden64_fr.ts; sourceTree = ""; }; + B3C89CF52877D0B60037A946 /* gliden64_es.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gliden64_es.ts; sourceTree = ""; }; + B3C89CF62877D0B60037A946 /* gliden64_it.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gliden64_it.ts; sourceTree = ""; }; + B3C89CF72877D0B60037A946 /* gliden64_de.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gliden64_de.ts; sourceTree = ""; }; + B3C89CF92877D0B60037A946 /* gliden64_fr.qm */ = {isa = PBXFileReference; lastKnownFileType = file; path = gliden64_fr.qm; sourceTree = ""; }; + B3C89CFA2877D0B60037A946 /* gliden64_pt_BR.qm */ = {isa = PBXFileReference; lastKnownFileType = file; path = gliden64_pt_BR.qm; sourceTree = ""; }; + B3C89CFB2877D0B60037A946 /* gliden64_es.qm */ = {isa = PBXFileReference; lastKnownFileType = file; path = gliden64_es.qm; sourceTree = ""; }; + B3C89CFC2877D0B60037A946 /* gliden64_it.qm */ = {isa = PBXFileReference; lastKnownFileType = file; path = gliden64_it.qm; sourceTree = ""; }; + B3C89CFD2877D0B60037A946 /* gliden64_de.qm */ = {isa = PBXFileReference; lastKnownFileType = file; path = gliden64_de.qm; sourceTree = ""; }; + B3C89CFE2877D0B60037A946 /* gliden64_ja.qm */ = {isa = PBXFileReference; lastKnownFileType = file; path = gliden64_ja.qm; sourceTree = ""; }; + B3C89CFF2877D0B60037A946 /* gliden64_pl.qm */ = {isa = PBXFileReference; lastKnownFileType = file; path = gliden64_pl.qm; sourceTree = ""; }; + B3C89D002877D0B60037A946 /* gliden64_ja.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gliden64_ja.ts; sourceTree = ""; }; + B3C89D012877D0B60037A946 /* gliden64_pl.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = gliden64_pl.ts; sourceTree = ""; }; + B3C89D032877D0B60037A946 /* DepthBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DepthBuffer.h; sourceTree = ""; }; + B3C89D042877D0B60037A946 /* RDP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RDP.cpp; sourceTree = ""; }; + B3C89D052877D0B60037A946 /* PluginAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PluginAPI.h; sourceTree = ""; }; + B3C89D072877D0B60037A946 /* F3DDKR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DDKR.cpp; sourceTree = ""; }; + B3C89D082877D0B60037A946 /* F3DEX2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2.cpp; sourceTree = ""; }; + B3C89D092877D0B60037A946 /* L3DEX2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = L3DEX2.cpp; sourceTree = ""; }; + B3C89D0A2877D0B60037A946 /* F3DEX2CBFD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2CBFD.cpp; sourceTree = ""; }; + B3C89D0B2877D0B60037A946 /* ZSort.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ZSort.cpp; sourceTree = ""; }; + B3C89D0C2877D0B60037A946 /* S2DEX2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = S2DEX2.cpp; sourceTree = ""; }; + B3C89D0D2877D0B60037A946 /* F3DGOLDEN.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DGOLDEN.h; sourceTree = ""; }; + B3C89D0E2877D0B60037A946 /* F3DTEXA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DTEXA.h; sourceTree = ""; }; + B3C89D0F2877D0B60037A946 /* F3DPD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DPD.cpp; sourceTree = ""; }; + B3C89D102877D0B60037A946 /* S2DEX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = S2DEX.h; sourceTree = ""; }; + B3C89D112877D0B60037A946 /* L3DEX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = L3DEX.h; sourceTree = ""; }; + B3C89D122877D0B60037A946 /* F3DEX2ACCLAIM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DEX2ACCLAIM.h; sourceTree = ""; }; + B3C89D132877D0B60037A946 /* S2DEX2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = S2DEX2.h; sourceTree = ""; }; + B3C89D142877D0B60037A946 /* F3DBETA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DBETA.h; sourceTree = ""; }; + B3C89D152877D0B60037A946 /* Turbo3D.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Turbo3D.cpp; sourceTree = ""; }; + B3C89D162877D0B60037A946 /* F3DZEX2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DZEX2.cpp; sourceTree = ""; }; + B3C89D172877D0B60037A946 /* F3DTEXA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DTEXA.cpp; sourceTree = ""; }; + B3C89D182877D0B60037A946 /* F3DEX2ACCLAIM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2ACCLAIM.cpp; sourceTree = ""; }; + B3C89D192877D0B60037A946 /* S2DEX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = S2DEX.cpp; sourceTree = ""; }; + B3C89D1A2877D0B60037A946 /* F3DPD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DPD.h; sourceTree = ""; }; + B3C89D1B2877D0B60037A946 /* L3D.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = L3D.cpp; sourceTree = ""; }; + B3C89D1C2877D0B60037A946 /* ZSort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZSort.h; sourceTree = ""; }; + B3C89D1D2877D0B60037A946 /* F3DBETA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DBETA.cpp; sourceTree = ""; }; + B3C89D1E2877D0B60037A946 /* F3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3D.h; sourceTree = ""; }; + B3C89D1F2877D0B60037A946 /* F3DAM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DAM.cpp; sourceTree = ""; }; + B3C89D202877D0B60037A946 /* F3DDKR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DDKR.h; sourceTree = ""; }; + B3C89D212877D0B60037A946 /* F3DAM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DAM.h; sourceTree = ""; }; + B3C89D222877D0B60037A946 /* F3DZEX2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DZEX2.h; sourceTree = ""; }; + B3C89D232877D0B60037A946 /* ZSortBOSS.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ZSortBOSS.cpp; sourceTree = ""; }; + B3C89D242877D0B60037A946 /* F3DSETA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DSETA.cpp; sourceTree = ""; }; + B3C89D252877D0B60037A946 /* F3DEX2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DEX2.h; sourceTree = ""; }; + B3C89D262877D0B60037A946 /* L3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = L3D.h; sourceTree = ""; }; + B3C89D272877D0B60037A946 /* F3DFLX2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DFLX2.cpp; sourceTree = ""; }; + B3C89D282877D0B60037A946 /* F3D.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3D.cpp; sourceTree = ""; }; + B3C89D292877D0B60037A946 /* F5Rogue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F5Rogue.h; sourceTree = ""; }; + B3C89D2A2877D0B60037A946 /* L3DEX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = L3DEX.cpp; sourceTree = ""; }; + B3C89D2B2877D0B60037A946 /* F5Rogue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F5Rogue.cpp; sourceTree = ""; }; + B3C89D2C2877D0B60037A946 /* F3DSETA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DSETA.h; sourceTree = ""; }; + B3C89D2D2877D0B60037A946 /* T3DUX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = T3DUX.cpp; sourceTree = ""; }; + B3C89D2E2877D0B60037A946 /* L3DEX2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = L3DEX2.h; sourceTree = ""; }; + B3C89D2F2877D0B60037A946 /* F5Indi_Naboo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F5Indi_Naboo.h; sourceTree = ""; }; + B3C89D302877D0B60037A946 /* F5Indi_Naboo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F5Indi_Naboo.cpp; sourceTree = ""; }; + B3C89D312877D0B60037A946 /* T3DUX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = T3DUX.h; sourceTree = ""; }; + B3C89D322877D0B60037A946 /* Turbo3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Turbo3D.h; sourceTree = ""; }; + B3C89D332877D0B60037A946 /* F3DEX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DEX.h; sourceTree = ""; }; + B3C89D342877D0B60037A946 /* ZSortBOSS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZSortBOSS.h; sourceTree = ""; }; + B3C89D352877D0B60037A946 /* F3DFLX2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DFLX2.h; sourceTree = ""; }; + B3C89D362877D0B60037A946 /* F3DEX2CBFD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = F3DEX2CBFD.h; sourceTree = ""; }; + B3C89D372877D0B60037A946 /* F3DEX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX.cpp; sourceTree = ""; }; + B3C89D382877D0B60037A946 /* F3DGOLDEN.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = F3DGOLDEN.cpp; sourceTree = ""; }; + B3C89D392877D0B60037A946 /* getRevision.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = getRevision.bat; sourceTree = ""; }; + B3C89D3A2877D0B60037A946 /* Performance.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Performance.cpp; sourceTree = ""; }; + B3C89D3B2877D0B60037A946 /* Log.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Log.cpp; sourceTree = ""; }; + B3C89D3C2877D0B60037A946 /* FrameBufferInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FrameBufferInfo.h; sourceTree = ""; }; + B3C89D3D2877D0B60037A946 /* ZilmarGFX_1_3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZilmarGFX_1_3.h; sourceTree = ""; }; + B3C89D3E2877D0B60037A946 /* PaletteTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PaletteTexture.h; sourceTree = ""; }; + B3C89D402877D0B60037A946 /* m64p_frontend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_frontend.h; sourceTree = ""; }; + B3C89D412877D0B60037A946 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3C89D442877D0B60037A946 /* ftxf86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftxf86.h; sourceTree = ""; }; + B3C89D452877D0B60037A946 /* ftsnames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsnames.h; sourceTree = ""; }; + B3C89D462877D0B60037A946 /* ftwinfnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftwinfnt.h; sourceTree = ""; }; + B3C89D472877D0B60037A946 /* ftsizes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsizes.h; sourceTree = ""; }; + B3C89D482877D0B60037A946 /* fttypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fttypes.h; sourceTree = ""; }; + B3C89D492877D0B60037A946 /* ftmm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmm.h; sourceTree = ""; }; + B3C89D4B2877D0B60037A946 /* ftstdlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftstdlib.h; sourceTree = ""; }; + B3C89D4C2877D0B60037A946 /* ftheader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftheader.h; sourceTree = ""; }; + B3C89D4D2877D0B60037A946 /* ftconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftconfig.h; sourceTree = ""; }; + B3C89D4E2877D0B60037A946 /* ftoption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftoption.h; sourceTree = ""; }; + B3C89D4F2877D0B60037A946 /* ftmodule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmodule.h; sourceTree = ""; }; + B3C89D502877D0B60037A946 /* ftmodapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmodapi.h; sourceTree = ""; }; + B3C89D512877D0B60037A946 /* ftbzip2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbzip2.h; sourceTree = ""; }; + B3C89D522877D0B60037A946 /* ttunpat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ttunpat.h; sourceTree = ""; }; + B3C89D532877D0B60037A946 /* fttrigon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fttrigon.h; sourceTree = ""; }; + B3C89D542877D0B60037A946 /* ftbbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbbox.h; sourceTree = ""; }; + B3C89D552877D0B60037A946 /* ftgzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftgzip.h; sourceTree = ""; }; + B3C89D572877D0B60037A946 /* sfnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sfnt.h; sourceTree = ""; }; + B3C89D582877D0B60037A946 /* internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; + B3C89D592877D0B60037A946 /* ftdebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftdebug.h; sourceTree = ""; }; + B3C89D5A2877D0B60037A946 /* psaux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psaux.h; sourceTree = ""; }; + B3C89D5B2877D0B60037A946 /* t1types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = t1types.h; sourceTree = ""; }; + B3C89D5C2877D0B60037A946 /* pshints.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pshints.h; sourceTree = ""; }; + B3C89D5D2877D0B60037A946 /* ftdriver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftdriver.h; sourceTree = ""; }; + B3C89D5E2877D0B60037A946 /* autohint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = autohint.h; sourceTree = ""; }; + B3C89D5F2877D0B60037A946 /* ftstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftstream.h; sourceTree = ""; }; + B3C89D602877D0B60037A946 /* tttypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tttypes.h; sourceTree = ""; }; + B3C89D612877D0B60037A946 /* ftvalid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftvalid.h; sourceTree = ""; }; + B3C89D622877D0B60037A946 /* ftobjs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftobjs.h; sourceTree = ""; }; + B3C89D632877D0B60037A946 /* ftpic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftpic.h; sourceTree = ""; }; + B3C89D642877D0B60037A946 /* fttrace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fttrace.h; sourceTree = ""; }; + B3C89D652877D0B60037A946 /* ftmemory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmemory.h; sourceTree = ""; }; + B3C89D662877D0B60037A946 /* ftgloadr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftgloadr.h; sourceTree = ""; }; + B3C89D672877D0B60037A946 /* ftserv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftserv.h; sourceTree = ""; }; + B3C89D692877D0B60037A946 /* svprop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svprop.h; sourceTree = ""; }; + B3C89D6A2877D0B60037A946 /* svmm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svmm.h; sourceTree = ""; }; + B3C89D6B2877D0B60037A946 /* svwinfnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svwinfnt.h; sourceTree = ""; }; + B3C89D6C2877D0B60037A946 /* svttcmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svttcmap.h; sourceTree = ""; }; + B3C89D6D2877D0B60037A946 /* svotval.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svotval.h; sourceTree = ""; }; + B3C89D6E2877D0B60037A946 /* svgldict.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svgldict.h; sourceTree = ""; }; + B3C89D6F2877D0B60037A946 /* svpscmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svpscmap.h; sourceTree = ""; }; + B3C89D702877D0B60037A946 /* svkern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svkern.h; sourceTree = ""; }; + B3C89D712877D0B60037A946 /* svpsinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svpsinfo.h; sourceTree = ""; }; + B3C89D722877D0B60037A946 /* svpfr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svpfr.h; sourceTree = ""; }; + B3C89D732877D0B60037A946 /* svgxval.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svgxval.h; sourceTree = ""; }; + B3C89D742877D0B60037A946 /* svxf86nm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svxf86nm.h; sourceTree = ""; }; + B3C89D752877D0B60037A946 /* svbdf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svbdf.h; sourceTree = ""; }; + B3C89D762877D0B60037A946 /* svsfnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svsfnt.h; sourceTree = ""; }; + B3C89D772877D0B60037A946 /* svtteng.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svtteng.h; sourceTree = ""; }; + B3C89D782877D0B60037A946 /* svcid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svcid.h; sourceTree = ""; }; + B3C89D792877D0B60037A946 /* svttglyf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svttglyf.h; sourceTree = ""; }; + B3C89D7A2877D0B60037A946 /* svpostnm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svpostnm.h; sourceTree = ""; }; + B3C89D7B2877D0B60037A946 /* ftrfork.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftrfork.h; sourceTree = ""; }; + B3C89D7C2877D0B60037A946 /* ftcalc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftcalc.h; sourceTree = ""; }; + B3C89D7D2877D0B60037A946 /* ftoutln.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftoutln.h; sourceTree = ""; }; + B3C89D7E2877D0B60037A946 /* ftadvanc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftadvanc.h; sourceTree = ""; }; + B3C89D7F2877D0B60037A946 /* ftsynth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsynth.h; sourceTree = ""; }; + B3C89D802877D0B60037A946 /* fterrors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fterrors.h; sourceTree = ""; }; + B3C89D812877D0B60037A946 /* ftgasp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftgasp.h; sourceTree = ""; }; + B3C89D822877D0B60037A946 /* ftstroke.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftstroke.h; sourceTree = ""; }; + B3C89D832877D0B60037A946 /* ftcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftcache.h; sourceTree = ""; }; + B3C89D842877D0B60037A946 /* ft2build.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ft2build.h; sourceTree = ""; }; + B3C89D852877D0B60037A946 /* ftotval.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftotval.h; sourceTree = ""; }; + B3C89D862877D0B60037A946 /* freetype.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = freetype.h; sourceTree = ""; }; + B3C89D872877D0B60037A946 /* ftincrem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftincrem.h; sourceTree = ""; }; + B3C89D882877D0B60037A946 /* ftttdrv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftttdrv.h; sourceTree = ""; }; + B3C89D892877D0B60037A946 /* fterrdef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fterrdef.h; sourceTree = ""; }; + B3C89D8A2877D0B60037A946 /* ttnameid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ttnameid.h; sourceTree = ""; }; + B3C89D8B2877D0B60037A946 /* ftpfr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftpfr.h; sourceTree = ""; }; + B3C89D8C2877D0B60037A946 /* ftgxval.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftgxval.h; sourceTree = ""; }; + B3C89D8D2877D0B60037A946 /* ftcffdrv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftcffdrv.h; sourceTree = ""; }; + B3C89D8E2877D0B60037A946 /* ftchapters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftchapters.h; sourceTree = ""; }; + B3C89D8F2877D0B60037A946 /* tttags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tttags.h; sourceTree = ""; }; + B3C89D902877D0B60037A946 /* ftlzw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftlzw.h; sourceTree = ""; }; + B3C89D912877D0B60037A946 /* ftsystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsystem.h; sourceTree = ""; }; + B3C89D922877D0B60037A946 /* t1tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = t1tables.h; sourceTree = ""; }; + B3C89D932877D0B60037A946 /* ftimage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftimage.h; sourceTree = ""; }; + B3C89D942877D0B60037A946 /* tttables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tttables.h; sourceTree = ""; }; + B3C89D952877D0B60037A946 /* ftcid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftcid.h; sourceTree = ""; }; + B3C89D962877D0B60037A946 /* ftglyph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftglyph.h; sourceTree = ""; }; + B3C89D972877D0B60037A946 /* ftmoderr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmoderr.h; sourceTree = ""; }; + B3C89D982877D0B60037A946 /* ftbitmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbitmap.h; sourceTree = ""; }; + B3C89D992877D0B60037A946 /* ftlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftlist.h; sourceTree = ""; }; + B3C89D9A2877D0B60037A946 /* ftmac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmac.h; sourceTree = ""; }; + B3C89D9B2877D0B70037A946 /* ftlcdfil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftlcdfil.h; sourceTree = ""; }; + B3C89D9C2877D0B70037A946 /* ftautoh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftautoh.h; sourceTree = ""; }; + B3C89D9D2877D0B70037A946 /* ftbdf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbdf.h; sourceTree = ""; }; + B3C89D9E2877D0B70037A946 /* ftrender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftrender.h; sourceTree = ""; }; + B3C89D9F2877D0B70037A946 /* m64p_vidext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_vidext.h; sourceTree = ""; }; + B3C89DA02877D0B70037A946 /* m64p_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_common.h; sourceTree = ""; }; + B3C89DA12877D0B70037A946 /* callbacks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = callbacks.h; sourceTree = ""; }; + B3C89DA22877D0B70037A946 /* m64p_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_types.h; sourceTree = ""; }; + B3C89DA32877D0B70037A946 /* m64p_debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_debugger.h; sourceTree = ""; }; + B3C89DA52877D0B70037A946 /* wglext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wglext.h; sourceTree = ""; }; + B3C89DA62877D0B70037A946 /* glext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glext.h; sourceTree = ""; }; + B3C89DA72877D0B70037A946 /* glxext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glxext.h; sourceTree = ""; }; + B3C89DA82877D0B70037A946 /* glcorearb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glcorearb.h; sourceTree = ""; }; + B3C89DA92877D0B70037A946 /* debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; + B3C89DAA2877D0B70037A946 /* m64p_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_config.h; sourceTree = ""; }; + B3C89DAB2877D0B70037A946 /* m64p_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_plugin.h; sourceTree = ""; }; + B3C89DAC2877D0B70037A946 /* Textures.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Textures.cpp; sourceTree = ""; }; + B3C89DAD2877D0B70037A946 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3C89DAE2877D0B70037A946 /* gSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gSP.cpp; sourceTree = ""; }; + B3C89DAF2877D0B70037A946 /* TextDrawer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextDrawer.cpp; sourceTree = ""; }; + B3C89DB02877D0B70037A946 /* TextDrawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextDrawer.h; sourceTree = ""; }; + B3C89DB12877D0B70037A946 /* Config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = ""; }; + B3C89DB22877D0B70037A946 /* GLideN64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GLideN64.cpp; sourceTree = ""; }; + B3C89DB32877D0B70037A946 /* DisplayWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisplayWindow.h; sourceTree = ""; }; + B3C89DB42877D0B70037A946 /* Performance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Performance.h; sourceTree = ""; }; + B3C89DB52877D0B70037A946 /* Types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Types.h; sourceTree = ""; }; + B3C89DB62877D0B70037A946 /* convert.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = convert.cpp; sourceTree = ""; }; + B3C89DB82877D0B70037A946 /* BlueNoiseTexture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BlueNoiseTexture.cpp; sourceTree = ""; }; + B3C89DB92877D0B70037A946 /* RDRAMtoColorBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RDRAMtoColorBuffer.h; sourceTree = ""; }; + B3C89DBA2877D0B70037A946 /* DepthBufferToRDRAM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBufferToRDRAM.cpp; sourceTree = ""; }; + B3C89DBB2877D0B70037A946 /* RDRAMtoColorBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RDRAMtoColorBuffer.cpp; sourceTree = ""; }; + B3C89DBC2877D0B70037A946 /* ColorBufferToRDRAMStub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColorBufferToRDRAMStub.h; sourceTree = ""; }; + B3C89DBD2877D0B70037A946 /* DepthBufferToRDRAM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DepthBufferToRDRAM.h; sourceTree = ""; }; + B3C89DBE2877D0B70037A946 /* BlueNoiseTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BlueNoiseTexture.h; sourceTree = ""; }; + B3C89DBF2877D0B70037A946 /* WriteToRDRAM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WriteToRDRAM.h; sourceTree = ""; }; + B3C89DC02877D0B70037A946 /* ColorBufferToRDRAM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ColorBufferToRDRAM.cpp; sourceTree = ""; }; + B3C89DC12877D0B70037A946 /* ColorBufferToRDRAM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColorBufferToRDRAM.h; sourceTree = ""; }; + B3C89DC22877D0B70037A946 /* PostProcessor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PostProcessor.cpp; sourceTree = ""; }; + B3C89DC32877D0B70037A946 /* NoiseTexture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NoiseTexture.cpp; sourceTree = ""; }; + B3C89DC42877D0B70037A946 /* RSP_LoadMatrixX86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RSP_LoadMatrixX86.cpp; sourceTree = ""; }; + B3C89DC52877D0B70037A946 /* iob.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = iob.cpp; sourceTree = ""; }; + B3C89DC62877D0B70037A946 /* MemoryStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemoryStatus.h; sourceTree = ""; }; + B3C89DC72877D0B70037A946 /* TextureFilterHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextureFilterHandler.h; sourceTree = ""; }; + B3C89DC82877D0B70037A946 /* SoftwareRender.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SoftwareRender.cpp; sourceTree = ""; }; + B3C89DC92877D0B70037A946 /* FrameBufferInfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrameBufferInfo.cpp; sourceTree = ""; }; + B3C89DCA2877D0B70037A946 /* CombinerKey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CombinerKey.h; sourceTree = ""; }; + B3C89DCB2877D0B70037A946 /* CRC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CRC.h; sourceTree = ""; }; + B3C89DCC2877D0B70037A946 /* TexrectDrawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TexrectDrawer.h; sourceTree = ""; }; + B3C89DCD2877D0B70037A946 /* FrameBufferEmulationIssues.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = FrameBufferEmulationIssues.txt; sourceTree = ""; }; + B3C89DD02877D0B70037A946 /* keycode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keycode.h; sourceTree = ""; }; + B3C89DD12877D0B70037A946 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3C89DD22877D0B70037A946 /* osal_export.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osal_export.h; sourceTree = ""; }; + B3C89DD32877D0B70037A946 /* osal_files_ios.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = osal_files_ios.mm; sourceTree = ""; }; + B3C89DD42877D0B70037A946 /* osal_files.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osal_files.h; sourceTree = ""; }; + B3C89DD52877D0B70037A946 /* osal_files_unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osal_files_unix.c; sourceTree = ""; }; + B3C89DD62877D0B70037A946 /* osal_keys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osal_keys.h; sourceTree = ""; }; + B3C89DD72877D0B70037A946 /* osal_keys_linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osal_keys_linux.c; sourceTree = ""; }; + B3C89DD82877D0B70037A946 /* osal_keys_unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osal_keys_unix.c; sourceTree = ""; }; + B3C89DD92877D0B70037A946 /* osal_files_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osal_files_win32.c; sourceTree = ""; }; + B3C89DDA2877D0B70037A946 /* osal_keys_win.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osal_keys_win.c; sourceTree = ""; }; + B3C89DDB2877D0B70037A946 /* CRC32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CRC32.cpp; sourceTree = ""; }; + B3C89DDC2877D0B70037A946 /* GBI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GBI.cpp; sourceTree = ""; }; + B3C89DDE2877D0B70037A946 /* Config_mupenplus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Config_mupenplus.cpp; sourceTree = ""; }; + B3C89DDF2877D0B70037A946 /* GLideN64_mupenplus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideN64_mupenplus.h; sourceTree = ""; }; + B3C89DE02877D0B70037A946 /* MupenPlusAPIImpl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MupenPlusAPIImpl.cpp; sourceTree = ""; }; + B3C89DE12877D0B70037A946 /* CommonAPIImpl_mupenplus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommonAPIImpl_mupenplus.cpp; sourceTree = ""; }; + B3C89DE22877D0B70037A946 /* MemoryStatus_mupenplus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStatus_mupenplus.cpp; sourceTree = ""; }; + B3C89DE32877D0B70037A946 /* video_api_export.ver */ = {isa = PBXFileReference; lastKnownFileType = text; path = video_api_export.ver; sourceTree = ""; }; + B3C89DE42877D0B70037A946 /* FrameBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrameBuffer.cpp; sourceTree = ""; }; + B3C89DE52877D0B70037A946 /* sdl2_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl2_compat.h; sourceTree = ""; }; + B3C89DE62877D0B70037A946 /* FrameBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FrameBuffer.h; sourceTree = ""; }; + B3C89DE72877D0B70037A946 /* RSP_LoadMatrix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RSP_LoadMatrix.cpp; sourceTree = ""; }; + B3C89DE92877D0B70037A946 /* DepthBufferRender.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBufferRender.cpp; sourceTree = ""; }; + B3C89DEA2877D0B70037A946 /* ClipPolygon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ClipPolygon.cpp; sourceTree = ""; }; + B3C89DEB2877D0B70037A946 /* ClipPolygon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClipPolygon.h; sourceTree = ""; }; + B3C89DEC2877D0B70037A946 /* DepthBufferRender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DepthBufferRender.h; sourceTree = ""; }; + B3C89DED2877D0B70037A946 /* GLideN64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideN64.h; sourceTree = ""; }; + B3C89DEE2877D0B70037A946 /* ZlutTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZlutTexture.h; sourceTree = ""; }; + B3C89DEF2877D0B70037A946 /* PostProcessor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PostProcessor.h; sourceTree = ""; }; + B3C89DF02877D0B70037A946 /* Log_ios.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Log_ios.mm; sourceTree = ""; }; + B3C89DF12877D0B70037A946 /* DisplayLoadProgress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayLoadProgress.cpp; sourceTree = ""; }; + B3C89DF22877D0B70037A946 /* DepthBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBuffer.cpp; sourceTree = ""; }; + B3C89DF32877D0B70037A946 /* NoiseTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NoiseTexture.h; sourceTree = ""; }; + B3C89DF52877D0B70037A946 /* CommonAPIImpl_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommonAPIImpl_common.cpp; sourceTree = ""; }; + B3C89DF62877D0B70037A946 /* ZilmarPluginAPI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ZilmarPluginAPI.cpp; sourceTree = ""; }; + B3C89DF72877D0B70037A946 /* DisplayWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayWindow.cpp; sourceTree = ""; }; + B3C89DF82877D0B70037A946 /* TextureFilterHandler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilterHandler.cpp; sourceTree = ""; }; + B3C89DF92877D0B70037A946 /* CombinerKey.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CombinerKey.cpp; sourceTree = ""; }; + B3C89DFA2877D0B70037A946 /* getRevision.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = getRevision.sh; sourceTree = ""; }; + B3C89DFB2877D0B70037A946 /* PaletteTexture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PaletteTexture.cpp; sourceTree = ""; }; + B3C89DFD2877D0B70037A946 /* ConfigDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ConfigDialog.cpp; sourceTree = ""; }; + B3C89DFE2877D0B70037A946 /* FullscreenResolutions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FullscreenResolutions.h; sourceTree = ""; }; + B3C89DFF2877D0B70037A946 /* icon.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = icon.qrc; sourceTree = ""; }; + B3C89E002877D0B70037A946 /* configDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = configDialog.ui; sourceTree = ""; }; + B3C89E012877D0B70037A946 /* Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; }; + B3C89E022877D0B70037A946 /* HIDKeyToName.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HIDKeyToName.h; sourceTree = ""; }; + B3C89E032877D0B70037A946 /* AboutDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AboutDialog.cpp; sourceTree = ""; }; + B3C89E042877D0B70037A946 /* GLideNUI.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideNUI.pro; sourceTree = ""; }; + B3C89E052877D0B70037A946 /* QtKeyToHID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QtKeyToHID.h; sourceTree = ""; }; + B3C89E072877D0B70037A946 /* Icon-Original.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "Icon-Original.ico"; sourceTree = ""; }; + B3C89E082877D0B70037A946 /* Left.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Left.ico; sourceTree = ""; }; + B3C89E092877D0B70037A946 /* BottomRight.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = BottomRight.ico; sourceTree = ""; }; + B3C89E0A2877D0B70037A946 /* Right.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Right.ico; sourceTree = ""; }; + B3C89E0B2877D0B70037A946 /* Icon.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Icon.ico; sourceTree = ""; }; + B3C89E0C2877D0B70037A946 /* TopLeft.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = TopLeft.ico; sourceTree = ""; }; + B3C89E0D2877D0B70037A946 /* Info.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Info.ico; sourceTree = ""; }; + B3C89E0E2877D0B70037A946 /* BottomLeft.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = BottomLeft.ico; sourceTree = ""; }; + B3C89E0F2877D0B70037A946 /* Warning.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Warning.ico; sourceTree = ""; }; + B3C89E102877D0B70037A946 /* TopRight.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = TopRight.ico; sourceTree = ""; }; + B3C89E112877D0B70037A946 /* Up.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Up.ico; sourceTree = ""; }; + B3C89E122877D0B70037A946 /* Down.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = Down.ico; sourceTree = ""; }; + B3C89E132877D0B70037A946 /* fullscreenresolutions_mupen64plus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fullscreenresolutions_mupen64plus.cpp; sourceTree = ""; }; + B3C89E142877D0B70037A946 /* ConfigDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConfigDialog.h; sourceTree = ""; }; + B3C89E152877D0B70037A946 /* AboutDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AboutDialog.ui; sourceTree = ""; }; + B3C89E162877D0B70037A946 /* HIDKeyToName.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HIDKeyToName.cpp; sourceTree = ""; }; + B3C89E172877D0B70037A946 /* AboutDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AboutDialog.h; sourceTree = ""; }; + B3C89E182877D0B70037A946 /* GLideNUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideNUI.h; sourceTree = ""; }; + B3C89E192877D0B70037A946 /* Config_GLideNUI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Config_GLideNUI.cpp; sourceTree = ""; }; + B3C89E1A2877D0B70037A946 /* QtKeyToHID.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = QtKeyToHID.cpp; sourceTree = ""; }; + B3C89E1B2877D0B70037A946 /* GLideNUI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GLideNUI.cpp; sourceTree = ""; }; + B3C89E1C2877D0B70037A946 /* Settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Settings.cpp; sourceTree = ""; }; + B3C89E1D2877D0B70037A946 /* fullscreenresolutions_windows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fullscreenresolutions_windows.cpp; sourceTree = ""; }; + B3C89E1E2877D0B70037A946 /* Log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Log.h; sourceTree = ""; }; + B3C89E1F2877D0B70037A946 /* wst.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wst.h; sourceTree = ""; }; + B3C89E202877D0B70037A946 /* Combiner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Combiner.h; sourceTree = ""; }; + B3C89E212877D0B70037A946 /* Config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = ""; }; + B3C89E222877D0B70037A946 /* DebugDump.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DebugDump.cpp; sourceTree = ""; }; + B3C89E232877D0B70037A946 /* DebugDump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DebugDump.h; sourceTree = ""; }; + B3C89E242877D0B70037A946 /* GLideN64.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideN64.rc; sourceTree = ""; }; + B3C89E252877D0B70037A946 /* CommonPluginAPI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommonPluginAPI.cpp; sourceTree = ""; }; + B3C89E272877D0B70037A946 /* TxReSample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxReSample.h; sourceTree = ""; }; + B3C89E282877D0B70037A946 /* TxQuantize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxQuantize.h; sourceTree = ""; }; + B3C89E292877D0B70037A946 /* TxImage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxImage.cpp; sourceTree = ""; }; + B3C89E2A2877D0B70037A946 /* TextureFilters.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters.cpp; sourceTree = ""; }; + B3C89E2B2877D0B70037A946 /* TxInternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxInternal.h; sourceTree = ""; }; + B3C89E2D2877D0B70037A946 /* pngstruct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; + B3C89E2E2877D0B70037A946 /* png.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; + B3C89E2F2877D0B70037A946 /* pnglibconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnglibconf.h; sourceTree = ""; }; + B3C89E302877D0B70037A946 /* pngconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; + B3C89E312877D0B70037A946 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3C89E322877D0B70037A946 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3C89E332877D0B70037A946 /* TextureFilters_hq4x.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_hq4x.cpp; sourceTree = ""; }; + B3C89E342877D0B70037A946 /* TextureFilters_xbrz.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_xbrz.cpp; sourceTree = ""; }; + B3C89E352877D0B70037A946 /* gpl-2.0.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gpl-2.0.txt"; sourceTree = ""; }; + B3C89E362877D0B70037A946 /* TxTexCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxTexCache.cpp; sourceTree = ""; }; + B3C89E372877D0B70037A946 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3C89E382877D0B70037A946 /* TextureFilters_hq2x.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextureFilters_hq2x.h; sourceTree = ""; }; + B3C89E392877D0B70037A946 /* TxDbg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxDbg.cpp; sourceTree = ""; }; + B3C89E3A2877D0B70037A946 /* TxFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxFilter.h; sourceTree = ""; }; + B3C89E3B2877D0B70037A946 /* TextureFilters_hq2x.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_hq2x.cpp; sourceTree = ""; }; + B3C89E3C2877D0B70037A946 /* TxUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxUtil.h; sourceTree = ""; }; + B3C89E3D2877D0B70037A946 /* TxQuantize.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxQuantize.cpp; sourceTree = ""; }; + B3C89E3E2877D0B70037A946 /* TxImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxImage.h; sourceTree = ""; }; + B3C89E3F2877D0B70037A946 /* TextureFilters_xbrz.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextureFilters_xbrz.h; sourceTree = ""; }; + B3C89E402877D0B70037A946 /* TextureFilters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextureFilters.h; sourceTree = ""; }; + B3C89E412877D0B70037A946 /* TxDbg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxDbg.h; sourceTree = ""; }; + B3C89E422877D0B70037A946 /* TxHiResCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxHiResCache.h; sourceTree = ""; }; + B3C89E432877D0B70037A946 /* TxHiResLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxHiResLoader.cpp; sourceTree = ""; }; + B3C89E442877D0B70037A946 /* TxFilter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxFilter.cpp; sourceTree = ""; }; + B3C89E452877D0B70037A946 /* TxTexCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxTexCache.h; sourceTree = ""; }; + B3C89E462877D0B70037A946 /* TxHiResCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxHiResCache.cpp; sourceTree = ""; }; + B3C89E472877D0B70037A946 /* txWidestringHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = txWidestringHelper.h; sourceTree = ""; }; + B3C89E482877D0B70037A946 /* TextureFilters_2xsai.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextureFilters_2xsai.h; sourceTree = ""; }; + B3C89E492877D0B70037A946 /* TxCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxCache.cpp; sourceTree = ""; }; + B3C89E4A2877D0B70037A946 /* TxUtil.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxUtil.cpp; sourceTree = ""; }; + B3C89E4C2877D0B70037A946 /* libdxtn.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libdxtn.a; sourceTree = ""; }; + B3C89E4D2877D0B70037A946 /* libz.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libz.a; sourceTree = ""; }; + B3C89E4E2877D0B70037A946 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpng.a; sourceTree = ""; }; + B3C89E4F2877D0B70037A946 /* TextureFilters_lq2x.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextureFilters_lq2x.h; sourceTree = ""; }; + B3C89E502877D0B70037A946 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + B3C89E512877D0B70037A946 /* TxHiResLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxHiResLoader.h; sourceTree = ""; }; + B3C89E522877D0B70037A946 /* TxHiResNoCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxHiResNoCache.h; sourceTree = ""; }; + B3C89E532877D0B70037A946 /* TxFilterExport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxFilterExport.h; sourceTree = ""; }; + B3C89E542877D0B70037A946 /* TxReSample.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxReSample.cpp; sourceTree = ""; }; + B3C89E552877D0B70037A946 /* TxHiResNoCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxHiResNoCache.cpp; sourceTree = ""; }; + B3C89E562877D0B70037A946 /* TextureFilters_2xsai.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_2xsai.cpp; sourceTree = ""; }; + B3C89E572877D0B70037A946 /* TxCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TxCache.h; sourceTree = ""; }; + B3C89E582877D0B70037A946 /* TxFilterExport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxFilterExport.cpp; sourceTree = ""; }; + B3C89E592877D0B70037A946 /* TextureFilters_hq4x.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextureFilters_hq4x.h; sourceTree = ""; }; + B3C89E5A2877D0B70037A946 /* N64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = N64.h; sourceTree = ""; }; + B3C89E5B2877D0B70037A946 /* gSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gSP.h; sourceTree = ""; }; + B3C89E5C2877D0B70037A946 /* RSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RSP.h; sourceTree = ""; }; + B3C89E5D2877D0B70037A946 /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B3C89E5E2877D0B70037A946 /* Combiner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Combiner.cpp; sourceTree = ""; }; + B3C89E602877D0B70037A946 /* gSPNeon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gSPNeon.cpp; sourceTree = ""; }; + B3C89E612877D0B70037A946 /* 3DMathNeon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 3DMathNeon.cpp; sourceTree = ""; }; + B3C89E622877D0B70037A946 /* RSP_LoadMatrixNeon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RSP_LoadMatrixNeon.cpp; sourceTree = ""; }; + B3C89E632877D0B70037A946 /* CRC_OPT_NEON.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CRC_OPT_NEON.cpp; sourceTree = ""; }; + B3C89E642877D0B70037A946 /* 3DMath.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 3DMath.cpp; sourceTree = ""; }; + B3C89E652877D0B70037A946 /* Debugger.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Debugger.cpp; sourceTree = ""; }; + B3C89E662877D0B70037A946 /* 3DMath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 3DMath.h; sourceTree = ""; }; + B3C89E672877D0B70037A946 /* CRC32_ARMV8.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CRC32_ARMV8.cpp; sourceTree = ""; }; + B3C89E692877D0B70037A946 /* xxhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; + B3C89E6A2877D0B70037A946 /* gDP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gDP.h; sourceTree = ""; }; + B3C89E6B2877D0B70037A946 /* GraphicsDrawer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsDrawer.cpp; sourceTree = ""; }; + B3C89E6C2877D0B70037A946 /* Debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Debugger.h; sourceTree = ""; }; + B3C89E6D2877D0B70037A946 /* RSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RSP.cpp; sourceTree = ""; }; + B3C89E6E2877D0B70037A946 /* VI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VI.h; sourceTree = ""; }; + B3C89E6F2877D0B70037A946 /* SoftwareRender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SoftwareRender.h; sourceTree = ""; }; + B3C89E712877D0B70037A946 /* CommonAPIImpl_windows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommonAPIImpl_windows.cpp; sourceTree = ""; }; + B3C89E722877D0B70037A946 /* GLideN64_windows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GLideN64_windows.cpp; sourceTree = ""; }; + B3C89E732877D0B70037A946 /* ScreenShot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScreenShot.h; sourceTree = ""; }; + B3C89E742877D0B70037A946 /* GLideN64_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideN64_windows.h; sourceTree = ""; }; + B3C89E752877D0B70037A946 /* MemoryStatus_windows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStatus_windows.cpp; sourceTree = ""; }; + B3C89E762877D0B70037A946 /* ZilmarAPIImpl_windows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ZilmarAPIImpl_windows.cpp; sourceTree = ""; }; + B3C89E772877D0B70037A946 /* ScreenShot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ScreenShot.cpp; sourceTree = ""; }; + B3C89E782877D0B70037A946 /* convert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = convert.h; sourceTree = ""; }; + B3C89E792877D0B70037A946 /* TextDrawerStub.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextDrawerStub.cpp; sourceTree = ""; }; + B3C89E7B2877D0B70037A946 /* ContextImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContextImpl.h; sourceTree = ""; }; + B3C89E7C2877D0B70037A946 /* ObjectHandle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectHandle.cpp; sourceTree = ""; }; + B3C89E7D2877D0B70037A946 /* Parameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Parameter.h; sourceTree = ""; }; + B3C89E7E2877D0B70037A946 /* Context.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Context.cpp; sourceTree = ""; }; + B3C89E7F2877D0B70037A946 /* ShaderProgram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShaderProgram.h; sourceTree = ""; }; + B3C89E802877D0B70037A946 /* Context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Context.h; sourceTree = ""; }; + B3C89E812877D0B70037A946 /* FramebufferTextureFormats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FramebufferTextureFormats.h; sourceTree = ""; }; + B3C89E822877D0B70037A946 /* ColorBufferReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColorBufferReader.h; sourceTree = ""; }; + B3C89E832877D0B70037A946 /* ColorBufferReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ColorBufferReader.cpp; sourceTree = ""; }; + B3C89E842877D0B70037A946 /* Parameters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Parameters.h; sourceTree = ""; }; + B3C89E852877D0B70037A946 /* PixelBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PixelBuffer.h; sourceTree = ""; }; + B3C89E882877D0B70037A946 /* mupen64plus_DisplayWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mupen64plus_DisplayWindow.cpp; sourceTree = ""; }; + B3C89E892877D0B70037A946 /* opengl_ColorBufferReaderWithBufferStorage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithBufferStorage.cpp; sourceTree = ""; }; + B3C89E8A2877D0B70037A946 /* opengl_UnbufferedDrawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_UnbufferedDrawer.h; sourceTree = ""; }; + B3C89E8B2877D0B70037A946 /* opengl_ContextImpl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ContextImpl.cpp; sourceTree = ""; }; + B3C89E8C2877D0B70037A946 /* opengl_ColorBufferReaderWithEGLImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithEGLImage.h; sourceTree = ""; }; + B3C89E8D2877D0B70037A946 /* opengl_ColorBufferReaderWithEGLImage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithEGLImage.cpp; sourceTree = ""; }; + B3C89E8E2877D0B70037A946 /* opengl_BufferManipulationObjectFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_BufferManipulationObjectFactory.h; sourceTree = ""; }; + B3C89E8F2877D0B70037A946 /* opengl_Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_Utils.h; sourceTree = ""; }; + B3C89E902877D0B70037A946 /* opengl_GraphicsDrawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_GraphicsDrawer.h; sourceTree = ""; }; + B3C89E912877D0B70037A946 /* opengl_Attributes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Attributes.cpp; sourceTree = ""; }; + B3C89E922877D0B70037A946 /* opengl_Attributes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_Attributes.h; sourceTree = ""; }; + B3C89E932877D0B70037A946 /* opengl_BufferManipulationObjectFactory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_BufferManipulationObjectFactory.cpp; sourceTree = ""; }; + B3C89E942877D0B70037A946 /* opengl_CachedFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_CachedFunctions.h; sourceTree = ""; }; + B3C89E962877D0B70037A946 /* glsl_FXAA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_FXAA.h; sourceTree = ""; }; + B3C89E972877D0B70037A946 /* glsl_CombinerProgramBuilderCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramBuilderCommon.h; sourceTree = ""; }; + B3C89E982877D0B70037A946 /* glsl_FXAA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_FXAA.cpp; sourceTree = ""; }; + B3C89E992877D0B70037A946 /* glsl_CombinerProgramBuilderFast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramBuilderFast.h; sourceTree = ""; }; + B3C89E9A2877D0B70037A946 /* glsl_CombinerProgramUniformFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramUniformFactory.h; sourceTree = ""; }; + B3C89E9B2877D0B70037A946 /* glsl_CombinerProgramBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramBuilder.h; sourceTree = ""; }; + B3C89E9C2877D0B70037A946 /* glsl_CombinerProgramImpl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramImpl.cpp; sourceTree = ""; }; + B3C89E9D2877D0B70037A946 /* glsl_SpecialShadersFactory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_SpecialShadersFactory.cpp; sourceTree = ""; }; + B3C89E9E2877D0B70037A946 /* glsl_CombinerProgramBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramBuilder.cpp; sourceTree = ""; }; + B3C89E9F2877D0B70037A946 /* glsl_CombinerInputs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerInputs.h; sourceTree = ""; }; + B3C89EA02877D0B70037A946 /* glsl_CombinerProgramUniformFactoryFast.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramUniformFactoryFast.cpp; sourceTree = ""; }; + B3C89EA12877D0B70037A946 /* glsl_CombinerInputs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerInputs.cpp; sourceTree = ""; }; + B3C89EA22877D0B70037A946 /* glsl_Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_Utils.h; sourceTree = ""; }; + B3C89EA32877D0B70037A946 /* glsl_CombinerProgramUniformFactory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramUniformFactory.cpp; sourceTree = ""; }; + B3C89EA42877D0B70037A946 /* glsl_SpecialShadersFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_SpecialShadersFactory.h; sourceTree = ""; }; + B3C89EA52877D0B70037A946 /* glsl_CombinerProgramBuilderAccurate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramBuilderAccurate.cpp; sourceTree = ""; }; + B3C89EA62877D0B70037A946 /* glsl_CombinerProgramImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramImpl.h; sourceTree = ""; }; + B3C89EA72877D0B70037A946 /* glsl_CombinerProgramUniformFactoryAccurate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramUniformFactoryAccurate.cpp; sourceTree = ""; }; + B3C89EA82877D0B70037A946 /* glsl_ShaderStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_ShaderStorage.h; sourceTree = ""; }; + B3C89EA92877D0B70037A946 /* glsl_CombinerProgramBuilderAccurate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramBuilderAccurate.h; sourceTree = ""; }; + B3C89EAA2877D0B70037A946 /* glsl_CombinerProgramUniformFactoryFast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramUniformFactoryFast.h; sourceTree = ""; }; + B3C89EAB2877D0B70037A946 /* glsl_CombinerProgramUniformFactoryCommon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramUniformFactoryCommon.cpp; sourceTree = ""; }; + B3C89EAC2877D0B70037A946 /* glsl_ShaderStorage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_ShaderStorage.cpp; sourceTree = ""; }; + B3C89EAD2877D0B70037A946 /* glsl_CombinerProgramBuilderFast.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramBuilderFast.cpp; sourceTree = ""; }; + B3C89EAE2877D0B70037A946 /* glsl_CombinerProgramBuilderCommon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramBuilderCommon.cpp; sourceTree = ""; }; + B3C89EAF2877D0B70037A946 /* glsl_Utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_Utils.cpp; sourceTree = ""; }; + B3C89EB02877D0B70037A946 /* glsl_CombinerProgramUniformFactoryAccurate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramUniformFactoryAccurate.h; sourceTree = ""; }; + B3C89EB12877D0B70037A946 /* glsl_ShaderPart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_ShaderPart.h; sourceTree = ""; }; + B3C89EB22877D0B70037A946 /* glsl_CombinerProgramUniformFactoryCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramUniformFactoryCommon.h; sourceTree = ""; }; + B3C89EB32877D0B70037A946 /* opengl_ColorBufferReaderWithBufferStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithBufferStorage.h; sourceTree = ""; }; + B3C89EB42877D0B70037A946 /* opengl_TextureManipulationObjectFactory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_TextureManipulationObjectFactory.cpp; sourceTree = ""; }; + B3C89EB52877D0B70037A946 /* opengl_Parameters.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Parameters.cpp; sourceTree = ""; }; + B3C89EB62877D0B70037A946 /* opengl_ContextImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_ContextImpl.h; sourceTree = ""; }; + B3C89EB72877D0B70037A946 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithPixelBuffer.cpp; sourceTree = ""; }; + B3C89EB82877D0B70037A946 /* opengl_Utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Utils.cpp; sourceTree = ""; }; + B3C89EB92877D0B70037A946 /* opengl_GLInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_GLInfo.h; sourceTree = ""; }; + B3C89EBA2877D0B70037A946 /* opengl_ColorBufferReaderWithReadPixels.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithReadPixels.h; sourceTree = ""; }; + B3C89EBB2877D0B70037A946 /* GLFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLFunctions.h; sourceTree = ""; }; + B3C89EBD2877D0B70037A946 /* windows_DisplayWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = windows_DisplayWindow.cpp; sourceTree = ""; }; + B3C89EBE2877D0B70037A946 /* WindowsWGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WindowsWGL.h; sourceTree = ""; }; + B3C89EBF2877D0B70037A946 /* WindowsWGL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WindowsWGL.cpp; sourceTree = ""; }; + B3C89EC02877D0B70037A946 /* opengl_BufferedDrawer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_BufferedDrawer.cpp; sourceTree = ""; }; + B3C89EC12877D0B70037A946 /* opengl_TextureManipulationObjectFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_TextureManipulationObjectFactory.h; sourceTree = ""; }; + B3C89EC22877D0B70037A946 /* opengl_BufferedDrawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_BufferedDrawer.h; sourceTree = ""; }; + B3C89EC32877D0B70037A946 /* opengl_CachedFunctions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_CachedFunctions.cpp; sourceTree = ""; }; + B3C89EC42877D0B70037A946 /* opengl_GLInfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_GLInfo.cpp; sourceTree = ""; }; + B3C89EC52877D0B70037A946 /* GLFunctions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GLFunctions.cpp; sourceTree = ""; }; + B3C89EC62877D0B70037A946 /* opengl_UnbufferedDrawer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_UnbufferedDrawer.cpp; sourceTree = ""; }; + B3C89EC82877D0B70037A946 /* opengl_WrappedFunctions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_WrappedFunctions.cpp; sourceTree = ""; }; + B3C89EC92877D0B70037A946 /* RingBufferPool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RingBufferPool.cpp; sourceTree = ""; }; + B3C89ECA2877D0B70037A946 /* readerwriterqueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = readerwriterqueue.h; sourceTree = ""; }; + B3C89ECB2877D0B70037A946 /* opengl_ObjectPool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ObjectPool.cpp; sourceTree = ""; }; + B3C89ECC2877D0B70037A946 /* RingBufferPool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RingBufferPool.h; sourceTree = ""; }; + B3C89ECD2877D0B70037A946 /* opengl_Command.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_Command.h; sourceTree = ""; }; + B3C89ECE2877D0B70037A946 /* atomicops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atomicops.h; sourceTree = ""; }; + B3C89ECF2877D0B70037A946 /* opengl_ObjectPool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_ObjectPool.h; sourceTree = ""; }; + B3C89ED02877D0B70037A946 /* opengl_Wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_Wrapper.h; sourceTree = ""; }; + B3C89ED12877D0B70037A946 /* opengl_Wrapper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Wrapper.cpp; sourceTree = ""; }; + B3C89ED22877D0B70037A946 /* opengl_WrappedFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_WrappedFunctions.h; sourceTree = ""; }; + B3C89ED32877D0B70037A946 /* BlockingQueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BlockingQueue.h; sourceTree = ""; }; + B3C89ED42877D0B70037A946 /* opengl_Command.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Command.cpp; sourceTree = ""; }; + B3C89ED52877D0B70037A946 /* opengl_ColorBufferReaderWithReadPixels.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithReadPixels.cpp; sourceTree = ""; }; + B3C89ED82877D0B70037A946 /* GraphicBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicBuffer.h; sourceTree = ""; }; + B3C89ED92877D0B70037A946 /* libhardware.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libhardware.cpp; sourceTree = ""; }; + B3C89EDA2877D0B70037A946 /* libhardware.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libhardware.h; sourceTree = ""; }; + B3C89EDB2877D0B70037A946 /* gralloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gralloc.h; sourceTree = ""; }; + B3C89EDC2877D0B70037A946 /* GraphicBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicBuffer.cpp; sourceTree = ""; }; + B3C89EDD2877D0B70037A946 /* GraphicBufferWrapper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicBufferWrapper.cpp; sourceTree = ""; }; + B3C89EDF2877D0B70037A946 /* android_hardware_buffer_compat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = android_hardware_buffer_compat.cpp; sourceTree = ""; }; + B3C89EE02877D0B70037A946 /* dcheck.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dcheck.h; sourceTree = ""; }; + B3C89EE12877D0B70037A946 /* check.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = check.h; sourceTree = ""; }; + B3C89EE22877D0B70037A946 /* android_hardware_buffer_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = android_hardware_buffer_compat.h; sourceTree = ""; }; + B3C89EE32877D0B70037A946 /* GraphicBufferWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicBufferWrapper.h; sourceTree = ""; }; + B3C89EE42877D0B70037A946 /* opengl_ColorBufferReaderWithPixelBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithPixelBuffer.h; sourceTree = ""; }; + B3C89EE52877D0B70037A946 /* CombinerProgram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CombinerProgram.h; sourceTree = ""; }; + B3C89EE62877D0B70037A946 /* ObjectHandle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ObjectHandle.h; sourceTree = ""; }; + B3C89EE72877D0B70037A946 /* CombinerProgram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CombinerProgram.cpp; sourceTree = ""; }; + B3C89EE82877D0B70037A946 /* ZlutTexture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ZlutTexture.cpp; sourceTree = ""; }; + B3C89EE92877D0B70037A946 /* RDP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RDP.h; sourceTree = ""; }; + B3C89EEA2877D0B70037A946 /* TexrectDrawer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TexrectDrawer.cpp; sourceTree = ""; }; + B3C89EEB2877D0B70037A946 /* Textures.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Textures.h; sourceTree = ""; }; + B3C89EEC2877D0B70037A946 /* TxFilterStub.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TxFilterStub.cpp; sourceTree = ""; }; + B3C89EED2877D0B70037A946 /* winlnxdefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = winlnxdefs.h; sourceTree = ""; }; + B3C89EEE2877D0B70037A946 /* FrameBufferInfoAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FrameBufferInfoAPI.h; sourceTree = ""; }; + B3C89EEF2877D0B70037A946 /* Log_android.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Log_android.cpp; sourceTree = ""; }; + B3C89EF02877D0B70037A946 /* MupenPlusPluginAPI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MupenPlusPluginAPI.cpp; sourceTree = ""; }; + B3C89EF12877D0B70037A946 /* Platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; + B3C89EF22877D0B70037A946 /* gDP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gDP.cpp; sourceTree = ""; }; + B3C89EF32877D0B70037A946 /* GBI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBI.h; sourceTree = ""; }; + B3C89EF52877D0B70037A946 /* wtl-OsdPreview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "wtl-OsdPreview.h"; sourceTree = ""; }; + B3C89EF62877D0B70037A946 /* config-osd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-osd.cpp"; sourceTree = ""; }; + B3C89EF72877D0B70037A946 /* About.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = About.cpp; sourceTree = ""; }; + B3C89EF82877D0B70037A946 /* ConfigDlg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConfigDlg.h; sourceTree = ""; }; + B3C89EF92877D0B70037A946 /* About.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = About.h; sourceTree = ""; }; + B3C89EFA2877D0B70037A946 /* FullscreenResolutions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FullscreenResolutions.h; sourceTree = ""; }; + B3C89EFB2877D0B70037A946 /* wtl-tooltip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "wtl-tooltip.h"; sourceTree = ""; }; + B3C89EFC2877D0B70037A946 /* wtl-ColorButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "wtl-ColorButton.h"; sourceTree = ""; }; + B3C89EFD2877D0B70037A946 /* config-overscan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-overscan.h"; sourceTree = ""; }; + B3C89EFF2877D0B70037A946 /* StdString.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StdString.cpp; sourceTree = ""; }; + B3C89F002877D0B70037A946 /* md5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = md5.cpp; sourceTree = ""; }; + B3C89F012877D0B70037A946 /* util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = util.cpp; sourceTree = ""; }; + B3C89F022877D0B70037A946 /* path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = path.h; sourceTree = ""; }; + B3C89F032877D0B70037A946 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3C89F042877D0B70037A946 /* ts2lang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ts2lang.cpp; sourceTree = ""; }; + B3C89F052877D0B70037A946 /* util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; + B3C89F062877D0B70037A946 /* path.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = path.cpp; sourceTree = ""; }; + B3C89F072877D0B70037A946 /* StdString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StdString.h; sourceTree = ""; }; + B3C89F082877D0B70037A946 /* Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; }; + B3C89F092877D0B70037A946 /* wtl-OsdButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "wtl-OsdButton.cpp"; sourceTree = ""; }; + B3C89F0A2877D0B70037A946 /* config-debug.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-debug.cpp"; sourceTree = ""; }; + B3C89F0B2877D0B70037A946 /* wtl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wtl.h; sourceTree = ""; }; + B3C89F0C2877D0B70037A946 /* config-tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-tab.cpp"; sourceTree = ""; }; + B3C89F0D2877D0B70037A946 /* FontInfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FontInfo.cpp; sourceTree = ""; }; + B3C89F0E2877D0B70037A946 /* config-overscan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-overscan.cpp"; sourceTree = ""; }; + B3C89F0F2877D0B70037A946 /* config-emulation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-emulation.h"; sourceTree = ""; }; + B3C89F102877D0B70037A946 /* Language.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Language.h; sourceTree = ""; }; + B3C89F112877D0B70037A946 /* config-video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-video.h"; sourceTree = ""; }; + B3C89F122877D0B70037A946 /* config-texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-texture.h"; sourceTree = ""; }; + B3C89F132877D0B70037A946 /* config-framebuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-framebuffer.cpp"; sourceTree = ""; }; + B3C89F142877D0B70037A946 /* FontInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FontInfo.h; sourceTree = ""; }; + B3C89F152877D0B70037A946 /* Language.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Language.cpp; sourceTree = ""; }; + B3C89F172877D0B70037A946 /* atluser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atluser.h; sourceTree = ""; }; + B3C89F182877D0B70037A946 /* atldwm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atldwm.h; sourceTree = ""; }; + B3C89F192877D0B70037A946 /* atlddx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlddx.h; sourceTree = ""; }; + B3C89F1A2877D0B70037A946 /* atltheme.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atltheme.h; sourceTree = ""; }; + B3C89F1B2877D0B70037A946 /* atlribbon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlribbon.h; sourceTree = ""; }; + B3C89F1C2877D0B70037A946 /* atlapp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlapp.h; sourceTree = ""; }; + B3C89F1D2877D0B70037A946 /* atldlgs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atldlgs.h; sourceTree = ""; }; + B3C89F1E2877D0B70037A946 /* atlwinx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlwinx.h; sourceTree = ""; }; + B3C89F1F2877D0B70037A946 /* atlcrack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlcrack.h; sourceTree = ""; }; + B3C89F202877D0B70037A946 /* atlframe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlframe.h; sourceTree = ""; }; + B3C89F212877D0B70037A946 /* atlgdi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlgdi.h; sourceTree = ""; }; + B3C89F222877D0B70037A946 /* atlctrls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlctrls.h; sourceTree = ""; }; + B3C89F232877D0B70037A946 /* atlctrlw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlctrlw.h; sourceTree = ""; }; + B3C89F242877D0B70037A946 /* atlresce.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlresce.h; sourceTree = ""; }; + B3C89F252877D0B70037A946 /* atlprint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlprint.h; sourceTree = ""; }; + B3C89F262877D0B70037A946 /* atlscrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlscrl.h; sourceTree = ""; }; + B3C89F272877D0B70037A946 /* atlctrlx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlctrlx.h; sourceTree = ""; }; + B3C89F282877D0B70037A946 /* atlsplit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlsplit.h; sourceTree = ""; }; + B3C89F292877D0B70037A946 /* atlwince.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlwince.h; sourceTree = ""; }; + B3C89F2A2877D0B70037A946 /* atlres.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlres.h; sourceTree = ""; }; + B3C89F2B2877D0B70037A946 /* atlfind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlfind.h; sourceTree = ""; }; + B3C89F2C2877D0B70037A946 /* atlmisc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atlmisc.h; sourceTree = ""; }; + B3C89F2D2877D0B70037A946 /* GlSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GlSettings.h; sourceTree = ""; }; + B3C89F2E2877D0B70037A946 /* wtl-ColorButton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "wtl-ColorButton.cpp"; sourceTree = ""; }; + B3C89F2F2877D0B70037A946 /* IniFileClass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = IniFileClass.cpp; sourceTree = ""; }; + B3C89F302877D0B70037A946 /* wtl-BitmapPicture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "wtl-BitmapPicture.h"; sourceTree = ""; }; + B3C89F312877D0B70037A946 /* FileClass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FileClass.cpp; sourceTree = ""; }; + B3C89F322877D0B70037A946 /* wtl-OsdButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "wtl-OsdButton.h"; sourceTree = ""; }; + B3C89F342877D0B70037A946 /* tinyxml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tinyxml.h; sourceTree = ""; }; + B3C89F352877D0B70037A946 /* ticppapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ticppapi.h; sourceTree = ""; }; + B3C89F362877D0B70037A946 /* tinystr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = ""; }; + B3C89F372877D0B70037A946 /* ticpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ticpp.h; sourceTree = ""; }; + B3C89F382877D0B70037A946 /* ticpp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ticpp.cpp; sourceTree = ""; }; + B3C89F392877D0B70037A946 /* tinystr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = ""; }; + B3C89F3A2877D0B70037A946 /* tinyxmlparser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlparser.cpp; sourceTree = ""; }; + B3C89F3B2877D0B70037A946 /* tinyxmlerror.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlerror.cpp; sourceTree = ""; }; + B3C89F3C2877D0B70037A946 /* ticpprc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ticpprc.h; sourceTree = ""; }; + B3C89F3D2877D0B70037A946 /* tinyxml.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = ""; }; + B3C89F3E2877D0B70037A946 /* GLideNUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideNUI.h; sourceTree = ""; }; + B3C89F3F2877D0B70037A946 /* config-emulation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-emulation.cpp"; sourceTree = ""; }; + B3C89F402877D0B70037A946 /* FileClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FileClass.h; sourceTree = ""; }; + B3C89F412877D0B70037A946 /* IniFileClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IniFileClass.h; sourceTree = ""; }; + B3C89F422877D0B70037A946 /* config-framebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-framebuffer.h"; sourceTree = ""; }; + B3C89F432877D0B70037A946 /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B3C89F442877D0B70037A946 /* config-texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-texture.cpp"; sourceTree = ""; }; + B3C89F452877D0B70037A946 /* InputDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InputDialog.cpp; sourceTree = ""; }; + B3C89F462877D0B70037A946 /* wtl-OsdPreview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "wtl-OsdPreview.cpp"; sourceTree = ""; }; + B3C89F472877D0B70037A946 /* wtl-WindowFont.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "wtl-WindowFont.h"; sourceTree = ""; }; + B3C89F482877D0B70037A946 /* config-tab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-tab.h"; sourceTree = ""; }; + B3C89F492877D0B70037A946 /* GLideNUI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GLideNUI.cpp; sourceTree = ""; }; + B3C89F4A2877D0B70037A946 /* wtl-BitmapPicture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "wtl-BitmapPicture.cpp"; sourceTree = ""; }; + B3C89F4B2877D0B70037A946 /* ConfigDlg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ConfigDlg.cpp; sourceTree = ""; }; + B3C89F4C2877D0B70037A946 /* config-video.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "config-video.cpp"; sourceTree = ""; }; + B3C89F4D2877D0B70037A946 /* config-debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-debug.h"; sourceTree = ""; }; + B3C89F4E2877D0B70037A946 /* InputDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InputDialog.h; sourceTree = ""; }; + B3C89F4F2877D0B70037A946 /* config-osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-osd.h"; sourceTree = ""; }; + B3C89F502877D0B70037A946 /* Settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Settings.cpp; sourceTree = ""; }; + B3C89F512877D0B70037A946 /* fullscreenresolutions_windows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fullscreenresolutions_windows.cpp; sourceTree = ""; }; + B3C89F522877D0B70037A946 /* GLideNUI.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = GLideNUI.rc; sourceTree = ""; }; + B3C89F532877D0B70037A946 /* GlSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GlSettings.cpp; sourceTree = ""; }; + B3C89F542877D0B70037A946 /* CRC_OPT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CRC_OPT.cpp; sourceTree = ""; }; + B3C89F552877D0B70037A946 /* N64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = N64.cpp; sourceTree = ""; }; + B3C89F562877D0B70037A946 /* GraphicsDrawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicsDrawer.h; sourceTree = ""; }; + B3C89F572877D0B70037A946 /* VI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VI.cpp; sourceTree = ""; }; + B3C89F582877D0B70037A946 /* DisplayLoadProgress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisplayLoadProgress.h; sourceTree = ""; }; + B3C89F592877D0B70037A946 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3C89F5A2877D0B70037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C89F5C2877D0B70037A946 /* rdp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rdp.cpp; sourceTree = ""; }; + B3C89F5E2877D0B70037A946 /* COMMIT */ = {isa = PBXFileReference; lastKnownFileType = text; path = COMMIT; sourceTree = ""; }; + B3C89F602877D0B70037A946 /* rdp_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rdp_common.hpp; sourceTree = ""; }; + B3C89F612877D0B70037A946 /* rdp_renderer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rdp_renderer.hpp; sourceTree = ""; }; + B3C89F622877D0B70037A946 /* video_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = video_interface.cpp; sourceTree = ""; }; + B3C89F632877D0B70037A946 /* rdp_device.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rdp_device.hpp; sourceTree = ""; }; + B3C89F642877D0B70037A946 /* luts.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = luts.hpp; sourceTree = ""; }; + B3C89F652877D0B70037A946 /* rdp_dump_write.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rdp_dump_write.hpp; sourceTree = ""; }; + B3C89F662877D0B70037A946 /* command_ring.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = command_ring.hpp; sourceTree = ""; }; + B3C89F672877D0B70037A946 /* video_interface.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = video_interface.hpp; sourceTree = ""; }; + B3C89F682877D0B70037A946 /* rdp_device.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rdp_device.cpp; sourceTree = ""; }; + B3C89F692877D0B70037A946 /* rdp_dump_write.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rdp_dump_write.cpp; sourceTree = ""; }; + B3C89F6B2877D0B70037A946 /* data_structures_buffers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = data_structures_buffers.h; sourceTree = ""; }; + B3C89F6C2877D0B70037A946 /* extract_vram.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = extract_vram.comp; sourceTree = ""; }; + B3C89F6D2877D0B70037A946 /* load_scissor_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_scissor_state.h; sourceTree = ""; }; + B3C89F6E2877D0B70037A946 /* vi_fetch.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vi_fetch.frag; sourceTree = ""; }; + B3C89F6F2877D0B70037A946 /* load_span_offsets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_span_offsets.h; sourceTree = ""; }; + B3C89F702877D0B70037A946 /* depth_blend.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = depth_blend.comp; sourceTree = ""; }; + B3C89F712877D0B70037A946 /* update_upscaled_domain_resolve.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = update_upscaled_domain_resolve.comp; sourceTree = ""; }; + B3C89F722877D0B70037A946 /* blender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blender.h; sourceTree = ""; }; + B3C89F732877D0B70037A946 /* masked_rdram_resolve.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = masked_rdram_resolve.comp; sourceTree = ""; }; + B3C89F742877D0B70037A946 /* noise.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = noise.h; sourceTree = ""; }; + B3C89F752877D0B70037A946 /* load_span_setup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_span_setup.h; sourceTree = ""; }; + B3C89F762877D0B70037A946 /* vi_status.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vi_status.h; sourceTree = ""; }; + B3C89F772877D0B70037A946 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3C89F782877D0B70037A946 /* tile_binning_combined.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = tile_binning_combined.comp; sourceTree = ""; }; + B3C89F792877D0B70037A946 /* store_span_setup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = store_span_setup.h; sourceTree = ""; }; + B3C89F7A2877D0B70037A946 /* dither.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dither.h; sourceTree = ""; }; + B3C89F7B2877D0B70037A946 /* rasterizer.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = rasterizer.comp; sourceTree = ""; }; + B3C89F7C2877D0B70037A946 /* vi_divot.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vi_divot.frag; sourceTree = ""; }; + B3C89F7D2877D0B70037A946 /* vi_debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vi_debug.h; sourceTree = ""; }; + B3C89F7E2877D0B70037A946 /* tmem_update.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = tmem_update.comp; sourceTree = ""; }; + B3C89F7F2877D0B70037A946 /* update_upscaled_domain_post.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = update_upscaled_domain_post.comp; sourceTree = ""; }; + B3C89F802877D0B70037A946 /* depth_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = depth_test.h; sourceTree = ""; }; + B3C89F812877D0B70037A946 /* shading.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shading.h; sourceTree = ""; }; + B3C89F822877D0B70037A946 /* clear_write_mask.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = clear_write_mask.comp; sourceTree = ""; }; + B3C89F832877D0B70037A946 /* update_upscaled_domain_pre.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = update_upscaled_domain_pre.comp; sourceTree = ""; }; + B3C89F842877D0B70037A946 /* ubershader.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = ubershader.comp; sourceTree = ""; }; + B3C89F852877D0B70037A946 /* interpolation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interpolation.h; sourceTree = ""; }; + B3C89F862877D0B70037A946 /* slangmosh.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = slangmosh.hpp; sourceTree = ""; }; + B3C89F872877D0B70037A946 /* coverage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coverage.h; sourceTree = ""; }; + B3C89F882877D0B70037A946 /* vi_deinterlace.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vi_deinterlace.frag; sourceTree = ""; }; + B3C89F892877D0B70037A946 /* load_attribute_setup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_attribute_setup.h; sourceTree = ""; }; + B3C89F8A2877D0B70037A946 /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B3C89F8B2877D0B70037A946 /* memory_interfacing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_interfacing.h; sourceTree = ""; }; + B3C89F8C2877D0B70037A946 /* perspective.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = perspective.h; sourceTree = ""; }; + B3C89F8D2877D0B70037A946 /* vi_scale.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vi_scale.frag; sourceTree = ""; }; + B3C89F8E2877D0B70037A946 /* load_depth_blend_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_depth_blend_state.h; sourceTree = ""; }; + B3C89F8F2877D0B70037A946 /* load_derived_setup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_derived_setup.h; sourceTree = ""; }; + B3C89F902877D0B70037A946 /* binning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = binning.h; sourceTree = ""; }; + B3C89F912877D0B70037A946 /* combiner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = combiner.h; sourceTree = ""; }; + B3C89F922877D0B70037A946 /* load_static_raster_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_static_raster_state.h; sourceTree = ""; }; + B3C89F932877D0B70037A946 /* data_structures.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = data_structures.h; sourceTree = ""; }; + B3C89F942877D0B70037A946 /* span_setup.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = span_setup.comp; sourceTree = ""; }; + B3C89F952877D0B70037A946 /* texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = texture.h; sourceTree = ""; }; + B3C89F962877D0B70037A946 /* vi_blend_fields.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vi_blend_fields.frag; sourceTree = ""; }; + B3C89F972877D0B70037A946 /* slangmosh.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = slangmosh.json; sourceTree = ""; }; + B3C89F982877D0B70037A946 /* load_triangle_setup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_triangle_setup.h; sourceTree = ""; }; + B3C89F992877D0B70037A946 /* vi_deinterlace.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = vi_deinterlace.vert; sourceTree = ""; }; + B3C89F9A2877D0B70037A946 /* clear_super_sampled_write_mask.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = clear_super_sampled_write_mask.comp; sourceTree = ""; }; + B3C89F9B2877D0B70037A946 /* fullscreen.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = fullscreen.vert; sourceTree = ""; }; + B3C89F9C2877D0B70037A946 /* z_encode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z_encode.h; sourceTree = ""; }; + B3C89F9D2877D0B70037A946 /* small_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = small_types.h; sourceTree = ""; }; + B3C89F9E2877D0B70037A946 /* fb_formats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fb_formats.h; sourceTree = ""; }; + B3C89F9F2877D0B70037A946 /* clear_indirect_buffer.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = clear_indirect_buffer.comp; sourceTree = ""; }; + B3C89FA02877D0B70037A946 /* load_tile_info.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = load_tile_info.h; sourceTree = ""; }; + B3C89FA12877D0B70037A946 /* worker_thread.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = worker_thread.hpp; sourceTree = ""; }; + B3C89FA22877D0B70037A946 /* command_ring.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = command_ring.cpp; sourceTree = ""; }; + B3C89FA32877D0B70037A946 /* rdp_data_structures.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rdp_data_structures.hpp; sourceTree = ""; }; + B3C89FA42877D0B70037A946 /* rdp_renderer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rdp_renderer.cpp; sourceTree = ""; }; + B3C89FA52877D0B70037A946 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3C89FA72877D0B70037A946 /* thread_id.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = thread_id.cpp; sourceTree = ""; }; + B3C89FA82877D0B70037A946 /* hash.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = hash.hpp; sourceTree = ""; }; + B3C89FA92877D0B70037A946 /* intrusive.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = intrusive.hpp; sourceTree = ""; }; + B3C89FAA2877D0B70037A946 /* intrusive_hash_map.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = intrusive_hash_map.hpp; sourceTree = ""; }; + B3C89FAB2877D0B70037A946 /* logging.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = logging.cpp; sourceTree = ""; }; + B3C89FAC2877D0B70037A946 /* read_write_lock.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = read_write_lock.hpp; sourceTree = ""; }; + B3C89FAD2877D0B70037A946 /* aligned_alloc.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = aligned_alloc.hpp; sourceTree = ""; }; + B3C89FAE2877D0B70037A946 /* timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + B3C89FAF2877D0B70037A946 /* thread_name.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = thread_name.cpp; sourceTree = ""; }; + B3C89FB02877D0B70037A946 /* timeline_trace_file.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timeline_trace_file.cpp; sourceTree = ""; }; + B3C89FB12877D0B70037A946 /* bitops.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = bitops.hpp; sourceTree = ""; }; + B3C89FB22877D0B70037A946 /* small_vector.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = small_vector.hpp; sourceTree = ""; }; + B3C89FB32877D0B70037A946 /* intrusive_list.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = intrusive_list.hpp; sourceTree = ""; }; + B3C89FB42877D0B70037A946 /* aligned_alloc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aligned_alloc.cpp; sourceTree = ""; }; + B3C89FB52877D0B80037A946 /* object_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = object_pool.hpp; sourceTree = ""; }; + B3C89FB62877D0B80037A946 /* timer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = timer.hpp; sourceTree = ""; }; + B3C89FB72877D0B80037A946 /* thread_name.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = thread_name.hpp; sourceTree = ""; }; + B3C89FB82877D0B80037A946 /* timeline_trace_file.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = timeline_trace_file.hpp; sourceTree = ""; }; + B3C89FB92877D0B80037A946 /* temporary_hashmap.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = temporary_hashmap.hpp; sourceTree = ""; }; + B3C89FBA2877D0B80037A946 /* thread_id.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = thread_id.hpp; sourceTree = ""; }; + B3C89FBB2877D0B80037A946 /* enum_cast.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = enum_cast.hpp; sourceTree = ""; }; + B3C89FBC2877D0B80037A946 /* stack_allocator.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = stack_allocator.hpp; sourceTree = ""; }; + B3C89FBD2877D0B80037A946 /* logging.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = logging.hpp; sourceTree = ""; }; + B3C89FBF2877D0B80037A946 /* volk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = volk.c; sourceTree = ""; }; + B3C89FC02877D0B80037A946 /* volk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = volk.h; sourceTree = ""; }; + B3C89FC12877D0B80037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C89FC22877D0B80037A946 /* config.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.mk; sourceTree = ""; }; + B3C89FC42877D0B80037A946 /* render_pass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = render_pass.cpp; sourceTree = ""; }; + B3C89FC52877D0B80037A946 /* buffer_pool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = buffer_pool.cpp; sourceTree = ""; }; + B3C89FC62877D0B80037A946 /* query_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = query_pool.hpp; sourceTree = ""; }; + B3C89FC72877D0B80037A946 /* fence.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fence.hpp; sourceTree = ""; }; + B3C89FC82877D0B80037A946 /* semaphore.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = semaphore.hpp; sourceTree = ""; }; + B3C89FC92877D0B80037A946 /* event_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = event_manager.cpp; sourceTree = ""; }; + B3C89FCA2877D0B80037A946 /* image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = ""; }; + B3C89FCB2877D0B80037A946 /* texture_format.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = texture_format.hpp; sourceTree = ""; }; + B3C89FCC2877D0B80037A946 /* wsi_timing.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wsi_timing.cpp; sourceTree = ""; }; + B3C89FCD2877D0B80037A946 /* quirks.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = quirks.hpp; sourceTree = ""; }; + B3C89FCE2877D0B80037A946 /* memory_allocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_allocator.cpp; sourceTree = ""; }; + B3C89FCF2877D0B80037A946 /* device_fossilize.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = device_fossilize.cpp; sourceTree = ""; }; + B3C89FD02877D0B80037A946 /* vulkan_common.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vulkan_common.hpp; sourceTree = ""; }; + B3C89FD12877D0B80037A946 /* context.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = context.cpp; sourceTree = ""; }; + B3C89FD22877D0B80037A946 /* wsi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wsi.cpp; sourceTree = ""; }; + B3C89FD32877D0B80037A946 /* command_pool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = command_pool.cpp; sourceTree = ""; }; + B3C89FD42877D0B80037A946 /* cookie.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cookie.hpp; sourceTree = ""; }; + B3C89FD52877D0B80037A946 /* pipeline_event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pipeline_event.cpp; sourceTree = ""; }; + B3C89FD62877D0B80037A946 /* descriptor_set.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = descriptor_set.cpp; sourceTree = ""; }; + B3C89FD72877D0B80037A946 /* device.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = device.cpp; sourceTree = ""; }; + B3C89FD82877D0B80037A946 /* sampler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sampler.cpp; sourceTree = ""; }; + B3C89FD92877D0B80037A946 /* command_buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = command_buffer.cpp; sourceTree = ""; }; + B3C89FDA2877D0B80037A946 /* semaphore_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = semaphore_manager.cpp; sourceTree = ""; }; + B3C89FDB2877D0B80037A946 /* fence_manager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fence_manager.cpp; sourceTree = ""; }; + B3C89FDC2877D0B80037A946 /* shader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = ""; }; + B3C89FDD2877D0B80037A946 /* buffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = buffer.cpp; sourceTree = ""; }; + B3C89FDE2877D0B80037A946 /* limits.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = limits.hpp; sourceTree = ""; }; + B3C89FDF2877D0B80037A946 /* command_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = command_pool.hpp; sourceTree = ""; }; + B3C89FE02877D0B80037A946 /* context.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = context.hpp; sourceTree = ""; }; + B3C89FE12877D0B80037A946 /* wsi.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wsi.hpp; sourceTree = ""; }; + B3C89FE22877D0B80037A946 /* cookie.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cookie.cpp; sourceTree = ""; }; + B3C89FE32877D0B80037A946 /* pipeline_event.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pipeline_event.hpp; sourceTree = ""; }; + B3C89FE42877D0B80037A946 /* descriptor_set.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = descriptor_set.hpp; sourceTree = ""; }; + B3C89FE52877D0B80037A946 /* device.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = device.hpp; sourceTree = ""; }; + B3C89FE62877D0B80037A946 /* semaphore_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = semaphore_manager.hpp; sourceTree = ""; }; + B3C89FE72877D0B80037A946 /* command_buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = command_buffer.hpp; sourceTree = ""; }; + B3C89FE82877D0B80037A946 /* sampler.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = sampler.hpp; sourceTree = ""; }; + B3C89FE92877D0B80037A946 /* fence_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fence_manager.hpp; sourceTree = ""; }; + B3C89FEA2877D0B80037A946 /* buffer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = buffer.hpp; sourceTree = ""; }; + B3C89FEB2877D0B80037A946 /* shader.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = shader.hpp; sourceTree = ""; }; + B3C89FEC2877D0B80037A946 /* render_pass.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = render_pass.hpp; sourceTree = ""; }; + B3C89FED2877D0B80037A946 /* type_to_string.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = type_to_string.hpp; sourceTree = ""; }; + B3C89FEE2877D0B80037A946 /* vulkan_headers.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vulkan_headers.hpp; sourceTree = ""; }; + B3C89FEF2877D0B80037A946 /* buffer_pool.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = buffer_pool.hpp; sourceTree = ""; }; + B3C89FF02877D0B80037A946 /* query_pool.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = query_pool.cpp; sourceTree = ""; }; + B3C89FF12877D0B80037A946 /* fence.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fence.cpp; sourceTree = ""; }; + B3C89FF22877D0B80037A946 /* semaphore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = semaphore.cpp; sourceTree = ""; }; + B3C89FF32877D0B80037A946 /* vulkan_prerotate.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vulkan_prerotate.hpp; sourceTree = ""; }; + B3C89FF42877D0B80037A946 /* event_manager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = event_manager.hpp; sourceTree = ""; }; + B3C89FF52877D0B80037A946 /* image.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = image.hpp; sourceTree = ""; }; + B3C89FF62877D0B80037A946 /* renderdoc_capture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = renderdoc_capture.cpp; sourceTree = ""; }; + B3C89FF72877D0B80037A946 /* format.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = format.hpp; sourceTree = ""; }; + B3C89FF82877D0B80037A946 /* texture_format.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = texture_format.cpp; sourceTree = ""; }; + B3C89FF92877D0B80037A946 /* wsi_timing.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wsi_timing.hpp; sourceTree = ""; }; + B3C89FFA2877D0B80037A946 /* memory_allocator.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = memory_allocator.hpp; sourceTree = ""; }; + B3C89FFB2877D0B80037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C89FFF2877D0B80037A946 /* vk_layer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_layer.h; sourceTree = ""; }; + B3C8A0002877D0B80037A946 /* vk_icd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_icd.h; sourceTree = ""; }; + B3C8A0012877D0B80037A946 /* vulkan_vi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_vi.h; sourceTree = ""; }; + B3C8A0022877D0B80037A946 /* vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = ""; }; + B3C8A0032877D0B80037A946 /* vk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = ""; }; + B3C8A0042877D0B80037A946 /* vulkan_fuchsia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_fuchsia.h; sourceTree = ""; }; + B3C8A0052877D0B80037A946 /* vulkan_wayland.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_wayland.h; sourceTree = ""; }; + B3C8A0062877D0B80037A946 /* vulkan_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_win32.h; sourceTree = ""; }; + B3C8A0072877D0B80037A946 /* vulkan_macos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_macos.h; sourceTree = ""; }; + B3C8A0082877D0B80037A946 /* vulkan_xlib_xrandr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib_xrandr.h; sourceTree = ""; }; + B3C8A0092877D0B80037A946 /* vulkan_xcb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xcb.h; sourceTree = ""; }; + B3C8A00A2877D0B80037A946 /* vulkan_ggp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_ggp.h; sourceTree = ""; }; + B3C8A00B2877D0B80037A946 /* vulkan_xlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib.h; sourceTree = ""; }; + B3C8A00C2877D0B80037A946 /* vulkan_directfb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_directfb.h; sourceTree = ""; }; + B3C8A00D2877D0B80037A946 /* vulkan_ios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_ios.h; sourceTree = ""; }; + B3C8A00E2877D0B80037A946 /* vulkan_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_core.h; sourceTree = ""; }; + B3C8A00F2877D0B80037A946 /* vk_sdk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_sdk_platform.h; sourceTree = ""; }; + B3C8A0102877D0B80037A946 /* vulkan_screen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_screen.h; sourceTree = ""; }; + B3C8A0112877D0B80037A946 /* vulkan_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_android.h; sourceTree = ""; }; + B3C8A0122877D0B80037A946 /* vulkan_metal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_metal.h; sourceTree = ""; }; + B3C8A0132877D0B80037A946 /* vulkan_beta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_beta.h; sourceTree = ""; }; + B3C8A0142877D0B80037A946 /* parallel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = parallel.cpp; sourceTree = ""; }; + B3C8A0152877D0B80037A946 /* z64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z64.h; sourceTree = ""; }; + B3C8A0162877D0B80037A946 /* rdp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rdp.hpp; sourceTree = ""; }; + B3C8A0172877D0B80037A946 /* Gfx #1.3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Gfx #1.3.h"; sourceTree = ""; }; + B3C8A0182877D0B80037A946 /* parallel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = parallel.h; sourceTree = ""; }; + B3C8A0192877D0B80037A946 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3C8A01A2877D0B80037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C8A01C2877D0B80037A946 /* INSTALL */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL; sourceTree = ""; }; + B3C8A01D2877D0B80037A946 /* LICENSES */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSES; sourceTree = ""; }; + B3C8A0202877D0B80037A946 /* mupen64plus-rsp-hle.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "mupen64plus-rsp-hle.vcxproj"; sourceTree = ""; }; + B3C8A0222877D0B80037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A0232877D0B80037A946 /* RELEASE */ = {isa = PBXFileReference; lastKnownFileType = text; path = RELEASE; sourceTree = ""; }; + B3C8A0242877D0B80037A946 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B3C8A0252877D0B80037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A0282877D0B80037A946 /* build.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = build.yml; sourceTree = ""; }; + B3C8A0292877D0B80037A946 /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B3C8A02A2877D0B80037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C8A02B2877D0B80037A946 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3C8A02D2877D0B80037A946 /* alist_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alist_audio.c; sourceTree = ""; }; + B3C8A02E2877D0B80037A946 /* jpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jpeg.c; sourceTree = ""; }; + B3C8A02F2877D0B80037A946 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3C8A0302877D0B80037A946 /* alist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = alist.h; sourceTree = ""; }; + B3C8A0312877D0B80037A946 /* arithmetics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arithmetics.h; sourceTree = ""; }; + B3C8A0322877D0B80037A946 /* hle_external.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hle_external.h; sourceTree = ""; }; + B3C8A0332877D0B80037A946 /* hle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hle.c; sourceTree = ""; }; + B3C8A0342877D0B80037A946 /* osal_dynamiclib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osal_dynamiclib.h; sourceTree = ""; }; + B3C8A0352877D0B80037A946 /* re2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = re2.c; sourceTree = ""; }; + B3C8A0362877D0B80037A946 /* hle_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hle_internal.h; sourceTree = ""; }; + B3C8A0372877D0B80037A946 /* musyx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = musyx.c; sourceTree = ""; }; + B3C8A0382877D0B80037A946 /* audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; + B3C8A0392877D0B80037A946 /* hvqm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hvqm.c; sourceTree = ""; }; + B3C8A03A2877D0B80037A946 /* osal_dynamiclib_unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osal_dynamiclib_unix.c; sourceTree = ""; }; + B3C8A03B2877D0B80037A946 /* alist_nead.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alist_nead.c; sourceTree = ""; }; + B3C8A03C2877D0B80037A946 /* cicx105.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cicx105.c; sourceTree = ""; }; + B3C8A03D2877D0B80037A946 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B3C8A03E2877D0B80037A946 /* rsp_api_export.ver */ = {isa = PBXFileReference; lastKnownFileType = text; path = rsp_api_export.ver; sourceTree = ""; }; + B3C8A03F2877D0B80037A946 /* alist.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alist.c; sourceTree = ""; }; + B3C8A0402877D0B80037A946 /* alist_naudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alist_naudio.c; sourceTree = ""; }; + B3C8A0412877D0B80037A946 /* plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plugin.c; sourceTree = ""; }; + B3C8A0422877D0B80037A946 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B3C8A0432877D0B80037A946 /* hle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hle.h; sourceTree = ""; }; + B3C8A0442877D0B80037A946 /* osal_dynamiclib_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osal_dynamiclib_win32.c; sourceTree = ""; }; + B3C8A0452877D0B80037A946 /* mp3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mp3.c; sourceTree = ""; }; + B3C8A0462877D0B80037A946 /* ucodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ucodes.h; sourceTree = ""; }; + B3C8A0472877D0B80037A946 /* audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio.c; sourceTree = ""; }; + B3C8A0492877D0B80037A946 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3C8A04A2877D0B80037A946 /* libretro_perf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_perf.h; sourceTree = ""; }; + B3C8A04B2877D0B80037A946 /* libretro_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_private.h; sourceTree = ""; }; + B3C8A04C2877D0B80037A946 /* libretro_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_memory.h; sourceTree = ""; }; + B3C8A04D2877D0B80037A946 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3C8A04E2877D0B80037A946 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3C8A0502877D0B80037A946 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3C8A0512877D0B80037A946 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3C8A0532877D0B80037A946 /* build_android_aarch64.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_android_aarch64.sh; sourceTree = ""; }; + B3C8A0542877D0B80037A946 /* compare_test_results.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = compare_test_results.sh; sourceTree = ""; }; + B3C8A0562877D0B80037A946 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3C8A0572877D0B80037A946 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3C8A0582877D0B80037A946 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3C8A05B2877D0B80037A946 /* jit_aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_aarch64.h; sourceTree = ""; }; + B3C8A05C2877D0B80037A946 /* jit_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_arm.h; sourceTree = ""; }; + B3C8A05D2877D0B80037A946 /* jit_riscv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_riscv.h; sourceTree = ""; }; + B3C8A05E2877D0B80037A946 /* jit_s390.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_s390.h; sourceTree = ""; }; + B3C8A05F2877D0B80037A946 /* jit_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_x86.h; sourceTree = ""; }; + B3C8A0602877D0B80037A946 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3C8A0612877D0B80037A946 /* jit_alpha.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_alpha.h; sourceTree = ""; }; + B3C8A0622877D0B80037A946 /* jit_ppc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_ppc.h; sourceTree = ""; }; + B3C8A0632877D0B80037A946 /* jit_hppa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_hppa.h; sourceTree = ""; }; + B3C8A0642877D0B80037A946 /* jit_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_private.h; sourceTree = ""; }; + B3C8A0652877D0B80037A946 /* jit_mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_mips.h; sourceTree = ""; }; + B3C8A0662877D0B80037A946 /* jit_ia64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_ia64.h; sourceTree = ""; }; + B3C8A0672877D0B80037A946 /* jit_sparc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_sparc.h; sourceTree = ""; }; + B3C8A0682877D0B80037A946 /* lightning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lightning.h; sourceTree = ""; }; + B3C8A0692877D0B80037A946 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3C8A06A2877D0B80037A946 /* lightning.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.h.in; sourceTree = ""; }; + B3C8A06B2877D0B80037A946 /* COPYING.LESSER */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.LESSER; sourceTree = ""; }; + B3C8A06C2877D0B80037A946 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3C8A06D2877D0B80037A946 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3C8A06E2877D0B80037A946 /* COPYING.DOC */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.DOC; sourceTree = ""; }; + B3C8A06F2877D0B80037A946 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3C8A0702877D0B80037A946 /* lightning.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.pc.in; sourceTree = ""; }; + B3C8A0712877D0B80037A946 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3C8A0722877D0B80037A946 /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + B3C8A0732877D0B80037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A0742877D0B80037A946 /* size.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = size.c; sourceTree = ""; }; + B3C8A0752877D0B80037A946 /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B3C8A0772877D0B80037A946 /* jit_riscv-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-sz.c"; sourceTree = ""; }; + B3C8A0782877D0B80037A946 /* jit_alpha-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-fpu.c"; sourceTree = ""; }; + B3C8A0792877D0B80037A946 /* jit_sparc-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-fpu.c"; sourceTree = ""; }; + B3C8A07A2877D0B80037A946 /* jit_alpha-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-cpu.c"; sourceTree = ""; }; + B3C8A07B2877D0B80037A946 /* jit_sparc-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-cpu.c"; sourceTree = ""; }; + B3C8A07C2877D0B80037A946 /* jit_ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_ppc.c; sourceTree = ""; }; + B3C8A07D2877D0B80037A946 /* jit_hppa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_hppa.c; sourceTree = ""; }; + B3C8A07E2877D0B80037A946 /* jit_alpha.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_alpha.c; sourceTree = ""; }; + B3C8A07F2877D0B80037A946 /* jit_alpha-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-sz.c"; sourceTree = ""; }; + B3C8A0802877D0B80037A946 /* jit_memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_memory.c; sourceTree = ""; }; + B3C8A0812877D0B80037A946 /* jit_hppa-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-fpu.c"; sourceTree = ""; }; + B3C8A0822877D0B80037A946 /* jit_arm-swf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-swf.c"; sourceTree = ""; }; + B3C8A0832877D0B80037A946 /* jit_ia64-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-fpu.c"; sourceTree = ""; }; + B3C8A0842877D0B80037A946 /* jit_size.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_size.c; sourceTree = ""; }; + B3C8A0852877D0B80037A946 /* jit_mips.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_mips.c; sourceTree = ""; }; + B3C8A0862877D0B80037A946 /* jit_ppc-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-fpu.c"; sourceTree = ""; }; + B3C8A0872877D0B80037A946 /* jit_disasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_disasm.c; sourceTree = ""; }; + B3C8A0882877D0B80037A946 /* jit_s390-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-fpu.c"; sourceTree = ""; }; + B3C8A0892877D0B80037A946 /* jit_sparc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_sparc.c; sourceTree = ""; }; + B3C8A08A2877D0B80037A946 /* jit_ppc-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-cpu.c"; sourceTree = ""; }; + B3C8A08B2877D0B80037A946 /* jit_hppa-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-sz.c"; sourceTree = ""; }; + B3C8A08C2877D0B80037A946 /* jit_ia64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_ia64.c; sourceTree = ""; }; + B3C8A08D2877D0B80037A946 /* jit_mips-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-sz.c"; sourceTree = ""; }; + B3C8A08E2877D0B80037A946 /* jit_s390-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-cpu.c"; sourceTree = ""; }; + B3C8A08F2877D0B80037A946 /* jit_ia64-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-sz.c"; sourceTree = ""; }; + B3C8A0902877D0B80037A946 /* jit_arm-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-cpu.c"; sourceTree = ""; }; + B3C8A0912877D0B80037A946 /* jit_hppa-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-cpu.c"; sourceTree = ""; }; + B3C8A0922877D0B80037A946 /* jit_sparc-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-sz.c"; sourceTree = ""; }; + B3C8A0932877D0B80037A946 /* jit_ia64-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-cpu.c"; sourceTree = ""; }; + B3C8A0942877D0B80037A946 /* jit_aarch64-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-sz.c"; sourceTree = ""; }; + B3C8A0952877D0B80037A946 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3C8A0962877D0B80037A946 /* jit_riscv-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-fpu.c"; sourceTree = ""; }; + B3C8A0972877D0B80037A946 /* jit_aarch64-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-cpu.c"; sourceTree = ""; }; + B3C8A0982877D0B80037A946 /* jit_x86-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-sz.c"; sourceTree = ""; }; + B3C8A0992877D0B80037A946 /* jit_note.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_note.c; sourceTree = ""; }; + B3C8A09A2877D0B80037A946 /* jit_aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_aarch64.c; sourceTree = ""; }; + B3C8A09B2877D0B80037A946 /* jit_x86-x87.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-x87.c"; sourceTree = ""; }; + B3C8A09C2877D0B80037A946 /* jit_rewind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_rewind.c; sourceTree = ""; }; + B3C8A09D2877D0B80037A946 /* jit_riscv-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-cpu.c"; sourceTree = ""; }; + B3C8A09E2877D0B80037A946 /* jit_aarch64-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-fpu.c"; sourceTree = ""; }; + B3C8A09F2877D0B80037A946 /* jit_x86-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-cpu.c"; sourceTree = ""; }; + B3C8A0A02877D0B80037A946 /* jit_s390.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_s390.c; sourceTree = ""; }; + B3C8A0A12877D0B80037A946 /* jit_print.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_print.c; sourceTree = ""; }; + B3C8A0A22877D0B80037A946 /* jit_riscv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_riscv.c; sourceTree = ""; }; + B3C8A0A32877D0B80037A946 /* jit_mips-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-cpu.c"; sourceTree = ""; }; + B3C8A0A42877D0B80037A946 /* jit_x86-sse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-sse.c"; sourceTree = ""; }; + B3C8A0A52877D0B80037A946 /* jit_arm-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-sz.c"; sourceTree = ""; }; + B3C8A0A62877D0B80037A946 /* jit_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_arm.c; sourceTree = ""; }; + B3C8A0A72877D0B80037A946 /* jit_arm-vfp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-vfp.c"; sourceTree = ""; }; + B3C8A0A82877D0B80037A946 /* jit_s390-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-sz.c"; sourceTree = ""; }; + B3C8A0A92877D0B80037A946 /* jit_mips-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-fpu.c"; sourceTree = ""; }; + B3C8A0AA2877D0B80037A946 /* jit_names.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_names.c; sourceTree = ""; }; + B3C8A0AB2877D0B80037A946 /* jit_ppc-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-sz.c"; sourceTree = ""; }; + B3C8A0AC2877D0B80037A946 /* jit_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_x86.c; sourceTree = ""; }; + B3C8A0AD2877D0B80037A946 /* lightning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightning.c; sourceTree = ""; }; + B3C8A0AF2877D0B80037A946 /* .gitkeep */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitkeep; sourceTree = ""; }; + B3C8A0B02877D0B80037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C8A0B22877D0B80037A946 /* fact.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fact.c; sourceTree = ""; }; + B3C8A0B32877D0B80037A946 /* printf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printf.c; sourceTree = ""; }; + B3C8A0B42877D0B80037A946 /* version.texi */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.texi; sourceTree = ""; }; + B3C8A0B52877D0B80037A946 /* rfib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rfib.c; sourceTree = ""; }; + B3C8A0B62877D0B80037A946 /* rpn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpn.c; sourceTree = ""; }; + B3C8A0B72877D0B80037A946 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3C8A0B82877D0B80037A946 /* incr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = incr.c; sourceTree = ""; }; + B3C8A0B92877D0B80037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A0BA2877D0B80037A946 /* ifib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ifib.c; sourceTree = ""; }; + B3C8A0BB2877D0B80037A946 /* lightning.texi */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.texi; sourceTree = ""; }; + B3C8A0BC2877D0B80037A946 /* .cvsignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .cvsignore; sourceTree = ""; }; + B3C8A0BD2877D0B80037A946 /* body.texi */ = {isa = PBXFileReference; lastKnownFileType = text; path = body.texi; sourceTree = ""; }; + B3C8A0BE2877D0B80037A946 /* THANKS */ = {isa = PBXFileReference; lastKnownFileType = text; path = THANKS; sourceTree = ""; }; + B3C8A0C02877D0B80037A946 /* check.arm.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm.sh; sourceTree = ""; }; + B3C8A0C12877D0B80037A946 /* range.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = range.ok; sourceTree = ""; }; + B3C8A0C22877D0B80037A946 /* ldsti.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldsti.ok; sourceTree = ""; }; + B3C8A0C32877D0B80037A946 /* call.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = call.tst; sourceTree = ""; }; + B3C8A0C42877D0B80037A946 /* alu_rsh.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsh.ok; sourceTree = ""; }; + B3C8A0C52877D0B80037A946 /* carry.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = carry.tst; sourceTree = ""; }; + B3C8A0C62877D0B80037A946 /* cvt.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = cvt.ok; sourceTree = ""; }; + B3C8A0C72877D0B80037A946 /* stack.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = stack.tst; sourceTree = ""; }; + B3C8A0C82877D0B80037A946 /* jmpr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = jmpr.ok; sourceTree = ""; }; + B3C8A0C92877D0B80037A946 /* alu_and.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_and.ok; sourceTree = ""; }; + B3C8A0CA2877D0B80037A946 /* float.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = float.ok; sourceTree = ""; }; + B3C8A0CB2877D0B80037A946 /* varargs.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = varargs.ok; sourceTree = ""; }; + B3C8A0CC2877D0B80037A946 /* alu_neg.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_neg.tst; sourceTree = ""; }; + B3C8A0CD2877D0B80037A946 /* tramp.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = tramp.ok; sourceTree = ""; }; + B3C8A0CE2877D0B80037A946 /* alu_lsh.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_lsh.tst; sourceTree = ""; }; + B3C8A0CF2877D0B80037A946 /* ldstxr-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxr-c.ok"; sourceTree = ""; }; + B3C8A0D02877D0B80037A946 /* fib.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fib.ok; sourceTree = ""; }; + B3C8A0D12877D0B80037A946 /* ldstxr-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxr-c.tst"; sourceTree = ""; }; + B3C8A0D22877D0B80037A946 /* bp.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = bp.ok; sourceTree = ""; }; + B3C8A0D32877D0B80037A946 /* check.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.swf.sh; sourceTree = ""; }; + B3C8A0D42877D0B80037A946 /* alu_com.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_com.tst; sourceTree = ""; }; + B3C8A0D52877D0B80037A946 /* alu_mul.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_mul.tst; sourceTree = ""; }; + B3C8A0D62877D0B80037A946 /* ldstxi-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxi-c.tst"; sourceTree = ""; }; + B3C8A0D72877D0B80037A946 /* branch.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = branch.tst; sourceTree = ""; }; + B3C8A0D82877D0B80037A946 /* check.nodata.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.nodata.sh; sourceTree = ""; }; + B3C8A0D92877D0B80037A946 /* ldstr-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstr-c.ok"; sourceTree = ""; }; + B3C8A0DA2877D0B80037A946 /* alux_add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_add.ok; sourceTree = ""; }; + B3C8A0DB2877D0B80037A946 /* branch.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = branch.ok; sourceTree = ""; }; + B3C8A0DC2877D0B80037A946 /* allocai.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocai.tst; sourceTree = ""; }; + B3C8A0DD2877D0B80037A946 /* ldstxi.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxi.ok; sourceTree = ""; }; + B3C8A0DE2877D0B80037A946 /* alu_rem.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rem.ok; sourceTree = ""; }; + B3C8A0DF2877D0B80037A946 /* fop_abs.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_abs.ok; sourceTree = ""; }; + B3C8A0E02877D0B80037A946 /* ccall.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ccall.c; sourceTree = ""; }; + B3C8A0E12877D0B80037A946 /* bp.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = bp.tst; sourceTree = ""; }; + B3C8A0E22877D0B80037A946 /* alu_sub.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_sub.ok; sourceTree = ""; }; + B3C8A0E32877D0B80037A946 /* carry.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = carry.ok; sourceTree = ""; }; + B3C8A0E42877D0B80037A946 /* clobber.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = clobber.tst; sourceTree = ""; }; + B3C8A0E52877D0B80037A946 /* check.arm.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm.swf.sh; sourceTree = ""; }; + B3C8A0E62877D0B80037A946 /* alu_xor.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_xor.ok; sourceTree = ""; }; + B3C8A0E72877D0B80037A946 /* alu_rsb.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsb.ok; sourceTree = ""; }; + B3C8A0E82877D0B80037A946 /* run-test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "run-test"; sourceTree = ""; }; + B3C8A0E92877D0B80037A946 /* va_list.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = va_list.tst; sourceTree = ""; }; + B3C8A0EA2877D0B80037A946 /* put.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = put.ok; sourceTree = ""; }; + B3C8A0EB2877D0B80037A946 /* alux_sub.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_sub.tst; sourceTree = ""; }; + B3C8A0EC2877D0B80037A946 /* fop_sqrt.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_sqrt.tst; sourceTree = ""; }; + B3C8A0ED2877D0B80037A946 /* setcode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = setcode.c; sourceTree = ""; }; + B3C8A0EE2877D0B80037A946 /* ret.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ret.tst; sourceTree = ""; }; + B3C8A0EF2877D0B80037A946 /* alu_lsh.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_lsh.ok; sourceTree = ""; }; + B3C8A0F02877D0B80037A946 /* qalu.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = qalu.inc; sourceTree = ""; }; + B3C8A0F12877D0B80037A946 /* va_list.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = va_list.ok; sourceTree = ""; }; + B3C8A0F22877D0B80037A946 /* allocar.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocar.ok; sourceTree = ""; }; + B3C8A0F32877D0B80037A946 /* ldstxi.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxi.tst; sourceTree = ""; }; + B3C8A0F42877D0B80037A946 /* alu_mul.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_mul.ok; sourceTree = ""; }; + B3C8A0F52877D0B80037A946 /* qalu_div.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_div.tst; sourceTree = ""; }; + B3C8A0F62877D0B80037A946 /* align.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = align.ok; sourceTree = ""; }; + B3C8A0F72877D0B80037A946 /* alu_rsh.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsh.tst; sourceTree = ""; }; + B3C8A0F82877D0B80037A946 /* add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = add.ok; sourceTree = ""; }; + B3C8A0F92877D0B80037A946 /* fop_sqrt.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_sqrt.ok; sourceTree = ""; }; + B3C8A0FA2877D0B80037A946 /* ldsti.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldsti.tst; sourceTree = ""; }; + B3C8A0FB2877D0B80037A946 /* rpn.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = rpn.ok; sourceTree = ""; }; + B3C8A0FC2877D0B80037A946 /* qalu_mul.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_mul.ok; sourceTree = ""; }; + B3C8A0FD2877D0B80037A946 /* self.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = self.c; sourceTree = ""; }; + B3C8A0FE2877D0B80037A946 /* range.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = range.tst; sourceTree = ""; }; + B3C8A0FF2877D0B80037A946 /* jmpr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = jmpr.tst; sourceTree = ""; }; + B3C8A1002877D0B80037A946 /* check.x87.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.x87.sh; sourceTree = ""; }; + B3C8A1012877D0B80037A946 /* alu_com.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_com.ok; sourceTree = ""; }; + B3C8A1022877D0B80037A946 /* alux_add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_add.tst; sourceTree = ""; }; + B3C8A1032877D0B80037A946 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3C8A1042877D0B80037A946 /* allocai.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocai.ok; sourceTree = ""; }; + B3C8A1052877D0B80037A946 /* alu_add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_add.tst; sourceTree = ""; }; + B3C8A1062877D0B80037A946 /* ldstr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstr.tst; sourceTree = ""; }; + B3C8A1072877D0B80037A946 /* call.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = call.ok; sourceTree = ""; }; + B3C8A1082877D0B80037A946 /* 3to2.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = 3to2.ok; sourceTree = ""; }; + B3C8A1092877D0B80037A946 /* rpn.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = rpn.tst; sourceTree = ""; }; + B3C8A10A2877D0B80037A946 /* ldstxr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxr.tst; sourceTree = ""; }; + B3C8A10B2877D0B80037A946 /* alu_rsb.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsb.tst; sourceTree = ""; }; + B3C8A10C2877D0B80037A946 /* alu_sub.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_sub.tst; sourceTree = ""; }; + B3C8A10D2877D0B80037A946 /* cva_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cva_list.c; sourceTree = ""; }; + B3C8A10E2877D0B80037A946 /* divi.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = divi.ok; sourceTree = ""; }; + B3C8A10F2877D0B80037A946 /* ldstr-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstr-c.tst"; sourceTree = ""; }; + B3C8A1102877D0B80037A946 /* alux_sub.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_sub.ok; sourceTree = ""; }; + B3C8A1112877D0B80037A946 /* ldst.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ldst.inc; sourceTree = ""; }; + B3C8A1122877D0B80037A946 /* add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = add.tst; sourceTree = ""; }; + B3C8A1132877D0B80037A946 /* check.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.sh; sourceTree = ""; }; + B3C8A1142877D0B80037A946 /* ret.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ret.ok; sourceTree = ""; }; + B3C8A1152877D0B80037A946 /* qalu_mul.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_mul.tst; sourceTree = ""; }; + B3C8A1162877D0B80037A946 /* check.x87.nodata.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.x87.nodata.sh; sourceTree = ""; }; + B3C8A1172877D0B80037A946 /* alu_rem.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rem.tst; sourceTree = ""; }; + B3C8A1182877D0B80037A946 /* alu_or.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_or.tst; sourceTree = ""; }; + B3C8A1192877D0B80037A946 /* alu_neg.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_neg.ok; sourceTree = ""; }; + B3C8A11A2877D0B80037A946 /* alu_and.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_and.tst; sourceTree = ""; }; + B3C8A11B2877D0B80037A946 /* hton.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = hton.tst; sourceTree = ""; }; + B3C8A11C2877D0B80037A946 /* allocar.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocar.tst; sourceTree = ""; }; + B3C8A11D2877D0B80037A946 /* hton.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = hton.ok; sourceTree = ""; }; + B3C8A11E2877D0B80037A946 /* qalu_div.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_div.ok; sourceTree = ""; }; + B3C8A11F2877D0B80037A946 /* fib.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fib.tst; sourceTree = ""; }; + B3C8A1202877D0B80037A946 /* alu_add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_add.ok; sourceTree = ""; }; + B3C8A1212877D0B80037A946 /* alu.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = alu.inc; sourceTree = ""; }; + B3C8A1222877D0B80037A946 /* put.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = put.tst; sourceTree = ""; }; + B3C8A1232877D0B80037A946 /* alu_or.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_or.ok; sourceTree = ""; }; + B3C8A1242877D0B80037A946 /* divi.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = divi.tst; sourceTree = ""; }; + B3C8A1252877D0B80037A946 /* ldstxr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxr.ok; sourceTree = ""; }; + B3C8A1262877D0B80037A946 /* ctramp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctramp.c; sourceTree = ""; }; + B3C8A1272877D0B80037A946 /* alu_div.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_div.ok; sourceTree = ""; }; + B3C8A1282877D0B80037A946 /* check.arm4.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm4.swf.sh; sourceTree = ""; }; + B3C8A1292877D0B80037A946 /* clobber.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = clobber.ok; sourceTree = ""; }; + B3C8A12A2877D0B80037A946 /* nodata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nodata.c; sourceTree = ""; }; + B3C8A12B2877D0B80037A946 /* align.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = align.tst; sourceTree = ""; }; + B3C8A12C2877D0B80037A946 /* cvt.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = cvt.tst; sourceTree = ""; }; + B3C8A12D2877D0B80037A946 /* ranger.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ranger.tst; sourceTree = ""; }; + B3C8A12E2877D0B80037A946 /* ldstr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstr.ok; sourceTree = ""; }; + B3C8A12F2877D0B80037A946 /* carg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = carg.c; sourceTree = ""; }; + B3C8A1302877D0B80037A946 /* alu_xor.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_xor.tst; sourceTree = ""; }; + B3C8A1312877D0B80037A946 /* fop_abs.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_abs.tst; sourceTree = ""; }; + B3C8A1322877D0B80037A946 /* float.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = float.tst; sourceTree = ""; }; + B3C8A1332877D0B80037A946 /* tramp.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = tramp.tst; sourceTree = ""; }; + B3C8A1342877D0B80037A946 /* varargs.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = varargs.tst; sourceTree = ""; }; + B3C8A1352877D0B80037A946 /* ldstxi-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxi-c.ok"; sourceTree = ""; }; + B3C8A1362877D0B80037A946 /* all.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = all.tst; sourceTree = ""; }; + B3C8A1372877D0B80037A946 /* alu_div.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_div.tst; sourceTree = ""; }; + B3C8A1382877D0B80037A946 /* lightning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightning.c; sourceTree = ""; }; + B3C8A1392877D0B80037A946 /* stack.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = stack.ok; sourceTree = ""; }; + B3C8A13A2877D0B80037A946 /* 3to2.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = 3to2.tst; sourceTree = ""; }; + B3C8A13B2877D0B80037A946 /* ranger.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ranger.ok; sourceTree = ""; }; + B3C8A13C2877D0B80037A946 /* LICENSE.MIT */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.MIT; sourceTree = ""; }; + B3C8A13D2877D0B80037A946 /* debug_jit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = debug_jit.hpp; sourceTree = ""; }; + B3C8A13E2877D0B80037A946 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3C8A13F2877D0B80037A946 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3C8A1402877D0B80037A946 /* parallel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = parallel.cpp; sourceTree = ""; }; + B3C8A1412877D0B80037A946 /* android_fuzz_runner.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = android_fuzz_runner.sh; sourceTree = ""; }; + B3C8A1422877D0B80037A946 /* llvm_jit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = llvm_jit.cpp; sourceTree = ""; }; + B3C8A1432877D0B80037A946 /* rsp_jit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rsp_jit.hpp; sourceTree = ""; }; + B3C8A1442877D0B80037A946 /* android_test_runner.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = android_test_runner.sh; sourceTree = ""; }; + B3C8A1452877D0B80037A946 /* rsp_disasm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rsp_disasm.hpp; sourceTree = ""; }; + B3C8A1462877D0B80037A946 /* build_native.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_native.sh; sourceTree = ""; }; + B3C8A1472877D0B80037A946 /* jit_allocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = jit_allocator.cpp; sourceTree = ""; }; + B3C8A1482877D0B80037A946 /* rsp_1.1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsp_1.1.h; sourceTree = ""; }; + B3C8A1492877D0B80037A946 /* cpu_state.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cpu_state.hpp; sourceTree = ""; }; + B3C8A14B2877D0B80037A946 /* sw-unaligned.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "sw-unaligned.s"; sourceTree = ""; }; + B3C8A14C2877D0B80037A946 /* lw-unaligned-in-branch-delay.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "lw-unaligned-in-branch-delay.s"; sourceTree = ""; }; + B3C8A14D2877D0B80037A946 /* sh-unaligned.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "sh-unaligned.s"; sourceTree = ""; }; + B3C8A14E2877D0B80037A946 /* lbu.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = lbu.s; sourceTree = ""; }; + B3C8A14F2877D0B80037A946 /* and.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = and.s; sourceTree = ""; }; + B3C8A1502877D0B80037A946 /* lw-unaligned.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "lw-unaligned.s"; sourceTree = ""; }; + B3C8A1512877D0B80037A946 /* andi.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = andi.s; sourceTree = ""; }; + B3C8A1522877D0B80037A946 /* delay-slot-before-break.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "delay-slot-before-break.s"; sourceTree = ""; }; + B3C8A1532877D0B80037A946 /* lh-unaligned.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "lh-unaligned.s"; sourceTree = ""; }; + B3C8A1542877D0B80037A946 /* jal.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = jal.s; sourceTree = ""; }; + B3C8A1552877D0B80037A946 /* sh.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sh.s; sourceTree = ""; }; + B3C8A1562877D0B80037A946 /* cop0.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = cop0.s; sourceTree = ""; }; + B3C8A1572877D0B80037A946 /* sb.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sb.s; sourceTree = ""; }; + B3C8A1582877D0B80037A946 /* blez.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = blez.s; sourceTree = ""; }; + B3C8A1592877D0B80037A946 /* jal-into-indirect-delay-slot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "jal-into-indirect-delay-slot.s"; sourceTree = ""; }; + B3C8A15A2877D0B80037A946 /* lhu-unaligned.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "lhu-unaligned.s"; sourceTree = ""; }; + B3C8A15B2877D0B80037A946 /* beq-impossible-delay-slot-both-taken.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "beq-impossible-delay-slot-both-taken.s"; sourceTree = ""; }; + B3C8A15C2877D0B80037A946 /* unconditional-delay-slot-before-break.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "unconditional-delay-slot-before-break.s"; sourceTree = ""; }; + B3C8A15D2877D0B80037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A15E2877D0B80037A946 /* srlv.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = srlv.s; sourceTree = ""; }; + B3C8A15F2877D0B80037A946 /* lhu.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = lhu.s; sourceTree = ""; }; + B3C8A1602877D0B80037A946 /* xori.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = xori.s; sourceTree = ""; }; + B3C8A1612877D0B80037A946 /* lui.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = lui.s; sourceTree = ""; }; + B3C8A1622877D0B80037A946 /* bug-shl-into-branch.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "bug-shl-into-branch.s"; sourceTree = ""; }; + B3C8A1632877D0B80037A946 /* slt.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = slt.s; sourceTree = ""; }; + B3C8A1642877D0B80037A946 /* add.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = add.s; sourceTree = ""; }; + B3C8A1652877D0B80037A946 /* sw.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sw.s; sourceTree = ""; }; + B3C8A1662877D0B80037A946 /* sub.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sub.s; sourceTree = ""; }; + B3C8A1672877D0B80037A946 /* delay-slot-before-new-block-not-taken.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "delay-slot-before-new-block-not-taken.s"; sourceTree = ""; }; + B3C8A1682877D0B80037A946 /* bgtz.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = bgtz.s; sourceTree = ""; }; + B3C8A1692877D0B80037A946 /* sltiu.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sltiu.s; sourceTree = ""; }; + B3C8A16A2877D0B80037A946 /* rsp-mips.ld */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rsp-mips.ld"; sourceTree = ""; }; + B3C8A16B2877D0B80037A946 /* start.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = start.s; sourceTree = ""; }; + B3C8A16C2877D0B80037A946 /* jalr.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = jalr.s; sourceTree = ""; }; + B3C8A16D2877D0B80037A946 /* sll.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sll.s; sourceTree = ""; }; + B3C8A16E2877D0B80037A946 /* bltz.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = bltz.s; sourceTree = ""; }; + B3C8A16F2877D0B80037A946 /* sllv.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sllv.s; sourceTree = ""; }; + B3C8A1702877D0B80037A946 /* bltzal.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = bltzal.s; sourceTree = ""; }; + B3C8A1712877D0B80037A946 /* cop2-vector.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "cop2-vector.s"; sourceTree = ""; }; + B3C8A1722877D0B80037A946 /* Makefile.mips */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mips; sourceTree = ""; }; + B3C8A1732877D0B80037A946 /* bgezal.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = bgezal.s; sourceTree = ""; }; + B3C8A1742877D0B80037A946 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3C8A1752877D0B80037A946 /* delay-slot-before-new-block-illegal.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "delay-slot-before-new-block-illegal.s"; sourceTree = ""; }; + B3C8A1762877D0B80037A946 /* or.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = or.s; sourceTree = ""; }; + B3C8A1772877D0B80037A946 /* lw.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = lw.s; sourceTree = ""; }; + B3C8A1782877D0B80037A946 /* cop2-ls.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "cop2-ls.s"; sourceTree = ""; }; + B3C8A1792877D0B80037A946 /* ori.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ori.s; sourceTree = ""; }; + B3C8A17A2877D0B80037A946 /* srl.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = srl.s; sourceTree = ""; }; + B3C8A17B2877D0B80037A946 /* jr.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = jr.s; sourceTree = ""; }; + B3C8A17C2877D0B80037A946 /* bne.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = bne.s; sourceTree = ""; }; + B3C8A17D2877D0B80037A946 /* cop2-basic.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "cop2-basic.s"; sourceTree = ""; }; + B3C8A17E2877D0B80037A946 /* j.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = j.s; sourceTree = ""; }; + B3C8A17F2877D0B80037A946 /* delay-slot-before-new-block.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "delay-slot-before-new-block.s"; sourceTree = ""; }; + B3C8A1802877D0B80037A946 /* beq-impossible-delay-slot-second-taken.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "beq-impossible-delay-slot-second-taken.s"; sourceTree = ""; }; + B3C8A1812877D0B80037A946 /* addi.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = addi.s; sourceTree = ""; }; + B3C8A1822877D0B80037A946 /* sltu.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sltu.s; sourceTree = ""; }; + B3C8A1832877D0B80037A946 /* lb.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = lb.s; sourceTree = ""; }; + B3C8A1842877D0B80037A946 /* beq-impossible-delay-slot-first-taken.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "beq-impossible-delay-slot-first-taken.s"; sourceTree = ""; }; + B3C8A1852877D0B80037A946 /* lh.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = lh.s; sourceTree = ""; }; + B3C8A1862877D0B80037A946 /* sra.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sra.s; sourceTree = ""; }; + B3C8A1872877D0B80037A946 /* rsp-mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "rsp-mips.h"; sourceTree = ""; }; + B3C8A1882877D0B80037A946 /* nor.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = nor.s; sourceTree = ""; }; + B3C8A1892877D0B80037A946 /* bgez.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = bgez.s; sourceTree = ""; }; + B3C8A18A2877D0B80037A946 /* xor.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = xor.s; sourceTree = ""; }; + B3C8A18B2877D0B80037A946 /* rsp-mips.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "rsp-mips.s"; sourceTree = ""; }; + B3C8A18C2877D0B80037A946 /* slti.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = slti.s; sourceTree = ""; }; + B3C8A18D2877D0B80037A946 /* srav.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = srav.s; sourceTree = ""; }; + B3C8A18E2877D0B80037A946 /* debug_rsp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debug_rsp.cpp; sourceTree = ""; }; + B3C8A18F2877D0B80037A946 /* LICENSE.LESSER */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.LESSER; sourceTree = ""; }; + B3C8A1902877D0B80037A946 /* rsp_jit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsp_jit.cpp; sourceTree = ""; }; + B3C8A1912877D0B80037A946 /* CREDITS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CREDITS.txt; sourceTree = ""; }; + B3C8A1922877D0B80037A946 /* rsp_op.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = rsp_op.hpp; sourceTree = ""; }; + B3C8A1932877D0B80037A946 /* format_all.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = format_all.sh; sourceTree = ""; }; + B3C8A1942877D0B80037A946 /* rsp_disasm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsp_disasm.cpp; sourceTree = ""; }; + B3C8A1952877D0B80037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A1962877D0B80037A946 /* state.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = state.hpp; sourceTree = ""; }; + B3C8A1972877D0B80037A946 /* jit_allocator.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = jit_allocator.hpp; sourceTree = ""; }; + B3C8A19B2877D0B80037A946 /* vsubc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vsubc.h; sourceTree = ""; }; + B3C8A19C2877D0B80037A946 /* vor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vor.h; sourceTree = ""; }; + B3C8A19D2877D0B80037A946 /* vcl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vcl.h; sourceTree = ""; }; + B3C8A19E2877D0B80037A946 /* vand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vand.h; sourceTree = ""; }; + B3C8A19F2877D0B80037A946 /* clamp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamp.h; sourceTree = ""; }; + B3C8A1A02877D0B80037A946 /* vmulm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmulm.h; sourceTree = ""; }; + B3C8A1A12877D0B80037A946 /* vch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vch.h; sourceTree = ""; }; + B3C8A1A22877D0B80037A946 /* vrsq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vrsq.h; sourceTree = ""; }; + B3C8A1A32877D0B80037A946 /* vrcpsq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vrcpsq.h; sourceTree = ""; }; + B3C8A1A42877D0B80037A946 /* vdivh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdivh.h; sourceTree = ""; }; + B3C8A1A52877D0B80037A946 /* SSE2NEON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSE2NEON.h; sourceTree = ""; }; + B3C8A1A62877D0B80037A946 /* vabs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vabs.h; sourceTree = ""; }; + B3C8A1A72877D0B80037A946 /* rsp_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsp_common.h; sourceTree = ""; }; + B3C8A1A82877D0B80037A946 /* vadd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vadd.h; sourceTree = ""; }; + B3C8A1A92877D0B80037A946 /* vcmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vcmp.h; sourceTree = ""; }; + B3C8A1AA2877D0B80037A946 /* vsub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vsub.h; sourceTree = ""; }; + B3C8A1AB2877D0B80037A946 /* vmuln.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmuln.h; sourceTree = ""; }; + B3C8A1AC2877D0B80037A946 /* vmudh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmudh.h; sourceTree = ""; }; + B3C8A1AD2877D0B80037A946 /* vmrg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmrg.h; sourceTree = ""; }; + B3C8A1AE2877D0B80037A946 /* vaddc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vaddc.h; sourceTree = ""; }; + B3C8A1AF2877D0B80037A946 /* rsp_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsp_impl.h; sourceTree = ""; }; + B3C8A1B02877D0B80037A946 /* vcr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vcr.h; sourceTree = ""; }; + B3C8A1B12877D0B80037A946 /* vmul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmul.h; sourceTree = ""; }; + B3C8A1B22877D0B80037A946 /* rsp_core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsp_core.cpp; sourceTree = ""; }; + B3C8A1B32877D0B80037A946 /* vxor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vxor.h; sourceTree = ""; }; + B3C8A1B42877D0B80037A946 /* vmov.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmov.h; sourceTree = ""; }; + B3C8A1B52877D0B80037A946 /* vmulh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmulh.h; sourceTree = ""; }; + B3C8A1B62877D0B80037A946 /* vmac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmac.h; sourceTree = ""; }; + B3C8A1B72877D0B80037A946 /* vmull.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmull.h; sourceTree = ""; }; + B3C8A1B82877D0B80037A946 /* .clang-format */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".clang-format"; sourceTree = ""; }; + B3C8A1B92877D0B80037A946 /* rsp_vu_fuzzer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsp_vu_fuzzer.cpp; sourceTree = ""; }; + B3C8A1BA2877D0B80037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C8A1BB2877D0B80037A946 /* debug_rsp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = debug_rsp.hpp; sourceTree = ""; }; + B3C8A1BD2877D0B80037A946 /* reciprocal.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = reciprocal.cpp; sourceTree = ""; }; + B3C8A1BE2877D0B80037A946 /* reciprocal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reciprocal.h; sourceTree = ""; }; + B3C8A1BF2877D0B80037A946 /* vfunctions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfunctions.cpp; sourceTree = ""; }; + B3C8A1C02877D0B80037A946 /* registers.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = registers.md; sourceTree = ""; }; + B3C8A1C12877D0B80037A946 /* pipeline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline.h; sourceTree = ""; }; + B3C8A1C22877D0B80037A946 /* cp0.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cp0.cpp; sourceTree = ""; }; + B3C8A1C32877D0B80037A946 /* ls.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ls.cpp; sourceTree = ""; }; + B3C8A1C42877D0B80037A946 /* cp2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cp2.cpp; sourceTree = ""; }; + B3C8A1C82877D0B80037A946 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3C8A1C92877D0B80037A946 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3C8A1CA2877D0B80037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A1CB2877D0B80037A946 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3C8A1CF2877D0B80037A946 /* .suo */ = {isa = PBXFileReference; lastKnownFileType = file; path = .suo; sourceTree = ""; }; + B3C8A1D02877D0B80037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C8A1D12877D0B80037A946 /* mman.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj; sourceTree = ""; }; + B3C8A1D22877D0B80037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A1D32877D0B80037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C8A1D42877D0B80037A946 /* test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = ""; }; + B3C8A1D52877D0B80037A946 /* mman.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj.user; sourceTree = ""; }; + B3C8A1D62877D0B80037A946 /* mman.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj.filters; sourceTree = ""; }; + B3C8A1D72877D0B80037A946 /* mman.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = mman.sln; sourceTree = ""; }; + B3C8A1D82877D0B80037A946 /* mman-win32.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = "mman-win32.pro"; sourceTree = ""; }; + B3C8A1D92877D0B80037A946 /* UpgradeLog.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = UpgradeLog.htm; sourceTree = ""; }; + B3C8A1DA2877D0B90037A946 /* mman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mman.c; sourceTree = ""; }; + B3C8A1DB2877D0B90037A946 /* debug_jit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debug_jit.cpp; sourceTree = ""; }; + B3C8A1DC2877D0B90037A946 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3C8A1DD2877D0B90037A946 /* llvm_jit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = llvm_jit.hpp; sourceTree = ""; }; + B3C8A1DE2877D0B90037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A1E02877D0B90037A946 /* rsp_dump.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rsp_dump.cpp; sourceTree = ""; }; + B3C8A1E22877D0B90037A946 /* pack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pack.h; sourceTree = ""; }; + B3C8A1E32877D0B90037A946 /* divide.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = divide.h; sourceTree = ""; }; + B3C8A1E42877D0B90037A946 /* multiply.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = multiply.h; sourceTree = ""; }; + B3C8A1E52877D0B90037A946 /* add.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = add.h; sourceTree = ""; }; + B3C8A1E62877D0B90037A946 /* logical.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = logical.c; sourceTree = ""; }; + B3C8A1E72877D0B90037A946 /* vu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vu.c; sourceTree = ""; }; + B3C8A1E82877D0B90037A946 /* select.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = select.c; sourceTree = ""; }; + B3C8A1E92877D0B90037A946 /* divide.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = divide.c; sourceTree = ""; }; + B3C8A1EA2877D0B90037A946 /* logical.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logical.h; sourceTree = ""; }; + B3C8A1EB2877D0B90037A946 /* add.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = add.c; sourceTree = ""; }; + B3C8A1EC2877D0B90037A946 /* multiply.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = multiply.c; sourceTree = ""; }; + B3C8A1ED2877D0B90037A946 /* select.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = select.h; sourceTree = ""; }; + B3C8A1EE2877D0B90037A946 /* vu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vu.h; sourceTree = ""; }; + B3C8A1EF2877D0B90037A946 /* my_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = my_types.h; sourceTree = ""; }; + B3C8A1F02877D0B90037A946 /* rsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rsp.c; sourceTree = ""; }; + B3C8A1F12877D0B90037A946 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3C8A1F22877D0B90037A946 /* su.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = su.c; sourceTree = ""; }; + B3C8A1F32877D0B90037A946 /* rsp_dump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsp_dump.h; sourceTree = ""; }; + B3C8A1F42877D0B90037A946 /* module.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = module.c; sourceTree = ""; }; + B3C8A1F52877D0B90037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C8A1F62877D0B90037A946 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3C8A1F72877D0B90037A946 /* rsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsp.h; sourceTree = ""; }; + B3C8A1F82877D0B90037A946 /* module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = module.h; sourceTree = ""; }; + B3C8A1FA2877D0B90037A946 /* SSE2NEON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSE2NEON.h; sourceTree = ""; }; + B3C8A1FB2877D0B90037A946 /* su.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = su.h; sourceTree = ""; }; + B3C8A1FE2877D0B90037A946 /* encoding_base64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_base64.c; sourceTree = ""; }; + B3C8A1FF2877D0B90037A946 /* encoding_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_crc32.c; sourceTree = ""; }; + B3C8A2002877D0B90037A946 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3C8A2022877D0B90037A946 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3C8A2032877D0B90037A946 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3C8A2042877D0B90037A946 /* vfs_implementation_uwp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfs_implementation_uwp.cpp; sourceTree = ""; }; + B3C8A2062877D0B90037A946 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3C8A2082877D0B90037A946 /* compat_ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_ifaddrs.c; sourceTree = ""; }; + B3C8A2092877D0B90037A946 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3C8A20A2877D0B90037A946 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3C8A20B2877D0B90037A946 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3C8A20C2877D0B90037A946 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3C8A20D2877D0B90037A946 /* compat_getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_getopt.c; sourceTree = ""; }; + B3C8A20E2877D0B90037A946 /* compat_fnmatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch.c; sourceTree = ""; }; + B3C8A20F2877D0B90037A946 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3C8A2102877D0B90037A946 /* compat_vscprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_vscprintf.c; sourceTree = ""; }; + B3C8A2122877D0B90037A946 /* label_sanitization.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = label_sanitization.c; sourceTree = ""; }; + B3C8A2142877D0B90037A946 /* dylib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dylib.c; sourceTree = ""; }; + B3C8A2162877D0B90037A946 /* net_natt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_natt.c; sourceTree = ""; }; + B3C8A2172877D0B90037A946 /* net_socket_ssl_mbed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket_ssl_mbed.c; sourceTree = ""; }; + B3C8A2182877D0B90037A946 /* net_http.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http.c; sourceTree = ""; }; + B3C8A2192877D0B90037A946 /* net_http_parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_parse.c; sourceTree = ""; }; + B3C8A21A2877D0B90037A946 /* net_ifinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo.c; sourceTree = ""; }; + B3C8A21B2877D0B90037A946 /* net_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_compat.c; sourceTree = ""; }; + B3C8A21C2877D0B90037A946 /* net_socket_ssl_bear.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket_ssl_bear.c; sourceTree = ""; }; + B3C8A21D2877D0B90037A946 /* net_socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket.c; sourceTree = ""; }; + B3C8A21E2877D0B90037A946 /* Makefile.test */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.test; sourceTree = ""; }; + B3C8A2212877D0B90037A946 /* rwav.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwav.c; sourceTree = ""; }; + B3C8A2232877D0B90037A946 /* m3u_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m3u_file.c; sourceTree = ""; }; + B3C8A2252877D0B90037A946 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3C8A2262877D0B90037A946 /* libchdr_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_zlib.c; sourceTree = ""; }; + B3C8A2272877D0B90037A946 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3C8A2282877D0B90037A946 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3C8A2292877D0B90037A946 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3C8A22A2877D0B90037A946 /* libchdr_flac_codec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac_codec.c; sourceTree = ""; }; + B3C8A22B2877D0B90037A946 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3C8A22C2877D0B90037A946 /* libchdr_lzma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_lzma.c; sourceTree = ""; }; + B3C8A22D2877D0B90037A946 /* image_texture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_texture.c; sourceTree = ""; }; + B3C8A22F2877D0B90037A946 /* rtga.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtga.c; sourceTree = ""; }; + B3C8A2312877D0B90037A946 /* rpng.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng.c; sourceTree = ""; }; + B3C8A2322877D0B90037A946 /* rpng_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng_internal.h; sourceTree = ""; }; + B3C8A2332877D0B90037A946 /* rpng_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_encode.c; sourceTree = ""; }; + B3C8A2362877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A2372877D0B90037A946 /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B3C8A2382877D0B90037A946 /* rxml.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml.c; sourceTree = ""; }; + B3C8A23A2877D0B90037A946 /* jsonsax_full.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax_full.c; sourceTree = ""; }; + B3C8A23B2877D0B90037A946 /* rjson.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjson.c; sourceTree = ""; }; + B3C8A23C2877D0B90037A946 /* jsonsax.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax.c; sourceTree = ""; }; + B3C8A23E2877D0B90037A946 /* logiqx_dat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = logiqx_dat.c; sourceTree = ""; }; + B3C8A2402877D0B90037A946 /* cdfs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdfs.c; sourceTree = ""; }; + B3C8A2422877D0B90037A946 /* rjpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjpeg.c; sourceTree = ""; }; + B3C8A2442877D0B90037A946 /* rbmp_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp_encode.c; sourceTree = ""; }; + B3C8A2452877D0B90037A946 /* rbmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp.c; sourceTree = ""; }; + B3C8A2462877D0B90037A946 /* image_transfer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_transfer.c; sourceTree = ""; }; + B3C8A2492877D0B90037A946 /* test_linked_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_linked_list.c; sourceTree = ""; }; + B3C8A24B2877D0B90037A946 /* test_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_hash.c; sourceTree = ""; }; + B3C8A24D2877D0B90037A946 /* test_utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_utils.c; sourceTree = ""; }; + B3C8A24F2877D0B90037A946 /* test_generic_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_generic_queue.c; sourceTree = ""; }; + B3C8A2512877D0B90037A946 /* test_stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_stdstring.c; sourceTree = ""; }; + B3C8A2532877D0B90037A946 /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B3C8A2542877D0B90037A946 /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B3C8A2552877D0B90037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C8A2562877D0B90037A946 /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B3C8A2572877D0B90037A946 /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B3C8A2582877D0B90037A946 /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B3C8A2592877D0B90037A946 /* xglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = xglgen.py; sourceTree = ""; }; + B3C8A25A2877D0B90037A946 /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B3C8A25C2877D0B90037A946 /* nested_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nested_list.c; sourceTree = ""; }; + B3C8A25D2877D0B90037A946 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3C8A25E2877D0B90037A946 /* vector_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vector_list.c; sourceTree = ""; }; + B3C8A25F2877D0B90037A946 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3C8A2602877D0B90037A946 /* linked_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linked_list.c; sourceTree = ""; }; + B3C8A2612877D0B90037A946 /* file_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_list.c; sourceTree = ""; }; + B3C8A2632877D0B90037A946 /* file_path_io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path_io.c; sourceTree = ""; }; + B3C8A2642877D0B90037A946 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3C8A2652877D0B90037A946 /* config_file_userdata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file_userdata.c; sourceTree = ""; }; + B3C8A2672877D0B90037A946 /* nbio_unixmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_unixmmap.c; sourceTree = ""; }; + B3C8A2682877D0B90037A946 /* nbio_linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_linux.c; sourceTree = ""; }; + B3C8A2692877D0B90037A946 /* nbio_orbis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_orbis.c; sourceTree = ""; }; + B3C8A26A2877D0B90037A946 /* nbio_windowsmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_windowsmmap.c; sourceTree = ""; }; + B3C8A26B2877D0B90037A946 /* nbio_intf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_intf.c; sourceTree = ""; }; + B3C8A26C2877D0B90037A946 /* nbio_stdio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_stdio.c; sourceTree = ""; }; + B3C8A26D2877D0B90037A946 /* archive_file_7z.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_7z.c; sourceTree = ""; }; + B3C8A26E2877D0B90037A946 /* archive_file_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_zlib.c; sourceTree = ""; }; + B3C8A26F2877D0B90037A946 /* config_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file.c; sourceTree = ""; }; + B3C8A2702877D0B90037A946 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3C8A2712877D0B90037A946 /* archive_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file.c; sourceTree = ""; }; + B3C8A2732877D0B90037A946 /* lrc_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lrc_hash.c; sourceTree = ""; }; + B3C8A2752877D0B90037A946 /* stdin_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdin_stream.c; sourceTree = ""; }; + B3C8A2762877D0B90037A946 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3C8A2772877D0B90037A946 /* trans_stream_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_zlib.c; sourceTree = ""; }; + B3C8A2782877D0B90037A946 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B3C8A2792877D0B90037A946 /* trans_stream_pipe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_pipe.c; sourceTree = ""; }; + B3C8A27A2877D0B90037A946 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B3C8A27B2877D0B90037A946 /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B3C8A27C2877D0B90037A946 /* trans_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream.c; sourceTree = ""; }; + B3C8A27D2877D0B90037A946 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3C8A27E2877D0B90037A946 /* rzip_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzip_stream.c; sourceTree = ""; }; + B3C8A2812877D0B90037A946 /* base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = ""; }; + B3C8A2822877D0B90037A946 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3C8A2832877D0B90037A946 /* win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32.h; sourceTree = ""; }; + B3C8A2842877D0B90037A946 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3C8A2852877D0B90037A946 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3C8A2862877D0B90037A946 /* libretro_dspfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_dspfilter.h; sourceTree = ""; }; + B3C8A2882877D0B90037A946 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3C8A2892877D0B90037A946 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3C8A28A2877D0B90037A946 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3C8A28C2877D0B90037A946 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3C8A28D2877D0B90037A946 /* libco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; + B3C8A28F2877D0B90037A946 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B3C8A2902877D0B90037A946 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3C8A2912877D0B90037A946 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3C8A2922877D0B90037A946 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3C8A2942877D0B90037A946 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3C8A2952877D0B90037A946 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3C8A2962877D0B90037A946 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3C8A2972877D0B90037A946 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B3C8A2982877D0B90037A946 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3C8A29A2877D0B90037A946 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3C8A29B2877D0B90037A946 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3C8A29C2877D0B90037A946 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3C8A29D2877D0B90037A946 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3C8A29E2877D0B90037A946 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B3C8A29F2877D0B90037A946 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B3C8A2A02877D0B90037A946 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3C8A2A12877D0B90037A946 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3C8A2A22877D0B90037A946 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B3C8A2A32877D0B90037A946 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3C8A2A42877D0B90037A946 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3C8A2A62877D0B90037A946 /* label_sanitization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = label_sanitization.h; sourceTree = ""; }; + B3C8A2A82877D0B90037A946 /* dylib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dylib.h; sourceTree = ""; }; + B3C8A2AA2877D0B90037A946 /* net_ifinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_ifinfo.h; sourceTree = ""; }; + B3C8A2AB2877D0B90037A946 /* net_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_compat.h; sourceTree = ""; }; + B3C8A2AC2877D0B90037A946 /* net_socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket.h; sourceTree = ""; }; + B3C8A2AD2877D0B90037A946 /* net_natt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_natt.h; sourceTree = ""; }; + B3C8A2AE2877D0B90037A946 /* net_socket_ssl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket_ssl.h; sourceTree = ""; }; + B3C8A2AF2877D0B90037A946 /* net_http.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http.h; sourceTree = ""; }; + B3C8A2B02877D0B90037A946 /* net_http_parse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http_parse.h; sourceTree = ""; }; + B3C8A2B12877D0B90037A946 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3C8A2B32877D0B90037A946 /* m3u_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m3u_file.h; sourceTree = ""; }; + B3C8A2B42877D0B90037A946 /* jsonsax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax.h; sourceTree = ""; }; + B3C8A2B52877D0B90037A946 /* rxml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rxml.h; sourceTree = ""; }; + B3C8A2B62877D0B90037A946 /* cdfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdfs.h; sourceTree = ""; }; + B3C8A2B72877D0B90037A946 /* rpng.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng.h; sourceTree = ""; }; + B3C8A2B82877D0B90037A946 /* rtga.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtga.h; sourceTree = ""; }; + B3C8A2B92877D0B90037A946 /* rjson.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjson.h; sourceTree = ""; }; + B3C8A2BA2877D0B90037A946 /* image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = ""; }; + B3C8A2BB2877D0B90037A946 /* logiqx_dat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logiqx_dat.h; sourceTree = ""; }; + B3C8A2BC2877D0B90037A946 /* rbmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbmp.h; sourceTree = ""; }; + B3C8A2BD2877D0B90037A946 /* rwav.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rwav.h; sourceTree = ""; }; + B3C8A2BE2877D0B90037A946 /* jsonsax_full.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax_full.h; sourceTree = ""; }; + B3C8A2BF2877D0B90037A946 /* rjpeg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjpeg.h; sourceTree = ""; }; + B3C8A2C12877D0B90037A946 /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B3C8A2C22877D0B90037A946 /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B3C8A2C32877D0B90037A946 /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B3C8A2C42877D0B90037A946 /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B3C8A2C62877D0B90037A946 /* nx_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_gl.h; sourceTree = ""; }; + B3C8A2C72877D0B90037A946 /* nx_glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_glsym.h; sourceTree = ""; }; + B3C8A2C82877D0B90037A946 /* rglgen_private_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_private_headers.h; sourceTree = ""; }; + B3C8A2C92877D0B90037A946 /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B3C8A2CA2877D0B90037A946 /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B3C8A2CC2877D0B90037A946 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3C8A2CD2877D0B90037A946 /* linked_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linked_list.h; sourceTree = ""; }; + B3C8A2CE2877D0B90037A946 /* file_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_list.h; sourceTree = ""; }; + B3C8A2CF2877D0B90037A946 /* nested_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nested_list.h; sourceTree = ""; }; + B3C8A2D02877D0B90037A946 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3C8A2D22877D0B90037A946 /* nbio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nbio.h; sourceTree = ""; }; + B3C8A2D32877D0B90037A946 /* config_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file.h; sourceTree = ""; }; + B3C8A2D42877D0B90037A946 /* archive_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_file.h; sourceTree = ""; }; + B3C8A2D52877D0B90037A946 /* config_file_userdata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file_userdata.h; sourceTree = ""; }; + B3C8A2D62877D0B90037A946 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3C8A2D72877D0B90037A946 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3C8A2D92877D0B90037A946 /* rhmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rhmap.h; sourceTree = ""; }; + B3C8A2DA2877D0B90037A946 /* rbuf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbuf.h; sourceTree = ""; }; + B3C8A2DB2877D0B90037A946 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3C8A2DC2877D0B90037A946 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3C8A2DD2877D0B90037A946 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3C8A2DF2877D0B90037A946 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3C8A2E02877D0B90037A946 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3C8A2E12877D0B90037A946 /* trans_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trans_stream.h; sourceTree = ""; }; + B3C8A2E22877D0B90037A946 /* rzip_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rzip_stream.h; sourceTree = ""; }; + B3C8A2E32877D0B90037A946 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3C8A2E42877D0B90037A946 /* stdin_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdin_stream.h; sourceTree = ""; }; + B3C8A2E52877D0B90037A946 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3C8A2E62877D0B90037A946 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3C8A2E72877D0B90037A946 /* fastcpy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fastcpy.h; sourceTree = ""; }; + B3C8A2E92877D0B90037A946 /* lzma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lzma.h; sourceTree = ""; }; + B3C8A2EA2877D0B90037A946 /* minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minmax.h; sourceTree = ""; }; + B3C8A2EB2877D0B90037A946 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3C8A2EC2877D0B90037A946 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3C8A2ED2877D0B90037A946 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3C8A2EE2877D0B90037A946 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3C8A2EF2877D0B90037A946 /* libchdr_zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libchdr_zlib.h; sourceTree = ""; }; + B3C8A2F02877D0B90037A946 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3C8A2F12877D0B90037A946 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3C8A2F32877D0B90037A946 /* features_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = features_cpu.h; sourceTree = ""; }; + B3C8A2F42877D0B90037A946 /* lrc_hash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lrc_hash.h; sourceTree = ""; }; + B3C8A2F62877D0B90037A946 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3C8A2F72877D0B90037A946 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3C8A2F82877D0B90037A946 /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B3C8A2FA2877D0B90037A946 /* float_minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_minmax.h; sourceTree = ""; }; + B3C8A2FB2877D0B90037A946 /* fxp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fxp.h; sourceTree = ""; }; + B3C8A2FC2877D0B90037A946 /* complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = complex.h; sourceTree = ""; }; + B3C8A2FE2877D0B90037A946 /* rtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtime.h; sourceTree = ""; }; + B3C8A3002877D0B90037A946 /* d3d_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_defines.h; sourceTree = ""; }; + B3C8A3012877D0B90037A946 /* gx_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_defines.h; sourceTree = ""; }; + B3C8A3022877D0B90037A946 /* cocoa_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cocoa_defines.h; sourceTree = ""; }; + B3C8A3032877D0B90037A946 /* psp_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_defines.h; sourceTree = ""; }; + B3C8A3042877D0B90037A946 /* ps3_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps3_defines.h; sourceTree = ""; }; + B3C8A3052877D0B90037A946 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3C8A3062877D0B90037A946 /* libretro_gskit_ps2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_gskit_ps2.h; sourceTree = ""; }; + B3C8A3082877D0B90037A946 /* glsm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm.h; sourceTree = ""; }; + B3C8A3092877D0B90037A946 /* glsm_caps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm_caps.h; sourceTree = ""; }; + B3C8A30A2877D0B90037A946 /* glsm_state_ctl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm_state_ctl.h; sourceTree = ""; }; + B3C8A30B2877D0B90037A946 /* glsmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsmsym.h; sourceTree = ""; }; + B3C8A30D2877D0B90037A946 /* dsp_filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_filter.h; sourceTree = ""; }; + B3C8A30E2877D0B90037A946 /* audio_resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_resampler.h; sourceTree = ""; }; + B3C8A30F2877D0B90037A946 /* audio_mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mixer.h; sourceTree = ""; }; + B3C8A3112877D0B90037A946 /* s16_to_float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s16_to_float.h; sourceTree = ""; }; + B3C8A3122877D0B90037A946 /* float_to_s16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_to_s16.h; sourceTree = ""; }; + B3C8A3132877D0B90037A946 /* audio_mix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mix.h; sourceTree = ""; }; + B3C8A3142877D0B90037A946 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3C8A3162877D0B90037A946 /* tpool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tpool.h; sourceTree = ""; }; + B3C8A3172877D0B90037A946 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3C8A3182877D0B90037A946 /* async_job.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = async_job.h; sourceTree = ""; }; + B3C8A3192877D0B90037A946 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3C8A31B2877D0B90037A946 /* vulkan_symbol_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_symbol_wrapper.h; sourceTree = ""; }; + B3C8A31C2877D0B90037A946 /* retro_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; + B3C8A31D2877D0B90037A946 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3C8A31F2877D0B90037A946 /* generic_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = generic_queue.h; sourceTree = ""; }; + B3C8A3202877D0B90037A946 /* task_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = task_queue.h; sourceTree = ""; }; + B3C8A3212877D0B90037A946 /* fifo_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fifo_queue.h; sourceTree = ""; }; + B3C8A3222877D0B90037A946 /* message_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message_queue.h; sourceTree = ""; }; + B3C8A3232877D0B90037A946 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3C8A3252877D0B90037A946 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3C8A3262877D0B90037A946 /* libretro_d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_d3d.h; sourceTree = ""; }; + B3C8A3272877D0B90037A946 /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B3C8A3292877D0B90037A946 /* video_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_frame.h; sourceTree = ""; }; + B3C8A32B2877D0B90037A946 /* vector_4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_4.h; sourceTree = ""; }; + B3C8A32C2877D0B90037A946 /* vector_3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_3.h; sourceTree = ""; }; + B3C8A32D2877D0B90037A946 /* vector_2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_2.h; sourceTree = ""; }; + B3C8A32E2877D0B90037A946 /* matrix_3x3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_3x3.h; sourceTree = ""; }; + B3C8A32F2877D0B90037A946 /* matrix_4x4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_4x4.h; sourceTree = ""; }; + B3C8A3312877D0B90037A946 /* scaler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; + B3C8A3322877D0B90037A946 /* pixconv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pixconv.h; sourceTree = ""; }; + B3C8A3332877D0B90037A946 /* scaler_int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler_int.h; sourceTree = ""; }; + B3C8A3342877D0B90037A946 /* filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + B3C8A3352877D0B90037A946 /* gl_capabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_capabilities.h; sourceTree = ""; }; + B3C8A3362877D0B90037A946 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3C8A3372877D0B90037A946 /* filters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + B3C8A3392877D0B90037A946 /* media_detect_cd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = media_detect_cd.h; sourceTree = ""; }; + B3C8A33B2877D0B90037A946 /* features_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = features_cpu.c; sourceTree = ""; }; + B3C8A33D2877D0B90037A946 /* djb2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = djb2.c; sourceTree = ""; }; + B3C8A33E2877D0B90037A946 /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = ""; }; + B3C8A3402877D0B90037A946 /* debugbreak.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugbreak.c; sourceTree = ""; }; + B3C8A3412877D0B90037A946 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B3C8A3432877D0B90037A946 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3C8A3442877D0B90037A946 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3C8A3462877D0B90037A946 /* rtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtime.c; sourceTree = ""; }; + B3C8A34B2877D0B90037A946 /* core_option_regex.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = core_option_regex.py; sourceTree = ""; }; + B3C8A34C2877D0B90037A946 /* v1_to_v2_converter.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = v1_to_v2_converter.py; sourceTree = ""; }; + B3C8A34D2877D0B90037A946 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3C8A34E2877D0B90037A946 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3C8A3502877D0B90037A946 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3C8A3512877D0B90037A946 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3C8A3522877D0B90037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C8A3542877D0B90037A946 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3C8A3552877D0B90037A946 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3C8A3572877D0B90037A946 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3C8A3582877D0B90037A946 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3C8A35B2877D0B90037A946 /* compat_fnmatch_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch_test.c; sourceTree = ""; }; + B3C8A35C2877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A35E2877D0B90037A946 /* strl_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = strl_test.c; sourceTree = ""; }; + B3C8A35F2877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A3612877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A3622877D0B90037A946 /* snprintf_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snprintf_test.c; sourceTree = ""; }; + B3C8A3642877D0B90037A946 /* net_ifinfo_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo_test.c; sourceTree = ""; }; + B3C8A3652877D0B90037A946 /* udp-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "udp-test.c"; sourceTree = ""; }; + B3C8A3662877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A3672877D0B90037A946 /* net_http_parse_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_parse_test.c; sourceTree = ""; }; + B3C8A3682877D0B90037A946 /* net_ifinfo */ = {isa = PBXFileReference; lastKnownFileType = file; path = net_ifinfo; sourceTree = ""; }; + B3C8A3692877D0B90037A946 /* http_test */ = {isa = PBXFileReference; lastKnownFileType = file; path = http_test; sourceTree = ""; }; + B3C8A36A2877D0B90037A946 /* net_http_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_test.c; sourceTree = ""; }; + B3C8A36D2877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A36E2877D0B90037A946 /* rpng_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_test.c; sourceTree = ""; }; + B3C8A3702877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A3712877D0B90037A946 /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B3C8A3742877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A3752877D0B90037A946 /* nbio_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_test.c; sourceTree = ""; }; + B3C8A3772877D0B90037A946 /* config_file_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file_test.c; sourceTree = ""; }; + B3C8A3782877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A37B2877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A37C2877D0B90037A946 /* rzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzip.c; sourceTree = ""; }; + B3C8A37E2877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A37F2877D0B90037A946 /* md5_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5_test.c; sourceTree = ""; }; + B3C8A3802877D0B90037A946 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3C8A3812877D0B90037A946 /* sha1_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1_main.c; sourceTree = ""; }; + B3C8A3832877D0B90037A946 /* glsm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsm.c; sourceTree = ""; }; + B3C8A3862877D0B90037A946 /* eq.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eq.c; sourceTree = ""; }; + B3C8A3872877D0B90037A946 /* EQ.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EQ.dsp; sourceTree = ""; }; + B3C8A3882877D0B90037A946 /* Vibrato.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Vibrato.dsp; sourceTree = ""; }; + B3C8A3892877D0B90037A946 /* ChipTuneEnhance.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChipTuneEnhance.dsp; sourceTree = ""; }; + B3C8A38A2877D0B90037A946 /* phaser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = phaser.c; sourceTree = ""; }; + B3C8A38B2877D0B90037A946 /* Crystalizer.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Crystalizer.dsp; sourceTree = ""; }; + B3C8A38C2877D0B90037A946 /* Mono.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Mono.dsp; sourceTree = ""; }; + B3C8A38D2877D0B90037A946 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3C8A38E2877D0B90037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A38F2877D0B90037A946 /* chorus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chorus.c; sourceTree = ""; }; + B3C8A3902877D0B90037A946 /* Phaser.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Phaser.dsp; sourceTree = ""; }; + B3C8A3912877D0B90037A946 /* wahwah.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wahwah.c; sourceTree = ""; }; + B3C8A3922877D0B90037A946 /* IIR.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = IIR.dsp; sourceTree = ""; }; + B3C8A3932877D0B90037A946 /* HighShelfDampen.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = HighShelfDampen.dsp; sourceTree = ""; }; + B3C8A3942877D0B90037A946 /* EchoReverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EchoReverb.dsp; sourceTree = ""; }; + B3C8A3952877D0B90037A946 /* iir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iir.c; sourceTree = ""; }; + B3C8A3962877D0B90037A946 /* reverb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reverb.c; sourceTree = ""; }; + B3C8A3972877D0B90037A946 /* crystalizer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crystalizer.c; sourceTree = ""; }; + B3C8A3982877D0B90037A946 /* WahWah.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = WahWah.dsp; sourceTree = ""; }; + B3C8A39A2877D0B90037A946 /* fft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = ""; }; + B3C8A39B2877D0B90037A946 /* fft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fft.c; sourceTree = ""; }; + B3C8A39C2877D0B90037A946 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3C8A39D2877D0B90037A946 /* BassBoost.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = BassBoost.dsp; sourceTree = ""; }; + B3C8A39E2877D0B90037A946 /* vibrato.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vibrato.c; sourceTree = ""; }; + B3C8A39F2877D0B90037A946 /* Echo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Echo.dsp; sourceTree = ""; }; + B3C8A3A02877D0B90037A946 /* LowPassCPS.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = LowPassCPS.dsp; sourceTree = ""; }; + B3C8A3A12877D0B90037A946 /* Panning.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Panning.dsp; sourceTree = ""; }; + B3C8A3A22877D0B90037A946 /* tremolo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tremolo.c; sourceTree = ""; }; + B3C8A3A32877D0B90037A946 /* panning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = panning.c; sourceTree = ""; }; + B3C8A3A42877D0B90037A946 /* Chorus.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Chorus.dsp; sourceTree = ""; }; + B3C8A3A52877D0B90037A946 /* Tremolo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tremolo.dsp; sourceTree = ""; }; + B3C8A3A62877D0B90037A946 /* Reverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Reverb.dsp; sourceTree = ""; }; + B3C8A3A72877D0B90037A946 /* echo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = echo.c; sourceTree = ""; }; + B3C8A3A82877D0B90037A946 /* audio_mix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mix.c; sourceTree = ""; }; + B3C8A3AB2877D0B90037A946 /* sinc_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sinc_resampler.c; sourceTree = ""; }; + B3C8A3AC2877D0B90037A946 /* nearest_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nearest_resampler.c; sourceTree = ""; }; + B3C8A3AD2877D0B90037A946 /* sinc_resampler_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sinc_resampler_neon.S; sourceTree = ""; }; + B3C8A3AE2877D0B90037A946 /* audio_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_resampler.c; sourceTree = ""; }; + B3C8A3AF2877D0B90037A946 /* dsp_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp_filter.c; sourceTree = ""; }; + B3C8A3B12877D0B90037A946 /* s16_to_float.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float.c; sourceTree = ""; }; + B3C8A3B22877D0B90037A946 /* float_to_s16_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16_neon.c; sourceTree = ""; }; + B3C8A3B32877D0B90037A946 /* s16_to_float_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float_neon.c; sourceTree = ""; }; + B3C8A3B42877D0B90037A946 /* float_to_s16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16.c; sourceTree = ""; }; + B3C8A3B52877D0B90037A946 /* float_to_s16_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = float_to_s16_neon.S; sourceTree = ""; }; + B3C8A3B62877D0B90037A946 /* s16_to_float_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = s16_to_float_neon.S; sourceTree = ""; }; + B3C8A3B72877D0B90037A946 /* audio_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mixer.c; sourceTree = ""; }; + B3C8A3B92877D0B90037A946 /* wiiu_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiiu_pthread.h; sourceTree = ""; }; + B3C8A3BA2877D0B90037A946 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3C8A3BB2877D0B90037A946 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3C8A3BC2877D0B90037A946 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3C8A3BD2877D0B90037A946 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3C8A3BE2877D0B90037A946 /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B3C8A3BF2877D0B90037A946 /* tpool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tpool.c; sourceTree = ""; }; + B3C8A3C02877D0B90037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A3C22877D0B90037A946 /* vulkan_symbol_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_symbol_wrapper.c; sourceTree = ""; }; + B3C8A3C42877D0B90037A946 /* fifo_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fifo_queue.c; sourceTree = ""; }; + B3C8A3C52877D0B90037A946 /* message_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = message_queue.c; sourceTree = ""; }; + B3C8A3C62877D0B90037A946 /* generic_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = generic_queue.c; sourceTree = ""; }; + B3C8A3C72877D0B90037A946 /* task_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_queue.c; sourceTree = ""; }; + B3C8A3C82877D0B90037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C8A3CA2877D0B90037A946 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3C8A3CD2877D0B90037A946 /* string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string.h; sourceTree = ""; }; + B3C8A3CE2877D0B90037A946 /* string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = ""; }; + B3C8A3D02877D0B90037A946 /* gl_capabilities.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl_capabilities.c; sourceTree = ""; }; + B3C8A3D22877D0B90037A946 /* scaler_int.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_int.c; sourceTree = ""; }; + B3C8A3D32877D0B90037A946 /* pixconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; + B3C8A3D42877D0B90037A946 /* scaler_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_filter.c; sourceTree = ""; }; + B3C8A3D52877D0B90037A946 /* scaler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + B3C8A3D72877D0B90037A946 /* sjlj.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjlj.c; sourceTree = ""; }; + B3C8A3D82877D0B90037A946 /* ps2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps2.c; sourceTree = ""; }; + B3C8A3D92877D0B90037A946 /* ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ppc.c; sourceTree = ""; }; + B3C8A3DA2877D0B90037A946 /* ucontext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ucontext.c; sourceTree = ""; }; + B3C8A3DB2877D0B90037A946 /* fiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fiber.c; sourceTree = ""; }; + B3C8A3DC2877D0B90037A946 /* aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aarch64.c; sourceTree = ""; }; + B3C8A3DD2877D0B90037A946 /* libco.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libco.c; sourceTree = ""; }; + B3C8A3DE2877D0B90037A946 /* scefiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scefiber.c; sourceTree = ""; }; + B3C8A3DF2877D0B90037A946 /* genode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = genode.cpp; sourceTree = ""; }; + B3C8A3E02877D0B90037A946 /* armeabi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armeabi.c; sourceTree = ""; }; + B3C8A3E12877D0B90037A946 /* amd64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = amd64.c; sourceTree = ""; }; + B3C8A3E22877D0B90037A946 /* psp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp2.c; sourceTree = ""; }; + B3C8A3E32877D0B90037A946 /* x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = ""; }; + B3C8A3E42877D0B90037A946 /* psp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp1.c; sourceTree = ""; }; + B3C8A3E62877D0B90037A946 /* media_detect_cd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = media_detect_cd.c; sourceTree = ""; }; + B3C8A3E82877D0B90037A946 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3C8A3EA2877D0B90037A946 /* xxhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; + B3C8A3EB2877D0B90037A946 /* xxh3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxh3.h; sourceTree = ""; }; + B3C8A3EC2877D0B90037A946 /* generate-ini-headers.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "generate-ini-headers.sh"; sourceTree = ""; }; + B3C8A3ED2877D0B90037A946 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3C8A3F12877D0B90037A946 /* ARB_buffer_storage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARB_buffer_storage.h; sourceTree = ""; }; + B3C8A3F32877D0B90037A946 /* Config_mupenplus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Config_mupenplus.cpp; sourceTree = ""; }; + B3C8A3F42877D0B90037A946 /* GLideN64_mupenplus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideN64_mupenplus.h; sourceTree = ""; }; + B3C8A3F52877D0B90037A946 /* OpenGL_mupenplus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenGL_mupenplus.cpp; sourceTree = ""; }; + B3C8A3F62877D0B90037A946 /* CommonAPIImpl_mupenplus.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommonAPIImpl_mupenplus.cpp; sourceTree = ""; }; + B3C8A3F72877D0B90037A946 /* GLideN64.custom.ini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideN64.custom.ini.h; sourceTree = ""; }; + B3C8A3F82877D0B90037A946 /* GLideN64_libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLideN64_libretro.h; sourceTree = ""; }; + B3C8A3FA2877D0B90037A946 /* gas-preprocessor.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "gas-preprocessor.pl"; sourceTree = ""; }; + B3C8A3FD2877D0B90037A946 /* pnginfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnginfo.h; sourceTree = ""; }; + B3C8A3FE2877D0B90037A946 /* pngrio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrio.c; sourceTree = ""; }; + B3C8A3FF2877D0B90037A946 /* pngerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngerror.c; sourceTree = ""; }; + B3C8A4002877D0B90037A946 /* pngwio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwio.c; sourceTree = ""; }; + B3C8A4012877D0B90037A946 /* pngstruct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; + B3C8A4022877D0B90037A946 /* pngtrans.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngtrans.c; sourceTree = ""; }; + B3C8A4032877D0B90037A946 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3C8A4042877D0B90037A946 /* pngpriv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngpriv.h; sourceTree = ""; }; + B3C8A4052877D0B90037A946 /* pngwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwrite.c; sourceTree = ""; }; + B3C8A4062877D0B90037A946 /* png.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; + B3C8A4092877D0B90037A946 /* android-ndk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "android-ndk.c"; sourceTree = ""; }; + B3C8A40A2877D0B90037A946 /* linux-auxv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "linux-auxv.c"; sourceTree = ""; }; + B3C8A40B2877D0B90037A946 /* linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linux.c; sourceTree = ""; }; + B3C8A40C2877D0B90037A946 /* pngwutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwutil.c; sourceTree = ""; }; + B3C8A40D2877D0B90037A946 /* pngwtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwtran.c; sourceTree = ""; }; + B3C8A40E2877D0B90037A946 /* pnglibconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnglibconf.h; sourceTree = ""; }; + B3C8A40F2877D0B90037A946 /* pngconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; + B3C8A4102877D0B90037A946 /* pngpread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngpread.c; sourceTree = ""; }; + B3C8A4112877D0B90037A946 /* pngdebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngdebug.h; sourceTree = ""; }; + B3C8A4122877D0B90037A946 /* pngread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngread.c; sourceTree = ""; }; + B3C8A4142877D0B90037A946 /* filter_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = filter_neon.S; sourceTree = ""; }; + B3C8A4152877D0B90037A946 /* filter_neon_intrinsics.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = filter_neon_intrinsics.c; sourceTree = ""; }; + B3C8A4162877D0B90037A946 /* arm_init.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = arm_init.c; sourceTree = ""; }; + B3C8A4172877D0B90037A946 /* pngmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngmem.c; sourceTree = ""; }; + B3C8A4182877D0B90037A946 /* pngget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngget.c; sourceTree = ""; }; + B3C8A4192877D0B90037A946 /* png.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = png.c; sourceTree = ""; }; + B3C8A41A2877D0B90037A946 /* pngrtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrtran.c; sourceTree = ""; }; + B3C8A41B2877D0B90037A946 /* pngrutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrutil.c; sourceTree = ""; }; + B3C8A41C2877D0B90037A946 /* pngset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngset.c; sourceTree = ""; }; + B3C8A41E2877D0BA0037A946 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3C8A41F2877D0BA0037A946 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3C8A4202877D0BA0037A946 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3C8A4212877D0BA0037A946 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3C8A4222877D0BA0037A946 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3C8A4232877D0BA0037A946 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3C8A4242877D0BA0037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A4252877D0BA0037A946 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3C8A4262877D0BA0037A946 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3C8A4272877D0BA0037A946 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3C8A4282877D0BA0037A946 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3C8A4292877D0BA0037A946 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3C8A42A2877D0BA0037A946 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3C8A42B2877D0BA0037A946 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3C8A42C2877D0BA0037A946 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3C8A42D2877D0BA0037A946 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3C8A42E2877D0BA0037A946 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3C8A42F2877D0BA0037A946 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3C8A4302877D0BA0037A946 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3C8A4312877D0BA0037A946 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B3C8A4322877D0BA0037A946 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B3C8A4332877D0BA0037A946 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B3C8A4342877D0BA0037A946 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B3C8A4352877D0BA0037A946 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3C8A4362877D0BA0037A946 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3C8A4372877D0BA0037A946 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3C8A4382877D0BA0037A946 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3C8A4392877D0BA0037A946 /* mupen64plus-next_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "mupen64plus-next_common.h"; sourceTree = ""; }; + B3C8A43D2877D0BA0037A946 /* FrameStats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FrameStats.h; sourceTree = ""; }; + B3C8A43E2877D0BA0037A946 /* vec2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vec2.h; sourceTree = ""; }; + B3C8A43F2877D0BA0037A946 /* DisplayInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisplayInfo.h; sourceTree = ""; }; + B3C8A4402877D0BA0037A946 /* mat4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mat4.h; sourceTree = ""; }; + B3C8A4412877D0BA0037A946 /* GraphicBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicBuffer.h; sourceTree = ""; }; + B3C8A4422877D0BA0037A946 /* Fence.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fence.h; sourceTree = ""; }; + B3C8A4432877D0BA0037A946 /* Point.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Point.h; sourceTree = ""; }; + B3C8A4442877D0BA0037A946 /* TVecHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TVecHelpers.h; sourceTree = ""; }; + B3C8A4452877D0BA0037A946 /* TMatHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TMatHelpers.h; sourceTree = ""; }; + B3C8A4462877D0BA0037A946 /* UiConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UiConfig.h; sourceTree = ""; }; + B3C8A4472877D0BA0037A946 /* vec4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vec4.h; sourceTree = ""; }; + B3C8A4482877D0BA0037A946 /* Rect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Rect.h; sourceTree = ""; }; + B3C8A4492877D0BA0037A946 /* FramebufferNativeWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FramebufferNativeWindow.h; sourceTree = ""; }; + B3C8A44A2877D0BA0037A946 /* DisplayStatInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisplayStatInfo.h; sourceTree = ""; }; + B3C8A44B2877D0BA0037A946 /* vec3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vec3.h; sourceTree = ""; }; + B3C8A44C2877D0BA0037A946 /* Region.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Region.h; sourceTree = ""; }; + B3C8A44D2877D0BA0037A946 /* GraphicBufferAllocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicBufferAllocator.h; sourceTree = ""; }; + B3C8A44E2877D0BA0037A946 /* GraphicBufferMapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicBufferMapper.h; sourceTree = ""; }; + B3C8A44F2877D0BA0037A946 /* ANativeObjectBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ANativeObjectBase.h; sourceTree = ""; }; + B3C8A4502877D0BA0037A946 /* PixelFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PixelFormat.h; sourceTree = ""; }; + B3C8A4522877D0BA0037A946 /* gl31.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl31.h; sourceTree = ""; }; + B3C8A4542877D0BA0037A946 /* bt_pan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_pan.h; sourceTree = ""; }; + B3C8A4552877D0BA0037A946 /* keymaster2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keymaster2.h; sourceTree = ""; }; + B3C8A4562877D0BA0037A946 /* gps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gps.h; sourceTree = ""; }; + B3C8A4572877D0BA0037A946 /* sound_trigger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sound_trigger.h; sourceTree = ""; }; + B3C8A4582877D0BA0037A946 /* power.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = power.h; sourceTree = ""; }; + B3C8A4592877D0BA0037A946 /* hwcomposer_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hwcomposer_defs.h; sourceTree = ""; }; + B3C8A45A2877D0BA0037A946 /* boot_control.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boot_control.h; sourceTree = ""; }; + B3C8A45B2877D0BA0037A946 /* bt_common_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_common_types.h; sourceTree = ""; }; + B3C8A45C2877D0BA0037A946 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B3C8A45D2877D0BA0037A946 /* activity_recognition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = activity_recognition.h; sourceTree = ""; }; + B3C8A45E2877D0BA0037A946 /* bt_sock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_sock.h; sourceTree = ""; }; + B3C8A45F2877D0BA0037A946 /* vibrator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vibrator.h; sourceTree = ""; }; + B3C8A4602877D0BA0037A946 /* fused_location.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fused_location.h; sourceTree = ""; }; + B3C8A4612877D0BA0037A946 /* consumerir.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = consumerir.h; sourceTree = ""; }; + B3C8A4622877D0BA0037A946 /* nfc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nfc.h; sourceTree = ""; }; + B3C8A4632877D0BA0037A946 /* audio_policy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_policy.h; sourceTree = ""; }; + B3C8A4642877D0BA0037A946 /* nvram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nvram.h; sourceTree = ""; }; + B3C8A4652877D0BA0037A946 /* camera3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera3.h; sourceTree = ""; }; + B3C8A4662877D0BA0037A946 /* bt_gatt_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_gatt_types.h; sourceTree = ""; }; + B3C8A4672877D0BA0037A946 /* camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera.h; sourceTree = ""; }; + B3C8A4682877D0BA0037A946 /* keymaster1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keymaster1.h; sourceTree = ""; }; + B3C8A4692877D0BA0037A946 /* sensors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sensors.h; sourceTree = ""; }; + B3C8A46A2877D0BA0037A946 /* local_time_hal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = local_time_hal.h; sourceTree = ""; }; + B3C8A46B2877D0BA0037A946 /* qemud.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qemud.h; sourceTree = ""; }; + B3C8A46C2877D0BA0037A946 /* keymaster_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keymaster_defs.h; sourceTree = ""; }; + B3C8A46D2877D0BA0037A946 /* hwcomposer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hwcomposer.h; sourceTree = ""; }; + B3C8A46E2877D0BA0037A946 /* audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; + B3C8A46F2877D0BA0037A946 /* lights.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lights.h; sourceTree = ""; }; + B3C8A4702877D0BA0037A946 /* camera_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera_common.h; sourceTree = ""; }; + B3C8A4712877D0BA0037A946 /* nvram_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nvram_defs.h; sourceTree = ""; }; + B3C8A4722877D0BA0037A946 /* bt_gatt_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_gatt_client.h; sourceTree = ""; }; + B3C8A4732877D0BA0037A946 /* bluetooth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bluetooth.h; sourceTree = ""; }; + B3C8A4742877D0BA0037A946 /* keymaster_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keymaster_common.h; sourceTree = ""; }; + B3C8A4752877D0BA0037A946 /* camera2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera2.h; sourceTree = ""; }; + B3C8A4762877D0BA0037A946 /* keymaster0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keymaster0.h; sourceTree = ""; }; + B3C8A4772877D0BA0037A946 /* bt_gatt_server.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_gatt_server.h; sourceTree = ""; }; + B3C8A4782877D0BA0037A946 /* hw_auth_token.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hw_auth_token.h; sourceTree = ""; }; + B3C8A4792877D0BA0037A946 /* bt_sdp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_sdp.h; sourceTree = ""; }; + B3C8A47A2877D0BA0037A946 /* audio_alsaops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_alsaops.h; sourceTree = ""; }; + B3C8A47B2877D0BA0037A946 /* memtrack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memtrack.h; sourceTree = ""; }; + B3C8A47C2877D0BA0037A946 /* fb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fb.h; sourceTree = ""; }; + B3C8A47D2877D0BA0037A946 /* radio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = radio.h; sourceTree = ""; }; + B3C8A47E2877D0BA0037A946 /* gralloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gralloc.h; sourceTree = ""; }; + B3C8A47F2877D0BA0037A946 /* nfc_tag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nfc_tag.h; sourceTree = ""; }; + B3C8A4802877D0BA0037A946 /* bt_mce.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_mce.h; sourceTree = ""; }; + B3C8A4812877D0BA0037A946 /* hdmi_cec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hdmi_cec.h; sourceTree = ""; }; + B3C8A4822877D0BA0037A946 /* gatekeeper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gatekeeper.h; sourceTree = ""; }; + B3C8A4832877D0BA0037A946 /* bt_rc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_rc.h; sourceTree = ""; }; + B3C8A4842877D0BA0037A946 /* bt_hl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_hl.h; sourceTree = ""; }; + B3C8A4852877D0BA0037A946 /* bt_av.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_av.h; sourceTree = ""; }; + B3C8A4862877D0BA0037A946 /* bt_hf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_hf.h; sourceTree = ""; }; + B3C8A4872877D0BA0037A946 /* tv_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tv_input.h; sourceTree = ""; }; + B3C8A4882877D0BA0037A946 /* bt_hh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_hh.h; sourceTree = ""; }; + B3C8A4892877D0BA0037A946 /* audio_effect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_effect.h; sourceTree = ""; }; + B3C8A48A2877D0BA0037A946 /* hardware.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hardware.h; sourceTree = ""; }; + B3C8A48B2877D0BA0037A946 /* fingerprint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fingerprint.h; sourceTree = ""; }; + B3C8A48C2877D0BA0037A946 /* bt_gatt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_gatt.h; sourceTree = ""; }; + B3C8A48D2877D0BA0037A946 /* bt_hf_client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bt_hf_client.h; sourceTree = ""; }; + B3C8A48E2877D0BA0037A946 /* qemu_pipe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qemu_pipe.h; sourceTree = ""; }; + B3C8A4902877D0BA0037A946 /* record_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = record_stream.h; sourceTree = ""; }; + B3C8A4912877D0BA0037A946 /* aref.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aref.h; sourceTree = ""; }; + B3C8A4922877D0BA0037A946 /* bitops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitops.h; sourceTree = ""; }; + B3C8A4932877D0BA0037A946 /* klog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = klog.h; sourceTree = ""; }; + B3C8A4942877D0BA0037A946 /* compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = ""; }; + B3C8A4952877D0BA0037A946 /* str_parms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = str_parms.h; sourceTree = ""; }; + B3C8A4962877D0BA0037A946 /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + B3C8A4972877D0BA0037A946 /* threads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = threads.h; sourceTree = ""; }; + B3C8A4982877D0BA0037A946 /* jstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jstring.h; sourceTree = ""; }; + B3C8A4992877D0BA0037A946 /* hashmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hashmap.h; sourceTree = ""; }; + B3C8A49A2877D0BA0037A946 /* partition_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = partition_utils.h; sourceTree = ""; }; + B3C8A49B2877D0BA0037A946 /* ashmem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ashmem.h; sourceTree = ""; }; + B3C8A49C2877D0BA0037A946 /* process_name.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = process_name.h; sourceTree = ""; }; + B3C8A49D2877D0BA0037A946 /* native_handle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = native_handle.h; sourceTree = ""; }; + B3C8A49E2877D0BA0037A946 /* list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = ""; }; + B3C8A49F2877D0BA0037A946 /* config_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_utils.h; sourceTree = ""; }; + B3C8A4A02877D0BA0037A946 /* sockets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sockets.h; sourceTree = ""; }; + B3C8A4A12877D0BA0037A946 /* trace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trace.h; sourceTree = ""; }; + B3C8A4A22877D0BA0037A946 /* log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + B3C8A4A32877D0BA0037A946 /* android_reboot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = android_reboot.h; sourceTree = ""; }; + B3C8A4A42877D0BA0037A946 /* qtaguid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qtaguid.h; sourceTree = ""; }; + B3C8A4A52877D0BA0037A946 /* multiuser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = multiuser.h; sourceTree = ""; }; + B3C8A4A62877D0BA0037A946 /* open_memstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = open_memstream.h; sourceTree = ""; }; + B3C8A4A72877D0BA0037A946 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B3C8A4A82877D0BA0037A946 /* sched_policy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sched_policy.h; sourceTree = ""; }; + B3C8A4A92877D0BA0037A946 /* iosched_policy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iosched_policy.h; sourceTree = ""; }; + B3C8A4AA2877D0BA0037A946 /* debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; + B3C8A4AB2877D0BA0037A946 /* fs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fs.h; sourceTree = ""; }; + B3C8A4AC2877D0BA0037A946 /* properties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = properties.h; sourceTree = ""; }; + B3C8A4AD2877D0BA0037A946 /* uevent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uevent.h; sourceTree = ""; }; + B3C8A4AE2877D0BA0037A946 /* atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atomic.h; sourceTree = ""; }; + B3C8A4B02877D0BA0037A946 /* Timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Timers.h; sourceTree = ""; }; + B3C8A4B12877D0BA0037A946 /* Printer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Printer.h; sourceTree = ""; }; + B3C8A4B22877D0BA0037A946 /* ThreadDefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThreadDefs.h; sourceTree = ""; }; + B3C8A4B32877D0BA0037A946 /* PropertyMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PropertyMap.h; sourceTree = ""; }; + B3C8A4B42877D0BA0037A946 /* BitSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BitSet.h; sourceTree = ""; }; + B3C8A4B52877D0BA0037A946 /* NativeHandle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NativeHandle.h; sourceTree = ""; }; + B3C8A4B62877D0BA0037A946 /* Debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Debug.h; sourceTree = ""; }; + B3C8A4B72877D0BA0037A946 /* LruCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LruCache.h; sourceTree = ""; }; + B3C8A4B82877D0BA0037A946 /* SortedVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SortedVector.h; sourceTree = ""; }; + B3C8A4B92877D0BA0037A946 /* Condition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Condition.h; sourceTree = ""; }; + B3C8A4BA2877D0BA0037A946 /* ByteOrder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ByteOrder.h; sourceTree = ""; }; + B3C8A4BB2877D0BA0037A946 /* Flattenable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Flattenable.h; sourceTree = ""; }; + B3C8A4BC2877D0BA0037A946 /* Singleton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Singleton.h; sourceTree = ""; }; + B3C8A4BD2877D0BA0037A946 /* CallStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CallStack.h; sourceTree = ""; }; + B3C8A4BE2877D0BA0037A946 /* VectorImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VectorImpl.h; sourceTree = ""; }; + B3C8A4BF2877D0BA0037A946 /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + B3C8A4C02877D0BA0037A946 /* Endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Endian.h; sourceTree = ""; }; + B3C8A4C12877D0BA0037A946 /* AndroidThreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AndroidThreads.h; sourceTree = ""; }; + B3C8A4C22877D0BA0037A946 /* StrongPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StrongPointer.h; sourceTree = ""; }; + B3C8A4C32877D0BA0037A946 /* String16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = String16.h; sourceTree = ""; }; + B3C8A4C42877D0BA0037A946 /* Looper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Looper.h; sourceTree = ""; }; + B3C8A4C52877D0BA0037A946 /* SystemClock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SystemClock.h; sourceTree = ""; }; + B3C8A4C62877D0BA0037A946 /* RWLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RWLock.h; sourceTree = ""; }; + B3C8A4C72877D0BA0037A946 /* Errors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Errors.h; sourceTree = ""; }; + B3C8A4C82877D0BA0037A946 /* threads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = threads.h; sourceTree = ""; }; + B3C8A4C92877D0BA0037A946 /* Tokenizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Tokenizer.h; sourceTree = ""; }; + B3C8A4CA2877D0BA0037A946 /* TypeHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TypeHelpers.h; sourceTree = ""; }; + B3C8A4CB2877D0BA0037A946 /* ProcessCallStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProcessCallStack.h; sourceTree = ""; }; + B3C8A4CC2877D0BA0037A946 /* Functor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Functor.h; sourceTree = ""; }; + B3C8A4CD2877D0BA0037A946 /* Unicode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Unicode.h; sourceTree = ""; }; + B3C8A4CE2877D0BA0037A946 /* List.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = List.h; sourceTree = ""; }; + B3C8A4CF2877D0BA0037A946 /* Thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Thread.h; sourceTree = ""; }; + B3C8A4D02877D0BA0037A946 /* Trace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Trace.h; sourceTree = ""; }; + B3C8A4D12877D0BA0037A946 /* BlobCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BlobCache.h; sourceTree = ""; }; + B3C8A4D22877D0BA0037A946 /* Log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Log.h; sourceTree = ""; }; + B3C8A4D32877D0BA0037A946 /* FileMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FileMap.h; sourceTree = ""; }; + B3C8A4D42877D0BA0037A946 /* StopWatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StopWatch.h; sourceTree = ""; }; + B3C8A4D52877D0BA0037A946 /* KeyedVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyedVector.h; sourceTree = ""; }; + B3C8A4D62877D0BA0037A946 /* Compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compat.h; sourceTree = ""; }; + B3C8A4D72877D0BA0037A946 /* Mutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Mutex.h; sourceTree = ""; }; + B3C8A4D82877D0BA0037A946 /* String8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = String8.h; sourceTree = ""; }; + B3C8A4D92877D0BA0037A946 /* Vector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Vector.h; sourceTree = ""; }; + B3C8A4DA2877D0BA0037A946 /* RefBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RefBase.h; sourceTree = ""; }; + B3C8A4DB2877D0BA0037A946 /* LinearTransform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LinearTransform.h; sourceTree = ""; }; + B3C8A4DC2877D0BA0037A946 /* JenkinsHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JenkinsHash.h; sourceTree = ""; }; + B3C8A4DD2877D0BA0037A946 /* Atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Atomic.h; sourceTree = ""; }; + B3C8A4DF2877D0BA0037A946 /* thread_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = thread_defs.h; sourceTree = ""; }; + B3C8A4E02877D0BA0037A946 /* camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera.h; sourceTree = ""; }; + B3C8A4E12877D0BA0037A946 /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = ""; }; + B3C8A4E22877D0BA0037A946 /* radio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = radio.h; sourceTree = ""; }; + B3C8A4E32877D0BA0037A946 /* graphics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graphics.h; sourceTree = ""; }; + B3C8A4E52877D0BA0037A946 /* hardware_buffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hardware_buffer.h; sourceTree = ""; }; + B3C8A4E72877D0BA0037A946 /* event_tag_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = event_tag_map.h; sourceTree = ""; }; + B3C8A4E82877D0BA0037A946 /* log_read.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = log_read.h; sourceTree = ""; }; + B3C8A4E92877D0BA0037A946 /* uio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uio.h; sourceTree = ""; }; + B3C8A4EA2877D0BA0037A946 /* logd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logd.h; sourceTree = ""; }; + B3C8A4EB2877D0BA0037A946 /* log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + B3C8A4EC2877D0BA0037A946 /* logprint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logprint.h; sourceTree = ""; }; + B3C8A4ED2877D0BA0037A946 /* logger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logger.h; sourceTree = ""; }; + B3C8A4F02877D0BA0037A946 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3C8A4F12877D0BA0037A946 /* mman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mman.c; sourceTree = ""; }; + B3C8A4F42877D0BA0037A946 /* plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugin.h; sourceTree = ""; }; + B3C8A4F52877D0BA0037A946 /* emulate_game_controller_via_input_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emulate_game_controller_via_input_plugin.h; sourceTree = ""; }; + B3C8A4F72877D0BA0037A946 /* audio_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_plugin.h; sourceTree = ""; }; + B3C8A4F82877D0BA0037A946 /* audio_backend_libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_backend_libretro.c; sourceTree = ""; }; + B3C8A4F92877D0BA0037A946 /* emulate_game_controller_via_libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emulate_game_controller_via_libretro.c; sourceTree = ""; }; + B3C8A4FB2877D0BA0037A946 /* msvc_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc_compat.h; sourceTree = ""; }; + B3C8A4FC2877D0BA0037A946 /* vidext_libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vidext_libretro.c; sourceTree = ""; }; + B3C8A4FD2877D0BA0037A946 /* config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = ""; }; + B3C8A4FF2877D0BA0037A946 /* mupen64plus.ini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mupen64plus.ini.h; sourceTree = ""; }; + B3C8A5022877D0BA0037A946 /* install_binary_bundle.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install_binary_bundle.sh; sourceTree = ""; }; + B3C8A5032877D0BA0037A946 /* joymodel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = joymodel.c; sourceTree = ""; }; + B3C8A5042877D0BA0037A946 /* gen_asm_defines.awk */ = {isa = PBXFileReference; lastKnownFileType = text; path = gen_asm_defines.awk; sourceTree = ""; }; + B3C8A5052877D0BA0037A946 /* savestate_convert.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = savestate_convert.txt; sourceTree = ""; }; + B3C8A5062877D0BA0037A946 /* joymodel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = joymodel.png; sourceTree = ""; }; + B3C8A5072877D0BA0037A946 /* osx_build_bundle.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = osx_build_bundle.sh; sourceTree = ""; }; + B3C8A5082877D0BA0037A946 /* build_bundle_bin.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_bundle_bin.sh; sourceTree = ""; }; + B3C8A5092877D0BA0037A946 /* profiling.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = profiling.txt; sourceTree = ""; }; + B3C8A50A2877D0BA0037A946 /* osx_build_instructions.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = osx_build_instructions.txt; sourceTree = ""; }; + B3C8A50C2877D0BA0037A946 /* regression-video.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "regression-video.py"; sourceTree = ""; }; + B3C8A50D2877D0BA0037A946 /* daily-tests.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = "daily-tests.cfg"; sourceTree = ""; }; + B3C8A50E2877D0BA0037A946 /* gen_asm_script.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = gen_asm_script.sh; sourceTree = ""; }; + B3C8A50F2877D0BA0037A946 /* savestate_convert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = savestate_convert.c; sourceTree = ""; }; + B3C8A5102877D0BA0037A946 /* r4300prof.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = r4300prof.c; sourceTree = ""; }; + B3C8A5112877D0BA0037A946 /* build_bundle_src.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_bundle_src.sh; sourceTree = ""; }; + B3C8A5122877D0BA0037A946 /* m64p_helper_scripts.tar.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = m64p_helper_scripts.tar.gz; sourceTree = ""; }; + B3C8A5132877D0BA0037A946 /* build_modules_src.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_modules_src.sh; sourceTree = ""; }; + B3C8A5142877D0BA0037A946 /* cheat_code_convert.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = cheat_code_convert.py; sourceTree = ""; }; + B3C8A5152877D0BA0037A946 /* uninstall_binary_bundle.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = uninstall_binary_bundle.sh; sourceTree = ""; }; + B3C8A5162877D0BA0037A946 /* gen_sdl_key_converter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gen_sdl_key_converter.c; sourceTree = ""; }; + B3C8A5172877D0BA0037A946 /* gen_asm_script.cmd */ = {isa = PBXFileReference; lastKnownFileType = text; path = gen_asm_script.cmd; sourceTree = ""; }; + B3C8A5182877D0BA0037A946 /* INSTALL */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL; sourceTree = ""; }; + B3C8A5192877D0BA0037A946 /* LICENSES */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSES; sourceTree = ""; }; + B3C8A51C2877D0BA0037A946 /* mupen64plus-core.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "mupen64plus-core.vcxproj.filters"; sourceTree = ""; }; + B3C8A51D2877D0BA0037A946 /* mupen64plus-core.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "mupen64plus-core.vcxproj"; sourceTree = ""; }; + B3C8A51F2877D0BA0037A946 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3C8A5202877D0BA0037A946 /* RELEASE */ = {isa = PBXFileReference; lastKnownFileType = text; path = RELEASE; sourceTree = ""; }; + B3C8A5212877D0BA0037A946 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3C8A5222877D0BA0037A946 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3C8A5232877D0BA0037A946 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B3C8A5242877D0BA0037A946 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3C8A5252877D0BA0037A946 /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B3C8A5262877D0BA0037A946 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3C8A5282877D0BA0037A946 /* new_dynarec.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = new_dynarec.mediawiki; sourceTree = ""; }; + B3C8A52A2877D0BA0037A946 /* Mupen64Plus-v2.0-Netplay-API.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Netplay-API.mediawiki"; sourceTree = ""; }; + B3C8A52B2877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Video-Extension.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Core-Video-Extension.mediawiki"; sourceTree = ""; }; + B3C8A52C2877D0BA0037A946 /* Mupen64Plus-v2.0-API-Versioning.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-API-Versioning.mediawiki"; sourceTree = ""; }; + B3C8A52D2877D0BA0037A946 /* Mupen64Plus-v2.0-Core-API-v1.0.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Core-API-v1.0.mediawiki"; sourceTree = ""; }; + B3C8A52E2877D0BA0037A946 /* Mupen64Plus-Core-Parameters.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-Core-Parameters.mediawiki"; sourceTree = ""; }; + B3C8A52F2877D0BA0037A946 /* Mupen64Plus-v2.0-Plugin-API.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Plugin-API.mediawiki"; sourceTree = ""; }; + B3C8A5302877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Basic.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Core-Basic.mediawiki"; sourceTree = ""; }; + B3C8A5312877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Config.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Core-Config.mediawiki"; sourceTree = ""; }; + B3C8A5322877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Front-End.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Core-Front-End.mediawiki"; sourceTree = ""; }; + B3C8A5332877D0BA0037A946 /* Mupen64Plus-Plugin-Parameters.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-Plugin-Parameters.mediawiki"; sourceTree = ""; }; + B3C8A5342877D0BA0037A946 /* Mupen64Plus-v2.0-headers.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-headers.mediawiki"; sourceTree = ""; }; + B3C8A5352877D0BA0037A946 /* Mupen64Plus-v2.0-Design-Proposal-3.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Design-Proposal-3.mediawiki"; sourceTree = ""; }; + B3C8A5362877D0BA0037A946 /* Home.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = Home.mediawiki; sourceTree = ""; }; + B3C8A5372877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Debugger.mediawiki */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Mupen64Plus-v2.0-Core-Debugger.mediawiki"; sourceTree = ""; }; + B3C8A5382877D0BA0037A946 /* gpl-license */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gpl-license"; sourceTree = ""; }; + B3C8A5392877D0BA0037A946 /* font-license */ = {isa = PBXFileReference; lastKnownFileType = text; path = "font-license"; sourceTree = ""; }; + B3C8A53A2877D0BA0037A946 /* lgpl-license */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lgpl-license"; sourceTree = ""; }; + B3C8A53D2877D0BA0037A946 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3C8A53E2877D0BA0037A946 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B3C8A5402877D0BA0037A946 /* OGLFT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OGLFT.h; sourceTree = ""; }; + B3C8A5412877D0BA0037A946 /* OGLFT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OGLFT.cpp; sourceTree = ""; }; + B3C8A5432877D0BA0037A946 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B3C8A5442877D0BA0037A946 /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B3C8A5452877D0BA0037A946 /* ioapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + B3C8A5462877D0BA0037A946 /* crypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + B3C8A5472877D0BA0037A946 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B3C8A5482877D0BA0037A946 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B3C8A5492877D0BA0037A946 /* ioapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + B3C8A54B2877D0BA0037A946 /* xxhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; + B3C8A54D2877D0BA0037A946 /* mupencheat.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = mupencheat.txt; sourceTree = ""; }; + B3C8A54E2877D0BA0037A946 /* font.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = font.ttf; sourceTree = ""; }; + B3C8A54F2877D0BA0037A946 /* mupen64plus.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = mupen64plus.ini; sourceTree = ""; }; + B3C8A5502877D0BA0037A946 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3C8A5512877D0BA0037A946 /* CREDITS */ = {isa = PBXFileReference; lastKnownFileType = text; path = CREDITS; sourceTree = ""; }; + B3C8A5542877D0BA0037A946 /* osd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osd.c; sourceTree = ""; }; + B3C8A5552877D0BA0037A946 /* oglft_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = oglft_c.h; sourceTree = ""; }; + B3C8A5562877D0BA0037A946 /* oglft_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = oglft_c.cpp; sourceTree = ""; }; + B3C8A5572877D0BA0037A946 /* osd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; + B3C8A5592877D0BA0037A946 /* clock_ctime_plus_delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = clock_ctime_plus_delta.c; sourceTree = ""; }; + B3C8A55B2877D0BA0037A946 /* audio_plugin_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_plugin_compat.c; sourceTree = ""; }; + B3C8A55C2877D0BA0037A946 /* plugins_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugins_compat.h; sourceTree = ""; }; + B3C8A55D2877D0BA0037A946 /* input_plugin_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_plugin_compat.c; sourceTree = ""; }; + B3C8A55E2877D0BA0037A946 /* file_storage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_storage.h; sourceTree = ""; }; + B3C8A55F2877D0BA0037A946 /* clock_ctime_plus_delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clock_ctime_plus_delta.h; sourceTree = ""; }; + B3C8A5612877D0BA0037A946 /* video_capture_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_capture_backend.h; sourceTree = ""; }; + B3C8A5622877D0BA0037A946 /* rumble_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rumble_backend.h; sourceTree = ""; }; + B3C8A5632877D0BA0037A946 /* storage_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = storage_backend.h; sourceTree = ""; }; + B3C8A5642877D0BA0037A946 /* audio_out_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_out_backend.h; sourceTree = ""; }; + B3C8A5652877D0BA0037A946 /* clock_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clock_backend.h; sourceTree = ""; }; + B3C8A5662877D0BA0037A946 /* video_capture_backend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_capture_backend.c; sourceTree = ""; }; + B3C8A5672877D0BA0037A946 /* joybus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joybus.h; sourceTree = ""; }; + B3C8A5682877D0BA0037A946 /* controller_input_backend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = controller_input_backend.h; sourceTree = ""; }; + B3C8A5692877D0BA0037A946 /* dummy_video_capture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dummy_video_capture.c; sourceTree = ""; }; + B3C8A56A2877D0BA0037A946 /* file_storage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_storage.c; sourceTree = ""; }; + B3C8A56B2877D0BA0037A946 /* opencv_video_capture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opencv_video_capture.cpp; sourceTree = ""; }; + B3C8A56D2877D0BA0037A946 /* dynamiclib_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dynamiclib_win32.c; sourceTree = ""; }; + B3C8A56E2877D0BA0037A946 /* dynamiclib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dynamiclib.h; sourceTree = ""; }; + B3C8A56F2877D0BA0037A946 /* files_macos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = files_macos.c; sourceTree = ""; }; + B3C8A5702877D0BA0037A946 /* files_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = files_win32.c; sourceTree = ""; }; + B3C8A5712877D0BA0037A946 /* preproc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = preproc.h; sourceTree = ""; }; + B3C8A5722877D0BA0037A946 /* dynamiclib_unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dynamiclib_unix.c; sourceTree = ""; }; + B3C8A5732877D0BA0037A946 /* files.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = files.h; sourceTree = ""; }; + B3C8A5742877D0BA0037A946 /* files_unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = files_unix.c; sourceTree = ""; }; + B3C8A5762877D0BA0037A946 /* asm_defines.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = asm_defines.c; sourceTree = ""; }; + B3C8A5782877D0BA0037A946 /* dummy_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dummy_audio.c; sourceTree = ""; }; + B3C8A5792877D0BA0037A946 /* plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugin.h; sourceTree = ""; }; + B3C8A57A2877D0BA0037A946 /* dummy_rsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dummy_rsp.h; sourceTree = ""; }; + B3C8A57B2877D0BA0037A946 /* dummy_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dummy_video.h; sourceTree = ""; }; + B3C8A57C2877D0BA0037A946 /* dummy_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dummy_input.c; sourceTree = ""; }; + B3C8A57D2877D0BA0037A946 /* dummy_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dummy_audio.h; sourceTree = ""; }; + B3C8A57E2877D0BA0037A946 /* plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plugin.c; sourceTree = ""; }; + B3C8A57F2877D0BA0037A946 /* dummy_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dummy_video.c; sourceTree = ""; }; + B3C8A5802877D0BA0037A946 /* dummy_rsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dummy_rsp.c; sourceTree = ""; }; + B3C8A5812877D0BA0037A946 /* dummy_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dummy_input.h; sourceTree = ""; }; + B3C8A5832877D0BA0037A946 /* dbg_decoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dbg_decoder.c; sourceTree = ""; }; + B3C8A5842877D0BA0037A946 /* dbg_debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbg_debugger.h; sourceTree = ""; }; + B3C8A5852877D0BA0037A946 /* dbg_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbg_memory.h; sourceTree = ""; }; + B3C8A5862877D0BA0037A946 /* dbg_breakpoints.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dbg_breakpoints.c; sourceTree = ""; }; + B3C8A5872877D0BA0037A946 /* dbg_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbg_decoder.h; sourceTree = ""; }; + B3C8A5882877D0BA0037A946 /* dbg_memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dbg_memory.c; sourceTree = ""; }; + B3C8A5892877D0BA0037A946 /* dbg_debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dbg_debugger.c; sourceTree = ""; }; + B3C8A58A2877D0BA0037A946 /* dbg_decoder_local.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbg_decoder_local.h; sourceTree = ""; }; + B3C8A58B2877D0BA0037A946 /* dbg_breakpoints.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbg_breakpoints.h; sourceTree = ""; }; + B3C8A58D2877D0BA0037A946 /* vidext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vidext.c; sourceTree = ""; }; + B3C8A58E2877D0BA0037A946 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = common.c; sourceTree = ""; }; + B3C8A58F2877D0BA0037A946 /* frontend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = frontend.c; sourceTree = ""; }; + B3C8A5902877D0BA0037A946 /* m64p_frontend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_frontend.h; sourceTree = ""; }; + B3C8A5912877D0BA0037A946 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3C8A5922877D0BA0037A946 /* api_export.ver */ = {isa = PBXFileReference; lastKnownFileType = text; path = api_export.ver; sourceTree = ""; }; + B3C8A5932877D0BA0037A946 /* m64p_vidext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_vidext.h; sourceTree = ""; }; + B3C8A5942877D0BA0037A946 /* m64p_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_common.h; sourceTree = ""; }; + B3C8A5952877D0BA0037A946 /* callbacks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = callbacks.h; sourceTree = ""; }; + B3C8A5962877D0BA0037A946 /* debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugger.c; sourceTree = ""; }; + B3C8A5972877D0BA0037A946 /* m64p_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_types.h; sourceTree = ""; }; + B3C8A5982877D0BA0037A946 /* m64p_debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_debugger.h; sourceTree = ""; }; + B3C8A5992877D0BA0037A946 /* vidext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vidext.h; sourceTree = ""; }; + B3C8A59A2877D0BA0037A946 /* config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = ""; }; + B3C8A59B2877D0BA0037A946 /* vidext_sdl2_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vidext_sdl2_compat.h; sourceTree = ""; }; + B3C8A59C2877D0BA0037A946 /* debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; + B3C8A59D2877D0BA0037A946 /* callbacks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = callbacks.c; sourceTree = ""; }; + B3C8A59E2877D0BA0037A946 /* m64p_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_config.h; sourceTree = ""; }; + B3C8A59F2877D0BA0037A946 /* m64p_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64p_plugin.h; sourceTree = ""; }; + B3C8A5A32877D0BA0037A946 /* vi_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vi_controller.h; sourceTree = ""; }; + B3C8A5A42877D0BA0037A946 /* vi_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vi_controller.c; sourceTree = ""; }; + B3C8A5A62877D0BA0037A946 /* mi_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mi_controller.h; sourceTree = ""; }; + B3C8A5A72877D0BA0037A946 /* mi_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mi_controller.c; sourceTree = ""; }; + B3C8A5A92877D0BA0037A946 /* fb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fb.c; sourceTree = ""; }; + B3C8A5AA2877D0BA0037A946 /* rdp_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rdp_core.h; sourceTree = ""; }; + B3C8A5AB2877D0BA0037A946 /* fb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fb.h; sourceTree = ""; }; + B3C8A5AC2877D0BA0037A946 /* rdp_core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rdp_core.c; sourceTree = ""; }; + B3C8A5AE2877D0BA0037A946 /* ri_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ri_controller.h; sourceTree = ""; }; + B3C8A5AF2877D0BA0037A946 /* ri_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ri_controller.c; sourceTree = ""; }; + B3C8A5B12877D0BA0037A946 /* pi_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pi_controller.c; sourceTree = ""; }; + B3C8A5B22877D0BA0037A946 /* pi_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pi_controller.h; sourceTree = ""; }; + B3C8A5B42877D0BA0037A946 /* si_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = si_controller.c; sourceTree = ""; }; + B3C8A5B52877D0BA0037A946 /* si_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = si_controller.h; sourceTree = ""; }; + B3C8A5B72877D0BA0037A946 /* ai_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ai_controller.c; sourceTree = ""; }; + B3C8A5B82877D0BA0037A946 /* ai_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ai_controller.h; sourceTree = ""; }; + B3C8A5BA2877D0BA0037A946 /* rsp_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsp_core.h; sourceTree = ""; }; + B3C8A5BB2877D0BA0037A946 /* rsp_core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rsp_core.c; sourceTree = ""; }; + B3C8A5BD2877D0BA0037A946 /* cic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cic.c; sourceTree = ""; }; + B3C8A5BE2877D0BA0037A946 /* n64_cic_nus_6105.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = n64_cic_nus_6105.h; sourceTree = ""; }; + B3C8A5BF2877D0BA0037A946 /* pif.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pif.h; sourceTree = ""; }; + B3C8A5C02877D0BA0037A946 /* bootrom_hle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bootrom_hle.h; sourceTree = ""; }; + B3C8A5C12877D0BA0037A946 /* cic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cic.h; sourceTree = ""; }; + B3C8A5C22877D0BA0037A946 /* n64_cic_nus_6105.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = n64_cic_nus_6105.c; sourceTree = ""; }; + B3C8A5C32877D0BA0037A946 /* pif.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pif.c; sourceTree = ""; }; + B3C8A5C42877D0BA0037A946 /* bootrom_hle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bootrom_hle.c; sourceTree = ""; }; + B3C8A5C52877D0BA0037A946 /* device.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = device.h; sourceTree = ""; }; + B3C8A5C72877D0BA0037A946 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3C8A5C82877D0BA0037A946 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B3C8A5CA2877D0BA0037A946 /* rdram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rdram.h; sourceTree = ""; }; + B3C8A5CB2877D0BA0037A946 /* rdram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rdram.c; sourceTree = ""; }; + B3C8A5CD2877D0BA0037A946 /* cached_interp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cached_interp.c; sourceTree = ""; }; + B3C8A5CE2877D0BA0037A946 /* pure_interp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pure_interp.c; sourceTree = ""; }; + B3C8A5CF2877D0BA0037A946 /* recomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recomp.h; sourceTree = ""; }; + B3C8A5D02877D0BA0037A946 /* interrupt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interrupt.c; sourceTree = ""; }; + B3C8A5D12877D0BA0037A946 /* cp1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cp1.h; sourceTree = ""; }; + B3C8A5D22877D0BA0037A946 /* r4300_core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = r4300_core.c; sourceTree = ""; }; + B3C8A5D32877D0BA0037A946 /* tlb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tlb.h; sourceTree = ""; }; + B3C8A5D42877D0BA0037A946 /* mips_instructions.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = mips_instructions.def; sourceTree = ""; }; + B3C8A5D52877D0BA0037A946 /* cp0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cp0.c; sourceTree = ""; }; + B3C8A5D62877D0BA0037A946 /* recomp_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recomp_types.h; sourceTree = ""; }; + B3C8A5D72877D0BA0037A946 /* idec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = idec.h; sourceTree = ""; }; + B3C8A5D82877D0BA0037A946 /* instr_counters.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = instr_counters.c; sourceTree = ""; }; + B3C8A5D92877D0BA0037A946 /* recomp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = recomp.c; sourceTree = ""; }; + B3C8A5DA2877D0BA0037A946 /* opcodes.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = opcodes.md; sourceTree = ""; }; + B3C8A5DB2877D0BA0037A946 /* pure_interp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pure_interp.h; sourceTree = ""; }; + B3C8A5DC2877D0BA0037A946 /* fpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fpu.h; sourceTree = ""; }; + B3C8A5DD2877D0BA0037A946 /* cached_interp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cached_interp.h; sourceTree = ""; }; + B3C8A5DE2877D0BA0037A946 /* r4300_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = r4300_core.h; sourceTree = ""; }; + B3C8A5E02877D0BA0037A946 /* assemble.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assemble.h; sourceTree = ""; }; + B3C8A5E12877D0BA0037A946 /* regcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; + B3C8A5E22877D0BA0037A946 /* dyna_start.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = dyna_start.asm; sourceTree = ""; }; + B3C8A5E32877D0BA0037A946 /* assemble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assemble.c; sourceTree = ""; }; + B3C8A5E42877D0BA0037A946 /* assemble_struct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assemble_struct.h; sourceTree = ""; }; + B3C8A5E52877D0BA0037A946 /* dynarec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dynarec.c; sourceTree = ""; }; + B3C8A5E62877D0BA0037A946 /* regcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = regcache.c; sourceTree = ""; }; + B3C8A5E72877D0BA0037A946 /* interpret.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interpret.h; sourceTree = ""; }; + B3C8A5E92877D0BA0037A946 /* new_dynarec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = new_dynarec.h; sourceTree = ""; }; + B3C8A5EB2877D0BA0037A946 /* asm_defines_nasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_nasm.h; sourceTree = ""; }; + B3C8A5EC2877D0BA0037A946 /* asm_defines_gas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_gas.h; sourceTree = ""; }; + B3C8A5ED2877D0BA0037A946 /* linkage_x64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = linkage_x64.asm; sourceTree = ""; }; + B3C8A5EE2877D0BA0037A946 /* assem_x64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_x64.h; sourceTree = ""; }; + B3C8A5EF2877D0BA0037A946 /* assem_x64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_x64.c; sourceTree = ""; }; + B3C8A5F02877D0BA0037A946 /* new_dynarec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = new_dynarec.c; sourceTree = ""; }; + B3C8A5F22877D0BA0037A946 /* assem_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_x86.c; sourceTree = ""; }; + B3C8A5F32877D0BA0037A946 /* asm_defines_nasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_nasm.h; sourceTree = ""; }; + B3C8A5F42877D0BA0037A946 /* asm_defines_gas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_gas.h; sourceTree = ""; }; + B3C8A5F52877D0BA0037A946 /* linkage_x86.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = linkage_x86.asm; sourceTree = ""; }; + B3C8A5F62877D0BA0037A946 /* assem_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_x86.h; sourceTree = ""; }; + B3C8A5F72877D0BA0037A946 /* recomp_dbg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = recomp_dbg.c; sourceTree = ""; }; + B3C8A5F92877D0BA0037A946 /* assem_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_arm.c; sourceTree = ""; }; + B3C8A5FA2877D0BA0037A946 /* asm_defines_nasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_nasm.h; sourceTree = ""; }; + B3C8A5FB2877D0BA0037A946 /* asm_defines_gas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_gas.h; sourceTree = ""; }; + B3C8A5FC2877D0BA0037A946 /* arm_cpu_features.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_cpu_features.h; sourceTree = ""; }; + B3C8A5FD2877D0BA0037A946 /* assem_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_arm.h; sourceTree = ""; }; + B3C8A5FE2877D0BA0037A946 /* linkage_arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_arm.S; sourceTree = ""; }; + B3C8A5FF2877D0BA0037A946 /* arm_cpu_features.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = arm_cpu_features.c; sourceTree = ""; }; + B3C8A6012877D0BA0037A946 /* assem_arm64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_arm64.h; sourceTree = ""; }; + B3C8A6022877D0BA0037A946 /* asm_defines_nasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_nasm.h; sourceTree = ""; }; + B3C8A6032877D0BA0037A946 /* linkage_arm64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_arm64.S; sourceTree = ""; }; + B3C8A6042877D0BA0037A946 /* asm_defines_gas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = asm_defines_gas.h; sourceTree = ""; }; + B3C8A6052877D0BA0037A946 /* assem_arm64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_arm64.c; sourceTree = ""; }; + B3C8A6062877D0BA0037A946 /* cp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cp1.c; sourceTree = ""; }; + B3C8A6072877D0BA0037A946 /* interrupt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interrupt.h; sourceTree = ""; }; + B3C8A6082877D0BA0037A946 /* tlb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tlb.c; sourceTree = ""; }; + B3C8A6092877D0BA0037A946 /* idec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idec.c; sourceTree = ""; }; + B3C8A60A2877D0BA0037A946 /* instr_counters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = instr_counters.h; sourceTree = ""; }; + B3C8A60B2877D0BA0037A946 /* cp0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cp0.h; sourceTree = ""; }; + B3C8A60D2877D0BA0037A946 /* assemble.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assemble.h; sourceTree = ""; }; + B3C8A60E2877D0BA0037A946 /* regcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; + B3C8A60F2877D0BA0037A946 /* dyna_start.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = dyna_start.asm; sourceTree = ""; }; + B3C8A6102877D0BA0037A946 /* assemble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assemble.c; sourceTree = ""; }; + B3C8A6112877D0BA0037A946 /* assemble_struct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assemble_struct.h; sourceTree = ""; }; + B3C8A6122877D0BA0037A946 /* dynarec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dynarec.c; sourceTree = ""; }; + B3C8A6132877D0BA0037A946 /* regcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = regcache.c; sourceTree = ""; }; + B3C8A6142877D0BA0037A946 /* interpret.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interpret.h; sourceTree = ""; }; + B3C8A6162877D0BA0037A946 /* mbc3_rtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mbc3_rtc.h; sourceTree = ""; }; + B3C8A6172877D0BA0037A946 /* gb_cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gb_cart.h; sourceTree = ""; }; + B3C8A6182877D0BA0037A946 /* m64282fp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m64282fp.c; sourceTree = ""; }; + B3C8A6192877D0BA0037A946 /* m64282fp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m64282fp.h; sourceTree = ""; }; + B3C8A61A2877D0BA0037A946 /* gb_cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gb_cart.c; sourceTree = ""; }; + B3C8A61B2877D0BA0037A946 /* mbc3_rtc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mbc3_rtc.c; sourceTree = ""; }; + B3C8A61D2877D0BA0037A946 /* dd_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dd_controller.h; sourceTree = ""; }; + B3C8A61E2877D0BA0037A946 /* disk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disk.h; sourceTree = ""; }; + B3C8A61F2877D0BA0037A946 /* dd_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dd_controller.c; sourceTree = ""; }; + B3C8A6202877D0BA0037A946 /* disk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disk.c; sourceTree = ""; }; + B3C8A6222877D0BA0037A946 /* sram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sram.c; sourceTree = ""; }; + B3C8A6232877D0BA0037A946 /* cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cart.c; sourceTree = ""; }; + B3C8A6242877D0BA0037A946 /* eeprom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eeprom.h; sourceTree = ""; }; + B3C8A6252877D0BA0037A946 /* is_viewer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = is_viewer.c; sourceTree = ""; }; + B3C8A6262877D0BA0037A946 /* cart_rom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cart_rom.c; sourceTree = ""; }; + B3C8A6272877D0BA0037A946 /* af_rtc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = af_rtc.c; sourceTree = ""; }; + B3C8A6282877D0BA0037A946 /* flashram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flashram.h; sourceTree = ""; }; + B3C8A6292877D0BA0037A946 /* is_viewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = is_viewer.h; sourceTree = ""; }; + B3C8A62A2877D0BA0037A946 /* eeprom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eeprom.c; sourceTree = ""; }; + B3C8A62B2877D0BA0037A946 /* cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cart.h; sourceTree = ""; }; + B3C8A62C2877D0BA0037A946 /* sram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sram.h; sourceTree = ""; }; + B3C8A62D2877D0BA0037A946 /* cart_rom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cart_rom.h; sourceTree = ""; }; + B3C8A62E2877D0BA0037A946 /* af_rtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = af_rtc.h; sourceTree = ""; }; + B3C8A62F2877D0BA0037A946 /* flashram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = flashram.c; sourceTree = ""; }; + B3C8A6302877D0BA0037A946 /* device.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = device.c; sourceTree = ""; }; + B3C8A6332877D0BA0037A946 /* mempak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mempak.h; sourceTree = ""; }; + B3C8A6342877D0BA0037A946 /* biopak.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = biopak.c; sourceTree = ""; }; + B3C8A6352877D0BA0037A946 /* transferpak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = transferpak.h; sourceTree = ""; }; + B3C8A6362877D0BA0037A946 /* rumblepak.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rumblepak.c; sourceTree = ""; }; + B3C8A6372877D0BA0037A946 /* transferpak.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = transferpak.c; sourceTree = ""; }; + B3C8A6382877D0BA0037A946 /* biopak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = biopak.h; sourceTree = ""; }; + B3C8A6392877D0BA0037A946 /* mempak.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mempak.c; sourceTree = ""; }; + B3C8A63A2877D0BA0037A946 /* rumblepak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rumblepak.h; sourceTree = ""; }; + B3C8A63B2877D0BA0037A946 /* game_controller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game_controller.h; sourceTree = ""; }; + B3C8A63C2877D0BA0037A946 /* game_controller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = game_controller.c; sourceTree = ""; }; + B3C8A63E2877D0BA0037A946 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B3C8A63F2877D0BA0037A946 /* cheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheat.h; sourceTree = ""; }; + B3C8A6402877D0BA0037A946 /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; + B3C8A6412877D0BA0037A946 /* profile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profile.h; sourceTree = ""; }; + B3C8A6422877D0BA0037A946 /* netplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netplay.c; sourceTree = ""; }; + B3C8A6432877D0BA0037A946 /* util.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = util.c; sourceTree = ""; }; + B3C8A6442877D0BA0037A946 /* screenshot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = screenshot.h; sourceTree = ""; }; + B3C8A6452877D0BA0037A946 /* savestates.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = savestates.c; sourceTree = ""; }; + B3C8A6462877D0BA0037A946 /* lirc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lirc.h; sourceTree = ""; }; + B3C8A6472877D0BA0037A946 /* rom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rom.h; sourceTree = ""; }; + B3C8A6482877D0BA0037A946 /* workqueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = workqueue.h; sourceTree = ""; }; + B3C8A6492877D0BA0037A946 /* eventloop.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eventloop.c; sourceTree = ""; }; + B3C8A64A2877D0BA0037A946 /* sdl_key_converter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdl_key_converter.h; sourceTree = ""; }; + B3C8A64B2877D0BA0037A946 /* list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = ""; }; + B3C8A64C2877D0BB0037A946 /* cheat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cheat.c; sourceTree = ""; }; + B3C8A64D2877D0BB0037A946 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3C8A64E2877D0BB0037A946 /* screenshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = screenshot.c; sourceTree = ""; }; + B3C8A64F2877D0BB0037A946 /* savestates.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = savestates.h; sourceTree = ""; }; + B3C8A6502877D0BB0037A946 /* util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; + B3C8A6512877D0BB0037A946 /* netplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netplay.h; sourceTree = ""; }; + B3C8A6522877D0BB0037A946 /* profile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profile.c; sourceTree = ""; }; + B3C8A6532877D0BB0037A946 /* rom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rom.c; sourceTree = ""; }; + B3C8A6542877D0BB0037A946 /* workqueue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = workqueue.c; sourceTree = ""; }; + B3C8A6552877D0BB0037A946 /* lirc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lirc.c; sourceTree = ""; }; + B3C8A6562877D0BB0037A946 /* sdl_key_converter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl_key_converter.c; sourceTree = ""; }; + B3C8A6572877D0BB0037A946 /* eventloop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eventloop.h; sourceTree = ""; }; + B3EA447B206E10C700E608F6 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3F2058226FBCBC600A4196B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; + D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B3303E491DED23C600896D96 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B37EFF341C72F43300857158 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3274E8B2106C19600857F52 /* PVSupport.framework in Frameworks */, + B39E129A28925CB000016387 /* PVLibRetro.framework in Frameworks */, + B324C62B21920BC2009F4EDC /* libz.tbd in Frameworks */, + B3AE1DD420731F2700AD06D4 /* libdl.tbd in Frameworks */, + B33809562877C5FE0009C732 /* libmupen64plus-nx.a in Frameworks */, + B3962AED26FBD8A500FAEFC0 /* OpenGL.framework in Frameworks */, + B33809532877C5FE0009C732 /* libmupen64plus-nx-retro.a in Frameworks */, + B324C63121920BDB009F4EDC /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3800FF2208522DC00FA03B8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3AF703421916E60000FA7F9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B32299382878AF8800585AD8 /* libc++.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3AF704C21916E87000FA7F9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3B3B8FA1DED130B00602746 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3AF705821916ED0000FA7F9 /* PVSupport.framework in Frameworks */, + B338095C2877C6090009C732 /* libmupen64plus-nx.a in Frameworks */, + B37263B526EA164900E95488 /* libz.tbd in Frameworks */, + B33809592877C6090009C732 /* libmupen64plus-nx-retro.a in Frameworks */, + B324C63021920BDA009F4EDC /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* Mupen64Plus */ = { + isa = PBXGroup; + children = ( + B3C89C852877D0B60037A946 /* mupen64plus-libretro-nx */, + B338091E2877C5530009C732 /* PVMupen64Plus-NX */, + B33809222877C5530009C732 /* PVMupen64Plus-NXCore */, + B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */, + 32C88E010371C26100C91783 /* Other Sources */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, + 19C28FB8FE9D52D311CA2CBB /* Products */, + B3B3B8551DECE9D800602746 /* Frameworks */, + ); + name = Mupen64Plus; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */, + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */, + ); + name = "Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D5B49B7048680CD000E48DA /* Info.plist */, + 089C167DFE841241C02AAC07 /* InfoPlist.strings */, + B39E8CB52053B53100380DCD /* Core.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 3DC2145B166C6D7F0014251E /* png */, + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, + 3D208E971182550400BEAA42 /* OpenGL.framework */, + 3D208E9D1182551500BEAA42 /* libz.dylib */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 089C167FFE841241C02AAC07 /* AppKit.framework */, + D2F7E65807B2D6F200F64583 /* CoreData.framework */, + 089C1672FE841209C02AAC07 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FB8FE9D52D311CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + B37EFF381C72F43300857158 /* PVMupen64Plus-NX.framework */, + B3B3B9081DED130B00602746 /* PVMupen64Plus-NX.framework */, + B3303E4C1DED23C600896D96 /* libmupen64plus-nx-retro.a */, + B3800FF5208522DC00FA03B8 /* libmupen64plus-nx.a */, + B3AF703921916E60000FA7F9 /* libmupen64plus-nx-retro.a */, + B3AF705221916E87000FA7F9 /* libmupen64plus-nx.a */, + ); + name = Products; + sourceTree = ""; + }; + 32C88E010371C26100C91783 /* Other Sources */ = { + isa = PBXGroup; + children = ( + ); + name = "Other Sources"; + sourceTree = ""; + }; + 3DC2145B166C6D7F0014251E /* png */ = { + isa = PBXGroup; + children = ( + 3DC2145D166C6D7F0014251E /* png.h */, + 3DC2145E166C6D7F0014251E /* pngconf.h */, + ); + path = png; + sourceTree = ""; + }; + B338091E2877C5530009C732 /* PVMupen64Plus-NX */ = { + isa = PBXGroup; + children = ( + B338091F2877C5530009C732 /* Core.plist */, + B33809202877C5530009C732 /* PVMupen64Plus-NX.h */, + B33809212877C5530009C732 /* Info.plist */, + ); + path = "PVMupen64Plus-NX"; + sourceTree = ""; + }; + B33809222877C5530009C732 /* PVMupen64Plus-NXCore */ = { + isa = PBXGroup; + children = ( + B33809272877C5530009C732 /* Mupen-NXOptions.swift */, + B33809232877C5530009C732 /* PVMupen64Plus-NXCore.h */, + B338092A2877C5530009C732 /* PVMupen64Plus-NXCore.m */, + B338092F2877C5530009C732 /* PVMupen64Plus-NXCore.mm */, + B338092D2877C5530009C732 /* PVMupen64Plus-NXCore+Audio.swift */, + B33809282877C5530009C732 /* PVMupen64Plus-NXCore+Cheats.h */, + B33809302877C5530009C732 /* PVMupen64Plus-NXCore+Cheats.m */, + B33809292877C5530009C732 /* PVMupen64Plus-NXCore+Controls.h */, + B33809242877C5530009C732 /* PVMupen64Plus-NXCore+Controls.m */, + B338092B2877C5530009C732 /* PVMupen64Plus-NXCore+Mupen.h */, + B33809262877C5530009C732 /* PVMupen64Plus-NXCore+Mupen.m */, + B33809252877C5530009C732 /* PVMupen64Plus-NXCore+Saves.h */, + B338092C2877C5530009C732 /* PVMupen64Plus-NXCore+Saves.m */, + B338092E2877C5530009C732 /* PVMupen64Plus-NXCore+Video.swift */, + ); + path = "PVMupen64Plus-NXCore"; + sourceTree = ""; + }; + B3B3B8551DECE9D800602746 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B39E129928925CB000016387 /* PVLibRetro.framework */, + B32299372878AF8800585AD8 /* libc++.tbd */, + B32299392878AFA200585AD8 /* libc.tbd */, + B322993A2878AFA200585AD8 /* libc++.1.tbd */, + B322993B2878AFA200585AD8 /* libc++.tbd */, + B30BF1AD2775320F00FF9E07 /* libz.tbd */, + B3F2058226FBCBC600A4196B /* OpenGL.framework */, + B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */, + B37263B626EA164E00E95488 /* libdl.tbd */, + B37263A326EA0D6700E95488 /* libz.tbd */, + B3AE1DD320731F2700AD06D4 /* libdl.tbd */, + B3303E811DED272E00896D96 /* libz.tbd */, + B3EA447B206E10C700E608F6 /* OpenGLES.framework */, + B3AF705721916ED0000FA7F9 /* PVSupport.framework */, + B3055BEE20730B60001212D2 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3C89C852877D0B60037A946 /* mupen64plus-libretro-nx */ = { + isa = PBXGroup; + children = ( + B3C8A1DE2877D0B90037A946 /* .gitignore */, + B3C89F592877D0B70037A946 /* LICENSE */, + B3C89F5A2877D0B70037A946 /* Makefile */, + B3C8A0192877D0B80037A946 /* Makefile.common */, + B3C8A01A2877D0B80037A946 /* README.md */, + B3C8A3EC2877D0B90037A946 /* generate-ini-headers.sh */, + B3C8A3ED2877D0B90037A946 /* .gitlab-ci.yml */, + B3C8A3EE2877D0B90037A946 /* custom */, + B3C89CAC2877D0B60037A946 /* GLideN64 */, + B3C8A0482877D0B80037A946 /* libretro */, + B3C8A1FC2877D0B90037A946 /* libretro-common */, + B3C8A5002877D0BA0037A946 /* mupen64plus-core */, + B3C8A1DF2877D0B90037A946 /* mupen64plus-rsp-cxd4 */, + B3C8A01B2877D0B80037A946 /* mupen64plus-rsp-hle */, + B3C8A0522877D0B80037A946 /* mupen64plus-rsp-paraLLEl */, + B3C89C862877D0B60037A946 /* mupen64plus-video-angrylion */, + B3C89F5B2877D0B70037A946 /* mupen64plus-video-paraLLEl */, + B3C8A3E72877D0B90037A946 /* switch */, + B3C8A3E92877D0B90037A946 /* xxHash */, + ); + path = "mupen64plus-libretro-nx"; + sourceTree = ""; + }; + B3C89C862877D0B60037A946 /* mupen64plus-video-angrylion */ = { + isa = PBXGroup; + children = ( + B3C89C872877D0B60037A946 /* interface.c */, + B3C89C882877D0B60037A946 /* n64video.c */, + B3C89C892877D0B60037A946 /* parallel_al.cpp */, + B3C89C8A2877D0B60037A946 /* vdac.h */, + B3C89C8B2877D0B60037A946 /* plugin.h */, + B3C89C8C2877D0B60037A946 /* n64video */, + B3C89CA42877D0B60037A946 /* version.h.in */, + B3C89CA52877D0B60037A946 /* n64video.h */, + B3C89CA62877D0B60037A946 /* msg.h */, + B3C89CA72877D0B60037A946 /* common.h */, + B3C89CA82877D0B60037A946 /* plugin.c */, + B3C89CA92877D0B60037A946 /* parallel_al.h */, + B3C89CAA2877D0B60037A946 /* Gfx #1.3.h */, + B3C89CAB2877D0B60037A946 /* rdp.h */, + ); + path = "mupen64plus-video-angrylion"; + sourceTree = ""; + }; + B3C89C8C2877D0B60037A946 /* n64video */ = { + isa = PBXGroup; + children = ( + B3C89C8D2877D0B60037A946 /* vi */, + B3C89C952877D0B60037A946 /* rdp.c */, + B3C89C962877D0B60037A946 /* vi.c */, + B3C89C972877D0B60037A946 /* rdp */, + ); + path = n64video; + sourceTree = ""; + }; + B3C89C8D2877D0B60037A946 /* vi */ = { + isa = PBXGroup; + children = ( + B3C89C8E2877D0B60037A946 /* fetch.c */, + B3C89C8F2877D0B60037A946 /* gamma.c */, + B3C89C902877D0B60037A946 /* video.c */, + B3C89C912877D0B60037A946 /* vi.c */, + B3C89C922877D0B60037A946 /* restore.c */, + B3C89C932877D0B60037A946 /* divot.c */, + B3C89C942877D0B60037A946 /* lerp.c */, + ); + path = vi; + sourceTree = ""; + }; + B3C89C972877D0B60037A946 /* rdp */ = { + isa = PBXGroup; + children = ( + B3C89C982877D0B60037A946 /* rasterizer.c */, + B3C89C992877D0B60037A946 /* combiner.c */, + B3C89C9A2877D0B60037A946 /* rdp.c */, + B3C89C9B2877D0B60037A946 /* fbuffer.c */, + B3C89C9C2877D0B60037A946 /* zbuffer.c */, + B3C89C9D2877D0B60037A946 /* blender.c */, + B3C89C9E2877D0B60037A946 /* tcoord.c */, + B3C89C9F2877D0B60037A946 /* rdram.c */, + B3C89CA02877D0B60037A946 /* dither.c */, + B3C89CA12877D0B60037A946 /* tmem.c */, + B3C89CA22877D0B60037A946 /* tex.c */, + B3C89CA32877D0B60037A946 /* coverage.c */, + ); + path = rdp; + sourceTree = ""; + }; + B3C89CAC2877D0B60037A946 /* GLideN64 */ = { + isa = PBXGroup; + children = ( + B3C89CED2877D0B60037A946 /* .gitignore */, + B3C89CF12877D0B60037A946 /* .gitrepo */, + B3C89CAD2877D0B60037A946 /* LICENSE */, + B3C89CE92877D0B60037A946 /* README.md */, + B3C89CEE2877D0B60037A946 /* .github */, + B3C89CEA2877D0B60037A946 /* ini */, + B3C89CAE2877D0B60037A946 /* licenses */, + B3C89CB92877D0B60037A946 /* projects */, + B3C89D022877D0B60037A946 /* src */, + B3C89CF22877D0B60037A946 /* translations */, + ); + path = GLideN64; + sourceTree = ""; + }; + B3C89CAE2877D0B60037A946 /* licenses */ = { + isa = PBXGroup; + children = ( + B3C89CAF2877D0B60037A946 /* gles2n64 */, + B3C89CB12877D0B60037A946 /* GlideHQ */, + B3C89CB32877D0B60037A946 /* GLSL-FXAA */, + B3C89CB52877D0B60037A946 /* readerwriterqueue */, + B3C89CB72877D0B60037A946 /* Glow */, + ); + path = licenses; + sourceTree = ""; + }; + B3C89CAF2877D0B60037A946 /* gles2n64 */ = { + isa = PBXGroup; + children = ( + B3C89CB02877D0B60037A946 /* LICENSE */, + ); + path = gles2n64; + sourceTree = ""; + }; + B3C89CB12877D0B60037A946 /* GlideHQ */ = { + isa = PBXGroup; + children = ( + B3C89CB22877D0B60037A946 /* gpl-2.0.txt */, + ); + path = GlideHQ; + sourceTree = ""; + }; + B3C89CB32877D0B60037A946 /* GLSL-FXAA */ = { + isa = PBXGroup; + children = ( + B3C89CB42877D0B60037A946 /* LICENSE.md */, + ); + path = "GLSL-FXAA"; + sourceTree = ""; + }; + B3C89CB52877D0B60037A946 /* readerwriterqueue */ = { + isa = PBXGroup; + children = ( + B3C89CB62877D0B60037A946 /* LICENSE.md */, + ); + path = readerwriterqueue; + sourceTree = ""; + }; + B3C89CB72877D0B60037A946 /* Glow */ = { + isa = PBXGroup; + children = ( + B3C89CB82877D0B60037A946 /* LICENSE */, + ); + path = Glow; + sourceTree = ""; + }; + B3C89CB92877D0B60037A946 /* projects */ = { + isa = PBXGroup; + children = ( + B3C89CBA2877D0B60037A946 /* msvc */, + B3C89CE72877D0B60037A946 /* cmake */, + ); + path = projects; + sourceTree = ""; + }; + B3C89CBA2877D0B60037A946 /* msvc */ = { + isa = PBXGroup; + children = ( + B3C89CBB2877D0B60037A946 /* libGLideNHQ.vcxproj */, + B3C89CBC2877D0B60037A946 /* GLideN64_Builder.cmd */, + B3C89CBD2877D0B60037A946 /* GLideNUI.vcxproj.filters */, + B3C89CBE2877D0B60037A946 /* GLideN64.sln */, + B3C89CBF2877D0B60037A946 /* GLideNUI.pro */, + B3C89CC02877D0B60037A946 /* GLideN64.vcxproj.filters */, + B3C89CC12877D0B60037A946 /* ticpp.vcxproj */, + B3C89CC22877D0B60037A946 /* GLideNUI-wtl.vcxproj */, + B3C89CC32877D0B60037A946 /* osal.vcxproj */, + B3C89CC42877D0B60037A946 /* libGLideNHQ.vcxproj.filters */, + B3C89CC52877D0B60037A946 /* lib */, + B3C89CE02877D0B60037A946 /* GLideNUI.vcxproj */, + B3C89CE12877D0B60037A946 /* ticpp.vcxproj.filters */, + B3C89CE22877D0B60037A946 /* ts2lang.vcxproj */, + B3C89CE32877D0B60037A946 /* ts2lang.vcxproj.filters */, + B3C89CE42877D0B60037A946 /* GLideNUI-wtl.vcxproj.filters */, + B3C89CE52877D0B60037A946 /* osal.vcxproj.filters */, + B3C89CE62877D0B60037A946 /* GLideN64.vcxproj */, + ); + path = msvc; + sourceTree = ""; + }; + B3C89CC52877D0B60037A946 /* lib */ = { + isa = PBXGroup; + children = ( + B3C89CC62877D0B60037A946 /* x64 */, + B3C89CCF2877D0B60037A946 /* msvc12 */, + B3C89CD82877D0B60037A946 /* dbg */, + B3C89CDC2877D0B60037A946 /* rel */, + ); + path = lib; + sourceTree = ""; + }; + B3C89CC62877D0B60037A946 /* x64 */ = { + isa = PBXGroup; + children = ( + B3C89CC72877D0B60037A946 /* dbg */, + B3C89CCB2877D0B60037A946 /* rel */, + ); + path = x64; + sourceTree = ""; + }; + B3C89CC72877D0B60037A946 /* dbg */ = { + isa = PBXGroup; + children = ( + B3C89CC82877D0B60037A946 /* freetype253MT_D.lib */, + B3C89CC92877D0B60037A946 /* zlibd.lib */, + B3C89CCA2877D0B60037A946 /* libpngd.lib */, + ); + path = dbg; + sourceTree = ""; + }; + B3C89CCB2877D0B60037A946 /* rel */ = { + isa = PBXGroup; + children = ( + B3C89CCC2877D0B60037A946 /* zlib.lib */, + B3C89CCD2877D0B60037A946 /* libpng.lib */, + B3C89CCE2877D0B60037A946 /* freetype253MT.lib */, + ); + path = rel; + sourceTree = ""; + }; + B3C89CCF2877D0B60037A946 /* msvc12 */ = { + isa = PBXGroup; + children = ( + B3C89CD02877D0B60037A946 /* dbg */, + B3C89CD42877D0B60037A946 /* rel */, + ); + path = msvc12; + sourceTree = ""; + }; + B3C89CD02877D0B60037A946 /* dbg */ = { + isa = PBXGroup; + children = ( + B3C89CD12877D0B60037A946 /* freetype253MT_D.lib */, + B3C89CD22877D0B60037A946 /* zlibd.lib */, + B3C89CD32877D0B60037A946 /* libpngd.lib */, + ); + path = dbg; + sourceTree = ""; + }; + B3C89CD42877D0B60037A946 /* rel */ = { + isa = PBXGroup; + children = ( + B3C89CD52877D0B60037A946 /* zlib.lib */, + B3C89CD62877D0B60037A946 /* libpng.lib */, + B3C89CD72877D0B60037A946 /* freetype253MT.lib */, + ); + path = rel; + sourceTree = ""; + }; + B3C89CD82877D0B60037A946 /* dbg */ = { + isa = PBXGroup; + children = ( + B3C89CD92877D0B60037A946 /* freetype253MT_D.lib */, + B3C89CDA2877D0B60037A946 /* zlibd.lib */, + B3C89CDB2877D0B60037A946 /* libpngd.lib */, + ); + path = dbg; + sourceTree = ""; + }; + B3C89CDC2877D0B60037A946 /* rel */ = { + isa = PBXGroup; + children = ( + B3C89CDD2877D0B60037A946 /* zlib.lib */, + B3C89CDE2877D0B60037A946 /* libpng.lib */, + B3C89CDF2877D0B60037A946 /* freetype253MT.lib */, + ); + path = rel; + sourceTree = ""; + }; + B3C89CE72877D0B60037A946 /* cmake */ = { + isa = PBXGroup; + children = ( + B3C89CE82877D0B60037A946 /* Readme.txt */, + ); + path = cmake; + sourceTree = ""; + }; + B3C89CEA2877D0B60037A946 /* ini */ = { + isa = PBXGroup; + children = ( + B3C89CEB2877D0B60037A946 /* GLideN64.custom.ini */, + B3C89CEC2877D0B60037A946 /* GLideN64.ini */, + ); + path = ini; + sourceTree = ""; + }; + B3C89CEE2877D0B60037A946 /* .github */ = { + isa = PBXGroup; + children = ( + B3C89CEF2877D0B60037A946 /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B3C89CEF2877D0B60037A946 /* workflows */ = { + isa = PBXGroup; + children = ( + B3C89CF02877D0B60037A946 /* build.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B3C89CF22877D0B60037A946 /* translations */ = { + isa = PBXGroup; + children = ( + B3C89CF32877D0B60037A946 /* gliden64_pt_BR.ts */, + B3C89CF42877D0B60037A946 /* gliden64_fr.ts */, + B3C89CF52877D0B60037A946 /* gliden64_es.ts */, + B3C89CF62877D0B60037A946 /* gliden64_it.ts */, + B3C89CF72877D0B60037A946 /* gliden64_de.ts */, + B3C89CF82877D0B60037A946 /* release */, + B3C89D002877D0B60037A946 /* gliden64_ja.ts */, + B3C89D012877D0B60037A946 /* gliden64_pl.ts */, + ); + path = translations; + sourceTree = ""; + }; + B3C89CF82877D0B60037A946 /* release */ = { + isa = PBXGroup; + children = ( + B3C89CF92877D0B60037A946 /* gliden64_fr.qm */, + B3C89CFA2877D0B60037A946 /* gliden64_pt_BR.qm */, + B3C89CFB2877D0B60037A946 /* gliden64_es.qm */, + B3C89CFC2877D0B60037A946 /* gliden64_it.qm */, + B3C89CFD2877D0B60037A946 /* gliden64_de.qm */, + B3C89CFE2877D0B60037A946 /* gliden64_ja.qm */, + B3C89CFF2877D0B60037A946 /* gliden64_pl.qm */, + ); + path = release; + sourceTree = ""; + }; + B3C89D022877D0B60037A946 /* src */ = { + isa = PBXGroup; + children = ( + B3C89D392877D0B60037A946 /* getRevision.bat */, + B3C89E642877D0B70037A946 /* 3DMath.cpp */, + B3C89E5E2877D0B70037A946 /* Combiner.cpp */, + B3C89DF92877D0B70037A946 /* CombinerKey.cpp */, + B3C89E252877D0B70037A946 /* CommonPluginAPI.cpp */, + B3C89E212877D0B70037A946 /* Config.cpp */, + B3C89DB62877D0B70037A946 /* convert.cpp */, + B3C89F542877D0B70037A946 /* CRC_OPT.cpp */, + B3C89E672877D0B70037A946 /* CRC32_ARMV8.cpp */, + B3C89DDB2877D0B70037A946 /* CRC32.cpp */, + B3C89E222877D0B70037A946 /* DebugDump.cpp */, + B3C89E652877D0B70037A946 /* Debugger.cpp */, + B3C89DF22877D0B70037A946 /* DepthBuffer.cpp */, + B3C89DF12877D0B70037A946 /* DisplayLoadProgress.cpp */, + B3C89DF72877D0B70037A946 /* DisplayWindow.cpp */, + B3C89DE42877D0B70037A946 /* FrameBuffer.cpp */, + B3C89DC92877D0B70037A946 /* FrameBufferInfo.cpp */, + B3C89DDC2877D0B70037A946 /* GBI.cpp */, + B3C89EF22877D0B70037A946 /* gDP.cpp */, + B3C89DB22877D0B70037A946 /* GLideN64.cpp */, + B3C89E6B2877D0B70037A946 /* GraphicsDrawer.cpp */, + B3C89DAE2877D0B70037A946 /* gSP.cpp */, + B3C89DC52877D0B70037A946 /* iob.cpp */, + B3C89EEF2877D0B70037A946 /* Log_android.cpp */, + B3C89D3B2877D0B60037A946 /* Log.cpp */, + B3C89EF02877D0B70037A946 /* MupenPlusPluginAPI.cpp */, + B3C89F552877D0B70037A946 /* N64.cpp */, + B3C89DC32877D0B70037A946 /* NoiseTexture.cpp */, + B3C89DFB2877D0B70037A946 /* PaletteTexture.cpp */, + B3C89D3A2877D0B60037A946 /* Performance.cpp */, + B3C89DC22877D0B70037A946 /* PostProcessor.cpp */, + B3C89D042877D0B60037A946 /* RDP.cpp */, + B3C89DE72877D0B70037A946 /* RSP_LoadMatrix.cpp */, + B3C89DC42877D0B70037A946 /* RSP_LoadMatrixX86.cpp */, + B3C89E6D2877D0B70037A946 /* RSP.cpp */, + B3C89DC82877D0B70037A946 /* SoftwareRender.cpp */, + B3C89EEA2877D0B70037A946 /* TexrectDrawer.cpp */, + B3C89DAF2877D0B70037A946 /* TextDrawer.cpp */, + B3C89E792877D0B70037A946 /* TextDrawerStub.cpp */, + B3C89DF82877D0B70037A946 /* TextureFilterHandler.cpp */, + B3C89DAC2877D0B70037A946 /* Textures.cpp */, + B3C89EEC2877D0B70037A946 /* TxFilterStub.cpp */, + B3C89F572877D0B70037A946 /* VI.cpp */, + B3C89DF62877D0B70037A946 /* ZilmarPluginAPI.cpp */, + B3C89EE82877D0B70037A946 /* ZlutTexture.cpp */, + B3C89E662877D0B70037A946 /* 3DMath.h */, + B3C89E202877D0B70037A946 /* Combiner.h */, + B3C89DCA2877D0B70037A946 /* CombinerKey.h */, + B3C89DB12877D0B70037A946 /* Config.h */, + B3C89E782877D0B70037A946 /* convert.h */, + B3C89DCB2877D0B70037A946 /* CRC.h */, + B3C89E232877D0B70037A946 /* DebugDump.h */, + B3C89E6C2877D0B70037A946 /* Debugger.h */, + B3C89D032877D0B60037A946 /* DepthBuffer.h */, + B3C89F582877D0B70037A946 /* DisplayLoadProgress.h */, + B3C89DB32877D0B70037A946 /* DisplayWindow.h */, + B3C89DE62877D0B70037A946 /* FrameBuffer.h */, + B3C89D3C2877D0B60037A946 /* FrameBufferInfo.h */, + B3C89EEE2877D0B70037A946 /* FrameBufferInfoAPI.h */, + B3C89EF32877D0B70037A946 /* GBI.h */, + B3C89E6A2877D0B70037A946 /* gDP.h */, + B3C89DED2877D0B70037A946 /* GLideN64.h */, + B3C89F562877D0B70037A946 /* GraphicsDrawer.h */, + B3C89E5B2877D0B70037A946 /* gSP.h */, + B3C89E1E2877D0B70037A946 /* Log.h */, + B3C89DC62877D0B70037A946 /* MemoryStatus.h */, + B3C89E5A2877D0B70037A946 /* N64.h */, + B3C89DF32877D0B70037A946 /* NoiseTexture.h */, + B3C89D3E2877D0B60037A946 /* PaletteTexture.h */, + B3C89DB42877D0B70037A946 /* Performance.h */, + B3C89EF12877D0B70037A946 /* Platform.h */, + B3C89D052877D0B60037A946 /* PluginAPI.h */, + B3C89DEF2877D0B70037A946 /* PostProcessor.h */, + B3C89EE92877D0B70037A946 /* RDP.h */, + B3C89E5D2877D0B70037A946 /* resource.h */, + B3C89E5C2877D0B70037A946 /* RSP.h */, + B3C89DE52877D0B70037A946 /* sdl2_compat.h */, + B3C89E6F2877D0B70037A946 /* SoftwareRender.h */, + B3C89DCC2877D0B70037A946 /* TexrectDrawer.h */, + B3C89DB02877D0B70037A946 /* TextDrawer.h */, + B3C89DC72877D0B70037A946 /* TextureFilterHandler.h */, + B3C89EEB2877D0B70037A946 /* Textures.h */, + B3C89DB52877D0B70037A946 /* Types.h */, + B3C89E6E2877D0B70037A946 /* VI.h */, + B3C89EED2877D0B70037A946 /* winlnxdefs.h */, + B3C89E1F2877D0B70037A946 /* wst.h */, + B3C89D3D2877D0B60037A946 /* ZilmarGFX_1_3.h */, + B3C89DEE2877D0B70037A946 /* ZlutTexture.h */, + B3C89DF02877D0B70037A946 /* Log_ios.mm */, + B3C89E242877D0B70037A946 /* GLideN64.rc */, + B3C89DFA2877D0B70037A946 /* getRevision.sh */, + B3C89DAD2877D0B70037A946 /* CMakeLists.txt */, + B3C89DCD2877D0B70037A946 /* FrameBufferEmulationIssues.txt */, + B3C89DB72877D0B70037A946 /* BufferCopy */, + B3C89DF42877D0B70037A946 /* common */, + B3C89DE82877D0B70037A946 /* DepthBufferRender */, + B3C89E262877D0B70037A946 /* GLideNHQ */, + B3C89DFC2877D0B70037A946 /* GLideNUI */, + B3C89EF42877D0B70037A946 /* GLideNUI-wtl */, + B3C89E7A2877D0B70037A946 /* Graphics */, + B3C89D3F2877D0B60037A946 /* inc */, + B3C89DDD2877D0B70037A946 /* mupenplus */, + B3C89E5F2877D0B70037A946 /* Neon */, + B3C89DCE2877D0B70037A946 /* osal */, + B3C89D062877D0B60037A946 /* uCodes */, + B3C89E702877D0B70037A946 /* windows */, + B3C89E682877D0B70037A946 /* xxHash */, + ); + path = src; + sourceTree = ""; + }; + B3C89D062877D0B60037A946 /* uCodes */ = { + isa = PBXGroup; + children = ( + B3C89D282877D0B60037A946 /* F3D.cpp */, + B3C89D1F2877D0B60037A946 /* F3DAM.cpp */, + B3C89D1D2877D0B60037A946 /* F3DBETA.cpp */, + B3C89D072877D0B60037A946 /* F3DDKR.cpp */, + B3C89D372877D0B60037A946 /* F3DEX.cpp */, + B3C89D082877D0B60037A946 /* F3DEX2.cpp */, + B3C89D182877D0B60037A946 /* F3DEX2ACCLAIM.cpp */, + B3C89D0A2877D0B60037A946 /* F3DEX2CBFD.cpp */, + B3C89D272877D0B60037A946 /* F3DFLX2.cpp */, + B3C89D382877D0B60037A946 /* F3DGOLDEN.cpp */, + B3C89D0F2877D0B60037A946 /* F3DPD.cpp */, + B3C89D242877D0B60037A946 /* F3DSETA.cpp */, + B3C89D172877D0B60037A946 /* F3DTEXA.cpp */, + B3C89D162877D0B60037A946 /* F3DZEX2.cpp */, + B3C89D302877D0B60037A946 /* F5Indi_Naboo.cpp */, + B3C89D2B2877D0B60037A946 /* F5Rogue.cpp */, + B3C89D1B2877D0B60037A946 /* L3D.cpp */, + B3C89D2A2877D0B60037A946 /* L3DEX.cpp */, + B3C89D092877D0B60037A946 /* L3DEX2.cpp */, + B3C89D192877D0B60037A946 /* S2DEX.cpp */, + B3C89D0C2877D0B60037A946 /* S2DEX2.cpp */, + B3C89D2D2877D0B60037A946 /* T3DUX.cpp */, + B3C89D152877D0B60037A946 /* Turbo3D.cpp */, + B3C89D0B2877D0B60037A946 /* ZSort.cpp */, + B3C89D232877D0B60037A946 /* ZSortBOSS.cpp */, + B3C89D1E2877D0B60037A946 /* F3D.h */, + B3C89D212877D0B60037A946 /* F3DAM.h */, + B3C89D142877D0B60037A946 /* F3DBETA.h */, + B3C89D202877D0B60037A946 /* F3DDKR.h */, + B3C89D332877D0B60037A946 /* F3DEX.h */, + B3C89D252877D0B60037A946 /* F3DEX2.h */, + B3C89D122877D0B60037A946 /* F3DEX2ACCLAIM.h */, + B3C89D362877D0B60037A946 /* F3DEX2CBFD.h */, + B3C89D352877D0B60037A946 /* F3DFLX2.h */, + B3C89D0D2877D0B60037A946 /* F3DGOLDEN.h */, + B3C89D1A2877D0B60037A946 /* F3DPD.h */, + B3C89D2C2877D0B60037A946 /* F3DSETA.h */, + B3C89D0E2877D0B60037A946 /* F3DTEXA.h */, + B3C89D222877D0B60037A946 /* F3DZEX2.h */, + B3C89D2F2877D0B60037A946 /* F5Indi_Naboo.h */, + B3C89D292877D0B60037A946 /* F5Rogue.h */, + B3C89D262877D0B60037A946 /* L3D.h */, + B3C89D112877D0B60037A946 /* L3DEX.h */, + B3C89D2E2877D0B60037A946 /* L3DEX2.h */, + B3C89D102877D0B60037A946 /* S2DEX.h */, + B3C89D132877D0B60037A946 /* S2DEX2.h */, + B3C89D312877D0B60037A946 /* T3DUX.h */, + B3C89D322877D0B60037A946 /* Turbo3D.h */, + B3C89D1C2877D0B60037A946 /* ZSort.h */, + B3C89D342877D0B60037A946 /* ZSortBOSS.h */, + ); + path = uCodes; + sourceTree = ""; + }; + B3C89D3F2877D0B60037A946 /* inc */ = { + isa = PBXGroup; + children = ( + B3C89D402877D0B60037A946 /* m64p_frontend.h */, + B3C89D412877D0B60037A946 /* config.h */, + B3C89D422877D0B60037A946 /* freetype */, + B3C89D9F2877D0B70037A946 /* m64p_vidext.h */, + B3C89DA02877D0B70037A946 /* m64p_common.h */, + B3C89DA12877D0B70037A946 /* callbacks.h */, + B3C89DA22877D0B70037A946 /* m64p_types.h */, + B3C89DA32877D0B70037A946 /* m64p_debugger.h */, + B3C89DA42877D0B70037A946 /* GL */, + B3C89DA92877D0B70037A946 /* debugger.h */, + B3C89DAA2877D0B70037A946 /* m64p_config.h */, + B3C89DAB2877D0B70037A946 /* m64p_plugin.h */, + ); + path = inc; + sourceTree = ""; + }; + B3C89D422877D0B60037A946 /* freetype */ = { + isa = PBXGroup; + children = ( + B3C89D432877D0B60037A946 /* include */, + ); + path = freetype; + sourceTree = ""; + }; + B3C89D432877D0B60037A946 /* include */ = { + isa = PBXGroup; + children = ( + B3C89D442877D0B60037A946 /* ftxf86.h */, + B3C89D452877D0B60037A946 /* ftsnames.h */, + B3C89D462877D0B60037A946 /* ftwinfnt.h */, + B3C89D472877D0B60037A946 /* ftsizes.h */, + B3C89D482877D0B60037A946 /* fttypes.h */, + B3C89D492877D0B60037A946 /* ftmm.h */, + B3C89D4A2877D0B60037A946 /* config */, + B3C89D502877D0B60037A946 /* ftmodapi.h */, + B3C89D512877D0B60037A946 /* ftbzip2.h */, + B3C89D522877D0B60037A946 /* ttunpat.h */, + B3C89D532877D0B60037A946 /* fttrigon.h */, + B3C89D542877D0B60037A946 /* ftbbox.h */, + B3C89D552877D0B60037A946 /* ftgzip.h */, + B3C89D562877D0B60037A946 /* internal */, + B3C89D7D2877D0B60037A946 /* ftoutln.h */, + B3C89D7E2877D0B60037A946 /* ftadvanc.h */, + B3C89D7F2877D0B60037A946 /* ftsynth.h */, + B3C89D802877D0B60037A946 /* fterrors.h */, + B3C89D812877D0B60037A946 /* ftgasp.h */, + B3C89D822877D0B60037A946 /* ftstroke.h */, + B3C89D832877D0B60037A946 /* ftcache.h */, + B3C89D842877D0B60037A946 /* ft2build.h */, + B3C89D852877D0B60037A946 /* ftotval.h */, + B3C89D862877D0B60037A946 /* freetype.h */, + B3C89D872877D0B60037A946 /* ftincrem.h */, + B3C89D882877D0B60037A946 /* ftttdrv.h */, + B3C89D892877D0B60037A946 /* fterrdef.h */, + B3C89D8A2877D0B60037A946 /* ttnameid.h */, + B3C89D8B2877D0B60037A946 /* ftpfr.h */, + B3C89D8C2877D0B60037A946 /* ftgxval.h */, + B3C89D8D2877D0B60037A946 /* ftcffdrv.h */, + B3C89D8E2877D0B60037A946 /* ftchapters.h */, + B3C89D8F2877D0B60037A946 /* tttags.h */, + B3C89D902877D0B60037A946 /* ftlzw.h */, + B3C89D912877D0B60037A946 /* ftsystem.h */, + B3C89D922877D0B60037A946 /* t1tables.h */, + B3C89D932877D0B60037A946 /* ftimage.h */, + B3C89D942877D0B60037A946 /* tttables.h */, + B3C89D952877D0B60037A946 /* ftcid.h */, + B3C89D962877D0B60037A946 /* ftglyph.h */, + B3C89D972877D0B60037A946 /* ftmoderr.h */, + B3C89D982877D0B60037A946 /* ftbitmap.h */, + B3C89D992877D0B60037A946 /* ftlist.h */, + B3C89D9A2877D0B60037A946 /* ftmac.h */, + B3C89D9B2877D0B70037A946 /* ftlcdfil.h */, + B3C89D9C2877D0B70037A946 /* ftautoh.h */, + B3C89D9D2877D0B70037A946 /* ftbdf.h */, + B3C89D9E2877D0B70037A946 /* ftrender.h */, + ); + path = include; + sourceTree = ""; + }; + B3C89D4A2877D0B60037A946 /* config */ = { + isa = PBXGroup; + children = ( + B3C89D4B2877D0B60037A946 /* ftstdlib.h */, + B3C89D4C2877D0B60037A946 /* ftheader.h */, + B3C89D4D2877D0B60037A946 /* ftconfig.h */, + B3C89D4E2877D0B60037A946 /* ftoption.h */, + B3C89D4F2877D0B60037A946 /* ftmodule.h */, + ); + path = config; + sourceTree = ""; + }; + B3C89D562877D0B60037A946 /* internal */ = { + isa = PBXGroup; + children = ( + B3C89D572877D0B60037A946 /* sfnt.h */, + B3C89D582877D0B60037A946 /* internal.h */, + B3C89D592877D0B60037A946 /* ftdebug.h */, + B3C89D5A2877D0B60037A946 /* psaux.h */, + B3C89D5B2877D0B60037A946 /* t1types.h */, + B3C89D5C2877D0B60037A946 /* pshints.h */, + B3C89D5D2877D0B60037A946 /* ftdriver.h */, + B3C89D5E2877D0B60037A946 /* autohint.h */, + B3C89D5F2877D0B60037A946 /* ftstream.h */, + B3C89D602877D0B60037A946 /* tttypes.h */, + B3C89D612877D0B60037A946 /* ftvalid.h */, + B3C89D622877D0B60037A946 /* ftobjs.h */, + B3C89D632877D0B60037A946 /* ftpic.h */, + B3C89D642877D0B60037A946 /* fttrace.h */, + B3C89D652877D0B60037A946 /* ftmemory.h */, + B3C89D662877D0B60037A946 /* ftgloadr.h */, + B3C89D672877D0B60037A946 /* ftserv.h */, + B3C89D682877D0B60037A946 /* services */, + B3C89D7B2877D0B60037A946 /* ftrfork.h */, + B3C89D7C2877D0B60037A946 /* ftcalc.h */, + ); + path = internal; + sourceTree = ""; + }; + B3C89D682877D0B60037A946 /* services */ = { + isa = PBXGroup; + children = ( + B3C89D692877D0B60037A946 /* svprop.h */, + B3C89D6A2877D0B60037A946 /* svmm.h */, + B3C89D6B2877D0B60037A946 /* svwinfnt.h */, + B3C89D6C2877D0B60037A946 /* svttcmap.h */, + B3C89D6D2877D0B60037A946 /* svotval.h */, + B3C89D6E2877D0B60037A946 /* svgldict.h */, + B3C89D6F2877D0B60037A946 /* svpscmap.h */, + B3C89D702877D0B60037A946 /* svkern.h */, + B3C89D712877D0B60037A946 /* svpsinfo.h */, + B3C89D722877D0B60037A946 /* svpfr.h */, + B3C89D732877D0B60037A946 /* svgxval.h */, + B3C89D742877D0B60037A946 /* svxf86nm.h */, + B3C89D752877D0B60037A946 /* svbdf.h */, + B3C89D762877D0B60037A946 /* svsfnt.h */, + B3C89D772877D0B60037A946 /* svtteng.h */, + B3C89D782877D0B60037A946 /* svcid.h */, + B3C89D792877D0B60037A946 /* svttglyf.h */, + B3C89D7A2877D0B60037A946 /* svpostnm.h */, + ); + path = services; + sourceTree = ""; + }; + B3C89DA42877D0B70037A946 /* GL */ = { + isa = PBXGroup; + children = ( + B3C89DA52877D0B70037A946 /* wglext.h */, + B3C89DA62877D0B70037A946 /* glext.h */, + B3C89DA72877D0B70037A946 /* glxext.h */, + B3C89DA82877D0B70037A946 /* glcorearb.h */, + ); + path = GL; + sourceTree = ""; + }; + B3C89DB72877D0B70037A946 /* BufferCopy */ = { + isa = PBXGroup; + children = ( + B3C89DB82877D0B70037A946 /* BlueNoiseTexture.cpp */, + B3C89DC02877D0B70037A946 /* ColorBufferToRDRAM.cpp */, + B3C89DBA2877D0B70037A946 /* DepthBufferToRDRAM.cpp */, + B3C89DBB2877D0B70037A946 /* RDRAMtoColorBuffer.cpp */, + B3C89DBE2877D0B70037A946 /* BlueNoiseTexture.h */, + B3C89DC12877D0B70037A946 /* ColorBufferToRDRAM.h */, + B3C89DBC2877D0B70037A946 /* ColorBufferToRDRAMStub.h */, + B3C89DBD2877D0B70037A946 /* DepthBufferToRDRAM.h */, + B3C89DB92877D0B70037A946 /* RDRAMtoColorBuffer.h */, + B3C89DBF2877D0B70037A946 /* WriteToRDRAM.h */, + ); + path = BufferCopy; + sourceTree = ""; + }; + B3C89DCE2877D0B70037A946 /* osal */ = { + isa = PBXGroup; + children = ( + B3C89DCF2877D0B70037A946 /* keycode */, + B3C89DD12877D0B70037A946 /* CMakeLists.txt */, + B3C89DD22877D0B70037A946 /* osal_export.h */, + B3C89DD32877D0B70037A946 /* osal_files_ios.mm */, + B3C89DD42877D0B70037A946 /* osal_files.h */, + B3C89DD52877D0B70037A946 /* osal_files_unix.c */, + B3C89DD62877D0B70037A946 /* osal_keys.h */, + B3C89DD72877D0B70037A946 /* osal_keys_linux.c */, + B3C89DD82877D0B70037A946 /* osal_keys_unix.c */, + B3C89DD92877D0B70037A946 /* osal_files_win32.c */, + B3C89DDA2877D0B70037A946 /* osal_keys_win.c */, + ); + path = osal; + sourceTree = ""; + }; + B3C89DCF2877D0B70037A946 /* keycode */ = { + isa = PBXGroup; + children = ( + B3C89DD02877D0B70037A946 /* keycode.h */, + ); + path = keycode; + sourceTree = ""; + }; + B3C89DDD2877D0B70037A946 /* mupenplus */ = { + isa = PBXGroup; + children = ( + B3C89DDE2877D0B70037A946 /* Config_mupenplus.cpp */, + B3C89DDF2877D0B70037A946 /* GLideN64_mupenplus.h */, + B3C89DE02877D0B70037A946 /* MupenPlusAPIImpl.cpp */, + B3C89DE12877D0B70037A946 /* CommonAPIImpl_mupenplus.cpp */, + B3C89DE22877D0B70037A946 /* MemoryStatus_mupenplus.cpp */, + B3C89DE32877D0B70037A946 /* video_api_export.ver */, + ); + path = mupenplus; + sourceTree = ""; + }; + B3C89DE82877D0B70037A946 /* DepthBufferRender */ = { + isa = PBXGroup; + children = ( + B3C89DE92877D0B70037A946 /* DepthBufferRender.cpp */, + B3C89DEA2877D0B70037A946 /* ClipPolygon.cpp */, + B3C89DEB2877D0B70037A946 /* ClipPolygon.h */, + B3C89DEC2877D0B70037A946 /* DepthBufferRender.h */, + ); + path = DepthBufferRender; + sourceTree = ""; + }; + B3C89DF42877D0B70037A946 /* common */ = { + isa = PBXGroup; + children = ( + B3C89DF52877D0B70037A946 /* CommonAPIImpl_common.cpp */, + ); + path = common; + sourceTree = ""; + }; + B3C89DFC2877D0B70037A946 /* GLideNUI */ = { + isa = PBXGroup; + children = ( + B3C89DFD2877D0B70037A946 /* ConfigDialog.cpp */, + B3C89DFE2877D0B70037A946 /* FullscreenResolutions.h */, + B3C89DFF2877D0B70037A946 /* icon.qrc */, + B3C89E002877D0B70037A946 /* configDialog.ui */, + B3C89E012877D0B70037A946 /* Settings.h */, + B3C89E022877D0B70037A946 /* HIDKeyToName.h */, + B3C89E032877D0B70037A946 /* AboutDialog.cpp */, + B3C89E042877D0B70037A946 /* GLideNUI.pro */, + B3C89E052877D0B70037A946 /* QtKeyToHID.h */, + B3C89E062877D0B70037A946 /* Resources */, + B3C89E132877D0B70037A946 /* fullscreenresolutions_mupen64plus.cpp */, + B3C89E142877D0B70037A946 /* ConfigDialog.h */, + B3C89E152877D0B70037A946 /* AboutDialog.ui */, + B3C89E162877D0B70037A946 /* HIDKeyToName.cpp */, + B3C89E172877D0B70037A946 /* AboutDialog.h */, + B3C89E182877D0B70037A946 /* GLideNUI.h */, + B3C89E192877D0B70037A946 /* Config_GLideNUI.cpp */, + B3C89E1A2877D0B70037A946 /* QtKeyToHID.cpp */, + B3C89E1B2877D0B70037A946 /* GLideNUI.cpp */, + B3C89E1C2877D0B70037A946 /* Settings.cpp */, + B3C89E1D2877D0B70037A946 /* fullscreenresolutions_windows.cpp */, + ); + path = GLideNUI; + sourceTree = ""; + }; + B3C89E062877D0B70037A946 /* Resources */ = { + isa = PBXGroup; + children = ( + B3C89E072877D0B70037A946 /* Icon-Original.ico */, + B3C89E082877D0B70037A946 /* Left.ico */, + B3C89E092877D0B70037A946 /* BottomRight.ico */, + B3C89E0A2877D0B70037A946 /* Right.ico */, + B3C89E0B2877D0B70037A946 /* Icon.ico */, + B3C89E0C2877D0B70037A946 /* TopLeft.ico */, + B3C89E0D2877D0B70037A946 /* Info.ico */, + B3C89E0E2877D0B70037A946 /* BottomLeft.ico */, + B3C89E0F2877D0B70037A946 /* Warning.ico */, + B3C89E102877D0B70037A946 /* TopRight.ico */, + B3C89E112877D0B70037A946 /* Up.ico */, + B3C89E122877D0B70037A946 /* Down.ico */, + ); + path = Resources; + sourceTree = ""; + }; + B3C89E262877D0B70037A946 /* GLideNHQ */ = { + isa = PBXGroup; + children = ( + B3C89E562877D0B70037A946 /* TextureFilters_2xsai.cpp */, + B3C89E3B2877D0B70037A946 /* TextureFilters_hq2x.cpp */, + B3C89E332877D0B70037A946 /* TextureFilters_hq4x.cpp */, + B3C89E342877D0B70037A946 /* TextureFilters_xbrz.cpp */, + B3C89E2A2877D0B70037A946 /* TextureFilters.cpp */, + B3C89E492877D0B70037A946 /* TxCache.cpp */, + B3C89E392877D0B70037A946 /* TxDbg.cpp */, + B3C89E442877D0B70037A946 /* TxFilter.cpp */, + B3C89E582877D0B70037A946 /* TxFilterExport.cpp */, + B3C89E462877D0B70037A946 /* TxHiResCache.cpp */, + B3C89E432877D0B70037A946 /* TxHiResLoader.cpp */, + B3C89E552877D0B70037A946 /* TxHiResNoCache.cpp */, + B3C89E292877D0B70037A946 /* TxImage.cpp */, + B3C89E3D2877D0B70037A946 /* TxQuantize.cpp */, + B3C89E542877D0B70037A946 /* TxReSample.cpp */, + B3C89E362877D0B70037A946 /* TxTexCache.cpp */, + B3C89E4A2877D0B70037A946 /* TxUtil.cpp */, + B3C89E482877D0B70037A946 /* TextureFilters_2xsai.h */, + B3C89E382877D0B70037A946 /* TextureFilters_hq2x.h */, + B3C89E592877D0B70037A946 /* TextureFilters_hq4x.h */, + B3C89E4F2877D0B70037A946 /* TextureFilters_lq2x.h */, + B3C89E3F2877D0B70037A946 /* TextureFilters_xbrz.h */, + B3C89E402877D0B70037A946 /* TextureFilters.h */, + B3C89E572877D0B70037A946 /* TxCache.h */, + B3C89E412877D0B70037A946 /* TxDbg.h */, + B3C89E3A2877D0B70037A946 /* TxFilter.h */, + B3C89E532877D0B70037A946 /* TxFilterExport.h */, + B3C89E422877D0B70037A946 /* TxHiResCache.h */, + B3C89E512877D0B70037A946 /* TxHiResLoader.h */, + B3C89E522877D0B70037A946 /* TxHiResNoCache.h */, + B3C89E3E2877D0B70037A946 /* TxImage.h */, + B3C89E2B2877D0B70037A946 /* TxInternal.h */, + B3C89E282877D0B70037A946 /* TxQuantize.h */, + B3C89E272877D0B70037A946 /* TxReSample.h */, + B3C89E452877D0B70037A946 /* TxTexCache.h */, + B3C89E3C2877D0B70037A946 /* TxUtil.h */, + B3C89E472877D0B70037A946 /* txWidestringHelper.h */, + B3C89E372877D0B70037A946 /* CMakeLists.txt */, + B3C89E352877D0B70037A946 /* gpl-2.0.txt */, + B3C89E502877D0B70037A946 /* README.txt */, + B3C89E2C2877D0B70037A946 /* inc */, + B3C89E4B2877D0B70037A946 /* lib */, + ); + path = GLideNHQ; + sourceTree = ""; + }; + B3C89E2C2877D0B70037A946 /* inc */ = { + isa = PBXGroup; + children = ( + B3C89E2D2877D0B70037A946 /* pngstruct.h */, + B3C89E2E2877D0B70037A946 /* png.h */, + B3C89E2F2877D0B70037A946 /* pnglibconf.h */, + B3C89E302877D0B70037A946 /* pngconf.h */, + B3C89E312877D0B70037A946 /* zlib.h */, + B3C89E322877D0B70037A946 /* zconf.h */, + ); + path = inc; + sourceTree = ""; + }; + B3C89E4B2877D0B70037A946 /* lib */ = { + isa = PBXGroup; + children = ( + B3C89E4C2877D0B70037A946 /* libdxtn.a */, + B3C89E4D2877D0B70037A946 /* libz.a */, + B3C89E4E2877D0B70037A946 /* libpng.a */, + ); + path = lib; + sourceTree = ""; + }; + B3C89E5F2877D0B70037A946 /* Neon */ = { + isa = PBXGroup; + children = ( + B3C89E602877D0B70037A946 /* gSPNeon.cpp */, + B3C89E612877D0B70037A946 /* 3DMathNeon.cpp */, + B3C89E622877D0B70037A946 /* RSP_LoadMatrixNeon.cpp */, + B3C89E632877D0B70037A946 /* CRC_OPT_NEON.cpp */, + ); + path = Neon; + sourceTree = ""; + }; + B3C89E682877D0B70037A946 /* xxHash */ = { + isa = PBXGroup; + children = ( + B3C89E692877D0B70037A946 /* xxhash.h */, + ); + path = xxHash; + sourceTree = ""; + }; + B3C89E702877D0B70037A946 /* windows */ = { + isa = PBXGroup; + children = ( + B3C89E712877D0B70037A946 /* CommonAPIImpl_windows.cpp */, + B3C89E722877D0B70037A946 /* GLideN64_windows.cpp */, + B3C89E732877D0B70037A946 /* ScreenShot.h */, + B3C89E742877D0B70037A946 /* GLideN64_windows.h */, + B3C89E752877D0B70037A946 /* MemoryStatus_windows.cpp */, + B3C89E762877D0B70037A946 /* ZilmarAPIImpl_windows.cpp */, + B3C89E772877D0B70037A946 /* ScreenShot.cpp */, + ); + path = windows; + sourceTree = ""; + }; + B3C89E7A2877D0B70037A946 /* Graphics */ = { + isa = PBXGroup; + children = ( + B3C89E832877D0B70037A946 /* ColorBufferReader.cpp */, + B3C89EE72877D0B70037A946 /* CombinerProgram.cpp */, + B3C89E7E2877D0B70037A946 /* Context.cpp */, + B3C89E7C2877D0B70037A946 /* ObjectHandle.cpp */, + B3C89E822877D0B70037A946 /* ColorBufferReader.h */, + B3C89EE52877D0B70037A946 /* CombinerProgram.h */, + B3C89E802877D0B70037A946 /* Context.h */, + B3C89E7B2877D0B70037A946 /* ContextImpl.h */, + B3C89E812877D0B70037A946 /* FramebufferTextureFormats.h */, + B3C89EE62877D0B70037A946 /* ObjectHandle.h */, + B3C89E7D2877D0B70037A946 /* Parameter.h */, + B3C89E842877D0B70037A946 /* Parameters.h */, + B3C89E852877D0B70037A946 /* PixelBuffer.h */, + B3C89E7F2877D0B70037A946 /* ShaderProgram.h */, + B3C89E862877D0B70037A946 /* OpenGLContext */, + ); + path = Graphics; + sourceTree = ""; + }; + B3C89E862877D0B70037A946 /* OpenGLContext */ = { + isa = PBXGroup; + children = ( + B3C89EC52877D0B70037A946 /* GLFunctions.cpp */, + B3C89E912877D0B70037A946 /* opengl_Attributes.cpp */, + B3C89EC02877D0B70037A946 /* opengl_BufferedDrawer.cpp */, + B3C89E932877D0B70037A946 /* opengl_BufferManipulationObjectFactory.cpp */, + B3C89EC32877D0B70037A946 /* opengl_CachedFunctions.cpp */, + B3C89E892877D0B70037A946 /* opengl_ColorBufferReaderWithBufferStorage.cpp */, + B3C89E8D2877D0B70037A946 /* opengl_ColorBufferReaderWithEGLImage.cpp */, + B3C89EB72877D0B70037A946 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */, + B3C89ED52877D0B70037A946 /* opengl_ColorBufferReaderWithReadPixels.cpp */, + B3C89E8B2877D0B70037A946 /* opengl_ContextImpl.cpp */, + B3C89EC42877D0B70037A946 /* opengl_GLInfo.cpp */, + B3C89EB52877D0B70037A946 /* opengl_Parameters.cpp */, + B3C89EB42877D0B70037A946 /* opengl_TextureManipulationObjectFactory.cpp */, + B3C89EC62877D0B70037A946 /* opengl_UnbufferedDrawer.cpp */, + B3C89EB82877D0B70037A946 /* opengl_Utils.cpp */, + B3C89EBB2877D0B70037A946 /* GLFunctions.h */, + B3C89E922877D0B70037A946 /* opengl_Attributes.h */, + B3C89EC22877D0B70037A946 /* opengl_BufferedDrawer.h */, + B3C89E8E2877D0B70037A946 /* opengl_BufferManipulationObjectFactory.h */, + B3C89E942877D0B70037A946 /* opengl_CachedFunctions.h */, + B3C89EB32877D0B70037A946 /* opengl_ColorBufferReaderWithBufferStorage.h */, + B3C89E8C2877D0B70037A946 /* opengl_ColorBufferReaderWithEGLImage.h */, + B3C89EE42877D0B70037A946 /* opengl_ColorBufferReaderWithPixelBuffer.h */, + B3C89EBA2877D0B70037A946 /* opengl_ColorBufferReaderWithReadPixels.h */, + B3C89EB62877D0B70037A946 /* opengl_ContextImpl.h */, + B3C89EB92877D0B70037A946 /* opengl_GLInfo.h */, + B3C89E902877D0B70037A946 /* opengl_GraphicsDrawer.h */, + B3C89EC12877D0B70037A946 /* opengl_TextureManipulationObjectFactory.h */, + B3C89E8A2877D0B70037A946 /* opengl_UnbufferedDrawer.h */, + B3C89E8F2877D0B70037A946 /* opengl_Utils.h */, + B3C89E952877D0B70037A946 /* GLSL */, + B3C89ED62877D0B70037A946 /* GraphicBuffer */, + B3C89E872877D0B70037A946 /* mupen64plus */, + B3C89EC72877D0B70037A946 /* ThreadedOpenGl */, + B3C89EBC2877D0B70037A946 /* windows */, + ); + path = OpenGLContext; + sourceTree = ""; + }; + B3C89E872877D0B70037A946 /* mupen64plus */ = { + isa = PBXGroup; + children = ( + B3C89E882877D0B70037A946 /* mupen64plus_DisplayWindow.cpp */, + ); + path = mupen64plus; + sourceTree = ""; + }; + B3C89E952877D0B70037A946 /* GLSL */ = { + isa = PBXGroup; + children = ( + B3C89EA12877D0B70037A946 /* glsl_CombinerInputs.cpp */, + B3C89E9E2877D0B70037A946 /* glsl_CombinerProgramBuilder.cpp */, + B3C89EA52877D0B70037A946 /* glsl_CombinerProgramBuilderAccurate.cpp */, + B3C89EAE2877D0B70037A946 /* glsl_CombinerProgramBuilderCommon.cpp */, + B3C89EAD2877D0B70037A946 /* glsl_CombinerProgramBuilderFast.cpp */, + B3C89E9C2877D0B70037A946 /* glsl_CombinerProgramImpl.cpp */, + B3C89EA32877D0B70037A946 /* glsl_CombinerProgramUniformFactory.cpp */, + B3C89EA72877D0B70037A946 /* glsl_CombinerProgramUniformFactoryAccurate.cpp */, + B3C89EAB2877D0B70037A946 /* glsl_CombinerProgramUniformFactoryCommon.cpp */, + B3C89EA02877D0B70037A946 /* glsl_CombinerProgramUniformFactoryFast.cpp */, + B3C89E982877D0B70037A946 /* glsl_FXAA.cpp */, + B3C89EAC2877D0B70037A946 /* glsl_ShaderStorage.cpp */, + B3C89E9D2877D0B70037A946 /* glsl_SpecialShadersFactory.cpp */, + B3C89EAF2877D0B70037A946 /* glsl_Utils.cpp */, + B3C89E9F2877D0B70037A946 /* glsl_CombinerInputs.h */, + B3C89E9B2877D0B70037A946 /* glsl_CombinerProgramBuilder.h */, + B3C89EA92877D0B70037A946 /* glsl_CombinerProgramBuilderAccurate.h */, + B3C89E972877D0B70037A946 /* glsl_CombinerProgramBuilderCommon.h */, + B3C89E992877D0B70037A946 /* glsl_CombinerProgramBuilderFast.h */, + B3C89EA62877D0B70037A946 /* glsl_CombinerProgramImpl.h */, + B3C89E9A2877D0B70037A946 /* glsl_CombinerProgramUniformFactory.h */, + B3C89EB02877D0B70037A946 /* glsl_CombinerProgramUniformFactoryAccurate.h */, + B3C89EB22877D0B70037A946 /* glsl_CombinerProgramUniformFactoryCommon.h */, + B3C89EAA2877D0B70037A946 /* glsl_CombinerProgramUniformFactoryFast.h */, + B3C89E962877D0B70037A946 /* glsl_FXAA.h */, + B3C89EB12877D0B70037A946 /* glsl_ShaderPart.h */, + B3C89EA82877D0B70037A946 /* glsl_ShaderStorage.h */, + B3C89EA42877D0B70037A946 /* glsl_SpecialShadersFactory.h */, + B3C89EA22877D0B70037A946 /* glsl_Utils.h */, + ); + path = GLSL; + sourceTree = ""; + }; + B3C89EBC2877D0B70037A946 /* windows */ = { + isa = PBXGroup; + children = ( + B3C89EBD2877D0B70037A946 /* windows_DisplayWindow.cpp */, + B3C89EBE2877D0B70037A946 /* WindowsWGL.h */, + B3C89EBF2877D0B70037A946 /* WindowsWGL.cpp */, + ); + path = windows; + sourceTree = ""; + }; + B3C89EC72877D0B70037A946 /* ThreadedOpenGl */ = { + isa = PBXGroup; + children = ( + B3C89ED42877D0B70037A946 /* opengl_Command.cpp */, + B3C89ECB2877D0B70037A946 /* opengl_ObjectPool.cpp */, + B3C89EC82877D0B70037A946 /* opengl_WrappedFunctions.cpp */, + B3C89ED12877D0B70037A946 /* opengl_Wrapper.cpp */, + B3C89EC92877D0B70037A946 /* RingBufferPool.cpp */, + B3C89ECE2877D0B70037A946 /* atomicops.h */, + B3C89ED32877D0B70037A946 /* BlockingQueue.h */, + B3C89ECD2877D0B70037A946 /* opengl_Command.h */, + B3C89ECF2877D0B70037A946 /* opengl_ObjectPool.h */, + B3C89ED22877D0B70037A946 /* opengl_WrappedFunctions.h */, + B3C89ED02877D0B70037A946 /* opengl_Wrapper.h */, + B3C89ECA2877D0B70037A946 /* readerwriterqueue.h */, + B3C89ECC2877D0B70037A946 /* RingBufferPool.h */, + ); + path = ThreadedOpenGl; + sourceTree = ""; + }; + B3C89ED62877D0B70037A946 /* GraphicBuffer */ = { + isa = PBXGroup; + children = ( + B3C89EDD2877D0B70037A946 /* GraphicBufferWrapper.cpp */, + B3C89EE32877D0B70037A946 /* GraphicBufferWrapper.h */, + B3C89ED72877D0B70037A946 /* PrivateApi */, + B3C89EDE2877D0B70037A946 /* PublicApi */, + ); + path = GraphicBuffer; + sourceTree = ""; + }; + B3C89ED72877D0B70037A946 /* PrivateApi */ = { + isa = PBXGroup; + children = ( + B3C89EDC2877D0B70037A946 /* GraphicBuffer.cpp */, + B3C89ED92877D0B70037A946 /* libhardware.cpp */, + B3C89EDB2877D0B70037A946 /* gralloc.h */, + B3C89ED82877D0B70037A946 /* GraphicBuffer.h */, + B3C89EDA2877D0B70037A946 /* libhardware.h */, + ); + path = PrivateApi; + sourceTree = ""; + }; + B3C89EDE2877D0B70037A946 /* PublicApi */ = { + isa = PBXGroup; + children = ( + B3C89EDF2877D0B70037A946 /* android_hardware_buffer_compat.cpp */, + B3C89EE02877D0B70037A946 /* dcheck.h */, + B3C89EE12877D0B70037A946 /* check.h */, + B3C89EE22877D0B70037A946 /* android_hardware_buffer_compat.h */, + ); + path = PublicApi; + sourceTree = ""; + }; + B3C89EF42877D0B70037A946 /* GLideNUI-wtl */ = { + isa = PBXGroup; + children = ( + B3C89EF52877D0B70037A946 /* wtl-OsdPreview.h */, + B3C89EF62877D0B70037A946 /* config-osd.cpp */, + B3C89EF72877D0B70037A946 /* About.cpp */, + B3C89EF82877D0B70037A946 /* ConfigDlg.h */, + B3C89EF92877D0B70037A946 /* About.h */, + B3C89EFA2877D0B70037A946 /* FullscreenResolutions.h */, + B3C89EFB2877D0B70037A946 /* wtl-tooltip.h */, + B3C89EFC2877D0B70037A946 /* wtl-ColorButton.h */, + B3C89EFD2877D0B70037A946 /* config-overscan.h */, + B3C89EFE2877D0B70037A946 /* util */, + B3C89F082877D0B70037A946 /* Settings.h */, + B3C89F092877D0B70037A946 /* wtl-OsdButton.cpp */, + B3C89F0A2877D0B70037A946 /* config-debug.cpp */, + B3C89F0B2877D0B70037A946 /* wtl.h */, + B3C89F0C2877D0B70037A946 /* config-tab.cpp */, + B3C89F0D2877D0B70037A946 /* FontInfo.cpp */, + B3C89F0E2877D0B70037A946 /* config-overscan.cpp */, + B3C89F0F2877D0B70037A946 /* config-emulation.h */, + B3C89F102877D0B70037A946 /* Language.h */, + B3C89F112877D0B70037A946 /* config-video.h */, + B3C89F122877D0B70037A946 /* config-texture.h */, + B3C89F132877D0B70037A946 /* config-framebuffer.cpp */, + B3C89F142877D0B70037A946 /* FontInfo.h */, + B3C89F152877D0B70037A946 /* Language.cpp */, + B3C89F162877D0B70037A946 /* WTL */, + B3C89F2D2877D0B70037A946 /* GlSettings.h */, + B3C89F2E2877D0B70037A946 /* wtl-ColorButton.cpp */, + B3C89F2F2877D0B70037A946 /* IniFileClass.cpp */, + B3C89F302877D0B70037A946 /* wtl-BitmapPicture.h */, + B3C89F312877D0B70037A946 /* FileClass.cpp */, + B3C89F322877D0B70037A946 /* wtl-OsdButton.h */, + B3C89F332877D0B70037A946 /* ticpp */, + B3C89F3E2877D0B70037A946 /* GLideNUI.h */, + B3C89F3F2877D0B70037A946 /* config-emulation.cpp */, + B3C89F402877D0B70037A946 /* FileClass.h */, + B3C89F412877D0B70037A946 /* IniFileClass.h */, + B3C89F422877D0B70037A946 /* config-framebuffer.h */, + B3C89F432877D0B70037A946 /* resource.h */, + B3C89F442877D0B70037A946 /* config-texture.cpp */, + B3C89F452877D0B70037A946 /* InputDialog.cpp */, + B3C89F462877D0B70037A946 /* wtl-OsdPreview.cpp */, + B3C89F472877D0B70037A946 /* wtl-WindowFont.h */, + B3C89F482877D0B70037A946 /* config-tab.h */, + B3C89F492877D0B70037A946 /* GLideNUI.cpp */, + B3C89F4A2877D0B70037A946 /* wtl-BitmapPicture.cpp */, + B3C89F4B2877D0B70037A946 /* ConfigDlg.cpp */, + B3C89F4C2877D0B70037A946 /* config-video.cpp */, + B3C89F4D2877D0B70037A946 /* config-debug.h */, + B3C89F4E2877D0B70037A946 /* InputDialog.h */, + B3C89F4F2877D0B70037A946 /* config-osd.h */, + B3C89F502877D0B70037A946 /* Settings.cpp */, + B3C89F512877D0B70037A946 /* fullscreenresolutions_windows.cpp */, + B3C89F522877D0B70037A946 /* GLideNUI.rc */, + B3C89F532877D0B70037A946 /* GlSettings.cpp */, + ); + path = "GLideNUI-wtl"; + sourceTree = ""; + }; + B3C89EFE2877D0B70037A946 /* util */ = { + isa = PBXGroup; + children = ( + B3C89EFF2877D0B70037A946 /* StdString.cpp */, + B3C89F002877D0B70037A946 /* md5.cpp */, + B3C89F012877D0B70037A946 /* util.cpp */, + B3C89F022877D0B70037A946 /* path.h */, + B3C89F032877D0B70037A946 /* md5.h */, + B3C89F042877D0B70037A946 /* ts2lang.cpp */, + B3C89F052877D0B70037A946 /* util.h */, + B3C89F062877D0B70037A946 /* path.cpp */, + B3C89F072877D0B70037A946 /* StdString.h */, + ); + path = util; + sourceTree = ""; + }; + B3C89F162877D0B70037A946 /* WTL */ = { + isa = PBXGroup; + children = ( + B3C89F172877D0B70037A946 /* atluser.h */, + B3C89F182877D0B70037A946 /* atldwm.h */, + B3C89F192877D0B70037A946 /* atlddx.h */, + B3C89F1A2877D0B70037A946 /* atltheme.h */, + B3C89F1B2877D0B70037A946 /* atlribbon.h */, + B3C89F1C2877D0B70037A946 /* atlapp.h */, + B3C89F1D2877D0B70037A946 /* atldlgs.h */, + B3C89F1E2877D0B70037A946 /* atlwinx.h */, + B3C89F1F2877D0B70037A946 /* atlcrack.h */, + B3C89F202877D0B70037A946 /* atlframe.h */, + B3C89F212877D0B70037A946 /* atlgdi.h */, + B3C89F222877D0B70037A946 /* atlctrls.h */, + B3C89F232877D0B70037A946 /* atlctrlw.h */, + B3C89F242877D0B70037A946 /* atlresce.h */, + B3C89F252877D0B70037A946 /* atlprint.h */, + B3C89F262877D0B70037A946 /* atlscrl.h */, + B3C89F272877D0B70037A946 /* atlctrlx.h */, + B3C89F282877D0B70037A946 /* atlsplit.h */, + B3C89F292877D0B70037A946 /* atlwince.h */, + B3C89F2A2877D0B70037A946 /* atlres.h */, + B3C89F2B2877D0B70037A946 /* atlfind.h */, + B3C89F2C2877D0B70037A946 /* atlmisc.h */, + ); + path = WTL; + sourceTree = ""; + }; + B3C89F332877D0B70037A946 /* ticpp */ = { + isa = PBXGroup; + children = ( + B3C89F342877D0B70037A946 /* tinyxml.h */, + B3C89F352877D0B70037A946 /* ticppapi.h */, + B3C89F362877D0B70037A946 /* tinystr.h */, + B3C89F372877D0B70037A946 /* ticpp.h */, + B3C89F382877D0B70037A946 /* ticpp.cpp */, + B3C89F392877D0B70037A946 /* tinystr.cpp */, + B3C89F3A2877D0B70037A946 /* tinyxmlparser.cpp */, + B3C89F3B2877D0B70037A946 /* tinyxmlerror.cpp */, + B3C89F3C2877D0B70037A946 /* ticpprc.h */, + B3C89F3D2877D0B70037A946 /* tinyxml.cpp */, + ); + path = ticpp; + sourceTree = ""; + }; + B3C89F5B2877D0B70037A946 /* mupen64plus-video-paraLLEl */ = { + isa = PBXGroup; + children = ( + B3C89F5C2877D0B70037A946 /* rdp.cpp */, + B3C89F5D2877D0B70037A946 /* parallel-rdp */, + B3C8A0142877D0B80037A946 /* parallel.cpp */, + B3C8A0152877D0B80037A946 /* z64.h */, + B3C8A0162877D0B80037A946 /* rdp.hpp */, + B3C8A0172877D0B80037A946 /* Gfx #1.3.h */, + B3C8A0182877D0B80037A946 /* parallel.h */, + ); + path = "mupen64plus-video-paraLLEl"; + sourceTree = ""; + }; + B3C89F5D2877D0B70037A946 /* parallel-rdp */ = { + isa = PBXGroup; + children = ( + B3C89F5E2877D0B70037A946 /* COMMIT */, + B3C89F5F2877D0B70037A946 /* parallel-rdp */, + B3C89FA52877D0B70037A946 /* LICENSE */, + B3C89FA62877D0B70037A946 /* util */, + B3C89FBE2877D0B80037A946 /* volk */, + B3C89FC12877D0B80037A946 /* README.md */, + B3C89FC22877D0B80037A946 /* config.mk */, + B3C89FC32877D0B80037A946 /* vulkan */, + B3C89FFB2877D0B80037A946 /* .gitrepo */, + B3C89FFC2877D0B80037A946 /* vulkan-headers */, + ); + path = "parallel-rdp"; + sourceTree = ""; + }; + B3C89F5F2877D0B70037A946 /* parallel-rdp */ = { + isa = PBXGroup; + children = ( + B3C89F602877D0B70037A946 /* rdp_common.hpp */, + B3C89F612877D0B70037A946 /* rdp_renderer.hpp */, + B3C89F622877D0B70037A946 /* video_interface.cpp */, + B3C89F632877D0B70037A946 /* rdp_device.hpp */, + B3C89F642877D0B70037A946 /* luts.hpp */, + B3C89F652877D0B70037A946 /* rdp_dump_write.hpp */, + B3C89F662877D0B70037A946 /* command_ring.hpp */, + B3C89F672877D0B70037A946 /* video_interface.hpp */, + B3C89F682877D0B70037A946 /* rdp_device.cpp */, + B3C89F692877D0B70037A946 /* rdp_dump_write.cpp */, + B3C89F6A2877D0B70037A946 /* shaders */, + B3C89FA12877D0B70037A946 /* worker_thread.hpp */, + B3C89FA22877D0B70037A946 /* command_ring.cpp */, + B3C89FA32877D0B70037A946 /* rdp_data_structures.hpp */, + B3C89FA42877D0B70037A946 /* rdp_renderer.cpp */, + ); + path = "parallel-rdp"; + sourceTree = ""; + }; + B3C89F6A2877D0B70037A946 /* shaders */ = { + isa = PBXGroup; + children = ( + B3C89F6B2877D0B70037A946 /* data_structures_buffers.h */, + B3C89F6C2877D0B70037A946 /* extract_vram.comp */, + B3C89F6D2877D0B70037A946 /* load_scissor_state.h */, + B3C89F6E2877D0B70037A946 /* vi_fetch.frag */, + B3C89F6F2877D0B70037A946 /* load_span_offsets.h */, + B3C89F702877D0B70037A946 /* depth_blend.comp */, + B3C89F712877D0B70037A946 /* update_upscaled_domain_resolve.comp */, + B3C89F722877D0B70037A946 /* blender.h */, + B3C89F732877D0B70037A946 /* masked_rdram_resolve.comp */, + B3C89F742877D0B70037A946 /* noise.h */, + B3C89F752877D0B70037A946 /* load_span_setup.h */, + B3C89F762877D0B70037A946 /* vi_status.h */, + B3C89F772877D0B70037A946 /* debug.h */, + B3C89F782877D0B70037A946 /* tile_binning_combined.comp */, + B3C89F792877D0B70037A946 /* store_span_setup.h */, + B3C89F7A2877D0B70037A946 /* dither.h */, + B3C89F7B2877D0B70037A946 /* rasterizer.comp */, + B3C89F7C2877D0B70037A946 /* vi_divot.frag */, + B3C89F7D2877D0B70037A946 /* vi_debug.h */, + B3C89F7E2877D0B70037A946 /* tmem_update.comp */, + B3C89F7F2877D0B70037A946 /* update_upscaled_domain_post.comp */, + B3C89F802877D0B70037A946 /* depth_test.h */, + B3C89F812877D0B70037A946 /* shading.h */, + B3C89F822877D0B70037A946 /* clear_write_mask.comp */, + B3C89F832877D0B70037A946 /* update_upscaled_domain_pre.comp */, + B3C89F842877D0B70037A946 /* ubershader.comp */, + B3C89F852877D0B70037A946 /* interpolation.h */, + B3C89F862877D0B70037A946 /* slangmosh.hpp */, + B3C89F872877D0B70037A946 /* coverage.h */, + B3C89F882877D0B70037A946 /* vi_deinterlace.frag */, + B3C89F892877D0B70037A946 /* load_attribute_setup.h */, + B3C89F8A2877D0B70037A946 /* clamping.h */, + B3C89F8B2877D0B70037A946 /* memory_interfacing.h */, + B3C89F8C2877D0B70037A946 /* perspective.h */, + B3C89F8D2877D0B70037A946 /* vi_scale.frag */, + B3C89F8E2877D0B70037A946 /* load_depth_blend_state.h */, + B3C89F8F2877D0B70037A946 /* load_derived_setup.h */, + B3C89F902877D0B70037A946 /* binning.h */, + B3C89F912877D0B70037A946 /* combiner.h */, + B3C89F922877D0B70037A946 /* load_static_raster_state.h */, + B3C89F932877D0B70037A946 /* data_structures.h */, + B3C89F942877D0B70037A946 /* span_setup.comp */, + B3C89F952877D0B70037A946 /* texture.h */, + B3C89F962877D0B70037A946 /* vi_blend_fields.frag */, + B3C89F972877D0B70037A946 /* slangmosh.json */, + B3C89F982877D0B70037A946 /* load_triangle_setup.h */, + B3C89F992877D0B70037A946 /* vi_deinterlace.vert */, + B3C89F9A2877D0B70037A946 /* clear_super_sampled_write_mask.comp */, + B3C89F9B2877D0B70037A946 /* fullscreen.vert */, + B3C89F9C2877D0B70037A946 /* z_encode.h */, + B3C89F9D2877D0B70037A946 /* small_types.h */, + B3C89F9E2877D0B70037A946 /* fb_formats.h */, + B3C89F9F2877D0B70037A946 /* clear_indirect_buffer.comp */, + B3C89FA02877D0B70037A946 /* load_tile_info.h */, + ); + path = shaders; + sourceTree = ""; + }; + B3C89FA62877D0B70037A946 /* util */ = { + isa = PBXGroup; + children = ( + B3C89FA72877D0B70037A946 /* thread_id.cpp */, + B3C89FA82877D0B70037A946 /* hash.hpp */, + B3C89FA92877D0B70037A946 /* intrusive.hpp */, + B3C89FAA2877D0B70037A946 /* intrusive_hash_map.hpp */, + B3C89FAB2877D0B70037A946 /* logging.cpp */, + B3C89FAC2877D0B70037A946 /* read_write_lock.hpp */, + B3C89FAD2877D0B70037A946 /* aligned_alloc.hpp */, + B3C89FAE2877D0B70037A946 /* timer.cpp */, + B3C89FAF2877D0B70037A946 /* thread_name.cpp */, + B3C89FB02877D0B70037A946 /* timeline_trace_file.cpp */, + B3C89FB12877D0B70037A946 /* bitops.hpp */, + B3C89FB22877D0B70037A946 /* small_vector.hpp */, + B3C89FB32877D0B70037A946 /* intrusive_list.hpp */, + B3C89FB42877D0B70037A946 /* aligned_alloc.cpp */, + B3C89FB52877D0B80037A946 /* object_pool.hpp */, + B3C89FB62877D0B80037A946 /* timer.hpp */, + B3C89FB72877D0B80037A946 /* thread_name.hpp */, + B3C89FB82877D0B80037A946 /* timeline_trace_file.hpp */, + B3C89FB92877D0B80037A946 /* temporary_hashmap.hpp */, + B3C89FBA2877D0B80037A946 /* thread_id.hpp */, + B3C89FBB2877D0B80037A946 /* enum_cast.hpp */, + B3C89FBC2877D0B80037A946 /* stack_allocator.hpp */, + B3C89FBD2877D0B80037A946 /* logging.hpp */, + ); + path = util; + sourceTree = ""; + }; + B3C89FBE2877D0B80037A946 /* volk */ = { + isa = PBXGroup; + children = ( + B3C89FBF2877D0B80037A946 /* volk.c */, + B3C89FC02877D0B80037A946 /* volk.h */, + ); + path = volk; + sourceTree = ""; + }; + B3C89FC32877D0B80037A946 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3C89FC42877D0B80037A946 /* render_pass.cpp */, + B3C89FC52877D0B80037A946 /* buffer_pool.cpp */, + B3C89FC62877D0B80037A946 /* query_pool.hpp */, + B3C89FC72877D0B80037A946 /* fence.hpp */, + B3C89FC82877D0B80037A946 /* semaphore.hpp */, + B3C89FC92877D0B80037A946 /* event_manager.cpp */, + B3C89FCA2877D0B80037A946 /* image.cpp */, + B3C89FCB2877D0B80037A946 /* texture_format.hpp */, + B3C89FCC2877D0B80037A946 /* wsi_timing.cpp */, + B3C89FCD2877D0B80037A946 /* quirks.hpp */, + B3C89FCE2877D0B80037A946 /* memory_allocator.cpp */, + B3C89FCF2877D0B80037A946 /* device_fossilize.cpp */, + B3C89FD02877D0B80037A946 /* vulkan_common.hpp */, + B3C89FD12877D0B80037A946 /* context.cpp */, + B3C89FD22877D0B80037A946 /* wsi.cpp */, + B3C89FD32877D0B80037A946 /* command_pool.cpp */, + B3C89FD42877D0B80037A946 /* cookie.hpp */, + B3C89FD52877D0B80037A946 /* pipeline_event.cpp */, + B3C89FD62877D0B80037A946 /* descriptor_set.cpp */, + B3C89FD72877D0B80037A946 /* device.cpp */, + B3C89FD82877D0B80037A946 /* sampler.cpp */, + B3C89FD92877D0B80037A946 /* command_buffer.cpp */, + B3C89FDA2877D0B80037A946 /* semaphore_manager.cpp */, + B3C89FDB2877D0B80037A946 /* fence_manager.cpp */, + B3C89FDC2877D0B80037A946 /* shader.cpp */, + B3C89FDD2877D0B80037A946 /* buffer.cpp */, + B3C89FDE2877D0B80037A946 /* limits.hpp */, + B3C89FDF2877D0B80037A946 /* command_pool.hpp */, + B3C89FE02877D0B80037A946 /* context.hpp */, + B3C89FE12877D0B80037A946 /* wsi.hpp */, + B3C89FE22877D0B80037A946 /* cookie.cpp */, + B3C89FE32877D0B80037A946 /* pipeline_event.hpp */, + B3C89FE42877D0B80037A946 /* descriptor_set.hpp */, + B3C89FE52877D0B80037A946 /* device.hpp */, + B3C89FE62877D0B80037A946 /* semaphore_manager.hpp */, + B3C89FE72877D0B80037A946 /* command_buffer.hpp */, + B3C89FE82877D0B80037A946 /* sampler.hpp */, + B3C89FE92877D0B80037A946 /* fence_manager.hpp */, + B3C89FEA2877D0B80037A946 /* buffer.hpp */, + B3C89FEB2877D0B80037A946 /* shader.hpp */, + B3C89FEC2877D0B80037A946 /* render_pass.hpp */, + B3C89FED2877D0B80037A946 /* type_to_string.hpp */, + B3C89FEE2877D0B80037A946 /* vulkan_headers.hpp */, + B3C89FEF2877D0B80037A946 /* buffer_pool.hpp */, + B3C89FF02877D0B80037A946 /* query_pool.cpp */, + B3C89FF12877D0B80037A946 /* fence.cpp */, + B3C89FF22877D0B80037A946 /* semaphore.cpp */, + B3C89FF32877D0B80037A946 /* vulkan_prerotate.hpp */, + B3C89FF42877D0B80037A946 /* event_manager.hpp */, + B3C89FF52877D0B80037A946 /* image.hpp */, + B3C89FF62877D0B80037A946 /* renderdoc_capture.cpp */, + B3C89FF72877D0B80037A946 /* format.hpp */, + B3C89FF82877D0B80037A946 /* texture_format.cpp */, + B3C89FF92877D0B80037A946 /* wsi_timing.hpp */, + B3C89FFA2877D0B80037A946 /* memory_allocator.hpp */, + ); + path = vulkan; + sourceTree = ""; + }; + B3C89FFC2877D0B80037A946 /* vulkan-headers */ = { + isa = PBXGroup; + children = ( + B3C89FFD2877D0B80037A946 /* include */, + ); + path = "vulkan-headers"; + sourceTree = ""; + }; + B3C89FFD2877D0B80037A946 /* include */ = { + isa = PBXGroup; + children = ( + B3C89FFE2877D0B80037A946 /* vulkan */, + ); + path = include; + sourceTree = ""; + }; + B3C89FFE2877D0B80037A946 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3C89FFF2877D0B80037A946 /* vk_layer.h */, + B3C8A0002877D0B80037A946 /* vk_icd.h */, + B3C8A0012877D0B80037A946 /* vulkan_vi.h */, + B3C8A0022877D0B80037A946 /* vulkan.h */, + B3C8A0032877D0B80037A946 /* vk_platform.h */, + B3C8A0042877D0B80037A946 /* vulkan_fuchsia.h */, + B3C8A0052877D0B80037A946 /* vulkan_wayland.h */, + B3C8A0062877D0B80037A946 /* vulkan_win32.h */, + B3C8A0072877D0B80037A946 /* vulkan_macos.h */, + B3C8A0082877D0B80037A946 /* vulkan_xlib_xrandr.h */, + B3C8A0092877D0B80037A946 /* vulkan_xcb.h */, + B3C8A00A2877D0B80037A946 /* vulkan_ggp.h */, + B3C8A00B2877D0B80037A946 /* vulkan_xlib.h */, + B3C8A00C2877D0B80037A946 /* vulkan_directfb.h */, + B3C8A00D2877D0B80037A946 /* vulkan_ios.h */, + B3C8A00E2877D0B80037A946 /* vulkan_core.h */, + B3C8A00F2877D0B80037A946 /* vk_sdk_platform.h */, + B3C8A0102877D0B80037A946 /* vulkan_screen.h */, + B3C8A0112877D0B80037A946 /* vulkan_android.h */, + B3C8A0122877D0B80037A946 /* vulkan_metal.h */, + B3C8A0132877D0B80037A946 /* vulkan_beta.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B3C8A01B2877D0B80037A946 /* mupen64plus-rsp-hle */ = { + isa = PBXGroup; + children = ( + B3C8A01C2877D0B80037A946 /* INSTALL */, + B3C8A01D2877D0B80037A946 /* LICENSES */, + B3C8A01E2877D0B80037A946 /* projects */, + B3C8A0232877D0B80037A946 /* RELEASE */, + B3C8A0242877D0B80037A946 /* appveyor.yml */, + B3C8A0252877D0B80037A946 /* .gitignore */, + B3C8A0262877D0B80037A946 /* .github */, + B3C8A0292877D0B80037A946 /* .gitattributes */, + B3C8A02A2877D0B80037A946 /* .gitrepo */, + B3C8A02B2877D0B80037A946 /* .travis.yml */, + B3C8A02C2877D0B80037A946 /* src */, + ); + path = "mupen64plus-rsp-hle"; + sourceTree = ""; + }; + B3C8A01E2877D0B80037A946 /* projects */ = { + isa = PBXGroup; + children = ( + B3C8A01F2877D0B80037A946 /* msvc */, + B3C8A0212877D0B80037A946 /* unix */, + ); + path = projects; + sourceTree = ""; + }; + B3C8A01F2877D0B80037A946 /* msvc */ = { + isa = PBXGroup; + children = ( + B3C8A0202877D0B80037A946 /* mupen64plus-rsp-hle.vcxproj */, + ); + path = msvc; + sourceTree = ""; + }; + B3C8A0212877D0B80037A946 /* unix */ = { + isa = PBXGroup; + children = ( + B3C8A0222877D0B80037A946 /* Makefile */, + ); + path = unix; + sourceTree = ""; + }; + B3C8A0262877D0B80037A946 /* .github */ = { + isa = PBXGroup; + children = ( + B3C8A0272877D0B80037A946 /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B3C8A0272877D0B80037A946 /* workflows */ = { + isa = PBXGroup; + children = ( + B3C8A0282877D0B80037A946 /* build.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B3C8A02C2877D0B80037A946 /* src */ = { + isa = PBXGroup; + children = ( + B3C8A02D2877D0B80037A946 /* alist_audio.c */, + B3C8A0402877D0B80037A946 /* alist_naudio.c */, + B3C8A03B2877D0B80037A946 /* alist_nead.c */, + B3C8A03F2877D0B80037A946 /* alist.c */, + B3C8A0472877D0B80037A946 /* audio.c */, + B3C8A03C2877D0B80037A946 /* cicx105.c */, + B3C8A0332877D0B80037A946 /* hle.c */, + B3C8A0392877D0B80037A946 /* hvqm.c */, + B3C8A02E2877D0B80037A946 /* jpeg.c */, + B3C8A02F2877D0B80037A946 /* memory.c */, + B3C8A0452877D0B80037A946 /* mp3.c */, + B3C8A0372877D0B80037A946 /* musyx.c */, + B3C8A03A2877D0B80037A946 /* osal_dynamiclib_unix.c */, + B3C8A0442877D0B80037A946 /* osal_dynamiclib_win32.c */, + B3C8A0412877D0B80037A946 /* plugin.c */, + B3C8A0352877D0B80037A946 /* re2.c */, + B3C8A0302877D0B80037A946 /* alist.h */, + B3C8A0312877D0B80037A946 /* arithmetics.h */, + B3C8A0382877D0B80037A946 /* audio.h */, + B3C8A03D2877D0B80037A946 /* common.h */, + B3C8A0322877D0B80037A946 /* hle_external.h */, + B3C8A0362877D0B80037A946 /* hle_internal.h */, + B3C8A0432877D0B80037A946 /* hle.h */, + B3C8A0422877D0B80037A946 /* memory.h */, + B3C8A0342877D0B80037A946 /* osal_dynamiclib.h */, + B3C8A0462877D0B80037A946 /* ucodes.h */, + B3C8A03E2877D0B80037A946 /* rsp_api_export.ver */, + ); + path = src; + sourceTree = ""; + }; + B3C8A0482877D0B80037A946 /* libretro */ = { + isa = PBXGroup; + children = ( + B3C8A0492877D0B80037A946 /* libretro.c */, + B3C8A04A2877D0B80037A946 /* libretro_perf.h */, + B3C8A04B2877D0B80037A946 /* libretro_private.h */, + B3C8A04C2877D0B80037A946 /* libretro_memory.h */, + B3C8A04D2877D0B80037A946 /* libretro_core_options.h */, + B3C8A04E2877D0B80037A946 /* link.T */, + B3C8A04F2877D0B80037A946 /* jni */, + ); + path = libretro; + sourceTree = ""; + }; + B3C8A04F2877D0B80037A946 /* jni */ = { + isa = PBXGroup; + children = ( + B3C8A0502877D0B80037A946 /* Android.mk */, + B3C8A0512877D0B80037A946 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3C8A0522877D0B80037A946 /* mupen64plus-rsp-paraLLEl */ = { + isa = PBXGroup; + children = ( + B3C8A0532877D0B80037A946 /* build_android_aarch64.sh */, + B3C8A0542877D0B80037A946 /* compare_test_results.sh */, + B3C8A0552877D0B80037A946 /* lightning */, + B3C8A13C2877D0B80037A946 /* LICENSE.MIT */, + B3C8A13D2877D0B80037A946 /* debug_jit.hpp */, + B3C8A13E2877D0B80037A946 /* CMakeLists.txt */, + B3C8A13F2877D0B80037A946 /* LICENSE */, + B3C8A1402877D0B80037A946 /* parallel.cpp */, + B3C8A1412877D0B80037A946 /* android_fuzz_runner.sh */, + B3C8A1422877D0B80037A946 /* llvm_jit.cpp */, + B3C8A1432877D0B80037A946 /* rsp_jit.hpp */, + B3C8A1442877D0B80037A946 /* android_test_runner.sh */, + B3C8A1452877D0B80037A946 /* rsp_disasm.hpp */, + B3C8A1462877D0B80037A946 /* build_native.sh */, + B3C8A1472877D0B80037A946 /* jit_allocator.cpp */, + B3C8A1482877D0B80037A946 /* rsp_1.1.h */, + B3C8A1492877D0B80037A946 /* cpu_state.hpp */, + B3C8A14A2877D0B80037A946 /* debug-toolchain */, + B3C8A18E2877D0B80037A946 /* debug_rsp.cpp */, + B3C8A18F2877D0B80037A946 /* LICENSE.LESSER */, + B3C8A1902877D0B80037A946 /* rsp_jit.cpp */, + B3C8A1912877D0B80037A946 /* CREDITS.txt */, + B3C8A1922877D0B80037A946 /* rsp_op.hpp */, + B3C8A1932877D0B80037A946 /* format_all.sh */, + B3C8A1942877D0B80037A946 /* rsp_disasm.cpp */, + B3C8A1952877D0B80037A946 /* .gitignore */, + B3C8A1962877D0B80037A946 /* state.hpp */, + B3C8A1972877D0B80037A946 /* jit_allocator.hpp */, + B3C8A1982877D0B80037A946 /* arch */, + B3C8A1B82877D0B80037A946 /* .clang-format */, + B3C8A1B92877D0B80037A946 /* rsp_vu_fuzzer.cpp */, + B3C8A1BA2877D0B80037A946 /* .gitrepo */, + B3C8A1BB2877D0B80037A946 /* debug_rsp.hpp */, + B3C8A1BC2877D0B80037A946 /* rsp */, + B3C8A1C52877D0B80037A946 /* win32 */, + B3C8A1DB2877D0B90037A946 /* debug_jit.cpp */, + B3C8A1DC2877D0B90037A946 /* main.cpp */, + B3C8A1DD2877D0B90037A946 /* llvm_jit.hpp */, + ); + path = "mupen64plus-rsp-paraLLEl"; + sourceTree = ""; + }; + B3C8A0552877D0B80037A946 /* lightning */ = { + isa = PBXGroup; + children = ( + B3C8A0562877D0B80037A946 /* configure.ac */, + B3C8A0572877D0B80037A946 /* ChangeLog */, + B3C8A0582877D0B80037A946 /* AUTHORS */, + B3C8A0592877D0B80037A946 /* include */, + B3C8A06B2877D0B80037A946 /* COPYING.LESSER */, + B3C8A06C2877D0B80037A946 /* README */, + B3C8A06D2877D0B80037A946 /* TODO */, + B3C8A06E2877D0B80037A946 /* COPYING.DOC */, + B3C8A06F2877D0B80037A946 /* Makefile.am */, + B3C8A0702877D0B80037A946 /* lightning.pc.in */, + B3C8A0712877D0B80037A946 /* COPYING */, + B3C8A0722877D0B80037A946 /* NEWS */, + B3C8A0732877D0B80037A946 /* .gitignore */, + B3C8A0742877D0B80037A946 /* size.c */, + B3C8A0752877D0B80037A946 /* .gitattributes */, + B3C8A0762877D0B80037A946 /* lib */, + B3C8A0AE2877D0B80037A946 /* m4 */, + B3C8A0B02877D0B80037A946 /* .gitrepo */, + B3C8A0B12877D0B80037A946 /* doc */, + B3C8A0BE2877D0B80037A946 /* THANKS */, + B3C8A0BF2877D0B80037A946 /* check */, + ); + path = lightning; + sourceTree = ""; + }; + B3C8A0592877D0B80037A946 /* include */ = { + isa = PBXGroup; + children = ( + B3C8A05A2877D0B80037A946 /* lightning */, + B3C8A0682877D0B80037A946 /* lightning.h */, + B3C8A0692877D0B80037A946 /* Makefile.am */, + B3C8A06A2877D0B80037A946 /* lightning.h.in */, + ); + path = include; + sourceTree = ""; + }; + B3C8A05A2877D0B80037A946 /* lightning */ = { + isa = PBXGroup; + children = ( + B3C8A05B2877D0B80037A946 /* jit_aarch64.h */, + B3C8A05C2877D0B80037A946 /* jit_arm.h */, + B3C8A05D2877D0B80037A946 /* jit_riscv.h */, + B3C8A05E2877D0B80037A946 /* jit_s390.h */, + B3C8A05F2877D0B80037A946 /* jit_x86.h */, + B3C8A0602877D0B80037A946 /* Makefile.am */, + B3C8A0612877D0B80037A946 /* jit_alpha.h */, + B3C8A0622877D0B80037A946 /* jit_ppc.h */, + B3C8A0632877D0B80037A946 /* jit_hppa.h */, + B3C8A0642877D0B80037A946 /* jit_private.h */, + B3C8A0652877D0B80037A946 /* jit_mips.h */, + B3C8A0662877D0B80037A946 /* jit_ia64.h */, + B3C8A0672877D0B80037A946 /* jit_sparc.h */, + ); + path = lightning; + sourceTree = ""; + }; + B3C8A0762877D0B80037A946 /* lib */ = { + isa = PBXGroup; + children = ( + B3C8A0972877D0B80037A946 /* jit_aarch64-cpu.c */, + B3C8A09E2877D0B80037A946 /* jit_aarch64-fpu.c */, + B3C8A0942877D0B80037A946 /* jit_aarch64-sz.c */, + B3C8A09A2877D0B80037A946 /* jit_aarch64.c */, + B3C8A07A2877D0B80037A946 /* jit_alpha-cpu.c */, + B3C8A0782877D0B80037A946 /* jit_alpha-fpu.c */, + B3C8A07F2877D0B80037A946 /* jit_alpha-sz.c */, + B3C8A07E2877D0B80037A946 /* jit_alpha.c */, + B3C8A0902877D0B80037A946 /* jit_arm-cpu.c */, + B3C8A0822877D0B80037A946 /* jit_arm-swf.c */, + B3C8A0A52877D0B80037A946 /* jit_arm-sz.c */, + B3C8A0A72877D0B80037A946 /* jit_arm-vfp.c */, + B3C8A0A62877D0B80037A946 /* jit_arm.c */, + B3C8A0872877D0B80037A946 /* jit_disasm.c */, + B3C8A0912877D0B80037A946 /* jit_hppa-cpu.c */, + B3C8A0812877D0B80037A946 /* jit_hppa-fpu.c */, + B3C8A08B2877D0B80037A946 /* jit_hppa-sz.c */, + B3C8A07D2877D0B80037A946 /* jit_hppa.c */, + B3C8A0932877D0B80037A946 /* jit_ia64-cpu.c */, + B3C8A0832877D0B80037A946 /* jit_ia64-fpu.c */, + B3C8A08F2877D0B80037A946 /* jit_ia64-sz.c */, + B3C8A08C2877D0B80037A946 /* jit_ia64.c */, + B3C8A0802877D0B80037A946 /* jit_memory.c */, + B3C8A0A32877D0B80037A946 /* jit_mips-cpu.c */, + B3C8A0A92877D0B80037A946 /* jit_mips-fpu.c */, + B3C8A08D2877D0B80037A946 /* jit_mips-sz.c */, + B3C8A0852877D0B80037A946 /* jit_mips.c */, + B3C8A0AA2877D0B80037A946 /* jit_names.c */, + B3C8A0992877D0B80037A946 /* jit_note.c */, + B3C8A08A2877D0B80037A946 /* jit_ppc-cpu.c */, + B3C8A0862877D0B80037A946 /* jit_ppc-fpu.c */, + B3C8A0AB2877D0B80037A946 /* jit_ppc-sz.c */, + B3C8A07C2877D0B80037A946 /* jit_ppc.c */, + B3C8A0A12877D0B80037A946 /* jit_print.c */, + B3C8A09C2877D0B80037A946 /* jit_rewind.c */, + B3C8A09D2877D0B80037A946 /* jit_riscv-cpu.c */, + B3C8A0962877D0B80037A946 /* jit_riscv-fpu.c */, + B3C8A0772877D0B80037A946 /* jit_riscv-sz.c */, + B3C8A0A22877D0B80037A946 /* jit_riscv.c */, + B3C8A08E2877D0B80037A946 /* jit_s390-cpu.c */, + B3C8A0882877D0B80037A946 /* jit_s390-fpu.c */, + B3C8A0A82877D0B80037A946 /* jit_s390-sz.c */, + B3C8A0A02877D0B80037A946 /* jit_s390.c */, + B3C8A0842877D0B80037A946 /* jit_size.c */, + B3C8A07B2877D0B80037A946 /* jit_sparc-cpu.c */, + B3C8A0792877D0B80037A946 /* jit_sparc-fpu.c */, + B3C8A0922877D0B80037A946 /* jit_sparc-sz.c */, + B3C8A0892877D0B80037A946 /* jit_sparc.c */, + B3C8A09F2877D0B80037A946 /* jit_x86-cpu.c */, + B3C8A0A42877D0B80037A946 /* jit_x86-sse.c */, + B3C8A0982877D0B80037A946 /* jit_x86-sz.c */, + B3C8A09B2877D0B80037A946 /* jit_x86-x87.c */, + B3C8A0AC2877D0B80037A946 /* jit_x86.c */, + B3C8A0AD2877D0B80037A946 /* lightning.c */, + B3C8A0952877D0B80037A946 /* Makefile.am */, + ); + path = lib; + sourceTree = ""; + }; + B3C8A0AE2877D0B80037A946 /* m4 */ = { + isa = PBXGroup; + children = ( + B3C8A0AF2877D0B80037A946 /* .gitkeep */, + ); + path = m4; + sourceTree = ""; + }; + B3C8A0B12877D0B80037A946 /* doc */ = { + isa = PBXGroup; + children = ( + B3C8A0B22877D0B80037A946 /* fact.c */, + B3C8A0B32877D0B80037A946 /* printf.c */, + B3C8A0B42877D0B80037A946 /* version.texi */, + B3C8A0B52877D0B80037A946 /* rfib.c */, + B3C8A0B62877D0B80037A946 /* rpn.c */, + B3C8A0B72877D0B80037A946 /* Makefile.am */, + B3C8A0B82877D0B80037A946 /* incr.c */, + B3C8A0B92877D0B80037A946 /* .gitignore */, + B3C8A0BA2877D0B80037A946 /* ifib.c */, + B3C8A0BB2877D0B80037A946 /* lightning.texi */, + B3C8A0BC2877D0B80037A946 /* .cvsignore */, + B3C8A0BD2877D0B80037A946 /* body.texi */, + ); + path = doc; + sourceTree = ""; + }; + B3C8A0BF2877D0B80037A946 /* check */ = { + isa = PBXGroup; + children = ( + B3C8A0C02877D0B80037A946 /* check.arm.sh */, + B3C8A0C12877D0B80037A946 /* range.ok */, + B3C8A0C22877D0B80037A946 /* ldsti.ok */, + B3C8A0C32877D0B80037A946 /* call.tst */, + B3C8A0C42877D0B80037A946 /* alu_rsh.ok */, + B3C8A0C52877D0B80037A946 /* carry.tst */, + B3C8A0C62877D0B80037A946 /* cvt.ok */, + B3C8A0C72877D0B80037A946 /* stack.tst */, + B3C8A0C82877D0B80037A946 /* jmpr.ok */, + B3C8A0C92877D0B80037A946 /* alu_and.ok */, + B3C8A0CA2877D0B80037A946 /* float.ok */, + B3C8A0CB2877D0B80037A946 /* varargs.ok */, + B3C8A0CC2877D0B80037A946 /* alu_neg.tst */, + B3C8A0CD2877D0B80037A946 /* tramp.ok */, + B3C8A0CE2877D0B80037A946 /* alu_lsh.tst */, + B3C8A0CF2877D0B80037A946 /* ldstxr-c.ok */, + B3C8A0D02877D0B80037A946 /* fib.ok */, + B3C8A0D12877D0B80037A946 /* ldstxr-c.tst */, + B3C8A0D22877D0B80037A946 /* bp.ok */, + B3C8A0D32877D0B80037A946 /* check.swf.sh */, + B3C8A0D42877D0B80037A946 /* alu_com.tst */, + B3C8A0D52877D0B80037A946 /* alu_mul.tst */, + B3C8A0D62877D0B80037A946 /* ldstxi-c.tst */, + B3C8A0D72877D0B80037A946 /* branch.tst */, + B3C8A0D82877D0B80037A946 /* check.nodata.sh */, + B3C8A0D92877D0B80037A946 /* ldstr-c.ok */, + B3C8A0DA2877D0B80037A946 /* alux_add.ok */, + B3C8A0DB2877D0B80037A946 /* branch.ok */, + B3C8A0DC2877D0B80037A946 /* allocai.tst */, + B3C8A0DD2877D0B80037A946 /* ldstxi.ok */, + B3C8A0DE2877D0B80037A946 /* alu_rem.ok */, + B3C8A0DF2877D0B80037A946 /* fop_abs.ok */, + B3C8A0E02877D0B80037A946 /* ccall.c */, + B3C8A0E12877D0B80037A946 /* bp.tst */, + B3C8A0E22877D0B80037A946 /* alu_sub.ok */, + B3C8A0E32877D0B80037A946 /* carry.ok */, + B3C8A0E42877D0B80037A946 /* clobber.tst */, + B3C8A0E52877D0B80037A946 /* check.arm.swf.sh */, + B3C8A0E62877D0B80037A946 /* alu_xor.ok */, + B3C8A0E72877D0B80037A946 /* alu_rsb.ok */, + B3C8A0E82877D0B80037A946 /* run-test */, + B3C8A0E92877D0B80037A946 /* va_list.tst */, + B3C8A0EA2877D0B80037A946 /* put.ok */, + B3C8A0EB2877D0B80037A946 /* alux_sub.tst */, + B3C8A0EC2877D0B80037A946 /* fop_sqrt.tst */, + B3C8A0ED2877D0B80037A946 /* setcode.c */, + B3C8A0EE2877D0B80037A946 /* ret.tst */, + B3C8A0EF2877D0B80037A946 /* alu_lsh.ok */, + B3C8A0F02877D0B80037A946 /* qalu.inc */, + B3C8A0F12877D0B80037A946 /* va_list.ok */, + B3C8A0F22877D0B80037A946 /* allocar.ok */, + B3C8A0F32877D0B80037A946 /* ldstxi.tst */, + B3C8A0F42877D0B80037A946 /* alu_mul.ok */, + B3C8A0F52877D0B80037A946 /* qalu_div.tst */, + B3C8A0F62877D0B80037A946 /* align.ok */, + B3C8A0F72877D0B80037A946 /* alu_rsh.tst */, + B3C8A0F82877D0B80037A946 /* add.ok */, + B3C8A0F92877D0B80037A946 /* fop_sqrt.ok */, + B3C8A0FA2877D0B80037A946 /* ldsti.tst */, + B3C8A0FB2877D0B80037A946 /* rpn.ok */, + B3C8A0FC2877D0B80037A946 /* qalu_mul.ok */, + B3C8A0FD2877D0B80037A946 /* self.c */, + B3C8A0FE2877D0B80037A946 /* range.tst */, + B3C8A0FF2877D0B80037A946 /* jmpr.tst */, + B3C8A1002877D0B80037A946 /* check.x87.sh */, + B3C8A1012877D0B80037A946 /* alu_com.ok */, + B3C8A1022877D0B80037A946 /* alux_add.tst */, + B3C8A1032877D0B80037A946 /* Makefile.am */, + B3C8A1042877D0B80037A946 /* allocai.ok */, + B3C8A1052877D0B80037A946 /* alu_add.tst */, + B3C8A1062877D0B80037A946 /* ldstr.tst */, + B3C8A1072877D0B80037A946 /* call.ok */, + B3C8A1082877D0B80037A946 /* 3to2.ok */, + B3C8A1092877D0B80037A946 /* rpn.tst */, + B3C8A10A2877D0B80037A946 /* ldstxr.tst */, + B3C8A10B2877D0B80037A946 /* alu_rsb.tst */, + B3C8A10C2877D0B80037A946 /* alu_sub.tst */, + B3C8A10D2877D0B80037A946 /* cva_list.c */, + B3C8A10E2877D0B80037A946 /* divi.ok */, + B3C8A10F2877D0B80037A946 /* ldstr-c.tst */, + B3C8A1102877D0B80037A946 /* alux_sub.ok */, + B3C8A1112877D0B80037A946 /* ldst.inc */, + B3C8A1122877D0B80037A946 /* add.tst */, + B3C8A1132877D0B80037A946 /* check.sh */, + B3C8A1142877D0B80037A946 /* ret.ok */, + B3C8A1152877D0B80037A946 /* qalu_mul.tst */, + B3C8A1162877D0B80037A946 /* check.x87.nodata.sh */, + B3C8A1172877D0B80037A946 /* alu_rem.tst */, + B3C8A1182877D0B80037A946 /* alu_or.tst */, + B3C8A1192877D0B80037A946 /* alu_neg.ok */, + B3C8A11A2877D0B80037A946 /* alu_and.tst */, + B3C8A11B2877D0B80037A946 /* hton.tst */, + B3C8A11C2877D0B80037A946 /* allocar.tst */, + B3C8A11D2877D0B80037A946 /* hton.ok */, + B3C8A11E2877D0B80037A946 /* qalu_div.ok */, + B3C8A11F2877D0B80037A946 /* fib.tst */, + B3C8A1202877D0B80037A946 /* alu_add.ok */, + B3C8A1212877D0B80037A946 /* alu.inc */, + B3C8A1222877D0B80037A946 /* put.tst */, + B3C8A1232877D0B80037A946 /* alu_or.ok */, + B3C8A1242877D0B80037A946 /* divi.tst */, + B3C8A1252877D0B80037A946 /* ldstxr.ok */, + B3C8A1262877D0B80037A946 /* ctramp.c */, + B3C8A1272877D0B80037A946 /* alu_div.ok */, + B3C8A1282877D0B80037A946 /* check.arm4.swf.sh */, + B3C8A1292877D0B80037A946 /* clobber.ok */, + B3C8A12A2877D0B80037A946 /* nodata.c */, + B3C8A12B2877D0B80037A946 /* align.tst */, + B3C8A12C2877D0B80037A946 /* cvt.tst */, + B3C8A12D2877D0B80037A946 /* ranger.tst */, + B3C8A12E2877D0B80037A946 /* ldstr.ok */, + B3C8A12F2877D0B80037A946 /* carg.c */, + B3C8A1302877D0B80037A946 /* alu_xor.tst */, + B3C8A1312877D0B80037A946 /* fop_abs.tst */, + B3C8A1322877D0B80037A946 /* float.tst */, + B3C8A1332877D0B80037A946 /* tramp.tst */, + B3C8A1342877D0B80037A946 /* varargs.tst */, + B3C8A1352877D0B80037A946 /* ldstxi-c.ok */, + B3C8A1362877D0B80037A946 /* all.tst */, + B3C8A1372877D0B80037A946 /* alu_div.tst */, + B3C8A1382877D0B80037A946 /* lightning.c */, + B3C8A1392877D0B80037A946 /* stack.ok */, + B3C8A13A2877D0B80037A946 /* 3to2.tst */, + B3C8A13B2877D0B80037A946 /* ranger.ok */, + ); + path = check; + sourceTree = ""; + }; + B3C8A14A2877D0B80037A946 /* debug-toolchain */ = { + isa = PBXGroup; + children = ( + B3C8A14B2877D0B80037A946 /* sw-unaligned.s */, + B3C8A14C2877D0B80037A946 /* lw-unaligned-in-branch-delay.s */, + B3C8A14D2877D0B80037A946 /* sh-unaligned.s */, + B3C8A14E2877D0B80037A946 /* lbu.s */, + B3C8A14F2877D0B80037A946 /* and.s */, + B3C8A1502877D0B80037A946 /* lw-unaligned.s */, + B3C8A1512877D0B80037A946 /* andi.s */, + B3C8A1522877D0B80037A946 /* delay-slot-before-break.s */, + B3C8A1532877D0B80037A946 /* lh-unaligned.s */, + B3C8A1542877D0B80037A946 /* jal.s */, + B3C8A1552877D0B80037A946 /* sh.s */, + B3C8A1562877D0B80037A946 /* cop0.s */, + B3C8A1572877D0B80037A946 /* sb.s */, + B3C8A1582877D0B80037A946 /* blez.s */, + B3C8A1592877D0B80037A946 /* jal-into-indirect-delay-slot.s */, + B3C8A15A2877D0B80037A946 /* lhu-unaligned.s */, + B3C8A15B2877D0B80037A946 /* beq-impossible-delay-slot-both-taken.s */, + B3C8A15C2877D0B80037A946 /* unconditional-delay-slot-before-break.s */, + B3C8A15D2877D0B80037A946 /* Makefile */, + B3C8A15E2877D0B80037A946 /* srlv.s */, + B3C8A15F2877D0B80037A946 /* lhu.s */, + B3C8A1602877D0B80037A946 /* xori.s */, + B3C8A1612877D0B80037A946 /* lui.s */, + B3C8A1622877D0B80037A946 /* bug-shl-into-branch.s */, + B3C8A1632877D0B80037A946 /* slt.s */, + B3C8A1642877D0B80037A946 /* add.s */, + B3C8A1652877D0B80037A946 /* sw.s */, + B3C8A1662877D0B80037A946 /* sub.s */, + B3C8A1672877D0B80037A946 /* delay-slot-before-new-block-not-taken.s */, + B3C8A1682877D0B80037A946 /* bgtz.s */, + B3C8A1692877D0B80037A946 /* sltiu.s */, + B3C8A16A2877D0B80037A946 /* rsp-mips.ld */, + B3C8A16B2877D0B80037A946 /* start.s */, + B3C8A16C2877D0B80037A946 /* jalr.s */, + B3C8A16D2877D0B80037A946 /* sll.s */, + B3C8A16E2877D0B80037A946 /* bltz.s */, + B3C8A16F2877D0B80037A946 /* sllv.s */, + B3C8A1702877D0B80037A946 /* bltzal.s */, + B3C8A1712877D0B80037A946 /* cop2-vector.s */, + B3C8A1722877D0B80037A946 /* Makefile.mips */, + B3C8A1732877D0B80037A946 /* bgezal.s */, + B3C8A1742877D0B80037A946 /* main.c */, + B3C8A1752877D0B80037A946 /* delay-slot-before-new-block-illegal.s */, + B3C8A1762877D0B80037A946 /* or.s */, + B3C8A1772877D0B80037A946 /* lw.s */, + B3C8A1782877D0B80037A946 /* cop2-ls.s */, + B3C8A1792877D0B80037A946 /* ori.s */, + B3C8A17A2877D0B80037A946 /* srl.s */, + B3C8A17B2877D0B80037A946 /* jr.s */, + B3C8A17C2877D0B80037A946 /* bne.s */, + B3C8A17D2877D0B80037A946 /* cop2-basic.s */, + B3C8A17E2877D0B80037A946 /* j.s */, + B3C8A17F2877D0B80037A946 /* delay-slot-before-new-block.s */, + B3C8A1802877D0B80037A946 /* beq-impossible-delay-slot-second-taken.s */, + B3C8A1812877D0B80037A946 /* addi.s */, + B3C8A1822877D0B80037A946 /* sltu.s */, + B3C8A1832877D0B80037A946 /* lb.s */, + B3C8A1842877D0B80037A946 /* beq-impossible-delay-slot-first-taken.s */, + B3C8A1852877D0B80037A946 /* lh.s */, + B3C8A1862877D0B80037A946 /* sra.s */, + B3C8A1872877D0B80037A946 /* rsp-mips.h */, + B3C8A1882877D0B80037A946 /* nor.s */, + B3C8A1892877D0B80037A946 /* bgez.s */, + B3C8A18A2877D0B80037A946 /* xor.s */, + B3C8A18B2877D0B80037A946 /* rsp-mips.s */, + B3C8A18C2877D0B80037A946 /* slti.s */, + B3C8A18D2877D0B80037A946 /* srav.s */, + ); + path = "debug-toolchain"; + sourceTree = ""; + }; + B3C8A1982877D0B80037A946 /* arch */ = { + isa = PBXGroup; + children = ( + B3C8A1992877D0B80037A946 /* simd */, + ); + path = arch; + sourceTree = ""; + }; + B3C8A1992877D0B80037A946 /* simd */ = { + isa = PBXGroup; + children = ( + B3C8A19A2877D0B80037A946 /* rsp */, + ); + path = simd; + sourceTree = ""; + }; + B3C8A19A2877D0B80037A946 /* rsp */ = { + isa = PBXGroup; + children = ( + B3C8A19B2877D0B80037A946 /* vsubc.h */, + B3C8A19C2877D0B80037A946 /* vor.h */, + B3C8A19D2877D0B80037A946 /* vcl.h */, + B3C8A19E2877D0B80037A946 /* vand.h */, + B3C8A19F2877D0B80037A946 /* clamp.h */, + B3C8A1A02877D0B80037A946 /* vmulm.h */, + B3C8A1A12877D0B80037A946 /* vch.h */, + B3C8A1A22877D0B80037A946 /* vrsq.h */, + B3C8A1A32877D0B80037A946 /* vrcpsq.h */, + B3C8A1A42877D0B80037A946 /* vdivh.h */, + B3C8A1A52877D0B80037A946 /* SSE2NEON.h */, + B3C8A1A62877D0B80037A946 /* vabs.h */, + B3C8A1A72877D0B80037A946 /* rsp_common.h */, + B3C8A1A82877D0B80037A946 /* vadd.h */, + B3C8A1A92877D0B80037A946 /* vcmp.h */, + B3C8A1AA2877D0B80037A946 /* vsub.h */, + B3C8A1AB2877D0B80037A946 /* vmuln.h */, + B3C8A1AC2877D0B80037A946 /* vmudh.h */, + B3C8A1AD2877D0B80037A946 /* vmrg.h */, + B3C8A1AE2877D0B80037A946 /* vaddc.h */, + B3C8A1AF2877D0B80037A946 /* rsp_impl.h */, + B3C8A1B02877D0B80037A946 /* vcr.h */, + B3C8A1B12877D0B80037A946 /* vmul.h */, + B3C8A1B22877D0B80037A946 /* rsp_core.cpp */, + B3C8A1B32877D0B80037A946 /* vxor.h */, + B3C8A1B42877D0B80037A946 /* vmov.h */, + B3C8A1B52877D0B80037A946 /* vmulh.h */, + B3C8A1B62877D0B80037A946 /* vmac.h */, + B3C8A1B72877D0B80037A946 /* vmull.h */, + ); + path = rsp; + sourceTree = ""; + }; + B3C8A1BC2877D0B80037A946 /* rsp */ = { + isa = PBXGroup; + children = ( + B3C8A1BD2877D0B80037A946 /* reciprocal.cpp */, + B3C8A1BE2877D0B80037A946 /* reciprocal.h */, + B3C8A1BF2877D0B80037A946 /* vfunctions.cpp */, + B3C8A1C02877D0B80037A946 /* registers.md */, + B3C8A1C12877D0B80037A946 /* pipeline.h */, + B3C8A1C22877D0B80037A946 /* cp0.cpp */, + B3C8A1C32877D0B80037A946 /* ls.cpp */, + B3C8A1C42877D0B80037A946 /* cp2.cpp */, + ); + path = rsp; + sourceTree = ""; + }; + B3C8A1C52877D0B80037A946 /* win32 */ = { + isa = PBXGroup; + children = ( + B3C8A1C62877D0B80037A946 /* mman */, + ); + path = win32; + sourceTree = ""; + }; + B3C8A1C62877D0B80037A946 /* mman */ = { + isa = PBXGroup; + children = ( + B3C8A1C72877D0B80037A946 /* sys */, + ); + path = mman; + sourceTree = ""; + }; + B3C8A1C72877D0B80037A946 /* sys */ = { + isa = PBXGroup; + children = ( + B3C8A1C82877D0B80037A946 /* CMakeLists.txt */, + B3C8A1C92877D0B80037A946 /* configure */, + B3C8A1CA2877D0B80037A946 /* Makefile */, + B3C8A1CB2877D0B80037A946 /* mman.h */, + B3C8A1CC2877D0B80037A946 /* .vs */, + B3C8A1D02877D0B80037A946 /* README.md */, + B3C8A1D12877D0B80037A946 /* mman.vcxproj */, + B3C8A1D22877D0B80037A946 /* .gitignore */, + B3C8A1D32877D0B80037A946 /* .gitrepo */, + B3C8A1D42877D0B80037A946 /* test.c */, + B3C8A1D52877D0B80037A946 /* mman.vcxproj.user */, + B3C8A1D62877D0B80037A946 /* mman.vcxproj.filters */, + B3C8A1D72877D0B80037A946 /* mman.sln */, + B3C8A1D82877D0B80037A946 /* mman-win32.pro */, + B3C8A1D92877D0B80037A946 /* UpgradeLog.htm */, + B3C8A1DA2877D0B90037A946 /* mman.c */, + ); + path = sys; + sourceTree = ""; + }; + B3C8A1CC2877D0B80037A946 /* .vs */ = { + isa = PBXGroup; + children = ( + B3C8A1CD2877D0B80037A946 /* mman */, + ); + path = .vs; + sourceTree = ""; + }; + B3C8A1CD2877D0B80037A946 /* mman */ = { + isa = PBXGroup; + children = ( + B3C8A1CE2877D0B80037A946 /* v14 */, + ); + path = mman; + sourceTree = ""; + }; + B3C8A1CE2877D0B80037A946 /* v14 */ = { + isa = PBXGroup; + children = ( + B3C8A1CF2877D0B80037A946 /* .suo */, + ); + path = v14; + sourceTree = ""; + }; + B3C8A1DF2877D0B90037A946 /* mupen64plus-rsp-cxd4 */ = { + isa = PBXGroup; + children = ( + B3C8A1E02877D0B90037A946 /* rsp_dump.cpp */, + B3C8A1E12877D0B90037A946 /* vu */, + B3C8A1EF2877D0B90037A946 /* my_types.h */, + B3C8A1F02877D0B90037A946 /* rsp.c */, + B3C8A1F12877D0B90037A946 /* config.h */, + B3C8A1F22877D0B90037A946 /* su.c */, + B3C8A1F32877D0B90037A946 /* rsp_dump.h */, + B3C8A1F42877D0B90037A946 /* module.c */, + B3C8A1F52877D0B90037A946 /* README.md */, + B3C8A1F62877D0B90037A946 /* COPYING */, + B3C8A1F72877D0B90037A946 /* rsp.h */, + B3C8A1F82877D0B90037A946 /* module.h */, + B3C8A1F92877D0B90037A946 /* sse2neon */, + B3C8A1FB2877D0B90037A946 /* su.h */, + ); + path = "mupen64plus-rsp-cxd4"; + sourceTree = ""; + }; + B3C8A1E12877D0B90037A946 /* vu */ = { + isa = PBXGroup; + children = ( + B3C8A1E22877D0B90037A946 /* pack.h */, + B3C8A1E32877D0B90037A946 /* divide.h */, + B3C8A1E42877D0B90037A946 /* multiply.h */, + B3C8A1E52877D0B90037A946 /* add.h */, + B3C8A1E62877D0B90037A946 /* logical.c */, + B3C8A1E72877D0B90037A946 /* vu.c */, + B3C8A1E82877D0B90037A946 /* select.c */, + B3C8A1E92877D0B90037A946 /* divide.c */, + B3C8A1EA2877D0B90037A946 /* logical.h */, + B3C8A1EB2877D0B90037A946 /* add.c */, + B3C8A1EC2877D0B90037A946 /* multiply.c */, + B3C8A1ED2877D0B90037A946 /* select.h */, + B3C8A1EE2877D0B90037A946 /* vu.h */, + ); + path = vu; + sourceTree = ""; + }; + B3C8A1F92877D0B90037A946 /* sse2neon */ = { + isa = PBXGroup; + children = ( + B3C8A1FA2877D0B90037A946 /* SSE2NEON.h */, + ); + path = sse2neon; + sourceTree = ""; + }; + B3C8A1FC2877D0B90037A946 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3C8A3C02877D0B90037A946 /* .gitignore */, + B3C8A3C82877D0B90037A946 /* .gitrepo */, + B3C8A21E2877D0B90037A946 /* Makefile.test */, + B3C8A3842877D0B90037A946 /* audio */, + B3C8A2052877D0B90037A946 /* cdrom */, + B3C8A2072877D0B90037A946 /* compat */, + B3C8A3CB2877D0B90037A946 /* crt */, + B3C8A2132877D0B90037A946 /* dynamic */, + B3C8A1FD2877D0B90037A946 /* encodings */, + B3C8A33A2877D0B90037A946 /* features */, + B3C8A2622877D0B90037A946 /* file */, + B3C8A21F2877D0B90037A946 /* formats */, + B3C8A3CF2877D0B90037A946 /* gfx */, + B3C8A3822877D0B90037A946 /* glsm */, + B3C8A2522877D0B90037A946 /* glsym */, + B3C8A2722877D0B90037A946 /* hash */, + B3C8A27F2877D0B90037A946 /* include */, + B3C8A3D62877D0B90037A946 /* libco */, + B3C8A25B2877D0B90037A946 /* lists */, + B3C8A3E52877D0B90037A946 /* media */, + B3C8A3422877D0B90037A946 /* memmap */, + B3C8A2152877D0B90037A946 /* net */, + B3C8A2112877D0B90037A946 /* playlists */, + B3C8A3C32877D0B90037A946 /* queues */, + B3C8A3B82877D0B90037A946 /* rthreads */, + B3C8A3472877D0B90037A946 /* samples */, + B3C8A2742877D0B90037A946 /* streams */, + B3C8A3C92877D0B90037A946 /* string */, + B3C8A2472877D0B90037A946 /* test */, + B3C8A3452877D0B90037A946 /* time */, + B3C8A33C2877D0B90037A946 /* utils */, + B3C8A2012877D0B90037A946 /* vfs */, + B3C8A3C12877D0B90037A946 /* vulkan */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3C8A1FD2877D0B90037A946 /* encodings */ = { + isa = PBXGroup; + children = ( + B3C8A1FE2877D0B90037A946 /* encoding_base64.c */, + B3C8A1FF2877D0B90037A946 /* encoding_crc32.c */, + B3C8A2002877D0B90037A946 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3C8A2012877D0B90037A946 /* vfs */ = { + isa = PBXGroup; + children = ( + B3C8A2022877D0B90037A946 /* vfs_implementation.c */, + B3C8A2032877D0B90037A946 /* vfs_implementation_cdrom.c */, + B3C8A2042877D0B90037A946 /* vfs_implementation_uwp.cpp */, + ); + path = vfs; + sourceTree = ""; + }; + B3C8A2052877D0B90037A946 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3C8A2062877D0B90037A946 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3C8A2072877D0B90037A946 /* compat */ = { + isa = PBXGroup; + children = ( + B3C8A2082877D0B90037A946 /* compat_ifaddrs.c */, + B3C8A2092877D0B90037A946 /* compat_strl.c */, + B3C8A20A2877D0B90037A946 /* compat_posix_string.c */, + B3C8A20B2877D0B90037A946 /* compat_strcasestr.c */, + B3C8A20C2877D0B90037A946 /* compat_snprintf.c */, + B3C8A20D2877D0B90037A946 /* compat_getopt.c */, + B3C8A20E2877D0B90037A946 /* compat_fnmatch.c */, + B3C8A20F2877D0B90037A946 /* fopen_utf8.c */, + B3C8A2102877D0B90037A946 /* compat_vscprintf.c */, + ); + path = compat; + sourceTree = ""; + }; + B3C8A2112877D0B90037A946 /* playlists */ = { + isa = PBXGroup; + children = ( + B3C8A2122877D0B90037A946 /* label_sanitization.c */, + ); + path = playlists; + sourceTree = ""; + }; + B3C8A2132877D0B90037A946 /* dynamic */ = { + isa = PBXGroup; + children = ( + B3C8A2142877D0B90037A946 /* dylib.c */, + ); + path = dynamic; + sourceTree = ""; + }; + B3C8A2152877D0B90037A946 /* net */ = { + isa = PBXGroup; + children = ( + B3C8A2162877D0B90037A946 /* net_natt.c */, + B3C8A2172877D0B90037A946 /* net_socket_ssl_mbed.c */, + B3C8A2182877D0B90037A946 /* net_http.c */, + B3C8A2192877D0B90037A946 /* net_http_parse.c */, + B3C8A21A2877D0B90037A946 /* net_ifinfo.c */, + B3C8A21B2877D0B90037A946 /* net_compat.c */, + B3C8A21C2877D0B90037A946 /* net_socket_ssl_bear.c */, + B3C8A21D2877D0B90037A946 /* net_socket.c */, + ); + path = net; + sourceTree = ""; + }; + B3C8A21F2877D0B90037A946 /* formats */ = { + isa = PBXGroup; + children = ( + B3C8A2202877D0B90037A946 /* wav */, + B3C8A2222877D0B90037A946 /* m3u */, + B3C8A2242877D0B90037A946 /* libchdr */, + B3C8A22D2877D0B90037A946 /* image_texture.c */, + B3C8A22E2877D0B90037A946 /* tga */, + B3C8A2302877D0B90037A946 /* png */, + B3C8A2342877D0B90037A946 /* xml */, + B3C8A2392877D0B90037A946 /* json */, + B3C8A23D2877D0B90037A946 /* logiqx_dat */, + B3C8A23F2877D0B90037A946 /* cdfs */, + B3C8A2412877D0B90037A946 /* jpeg */, + B3C8A2432877D0B90037A946 /* bmp */, + B3C8A2462877D0B90037A946 /* image_transfer.c */, + ); + path = formats; + sourceTree = ""; + }; + B3C8A2202877D0B90037A946 /* wav */ = { + isa = PBXGroup; + children = ( + B3C8A2212877D0B90037A946 /* rwav.c */, + ); + path = wav; + sourceTree = ""; + }; + B3C8A2222877D0B90037A946 /* m3u */ = { + isa = PBXGroup; + children = ( + B3C8A2232877D0B90037A946 /* m3u_file.c */, + ); + path = m3u; + sourceTree = ""; + }; + B3C8A2242877D0B90037A946 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3C8A2252877D0B90037A946 /* libchdr_chd.c */, + B3C8A2262877D0B90037A946 /* libchdr_zlib.c */, + B3C8A2272877D0B90037A946 /* libchdr_bitstream.c */, + B3C8A2282877D0B90037A946 /* libchdr_huffman.c */, + B3C8A2292877D0B90037A946 /* libchdr_flac.c */, + B3C8A22A2877D0B90037A946 /* libchdr_flac_codec.c */, + B3C8A22B2877D0B90037A946 /* libchdr_cdrom.c */, + B3C8A22C2877D0B90037A946 /* libchdr_lzma.c */, + ); + path = libchdr; + sourceTree = ""; + }; + B3C8A22E2877D0B90037A946 /* tga */ = { + isa = PBXGroup; + children = ( + B3C8A22F2877D0B90037A946 /* rtga.c */, + ); + path = tga; + sourceTree = ""; + }; + B3C8A2302877D0B90037A946 /* png */ = { + isa = PBXGroup; + children = ( + B3C8A2312877D0B90037A946 /* rpng.c */, + B3C8A2322877D0B90037A946 /* rpng_internal.h */, + B3C8A2332877D0B90037A946 /* rpng_encode.c */, + ); + path = png; + sourceTree = ""; + }; + B3C8A2342877D0B90037A946 /* xml */ = { + isa = PBXGroup; + children = ( + B3C8A2352877D0B90037A946 /* test */, + B3C8A2382877D0B90037A946 /* rxml.c */, + ); + path = xml; + sourceTree = ""; + }; + B3C8A2352877D0B90037A946 /* test */ = { + isa = PBXGroup; + children = ( + B3C8A2362877D0B90037A946 /* Makefile */, + B3C8A2372877D0B90037A946 /* rxml_test.c */, + ); + path = test; + sourceTree = ""; + }; + B3C8A2392877D0B90037A946 /* json */ = { + isa = PBXGroup; + children = ( + B3C8A23A2877D0B90037A946 /* jsonsax_full.c */, + B3C8A23B2877D0B90037A946 /* rjson.c */, + B3C8A23C2877D0B90037A946 /* jsonsax.c */, + ); + path = json; + sourceTree = ""; + }; + B3C8A23D2877D0B90037A946 /* logiqx_dat */ = { + isa = PBXGroup; + children = ( + B3C8A23E2877D0B90037A946 /* logiqx_dat.c */, + ); + path = logiqx_dat; + sourceTree = ""; + }; + B3C8A23F2877D0B90037A946 /* cdfs */ = { + isa = PBXGroup; + children = ( + B3C8A2402877D0B90037A946 /* cdfs.c */, + ); + path = cdfs; + sourceTree = ""; + }; + B3C8A2412877D0B90037A946 /* jpeg */ = { + isa = PBXGroup; + children = ( + B3C8A2422877D0B90037A946 /* rjpeg.c */, + ); + path = jpeg; + sourceTree = ""; + }; + B3C8A2432877D0B90037A946 /* bmp */ = { + isa = PBXGroup; + children = ( + B3C8A2442877D0B90037A946 /* rbmp_encode.c */, + B3C8A2452877D0B90037A946 /* rbmp.c */, + ); + path = bmp; + sourceTree = ""; + }; + B3C8A2472877D0B90037A946 /* test */ = { + isa = PBXGroup; + children = ( + B3C8A2482877D0B90037A946 /* lists */, + B3C8A24A2877D0B90037A946 /* hash */, + B3C8A24C2877D0B90037A946 /* utils */, + B3C8A24E2877D0B90037A946 /* queues */, + B3C8A2502877D0B90037A946 /* string */, + ); + path = test; + sourceTree = ""; + }; + B3C8A2482877D0B90037A946 /* lists */ = { + isa = PBXGroup; + children = ( + B3C8A2492877D0B90037A946 /* test_linked_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3C8A24A2877D0B90037A946 /* hash */ = { + isa = PBXGroup; + children = ( + B3C8A24B2877D0B90037A946 /* test_hash.c */, + ); + path = hash; + sourceTree = ""; + }; + B3C8A24C2877D0B90037A946 /* utils */ = { + isa = PBXGroup; + children = ( + B3C8A24D2877D0B90037A946 /* test_utils.c */, + ); + path = utils; + sourceTree = ""; + }; + B3C8A24E2877D0B90037A946 /* queues */ = { + isa = PBXGroup; + children = ( + B3C8A24F2877D0B90037A946 /* test_generic_queue.c */, + ); + path = queues; + sourceTree = ""; + }; + B3C8A2502877D0B90037A946 /* string */ = { + isa = PBXGroup; + children = ( + B3C8A2512877D0B90037A946 /* test_stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3C8A2522877D0B90037A946 /* glsym */ = { + isa = PBXGroup; + children = ( + B3C8A2532877D0B90037A946 /* glsym_es3.c */, + B3C8A2542877D0B90037A946 /* glsym_gl.c */, + B3C8A2552877D0B90037A946 /* README.md */, + B3C8A2562877D0B90037A946 /* glsym_es2.c */, + B3C8A2572877D0B90037A946 /* rglgen.c */, + B3C8A2582877D0B90037A946 /* glgen.py */, + B3C8A2592877D0B90037A946 /* xglgen.py */, + B3C8A25A2877D0B90037A946 /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B3C8A25B2877D0B90037A946 /* lists */ = { + isa = PBXGroup; + children = ( + B3C8A25C2877D0B90037A946 /* nested_list.c */, + B3C8A25D2877D0B90037A946 /* dir_list.c */, + B3C8A25E2877D0B90037A946 /* vector_list.c */, + B3C8A25F2877D0B90037A946 /* string_list.c */, + B3C8A2602877D0B90037A946 /* linked_list.c */, + B3C8A2612877D0B90037A946 /* file_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3C8A2622877D0B90037A946 /* file */ = { + isa = PBXGroup; + children = ( + B3C8A2632877D0B90037A946 /* file_path_io.c */, + B3C8A2642877D0B90037A946 /* file_path.c */, + B3C8A2652877D0B90037A946 /* config_file_userdata.c */, + B3C8A2662877D0B90037A946 /* nbio */, + B3C8A26D2877D0B90037A946 /* archive_file_7z.c */, + B3C8A26E2877D0B90037A946 /* archive_file_zlib.c */, + B3C8A26F2877D0B90037A946 /* config_file.c */, + B3C8A2702877D0B90037A946 /* retro_dirent.c */, + B3C8A2712877D0B90037A946 /* archive_file.c */, + ); + path = file; + sourceTree = ""; + }; + B3C8A2662877D0B90037A946 /* nbio */ = { + isa = PBXGroup; + children = ( + B3C8A2672877D0B90037A946 /* nbio_unixmmap.c */, + B3C8A2682877D0B90037A946 /* nbio_linux.c */, + B3C8A2692877D0B90037A946 /* nbio_orbis.c */, + B3C8A26A2877D0B90037A946 /* nbio_windowsmmap.c */, + B3C8A26B2877D0B90037A946 /* nbio_intf.c */, + B3C8A26C2877D0B90037A946 /* nbio_stdio.c */, + ); + path = nbio; + sourceTree = ""; + }; + B3C8A2722877D0B90037A946 /* hash */ = { + isa = PBXGroup; + children = ( + B3C8A2732877D0B90037A946 /* lrc_hash.c */, + ); + path = hash; + sourceTree = ""; + }; + B3C8A2742877D0B90037A946 /* streams */ = { + isa = PBXGroup; + children = ( + B3C8A2752877D0B90037A946 /* stdin_stream.c */, + B3C8A2762877D0B90037A946 /* file_stream_transforms.c */, + B3C8A2772877D0B90037A946 /* trans_stream_zlib.c */, + B3C8A2782877D0B90037A946 /* interface_stream.c */, + B3C8A2792877D0B90037A946 /* trans_stream_pipe.c */, + B3C8A27A2877D0B90037A946 /* memory_stream.c */, + B3C8A27B2877D0B90037A946 /* chd_stream.c */, + B3C8A27C2877D0B90037A946 /* trans_stream.c */, + B3C8A27D2877D0B90037A946 /* file_stream.c */, + B3C8A27E2877D0B90037A946 /* rzip_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3C8A27F2877D0B90037A946 /* include */ = { + isa = PBXGroup; + children = ( + B3C8A2802877D0B90037A946 /* encodings */, + B3C8A2852877D0B90037A946 /* memalign.h */, + B3C8A2862877D0B90037A946 /* libretro_dspfilter.h */, + B3C8A2872877D0B90037A946 /* vfs */, + B3C8A28B2877D0B90037A946 /* cdrom */, + B3C8A28D2877D0B90037A946 /* libco.h */, + B3C8A28E2877D0B90037A946 /* compat */, + B3C8A2A42877D0B90037A946 /* retro_common_api.h */, + B3C8A2A52877D0B90037A946 /* playlists */, + B3C8A2A72877D0B90037A946 /* dynamic */, + B3C8A2A92877D0B90037A946 /* net */, + B3C8A2B12877D0B90037A946 /* retro_timers.h */, + B3C8A2B22877D0B90037A946 /* formats */, + B3C8A2C02877D0B90037A946 /* glsym */, + B3C8A2CB2877D0B90037A946 /* lists */, + B3C8A2D12877D0B90037A946 /* file */, + B3C8A2D72877D0B90037A946 /* retro_environment.h */, + B3C8A2D82877D0B90037A946 /* array */, + B3C8A2DB2877D0B90037A946 /* retro_dirent.h */, + B3C8A2DC2877D0B90037A946 /* retro_inline.h */, + B3C8A2DD2877D0B90037A946 /* retro_math.h */, + B3C8A2DE2877D0B90037A946 /* streams */, + B3C8A2E72877D0B90037A946 /* fastcpy.h */, + B3C8A2E82877D0B90037A946 /* libchdr */, + B3C8A2F22877D0B90037A946 /* features */, + B3C8A2F42877D0B90037A946 /* lrc_hash.h */, + B3C8A2F52877D0B90037A946 /* utils */, + B3C8A2F72877D0B90037A946 /* retro_miscellaneous.h */, + B3C8A2F82877D0B90037A946 /* clamping.h */, + B3C8A2F92877D0B90037A946 /* math */, + B3C8A2FD2877D0B90037A946 /* time */, + B3C8A2FF2877D0B90037A946 /* defines */, + B3C8A3052877D0B90037A946 /* boolean.h */, + B3C8A3062877D0B90037A946 /* libretro_gskit_ps2.h */, + B3C8A3072877D0B90037A946 /* glsm */, + B3C8A30C2877D0B90037A946 /* audio */, + B3C8A3142877D0B90037A946 /* memmap.h */, + B3C8A3152877D0B90037A946 /* rthreads */, + B3C8A3192877D0B90037A946 /* libretro.h */, + B3C8A31A2877D0B90037A946 /* vulkan */, + B3C8A31C2877D0B90037A946 /* retro_stat.h */, + B3C8A31D2877D0B90037A946 /* retro_common.h */, + B3C8A31E2877D0B90037A946 /* queues */, + B3C8A3232877D0B90037A946 /* retro_assert.h */, + B3C8A3242877D0B90037A946 /* string */, + B3C8A3262877D0B90037A946 /* libretro_d3d.h */, + B3C8A3272877D0B90037A946 /* libretro_vulkan.h */, + B3C8A3282877D0B90037A946 /* gfx */, + B3C8A3362877D0B90037A946 /* retro_endianness.h */, + B3C8A3372877D0B90037A946 /* filters.h */, + B3C8A3382877D0B90037A946 /* media */, + ); + path = include; + sourceTree = ""; + }; + B3C8A2802877D0B90037A946 /* encodings */ = { + isa = PBXGroup; + children = ( + B3C8A2812877D0B90037A946 /* base64.h */, + B3C8A2822877D0B90037A946 /* utf.h */, + B3C8A2832877D0B90037A946 /* win32.h */, + B3C8A2842877D0B90037A946 /* crc32.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3C8A2872877D0B90037A946 /* vfs */ = { + isa = PBXGroup; + children = ( + B3C8A2882877D0B90037A946 /* vfs.h */, + B3C8A2892877D0B90037A946 /* vfs_implementation.h */, + B3C8A28A2877D0B90037A946 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3C8A28B2877D0B90037A946 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3C8A28C2877D0B90037A946 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3C8A28E2877D0B90037A946 /* compat */ = { + isa = PBXGroup; + children = ( + B3C8A28F2877D0B90037A946 /* apple_compat.h */, + B3C8A2902877D0B90037A946 /* zutil.h */, + B3C8A2912877D0B90037A946 /* strl.h */, + B3C8A2922877D0B90037A946 /* strcasestr.h */, + B3C8A2932877D0B90037A946 /* msvc */, + B3C8A2952877D0B90037A946 /* fopen_utf8.h */, + B3C8A2962877D0B90037A946 /* zconf.h.in */, + B3C8A2972877D0B90037A946 /* intrinsics.h */, + B3C8A2982877D0B90037A946 /* posix_string.h */, + B3C8A2992877D0B90037A946 /* zlib */, + B3C8A29E2877D0B90037A946 /* getopt.h */, + B3C8A29F2877D0B90037A946 /* fnmatch.h */, + B3C8A2A02877D0B90037A946 /* msvc.h */, + B3C8A2A12877D0B90037A946 /* zlib.h */, + B3C8A2A22877D0B90037A946 /* ifaddrs.h */, + B3C8A2A32877D0B90037A946 /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B3C8A2932877D0B90037A946 /* msvc */ = { + isa = PBXGroup; + children = ( + B3C8A2942877D0B90037A946 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3C8A2992877D0B90037A946 /* zlib */ = { + isa = PBXGroup; + children = ( + B3C8A29A2877D0B90037A946 /* zutil.h */, + B3C8A29B2877D0B90037A946 /* zconf.h.in */, + B3C8A29C2877D0B90037A946 /* zlib.h */, + B3C8A29D2877D0B90037A946 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B3C8A2A52877D0B90037A946 /* playlists */ = { + isa = PBXGroup; + children = ( + B3C8A2A62877D0B90037A946 /* label_sanitization.h */, + ); + path = playlists; + sourceTree = ""; + }; + B3C8A2A72877D0B90037A946 /* dynamic */ = { + isa = PBXGroup; + children = ( + B3C8A2A82877D0B90037A946 /* dylib.h */, + ); + path = dynamic; + sourceTree = ""; + }; + B3C8A2A92877D0B90037A946 /* net */ = { + isa = PBXGroup; + children = ( + B3C8A2AA2877D0B90037A946 /* net_ifinfo.h */, + B3C8A2AB2877D0B90037A946 /* net_compat.h */, + B3C8A2AC2877D0B90037A946 /* net_socket.h */, + B3C8A2AD2877D0B90037A946 /* net_natt.h */, + B3C8A2AE2877D0B90037A946 /* net_socket_ssl.h */, + B3C8A2AF2877D0B90037A946 /* net_http.h */, + B3C8A2B02877D0B90037A946 /* net_http_parse.h */, + ); + path = net; + sourceTree = ""; + }; + B3C8A2B22877D0B90037A946 /* formats */ = { + isa = PBXGroup; + children = ( + B3C8A2B32877D0B90037A946 /* m3u_file.h */, + B3C8A2B42877D0B90037A946 /* jsonsax.h */, + B3C8A2B52877D0B90037A946 /* rxml.h */, + B3C8A2B62877D0B90037A946 /* cdfs.h */, + B3C8A2B72877D0B90037A946 /* rpng.h */, + B3C8A2B82877D0B90037A946 /* rtga.h */, + B3C8A2B92877D0B90037A946 /* rjson.h */, + B3C8A2BA2877D0B90037A946 /* image.h */, + B3C8A2BB2877D0B90037A946 /* logiqx_dat.h */, + B3C8A2BC2877D0B90037A946 /* rbmp.h */, + B3C8A2BD2877D0B90037A946 /* rwav.h */, + B3C8A2BE2877D0B90037A946 /* jsonsax_full.h */, + B3C8A2BF2877D0B90037A946 /* rjpeg.h */, + ); + path = formats; + sourceTree = ""; + }; + B3C8A2C02877D0B90037A946 /* glsym */ = { + isa = PBXGroup; + children = ( + B3C8A2C12877D0B90037A946 /* rglgen.h */, + B3C8A2C22877D0B90037A946 /* glsym_es2.h */, + B3C8A2C32877D0B90037A946 /* glsym.h */, + B3C8A2C42877D0B90037A946 /* rglgen_headers.h */, + B3C8A2C52877D0B90037A946 /* switch */, + B3C8A2C82877D0B90037A946 /* rglgen_private_headers.h */, + B3C8A2C92877D0B90037A946 /* glsym_es3.h */, + B3C8A2CA2877D0B90037A946 /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B3C8A2C52877D0B90037A946 /* switch */ = { + isa = PBXGroup; + children = ( + B3C8A2C62877D0B90037A946 /* nx_gl.h */, + B3C8A2C72877D0B90037A946 /* nx_glsym.h */, + ); + path = switch; + sourceTree = ""; + }; + B3C8A2CB2877D0B90037A946 /* lists */ = { + isa = PBXGroup; + children = ( + B3C8A2CC2877D0B90037A946 /* string_list.h */, + B3C8A2CD2877D0B90037A946 /* linked_list.h */, + B3C8A2CE2877D0B90037A946 /* file_list.h */, + B3C8A2CF2877D0B90037A946 /* nested_list.h */, + B3C8A2D02877D0B90037A946 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3C8A2D12877D0B90037A946 /* file */ = { + isa = PBXGroup; + children = ( + B3C8A2D22877D0B90037A946 /* nbio.h */, + B3C8A2D32877D0B90037A946 /* config_file.h */, + B3C8A2D42877D0B90037A946 /* archive_file.h */, + B3C8A2D52877D0B90037A946 /* config_file_userdata.h */, + B3C8A2D62877D0B90037A946 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3C8A2D82877D0B90037A946 /* array */ = { + isa = PBXGroup; + children = ( + B3C8A2D92877D0B90037A946 /* rhmap.h */, + B3C8A2DA2877D0B90037A946 /* rbuf.h */, + ); + path = array; + sourceTree = ""; + }; + B3C8A2DE2877D0B90037A946 /* streams */ = { + isa = PBXGroup; + children = ( + B3C8A2DF2877D0B90037A946 /* memory_stream.h */, + B3C8A2E02877D0B90037A946 /* chd_stream.h */, + B3C8A2E12877D0B90037A946 /* trans_stream.h */, + B3C8A2E22877D0B90037A946 /* rzip_stream.h */, + B3C8A2E32877D0B90037A946 /* file_stream.h */, + B3C8A2E42877D0B90037A946 /* stdin_stream.h */, + B3C8A2E52877D0B90037A946 /* file_stream_transforms.h */, + B3C8A2E62877D0B90037A946 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3C8A2E82877D0B90037A946 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3C8A2E92877D0B90037A946 /* lzma.h */, + B3C8A2EA2877D0B90037A946 /* minmax.h */, + B3C8A2EB2877D0B90037A946 /* flac.h */, + B3C8A2EC2877D0B90037A946 /* bitstream.h */, + B3C8A2ED2877D0B90037A946 /* cdrom.h */, + B3C8A2EE2877D0B90037A946 /* chd.h */, + B3C8A2EF2877D0B90037A946 /* libchdr_zlib.h */, + B3C8A2F02877D0B90037A946 /* huffman.h */, + B3C8A2F12877D0B90037A946 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3C8A2F22877D0B90037A946 /* features */ = { + isa = PBXGroup; + children = ( + B3C8A2F32877D0B90037A946 /* features_cpu.h */, + ); + path = features; + sourceTree = ""; + }; + B3C8A2F52877D0B90037A946 /* utils */ = { + isa = PBXGroup; + children = ( + B3C8A2F62877D0B90037A946 /* md5.h */, + ); + path = utils; + sourceTree = ""; + }; + B3C8A2F92877D0B90037A946 /* math */ = { + isa = PBXGroup; + children = ( + B3C8A2FA2877D0B90037A946 /* float_minmax.h */, + B3C8A2FB2877D0B90037A946 /* fxp.h */, + B3C8A2FC2877D0B90037A946 /* complex.h */, + ); + path = math; + sourceTree = ""; + }; + B3C8A2FD2877D0B90037A946 /* time */ = { + isa = PBXGroup; + children = ( + B3C8A2FE2877D0B90037A946 /* rtime.h */, + ); + path = time; + sourceTree = ""; + }; + B3C8A2FF2877D0B90037A946 /* defines */ = { + isa = PBXGroup; + children = ( + B3C8A3002877D0B90037A946 /* d3d_defines.h */, + B3C8A3012877D0B90037A946 /* gx_defines.h */, + B3C8A3022877D0B90037A946 /* cocoa_defines.h */, + B3C8A3032877D0B90037A946 /* psp_defines.h */, + B3C8A3042877D0B90037A946 /* ps3_defines.h */, + ); + path = defines; + sourceTree = ""; + }; + B3C8A3072877D0B90037A946 /* glsm */ = { + isa = PBXGroup; + children = ( + B3C8A3082877D0B90037A946 /* glsm.h */, + B3C8A3092877D0B90037A946 /* glsm_caps.h */, + B3C8A30A2877D0B90037A946 /* glsm_state_ctl.h */, + B3C8A30B2877D0B90037A946 /* glsmsym.h */, + ); + path = glsm; + sourceTree = ""; + }; + B3C8A30C2877D0B90037A946 /* audio */ = { + isa = PBXGroup; + children = ( + B3C8A30D2877D0B90037A946 /* dsp_filter.h */, + B3C8A30E2877D0B90037A946 /* audio_resampler.h */, + B3C8A30F2877D0B90037A946 /* audio_mixer.h */, + B3C8A3102877D0B90037A946 /* conversion */, + B3C8A3132877D0B90037A946 /* audio_mix.h */, + ); + path = audio; + sourceTree = ""; + }; + B3C8A3102877D0B90037A946 /* conversion */ = { + isa = PBXGroup; + children = ( + B3C8A3112877D0B90037A946 /* s16_to_float.h */, + B3C8A3122877D0B90037A946 /* float_to_s16.h */, + ); + path = conversion; + sourceTree = ""; + }; + B3C8A3152877D0B90037A946 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3C8A3162877D0B90037A946 /* tpool.h */, + B3C8A3172877D0B90037A946 /* rthreads.h */, + B3C8A3182877D0B90037A946 /* async_job.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3C8A31A2877D0B90037A946 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3C8A31B2877D0B90037A946 /* vulkan_symbol_wrapper.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B3C8A31E2877D0B90037A946 /* queues */ = { + isa = PBXGroup; + children = ( + B3C8A31F2877D0B90037A946 /* generic_queue.h */, + B3C8A3202877D0B90037A946 /* task_queue.h */, + B3C8A3212877D0B90037A946 /* fifo_queue.h */, + B3C8A3222877D0B90037A946 /* message_queue.h */, + ); + path = queues; + sourceTree = ""; + }; + B3C8A3242877D0B90037A946 /* string */ = { + isa = PBXGroup; + children = ( + B3C8A3252877D0B90037A946 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3C8A3282877D0B90037A946 /* gfx */ = { + isa = PBXGroup; + children = ( + B3C8A3292877D0B90037A946 /* video_frame.h */, + B3C8A32A2877D0B90037A946 /* math */, + B3C8A3302877D0B90037A946 /* scaler */, + B3C8A3352877D0B90037A946 /* gl_capabilities.h */, + ); + path = gfx; + sourceTree = ""; + }; + B3C8A32A2877D0B90037A946 /* math */ = { + isa = PBXGroup; + children = ( + B3C8A32B2877D0B90037A946 /* vector_4.h */, + B3C8A32C2877D0B90037A946 /* vector_3.h */, + B3C8A32D2877D0B90037A946 /* vector_2.h */, + B3C8A32E2877D0B90037A946 /* matrix_3x3.h */, + B3C8A32F2877D0B90037A946 /* matrix_4x4.h */, + ); + path = math; + sourceTree = ""; + }; + B3C8A3302877D0B90037A946 /* scaler */ = { + isa = PBXGroup; + children = ( + B3C8A3312877D0B90037A946 /* scaler.h */, + B3C8A3322877D0B90037A946 /* pixconv.h */, + B3C8A3332877D0B90037A946 /* scaler_int.h */, + B3C8A3342877D0B90037A946 /* filter.h */, + ); + path = scaler; + sourceTree = ""; + }; + B3C8A3382877D0B90037A946 /* media */ = { + isa = PBXGroup; + children = ( + B3C8A3392877D0B90037A946 /* media_detect_cd.h */, + ); + path = media; + sourceTree = ""; + }; + B3C8A33A2877D0B90037A946 /* features */ = { + isa = PBXGroup; + children = ( + B3C8A33B2877D0B90037A946 /* features_cpu.c */, + ); + path = features; + sourceTree = ""; + }; + B3C8A33C2877D0B90037A946 /* utils */ = { + isa = PBXGroup; + children = ( + B3C8A33D2877D0B90037A946 /* djb2.c */, + B3C8A33E2877D0B90037A946 /* sha1.c */, + B3C8A33F2877D0B90037A946 /* debugbreak */, + B3C8A3412877D0B90037A946 /* md5.c */, + ); + path = utils; + sourceTree = ""; + }; + B3C8A33F2877D0B90037A946 /* debugbreak */ = { + isa = PBXGroup; + children = ( + B3C8A3402877D0B90037A946 /* debugbreak.c */, + ); + path = debugbreak; + sourceTree = ""; + }; + B3C8A3422877D0B90037A946 /* memmap */ = { + isa = PBXGroup; + children = ( + B3C8A3432877D0B90037A946 /* memmap.c */, + B3C8A3442877D0B90037A946 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3C8A3452877D0B90037A946 /* time */ = { + isa = PBXGroup; + children = ( + B3C8A3462877D0B90037A946 /* rtime.c */, + ); + path = time; + sourceTree = ""; + }; + B3C8A3472877D0B90037A946 /* samples */ = { + isa = PBXGroup; + children = ( + B3C8A3482877D0B90037A946 /* core_options */, + B3C8A3592877D0B90037A946 /* compat */, + B3C8A3632877D0B90037A946 /* net */, + B3C8A36B2877D0B90037A946 /* formats */, + B3C8A3722877D0B90037A946 /* file */, + B3C8A3792877D0B90037A946 /* streams */, + B3C8A37D2877D0B90037A946 /* utils */, + ); + path = samples; + sourceTree = ""; + }; + B3C8A3482877D0B90037A946 /* core_options */ = { + isa = PBXGroup; + children = ( + B3C8A3492877D0B90037A946 /* example_categories */, + B3C8A34F2877D0B90037A946 /* example_default */, + B3C8A3522877D0B90037A946 /* README.md */, + B3C8A3532877D0B90037A946 /* example_hide_option */, + B3C8A3562877D0B90037A946 /* example_translation */, + ); + path = core_options; + sourceTree = ""; + }; + B3C8A3492877D0B90037A946 /* example_categories */ = { + isa = PBXGroup; + children = ( + B3C8A34A2877D0B90037A946 /* conversion_scripts */, + B3C8A34D2877D0B90037A946 /* libretro_core_options.h */, + B3C8A34E2877D0B90037A946 /* libretro_core_options_intl.h */, + ); + path = example_categories; + sourceTree = ""; + }; + B3C8A34A2877D0B90037A946 /* conversion_scripts */ = { + isa = PBXGroup; + children = ( + B3C8A34B2877D0B90037A946 /* core_option_regex.py */, + B3C8A34C2877D0B90037A946 /* v1_to_v2_converter.py */, + ); + path = conversion_scripts; + sourceTree = ""; + }; + B3C8A34F2877D0B90037A946 /* example_default */ = { + isa = PBXGroup; + children = ( + B3C8A3502877D0B90037A946 /* libretro_core_options.h */, + B3C8A3512877D0B90037A946 /* libretro_core_options_intl.h */, + ); + path = example_default; + sourceTree = ""; + }; + B3C8A3532877D0B90037A946 /* example_hide_option */ = { + isa = PBXGroup; + children = ( + B3C8A3542877D0B90037A946 /* libretro_core_options.h */, + B3C8A3552877D0B90037A946 /* libretro_core_options_intl.h */, + ); + path = example_hide_option; + sourceTree = ""; + }; + B3C8A3562877D0B90037A946 /* example_translation */ = { + isa = PBXGroup; + children = ( + B3C8A3572877D0B90037A946 /* libretro_core_options.h */, + B3C8A3582877D0B90037A946 /* libretro_core_options_intl.h */, + ); + path = example_translation; + sourceTree = ""; + }; + B3C8A3592877D0B90037A946 /* compat */ = { + isa = PBXGroup; + children = ( + B3C8A35A2877D0B90037A946 /* fnmatch */, + B3C8A35D2877D0B90037A946 /* strl */, + B3C8A3602877D0B90037A946 /* snprintf */, + ); + path = compat; + sourceTree = ""; + }; + B3C8A35A2877D0B90037A946 /* fnmatch */ = { + isa = PBXGroup; + children = ( + B3C8A35B2877D0B90037A946 /* compat_fnmatch_test.c */, + B3C8A35C2877D0B90037A946 /* Makefile */, + ); + path = fnmatch; + sourceTree = ""; + }; + B3C8A35D2877D0B90037A946 /* strl */ = { + isa = PBXGroup; + children = ( + B3C8A35E2877D0B90037A946 /* strl_test.c */, + B3C8A35F2877D0B90037A946 /* Makefile */, + ); + path = strl; + sourceTree = ""; + }; + B3C8A3602877D0B90037A946 /* snprintf */ = { + isa = PBXGroup; + children = ( + B3C8A3612877D0B90037A946 /* Makefile */, + B3C8A3622877D0B90037A946 /* snprintf_test.c */, + ); + path = snprintf; + sourceTree = ""; + }; + B3C8A3632877D0B90037A946 /* net */ = { + isa = PBXGroup; + children = ( + B3C8A3642877D0B90037A946 /* net_ifinfo_test.c */, + B3C8A3652877D0B90037A946 /* udp-test.c */, + B3C8A3662877D0B90037A946 /* Makefile */, + B3C8A3672877D0B90037A946 /* net_http_parse_test.c */, + B3C8A3682877D0B90037A946 /* net_ifinfo */, + B3C8A3692877D0B90037A946 /* http_test */, + B3C8A36A2877D0B90037A946 /* net_http_test.c */, + ); + path = net; + sourceTree = ""; + }; + B3C8A36B2877D0B90037A946 /* formats */ = { + isa = PBXGroup; + children = ( + B3C8A36C2877D0B90037A946 /* png */, + B3C8A36F2877D0B90037A946 /* xml */, + ); + path = formats; + sourceTree = ""; + }; + B3C8A36C2877D0B90037A946 /* png */ = { + isa = PBXGroup; + children = ( + B3C8A36D2877D0B90037A946 /* Makefile */, + B3C8A36E2877D0B90037A946 /* rpng_test.c */, + ); + path = png; + sourceTree = ""; + }; + B3C8A36F2877D0B90037A946 /* xml */ = { + isa = PBXGroup; + children = ( + B3C8A3702877D0B90037A946 /* Makefile */, + B3C8A3712877D0B90037A946 /* rxml_test.c */, + ); + path = xml; + sourceTree = ""; + }; + B3C8A3722877D0B90037A946 /* file */ = { + isa = PBXGroup; + children = ( + B3C8A3732877D0B90037A946 /* nbio */, + B3C8A3762877D0B90037A946 /* config_file */, + ); + path = file; + sourceTree = ""; + }; + B3C8A3732877D0B90037A946 /* nbio */ = { + isa = PBXGroup; + children = ( + B3C8A3742877D0B90037A946 /* Makefile */, + B3C8A3752877D0B90037A946 /* nbio_test.c */, + ); + path = nbio; + sourceTree = ""; + }; + B3C8A3762877D0B90037A946 /* config_file */ = { + isa = PBXGroup; + children = ( + B3C8A3772877D0B90037A946 /* config_file_test.c */, + B3C8A3782877D0B90037A946 /* Makefile */, + ); + path = config_file; + sourceTree = ""; + }; + B3C8A3792877D0B90037A946 /* streams */ = { + isa = PBXGroup; + children = ( + B3C8A37A2877D0B90037A946 /* rzip */, + ); + path = streams; + sourceTree = ""; + }; + B3C8A37A2877D0B90037A946 /* rzip */ = { + isa = PBXGroup; + children = ( + B3C8A37B2877D0B90037A946 /* Makefile */, + B3C8A37C2877D0B90037A946 /* rzip.c */, + ); + path = rzip; + sourceTree = ""; + }; + B3C8A37D2877D0B90037A946 /* utils */ = { + isa = PBXGroup; + children = ( + B3C8A37E2877D0B90037A946 /* Makefile */, + B3C8A37F2877D0B90037A946 /* md5_test.c */, + B3C8A3802877D0B90037A946 /* crc32.c */, + B3C8A3812877D0B90037A946 /* sha1_main.c */, + ); + path = utils; + sourceTree = ""; + }; + B3C8A3822877D0B90037A946 /* glsm */ = { + isa = PBXGroup; + children = ( + B3C8A3832877D0B90037A946 /* glsm.c */, + ); + path = glsm; + sourceTree = ""; + }; + B3C8A3842877D0B90037A946 /* audio */ = { + isa = PBXGroup; + children = ( + B3C8A3A82877D0B90037A946 /* audio_mix.c */, + B3C8A3B72877D0B90037A946 /* audio_mixer.c */, + B3C8A3AF2877D0B90037A946 /* dsp_filter.c */, + B3C8A3B02877D0B90037A946 /* conversion */, + B3C8A3852877D0B90037A946 /* dsp_filters */, + B3C8A3A92877D0B90037A946 /* resampler */, + ); + path = audio; + sourceTree = ""; + }; + B3C8A3852877D0B90037A946 /* dsp_filters */ = { + isa = PBXGroup; + children = ( + B3C8A3862877D0B90037A946 /* eq.c */, + B3C8A3872877D0B90037A946 /* EQ.dsp */, + B3C8A3882877D0B90037A946 /* Vibrato.dsp */, + B3C8A3892877D0B90037A946 /* ChipTuneEnhance.dsp */, + B3C8A38A2877D0B90037A946 /* phaser.c */, + B3C8A38B2877D0B90037A946 /* Crystalizer.dsp */, + B3C8A38C2877D0B90037A946 /* Mono.dsp */, + B3C8A38D2877D0B90037A946 /* configure */, + B3C8A38E2877D0B90037A946 /* Makefile */, + B3C8A38F2877D0B90037A946 /* chorus.c */, + B3C8A3902877D0B90037A946 /* Phaser.dsp */, + B3C8A3912877D0B90037A946 /* wahwah.c */, + B3C8A3922877D0B90037A946 /* IIR.dsp */, + B3C8A3932877D0B90037A946 /* HighShelfDampen.dsp */, + B3C8A3942877D0B90037A946 /* EchoReverb.dsp */, + B3C8A3952877D0B90037A946 /* iir.c */, + B3C8A3962877D0B90037A946 /* reverb.c */, + B3C8A3972877D0B90037A946 /* crystalizer.c */, + B3C8A3982877D0B90037A946 /* WahWah.dsp */, + B3C8A3992877D0B90037A946 /* fft */, + B3C8A39C2877D0B90037A946 /* link.T */, + B3C8A39D2877D0B90037A946 /* BassBoost.dsp */, + B3C8A39E2877D0B90037A946 /* vibrato.c */, + B3C8A39F2877D0B90037A946 /* Echo.dsp */, + B3C8A3A02877D0B90037A946 /* LowPassCPS.dsp */, + B3C8A3A12877D0B90037A946 /* Panning.dsp */, + B3C8A3A22877D0B90037A946 /* tremolo.c */, + B3C8A3A32877D0B90037A946 /* panning.c */, + B3C8A3A42877D0B90037A946 /* Chorus.dsp */, + B3C8A3A52877D0B90037A946 /* Tremolo.dsp */, + B3C8A3A62877D0B90037A946 /* Reverb.dsp */, + B3C8A3A72877D0B90037A946 /* echo.c */, + ); + path = dsp_filters; + sourceTree = ""; + }; + B3C8A3992877D0B90037A946 /* fft */ = { + isa = PBXGroup; + children = ( + B3C8A39A2877D0B90037A946 /* fft.h */, + B3C8A39B2877D0B90037A946 /* fft.c */, + ); + path = fft; + sourceTree = ""; + }; + B3C8A3A92877D0B90037A946 /* resampler */ = { + isa = PBXGroup; + children = ( + B3C8A3AA2877D0B90037A946 /* drivers */, + B3C8A3AE2877D0B90037A946 /* audio_resampler.c */, + ); + path = resampler; + sourceTree = ""; + }; + B3C8A3AA2877D0B90037A946 /* drivers */ = { + isa = PBXGroup; + children = ( + B3C8A3AB2877D0B90037A946 /* sinc_resampler.c */, + B3C8A3AC2877D0B90037A946 /* nearest_resampler.c */, + B3C8A3AD2877D0B90037A946 /* sinc_resampler_neon.S */, + ); + path = drivers; + sourceTree = ""; + }; + B3C8A3B02877D0B90037A946 /* conversion */ = { + isa = PBXGroup; + children = ( + B3C8A3B12877D0B90037A946 /* s16_to_float.c */, + B3C8A3B22877D0B90037A946 /* float_to_s16_neon.c */, + B3C8A3B32877D0B90037A946 /* s16_to_float_neon.c */, + B3C8A3B42877D0B90037A946 /* float_to_s16.c */, + B3C8A3B52877D0B90037A946 /* float_to_s16_neon.S */, + B3C8A3B62877D0B90037A946 /* s16_to_float_neon.S */, + ); + path = conversion; + sourceTree = ""; + }; + B3C8A3B82877D0B90037A946 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3C8A3B92877D0B90037A946 /* wiiu_pthread.h */, + B3C8A3BA2877D0B90037A946 /* rthreads.c */, + B3C8A3BB2877D0B90037A946 /* gx_pthread.h */, + B3C8A3BC2877D0B90037A946 /* psp_pthread.h */, + B3C8A3BD2877D0B90037A946 /* xenon_sdl_threads.c */, + B3C8A3BE2877D0B90037A946 /* ctr_pthread.h */, + B3C8A3BF2877D0B90037A946 /* tpool.c */, + ); + path = rthreads; + sourceTree = ""; + }; + B3C8A3C12877D0B90037A946 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3C8A3C22877D0B90037A946 /* vulkan_symbol_wrapper.c */, + ); + path = vulkan; + sourceTree = ""; + }; + B3C8A3C32877D0B90037A946 /* queues */ = { + isa = PBXGroup; + children = ( + B3C8A3C42877D0B90037A946 /* fifo_queue.c */, + B3C8A3C52877D0B90037A946 /* message_queue.c */, + B3C8A3C62877D0B90037A946 /* generic_queue.c */, + B3C8A3C72877D0B90037A946 /* task_queue.c */, + ); + path = queues; + sourceTree = ""; + }; + B3C8A3C92877D0B90037A946 /* string */ = { + isa = PBXGroup; + children = ( + B3C8A3CA2877D0B90037A946 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3C8A3CB2877D0B90037A946 /* crt */ = { + isa = PBXGroup; + children = ( + B3C8A3CC2877D0B90037A946 /* include */, + B3C8A3CE2877D0B90037A946 /* string.c */, + ); + path = crt; + sourceTree = ""; + }; + B3C8A3CC2877D0B90037A946 /* include */ = { + isa = PBXGroup; + children = ( + B3C8A3CD2877D0B90037A946 /* string.h */, + ); + path = include; + sourceTree = ""; + }; + B3C8A3CF2877D0B90037A946 /* gfx */ = { + isa = PBXGroup; + children = ( + B3C8A3D02877D0B90037A946 /* gl_capabilities.c */, + B3C8A3D12877D0B90037A946 /* scaler */, + ); + path = gfx; + sourceTree = ""; + }; + B3C8A3D12877D0B90037A946 /* scaler */ = { + isa = PBXGroup; + children = ( + B3C8A3D22877D0B90037A946 /* scaler_int.c */, + B3C8A3D32877D0B90037A946 /* pixconv.c */, + B3C8A3D42877D0B90037A946 /* scaler_filter.c */, + B3C8A3D52877D0B90037A946 /* scaler.c */, + ); + path = scaler; + sourceTree = ""; + }; + B3C8A3D62877D0B90037A946 /* libco */ = { + isa = PBXGroup; + children = ( + B3C8A3D72877D0B90037A946 /* sjlj.c */, + B3C8A3D82877D0B90037A946 /* ps2.c */, + B3C8A3D92877D0B90037A946 /* ppc.c */, + B3C8A3DA2877D0B90037A946 /* ucontext.c */, + B3C8A3DB2877D0B90037A946 /* fiber.c */, + B3C8A3DC2877D0B90037A946 /* aarch64.c */, + B3C8A3DD2877D0B90037A946 /* libco.c */, + B3C8A3DE2877D0B90037A946 /* scefiber.c */, + B3C8A3DF2877D0B90037A946 /* genode.cpp */, + B3C8A3E02877D0B90037A946 /* armeabi.c */, + B3C8A3E12877D0B90037A946 /* amd64.c */, + B3C8A3E22877D0B90037A946 /* psp2.c */, + B3C8A3E32877D0B90037A946 /* x86.c */, + B3C8A3E42877D0B90037A946 /* psp1.c */, + ); + path = libco; + sourceTree = ""; + }; + B3C8A3E52877D0B90037A946 /* media */ = { + isa = PBXGroup; + children = ( + B3C8A3E62877D0B90037A946 /* media_detect_cd.c */, + ); + path = media; + sourceTree = ""; + }; + B3C8A3E72877D0B90037A946 /* switch */ = { + isa = PBXGroup; + children = ( + B3C8A3E82877D0B90037A946 /* mman.h */, + ); + path = switch; + sourceTree = ""; + }; + B3C8A3E92877D0B90037A946 /* xxHash */ = { + isa = PBXGroup; + children = ( + B3C8A3EA2877D0B90037A946 /* xxhash.h */, + B3C8A3EB2877D0B90037A946 /* xxh3.h */, + ); + path = xxHash; + sourceTree = ""; + }; + B3C8A3EE2877D0B90037A946 /* custom */ = { + isa = PBXGroup; + children = ( + B3C8A4392877D0BA0037A946 /* mupen64plus-next_common.h */, + B3C8A43A2877D0BA0037A946 /* android */, + B3C8A3FB2877D0B90037A946 /* dependencies */, + B3C8A3EF2877D0B90037A946 /* GLideN64 */, + B3C8A4EE2877D0BA0037A946 /* mman-win32 */, + B3C8A4F22877D0BA0037A946 /* mupen64plus-core */, + B3C8A3F92877D0B90037A946 /* tools */, + ); + path = custom; + sourceTree = ""; + }; + B3C8A3EF2877D0B90037A946 /* GLideN64 */ = { + isa = PBXGroup; + children = ( + B3C8A3F02877D0B90037A946 /* inc */, + B3C8A3F22877D0B90037A946 /* mupenplus */, + B3C8A3F72877D0B90037A946 /* GLideN64.custom.ini.h */, + B3C8A3F82877D0B90037A946 /* GLideN64_libretro.h */, + ); + path = GLideN64; + sourceTree = ""; + }; + B3C8A3F02877D0B90037A946 /* inc */ = { + isa = PBXGroup; + children = ( + B3C8A3F12877D0B90037A946 /* ARB_buffer_storage.h */, + ); + path = inc; + sourceTree = ""; + }; + B3C8A3F22877D0B90037A946 /* mupenplus */ = { + isa = PBXGroup; + children = ( + B3C8A3F32877D0B90037A946 /* Config_mupenplus.cpp */, + B3C8A3F42877D0B90037A946 /* GLideN64_mupenplus.h */, + B3C8A3F52877D0B90037A946 /* OpenGL_mupenplus.cpp */, + B3C8A3F62877D0B90037A946 /* CommonAPIImpl_mupenplus.cpp */, + ); + path = mupenplus; + sourceTree = ""; + }; + B3C8A3F92877D0B90037A946 /* tools */ = { + isa = PBXGroup; + children = ( + B3C8A3FA2877D0B90037A946 /* gas-preprocessor.pl */, + ); + path = tools; + sourceTree = ""; + }; + B3C8A3FB2877D0B90037A946 /* dependencies */ = { + isa = PBXGroup; + children = ( + B3C8A3FC2877D0B90037A946 /* libpng */, + B3C8A41D2877D0B90037A946 /* libzlib */, + ); + path = dependencies; + sourceTree = ""; + }; + B3C8A3FC2877D0B90037A946 /* libpng */ = { + isa = PBXGroup; + children = ( + B3C8A4192877D0B90037A946 /* png.c */, + B3C8A3FF2877D0B90037A946 /* pngerror.c */, + B3C8A4182877D0B90037A946 /* pngget.c */, + B3C8A4172877D0B90037A946 /* pngmem.c */, + B3C8A4102877D0B90037A946 /* pngpread.c */, + B3C8A4122877D0B90037A946 /* pngread.c */, + B3C8A3FE2877D0B90037A946 /* pngrio.c */, + B3C8A41A2877D0B90037A946 /* pngrtran.c */, + B3C8A41B2877D0B90037A946 /* pngrutil.c */, + B3C8A41C2877D0B90037A946 /* pngset.c */, + B3C8A4022877D0B90037A946 /* pngtrans.c */, + B3C8A4002877D0B90037A946 /* pngwio.c */, + B3C8A4052877D0B90037A946 /* pngwrite.c */, + B3C8A40D2877D0B90037A946 /* pngwtran.c */, + B3C8A40C2877D0B90037A946 /* pngwutil.c */, + B3C8A4032877D0B90037A946 /* config.h */, + B3C8A4062877D0B90037A946 /* png.h */, + B3C8A40F2877D0B90037A946 /* pngconf.h */, + B3C8A4112877D0B90037A946 /* pngdebug.h */, + B3C8A3FD2877D0B90037A946 /* pnginfo.h */, + B3C8A40E2877D0B90037A946 /* pnglibconf.h */, + B3C8A4042877D0B90037A946 /* pngpriv.h */, + B3C8A4012877D0B90037A946 /* pngstruct.h */, + B3C8A4132877D0B90037A946 /* arm */, + B3C8A4072877D0B90037A946 /* contrib */, + ); + path = libpng; + sourceTree = ""; + }; + B3C8A4072877D0B90037A946 /* contrib */ = { + isa = PBXGroup; + children = ( + B3C8A4082877D0B90037A946 /* arm-neon */, + ); + path = contrib; + sourceTree = ""; + }; + B3C8A4082877D0B90037A946 /* arm-neon */ = { + isa = PBXGroup; + children = ( + B3C8A4092877D0B90037A946 /* android-ndk.c */, + B3C8A40A2877D0B90037A946 /* linux-auxv.c */, + B3C8A40B2877D0B90037A946 /* linux.c */, + ); + path = "arm-neon"; + sourceTree = ""; + }; + B3C8A4132877D0B90037A946 /* arm */ = { + isa = PBXGroup; + children = ( + B3C8A4142877D0B90037A946 /* filter_neon.S */, + B3C8A4152877D0B90037A946 /* filter_neon_intrinsics.c */, + B3C8A4162877D0B90037A946 /* arm_init.c */, + ); + path = arm; + sourceTree = ""; + }; + B3C8A41D2877D0B90037A946 /* libzlib */ = { + isa = PBXGroup; + children = ( + B3C8A4242877D0BA0037A946 /* Makefile */, + B3C8A4372877D0BA0037A946 /* adler32.c */, + B3C8A4212877D0BA0037A946 /* compress.c */, + B3C8A4282877D0BA0037A946 /* crc32.c */, + B3C8A4222877D0BA0037A946 /* deflate.c */, + B3C8A4342877D0BA0037A946 /* gzclose.c */, + B3C8A42E2877D0BA0037A946 /* gzlib.c */, + B3C8A4252877D0BA0037A946 /* gzread.c */, + B3C8A4322877D0BA0037A946 /* gzwrite.c */, + B3C8A4292877D0BA0037A946 /* infback.c */, + B3C8A4362877D0BA0037A946 /* inffast.c */, + B3C8A4202877D0BA0037A946 /* inflate.c */, + B3C8A4302877D0BA0037A946 /* inftrees.c */, + B3C8A4332877D0BA0037A946 /* trees.c */, + B3C8A4312877D0BA0037A946 /* uncompr.c */, + B3C8A42A2877D0BA0037A946 /* zutil.c */, + B3C8A4352877D0BA0037A946 /* crc32.h */, + B3C8A42B2877D0BA0037A946 /* deflate.h */, + B3C8A42C2877D0BA0037A946 /* gzguts.h */, + B3C8A4272877D0BA0037A946 /* inffast.h */, + B3C8A4232877D0BA0037A946 /* inffixed.h */, + B3C8A42F2877D0BA0037A946 /* inflate.h */, + B3C8A41F2877D0BA0037A946 /* inftrees.h */, + B3C8A4262877D0BA0037A946 /* trees.h */, + B3C8A4382877D0BA0037A946 /* zconf.h */, + B3C8A42D2877D0BA0037A946 /* zlib.h */, + B3C8A41E2877D0BA0037A946 /* zutil.h */, + ); + path = libzlib; + sourceTree = ""; + }; + B3C8A43A2877D0BA0037A946 /* android */ = { + isa = PBXGroup; + children = ( + B3C8A43B2877D0BA0037A946 /* include */, + ); + path = android; + sourceTree = ""; + }; + B3C8A43B2877D0BA0037A946 /* include */ = { + isa = PBXGroup; + children = ( + B3C8A43C2877D0BA0037A946 /* ui */, + B3C8A4512877D0BA0037A946 /* GLES3 */, + B3C8A4532877D0BA0037A946 /* hardware */, + B3C8A48F2877D0BA0037A946 /* cutils */, + B3C8A4AF2877D0BA0037A946 /* utils */, + B3C8A4DE2877D0BA0037A946 /* system */, + B3C8A4E42877D0BA0037A946 /* android */, + B3C8A4E62877D0BA0037A946 /* log */, + ); + path = include; + sourceTree = ""; + }; + B3C8A43C2877D0BA0037A946 /* ui */ = { + isa = PBXGroup; + children = ( + B3C8A43D2877D0BA0037A946 /* FrameStats.h */, + B3C8A43E2877D0BA0037A946 /* vec2.h */, + B3C8A43F2877D0BA0037A946 /* DisplayInfo.h */, + B3C8A4402877D0BA0037A946 /* mat4.h */, + B3C8A4412877D0BA0037A946 /* GraphicBuffer.h */, + B3C8A4422877D0BA0037A946 /* Fence.h */, + B3C8A4432877D0BA0037A946 /* Point.h */, + B3C8A4442877D0BA0037A946 /* TVecHelpers.h */, + B3C8A4452877D0BA0037A946 /* TMatHelpers.h */, + B3C8A4462877D0BA0037A946 /* UiConfig.h */, + B3C8A4472877D0BA0037A946 /* vec4.h */, + B3C8A4482877D0BA0037A946 /* Rect.h */, + B3C8A4492877D0BA0037A946 /* FramebufferNativeWindow.h */, + B3C8A44A2877D0BA0037A946 /* DisplayStatInfo.h */, + B3C8A44B2877D0BA0037A946 /* vec3.h */, + B3C8A44C2877D0BA0037A946 /* Region.h */, + B3C8A44D2877D0BA0037A946 /* GraphicBufferAllocator.h */, + B3C8A44E2877D0BA0037A946 /* GraphicBufferMapper.h */, + B3C8A44F2877D0BA0037A946 /* ANativeObjectBase.h */, + B3C8A4502877D0BA0037A946 /* PixelFormat.h */, + ); + path = ui; + sourceTree = ""; + }; + B3C8A4512877D0BA0037A946 /* GLES3 */ = { + isa = PBXGroup; + children = ( + B3C8A4522877D0BA0037A946 /* gl31.h */, + ); + path = GLES3; + sourceTree = ""; + }; + B3C8A4532877D0BA0037A946 /* hardware */ = { + isa = PBXGroup; + children = ( + B3C8A4542877D0BA0037A946 /* bt_pan.h */, + B3C8A4552877D0BA0037A946 /* keymaster2.h */, + B3C8A4562877D0BA0037A946 /* gps.h */, + B3C8A4572877D0BA0037A946 /* sound_trigger.h */, + B3C8A4582877D0BA0037A946 /* power.h */, + B3C8A4592877D0BA0037A946 /* hwcomposer_defs.h */, + B3C8A45A2877D0BA0037A946 /* boot_control.h */, + B3C8A45B2877D0BA0037A946 /* bt_common_types.h */, + B3C8A45C2877D0BA0037A946 /* input.h */, + B3C8A45D2877D0BA0037A946 /* activity_recognition.h */, + B3C8A45E2877D0BA0037A946 /* bt_sock.h */, + B3C8A45F2877D0BA0037A946 /* vibrator.h */, + B3C8A4602877D0BA0037A946 /* fused_location.h */, + B3C8A4612877D0BA0037A946 /* consumerir.h */, + B3C8A4622877D0BA0037A946 /* nfc.h */, + B3C8A4632877D0BA0037A946 /* audio_policy.h */, + B3C8A4642877D0BA0037A946 /* nvram.h */, + B3C8A4652877D0BA0037A946 /* camera3.h */, + B3C8A4662877D0BA0037A946 /* bt_gatt_types.h */, + B3C8A4672877D0BA0037A946 /* camera.h */, + B3C8A4682877D0BA0037A946 /* keymaster1.h */, + B3C8A4692877D0BA0037A946 /* sensors.h */, + B3C8A46A2877D0BA0037A946 /* local_time_hal.h */, + B3C8A46B2877D0BA0037A946 /* qemud.h */, + B3C8A46C2877D0BA0037A946 /* keymaster_defs.h */, + B3C8A46D2877D0BA0037A946 /* hwcomposer.h */, + B3C8A46E2877D0BA0037A946 /* audio.h */, + B3C8A46F2877D0BA0037A946 /* lights.h */, + B3C8A4702877D0BA0037A946 /* camera_common.h */, + B3C8A4712877D0BA0037A946 /* nvram_defs.h */, + B3C8A4722877D0BA0037A946 /* bt_gatt_client.h */, + B3C8A4732877D0BA0037A946 /* bluetooth.h */, + B3C8A4742877D0BA0037A946 /* keymaster_common.h */, + B3C8A4752877D0BA0037A946 /* camera2.h */, + B3C8A4762877D0BA0037A946 /* keymaster0.h */, + B3C8A4772877D0BA0037A946 /* bt_gatt_server.h */, + B3C8A4782877D0BA0037A946 /* hw_auth_token.h */, + B3C8A4792877D0BA0037A946 /* bt_sdp.h */, + B3C8A47A2877D0BA0037A946 /* audio_alsaops.h */, + B3C8A47B2877D0BA0037A946 /* memtrack.h */, + B3C8A47C2877D0BA0037A946 /* fb.h */, + B3C8A47D2877D0BA0037A946 /* radio.h */, + B3C8A47E2877D0BA0037A946 /* gralloc.h */, + B3C8A47F2877D0BA0037A946 /* nfc_tag.h */, + B3C8A4802877D0BA0037A946 /* bt_mce.h */, + B3C8A4812877D0BA0037A946 /* hdmi_cec.h */, + B3C8A4822877D0BA0037A946 /* gatekeeper.h */, + B3C8A4832877D0BA0037A946 /* bt_rc.h */, + B3C8A4842877D0BA0037A946 /* bt_hl.h */, + B3C8A4852877D0BA0037A946 /* bt_av.h */, + B3C8A4862877D0BA0037A946 /* bt_hf.h */, + B3C8A4872877D0BA0037A946 /* tv_input.h */, + B3C8A4882877D0BA0037A946 /* bt_hh.h */, + B3C8A4892877D0BA0037A946 /* audio_effect.h */, + B3C8A48A2877D0BA0037A946 /* hardware.h */, + B3C8A48B2877D0BA0037A946 /* fingerprint.h */, + B3C8A48C2877D0BA0037A946 /* bt_gatt.h */, + B3C8A48D2877D0BA0037A946 /* bt_hf_client.h */, + B3C8A48E2877D0BA0037A946 /* qemu_pipe.h */, + ); + path = hardware; + sourceTree = ""; + }; + B3C8A48F2877D0BA0037A946 /* cutils */ = { + isa = PBXGroup; + children = ( + B3C8A4902877D0BA0037A946 /* record_stream.h */, + B3C8A4912877D0BA0037A946 /* aref.h */, + B3C8A4922877D0BA0037A946 /* bitops.h */, + B3C8A4932877D0BA0037A946 /* klog.h */, + B3C8A4942877D0BA0037A946 /* compiler.h */, + B3C8A4952877D0BA0037A946 /* str_parms.h */, + B3C8A4962877D0BA0037A946 /* misc.h */, + B3C8A4972877D0BA0037A946 /* threads.h */, + B3C8A4982877D0BA0037A946 /* jstring.h */, + B3C8A4992877D0BA0037A946 /* hashmap.h */, + B3C8A49A2877D0BA0037A946 /* partition_utils.h */, + B3C8A49B2877D0BA0037A946 /* ashmem.h */, + B3C8A49C2877D0BA0037A946 /* process_name.h */, + B3C8A49D2877D0BA0037A946 /* native_handle.h */, + B3C8A49E2877D0BA0037A946 /* list.h */, + B3C8A49F2877D0BA0037A946 /* config_utils.h */, + B3C8A4A02877D0BA0037A946 /* sockets.h */, + B3C8A4A12877D0BA0037A946 /* trace.h */, + B3C8A4A22877D0BA0037A946 /* log.h */, + B3C8A4A32877D0BA0037A946 /* android_reboot.h */, + B3C8A4A42877D0BA0037A946 /* qtaguid.h */, + B3C8A4A52877D0BA0037A946 /* multiuser.h */, + B3C8A4A62877D0BA0037A946 /* open_memstream.h */, + B3C8A4A72877D0BA0037A946 /* memory.h */, + B3C8A4A82877D0BA0037A946 /* sched_policy.h */, + B3C8A4A92877D0BA0037A946 /* iosched_policy.h */, + B3C8A4AA2877D0BA0037A946 /* debugger.h */, + B3C8A4AB2877D0BA0037A946 /* fs.h */, + B3C8A4AC2877D0BA0037A946 /* properties.h */, + B3C8A4AD2877D0BA0037A946 /* uevent.h */, + B3C8A4AE2877D0BA0037A946 /* atomic.h */, + ); + path = cutils; + sourceTree = ""; + }; + B3C8A4AF2877D0BA0037A946 /* utils */ = { + isa = PBXGroup; + children = ( + B3C8A4B02877D0BA0037A946 /* Timers.h */, + B3C8A4B12877D0BA0037A946 /* Printer.h */, + B3C8A4B22877D0BA0037A946 /* ThreadDefs.h */, + B3C8A4B32877D0BA0037A946 /* PropertyMap.h */, + B3C8A4B42877D0BA0037A946 /* BitSet.h */, + B3C8A4B52877D0BA0037A946 /* NativeHandle.h */, + B3C8A4B62877D0BA0037A946 /* Debug.h */, + B3C8A4B72877D0BA0037A946 /* LruCache.h */, + B3C8A4B82877D0BA0037A946 /* SortedVector.h */, + B3C8A4B92877D0BA0037A946 /* Condition.h */, + B3C8A4BA2877D0BA0037A946 /* ByteOrder.h */, + B3C8A4BB2877D0BA0037A946 /* Flattenable.h */, + B3C8A4BC2877D0BA0037A946 /* Singleton.h */, + B3C8A4BD2877D0BA0037A946 /* CallStack.h */, + B3C8A4BE2877D0BA0037A946 /* VectorImpl.h */, + B3C8A4BF2877D0BA0037A946 /* misc.h */, + B3C8A4C02877D0BA0037A946 /* Endian.h */, + B3C8A4C12877D0BA0037A946 /* AndroidThreads.h */, + B3C8A4C22877D0BA0037A946 /* StrongPointer.h */, + B3C8A4C32877D0BA0037A946 /* String16.h */, + B3C8A4C42877D0BA0037A946 /* Looper.h */, + B3C8A4C52877D0BA0037A946 /* SystemClock.h */, + B3C8A4C62877D0BA0037A946 /* RWLock.h */, + B3C8A4C72877D0BA0037A946 /* Errors.h */, + B3C8A4C82877D0BA0037A946 /* threads.h */, + B3C8A4C92877D0BA0037A946 /* Tokenizer.h */, + B3C8A4CA2877D0BA0037A946 /* TypeHelpers.h */, + B3C8A4CB2877D0BA0037A946 /* ProcessCallStack.h */, + B3C8A4CC2877D0BA0037A946 /* Functor.h */, + B3C8A4CD2877D0BA0037A946 /* Unicode.h */, + B3C8A4CE2877D0BA0037A946 /* List.h */, + B3C8A4CF2877D0BA0037A946 /* Thread.h */, + B3C8A4D02877D0BA0037A946 /* Trace.h */, + B3C8A4D12877D0BA0037A946 /* BlobCache.h */, + B3C8A4D22877D0BA0037A946 /* Log.h */, + B3C8A4D32877D0BA0037A946 /* FileMap.h */, + B3C8A4D42877D0BA0037A946 /* StopWatch.h */, + B3C8A4D52877D0BA0037A946 /* KeyedVector.h */, + B3C8A4D62877D0BA0037A946 /* Compat.h */, + B3C8A4D72877D0BA0037A946 /* Mutex.h */, + B3C8A4D82877D0BA0037A946 /* String8.h */, + B3C8A4D92877D0BA0037A946 /* Vector.h */, + B3C8A4DA2877D0BA0037A946 /* RefBase.h */, + B3C8A4DB2877D0BA0037A946 /* LinearTransform.h */, + B3C8A4DC2877D0BA0037A946 /* JenkinsHash.h */, + B3C8A4DD2877D0BA0037A946 /* Atomic.h */, + ); + path = utils; + sourceTree = ""; + }; + B3C8A4DE2877D0BA0037A946 /* system */ = { + isa = PBXGroup; + children = ( + B3C8A4DF2877D0BA0037A946 /* thread_defs.h */, + B3C8A4E02877D0BA0037A946 /* camera.h */, + B3C8A4E12877D0BA0037A946 /* window.h */, + B3C8A4E22877D0BA0037A946 /* radio.h */, + B3C8A4E32877D0BA0037A946 /* graphics.h */, + ); + path = system; + sourceTree = ""; + }; + B3C8A4E42877D0BA0037A946 /* android */ = { + isa = PBXGroup; + children = ( + B3C8A4E52877D0BA0037A946 /* hardware_buffer.h */, + ); + path = android; + sourceTree = ""; + }; + B3C8A4E62877D0BA0037A946 /* log */ = { + isa = PBXGroup; + children = ( + B3C8A4E72877D0BA0037A946 /* event_tag_map.h */, + B3C8A4E82877D0BA0037A946 /* log_read.h */, + B3C8A4E92877D0BA0037A946 /* uio.h */, + B3C8A4EA2877D0BA0037A946 /* logd.h */, + B3C8A4EB2877D0BA0037A946 /* log.h */, + B3C8A4EC2877D0BA0037A946 /* logprint.h */, + B3C8A4ED2877D0BA0037A946 /* logger.h */, + ); + path = log; + sourceTree = ""; + }; + B3C8A4EE2877D0BA0037A946 /* mman-win32 */ = { + isa = PBXGroup; + children = ( + B3C8A4EF2877D0BA0037A946 /* sys */, + B3C8A4F12877D0BA0037A946 /* mman.c */, + ); + path = "mman-win32"; + sourceTree = ""; + }; + B3C8A4EF2877D0BA0037A946 /* sys */ = { + isa = PBXGroup; + children = ( + B3C8A4F02877D0BA0037A946 /* mman.h */, + ); + path = sys; + sourceTree = ""; + }; + B3C8A4F22877D0BA0037A946 /* mupen64plus-core */ = { + isa = PBXGroup; + children = ( + B3C8A4FA2877D0BA0037A946 /* api */, + B3C8A4FE2877D0BA0037A946 /* main */, + B3C8A4F32877D0BA0037A946 /* plugin */, + ); + path = "mupen64plus-core"; + sourceTree = ""; + }; + B3C8A4F32877D0BA0037A946 /* plugin */ = { + isa = PBXGroup; + children = ( + B3C8A4F42877D0BA0037A946 /* plugin.h */, + B3C8A4F52877D0BA0037A946 /* emulate_game_controller_via_input_plugin.h */, + B3C8A4F62877D0BA0037A946 /* audio_libretro */, + B3C8A4F92877D0BA0037A946 /* emulate_game_controller_via_libretro.c */, + ); + path = plugin; + sourceTree = ""; + }; + B3C8A4F62877D0BA0037A946 /* audio_libretro */ = { + isa = PBXGroup; + children = ( + B3C8A4F72877D0BA0037A946 /* audio_plugin.h */, + B3C8A4F82877D0BA0037A946 /* audio_backend_libretro.c */, + ); + path = audio_libretro; + sourceTree = ""; + }; + B3C8A4FA2877D0BA0037A946 /* api */ = { + isa = PBXGroup; + children = ( + B3C8A4FB2877D0BA0037A946 /* msvc_compat.h */, + B3C8A4FC2877D0BA0037A946 /* vidext_libretro.c */, + B3C8A4FD2877D0BA0037A946 /* config.c */, + ); + path = api; + sourceTree = ""; + }; + B3C8A4FE2877D0BA0037A946 /* main */ = { + isa = PBXGroup; + children = ( + B3C8A4FF2877D0BA0037A946 /* mupen64plus.ini.h */, + ); + path = main; + sourceTree = ""; + }; + B3C8A5002877D0BA0037A946 /* mupen64plus-core */ = { + isa = PBXGroup; + children = ( + B3C8A5252877D0BA0037A946 /* .gitattributes */, + B3C8A5242877D0BA0037A946 /* .gitignore */, + B3C8A5262877D0BA0037A946 /* .gitrepo */, + B3C8A5512877D0BA0037A946 /* CREDITS */, + B3C8A5182877D0BA0037A946 /* INSTALL */, + B3C8A5192877D0BA0037A946 /* LICENSES */, + B3C8A5212877D0BA0037A946 /* README */, + B3C8A5202877D0BA0037A946 /* RELEASE */, + B3C8A5222877D0BA0037A946 /* README.md */, + B3C8A5502877D0BA0037A946 /* .travis.yml */, + B3C8A5232877D0BA0037A946 /* appveyor.yml */, + B3C8A54C2877D0BA0037A946 /* data */, + B3C8A5272877D0BA0037A946 /* doc */, + B3C8A51A2877D0BA0037A946 /* projects */, + B3C8A5522877D0BA0037A946 /* src */, + B3C8A53B2877D0BA0037A946 /* subprojects */, + B3C8A5012877D0BA0037A946 /* tools */, + ); + path = "mupen64plus-core"; + sourceTree = ""; + }; + B3C8A5012877D0BA0037A946 /* tools */ = { + isa = PBXGroup; + children = ( + B3C8A5022877D0BA0037A946 /* install_binary_bundle.sh */, + B3C8A5032877D0BA0037A946 /* joymodel.c */, + B3C8A5042877D0BA0037A946 /* gen_asm_defines.awk */, + B3C8A5052877D0BA0037A946 /* savestate_convert.txt */, + B3C8A5062877D0BA0037A946 /* joymodel.png */, + B3C8A5072877D0BA0037A946 /* osx_build_bundle.sh */, + B3C8A5082877D0BA0037A946 /* build_bundle_bin.sh */, + B3C8A5092877D0BA0037A946 /* profiling.txt */, + B3C8A50A2877D0BA0037A946 /* osx_build_instructions.txt */, + B3C8A50B2877D0BA0037A946 /* regtests */, + B3C8A50E2877D0BA0037A946 /* gen_asm_script.sh */, + B3C8A50F2877D0BA0037A946 /* savestate_convert.c */, + B3C8A5102877D0BA0037A946 /* r4300prof.c */, + B3C8A5112877D0BA0037A946 /* build_bundle_src.sh */, + B3C8A5122877D0BA0037A946 /* m64p_helper_scripts.tar.gz */, + B3C8A5132877D0BA0037A946 /* build_modules_src.sh */, + B3C8A5142877D0BA0037A946 /* cheat_code_convert.py */, + B3C8A5152877D0BA0037A946 /* uninstall_binary_bundle.sh */, + B3C8A5162877D0BA0037A946 /* gen_sdl_key_converter.c */, + B3C8A5172877D0BA0037A946 /* gen_asm_script.cmd */, + ); + path = tools; + sourceTree = ""; + }; + B3C8A50B2877D0BA0037A946 /* regtests */ = { + isa = PBXGroup; + children = ( + B3C8A50C2877D0BA0037A946 /* regression-video.py */, + B3C8A50D2877D0BA0037A946 /* daily-tests.cfg */, + ); + path = regtests; + sourceTree = ""; + }; + B3C8A51A2877D0BA0037A946 /* projects */ = { + isa = PBXGroup; + children = ( + B3C8A51B2877D0BA0037A946 /* msvc */, + B3C8A51E2877D0BA0037A946 /* unix */, + ); + path = projects; + sourceTree = ""; + }; + B3C8A51B2877D0BA0037A946 /* msvc */ = { + isa = PBXGroup; + children = ( + B3C8A51C2877D0BA0037A946 /* mupen64plus-core.vcxproj.filters */, + B3C8A51D2877D0BA0037A946 /* mupen64plus-core.vcxproj */, + ); + path = msvc; + sourceTree = ""; + }; + B3C8A51E2877D0BA0037A946 /* unix */ = { + isa = PBXGroup; + children = ( + B3C8A51F2877D0BA0037A946 /* Makefile */, + ); + path = unix; + sourceTree = ""; + }; + B3C8A5272877D0BA0037A946 /* doc */ = { + isa = PBXGroup; + children = ( + B3C8A5282877D0BA0037A946 /* new_dynarec.mediawiki */, + B3C8A5292877D0BA0037A946 /* emuwiki-api-doc */, + B3C8A5382877D0BA0037A946 /* gpl-license */, + B3C8A5392877D0BA0037A946 /* font-license */, + B3C8A53A2877D0BA0037A946 /* lgpl-license */, + ); + path = doc; + sourceTree = ""; + }; + B3C8A5292877D0BA0037A946 /* emuwiki-api-doc */ = { + isa = PBXGroup; + children = ( + B3C8A52A2877D0BA0037A946 /* Mupen64Plus-v2.0-Netplay-API.mediawiki */, + B3C8A52B2877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Video-Extension.mediawiki */, + B3C8A52C2877D0BA0037A946 /* Mupen64Plus-v2.0-API-Versioning.mediawiki */, + B3C8A52D2877D0BA0037A946 /* Mupen64Plus-v2.0-Core-API-v1.0.mediawiki */, + B3C8A52E2877D0BA0037A946 /* Mupen64Plus-Core-Parameters.mediawiki */, + B3C8A52F2877D0BA0037A946 /* Mupen64Plus-v2.0-Plugin-API.mediawiki */, + B3C8A5302877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Basic.mediawiki */, + B3C8A5312877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Config.mediawiki */, + B3C8A5322877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Front-End.mediawiki */, + B3C8A5332877D0BA0037A946 /* Mupen64Plus-Plugin-Parameters.mediawiki */, + B3C8A5342877D0BA0037A946 /* Mupen64Plus-v2.0-headers.mediawiki */, + B3C8A5352877D0BA0037A946 /* Mupen64Plus-v2.0-Design-Proposal-3.mediawiki */, + B3C8A5362877D0BA0037A946 /* Home.mediawiki */, + B3C8A5372877D0BA0037A946 /* Mupen64Plus-v2.0-Core-Debugger.mediawiki */, + ); + path = "emuwiki-api-doc"; + sourceTree = ""; + }; + B3C8A53B2877D0BA0037A946 /* subprojects */ = { + isa = PBXGroup; + children = ( + B3C8A53C2877D0BA0037A946 /* md5 */, + B3C8A53F2877D0BA0037A946 /* oglft */, + B3C8A5422877D0BA0037A946 /* minizip */, + B3C8A54A2877D0BA0037A946 /* xxhash */, + ); + path = subprojects; + sourceTree = ""; + }; + B3C8A53C2877D0BA0037A946 /* md5 */ = { + isa = PBXGroup; + children = ( + B3C8A53D2877D0BA0037A946 /* md5.h */, + B3C8A53E2877D0BA0037A946 /* md5.c */, + ); + path = md5; + sourceTree = ""; + }; + B3C8A53F2877D0BA0037A946 /* oglft */ = { + isa = PBXGroup; + children = ( + B3C8A5402877D0BA0037A946 /* OGLFT.h */, + B3C8A5412877D0BA0037A946 /* OGLFT.cpp */, + ); + path = oglft; + sourceTree = ""; + }; + B3C8A5422877D0BA0037A946 /* minizip */ = { + isa = PBXGroup; + children = ( + B3C8A5432877D0BA0037A946 /* unzip.c */, + B3C8A5442877D0BA0037A946 /* zip.c */, + B3C8A5452877D0BA0037A946 /* ioapi.c */, + B3C8A5462877D0BA0037A946 /* crypt.h */, + B3C8A5472877D0BA0037A946 /* zip.h */, + B3C8A5482877D0BA0037A946 /* unzip.h */, + B3C8A5492877D0BA0037A946 /* ioapi.h */, + ); + path = minizip; + sourceTree = ""; + }; + B3C8A54A2877D0BA0037A946 /* xxhash */ = { + isa = PBXGroup; + children = ( + B3C8A54B2877D0BA0037A946 /* xxhash.h */, + ); + path = xxhash; + sourceTree = ""; + }; + B3C8A54C2877D0BA0037A946 /* data */ = { + isa = PBXGroup; + children = ( + B3C8A54D2877D0BA0037A946 /* mupencheat.txt */, + B3C8A54E2877D0BA0037A946 /* font.ttf */, + B3C8A54F2877D0BA0037A946 /* mupen64plus.ini */, + ); + path = data; + sourceTree = ""; + }; + B3C8A5522877D0BA0037A946 /* src */ = { + isa = PBXGroup; + children = ( + B3C8A58C2877D0BA0037A946 /* api */, + B3C8A5752877D0BA0037A946 /* asm_defines */, + B3C8A5582877D0BA0037A946 /* backends */, + B3C8A5822877D0BA0037A946 /* debugger */, + B3C8A5A02877D0BA0037A946 /* device */, + B3C8A63D2877D0BA0037A946 /* main */, + B3C8A56C2877D0BA0037A946 /* osal */, + B3C8A5532877D0BA0037A946 /* osd */, + B3C8A5772877D0BA0037A946 /* plugin */, + ); + path = src; + sourceTree = ""; + }; + B3C8A5532877D0BA0037A946 /* osd */ = { + isa = PBXGroup; + children = ( + B3C8A5542877D0BA0037A946 /* osd.c */, + B3C8A5552877D0BA0037A946 /* oglft_c.h */, + B3C8A5562877D0BA0037A946 /* oglft_c.cpp */, + B3C8A5572877D0BA0037A946 /* osd.h */, + ); + path = osd; + sourceTree = ""; + }; + B3C8A5582877D0BA0037A946 /* backends */ = { + isa = PBXGroup; + children = ( + B3C8A5592877D0BA0037A946 /* clock_ctime_plus_delta.c */, + B3C8A5692877D0BA0037A946 /* dummy_video_capture.c */, + B3C8A56A2877D0BA0037A946 /* file_storage.c */, + B3C8A56B2877D0BA0037A946 /* opencv_video_capture.cpp */, + B3C8A55F2877D0BA0037A946 /* clock_ctime_plus_delta.h */, + B3C8A55E2877D0BA0037A946 /* file_storage.h */, + B3C8A5602877D0BA0037A946 /* api */, + B3C8A55A2877D0BA0037A946 /* plugins_compat */, + ); + path = backends; + sourceTree = ""; + }; + B3C8A55A2877D0BA0037A946 /* plugins_compat */ = { + isa = PBXGroup; + children = ( + B3C8A55B2877D0BA0037A946 /* audio_plugin_compat.c */, + B3C8A55C2877D0BA0037A946 /* plugins_compat.h */, + B3C8A55D2877D0BA0037A946 /* input_plugin_compat.c */, + ); + path = plugins_compat; + sourceTree = ""; + }; + B3C8A5602877D0BA0037A946 /* api */ = { + isa = PBXGroup; + children = ( + B3C8A5612877D0BA0037A946 /* video_capture_backend.h */, + B3C8A5622877D0BA0037A946 /* rumble_backend.h */, + B3C8A5632877D0BA0037A946 /* storage_backend.h */, + B3C8A5642877D0BA0037A946 /* audio_out_backend.h */, + B3C8A5652877D0BA0037A946 /* clock_backend.h */, + B3C8A5662877D0BA0037A946 /* video_capture_backend.c */, + B3C8A5672877D0BA0037A946 /* joybus.h */, + B3C8A5682877D0BA0037A946 /* controller_input_backend.h */, + ); + path = api; + sourceTree = ""; + }; + B3C8A56C2877D0BA0037A946 /* osal */ = { + isa = PBXGroup; + children = ( + B32297A028783EB600585AD8 /* osal_files_ios.mm */, + B3C8A56D2877D0BA0037A946 /* dynamiclib_win32.c */, + B3C8A56E2877D0BA0037A946 /* dynamiclib.h */, + B3C8A56F2877D0BA0037A946 /* files_macos.c */, + B3C8A5702877D0BA0037A946 /* files_win32.c */, + B3C8A5712877D0BA0037A946 /* preproc.h */, + B3C8A5722877D0BA0037A946 /* dynamiclib_unix.c */, + B3C8A5732877D0BA0037A946 /* files.h */, + B3C8A5742877D0BA0037A946 /* files_unix.c */, + ); + path = osal; + sourceTree = ""; + }; + B3C8A5752877D0BA0037A946 /* asm_defines */ = { + isa = PBXGroup; + children = ( + B3C8A5762877D0BA0037A946 /* asm_defines.c */, + ); + path = asm_defines; + sourceTree = ""; + }; + B3C8A5772877D0BA0037A946 /* plugin */ = { + isa = PBXGroup; + children = ( + B3C8A5782877D0BA0037A946 /* dummy_audio.c */, + B3C8A5792877D0BA0037A946 /* plugin.h */, + B3C8A57A2877D0BA0037A946 /* dummy_rsp.h */, + B3C8A57B2877D0BA0037A946 /* dummy_video.h */, + B3C8A57C2877D0BA0037A946 /* dummy_input.c */, + B3C8A57D2877D0BA0037A946 /* dummy_audio.h */, + B3C8A57E2877D0BA0037A946 /* plugin.c */, + B3C8A57F2877D0BA0037A946 /* dummy_video.c */, + B3C8A5802877D0BA0037A946 /* dummy_rsp.c */, + B3C8A5812877D0BA0037A946 /* dummy_input.h */, + ); + path = plugin; + sourceTree = ""; + }; + B3C8A5822877D0BA0037A946 /* debugger */ = { + isa = PBXGroup; + children = ( + B3C8A5832877D0BA0037A946 /* dbg_decoder.c */, + B3C8A5842877D0BA0037A946 /* dbg_debugger.h */, + B3C8A5852877D0BA0037A946 /* dbg_memory.h */, + B3C8A5862877D0BA0037A946 /* dbg_breakpoints.c */, + B3C8A5872877D0BA0037A946 /* dbg_decoder.h */, + B3C8A5882877D0BA0037A946 /* dbg_memory.c */, + B3C8A5892877D0BA0037A946 /* dbg_debugger.c */, + B3C8A58A2877D0BA0037A946 /* dbg_decoder_local.h */, + B3C8A58B2877D0BA0037A946 /* dbg_breakpoints.h */, + ); + path = debugger; + sourceTree = ""; + }; + B3C8A58C2877D0BA0037A946 /* api */ = { + isa = PBXGroup; + children = ( + B3C8A59D2877D0BA0037A946 /* callbacks.c */, + B3C8A58E2877D0BA0037A946 /* common.c */, + B3C8A59A2877D0BA0037A946 /* config.c */, + B3C8A5962877D0BA0037A946 /* debugger.c */, + B3C8A58F2877D0BA0037A946 /* frontend.c */, + B3C8A58D2877D0BA0037A946 /* vidext.c */, + B3C8A5952877D0BA0037A946 /* callbacks.h */, + B3C8A5912877D0BA0037A946 /* config.h */, + B3C8A59C2877D0BA0037A946 /* debugger.h */, + B3C8A5942877D0BA0037A946 /* m64p_common.h */, + B3C8A59E2877D0BA0037A946 /* m64p_config.h */, + B3C8A5982877D0BA0037A946 /* m64p_debugger.h */, + B3C8A5902877D0BA0037A946 /* m64p_frontend.h */, + B3C8A59F2877D0BA0037A946 /* m64p_plugin.h */, + B3C8A5972877D0BA0037A946 /* m64p_types.h */, + B3C8A5932877D0BA0037A946 /* m64p_vidext.h */, + B3C8A59B2877D0BA0037A946 /* vidext_sdl2_compat.h */, + B3C8A5992877D0BA0037A946 /* vidext.h */, + B3C8A5922877D0BA0037A946 /* api_export.ver */, + ); + path = api; + sourceTree = ""; + }; + B3C8A5A02877D0BA0037A946 /* device */ = { + isa = PBXGroup; + children = ( + B3C8A6302877D0BA0037A946 /* device.c */, + B3C8A5C52877D0BA0037A946 /* device.h */, + B3C8A6212877D0BA0037A946 /* cart */, + B3C8A6312877D0BA0037A946 /* controllers */, + B3C8A61C2877D0BA0037A946 /* dd */, + B3C8A6152877D0BA0037A946 /* gb */, + B3C8A5C62877D0BA0037A946 /* memory */, + B3C8A5BC2877D0BA0037A946 /* pif */, + B3C8A5CC2877D0BA0037A946 /* r4300 */, + B3C8A5A12877D0BA0037A946 /* rcp */, + B3C8A5C92877D0BA0037A946 /* rdram */, + ); + path = device; + sourceTree = ""; + }; + B3C8A5A12877D0BA0037A946 /* rcp */ = { + isa = PBXGroup; + children = ( + B3C8A5B62877D0BA0037A946 /* ai */, + B3C8A5A52877D0BA0037A946 /* mi */, + B3C8A5B02877D0BA0037A946 /* pi */, + B3C8A5A82877D0BA0037A946 /* rdp */, + B3C8A5AD2877D0BA0037A946 /* ri */, + B3C8A5B92877D0BA0037A946 /* rsp */, + B3C8A5B32877D0BA0037A946 /* si */, + B3C8A5A22877D0BA0037A946 /* vi */, + ); + path = rcp; + sourceTree = ""; + }; + B3C8A5A22877D0BA0037A946 /* vi */ = { + isa = PBXGroup; + children = ( + B3C8A5A32877D0BA0037A946 /* vi_controller.h */, + B3C8A5A42877D0BA0037A946 /* vi_controller.c */, + ); + path = vi; + sourceTree = ""; + }; + B3C8A5A52877D0BA0037A946 /* mi */ = { + isa = PBXGroup; + children = ( + B3C8A5A62877D0BA0037A946 /* mi_controller.h */, + B3C8A5A72877D0BA0037A946 /* mi_controller.c */, + ); + path = mi; + sourceTree = ""; + }; + B3C8A5A82877D0BA0037A946 /* rdp */ = { + isa = PBXGroup; + children = ( + B3C8A5A92877D0BA0037A946 /* fb.c */, + B3C8A5AA2877D0BA0037A946 /* rdp_core.h */, + B3C8A5AB2877D0BA0037A946 /* fb.h */, + B3C8A5AC2877D0BA0037A946 /* rdp_core.c */, + ); + path = rdp; + sourceTree = ""; + }; + B3C8A5AD2877D0BA0037A946 /* ri */ = { + isa = PBXGroup; + children = ( + B3C8A5AE2877D0BA0037A946 /* ri_controller.h */, + B3C8A5AF2877D0BA0037A946 /* ri_controller.c */, + ); + path = ri; + sourceTree = ""; + }; + B3C8A5B02877D0BA0037A946 /* pi */ = { + isa = PBXGroup; + children = ( + B3C8A5B12877D0BA0037A946 /* pi_controller.c */, + B3C8A5B22877D0BA0037A946 /* pi_controller.h */, + ); + path = pi; + sourceTree = ""; + }; + B3C8A5B32877D0BA0037A946 /* si */ = { + isa = PBXGroup; + children = ( + B3C8A5B42877D0BA0037A946 /* si_controller.c */, + B3C8A5B52877D0BA0037A946 /* si_controller.h */, + ); + path = si; + sourceTree = ""; + }; + B3C8A5B62877D0BA0037A946 /* ai */ = { + isa = PBXGroup; + children = ( + B3C8A5B72877D0BA0037A946 /* ai_controller.c */, + B3C8A5B82877D0BA0037A946 /* ai_controller.h */, + ); + path = ai; + sourceTree = ""; + }; + B3C8A5B92877D0BA0037A946 /* rsp */ = { + isa = PBXGroup; + children = ( + B3C8A5BA2877D0BA0037A946 /* rsp_core.h */, + B3C8A5BB2877D0BA0037A946 /* rsp_core.c */, + ); + path = rsp; + sourceTree = ""; + }; + B3C8A5BC2877D0BA0037A946 /* pif */ = { + isa = PBXGroup; + children = ( + B3C8A5BD2877D0BA0037A946 /* cic.c */, + B3C8A5BE2877D0BA0037A946 /* n64_cic_nus_6105.h */, + B3C8A5BF2877D0BA0037A946 /* pif.h */, + B3C8A5C02877D0BA0037A946 /* bootrom_hle.h */, + B3C8A5C12877D0BA0037A946 /* cic.h */, + B3C8A5C22877D0BA0037A946 /* n64_cic_nus_6105.c */, + B3C8A5C32877D0BA0037A946 /* pif.c */, + B3C8A5C42877D0BA0037A946 /* bootrom_hle.c */, + ); + path = pif; + sourceTree = ""; + }; + B3C8A5C62877D0BA0037A946 /* memory */ = { + isa = PBXGroup; + children = ( + B3C8A5C72877D0BA0037A946 /* memory.c */, + B3C8A5C82877D0BA0037A946 /* memory.h */, + ); + path = memory; + sourceTree = ""; + }; + B3C8A5C92877D0BA0037A946 /* rdram */ = { + isa = PBXGroup; + children = ( + B3C8A5CA2877D0BA0037A946 /* rdram.h */, + B3C8A5CB2877D0BA0037A946 /* rdram.c */, + ); + path = rdram; + sourceTree = ""; + }; + B3C8A5CC2877D0BA0037A946 /* r4300 */ = { + isa = PBXGroup; + children = ( + B3C8A5CD2877D0BA0037A946 /* cached_interp.c */, + B3C8A5D52877D0BA0037A946 /* cp0.c */, + B3C8A6062877D0BA0037A946 /* cp1.c */, + B3C8A6092877D0BA0037A946 /* idec.c */, + B3C8A5D82877D0BA0037A946 /* instr_counters.c */, + B3C8A5D02877D0BA0037A946 /* interrupt.c */, + B3C8A5CE2877D0BA0037A946 /* pure_interp.c */, + B3C8A5D22877D0BA0037A946 /* r4300_core.c */, + B3C8A5D92877D0BA0037A946 /* recomp.c */, + B3C8A6082877D0BA0037A946 /* tlb.c */, + B3C8A5D42877D0BA0037A946 /* mips_instructions.def */, + B3C8A5DD2877D0BA0037A946 /* cached_interp.h */, + B3C8A60B2877D0BA0037A946 /* cp0.h */, + B3C8A5D12877D0BA0037A946 /* cp1.h */, + B3C8A5DC2877D0BA0037A946 /* fpu.h */, + B3C8A5D72877D0BA0037A946 /* idec.h */, + B3C8A60A2877D0BA0037A946 /* instr_counters.h */, + B3C8A6072877D0BA0037A946 /* interrupt.h */, + B3C8A5DB2877D0BA0037A946 /* pure_interp.h */, + B3C8A5DE2877D0BA0037A946 /* r4300_core.h */, + B3C8A5D62877D0BA0037A946 /* recomp_types.h */, + B3C8A5CF2877D0BA0037A946 /* recomp.h */, + B3C8A5D32877D0BA0037A946 /* tlb.h */, + B3C8A5DA2877D0BA0037A946 /* opcodes.md */, + B3C8A5E82877D0BA0037A946 /* new_dynarec */, + B3C8A5DF2877D0BA0037A946 /* x86 */, + B3C8A60C2877D0BA0037A946 /* x86_64 */, + ); + path = r4300; + sourceTree = ""; + }; + B3C8A5DF2877D0BA0037A946 /* x86 */ = { + isa = PBXGroup; + children = ( + B3C8A5E02877D0BA0037A946 /* assemble.h */, + B3C8A5E12877D0BA0037A946 /* regcache.h */, + B3C8A5E22877D0BA0037A946 /* dyna_start.asm */, + B3C8A5E32877D0BA0037A946 /* assemble.c */, + B3C8A5E42877D0BA0037A946 /* assemble_struct.h */, + B3C8A5E52877D0BA0037A946 /* dynarec.c */, + B3C8A5E62877D0BA0037A946 /* regcache.c */, + B3C8A5E72877D0BA0037A946 /* interpret.h */, + ); + path = x86; + sourceTree = ""; + }; + B3C8A5E82877D0BA0037A946 /* new_dynarec */ = { + isa = PBXGroup; + children = ( + B3C8A5E92877D0BA0037A946 /* new_dynarec.h */, + B3C8A5EA2877D0BA0037A946 /* x64 */, + B3C8A5F02877D0BA0037A946 /* new_dynarec.c */, + B3C8A5F12877D0BA0037A946 /* x86 */, + B3C8A5F72877D0BA0037A946 /* recomp_dbg.c */, + B3C8A5F82877D0BA0037A946 /* arm */, + B3C8A6002877D0BA0037A946 /* arm64 */, + ); + path = new_dynarec; + sourceTree = ""; + }; + B3C8A5EA2877D0BA0037A946 /* x64 */ = { + isa = PBXGroup; + children = ( + B3C8A5EB2877D0BA0037A946 /* asm_defines_nasm.h */, + B3C8A5EC2877D0BA0037A946 /* asm_defines_gas.h */, + B3C8A5ED2877D0BA0037A946 /* linkage_x64.asm */, + B3C8A5EE2877D0BA0037A946 /* assem_x64.h */, + B3C8A5EF2877D0BA0037A946 /* assem_x64.c */, + ); + path = x64; + sourceTree = ""; + }; + B3C8A5F12877D0BA0037A946 /* x86 */ = { + isa = PBXGroup; + children = ( + B3C8A5F22877D0BA0037A946 /* assem_x86.c */, + B3C8A5F32877D0BA0037A946 /* asm_defines_nasm.h */, + B3C8A5F42877D0BA0037A946 /* asm_defines_gas.h */, + B3C8A5F52877D0BA0037A946 /* linkage_x86.asm */, + B3C8A5F62877D0BA0037A946 /* assem_x86.h */, + ); + path = x86; + sourceTree = ""; + }; + B3C8A5F82877D0BA0037A946 /* arm */ = { + isa = PBXGroup; + children = ( + B3C8A5F92877D0BA0037A946 /* assem_arm.c */, + B3C8A5FA2877D0BA0037A946 /* asm_defines_nasm.h */, + B3C8A5FB2877D0BA0037A946 /* asm_defines_gas.h */, + B3C8A5FC2877D0BA0037A946 /* arm_cpu_features.h */, + B3C8A5FD2877D0BA0037A946 /* assem_arm.h */, + B3C8A5FE2877D0BA0037A946 /* linkage_arm.S */, + B3C8A5FF2877D0BA0037A946 /* arm_cpu_features.c */, + ); + path = arm; + sourceTree = ""; + }; + B3C8A6002877D0BA0037A946 /* arm64 */ = { + isa = PBXGroup; + children = ( + B3C8A6012877D0BA0037A946 /* assem_arm64.h */, + B3C8A6022877D0BA0037A946 /* asm_defines_nasm.h */, + B3C8A6032877D0BA0037A946 /* linkage_arm64.S */, + B3C8A6042877D0BA0037A946 /* asm_defines_gas.h */, + B3C8A6052877D0BA0037A946 /* assem_arm64.c */, + ); + path = arm64; + sourceTree = ""; + }; + B3C8A60C2877D0BA0037A946 /* x86_64 */ = { + isa = PBXGroup; + children = ( + B3C8A60D2877D0BA0037A946 /* assemble.h */, + B3C8A60E2877D0BA0037A946 /* regcache.h */, + B3C8A60F2877D0BA0037A946 /* dyna_start.asm */, + B3C8A6102877D0BA0037A946 /* assemble.c */, + B3C8A6112877D0BA0037A946 /* assemble_struct.h */, + B3C8A6122877D0BA0037A946 /* dynarec.c */, + B3C8A6132877D0BA0037A946 /* regcache.c */, + B3C8A6142877D0BA0037A946 /* interpret.h */, + ); + path = x86_64; + sourceTree = ""; + }; + B3C8A6152877D0BA0037A946 /* gb */ = { + isa = PBXGroup; + children = ( + B3C8A6162877D0BA0037A946 /* mbc3_rtc.h */, + B3C8A6172877D0BA0037A946 /* gb_cart.h */, + B3C8A6182877D0BA0037A946 /* m64282fp.c */, + B3C8A6192877D0BA0037A946 /* m64282fp.h */, + B3C8A61A2877D0BA0037A946 /* gb_cart.c */, + B3C8A61B2877D0BA0037A946 /* mbc3_rtc.c */, + ); + path = gb; + sourceTree = ""; + }; + B3C8A61C2877D0BA0037A946 /* dd */ = { + isa = PBXGroup; + children = ( + B3C8A61D2877D0BA0037A946 /* dd_controller.h */, + B3C8A61E2877D0BA0037A946 /* disk.h */, + B3C8A61F2877D0BA0037A946 /* dd_controller.c */, + B3C8A6202877D0BA0037A946 /* disk.c */, + ); + path = dd; + sourceTree = ""; + }; + B3C8A6212877D0BA0037A946 /* cart */ = { + isa = PBXGroup; + children = ( + B3C8A6272877D0BA0037A946 /* af_rtc.c */, + B3C8A6262877D0BA0037A946 /* cart_rom.c */, + B3C8A6232877D0BA0037A946 /* cart.c */, + B3C8A62A2877D0BA0037A946 /* eeprom.c */, + B3C8A62F2877D0BA0037A946 /* flashram.c */, + B3C8A6252877D0BA0037A946 /* is_viewer.c */, + B3C8A6222877D0BA0037A946 /* sram.c */, + B3C8A62E2877D0BA0037A946 /* af_rtc.h */, + B3C8A62D2877D0BA0037A946 /* cart_rom.h */, + B3C8A62B2877D0BA0037A946 /* cart.h */, + B3C8A6242877D0BA0037A946 /* eeprom.h */, + B3C8A6282877D0BA0037A946 /* flashram.h */, + B3C8A6292877D0BA0037A946 /* is_viewer.h */, + B3C8A62C2877D0BA0037A946 /* sram.h */, + ); + path = cart; + sourceTree = ""; + }; + B3C8A6312877D0BA0037A946 /* controllers */ = { + isa = PBXGroup; + children = ( + B3C8A6322877D0BA0037A946 /* paks */, + B3C8A63B2877D0BA0037A946 /* game_controller.h */, + B3C8A63C2877D0BA0037A946 /* game_controller.c */, + ); + path = controllers; + sourceTree = ""; + }; + B3C8A6322877D0BA0037A946 /* paks */ = { + isa = PBXGroup; + children = ( + B3C8A6332877D0BA0037A946 /* mempak.h */, + B3C8A6342877D0BA0037A946 /* biopak.c */, + B3C8A6352877D0BA0037A946 /* transferpak.h */, + B3C8A6362877D0BA0037A946 /* rumblepak.c */, + B3C8A6372877D0BA0037A946 /* transferpak.c */, + B3C8A6382877D0BA0037A946 /* biopak.h */, + B3C8A6392877D0BA0037A946 /* mempak.c */, + B3C8A63A2877D0BA0037A946 /* rumblepak.h */, + ); + path = paks; + sourceTree = ""; + }; + B3C8A63D2877D0BA0037A946 /* main */ = { + isa = PBXGroup; + children = ( + B3C8A64C2877D0BB0037A946 /* cheat.c */, + B3C8A6492877D0BA0037A946 /* eventloop.c */, + B3C8A6552877D0BB0037A946 /* lirc.c */, + B3C8A64D2877D0BB0037A946 /* main.c */, + B3C8A6422877D0BA0037A946 /* netplay.c */, + B3C8A6522877D0BB0037A946 /* profile.c */, + B3C8A6532877D0BB0037A946 /* rom.c */, + B3C8A6452877D0BA0037A946 /* savestates.c */, + B3C8A64E2877D0BB0037A946 /* screenshot.c */, + B3C8A6562877D0BB0037A946 /* sdl_key_converter.c */, + B3C8A6432877D0BA0037A946 /* util.c */, + B3C8A6542877D0BB0037A946 /* workqueue.c */, + B3C8A63F2877D0BA0037A946 /* cheat.h */, + B3C8A6572877D0BB0037A946 /* eventloop.h */, + B3C8A6462877D0BA0037A946 /* lirc.h */, + B3C8A64B2877D0BA0037A946 /* list.h */, + B3C8A63E2877D0BA0037A946 /* main.h */, + B3C8A6512877D0BB0037A946 /* netplay.h */, + B3C8A6412877D0BA0037A946 /* profile.h */, + B3C8A6472877D0BA0037A946 /* rom.h */, + B3C8A64F2877D0BB0037A946 /* savestates.h */, + B3C8A6442877D0BA0037A946 /* screenshot.h */, + B3C8A64A2877D0BA0037A946 /* sdl_key_converter.h */, + B3C8A6502877D0BB0037A946 /* util.h */, + B3C8A6402877D0BA0037A946 /* version.h */, + B3C8A6482877D0BA0037A946 /* workqueue.h */, + ); + path = main; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B37EFF351C72F43300857158 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B33809332877C5530009C732 /* PVMupen64Plus-NX.h in Headers */, + B33809372877C5530009C732 /* PVMupen64Plus-NXCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3B3B8FF1DED130B00602746 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B33809342877C5530009C732 /* PVMupen64Plus-NX.h in Headers */, + B33809382877C5530009C732 /* PVMupen64Plus-NXCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B3303E4B1DED23C600896D96 /* mupen64plus-nx-retro-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3303E521DED23C700896D96 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-retro-iOS" */; + buildPhases = ( + B3303E481DED23C600896D96 /* Sources */, + B3303E491DED23C600896D96 /* Frameworks */, + B3303E4A1DED23C600896D96 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "mupen64plus-nx-retro-iOS"; + productName = libpng; + productReference = B3303E4C1DED23C600896D96 /* libmupen64plus-nx-retro.a */; + productType = "com.apple.product-type.library.static"; + }; + B37EFF371C72F43300857158 /* PVMupen64Plus-NX-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B37EFF3D1C72F43400857158 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-NX-iOS" */; + buildPhases = ( + B37EFF351C72F43300857158 /* Headers */, + B37EFF331C72F43300857158 /* Sources */, + B37EFF341C72F43300857158 /* Frameworks */, + B37EFF361C72F43300857158 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B33809552877C5FE0009C732 /* PBXTargetDependency */, + B33809582877C5FE0009C732 /* PBXTargetDependency */, + ); + name = "PVMupen64Plus-NX-iOS"; + productName = "PVMupen64Plus-NXDynamic"; + productReference = B37EFF381C72F43300857158 /* PVMupen64Plus-NX.framework */; + productType = "com.apple.product-type.framework"; + }; + B3800FF4208522DC00FA03B8 /* mupen64plus-nx-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3800FFD208522DD00FA03B8 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-iOS" */; + buildPhases = ( + B3800FF1208522DC00FA03B8 /* Sources */, + B3800FF2208522DC00FA03B8 /* Frameworks */, + B3800FF3208522DC00FA03B8 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + B31738002783F925002D3ACD /* PBXTargetDependency */, + ); + name = "mupen64plus-nx-iOS"; + productName = glidenhq; + productReference = B3800FF5208522DC00FA03B8 /* libmupen64plus-nx.a */; + productType = "com.apple.product-type.library.static"; + }; + B3AF702121916E60000FA7F9 /* mupen64plus-nx-retro-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3AF703621916E60000FA7F9 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-retro-tvOS" */; + buildPhases = ( + B3AF702221916E60000FA7F9 /* Sources */, + B3AF703421916E60000FA7F9 /* Frameworks */, + B3AF703521916E60000FA7F9 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "mupen64plus-nx-retro-tvOS"; + productName = libpng; + productReference = B3AF703921916E60000FA7F9 /* libmupen64plus-nx-retro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3AF703A21916E87000FA7F9 /* mupen64plus-nx-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3AF704F21916E87000FA7F9 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-tvOS" */; + buildPhases = ( + B3AF703B21916E87000FA7F9 /* Sources */, + B3AF704C21916E87000FA7F9 /* Frameworks */, + B3AF704E21916E87000FA7F9 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "mupen64plus-nx-tvOS"; + productName = glidenhq; + productReference = B3AF705221916E87000FA7F9 /* libmupen64plus-nx.a */; + productType = "com.apple.product-type.library.static"; + }; + B3B3B8A11DED130B00602746 /* PVMupen64Plus-NX-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3B3B9051DED130B00602746 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-NX-tvOS" */; + buildPhases = ( + B3B3B8FF1DED130B00602746 /* Headers */, + B3B3B8A21DED130B00602746 /* Sources */, + B3B3B8FA1DED130B00602746 /* Frameworks */, + B3B3B9041DED130B00602746 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B338095B2877C6090009C732 /* PBXTargetDependency */, + B338095E2877C6090009C732 /* PBXTargetDependency */, + ); + name = "PVMupen64Plus-NX-tvOS"; + productName = "PVMupen64Plus-NXDynamic"; + productReference = B3B3B9081DED130B00602746 /* PVMupen64Plus-NX.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B3303E4B1DED23C600896D96 = { + CreatedOnToolsVersion = 8.1; + ProvisioningStyle = Automatic; + }; + B37EFF371C72F43300857158 = { + CreatedOnToolsVersion = 7.3; + LastSwiftMigration = 1020; + }; + B3800FF4208522DC00FA03B8 = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3B3B8A11DED130B00602746 = { + LastSwiftMigration = 0930; + }; + }; + }; + buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVMupen64Plus-NX" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 1; + knownRegions = ( + en, + Base, + ); + mainGroup = 089C166AFE841209C02AAC07 /* Mupen64Plus */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B37EFF371C72F43300857158 /* PVMupen64Plus-NX-iOS */, + B3B3B8A11DED130B00602746 /* PVMupen64Plus-NX-tvOS */, + B3303E4B1DED23C600896D96 /* mupen64plus-nx-retro-iOS */, + B3AF702121916E60000FA7F9 /* mupen64plus-nx-retro-tvOS */, + B3800FF4208522DC00FA03B8 /* mupen64plus-nx-iOS */, + B3AF703A21916E87000FA7F9 /* mupen64plus-nx-tvOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B37EFF361C72F43300857158 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33809312877C5530009C732 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3B3B9041DED130B00602746 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33809322877C5530009C732 /* Core.plist in Resources */, + B33809362877C5530009C732 /* Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B3303E481DED23C600896D96 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B32297C72878400900585AD8 /* float_to_s16_neon.S in Sources */, + B32297B528783FD800585AD8 /* file_path.c in Sources */, + B32297BE28783FF100585AD8 /* compat_strcasestr.c in Sources */, + B32297F928789FB000585AD8 /* libco.c in Sources */, + B32297BF28783FF100585AD8 /* compat_posix_string.c in Sources */, + B32297F528789E4D00585AD8 /* sinc_resampler_neon.S in Sources */, + B32299352878ACBD00585AD8 /* vidext_libretro.c in Sources */, + B322975428783DA100585AD8 /* savestates.c in Sources */, + B32297B628783FD800585AD8 /* file_path_io.c in Sources */, + B322992D2878A78F00585AD8 /* rglgen.c in Sources */, + B32297CA2878400900585AD8 /* s16_to_float_neon.c in Sources */, + B32297AA28783F7500585AD8 /* emulate_game_controller_via_libretro.c in Sources */, + B32297AC28783F9600585AD8 /* sinc_resampler.c in Sources */, + B32297D62878403400585AD8 /* vfs_implementation.c in Sources */, + B32297AD28783F9600585AD8 /* nearest_resampler.c in Sources */, + B32297B128783FC100585AD8 /* audio_backend_libretro.c in Sources */, + B322975528783DA100585AD8 /* cheat.c in Sources */, + B32297D72878403E00585AD8 /* file_stream.c in Sources */, + B32297AB28783F9600585AD8 /* audio_resampler.c in Sources */, + B32297C82878400900585AD8 /* s16_to_float_neon.S in Sources */, + B32297F828789F9500585AD8 /* CRC32_ARMV8.cpp in Sources */, + B32297B328783FD800585AD8 /* config_file_userdata.c in Sources */, + B32297DB2878405400585AD8 /* glsm.c in Sources */, + B32299332878ACAC00585AD8 /* stdstring.c in Sources */, + B32297BB28783FE200585AD8 /* rtime.c in Sources */, + B32297D12878401C00585AD8 /* string_list.c in Sources */, + B322975628783DA100585AD8 /* rom.c in Sources */, + B32297BD28783FF100585AD8 /* compat_strl.c in Sources */, + B3C8A65D2877D2A30037A946 /* main.c in Sources */, + B3C8A65A2877D1A80037A946 /* libretro.c in Sources */, + B32297B428783FD800585AD8 /* config_file.c in Sources */, + B32297CF2878401100585AD8 /* features_cpu.c in Sources */, + B32297D32878402500585AD8 /* encoding_utf.c in Sources */, + B32297C428783FFF00585AD8 /* float_to_s16_neon.c in Sources */, + B32297EF28789D9800585AD8 /* glsym_es3.c in Sources */, + B32297D92878404B00585AD8 /* fopen_utf8.c in Sources */, + B32297A728783F5B00585AD8 /* memalign.c in Sources */, + B322975728783DA100585AD8 /* util.c in Sources */, + B32297F328789DF600585AD8 /* gSPNeon.cpp in Sources */, + B32297C92878400900585AD8 /* float_to_s16.c in Sources */, + B32297C328783FFF00585AD8 /* s16_to_float.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B37EFF331C72F43300857158 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3800FF1208522DC00FA03B8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B322989A2878A51700585AD8 /* ColorBufferReader.cpp in Sources */, + B322976B28783E2100585AD8 /* pngtrans.c in Sources */, + B322985E2878A47500585AD8 /* TextDrawer.cpp in Sources */, + B32298422878A40200585AD8 /* TxImage.cpp in Sources */, + B322972D28783D4300585AD8 /* tlb.c in Sources */, + B32298472878A40200585AD8 /* TextureFilters.cpp in Sources */, + B322978228783E3900585AD8 /* uncompr.c in Sources */, + B32298CB2878A5B400585AD8 /* glsl_CombinerProgramUniformFactory.cpp in Sources */, + B32298AC2878A59300585AD8 /* opengl_GLInfo.cpp in Sources */, + B32297E4287840D300585AD8 /* CommonPluginAPI.cpp in Sources */, + B322980F2878A09C00585AD8 /* jit_disasm.c in Sources */, + B32298FE2878A60600585AD8 /* F3DGOLDEN.cpp in Sources */, + B322978C28783E3900585AD8 /* inftrees.c in Sources */, + B32298E32878A5CD00585AD8 /* GraphicBuffer.cpp in Sources */, + B322981E2878A3C900585AD8 /* musyx.c in Sources */, + B32296FF28783CC000585AD8 /* sram.c in Sources */, + B32298F82878A60600585AD8 /* F3DEX2ACCLAIM.cpp in Sources */, + B32297DD287840D300585AD8 /* convert.cpp in Sources */, + B32298B22878A59300585AD8 /* opengl_ContextImpl.cpp in Sources */, + B32298242878A3C900585AD8 /* hle.c in Sources */, + B32298B62878A59300585AD8 /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */, + B322983D2878A40200585AD8 /* TxHiResNoCache.cpp in Sources */, + B32298052878A05700585AD8 /* vfunctions.cpp in Sources */, + B32298222878A3C900585AD8 /* mp3.c in Sources */, + B322989F2878A52E00585AD8 /* GraphicsDrawer.cpp in Sources */, + B322978E28783E3900585AD8 /* inflate.c in Sources */, + B322972428783D1B00585AD8 /* cic.c in Sources */, + B32298872878A4C500585AD8 /* CommonAPIImpl_common.cpp in Sources */, + B32299312878A95600585AD8 /* md5.c in Sources */, + B32298972878A51700585AD8 /* CombinerProgram.cpp in Sources */, + B32298F02878A60600585AD8 /* F3DEX2CBFD.cpp in Sources */, + B322986E2878A47500585AD8 /* GLideN64.cpp in Sources */, + B32297E3287840D300585AD8 /* Combiner.cpp in Sources */, + B322978828783E3900585AD8 /* inffast.c in Sources */, + B322970F28783CD200585AD8 /* rumblepak.c in Sources */, + B322974428783D7B00585AD8 /* ri_controller.c in Sources */, + B32297E5287840D300585AD8 /* Config.cpp in Sources */, + B32298E72878A60600585AD8 /* F3DBETA.cpp in Sources */, + B32298262878A3C900585AD8 /* hvqm.c in Sources */, + B322977228783E2100585AD8 /* pngread.c in Sources */, + B322979028783E3900585AD8 /* trees.c in Sources */, + B32298702878A47500585AD8 /* Textures.cpp in Sources */, + B32298282878A3C900585AD8 /* memory.c in Sources */, + B32298EF2878A60600585AD8 /* F3DEX2.cpp in Sources */, + B322970228783CC000585AD8 /* eeprom.c in Sources */, + B32298ED2878A60600585AD8 /* F3DEX.cpp in Sources */, + B32298252878A3C900585AD8 /* alist_naudio.c in Sources */, + B32298C92878A5B400585AD8 /* glsl_CombinerProgramBuilderCommon.cpp in Sources */, + B322986F2878A47500585AD8 /* SoftwareRender.cpp in Sources */, + B32298F62878A60600585AD8 /* ZSort.cpp in Sources */, + B322978328783E3900585AD8 /* zutil.c in Sources */, + B32298E92878A60600585AD8 /* T3DUX.cpp in Sources */, + B322975928783DB600585AD8 /* plugin.c in Sources */, + B322992B2878A6BE00585AD8 /* rdp.cpp in Sources */, + B32298CD2878A5B400585AD8 /* glsl_CombinerProgramUniformFactoryAccurate.cpp in Sources */, + B322981D2878A3C900585AD8 /* alist_nead.c in Sources */, + B322983E2878A40200585AD8 /* TxFilterExport.cpp in Sources */, + B32298F22878A60600585AD8 /* L3DEX.cpp in Sources */, + B322976928783E2100585AD8 /* pngrtran.c in Sources */, + B32298112878A0D600585AD8 /* jit_note.c in Sources */, + B32296EE28783C2B00585AD8 /* asm_defines.c in Sources */, + B32298FF2878A60600585AD8 /* S2DEX2.cpp in Sources */, + B32298B42878A59300585AD8 /* opengl_Attributes.cpp in Sources */, + B322971728783CE000585AD8 /* dd_controller.c in Sources */, + B32296FE28783CC000585AD8 /* cart.c in Sources */, + B32298432878A40200585AD8 /* TextureFilters_hq4x.cpp in Sources */, + B32298AF2878A59300585AD8 /* opengl_UnbufferedDrawer.cpp in Sources */, + B322974028783D7B00585AD8 /* pi_controller.c in Sources */, + B32298402878A40200585AD8 /* TxHiResCache.cpp in Sources */, + B32298642878A47500585AD8 /* FrameBuffer.cpp in Sources */, + B32298232878A3C900585AD8 /* alist_audio.c in Sources */, + B322978A28783E3900585AD8 /* deflate.c in Sources */, + B322975828783DB600585AD8 /* dummy_input.c in Sources */, + B322970028783CC000585AD8 /* flashram.c in Sources */, + B32298612878A47500585AD8 /* TexrectDrawer.cpp in Sources */, + B32298902878A4FD00585AD8 /* RDRAMtoColorBuffer.cpp in Sources */, + B32298CF2878A5B400585AD8 /* glsl_CombinerInputs.cpp in Sources */, + B32298FB2878A60600585AD8 /* F5Rogue.cpp in Sources */, + B32298122878A0D600585AD8 /* lightning.c in Sources */, + B32297A328783F1600585AD8 /* new_dynarec.c in Sources */, + B322973128783D4300585AD8 /* cp0.c in Sources */, + B32298AE2878A59300585AD8 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */, + B322971A28783CEA00585AD8 /* device.c in Sources */, + B32297E1287840D300585AD8 /* DebugDump.cpp in Sources */, + B32298B72878A59300585AD8 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */, + B32296FA28783C9700585AD8 /* input_plugin_compat.c in Sources */, + B322985D2878A47500585AD8 /* VI.cpp in Sources */, + B322976428783E2100585AD8 /* pngrutil.c in Sources */, + B322983A2878A40200585AD8 /* TxFilter.cpp in Sources */, + B32298A12878A56200585AD8 /* opengl_Command.cpp in Sources */, + B32296EA28783C2300585AD8 /* debugger.c in Sources */, + B322986C2878A47500585AD8 /* gDP.cpp in Sources */, + B322991B2878A61D00585AD8 /* MupenPlusAPIImpl.cpp in Sources */, + B32298EA2878A60600585AD8 /* F3D.cpp in Sources */, + B32296F328783C8000585AD8 /* file_storage.c in Sources */, + B32298D22878A5B400585AD8 /* glsl_CombinerProgramUniformFactoryFast.cpp in Sources */, + B32297A428783F1600585AD8 /* linkage_arm64.S in Sources */, + B322978B28783E3900585AD8 /* infback.c in Sources */, + B32298FC2878A60600585AD8 /* L3D.cpp in Sources */, + B322972628783D1B00585AD8 /* n64_cic_nus_6105.c in Sources */, + B32298EC2878A60600585AD8 /* F3DPD.cpp in Sources */, + B322980D2878A09200585AD8 /* rsp_jit.cpp in Sources */, + B32298272878A3C900585AD8 /* jpeg.c in Sources */, + B32298202878A3C900585AD8 /* alist.c in Sources */, + B32298F32878A60600585AD8 /* ZSortBOSS.cpp in Sources */, + B32298072878A05D00585AD8 /* cp0.cpp in Sources */, + B32296F428783C8000585AD8 /* dummy_video_capture.c in Sources */, + B322986B2878A47500585AD8 /* RSP.cpp in Sources */, + B322988B2878A4DF00585AD8 /* ClipPolygon.cpp in Sources */, + B322974628783D7B00585AD8 /* vi_controller.c in Sources */, + B32299212878A64400585AD8 /* Log.cpp in Sources */, + B322976628783E2100585AD8 /* pngset.c in Sources */, + B32298632878A47500585AD8 /* TextureFilterHandler.cpp in Sources */, + B322985B2878A41000585AD8 /* RSP_LoadMatrix.cpp in Sources */, + B32298452878A40200585AD8 /* TextureFilters_hq2x.cpp in Sources */, + B322972E28783D4300585AD8 /* cp1.c in Sources */, + B32298012878A04700585AD8 /* rsp_core.cpp in Sources */, + B32298FA2878A60600585AD8 /* L3DEX2.cpp in Sources */, + B322980B2878A06700585AD8 /* cp2.cpp in Sources */, + B32298922878A4FD00585AD8 /* DepthBufferToRDRAM.cpp in Sources */, + B322976128783DD000585AD8 /* unzip.c in Sources */, + B322971D28783CFD00585AD8 /* gb_cart.c in Sources */, + B32298992878A51700585AD8 /* ObjectHandle.cpp in Sources */, + B322973328783D4300585AD8 /* r4300_core.c in Sources */, + B322976728783E2100585AD8 /* png.c in Sources */, + B32298682878A47500585AD8 /* GBI.cpp in Sources */, + B322973228783D4300585AD8 /* interrupt.c in Sources */, + B322975A28783DB600585AD8 /* dummy_audio.c in Sources */, + B322971628783CE000585AD8 /* disk.c in Sources */, + B322986A2878A47500585AD8 /* RDP.cpp in Sources */, + B32298B82878A59300585AD8 /* opengl_BufferedDrawer.cpp in Sources */, + B322981F2878A3C900585AD8 /* audio.c in Sources */, + B32298622878A47500585AD8 /* ZlutTexture.cpp in Sources */, + B32297FF2878A01500585AD8 /* jit_allocator.cpp in Sources */, + B322978428783E3900585AD8 /* gzlib.c in Sources */, + B32298AB2878A59300585AD8 /* opengl_BufferManipulationObjectFactory.cpp in Sources */, + B322971C28783CFD00585AD8 /* m64282fp.c in Sources */, + B32298F92878A60600585AD8 /* F3DSETA.cpp in Sources */, + B32298142878A0D600585AD8 /* jit_size.c in Sources */, + B322983C2878A40200585AD8 /* TextureFilters_2xsai.cpp in Sources */, + B322970428783CC000585AD8 /* is_viewer.c in Sources */, + B32297FD2878A00600585AD8 /* rsp_disasm.cpp in Sources */, + B322972728783D1B00585AD8 /* bootrom_hle.c in Sources */, + B32298CA2878A5B400585AD8 /* glsl_Utils.cpp in Sources */, + B32298D02878A5B400585AD8 /* glsl_SpecialShadersFactory.cpp in Sources */, + B322971E28783CFD00585AD8 /* mbc3_rtc.c in Sources */, + B322976528783E2100585AD8 /* pngmem.c in Sources */, + B322978728783E3900585AD8 /* gzread.c in Sources */, + B32298492878A40200585AD8 /* TxUtil.cpp in Sources */, + B32298B02878A59300585AD8 /* opengl_TextureManipulationObjectFactory.cpp in Sources */, + B322977128783E2100585AD8 /* pngget.c in Sources */, + B322978D28783E3900585AD8 /* crc32.c in Sources */, + B32298B52878A59300585AD8 /* opengl_ColorBufferReaderWithEGLImage.cpp in Sources */, + B322988D2878A4EC00585AD8 /* DepthBufferRender.cpp in Sources */, + B322976F28783E2100585AD8 /* pngpread.c in Sources */, + B32298A52878A56200585AD8 /* RingBufferPool.cpp in Sources */, + B32299192878A61000585AD8 /* MupenPlusPluginAPI.cpp in Sources */, + B322978928783E3900585AD8 /* compress.c in Sources */, + B32298662878A47500585AD8 /* PaletteTexture.cpp in Sources */, + B32298912878A4FD00585AD8 /* ColorBufferToRDRAM.cpp in Sources */, + B32298132878A0D600585AD8 /* jit_memory.c in Sources */, + B322970128783CC000585AD8 /* cart_rom.c in Sources */, + B32298CE2878A5B400585AD8 /* glsl_ShaderStorage.cpp in Sources */, + B32296F228783C8000585AD8 /* clock_ctime_plus_delta.c in Sources */, + B322970C28783CD200585AD8 /* mempak.c in Sources */, + B322974328783D7B00585AD8 /* fb.c in Sources */, + B32298F72878A60600585AD8 /* F3DZEX2.cpp in Sources */, + B32298C82878A5B400585AD8 /* glsl_FXAA.cpp in Sources */, + B32299272878A67700585AD8 /* n64video.c in Sources */, + B32298AD2878A59300585AD8 /* opengl_Parameters.cpp in Sources */, + B32298E82878A60600585AD8 /* F3DFLX2.cpp in Sources */, + B322983B2878A40200585AD8 /* TxTexCache.cpp in Sources */, + B32297DE287840D300585AD8 /* CombinerKey.cpp in Sources */, + B322972F28783D4300585AD8 /* cached_interp.c in Sources */, + B32299262878A67300585AD8 /* interface.c in Sources */, + B32298EB2878A60600585AD8 /* F3DDKR.cpp in Sources */, + B322974228783D7B00585AD8 /* rsp_core.c in Sources */, + B322977028783E2100585AD8 /* pngwrite.c in Sources */, + B32298D12878A5B400585AD8 /* glsl_CombinerProgramBuilderAccurate.cpp in Sources */, + B322974528783D7B00585AD8 /* si_controller.c in Sources */, + B32298E52878A5D500585AD8 /* MemoryStatus_mupenplus.cpp in Sources */, + B32298C72878A5B400585AD8 /* glsl_CombinerProgramUniformFactoryCommon.cpp in Sources */, + B322983F2878A40200585AD8 /* TxHiResLoader.cpp in Sources */, + B322976328783DD000585AD8 /* zip.c in Sources */, + B322976228783DD000585AD8 /* ioapi.c in Sources */, + B32298292878A3C900585AD8 /* plugin.c in Sources */, + B32298692878A47500585AD8 /* PostProcessor.cpp in Sources */, + B322973028783D4300585AD8 /* idec.c in Sources */, + B322974128783D7B00585AD8 /* rdp_core.c in Sources */, + B322972528783D1B00585AD8 /* pif.c in Sources */, + B322992F2878A88300585AD8 /* string.c in Sources */, + B32298212878A3C900585AD8 /* re2.c in Sources */, + B32298442878A40200585AD8 /* TxCache.cpp in Sources */, + B322974E28783D8700585AD8 /* rdram.c in Sources */, + B322986D2878A47500585AD8 /* N64.cpp in Sources */, + B32296FB28783C9700585AD8 /* audio_plugin_compat.c in Sources */, + B32298152878A0D600585AD8 /* jit_names.c in Sources */, + B322972C28783D4300585AD8 /* pure_interp.c in Sources */, + B32298CC2878A5B400585AD8 /* glsl_CombinerProgramBuilder.cpp in Sources */, + B32297A128783EB600585AD8 /* osal_files_ios.mm in Sources */, + B32298B12878A59300585AD8 /* opengl_CachedFunctions.cpp in Sources */, + B322985F2878A47500585AD8 /* FrameBufferInfo.cpp in Sources */, + B32298392878A40200585AD8 /* TxReSample.cpp in Sources */, + B32298602878A47500585AD8 /* gSP.cpp in Sources */, + B32298982878A51700585AD8 /* Context.cpp in Sources */, + B322973D28783D5400585AD8 /* ai_controller.c in Sources */, + B322976828783E2100585AD8 /* pngwutil.c in Sources */, + B32297FB28789FF000585AD8 /* parallel.cpp in Sources */, + B32298482878A40200585AD8 /* TxQuantize.cpp in Sources */, + B32296E828783C1200585AD8 /* callbacks.c in Sources */, + B32298FD2878A60600585AD8 /* S2DEX.cpp in Sources */, + B322972228783D0C00585AD8 /* memory.c in Sources */, + B322970D28783CD200585AD8 /* game_controller.c in Sources */, + B32298092878A06100585AD8 /* ls.cpp in Sources */, + B322982A2878A3C900585AD8 /* cicx105.c in Sources */, + B322991F2878A63A00585AD8 /* CommonAPIImpl_mupenplus.cpp in Sources */, + B322976D28783E2100585AD8 /* pngerror.c in Sources */, + B32298D32878A5B400585AD8 /* glsl_CombinerProgramBuilderFast.cpp in Sources */, + B32298462878A40200585AD8 /* TextureFilters_xbrz.cpp in Sources */, + B322978628783E3900585AD8 /* gzwrite.c in Sources */, + B32297E0287840D300585AD8 /* DisplayWindow.cpp in Sources */, + B32298412878A40200585AD8 /* TxDbg.cpp in Sources */, + B322976E28783E2100585AD8 /* pngwio.c in Sources */, + B32298032878A05200585AD8 /* reciprocal.cpp in Sources */, + B322970328783CC000585AD8 /* af_rtc.c in Sources */, + B322976C28783E2100585AD8 /* pngwtran.c in Sources */, + B322978F28783E3900585AD8 /* gzclose.c in Sources */, + B32298D42878A5B400585AD8 /* glsl_CombinerProgramImpl.cpp in Sources */, + B32297DF287840D300585AD8 /* DepthBuffer.cpp in Sources */, + B32297E2287840D300585AD8 /* Debugger.cpp in Sources */, + B322976A28783E2100585AD8 /* pngrio.c in Sources */, + B32298892878A4D500585AD8 /* NoiseTexture.cpp in Sources */, + B322973C28783D5400585AD8 /* mi_controller.c in Sources */, + B32296EB28783C2300585AD8 /* frontend.c in Sources */, + B32298852878A49800585AD8 /* mupen64plus_DisplayWindow.cpp in Sources */, + B32298162878A0D600585AD8 /* jit_print.c in Sources */, + B32298652878A47500585AD8 /* Performance.cpp in Sources */, + B32298F12878A60600585AD8 /* F5Indi_Naboo.cpp in Sources */, + B32298EE2878A60600585AD8 /* F3DAM.cpp in Sources */, + B32296F028783C5D00585AD8 /* config.c in Sources */, + B32297F128789DB900585AD8 /* 3DMathNeon.cpp in Sources */, + B32298F42878A60600585AD8 /* Turbo3D.cpp in Sources */, + B322991D2878A63100585AD8 /* Config_mupenplus.cpp in Sources */, + B32298B32878A59300585AD8 /* opengl_Utils.cpp in Sources */, + B32296F828783C8A00585AD8 /* video_capture_backend.c in Sources */, + B32298A22878A56200585AD8 /* opengl_WrappedFunctions.cpp in Sources */, + B32298672878A47500585AD8 /* DisplayLoadProgress.cpp in Sources */, + B322988F2878A4FD00585AD8 /* BlueNoiseTexture.cpp in Sources */, + B32298A32878A56200585AD8 /* opengl_Wrapper.cpp in Sources */, + B322978528783E3900585AD8 /* adler32.c in Sources */, + B32299232878A66C00585AD8 /* parallel_al.cpp in Sources */, + B322971028783CD200585AD8 /* biopak.c in Sources */, + B322970E28783CD200585AD8 /* transferpak.c in Sources */, + B32298A42878A56200585AD8 /* opengl_ObjectPool.cpp in Sources */, + B32298F52878A60600585AD8 /* F3DTEXA.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3AF702221916E60000FA7F9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B32297CB2878400A00585AD8 /* float_to_s16_neon.S in Sources */, + B32297B928783FD900585AD8 /* file_path.c in Sources */, + B32297C128783FF100585AD8 /* compat_strcasestr.c in Sources */, + B32297FA28789FB000585AD8 /* libco.c in Sources */, + B32297C228783FF100585AD8 /* compat_posix_string.c in Sources */, + B32297F628789E4E00585AD8 /* sinc_resampler_neon.S in Sources */, + B32299362878ACBE00585AD8 /* vidext_libretro.c in Sources */, + B322975028783DA000585AD8 /* savestates.c in Sources */, + B32297BA28783FD900585AD8 /* file_path_io.c in Sources */, + B322992E2878A79000585AD8 /* rglgen.c in Sources */, + B32297CE2878400A00585AD8 /* s16_to_float_neon.c in Sources */, + B32297A928783F7500585AD8 /* emulate_game_controller_via_libretro.c in Sources */, + B32297AF28783F9600585AD8 /* sinc_resampler.c in Sources */, + B32297D52878403300585AD8 /* vfs_implementation.c in Sources */, + B32297B028783F9600585AD8 /* nearest_resampler.c in Sources */, + B32297B228783FC200585AD8 /* audio_backend_libretro.c in Sources */, + B322975128783DA000585AD8 /* cheat.c in Sources */, + B32297D82878403E00585AD8 /* file_stream.c in Sources */, + B32297AE28783F9600585AD8 /* audio_resampler.c in Sources */, + B32297CC2878400A00585AD8 /* s16_to_float_neon.S in Sources */, + B32297F728789F9500585AD8 /* CRC32_ARMV8.cpp in Sources */, + B32297B728783FD900585AD8 /* config_file_userdata.c in Sources */, + B32297DC2878405400585AD8 /* glsm.c in Sources */, + B32299342878ACAC00585AD8 /* stdstring.c in Sources */, + B32297BC28783FE300585AD8 /* rtime.c in Sources */, + B32297D22878401C00585AD8 /* string_list.c in Sources */, + B322975228783DA000585AD8 /* rom.c in Sources */, + B32297C028783FF100585AD8 /* compat_strl.c in Sources */, + B3C8A65C2877D2A20037A946 /* main.c in Sources */, + B3C8A65B2877D1A90037A946 /* libretro.c in Sources */, + B32297B828783FD900585AD8 /* config_file.c in Sources */, + B32297D02878401200585AD8 /* features_cpu.c in Sources */, + B32297D42878402600585AD8 /* encoding_utf.c in Sources */, + B32297C628783FFF00585AD8 /* float_to_s16_neon.c in Sources */, + B32297F028789D9900585AD8 /* glsym_es3.c in Sources */, + B32297DA2878404B00585AD8 /* fopen_utf8.c in Sources */, + B32297A828783F5B00585AD8 /* memalign.c in Sources */, + B322975328783DA000585AD8 /* util.c in Sources */, + B32297F428789DFF00585AD8 /* gSPNeon.cpp in Sources */, + B32297CD2878400A00585AD8 /* float_to_s16.c in Sources */, + B32297C528783FFF00585AD8 /* s16_to_float.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3AF703B21916E87000FA7F9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B322989E2878A51800585AD8 /* ColorBufferReader.cpp in Sources */, + B322977A28783E2100585AD8 /* pngtrans.c in Sources */, + B32298722878A47500585AD8 /* TextDrawer.cpp in Sources */, + B32298532878A40300585AD8 /* TxImage.cpp in Sources */, + B322973528783D4400585AD8 /* tlb.c in Sources */, + B32298582878A40300585AD8 /* TextureFilters.cpp in Sources */, + B322979128783E3900585AD8 /* uncompr.c in Sources */, + B32298D92878A5B500585AD8 /* glsl_CombinerProgramUniformFactory.cpp in Sources */, + B32298BA2878A59300585AD8 /* opengl_GLInfo.cpp in Sources */, + B32297ED287840D300585AD8 /* CommonPluginAPI.cpp in Sources */, + B32298102878A09C00585AD8 /* jit_disasm.c in Sources */, + B32299172878A60700585AD8 /* F3DGOLDEN.cpp in Sources */, + B322979B28783E3900585AD8 /* inftrees.c in Sources */, + B32298E42878A5CE00585AD8 /* GraphicBuffer.cpp in Sources */, + B322982C2878A3CA00585AD8 /* musyx.c in Sources */, + B322970628783CC100585AD8 /* sram.c in Sources */, + B32299112878A60700585AD8 /* F3DEX2ACCLAIM.cpp in Sources */, + B32297E6287840D300585AD8 /* convert.cpp in Sources */, + B32298C02878A59300585AD8 /* opengl_ContextImpl.cpp in Sources */, + B32298322878A3CA00585AD8 /* hle.c in Sources */, + B32298C42878A59300585AD8 /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */, + B322984E2878A40300585AD8 /* TxHiResNoCache.cpp in Sources */, + B32298062878A05800585AD8 /* vfunctions.cpp in Sources */, + B32298302878A3CA00585AD8 /* mp3.c in Sources */, + B32298A02878A52E00585AD8 /* GraphicsDrawer.cpp in Sources */, + B322979D28783E3900585AD8 /* inflate.c in Sources */, + B322972828783D1C00585AD8 /* cic.c in Sources */, + B32298882878A4C500585AD8 /* CommonAPIImpl_common.cpp in Sources */, + B32299322878A95600585AD8 /* md5.c in Sources */, + B322989B2878A51800585AD8 /* CombinerProgram.cpp in Sources */, + B32299092878A60700585AD8 /* F3DEX2CBFD.cpp in Sources */, + B32298822878A47500585AD8 /* GLideN64.cpp in Sources */, + B32297EC287840D300585AD8 /* Combiner.cpp in Sources */, + B322979728783E3900585AD8 /* inffast.c in Sources */, + B322971428783CD200585AD8 /* rumblepak.c in Sources */, + B322974B28783D7B00585AD8 /* ri_controller.c in Sources */, + B32297EE287840D300585AD8 /* Config.cpp in Sources */, + B32299002878A60700585AD8 /* F3DBETA.cpp in Sources */, + B32298342878A3CA00585AD8 /* hvqm.c in Sources */, + B322978128783E2100585AD8 /* pngread.c in Sources */, + B322979F28783E3900585AD8 /* trees.c in Sources */, + B32298842878A47500585AD8 /* Textures.cpp in Sources */, + B32298362878A3CA00585AD8 /* memory.c in Sources */, + B32299082878A60700585AD8 /* F3DEX2.cpp in Sources */, + B322970928783CC100585AD8 /* eeprom.c in Sources */, + B32299062878A60700585AD8 /* F3DEX.cpp in Sources */, + B32298332878A3CA00585AD8 /* alist_naudio.c in Sources */, + B32298D72878A5B500585AD8 /* glsl_CombinerProgramBuilderCommon.cpp in Sources */, + B32298832878A47500585AD8 /* SoftwareRender.cpp in Sources */, + B322990F2878A60700585AD8 /* ZSort.cpp in Sources */, + B322979228783E3900585AD8 /* zutil.c in Sources */, + B32299022878A60700585AD8 /* T3DUX.cpp in Sources */, + B322975C28783DB600585AD8 /* plugin.c in Sources */, + B322992C2878A6BE00585AD8 /* rdp.cpp in Sources */, + B32298DB2878A5B500585AD8 /* glsl_CombinerProgramUniformFactoryAccurate.cpp in Sources */, + B322982B2878A3CA00585AD8 /* alist_nead.c in Sources */, + B322984F2878A40300585AD8 /* TxFilterExport.cpp in Sources */, + B322990B2878A60700585AD8 /* L3DEX.cpp in Sources */, + B322977828783E2100585AD8 /* pngrtran.c in Sources */, + B32298172878A0D600585AD8 /* jit_note.c in Sources */, + B32296EF28783C2C00585AD8 /* asm_defines.c in Sources */, + B32299182878A60700585AD8 /* S2DEX2.cpp in Sources */, + B32298C22878A59300585AD8 /* opengl_Attributes.cpp in Sources */, + B322971928783CE100585AD8 /* dd_controller.c in Sources */, + B322970528783CC100585AD8 /* cart.c in Sources */, + B32298542878A40300585AD8 /* TextureFilters_hq4x.cpp in Sources */, + B32298BD2878A59300585AD8 /* opengl_UnbufferedDrawer.cpp in Sources */, + B322974728783D7B00585AD8 /* pi_controller.c in Sources */, + B32298512878A40300585AD8 /* TxHiResCache.cpp in Sources */, + B32298782878A47500585AD8 /* FrameBuffer.cpp in Sources */, + B32298312878A3CA00585AD8 /* alist_audio.c in Sources */, + B322979928783E3900585AD8 /* deflate.c in Sources */, + B322975B28783DB600585AD8 /* dummy_input.c in Sources */, + B322970728783CC100585AD8 /* flashram.c in Sources */, + B32298752878A47500585AD8 /* TexrectDrawer.cpp in Sources */, + B32298942878A4FD00585AD8 /* RDRAMtoColorBuffer.cpp in Sources */, + B32298DD2878A5B500585AD8 /* glsl_CombinerInputs.cpp in Sources */, + B32299142878A60700585AD8 /* F5Rogue.cpp in Sources */, + B32298182878A0D600585AD8 /* lightning.c in Sources */, + B32297A528783F1600585AD8 /* new_dynarec.c in Sources */, + B322973928783D4400585AD8 /* cp0.c in Sources */, + B32298BC2878A59300585AD8 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */, + B322971B28783CEA00585AD8 /* device.c in Sources */, + B32297EA287840D300585AD8 /* DebugDump.cpp in Sources */, + B32298C52878A59300585AD8 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */, + B32296FC28783C9700585AD8 /* input_plugin_compat.c in Sources */, + B32298712878A47500585AD8 /* VI.cpp in Sources */, + B322977328783E2100585AD8 /* pngrutil.c in Sources */, + B322984B2878A40300585AD8 /* TxFilter.cpp in Sources */, + B32298A62878A56200585AD8 /* opengl_Command.cpp in Sources */, + B32296EC28783C2300585AD8 /* debugger.c in Sources */, + B32298802878A47500585AD8 /* gDP.cpp in Sources */, + B322991C2878A61E00585AD8 /* MupenPlusAPIImpl.cpp in Sources */, + B32299032878A60700585AD8 /* F3D.cpp in Sources */, + B32296F628783C8100585AD8 /* file_storage.c in Sources */, + B32298E02878A5B500585AD8 /* glsl_CombinerProgramUniformFactoryFast.cpp in Sources */, + B32297A628783F1600585AD8 /* linkage_arm64.S in Sources */, + B322979A28783E3900585AD8 /* infback.c in Sources */, + B32299152878A60700585AD8 /* L3D.cpp in Sources */, + B322972A28783D1C00585AD8 /* n64_cic_nus_6105.c in Sources */, + B32299052878A60700585AD8 /* F3DPD.cpp in Sources */, + B322980E2878A09200585AD8 /* rsp_jit.cpp in Sources */, + B32298352878A3CA00585AD8 /* jpeg.c in Sources */, + B322982E2878A3CA00585AD8 /* alist.c in Sources */, + B322990C2878A60700585AD8 /* ZSortBOSS.cpp in Sources */, + B32298082878A05D00585AD8 /* cp0.cpp in Sources */, + B32296F728783C8100585AD8 /* dummy_video_capture.c in Sources */, + B322987F2878A47500585AD8 /* RSP.cpp in Sources */, + B322988C2878A4DF00585AD8 /* ClipPolygon.cpp in Sources */, + B322974D28783D7B00585AD8 /* vi_controller.c in Sources */, + B32299222878A64500585AD8 /* Log.cpp in Sources */, + B322977528783E2100585AD8 /* pngset.c in Sources */, + B32298772878A47500585AD8 /* TextureFilterHandler.cpp in Sources */, + B322985C2878A41100585AD8 /* RSP_LoadMatrix.cpp in Sources */, + B32298562878A40300585AD8 /* TextureFilters_hq2x.cpp in Sources */, + B322973628783D4400585AD8 /* cp1.c in Sources */, + B32298022878A04700585AD8 /* rsp_core.cpp in Sources */, + B32299132878A60700585AD8 /* L3DEX2.cpp in Sources */, + B322980C2878A06700585AD8 /* cp2.cpp in Sources */, + B32298962878A4FD00585AD8 /* DepthBufferToRDRAM.cpp in Sources */, + B322975E28783DD000585AD8 /* unzip.c in Sources */, + B322972028783CFD00585AD8 /* gb_cart.c in Sources */, + B322989D2878A51800585AD8 /* ObjectHandle.cpp in Sources */, + B322973B28783D4400585AD8 /* r4300_core.c in Sources */, + B322977628783E2100585AD8 /* png.c in Sources */, + B322987C2878A47500585AD8 /* GBI.cpp in Sources */, + B322973A28783D4400585AD8 /* interrupt.c in Sources */, + B322975D28783DB600585AD8 /* dummy_audio.c in Sources */, + B322971828783CE100585AD8 /* disk.c in Sources */, + B322987E2878A47500585AD8 /* RDP.cpp in Sources */, + B32298C62878A59300585AD8 /* opengl_BufferedDrawer.cpp in Sources */, + B322982D2878A3CA00585AD8 /* audio.c in Sources */, + B32298762878A47500585AD8 /* ZlutTexture.cpp in Sources */, + B32298002878A01600585AD8 /* jit_allocator.cpp in Sources */, + B322979328783E3900585AD8 /* gzlib.c in Sources */, + B32298B92878A59300585AD8 /* opengl_BufferManipulationObjectFactory.cpp in Sources */, + B322971F28783CFD00585AD8 /* m64282fp.c in Sources */, + B32299122878A60700585AD8 /* F3DSETA.cpp in Sources */, + B322981A2878A0D600585AD8 /* jit_size.c in Sources */, + B322984D2878A40300585AD8 /* TextureFilters_2xsai.cpp in Sources */, + B322970B28783CC100585AD8 /* is_viewer.c in Sources */, + B32297FE2878A00600585AD8 /* rsp_disasm.cpp in Sources */, + B322972B28783D1C00585AD8 /* bootrom_hle.c in Sources */, + B32298D82878A5B500585AD8 /* glsl_Utils.cpp in Sources */, + B32298DE2878A5B500585AD8 /* glsl_SpecialShadersFactory.cpp in Sources */, + B322972128783CFD00585AD8 /* mbc3_rtc.c in Sources */, + B322977428783E2100585AD8 /* pngmem.c in Sources */, + B322979628783E3900585AD8 /* gzread.c in Sources */, + B322985A2878A40300585AD8 /* TxUtil.cpp in Sources */, + B32298BE2878A59300585AD8 /* opengl_TextureManipulationObjectFactory.cpp in Sources */, + B322978028783E2100585AD8 /* pngget.c in Sources */, + B322979C28783E3900585AD8 /* crc32.c in Sources */, + B32298C32878A59300585AD8 /* opengl_ColorBufferReaderWithEGLImage.cpp in Sources */, + B322988E2878A4ED00585AD8 /* DepthBufferRender.cpp in Sources */, + B322977E28783E2100585AD8 /* pngpread.c in Sources */, + B32298AA2878A56200585AD8 /* RingBufferPool.cpp in Sources */, + B322991A2878A61600585AD8 /* MupenPlusPluginAPI.cpp in Sources */, + B322979828783E3900585AD8 /* compress.c in Sources */, + B322987A2878A47500585AD8 /* PaletteTexture.cpp in Sources */, + B32298952878A4FD00585AD8 /* ColorBufferToRDRAM.cpp in Sources */, + B32298192878A0D600585AD8 /* jit_memory.c in Sources */, + B322970828783CC100585AD8 /* cart_rom.c in Sources */, + B32298DC2878A5B500585AD8 /* glsl_ShaderStorage.cpp in Sources */, + B32296F528783C8100585AD8 /* clock_ctime_plus_delta.c in Sources */, + B322971128783CD200585AD8 /* mempak.c in Sources */, + B322974A28783D7B00585AD8 /* fb.c in Sources */, + B32299102878A60700585AD8 /* F3DZEX2.cpp in Sources */, + B32298D62878A5B500585AD8 /* glsl_FXAA.cpp in Sources */, + B32299282878A67800585AD8 /* n64video.c in Sources */, + B32298BB2878A59300585AD8 /* opengl_Parameters.cpp in Sources */, + B32299012878A60700585AD8 /* F3DFLX2.cpp in Sources */, + B322984C2878A40300585AD8 /* TxTexCache.cpp in Sources */, + B32297E7287840D300585AD8 /* CombinerKey.cpp in Sources */, + B322973728783D4400585AD8 /* cached_interp.c in Sources */, + B32299252878A67300585AD8 /* interface.c in Sources */, + B32299042878A60700585AD8 /* F3DDKR.cpp in Sources */, + B322974928783D7B00585AD8 /* rsp_core.c in Sources */, + B322977F28783E2100585AD8 /* pngwrite.c in Sources */, + B32298DF2878A5B500585AD8 /* glsl_CombinerProgramBuilderAccurate.cpp in Sources */, + B322974C28783D7B00585AD8 /* si_controller.c in Sources */, + B32298E62878A5D500585AD8 /* MemoryStatus_mupenplus.cpp in Sources */, + B32298D52878A5B500585AD8 /* glsl_CombinerProgramUniformFactoryCommon.cpp in Sources */, + B32298502878A40300585AD8 /* TxHiResLoader.cpp in Sources */, + B322976028783DD000585AD8 /* zip.c in Sources */, + B322975F28783DD000585AD8 /* ioapi.c in Sources */, + B32298372878A3CA00585AD8 /* plugin.c in Sources */, + B322987D2878A47500585AD8 /* PostProcessor.cpp in Sources */, + B322973828783D4400585AD8 /* idec.c in Sources */, + B322974828783D7B00585AD8 /* rdp_core.c in Sources */, + B322972928783D1C00585AD8 /* pif.c in Sources */, + B32299302878A88300585AD8 /* string.c in Sources */, + B322982F2878A3CA00585AD8 /* re2.c in Sources */, + B32298552878A40300585AD8 /* TxCache.cpp in Sources */, + B322974F28783D8800585AD8 /* rdram.c in Sources */, + B32298812878A47500585AD8 /* N64.cpp in Sources */, + B32296FD28783C9700585AD8 /* audio_plugin_compat.c in Sources */, + B322981B2878A0D600585AD8 /* jit_names.c in Sources */, + B322973428783D4400585AD8 /* pure_interp.c in Sources */, + B32298DA2878A5B500585AD8 /* glsl_CombinerProgramBuilder.cpp in Sources */, + B32297A228783EB600585AD8 /* osal_files_ios.mm in Sources */, + B32298BF2878A59300585AD8 /* opengl_CachedFunctions.cpp in Sources */, + B32298732878A47500585AD8 /* FrameBufferInfo.cpp in Sources */, + B322984A2878A40300585AD8 /* TxReSample.cpp in Sources */, + B32298742878A47500585AD8 /* gSP.cpp in Sources */, + B322989C2878A51800585AD8 /* Context.cpp in Sources */, + B322973F28783D5400585AD8 /* ai_controller.c in Sources */, + B322977728783E2100585AD8 /* pngwutil.c in Sources */, + B32297FC28789FF100585AD8 /* parallel.cpp in Sources */, + B32298592878A40300585AD8 /* TxQuantize.cpp in Sources */, + B32296E928783C1200585AD8 /* callbacks.c in Sources */, + B32299162878A60700585AD8 /* S2DEX.cpp in Sources */, + B322972328783D0C00585AD8 /* memory.c in Sources */, + B322971228783CD200585AD8 /* game_controller.c in Sources */, + B322980A2878A06200585AD8 /* ls.cpp in Sources */, + B32298382878A3CA00585AD8 /* cicx105.c in Sources */, + B32299202878A63B00585AD8 /* CommonAPIImpl_mupenplus.cpp in Sources */, + B322977C28783E2100585AD8 /* pngerror.c in Sources */, + B32298E12878A5B500585AD8 /* glsl_CombinerProgramBuilderFast.cpp in Sources */, + B32298572878A40300585AD8 /* TextureFilters_xbrz.cpp in Sources */, + B322979528783E3900585AD8 /* gzwrite.c in Sources */, + B32297E9287840D300585AD8 /* DisplayWindow.cpp in Sources */, + B32298522878A40300585AD8 /* TxDbg.cpp in Sources */, + B322977D28783E2100585AD8 /* pngwio.c in Sources */, + B32298042878A05200585AD8 /* reciprocal.cpp in Sources */, + B322970A28783CC100585AD8 /* af_rtc.c in Sources */, + B322977B28783E2100585AD8 /* pngwtran.c in Sources */, + B322979E28783E3900585AD8 /* gzclose.c in Sources */, + B32298E22878A5B500585AD8 /* glsl_CombinerProgramImpl.cpp in Sources */, + B32297E8287840D300585AD8 /* DepthBuffer.cpp in Sources */, + B32297EB287840D300585AD8 /* Debugger.cpp in Sources */, + B322977928783E2100585AD8 /* pngrio.c in Sources */, + B322988A2878A4D500585AD8 /* NoiseTexture.cpp in Sources */, + B322973E28783D5400585AD8 /* mi_controller.c in Sources */, + B32296ED28783C2300585AD8 /* frontend.c in Sources */, + B32298862878A49800585AD8 /* mupen64plus_DisplayWindow.cpp in Sources */, + B322981C2878A0D600585AD8 /* jit_print.c in Sources */, + B32298792878A47500585AD8 /* Performance.cpp in Sources */, + B322990A2878A60700585AD8 /* F5Indi_Naboo.cpp in Sources */, + B32299072878A60700585AD8 /* F3DAM.cpp in Sources */, + B32296F128783C5D00585AD8 /* config.c in Sources */, + B32297F228789DB900585AD8 /* 3DMathNeon.cpp in Sources */, + B322990D2878A60700585AD8 /* Turbo3D.cpp in Sources */, + B322991E2878A63200585AD8 /* Config_mupenplus.cpp in Sources */, + B32298C12878A59300585AD8 /* opengl_Utils.cpp in Sources */, + B32296F928783C8A00585AD8 /* video_capture_backend.c in Sources */, + B32298A72878A56200585AD8 /* opengl_WrappedFunctions.cpp in Sources */, + B322987B2878A47500585AD8 /* DisplayLoadProgress.cpp in Sources */, + B32298932878A4FD00585AD8 /* BlueNoiseTexture.cpp in Sources */, + B32298A82878A56200585AD8 /* opengl_Wrapper.cpp in Sources */, + B322979428783E3900585AD8 /* adler32.c in Sources */, + B32299242878A66D00585AD8 /* parallel_al.cpp in Sources */, + B322971528783CD200585AD8 /* biopak.c in Sources */, + B322971328783CD200585AD8 /* transferpak.c in Sources */, + B32298A92878A56200585AD8 /* opengl_ObjectPool.cpp in Sources */, + B322990E2878A60700585AD8 /* F3DTEXA.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3B3B8A21DED130B00602746 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B31738002783F925002D3ACD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3303E4B1DED23C600896D96 /* mupen64plus-nx-retro-iOS */; + targetProxy = B31737FF2783F925002D3ACD /* PBXContainerItemProxy */; + }; + B33809552877C5FE0009C732 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3303E4B1DED23C600896D96 /* mupen64plus-nx-retro-iOS */; + targetProxy = B33809542877C5FE0009C732 /* PBXContainerItemProxy */; + }; + B33809582877C5FE0009C732 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3800FF4208522DC00FA03B8 /* mupen64plus-nx-iOS */; + targetProxy = B33809572877C5FE0009C732 /* PBXContainerItemProxy */; + }; + B338095B2877C6090009C732 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3AF702121916E60000FA7F9 /* mupen64plus-nx-retro-tvOS */; + targetProxy = B338095A2877C6090009C732 /* PBXContainerItemProxy */; + }; + B338095E2877C6090009C732 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3AF703A21916E87000FA7F9 /* mupen64plus-nx-tvOS */; + targetProxy = B338095D2877C6090009C732 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B34CB0ED2274BA8C009134B4 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1DEB913F08733D840010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; + buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = NO; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro-common/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/src\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/md5\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/minizip\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/oglft\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/oglft\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/GLideN64\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/dependencies/libzlib\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/dependencies/libpng\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-rsp-paraLLEl/lightning/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-rsp-paraLLEl/arch/simd/rsp\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/GLideN64/src/inc\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/GLideN64/src/osal\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core/plugin/audio_libretro\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/android/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/GLideN64\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro-common/crt/include\"", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + }; + name = Debug; + }; + 1DEB914008733D840010E9CD /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; + buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEAD_CODE_STRIPPING = NO; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro-common/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/src\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/md5\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/minizip\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/oglft\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/oglft\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/GLideN64\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/dependencies/libzlib\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/dependencies/libpng\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-rsp-paraLLEl/lightning/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-rsp-paraLLEl/arch/simd/rsp\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/GLideN64/src/inc\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/GLideN64/src/osal\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core/plugin/audio_libretro\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/android/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/GLideN64\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro-common/crt/include\"", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + }; + name = Release; + }; + B324C51D2191A3FE009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; + buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEAD_CODE_STRIPPING = NO; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro-common/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/src\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/md5\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/minizip\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/oglft\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-core/subprojects/oglft\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/GLideN64\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/dependencies/libzlib\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/dependencies/libpng\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-rsp-paraLLEl/lightning/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/mupen64plus-rsp-paraLLEl/arch/simd/rsp\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/GLideN64/src/inc\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/GLideN64/src/osal\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/mupen64plus-core/plugin/audio_libretro\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/android/include\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/custom/GLideN64\"", + "\"$(SRCROOT)/mupen64plus-libretro-nx/libretro-common/crt/include\"", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = NO; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + }; + name = Archive; + }; + B324C51E2191A3FE009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = "PVMupen64Plus-NX-Prefix.pch"; + GCC_UNROLL_LOOPS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = "PVMupen64Plus-NX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64Plus-NX"; + PRODUCT_NAME = "PVMupen64Plus-NX"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C51F2191A3FE009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = "PVMupen64Plus-NX-Prefix.pch"; + GCC_UNROLL_LOOPS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = "PVMupen64Plus-NX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + NEW_SETTING = ""; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64Plus-NX"; + PRODUCT_NAME = "PVMupen64Plus-NX"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_COMPILATION_MODE = wholemodule; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5282191A3FE009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + PRODUCT_NAME = "mupen64plus-nx-retro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + }; + name = Archive; + }; + B324C5292191A3FE009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + TXFILTER_LIB, + OS_IOS, + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "mupen64plus-nx"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + }; + name = Archive; + }; + B324C52A2191A3FE009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + NEW_SETTING = ""; + OTHER_CFLAGS = ( + "-ffast-math", + "-fno-strict-aliasing", + "-fvisibility=hidden", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DPNG_ARM_NEON_OPT=0", + ); + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + PRODUCT_NAME = "mupen64plus-nx-retro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + }; + name = Archive; + }; + B324C52B2191A3FE009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + TXFILTER_LIB, + OS_IOS, + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + NEW_SETTING = ""; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "mupen64plus-nx"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + }; + name = Archive; + }; + B3303E531DED23C700896D96 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + PRODUCT_NAME = "mupen64plus-nx-retro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2,6"; + }; + name = Debug; + }; + B3303E541DED23C700896D96 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + PRODUCT_NAME = "mupen64plus-nx-retro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B37EFF3E1C72F43400857158 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = "PVMupen64Plus-NX-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = "PVMupen64Plus-NX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64Plus-NX"; + PRODUCT_NAME = "PVMupen64Plus-NX"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B37EFF3F1C72F43400857158 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = "PVMupen64Plus-NX-Prefix.pch"; + GCC_UNROLL_LOOPS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = "PVMupen64Plus-NX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64Plus-NX"; + PRODUCT_NAME = "PVMupen64Plus-NX"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3800FFB208522DD00FA03B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + TXFILTER_LIB, + OS_IOS, + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "mupen64plus-nx"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2,6"; + }; + name = Debug; + }; + B3800FFC208522DD00FA03B8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + TXFILTER_LIB, + OS_IOS, + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "mupen64plus-nx"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2,6"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B3AF703721916E60000FA7F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = YES; + NEW_SETTING = ""; + OTHER_CFLAGS = ( + "-ffast-math", + "-fno-strict-aliasing", + "-fvisibility=hidden", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DPNG_ARM_NEON_OPT=0", + ); + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + PRODUCT_NAME = "mupen64plus-nx-retro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B3AF703821916E60000FA7F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + NEW_SETTING = ""; + OTHER_CFLAGS = ( + "-ffast-math", + "-fno-strict-aliasing", + "-fvisibility=hidden", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DPNG_ARM_NEON_OPT=0", + ); + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + PRODUCT_NAME = "mupen64plus-nx-retro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B3AF705021916E87000FA7F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + TXFILTER_LIB, + OS_IOS, + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = YES; + NEW_SETTING = ""; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "mupen64plus-nx"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B3AF705121916E87000FA7F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + TXFILTER_LIB, + OS_IOS, + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + MTL_ENABLE_DEBUG_INFO = NO; + NEW_SETTING = ""; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "mupen64plus-nx"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B3B3B9061DED130B00602746 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = "PVMupen64Plus-NX-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = "PVMupen64Plus-NX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + NEW_SETTING = ""; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64Plus-NX"; + PRODUCT_NAME = "PVMupen64Plus-NX"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = 3; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3B3B9071DED130B00602746 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = "PVMupen64Plus-NX-Prefix.pch"; + GCC_UNROLL_LOOPS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = "PVMupen64Plus-NX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + NEW_SETTING = ""; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64Plus-NX"; + PRODUCT_NAME = "PVMupen64Plus-NX"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVMupen64Plus-NX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB913F08733D840010E9CD /* Debug */, + 1DEB914008733D840010E9CD /* Release */, + B324C51D2191A3FE009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3303E521DED23C700896D96 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-retro-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3303E531DED23C700896D96 /* Debug */, + B3303E541DED23C700896D96 /* Release */, + B324C5282191A3FE009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B37EFF3D1C72F43400857158 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-NX-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B37EFF3E1C72F43400857158 /* Debug */, + B37EFF3F1C72F43400857158 /* Release */, + B324C51E2191A3FE009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3800FFD208522DD00FA03B8 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3800FFB208522DD00FA03B8 /* Debug */, + B3800FFC208522DD00FA03B8 /* Release */, + B324C5292191A3FE009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3AF703621916E60000FA7F9 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-retro-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3AF703721916E60000FA7F9 /* Debug */, + B3AF703821916E60000FA7F9 /* Release */, + B324C52A2191A3FE009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3AF704F21916E87000FA7F9 /* Build configuration list for PBXNativeTarget "mupen64plus-nx-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3AF705021916E87000FA7F9 /* Debug */, + B3AF705121916E87000FA7F9 /* Release */, + B324C52B2191A3FE009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3B3B9051DED130B00602746 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-NX-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3B3B9061DED130B00602746 /* Debug */, + B3B3B9071DED130B00602746 /* Release */, + B324C51F2191A3FE009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NX.xcodeproj/xcshareddata/xcschemes/PVMupen64Plus-NX.xcscheme b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX.xcodeproj/xcshareddata/xcschemes/PVMupen64Plus-NX.xcscheme new file mode 100644 index 0000000000..cf6f27c009 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX.xcodeproj/xcshareddata/xcschemes/PVMupen64Plus-NX.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/Core.plist b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/Core.plist new file mode 100644 index 0000000000..8c967ffb62 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/Core.plist @@ -0,0 +1,22 @@ + + + + + PVCoreIdentifier + com.provenance.mupen64plusnx + PVPrincipleClass + PVMupen64PlusNXCore + PVSupportedSystems + + com.provenance.n64 + + PVProjectName + Mupen64Plus-Next + + + PVProjectURL + https://github.com/libretro/mupen64plus-libretro-nx + PVProjectVersion + 0 + + diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/Info.plist b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/PVMupen64Plus-NX.h b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/PVMupen64Plus-NX.h new file mode 100644 index 0000000000..d519db5e72 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NX/PVMupen64Plus-NX.h @@ -0,0 +1,18 @@ +// +// PVMupen64Plus-NX_core.h +// PVMupen64Plus-NX-core +// +// Created by Joseph Mattiello on 4/2/18. +// Copyright © 2018 James Addyman. All rights reserved. +// + +#import + +//! Project version number for PVMupen64Plus-NX_core. +FOUNDATION_EXPORT double PVMupen64Plus-NX_coreVersionNumber; + +//! Project version string for PVMupen64Plus-NX_core. +FOUNDATION_EXPORT const unsigned char PVMupen64Plus-NX_coreVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/Mupen-NXOptions.swift b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/Mupen-NXOptions.swift new file mode 100644 index 0000000000..97744c08b8 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/Mupen-NXOptions.swift @@ -0,0 +1,370 @@ +// +// MupenOptions.swift +// PVMupen64Plus-NX +// +// Created by Joseph Mattiello on 4/11/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +import Foundation +import PVSupport + +extension PVMupen64PlusNXCore: CoreOptional { + // public func valueForOption(_ option: CoreOption) -> T where T : Decodable, T : Encodable { + // + // } + + // MARK: Dual-Joystick + // Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more + static var dualJoystickOption: CoreOption = { + .bool(.init( + title: "Dual joystick on first player", + description: "If 1st player controller has dual joysticks, use the right joystick as player 2. For games, such as GoldenEye, that support using 2 N64 controllers for single player input.", + requiresRestart: false)) + }() + + static func controllerPakOption(forController index: Int) -> CoreOption { + /* + #define PLUGIN_NONE 1 + #define PLUGIN_MEMPAK 2 + #define PLUGIN_RUMBLE_PAK 3 /* not implemented for non raw data */ + #define PLUGIN_TRANSFER_PAK 4 /* not implemented for non raw data */ + #define PLUGIN_RAW 5 /* the controller plugin is passed in raw data */ + */ + let defaultValue = index <= 1 ? 2 : 5 + return .enumeration(.init(title: "Controller Pak \(index)", + description: nil, + requiresRestart: true), + values:[ + .init(title: "None", description: "", value: 1), + .init(title: "Memory Pak", description: "", value: 2), +// .init(title: "Rumble Pak, description: "", value: 3), +// .init(title: "Transer Pak", description: "", value: 4), + .init(title: "Raw Data", description: "Used for Rumble or Transer Pak", value: 5), + ], + defaultValue: defaultValue) + } + + static var controllerPak1: CoreOption = controllerPakOption(forController: 1) + static var controllerPak2: CoreOption = controllerPakOption(forController: 2) + static var controllerPak3: CoreOption = controllerPakOption(forController: 3) + static var controllerPak4: CoreOption = controllerPakOption(forController: 4) + + public static var options: [CoreOption] { + var options = [CoreOption]() + + // MARK: -- Plugins + + let videoPluginOption = CoreOption.multi(.init(title: "GFX Plugin", + description: "GlideN64 is newer but slower. Try Rice for older devices."), values: [ + .init(title: "GlideN64", description: "Newer, GLES3 GFX Driver"), + .init(title: "Rice Video", description: "Older, faster, less feature rich GFX Driver.")]) + + let rspOptions = CoreOption.multi(.init(title: "RSP Plugin", description: nil), values: [ + .init(title: "RSPHLE", description: "Faster, default RSP"), + .init(title: "CXD4", description: "Slower. More features for some games, breaks others.")]) + + let pluginsGroup = CoreOption.group(.init(title: "Plugins", description: nil), + subOptions: [videoPluginOption, rspOptions]) + + // MARK: -- Controls + let controlOptions: [CoreOption] = [dualJoystickOption, controllerPak1, controllerPak2, controllerPak3, controllerPak4] + let controlGroup:CoreOption = .group(.init(title: "Controls", description: ""), + subOptions: controlOptions) + + // MARK: -- Core + var coreOptions = [CoreOption]() + + // MARK: R4300Emulator + // Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more + coreOptions.append(.enumeration(.init(title: "CPU Mode", + description: nil, + requiresRestart: true), + values:[ + .init(title: "Pure Interpreter", description: "Slowest", value: 0), + .init(title: "Cached Interpreter", description: "Default", value: 1), + .init(title: "Dynamic Recompiler", description: "Fastest but requires JIT or will crash", value: 2)], + defaultValue: 1)) + + coreOptions.append(.range(.init(title: "Count Per Operation", + description: "Force number of cycles per emulated instruction.", + requiresRestart: true), + range: .init(defaultValue: 2, min: 1, max: 4), defaultValue: 2)) + + coreOptions.append(.bool(.init(title: "Disable Extra Memory", + description: "Disable 4MB expansion RAM pack. May be necessary for some games.", + requiresRestart: true), + defaultValue: false)) + + coreOptions.append(.range(.init(title: "SiDmaDuration", + description: "Duration of SI DMA (-1: use per game settings)", + requiresRestart: true), + range: .init(defaultValue: -1, min: -1, max: 255), defaultValue: -1)) + + coreOptions.append(.bool(.init(title: "Randomize Interrupt", + description: "Randomize PI/SI Interrupt Timing.", + requiresRestart: true), + defaultValue: true)) + + // MARK: --- DEBUG + // MARK: OSD + // Draw on-screen display if True, otherwise don't draw OSD + coreOptions.append(.bool(.init(title: "Debug OSD", + description: "Draw on-screen display if True, otherwise don't draw OSD", + requiresRestart: true), + defaultValue: false)) + + + let coreGroup:CoreOption = .group(.init(title: "Mupen Core", description: "Global options for Mupen"), + subOptions: coreOptions) + + // MARK: -- GLideN64 + var glidenOptions = [CoreOption]() + +#warning("Maybe make an enum type for core options?") + // MARK: AspectRatio + // 0 = stretch, 1 = 4:3, 2 = 16:9, 3 = adjust + glidenOptions.append(.enumeration(.init(title: "Aspect Ratio", + description: nil, + requiresRestart: true), + values:[ + .init(title: "Stretch", description: "Slowest", value: 0), + .init(title: "4:3", description: "Default", value: 1), + .init(title: "16:9", description: "Fastest but bequires JIT or will crash", value: 2), + .init(title: "Adjust", description: "Default", value: 3)], + defaultValue: 3)) + + + // MARK: EnableHWLighting + glidenOptions.append(.bool(.init(title: "Hardware Lighting", description: "Per-pixel lighting", requiresRestart: true), defaultValue: true)) + // MARK: fullscreenRefresh + + // MARK: MultiSampling + // "Enable/Disable MultiSampling (0=off, 2,4,8,16=quality + // WARNING: anything other than 0 crashes shader compilation + glidenOptions.append(.enumeration(.init(title: "Multi Sampling", + description: "Anything other than Off will probably crash. You've been warned.", + requiresRestart: true), + values:[ + .init(title: "Off", description: "", value: 0), + .init(title: "2x", description: "", value: 2), + .init(title: "4x", description: "", value: 4), + .init(title: "8x", description: "", value: 8), + .init(title: "16x", description: "", value: 16)])) + + // MARK: ForceGammaCorrection + glidenOptions.append(.bool(.init(title: "Force Gamma Correction", description: nil, requiresRestart: true), defaultValue: false)) + + // MARK: gammaCorrection + glidenOptions.append(.rangef(.init(title: "Gamma Correction", description: "Stength of gamma correction", requiresRestart: true), range: CoreOptionRange(defaultValue: 0.5, min: 0, max: 1), defaultValue: 0.5)) + + // MARK: --- Textures + + // MARK: txSaveCache + glidenOptions.append(.bool(.init(title: "Save texture cache", description: "Save textures to cache for faster loading later", requiresRestart: true), defaultValue: true)) + + // MARK: txCacheCompression + glidenOptions.append(.bool(.init(title: "Compress texture cache", description: "Compress Texture Cache", requiresRestart: true), defaultValue: true)) + + // MARK: txEnhancementMode + // 0=none, 1=store as is, 2=X2, 3=X2SAI, 4=HQ2X, 5=HQ2XS, 6=LQ2X, 7=LQ2XS, 8=HQ4X, 9=2xBRZ, 10=3xBRZ, 11=4xBRZ, 12=5xBRZ), 13=6xBRZ + glidenOptions.append(.enumeration(.init(title: "Texture Enhancement Mode", + description: nil, + requiresRestart: true), + values:[ + .init(title: "None", description: "", value: 0), + .init(title: "Store as-is", description: "", value: 1), + .init(title: "X2", description: "", value: 2), + .init(title: "X2SAI", description: "", value: 3), + .init(title: "HQ2X", description: "", value: 4), + .init(title: "HQ2XS", description: "", value: 5), + .init(title: "LQ2X", description: "", value: 6), + .init(title: "LQXS", description: "", value: 7), + .init(title: "HQ4X", description: "", value: 8), + .init(title: "2xBRZ", description: "", value: 9), + .init(title: "3xBZ", description: "", value: 10), + .init(title: "4xBRZ", description: "", value: 11), + .init(title: "5xBRZ", description: "", value: 12), + .init(title: "6xBRZ", description: "", value: 13), + ], + defaultValue: 0)) + + // MARK: txFilterMode + // Texture filter (0=none, 1=Smooth filtering 1, 2=Smooth filtering 2, 3=Smooth filtering 3, 4=Smooth filtering 4, 5=Sharp filtering 1, 6=Sharp filtering 2) + glidenOptions.append(.enumeration(.init(title: "Texture Filter Mode", + description: nil, + requiresRestart: true), + values:[ + .init(title: "None", description: "", value: 0), + .init(title: "Smooth 1", description: "", value: 1), + .init(title: "Smooth 2", description: "", value: 2), + .init(title: "Smooth 3", description: "", value: 3), + .init(title: "Smooth 4", description: "", value: 4), + .init(title: "Sharp 1", description: "", value: 5), + .init(title: "Sharp 2", description: "", value: 6), + ])) + + + + // MARK: txFilterIgnoreBG + // "Don't filter background textures." + glidenOptions.append(.bool(.init(title: "Ignore BG Textures", description: "Don't filter background textures.", requiresRestart: true), defaultValue: false)) + + // MARK: txCacheSize + // MARK: txDump + // "Enable dump of loaded N64 textures. + glidenOptions.append(.bool(.init(title: "Texture Dump", description: "Enable dump of loaded N64 textures.", requiresRestart: true), defaultValue: false)) + + // MARK: txForce16bpp + // "Force use 16bit texture formats for HD textures." + glidenOptions.append(.bool(.init(title: "Force 16bpp textures", description: "Force use 16bit texture formats for HD textures.", requiresRestart: true), defaultValue: false)) + + // MARK: ---- HiRes + // MARK: txHiresEnable + glidenOptions.append(.bool(.init(title: "Enable HiRes Texture packs", description: "These must be installed seperately. Refer to our WIKI for HD textures.", requiresRestart: true), defaultValue: true)) + + // MARK: txHresAltCRC + // "Use alternative method of paletted textures CRC calculation." + glidenOptions.append(.bool(.init(title: "HiRes Alt CRC", description: "Use alternative method of paletted textures CRC calculation.", requiresRestart: true), defaultValue: false)) + + // MARK: txHiresFullAlphaChannel + // "Allow to use alpha channel of high-res texture fully." + glidenOptions.append(.bool(.init(title: "HiRes Full Alpha", description: "Allow to use alpha channel of high-res texture fully.", requiresRestart: true), defaultValue: true)) + + // MARK: --- Bloom + glidenOptions.append(.bool(.init(title: "Bloom filter", description: nil, requiresRestart: true), defaultValue: false)) + // TODO: Add another sub-group, auto disable if off (maybe more work than worth) + + // [bloomFilter] + // enable=0 + // thresholdLevel=4 + // blendMode=0 + // blurAmount=10 + // blurStrength=20 + + let glidenGroup:CoreOption = .group(.init(title: "GLideN64", description: "Options specific to the GLideN64 video plugin"), + subOptions: glidenOptions) + + // MARK: -- RICE + var riceOptions = [CoreOption]() + + riceOptions.append(.bool(.init(title: "Fast Texture Loading", description: "Use a faster algorithm to speed up texture loading and CRC computation", requiresRestart: true), defaultValue: false)) + + riceOptions.append(.bool(.init(title: "DoubleSizeForSmallTxtrBuf", description: "Enable this option to have better render-to-texture quality", requiresRestart: true), defaultValue: true)) + + riceOptions.append(.bool(.init(title: "FullTMEMEmulation", description: "N64 Texture Memory Full Emulation (may fix some games, may break others)", requiresRestart: true), defaultValue: false)) + + riceOptions.append(.bool(.init(title: "SkipFrame", description: "If this option is enabled, the plugin will skip every other frame. Breaks some games in my testing ", requiresRestart: true), defaultValue: false)) + + riceOptions.append(.bool(.init(title: "LoadHiResTextures", description: "Enable hi-resolution texture file loading", requiresRestart: true), defaultValue: true)) + + /* + + // Use fullscreen mode if True, or windowed mode if False + int fullscreen = 1; + ConfigSetParameter(rice, "Fullscreen", M64TYPE_BOOL, &fullscreen); + + // Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear + int mipmapping = 0; + ConfigSetParameter(rice, "Mipmapping", M64TYPE_INT, &mipmapping); + + // Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). + // This is uneffective if Mipmapping is 0. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering + int anisotropicFiltering = 16; + ConfigSetParameter(rice, "AnisotropicFiltering", M64TYPE_INT, &anisotropicFiltering); + + // Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog) + int fogMethod = 0; + ConfigSetParameter(rice, "FogMethod", M64TYPE_INT, &fogMethod); + + // Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits) + // 16 bit breaks some games like GoldenEye + int textureQuality = 0; + ConfigSetParameter(rice, "TextureQuality", M64TYPE_INT, &textureQuality); + + // Enable/Disable MultiSampling (0=off, 2,4,8,16=quality) + int multiSampling = RESIZE_TO_FULLSCREEN ? 4 : 0; + ConfigSetParameter(rice, "MultiSampling", M64TYPE_INT, &multiSampling); + + // Color bit depth for rendering window (0=32 bits, 1=16 bits) + int colorQuality = 0; + ConfigSetParameter(rice, "ColorQuality", M64TYPE_INT, &colorQuality); + */ + // MARK: ColorQuality + // 0 = 32 bits, 1 = 16 bits + riceOptions.append(.multi(.init(title: "Color Quality", + description: "Color bit depth for rendering window", + requiresRestart: true), + values:[ + .init(title: "32 Bits", description: ""), + .init(title: "16 Bits", description: "")])) + + let riceGroup:CoreOption = .group(.init(title: "RICE", description: "Options specific to the RICE video plugin"), + subOptions: riceOptions) + + + + // MARK: -- Video (Globa) + // let videoGroup = CoreOption.group(.init(title: "Video"), + // subOptions: [glidenGroup, riceGroup]) + + options.append(contentsOf: [coreGroup, pluginsGroup, controlGroup, /*videoGroup,*/ glidenGroup, riceGroup]) + return options + } +} + +@objc +extension PVMupen64PlusNXCore { + // TODO: move these generall accessors somewhere global, maybe use dynamicC + @objc + static public func bool(forOption option: String) -> Bool { + return storedValueForOption(Bool.self, option) ?? false + } + + @objc + static public func int(forOption option: String) -> Int { + let value = storedValueForOption(Int.self, option) + return value ?? 0 + } + + @objc + static public func float(forOption option: String) -> Float { + let value = storedValueForOption(Float.self, option) + return value ?? 0 + } + + @objc + static public func string(forOption option: String) -> String? { + let value = storedValueForOption(String.self, option) + return value + } + + public static var useRice: Bool { + return storedValueForOption(String.self, "GFX Plugin") == "Rice Video" + } + + public static var useCXD4: Bool { + return storedValueForOption(String.self, "RSP Plugin") == "CXD4" + } + + public static var perPixelLighting: Bool { + return storedValueForOption(Bool.self, "Hardware Lighting") ?? false + } +} + +@objc public extension PVMupen64PlusNXCore { + @objc var dualJoystickOption: Bool { MupenGameNXCore.valueForOption(MupenGameNXCore.dualJoystickOption).asBool } + + @objc var controllerPak1Option: Int { MupenGameNXCore.valueForOption(MupenGameNXCore.controllerPak1).asInt ?? 1 } + @objc var controllerPak2Option: Int { MupenGameNXCore.valueForOption(MupenGameNXCore.controllerPak2).asInt ?? 1 } + @objc var controllerPak3Option: Int { MupenGameNXCore.valueForOption(MupenGameNXCore.controllerPak3).asInt ?? 1 } + @objc var controllerPak4Option: Int { MupenGameNXCore.valueForOption(MupenGameNXCore.controllerPak4).asInt ?? 1 } + + func parseOptions() { + self.dualJoystick = dualJoystickOption + self.setMode(controllerPak1Option, forController: 0) + self.setMode(controllerPak2Option, forController: 1) + self.setMode(controllerPak3Option, forController: 2) + self.setMode(controllerPak4Option, forController: 3) + } +} diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Audio.swift b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Audio.swift new file mode 100644 index 0000000000..88b7e9b5bc --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Audio.swift @@ -0,0 +1,17 @@ +// +// MupenGameNXCore+Audio.swift +// PVMupen64Plus-NX +// +// Created by Joseph Mattiello on 1/24/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +import PVSupport + +@objc +public extension PVMupen64PlusNXCore { + override var channelCount: UInt { 2 } + override var audioSampleRate: Double { self.mupenSampleRate } + override var frameInterval: TimeInterval { isNTSC ? 60 : 50 } +} diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Cheats.h b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Cheats.h new file mode 100644 index 0000000000..9201571331 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Cheats.h @@ -0,0 +1,17 @@ +// +// MupenGameNXCore+Controls.h +// MupenGameNXCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MupenGameNXCore (Cheats) +- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Cheats.m b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Cheats.m new file mode 100644 index 0000000000..03672ae4ab --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Cheats.m @@ -0,0 +1,67 @@ + +//#import "MupenGameNXCore.h" +#import + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +@implementation MupenGameNXCore (Cheats) + +- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +// Need to fix ambigious main.h inclusion +// // Sanitize +// code = [code stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; +// +// // Remove any spaces +// code = [code stringByReplacingOccurrencesOfString:@" " withString:@""]; +// +// NSString *singleCode; +// NSArray *multipleCodes = [code componentsSeparatedByString:@"+"]; +// m64p_cheat_code *gsCode = (m64p_cheat_code*) calloc([multipleCodes count], sizeof(m64p_cheat_code)); +// int codeCounter = 0; +// +// for (singleCode in multipleCodes) +// { +// if ([singleCode length] == 12) // GameShark +// { +// // GameShark N64 format: XXXXXXXX YYYY +// NSString *address = [singleCode substringWithRange:NSMakeRange(0, 8)]; +// NSString *value = [singleCode substringWithRange:NSMakeRange(8, 4)]; +// +// // Convert GS hex to int +// unsigned int outAddress, outValue; +// NSScanner* scanAddress = [NSScanner scannerWithString:address]; +// NSScanner* scanValue = [NSScanner scannerWithString:value]; +// [scanAddress scanHexInt:&outAddress]; +// [scanValue scanHexInt:&outValue]; +// +// gsCode[codeCounter].address = outAddress; +// gsCode[codeCounter].value = outValue; +// codeCounter++; +// } +// } +// +// // Update address directly if code needs GS button pressed +// if ((gsCode[0].address & 0xFF000000) == 0x88000000 || (gsCode[0].address & 0xFF000000) == 0xA8000000) +// { +// *(unsigned char *)((g_rdram + ((gsCode[0].address & 0xFFFFFF)^S8))) = (unsigned char)gsCode[0].value; // Update 8-bit address +// } +// else if ((gsCode[0].address & 0xFF000000) == 0x89000000 || (gsCode[0].address & 0xFF000000) == 0xA9000000) +// { +// *(unsigned short *)((g_rdram + ((gsCode[0].address & 0xFFFFFF)^S16))) = (unsigned short)gsCode[0].value; // Update 16-bit address +// } +// // Else add code as normal +// else +// { +// enabled ? CoreAddCheat([code UTF8String], gsCode, codeCounter+1) : CoreCheatEnabled([code UTF8String], 0); +// } +} + +@end diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Controls.h b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Controls.h new file mode 100644 index 0000000000..89f6854abf --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Controls.h @@ -0,0 +1,34 @@ +// +// MupenGameNXCore+Controls.h +// MupenGameNXCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import +#import "Plugins/Core/src/plugin/plugin.h" + +NS_ASSUME_NONNULL_BEGIN + +void MupenInitiateControllers (CONTROL_INFO ControlInfo); +void MupenGetKeys(int Control, BUTTONS *Keys); +void MupenControllerCommand(int Control, unsigned char *Command); + +@interface MupenGameNXCore (Controls) + +- (void)initControllBuffers; +- (void)pollControllers; + +#pragma mark - Control + +- (void)didPushN64Button:(enum PVN64Button)button forPlayer:(NSInteger)player; +- (void)didReleaseN64Button:(enum PVN64Button)button forPlayer:(NSInteger)player; +- (void)didMoveN64JoystickDirection:(enum PVN64Button)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Controls.m b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Controls.m new file mode 100644 index 0000000000..dc4f44a78d --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Controls.m @@ -0,0 +1,384 @@ + +#import "MupenGameNXCore+Controls.h" +#import + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" +//#import "rom.h" +//#import "savestates.h" +//#import "memory.h" +//#import "mupen64plus-core/src/main/main.h" +@import Dispatch; +@import PVSupport; +#if TARGET_OS_MACCATALYST +@import OpenGL.GL3; +@import GLUT; +#else +@import OpenGLES.ES3; +@import GLKit; +#endif + +#import + +void MupenGetKeys(int Control, BUTTONS *Keys) { + GET_CURRENT_AND_RETURN(); + + if (Control == 0) { + [current pollControllers]; + } + + Keys->U_DPAD = current->padData[Control][PVN64ButtonDPadUp]; + Keys->D_DPAD = current->padData[Control][PVN64ButtonDPadDown]; + Keys->L_DPAD = current->padData[Control][PVN64ButtonDPadLeft]; + Keys->R_DPAD = current->padData[Control][PVN64ButtonDPadRight]; + + Keys->START_BUTTON = current->padData[Control][PVN64ButtonStart]; + + Keys->Z_TRIG = current->padData[Control][PVN64ButtonZ]; + + Keys->B_BUTTON = current->padData[Control][PVN64ButtonB]; + Keys->A_BUTTON = current->padData[Control][PVN64ButtonA]; + + Keys->L_CBUTTON = current->padData[Control][PVN64ButtonCLeft]; + Keys->R_CBUTTON = current->padData[Control][PVN64ButtonCRight]; + Keys->D_CBUTTON = current->padData[Control][PVN64ButtonCDown]; + Keys->U_CBUTTON = current->padData[Control][PVN64ButtonCUp]; + + Keys->L_TRIG = current->padData[Control][PVN64ButtonL]; + Keys->R_TRIG = current->padData[Control][PVN64ButtonR]; + + Keys->X_AXIS = current->xAxis[Control]; + Keys->Y_AXIS = current->yAxis[Control]; +} + +void MupenInitiateControllers (CONTROL_INFO ControlInfo) { + GET_CURRENT_OR_RETURN(); + + bool p2Present = current.controller2 != nil || current.dualJoystick; + + ControlInfo.Controls[0].Present = 1; + ControlInfo.Controls[0].Plugin = current->controllerMode[0]; + ControlInfo.Controls[1].Present = p2Present; + ControlInfo.Controls[1].Plugin = current->controllerMode[1]; + ControlInfo.Controls[2].Present = current.controller3 != nil; + ControlInfo.Controls[2].Plugin = current->controllerMode[2]; + ControlInfo.Controls[3].Present = current.controller4 != nil || (current.controller3 != nil && current.dualJoystick); + ControlInfo.Controls[3].Plugin = current->controllerMode[3]; +} + +/****************************************************************** + Function: ControllerCommand + Purpose: To process the raw data that has just been sent to a + specific controller. + input: - Controller Number (0 to 3) and -1 signalling end of + processing the pif ram. + - Pointer of data to be processed. + output: none + note: This function is only needed if the DLL is allowing raw + data, or the plugin is set to raw + the data that is being processed looks like this: + initilize controller: 01 03 00 FF FF FF + read controller: 01 04 01 FF FF FF FF + *******************************************************************/ +void MupenControllerCommand(int Control, unsigned char *Command) { + // Some stuff from n-rage plugin +#define RD_GETSTATUS 0x00 // get status +#define RD_READKEYS 0x01 // read button values +#define RD_READPAK 0x02 // read from controllerpack +#define RD_WRITEPAK 0x03 // write to controllerpack +#define RD_RESETCONTROLLER 0xff // reset controller +#define RD_READEEPROM 0x04 // read eeprom +#define RD_WRITEEPROM 0x05 // write eeprom + +#define PAK_IO_RUMBLE 0xC000 // the address where rumble-commands are sent to + + GET_CURRENT_OR_RETURN(); + + unsigned char *Data = &Command[5]; + + if (Control == -1) + return; + + switch (Command[2]) + { + case RD_GETSTATUS: + break; + case RD_READKEYS: + break; + case RD_READPAK: { +// if (controller[Control].control->Plugin == PLUGIN_RAW) +// { + unsigned int dwAddress = (Command[3] << 8) + (Command[4] & 0xE0); + + if(( dwAddress >= 0x8000 ) && ( dwAddress < 0x9000 ) ) + memset( Data, 0x80, 32 ); + else + memset( Data, 0x00, 32 ); + + Data[32] = DataCRC( Data, 32 ); +// } + break; + } + case RD_WRITEPAK: { +// if (controller[Control].control->Plugin == PLUGIN_RAW) +// { + unsigned int dwAddress = (Command[3] << 8) + (Command[4] & 0xE0); +// Data[32] = DataCRC( Data, 32 ); +// + if ((dwAddress == PAK_IO_RUMBLE) )//&& (rumble.set_rumble_state)) + { + if (*Data) + { + [current rumble]; +// AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); +// rumble.set_rumble_state(Control, RETRO_RUMBLE_WEAK, 0xFFFF); +// rumble.set_rumble_state(Control, RETRO_RUMBLE_STRONG, 0xFFFF); + } + else + { +// rumble.set_rumble_state(Control, RETRO_RUMBLE_WEAK, 0); +// rumble.set_rumble_state(Control, RETRO_RUMBLE_STRONG, 0); + } + } +// } + + break; + } + case RD_RESETCONTROLLER: + break; + case RD_READEEPROM: + break; + case RD_WRITEEPROM: + break; + } +} + + +//NSString *MupenControlNames[] = { +// @"N64_DPadU", @"N64_DPadD", @"N64_DPadL", @"N64_DPadR", +// @"N64_CU", @"N64_CD", @"N64_CL", @"N64_CR", +// @"N64_B", @"N64_A", @"N64_R", @"N64_L", @"N64_Z", @"N64_Start" +//}; // FIXME: missing: joypad X, joypad Y, mempak switch, rumble switch + +#define N64_ANALOG_MAX 80 + +@implementation MupenGameNXCore (Controls) + +-(void)setMode:(NSInteger)mode forController:(NSInteger)controller { + NSAssert(controller < 4, @"Out of index"); + self->controllerMode[controller] = mode; +} + +- (void)pollController:(GCController* _Nullable)controller forIndex:(NSInteger)playerIndex { + if (!controller) { + return; + } + if (LIKELY(controller.extendedGamepad)) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCDualSenseGamepad *dualSense = [gamepad isKindOfClass:[GCDualSenseGamepad class]] ? gamepad : nil; + + GCControllerDirectionPad *dpad = [gamepad dpad]; + + BOOL dualModeOverrides = self.dualJoystick && (playerIndex == 0 || playerIndex == 2); + + // Left Joystick → Joystick + xAxis[playerIndex] = gamepad.leftThumbstick.xAxis.value * N64_ANALOG_MAX; + yAxis[playerIndex] = gamepad.leftThumbstick.yAxis.value * N64_ANALOG_MAX; + + // MFi-D-Pad → D-Pad + padData[playerIndex][PVN64ButtonDPadUp] = dpad.up.isPressed; + padData[playerIndex][PVN64ButtonDPadDown] = dpad.down.isPressed; + padData[playerIndex][PVN64ButtonDPadLeft] = dpad.left.isPressed; + padData[playerIndex][PVN64ButtonDPadRight] = dpad.right.isPressed; + + if(dualModeOverrides) { + // MFi-R2 → P2.Z + padData[playerIndex+1][PVN64ButtonZ] = gamepad.rightTrigger.isPressed; + + // MFi-L2 → P1.Z + padData[playerIndex][PVN64ButtonZ] = gamepad.leftTrigger.isPressed; + + if (dualSense) { + padData[playerIndex][PVN64ButtonStart] = dualSense.touchpadButton.touched; + } + } else { + if (dualSense) { + // DualShock-TouchPad → Start + padData[playerIndex][PVN64ButtonStart] = dualSense.touchpadButton.touched; + // DualShock-Either Trigger → Z + padData[playerIndex][PVN64ButtonZ] = gamepad.leftTrigger.isPressed || gamepad.rightTrigger.isPressed; + } else { + // MFi-L2 → Start + padData[playerIndex][PVN64ButtonStart] = gamepad.leftTrigger.isPressed; + + // MFi-R2 → Z + padData[playerIndex][PVN64ButtonZ] = gamepad.rightTrigger.isPressed; + } + } + + // If MFi-L2 is not pressed… MFi-L1 → L + if (!gamepad.rightShoulder.isPressed) { + padData[playerIndex][PVN64ButtonL] = gamepad.leftShoulder.isPressed; + } + + // If MFi-L1 is not pressed… MFi-R1 → R + if (!gamepad.leftShoulder.isPressed) { + padData[playerIndex][PVN64ButtonR] = gamepad.rightShoulder.isPressed; + } + // If not C-Mode… MFi-X,A → A,B MFi-Y,B → C←,C↓ + if (!(gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed)) { + padData[playerIndex][PVN64ButtonA] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonB] = gamepad.buttonX.isPressed; + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonB.isPressed; + } + + //C-Mode: MFi-X,Y,A,B -> C←,C↑,C↓,C→ + if (gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed) { + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonX.isPressed; + padData[playerIndex][PVN64ButtonCUp] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonCRight] = gamepad.buttonB.isPressed; + } + + // Right Joystick → C Buttons + if(dualModeOverrides) { + xAxis[playerIndex+1] = gamepad.rightThumbstick.xAxis.value * N64_ANALOG_MAX; + yAxis[playerIndex+1] = gamepad.rightThumbstick.yAxis.value * N64_ANALOG_MAX; + } else { + float rightJoystickDeadZone = 0.45; + if (!(gamepad.leftShoulder.isPressed && gamepad.rightShoulder.isPressed) && !(gamepad.buttonY.isPressed || gamepad.buttonB.isPressed)) { + padData[playerIndex][PVN64ButtonCUp] = gamepad.rightThumbstick.up.value > rightJoystickDeadZone; + padData[playerIndex][PVN64ButtonCDown] = gamepad.rightThumbstick.down.value > rightJoystickDeadZone; + padData[playerIndex][PVN64ButtonCLeft] = gamepad.rightThumbstick.left.value > rightJoystickDeadZone; + padData[playerIndex][PVN64ButtonCRight] = gamepad.rightThumbstick.right.value > rightJoystickDeadZone; + } + } + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + if (!gamepad.rightShoulder.isPressed) { + // Default + xAxis[playerIndex] = (dpad.left.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.right.value > 0.5 ? N64_ANALOG_MAX : 0); + yAxis[playerIndex] = (dpad.down.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.up.value > 0.5 ? N64_ANALOG_MAX : 0); + + padData[playerIndex][PVN64ButtonA] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonB] = gamepad.buttonX.isPressed; + + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonB.isPressed; + } else { + // Alt-Mode + padData[playerIndex][PVN64ButtonDPadUp] = dpad.up.isPressed; + padData[playerIndex][PVN64ButtonDPadDown] = dpad.down.isPressed; + padData[playerIndex][PVN64ButtonDPadLeft] = dpad.left.isPressed; + padData[playerIndex][PVN64ButtonDPadRight] = dpad.right.isPressed; + + padData[playerIndex][PVN64ButtonCLeft] = gamepad.buttonX.isPressed; + padData[playerIndex][PVN64ButtonCUp] = gamepad.buttonY.isPressed; + padData[playerIndex][PVN64ButtonCDown] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonCRight] = gamepad.buttonB.isPressed; + } + + padData[playerIndex][PVN64ButtonZ] = gamepad.leftShoulder.isPressed; + padData[playerIndex][PVN64ButtonR] = gamepad.rightShoulder.isPressed; + + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + xAxis[playerIndex] = (dpad.left.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.right.value > 0.5 ? N64_ANALOG_MAX : 0); + yAxis[playerIndex] = (dpad.down.value > 0.5 ? -N64_ANALOG_MAX : 0) + (dpad.up.value > 0.5 ? N64_ANALOG_MAX : 0); + + padData[playerIndex][PVN64ButtonB] = gamepad.buttonA.isPressed; + padData[playerIndex][PVN64ButtonA] = gamepad.buttonX.isPressed; + } +#endif +} + +- (void)pollControllers { +#define USE_CAPTURE 1 +#define USE_QUEUE 1 + +#if USE_CAPTURE +#define controllerForNum(num) [self.controller##num capture] +#else +#define controllerForNum(num) self.controller##num +#endif + +#if USE_QUEUE + // const NSOperationQueue *queue = [NSOperationQueue currentQueue]; + [_inputQueue cancelAllOperations]; + NSMutableArray* ops = [NSMutableArray arrayWithCapacity:4]; + #define CHECK_CONTROLLER(num) \ + if(self.controller##num) [ops addObject:[NSBlockOperation blockOperationWithBlock:^{[self pollController:controllerForNum(num) forIndex:(num - 1)];}]] + + CHECK_CONTROLLER(1); + CHECK_CONTROLLER(2); + CHECK_CONTROLLER(3); + CHECK_CONTROLLER(4); + + [_inputQueue addOperations:ops waitUntilFinished:NO]; +#else +#define CHECK_CONTROLLER(num) if(self.controller##num) [self pollController:controllerForNum(num) forIndex:(num - 1)] + + CHECK_CONTROLLER(1); + CHECK_CONTROLLER(2); + CHECK_CONTROLLER(3); + CHECK_CONTROLLER(4); +#endif +#undef CHECK_CONTROLLER +#undef controllerForNum +} + +- (void)didMoveN64JoystickDirection:(PVN64Button)button withValue:(CGFloat)value forPlayer:(NSUInteger)player { + if (self.dualJoystickOption && player == 0) { + player = 1; + } + switch (button) { + case PVN64ButtonAnalogUp: +// NSLog(@"Up: %f", round(value * N64_ANALOG_MAX)); + yAxis[player] = round(value * N64_ANALOG_MAX); + break; + case PVN64ButtonAnalogDown: +// NSLog(@"Down: %f", value * -N64_ANALOG_MAX); + yAxis[player] = value * -N64_ANALOG_MAX; + break; + case PVN64ButtonAnalogLeft: + xAxis[player] = value * -N64_ANALOG_MAX; + break; + case PVN64ButtonAnalogRight: + xAxis[player] = value * N64_ANALOG_MAX; + break; + default: + break; + } +} + +- (void)didPushN64Button:(PVN64Button)button forPlayer:(NSUInteger)player { + padData[player][button] = 1; +} + +- (void)didReleaseN64Button:(PVN64Button)button forPlayer:(NSUInteger)player { + padData[player][button] = 0; +} + +@end + +@implementation MupenGameNXCore (Rumble) + +- (BOOL)supportsRumble { + return YES; +} + +@end diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Mupen.h b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Mupen.h new file mode 100644 index 0000000000..3a395ad3f2 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Mupen.h @@ -0,0 +1,54 @@ +// +// MupenGameNXCore+Mupen.h +// MupenGameNXCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import +@import Foundation; + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +#define WIDTH 640 +#define HEIGHT 480 +#define WIDTHf 640.0f +#define HEIGHTf 480.0f + + +#if TARGET_OS_TV +#define RESIZE_TO_FULLSCREEN TRUE +#else +#define RESIZE_TO_FULLSCREEN [PVSettingsModel.shared nativeScaleEnabled] +#endif + +#import +#define N64_ANALOG_MAX 80 + +NS_ASSUME_NONNULL_BEGIN + +void MupenAudioSampleRateChanged(int SystemType); +void MupenAudioLenChanged(); +void SetIsNTSC(); +int MupenOpenAudio(AUDIO_INFO info); +void MupenSetAudioSpeed(int percent); +void ConfigureAll(NSString *romFolder); +void ConfigureCore(NSString *romFolder); +void ConfigureVideoGeneral(); +void ConfigureGLideN64(NSString *romFolder); +void ConfigureRICE(); + +@interface MupenGameNXCore (Mupen) +- (void)OE_addHandlerForType:(m64p_core_param)paramType usingBlock:(BOOL(^)(m64p_core_param paramType, int newValue))block; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Mupen.m b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Mupen.m new file mode 100644 index 0000000000..5480cc9e69 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Mupen.m @@ -0,0 +1,368 @@ +#import "MupenGameNXCore+Mupen.h" +#import "MupenGameNXCore+Controls.h" +#import + +@import UIKit.UIWindow; + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +AUDIO_INFO AudioInfo; + +unsigned char DataCRC( unsigned char *Data, int iLenght ) +{ + unsigned char Remainder = Data[0]; + + int iByte = 1; + unsigned char bBit = 0; + + while( iByte <= iLenght ) { + int HighBit = ((Remainder & 0x80) != 0); + Remainder = Remainder << 1; + + Remainder += ( iByte < iLenght && Data[iByte] & (0x80 >> bBit )) ? 1 : 0; + + Remainder ^= (HighBit) ? 0x85 : 0; + + bBit++; + iByte += bBit/8; + bBit %= 8; + } + + return Remainder; +} + +void MupenAudioSampleRateChanged(int SystemType) +{ + GET_CURRENT_AND_RETURN(); + + float currentRate = current.mupenSampleRate; + + switch (SystemType) { + default: + case SYSTEM_NTSC: + current.mupenSampleRate = 48681812 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + case SYSTEM_MPAL: + current.mupenSampleRate = 48628316 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + case SYSTEM_PAL: + current.mupenSampleRate = 49656530 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + } + + [[current audioDelegate] audioSampleRateDidChange]; + ILOG(@"Mupen rate changed %f -> %f\n", currentRate, current.mupenSampleRate); +} + +void MupenAudioLenChanged() +{ + GET_CURRENT_AND_RETURN(); + + const int LenReg = *AudioInfo.AI_LEN_REG; + uint8_t *ptr = (uint8_t*)(AudioInfo.RDRAM + (*AudioInfo.AI_DRAM_ADDR_REG & 0xFFFFFF)); + + // Swap channels + for (uint32_t i = 0; i < LenReg; i += 4) { + ptr[i] ^= ptr[i + 2]; + ptr[i + 2] ^= ptr[i]; + ptr[i] ^= ptr[i + 2]; + ptr[i + 1] ^= ptr[i + 3]; + ptr[i + 3] ^= ptr[i + 1]; + ptr[i + 1] ^= ptr[i + 3]; + } + + [[current ringBufferAtIndex:0] write:ptr maxLength:LenReg]; +} + +void SetIsNTSC() +{ + GET_CURRENT_AND_RETURN(); + + extern m64p_rom_header ROM_HEADER; + switch (ROM_HEADER.Country_code&0xFF) + { + case 0x44: + case 0x46: + case 0x49: + case 0x50: + case 0x53: + case 0x55: + case 0x58: + case 0x59: + current.isNTSC = NO; + break; + case 0x37: + case 0x41: + case 0x45: + case 0x4a: + current.isNTSC = YES; + break; + } +} + +int MupenOpenAudio(AUDIO_INFO info) { + AudioInfo = info; + + SetIsNTSC(); + + ILOG(@"called"); + + return M64ERR_SUCCESS; +} + +void MupenSetAudioSpeed(int percent) { + // do we need this? + ILOG(@"value: %i", percent); +} + +void ConfigureAll(NSString *romFolder) { + ConfigureCore(romFolder); + ConfigureVideoGeneral(); + ConfigureGLideN64(romFolder); + ConfigureRICE(); +} + +void ConfigureCore(NSString *romFolder) { + GET_CURRENT_AND_RETURN(); + + // TODO: Proper path + NSBundle *coreBundle = [NSBundle mainBundle]; + const char *dataPath; + dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; + + /** Core Config **/ + m64p_handle config; + ConfigOpenSection("Core", &config); + + // set SRAM path + ConfigSetParameter(config, "SaveSRAMPath", M64TYPE_STRING, current.batterySavesPath.fileSystemRepresentation); + // set data path + ConfigSetParameter(config, "SharedDataPath", M64TYPE_STRING, romFolder.fileSystemRepresentation); + + // Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more" + int emulator = [MupenGameNXCore intForOption:@"CPU Mode"]; + ConfigSetParameter(config, "R4300Emulator", M64TYPE_INT, &emulator); + + int SiDmaDuration = [MupenGameNXCore intForOption:@"SiDmaDuration"]; + ConfigSetParameter(config, "SiDmaDuration", M64TYPE_INT, &SiDmaDuration); + + int disableExtraMemory = [MupenGameNXCore boolForOption:@"Disable Extra Memory"]; + ConfigSetParameter(config, "DisableExtraMem", M64TYPE_BOOL, &disableExtraMemory); + + int randomizeInterrupt = [MupenGameNXCore boolForOption:@"Randomize Interrupt"]; + ConfigSetParameter(config, "RandomizeInterrupt", M64TYPE_BOOL, &randomizeInterrupt); + + + // Draw on-screen display if True, otherwise don't draw OSD + int osd = [MupenGameNXCore boolForOption:@"Debug OSD"]; + ConfigSetParameter(config, "OnScreenDisplay", M64TYPE_BOOL, &osd); + ConfigSetParameter(config, "ShowFPS", M64TYPE_BOOL, &osd); // Show FPS counter. + ConfigSetParameter(config, "ShowVIS", M64TYPE_BOOL, &osd); // Show VI/S counter. + ConfigSetParameter(config, "ShowPercent", M64TYPE_BOOL, &osd); // Show percent counter. + ConfigSetParameter(config, "ShowInternalResolution", M64TYPE_BOOL, &osd); // Show internal resolution. + ConfigSetParameter(config, "ShowRenderingResolution", M64TYPE_BOOL, &osd); // Show rendering resolution. + + + ConfigSaveSection("Core"); + /** End Core Config **/ +} + +void ConfigureVideoGeneral() { + /** Begin General Video Config **/ + m64p_handle general; + ConfigOpenSection("Video-General", &general); + + // Use fullscreen mode + int useFullscreen = 1; + ConfigSetParameter(general, "Fullscreen", M64TYPE_BOOL, &useFullscreen); + + int screenWidth = WIDTH; + int screenHeight = HEIGHT; + if(RESIZE_TO_FULLSCREEN) { + CGSize size = UIApplication.sharedApplication.keyWindow.bounds.size; + float widthScale = floor(size.height / WIDTHf); + float heightScale = floor(size.height / HEIGHTf); + float scale = MAX(MIN(widthScale, heightScale), 1); + screenWidth = scale * WIDTHf; + screenHeight = scale * HEIGHTf; + } + + // Screen width + ConfigSetParameter(general, "ScreenWidth", M64TYPE_INT, &screenWidth); + + // Screen height + ConfigSetParameter(general, "ScreenHeight", M64TYPE_INT, &screenHeight); + + + DLOG(@"Setting size to (%i,%i)", screenWidth, screenHeight); + + ConfigSaveSection("Video-General"); + /** End General Video Config **/ +} + +void ConfigureGLideN64(NSString *romFolder) { + /** Begin GLideN64 Config **/ + m64p_handle gliden64; + ConfigOpenSection("Video-GLideN64", &gliden64); + + // 0 = stretch, 1 = 4:3, 2 = 16:9, 3 = adjust + int aspectRatio = [MupenGameNXCore intForOption:@"Aspect Ratio"]; + +// if(RESIZE_TO_FULLSCREEN) { +// #if TARGET_OS_TV +// aspectRatio = 1; +// #else +// aspectRatio = 3; +// #endif +// } + + ConfigSetParameter(gliden64, "AspectRatio", M64TYPE_INT, &aspectRatio); + + // Per-pixel lighting + int enableHWLighting = MupenGameNXCore.perPixelLighting ? 1 : 0; + ConfigSetParameter(gliden64, "EnableHWLighting", M64TYPE_BOOL, &enableHWLighting); + + // HiRez & texture options + // txHiresEnable, "Use high-resolution texture packs if available." + int txHiresEnable = [MupenGameNXCore boolForOption:@"Enable HiRes Texture packs"]; + ConfigSetParameter(gliden64, "txHiresEnable", M64TYPE_BOOL, &txHiresEnable); + + // Path to folder with hi-res texture packs. + ConfigSetParameter(gliden64, "txPath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/"].fileSystemRepresentation); + // Path to folder where plugin saves texture cache files. + ConfigSetParameter(gliden64, "txCachePath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/cache/"].fileSystemRepresentation); + // Path to folder where plugin saves dumped textures. + ConfigSetParameter(gliden64, "txDumpPath", M64TYPE_STRING, [romFolder stringByAppendingPathComponent:@"/texture_dump/"].fileSystemRepresentation); + +// if(RESIZE_TO_FULLSCREEN) { + // "txFilterMode", + // "Texture filter (0=none, 1=Smooth filtering 1, 2=Smooth filtering 2, 3=Smooth filtering 3, 4=Smooth filtering 4, 5=Sharp filtering 1, 6=Sharp filtering 2)" + int txFilterMode = [MupenGameNXCore intForOption:@"Texture Filter Mode"]; + ConfigSetParameter(gliden64, "txFilterMode", M64TYPE_INT, &txFilterMode); + + // "txEnhancementMode", config.textureFilter.txEnhancementMode, + // "Texture Enhancement (0=none, 1=store as is, 2=X2, 3=X2SAI, 4=HQ2X, 5=HQ2XS, 6=LQ2X, 7=LQ2XS, 8=HQ4X, 9=2xBRZ, 10=3xBRZ, 11=4xBRZ, 12=5xBRZ), 13=6xBRZ" + int txEnhancementMode = [MupenGameNXCore intForOption:@"Texture Enhancement Mode"]; + ConfigSetParameter(gliden64, "txEnhancementMode", M64TYPE_INT, &txEnhancementMode); + + // "txCacheCompression", config.textureFilter.txCacheCompression, "Zip textures cache." + int txCacheCompression = [MupenGameNXCore boolForOption:@"Compress texture cache"]; + ConfigSetParameter(gliden64, "txCacheCompression", M64TYPE_BOOL, &txCacheCompression); + + // "txSaveCache", config.textureFilter.txSaveCache, + // "Save texture cache to hard disk." + int txSaveCache = [MupenGameNXCore boolForOption:@"Save texture cache"]; + ConfigSetParameter(gliden64, "txSaveCache", M64TYPE_BOOL, &txSaveCache); + + // Warning, anything other than 0 crashes shader compilation + // "MultiSampling", config.video.multisampling, "Enable/Disable MultiSampling (0=off, 2,4,8,16=quality)" + int MultiSampling = [MupenGameNXCore intForOption:@"Multi Sampling"]; + ConfigSetParameter(gliden64, "MultiSampling", M64TYPE_INT, &MultiSampling); +// } + + + //#Gamma correction settings +// res = ConfigSetDefaultBool(g_configVideoGliden64, "ForceGammaCorrection", config.gammaCorrection.force, "Force gamma correction."); +// assert(res == M64ERR_SUCCESS); +// res = ConfigSetDefaultFloat(g_configVideoGliden64, "GammaCorrectionLevel", config.gammaCorrection.level, "Gamma correction level."); +// assert(res == M64ERR_SUCCESS); + + /* + "txCacheSize", config.textureFilter.txCacheSize/ gc_uMegabyte, "Size of filtered textures cache in megabytes." + */ + int txDump = [MupenGameNXCore boolForOption:@"Texture Dump"]; + ConfigSetParameter(gliden64, "txDump", M64TYPE_BOOL, &txDump); + + int txFilterIgnoreBG = [MupenGameNXCore boolForOption:@"Ignore BG Textures"]; + ConfigSetParameter(gliden64, "txFilterIgnoreBG", M64TYPE_BOOL, &txFilterIgnoreBG); + + + int txForce16bpp = [MupenGameNXCore boolForOption:@"Force 16bpp textures"]; + ConfigSetParameter(gliden64, "txForce16bpp", M64TYPE_BOOL, &txForce16bpp); + + + // "txHresAltCRC", config.textureFilter.txHresAltCRC, "Use alternative method of paletted textures CRC calculation." + int txHresAltCRC = [MupenGameNXCore boolForOption:@"HiRes Alt CRC"]; + ConfigSetParameter(gliden64, "txHresAltCRC", M64TYPE_BOOL, &txHresAltCRC); + + + // "txHiresFullAlphaChannel", "Allow to use alpha channel of high-res texture fully." + int txHiresFullAlphaChannel = [MupenGameNXCore boolForOption:@"HiRes Full Alpha"];; + ConfigSetParameter(gliden64, "txHiresFullAlphaChannel", M64TYPE_BOOL, &txHiresFullAlphaChannel); + + ConfigSaveSection("Video-GLideN64"); + /** End GLideN64 Config **/ +} + +void ConfigureRICE() { + /** RICE CONFIG **/ + m64p_handle rice; + ConfigOpenSection("Video-Rice", &rice); + + // Use a faster algorithm to speed up texture loading and CRC computation + int fastTextureLoading = [MupenGameNXCore boolForOption:@"Fast Texture Loading"]; + + ConfigSetParameter(rice, "FastTextureLoading", M64TYPE_BOOL, &fastTextureLoading); + + // Enable this option to have better render-to-texture quality + int doubleSizeForSmallTextureBuffer = [MupenGameNXCore boolForOption:@"DoubleSizeForSmallTxtrBuf"]; + ConfigSetParameter(rice, "DoubleSizeForSmallTxtrBuf", M64TYPE_BOOL, &doubleSizeForSmallTextureBuffer); + + // N64 Texture Memory Full Emulation (may fix some games, may break others) + int fullTEMEmulation = [MupenGameNXCore boolForOption:@"FullTMEMEmulation"]; + ConfigSetParameter(rice, "FullTMEMEmulation", M64TYPE_BOOL, &fullTEMEmulation); + + // Use fullscreen mode if True, or windowed mode if False + int fullscreen = 1; + ConfigSetParameter(rice, "Fullscreen", M64TYPE_BOOL, &fullscreen); + + // If this option is enabled, the plugin will skip every other frame + // Breaks some games in my testing -jm + int skipFrame = [MupenGameNXCore boolForOption:@"SkipFrame"]; + ConfigSetParameter(rice, "SkipFrame", M64TYPE_BOOL, &skipFrame); + + // Enable hi-resolution texture file loading + int hiResTextures = [MupenGameNXCore boolForOption:@"LoadHiResTextures"]; + ConfigSetParameter(rice, "LoadHiResTextures", M64TYPE_BOOL, &hiResTextures); + + // Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear + int mipmapping = 0; + ConfigSetParameter(rice, "Mipmapping", M64TYPE_INT, &mipmapping); + + // Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). + // This is uneffective if Mipmapping is 0. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering + int anisotropicFiltering = 16; + ConfigSetParameter(rice, "AnisotropicFiltering", M64TYPE_INT, &anisotropicFiltering); + + // Enable, Disable or Force fog generation (0=Disable, 1=Enable n64 choose, 2=Force Fog) + int fogMethod = 1; + ConfigSetParameter(rice, "FogMethod", M64TYPE_INT, &fogMethod); + + // Color bit depth to use for textures (0=default, 1=32 bits, 2=16 bits) + // 16 bit breaks some games like GoldenEye + int textureQuality = 1; + ConfigSetParameter(rice, "TextureQuality", M64TYPE_INT, &textureQuality); + + // Enable/Disable MultiSampling (0=off, 2,4,8,16=quality) + int multiSampling = RESIZE_TO_FULLSCREEN ? 4 : 0; + ConfigSetParameter(rice, "MultiSampling", M64TYPE_INT, &multiSampling); + + // Color bit depth for rendering window (0=32 bits, 1=16 bits) + int colorQuality = 0; + ConfigSetParameter(rice, "ColorQuality", M64TYPE_INT, &colorQuality); + + /** End RICE CONFIG **/ + ConfigSaveSection("Video-Rice"); +} + +@implementation MupenGameNXCore (Mupen) + +@end diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Saves.h b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Saves.h new file mode 100644 index 0000000000..57349aea03 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Saves.h @@ -0,0 +1,21 @@ +// +// MupenGameNXCore+Controls.h +// MupenGameNXCore +// +// Created by Joseph Mattiello on 1/26/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MupenGameNXCore (Saves) +- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error; +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block; +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error; +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Saves.m b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Saves.m new file mode 100644 index 0000000000..b70da9a188 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Saves.m @@ -0,0 +1,146 @@ + +//#import "MupenGameNXCore.h" +#import +#import "MupenGameNXCore+Mupen.h" + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" + +@implementation MupenGameNXCore (Saves) + +- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error { + NSAssert(NO, @"Shouldn't be here since we overwrite the async call"); +} + +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block +{ + __block BOOL wasPaused = [self isEmulationPaused]; + [self OE_addHandlerForType:M64CORE_STATE_SAVECOMPLETE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + [self setPauseEmulation:wasPaused]; + NSAssert(paramType == M64CORE_STATE_SAVECOMPLETE, @"This block should only be called for save completion!"); + if(newValue == 0) + { + + if (block) { + NSError *error = [NSError errorWithDomain:@"org.openemu.GameCore.ErrorDomain" + code:-5 + userInfo:@{ + NSLocalizedDescriptionKey : @"Mupen Could not save the current state.", + NSFilePathErrorKey : fileName + }]; + + dispatch_async(dispatch_get_main_queue(), ^{ + block(YES, nil); + }); + + } + return NO; + } + + if (block) { + dispatch_async(dispatch_get_main_queue(), ^{ + block(YES, nil); + }); + } + return NO; + }]; + + BOOL (^scheduleSaveState)(void) = + ^ BOOL { + if(CoreDoCommand(M64CMD_STATE_SAVE, 1, (void *)[fileName fileSystemRepresentation]) == M64ERR_SUCCESS) + { + // Mupen needs to run for a bit for the state saving to take place. + [self setPauseEmulation:NO]; + return YES; + } + + return NO; + }; + + if(scheduleSaveState()) return; + + [self OE_addHandlerForType:M64CORE_EMU_STATE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + NSAssert(paramType == M64CORE_EMU_STATE, @"This block should only be called for load completion!"); + if(newValue != M64EMU_RUNNING && newValue != M64EMU_PAUSED) + return YES; + + return !scheduleSaveState(); + }]; + + [super saveStateToFileAtPath:fileName completionHandler:block]; +} + + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error { + NSAssert(NO, @"Shouldn't be here since we overwrite the async call"); +} + +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block +{ + __block BOOL wasPaused = [self isEmulationPaused]; + [self OE_addHandlerForType:M64CORE_STATE_LOADCOMPLETE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + NSAssert(paramType == M64CORE_STATE_LOADCOMPLETE, @"This block should only be called for load completion!"); + + [self setPauseEmulation:wasPaused]; + if(newValue == 0) + { + dispatch_async(dispatch_get_main_queue(), ^{ + NSError *error = [NSError errorWithDomain:@"org.openemu.GameCore.ErrorDomain" + code:-3 + userInfo:@{ + NSLocalizedDescriptionKey : @"Mupen Could not load the save state", + NSLocalizedRecoverySuggestionErrorKey : @"The loaded file is probably corrupted.", + NSFilePathErrorKey : fileName + }]; + block(NO, error); + }); + return NO; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + block(YES, nil); + }); + + return NO; + }]; + + BOOL (^scheduleLoadState)(void) = + ^ BOOL { + if(CoreDoCommand(M64CMD_STATE_LOAD, 1, (void *)[fileName fileSystemRepresentation]) == M64ERR_SUCCESS) + { + // Mupen needs to run for a bit for the state loading to take place. + [self setPauseEmulation:NO]; + return YES; + } + + return NO; + }; + + if(scheduleLoadState()) return; + + [self OE_addHandlerForType:M64CORE_EMU_STATE usingBlock: + ^ BOOL (m64p_core_param paramType, int newValue) + { + NSAssert(paramType == M64CORE_EMU_STATE, @"This block should only be called for load completion!"); + if(newValue != M64EMU_RUNNING && newValue != M64EMU_PAUSED) + return YES; + + return !scheduleLoadState(); + }]; +} + + +@end diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Video.swift b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Video.swift new file mode 100644 index 0000000000..1833ea52e8 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore+Video.swift @@ -0,0 +1,30 @@ +// +// MupenGameNXCore+Audio.swift +// PVMupen64Plus-NX +// +// Created by Joseph Mattiello on 1/24/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +import PVSupport + +#if targetEnvironment(macCatalyst) +import OpenGL +import GLUT +#else +import OpenGLES.ES3 +#endif + +@objc +public extension PVMupen64PlusNXCore { + override var rendersToOpenGL: Bool { true } + override var pixelType: GLenum { UInt32(GL_UNSIGNED_BYTE) } + override var pixelFormat: GLenum { UInt32(GL_BGRA) } + override var internalPixelFormat: GLenum { UInt32(GL_RGBA) } + override var videoBuffer: UnsafeRawPointer? { nil } + + override var bufferSize: CGSize { .init(width: 1024, height: 512) } + override var screenRect: CGRect { .init(x: 0, y: 0, width: Int(videoWidth), height: Int(videoHeight)) } + override var aspectSize: CGSize { .init(width: Int(videoWidth), height: Int(videoHeight)) } +} diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.h b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.h new file mode 100644 index 0000000000..5461dd0628 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.h @@ -0,0 +1,44 @@ +// +// PVMupen64PlusNXCore.h +// PVMupen64Plus-NX +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVMupen64PlusNXCore : PVLibRetroGLESCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.m b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.m new file mode 100644 index 0000000000..208b03aaeb --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.m @@ -0,0 +1,730 @@ +/* + Copyright (c) 2010, OpenEmu Team + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// We need to mess with core internals +#define M64P_CORE_PROTOTYPES 1 + +//#import "MupenGameNXCore.h" +#import + +#import "MupenGameNXCore+Controls.h" +#import "MupenGameNXCore+Cheats.h" +#import "MupenGameNXCore+Mupen.h" + +#import "api/config.h" +#import "api/m64p_common.h" +#import "api/m64p_config.h" +#import "api/m64p_frontend.h" +#import "api/m64p_vidext.h" +#import "api/callbacks.h" +#import "osal/dynamiclib.h" +#import "Plugins/Core/src/main/version.h" +#import "Plugins/Core/src/plugin/plugin.h" +//#import "rom.h" +//#import "savestates.h" +//#import "memory.h" +//#import "mupen64plus-core/src/main/main.h" +@import Dispatch; +@import PVSupport; +#if TARGET_OS_MACCATALYST +@import OpenGL.GL3; +@import GLUT; +#else +@import OpenGLES.ES3; +@import GLKit; +#endif + +#if TARGET_OS_MAC +@interface MupenGameNXCore () +#else +@interface MupenGameNXCore () +#endif +- (void)OE_didReceiveStateChangeForParamType:(m64p_core_param)paramType value:(int)newValue; + +@end + +__weak MupenGameNXCore *_current = 0; + +static void (*ptr_PV_ForceUpdateWindowSize)(int width, int height); +static void (*ptr_SetOSDCallback)(void (*inPV_OSD_Callback)(const char *_pText, float _x, float _y)); + +EXPORT static void PV_DrawOSD(const char *_pText, float _x, float _y) +{ +// TODO: This should print on the screen + NSLog(@"%s", _pText); +} + +static void MupenDebugCallback(void *context, int level, const char *message) +{ +#if DEBUG + DLOG(@"Mupen (%d): %s", level, message); +#endif +} + +static void MupenFrameCallback(unsigned int FrameIndex) { + if (_current == nil) { + return; + } + + [_current videoInterrupt]; +} + +static void MupenStateCallback(void *context, m64p_core_param paramType, int newValue) +{ + ILOG(@"Mupen: param %d -> %d", paramType, newValue); + [((__bridge MupenGameNXCore *)context) OE_didReceiveStateChangeForParamType:paramType value:newValue]; +} + +@implementation MupenGameNXCore +{ + NSData *romData; + + dispatch_semaphore_t mupenWaitToBeginFrameSemaphore; + dispatch_semaphore_t coreWaitToEndFrameSemaphore; + + m64p_emu_state _emulatorState; + + dispatch_queue_t _callbackQueue; + NSMutableDictionary *_callbackHandlers; + + m64p_dynlib_handle core_handle; + + m64p_dynlib_handle plugins[4]; +} + +- (instancetype)init { + if (self = [super init]) { + mupenWaitToBeginFrameSemaphore = dispatch_semaphore_create(0); + coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); + if(RESIZE_TO_FULLSCREEN) { + CGSize size = UIApplication.sharedApplication.keyWindow.bounds.size; + float widthScale = size.width / WIDTHf; + float heightScale = size.height / HEIGHTf ; + if (PVSettingsModel.shared.integerScaleEnabled) { + widthScale = floor(widthScale); + heightScale = floor(heightScale); + } + float scale = MAX(MIN(widthScale, heightScale), 1); + _videoWidth = scale * WIDTHf; + _videoHeight = scale * HEIGHTf; + DLOG(@"Upscaling on: scale rounded to (%f)",scale); + } else { + _videoWidth = WIDTH; + _videoHeight = HEIGHT; + } + +// controllerMode = {PLUGIN_MEMPAK, PLUGIN_MEMPAK, PLUGIN_MEMPAK, PLUGIN_MEMPAK}; + + _videoBitDepth = 32; // ignored + _videoDepthBitDepth = 0; // TODO + + _mupenSampleRate = 33600; + + _isNTSC = YES; + + _callbackQueue = dispatch_queue_create("org.openemu.MupenGameNXCore.CallbackHandlerQueue", DISPATCH_QUEUE_SERIAL); + _callbackHandlers = [[NSMutableDictionary alloc] init]; + + _inputQueue = [[NSOperationQueue alloc] init]; + _inputQueue.name = @"mupen.input"; + _inputQueue.qualityOfService = NSOperationQueuePriorityHigh; + _inputQueue.maxConcurrentOperationCount = 4; + } + _current = self; + return self; +} + +- (void)dealloc { + SetStateCallback(NULL, NULL); + SetDebugCallback(NULL, NULL); + + [_inputQueue cancelAllOperations]; + + [self pluginsUnload]; + [self detachCoreLib]; + +#if !__has_feature(objc_arc) + dispatch_release(mupenWaitToBeginFrameSemaphore); + dispatch_release(coreWaitToEndFrameSemaphore); +#endif +} + +-(void)detachCoreLib { + if (core_handle != NULL) { + // Note: DL close doesn't really work as expected on iOS. The framework will still essentially be loaded + // take care to reset static variables that are expected to have cleared memory between uses. + if(dlclose(core_handle) != 0) { + ELOG(@"Failed to dlclose core framework."); + } else { + ILOG(@"dlclosed core framework."); + } + core_handle = NULL; + +// [_callbackHandlers removeAllObjects]; + } +} + +// Pass 0 as paramType to receive all state changes. +// Return YES from the block to keep watching the changes. +// Return NO to remove the block after the first received callback. +- (void)OE_addHandlerForType:(m64p_core_param)paramType usingBlock:(BOOL(^)(m64p_core_param paramType, int newValue))block +{ + // If we already have an emulator state, check if the block is satisfied with it or just add it to the queues. + if(paramType == M64CORE_EMU_STATE && _emulatorState != 0 && !block(M64CORE_EMU_STATE, _emulatorState)) + return; + + dispatch_async(_callbackQueue, ^{ + NSMutableSet *callbacks = _callbackHandlers[@(paramType)]; + if(callbacks == nil) + { + callbacks = [[NSMutableSet alloc] init]; + _callbackHandlers[@(paramType)] = callbacks; + } + + [callbacks addObject:block]; + }); +} + +- (void)OE_didReceiveStateChangeForParamType:(m64p_core_param)paramType value:(int)newValue +{ + if(paramType == M64CORE_EMU_STATE) _emulatorState = newValue; + + void(^runCallbacksForType)(m64p_core_param) = + ^(m64p_core_param type){ + NSMutableSet *callbacks = _callbackHandlers[@(type)]; + [callbacks filterUsingPredicate: + [NSPredicate predicateWithBlock: + ^ BOOL (BOOL(^evaluatedObject)(m64p_core_param, int), NSDictionary *bindings) + { + return evaluatedObject(paramType, newValue); + }]]; + }; + + dispatch_async(_callbackQueue, ^{ + runCallbacksForType(paramType); + runCallbacksForType(0); + }); +} + +static void *dlopen_myself() +{ + Dl_info info; + + dladdr(dlopen_myself, &info); + + return dlopen(info.dli_fname, RTLD_LAZY | RTLD_GLOBAL); +} + + +- (void)copyIniFiles:(NSString*)romFolder { + NSBundle *coreBundle = [NSBundle mainBundle]; + + // Copy default config files if they don't exist + NSArray* iniFiles = @[@"GLideN64.ini", @"GLideN64.custom.ini", @"RiceVideoLinux.ini", @"mupen64plus.ini"]; + NSFileManager *fm = [NSFileManager defaultManager]; + + // Create destination folder if missing + + BOOL isDirectory; + if (![fm fileExistsAtPath:romFolder isDirectory:&isDirectory]) { + ILOG(@"ROM data folder doesn't exist, creating %@", romFolder); + NSError *error; + BOOL success = [fm createDirectoryAtPath:romFolder withIntermediateDirectories:YES attributes:nil error:&error]; + if (!success) { + ELOG(@"Failed to create destination folder %@. Error: %@", romFolder, error.localizedDescription); + return; + } + } + + for (NSString *iniFile in iniFiles) { + NSString *destinationPath = [romFolder stringByAppendingPathComponent:iniFile]; + + if (![fm fileExistsAtPath:destinationPath]) { + NSString *fileName = [iniFile stringByDeletingPathExtension]; + NSString *extension = [iniFile pathExtension]; + NSString *source = [coreBundle pathForResource:fileName + ofType:extension]; + if (source == nil) { + ELOG(@"No resource path found for file %@", iniFile); + continue; + } + NSError *error; + BOOL success = [fm copyItemAtPath:source + toPath:destinationPath + error:&error]; + if (!success) { + ELOG(@"Failed to copy app bundle file %@\n%@", iniFile, error.localizedDescription); + } else { + ILOG(@"Copied %@ from app bundle to %@", iniFile, destinationPath); + } + } + } +} + +-(void)createHiResFolder:(NSString*)romFolder { + // Create the directory if this option is enabled to make it easier for users to upload packs + BOOL hiResTextures = YES; + if (hiResTextures) { + // Create the directory for hires_texture, this is a constant in mupen source + NSArray* subPaths = @[@"/hires_texture/", @"/cache/", @"/texture_dump/"]; + for(NSString *subPath in subPaths) { + NSString *highResPath = [romFolder stringByAppendingPathComponent:subPath]; + NSError *error; + BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:highResPath + withIntermediateDirectories:YES + attributes:nil + error:&error]; + if (!success) { + ELOG(@"Error creating hi res texture path: %@", error.localizedDescription); + } + } + } +} + +- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { + NSBundle *coreBundle = [NSBundle mainBundle]; + + NSString *batterySavesDirectory = self.batterySavesPath; + [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory withIntermediateDirectories:YES attributes:nil error:NULL]; + + NSString *romFolder = [path stringByDeletingLastPathComponent]; + NSString *configPath = [romFolder stringByAppendingPathComponent:@"/config/"]; + NSString *dataPath = [romFolder stringByAppendingPathComponent:@"/data/"]; + + // Create config and data paths + NSFileManager *fileManager = [NSFileManager defaultManager]; + for (NSString *path in @[configPath, dataPath]) { + if (![fileManager fileExistsAtPath:configPath]) { + NSError *error; + if(![fileManager createDirectoryAtPath:configPath + withIntermediateDirectories:true + attributes:nil + error:&error]) { + ELOG(@"Filed to create path. %@", error.localizedDescription); + } + } + } + + [self parseOptions]; + + // Create hires folder placement + [self createHiResFolder:romFolder]; + + // Copy default ini files to the config path + [self copyIniFiles:configPath]; + // Rice looks in the data path for some reason, fuck it copy it there too - joe m + [self copyIniFiles:dataPath]; + + // Setup configs + ConfigureAll(romFolder); + + // open core here + CoreStartup(FRONTEND_API_VERSION, configPath.fileSystemRepresentation, dataPath.fileSystemRepresentation, (__bridge void *)self, MupenDebugCallback, (__bridge void *)self, MupenStateCallback); + + // Setup configs + ConfigureAll(romFolder); + + // Disable the built in speed limiter + CoreDoCommand(M64CMD_CORE_STATE_SET, M64CORE_SPEED_LIMITER, 0); + + // Load ROM + romData = [NSData dataWithContentsOfMappedFile:path]; + if (romData == nil || romData.length == 0) { + ELOG(@"Error loading ROM at path: %@\n File does not exist.", path); + + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Mupen64Plus find the game file.", + NSLocalizedRecoverySuggestionErrorKey: @"Check the file hasn't been moved or deleted." + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadRom + userInfo:userInfo]; + + *error = newError; + } + return NO; + } + + m64p_error openStatus = CoreDoCommand(M64CMD_ROM_OPEN, [romData length], (void *)[romData bytes]); + if ( openStatus != M64ERR_SUCCESS) { + ELOG(@"Error loading ROM at path: %@\n Error code was: %i", path, openStatus); + + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Mupen64Plus failed to load game.", + NSLocalizedRecoverySuggestionErrorKey: @"Check the file isn't corrupt and supported Mupen64Plus ROM format." + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadRom + userInfo:userInfo]; + + *error = newError; + } + return NO; + } + + core_handle = dlopen_myself(); + +// m64p_error callbackStatus = CoreDoCommand(M64CMD_SET_FRAME_CALLBACK, 0, (void *)MupenFrameCallback); +// if ( callbackStatus != M64ERR_SUCCESS) { +// ELOG(@"Error setting video callback: %@\n Error code was: %i", path, openStatus); +// +// NSDictionary *userInfo = @{ +// NSLocalizedDescriptionKey: @"Failed to load game.", +// NSLocalizedFailureReasonErrorKey: @"Mupen64Plus failed to load game.", +// NSLocalizedRecoverySuggestionErrorKey: @"The video system is invalid. Developer error. Kill the developer." +// }; +// +// NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain +// code:PVEmulatorCoreErrorCodeCouldNotStart +// userInfo:userInfo]; +// +// *error = newError; +// +// return NO; +// } + + // Assistane block to load frameworks + BOOL (^LoadPlugin)(m64p_plugin_type, NSString *) = ^(m64p_plugin_type pluginType, NSString *pluginName){ + m64p_dynlib_handle rsp_handle; + NSString *frameworkPath = [NSString stringWithFormat:@"%@.framework/%@", pluginName,pluginName]; + NSString *rspPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:frameworkPath]; + + rsp_handle = dlopen([rspPath fileSystemRepresentation], RTLD_LAZY | RTLD_LOCAL); + ptr_PluginStartup rsp_start = osal_dynlib_getproc(rsp_handle, "PluginStartup"); + m64p_error err = rsp_start(core_handle, (__bridge void *)self, MupenDebugCallback); + if (err != M64ERR_SUCCESS) { + ELOG(@"Error code %i loading plugin of type %i, name: %@", err, pluginType, pluginType); + return NO; + } + + err = CoreAttachPlugin(pluginType, rsp_handle); + if (err != M64ERR_SUCCESS) { + ELOG(@"Error code %i attaching plugin of type %i, name: %@", err, pluginType, pluginType); + return NO; + } + + // Store handle for later unload + plugins[pluginType] = rsp_handle; + + return YES; + }; + + // Load Video + + BOOL success = NO; + +#if !TARGET_OS_MACCATALYST + EAGLContext* context = [self bestContext]; +#endif + + if(MupenGameNXCore.useRice) { + success = LoadPlugin(M64PLUGIN_GFX, @"PVMupen64Plus-NXVideoRice"); + ptr_PV_ForceUpdateWindowSize = dlsym(RTLD_DEFAULT, "_PV_ForceUpdateWindowSize"); + } else { + if(self.glesVersion < GLESVersion3 || sizeof(void*) == 4) { + ILOG(@"No 64bit or GLES3. Using RICE GFX plugin."); + success = LoadPlugin(M64PLUGIN_GFX, @"PVMupen64Plus-NXVideoRice"); + ptr_PV_ForceUpdateWindowSize = dlsym(RTLD_DEFAULT, "_PV_ForceUpdateWindowSize"); + } else { + ILOG(@"64bit and GLES3. Using GLiden64 GFX plugin."); + success = LoadPlugin(M64PLUGIN_GFX, @"PVMupen64Plus-NXVideoGlideN64"); + + ptr_SetOSDCallback = dlsym(RTLD_DEFAULT, "SetOSDCallback"); + ptr_SetOSDCallback(PV_DrawOSD); + + } + } + + if (!success) { + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Mupen64Plus failed to load GFX Plugin.", + NSLocalizedRecoverySuggestionErrorKey: @"Provenance may not be compiled correctly." + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadRom + userInfo:userInfo]; + + *error = newError; + } + return NO; + } + + + // Load Audio + audio.aiDacrateChanged = MupenAudioSampleRateChanged; + audio.aiLenChanged = MupenAudioLenChanged; + audio.initiateAudio = MupenOpenAudio; + audio.setSpeedFactor = MupenSetAudioSpeed; + plugin_start(M64PLUGIN_AUDIO); + + // Load Input + input.getKeys = MupenGetKeys; + input.initiateControllers = MupenInitiateControllers; + input.controllerCommand = MupenControllerCommand; + plugin_start(M64PLUGIN_INPUT); + + + if(MupenGameNXCore.useCXD4) { + // Load RSP + // Configure if using rsp-cxd4 plugin + m64p_handle configRSP; + ConfigOpenSection("rsp-cxd4", &configRSP); + int usingHLE = 1; // Set to 0 if using LLE GPU plugin/software rasterizer such as Angry Lion + ConfigSetParameter(configRSP, "DisplayListToGraphicsPlugin", M64TYPE_BOOL, &usingHLE); + /** End Core Config **/ + ConfigSaveSection("rsp-cxd4"); + + success = LoadPlugin(M64PLUGIN_RSP, @"PVRSPCXD4"); + } else { + success = LoadPlugin(M64PLUGIN_RSP, @"PVMupen64Plus-NXRspHLE"); + } + + if (!success) { + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load game.", + NSLocalizedFailureReasonErrorKey: @"Mupen64Plus failed to load RSP Plugin.", + NSLocalizedRecoverySuggestionErrorKey: @"Provenance may not be compiled correctly." + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadRom + userInfo:userInfo]; + + *error = newError; + } + return NO; + } + + if(RESIZE_TO_FULLSCREEN) { + UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; + if(keyWindow != nil) { + CGSize fullScreenSize = keyWindow.bounds.size; + float widthScale = floor(fullScreenSize.height / WIDTHf); + float heightScale = floor(fullScreenSize.height / WIDTHf); + float scale = MAX(MIN(widthScale, heightScale), 1); + float widthScaled = scale * WIDTHf; + float heightScaled = scale * HEIGHTf; + + [self tryToResizeVideoTo:CGSizeMake(widthScaled, heightScaled)]; + } + } + + // Setup configs + ConfigureAll(romFolder); + +#ifdef DEBUG + NSString *defaults = [[NSUserDefaults standardUserDefaults].dictionaryRepresentation debugDescription]; + DLOG(@"defaults: \n%@", defaults); +#endif + return YES; +} + +#if !TARGET_OS_MACCATALYST +-(EAGLContext*)bestContext { + EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + self.glesVersion = GLESVersion3; + if (context == nil) + { + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + self.glesVersion = GLESVersion2; + } + + return context; +} +#endif + +- (void)startEmulation { + [self parseOptions]; + + if(!self.isRunning) { + [super startEmulation]; + [NSThread detachNewThreadSelector:@selector(runMupenEmuThread) toTarget:self withObject:nil]; + } +} + +- (void)runMupenEmuThread { + @autoreleasepool + { + [self.renderDelegate startRenderingOnAlternateThread]; + if(CoreDoCommand(M64CMD_EXECUTE, 0, NULL) != M64ERR_SUCCESS) { + ELOG(@"Core execture did not exit correctly"); + } else { + ILOG(@"Core finished executing main"); + } + + if(CoreDetachPlugin(M64PLUGIN_GFX) != M64ERR_SUCCESS) { + ELOG(@"Failed to detach GFX plugin"); + } else { + ILOG(@"Detached GFX plugin"); + } + + if(CoreDetachPlugin(M64PLUGIN_RSP) != M64ERR_SUCCESS) { + ELOG(@"Failed to detach RSP plugin"); + } else { + ILOG(@"Detached RSP plugin"); + } + + [self pluginsUnload]; + + if(CoreDoCommand(M64CMD_ROM_CLOSE, 0, NULL) != M64ERR_SUCCESS) { + ELOG(@"Failed to close ROM"); + } else { + ILOG(@"ROM closed"); + } + + // Unlock rendering thread + dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); + + [super stopEmulation]; + + if(CoreShutdown() != M64ERR_SUCCESS) { + ELOG(@"Core shutdown failed"); + }else { + ILOG(@"Core shutdown successfully"); + } + } +} + +- (m64p_error)pluginsUnload { + // shutdown and unload frameworks for plugins + + typedef m64p_error (*ptr_PluginShutdown)(void); + ptr_PluginShutdown PluginShutdown; + int i; + + /* shutdown each type of plugin */ + for (i = 0; i < 4; i++) + { + if (plugins[i] == NULL) + continue; + /* call the destructor function for the plugin and release the library */ + PluginShutdown = (ptr_PluginShutdown) osal_dynlib_getproc(plugins[i], "PluginShutdown"); + if (PluginShutdown != NULL) { + m64p_error status = (*PluginShutdown)(); + if (status == M64ERR_SUCCESS) { + ILOG(@"Shutdown plugin"); + } else { + + ELOG(@"Shutdown plugin type %i failed: %i", i, status); + } + } + if(dlclose(plugins[i]) != 0) { + ELOG(@"Failed to dlclose plugin type %i", i); + } else { + ILOG(@"dlclosed plugin type %i", i); + } + plugins[i] = NULL; + } + + return M64ERR_SUCCESS; +} + +- (dispatch_time_t)frameTime { + float frameTime = 1.0/[self frameInterval]; + __block BOOL expired = NO; + dispatch_time_t killTime = dispatch_time(DISPATCH_TIME_NOW, frameTime * NSEC_PER_SEC); + return killTime; +} + +- (void)videoInterrupt { + dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); + + dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, [self frameTime]); +} + +- (void)swapBuffers { + [self.renderDelegate didRenderFrameOnAlternateThread]; +} + +- (void)executeFrameSkippingFrame:(BOOL)skip { + dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); + + dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, [self frameTime]); +} + +- (void)executeFrame { + [self executeFrameSkippingFrame:NO]; +} + +- (void)setPauseEmulation:(BOOL)flag +{ + [super setPauseEmulation:flag]; + [self parseOptions]; +// TODO: Fix pause +// CoreDoCommand(M64CMD_PAUSE, flag, NULL); + + if (flag) + { + dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); + [self.frontBufferCondition lock]; + [self.frontBufferCondition signal]; + [self.frontBufferCondition unlock]; + } +} + +- (void)stopEmulation { + [_inputQueue cancelAllOperations]; + + CoreDoCommand(M64CMD_STOP, 0, NULL); + + dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); + [self.frontBufferCondition lock]; + [self.frontBufferCondition signal]; + [self.frontBufferCondition unlock]; + + [super stopEmulation]; +} + +- (void)resetEmulation { + // FIXME: do we want/need soft reset? It doesn’t seem to work well with sending M64CMD_RESET alone + // FIXME: (astrange) should this method worry about this instance’s dispatch semaphores? + CoreDoCommand(M64CMD_RESET, 1 /* hard reset */, NULL); + dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); + [self.frontBufferCondition lock]; + [self.frontBufferCondition signal]; + [self.frontBufferCondition unlock]; +} + +- (void) tryToResizeVideoTo:(CGSize)size { + DLOG(@"Calling set video mode size to (%f,%f)", screenWidth, screenHeight); + + VidExt_SetVideoMode(size.width, size.height, 32, M64VIDEO_FULLSCREEN, 0); + if (ptr_PV_ForceUpdateWindowSize != nil) { + ptr_PV_ForceUpdateWindowSize(size.width, size.height); + } +} + +@end diff --git a/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.mm b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.mm new file mode 100644 index 0000000000..57c5d97096 --- /dev/null +++ b/Cores/Mupen64Plus-NX/PVMupen64Plus-NXCore/PVMupen64Plus-NXCore.mm @@ -0,0 +1,152 @@ +// +// PVMupen64PlusNXCore.m +// PVMupen64Plus-NX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVMupen64PlusNXCore.h" +#include +//#import "PVMupen64PlusNXCore+Controls.h" +//#import "PVMupen64PlusNXCore+Audio.h" +//#import "PVMupen64PlusNXCore+Video.h" +// +//#import "PVMupen64PlusNXCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVMupen64PlusNXCore() { + +} + +@end + +#pragma mark - PVMupen64PlusNXCore Begin + +@implementation PVMupen64PlusNXCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 13.63; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1440, 1080); +} + +- (GLenum)pixelFormat { + return GL_BGRA; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_BYTE; +} + +- (GLenum)internalPixelFormat { + return GL_RGBA; +} + +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/Mupen64Plus-NX/mupen64plus-libretro-nx b/Cores/Mupen64Plus-NX/mupen64plus-libretro-nx new file mode 160000 index 0000000000..f14ab04c00 --- /dev/null +++ b/Cores/Mupen64Plus-NX/mupen64plus-libretro-nx @@ -0,0 +1 @@ +Subproject commit f14ab04c00e4e62ff10d320fab599a077a3ccdbe diff --git a/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h b/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h index 0fdf894ba9..50ad4de7cb 100644 --- a/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h +++ b/Cores/Mupen64Plus/Compatibility/SDL/SDL_opengles2.h @@ -29,7 +29,7 @@ //#ifdef __IPHONEOS__ #include -#if TARGET_OS_MACCATALYST +#if TARGET_OS_MACCATALYST || TARGET_OS_OSX #include #include #include @@ -55,5 +55,9 @@ #endif /* _MSC_VER */ #ifndef APIENTRY +#ifndef GL_APIENTRY #define APIENTRY GL_APIENTRY +#else +#define APIENTRY GL_APIENTRY +#endif #endif diff --git a/Cores/Mupen64Plus/Compatibility/vidext.m b/Cores/Mupen64Plus/Compatibility/vidext.m index 3513da2f86..2d96367513 100644 --- a/Cores/Mupen64Plus/Compatibility/vidext.m +++ b/Cores/Mupen64Plus/Compatibility/vidext.m @@ -28,7 +28,11 @@ #include "api/vidext.h" #import "../MupenGameCore.h" #import +#import + +#if __has_include() #import +#endif #include @@ -57,7 +61,11 @@ EXPORT m64p_error CALL VidExt_ListFullscreenModes(m64p_2d_size *SizeArray, int * size[0].uiHeight = 480; // Full device size - CGSize fullWindow = UIApplication.sharedApplication.keyWindow.bounds.size; +#if TARGET_OS_OSX + CGSize fullWindow = CGSizeMake(640, 480); +#else + CGSize fullWindow = UIApplication.sharedApplication.keyWindow.bounds.size; +#endif size[1].uiWidth = fullWindow.width; size[1].uiHeight = fullWindow.height; diff --git a/Cores/Mupen64Plus/Config.xcconfig b/Cores/Mupen64Plus/Config.xcconfig index ca7444d93a..a91ef8a3ee 100644 --- a/Cores/Mupen64Plus/Config.xcconfig +++ b/Cores/Mupen64Plus/Config.xcconfig @@ -31,7 +31,9 @@ OTHER_CFLAGS[sdk=iphonesimulator*] = $(inherited) -DOS_IOS // tvOS Device GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 -OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -DOS_IOS -mfpu=neon -D__VEC4_OPT +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -DOS_IOS -mfpu=neon -D__VEC4_OPT -D__NEON_OPT +EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvos*] = $(inherited) 3DMath.cpp RSP_LoadMatrix.cpp CRC_OPT.cpp +// gSPNeon.cpp // tvOS Simulator GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) OS_IOS GLESX USE_GLES=1 NEON=1 SDL_VIDEO_OPENGL_ES2=1 diff --git a/Cores/Mupen64Plus/MupenGameCore+Controls.m b/Cores/Mupen64Plus/MupenGameCore+Controls.m index dbc9cceec3..5eb57461ae 100644 --- a/Cores/Mupen64Plus/MupenGameCore+Controls.m +++ b/Cores/Mupen64Plus/MupenGameCore+Controls.m @@ -17,7 +17,7 @@ //#import "mupen64plus-core/src/main/main.h" @import Dispatch; @import PVSupport; -#if TARGET_OS_MACCATALYST +#if TARGET_OS_MACCATALYST || TARGET_OS_OSX @import OpenGL.GL3; @import GLUT; #else @@ -136,7 +136,9 @@ void MupenControllerCommand(int Control, unsigned char *Command) { { if (*Data) { +#if TARGET_OS_IOS && !TARGET_OS_MACCATALYST [current rumble]; +#endif // AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); // rumble.set_rumble_state(Control, RETRO_RUMBLE_WEAK, 0xFFFF); // rumble.set_rumble_state(Control, RETRO_RUMBLE_STRONG, 0xFFFF); @@ -347,11 +349,11 @@ - (void)didMoveN64JoystickDirection:(PVN64Button)button withValue:(CGFloat)value } switch (button) { case PVN64ButtonAnalogUp: - NSLog(@"Up: %f", round(value * N64_ANALOG_MAX)); +// NSLog(@"Up: %f", round(value * N64_ANALOG_MAX)); yAxis[player] = round(value * N64_ANALOG_MAX); break; case PVN64ButtonAnalogDown: - NSLog(@"Down: %f", value * -N64_ANALOG_MAX); +// NSLog(@"Down: %f", value * -N64_ANALOG_MAX); yAxis[player] = value * -N64_ANALOG_MAX; break; case PVN64ButtonAnalogLeft: diff --git a/Cores/Mupen64Plus/MupenGameCore+Mupen.h b/Cores/Mupen64Plus/MupenGameCore+Mupen.h index 4767b57004..df93d56087 100644 --- a/Cores/Mupen64Plus/MupenGameCore+Mupen.h +++ b/Cores/Mupen64Plus/MupenGameCore+Mupen.h @@ -37,6 +37,9 @@ NS_ASSUME_NONNULL_BEGIN void MupenAudioSampleRateChanged(int SystemType); +void MupenAudioRomClosed(); +void MupenAudioRomOpen(); + void MupenAudioLenChanged(); void SetIsNTSC(); int MupenOpenAudio(AUDIO_INFO info); diff --git a/Cores/Mupen64Plus/MupenGameCore+Mupen.m b/Cores/Mupen64Plus/MupenGameCore+Mupen.m index 0b0bcb2b07..11f2c6d673 100644 --- a/Cores/Mupen64Plus/MupenGameCore+Mupen.m +++ b/Cores/Mupen64Plus/MupenGameCore+Mupen.m @@ -2,7 +2,10 @@ #import "MupenGameCore+Controls.h" #import +#if __has_include() @import UIKit.UIWindow; +#else +#endif #import "api/config.h" #import "api/m64p_common.h" @@ -123,6 +126,16 @@ void MupenSetAudioSpeed(int percent) { ILOG(@"value: %i", percent); } +void MupenAudioRomOpen() { + // do we need this? + DLOG(@"called"); +} + +void MupenAudioRomClosed() { + // do we need this? + DLOG(@"called"); +} + void ConfigureAll(NSString *romFolder) { ConfigureCore(romFolder); ConfigureVideoGeneral(); @@ -152,14 +165,25 @@ void ConfigureCore(NSString *romFolder) { ConfigSetParameter(config, "R4300Emulator", M64TYPE_INT, &emulator); int SiDmaDuration = [MupenGameCore intForOption:@"SiDmaDuration"]; - ConfigSetParameter(config, "SiDmaDuration", M64TYPE_INT, &SiDmaDuration); - + if (SiDmaDuration >= 0) { + ConfigSetParameter(config, "SiDmaDuration", M64TYPE_INT, &SiDmaDuration); + } + int disableExtraMemory = [MupenGameCore boolForOption:@"Disable Extra Memory"]; ConfigSetParameter(config, "DisableExtraMem", M64TYPE_BOOL, &disableExtraMemory); int randomizeInterrupt = [MupenGameCore boolForOption:@"Randomize Interrupt"]; ConfigSetParameter(config, "RandomizeInterrupt", M64TYPE_BOOL, &randomizeInterrupt); + int countPerOp = [MupenGameCore boolForOption:@"Count Per Op"]; + if (countPerOp >= 1) { + ConfigSetParameter(config, "CountPerOp", M64TYPE_INT, &countPerOp); + } + + // Save state slot (0-9) to use when saving/loading the emulator state +// int currentStateSlot = [MupenGameCore boolForOption:@"Save State Slot"]; +// ConfigSetParameter(config, "CurrentStateSlot", M64TYPE_INT, ¤tStateSlot); + // Draw on-screen display if True, otherwise don't draw OSD int osd = [MupenGameCore boolForOption:@"Debug OSD"]; @@ -186,6 +210,7 @@ void ConfigureVideoGeneral() { int screenWidth = WIDTH; int screenHeight = HEIGHT; +#if __has_include() if(RESIZE_TO_FULLSCREEN) { CGSize size = UIApplication.sharedApplication.keyWindow.bounds.size; float widthScale = floor(size.height / WIDTHf); @@ -194,6 +219,7 @@ void ConfigureVideoGeneral() { screenWidth = scale * WIDTHf; screenHeight = scale * HEIGHTf; } +#endif // Screen width ConfigSetParameter(general, "ScreenWidth", M64TYPE_INT, &screenWidth); diff --git a/Cores/Mupen64Plus/MupenGameCore+Resources.h b/Cores/Mupen64Plus/MupenGameCore+Resources.h new file mode 100644 index 0000000000..44638cb800 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Resources.h @@ -0,0 +1,11 @@ +@import Foundation; +@import GameController; +@import PVSupport; + +#import +#import "Plugins/Core/src/plugin/plugin.h" + +@interface MupenGameCore (Resources) +-(void)copyIniFiles:(NSString * _Nonnull)romFolder; +-(void)createHiResFolder:(NSString * _Nonnull)romFolder; +@end diff --git a/Cores/Mupen64Plus/MupenGameCore+Resources.m b/Cores/Mupen64Plus/MupenGameCore+Resources.m new file mode 100644 index 0000000000..0dec84ccb2 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Resources.m @@ -0,0 +1,75 @@ +#import "MupenGameCore+Controls.h" +#import + +@implementation MupenGameCore + +- (void)copyIniFiles:(NSString*)romFolder { + NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; + + // Copy default config files if they don't exist + NSArray* iniFiles = @[@"GLideN64.ini", @"GLideN64.custom.ini", @"RiceVideoLinux.ini", @"mupen64plus.ini"]; + NSFileManager *fm = [NSFileManager defaultManager]; + + // Create destination folder if missing + + BOOL isDirectory; + if (![fm fileExistsAtPath:romFolder isDirectory:&isDirectory]) { + ILOG(@"ROM data folder doesn't exist, creating %@", romFolder); + NSError *error; + BOOL success = [fm createDirectoryAtPath:romFolder withIntermediateDirectories:YES attributes:nil error:&error]; + if (!success) { + ELOG(@"Failed to create destination folder %@. Error: %@", romFolder, error.localizedDescription); + return; + } + } + + for (NSString *iniFile in iniFiles) { + NSString *destinationPath = [romFolder stringByAppendingPathComponent:iniFile]; + + BOOL fileExists = [fm fileExistsAtPath:destinationPath]; + if (!fileExists) { + NSString *fileName = [iniFile stringByDeletingPathExtension]; + NSString *extension = [iniFile pathExtension]; + NSString *source = [coreBundle pathForResource:fileName + ofType:extension]; + if (source == nil) { + ELOG(@"No resource path found for file %@", iniFile); + continue; + } + NSError *copyError = nil; + BOOL didCopy = [fm copyItemAtPath:source + toPath:destinationPath + error:©Error]; + if (!didCopy) { + ELOG(@"Failed to copy app bundle file %@\n%@", iniFile, copyError.localizedDescription); + } else { + ILOG(@"Copied %@ from app bundle to %@", iniFile, destinationPath); + } + } else { + ILOG(@"File already exists at path, no need to copy. <%@>", destinationPath); + } + } +} + +-(void)createHiResFolder:(NSString*)romFolder { + // Create the directory if this option is enabled to make it easier for users to upload packs + BOOL hiResTextures = YES; + if (hiResTextures) { + // Create the directory for hires_texture, this is a constant in mupen source + NSArray* subPaths = @[@"/hires_texture/", @"/cache/", @"/texture_dump/"]; + for(NSString *subPath in subPaths) { + NSString *highResPath = [romFolder stringByAppendingPathComponent:subPath]; + NSError *error; + BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:highResPath + withIntermediateDirectories:YES + attributes:nil + error:&error]; + if (!success) { + ELOG(@"Error creating hi res texture path: %@", error.localizedDescription); + } + } + } +} + + +@end diff --git a/Cores/Mupen64Plus/MupenGameCore+Resources.swift b/Cores/Mupen64Plus/MupenGameCore+Resources.swift new file mode 100644 index 0000000000..5fc5408275 --- /dev/null +++ b/Cores/Mupen64Plus/MupenGameCore+Resources.swift @@ -0,0 +1,70 @@ +// +// MupenGameCore+Resources.swift +// PVMupen64Plus +// +// Created by Joseph Mattiello on 1/24/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation +import PVSupport + +fileprivate let highResDirs: [String] = ["/hires_texture/", "/cache/", "/texture_dump/"] +fileprivate let iniFiles: [String] = ["GLideN64.ini", "GLideN64.custom.ini", "RiceVideoLinux.ini", "mupen64plus.ini"] + +enum MupenGameCoreError: Error { + case resourceNotFound +} + +@objc +public extension MupenGameCore { + @objc func copyIniFiles(_ romFolder: String) throws { + let iniBundle = Bundle(for: type(of: self)) + let fm = FileManager.default + + // Copy default config files if they don't exist + + // Create destination folder if missing + if !fm.fileExists(atPath: romFolder, isDirectory: nil) { + do { + try fm.createDirectory(atPath: romFolder, withIntermediateDirectories: true) + } catch { + throw error + } + } + + try iniFiles.forEach { iniFile in + let destinationPath = (romFolder as NSString).appendingPathComponent(iniFile) as String + guard !fm.fileExists(atPath: destinationPath) else { + VLOG("File exists at path <\(destinationPath)>") + return + } + + let nsIniFile = iniFile as NSString + let fileName = nsIniFile.deletingPathExtension + let fileExtension = nsIniFile.pathExtension + + guard let sourcePath = iniBundle.path(forResource: fileName, ofType: fileExtension) else { + throw MupenGameCoreError.resourceNotFound + } + + try fm.copyItem(atPath: sourcePath, toPath: destinationPath) + } + } + + @objc func createHiResFolder(_ romFolder: String) throws { + let subPaths: [String] = highResDirs.map { (romFolder as NSString).appendingPathComponent($0) as String} + let fm = FileManager.default + try subPaths.forEach { subPath in + do { + VLOG("Creating directory \(subPath)") + if !fm.fileExists(atPath: subPath, isDirectory: nil) { + try fm.createDirectory(atPath: subPath, withIntermediateDirectories: true) + } + } catch { + ELOG("Error creating hi res texture path: \(error.localizedDescription)") + throw error + } + } + } +} diff --git a/Cores/Mupen64Plus/MupenGameCore+Video.swift b/Cores/Mupen64Plus/MupenGameCore+Video.swift index 16430e1172..4cb40af62f 100644 --- a/Cores/Mupen64Plus/MupenGameCore+Video.swift +++ b/Cores/Mupen64Plus/MupenGameCore+Video.swift @@ -1,5 +1,5 @@ // -// MupenGameCore+Audio.swift +// MupenGameCore+Video.swift // PVMupen64Plus // // Created by Joseph Mattiello on 1/24/22. @@ -9,7 +9,7 @@ import Foundation import PVSupport -#if targetEnvironment(macCatalyst) +#if canImport(OpenGL) import OpenGL import GLUT #else diff --git a/Cores/Mupen64Plus/MupenGameCore.m b/Cores/Mupen64Plus/MupenGameCore.m index 276668b0ac..31965d92c9 100644 --- a/Cores/Mupen64Plus/MupenGameCore.m +++ b/Cores/Mupen64Plus/MupenGameCore.m @@ -30,6 +30,7 @@ //#import "MupenGameCore.h" #import +#import "MupenGameCore+Resources.h" #import "MupenGameCore+Controls.h" #import "MupenGameCore+Cheats.h" #import "MupenGameCore+Mupen.h" @@ -49,7 +50,7 @@ //#import "mupen64plus-core/src/main/main.h" @import Dispatch; @import PVSupport; -#if TARGET_OS_MACCATALYST +#if TARGET_OS_MACCATALYST || TARGET_OS_OSX @import OpenGL.GL3; @import GLUT; #else @@ -57,6 +58,10 @@ @import GLKit; #endif +#if __has_include() +#import +#endif + #if TARGET_OS_MAC @interface MupenGameCore () #else @@ -119,23 +124,8 @@ - (instancetype)init { if (self = [super init]) { mupenWaitToBeginFrameSemaphore = dispatch_semaphore_create(0); coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); - if(RESIZE_TO_FULLSCREEN) { - CGSize size = UIApplication.sharedApplication.keyWindow.bounds.size; - float widthScale = size.width / WIDTHf; - float heightScale = size.height / HEIGHTf ; - if (PVSettingsModel.shared.integerScaleEnabled) { - widthScale = floor(widthScale); - heightScale = floor(heightScale); - } - float scale = MAX(MIN(widthScale, heightScale), 1); - _videoWidth = scale * WIDTHf; - _videoHeight = scale * HEIGHTf; - DLOG(@"Upscaling on: scale rounded to (%f)",scale); - } else { - _videoWidth = WIDTH; - _videoHeight = HEIGHT; - } - + + [self calculateSize]; // controllerMode = {PLUGIN_MEMPAK, PLUGIN_MEMPAK, PLUGIN_MEMPAK, PLUGIN_MEMPAK}; _videoBitDepth = 32; // ignored @@ -172,6 +162,30 @@ - (void)dealloc { #endif } +-(void)calculateSize { +#if !TARGET_OS_OSX + if(RESIZE_TO_FULLSCREEN) { + CGSize size = UIApplication.sharedApplication.keyWindow.bounds.size; + float widthScale = size.width / WIDTHf; + float heightScale = size.height / HEIGHTf; + if (PVSettingsModel.shared.integerScaleEnabled) { + widthScale = floor(widthScale); + heightScale = floor(heightScale); + } + float scale = MAX(MIN(widthScale, heightScale), 1); + _videoWidth = scale * WIDTHf; + _videoHeight = scale * HEIGHTf; + DLOG(@"Upscaling on: scale rounded to (%f)",scale); + } else { + _videoWidth = WIDTH; + _videoHeight = HEIGHT; + } +#else + _videoWidth = WIDTH; + _videoHeight = HEIGHT; +#endif +} + -(void)detachCoreLib { if (core_handle != NULL) { // Note: DL close doesn't really work as expected on iOS. The framework will still essentially be loaded @@ -208,7 +222,7 @@ - (void)OE_addHandlerForType:(m64p_core_param)paramType usingBlock:(BOOL(^)(m64p }); } -- (void)OE_didReceiveStateChangeForParamType:(m64p_core_param)paramType value:(int)newValue +- (oneway void)OE_didReceiveStateChangeForParamType:(m64p_core_param)paramType value:(int)newValue { if(paramType == M64CORE_EMU_STATE) _emulatorState = newValue; @@ -238,72 +252,6 @@ - (void)OE_didReceiveStateChangeForParamType:(m64p_core_param)paramType value:(i return dlopen(info.dli_fname, RTLD_LAZY | RTLD_GLOBAL); } - -- (void)copyIniFiles:(NSString*)romFolder { - NSBundle *coreBundle = [NSBundle mainBundle]; - - // Copy default config files if they don't exist - NSArray* iniFiles = @[@"GLideN64.ini", @"GLideN64.custom.ini", @"RiceVideoLinux.ini", @"mupen64plus.ini"]; - NSFileManager *fm = [NSFileManager defaultManager]; - - // Create destination folder if missing - - BOOL isDirectory; - if (![fm fileExistsAtPath:romFolder isDirectory:&isDirectory]) { - ILOG(@"ROM data folder doesn't exist, creating %@", romFolder); - NSError *error; - BOOL success = [fm createDirectoryAtPath:romFolder withIntermediateDirectories:YES attributes:nil error:&error]; - if (!success) { - ELOG(@"Failed to create destination folder %@. Error: %@", romFolder, error.localizedDescription); - return; - } - } - - for (NSString *iniFile in iniFiles) { - NSString *destinationPath = [romFolder stringByAppendingPathComponent:iniFile]; - - if (![fm fileExistsAtPath:destinationPath]) { - NSString *fileName = [iniFile stringByDeletingPathExtension]; - NSString *extension = [iniFile pathExtension]; - NSString *source = [coreBundle pathForResource:fileName - ofType:extension]; - if (source == nil) { - ELOG(@"No resource path found for file %@", iniFile); - continue; - } - NSError *error; - BOOL success = [fm copyItemAtPath:source - toPath:destinationPath - error:&error]; - if (!success) { - ELOG(@"Failed to copy app bundle file %@\n%@", iniFile, error.localizedDescription); - } else { - ILOG(@"Copied %@ from app bundle to %@", iniFile, destinationPath); - } - } - } -} - --(void)createHiResFolder:(NSString*)romFolder { - // Create the directory if this option is enabled to make it easier for users to upload packs - BOOL hiResTextures = YES; - if (hiResTextures) { - // Create the directory for hires_texture, this is a constant in mupen source - NSArray* subPaths = @[@"/hires_texture/", @"/cache/", @"/texture_dump/"]; - for(NSString *subPath in subPaths) { - NSString *highResPath = [romFolder stringByAppendingPathComponent:subPath]; - NSError *error; - BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:highResPath - withIntermediateDirectories:YES - attributes:nil - error:&error]; - if (!success) { - ELOG(@"Error creating hi res texture path: %@", error.localizedDescription); - } - } - } -} - - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { NSBundle *coreBundle = [NSBundle mainBundle]; @@ -330,13 +278,30 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { [self parseOptions]; + NSError *copyError = nil; // Create hires folder placement - [self createHiResFolder:romFolder]; + BOOL err = [self createHiResFolder:romFolder error:©Error]; + if (!err) { + ELOG(@"%@", [copyError localizedDescription]); + if(error != NULL) { *error = copyError; } + return false; + } // Copy default ini files to the config path - [self copyIniFiles:configPath]; + BOOL err2 = [self copyIniFiles:configPath error:©Error]; + if (!err2) { + ELOG(@"%@", [copyError localizedDescription]); + if(error != NULL) { *error = copyError; } + return false; + } + // Rice looks in the data path for some reason, fuck it copy it there too - joe m - [self copyIniFiles:dataPath]; + BOOL err3 = [self copyIniFiles:dataPath error:©Error]; + if (!err3) { + ELOG(@"%@", [copyError localizedDescription]); + if(error != NULL) { *error = copyError; } + return false; + } // Setup configs ConfigureAll(romFolder); @@ -416,7 +381,8 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { BOOL (^LoadPlugin)(m64p_plugin_type, NSString *) = ^(m64p_plugin_type pluginType, NSString *pluginName){ m64p_dynlib_handle rsp_handle; NSString *frameworkPath = [NSString stringWithFormat:@"%@.framework/%@", pluginName,pluginName]; - NSString *rspPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:frameworkPath]; + NSBundle *frameworkBundle = [NSBundle mainBundle]; //[NSBundle bundleWithIdentifier:@"org.provenance-emu.Cores"]; + NSString *rspPath = [frameworkBundle.privateFrameworksPath stringByAppendingPathComponent:frameworkPath]; rsp_handle = dlopen([rspPath fileSystemRepresentation], RTLD_LAZY | RTLD_LOCAL); ptr_PluginStartup rsp_start = osal_dynlib_getproc(rsp_handle, "PluginStartup"); @@ -442,7 +408,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { BOOL success = NO; -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX EAGLContext* context = [self bestContext]; #endif @@ -487,6 +453,9 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { audio.aiLenChanged = MupenAudioLenChanged; audio.initiateAudio = MupenOpenAudio; audio.setSpeedFactor = MupenSetAudioSpeed; + audio.romOpen = MupenAudioRomOpen; + audio.romClosed = MupenAudioRomClosed; + plugin_start(M64PLUGIN_AUDIO); // Load Input @@ -528,6 +497,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { return NO; } +#if !TARGET_OS_OSX if(RESIZE_TO_FULLSCREEN) { UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; if(keyWindow != nil) { @@ -541,6 +511,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { [self tryToResizeVideoTo:CGSizeMake(widthScaled, heightScaled)]; } } +#endif // Setup configs ConfigureAll(romFolder); @@ -552,7 +523,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { return YES; } -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX -(EAGLContext*)bestContext { EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; self.glesVersion = GLESVersion3; diff --git a/Cores/Mupen64Plus/MupenOptions.swift b/Cores/Mupen64Plus/MupenOptions.swift index cef7fe34e1..0928a62348 100644 --- a/Cores/Mupen64Plus/MupenOptions.swift +++ b/Cores/Mupen64Plus/MupenOptions.swift @@ -1,10 +1,10 @@ - // - // MupenOptions.swift - // PVMupen64Plus - // - // Created by Joseph Mattiello on 4/11/18. - // Copyright © 2018 Provenance. All rights reserved. - // +// +// MupenOptions.swift +// PVMupen64Plus +// +// Created by Joseph Mattiello on 4/11/18. +// Copyright © 2018 Provenance. All rights reserved. +// import Foundation import PVSupport @@ -105,7 +105,12 @@ extension MupenGameCore: CoreOptional { description: "Randomize PI/SI Interrupt Timing.", requiresRestart: true), defaultValue: true)) - + + coreOptions.append(.range(.init(title: "Count Per Op", + description: "Force number of cycles per emulated instruction when set greater than 0. 0 for default from .ini.", + requiresRestart: true), + range: .init(defaultValue: 0, min: 0, max: 7), defaultValue: 0)) + // MARK: --- DEBUG // MARK: OSD // Draw on-screen display if True, otherwise don't draw OSD @@ -221,7 +226,7 @@ extension MupenGameCore: CoreOptional { // MARK: ---- HiRes // MARK: txHiresEnable - glidenOptions.append(.bool(.init(title: "Enable HiRes Texture packs", description: "These must be installed seperately. Refer to our WIKI for HD textures.", requiresRestart: true), defaultValue: true)) + glidenOptions.append(.bool(.init(title: "Enable HiRes Texture packs", description: "These must be installed seperately. Refer to our WIKI for HD textures.", requiresRestart: true), defaultValue: false)) // MARK: txHresAltCRC // "Use alternative method of paletted textures CRC calculation." diff --git a/Cores/Mupen64Plus/PVMupen64Plus-core/PVMupen64Plus_core.h b/Cores/Mupen64Plus/PVMupen64Plus-core/PVMupen64Plus_core.h index 04955578cb..dc55704821 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus-core/PVMupen64Plus_core.h +++ b/Cores/Mupen64Plus/PVMupen64Plus-core/PVMupen64Plus_core.h @@ -6,7 +6,7 @@ // Copyright © 2018 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVMupen64Plus_core. FOUNDATION_EXPORT double PVMupen64Plus_coreVersionNumber; diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj index 6b92fb002a..bb2a214b7a 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 55; objects = { /* Begin PBXBuildFile section */ @@ -11,19 +11,11 @@ B316B4E9219275A800693472 /* GLideN64.custom.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CA2038AE78001E70F1 /* GLideN64.custom.ini */; }; B316B4EA219275A800693472 /* GLideN64.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CB2038AE78001E70F1 /* GLideN64.ini */; }; B316B4EB219275A800693472 /* RiceVideoLinux.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3A302912073F2AA008C1955 /* RiceVideoLinux.ini */; }; - B316B4EC219275A900693472 /* GLideN64.custom.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CA2038AE78001E70F1 /* GLideN64.custom.ini */; }; - B316B4ED219275A900693472 /* GLideN64.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CB2038AE78001E70F1 /* GLideN64.ini */; }; - B316B4EE219275A900693472 /* RiceVideoLinux.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3A302912073F2AA008C1955 /* RiceVideoLinux.ini */; }; - B324C4C72191A09C009F4EDC /* libpng-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF703921916E60000FA7F9 /* libpng-tvOS.a */; }; B324C62B21920BC2009F4EDC /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E811DED272E00896D96 /* libz.tbd */; }; - B324C62D21920BCD009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; }; - B324C62E21920BD8009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; }; - B324C62F21920BDA009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilter = ios; }; - B324C63021920BDA009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; }; - B324C63121920BDB009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilter = ios; }; + B324C62F21920BDA009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilters = (ios, tvos, watchos, ); }; + B324C63121920BDB009F4EDC /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilters = (ios, tvos, watchos, ); }; B3274E8B2106C19600857F52 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3055BEE20730B60001212D2 /* PVSupport.framework */; }; B3303E381DED20CF00896D96 /* PVMupen64PlusVideoRice.h in Headers */ = {isa = PBXBuildFile; fileRef = B37EFEF21C72E63300857158 /* PVMupen64PlusVideoRice.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3303E391DED20D900896D96 /* PVMupen64PlusVideoRice.h in Headers */ = {isa = PBXBuildFile; fileRef = B37EFEF21C72E63300857158 /* PVMupen64PlusVideoRice.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3303E6C1DED23EE00896D96 /* example.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5B1DED23EE00896D96 /* example.c */; }; B3303E6D1DED23EE00896D96 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5C1DED23EE00896D96 /* png.c */; }; B3303E6E1DED23EE00896D96 /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5D1DED23EE00896D96 /* pngerror.c */; }; @@ -44,39 +36,17 @@ B3303E821DED272E00896D96 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E811DED272E00896D96 /* libz.tbd */; }; B331158F1C7309C200E9AD14 /* PVRSPCXD4.h in Headers */ = {isa = PBXBuildFile; fileRef = B331158E1C7309C200E9AD14 /* PVRSPCXD4.h */; settings = {ATTRIBUTES = (Public, ); }; }; B34601D62081333D008C049C /* gliden_osd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B34601D320813330008C049C /* gliden_osd.cpp */; }; - B34601D72081333E008C049C /* gliden_osd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B34601D320813330008C049C /* gliden_osd.cpp */; }; - B3547B462058531200CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B39E8CB52053B53100380DCD /* Core.plist */; }; - B35B3149206C7C9300AEAF88 /* gSPNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603262038AE7B001E70F1 /* gSPNeon.cpp */; }; - B35B314A206C7C9300AEAF88 /* 3DMathNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603272038AE7B001E70F1 /* 3DMathNeon.cpp */; }; - B35B314B206C7C9300AEAF88 /* RSP_LoadMatrixNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603282038AE7B001E70F1 /* RSP_LoadMatrixNeon.cpp */; }; - B35B3151206C7DF600AEAF88 /* 3DMathNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603272038AE7B001E70F1 /* 3DMathNeon.cpp */; }; B35B3152206C843400AEAF88 /* gSPNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603262038AE7B001E70F1 /* gSPNeon.cpp */; }; - B35B3153206C846900AEAF88 /* RSP_LoadMatrixNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603282038AE7B001E70F1 /* RSP_LoadMatrixNeon.cpp */; }; B35B31C8206C912C00AEAF88 /* Types.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602872038AE7A001E70F1 /* Types.h */; }; B35B31C9206C9AAC00AEAF88 /* opengl_CachedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6037C2038AE7C001E70F1 /* opengl_CachedFunctions.cpp */; }; - B35B31CC206CA65A00AEAF88 /* CRC_OPT_NEON.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B35B31CB206CA65900AEAF88 /* CRC_OPT_NEON.cpp */; }; - B35B31CD206CA65A00AEAF88 /* CRC_OPT_NEON.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B35B31CB206CA65900AEAF88 /* CRC_OPT_NEON.cpp */; }; B35B31CE206CA72800AEAF88 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = DFB6032F2038AE7B001E70F1 /* xxhash.c */; }; - B35B31CF206CA72A00AEAF88 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = DFB6032F2038AE7B001E70F1 /* xxhash.c */; }; B369B0DF21A3D7F90064EDCA /* MupenOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C3B207EE3750040709A /* MupenOptions.swift */; }; - B369B0E021A3D7FB0064EDCA /* MupenOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C3B207EE3750040709A /* MupenOptions.swift */; }; B36EF42F279C5284005C7ED4 /* r4300_core.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A712072FEE9001212D2 /* r4300_core.h */; }; - B36EF430279C5286005C7ED4 /* r4300_core.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A712072FEE9001212D2 /* r4300_core.h */; }; B36EF438279C55A4005C7ED4 /* asm_defines.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A092072FEE9001212D2 /* asm_defines.c */; }; - B36EF439279C55A4005C7ED4 /* asm_defines.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A092072FEE9001212D2 /* asm_defines.c */; }; - B37263B326EA161100E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A326EA0D6700E95488 /* libz.tbd */; }; - B37263B426EA163600E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A326EA0D6700E95488 /* libz.tbd */; }; - B37263B526EA164900E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37263A326EA0D6700E95488 /* libz.tbd */; }; - B37263B726EA168500E95488 /* libpng-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF703921916E60000FA7F9 /* libpng-tvOS.a */; }; B37263BE26EA1EF000E95488 /* PVMupen64PlusRspHLE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B8601DECEA9100602746 /* PVMupen64PlusRspHLE.framework */; }; B37263C226EA1EF000E95488 /* PVMupen64PlusVideoGlideN64.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFB601802038AD13001E70F1 /* PVMupen64PlusVideoGlideN64.framework */; }; - B37263C626EA1EF000E95488 /* PVMupen64PlusVideoRice.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37EFEF01C72E63300857158 /* PVMupen64PlusVideoRice.framework */; platformFilter = ios; }; + B37263C626EA1EF000E95488 /* PVMupen64PlusVideoRice.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37EFEF01C72E63300857158 /* PVMupen64PlusVideoRice.framework */; platformFilters = (ios, tvos, watchos, ); }; B37263CA26EA1EF000E95488 /* PVRSPCXD4.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B331158C1C7309C200E9AD14 /* PVRSPCXD4.framework */; }; - B37263CF26EA1F1C00E95488 /* PVMupen64PlusRspHLE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B9531DED13A200602746 /* PVMupen64PlusRspHLE.framework */; }; - B37263D326EA1F1C00E95488 /* PVMupen64PlusVideoGlideN64.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFB603B82038B582001E70F1 /* PVMupen64PlusVideoGlideN64.framework */; }; - B37263D726EA1F1C00E95488 /* PVMupen64PlusVideoRice.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B9401DED137100602746 /* PVMupen64PlusVideoRice.framework */; }; - B37263DB26EA1F1C00E95488 /* PVRSPCXD4.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B3B9731DED144100602746 /* PVRSPCXD4.framework */; }; - B37263E226EA280E00E95488 /* libpng-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF703921916E60000FA7F9 /* libpng-tvOS.a */; }; B37EFF231C72E6CD00857158 /* SDLStubs.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D00F0801183E52F002995A1 /* SDLStubs.m */; }; B37EFF861C72F47000857158 /* MupenGameCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D208F811182B00300BEAA42 /* MupenGameCore.m */; }; B3800FFE2085232500FA03B8 /* TextureFilters_2xsai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6031D2038AE7B001E70F1 /* TextureFilters_2xsai.cpp */; }; @@ -94,33 +64,27 @@ B380100A2085234000FA03B8 /* TxTexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602F62038AE7B001E70F1 /* TxTexCache.cpp */; }; B380100B2085234000FA03B8 /* TxUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603112038AE7B001E70F1 /* TxUtil.cpp */; }; B380100C2085234000FA03B8 /* txWidestringWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603022038AE7B001E70F1 /* txWidestringWrapper.cpp */; }; - B3801011208545D900FA03B8 /* libpng-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E4C1DED23C600896D96 /* libpng-iOS.a */; }; + B3801011208545D900FA03B8 /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E4C1DED23C600896D96 /* libpng.a */; }; B380101420854EAA00FA03B8 /* TxDbg_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B380101320854EAA00FA03B8 /* TxDbg_ios.mm */; }; - B38010152085586900FA03B8 /* libglidenhq-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3800FF5208522DC00FA03B8 /* libglidenhq-iOS.a */; }; - B3882C141DED279C007183B6 /* libpng-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E4C1DED23C600896D96 /* libpng-iOS.a */; }; - B3962AEC26FBD89A00FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilter = maccatalyst; }; - B3962AED26FBD8A500FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilter = maccatalyst; }; - B3962AEE26FBD8F100FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilter = maccatalyst; }; + B38010152085586900FA03B8 /* libglidenhq.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3800FF5208522DC00FA03B8 /* libglidenhq.a */; }; + B3882C141DED279C007183B6 /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E4C1DED23C600896D96 /* libpng.a */; }; + B3919A31292C3CB600519575 /* CRC_OPT_NEON.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B35B31CB206CA65900AEAF88 /* CRC_OPT_NEON.cpp */; }; + B3919A32292C3CDE00519575 /* RSP_LoadMatrixNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603282038AE7B001E70F1 /* RSP_LoadMatrixNeon.cpp */; }; + B3919A33292C3CF600519575 /* 3DMathNeon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603272038AE7B001E70F1 /* 3DMathNeon.cpp */; }; + B395ECFA2904B49F00C9407B /* MupenGameCore+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = B395ECF92904B49F00C9407B /* MupenGameCore+Resources.swift */; }; + B3962AEC26FBD89A00FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; + B3962AED26FBD8A500FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; + B3962AEE26FBD8F100FAEFC0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; B3963E61279E835300B00117 /* MupenGameCore+Audio.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */; }; - B3963E62279E835300B00117 /* MupenGameCore+Audio.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */; }; B3963E64279E867100B00117 /* MupenGameCore+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E63279E866B00B00117 /* MupenGameCore+Video.swift */; }; - B3963E65279E867100B00117 /* MupenGameCore+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3963E63279E866B00B00117 /* MupenGameCore+Video.swift */; }; B39C29D127A120790078D028 /* MupenGameCore+Controls.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D027A120780078D028 /* MupenGameCore+Controls.m */; }; - B39C29D227A120790078D028 /* MupenGameCore+Controls.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D027A120780078D028 /* MupenGameCore+Controls.m */; }; B39C29D427A121160078D028 /* MupenGameCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D327A121150078D028 /* MupenGameCore+Controls.h */; }; - B39C29D527A121160078D028 /* MupenGameCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D327A121150078D028 /* MupenGameCore+Controls.h */; }; B39C29D827A12D100078D028 /* MupenGameCore+Cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D627A12D0F0078D028 /* MupenGameCore+Cheats.h */; }; - B39C29D927A12D100078D028 /* MupenGameCore+Cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29D627A12D0F0078D028 /* MupenGameCore+Cheats.h */; }; B39C29DA27A12D100078D028 /* MupenGameCore+Cheats.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D727A12D0F0078D028 /* MupenGameCore+Cheats.m */; }; - B39C29DB27A12D100078D028 /* MupenGameCore+Cheats.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29D727A12D0F0078D028 /* MupenGameCore+Cheats.m */; }; B39C29DE27A12DA30078D028 /* MupenGameCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29DC27A12DA20078D028 /* MupenGameCore+Saves.h */; }; - B39C29DF27A12DA30078D028 /* MupenGameCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29DC27A12DA20078D028 /* MupenGameCore+Saves.h */; }; B39C29E027A12DA30078D028 /* MupenGameCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29DD27A12DA30078D028 /* MupenGameCore+Saves.m */; }; - B39C29E127A12DA30078D028 /* MupenGameCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29DD27A12DA30078D028 /* MupenGameCore+Saves.m */; }; B39C29E427A12E6A0078D028 /* MupenGameCore+Mupen.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29E227A12E690078D028 /* MupenGameCore+Mupen.h */; }; - B39C29E527A12E6A0078D028 /* MupenGameCore+Mupen.h in Headers */ = {isa = PBXBuildFile; fileRef = B39C29E227A12E690078D028 /* MupenGameCore+Mupen.h */; }; B39C29E627A12E6A0078D028 /* MupenGameCore+Mupen.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29E327A12E6A0078D028 /* MupenGameCore+Mupen.m */; }; - B39C29E727A12E6A0078D028 /* MupenGameCore+Mupen.m in Sources */ = {isa = PBXBuildFile; fileRef = B39C29E327A12E6A0078D028 /* MupenGameCore+Mupen.m */; }; B39E8CB62053B53100380DCD /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B39E8CB52053B53100380DCD /* Core.plist */; }; B3A302F22073F2D4008C1955 /* RiceVideoLinux.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3A302912073F2AA008C1955 /* RiceVideoLinux.ini */; }; B3A302F32073F2F2008C1955 /* osal_dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302C12073F2AA008C1955 /* osal_dynamiclib_unix.c */; }; @@ -158,43 +122,6 @@ B3A303132073F303008C1955 /* BMGUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302C62073F2AA008C1955 /* BMGUtils.c */; }; B3A303142073F303008C1955 /* bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302CC2073F2AA008C1955 /* bmp.c */; }; B3A303152073F303008C1955 /* pngrw.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302C52073F2AA008C1955 /* pngrw.c */; }; - B3A30316207401BB008C1955 /* RSP_S2DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302BF2073F2AA008C1955 /* RSP_S2DEX.cpp */; }; - B3A30317207401BB008C1955 /* OGLRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302EC2073F2AA008C1955 /* OGLRender.cpp */; }; - B3A30318207401BB008C1955 /* RenderTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302AE2073F2AA008C1955 /* RenderTexture.cpp */; }; - B3A30319207401BB008C1955 /* BMGImage.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302CD2073F2AA008C1955 /* BMGImage.c */; }; - B3A3031A207401BB008C1955 /* OGLCombiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302DB2073F2AA008C1955 /* OGLCombiner.cpp */; }; - B3A3031B207401BB008C1955 /* TextureFilters_hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302AD2073F2AA008C1955 /* TextureFilters_hq2x.cpp */; }; - B3A3031C207401BB008C1955 /* TextureFilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302992073F2AA008C1955 /* TextureFilters.cpp */; }; - B3A3031D207401BB008C1955 /* Render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302962073F2AA008C1955 /* Render.cpp */; }; - B3A3031E207401BB008C1955 /* Blender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302952073F2AA008C1955 /* Blender.cpp */; }; - B3A3031F207401BB008C1955 /* osal_files_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302D32073F2AA008C1955 /* osal_files_unix.c */; }; - B3A30320207401BB008C1955 /* ConvertImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A3029F2073F2AA008C1955 /* ConvertImage.cpp */; }; - B3A30321207401BB008C1955 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302DF2073F2AA008C1955 /* Debugger.cpp */; }; - B3A30322207401BB008C1955 /* TextureFilters_2xsai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302E72073F2AA008C1955 /* TextureFilters_2xsai.cpp */; }; - B3A30323207401BB008C1955 /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302B22073F2AA008C1955 /* FrameBuffer.cpp */; }; - B3A30324207401BB008C1955 /* Combiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302DC2073F2AA008C1955 /* Combiner.cpp */; }; - B3A30325207401BB008C1955 /* GraphicsContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302BE2073F2AA008C1955 /* GraphicsContext.cpp */; }; - B3A30326207401BB008C1955 /* DeviceBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302ED2073F2AA008C1955 /* DeviceBuilder.cpp */; }; - B3A30327207401BB008C1955 /* bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302CC2073F2AA008C1955 /* bmp.c */; }; - B3A30328207401BB008C1955 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302D52073F2AA008C1955 /* Config.cpp */; }; - B3A30329207401BB008C1955 /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302BD2073F2AA008C1955 /* Video.cpp */; }; - B3A3032A207401BB008C1955 /* OGLExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302A72073F2AA008C1955 /* OGLExtensions.cpp */; }; - B3A3032B207401BB008C1955 /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302B82073F2AA008C1955 /* Texture.cpp */; }; - B3A3032C207401BB008C1955 /* TextureFilters_hq4x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A3029B2073F2AA008C1955 /* TextureFilters_hq4x.cpp */; }; - B3A3032D207401BB008C1955 /* OGLGraphicsContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302D92073F2AA008C1955 /* OGLGraphicsContext.cpp */; }; - B3A3032E207401BB008C1955 /* VectorMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A3029E2073F2AA008C1955 /* VectorMath.cpp */; }; - B3A3032F207401BB008C1955 /* RenderBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302A82073F2AA008C1955 /* RenderBase.cpp */; }; - B3A30330207401BB008C1955 /* osal_dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302C12073F2AA008C1955 /* osal_dynamiclib_unix.c */; }; - B3A30331207401BB008C1955 /* BMGUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302C62073F2AA008C1955 /* BMGUtils.c */; }; - B3A30332207401BB008C1955 /* OGLTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302B12073F2AA008C1955 /* OGLTexture.cpp */; }; - B3A30333207401BB008C1955 /* RenderExt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302F12073F2AA008C1955 /* RenderExt.cpp */; }; - B3A30334207401BB008C1955 /* pngrw.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A302C52073F2AA008C1955 /* pngrw.c */; }; - B3A30335207401BB008C1955 /* OGLRenderExt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302D22073F2AA008C1955 /* OGLRenderExt.cpp */; }; - B3A30336207401BB008C1955 /* ConvertImage16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302EB2073F2AA008C1955 /* ConvertImage16.cpp */; }; - B3A30337207401BB008C1955 /* RSP_Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302D72073F2AA008C1955 /* RSP_Parser.cpp */; }; - B3A30338207401BB008C1955 /* SDLStubs.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D00F0801183E52F002995A1 /* SDLStubs.m */; }; - B3A30339207401BB008C1955 /* TextureManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3A302D82073F2AA008C1955 /* TextureManager.cpp */; }; - B3A3033A2074020F008C1955 /* RiceVideoLinux.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3A302912073F2AA008C1955 /* RiceVideoLinux.ini */; }; B3AE1D7D207311E900AD06D4 /* cp1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A882072FEE9001212D2 /* cp1.c */; }; B3AE1D7E207311E900AD06D4 /* dummy_rsp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A132072FEE9001212D2 /* dummy_rsp.c */; }; B3AE1D7F207311E900AD06D4 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055ACD2072FEE9001212D2 /* main.c */; }; @@ -267,78 +194,6 @@ B3AE1DD520732E5200AD06D4 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AC42072FEE9001212D2 /* unzip.c */; }; B3AE1DD620732E5200AD06D4 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AC52072FEE9001212D2 /* zip.c */; }; B3AE1DD720732E5200AD06D4 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AC62072FEE9001212D2 /* ioapi.c */; }; - B3AE1DD82073378600AD06D4 /* screenshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D00F06C1183E4AA002995A1 /* screenshot.m */; }; - B3AE1DD92073378600AD06D4 /* vidext.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D00F0BF1183E6FA002995A1 /* vidext.m */; }; - B3AE1DDA2073378600AD06D4 /* eventloop.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D00F06A1183E4AA002995A1 /* eventloop.m */; }; - B3AE1DDB2073378600AD06D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D8B35D712260F9D00C4C844 /* main.m */; }; - B3AE1DDC2073378600AD06D4 /* SDLStubs.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D00F0801183E52F002995A1 /* SDLStubs.m */; }; - B3AE1DDD2073378600AD06D4 /* MupenGameCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D208F811182B00300BEAA42 /* MupenGameCore.m */; }; - B3AE1DDE2073378600AD06D4 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AD62072FEE9001212D2 /* md5.c */; }; - B3AE1DDF2073378600AD06D4 /* cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AA02072FEE9001212D2 /* cart.c */; }; - B3AE1DE02073378600AD06D4 /* callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A302072FEE9001212D2 /* callbacks.c */; }; - B3AE1DE12073378600AD06D4 /* flashram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AAA2072FEE9001212D2 /* flashram.c */; }; - B3AE1DE22073378600AD06D4 /* pure_interp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A612072FEE9001212D2 /* pure_interp.c */; }; - B3AE1DE32073378600AD06D4 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055ACD2072FEE9001212D2 /* main.c */; }; - B3AE1DE42073378600AD06D4 /* cp0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A682072FEE9001212D2 /* cp0.c */; }; - B3AE1DE52073378600AD06D4 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A212072FEE9001212D2 /* common.c */; }; - B3AE1DE62073378600AD06D4 /* cached_interp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A602072FEE9001212D2 /* cached_interp.c */; }; - B3AE1DE72073378600AD06D4 /* lirc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AD72072FEE9001212D2 /* lirc.c */; }; - B3AE1DE82073378600AD06D4 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AD32072FEE9001212D2 /* xxhash.c */; }; - B3AE1DE92073378600AD06D4 /* af_rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AA32072FEE9001212D2 /* af_rtc.c */; }; - B3AE1DEA2073378600AD06D4 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A5A2072FEE9001212D2 /* memory.c */; }; - B3AE1DEB2073378600AD06D4 /* interrupt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A632072FEE9001212D2 /* interrupt.c */; }; - B3AE1DEC2073378600AD06D4 /* cic.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A502072FEE9001212D2 /* cic.c */; }; - B3AE1DED2073378600AD06D4 /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A112072FEE9001212D2 /* plugin.c */; }; - B3AE1DEE2073378600AD06D4 /* device.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AAB2072FEE9001212D2 /* device.c */; }; - B3AE1DEF2073378600AD06D4 /* rdp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A3F2072FEE9001212D2 /* rdp_core.c */; }; - B3AE1DF02073378600AD06D4 /* file_storage.c in Sources */ = {isa = PBXBuildFile; fileRef = B30559FE2072FEE9001212D2 /* file_storage.c */; }; - B3AE1DF12073378600AD06D4 /* ai_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A4A2072FEE9001212D2 /* ai_controller.c */; }; - B3AE1DF22073378600AD06D4 /* dummy_rsp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A132072FEE9001212D2 /* dummy_rsp.c */; }; - B3AE1DF32073378600AD06D4 /* si_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A472072FEE9001212D2 /* si_controller.c */; }; - B3AE1DF42073378600AD06D4 /* audio_plugin_compat.c in Sources */ = {isa = PBXBuildFile; fileRef = B30559F22072FEE9001212D2 /* audio_plugin_compat.c */; }; - B3AE1DF52073378600AD06D4 /* vi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A372072FEE9001212D2 /* vi_controller.c */; }; - B3AE1DF62073378600AD06D4 /* rom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AD42072FEE9001212D2 /* rom.c */; }; - B3AE1DF72073378600AD06D4 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AC52072FEE9001212D2 /* zip.c */; }; - B3AE1DF82073378600AD06D4 /* frontend.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A222072FEE9001212D2 /* frontend.c */; }; - B3AE1DF92073378600AD06D4 /* dummy_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A0B2072FEE9001212D2 /* dummy_audio.c */; }; - B3AE1DFA2073378600AD06D4 /* config.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A2D2072FEE9001212D2 /* config.c */; }; - B3AE1DFB2073378600AD06D4 /* rsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A4E2072FEE9001212D2 /* rsp_core.c */; }; - B3AE1DFC2073378600AD06D4 /* eeprom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AA52072FEE9001212D2 /* eeprom.c */; }; - B3AE1DFD2073378600AD06D4 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AC42072FEE9001212D2 /* unzip.c */; }; - B3AE1DFE2073378600AD06D4 /* rumblepak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AB02072FEE9001212D2 /* rumblepak.c */; }; - B3AE1DFF2073378600AD06D4 /* input_plugin_compat.c in Sources */ = {isa = PBXBuildFile; fileRef = B30559F42072FEE9001212D2 /* input_plugin_compat.c */; }; - B3AE1E002073378600AD06D4 /* dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A052072FEE9001212D2 /* dynamiclib_unix.c */; }; - B3AE1E012073378600AD06D4 /* sram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A9F2072FEE9001212D2 /* sram.c */; }; - B3AE1E022073378600AD06D4 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AC62072FEE9001212D2 /* ioapi.c */; }; - B3AE1E032073378600AD06D4 /* files_macos.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A022072FEE9001212D2 /* files_macos.c */; }; - B3AE1E042073378600AD06D4 /* savestates.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055ABC2072FEE9001212D2 /* savestates.c */; }; - B3AE1E052073378600AD06D4 /* dummy_input.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A0F2072FEE9001212D2 /* dummy_input.c */; }; - B3AE1E062073378600AD06D4 /* bootrom_hle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A572072FEE9001212D2 /* bootrom_hle.c */; }; - B3AE1E072073378600AD06D4 /* ri_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A422072FEE9001212D2 /* ri_controller.c */; }; - B3AE1E082073378600AD06D4 /* cheat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055ACC2072FEE9001212D2 /* cheat.c */; }; - B3AE1E092073378600AD06D4 /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055ABB2072FEE9001212D2 /* util.c */; }; - B3AE1E0A2073378600AD06D4 /* gb_cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A9C2072FEE9001212D2 /* gb_cart.c */; }; - B3AE1E0B2073378600AD06D4 /* mbc3_rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A9D2072FEE9001212D2 /* mbc3_rtc.c */; }; - B3AE1E0C2073378600AD06D4 /* cart_rom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AA22072FEE9001212D2 /* cart_rom.c */; }; - B3AE1E0D2073378600AD06D4 /* tlb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A8A2072FEE9001212D2 /* tlb.c */; }; - B3AE1E0E2073378600AD06D4 /* mi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A3A2072FEE9001212D2 /* mi_controller.c */; }; - B3AE1E0F2073378600AD06D4 /* workqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AD52072FEE9001212D2 /* workqueue.c */; }; - B3AE1E102073378600AD06D4 /* pi_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A442072FEE9001212D2 /* pi_controller.c */; }; - B3AE1E112073378600AD06D4 /* fb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A3C2072FEE9001212D2 /* fb.c */; }; - B3AE1E122073378600AD06D4 /* pif.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A562072FEE9001212D2 /* pif.c */; }; - B3AE1E132073378600AD06D4 /* debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A292072FEE9001212D2 /* debugger.c */; }; - B3AE1E142073378600AD06D4 /* idec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A8B2072FEE9001212D2 /* idec.c */; }; - B3AE1E152073378600AD06D4 /* sdl_key_converter.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AD82072FEE9001212D2 /* sdl_key_converter.c */; }; - B3AE1E162073378600AD06D4 /* cp1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A882072FEE9001212D2 /* cp1.c */; }; - B3AE1E172073378600AD06D4 /* transferpak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AB12072FEE9001212D2 /* transferpak.c */; }; - B3AE1E182073378600AD06D4 /* clock_ctime_plus_delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B30559F02072FEE9001212D2 /* clock_ctime_plus_delta.c */; }; - B3AE1E192073378600AD06D4 /* n64_cic_nus_6105.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A552072FEE9001212D2 /* n64_cic_nus_6105.c */; }; - B3AE1E1A2073378600AD06D4 /* r4300_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A652072FEE9001212D2 /* r4300_core.c */; }; - B3AE1E1B2073378600AD06D4 /* game_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AB52072FEE9001212D2 /* game_controller.c */; }; - B3AE1E1C2073378600AD06D4 /* m64282fp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A9A2072FEE9001212D2 /* m64282fp.c */; }; - B3AE1E1D2073378600AD06D4 /* dummy_video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A122072FEE9001212D2 /* dummy_video.c */; }; - B3AE1E1E2073378600AD06D4 /* rdram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055A5E2072FEE9001212D2 /* rdram.c */; }; - B3AE1E1F2073378600AD06D4 /* mempak.c in Sources */ = {isa = PBXBuildFile; fileRef = B3055AB22072FEE9001212D2 /* mempak.c */; }; B3AE1F4420733D6000AD06D4 /* alist_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1020733D3500AD06D4 /* alist_audio.c */; }; B3AE1F4520733D6000AD06D4 /* alist_naudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F2220733D3500AD06D4 /* alist_naudio.c */; }; B3AE1F4620733D6000AD06D4 /* alist_nead.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1D20733D3500AD06D4 /* alist_nead.c */; }; @@ -353,29 +208,6 @@ B3AE1F4F20733D6000AD06D4 /* osal_dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1C20733D3500AD06D4 /* osal_dynamiclib_unix.c */; }; B3AE1F5020733D6000AD06D4 /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F2320733D3500AD06D4 /* plugin.c */; }; B3AE1F5120733D6000AD06D4 /* re2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1820733D3500AD06D4 /* re2.c */; }; - B3AE1F5220733D6700AD06D4 /* alist_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1020733D3500AD06D4 /* alist_audio.c */; }; - B3AE1F5320733D6700AD06D4 /* alist_naudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F2220733D3500AD06D4 /* alist_naudio.c */; }; - B3AE1F5420733D6700AD06D4 /* alist_nead.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1D20733D3500AD06D4 /* alist_nead.c */; }; - B3AE1F5520733D6700AD06D4 /* alist.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F2120733D3500AD06D4 /* alist.c */; }; - B3AE1F5620733D6700AD06D4 /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F2920733D3500AD06D4 /* audio.c */; }; - B3AE1F5720733D6700AD06D4 /* cicx105.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1E20733D3500AD06D4 /* cicx105.c */; }; - B3AE1F5820733D6700AD06D4 /* hle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1620733D3500AD06D4 /* hle.c */; }; - B3AE1F5920733D6700AD06D4 /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1120733D3500AD06D4 /* jpeg.c */; }; - B3AE1F5A20733D6700AD06D4 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1220733D3500AD06D4 /* memory.c */; }; - B3AE1F5B20733D6700AD06D4 /* mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F2720733D3500AD06D4 /* mp3.c */; }; - B3AE1F5C20733D6700AD06D4 /* musyx.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1A20733D3500AD06D4 /* musyx.c */; }; - B3AE1F5D20733D6700AD06D4 /* osal_dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1C20733D3500AD06D4 /* osal_dynamiclib_unix.c */; }; - B3AE1F5E20733D6700AD06D4 /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F2320733D3500AD06D4 /* plugin.c */; }; - B3AE1F5F20733D6700AD06D4 /* re2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1F1820733D3500AD06D4 /* re2.c */; }; - B3AE1F6020733DB300AD06D4 /* module.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EEE20733D3500AD06D4 /* module.c */; }; - B3AE1F6120733DB300AD06D4 /* osal_dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EF620733D3500AD06D4 /* osal_dynamiclib_unix.c */; }; - B3AE1F6220733DB300AD06D4 /* su.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EED20733D3500AD06D4 /* su.c */; }; - B3AE1F6320733DC600AD06D4 /* add.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE620733D3500AD06D4 /* add.c */; }; - B3AE1F6420733DC600AD06D4 /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE420733D3500AD06D4 /* divide.c */; }; - B3AE1F6520733DC600AD06D4 /* logical.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE120733D3500AD06D4 /* logical.c */; }; - B3AE1F6620733DC600AD06D4 /* multiply.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE720733D3500AD06D4 /* multiply.c */; }; - B3AE1F6720733DC600AD06D4 /* select.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE320733D3500AD06D4 /* select.c */; }; - B3AE1F6820733DC600AD06D4 /* vu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE220733D3500AD06D4 /* vu.c */; }; B3AE1F692073420500AD06D4 /* add.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE620733D3500AD06D4 /* add.c */; }; B3AE1F6A2073420500AD06D4 /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE420733D3500AD06D4 /* divide.c */; }; B3AE1F6B2073420500AD06D4 /* logical.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EE120733D3500AD06D4 /* logical.c */; }; @@ -386,232 +218,103 @@ B3AE1F702073420500AD06D4 /* osal_dynamiclib_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EF620733D3500AD06D4 /* osal_dynamiclib_unix.c */; }; B3AE1F712073420500AD06D4 /* su.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AE1EED20733D3500AD06D4 /* su.c */; }; B3AF47E321072BCB002211EE /* mupen64plus.ini in Resources */ = {isa = PBXBuildFile; fileRef = B30559E42072FEE9001212D2 /* mupen64plus.ini */; }; - B3AF47E421072BCC002211EE /* mupen64plus.ini in Resources */ = {isa = PBXBuildFile; fileRef = B30559E42072FEE9001212D2 /* mupen64plus.ini */; }; - B3AF702321916E60000FA7F9 /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E621DED23EE00896D96 /* pngrio.c */; }; - B3AF702421916E60000FA7F9 /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E681DED23EE00896D96 /* pngwio.c */; }; - B3AF702521916E60000FA7F9 /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5D1DED23EE00896D96 /* pngerror.c */; }; - B3AF702621916E60000FA7F9 /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E691DED23EE00896D96 /* pngwrite.c */; }; - B3AF702721916E60000FA7F9 /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E651DED23EE00896D96 /* pngset.c */; }; - B3AF702821916E60000FA7F9 /* example.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5B1DED23EE00896D96 /* example.c */; }; - B3AF702921916E60000FA7F9 /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5E1DED23EE00896D96 /* pngget.c */; }; - B3AF702A21916E60000FA7F9 /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E631DED23EE00896D96 /* pngrtran.c */; }; - B3AF702B21916E60000FA7F9 /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5F1DED23EE00896D96 /* pngmem.c */; }; - B3AF702C21916E60000FA7F9 /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E6B1DED23EE00896D96 /* pngwutil.c */; }; - B3AF702D21916E60000FA7F9 /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E671DED23EE00896D96 /* pngtrans.c */; }; - B3AF702E21916E60000FA7F9 /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E601DED23EE00896D96 /* pngpread.c */; }; - B3AF702F21916E60000FA7F9 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E5C1DED23EE00896D96 /* png.c */; }; - B3AF703021916E60000FA7F9 /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E6A1DED23EE00896D96 /* pngwtran.c */; }; - B3AF703121916E60000FA7F9 /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E641DED23EE00896D96 /* pngrutil.c */; }; - B3AF703221916E60000FA7F9 /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E611DED23EE00896D96 /* pngread.c */; }; - B3AF703321916E60000FA7F9 /* pngtest.c in Sources */ = {isa = PBXBuildFile; fileRef = B3303E661DED23EE00896D96 /* pngtest.c */; }; - B3AF703C21916E87000FA7F9 /* TxQuantize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603032038AE7B001E70F1 /* TxQuantize.cpp */; }; - B3AF703D21916E87000FA7F9 /* TextureFilters_hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603002038AE7B001E70F1 /* TextureFilters_hq2x.cpp */; }; - B3AF703E21916E87000FA7F9 /* TxUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603112038AE7B001E70F1 /* TxUtil.cpp */; }; - B3AF703F21916E87000FA7F9 /* TxFilterExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6031F2038AE7B001E70F1 /* TxFilterExport.cpp */; }; - B3AF704021916E87000FA7F9 /* txWidestringWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603022038AE7B001E70F1 /* txWidestringWrapper.cpp */; }; - B3AF704121916E87000FA7F9 /* TextureFilters_hq4x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602F32038AE7B001E70F1 /* TextureFilters_hq4x.cpp */; }; - B3AF704221916E87000FA7F9 /* TextureFilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602EA2038AE7B001E70F1 /* TextureFilters.cpp */; }; - B3AF704321916E87000FA7F9 /* TextureFilters_2xsai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6031D2038AE7B001E70F1 /* TextureFilters_2xsai.cpp */; }; - B3AF704421916E87000FA7F9 /* TxReSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6031C2038AE7B001E70F1 /* TxReSample.cpp */; }; - B3AF704521916E87000FA7F9 /* TxDbg_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B380101320854EAA00FA03B8 /* TxDbg_ios.mm */; }; - B3AF704621916E87000FA7F9 /* TxHiResCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6030E2038AE7B001E70F1 /* TxHiResCache.cpp */; }; - B3AF704721916E87000FA7F9 /* TextureFilters_xbrz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602F42038AE7B001E70F1 /* TextureFilters_xbrz.cpp */; }; - B3AF704821916E87000FA7F9 /* TxImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602E92038AE7B001E70F1 /* TxImage.cpp */; }; - B3AF704921916E87000FA7F9 /* TxCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603102038AE7B001E70F1 /* TxCache.cpp */; }; - B3AF704A21916E87000FA7F9 /* TxTexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602F62038AE7B001E70F1 /* TxTexCache.cpp */; }; - B3AF704B21916E87000FA7F9 /* TxFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6030A2038AE7B001E70F1 /* TxFilter.cpp */; }; - B3AF705821916ED0000FA7F9 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF705721916ED0000FA7F9 /* PVSupport.framework */; }; - B3AF705D21916F88000FA7F9 /* libglidenhq-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF705221916E87000FA7F9 /* libglidenhq-tvOS.a */; }; B3B3B8581DECE9E100602746 /* MupenGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D208F801182B00300BEAA42 /* MupenGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3B3B8641DECEA9100602746 /* PVMupen64PlusRspHLE.h in Headers */ = {isa = PBXBuildFile; fileRef = B3B3B8621DECEA9100602746 /* PVMupen64PlusRspHLE.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3B3B8A01DED04CE00602746 /* PVMupen64Plus.h in Headers */ = {isa = PBXBuildFile; fileRef = B37EFF3A1C72F43400857158 /* PVMupen64Plus.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3B3B9001DED130B00602746 /* MupenGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D208F801182B00300BEAA42 /* MupenGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3B3B9021DED130B00602746 /* PVMupen64Plus.h in Headers */ = {isa = PBXBuildFile; fileRef = B37EFF3A1C72F43400857158 /* PVMupen64Plus.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3B3B94E1DED13A200602746 /* PVMupen64PlusRspHLE.h in Headers */ = {isa = PBXBuildFile; fileRef = B3B3B8621DECEA9100602746 /* PVMupen64PlusRspHLE.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3B3B96A1DED144100602746 /* PVRSPCXD4.h in Headers */ = {isa = PBXBuildFile; fileRef = B331158E1C7309C200E9AD14 /* PVRSPCXD4.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C3F40921A9CBAA00EFB09C /* F3DFLX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3D721A9CB9B00EFB09C /* F3DFLX2.cpp */; }; - B3C3F40A21A9CBAA00EFB09C /* F3DFLX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3D721A9CB9B00EFB09C /* F3DFLX2.cpp */; }; B3C3F40B21A9CBAA00EFB09C /* F3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3D821A9CB9B00EFB09C /* F3DEX2.cpp */; }; - B3C3F40C21A9CBAA00EFB09C /* F3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3D821A9CB9B00EFB09C /* F3DEX2.cpp */; }; B3C3F40D21A9CBAA00EFB09C /* F3DEX2ACCLAIM.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3D921A9CB9B00EFB09C /* F3DEX2ACCLAIM.h */; }; - B3C3F40E21A9CBAA00EFB09C /* F3DEX2ACCLAIM.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3D921A9CB9B00EFB09C /* F3DEX2ACCLAIM.h */; }; B3C3F40F21A9CBAA00EFB09C /* F3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3DA21A9CB9B00EFB09C /* F3DEX.cpp */; }; - B3C3F41021A9CBAA00EFB09C /* F3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3DA21A9CB9B00EFB09C /* F3DEX.cpp */; }; B3C3F41121A9CBAA00EFB09C /* F3DTEXA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3DB21A9CB9B00EFB09C /* F3DTEXA.cpp */; }; - B3C3F41221A9CBAA00EFB09C /* F3DTEXA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3DB21A9CB9B00EFB09C /* F3DTEXA.cpp */; }; B3C3F41321A9CBAA00EFB09C /* F3DEX2CBFD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3DC21A9CB9B00EFB09C /* F3DEX2CBFD.h */; }; - B3C3F41421A9CBAA00EFB09C /* F3DEX2CBFD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3DC21A9CB9B00EFB09C /* F3DEX2CBFD.h */; }; B3C3F41521A9CBAA00EFB09C /* F3DEX2ACCLAIM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3DD21A9CB9C00EFB09C /* F3DEX2ACCLAIM.cpp */; }; - B3C3F41621A9CBAA00EFB09C /* F3DEX2ACCLAIM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3DD21A9CB9C00EFB09C /* F3DEX2ACCLAIM.cpp */; }; B3C3F41721A9CBAA00EFB09C /* L3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3DE21A9CB9C00EFB09C /* L3DEX2.h */; }; - B3C3F41821A9CBAA00EFB09C /* L3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3DE21A9CB9C00EFB09C /* L3DEX2.h */; }; B3C3F41921A9CBAA00EFB09C /* L3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3DF21A9CB9C00EFB09C /* L3D.h */; }; - B3C3F41A21A9CBAA00EFB09C /* L3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3DF21A9CB9C00EFB09C /* L3D.h */; }; B3C3F41B21A9CBAA00EFB09C /* F5Indi_Naboo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E021A9CB9C00EFB09C /* F5Indi_Naboo.cpp */; }; - B3C3F41C21A9CBAA00EFB09C /* F5Indi_Naboo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E021A9CB9C00EFB09C /* F5Indi_Naboo.cpp */; }; B3C3F41D21A9CBAA00EFB09C /* F5Indi_Naboo.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E121A9CB9C00EFB09C /* F5Indi_Naboo.h */; }; - B3C3F41E21A9CBAA00EFB09C /* F5Indi_Naboo.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E121A9CB9C00EFB09C /* F5Indi_Naboo.h */; }; B3C3F41F21A9CBAA00EFB09C /* F5Rogue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E221A9CB9C00EFB09C /* F5Rogue.cpp */; }; - B3C3F42021A9CBAA00EFB09C /* F5Rogue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E221A9CB9C00EFB09C /* F5Rogue.cpp */; }; B3C3F42121A9CBAA00EFB09C /* F3DSETA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E321A9CB9D00EFB09C /* F3DSETA.h */; }; - B3C3F42221A9CBAA00EFB09C /* F3DSETA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E321A9CB9D00EFB09C /* F3DSETA.h */; }; B3C3F42321A9CBAA00EFB09C /* F3DTEXA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E421A9CB9D00EFB09C /* F3DTEXA.h */; }; - B3C3F42421A9CBAA00EFB09C /* F3DTEXA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E421A9CB9D00EFB09C /* F3DTEXA.h */; }; B3C3F42521A9CBAA00EFB09C /* F3DBETA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E521A9CB9D00EFB09C /* F3DBETA.h */; }; - B3C3F42621A9CBAA00EFB09C /* F3DBETA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E521A9CB9D00EFB09C /* F3DBETA.h */; }; B3C3F42721A9CBAA00EFB09C /* F3DAM.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E621A9CB9D00EFB09C /* F3DAM.h */; }; - B3C3F42821A9CBAA00EFB09C /* F3DAM.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E621A9CB9D00EFB09C /* F3DAM.h */; }; B3C3F42921A9CBAA00EFB09C /* L3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E721A9CB9D00EFB09C /* L3DEX.h */; }; - B3C3F42A21A9CBAA00EFB09C /* L3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3E721A9CB9D00EFB09C /* L3DEX.h */; }; B3C3F42B21A9CBAA00EFB09C /* F3DZEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E821A9CB9F00EFB09C /* F3DZEX2.cpp */; }; - B3C3F42C21A9CBAA00EFB09C /* F3DZEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E821A9CB9F00EFB09C /* F3DZEX2.cpp */; }; B3C3F42D21A9CBAA00EFB09C /* F3DGOLDEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E921A9CBA000EFB09C /* F3DGOLDEN.cpp */; }; - B3C3F42E21A9CBAA00EFB09C /* F3DGOLDEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3E921A9CBA000EFB09C /* F3DGOLDEN.cpp */; }; B3C3F42F21A9CBAA00EFB09C /* F3DPD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3EA21A9CBA000EFB09C /* F3DPD.cpp */; }; - B3C3F43021A9CBAA00EFB09C /* F3DPD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3EA21A9CBA000EFB09C /* F3DPD.cpp */; }; B3C3F43121A9CBAA00EFB09C /* ZSortBOSS.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3EB21A9CBA100EFB09C /* ZSortBOSS.h */; }; - B3C3F43221A9CBAA00EFB09C /* ZSortBOSS.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3EB21A9CBA100EFB09C /* ZSortBOSS.h */; }; B3C3F43321A9CBAA00EFB09C /* T3DUX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3EC21A9CBA100EFB09C /* T3DUX.h */; }; - B3C3F43421A9CBAA00EFB09C /* T3DUX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3EC21A9CBA100EFB09C /* T3DUX.h */; }; B3C3F43521A9CBAA00EFB09C /* S2DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3ED21A9CBA200EFB09C /* S2DEX2.h */; }; - B3C3F43621A9CBAA00EFB09C /* S2DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3ED21A9CBA200EFB09C /* S2DEX2.h */; }; B3C3F43721A9CBAA00EFB09C /* ZSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3EE21A9CBA200EFB09C /* ZSort.cpp */; }; - B3C3F43821A9CBAA00EFB09C /* ZSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3EE21A9CBA200EFB09C /* ZSort.cpp */; }; B3C3F43921A9CBAA00EFB09C /* F3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3EF21A9CBA200EFB09C /* F3D.h */; }; - B3C3F43A21A9CBAA00EFB09C /* F3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3EF21A9CBA200EFB09C /* F3D.h */; }; B3C3F43B21A9CBAA00EFB09C /* F3DDKR.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F021A9CBA300EFB09C /* F3DDKR.h */; }; - B3C3F43C21A9CBAA00EFB09C /* F3DDKR.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F021A9CBA300EFB09C /* F3DDKR.h */; }; B3C3F43D21A9CBAA00EFB09C /* F3DAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F121A9CBA300EFB09C /* F3DAM.cpp */; }; - B3C3F43E21A9CBAA00EFB09C /* F3DAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F121A9CBA300EFB09C /* F3DAM.cpp */; }; B3C3F43F21A9CBAA00EFB09C /* F5Rogue.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F221A9CBA300EFB09C /* F5Rogue.h */; }; - B3C3F44021A9CBAA00EFB09C /* F5Rogue.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F221A9CBA300EFB09C /* F5Rogue.h */; }; B3C3F44121A9CBAA00EFB09C /* T3DUX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F321A9CBA400EFB09C /* T3DUX.cpp */; }; - B3C3F44221A9CBAA00EFB09C /* T3DUX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F321A9CBA400EFB09C /* T3DUX.cpp */; }; B3C3F44321A9CBAA00EFB09C /* ZSort.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F421A9CBA400EFB09C /* ZSort.h */; }; - B3C3F44421A9CBAA00EFB09C /* ZSort.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F421A9CBA400EFB09C /* ZSort.h */; }; B3C3F44521A9CBAA00EFB09C /* F3DDKR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F521A9CBA400EFB09C /* F3DDKR.cpp */; }; - B3C3F44621A9CBAA00EFB09C /* F3DDKR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F521A9CBA400EFB09C /* F3DDKR.cpp */; }; B3C3F44721A9CBAA00EFB09C /* S2DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F621A9CBA400EFB09C /* S2DEX.cpp */; }; - B3C3F44821A9CBAA00EFB09C /* S2DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F621A9CBA400EFB09C /* S2DEX.cpp */; }; B3C3F44921A9CBAA00EFB09C /* F3DZEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F721A9CBA400EFB09C /* F3DZEX2.h */; }; - B3C3F44A21A9CBAA00EFB09C /* F3DZEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3F721A9CBA400EFB09C /* F3DZEX2.h */; }; B3C3F44B21A9CBAA00EFB09C /* L3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F821A9CBA500EFB09C /* L3D.cpp */; }; - B3C3F44C21A9CBAA00EFB09C /* L3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F821A9CBA500EFB09C /* L3D.cpp */; }; B3C3F44D21A9CBAA00EFB09C /* F3DSETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F921A9CBA500EFB09C /* F3DSETA.cpp */; }; - B3C3F44E21A9CBAA00EFB09C /* F3DSETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3F921A9CBA500EFB09C /* F3DSETA.cpp */; }; B3C3F44F21A9CBAA00EFB09C /* F3DGOLDEN.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3FA21A9CBA500EFB09C /* F3DGOLDEN.h */; }; - B3C3F45021A9CBAA00EFB09C /* F3DGOLDEN.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3FA21A9CBA500EFB09C /* F3DGOLDEN.h */; }; B3C3F45121A9CBAA00EFB09C /* L3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FB21A9CBA500EFB09C /* L3DEX2.cpp */; }; - B3C3F45221A9CBAA00EFB09C /* L3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FB21A9CBA500EFB09C /* L3DEX2.cpp */; }; B3C3F45321A9CBAA00EFB09C /* Turbo3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FC21A9CBA500EFB09C /* Turbo3D.cpp */; }; - B3C3F45421A9CBAA00EFB09C /* Turbo3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FC21A9CBA500EFB09C /* Turbo3D.cpp */; }; B3C3F45521A9CBAA00EFB09C /* S2DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FD21A9CBA600EFB09C /* S2DEX2.cpp */; }; - B3C3F45621A9CBAA00EFB09C /* S2DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FD21A9CBA600EFB09C /* S2DEX2.cpp */; }; B3C3F45721A9CBAA00EFB09C /* ZSortBOSS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FE21A9CBA600EFB09C /* ZSortBOSS.cpp */; }; - B3C3F45821A9CBAA00EFB09C /* ZSortBOSS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F3FE21A9CBA600EFB09C /* ZSortBOSS.cpp */; }; B3C3F45921A9CBAA00EFB09C /* Turbo3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3FF21A9CBA600EFB09C /* Turbo3D.h */; }; - B3C3F45A21A9CBAA00EFB09C /* Turbo3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F3FF21A9CBA600EFB09C /* Turbo3D.h */; }; B3C3F45B21A9CBAA00EFB09C /* F3DEX2CBFD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40021A9CBA700EFB09C /* F3DEX2CBFD.cpp */; }; - B3C3F45C21A9CBAA00EFB09C /* F3DEX2CBFD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40021A9CBA700EFB09C /* F3DEX2CBFD.cpp */; }; B3C3F45D21A9CBAA00EFB09C /* F3DFLX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40121A9CBA800EFB09C /* F3DFLX2.h */; }; - B3C3F45E21A9CBAA00EFB09C /* F3DFLX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40121A9CBA800EFB09C /* F3DFLX2.h */; }; B3C3F45F21A9CBAA00EFB09C /* F3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40221A9CBA800EFB09C /* F3DEX2.h */; }; - B3C3F46021A9CBAA00EFB09C /* F3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40221A9CBA800EFB09C /* F3DEX2.h */; }; B3C3F46121A9CBAA00EFB09C /* L3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40321A9CBA900EFB09C /* L3DEX.cpp */; }; - B3C3F46221A9CBAA00EFB09C /* L3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40321A9CBA900EFB09C /* L3DEX.cpp */; }; B3C3F46321A9CBAA00EFB09C /* F3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40421A9CBA900EFB09C /* F3D.cpp */; }; - B3C3F46421A9CBAA00EFB09C /* F3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40421A9CBA900EFB09C /* F3D.cpp */; }; B3C3F46521A9CBAA00EFB09C /* S2DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40521A9CBAA00EFB09C /* S2DEX.h */; }; - B3C3F46621A9CBAA00EFB09C /* S2DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40521A9CBAA00EFB09C /* S2DEX.h */; }; B3C3F46721A9CBAA00EFB09C /* F3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40621A9CBAA00EFB09C /* F3DEX.h */; }; - B3C3F46821A9CBAA00EFB09C /* F3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40621A9CBAA00EFB09C /* F3DEX.h */; }; B3C3F46921A9CBAA00EFB09C /* F3DPD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40721A9CBAA00EFB09C /* F3DPD.h */; }; - B3C3F46A21A9CBAA00EFB09C /* F3DPD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F40721A9CBAA00EFB09C /* F3DPD.h */; }; B3C3F46B21A9CBAA00EFB09C /* F3DBETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40821A9CBAA00EFB09C /* F3DBETA.cpp */; }; - B3C3F46C21A9CBAA00EFB09C /* F3DBETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F40821A9CBAA00EFB09C /* F3DBETA.cpp */; }; B3C3F46F21A9CBFB00EFB09C /* glsl_FXAA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F46D21A9CBFB00EFB09C /* glsl_FXAA.h */; }; - B3C3F47021A9CBFB00EFB09C /* glsl_FXAA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C3F46D21A9CBFB00EFB09C /* glsl_FXAA.h */; }; B3C3F47121A9CBFB00EFB09C /* glsl_FXAA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F46E21A9CBFB00EFB09C /* glsl_FXAA.cpp */; }; - B3C3F47221A9CBFB00EFB09C /* glsl_FXAA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3C3F46E21A9CBFB00EFB09C /* glsl_FXAA.cpp */; }; B3C83E1727960C0F0020824C /* mupencheat.txt in Resources */ = {isa = PBXBuildFile; fileRef = B30559E22072FEE9001212D2 /* mupencheat.txt */; }; - B3C83E1827960C100020824C /* mupencheat.txt in Resources */ = {isa = PBXBuildFile; fileRef = B30559E22072FEE9001212D2 /* mupencheat.txt */; }; B3C83E1B279617760020824C /* assem_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A852072FEE9001212D2 /* assem_arm.h */; }; - B3C83E1C279617780020824C /* assem_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A852072FEE9001212D2 /* assem_arm.h */; }; B3C83E1D2796177C0020824C /* assem_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A812072FEE9001212D2 /* assem_x86.h */; }; - B3C83E1F2796177E0020824C /* assem_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = B3055A812072FEE9001212D2 /* assem_x86.h */; }; B3C83E21279618AD0020824C /* hvqm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C83E20279618A30020824C /* hvqm.c */; }; - B3C83E22279618AD0020824C /* hvqm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3C83E20279618A30020824C /* hvqm.c */; }; B3C83E23279619400020824C /* ucodes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AE1F2820733D3500AD06D4 /* ucodes.h */; }; - B3C83E24279619420020824C /* ucodes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AE1F2820733D3500AD06D4 /* ucodes.h */; }; B3CB4B21206E54D20074706B /* Log_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3CB4B20206E54D10074706B /* Log_ios.mm */; }; - B3CB4B22206E54D20074706B /* Log_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3CB4B20206E54D10074706B /* Log_ios.mm */; }; - B3EA447C206E10C700E608F6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilter = ios; }; + B3EA447C206E10C700E608F6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3EA447B206E10C700E608F6 /* OpenGLES.framework */; platformFilters = (ios, tvos, watchos, ); }; B3EA4483206E309A00E608F6 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3303E811DED272E00896D96 /* libz.tbd */; }; B3EA448B206E471200E608F6 /* RSP_LoadMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602AF2038AE7A001E70F1 /* RSP_LoadMatrix.cpp */; }; - B3EA448C206E471300E608F6 /* RSP_LoadMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602AF2038AE7A001E70F1 /* RSP_LoadMatrix.cpp */; }; B3EA448D206E473300E608F6 /* CRC_OPT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603912038AE7D001E70F1 /* CRC_OPT.cpp */; }; - B3EA448E206E473400E608F6 /* CRC_OPT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603912038AE7D001E70F1 /* CRC_OPT.cpp */; }; B3EA448F206E473F00E608F6 /* 3DMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603292038AE7B001E70F1 /* 3DMath.cpp */; }; - B3EA4490206E474000E608F6 /* 3DMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603292038AE7B001E70F1 /* 3DMath.cpp */; }; - B3F2058326FBCBC600A4196B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3F2058226FBCBC600A4196B /* OpenGL.framework */; platformFilter = maccatalyst; }; + B3F2058326FBCBC600A4196B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3F2058226FBCBC600A4196B /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; + B3FAC9B9292B522C005E8B11 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FAC9B8292B522C005E8B11 /* OpenGLES.framework */; platformFilters = (ios, tvos, ); }; DF0035C0203C8F6E00F63831 /* GLideN64.custom.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CA2038AE78001E70F1 /* GLideN64.custom.ini */; }; DF0035C1203C8F6E00F63831 /* GLideN64.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CB2038AE78001E70F1 /* GLideN64.ini */; }; - DF0035C2203C8F6F00F63831 /* GLideN64.custom.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CA2038AE78001E70F1 /* GLideN64.custom.ini */; }; - DF0035C3203C8F6F00F63831 /* GLideN64.ini in Resources */ = {isa = PBXBuildFile; fileRef = DFB601CB2038AE78001E70F1 /* GLideN64.ini */; }; DFB601842038AD13001E70F1 /* PVMupen64PlusVideoGlideN64.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB601822038AD13001E70F1 /* PVMupen64PlusVideoGlideN64.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DFB603B32038B582001E70F1 /* PVMupen64PlusVideoGlideN64.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB601822038AD13001E70F1 /* PVMupen64PlusVideoGlideN64.h */; settings = {ATTRIBUTES = (Public, ); }; }; DFB603C12038B6FE001E70F1 /* 3DMath.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6032B2038AE7B001E70F1 /* 3DMath.h */; }; - DFB603C32038B6FF001E70F1 /* 3DMath.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6032B2038AE7B001E70F1 /* 3DMath.h */; }; DFB603C42038B704001E70F1 /* Combiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603242038AE7B001E70F1 /* Combiner.cpp */; }; DFB603C52038B704001E70F1 /* Combiner.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602E12038AE7B001E70F1 /* Combiner.h */; }; - DFB603C62038B705001E70F1 /* Combiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603242038AE7B001E70F1 /* Combiner.cpp */; }; - DFB603C72038B705001E70F1 /* Combiner.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602E12038AE7B001E70F1 /* Combiner.h */; }; DFB603C82038B70E001E70F1 /* CombinerKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602C02038AE7A001E70F1 /* CombinerKey.cpp */; }; DFB603C92038B70E001E70F1 /* CombinerKey.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602992038AE7A001E70F1 /* CombinerKey.h */; }; - DFB603CA2038B70E001E70F1 /* CombinerKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602C02038AE7A001E70F1 /* CombinerKey.cpp */; }; - DFB603CB2038B70E001E70F1 /* CombinerKey.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602992038AE7A001E70F1 /* CombinerKey.h */; }; DFB603CE2038B936001E70F1 /* osal_files.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6029F2038AE7A001E70F1 /* osal_files.h */; }; - DFB603CF2038B938001E70F1 /* osal_files.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6029F2038AE7A001E70F1 /* osal_files.h */; }; DFB603D02038B980001E70F1 /* CommonPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602E52038AE7B001E70F1 /* CommonPluginAPI.cpp */; }; - DFB603D12038B981001E70F1 /* CommonPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602E52038AE7B001E70F1 /* CommonPluginAPI.cpp */; }; DFB603D22038B988001E70F1 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602E22038AE7B001E70F1 /* Config.cpp */; }; - DFB603D32038B989001E70F1 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602E22038AE7B001E70F1 /* Config.cpp */; }; DFB603D42038B98C001E70F1 /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602882038AE7A001E70F1 /* convert.cpp */; }; - DFB603D52038B98C001E70F1 /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602882038AE7A001E70F1 /* convert.cpp */; }; DFB603D82038B996001E70F1 /* convert.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6033C2038AE7C001E70F1 /* convert.h */; }; - DFB603D92038B997001E70F1 /* convert.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6033C2038AE7C001E70F1 /* convert.h */; }; DFB603DA2038B9C0001E70F1 /* CRC.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6029A2038AE7A001E70F1 /* CRC.h */; }; - DFB603DC2038B9C0001E70F1 /* CRC.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6029A2038AE7A001E70F1 /* CRC.h */; }; DFB603DE2038B9CF001E70F1 /* DebugDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602E32038AE7B001E70F1 /* DebugDump.cpp */; }; DFB603DF2038B9CF001E70F1 /* DebugDump.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602E42038AE7B001E70F1 /* DebugDump.h */; }; DFB603E02038B9CF001E70F1 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6032A2038AE7B001E70F1 /* Debugger.cpp */; }; DFB603E12038B9CF001E70F1 /* Debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603322038AE7B001E70F1 /* Debugger.h */; }; DFB603E22038B9CF001E70F1 /* DepthBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B92038AE7A001E70F1 /* DepthBuffer.cpp */; }; DFB603E32038B9CF001E70F1 /* DepthBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB601D62038AE78001E70F1 /* DepthBuffer.h */; }; - DFB603E42038B9CF001E70F1 /* DebugDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602E32038AE7B001E70F1 /* DebugDump.cpp */; }; - DFB603E52038B9CF001E70F1 /* DebugDump.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602E42038AE7B001E70F1 /* DebugDump.h */; }; - DFB603E62038B9CF001E70F1 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6032A2038AE7B001E70F1 /* Debugger.cpp */; }; - DFB603E72038B9CF001E70F1 /* Debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603322038AE7B001E70F1 /* Debugger.h */; }; - DFB603E82038B9CF001E70F1 /* DepthBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B92038AE7A001E70F1 /* DepthBuffer.cpp */; }; - DFB603E92038B9CF001E70F1 /* DepthBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB601D62038AE78001E70F1 /* DepthBuffer.h */; }; DFB603EA2038B9DD001E70F1 /* DisplayLoadProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B82038AE7A001E70F1 /* DisplayLoadProgress.cpp */; }; DFB603EB2038B9DD001E70F1 /* DisplayLoadProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603962038AE7D001E70F1 /* DisplayLoadProgress.h */; }; DFB603EC2038B9DD001E70F1 /* DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602BE2038AE7A001E70F1 /* DisplayWindow.cpp */; }; DFB603ED2038B9DD001E70F1 /* DisplayWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602852038AE7A001E70F1 /* DisplayWindow.h */; }; - DFB603EE2038B9DE001E70F1 /* DisplayLoadProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B82038AE7A001E70F1 /* DisplayLoadProgress.cpp */; }; - DFB603EF2038B9DE001E70F1 /* DisplayLoadProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603962038AE7D001E70F1 /* DisplayLoadProgress.h */; }; - DFB603F02038B9DE001E70F1 /* DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602BE2038AE7A001E70F1 /* DisplayWindow.cpp */; }; - DFB603F12038B9DE001E70F1 /* DisplayWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602852038AE7A001E70F1 /* DisplayWindow.h */; }; DFB603F22038B9F0001E70F1 /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602AB2038AE7A001E70F1 /* FrameBuffer.cpp */; }; DFB603F32038B9F0001E70F1 /* FrameBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602AE2038AE7A001E70F1 /* FrameBuffer.h */; }; DFB603F42038B9F0001E70F1 /* FrameBufferInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602982038AE7A001E70F1 /* FrameBufferInfo.cpp */; }; DFB603F52038B9F0001E70F1 /* FrameBufferInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6020C2038AE79001E70F1 /* FrameBufferInfo.h */; }; DFB603F62038B9F0001E70F1 /* FrameBufferInfoAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6038B2038AE7C001E70F1 /* FrameBufferInfoAPI.h */; }; - DFB603F72038B9F0001E70F1 /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602AB2038AE7A001E70F1 /* FrameBuffer.cpp */; }; - DFB603F82038B9F0001E70F1 /* FrameBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602AE2038AE7A001E70F1 /* FrameBuffer.h */; }; - DFB603F92038B9F0001E70F1 /* FrameBufferInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602982038AE7A001E70F1 /* FrameBufferInfo.cpp */; }; - DFB603FA2038B9F0001E70F1 /* FrameBufferInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6020C2038AE79001E70F1 /* FrameBufferInfo.h */; }; - DFB603FB2038B9F0001E70F1 /* FrameBufferInfoAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6038B2038AE7C001E70F1 /* FrameBufferInfoAPI.h */; }; DFB603FC2038BA09001E70F1 /* GBI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A42038AE7A001E70F1 /* GBI.cpp */; }; DFB603FD2038BA09001E70F1 /* GBI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603902038AE7D001E70F1 /* GBI.h */; }; DFB603FE2038BA09001E70F1 /* gDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6038F2038AE7D001E70F1 /* gDP.cpp */; }; @@ -620,36 +323,17 @@ DFB604012038BA09001E70F1 /* GLideN64.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B52038AE7A001E70F1 /* GLideN64.h */; }; DFB604022038BA09001E70F1 /* GraphicsDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603312038AE7B001E70F1 /* GraphicsDrawer.cpp */; }; DFB604032038BA09001E70F1 /* GraphicsDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603942038AE7D001E70F1 /* GraphicsDrawer.h */; }; - DFB604042038BA09001E70F1 /* GBI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A42038AE7A001E70F1 /* GBI.cpp */; }; - DFB604052038BA09001E70F1 /* GBI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603902038AE7D001E70F1 /* GBI.h */; }; - DFB604062038BA09001E70F1 /* gDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6038F2038AE7D001E70F1 /* gDP.cpp */; }; - DFB604072038BA09001E70F1 /* gDP.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603302038AE7B001E70F1 /* gDP.h */; }; - DFB604082038BA09001E70F1 /* GLideN64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602842038AE7A001E70F1 /* GLideN64.cpp */; }; - DFB604092038BA09001E70F1 /* GLideN64.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B52038AE7A001E70F1 /* GLideN64.h */; }; - DFB6040A2038BA09001E70F1 /* GraphicsDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603312038AE7B001E70F1 /* GraphicsDrawer.cpp */; }; - DFB6040B2038BA09001E70F1 /* GraphicsDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603942038AE7D001E70F1 /* GraphicsDrawer.h */; }; DFB6040C2038BA1B001E70F1 /* gSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602802038AE7A001E70F1 /* gSP.cpp */; }; DFB6040D2038BA1B001E70F1 /* gSP.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603222038AE7B001E70F1 /* gSP.h */; }; DFB6040E2038BA1B001E70F1 /* Keys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603922038AE7D001E70F1 /* Keys.cpp */; }; DFB6040F2038BA1B001E70F1 /* Keys.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB601D72038AE78001E70F1 /* Keys.h */; }; DFB604112038BA1B001E70F1 /* Log.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602DF2038AE7A001E70F1 /* Log.h */; }; - DFB604122038BA1B001E70F1 /* gSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602802038AE7A001E70F1 /* gSP.cpp */; }; - DFB604132038BA1B001E70F1 /* gSP.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603222038AE7B001E70F1 /* gSP.h */; }; - DFB604142038BA1B001E70F1 /* Keys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603922038AE7D001E70F1 /* Keys.cpp */; }; - DFB604152038BA1B001E70F1 /* Keys.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB601D72038AE78001E70F1 /* Keys.h */; }; - DFB604172038BA1B001E70F1 /* Log.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602DF2038AE7A001E70F1 /* Log.h */; }; DFB604182038BA3C001E70F1 /* N64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603932038AE7D001E70F1 /* N64.cpp */; }; DFB604192038BA3C001E70F1 /* N64.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603212038AE7B001E70F1 /* N64.h */; }; DFB6041A2038BA3C001E70F1 /* NoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602932038AE7A001E70F1 /* NoiseTexture.cpp */; }; DFB6041B2038BA3C001E70F1 /* NoiseTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602BA2038AE7A001E70F1 /* NoiseTexture.h */; }; DFB6041C2038BA3C001E70F1 /* PaletteTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602C22038AE7A001E70F1 /* PaletteTexture.cpp */; }; DFB6041D2038BA3C001E70F1 /* PaletteTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6020E2038AE79001E70F1 /* PaletteTexture.h */; }; - DFB6041E2038BA3D001E70F1 /* N64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603932038AE7D001E70F1 /* N64.cpp */; }; - DFB6041F2038BA3D001E70F1 /* N64.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603212038AE7B001E70F1 /* N64.h */; }; - DFB604202038BA3D001E70F1 /* NoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602932038AE7A001E70F1 /* NoiseTexture.cpp */; }; - DFB604212038BA3D001E70F1 /* NoiseTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602BA2038AE7A001E70F1 /* NoiseTexture.h */; }; - DFB604222038BA3D001E70F1 /* PaletteTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602C22038AE7A001E70F1 /* PaletteTexture.cpp */; }; - DFB604232038BA3D001E70F1 /* PaletteTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6020E2038AE79001E70F1 /* PaletteTexture.h */; }; DFB604242038BA67001E70F1 /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6020A2038AE79001E70F1 /* Performance.cpp */; }; DFB604252038BA67001E70F1 /* Performance.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602862038AE7A001E70F1 /* Performance.h */; }; DFB604262038BA67001E70F1 /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6038E2038AE7C001E70F1 /* Platform.h */; }; @@ -660,16 +344,6 @@ DFB6042B2038BA67001E70F1 /* RDP.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603862038AE7C001E70F1 /* RDP.h */; }; DFB6042D2038BA67001E70F1 /* RSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603332038AE7B001E70F1 /* RSP.cpp */; }; DFB6042E2038BA67001E70F1 /* RSP.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603232038AE7B001E70F1 /* RSP.h */; }; - DFB6042F2038BA68001E70F1 /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6020A2038AE79001E70F1 /* Performance.cpp */; }; - DFB604302038BA68001E70F1 /* Performance.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602862038AE7A001E70F1 /* Performance.h */; }; - DFB604312038BA68001E70F1 /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6038E2038AE7C001E70F1 /* Platform.h */; }; - DFB604322038BA68001E70F1 /* PluginAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB601D92038AE78001E70F1 /* PluginAPI.h */; }; - DFB604332038BA68001E70F1 /* PostProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602922038AE7A001E70F1 /* PostProcessor.cpp */; }; - DFB604342038BA68001E70F1 /* PostProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B72038AE7A001E70F1 /* PostProcessor.h */; }; - DFB604352038BA68001E70F1 /* RDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB601D82038AE78001E70F1 /* RDP.cpp */; }; - DFB604362038BA68001E70F1 /* RDP.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603862038AE7C001E70F1 /* RDP.h */; }; - DFB604382038BA68001E70F1 /* RSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603332038AE7B001E70F1 /* RSP.cpp */; }; - DFB604392038BA68001E70F1 /* RSP.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603232038AE7B001E70F1 /* RSP.h */; }; DFB6043A2038BA86001E70F1 /* SoftwareRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602972038AE7A001E70F1 /* SoftwareRender.cpp */; }; DFB6043B2038BA86001E70F1 /* SoftwareRender.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603352038AE7B001E70F1 /* SoftwareRender.h */; }; DFB6043C2038BA86001E70F1 /* TexrectDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603872038AE7C001E70F1 /* TexrectDrawer.cpp */; }; @@ -679,23 +353,10 @@ DFB604412038BA86001E70F1 /* TextureFilterHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602962038AE7A001E70F1 /* TextureFilterHandler.h */; }; DFB604422038BA86001E70F1 /* Textures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6027E2038AE7A001E70F1 /* Textures.cpp */; }; DFB604432038BA86001E70F1 /* Textures.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603882038AE7C001E70F1 /* Textures.h */; }; - DFB604442038BA87001E70F1 /* SoftwareRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602972038AE7A001E70F1 /* SoftwareRender.cpp */; }; - DFB604452038BA87001E70F1 /* SoftwareRender.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603352038AE7B001E70F1 /* SoftwareRender.h */; }; - DFB604462038BA87001E70F1 /* TexrectDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603872038AE7C001E70F1 /* TexrectDrawer.cpp */; }; - DFB604472038BA87001E70F1 /* TexrectDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6029B2038AE7A001E70F1 /* TexrectDrawer.h */; }; - DFB604492038BA87001E70F1 /* TextDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602822038AE7A001E70F1 /* TextDrawer.h */; }; - DFB6044A2038BA87001E70F1 /* TextureFilterHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602BF2038AE7A001E70F1 /* TextureFilterHandler.cpp */; }; - DFB6044B2038BA87001E70F1 /* TextureFilterHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602962038AE7A001E70F1 /* TextureFilterHandler.h */; }; - DFB6044C2038BA87001E70F1 /* Textures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6027E2038AE7A001E70F1 /* Textures.cpp */; }; - DFB6044D2038BA87001E70F1 /* Textures.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603882038AE7C001E70F1 /* Textures.h */; }; DFB6044E2038BA94001E70F1 /* VI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603952038AE7D001E70F1 /* VI.cpp */; }; DFB6044F2038BA94001E70F1 /* VI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603342038AE7B001E70F1 /* VI.h */; }; - DFB604502038BA95001E70F1 /* VI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603952038AE7D001E70F1 /* VI.cpp */; }; - DFB604512038BA95001E70F1 /* VI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603342038AE7B001E70F1 /* VI.h */; }; DFB604522038BA9D001E70F1 /* ZlutTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603852038AE7C001E70F1 /* ZlutTexture.cpp */; }; DFB604532038BA9D001E70F1 /* ZlutTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B62038AE7A001E70F1 /* ZlutTexture.h */; }; - DFB604542038BA9E001E70F1 /* ZlutTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603852038AE7C001E70F1 /* ZlutTexture.cpp */; }; - DFB604552038BA9E001E70F1 /* ZlutTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B62038AE7A001E70F1 /* ZlutTexture.h */; }; DFB604562038BAB8001E70F1 /* RDRAMtoColorBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6028A2038AE7A001E70F1 /* RDRAMtoColorBuffer.h */; }; DFB604572038BAB8001E70F1 /* DepthBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6028B2038AE7A001E70F1 /* DepthBufferToRDRAM.cpp */; }; DFB604582038BAB8001E70F1 /* ColorBufferToRDRAMStub.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6028D2038AE7A001E70F1 /* ColorBufferToRDRAMStub.h */; }; @@ -703,25 +364,12 @@ DFB6045A2038BAB8001E70F1 /* WriteToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6028F2038AE7A001E70F1 /* WriteToRDRAM.h */; }; DFB6045B2038BAB8001E70F1 /* ColorBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602902038AE7A001E70F1 /* ColorBufferToRDRAM.cpp */; }; DFB6045C2038BAB8001E70F1 /* ColorBufferToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602912038AE7A001E70F1 /* ColorBufferToRDRAM.h */; }; - DFB6045D2038BAB8001E70F1 /* RDRAMtoColorBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6028A2038AE7A001E70F1 /* RDRAMtoColorBuffer.h */; }; - DFB6045E2038BAB8001E70F1 /* DepthBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6028B2038AE7A001E70F1 /* DepthBufferToRDRAM.cpp */; }; - DFB6045F2038BAB8001E70F1 /* ColorBufferToRDRAMStub.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6028D2038AE7A001E70F1 /* ColorBufferToRDRAMStub.h */; }; - DFB604602038BAB8001E70F1 /* DepthBufferToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6028E2038AE7A001E70F1 /* DepthBufferToRDRAM.h */; }; - DFB604612038BAB8001E70F1 /* WriteToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6028F2038AE7A001E70F1 /* WriteToRDRAM.h */; }; - DFB604622038BAB8001E70F1 /* ColorBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602902038AE7A001E70F1 /* ColorBufferToRDRAM.cpp */; }; - DFB604632038BAB8001E70F1 /* ColorBufferToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602912038AE7A001E70F1 /* ColorBufferToRDRAM.h */; }; DFB604642038BAC2001E70F1 /* RDRAMtoColorBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6028C2038AE7A001E70F1 /* RDRAMtoColorBuffer.cpp */; }; - DFB604652038BAC3001E70F1 /* RDRAMtoColorBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6028C2038AE7A001E70F1 /* RDRAMtoColorBuffer.cpp */; }; DFB604662038BAD7001E70F1 /* DepthBufferRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B12038AE7A001E70F1 /* DepthBufferRender.cpp */; }; DFB604672038BAD7001E70F1 /* ClipPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B22038AE7A001E70F1 /* ClipPolygon.cpp */; }; DFB604682038BAD7001E70F1 /* ClipPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B32038AE7A001E70F1 /* ClipPolygon.h */; }; DFB604692038BAD7001E70F1 /* DepthBufferRender.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B42038AE7A001E70F1 /* DepthBufferRender.h */; }; - DFB6046A2038BAD7001E70F1 /* DepthBufferRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B12038AE7A001E70F1 /* DepthBufferRender.cpp */; }; - DFB6046B2038BAD7001E70F1 /* ClipPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602B22038AE7A001E70F1 /* ClipPolygon.cpp */; }; - DFB6046C2038BAD7001E70F1 /* ClipPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B32038AE7A001E70F1 /* ClipPolygon.h */; }; - DFB6046D2038BAD7001E70F1 /* DepthBufferRender.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602B42038AE7A001E70F1 /* DepthBufferRender.h */; }; DFB6046E2038BAE1001E70F1 /* CommonAPIImpl_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602BC2038AE7A001E70F1 /* CommonAPIImpl_common.cpp */; }; - DFB6046F2038BAE1001E70F1 /* CommonAPIImpl_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602BC2038AE7A001E70F1 /* CommonAPIImpl_common.cpp */; }; DFB604702038BB0A001E70F1 /* ColorBufferReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603462038AE7C001E70F1 /* ColorBufferReader.cpp */; }; DFB604712038BB0A001E70F1 /* ColorBufferReader.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603452038AE7C001E70F1 /* ColorBufferReader.h */; }; DFB604722038BB0A001E70F1 /* CombinerProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603842038AE7C001E70F1 /* CombinerProgram.cpp */; }; @@ -736,22 +384,7 @@ DFB6047B2038BB0B001E70F1 /* Parameters.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603472038AE7C001E70F1 /* Parameters.h */; }; DFB6047C2038BB0B001E70F1 /* PixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603482038AE7C001E70F1 /* PixelBuffer.h */; }; DFB6047D2038BB0B001E70F1 /* ShaderProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603422038AE7C001E70F1 /* ShaderProgram.h */; }; - DFB6047E2038BB0B001E70F1 /* ColorBufferReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603462038AE7C001E70F1 /* ColorBufferReader.cpp */; }; - DFB6047F2038BB0B001E70F1 /* ColorBufferReader.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603452038AE7C001E70F1 /* ColorBufferReader.h */; }; - DFB604802038BB0B001E70F1 /* CombinerProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603842038AE7C001E70F1 /* CombinerProgram.cpp */; }; - DFB604812038BB0B001E70F1 /* CombinerProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603822038AE7C001E70F1 /* CombinerProgram.h */; }; - DFB604822038BB0B001E70F1 /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603412038AE7C001E70F1 /* Context.cpp */; }; - DFB604832038BB0B001E70F1 /* Context.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603432038AE7C001E70F1 /* Context.h */; }; - DFB604842038BB0B001E70F1 /* ContextImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6033E2038AE7C001E70F1 /* ContextImpl.h */; }; - DFB604852038BB0B001E70F1 /* FramebufferTextureFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603442038AE7C001E70F1 /* FramebufferTextureFormats.h */; }; - DFB604862038BB0B001E70F1 /* ObjectHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6033F2038AE7C001E70F1 /* ObjectHandle.cpp */; }; - DFB604872038BB0B001E70F1 /* ObjectHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603832038AE7C001E70F1 /* ObjectHandle.h */; }; - DFB604882038BB0B001E70F1 /* Parameter.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603402038AE7C001E70F1 /* Parameter.h */; }; - DFB604892038BB0B001E70F1 /* Parameters.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603472038AE7C001E70F1 /* Parameters.h */; }; - DFB6048A2038BB0B001E70F1 /* PixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603482038AE7C001E70F1 /* PixelBuffer.h */; }; - DFB6048B2038BB0B001E70F1 /* ShaderProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603422038AE7C001E70F1 /* ShaderProgram.h */; }; DFB6048C2038BB47001E70F1 /* GLFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6037E2038AE7C001E70F1 /* GLFunctions.cpp */; }; - DFB6048D2038BB48001E70F1 /* GLFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6037E2038AE7C001E70F1 /* GLFunctions.cpp */; }; DFB6048E2038BB5E001E70F1 /* opengl_UnbufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6034D2038AE7C001E70F1 /* opengl_UnbufferedDrawer.h */; }; DFB6048F2038BB5E001E70F1 /* opengl_ColorBufferReaderWithEGLImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6034F2038AE7C001E70F1 /* opengl_ColorBufferReaderWithEGLImage.h */; }; DFB604902038BB5E001E70F1 /* opengl_BufferManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603512038AE7C001E70F1 /* opengl_BufferManipulationObjectFactory.h */; }; @@ -767,21 +400,6 @@ DFB6049A2038BB5E001E70F1 /* opengl_TextureManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6037A2038AE7C001E70F1 /* opengl_TextureManipulationObjectFactory.h */; }; DFB6049B2038BB5E001E70F1 /* opengl_BufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6037B2038AE7C001E70F1 /* opengl_BufferedDrawer.h */; }; DFB6049C2038BB5E001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603812038AE7C001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.h */; }; - DFB6049D2038BB5E001E70F1 /* opengl_UnbufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6034D2038AE7C001E70F1 /* opengl_UnbufferedDrawer.h */; }; - DFB6049E2038BB5E001E70F1 /* opengl_ColorBufferReaderWithEGLImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6034F2038AE7C001E70F1 /* opengl_ColorBufferReaderWithEGLImage.h */; }; - DFB6049F2038BB5E001E70F1 /* opengl_BufferManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603512038AE7C001E70F1 /* opengl_BufferManipulationObjectFactory.h */; }; - DFB604A02038BB5E001E70F1 /* opengl_Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603522038AE7C001E70F1 /* opengl_Utils.h */; }; - DFB604A12038BB5E001E70F1 /* opengl_GraphicsDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603532038AE7C001E70F1 /* opengl_GraphicsDrawer.h */; }; - DFB604A22038BB5E001E70F1 /* opengl_Attributes.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603552038AE7C001E70F1 /* opengl_Attributes.h */; }; - DFB604A32038BB5E001E70F1 /* opengl_CachedFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603572038AE7C001E70F1 /* opengl_CachedFunctions.h */; }; - DFB604A42038BB5E001E70F1 /* opengl_ColorBufferReaderWithBufferStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603682038AE7C001E70F1 /* opengl_ColorBufferReaderWithBufferStorage.h */; }; - DFB604A52038BB5E001E70F1 /* opengl_ContextImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6036B2038AE7C001E70F1 /* opengl_ContextImpl.h */; }; - DFB604A62038BB5E001E70F1 /* opengl_GLInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6036E2038AE7C001E70F1 /* opengl_GLInfo.h */; }; - DFB604A72038BB5E001E70F1 /* opengl_ColorBufferReaderWithReadPixels.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603752038AE7C001E70F1 /* opengl_ColorBufferReaderWithReadPixels.h */; }; - DFB604A82038BB5E001E70F1 /* GLFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603762038AE7C001E70F1 /* GLFunctions.h */; }; - DFB604A92038BB5E001E70F1 /* opengl_TextureManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6037A2038AE7C001E70F1 /* opengl_TextureManipulationObjectFactory.h */; }; - DFB604AA2038BB5E001E70F1 /* opengl_BufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6037B2038AE7C001E70F1 /* opengl_BufferedDrawer.h */; }; - DFB604AB2038BB5E001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603812038AE7C001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.h */; }; DFB604AC2038BBD5001E70F1 /* opengl_Attributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603542038AE7C001E70F1 /* opengl_Attributes.cpp */; }; DFB604AD2038BBD5001E70F1 /* opengl_BufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603792038AE7C001E70F1 /* opengl_BufferedDrawer.cpp */; }; DFB604AE2038BBD5001E70F1 /* opengl_BufferManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603562038AE7C001E70F1 /* opengl_BufferManipulationObjectFactory.cpp */; }; @@ -794,19 +412,6 @@ DFB604B62038BBD5001E70F1 /* opengl_TextureManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603692038AE7C001E70F1 /* opengl_TextureManipulationObjectFactory.cpp */; }; DFB604B72038BBD5001E70F1 /* opengl_UnbufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6037F2038AE7C001E70F1 /* opengl_UnbufferedDrawer.cpp */; }; DFB604B82038BBD5001E70F1 /* opengl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6036D2038AE7C001E70F1 /* opengl_Utils.cpp */; }; - DFB604B92038BBD6001E70F1 /* opengl_Attributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603542038AE7C001E70F1 /* opengl_Attributes.cpp */; }; - DFB604BA2038BBD6001E70F1 /* opengl_BufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603792038AE7C001E70F1 /* opengl_BufferedDrawer.cpp */; }; - DFB604BB2038BBD6001E70F1 /* opengl_BufferManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603562038AE7C001E70F1 /* opengl_BufferManipulationObjectFactory.cpp */; }; - DFB604BC2038BBD6001E70F1 /* opengl_CachedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6037C2038AE7C001E70F1 /* opengl_CachedFunctions.cpp */; }; - DFB604BD2038BBD6001E70F1 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6034C2038AE7C001E70F1 /* opengl_ColorBufferReaderWithBufferStorage.cpp */; }; - DFB604BE2038BBD6001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6036C2038AE7C001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */; }; - DFB604BF2038BBD6001E70F1 /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603802038AE7C001E70F1 /* opengl_ColorBufferReaderWithReadPixels.cpp */; }; - DFB604C02038BBD6001E70F1 /* opengl_ContextImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6034E2038AE7C001E70F1 /* opengl_ContextImpl.cpp */; }; - DFB604C12038BBD6001E70F1 /* opengl_GLInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6037D2038AE7C001E70F1 /* opengl_GLInfo.cpp */; }; - DFB604C22038BBD6001E70F1 /* opengl_Parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6036A2038AE7C001E70F1 /* opengl_Parameters.cpp */; }; - DFB604C32038BBD6001E70F1 /* opengl_TextureManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603692038AE7C001E70F1 /* opengl_TextureManipulationObjectFactory.cpp */; }; - DFB604C42038BBD6001E70F1 /* opengl_UnbufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6037F2038AE7C001E70F1 /* opengl_UnbufferedDrawer.cpp */; }; - DFB604C52038BBD6001E70F1 /* opengl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6036D2038AE7C001E70F1 /* opengl_Utils.cpp */; }; DFB604C62038BBEC001E70F1 /* glsl_CombinerProgramUniformFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603592038AE7C001E70F1 /* glsl_CombinerProgramUniformFactory.h */; }; DFB604C72038BBEC001E70F1 /* glsl_CombinerProgramBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6035A2038AE7C001E70F1 /* glsl_CombinerProgramBuilder.h */; }; DFB604C82038BBEC001E70F1 /* glsl_CombinerInputs.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6035E2038AE7C001E70F1 /* glsl_CombinerInputs.h */; }; @@ -815,14 +420,6 @@ DFB604CB2038BBEC001E70F1 /* glsl_CombinerProgramImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603632038AE7C001E70F1 /* glsl_CombinerProgramImpl.h */; }; DFB604CC2038BBEC001E70F1 /* glsl_ShaderStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603642038AE7C001E70F1 /* glsl_ShaderStorage.h */; }; DFB604CD2038BBEC001E70F1 /* glsl_ShaderPart.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603672038AE7C001E70F1 /* glsl_ShaderPart.h */; }; - DFB604CE2038BBEC001E70F1 /* glsl_CombinerProgramUniformFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603592038AE7C001E70F1 /* glsl_CombinerProgramUniformFactory.h */; }; - DFB604CF2038BBEC001E70F1 /* glsl_CombinerProgramBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6035A2038AE7C001E70F1 /* glsl_CombinerProgramBuilder.h */; }; - DFB604D02038BBEC001E70F1 /* glsl_CombinerInputs.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6035E2038AE7C001E70F1 /* glsl_CombinerInputs.h */; }; - DFB604D12038BBEC001E70F1 /* glsl_Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603602038AE7C001E70F1 /* glsl_Utils.h */; }; - DFB604D22038BBEC001E70F1 /* glsl_SpecialShadersFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603622038AE7C001E70F1 /* glsl_SpecialShadersFactory.h */; }; - DFB604D32038BBEC001E70F1 /* glsl_CombinerProgramImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603632038AE7C001E70F1 /* glsl_CombinerProgramImpl.h */; }; - DFB604D42038BBEC001E70F1 /* glsl_ShaderStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603642038AE7C001E70F1 /* glsl_ShaderStorage.h */; }; - DFB604D52038BBEC001E70F1 /* glsl_ShaderPart.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB603672038AE7C001E70F1 /* glsl_ShaderPart.h */; }; DFB604D62038BC0B001E70F1 /* glsl_CombinerInputs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035F2038AE7C001E70F1 /* glsl_CombinerInputs.cpp */; }; DFB604D72038BC0B001E70F1 /* glsl_CombinerProgramBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035D2038AE7C001E70F1 /* glsl_CombinerProgramBuilder.cpp */; }; DFB604D82038BC0B001E70F1 /* glsl_CombinerProgramImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035B2038AE7C001E70F1 /* glsl_CombinerProgramImpl.cpp */; }; @@ -830,13 +427,6 @@ DFB604DA2038BC0B001E70F1 /* glsl_ShaderStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603652038AE7C001E70F1 /* glsl_ShaderStorage.cpp */; }; DFB604DB2038BC0B001E70F1 /* glsl_SpecialShadersFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035C2038AE7C001E70F1 /* glsl_SpecialShadersFactory.cpp */; }; DFB604DC2038BC0B001E70F1 /* glsl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603662038AE7C001E70F1 /* glsl_Utils.cpp */; }; - DFB604DD2038BC0C001E70F1 /* glsl_CombinerInputs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035F2038AE7C001E70F1 /* glsl_CombinerInputs.cpp */; }; - DFB604DE2038BC0C001E70F1 /* glsl_CombinerProgramBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035D2038AE7C001E70F1 /* glsl_CombinerProgramBuilder.cpp */; }; - DFB604DF2038BC0C001E70F1 /* glsl_CombinerProgramImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035B2038AE7C001E70F1 /* glsl_CombinerProgramImpl.cpp */; }; - DFB604E02038BC0C001E70F1 /* glsl_CombinerProgramUniformFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603612038AE7C001E70F1 /* glsl_CombinerProgramUniformFactory.cpp */; }; - DFB604E12038BC0C001E70F1 /* glsl_ShaderStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603652038AE7C001E70F1 /* glsl_ShaderStorage.cpp */; }; - DFB604E22038BC0C001E70F1 /* glsl_SpecialShadersFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6035C2038AE7C001E70F1 /* glsl_SpecialShadersFactory.cpp */; }; - DFB604E32038BC0C001E70F1 /* glsl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB603662038AE7C001E70F1 /* glsl_Utils.cpp */; }; DFB605402038BCD0001E70F1 /* m64p_frontend.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602102038AE79001E70F1 /* m64p_frontend.h */; }; DFB605422038BCD0001E70F1 /* m64p_vidext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026F2038AE7A001E70F1 /* m64p_vidext.h */; }; DFB605432038BCD0001E70F1 /* m64p_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602702038AE7A001E70F1 /* m64p_common.h */; }; @@ -847,50 +437,23 @@ DFB605482038BCD0001E70F1 /* vidext_sdl2_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602752038AE7A001E70F1 /* vidext_sdl2_compat.h */; }; DFB6054A2038BCD0001E70F1 /* m64p_config.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6027C2038AE7A001E70F1 /* m64p_config.h */; }; DFB6054B2038BCD0001E70F1 /* m64p_plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6027D2038AE7A001E70F1 /* m64p_plugin.h */; }; - DFB6054C2038BCD1001E70F1 /* m64p_frontend.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602102038AE79001E70F1 /* m64p_frontend.h */; }; - DFB6054E2038BCD1001E70F1 /* m64p_vidext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026F2038AE7A001E70F1 /* m64p_vidext.h */; }; - DFB6054F2038BCD1001E70F1 /* m64p_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602702038AE7A001E70F1 /* m64p_common.h */; }; - DFB605502038BCD1001E70F1 /* callbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602712038AE7A001E70F1 /* callbacks.h */; }; - DFB605512038BCD1001E70F1 /* m64p_types.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602722038AE7A001E70F1 /* m64p_types.h */; }; - DFB605522038BCD1001E70F1 /* m64p_debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602732038AE7A001E70F1 /* m64p_debugger.h */; }; - DFB605532038BCD1001E70F1 /* vidext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602742038AE7A001E70F1 /* vidext.h */; }; - DFB605542038BCD1001E70F1 /* vidext_sdl2_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602752038AE7A001E70F1 /* vidext_sdl2_compat.h */; }; - DFB605562038BCD1001E70F1 /* m64p_config.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6027C2038AE7A001E70F1 /* m64p_config.h */; }; - DFB605572038BCD1001E70F1 /* m64p_plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6027D2038AE7A001E70F1 /* m64p_plugin.h */; }; DFB605582038BCDB001E70F1 /* ftxf86.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602142038AE79001E70F1 /* ftxf86.h */; }; DFB605592038BCDB001E70F1 /* ftsnames.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602152038AE79001E70F1 /* ftsnames.h */; }; DFB6055A2038BCDB001E70F1 /* ftwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602162038AE79001E70F1 /* ftwinfnt.h */; }; DFB6055B2038BCDB001E70F1 /* ftsizes.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602172038AE79001E70F1 /* ftsizes.h */; }; DFB6055C2038BCDB001E70F1 /* fttypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602182038AE79001E70F1 /* fttypes.h */; }; DFB6055D2038BCDB001E70F1 /* ftmm.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602192038AE79001E70F1 /* ftmm.h */; }; - DFB6055E2038BCDC001E70F1 /* ftxf86.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602142038AE79001E70F1 /* ftxf86.h */; }; - DFB6055F2038BCDC001E70F1 /* ftsnames.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602152038AE79001E70F1 /* ftsnames.h */; }; - DFB605602038BCDC001E70F1 /* ftwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602162038AE79001E70F1 /* ftwinfnt.h */; }; - DFB605612038BCDC001E70F1 /* ftsizes.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602172038AE79001E70F1 /* ftsizes.h */; }; - DFB605622038BCDC001E70F1 /* fttypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602182038AE79001E70F1 /* fttypes.h */; }; - DFB605632038BCDC001E70F1 /* ftmm.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602192038AE79001E70F1 /* ftmm.h */; }; DFB605642038BCE2001E70F1 /* ftstdlib.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021B2038AE79001E70F1 /* ftstdlib.h */; }; DFB605652038BCE2001E70F1 /* ftheader.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021C2038AE79001E70F1 /* ftheader.h */; }; DFB605662038BCE2001E70F1 /* ftconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021D2038AE79001E70F1 /* ftconfig.h */; }; DFB605672038BCE2001E70F1 /* ftoption.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021E2038AE79001E70F1 /* ftoption.h */; }; DFB605682038BCE2001E70F1 /* ftmodule.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021F2038AE79001E70F1 /* ftmodule.h */; }; - DFB605692038BCE2001E70F1 /* ftstdlib.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021B2038AE79001E70F1 /* ftstdlib.h */; }; - DFB6056A2038BCE2001E70F1 /* ftheader.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021C2038AE79001E70F1 /* ftheader.h */; }; - DFB6056B2038BCE2001E70F1 /* ftconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021D2038AE79001E70F1 /* ftconfig.h */; }; - DFB6056C2038BCE2001E70F1 /* ftoption.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021E2038AE79001E70F1 /* ftoption.h */; }; - DFB6056D2038BCE2001E70F1 /* ftmodule.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6021F2038AE79001E70F1 /* ftmodule.h */; }; DFB6056E2038BCE7001E70F1 /* ftmodapi.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602202038AE79001E70F1 /* ftmodapi.h */; }; DFB6056F2038BCE7001E70F1 /* ftbzip2.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602212038AE79001E70F1 /* ftbzip2.h */; }; DFB605702038BCE7001E70F1 /* ttunpat.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602222038AE79001E70F1 /* ttunpat.h */; }; DFB605712038BCE7001E70F1 /* fttrigon.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602232038AE79001E70F1 /* fttrigon.h */; }; DFB605722038BCE7001E70F1 /* ftbbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602242038AE79001E70F1 /* ftbbox.h */; }; DFB605732038BCE7001E70F1 /* ftgzip.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602252038AE79001E70F1 /* ftgzip.h */; }; - DFB605742038BCE8001E70F1 /* ftmodapi.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602202038AE79001E70F1 /* ftmodapi.h */; }; - DFB605752038BCE8001E70F1 /* ftbzip2.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602212038AE79001E70F1 /* ftbzip2.h */; }; - DFB605762038BCE8001E70F1 /* ttunpat.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602222038AE79001E70F1 /* ttunpat.h */; }; - DFB605772038BCE8001E70F1 /* fttrigon.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602232038AE79001E70F1 /* fttrigon.h */; }; - DFB605782038BCE8001E70F1 /* ftbbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602242038AE79001E70F1 /* ftbbox.h */; }; - DFB605792038BCE8001E70F1 /* ftgzip.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602252038AE79001E70F1 /* ftgzip.h */; }; DFB6057A2038BCF1001E70F1 /* sfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602272038AE79001E70F1 /* sfnt.h */; }; DFB6057B2038BCF1001E70F1 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602282038AE79001E70F1 /* internal.h */; }; DFB6057C2038BCF1001E70F1 /* ftdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602292038AE79001E70F1 /* ftdebug.h */; }; @@ -908,23 +471,6 @@ DFB605882038BCF1001E70F1 /* ftmemory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602352038AE79001E70F1 /* ftmemory.h */; }; DFB605892038BCF1001E70F1 /* ftgloadr.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602362038AE79001E70F1 /* ftgloadr.h */; }; DFB6058A2038BCF1001E70F1 /* ftserv.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602372038AE79001E70F1 /* ftserv.h */; }; - DFB6058B2038BCF2001E70F1 /* sfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602272038AE79001E70F1 /* sfnt.h */; }; - DFB6058C2038BCF2001E70F1 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602282038AE79001E70F1 /* internal.h */; }; - DFB6058D2038BCF2001E70F1 /* ftdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602292038AE79001E70F1 /* ftdebug.h */; }; - DFB6058E2038BCF2001E70F1 /* psaux.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6022A2038AE79001E70F1 /* psaux.h */; }; - DFB6058F2038BCF2001E70F1 /* t1types.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6022B2038AE79001E70F1 /* t1types.h */; }; - DFB605902038BCF2001E70F1 /* pshints.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6022C2038AE79001E70F1 /* pshints.h */; }; - DFB605912038BCF2001E70F1 /* ftdriver.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6022D2038AE79001E70F1 /* ftdriver.h */; }; - DFB605922038BCF2001E70F1 /* autohint.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6022E2038AE79001E70F1 /* autohint.h */; }; - DFB605932038BCF2001E70F1 /* ftstream.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6022F2038AE79001E70F1 /* ftstream.h */; }; - DFB605942038BCF2001E70F1 /* tttypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602302038AE79001E70F1 /* tttypes.h */; }; - DFB605952038BCF2001E70F1 /* ftvalid.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602312038AE79001E70F1 /* ftvalid.h */; }; - DFB605962038BCF2001E70F1 /* ftobjs.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602322038AE79001E70F1 /* ftobjs.h */; }; - DFB605972038BCF2001E70F1 /* ftpic.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602332038AE79001E70F1 /* ftpic.h */; }; - DFB605982038BCF2001E70F1 /* fttrace.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602342038AE79001E70F1 /* fttrace.h */; }; - DFB605992038BCF2001E70F1 /* ftmemory.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602352038AE79001E70F1 /* ftmemory.h */; }; - DFB6059A2038BCF2001E70F1 /* ftgloadr.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602362038AE79001E70F1 /* ftgloadr.h */; }; - DFB6059B2038BCF2001E70F1 /* ftserv.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602372038AE79001E70F1 /* ftserv.h */; }; DFB6059C2038BCFD001E70F1 /* svprop.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602392038AE79001E70F1 /* svprop.h */; }; DFB6059D2038BCFD001E70F1 /* svmm.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023A2038AE79001E70F1 /* svmm.h */; }; DFB6059E2038BCFD001E70F1 /* svwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023B2038AE79001E70F1 /* svwinfnt.h */; }; @@ -943,28 +489,8 @@ DFB605AB2038BCFD001E70F1 /* svcid.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602482038AE79001E70F1 /* svcid.h */; }; DFB605AC2038BCFD001E70F1 /* svttglyf.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602492038AE79001E70F1 /* svttglyf.h */; }; DFB605AD2038BCFD001E70F1 /* svpostnm.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024A2038AE79001E70F1 /* svpostnm.h */; }; - DFB605AE2038BCFE001E70F1 /* svprop.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602392038AE79001E70F1 /* svprop.h */; }; - DFB605AF2038BCFE001E70F1 /* svmm.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023A2038AE79001E70F1 /* svmm.h */; }; - DFB605B02038BCFE001E70F1 /* svwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023B2038AE79001E70F1 /* svwinfnt.h */; }; - DFB605B12038BCFE001E70F1 /* svttcmap.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023C2038AE79001E70F1 /* svttcmap.h */; }; - DFB605B22038BCFE001E70F1 /* svotval.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023D2038AE79001E70F1 /* svotval.h */; }; - DFB605B32038BCFE001E70F1 /* svgldict.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023E2038AE79001E70F1 /* svgldict.h */; }; - DFB605B42038BCFE001E70F1 /* svpscmap.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6023F2038AE79001E70F1 /* svpscmap.h */; }; - DFB605B52038BCFE001E70F1 /* svkern.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602402038AE79001E70F1 /* svkern.h */; }; - DFB605B62038BCFE001E70F1 /* svpsinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602412038AE79001E70F1 /* svpsinfo.h */; }; - DFB605B72038BCFE001E70F1 /* svpfr.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602422038AE79001E70F1 /* svpfr.h */; }; - DFB605B82038BCFE001E70F1 /* svgxval.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602432038AE79001E70F1 /* svgxval.h */; }; - DFB605B92038BCFE001E70F1 /* svxf86nm.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602442038AE79001E70F1 /* svxf86nm.h */; }; - DFB605BA2038BCFE001E70F1 /* svbdf.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602452038AE79001E70F1 /* svbdf.h */; }; - DFB605BB2038BCFE001E70F1 /* svsfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602462038AE79001E70F1 /* svsfnt.h */; }; - DFB605BC2038BCFE001E70F1 /* svtteng.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602472038AE79001E70F1 /* svtteng.h */; }; - DFB605BD2038BCFE001E70F1 /* svcid.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602482038AE79001E70F1 /* svcid.h */; }; - DFB605BE2038BCFE001E70F1 /* svttglyf.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602492038AE79001E70F1 /* svttglyf.h */; }; - DFB605BF2038BCFE001E70F1 /* svpostnm.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024A2038AE79001E70F1 /* svpostnm.h */; }; DFB605C02038BD04001E70F1 /* ftrfork.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024B2038AE79001E70F1 /* ftrfork.h */; }; DFB605C12038BD04001E70F1 /* ftcalc.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024C2038AE79001E70F1 /* ftcalc.h */; }; - DFB605C22038BD05001E70F1 /* ftrfork.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024B2038AE79001E70F1 /* ftrfork.h */; }; - DFB605C32038BD05001E70F1 /* ftcalc.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024C2038AE79001E70F1 /* ftcalc.h */; }; DFB605C42038BD0F001E70F1 /* ftoutln.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024D2038AE79001E70F1 /* ftoutln.h */; }; DFB605C52038BD0F001E70F1 /* ftadvanc.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024E2038AE79001E70F1 /* ftadvanc.h */; }; DFB605C62038BD0F001E70F1 /* ftsynth.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024F2038AE79001E70F1 /* ftsynth.h */; }; @@ -998,61 +524,17 @@ DFB605E32038BD0F001E70F1 /* ftautoh.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026C2038AE79001E70F1 /* ftautoh.h */; }; DFB605E42038BD0F001E70F1 /* ftbdf.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026D2038AE79001E70F1 /* ftbdf.h */; }; DFB605E52038BD0F001E70F1 /* ftrender.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026E2038AE7A001E70F1 /* ftrender.h */; }; - DFB605E62038BD0F001E70F1 /* ftoutln.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024D2038AE79001E70F1 /* ftoutln.h */; }; - DFB605E72038BD0F001E70F1 /* ftadvanc.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024E2038AE79001E70F1 /* ftadvanc.h */; }; - DFB605E82038BD0F001E70F1 /* ftsynth.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6024F2038AE79001E70F1 /* ftsynth.h */; }; - DFB605E92038BD0F001E70F1 /* fterrors.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602502038AE79001E70F1 /* fterrors.h */; }; - DFB605EA2038BD0F001E70F1 /* ftgasp.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602512038AE79001E70F1 /* ftgasp.h */; }; - DFB605EB2038BD0F001E70F1 /* ftstroke.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602522038AE79001E70F1 /* ftstroke.h */; }; - DFB605EC2038BD0F001E70F1 /* ftcache.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602532038AE79001E70F1 /* ftcache.h */; }; - DFB605EE2038BD0F001E70F1 /* ftotval.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602552038AE79001E70F1 /* ftotval.h */; }; - DFB605EF2038BD0F001E70F1 /* freetype.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602562038AE79001E70F1 /* freetype.h */; }; - DFB605F02038BD10001E70F1 /* ftincrem.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602572038AE79001E70F1 /* ftincrem.h */; }; - DFB605F12038BD10001E70F1 /* ftttdrv.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602582038AE79001E70F1 /* ftttdrv.h */; }; - DFB605F22038BD10001E70F1 /* fterrdef.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602592038AE79001E70F1 /* fterrdef.h */; }; - DFB605F32038BD10001E70F1 /* ttnameid.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6025A2038AE79001E70F1 /* ttnameid.h */; }; - DFB605F42038BD10001E70F1 /* ftpfr.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6025B2038AE79001E70F1 /* ftpfr.h */; }; - DFB605F52038BD10001E70F1 /* ftgxval.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6025C2038AE79001E70F1 /* ftgxval.h */; }; - DFB605F62038BD10001E70F1 /* ftcffdrv.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6025D2038AE79001E70F1 /* ftcffdrv.h */; }; - DFB605F72038BD10001E70F1 /* ftchapters.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6025E2038AE79001E70F1 /* ftchapters.h */; }; - DFB605F82038BD10001E70F1 /* tttags.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6025F2038AE79001E70F1 /* tttags.h */; }; - DFB605F92038BD10001E70F1 /* ftlzw.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602602038AE79001E70F1 /* ftlzw.h */; }; - DFB605FA2038BD10001E70F1 /* ftsystem.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602612038AE79001E70F1 /* ftsystem.h */; }; - DFB605FB2038BD10001E70F1 /* t1tables.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602622038AE79001E70F1 /* t1tables.h */; }; - DFB605FC2038BD10001E70F1 /* ftimage.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602632038AE79001E70F1 /* ftimage.h */; }; - DFB605FD2038BD10001E70F1 /* tttables.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602642038AE79001E70F1 /* tttables.h */; }; - DFB605FE2038BD10001E70F1 /* ftcid.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602652038AE79001E70F1 /* ftcid.h */; }; - DFB605FF2038BD10001E70F1 /* ftglyph.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602662038AE79001E70F1 /* ftglyph.h */; }; - DFB606002038BD10001E70F1 /* ftmoderr.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602672038AE79001E70F1 /* ftmoderr.h */; }; - DFB606012038BD10001E70F1 /* ftbitmap.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602682038AE79001E70F1 /* ftbitmap.h */; }; - DFB606022038BD10001E70F1 /* ftlist.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602692038AE79001E70F1 /* ftlist.h */; }; - DFB606032038BD10001E70F1 /* ftmac.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026A2038AE79001E70F1 /* ftmac.h */; }; - DFB606042038BD10001E70F1 /* ftlcdfil.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026B2038AE79001E70F1 /* ftlcdfil.h */; }; - DFB606052038BD10001E70F1 /* ftautoh.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026C2038AE79001E70F1 /* ftautoh.h */; }; - DFB606062038BD10001E70F1 /* ftbdf.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026D2038AE79001E70F1 /* ftbdf.h */; }; - DFB606072038BD10001E70F1 /* ftrender.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6026E2038AE7A001E70F1 /* ftrender.h */; }; DFB606082038BD28001E70F1 /* wglext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602772038AE7A001E70F1 /* wglext.h */; }; DFB606092038BD28001E70F1 /* glext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602782038AE7A001E70F1 /* glext.h */; }; DFB6060A2038BD28001E70F1 /* glxext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602792038AE7A001E70F1 /* glxext.h */; }; DFB6060B2038BD28001E70F1 /* glcorearb.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6027A2038AE7A001E70F1 /* glcorearb.h */; }; - DFB6060C2038BD29001E70F1 /* wglext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602772038AE7A001E70F1 /* wglext.h */; }; - DFB6060D2038BD29001E70F1 /* glext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602782038AE7A001E70F1 /* glext.h */; }; - DFB6060E2038BD29001E70F1 /* glxext.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602792038AE7A001E70F1 /* glxext.h */; }; - DFB6060F2038BD29001E70F1 /* glcorearb.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB6027A2038AE7A001E70F1 /* glcorearb.h */; }; DFB606102038BD40001E70F1 /* MupenPlusPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6038D2038AE7C001E70F1 /* MupenPlusPluginAPI.cpp */; }; - DFB606112038BD41001E70F1 /* MupenPlusPluginAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6038D2038AE7C001E70F1 /* MupenPlusPluginAPI.cpp */; }; DFB606122038BD4E001E70F1 /* Config_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A62038AE7A001E70F1 /* Config_mupenplus.cpp */; }; DFB606132038BD4E001E70F1 /* GLideN64_mupenplus.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602A72038AE7A001E70F1 /* GLideN64_mupenplus.h */; }; DFB606142038BD4E001E70F1 /* MupenPlusAPIImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A82038AE7A001E70F1 /* MupenPlusAPIImpl.cpp */; }; DFB606152038BD4E001E70F1 /* CommonAPIImpl_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A92038AE7A001E70F1 /* CommonAPIImpl_mupenplus.cpp */; }; - DFB606162038BD4F001E70F1 /* Config_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A62038AE7A001E70F1 /* Config_mupenplus.cpp */; }; - DFB606172038BD4F001E70F1 /* GLideN64_mupenplus.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB602A72038AE7A001E70F1 /* GLideN64_mupenplus.h */; }; - DFB606182038BD4F001E70F1 /* MupenPlusAPIImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A82038AE7A001E70F1 /* MupenPlusAPIImpl.cpp */; }; - DFB606192038BD4F001E70F1 /* CommonAPIImpl_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB602A92038AE7A001E70F1 /* CommonAPIImpl_mupenplus.cpp */; }; DFB6061A2038BD73001E70F1 /* mupen64plus_DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6034B2038AE7C001E70F1 /* mupen64plus_DisplayWindow.cpp */; }; - DFB6061B2038BD73001E70F1 /* mupen64plus_DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFB6034B2038AE7C001E70F1 /* mupen64plus_DisplayWindow.cpp */; }; DFB60622203A7428001E70F1 /* osal_files_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = DFB60621203A7428001E70F1 /* osal_files_ios.mm */; }; - DFB60623203A7429001E70F1 /* osal_files_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = DFB60621203A7428001E70F1 /* osal_files_ios.mm */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1070,13 +552,6 @@ remoteGlobalIDString = B3800FF4208522DC00FA03B8; remoteInfo = glidenhq; }; - B37263B826EA168500E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3AF702121916E60000FA7F9; - remoteInfo = "png-tvOS"; - }; B37263C026EA1EF000E95488 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -1105,48 +580,6 @@ remoteGlobalIDString = B331158B1C7309C200E9AD14; remoteInfo = "PVRSPCXD4-iOS"; }; - B37263D126EA1F1C00E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3B3B9421DED13A200602746; - remoteInfo = "PVMupen64PlusRspHLE-tvOS"; - }; - B37263D526EA1F1C00E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = DFB603AF2038B582001E70F1; - remoteInfo = "PVMupen64PlusVideoGlideN64-tvOS"; - }; - B37263D926EA1F1C00E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3B3B90A1DED137100602746; - remoteInfo = "PVMupen64PlusVideoRice-tvOS"; - }; - B37263DD26EA1F1C00E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3B3B9551DED144100602746; - remoteInfo = "PVRSPCXD4-tvOS"; - }; - B37263E026EA280600E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3AF702121916E60000FA7F9; - remoteInfo = "png-tvOS"; - }; - B37263E326EA280E00E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3AF702121916E60000FA7F9; - remoteInfo = "png-tvOS"; - }; B3AF701921916E0F000FA7F9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -1154,13 +587,6 @@ remoteGlobalIDString = B3303E4B1DED23C600896D96; remoteInfo = png; }; - B3AF706021916FC7000FA7F9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3AF703A21916E87000FA7F9; - remoteInfo = "glidenhq-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -1182,24 +608,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3AF703521916E60000FA7F9 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3AF704E21916E87000FA7F9 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -1486,7 +894,7 @@ B3055AD92072FEE9001212D2 /* eventloop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventloop.h; sourceTree = ""; }; B3055BEE20730B60001212D2 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B30BF1AD2775320F00FF9E07 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; - B3303E4C1DED23C600896D96 /* libpng-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpng-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3303E4C1DED23C600896D96 /* libpng.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpng.a; sourceTree = BUILT_PRODUCTS_DIR; }; B3303E551DED23EE00896D96 /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = png.h; path = png/png.h; sourceTree = SOURCE_ROOT; }; B3303E561DED23EE00896D96 /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = png/pngconf.h; sourceTree = SOURCE_ROOT; }; B3303E571DED23EE00896D96 /* pngdebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pngdebug.h; path = png/pngdebug.h; sourceTree = SOURCE_ROOT; }; @@ -1533,8 +941,9 @@ B37EFF381C72F43300857158 /* PVMupen64Plus.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64Plus.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B37EFF3A1C72F43400857158 /* PVMupen64Plus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMupen64Plus.h; sourceTree = ""; }; B37EFF3C1C72F43400857158 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3800FF5208522DC00FA03B8 /* libglidenhq-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libglidenhq-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3800FF5208522DC00FA03B8 /* libglidenhq.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libglidenhq.a; sourceTree = BUILT_PRODUCTS_DIR; }; B380101320854EAA00FA03B8 /* TxDbg_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TxDbg_ios.mm; sourceTree = ""; }; + B395ECF92904B49F00C9407B /* MupenGameCore+Resources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MupenGameCore+Resources.swift"; sourceTree = ""; }; B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MupenGameCore+Audio.swift"; sourceTree = ""; }; @@ -1720,16 +1129,10 @@ B3AE1F2720733D3500AD06D4 /* mp3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mp3.c; sourceTree = ""; }; B3AE1F2820733D3500AD06D4 /* ucodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ucodes.h; sourceTree = ""; }; B3AE1F2920733D3500AD06D4 /* audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio.c; sourceTree = ""; }; - B3AF703921916E60000FA7F9 /* libpng-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpng-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3AF705221916E87000FA7F9 /* libglidenhq-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libglidenhq-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B3AF705721916ED0000FA7F9 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3B3B8601DECEA9100602746 /* PVMupen64PlusRspHLE.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64PlusRspHLE.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3B3B8621DECEA9100602746 /* PVMupen64PlusRspHLE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMupen64PlusRspHLE.h; sourceTree = ""; }; B3B3B8631DECEA9100602746 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3B3B9081DED130B00602746 /* PVMupen64Plus.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64Plus.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3B3B9401DED137100602746 /* PVMupen64PlusVideoRice.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64PlusVideoRice.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3B3B9531DED13A200602746 /* PVMupen64PlusRspHLE.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64PlusRspHLE.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3B3B9731DED144100602746 /* PVRSPCXD4.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVRSPCXD4.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C1031E1C72C9BA00DD066C /* SDL_opengles2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2.h; sourceTree = ""; }; B3C3F3D721A9CB9B00EFB09C /* F3DFLX2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = F3DFLX2.cpp; sourceTree = ""; }; B3C3F3D821A9CB9B00EFB09C /* F3DEX2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2.cpp; sourceTree = ""; }; @@ -1788,6 +1191,7 @@ B3EA447B206E10C700E608F6 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; B3EA4488206E372400E608F6 /* TextDrawerStub.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextDrawerStub.cpp; sourceTree = ""; }; B3F2058226FBCBC600A4196B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; + B3FAC9B8292B522C005E8B11 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS16.1.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; DF0035BD203C77D900F63831 /* Revision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Revision.h; sourceTree = ""; }; DFB601802038AD13001E70F1 /* PVMupen64PlusVideoGlideN64.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64PlusVideoGlideN64.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2224,7 +1628,6 @@ DFB603942038AE7D001E70F1 /* GraphicsDrawer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicsDrawer.h; sourceTree = ""; }; DFB603952038AE7D001E70F1 /* VI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VI.cpp; sourceTree = ""; }; DFB603962038AE7D001E70F1 /* DisplayLoadProgress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisplayLoadProgress.h; sourceTree = ""; }; - DFB603B82038B582001E70F1 /* PVMupen64PlusVideoGlideN64.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMupen64PlusVideoGlideN64.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DFB60621203A7428001E70F1 /* osal_files_ios.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = osal_files_ios.mm; sourceTree = ""; }; /* End PBXFileReference section */ @@ -2248,7 +1651,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3882C141DED279C007183B6 /* libpng-iOS.a in Frameworks */, + B3882C141DED279C007183B6 /* libpng.a in Frameworks */, B3962AEE26FBD8F100FAEFC0 /* OpenGL.framework in Frameworks */, B3303E821DED272E00896D96 /* libz.tbd in Frameworks */, B324C62F21920BDA009F4EDC /* OpenGLES.framework in Frameworks */, @@ -2275,22 +1678,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3801011208545D900FA03B8 /* libpng-iOS.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3AF703421916E60000FA7F9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3AF704C21916E87000FA7F9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C4C72191A09C009F4EDC /* libpng-tvOS.a in Frameworks */, + B3801011208545D900FA03B8 /* libpng.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2299,44 +1687,7 @@ buildActionMask = 2147483647; files = ( B3962AEC26FBD89A00FAEFC0 /* OpenGL.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B8FA1DED130B00602746 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B37263CF26EA1F1C00E95488 /* PVMupen64PlusRspHLE.framework in Frameworks */, - B37263D326EA1F1C00E95488 /* PVMupen64PlusVideoGlideN64.framework in Frameworks */, - B3AF705821916ED0000FA7F9 /* PVSupport.framework in Frameworks */, - B37263DB26EA1F1C00E95488 /* PVRSPCXD4.framework in Frameworks */, - B37263B526EA164900E95488 /* libz.tbd in Frameworks */, - B37263D726EA1F1C00E95488 /* PVMupen64PlusVideoRice.framework in Frameworks */, - B324C63021920BDA009F4EDC /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B9371DED137100602746 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B37263B726EA168500E95488 /* libpng-tvOS.a in Frameworks */, - B37263B426EA163600E95488 /* libz.tbd in Frameworks */, - B324C62E21920BD8009F4EDC /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B94C1DED13A200602746 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B9601DED144100602746 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + B3FAC9B9292B522C005E8B11 /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2344,24 +1695,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B38010152085586900FA03B8 /* libglidenhq-iOS.a in Frameworks */, + B38010152085586900FA03B8 /* libglidenhq.a in Frameworks */, B3F2058326FBCBC600A4196B /* OpenGL.framework in Frameworks */, B3EA4483206E309A00E608F6 /* libz.tbd in Frameworks */, B3EA447C206E10C700E608F6 /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DFB603B12038B582001E70F1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B3AF705D21916F88000FA7F9 /* libglidenhq-tvOS.a in Frameworks */, - B37263E226EA280E00E95488 /* libpng-tvOS.a in Frameworks */, - B37263B326EA161100E95488 /* libz.tbd in Frameworks */, - B324C62D21920BCD009F4EDC /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -2419,6 +1759,7 @@ B39C29DC27A12DA20078D028 /* MupenGameCore+Saves.h */, B39C29DD27A12DA30078D028 /* MupenGameCore+Saves.m */, B35E6C3B207EE3750040709A /* MupenOptions.swift */, + B395ECF92904B49F00C9407B /* MupenGameCore+Resources.swift */, B3963E63279E866B00B00117 /* MupenGameCore+Video.swift */, B3963E60279E835300B00117 /* MupenGameCore+Audio.swift */, ); @@ -2453,16 +1794,9 @@ B37EFF381C72F43300857158 /* PVMupen64Plus.framework */, B331158C1C7309C200E9AD14 /* PVRSPCXD4.framework */, B3B3B8601DECEA9100602746 /* PVMupen64PlusRspHLE.framework */, - B3B3B9081DED130B00602746 /* PVMupen64Plus.framework */, - B3B3B9401DED137100602746 /* PVMupen64PlusVideoRice.framework */, - B3B3B9531DED13A200602746 /* PVMupen64PlusRspHLE.framework */, - B3B3B9731DED144100602746 /* PVRSPCXD4.framework */, - B3303E4C1DED23C600896D96 /* libpng-iOS.a */, + B3303E4C1DED23C600896D96 /* libpng.a */, DFB601802038AD13001E70F1 /* PVMupen64PlusVideoGlideN64.framework */, - DFB603B82038B582001E70F1 /* PVMupen64PlusVideoGlideN64.framework */, - B3800FF5208522DC00FA03B8 /* libglidenhq-iOS.a */, - B3AF703921916E60000FA7F9 /* libpng-tvOS.a */, - B3AF705221916E87000FA7F9 /* libglidenhq-tvOS.a */, + B3800FF5208522DC00FA03B8 /* libglidenhq.a */, ); name = Products; sourceTree = ""; @@ -3557,6 +2891,7 @@ B3B3B8551DECE9D800602746 /* Frameworks */ = { isa = PBXGroup; children = ( + B3FAC9B8292B522C005E8B11 /* OpenGLES.framework */, B30BF1AD2775320F00FF9E07 /* libz.tbd */, B3F2058226FBCBC600A4196B /* OpenGL.framework */, B3962AEB26FBD89A00FAEFC0 /* OpenGL.framework */, @@ -4515,47 +3850,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3B3B8FF1DED130B00602746 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B39C29DF27A12DA30078D028 /* MupenGameCore+Saves.h in Headers */, - B39C29D927A12D100078D028 /* MupenGameCore+Cheats.h in Headers */, - B36EF430279C5286005C7ED4 /* r4300_core.h in Headers */, - B39C29E527A12E6A0078D028 /* MupenGameCore+Mupen.h in Headers */, - B3B3B9001DED130B00602746 /* MupenGameCore.h in Headers */, - B3C83E1C279617780020824C /* assem_arm.h in Headers */, - B39C29D527A121160078D028 /* MupenGameCore+Controls.h in Headers */, - B3B3B9021DED130B00602746 /* PVMupen64Plus.h in Headers */, - B3C83E1F2796177E0020824C /* assem_x86.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B93B1DED137100602746 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3303E391DED20D900896D96 /* PVMupen64PlusVideoRice.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B94D1DED13A200602746 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3B3B94E1DED13A200602746 /* PVMupen64PlusRspHLE.h in Headers */, - B3C83E24279619420020824C /* ucodes.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B9611DED144100602746 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3B3B96A1DED144100602746 /* PVRSPCXD4.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; DFB6017D2038AD13001E70F1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -4770,225 +4064,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DFB603B22038B582001E70F1 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - DFB603B32038B582001E70F1 /* PVMupen64PlusVideoGlideN64.h in Headers */, - DFB604392038BA68001E70F1 /* RSP.h in Headers */, - DFB605AE2038BCFE001E70F1 /* svprop.h in Headers */, - DFB603E72038B9CF001E70F1 /* Debugger.h in Headers */, - DFB6049D2038BB5E001E70F1 /* opengl_UnbufferedDrawer.h in Headers */, - DFB605B42038BCFE001E70F1 /* svpscmap.h in Headers */, - B3C3F41A21A9CBAA00EFB09C /* L3D.h in Headers */, - DFB6060F2038BD29001E70F1 /* glcorearb.h in Headers */, - DFB605572038BCD1001E70F1 /* m64p_plugin.h in Headers */, - DFB605F62038BD10001E70F1 /* ftcffdrv.h in Headers */, - DFB604A32038BB5E001E70F1 /* opengl_CachedFunctions.h in Headers */, - DFB606072038BD10001E70F1 /* ftrender.h in Headers */, - DFB605F22038BD10001E70F1 /* fterrdef.h in Headers */, - DFB605972038BCF2001E70F1 /* ftpic.h in Headers */, - DFB604A02038BB5E001E70F1 /* opengl_Utils.h in Headers */, - DFB6044B2038BA87001E70F1 /* TextureFilterHandler.h in Headers */, - B3C3F42621A9CBAA00EFB09C /* F3DBETA.h in Headers */, - DFB605782038BCE8001E70F1 /* ftbbox.h in Headers */, - DFB605B52038BCFE001E70F1 /* svkern.h in Headers */, - DFB604CF2038BBEC001E70F1 /* glsl_CombinerProgramBuilder.h in Headers */, - DFB604552038BA9E001E70F1 /* ZlutTexture.h in Headers */, - B3C3F43421A9CBAA00EFB09C /* T3DUX.h in Headers */, - DFB6045F2038BAB8001E70F1 /* ColorBufferToRDRAMStub.h in Headers */, - DFB604362038BA68001E70F1 /* RDP.h in Headers */, - B3C3F44021A9CBAA00EFB09C /* F5Rogue.h in Headers */, - DFB604602038BAB8001E70F1 /* DepthBufferToRDRAM.h in Headers */, - DFB605992038BCF2001E70F1 /* ftmemory.h in Headers */, - DFB604452038BA87001E70F1 /* SoftwareRender.h in Headers */, - DFB6060D2038BD29001E70F1 /* glext.h in Headers */, - DFB604832038BB0B001E70F1 /* Context.h in Headers */, - DFB603D92038B997001E70F1 /* convert.h in Headers */, - DFB605AF2038BCFE001E70F1 /* svmm.h in Headers */, - B3C3F46021A9CBAA00EFB09C /* F3DEX2.h in Headers */, - DFB604312038BA68001E70F1 /* Platform.h in Headers */, - DFB606042038BD10001E70F1 /* ftlcdfil.h in Headers */, - DFB605EC2038BD0F001E70F1 /* ftcache.h in Headers */, - DFB603F82038B9F0001E70F1 /* FrameBuffer.h in Headers */, - DFB605742038BCE8001E70F1 /* ftmodapi.h in Headers */, - DFB604492038BA87001E70F1 /* TextDrawer.h in Headers */, - DFB605B72038BCFE001E70F1 /* svpfr.h in Headers */, - DFB605512038BCD1001E70F1 /* m64p_types.h in Headers */, - DFB604A62038BB5E001E70F1 /* opengl_GLInfo.h in Headers */, - DFB6048B2038BB0B001E70F1 /* ShaderProgram.h in Headers */, - B3C3F45A21A9CBAA00EFB09C /* Turbo3D.h in Headers */, - DFB604152038BA1B001E70F1 /* Keys.h in Headers */, - DFB6048A2038BB0B001E70F1 /* PixelBuffer.h in Headers */, - DFB606002038BD10001E70F1 /* ftmoderr.h in Headers */, - DFB604D52038BBEC001E70F1 /* glsl_ShaderPart.h in Headers */, - DFB604842038BB0B001E70F1 /* ContextImpl.h in Headers */, - B3C3F43A21A9CBAA00EFB09C /* F3D.h in Headers */, - DFB605562038BCD1001E70F1 /* m64p_config.h in Headers */, - DFB603F12038B9DE001E70F1 /* DisplayWindow.h in Headers */, - DFB604A72038BB5E001E70F1 /* opengl_ColorBufferReaderWithReadPixels.h in Headers */, - DFB605772038BCE8001E70F1 /* fttrigon.h in Headers */, - DFB605F02038BD10001E70F1 /* ftincrem.h in Headers */, - DFB605B12038BCFE001E70F1 /* svttcmap.h in Headers */, - DFB605BE2038BCFE001E70F1 /* svttglyf.h in Headers */, - DFB6049F2038BB5E001E70F1 /* opengl_BufferManipulationObjectFactory.h in Headers */, - DFB605902038BCF2001E70F1 /* pshints.h in Headers */, - DFB605FD2038BD10001E70F1 /* tttables.h in Headers */, - DFB604632038BAB8001E70F1 /* ColorBufferToRDRAM.h in Headers */, - DFB605BD2038BCFE001E70F1 /* svcid.h in Headers */, - DFB605FA2038BD10001E70F1 /* ftsystem.h in Headers */, - DFB6040B2038BA09001E70F1 /* GraphicsDrawer.h in Headers */, - DFB604092038BA09001E70F1 /* GLideN64.h in Headers */, - DFB6054E2038BCD1001E70F1 /* m64p_vidext.h in Headers */, - B3C3F42A21A9CBAA00EFB09C /* L3DEX.h in Headers */, - DFB604A22038BB5E001E70F1 /* opengl_Attributes.h in Headers */, - DFB604D22038BBEC001E70F1 /* glsl_SpecialShadersFactory.h in Headers */, - DFB605B02038BCFE001E70F1 /* svwinfnt.h in Headers */, - DFB6059B2038BCF2001E70F1 /* ftserv.h in Headers */, - DFB603CF2038B938001E70F1 /* osal_files.h in Headers */, - B3C3F46A21A9CBAA00EFB09C /* F3DPD.h in Headers */, - DFB6056B2038BCE2001E70F1 /* ftconfig.h in Headers */, - DFB605692038BCE2001E70F1 /* ftstdlib.h in Headers */, - B3C3F45021A9CBAA00EFB09C /* F3DGOLDEN.h in Headers */, - DFB604CE2038BBEC001E70F1 /* glsl_CombinerProgramUniformFactory.h in Headers */, - B3C3F43621A9CBAA00EFB09C /* S2DEX2.h in Headers */, - DFB605BF2038BCFE001E70F1 /* svpostnm.h in Headers */, - DFB603DC2038B9C0001E70F1 /* CRC.h in Headers */, - DFB604AB2038BB5E001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.h in Headers */, - DFB605932038BCF2001E70F1 /* ftstream.h in Headers */, - B3C3F47021A9CBFB00EFB09C /* glsl_FXAA.h in Headers */, - DFB604612038BAB8001E70F1 /* WriteToRDRAM.h in Headers */, - DFB605C32038BD05001E70F1 /* ftcalc.h in Headers */, - DFB603FA2038B9F0001E70F1 /* FrameBufferInfo.h in Headers */, - DFB6056C2038BCE2001E70F1 /* ftoption.h in Headers */, - DFB605762038BCE8001E70F1 /* ttunpat.h in Headers */, - DFB604132038BA1B001E70F1 /* gSP.h in Headers */, - DFB604342038BA68001E70F1 /* PostProcessor.h in Headers */, - DFB605912038BCF2001E70F1 /* ftdriver.h in Headers */, - DFB604872038BB0B001E70F1 /* ObjectHandle.h in Headers */, - DFB604322038BA68001E70F1 /* PluginAPI.h in Headers */, - DFB605532038BCD1001E70F1 /* vidext.h in Headers */, - DFB605B22038BCFE001E70F1 /* svotval.h in Headers */, - DFB604A42038BB5E001E70F1 /* opengl_ColorBufferReaderWithBufferStorage.h in Headers */, - DFB6060C2038BD29001E70F1 /* wglext.h in Headers */, - DFB603E52038B9CF001E70F1 /* DebugDump.h in Headers */, - DFB605FF2038BD10001E70F1 /* ftglyph.h in Headers */, - B3C3F45E21A9CBAA00EFB09C /* F3DFLX2.h in Headers */, - DFB605F32038BD10001E70F1 /* ttnameid.h in Headers */, - DFB603C32038B6FF001E70F1 /* 3DMath.h in Headers */, - DFB605632038BCDC001E70F1 /* ftmm.h in Headers */, - DFB605E82038BD0F001E70F1 /* ftsynth.h in Headers */, - DFB605502038BCD1001E70F1 /* callbacks.h in Headers */, - DFB6056A2038BCE2001E70F1 /* ftheader.h in Headers */, - DFB605E92038BD0F001E70F1 /* fterrors.h in Headers */, - DFB604A12038BB5E001E70F1 /* opengl_GraphicsDrawer.h in Headers */, - B3C3F42421A9CBAA00EFB09C /* F3DTEXA.h in Headers */, - DFB606172038BD4F001E70F1 /* GLideN64_mupenplus.h in Headers */, - DFB605612038BCDC001E70F1 /* ftsizes.h in Headers */, - DFB6054F2038BCD1001E70F1 /* m64p_common.h in Headers */, - B3C3F42221A9CBAA00EFB09C /* F3DSETA.h in Headers */, - DFB6055E2038BCDC001E70F1 /* ftxf86.h in Headers */, - DFB604A52038BB5E001E70F1 /* opengl_ContextImpl.h in Headers */, - DFB606032038BD10001E70F1 /* ftmac.h in Headers */, - DFB606022038BD10001E70F1 /* ftlist.h in Headers */, - DFB604A92038BB5E001E70F1 /* opengl_TextureManipulationObjectFactory.h in Headers */, - DFB6055F2038BCDC001E70F1 /* ftsnames.h in Headers */, - DFB604512038BA95001E70F1 /* VI.h in Headers */, - DFB605952038BCF2001E70F1 /* ftvalid.h in Headers */, - DFB605F72038BD10001E70F1 /* ftchapters.h in Headers */, - DFB605B62038BCFE001E70F1 /* svpsinfo.h in Headers */, - DFB6044D2038BA87001E70F1 /* Textures.h in Headers */, - DFB603C72038B705001E70F1 /* Combiner.h in Headers */, - DFB6041F2038BA3D001E70F1 /* N64.h in Headers */, - DFB604882038BB0B001E70F1 /* Parameter.h in Headers */, - DFB605B32038BCFE001E70F1 /* svgldict.h in Headers */, - DFB603E92038B9CF001E70F1 /* DepthBuffer.h in Headers */, - B3C3F41821A9CBAA00EFB09C /* L3DEX2.h in Headers */, - DFB605E62038BD0F001E70F1 /* ftoutln.h in Headers */, - DFB605F52038BD10001E70F1 /* ftgxval.h in Headers */, - DFB603EF2038B9DE001E70F1 /* DisplayLoadProgress.h in Headers */, - DFB605FE2038BD10001E70F1 /* ftcid.h in Headers */, - DFB605F82038BD10001E70F1 /* tttags.h in Headers */, - DFB605602038BCDC001E70F1 /* ftwinfnt.h in Headers */, - DFB605622038BCDC001E70F1 /* fttypes.h in Headers */, - DFB6058F2038BCF2001E70F1 /* t1types.h in Headers */, - B3C3F43221A9CBAA00EFB09C /* ZSortBOSS.h in Headers */, - DFB605BA2038BCFE001E70F1 /* svbdf.h in Headers */, - DFB6056D2038BCE2001E70F1 /* ftmodule.h in Headers */, - DFB605962038BCF2001E70F1 /* ftobjs.h in Headers */, - DFB605E72038BD0F001E70F1 /* ftadvanc.h in Headers */, - DFB604052038BA09001E70F1 /* GBI.h in Headers */, - DFB605752038BCE8001E70F1 /* ftbzip2.h in Headers */, - DFB604D02038BBEC001E70F1 /* glsl_CombinerInputs.h in Headers */, - DFB604D42038BBEC001E70F1 /* glsl_ShaderStorage.h in Headers */, - DFB605F42038BD10001E70F1 /* ftpfr.h in Headers */, - DFB605BB2038BCFE001E70F1 /* svsfnt.h in Headers */, - DFB604D32038BBEC001E70F1 /* glsl_CombinerProgramImpl.h in Headers */, - DFB6058C2038BCF2001E70F1 /* internal.h in Headers */, - DFB6058D2038BCF2001E70F1 /* ftdebug.h in Headers */, - DFB605F12038BD10001E70F1 /* ftttdrv.h in Headers */, - DFB6058B2038BCF2001E70F1 /* sfnt.h in Headers */, - DFB605EA2038BD0F001E70F1 /* ftgasp.h in Headers */, - DFB604212038BA3D001E70F1 /* NoiseTexture.h in Headers */, - DFB6049E2038BB5E001E70F1 /* opengl_ColorBufferReaderWithEGLImage.h in Headers */, - DFB6047F2038BB0B001E70F1 /* ColorBufferReader.h in Headers */, - DFB604472038BA87001E70F1 /* TexrectDrawer.h in Headers */, - B3C3F41E21A9CBAA00EFB09C /* F5Indi_Naboo.h in Headers */, - DFB6058E2038BCF2001E70F1 /* psaux.h in Headers */, - DFB605EB2038BD0F001E70F1 /* ftstroke.h in Headers */, - B3C3F40E21A9CBAA00EFB09C /* F3DEX2ACCLAIM.h in Headers */, - DFB606012038BD10001E70F1 /* ftbitmap.h in Headers */, - DFB603FB2038B9F0001E70F1 /* FrameBufferInfoAPI.h in Headers */, - DFB605922038BCF2001E70F1 /* autohint.h in Headers */, - DFB6046C2038BAD7001E70F1 /* ClipPolygon.h in Headers */, - DFB604892038BB0B001E70F1 /* Parameters.h in Headers */, - DFB6060E2038BD29001E70F1 /* glxext.h in Headers */, - B3C3F43C21A9CBAA00EFB09C /* F3DDKR.h in Headers */, - DFB604172038BA1B001E70F1 /* Log.h in Headers */, - DFB605FB2038BD10001E70F1 /* t1tables.h in Headers */, - DFB605522038BCD1001E70F1 /* m64p_debugger.h in Headers */, - DFB605B82038BCFE001E70F1 /* svgxval.h in Headers */, - DFB605982038BCF2001E70F1 /* fttrace.h in Headers */, - DFB604232038BA3D001E70F1 /* PaletteTexture.h in Headers */, - DFB605942038BCF2001E70F1 /* tttypes.h in Headers */, - DFB6054C2038BCD1001E70F1 /* m64p_frontend.h in Headers */, - DFB604812038BB0B001E70F1 /* CombinerProgram.h in Headers */, - DFB605C22038BD05001E70F1 /* ftrfork.h in Headers */, - DFB6046D2038BAD7001E70F1 /* DepthBufferRender.h in Headers */, - DFB605EF2038BD0F001E70F1 /* freetype.h in Headers */, - DFB604D12038BBEC001E70F1 /* glsl_Utils.h in Headers */, - DFB605542038BCD1001E70F1 /* vidext_sdl2_compat.h in Headers */, - DFB606052038BD10001E70F1 /* ftautoh.h in Headers */, - DFB6059A2038BCF2001E70F1 /* ftgloadr.h in Headers */, - DFB604AA2038BB5E001E70F1 /* opengl_BufferedDrawer.h in Headers */, - DFB605792038BCE8001E70F1 /* ftgzip.h in Headers */, - B3C3F46621A9CBAA00EFB09C /* S2DEX.h in Headers */, - DFB604302038BA68001E70F1 /* Performance.h in Headers */, - DFB605F92038BD10001E70F1 /* ftlzw.h in Headers */, - DFB605B92038BCFE001E70F1 /* svxf86nm.h in Headers */, - DFB604A82038BB5E001E70F1 /* GLFunctions.h in Headers */, - DFB603CB2038B70E001E70F1 /* CombinerKey.h in Headers */, - DFB6045D2038BAB8001E70F1 /* RDRAMtoColorBuffer.h in Headers */, - DFB604072038BA09001E70F1 /* gDP.h in Headers */, - DFB604852038BB0B001E70F1 /* FramebufferTextureFormats.h in Headers */, - B3C3F46821A9CBAA00EFB09C /* F3DEX.h in Headers */, - B3C3F42821A9CBAA00EFB09C /* F3DAM.h in Headers */, - DFB605FC2038BD10001E70F1 /* ftimage.h in Headers */, - DFB605BC2038BCFE001E70F1 /* svtteng.h in Headers */, - DFB606062038BD10001E70F1 /* ftbdf.h in Headers */, - DFB605EE2038BD0F001E70F1 /* ftotval.h in Headers */, - B3C3F44A21A9CBAA00EFB09C /* F3DZEX2.h in Headers */, - B3C3F44421A9CBAA00EFB09C /* ZSort.h in Headers */, - B3C3F41421A9CBAA00EFB09C /* F3DEX2CBFD.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B3303E4B1DED23C600896D96 /* png-iOS */ = { + B3303E4B1DED23C600896D96 /* png */ = { isa = PBXNativeTarget; - buildConfigurationList = B3303E521DED23C700896D96 /* Build configuration list for PBXNativeTarget "png-iOS" */; + buildConfigurationList = B3303E521DED23C700896D96 /* Build configuration list for PBXNativeTarget "png" */; buildPhases = ( B3303E481DED23C600896D96 /* Sources */, B3303E491DED23C600896D96 /* Frameworks */, @@ -4998,14 +4079,14 @@ ); dependencies = ( ); - name = "png-iOS"; + name = png; productName = libpng; - productReference = B3303E4C1DED23C600896D96 /* libpng-iOS.a */; + productReference = B3303E4C1DED23C600896D96 /* libpng.a */; productType = "com.apple.product-type.library.static"; }; - B331158B1C7309C200E9AD14 /* PVRSPCXD4-iOS */ = { + B331158B1C7309C200E9AD14 /* PVRSPCXD4 */ = { isa = PBXNativeTarget; - buildConfigurationList = B33115911C7309C200E9AD14 /* Build configuration list for PBXNativeTarget "PVRSPCXD4-iOS" */; + buildConfigurationList = B33115911C7309C200E9AD14 /* Build configuration list for PBXNativeTarget "PVRSPCXD4" */; buildPhases = ( B33115891C7309C200E9AD14 /* Headers */, B33115871C7309C200E9AD14 /* Sources */, @@ -5016,14 +4097,14 @@ ); dependencies = ( ); - name = "PVRSPCXD4-iOS"; + name = PVRSPCXD4; productName = PVRSPCXD4; productReference = B331158C1C7309C200E9AD14 /* PVRSPCXD4.framework */; productType = "com.apple.product-type.framework"; }; - B37EFEEF1C72E63300857158 /* PVMupen64PlusVideoRice-iOS */ = { + B37EFEEF1C72E63300857158 /* PVMupen64PlusVideoRice */ = { isa = PBXNativeTarget; - buildConfigurationList = B37EFEF71C72E63300857158 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoRice-iOS" */; + buildConfigurationList = B37EFEF71C72E63300857158 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoRice" */; buildPhases = ( B37EFEED1C72E63300857158 /* Headers */, B37EFEEB1C72E63300857158 /* Sources */, @@ -5035,14 +4116,14 @@ dependencies = ( B3AF701A21916E0F000FA7F9 /* PBXTargetDependency */, ); - name = "PVMupen64PlusVideoRice-iOS"; + name = PVMupen64PlusVideoRice; productName = "mupen64plus-video-rice-dynamic"; productReference = B37EFEF01C72E63300857158 /* PVMupen64PlusVideoRice.framework */; productType = "com.apple.product-type.framework"; }; - B37EFF371C72F43300857158 /* PVMupen64Plus-iOS */ = { + B37EFF371C72F43300857158 /* PVMupen64Plus */ = { isa = PBXNativeTarget; - buildConfigurationList = B37EFF3D1C72F43400857158 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-iOS" */; + buildConfigurationList = B37EFF3D1C72F43400857158 /* Build configuration list for PBXNativeTarget "PVMupen64Plus" */; buildPhases = ( B37EFF351C72F43300857158 /* Headers */, B37EFF331C72F43300857158 /* Sources */, @@ -5057,14 +4138,14 @@ B37263C926EA1EF000E95488 /* PBXTargetDependency */, B37263CD26EA1EF000E95488 /* PBXTargetDependency */, ); - name = "PVMupen64Plus-iOS"; + name = PVMupen64Plus; productName = PVMupen64PlusDynamic; productReference = B37EFF381C72F43300857158 /* PVMupen64Plus.framework */; productType = "com.apple.product-type.framework"; }; - B3800FF4208522DC00FA03B8 /* glidenhq-iOS */ = { + B3800FF4208522DC00FA03B8 /* glidenhq */ = { isa = PBXNativeTarget; - buildConfigurationList = B3800FFD208522DD00FA03B8 /* Build configuration list for PBXNativeTarget "glidenhq-iOS" */; + buildConfigurationList = B3800FFD208522DD00FA03B8 /* Build configuration list for PBXNativeTarget "glidenhq" */; buildPhases = ( B3800FF1208522DC00FA03B8 /* Sources */, B3800FF2208522DC00FA03B8 /* Frameworks */, @@ -5075,48 +4156,14 @@ dependencies = ( B31738002783F925002D3ACD /* PBXTargetDependency */, ); - name = "glidenhq-iOS"; - productName = glidenhq; - productReference = B3800FF5208522DC00FA03B8 /* libglidenhq-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3AF702121916E60000FA7F9 /* png-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3AF703621916E60000FA7F9 /* Build configuration list for PBXNativeTarget "png-tvOS" */; - buildPhases = ( - B3AF702221916E60000FA7F9 /* Sources */, - B3AF703421916E60000FA7F9 /* Frameworks */, - B3AF703521916E60000FA7F9 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "png-tvOS"; - productName = libpng; - productReference = B3AF703921916E60000FA7F9 /* libpng-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3AF703A21916E87000FA7F9 /* glidenhq-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3AF704F21916E87000FA7F9 /* Build configuration list for PBXNativeTarget "glidenhq-tvOS" */; - buildPhases = ( - B3AF703B21916E87000FA7F9 /* Sources */, - B3AF704C21916E87000FA7F9 /* Frameworks */, - B3AF704E21916E87000FA7F9 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "glidenhq-tvOS"; + name = glidenhq; productName = glidenhq; - productReference = B3AF705221916E87000FA7F9 /* libglidenhq-tvOS.a */; + productReference = B3800FF5208522DC00FA03B8 /* libglidenhq.a */; productType = "com.apple.product-type.library.static"; }; - B3B3B85F1DECEA9100602746 /* PVMupen64PlusRspHLE-iOS */ = { + B3B3B85F1DECEA9100602746 /* PVMupen64PlusRspHLE */ = { isa = PBXNativeTarget; - buildConfigurationList = B3B3B8651DECEA9100602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusRspHLE-iOS" */; + buildConfigurationList = B3B3B8651DECEA9100602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusRspHLE" */; buildPhases = ( B3B3B85D1DECEA9100602746 /* Headers */, B3B3B85B1DECEA9100602746 /* Sources */, @@ -5127,91 +4174,14 @@ ); dependencies = ( ); - name = "PVMupen64PlusRspHLE-iOS"; + name = PVMupen64PlusRspHLE; productName = PVMupen64PlusRspHLE; productReference = B3B3B8601DECEA9100602746 /* PVMupen64PlusRspHLE.framework */; productType = "com.apple.product-type.framework"; }; - B3B3B8A11DED130B00602746 /* PVMupen64Plus-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3B3B9051DED130B00602746 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-tvOS" */; - buildPhases = ( - B3B3B8FF1DED130B00602746 /* Headers */, - B3B3B8A21DED130B00602746 /* Sources */, - B3B3B8FA1DED130B00602746 /* Frameworks */, - B3B3B9041DED130B00602746 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B37263D226EA1F1C00E95488 /* PBXTargetDependency */, - B37263D626EA1F1C00E95488 /* PBXTargetDependency */, - B37263DA26EA1F1C00E95488 /* PBXTargetDependency */, - B37263DE26EA1F1C00E95488 /* PBXTargetDependency */, - ); - name = "PVMupen64Plus-tvOS"; - productName = PVMupen64PlusDynamic; - productReference = B3B3B9081DED130B00602746 /* PVMupen64Plus.framework */; - productType = "com.apple.product-type.framework"; - }; - B3B3B90A1DED137100602746 /* PVMupen64PlusVideoRice-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3B3B93D1DED137100602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoRice-tvOS" */; - buildPhases = ( - B3B3B93B1DED137100602746 /* Headers */, - B3B3B90B1DED137100602746 /* Sources */, - B3B3B9371DED137100602746 /* Frameworks */, - B3B3B93C1DED137100602746 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B37263B926EA168500E95488 /* PBXTargetDependency */, - ); - name = "PVMupen64PlusVideoRice-tvOS"; - productName = "mupen64plus-video-rice-dynamic"; - productReference = B3B3B9401DED137100602746 /* PVMupen64PlusVideoRice.framework */; - productType = "com.apple.product-type.framework"; - }; - B3B3B9421DED13A200602746 /* PVMupen64PlusRspHLE-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3B3B9501DED13A200602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusRspHLE-tvOS" */; - buildPhases = ( - B3B3B94D1DED13A200602746 /* Headers */, - B3B3B9431DED13A200602746 /* Sources */, - B3B3B94C1DED13A200602746 /* Frameworks */, - B3B3B94F1DED13A200602746 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVMupen64PlusRspHLE-tvOS"; - productName = PVMupen64PlusRspHLE; - productReference = B3B3B9531DED13A200602746 /* PVMupen64PlusRspHLE.framework */; - productType = "com.apple.product-type.framework"; - }; - B3B3B9551DED144100602746 /* PVRSPCXD4-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3B3B9701DED144100602746 /* Build configuration list for PBXNativeTarget "PVRSPCXD4-tvOS" */; - buildPhases = ( - B3B3B9611DED144100602746 /* Headers */, - B3B3B9561DED144100602746 /* Sources */, - B3B3B9601DED144100602746 /* Frameworks */, - B3B3B96F1DED144100602746 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVRSPCXD4-tvOS"; - productName = PVRSPCXD4; - productReference = B3B3B9731DED144100602746 /* PVRSPCXD4.framework */; - productType = "com.apple.product-type.framework"; - }; - DFB6017F2038AD13001E70F1 /* PVMupen64PlusVideoGlideN64-iOS */ = { + DFB6017F2038AD13001E70F1 /* PVMupen64PlusVideoGlideN64 */ = { isa = PBXNativeTarget; - buildConfigurationList = DFB601872038AD13001E70F1 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoGlideN64-iOS" */; + buildConfigurationList = DFB601872038AD13001E70F1 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoGlideN64" */; buildPhases = ( DFB6017D2038AD13001E70F1 /* Headers */, DFB6017B2038AD12001E70F1 /* Sources */, @@ -5223,32 +4193,11 @@ dependencies = ( B34AB6002106DFFE00C45F09 /* PBXTargetDependency */, ); - name = "PVMupen64PlusVideoGlideN64-iOS"; + name = PVMupen64PlusVideoGlideN64; productName = PVMupen64PlusVideoGlideN64; productReference = DFB601802038AD13001E70F1 /* PVMupen64PlusVideoGlideN64.framework */; productType = "com.apple.product-type.framework"; }; - DFB603AF2038B582001E70F1 /* PVMupen64PlusVideoGlideN64-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = DFB603B52038B582001E70F1 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoGlideN64-tvOS" */; - buildPhases = ( - DFB603B22038B582001E70F1 /* Headers */, - DFB603B02038B582001E70F1 /* Sources */, - DFB603B12038B582001E70F1 /* Frameworks */, - DFB603B42038B582001E70F1 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B37263E126EA280600E95488 /* PBXTargetDependency */, - B3AF706121916FC7000FA7F9 /* PBXTargetDependency */, - B37263E426EA280E00E95488 /* PBXTargetDependency */, - ); - name = "PVMupen64PlusVideoGlideN64-tvOS"; - productName = PVMupen64PlusVideoGlideN64; - productReference = DFB603B82038B582001E70F1 /* PVMupen64PlusVideoGlideN64.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -5281,9 +4230,6 @@ B3B3B85F1DECEA9100602746 = { CreatedOnToolsVersion = 8.1; }; - B3B3B8A11DED130B00602746 = { - LastSwiftMigration = 0930; - }; DFB6017F2038AD13001E70F1 = { CreatedOnToolsVersion = 9.3; }; @@ -5301,20 +4247,13 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B37EFF371C72F43300857158 /* PVMupen64Plus-iOS */, - B3B3B8A11DED130B00602746 /* PVMupen64Plus-tvOS */, - B37EFEEF1C72E63300857158 /* PVMupen64PlusVideoRice-iOS */, - B3B3B90A1DED137100602746 /* PVMupen64PlusVideoRice-tvOS */, - B3B3B85F1DECEA9100602746 /* PVMupen64PlusRspHLE-iOS */, - B3B3B9421DED13A200602746 /* PVMupen64PlusRspHLE-tvOS */, - B331158B1C7309C200E9AD14 /* PVRSPCXD4-iOS */, - B3B3B9551DED144100602746 /* PVRSPCXD4-tvOS */, - DFB6017F2038AD13001E70F1 /* PVMupen64PlusVideoGlideN64-iOS */, - DFB603AF2038B582001E70F1 /* PVMupen64PlusVideoGlideN64-tvOS */, - B3303E4B1DED23C600896D96 /* png-iOS */, - B3AF702121916E60000FA7F9 /* png-tvOS */, - B3800FF4208522DC00FA03B8 /* glidenhq-iOS */, - B3AF703A21916E87000FA7F9 /* glidenhq-tvOS */, + B37EFF371C72F43300857158 /* PVMupen64Plus */, + B37EFEEF1C72E63300857158 /* PVMupen64PlusVideoRice */, + B3B3B85F1DECEA9100602746 /* PVMupen64PlusRspHLE */, + B331158B1C7309C200E9AD14 /* PVRSPCXD4 */, + DFB6017F2038AD13001E70F1 /* PVMupen64PlusVideoGlideN64 */, + B3303E4B1DED23C600896D96 /* png */, + B3800FF4208522DC00FA03B8 /* glidenhq */, ); }; /* End PBXProject section */ @@ -5355,41 +4294,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3B3B9041DED130B00602746 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B316B4EC219275A900693472 /* GLideN64.custom.ini in Resources */, - B316B4EE219275A900693472 /* RiceVideoLinux.ini in Resources */, - B3C83E1827960C100020824C /* mupencheat.txt in Resources */, - B3AF47E421072BCC002211EE /* mupen64plus.ini in Resources */, - B3547B462058531200CFF7D8 /* Core.plist in Resources */, - B316B4ED219275A900693472 /* GLideN64.ini in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B93C1DED137100602746 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3A3033A2074020F008C1955 /* RiceVideoLinux.ini in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B94F1DED13A200602746 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B96F1DED144100602746 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; DFB6017E2038AD13001E70F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -5399,15 +4303,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DFB603B42038B582001E70F1 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DF0035C2203C8F6F00F63831 /* GLideN64.custom.ini in Resources */, - DF0035C3203C8F6F00F63831 /* GLideN64.ini in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -5575,6 +4470,7 @@ B3AE1DC3207311E900AD06D4 /* r4300_core.c in Sources */, B3AE1D97207311E900AD06D4 /* game_controller.c in Sources */, B3AE1D85207311E900AD06D4 /* m64282fp.c in Sources */, + B395ECFA2904B49F00C9407B /* MupenGameCore+Resources.swift in Sources */, B3AE1D8C207311E900AD06D4 /* dummy_video.c in Sources */, B3AE1DB4207311E900AD06D4 /* rdram.c in Sources */, B3AE1DC5207311E900AD06D4 /* mempak.c in Sources */, @@ -5604,53 +4500,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3AF702221916E60000FA7F9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3AF702321916E60000FA7F9 /* pngrio.c in Sources */, - B3AF702421916E60000FA7F9 /* pngwio.c in Sources */, - B3AF702521916E60000FA7F9 /* pngerror.c in Sources */, - B3AF702621916E60000FA7F9 /* pngwrite.c in Sources */, - B3AF702721916E60000FA7F9 /* pngset.c in Sources */, - B3AF702821916E60000FA7F9 /* example.c in Sources */, - B3AF702921916E60000FA7F9 /* pngget.c in Sources */, - B3AF702A21916E60000FA7F9 /* pngrtran.c in Sources */, - B3AF702B21916E60000FA7F9 /* pngmem.c in Sources */, - B3AF702C21916E60000FA7F9 /* pngwutil.c in Sources */, - B3AF702D21916E60000FA7F9 /* pngtrans.c in Sources */, - B3AF702E21916E60000FA7F9 /* pngpread.c in Sources */, - B3AF702F21916E60000FA7F9 /* png.c in Sources */, - B3AF703021916E60000FA7F9 /* pngwtran.c in Sources */, - B3AF703121916E60000FA7F9 /* pngrutil.c in Sources */, - B3AF703221916E60000FA7F9 /* pngread.c in Sources */, - B3AF703321916E60000FA7F9 /* pngtest.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3AF703B21916E87000FA7F9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3AF703C21916E87000FA7F9 /* TxQuantize.cpp in Sources */, - B3AF703D21916E87000FA7F9 /* TextureFilters_hq2x.cpp in Sources */, - B3AF703E21916E87000FA7F9 /* TxUtil.cpp in Sources */, - B3AF703F21916E87000FA7F9 /* TxFilterExport.cpp in Sources */, - B3AF704021916E87000FA7F9 /* txWidestringWrapper.cpp in Sources */, - B3AF704121916E87000FA7F9 /* TextureFilters_hq4x.cpp in Sources */, - B3AF704221916E87000FA7F9 /* TextureFilters.cpp in Sources */, - B3AF704321916E87000FA7F9 /* TextureFilters_2xsai.cpp in Sources */, - B3AF704421916E87000FA7F9 /* TxReSample.cpp in Sources */, - B3AF704521916E87000FA7F9 /* TxDbg_ios.mm in Sources */, - B3AF704621916E87000FA7F9 /* TxHiResCache.cpp in Sources */, - B3AF704721916E87000FA7F9 /* TextureFilters_xbrz.cpp in Sources */, - B3AF704821916E87000FA7F9 /* TxImage.cpp in Sources */, - B3AF704921916E87000FA7F9 /* TxCache.cpp in Sources */, - B3AF704A21916E87000FA7F9 /* TxTexCache.cpp in Sources */, - B3AF704B21916E87000FA7F9 /* TxFilter.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3B3B85B1DECEA9100602746 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -5673,175 +4522,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3B3B8A21DED130B00602746 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3AE1E022073378600AD06D4 /* ioapi.c in Sources */, - B3963E62279E835300B00117 /* MupenGameCore+Audio.swift in Sources */, - B3AE1DED2073378600AD06D4 /* plugin.c in Sources */, - B3AE1DDE2073378600AD06D4 /* md5.c in Sources */, - B3AE1E1B2073378600AD06D4 /* game_controller.c in Sources */, - B3AE1E1F2073378600AD06D4 /* mempak.c in Sources */, - B3AE1E042073378600AD06D4 /* savestates.c in Sources */, - B3AE1DE72073378600AD06D4 /* lirc.c in Sources */, - B3AE1DDF2073378600AD06D4 /* cart.c in Sources */, - B3AE1DD82073378600AD06D4 /* screenshot.m in Sources */, - B3AE1DF82073378600AD06D4 /* frontend.c in Sources */, - B3AE1DE62073378600AD06D4 /* cached_interp.c in Sources */, - B3AE1E1E2073378600AD06D4 /* rdram.c in Sources */, - B3AE1DD92073378600AD06D4 /* vidext.m in Sources */, - B3AE1DF22073378600AD06D4 /* dummy_rsp.c in Sources */, - B3AE1E052073378600AD06D4 /* dummy_input.c in Sources */, - B3AE1E162073378600AD06D4 /* cp1.c in Sources */, - B3AE1DFA2073378600AD06D4 /* config.c in Sources */, - B3AE1E0A2073378600AD06D4 /* gb_cart.c in Sources */, - B3AE1DFE2073378600AD06D4 /* rumblepak.c in Sources */, - B3AE1E082073378600AD06D4 /* cheat.c in Sources */, - B39C29E727A12E6A0078D028 /* MupenGameCore+Mupen.m in Sources */, - B3AE1E072073378600AD06D4 /* ri_controller.c in Sources */, - B3AE1E0C2073378600AD06D4 /* cart_rom.c in Sources */, - B3AE1E0D2073378600AD06D4 /* tlb.c in Sources */, - B3AE1DF42073378600AD06D4 /* audio_plugin_compat.c in Sources */, - B3AE1DF72073378600AD06D4 /* zip.c in Sources */, - B3AE1DFD2073378600AD06D4 /* unzip.c in Sources */, - B3AE1DE02073378600AD06D4 /* callbacks.c in Sources */, - B3AE1DDD2073378600AD06D4 /* MupenGameCore.m in Sources */, - B3AE1E132073378600AD06D4 /* debugger.c in Sources */, - B3AE1E182073378600AD06D4 /* clock_ctime_plus_delta.c in Sources */, - B3AE1DEF2073378600AD06D4 /* rdp_core.c in Sources */, - B3AE1DF32073378600AD06D4 /* si_controller.c in Sources */, - B3AE1E002073378600AD06D4 /* dynamiclib_unix.c in Sources */, - B369B0E021A3D7FB0064EDCA /* MupenOptions.swift in Sources */, - B3AE1DFC2073378600AD06D4 /* eeprom.c in Sources */, - B3AE1E0F2073378600AD06D4 /* workqueue.c in Sources */, - B3AE1E012073378600AD06D4 /* sram.c in Sources */, - B3AE1E1D2073378600AD06D4 /* dummy_video.c in Sources */, - B3AE1DFB2073378600AD06D4 /* rsp_core.c in Sources */, - B39C29D227A120790078D028 /* MupenGameCore+Controls.m in Sources */, - B3AE1DDB2073378600AD06D4 /* main.m in Sources */, - B39C29DB27A12D100078D028 /* MupenGameCore+Cheats.m in Sources */, - B3AE1DF12073378600AD06D4 /* ai_controller.c in Sources */, - B3AE1E062073378600AD06D4 /* bootrom_hle.c in Sources */, - B3AE1E0E2073378600AD06D4 /* mi_controller.c in Sources */, - B3AE1E152073378600AD06D4 /* sdl_key_converter.c in Sources */, - B3AE1DEE2073378600AD06D4 /* device.c in Sources */, - B36EF439279C55A4005C7ED4 /* asm_defines.c in Sources */, - B3963E65279E867100B00117 /* MupenGameCore+Video.swift in Sources */, - B3AE1E0B2073378600AD06D4 /* mbc3_rtc.c in Sources */, - B3AE1DDA2073378600AD06D4 /* eventloop.m in Sources */, - B3AE1DE52073378600AD06D4 /* common.c in Sources */, - B3AE1E142073378600AD06D4 /* idec.c in Sources */, - B3AE1E112073378600AD06D4 /* fb.c in Sources */, - B3AE1E192073378600AD06D4 /* n64_cic_nus_6105.c in Sources */, - B3AE1DE32073378600AD06D4 /* main.c in Sources */, - B3AE1DE82073378600AD06D4 /* xxhash.c in Sources */, - B3AE1DE42073378600AD06D4 /* cp0.c in Sources */, - B3AE1E1A2073378600AD06D4 /* r4300_core.c in Sources */, - B3AE1DF02073378600AD06D4 /* file_storage.c in Sources */, - B3AE1DDC2073378600AD06D4 /* SDLStubs.m in Sources */, - B3AE1DE22073378600AD06D4 /* pure_interp.c in Sources */, - B3AE1DFF2073378600AD06D4 /* input_plugin_compat.c in Sources */, - B3AE1DF52073378600AD06D4 /* vi_controller.c in Sources */, - B3AE1E122073378600AD06D4 /* pif.c in Sources */, - B3AE1DF92073378600AD06D4 /* dummy_audio.c in Sources */, - B3AE1DEA2073378600AD06D4 /* memory.c in Sources */, - B39C29E127A12DA30078D028 /* MupenGameCore+Saves.m in Sources */, - B3AE1DF62073378600AD06D4 /* rom.c in Sources */, - B3AE1E102073378600AD06D4 /* pi_controller.c in Sources */, - B3AE1DEB2073378600AD06D4 /* interrupt.c in Sources */, - B3AE1E092073378600AD06D4 /* util.c in Sources */, - B3AE1DEC2073378600AD06D4 /* cic.c in Sources */, - B3AE1DE92073378600AD06D4 /* af_rtc.c in Sources */, - B3AE1DE12073378600AD06D4 /* flashram.c in Sources */, - B3AE1E032073378600AD06D4 /* files_macos.c in Sources */, - B3AE1E1C2073378600AD06D4 /* m64282fp.c in Sources */, - B3AE1E172073378600AD06D4 /* transferpak.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B90B1DED137100602746 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3A30320207401BB008C1955 /* ConvertImage.cpp in Sources */, - B3A30319207401BB008C1955 /* BMGImage.c in Sources */, - B3A30318207401BB008C1955 /* RenderTexture.cpp in Sources */, - B3A3032A207401BB008C1955 /* OGLExtensions.cpp in Sources */, - B3A3031A207401BB008C1955 /* OGLCombiner.cpp in Sources */, - B3A3031D207401BB008C1955 /* Render.cpp in Sources */, - B3A3031C207401BB008C1955 /* TextureFilters.cpp in Sources */, - B3A30328207401BB008C1955 /* Config.cpp in Sources */, - B3A30321207401BB008C1955 /* Debugger.cpp in Sources */, - B3A3031E207401BB008C1955 /* Blender.cpp in Sources */, - B3A30331207401BB008C1955 /* BMGUtils.c in Sources */, - B3A30317207401BB008C1955 /* OGLRender.cpp in Sources */, - B3A30337207401BB008C1955 /* RSP_Parser.cpp in Sources */, - B3A30336207401BB008C1955 /* ConvertImage16.cpp in Sources */, - B3A30323207401BB008C1955 /* FrameBuffer.cpp in Sources */, - B3A3032C207401BB008C1955 /* TextureFilters_hq4x.cpp in Sources */, - B3A30325207401BB008C1955 /* GraphicsContext.cpp in Sources */, - B3A30326207401BB008C1955 /* DeviceBuilder.cpp in Sources */, - B3A30329207401BB008C1955 /* Video.cpp in Sources */, - B3A3032F207401BB008C1955 /* RenderBase.cpp in Sources */, - B3A30322207401BB008C1955 /* TextureFilters_2xsai.cpp in Sources */, - B3A3031B207401BB008C1955 /* TextureFilters_hq2x.cpp in Sources */, - B3A30335207401BB008C1955 /* OGLRenderExt.cpp in Sources */, - B3A30339207401BB008C1955 /* TextureManager.cpp in Sources */, - B3A30324207401BB008C1955 /* Combiner.cpp in Sources */, - B3A30338207401BB008C1955 /* SDLStubs.m in Sources */, - B3A30327207401BB008C1955 /* bmp.c in Sources */, - B3A30332207401BB008C1955 /* OGLTexture.cpp in Sources */, - B3A30330207401BB008C1955 /* osal_dynamiclib_unix.c in Sources */, - B3A3031F207401BB008C1955 /* osal_files_unix.c in Sources */, - B3A3032E207401BB008C1955 /* VectorMath.cpp in Sources */, - B3A30316207401BB008C1955 /* RSP_S2DEX.cpp in Sources */, - B3A3032B207401BB008C1955 /* Texture.cpp in Sources */, - B3A3032D207401BB008C1955 /* OGLGraphicsContext.cpp in Sources */, - B3A30333207401BB008C1955 /* RenderExt.cpp in Sources */, - B3A30334207401BB008C1955 /* pngrw.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B9431DED13A200602746 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C83E22279618AD0020824C /* hvqm.c in Sources */, - B3AE1F5220733D6700AD06D4 /* alist_audio.c in Sources */, - B3AE1F5320733D6700AD06D4 /* alist_naudio.c in Sources */, - B3AE1F5420733D6700AD06D4 /* alist_nead.c in Sources */, - B3AE1F5520733D6700AD06D4 /* alist.c in Sources */, - B3AE1F5620733D6700AD06D4 /* audio.c in Sources */, - B3AE1F5720733D6700AD06D4 /* cicx105.c in Sources */, - B3AE1F5820733D6700AD06D4 /* hle.c in Sources */, - B3AE1F5920733D6700AD06D4 /* jpeg.c in Sources */, - B3AE1F5A20733D6700AD06D4 /* memory.c in Sources */, - B3AE1F5B20733D6700AD06D4 /* mp3.c in Sources */, - B3AE1F5C20733D6700AD06D4 /* musyx.c in Sources */, - B3AE1F5D20733D6700AD06D4 /* osal_dynamiclib_unix.c in Sources */, - B3AE1F5E20733D6700AD06D4 /* plugin.c in Sources */, - B3AE1F5F20733D6700AD06D4 /* re2.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3B3B9561DED144100602746 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3AE1F6320733DC600AD06D4 /* add.c in Sources */, - B3AE1F6420733DC600AD06D4 /* divide.c in Sources */, - B3AE1F6520733DC600AD06D4 /* logical.c in Sources */, - B3AE1F6620733DC600AD06D4 /* multiply.c in Sources */, - B3AE1F6720733DC600AD06D4 /* select.c in Sources */, - B3AE1F6820733DC600AD06D4 /* vu.c in Sources */, - B3AE1F6020733DB300AD06D4 /* module.c in Sources */, - B3AE1F6120733DB300AD06D4 /* osal_dynamiclib_unix.c in Sources */, - B3AE1F6220733DB300AD06D4 /* su.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DFB6017B2038AD12001E70F1 /* Sources */ = { + DFB6017B2038AD12001E70F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -5851,7 +4532,6 @@ DFB604AE2038BBD5001E70F1 /* opengl_BufferManipulationObjectFactory.cpp in Sources */, B3C3F44B21A9CBAA00EFB09C /* L3D.cpp in Sources */, B3C3F41B21A9CBAA00EFB09C /* F5Indi_Naboo.cpp in Sources */, - B35B3151206C7DF600AEAF88 /* 3DMathNeon.cpp in Sources */, B3C3F43721A9CBAA00EFB09C /* ZSort.cpp in Sources */, DFB603C82038B70E001E70F1 /* CombinerKey.cpp in Sources */, DFB603C42038B704001E70F1 /* Combiner.cpp in Sources */, @@ -5862,6 +4542,7 @@ B3C3F40B21A9CBAA00EFB09C /* F3DEX2.cpp in Sources */, B3C3F45121A9CBAA00EFB09C /* L3DEX2.cpp in Sources */, DFB604742038BB0A001E70F1 /* Context.cpp in Sources */, + B3919A32292C3CDE00519575 /* RSP_LoadMatrixNeon.cpp in Sources */, DFB604722038BB0A001E70F1 /* CombinerProgram.cpp in Sources */, DFB6041A2038BA3C001E70F1 /* NoiseTexture.cpp in Sources */, DFB6044E2038BA94001E70F1 /* VI.cpp in Sources */, @@ -5877,6 +4558,7 @@ DFB6045B2038BAB8001E70F1 /* ColorBufferToRDRAM.cpp in Sources */, DFB604522038BA9D001E70F1 /* ZlutTexture.cpp in Sources */, DFB604782038BB0B001E70F1 /* ObjectHandle.cpp in Sources */, + B3919A33292C3CF600519575 /* 3DMathNeon.cpp in Sources */, DFB606152038BD4E001E70F1 /* CommonAPIImpl_mupenplus.cpp in Sources */, DFB6042D2038BA67001E70F1 /* RSP.cpp in Sources */, DFB606122038BD4E001E70F1 /* Config_mupenplus.cpp in Sources */, @@ -5920,6 +4602,7 @@ DFB603DE2038B9CF001E70F1 /* DebugDump.cpp in Sources */, DFB603D02038B980001E70F1 /* CommonPluginAPI.cpp in Sources */, DFB603F22038B9F0001E70F1 /* FrameBuffer.cpp in Sources */, + B3919A31292C3CB600519575 /* CRC_OPT_NEON.cpp in Sources */, DFB6043A2038BA86001E70F1 /* SoftwareRender.cpp in Sources */, DFB606142038BD4E001E70F1 /* MupenPlusAPIImpl.cpp in Sources */, B35B31CE206CA72800AEAF88 /* xxhash.c in Sources */, @@ -5932,7 +4615,6 @@ DFB604422038BA86001E70F1 /* Textures.cpp in Sources */, DFB60622203A7428001E70F1 /* osal_files_ios.mm in Sources */, DFB6041C2038BA3C001E70F1 /* PaletteTexture.cpp in Sources */, - B35B31CC206CA65A00AEAF88 /* CRC_OPT_NEON.cpp in Sources */, DFB604572038BAB8001E70F1 /* DepthBufferToRDRAM.cpp in Sources */, DFB604002038BA09001E70F1 /* GLideN64.cpp in Sources */, DFB6061A2038BD73001E70F1 /* mupen64plus_DisplayWindow.cpp in Sources */, @@ -5941,7 +4623,6 @@ DFB604B62038BBD5001E70F1 /* opengl_TextureManipulationObjectFactory.cpp in Sources */, B3EA448B206E471200E608F6 /* RSP_LoadMatrix.cpp in Sources */, B3C3F46321A9CBAA00EFB09C /* F3D.cpp in Sources */, - B35B3153206C846900AEAF88 /* RSP_LoadMatrixNeon.cpp in Sources */, B3EA448F206E473F00E608F6 /* 3DMath.cpp in Sources */, B3C3F45721A9CBAA00EFB09C /* ZSortBOSS.cpp in Sources */, DFB604B12038BBD5001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */, @@ -5952,196 +4633,49 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DFB603B02038B582001E70F1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C3F44221A9CBAA00EFB09C /* T3DUX.cpp in Sources */, - B3C3F46C21A9CBAA00EFB09C /* F3DBETA.cpp in Sources */, - DFB6048D2038BB48001E70F1 /* GLFunctions.cpp in Sources */, - DFB604BB2038BBD6001E70F1 /* opengl_BufferManipulationObjectFactory.cpp in Sources */, - B3C3F44C21A9CBAA00EFB09C /* L3D.cpp in Sources */, - B3C3F41C21A9CBAA00EFB09C /* F5Indi_Naboo.cpp in Sources */, - DFB603CA2038B70E001E70F1 /* CombinerKey.cpp in Sources */, - B3C3F43821A9CBAA00EFB09C /* ZSort.cpp in Sources */, - DFB603C62038B705001E70F1 /* Combiner.cpp in Sources */, - DFB604C42038BBD6001E70F1 /* opengl_UnbufferedDrawer.cpp in Sources */, - DFB604332038BA68001E70F1 /* PostProcessor.cpp in Sources */, - B3C3F44621A9CBAA00EFB09C /* F3DDKR.cpp in Sources */, - B3C3F45421A9CBAA00EFB09C /* Turbo3D.cpp in Sources */, - DFB604822038BB0B001E70F1 /* Context.cpp in Sources */, - B3C3F40C21A9CBAA00EFB09C /* F3DEX2.cpp in Sources */, - B3C3F45221A9CBAA00EFB09C /* L3DEX2.cpp in Sources */, - DFB604802038BB0B001E70F1 /* CombinerProgram.cpp in Sources */, - DFB604202038BA3D001E70F1 /* NoiseTexture.cpp in Sources */, - DFB604502038BA95001E70F1 /* VI.cpp in Sources */, - DFB604BF2038BBD6001E70F1 /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */, - DFB604C02038BBD6001E70F1 /* opengl_ContextImpl.cpp in Sources */, - DFB604DF2038BC0C001E70F1 /* glsl_CombinerProgramImpl.cpp in Sources */, - DFB6046B2038BAD7001E70F1 /* ClipPolygon.cpp in Sources */, - B3C3F47221A9CBFB00EFB09C /* glsl_FXAA.cpp in Sources */, - DFB604652038BAC3001E70F1 /* RDRAMtoColorBuffer.cpp in Sources */, - DFB6041E2038BA3D001E70F1 /* N64.cpp in Sources */, - DFB604C22038BBD6001E70F1 /* opengl_Parameters.cpp in Sources */, - B3C3F43021A9CBAA00EFB09C /* F3DPD.cpp in Sources */, - DFB604622038BAB8001E70F1 /* ColorBufferToRDRAM.cpp in Sources */, - DFB604542038BA9E001E70F1 /* ZlutTexture.cpp in Sources */, - DFB604862038BB0B001E70F1 /* ObjectHandle.cpp in Sources */, - DFB606192038BD4F001E70F1 /* CommonAPIImpl_mupenplus.cpp in Sources */, - B35B314A206C7C9300AEAF88 /* 3DMathNeon.cpp in Sources */, - DFB604382038BA68001E70F1 /* RSP.cpp in Sources */, - DFB606162038BD4F001E70F1 /* Config_mupenplus.cpp in Sources */, - B3C3F44E21A9CBAA00EFB09C /* F3DSETA.cpp in Sources */, - DFB604B92038BBD6001E70F1 /* opengl_Attributes.cpp in Sources */, - DFB604062038BA09001E70F1 /* gDP.cpp in Sources */, - DFB604BA2038BBD6001E70F1 /* opengl_BufferedDrawer.cpp in Sources */, - DFB604C52038BBD6001E70F1 /* opengl_Utils.cpp in Sources */, - DFB604E12038BC0C001E70F1 /* glsl_ShaderStorage.cpp in Sources */, - DFB604122038BA1B001E70F1 /* gSP.cpp in Sources */, - DFB6042F2038BA68001E70F1 /* Performance.cpp in Sources */, - DFB604E22038BC0C001E70F1 /* glsl_SpecialShadersFactory.cpp in Sources */, - B3C3F41021A9CBAA00EFB09C /* F3DEX.cpp in Sources */, - DFB6044A2038BA87001E70F1 /* TextureFilterHandler.cpp in Sources */, - DFB604352038BA68001E70F1 /* RDP.cpp in Sources */, - B3C3F41621A9CBAA00EFB09C /* F3DEX2ACCLAIM.cpp in Sources */, - B3C3F42021A9CBAA00EFB09C /* F5Rogue.cpp in Sources */, - DFB603F92038B9F0001E70F1 /* FrameBufferInfo.cpp in Sources */, - DFB603E62038B9CF001E70F1 /* Debugger.cpp in Sources */, - B3C3F42E21A9CBAA00EFB09C /* F3DGOLDEN.cpp in Sources */, - DFB604E32038BC0C001E70F1 /* glsl_Utils.cpp in Sources */, - DFB604462038BA87001E70F1 /* TexrectDrawer.cpp in Sources */, - DFB604BD2038BBD6001E70F1 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */, - B3C3F42C21A9CBAA00EFB09C /* F3DZEX2.cpp in Sources */, - DFB6046A2038BAD7001E70F1 /* DepthBufferRender.cpp in Sources */, - B34601D72081333E008C049C /* gliden_osd.cpp in Sources */, - B3C3F46221A9CBAA00EFB09C /* L3DEX.cpp in Sources */, - B3C3F44821A9CBAA00EFB09C /* S2DEX.cpp in Sources */, - DFB603F02038B9DE001E70F1 /* DisplayWindow.cpp in Sources */, - DFB604DE2038BC0C001E70F1 /* glsl_CombinerProgramBuilder.cpp in Sources */, - DFB604E02038BC0C001E70F1 /* glsl_CombinerProgramUniformFactory.cpp in Sources */, - B3EA448E206E473400E608F6 /* CRC_OPT.cpp in Sources */, - DFB6046F2038BAE1001E70F1 /* CommonAPIImpl_common.cpp in Sources */, - B3C3F45C21A9CBAA00EFB09C /* F3DEX2CBFD.cpp in Sources */, - DFB6047E2038BB0B001E70F1 /* ColorBufferReader.cpp in Sources */, - B3CB4B22206E54D20074706B /* Log_ios.mm in Sources */, - B3C3F40A21A9CBAA00EFB09C /* F3DFLX2.cpp in Sources */, - DFB604042038BA09001E70F1 /* GBI.cpp in Sources */, - DFB604142038BA1B001E70F1 /* Keys.cpp in Sources */, - DFB603E42038B9CF001E70F1 /* DebugDump.cpp in Sources */, - DFB603D12038B981001E70F1 /* CommonPluginAPI.cpp in Sources */, - DFB603F72038B9F0001E70F1 /* FrameBuffer.cpp in Sources */, - DFB604442038BA87001E70F1 /* SoftwareRender.cpp in Sources */, - DFB606182038BD4F001E70F1 /* MupenPlusAPIImpl.cpp in Sources */, - B35B31CF206CA72A00AEAF88 /* xxhash.c in Sources */, - DFB604DD2038BC0C001E70F1 /* glsl_CombinerInputs.cpp in Sources */, - DFB603D52038B98C001E70F1 /* convert.cpp in Sources */, - B3C3F41221A9CBAA00EFB09C /* F3DTEXA.cpp in Sources */, - B3C3F43E21A9CBAA00EFB09C /* F3DAM.cpp in Sources */, - DFB603D32038B989001E70F1 /* Config.cpp in Sources */, - DFB603EE2038B9DE001E70F1 /* DisplayLoadProgress.cpp in Sources */, - DFB6044C2038BA87001E70F1 /* Textures.cpp in Sources */, - DFB60623203A7429001E70F1 /* osal_files_ios.mm in Sources */, - DFB604222038BA3D001E70F1 /* PaletteTexture.cpp in Sources */, - DFB6045E2038BAB8001E70F1 /* DepthBufferToRDRAM.cpp in Sources */, - B35B31CD206CA65A00AEAF88 /* CRC_OPT_NEON.cpp in Sources */, - DFB604082038BA09001E70F1 /* GLideN64.cpp in Sources */, - DFB6061B2038BD73001E70F1 /* mupen64plus_DisplayWindow.cpp in Sources */, - B35B3149206C7C9300AEAF88 /* gSPNeon.cpp in Sources */, - DFB606112038BD41001E70F1 /* MupenPlusPluginAPI.cpp in Sources */, - DFB604C32038BBD6001E70F1 /* opengl_TextureManipulationObjectFactory.cpp in Sources */, - B35B314B206C7C9300AEAF88 /* RSP_LoadMatrixNeon.cpp in Sources */, - B3EA448C206E471300E608F6 /* RSP_LoadMatrix.cpp in Sources */, - B3C3F46421A9CBAA00EFB09C /* F3D.cpp in Sources */, - B3EA4490206E474000E608F6 /* 3DMath.cpp in Sources */, - DFB604BE2038BBD6001E70F1 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */, - B3C3F45821A9CBAA00EFB09C /* ZSortBOSS.cpp in Sources */, - DFB603E82038B9CF001E70F1 /* DepthBuffer.cpp in Sources */, - DFB604C12038BBD6001E70F1 /* opengl_GLInfo.cpp in Sources */, - DFB604BC2038BBD6001E70F1 /* opengl_CachedFunctions.cpp in Sources */, - DFB6040A2038BA09001E70F1 /* GraphicsDrawer.cpp in Sources */, - B3C3F45621A9CBAA00EFB09C /* S2DEX2.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ B31738002783F925002D3ACD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3303E4B1DED23C600896D96 /* png-iOS */; + target = B3303E4B1DED23C600896D96 /* png */; targetProxy = B31737FF2783F925002D3ACD /* PBXContainerItemProxy */; }; B34AB6002106DFFE00C45F09 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3800FF4208522DC00FA03B8 /* glidenhq-iOS */; + target = B3800FF4208522DC00FA03B8 /* glidenhq */; targetProxy = B34AB5FF2106DFFE00C45F09 /* PBXContainerItemProxy */; }; - B37263B926EA168500E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3AF702121916E60000FA7F9 /* png-tvOS */; - targetProxy = B37263B826EA168500E95488 /* PBXContainerItemProxy */; - }; B37263C126EA1EF000E95488 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3B3B85F1DECEA9100602746 /* PVMupen64PlusRspHLE-iOS */; + target = B3B3B85F1DECEA9100602746 /* PVMupen64PlusRspHLE */; targetProxy = B37263C026EA1EF000E95488 /* PBXContainerItemProxy */; }; B37263C526EA1EF000E95488 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DFB6017F2038AD13001E70F1 /* PVMupen64PlusVideoGlideN64-iOS */; + target = DFB6017F2038AD13001E70F1 /* PVMupen64PlusVideoGlideN64 */; targetProxy = B37263C426EA1EF000E95488 /* PBXContainerItemProxy */; }; B37263C926EA1EF000E95488 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - platformFilter = ios; - target = B37EFEEF1C72E63300857158 /* PVMupen64PlusVideoRice-iOS */; + platformFilters = ( + ios, + tvos, + watchos, + ); + target = B37EFEEF1C72E63300857158 /* PVMupen64PlusVideoRice */; targetProxy = B37263C826EA1EF000E95488 /* PBXContainerItemProxy */; }; B37263CD26EA1EF000E95488 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B331158B1C7309C200E9AD14 /* PVRSPCXD4-iOS */; + target = B331158B1C7309C200E9AD14 /* PVRSPCXD4 */; targetProxy = B37263CC26EA1EF000E95488 /* PBXContainerItemProxy */; }; - B37263D226EA1F1C00E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3B3B9421DED13A200602746 /* PVMupen64PlusRspHLE-tvOS */; - targetProxy = B37263D126EA1F1C00E95488 /* PBXContainerItemProxy */; - }; - B37263D626EA1F1C00E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DFB603AF2038B582001E70F1 /* PVMupen64PlusVideoGlideN64-tvOS */; - targetProxy = B37263D526EA1F1C00E95488 /* PBXContainerItemProxy */; - }; - B37263DA26EA1F1C00E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3B3B90A1DED137100602746 /* PVMupen64PlusVideoRice-tvOS */; - targetProxy = B37263D926EA1F1C00E95488 /* PBXContainerItemProxy */; - }; - B37263DE26EA1F1C00E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3B3B9551DED144100602746 /* PVRSPCXD4-tvOS */; - targetProxy = B37263DD26EA1F1C00E95488 /* PBXContainerItemProxy */; - }; - B37263E126EA280600E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3AF702121916E60000FA7F9 /* png-tvOS */; - targetProxy = B37263E026EA280600E95488 /* PBXContainerItemProxy */; - }; - B37263E426EA280E00E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3AF702121916E60000FA7F9 /* png-tvOS */; - targetProxy = B37263E326EA280E00E95488 /* PBXContainerItemProxy */; - }; B3AF701A21916E0F000FA7F9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3303E4B1DED23C600896D96 /* png-iOS */; + target = B3303E4B1DED23C600896D96 /* png */; targetProxy = B3AF701921916E0F000FA7F9 /* PBXContainerItemProxy */; }; - B3AF706121916FC7000FA7F9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3AF703A21916E87000FA7F9 /* glidenhq-tvOS */; - targetProxy = B3AF706021916FC7000FA7F9 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -6196,7 +4730,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-fno-strict-aliasing", @@ -6212,7 +4746,7 @@ ); SDKROOT = iphoneos; SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; name = Debug; @@ -6254,7 +4788,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-fno-strict-aliasing", @@ -6271,7 +4805,7 @@ SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; name = Release; @@ -6313,7 +4847,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-fno-strict-aliasing", @@ -6330,7 +4864,7 @@ SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_VERSION = 5.0; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; name = Archive; @@ -6338,6 +4872,7 @@ B324C51E2191A3FE009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -6379,7 +4914,7 @@ ); INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -6410,97 +4945,12 @@ PRODUCT_NAME = PVMupen64Plus; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - ); - USE_HEADERMAP = NO; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C51F2191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = Mupen64Plus_Prefix.pch; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Plugins/Core/src/asm_defines\"", - ); - INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - OTHER_CFLAGS = ( - "$(inherited)", - "-DM64P_PARALLEL=1", - "-DIN_OPENEMU=1", - "-DNO_ASM=1", - "-DM64P_CORE_PROTOTYPES=1", - "-DNDEBUG=1", - "-DPIC=1", - "-fvisibility=hidden", - "-ffast-math", - "-fno-strict-aliasing", - "-fomit-frame-pointer", - "-DUSE_GLES=1", - "-flto", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plus"; - PRODUCT_NAME = PVMupen64Plus; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = 3; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; USER_HEADER_SEARCH_PATHS = ( "\"$(SRCROOT)/Plugins/Core/src\"", "\"$(SRCROOT)/Compatibility/SDL\"", @@ -6515,6 +4965,7 @@ B324C5202191A3FE009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; @@ -6588,29 +5039,37 @@ PRODUCT_NAME = PVMupen64PlusVideoRice; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Archive; }; - B324C5212191A3FE009F4EDC /* Archive */ = { + B324C5222191A3FE009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -6621,78 +5080,50 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_NO_COMMON_BLOCKS = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/png\"", - ); - INFOPLIST_FILE = "PVMupen64PlusVideoRice-Info.plist"; + INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-fomit-frame-pointer", - "-fvisibility-inlines-hidden", - "-flto", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DUSE_GLES=1", - "-DNEON=1", - "-DVFP_HARD=1", - "-DSDL_VIDEO_OPENGL_ES2=1", - "-DNO_ASM", - "-DM64P_PLUGIN_PROTOTYPES", - "-DPROVENANCE", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRice"; - PRODUCT_NAME = PVMupen64PlusVideoRice; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; + PRODUCT_NAME = PVMupen64PlusRspHLE; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = 3; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Archive; }; - B324C5222191A3FE009F4EDC /* Archive */ = { + B324C5242191A3FE009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -6706,7 +5137,6 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -6714,7 +5144,8 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; + INFOPLIST_FILE = PVRSPCXD4/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( @@ -6723,35 +5154,55 @@ "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; - PRODUCT_NAME = PVMupen64PlusRspHLE; + OTHER_CFLAGS = ( + "$(inherited)", + "-ffast-math", + "-fno-strict-aliasing", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DM64P_PLUGIN_API", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; + PRODUCT_NAME = PVRSPCXD4; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Archive; }; - B324C5232191A3FE009F4EDC /* Archive */ = { + B324C5262191A3FE009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = YES; CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; @@ -6763,1336 +5214,77 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = ( + 3DMath.cpp, + RSP_LoadMatrix.cpp, + CRC_OPT.cpp, + ); + "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = ( + 3DMathNeon.cpp, + gSPNeon.cpp, + RSP_LoadMatrixNeon.cpp, + CRC_OPT_NEON.cpp, + ); + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; + GCC_UNROLL_LOOPS = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", + ); + INFOPLIST_FILE = PVMupen64PlusVideoGlideN64/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; - PRODUCT_NAME = PVMupen64PlusRspHLE; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64PlusGlideN64"; + PRODUCT_NAME = PVMupen64PlusVideoGlideN64; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = 3; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Video/gliden64/src\""; + USE_HEADERMAP = NO; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Archive; }; - B324C5242191A3FE009F4EDC /* Archive */ = { + B324C5282191A3FE009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; - INFOPLIST_FILE = PVRSPCXD4/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-ffast-math", - "-fno-strict-aliasing", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DM64P_PLUGIN_API", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; - PRODUCT_NAME = PVRSPCXD4; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5252191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; - INFOPLIST_FILE = PVRSPCXD4/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - OTHER_CFLAGS = ( - "$(inherited)", - "-ffast-math", - "-fno-strict-aliasing", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DM64P_PLUGIN_API", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; - PRODUCT_NAME = PVRSPCXD4; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5262191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = ( - 3DMath.cpp, - RSP_LoadMatrix.cpp, - CRC_OPT.cpp, - ); - "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = ( - 3DMathNeon.cpp, - gSPNeon.cpp, - RSP_LoadMatrixNeon.cpp, - CRC_OPT_NEON.cpp, - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - INFOPLIST_FILE = PVMupen64PlusVideoGlideN64/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64PlusGlideN64"; - PRODUCT_NAME = PVMupen64PlusVideoGlideN64; - PROVISIONING_PROFILE_SPECIFIER = ""; - SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Video/gliden64/src\""; - USE_HEADERMAP = NO; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5272191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - "EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvos*]" = ( - 3DMath.cpp, - RSP_LoadMatrix.cpp, - CRC_OPT.cpp, - ); - "EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvsimulator*]" = ( - 3DMathNeon.cpp, - gSPNeon.cpp, - RSP_LoadMatrixNeon.cpp, - CRC_OPT_NEON.cpp, - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( - MUPENPLUSAPI, - TXFILTER_LIB, - OS_IOS, - GLESX, - NO_FREETYPE, - ); - GCC_UNROLL_LOOPS = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVMupen64PlusVideoGlideN64/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - "OTHER_CFLAGS[sdk=appletvos*]" = ( - "-mfpu=neon", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-D__VEC4_OPT", - "-D__NEON_OPT", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64PlusGlideN64"; - PRODUCT_NAME = PVMupen64PlusVideoGlideN64; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Video/gliden64/src\""; - USE_HEADERMAP = NO; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5282191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/png\"", - ); - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-fvisibility-inlines-hidden", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lpng16", - "-lz", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C5292191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_PREPROCESSOR_DEFINITIONS = ( - TXFILTER_LIB, - OS_IOS, - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C52A2191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/png\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-fvisibility-inlines-hidden", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lpng16", - "-lz", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B324C52B2191A3FE009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_PREPROCESSOR_DEFINITIONS = ( - TXFILTER_LIB, - OS_IOS, - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3303E531DED23C700896D96 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/png\"", - ); - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-fvisibility-inlines-hidden", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lpng16", - "-lz", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2,6"; - }; - name = Debug; - }; - B3303E541DED23C700896D96 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/png\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-fvisibility-inlines-hidden", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lpng16", - "-lz", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B33115921C7309C200E9AD14 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; - INFOPLIST_FILE = PVRSPCXD4/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-ffast-math", - "-fno-strict-aliasing", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DM64P_PLUGIN_API", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; - PRODUCT_NAME = PVRSPCXD4; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B33115931C7309C200E9AD14 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; - INFOPLIST_FILE = PVRSPCXD4/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-ffast-math", - "-fno-strict-aliasing", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DM64P_PLUGIN_API", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; - PRODUCT_NAME = PVRSPCXD4; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B37EFEF51C72E63300857158 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/png\"", - ); - INFOPLIST_FILE = "PVMupen64PlusVideoRice-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/png\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DUSE_GLES=1", - "-DNEON=1", - "-DVFP_HARD=1", - "-DSDL_VIDEO_OPENGL_ES2=1", - "-DNO_ASM", - "-DM64P_PLUGIN_PROTOTYPES", - "-DPROVENANCE", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRice"; - PRODUCT_NAME = PVMupen64PlusVideoRice; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B37EFEF61C72E63300857158 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/png\"", - ); - INFOPLIST_FILE = "PVMupen64PlusVideoRice-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/png\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-fomit-frame-pointer", - "-fvisibility-inlines-hidden", - "-flto", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DUSE_GLES=1", - "-DNEON=1", - "-DVFP_HARD=1", - "-DSDL_VIDEO_OPENGL_ES2=1", - "-DNO_ASM", - "-DM64P_PLUGIN_PROTOTYPES", - "-DPROVENANCE", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRice"; - PRODUCT_NAME = PVMupen64PlusVideoRice; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B37EFF3E1C72F43400857158 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = Mupen64Plus_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Plugins/Core/src/asm_defines\"", - ); - INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DM64P_PARALLEL=1", - "-DIN_OPENEMU=1", - "-DNO_ASM=1", - "-DM64P_CORE_PROTOTYPES=1", - "-DPIC=1", - "-DUSE_GLES=1", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plus"; - PRODUCT_NAME = PVMupen64Plus; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - ); - USE_HEADERMAP = NO; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B37EFF3F1C72F43400857158 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = Mupen64Plus_Prefix.pch; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Plugins/Core/src/asm_defines\"", - ); - INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-DM64P_PARALLEL=1", - "-DIN_OPENEMU=1", - "-DNO_ASM=1", - "-DM64P_CORE_PROTOTYPES=1", - "-DNDEBUG=1", - "-DPIC=1", - "-flto", - "-fvisibility=hidden", - "-ffast-math", - "-fno-strict-aliasing", - "-fomit-frame-pointer", - "-DUSE_GLES=1", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plus"; - PRODUCT_NAME = PVMupen64Plus; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - ); - USE_HEADERMAP = NO; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B3800FFB208522DD00FA03B8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - TXFILTER_LIB, - OS_IOS, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2,6"; - }; - name = Debug; - }; - B3800FFC208522DD00FA03B8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_PREPROCESSOR_DEFINITIONS = ( - TXFILTER_LIB, - OS_IOS, - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3AF703721916E60000FA7F9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/png\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - NEW_SETTING = ""; - OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-fvisibility-inlines-hidden", - "-DPNG_ARM_NEON_OPT=0", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lpng16", - "-lz", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3AF703821916E60000FA7F9 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_SUSPICIOUS_MOVES = YES; COPY_PHASE_STRIP = NO; @@ -8106,8 +5298,8 @@ "$(inherited)", "\"$(SRCROOT)/png\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; OTHER_CFLAGS = ( "-ffast-math", "-fno-strict-aliasing", @@ -8129,73 +5321,19 @@ "-lz", ); PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; - }; - B3AF705021916E87000FA7F9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - TXFILTER_LIB, - OS_IOS, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - NEW_SETTING = ""; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; + name = Archive; }; - B3AF705121916E87000FA7F9 /* Release */ = { + B324C5292191A3FE009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -8238,144 +5376,141 @@ "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Archive; }; - B3B3B8661DECEA9100602746 /* Debug */ = { + B3303E531DED23C700896D96 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( + HEADER_SEARCH_PATHS = ( "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + "\"$(SRCROOT)/png\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; - PRODUCT_NAME = PVMupen64PlusRspHLE; - PROVISIONING_PROFILE_SPECIFIER = ""; + OTHER_CFLAGS = ( + "-ffast-math", + "-fno-strict-aliasing", + "-fvisibility=hidden", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DPNG_ARM_NEON_OPT=0", + ); + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lpng16", + "-lz", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B3B3B8671DECEA9100602746 /* Release */ = { + B3303E541DED23C700896D96 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( + HEADER_SEARCH_PATHS = ( "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + "\"$(SRCROOT)/png\"", ); MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; - PRODUCT_NAME = PVMupen64PlusRspHLE; - PROVISIONING_PROFILE_SPECIFIER = ""; + OTHER_CFLAGS = ( + "-ffast-math", + "-fno-strict-aliasing", + "-fvisibility=hidden", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DPNG_ARM_NEON_OPT=0", + ); + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fvisibility-inlines-hidden", + "-DPNG_ARM_NEON_OPT=0", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lpng16", + "-lz", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; }; name = Release; }; - B3B3B9061DED130B00602746 /* Debug */ = { + B33115921C7309C200E9AD14 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; @@ -8392,13 +5527,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = Mupen64Plus_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", @@ -8409,63 +5541,45 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Plugins/Core/src/asm_defines\"", - ); - INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; + INFOPLIST_FILE = PVRSPCXD4/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); MTL_ENABLE_DEBUG_INFO = YES; - NEW_SETTING = ""; OTHER_CFLAGS = ( "$(inherited)", - "-DM64P_PARALLEL=1", - "-DIN_OPENEMU=1", - "-DNO_ASM=1", - "-DM64P_CORE_PROTOTYPES=1", - "-DNDEBUG=1", - "-DPIC=1", - "-fvisibility=hidden", "-ffast-math", "-fno-strict-aliasing", - "-fomit-frame-pointer", - "-DUSE_GLES=1", - "-flto", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DM64P_PLUGIN_API", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plus"; - PRODUCT_NAME = PVMupen64Plus; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; + PRODUCT_NAME = PVRSPCXD4; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - ); - USE_HEADERMAP = NO; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B3B3B9071DED130B00602746 /* Release */ = { + B33115931C7309C200E9AD14 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; @@ -8483,73 +5597,54 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = NO; - GCC_PREFIX_HEADER = Mupen64Plus_Prefix.pch; - GCC_UNROLL_LOOPS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Compatibility/SDL\"", - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Plugins/Core/src/asm_defines\"", - ); - INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; + INFOPLIST_FILE = PVRSPCXD4/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; OTHER_CFLAGS = ( "$(inherited)", - "-DM64P_PARALLEL=1", - "-DIN_OPENEMU=1", - "-DNO_ASM=1", - "-DM64P_CORE_PROTOTYPES=1", - "-DNDEBUG=1", - "-DPIC=1", - "-fvisibility=hidden", "-ffast-math", "-fno-strict-aliasing", - "-fomit-frame-pointer", - "-DUSE_GLES=1", - "-flto", + "-DGCC", + "-pthread", + "-fPIC", + "-D__unix__", + "-DM64P_PLUGIN_API", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plus"; - PRODUCT_NAME = PVMupen64Plus; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; + PRODUCT_NAME = PVRSPCXD4; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Core/src\"", - "\"$(SRCROOT)/Compatibility/SDL\"", - ); - USE_HEADERMAP = NO; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - B3B3B93E1DED137100602746 /* Debug */ = { + B37EFEF51C72E63300857158 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; @@ -8569,6 +5664,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -8591,21 +5687,18 @@ ); INFOPLIST_FILE = "PVMupen64PlusVideoRice-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/png\"", + ); MTL_ENABLE_DEBUG_INFO = YES; - NEW_SETTING = ""; OTHER_CFLAGS = ( - "-ffast-math", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-fomit-frame-pointer", - "-fvisibility-inlines-hidden", - "-flto", "-DGCC", "-pthread", "-fPIC", @@ -8622,17 +5715,20 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRice"; PRODUCT_NAME = PVMupen64PlusVideoRice; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B3B3B93F1DED137100602746 /* Release */ = { + B37EFEF61C72E63300857158 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; @@ -8653,6 +5749,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -8670,14 +5767,17 @@ ); INFOPLIST_FILE = "PVMupen64PlusVideoRice-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/png\"", + ); MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; OTHER_CFLAGS = ( "-ffast-math", "-fno-strict-aliasing", @@ -8701,20 +5801,23 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRice"; PRODUCT_NAME = PVMupen64PlusVideoRice; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - B3B3B9511DED13A200602746 /* Debug */ = { + B37EFF3E1C72F43400857158 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -8722,11 +5825,8 @@ CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -8737,11 +5837,13 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = Mupen64Plus_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", @@ -8752,30 +5854,59 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Compatibility/SDL\"", + "\"$(SRCROOT)/Plugins/Core/src\"", + "\"$(SRCROOT)/Plugins/Core/src/asm_defines\"", + ); + INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); MTL_ENABLE_DEBUG_INFO = YES; - NEW_SETTING = ""; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; - PRODUCT_NAME = PVMupen64PlusRspHLE; + OTHER_CFLAGS = ( + "$(inherited)", + "-DM64P_PARALLEL=1", + "-DIN_OPENEMU=1", + "-DNO_ASM=1", + "-DM64P_CORE_PROTOTYPES=1", + "-DPIC=1", + "-DUSE_GLES=1", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plus"; + PRODUCT_NAME = PVMupen64Plus; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + USER_HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Plugins/Core/src\"", + "\"$(SRCROOT)/Compatibility/SDL\"", + ); + USE_HEADERMAP = NO; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B3B3B9521DED13A200602746 /* Release */ = { + B37EFF3F1C72F43400857158 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -8783,11 +5914,8 @@ CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -8799,228 +5927,162 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = NO; + GCC_PREFIX_HEADER = Mupen64Plus_Prefix.pch; + GCC_UNROLL_LOOPS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Compatibility/SDL\"", + "\"$(SRCROOT)/Plugins/Core/src\"", + "\"$(SRCROOT)/Plugins/Core/src/asm_defines\"", + ); + INFOPLIST_FILE = PVMupen64PlusDynamic/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; - PRODUCT_NAME = PVMupen64PlusRspHLE; + OTHER_CFLAGS = ( + "$(inherited)", + "-DM64P_PARALLEL=1", + "-DIN_OPENEMU=1", + "-DNO_ASM=1", + "-DM64P_CORE_PROTOTYPES=1", + "-DNDEBUG=1", + "-DPIC=1", + "-flto", + "-fvisibility=hidden", + "-ffast-math", + "-fno-strict-aliasing", + "-fomit-frame-pointer", + "-DUSE_GLES=1", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plus"; + PRODUCT_NAME = PVMupen64Plus; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + USER_HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Plugins/Core/src\"", + "\"$(SRCROOT)/Compatibility/SDL\"", + ); + USE_HEADERMAP = NO; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - B3B3B9711DED144100602746 /* Debug */ = { + B3800FFB208522DD00FA03B8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", + TXFILTER_LIB, + OS_IOS, ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; - INFOPLIST_FILE = PVRSPCXD4/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ/inc\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", + "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", ); + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = YES; - NEW_SETTING = ""; - OTHER_CFLAGS = ( - "$(inherited)", - "-ffast-math", - "-fno-strict-aliasing", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DM64P_PLUGIN_API", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; - PRODUCT_NAME = PVRSPCXD4; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B3B3B9721DED144100602746 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Core/src/api\""; - INFOPLIST_FILE = PVRSPCXD4/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - OTHER_CFLAGS = ( - "$(inherited)", - "-ffast-math", - "-fno-strict-aliasing", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-DM64P_PLUGIN_API", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVRSPCXD4"; - PRODUCT_NAME = PVRSPCXD4; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - DFB601852038AD13001E70F1 /* Debug */ = { + B3800FFC208522DD00FA03B8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = ( - 3DMath.cpp, - RSP_LoadMatrix.cpp, - CRC_OPT.cpp, - ); - "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = ( - 3DMathNeon.cpp, - gSPNeon.cpp, - RSP_LoadMatrixNeon.cpp, - CRC_OPT_NEON.cpp, - ); + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - "GCC_PREPROCESSOR_DEFINITIONS[sdk=*]" = ( - "DEBUG=1", - MUPENPLUSAPI, TXFILTER_LIB, - GLESX, - GL_ERROR_DEBUG, - GL_DEBUG, + OS_IOS, "$(inherited)", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ/inc\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", @@ -9036,51 +6098,101 @@ "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", ); - INFOPLIST_FILE = PVMupen64PlusVideoGlideN64/Info.plist; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B3B3B8661DECEA9100602746 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3962AEA26FBD16000FAEFC0 /* Config.xcconfig */; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64PlusGlideN64"; - PRODUCT_NAME = PVMupen64PlusVideoGlideN64; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; + PRODUCT_NAME = PVMupen64PlusRspHLE; PROVISIONING_PROFILE_SPECIFIER = ""; - SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Video/gliden64/src\""; - USE_HEADERMAP = NO; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - DFB601862038AD13001E70F1 /* Release */ = { + B3B3B8671DECEA9100602746 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; @@ -9092,64 +6204,42 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; - "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = ( - 3DMath.cpp, - RSP_LoadMatrix.cpp, - CRC_OPT.cpp, - ); - "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = ( - 3DMathNeon.cpp, - gSPNeon.cpp, - RSP_LoadMatrixNeon.cpp, - CRC_OPT_NEON.cpp, - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_UNROLL_LOOPS = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/Plugins/Video/gliden64/src/\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/BufferCopy\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/common\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/DepthBufferRender\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNHQ\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/GLideNUI\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Graphics\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/inc\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/mupenplus\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/Neon\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/osal\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/uCodes\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", - "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", - ); - INFOPLIST_FILE = PVMupen64PlusVideoGlideN64/Info.plist; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = PVMupen64PlusRspHLE/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 11.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64PlusGlideN64"; - PRODUCT_NAME = PVMupen64PlusVideoGlideN64; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64plusRspHLE"; + PRODUCT_NAME = PVMupen64PlusRspHLE; PROVISIONING_PROFILE_SPECIFIER = ""; - SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Video/gliden64/src\""; - USE_HEADERMAP = NO; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - DFB603B62038B582001E70F1 /* Debug */ = { + DFB601852038AD13001E70F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -9179,30 +6269,31 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - "EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvos*]" = ( + "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = ( 3DMath.cpp, RSP_LoadMatrix.cpp, CRC_OPT.cpp, ); - "EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvsimulator*]" = ( + "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = ( 3DMathNeon.cpp, gSPNeon.cpp, RSP_LoadMatrixNeon.cpp, CRC_OPT_NEON.cpp, ); GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( + "GCC_PREPROCESSOR_DEFINITIONS[sdk=*]" = ( "DEBUG=1", MUPENPLUSAPI, TXFILTER_LIB, - OS_IOS, GLESX, GL_ERROR_DEBUG, + GL_DEBUG, + "$(inherited)", ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9222,32 +6313,24 @@ "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", ); - INFOPLIST_FILE = "$(SRCROOT)/PVMupen64PlusVideoGlideN64/Info.plist"; + INFOPLIST_FILE = PVMupen64PlusVideoGlideN64/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = YES; - NEW_SETTING = ""; - "OTHER_CFLAGS[sdk=appletvos*]" = ( - "-mfpu=neon", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-D__VEC4_OPT", - "-D__NEON_OPT", - ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64PlusGlideN64"; PRODUCT_NAME = PVMupen64PlusVideoGlideN64; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Video/gliden64/src\""; USE_HEADERMAP = NO; VERSIONING_SYSTEM = "apple-generic"; @@ -9255,9 +6338,10 @@ }; name = Debug; }; - DFB603B72038B582001E70F1 /* Release */ = { + DFB601862038AD13001E70F1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -9289,25 +6373,19 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; - "EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvos*]" = ( + "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*]" = ( 3DMath.cpp, RSP_LoadMatrix.cpp, CRC_OPT.cpp, ); - "EXCLUDED_SOURCE_FILE_NAMES[sdk=appletvsimulator*]" = ( + "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = ( 3DMathNeon.cpp, gSPNeon.cpp, RSP_LoadMatrixNeon.cpp, CRC_OPT_NEON.cpp, ); GCC_C_LANGUAGE_STANDARD = gnu11; - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( - MUPENPLUSAPI, - TXFILTER_LIB, - OS_IOS, - GLESX, - NO_FREETYPE, - ); + GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; GCC_UNROLL_LOOPS = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -9327,32 +6405,24 @@ "\"$(SRCROOT)/Plugins/Video/gliden64/src/windows\"", "\"$(SRCROOT)/Plugins/Video/gliden64/src/xxHash\"", ); - INFOPLIST_FILE = "$(SRCROOT)/PVMupen64PlusVideoGlideN64/Info.plist"; + INFOPLIST_FILE = PVMupen64PlusVideoGlideN64/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - NEW_SETTING = ""; - "OTHER_CFLAGS[sdk=appletvos*]" = ( - "-mfpu=neon", - "-fno-strict-aliasing", - "-fvisibility=hidden", - "-DGCC", - "-pthread", - "-fPIC", - "-D__unix__", - "-D__VEC4_OPT", - "-D__NEON_OPT", - ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMupen64PlusGlideN64"; PRODUCT_NAME = PVMupen64PlusVideoGlideN64; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Plugins/Video/gliden64/src\""; USE_HEADERMAP = NO; VALIDATE_PRODUCT = YES; @@ -9374,7 +6444,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3303E521DED23C700896D96 /* Build configuration list for PBXNativeTarget "png-iOS" */ = { + B3303E521DED23C700896D96 /* Build configuration list for PBXNativeTarget "png" */ = { isa = XCConfigurationList; buildConfigurations = ( B3303E531DED23C700896D96 /* Debug */, @@ -9384,7 +6454,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33115911C7309C200E9AD14 /* Build configuration list for PBXNativeTarget "PVRSPCXD4-iOS" */ = { + B33115911C7309C200E9AD14 /* Build configuration list for PBXNativeTarget "PVRSPCXD4" */ = { isa = XCConfigurationList; buildConfigurations = ( B33115921C7309C200E9AD14 /* Debug */, @@ -9394,7 +6464,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B37EFEF71C72E63300857158 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoRice-iOS" */ = { + B37EFEF71C72E63300857158 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoRice" */ = { isa = XCConfigurationList; buildConfigurations = ( B37EFEF51C72E63300857158 /* Debug */, @@ -9404,7 +6474,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B37EFF3D1C72F43400857158 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-iOS" */ = { + B37EFF3D1C72F43400857158 /* Build configuration list for PBXNativeTarget "PVMupen64Plus" */ = { isa = XCConfigurationList; buildConfigurations = ( B37EFF3E1C72F43400857158 /* Debug */, @@ -9414,7 +6484,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3800FFD208522DD00FA03B8 /* Build configuration list for PBXNativeTarget "glidenhq-iOS" */ = { + B3800FFD208522DD00FA03B8 /* Build configuration list for PBXNativeTarget "glidenhq" */ = { isa = XCConfigurationList; buildConfigurations = ( B3800FFB208522DD00FA03B8 /* Debug */, @@ -9424,27 +6494,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3AF703621916E60000FA7F9 /* Build configuration list for PBXNativeTarget "png-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3AF703721916E60000FA7F9 /* Debug */, - B3AF703821916E60000FA7F9 /* Release */, - B324C52A2191A3FE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3AF704F21916E87000FA7F9 /* Build configuration list for PBXNativeTarget "glidenhq-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3AF705021916E87000FA7F9 /* Debug */, - B3AF705121916E87000FA7F9 /* Release */, - B324C52B2191A3FE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3B3B8651DECEA9100602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusRspHLE-iOS" */ = { + B3B3B8651DECEA9100602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusRspHLE" */ = { isa = XCConfigurationList; buildConfigurations = ( B3B3B8661DECEA9100602746 /* Debug */, @@ -9454,47 +6504,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3B3B9051DED130B00602746 /* Build configuration list for PBXNativeTarget "PVMupen64Plus-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3B3B9061DED130B00602746 /* Debug */, - B3B3B9071DED130B00602746 /* Release */, - B324C51F2191A3FE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3B3B93D1DED137100602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoRice-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3B3B93E1DED137100602746 /* Debug */, - B3B3B93F1DED137100602746 /* Release */, - B324C5212191A3FE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3B3B9501DED13A200602746 /* Build configuration list for PBXNativeTarget "PVMupen64PlusRspHLE-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3B3B9511DED13A200602746 /* Debug */, - B3B3B9521DED13A200602746 /* Release */, - B324C5232191A3FE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3B3B9701DED144100602746 /* Build configuration list for PBXNativeTarget "PVRSPCXD4-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3B3B9711DED144100602746 /* Debug */, - B3B3B9721DED144100602746 /* Release */, - B324C5252191A3FE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - DFB601872038AD13001E70F1 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoGlideN64-iOS" */ = { + DFB601872038AD13001E70F1 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoGlideN64" */ = { isa = XCConfigurationList; buildConfigurations = ( DFB601852038AD13001E70F1 /* Debug */, @@ -9504,16 +6514,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DFB603B52038B582001E70F1 /* Build configuration list for PBXNativeTarget "PVMupen64PlusVideoGlideN64-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DFB603B62038B582001E70F1 /* Debug */, - DFB603B72038B582001E70F1 /* Release */, - B324C5272191A3FE009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 089C1669FE841209C02AAC07 /* Project object */; diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64Plus.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64Plus.xcscheme index d19fc49dc1..547a26f36e 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64Plus.xcscheme +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64Plus.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B37EFF371C72F43300857158" BuildableName = "PVMupen64Plus.framework" - BlueprintName = "PVMupen64Plus-iOS" + BlueprintName = "PVMupen64Plus" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -59,7 +59,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B37EFF371C72F43300857158" BuildableName = "PVMupen64Plus.framework" - BlueprintName = "PVMupen64Plus-iOS" + BlueprintName = "PVMupen64Plus" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -75,7 +75,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B37EFF371C72F43300857158" BuildableName = "PVMupen64Plus.framework" - BlueprintName = "PVMupen64Plus-iOS" + BlueprintName = "PVMupen64Plus" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusRspHLE.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusRspHLE.xcscheme index 3b5b68c67b..f115ff58a4 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusRspHLE.xcscheme +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusRspHLE.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3B3B85F1DECEA9100602746" BuildableName = "PVMupen64PlusRspHLE.framework" - BlueprintName = "PVMupen64PlusRspHLE-iOS" + BlueprintName = "PVMupen64PlusRspHLE" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3B3B85F1DECEA9100602746" BuildableName = "PVMupen64PlusRspHLE.framework" - BlueprintName = "PVMupen64PlusRspHLE-iOS" + BlueprintName = "PVMupen64PlusRspHLE" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -61,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3B3B85F1DECEA9100602746" BuildableName = "PVMupen64PlusRspHLE.framework" - BlueprintName = "PVMupen64PlusRspHLE-iOS" + BlueprintName = "PVMupen64PlusRspHLE" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoGlideN64.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoGlideN64.xcscheme index b9633efcd0..19913081b7 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoGlideN64.xcscheme +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoGlideN64.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "DFB6017F2038AD13001E70F1" BuildableName = "PVMupen64PlusVideoGlideN64.framework" - BlueprintName = "PVMupen64PlusVideoGlideN64-iOS" + BlueprintName = "PVMupen64PlusVideoGlideN64" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "DFB6017F2038AD13001E70F1" BuildableName = "PVMupen64PlusVideoGlideN64.framework" - BlueprintName = "PVMupen64PlusVideoGlideN64-iOS" + BlueprintName = "PVMupen64PlusVideoGlideN64" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -61,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "DFB6017F2038AD13001E70F1" BuildableName = "PVMupen64PlusVideoGlideN64.framework" - BlueprintName = "PVMupen64PlusVideoGlideN64-iOS" + BlueprintName = "PVMupen64PlusVideoGlideN64" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoRice.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoRice.xcscheme index 964272a344..3632c22d20 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoRice.xcscheme +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVMupen64PlusVideoRice.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B37EFEEF1C72E63300857158" BuildableName = "PVMupen64PlusVideoRice.framework" - BlueprintName = "PVMupen64PlusVideoRice-iOS" + BlueprintName = "PVMupen64PlusVideoRice" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B37EFEEF1C72E63300857158" BuildableName = "PVMupen64PlusVideoRice.framework" - BlueprintName = "PVMupen64PlusVideoRice-iOS" + BlueprintName = "PVMupen64PlusVideoRice" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -61,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B37EFEEF1C72E63300857158" BuildableName = "PVMupen64PlusVideoRice.framework" - BlueprintName = "PVMupen64PlusVideoRice-iOS" + BlueprintName = "PVMupen64PlusVideoRice" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVRSPCXD4.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVRSPCXD4.xcscheme index 7c8c76d57e..e1ae89cf4b 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVRSPCXD4.xcscheme +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/PVRSPCXD4.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B331158B1C7309C200E9AD14" BuildableName = "PVRSPCXD4.framework" - BlueprintName = "PVRSPCXD4-iOS" + BlueprintName = "PVRSPCXD4" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B331158B1C7309C200E9AD14" BuildableName = "PVRSPCXD4.framework" - BlueprintName = "PVRSPCXD4-iOS" + BlueprintName = "PVRSPCXD4" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> @@ -61,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B331158B1C7309C200E9AD14" BuildableName = "PVRSPCXD4.framework" - BlueprintName = "PVRSPCXD4-iOS" + BlueprintName = "PVRSPCXD4" ReferencedContainer = "container:PVMupen64Plus.xcodeproj"> diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/glidenhq-iOS.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/glidenhq-iOS.xcscheme index aaf5f76a13..37db2e0a1e 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/glidenhq-iOS.xcscheme +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/glidenhq-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -29,8 +29,8 @@ @@ -65,8 +65,8 @@ diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/glidenhq-tvOS.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/glidenhq-tvOS.xcscheme deleted file mode 100644 index 547e2eeac4..0000000000 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/glidenhq-tvOS.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/png-iOS.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/png-iOS.xcscheme index e88442a793..46c3e94045 100644 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/png-iOS.xcscheme +++ b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/png-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/png-tvOS.xcscheme b/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/png-tvOS.xcscheme deleted file mode 100644 index 9336632baf..0000000000 --- a/Cores/Mupen64Plus/PVMupen64Plus.xcodeproj/xcshareddata/xcschemes/png-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Mupen64Plus/PVMupen64PlusDynamic/PVMupen64Plus.h b/Cores/Mupen64Plus/PVMupen64PlusDynamic/PVMupen64Plus.h index 775926b630..098aaba527 100644 --- a/Cores/Mupen64Plus/PVMupen64PlusDynamic/PVMupen64Plus.h +++ b/Cores/Mupen64Plus/PVMupen64PlusDynamic/PVMupen64Plus.h @@ -6,7 +6,7 @@ // Copyright © 2016 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVMupen64Plus. FOUNDATION_EXPORT double PVMupen64PlusVersionNumber; diff --git a/Cores/Mupen64Plus/PVMupen64PlusRspHLE/PVMupen64PlusRspHLE.h b/Cores/Mupen64Plus/PVMupen64PlusRspHLE/PVMupen64PlusRspHLE.h index a92bfcc63d..5aa9175b37 100644 --- a/Cores/Mupen64Plus/PVMupen64PlusRspHLE/PVMupen64PlusRspHLE.h +++ b/Cores/Mupen64Plus/PVMupen64PlusRspHLE/PVMupen64PlusRspHLE.h @@ -6,7 +6,7 @@ // Copyright © 2016 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVMupen64PlusRspHLE. FOUNDATION_EXPORT double PVMupen64PlusRspHLEVersionNumber; diff --git a/Cores/Mupen64Plus/PVMupen64PlusVideoGlideN64/PVMupen64PlusVideoGlideN64.h b/Cores/Mupen64Plus/PVMupen64PlusVideoGlideN64/PVMupen64PlusVideoGlideN64.h index 694aab7a06..1602400c34 100644 --- a/Cores/Mupen64Plus/PVMupen64PlusVideoGlideN64/PVMupen64PlusVideoGlideN64.h +++ b/Cores/Mupen64Plus/PVMupen64PlusVideoGlideN64/PVMupen64PlusVideoGlideN64.h @@ -6,7 +6,7 @@ // Copyright © 2018 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVMupen64PlusVideoGlideN64. FOUNDATION_EXPORT double PVMupen64PlusVideoGlideN64VersionNumber; diff --git a/Cores/Mupen64Plus/PVRSPCXD4/PVRSPCXD4.h b/Cores/Mupen64Plus/PVRSPCXD4/PVRSPCXD4.h index 9e6b8b6886..f82f25bdb9 100644 --- a/Cores/Mupen64Plus/PVRSPCXD4/PVRSPCXD4.h +++ b/Cores/Mupen64Plus/PVRSPCXD4/PVRSPCXD4.h @@ -6,7 +6,7 @@ // Copyright © 2016 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVRSPCXD4. FOUNDATION_EXPORT double PVRSPCXD4VersionNumber; diff --git a/Cores/Mupen64Plus/Plugins/Video/gliden64 b/Cores/Mupen64Plus/Plugins/Video/gliden64 index 1b83da205d..031aedec61 160000 --- a/Cores/Mupen64Plus/Plugins/Video/gliden64 +++ b/Cores/Mupen64Plus/Plugins/Video/gliden64 @@ -1 +1 @@ -Subproject commit 1b83da205dfb55cf642b2fbd3ca9094df3a8db6f +Subproject commit 031aedec61e827aee0972e837a7097466c131b0d diff --git a/Cores/Mupen64Plus/Plugins/Video/rice b/Cores/Mupen64Plus/Plugins/Video/rice index 08c8d28e74..6e30d43b6c 160000 --- a/Cores/Mupen64Plus/Plugins/Video/rice +++ b/Cores/Mupen64Plus/Plugins/Video/rice @@ -1 +1 @@ -Subproject commit 08c8d28e74a8fa01e371d46886fa5336b7ab5960 +Subproject commit 6e30d43b6c368207fbc29b3b473dedd3497e37b2 diff --git a/Cores/Mupen64Plus/Plugins/rsp/cxd4 b/Cores/Mupen64Plus/Plugins/rsp/cxd4 index 50a976949c..e3f3ba7738 160000 --- a/Cores/Mupen64Plus/Plugins/rsp/cxd4 +++ b/Cores/Mupen64Plus/Plugins/rsp/cxd4 @@ -1 +1 @@ -Subproject commit 50a976949cb47632eb0ae556416274cd80259234 +Subproject commit e3f3ba7738bc6b86f4c92cc8cc714ac34a16cd4c diff --git a/Cores/Mupen64Plus/mupen64plus-video-rice-dynamic/PVMupen64PlusVideoRice.h b/Cores/Mupen64Plus/mupen64plus-video-rice-dynamic/PVMupen64PlusVideoRice.h index 7a1ddfb92d..1207ee6818 100644 --- a/Cores/Mupen64Plus/mupen64plus-video-rice-dynamic/PVMupen64PlusVideoRice.h +++ b/Cores/Mupen64Plus/mupen64plus-video-rice-dynamic/PVMupen64PlusVideoRice.h @@ -6,7 +6,7 @@ // Copyright © 2016 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVMupen64PlusVideoRice. FOUNDATION_EXPORT double PVMupen64PlusVideoRiceVersionNumber; diff --git a/Cores/O2EM b/Cores/O2EM index 75ac739b37..50aecb4cbf 160000 --- a/Cores/O2EM +++ b/Cores/O2EM @@ -1 +1 @@ -Subproject commit 75ac739b374b31800ab53c7d5fa53c4538dffd80 +Subproject commit 50aecb4cbf89971a345a3818f397cc00d46dbd03 diff --git a/Cores/PPSSPP/PPSSPPGameCore.mm b/Cores/PPSSPP/PPSSPPGameCore.mm index 9a662d6988..c92cd6c882 100644 --- a/Cores/PPSSPP/PPSSPPGameCore.mm +++ b/Cores/PPSSPP/PPSSPPGameCore.mm @@ -161,8 +161,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error return YES; } -- (void)stopEmulation -{ +- (void)stopEmulation { PSP_Shutdown(); NativeShutdownGraphics(); @@ -171,13 +170,11 @@ - (void)stopEmulation [super stopEmulation]; } -- (void)resetEmulation -{ +- (void)resetEmulation { _shouldReset = YES; } -- (void)executeFrame -{ +- (void)executeFrame { if(!_isInitialized) { // This is where PPSSPP will look for ppge_atlas.zim @@ -226,8 +223,7 @@ - (void)executeFrame # pragma mark - Video -- (void)swapBuffers -{ +- (void)swapBuffers { [self.renderDelegate didRenderFrameOnAlternateThread]; } @@ -243,13 +239,11 @@ - (void)swapBuffers // [self executeFrameSkippingFrame:NO]; //} -- (CGSize)bufferSize -{ +- (CGSize)bufferSize { return CGSizeMake(RenderWidth, RenderHeight); } -- (CGSize)aspectSize -{ +- (CGSize)aspectSize { return CGSizeMake(16, 9); } @@ -257,13 +251,11 @@ - (CGRect)screenRect { return CGRectMake(0, 0, RenderWidth, RenderHeight); } -- (NSTimeInterval)frameInterval -{ +- (NSTimeInterval)frameInterval { return _frameInterval ?: 60; } -- (BOOL)rendersToOpenGL -{ +- (BOOL)rendersToOpenGL { return YES; } @@ -271,35 +263,29 @@ - (BOOL)rendersToOpenGL // return YES; //} -- (const void *)videoBuffer -{ +- (const void *)videoBuffer { return NULL; } -- (GLenum)pixelFormat -{ +- (GLenum)pixelFormat { return GL_BGRA; } -- (GLenum)pixelType -{ +- (GLenum)pixelType { return GL_UNSIGNED_BYTE; } -- (GLenum)internalPixelFormat -{ +- (GLenum)internalPixelFormat { return GL_RGBA; } # pragma mark - Audio -- (NSUInteger)channelCount -{ +- (NSUInteger)channelCount { return AUDIO_CHANNELS; } -- (double)audioSampleRate -{ +- (double)audioSampleRate { return AUDIO_FREQ; } @@ -312,13 +298,9 @@ static void _PVSaveStateCallback(bool status, std::string message, void *cbUserD block(status, nil); } -- (BOOL)supportsSaveStates { - return NO; -} +- (BOOL)supportsSaveStates { return NO; } -- (BOOL)supportsRumble { - return YES; -} +- (BOOL)supportsRumble { return YES; } - (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { diff --git a/Cores/PPSSPP/PVPPSSPP.h b/Cores/PPSSPP/PVPPSSPP.h index 5116720fde..ea2470e4dc 100644 --- a/Cores/PPSSPP/PVPPSSPP.h +++ b/Cores/PPSSPP/PVPPSSPP.h @@ -6,7 +6,7 @@ // Copyright © 2021 Joseph Mattiello. All rights reserved. // -#import +#import //! Project version number for PVPPSSPP. FOUNDATION_EXPORT double PVPPSSPPVersionNumber; diff --git a/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj b/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj index 45a871e63d..f5b2f39fad 100644 --- a/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj +++ b/Cores/PPSSPP/PVPPSSPP.xcodeproj/project.pbxproj @@ -14,67 +14,7 @@ B3054326272022F000F5257D /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B305431F272022C800F5257D /* libavcodec.a */; }; B3054327272022F000F5257D /* libavformat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3054322272022C800F5257D /* libavformat.a */; }; B3054328272022F000F5257D /* libswresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B305431E272022C800F5257D /* libswresample.a */; }; - B305432B2720232900F5257D /* NativeApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CC4D25E178C7EC00094E987 /* NativeApp.cpp */; }; - B305432C2720232900F5257D /* PPSSPPGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFC1251785B6F700647A96 /* PPSSPPGameCore.mm */; }; - B305432E2720232900F5257D /* libnative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DFC271D792B0025DD88 /* libnative.a */; }; - B305432F2720232900F5257D /* libHLSL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DD4271D792B0025DD88 /* libHLSL.a */; }; - B30543302720232900F5257D /* libMoltenVK.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E55271D90A90025DD88 /* libMoltenVK.dylib */; platformFilter = ios; }; - B30543312720232900F5257D /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E37271D8C100025DD88 /* AVKit.framework */; }; - B30543322720232900F5257D /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3054321272022C800F5257D /* libavutil.a */; }; - B30543332720232900F5257D /* libOSDependent.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DDA271D792B0025DD88 /* libOSDependent.a */; }; - B30543342720232900F5257D /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E46271D8C800025DD88 /* CoreAudioKit.framework */; }; - B30543352720232900F5257D /* libavformat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3054322272022C800F5257D /* libavformat.a */; }; - B30543362720232900F5257D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E40271D8C450025DD88 /* CoreGraphics.framework */; }; - B30543372720232900F5257D /* libsfmt19937.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E02271D792B0025DD88 /* libsfmt19937.a */; }; - B30543382720232900F5257D /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E36271D8C100025DD88 /* AVFoundation.framework */; }; - B30543392720232900F5257D /* libGenericCodeGen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DD2271D792B0025DD88 /* libGenericCodeGen.a */; }; - B305433A2720232900F5257D /* libavdevice.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3054320272022C800F5257D /* libavdevice.a */; }; - B305433B2720232900F5257D /* libspirv-cross-hlsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E0C271D792B0025DD88 /* libspirv-cross-hlsl.a */; }; - B305433C2720232900F5257D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E3C271D8C330025DD88 /* Foundation.framework */; }; - B305433D2720232900F5257D /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B305431F272022C800F5257D /* libavcodec.a */; }; - B305433E2720232900F5257D /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E52271D8D610025DD88 /* MediaPlayer.framework */; }; - B305433F2720232900F5257D /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E3D271D8C330025DD88 /* CoreFoundation.framework */; }; - B30543402720232900F5257D /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B305431D272022C800F5257D /* libswscale.a */; }; - B30543412720232900F5257D /* libglslang.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DF0271D792B0025DD88 /* libglslang.a */; }; - B30543422720232900F5257D /* libspirv-cross-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E06271D792B0025DD88 /* libspirv-cross-core.a */; }; - B30543432720232900F5257D /* libxbrz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E12271D792B0025DD88 /* libxbrz.a */; }; - B30543442720232900F5257D /* libswresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B305431E272022C800F5257D /* libswresample.a */; }; - B30543452720232900F5257D /* liblibzip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DF4271D792B0025DD88 /* liblibzip.a */; }; - B30543462720232900F5257D /* libkirk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DF2271D792B0025DD88 /* libkirk.a */; }; - B30543472720232900F5257D /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E4C271D8CA00025DD88 /* CoreLocation.framework */; }; - B30543482720232900F5257D /* libzstd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DF8271D792B0025DD88 /* libzstd.a */; }; - B30543492720232900F5257D /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A11201DBD98006761ED /* PVSupport.framework */; }; - B305434A2720232900F5257D /* libSPIRV.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DDE271D792B0025DD88 /* libSPIRV.a */; }; - B305434B2720232900F5257D /* libMachineIndependent.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DD6271D792B0025DD88 /* libMachineIndependent.a */; }; - B305434C2720232900F5257D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E47271D8C800025DD88 /* CoreAudio.framework */; }; - B305434D2720232900F5257D /* libudis86.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E10271D792B0025DD88 /* libudis86.a */; }; - B305434E2720232900F5257D /* libxxhash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E14271D792B0025DD88 /* libxxhash.a */; }; - B305434F2720232900F5257D /* libpng17.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E00271D792B0025DD88 /* libpng17.a */; }; - B30543502720232900F5257D /* libCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DD0271D792B0025DD88 /* libCore.a */; }; - B30543512720232900F5257D /* libspirv-cross-glsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E0A271D792B0025DD88 /* libspirv-cross-glsl.a */; }; - B30543522720232900F5257D /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A0E201DBD8D006761ED /* CoreVideo.framework */; }; - B30543532720232900F5257D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A0C201DBD7E006761ED /* libz.tbd */; }; - B30543542720232900F5257D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E3A271D8C280025DD88 /* UIKit.framework */; }; - B30543552720232900F5257D /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E44271D8C700025DD88 /* GameController.framework */; }; - B30543562720232900F5257D /* libcityhash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DE6271D792B0025DD88 /* libcityhash.a */; }; - B30543572720232900F5257D /* libsnappy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E04271D792B0025DD88 /* libsnappy.a */; }; - B30543582720232900F5257D /* libspirv-cross-cpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E08271D792B0025DD88 /* libspirv-cross-cpp.a */; }; - B30543592720232900F5257D /* libgason.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DEE271D792B0025DD88 /* libgason.a */; }; - B305435A2720232900F5257D /* libarmips.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DE0271D792B0025DD88 /* libarmips.a */; }; - B305435B2720232900F5257D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E42271D8C4E0025DD88 /* QuartzCore.framework */; }; - B305435C2720232900F5257D /* libCommon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DCE271D792B0025DD88 /* libCommon.a */; }; - B305435D2720232900F5257D /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E58271D92700025DD88 /* CoreMedia.framework */; }; - B305435E2720232900F5257D /* libOGLCompiler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DD8271D792B0025DD88 /* libOGLCompiler.a */; }; - B305435F2720232900F5257D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A0A201DBD75006761ED /* OpenGLES.framework */; }; - B30543602720232900F5257D /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E4E271D8CAD0025DD88 /* GLKit.framework */; platformFilter = ios; }; - B30543612720232900F5257D /* libspirv-cross-msl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E0E271D792B0025DD88 /* libspirv-cross-msl.a */; }; - B30543622720232900F5257D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E50271D8D410025DD88 /* AudioToolbox.framework */; }; - B30543642720232900F5257D /* PVPPSSPP.h in Headers */ = {isa = PBXBuildFile; fileRef = B30C6D96271D74EB0025DD88 /* PVPPSSPP.h */; }; - B30543652720232900F5257D /* PPSSPPGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CAFC1241785B6F700647A96 /* PPSSPPGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B30543672720232900F5257D /* Frameworks in Resources */ = {isa = PBXBuildFile; fileRef = B30C6E23271D8B250025DD88 /* Frameworks */; }; - B30543752720289F00F5257D /* libMoltenVK.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = B30C6E55271D90A90025DD88 /* libMoltenVK.dylib */; platformFilter = ios; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; B305437827202A7200F5257D /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B305437727202A7200F5257D /* Core.plist */; }; - B305437927202A7200F5257D /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B305437727202A7200F5257D /* Core.plist */; }; B30C6D97271D74EB0025DD88 /* PVPPSSPP.h in Headers */ = {isa = PBXBuildFile; fileRef = B30C6D96271D74EB0025DD88 /* PVPPSSPP.h */; }; B30C6D98271D752A0025DD88 /* PPSSPPGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CAFC1241785B6F700647A96 /* PPSSPPGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B30C6E17271D79E60025DD88 /* libcityhash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6DE6271D792B0025DD88 /* libcityhash.a */; }; @@ -124,6 +64,8 @@ B38C4A0D201DBD7E006761ED /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A0C201DBD7E006761ED /* libz.tbd */; }; B38C4A0F201DBD8D006761ED /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A0E201DBD8D006761ED /* CoreVideo.framework */; }; B38C4A10201DBD98006761ED /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B38C4A11201DBD98006761ED /* PVSupport.framework */; }; + B3A41C20286E809A0054E9A5 /* ppsspp_libretro.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = B3E06AE3272019E700AC0257 /* ppsspp_libretro.dylib */; }; + B3A41C21286E809A0054E9A5 /* ppsspp_libretro.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3E06AE3272019E700AC0257 /* ppsspp_libretro.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; B3E06AE427201A4F00AC0257 /* libspirv-cross-cpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E08271D792B0025DD88 /* libspirv-cross-cpp.a */; }; B3E06AE527201A4F00AC0257 /* libspirv-cross-hlsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E0C271D792B0025DD88 /* libspirv-cross-hlsl.a */; }; B3E06AE627201A4F00AC0257 /* libspirv-cross-msl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30C6E0E271D792B0025DD88 /* libspirv-cross-msl.a */; }; @@ -389,6 +331,13 @@ remoteGlobalIDString = 9950BEC9AE9F4BB192E371E5; remoteInfo = zstreamtest; }; + B3A41C24286E86C40054E9A5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B30C6D9A271D792B0025DD88 /* PPSSPP.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D38D17A114BC46FBB4338E00; + remoteInfo = ALL_BUILD; + }; B3E06AE2272019E700AC0257 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B30C6D9A271D792B0025DD88 /* PPSSPP.xcodeproj */; @@ -399,17 +348,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - B30543762720289F00F5257D /* Embed Libraries */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - B30543752720289F00F5257D /* libMoltenVK.dylib in Embed Libraries */, - ); - name = "Embed Libraries"; - runOnlyForDeploymentPostprocessing = 0; - }; B36455BB278E7E3E00B6E87A /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -417,6 +355,7 @@ dstSubfolderSpec = 10; files = ( B36455BA278E7E3D00B6E87A /* PVLibrary.framework in Embed Frameworks */, + B3A41C21286E809A0054E9A5 /* ppsspp_libretro.dylib in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -448,7 +387,6 @@ B3054320272022C800F5257D /* libavdevice.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavdevice.a; path = ppsspp/ffmpeg/ios/universal/lib/libavdevice.a; sourceTree = ""; }; B3054321272022C800F5257D /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = ppsspp/ffmpeg/ios/universal/lib/libavutil.a; sourceTree = ""; }; B3054322272022C800F5257D /* libavformat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavformat.a; path = ppsspp/ffmpeg/ios/universal/lib/libavformat.a; sourceTree = ""; }; - B305436B2720232900F5257D /* PVPPSSPP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPPSSPP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B305436C2720232900F5257D /* PVPPSSPP copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PVPPSSPP copy-Info.plist"; sourceTree = ""; }; B305437727202A7200F5257D /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; B30C6D96271D74EB0025DD88 /* PVPPSSPP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVPPSSPP.h; sourceTree = SOURCE_ROOT; }; @@ -483,66 +421,6 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B305432D2720232900F5257D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B305432E2720232900F5257D /* libnative.a in Frameworks */, - B305432F2720232900F5257D /* libHLSL.a in Frameworks */, - B30543302720232900F5257D /* libMoltenVK.dylib in Frameworks */, - B30543312720232900F5257D /* AVKit.framework in Frameworks */, - B30543322720232900F5257D /* libavutil.a in Frameworks */, - B30543332720232900F5257D /* libOSDependent.a in Frameworks */, - B30543342720232900F5257D /* CoreAudioKit.framework in Frameworks */, - B30543352720232900F5257D /* libavformat.a in Frameworks */, - B30543362720232900F5257D /* CoreGraphics.framework in Frameworks */, - B30543372720232900F5257D /* libsfmt19937.a in Frameworks */, - B30543382720232900F5257D /* AVFoundation.framework in Frameworks */, - B30543392720232900F5257D /* libGenericCodeGen.a in Frameworks */, - B305433A2720232900F5257D /* libavdevice.a in Frameworks */, - B305433B2720232900F5257D /* libspirv-cross-hlsl.a in Frameworks */, - B305433C2720232900F5257D /* Foundation.framework in Frameworks */, - B305433D2720232900F5257D /* libavcodec.a in Frameworks */, - B305433E2720232900F5257D /* MediaPlayer.framework in Frameworks */, - B305433F2720232900F5257D /* CoreFoundation.framework in Frameworks */, - B30543402720232900F5257D /* libswscale.a in Frameworks */, - B30543412720232900F5257D /* libglslang.a in Frameworks */, - B30543422720232900F5257D /* libspirv-cross-core.a in Frameworks */, - B30543432720232900F5257D /* libxbrz.a in Frameworks */, - B30543442720232900F5257D /* libswresample.a in Frameworks */, - B30543452720232900F5257D /* liblibzip.a in Frameworks */, - B30543462720232900F5257D /* libkirk.a in Frameworks */, - B30543472720232900F5257D /* CoreLocation.framework in Frameworks */, - B30543482720232900F5257D /* libzstd.a in Frameworks */, - B30543492720232900F5257D /* PVSupport.framework in Frameworks */, - B305434A2720232900F5257D /* libSPIRV.a in Frameworks */, - B305434B2720232900F5257D /* libMachineIndependent.a in Frameworks */, - B305434C2720232900F5257D /* CoreAudio.framework in Frameworks */, - B305434D2720232900F5257D /* libudis86.a in Frameworks */, - B305434E2720232900F5257D /* libxxhash.a in Frameworks */, - B305434F2720232900F5257D /* libpng17.a in Frameworks */, - B30543502720232900F5257D /* libCore.a in Frameworks */, - B30543512720232900F5257D /* libspirv-cross-glsl.a in Frameworks */, - B30543522720232900F5257D /* CoreVideo.framework in Frameworks */, - B30543532720232900F5257D /* libz.tbd in Frameworks */, - B30543542720232900F5257D /* UIKit.framework in Frameworks */, - B30543552720232900F5257D /* GameController.framework in Frameworks */, - B30543562720232900F5257D /* libcityhash.a in Frameworks */, - B30543572720232900F5257D /* libsnappy.a in Frameworks */, - B30543582720232900F5257D /* libspirv-cross-cpp.a in Frameworks */, - B30543592720232900F5257D /* libgason.a in Frameworks */, - B305435A2720232900F5257D /* libarmips.a in Frameworks */, - B305435B2720232900F5257D /* QuartzCore.framework in Frameworks */, - B305435C2720232900F5257D /* libCommon.a in Frameworks */, - B305435D2720232900F5257D /* CoreMedia.framework in Frameworks */, - B305435E2720232900F5257D /* libOGLCompiler.a in Frameworks */, - B305435F2720232900F5257D /* OpenGLES.framework in Frameworks */, - B30543602720232900F5257D /* GLKit.framework in Frameworks */, - B30543612720232900F5257D /* libspirv-cross-msl.a in Frameworks */, - B30543622720232900F5257D /* AudioToolbox.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B38C49D1201DBC8C006761ED /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -582,6 +460,7 @@ B305431C2720225700F5257D /* libpng17.a in Frameworks */, B30C6E19271D79E60025DD88 /* libCore.a in Frameworks */, B30C6E28271D8BBF0025DD88 /* libspirv-cross-glsl.a in Frameworks */, + B3A41C20286E809A0054E9A5 /* ppsspp_libretro.dylib in Frameworks */, B38C4A0F201DBD8D006761ED /* CoreVideo.framework in Frameworks */, B38C4A0D201DBD7E006761ED /* libz.tbd in Frameworks */, B30C6E3B271D8C280025DD88 /* UIKit.framework in Frameworks */, @@ -633,7 +512,6 @@ isa = PBXGroup; children = ( B38C49D5201DBC8C006761ED /* PVPPSSPP.framework */, - B305436B2720232900F5257D /* PVPPSSPP.framework */, ); name = Products; sourceTree = ""; @@ -789,15 +667,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B30543632720232900F5257D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B30543642720232900F5257D /* PVPPSSPP.h in Headers */, - B30543652720232900F5257D /* PPSSPPGameCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B38C49D2201DBC8C006761ED /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -810,25 +679,6 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B30543292720232900F5257D /* PVPPSSPP-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B30543682720232900F5257D /* Build configuration list for PBXNativeTarget "PVPPSSPP-tvOS" */; - buildPhases = ( - B305432A2720232900F5257D /* Sources */, - B305432D2720232900F5257D /* Frameworks */, - B30543632720232900F5257D /* Headers */, - B30543662720232900F5257D /* Resources */, - B30543762720289F00F5257D /* Embed Libraries */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVPPSSPP-tvOS"; - productName = PVPPSSPPios; - productReference = B305436B2720232900F5257D /* PVPPSSPP.framework */; - productType = "com.apple.product-type.framework"; - }; B38C49D4201DBC8C006761ED /* PVPPSSPP */ = { isa = PBXNativeTarget; buildConfigurationList = B38C49DA201DBC8C006761ED /* Build configuration list for PBXNativeTarget "PVPPSSPP" */; @@ -842,6 +692,7 @@ buildRules = ( ); dependencies = ( + B3A41C25286E86C40054E9A5 /* PBXTargetDependency */, ); name = PVPPSSPP; productName = PVPPSSPPios; @@ -882,7 +733,6 @@ projectRoot = ""; targets = ( B38C49D4201DBC8C006761ED /* PVPPSSPP */, - B30543292720232900F5257D /* PVPPSSPP-tvOS */, ); }; /* End PBXProject section */ @@ -1167,15 +1017,6 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - B30543662720232900F5257D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B30543672720232900F5257D /* Frameworks in Resources */, - B305437927202A7200F5257D /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B38C49D3201DBC8C006761ED /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1188,15 +1029,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B305432A2720232900F5257D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B305432B2720232900F5257D /* NativeApp.cpp in Sources */, - B305432C2720232900F5257D /* PPSSPPGameCore.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B38C49D0201DBC8C006761ED /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1208,6 +1040,14 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + B3A41C25286E86C40054E9A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ALL_BUILD; + targetProxy = B3A41C24286E86C40054E9A5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 8CAFA7931785AA9900647A96 /* Debug */ = { isa = XCBuildConfiguration; @@ -1239,10 +1079,10 @@ "\"$(SRCROOT)/ppsspp/ext/native/ext/glew\"", "\"$(SRCROOT)/ppsspp/ffmpeg/macosx/x86_64/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/ppsspp/ffmpeg/macosx/x86_64/lib\""; LLVM_LTO = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 11.0; OTHER_CFLAGS = ( "-D_DEBUG", "-fno-strict-aliasing", @@ -1254,6 +1094,7 @@ "-U__STRICT_ANSI__", ); SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; USE_HEADERMAP = NO; WARNING_CFLAGS = ( "-Wno-multichar", @@ -1294,10 +1135,10 @@ "\"$(SRCROOT)/ppsspp/ext/native/ext/glew\"", "\"$(SRCROOT)/ppsspp/ffmpeg/macosx/x86_64/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/ppsspp/ffmpeg/macosx/x86_64/lib\""; LLVM_LTO = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 11.0; OTHER_CFLAGS = ( "-D_NDEBUG", "-fno-strict-aliasing", @@ -1309,6 +1150,7 @@ "-U__STRICT_ANSI__", ); SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; USE_HEADERMAP = NO; WARNING_CFLAGS = ( "-Wno-multichar", @@ -1319,157 +1161,10 @@ }; name = Release; }; - B30543692720232900F5257D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - "$(PROJECT_DIR)/ppsspp/ffmpeg/ios/universal/lib", - ); - MARKETING_VERSION = 1; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPPSSPP"; - PRODUCT_NAME = PVPPSSPP; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B305436A2720232900F5257D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - "$(PROJECT_DIR)/ppsspp/ffmpeg/ios/universal/lib", - ); - MARKETING_VERSION = 1; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPPSSPP"; - PRODUCT_NAME = PVPPSSPP; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; B38C49DB201DBC8C006761ED /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1538,6 +1233,8 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1547,6 +1244,7 @@ B38C49DC201DBC8C006761ED /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1608,6 +1306,8 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1627,15 +1327,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B30543682720232900F5257D /* Build configuration list for PBXNativeTarget "PVPPSSPP-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B30543692720232900F5257D /* Debug */, - B305436A2720232900F5257D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B38C49DA201DBC8C006761ED /* Build configuration list for PBXNativeTarget "PVPPSSPP" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Cores/PPSSPP/PVPPSSPP.xcodeproj/xcshareddata/xcschemes/PVPPSSPP-tvOS.xcscheme b/Cores/PPSSPP/PVPPSSPP.xcodeproj/xcshareddata/xcschemes/PVPPSSPP-tvOS.xcscheme deleted file mode 100644 index aca7c4c57e..0000000000 --- a/Cores/PPSSPP/PVPPSSPP.xcodeproj/xcshareddata/xcschemes/PVPPSSPP-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj b/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj index 8cfc930f95..cbd216197c 100644 --- a/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj +++ b/Cores/PPSSPP/cmake/PPSSPP.xcodeproj/project.pbxproj @@ -14835,6 +14835,7 @@ CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; + SDKROOT = iphoneos; SYMROOT = ./cmake/build; }; name = RelWithDebInfo; @@ -15681,6 +15682,7 @@ CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; + SDKROOT = iphoneos; SYMROOT = ./cmake/build; }; name = Release; @@ -16923,6 +16925,7 @@ CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; + SDKROOT = iphoneos; SYMROOT = ./cmake/build; }; name = Debug; @@ -20210,6 +20213,7 @@ CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; IPHONEOS_DEPLOYMENT_TARGET = 6.0; + SDKROOT = iphoneos; SYMROOT = ./cmake/build; }; name = MinSizeRel; diff --git a/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj b/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj index d2e422ad4e..645c067aa4 100644 --- a/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj +++ b/Cores/PicoDrive/PVPicoDrive.xcodeproj/project.pbxproj @@ -71,92 +71,17 @@ B3411BA3276B314200D85327 /* pico.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952417829B4500A212AC /* pico.c */; }; B3411BA4276B314200D85327 /* cmn.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94BE17829B4400A212AC /* cmn.c */; }; B3411BA5276B314200D85327 /* draw2.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950F17829B4500A212AC /* draw2.c */; }; - B3411BA6276B315E00D85327 /* libpicodrive-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B5C276B312C00D85327 /* libpicodrive-iOS.a */; }; - B3411BAB276B316200D85327 /* mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B954517829B4500A212AC /* mp3.c */; }; - B3411BAC276B316200D85327 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B964B17829B4600A212AC /* trees.c */; }; - B3411BAD276B316200D85327 /* draw2.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950F17829B4500A212AC /* draw2.c */; }; - B3411BAE276B316200D85327 /* z80if.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B953617829B4500A212AC /* z80if.c */; }; - B3411BAF276B316200D85327 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B965017829B4600A212AC /* zutil.c */; }; - B3411BB0276B316200D85327 /* cdd.c in Sources */ = {isa = PBXBuildFile; fileRef = 94B3AAC3183C815E009F8B71 /* cdd.c */; }; - B3411BB1276B316200D85327 /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B964D17829B4600A212AC /* uncompr.c */; }; - B3411BB2276B316200D85327 /* patch.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B951E17829B4500A212AC /* patch.c */; }; - B3411BB3276B316200D85327 /* pcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950617829B4500A212AC /* pcm.c */; }; - B3411BB4276B316200D85327 /* gzio.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B963D17829B4600A212AC /* gzio.c */; }; - B3411BB5276B316200D85327 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B953017829B4500A212AC /* sound.c */; }; - B3411BB6276B316200D85327 /* media.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B951517829B4500A212AC /* media.c */; }; - B3411BB7276B316200D85327 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B964417829B4600A212AC /* inflate.c */; }; - B3411BB8276B316200D85327 /* eeprom.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B951317829B4500A212AC /* eeprom.c */; }; - B3411BB9276B316200D85327 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B963717829B4600A212AC /* compress.c */; }; - B3411BBA276B316200D85327 /* sek.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950A17829B4500A212AC /* sek.c */; }; - B3411BBB276B316200D85327 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950B17829B4500A212AC /* debug.c */; }; - B3411BBC276B316200D85327 /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B951A17829B4500A212AC /* misc.c */; }; - B3411BBD276B316200D85327 /* sh2pico.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94DB17829B4400A212AC /* sh2pico.c */; }; - B3411BBE276B316200D85327 /* 32x.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94E017829B4400A212AC /* 32x.c */; }; - B3411BBF276B316200D85327 /* xpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952317829B4500A212AC /* xpcm.c */; }; - B3411BC0276B316200D85327 /* cmn.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94BE17829B4400A212AC /* cmn.c */; }; - B3411BC1276B316200D85327 /* videoport.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B953517829B4500A212AC /* videoport.c */; }; - B3411BC2276B316200D85327 /* famec.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94C817829B4400A212AC /* famec.c */; }; - B3411BC3276B316200D85327 /* ym2612.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B953117829B4500A212AC /* ym2612.c */; }; - B3411BC4276B316200D85327 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B963A17829B4600A212AC /* deflate.c */; }; - B3411BC5276B316200D85327 /* sh2.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94DC17829B4400A212AC /* sh2.c */; }; - B3411BC6276B316200D85327 /* cdc.c in Sources */ = {isa = PBXBuildFile; fileRef = 94B3AAC2183C815E009F8B71 /* cdc.c */; }; - B3411BC7276B316200D85327 /* gfx_dma.c in Sources */ = {isa = PBXBuildFile; fileRef = 94B3AAC9183C81BA009F8B71 /* gfx_dma.c */; }; - B3411BC8276B316200D85327 /* cd_image.c in Sources */ = {isa = PBXBuildFile; fileRef = 94B3AAC1183C815E009F8B71 /* cd_image.c */; }; - B3411BC9276B316200D85327 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952117829B4500A212AC /* memory.c */; }; - B3411BCA276B316200D85327 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B953417829B4500A212AC /* state.c */; }; - B3411BCB276B316200D85327 /* cz80.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94B017829B4400A212AC /* cz80.c */; }; - B3411BCC276B316200D85327 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B963017829B4600A212AC /* unzip.c */; }; - B3411BCD276B316200D85327 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950217829B4400A212AC /* memory.c */; }; - B3411BCE276B316200D85327 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B951617829B4500A212AC /* memory.c */; }; - B3411BCF276B316200D85327 /* eeprom_spi.c in Sources */ = {isa = PBXBuildFile; fileRef = C604DF5125C7C7E500E1FBE5 /* eeprom_spi.c */; }; - B3411BD0276B316200D85327 /* pwm.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94E417829B4400A212AC /* pwm.c */; }; - B3411BD1276B316200D85327 /* draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94E117829B4400A212AC /* draw.c */; }; - B3411BD2276B316200D85327 /* sn76496.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952E17829B4500A212AC /* sn76496.c */; }; - B3411BD3276B316200D85327 /* pico.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952217829B4500A212AC /* pico.c */; }; - B3411BD4276B316200D85327 /* mcd.c in Sources */ = {isa = PBXBuildFile; fileRef = 94E45B9B17E67B560079D59E /* mcd.c */; }; - B3411BD5276B316200D85327 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94EE17829B4400A212AC /* memory.c */; }; - B3411BD6276B316200D85327 /* cue.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94FC17829B4400A212AC /* cue.c */; }; - B3411BD7276B316200D85327 /* mode4.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B951D17829B4500A212AC /* mode4.c */; }; - B3411BD8276B316200D85327 /* svp.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94F217829B4400A212AC /* svp.c */; }; - B3411BD9276B316200D85327 /* sms.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952917829B4500A212AC /* sms.c */; }; - B3411BDA276B316200D85327 /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950417829B4400A212AC /* misc.c */; }; - B3411BDB276B316200D85327 /* ssp16.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94EF17829B4400A212AC /* ssp16.c */; }; - B3411BDC276B316200D85327 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94E317829B4400A212AC /* memory.c */; }; - B3411BDD276B316200D85327 /* sh2soc.c in Sources */ = {isa = PBXBuildFile; fileRef = 94E45B9E17E67C630079D59E /* sh2soc.c */; }; - B3411BDE276B316200D85327 /* carthw.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94E817829B4400A212AC /* carthw.c */; }; - B3411BDF276B316200D85327 /* mp3_dummy.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B954717829B4500A212AC /* mp3_dummy.c */; }; - B3411BE0276B316200D85327 /* sek.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952817829B4500A212AC /* sek.c */; }; - B3411BE1276B316200D85327 /* gfx.c in Sources */ = {isa = PBXBuildFile; fileRef = 94B3AACA183C81BA009F8B71 /* gfx.c */; }; - B3411BE2276B316200D85327 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B963817829B4600A212AC /* crc32.c */; }; - B3411BE3276B316200D85327 /* cart.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B94E617829B4400A212AC /* cart.c */; }; - B3411BE4276B316200D85327 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B964617829B4600A212AC /* inftrees.c */; }; - B3411BE6276B316200D85327 /* draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B950E17829B4500A212AC /* draw.c */; }; - B3411BE7276B316200D85327 /* mix.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952B17829B4500A212AC /* mix.c */; }; - B3411BE8276B316200D85327 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = C604DF7425C7CB6B00E1FBE5 /* libretro.c */; }; - B3411BE9276B316200D85327 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B964117829B4600A212AC /* inffast.c */; }; - B3411BEA276B316200D85327 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B963517829B4600A212AC /* adler32.c */; }; - B3411BEB276B316200D85327 /* pico.c in Sources */ = {isa = PBXBuildFile; fileRef = 946B952417829B4500A212AC /* pico.c */; }; - B3411BF4276B317400D85327 /* libpicodrive-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411BF3276B316200D85327 /* libpicodrive-tvOS.a */; }; + B3411BA6276B315E00D85327 /* libpicodrive.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B5C276B312C00D85327 /* libpicodrive.a */; }; B3547B5D205858D800CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B5C205858D800CFF7D8 /* Core.plist */; }; - B3547B5E205858D800CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B5C205858D800CFF7D8 /* Core.plist */; }; B371709E1D6CB559005D1EFF /* carthw.cfg in Resources */ = {isa = PBXBuildFile; fileRef = 946B94F317829B4400A212AC /* carthw.cfg */; }; - B371709F1D6CB55A005D1EFF /* carthw.cfg in Resources */ = {isa = PBXBuildFile; fileRef = 946B94F317829B4400A212AC /* carthw.cfg */; }; B37937B01D6BCF8100EBAE81 /* PicoDrive.h in Headers */ = {isa = PBXBuildFile; fileRef = B37937AE1D6BCF8100EBAE81 /* PicoDrive.h */; settings = {ATTRIBUTES = (Public, ); }; }; B37937B41D6BCFB400EBAE81 /* PicodriveGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 82287C33101E9DB40072172D /* PicodriveGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B37937FB1D6BDF5A00EBAE81 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37937FA1D6BDF5A00EBAE81 /* Foundation.framework */; }; B37937FD1D6BDF5F00EBAE81 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37937FC1D6BDF5F00EBAE81 /* libz.tbd */; }; B3A3E9871D6BFF6F00CCD7C8 /* PicodriveGameCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 82287C34101E9DB40072172D /* PicodriveGameCore.m */; }; - B3A3E9C91D6BFF6F00CCD7C8 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37937FC1D6BDF5F00EBAE81 /* libz.tbd */; }; - B3A3E9CA1D6BFF6F00CCD7C8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37937FA1D6BDF5A00EBAE81 /* Foundation.framework */; }; - B3A3E9CD1D6BFF6F00CCD7C8 /* PicoDrive.h in Headers */ = {isa = PBXBuildFile; fileRef = B37937AE1D6BCF8100EBAE81 /* PicoDrive.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3A3E9CF1D6BFF6F00CCD7C8 /* PicodriveGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 82287C33101E9DB40072172D /* PicodriveGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3D2E38A1D6E7E5C0058544D /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D2E3891D6E7E5C0058544D /* PVSupport.framework */; }; - B3D2E38B1D6E7E650058544D /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A3E9D61D6BFFEC00CCD7C8 /* PVSupport.framework */; }; C604DF5225C7C7E500E1FBE5 /* eeprom_spi.h in Headers */ = {isa = PBXBuildFile; fileRef = C604DF5025C7C7E500E1FBE5 /* eeprom_spi.h */; }; - C604DF5325C7C7E500E1FBE5 /* eeprom_spi.h in Headers */ = {isa = PBXBuildFile; fileRef = C604DF5025C7C7E500E1FBE5 /* eeprom_spi.h */; }; C604DF8525C7CB6B00E1FBE5 /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = C604DF7525C7CB6B00E1FBE5 /* libretro.h */; }; - C604DF8625C7CB6B00E1FBE5 /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = C604DF7525C7CB6B00E1FBE5 /* libretro.h */; }; - C610F1AF25CF2A0A006D4A63 /* PicodriveGameCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 82287C34101E9DB40072172D /* PicodriveGameCore.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -167,13 +92,6 @@ remoteGlobalIDString = B3411B5B276B312C00D85327; remoteInfo = "picodrive-iOS"; }; - B3411BF5276B317400D85327 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3411BA9276B316200D85327; - remoteInfo = "picodrive-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -186,15 +104,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3411BED276B316200D85327 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -608,17 +517,15 @@ 94E45B9B17E67B560079D59E /* mcd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mcd.c; sourceTree = ""; }; 94E45B9E17E67C630079D59E /* sh2soc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sh2soc.c; sourceTree = ""; }; B3411B57276B30AC00D85327 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3411B5C276B312C00D85327 /* libpicodrive-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpicodrive-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3411BF3276B316200D85327 /* libpicodrive-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpicodrive-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3411B5C276B312C00D85327 /* libpicodrive.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpicodrive.a; sourceTree = BUILT_PRODUCTS_DIR; }; B34CB0EB2274B173009134B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B3547B5C205858D800CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; - B37937AC1D6BCF8100EBAE81 /* PicoDrive.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PicoDrive.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B37937AC1D6BCF8100EBAE81 /* PVPicoDrive.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPicoDrive.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B37937AE1D6BCF8100EBAE81 /* PicoDrive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PicoDrive.h; sourceTree = ""; }; B37937AF1D6BCF8100EBAE81 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B37937F81D6BDF4E00EBAE81 /* PVSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PVSupport.framework; path = "../PVSupport/build/Debug-iphoneos/PVSupport.framework"; sourceTree = ""; }; B37937FA1D6BDF5A00EBAE81 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B37937FC1D6BDF5F00EBAE81 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; - B3A3E9D41D6BFF6F00CCD7C8 /* PicoDrive.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PicoDrive.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3A3E9D61D6BFFEC00CCD7C8 /* PVSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PVSupport.framework; path = "../../../Library/Developer/Xcode/DerivedData/Provenance-cqyrqlnsqskspscgaptpbmkqmvze/Build/Products/Debug-appletvsimulator/PVSupport.framework"; sourceTree = ""; }; B3D2E3891D6E7E5C0058544D /* PVSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PVSupport.framework; path = "../../../Library/Developer/Xcode/DerivedData/Provenance-cqyrqlnsqskspscgaptpbmkqmvze/Build/Products/Debug-iphonesimulator/PVSupport.framework"; sourceTree = ""; }; C604DF5025C7C7E500E1FBE5 /* eeprom_spi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eeprom_spi.h; sourceTree = ""; }; @@ -636,35 +543,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3411BEC276B316200D85327 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B37937A81D6BCF8100EBAE81 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( B3D2E38A1D6E7E5C0058544D /* PVSupport.framework in Frameworks */, - B3411BA6276B315E00D85327 /* libpicodrive-iOS.a in Frameworks */, + B3411BA6276B315E00D85327 /* libpicodrive.a in Frameworks */, B37937FD1D6BDF5F00EBAE81 /* libz.tbd in Frameworks */, B37937FB1D6BDF5A00EBAE81 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3A3E9C81D6BFF6F00CCD7C8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D2E38B1D6E7E650058544D /* PVSupport.framework in Frameworks */, - B3A3E9C91D6BFF6F00CCD7C8 /* libz.tbd in Frameworks */, - B3A3E9CA1D6BFF6F00CCD7C8 /* Foundation.framework in Frameworks */, - B3411BF4276B317400D85327 /* libpicodrive-tvOS.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -711,10 +600,8 @@ 19C28FB8FE9D52D311CA2CBB /* Products */ = { isa = PBXGroup; children = ( - B37937AC1D6BCF8100EBAE81 /* PicoDrive.framework */, - B3A3E9D41D6BFF6F00CCD7C8 /* PicoDrive.framework */, - B3411B5C276B312C00D85327 /* libpicodrive-iOS.a */, - B3411BF3276B316200D85327 /* libpicodrive-tvOS.a */, + B37937AC1D6BCF8100EBAE81 /* PVPicoDrive.framework */, + B3411B5C276B312C00D85327 /* libpicodrive.a */, ); name = Products; sourceTree = ""; @@ -1533,23 +1420,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3A3E9CC1D6BFF6F00CCD7C8 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C604DF5325C7C7E500E1FBE5 /* eeprom_spi.h in Headers */, - C604DF8625C7CB6B00E1FBE5 /* libretro.h in Headers */, - B3A3E9CD1D6BFF6F00CCD7C8 /* PicoDrive.h in Headers */, - B3A3E9CF1D6BFF6F00CCD7C8 /* PicodriveGameCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B3411B5B276B312C00D85327 /* picodrive-iOS */ = { + B3411B5B276B312C00D85327 /* picodrive */ = { isa = PBXNativeTarget; - buildConfigurationList = B3411B62276B312C00D85327 /* Build configuration list for PBXNativeTarget "picodrive-iOS" */; + buildConfigurationList = B3411B62276B312C00D85327 /* Build configuration list for PBXNativeTarget "picodrive" */; buildPhases = ( B3411B58276B312C00D85327 /* Sources */, B3411B59276B312C00D85327 /* Frameworks */, @@ -1559,31 +1435,14 @@ ); dependencies = ( ); - name = "picodrive-iOS"; - productName = picodrive; - productReference = B3411B5C276B312C00D85327 /* libpicodrive-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3411BA9276B316200D85327 /* picodrive-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3411BEF276B316200D85327 /* Build configuration list for PBXNativeTarget "picodrive-tvOS" */; - buildPhases = ( - B3411BAA276B316200D85327 /* Sources */, - B3411BEC276B316200D85327 /* Frameworks */, - B3411BED276B316200D85327 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "picodrive-tvOS"; + name = picodrive; productName = picodrive; - productReference = B3411BF3276B316200D85327 /* libpicodrive-tvOS.a */; + productReference = B3411B5C276B312C00D85327 /* libpicodrive.a */; productType = "com.apple.product-type.library.static"; }; - B37937AB1D6BCF8100EBAE81 /* PVPicoDrive-iOS */ = { + B37937AB1D6BCF8100EBAE81 /* PVPicoDrive */ = { isa = PBXNativeTarget; - buildConfigurationList = B37937B11D6BCF8100EBAE81 /* Build configuration list for PBXNativeTarget "PVPicoDrive-iOS" */; + buildConfigurationList = B37937B11D6BCF8100EBAE81 /* Build configuration list for PBXNativeTarget "PVPicoDrive" */; buildPhases = ( B37937A91D6BCF8100EBAE81 /* Headers */, B37937A71D6BCF8100EBAE81 /* Sources */, @@ -1595,28 +1454,9 @@ dependencies = ( B3411BA8276B315E00D85327 /* PBXTargetDependency */, ); - name = "PVPicoDrive-iOS"; + name = PVPicoDrive; productName = PicoDrive; - productReference = B37937AC1D6BCF8100EBAE81 /* PicoDrive.framework */; - productType = "com.apple.product-type.framework"; - }; - B3A3E9851D6BFF6F00CCD7C8 /* PVPicoDrive-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3A3E9D11D6BFF6F00CCD7C8 /* Build configuration list for PBXNativeTarget "PVPicoDrive-tvOS" */; - buildPhases = ( - B3A3E9CC1D6BFF6F00CCD7C8 /* Headers */, - B3A3E9861D6BFF6F00CCD7C8 /* Sources */, - B3A3E9C81D6BFF6F00CCD7C8 /* Frameworks */, - B3A3E9D01D6BFF6F00CCD7C8 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3411BF6276B317400D85327 /* PBXTargetDependency */, - ); - name = "PVPicoDrive-tvOS"; - productName = PicoDrive; - productReference = B3A3E9D41D6BFF6F00CCD7C8 /* PicoDrive.framework */; + productReference = B37937AC1D6BCF8100EBAE81 /* PVPicoDrive.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -1637,9 +1477,6 @@ CreatedOnToolsVersion = 8.0; ProvisioningStyle = Manual; }; - B3A3E9851D6BFF6F00CCD7C8 = { - DevelopmentTeam = V78REPMQFZ; - }; }; }; buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVPicoDrive" */; @@ -1654,10 +1491,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B37937AB1D6BCF8100EBAE81 /* PVPicoDrive-iOS */, - B3A3E9851D6BFF6F00CCD7C8 /* PVPicoDrive-tvOS */, - B3411B5B276B312C00D85327 /* picodrive-iOS */, - B3411BA9276B316200D85327 /* picodrive-tvOS */, + B37937AB1D6BCF8100EBAE81 /* PVPicoDrive */, + B3411B5B276B312C00D85327 /* picodrive */, ); }; /* End PBXProject section */ @@ -1672,15 +1507,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3A3E9D01D6BFF6F00CCD7C8 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B371709F1D6CB55A005D1EFF /* carthw.cfg in Resources */, - B3547B5E205858D800CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -1755,77 +1581,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3411BAA276B316200D85327 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3411BAB276B316200D85327 /* mp3.c in Sources */, - B3411BAC276B316200D85327 /* trees.c in Sources */, - B3411BAD276B316200D85327 /* draw2.c in Sources */, - B3411BAE276B316200D85327 /* z80if.c in Sources */, - B3411BAF276B316200D85327 /* zutil.c in Sources */, - B3411BB0276B316200D85327 /* cdd.c in Sources */, - B3411BB1276B316200D85327 /* uncompr.c in Sources */, - B3411BB2276B316200D85327 /* patch.c in Sources */, - B3411BB3276B316200D85327 /* pcm.c in Sources */, - B3411BB4276B316200D85327 /* gzio.c in Sources */, - B3411BB5276B316200D85327 /* sound.c in Sources */, - B3411BB6276B316200D85327 /* media.c in Sources */, - B3411BB7276B316200D85327 /* inflate.c in Sources */, - B3411BB8276B316200D85327 /* eeprom.c in Sources */, - B3411BB9276B316200D85327 /* compress.c in Sources */, - B3411BBA276B316200D85327 /* sek.c in Sources */, - B3411BBB276B316200D85327 /* debug.c in Sources */, - B3411BBC276B316200D85327 /* misc.c in Sources */, - B3411BBD276B316200D85327 /* sh2pico.c in Sources */, - B3411BBE276B316200D85327 /* 32x.c in Sources */, - B3411BBF276B316200D85327 /* xpcm.c in Sources */, - B3411BC0276B316200D85327 /* cmn.c in Sources */, - B3411BC1276B316200D85327 /* videoport.c in Sources */, - B3411BC2276B316200D85327 /* famec.c in Sources */, - B3411BC3276B316200D85327 /* ym2612.c in Sources */, - B3411BC4276B316200D85327 /* deflate.c in Sources */, - B3411BC5276B316200D85327 /* sh2.c in Sources */, - B3411BC6276B316200D85327 /* cdc.c in Sources */, - B3411BC7276B316200D85327 /* gfx_dma.c in Sources */, - B3411BC8276B316200D85327 /* cd_image.c in Sources */, - B3411BC9276B316200D85327 /* memory.c in Sources */, - B3411BCA276B316200D85327 /* state.c in Sources */, - B3411BCB276B316200D85327 /* cz80.c in Sources */, - B3411BCC276B316200D85327 /* unzip.c in Sources */, - B3411BCD276B316200D85327 /* memory.c in Sources */, - B3411BCE276B316200D85327 /* memory.c in Sources */, - B3411BCF276B316200D85327 /* eeprom_spi.c in Sources */, - B3411BD0276B316200D85327 /* pwm.c in Sources */, - B3411BD1276B316200D85327 /* draw.c in Sources */, - B3411BD2276B316200D85327 /* sn76496.c in Sources */, - B3411BD3276B316200D85327 /* pico.c in Sources */, - B3411BD4276B316200D85327 /* mcd.c in Sources */, - B3411BD5276B316200D85327 /* memory.c in Sources */, - B3411BD6276B316200D85327 /* cue.c in Sources */, - B3411BD7276B316200D85327 /* mode4.c in Sources */, - B3411BD8276B316200D85327 /* svp.c in Sources */, - B3411BD9276B316200D85327 /* sms.c in Sources */, - B3411BDA276B316200D85327 /* misc.c in Sources */, - B3411BDB276B316200D85327 /* ssp16.c in Sources */, - B3411BDC276B316200D85327 /* memory.c in Sources */, - B3411BDD276B316200D85327 /* sh2soc.c in Sources */, - B3411BDE276B316200D85327 /* carthw.c in Sources */, - B3411BDF276B316200D85327 /* mp3_dummy.c in Sources */, - B3411BE0276B316200D85327 /* sek.c in Sources */, - B3411BE1276B316200D85327 /* gfx.c in Sources */, - B3411BE2276B316200D85327 /* crc32.c in Sources */, - B3411BE3276B316200D85327 /* cart.c in Sources */, - B3411BE4276B316200D85327 /* inftrees.c in Sources */, - B3411BE6276B316200D85327 /* draw.c in Sources */, - B3411BE7276B316200D85327 /* mix.c in Sources */, - B3411BE8276B316200D85327 /* libretro.c in Sources */, - B3411BE9276B316200D85327 /* inffast.c in Sources */, - B3411BEA276B316200D85327 /* adler32.c in Sources */, - B3411BEB276B316200D85327 /* pico.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B37937A71D6BCF8100EBAE81 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1834,27 +1589,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3A3E9861D6BFF6F00CCD7C8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C610F1AF25CF2A0A006D4A63 /* PicodriveGameCore.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ B3411BA8276B315E00D85327 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3411B5B276B312C00D85327 /* picodrive-iOS */; + target = B3411B5B276B312C00D85327 /* picodrive */; targetProxy = B3411BA7276B315E00D85327 /* PBXContainerItemProxy */; }; - B3411BF6276B317400D85327 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3411BA9276B316200D85327 /* picodrive-tvOS */; - targetProxy = B3411BF5276B317400D85327 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1909,7 +1651,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ""; @@ -1957,7 +1699,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ""; @@ -2005,7 +1747,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; OTHER_CFLAGS = ""; SDKROOT = iphoneos; @@ -2015,6 +1757,7 @@ B324C4FF2191A270009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -2043,7 +1786,7 @@ ); INFOPLIST_FILE = PicoDrive/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -2060,71 +1803,14 @@ "-Wall", ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PicoDrive"; - PRODUCT_NAME = PicoDrive; + PRODUCT_NAME = PVPicoDrive; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5002191A270009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/../OpenEmu\"/**", - "\"$(SRCROOT)/openemu\"/**", - "\"$(SRCROOT)/platform/linux\"", - "\"$(SRCROOT)/pico\"", - "\"$(SRCROOT)\"", - ); - INFOPLIST_FILE = PicoDrive/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-fPIC", - "-DNDEBUG", - "-DEMU_F68K", - "-D_USE_CZ80", - "-falign-functions=2", - "-Wall", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PicoDrive"; - PRODUCT_NAME = PicoDrive; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2135,6 +1821,7 @@ B3411B63276B312C00D85327 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -2163,7 +1850,7 @@ "\"$(SRCROOT)/pico\"", "\"$(SRCROOT)\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -2175,7 +1862,9 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; }; name = Debug; @@ -2183,6 +1872,7 @@ B3411B64276B312C00D85327 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -2206,7 +1896,7 @@ "\"$(SRCROOT)/pico\"", "\"$(SRCROOT)\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -2221,7 +1911,9 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; VALIDATE_PRODUCT = YES; }; @@ -2230,6 +1922,7 @@ B3411B65276B312C00D85327 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -2253,7 +1946,7 @@ "\"$(SRCROOT)/pico\"", "\"$(SRCROOT)\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -2268,152 +1961,9 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3411BF0276B316200D85327 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/../OpenEmu\"/**", - "\"$(SRCROOT)/openemu\"/**", - "\"$(SRCROOT)/platform/linux\"", - "\"$(SRCROOT)/pico\"", - "\"$(SRCROOT)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-fPIC", - "-DEMU_F68K", - "-D_USE_CZ80", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; - }; - name = Debug; - }; - B3411BF1276B316200D85327 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/../OpenEmu\"/**", - "\"$(SRCROOT)/openemu\"/**", - "\"$(SRCROOT)/platform/linux\"", - "\"$(SRCROOT)/pico\"", - "\"$(SRCROOT)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-fPIC", - "-DNDEBUG", - "-DEMU_F68K", - "-D_USE_CZ80", - "-falign-functions=2", - "-Wall", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3411BF2276B316200D85327 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/../OpenEmu\"/**", - "\"$(SRCROOT)/openemu\"/**", - "\"$(SRCROOT)/platform/linux\"", - "\"$(SRCROOT)/pico\"", - "\"$(SRCROOT)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-fPIC", - "-DNDEBUG", - "-DEMU_F68K", - "-D_USE_CZ80", - "-falign-functions=2", - "-Wall", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; VALIDATE_PRODUCT = YES; }; @@ -2422,6 +1972,7 @@ B37937B21D6BCF8100EBAE81 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -2456,7 +2007,7 @@ ); INFOPLIST_FILE = PicoDrive/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -2471,11 +2022,14 @@ "-D_USE_CZ80", ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PicoDrive"; - PRODUCT_NAME = PicoDrive; + PRODUCT_NAME = PVPicoDrive; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -2485,6 +2039,7 @@ B37937B31D6BCF8100EBAE81 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -2513,7 +2068,7 @@ ); INFOPLIST_FILE = PicoDrive/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -2530,134 +2085,14 @@ "-Wall", ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PicoDrive"; - PRODUCT_NAME = PicoDrive; + PRODUCT_NAME = PVPicoDrive; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B3A3E9D21D6BFF6F00CCD7C8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/../OpenEmu\"/**", - "\"$(SRCROOT)/openemu\"/**", - "\"$(SRCROOT)/platform/linux\"", - "\"$(SRCROOT)/pico\"", - "\"$(SRCROOT)\"", - ); - INFOPLIST_FILE = PicoDrive/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "-fPIC", - "-DEMU_F68K", - "-D_USE_CZ80", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PicoDrive"; - PRODUCT_NAME = PicoDrive; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3A3E9D31D6BFF6F00CCD7C8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/../OpenEmu\"/**", - "\"$(SRCROOT)/openemu\"/**", - "\"$(SRCROOT)/platform/linux\"", - "\"$(SRCROOT)/pico\"", - "\"$(SRCROOT)\"", - ); - INFOPLIST_FILE = PicoDrive/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-fPIC", - "-DNDEBUG", - "-DEMU_F68K", - "-D_USE_CZ80", - "-falign-functions=2", - "-Wall", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PicoDrive"; - PRODUCT_NAME = PicoDrive; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2678,7 +2113,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3411B62276B312C00D85327 /* Build configuration list for PBXNativeTarget "picodrive-iOS" */ = { + B3411B62276B312C00D85327 /* Build configuration list for PBXNativeTarget "picodrive" */ = { isa = XCConfigurationList; buildConfigurations = ( B3411B63276B312C00D85327 /* Debug */, @@ -2688,17 +2123,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3411BEF276B316200D85327 /* Build configuration list for PBXNativeTarget "picodrive-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3411BF0276B316200D85327 /* Debug */, - B3411BF1276B316200D85327 /* Release */, - B3411BF2276B316200D85327 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B37937B11D6BCF8100EBAE81 /* Build configuration list for PBXNativeTarget "PVPicoDrive-iOS" */ = { + B37937B11D6BCF8100EBAE81 /* Build configuration list for PBXNativeTarget "PVPicoDrive" */ = { isa = XCConfigurationList; buildConfigurations = ( B37937B21D6BCF8100EBAE81 /* Debug */, @@ -2708,16 +2133,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3A3E9D11D6BFF6F00CCD7C8 /* Build configuration list for PBXNativeTarget "PVPicoDrive-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3A3E9D21D6BFF6F00CCD7C8 /* Debug */, - B3A3E9D31D6BFF6F00CCD7C8 /* Release */, - B324C5002191A270009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 089C1669FE841209C02AAC07 /* Project object */; diff --git a/Cores/PicoDrive/PVPicoDrive.xcodeproj/xcshareddata/xcschemes/PicoDrive.xcscheme b/Cores/PicoDrive/PVPicoDrive.xcodeproj/xcshareddata/xcschemes/PicoDrive.xcscheme index cf785f104d..7413196f08 100644 --- a/Cores/PicoDrive/PVPicoDrive.xcodeproj/xcshareddata/xcschemes/PicoDrive.xcscheme +++ b/Cores/PicoDrive/PVPicoDrive.xcodeproj/xcshareddata/xcschemes/PicoDrive.xcscheme @@ -15,8 +15,8 @@ @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -58,8 +58,8 @@ @@ -74,8 +74,8 @@ diff --git a/Cores/PicoDrive/PicoDrive/PicoDrive.h b/Cores/PicoDrive/PicoDrive/PicoDrive.h index 12a2c8085a..ffa6c6fe1c 100644 --- a/Cores/PicoDrive/PicoDrive/PicoDrive.h +++ b/Cores/PicoDrive/PicoDrive/PicoDrive.h @@ -6,7 +6,7 @@ // Copyright © 2016 JamSoft. All rights reserved. // -#import +#import //! Project version number for PicoDrive. FOUNDATION_EXPORT double PicoDriveVersionNumber; diff --git a/Cores/PicoDrive/PicodriveGameCore.m b/Cores/PicoDrive/PicodriveGameCore.m index 5c3775f692..d525d477be 100644 --- a/Cores/PicoDrive/PicodriveGameCore.m +++ b/Cores/PicoDrive/PicodriveGameCore.m @@ -30,7 +30,7 @@ #import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -86,9 +86,15 @@ static void video_callback(const void *data, unsigned width, unsigned height, si strongCurrent->videoWidth = width; strongCurrent->videoHeight = height; - dispatch_queue_t the_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - dispatch_apply(height, the_queue, ^(size_t y){ + static dispatch_queue_t memory_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INTERACTIVE, 0); + memory_queue = dispatch_queue_create("com.provenance.video", queueAttributes); + }); + + dispatch_apply(height, memory_queue, ^(size_t y){ const uint16_t *src = (uint16_t*)data + y * (pitch >> 1); //pitch is in bytes not pixels uint16_t *dst = strongCurrent->videoBuffer + y * 320; @@ -268,7 +274,7 @@ - (id)init } -(void)copyCartHWCFG { - NSBundle *myBundle = [NSBundle bundleForClass:[self class]]; + NSBundle *myBundle = [NSBundle bundleForClass:[PicodriveGameCore class]]; NSString *cartPath = [myBundle pathForResource:@"carthw" ofType:@"cfg"]; NSString *systemPath = self.BIOSPath; @@ -281,9 +287,9 @@ -(void)copyCartHWCFG { toPath:destinationPath error:&error]; if(!success) { - NSLog(@"Error copying carthw.cfg:\n %@", error.localizedDescription); + ELOG(@"Error copying carthw.cfg:\n %@\nsource: %@\ndestination: %@", error.localizedDescription, cartPath, destinationPath); } else { - NSLog(@"Copied default carthw.cfg file into system directory. %@", self.BIOSPath); + ILOG(@"Copied default carthw.cfg file into system directory. %@", self.BIOSPath); } } } diff --git a/Cores/Play/BuildFlags.xcconfig b/Cores/Play/BuildFlags.xcconfig index 2276b48662..7238fa7dd0 100644 --- a/Cores/Play/BuildFlags.xcconfig +++ b/Cores/Play/BuildFlags.xcconfig @@ -8,7 +8,10 @@ // All GCC_PREPROCESSOR_DEFINITIONS = $(inherited) CMAKE_INTDIR="$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" _IOP_EMULATE_MODULES=1 DISABLE_LOGGING=1 HAS_AMAZON_S3=0 PLAY_VERSION="1.3-2331-g0b8742f68" -OTHER_CFLAGS = $(inherited) -frtti +OTHER_CFLAGS = $(inherited) -frtti -mno-thumb -mfpu=neon -fno-operator-names -ffast-math -ftree-vectorize -fno-strict-aliasing -frename-registers -fpermissive -fno-operator-names -fsingle-precision-constant -DTARGET_NO_NIXPROF + +//GCC_PREPROCESSOR_DEFINITIONS[configuation=Debug] = $(inherited) -DTARGET_NO_NIXPROF +// -fno-rtti // Device GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 diff --git a/Cores/Play/PVPlay/PVPlay.h b/Cores/Play/PVPlay/PVPlay.h index 0f5e1794f0..ee78b1347b 100644 --- a/Cores/Play/PVPlay/PVPlay.h +++ b/Cores/Play/PVPlay/PVPlay.h @@ -6,7 +6,7 @@ // Copyright © 2021 Provenance. All rights reserved. // -#import +#import //! Project version number for PVPlay. FOUNDATION_EXPORT double PVPlayVersionNumber; diff --git a/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj b/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj index d48ebcff7c..6159c18dca 100644 --- a/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj +++ b/Cores/Play/PVPlayCore.xcodeproj/project.pbxproj @@ -3,11 +3,11 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 55; objects = { /* Begin PBXBuildFile section */ - B301797F207C909E0051B93D /* libplay-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libplay-iOS.a */; }; + B301797F207C909E0051B93D /* libplay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libplay.a */; }; B3135B7326E4C7020047F338 /* libchdr-static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B6626E4C6860047F338 /* libchdr-static.a */; }; B3135B7426E4C7020047F338 /* libCodeGen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4826E4C6860047F338 /* libCodeGen.a */; }; B3135B7526E4C7020047F338 /* libFramework_OpenAl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5226E4C6860047F338 /* libFramework_OpenAl.a */; }; @@ -19,7 +19,6 @@ B3135B7B26E4C7020047F338 /* libsh_openal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B6E26E4C6860047F338 /* libsh_openal.a */; }; B3135B7C26E4C7020047F338 /* libui_shared.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B7026E4C6860047F338 /* libui_shared.a */; }; B3135B7D26E4C7020047F338 /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B7226E4C6860047F338 /* libzlib.a */; }; - B3135B8626E4C9DB0047F338 /* GSH_OpenGLiOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B313567526E4C4980047F338 /* GSH_OpenGLiOS.cpp */; }; B3135B9B26E4CAD40047F338 /* PVPlayCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVPlayCore.mm */; }; B3135B9C26E4CC290047F338 /* PVPlayCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVPlayCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3135B9D26E4CC330047F338 /* PVPlayCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVPlayCore+Audio.h */; }; @@ -27,36 +26,13 @@ B3135B9F26E4CC330047F338 /* PVPlayCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVPlayCore+Saves.h */; }; B3135BA026E4CC330047F338 /* PVPlayCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVPlayCore+Controls.h */; }; B3135BA126E4CC620047F338 /* PVPlay.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVPlay.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3135BA226E4CC650047F338 /* PVPlay.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVPlay.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3135BA326E4CD080047F338 /* PVPlayCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVPlayCore.mm */; }; - B3135BA426E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.mm */; }; B3135BA526E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVPlayCore+Saves.mm */; }; - B3135BA626E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVPlayCore+Video.mm */; }; B3135BA726E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVPlayCore+Video.mm */; }; - B3135BA826E4CD600047F338 /* PVPlayCore+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVPlayCore+Audio.mm */; }; B3135BA926E4CD600047F338 /* PVPlayCore+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVPlayCore+Audio.mm */; }; B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; - B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B351223A27843318001C4B83 /* PVPlay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVPlay.mm */; }; - B351223B27843319001C4B83 /* PVPlay.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVPlay.mm */; }; - B3512240278433E4001C4B83 /* libFramework.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4C26E4C6860047F338 /* libFramework.a */; }; - B351224227843430001C4B83 /* libFramework_Amazon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4E26E4C6860047F338 /* libFramework_Amazon.a */; }; - B351224327843430001C4B83 /* libFramework_Http.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5026E4C6860047F338 /* libFramework_Http.a */; }; - B351224427843430001C4B83 /* libFramework_OpenAl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5226E4C6860047F338 /* libFramework_OpenAl.a */; }; - B351224527843430001C4B83 /* libFramework_OpenGl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5426E4C6860047F338 /* libFramework_OpenGl.a */; }; - B3512246278434B9001C4B83 /* libCodeGen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4826E4C6860047F338 /* libCodeGen.a */; }; - B3512247278434D7001C4B83 /* libchdr-static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B6626E4C6860047F338 /* libchdr-static.a */; }; - B3512248278434D7001C4B83 /* liblzma.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B6C26E4C6860047F338 /* liblzma.a */; }; - B3512249278434D7001C4B83 /* libSDWebImage_Static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5E26E4C6860047F338 /* libSDWebImage_Static.a */; }; B3512262278435B1001C4B83 /* decompress.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122572784355F001C4B83 /* decompress.c */; }; B3512263278435B1001C4B83 /* blocksort.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122502784355E001C4B83 /* blocksort.c */; }; B3512264278435B1001C4B83 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = B35122532784355E001C4B83 /* huffman.c */; }; @@ -69,11 +45,13 @@ B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; - B3B104AF218F26F400210C39 /* libplay-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libplay-tvOS.a */; }; - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; - B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B37CE7DC293F2A8B0010B746 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37CE7DB293F2A8B0010B746 /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; + B3AEDE18293F2F710050BDB6 /* libFramework_Amazon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B4E26E4C6860047F338 /* libFramework_Amazon.a */; }; + B3AEDE1B293F2FBE0050BDB6 /* libFramework_Http.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135B5026E4C6860047F338 /* libFramework_Http.a */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilters = (driverkit, ios, tvos, watchos, ); }; B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3EB8B10293F653D00BCCBAE /* PVPlayCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVPlayCore+Controls.mm */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -308,6 +286,27 @@ remoteGlobalIDString = 180B5733882C4138BCCC205A; remoteInfo = zlib; }; + B37CE7DD293F2B110010B746 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3135B2A26E4C6850047F338 /* Play.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EB114EEB04084B60B33F647D; + remoteInfo = gsh_opengl; + }; + B3AEDE16293F2F5D0050BDB6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3135B2A26E4C6850047F338 /* Play.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = F334D674251041ED82EE5739; + remoteInfo = Framework_Amazon; + }; + B3AEDE19293F2FA50050BDB6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3135B2A26E4C6850047F338 /* Play.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CFD24AE86FC4EA98CE691F1; + remoteInfo = Framework_Http; + }; B3B2546B27842B7B00F97E55 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B3C7620720783162009950E4 /* Project object */; @@ -327,19 +326,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447F8D218BEE3F00557ACE /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - B30178D3207C901D0051B93D /* libplay-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libplay-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B30178D3207C901D0051B93D /* libplay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libplay.a; sourceTree = BUILT_PRODUCTS_DIR; }; B313545126E4C4930047F338 /* android_build.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = android_build.sh; sourceTree = ""; }; B313545326E4C4930047F338 /* Play.desktop */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Play.desktop; sourceTree = ""; }; B313545526E4C4930047F338 /* deploy.keystore */ = {isa = PBXFileReference; lastKnownFileType = file; path = deploy.keystore; sourceTree = ""; }; @@ -1529,8 +1519,6 @@ B3447EB1218BC69700557ACE /* PVPlayCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVPlayCore+Audio.h"; sourceTree = ""; }; B3447EB2218BC69700557ACE /* PVPlayCore+Audio.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVPlayCore+Audio.mm"; sourceTree = ""; }; B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; - B3447EE6218BEDD200557ACE /* PVPlay.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPlay.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3447F91218BEE3F00557ACE /* libplay-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libplay-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B351224B27843535001C4B83 /* bzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bzlib.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/bzlib.c"; sourceTree = ""; }; B351224D2784355E001C4B83 /* mk251.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mk251.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/mk251.c"; sourceTree = ""; }; B351224E2784355E001C4B83 /* unzcrash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = unzcrash.c; path = "Play-/deps/Dependencies/bzip2-1.0.6/unzcrash.c"; sourceTree = ""; }; @@ -1548,6 +1536,7 @@ B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37CE7DB293F2A8B0010B746 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7621020783162009950E4 /* PVPlay.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPlay.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7621320783162009950E4 /* PVPlay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPlay.h; sourceTree = ""; }; @@ -1565,6 +1554,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B3AEDE1B293F2FBE0050BDB6 /* libFramework_Http.a in Frameworks */, + B3AEDE18293F2F710050BDB6 /* libFramework_Amazon.a in Frameworks */, B3135B7326E4C7020047F338 /* libchdr-static.a in Frameworks */, B3135B7426E4C7020047F338 /* libCodeGen.a in Frameworks */, B3135B7526E4C7020047F338 /* libFramework_OpenAl.a in Frameworks */, @@ -1579,48 +1570,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447ECA218BEDD200557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, - B3B104AF218F26F400210C39 /* libplay-tvOS.a in Frameworks */, - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447F8C218BEE3F00557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620C20783162009950E4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3512247278434D7001C4B83 /* libchdr-static.a in Frameworks */, - B3512248278434D7001C4B83 /* liblzma.a in Frameworks */, - B3512249278434D7001C4B83 /* libSDWebImage_Static.a in Frameworks */, - B3512246278434B9001C4B83 /* libCodeGen.a in Frameworks */, - B351224227843430001C4B83 /* libFramework_Amazon.a in Frameworks */, - B351224327843430001C4B83 /* libFramework_Http.a in Frameworks */, - B351224427843430001C4B83 /* libFramework_OpenAl.a in Frameworks */, - B351224527843430001C4B83 /* libFramework_OpenGl.a in Frameworks */, - B3512240278433E4001C4B83 /* libFramework.a in Frameworks */, B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B37CE7DC293F2A8B0010B746 /* OpenGL.framework in Frameworks */, B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, - B301797F207C909E0051B93D /* libplay-iOS.a in Frameworks */, + B301797F207C909E0051B93D /* libplay.a in Frameworks */, B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, @@ -3744,20 +3704,13 @@ isa = PBXGroup; children = ( B3135B4826E4C6860047F338 /* libCodeGen.a */, - B3135B4A26E4C6860047F338 /* CodeGenTestSuite */, B3135B4C26E4C6860047F338 /* libFramework.a */, B3135B4E26E4C6860047F338 /* libFramework_Amazon.a */, B3135B5026E4C6860047F338 /* libFramework_Http.a */, B3135B5226E4C6860047F338 /* libFramework_OpenAl.a */, B3135B5426E4C6860047F338 /* libFramework_OpenGl.a */, - B3135B5626E4C6860047F338 /* GsAreaTest */, - B3135B5826E4C6860047F338 /* McServTest */, - B3135B5A26E4C6860047F338 /* Play */, B3135B5C26E4C6860047F338 /* libPlayCore.a */, B3135B5E26E4C6860047F338 /* libSDWebImage_Static.a */, - B3135B6026E4C6860047F338 /* SpuTest */, - B3135B6226E4C6860047F338 /* VuTest */, - B3135B6426E4C6860047F338 /* autotest */, B3135B6626E4C6860047F338 /* libchdr-static.a */, B3135B6826E4C6860047F338 /* libgsh_opengl.a */, B3135B6A26E4C6860047F338 /* libiCade_Static.a */, @@ -3765,6 +3718,13 @@ B3135B6E26E4C6860047F338 /* libsh_openal.a */, B3135B7026E4C6860047F338 /* libui_shared.a */, B3135B7226E4C6860047F338 /* libzlib.a */, + B3135B6426E4C6860047F338 /* autotest */, + B3135B4A26E4C6860047F338 /* CodeGenTestSuite */, + B3135B5626E4C6860047F338 /* GsAreaTest */, + B3135B5826E4C6860047F338 /* McServTest */, + B3135B5A26E4C6860047F338 /* Play */, + B3135B6026E4C6860047F338 /* SpuTest */, + B3135B6226E4C6860047F338 /* VuTest */, ); name = Products; sourceTree = ""; @@ -3815,9 +3775,7 @@ isa = PBXGroup; children = ( B3C7621020783162009950E4 /* PVPlay.framework */, - B30178D3207C901D0051B93D /* libplay-iOS.a */, - B3447EE6218BEDD200557ACE /* PVPlay.framework */, - B3447F91218BEE3F00557ACE /* libplay-tvOS.a */, + B30178D3207C901D0051B93D /* libplay.a */, ); name = Products; sourceTree = ""; @@ -3835,6 +3793,7 @@ B3C7621B20783242009950E4 /* Frameworks */ = { isa = PBXGroup; children = ( + B37CE7DB293F2A8B0010B746 /* OpenGL.framework */, B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, B35E6BF1207CD2670040709A /* AudioToolbox.framework */, B35E6BEF207CD2610040709A /* AudioUnit.framework */, @@ -3864,14 +3823,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B3447ED5218BEDD200557ACE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3135BA226E4CC650047F338 /* PVPlay.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620D20783162009950E4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3888,9 +3839,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B30178D2207C901D0051B93D /* play-iOS */ = { + B30178D2207C901D0051B93D /* play */ = { isa = PBXNativeTarget; - buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "play-iOS" */; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "play" */; buildPhases = ( B30178CF207C901D0051B93D /* Sources */, B30178D0207C901D0051B93D /* Frameworks */, @@ -3899,6 +3850,9 @@ buildRules = ( ); dependencies = ( + B3AEDE1A293F2FA50050BDB6 /* PBXTargetDependency */, + B3AEDE17293F2F5D0050BDB6 /* PBXTargetDependency */, + B37CE7DE293F2B110010B746 /* PBXTargetDependency */, B3135B8826E4CA1A0047F338 /* PBXTargetDependency */, B3135B8A26E4CA1A0047F338 /* PBXTargetDependency */, B3135B8C26E4CA1A0047F338 /* PBXTargetDependency */, @@ -3910,49 +3864,14 @@ B3135B9826E4CA1A0047F338 /* PBXTargetDependency */, B3135B9A26E4CA1A0047F338 /* PBXTargetDependency */, ); - name = "play-iOS"; + name = play; productName = reicast; - productReference = B30178D3207C901D0051B93D /* libplay-iOS.a */; + productReference = B30178D3207C901D0051B93D /* libplay.a */; productType = "com.apple.product-type.library.static"; }; - B3447EC0218BEDD200557ACE /* PVPlay-tvOS */ = { + B3C7620F20783162009950E4 /* PVPlay */ = { isa = PBXNativeTarget; - buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVPlay-tvOS" */; - buildPhases = ( - B3447EC1218BEDD200557ACE /* Sources */, - B3447ECA218BEDD200557ACE /* Frameworks */, - B3447ED5218BEDD200557ACE /* Headers */, - B3447EDF218BEDD200557ACE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVPlay-tvOS"; - productName = PVReicast; - productReference = B3447EE6218BEDD200557ACE /* PVPlay.framework */; - productType = "com.apple.product-type.framework"; - }; - B3447EE8218BEE3F00557ACE /* play-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "play-tvOS" */; - buildPhases = ( - B3447EE9218BEE3F00557ACE /* Sources */, - B3447F8C218BEE3F00557ACE /* Frameworks */, - B3447F8D218BEE3F00557ACE /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "play-tvOS"; - productName = reicast; - productReference = B3447F91218BEE3F00557ACE /* libplay-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3C7620F20783162009950E4 /* PVPlay-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPlay-iOS" */; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPlay" */; buildPhases = ( B3C7620B20783162009950E4 /* Sources */, B3C7620C20783162009950E4 /* Frameworks */, @@ -3964,7 +3883,7 @@ dependencies = ( B3B2546C27842B7B00F97E55 /* PBXTargetDependency */, ); - name = "PVPlay-iOS"; + name = PVPlay; productName = PVReicast; productReference = B3C7621020783162009950E4 /* PVPlay.framework */; productType = "com.apple.product-type.framework"; @@ -4012,10 +3931,8 @@ ); projectRoot = ""; targets = ( - B3C7620F20783162009950E4 /* PVPlay-iOS */, - B3447EC0218BEDD200557ACE /* PVPlay-tvOS */, - B30178D2207C901D0051B93D /* play-iOS */, - B3447EE8218BEE3F00557ACE /* play-tvOS */, + B3C7620F20783162009950E4 /* PVPlay */, + B30178D2207C901D0051B93D /* play */, ); }; /* End PBXProject section */ @@ -4192,14 +4109,6 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - B3447EDF218BEDD200557ACE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EE2218BEDD200557ACE /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620E20783162009950E4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4226,30 +4135,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447EC1218BEDD200557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3135BA626E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */, - B3135BA426E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */, - B3135BA326E4CD080047F338 /* PVPlayCore.mm in Sources */, - B351223B27843319001C4B83 /* PVPlay.mm in Sources */, - B3135B8626E4C9DB0047F338 /* GSH_OpenGLiOS.cpp in Sources */, - B3135BA826E4CD600047F338 /* PVPlayCore+Audio.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EE9218BEE3F00557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620B20783162009950E4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B3EB8B10293F653D00BCCBAE /* PVPlayCore+Controls.mm in Sources */, B3135BA726E4CD5A0047F338 /* PVPlayCore+Video.mm in Sources */, B3135BA526E4CD500047F338 /* PVPlayCore+Saves.mm in Sources */, B351223A27843318001C4B83 /* PVPlay.mm in Sources */, @@ -4311,9 +4201,24 @@ name = zlib; targetProxy = B3135B9926E4CA1A0047F338 /* PBXContainerItemProxy */; }; + B37CE7DE293F2B110010B746 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = gsh_opengl; + targetProxy = B37CE7DD293F2B110010B746 /* PBXContainerItemProxy */; + }; + B3AEDE17293F2F5D0050BDB6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Framework_Amazon; + targetProxy = B3AEDE16293F2F5D0050BDB6 /* PBXContainerItemProxy */; + }; + B3AEDE1A293F2FA50050BDB6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Framework_Http; + targetProxy = B3AEDE19293F2FA50050BDB6 /* PBXContainerItemProxy */; + }; B3B2546C27842B7B00F97E55 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B30178D2207C901D0051B93D /* play-iOS */; + target = B30178D2207C901D0051B93D /* play */; targetProxy = B3B2546B27842B7B00F97E55 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -4341,6 +4246,7 @@ B30178DA207C901D0051B93D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -4355,13 +4261,16 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; B30178DB207C901D0051B93D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -4376,7 +4285,9 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Release; }; @@ -4387,7 +4298,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -4424,10 +4335,7 @@ GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - RELEASE, - "$(inherited)", - ); + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -4437,27 +4345,12 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -4468,6 +4361,7 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -4477,6 +4371,10 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + NDEBUG, + ); GCC_WARN_INHIBIT_ALL_WARNINGS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", @@ -4489,40 +4387,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.pvplay"; - PRODUCT_NAME = PVPlay; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Archive; - }; - B324C5032191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4531,15 +4396,17 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.pvplay"; PRODUCT_NAME = PVPlay; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Archive; }; B324C5042191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -4554,141 +4421,12 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Archive; }; - B324C5052191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; - B3447EE4218BEDD200557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.pvplay"; - PRODUCT_NAME = PVPlay; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447EE5218BEDD200557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - ); - INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.pvplay"; - PRODUCT_NAME = PVPlay; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - B3447F8F218BEE3F00557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447F90218BEE3F00557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Play-/deps/Framework/include\"", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; B3C7621620783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; @@ -4696,7 +4434,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -4748,13 +4486,13 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -4768,7 +4506,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -4805,10 +4543,7 @@ GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - RELEASE, - "$(inherited)", - ); + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -4818,28 +4553,13 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-mno-thumb", - "-mfpu=neon", - "-fno-operator-names", - "-fno-rtti", - "-ffast-math", - "-ftree-vectorize", - "-fno-strict-aliasing", - "-frename-registers", - "-fno-rtti", - "-fpermissive", - "-fno-operator-names", - "-fsingle-precision-constant", - "-DTARGET_NO_NIXPROF", - ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -4850,6 +4570,7 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -4871,7 +4592,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4881,13 +4602,16 @@ PRODUCT_NAME = PVPlay; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; @@ -4897,6 +4621,10 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + NDEBUG, + ); GCC_WARN_INHIBIT_ALL_WARNINGS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", @@ -4909,7 +4637,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/PVPlay/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4919,14 +4647,16 @@ PRODUCT_NAME = PVPlay; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "play-iOS" */ = { + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "play" */ = { isa = XCConfigurationList; buildConfigurations = ( B30178DA207C901D0051B93D /* Debug */, @@ -4936,26 +4666,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVPlay-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447EE4218BEDD200557ACE /* Debug */, - B3447EE5218BEDD200557ACE /* Release */, - B324C5032191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "play-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447F8F218BEE3F00557ACE /* Debug */, - B3447F90218BEE3F00557ACE /* Release */, - B324C5052191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVPlayCore" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4966,7 +4676,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPlay-iOS" */ = { + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPlay" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C7621920783162009950E4 /* Debug */, diff --git a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme deleted file mode 100644 index 68799355c9..0000000000 --- a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay-iOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme deleted file mode 100644 index 7f768e05f4..0000000000 --- a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay-tvOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay.xcscheme b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay.xcscheme new file mode 100644 index 0000000000..47cd0c4e75 --- /dev/null +++ b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/PVPlay.xcscheme @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme deleted file mode 100644 index 171e17d715..0000000000 --- a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme deleted file mode 100644 index 4221075fcb..0000000000 --- a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play.xcscheme b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play.xcscheme new file mode 100644 index 0000000000..0c0fb769ed --- /dev/null +++ b/Cores/Play/PVPlayCore.xcodeproj/xcshareddata/xcschemes/play.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.mm b/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.mm index 5cb67f3c19..156a99ed8c 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.mm +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore+Audio.mm @@ -23,39 +23,3 @@ - (double)audioSampleRate { } @end - -#pragma mark - Sound callbacks - -//void CSH_OpenEmu::Reset() -//{ -// -//} -// -//bool CSH_OpenEmu::HasFreeBuffers() -//{ -// return true; -//} -// -//void CSH_OpenEmu::RecycleBuffers() -//{ -// -//} -// -//void CSH_OpenEmu::Write(int16 *audio, unsigned int sampleCount, unsigned int sampleRate) -//{ -// GET_CURRENT_OR_RETURN(); -// -// OERingBuffer *rb = [current audioBufferAtIndex:0]; -// [rb write:audio maxLength:sampleCount*2]; -//} -// -//static CSoundHandler *SoundHandlerFactory() -//{ -// OESetThreadRealtime(1. / (1 * 60), .007, .03); -// return new CSH_OpenEmu(); -//} -// -//CSoundHandler::FactoryFunction CSH_OpenEmu::GetFactoryFunction() -//{ -// return SoundHandlerFactory; -//} diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm b/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm index 269321a6a0..53ceb26f09 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore+Controls.mm @@ -140,153 +140,59 @@ - (void)pollControllers { } -(void)didPushPS2Button:(enum PVPS2Button)button forPlayer:(NSInteger)player { - if (button == PVDreamcastButtonL) { - lt[player] |= 0xff * true; - } else if (button == PVDreamcastButtonR) { - rt[player] |= 0xff * true; - } else { - int mapped = DreamcastMap[button]; - kcode[player] &= ~(mapped); - } +// // FIXME: Player 2 is not yet supported. +// if (player != 1) { +// return; +// } +// for(auto bindingIterator(std::begin(_bindings)); +// bindingIterator != std::end(_bindings); bindingIterator++) +// { +// const auto& binding = (*bindingIterator); +// if(!binding) continue; +// binding->ProcessEvent(button, 1); +// } } --(void)didReleasePS2Button:(enum PVPS2Button)button forPlayer:(NSInteger)player { - if (button == PVDreamcastButtonL) { - lt[player] |= 0xff * false; - } else if (button == PVDreamcastButtonR) { - rt[player] |= 0xff * false; - } else { - int mapped = DreamcastMap[button]; - kcode[player] |= (mapped); - } +- (void)didReleasePS2Button:(enum PVPS2Button)button forPlayer:(NSInteger)player { +// // FIXME: Player 2 is not yet supported. +// if (player != 1) { +// return; +// } +// for(auto bindingIterator(std::begin(_bindings)); +// bindingIterator != std::end(_bindings); bindingIterator++) +// { +// const auto& binding = (*bindingIterator); +// if(!binding) continue; +// binding->ProcessEvent(button, 0); +// } } - (void)didMovePS2JoystickDirection:(enum PVPS2Button)button withValue:(CGFloat)value forPlayer:(NSInteger)player { - /* - float xvalue = gamepad.leftThumbstick.xAxis.value; - s8 x=(s8)(xvalue*127); - joyx[0] = x; - - float yvalue = gamepad.leftThumbstick.yAxis.value; - s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range - joyy[0] = y; - */ + // FIXME: Player 2 is not yet supported. + if (player != 1) { + return; + } + //TODO: find real scale value +// uint32 val = value * 0x7f; +// for(auto bindingIterator(std::begin(_bindings)); +// bindingIterator != std::end(_bindings); bindingIterator++) +// { +// const auto& binding = (*bindingIterator); +// if(!binding) continue; +// binding->ProcessEvent(button, val); +// } } -(void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { - [self didMoveDreamcastJoystickDirection:(enum PVPS2Button)button withValue:value forPlayer:player]; + [self didMovePS2JoystickDirection:(enum PVPS2Button)button withValue:value forPlayer:player]; } - (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { - [self didPushDreamcastButton:(PVPS2Button)button forPlayer:player]; + [self didPushPS2Button:(PVPS2Button)button forPlayer:player]; } - (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { - [self didReleaseDreamcastButton:(PVPS2Button)button forPlayer:player]; + [self didReleasePS2Button:(PVPS2Button)button forPlayer:player]; } @end - -#pragma mark - Pad callbacks - -void CPH_OpenEmu::Update(uint8* ram) -{ - GET_CURRENT_OR_RETURN(); - - for(auto listenerIterator(std::begin(m_listeners)); - listenerIterator != std::end(m_listeners); listenerIterator++) - { - auto* listener(*listenerIterator); - - for(unsigned int i = 0; i < PS2::CControllerInfo::MAX_BUTTONS; i++) - { - const auto& binding = current->_bindings[i]; - if(!binding) continue; - uint32 value = binding->GetValue(); - auto currentButtonId = static_cast(i); - if(PS2::CControllerInfo::IsAxis(currentButtonId)) - { - listener->SetAxisState(0, currentButtonId, value & 0xFF, ram); - } - else - { - listener->SetButtonState(0, currentButtonId, value != 0, ram); - } - } - } - -} - -static CPadHandler *PadHandlerFactory() -{ - return new CPH_OpenEmu(); -} - -CPadHandler::FactoryFunction CPH_OpenEmu::GetFactoryFunction() -{ - return PadHandlerFactory; -} - -#pragma mark - - -//CSimpleBinding::CSimpleBinding(OEPS2Button keyCode) -//: m_keyCode(keyCode) -//, m_state(0) -//{ -// -//} -// -//CSimpleBinding::~CSimpleBinding() = default; -// -//void CSimpleBinding::ProcessEvent(OEPS2Button keyCode, uint32 state) -//{ -// if(keyCode != m_keyCode) return; -// m_state = state; -//} -// -//uint32 CSimpleBinding::GetValue() const -//{ -// return m_state; -//} - -#pragma mark - - -CSimulatedAxisBinding::CSimulatedAxisBinding(OEPS2Button negativeKeyCode, OEPS2Button positiveKeyCode) -: m_negativeKeyCode(negativeKeyCode) -, m_positiveKeyCode(positiveKeyCode) -, m_negativeState(0) -, m_positiveState(0) -{ - -} - -CSimulatedAxisBinding::~CSimulatedAxisBinding() = default; - -void CSimulatedAxisBinding::ProcessEvent(OEPS2Button keyCode, uint32 state) -{ - if(keyCode == m_negativeKeyCode) - { - m_negativeState = state; - } - - if(keyCode == m_positiveKeyCode) - { - m_positiveState = state; - } -} - -uint32 CSimulatedAxisBinding::GetValue() const -{ - uint32 value = 0x7F; - - if(m_negativeState) - { - value -= m_negativeState; - } else - if(m_positiveState) - { - value += m_positiveState; - } - - return value; -} diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.mm b/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.mm index 8d3c470a23..00f1ae0eba 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.mm +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore+Video.mm @@ -9,9 +9,16 @@ #import "PVPlayCore+Video.h" #import "PVPlayCore.h" -#import +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +#import #import +#import +#import +#import +#else +#import #import +#endif //#import "PS2VM.h" //#import "gs/GSH_OpenGL/GSH_OpenGL.h" @@ -84,44 +91,8 @@ - (GLenum)internalPixelFormat { return GL_RGBA; } -- (GLenum)depthFormat { - // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 - return GL_DEPTH_COMPONENT24; -} -@end - -#pragma mark - Graphics callbacks - -//static CGSHandler *GSHandlerFactory() -//{ -// return new CGSH_OpenEmu(); -//} -// -//CGSHandler::FactoryFunction CGSH_OpenEmu::GetFactoryFunction() -//{ -// return GSHandlerFactory; -//} -// -//void CGSH_OpenEmu::InitializeImpl() -//{ -// GET_CURRENT_OR_RETURN(); -// -// [current.renderDelegate willRenderFrameOnAlternateThread]; -// CGSH_OpenGL::InitializeImpl(); -// -// this->m_presentFramebuffer = [current.renderDelegate.presentationFramebuffer intValue]; -// -// glClearColor(0,0,0,0); -// glClear(GL_COLOR_BUFFER_BIT); -//} -// -//void CGSH_OpenEmu::PresentBackbuffer() -//{ -// GET_CURRENT_OR_RETURN(); -// -// [current.renderDelegate didRenderFrameOnAlternateThread]; -// -// // Start the next one. -// [current.renderDelegate willRenderFrameOnAlternateThread]; +//- (GLenum)depthFormat { +// // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 +// return GL_DEPTH_COMPONENT24; //} - +@end diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore.h b/Cores/Play/PVPlayCore/Core/PVPlayCore.h index 16eadd8dc6..5cfc2252ed 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore.h +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore.h @@ -14,6 +14,7 @@ #define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; #define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + @interface PVPlayCore : PVEmulatorCore { uint8_t padData[4][PVDreamcastButtonCount]; diff --git a/Cores/Play/PVPlayCore/Core/PVPlayCore.mm b/Cores/Play/PVPlayCore/Core/PVPlayCore.mm index 4a0281fe1f..dbb0ccd018 100644 --- a/Cores/Play/PVPlayCore/Core/PVPlayCore.mm +++ b/Cores/Play/PVPlayCore/Core/PVPlayCore.mm @@ -23,6 +23,23 @@ #import "AppConfig.h" #import "StdStream.h" +#include "PathUtils.h" +//#import "EmulatorViewController.h" +//#import "SaveStateViewController.h" +//#import "SettingsViewController.h" +//#import "RenderView.h" +#include "../AppConfig.h" +#include "PreferenceDefs.h" +#include "GSH_OpenGLiOS.h" +#ifdef HAS_GSH_VULKAN +#include "GSH_VulkaniOS.h" +#endif +#include "../ui_shared/BootablesProcesses.h" +#include "PH_Generic.h" +#include "../../tools/PsfPlayer/Source/SH_OpenAL.h" +#include "../ui_shared/StatsManager.h" + + __weak PVPlayCore *_current = nil; class CGSH_OpenEmu : public CGSH_OpenGL @@ -115,145 +132,537 @@ @interface PVPlayCore() { @implementation PVPlayCore { - @public - // ivars - CPS2VM _ps2VM; - NSString *_romPath; - BindingPtr _bindings[PS2::CControllerInfo::MAX_BUTTONS]; +@public + // ivars + CPS2VM _ps2VM; + NSString *_romPath; + BindingPtr _bindings[PS2::CControllerInfo::MAX_BUTTONS]; } - (instancetype)init { - if (self = [super init]) { - _videoWidth = 640; - _videoHeight = 480; - _videoBitDepth = 32; // ignored - videoDepthBitDepth = 0; // TODO - - sampleRate = 44100; - - isNTSC = YES; - - dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); - - _callbackQueue = dispatch_queue_create("org.provenance-emu.play.CallbackHandlerQueue", queueAttributes); - } - - _current = self; - return self; + if (self = [super init]) { + _videoWidth = 640; + _videoHeight = 480; + _videoBitDepth = 32; // ignored + videoDepthBitDepth = 0; // TODO + + sampleRate = 44100; + + isNTSC = YES; + + dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); + + _callbackQueue = dispatch_queue_create("org.provenance-emu.play.CallbackHandlerQueue", queueAttributes); + } + + _current = self; + return self; } - (void)dealloc { - _current = nil; + _current = nil; } #pragma mark - PVEmulatorCore - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { - NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; - const char *dataPath; - - // TODO: Proper path - NSString *configPath = self.saveStatesPath; - dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; - - [[NSFileManager defaultManager] createDirectoryAtPath:configPath + NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; + const char *dataPath; + + // TODO: Proper path + NSString *configPath = self.saveStatesPath; + dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; + + [[NSFileManager defaultManager] createDirectoryAtPath:configPath withIntermediateDirectories:YES attributes:nil error:nil]; - - NSString *batterySavesDirectory = self.batterySavesPath; - [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory + + NSString *batterySavesDirectory = self.batterySavesPath; + [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory withIntermediateDirectories:YES attributes:nil error:NULL]; - - _romPath = [path copy]; - - return YES; + + _romPath = [path copy]; + + return YES; } #pragma mark - Running -- (void)startEmulation { - [self setupEmulation]; - [super startEmulation]; - [self.frontBufferCondition lock]; - while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; - [self.frontBufferCondition unlock]; +//- (void)startEmulation { +// [self setupEmulation]; +// [super startEmulation]; +// [self.frontBufferCondition lock]; +// while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; +// [self.frontBufferCondition unlock]; +// +//} +//- (void)startEmulation { +// if(!self.isRunning) { +// [super startEmulation]; +// [NSThread detachNewThreadSelector:@selector(runGLESRenderThread) toTarget:self withObject:nil]; +// } +//} +- (void)startEmulation +{ + _ps2VM.CreateGSHandler(CGSH_OpenEmu::GetFactoryFunction()); + _ps2VM.CreatePadHandler(CPH_OpenEmu::GetFactoryFunction()); + _ps2VM.CreateSoundHandler(CSH_OpenEmu::GetFactoryFunction()); + CGSHandler::PRESENTATION_PARAMS presentationParams; + auto presentationMode = static_cast(CAppConfig::GetInstance().GetPreferenceInteger(PREF_CGSHANDLER_PRESENTATION_MODE)); + presentationParams.windowWidth = 640; + presentationParams.windowHeight = 480; + presentationParams.mode = presentationMode; + _ps2VM.m_ee->m_gs->SetPresentationParams(presentationParams); + + CPS2OS* os = _ps2VM.m_ee->m_os; + os->BootFromCDROM(); + + // TODO: Play! starts a bunch of threads. They all need to be realtime. + _ps2VM.Resume(); + + [super startEmulation]; } +//- (void)runGLESRenderThread { +// @autoreleasepool +// { +// [self.renderDelegate startRenderingOnAlternateThread]; +//// BOOL success = gles_init(); +//// assert(success); +//#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +// EAGLContext* context = [self bestContext]; +// ILOG(@"%i", context.API); +//#endif +// [NSThread detachNewThreadSelector:@selector(runGLESEmuThread) toTarget:self withObject:nil]; +// +//// CFAbsoluteTime lastTime = CFAbsoluteTimeGetCurrent(); +// +//// while (!has_init) {} +// while ( !shouldStop ) +// { +// [self.frontBufferCondition lock]; +// while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; +// [self.frontBufferCondition unlock]; +// +//// CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); +//// CFTimeInterval deltaTime = now - lastTime; +// while ( !shouldStop +// && !video_driver_cached_frame() +//// && core_poll() +// ) {} +// [self swapBuffers]; +//// lastTime = now; +// } +// } +//} + +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +-(EAGLContext*)bestContext { + EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + self.glesVersion = GLESVersion3; + if (context == nil) + { + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + self.glesVersion = GLESVersion2; + } + + return context; +} +#endif + + - (void)setupEmulation { - _current = self; - - CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_CDROM0_PATH, [_romPath fileSystemRepresentation]); - NSFileManager *fm = [NSFileManager defaultManager]; - NSString *mcd0 = [self.batterySavesPath stringByAppendingPathComponent:@"mcd0"]; - NSString *mcd1 = [self.batterySavesPath stringByAppendingPathComponent:@"mcd1"]; - NSString *hdd = [self.batterySavesPath stringByAppendingPathComponent:@"hdd"]; - - if (![fm fileExistsAtPath:mcd0]) { - [fm createDirectoryAtPath:mcd0 withIntermediateDirectories:YES attributes:nil error:NULL]; - } - if (![fm fileExistsAtPath:mcd1]) { - [fm createDirectoryAtPath:mcd1 withIntermediateDirectories:YES attributes:nil error:NULL]; - } - if (![fm fileExistsAtPath:hdd]) { - [fm createDirectoryAtPath:hdd withIntermediateDirectories:YES attributes:nil error:NULL]; - } - CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_MC0_DIRECTORY, mcd0.fileSystemRepresentation); - CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_MC1_DIRECTORY, mcd1.fileSystemRepresentation); - CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_HOST_DIRECTORY, hdd.fileSystemRepresentation); - CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_ROM0_DIRECTORY, self.BIOSPath.fileSystemRepresentation); - CAppConfig::GetInstance().SetPreferenceInteger(PREF_CGSHANDLER_PRESENTATION_MODE, CGSHandler::PRESENTATION_MODE_FIT); - CAppConfig::GetInstance().Save(); - - _ps2VM.Initialize(); -// -// _bindings[PS2::CControllerInfo::START] = std::make_shared(PVPS2ButtonStart); -// _bindings[PS2::CControllerInfo::SELECT] = std::make_shared(PVPS2ButtonSelect); -// _bindings[PS2::CControllerInfo::DPAD_LEFT] = std::make_shared(PVPS2ButtonLeft); -// _bindings[PS2::CControllerInfo::DPAD_RIGHT] = std::make_shared(PVPS2ButtonRight); -// _bindings[PS2::CControllerInfo::DPAD_UP] = std::make_shared(PVPS2ButtonUp); -// _bindings[PS2::CControllerInfo::DPAD_DOWN] = std::make_shared(PVPS2ButtonDown); -// _bindings[PS2::CControllerInfo::SQUARE] = std::make_shared(PVPS2ButtonSquare); -// _bindings[PS2::CControllerInfo::CROSS] = std::make_shared(PVPS2ButtonCross); -// _bindings[PS2::CControllerInfo::TRIANGLE] = std::make_shared(PVPS2ButtonTriangle); -// _bindings[PS2::CControllerInfo::CIRCLE] = std::make_shared(PVPS2ButtonCircle); -// _bindings[PS2::CControllerInfo::L1] = std::make_shared(PVPS2ButtonL1); -// _bindings[PS2::CControllerInfo::L2] = std::make_shared(PVPS2ButtonL2); -// _bindings[PS2::CControllerInfo::L3] = std::make_shared(PVPS2ButtonL3); -// _bindings[PS2::CControllerInfo::R1] = std::make_shared(PVPS2ButtonR1); -// _bindings[PS2::CControllerInfo::R2] = std::make_shared(PVPS2ButtonR2); -// _bindings[PS2::CControllerInfo::R3] = std::make_shared(PVPS2ButtonR3); -// _bindings[PS2::CControllerInfo::ANALOG_LEFT_X] = std::make_shared(PVPS2LeftAnalogLeft,PVPS2LeftAnalogRight); -// _bindings[PS2::CControllerInfo::ANALOG_LEFT_Y] = std::make_shared(PVPS2LeftAnalogUp,PVPS2LeftAnalogDown); -// _bindings[PS2::CControllerInfo::ANALOG_RIGHT_X] = std::make_shared(PVPS2RightAnalogLeft,PVPS2RightAnalogRight); -// _bindings[PS2::CControllerInfo::ANALOG_RIGHT_Y] = std::make_shared(PVPS2RightAnalogUp,PVPS2RightAnalogDown); - - // TODO: In Debug disable dynarec? + _current = self; + + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_CDROM0_PATH, [_romPath fileSystemRepresentation]); + NSFileManager *fm = [NSFileManager defaultManager]; + NSString *mcd0 = [self.batterySavesPath stringByAppendingPathComponent:@"mcd0"]; + NSString *mcd1 = [self.batterySavesPath stringByAppendingPathComponent:@"mcd1"]; + NSString *hdd = [self.batterySavesPath stringByAppendingPathComponent:@"hdd"]; + + if (![fm fileExistsAtPath:mcd0]) { + [fm createDirectoryAtPath:mcd0 withIntermediateDirectories:YES attributes:nil error:NULL]; + } + if (![fm fileExistsAtPath:mcd1]) { + [fm createDirectoryAtPath:mcd1 withIntermediateDirectories:YES attributes:nil error:NULL]; + } + if (![fm fileExistsAtPath:hdd]) { + [fm createDirectoryAtPath:hdd withIntermediateDirectories:YES attributes:nil error:NULL]; + } + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_MC0_DIRECTORY, mcd0.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_MC1_DIRECTORY, mcd1.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_HOST_DIRECTORY, hdd.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferencePath(PREF_PS2_ROM0_DIRECTORY, self.BIOSPath.fileSystemRepresentation); + CAppConfig::GetInstance().SetPreferenceInteger(PREF_CGSHANDLER_PRESENTATION_MODE, CGSHandler::PRESENTATION_MODE_FIT); + CAppConfig::GetInstance().Save(); + + _ps2VM.Initialize(); + // + // _bindings[PS2::CControllerInfo::START] = std::make_shared(PVPS2ButtonStart); + // _bindings[PS2::CControllerInfo::SELECT] = std::make_shared(PVPS2ButtonSelect); + // _bindings[PS2::CControllerInfo::DPAD_LEFT] = std::make_shared(PVPS2ButtonLeft); + // _bindings[PS2::CControllerInfo::DPAD_RIGHT] = std::make_shared(PVPS2ButtonRight); + // _bindings[PS2::CControllerInfo::DPAD_UP] = std::make_shared(PVPS2ButtonUp); + // _bindings[PS2::CControllerInfo::DPAD_DOWN] = std::make_shared(PVPS2ButtonDown); + // _bindings[PS2::CControllerInfo::SQUARE] = std::make_shared(PVPS2ButtonSquare); + // _bindings[PS2::CControllerInfo::CROSS] = std::make_shared(PVPS2ButtonCross); + // _bindings[PS2::CControllerInfo::TRIANGLE] = std::make_shared(PVPS2ButtonTriangle); + // _bindings[PS2::CControllerInfo::CIRCLE] = std::make_shared(PVPS2ButtonCircle); + // _bindings[PS2::CControllerInfo::L1] = std::make_shared(PVPS2ButtonL1); + // _bindings[PS2::CControllerInfo::L2] = std::make_shared(PVPS2ButtonL2); + // _bindings[PS2::CControllerInfo::L3] = std::make_shared(PVPS2ButtonL3); + // _bindings[PS2::CControllerInfo::R1] = std::make_shared(PVPS2ButtonR1); + // _bindings[PS2::CControllerInfo::R2] = std::make_shared(PVPS2ButtonR2); + // _bindings[PS2::CControllerInfo::R3] = std::make_shared(PVPS2ButtonR3); + // _bindings[PS2::CControllerInfo::ANALOG_LEFT_X] = std::make_shared(PVPS2LeftAnalogLeft,PVPS2LeftAnalogRight); + // _bindings[PS2::CControllerInfo::ANALOG_LEFT_Y] = std::make_shared(PVPS2LeftAnalogUp,PVPS2LeftAnalogDown); + // _bindings[PS2::CControllerInfo::ANALOG_RIGHT_X] = std::make_shared(PVPS2RightAnalogLeft,PVPS2RightAnalogRight); + // _bindings[PS2::CControllerInfo::ANALOG_RIGHT_Y] = std::make_shared(PVPS2RightAnalogUp,PVPS2RightAnalogDown); + + // TODO: In Debug disable dynarec? } - (void)setPauseEmulation:(BOOL)flag { - if (flag) { - _ps2VM.Pause(); - } else { - _ps2VM.Resume(); - } - - [super setPauseEmulation:flag]; + if (flag) { + _ps2VM.Pause(); + } else { + _ps2VM.Resume(); + } + + [super setPauseEmulation:flag]; } - (void)stopEmulation { - _ps2VM.Pause(); - _ps2VM.Destroy(); - [super stopEmulation]; + _ps2VM.Pause(); + _ps2VM.Destroy(); + [super stopEmulation]; } - (void)resetEmulation { - _ps2VM.Pause(); - _ps2VM.Reset(); - _ps2VM.Resume(); + _ps2VM.Pause(); + _ps2VM.Reset(); + _ps2VM.Resume(); +} + +//- (void)resetEmulation { +// [super resetEmulation]; +// dispatch_semaphore_signal(glesWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + + +- (void)swapBuffers { + [self.renderDelegate didRenderFrameOnAlternateThread]; +} + +- (void)executeFrameSkippingFrame:(BOOL)skip { +// dispatch_semaphore_signal(glesWaitToBeginFrameSemaphore); +// +// dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, [self frameTime]); +} + +- (void)executeFrame { + [self executeFrameSkippingFrame:NO]; } @end + +CGSH_OpenGLiOS::CGSH_OpenGLiOS(CAEAGLLayer* layer) + : m_layer(layer) +{ +} + +CGSH_OpenGLiOS::~CGSH_OpenGLiOS() +{ +} + +CGSHandler::FactoryFunction CGSH_OpenGLiOS::GetFactoryFunction(CAEAGLLayer* layer) +{ + return [layer]() { return new CGSH_OpenGLiOS(layer); }; +} + +void CGSH_OpenGLiOS::InitializeImpl() +{ + m_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + + if(!m_context) + { + NSLog(@"Failed to create ES context"); + return; + } + + if(![EAGLContext setCurrentContext:m_context]) + { + NSLog(@"Failed to set ES context current"); + return; + } + + CreateFramebuffer(); + + { + PRESENTATION_PARAMS presentationParams; + presentationParams.mode = PRESENTATION_MODE_FIT; + presentationParams.windowWidth = m_framebufferWidth; + presentationParams.windowHeight = m_framebufferHeight; + + SetPresentationParams(presentationParams); + } + + CGSH_OpenGL::InitializeImpl(); +} + +void CGSH_OpenGLiOS::PresentBackbuffer() +{ + glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderbuffer); + CHECKGLERROR(); + + BOOL success = [m_context presentRenderbuffer:GL_RENDERBUFFER]; + assert(success == YES); +} + +void CGSH_OpenGLiOS::CreateFramebuffer() +{ + assert(m_defaultFramebuffer == 0); + + glGenFramebuffers(1, &m_defaultFramebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, m_defaultFramebuffer); + + // Create color render buffer and allocate backing store. + glGenRenderbuffers(1, &m_colorRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderbuffer); + [m_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:m_layer]; + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &m_framebufferWidth); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &m_framebufferHeight); + + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_colorRenderbuffer); + + CHECKGLERROR(); + + if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + { + NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); + assert(false); + } + + m_presentFramebuffer = m_defaultFramebuffer; +} + +#pragma mark - Graphics callbacks + +static CGSHandler *GSHandlerFactory() +{ + return new CGSH_OpenEmu(); +} + +CGSHandler::FactoryFunction CGSH_OpenEmu::GetFactoryFunction() +{ + return GSHandlerFactory; +} + +void CGSH_OpenEmu::InitializeImpl() +{ + GET_CURRENT_OR_RETURN(); + + // TODO: provenance doesn't have this +// [current.renderDelegate willRenderFrameOnAlternateThread]; + CGSH_OpenGL::InitializeImpl(); + + // TODO: provenance doesn't have this +// this->m_presentFramebuffer = [current.renderDelegate.presentationFramebuffer intValue]; + + glClearColor(0,0,0,0); + glClear(GL_COLOR_BUFFER_BIT); +} + +void CGSH_OpenEmu::PresentBackbuffer() +{ + GET_CURRENT_OR_RETURN(); + + [current.renderDelegate didRenderFrameOnAlternateThread]; + + // Start the next one. + // TODO: provenance doesn't have this +// [current.renderDelegate willRenderFrameOnAlternateThread]; +} + + +#pragma mark - Pad callbacks + +void CPH_OpenEmu::Update(uint8* ram) +{ + GET_CURRENT_OR_RETURN(); + + for(auto listenerIterator(std::begin(m_listeners)); + listenerIterator != std::end(m_listeners); listenerIterator++) + { + auto* listener(*listenerIterator); + + for(unsigned int i = 0; i < PS2::CControllerInfo::MAX_BUTTONS; i++) + { + const auto& binding = current->_bindings[i]; + if(!binding) continue; + uint32 value = binding->GetValue(); + auto currentButtonId = static_cast(i); + if(PS2::CControllerInfo::IsAxis(currentButtonId)) + { + listener->SetAxisState(0, currentButtonId, value & 0xFF, ram); + } + else + { + listener->SetButtonState(0, currentButtonId, value != 0, ram); + } + } + } + +} + +static CPadHandler *PadHandlerFactory() +{ + return new CPH_OpenEmu(); +} + +CPadHandler::FactoryFunction CPH_OpenEmu::GetFactoryFunction() +{ + return PadHandlerFactory; +} + +#pragma mark - + +//CSimpleBinding::CSimpleBinding(OEPS2Button keyCode) +//: m_keyCode(keyCode) +//, m_state(0) +//{ +// +//} +// +//CSimpleBinding::~CSimpleBinding() = default; +// +//void CSimpleBinding::ProcessEvent(OEPS2Button keyCode, uint32 state) +//{ +// if(keyCode != m_keyCode) return; +// m_state = state; +//} +// +//uint32 CSimpleBinding::GetValue() const +//{ +// return m_state; +//} + +#pragma mark - + +CSimulatedAxisBinding::CSimulatedAxisBinding(PVPS2Button negativeKeyCode, PVPS2Button positiveKeyCode) +: m_negativeKeyCode(negativeKeyCode) +, m_positiveKeyCode(positiveKeyCode) +, m_negativeState(0) +, m_positiveState(0) +{ + +} + +CSimulatedAxisBinding::~CSimulatedAxisBinding() = default; + +void CSimulatedAxisBinding::ProcessEvent(PVPS2Button keyCode, uint32_t state) +{ + if(keyCode == m_negativeKeyCode) + { + m_negativeState = state; + } + + if(keyCode == m_positiveKeyCode) + { + m_positiveState = state; + } +} + +uint32_t CSimulatedAxisBinding::GetValue() const +{ + uint32 value = 0x7F; + + if(m_negativeState) + { + value -= m_negativeState; + } else + if(m_positiveState) + { + value += m_positiveState; + } + + return value; +} + +#pragma mark - Sound callbacks + +void CSH_OpenEmu::Reset() +{ + +} + +bool CSH_OpenEmu::HasFreeBuffers() +{ + return true; +} + +void CSH_OpenEmu::RecycleBuffers() +{ + +} + +void CSH_OpenEmu::Write(int16 *audio, unsigned int sampleCount, unsigned int sampleRate) +{ + GET_CURRENT_OR_RETURN(); + + OERingBuffer *rb = [current ringBufferAtIndex:0]; + [rb write:audio maxLength:sampleCount*2]; +} + +void MakeCurrentThreadRealTime(); +static CSoundHandler *SoundHandlerFactory() +{ + MakeCurrentThreadRealTime(); +// OESetThreadRealtime(1. / (1 * 60), .007, .03); + return new CSH_OpenEmu(); +} + +CSoundHandler::FactoryFunction CSH_OpenEmu::GetFactoryFunction() +{ + return SoundHandlerFactory; +} + +#pragma mark - Threads +#include +#include +void move_pthread_to_realtime_scheduling_class(pthread_t pthread); +void MakeCurrentThreadRealTime() +{ + move_pthread_to_realtime_scheduling_class(pthread_self()); +} + +void move_pthread_to_realtime_scheduling_class(pthread_t pthread) +{ + mach_timebase_info_data_t timebase_info; + mach_timebase_info(&timebase_info); + + const uint64_t NANOS_PER_MSEC = 1000000ULL; + double clock2abs = ((double)timebase_info.denom / (double)timebase_info.numer) * NANOS_PER_MSEC; + + thread_time_constraint_policy_data_t policy; + policy.period = 0; + policy.computation = (uint32_t)(5 * clock2abs); // 5 ms of work + policy.constraint = (uint32_t)(10 * clock2abs); + policy.preemptible = FALSE; + + int kr = thread_policy_set(pthread_mach_thread_np(pthread_self()), + THREAD_TIME_CONSTRAINT_POLICY, + (thread_policy_t)&policy, + THREAD_TIME_CONSTRAINT_POLICY_COUNT); + if (kr != KERN_SUCCESS) { + mach_error("thread_policy_set:", kr); + exit(1); + } +} diff --git a/Cores/Play/Play- b/Cores/Play/Play- index 4064c4c5e0..a38d18dd0c 160000 --- a/Cores/Play/Play- +++ b/Cores/Play/Play- @@ -1 +1 @@ -Subproject commit 4064c4c5e0a189afc4bdcad8f1e954e59abefc4c +Subproject commit a38d18dd0ceeb1306894905b59d5336164d5140e diff --git a/Cores/Play/cmake/Play.xcodeproj/project.pbxproj b/Cores/Play/cmake/Play.xcodeproj/project.pbxproj index b47e366765..35f1dda21b 100644 --- a/Cores/Play/cmake/Play.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Play.xcodeproj/project.pbxproj @@ -4445,30 +4445,30 @@ targets = ( 6B9C69E5DB214681B2A5C976 /* ALL_BUILD */, 4A2DC89E739648D6B707DE82 /* CodeGen */, - AE266E3F7EF543BB8B8B721D /* CodeGenTestSuite */, 78A6B39821F84D46BC18A2F1 /* Framework */, F334D674251041ED82EE5739 /* Framework_Amazon */, 7CFD24AE86FC4EA98CE691F1 /* Framework_Http */, 4CE77B8E966A4E4481415F58 /* Framework_OpenAl */, C8994A4A30BF428288C41132 /* Framework_OpenGl */, - A1F74ECA2C6946AC8202C0AE /* GsAreaTest */, - A3258693E64A4496B63D4EC2 /* McServTest */, - C0A20AA20CFB4CED87F4DCC4 /* Play */, 993C9585FC77473A9820C7AC /* PlayCore */, - B7A566E4767340588D653807 /* RUN_TESTS */, 278B37D83C3E4D949F87F375 /* SDWebImage_Static */, - BE7E7DE4417049878805C740 /* SpuTest */, - 33E1F7B481CF45E3A092134D /* VuTest */, - 3EBABC1ED902418AB5132579 /* ZERO_CHECK */, - 60DF71295BEF417899AE9D1E /* autotest */, 59AF26853FE84A6BB9862BC2 /* chdr-static */, EB114EEB04084B60B33F647D /* gsh_opengl */, 2D6053221AB747739E582A67 /* iCade_Static */, - 0285C8420FCC45EA8D71FBC5 /* install */, 8B08BEF7FC644CF5AD4D368E /* lzma */, C90448E417F947A29DE118E0 /* sh_openal */, 3260DC1C9D1A465AA4B1E097 /* ui_shared */, 180B5733882C4138BCCC205A /* zlib */, + 60DF71295BEF417899AE9D1E /* autotest */, + AE266E3F7EF543BB8B8B721D /* CodeGenTestSuite */, + A1F74ECA2C6946AC8202C0AE /* GsAreaTest */, + A3258693E64A4496B63D4EC2 /* McServTest */, + C0A20AA20CFB4CED87F4DCC4 /* Play */, + BE7E7DE4417049878805C740 /* SpuTest */, + 33E1F7B481CF45E3A092134D /* VuTest */, + B7A566E4767340588D653807 /* RUN_TESTS */, + 3EBABC1ED902418AB5132579 /* ZERO_CHECK */, + 0285C8420FCC45EA8D71FBC5 /* install */, ); }; /* End PBXProject section */ @@ -5832,7 +5832,7 @@ 068BA01AF47545A5873FB381 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -5862,7 +5862,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -5882,12 +5882,15 @@ 0981D2BEDC2B4849A45E9CE4 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ARCHS = arm64; CLANG_CXX_LIBRARY = "libc++"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SYMROOT = ./cmake/build; }; name = MinSizeRel; @@ -5950,7 +5953,7 @@ 0B17532A84E84F9282EF5135 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -5970,7 +5973,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6104,7 +6107,7 @@ 0DE8204536B9471588F84167 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -6126,7 +6129,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6150,7 +6153,7 @@ 0F10B67ABE7342D5987B2832 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -6171,7 +6174,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6194,7 +6197,7 @@ 11DD900FFAF845C8BBC087E8 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -6227,7 +6230,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6247,7 +6250,7 @@ 127159EF440F4D47B1926D86 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -6277,7 +6280,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6297,7 +6300,7 @@ 12BA63F3513B4F1B8E8B45E0 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -6316,7 +6319,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6426,7 +6429,7 @@ 159A2130F8214AE5A749AC6B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -6445,7 +6448,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6464,7 +6467,7 @@ 19E66FA55A0A4E8FAE903F29 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -6483,7 +6486,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6506,7 +6509,7 @@ 1A22960717DE40B0A60B3068 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -6525,7 +6528,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6609,7 +6612,7 @@ 1CC03B5E504A48B9811E422D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -6631,7 +6634,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6737,12 +6740,15 @@ 25F4EF8C87394E5896D05739 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ARCHS = arm64; CLANG_CXX_LIBRARY = "libc++"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SYMROOT = ./cmake/build; }; name = Release; @@ -6750,7 +6756,7 @@ 268C224D56DA425A93A14E2A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -6773,7 +6779,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -6924,7 +6930,7 @@ 2D19DF4C2EBA49CEAEA79A96 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -6946,7 +6952,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7032,7 +7038,7 @@ 36FC5DAB99B14FAD82F2A0CA /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7063,7 +7069,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7083,7 +7089,7 @@ 38103DBB5B154F37B69FB942 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7105,7 +7111,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7128,7 +7134,7 @@ 3843C0267F3D433E84BB9A2E /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7149,7 +7155,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7171,7 +7177,7 @@ 3A8E8D39924D4C0F947C5AC6 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7194,7 +7200,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7279,7 +7285,7 @@ 42CFFEBB45CE47B2B66D08E4 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -7298,7 +7304,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7407,7 +7413,7 @@ 50851B0D1B6943A79FCE4F12 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7438,7 +7444,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7459,7 +7465,7 @@ 54FDCB2205324DBCBD7EB21D /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -7483,7 +7489,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7503,7 +7509,7 @@ 5AC37E8D9B1F49C59F9882D3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -7522,7 +7528,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7609,7 +7615,7 @@ 603C12FD849D4F8D947BCC3A /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7631,7 +7637,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7655,7 +7661,7 @@ 605778B8F375407DBEA49468 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -7674,7 +7680,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7783,7 +7789,7 @@ 672E3322C3FA4FACB232482E /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7814,7 +7820,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7834,7 +7840,7 @@ 68C26AE248AD4A00AF27E017 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7855,7 +7861,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7878,7 +7884,7 @@ 6C067838FFAC4DDEB4DA8AC7 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -7908,7 +7914,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7929,7 +7935,7 @@ 732BCABA457442048C69D080 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -7948,7 +7954,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -7969,7 +7975,7 @@ 7518BEBA9A3F4E998006730B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -7988,7 +7994,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8008,7 +8014,7 @@ 7AF57726F5074FA98B77D9BB /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -8027,7 +8033,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8047,12 +8053,15 @@ 80701A85C0D8488D8495662B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ARCHS = arm64; CLANG_CXX_LIBRARY = "libc++"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SYMROOT = ./cmake/build; }; name = Debug; @@ -8083,7 +8092,7 @@ 88ADD51352F54CD8A2254AC8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -8104,7 +8113,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8151,7 +8160,7 @@ 8D28365B73D74C90A49AF1B4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -8175,7 +8184,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8195,7 +8204,7 @@ 8F5ACFDB350741EBB661B83B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -8225,7 +8234,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8245,7 +8254,7 @@ 902DE3A2046543018260CF04 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -8264,7 +8273,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8287,7 +8296,7 @@ 904AB5EB83C44CACBA632779 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -8307,7 +8316,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8506,7 +8515,7 @@ A352DD28A2DD4DEFA0A4195E /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -8530,7 +8539,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8550,12 +8559,15 @@ A6EF7787B33B4B5888F8138D /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ARCHS = arm64; CLANG_CXX_LIBRARY = "libc++"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SYMROOT = ./cmake/build; }; name = RelWithDebInfo; @@ -8627,7 +8639,7 @@ ACBEC36F6097449AB20B22E3 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -8660,7 +8672,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8745,7 +8757,7 @@ B0FAABA7F89048798B55CD52 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -8776,7 +8788,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8796,7 +8808,7 @@ B294298D236C402294676CE9 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -8815,7 +8827,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -8951,7 +8963,7 @@ B774B7DAD7864CC3982826DE /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -8972,7 +8984,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9019,7 +9031,7 @@ BCD88CB0FB174ED09C7B6883 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9049,7 +9061,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9070,7 +9082,7 @@ BEB82087DE4E4D0D884874B9 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9093,7 +9105,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9113,7 +9125,7 @@ BF7F313167D1426FA24550B3 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -9133,7 +9145,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9274,7 +9286,7 @@ C36A11AF8E8A4DAAB198F5B9 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9305,7 +9317,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9326,7 +9338,7 @@ C48337A10F4048D0BF44F296 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9347,7 +9359,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9392,7 +9404,7 @@ CCDB006CDFBD4620A3CB1757 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9423,7 +9435,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9507,7 +9519,7 @@ CDC4CEAF0FD64625BDADD6AD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9530,7 +9542,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9615,7 +9627,7 @@ D0AFA6137E9A41BD89FD1E05 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9637,7 +9649,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9727,7 +9739,7 @@ D1FBD0282C574399AB52BF9A /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9748,7 +9760,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9938,7 +9950,7 @@ D645907491ED45CCA4FC95B8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -9971,7 +9983,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -9992,7 +10004,7 @@ D767C0D2986D4E1895D0707F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10025,7 +10037,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10109,7 +10121,7 @@ E3524F5E11F24A1286E581A8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10131,7 +10143,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10219,7 +10231,7 @@ E398382575A14B1BA558087F /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10240,7 +10252,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10308,7 +10320,7 @@ E7DA5359F3A24C568CB3B6AA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10338,7 +10350,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10359,7 +10371,7 @@ E87AF46BF5A14E7E9887D1CF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10389,7 +10401,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10411,7 +10423,7 @@ EE47209ABFAE4462AEBAA858 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10442,7 +10454,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10549,7 +10561,7 @@ F3722CAA175141169FD2CE62 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10580,7 +10592,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10623,7 +10635,7 @@ F6745586030F45D9A14806AB /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -10643,7 +10655,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10662,7 +10674,7 @@ F85547CC465E423CAF570D26 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10692,7 +10704,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10713,7 +10725,7 @@ F9528B42D3DD4A2CBC8EF623 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; @@ -10735,7 +10747,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CPLUSPLUSFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", @@ -10780,7 +10792,7 @@ FA86515C03C84E8486FF5B14 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = arm64; + ARCHS = "$(ARCHS_STANDARD)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; @@ -10804,7 +10816,7 @@ ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-mios-version-min=11.0", "-mios-version-min=11.0", diff --git a/Cores/Play/cmake/Source/ui_ios/PlayUI.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/PlayUI.xcodeproj/project.pbxproj index a8531225de..e75379a5dd 100644 --- a/Cores/Play/cmake/Source/ui_ios/PlayUI.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/PlayUI.xcodeproj/project.pbxproj @@ -6152,7 +6152,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/build; }; @@ -6562,7 +6562,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/build; }; @@ -6746,7 +6746,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/build; }; @@ -7091,7 +7091,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/SDWebImage/SDWebImage.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/SDWebImage/SDWebImage.xcodeproj/project.pbxproj index 7776bd0085..4fe5e7fac4 100644 --- a/Cores/Play/cmake/Source/ui_ios/SDWebImage/SDWebImage.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/SDWebImage/SDWebImage.xcodeproj/project.pbxproj @@ -585,7 +585,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/build; }; @@ -599,7 +599,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/build; }; @@ -633,7 +633,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/build; }; @@ -914,7 +914,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SDWebImage/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Framework_OpenAl.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Framework_OpenAl.xcodeproj/project.pbxproj index 0cc2d3719c..3eb93350e2 100644 --- a/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Framework_OpenAl.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/Framework_OpenAl.xcodeproj/project.pbxproj @@ -569,7 +569,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/build; }; @@ -711,7 +711,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/build; }; @@ -813,7 +813,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/build; }; @@ -847,7 +847,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/FrameworkOpenAl/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/SH_OpenAL.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/SH_OpenAL.xcodeproj/project.pbxproj index ce60845ed3..7125bcba3e 100644 --- a/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/SH_OpenAL.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/SH_OpenAL.xcodeproj/project.pbxproj @@ -1017,7 +1017,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/build; }; @@ -1111,7 +1111,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/build; }; @@ -1145,7 +1145,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/build; }; @@ -1159,7 +1159,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/SH_OpenAL/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CodeGen.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CodeGen.xcodeproj/project.pbxproj index 07a0dd3792..ee0a1fc876 100644 --- a/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CodeGen.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/CodeGen.xcodeproj/project.pbxproj @@ -1079,7 +1079,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/build; }; @@ -1113,7 +1113,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/build; }; @@ -1507,7 +1507,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/build; }; @@ -1617,7 +1617,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/CodeGen/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/Source/Framework/Framework.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/Source/Framework/Framework.xcodeproj/project.pbxproj index ea0097f9b7..2c42e3d7d3 100644 --- a/Cores/Play/cmake/Source/ui_ios/Source/Framework/Framework.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/Source/Framework/Framework.xcodeproj/project.pbxproj @@ -896,7 +896,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/build; }; @@ -1066,7 +1066,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/build; }; @@ -1256,7 +1256,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/build; }; @@ -1270,7 +1270,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/ghcfilesystem.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/ghcfilesystem.xcodeproj/project.pbxproj index 9b0567a5c1..0c3ef273c0 100644 --- a/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/ghcfilesystem.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/ghcfilesystem.xcodeproj/project.pbxproj @@ -392,7 +392,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/build; }; @@ -586,7 +586,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/build; }; @@ -640,7 +640,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/build; }; @@ -694,7 +694,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/Framework/ghc_filesystem/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Framework_Http.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Framework_Http.xcodeproj/project.pbxproj index 24e41a5993..30fc91a568 100644 --- a/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Framework_Http.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/Framework_Http.xcodeproj/project.pbxproj @@ -630,7 +630,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/build; }; @@ -664,7 +664,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/build; }; @@ -806,7 +806,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/build; }; @@ -936,7 +936,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/FrameworkHttp/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Framework_Amazon.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Framework_Amazon.xcodeproj/project.pbxproj index 859a13db78..21e5817431 100644 --- a/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Framework_Amazon.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/Framework_Amazon.xcodeproj/project.pbxproj @@ -809,7 +809,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/build; }; @@ -823,7 +823,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/build; }; @@ -857,7 +857,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/build; }; @@ -1143,7 +1143,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/FrameworkAmazon/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/Source/PlayCore.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/Source/PlayCore.xcodeproj/project.pbxproj index c3a956a0af..1fc5f93877 100644 --- a/Cores/Play/cmake/Source/ui_ios/Source/PlayCore.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/Source/PlayCore.xcodeproj/project.pbxproj @@ -4176,7 +4176,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/build; }; @@ -4285,7 +4285,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/build; }; @@ -4483,7 +4483,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/build; }; @@ -4814,7 +4814,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/Source/libchdr/chdr.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/Source/libchdr/chdr.xcodeproj/project.pbxproj index bbd94c7802..7c446921ee 100644 --- a/Cores/Play/cmake/Source/ui_ios/Source/libchdr/chdr.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/Source/libchdr/chdr.xcodeproj/project.pbxproj @@ -871,7 +871,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/build; }; @@ -979,7 +979,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/build; }; @@ -1080,7 +1080,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/build; }; @@ -1255,7 +1255,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/Source/libchdr/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Framework_OpenGl.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Framework_OpenGl.xcodeproj/project.pbxproj index 3c2a3de973..a4bdf920ac 100644 --- a/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Framework_OpenGl.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/Framework_OpenGl.xcodeproj/project.pbxproj @@ -649,7 +649,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/build; }; @@ -683,7 +683,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/build; }; @@ -717,7 +717,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/build; }; @@ -927,7 +927,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/FrameworkOpenGl/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/GSH_OpenGL.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/GSH_OpenGL.xcodeproj/project.pbxproj index 7739b209cf..2756698689 100644 --- a/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/GSH_OpenGL.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/GSH_OpenGL.xcodeproj/project.pbxproj @@ -653,7 +653,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/build; }; @@ -687,7 +687,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/build; }; @@ -749,7 +749,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/build; }; @@ -811,7 +811,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/gs/GSH_OpenGL/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/iCade-iOS/iCade.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/iCade-iOS/iCade.xcodeproj/project.pbxproj index 3aed2ce7e1..05dbe54254 100644 --- a/Cores/Play/cmake/Source/ui_ios/iCade-iOS/iCade.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/iCade-iOS/iCade.xcodeproj/project.pbxproj @@ -584,7 +584,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/build"; }; @@ -625,7 +625,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/build"; }; @@ -659,7 +659,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/build"; }; @@ -760,7 +760,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = "/Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/iCade-iOS/build"; }; diff --git a/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/Framework_Sqlite.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/Framework_Sqlite.xcodeproj/project.pbxproj index 5b4fc68c64..23ec1d12c5 100644 --- a/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/Framework_Sqlite.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/Framework_Sqlite.xcodeproj/project.pbxproj @@ -412,7 +412,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/build; }; @@ -446,7 +446,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/build; }; @@ -480,7 +480,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/build; }; @@ -654,7 +654,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/FrameworkSqlite/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/nlohmann_json.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/nlohmann_json.xcodeproj/project.pbxproj index 477fda01a4..9cfed9c750 100644 --- a/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/nlohmann_json.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/nlohmann_json.xcodeproj/project.pbxproj @@ -452,7 +452,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/build; }; @@ -526,7 +526,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/build; }; @@ -660,7 +660,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/build; }; @@ -694,7 +694,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/nlohmann_json/build; }; diff --git a/Cores/Play/cmake/Source/ui_ios/ui_shared/ui_shared.xcodeproj/project.pbxproj b/Cores/Play/cmake/Source/ui_ios/ui_shared/ui_shared.xcodeproj/project.pbxproj index a9ab5d5a1f..576315d413 100644 --- a/Cores/Play/cmake/Source/ui_ios/ui_shared/ui_shared.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/Source/ui_ios/ui_shared/ui_shared.xcodeproj/project.pbxproj @@ -716,7 +716,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/build; }; @@ -942,7 +942,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/build; }; @@ -976,7 +976,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/build; }; @@ -990,7 +990,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/Source/ui_ios/ui_shared/build; }; diff --git a/Cores/Play/cmake/tools/AutoTest/AutoTest.xcodeproj/project.pbxproj b/Cores/Play/cmake/tools/AutoTest/AutoTest.xcodeproj/project.pbxproj index 89a9ceab01..a36823da3c 100644 --- a/Cores/Play/cmake/tools/AutoTest/AutoTest.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/tools/AutoTest/AutoTest.xcodeproj/project.pbxproj @@ -629,7 +629,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/build; }; @@ -791,7 +791,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/build; }; @@ -873,7 +873,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/build; }; @@ -887,7 +887,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/AutoTest/build; }; diff --git a/Cores/Play/cmake/tools/GsAreaTest/GsAreaTest.xcodeproj/project.pbxproj b/Cores/Play/cmake/tools/GsAreaTest/GsAreaTest.xcodeproj/project.pbxproj index 4628cf2515..2204e45f04 100644 --- a/Cores/Play/cmake/tools/GsAreaTest/GsAreaTest.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/tools/GsAreaTest/GsAreaTest.xcodeproj/project.pbxproj @@ -650,7 +650,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/build; }; @@ -772,7 +772,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/build; }; @@ -834,7 +834,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/build; }; @@ -996,7 +996,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/GsAreaTest/build; }; diff --git a/Cores/Play/cmake/tools/McServTest/McServTest.xcodeproj/project.pbxproj b/Cores/Play/cmake/tools/McServTest/McServTest.xcodeproj/project.pbxproj index d704c08d1b..4cfeb9f141 100644 --- a/Cores/Play/cmake/tools/McServTest/McServTest.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/tools/McServTest/McServTest.xcodeproj/project.pbxproj @@ -544,7 +544,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/build; }; @@ -558,7 +558,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/build; }; @@ -640,7 +640,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/build; }; @@ -822,7 +822,7 @@ exit 0"; CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/McServTest/build; }; diff --git a/Cores/Play/cmake/tools/SpuTest/SpuTest.xcodeproj/project.pbxproj b/Cores/Play/cmake/tools/SpuTest/SpuTest.xcodeproj/project.pbxproj index 51113c5715..e2ef03b21d 100644 --- a/Cores/Play/cmake/tools/SpuTest/SpuTest.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/tools/SpuTest/SpuTest.xcodeproj/project.pbxproj @@ -566,7 +566,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/build; }; @@ -788,7 +788,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/build; }; @@ -910,7 +910,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/build; }; @@ -952,7 +952,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/SpuTest/build; }; diff --git a/Cores/Play/cmake/tools/VuTest/VuTest.xcodeproj/project.pbxproj b/Cores/Play/cmake/tools/VuTest/VuTest.xcodeproj/project.pbxproj index 0bf3ccee14..0ce8c73165 100644 --- a/Cores/Play/cmake/tools/VuTest/VuTest.xcodeproj/project.pbxproj +++ b/Cores/Play/cmake/tools/VuTest/VuTest.xcodeproj/project.pbxproj @@ -620,7 +620,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/build; }; @@ -966,7 +966,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/build; }; @@ -1000,7 +1000,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/build; }; @@ -1094,7 +1094,7 @@ fi CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; CODE_SIGN_IDENTITY = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk; SYMROOT = /Users/jmattiello/Workspace/Provenance/Cores/Play/cmake/tools/VuTest/build; }; diff --git a/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj b/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj index 2ce4e22a5e..fa6e558eeb 100644 --- a/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj +++ b/Cores/PokeMini/PVPokeMini.xcodeproj/project.pbxproj @@ -7,244 +7,84 @@ objects = { /* Begin PBXBuildFile section */ - B311B16927A52EE600D1DE41 /* PokeMini_Font12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0A21A91A8D006CDA0F /* PokeMini_Font12.h */; }; - B311B16A27A52EE600D1DE41 /* PokeMini_BG3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0021A91A8C006CDA0F /* PokeMini_BG3.h */; }; - B311B16B27A52EE600D1DE41 /* MinxIO.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6A21A919F1006CDA0F /* MinxIO.h */; }; - B311B16C27A52EE600D1DE41 /* Joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6421A919F1006CDA0F /* Joystick.h */; }; - B311B16D27A52EE600D1DE41 /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8121A919F1006CDA0F /* CommandLine.h */; }; - B311B16E27A52EE600D1DE41 /* PokeMini_BG2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0221A91A8C006CDA0F /* PokeMini_BG2.h */; }; - B311B16F27A52EE600D1DE41 /* MinxPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5E21A919F1006CDA0F /* MinxPRC.h */; }; - B311B17027A52EE600D1DE41 /* IOMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6C21A919F1006CDA0F /* IOMap.h */; }; - B311B17127A52EE600D1DE41 /* MinxCPU_noBranch.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6721A919F1006CDA0F /* MinxCPU_noBranch.h */; }; - B311B17227A52EE600D1DE41 /* Video_x5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6921A919F1006CDA0F /* Video_x5.h */; }; - B311B17327A52EE600D1DE41 /* Endianess.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8B21A919F1006CDA0F /* Endianess.h */; }; - B311B17427A52EE600D1DE41 /* MinxTimers.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7521A919F1006CDA0F /* MinxTimers.h */; }; - B311B17527A52EE600D1DE41 /* Video_x2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6021A919F1006CDA0F /* Video_x2.h */; }; - B311B17627A52EE600D1DE41 /* Missing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7221A919F1006CDA0F /* Missing.h */; }; - B311B17727A52EE600D1DE41 /* Keyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7621A919F1006CDA0F /* Keyboard.h */; }; - B311B17827A52EE600D1DE41 /* MinxIRQ.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8821A919F1006CDA0F /* MinxIRQ.h */; }; - B311B17927A52EE600D1DE41 /* PokeMini_Icons12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0121A91A8C006CDA0F /* PokeMini_Icons12.h */; }; - B311B17A27A52EE600D1DE41 /* Video_x1.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6E21A919F1006CDA0F /* Video_x1.h */; }; - B311B17B27A52EE600D1DE41 /* MinxColorPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6521A919F1006CDA0F /* MinxColorPRC.h */; }; - B311B17C27A52EE600D1DE41 /* Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7A21A919F1006CDA0F /* Video.h */; }; - B311B17D27A52EE600D1DE41 /* Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8221A919F1006CDA0F /* Hardware.h */; }; - B311B17E27A52EE600D1DE41 /* PokeMini_BG4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0921A91A8D006CDA0F /* PokeMini_BG4.h */; }; - B311B17F27A52EE600D1DE41 /* Video_x3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8C21A919F1006CDA0F /* Video_x3.h */; }; - B311B18027A52EE600D1DE41 /* MinxCPU.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8521A919F1006CDA0F /* MinxCPU.h */; }; - B311B18127A52EE600D1DE41 /* PokeMini_Version.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7121A919F1006CDA0F /* PokeMini_Version.h */; }; - B311B18227A52EE600D1DE41 /* PokeMini_BG5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFE21A91A8B006CDA0F /* PokeMini_BG5.h */; }; - B311B18327A52EE600D1DE41 /* PokeMini_ColorPal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0D21A91A8D006CDA0F /* PokeMini_ColorPal.h */; }; - B311B18427A52EE600D1DE41 /* Video_x4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7B21A919F1006CDA0F /* Video_x4.h */; }; - B311B18527A52EE600D1DE41 /* Video_x6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5A21A919F1006CDA0F /* Video_x6.h */; }; - B311B18627A52EE600D1DE41 /* UI.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5B21A919F1006CDA0F /* UI.h */; }; - B311B18727A52EE600D1DE41 /* PMCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8421A919F1006CDA0F /* PMCommon.h */; }; - B311B18827A52EE600D1DE41 /* MinxLCD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5721A919F1006CDA0F /* MinxLCD.h */; }; - B311B18927A52EE600D1DE41 /* PVPokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3CB854B1E9BECBF009155A6 /* PVPokeMini.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B311B18A27A52EE600D1DE41 /* PokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6821A919F1006CDA0F /* PokeMini.h */; }; - B311B18B27A52EE600D1DE41 /* Multicart.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7321A919F1006CDA0F /* Multicart.h */; }; - B311B18C27A52EE600D1DE41 /* PVPokeMiniEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 081A45971B95604700565444 /* PVPokeMiniEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B311B18D27A52EE600D1DE41 /* PokeMini_BG6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFF21A91A8B006CDA0F /* PokeMini_BG6.h */; }; - B311B18E27A52EE600D1DE41 /* MinxAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8621A919F1006CDA0F /* MinxAudio.h */; }; - B311B19027A52EE600D1DE41 /* Missing.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5821A919F1006CDA0F /* Missing.c */; }; - B311B19127A52EE600D1DE41 /* PokeMini.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8D21A919F1006CDA0F /* PokeMini.c */; }; - B311B19227A52EE600D1DE41 /* PMCommon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6D21A919F1006CDA0F /* PMCommon.c */; }; - B311B19327A52EE600D1DE41 /* PokeMini_ColorPal.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0821A91A8D006CDA0F /* PokeMini_ColorPal.c */; }; - B311B19427A52EE600D1DE41 /* Video_x1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8721A919F1006CDA0F /* Video_x1.c */; }; - B311B19527A52EE600D1DE41 /* PokeMini_Icons12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0C21A91A8D006CDA0F /* PokeMini_Icons12.c */; }; - B311B19627A52EE600D1DE41 /* PokeMini_BG6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0B21A91A8D006CDA0F /* PokeMini_BG6.c */; }; - B311B19727A52EE600D1DE41 /* PokeMini_BG5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0621A91A8C006CDA0F /* PokeMini_BG5.c */; }; - B311B19827A52EE600D1DE41 /* PVPokeMiniEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 081A45981B95604700565444 /* PVPokeMiniEmulatorCore.m */; }; - B311B19927A52EE600D1DE41 /* MinxCPU_CE.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7821A919F1006CDA0F /* MinxCPU_CE.c */; }; - B311B19A27A52EE600D1DE41 /* NoUI.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C3221A91C25006CDA0F /* NoUI.c */; }; - B311B19B27A52EE600D1DE41 /* MinxLCD.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7421A919F1006CDA0F /* MinxLCD.c */; }; - B311B19C27A52EE600D1DE41 /* MinxCPU_CF.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8321A919F1006CDA0F /* MinxCPU_CF.c */; }; - B311B19D27A52EE600D1DE41 /* Video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5D21A919F1006CDA0F /* Video.c */; }; - B311B19E27A52EE600D1DE41 /* Video_x4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5C21A919F1006CDA0F /* Video_x4.c */; }; - B311B19F27A52EE600D1DE41 /* Video_x6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7E21A919F1006CDA0F /* Video_x6.c */; }; - B311B1A027A52EE600D1DE41 /* MinxCPU.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7021A919F1006CDA0F /* MinxCPU.c */; }; - B311B1A127A52EE600D1DE41 /* PokeMini_Font12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0721A91A8C006CDA0F /* PokeMini_Font12.c */; }; - B311B1A227A52EE600D1DE41 /* Hardware.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6121A919F1006CDA0F /* Hardware.c */; }; - B311B1A327A52EE600D1DE41 /* Video_x2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7721A919F1006CDA0F /* Video_x2.c */; }; - B311B1A427A52EE600D1DE41 /* MinxTimers.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5621A919F1006CDA0F /* MinxTimers.c */; }; - B311B1A527A52EE600D1DE41 /* MinxAudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6F21A919F1006CDA0F /* MinxAudio.c */; }; - B311B1A627A52EE600D1DE41 /* PokeMini_BG3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0421A91A8C006CDA0F /* PokeMini_BG3.c */; }; - B311B1A727A52EE600D1DE41 /* MinxPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7921A919F1006CDA0F /* MinxPRC.c */; }; - B311B1A827A52EE600D1DE41 /* Multicart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5921A919F1006CDA0F /* Multicart.c */; }; - B311B1A927A52EE600D1DE41 /* Video_x3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6621A919F1006CDA0F /* Video_x3.c */; }; - B311B1AA27A52EE600D1DE41 /* PokeMini_BG2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0321A91A8C006CDA0F /* PokeMini_BG2.c */; }; - B311B1AB27A52EE600D1DE41 /* MinxIRQ.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6B21A919F1006CDA0F /* MinxIRQ.c */; }; - B311B1AC27A52EE600D1DE41 /* CommandLine.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6321A919F1006CDA0F /* CommandLine.c */; }; - B311B1AD27A52EE600D1DE41 /* MinxCPU_XX.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7D21A919F1006CDA0F /* MinxCPU_XX.c */; }; - B311B1AE27A52EE600D1DE41 /* freebios.c in Sources */ = {isa = PBXBuildFile; fileRef = 081A46191B95660100565444 /* freebios.c */; }; - B311B1AF27A52EE600D1DE41 /* MinxIO.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8921A919F1006CDA0F /* MinxIO.c */; }; - B311B1B027A52EE600D1DE41 /* MinxCPU_SP.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6221A919F1006CDA0F /* MinxCPU_SP.c */; }; - B311B1B127A52EE600D1DE41 /* MinxColorPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7F21A919F1006CDA0F /* MinxColorPRC.c */; }; - B311B1B227A52EE600D1DE41 /* Video_x5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8A21A919F1006CDA0F /* Video_x5.c */; }; - B311B1B327A52EE600D1DE41 /* PokeMini_BG4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0521A91A8C006CDA0F /* PokeMini_BG4.c */; }; - B311B1B427A52EE600D1DE41 /* Joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8021A919F1006CDA0F /* Joystick.c */; }; - B311B1B627A52EE600D1DE41 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5632106D5EB00C45F09 /* PVSupport.framework */; }; - B311B1B727A52EE600D1DE41 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85C91E9C1BB0009155A6 /* AudioToolbox.framework */; }; - B311B1B827A52EE600D1DE41 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85AA1E9BF16B009155A6 /* OpenGLES.framework */; platformFilter = ios; }; - B311B1BA27A52EE600D1DE41 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B682058593700CFF7D8 /* Core.plist */; }; B34AB5642106D5EB00C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5632106D5EB00C45F09 /* PVSupport.framework */; }; - B34AB5662106D5F700C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5652106D5F700C45F09 /* PVSupport.framework */; }; B3532B8E21A919F1006CDA0F /* MinxTimers.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5621A919F1006CDA0F /* MinxTimers.c */; }; - B3532B8F21A919F1006CDA0F /* MinxTimers.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5621A919F1006CDA0F /* MinxTimers.c */; }; B3532B9021A919F1006CDA0F /* MinxLCD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5721A919F1006CDA0F /* MinxLCD.h */; }; - B3532B9121A919F1006CDA0F /* MinxLCD.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5721A919F1006CDA0F /* MinxLCD.h */; }; B3532B9221A919F1006CDA0F /* Missing.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5821A919F1006CDA0F /* Missing.c */; }; - B3532B9321A919F1006CDA0F /* Missing.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5821A919F1006CDA0F /* Missing.c */; }; B3532B9421A919F1006CDA0F /* Multicart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5921A919F1006CDA0F /* Multicart.c */; }; - B3532B9521A919F1006CDA0F /* Multicart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5921A919F1006CDA0F /* Multicart.c */; }; B3532B9621A919F1006CDA0F /* Video_x6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5A21A919F1006CDA0F /* Video_x6.h */; }; - B3532B9721A919F1006CDA0F /* Video_x6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5A21A919F1006CDA0F /* Video_x6.h */; }; B3532B9821A919F1006CDA0F /* UI.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5B21A919F1006CDA0F /* UI.h */; }; - B3532B9921A919F1006CDA0F /* UI.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5B21A919F1006CDA0F /* UI.h */; }; B3532B9A21A919F1006CDA0F /* Video_x4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5C21A919F1006CDA0F /* Video_x4.c */; }; - B3532B9B21A919F1006CDA0F /* Video_x4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5C21A919F1006CDA0F /* Video_x4.c */; }; B3532B9C21A919F1006CDA0F /* Video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5D21A919F1006CDA0F /* Video.c */; }; - B3532B9D21A919F1006CDA0F /* Video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B5D21A919F1006CDA0F /* Video.c */; }; B3532B9E21A919F1006CDA0F /* MinxPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5E21A919F1006CDA0F /* MinxPRC.h */; }; - B3532B9F21A919F1006CDA0F /* MinxPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B5E21A919F1006CDA0F /* MinxPRC.h */; }; B3532BA221A919F1006CDA0F /* Video_x2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6021A919F1006CDA0F /* Video_x2.h */; }; - B3532BA321A919F1006CDA0F /* Video_x2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6021A919F1006CDA0F /* Video_x2.h */; }; B3532BA421A919F1006CDA0F /* Hardware.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6121A919F1006CDA0F /* Hardware.c */; }; - B3532BA521A919F1006CDA0F /* Hardware.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6121A919F1006CDA0F /* Hardware.c */; }; B3532BA621A919F1006CDA0F /* MinxCPU_SP.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6221A919F1006CDA0F /* MinxCPU_SP.c */; }; - B3532BA721A919F1006CDA0F /* MinxCPU_SP.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6221A919F1006CDA0F /* MinxCPU_SP.c */; }; B3532BA821A919F1006CDA0F /* CommandLine.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6321A919F1006CDA0F /* CommandLine.c */; }; - B3532BA921A919F1006CDA0F /* CommandLine.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6321A919F1006CDA0F /* CommandLine.c */; }; B3532BAA21A919F1006CDA0F /* Joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6421A919F1006CDA0F /* Joystick.h */; }; - B3532BAB21A919F1006CDA0F /* Joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6421A919F1006CDA0F /* Joystick.h */; }; B3532BAC21A919F1006CDA0F /* MinxColorPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6521A919F1006CDA0F /* MinxColorPRC.h */; }; - B3532BAD21A919F1006CDA0F /* MinxColorPRC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6521A919F1006CDA0F /* MinxColorPRC.h */; }; B3532BAE21A919F1006CDA0F /* Video_x3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6621A919F1006CDA0F /* Video_x3.c */; }; - B3532BAF21A919F1006CDA0F /* Video_x3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6621A919F1006CDA0F /* Video_x3.c */; }; B3532BB021A919F1006CDA0F /* MinxCPU_noBranch.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6721A919F1006CDA0F /* MinxCPU_noBranch.h */; }; - B3532BB121A919F1006CDA0F /* MinxCPU_noBranch.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6721A919F1006CDA0F /* MinxCPU_noBranch.h */; }; B3532BB221A919F1006CDA0F /* PokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6821A919F1006CDA0F /* PokeMini.h */; }; - B3532BB321A919F1006CDA0F /* PokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6821A919F1006CDA0F /* PokeMini.h */; }; B3532BB421A919F1006CDA0F /* Video_x5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6921A919F1006CDA0F /* Video_x5.h */; }; - B3532BB521A919F1006CDA0F /* Video_x5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6921A919F1006CDA0F /* Video_x5.h */; }; B3532BB621A919F1006CDA0F /* MinxIO.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6A21A919F1006CDA0F /* MinxIO.h */; }; - B3532BB721A919F1006CDA0F /* MinxIO.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6A21A919F1006CDA0F /* MinxIO.h */; }; B3532BB821A919F1006CDA0F /* MinxIRQ.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6B21A919F1006CDA0F /* MinxIRQ.c */; }; - B3532BB921A919F1006CDA0F /* MinxIRQ.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6B21A919F1006CDA0F /* MinxIRQ.c */; }; B3532BBA21A919F1006CDA0F /* IOMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6C21A919F1006CDA0F /* IOMap.h */; }; - B3532BBB21A919F1006CDA0F /* IOMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6C21A919F1006CDA0F /* IOMap.h */; }; B3532BBC21A919F1006CDA0F /* PMCommon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6D21A919F1006CDA0F /* PMCommon.c */; }; - B3532BBD21A919F1006CDA0F /* PMCommon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6D21A919F1006CDA0F /* PMCommon.c */; }; B3532BBE21A919F1006CDA0F /* Video_x1.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6E21A919F1006CDA0F /* Video_x1.h */; }; - B3532BBF21A919F1006CDA0F /* Video_x1.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B6E21A919F1006CDA0F /* Video_x1.h */; }; B3532BC021A919F1006CDA0F /* MinxAudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6F21A919F1006CDA0F /* MinxAudio.c */; }; - B3532BC121A919F1006CDA0F /* MinxAudio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B6F21A919F1006CDA0F /* MinxAudio.c */; }; B3532BC221A919F1006CDA0F /* MinxCPU.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7021A919F1006CDA0F /* MinxCPU.c */; }; - B3532BC321A919F1006CDA0F /* MinxCPU.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7021A919F1006CDA0F /* MinxCPU.c */; }; B3532BC421A919F1006CDA0F /* PokeMini_Version.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7121A919F1006CDA0F /* PokeMini_Version.h */; }; - B3532BC521A919F1006CDA0F /* PokeMini_Version.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7121A919F1006CDA0F /* PokeMini_Version.h */; }; B3532BC621A919F1006CDA0F /* Missing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7221A919F1006CDA0F /* Missing.h */; }; - B3532BC721A919F1006CDA0F /* Missing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7221A919F1006CDA0F /* Missing.h */; }; B3532BC821A919F1006CDA0F /* Multicart.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7321A919F1006CDA0F /* Multicart.h */; }; - B3532BC921A919F1006CDA0F /* Multicart.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7321A919F1006CDA0F /* Multicart.h */; }; B3532BCA21A919F1006CDA0F /* MinxLCD.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7421A919F1006CDA0F /* MinxLCD.c */; }; - B3532BCB21A919F1006CDA0F /* MinxLCD.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7421A919F1006CDA0F /* MinxLCD.c */; }; B3532BCC21A919F1006CDA0F /* MinxTimers.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7521A919F1006CDA0F /* MinxTimers.h */; }; - B3532BCD21A919F1006CDA0F /* MinxTimers.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7521A919F1006CDA0F /* MinxTimers.h */; }; B3532BCE21A919F1006CDA0F /* Keyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7621A919F1006CDA0F /* Keyboard.h */; }; - B3532BCF21A919F1006CDA0F /* Keyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7621A919F1006CDA0F /* Keyboard.h */; }; B3532BD021A919F1006CDA0F /* Video_x2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7721A919F1006CDA0F /* Video_x2.c */; }; - B3532BD121A919F1006CDA0F /* Video_x2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7721A919F1006CDA0F /* Video_x2.c */; }; B3532BD221A919F1006CDA0F /* MinxCPU_CE.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7821A919F1006CDA0F /* MinxCPU_CE.c */; }; - B3532BD321A919F1006CDA0F /* MinxCPU_CE.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7821A919F1006CDA0F /* MinxCPU_CE.c */; }; B3532BD421A919F1006CDA0F /* MinxPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7921A919F1006CDA0F /* MinxPRC.c */; }; - B3532BD521A919F1006CDA0F /* MinxPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7921A919F1006CDA0F /* MinxPRC.c */; }; B3532BD621A919F1006CDA0F /* Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7A21A919F1006CDA0F /* Video.h */; }; - B3532BD721A919F1006CDA0F /* Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7A21A919F1006CDA0F /* Video.h */; }; B3532BD821A919F1006CDA0F /* Video_x4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7B21A919F1006CDA0F /* Video_x4.h */; }; - B3532BD921A919F1006CDA0F /* Video_x4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B7B21A919F1006CDA0F /* Video_x4.h */; }; B3532BDC21A919F1006CDA0F /* MinxCPU_XX.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7D21A919F1006CDA0F /* MinxCPU_XX.c */; }; - B3532BDD21A919F1006CDA0F /* MinxCPU_XX.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7D21A919F1006CDA0F /* MinxCPU_XX.c */; }; B3532BDE21A919F1006CDA0F /* Video_x6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7E21A919F1006CDA0F /* Video_x6.c */; }; - B3532BDF21A919F1006CDA0F /* Video_x6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7E21A919F1006CDA0F /* Video_x6.c */; }; B3532BE021A919F1006CDA0F /* MinxColorPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7F21A919F1006CDA0F /* MinxColorPRC.c */; }; - B3532BE121A919F1006CDA0F /* MinxColorPRC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B7F21A919F1006CDA0F /* MinxColorPRC.c */; }; B3532BE421A919F1006CDA0F /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8121A919F1006CDA0F /* CommandLine.h */; }; - B3532BE521A919F1006CDA0F /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8121A919F1006CDA0F /* CommandLine.h */; }; B3532BE621A919F1006CDA0F /* Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8221A919F1006CDA0F /* Hardware.h */; }; - B3532BE721A919F1006CDA0F /* Hardware.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8221A919F1006CDA0F /* Hardware.h */; }; B3532BE821A919F1006CDA0F /* MinxCPU_CF.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8321A919F1006CDA0F /* MinxCPU_CF.c */; }; - B3532BE921A919F1006CDA0F /* MinxCPU_CF.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8321A919F1006CDA0F /* MinxCPU_CF.c */; }; B3532BEA21A919F1006CDA0F /* PMCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8421A919F1006CDA0F /* PMCommon.h */; }; - B3532BEB21A919F1006CDA0F /* PMCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8421A919F1006CDA0F /* PMCommon.h */; }; B3532BEC21A919F1006CDA0F /* MinxCPU.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8521A919F1006CDA0F /* MinxCPU.h */; }; - B3532BED21A919F1006CDA0F /* MinxCPU.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8521A919F1006CDA0F /* MinxCPU.h */; }; B3532BEE21A919F1006CDA0F /* MinxAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8621A919F1006CDA0F /* MinxAudio.h */; }; - B3532BEF21A919F1006CDA0F /* MinxAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8621A919F1006CDA0F /* MinxAudio.h */; }; B3532BF021A919F1006CDA0F /* Video_x1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8721A919F1006CDA0F /* Video_x1.c */; }; - B3532BF121A919F1006CDA0F /* Video_x1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8721A919F1006CDA0F /* Video_x1.c */; }; B3532BF221A919F1006CDA0F /* MinxIRQ.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8821A919F1006CDA0F /* MinxIRQ.h */; }; - B3532BF321A919F1006CDA0F /* MinxIRQ.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8821A919F1006CDA0F /* MinxIRQ.h */; }; B3532BF421A919F1006CDA0F /* MinxIO.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8921A919F1006CDA0F /* MinxIO.c */; }; - B3532BF521A919F1006CDA0F /* MinxIO.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8921A919F1006CDA0F /* MinxIO.c */; }; B3532BF621A919F1006CDA0F /* Video_x5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8A21A919F1006CDA0F /* Video_x5.c */; }; - B3532BF721A919F1006CDA0F /* Video_x5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8A21A919F1006CDA0F /* Video_x5.c */; }; B3532BF821A919F1006CDA0F /* Endianess.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8B21A919F1006CDA0F /* Endianess.h */; }; - B3532BF921A919F1006CDA0F /* Endianess.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8B21A919F1006CDA0F /* Endianess.h */; }; B3532BFA21A919F1006CDA0F /* Video_x3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8C21A919F1006CDA0F /* Video_x3.h */; }; - B3532BFB21A919F1006CDA0F /* Video_x3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532B8C21A919F1006CDA0F /* Video_x3.h */; }; B3532BFC21A919F1006CDA0F /* PokeMini.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8D21A919F1006CDA0F /* PokeMini.c */; }; - B3532BFD21A919F1006CDA0F /* PokeMini.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8D21A919F1006CDA0F /* PokeMini.c */; }; B3532C0E21A91A8D006CDA0F /* PokeMini_BG5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFE21A91A8B006CDA0F /* PokeMini_BG5.h */; }; - B3532C0F21A91A8D006CDA0F /* PokeMini_BG5.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFE21A91A8B006CDA0F /* PokeMini_BG5.h */; }; B3532C1021A91A8D006CDA0F /* PokeMini_BG6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFF21A91A8B006CDA0F /* PokeMini_BG6.h */; }; - B3532C1121A91A8D006CDA0F /* PokeMini_BG6.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532BFF21A91A8B006CDA0F /* PokeMini_BG6.h */; }; B3532C1221A91A8D006CDA0F /* PokeMini_BG3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0021A91A8C006CDA0F /* PokeMini_BG3.h */; }; - B3532C1321A91A8D006CDA0F /* PokeMini_BG3.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0021A91A8C006CDA0F /* PokeMini_BG3.h */; }; B3532C1421A91A8D006CDA0F /* PokeMini_Icons12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0121A91A8C006CDA0F /* PokeMini_Icons12.h */; }; - B3532C1521A91A8D006CDA0F /* PokeMini_Icons12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0121A91A8C006CDA0F /* PokeMini_Icons12.h */; }; B3532C1621A91A8D006CDA0F /* PokeMini_BG2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0221A91A8C006CDA0F /* PokeMini_BG2.h */; }; - B3532C1721A91A8D006CDA0F /* PokeMini_BG2.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0221A91A8C006CDA0F /* PokeMini_BG2.h */; }; B3532C1821A91A8D006CDA0F /* PokeMini_BG2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0321A91A8C006CDA0F /* PokeMini_BG2.c */; }; - B3532C1921A91A8D006CDA0F /* PokeMini_BG2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0321A91A8C006CDA0F /* PokeMini_BG2.c */; }; B3532C1A21A91A8D006CDA0F /* PokeMini_BG3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0421A91A8C006CDA0F /* PokeMini_BG3.c */; }; - B3532C1B21A91A8D006CDA0F /* PokeMini_BG3.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0421A91A8C006CDA0F /* PokeMini_BG3.c */; }; B3532C1C21A91A8D006CDA0F /* PokeMini_BG4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0521A91A8C006CDA0F /* PokeMini_BG4.c */; }; - B3532C1D21A91A8D006CDA0F /* PokeMini_BG4.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0521A91A8C006CDA0F /* PokeMini_BG4.c */; }; B3532C1E21A91A8D006CDA0F /* PokeMini_BG5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0621A91A8C006CDA0F /* PokeMini_BG5.c */; }; - B3532C1F21A91A8D006CDA0F /* PokeMini_BG5.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0621A91A8C006CDA0F /* PokeMini_BG5.c */; }; B3532C2021A91A8D006CDA0F /* PokeMini_Font12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0721A91A8C006CDA0F /* PokeMini_Font12.c */; }; - B3532C2121A91A8D006CDA0F /* PokeMini_Font12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0721A91A8C006CDA0F /* PokeMini_Font12.c */; }; B3532C2221A91A8D006CDA0F /* PokeMini_ColorPal.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0821A91A8D006CDA0F /* PokeMini_ColorPal.c */; }; - B3532C2321A91A8D006CDA0F /* PokeMini_ColorPal.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0821A91A8D006CDA0F /* PokeMini_ColorPal.c */; }; B3532C2421A91A8D006CDA0F /* PokeMini_BG4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0921A91A8D006CDA0F /* PokeMini_BG4.h */; }; - B3532C2521A91A8D006CDA0F /* PokeMini_BG4.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0921A91A8D006CDA0F /* PokeMini_BG4.h */; }; B3532C2621A91A8D006CDA0F /* PokeMini_Font12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0A21A91A8D006CDA0F /* PokeMini_Font12.h */; }; - B3532C2721A91A8D006CDA0F /* PokeMini_Font12.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0A21A91A8D006CDA0F /* PokeMini_Font12.h */; }; B3532C2821A91A8D006CDA0F /* PokeMini_BG6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0B21A91A8D006CDA0F /* PokeMini_BG6.c */; }; - B3532C2921A91A8D006CDA0F /* PokeMini_BG6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0B21A91A8D006CDA0F /* PokeMini_BG6.c */; }; B3532C2A21A91A8D006CDA0F /* PokeMini_Icons12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0C21A91A8D006CDA0F /* PokeMini_Icons12.c */; }; - B3532C2B21A91A8D006CDA0F /* PokeMini_Icons12.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C0C21A91A8D006CDA0F /* PokeMini_Icons12.c */; }; B3532C2C21A91A8D006CDA0F /* PokeMini_ColorPal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0D21A91A8D006CDA0F /* PokeMini_ColorPal.h */; }; - B3532C2D21A91A8D006CDA0F /* PokeMini_ColorPal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3532C0D21A91A8D006CDA0F /* PokeMini_ColorPal.h */; }; B3532C2E21A91B46006CDA0F /* Joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8021A919F1006CDA0F /* Joystick.c */; }; - B3532C2F21A91B46006CDA0F /* Joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532B8021A919F1006CDA0F /* Joystick.c */; }; B3532C3321A91C26006CDA0F /* NoUI.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C3221A91C25006CDA0F /* NoUI.c */; }; - B3532C3421A91C26006CDA0F /* NoUI.c in Sources */ = {isa = PBXBuildFile; fileRef = B3532C3221A91C25006CDA0F /* NoUI.c */; }; B3547B692058593700CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B682058593700CFF7D8 /* Core.plist */; }; - B3547B6A2058593700CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B682058593700CFF7D8 /* Core.plist */; }; B3CB854D1E9BECBF009155A6 /* PVPokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3CB854B1E9BECBF009155A6 /* PVPokeMini.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3CB85601E9BF153009155A6 /* PVPokeMiniEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 081A45981B95604700565444 /* PVPokeMiniEmulatorCore.m */; }; B3CB857E1E9BF153009155A6 /* freebios.c in Sources */ = {isa = PBXBuildFile; fileRef = 081A46191B95660100565444 /* freebios.c */; }; - B3CB85851E9BF153009155A6 /* PVPokeMiniEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 081A45981B95604700565444 /* PVPokeMiniEmulatorCore.m */; }; - B3CB85A31E9BF153009155A6 /* freebios.c in Sources */ = {isa = PBXBuildFile; fileRef = 081A46191B95660100565444 /* freebios.c */; }; - B3CB85AB1E9BF16B009155A6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85AA1E9BF16B009155A6 /* OpenGLES.framework */; platformFilter = ios; }; - B3CB85B31E9BF189009155A6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85B21E9BF189009155A6 /* OpenGLES.framework */; }; - B3CB85B51E9BF18D009155A6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85B41E9BF18D009155A6 /* UIKit.framework */; }; B3CB85B61E9BF19B009155A6 /* PVPokeMiniEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 081A45971B95604700565444 /* PVPokeMiniEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3CB85B71E9BF19C009155A6 /* PVPokeMiniEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 081A45971B95604700565444 /* PVPokeMiniEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3CB85B81E9BF9DB009155A6 /* PVPokeMini.h in Headers */ = {isa = PBXBuildFile; fileRef = B3CB854B1E9BECBF009155A6 /* PVPokeMini.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3CB85CA1E9C1BB0009155A6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85C91E9C1BB0009155A6 /* AudioToolbox.framework */; }; - B3CB85CC1E9C1BB9009155A6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CB85CB1E9C1BB9009155A6 /* AudioToolbox.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -252,7 +92,6 @@ 081A45981B95604700565444 /* PVPokeMiniEmulatorCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PVPokeMiniEmulatorCore.m; path = PokeMini/PVPokeMiniEmulatorCore.m; sourceTree = SOURCE_ROOT; }; 081A46191B95660100565444 /* freebios.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = freebios.c; sourceTree = ""; }; 081A461A1B95660100565444 /* freebios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freebios.h; sourceTree = ""; }; - B311B1BF27A52EE600D1DE41 /* PVPokeMini.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPokeMini.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B311B1C027A52EE800D1DE41 /* PVPokeMini-iOS copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PVPokeMini-iOS copy-Info.plist"; path = "/Users/jmattiello/Workspace/Provenance/Provenance/Cores/PokeMini/PVPokeMini-iOS copy-Info.plist"; sourceTree = ""; }; B34AB5632106D5EB00C45F09 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B34AB5652106D5F700C45F09 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -333,43 +172,21 @@ B3CB85491E9BECBF009155A6 /* PVPokeMini.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPokeMini.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3CB854B1E9BECBF009155A6 /* PVPokeMini.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPokeMini.h; sourceTree = ""; }; B3CB854C1E9BECBF009155A6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3CB85561E9BECCF009155A6 /* PVPokeMini.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPokeMini.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3CB85AA1E9BF16B009155A6 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B3CB85B21E9BF189009155A6 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.2.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B3CB85B41E9BF18D009155A6 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; B3CB85C91E9C1BB0009155A6 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; B3CB85CB1E9C1BB9009155A6 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.2.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + B3EA6C8E2926118D00010224 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B311B1B527A52EE600D1DE41 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B311B1B627A52EE600D1DE41 /* PVSupport.framework in Frameworks */, - B311B1B727A52EE600D1DE41 /* AudioToolbox.framework in Frameworks */, - B311B1B827A52EE600D1DE41 /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3CB85451E9BECBF009155A6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( B34AB5642106D5EB00C45F09 /* PVSupport.framework in Frameworks */, B3CB85CA1E9C1BB0009155A6 /* AudioToolbox.framework in Frameworks */, - B3CB85AB1E9BF16B009155A6 /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3CB85521E9BECCF009155A6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B34AB5662106D5F700C45F09 /* PVSupport.framework in Frameworks */, - B3CB85CC1E9C1BB9009155A6 /* AudioToolbox.framework in Frameworks */, - B3CB85B51E9BF18D009155A6 /* UIKit.framework in Frameworks */, - B3CB85B31E9BF189009155A6 /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -392,8 +209,6 @@ isa = PBXGroup; children = ( B3CB85491E9BECBF009155A6 /* PVPokeMini.framework */, - B3CB85561E9BECCF009155A6 /* PVPokeMini.framework */, - B311B1BF27A52EE600D1DE41 /* PVPokeMini.framework */, ); name = Products; sourceTree = ""; @@ -413,6 +228,7 @@ 081A45F71B9563EF00565444 /* Frameworks */ = { isa = PBXGroup; children = ( + B3EA6C8E2926118D00010224 /* PVSupport.framework */, B3CB85CB1E9C1BB9009155A6 /* AudioToolbox.framework */, B3CB85C91E9C1BB0009155A6 /* AudioToolbox.framework */, B3CB85B21E9BF189009155A6 /* OpenGLES.framework */, @@ -536,51 +352,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B311B16827A52EE600D1DE41 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B311B16927A52EE600D1DE41 /* PokeMini_Font12.h in Headers */, - B311B16A27A52EE600D1DE41 /* PokeMini_BG3.h in Headers */, - B311B16B27A52EE600D1DE41 /* MinxIO.h in Headers */, - B311B16C27A52EE600D1DE41 /* Joystick.h in Headers */, - B311B16D27A52EE600D1DE41 /* CommandLine.h in Headers */, - B311B16E27A52EE600D1DE41 /* PokeMini_BG2.h in Headers */, - B311B16F27A52EE600D1DE41 /* MinxPRC.h in Headers */, - B311B17027A52EE600D1DE41 /* IOMap.h in Headers */, - B311B17127A52EE600D1DE41 /* MinxCPU_noBranch.h in Headers */, - B311B17227A52EE600D1DE41 /* Video_x5.h in Headers */, - B311B17327A52EE600D1DE41 /* Endianess.h in Headers */, - B311B17427A52EE600D1DE41 /* MinxTimers.h in Headers */, - B311B17527A52EE600D1DE41 /* Video_x2.h in Headers */, - B311B17627A52EE600D1DE41 /* Missing.h in Headers */, - B311B17727A52EE600D1DE41 /* Keyboard.h in Headers */, - B311B17827A52EE600D1DE41 /* MinxIRQ.h in Headers */, - B311B17927A52EE600D1DE41 /* PokeMini_Icons12.h in Headers */, - B311B17A27A52EE600D1DE41 /* Video_x1.h in Headers */, - B311B17B27A52EE600D1DE41 /* MinxColorPRC.h in Headers */, - B311B17C27A52EE600D1DE41 /* Video.h in Headers */, - B311B17D27A52EE600D1DE41 /* Hardware.h in Headers */, - B311B17E27A52EE600D1DE41 /* PokeMini_BG4.h in Headers */, - B311B17F27A52EE600D1DE41 /* Video_x3.h in Headers */, - B311B18027A52EE600D1DE41 /* MinxCPU.h in Headers */, - B311B18127A52EE600D1DE41 /* PokeMini_Version.h in Headers */, - B311B18227A52EE600D1DE41 /* PokeMini_BG5.h in Headers */, - B311B18327A52EE600D1DE41 /* PokeMini_ColorPal.h in Headers */, - B311B18427A52EE600D1DE41 /* Video_x4.h in Headers */, - B311B18527A52EE600D1DE41 /* Video_x6.h in Headers */, - B311B18627A52EE600D1DE41 /* UI.h in Headers */, - B311B18727A52EE600D1DE41 /* PMCommon.h in Headers */, - B311B18827A52EE600D1DE41 /* MinxLCD.h in Headers */, - B311B18927A52EE600D1DE41 /* PVPokeMini.h in Headers */, - B311B18A27A52EE600D1DE41 /* PokeMini.h in Headers */, - B311B18B27A52EE600D1DE41 /* Multicart.h in Headers */, - B311B18C27A52EE600D1DE41 /* PVPokeMiniEmulatorCore.h in Headers */, - B311B18D27A52EE600D1DE41 /* PokeMini_BG6.h in Headers */, - B311B18E27A52EE600D1DE41 /* MinxAudio.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3CB85461E9BECBF009155A6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -626,75 +397,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3CB85531E9BECCF009155A6 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3532C2721A91A8D006CDA0F /* PokeMini_Font12.h in Headers */, - B3532C1321A91A8D006CDA0F /* PokeMini_BG3.h in Headers */, - B3532BB721A919F1006CDA0F /* MinxIO.h in Headers */, - B3532BAB21A919F1006CDA0F /* Joystick.h in Headers */, - B3532BE521A919F1006CDA0F /* CommandLine.h in Headers */, - B3532C1721A91A8D006CDA0F /* PokeMini_BG2.h in Headers */, - B3532B9F21A919F1006CDA0F /* MinxPRC.h in Headers */, - B3532BBB21A919F1006CDA0F /* IOMap.h in Headers */, - B3532BB121A919F1006CDA0F /* MinxCPU_noBranch.h in Headers */, - B3532BB521A919F1006CDA0F /* Video_x5.h in Headers */, - B3532BF921A919F1006CDA0F /* Endianess.h in Headers */, - B3532BCD21A919F1006CDA0F /* MinxTimers.h in Headers */, - B3532BA321A919F1006CDA0F /* Video_x2.h in Headers */, - B3532BC721A919F1006CDA0F /* Missing.h in Headers */, - B3532BCF21A919F1006CDA0F /* Keyboard.h in Headers */, - B3532BF321A919F1006CDA0F /* MinxIRQ.h in Headers */, - B3532C1521A91A8D006CDA0F /* PokeMini_Icons12.h in Headers */, - B3532BBF21A919F1006CDA0F /* Video_x1.h in Headers */, - B3532BAD21A919F1006CDA0F /* MinxColorPRC.h in Headers */, - B3532BD721A919F1006CDA0F /* Video.h in Headers */, - B3532BE721A919F1006CDA0F /* Hardware.h in Headers */, - B3532C2521A91A8D006CDA0F /* PokeMini_BG4.h in Headers */, - B3532BFB21A919F1006CDA0F /* Video_x3.h in Headers */, - B3532BED21A919F1006CDA0F /* MinxCPU.h in Headers */, - B3532BC521A919F1006CDA0F /* PokeMini_Version.h in Headers */, - B3532C0F21A91A8D006CDA0F /* PokeMini_BG5.h in Headers */, - B3532C2D21A91A8D006CDA0F /* PokeMini_ColorPal.h in Headers */, - B3532BD921A919F1006CDA0F /* Video_x4.h in Headers */, - B3532B9721A919F1006CDA0F /* Video_x6.h in Headers */, - B3532B9921A919F1006CDA0F /* UI.h in Headers */, - B3532BEB21A919F1006CDA0F /* PMCommon.h in Headers */, - B3532B9121A919F1006CDA0F /* MinxLCD.h in Headers */, - B3CB85B81E9BF9DB009155A6 /* PVPokeMini.h in Headers */, - B3532BB321A919F1006CDA0F /* PokeMini.h in Headers */, - B3532BC921A919F1006CDA0F /* Multicart.h in Headers */, - B3CB85B71E9BF19C009155A6 /* PVPokeMiniEmulatorCore.h in Headers */, - B3532C1121A91A8D006CDA0F /* PokeMini_BG6.h in Headers */, - B3532BEF21A919F1006CDA0F /* MinxAudio.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B311B16727A52EE600D1DE41 /* PVPokeMini-watchOS */ = { + B3CB85481E9BECBF009155A6 /* PVPokeMini */ = { isa = PBXNativeTarget; - buildConfigurationList = B311B1BB27A52EE600D1DE41 /* Build configuration list for PBXNativeTarget "PVPokeMini-watchOS" */; - buildPhases = ( - B311B16827A52EE600D1DE41 /* Headers */, - B311B18F27A52EE600D1DE41 /* Sources */, - B311B1B527A52EE600D1DE41 /* Frameworks */, - B311B1B927A52EE600D1DE41 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVPokeMini-watchOS"; - productName = PVPokeMini; - productReference = B311B1BF27A52EE600D1DE41 /* PVPokeMini.framework */; - productType = "com.apple.product-type.framework"; - }; - B3CB85481E9BECBF009155A6 /* PVPokeMini-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3CB854E1E9BECBF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini-iOS" */; + buildConfigurationList = B3CB854E1E9BECBF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini" */; buildPhases = ( B3CB85461E9BECBF009155A6 /* Headers */, B3CB85441E9BECBF009155A6 /* Sources */, @@ -705,29 +413,11 @@ ); dependencies = ( ); - name = "PVPokeMini-iOS"; + name = PVPokeMini; productName = PVPokeMini; productReference = B3CB85491E9BECBF009155A6 /* PVPokeMini.framework */; productType = "com.apple.product-type.framework"; }; - B3CB85551E9BECCF009155A6 /* PVPokeMini-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3CB855B1E9BECCF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini-tvOS" */; - buildPhases = ( - B3CB85531E9BECCF009155A6 /* Headers */, - B3CB85511E9BECCF009155A6 /* Sources */, - B3CB85521E9BECCF009155A6 /* Frameworks */, - B3CB85541E9BECCF009155A6 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVPokeMini-tvOS"; - productName = "PVPokeMini tvOS"; - productReference = B3CB85561E9BECCF009155A6 /* PVPokeMini.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -742,9 +432,6 @@ B3CB85481E9BECBF009155A6 = { CreatedOnToolsVersion = 8.3; }; - B3CB85551E9BECCF009155A6 = { - CreatedOnToolsVersion = 8.3; - }; }; }; buildConfigurationList = 081A45871B955FA800565444 /* Build configuration list for PBXProject "PVPokeMini" */; @@ -760,22 +447,12 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3CB85481E9BECBF009155A6 /* PVPokeMini-iOS */, - B3CB85551E9BECCF009155A6 /* PVPokeMini-tvOS */, - B311B16727A52EE600D1DE41 /* PVPokeMini-watchOS */, + B3CB85481E9BECBF009155A6 /* PVPokeMini */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B311B1B927A52EE600D1DE41 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B311B1BA27A52EE600D1DE41 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3CB85471E9BECBF009155A6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -784,61 +461,9 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3CB85541E9BECCF009155A6 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B6A2058593700CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B311B18F27A52EE600D1DE41 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B311B19027A52EE600D1DE41 /* Missing.c in Sources */, - B311B19127A52EE600D1DE41 /* PokeMini.c in Sources */, - B311B19227A52EE600D1DE41 /* PMCommon.c in Sources */, - B311B19327A52EE600D1DE41 /* PokeMini_ColorPal.c in Sources */, - B311B19427A52EE600D1DE41 /* Video_x1.c in Sources */, - B311B19527A52EE600D1DE41 /* PokeMini_Icons12.c in Sources */, - B311B19627A52EE600D1DE41 /* PokeMini_BG6.c in Sources */, - B311B19727A52EE600D1DE41 /* PokeMini_BG5.c in Sources */, - B311B19827A52EE600D1DE41 /* PVPokeMiniEmulatorCore.m in Sources */, - B311B19927A52EE600D1DE41 /* MinxCPU_CE.c in Sources */, - B311B19A27A52EE600D1DE41 /* NoUI.c in Sources */, - B311B19B27A52EE600D1DE41 /* MinxLCD.c in Sources */, - B311B19C27A52EE600D1DE41 /* MinxCPU_CF.c in Sources */, - B311B19D27A52EE600D1DE41 /* Video.c in Sources */, - B311B19E27A52EE600D1DE41 /* Video_x4.c in Sources */, - B311B19F27A52EE600D1DE41 /* Video_x6.c in Sources */, - B311B1A027A52EE600D1DE41 /* MinxCPU.c in Sources */, - B311B1A127A52EE600D1DE41 /* PokeMini_Font12.c in Sources */, - B311B1A227A52EE600D1DE41 /* Hardware.c in Sources */, - B311B1A327A52EE600D1DE41 /* Video_x2.c in Sources */, - B311B1A427A52EE600D1DE41 /* MinxTimers.c in Sources */, - B311B1A527A52EE600D1DE41 /* MinxAudio.c in Sources */, - B311B1A627A52EE600D1DE41 /* PokeMini_BG3.c in Sources */, - B311B1A727A52EE600D1DE41 /* MinxPRC.c in Sources */, - B311B1A827A52EE600D1DE41 /* Multicart.c in Sources */, - B311B1A927A52EE600D1DE41 /* Video_x3.c in Sources */, - B311B1AA27A52EE600D1DE41 /* PokeMini_BG2.c in Sources */, - B311B1AB27A52EE600D1DE41 /* MinxIRQ.c in Sources */, - B311B1AC27A52EE600D1DE41 /* CommandLine.c in Sources */, - B311B1AD27A52EE600D1DE41 /* MinxCPU_XX.c in Sources */, - B311B1AE27A52EE600D1DE41 /* freebios.c in Sources */, - B311B1AF27A52EE600D1DE41 /* MinxIO.c in Sources */, - B311B1B027A52EE600D1DE41 /* MinxCPU_SP.c in Sources */, - B311B1B127A52EE600D1DE41 /* MinxColorPRC.c in Sources */, - B311B1B227A52EE600D1DE41 /* Video_x5.c in Sources */, - B311B1B327A52EE600D1DE41 /* PokeMini_BG4.c in Sources */, - B311B1B427A52EE600D1DE41 /* Joystick.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3CB85441E9BECBF009155A6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -883,50 +508,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3CB85511E9BECCF009155A6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3532B9321A919F1006CDA0F /* Missing.c in Sources */, - B3532BFD21A919F1006CDA0F /* PokeMini.c in Sources */, - B3532BBD21A919F1006CDA0F /* PMCommon.c in Sources */, - B3532C2321A91A8D006CDA0F /* PokeMini_ColorPal.c in Sources */, - B3532BF121A919F1006CDA0F /* Video_x1.c in Sources */, - B3532C2B21A91A8D006CDA0F /* PokeMini_Icons12.c in Sources */, - B3532C2921A91A8D006CDA0F /* PokeMini_BG6.c in Sources */, - B3532C1F21A91A8D006CDA0F /* PokeMini_BG5.c in Sources */, - B3CB85851E9BF153009155A6 /* PVPokeMiniEmulatorCore.m in Sources */, - B3532BD321A919F1006CDA0F /* MinxCPU_CE.c in Sources */, - B3532C3421A91C26006CDA0F /* NoUI.c in Sources */, - B3532BCB21A919F1006CDA0F /* MinxLCD.c in Sources */, - B3532BE921A919F1006CDA0F /* MinxCPU_CF.c in Sources */, - B3532B9D21A919F1006CDA0F /* Video.c in Sources */, - B3532B9B21A919F1006CDA0F /* Video_x4.c in Sources */, - B3532BDF21A919F1006CDA0F /* Video_x6.c in Sources */, - B3532BC321A919F1006CDA0F /* MinxCPU.c in Sources */, - B3532C2121A91A8D006CDA0F /* PokeMini_Font12.c in Sources */, - B3532BA521A919F1006CDA0F /* Hardware.c in Sources */, - B3532BD121A919F1006CDA0F /* Video_x2.c in Sources */, - B3532B8F21A919F1006CDA0F /* MinxTimers.c in Sources */, - B3532BC121A919F1006CDA0F /* MinxAudio.c in Sources */, - B3532C1B21A91A8D006CDA0F /* PokeMini_BG3.c in Sources */, - B3532BD521A919F1006CDA0F /* MinxPRC.c in Sources */, - B3532B9521A919F1006CDA0F /* Multicart.c in Sources */, - B3532BAF21A919F1006CDA0F /* Video_x3.c in Sources */, - B3532C1921A91A8D006CDA0F /* PokeMini_BG2.c in Sources */, - B3532BB921A919F1006CDA0F /* MinxIRQ.c in Sources */, - B3532BA921A919F1006CDA0F /* CommandLine.c in Sources */, - B3532BDD21A919F1006CDA0F /* MinxCPU_XX.c in Sources */, - B3CB85A31E9BF153009155A6 /* freebios.c in Sources */, - B3532BF521A919F1006CDA0F /* MinxIO.c in Sources */, - B3532BA721A919F1006CDA0F /* MinxCPU_SP.c in Sources */, - B3532BE121A919F1006CDA0F /* MinxColorPRC.c in Sources */, - B3532BF721A919F1006CDA0F /* Video_x5.c in Sources */, - B3532C1D21A91A8D006CDA0F /* PokeMini_BG4.c in Sources */, - B3532C2F21A91B46006CDA0F /* Joystick.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -977,7 +558,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PokeMini-libretro/libretro/libretro-common/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACOSX_DEPLOYMENT_TARGET = 10.11; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -1028,7 +609,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PokeMini-libretro/libretro/libretro-common/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACOSX_DEPLOYMENT_TARGET = 10.11; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -1036,145 +617,6 @@ }; name = Release; }; - B311B1BC27A52EE600D1DE41 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_TESTABILITY = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "NO_ZIP=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVPokeMini/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; - PRODUCT_NAME = PVPokeMini; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B311B1BD27A52EE600D1DE41 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = "NO_ZIP=1"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVPokeMini/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; - PRODUCT_NAME = PVPokeMini; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B311B1BE27A52EE600D1DE41 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = "NO_ZIP=1"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVPokeMini/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; - PRODUCT_NAME = PVPokeMini; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; B324C5322191A4D6009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1218,7 +660,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/PokeMini-libretro/libretro/libretro-common/include\""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACOSX_DEPLOYMENT_TARGET = 10.11; SDKROOT = iphoneos; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; @@ -1228,6 +670,7 @@ B324C5332191A4D6009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1249,7 +692,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVPokeMini/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1262,49 +705,11 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5342191A4D6009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = "NO_ZIP=1"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVPokeMini/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; - PRODUCT_NAME = PVPokeMini; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1314,6 +719,7 @@ B3CB854F1E9BECBF009155A6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1342,7 +748,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVPokeMini/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1356,7 +762,11 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1365,6 +775,7 @@ B3CB85501E9BECBF009155A6 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1386,7 +797,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVPokeMini/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1399,97 +810,11 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B3CB855C1E9BECCF009155A6 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - ENABLE_TESTABILITY = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "NO_ZIP=1", - "$(inherited)", - ); - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVPokeMini/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; - PRODUCT_NAME = PVPokeMini; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3CB855D1E9BECCF009155A6 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = "NO_ZIP=1"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVPokeMini/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPokeMini"; - PRODUCT_NAME = PVPokeMini; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1509,17 +834,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B311B1BB27A52EE600D1DE41 /* Build configuration list for PBXNativeTarget "PVPokeMini-watchOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B311B1BC27A52EE600D1DE41 /* Debug */, - B311B1BD27A52EE600D1DE41 /* Release */, - B311B1BE27A52EE600D1DE41 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3CB854E1E9BECBF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini-iOS" */ = { + B3CB854E1E9BECBF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini" */ = { isa = XCConfigurationList; buildConfigurations = ( B3CB854F1E9BECBF009155A6 /* Debug */, @@ -1529,16 +844,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3CB855B1E9BECCF009155A6 /* Build configuration list for PBXNativeTarget "PVPokeMini-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3CB855C1E9BECCF009155A6 /* Debug */, - B3CB855D1E9BECCF009155A6 /* Release */, - B324C5342191A4D6009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 081A45841B955FA800565444 /* Project object */; diff --git a/Cores/PokeMini/PVPokeMini.xcodeproj/xcshareddata/xcschemes/PVPokeMini.xcscheme b/Cores/PokeMini/PVPokeMini.xcodeproj/xcshareddata/xcschemes/PVPokeMini.xcscheme index a92b64a29f..816bae9772 100644 --- a/Cores/PokeMini/PVPokeMini.xcodeproj/xcshareddata/xcschemes/PVPokeMini.xcscheme +++ b/Cores/PokeMini/PVPokeMini.xcodeproj/xcshareddata/xcschemes/PVPokeMini.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3CB85481E9BECBF009155A6" BuildableName = "PVPokeMini.framework" - BlueprintName = "PVPokeMini-iOS" + BlueprintName = "PVPokeMini" ReferencedContainer = "container:PVPokeMini.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3CB85481E9BECBF009155A6" BuildableName = "PVPokeMini.framework" - BlueprintName = "PVPokeMini-iOS" + BlueprintName = "PVPokeMini" ReferencedContainer = "container:PVPokeMini.xcodeproj"> @@ -61,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3CB85481E9BECBF009155A6" BuildableName = "PVPokeMini.framework" - BlueprintName = "PVPokeMini-iOS" + BlueprintName = "PVPokeMini" ReferencedContainer = "container:PVPokeMini.xcodeproj"> diff --git a/Cores/PokeMini/PVPokeMini/PVPokeMini.h b/Cores/PokeMini/PVPokeMini/PVPokeMini.h index 27f9d1066a..bb0e5bfec3 100644 --- a/Cores/PokeMini/PVPokeMini/PVPokeMini.h +++ b/Cores/PokeMini/PVPokeMini/PVPokeMini.h @@ -6,7 +6,7 @@ // Copyright © 2017 Chloe Stars. All rights reserved. // -#import +#import //! Project version number for PVPokeMini. FOUNDATION_EXPORT double PVPokeMiniVersionNumber; diff --git a/Cores/PokeMini/PokeMini/PVPokeMiniEmulatorCore.m b/Cores/PokeMini/PokeMini/PVPokeMiniEmulatorCore.m index 432292708e..c11c6f7e1a 100644 --- a/Cores/PokeMini/PokeMini/PVPokeMiniEmulatorCore.m +++ b/Cores/PokeMini/PokeMini/PVPokeMiniEmulatorCore.m @@ -29,7 +29,7 @@ #import "PVPokeMiniEmulatorCore.h" @import PVSupport; -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -294,11 +294,14 @@ - (void)executeFrame { PokeMini_EmulateFrame(); if(PokeMini_Rumbling) { + // TODO: Fix rumble +#if TARGET_OS_IOS && !TARGET_OS_MACCATALYST if (shouldRumble) { [self rumble]; shouldRumble = NO; } - +#endif + PokeMini_VideoBlit(videoBuffer + PokeMini_GenRumbleOffset(current->videoWidth), current->videoWidth); } else diff --git a/Cores/Potator/BuildFlags.xcconfig b/Cores/Potator/BuildFlags.xcconfig new file mode 100644 index 0000000000..f91d888167 --- /dev/null +++ b/Cores/Potator/BuildFlags.xcconfig @@ -0,0 +1,28 @@ +// +// BuildFlags.xcconfig +// PVPotator +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 HAVE_SSE=1 FASTMATH=1 HAVE_THREADS=1 HAVE_MUSASHI=1 USE_RGB_565=1 HAVE_SYS_PARAM_H=1 ENABLE_ZLIB=1 ENABLE_CHD=1 NO_CLI=1 OBJ_C IOS USE_POSIX_MEMALIGN __RETRO_ARM__ USE_POSIX_MEMALIGN +// USE_PLAY_JIT=0 USE_SCSP2=0 ENABLE_TSUNAMI=0 DEBUG=0 DEBUG_ASAN=0 DEBUG_UBSAN=0 DEBUG_TSAN=0 DYNAREC=0 HAVE_GRIFFIN=0 HAVE_UWP=0 HAVE_FSEEKO=0 ARCH_IS_LINUX=0 ARCH_IS_MACOSX=0 ARCH_IS_WINDOWS=0 +OTHER_CFLAGS = $(inherited) -ObjC +// -frtti -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/Potator/PVPotator-Prefix.pch b/Cores/Potator/PVPotator-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/Potator/PVPotator-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/Potator/PVPotator.h b/Cores/Potator/PVPotator.h new file mode 100644 index 0000000000..54d96f51fc --- /dev/null +++ b/Cores/Potator/PVPotator.h @@ -0,0 +1,19 @@ +// +// PVPotator.h +// PVPotator +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVPotator. +FOUNDATION_EXPORT double PVPotatorVersionNumber; + +//! Project version string for PVPotator. +FOUNDATION_EXPORT const unsigned char PVPotatorVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/Potator/PVPotator.xcodeproj/project.pbxproj b/Cores/Potator/PVPotator.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..bf1c71dacc --- /dev/null +++ b/Cores/Potator/PVPotator.xcodeproj/project.pbxproj @@ -0,0 +1,1033 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libpotator.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libpotator.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVPotatorCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVPotatorCore.mm */; }; + B37022C92872554300B3F6DA /* PVPotatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVPotatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVPotator.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVPotator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libpotator-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libpotator-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3FF641F2873EBCC00829C14 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0FE2872965F00EAEB37 /* libretro.c */; }; + B3FF64212873EBEB00829C14 /* gpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1132872965F00EAEB37 /* gpu.c */; }; + B3FF64222873EBEB00829C14 /* memorymap.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1122872965F00EAEB37 /* memorymap.c */; }; + B3FF64232873EBEB00829C14 /* watara.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1212872965F00EAEB37 /* watara.c */; }; + B3FF64242873EBEB00829C14 /* controls.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA11B2872965F00EAEB37 /* controls.c */; }; + B3FF64252873EBEB00829C14 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA11F2872965F00EAEB37 /* sound.c */; }; + B3FF64262873EBEB00829C14 /* timer.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1152872965F00EAEB37 /* timer.c */; }; + B3FF642D2873EBF000829C14 /* m6502.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1182872965F00EAEB37 /* m6502.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libpotator.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpotator.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libpotator-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpotator-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVPotator-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVPotator-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVPotator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPotator.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVPotator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPotator.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVPotatorCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPotatorCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVPotatorCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVPotatorCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVPotator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPotator.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3EBA0FB2872965F00EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBA0FE2872965F00EAEB37 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3EBA0FF2872965F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1002872965F00EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EBA1012872965F00EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBA1022872965F00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EBA1032872965F00EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EBA1082872965F00EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBA1092872965F00EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBA10A2872965F00EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBA10B2872965F00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA10D2872965F00EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBA10E2872965F00EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBA10F2872965F00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA1112872965F00EAEB37 /* sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; + B3EBA1122872965F00EAEB37 /* memorymap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memorymap.c; sourceTree = ""; }; + B3EBA1132872965F00EAEB37 /* gpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpu.c; sourceTree = ""; }; + B3EBA1142872965F00EAEB37 /* controls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = controls.h; sourceTree = ""; }; + B3EBA1152872965F00EAEB37 /* timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timer.c; sourceTree = ""; }; + B3EBA1162872965F00EAEB37 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B3EBA1182872965F00EAEB37 /* m6502.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m6502.c; sourceTree = ""; }; + B3EBA1192872965F00EAEB37 /* tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tables.h; sourceTree = ""; }; + B3EBA11A2872965F00EAEB37 /* m6502.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m6502.h; sourceTree = ""; }; + B3EBA11B2872965F00EAEB37 /* controls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = controls.c; sourceTree = ""; }; + B3EBA11C2872965F00EAEB37 /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + B3EBA11D2872965F00EAEB37 /* memorymap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memorymap.h; sourceTree = ""; }; + B3EBA11E2872965F00EAEB37 /* gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu.h; sourceTree = ""; }; + B3EBA11F2872965F00EAEB37 /* sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sound.c; sourceTree = ""; }; + B3EBA1202872965F00EAEB37 /* supervision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = supervision.h; sourceTree = ""; }; + B3EBA1212872965F00EAEB37 /* watara.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = watara.c; sourceTree = ""; }; + B3EBA1222872965F00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA1232872965F00EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libpotator.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libpotator-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVPotator */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVPotator.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVPotator; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVPotatorCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVPotatorCore.h */, + B37022C6287253B300B3F6DA /* PVPotatorCore.mm */, + ); + path = PVPotatorCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EBA0FA2872965F00EAEB37 /* potator */, + B37022BE287253B300B3F6DA /* PVPotator */, + B37022C4287253B300B3F6DA /* PVPotatorCore */, + B37022C3287253B300B3F6DA /* PVPotator.h */, + B37022BD287253B300B3F6DA /* PVPotator-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVPotator.framework */, + B30178D3207C901D0051B93D /* libpotator.a */, + B3344BC32859E088006E6B3A /* libpotator-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EBA0FA2872965F00EAEB37 /* potator */ = { + isa = PBXGroup; + children = ( + B3EBA1222872965F00EAEB37 /* .gitignore */, + B3EBA0FB2872965F00EAEB37 /* LICENSE */, + B3EBA10F2872965F00EAEB37 /* README.md */, + B3EBA1232872965F00EAEB37 /* .gitlab-ci.yml */, + B3EBA1102872965F00EAEB37 /* common */, + B3EBA0FC2872965F00EAEB37 /* platform */, + ); + path = potator; + sourceTree = ""; + }; + B3EBA0FC2872965F00EAEB37 /* platform */ = { + isa = PBXGroup; + children = ( + B3EBA0FD2872965F00EAEB37 /* libretro */, + ); + path = platform; + sourceTree = ""; + }; + B3EBA0FD2872965F00EAEB37 /* libretro */ = { + isa = PBXGroup; + children = ( + B3EBA0FF2872965F00EAEB37 /* Makefile */, + B3EBA0FE2872965F00EAEB37 /* libretro.c */, + B3EBA1002872965F00EAEB37 /* Makefile.common */, + B3EBA1032872965F00EAEB37 /* libretro_core_options_intl.h */, + B3EBA1022872965F00EAEB37 /* libretro_core_options.h */, + B3EBA1012872965F00EAEB37 /* libretro.h */, + B3EBA10B2872965F00EAEB37 /* link.T */, + B3EBA10C2872965F00EAEB37 /* jni */, + B3EBA1042872965F00EAEB37 /* libretro-common */, + ); + path = libretro; + sourceTree = ""; + }; + B3EBA1042872965F00EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBA1052872965F00EAEB37 /* include */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBA1052872965F00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA1062872965F00EAEB37 /* compat */, + B3EBA10A2872965F00EAEB37 /* retro_inline.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA1062872965F00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA1072872965F00EAEB37 /* msvc */, + B3EBA1092872965F00EAEB37 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA1072872965F00EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBA1082872965F00EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBA10C2872965F00EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBA10D2872965F00EAEB37 /* Android.mk */, + B3EBA10E2872965F00EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3EBA1102872965F00EAEB37 /* common */ = { + isa = PBXGroup; + children = ( + B3EBA11B2872965F00EAEB37 /* controls.c */, + B3EBA1132872965F00EAEB37 /* gpu.c */, + B3EBA1122872965F00EAEB37 /* memorymap.c */, + B3EBA11F2872965F00EAEB37 /* sound.c */, + B3EBA1152872965F00EAEB37 /* timer.c */, + B3EBA1212872965F00EAEB37 /* watara.c */, + B3EBA1142872965F00EAEB37 /* controls.h */, + B3EBA11E2872965F00EAEB37 /* gpu.h */, + B3EBA11D2872965F00EAEB37 /* memorymap.h */, + B3EBA1112872965F00EAEB37 /* sound.h */, + B3EBA1202872965F00EAEB37 /* supervision.h */, + B3EBA11C2872965F00EAEB37 /* timer.h */, + B3EBA1162872965F00EAEB37 /* types.h */, + B3EBA1172872965F00EAEB37 /* m6502 */, + ); + path = common; + sourceTree = ""; + }; + B3EBA1172872965F00EAEB37 /* m6502 */ = { + isa = PBXGroup; + children = ( + B3EBA1182872965F00EAEB37 /* m6502.c */, + B3EBA1192872965F00EAEB37 /* tables.h */, + B3EBA11A2872965F00EAEB37 /* m6502.h */, + ); + path = m6502; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVPotator.h in Headers */, + B37022C92872554300B3F6DA /* PVPotatorCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* potator */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "potator" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = potator; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libpotator.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* potator-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "potator-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "potator-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libpotator-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVPotator */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPotator" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVPotator; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVPotator.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVPotator" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVPotator */, + B3344B522859E088006E6B3A /* potator-libretro */, + B30178D2207C901D0051B93D /* potator */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3FF64252873EBEB00829C14 /* sound.c in Sources */, + B3FF64212873EBEB00829C14 /* gpu.c in Sources */, + B3FF64232873EBEB00829C14 /* watara.c in Sources */, + B3FF64262873EBEB00829C14 /* timer.c in Sources */, + B3FF64222873EBEB00829C14 /* memorymap.c in Sources */, + B3FF642D2873EBF000829C14 /* m6502.c in Sources */, + B3FF64242873EBEB00829C14 /* controls.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3FF641F2873EBCC00829C14 /* libretro.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVPotatorCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* potator-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = potator; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = potator; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/potator/platform/libretro/libretro-common/include\"", + "\"$(SRCROOT)/potator/platform/libretro\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVPotator/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPotator"; + PRODUCT_NAME = PVPotator; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = potator; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "potator-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "potator-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "potator-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/potator/platform/libretro/libretro-common/include\"", + "\"$(SRCROOT)/potator/platform/libretro\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/potator/platform/libretro/libretro-common/include\"", + "\"$(SRCROOT)/potator/platform/libretro\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVPotator/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPotator"; + PRODUCT_NAME = PVPotator; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVPotator/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPotator"; + PRODUCT_NAME = PVPotator; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "potator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "potator-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVPotator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPotator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/Potator/PVPotator.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/Potator/PVPotator.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/Potator/PVPotator.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/Potator/PVPotator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/Potator/PVPotator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/Potator/PVPotator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/Potator/PVPotator.xcodeproj/xcshareddata/xcschemes/PVPotator.xcscheme b/Cores/Potator/PVPotator.xcodeproj/xcshareddata/xcschemes/PVPotator.xcscheme new file mode 100644 index 0000000000..9a732989c0 --- /dev/null +++ b/Cores/Potator/PVPotator.xcodeproj/xcshareddata/xcschemes/PVPotator.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Potator/PVPotator/Core.plist b/Cores/Potator/PVPotator/Core.plist new file mode 100644 index 0000000000..05d05002a6 --- /dev/null +++ b/Cores/Potator/PVPotator/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.potator + PVPrincipleClass + PVPotatorCore + PVSupportedSystems + + com.provenance.supervision + + PVProjectName + Potator + PVProjectURL + https://github.com/alekmaul/potator + PVProjectVersion + 1.1 + + diff --git a/Cores/Potator/PVPotator/Info.plist b/Cores/Potator/PVPotator/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/Potator/PVPotator/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/Potator/PVPotator/PVPotator.h b/Cores/Potator/PVPotator/PVPotator.h new file mode 100644 index 0000000000..cd23602cdc --- /dev/null +++ b/Cores/Potator/PVPotator/PVPotator.h @@ -0,0 +1,18 @@ +// +// PVPotator.h +// PVPotator +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVPotator. +FOUNDATION_EXPORT double PVPotatorVersionNumber; + +//! Project version string for PVPotator. +FOUNDATION_EXPORT const unsigned char PVPotatorVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/Potator/PVPotatorCore/PVPotatorCore.h b/Cores/Potator/PVPotatorCore/PVPotatorCore.h new file mode 100644 index 0000000000..fe33d58e11 --- /dev/null +++ b/Cores/Potator/PVPotatorCore/PVPotatorCore.h @@ -0,0 +1,43 @@ +// +// PVPotatorCore.h +// PVPotator +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVPotatorCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/Potator/PVPotatorCore/PVPotatorCore.mm b/Cores/Potator/PVPotatorCore/PVPotatorCore.mm new file mode 100644 index 0000000000..ebbd0e8be7 --- /dev/null +++ b/Cores/Potator/PVPotatorCore/PVPotatorCore.mm @@ -0,0 +1,236 @@ +// +// PVPotatorCore.m +// PVPotator +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVPotatorCore.h" +#include +//#import "PVPotatorCore+Controls.h" +//#import "PVPotatorCore+Audio.h" +//#import "PVPotatorCore+Video.h" +// +//#import "PVPotatorCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVPotatorCore() { + +} + +@end + +#pragma mark - PVPotatorCore Begin + +@implementation PVPotatorCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +//} +// +//- (void)resetEmulation { +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +//- (NSTimeInterval)frameInterval { +// return 60.0; +//} +// +//- (CGSize)aspectSize { +// return CGSizeMake(1, 1); +//} +// +//- (CGSize)bufferSize { +// return CGSizeMake(160, 160); +//} + +//- (GLenum)pixelFormat { +// return GL_RGB; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_SHORT_5_6_5; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGB565; +//} + +# pragma mark - Audio + +//- (double)audioSampleRate { +// return 44100; +//} +// +//- (NSUInteger)channelCount { +// // TODO: Test 1 +// return 2; +//} + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + +#define V(x) strcmp(variable, x) == 0 + if (V("potator_palette")) { + // none,simple,detailed + char *value = strdup("potator_green"); + return value; + } else if (V("potator_lcd_ghosting")) { + // Off|Interlaced|Progressive + char *value = strdup("3"); + return value; + } else if (V("potator_frameskip")) { + // on,rewind,disable + char *value = strdup("auto"); + return value; + } else if (V("potator_frameskip_threshold")) { + // true,false + // Enable the On Screen Keyboard feature which can be activated with the L3 button on the controller. + char *value = strdup("30"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + + /* + "dosbox_pure_mouse_wheel", + "Bind Mouse Wheel To Key", NULL, + "Bind mouse wheel up and down to two keyboard keys to be able to use it in DOS games.", NULL, + "Input", + { + { "67/68", "Left-Bracket/Right-Bracket" }, + { "72/71", "Comma/Period" }, + { "79/82", "Page-Up/Page-Down" }, + { "78/81", "Home/End" }, + { "80/82", "Delete/Page-Down" }, + { "64/65", "Minus/Equals" }, + { "69/70", "Semicolon/Quote" }, + { "99/100", "Numpad Minus/Plus" }, + { "97/98", "Numpad Divide/Multiply" }, + { "84/85", "Up/Down" }, + { "83/86", "Left/Right" }, + { "11/13", "Q/E" }, + { "none", "Disable" }, + }, + "67/68" + + "dosbox_pure_cycles", + "Emulated Performance", NULL, + "The raw performance that DOSBox will try to emulate." "\n\n", NULL, //end of Performance section + "Performance", + { + { "auto", "AUTO - DOSBox will try to detect performance needs (default)" }, + { "max", "MAX - Emulate as many instructions as possible" }, + { "315", "8086/8088, 4.77 MHz from 1980 (315 cps)" }, + { "1320", "286, 6 MHz from 1982 (1320 cps)" }, + { "2750", "286, 12.5 MHz from 1985 (2750 cps)" }, + { "4720", "386, 20 MHz from 1987 (4720 cps)" }, + { "7800", "386DX, 33 MHz from 1989 (7800 cps)" }, + { "13400", "486DX, 33 MHz from 1990 (13400 cps)" }, + { "26800", "486DX2, 66 MHz from 1992 (26800 cps)" }, + { "77000", "Pentium, 100 MHz from 1995 (77000 cps)" }, + { "200000", "Pentium II, 300 MHz from 1997 (200000 cps)" }, + { "500000", "Pentium III, 600 MHz from 1999 (500000 cps)" }, + { "1000000", "AMD Athlon, 1.2 GHz from 2000 (1000000 cps)" }, + }, + + "dosbox_pure_cpu_type", + "CPU Type", NULL, + "Emulated CPU type. Auto is the fastest choice." "\n" + "Games that require specific CPU type selection:" "\n" + "386 (prefetch): X-Men: Madness in The Murderworld, Terminator 1, Contra, Fifa International Soccer 1994" "\n" + "486 (slow): Betrayal in Antara" "\n" + "Pentium (slow): Fifa International Soccer 1994, Windows 95/Windows 3.x games" "\n\n", NULL, //end of System section + "System", + { + { "auto", "Auto - Mixed feature set with maximum performance and compatibility" }, + { "386", "386 - 386 instruction with fast memory access" }, + { "386_slow", "386 (slow) - 386 instruction set with memory privilege checks" }, + { "386_prefetch", "386 (prefetch) - With prefetch queue emulation (only on 'auto' and 'normal' core)" }, + { "486_slow", "486 (slow) - 486 instruction set with memory privilege checks" }, + { "pentium_slow", "Pentium (slow) - 586 instruction set with memory privilege checks" }, + }, + "auto" + }, + { + "dosbox_pure_cpu_core", + "Advanced > CPU Core", NULL, + "Emulation method (DOSBox CPU core) used.", NULL, + "System", + { + #if defined(C_DYNAMIC_X86) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynamic_x86 implementation)" }, + #elif defined(C_DYNREC) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynrec implementation)" }, + #endif + { "normal", "Normal (interpreter)" }, + { "simple", "Simple (interpreter optimized for old real-mode games)" }, + }, + #if defined(C_DYNAMIC_X86) || defined(C_DYNREC) + "auto" + #else + "normal" + #endif + }, + */ +#undef V + return NULL; +} + +@end + +@implementation PVPotatorCore (PVSupervisionSystemResponderClient) + +-(void)didPushSupervisionButton:(enum PVSupervisionButton)button forPlayer:(NSInteger)player { + +} + +-(void)didReleaseSupervisionButton:(enum PVSupervisionButton)button forPlayer:(NSInteger)player { + +} + +@end diff --git a/Cores/Potator/potator b/Cores/Potator/potator new file mode 160000 index 0000000000..e3d3cc3575 --- /dev/null +++ b/Cores/Potator/potator @@ -0,0 +1 @@ +Subproject commit e3d3cc3575b12aef62396d9ecb93caa34f014f9b diff --git a/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj b/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj index c446b38f36..0844aa56fd 100644 --- a/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj +++ b/Cores/ProSystem/PVProSystem.xcodeproj/project.pbxproj @@ -9,23 +9,11 @@ /* Begin PBXBuildFile section */ B324C64321921519009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C64221921519009F4EDC /* PVSupport.framework */; }; B324C64921921577009F4EDC /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C64821921577009F4EDC /* libz.tbd */; }; - B3411B4C276B2FBB00D85327 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B4B276B2FBB00D85327 /* PVLibrary.framework */; }; B3411B50276B2FC000D85327 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B4F276B2FC000D85327 /* Foundation.framework */; }; - B3411B52276B2FD600D85327 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B51276B2FD600D85327 /* Foundation.framework */; }; - B3411B54276B2FE200D85327 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3411B53276B2FE200D85327 /* PVSupport.framework */; }; B3547B5A205858B700CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B59205858B600CFF7D8 /* Core.plist */; }; - B36C7D5527AE227300715677 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36C7D5427AE227300715677 /* PVLibrary.framework */; }; B36DE7A31D6B7558002EE3ED /* ProSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DE7A21D6B7558002EE3ED /* ProSystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; B36DE7AE1D6B759C002EE3ED /* ProSystem.dat in Resources */ = {isa = PBXBuildFile; fileRef = 941F59FB17A77CC90005D7EA /* ProSystem.dat */; }; B36DE7C31D6B7621002EE3ED /* ProSystemGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2615B6425200C6552F /* ProSystemGameCore.mm */; }; - B372639326EA037900E95488 /* ProSystemGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2615B6425200C6552F /* ProSystemGameCore.mm */; }; - B372639426EA037C00E95488 /* ProSystemGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B5008DAD0E8BFB3E005AECAF /* ProSystemGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B372639526EA039800E95488 /* libprosystem-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CA5B2C26E9E40500687B27 /* libprosystem-tvOS.a */; }; - B372639D26EA03B300E95488 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B372639C26EA03A600E95488 /* libz.tbd */; }; - B372639E26EA046000E95488 /* Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F599B17A6189D0005D7EA /* Logger.cpp */; }; - B372639F26EA047B00E95488 /* ProSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = B36DE7A21D6B7558002EE3ED /* ProSystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B39DC781279E807B0017E28D /* ProSystem.dat in Resources */ = {isa = PBXBuildFile; fileRef = 941F59FB17A77CC90005D7EA /* ProSystem.dat */; }; - B39DC782279E80870017E28D /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B59205858B600CFF7D8 /* Core.plist */; }; B3CA5B1426E9E3E100687B27 /* Unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 941F599417A6189D0005D7EA /* Unzip.c */; }; B3CA5B1526E9E3E100687B27 /* Cartridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598517A6189D0005D7EA /* Cartridge.cpp */; }; B3CA5B1626E9E3E100687B27 /* Database.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598917A6189D0005D7EA /* Database.cpp */; }; @@ -46,37 +34,11 @@ B3CA5B2526E9E3E100687B27 /* Tia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59B117A6189D0005D7EA /* Tia.cpp */; }; B3CA5B2626E9E3E100687B27 /* ProSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59A617A6189D0005D7EA /* ProSystem.cpp */; }; B3CA5B2726E9E3E100687B27 /* Bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598317A6189D0005D7EA /* Bios.cpp */; }; - B3CA5B3626E9E41900687B27 /* ProSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59A617A6189D0005D7EA /* ProSystem.cpp */; }; - B3CA5B3726E9E41900687B27 /* Palette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59A217A6189D0005D7EA /* Palette.cpp */; }; - B3CA5B3826E9E41900687B27 /* Cartridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598517A6189D0005D7EA /* Cartridge.cpp */; }; - B3CA5B3926E9E41900687B27 /* Maria.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F599D17A6189D0005D7EA /* Maria.cpp */; }; - B3CA5B3A26E9E41900687B27 /* Unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 941F599417A6189D0005D7EA /* Unzip.c */; }; - B3CA5B3B26E9E41900687B27 /* Database.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598917A6189D0005D7EA /* Database.cpp */; }; - B3CA5B3C26E9E41900687B27 /* Sally.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59AD17A6189D0005D7EA /* Sally.cpp */; }; - B3CA5B3D26E9E41900687B27 /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59AF17A6189D0005D7EA /* Sound.cpp */; }; - B3CA5B3E26E9E41900687B27 /* Bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598317A6189D0005D7EA /* Bios.cpp */; }; - B3CA5B3F26E9E41900687B27 /* Zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 941F599717A6189D0005D7EA /* Zip.c */; }; - B3CA5B4026E9E41900687B27 /* Archive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598117A6189D0005D7EA /* Archive.cpp */; }; - B3CA5B4126E9E41900687B27 /* Memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F599F17A6189D0005D7EA /* Memory.cpp */; }; - B3CA5B4226E9E41900687B27 /* Tia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59B117A6189D0005D7EA /* Tia.cpp */; }; - B3CA5B4326E9E41900687B27 /* Hash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598C17A6189D0005D7EA /* Hash.cpp */; }; - B3CA5B4426E9E41900687B27 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59B317A6189D0005D7EA /* Timer.cpp */; }; - B3CA5B4526E9E41900687B27 /* Pokey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59A417A6189D0005D7EA /* Pokey.cpp */; }; - B3CA5B4626E9E41900687B27 /* Common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F598717A6189D0005D7EA /* Common.cpp */; }; - B3CA5B4826E9E41900687B27 /* Region.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59A917A6189D0005D7EA /* Region.cpp */; }; - B3CA5B4926E9E41900687B27 /* Riot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941F59AB17A6189D0005D7EA /* Riot.cpp */; }; - B3CA5B4A26E9E42400687B27 /* libprosystem-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CA5B0A26E9E3D700687B27 /* libprosystem-iOS.a */; }; + B3CA5B4A26E9E42400687B27 /* libprosystem.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3CA5B0A26E9E3D700687B27 /* libprosystem.a */; }; B3FA5D431D6B84F400060D71 /* ProSystemGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B5008DAD0E8BFB3E005AECAF /* ProSystemGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B372639626EA039800E95488 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3CA5B2B26E9E40500687B27; - remoteInfo = "prosystem-tvOS"; - }; B3CA5B4B26E9E42400687B27 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 089C1669FE841209C02AAC07 /* Project object */; @@ -96,15 +58,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3CA5B2A26E9E40500687B27 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -178,16 +131,14 @@ B34CB0EA2274B16A009134B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B3547B59205858B600CFF7D8 /* Core.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Core.plist; path = ProSystem/Core.plist; sourceTree = ""; }; B36C7D5427AE227300715677 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B36DE7A01D6B7558002EE3ED /* ProSystem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProSystem.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B36DE7A01D6B7558002EE3ED /* PVProSystem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVProSystem.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B36DE7A21D6B7558002EE3ED /* ProSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProSystem.h; sourceTree = ""; }; B36DE7A41D6B7558002EE3ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B372637026E9FC7700E95488 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B372638B26EA035900E95488 /* ProSystem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProSystem.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B372639826EA039D00E95488 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B372639C26EA03A600E95488 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; B3CA5B0226E9E38200687B27 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3CA5B0A26E9E3D700687B27 /* libprosystem-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libprosystem-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3CA5B2C26E9E40500687B27 /* libprosystem-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libprosystem-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3CA5B0A26E9E3D700687B27 /* libprosystem.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libprosystem.a; sourceTree = BUILT_PRODUCTS_DIR; }; B5008DAD0E8BFB3E005AECAF /* ProSystemGameCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProSystemGameCore.h; sourceTree = ""; }; /* End PBXFileReference section */ @@ -198,24 +149,11 @@ files = ( B3411B50276B2FC000D85327 /* Foundation.framework in Frameworks */, B324C64921921577009F4EDC /* libz.tbd in Frameworks */, - B3CA5B4A26E9E42400687B27 /* libprosystem-iOS.a in Frameworks */, - B3411B4C276B2FBB00D85327 /* PVLibrary.framework in Frameworks */, + B3CA5B4A26E9E42400687B27 /* libprosystem.a in Frameworks */, B324C64321921519009F4EDC /* PVSupport.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B372638826EA035900E95488 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B36C7D5527AE227300715677 /* PVLibrary.framework in Frameworks */, - B372639D26EA03B300E95488 /* libz.tbd in Frameworks */, - B372639526EA039800E95488 /* libprosystem-tvOS.a in Frameworks */, - B3411B54276B2FE200D85327 /* PVSupport.framework in Frameworks */, - B3411B52276B2FD600D85327 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3CA5B0726E9E3D700687B27 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -223,13 +161,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3CA5B2926E9E40500687B27 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -269,10 +200,8 @@ 19C28FB8FE9D52D311CA2CBB /* Products */ = { isa = PBXGroup; children = ( - B36DE7A01D6B7558002EE3ED /* ProSystem.framework */, - B3CA5B0A26E9E3D700687B27 /* libprosystem-iOS.a */, - B3CA5B2C26E9E40500687B27 /* libprosystem-tvOS.a */, - B372638B26EA035900E95488 /* ProSystem.framework */, + B36DE7A01D6B7558002EE3ED /* PVProSystem.framework */, + B3CA5B0A26E9E3D700687B27 /* libprosystem.a */, ); name = Products; sourceTree = ""; @@ -413,21 +342,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B372638626EA035900E95488 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B372639F26EA047B00E95488 /* ProSystem.h in Headers */, - B372639426EA037C00E95488 /* ProSystemGameCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B36DE79F1D6B7558002EE3ED /* ProSystem-iOS */ = { + B36DE79F1D6B7558002EE3ED /* PVProSystem */ = { isa = PBXNativeTarget; - buildConfigurationList = B36DE7A51D6B7558002EE3ED /* Build configuration list for PBXNativeTarget "ProSystem-iOS" */; + buildConfigurationList = B36DE7A51D6B7558002EE3ED /* Build configuration list for PBXNativeTarget "PVProSystem" */; buildPhases = ( B36DE79D1D6B7558002EE3ED /* Headers */, B36DE79B1D6B7558002EE3ED /* Sources */, @@ -439,33 +359,14 @@ dependencies = ( B3CA5B4C26E9E42400687B27 /* PBXTargetDependency */, ); - name = "ProSystem-iOS"; + name = PVProSystem; productName = ProSystem; - productReference = B36DE7A01D6B7558002EE3ED /* ProSystem.framework */; + productReference = B36DE7A01D6B7558002EE3ED /* PVProSystem.framework */; productType = "com.apple.product-type.framework"; }; - B372638A26EA035900E95488 /* ProSystem-tvOS */ = { + B3CA5B0926E9E3D700687B27 /* prosystem */ = { isa = PBXNativeTarget; - buildConfigurationList = B372638F26EA035900E95488 /* Build configuration list for PBXNativeTarget "ProSystem-tvOS" */; - buildPhases = ( - B372638626EA035900E95488 /* Headers */, - B372638726EA035900E95488 /* Sources */, - B372638826EA035900E95488 /* Frameworks */, - B372638926EA035900E95488 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B372639726EA039800E95488 /* PBXTargetDependency */, - ); - name = "ProSystem-tvOS"; - productName = "ProSystem-tvOS"; - productReference = B372638B26EA035900E95488 /* ProSystem.framework */; - productType = "com.apple.product-type.framework"; - }; - B3CA5B0926E9E3D700687B27 /* prosystem-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3CA5B1026E9E3D700687B27 /* Build configuration list for PBXNativeTarget "prosystem-iOS" */; + buildConfigurationList = B3CA5B1026E9E3D700687B27 /* Build configuration list for PBXNativeTarget "prosystem" */; buildPhases = ( B3CA5B0626E9E3D700687B27 /* Sources */, B3CA5B0726E9E3D700687B27 /* Frameworks */, @@ -475,26 +376,9 @@ ); dependencies = ( ); - name = "prosystem-iOS"; + name = prosystem; productName = "prosystem-iOS"; - productReference = B3CA5B0A26E9E3D700687B27 /* libprosystem-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3CA5B2B26E9E40500687B27 /* prosystem-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3CA5B3226E9E40600687B27 /* Build configuration list for PBXNativeTarget "prosystem-tvOS" */; - buildPhases = ( - B3CA5B2826E9E40500687B27 /* Sources */, - B3CA5B2926E9E40500687B27 /* Frameworks */, - B3CA5B2A26E9E40500687B27 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "prosystem-tvOS"; - productName = "prosystem-tvOS"; - productReference = B3CA5B2C26E9E40500687B27 /* libprosystem-tvOS.a */; + productReference = B3CA5B0A26E9E3D700687B27 /* libprosystem.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -511,15 +395,9 @@ B36DE79F1D6B7558002EE3ED = { CreatedOnToolsVersion = 7.3.1; }; - B372638A26EA035900E95488 = { - CreatedOnToolsVersion = 13.0; - }; B3CA5B0926E9E3D700687B27 = { CreatedOnToolsVersion = 13.0; }; - B3CA5B2B26E9E40500687B27 = { - CreatedOnToolsVersion = 13.0; - }; }; }; buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVProSystem" */; @@ -534,10 +412,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B36DE79F1D6B7558002EE3ED /* ProSystem-iOS */, - B372638A26EA035900E95488 /* ProSystem-tvOS */, - B3CA5B0926E9E3D700687B27 /* prosystem-iOS */, - B3CA5B2B26E9E40500687B27 /* prosystem-tvOS */, + B36DE79F1D6B7558002EE3ED /* PVProSystem */, + B3CA5B0926E9E3D700687B27 /* prosystem */, ); }; /* End PBXProject section */ @@ -552,15 +428,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B372638926EA035900E95488 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B39DC781279E807B0017E28D /* ProSystem.dat in Resources */, - B39DC782279E80870017E28D /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -572,14 +439,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B372638726EA035900E95488 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B372639326EA037900E95488 /* ProSystemGameCore.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3CA5B0626E9E3D700687B27 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -607,44 +466,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3CA5B2826E9E40500687B27 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3CA5B4126E9E41900687B27 /* Memory.cpp in Sources */, - B3CA5B4326E9E41900687B27 /* Hash.cpp in Sources */, - B3CA5B4526E9E41900687B27 /* Pokey.cpp in Sources */, - B3CA5B4026E9E41900687B27 /* Archive.cpp in Sources */, - B3CA5B4426E9E41900687B27 /* Timer.cpp in Sources */, - B3CA5B3E26E9E41900687B27 /* Bios.cpp in Sources */, - B3CA5B3926E9E41900687B27 /* Maria.cpp in Sources */, - B3CA5B3C26E9E41900687B27 /* Sally.cpp in Sources */, - B3CA5B3626E9E41900687B27 /* ProSystem.cpp in Sources */, - B3CA5B3D26E9E41900687B27 /* Sound.cpp in Sources */, - B3CA5B4626E9E41900687B27 /* Common.cpp in Sources */, - B372639E26EA046000E95488 /* Logger.cpp in Sources */, - B3CA5B3826E9E41900687B27 /* Cartridge.cpp in Sources */, - B3CA5B3726E9E41900687B27 /* Palette.cpp in Sources */, - B3CA5B3F26E9E41900687B27 /* Zip.c in Sources */, - B3CA5B4826E9E41900687B27 /* Region.cpp in Sources */, - B3CA5B3B26E9E41900687B27 /* Database.cpp in Sources */, - B3CA5B4226E9E41900687B27 /* Tia.cpp in Sources */, - B3CA5B3A26E9E41900687B27 /* Unzip.c in Sources */, - B3CA5B4926E9E41900687B27 /* Riot.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - B372639726EA039800E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3CA5B2B26E9E40500687B27 /* prosystem-tvOS */; - targetProxy = B372639626EA039800E95488 /* PBXContainerItemProxy */; - }; B3CA5B4C26E9E42400687B27 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3CA5B0926E9E3D700687B27 /* prosystem-iOS */; + target = B3CA5B0926E9E3D700687B27 /* prosystem */; targetProxy = B3CA5B4B26E9E42400687B27 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -707,10 +534,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACOSX_DEPLOYMENT_TARGET = 10.11; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Debug; }; @@ -760,10 +588,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACOSX_DEPLOYMENT_TARGET = 10.11; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Release; }; @@ -813,15 +642,17 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACOSX_DEPLOYMENT_TARGET = 10.11; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Archive; }; B324C52D2191A426009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -841,7 +672,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = ProSystem/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -850,10 +681,13 @@ ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.ProSystem"; - PRODUCT_NAME = ProSystem; + PRODUCT_NAME = PVProSystem; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -863,6 +697,7 @@ B36DE7A61D6B7558002EE3ED /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -888,7 +723,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = ProSystem/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -898,10 +733,13 @@ MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.ProSystem"; - PRODUCT_NAME = ProSystem; + PRODUCT_NAME = PVProSystem; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -910,6 +748,7 @@ B36DE7A71D6B7558002EE3ED /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -929,7 +768,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = ProSystem/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -938,164 +777,23 @@ ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.ProSystem"; - PRODUCT_NAME = ProSystem; + PRODUCT_NAME = PVProSystem; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B372639026EA035900E95488 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.ProSystem"; - PRODUCT_NAME = ProSystem; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B372639126EA035900E95488 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.ProSystem"; - PRODUCT_NAME = ProSystem; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - B372639226EA035900E95488 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.ProSystem"; - PRODUCT_NAME = ProSystem; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; B3CA5B1126E9E3D700687B27 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1122,13 +820,16 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; B3CA5B1226E9E3D700687B27 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1150,7 +851,9 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Release; @@ -1158,6 +861,7 @@ B3CA5B1326E9E3D700687B27 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1179,104 +883,9 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VALIDATE_PRODUCT = YES; - }; - name = Archive; - }; - B3CA5B3326E9E40600687B27 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Debug; - }; - B3CA5B3426E9E40600687B27 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B3CA5B3526E9E40600687B27 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_PRODUCT = YES; }; name = Archive; @@ -1294,7 +903,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B36DE7A51D6B7558002EE3ED /* Build configuration list for PBXNativeTarget "ProSystem-iOS" */ = { + B36DE7A51D6B7558002EE3ED /* Build configuration list for PBXNativeTarget "PVProSystem" */ = { isa = XCConfigurationList; buildConfigurations = ( B36DE7A61D6B7558002EE3ED /* Debug */, @@ -1304,17 +913,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B372638F26EA035900E95488 /* Build configuration list for PBXNativeTarget "ProSystem-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B372639026EA035900E95488 /* Debug */, - B372639126EA035900E95488 /* Release */, - B372639226EA035900E95488 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3CA5B1026E9E3D700687B27 /* Build configuration list for PBXNativeTarget "prosystem-iOS" */ = { + B3CA5B1026E9E3D700687B27 /* Build configuration list for PBXNativeTarget "prosystem" */ = { isa = XCConfigurationList; buildConfigurations = ( B3CA5B1126E9E3D700687B27 /* Debug */, @@ -1324,16 +923,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3CA5B3226E9E40600687B27 /* Build configuration list for PBXNativeTarget "prosystem-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3CA5B3326E9E40600687B27 /* Debug */, - B3CA5B3426E9E40600687B27 /* Release */, - B3CA5B3526E9E40600687B27 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 089C1669FE841209C02AAC07 /* Project object */; diff --git a/Cores/ProSystem/PVProSystem.xcodeproj/xcshareddata/xcschemes/ProSystem.xcscheme b/Cores/ProSystem/PVProSystem.xcodeproj/xcshareddata/xcschemes/ProSystem.xcscheme index 5566a970e1..8221bbc390 100644 --- a/Cores/ProSystem/PVProSystem.xcodeproj/xcshareddata/xcschemes/ProSystem.xcscheme +++ b/Cores/ProSystem/PVProSystem.xcodeproj/xcshareddata/xcschemes/ProSystem.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -29,8 +29,8 @@ @@ -58,8 +58,8 @@ @@ -74,8 +74,8 @@ diff --git a/Cores/ProSystem/PVProSystem.xcodeproj/xcshareddata/xcschemes/prosystem-tvOS.xcscheme b/Cores/ProSystem/PVProSystem.xcodeproj/xcshareddata/xcschemes/prosystem-tvOS.xcscheme deleted file mode 100644 index 0d812186b4..0000000000 --- a/Cores/ProSystem/PVProSystem.xcodeproj/xcshareddata/xcschemes/prosystem-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/ProSystem/ProSystem/ProSystem.h b/Cores/ProSystem/ProSystem/ProSystem.h index aca47e53dc..6722521933 100644 --- a/Cores/ProSystem/ProSystem/ProSystem.h +++ b/Cores/ProSystem/ProSystem/ProSystem.h @@ -6,7 +6,7 @@ // // -#import +#import //! Project version number for ProSystem. FOUNDATION_EXPORT double ProSystemVersionNumber; diff --git a/Cores/ProSystem/ProSystemGameCore.mm b/Cores/ProSystem/ProSystemGameCore.mm index 5e87d80a1e..b1b492d285 100644 --- a/Cores/ProSystem/ProSystemGameCore.mm +++ b/Cores/ProSystem/ProSystemGameCore.mm @@ -29,7 +29,7 @@ #import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import diff --git a/Cores/Reicast/PVReicast.xcodeproj/project.pbxproj b/Cores/Reicast/PVReicast.xcodeproj/project.pbxproj index 4e51b7cf4c..f94ab82386 100644 --- a/Cores/Reicast/PVReicast.xcodeproj/project.pbxproj +++ b/Cores/Reicast/PVReicast.xcodeproj/project.pbxproj @@ -169,10 +169,8 @@ B301797C207C908F0051B93D /* zip_entry_new.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427120783CBC008DBAB4 /* zip_entry_new.c */; }; B301797D207C908F0051B93D /* zip_open.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428220783CBC008DBAB4 /* zip_open.c */; }; B301797E207C908F0051B93D /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414220783CBB008DBAB4 /* driver.cpp */; }; - B301797F207C909E0051B93D /* libreicast-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libreicast-iOS.a */; }; + B301797F207C909E0051B93D /* libreicast.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libreicast.a */; }; B316B4E721926FE500693472 /* emu.cfg in Resources */ = {isa = PBXBuildFile; fileRef = B316B4E621926FE500693472 /* emu.cfg */; }; - B316B4E821926FE500693472 /* emu.cfg in Resources */ = {isa = PBXBuildFile; fileRef = B316B4E621926FE500693472 /* emu.cfg */; }; - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B333502720786BD90036A448 /* Shader.vsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438820783CC0008DBAB4 /* Shader.vsh */; }; B333502820786BEB0036A448 /* Shader.fsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438720783CC0008DBAB4 /* Shader.fsh */; }; @@ -192,206 +190,16 @@ B3447EB0218BC5C500557ACE /* PVReicastCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVReicastCore+Video.m */; }; B3447EB3218BC69700557ACE /* PVReicastCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVReicastCore+Audio.h */; }; B3447EB4218BC69700557ACE /* PVReicastCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVReicastCore+Audio.m */; }; - B3447EC2218BEDD200557ACE /* PVReicast+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E9B218B826F00557ACE /* PVReicast+Audio.mm */; }; - B3447EC3218BEDD200557ACE /* PVReicastCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVReicastCore+Controls.mm */; }; - B3447EC4218BEDD200557ACE /* PVReicastCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVReicastCore.mm */; }; - B3447EC5218BEDD200557ACE /* PVReicastCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAA218BC59D00557ACE /* PVReicastCore+Saves.m */; }; - B3447EC6218BEDD200557ACE /* PVReicast.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA0218B881000557ACE /* PVReicast.mm */; }; - B3447EC7218BEDD200557ACE /* PVReicastCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVReicastCore+Video.m */; }; - B3447EC8218BEDD200557ACE /* PVReicast+CoreAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447EA4218BC36B00557ACE /* PVReicast+CoreAudio.mm */; }; - B3447EC9218BEDD200557ACE /* PVReicastCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVReicastCore+Audio.m */; }; - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; - B3447ED6218BEDD200557ACE /* PVReicast.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVReicast.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447ED7218BEDD200557ACE /* PVReicastCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVReicastCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447ED8218BEDD200557ACE /* PVReicast+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E9A218B826F00557ACE /* PVReicast+Audio.h */; }; - B3447ED9218BEDD200557ACE /* PVReicastCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVReicastCore+Audio.h */; }; - B3447EDA218BEDD200557ACE /* PVReicastCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVReicastCore+Saves.h */; }; - B3447EDB218BEDD200557ACE /* PVReicast+AudioTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA2218BBFB700557ACE /* PVReicast+AudioTypes.h */; }; - B3447EDC218BEDD200557ACE /* PVReicast+CoreAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA6218BC3A600557ACE /* PVReicast+CoreAudio.h */; }; - B3447EDD218BEDD200557ACE /* PVReicastCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVReicastCore+Controls.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447EDE218BEDD200557ACE /* PVReicastCore+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EAD218BC5C500557ACE /* PVReicastCore+Video.h */; }; - B3447EE0218BEDD200557ACE /* Shader.fsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438720783CC0008DBAB4 /* Shader.fsh */; }; - B3447EE1218BEDD200557ACE /* Shader.vsh in Resources */ = {isa = PBXBuildFile; fileRef = B339438820783CC0008DBAB4 /* Shader.vsh */; }; - B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; - B3447EEA218BEE3F00557ACE /* zip_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428620783CBC008DBAB4 /* zip_free.c */; }; - B3447EEB218BEE3F00557ACE /* holly_intc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413620783CBB008DBAB4 /* holly_intc.cpp */; }; - B3447EEC218BEE3F00557ACE /* zip_source_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426B20783CBC008DBAB4 /* zip_source_free.c */; }; - B3447EED218BEE3F00557ACE /* sh4_opcodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415220783CBB008DBAB4 /* sh4_opcodes.cpp */; }; - B3447EEE218BEE3F00557ACE /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F220783CBC008DBAB4 /* pngpread.c */; }; - B3447EEF218BEE3F00557ACE /* bsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416020783CBB008DBAB4 /* bsc.cpp */; }; - B3447EF0218BEE3F00557ACE /* reios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432B20783CBD008DBAB4 /* reios.cpp */; }; - B3447EF1218BEE3F00557ACE /* ubc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415C20783CBB008DBAB4 /* ubc.cpp */; }; - B3447EF2218BEE3F00557ACE /* decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414320783CBB008DBAB4 /* decoder.cpp */; }; - B3447EF3218BEE3F00557ACE /* zip_error_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425C20783CBC008DBAB4 /* zip_error_clear.c */; }; - B3447EF4218BEE3F00557ACE /* zip_dirent.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428520783CBC008DBAB4 /* zip_dirent.c */; }; - B3447EF5218BEE3F00557ACE /* reios_elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432A20783CBD008DBAB4 /* reios_elf.cpp */; }; - B3447EF6218BEE3F00557ACE /* zip_stat_index.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427820783CBC008DBAB4 /* zip_stat_index.c */; }; - B3447EF7218BEE3F00557ACE /* zip_unchange.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426220783CBC008DBAB4 /* zip_unchange.c */; }; - B3447EF8218BEE3F00557ACE /* maple_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419720783CBB008DBAB4 /* maple_cfg.cpp */; }; - B3447EF9218BEE3F00557ACE /* sb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413520783CBB008DBAB4 /* sb.cpp */; }; - B3447EFA218BEE3F00557ACE /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A820783CBB008DBAB4 /* dsp.cpp */; }; - B3447EFB218BEE3F00557ACE /* nullDC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C720783CBC008DBAB4 /* nullDC.cpp */; }; - B3447EFC218BEE3F00557ACE /* shil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413C20783CBB008DBAB4 /* shil.cpp */; }; - B3447EFD218BEE3F00557ACE /* rec_cpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339430120783CBC008DBAB4 /* rec_cpp.cpp */; }; - B3447EFE218BEE3F00557ACE /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E620783CBC008DBAB4 /* pngerror.c */; }; - B3447EFF218BEE3F00557ACE /* stdclass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941DA20783CBC008DBAB4 /* stdclass.cpp */; }; - B3447F00218BEE3F00557ACE /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B720783CBC008DBAB4 /* common.cpp */; }; - B3447F01218BEE3F00557ACE /* maple_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419520783CBB008DBAB4 /* maple_helper.cpp */; }; - B3447F02218BEE3F00557ACE /* ioctl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941BC20783CBC008DBAB4 /* ioctl.cpp */; }; - B3447F03218BEE3F00557ACE /* virt_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A320783CBB008DBAB4 /* virt_arm.cpp */; }; - B3447F04218BEE3F00557ACE /* zip_unchange_all.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428B20783CBC008DBAB4 /* zip_unchange_all.c */; }; - B3447F05218BEE3F00557ACE /* zip_file_get_offset.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426120783CBC008DBAB4 /* zip_file_get_offset.c */; }; - B3447F06218BEE3F00557ACE /* pvr_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417720783CBB008DBAB4 /* pvr_mem.cpp */; }; - B3447F07218BEE3F00557ACE /* zip_error_get_sys_type.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426720783CBC008DBAB4 /* zip_error_get_sys_type.c */; }; - B3447F08218BEE3F00557ACE /* sh4_opcode_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414D20783CBB008DBAB4 /* sh4_opcode_list.cpp */; }; - B3447F09218BEE3F00557ACE /* zip_error.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426F20783CBC008DBAB4 /* zip_error.c */; }; - B3447F0A218BEE3F00557ACE /* drkPvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418320783CBB008DBAB4 /* drkPvr.cpp */; }; - B3447F0B218BEE3F00557ACE /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941DD20783CBC008DBAB4 /* md5.cpp */; }; - B3447F0C218BEE3F00557ACE /* pvr_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418720783CBB008DBAB4 /* pvr_regs.cpp */; }; - B3447F0D218BEE3F00557ACE /* zip_stat_init.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428920783CBC008DBAB4 /* zip_stat_init.c */; }; - B3447F0E218BEE3F00557ACE /* zip_source_zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427720783CBC008DBAB4 /* zip_source_zip.c */; }; - B3447F0F218BEE3F00557ACE /* sh4_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415020783CBB008DBAB4 /* sh4_mem.cpp */; }; - B3447F10218BEE3F00557ACE /* zip_entry_new.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427120783CBC008DBAB4 /* zip_entry_new.c */; }; - B3447F11218BEE3F00557ACE /* mkstemp.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427F20783CBC008DBAB4 /* mkstemp.c */; }; - B3447F12218BEE3F00557ACE /* zip_source_function.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427920783CBC008DBAB4 /* zip_source_function.c */; }; - B3447F13218BEE3F00557ACE /* gltex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F320783CBC008DBAB4 /* gltex.cpp */; }; - B3447F14218BEE3F00557ACE /* zip_unchange_archive.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426A20783CBC008DBAB4 /* zip_unchange_archive.c */; }; - B3447F15218BEE3F00557ACE /* profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942EC20783CBC008DBAB4 /* profiler.cpp */; }; - B3447F16218BEE3F00557ACE /* cdipsr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339425120783CBC008DBAB4 /* cdipsr.cpp */; }; - B3447F17218BEE3F00557ACE /* audiobackend_pulseaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429420783CBC008DBAB4 /* audiobackend_pulseaudio.cpp */; }; - B3447F18218BEE3F00557ACE /* zip_entry_free.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428120783CBC008DBAB4 /* zip_entry_free.c */; }; - B3447F19218BEE3F00557ACE /* arm_init.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F820783CBC008DBAB4 /* arm_init.c */; }; - B3447F1A218BEE3F00557ACE /* filter_neon_intrinsics.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F720783CBC008DBAB4 /* filter_neon_intrinsics.c */; }; - B3447F1B218BEE3F00557ACE /* zip_memdup.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425420783CBC008DBAB4 /* zip_memdup.c */; }; - B3447F1C218BEE3F00557ACE /* zip_filerange_crc.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425720783CBC008DBAB4 /* zip_filerange_crc.c */; }; - B3447F1D218BEE3F00557ACE /* zip_stat.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427D20783CBC008DBAB4 /* zip_stat.c */; }; - B3447F1E218BEE3F00557ACE /* tmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416820783CBB008DBAB4 /* tmu.cpp */; }; - B3447F1F218BEE3F00557ACE /* maple_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419420783CBB008DBAB4 /* maple_if.cpp */; }; - B3447F20218BEE3F00557ACE /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EF20783CBC008DBAB4 /* pngwtran.c */; }; - B3447F21218BEE3F00557ACE /* chdr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424520783CBC008DBAB4 /* chdr.cpp */; }; - B3447F22218BEE3F00557ACE /* gdrom_hle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432F20783CBD008DBAB4 /* gdrom_hle.cpp */; }; - B3447F23218BEE3F00557ACE /* zip_source_file.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425E20783CBC008DBAB4 /* zip_source_file.c */; }; - B3447F24218BEE3F00557ACE /* zip_delete.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427B20783CBC008DBAB4 /* zip_delete.c */; }; - B3447F25218BEE3F00557ACE /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EC20783CBC008DBAB4 /* pngwrite.c */; }; - B3447F26218BEE3F00557ACE /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E720783CBC008DBAB4 /* pngwio.c */; }; - B3447F27218BEE3F00557ACE /* zip_error_get.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428320783CBC008DBAB4 /* zip_error_get.c */; }; - B3447F28218BEE3F00557ACE /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F420783CBC008DBAB4 /* pngread.c */; }; - B3447F29218BEE3F00557ACE /* ta_ctx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417620783CBB008DBAB4 /* ta_ctx.cpp */; }; - B3447F2A218BEE3F00557ACE /* Renderer_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418420783CBB008DBAB4 /* Renderer_if.cpp */; }; - B3447F2B218BEE3F00557ACE /* nixprof.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D520783CBC008DBAB4 /* nixprof.cpp */; }; - B3447F2C218BEE3F00557ACE /* coreio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339423D20783CBC008DBAB4 /* coreio.cpp */; }; - B3447F2D218BEE3F00557ACE /* zip_fclose.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428420783CBC008DBAB4 /* zip_fclose.c */; }; - B3447F2E218BEE3F00557ACE /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FC20783CBC008DBAB4 /* pngrtran.c */; }; - B3447F2F218BEE3F00557ACE /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941F920783CBC008DBAB4 /* pngmem.c */; }; - B3447F30218BEE3F00557ACE /* zip_get_archive_flag.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427220783CBC008DBAB4 /* zip_get_archive_flag.c */; }; - B3447F31218BEE3F00557ACE /* chd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941BF20783CBC008DBAB4 /* chd.cpp */; }; - B3447F32218BEE3F00557ACE /* serial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416620783CBB008DBAB4 /* serial.cpp */; }; - B3447F33218BEE3F00557ACE /* elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424C20783CBC008DBAB4 /* elf.cpp */; }; - B3447F34218BEE3F00557ACE /* descrambl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339432920783CBD008DBAB4 /* descrambl.cpp */; }; - B3447F35218BEE3F00557ACE /* arm7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419F20783CBB008DBAB4 /* arm7.cpp */; }; - B3447F36218BEE3F00557ACE /* spg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417B20783CBB008DBAB4 /* spg.cpp */; }; - B3447F37218BEE3F00557ACE /* zip_file_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425920783CBC008DBAB4 /* zip_file_strerror.c */; }; - B3447F38218BEE3F00557ACE /* zip_add_dir.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426620783CBC008DBAB4 /* zip_add_dir.c */; }; - B3447F39218BEE3F00557ACE /* elf64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424B20783CBC008DBAB4 /* elf64.cpp */; }; - B3447F3A218BEE3F00557ACE /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C120783CBC008DBAB4 /* cfg.cpp */; }; - B3447F3B218BEE3F00557ACE /* gdromv3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417120783CBB008DBAB4 /* gdromv3.cpp */; }; - B3447F3C218BEE3F00557ACE /* dmac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416520783CBB008DBAB4 /* dmac.cpp */; }; - B3447F3D218BEE3F00557ACE /* zip_fopen_index.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425A20783CBC008DBAB4 /* zip_fopen_index.c */; }; - B3447F3E218BEE3F00557ACE /* cdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B820783CBC008DBAB4 /* cdi.cpp */; }; - B3447F3F218BEE3F00557ACE /* sh4_mmr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415A20783CBB008DBAB4 /* sh4_mmr.cpp */; }; - B3447F40218BEE3F00557ACE /* zip_set_archive_flag.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427320783CBC008DBAB4 /* zip_set_archive_flag.c */; }; - B3447F41218BEE3F00557ACE /* _vmem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B220783CBB008DBAB4 /* _vmem.cpp */; }; - B3447F42218BEE3F00557ACE /* zip_get_name.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425820783CBC008DBAB4 /* zip_get_name.c */; }; - B3447F43218BEE3F00557ACE /* ccn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416120783CBB008DBAB4 /* ccn.cpp */; }; - B3447F44218BEE3F00557ACE /* blockmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414420783CBB008DBAB4 /* blockmanager.cpp */; }; - B3447F45218BEE3F00557ACE /* aica_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A920783CBB008DBAB4 /* aica_mem.cpp */; }; - B3447F46218BEE3F00557ACE /* sb_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413420783CBB008DBAB4 /* sb_mem.cpp */; }; - B3447F47218BEE3F00557ACE /* sb_dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339413720783CBB008DBAB4 /* sb_dma.cpp */; }; - B3447F48218BEE3F00557ACE /* zip_unchange_data.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427420783CBC008DBAB4 /* zip_unchange_data.c */; }; - B3447F49218BEE3F00557ACE /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E520783CBC008DBAB4 /* pngrio.c */; }; - B3447F4A218BEE3F00557ACE /* sh4_fpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415520783CBB008DBAB4 /* sh4_fpu.cpp */; }; - B3447F4B218BEE3F00557ACE /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941EE20783CBC008DBAB4 /* pngwutil.c */; }; - B3447F4C218BEE3F00557ACE /* zip_get_file_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427E20783CBC008DBAB4 /* zip_get_file_comment.c */; }; - B3447F4D218BEE3F00557ACE /* mmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416920783CBB008DBAB4 /* mmu.cpp */; }; - B3447F4E218BEE3F00557ACE /* zip_new.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426320783CBC008DBAB4 /* zip_new.c */; }; - B3447F4F218BEE3F00557ACE /* aica_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A620783CBB008DBAB4 /* aica_if.cpp */; }; - B3447F50218BEE3F00557ACE /* zip_source_filep.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426E20783CBC008DBAB4 /* zip_source_filep.c */; }; - B3447F51218BEE3F00557ACE /* sh4_interpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415320783CBB008DBAB4 /* sh4_interpreter.cpp */; }; - B3447F52218BEE3F00557ACE /* zip_file_error_get.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426020783CBC008DBAB4 /* zip_file_error_get.c */; }; - B3447F53218BEE3F00557ACE /* audiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429C20783CBC008DBAB4 /* audiostream.cpp */; }; - B3447F54218BEE3F00557ACE /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941E920783CBC008DBAB4 /* pngtrans.c */; }; - B3447F55218BEE3F00557ACE /* elf32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339424F20783CBC008DBAB4 /* elf32.cpp */; }; - B3447F56218BEE3F00557ACE /* zip_add.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425620783CBC008DBAB4 /* zip_add.c */; }; - B3447F57218BEE3F00557ACE /* zip_error_to_str.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428820783CBC008DBAB4 /* zip_error_to_str.c */; }; - B3447F58218BEE3F00557ACE /* gldraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F220783CBC008DBAB4 /* gldraw.cpp */; }; - B3447F59218BEE3F00557ACE /* zip_set_name.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425F20783CBC008DBAB4 /* zip_set_name.c */; }; - B3447F5A218BEE3F00557ACE /* zip_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427020783CBC008DBAB4 /* zip_strerror.c */; }; - B3447F5B218BEE3F00557ACE /* zip_open.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428220783CBC008DBAB4 /* zip_open.c */; }; - B3447F5C218BEE3F00557ACE /* zip_fopen.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428A20783CBC008DBAB4 /* zip_fopen.c */; }; - B3447F5D218BEE3F00557ACE /* rtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416720783CBB008DBAB4 /* rtc.cpp */; }; - B3447F5E218BEE3F00557ACE /* zip_get_num_files.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426C20783CBC008DBAB4 /* zip_get_num_files.c */; }; - B3447F5F218BEE3F00557ACE /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FD20783CBC008DBAB4 /* pngrutil.c */; }; - B3447F60218BEE3F00557ACE /* zip_error_strerror.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428C20783CBC008DBAB4 /* zip_error_strerror.c */; }; - B3447F61218BEE3F00557ACE /* zip_close.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426520783CBC008DBAB4 /* zip_close.c */; }; - B3447F62218BEE3F00557ACE /* vbaARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941A020783CBB008DBAB4 /* vbaARM.cpp */; }; - B3447F63218BEE3F00557ACE /* audiobackend_alsa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942A520783CBC008DBAB4 /* audiobackend_alsa.cpp */; }; - B3447F64218BEE3F00557ACE /* intc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415E20783CBB008DBAB4 /* intc.cpp */; }; - B3447F65218BEE3F00557ACE /* zip_source_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425B20783CBC008DBAB4 /* zip_source_buffer.c */; }; - B3447F66218BEE3F00557ACE /* zip_err_str.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426D20783CBC008DBAB4 /* zip_err_str.c */; }; - B3447F67218BEE3F00557ACE /* zip_file_error_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = B339428720783CBC008DBAB4 /* zip_file_error_clear.c */; }; - B3447F68218BEE3F00557ACE /* pvr_sb_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417E20783CBB008DBAB4 /* pvr_sb_regs.cpp */; }; - B3447F69218BEE3F00557ACE /* gles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942F520783CBC008DBAB4 /* gles.cpp */; }; - B3447F6A218BEE3F00557ACE /* rec_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C920783CBC008DBAB4 /* rec_arm.cpp */; }; - B3447F6B218BEE3F00557ACE /* audiobackend_oss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339429F20783CBC008DBAB4 /* audiobackend_oss.cpp */; }; - B3447F6C218BEE3F00557ACE /* zip_get_archive_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339425D20783CBC008DBAB4 /* zip_get_archive_comment.c */; }; - B3447F6D218BEE3F00557ACE /* zip_set_file_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427C20783CBC008DBAB4 /* zip_set_file_comment.c */; }; - B3447F6E218BEE3F00557ACE /* cpg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416B20783CBB008DBAB4 /* cpg.cpp */; }; - B3447F6F218BEE3F00557ACE /* sha1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941E020783CBC008DBAB4 /* sha1.cpp */; }; - B3447F70218BEE3F00557ACE /* zip_fread.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427520783CBC008DBAB4 /* zip_fread.c */; }; - B3447F71218BEE3F00557ACE /* gdrom_response.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339417020783CBB008DBAB4 /* gdrom_response.cpp */; }; - B3447F72218BEE3F00557ACE /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D020783CBC008DBAB4 /* common.cpp */; }; - B3447F73218BEE3F00557ACE /* maple_devs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419A20783CBB008DBAB4 /* maple_devs.cpp */; }; - B3447F74218BEE3F00557ACE /* TexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33942FC20783CBC008DBAB4 /* TexCache.cpp */; }; - B3447F75218BEE3F00557ACE /* zip_name_locate.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426920783CBC008DBAB4 /* zip_name_locate.c */; }; - B3447F76218BEE3F00557ACE /* zip_set_archive_comment.c in Sources */ = {isa = PBXBuildFile; fileRef = B339426820783CBC008DBAB4 /* zip_set_archive_comment.c */; }; - B3447F77218BEE3F00557ACE /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414220783CBB008DBAB4 /* driver.cpp */; }; - B3447F78218BEE3F00557ACE /* ini.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C320783CBC008DBAB4 /* ini.cpp */; }; - B3447F79218BEE3F00557ACE /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FA20783CBC008DBAB4 /* pngget.c */; }; - B3447F7A218BEE3F00557ACE /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FE20783CBC008DBAB4 /* pngset.c */; }; - B3447F7B218BEE3F00557ACE /* arm_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339419C20783CBB008DBAB4 /* arm_mem.cpp */; }; - B3447F7C218BEE3F00557ACE /* ta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418920783CBB008DBAB4 /* ta.cpp */; }; - B3447F7D218BEE3F00557ACE /* sh4_sched.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339414C20783CBB008DBAB4 /* sh4_sched.cpp */; }; - B3447F7E218BEE3F00557ACE /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = B33941FB20783CBC008DBAB4 /* png.c */; }; - B3447F7F218BEE3F00557ACE /* sh4_rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339416C20783CBB008DBAB4 /* sh4_rom.cpp */; }; - B3447F80218BEE3F00557ACE /* context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941D220783CBC008DBAB4 /* context.cpp */; }; - B3447F81218BEE3F00557ACE /* aica.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941AA20783CBB008DBAB4 /* aica.cpp */; }; - B3447F82218BEE3F00557ACE /* filter_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = B33941F620783CBC008DBAB4 /* filter_neon.S */; }; - B3447F83218BEE3F00557ACE /* ImgReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B920783CBC008DBAB4 /* ImgReader.cpp */; }; - B3447F84218BEE3F00557ACE /* ta_vtx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339418520783CBB008DBAB4 /* ta_vtx.cpp */; }; - B3447F85218BEE3F00557ACE /* sh4_core_regs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415920783CBB008DBAB4 /* sh4_core_regs.cpp */; }; - B3447F86218BEE3F00557ACE /* gdi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941B620783CBC008DBAB4 /* gdi.cpp */; }; - B3447F87218BEE3F00557ACE /* sgc_if.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941AF20783CBB008DBAB4 /* sgc_if.cpp */; }; - B3447F88218BEE3F00557ACE /* zip_replace.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427A20783CBC008DBAB4 /* zip_replace.c */; }; - B3447F89218BEE3F00557ACE /* zip_rename.c in Sources */ = {isa = PBXBuildFile; fileRef = B339427620783CBC008DBAB4 /* zip_rename.c */; }; - B3447F8A218BEE3F00557ACE /* cl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33941C420783CBC008DBAB4 /* cl.cpp */; }; - B3447F8B218BEE3F00557ACE /* sh4_interrupts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B339415620783CBB008DBAB4 /* sh4_interrupts.cpp */; }; B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; B3C7621520783162009950E4 /* PVReicast.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVReicast.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; B3C76225207833DE009950E4 /* PVReicastCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVReicastCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C76226207833DE009950E4 /* PVReicastCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVReicastCore.mm */; }; - B3DDF56D26E9B90400CE47F0 /* libreicast-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libreicast-tvOS.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -402,13 +210,6 @@ remoteGlobalIDString = B30178D2207C901D0051B93D; remoteInfo = "reicast-iOS"; }; - B3DDF56E26E9B90400CE47F0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B3C7620720783162009950E4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3447EE8218BEE3F00557ACE; - remoteInfo = "reicast-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -421,19 +222,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447F8D218BEE3F00557ACE /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - B30178D3207C901D0051B93D /* libreicast-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libreicast-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B30178D3207C901D0051B93D /* libreicast.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libreicast.a; sourceTree = BUILT_PRODUCTS_DIR; }; B316B4E621926FE500693472 /* emu.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emu.cfg; sourceTree = ""; }; B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; B339412120783CBB008DBAB4 /* rec_x64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x64.cpp; sourceTree = ""; }; @@ -1407,8 +1199,6 @@ B3447EB1218BC69700557ACE /* PVReicastCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVReicastCore+Audio.h"; sourceTree = ""; }; B3447EB2218BC69700557ACE /* PVReicastCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVReicastCore+Audio.m"; sourceTree = ""; }; B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; - B3447EE6218BEDD200557ACE /* PVReicast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVReicast.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3447F91218BEE3F00557ACE /* libreicast-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libreicast-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; @@ -1434,29 +1224,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447ECA218BEDD200557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, - B3DDF56D26E9B90400CE47F0 /* libreicast-tvOS.a in Frameworks */, - B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447F8C218BEE3F00557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620C20783162009950E4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1465,7 +1232,7 @@ B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, - B301797F207C909E0051B93D /* libreicast-iOS.a in Frameworks */, + B301797F207C909E0051B93D /* libreicast.a in Frameworks */, B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, @@ -3795,9 +3562,7 @@ isa = PBXGroup; children = ( B3C7621020783162009950E4 /* PVReicast.framework */, - B30178D3207C901D0051B93D /* libreicast-iOS.a */, - B3447EE6218BEDD200557ACE /* PVReicast.framework */, - B3447F91218BEE3F00557ACE /* libreicast-tvOS.a */, + B30178D3207C901D0051B93D /* libreicast.a */, ); name = Products; sourceTree = ""; @@ -3845,22 +3610,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B3447ED5218BEDD200557ACE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447ED6218BEDD200557ACE /* PVReicast.h in Headers */, - B3447ED7218BEDD200557ACE /* PVReicastCore.h in Headers */, - B3447ED8218BEDD200557ACE /* PVReicast+Audio.h in Headers */, - B3447ED9218BEDD200557ACE /* PVReicastCore+Audio.h in Headers */, - B3447EDA218BEDD200557ACE /* PVReicastCore+Saves.h in Headers */, - B3447EDB218BEDD200557ACE /* PVReicast+AudioTypes.h in Headers */, - B3447EDC218BEDD200557ACE /* PVReicast+CoreAudio.h in Headers */, - B3447EDD218BEDD200557ACE /* PVReicastCore+Controls.h in Headers */, - B3447EDE218BEDD200557ACE /* PVReicastCore+Video.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620D20783162009950E4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3880,9 +3629,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B30178D2207C901D0051B93D /* reicast-iOS */ = { + B30178D2207C901D0051B93D /* reicast */ = { isa = PBXNativeTarget; - buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "reicast-iOS" */; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "reicast" */; buildPhases = ( B30178CF207C901D0051B93D /* Sources */, B30178D0207C901D0051B93D /* Frameworks */, @@ -3892,50 +3641,14 @@ ); dependencies = ( ); - name = "reicast-iOS"; + name = reicast; productName = reicast; - productReference = B30178D3207C901D0051B93D /* libreicast-iOS.a */; + productReference = B30178D3207C901D0051B93D /* libreicast.a */; productType = "com.apple.product-type.library.static"; }; - B3447EC0218BEDD200557ACE /* PVReicast-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVReicast-tvOS" */; - buildPhases = ( - B3447EC1218BEDD200557ACE /* Sources */, - B3447ECA218BEDD200557ACE /* Frameworks */, - B3447ED5218BEDD200557ACE /* Headers */, - B3447EDF218BEDD200557ACE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3DDF56F26E9B90400CE47F0 /* PBXTargetDependency */, - ); - name = "PVReicast-tvOS"; - productName = PVReicast; - productReference = B3447EE6218BEDD200557ACE /* PVReicast.framework */; - productType = "com.apple.product-type.framework"; - }; - B3447EE8218BEE3F00557ACE /* reicast-tvOS */ = { + B3C7620F20783162009950E4 /* PVReicast */ = { isa = PBXNativeTarget; - buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "reicast-tvOS" */; - buildPhases = ( - B3447EE9218BEE3F00557ACE /* Sources */, - B3447F8C218BEE3F00557ACE /* Frameworks */, - B3447F8D218BEE3F00557ACE /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "reicast-tvOS"; - productName = reicast; - productReference = B3447F91218BEE3F00557ACE /* libreicast-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3C7620F20783162009950E4 /* PVReicast-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVReicast-iOS" */; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVReicast" */; buildPhases = ( B3C7620B20783162009950E4 /* Sources */, B3C7620C20783162009950E4 /* Frameworks */, @@ -3947,7 +3660,7 @@ dependencies = ( B383226826EDAB130029D12F /* PBXTargetDependency */, ); - name = "PVReicast-iOS"; + name = PVReicast; productName = PVReicast; productReference = B3C7621020783162009950E4 /* PVReicast.framework */; productType = "com.apple.product-type.framework"; @@ -3985,26 +3698,13 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C7620F20783162009950E4 /* PVReicast-iOS */, - B3447EC0218BEDD200557ACE /* PVReicast-tvOS */, - B30178D2207C901D0051B93D /* reicast-iOS */, - B3447EE8218BEE3F00557ACE /* reicast-tvOS */, + B3C7620F20783162009950E4 /* PVReicast */, + B30178D2207C901D0051B93D /* reicast */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B3447EDF218BEDD200557ACE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B316B4E821926FE500693472 /* emu.cfg in Resources */, - B3447EE0218BEDD200557ACE /* Shader.fsh in Resources */, - B3447EE1218BEDD200557ACE /* Shader.vsh in Resources */, - B3447EE2218BEDD200557ACE /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620E20783162009950E4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4188,190 +3888,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3447EC1218BEDD200557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EC2218BEDD200557ACE /* PVReicast+Audio.mm in Sources */, - B3447EC3218BEDD200557ACE /* PVReicastCore+Controls.mm in Sources */, - B3447EC4218BEDD200557ACE /* PVReicastCore.mm in Sources */, - B3447EC5218BEDD200557ACE /* PVReicastCore+Saves.m in Sources */, - B3447EC6218BEDD200557ACE /* PVReicast.mm in Sources */, - B3447EC7218BEDD200557ACE /* PVReicastCore+Video.m in Sources */, - B3447EC8218BEDD200557ACE /* PVReicast+CoreAudio.mm in Sources */, - B3447EC9218BEDD200557ACE /* PVReicastCore+Audio.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3447EE9218BEE3F00557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3447EEA218BEE3F00557ACE /* zip_free.c in Sources */, - B3447EEB218BEE3F00557ACE /* holly_intc.cpp in Sources */, - B3447EEC218BEE3F00557ACE /* zip_source_free.c in Sources */, - B3447EED218BEE3F00557ACE /* sh4_opcodes.cpp in Sources */, - B3447EEE218BEE3F00557ACE /* pngpread.c in Sources */, - B3447EEF218BEE3F00557ACE /* bsc.cpp in Sources */, - B3447EF0218BEE3F00557ACE /* reios.cpp in Sources */, - B3447EF1218BEE3F00557ACE /* ubc.cpp in Sources */, - B3447EF2218BEE3F00557ACE /* decoder.cpp in Sources */, - B3447EF3218BEE3F00557ACE /* zip_error_clear.c in Sources */, - B3447EF4218BEE3F00557ACE /* zip_dirent.c in Sources */, - B3447EF5218BEE3F00557ACE /* reios_elf.cpp in Sources */, - B3447EF6218BEE3F00557ACE /* zip_stat_index.c in Sources */, - B3447EF7218BEE3F00557ACE /* zip_unchange.c in Sources */, - B3447EF8218BEE3F00557ACE /* maple_cfg.cpp in Sources */, - B3447EF9218BEE3F00557ACE /* sb.cpp in Sources */, - B3447EFA218BEE3F00557ACE /* dsp.cpp in Sources */, - B3447EFB218BEE3F00557ACE /* nullDC.cpp in Sources */, - B3447EFC218BEE3F00557ACE /* shil.cpp in Sources */, - B3447EFD218BEE3F00557ACE /* rec_cpp.cpp in Sources */, - B3447EFE218BEE3F00557ACE /* pngerror.c in Sources */, - B3447EFF218BEE3F00557ACE /* stdclass.cpp in Sources */, - B3447F00218BEE3F00557ACE /* common.cpp in Sources */, - B3447F01218BEE3F00557ACE /* maple_helper.cpp in Sources */, - B3447F02218BEE3F00557ACE /* ioctl.cpp in Sources */, - B3447F03218BEE3F00557ACE /* virt_arm.cpp in Sources */, - B3447F04218BEE3F00557ACE /* zip_unchange_all.c in Sources */, - B3447F05218BEE3F00557ACE /* zip_file_get_offset.c in Sources */, - B3447F06218BEE3F00557ACE /* pvr_mem.cpp in Sources */, - B3447F07218BEE3F00557ACE /* zip_error_get_sys_type.c in Sources */, - B3447F08218BEE3F00557ACE /* sh4_opcode_list.cpp in Sources */, - B3447F09218BEE3F00557ACE /* zip_error.c in Sources */, - B3447F0A218BEE3F00557ACE /* drkPvr.cpp in Sources */, - B3447F0B218BEE3F00557ACE /* md5.cpp in Sources */, - B3447F0C218BEE3F00557ACE /* pvr_regs.cpp in Sources */, - B3447F0D218BEE3F00557ACE /* zip_stat_init.c in Sources */, - B3447F0E218BEE3F00557ACE /* zip_source_zip.c in Sources */, - B3447F0F218BEE3F00557ACE /* sh4_mem.cpp in Sources */, - B3447F10218BEE3F00557ACE /* zip_entry_new.c in Sources */, - B3447F11218BEE3F00557ACE /* mkstemp.c in Sources */, - B3447F12218BEE3F00557ACE /* zip_source_function.c in Sources */, - B3447F13218BEE3F00557ACE /* gltex.cpp in Sources */, - B3447F14218BEE3F00557ACE /* zip_unchange_archive.c in Sources */, - B3447F15218BEE3F00557ACE /* profiler.cpp in Sources */, - B3447F16218BEE3F00557ACE /* cdipsr.cpp in Sources */, - B3447F17218BEE3F00557ACE /* audiobackend_pulseaudio.cpp in Sources */, - B3447F18218BEE3F00557ACE /* zip_entry_free.c in Sources */, - B3447F19218BEE3F00557ACE /* arm_init.c in Sources */, - B3447F1A218BEE3F00557ACE /* filter_neon_intrinsics.c in Sources */, - B3447F1B218BEE3F00557ACE /* zip_memdup.c in Sources */, - B3447F1C218BEE3F00557ACE /* zip_filerange_crc.c in Sources */, - B3447F1D218BEE3F00557ACE /* zip_stat.c in Sources */, - B3447F1E218BEE3F00557ACE /* tmu.cpp in Sources */, - B3447F1F218BEE3F00557ACE /* maple_if.cpp in Sources */, - B3447F20218BEE3F00557ACE /* pngwtran.c in Sources */, - B3447F21218BEE3F00557ACE /* chdr.cpp in Sources */, - B3447F22218BEE3F00557ACE /* gdrom_hle.cpp in Sources */, - B3447F23218BEE3F00557ACE /* zip_source_file.c in Sources */, - B3447F24218BEE3F00557ACE /* zip_delete.c in Sources */, - B3447F25218BEE3F00557ACE /* pngwrite.c in Sources */, - B3447F26218BEE3F00557ACE /* pngwio.c in Sources */, - B3447F27218BEE3F00557ACE /* zip_error_get.c in Sources */, - B3447F28218BEE3F00557ACE /* pngread.c in Sources */, - B3447F29218BEE3F00557ACE /* ta_ctx.cpp in Sources */, - B3447F2A218BEE3F00557ACE /* Renderer_if.cpp in Sources */, - B3447F2B218BEE3F00557ACE /* nixprof.cpp in Sources */, - B3447F2C218BEE3F00557ACE /* coreio.cpp in Sources */, - B3447F2D218BEE3F00557ACE /* zip_fclose.c in Sources */, - B3447F2E218BEE3F00557ACE /* pngrtran.c in Sources */, - B3447F2F218BEE3F00557ACE /* pngmem.c in Sources */, - B3447F30218BEE3F00557ACE /* zip_get_archive_flag.c in Sources */, - B3447F31218BEE3F00557ACE /* chd.cpp in Sources */, - B3447F32218BEE3F00557ACE /* serial.cpp in Sources */, - B3447F33218BEE3F00557ACE /* elf.cpp in Sources */, - B3447F34218BEE3F00557ACE /* descrambl.cpp in Sources */, - B3447F35218BEE3F00557ACE /* arm7.cpp in Sources */, - B3447F36218BEE3F00557ACE /* spg.cpp in Sources */, - B3447F37218BEE3F00557ACE /* zip_file_strerror.c in Sources */, - B3447F38218BEE3F00557ACE /* zip_add_dir.c in Sources */, - B3447F39218BEE3F00557ACE /* elf64.cpp in Sources */, - B3447F3A218BEE3F00557ACE /* cfg.cpp in Sources */, - B3447F3B218BEE3F00557ACE /* gdromv3.cpp in Sources */, - B3447F3C218BEE3F00557ACE /* dmac.cpp in Sources */, - B3447F3D218BEE3F00557ACE /* zip_fopen_index.c in Sources */, - B3447F3E218BEE3F00557ACE /* cdi.cpp in Sources */, - B3447F3F218BEE3F00557ACE /* sh4_mmr.cpp in Sources */, - B3447F40218BEE3F00557ACE /* zip_set_archive_flag.c in Sources */, - B3447F41218BEE3F00557ACE /* _vmem.cpp in Sources */, - B3447F42218BEE3F00557ACE /* zip_get_name.c in Sources */, - B3447F43218BEE3F00557ACE /* ccn.cpp in Sources */, - B3447F44218BEE3F00557ACE /* blockmanager.cpp in Sources */, - B3447F45218BEE3F00557ACE /* aica_mem.cpp in Sources */, - B3447F46218BEE3F00557ACE /* sb_mem.cpp in Sources */, - B3447F47218BEE3F00557ACE /* sb_dma.cpp in Sources */, - B3447F48218BEE3F00557ACE /* zip_unchange_data.c in Sources */, - B3447F49218BEE3F00557ACE /* pngrio.c in Sources */, - B3447F4A218BEE3F00557ACE /* sh4_fpu.cpp in Sources */, - B3447F4B218BEE3F00557ACE /* pngwutil.c in Sources */, - B3447F4C218BEE3F00557ACE /* zip_get_file_comment.c in Sources */, - B3447F4D218BEE3F00557ACE /* mmu.cpp in Sources */, - B3447F4E218BEE3F00557ACE /* zip_new.c in Sources */, - B3447F4F218BEE3F00557ACE /* aica_if.cpp in Sources */, - B3447F50218BEE3F00557ACE /* zip_source_filep.c in Sources */, - B3447F51218BEE3F00557ACE /* sh4_interpreter.cpp in Sources */, - B3447F52218BEE3F00557ACE /* zip_file_error_get.c in Sources */, - B3447F53218BEE3F00557ACE /* audiostream.cpp in Sources */, - B3447F54218BEE3F00557ACE /* pngtrans.c in Sources */, - B3447F55218BEE3F00557ACE /* elf32.cpp in Sources */, - B3447F56218BEE3F00557ACE /* zip_add.c in Sources */, - B3447F57218BEE3F00557ACE /* zip_error_to_str.c in Sources */, - B3447F58218BEE3F00557ACE /* gldraw.cpp in Sources */, - B3447F59218BEE3F00557ACE /* zip_set_name.c in Sources */, - B3447F5A218BEE3F00557ACE /* zip_strerror.c in Sources */, - B3447F5B218BEE3F00557ACE /* zip_open.c in Sources */, - B3447F5C218BEE3F00557ACE /* zip_fopen.c in Sources */, - B3447F5D218BEE3F00557ACE /* rtc.cpp in Sources */, - B3447F5E218BEE3F00557ACE /* zip_get_num_files.c in Sources */, - B3447F5F218BEE3F00557ACE /* pngrutil.c in Sources */, - B3447F60218BEE3F00557ACE /* zip_error_strerror.c in Sources */, - B3447F61218BEE3F00557ACE /* zip_close.c in Sources */, - B3447F62218BEE3F00557ACE /* vbaARM.cpp in Sources */, - B3447F63218BEE3F00557ACE /* audiobackend_alsa.cpp in Sources */, - B3447F64218BEE3F00557ACE /* intc.cpp in Sources */, - B3447F65218BEE3F00557ACE /* zip_source_buffer.c in Sources */, - B3447F66218BEE3F00557ACE /* zip_err_str.c in Sources */, - B3447F67218BEE3F00557ACE /* zip_file_error_clear.c in Sources */, - B3447F68218BEE3F00557ACE /* pvr_sb_regs.cpp in Sources */, - B3447F69218BEE3F00557ACE /* gles.cpp in Sources */, - B3447F6A218BEE3F00557ACE /* rec_arm.cpp in Sources */, - B3447F6B218BEE3F00557ACE /* audiobackend_oss.cpp in Sources */, - B3447F6C218BEE3F00557ACE /* zip_get_archive_comment.c in Sources */, - B3447F6D218BEE3F00557ACE /* zip_set_file_comment.c in Sources */, - B3447F6E218BEE3F00557ACE /* cpg.cpp in Sources */, - B3447F6F218BEE3F00557ACE /* sha1.cpp in Sources */, - B3447F70218BEE3F00557ACE /* zip_fread.c in Sources */, - B3447F71218BEE3F00557ACE /* gdrom_response.cpp in Sources */, - B3447F72218BEE3F00557ACE /* common.cpp in Sources */, - B3447F73218BEE3F00557ACE /* maple_devs.cpp in Sources */, - B3447F74218BEE3F00557ACE /* TexCache.cpp in Sources */, - B3447F75218BEE3F00557ACE /* zip_name_locate.c in Sources */, - B3447F76218BEE3F00557ACE /* zip_set_archive_comment.c in Sources */, - B3447F77218BEE3F00557ACE /* driver.cpp in Sources */, - B3447F78218BEE3F00557ACE /* ini.cpp in Sources */, - B3447F79218BEE3F00557ACE /* pngget.c in Sources */, - B3447F7A218BEE3F00557ACE /* pngset.c in Sources */, - B3447F7B218BEE3F00557ACE /* arm_mem.cpp in Sources */, - B3447F7C218BEE3F00557ACE /* ta.cpp in Sources */, - B3447F7D218BEE3F00557ACE /* sh4_sched.cpp in Sources */, - B3447F7E218BEE3F00557ACE /* png.c in Sources */, - B3447F7F218BEE3F00557ACE /* sh4_rom.cpp in Sources */, - B3447F80218BEE3F00557ACE /* context.cpp in Sources */, - B3447F81218BEE3F00557ACE /* aica.cpp in Sources */, - B3447F82218BEE3F00557ACE /* filter_neon.S in Sources */, - B3447F83218BEE3F00557ACE /* ImgReader.cpp in Sources */, - B3447F84218BEE3F00557ACE /* ta_vtx.cpp in Sources */, - B3447F85218BEE3F00557ACE /* sh4_core_regs.cpp in Sources */, - B3447F86218BEE3F00557ACE /* gdi.cpp in Sources */, - B3447F87218BEE3F00557ACE /* sgc_if.cpp in Sources */, - B3447F88218BEE3F00557ACE /* zip_replace.c in Sources */, - B3447F89218BEE3F00557ACE /* zip_rename.c in Sources */, - B3447F8A218BEE3F00557ACE /* cl.cpp in Sources */, - B3447F8B218BEE3F00557ACE /* sh4_interrupts.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620B20783162009950E4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4392,14 +3908,9 @@ /* Begin PBXTargetDependency section */ B383226826EDAB130029D12F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B30178D2207C901D0051B93D /* reicast-iOS */; + target = B30178D2207C901D0051B93D /* reicast */; targetProxy = B383226726EDAB130029D12F /* PBXContainerItemProxy */; }; - B3DDF56F26E9B90400CE47F0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3447EE8218BEE3F00557ACE /* reicast-tvOS */; - targetProxy = B3DDF56E26E9B90400CE47F0 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -4425,6 +3936,7 @@ B30178DA207C901D0051B93D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -4433,6 +3945,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; @@ -4440,6 +3954,7 @@ B30178DB207C901D0051B93D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -4448,6 +3963,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; @@ -4514,7 +4031,7 @@ "\"$(SRCROOT)/reicast-emulator/core/deps\"", "\"$(SRCROOT)/reicast-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_CFLAGS = ( "$(inherited)", @@ -4533,7 +4050,7 @@ "-DTARGET_NO_NIXPROF", ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -4544,6 +4061,7 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4554,7 +4072,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVReicast/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -4565,41 +4083,16 @@ PRODUCT_NAME = PVReicast; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Archive; }; - B324C5032191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVReicast/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVReicast"; - PRODUCT_NAME = PVReicast; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; B324C5042191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; GCC_ENABLE_CPP_EXCEPTIONS = NO; @@ -4608,114 +4101,12 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Archive; }; - B324C5052191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; - B3447EE4218BEDD200557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVReicast/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVReicast"; - PRODUCT_NAME = PVReicast; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447EE5218BEDD200557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVReicast/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVReicast"; - PRODUCT_NAME = PVReicast; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - B3447F8F218BEE3F00557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447F90218BEE3F00557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - GCC_ENABLE_CPP_EXCEPTIONS = NO; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; B3C7621620783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; @@ -4780,12 +4171,12 @@ "\"$(SRCROOT)/reicast-emulator/core/deps\"", "\"$(SRCROOT)/reicast-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -4854,7 +4245,7 @@ "\"$(SRCROOT)/reicast-emulator/core/deps\"", "\"$(SRCROOT)/reicast-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( @@ -4874,7 +4265,7 @@ "-DTARGET_NO_NIXPROF", ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -4885,6 +4276,7 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4895,7 +4287,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVReicast/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -4906,6 +4298,8 @@ PRODUCT_NAME = PVReicast; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; @@ -4913,6 +4307,7 @@ B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -4923,7 +4318,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVReicast/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -4934,6 +4329,8 @@ PRODUCT_NAME = PVReicast; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; @@ -4941,7 +4338,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "reicast-iOS" */ = { + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "reicast" */ = { isa = XCConfigurationList; buildConfigurations = ( B30178DA207C901D0051B93D /* Debug */, @@ -4951,26 +4348,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVReicast-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447EE4218BEDD200557ACE /* Debug */, - B3447EE5218BEDD200557ACE /* Release */, - B324C5032191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "reicast-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447F8F218BEE3F00557ACE /* Debug */, - B3447F90218BEE3F00557ACE /* Release */, - B324C5052191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVReicast" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4981,7 +4358,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVReicast-iOS" */ = { + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVReicast" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C7621920783162009950E4 /* Debug */, diff --git a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast-iOS.xcscheme b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast-iOS.xcscheme deleted file mode 100644 index eaae40951c..0000000000 --- a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast-iOS.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast-tvOS.xcscheme b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast-tvOS.xcscheme deleted file mode 100644 index e1796fc60c..0000000000 --- a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast-tvOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast.xcscheme b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast.xcscheme new file mode 100644 index 0000000000..3d72157ffa --- /dev/null +++ b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/PVReicast.xcscheme @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast-iOS.xcscheme b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast-iOS.xcscheme deleted file mode 100644 index 798852dfb5..0000000000 --- a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast-tvOS.xcscheme b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast-tvOS.xcscheme deleted file mode 100644 index 2e6f7e2066..0000000000 --- a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast.xcscheme b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast.xcscheme new file mode 100644 index 0000000000..80aa87970e --- /dev/null +++ b/Cores/Reicast/PVReicast.xcodeproj/xcshareddata/xcschemes/reicast.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Reicast/PVReicast/PVReicast.h b/Cores/Reicast/PVReicast/PVReicast.h index 3bbdc9af58..0ea3263967 100644 --- a/Cores/Reicast/PVReicast/PVReicast.h +++ b/Cores/Reicast/PVReicast/PVReicast.h @@ -6,7 +6,7 @@ // Copyright © 2018 Provenance. All rights reserved. // -#import +#import //! Project version number for PVReicast. FOUNDATION_EXPORT double PVReicastVersionNumber; diff --git a/Cores/Reicast/PVReicastCore/Core/PVReicastCore+Video.m b/Cores/Reicast/PVReicastCore/Core/PVReicastCore+Video.m index 004c48f704..84e79e029b 100644 --- a/Cores/Reicast/PVReicastCore/Core/PVReicastCore+Video.m +++ b/Cores/Reicast/PVReicastCore/Core/PVReicastCore+Video.m @@ -10,7 +10,7 @@ #import "PVReicastCore.h" -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import diff --git a/Cores/Reicast/PVReicastCore/Core/PVReicastCore.mm b/Cores/Reicast/PVReicastCore/Core/PVReicastCore.mm index c9fedfcf7a..329aa9f173 100644 --- a/Cores/Reicast/PVReicastCore/Core/PVReicastCore.mm +++ b/Cores/Reicast/PVReicastCore/Core/PVReicastCore.mm @@ -220,20 +220,6 @@ - (void)startEmulation { } } -- (void)runReicastEmuThread { - @autoreleasepool - { - [self reicastMain]; - - // Core returns - - // Unlock rendering thread - dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); - - [super stopEmulation]; - } -} - - (void)runReicastRenderThread { @autoreleasepool { @@ -260,6 +246,21 @@ - (void)runReicastRenderThread { } } +- (void)runReicastEmuThread { + @autoreleasepool + { + [self reicastMain]; + + // Core returns + + // Unlock rendering thread + dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); + + [super stopEmulation]; + } +} + + - (void)reicastMain { // #if !TARGET_OS_SIMULATOR // install_prof_handler(1); diff --git a/Cores/Reicast/reicast-emulator b/Cores/Reicast/reicast-emulator index de74d9a490..15b6b00918 160000 --- a/Cores/Reicast/reicast-emulator +++ b/Cores/Reicast/reicast-emulator @@ -1 +1 @@ -Subproject commit de74d9a4906454f13e4260c9ecb400daad62aa4c +Subproject commit 15b6b009184891490ef50a40a32828562f2d2974 diff --git a/Cores/SameDuck/BuildFlags.xcconfig b/Cores/SameDuck/BuildFlags.xcconfig new file mode 100644 index 0000000000..c3c18d087c --- /dev/null +++ b/Cores/SameDuck/BuildFlags.xcconfig @@ -0,0 +1,33 @@ +// +// BuildFlags.xcconfig +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) _FILE_OFFSET_BITS=64 __LIBRETRO__=1 HAVE_OPENGLES=1 HAVE_OPENGLES2=1 IOS STATIC_LINKING=1 FRONTEND_SUPPORTS_RGB565=1 HAVE_STRINGS=1 HAVE_STDINT_H=1 HAVE_INTTYPES_H=1 HAS_GPU=1 INLINE=inline HAVE_LIBNX=1 +// C_DYNREC=1 +// HAVE_OPENGLES3=1 HAVE_OPENGLES3_1=1 +GCC_PREPROCESSOR_DEFINITIONS[configuration=Debug] = $(inherited) DEBUG=1 +GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = $(inherited) NDEBUG=1 + +// DISABLE_DYNAREC=1 +OTHER_CFLAGS = $(inherited) -ObjC -Wno-ignored-optimization-argument -Wno-unknown-warning-option -fomit-frame-pointer -fno-exceptions -fno-non-call-exceptions -Wno-address-of-packed-member -Wno-format -Wno-switch -Wno-psabi -fpic -fvisibility=hidden -ffunction-sections -Iinclude +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load -lpthread + + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/SameDuck/PVSameDuck.xcodeproj/project.pbxproj b/Cores/SameDuck/PVSameDuck.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..cae73fbf2e --- /dev/null +++ b/Cores/SameDuck/PVSameDuck.xcodeproj/project.pbxproj @@ -0,0 +1,1980 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libSameDuck.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libSameDuck.a */; }; + B3135B9B26E4CAD40047F338 /* PVSameDuckCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVSameDuckCore.mm */; }; + B3135B9C26E4CC290047F338 /* PVSameDuckCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVSameDuckCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3135BA126E4CC620047F338 /* PVSameDuck.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVSameDuck.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3135BA226E4CC650047F338 /* PVSameDuck.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVSameDuck.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3135BA326E4CD080047F338 /* PVSameDuckCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVSameDuckCore.mm */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; + B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B3423262286EBB4B0033EFA5 /* PVSameDuckCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVSameDuckCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B367032228962FEA00F75595 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830C2895FB8C003E465F /* memory.c */; }; + B367032328962FEA00F75595 /* timing.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683242895FB8D003E465F /* timing.c */; }; + B367032428962FEA00F75595 /* sm83_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B306831C2895FB8D003E465F /* sm83_cpu.c */; }; + B367032528962FEA00F75595 /* display.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830A2895FB8C003E465F /* display.c */; }; + B367032628962FEA00F75595 /* workboy.c in Sources */ = {isa = PBXBuildFile; fileRef = B306832D2895FB8D003E465F /* workboy.c */; }; + B367032728962FEA00F75595 /* cheats.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830B2895FB8C003E465F /* cheats.c */; }; + B367032828962FEA00F75595 /* joypad.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683122895FB8D003E465F /* joypad.c */; }; + B367032928962FEA00F75595 /* symbol_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683182895FB8D003E465F /* symbol_hash.c */; }; + B367032A28962FEA00F75595 /* rewind.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683232895FB8D003E465F /* rewind.c */; }; + B367032B28962FEA00F75595 /* sm83_disassembler.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683212895FB8D003E465F /* sm83_disassembler.c */; }; + B367032C28962FEA00F75595 /* gb.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830F2895FB8D003E465F /* gb.c */; }; + B367032D28962FEA00F75595 /* printer.c in Sources */ = {isa = PBXBuildFile; fileRef = B306831B2895FB8D003E465F /* printer.c */; }; + B367032E28962FEA00F75595 /* camera.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683252895FB8D003E465F /* camera.c */; }; + B367032F28962FEA00F75595 /* debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683132895FB8D003E465F /* debugger.c */; }; + B367033028962FEA00F75595 /* random.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683172895FB8D003E465F /* random.c */; }; + B367033128962FEA00F75595 /* save_state.c in Sources */ = {isa = PBXBuildFile; fileRef = B306831E2895FB8D003E465F /* save_state.c */; }; + B367033228962FEA00F75595 /* rumble.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683162895FB8D003E465F /* rumble.c */; }; + B367033328962FEA00F75595 /* apu.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830E2895FB8D003E465F /* apu.c */; }; + B367033428962FEA00F75595 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830C2895FB8C003E465F /* memory.c */; }; + B367033528962FEA00F75595 /* timing.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683242895FB8D003E465F /* timing.c */; }; + B367033628962FEA00F75595 /* sm83_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B306831C2895FB8D003E465F /* sm83_cpu.c */; }; + B367033728962FEA00F75595 /* display.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830A2895FB8C003E465F /* display.c */; }; + B367033828962FEA00F75595 /* workboy.c in Sources */ = {isa = PBXBuildFile; fileRef = B306832D2895FB8D003E465F /* workboy.c */; }; + B367033928962FEA00F75595 /* cheats.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830B2895FB8C003E465F /* cheats.c */; }; + B367033A28962FEA00F75595 /* joypad.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683122895FB8D003E465F /* joypad.c */; }; + B367033B28962FEA00F75595 /* symbol_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683182895FB8D003E465F /* symbol_hash.c */; }; + B367033C28962FEA00F75595 /* rewind.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683232895FB8D003E465F /* rewind.c */; }; + B367033D28962FEA00F75595 /* sm83_disassembler.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683212895FB8D003E465F /* sm83_disassembler.c */; }; + B367033E28962FEA00F75595 /* gb.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830F2895FB8D003E465F /* gb.c */; }; + B367033F28962FEA00F75595 /* printer.c in Sources */ = {isa = PBXBuildFile; fileRef = B306831B2895FB8D003E465F /* printer.c */; }; + B367034028962FEA00F75595 /* camera.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683252895FB8D003E465F /* camera.c */; }; + B367034128962FEA00F75595 /* debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683132895FB8D003E465F /* debugger.c */; }; + B367034228962FEA00F75595 /* random.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683172895FB8D003E465F /* random.c */; }; + B367034328962FEA00F75595 /* save_state.c in Sources */ = {isa = PBXBuildFile; fileRef = B306831E2895FB8D003E465F /* save_state.c */; }; + B367034428962FEA00F75595 /* rumble.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683162895FB8D003E465F /* rumble.c */; }; + B367034528962FEA00F75595 /* apu.c in Sources */ = {isa = PBXBuildFile; fileRef = B306830E2895FB8D003E465F /* apu.c */; }; + B367034628962FFA00F75595 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683432895FB8D003E465F /* libretro.c */; }; + B367034728962FFA00F75595 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B30683432895FB8D003E465F /* libretro.c */; }; + B380C2692894EB37007B76FD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B380C2682894EB37007B76FD /* OpenGL.framework */; platformFilter = maccatalyst; }; + B39768F82859E23200558958 /* libSameDuck-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libSameDuck-libretro.a */; }; + B39768FB2859E23A00558958 /* libSameDuck-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B39768F72859E18B00558958 /* libSameDuck-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3A41BF0286E76490054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */; }; + B3B104AF218F26F400210C39 /* libSameDuck.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libSameDuck.a */; }; + B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3C8A65E2877D62F0037A946 /* PVSameDuckCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVSameDuckCore+Controls.mm */; }; + B3C8A65F2877D6350037A946 /* PVSameDuckCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVSameDuckCore+Controls.mm */; }; + B3C8A6602877D6510037A946 /* PVSameDuckCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVSameDuckCore+Video.m */; }; + B3C8A6612877D6B30037A946 /* PVSameDuckCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVSameDuckCore+Audio.m */; }; + B3C8A6622877D6B40037A946 /* PVSameDuckCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVSameDuckCore+Audio.m */; }; + B3EBB2032872B65700EAEB37 /* PVSameDuckCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVSameDuckCore+Video.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; + B39768FC2859E23A00558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B39768ED2859E18B00558958; + remoteInfo = "dos-box-libretro-tvOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447F8D218BEE3F00557ACE /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B39768F22859E18B00558958 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libSameDuck.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSameDuck.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B30683042895FB8C003E465F /* build-faq.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "build-faq.md"; sourceTree = ""; }; + B30683062895FB8C003E465F /* registers.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = registers.sym; sourceTree = ""; }; + B30683082895FB8C003E465F /* sm83_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sm83_cpu.h; sourceTree = ""; }; + B30683092895FB8C003E465F /* printer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = printer.h; sourceTree = ""; }; + B306830A2895FB8C003E465F /* display.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = display.c; sourceTree = ""; }; + B306830B2895FB8C003E465F /* cheats.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cheats.c; sourceTree = ""; }; + B306830C2895FB8C003E465F /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B306830D2895FB8D003E465F /* save_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = save_state.h; sourceTree = ""; }; + B306830E2895FB8D003E465F /* apu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = apu.c; sourceTree = ""; }; + B306830F2895FB8D003E465F /* gb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gb.c; sourceTree = ""; }; + B30683102895FB8D003E465F /* workboy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = workboy.h; sourceTree = ""; }; + B30683112895FB8D003E465F /* camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera.h; sourceTree = ""; }; + B30683122895FB8D003E465F /* joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = joypad.c; sourceTree = ""; }; + B30683132895FB8D003E465F /* debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugger.c; sourceTree = ""; }; + B30683142895FB8D003E465F /* timing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timing.h; sourceTree = ""; }; + B30683152895FB8D003E465F /* rewind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rewind.h; sourceTree = ""; }; + B30683162895FB8D003E465F /* rumble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rumble.c; sourceTree = ""; }; + B30683172895FB8D003E465F /* random.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = random.c; sourceTree = ""; }; + B30683182895FB8D003E465F /* symbol_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = symbol_hash.c; sourceTree = ""; }; + B30683192895FB8D003E465F /* cheats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheats.h; sourceTree = ""; }; + B306831A2895FB8D003E465F /* display.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = ""; }; + B306831B2895FB8D003E465F /* printer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printer.c; sourceTree = ""; }; + B306831C2895FB8D003E465F /* sm83_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sm83_cpu.c; sourceTree = ""; }; + B306831D2895FB8D003E465F /* gb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gb.h; sourceTree = ""; }; + B306831E2895FB8D003E465F /* save_state.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = save_state.c; sourceTree = ""; }; + B306831F2895FB8D003E465F /* apu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apu.h; sourceTree = ""; }; + B30683202895FB8D003E465F /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B30683212895FB8D003E465F /* sm83_disassembler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sm83_disassembler.c; sourceTree = ""; }; + B30683222895FB8D003E465F /* debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; + B30683232895FB8D003E465F /* rewind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rewind.c; sourceTree = ""; }; + B30683242895FB8D003E465F /* timing.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timing.c; sourceTree = ""; }; + B30683252895FB8D003E465F /* camera.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = camera.c; sourceTree = ""; }; + B30683262895FB8D003E465F /* joypad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joypad.h; sourceTree = ""; }; + B30683282895FB8D003E465F /* sgb_animation_logo.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = sgb_animation_logo.inc; sourceTree = ""; }; + B30683292895FB8D003E465F /* agb_border.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = agb_border.inc; sourceTree = ""; }; + B306832A2895FB8D003E465F /* sgb_border.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = sgb_border.inc; sourceTree = ""; }; + B306832B2895FB8D003E465F /* dmg_border.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = dmg_border.inc; sourceTree = ""; }; + B306832C2895FB8D003E465F /* cgb_border.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = cgb_border.inc; sourceTree = ""; }; + B306832D2895FB8D003E465F /* workboy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = workboy.c; sourceTree = ""; }; + B306832E2895FB8D003E465F /* symbol_hash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbol_hash.h; sourceTree = ""; }; + B306832F2895FB8D003E465F /* random.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = random.h; sourceTree = ""; }; + B30683302895FB8D003E465F /* gb_struct_def.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gb_struct_def.h; sourceTree = ""; }; + B30683312895FB8D003E465F /* rumble.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rumble.h; sourceTree = ""; }; + B30683322895FB8D003E465F /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B30683342895FB8D003E465F /* CartridgeTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CartridgeTemplate.png; sourceTree = ""; }; + B30683352895FB8D003E465F /* get_image_for_rom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = get_image_for_rom.h; sourceTree = ""; }; + B30683362895FB8D003E465F /* exports.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = exports.sym; sourceTree = ""; }; + B30683372895FB8D003E465F /* generator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = generator.m; sourceTree = ""; }; + B30683382895FB8D003E465F /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B30683392895FB8D003E465F /* get_image_for_rom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = get_image_for_rom.c; sourceTree = ""; }; + B306833A2895FB8D003E465F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B306833B2895FB8D003E465F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B306833D2895FB8D003E465F /* gtk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtk.c; sourceTree = ""; }; + B306833E2895FB8D003E465F /* open_dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = open_dialog.h; sourceTree = ""; }; + B306833F2895FB8D003E465F /* windows.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = windows.c; sourceTree = ""; }; + B30683402895FB8D003E465F /* cocoa.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = cocoa.m; sourceTree = ""; }; + B30683412895FB8D003E465F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B30683432895FB8D003E465F /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B30683442895FB8D003E465F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B30683452895FB8D003E465F /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B30683462895FB8D003E465F /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B30683472895FB8D003E465F /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B30683492895FB8D003E465F /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B306834A2895FB8D003E465F /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B306834B2895FB8D003E465F /* version.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.mk; sourceTree = ""; }; + B306834D2895FB8D003E465F /* GBCheatTextFieldCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBCheatTextFieldCell.h; sourceTree = ""; }; + B306834E2895FB8D003E465F /* CPU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CPU.png; sourceTree = ""; }; + B306834F2895FB8D003E465F /* GBViewGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBViewGL.h; sourceTree = ""; }; + B30683502895FB8D003E465F /* GBOptionalVisualEffectView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBOptionalVisualEffectView.h; sourceTree = ""; }; + B30683512895FB8D003E465F /* GBView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBView.h; sourceTree = ""; }; + B30683522895FB8D003E465F /* Display@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Display@2x.png"; sourceTree = ""; }; + B30683532895FB8D003E465F /* GBAudioClient.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBAudioClient.m; sourceTree = ""; }; + B30683542895FB8D003E465F /* GBWarningPopover.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBWarningPopover.m; sourceTree = ""; }; + B30683552895FB8D003E465F /* GBCompleteByteSlice.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBCompleteByteSlice.m; sourceTree = ""; }; + B30683562895FB8D003E465F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + B30683572895FB8D003E465F /* NSString+StringForKey.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+StringForKey.m"; sourceTree = ""; }; + B30683582895FB8D003E465F /* Speaker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Speaker@2x.png"; sourceTree = ""; }; + B30683592895FB8D003E465F /* GBButtons.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBButtons.h; sourceTree = ""; }; + B306835A2895FB8D003E465F /* Document.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Document.m; sourceTree = ""; }; + B306835B2895FB8D003E465F /* GBMemoryByteArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBMemoryByteArray.h; sourceTree = ""; }; + B306835C2895FB8D003E465F /* GBBorderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBBorderView.h; sourceTree = ""; }; + B306835D2895FB8D003E465F /* Cartridge.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Cartridge.icns; sourceTree = ""; }; + B306835E2895FB8D003E465F /* License.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = License.html; sourceTree = ""; }; + B306835F2895FB8D003E465F /* GBOpenGLView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBOpenGLView.m; sourceTree = ""; }; + B30683602895FB8D003E465F /* GBColorCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBColorCell.h; sourceTree = ""; }; + B30683612895FB8D003E465F /* Joypad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Joypad.png; sourceTree = ""; }; + B30683622895FB8D003E465F /* GBPreferencesWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBPreferencesWindow.h; sourceTree = ""; }; + B30683632895FB8D003E465F /* GBSplitView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBSplitView.m; sourceTree = ""; }; + B30683642895FB8D003E465F /* Speaker~dark@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Speaker~dark@2x.png"; sourceTree = ""; }; + B30683652895FB8D003E465F /* BigSurToolbar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BigSurToolbar.h; sourceTree = ""; }; + B30683662895FB8D003E465F /* GBTerminalTextFieldCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBTerminalTextFieldCell.m; sourceTree = ""; }; + B30683672895FB8D003E465F /* GBViewMetal.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBViewMetal.m; sourceTree = ""; }; + B30683682895FB8D003E465F /* GBImageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBImageCell.m; sourceTree = ""; }; + B30683692895FB8D003E465F /* GBImageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBImageView.m; sourceTree = ""; }; + B306836A2895FB8D003E465F /* GBCheatWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBCheatWindowController.m; sourceTree = ""; }; + B306836B2895FB8D003E465F /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = AppIcon.icns; sourceTree = ""; }; + B306836C2895FB8D003E465F /* CPU@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "CPU@2x.png"; sourceTree = ""; }; + B306836D2895FB8D003E465F /* GBGLShader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBGLShader.h; sourceTree = ""; }; + B306836E2895FB8D003E465F /* Document.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Document.xib; sourceTree = ""; }; + B306836F2895FB8D003E465F /* NSObject+MavericksCompat.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSObject+MavericksCompat.m"; sourceTree = ""; }; + B30683702895FB8D003E465F /* GBCompleteByteSlice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBCompleteByteSlice.h; sourceTree = ""; }; + B30683712895FB8D003E465F /* GBWarningPopover.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBWarningPopover.h; sourceTree = ""; }; + B30683722895FB8D003E465F /* GBAudioClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBAudioClient.h; sourceTree = ""; }; + B30683732895FB8D003E465F /* GBView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBView.m; sourceTree = ""; }; + B30683742895FB8D003E465F /* GBViewGL.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBViewGL.m; sourceTree = ""; }; + B30683752895FB8D003E465F /* GBOptionalVisualEffectView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBOptionalVisualEffectView.m; sourceTree = ""; }; + B30683762895FB8D003E465F /* KeyboardShortcutPrivateAPIs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyboardShortcutPrivateAPIs.h; sourceTree = ""; }; + B30683772895FB8D003E465F /* Preferences.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = ""; }; + B30683782895FB8D003E465F /* GBCheatTextFieldCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBCheatTextFieldCell.m; sourceTree = ""; }; + B30683792895FB8D003E465F /* NSImageNamedDarkSupport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NSImageNamedDarkSupport.m; sourceTree = ""; }; + B306837A2895FB8D003E465F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B306837B2895FB8D003E465F /* GBBorderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBBorderView.m; sourceTree = ""; }; + B306837C2895FB8D003E465F /* Speaker~dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Speaker~dark.png"; sourceTree = ""; }; + B306837D2895FB8D003E465F /* GBMemoryByteArray.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBMemoryByteArray.m; sourceTree = ""; }; + B306837E2895FB8D003E465F /* Display.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Display.png; sourceTree = ""; }; + B306837F2895FB8D003E465F /* GBButtons.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBButtons.m; sourceTree = ""; }; + B30683802895FB8D003E465F /* Document.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Document.h; sourceTree = ""; }; + B30683812895FB8D003E465F /* PopoverView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PopoverView.xib; sourceTree = ""; }; + B30683822895FB8D003E465F /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; + B30683832895FB8D003E465F /* NSString+StringForKey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+StringForKey.h"; sourceTree = ""; }; + B30683842895FB8D003E465F /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + B30683852895FB8D003E465F /* GBImageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBImageCell.h; sourceTree = ""; }; + B30683862895FB8D003E465F /* GBViewMetal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBViewMetal.h; sourceTree = ""; }; + B30683872895FB8D003E465F /* GBTerminalTextFieldCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBTerminalTextFieldCell.h; sourceTree = ""; }; + B30683882895FB8D003E465F /* GBSplitView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBSplitView.h; sourceTree = ""; }; + B30683892895FB8D003E465F /* GBPreferencesWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBPreferencesWindow.m; sourceTree = ""; }; + B306838A2895FB8D003E465F /* GBOpenGLView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBOpenGLView.h; sourceTree = ""; }; + B306838B2895FB8D003E465F /* GBColorCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBColorCell.m; sourceTree = ""; }; + B306838C2895FB8D003E465F /* Speaker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Speaker.png; sourceTree = ""; }; + B306838D2895FB8D003E465F /* GBGLShader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GBGLShader.m; sourceTree = ""; }; + B306838E2895FB8D003E465F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B306838F2895FB8E003E465F /* Joypad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Joypad@2x.png"; sourceTree = ""; }; + B30683902895FB8E003E465F /* GBCheatWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBCheatWindowController.h; sourceTree = ""; }; + B30683912895FB8E003E465F /* PkgInfo */ = {isa = PBXFileReference; lastKnownFileType = text; path = PkgInfo; sourceTree = ""; }; + B30683922895FB8E003E465F /* GBImageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBImageView.h; sourceTree = ""; }; + B30683932895FB8E003E465F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B30683952895FB8E003E465F /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B30683962895FB8E003E465F /* gui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gui.c; sourceTree = ""; }; + B30683972895FB8E003E465F /* shader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader.h; sourceTree = ""; }; + B30683982895FB8E003E465F /* opengl_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl_compat.h; sourceTree = ""; }; + B30683992895FB8E003E465F /* font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font.c; sourceTree = ""; }; + B306839A2895FB8E003E465F /* gui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = ""; }; + B306839C2895FB8E003E465F /* audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; + B306839D2895FB8E003E465F /* sdl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl.c; sourceTree = ""; }; + B306839E2895FB8E003E465F /* utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = ""; }; + B306839F2895FB8E003E465F /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B30683A02895FB8E003E465F /* shader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shader.c; sourceTree = ""; }; + B30683A12895FB8E003E465F /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; + B30683A22895FB8E003E465F /* background.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = background.bmp; sourceTree = ""; }; + B30683A32895FB8E003E465F /* opengl_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opengl_compat.c; sourceTree = ""; }; + B30683A42895FB8E003E465F /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; + B30683A62895FB8E003E465F /* JOYAxis.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYAxis.m; sourceTree = ""; }; + B30683A72895FB8E003E465F /* JOYHat.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYHat.m; sourceTree = ""; }; + B30683A82895FB8E003E465F /* JoyKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JoyKit.h; sourceTree = ""; }; + B30683A92895FB8E003E465F /* JOYButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYButton.h; sourceTree = ""; }; + B30683AA2895FB8E003E465F /* JOYController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYController.m; sourceTree = ""; }; + B30683AB2895FB8E003E465F /* JOYEmulatedButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYEmulatedButton.m; sourceTree = ""; }; + B30683AC2895FB8E003E465F /* JOYFullReportElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYFullReportElement.m; sourceTree = ""; }; + B30683AD2895FB8E003E465F /* JOYSubElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYSubElement.m; sourceTree = ""; }; + B30683AE2895FB8E003E465F /* JOYMultiplayerController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYMultiplayerController.m; sourceTree = ""; }; + B30683AF2895FB8E003E465F /* JOYElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYElement.m; sourceTree = ""; }; + B30683B02895FB8E003E465F /* JOYAxes2D.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYAxes2D.m; sourceTree = ""; }; + B30683B12895FB8E003E465F /* JOYController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYController.h; sourceTree = ""; }; + B30683B22895FB8E003E465F /* JOYButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JOYButton.m; sourceTree = ""; }; + B30683B32895FB8E003E465F /* JOYHat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYHat.h; sourceTree = ""; }; + B30683B42895FB8E003E465F /* JOYAxis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYAxis.h; sourceTree = ""; }; + B30683B52895FB8E003E465F /* ControllerConfiguration.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ControllerConfiguration.inc; sourceTree = ""; }; + B30683B62895FB8E003E465F /* JOYEmulatedButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYEmulatedButton.h; sourceTree = ""; }; + B30683B72895FB8E003E465F /* JOYElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYElement.h; sourceTree = ""; }; + B30683B82895FB8E003E465F /* JOYMultiplayerController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYMultiplayerController.h; sourceTree = ""; }; + B30683B92895FB8E003E465F /* JOYSubElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYSubElement.h; sourceTree = ""; }; + B30683BA2895FB8E003E465F /* JOYFullReportElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYFullReportElement.h; sourceTree = ""; }; + B30683BB2895FB8E003E465F /* JOYAxes2D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JOYAxes2D.h; sourceTree = ""; }; + B30683BE2895FB8E003E465F /* sanity.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = sanity.yml; sourceTree = ""; }; + B30683C02895FB8E003E465F /* cgb_sound.gb */ = {isa = PBXFileReference; lastKnownFileType = file; path = cgb_sound.gb; sourceTree = ""; }; + B30683C12895FB8E003E465F /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B30683C22895FB8E003E465F /* dmg_sound-2.gb */ = {isa = PBXFileReference; lastKnownFileType = file; path = "dmg_sound-2.gb"; sourceTree = ""; }; + B30683C32895FB8E003E465F /* install_deps.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install_deps.sh; sourceTree = ""; }; + B30683C42895FB8E003E465F /* dmg-acid2.gb */ = {isa = PBXFileReference; lastKnownFileType = file; path = "dmg-acid2.gb"; sourceTree = ""; }; + B30683C52895FB8E003E465F /* oam_bug-2.gb */ = {isa = PBXFileReference; lastKnownFileType = file; path = "oam_bug-2.gb"; sourceTree = ""; }; + B30683C62895FB8E003E465F /* sanity_tests.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = sanity_tests.sh; sourceTree = ""; }; + B30683C72895FB8E003E465F /* cgb-acid2.gbc */ = {isa = PBXFileReference; lastKnownFileType = file; path = "cgb-acid2.gbc"; sourceTree = ""; }; + B30683C82895FB8E003E465F /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B30683CA2895FB8E003E465F /* MonoLCD.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = MonoLCD.fsh; sourceTree = ""; }; + B30683CB2895FB8E003E465F /* Scale4x.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = Scale4x.fsh; sourceTree = ""; }; + B30683CC2895FB8E003E465F /* OmniScaleLegacy.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = OmniScaleLegacy.fsh; sourceTree = ""; }; + B30683CD2895FB8E003E465F /* AAScale4x.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = AAScale4x.fsh; sourceTree = ""; }; + B30683CE2895FB8E003E465F /* NearestNeighbor.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = NearestNeighbor.fsh; sourceTree = ""; }; + B30683CF2895FB8E003E465F /* Scale2x.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = Scale2x.fsh; sourceTree = ""; }; + B30683D02895FB8E003E465F /* LCD.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = LCD.fsh; sourceTree = ""; }; + B30683D12895FB8E003E465F /* CRT.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = CRT.fsh; sourceTree = ""; }; + B30683D22895FB8E003E465F /* AAScale2x.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = AAScale2x.fsh; sourceTree = ""; }; + B30683D32895FB8E003E465F /* OmniScale.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = OmniScale.fsh; sourceTree = ""; }; + B30683D42895FB8E003E465F /* AAOmniScaleLegacy.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = AAOmniScaleLegacy.fsh; sourceTree = ""; }; + B30683D52895FB8E003E465F /* HQ2x.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = HQ2x.fsh; sourceTree = ""; }; + B30683D62895FB8E003E465F /* Bilinear.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = Bilinear.fsh; sourceTree = ""; }; + B30683D72895FB8E003E465F /* MasterShader.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = MasterShader.metal; sourceTree = ""; }; + B30683D82895FB8E003E465F /* SmoothBilinear.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = SmoothBilinear.fsh; sourceTree = ""; }; + B30683D92895FB8E003E465F /* MasterShader.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = MasterShader.fsh; sourceTree = ""; }; + B30683DA2895FB8E003E465F /* CHANGES.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGES.md; sourceTree = ""; }; + B30683DC2895FB8E003E465F /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B30683DE2895FB8E003E465F /* HFHexTextRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFHexTextRepresenter.h; sourceTree = ""; }; + B30683DF2895FB8E003E465F /* HFTextRepresenter_KeyBinding.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFTextRepresenter_KeyBinding.m; sourceTree = ""; }; + B30683E02895FB8E003E465F /* HFPasteboardOwner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFPasteboardOwner.h; sourceTree = ""; }; + B30683E12895FB8E003E465F /* HFRepresenterTextView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFRepresenterTextView.h; sourceTree = ""; }; + B30683E22895FB8E003E465F /* HFByteSlice.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFByteSlice.m; sourceTree = ""; }; + B30683E32895FB8E003E465F /* HFByteArray_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFByteArray_Internal.h; sourceTree = ""; }; + B30683E42895FB8E003E465F /* HFHexTextView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFHexTextView.h; sourceTree = ""; }; + B30683E52895FB8E003E465F /* HFRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFRepresenter.m; sourceTree = ""; }; + B30683E62895FB8E003E465F /* HFLayoutRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFLayoutRepresenter.h; sourceTree = ""; }; + B30683E72895FB8E003E465F /* HFTextRepresenter_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFTextRepresenter_Internal.h; sourceTree = ""; }; + B30683E82895FB8E003E465F /* HFTextVisualStyleRun.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFTextVisualStyleRun.m; sourceTree = ""; }; + B30683E92895FB8E003E465F /* HFStringEncodingTextRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFStringEncodingTextRepresenter.m; sourceTree = ""; }; + B30683EA2895FB8E003E465F /* HFGlyphTrie.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFGlyphTrie.m; sourceTree = ""; }; + B30683EB2895FB8E003E465F /* HFAnnotatedTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFAnnotatedTree.h; sourceTree = ""; }; + B30683EC2895FB8E003E465F /* HFRepresenterHexTextView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFRepresenterHexTextView.h; sourceTree = ""; }; + B30683ED2895FB8E003E465F /* HFFullMemoryByteArray.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFFullMemoryByteArray.m; sourceTree = ""; }; + B30683EE2895FB8E003E465F /* HFLineCountingRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFLineCountingRepresenter.m; sourceTree = ""; }; + B30683EF2895FB8E003E465F /* HFVerticalScrollerRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFVerticalScrollerRepresenter.m; sourceTree = ""; }; + B30683F02895FB8E003E465F /* HFTextRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFTextRepresenter.h; sourceTree = ""; }; + B30683F12895FB8E003E465F /* HFByteArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFByteArray.h; sourceTree = ""; }; + B30683F22895FB8E003E465F /* HFRepresenterStringEncodingTextView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFRepresenterStringEncodingTextView.m; sourceTree = ""; }; + B30683F32895FB8E003E465F /* HFFullMemoryByteSlice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFFullMemoryByteSlice.h; sourceTree = ""; }; + B30683F42895FB8E003E465F /* HFBTreeByteArray.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFBTreeByteArray.m; sourceTree = ""; }; + B30683F52895FB8E003E465F /* HFSharedMemoryByteSlice.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFSharedMemoryByteSlice.m; sourceTree = ""; }; + B30683F62895FB8E003E465F /* HFFunctions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFFunctions.m; sourceTree = ""; }; + B30683F72895FB8E003E465F /* HFStatusBarRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFStatusBarRepresenter.m; sourceTree = ""; }; + B30683F82895FB8E003E465F /* HFLineCountingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFLineCountingView.h; sourceTree = ""; }; + B30683F92895FB8E003E465F /* HFBTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFBTree.h; sourceTree = ""; }; + B30683FA2895FB8E003E465F /* HFRepresenterTextViewCallout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFRepresenterTextViewCallout.m; sourceTree = ""; }; + B30683FB2895FB8E003E465F /* HFByteSlice_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFByteSlice_Private.h; sourceTree = ""; }; + B30683FC2895FB8E003E465F /* HFController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFController.h; sourceTree = ""; }; + B30683FD2895FB8E003E465F /* HFRepresenterTextView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFRepresenterTextView.m; sourceTree = ""; }; + B30683FE2895FB8E003E465F /* HFPasteboardOwner.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFPasteboardOwner.m; sourceTree = ""; }; + B30683FF2895FB8E003E465F /* HFHexTextRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFHexTextRepresenter.m; sourceTree = ""; }; + B30684002895FB8E003E465F /* HexFiend_2_Framework_Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HexFiend_2_Framework_Prefix.pch; sourceTree = ""; }; + B30684012895FB8E003E465F /* HFFullMemoryByteArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFFullMemoryByteArray.h; sourceTree = ""; }; + B30684022895FB8E003E465F /* HFRepresenterHexTextView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFRepresenterHexTextView.m; sourceTree = ""; }; + B30684032895FB8E003E465F /* HFAnnotatedTree.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFAnnotatedTree.m; sourceTree = ""; }; + B30684042895FB8E003E465F /* HFGlyphTrie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFGlyphTrie.h; sourceTree = ""; }; + B30684052895FB8E003E465F /* HFStringEncodingTextRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFStringEncodingTextRepresenter.h; sourceTree = ""; }; + B30684062895FB8E003E465F /* HFTextVisualStyleRun.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFTextVisualStyleRun.h; sourceTree = ""; }; + B30684072895FB8E003E465F /* HFPrivilegedHelperConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFPrivilegedHelperConnection.h; sourceTree = ""; }; + B30684082895FB8E003E465F /* HFLayoutRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFLayoutRepresenter.m; sourceTree = ""; }; + B30684092895FB8E003E465F /* HFRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFRepresenter.h; sourceTree = ""; }; + B306840A2895FB8E003E465F /* HFHexTextView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFHexTextView.m; sourceTree = ""; }; + B306840B2895FB8E003E465F /* HFByteSlice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFByteSlice.h; sourceTree = ""; }; + B306840C2895FB8E003E465F /* HexFiend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HexFiend.h; sourceTree = ""; }; + B306840D2895FB8E003E465F /* HFTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFTypes.h; sourceTree = ""; }; + B306840E2895FB8E003E465F /* HFSharedMemoryByteSlice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFSharedMemoryByteSlice.h; sourceTree = ""; }; + B306840F2895FB8E003E465F /* HFBTreeByteArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFBTreeByteArray.h; sourceTree = ""; }; + B30684102895FB8E003E465F /* HFFunctions_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFFunctions_Private.h; sourceTree = ""; }; + B30684112895FB8F003E465F /* HFFullMemoryByteSlice.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFFullMemoryByteSlice.m; sourceTree = ""; }; + B30684122895FB8F003E465F /* HFRepresenterStringEncodingTextView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFRepresenterStringEncodingTextView.h; sourceTree = ""; }; + B30684132895FB8F003E465F /* HFByteArray.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFByteArray.m; sourceTree = ""; }; + B30684142895FB8F003E465F /* HFTextRepresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFTextRepresenter.m; sourceTree = ""; }; + B30684152895FB8F003E465F /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; + B30684162895FB8F003E465F /* HFRepresenterTextView_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFRepresenterTextView_Internal.h; sourceTree = ""; }; + B30684172895FB8F003E465F /* HFVerticalScrollerRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFVerticalScrollerRepresenter.h; sourceTree = ""; }; + B30684182895FB8F003E465F /* HFLineCountingRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFLineCountingRepresenter.h; sourceTree = ""; }; + B30684192895FB8F003E465F /* HFRepresenter_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFRepresenter_Internal.h; sourceTree = ""; }; + B306841A2895FB8F003E465F /* HFController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFController.m; sourceTree = ""; }; + B306841B2895FB8F003E465F /* HFRepresenterTextViewCallout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFRepresenterTextViewCallout.h; sourceTree = ""; }; + B306841C2895FB8F003E465F /* HFBTree.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFBTree.m; sourceTree = ""; }; + B306841D2895FB8F003E465F /* HFLineCountingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HFLineCountingView.m; sourceTree = ""; }; + B306841E2895FB8F003E465F /* HFStatusBarRepresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFStatusBarRepresenter.h; sourceTree = ""; }; + B306841F2895FB8F003E465F /* HFFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HFFunctions.h; sourceTree = ""; }; + B30684212895FB8F003E465F /* utf8_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utf8_compat.c; sourceTree = ""; }; + B30684222895FB8F003E465F /* inttypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inttypes.h; sourceTree = ""; }; + B30684232895FB8F003E465F /* resources.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = resources.rc; sourceTree = ""; }; + B30684242895FB8F003E465F /* unistd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unistd.h; sourceTree = ""; }; + B30684252895FB8F003E465F /* math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = math.h; sourceTree = ""; }; + B30684262895FB8F003E465F /* stdio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdio.h; sourceTree = ""; }; + B30684272895FB8F003E465F /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B30684282895FB8F003E465F /* string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string.h; sourceTree = ""; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libSameDuck-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSameDuck-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447E96218B809200557ACE /* PVSameDuckCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVSameDuckCore+Controls.h"; sourceTree = ""; }; + B3447E97218B809300557ACE /* PVSameDuckCore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVSameDuckCore+Controls.mm"; sourceTree = ""; }; + B3447EA0218B881000557ACE /* PVSameDuck.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVSameDuck.mm; sourceTree = ""; }; + B3447EA9218BC59D00557ACE /* PVSameDuckCore+Saves.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVSameDuckCore+Saves.h"; sourceTree = ""; }; + B3447EAA218BC59D00557ACE /* PVSameDuckCore+Saves.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVSameDuckCore+Saves.m"; sourceTree = ""; }; + B3447EAD218BC5C500557ACE /* PVSameDuckCore+Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVSameDuckCore+Video.h"; sourceTree = ""; }; + B3447EAE218BC5C500557ACE /* PVSameDuckCore+Video.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVSameDuckCore+Video.m"; sourceTree = ""; }; + B3447EB1218BC69700557ACE /* PVSameDuckCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVSameDuckCore+Audio.h"; sourceTree = ""; }; + B3447EB2218BC69700557ACE /* PVSameDuckCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVSameDuckCore+Audio.m"; sourceTree = ""; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B3447EE6218BEDD200557ACE /* PVSameDuck.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSameDuck.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3447F91218BEE3F00557ACE /* libSameDuck.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSameDuck.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B380C2682894EB37007B76FD /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; + B39768F72859E18B00558958 /* libSameDuck-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSameDuck-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVSameDuck.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSameDuck.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621320783162009950E4 /* PVSameDuck.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVSameDuck.h; sourceTree = ""; }; + B3C7621420783162009950E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C76223207833DE009950E4 /* PVSameDuckCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVSameDuckCore.h; sourceTree = ""; }; + B3C76224207833DE009950E4 /* PVSameDuckCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVSameDuckCore.mm; sourceTree = ""; }; + B3C7622720783510009950E4 /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447ECA218BEDD200557ACE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, + B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, + B3B104AF218F26F400210C39 /* libSameDuck.a in Frameworks */, + B39768FB2859E23A00558958 /* libSameDuck-libretro.a in Frameworks */, + B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, + B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, + B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, + B3A41BF0286E76490054E9A5 /* PVLibRetro.framework in Frameworks */, + B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, + B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, + B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447F8C218BEE3F00557ACE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B39768F12859E18B00558958 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B380C2692894EB37007B76FD /* OpenGL.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libSameDuck.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libSameDuck-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B30683032895FB8C003E465F /* SameBoy */ = { + isa = PBXGroup; + children = ( + B30683C82895FB8E003E465F /* .gitattributes */, + B30683932895FB8E003E465F /* .gitignore */, + B30683322895FB8D003E465F /* LICENSE */, + B306833B2895FB8D003E465F /* Makefile */, + B30683042895FB8C003E465F /* build-faq.md */, + B30683DA2895FB8E003E465F /* CHANGES.md */, + B30683A42895FB8E003E465F /* CONTRIBUTING.md */, + B30683412895FB8D003E465F /* README.md */, + B306834B2895FB8D003E465F /* version.mk */, + B30683BC2895FB8E003E465F /* .github */, + B306834C2895FB8D003E465F /* Cocoa */, + B30683072895FB8C003E465F /* Core */, + B30683DD2895FB8E003E465F /* HexFiend */, + B30683A52895FB8E003E465F /* JoyKit */, + B30683422895FB8D003E465F /* libretro */, + B30683052895FB8C003E465F /* Misc */, + B306833C2895FB8D003E465F /* OpenDialog */, + B30683332895FB8D003E465F /* QuickLook */, + B30683942895FB8E003E465F /* SDL */, + B30683C92895FB8E003E465F /* Shaders */, + B30683DB2895FB8E003E465F /* Tester */, + B30684202895FB8F003E465F /* Windows */, + ); + path = SameBoy; + sourceTree = ""; + }; + B30683052895FB8C003E465F /* Misc */ = { + isa = PBXGroup; + children = ( + B30683062895FB8C003E465F /* registers.sym */, + ); + path = Misc; + sourceTree = ""; + }; + B30683072895FB8C003E465F /* Core */ = { + isa = PBXGroup; + children = ( + B306830E2895FB8D003E465F /* apu.c */, + B30683252895FB8D003E465F /* camera.c */, + B306830B2895FB8C003E465F /* cheats.c */, + B30683132895FB8D003E465F /* debugger.c */, + B306830A2895FB8C003E465F /* display.c */, + B306830F2895FB8D003E465F /* gb.c */, + B30683122895FB8D003E465F /* joypad.c */, + B306830C2895FB8C003E465F /* memory.c */, + B306831B2895FB8D003E465F /* printer.c */, + B30683172895FB8D003E465F /* random.c */, + B30683232895FB8D003E465F /* rewind.c */, + B30683162895FB8D003E465F /* rumble.c */, + B306831E2895FB8D003E465F /* save_state.c */, + B306831C2895FB8D003E465F /* sm83_cpu.c */, + B30683212895FB8D003E465F /* sm83_disassembler.c */, + B30683182895FB8D003E465F /* symbol_hash.c */, + B30683242895FB8D003E465F /* timing.c */, + B306832D2895FB8D003E465F /* workboy.c */, + B306831F2895FB8D003E465F /* apu.h */, + B30683112895FB8D003E465F /* camera.h */, + B30683192895FB8D003E465F /* cheats.h */, + B30683222895FB8D003E465F /* debugger.h */, + B306831A2895FB8D003E465F /* display.h */, + B30683302895FB8D003E465F /* gb_struct_def.h */, + B306831D2895FB8D003E465F /* gb.h */, + B30683262895FB8D003E465F /* joypad.h */, + B30683202895FB8D003E465F /* memory.h */, + B30683092895FB8C003E465F /* printer.h */, + B306832F2895FB8D003E465F /* random.h */, + B30683152895FB8D003E465F /* rewind.h */, + B30683312895FB8D003E465F /* rumble.h */, + B306830D2895FB8D003E465F /* save_state.h */, + B30683082895FB8C003E465F /* sm83_cpu.h */, + B306832E2895FB8D003E465F /* symbol_hash.h */, + B30683142895FB8D003E465F /* timing.h */, + B30683102895FB8D003E465F /* workboy.h */, + B30683272895FB8D003E465F /* graphics */, + ); + path = Core; + sourceTree = ""; + }; + B30683272895FB8D003E465F /* graphics */ = { + isa = PBXGroup; + children = ( + B30683282895FB8D003E465F /* sgb_animation_logo.inc */, + B30683292895FB8D003E465F /* agb_border.inc */, + B306832A2895FB8D003E465F /* sgb_border.inc */, + B306832B2895FB8D003E465F /* dmg_border.inc */, + B306832C2895FB8D003E465F /* cgb_border.inc */, + ); + path = graphics; + sourceTree = ""; + }; + B30683332895FB8D003E465F /* QuickLook */ = { + isa = PBXGroup; + children = ( + B30683342895FB8D003E465F /* CartridgeTemplate.png */, + B30683352895FB8D003E465F /* get_image_for_rom.h */, + B30683362895FB8D003E465F /* exports.sym */, + B30683372895FB8D003E465F /* generator.m */, + B30683382895FB8D003E465F /* main.c */, + B30683392895FB8D003E465F /* get_image_for_rom.c */, + B306833A2895FB8D003E465F /* Info.plist */, + ); + path = QuickLook; + sourceTree = ""; + }; + B306833C2895FB8D003E465F /* OpenDialog */ = { + isa = PBXGroup; + children = ( + B306833D2895FB8D003E465F /* gtk.c */, + B306833E2895FB8D003E465F /* open_dialog.h */, + B306833F2895FB8D003E465F /* windows.c */, + B30683402895FB8D003E465F /* cocoa.m */, + ); + path = OpenDialog; + sourceTree = ""; + }; + B30683422895FB8D003E465F /* libretro */ = { + isa = PBXGroup; + children = ( + B30683432895FB8D003E465F /* libretro.c */, + B30683442895FB8D003E465F /* Makefile */, + B30683452895FB8D003E465F /* Makefile.common */, + B30683462895FB8D003E465F /* libretro.h */, + B30683472895FB8D003E465F /* link.T */, + B30683482895FB8D003E465F /* jni */, + ); + path = libretro; + sourceTree = ""; + }; + B30683482895FB8D003E465F /* jni */ = { + isa = PBXGroup; + children = ( + B30683492895FB8D003E465F /* Android.mk */, + B306834A2895FB8D003E465F /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B306834C2895FB8D003E465F /* Cocoa */ = { + isa = PBXGroup; + children = ( + B306834D2895FB8D003E465F /* GBCheatTextFieldCell.h */, + B306834E2895FB8D003E465F /* CPU.png */, + B306834F2895FB8D003E465F /* GBViewGL.h */, + B30683502895FB8D003E465F /* GBOptionalVisualEffectView.h */, + B30683512895FB8D003E465F /* GBView.h */, + B30683522895FB8D003E465F /* Display@2x.png */, + B30683532895FB8D003E465F /* GBAudioClient.m */, + B30683542895FB8D003E465F /* GBWarningPopover.m */, + B30683552895FB8D003E465F /* GBCompleteByteSlice.m */, + B30683562895FB8D003E465F /* AppDelegate.h */, + B30683572895FB8D003E465F /* NSString+StringForKey.m */, + B30683582895FB8D003E465F /* Speaker@2x.png */, + B30683592895FB8D003E465F /* GBButtons.h */, + B306835A2895FB8D003E465F /* Document.m */, + B306835B2895FB8D003E465F /* GBMemoryByteArray.h */, + B306835C2895FB8D003E465F /* GBBorderView.h */, + B306835D2895FB8D003E465F /* Cartridge.icns */, + B306835E2895FB8D003E465F /* License.html */, + B306835F2895FB8D003E465F /* GBOpenGLView.m */, + B30683602895FB8D003E465F /* GBColorCell.h */, + B30683612895FB8D003E465F /* Joypad.png */, + B30683622895FB8D003E465F /* GBPreferencesWindow.h */, + B30683632895FB8D003E465F /* GBSplitView.m */, + B30683642895FB8D003E465F /* Speaker~dark@2x.png */, + B30683652895FB8D003E465F /* BigSurToolbar.h */, + B30683662895FB8D003E465F /* GBTerminalTextFieldCell.m */, + B30683672895FB8D003E465F /* GBViewMetal.m */, + B30683682895FB8D003E465F /* GBImageCell.m */, + B30683692895FB8D003E465F /* GBImageView.m */, + B306836A2895FB8D003E465F /* GBCheatWindowController.m */, + B306836B2895FB8D003E465F /* AppIcon.icns */, + B306836C2895FB8D003E465F /* CPU@2x.png */, + B306836D2895FB8D003E465F /* GBGLShader.h */, + B306836E2895FB8D003E465F /* Document.xib */, + B306836F2895FB8D003E465F /* NSObject+MavericksCompat.m */, + B30683702895FB8D003E465F /* GBCompleteByteSlice.h */, + B30683712895FB8D003E465F /* GBWarningPopover.h */, + B30683722895FB8D003E465F /* GBAudioClient.h */, + B30683732895FB8D003E465F /* GBView.m */, + B30683742895FB8D003E465F /* GBViewGL.m */, + B30683752895FB8D003E465F /* GBOptionalVisualEffectView.m */, + B30683762895FB8D003E465F /* KeyboardShortcutPrivateAPIs.h */, + B30683772895FB8D003E465F /* Preferences.xib */, + B30683782895FB8D003E465F /* GBCheatTextFieldCell.m */, + B30683792895FB8D003E465F /* NSImageNamedDarkSupport.m */, + B306837A2895FB8D003E465F /* main.m */, + B306837B2895FB8D003E465F /* GBBorderView.m */, + B306837C2895FB8D003E465F /* Speaker~dark.png */, + B306837D2895FB8D003E465F /* GBMemoryByteArray.m */, + B306837E2895FB8D003E465F /* Display.png */, + B306837F2895FB8D003E465F /* GBButtons.m */, + B30683802895FB8D003E465F /* Document.h */, + B30683812895FB8D003E465F /* PopoverView.xib */, + B30683822895FB8D003E465F /* MainMenu.xib */, + B30683832895FB8D003E465F /* NSString+StringForKey.h */, + B30683842895FB8D003E465F /* AppDelegate.m */, + B30683852895FB8D003E465F /* GBImageCell.h */, + B30683862895FB8D003E465F /* GBViewMetal.h */, + B30683872895FB8D003E465F /* GBTerminalTextFieldCell.h */, + B30683882895FB8D003E465F /* GBSplitView.h */, + B30683892895FB8D003E465F /* GBPreferencesWindow.m */, + B306838A2895FB8D003E465F /* GBOpenGLView.h */, + B306838B2895FB8D003E465F /* GBColorCell.m */, + B306838C2895FB8D003E465F /* Speaker.png */, + B306838D2895FB8D003E465F /* GBGLShader.m */, + B306838E2895FB8D003E465F /* Info.plist */, + B306838F2895FB8E003E465F /* Joypad@2x.png */, + B30683902895FB8E003E465F /* GBCheatWindowController.h */, + B30683912895FB8E003E465F /* PkgInfo */, + B30683922895FB8E003E465F /* GBImageView.h */, + ); + path = Cocoa; + sourceTree = ""; + }; + B30683942895FB8E003E465F /* SDL */ = { + isa = PBXGroup; + children = ( + B30683952895FB8E003E465F /* utils.h */, + B30683962895FB8E003E465F /* gui.c */, + B30683972895FB8E003E465F /* shader.h */, + B30683982895FB8E003E465F /* opengl_compat.h */, + B30683992895FB8E003E465F /* font.c */, + B306839A2895FB8E003E465F /* gui.h */, + B306839B2895FB8E003E465F /* audio */, + B306839E2895FB8E003E465F /* utils.c */, + B306839F2895FB8E003E465F /* main.c */, + B30683A02895FB8E003E465F /* shader.c */, + B30683A12895FB8E003E465F /* font.h */, + B30683A22895FB8E003E465F /* background.bmp */, + B30683A32895FB8E003E465F /* opengl_compat.c */, + ); + path = SDL; + sourceTree = ""; + }; + B306839B2895FB8E003E465F /* audio */ = { + isa = PBXGroup; + children = ( + B306839C2895FB8E003E465F /* audio.h */, + B306839D2895FB8E003E465F /* sdl.c */, + ); + path = audio; + sourceTree = ""; + }; + B30683A52895FB8E003E465F /* JoyKit */ = { + isa = PBXGroup; + children = ( + B30683A62895FB8E003E465F /* JOYAxis.m */, + B30683A72895FB8E003E465F /* JOYHat.m */, + B30683A82895FB8E003E465F /* JoyKit.h */, + B30683A92895FB8E003E465F /* JOYButton.h */, + B30683AA2895FB8E003E465F /* JOYController.m */, + B30683AB2895FB8E003E465F /* JOYEmulatedButton.m */, + B30683AC2895FB8E003E465F /* JOYFullReportElement.m */, + B30683AD2895FB8E003E465F /* JOYSubElement.m */, + B30683AE2895FB8E003E465F /* JOYMultiplayerController.m */, + B30683AF2895FB8E003E465F /* JOYElement.m */, + B30683B02895FB8E003E465F /* JOYAxes2D.m */, + B30683B12895FB8E003E465F /* JOYController.h */, + B30683B22895FB8E003E465F /* JOYButton.m */, + B30683B32895FB8E003E465F /* JOYHat.h */, + B30683B42895FB8E003E465F /* JOYAxis.h */, + B30683B52895FB8E003E465F /* ControllerConfiguration.inc */, + B30683B62895FB8E003E465F /* JOYEmulatedButton.h */, + B30683B72895FB8E003E465F /* JOYElement.h */, + B30683B82895FB8E003E465F /* JOYMultiplayerController.h */, + B30683B92895FB8E003E465F /* JOYSubElement.h */, + B30683BA2895FB8E003E465F /* JOYFullReportElement.h */, + B30683BB2895FB8E003E465F /* JOYAxes2D.h */, + ); + path = JoyKit; + sourceTree = ""; + }; + B30683BC2895FB8E003E465F /* .github */ = { + isa = PBXGroup; + children = ( + B30683BD2895FB8E003E465F /* workflows */, + B30683BF2895FB8E003E465F /* actions */, + ); + path = .github; + sourceTree = ""; + }; + B30683BD2895FB8E003E465F /* workflows */ = { + isa = PBXGroup; + children = ( + B30683BE2895FB8E003E465F /* sanity.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B30683BF2895FB8E003E465F /* actions */ = { + isa = PBXGroup; + children = ( + B30683C02895FB8E003E465F /* cgb_sound.gb */, + B30683C12895FB8E003E465F /* LICENSE */, + B30683C22895FB8E003E465F /* dmg_sound-2.gb */, + B30683C32895FB8E003E465F /* install_deps.sh */, + B30683C42895FB8E003E465F /* dmg-acid2.gb */, + B30683C52895FB8E003E465F /* oam_bug-2.gb */, + B30683C62895FB8E003E465F /* sanity_tests.sh */, + B30683C72895FB8E003E465F /* cgb-acid2.gbc */, + ); + path = actions; + sourceTree = ""; + }; + B30683C92895FB8E003E465F /* Shaders */ = { + isa = PBXGroup; + children = ( + B30683CA2895FB8E003E465F /* MonoLCD.fsh */, + B30683CB2895FB8E003E465F /* Scale4x.fsh */, + B30683CC2895FB8E003E465F /* OmniScaleLegacy.fsh */, + B30683CD2895FB8E003E465F /* AAScale4x.fsh */, + B30683CE2895FB8E003E465F /* NearestNeighbor.fsh */, + B30683CF2895FB8E003E465F /* Scale2x.fsh */, + B30683D02895FB8E003E465F /* LCD.fsh */, + B30683D12895FB8E003E465F /* CRT.fsh */, + B30683D22895FB8E003E465F /* AAScale2x.fsh */, + B30683D32895FB8E003E465F /* OmniScale.fsh */, + B30683D42895FB8E003E465F /* AAOmniScaleLegacy.fsh */, + B30683D52895FB8E003E465F /* HQ2x.fsh */, + B30683D62895FB8E003E465F /* Bilinear.fsh */, + B30683D72895FB8E003E465F /* MasterShader.metal */, + B30683D82895FB8E003E465F /* SmoothBilinear.fsh */, + B30683D92895FB8E003E465F /* MasterShader.fsh */, + ); + path = Shaders; + sourceTree = ""; + }; + B30683DB2895FB8E003E465F /* Tester */ = { + isa = PBXGroup; + children = ( + B30683DC2895FB8E003E465F /* main.c */, + ); + path = Tester; + sourceTree = ""; + }; + B30683DD2895FB8E003E465F /* HexFiend */ = { + isa = PBXGroup; + children = ( + B30683DE2895FB8E003E465F /* HFHexTextRepresenter.h */, + B30683DF2895FB8E003E465F /* HFTextRepresenter_KeyBinding.m */, + B30683E02895FB8E003E465F /* HFPasteboardOwner.h */, + B30683E12895FB8E003E465F /* HFRepresenterTextView.h */, + B30683E22895FB8E003E465F /* HFByteSlice.m */, + B30683E32895FB8E003E465F /* HFByteArray_Internal.h */, + B30683E42895FB8E003E465F /* HFHexTextView.h */, + B30683E52895FB8E003E465F /* HFRepresenter.m */, + B30683E62895FB8E003E465F /* HFLayoutRepresenter.h */, + B30683E72895FB8E003E465F /* HFTextRepresenter_Internal.h */, + B30683E82895FB8E003E465F /* HFTextVisualStyleRun.m */, + B30683E92895FB8E003E465F /* HFStringEncodingTextRepresenter.m */, + B30683EA2895FB8E003E465F /* HFGlyphTrie.m */, + B30683EB2895FB8E003E465F /* HFAnnotatedTree.h */, + B30683EC2895FB8E003E465F /* HFRepresenterHexTextView.h */, + B30683ED2895FB8E003E465F /* HFFullMemoryByteArray.m */, + B30683EE2895FB8E003E465F /* HFLineCountingRepresenter.m */, + B30683EF2895FB8E003E465F /* HFVerticalScrollerRepresenter.m */, + B30683F02895FB8E003E465F /* HFTextRepresenter.h */, + B30683F12895FB8E003E465F /* HFByteArray.h */, + B30683F22895FB8E003E465F /* HFRepresenterStringEncodingTextView.m */, + B30683F32895FB8E003E465F /* HFFullMemoryByteSlice.h */, + B30683F42895FB8E003E465F /* HFBTreeByteArray.m */, + B30683F52895FB8E003E465F /* HFSharedMemoryByteSlice.m */, + B30683F62895FB8E003E465F /* HFFunctions.m */, + B30683F72895FB8E003E465F /* HFStatusBarRepresenter.m */, + B30683F82895FB8E003E465F /* HFLineCountingView.h */, + B30683F92895FB8E003E465F /* HFBTree.h */, + B30683FA2895FB8E003E465F /* HFRepresenterTextViewCallout.m */, + B30683FB2895FB8E003E465F /* HFByteSlice_Private.h */, + B30683FC2895FB8E003E465F /* HFController.h */, + B30683FD2895FB8E003E465F /* HFRepresenterTextView.m */, + B30683FE2895FB8E003E465F /* HFPasteboardOwner.m */, + B30683FF2895FB8E003E465F /* HFHexTextRepresenter.m */, + B30684002895FB8E003E465F /* HexFiend_2_Framework_Prefix.pch */, + B30684012895FB8E003E465F /* HFFullMemoryByteArray.h */, + B30684022895FB8E003E465F /* HFRepresenterHexTextView.m */, + B30684032895FB8E003E465F /* HFAnnotatedTree.m */, + B30684042895FB8E003E465F /* HFGlyphTrie.h */, + B30684052895FB8E003E465F /* HFStringEncodingTextRepresenter.h */, + B30684062895FB8E003E465F /* HFTextVisualStyleRun.h */, + B30684072895FB8E003E465F /* HFPrivilegedHelperConnection.h */, + B30684082895FB8E003E465F /* HFLayoutRepresenter.m */, + B30684092895FB8E003E465F /* HFRepresenter.h */, + B306840A2895FB8E003E465F /* HFHexTextView.m */, + B306840B2895FB8E003E465F /* HFByteSlice.h */, + B306840C2895FB8E003E465F /* HexFiend.h */, + B306840D2895FB8E003E465F /* HFTypes.h */, + B306840E2895FB8E003E465F /* HFSharedMemoryByteSlice.h */, + B306840F2895FB8E003E465F /* HFBTreeByteArray.h */, + B30684102895FB8E003E465F /* HFFunctions_Private.h */, + B30684112895FB8F003E465F /* HFFullMemoryByteSlice.m */, + B30684122895FB8F003E465F /* HFRepresenterStringEncodingTextView.h */, + B30684132895FB8F003E465F /* HFByteArray.m */, + B30684142895FB8F003E465F /* HFTextRepresenter.m */, + B30684152895FB8F003E465F /* License.txt */, + B30684162895FB8F003E465F /* HFRepresenterTextView_Internal.h */, + B30684172895FB8F003E465F /* HFVerticalScrollerRepresenter.h */, + B30684182895FB8F003E465F /* HFLineCountingRepresenter.h */, + B30684192895FB8F003E465F /* HFRepresenter_Internal.h */, + B306841A2895FB8F003E465F /* HFController.m */, + B306841B2895FB8F003E465F /* HFRepresenterTextViewCallout.h */, + B306841C2895FB8F003E465F /* HFBTree.m */, + B306841D2895FB8F003E465F /* HFLineCountingView.m */, + B306841E2895FB8F003E465F /* HFStatusBarRepresenter.h */, + B306841F2895FB8F003E465F /* HFFunctions.h */, + ); + path = HexFiend; + sourceTree = ""; + }; + B30684202895FB8F003E465F /* Windows */ = { + isa = PBXGroup; + children = ( + B30684212895FB8F003E465F /* utf8_compat.c */, + B30684222895FB8F003E465F /* inttypes.h */, + B30684232895FB8F003E465F /* resources.rc */, + B30684242895FB8F003E465F /* unistd.h */, + B30684252895FB8F003E465F /* math.h */, + B30684262895FB8F003E465F /* stdio.h */, + B30684272895FB8F003E465F /* stdint.h */, + B30684282895FB8F003E465F /* string.h */, + ); + path = Windows; + sourceTree = ""; + }; + B3447EB5218BCE2000557ACE /* Core */ = { + isa = PBXGroup; + children = ( + B3C76223207833DE009950E4 /* PVSameDuckCore.h */, + B3C76224207833DE009950E4 /* PVSameDuckCore.mm */, + B3447EB1218BC69700557ACE /* PVSameDuckCore+Audio.h */, + B3447EB2218BC69700557ACE /* PVSameDuckCore+Audio.m */, + B3447EAD218BC5C500557ACE /* PVSameDuckCore+Video.h */, + B3447EAE218BC5C500557ACE /* PVSameDuckCore+Video.m */, + B3447EA9218BC59D00557ACE /* PVSameDuckCore+Saves.h */, + B3447EAA218BC59D00557ACE /* PVSameDuckCore+Saves.m */, + B3447E96218B809200557ACE /* PVSameDuckCore+Controls.h */, + B3447E97218B809300557ACE /* PVSameDuckCore+Controls.mm */, + ); + path = Core; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B30683032895FB8C003E465F /* SameBoy */, + B3C762202078327B009950E4 /* PVSameDuckCore */, + B3C7621220783162009950E4 /* PVSameDuck */, + B3C7621120783162009950E4 /* Products */, + B3C7621B20783242009950E4 /* Frameworks */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVSameDuck.framework */, + B30178D3207C901D0051B93D /* libSameDuck.a */, + B3447EE6218BEDD200557ACE /* PVSameDuck.framework */, + B3447F91218BEE3F00557ACE /* libSameDuck.a */, + B3344BC32859E088006E6B3A /* libSameDuck-libretro.a */, + B39768F72859E18B00558958 /* libSameDuck-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621220783162009950E4 /* PVSameDuck */ = { + isa = PBXGroup; + children = ( + B3C7622720783510009950E4 /* Core.plist */, + B3C7621320783162009950E4 /* PVSameDuck.h */, + B3C7621420783162009950E4 /* Info.plist */, + ); + path = PVSameDuck; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B380C2682894EB37007B76FD /* OpenGL.framework */, + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3C762202078327B009950E4 /* PVSameDuckCore */ = { + isa = PBXGroup; + children = ( + B3447EB5218BCE2000557ACE /* Core */, + B3447EA0218B881000557ACE /* PVSameDuck.mm */, + ); + path = PVSameDuckCore; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3447ED5218BEDD200557ACE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3423262286EBB4B0033EFA5 /* PVSameDuckCore.h in Headers */, + B3135BA226E4CC650047F338 /* PVSameDuck.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3135B9C26E4CC290047F338 /* PVSameDuckCore.h in Headers */, + B3135BA126E4CC620047F338 /* PVSameDuck.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* SameDuck-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "SameDuck-iOS" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SameDuck-iOS"; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libSameDuck.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* SameDuck-libretro-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "SameDuck-libretro-iOS" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SameDuck-libretro-iOS"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libSameDuck-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3447EC0218BEDD200557ACE /* PVSameDuck-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVSameDuck-tvOS" */; + buildPhases = ( + B3447EC1218BEDD200557ACE /* Sources */, + B3447ECA218BEDD200557ACE /* Frameworks */, + B3447ED5218BEDD200557ACE /* Headers */, + B3447EDF218BEDD200557ACE /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FD2859E23A00558958 /* PBXTargetDependency */, + ); + name = "PVSameDuck-tvOS"; + productName = PVReicast; + productReference = B3447EE6218BEDD200557ACE /* PVSameDuck.framework */; + productType = "com.apple.product-type.framework"; + }; + B3447EE8218BEE3F00557ACE /* SameDuck-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "SameDuck-tvOS" */; + buildPhases = ( + B3447EE9218BEE3F00557ACE /* Sources */, + B3447F8C218BEE3F00557ACE /* Frameworks */, + B3447F8D218BEE3F00557ACE /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SameDuck-tvOS"; + productName = reicast; + productReference = B3447F91218BEE3F00557ACE /* libSameDuck.a */; + productType = "com.apple.product-type.library.static"; + }; + B39768ED2859E18B00558958 /* SameDuck-libretro-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B39768F32859E18B00558958 /* Build configuration list for PBXNativeTarget "SameDuck-libretro-tvOS" */; + buildPhases = ( + B39768EE2859E18B00558958 /* Sources */, + B39768F12859E18B00558958 /* Frameworks */, + B39768F22859E18B00558958 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SameDuck-libretro-tvOS"; + productName = reicast; + productReference = B39768F72859E18B00558958 /* libSameDuck-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVSameDuck-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVSameDuck-iOS" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = "PVSameDuck-iOS"; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVSameDuck.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVSameDuck" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVSameDuck-iOS */, + B3447EC0218BEDD200557ACE /* PVSameDuck-tvOS */, + B3344B522859E088006E6B3A /* SameDuck-libretro-iOS */, + B39768ED2859E18B00558958 /* SameDuck-libretro-tvOS */, + B30178D2207C901D0051B93D /* SameDuck-iOS */, + B3447EE8218BEE3F00557ACE /* SameDuck-tvOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3447EDF218BEDD200557ACE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3447EE2218BEDD200557ACE /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33350262078619C0036A448 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B367032A28962FEA00F75595 /* rewind.c in Sources */, + B367032C28962FEA00F75595 /* gb.c in Sources */, + B367032D28962FEA00F75595 /* printer.c in Sources */, + B367032528962FEA00F75595 /* display.c in Sources */, + B367033228962FEA00F75595 /* rumble.c in Sources */, + B367032B28962FEA00F75595 /* sm83_disassembler.c in Sources */, + B367032428962FEA00F75595 /* sm83_cpu.c in Sources */, + B367032628962FEA00F75595 /* workboy.c in Sources */, + B367032728962FEA00F75595 /* cheats.c in Sources */, + B367032828962FEA00F75595 /* joypad.c in Sources */, + B367032E28962FEA00F75595 /* camera.c in Sources */, + B367032F28962FEA00F75595 /* debugger.c in Sources */, + B367033328962FEA00F75595 /* apu.c in Sources */, + B367032228962FEA00F75595 /* memory.c in Sources */, + B367033128962FEA00F75595 /* save_state.c in Sources */, + B367032328962FEA00F75595 /* timing.c in Sources */, + B367033028962FEA00F75595 /* random.c in Sources */, + B367032928962FEA00F75595 /* symbol_hash.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B367034628962FFA00F75595 /* libretro.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447EC1218BEDD200557ACE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3135BA326E4CD080047F338 /* PVSameDuckCore.mm in Sources */, + B3C8A6602877D6510037A946 /* PVSameDuckCore+Video.m in Sources */, + B3C8A6622877D6B40037A946 /* PVSameDuckCore+Audio.m in Sources */, + B3C8A65E2877D62F0037A946 /* PVSameDuckCore+Controls.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447EE9218BEE3F00557ACE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B367033C28962FEA00F75595 /* rewind.c in Sources */, + B367033E28962FEA00F75595 /* gb.c in Sources */, + B367033F28962FEA00F75595 /* printer.c in Sources */, + B367033728962FEA00F75595 /* display.c in Sources */, + B367034428962FEA00F75595 /* rumble.c in Sources */, + B367033D28962FEA00F75595 /* sm83_disassembler.c in Sources */, + B367033628962FEA00F75595 /* sm83_cpu.c in Sources */, + B367033828962FEA00F75595 /* workboy.c in Sources */, + B367033928962FEA00F75595 /* cheats.c in Sources */, + B367033A28962FEA00F75595 /* joypad.c in Sources */, + B367034028962FEA00F75595 /* camera.c in Sources */, + B367034128962FEA00F75595 /* debugger.c in Sources */, + B367034528962FEA00F75595 /* apu.c in Sources */, + B367033428962FEA00F75595 /* memory.c in Sources */, + B367034328962FEA00F75595 /* save_state.c in Sources */, + B367033528962FEA00F75595 /* timing.c in Sources */, + B367034228962FEA00F75595 /* random.c in Sources */, + B367033B28962FEA00F75595 /* symbol_hash.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B39768EE2859E18B00558958 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B367034728962FFA00F75595 /* libretro.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3135B9B26E4CAD40047F338 /* PVSameDuckCore.mm in Sources */, + B3C8A65F2877D6350037A946 /* PVSameDuckCore+Controls.mm in Sources */, + B3C8A6612877D6B30037A946 /* PVSameDuckCore+Audio.m in Sources */, + B3EBB2032872B65700EAEB37 /* PVSameDuckCore+Video.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* SameDuck-libretro-iOS */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; + B39768FD2859E23A00558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B39768ED2859E18B00558958 /* SameDuck-libretro-tvOS */; + targetProxy = B39768FC2859E23A00558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = SameDuck; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = SameDuck; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-SameDuck/libretro-common/include\"", + "\"$(SRCROOT)/SameBoy\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVSameDuck/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSameDuck"; + PRODUCT_NAME = PVSameDuck; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5032191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVSameDuck/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSameDuck"; + PRODUCT_NAME = PVSameDuck; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = SameDuck; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5052191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = SameDuck; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "SameDuck-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "SameDuck-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "SameDuck-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3447EE4218BEDD200557ACE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVSameDuck/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSameDuck"; + PRODUCT_NAME = PVSameDuck; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B3447EE5218BEDD200557ACE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVSameDuck/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSameDuck"; + PRODUCT_NAME = PVSameDuck; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Release; + }; + B3447F8F218BEE3F00557ACE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = SameDuck; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B3447F90218BEE3F00557ACE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = SameDuck; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Release; + }; + B39768F42859E18B00558958 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "SameDuck-libretro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B39768F52859E18B00558958 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "SameDuck-libretro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Release; + }; + B39768F62859E18B00558958 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "SameDuck-libretro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-SameDuck/libretro-common/include\"", + "\"$(SRCROOT)/SameBoy\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-SameDuck/libretro-common/include\"", + "\"$(SRCROOT)/SameBoy\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVSameDuck/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSameDuck"; + PRODUCT_NAME = PVSameDuck; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVSameDuck/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSameDuck"; + PRODUCT_NAME = PVSameDuck; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "SameDuck-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "SameDuck-libretro-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVSameDuck-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3447EE4218BEDD200557ACE /* Debug */, + B3447EE5218BEDD200557ACE /* Release */, + B324C5032191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "SameDuck-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3447F8F218BEE3F00557ACE /* Debug */, + B3447F90218BEE3F00557ACE /* Release */, + B324C5052191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B39768F32859E18B00558958 /* Build configuration list for PBXNativeTarget "SameDuck-libretro-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B39768F42859E18B00558958 /* Debug */, + B39768F52859E18B00558958 /* Release */, + B39768F62859E18B00558958 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVSameDuck" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVSameDuck-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/SameDuck/PVSameDuck.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/SameDuck/PVSameDuck.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/SameDuck/PVSameDuck.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/SameDuck/PVSameDuck.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/SameDuck/PVSameDuck.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/SameDuck/PVSameDuck.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/SameDuck/PVSameDuck.xcodeproj/xcshareddata/xcschemes/PVSameDuck.xcscheme b/Cores/SameDuck/PVSameDuck.xcodeproj/xcshareddata/xcschemes/PVSameDuck.xcscheme new file mode 100644 index 0000000000..145c518031 --- /dev/null +++ b/Cores/SameDuck/PVSameDuck.xcodeproj/xcshareddata/xcschemes/PVSameDuck.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/SameDuck/PVSameDuck/Core.plist b/Cores/SameDuck/PVSameDuck/Core.plist new file mode 100644 index 0000000000..13ee4e8bb6 --- /dev/null +++ b/Cores/SameDuck/PVSameDuck/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.SameDuck + PVPrincipleClass + PVSameDuckCore + PVSupportedSystems + + com.provenance.megaduck + + PVProjectName + SameDuck + PVProjectURL + https://github.com/libretro/libretro-SameDuck + PVProjectVersion + a4ae282 + + diff --git a/Cores/SameDuck/PVSameDuck/Info.plist b/Cores/SameDuck/PVSameDuck/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/SameDuck/PVSameDuck/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/SameDuck/PVSameDuck/PVSameDuck.h b/Cores/SameDuck/PVSameDuck/PVSameDuck.h new file mode 100644 index 0000000000..e60e7c7057 --- /dev/null +++ b/Cores/SameDuck/PVSameDuck/PVSameDuck.h @@ -0,0 +1,18 @@ +// +// PVSameDuck.h +// PVSameDuck +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVSameDuck. +FOUNDATION_EXPORT double PVSameDuckVersionNumber; + +//! Project version string for PVSameDuck. +FOUNDATION_EXPORT const unsigned char PVSameDuckVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Audio.h b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Audio.h new file mode 100644 index 0000000000..d7ac48cd43 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Audio.h @@ -0,0 +1,17 @@ +// +// PVSameDuckCore+Audio.h +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVSameDuckCore (Audio) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Audio.m b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Audio.m new file mode 100644 index 0000000000..5cd9bb64cc --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Audio.m @@ -0,0 +1,25 @@ +// +// PVSameDuckCore+Audio.m +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVSameDuckCore+Audio.h" + +@implementation PVSameDuckCore (Audio) + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (NSUInteger)channelCount { + return 2; +} + +- (double)audioSampleRate { + return 44100; +} + +@end diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Controls.h b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Controls.h new file mode 100644 index 0000000000..7370af4aa9 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Controls.h @@ -0,0 +1,29 @@ +// +// PVSameDuckCore+Controls.h +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVSameDuckCore (Controls) + +- (void)initControllBuffers; +- (void)pollControllers; + +#pragma mark - Control + +- (void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Controls.mm b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Controls.mm new file mode 100644 index 0000000000..c4ccbf25f9 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Controls.mm @@ -0,0 +1,202 @@ +// +// PVSameDuckCore+Controls.m +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import + +#define DC_BTN_C (1<<0) +#define DC_BTN_B (1<<1) +#define DC_BTN_A (1<<2) +#define DC_BTN_START (1<<3) +#define DC_DPAD_UP (1<<4) +#define DC_DPAD_DOWN (1<<5) +#define DC_DPAD_LEFT (1<<6) +#define DC_DPAD_RIGHT (1<<7) +#define DC_BTN_Z (1<<8) +#define DC_BTN_Y (1<<9) +#define DC_BTN_X (1<<10) +#define DC_BTN_D (1<<11) +#define DC_DPAD2_UP (1<<12) +#define DC_DPAD2_DOWN (1<<13) +#define DC_DPAD2_LEFT (1<<14) +#define DC_DPAD2_RIGHT (1<<15) + +#define DC_AXIS_LT (0X10000) +#define DC_AXIS_RT (0X10001) +#define DC_AXIS_X (0X20000) +#define DC_AXIS_Y (0X20001) + +static const int DOSMap[] = { + DC_DPAD_UP, DC_DPAD_DOWN, DC_DPAD_LEFT, DC_DPAD_RIGHT, + DC_BTN_A, DC_BTN_B, DC_BTN_X, DC_BTN_Y, + DC_AXIS_LT, DC_AXIS_RT, + DC_BTN_START +}; + +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef unsigned int u32; + + // Reicast controller data +u16 kcode[4]; +u8 rt[4]; +u8 lt[4]; +u32 vks[4]; +s8 joyx[4], joyy[4]; + +@implementation PVSameDuckCore (Controls) + +- (void)initControllBuffers { + memset(&kcode, 0xFFFF, sizeof(kcode)); + bzero(&rt, sizeof(rt)); + bzero(<, sizeof(lt)); +} + +#pragma mark - Control + +- (void)pollControllers { + for (NSInteger playerIndex = 0; playerIndex < 4; playerIndex++) + { + GCController *controller = nil; + + if (self.controller1 && playerIndex == 0) + { + controller = self.controller1; + } + else if (self.controller2 && playerIndex == 1) + { + controller = self.controller2; + } + else if (self.controller3 && playerIndex == 3) + { + controller = self.controller3; + } + else if (self.controller4 && playerIndex == 4) + { + controller = self.controller4; + } + + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); + dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); + dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); + dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); + + gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); + gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); + gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); + gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); + + gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); + gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); + + gamepad.leftTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Z) : kcode[playerIndex] |= (DC_BTN_Z); + gamepad.rightTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_START) : kcode[playerIndex] |= (DC_BTN_START); + + + float xvalue = gamepad.leftThumbstick.xAxis.value; + s8 x=(s8)(xvalue*127); + joyx[0] = x; + + float yvalue = gamepad.leftThumbstick.yAxis.value; + s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range + joyy[0] = y; + + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); + dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); + dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); + dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); + + gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); + gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); + gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); + gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); + + gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); + gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + } +#endif + } +} + +-(void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +-(void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +-(void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { + [self didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:value forPlayer:player]; +} + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { + [self didPushDOSButton:(PVDOSButton)button forPlayer:player]; +} + +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { + [self didReleaseDOSButton:(PVDOSButton)button forPlayer:player]; +} + + +# pragma mark - Input Wii +//- (oneway void)didMoveWiiJoystickDirection:(OEWiiButton)button withValue:(CGFloat)value forPlayer:(NSUInteger)player +//{ +// if(_isInitialized) +// { +// dol_host->SetAxis(button, value, (int)player); +// } +//} +// +//- (oneway void)didPushWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player +//{ +// if(_isInitialized) +// { +// if (button > OEWiiButtonCount) { +// dol_host->processSpecialKeys(button , (int)player); +// } else { +// dol_host->setButtonState(button, 1, (int)player); +// } +// } +//} +// +//- (oneway void)didReleaseWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player +//{ +// if(_isInitialized && button != OEWiimoteSideways && button != OEWiimoteUpright) +// { +// dol_host->setButtonState(button, 0, (int)player); +// } +//} + +@end diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Saves.h b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Saves.h new file mode 100644 index 0000000000..84dd0138f8 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Saves.h @@ -0,0 +1,17 @@ +// +// PVSameDuck+Saves.h +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVSameDuckCore (Saves) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Saves.m b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Saves.m new file mode 100644 index 0000000000..3101e9c551 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Saves.m @@ -0,0 +1,37 @@ +// +// PVSameDuck+Saves.m +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVSameDuckCore+Saves.h" +#import "PVSameDuckCore.h" + +@implementation PVSameDuckCore (Saves) + +#pragma mark - Properties +-(BOOL)supportsSaveStates { + return YES; +} + +#pragma mark - Methods + +- (BOOL)saveStateToFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +@end diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Video.h b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Video.h new file mode 100644 index 0000000000..7f39c2bf26 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Video.h @@ -0,0 +1,19 @@ +// +// PVSameDuck+Video.h +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVSameDuckCore (Video) + +- (void)videoInterrupt; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Video.m b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Video.m new file mode 100644 index 0000000000..7002502800 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore+Video.m @@ -0,0 +1,98 @@ +// +// PVSameDuck+Video.m +// PVSameDuck +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVSameDuckCore+Video.h" +#import "PVSameDuckCore.h" + +#if !TARGET_OS_OSX +#import +#import +#import +#else +#import +#import +#import +#endif + +@implementation PVSameDuckCore (Video) + +# pragma mark - Methods + +//- (void)videoInterrupt { +// //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)swapBuffers { +// [self.renderDelegate didRenderFrameOnAlternateThread]; +//} +// +//- (void)executeFrameSkippingFrame:(BOOL)skip { +// +// if (![self isEmulationPaused]) +// { +// } +// //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// +// //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)executeFrame { +// [self executeFrameSkippingFrame:NO]; +//} + +# pragma mark - Properties + +//- (CGSize)bufferSize { +// CGSize size = CGSizeMake(av_info.geometry.max_width, av_info.geometry.max_height); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} +// +//- (CGRect)screenRect { +// CGRect rect = CGRectMake(0, 0, av_info.geometry.base_width, av_info.geometry.base_height); +// DLOG(@"<%i, %i>", rect.size.width, rect.size.height); +// return rect; +//} +// +//- (CGSize)aspectSize { +// CGSize size = CGSizeMake(1, av_info.geometry.aspect_ratio); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} + +//- (BOOL)rendersToOpenGL { +// return YES; +//} +// +//- (BOOL)isDoubleBuffered { +// return YES; +//} + +//- (const void *)videoBuffer { +// return NULL; +//} + +//- (GLenum)pixelFormat { +// return GL_RGBA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +// +//- (GLenum)depthFormat { +// // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 +// return GL_DEPTH_COMPONENT24; +//} +@end diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore.h b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore.h new file mode 100644 index 0000000000..c1fcbf5659 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore.h @@ -0,0 +1,43 @@ +// +// PVSameDuckCore.h +// PVSameDuck +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVSameDuckCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore.mm b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore.mm new file mode 100644 index 0000000000..fbeb320bb6 --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/Core/PVSameDuckCore.mm @@ -0,0 +1,255 @@ +// +// PVSameDuckCore.m +// PVSameDuck +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVSameDuckCore.h" +#include +#import "PVSameDuckCore+Controls.h" +#import "PVSameDuckCore+Audio.h" +#import "PVSameDuckCore+Video.h" + +#import "PVSameDuckCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVSameDuckCore() { + +} + +@end + +#pragma mark - PVSameDuckCore Begin + +@implementation PVSameDuckCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + pitch_shift = 4; + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// BOOL loaded = [super loadFileAtPath:path completionHandler:error]; +// +// return loaded; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + +#define V(x) strcmp(variable, x) == 0 + if (V("SameDuck_use_hw")) { + char *value = strdup("Hardware"); + return value; + } else if (V("SameDuck_res_multi")) { + // Internal Resolution Multiplier + // 1,2,3,4 + char *value = strdup("2"); + return value; + } else if (V("SameDuck_res_hw")) { + // Hardware Rendering Resolution + // 824x1024|434x540|515x640|580x720|618x768|845x1050|869x1080|966x1200|1159x1440|1648x2048 + char *value = strdup("869x1080"); + return value; + } else if (V("SameDuck_line_brightness")) { + char *value = strdup("4"); + return value; + } else if (V("SameDuck_line_width")) { + char *value = strdup("4"); + return value; + } else if (V("SameDuck_bloom_brightness")) { + char *value = strdup("4"); + return value; + } else if (V("SameDuck_bloom_width")) { + char *value = strdup("8x"); + return value; + } else if (V("SameDuck_scale_x")) { + // "Scale vector display horizontally; 1|0.845|0.85|0.855|0.86|0.865|0.87|0.875|0.88|0.885|0.89|0.895|0.90|0.905|0.91|0.915|0.92|0.925|0.93|0.935|0.94|0.945|0.95|0.955|0.96|0.965|0.97|0.975|0.98|0.985|0.99|0.995|1.005|1.01" + char *value = strdup("1"); + return value; + } else if (V("SameDuck_scale_y")) { + // "Scale vector display vertically; 1|0.845|0.85|0.855|0.86|0.865|0.87|0.875|0.88|0.885|0.89|0.895|0.90|0.905|0.91|0.915|0.92|0.925|0.93|0.935|0.94|0.945|0.95|0.955|0.96|0.965|0.97|0.975|0.98|0.985|0.99|0.995|1.005|1.01" + char *value = strdup("1"); + return value; + } else if (V("SameDuck_shift_x")) { + char *value = strdup("0"); + return value; + } else if (V("SameDuck_shift_y")) { + char *value = strdup("0"); + return value; + } else if (V("SameDuck_pure_memory_size")) { + char *value = strdup("16"); + return value; + } else if (V("SameDuck_pure_cpu_type")) { + char *value = strdup("pentium_slow"); // auto + return value; + } else if (V("SameDuck_pure_cpu_core")) { + char *value = strdup("auto"); + return value; + } else if (V("SameDuck_pure_keyboard_layout")) { + char *value = strdup("us"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + + /* + "SameDuck_pure_mouse_wheel", + "Bind Mouse Wheel To Key", NULL, + "Bind mouse wheel up and down to two keyboard keys to be able to use it in DOS games.", NULL, + "Input", + { + { "67/68", "Left-Bracket/Right-Bracket" }, + { "72/71", "Comma/Period" }, + { "79/82", "Page-Up/Page-Down" }, + { "78/81", "Home/End" }, + { "80/82", "Delete/Page-Down" }, + { "64/65", "Minus/Equals" }, + { "69/70", "Semicolon/Quote" }, + { "99/100", "Numpad Minus/Plus" }, + { "97/98", "Numpad Divide/Multiply" }, + { "84/85", "Up/Down" }, + { "83/86", "Left/Right" }, + { "11/13", "Q/E" }, + { "none", "Disable" }, + }, + "67/68" + + "SameDuck_pure_cycles", + "Emulated Performance", NULL, + "The raw performance that SameDuck will try to emulate." "\n\n", NULL, //end of Performance section + "Performance", + { + { "auto", "AUTO - SameDuck will try to detect performance needs (default)" }, + { "max", "MAX - Emulate as many instructions as possible" }, + { "315", "8086/8088, 4.77 MHz from 1980 (315 cps)" }, + { "1320", "286, 6 MHz from 1982 (1320 cps)" }, + { "2750", "286, 12.5 MHz from 1985 (2750 cps)" }, + { "4720", "386, 20 MHz from 1987 (4720 cps)" }, + { "7800", "386DX, 33 MHz from 1989 (7800 cps)" }, + { "13400", "486DX, 33 MHz from 1990 (13400 cps)" }, + { "26800", "486DX2, 66 MHz from 1992 (26800 cps)" }, + { "77000", "Pentium, 100 MHz from 1995 (77000 cps)" }, + { "200000", "Pentium II, 300 MHz from 1997 (200000 cps)" }, + { "500000", "Pentium III, 600 MHz from 1999 (500000 cps)" }, + { "1000000", "AMD Athlon, 1.2 GHz from 2000 (1000000 cps)" }, + }, + + "SameDuck_pure_cpu_type", + "CPU Type", NULL, + "Emulated CPU type. Auto is the fastest choice." "\n" + "Games that require specific CPU type selection:" "\n" + "386 (prefetch): X-Men: Madness in The Murderworld, Terminator 1, Contra, Fifa International Soccer 1994" "\n" + "486 (slow): Betrayal in Antara" "\n" + "Pentium (slow): Fifa International Soccer 1994, Windows 95/Windows 3.x games" "\n\n", NULL, //end of System section + "System", + { + { "auto", "Auto - Mixed feature set with maximum performance and compatibility" }, + { "386", "386 - 386 instruction with fast memory access" }, + { "386_slow", "386 (slow) - 386 instruction set with memory privilege checks" }, + { "386_prefetch", "386 (prefetch) - With prefetch queue emulation (only on 'auto' and 'normal' core)" }, + { "486_slow", "486 (slow) - 486 instruction set with memory privilege checks" }, + { "pentium_slow", "Pentium (slow) - 586 instruction set with memory privilege checks" }, + }, + "auto" + }, + { + "SameDuck_pure_cpu_core", + "Advanced > CPU Core", NULL, + "Emulation method (SameDuck CPU core) used.", NULL, + "System", + { + #if defined(C_DYNAMIC_X86) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynamic_x86 implementation)" }, + #elif defined(C_DYNREC) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynrec implementation)" }, + #endif + { "normal", "Normal (interpreter)" }, + { "simple", "Simple (interpreter optimized for old real-mode games)" }, + }, + #if defined(C_DYNAMIC_X86) || defined(C_DYNREC) + "auto" + #else + "normal" + #endif + }, + */ +#undef V + return NULL; +} + + +@end diff --git a/Cores/SameDuck/PVSameDuckCore/PVSameDuck.mm b/Cores/SameDuck/PVSameDuckCore/PVSameDuck.mm new file mode 100644 index 0000000000..105fdcc5fe --- /dev/null +++ b/Cores/SameDuck/PVSameDuckCore/PVSameDuck.mm @@ -0,0 +1,11 @@ +// +// PVSameDuck.mm +// PVSameDuck +// +// Created by Joseph Mattiello on 9/5/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVSameDuckCore.h" +#import "PVSameDuckCore+Controls.h" +#import "PVSameDuckCore+Video.h" diff --git a/Cores/SameDuck/SameBoy b/Cores/SameDuck/SameBoy new file mode 160000 index 0000000000..4b4ec2a1ba --- /dev/null +++ b/Cores/SameDuck/SameBoy @@ -0,0 +1 @@ +Subproject commit 4b4ec2a1ba88d0e2d5c97f335215f33cfcb9f512 diff --git a/Cores/Stella/BuildFlags.xcconfig b/Cores/Stella/BuildFlags.xcconfig new file mode 100644 index 0000000000..12f5f9c073 --- /dev/null +++ b/Cores/Stella/BuildFlags.xcconfig @@ -0,0 +1,39 @@ +// +// BuildFlags.xcconfig +// PVStella +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) LSB_FIRST=1 HAVE_MKDIR=1 SIZEOF_DOUBLE=8 PSS_STYLE=1 MPC_FIXED_POINT ARCH_X86 WANT_STELLA_EMU=1 STDC_HEADERS=1 HAVE_INTTYPES=1 Keyboard=StellaKeyboard _GLIBCXX_USE_CXX11_ABI=1 UNIX=1 DARWIN=1 MACOS_KEYS=1 SOUND_SUPPORT=1 JOYSTICK_SUPPORT CHEATCODE_SUPPORT __LIB_RETRO__=1 IOS ARM +// PNG_SUPPORT BSPF_UNIX GUI_SUPPORT SDL_SUPPORT ZIP_SUPPORT +OTHER_CFLAGS = $(inherited) -ObjC -fno-strict-overflow -ffast-math -funroll-loops -fPIC -Wno-multichar -Wunused -fno-aligned-allocation +OTHER_CXXFLAGS = $(inherited) -ObjC -Wno-multichar -Wunused -Woverloaded-virtual -Wnon-virtual-dtor +OTHER_CFLAGS[configuration=Release] = $(inherited) -flto +OTHER_CXXFLAGS[configuration=Release] = $(inherited) -flto -fno-rtti -Wno-poison-system-directories + +// -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load -pthread +GCC_C_LANGUAGE_STANDARD = gnu99 +CLANG_CXX_LANGUAGE_STANDARD = c++14 + + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 NEON=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -mfpu=neon -D__VEC4_OPT -D__NEON_OPT +EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// Global +ENABLE_BITCODE = NO diff --git a/Cores/Stella/PVStella-Prefix.pch b/Cores/Stella/PVStella-Prefix.pch new file mode 100644 index 0000000000..b5ffd7806e --- /dev/null +++ b/Cores/Stella/PVStella-Prefix.pch @@ -0,0 +1,10 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/Cores/Stella/PVStella-watchOS/PVStella_watchOS.h b/Cores/Stella/PVStella-watchOS/PVStella_watchOS.h deleted file mode 100644 index f5343782f9..0000000000 --- a/Cores/Stella/PVStella-watchOS/PVStella_watchOS.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// PVStella_watchOS.h -// PVStella-watchOS -// -// Created by Joseph Mattiello on 12/16/21. -// Copyright © 2021 Provenance Emu. All rights reserved. -// - -#import - -//! Project version number for PVStella_watchOS. -FOUNDATION_EXPORT double PVStella_watchOSVersionNumber; - -//! Project version string for PVStella_watchOS. -FOUNDATION_EXPORT const unsigned char PVStella_watchOSVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Cores/Stella/PVStella.xcodeproj/project.pbxproj b/Cores/Stella/PVStella.xcodeproj/project.pbxproj index cf7f73aa3a..eca4fd10cb 100644 --- a/Cores/Stella/PVStella.xcodeproj/project.pbxproj +++ b/Cores/Stella/PVStella.xcodeproj/project.pbxproj @@ -3,365 +3,348 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 55; objects = { /* Begin PBXBuildFile section */ - B305EEB1276B4BDF003AE510 /* PVStella_watchOS.h in Headers */ = {isa = PBXBuildFile; fileRef = B305EEB0276B4BDF003AE510 /* PVStella_watchOS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EEB6276B4BFA003AE510 /* Cart3E.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6215B4C9A100C6552F /* Cart3E.cpp */; }; - B305EEB7276B4BFA003AE510 /* Cart3F.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6415B4C9A100C6552F /* Cart3F.cpp */; }; - B305EEB8276B4BFA003AE510 /* M6532.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAC815B4C9A100C6552F /* M6532.cpp */; }; - B305EEB9276B4BFA003AE510 /* CartE0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7215B4C9A100C6552F /* CartE0.cpp */; }; - B305EEBA276B4BFA003AE510 /* Booster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9B15B4C9A100C6552F /* Booster.cpp */; }; - B305EEBB276B4BFA003AE510 /* CartSB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8E15B4C9A100C6552F /* CartSB.cpp */; }; - B305EEBC276B4BFA003AE510 /* M6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAC515B4C9A100C6552F /* M6502.cpp */; }; - B305EEBD276B4BFA003AE510 /* CartF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8415B4C9A100C6552F /* CartF8.cpp */; }; - B305EEBE276B4BFA003AE510 /* FSNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940DD91B15B9D3C300542C50 /* FSNode.cpp */; }; - B305EEBF276B4BFA003AE510 /* Cart4A50.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6615B4C9A100C6552F /* Cart4A50.cpp */; }; - B305EEC0276B4BFA003AE510 /* System.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACC15B4C9A100C6552F /* System.cpp */; }; - B305EEC1276B4BFA003AE510 /* Switches.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB115B4C9A100C6552F /* Switches.cpp */; }; - B305EEC2276B4BFA003AE510 /* Cart4K.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6815B4C9A100C6552F /* Cart4K.cpp */; }; - B305EEC3276B4BFA003AE510 /* CartDPCPlus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7015B4C9A100C6552F /* CartDPCPlus.cpp */; }; - B305EEC4276B4BFA003AE510 /* CartDPC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6E15B4C9A100C6552F /* CartDPC.cpp */; }; - B305EEC5276B4BFA003AE510 /* Genesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA215B4C9A100C6552F /* Genesis.cpp */; }; - B305EEC6276B4BFA003AE510 /* TrackBall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB315B4C9A100C6552F /* TrackBall.cpp */; }; - B305EEC7276B4BFA003AE510 /* Thumbulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9415B4C9A100C6552F /* Thumbulator.cpp */; }; - B305EEC8276B4BFA003AE510 /* Cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA5C15B4C9A100C6552F /* Cart.cpp */; }; - B305EEC9276B4BFA003AE510 /* SoundSDL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABF15B4C9A100C6552F /* SoundSDL.cpp */; }; - B305EECA276B4BFA003AE510 /* NullDev.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACA15B4C9A100C6552F /* NullDev.cpp */; }; - B305EECB276B4BFA003AE510 /* CartF0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7A15B4C9A100C6552F /* CartF0.cpp */; }; - B305EECC276B4BFA003AE510 /* PVStellaGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2615B6425200C6552F /* PVStellaGameCore.mm */; }; - B305EECD276B4BFA003AE510 /* CartF4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7C15B4C9A100C6552F /* CartF4.cpp */; }; - B305EECE276B4BFA003AE510 /* CartFA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8815B4C9A100C6552F /* CartFA.cpp */; }; - B305EECF276B4BFA003AE510 /* CartUA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9015B4C9A100C6552F /* CartUA.cpp */; }; - B305EED0276B4BFA003AE510 /* CartF6SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8215B4C9A100C6552F /* CartF6SC.cpp */; }; - B305EED1276B4BFA003AE510 /* AtariVox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9915B4C9A100C6552F /* AtariVox.cpp */; }; - B305EED2276B4BFA003AE510 /* MT24LC256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAA15B4C9A100C6552F /* MT24LC256.cpp */; }; - B305EED3276B4BFA003AE510 /* CartEFSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7815B4C9A100C6552F /* CartEFSC.cpp */; }; - B305EED4276B4BFA003AE510 /* CartEF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7615B4C9A100C6552F /* CartEF.cpp */; }; - B305EED5276B4BFA003AE510 /* Console.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9615B4C9A100C6552F /* Console.cpp */; }; - B305EED6276B4BFA003AE510 /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD715B4C9A100C6552F /* MD5.cpp */; }; - B305EED7276B4BFA003AE510 /* CartFE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8A15B4C9A100C6552F /* CartFE.cpp */; }; - B305EED8276B4BFA003AE510 /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2415B632E000C6552F /* libretro.cpp */; }; - B305EED9276B4BFA003AE510 /* Cart2K.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6015B4C9A100C6552F /* Cart2K.cpp */; }; - B305EEDA276B4BFA003AE510 /* SaveKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAE15B4C9A100C6552F /* SaveKey.cpp */; }; - B305EEDB276B4BFA003AE510 /* CartCV.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6C15B4C9A100C6552F /* CartCV.cpp */; }; - B305EEDC276B4BFA003AE510 /* Cart0840.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA5E15B4C9A100C6552F /* Cart0840.cpp */; }; - B305EEDD276B4BFA003AE510 /* CartAR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6A15B4C9A100C6552F /* CartAR.cpp */; }; - B305EEDE276B4BFA003AE510 /* Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABC15B4C9A100C6552F /* Settings.cpp */; }; - B305EEDF276B4BFA003AE510 /* PropsSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABA15B4C9A100C6552F /* PropsSet.cpp */; }; - B305EEE0276B4BFA003AE510 /* TIASnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD015B4C9A100C6552F /* TIASnd.cpp */; }; - B305EEE1276B4BFA003AE510 /* CartF6.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8015B4C9A100C6552F /* CartF6.cpp */; }; - B305EEE2276B4BFA003AE510 /* CartMC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8C15B4C9A100C6552F /* CartMC.cpp */; }; - B305EEE3276B4BFA003AE510 /* Driving.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9F15B4C9A100C6552F /* Driving.cpp */; }; - B305EEE4276B4BFA003AE510 /* FSNodePOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940DD92015B9D59200542C50 /* FSNodePOSIX.cpp */; }; - B305EEE5276B4BFA003AE510 /* Random.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD915B4C9A100C6552F /* Random.cpp */; }; - B305EEE6276B4BFA003AE510 /* CartX07.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9215B4C9A100C6552F /* CartX07.cpp */; }; - B305EEE7276B4BFA003AE510 /* Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA615B4C9A100C6552F /* Keyboard.cpp */; }; - B305EEE8276B4BFA003AE510 /* TIATables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD215B4C9A100C6552F /* TIATables.cpp */; }; - B305EEE9276B4BFA003AE510 /* CartE7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7415B4C9A100C6552F /* CartE7.cpp */; }; - B305EEEA276B4BFA003AE510 /* Props.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB815B4C9A100C6552F /* Props.cpp */; }; - B305EEEB276B4BFA003AE510 /* Serializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFADC15B4C9A100C6552F /* Serializer.cpp */; }; - B305EEEC276B4BFA003AE510 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA415B4C9A100C6552F /* Joystick.cpp */; }; - B305EEED276B4BFA003AE510 /* TIA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACE15B4C9A100C6552F /* TIA.cpp */; }; - B305EEEE276B4BFA003AE510 /* Control.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9D15B4C9A100C6552F /* Control.cpp */; }; - B305EEEF276B4BFA003AE510 /* CartF4SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7E15B4C9A100C6552F /* CartF4SC.cpp */; }; - B305EEF0276B4BFA003AE510 /* KidVid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA815B4C9A100C6552F /* KidVid.cpp */; }; - B305EEF1276B4BFA003AE510 /* CartF8SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8615B4C9A100C6552F /* CartF8SC.cpp */; }; - B305EEF2276B4BFA003AE510 /* Paddles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAC15B4C9A100C6552F /* Paddles.cpp */; }; - B305EEF3276B4C09003AE510 /* PVStellaGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B5008DAD0E8BFB3E005AECAF /* PVStellaGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EEF4276B4C09003AE510 /* PVStella.h in Headers */ = {isa = PBXBuildFile; fileRef = B38FB4C21C839BE500CD73BE /* PVStella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF36276B4DCD003AE510 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF35276B4DCD003AE510 /* Foundation.framework */; }; - B305EF38276B4DD8003AE510 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF37276B4DD7003AE510 /* CoreGraphics.framework */; }; - B305EF3A276B4DE5003AE510 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF39276B4DE4003AE510 /* CoreAudio.framework */; }; - B305EF3C276B4DF0003AE510 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF3B276B4DEF003AE510 /* UIKit.framework */; }; - B305EF94276B4E8C003AE510 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF93276B4E8C003AE510 /* PVSupport.framework */; }; - B324C64B2192165C009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C64A2192165C009F4EDC /* PVSupport.framework */; }; + B312F9C5292B0F2900286CFE /* FSNodeLIBRETRO.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B312F9A6292B0F1E00286CFE /* FSNodeLIBRETRO.cxx */; }; + B312F9C6292B0F2900286CFE /* libretro.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B312F9A0292B0F1E00286CFE /* libretro.cxx */; }; + B312F9C8292B104200286CFE /* StellaLIBRETRO.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B312F9AA292B0F1E00286CFE /* StellaLIBRETRO.cxx */; }; + B31B11592894A02D0044F0E6 /* PVStellaGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B31B11572894A02D0044F0E6 /* PVStellaGameCore.h */; }; + B31B115C2894A02D0044F0E6 /* PVStellaGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B31B11582894A02D0044F0E6 /* PVStellaGameCore.mm */; }; B324C64D21921666009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C64C21921666009F4EDC /* PVSupport.framework */; }; - B3271BDF276B8C660031AECC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3271BDE276B8C660031AECC /* OpenGL.framework */; platformFilter = maccatalyst; }; + B3271BDF276B8C660031AECC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3271BDE276B8C660031AECC /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; B3547B662058591E00CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B652058591D00CFF7D8 /* Core.plist */; }; - B3547B672058591E00CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B652058591D00CFF7D8 /* Core.plist */; }; B38FB4C31C839BE500CD73BE /* PVStella.h in Headers */ = {isa = PBXBuildFile; fileRef = B38FB4C21C839BE500CD73BE /* PVStella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96E071D62C00C003F1E93 /* Paddles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAC15B4C9A100C6552F /* Paddles.cpp */; }; - B3C96E081D62C00C003F1E93 /* PVStellaGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2615B6425200C6552F /* PVStellaGameCore.mm */; }; - B3C96E091D62C00C003F1E93 /* KidVid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA815B4C9A100C6552F /* KidVid.cpp */; }; - B3C96E0A1D62C00C003F1E93 /* CartAR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6A15B4C9A100C6552F /* CartAR.cpp */; }; - B3C96E0B1D62C00C003F1E93 /* SoundSDL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABF15B4C9A100C6552F /* SoundSDL.cpp */; }; - B3C96E0C1D62C00C003F1E93 /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2415B632E000C6552F /* libretro.cpp */; }; - B3C96E0D1D62C00C003F1E93 /* CartFE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8A15B4C9A100C6552F /* CartFE.cpp */; }; - B3C96E0E1D62C00C003F1E93 /* CartUA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9015B4C9A100C6552F /* CartUA.cpp */; }; - B3C96E0F1D62C00C003F1E93 /* CartCV.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6C15B4C9A100C6552F /* CartCV.cpp */; }; - B3C96E101D62C00C003F1E93 /* CartF0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7A15B4C9A100C6552F /* CartF0.cpp */; }; - B3C96E111D62C00C003F1E93 /* CartFA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8815B4C9A100C6552F /* CartFA.cpp */; }; - B3C96E121D62C00C003F1E93 /* Props.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB815B4C9A100C6552F /* Props.cpp */; }; - B3C96E131D62C00C003F1E93 /* Cart0840.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA5E15B4C9A100C6552F /* Cart0840.cpp */; }; - B3C96E141D62C00C003F1E93 /* System.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACC15B4C9A100C6552F /* System.cpp */; }; - B3C96E151D62C00C003F1E93 /* CartE0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7215B4C9A100C6552F /* CartE0.cpp */; }; - B3C96E161D62C00C003F1E93 /* CartF4SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7E15B4C9A100C6552F /* CartF4SC.cpp */; }; - B3C96E171D62C00C003F1E93 /* PropsSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABA15B4C9A100C6552F /* PropsSet.cpp */; }; - B3C96E181D62C00C003F1E93 /* Genesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA215B4C9A100C6552F /* Genesis.cpp */; }; - B3C96E191D62C00C003F1E93 /* Cart3E.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6215B4C9A100C6552F /* Cart3E.cpp */; }; - B3C96E1A1D62C00C003F1E93 /* Random.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD915B4C9A100C6552F /* Random.cpp */; }; - B3C96E1B1D62C00C003F1E93 /* TrackBall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB315B4C9A100C6552F /* TrackBall.cpp */; }; - B3C96E1C1D62C00C003F1E93 /* AtariVox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9915B4C9A100C6552F /* AtariVox.cpp */; }; - B3C96E1D1D62C00C003F1E93 /* Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABC15B4C9A100C6552F /* Settings.cpp */; }; - B3C96E1E1D62C00C003F1E93 /* Cart4A50.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6615B4C9A100C6552F /* Cart4A50.cpp */; }; - B3C96E1F1D62C00C003F1E93 /* CartEF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7615B4C9A100C6552F /* CartEF.cpp */; }; - B3C96E201D62C00C003F1E93 /* Thumbulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9415B4C9A100C6552F /* Thumbulator.cpp */; }; - B3C96E211D62C00C003F1E93 /* Serializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFADC15B4C9A100C6552F /* Serializer.cpp */; }; - B3C96E221D62C00C003F1E93 /* MT24LC256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAA15B4C9A100C6552F /* MT24LC256.cpp */; }; - B3C96E231D62C00C003F1E93 /* CartEFSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7815B4C9A100C6552F /* CartEFSC.cpp */; }; - B3C96E241D62C00C003F1E93 /* Driving.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9F15B4C9A100C6552F /* Driving.cpp */; }; - B3C96E251D62C00C003F1E93 /* Cart4K.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6815B4C9A100C6552F /* Cart4K.cpp */; }; - B3C96E261D62C00C003F1E93 /* NullDev.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACA15B4C9A100C6552F /* NullDev.cpp */; }; - B3C96E271D62C00C003F1E93 /* CartF4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7C15B4C9A100C6552F /* CartF4.cpp */; }; - B3C96E281D62C00C003F1E93 /* Switches.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB115B4C9A100C6552F /* Switches.cpp */; }; - B3C96E291D62C00C003F1E93 /* CartF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8415B4C9A100C6552F /* CartF8.cpp */; }; - B3C96E2A1D62C00C003F1E93 /* CartF8SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8615B4C9A100C6552F /* CartF8SC.cpp */; }; - B3C96E2B1D62C00C003F1E93 /* M6532.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAC815B4C9A100C6552F /* M6532.cpp */; }; - B3C96E2C1D62C00C003F1E93 /* FSNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940DD91B15B9D3C300542C50 /* FSNode.cpp */; }; - B3C96E2D1D62C00C003F1E93 /* CartF6SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8215B4C9A100C6552F /* CartF6SC.cpp */; }; - B3C96E2E1D62C00C003F1E93 /* Cart2K.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6015B4C9A100C6552F /* Cart2K.cpp */; }; - B3C96E2F1D62C00C003F1E93 /* Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA615B4C9A100C6552F /* Keyboard.cpp */; }; - B3C96E301D62C00C003F1E93 /* TIATables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD215B4C9A100C6552F /* TIATables.cpp */; }; - B3C96E311D62C00C003F1E93 /* CartX07.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9215B4C9A100C6552F /* CartX07.cpp */; }; - B3C96E321D62C00C003F1E93 /* CartSB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8E15B4C9A100C6552F /* CartSB.cpp */; }; - B3C96E331D62C00C003F1E93 /* CartE7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7415B4C9A100C6552F /* CartE7.cpp */; }; - B3C96E341D62C00C003F1E93 /* Cart3F.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6415B4C9A100C6552F /* Cart3F.cpp */; }; - B3C96E351D62C00C003F1E93 /* CartMC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8C15B4C9A100C6552F /* CartMC.cpp */; }; - B3C96E361D62C00C003F1E93 /* FSNodePOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940DD92015B9D59200542C50 /* FSNodePOSIX.cpp */; }; - B3C96E371D62C00C003F1E93 /* Control.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9D15B4C9A100C6552F /* Control.cpp */; }; - B3C96E381D62C00C003F1E93 /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD715B4C9A100C6552F /* MD5.cpp */; }; - B3C96E391D62C00C003F1E93 /* SaveKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAE15B4C9A100C6552F /* SaveKey.cpp */; }; - B3C96E3A1D62C00C003F1E93 /* TIASnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD015B4C9A100C6552F /* TIASnd.cpp */; }; - B3C96E3B1D62C00C003F1E93 /* CartDPCPlus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7015B4C9A100C6552F /* CartDPCPlus.cpp */; }; - B3C96E3C1D62C00C003F1E93 /* M6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAC515B4C9A100C6552F /* M6502.cpp */; }; - B3C96E3D1D62C00C003F1E93 /* CartF6.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8015B4C9A100C6552F /* CartF6.cpp */; }; - B3C96E3E1D62C00C003F1E93 /* Cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA5C15B4C9A100C6552F /* Cart.cpp */; }; - B3C96E3F1D62C00C003F1E93 /* Console.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9615B4C9A100C6552F /* Console.cpp */; }; - B3C96E401D62C00C003F1E93 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA415B4C9A100C6552F /* Joystick.cpp */; }; - B3C96E411D62C00C003F1E93 /* CartDPC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6E15B4C9A100C6552F /* CartDPC.cpp */; }; - B3C96E421D62C00C003F1E93 /* TIA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACE15B4C9A100C6552F /* TIA.cpp */; }; - B3C96E431D62C00C003F1E93 /* Booster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9B15B4C9A100C6552F /* Booster.cpp */; }; - B3C96E451D62C02D003F1E93 /* Paddles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAC15B4C9A100C6552F /* Paddles.cpp */; }; - B3C96E461D62C02D003F1E93 /* PVStellaGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2615B6425200C6552F /* PVStellaGameCore.mm */; }; - B3C96E471D62C02D003F1E93 /* KidVid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA815B4C9A100C6552F /* KidVid.cpp */; }; - B3C96E481D62C02D003F1E93 /* CartAR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6A15B4C9A100C6552F /* CartAR.cpp */; }; - B3C96E491D62C02D003F1E93 /* SoundSDL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABF15B4C9A100C6552F /* SoundSDL.cpp */; }; - B3C96E4A1D62C02D003F1E93 /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFB2415B632E000C6552F /* libretro.cpp */; }; - B3C96E4B1D62C02D003F1E93 /* CartFE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8A15B4C9A100C6552F /* CartFE.cpp */; }; - B3C96E4C1D62C02D003F1E93 /* CartUA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9015B4C9A100C6552F /* CartUA.cpp */; }; - B3C96E4D1D62C02D003F1E93 /* CartCV.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6C15B4C9A100C6552F /* CartCV.cpp */; }; - B3C96E4E1D62C02D003F1E93 /* CartF0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7A15B4C9A100C6552F /* CartF0.cpp */; }; - B3C96E4F1D62C02D003F1E93 /* CartFA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8815B4C9A100C6552F /* CartFA.cpp */; }; - B3C96E501D62C02D003F1E93 /* Props.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB815B4C9A100C6552F /* Props.cpp */; }; - B3C96E511D62C02D003F1E93 /* Cart0840.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA5E15B4C9A100C6552F /* Cart0840.cpp */; }; - B3C96E521D62C02D003F1E93 /* System.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACC15B4C9A100C6552F /* System.cpp */; }; - B3C96E531D62C02D003F1E93 /* CartE0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7215B4C9A100C6552F /* CartE0.cpp */; }; - B3C96E541D62C02D003F1E93 /* CartF4SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7E15B4C9A100C6552F /* CartF4SC.cpp */; }; - B3C96E551D62C02D003F1E93 /* PropsSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABA15B4C9A100C6552F /* PropsSet.cpp */; }; - B3C96E561D62C02D003F1E93 /* Genesis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA215B4C9A100C6552F /* Genesis.cpp */; }; - B3C96E571D62C02D003F1E93 /* Cart3E.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6215B4C9A100C6552F /* Cart3E.cpp */; }; - B3C96E581D62C02D003F1E93 /* Random.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD915B4C9A100C6552F /* Random.cpp */; }; - B3C96E591D62C02D003F1E93 /* TrackBall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB315B4C9A100C6552F /* TrackBall.cpp */; }; - B3C96E5A1D62C02D003F1E93 /* AtariVox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9915B4C9A100C6552F /* AtariVox.cpp */; }; - B3C96E5B1D62C02D003F1E93 /* Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFABC15B4C9A100C6552F /* Settings.cpp */; }; - B3C96E5C1D62C02D003F1E93 /* Cart4A50.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6615B4C9A100C6552F /* Cart4A50.cpp */; }; - B3C96E5D1D62C02D003F1E93 /* CartEF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7615B4C9A100C6552F /* CartEF.cpp */; }; - B3C96E5E1D62C02D003F1E93 /* Thumbulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9415B4C9A100C6552F /* Thumbulator.cpp */; }; - B3C96E5F1D62C02D003F1E93 /* Serializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFADC15B4C9A100C6552F /* Serializer.cpp */; }; - B3C96E601D62C02D003F1E93 /* MT24LC256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAA15B4C9A100C6552F /* MT24LC256.cpp */; }; - B3C96E611D62C02D003F1E93 /* CartEFSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7815B4C9A100C6552F /* CartEFSC.cpp */; }; - B3C96E621D62C02D003F1E93 /* Driving.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9F15B4C9A100C6552F /* Driving.cpp */; }; - B3C96E631D62C02D003F1E93 /* Cart4K.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6815B4C9A100C6552F /* Cart4K.cpp */; }; - B3C96E641D62C02D003F1E93 /* NullDev.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACA15B4C9A100C6552F /* NullDev.cpp */; }; - B3C96E651D62C02D003F1E93 /* CartF4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7C15B4C9A100C6552F /* CartF4.cpp */; }; - B3C96E661D62C02D003F1E93 /* Switches.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAB115B4C9A100C6552F /* Switches.cpp */; }; - B3C96E671D62C02D003F1E93 /* CartF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8415B4C9A100C6552F /* CartF8.cpp */; }; - B3C96E681D62C02D003F1E93 /* CartF8SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8615B4C9A100C6552F /* CartF8SC.cpp */; }; - B3C96E691D62C02D003F1E93 /* M6532.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAC815B4C9A100C6552F /* M6532.cpp */; }; - B3C96E6A1D62C02D003F1E93 /* FSNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940DD91B15B9D3C300542C50 /* FSNode.cpp */; }; - B3C96E6B1D62C02D003F1E93 /* CartF6SC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8215B4C9A100C6552F /* CartF6SC.cpp */; }; - B3C96E6C1D62C02D003F1E93 /* Cart2K.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6015B4C9A100C6552F /* Cart2K.cpp */; }; - B3C96E6D1D62C02D003F1E93 /* Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA615B4C9A100C6552F /* Keyboard.cpp */; }; - B3C96E6E1D62C02D003F1E93 /* TIATables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD215B4C9A100C6552F /* TIATables.cpp */; }; - B3C96E6F1D62C02D003F1E93 /* CartX07.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9215B4C9A100C6552F /* CartX07.cpp */; }; - B3C96E701D62C02D003F1E93 /* CartSB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8E15B4C9A100C6552F /* CartSB.cpp */; }; - B3C96E711D62C02D003F1E93 /* CartE7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7415B4C9A100C6552F /* CartE7.cpp */; }; - B3C96E721D62C02D003F1E93 /* Cart3F.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6415B4C9A100C6552F /* Cart3F.cpp */; }; - B3C96E731D62C02D003F1E93 /* CartMC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8C15B4C9A100C6552F /* CartMC.cpp */; }; - B3C96E741D62C02D003F1E93 /* FSNodePOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940DD92015B9D59200542C50 /* FSNodePOSIX.cpp */; }; - B3C96E751D62C02D003F1E93 /* Control.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9D15B4C9A100C6552F /* Control.cpp */; }; - B3C96E761D62C02D003F1E93 /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD715B4C9A100C6552F /* MD5.cpp */; }; - B3C96E771D62C02D003F1E93 /* SaveKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAAE15B4C9A100C6552F /* SaveKey.cpp */; }; - B3C96E781D62C02D003F1E93 /* TIASnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAD015B4C9A100C6552F /* TIASnd.cpp */; }; - B3C96E791D62C02D003F1E93 /* CartDPCPlus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA7015B4C9A100C6552F /* CartDPCPlus.cpp */; }; - B3C96E7A1D62C02D003F1E93 /* M6502.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAC515B4C9A100C6552F /* M6502.cpp */; }; - B3C96E7B1D62C02D003F1E93 /* CartF6.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA8015B4C9A100C6552F /* CartF6.cpp */; }; - B3C96E7C1D62C02D003F1E93 /* Cart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA5C15B4C9A100C6552F /* Cart.cpp */; }; - B3C96E7D1D62C02D003F1E93 /* Console.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9615B4C9A100C6552F /* Console.cpp */; }; - B3C96E7E1D62C02D003F1E93 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFAA415B4C9A100C6552F /* Joystick.cpp */; }; - B3C96E7F1D62C02D003F1E93 /* CartDPC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA6E15B4C9A100C6552F /* CartDPC.cpp */; }; - B3C96E801D62C02D003F1E93 /* TIA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFACE15B4C9A100C6552F /* TIA.cpp */; }; - B3C96E811D62C02D003F1E93 /* Booster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 941DFA9B15B4C9A100C6552F /* Booster.cpp */; }; B3C96E861D62C1FE003F1E93 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A8494F1C70FD6C008A4D89 /* Foundation.framework */; }; - B3C96E871D62C203003F1E93 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A8494B1C70FD63008A4D89 /* OpenGLES.framework */; platformFilter = ios; }; - B3C96E881D62C20C003F1E93 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A8494D1C70FD67008A4D89 /* UIKit.framework */; }; + B3C96E871D62C203003F1E93 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A8494B1C70FD63008A4D89 /* OpenGLES.framework */; platformFilters = (ios, tvos, watchos, ); }; B3C96E891D62C211003F1E93 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A849491C70FD5E008A4D89 /* AudioToolbox.framework */; }; B3C96E8A1D62C21A003F1E93 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A849471C70FD53008A4D89 /* CoreGraphics.framework */; }; - B3C96E8C1D62C227003F1E93 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96E8B1D62C227003F1E93 /* Foundation.framework */; }; - B3C96E8E1D62C22A003F1E93 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96E8D1D62C22A003F1E93 /* UIKit.framework */; }; - B3C96E901D62C233003F1E93 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96E8F1D62C233003F1E93 /* OpenGLES.framework */; }; - B3C96E921D62C23C003F1E93 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96E911D62C23C003F1E93 /* AudioToolbox.framework */; }; - B3C96E941D62C245003F1E93 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96E931D62C245003F1E93 /* CoreGraphics.framework */; }; - B3C96E971D62C2FD003F1E93 /* PVStellaGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B5008DAD0E8BFB3E005AECAF /* PVStellaGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96E981D62C2FE003F1E93 /* PVStellaGameCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B5008DAD0E8BFB3E005AECAF /* PVStellaGameCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96EDE1D62C6A8003F1E93 /* PVStella.h in Headers */ = {isa = PBXBuildFile; fileRef = B38FB4C21C839BE500CD73BE /* PVStella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3E6BEB82894B37000CF98C7 /* CartDetector.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE0C2894B2FB00CF98C7 /* CartDetector.cxx */; }; + B3E6BEB92894B37000CF98C7 /* CartFA.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE9D2894B2FC00CF98C7 /* CartFA.cxx */; }; + B3E6BEBA2894B37000CF98C7 /* Bankswitch.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE242894B2FB00CF98C7 /* Bankswitch.cxx */; }; + B3E6BEBB2894B37000CF98C7 /* Cart3EPlus.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE132894B2FB00CF98C7 /* Cart3EPlus.cxx */; }; + B3E6BEBC2894B37000CF98C7 /* CartCTY.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE632894B2FB00CF98C7 /* CartCTY.cxx */; }; + B3E6BEBD2894B37000CF98C7 /* CartTVBoy.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE8C2894B2FB00CF98C7 /* CartTVBoy.cxx */; }; + B3E6BEBE2894B37000CF98C7 /* CartE0.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE182894B2FB00CF98C7 /* CartE0.cxx */; }; + B3E6BEBF2894B37000CF98C7 /* CartDPCPlus.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE212894B2FB00CF98C7 /* CartDPCPlus.cxx */; }; + B3E6BEC02894B37000CF98C7 /* CartBFSC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE072894B2FB00CF98C7 /* CartBFSC.cxx */; }; + B3E6BEC12894B37000CF98C7 /* CartWD.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE1F2894B2FB00CF98C7 /* CartWD.cxx */; }; + B3E6BEC22894B37000CF98C7 /* CartEFSC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE9F2894B2FC00CF98C7 /* CartEFSC.cxx */; }; + B3E6BEC32894B37000CF98C7 /* CartF4.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEA82894B2FC00CF98C7 /* CartF4.cxx */; }; + B3E6BEC42894B37000CF98C7 /* CartF8.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDBE2894B2FA00CF98C7 /* CartF8.cxx */; }; + B3E6BEC52894B37000CF98C7 /* CartF4SC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE9E2894B2FC00CF98C7 /* CartF4SC.cxx */; }; + B3E6BEC62894B37000CF98C7 /* Cart4KSC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEB02894B2FC00CF98C7 /* Cart4KSC.cxx */; }; + B3E6BEC72894B37000CF98C7 /* CartX07.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDC42894B2FA00CF98C7 /* CartX07.cxx */; }; + B3E6BEC82894B37000CF98C7 /* Cart4A50.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE532894B2FB00CF98C7 /* Cart4A50.cxx */; }; + B3E6BEC92894B37000CF98C7 /* Booster.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE3D2894B2FB00CF98C7 /* Booster.cxx */; }; + B3E6BECA2894B37000CF98C7 /* CartMVC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE3F2894B2FB00CF98C7 /* CartMVC.cxx */; }; + B3E6BECB2894B37000CF98C7 /* CartUA.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE6E2894B2FB00CF98C7 /* CartUA.cxx */; }; + B3E6BECC2894B37000CF98C7 /* CartFE.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE8E2894B2FB00CF98C7 /* CartFE.cxx */; }; + B3E6BECD2894B37000CF98C7 /* CartF6.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEA12894B2FC00CF98C7 /* CartF6.cxx */; }; + B3E6BECE2894B37000CF98C7 /* CartF6SC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEAF2894B2FC00CF98C7 /* CartF6SC.cxx */; }; + B3E6BECF2894B37000CF98C7 /* CartDPC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE6C2894B2FB00CF98C7 /* CartDPC.cxx */; }; + B3E6BED02894B37000CF98C7 /* CartE7.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDF82894B2FB00CF98C7 /* CartE7.cxx */; }; + B3E6BED12894B37000CF98C7 /* CartDFSC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE432894B2FB00CF98C7 /* CartDFSC.cxx */; }; + B3E6BED22894B37000CF98C7 /* Cart3E.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDC32894B2FA00CF98C7 /* Cart3E.cxx */; }; + B3E6BED32894B37100CF98C7 /* CartSB.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEAC2894B2FC00CF98C7 /* CartSB.cxx */; }; + B3E6BED42894B37100CF98C7 /* CartCreator.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE2F2894B2FB00CF98C7 /* CartCreator.cxx */; }; + B3E6BED52894B37100CF98C7 /* Cart2K.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE8B2894B2FB00CF98C7 /* Cart2K.cxx */; }; + B3E6BED62894B37100CF98C7 /* Cart0FA0.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE362894B2FB00CF98C7 /* Cart0FA0.cxx */; }; + B3E6BED72894B37100CF98C7 /* CartFA2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDF92894B2FB00CF98C7 /* CartFA2.cxx */; }; + B3E6BED82894B37100CF98C7 /* CartFC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEAB2894B2FC00CF98C7 /* CartFC.cxx */; }; + B3E6BED92894B37100CF98C7 /* CartEF.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE152894B2FB00CF98C7 /* CartEF.cxx */; }; + B3E6BEDA2894B37100CF98C7 /* Cart3EX.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE4C2894B2FB00CF98C7 /* Cart3EX.cxx */; }; + B3E6BEDB2894B37100CF98C7 /* Cart.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDC72894B2FA00CF98C7 /* Cart.cxx */; }; + B3E6BEDC2894B37100CF98C7 /* CartBF.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE2A2894B2FB00CF98C7 /* CartBF.cxx */; }; + B3E6BEDD2894B37100CF98C7 /* CartEnhanced.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE942894B2FB00CF98C7 /* CartEnhanced.cxx */; }; + B3E6BEDE2894B37100CF98C7 /* CartCM.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE6B2894B2FB00CF98C7 /* CartCM.cxx */; }; + B3E6BEDF2894B37100CF98C7 /* Cart0840.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE952894B2FB00CF98C7 /* Cart0840.cxx */; }; + B3E6BEE02894B37100CF98C7 /* CartAR.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE692894B2FB00CF98C7 /* CartAR.cxx */; }; + B3E6BEE12894B37100CF98C7 /* CartF8SC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDFB2894B2FB00CF98C7 /* CartF8SC.cxx */; }; + B3E6BEE22894B37100CF98C7 /* CartBUS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDF42894B2FB00CF98C7 /* CartBUS.cxx */; }; + B3E6BEE32894B37100CF98C7 /* CartARM.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEA72894B2FC00CF98C7 /* CartARM.cxx */; }; + B3E6BEE42894B37100CF98C7 /* Cart4K.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE4D2894B2FB00CF98C7 /* Cart4K.cxx */; }; + B3E6BEE52894B37100CF98C7 /* Cart3F.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDF72894B2FB00CF98C7 /* Cart3F.cxx */; }; + B3E6BEE62894B37100CF98C7 /* CartCDF.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE842894B2FB00CF98C7 /* CartCDF.cxx */; }; + B3E6BEE72894B37100CF98C7 /* CartCV.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE202894B2FB00CF98C7 /* CartCV.cxx */; }; + B3E6BEE82894B37100CF98C7 /* CartMDM.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEA62894B2FC00CF98C7 /* CartMDM.cxx */; }; + B3E6BEE92894B37100CF98C7 /* CartF0.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE832894B2FB00CF98C7 /* CartF0.cxx */; }; + B3E6BEEA2894B37100CF98C7 /* CartDF.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDC12894B2FA00CF98C7 /* CartDF.cxx */; }; + B3E6BEED2894B3C100CF98C7 /* Control.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE342894B2FB00CF98C7 /* Control.cxx */; }; + B3E6BEEE2894B3C100CF98C7 /* Console.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE712894B2FB00CF98C7 /* Console.cxx */; }; + B3E6BEEF2894B3C600CF98C7 /* AtariVox.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE492894B2FB00CF98C7 /* AtariVox.cxx */; }; + B3E6BF0D2894B3EA00CF98C7 /* Lightgun.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE372894B2FB00CF98C7 /* Lightgun.cxx */; }; + B3E6BF0E2894B3EA00CF98C7 /* M6532.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE512894B2FB00CF98C7 /* M6532.cxx */; }; + B3E6BF0F2894B3EA00CF98C7 /* Serializer.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE012894B2FB00CF98C7 /* Serializer.cxx */; }; + B3E6BF102894B3EA00CF98C7 /* Genesis.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEA02894B2FC00CF98C7 /* Genesis.cxx */; }; + B3E6BF112894B3EA00CF98C7 /* Joystick.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDFE2894B2FB00CF98C7 /* Joystick.cxx */; }; + B3E6BF122894B3EA00CF98C7 /* Settings.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDCA2894B2FA00CF98C7 /* Settings.cxx */; }; + B3E6BF132894B3EA00CF98C7 /* MD5.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEA52894B2FC00CF98C7 /* MD5.cxx */; }; + B3E6BF142894B3EA00CF98C7 /* MT24LC256.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE1D2894B2FB00CF98C7 /* MT24LC256.cxx */; }; + B3E6BF152894B3EA00CF98C7 /* PropsSet.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE752894B2FB00CF98C7 /* PropsSet.cxx */; }; + B3E6BF162894B3EA00CF98C7 /* TIASurface.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE0B2894B2FB00CF98C7 /* TIASurface.cxx */; }; + B3E6BF172894B3EB00CF98C7 /* Props.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE912894B2FB00CF98C7 /* Props.cxx */; }; + B3E6BF182894B3EB00CF98C7 /* PointingDevice.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE1A2894B2FB00CF98C7 /* PointingDevice.cxx */; }; + B3E6BF192894B3EB00CF98C7 /* M6502.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE302894B2FB00CF98C7 /* M6502.cxx */; }; + B3E6BF1B2894B3EB00CF98C7 /* Switches.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE282894B2FB00CF98C7 /* Switches.cxx */; }; + B3E6BF1C2894B3EB00CF98C7 /* KidVid.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE572894B2FB00CF98C7 /* KidVid.cxx */; }; + B3E6BF1D2894B3EB00CF98C7 /* System.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE2E2894B2FB00CF98C7 /* System.cxx */; }; + B3E6BF1F2894B3EB00CF98C7 /* Keyboard.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE002894B2FB00CF98C7 /* Keyboard.cxx */; }; + B3E6BF202894B3EB00CF98C7 /* PlusROM.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE6F2894B2FB00CF98C7 /* PlusROM.cxx */; }; + B3E6BF212894B3EB00CF98C7 /* MindLink.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE562894B2FB00CF98C7 /* MindLink.cxx */; }; + B3E6BF222894B3EB00CF98C7 /* SaveKey.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE062894B2FB00CF98C7 /* SaveKey.cxx */; }; + B3E6BF232894B3EB00CF98C7 /* Paddles.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE232894B2FB00CF98C7 /* Paddles.cxx */; }; + B3E6BF242894B3EB00CF98C7 /* Thumbulator.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE5D2894B2FB00CF98C7 /* Thumbulator.cxx */; }; + B3E6BF262894B3EB00CF98C7 /* ProfilingRunner.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE732894B2FB00CF98C7 /* ProfilingRunner.cxx */; }; + B3E6BF272894B3EB00CF98C7 /* Joy2BPlus.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE5B2894B2FB00CF98C7 /* Joy2BPlus.cxx */; }; + B3E6BF282894B3EB00CF98C7 /* GlobalKeyHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BEAA2894B2FC00CF98C7 /* GlobalKeyHandler.cxx */; }; + B3E6BF292894B3F800CF98C7 /* libstella.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D3AED42894B23500EEBA1E /* libstella.a */; }; + B3E6BF2C2894B5FE00CF98C7 /* CheatManager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BB922894B2F700CF98C7 /* CheatManager.cxx */; }; + B3E6BF2D2894B5FE00CF98C7 /* RamCheat.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BB912894B2F700CF98C7 /* RamCheat.cxx */; }; + B3E6BF2E2894B5FE00CF98C7 /* BankRomCheat.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BB942894B2F700CF98C7 /* BankRomCheat.cxx */; }; + B3E6BF2F2894B5FE00CF98C7 /* CheetahCheat.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BB952894B2F700CF98C7 /* CheetahCheat.cxx */; }; + B3E6BF312894B96600CF98C7 /* QuadTari.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE7E2894B2FB00CF98C7 /* QuadTari.cxx */; }; + B3E6BF322894B98200CF98C7 /* FSNode.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE1B2894B2FB00CF98C7 /* FSNode.cxx */; }; + B3E6BF332894BA1C00CF98C7 /* NTSCFilter.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC212894B2F800CF98C7 /* NTSCFilter.cxx */; }; + B3E6BF342894BA1C00CF98C7 /* AtariNTSC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC202894B2F800CF98C7 /* AtariNTSC.cxx */; }; + B3E6BF352894BA6000CF98C7 /* StateManager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBED2894B2F800CF98C7 /* StateManager.cxx */; }; + B3E6BF362894BA6000CF98C7 /* VideoModeHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBE02894B2F800CF98C7 /* VideoModeHandler.cxx */; }; + B3E6BF372894BA6000CF98C7 /* PKeyboardHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC252894B2F800CF98C7 /* PKeyboardHandler.cxx */; }; + B3E6BF382894BA6000CF98C7 /* Logger.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBDC2894B2F800CF98C7 /* Logger.cxx */; }; + B3E6BF392894BA6000CF98C7 /* RewindManager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBFF2894B2F800CF98C7 /* RewindManager.cxx */; }; + B3E6BF3A2894BA6000CF98C7 /* AudioQueue.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBD62894B2F800CF98C7 /* AudioQueue.cxx */; }; + B3E6BF3B2894BA6000CF98C7 /* PJoystickHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBEE2894B2F800CF98C7 /* PJoystickHandler.cxx */; }; + B3E6BF3C2894BA6000CF98C7 /* DevSettingsHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC272894B2F800CF98C7 /* DevSettingsHandler.cxx */; }; + B3E6BF3D2894BA6000CF98C7 /* PaletteHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC302894B2F800CF98C7 /* PaletteHandler.cxx */; }; + B3E6BF3E2894BA6000CF98C7 /* FSNodeZIP.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC322894B2F800CF98C7 /* FSNodeZIP.cxx */; }; + B3E6BF3F2894BA6000CF98C7 /* FpsMeter.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC292894B2F800CF98C7 /* FpsMeter.cxx */; }; + B3E6BF402894BA6000CF98C7 /* PhosphorHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBFB2894B2F800CF98C7 /* PhosphorHandler.cxx */; }; + B3E6BF412894BA6000CF98C7 /* PhysicalJoystick.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBFD2894B2F800CF98C7 /* PhysicalJoystick.cxx */; }; + B3E6BF422894BA6000CF98C7 /* TimerManager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC352894B2F800CF98C7 /* TimerManager.cxx */; }; + B3E6BF432894BA6000CF98C7 /* AudioSettings.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC2C2894B2F800CF98C7 /* AudioSettings.cxx */; }; + B3E6BF442894BA6000CF98C7 /* JoyMap.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBEC2894B2F800CF98C7 /* JoyMap.cxx */; }; + B3E6BF452894BA6000CF98C7 /* KeyMap.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBD12894B2F800CF98C7 /* KeyMap.cxx */; }; + B3E6BF462894BA6000CF98C7 /* StaggeredLogger.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC0F2894B2F800CF98C7 /* StaggeredLogger.cxx */; }; + B3E6BF472894BA6000CF98C7 /* MouseControl.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC2B2894B2F800CF98C7 /* MouseControl.cxx */; }; + B3E6BF482894BA6000CF98C7 /* Base.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC002894B2F800CF98C7 /* Base.cxx */; }; + B3E6BF492894BA7700CF98C7 /* KeyValueRepositoryConfigfile.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBCC2894B2F800CF98C7 /* KeyValueRepositoryConfigfile.cxx */; }; + B3E6BF4A2894BA7700CF98C7 /* CompositeKeyValueRepository.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBB32894B2F700CF98C7 /* CompositeKeyValueRepository.cxx */; }; + B3E6BF4B2894BA7700CF98C7 /* CompositeKVRJsonAdapter.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBC62894B2F800CF98C7 /* CompositeKVRJsonAdapter.cxx */; }; + B3E6BF4C2894BA7700CF98C7 /* KeyValueRepositoryJsonFile.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBC92894B2F800CF98C7 /* KeyValueRepositoryJsonFile.cxx */; }; + B3E6BF4D2894BA7700CF98C7 /* KeyValueRepositoryPropertyFile.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BBCD2894B2F800CF98C7 /* KeyValueRepositoryPropertyFile.cxx */; }; + B3E6BF4E2894BAE300CF98C7 /* OSystem.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE422894B2FB00CF98C7 /* OSystem.cxx */; }; + B3E6BF4F2894BB2200CF98C7 /* Audio.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDDD2894B2FA00CF98C7 /* Audio.cxx */; }; + B3E6BF502894BB2200CF98C7 /* Ball.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDCD2894B2FA00CF98C7 /* Ball.cxx */; }; + B3E6BF512894BB2200CF98C7 /* DrawCounterDecodes.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDE52894B2FB00CF98C7 /* DrawCounterDecodes.cxx */; }; + B3E6BF522894BB2200CF98C7 /* AudioChannel.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDD42894B2FA00CF98C7 /* AudioChannel.cxx */; }; + B3E6BF532894BB2200CF98C7 /* Background.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDD62894B2FA00CF98C7 /* Background.cxx */; }; + B3E6BF542894BB3200CF98C7 /* LatchedInput.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDDB2894B2FA00CF98C7 /* LatchedInput.cxx */; }; + B3E6BF552894BB3200CF98C7 /* Player.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDE62894B2FB00CF98C7 /* Player.cxx */; }; + B3E6BF562894BB3200CF98C7 /* Missile.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDCF2894B2FA00CF98C7 /* Missile.cxx */; }; + B3E6BF572894BB3200CF98C7 /* Playfield.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDE22894B2FA00CF98C7 /* Playfield.cxx */; }; + B3E6BF582894BB3200CF98C7 /* TIA.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDE72894B2FB00CF98C7 /* TIA.cxx */; }; + B3E6BF592894BB4000CF98C7 /* FrameManager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDEA2894B2FB00CF98C7 /* FrameManager.cxx */; }; + B3E6BF5A2894BB4000CF98C7 /* AbstractFrameManager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDEE2894B2FB00CF98C7 /* AbstractFrameManager.cxx */; }; + B3E6BF5B2894BB4000CF98C7 /* FrameLayoutDetector.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDEF2894B2FB00CF98C7 /* FrameLayoutDetector.cxx */; }; + B3E6BF5C2894BB4000CF98C7 /* JitterEmulation.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDF02894B2FB00CF98C7 /* JitterEmulation.cxx */; }; + B3E6BF5D2894BB6E00CF98C7 /* ZipHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BC312894B2F800CF98C7 /* ZipHandler.cxx */; }; + B3E6BF5E2894BBC800CF98C7 /* EventHandler.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDBF2894B2FA00CF98C7 /* EventHandler.cxx */; }; + B3E6BF662894BD0700CF98C7 /* FBSurface.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDC82894B2FA00CF98C7 /* FBSurface.cxx */; }; + B3E6BF672894BD2C00CF98C7 /* FrameBuffer.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE622894B2FB00CF98C7 /* FrameBuffer.cxx */; }; + B3E6BF682894BD4700CF98C7 /* EmulationTiming.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDF52894B2FB00CF98C7 /* EmulationTiming.cxx */; }; + B3E6BF692894BD5C00CF98C7 /* EmulationWorker.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE742894B2FB00CF98C7 /* EmulationWorker.cxx */; }; + B3E6BF6A2894BD8C00CF98C7 /* DispatchResult.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE852894B2FB00CF98C7 /* DispatchResult.cxx */; }; + B3E6BF6B2894BDB400CF98C7 /* Driving.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE802894B2FB00CF98C7 /* Driving.cxx */; }; + B3E6BF6C2894BDD400CF98C7 /* AnalogReadout.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BDDF2894B2FA00CF98C7 /* AnalogReadout.cxx */; }; + B3E6BF6D2894BDF100CF98C7 /* CompuMate.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE262894B2FB00CF98C7 /* CompuMate.cxx */; }; + B3E6BF6E2894BE1B00CF98C7 /* ControllerDetector.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B3E6BE312894B2FB00CF98C7 /* ControllerDetector.cxx */; }; + B3E6BF702894BE4F00CF98C7 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3E6BF6F2894BE4F00CF98C7 /* libz.tbd */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + B312F9C3292B0F1F00286CFE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B312F97D292B0F1E00286CFE /* stella.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DCBA710010DED62E0077193B; + remoteInfo = Stella; + }; + B3E6BF2A2894B3F800CF98C7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3D3AE8F2894B23500EEBA1E; + remoteInfo = "stella-submodule"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B3D3AECF2894B23500EEBA1E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ - 940DD91B15B9D3C300542C50 /* FSNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FSNode.cpp; sourceTree = ""; }; - 940DD91C15B9D3C300542C50 /* FSNode.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = FSNode.hxx; sourceTree = ""; }; - 940DD91D15B9D3C300542C50 /* SharedPtr.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = SharedPtr.hxx; sourceTree = ""; }; - 940DD92015B9D59200542C50 /* FSNodePOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FSNodePOSIX.cpp; sourceTree = ""; }; - 941DFA5C15B4C9A100C6552F /* Cart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart.cpp; sourceTree = ""; }; - 941DFA5D15B4C9A100C6552F /* Cart.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart.hxx; sourceTree = ""; }; - 941DFA5E15B4C9A100C6552F /* Cart0840.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart0840.cpp; sourceTree = ""; }; - 941DFA5F15B4C9A100C6552F /* Cart0840.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart0840.hxx; sourceTree = ""; }; - 941DFA6015B4C9A100C6552F /* Cart2K.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart2K.cpp; sourceTree = ""; }; - 941DFA6115B4C9A100C6552F /* Cart2K.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart2K.hxx; sourceTree = ""; }; - 941DFA6215B4C9A100C6552F /* Cart3E.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3E.cpp; sourceTree = ""; }; - 941DFA6315B4C9A100C6552F /* Cart3E.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart3E.hxx; sourceTree = ""; }; - 941DFA6415B4C9A100C6552F /* Cart3F.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3F.cpp; sourceTree = ""; }; - 941DFA6515B4C9A100C6552F /* Cart3F.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart3F.hxx; sourceTree = ""; }; - 941DFA6615B4C9A100C6552F /* Cart4A50.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4A50.cpp; sourceTree = ""; }; - 941DFA6715B4C9A100C6552F /* Cart4A50.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart4A50.hxx; sourceTree = ""; }; - 941DFA6815B4C9A100C6552F /* Cart4K.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4K.cpp; sourceTree = ""; }; - 941DFA6915B4C9A100C6552F /* Cart4K.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart4K.hxx; sourceTree = ""; }; - 941DFA6A15B4C9A100C6552F /* CartAR.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartAR.cpp; sourceTree = ""; }; - 941DFA6B15B4C9A100C6552F /* CartAR.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartAR.hxx; sourceTree = ""; }; - 941DFA6C15B4C9A100C6552F /* CartCV.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartCV.cpp; sourceTree = ""; }; - 941DFA6D15B4C9A100C6552F /* CartCV.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartCV.hxx; sourceTree = ""; }; - 941DFA6E15B4C9A100C6552F /* CartDPC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartDPC.cpp; sourceTree = ""; }; - 941DFA6F15B4C9A100C6552F /* CartDPC.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartDPC.hxx; sourceTree = ""; }; - 941DFA7015B4C9A100C6552F /* CartDPCPlus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartDPCPlus.cpp; sourceTree = ""; }; - 941DFA7115B4C9A100C6552F /* CartDPCPlus.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartDPCPlus.hxx; sourceTree = ""; }; - 941DFA7215B4C9A100C6552F /* CartE0.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartE0.cpp; sourceTree = ""; }; - 941DFA7315B4C9A100C6552F /* CartE0.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartE0.hxx; sourceTree = ""; }; - 941DFA7415B4C9A100C6552F /* CartE7.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartE7.cpp; sourceTree = ""; }; - 941DFA7515B4C9A100C6552F /* CartE7.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartE7.hxx; sourceTree = ""; }; - 941DFA7615B4C9A100C6552F /* CartEF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartEF.cpp; sourceTree = ""; }; - 941DFA7715B4C9A100C6552F /* CartEF.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartEF.hxx; sourceTree = ""; }; - 941DFA7815B4C9A100C6552F /* CartEFSC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartEFSC.cpp; sourceTree = ""; }; - 941DFA7915B4C9A100C6552F /* CartEFSC.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartEFSC.hxx; sourceTree = ""; }; - 941DFA7A15B4C9A100C6552F /* CartF0.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartF0.cpp; sourceTree = ""; }; - 941DFA7B15B4C9A100C6552F /* CartF0.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartF0.hxx; sourceTree = ""; }; - 941DFA7C15B4C9A100C6552F /* CartF4.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartF4.cpp; sourceTree = ""; }; - 941DFA7D15B4C9A100C6552F /* CartF4.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartF4.hxx; sourceTree = ""; }; - 941DFA7E15B4C9A100C6552F /* CartF4SC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartF4SC.cpp; sourceTree = ""; }; - 941DFA7F15B4C9A100C6552F /* CartF4SC.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartF4SC.hxx; sourceTree = ""; }; - 941DFA8015B4C9A100C6552F /* CartF6.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartF6.cpp; sourceTree = ""; }; - 941DFA8115B4C9A100C6552F /* CartF6.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartF6.hxx; sourceTree = ""; }; - 941DFA8215B4C9A100C6552F /* CartF6SC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartF6SC.cpp; sourceTree = ""; }; - 941DFA8315B4C9A100C6552F /* CartF6SC.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartF6SC.hxx; sourceTree = ""; }; - 941DFA8415B4C9A100C6552F /* CartF8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartF8.cpp; sourceTree = ""; }; - 941DFA8515B4C9A100C6552F /* CartF8.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartF8.hxx; sourceTree = ""; }; - 941DFA8615B4C9A100C6552F /* CartF8SC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartF8SC.cpp; sourceTree = ""; }; - 941DFA8715B4C9A100C6552F /* CartF8SC.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartF8SC.hxx; sourceTree = ""; }; - 941DFA8815B4C9A100C6552F /* CartFA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartFA.cpp; sourceTree = ""; }; - 941DFA8915B4C9A100C6552F /* CartFA.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartFA.hxx; sourceTree = ""; }; - 941DFA8A15B4C9A100C6552F /* CartFE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartFE.cpp; sourceTree = ""; }; - 941DFA8B15B4C9A100C6552F /* CartFE.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartFE.hxx; sourceTree = ""; }; - 941DFA8C15B4C9A100C6552F /* CartMC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartMC.cpp; sourceTree = ""; }; - 941DFA8D15B4C9A100C6552F /* CartMC.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartMC.hxx; sourceTree = ""; }; - 941DFA8E15B4C9A100C6552F /* CartSB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartSB.cpp; sourceTree = ""; }; - 941DFA8F15B4C9A100C6552F /* CartSB.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartSB.hxx; sourceTree = ""; }; - 941DFA9015B4C9A100C6552F /* CartUA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartUA.cpp; sourceTree = ""; }; - 941DFA9115B4C9A100C6552F /* CartUA.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartUA.hxx; sourceTree = ""; }; - 941DFA9215B4C9A100C6552F /* CartX07.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartX07.cpp; sourceTree = ""; }; - 941DFA9315B4C9A100C6552F /* CartX07.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartX07.hxx; sourceTree = ""; }; - 941DFA9415B4C9A100C6552F /* Thumbulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Thumbulator.cpp; sourceTree = ""; }; - 941DFA9515B4C9A100C6552F /* Thumbulator.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Thumbulator.hxx; sourceTree = ""; }; - 941DFA9615B4C9A100C6552F /* Console.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Console.cpp; sourceTree = ""; }; - 941DFA9715B4C9A100C6552F /* Console.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Console.hxx; sourceTree = ""; }; - 941DFA9915B4C9A100C6552F /* AtariVox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtariVox.cpp; sourceTree = ""; }; - 941DFA9A15B4C9A100C6552F /* AtariVox.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = AtariVox.hxx; sourceTree = ""; }; - 941DFA9B15B4C9A100C6552F /* Booster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Booster.cpp; sourceTree = ""; }; - 941DFA9C15B4C9A100C6552F /* Booster.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Booster.hxx; sourceTree = ""; }; - 941DFA9D15B4C9A100C6552F /* Control.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Control.cpp; sourceTree = ""; }; - 941DFA9E15B4C9A100C6552F /* Control.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Control.hxx; sourceTree = ""; }; - 941DFA9F15B4C9A100C6552F /* Driving.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Driving.cpp; sourceTree = ""; }; - 941DFAA015B4C9A100C6552F /* Driving.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Driving.hxx; sourceTree = ""; }; - 941DFAA115B4C9A100C6552F /* Event.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Event.hxx; sourceTree = ""; }; - 941DFAA215B4C9A100C6552F /* Genesis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Genesis.cpp; sourceTree = ""; }; - 941DFAA315B4C9A100C6552F /* Genesis.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Genesis.hxx; sourceTree = ""; }; - 941DFAA415B4C9A100C6552F /* Joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Joystick.cpp; sourceTree = ""; }; - 941DFAA515B4C9A100C6552F /* Joystick.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Joystick.hxx; sourceTree = ""; }; - 941DFAA615B4C9A100C6552F /* Keyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Keyboard.cpp; sourceTree = ""; }; - 941DFAA715B4C9A100C6552F /* Keyboard.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Keyboard.hxx; sourceTree = ""; }; - 941DFAA815B4C9A100C6552F /* KidVid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KidVid.cpp; sourceTree = ""; }; - 941DFAA915B4C9A100C6552F /* KidVid.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = KidVid.hxx; sourceTree = ""; }; - 941DFAAA15B4C9A100C6552F /* MT24LC256.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MT24LC256.cpp; sourceTree = ""; }; - 941DFAAB15B4C9A100C6552F /* MT24LC256.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MT24LC256.hxx; sourceTree = ""; }; - 941DFAAC15B4C9A100C6552F /* Paddles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Paddles.cpp; sourceTree = ""; }; - 941DFAAD15B4C9A100C6552F /* Paddles.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Paddles.hxx; sourceTree = ""; }; - 941DFAAE15B4C9A100C6552F /* SaveKey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SaveKey.cpp; sourceTree = ""; }; - 941DFAAF15B4C9A100C6552F /* SaveKey.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = SaveKey.hxx; sourceTree = ""; }; - 941DFAB015B4C9A100C6552F /* SerialPort.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = SerialPort.hxx; sourceTree = ""; }; - 941DFAB115B4C9A100C6552F /* Switches.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Switches.cpp; sourceTree = ""; }; - 941DFAB215B4C9A100C6552F /* Switches.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Switches.hxx; sourceTree = ""; }; - 941DFAB315B4C9A100C6552F /* TrackBall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackBall.cpp; sourceTree = ""; }; - 941DFAB415B4C9A100C6552F /* TrackBall.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TrackBall.hxx; sourceTree = ""; }; - 941DFAB715B4C9A100C6552F /* DefProps.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = DefProps.hxx; sourceTree = ""; }; - 941DFAB815B4C9A100C6552F /* Props.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Props.cpp; sourceTree = ""; }; - 941DFAB915B4C9A100C6552F /* Props.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Props.hxx; sourceTree = ""; }; - 941DFABA15B4C9A100C6552F /* PropsSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PropsSet.cpp; sourceTree = ""; }; - 941DFABB15B4C9A100C6552F /* PropsSet.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = PropsSet.hxx; sourceTree = ""; }; - 941DFABC15B4C9A100C6552F /* Settings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Settings.cpp; sourceTree = ""; }; - 941DFABD15B4C9A100C6552F /* Settings.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Settings.hxx; sourceTree = ""; }; - 941DFABE15B4C9A100C6552F /* Sound.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Sound.hxx; sourceTree = ""; }; - 941DFABF15B4C9A100C6552F /* SoundSDL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SoundSDL.cpp; sourceTree = ""; }; - 941DFAC015B4C9A100C6552F /* SoundSDL.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = SoundSDL.hxx; sourceTree = ""; }; - 941DFAC115B4C9A100C6552F /* stella.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stella.cpp; sourceTree = ""; }; - 941DFAC215B4C9A100C6552F /* stella.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stella.h; sourceTree = ""; }; - 941DFAC415B4C9A100C6552F /* Device.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Device.hxx; sourceTree = ""; }; - 941DFAC515B4C9A100C6552F /* M6502.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = M6502.cpp; sourceTree = ""; }; - 941DFAC615B4C9A100C6552F /* M6502.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = M6502.hxx; sourceTree = ""; }; - 941DFAC715B4C9A100C6552F /* M6502.ins */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = M6502.ins; sourceTree = ""; }; - 941DFAC815B4C9A100C6552F /* M6532.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = M6532.cpp; sourceTree = ""; }; - 941DFAC915B4C9A100C6552F /* M6532.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = M6532.hxx; sourceTree = ""; }; - 941DFACA15B4C9A100C6552F /* NullDev.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NullDev.cpp; sourceTree = ""; }; - 941DFACB15B4C9A100C6552F /* NullDev.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NullDev.hxx; sourceTree = ""; }; - 941DFACC15B4C9A100C6552F /* System.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = System.cpp; sourceTree = ""; }; - 941DFACD15B4C9A100C6552F /* System.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = System.hxx; sourceTree = ""; }; - 941DFACE15B4C9A100C6552F /* TIA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TIA.cpp; sourceTree = ""; }; - 941DFACF15B4C9A100C6552F /* TIA.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TIA.hxx; sourceTree = ""; }; - 941DFAD015B4C9A100C6552F /* TIASnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TIASnd.cpp; sourceTree = ""; }; - 941DFAD115B4C9A100C6552F /* TIASnd.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TIASnd.hxx; sourceTree = ""; }; - 941DFAD215B4C9A100C6552F /* TIATables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TIATables.cpp; sourceTree = ""; }; - 941DFAD315B4C9A100C6552F /* TIATables.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TIATables.hxx; sourceTree = ""; }; - 941DFAD515B4C9A100C6552F /* Array.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Array.hxx; sourceTree = ""; }; - 941DFAD615B4C9A100C6552F /* bspf.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = bspf.hxx; sourceTree = ""; }; - 941DFAD715B4C9A100C6552F /* MD5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MD5.cpp; sourceTree = ""; }; - 941DFAD815B4C9A100C6552F /* MD5.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MD5.hxx; sourceTree = ""; }; - 941DFAD915B4C9A100C6552F /* Random.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Random.cpp; sourceTree = ""; }; - 941DFADA15B4C9A100C6552F /* Random.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Random.hxx; sourceTree = ""; }; - 941DFADB15B4C9A100C6552F /* Serializable.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Serializable.hxx; sourceTree = ""; }; - 941DFADC15B4C9A100C6552F /* Serializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Serializer.cpp; sourceTree = ""; }; - 941DFADD15B4C9A100C6552F /* Serializer.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Serializer.hxx; sourceTree = ""; }; - 941DFADE15B4C9A100C6552F /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StringList.hxx; sourceTree = ""; }; - 941DFADF15B4C9A100C6552F /* Version.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Version.hxx; sourceTree = ""; }; - 941DFB2415B632E000C6552F /* libretro.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cpp; sourceTree = ""; }; - 941DFB2615B6425200C6552F /* PVStellaGameCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PVStellaGameCore.mm; sourceTree = ""; }; - 94A9E281157D637B0083A7DC /* libretro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; - B305EEAE276B4BDF003AE510 /* PVStella.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVStella.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B305EEB0276B4BDF003AE510 /* PVStella_watchOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVStella_watchOS.h; sourceTree = ""; }; B305EF31276B4DC4003AE510 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B305EF35276B4DCD003AE510 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B305EF37276B4DD7003AE510 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; B305EF39276B4DE4003AE510 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/CoreAudio.framework; sourceTree = DEVELOPER_DIR; }; B305EF3B276B4DEF003AE510 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; B305EF93276B4E8C003AE510 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B312F920292B0F1E00286CFE /* pnginfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnginfo.h; sourceTree = ""; }; + B312F921292B0F1E00286CFE /* pngrio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrio.c; sourceTree = ""; }; + B312F922292B0F1E00286CFE /* pngerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngerror.c; sourceTree = ""; }; + B312F923292B0F1E00286CFE /* pngwio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwio.c; sourceTree = ""; }; + B312F924292B0F1E00286CFE /* pngstruct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; + B312F925292B0F1E00286CFE /* pngtrans.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngtrans.c; sourceTree = ""; }; + B312F926292B0F1E00286CFE /* pngpriv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngpriv.h; sourceTree = ""; }; + B312F927292B0F1E00286CFE /* pngwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwrite.c; sourceTree = ""; }; + B312F928292B0F1E00286CFE /* png.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; + B312F929292B0F1E00286CFE /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B312F92A292B0F1E00286CFE /* pngwutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwutil.c; sourceTree = ""; }; + B312F92B292B0F1E00286CFE /* pngwtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngwtran.c; sourceTree = ""; }; + B312F92C292B0F1E00286CFE /* pnglibconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pnglibconf.h; sourceTree = ""; }; + B312F92D292B0F1E00286CFE /* pngconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; + B312F92E292B0F1E00286CFE /* pngpread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngpread.c; sourceTree = ""; }; + B312F92F292B0F1E00286CFE /* pngdebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pngdebug.h; sourceTree = ""; }; + B312F930292B0F1E00286CFE /* pngread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngread.c; sourceTree = ""; }; + B312F931292B0F1E00286CFE /* pngmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngmem.c; sourceTree = ""; }; + B312F932292B0F1E00286CFE /* pngget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngget.c; sourceTree = ""; }; + B312F933292B0F1E00286CFE /* png.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = png.c; sourceTree = ""; }; + B312F934292B0F1E00286CFE /* pngrtran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrtran.c; sourceTree = ""; }; + B312F935292B0F1E00286CFE /* pngrutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngrutil.c; sourceTree = ""; }; + B312F936292B0F1E00286CFE /* pngset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pngset.c; sourceTree = ""; }; + B312F938292B0F1E00286CFE /* sqlite3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sqlite3.c; sourceTree = ""; }; + B312F939292B0F1E00286CFE /* sqlite_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sqlite_options.h; sourceTree = ""; }; + B312F93B292B0F1E00286CFE /* sqlite3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sqlite3.c; sourceTree = ""; }; + B312F93C292B0F1E00286CFE /* sqlite3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sqlite3.h; sourceTree = ""; }; + B312F93D292B0F1E00286CFE /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B312F93E292B0F1E00286CFE /* sqlite3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sqlite3.h; sourceTree = ""; }; + B312F940292B0F1E00286CFE /* nanojpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nanojpeg.c; sourceTree = ""; }; + B312F941292B0F1E00286CFE /* nanojpeg_lib.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = nanojpeg_lib.hxx; sourceTree = ""; }; + B312F943292B0F1E00286CFE /* httplib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = httplib.h; sourceTree = ""; }; + B312F944292B0F1E00286CFE /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B312F945292B0F1E00286CFE /* http_lib.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = http_lib.hxx; sourceTree = ""; }; + B312F946292B0F1E00286CFE /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B312F948292B0F1E00286CFE /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B312F949292B0F1E00286CFE /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B312F94A292B0F1E00286CFE /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B312F94B292B0F1E00286CFE /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B312F94C292B0F1E00286CFE /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B312F94D292B0F1E00286CFE /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B312F94E292B0F1E00286CFE /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B312F94F292B0F1E00286CFE /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B312F950292B0F1E00286CFE /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B312F951292B0F1E00286CFE /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B312F952292B0F1E00286CFE /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B312F953292B0F1E00286CFE /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B312F954292B0F1E00286CFE /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B312F955292B0F1E00286CFE /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B312F956292B0F1E00286CFE /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B312F957292B0F1E00286CFE /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B312F958292B0F1E00286CFE /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B312F959292B0F1E00286CFE /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B312F95A292B0F1E00286CFE /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B312F95B292B0F1E00286CFE /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B312F95C292B0F1E00286CFE /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B312F95D292B0F1E00286CFE /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B312F95E292B0F1E00286CFE /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B312F95F292B0F1E00286CFE /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B312F960292B0F1E00286CFE /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B312F961292B0F1E00286CFE /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B312F962292B0F1E00286CFE /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B312F963292B0F1E00286CFE /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B312F965292B0F1E00286CFE /* LICENSE.MIT */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.MIT; sourceTree = ""; }; + B312F966292B0F1E00286CFE /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B312F967292B0F1E00286CFE /* json_lib.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = json_lib.hxx; sourceTree = ""; }; + B312F968292B0F1E00286CFE /* json.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = json.hxx; sourceTree = ""; }; + B312F96A292B0F1E00286CFE /* tinyexif_lib.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = tinyexif_lib.hxx; sourceTree = ""; }; + B312F96C292B0F1E00286CFE /* TinyEXIF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TinyEXIF.h; sourceTree = ""; }; + B312F96D292B0F1E00286CFE /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B312F96E292B0F1E00286CFE /* TinyEXIF.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TinyEXIF.cpp; sourceTree = ""; }; + B312F96F292B0F1E00286CFE /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B312F970292B0F1E00286CFE /* tinyexif.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinyexif.cxx; sourceTree = ""; }; + B312F974292B0F1E00286CFE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + B312F975292B0F1E00286CFE /* AboutBoxTextView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AboutBoxTextView.m; sourceTree = ""; }; + B312F976292B0F1E00286CFE /* SettingsRepositoryMACOS.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = SettingsRepositoryMACOS.mm; sourceTree = ""; }; + B312F977292B0F1E00286CFE /* AboutBox.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = AboutBox.nib; sourceTree = ""; }; + B312F978292B0F1E00286CFE /* AboutBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AboutBox.h; sourceTree = ""; }; + B312F979292B0F1E00286CFE /* SerialPortMACOS.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SerialPortMACOS.hxx; sourceTree = ""; }; + B312F97A292B0F1E00286CFE /* SDLMain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = ""; }; + B312F97B292B0F1E00286CFE /* OSystemMACOS.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OSystemMACOS.hxx; sourceTree = ""; }; + B312F97C292B0F1E00286CFE /* SerialPortMACOS.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SerialPortMACOS.cxx; sourceTree = ""; }; + B312F97D292B0F1E00286CFE /* stella.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = stella.xcodeproj; sourceTree = ""; }; + B312F980292B0F1E00286CFE /* SDLMain.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = SDLMain.nib; sourceTree = ""; }; + B312F981292B0F1E00286CFE /* template.dmg.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = template.dmg.gz; sourceTree = ""; }; + B312F982292B0F1E00286CFE /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B312F983292B0F1E00286CFE /* Cart.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Cart.icns; sourceTree = ""; }; + B312F984292B0F1E00286CFE /* SettingsRepositoryMACOS.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SettingsRepositoryMACOS.hxx; sourceTree = ""; }; + B312F985292B0F1E00286CFE /* AboutBox.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AboutBox.m; sourceTree = ""; }; + B312F986292B0F1E00286CFE /* OSystemMACOS.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OSystemMACOS.cxx; sourceTree = ""; }; + B312F987292B0F1E00286CFE /* Info-Stella.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Stella.plist"; sourceTree = ""; }; + B312F988292B0F1E00286CFE /* AboutBoxTextView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AboutBoxTextView.h; sourceTree = ""; }; + B312F989292B0F1E00286CFE /* SDLMain.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = ""; }; + B312F98A292B0F1E00286CFE /* Credits.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = Credits.html; sourceTree = ""; }; + B312F98B292B0F1E00286CFE /* Create_build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = Create_build.sh; sourceTree = ""; }; + B312F98C292B0F1E00286CFE /* Stella.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Stella.icns; sourceTree = ""; }; + B312F98E292B0F1E00286CFE /* OSystemUNIX.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OSystemUNIX.hxx; sourceTree = ""; }; + B312F990292B0F1E00286CFE /* SettingsR77.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SettingsR77.cxx; sourceTree = ""; }; + B312F991292B0F1E00286CFE /* OSystemR77.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OSystemR77.hxx; sourceTree = ""; }; + B312F992292B0F1E00286CFE /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B312F993292B0F1E00286CFE /* OSystemR77.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OSystemR77.cxx; sourceTree = ""; }; + B312F994292B0F1E00286CFE /* SettingsR77.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SettingsR77.hxx; sourceTree = ""; }; + B312F995292B0F1E00286CFE /* FSNodePOSIX.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FSNodePOSIX.hxx; sourceTree = ""; }; + B312F996292B0F1E00286CFE /* SerialPortUNIX.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SerialPortUNIX.cxx; sourceTree = ""; }; + B312F997292B0F1E00286CFE /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B312F998292B0F1E00286CFE /* FSNodePOSIX.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FSNodePOSIX.cxx; sourceTree = ""; }; + B312F999292B0F1E00286CFE /* SerialPortUNIX.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SerialPortUNIX.hxx; sourceTree = ""; }; + B312F99A292B0F1E00286CFE /* stella.spec */ = {isa = PBXFileReference; lastKnownFileType = text; path = stella.spec; sourceTree = ""; }; + B312F99B292B0F1E00286CFE /* OSystemUNIX.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OSystemUNIX.cxx; sourceTree = ""; }; + B312F99C292B0F1E00286CFE /* stella.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = stella.desktop; sourceTree = ""; }; + B312F99E292B0F1E00286CFE /* FBSurfaceLIBRETRO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FBSurfaceLIBRETRO.hxx; sourceTree = ""; }; + B312F99F292B0F1E00286CFE /* FSNodeLIBRETRO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FSNodeLIBRETRO.hxx; sourceTree = ""; }; + B312F9A0292B0F1E00286CFE /* libretro.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cxx; sourceTree = ""; }; + B312F9A1292B0F1E00286CFE /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B312F9A2292B0F1E00286CFE /* StellaLIBRETRO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StellaLIBRETRO.hxx; sourceTree = ""; }; + B312F9A3292B0F1E00286CFE /* EventHandlerLIBRETRO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EventHandlerLIBRETRO.hxx; sourceTree = ""; }; + B312F9A4292B0F1E00286CFE /* SoundLIBRETRO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SoundLIBRETRO.hxx; sourceTree = ""; }; + B312F9A5292B0F1E00286CFE /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B312F9A6292B0F1E00286CFE /* FSNodeLIBRETRO.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FSNodeLIBRETRO.cxx; sourceTree = ""; }; + B312F9A7292B0F1E00286CFE /* OSystemLIBRETRO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OSystemLIBRETRO.hxx; sourceTree = ""; }; + B312F9A8292B0F1E00286CFE /* Stella.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Stella.vcxproj; sourceTree = ""; }; + B312F9A9292B0F1E00286CFE /* FBBackendLIBRETRO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FBBackendLIBRETRO.hxx; sourceTree = ""; }; + B312F9AA292B0F1E00286CFE /* StellaLIBRETRO.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StellaLIBRETRO.cxx; sourceTree = ""; }; + B312F9AB292B0F1E00286CFE /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B312F9AC292B0F1E00286CFE /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B312F9AE292B0F1E00286CFE /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B312F9AF292B0F1E00286CFE /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B312F9B1292B0F1E00286CFE /* stella.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = stella.ico; sourceTree = ""; }; + B312F9B2292B0F1E00286CFE /* OSystemWINDOWS.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OSystemWINDOWS.cxx; sourceTree = ""; }; + B312F9B3292B0F1E00286CFE /* Stella.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Stella.vcxproj.filters; sourceTree = ""; }; + B312F9B4292B0F1E00286CFE /* Windows.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Windows.hxx; sourceTree = ""; }; + B312F9B5292B0F1E00286CFE /* Stella.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = Stella.sln; sourceTree = ""; }; + B312F9B6292B0F1E00286CFE /* Create_Builds.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = Create_Builds.bat; sourceTree = ""; }; + B312F9B7292B0F1E00286CFE /* FSNodeWINDOWS.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FSNodeWINDOWS.cxx; sourceTree = ""; }; + B312F9B8292B0F1E00286CFE /* SerialPortWINDOWS.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SerialPortWINDOWS.cxx; sourceTree = ""; }; + B312F9B9292B0F1E00286CFE /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B312F9BA292B0F1E00286CFE /* Stella.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Stella.vcxproj; sourceTree = ""; }; + B312F9BB292B0F1E00286CFE /* FSNodeWINDOWS.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FSNodeWINDOWS.hxx; sourceTree = ""; }; + B312F9BC292B0F1E00286CFE /* HomeFinder.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = HomeFinder.hxx; sourceTree = ""; }; + B312F9BD292B0F1E00286CFE /* resource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + B312F9BE292B0F1E00286CFE /* SerialPortWINDOWS.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SerialPortWINDOWS.hxx; sourceTree = ""; }; + B312F9BF292B0F1E00286CFE /* stella.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = stella.rc; sourceTree = ""; }; + B312F9C0292B0F1E00286CFE /* stella.iss */ = {isa = PBXFileReference; lastKnownFileType = text; path = stella.iss; sourceTree = ""; }; + B312F9C1292B0F1E00286CFE /* OSystemWINDOWS.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OSystemWINDOWS.hxx; sourceTree = ""; }; + B31B115528949D550044F0E6 /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B31B11572894A02D0044F0E6 /* PVStellaGameCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVStellaGameCore.h; sourceTree = ""; }; + B31B11582894A02D0044F0E6 /* PVStellaGameCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PVStellaGameCore.mm; sourceTree = ""; }; B324C64A2192165C009F4EDC /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B324C64C21921666009F4EDC /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3271BDE276B8C660031AECC /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; @@ -375,29 +358,1301 @@ B3A8494B1C70FD63008A4D89 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; B3A8494D1C70FD67008A4D89 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; B3A8494F1C70FD6C008A4D89 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - B3A849521C710C03008A4D89 /* PVStella-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "PVStella-Prefix.pch"; path = "PVStella/PVStella-Prefix.pch"; sourceTree = ""; }; - B3C96DFE1D62BE5A003F1E93 /* PVStella.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVStella.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C96E8B1D62C227003F1E93 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B3C96E8D1D62C22A003F1E93 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; B3C96E8F1D62C233003F1E93 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B3C96E911D62C23C003F1E93 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; B3C96E931D62C245003F1E93 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - B5008DAD0E8BFB3E005AECAF /* PVStellaGameCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVStellaGameCore.h; sourceTree = ""; }; + B3D3AED42894B23500EEBA1E /* libstella.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libstella.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3E6B8B22894B2F200CF98C7 /* Copyright.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Copyright.txt; sourceTree = ""; }; + B3E6B8B32894B2F200CF98C7 /* Todo.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Todo.txt; sourceTree = ""; }; + B3E6B8B72894B2F200CF98C7 /* Sadistroids HSC NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Sadistroids HSC NTSC.bin"; sourceTree = ""; }; + B3E6B8B82894B2F200CF98C7 /* Pac-Man 8K HSC NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Pac-Man 8K HSC NTSC.bin"; sourceTree = ""; }; + B3E6B8B92894B2F200CF98C7 /* C.A.V.E. Apocalypse NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "C.A.V.E. Apocalypse NTSC.bin"; sourceTree = ""; }; + B3E6B8BA2894B2F200CF98C7 /* Cosmic Ark HSC NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Cosmic Ark HSC NTSC.bin"; sourceTree = ""; }; + B3E6B8BB2894B2F200CF98C7 /* Amoeba Jump HSC NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Amoeba Jump HSC NTSC.bin"; sourceTree = ""; }; + B3E6B8BC2894B2F200CF98C7 /* Cave 1K HSC NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Cave 1K HSC NTSC.bin"; sourceTree = ""; }; + B3E6B8BF2894B2F200CF98C7 /* t128.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = t128.bin; sourceTree = ""; }; + B3E6B8C02894B2F200CF98C7 /* t256.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = t256.bin; sourceTree = ""; }; + B3E6B8C12894B2F200CF98C7 /* menu_multicart128k.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = menu_multicart128k.bin; sourceTree = ""; }; + B3E6B8C32894B2F200CF98C7 /* Boulder Dash (Demo 2).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Boulder Dash (Demo 2).bin"; sourceTree = ""; }; + B3E6B8C52894B2F200CF98C7 /* badapple6-30-14.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "badapple6-30-14.bin"; sourceTree = ""; }; + B3E6B8C62894B2F300CF98C7 /* Andrew Davies early notBoulderDash demo (NTSC).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Andrew Davies early notBoulderDash demo (NTSC).bin"; sourceTree = ""; }; + B3E6B8C72894B2F300CF98C7 /* Andrew Davies early notBoulderDash demo (PAL).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Andrew Davies early notBoulderDash demo (PAL).bin"; sourceTree = ""; }; + B3E6B8C82894B2F300CF98C7 /* 3E Bankswitch Test (TIA @ $00).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "3E Bankswitch Test (TIA @ $00).bin"; sourceTree = ""; }; + B3E6B8C92894B2F300CF98C7 /* BadApple1_0.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = BadApple1_0.bin; sourceTree = ""; }; + B3E6B8CB2894B2F300CF98C7 /* MDM-test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "MDM-test.bin"; sourceTree = ""; }; + B3E6B8CC2894B2F300CF98C7 /* 208in1_MDMC_test_PAL-127games.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "208in1_MDMC_test_PAL-127games.bin"; sourceTree = ""; }; + B3E6B8CD2894B2F300CF98C7 /* arqsaida2.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = arqsaida2.bin; sourceTree = ""; }; + B3E6B8CE2894B2F300CF98C7 /* POP_MDMC_test_PAL_63gamees.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = POP_MDMC_test_PAL_63gamees.bin; sourceTree = ""; }; + B3E6B8D02894B2F300CF98C7 /* Fatal Run (NTSC prototype).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Fatal Run (NTSC prototype).bin"; sourceTree = ""; }; + B3E6B8D22894B2F300CF98C7 /* Space Rocks (2012-11-29) (NTSC) (Encore).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Space Rocks (2012-11-29) (NTSC) (Encore).bin"; sourceTree = ""; }; + B3E6B8D42894B2F300CF98C7 /* Time Pilot (Rentacom).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Time Pilot (Rentacom).bin"; sourceTree = ""; }; + B3E6B8D52894B2F300CF98C7 /* gingerUA.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = gingerUA.bin; sourceTree = ""; }; + B3E6B8D62894B2F300CF98C7 /* UA_Limited.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = UA_Limited.bin; sourceTree = ""; }; + B3E6B8D72894B2F300CF98C7 /* Vanguard (Rentacom).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Vanguard (Rentacom).bin"; sourceTree = ""; }; + B3E6B8D82894B2F300CF98C7 /* Gingerbread Man SEGA-controller.ua.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Gingerbread Man SEGA-controller.ua.bin"; sourceTree = ""; }; + B3E6B8D92894B2F300CF98C7 /* Pleiades.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = Pleiades.bin; sourceTree = ""; }; + B3E6B8DA2894B2F300CF98C7 /* Mickey (Digivision).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Mickey (Digivision).bin"; sourceTree = ""; }; + B3E6B8DB2894B2F300CF98C7 /* FunkyFish.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = FunkyFish.bin; sourceTree = ""; }; + B3E6B8DC2894B2F300CF98C7 /* Fathon (Digivision).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Fathon (Digivision).bin"; sourceTree = ""; }; + B3E6B8DE2894B2F300CF98C7 /* Pole Position (Mania).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Pole Position (Mania).bin"; sourceTree = ""; }; + B3E6B8DF2894B2F300CF98C7 /* Subterranea (Mania).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Subterranea (Mania).bin"; sourceTree = ""; }; + B3E6B8E02894B2F300CF98C7 /* Motocross (JVP).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Motocross (JVP).bin"; sourceTree = ""; }; + B3E6B8E22894B2F300CF98C7 /* DF_128k_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = DF_128k_test.bin; sourceTree = ""; }; + B3E6B8E42894B2F300CF98C7 /* testpattern.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = testpattern.bin; sourceTree = ""; }; + B3E6B8E52894B2F300CF98C7 /* 20centuryfox.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 20centuryfox.bin; sourceTree = ""; }; + B3E6B8E62894B2F300CF98C7 /* street.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = street.bin; sourceTree = ""; }; + B3E6B8E72894B2F300CF98C7 /* cronkite.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cronkite.bin; sourceTree = ""; }; + B3E6B8E82894B2F300CF98C7 /* lion.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = lion.bin; sourceTree = ""; }; + B3E6B8E92894B2F300CF98C7 /* dancer.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = dancer.bin; sourceTree = ""; }; + B3E6B8EA2894B2F300CF98C7 /* output_circle.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = output_circle.bin; sourceTree = ""; }; + B3E6B8EC2894B2F300CF98C7 /* EFSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = EFSC.bin; sourceTree = ""; }; + B3E6B8ED2894B2F300CF98C7 /* 64kSC.EFSC_tagged.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 64kSC.EFSC_tagged.bin; sourceTree = ""; }; + B3E6B8EE2894B2F300CF98C7 /* Distopia0.95_NTSC.bas.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = Distopia0.95_NTSC.bas.bin; sourceTree = ""; }; + B3E6B8F02894B2F300CF98C7 /* AVGN KO Boxing 2009-09-06 NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "AVGN KO Boxing 2009-09-06 NTSC.bin"; sourceTree = ""; }; + B3E6B8F12894B2F300CF98C7 /* Asteroids Attack (2020) (Demo, Game Select).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Asteroids Attack (2020) (Demo, Game Select).bin"; sourceTree = ""; }; + B3E6B8F32894B2F300CF98C7 /* Power Play Arcade Video Game Album, The - Ghost Attack, Genesis, Havoc (1983) (Amiga) (1110) (Prototype).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Power Play Arcade Video Game Album, The - Ghost Attack, Genesis, Havoc (1983) (Amiga) (1110) (Prototype).bin"; sourceTree = ""; }; + B3E6B8F52894B2F300CF98C7 /* fa2plus_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = fa2plus_test.bin; sourceTree = ""; }; + B3E6B8F62894B2F300CF98C7 /* Star Castle Arcade (165, Harmony).cu.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Star Castle Arcade (165, Harmony).cu.bin"; sourceTree = ""; }; + B3E6B8F82894B2F300CF98C7 /* 3E+rom.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "3E+rom.bin"; sourceTree = ""; }; + B3E6B8F92894B2F300CF98C7 /* 3E+ram_NI.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "3E+ram_NI.bin"; sourceTree = ""; }; + B3E6B8FA2894B2F300CF98C7 /* chess20200911_4PQ8_FAIL (works now).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "chess20200911_4PQ8_FAIL (works now).bin"; sourceTree = ""; }; + B3E6B8FB2894B2F300CF98C7 /* 3E+ram_I.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "3E+ram_I.bin"; sourceTree = ""; }; + B3E6B8FC2894B2F300CF98C7 /* 3E+ram.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "3E+ram.bin"; sourceTree = ""; }; + B3E6B8FE2894B2F300CF98C7 /* Decathlon (1983) (Activision) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Decathlon (1983) (Activision) [!].a26"; sourceTree = ""; }; + B3E6B8FF2894B2F300CF98C7 /* Thwocker (Activision) (Prototype) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Thwocker (Activision) (Prototype) [!].a26"; sourceTree = ""; }; + B3E6B9002894B2F300CF98C7 /* Space Shuttle (1983) (Activision) [FE].bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Space Shuttle (1983) (Activision) [FE].bin"; sourceTree = ""; }; + B3E6B9022894B2F300CF98C7 /* Robot Tank (1983) (Activision) (PAL) [b1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Robot Tank (1983) (Activision) (PAL) [b1].a26"; sourceTree = ""; }; + B3E6B9032894B2F300CF98C7 /* Decathlon (1983) (Activision) (PAL) [b1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Decathlon (1983) (Activision) (PAL) [b1].a26"; sourceTree = ""; }; + B3E6B9042894B2F300CF98C7 /* Decathlon (1983) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Decathlon (1983) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9052894B2F300CF98C7 /* Robot Tank TV by Thomas Jentzsch (2 Joystick Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Robot Tank TV by Thomas Jentzsch (2 Joystick Hack).a26"; sourceTree = ""; }; + B3E6B9062894B2F300CF98C7 /* Robot Tank (1983) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Robot Tank (1983) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9072894B2F300CF98C7 /* Robot Tank (1983) (Activision) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Robot Tank (1983) (Activision) [!].a26"; sourceTree = ""; }; + B3E6B9092894B2F300CF98C7 /* x07.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = x07.bin; sourceTree = ""; }; + B3E6B90A2894B2F300CF98C7 /* X07 Bankswitching Conversion.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "X07 Bankswitching Conversion.bin"; sourceTree = ""; }; + B3E6B90C2894B2F300CF98C7 /* 0840_EconoBanking.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 0840_EconoBanking.bin; sourceTree = ""; }; + B3E6B90D2894B2F300CF98C7 /* Toyshop Trouble (0840) (2008) (John Payson, Zach Matley, Bob Montgomery, Thomas Jentzsch, Nathan Strum).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Toyshop Trouble (0840) (2008) (John Payson, Zach Matley, Bob Montgomery, Thomas Jentzsch, Nathan Strum).bin"; sourceTree = ""; }; + B3E6B90F2894B2F300CF98C7 /* Pursuit of the Pink Panther (Probe) (Prototype) [bad dump].bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Pursuit of the Pink Panther (Probe) (Prototype) [bad dump].bin"; sourceTree = ""; }; + B3E6B9102894B2F300CF98C7 /* Pursuit of the Pink Panther (Probe) (Prototype) [fixed].bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Pursuit of the Pink Panther (Probe) (Prototype) [fixed].bin"; sourceTree = ""; }; + B3E6B9122894B2F300CF98C7 /* 128bus_20160903.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 128bus_20160903.bin; sourceTree = ""; }; + B3E6B9132894B2F300CF98C7 /* test_bus_NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test_bus_NTSC.bin; sourceTree = ""; }; + B3E6B9142894B2F300CF98C7 /* 128bus_20170120.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 128bus_20170120.bin; sourceTree = ""; }; + B3E6B9152894B2F300CF98C7 /* test0_stuff.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test0_stuff.bin; sourceTree = ""; }; + B3E6B9162894B2F300CF98C7 /* rpg_20161231_NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = rpg_20161231_NTSC.bin; sourceTree = ""; }; + B3E6B9172894B2F300CF98C7 /* test3_bigscroll.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test3_bigscroll.bin; sourceTree = ""; }; + B3E6B9182894B2F300CF98C7 /* bus3_test2_speech.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bus3_test2_speech.bin; sourceTree = ""; }; + B3E6B9192894B2F300CF98C7 /* test_20161231.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test_20161231.bin; sourceTree = ""; }; + B3E6B91A2894B2F300CF98C7 /* bus3_test3_bigscroll.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bus3_test3_bigscroll.bin; sourceTree = ""; }; + B3E6B91B2894B2F300CF98C7 /* test1_music.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test1_music.bin; sourceTree = ""; }; + B3E6B91C2894B2F300CF98C7 /* parrot_bus_NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = parrot_bus_NTSC.bin; sourceTree = ""; }; + B3E6B91D2894B2F300CF98C7 /* rpg_20161019.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = rpg_20161019.bin; sourceTree = ""; }; + B3E6B91E2894B2F300CF98C7 /* bus3_test4_xevious.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bus3_test4_xevious.bin; sourceTree = ""; }; + B3E6B91F2894B2F300CF98C7 /* bus3_test5_fastjmp.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bus3_test5_fastjmp.bin; sourceTree = ""; }; + B3E6B9202894B2F300CF98C7 /* rpg_20161020.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = rpg_20161020.bin; sourceTree = ""; }; + B3E6B9212894B2F300CF98C7 /* bus3_test0_stuff.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bus3_test0_stuff.bin; sourceTree = ""; }; + B3E6B9222894B2F300CF98C7 /* draconian_20161102.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = draconian_20161102.bin; sourceTree = ""; }; + B3E6B9232894B2F300CF98C7 /* test2_speech.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test2_speech.bin; sourceTree = ""; }; + B3E6B9242894B2F300CF98C7 /* parrot_20161231_NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = parrot_20161231_NTSC.bin; sourceTree = ""; }; + B3E6B9252894B2F300CF98C7 /* test4_xevious.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test4_xevious.bin; sourceTree = ""; }; + B3E6B9262894B2F300CF98C7 /* bus3_test1_music.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bus3_test1_music.bin; sourceTree = ""; }; + B3E6B9272894B2F300CF98C7 /* 128chronocolour_20170101.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 128chronocolour_20170101.bin; sourceTree = ""; }; + B3E6B9292894B2F300CF98C7 /* DFSC_128k_ramtest.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = DFSC_128k_ramtest.bin; sourceTree = ""; }; + B3E6B92A2894B2F300CF98C7 /* penult-demo-9-NTSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "penult-demo-9-NTSC.bin"; sourceTree = ""; }; + B3E6B92C2894B2F300CF98C7 /* SB_256K.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = SB_256K.asm; sourceTree = ""; }; + B3E6B92D2894B2F300CF98C7 /* SB_128K.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = SB_128K.asm; sourceTree = ""; }; + B3E6B92E2894B2F300CF98C7 /* F6.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F6.bin; sourceTree = ""; }; + B3E6B92F2894B2F300CF98C7 /* F4.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = F4.asm; sourceTree = ""; }; + B3E6B9302894B2F300CF98C7 /* test.lst */ = {isa = PBXFileReference; lastKnownFileType = text; path = test.lst; sourceTree = ""; }; + B3E6B9312894B2F300CF98C7 /* SB_256K.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = SB_256K.bin; sourceTree = ""; }; + B3E6B9322894B2F300CF98C7 /* SB_128K.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = SB_128K.bin; sourceTree = ""; }; + B3E6B9332894B2F300CF98C7 /* F6.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = F6.asm; sourceTree = ""; }; + B3E6B9342894B2F300CF98C7 /* F4.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F4.bin; sourceTree = ""; }; + B3E6B9352894B2F300CF98C7 /* 0840_EconoBanking.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 0840_EconoBanking.bin; sourceTree = ""; }; + B3E6B9362894B2F300CF98C7 /* UA_Limited.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = UA_Limited.asm; sourceTree = ""; }; + B3E6B9372894B2F300CF98C7 /* 0840_EconoBanking.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = 0840_EconoBanking.asm; sourceTree = ""; }; + B3E6B9382894B2F300CF98C7 /* UA_Limited.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = UA_Limited.bin; sourceTree = ""; }; + B3E6B9392894B2F300CF98C7 /* F0_MegaBoy.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F0_MegaBoy.bin; sourceTree = ""; }; + B3E6B93A2894B2F300CF98C7 /* F0_MegaBoy.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = F0_MegaBoy.asm; sourceTree = ""; }; + B3E6B93B2894B2F300CF98C7 /* vcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vcs.h; sourceTree = ""; }; + B3E6B93C2894B2F300CF98C7 /* EFSC.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = EFSC.asm; sourceTree = ""; }; + B3E6B93D2894B2F300CF98C7 /* F4SC.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = F4SC.asm; sourceTree = ""; }; + B3E6B93E2894B2F300CF98C7 /* macro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macro.h; sourceTree = ""; }; + B3E6B93F2894B2F300CF98C7 /* F6SC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F6SC.bin; sourceTree = ""; }; + B3E6B9402894B2F300CF98C7 /* xaa */ = {isa = PBXFileReference; lastKnownFileType = file; path = xaa; sourceTree = ""; }; + B3E6B9412894B2F300CF98C7 /* EFSC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = EFSC.bin; sourceTree = ""; }; + B3E6B9422894B2F300CF98C7 /* F4SC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F4SC.bin; sourceTree = ""; }; + B3E6B9432894B2F300CF98C7 /* F6SC.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = F6SC.asm; sourceTree = ""; }; + B3E6B9442894B2F300CF98C7 /* FA_CBS+RAM.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "FA_CBS+RAM.bin"; sourceTree = ""; }; + B3E6B9452894B2F300CF98C7 /* x07.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = x07.bin; sourceTree = ""; }; + B3E6B9462894B2F300CF98C7 /* F8SC.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F8SC.bin; sourceTree = ""; }; + B3E6B9472894B2F300CF98C7 /* x07.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = x07.asm; sourceTree = ""; }; + B3E6B9482894B2F300CF98C7 /* FA_CBS+RAM.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = "FA_CBS+RAM.asm"; sourceTree = ""; }; + B3E6B9492894B2F300CF98C7 /* F8SC.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = F8SC.asm; sourceTree = ""; }; + B3E6B94A2894B2F300CF98C7 /* test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test.bin; sourceTree = ""; }; + B3E6B94B2894B2F300CF98C7 /* EF.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = EF.asm; sourceTree = ""; }; + B3E6B94C2894B2F300CF98C7 /* E0.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = E0.asm; sourceTree = ""; }; + B3E6B94D2894B2F300CF98C7 /* EF.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = EF.bin; sourceTree = ""; }; + B3E6B94E2894B2F300CF98C7 /* E0.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = E0.bin; sourceTree = ""; }; + B3E6B94F2894B2F300CF98C7 /* xab */ = {isa = PBXFileReference; lastKnownFileType = file; path = xab; sourceTree = ""; }; + B3E6B9502894B2F300CF98C7 /* F8.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F8.bin; sourceTree = ""; }; + B3E6B9512894B2F300CF98C7 /* 3F.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = 3F.asm; sourceTree = ""; }; + B3E6B9522894B2F300CF98C7 /* E7.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = E7.asm; sourceTree = ""; }; + B3E6B9532894B2F300CF98C7 /* 3F.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 3F.bin; sourceTree = ""; }; + B3E6B9542894B2F400CF98C7 /* E7.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = E7.bin; sourceTree = ""; }; + B3E6B9552894B2F400CF98C7 /* F8.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = F8.asm; sourceTree = ""; }; + B3E6B9572894B2F400CF98C7 /* Stargate (1984) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stargate (1984) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9582894B2F400CF98C7 /* Defender II (1984) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Defender II (1984) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9592894B2F400CF98C7 /* Elevator Action (Atari) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Elevator Action (Atari) (Prototype).a26"; sourceTree = ""; }; + B3E6B95A2894B2F400CF98C7 /* Stargate (1984) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stargate (1984) (Atari).a26"; sourceTree = ""; }; + B3E6B95B2894B2F400CF98C7 /* Defender II (1984) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Defender II (1984) (Atari).a26"; sourceTree = ""; }; + B3E6B95D2894B2F400CF98C7 /* draconian_20170314.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = draconian_20170314.bin; sourceTree = ""; }; + B3E6B95E2894B2F400CF98C7 /* cdf1_music.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cdf1_music.bin; sourceTree = ""; }; + B3E6B95F2894B2F400CF98C7 /* cdf3_fastjump.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cdf3_fastjump.bin; sourceTree = ""; }; + B3E6B9602894B2F400CF98C7 /* draconian_20170309.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = draconian_20170309.bin; sourceTree = ""; }; + B3E6B9612894B2F400CF98C7 /* cdf0_fast.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cdf0_fast.bin; sourceTree = ""; }; + B3E6B9622894B2F400CF98C7 /* cdf2_speech.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cdf2_speech.bin; sourceTree = ""; }; + B3E6B9632894B2F400CF98C7 /* draconian_20170318.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = draconian_20170318.bin; sourceTree = ""; }; + B3E6B9652894B2F400CF98C7 /* River Patrol (1984) (Tigervision).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "River Patrol (1984) (Tigervision).a26"; sourceTree = ""; }; + B3E6B9662894B2F400CF98C7 /* Springer (1982) (Tigervision).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Springer (1982) (Tigervision).a26"; sourceTree = ""; }; + B3E6B9672894B2F400CF98C7 /* Polaris (1983) (Tigervision) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Polaris (1983) (Tigervision) (PAL).a26"; sourceTree = ""; }; + B3E6B9682894B2F400CF98C7 /* Miner 2049er Volume II (1983) (Tigervision) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Miner 2049er Volume II (1983) (Tigervision) (PAL).a26"; sourceTree = ""; }; + B3E6B9692894B2F400CF98C7 /* Miner 2049er (1982) (Tigervision).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Miner 2049er (1982) (Tigervision).a26"; sourceTree = ""; }; + B3E6B96A2894B2F400CF98C7 /* badapple6-25-14.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "badapple6-25-14.bin"; sourceTree = ""; }; + B3E6B96B2894B2F400CF98C7 /* Polaris (1983) (Thomas Jentzsch).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Polaris (1983) (Thomas Jentzsch).a26"; sourceTree = ""; }; + B3E6B96C2894B2F400CF98C7 /* Polaris (1983) (Tigervision).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Polaris (1983) (Tigervision).a26"; sourceTree = ""; }; + B3E6B96D2894B2F400CF98C7 /* Espial (1984) (Tigervision).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Espial (1984) (Tigervision).a26"; sourceTree = ""; }; + B3E6B96E2894B2F400CF98C7 /* Untitled.a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = Untitled.a26; sourceTree = ""; }; + B3E6B96F2894B2F400CF98C7 /* Espial (1984) (Tigervision) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Espial (1984) (Tigervision) (PAL).a26"; sourceTree = ""; }; + B3E6B9712894B2F400CF98C7 /* 2 in 1 - Motocross - Pole Position.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "2 in 1 - Motocross - Pole Position.bin"; sourceTree = ""; }; + B3E6B9722894B2F400CF98C7 /* 16 in 1 Digitel Brazil (Mania).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "16 in 1 Digitel Brazil (Mania).bin"; sourceTree = ""; }; + B3E6B9732894B2F400CF98C7 /* 4 Game in One - Rodeo Champ, Open Sesame, Bobby Is Going Home, Festival (1983) (Bit Corporation) (P460) (PAL).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "4 Game in One - Rodeo Champ, Open Sesame, Bobby Is Going Home, Festival (1983) (Bit Corporation) (P460) (PAL).bin"; sourceTree = ""; }; + B3E6B9742894B2F400CF98C7 /* Atari 2600 Multicart (16x8K. F8_E0).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Atari 2600 Multicart (16x8K. F8_E0).bin"; sourceTree = ""; }; + B3E6B9752894B2F400CF98C7 /* 2 in 1 - Phoenix - H.E.R.O. (Rentacom).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "2 in 1 - Phoenix - H.E.R.O. (Rentacom).bin"; sourceTree = ""; }; + B3E6B9762894B2F400CF98C7 /* 256 in 1 - Game Over 2600 (Megatronix).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "256 in 1 - Game Over 2600 (Megatronix).bin"; sourceTree = ""; }; + B3E6B9772894B2F400CF98C7 /* 8 in 1 (Supergames 8 in 1) (01-16-92) (Atari) (CX26193) (Prototype).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "8 in 1 (Supergames 8 in 1) (01-16-92) (Atari) (CX26193) (Prototype).bin"; sourceTree = ""; }; + B3E6B9782894B2F400CF98C7 /* 4 in 1 (Logitachi).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "4 in 1 (Logitachi).bin"; sourceTree = ""; }; + B3E6B9792894B2F400CF98C7 /* 2 in 1 - Time Pilot - Vanguard (Rentacom).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "2 in 1 - Time Pilot - Vanguard (Rentacom).bin"; sourceTree = ""; }; + B3E6B97A2894B2F400CF98C7 /* 2 in 1 - Kung Fu Master (Irem, Activision) - H.E.R.O. (Mania RJ).BIN */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "2 in 1 - Kung Fu Master (Irem, Activision) - H.E.R.O. (Mania RJ).BIN"; sourceTree = ""; }; + B3E6B97C2894B2F400CF98C7 /* Super Football (1988) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Super Football (1988) (Atari).a26"; sourceTree = ""; }; + B3E6B97D2894B2F400CF98C7 /* Secret Quest (1989) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Secret Quest (1989) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B97E2894B2F400CF98C7 /* Crystal Castles (1984) (Atari) (NTSC) (Prototype) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Crystal Castles (1984) (Atari) (NTSC) (Prototype) [!].a26"; sourceTree = ""; }; + B3E6B97F2894B2F400CF98C7 /* Radar Lock (1989) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Radar Lock (1989) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9802894B2F400CF98C7 /* Crystal Castles (1984) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Crystal Castles (1984) (Atari).a26"; sourceTree = ""; }; + B3E6B9812894B2F400CF98C7 /* Radar Lock (1989) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Radar Lock (1989) (Atari).a26"; sourceTree = ""; }; + B3E6B9822894B2F400CF98C7 /* Sprint Master (1988) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sprint Master (1988) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9832894B2F400CF98C7 /* Jr. Pac-Man (1986) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jr. Pac-Man (1986) (Atari) [!].a26"; sourceTree = ""; }; + B3E6B9842894B2F400CF98C7 /* Dark Chambers (1988) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dark Chambers (1988) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9852894B2F400CF98C7 /* Dig Dug (V2) (1983) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dig Dug (V2) (1983) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9862894B2F400CF98C7 /* Crystal Castles (1984) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Crystal Castles (1984) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9872894B2F400CF98C7 /* Sprint Master (1988) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sprint Master (1988) (Atari).a26"; sourceTree = ""; }; + B3E6B9882894B2F400CF98C7 /* Dark Chambers (1988) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dark Chambers (1988) (Atari).a26"; sourceTree = ""; }; + B3E6B9892894B2F400CF98C7 /* Dig Dug (V1) (1983) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dig Dug (V1) (1983) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B98A2894B2F400CF98C7 /* Jr. Pac-Man (1984) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jr. Pac-Man (1984) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B98B2894B2F400CF98C7 /* Millipede (1984) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Millipede (1984) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B98C2894B2F400CF98C7 /* Millipede (1984) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Millipede (1984) (Atari).a26"; sourceTree = ""; }; + B3E6B98D2894B2F400CF98C7 /* Crystal Castles (1984) (Atari) [p1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Crystal Castles (1984) (Atari) [p1].a26"; sourceTree = ""; }; + B3E6B98E2894B2F400CF98C7 /* Secret Quest (1989) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Secret Quest (1989) (Atari).a26"; sourceTree = ""; }; + B3E6B98F2894B2F400CF98C7 /* Jr. Pac-Man (1984) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jr. Pac-Man (1984) (Atari) [!].a26"; sourceTree = ""; }; + B3E6B9902894B2F400CF98C7 /* Dig Dug (1983) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Dig Dug (1983) (Atari).a26"; sourceTree = ""; }; + B3E6B9912894B2F400CF98C7 /* Super Football (1988) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Super Football (1988) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9932894B2F400CF98C7 /* Pong256B.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = Pong256B.bin; sourceTree = ""; }; + B3E6B9942894B2F400CF98C7 /* 2k.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 2k.bin; sourceTree = ""; }; + B3E6B9952894B2F400CF98C7 /* Pong512B.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = Pong512B.bin; sourceTree = ""; }; + B3E6B9962894B2F400CF98C7 /* 4k.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 4k.bin; sourceTree = ""; }; + B3E6B9972894B2F400CF98C7 /* Harte32.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = Harte32.bin; sourceTree = ""; }; + B3E6B9982894B2F400CF98C7 /* Vong_1K.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = Vong_1K.bin; sourceTree = ""; }; + B3E6B99A2894B2F400CF98C7 /* BF_256k_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = BF_256k_test.bin; sourceTree = ""; }; + B3E6B99C2894B2F400CF98C7 /* sample256.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = sample256.bin; sourceTree = ""; }; + B3E6B99D2894B2F400CF98C7 /* red512.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = red512.bin; sourceTree = ""; }; + B3E6B99E2894B2F400CF98C7 /* zev64.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = zev64.bin; sourceTree = ""; }; + B3E6B9A02894B2F400CF98C7 /* Dragonstomper (1982) (Starpath).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Dragonstomper (1982) (Starpath).bin"; sourceTree = ""; }; + B3E6B9A12894B2F400CF98C7 /* Official Frogger, The (1983) (Starpath).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Official Frogger, The (1983) (Starpath).bin"; sourceTree = ""; }; + B3E6B9A22894B2F400CF98C7 /* Escape from the Mindmaster (1982) (Arcadia).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Escape from the Mindmaster (1982) (Arcadia).bin"; sourceTree = ""; }; + B3E6B9A32894B2F400CF98C7 /* Party Mix (1983) (Arcadia).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Party Mix (1983) (Arcadia).bin"; sourceTree = ""; }; + B3E6B9A42894B2F400CF98C7 /* Phaser Patrol (1982) (Arcadia).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Phaser Patrol (1982) (Arcadia).bin"; sourceTree = ""; }; + B3E6B9A62894B2F400CF98C7 /* BFSC_256k_ramtest.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = BFSC_256k_ramtest.bin; sourceTree = ""; }; + B3E6B9A82894B2F400CF98C7 /* RobotZed_07.bas.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = RobotZed_07.bas.bin; sourceTree = ""; }; + B3E6B9A92894B2F400CF98C7 /* megaboyEF.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = megaboyEF.bin; sourceTree = ""; }; + B3E6B9AA2894B2F400CF98C7 /* 64kbb.EFEF_tagged.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 64kbb.EFEF_tagged.bin; sourceTree = ""; }; + B3E6B9AB2894B2F400CF98C7 /* EF.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = EF.bin; sourceTree = ""; }; + B3E6B9AC2894B2F400CF98C7 /* Zippy_V2_FINAL_NTSC.bas.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = Zippy_V2_FINAL_NTSC.bas.bin; sourceTree = ""; }; + B3E6B9AE2894B2F400CF98C7 /* ColorGotcha2600.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = ColorGotcha2600.bin; sourceTree = ""; }; + B3E6B9AF2894B2F400CF98C7 /* Magicard Sample Program 1 - Display of Character Set $f100 (1982) (CommaVid).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Magicard Sample Program 1 - Display of Character Set $f100 (1982) (CommaVid).a26"; sourceTree = ""; }; + B3E6B9B02894B2F400CF98C7 /* Magicard Sample Program 5 - Life $f15e (1982) (CommaVid).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Magicard Sample Program 5 - Life $f15e (1982) (CommaVid).a26"; sourceTree = ""; }; + B3E6B9B12894B2F400CF98C7 /* Magicard Sample Program 2 - Memo Pad $f100 (1982) (CommaVid).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Magicard Sample Program 2 - Memo Pad $f100 (1982) (CommaVid).a26"; sourceTree = ""; }; + B3E6B9B22894B2F400CF98C7 /* Video Life (CommaVid).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Video Life (CommaVid).a26"; sourceTree = ""; }; + B3E6B9B32894B2F400CF98C7 /* Magicard (CommaVid).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Magicard (CommaVid).a26"; sourceTree = ""; }; + B3E6B9B42894B2F400CF98C7 /* Magicard Sample Program 4 - Generating Your Own Display $f200 (1982) (CommaVid).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Magicard Sample Program 4 - Generating Your Own Display $f200 (1982) (CommaVid).a26"; sourceTree = ""; }; + B3E6B9B52894B2F400CF98C7 /* Magicard Sample Program 3 - Target Practice $f100 (1982) (CommaVid).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Magicard Sample Program 3 - Target Practice $f100 (1982) (CommaVid).a26"; sourceTree = ""; }; + B3E6B9B72894B2F400CF98C7 /* rr4.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = rr4.bin; sourceTree = ""; }; + B3E6B9B82894B2F400CF98C7 /* test4a50fix.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test4a50fix.bin; sourceTree = ""; }; + B3E6B9B92894B2F400CF98C7 /* rr3.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = rr3.bin; sourceTree = ""; }; + B3E6B9BA2894B2F400CF98C7 /* Ruby Runner 4A50.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Ruby Runner 4A50.bin"; sourceTree = ""; }; + B3E6B9BB2894B2F400CF98C7 /* spin4a50.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = spin4a50.bin; sourceTree = ""; }; + B3E6B9BC2894B2F400CF98C7 /* test_includes_file.bas.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test_includes_file.bas.bin; sourceTree = ""; }; + B3E6B9BE2894B2F400CF98C7 /* MegaBoy (Dynacom).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "MegaBoy (Dynacom).bin"; sourceTree = ""; }; + B3E6B9BF2894B2F400CF98C7 /* F0_MegaBoy.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = F0_MegaBoy.bin; sourceTree = ""; }; + B3E6B9C12894B2F400CF98C7 /* CompuMate (1983) (Spectravideo).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "CompuMate (1983) (Spectravideo).bin"; sourceTree = ""; }; + B3E6B9C32894B2F400CF98C7 /* Mountain King (1983) (CBS Electronics).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Mountain King (1983) (CBS Electronics).bin"; sourceTree = ""; }; + B3E6B9C52894B2F400CF98C7 /* chetiry_NTSC_STELLA.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = chetiry_NTSC_STELLA.bin; sourceTree = ""; }; + B3E6B9C72894B2F400CF98C7 /* 4KSC_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 4KSC_test.bin; sourceTree = ""; }; + B3E6B9C92894B2F400CF98C7 /* Rampage! (1989) (Activision) [b1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Rampage! (1989) (Activision) [b1].a26"; sourceTree = ""; }; + B3E6B9CA2894B2F400CF98C7 /* California Games (1988) (Epyx) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "California Games (1988) (Epyx) [!].a26"; sourceTree = ""; }; + B3E6B9CB2894B2F400CF98C7 /* Solaris (1986) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Solaris (1986) (Atari).a26"; sourceTree = ""; }; + B3E6B9CC2894B2F400CF98C7 /* Garfield (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Garfield (Prototype).a26"; sourceTree = ""; }; + B3E6B9CD2894B2F400CF98C7 /* Pete Rose Baseball (1988) (Absolute).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Pete Rose Baseball (1988) (Absolute).a26"; sourceTree = ""; }; + B3E6B9CE2894B2F400CF98C7 /* Midnight Magic (1984) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Midnight Magic (1984) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9CF2894B2F400CF98C7 /* Tomcat - The F-14 Flight Simulator (2002) (Skyworks) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tomcat - The F-14 Flight Simulator (2002) (Skyworks) [!].a26"; sourceTree = ""; }; + B3E6B9D02894B2F400CF98C7 /* Battlezone TC by Thomas Jentzsch (2 joystick Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Battlezone TC by Thomas Jentzsch (2 joystick Hack).a26"; sourceTree = ""; }; + B3E6B9D12894B2F400CF98C7 /* Super Box (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Super Box (CCE).a26"; sourceTree = ""; }; + B3E6B9D22894B2F400CF98C7 /* Sentinel (1990) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sentinel (1990) (Atari).a26"; sourceTree = ""; }; + B3E6B9D32894B2F400CF98C7 /* Double Dragon (1989) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Double Dragon (1989) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9D42894B2F400CF98C7 /* Solaris (1986) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Solaris (1986) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9D52894B2F400CF98C7 /* California Games (1988) (Epyx) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "California Games (1988) (Epyx) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9D62894B2F400CF98C7 /* Rampage! (1989) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Rampage! (1989) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9D72894B2F400CF98C7 /* RealSports Boxing (1987) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "RealSports Boxing (1987) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9D92894B2F400CF98C7 /* Acid Drop (1992) (Salu) (PAL) [b1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Acid Drop (1992) (Salu) (PAL) [b1].a26"; sourceTree = ""; }; + B3E6B9DA2894B2F400CF98C7 /* RealSports Boxing (1987) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "RealSports Boxing (1987) (Atari).a26"; sourceTree = ""; }; + B3E6B9DB2894B2F400CF98C7 /* Midnight Magic (1984) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Midnight Magic (1984) (Atari).a26"; sourceTree = ""; }; + B3E6B9DC2894B2F400CF98C7 /* Acid Drop (1992) (Salu) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Acid Drop (1992) (Salu) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9DD2894B2F400CF98C7 /* Summer Games (1987) (Epyx) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Summer Games (1987) (Epyx) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9DE2894B2F400CF98C7 /* Double Dragon (1989) (Activision).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Double Dragon (1989) (Activision).a26"; sourceTree = ""; }; + B3E6B9DF2894B2F400CF98C7 /* H.E.R.O. (1984) (Activision) [o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "H.E.R.O. (1984) (Activision) [o1].a26"; sourceTree = ""; }; + B3E6B9E02894B2F400CF98C7 /* Tomcat - The F-14 Flight Simulator (1988) (Absolute) [a1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tomcat - The F-14 Flight Simulator (1988) (Absolute) [a1].a26"; sourceTree = ""; }; + B3E6B9E12894B2F400CF98C7 /* Tomcat - The F-14 Flight Simulator (1988) (Absolute) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tomcat - The F-14 Flight Simulator (1988) (Absolute) [!].a26"; sourceTree = ""; }; + B3E6B9E22894B2F400CF98C7 /* Rampage! (1989) (Activision) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Rampage! (1989) (Activision) [!].a26"; sourceTree = ""; }; + B3E6B9E32894B2F400CF98C7 /* Summer Games (1987) (Epyx).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Summer Games (1987) (Epyx).a26"; sourceTree = ""; }; + B3E6B9E62894B2F400CF98C7 /* Bump 'N' Jump (1983) (Mattel) [b1].a26 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Bump 'N' Jump (1983) (Mattel) [b1].a26"; sourceTree = ""; }; + B3E6B9E72894B2F400CF98C7 /* Elite Demo v1.0 (NTSC).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Elite Demo v1.0 (NTSC).bin"; sourceTree = ""; }; + B3E6B9E82894B2F400CF98C7 /* Bump 'n' Jump (1983) (M Network).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Bump 'n' Jump (1983) (M Network).bin"; sourceTree = ""; }; + B3E6B9E92894B2F500CF98C7 /* BurgerTime (1983) (M Network) (12K).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "BurgerTime (1983) (M Network) (12K).bin"; sourceTree = ""; }; + B3E6B9EA2894B2F500CF98C7 /* fruitcake_22Oct09.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = fruitcake_22Oct09.bin; sourceTree = ""; }; + B3E6B9EB2894B2F500CF98C7 /* Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack).a26"; sourceTree = ""; }; + B3E6B9EC2894B2F500CF98C7 /* Burgertime (1982) (Mattel).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Burgertime (1982) (Mattel).a26"; sourceTree = ""; }; + B3E6B9ED2894B2F500CF98C7 /* fruitcake29Oct09.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = fruitcake29Oct09.bin; sourceTree = ""; }; + B3E6B9EE2894B2F500CF98C7 /* Masters of the Universe - The Power of He-Man (1983) (Mattel).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Masters of the Universe - The Power of He-Man (1983) (Mattel).a26"; sourceTree = ""; }; + B3E6B9F02894B2F500CF98C7 /* Joust (1982) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Joust (1982) (Atari).a26"; sourceTree = ""; }; + B3E6B9F12894B2F500CF98C7 /* Battlezone (1983) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Battlezone (1983) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9F22894B2F500CF98C7 /* Centipede (1982) (Atari) (Prototype) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Centipede (1982) (Atari) (Prototype) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9F32894B2F500CF98C7 /* Spy Hunter (1983) (Sega) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Spy Hunter (1983) (Sega) [!].a26"; sourceTree = ""; }; + B3E6B9F42894B2F500CF98C7 /* Raiders of the Lost Ark (1982) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raiders of the Lost Ark (1982) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9F52894B2F500CF98C7 /* Raiders of the Lost Ark (1982) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raiders of the Lost Ark (1982) (Atari).a26"; sourceTree = ""; }; + B3E6B9F62894B2F500CF98C7 /* Asteroids DC+ by Thomas Jentzsch (Asteroids Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids DC+ by Thomas Jentzsch (Asteroids Hack).a26"; sourceTree = ""; }; + B3E6B9F72894B2F500CF98C7 /* Cyber Goth Galaxian by Manuel Polik (Galaxian Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Cyber Goth Galaxian by Manuel Polik (Galaxian Hack).a26"; sourceTree = ""; }; + B3E6B9F82894B2F500CF98C7 /* Asteroids (1979) (Atari) (PAL) [a2][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids (1979) (Atari) (PAL) [a2][!].a26"; sourceTree = ""; }; + B3E6B9F92894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Ms. Pac-Man (1982) (Atari).a26"; sourceTree = ""; }; + B3E6B9FA2894B2F500CF98C7 /* Kung Fu Master (1984) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kung Fu Master (1984) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9FB2894B2F500CF98C7 /* Asteroids SS (Asteroids Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids SS (Asteroids Hack).a26"; sourceTree = ""; }; + B3E6B9FC2894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Ms. Pac-Man (1982) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9FD2894B2F500CF98C7 /* Joust (1982) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Joust (1982) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6B9FE2894B2F500CF98C7 /* Galaxian (1983) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Galaxian (1983) (Atari) [!].a26"; sourceTree = ""; }; + B3E6B9FF2894B2F500CF98C7 /* Phoenix (1982) (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Phoenix (1982) (CCE).a26"; sourceTree = ""; }; + B3E6BA002894B2F500CF98C7 /* Jungle Hunt (1982) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jungle Hunt (1982) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA012894B2F500CF98C7 /* Galaxian (1983) (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Galaxian (1983) (CCE).a26"; sourceTree = ""; }; + B3E6BA022894B2F500CF98C7 /* Aquaventure (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Aquaventure (CCE).a26"; sourceTree = ""; }; + B3E6BA032894B2F500CF98C7 /* Battlezone (1983) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Battlezone (1983) (Atari) [!].a26"; sourceTree = ""; }; + B3E6BA042894B2F500CF98C7 /* Jungle Hunt (1982) (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jungle Hunt (1982) (CCE).a26"; sourceTree = ""; }; + B3E6BA052894B2F500CF98C7 /* Asteroids (1979) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids (1979) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA062894B2F500CF98C7 /* Vanguard (1982) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Vanguard (1982) (Atari).a26"; sourceTree = ""; }; + B3E6BA072894B2F500CF98C7 /* Vanguard (1982) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Vanguard (1982) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA082894B2F500CF98C7 /* Kung Fu Master (1984) (Activision) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kung Fu Master (1984) (Activision) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA092894B2F500CF98C7 /* Mr. Roboto by Paul Slocum (Berzerk Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Mr. Roboto by Paul Slocum (Berzerk Hack).a26"; sourceTree = ""; }; + B3E6BA0A2894B2F500CF98C7 /* Galaxian (1983) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Galaxian (1983) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA0B2894B2F500CF98C7 /* Asteroids 2 (Asteroids Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids 2 (Asteroids Hack).a26"; sourceTree = ""; }; + B3E6BA0C2894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "H.E.R.O. (1984) (Activision) [!].a26"; sourceTree = ""; }; + B3E6BA0D2894B2F500CF98C7 /* Centipede (1982) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Centipede (1982) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA0E2894B2F500CF98C7 /* Asteroids (1979) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids (1979) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA0F2894B2F500CF98C7 /* Gravitar (1988) (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gravitar (1988) (CCE).a26"; sourceTree = ""; }; + B3E6BA102894B2F500CF98C7 /* Pengo (1984) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Pengo (1984) (Atari).a26"; sourceTree = ""; }; + B3E6BA122894B2F500CF98C7 /* a2600.cfg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = a2600.cfg; sourceTree = ""; }; + B3E6BA132894B2F500CF98C7 /* default.cfg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = default.cfg; sourceTree = ""; }; + B3E6BA142894B2F500CF98C7 /* Gravitar (1988) (Atari) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gravitar (1988) (Atari) [a1][!].a26"; sourceTree = ""; }; + B3E6BA152894B2F500CF98C7 /* Asteroids (1979) (Atari) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids (1979) (Atari) [a1][!].a26"; sourceTree = ""; }; + B3E6BA162894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) (PAL) [a2][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "H.E.R.O. (1984) (Activision) (PAL) [a2][!].a26"; sourceTree = ""; }; + B3E6BA172894B2F500CF98C7 /* Elk Attack (1987) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Elk Attack (1987) (Atari).a26"; sourceTree = ""; }; + B3E6BA182894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Ms. Pac-Man (1982) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA192894B2F500CF98C7 /* Vanguard (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Vanguard (CCE).a26"; sourceTree = ""; }; + B3E6BA1A2894B2F500CF98C7 /* Joust (1982) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Joust (1982) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA1B2894B2F500CF98C7 /* Aquaventure (1983) (Atari) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Aquaventure (1983) (Atari) (Prototype).a26"; sourceTree = ""; }; + B3E6BA1C2894B2F500CF98C7 /* Battlezone (1983) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Battlezone (1983) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA1D2894B2F500CF98C7 /* Phoenix (1982) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Phoenix (1982) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA1E2894B2F500CF98C7 /* Centipede 2k (2000) (PD).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Centipede 2k (2000) (PD).a26"; sourceTree = ""; }; + B3E6BA1F2894B2F500CF98C7 /* Phoenix (1982) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Phoenix (1982) (Atari).a26"; sourceTree = ""; }; + B3E6BA202894B2F500CF98C7 /* H.E.R.O. (1984) (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "H.E.R.O. (1984) (CCE).a26"; sourceTree = ""; }; + B3E6BA212894B2F500CF98C7 /* Pengo - 1 Player Only (1984) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Pengo - 1 Player Only (1984) (Atari).a26"; sourceTree = ""; }; + B3E6BA222894B2F500CF98C7 /* Kung Fu Master (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kung Fu Master (CCE).a26"; sourceTree = ""; }; + B3E6BA232894B2F500CF98C7 /* Asteroids (1979) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids (1979) (Atari) [!].a26"; sourceTree = ""; }; + B3E6BA242894B2F500CF98C7 /* Gravitar (1988) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gravitar (1988) (Atari) [!].a26"; sourceTree = ""; }; + B3E6BA252894B2F500CF98C7 /* Jungle Hunt (1982) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jungle Hunt (1982) (Atari) [!].a26"; sourceTree = ""; }; + B3E6BA262894B2F500CF98C7 /* Vanguard (1982) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Vanguard (1982) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA272894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari) [h1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Ms. Pac-Man (1982) (Atari) [h1].a26"; sourceTree = ""; }; + B3E6BA282894B2F500CF98C7 /* Galaxian (1983) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Galaxian (1983) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA292894B2F500CF98C7 /* Jungle Hunt (1982) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jungle Hunt (1982) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA2A2894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "H.E.R.O. (1984) (Activision) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA2B2894B2F500CF98C7 /* Galaxian by Jess Ragan (Enhanced Graphics).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Galaxian by Jess Ragan (Enhanced Graphics).a26"; sourceTree = ""; }; + B3E6BA2C2894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "H.E.R.O. (1984) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA2D2894B2F500CF98C7 /* Centipede (1982) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Centipede (1982) (Atari) [!].a26"; sourceTree = ""; }; + B3E6BA2E2894B2F500CF98C7 /* Berenstain Bears (1982) (Coleco).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Berenstain Bears (1982) (Coleco).a26"; sourceTree = ""; }; + B3E6BA2F2894B2F500CF98C7 /* Ms. Pac-Man (1982) (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Ms. Pac-Man (1982) (CCE).a26"; sourceTree = ""; }; + B3E6BA302894B2F500CF98C7 /* Phoenix (1982) (Atari) (PAL) [a1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Phoenix (1982) (Atari) (PAL) [a1][!].a26"; sourceTree = ""; }; + B3E6BA312894B2F500CF98C7 /* Kung Fu Master (1984) (Activision).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kung Fu Master (1984) (Activision).a26"; sourceTree = ""; }; + B3E6BA322894B2F500CF98C7 /* Asteroids [p1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Asteroids [p1].a26"; sourceTree = ""; }; + B3E6BA342894B2F500CF98C7 /* Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype).a26"; sourceTree = ""; }; + B3E6BA352894B2F500CF98C7 /* Frogger II (1984) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Frogger II (1984) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA362894B2F500CF98C7 /* Star Wars - The Arcade Game (1984) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (1984) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA372894B2F500CF98C7 /* Q-bert's Qubes (1984) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Q-bert's Qubes (1984) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA382894B2F500CF98C7 /* Montezuma's Revenge (1984) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Montezuma's Revenge (1984) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA392894B2F500CF98C7 /* Gyruss (1984) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gyruss (1984) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA3A2894B2F500CF98C7 /* Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype).a26"; sourceTree = ""; }; + B3E6BA3B2894B2F500CF98C7 /* Frogger II (1984) (Parker Bros) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Frogger II (1984) (Parker Bros) (PAL).a26"; sourceTree = ""; }; + B3E6BA3D2894B2F500CF98C7 /* Super Cobra (1982) (Parker Bros) [b1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Super Cobra (1982) (Parker Bros) [b1].a26"; sourceTree = ""; }; + B3E6BA3E2894B2F500CF98C7 /* Star Wars - The Arcade Game (Parker Bros) (Prototype 122283).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (Parker Bros) (Prototype 122283).a26"; sourceTree = ""; }; + B3E6BA3F2894B2F500CF98C7 /* Q-bert's Qubes (1983) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Q-bert's Qubes (1983) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA402894B2F500CF98C7 /* Lord of the Rings (1983) (Parker Bros) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lord of the Rings (1983) (Parker Bros) (Prototype).a26"; sourceTree = ""; }; + B3E6BA412894B2F500CF98C7 /* Popeye (1983) (Parker Bros) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Popeye (1983) (Parker Bros) (PAL).a26"; sourceTree = ""; }; + B3E6BA422894B2F500CF98C7 /* Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype).a26"; sourceTree = ""; }; + B3E6BA432894B2F500CF98C7 /* Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype).a26"; sourceTree = ""; }; + B3E6BA442894B2F500CF98C7 /* Star Wars - Death Star Battle (1983) (Parker Bros) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - Death Star Battle (1983) (Parker Bros) (PAL).a26"; sourceTree = ""; }; + B3E6BA452894B2F500CF98C7 /* Super Cobra (1982) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Super Cobra (1982) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA462894B2F500CF98C7 /* Star Wars - The Arcade Game (1984) (Parker Bros) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (1984) (Parker Bros) (PAL).a26"; sourceTree = ""; }; + B3E6BA472894B2F500CF98C7 /* Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL).a26"; sourceTree = ""; }; + B3E6BA482894B2F500CF98C7 /* Montezuma's Revenge (Thomas Jentzsch) (PAL60).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Montezuma's Revenge (Thomas Jentzsch) (PAL60).a26"; sourceTree = ""; }; + B3E6BA492894B2F500CF98C7 /* Tutankham (1983) (Parker Bros) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tutankham (1983) (Parker Bros) (PAL).a26"; sourceTree = ""; }; + B3E6BA4A2894B2F500CF98C7 /* James Bond 007 (1983) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "James Bond 007 (1983) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA4B2894B2F500CF98C7 /* Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype).a26"; sourceTree = ""; }; + B3E6BA4C2894B2F500CF98C7 /* Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K).a26"; sourceTree = ""; }; + B3E6BA4D2894B2F500CF98C7 /* Star Wars - Death Star Battle (1983) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Star Wars - Death Star Battle (1983) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA4E2894B2F500CF98C7 /* Popeye (1983) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Popeye (1983) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA4F2894B2F500CF98C7 /* Mr. Do!'s Castle (1984) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Mr. Do!'s Castle (1984) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA502894B2F500CF98C7 /* Tooth Protectors (1983) (DSD-Camelot).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tooth Protectors (1983) (DSD-Camelot).a26"; sourceTree = ""; }; + B3E6BA512894B2F500CF98C7 /* Super Cobra (1982) (Parker Bros) (PAL).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Super Cobra (1982) (Parker Bros) (PAL).a26"; sourceTree = ""; }; + B3E6BA522894B2F500CF98C7 /* Tutankham (1983) (Parker Bros).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tutankham (1983) (Parker Bros).a26"; sourceTree = ""; }; + B3E6BA542894B2F500CF98C7 /* An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD).a26"; sourceTree = ""; }; + B3E6BA562894B2F500CF98C7 /* Super TV Boy.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Super TV Boy.bin"; sourceTree = ""; }; + B3E6BA572894B2F500CF98C7 /* TV Boy (NTSC) (bad).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "TV Boy (NTSC) (bad).bin"; sourceTree = ""; }; + B3E6BA582894B2F500CF98C7 /* TV Boy 2.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "TV Boy 2.bin"; sourceTree = ""; }; + B3E6BA592894B2F500CF98C7 /* TV Boy (PAL).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "TV Boy (PAL).bin"; sourceTree = ""; }; + B3E6BA5B2894B2F500CF98C7 /* Pitfall II (1984) (Activision).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Pitfall II (1984) (Activision).bin"; sourceTree = ""; }; + B3E6BA5D2894B2F500CF98C7 /* Okie Dokie (Older) (PD).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Okie Dokie (Older) (PD).a26"; sourceTree = ""; }; + B3E6BA5E2894B2F500CF98C7 /* Stampede (1981) (Activision) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stampede (1981) (Activision) [!].a26"; sourceTree = ""; }; + B3E6BA5F2894B2F500CF98C7 /* Stampede (1981) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stampede (1981) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA602894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) [o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Air-Sea Battle (1977) (Atari) [o1].a26"; sourceTree = ""; }; + B3E6BA612894B2F500CF98C7 /* Kaboom! (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kaboom! (CCE).a26"; sourceTree = ""; }; + B3E6BA622894B2F500CF98C7 /* Tennis (1981) (Activision) [o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (1981) (Activision) [o1].a26"; sourceTree = ""; }; + B3E6BA632894B2F500CF98C7 /* Tank Plus (1977) (Sears).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tank Plus (1977) (Sears).a26"; sourceTree = ""; }; + B3E6BA642894B2F500CF98C7 /* Combat (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA652894B2F500CF98C7 /* Tennis (1981) (Activision) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (1981) (Activision) [!].a26"; sourceTree = ""; }; + B3E6BA662894B2F500CF98C7 /* Video Olympics (1978) (Atari).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Video Olympics (1978) (Atari).a26"; sourceTree = ""; }; + B3E6BA672894B2F500CF98C7 /* Video Olympics (1978) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Video Olympics (1978) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA682894B2F500CF98C7 /* Tennis (Pet Boat) (PAL) [p1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (Pet Boat) (PAL) [p1][!].a26"; sourceTree = ""; }; + B3E6BA692894B2F500CF98C7 /* Air-Sea Battle (32-in-1) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Air-Sea Battle (32-in-1) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA6A2894B2F500CF98C7 /* Stampede (1981) (Activision) [o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stampede (1981) (Activision) [o1].a26"; sourceTree = ""; }; + B3E6BA6B2894B2F500CF98C7 /* Freeway (1981) (Activision) [o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (1981) (Activision) [o1].a26"; sourceTree = ""; }; + B3E6BA6C2894B2F500CF98C7 /* Combat - Tank AI (19-04-2003) (Zach Matley).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat - Tank AI (19-04-2003) (Zach Matley).a26"; sourceTree = ""; }; + B3E6BA6D2894B2F500CF98C7 /* Combat TC (v0.1).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat TC (v0.1).a26"; sourceTree = ""; }; + B3E6BA6E2894B2F500CF98C7 /* Kaboom! (1981) (Activision) [o2].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kaboom! (1981) (Activision) [o2].a26"; sourceTree = ""; }; + B3E6BA6F2894B2F500CF98C7 /* Stampede (32-in-1) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stampede (32-in-1) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA702894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Air-Sea Battle (1977) (Atari) [!].a26"; sourceTree = ""; }; + B3E6BA712894B2F500CF98C7 /* Kabul! by Jess Ragan (Kaboom! Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kabul! by Jess Ragan (Kaboom! Hack).a26"; sourceTree = ""; }; + B3E6BA722894B2F500CF98C7 /* Combat Rock (PD).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat Rock (PD).a26"; sourceTree = ""; }; + B3E6BA732894B2F500CF98C7 /* Tennis (1981) (Activision) (PAL) [p1][o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (1981) (Activision) (PAL) [p1][o1].a26"; sourceTree = ""; }; + B3E6BA742894B2F500CF98C7 /* Tennis (1981) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (1981) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA752894B2F500CF98C7 /* Tennis (Starsoft) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (Starsoft) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA762894B2F500CF98C7 /* Freeway (CCE).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (CCE).a26"; sourceTree = ""; }; + B3E6BA772894B2F500CF98C7 /* Tennis (32-in-1) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (32-in-1) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA782894B2F500CF98C7 /* Tennis (Dactar) (PAL) [p1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (Dactar) (PAL) [p1][!].a26"; sourceTree = ""; }; + B3E6BA792894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) [o1][h1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Air-Sea Battle (1977) (Atari) [o1][h1].a26"; sourceTree = ""; }; + B3E6BA7A2894B2F500CF98C7 /* Kaboom! (1981) (Activision) [o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kaboom! (1981) (Activision) [o1].a26"; sourceTree = ""; }; + B3E6BA7B2894B2F500CF98C7 /* Freeway (1981) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (1981) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA7C2894B2F500CF98C7 /* Stampede (1981) (Activision) [o2].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stampede (1981) (Activision) [o2].a26"; sourceTree = ""; }; + B3E6BA7D2894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Air-Sea Battle (1977) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA7E2894B2F500CF98C7 /* Combat Rock (PD) [a1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat Rock (PD) [a1].a26"; sourceTree = ""; }; + B3E6BA7F2894B2F500CF98C7 /* Freeway (1981) (Activision) [o2].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (1981) (Activision) [o2].a26"; sourceTree = ""; }; + B3E6BA802894B2F500CF98C7 /* Tank Plus (1977) (Sears) [a1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tank Plus (1977) (Sears) [a1].a26"; sourceTree = ""; }; + B3E6BA812894B2F500CF98C7 /* Stampede (1981) (Activision) (PAL) [p1][o1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stampede (1981) (Activision) (PAL) [p1][o1][!].a26"; sourceTree = ""; }; + B3E6BA822894B2F500CF98C7 /* Combat (1977) (Atari) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat (1977) (Atari) [!].a26"; sourceTree = ""; }; + B3E6BA832894B2F600CF98C7 /* Freeway (1981) (Activision) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (1981) (Activision) [!].a26"; sourceTree = ""; }; + B3E6BA842894B2F600CF98C7 /* Combat (32-in-1) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat (32-in-1) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA852894B2F600CF98C7 /* Freeway (AKA Rabbits) (PAL) [p1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (AKA Rabbits) (PAL) [p1][!].a26"; sourceTree = ""; }; + B3E6BA862894B2F600CF98C7 /* Okie Dokie (PD).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Okie Dokie (PD).a26"; sourceTree = ""; }; + B3E6BA872894B2F600CF98C7 /* Freeway (32-in-1) (Atari) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (32-in-1) (Atari) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA882894B2F600CF98C7 /* Okie Dokie (4K) (PD).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Okie Dokie (4K) (PD).a26"; sourceTree = ""; }; + B3E6BA892894B2F600CF98C7 /* Xaxyrax Road by Charles Morgan (Freeway Hack).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Xaxyrax Road by Charles Morgan (Freeway Hack).a26"; sourceTree = ""; }; + B3E6BA8A2894B2F600CF98C7 /* Kaboom! (1981) (Activision) (PAL) [!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Kaboom! (1981) (Activision) (PAL) [!].a26"; sourceTree = ""; }; + B3E6BA8B2894B2F600CF98C7 /* Stampede (1981) (Activision) (PAL) [p1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Stampede (1981) (Activision) (PAL) [p1][!].a26"; sourceTree = ""; }; + B3E6BA8C2894B2F600CF98C7 /* Tennis (1981) (Activision) [o2].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tennis (1981) (Activision) [o2].a26"; sourceTree = ""; }; + B3E6BA8D2894B2F600CF98C7 /* Video Olympics (1978) (Atari) [o1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Video Olympics (1978) (Atari) [o1].a26"; sourceTree = ""; }; + B3E6BA8E2894B2F600CF98C7 /* Freeway (Dactar) (PAL) [p1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Freeway (Dactar) (PAL) [p1][!].a26"; sourceTree = ""; }; + B3E6BA8F2894B2F600CF98C7 /* Air-Sea Battle (1977) (Atari) (PAL) [p1][!].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Air-Sea Battle (1977) (Atari) (PAL) [p1][!].a26"; sourceTree = ""; }; + B3E6BA902894B2F600CF98C7 /* Combat AI (16-02-2003) (Zach Matley).a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Combat AI (16-02-2003) (Zach Matley).a26"; sourceTree = ""; }; + B3E6BA912894B2F600CF98C7 /* 2-in-1 - Freeway and Tennis [p1].a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "2-in-1 - Freeway and Tennis [p1].a26"; sourceTree = ""; }; + B3E6BA942894B2F600CF98C7 /* multitap_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = multitap_test.bin; sourceTree = ""; }; + B3E6BA962894B2F600CF98C7 /* Telepathy (Mindlink Controller) (1983) (Atari, Dan Oliver) (Prototype) ~.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Telepathy (Mindlink Controller) (1983) (Atari, Dan Oliver) (Prototype) ~.bin"; sourceTree = ""; }; + B3E6BA972894B2F600CF98C7 /* Bionic Breakthrough (Headband - Super Breakout) (Mindlink Controller) (1984) (Atari, Paul Donaldson) (Prototype) ~.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Bionic Breakthrough (Headband - Super Breakout) (Mindlink Controller) (1984) (Atari, Paul Donaldson) (Prototype) ~.bin"; sourceTree = ""; }; + B3E6BA992894B2F600CF98C7 /* Grizzards.NTSC.full-beta-4.a26 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Grizzards.NTSC.full-beta-4.a26"; sourceTree = ""; }; + B3E6BA9B2894B2F600CF98C7 /* Defender (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Defender (Genesis).bin"; sourceTree = ""; }; + B3E6BA9C2894B2F600CF98C7 /* Sea Hawk (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Sea Hawk (Genesis).bin"; sourceTree = ""; }; + B3E6BA9D2894B2F600CF98C7 /* Mouse Trap (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Mouse Trap (Genesis).bin"; sourceTree = ""; }; + B3E6BA9E2894B2F600CF98C7 /* Defender MegaDrive (PAL) (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Defender MegaDrive (PAL) (Genesis).bin"; sourceTree = ""; }; + B3E6BA9F2894B2F600CF98C7 /* H.E.R.O. (2 button)V2.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "H.E.R.O. (2 button)V2.bin"; sourceTree = ""; }; + B3E6BAA02894B2F600CF98C7 /* Moon Patrol (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Moon Patrol (Genesis).bin"; sourceTree = ""; }; + B3E6BAA12894B2F600CF98C7 /* Star Voyager (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Star Voyager (Genesis).bin"; sourceTree = ""; }; + B3E6BAA22894B2F600CF98C7 /* Solaris (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Solaris (Genesis).bin"; sourceTree = ""; }; + B3E6BAA32894B2F600CF98C7 /* Moon Patrol Arcade (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Moon Patrol Arcade (Genesis).bin"; sourceTree = ""; }; + B3E6BAA42894B2F600CF98C7 /* Defender 2 (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Defender 2 (Genesis).bin"; sourceTree = ""; }; + B3E6BAA52894B2F600CF98C7 /* Defender Arcade (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Defender Arcade (Genesis).bin"; sourceTree = ""; }; + B3E6BAA62894B2F600CF98C7 /* Asteroids (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Asteroids (Genesis).bin"; sourceTree = ""; }; + B3E6BAA72894B2F600CF98C7 /* Spy Hunter (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Spy Hunter (Genesis).bin"; sourceTree = ""; }; + B3E6BAA82894B2F600CF98C7 /* Yars' Revenge (Genesis).bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = "Yars' Revenge (Genesis).bin"; sourceTree = ""; }; + B3E6BAAA2894B2F600CF98C7 /* 128.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 128.bin; sourceTree = ""; }; + B3E6BAAB2894B2F600CF98C7 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3E6BAAC2894B2F600CF98C7 /* catharsis_theory.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = catharsis_theory.bin; sourceTree = ""; }; + B3E6BAAE2894B2F600CF98C7 /* compat */ = {isa = PBXFileReference; lastKnownFileType = text; path = compat; sourceTree = ""; }; + B3E6BAAF2894B2F600CF98C7 /* changelog */ = {isa = PBXFileReference; lastKnownFileType = text; path = changelog; sourceTree = ""; }; + B3E6BAB12894B2F600CF98C7 /* format */ = {isa = PBXFileReference; lastKnownFileType = text; path = format; sourceTree = ""; }; + B3E6BAB22894B2F600CF98C7 /* docs */ = {isa = PBXFileReference; lastKnownFileType = text; path = docs; sourceTree = ""; }; + B3E6BAB32894B2F600CF98C7 /* rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = rules; sourceTree = ""; }; + B3E6BAB42894B2F600CF98C7 /* watch */ = {isa = PBXFileReference; lastKnownFileType = text; path = watch; sourceTree = ""; }; + B3E6BAB52894B2F600CF98C7 /* copyright */ = {isa = PBXFileReference; lastKnownFileType = text; path = copyright; sourceTree = ""; }; + B3E6BAB62894B2F600CF98C7 /* doc-base */ = {isa = PBXFileReference; lastKnownFileType = text; path = "doc-base"; sourceTree = ""; }; + B3E6BAB72894B2F600CF98C7 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; + B3E6BAB82894B2F600CF98C7 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3E6BAB92894B2F600CF98C7 /* README-SDL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-SDL.txt"; sourceTree = ""; }; + B3E6BABA2894B2F600CF98C7 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3E6BABB2894B2F600CF98C7 /* config.guess */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.guess; sourceTree = ""; }; + B3E6BABC2894B2F600CF98C7 /* Announce.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Announce.txt; sourceTree = ""; }; + B3E6BABE2894B2F600CF98C7 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + B3E6BABF2894B2F600CF98C7 /* index_r77.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index_r77.html; sourceTree = ""; }; + B3E6BAC02894B2F600CF98C7 /* basic_settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = basic_settings.png; sourceTree = ""; }; + B3E6BAC12894B2F600CF98C7 /* commandsmenu_r77.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = commandsmenu_r77.png; sourceTree = ""; }; + B3E6BAC32894B2F600CF98C7 /* space_invaders.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = space_invaders.png; sourceTree = ""; }; + B3E6BAC42894B2F600CF98C7 /* debugger_tiaoutcmenu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_tiaoutcmenu.png; sourceTree = ""; }; + B3E6BAC52894B2F600CF98C7 /* navigation_buttons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = navigation_buttons.png; sourceTree = ""; }; + B3E6BAC62894B2F600CF98C7 /* cheat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cheat.png; sourceTree = ""; }; + B3E6BAC72894B2F600CF98C7 /* developer_stats.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = developer_stats.png; sourceTree = ""; }; + B3E6BAC82894B2F600CF98C7 /* options_video_tv.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_video_tv.png; sourceTree = ""; }; + B3E6BAC92894B2F600CF98C7 /* chucky_cheese.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chucky_cheese.png; sourceTree = ""; }; + B3E6BACA2894B2F600CF98C7 /* options_emulation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_emulation.png; sourceTree = ""; }; + B3E6BACB2894B2F600CF98C7 /* rominfo_2x_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rominfo_2x_small.png; sourceTree = ""; }; + B3E6BACC2894B2F600CF98C7 /* options_gameinfo_quadtari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_gameinfo_quadtari.png; sourceTree = ""; }; + B3E6BACD2894B2F600CF98C7 /* jr_pacman.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = jr_pacman.png; sourceTree = ""; }; + B3E6BACE2894B2F600CF98C7 /* debugger_banksimple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_banksimple.png; sourceTree = ""; }; + B3E6BACF2894B2F600CF98C7 /* debugger_dataops.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_dataops.png; sourceTree = ""; }; + B3E6BAD02894B2F600CF98C7 /* debugger_romcmenu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_romcmenu.png; sourceTree = ""; }; + B3E6BAD12894B2F600CF98C7 /* highscores.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = highscores.png; sourceTree = ""; }; + B3E6BAD22894B2F600CF98C7 /* options_developer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_developer.png; sourceTree = ""; }; + B3E6BAD32894B2F600CF98C7 /* launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = launcher.png; sourceTree = ""; }; + B3E6BAD42894B2F600CF98C7 /* options_developer_timemachine.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_developer_timemachine.png; sourceTree = ""; }; + B3E6BAD52894B2F600CF98C7 /* debugger_rom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_rom.png; sourceTree = ""; }; + B3E6BAD62894B2F600CF98C7 /* show_roms.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = show_roms.png; sourceTree = ""; }; + B3E6BAD72894B2F600CF98C7 /* debugger_bankcomplex.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_bankcomplex.png; sourceTree = ""; }; + B3E6BAD82894B2F600CF98C7 /* launcher_override.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = launcher_override.png; sourceTree = ""; }; + B3E6BAD92894B2F600CF98C7 /* launcher_options_snapshots.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = launcher_options_snapshots.png; sourceTree = ""; }; + B3E6BADA2894B2F600CF98C7 /* logs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logs.png; sourceTree = ""; }; + B3E6BADB2894B2F600CF98C7 /* debugger_tiainfo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_tiainfo.png; sourceTree = ""; }; + B3E6BADC2894B2F600CF98C7 /* eventmapping_remap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eventmapping_remap.png; sourceTree = ""; }; + B3E6BADD2894B2F600CF98C7 /* show_sub_dirs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = show_sub_dirs.png; sourceTree = ""; }; + B3E6BADF2894B2F600CF98C7 /* debugger_main.pdn */ = {isa = PBXFileReference; lastKnownFileType = file; path = debugger_main.pdn; sourceTree = ""; }; + B3E6BAE02894B2F600CF98C7 /* default_snapshot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = default_snapshot.png; sourceTree = ""; }; + B3E6BAE12894B2F600CF98C7 /* debugger_main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_main.png; sourceTree = ""; }; + B3E6BAE22894B2F600CF98C7 /* options_misc_dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_misc_dark.png; sourceTree = ""; }; + B3E6BAE32894B2F600CF98C7 /* debugger_tiatab.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_tiatab.png; sourceTree = ""; }; + B3E6BAE42894B2F600CF98C7 /* secret_quest.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = secret_quest.png; sourceTree = ""; }; + B3E6BAE52894B2F600CF98C7 /* circuit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = circuit.png; sourceTree = ""; }; + B3E6BAE62894B2F600CF98C7 /* reload_list.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = reload_list.png; sourceTree = ""; }; + B3E6BAE72894B2F600CF98C7 /* debugger_cpuregs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_cpuregs.png; sourceTree = ""; }; + B3E6BAE82894B2F600CF98C7 /* eventmapping_mouse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eventmapping_mouse.png; sourceTree = ""; }; + B3E6BAE92894B2F600CF98C7 /* commandmenu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = commandmenu.png; sourceTree = ""; }; + B3E6BAEA2894B2F600CF98C7 /* debugger_globalbuttons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_globalbuttons.png; sourceTree = ""; }; + B3E6BAEB2894B2F600CF98C7 /* open_help.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = open_help.png; sourceTree = ""; }; + B3E6BAEC2894B2F600CF98C7 /* options_developer_debugger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_developer_debugger.png; sourceTree = ""; }; + B3E6BAED2894B2F600CF98C7 /* Stella_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Stella_icon.png; sourceTree = ""; }; + B3E6BAEE2894B2F600CF98C7 /* debugger_audiotab.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_audiotab.png; sourceTree = ""; }; + B3E6BAEF2894B2F600CF98C7 /* timemachine.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = timemachine.png; sourceTree = ""; }; + B3E6BAF02894B2F600CF98C7 /* options_developer_tia.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_developer_tia.png; sourceTree = ""; }; + B3E6BAF12894B2F600CF98C7 /* console.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = console.png; sourceTree = ""; }; + B3E6BAF22894B2F600CF98C7 /* options_misc_classic.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_misc_classic.png; sourceTree = ""; }; + B3E6BAF32894B2F600CF98C7 /* options_video_palettes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_video_palettes.png; sourceTree = ""; }; + B3E6BAF42894B2F600CF98C7 /* debugger_iotab.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_iotab.png; sourceTree = ""; }; + B3E6BAF52894B2F600CF98C7 /* options_gameinfo_cartridge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_gameinfo_cartridge.png; sourceTree = ""; }; + B3E6BAF62894B2F600CF98C7 /* show_current_dir.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = show_current_dir.png; sourceTree = ""; }; + B3E6BAF72894B2F600CF98C7 /* eventmapping.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eventmapping.png; sourceTree = ""; }; + B3E6BAF82894B2F600CF98C7 /* options.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options.png; sourceTree = ""; }; + B3E6BAF92894B2F600CF98C7 /* options_gameinfo_console.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_gameinfo_console.png; sourceTree = ""; }; + B3E6BAFA2894B2F600CF98C7 /* debugger_ramsearch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_ramsearch.png; sourceTree = ""; }; + B3E6BAFB2894B2F600CF98C7 /* options_gameinfo_highscores.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_gameinfo_highscores.png; sourceTree = ""; }; + B3E6BAFC2894B2F600CF98C7 /* options_gameinfo_controller.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_gameinfo_controller.png; sourceTree = ""; }; + B3E6BAFD2894B2F600CF98C7 /* options_gameinfo_emulation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_gameinfo_emulation.png; sourceTree = ""; }; + B3E6BAFE2894B2F600CF98C7 /* rominfo_1x_large.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rominfo_1x_large.png; sourceTree = ""; }; + B3E6BAFF2894B2F600CF98C7 /* show_all.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = show_all.png; sourceTree = ""; }; + B3E6BB002894B2F600CF98C7 /* debugger_options.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_options.png; sourceTree = ""; }; + B3E6BB012894B2F600CF98C7 /* qwertz.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = qwertz.png; sourceTree = ""; }; + B3E6BB022894B2F600CF98C7 /* options_video.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_video.png; sourceTree = ""; }; + B3E6BB032894B2F600CF98C7 /* options_ui.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_ui.png; sourceTree = ""; }; + B3E6BB042894B2F600CF98C7 /* options_developer_emulation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_developer_emulation.png; sourceTree = ""; }; + B3E6BB052894B2F600CF98C7 /* options_developer_video.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_developer_video.png; sourceTree = ""; }; + B3E6BB062894B2F600CF98C7 /* debugger_ram-dpc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "debugger_ram-dpc.png"; sourceTree = ""; }; + B3E6BB072894B2F600CF98C7 /* debugger_tiazoomcmenu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_tiazoomcmenu.png; sourceTree = ""; }; + B3E6BB082894B2F600CF98C7 /* options_audio.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_audio.png; sourceTree = ""; }; + B3E6BB092894B2F600CF98C7 /* eventmapping_devsports.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eventmapping_devsports.png; sourceTree = ""; }; + B3E6BB0A2894B2F600CF98C7 /* romaudit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = romaudit.png; sourceTree = ""; }; + B3E6BB0B2894B2F600CF98C7 /* pacman.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pacman.png; sourceTree = ""; }; + B3E6BB0C2894B2F600CF98C7 /* eventmapping_combo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eventmapping_combo.png; sourceTree = ""; }; + B3E6BB0D2894B2F600CF98C7 /* debugger_ram-f8sc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "debugger_ram-f8sc.png"; sourceTree = ""; }; + B3E6BB0E2894B2F600CF98C7 /* options_misc_light.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_misc_light.png; sourceTree = ""; }; + B3E6BB0F2894B2F600CF98C7 /* debugger_bpstatus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_bpstatus.png; sourceTree = ""; }; + B3E6BB102894B2F600CF98C7 /* options_misc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = options_misc.png; sourceTree = ""; }; + B3E6BB112894B2F600CF98C7 /* debugger_ram.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debugger_ram.png; sourceTree = ""; }; + B3E6BB122894B2F600CF98C7 /* rominfo_1x_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rominfo_1x_small.png; sourceTree = ""; }; + B3E6BB132894B2F600CF98C7 /* debugger.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = debugger.html; sourceTree = ""; }; + B3E6BB142894B2F600CF98C7 /* R77_readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = R77_readme.txt; sourceTree = ""; }; + B3E6BB152894B2F600CF98C7 /* common.rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = common.rules; sourceTree = ""; }; + B3E6BB162894B2F600CF98C7 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3E6BB172894B2F600CF98C7 /* Changes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Changes.txt; sourceTree = ""; }; + B3E6BB182894B2F600CF98C7 /* config.sub */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.sub; sourceTree = ""; }; + B3E6BB1A2894B2F600CF98C7 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3E6BB1C2894B2F600CF98C7 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3E6BB1D2894B2F600CF98C7 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; + B3E6BB212894B2F600CF98C7 /* convbdf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = convbdf.c; sourceTree = ""; }; + B3E6BB222894B2F600CF98C7 /* merge_props.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = merge_props.pl; sourceTree = ""; }; + B3E6BB232894B2F600CF98C7 /* PropSet.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = PropSet.pm; sourceTree = ""; }; + B3E6BB242894B2F600CF98C7 /* prune_snapshots.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = prune_snapshots.pl; sourceTree = ""; }; + B3E6BB252894B2F600CF98C7 /* scrom.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = scrom.asm; sourceTree = ""; }; + B3E6BB262894B2F600CF98C7 /* check-sig.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "check-sig.cxx"; sourceTree = ""; }; + B3E6BB272894B2F600CF98C7 /* create_props.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = create_props.pl; sourceTree = ""; }; + B3E6BB282894B2F600CF98C7 /* rom_diff.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = rom_diff.pl; sourceTree = ""; }; + B3E6BB292894B2F600CF98C7 /* romtohex.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = romtohex.cxx; sourceTree = ""; }; + B3E6BB2B2894B2F600CF98C7 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3E6BB2C2894B2F600CF98C7 /* evdev-joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "evdev-joystick.c"; sourceTree = ""; }; + B3E6BB2D2894B2F600CF98C7 /* Readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Readme.txt; sourceTree = ""; }; + B3E6BB2E2894B2F600CF98C7 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; + B3E6BB2F2894B2F600CF98C7 /* 80-stelladaptor-joystick.rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = "80-stelladaptor-joystick.rules"; sourceTree = ""; }; + B3E6BB8E2894B2F700CF98C7 /* CheatCodeDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CheatCodeDialog.cxx; sourceTree = ""; }; + B3E6BB8F2894B2F700CF98C7 /* BankRomCheat.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = BankRomCheat.hxx; sourceTree = ""; }; + B3E6BB902894B2F700CF98C7 /* CheetahCheat.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CheetahCheat.hxx; sourceTree = ""; }; + B3E6BB912894B2F700CF98C7 /* RamCheat.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RamCheat.cxx; sourceTree = ""; }; + B3E6BB922894B2F700CF98C7 /* CheatManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CheatManager.cxx; sourceTree = ""; }; + B3E6BB932894B2F700CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BB942894B2F700CF98C7 /* BankRomCheat.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BankRomCheat.cxx; sourceTree = ""; }; + B3E6BB952894B2F700CF98C7 /* CheetahCheat.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CheetahCheat.cxx; sourceTree = ""; }; + B3E6BB962894B2F700CF98C7 /* RamCheat.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RamCheat.hxx; sourceTree = ""; }; + B3E6BB972894B2F700CF98C7 /* CheatManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CheatManager.hxx; sourceTree = ""; }; + B3E6BB982894B2F700CF98C7 /* CheatCodeDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CheatCodeDialog.hxx; sourceTree = ""; }; + B3E6BB992894B2F700CF98C7 /* Cheat.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cheat.hxx; sourceTree = ""; }; + B3E6BBAB2894B2F700CF98C7 /* EventHandlerSDL2.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EventHandlerSDL2.hxx; sourceTree = ""; }; + B3E6BBAC2894B2F700CF98C7 /* Vec.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Vec.hxx; sourceTree = ""; }; + B3E6BBAD2894B2F700CF98C7 /* PKeyboardHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PKeyboardHandler.hxx; sourceTree = ""; }; + B3E6BBAE2894B2F700CF98C7 /* DevSettingsHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DevSettingsHandler.hxx; sourceTree = ""; }; + B3E6BBB02894B2F700CF98C7 /* KeyValueRepositoryConfigfile.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyValueRepositoryConfigfile.hxx; sourceTree = ""; }; + B3E6BBB12894B2F700CF98C7 /* KeyValueRepositoryPropertyFile.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyValueRepositoryPropertyFile.hxx; sourceTree = ""; }; + B3E6BBB22894B2F700CF98C7 /* KeyValueRepositoryFile.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyValueRepositoryFile.hxx; sourceTree = ""; }; + B3E6BBB32894B2F700CF98C7 /* CompositeKeyValueRepository.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeKeyValueRepository.cxx; sourceTree = ""; }; + B3E6BBB52894B2F700CF98C7 /* SqliteDatabase.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SqliteDatabase.cxx; sourceTree = ""; }; + B3E6BBB62894B2F700CF98C7 /* KeyValueRepositorySqlite.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyValueRepositorySqlite.hxx; sourceTree = ""; }; + B3E6BBB72894B2F700CF98C7 /* StellaDb.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StellaDb.cxx; sourceTree = ""; }; + B3E6BBB82894B2F700CF98C7 /* AbstractKeyValueRepositorySqlite.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractKeyValueRepositorySqlite.cxx; sourceTree = ""; }; + B3E6BBB92894B2F700CF98C7 /* SqliteStatement.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SqliteStatement.hxx; sourceTree = ""; }; + B3E6BBBA2894B2F700CF98C7 /* CompositeKeyValueRepositorySqlite.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeKeyValueRepositorySqlite.cxx; sourceTree = ""; }; + B3E6BBBB2894B2F700CF98C7 /* SqliteTransaction.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SqliteTransaction.cxx; sourceTree = ""; }; + B3E6BBBC2894B2F700CF98C7 /* SqliteError.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SqliteError.hxx; sourceTree = ""; }; + B3E6BBBD2894B2F700CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BBBE2894B2F700CF98C7 /* CompositeKeyValueRepositorySqlite.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CompositeKeyValueRepositorySqlite.hxx; sourceTree = ""; }; + B3E6BBBF2894B2F700CF98C7 /* SqliteTransaction.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SqliteTransaction.hxx; sourceTree = ""; }; + B3E6BBC02894B2F700CF98C7 /* SqliteDatabase.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SqliteDatabase.hxx; sourceTree = ""; }; + B3E6BBC12894B2F700CF98C7 /* StellaDb.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StellaDb.hxx; sourceTree = ""; }; + B3E6BBC22894B2F800CF98C7 /* KeyValueRepositorySqlite.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = KeyValueRepositorySqlite.cxx; sourceTree = ""; }; + B3E6BBC32894B2F800CF98C7 /* AbstractKeyValueRepositorySqlite.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AbstractKeyValueRepositorySqlite.hxx; sourceTree = ""; }; + B3E6BBC42894B2F800CF98C7 /* SqliteStatement.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SqliteStatement.cxx; sourceTree = ""; }; + B3E6BBC52894B2F800CF98C7 /* KeyValueRepositoryJsonFile.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyValueRepositoryJsonFile.hxx; sourceTree = ""; }; + B3E6BBC62894B2F800CF98C7 /* CompositeKVRJsonAdapter.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeKVRJsonAdapter.cxx; sourceTree = ""; }; + B3E6BBC72894B2F800CF98C7 /* KeyValueRepositoryNoop.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyValueRepositoryNoop.hxx; sourceTree = ""; }; + B3E6BBC82894B2F800CF98C7 /* CompositeKeyValueRepository.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CompositeKeyValueRepository.hxx; sourceTree = ""; }; + B3E6BBC92894B2F800CF98C7 /* KeyValueRepositoryJsonFile.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = KeyValueRepositoryJsonFile.cxx; sourceTree = ""; }; + B3E6BBCA2894B2F800CF98C7 /* CompositeKVRJsonAdapter.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CompositeKVRJsonAdapter.hxx; sourceTree = ""; }; + B3E6BBCB2894B2F800CF98C7 /* KeyValueRepository.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyValueRepository.hxx; sourceTree = ""; }; + B3E6BBCC2894B2F800CF98C7 /* KeyValueRepositoryConfigfile.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = KeyValueRepositoryConfigfile.cxx; sourceTree = ""; }; + B3E6BBCD2894B2F800CF98C7 /* KeyValueRepositoryPropertyFile.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = KeyValueRepositoryPropertyFile.cxx; sourceTree = ""; }; + B3E6BBCE2894B2F800CF98C7 /* CompositeKeyValueRepositoryNoop.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CompositeKeyValueRepositoryNoop.hxx; sourceTree = ""; }; + B3E6BBCF2894B2F800CF98C7 /* main.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cxx; sourceTree = ""; }; + B3E6BBD02894B2F800CF98C7 /* ThreadDebugging.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadDebugging.cxx; sourceTree = ""; }; + B3E6BBD12894B2F800CF98C7 /* KeyMap.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = KeyMap.cxx; sourceTree = ""; }; + B3E6BBD22894B2F800CF98C7 /* MouseControl.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MouseControl.hxx; sourceTree = ""; }; + B3E6BBD32894B2F800CF98C7 /* AudioSettings.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AudioSettings.hxx; sourceTree = ""; }; + B3E6BBD42894B2F800CF98C7 /* FpsMeter.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FpsMeter.hxx; sourceTree = ""; }; + B3E6BBD52894B2F800CF98C7 /* HighScoresManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HighScoresManager.cxx; sourceTree = ""; }; + B3E6BBD62894B2F800CF98C7 /* AudioQueue.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AudioQueue.cxx; sourceTree = ""; }; + B3E6BBD72894B2F800CF98C7 /* FBSurfaceSDL2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FBSurfaceSDL2.cxx; sourceTree = ""; }; + B3E6BBD82894B2F800CF98C7 /* PaletteHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PaletteHandler.hxx; sourceTree = ""; }; + B3E6BBD92894B2F800CF98C7 /* FSNodeZIP.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FSNodeZIP.hxx; sourceTree = ""; }; + B3E6BBDA2894B2F800CF98C7 /* ZipHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ZipHandler.hxx; sourceTree = ""; }; + B3E6BBDB2894B2F800CF98C7 /* MediaFactory.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MediaFactory.hxx; sourceTree = ""; }; + B3E6BBDC2894B2F800CF98C7 /* Logger.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Logger.cxx; sourceTree = ""; }; + B3E6BBDD2894B2F800CF98C7 /* SoundSDL2.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SoundSDL2.hxx; sourceTree = ""; }; + B3E6BBDE2894B2F800CF98C7 /* bspf.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = bspf.hxx; sourceTree = ""; }; + B3E6BBDF2894B2F800CF98C7 /* TimerManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TimerManager.hxx; sourceTree = ""; }; + B3E6BBE02894B2F800CF98C7 /* VideoModeHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VideoModeHandler.cxx; sourceTree = ""; }; + B3E6BBE12894B2F800CF98C7 /* RewindManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RewindManager.hxx; sourceTree = ""; }; + B3E6BBE22894B2F800CF98C7 /* PhysicalJoystick.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PhysicalJoystick.hxx; sourceTree = ""; }; + B3E6BBE32894B2F800CF98C7 /* stella-16x16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stella-16x16.png"; sourceTree = ""; }; + B3E6BBE42894B2F800CF98C7 /* PNGLibrary.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PNGLibrary.hxx; sourceTree = ""; }; + B3E6BBE52894B2F800CF98C7 /* Base.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Base.hxx; sourceTree = ""; }; + B3E6BBE62894B2F800CF98C7 /* Stack.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Stack.hxx; sourceTree = ""; }; + B3E6BBE72894B2F800CF98C7 /* FSNodeFactory.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FSNodeFactory.hxx; sourceTree = ""; }; + B3E6BBE82894B2F800CF98C7 /* StaggeredLogger.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StaggeredLogger.hxx; sourceTree = ""; }; + B3E6BBE92894B2F800CF98C7 /* LinkedObjectPool.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = LinkedObjectPool.hxx; sourceTree = ""; }; + B3E6BBEA2894B2F800CF98C7 /* jsonDefinitions.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = jsonDefinitions.hxx; sourceTree = ""; }; + B3E6BBEB2894B2F800CF98C7 /* SDL_lib.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SDL_lib.hxx; sourceTree = ""; }; + B3E6BBEC2894B2F800CF98C7 /* JoyMap.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JoyMap.cxx; sourceTree = ""; }; + B3E6BBED2894B2F800CF98C7 /* StateManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StateManager.cxx; sourceTree = ""; }; + B3E6BBEE2894B2F800CF98C7 /* PJoystickHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PJoystickHandler.cxx; sourceTree = ""; }; + B3E6BBEF2894B2F800CF98C7 /* FBBackendSDL2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FBBackendSDL2.cxx; sourceTree = ""; }; + B3E6BBF12894B2F800CF98C7 /* BilinearBlitter.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BilinearBlitter.cxx; sourceTree = ""; }; + B3E6BBF22894B2F800CF98C7 /* QisBlitter.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = QisBlitter.hxx; sourceTree = ""; }; + B3E6BBF32894B2F800CF98C7 /* Blitter.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Blitter.hxx; sourceTree = ""; }; + B3E6BBF42894B2F800CF98C7 /* BlitterFactory.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = BlitterFactory.hxx; sourceTree = ""; }; + B3E6BBF52894B2F800CF98C7 /* BlitterFactory.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BlitterFactory.cxx; sourceTree = ""; }; + B3E6BBF62894B2F800CF98C7 /* BilinearBlitter.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = BilinearBlitter.hxx; sourceTree = ""; }; + B3E6BBF72894B2F800CF98C7 /* QisBlitter.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = QisBlitter.cxx; sourceTree = ""; }; + B3E6BBF82894B2F800CF98C7 /* StellaKeys.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StellaKeys.hxx; sourceTree = ""; }; + B3E6BBF92894B2F800CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BBFA2894B2F800CF98C7 /* Version.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Version.hxx; sourceTree = ""; }; + B3E6BBFB2894B2F800CF98C7 /* PhosphorHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PhosphorHandler.cxx; sourceTree = ""; }; + B3E6BBFC2894B2F800CF98C7 /* VideoModeHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VideoModeHandler.hxx; sourceTree = ""; }; + B3E6BBFD2894B2F800CF98C7 /* PhysicalJoystick.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PhysicalJoystick.cxx; sourceTree = ""; }; + B3E6BBFE2894B2F800CF98C7 /* smartmod.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = smartmod.hxx; sourceTree = ""; }; + B3E6BBFF2894B2F800CF98C7 /* RewindManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RewindManager.cxx; sourceTree = ""; }; + B3E6BC002894B2F800CF98C7 /* Base.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Base.cxx; sourceTree = ""; }; + B3E6BC012894B2F800CF98C7 /* PNGLibrary.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PNGLibrary.cxx; sourceTree = ""; }; + B3E6BC032894B2F800CF98C7 /* LanczosResampler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = LanczosResampler.hxx; sourceTree = ""; }; + B3E6BC042894B2F800CF98C7 /* HighPass.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HighPass.cxx; sourceTree = ""; }; + B3E6BC052894B2F800CF98C7 /* SimpleResampler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleResampler.cxx; sourceTree = ""; }; + B3E6BC062894B2F800CF98C7 /* ConvolutionBuffer.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ConvolutionBuffer.cxx; sourceTree = ""; }; + B3E6BC072894B2F800CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BC082894B2F800CF98C7 /* ConvolutionBuffer.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ConvolutionBuffer.hxx; sourceTree = ""; }; + B3E6BC092894B2F800CF98C7 /* Resampler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Resampler.hxx; sourceTree = ""; }; + B3E6BC0A2894B2F800CF98C7 /* LanczosResampler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LanczosResampler.cxx; sourceTree = ""; }; + B3E6BC0B2894B2F800CF98C7 /* HighPass.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = HighPass.hxx; sourceTree = ""; }; + B3E6BC0C2894B2F800CF98C7 /* SimpleResampler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SimpleResampler.hxx; sourceTree = ""; }; + B3E6BC0D2894B2F800CF98C7 /* stella.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stella.png; sourceTree = ""; }; + B3E6BC0E2894B2F800CF98C7 /* Variant.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Variant.hxx; sourceTree = ""; }; + B3E6BC0F2894B2F800CF98C7 /* StaggeredLogger.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StaggeredLogger.cxx; sourceTree = ""; }; + B3E6BC102894B2F800CF98C7 /* stella-64x64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stella-64x64.png"; sourceTree = ""; }; + B3E6BC112894B2F800CF98C7 /* Rect.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Rect.hxx; sourceTree = ""; }; + B3E6BC122894B2F800CF98C7 /* JoyMap.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = JoyMap.hxx; sourceTree = ""; }; + B3E6BC132894B2F800CF98C7 /* stella_icon.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = stella_icon.hxx; sourceTree = ""; }; + B3E6BC142894B2F800CF98C7 /* PJoystickHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PJoystickHandler.hxx; sourceTree = ""; }; + B3E6BC152894B2F800CF98C7 /* StateManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StateManager.hxx; sourceTree = ""; }; + B3E6BC162894B2F800CF98C7 /* StringParser.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StringParser.hxx; sourceTree = ""; }; + B3E6BC172894B2F800CF98C7 /* stella-128x128.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stella-128x128.png"; sourceTree = ""; }; + B3E6BC182894B2F800CF98C7 /* FBBackendSDL2.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FBBackendSDL2.hxx; sourceTree = ""; }; + B3E6BC192894B2F800CF98C7 /* stella-22x22.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stella-22x22.png"; sourceTree = ""; }; + B3E6BC1A2894B2F800CF98C7 /* PhosphorHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PhosphorHandler.hxx; sourceTree = ""; }; + B3E6BC1B2894B2F800CF98C7 /* stella-32x32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stella-32x32.png"; sourceTree = ""; }; + B3E6BC1C2894B2F800CF98C7 /* stella-48x48.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stella-48x48.png"; sourceTree = ""; }; + B3E6BC1D2894B2F800CF98C7 /* EventHandlerSDL2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EventHandlerSDL2.cxx; sourceTree = ""; }; + B3E6BC1E2894B2F800CF98C7 /* stella-24x24.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stella-24x24.png"; sourceTree = ""; }; + B3E6BC202894B2F800CF98C7 /* AtariNTSC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AtariNTSC.cxx; sourceTree = ""; }; + B3E6BC212894B2F800CF98C7 /* NTSCFilter.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NTSCFilter.cxx; sourceTree = ""; }; + B3E6BC222894B2F800CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BC232894B2F800CF98C7 /* AtariNTSC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AtariNTSC.hxx; sourceTree = ""; }; + B3E6BC242894B2F800CF98C7 /* NTSCFilter.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = NTSCFilter.hxx; sourceTree = ""; }; + B3E6BC252894B2F800CF98C7 /* PKeyboardHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PKeyboardHandler.cxx; sourceTree = ""; }; + B3E6BC262894B2F800CF98C7 /* SoundNull.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SoundNull.hxx; sourceTree = ""; }; + B3E6BC272894B2F800CF98C7 /* DevSettingsHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DevSettingsHandler.cxx; sourceTree = ""; }; + B3E6BC282894B2F800CF98C7 /* ThreadDebugging.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ThreadDebugging.hxx; sourceTree = ""; }; + B3E6BC292894B2F800CF98C7 /* FpsMeter.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FpsMeter.cxx; sourceTree = ""; }; + B3E6BC2A2894B2F800CF98C7 /* KeyMap.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyMap.hxx; sourceTree = ""; }; + B3E6BC2B2894B2F800CF98C7 /* MouseControl.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MouseControl.cxx; sourceTree = ""; }; + B3E6BC2C2894B2F800CF98C7 /* AudioSettings.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSettings.cxx; sourceTree = ""; }; + B3E6BC2D2894B2F800CF98C7 /* FBSurfaceSDL2.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FBSurfaceSDL2.hxx; sourceTree = ""; }; + B3E6BC2E2894B2F800CF98C7 /* HighScoresManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = HighScoresManager.hxx; sourceTree = ""; }; + B3E6BC2F2894B2F800CF98C7 /* AudioQueue.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AudioQueue.hxx; sourceTree = ""; }; + B3E6BC302894B2F800CF98C7 /* PaletteHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PaletteHandler.cxx; sourceTree = ""; }; + B3E6BC312894B2F800CF98C7 /* ZipHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ZipHandler.cxx; sourceTree = ""; }; + B3E6BC322894B2F800CF98C7 /* FSNodeZIP.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FSNodeZIP.cxx; sourceTree = ""; }; + B3E6BC332894B2F800CF98C7 /* Logger.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Logger.hxx; sourceTree = ""; }; + B3E6BC342894B2F800CF98C7 /* SoundSDL2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SoundSDL2.cxx; sourceTree = ""; }; + B3E6BC352894B2F800CF98C7 /* TimerManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TimerManager.cxx; sourceTree = ""; }; + B3E6BC542894B2F800CF98C7 /* Stella14x28tFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Stella14x28tFont.hxx; sourceTree = ""; }; + B3E6BC552894B2F800CF98C7 /* Launcher.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Launcher.cxx; sourceTree = ""; }; + B3E6BC562894B2F800CF98C7 /* InputTextDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = InputTextDialog.hxx; sourceTree = ""; }; + B3E6BC572894B2F800CF98C7 /* QuadTariDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = QuadTariDialog.cxx; sourceTree = ""; }; + B3E6BC582894B2F800CF98C7 /* DeveloperDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DeveloperDialog.hxx; sourceTree = ""; }; + B3E6BC592894B2F800CF98C7 /* UndoHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UndoHandler.cxx; sourceTree = ""; }; + B3E6BC5A2894B2F800CF98C7 /* PlusRomsMenu.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PlusRomsMenu.hxx; sourceTree = ""; }; + B3E6BC5B2894B2F800CF98C7 /* SnapshotDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SnapshotDialog.cxx; sourceTree = ""; }; + B3E6BC5C2894B2F800CF98C7 /* HelpDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HelpDialog.cxx; sourceTree = ""; }; + B3E6BC5D2894B2F800CF98C7 /* JoystickDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JoystickDialog.cxx; sourceTree = ""; }; + B3E6BC5E2894B2F800CF98C7 /* MinUICommandDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MinUICommandDialog.hxx; sourceTree = ""; }; + B3E6BC5F2894B2F800CF98C7 /* VideoAudioDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VideoAudioDialog.cxx; sourceTree = ""; }; + B3E6BC602894B2F800CF98C7 /* BrowserDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BrowserDialog.cxx; sourceTree = ""; }; + B3E6BC612894B2F800CF98C7 /* GlobalPropsDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = GlobalPropsDialog.hxx; sourceTree = ""; }; + B3E6BC622894B2F800CF98C7 /* OptionsDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsDialog.cxx; sourceTree = ""; }; + B3E6BC632894B2F800CF98C7 /* EventMappingWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EventMappingWidget.hxx; sourceTree = ""; }; + B3E6BC642894B2F800CF98C7 /* PlusRomsSetupDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PlusRomsSetupDialog.hxx; sourceTree = ""; }; + B3E6BC652894B2F800CF98C7 /* EditTextWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EditTextWidget.cxx; sourceTree = ""; }; + B3E6BC662894B2F800CF98C7 /* PopUpWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PopUpWidget.cxx; sourceTree = ""; }; + B3E6BC672894B2F800CF98C7 /* CommandDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommandDialog.cxx; sourceTree = ""; }; + B3E6BC682894B2F800CF98C7 /* ConsoleMediumFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ConsoleMediumFont.hxx; sourceTree = ""; }; + B3E6BC692894B2F800CF98C7 /* ScrollBarWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ScrollBarWidget.hxx; sourceTree = ""; }; + B3E6BC6A2894B2F800CF98C7 /* Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Widget.hxx; sourceTree = ""; }; + B3E6BC6B2894B2F800CF98C7 /* ProgressDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ProgressDialog.hxx; sourceTree = ""; }; + B3E6BC6C2894B2F800CF98C7 /* Stella12x24tFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Stella12x24tFont.hxx; sourceTree = ""; }; + B3E6BC6D2894B2F800CF98C7 /* ConsoleBFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ConsoleBFont.hxx; sourceTree = ""; }; + B3E6BC6E2894B2F800CF98C7 /* InputDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InputDialog.cxx; sourceTree = ""; }; + B3E6BC6F2894B2F800CF98C7 /* ComboDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ComboDialog.hxx; sourceTree = ""; }; + B3E6BC702894B2F800CF98C7 /* MessageDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MessageDialog.cxx; sourceTree = ""; }; + B3E6BC712894B2F800CF98C7 /* HighScoresDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HighScoresDialog.cxx; sourceTree = ""; }; + B3E6BC722894B2F800CF98C7 /* MessageBox.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MessageBox.hxx; sourceTree = ""; }; + B3E6BC732894B2F800CF98C7 /* OptionsMenu.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OptionsMenu.hxx; sourceTree = ""; }; + B3E6BC742894B2F800CF98C7 /* TabWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TabWidget.hxx; sourceTree = ""; }; + B3E6BC752894B2F800CF98C7 /* LauncherFileListWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = LauncherFileListWidget.hxx; sourceTree = ""; }; + B3E6BC762894B2F800CF98C7 /* CommandMenu.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommandMenu.cxx; sourceTree = ""; }; + B3E6BC772894B2F800CF98C7 /* LoggerDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LoggerDialog.cxx; sourceTree = ""; }; + B3E6BC782894B2F800CF98C7 /* ColorWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ColorWidget.hxx; sourceTree = ""; }; + B3E6BC792894B2F800CF98C7 /* NavigationWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NavigationWidget.cxx; sourceTree = ""; }; + B3E6BC7A2894B2F800CF98C7 /* WhatsNewDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = WhatsNewDialog.hxx; sourceTree = ""; }; + B3E6BC7B2894B2F800CF98C7 /* FavoritesManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FavoritesManager.cxx; sourceTree = ""; }; + B3E6BC7C2894B2F800CF98C7 /* Command.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Command.hxx; sourceTree = ""; }; + B3E6BC7D2894B2F800CF98C7 /* ContextMenu.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ContextMenu.hxx; sourceTree = ""; }; + B3E6BC7E2894B2F800CF98C7 /* StellaSettingsDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StellaSettingsDialog.cxx; sourceTree = ""; }; + B3E6BC7F2894B2F800CF98C7 /* GuiObject.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = GuiObject.hxx; sourceTree = ""; }; + B3E6BC802894B2F900CF98C7 /* RomAuditDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RomAuditDialog.hxx; sourceTree = ""; }; + B3E6BC812894B2F900CF98C7 /* GameInfoDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = GameInfoDialog.hxx; sourceTree = ""; }; + B3E6BC822894B2F900CF98C7 /* EditableWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EditableWidget.cxx; sourceTree = ""; }; + B3E6BC832894B2F900CF98C7 /* DialogContainer.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DialogContainer.cxx; sourceTree = ""; }; + B3E6BC842894B2F900CF98C7 /* Font.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Font.hxx; sourceTree = ""; }; + B3E6BC852894B2F900CF98C7 /* HighScoresMenu.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = HighScoresMenu.hxx; sourceTree = ""; }; + B3E6BC862894B2F900CF98C7 /* StringListWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StringListWidget.cxx; sourceTree = ""; }; + B3E6BC872894B2F900CF98C7 /* StellaLargeFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StellaLargeFont.hxx; sourceTree = ""; }; + B3E6BC882894B2F900CF98C7 /* LauncherDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = LauncherDialog.hxx; sourceTree = ""; }; + B3E6BC892894B2F900CF98C7 /* RadioButtonWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RadioButtonWidget.cxx; sourceTree = ""; }; + B3E6BC8A2894B2F900CF98C7 /* TimeLineWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TimeLineWidget.cxx; sourceTree = ""; }; + B3E6BC8B2894B2F900CF98C7 /* Terminus-Font-License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Terminus-Font-License.txt"; sourceTree = ""; }; + B3E6BC8C2894B2F900CF98C7 /* R77HelpDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = R77HelpDialog.hxx; sourceTree = ""; }; + B3E6BC8D2894B2F900CF98C7 /* CheckListWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CheckListWidget.hxx; sourceTree = ""; }; + B3E6BC8E2894B2F900CF98C7 /* RomInfoWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RomInfoWidget.cxx; sourceTree = ""; }; + B3E6BC8F2894B2F900CF98C7 /* MessageMenu.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MessageMenu.cxx; sourceTree = ""; }; + B3E6BC902894B2F900CF98C7 /* Dialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Dialog.hxx; sourceTree = ""; }; + B3E6BC912894B2F900CF98C7 /* ListWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ListWidget.hxx; sourceTree = ""; }; + B3E6BC922894B2F900CF98C7 /* UIDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = UIDialog.hxx; sourceTree = ""; }; + B3E6BC932894B2F900CF98C7 /* TimeMachine.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TimeMachine.hxx; sourceTree = ""; }; + B3E6BC942894B2F900CF98C7 /* TimeMachineDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TimeMachineDialog.cxx; sourceTree = ""; }; + B3E6BC952894B2F900CF98C7 /* EmulationDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EmulationDialog.hxx; sourceTree = ""; }; + B3E6BC962894B2F900CF98C7 /* Icons.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Icons.hxx; sourceTree = ""; }; + B3E6BC972894B2F900CF98C7 /* FileListWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FileListWidget.hxx; sourceTree = ""; }; + B3E6BC982894B2F900CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BC992894B2F900CF98C7 /* ToolTip.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ToolTip.cxx; sourceTree = ""; }; + B3E6BC9A2894B2F900CF98C7 /* AboutDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AboutDialog.hxx; sourceTree = ""; }; + B3E6BC9B2894B2F900CF98C7 /* MessageDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MessageDialog.hxx; sourceTree = ""; }; + B3E6BC9C2894B2F900CF98C7 /* HighScoresDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = HighScoresDialog.hxx; sourceTree = ""; }; + B3E6BC9D2894B2F900CF98C7 /* ComboDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ComboDialog.cxx; sourceTree = ""; }; + B3E6BC9E2894B2F900CF98C7 /* InputDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = InputDialog.hxx; sourceTree = ""; }; + B3E6BC9F2894B2F900CF98C7 /* OptionsMenu.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsMenu.cxx; sourceTree = ""; }; + B3E6BCA02894B2F900CF98C7 /* TabWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TabWidget.cxx; sourceTree = ""; }; + B3E6BCA12894B2F900CF98C7 /* MessageBox.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MessageBox.cxx; sourceTree = ""; }; + B3E6BCA22894B2F900CF98C7 /* LauncherFileListWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LauncherFileListWidget.cxx; sourceTree = ""; }; + B3E6BCA32894B2F900CF98C7 /* CommandMenu.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CommandMenu.hxx; sourceTree = ""; }; + B3E6BCA42894B2F900CF98C7 /* Stella16x32tFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Stella16x32tFont.hxx; sourceTree = ""; }; + B3E6BCA52894B2F900CF98C7 /* LoggerDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = LoggerDialog.hxx; sourceTree = ""; }; + B3E6BCA62894B2F900CF98C7 /* WhatsNewDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WhatsNewDialog.cxx; sourceTree = ""; }; + B3E6BCA72894B2F900CF98C7 /* FavoritesManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FavoritesManager.hxx; sourceTree = ""; }; + B3E6BCA82894B2F900CF98C7 /* ColorWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ColorWidget.cxx; sourceTree = ""; }; + B3E6BCA92894B2F900CF98C7 /* NavigationWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = NavigationWidget.hxx; sourceTree = ""; }; + B3E6BCAA2894B2F900CF98C7 /* ContextMenu.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenu.cxx; sourceTree = ""; }; + B3E6BCAB2894B2F900CF98C7 /* DialogContainer.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DialogContainer.hxx; sourceTree = ""; }; + B3E6BCAC2894B2F900CF98C7 /* Font.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Font.cxx; sourceTree = ""; }; + B3E6BCAD2894B2F900CF98C7 /* StringListWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StringListWidget.hxx; sourceTree = ""; }; + B3E6BCAE2894B2F900CF98C7 /* HighScoresMenu.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HighScoresMenu.cxx; sourceTree = ""; }; + B3E6BCAF2894B2F900CF98C7 /* EditableWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EditableWidget.hxx; sourceTree = ""; }; + B3E6BCB02894B2F900CF98C7 /* GameInfoDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GameInfoDialog.cxx; sourceTree = ""; }; + B3E6BCB12894B2F900CF98C7 /* LauncherDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LauncherDialog.cxx; sourceTree = ""; }; + B3E6BCB22894B2F900CF98C7 /* StellaSettingsDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StellaSettingsDialog.hxx; sourceTree = ""; }; + B3E6BCB32894B2F900CF98C7 /* RomAuditDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RomAuditDialog.cxx; sourceTree = ""; }; + B3E6BCB42894B2F900CF98C7 /* RadioButtonWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RadioButtonWidget.hxx; sourceTree = ""; }; + B3E6BCB52894B2F900CF98C7 /* R77HelpDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = R77HelpDialog.cxx; sourceTree = ""; }; + B3E6BCB62894B2F900CF98C7 /* CheckListWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CheckListWidget.cxx; sourceTree = ""; }; + B3E6BCB72894B2F900CF98C7 /* TimeLineWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TimeLineWidget.hxx; sourceTree = ""; }; + B3E6BCB82894B2F900CF98C7 /* StellaMediumFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StellaMediumFont.hxx; sourceTree = ""; }; + B3E6BCB92894B2F900CF98C7 /* ConsoleFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ConsoleFont.hxx; sourceTree = ""; }; + B3E6BCBA2894B2F900CF98C7 /* RomInfoWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RomInfoWidget.hxx; sourceTree = ""; }; + B3E6BCBB2894B2F900CF98C7 /* Dialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Dialog.cxx; sourceTree = ""; }; + B3E6BCBC2894B2F900CF98C7 /* MessageMenu.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MessageMenu.hxx; sourceTree = ""; }; + B3E6BCBD2894B2F900CF98C7 /* TimeMachineDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TimeMachineDialog.hxx; sourceTree = ""; }; + B3E6BCBE2894B2F900CF98C7 /* ListWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ListWidget.cxx; sourceTree = ""; }; + B3E6BCBF2894B2F900CF98C7 /* TimeMachine.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TimeMachine.cxx; sourceTree = ""; }; + B3E6BCC02894B2F900CF98C7 /* UIDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDialog.cxx; sourceTree = ""; }; + B3E6BCC12894B2F900CF98C7 /* FileListWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FileListWidget.cxx; sourceTree = ""; }; + B3E6BCC22894B2F900CF98C7 /* EmulationDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EmulationDialog.cxx; sourceTree = ""; }; + B3E6BCC32894B2F900CF98C7 /* AboutDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AboutDialog.cxx; sourceTree = ""; }; + B3E6BCC42894B2F900CF98C7 /* ToolTip.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ToolTip.hxx; sourceTree = ""; }; + B3E6BCC52894B2F900CF98C7 /* Launcher.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Launcher.hxx; sourceTree = ""; }; + B3E6BCC62894B2F900CF98C7 /* ConsoleMediumBFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ConsoleMediumBFont.hxx; sourceTree = ""; }; + B3E6BCC72894B2F900CF98C7 /* InputTextDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InputTextDialog.cxx; sourceTree = ""; }; + B3E6BCC82894B2F900CF98C7 /* QuadTariDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = QuadTariDialog.hxx; sourceTree = ""; }; + B3E6BCC92894B2F900CF98C7 /* UndoHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = UndoHandler.hxx; sourceTree = ""; }; + B3E6BCCA2894B2F900CF98C7 /* DeveloperDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DeveloperDialog.cxx; sourceTree = ""; }; + B3E6BCCB2894B2F900CF98C7 /* StellaFont.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = StellaFont.hxx; sourceTree = ""; }; + B3E6BCCC2894B2F900CF98C7 /* HelpDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = HelpDialog.hxx; sourceTree = ""; }; + B3E6BCCD2894B2F900CF98C7 /* SnapshotDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SnapshotDialog.hxx; sourceTree = ""; }; + B3E6BCCE2894B2F900CF98C7 /* PlusRomsMenu.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlusRomsMenu.cxx; sourceTree = ""; }; + B3E6BCCF2894B2F900CF98C7 /* JoystickDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = JoystickDialog.hxx; sourceTree = ""; }; + B3E6BCD02894B2F900CF98C7 /* MinUICommandDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MinUICommandDialog.cxx; sourceTree = ""; }; + B3E6BCD12894B2F900CF98C7 /* VideoAudioDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = VideoAudioDialog.hxx; sourceTree = ""; }; + B3E6BCD22894B2F900CF98C7 /* BrowserDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = BrowserDialog.hxx; sourceTree = ""; }; + B3E6BCD32894B2F900CF98C7 /* EventMappingWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EventMappingWidget.cxx; sourceTree = ""; }; + B3E6BCD42894B2F900CF98C7 /* GlobalPropsDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GlobalPropsDialog.cxx; sourceTree = ""; }; + B3E6BCD52894B2F900CF98C7 /* OptionsDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OptionsDialog.hxx; sourceTree = ""; }; + B3E6BCD62894B2F900CF98C7 /* PlusRomsSetupDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlusRomsSetupDialog.cxx; sourceTree = ""; }; + B3E6BCD72894B2F900CF98C7 /* EditTextWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EditTextWidget.hxx; sourceTree = ""; }; + B3E6BCD82894B2F900CF98C7 /* Icon.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Icon.hxx; sourceTree = ""; }; + B3E6BCD92894B2F900CF98C7 /* CommandDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CommandDialog.hxx; sourceTree = ""; }; + B3E6BCDA2894B2F900CF98C7 /* PopUpWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PopUpWidget.hxx; sourceTree = ""; }; + B3E6BCDB2894B2F900CF98C7 /* Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Widget.cxx; sourceTree = ""; }; + B3E6BCDC2894B2F900CF98C7 /* ScrollBarWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollBarWidget.cxx; sourceTree = ""; }; + B3E6BCDD2894B2F900CF98C7 /* ProgressDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ProgressDialog.cxx; sourceTree = ""; }; + B3E6BCDF2894B2F900CF98C7 /* CartDebug.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDebug.hxx; sourceTree = ""; }; + B3E6BCE02894B2F900CF98C7 /* BreakpointMap.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = BreakpointMap.hxx; sourceTree = ""; }; + B3E6BCE12894B2F900CF98C7 /* DebuggerParser.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerParser.cxx; sourceTree = ""; }; + B3E6BCE22894B2F900CF98C7 /* DebuggerExpressions.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DebuggerExpressions.hxx; sourceTree = ""; }; + B3E6BCE32894B2F900CF98C7 /* DiStella.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DiStella.hxx; sourceTree = ""; }; + B3E6BCE42894B2F900CF98C7 /* RiotDebug.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RiotDebug.hxx; sourceTree = ""; }; + B3E6BCE52894B2F900CF98C7 /* CpuDebug.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CpuDebug.hxx; sourceTree = ""; }; + B3E6BCE62894B2F900CF98C7 /* Debugger.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Debugger.cxx; sourceTree = ""; }; + B3E6BCE72894B2F900CF98C7 /* TrapArray.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TrapArray.hxx; sourceTree = ""; }; + B3E6BCE82894B2F900CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BCE92894B2F900CF98C7 /* TIADebug.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TIADebug.cxx; sourceTree = ""; }; + B3E6BCEA2894B2F900CF98C7 /* CpuDebug.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CpuDebug.cxx; sourceTree = ""; }; + B3E6BCEB2894B2F900CF98C7 /* Debugger.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Debugger.hxx; sourceTree = ""; }; + B3E6BCEC2894B2F900CF98C7 /* DebuggerSystem.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DebuggerSystem.hxx; sourceTree = ""; }; + B3E6BCEE2894B2F900CF98C7 /* CartBUSWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartBUSWidget.hxx; sourceTree = ""; }; + B3E6BCEF2894B2F900CF98C7 /* CartBFWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartBFWidget.cxx; sourceTree = ""; }; + B3E6BCF02894B2F900CF98C7 /* CartRamWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartRamWidget.hxx; sourceTree = ""; }; + B3E6BCF12894B2F900CF98C7 /* SaveKeyWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SaveKeyWidget.cxx; sourceTree = ""; }; + B3E6BCF22894B2F900CF98C7 /* CartF6Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF6Widget.hxx; sourceTree = ""; }; + B3E6BCF32894B2F900CF98C7 /* TogglePixelWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TogglePixelWidget.cxx; sourceTree = ""; }; + B3E6BCF42894B2F900CF98C7 /* AtariMouseWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AtariMouseWidget.hxx; sourceTree = ""; }; + B3E6BCF52894B2F900CF98C7 /* RiotWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RiotWidget.hxx; sourceTree = ""; }; + B3E6BCF62894B2F900CF98C7 /* DataGridWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DataGridWidget.cxx; sourceTree = ""; }; + B3E6BCF72894B2F900CF98C7 /* CartE0Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartE0Widget.cxx; sourceTree = ""; }; + B3E6BCF82894B2F900CF98C7 /* CartDPCPlusWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDPCPlusWidget.cxx; sourceTree = ""; }; + B3E6BCF92894B2F900CF98C7 /* Cart4KSCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart4KSCWidget.hxx; sourceTree = ""; }; + B3E6BCFA2894B2F900CF98C7 /* CartF8Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF8Widget.cxx; sourceTree = ""; }; + B3E6BCFB2894B2F900CF98C7 /* CartX07Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartX07Widget.hxx; sourceTree = ""; }; + B3E6BCFC2894B2F900CF98C7 /* CartFA2Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFA2Widget.hxx; sourceTree = ""; }; + B3E6BCFD2894B2F900CF98C7 /* CartDFWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDFWidget.hxx; sourceTree = ""; }; + B3E6BCFE2894B2F900CF98C7 /* DataGridRamWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DataGridRamWidget.cxx; sourceTree = ""; }; + B3E6BCFF2894B2F900CF98C7 /* TiaOutputWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TiaOutputWidget.hxx; sourceTree = ""; }; + B3E6BD002894B2F900CF98C7 /* TrakBallWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TrakBallWidget.hxx; sourceTree = ""; }; + B3E6BD012894B2F900CF98C7 /* CartBFSCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartBFSCWidget.cxx; sourceTree = ""; }; + B3E6BD022894B2F900CF98C7 /* CartEFSCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartEFSCWidget.cxx; sourceTree = ""; }; + B3E6BD032894B2F900CF98C7 /* CartCDFWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCDFWidget.cxx; sourceTree = ""; }; + B3E6BD042894B2F900CF98C7 /* Cart0840Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart0840Widget.cxx; sourceTree = ""; }; + B3E6BD052894B2F900CF98C7 /* RomListSettings.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RomListSettings.cxx; sourceTree = ""; }; + B3E6BD062894B2F900CF98C7 /* CartF0Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF0Widget.hxx; sourceTree = ""; }; + B3E6BD072894B2F900CF98C7 /* Cart3EPlusWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3EPlusWidget.cxx; sourceTree = ""; }; + B3E6BD082894B2F900CF98C7 /* CartUAWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartUAWidget.hxx; sourceTree = ""; }; + B3E6BD092894B2F900CF98C7 /* PaddleWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PaddleWidget.cxx; sourceTree = ""; }; + B3E6BD0A2894B2F900CF98C7 /* AtariVoxWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AtariVoxWidget.cxx; sourceTree = ""; }; + B3E6BD0B2894B2F900CF98C7 /* ToggleBitWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ToggleBitWidget.hxx; sourceTree = ""; }; + B3E6BD0C2894B2F900CF98C7 /* RiotRamWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RiotRamWidget.hxx; sourceTree = ""; }; + B3E6BD0D2894B2F900CF98C7 /* Cart2KWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart2KWidget.hxx; sourceTree = ""; }; + B3E6BD0E2894B2F900CF98C7 /* CartARMWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartARMWidget.hxx; sourceTree = ""; }; + B3E6BD0F2894B2F900CF98C7 /* CartSBWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartSBWidget.hxx; sourceTree = ""; }; + B3E6BD102894B2F900CF98C7 /* DrivingWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DrivingWidget.cxx; sourceTree = ""; }; + B3E6BD112894B2F900CF98C7 /* CartDFSCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDFSCWidget.cxx; sourceTree = ""; }; + B3E6BD122894B2F900CF98C7 /* Cart4KWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4KWidget.cxx; sourceTree = ""; }; + B3E6BD132894B2F900CF98C7 /* CpuWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CpuWidget.hxx; sourceTree = ""; }; + B3E6BD142894B2F900CF98C7 /* FlashWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FlashWidget.hxx; sourceTree = ""; }; + B3E6BD152894B2F900CF98C7 /* AudioWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AudioWidget.cxx; sourceTree = ""; }; + B3E6BD162894B2F900CF98C7 /* CartMDMWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartMDMWidget.hxx; sourceTree = ""; }; + B3E6BD172894B2F900CF98C7 /* Cart4A50Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart4A50Widget.hxx; sourceTree = ""; }; + B3E6BD182894B2F900CF98C7 /* NullControlWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = NullControlWidget.hxx; sourceTree = ""; }; + B3E6BD192894B2F900CF98C7 /* CartFAWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFAWidget.hxx; sourceTree = ""; }; + B3E6BD1A2894B2F900CF98C7 /* CartF4Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF4Widget.cxx; sourceTree = ""; }; + B3E6BD1B2894B2F900CF98C7 /* QuadTariWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = QuadTariWidget.cxx; sourceTree = ""; }; + B3E6BD1C2894B2F900CF98C7 /* TiaZoomWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TiaZoomWidget.cxx; sourceTree = ""; }; + B3E6BD1D2894B2F900CF98C7 /* PromptWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PromptWidget.cxx; sourceTree = ""; }; + B3E6BD1E2894B2F900CF98C7 /* CartWDWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartWDWidget.cxx; sourceTree = ""; }; + B3E6BD1F2894B2F900CF98C7 /* CartCVWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCVWidget.cxx; sourceTree = ""; }; + B3E6BD202894B2F900CF98C7 /* CartBUSInfoWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartBUSInfoWidget.hxx; sourceTree = ""; }; + B3E6BD212894B2F900CF98C7 /* CartTVBoyWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartTVBoyWidget.cxx; sourceTree = ""; }; + B3E6BD222894B2F900CF98C7 /* CartDPCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDPCWidget.cxx; sourceTree = ""; }; + B3E6BD232894B2F900CF98C7 /* PointingDeviceWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PointingDeviceWidget.hxx; sourceTree = ""; }; + B3E6BD242894B2F900CF98C7 /* GenesisWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GenesisWidget.cxx; sourceTree = ""; }; + B3E6BD252894B2F900CF98C7 /* CartF8SCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF8SCWidget.hxx; sourceTree = ""; }; + B3E6BD262894B2F900CF98C7 /* BoosterWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = BoosterWidget.hxx; sourceTree = ""; }; + B3E6BD272894B2F900CF98C7 /* RamWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RamWidget.cxx; sourceTree = ""; }; + B3E6BD282894B2F900CF98C7 /* Cart3EWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart3EWidget.hxx; sourceTree = ""; }; + B3E6BD292894B2F900CF98C7 /* AmigaMouseWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AmigaMouseWidget.cxx; sourceTree = ""; }; + B3E6BD2A2894B2F900CF98C7 /* Cart3FWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3FWidget.cxx; sourceTree = ""; }; + B3E6BD2B2894B2F900CF98C7 /* CartFEWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFEWidget.cxx; sourceTree = ""; }; + B3E6BD2C2894B2F900CF98C7 /* CartDebugWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDebugWidget.cxx; sourceTree = ""; }; + B3E6BD2D2894B2F900CF98C7 /* CartCMWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCMWidget.hxx; sourceTree = ""; }; + B3E6BD2E2894B2F900CF98C7 /* CartCTYWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCTYWidget.hxx; sourceTree = ""; }; + B3E6BD2F2894B2F900CF98C7 /* CartCDFInfoWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCDFInfoWidget.cxx; sourceTree = ""; }; + B3E6BD302894B2F900CF98C7 /* CartE7Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartE7Widget.cxx; sourceTree = ""; }; + B3E6BD312894B2F900CF98C7 /* CartARWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartARWidget.hxx; sourceTree = ""; }; + B3E6BD322894B2F900CF98C7 /* KeyboardWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = KeyboardWidget.cxx; sourceTree = ""; }; + B3E6BD332894B2F900CF98C7 /* JoystickWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JoystickWidget.cxx; sourceTree = ""; }; + B3E6BD342894B2F900CF98C7 /* DelayQueueWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DelayQueueWidget.cxx; sourceTree = ""; }; + B3E6BD352894B2F900CF98C7 /* Cart0FA0Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart0FA0Widget.hxx; sourceTree = ""; }; + B3E6BD362894B2FA00CF98C7 /* TiaWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TiaWidget.cxx; sourceTree = ""; }; + B3E6BD372894B2FA00CF98C7 /* RomListWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RomListWidget.cxx; sourceTree = ""; }; + B3E6BD382894B2FA00CF98C7 /* RomWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RomWidget.hxx; sourceTree = ""; }; + B3E6BD392894B2FA00CF98C7 /* TiaInfoWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TiaInfoWidget.hxx; sourceTree = ""; }; + B3E6BD3A2894B2FA00CF98C7 /* CartF6SCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF6SCWidget.cxx; sourceTree = ""; }; + B3E6BD3B2894B2FA00CF98C7 /* DataGridOpsWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DataGridOpsWidget.hxx; sourceTree = ""; }; + B3E6BD3C2894B2FA00CF98C7 /* CartFCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFCWidget.cxx; sourceTree = ""; }; + B3E6BD3D2894B2FA00CF98C7 /* DebuggerDialog.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DebuggerDialog.hxx; sourceTree = ""; }; + B3E6BD3E2894B2FA00CF98C7 /* CartF4SCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF4SCWidget.hxx; sourceTree = ""; }; + B3E6BD3F2894B2FA00CF98C7 /* Joy2BPlusWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Joy2BPlusWidget.cxx; sourceTree = ""; }; + B3E6BD402894B2FA00CF98C7 /* ToggleWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ToggleWidget.hxx; sourceTree = ""; }; + B3E6BD412894B2FA00CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BD422894B2FA00CF98C7 /* CartEnhancedWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartEnhancedWidget.hxx; sourceTree = ""; }; + B3E6BD432894B2FA00CF98C7 /* CartEFWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartEFWidget.cxx; sourceTree = ""; }; + B3E6BD442894B2FA00CF98C7 /* TiaZoomWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TiaZoomWidget.hxx; sourceTree = ""; }; + B3E6BD452894B2FA00CF98C7 /* CartF4Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF4Widget.hxx; sourceTree = ""; }; + B3E6BD462894B2FA00CF98C7 /* QuadTariWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = QuadTariWidget.hxx; sourceTree = ""; }; + B3E6BD472894B2FA00CF98C7 /* PromptWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PromptWidget.hxx; sourceTree = ""; }; + B3E6BD482894B2FA00CF98C7 /* CartCVWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCVWidget.hxx; sourceTree = ""; }; + B3E6BD492894B2FA00CF98C7 /* CartTVBoyWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartTVBoyWidget.hxx; sourceTree = ""; }; + B3E6BD4A2894B2FA00CF98C7 /* CartBUSInfoWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartBUSInfoWidget.cxx; sourceTree = ""; }; + B3E6BD4B2894B2FA00CF98C7 /* CartWDWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartWDWidget.hxx; sourceTree = ""; }; + B3E6BD4C2894B2FA00CF98C7 /* GenesisWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = GenesisWidget.hxx; sourceTree = ""; }; + B3E6BD4D2894B2FA00CF98C7 /* CartF8SCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF8SCWidget.cxx; sourceTree = ""; }; + B3E6BD4E2894B2FA00CF98C7 /* CartDPCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDPCWidget.hxx; sourceTree = ""; }; + B3E6BD4F2894B2FA00CF98C7 /* PointingDeviceWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PointingDeviceWidget.cxx; sourceTree = ""; }; + B3E6BD502894B2FA00CF98C7 /* BoosterWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BoosterWidget.cxx; sourceTree = ""; }; + B3E6BD512894B2FA00CF98C7 /* AmigaMouseWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AmigaMouseWidget.hxx; sourceTree = ""; }; + B3E6BD522894B2FA00CF98C7 /* RamWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RamWidget.hxx; sourceTree = ""; }; + B3E6BD532894B2FA00CF98C7 /* Cart3EWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3EWidget.cxx; sourceTree = ""; }; + B3E6BD542894B2FA00CF98C7 /* Cart3FWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart3FWidget.hxx; sourceTree = ""; }; + B3E6BD552894B2FA00CF98C7 /* CartFEWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFEWidget.hxx; sourceTree = ""; }; + B3E6BD562894B2FA00CF98C7 /* CartCMWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCMWidget.cxx; sourceTree = ""; }; + B3E6BD572894B2FA00CF98C7 /* CartDebugWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDebugWidget.hxx; sourceTree = ""; }; + B3E6BD582894B2FA00CF98C7 /* CartARWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartARWidget.cxx; sourceTree = ""; }; + B3E6BD592894B2FA00CF98C7 /* KeyboardWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyboardWidget.hxx; sourceTree = ""; }; + B3E6BD5A2894B2FA00CF98C7 /* CartCTYWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCTYWidget.cxx; sourceTree = ""; }; + B3E6BD5B2894B2FA00CF98C7 /* CartE7Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartE7Widget.hxx; sourceTree = ""; }; + B3E6BD5C2894B2FA00CF98C7 /* CartCDFInfoWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCDFInfoWidget.hxx; sourceTree = ""; }; + B3E6BD5D2894B2FA00CF98C7 /* ControllerWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ControllerWidget.hxx; sourceTree = ""; }; + B3E6BD5E2894B2FA00CF98C7 /* Cart0FA0Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart0FA0Widget.cxx; sourceTree = ""; }; + B3E6BD5F2894B2FA00CF98C7 /* TiaWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TiaWidget.hxx; sourceTree = ""; }; + B3E6BD602894B2FA00CF98C7 /* JoystickWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = JoystickWidget.hxx; sourceTree = ""; }; + B3E6BD612894B2FA00CF98C7 /* DelayQueueWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DelayQueueWidget.hxx; sourceTree = ""; }; + B3E6BD622894B2FA00CF98C7 /* RomWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RomWidget.cxx; sourceTree = ""; }; + B3E6BD632894B2FA00CF98C7 /* RomListWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RomListWidget.hxx; sourceTree = ""; }; + B3E6BD642894B2FA00CF98C7 /* CartF6SCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF6SCWidget.hxx; sourceTree = ""; }; + B3E6BD652894B2FA00CF98C7 /* TiaInfoWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TiaInfoWidget.cxx; sourceTree = ""; }; + B3E6BD662894B2FA00CF98C7 /* Joy2BPlusWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Joy2BPlusWidget.hxx; sourceTree = ""; }; + B3E6BD672894B2FA00CF98C7 /* CartF4SCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF4SCWidget.cxx; sourceTree = ""; }; + B3E6BD682894B2FA00CF98C7 /* CartFCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFCWidget.hxx; sourceTree = ""; }; + B3E6BD692894B2FA00CF98C7 /* DataGridOpsWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DataGridOpsWidget.cxx; sourceTree = ""; }; + B3E6BD6A2894B2FA00CF98C7 /* DebuggerDialog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerDialog.cxx; sourceTree = ""; }; + B3E6BD6B2894B2FA00CF98C7 /* ToggleWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ToggleWidget.cxx; sourceTree = ""; }; + B3E6BD6C2894B2FA00CF98C7 /* CartEFWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartEFWidget.hxx; sourceTree = ""; }; + B3E6BD6D2894B2FA00CF98C7 /* CartEnhancedWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartEnhancedWidget.cxx; sourceTree = ""; }; + B3E6BD6E2894B2FA00CF98C7 /* CartBFWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartBFWidget.hxx; sourceTree = ""; }; + B3E6BD6F2894B2FA00CF98C7 /* CartBUSWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartBUSWidget.cxx; sourceTree = ""; }; + B3E6BD702894B2FA00CF98C7 /* CartRamWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartRamWidget.cxx; sourceTree = ""; }; + B3E6BD712894B2FA00CF98C7 /* TogglePixelWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TogglePixelWidget.hxx; sourceTree = ""; }; + B3E6BD722894B2FA00CF98C7 /* CartF6Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF6Widget.cxx; sourceTree = ""; }; + B3E6BD732894B2FA00CF98C7 /* SaveKeyWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SaveKeyWidget.hxx; sourceTree = ""; }; + B3E6BD742894B2FA00CF98C7 /* DataGridWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DataGridWidget.hxx; sourceTree = ""; }; + B3E6BD752894B2FA00CF98C7 /* CartE0Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartE0Widget.hxx; sourceTree = ""; }; + B3E6BD762894B2FA00CF98C7 /* RiotWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RiotWidget.cxx; sourceTree = ""; }; + B3E6BD772894B2FA00CF98C7 /* AtariMouseWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AtariMouseWidget.cxx; sourceTree = ""; }; + B3E6BD782894B2FA00CF98C7 /* Cart4KSCWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4KSCWidget.cxx; sourceTree = ""; }; + B3E6BD792894B2FA00CF98C7 /* CartDPCPlusWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDPCPlusWidget.hxx; sourceTree = ""; }; + B3E6BD7A2894B2FA00CF98C7 /* CartX07Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartX07Widget.cxx; sourceTree = ""; }; + B3E6BD7B2894B2FA00CF98C7 /* CartF8Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF8Widget.hxx; sourceTree = ""; }; + B3E6BD7C2894B2FA00CF98C7 /* DataGridRamWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DataGridRamWidget.hxx; sourceTree = ""; }; + B3E6BD7D2894B2FA00CF98C7 /* CartFA2Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFA2Widget.cxx; sourceTree = ""; }; + B3E6BD7E2894B2FA00CF98C7 /* CartDFWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDFWidget.cxx; sourceTree = ""; }; + B3E6BD7F2894B2FA00CF98C7 /* CartEFSCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartEFSCWidget.hxx; sourceTree = ""; }; + B3E6BD802894B2FA00CF98C7 /* TrakBallWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TrakBallWidget.cxx; sourceTree = ""; }; + B3E6BD812894B2FA00CF98C7 /* CartBFSCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartBFSCWidget.hxx; sourceTree = ""; }; + B3E6BD822894B2FA00CF98C7 /* TiaOutputWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TiaOutputWidget.cxx; sourceTree = ""; }; + B3E6BD832894B2FA00CF98C7 /* Cart3EPlusWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart3EPlusWidget.hxx; sourceTree = ""; }; + B3E6BD842894B2FA00CF98C7 /* RomListSettings.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RomListSettings.hxx; sourceTree = ""; }; + B3E6BD852894B2FA00CF98C7 /* CartF0Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF0Widget.cxx; sourceTree = ""; }; + B3E6BD862894B2FA00CF98C7 /* Cart0840Widget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart0840Widget.hxx; sourceTree = ""; }; + B3E6BD872894B2FA00CF98C7 /* CartCDFWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCDFWidget.hxx; sourceTree = ""; }; + B3E6BD882894B2FA00CF98C7 /* PaddleWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PaddleWidget.hxx; sourceTree = ""; }; + B3E6BD892894B2FA00CF98C7 /* CartUAWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartUAWidget.cxx; sourceTree = ""; }; + B3E6BD8A2894B2FA00CF98C7 /* RiotRamWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RiotRamWidget.cxx; sourceTree = ""; }; + B3E6BD8B2894B2FA00CF98C7 /* ToggleBitWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ToggleBitWidget.cxx; sourceTree = ""; }; + B3E6BD8C2894B2FA00CF98C7 /* AtariVoxWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AtariVoxWidget.hxx; sourceTree = ""; }; + B3E6BD8D2894B2FA00CF98C7 /* Cart2KWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart2KWidget.cxx; sourceTree = ""; }; + B3E6BD8E2894B2FA00CF98C7 /* DrivingWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DrivingWidget.hxx; sourceTree = ""; }; + B3E6BD8F2894B2FA00CF98C7 /* CartARMWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartARMWidget.cxx; sourceTree = ""; }; + B3E6BD902894B2FA00CF98C7 /* CartSBWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartSBWidget.cxx; sourceTree = ""; }; + B3E6BD912894B2FA00CF98C7 /* CpuWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CpuWidget.cxx; sourceTree = ""; }; + B3E6BD922894B2FA00CF98C7 /* CartDFSCWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDFSCWidget.hxx; sourceTree = ""; }; + B3E6BD932894B2FA00CF98C7 /* Cart4KWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart4KWidget.hxx; sourceTree = ""; }; + B3E6BD942894B2FA00CF98C7 /* Cart4A50Widget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4A50Widget.cxx; sourceTree = ""; }; + B3E6BD952894B2FA00CF98C7 /* CartMDMWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartMDMWidget.cxx; sourceTree = ""; }; + B3E6BD962894B2FA00CF98C7 /* FlashWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FlashWidget.cxx; sourceTree = ""; }; + B3E6BD972894B2FA00CF98C7 /* AudioWidget.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AudioWidget.hxx; sourceTree = ""; }; + B3E6BD982894B2FA00CF98C7 /* CartFAWidget.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFAWidget.cxx; sourceTree = ""; }; + B3E6BD992894B2FA00CF98C7 /* TIADebug.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TIADebug.hxx; sourceTree = ""; }; + B3E6BD9A2894B2FA00CF98C7 /* CartDebug.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDebug.cxx; sourceTree = ""; }; + B3E6BD9B2894B2FA00CF98C7 /* BreakpointMap.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BreakpointMap.cxx; sourceTree = ""; }; + B3E6BD9C2894B2FA00CF98C7 /* DebuggerParser.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DebuggerParser.hxx; sourceTree = ""; }; + B3E6BD9D2894B2FA00CF98C7 /* DiStella.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DiStella.cxx; sourceTree = ""; }; + B3E6BD9E2894B2FA00CF98C7 /* Expression.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Expression.hxx; sourceTree = ""; }; + B3E6BD9F2894B2FA00CF98C7 /* RiotDebug.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RiotDebug.cxx; sourceTree = ""; }; + B3E6BDBD2894B2FA00CF98C7 /* Driving.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Driving.hxx; sourceTree = ""; }; + B3E6BDBE2894B2FA00CF98C7 /* CartF8.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF8.cxx; sourceTree = ""; }; + B3E6BDBF2894B2FA00CF98C7 /* EventHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EventHandler.cxx; sourceTree = ""; }; + B3E6BDC02894B2FA00CF98C7 /* FBBackend.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FBBackend.hxx; sourceTree = ""; }; + B3E6BDC12894B2FA00CF98C7 /* CartDF.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDF.cxx; sourceTree = ""; }; + B3E6BDC22894B2FA00CF98C7 /* OSystemStandalone.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OSystemStandalone.cxx; sourceTree = ""; }; + B3E6BDC32894B2FA00CF98C7 /* Cart3E.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3E.cxx; sourceTree = ""; }; + B3E6BDC42894B2FA00CF98C7 /* CartX07.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartX07.cxx; sourceTree = ""; }; + B3E6BDC52894B2FA00CF98C7 /* QuadTari.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = QuadTari.hxx; sourceTree = ""; }; + B3E6BDC62894B2FA00CF98C7 /* CartCDF.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCDF.hxx; sourceTree = ""; }; + B3E6BDC72894B2FA00CF98C7 /* Cart.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart.cxx; sourceTree = ""; }; + B3E6BDC82894B2FA00CF98C7 /* FBSurface.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FBSurface.cxx; sourceTree = ""; }; + B3E6BDC92894B2FA00CF98C7 /* CartF0.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF0.hxx; sourceTree = ""; }; + B3E6BDCA2894B2FA00CF98C7 /* Settings.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Settings.cxx; sourceTree = ""; }; + B3E6BDCB2894B2FA00CF98C7 /* DispatchResult.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DispatchResult.hxx; sourceTree = ""; }; + B3E6BDCD2894B2FA00CF98C7 /* Ball.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Ball.cxx; sourceTree = ""; }; + B3E6BDCE2894B2FA00CF98C7 /* DrawCounterDecodes.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DrawCounterDecodes.hxx; sourceTree = ""; }; + B3E6BDCF2894B2FA00CF98C7 /* Missile.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Missile.cxx; sourceTree = ""; }; + B3E6BDD02894B2FA00CF98C7 /* DelayQueueMember.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DelayQueueMember.hxx; sourceTree = ""; }; + B3E6BDD12894B2FA00CF98C7 /* Player.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Player.hxx; sourceTree = ""; }; + B3E6BDD22894B2FA00CF98C7 /* DelayQueue.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DelayQueue.hxx; sourceTree = ""; }; + B3E6BDD32894B2FA00CF98C7 /* TIA.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TIA.hxx; sourceTree = ""; }; + B3E6BDD42894B2FA00CF98C7 /* AudioChannel.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AudioChannel.cxx; sourceTree = ""; }; + B3E6BDD52894B2FA00CF98C7 /* FrameLayout.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FrameLayout.hxx; sourceTree = ""; }; + B3E6BDD62894B2FA00CF98C7 /* Background.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Background.cxx; sourceTree = ""; }; + B3E6BDD72894B2FA00CF98C7 /* DelayQueueIterator.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DelayQueueIterator.hxx; sourceTree = ""; }; + B3E6BDD82894B2FA00CF98C7 /* Audio.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Audio.hxx; sourceTree = ""; }; + B3E6BDD92894B2FA00CF98C7 /* AnalogReadout.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AnalogReadout.hxx; sourceTree = ""; }; + B3E6BDDA2894B2FA00CF98C7 /* Playfield.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Playfield.hxx; sourceTree = ""; }; + B3E6BDDB2894B2FA00CF98C7 /* LatchedInput.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LatchedInput.cxx; sourceTree = ""; }; + B3E6BDDC2894B2FA00CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BDDD2894B2FA00CF98C7 /* Audio.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Audio.cxx; sourceTree = ""; }; + B3E6BDDE2894B2FA00CF98C7 /* Background.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Background.hxx; sourceTree = ""; }; + B3E6BDDF2894B2FA00CF98C7 /* AnalogReadout.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AnalogReadout.cxx; sourceTree = ""; }; + B3E6BDE02894B2FA00CF98C7 /* DelayQueueIteratorImpl.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DelayQueueIteratorImpl.hxx; sourceTree = ""; }; + B3E6BDE12894B2FA00CF98C7 /* LatchedInput.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = LatchedInput.hxx; sourceTree = ""; }; + B3E6BDE22894B2FA00CF98C7 /* Playfield.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Playfield.cxx; sourceTree = ""; }; + B3E6BDE32894B2FB00CF98C7 /* Ball.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Ball.hxx; sourceTree = ""; }; + B3E6BDE42894B2FB00CF98C7 /* Missile.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Missile.hxx; sourceTree = ""; }; + B3E6BDE52894B2FB00CF98C7 /* DrawCounterDecodes.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DrawCounterDecodes.cxx; sourceTree = ""; }; + B3E6BDE62894B2FB00CF98C7 /* Player.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Player.cxx; sourceTree = ""; }; + B3E6BDE72894B2FB00CF98C7 /* TIA.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TIA.cxx; sourceTree = ""; }; + B3E6BDE92894B2FB00CF98C7 /* JitterEmulation.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = JitterEmulation.hxx; sourceTree = ""; }; + B3E6BDEA2894B2FB00CF98C7 /* FrameManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrameManager.cxx; sourceTree = ""; }; + B3E6BDEB2894B2FB00CF98C7 /* AbstractFrameManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AbstractFrameManager.hxx; sourceTree = ""; }; + B3E6BDEC2894B2FB00CF98C7 /* FrameLayoutDetector.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FrameLayoutDetector.hxx; sourceTree = ""; }; + B3E6BDED2894B2FB00CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BDEE2894B2FB00CF98C7 /* AbstractFrameManager.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractFrameManager.cxx; sourceTree = ""; }; + B3E6BDEF2894B2FB00CF98C7 /* FrameLayoutDetector.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrameLayoutDetector.cxx; sourceTree = ""; }; + B3E6BDF02894B2FB00CF98C7 /* JitterEmulation.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JitterEmulation.cxx; sourceTree = ""; }; + B3E6BDF12894B2FB00CF98C7 /* FrameManager.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FrameManager.hxx; sourceTree = ""; }; + B3E6BDF22894B2FB00CF98C7 /* AudioChannel.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AudioChannel.hxx; sourceTree = ""; }; + B3E6BDF32894B2FB00CF98C7 /* TIAConstants.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TIAConstants.hxx; sourceTree = ""; }; + B3E6BDF42894B2FB00CF98C7 /* CartBUS.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartBUS.cxx; sourceTree = ""; }; + B3E6BDF52894B2FB00CF98C7 /* EmulationTiming.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EmulationTiming.cxx; sourceTree = ""; }; + B3E6BDF62894B2FB00CF98C7 /* Cart2K.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart2K.hxx; sourceTree = ""; }; + B3E6BDF72894B2FB00CF98C7 /* Cart3F.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3F.cxx; sourceTree = ""; }; + B3E6BDF82894B2FB00CF98C7 /* CartE7.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartE7.cxx; sourceTree = ""; }; + B3E6BDF92894B2FB00CF98C7 /* CartFA2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFA2.cxx; sourceTree = ""; }; + B3E6BDFA2894B2FB00CF98C7 /* CartTVBoy.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartTVBoy.hxx; sourceTree = ""; }; + B3E6BDFB2894B2FB00CF98C7 /* CartF8SC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF8SC.cxx; sourceTree = ""; }; + B3E6BDFC2894B2FB00CF98C7 /* CartFE.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFE.hxx; sourceTree = ""; }; + B3E6BDFD2894B2FB00CF98C7 /* CartEnhanced.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartEnhanced.hxx; sourceTree = ""; }; + B3E6BDFE2894B2FB00CF98C7 /* Joystick.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Joystick.cxx; sourceTree = ""; }; + B3E6BDFF2894B2FB00CF98C7 /* Props.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Props.hxx; sourceTree = ""; }; + B3E6BE002894B2FB00CF98C7 /* Keyboard.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Keyboard.cxx; sourceTree = ""; }; + B3E6BE012894B2FB00CF98C7 /* Serializer.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Serializer.cxx; sourceTree = ""; }; + B3E6BE022894B2FB00CF98C7 /* Cart0840.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart0840.hxx; sourceTree = ""; }; + B3E6BE032894B2FB00CF98C7 /* CartFA.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFA.hxx; sourceTree = ""; }; + B3E6BE042894B2FB00CF98C7 /* CartF4SC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF4SC.hxx; sourceTree = ""; }; + B3E6BE052894B2FB00CF98C7 /* CartEFSC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartEFSC.hxx; sourceTree = ""; }; + B3E6BE062894B2FB00CF98C7 /* SaveKey.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SaveKey.cxx; sourceTree = ""; }; + B3E6BE072894B2FB00CF98C7 /* CartBFSC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartBFSC.cxx; sourceTree = ""; }; + B3E6BE082894B2FB00CF98C7 /* Genesis.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Genesis.hxx; sourceTree = ""; }; + B3E6BE092894B2FB00CF98C7 /* CartF6.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF6.hxx; sourceTree = ""; }; + B3E6BE0A2894B2FB00CF98C7 /* AtariMouse.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AtariMouse.hxx; sourceTree = ""; }; + B3E6BE0B2894B2FB00CF98C7 /* TIASurface.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TIASurface.cxx; sourceTree = ""; }; + B3E6BE0C2894B2FB00CF98C7 /* CartDetector.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDetector.cxx; sourceTree = ""; }; + B3E6BE0D2894B2FB00CF98C7 /* NullDev.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = NullDev.hxx; sourceTree = ""; }; + B3E6BE0E2894B2FB00CF98C7 /* MD5.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MD5.hxx; sourceTree = ""; }; + B3E6BE0F2894B2FB00CF98C7 /* CartF4.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF4.hxx; sourceTree = ""; }; + B3E6BE102894B2FB00CF98C7 /* GlobalKeyHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = GlobalKeyHandler.hxx; sourceTree = ""; }; + B3E6BE112894B2FB00CF98C7 /* CartARM.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartARM.hxx; sourceTree = ""; }; + B3E6BE122894B2FB00CF98C7 /* CartMDM.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartMDM.hxx; sourceTree = ""; }; + B3E6BE132894B2FB00CF98C7 /* Cart3EPlus.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3EPlus.cxx; sourceTree = ""; }; + B3E6BE142894B2FB00CF98C7 /* CartSB.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartSB.hxx; sourceTree = ""; }; + B3E6BE152894B2FB00CF98C7 /* CartEF.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartEF.cxx; sourceTree = ""; }; + B3E6BE162894B2FB00CF98C7 /* CartF6SC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF6SC.hxx; sourceTree = ""; }; + B3E6BE172894B2FB00CF98C7 /* Cart4KSC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart4KSC.hxx; sourceTree = ""; }; + B3E6BE182894B2FB00CF98C7 /* CartE0.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartE0.cxx; sourceTree = ""; }; + B3E6BE192894B2FB00CF98C7 /* CartFC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFC.hxx; sourceTree = ""; }; + B3E6BE1A2894B2FB00CF98C7 /* PointingDevice.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PointingDevice.cxx; sourceTree = ""; }; + B3E6BE1B2894B2FB00CF98C7 /* FSNode.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FSNode.cxx; sourceTree = ""; }; + B3E6BE1C2894B2FB00CF98C7 /* AtariVox.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AtariVox.hxx; sourceTree = ""; }; + B3E6BE1D2894B2FB00CF98C7 /* MT24LC256.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MT24LC256.cxx; sourceTree = ""; }; + B3E6BE1E2894B2FB00CF98C7 /* Cart4K.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart4K.hxx; sourceTree = ""; }; + B3E6BE1F2894B2FB00CF98C7 /* CartWD.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartWD.cxx; sourceTree = ""; }; + B3E6BE202894B2FB00CF98C7 /* CartCV.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCV.cxx; sourceTree = ""; }; + B3E6BE212894B2FB00CF98C7 /* CartDPCPlus.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDPCPlus.cxx; sourceTree = ""; }; + B3E6BE222894B2FB00CF98C7 /* Cart3EX.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart3EX.hxx; sourceTree = ""; }; + B3E6BE232894B2FB00CF98C7 /* Paddles.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Paddles.cxx; sourceTree = ""; }; + B3E6BE242894B2FB00CF98C7 /* Bankswitch.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Bankswitch.cxx; sourceTree = ""; }; + B3E6BE252894B2FB00CF98C7 /* Cart4A50.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart4A50.hxx; sourceTree = ""; }; + B3E6BE262894B2FB00CF98C7 /* CompuMate.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CompuMate.cxx; sourceTree = ""; }; + B3E6BE272894B2FB00CF98C7 /* M6532.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = M6532.hxx; sourceTree = ""; }; + B3E6BE282894B2FB00CF98C7 /* Switches.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Switches.cxx; sourceTree = ""; }; + B3E6BE292894B2FB00CF98C7 /* KidVid.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KidVid.hxx; sourceTree = ""; }; + B3E6BE2A2894B2FB00CF98C7 /* CartBF.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartBF.cxx; sourceTree = ""; }; + B3E6BE2B2894B2FB00CF98C7 /* MindLink.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MindLink.hxx; sourceTree = ""; }; + B3E6BE2C2894B2FB00CF98C7 /* Joy2BPlus.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Joy2BPlus.hxx; sourceTree = ""; }; + B3E6BE2D2894B2FB00CF98C7 /* Device.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Device.hxx; sourceTree = ""; }; + B3E6BE2E2894B2FB00CF98C7 /* System.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = System.cxx; sourceTree = ""; }; + B3E6BE2F2894B2FB00CF98C7 /* CartCreator.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCreator.cxx; sourceTree = ""; }; + B3E6BE302894B2FB00CF98C7 /* M6502.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = M6502.cxx; sourceTree = ""; }; + B3E6BE312894B2FB00CF98C7 /* ControllerDetector.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ControllerDetector.cxx; sourceTree = ""; }; + B3E6BE322894B2FB00CF98C7 /* Thumbulator.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Thumbulator.hxx; sourceTree = ""; }; + B3E6BE332894B2FB00CF98C7 /* FrameBuffer.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FrameBuffer.hxx; sourceTree = ""; }; + B3E6BE342894B2FB00CF98C7 /* Control.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Control.cxx; sourceTree = ""; }; + B3E6BE352894B2FB00CF98C7 /* CartCTY.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCTY.hxx; sourceTree = ""; }; + B3E6BE362894B2FB00CF98C7 /* Cart0FA0.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart0FA0.cxx; sourceTree = ""; }; + B3E6BE372894B2FB00CF98C7 /* Lightgun.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Lightgun.cxx; sourceTree = ""; }; + B3E6BE382894B2FB00CF98C7 /* CartAR.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartAR.hxx; sourceTree = ""; }; + B3E6BE392894B2FB00CF98C7 /* CartCM.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCM.hxx; sourceTree = ""; }; + B3E6BE3A2894B2FB00CF98C7 /* SerialPort.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SerialPort.hxx; sourceTree = ""; }; + B3E6BE3B2894B2FB00CF98C7 /* Random.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Random.hxx; sourceTree = ""; }; + B3E6BE3C2894B2FB00CF98C7 /* PlusROM.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PlusROM.hxx; sourceTree = ""; }; + B3E6BE3D2894B2FB00CF98C7 /* Booster.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Booster.cxx; sourceTree = ""; }; + B3E6BE3E2894B2FB00CF98C7 /* CartUA.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartUA.hxx; sourceTree = ""; }; + B3E6BE3F2894B2FB00CF98C7 /* CartMVC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartMVC.cxx; sourceTree = ""; }; + B3E6BE402894B2FB00CF98C7 /* CartDPC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDPC.hxx; sourceTree = ""; }; + B3E6BE412894B2FB00CF98C7 /* module.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = module.mk; sourceTree = ""; }; + B3E6BE422894B2FB00CF98C7 /* OSystem.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OSystem.cxx; sourceTree = ""; }; + B3E6BE432894B2FB00CF98C7 /* CartDFSC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDFSC.cxx; sourceTree = ""; }; + B3E6BE442894B2FB00CF98C7 /* Console.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Console.hxx; sourceTree = ""; }; + B3E6BE452894B2FB00CF98C7 /* PropsSet.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PropsSet.hxx; sourceTree = ""; }; + B3E6BE462894B2FB00CF98C7 /* ProfilingRunner.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ProfilingRunner.hxx; sourceTree = ""; }; + B3E6BE472894B2FB00CF98C7 /* EmulationWorker.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EmulationWorker.hxx; sourceTree = ""; }; + B3E6BE482894B2FB00CF98C7 /* MT24LC256.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MT24LC256.hxx; sourceTree = ""; }; + B3E6BE492894B2FB00CF98C7 /* AtariVox.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AtariVox.cxx; sourceTree = ""; }; + B3E6BE4A2894B2FB00CF98C7 /* CartCV.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCV.hxx; sourceTree = ""; }; + B3E6BE4B2894B2FB00CF98C7 /* CartDPCPlus.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDPCPlus.hxx; sourceTree = ""; }; + B3E6BE4C2894B2FB00CF98C7 /* Cart3EX.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3EX.cxx; sourceTree = ""; }; + B3E6BE4D2894B2FB00CF98C7 /* Cart4K.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4K.cxx; sourceTree = ""; }; + B3E6BE4E2894B2FB00CF98C7 /* CartWD.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartWD.hxx; sourceTree = ""; }; + B3E6BE4F2894B2FB00CF98C7 /* Paddles.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Paddles.hxx; sourceTree = ""; }; + B3E6BE502894B2FB00CF98C7 /* Bankswitch.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Bankswitch.hxx; sourceTree = ""; }; + B3E6BE512894B2FB00CF98C7 /* M6532.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = M6532.cxx; sourceTree = ""; }; + B3E6BE522894B2FB00CF98C7 /* CompuMate.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CompuMate.hxx; sourceTree = ""; }; + B3E6BE532894B2FB00CF98C7 /* Cart4A50.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4A50.cxx; sourceTree = ""; }; + B3E6BE542894B2FB00CF98C7 /* CartBF.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartBF.hxx; sourceTree = ""; }; + B3E6BE552894B2FB00CF98C7 /* Sound.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Sound.hxx; sourceTree = ""; }; + B3E6BE562894B2FB00CF98C7 /* MindLink.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MindLink.cxx; sourceTree = ""; }; + B3E6BE572894B2FB00CF98C7 /* KidVid.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = KidVid.cxx; sourceTree = ""; }; + B3E6BE582894B2FB00CF98C7 /* Switches.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Switches.hxx; sourceTree = ""; }; + B3E6BE592894B2FB00CF98C7 /* System.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = System.hxx; sourceTree = ""; }; + B3E6BE5A2894B2FB00CF98C7 /* TrakBall.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TrakBall.hxx; sourceTree = ""; }; + B3E6BE5B2894B2FB00CF98C7 /* Joy2BPlus.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Joy2BPlus.cxx; sourceTree = ""; }; + B3E6BE5C2894B2FB00CF98C7 /* ControllerDetector.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ControllerDetector.hxx; sourceTree = ""; }; + B3E6BE5D2894B2FB00CF98C7 /* Thumbulator.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Thumbulator.cxx; sourceTree = ""; }; + B3E6BE5E2894B2FB00CF98C7 /* Serializable.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Serializable.hxx; sourceTree = ""; }; + B3E6BE5F2894B2FB00CF98C7 /* M6502.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = M6502.hxx; sourceTree = ""; }; + B3E6BE602894B2FB00CF98C7 /* CartCreator.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartCreator.hxx; sourceTree = ""; }; + B3E6BE612894B2FB00CF98C7 /* ConsoleIO.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ConsoleIO.hxx; sourceTree = ""; }; + B3E6BE622894B2FB00CF98C7 /* FrameBuffer.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrameBuffer.cxx; sourceTree = ""; }; + B3E6BE632894B2FB00CF98C7 /* CartCTY.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCTY.cxx; sourceTree = ""; }; + B3E6BE642894B2FB00CF98C7 /* EventHandlerConstants.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EventHandlerConstants.hxx; sourceTree = ""; }; + B3E6BE652894B2FB00CF98C7 /* Control.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Control.hxx; sourceTree = ""; }; + B3E6BE662894B2FB00CF98C7 /* Cart0FA0.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart0FA0.hxx; sourceTree = ""; }; + B3E6BE672894B2FB00CF98C7 /* FrameBufferConstants.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FrameBufferConstants.hxx; sourceTree = ""; }; + B3E6BE682894B2FB00CF98C7 /* M6502.ins */ = {isa = PBXFileReference; lastKnownFileType = text; path = M6502.ins; sourceTree = ""; }; + B3E6BE692894B2FB00CF98C7 /* CartAR.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartAR.cxx; sourceTree = ""; }; + B3E6BE6A2894B2FB00CF98C7 /* Lightgun.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Lightgun.hxx; sourceTree = ""; }; + B3E6BE6B2894B2FB00CF98C7 /* CartCM.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCM.cxx; sourceTree = ""; }; + B3E6BE6C2894B2FB00CF98C7 /* CartDPC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartDPC.cxx; sourceTree = ""; }; + B3E6BE6D2894B2FB00CF98C7 /* Booster.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Booster.hxx; sourceTree = ""; }; + B3E6BE6E2894B2FB00CF98C7 /* CartUA.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartUA.cxx; sourceTree = ""; }; + B3E6BE6F2894B2FB00CF98C7 /* PlusROM.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlusROM.cxx; sourceTree = ""; }; + B3E6BE702894B2FB00CF98C7 /* CartMVC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartMVC.hxx; sourceTree = ""; }; + B3E6BE712894B2FB00CF98C7 /* Console.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Console.cxx; sourceTree = ""; }; + B3E6BE722894B2FB00CF98C7 /* ConsoleTiming.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ConsoleTiming.hxx; sourceTree = ""; }; + B3E6BE732894B2FB00CF98C7 /* ProfilingRunner.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ProfilingRunner.cxx; sourceTree = ""; }; + B3E6BE742894B2FB00CF98C7 /* EmulationWorker.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EmulationWorker.cxx; sourceTree = ""; }; + B3E6BE752894B2FB00CF98C7 /* PropsSet.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PropsSet.cxx; sourceTree = ""; }; + B3E6BE762894B2FB00CF98C7 /* CartDFSC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDFSC.hxx; sourceTree = ""; }; + B3E6BE772894B2FB00CF98C7 /* OSystem.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OSystem.hxx; sourceTree = ""; }; + B3E6BE782894B2FB00CF98C7 /* stella.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = stella.pro; sourceTree = ""; }; + B3E6BE792894B2FB00CF98C7 /* OSystemStandalone.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = OSystemStandalone.hxx; sourceTree = ""; }; + B3E6BE7A2894B2FB00CF98C7 /* Cart3E.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart3E.hxx; sourceTree = ""; }; + B3E6BE7B2894B2FB00CF98C7 /* EventHandler.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EventHandler.hxx; sourceTree = ""; }; + B3E6BE7C2894B2FB00CF98C7 /* CartF8.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF8.hxx; sourceTree = ""; }; + B3E6BE7D2894B2FB00CF98C7 /* CartDF.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDF.hxx; sourceTree = ""; }; + B3E6BE7E2894B2FB00CF98C7 /* QuadTari.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = QuadTari.cxx; sourceTree = ""; }; + B3E6BE7F2894B2FB00CF98C7 /* CartX07.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartX07.hxx; sourceTree = ""; }; + B3E6BE802894B2FB00CF98C7 /* Driving.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Driving.cxx; sourceTree = ""; }; + B3E6BE812894B2FB00CF98C7 /* FBSurface.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FBSurface.hxx; sourceTree = ""; }; + B3E6BE822894B2FB00CF98C7 /* Cart.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart.hxx; sourceTree = ""; }; + B3E6BE832894B2FB00CF98C7 /* CartF0.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF0.cxx; sourceTree = ""; }; + B3E6BE842894B2FB00CF98C7 /* CartCDF.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartCDF.cxx; sourceTree = ""; }; + B3E6BE852894B2FB00CF98C7 /* DispatchResult.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DispatchResult.cxx; sourceTree = ""; }; + B3E6BE862894B2FB00CF98C7 /* Settings.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Settings.hxx; sourceTree = ""; }; + B3E6BE872894B2FB00CF98C7 /* EmulationTiming.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EmulationTiming.hxx; sourceTree = ""; }; + B3E6BE882894B2FB00CF98C7 /* CartBUS.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartBUS.hxx; sourceTree = ""; }; + B3E6BE892894B2FB00CF98C7 /* CartE7.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartE7.hxx; sourceTree = ""; }; + B3E6BE8A2894B2FB00CF98C7 /* Cart3F.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart3F.hxx; sourceTree = ""; }; + B3E6BE8B2894B2FB00CF98C7 /* Cart2K.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart2K.cxx; sourceTree = ""; }; + B3E6BE8C2894B2FB00CF98C7 /* CartTVBoy.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartTVBoy.cxx; sourceTree = ""; }; + B3E6BE8D2894B2FB00CF98C7 /* CartF8SC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartF8SC.hxx; sourceTree = ""; }; + B3E6BE8E2894B2FB00CF98C7 /* CartFE.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFE.cxx; sourceTree = ""; }; + B3E6BE8F2894B2FB00CF98C7 /* CartFA2.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartFA2.hxx; sourceTree = ""; }; + B3E6BE902894B2FB00CF98C7 /* Joystick.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Joystick.hxx; sourceTree = ""; }; + B3E6BE912894B2FB00CF98C7 /* Props.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Props.cxx; sourceTree = ""; }; + B3E6BE922894B2FB00CF98C7 /* Keyboard.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Keyboard.hxx; sourceTree = ""; }; + B3E6BE932894B2FB00CF98C7 /* ControlLowLevel.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ControlLowLevel.hxx; sourceTree = ""; }; + B3E6BE942894B2FB00CF98C7 /* CartEnhanced.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartEnhanced.cxx; sourceTree = ""; }; + B3E6BE952894B2FB00CF98C7 /* Cart0840.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart0840.cxx; sourceTree = ""; }; + B3E6BE962894B2FB00CF98C7 /* Serializer.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Serializer.hxx; sourceTree = ""; }; + B3E6BE972894B2FB00CF98C7 /* AmigaMouse.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = AmigaMouse.hxx; sourceTree = ""; }; + B3E6BE992894B2FB00CF98C7 /* FatalEmulationError.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FatalEmulationError.hxx; sourceTree = ""; }; + B3E6BE9A2894B2FB00CF98C7 /* EmulationWarning.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = EmulationWarning.hxx; sourceTree = ""; }; + B3E6BE9B2894B2FB00CF98C7 /* CartBFSC.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartBFSC.hxx; sourceTree = ""; }; + B3E6BE9C2894B2FB00CF98C7 /* SaveKey.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = SaveKey.hxx; sourceTree = ""; }; + B3E6BE9D2894B2FC00CF98C7 /* CartFA.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFA.cxx; sourceTree = ""; }; + B3E6BE9E2894B2FC00CF98C7 /* CartF4SC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF4SC.cxx; sourceTree = ""; }; + B3E6BE9F2894B2FC00CF98C7 /* CartEFSC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartEFSC.cxx; sourceTree = ""; }; + B3E6BEA02894B2FC00CF98C7 /* Genesis.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Genesis.cxx; sourceTree = ""; }; + B3E6BEA12894B2FC00CF98C7 /* CartF6.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF6.cxx; sourceTree = ""; }; + B3E6BEA22894B2FC00CF98C7 /* TIASurface.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TIASurface.hxx; sourceTree = ""; }; + B3E6BEA32894B2FC00CF98C7 /* CartDetector.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartDetector.hxx; sourceTree = ""; }; + B3E6BEA42894B2FC00CF98C7 /* Event.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Event.hxx; sourceTree = ""; }; + B3E6BEA52894B2FC00CF98C7 /* MD5.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MD5.cxx; sourceTree = ""; }; + B3E6BEA62894B2FC00CF98C7 /* CartMDM.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartMDM.cxx; sourceTree = ""; }; + B3E6BEA72894B2FC00CF98C7 /* CartARM.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartARM.cxx; sourceTree = ""; }; + B3E6BEA82894B2FC00CF98C7 /* CartF4.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF4.cxx; sourceTree = ""; }; + B3E6BEA92894B2FC00CF98C7 /* DefProps.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = DefProps.hxx; sourceTree = ""; }; + B3E6BEAA2894B2FC00CF98C7 /* GlobalKeyHandler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GlobalKeyHandler.cxx; sourceTree = ""; }; + B3E6BEAB2894B2FC00CF98C7 /* CartFC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartFC.cxx; sourceTree = ""; }; + B3E6BEAC2894B2FC00CF98C7 /* CartSB.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartSB.cxx; sourceTree = ""; }; + B3E6BEAD2894B2FC00CF98C7 /* M6502.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = M6502.m4; sourceTree = ""; }; + B3E6BEAE2894B2FC00CF98C7 /* Cart3EPlus.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Cart3EPlus.hxx; sourceTree = ""; }; + B3E6BEAF2894B2FC00CF98C7 /* CartF6SC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CartF6SC.cxx; sourceTree = ""; }; + B3E6BEB02894B2FC00CF98C7 /* Cart4KSC.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4KSC.cxx; sourceTree = ""; }; + B3E6BEB12894B2FC00CF98C7 /* CartE0.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartE0.hxx; sourceTree = ""; }; + B3E6BEB22894B2FC00CF98C7 /* CartEF.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CartEF.hxx; sourceTree = ""; }; + B3E6BEB32894B2FC00CF98C7 /* PointingDevice.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = PointingDevice.hxx; sourceTree = ""; }; + B3E6BEB42894B2FC00CF98C7 /* FSNode.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FSNode.hxx; sourceTree = ""; }; + B3E6BF6F2894BE4F00CF98C7 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B305EEAB276B4BDF003AE510 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B305EF94276B4E8C003AE510 /* PVSupport.framework in Frameworks */, - B305EF38276B4DD8003AE510 /* CoreGraphics.framework in Frameworks */, - B305EF3A276B4DE5003AE510 /* CoreAudio.framework in Frameworks */, - B305EF36276B4DCD003AE510 /* Foundation.framework in Frameworks */, - B305EF3C276B4DF0003AE510 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B38FB4BC1C839BE500CD73BE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -406,22 +1661,17 @@ B3C96E8A1D62C21A003F1E93 /* CoreGraphics.framework in Frameworks */, B3C96E891D62C211003F1E93 /* AudioToolbox.framework in Frameworks */, B3271BDF276B8C660031AECC /* OpenGL.framework in Frameworks */, - B3C96E881D62C20C003F1E93 /* UIKit.framework in Frameworks */, + B3E6BF292894B3F800CF98C7 /* libstella.a in Frameworks */, B3C96E871D62C203003F1E93 /* OpenGLES.framework in Frameworks */, B3C96E861D62C1FE003F1E93 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3C96DFA1D62BE5A003F1E93 /* Frameworks */ = { + B3D3AECE2894B23500EEBA1E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B324C64B2192165C009F4EDC /* PVSupport.framework in Frameworks */, - B3C96E941D62C245003F1E93 /* CoreGraphics.framework in Frameworks */, - B3C96E921D62C23C003F1E93 /* AudioToolbox.framework in Frameworks */, - B3C96E901D62C233003F1E93 /* OpenGLES.framework in Frameworks */, - B3C96E8E1D62C22A003F1E93 /* UIKit.framework in Frameworks */, - B3C96E8C1D62C227003F1E93 /* Foundation.framework in Frameworks */, + B3E6BF702894BE4F00CF98C7 /* libz.tbd in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -431,9 +1681,10 @@ 089C166AFE841209C02AAC07 /* VisualBoyAdvance */ = { isa = PBXGroup; children = ( - B3A849461C70FD06008A4D89 /* PVStella */, - B38FB4C11C839BE500CD73BE /* Stella */, - B305EEAF276B4BDF003AE510 /* PVStella-watchOS */, + B31B115528949D550044F0E6 /* BuildFlags.xcconfig */, + B31B11562894A02D0044F0E6 /* PVStellaGameCore */, + 94A9E27F157D637B0083A7DC /* Stella */, + B38FB4C11C839BE500CD73BE /* PVStella */, 089C1671FE841209C02AAC07 /* Frameworks */, 19C28FB8FE9D52D311CA2CBB /* Products */, ); @@ -443,6 +1694,7 @@ 089C1671FE841209C02AAC07 /* Frameworks */ = { isa = PBXGroup; children = ( + B3E6BF6F2894BE4F00CF98C7 /* libz.tbd */, B3271BDE276B8C660031AECC /* OpenGL.framework */, B305EF93276B4E8C003AE510 /* PVSupport.framework */, B305EF3B276B4DEF003AE510 /* UIKit.framework */, @@ -467,909 +1719,2652 @@ name = Frameworks; sourceTree = ""; }; - 08FB77AFFE84173DC02AAC07 /* Classes */ = { + 19C28FB8FE9D52D311CA2CBB /* Products */ = { isa = PBXGroup; children = ( - B5008DAD0E8BFB3E005AECAF /* PVStellaGameCore.h */, - 941DFB2615B6425200C6552F /* PVStellaGameCore.mm */, + B38FB4C01C839BE500CD73BE /* PVStella.framework */, + B3D3AED42894B23500EEBA1E /* libstella.a */, ); - name = Classes; - path = PVStella/Stella; + name = Products; sourceTree = ""; }; - 19C28FB8FE9D52D311CA2CBB /* Products */ = { + 94A9E27F157D637B0083A7DC /* Stella */ = { isa = PBXGroup; children = ( - B38FB4C01C839BE500CD73BE /* PVStella.framework */, - B3C96DFE1D62BE5A003F1E93 /* PVStella.framework */, - B305EEAE276B4BDF003AE510 /* PVStella.framework */, + B3E6B8B12894B2F200CF98C7 /* stella */, ); - name = Products; + path = Stella; sourceTree = ""; }; - 941DFA5A15B4C9A100C6552F /* stella */ = { - isa = PBXGroup; - children = ( - 941DFA5B15B4C9A100C6552F /* cart */, - 941DFA9615B4C9A100C6552F /* Console.cpp */, - 941DFA9715B4C9A100C6552F /* Console.hxx */, - 941DFA9815B4C9A100C6552F /* input */, - 940DD91B15B9D3C300542C50 /* FSNode.cpp */, - 940DD92015B9D59200542C50 /* FSNodePOSIX.cpp */, - 940DD91C15B9D3C300542C50 /* FSNode.hxx */, - 940DD91D15B9D3C300542C50 /* SharedPtr.hxx */, - 941DFAB615B4C9A100C6552F /* properties */, - 941DFABC15B4C9A100C6552F /* Settings.cpp */, - 941DFABD15B4C9A100C6552F /* Settings.hxx */, - 941DFABE15B4C9A100C6552F /* Sound.hxx */, - 941DFABF15B4C9A100C6552F /* SoundSDL.cpp */, - 941DFAC015B4C9A100C6552F /* SoundSDL.hxx */, - 941DFAC115B4C9A100C6552F /* stella.cpp */, - 941DFAC215B4C9A100C6552F /* stella.h */, - 941DFAC315B4C9A100C6552F /* system */, - 941DFAD415B4C9A100C6552F /* utility */, - 941DFADF15B4C9A100C6552F /* Version.hxx */, + B312F91E292B0F1E00286CFE /* lib */ = { + isa = PBXGroup; + children = ( + B312F91F292B0F1E00286CFE /* libpng */, + B312F937292B0F1E00286CFE /* sqlite */, + B312F93F292B0F1E00286CFE /* nanojpeg */, + B312F942292B0F1E00286CFE /* httplib */, + B312F947292B0F1E00286CFE /* zlib */, + B312F964292B0F1E00286CFE /* json */, + B312F969292B0F1E00286CFE /* tinyexif */, ); - path = stella; + path = lib; sourceTree = ""; }; - 941DFA5B15B4C9A100C6552F /* cart */ = { - isa = PBXGroup; - children = ( - 941DFA5C15B4C9A100C6552F /* Cart.cpp */, - 941DFA5D15B4C9A100C6552F /* Cart.hxx */, - 941DFA5E15B4C9A100C6552F /* Cart0840.cpp */, - 941DFA5F15B4C9A100C6552F /* Cart0840.hxx */, - 941DFA6015B4C9A100C6552F /* Cart2K.cpp */, - 941DFA6115B4C9A100C6552F /* Cart2K.hxx */, - 941DFA6215B4C9A100C6552F /* Cart3E.cpp */, - 941DFA6315B4C9A100C6552F /* Cart3E.hxx */, - 941DFA6415B4C9A100C6552F /* Cart3F.cpp */, - 941DFA6515B4C9A100C6552F /* Cart3F.hxx */, - 941DFA6615B4C9A100C6552F /* Cart4A50.cpp */, - 941DFA6715B4C9A100C6552F /* Cart4A50.hxx */, - 941DFA6815B4C9A100C6552F /* Cart4K.cpp */, - 941DFA6915B4C9A100C6552F /* Cart4K.hxx */, - 941DFA6A15B4C9A100C6552F /* CartAR.cpp */, - 941DFA6B15B4C9A100C6552F /* CartAR.hxx */, - 941DFA6C15B4C9A100C6552F /* CartCV.cpp */, - 941DFA6D15B4C9A100C6552F /* CartCV.hxx */, - 941DFA6E15B4C9A100C6552F /* CartDPC.cpp */, - 941DFA6F15B4C9A100C6552F /* CartDPC.hxx */, - 941DFA7015B4C9A100C6552F /* CartDPCPlus.cpp */, - 941DFA7115B4C9A100C6552F /* CartDPCPlus.hxx */, - 941DFA7215B4C9A100C6552F /* CartE0.cpp */, - 941DFA7315B4C9A100C6552F /* CartE0.hxx */, - 941DFA7415B4C9A100C6552F /* CartE7.cpp */, - 941DFA7515B4C9A100C6552F /* CartE7.hxx */, - 941DFA7615B4C9A100C6552F /* CartEF.cpp */, - 941DFA7715B4C9A100C6552F /* CartEF.hxx */, - 941DFA7815B4C9A100C6552F /* CartEFSC.cpp */, - 941DFA7915B4C9A100C6552F /* CartEFSC.hxx */, - 941DFA7A15B4C9A100C6552F /* CartF0.cpp */, - 941DFA7B15B4C9A100C6552F /* CartF0.hxx */, - 941DFA7C15B4C9A100C6552F /* CartF4.cpp */, - 941DFA7D15B4C9A100C6552F /* CartF4.hxx */, - 941DFA7E15B4C9A100C6552F /* CartF4SC.cpp */, - 941DFA7F15B4C9A100C6552F /* CartF4SC.hxx */, - 941DFA8015B4C9A100C6552F /* CartF6.cpp */, - 941DFA8115B4C9A100C6552F /* CartF6.hxx */, - 941DFA8215B4C9A100C6552F /* CartF6SC.cpp */, - 941DFA8315B4C9A100C6552F /* CartF6SC.hxx */, - 941DFA8415B4C9A100C6552F /* CartF8.cpp */, - 941DFA8515B4C9A100C6552F /* CartF8.hxx */, - 941DFA8615B4C9A100C6552F /* CartF8SC.cpp */, - 941DFA8715B4C9A100C6552F /* CartF8SC.hxx */, - 941DFA8815B4C9A100C6552F /* CartFA.cpp */, - 941DFA8915B4C9A100C6552F /* CartFA.hxx */, - 941DFA8A15B4C9A100C6552F /* CartFE.cpp */, - 941DFA8B15B4C9A100C6552F /* CartFE.hxx */, - 941DFA8C15B4C9A100C6552F /* CartMC.cpp */, - 941DFA8D15B4C9A100C6552F /* CartMC.hxx */, - 941DFA8E15B4C9A100C6552F /* CartSB.cpp */, - 941DFA8F15B4C9A100C6552F /* CartSB.hxx */, - 941DFA9015B4C9A100C6552F /* CartUA.cpp */, - 941DFA9115B4C9A100C6552F /* CartUA.hxx */, - 941DFA9215B4C9A100C6552F /* CartX07.cpp */, - 941DFA9315B4C9A100C6552F /* CartX07.hxx */, - 941DFA9415B4C9A100C6552F /* Thumbulator.cpp */, - 941DFA9515B4C9A100C6552F /* Thumbulator.hxx */, - ); - path = cart; - sourceTree = ""; - }; - 941DFA9815B4C9A100C6552F /* input */ = { - isa = PBXGroup; - children = ( - 941DFA9915B4C9A100C6552F /* AtariVox.cpp */, - 941DFA9A15B4C9A100C6552F /* AtariVox.hxx */, - 941DFA9B15B4C9A100C6552F /* Booster.cpp */, - 941DFA9C15B4C9A100C6552F /* Booster.hxx */, - 941DFA9D15B4C9A100C6552F /* Control.cpp */, - 941DFA9E15B4C9A100C6552F /* Control.hxx */, - 941DFA9F15B4C9A100C6552F /* Driving.cpp */, - 941DFAA015B4C9A100C6552F /* Driving.hxx */, - 941DFAA115B4C9A100C6552F /* Event.hxx */, - 941DFAA215B4C9A100C6552F /* Genesis.cpp */, - 941DFAA315B4C9A100C6552F /* Genesis.hxx */, - 941DFAA415B4C9A100C6552F /* Joystick.cpp */, - 941DFAA515B4C9A100C6552F /* Joystick.hxx */, - 941DFAA615B4C9A100C6552F /* Keyboard.cpp */, - 941DFAA715B4C9A100C6552F /* Keyboard.hxx */, - 941DFAA815B4C9A100C6552F /* KidVid.cpp */, - 941DFAA915B4C9A100C6552F /* KidVid.hxx */, - 941DFAAA15B4C9A100C6552F /* MT24LC256.cpp */, - 941DFAAB15B4C9A100C6552F /* MT24LC256.hxx */, - 941DFAAC15B4C9A100C6552F /* Paddles.cpp */, - 941DFAAD15B4C9A100C6552F /* Paddles.hxx */, - 941DFAAE15B4C9A100C6552F /* SaveKey.cpp */, - 941DFAAF15B4C9A100C6552F /* SaveKey.hxx */, - 941DFAB015B4C9A100C6552F /* SerialPort.hxx */, - 941DFAB115B4C9A100C6552F /* Switches.cpp */, - 941DFAB215B4C9A100C6552F /* Switches.hxx */, - 941DFAB315B4C9A100C6552F /* TrackBall.cpp */, - 941DFAB415B4C9A100C6552F /* TrackBall.hxx */, - ); - path = input; - sourceTree = ""; - }; - 941DFAB615B4C9A100C6552F /* properties */ = { - isa = PBXGroup; - children = ( - 941DFAB715B4C9A100C6552F /* DefProps.hxx */, - 941DFAB815B4C9A100C6552F /* Props.cpp */, - 941DFAB915B4C9A100C6552F /* Props.hxx */, - 941DFABA15B4C9A100C6552F /* PropsSet.cpp */, - 941DFABB15B4C9A100C6552F /* PropsSet.hxx */, - ); - path = properties; - sourceTree = ""; - }; - 941DFAC315B4C9A100C6552F /* system */ = { - isa = PBXGroup; - children = ( - 941DFAC415B4C9A100C6552F /* Device.hxx */, - 941DFAC515B4C9A100C6552F /* M6502.cpp */, - 941DFAC615B4C9A100C6552F /* M6502.hxx */, - 941DFAC715B4C9A100C6552F /* M6502.ins */, - 941DFAC815B4C9A100C6552F /* M6532.cpp */, - 941DFAC915B4C9A100C6552F /* M6532.hxx */, - 941DFACA15B4C9A100C6552F /* NullDev.cpp */, - 941DFACB15B4C9A100C6552F /* NullDev.hxx */, - 941DFACC15B4C9A100C6552F /* System.cpp */, - 941DFACD15B4C9A100C6552F /* System.hxx */, - 941DFACE15B4C9A100C6552F /* TIA.cpp */, - 941DFACF15B4C9A100C6552F /* TIA.hxx */, - 941DFAD015B4C9A100C6552F /* TIASnd.cpp */, - 941DFAD115B4C9A100C6552F /* TIASnd.hxx */, - 941DFAD215B4C9A100C6552F /* TIATables.cpp */, - 941DFAD315B4C9A100C6552F /* TIATables.hxx */, - ); - path = system; - sourceTree = ""; - }; - 941DFAD415B4C9A100C6552F /* utility */ = { - isa = PBXGroup; - children = ( - 941DFAD515B4C9A100C6552F /* Array.hxx */, - 941DFAD615B4C9A100C6552F /* bspf.hxx */, - 941DFAD715B4C9A100C6552F /* MD5.cpp */, - 941DFAD815B4C9A100C6552F /* MD5.hxx */, - 941DFAD915B4C9A100C6552F /* Random.cpp */, - 941DFADA15B4C9A100C6552F /* Random.hxx */, - 941DFADB15B4C9A100C6552F /* Serializable.hxx */, - 941DFADC15B4C9A100C6552F /* Serializer.cpp */, - 941DFADD15B4C9A100C6552F /* Serializer.hxx */, - 941DFADE15B4C9A100C6552F /* StringList.hxx */, + B312F91F292B0F1E00286CFE /* libpng */ = { + isa = PBXGroup; + children = ( + B312F920292B0F1E00286CFE /* pnginfo.h */, + B312F921292B0F1E00286CFE /* pngrio.c */, + B312F922292B0F1E00286CFE /* pngerror.c */, + B312F923292B0F1E00286CFE /* pngwio.c */, + B312F924292B0F1E00286CFE /* pngstruct.h */, + B312F925292B0F1E00286CFE /* pngtrans.c */, + B312F926292B0F1E00286CFE /* pngpriv.h */, + B312F927292B0F1E00286CFE /* pngwrite.c */, + B312F928292B0F1E00286CFE /* png.h */, + B312F929292B0F1E00286CFE /* module.mk */, + B312F92A292B0F1E00286CFE /* pngwutil.c */, + B312F92B292B0F1E00286CFE /* pngwtran.c */, + B312F92C292B0F1E00286CFE /* pnglibconf.h */, + B312F92D292B0F1E00286CFE /* pngconf.h */, + B312F92E292B0F1E00286CFE /* pngpread.c */, + B312F92F292B0F1E00286CFE /* pngdebug.h */, + B312F930292B0F1E00286CFE /* pngread.c */, + B312F931292B0F1E00286CFE /* pngmem.c */, + B312F932292B0F1E00286CFE /* pngget.c */, + B312F933292B0F1E00286CFE /* png.c */, + B312F934292B0F1E00286CFE /* pngrtran.c */, + B312F935292B0F1E00286CFE /* pngrutil.c */, + B312F936292B0F1E00286CFE /* pngset.c */, ); - path = utility; + path = libpng; sourceTree = ""; }; - 94A9E27F157D637B0083A7DC /* StellaCore */ = { + B312F937292B0F1E00286CFE /* sqlite */ = { isa = PBXGroup; children = ( - 941DFB2415B632E000C6552F /* libretro.cpp */, - 94A9E281157D637B0083A7DC /* libretro.h */, - 94A9E282157D637B0083A7DC /* src */, + B312F938292B0F1E00286CFE /* sqlite3.c */, + B312F939292B0F1E00286CFE /* sqlite_options.h */, + B312F93A292B0F1E00286CFE /* source */, + B312F93D292B0F1E00286CFE /* module.mk */, + B312F93E292B0F1E00286CFE /* sqlite3.h */, ); - name = StellaCore; - path = PVStella/Stella/StellaCore; + path = sqlite; sourceTree = ""; }; - 94A9E282157D637B0083A7DC /* src */ = { + B312F93A292B0F1E00286CFE /* source */ = { isa = PBXGroup; children = ( - 941DFA5A15B4C9A100C6552F /* stella */, + B312F93B292B0F1E00286CFE /* sqlite3.c */, + B312F93C292B0F1E00286CFE /* sqlite3.h */, ); - path = src; + path = source; sourceTree = ""; }; - B305EEAF276B4BDF003AE510 /* PVStella-watchOS */ = { + B312F93F292B0F1E00286CFE /* nanojpeg */ = { isa = PBXGroup; children = ( - B305EEB0276B4BDF003AE510 /* PVStella_watchOS.h */, + B312F940292B0F1E00286CFE /* nanojpeg.c */, + B312F941292B0F1E00286CFE /* nanojpeg_lib.hxx */, ); - path = "PVStella-watchOS"; + path = nanojpeg; sourceTree = ""; }; - B38FB4C11C839BE500CD73BE /* Stella */ = { + B312F942292B0F1E00286CFE /* httplib */ = { isa = PBXGroup; children = ( - B3547B652058591D00CFF7D8 /* Core.plist */, - B38FB4C21C839BE500CD73BE /* PVStella.h */, - B38FB4C41C839BE500CD73BE /* Info.plist */, + B312F943292B0F1E00286CFE /* httplib.h */, + B312F944292B0F1E00286CFE /* LICENSE */, + B312F945292B0F1E00286CFE /* http_lib.hxx */, + B312F946292B0F1E00286CFE /* README.md */, ); - path = Stella; + path = httplib; sourceTree = ""; }; - B3A849461C70FD06008A4D89 /* PVStella */ = { + B312F947292B0F1E00286CFE /* zlib */ = { isa = PBXGroup; children = ( - 94A9E27F157D637B0083A7DC /* StellaCore */, - 08FB77AFFE84173DC02AAC07 /* Classes */, - B3A849531C710C36008A4D89 /* Supporting Files */, + B312F948292B0F1E00286CFE /* zutil.h */, + B312F949292B0F1E00286CFE /* inftrees.h */, + B312F94A292B0F1E00286CFE /* inflate.c */, + B312F94B292B0F1E00286CFE /* compress.c */, + B312F94C292B0F1E00286CFE /* deflate.c */, + B312F94D292B0F1E00286CFE /* inffixed.h */, + B312F94E292B0F1E00286CFE /* gzread.c */, + B312F94F292B0F1E00286CFE /* trees.h */, + B312F950292B0F1E00286CFE /* inffast.h */, + B312F951292B0F1E00286CFE /* module.mk */, + B312F952292B0F1E00286CFE /* crc32.c */, + B312F953292B0F1E00286CFE /* README */, + B312F954292B0F1E00286CFE /* infback.c */, + B312F955292B0F1E00286CFE /* zutil.c */, + B312F956292B0F1E00286CFE /* deflate.h */, + B312F957292B0F1E00286CFE /* gzguts.h */, + B312F958292B0F1E00286CFE /* zlib.h */, + B312F959292B0F1E00286CFE /* gzlib.c */, + B312F95A292B0F1E00286CFE /* inflate.h */, + B312F95B292B0F1E00286CFE /* inftrees.c */, + B312F95C292B0F1E00286CFE /* uncompr.c */, + B312F95D292B0F1E00286CFE /* gzwrite.c */, + B312F95E292B0F1E00286CFE /* trees.c */, + B312F95F292B0F1E00286CFE /* gzclose.c */, + B312F960292B0F1E00286CFE /* crc32.h */, + B312F961292B0F1E00286CFE /* inffast.c */, + B312F962292B0F1E00286CFE /* adler32.c */, + B312F963292B0F1E00286CFE /* zconf.h */, ); - name = PVStella; + path = zlib; sourceTree = ""; }; - B3A849531C710C36008A4D89 /* Supporting Files */ = { + B312F964292B0F1E00286CFE /* json */ = { isa = PBXGroup; children = ( - B3A849521C710C03008A4D89 /* PVStella-Prefix.pch */, + B312F965292B0F1E00286CFE /* LICENSE.MIT */, + B312F966292B0F1E00286CFE /* README.md */, + B312F967292B0F1E00286CFE /* json_lib.hxx */, + B312F968292B0F1E00286CFE /* json.hxx */, ); - name = "Supporting Files"; + path = json; sourceTree = ""; }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - B305EEA9276B4BDF003AE510 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B305EEF4276B4C09003AE510 /* PVStella.h in Headers */, - B305EEF3276B4C09003AE510 /* PVStellaGameCore.h in Headers */, - B305EEB1276B4BDF003AE510 /* PVStella_watchOS.h in Headers */, + B312F969292B0F1E00286CFE /* tinyexif */ = { + isa = PBXGroup; + children = ( + B312F96A292B0F1E00286CFE /* tinyexif_lib.hxx */, + B312F96B292B0F1E00286CFE /* source */, + B312F96F292B0F1E00286CFE /* module.mk */, + B312F970292B0F1E00286CFE /* tinyexif.cxx */, ); - runOnlyForDeploymentPostprocessing = 0; + path = tinyexif; + sourceTree = ""; }; - B38FB4BD1C839BE500CD73BE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B38FB4C31C839BE500CD73BE /* PVStella.h in Headers */, - B3C96E971D62C2FD003F1E93 /* PVStellaGameCore.h in Headers */, + B312F96B292B0F1E00286CFE /* source */ = { + isa = PBXGroup; + children = ( + B312F96C292B0F1E00286CFE /* TinyEXIF.h */, + B312F96D292B0F1E00286CFE /* README.md */, + B312F96E292B0F1E00286CFE /* TinyEXIF.cpp */, ); - runOnlyForDeploymentPostprocessing = 0; + path = source; + sourceTree = ""; }; - B3C96DFB1D62BE5A003F1E93 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C96EDE1D62C6A8003F1E93 /* PVStella.h in Headers */, - B3C96E981D62C2FE003F1E93 /* PVStellaGameCore.h in Headers */, + B312F971292B0F1E00286CFE /* os */ = { + isa = PBXGroup; + children = ( + B312F972292B0F1E00286CFE /* macos */, + B312F98D292B0F1E00286CFE /* unix */, + B312F99D292B0F1E00286CFE /* libretro */, + B312F9B0292B0F1E00286CFE /* windows */, ); - runOnlyForDeploymentPostprocessing = 0; + path = os; + sourceTree = ""; }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - B305EEAD276B4BDF003AE510 /* PVStella-watchOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B305EEB5276B4BDF003AE510 /* Build configuration list for PBXNativeTarget "PVStella-watchOS" */; - buildPhases = ( - B305EEA9276B4BDF003AE510 /* Headers */, - B305EEAA276B4BDF003AE510 /* Sources */, - B305EEAB276B4BDF003AE510 /* Frameworks */, - B305EEAC276B4BDF003AE510 /* Resources */, - ); - buildRules = ( + B312F972292B0F1E00286CFE /* macos */ = { + isa = PBXGroup; + children = ( + B312F973292B0F1E00286CFE /* InfoPlist.strings */, + B312F975292B0F1E00286CFE /* AboutBoxTextView.m */, + B312F976292B0F1E00286CFE /* SettingsRepositoryMACOS.mm */, + B312F977292B0F1E00286CFE /* AboutBox.nib */, + B312F978292B0F1E00286CFE /* AboutBox.h */, + B312F979292B0F1E00286CFE /* SerialPortMACOS.hxx */, + B312F97A292B0F1E00286CFE /* SDLMain.h */, + B312F97B292B0F1E00286CFE /* OSystemMACOS.hxx */, + B312F97C292B0F1E00286CFE /* SerialPortMACOS.cxx */, + B312F97D292B0F1E00286CFE /* stella.xcodeproj */, + B312F980292B0F1E00286CFE /* SDLMain.nib */, + B312F981292B0F1E00286CFE /* template.dmg.gz */, + B312F982292B0F1E00286CFE /* .gitignore */, + B312F983292B0F1E00286CFE /* Cart.icns */, + B312F984292B0F1E00286CFE /* SettingsRepositoryMACOS.hxx */, + B312F985292B0F1E00286CFE /* AboutBox.m */, + B312F986292B0F1E00286CFE /* OSystemMACOS.cxx */, + B312F987292B0F1E00286CFE /* Info-Stella.plist */, + B312F988292B0F1E00286CFE /* AboutBoxTextView.h */, + B312F989292B0F1E00286CFE /* SDLMain.m */, + B312F98A292B0F1E00286CFE /* Credits.html */, + B312F98B292B0F1E00286CFE /* Create_build.sh */, + B312F98C292B0F1E00286CFE /* Stella.icns */, ); - dependencies = ( + path = macos; + sourceTree = ""; + }; + B312F97E292B0F1E00286CFE /* Products */ = { + isa = PBXGroup; + children = ( + B312F9C4292B0F1F00286CFE /* Stella.app */, ); - name = "PVStella-watchOS"; - productName = "PVStella-watchOS"; - productReference = B305EEAE276B4BDF003AE510 /* PVStella.framework */; - productType = "com.apple.product-type.framework"; + name = Products; + sourceTree = ""; }; - B38FB4BF1C839BE500CD73BE /* PVStella-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B38FB4C51C839BE500CD73BE /* Build configuration list for PBXNativeTarget "PVStella-iOS" */; - buildPhases = ( - B38FB4BD1C839BE500CD73BE /* Headers */, - B38FB4BB1C839BE500CD73BE /* Sources */, - B38FB4BC1C839BE500CD73BE /* Frameworks */, - B38FB4BE1C839BE500CD73BE /* Resources */, + B312F98D292B0F1E00286CFE /* unix */ = { + isa = PBXGroup; + children = ( + B312F98E292B0F1E00286CFE /* OSystemUNIX.hxx */, + B312F98F292B0F1E00286CFE /* r77 */, + B312F995292B0F1E00286CFE /* FSNodePOSIX.hxx */, + B312F996292B0F1E00286CFE /* SerialPortUNIX.cxx */, + B312F997292B0F1E00286CFE /* module.mk */, + B312F998292B0F1E00286CFE /* FSNodePOSIX.cxx */, + B312F999292B0F1E00286CFE /* SerialPortUNIX.hxx */, + B312F99A292B0F1E00286CFE /* stella.spec */, + B312F99B292B0F1E00286CFE /* OSystemUNIX.cxx */, + B312F99C292B0F1E00286CFE /* stella.desktop */, ); - buildRules = ( + path = unix; + sourceTree = ""; + }; + B312F98F292B0F1E00286CFE /* r77 */ = { + isa = PBXGroup; + children = ( + B312F990292B0F1E00286CFE /* SettingsR77.cxx */, + B312F991292B0F1E00286CFE /* OSystemR77.hxx */, + B312F992292B0F1E00286CFE /* module.mk */, + B312F993292B0F1E00286CFE /* OSystemR77.cxx */, + B312F994292B0F1E00286CFE /* SettingsR77.hxx */, ); - dependencies = ( + path = r77; + sourceTree = ""; + }; + B312F99D292B0F1E00286CFE /* libretro */ = { + isa = PBXGroup; + children = ( + B312F9A1292B0F1E00286CFE /* Makefile */, + B312F9A5292B0F1E00286CFE /* Makefile.common */, + B312F9A6292B0F1E00286CFE /* FSNodeLIBRETRO.cxx */, + B312F9A0292B0F1E00286CFE /* libretro.cxx */, + B312F9AA292B0F1E00286CFE /* StellaLIBRETRO.cxx */, + B312F9AB292B0F1E00286CFE /* libretro.h */, + B312F9A3292B0F1E00286CFE /* EventHandlerLIBRETRO.hxx */, + B312F9A9292B0F1E00286CFE /* FBBackendLIBRETRO.hxx */, + B312F99E292B0F1E00286CFE /* FBSurfaceLIBRETRO.hxx */, + B312F99F292B0F1E00286CFE /* FSNodeLIBRETRO.hxx */, + B312F9A7292B0F1E00286CFE /* OSystemLIBRETRO.hxx */, + B312F9A4292B0F1E00286CFE /* SoundLIBRETRO.hxx */, + B312F9A2292B0F1E00286CFE /* StellaLIBRETRO.hxx */, + B312F9AC292B0F1E00286CFE /* link.T */, + B312F9A8292B0F1E00286CFE /* Stella.vcxproj */, + B312F9AD292B0F1E00286CFE /* jni */, ); - name = "PVStella-iOS"; - productName = Stella; - productReference = B38FB4C01C839BE500CD73BE /* PVStella.framework */; - productType = "com.apple.product-type.framework"; + path = libretro; + sourceTree = ""; }; - B3C96DFD1D62BE5A003F1E93 /* PVStella-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C96E051D62BE5A003F1E93 /* Build configuration list for PBXNativeTarget "PVStella-tvOS" */; - buildPhases = ( - B3C96DFB1D62BE5A003F1E93 /* Headers */, - B3C96DF91D62BE5A003F1E93 /* Sources */, - B3C96DFA1D62BE5A003F1E93 /* Frameworks */, - B3C96DFC1D62BE5A003F1E93 /* Resources */, + B312F9AD292B0F1E00286CFE /* jni */ = { + isa = PBXGroup; + children = ( + B312F9AE292B0F1E00286CFE /* Android.mk */, + B312F9AF292B0F1E00286CFE /* Application.mk */, ); - buildRules = ( + path = jni; + sourceTree = ""; + }; + B312F9B0292B0F1E00286CFE /* windows */ = { + isa = PBXGroup; + children = ( + B312F9B1292B0F1E00286CFE /* stella.ico */, + B312F9B2292B0F1E00286CFE /* OSystemWINDOWS.cxx */, + B312F9B3292B0F1E00286CFE /* Stella.vcxproj.filters */, + B312F9B4292B0F1E00286CFE /* Windows.hxx */, + B312F9B5292B0F1E00286CFE /* Stella.sln */, + B312F9B6292B0F1E00286CFE /* Create_Builds.bat */, + B312F9B7292B0F1E00286CFE /* FSNodeWINDOWS.cxx */, + B312F9B8292B0F1E00286CFE /* SerialPortWINDOWS.cxx */, + B312F9B9292B0F1E00286CFE /* module.mk */, + B312F9BA292B0F1E00286CFE /* Stella.vcxproj */, + B312F9BB292B0F1E00286CFE /* FSNodeWINDOWS.hxx */, + B312F9BC292B0F1E00286CFE /* HomeFinder.hxx */, + B312F9BD292B0F1E00286CFE /* resource.h */, + B312F9BE292B0F1E00286CFE /* SerialPortWINDOWS.hxx */, + B312F9BF292B0F1E00286CFE /* stella.rc */, + B312F9C0292B0F1E00286CFE /* stella.iss */, + B312F9C1292B0F1E00286CFE /* OSystemWINDOWS.hxx */, ); - dependencies = ( + path = windows; + sourceTree = ""; + }; + B31B11562894A02D0044F0E6 /* PVStellaGameCore */ = { + isa = PBXGroup; + children = ( + B31B11572894A02D0044F0E6 /* PVStellaGameCore.h */, + B31B11582894A02D0044F0E6 /* PVStellaGameCore.mm */, ); - name = "PVStella-tvOS"; - productName = StellaTV; - productReference = B3C96DFE1D62BE5A003F1E93 /* PVStella.framework */; - productType = "com.apple.product-type.framework"; + path = PVStellaGameCore; + sourceTree = ""; }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - CLASSPREFIX = PV; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = "Provenance Emu"; - TargetAttributes = { - B305EEAD276B4BDF003AE510 = { - CreatedOnToolsVersion = 13.2; - }; - B38FB4BF1C839BE500CD73BE = { - CreatedOnToolsVersion = 7.2.1; - }; - B3C96DFD1D62BE5A003F1E93 = { - CreatedOnToolsVersion = 7.3.1; - }; - }; - }; - buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVStella" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 1; - knownRegions = ( - en, - Base, + B38FB4C11C839BE500CD73BE /* PVStella */ = { + isa = PBXGroup; + children = ( + B3547B652058591D00CFF7D8 /* Core.plist */, + B38FB4C21C839BE500CD73BE /* PVStella.h */, + B38FB4C41C839BE500CD73BE /* Info.plist */, ); - mainGroup = 089C166AFE841209C02AAC07 /* VisualBoyAdvance */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - B38FB4BF1C839BE500CD73BE /* PVStella-iOS */, - B3C96DFD1D62BE5A003F1E93 /* PVStella-tvOS */, - B305EEAD276B4BDF003AE510 /* PVStella-watchOS */, + path = PVStella; + sourceTree = ""; + }; + B3E6B8B12894B2F200CF98C7 /* stella */ = { + isa = PBXGroup; + children = ( + B3E6BB1F2894B2F600CF98C7 /* src */, + B3E6BB1A2894B2F600CF98C7 /* .gitignore */, + B3E6BAB82894B2F600CF98C7 /* configure */, + B3E6BABA2894B2F600CF98C7 /* Makefile */, + B3E6BABB2894B2F600CF98C7 /* config.guess */, + B3E6BB162894B2F600CF98C7 /* README.md */, + B3E6BB152894B2F600CF98C7 /* common.rules */, + B3E6BB182894B2F600CF98C7 /* config.sub */, + B3E6BABC2894B2F600CF98C7 /* Announce.txt */, + B3E6BB172894B2F600CF98C7 /* Changes.txt */, + B3E6B8B22894B2F200CF98C7 /* Copyright.txt */, + B3E6BB1D2894B2F600CF98C7 /* License.txt */, + B3E6BAB92894B2F600CF98C7 /* README-SDL.txt */, + B3E6B8B32894B2F200CF98C7 /* Todo.txt */, + B3E6BB1C2894B2F600CF98C7 /* .gitlab-ci.yml */, + B3E6BAAD2894B2F600CF98C7 /* debian */, + B3E6BABD2894B2F600CF98C7 /* docs */, + B3E6B8B42894B2F200CF98C7 /* test */, ); + path = stella; + sourceTree = ""; }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - B305EEAC276B4BDF003AE510 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( + B3E6B8B42894B2F200CF98C7 /* test */ = { + isa = PBXGroup; + children = ( + B3E6B8B52894B2F200CF98C7 /* roms */, ); - runOnlyForDeploymentPostprocessing = 0; + path = test; + sourceTree = ""; }; - B38FB4BE1C839BE500CD73BE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B662058591E00CFF7D8 /* Core.plist in Resources */, + B3E6B8B52894B2F200CF98C7 /* roms */ = { + isa = PBXGroup; + children = ( + B3E6B8B62894B2F200CF98C7 /* plusroms */, + B3E6B8BD2894B2F200CF98C7 /* bankswitching */, + B3E6BA922894B2F600CF98C7 /* controller */, + B3E6BAA92894B2F600CF98C7 /* profile */, ); - runOnlyForDeploymentPostprocessing = 0; + path = roms; + sourceTree = ""; }; - B3C96DFC1D62BE5A003F1E93 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B672058591E00CFF7D8 /* Core.plist in Resources */, + B3E6B8B62894B2F200CF98C7 /* plusroms */ = { + isa = PBXGroup; + children = ( + B3E6B8B72894B2F200CF98C7 /* Sadistroids HSC NTSC.bin */, + B3E6B8B82894B2F200CF98C7 /* Pac-Man 8K HSC NTSC.bin */, + B3E6B8B92894B2F200CF98C7 /* C.A.V.E. Apocalypse NTSC.bin */, + B3E6B8BA2894B2F200CF98C7 /* Cosmic Ark HSC NTSC.bin */, + B3E6B8BB2894B2F200CF98C7 /* Amoeba Jump HSC NTSC.bin */, + B3E6B8BC2894B2F200CF98C7 /* Cave 1K HSC NTSC.bin */, ); - runOnlyForDeploymentPostprocessing = 0; + path = plusroms; + sourceTree = ""; }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - B305EEAA276B4BDF003AE510 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B305EED7276B4BFA003AE510 /* CartFE.cpp in Sources */, - B305EEE9276B4BFA003AE510 /* CartE7.cpp in Sources */, - B305EEE1276B4BFA003AE510 /* CartF6.cpp in Sources */, - B305EEDC276B4BFA003AE510 /* Cart0840.cpp in Sources */, - B305EEEA276B4BFA003AE510 /* Props.cpp in Sources */, - B305EEEE276B4BFA003AE510 /* Control.cpp in Sources */, - B305EEBE276B4BFA003AE510 /* FSNode.cpp in Sources */, - B305EEB7276B4BFA003AE510 /* Cart3F.cpp in Sources */, - B305EECE276B4BFA003AE510 /* CartFA.cpp in Sources */, - B305EED2276B4BFA003AE510 /* MT24LC256.cpp in Sources */, - B305EEC6276B4BFA003AE510 /* TrackBall.cpp in Sources */, - B305EEDF276B4BFA003AE510 /* PropsSet.cpp in Sources */, - B305EEB6276B4BFA003AE510 /* Cart3E.cpp in Sources */, - B305EEBF276B4BFA003AE510 /* Cart4A50.cpp in Sources */, - B305EEC2276B4BFA003AE510 /* Cart4K.cpp in Sources */, - B305EEE5276B4BFA003AE510 /* Random.cpp in Sources */, - B305EEBC276B4BFA003AE510 /* M6502.cpp in Sources */, - B305EEEF276B4BFA003AE510 /* CartF4SC.cpp in Sources */, - B305EEEC276B4BFA003AE510 /* Joystick.cpp in Sources */, - B305EEBD276B4BFA003AE510 /* CartF8.cpp in Sources */, - B305EEBA276B4BFA003AE510 /* Booster.cpp in Sources */, - B305EEE4276B4BFA003AE510 /* FSNodePOSIX.cpp in Sources */, - B305EEE3276B4BFA003AE510 /* Driving.cpp in Sources */, - B305EECB276B4BFA003AE510 /* CartF0.cpp in Sources */, - B305EEF2276B4BFA003AE510 /* Paddles.cpp in Sources */, - B305EEC1276B4BFA003AE510 /* Switches.cpp in Sources */, - B305EEF0276B4BFA003AE510 /* KidVid.cpp in Sources */, - B305EECC276B4BFA003AE510 /* PVStellaGameCore.mm in Sources */, - B305EEB9276B4BFA003AE510 /* CartE0.cpp in Sources */, - B305EED5276B4BFA003AE510 /* Console.cpp in Sources */, - B305EEDE276B4BFA003AE510 /* Settings.cpp in Sources */, - B305EEC8276B4BFA003AE510 /* Cart.cpp in Sources */, - B305EEC5276B4BFA003AE510 /* Genesis.cpp in Sources */, - B305EED6276B4BFA003AE510 /* MD5.cpp in Sources */, - B305EED0276B4BFA003AE510 /* CartF6SC.cpp in Sources */, - B305EEC9276B4BFA003AE510 /* SoundSDL.cpp in Sources */, - B305EED9276B4BFA003AE510 /* Cart2K.cpp in Sources */, - B305EEE7276B4BFA003AE510 /* Keyboard.cpp in Sources */, - B305EEE2276B4BFA003AE510 /* CartMC.cpp in Sources */, - B305EEE8276B4BFA003AE510 /* TIATables.cpp in Sources */, - B305EEBB276B4BFA003AE510 /* CartSB.cpp in Sources */, - B305EEE0276B4BFA003AE510 /* TIASnd.cpp in Sources */, - B305EED8276B4BFA003AE510 /* libretro.cpp in Sources */, - B305EEE6276B4BFA003AE510 /* CartX07.cpp in Sources */, - B305EEF1276B4BFA003AE510 /* CartF8SC.cpp in Sources */, - B305EEC7276B4BFA003AE510 /* Thumbulator.cpp in Sources */, - B305EEC0276B4BFA003AE510 /* System.cpp in Sources */, - B305EEB8276B4BFA003AE510 /* M6532.cpp in Sources */, - B305EECF276B4BFA003AE510 /* CartUA.cpp in Sources */, - B305EEEB276B4BFA003AE510 /* Serializer.cpp in Sources */, - B305EEC3276B4BFA003AE510 /* CartDPCPlus.cpp in Sources */, - B305EEED276B4BFA003AE510 /* TIA.cpp in Sources */, - B305EEDB276B4BFA003AE510 /* CartCV.cpp in Sources */, - B305EEDD276B4BFA003AE510 /* CartAR.cpp in Sources */, - B305EECA276B4BFA003AE510 /* NullDev.cpp in Sources */, - B305EEC4276B4BFA003AE510 /* CartDPC.cpp in Sources */, - B305EECD276B4BFA003AE510 /* CartF4.cpp in Sources */, - B305EED3276B4BFA003AE510 /* CartEFSC.cpp in Sources */, - B305EED4276B4BFA003AE510 /* CartEF.cpp in Sources */, - B305EED1276B4BFA003AE510 /* AtariVox.cpp in Sources */, - B305EEDA276B4BFA003AE510 /* SaveKey.cpp in Sources */, + B3E6B8BD2894B2F200CF98C7 /* bankswitching */ = { + isa = PBXGroup; + children = ( + B3E6B8BE2894B2F200CF98C7 /* SB */, + B3E6B8C22894B2F200CF98C7 /* 3E */, + B3E6B8CA2894B2F300CF98C7 /* MDM */, + B3E6B8CF2894B2F300CF98C7 /* F4SC */, + B3E6B8D12894B2F300CF98C7 /* DPC+ */, + B3E6B8D32894B2F300CF98C7 /* UA */, + B3E6B8DD2894B2F300CF98C7 /* 0FA0 */, + B3E6B8E12894B2F300CF98C7 /* DF */, + B3E6B8E32894B2F300CF98C7 /* MVC */, + B3E6B8EB2894B2F300CF98C7 /* EFSC */, + B3E6B8EF2894B2F300CF98C7 /* F4 */, + B3E6B8F22894B2F300CF98C7 /* FC */, + B3E6B8F42894B2F300CF98C7 /* FA2 */, + B3E6B8F72894B2F300CF98C7 /* 3E+ */, + B3E6B8FD2894B2F300CF98C7 /* FE */, + B3E6B9082894B2F300CF98C7 /* X07 */, + B3E6B90B2894B2F300CF98C7 /* 0840 */, + B3E6B90E2894B2F300CF98C7 /* WD */, + B3E6B9112894B2F300CF98C7 /* BUS */, + B3E6B9282894B2F300CF98C7 /* DFSC */, + B3E6B92B2894B2F300CF98C7 /* _code */, + B3E6B9562894B2F400CF98C7 /* F8SC */, + B3E6B95C2894B2F400CF98C7 /* CDF */, + B3E6B9642894B2F400CF98C7 /* 3F */, + B3E6B9702894B2F400CF98C7 /* XIN1 */, + B3E6B97B2894B2F400CF98C7 /* F6SC */, + B3E6B9922894B2F400CF98C7 /* Sub2K */, + B3E6B9992894B2F400CF98C7 /* BF */, + B3E6B99B2894B2F400CF98C7 /* CDFJ+ */, + B3E6B99F2894B2F400CF98C7 /* AR */, + B3E6B9A52894B2F400CF98C7 /* BFSC */, + B3E6B9A72894B2F400CF98C7 /* EF */, + B3E6B9AD2894B2F400CF98C7 /* CV */, + B3E6B9B62894B2F400CF98C7 /* 4A50 */, + B3E6B9BD2894B2F400CF98C7 /* F0 */, + B3E6B9C02894B2F400CF98C7 /* CM */, + B3E6B9C22894B2F400CF98C7 /* FA */, + B3E6B9C42894B2F400CF98C7 /* CTY */, + B3E6B9C62894B2F400CF98C7 /* 4KSC */, + B3E6B9C82894B2F400CF98C7 /* F6 */, + B3E6B9E42894B2F400CF98C7 /* E7 */, + B3E6B9EF2894B2F500CF98C7 /* F8 */, + B3E6BA332894B2F500CF98C7 /* E0 */, + B3E6BA532894B2F500CF98C7 /* odd_sized */, + B3E6BA552894B2F500CF98C7 /* TVBoy */, + B3E6BA5A2894B2F500CF98C7 /* DPC */, + B3E6BA5C2894B2F500CF98C7 /* 2K */, ); - runOnlyForDeploymentPostprocessing = 0; + path = bankswitching; + sourceTree = ""; }; - B38FB4BB1C839BE500CD73BE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C96E071D62C00C003F1E93 /* Paddles.cpp in Sources */, - B3C96E081D62C00C003F1E93 /* PVStellaGameCore.mm in Sources */, - B3C96E091D62C00C003F1E93 /* KidVid.cpp in Sources */, - B3C96E0A1D62C00C003F1E93 /* CartAR.cpp in Sources */, - B3C96E0B1D62C00C003F1E93 /* SoundSDL.cpp in Sources */, - B3C96E0C1D62C00C003F1E93 /* libretro.cpp in Sources */, - B3C96E0D1D62C00C003F1E93 /* CartFE.cpp in Sources */, - B3C96E0E1D62C00C003F1E93 /* CartUA.cpp in Sources */, - B3C96E0F1D62C00C003F1E93 /* CartCV.cpp in Sources */, - B3C96E101D62C00C003F1E93 /* CartF0.cpp in Sources */, - B3C96E111D62C00C003F1E93 /* CartFA.cpp in Sources */, - B3C96E121D62C00C003F1E93 /* Props.cpp in Sources */, - B3C96E131D62C00C003F1E93 /* Cart0840.cpp in Sources */, - B3C96E141D62C00C003F1E93 /* System.cpp in Sources */, - B3C96E151D62C00C003F1E93 /* CartE0.cpp in Sources */, - B3C96E161D62C00C003F1E93 /* CartF4SC.cpp in Sources */, - B3C96E171D62C00C003F1E93 /* PropsSet.cpp in Sources */, - B3C96E181D62C00C003F1E93 /* Genesis.cpp in Sources */, - B3C96E191D62C00C003F1E93 /* Cart3E.cpp in Sources */, - B3C96E1A1D62C00C003F1E93 /* Random.cpp in Sources */, - B3C96E1B1D62C00C003F1E93 /* TrackBall.cpp in Sources */, - B3C96E1C1D62C00C003F1E93 /* AtariVox.cpp in Sources */, - B3C96E1D1D62C00C003F1E93 /* Settings.cpp in Sources */, - B3C96E1E1D62C00C003F1E93 /* Cart4A50.cpp in Sources */, - B3C96E1F1D62C00C003F1E93 /* CartEF.cpp in Sources */, - B3C96E201D62C00C003F1E93 /* Thumbulator.cpp in Sources */, - B3C96E211D62C00C003F1E93 /* Serializer.cpp in Sources */, - B3C96E221D62C00C003F1E93 /* MT24LC256.cpp in Sources */, - B3C96E231D62C00C003F1E93 /* CartEFSC.cpp in Sources */, - B3C96E241D62C00C003F1E93 /* Driving.cpp in Sources */, - B3C96E251D62C00C003F1E93 /* Cart4K.cpp in Sources */, - B3C96E261D62C00C003F1E93 /* NullDev.cpp in Sources */, - B3C96E271D62C00C003F1E93 /* CartF4.cpp in Sources */, - B3C96E281D62C00C003F1E93 /* Switches.cpp in Sources */, - B3C96E291D62C00C003F1E93 /* CartF8.cpp in Sources */, - B3C96E2A1D62C00C003F1E93 /* CartF8SC.cpp in Sources */, - B3C96E2B1D62C00C003F1E93 /* M6532.cpp in Sources */, - B3C96E2C1D62C00C003F1E93 /* FSNode.cpp in Sources */, - B3C96E2D1D62C00C003F1E93 /* CartF6SC.cpp in Sources */, - B3C96E2E1D62C00C003F1E93 /* Cart2K.cpp in Sources */, - B3C96E2F1D62C00C003F1E93 /* Keyboard.cpp in Sources */, - B3C96E301D62C00C003F1E93 /* TIATables.cpp in Sources */, - B3C96E311D62C00C003F1E93 /* CartX07.cpp in Sources */, - B3C96E321D62C00C003F1E93 /* CartSB.cpp in Sources */, - B3C96E331D62C00C003F1E93 /* CartE7.cpp in Sources */, - B3C96E341D62C00C003F1E93 /* Cart3F.cpp in Sources */, - B3C96E351D62C00C003F1E93 /* CartMC.cpp in Sources */, - B3C96E361D62C00C003F1E93 /* FSNodePOSIX.cpp in Sources */, - B3C96E371D62C00C003F1E93 /* Control.cpp in Sources */, - B3C96E381D62C00C003F1E93 /* MD5.cpp in Sources */, - B3C96E391D62C00C003F1E93 /* SaveKey.cpp in Sources */, - B3C96E3A1D62C00C003F1E93 /* TIASnd.cpp in Sources */, - B3C96E3B1D62C00C003F1E93 /* CartDPCPlus.cpp in Sources */, - B3C96E3C1D62C00C003F1E93 /* M6502.cpp in Sources */, - B3C96E3D1D62C00C003F1E93 /* CartF6.cpp in Sources */, - B3C96E3E1D62C00C003F1E93 /* Cart.cpp in Sources */, - B3C96E3F1D62C00C003F1E93 /* Console.cpp in Sources */, - B3C96E401D62C00C003F1E93 /* Joystick.cpp in Sources */, - B3C96E411D62C00C003F1E93 /* CartDPC.cpp in Sources */, - B3C96E421D62C00C003F1E93 /* TIA.cpp in Sources */, - B3C96E431D62C00C003F1E93 /* Booster.cpp in Sources */, + B3E6B8BE2894B2F200CF98C7 /* SB */ = { + isa = PBXGroup; + children = ( + B3E6B8BF2894B2F200CF98C7 /* t128.bin */, + B3E6B8C02894B2F200CF98C7 /* t256.bin */, + B3E6B8C12894B2F200CF98C7 /* menu_multicart128k.bin */, ); - runOnlyForDeploymentPostprocessing = 0; + path = SB; + sourceTree = ""; }; - B3C96DF91D62BE5A003F1E93 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C96E451D62C02D003F1E93 /* Paddles.cpp in Sources */, - B3C96E461D62C02D003F1E93 /* PVStellaGameCore.mm in Sources */, - B3C96E471D62C02D003F1E93 /* KidVid.cpp in Sources */, - B3C96E481D62C02D003F1E93 /* CartAR.cpp in Sources */, - B3C96E491D62C02D003F1E93 /* SoundSDL.cpp in Sources */, - B3C96E4A1D62C02D003F1E93 /* libretro.cpp in Sources */, - B3C96E4B1D62C02D003F1E93 /* CartFE.cpp in Sources */, - B3C96E4C1D62C02D003F1E93 /* CartUA.cpp in Sources */, - B3C96E4D1D62C02D003F1E93 /* CartCV.cpp in Sources */, - B3C96E4E1D62C02D003F1E93 /* CartF0.cpp in Sources */, - B3C96E4F1D62C02D003F1E93 /* CartFA.cpp in Sources */, - B3C96E501D62C02D003F1E93 /* Props.cpp in Sources */, - B3C96E511D62C02D003F1E93 /* Cart0840.cpp in Sources */, - B3C96E521D62C02D003F1E93 /* System.cpp in Sources */, - B3C96E531D62C02D003F1E93 /* CartE0.cpp in Sources */, - B3C96E541D62C02D003F1E93 /* CartF4SC.cpp in Sources */, - B3C96E551D62C02D003F1E93 /* PropsSet.cpp in Sources */, - B3C96E561D62C02D003F1E93 /* Genesis.cpp in Sources */, - B3C96E571D62C02D003F1E93 /* Cart3E.cpp in Sources */, - B3C96E581D62C02D003F1E93 /* Random.cpp in Sources */, - B3C96E591D62C02D003F1E93 /* TrackBall.cpp in Sources */, - B3C96E5A1D62C02D003F1E93 /* AtariVox.cpp in Sources */, - B3C96E5B1D62C02D003F1E93 /* Settings.cpp in Sources */, - B3C96E5C1D62C02D003F1E93 /* Cart4A50.cpp in Sources */, - B3C96E5D1D62C02D003F1E93 /* CartEF.cpp in Sources */, - B3C96E5E1D62C02D003F1E93 /* Thumbulator.cpp in Sources */, - B3C96E5F1D62C02D003F1E93 /* Serializer.cpp in Sources */, - B3C96E601D62C02D003F1E93 /* MT24LC256.cpp in Sources */, - B3C96E611D62C02D003F1E93 /* CartEFSC.cpp in Sources */, - B3C96E621D62C02D003F1E93 /* Driving.cpp in Sources */, - B3C96E631D62C02D003F1E93 /* Cart4K.cpp in Sources */, - B3C96E641D62C02D003F1E93 /* NullDev.cpp in Sources */, - B3C96E651D62C02D003F1E93 /* CartF4.cpp in Sources */, - B3C96E661D62C02D003F1E93 /* Switches.cpp in Sources */, - B3C96E671D62C02D003F1E93 /* CartF8.cpp in Sources */, - B3C96E681D62C02D003F1E93 /* CartF8SC.cpp in Sources */, - B3C96E691D62C02D003F1E93 /* M6532.cpp in Sources */, - B3C96E6A1D62C02D003F1E93 /* FSNode.cpp in Sources */, - B3C96E6B1D62C02D003F1E93 /* CartF6SC.cpp in Sources */, - B3C96E6C1D62C02D003F1E93 /* Cart2K.cpp in Sources */, - B3C96E6D1D62C02D003F1E93 /* Keyboard.cpp in Sources */, - B3C96E6E1D62C02D003F1E93 /* TIATables.cpp in Sources */, - B3C96E6F1D62C02D003F1E93 /* CartX07.cpp in Sources */, - B3C96E701D62C02D003F1E93 /* CartSB.cpp in Sources */, - B3C96E711D62C02D003F1E93 /* CartE7.cpp in Sources */, - B3C96E721D62C02D003F1E93 /* Cart3F.cpp in Sources */, - B3C96E731D62C02D003F1E93 /* CartMC.cpp in Sources */, - B3C96E741D62C02D003F1E93 /* FSNodePOSIX.cpp in Sources */, - B3C96E751D62C02D003F1E93 /* Control.cpp in Sources */, - B3C96E761D62C02D003F1E93 /* MD5.cpp in Sources */, - B3C96E771D62C02D003F1E93 /* SaveKey.cpp in Sources */, - B3C96E781D62C02D003F1E93 /* TIASnd.cpp in Sources */, - B3C96E791D62C02D003F1E93 /* CartDPCPlus.cpp in Sources */, - B3C96E7A1D62C02D003F1E93 /* M6502.cpp in Sources */, - B3C96E7B1D62C02D003F1E93 /* CartF6.cpp in Sources */, - B3C96E7C1D62C02D003F1E93 /* Cart.cpp in Sources */, - B3C96E7D1D62C02D003F1E93 /* Console.cpp in Sources */, - B3C96E7E1D62C02D003F1E93 /* Joystick.cpp in Sources */, - B3C96E7F1D62C02D003F1E93 /* CartDPC.cpp in Sources */, - B3C96E801D62C02D003F1E93 /* TIA.cpp in Sources */, - B3C96E811D62C02D003F1E93 /* Booster.cpp in Sources */, + B3E6B8C22894B2F200CF98C7 /* 3E */ = { + isa = PBXGroup; + children = ( + B3E6B8C32894B2F200CF98C7 /* Boulder Dash (Demo 2).bin */, + B3E6B8C42894B2F200CF98C7 /* 256K RAM */, + B3E6B8C62894B2F300CF98C7 /* Andrew Davies early notBoulderDash demo (NTSC).bin */, + B3E6B8C72894B2F300CF98C7 /* Andrew Davies early notBoulderDash demo (PAL).bin */, + B3E6B8C82894B2F300CF98C7 /* 3E Bankswitch Test (TIA @ $00).bin */, + B3E6B8C92894B2F300CF98C7 /* BadApple1_0.bin */, ); - runOnlyForDeploymentPostprocessing = 0; + path = 3E; + sourceTree = ""; }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1DEB913F08733D840010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; - }; - name = Debug; + B3E6B8C42894B2F200CF98C7 /* 256K RAM */ = { + isa = PBXGroup; + children = ( + B3E6B8C52894B2F200CF98C7 /* badapple6-30-14.bin */, + ); + path = "256K RAM"; + sourceTree = ""; }; - 1DEB914008733D840010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; - }; - name = Release; + B3E6B8CA2894B2F300CF98C7 /* MDM */ = { + isa = PBXGroup; + children = ( + B3E6B8CB2894B2F300CF98C7 /* MDM-test.bin */, + B3E6B8CC2894B2F300CF98C7 /* 208in1_MDMC_test_PAL-127games.bin */, + B3E6B8CD2894B2F300CF98C7 /* arqsaida2.bin */, + B3E6B8CE2894B2F300CF98C7 /* POP_MDMC_test_PAL_63gamees.bin */, + ); + path = MDM; + sourceTree = ""; + }; + B3E6B8CF2894B2F300CF98C7 /* F4SC */ = { + isa = PBXGroup; + children = ( + B3E6B8D02894B2F300CF98C7 /* Fatal Run (NTSC prototype).bin */, + ); + path = F4SC; + sourceTree = ""; + }; + B3E6B8D12894B2F300CF98C7 /* DPC+ */ = { + isa = PBXGroup; + children = ( + B3E6B8D22894B2F300CF98C7 /* Space Rocks (2012-11-29) (NTSC) (Encore).bin */, + ); + path = "DPC+"; + sourceTree = ""; + }; + B3E6B8D32894B2F300CF98C7 /* UA */ = { + isa = PBXGroup; + children = ( + B3E6B8D42894B2F300CF98C7 /* Time Pilot (Rentacom).bin */, + B3E6B8D52894B2F300CF98C7 /* gingerUA.bin */, + B3E6B8D62894B2F300CF98C7 /* UA_Limited.bin */, + B3E6B8D72894B2F300CF98C7 /* Vanguard (Rentacom).bin */, + B3E6B8D82894B2F300CF98C7 /* Gingerbread Man SEGA-controller.ua.bin */, + B3E6B8D92894B2F300CF98C7 /* Pleiades.bin */, + B3E6B8DA2894B2F300CF98C7 /* Mickey (Digivision).bin */, + B3E6B8DB2894B2F300CF98C7 /* FunkyFish.bin */, + B3E6B8DC2894B2F300CF98C7 /* Fathon (Digivision).bin */, + ); + path = UA; + sourceTree = ""; + }; + B3E6B8DD2894B2F300CF98C7 /* 0FA0 */ = { + isa = PBXGroup; + children = ( + B3E6B8DE2894B2F300CF98C7 /* Pole Position (Mania).bin */, + B3E6B8DF2894B2F300CF98C7 /* Subterranea (Mania).bin */, + B3E6B8E02894B2F300CF98C7 /* Motocross (JVP).bin */, + ); + path = 0FA0; + sourceTree = ""; + }; + B3E6B8E12894B2F300CF98C7 /* DF */ = { + isa = PBXGroup; + children = ( + B3E6B8E22894B2F300CF98C7 /* DF_128k_test.bin */, + ); + path = DF; + sourceTree = ""; + }; + B3E6B8E32894B2F300CF98C7 /* MVC */ = { + isa = PBXGroup; + children = ( + B3E6B8E42894B2F300CF98C7 /* testpattern.bin */, + B3E6B8E52894B2F300CF98C7 /* 20centuryfox.bin */, + B3E6B8E62894B2F300CF98C7 /* street.bin */, + B3E6B8E72894B2F300CF98C7 /* cronkite.bin */, + B3E6B8E82894B2F300CF98C7 /* lion.bin */, + B3E6B8E92894B2F300CF98C7 /* dancer.bin */, + B3E6B8EA2894B2F300CF98C7 /* output_circle.bin */, + ); + path = MVC; + sourceTree = ""; + }; + B3E6B8EB2894B2F300CF98C7 /* EFSC */ = { + isa = PBXGroup; + children = ( + B3E6B8EC2894B2F300CF98C7 /* EFSC.bin */, + B3E6B8ED2894B2F300CF98C7 /* 64kSC.EFSC_tagged.bin */, + B3E6B8EE2894B2F300CF98C7 /* Distopia0.95_NTSC.bas.bin */, + ); + path = EFSC; + sourceTree = ""; + }; + B3E6B8EF2894B2F300CF98C7 /* F4 */ = { + isa = PBXGroup; + children = ( + B3E6B8F02894B2F300CF98C7 /* AVGN KO Boxing 2009-09-06 NTSC.bin */, + B3E6B8F12894B2F300CF98C7 /* Asteroids Attack (2020) (Demo, Game Select).bin */, + ); + path = F4; + sourceTree = ""; + }; + B3E6B8F22894B2F300CF98C7 /* FC */ = { + isa = PBXGroup; + children = ( + B3E6B8F32894B2F300CF98C7 /* Power Play Arcade Video Game Album, The - Ghost Attack, Genesis, Havoc (1983) (Amiga) (1110) (Prototype).bin */, + ); + path = FC; + sourceTree = ""; + }; + B3E6B8F42894B2F300CF98C7 /* FA2 */ = { + isa = PBXGroup; + children = ( + B3E6B8F52894B2F300CF98C7 /* fa2plus_test.bin */, + B3E6B8F62894B2F300CF98C7 /* Star Castle Arcade (165, Harmony).cu.bin */, + ); + path = FA2; + sourceTree = ""; + }; + B3E6B8F72894B2F300CF98C7 /* 3E+ */ = { + isa = PBXGroup; + children = ( + B3E6B8F82894B2F300CF98C7 /* 3E+rom.bin */, + B3E6B8F92894B2F300CF98C7 /* 3E+ram_NI.bin */, + B3E6B8FA2894B2F300CF98C7 /* chess20200911_4PQ8_FAIL (works now).bin */, + B3E6B8FB2894B2F300CF98C7 /* 3E+ram_I.bin */, + B3E6B8FC2894B2F300CF98C7 /* 3E+ram.bin */, + ); + path = "3E+"; + sourceTree = ""; + }; + B3E6B8FD2894B2F300CF98C7 /* FE */ = { + isa = PBXGroup; + children = ( + B3E6B8FE2894B2F300CF98C7 /* Decathlon (1983) (Activision) [!].a26 */, + B3E6B8FF2894B2F300CF98C7 /* Thwocker (Activision) (Prototype) [!].a26 */, + B3E6B9002894B2F300CF98C7 /* Space Shuttle (1983) (Activision) [FE].bin */, + B3E6B9012894B2F300CF98C7 /* bad */, + B3E6B9042894B2F300CF98C7 /* Decathlon (1983) (Activision) (PAL) [!].a26 */, + B3E6B9052894B2F300CF98C7 /* Robot Tank TV by Thomas Jentzsch (2 Joystick Hack).a26 */, + B3E6B9062894B2F300CF98C7 /* Robot Tank (1983) (Activision) (PAL) [!].a26 */, + B3E6B9072894B2F300CF98C7 /* Robot Tank (1983) (Activision) [!].a26 */, + ); + path = FE; + sourceTree = ""; + }; + B3E6B9012894B2F300CF98C7 /* bad */ = { + isa = PBXGroup; + children = ( + B3E6B9022894B2F300CF98C7 /* Robot Tank (1983) (Activision) (PAL) [b1].a26 */, + B3E6B9032894B2F300CF98C7 /* Decathlon (1983) (Activision) (PAL) [b1].a26 */, + ); + path = bad; + sourceTree = ""; + }; + B3E6B9082894B2F300CF98C7 /* X07 */ = { + isa = PBXGroup; + children = ( + B3E6B9092894B2F300CF98C7 /* x07.bin */, + B3E6B90A2894B2F300CF98C7 /* X07 Bankswitching Conversion.bin */, + ); + path = X07; + sourceTree = ""; + }; + B3E6B90B2894B2F300CF98C7 /* 0840 */ = { + isa = PBXGroup; + children = ( + B3E6B90C2894B2F300CF98C7 /* 0840_EconoBanking.bin */, + B3E6B90D2894B2F300CF98C7 /* Toyshop Trouble (0840) (2008) (John Payson, Zach Matley, Bob Montgomery, Thomas Jentzsch, Nathan Strum).bin */, + ); + path = 0840; + sourceTree = ""; + }; + B3E6B90E2894B2F300CF98C7 /* WD */ = { + isa = PBXGroup; + children = ( + B3E6B90F2894B2F300CF98C7 /* Pursuit of the Pink Panther (Probe) (Prototype) [bad dump].bin */, + B3E6B9102894B2F300CF98C7 /* Pursuit of the Pink Panther (Probe) (Prototype) [fixed].bin */, + ); + path = WD; + sourceTree = ""; + }; + B3E6B9112894B2F300CF98C7 /* BUS */ = { + isa = PBXGroup; + children = ( + B3E6B9122894B2F300CF98C7 /* 128bus_20160903.bin */, + B3E6B9132894B2F300CF98C7 /* test_bus_NTSC.bin */, + B3E6B9142894B2F300CF98C7 /* 128bus_20170120.bin */, + B3E6B9152894B2F300CF98C7 /* test0_stuff.bin */, + B3E6B9162894B2F300CF98C7 /* rpg_20161231_NTSC.bin */, + B3E6B9172894B2F300CF98C7 /* test3_bigscroll.bin */, + B3E6B9182894B2F300CF98C7 /* bus3_test2_speech.bin */, + B3E6B9192894B2F300CF98C7 /* test_20161231.bin */, + B3E6B91A2894B2F300CF98C7 /* bus3_test3_bigscroll.bin */, + B3E6B91B2894B2F300CF98C7 /* test1_music.bin */, + B3E6B91C2894B2F300CF98C7 /* parrot_bus_NTSC.bin */, + B3E6B91D2894B2F300CF98C7 /* rpg_20161019.bin */, + B3E6B91E2894B2F300CF98C7 /* bus3_test4_xevious.bin */, + B3E6B91F2894B2F300CF98C7 /* bus3_test5_fastjmp.bin */, + B3E6B9202894B2F300CF98C7 /* rpg_20161020.bin */, + B3E6B9212894B2F300CF98C7 /* bus3_test0_stuff.bin */, + B3E6B9222894B2F300CF98C7 /* draconian_20161102.bin */, + B3E6B9232894B2F300CF98C7 /* test2_speech.bin */, + B3E6B9242894B2F300CF98C7 /* parrot_20161231_NTSC.bin */, + B3E6B9252894B2F300CF98C7 /* test4_xevious.bin */, + B3E6B9262894B2F300CF98C7 /* bus3_test1_music.bin */, + B3E6B9272894B2F300CF98C7 /* 128chronocolour_20170101.bin */, + ); + path = BUS; + sourceTree = ""; + }; + B3E6B9282894B2F300CF98C7 /* DFSC */ = { + isa = PBXGroup; + children = ( + B3E6B9292894B2F300CF98C7 /* DFSC_128k_ramtest.bin */, + B3E6B92A2894B2F300CF98C7 /* penult-demo-9-NTSC.bin */, + ); + path = DFSC; + sourceTree = ""; + }; + B3E6B92B2894B2F300CF98C7 /* _code */ = { + isa = PBXGroup; + children = ( + B3E6B92C2894B2F300CF98C7 /* SB_256K.asm */, + B3E6B92D2894B2F300CF98C7 /* SB_128K.asm */, + B3E6B92E2894B2F300CF98C7 /* F6.bin */, + B3E6B92F2894B2F300CF98C7 /* F4.asm */, + B3E6B9302894B2F300CF98C7 /* test.lst */, + B3E6B9312894B2F300CF98C7 /* SB_256K.bin */, + B3E6B9322894B2F300CF98C7 /* SB_128K.bin */, + B3E6B9332894B2F300CF98C7 /* F6.asm */, + B3E6B9342894B2F300CF98C7 /* F4.bin */, + B3E6B9352894B2F300CF98C7 /* 0840_EconoBanking.bin */, + B3E6B9362894B2F300CF98C7 /* UA_Limited.asm */, + B3E6B9372894B2F300CF98C7 /* 0840_EconoBanking.asm */, + B3E6B9382894B2F300CF98C7 /* UA_Limited.bin */, + B3E6B9392894B2F300CF98C7 /* F0_MegaBoy.bin */, + B3E6B93A2894B2F300CF98C7 /* F0_MegaBoy.asm */, + B3E6B93B2894B2F300CF98C7 /* vcs.h */, + B3E6B93C2894B2F300CF98C7 /* EFSC.asm */, + B3E6B93D2894B2F300CF98C7 /* F4SC.asm */, + B3E6B93E2894B2F300CF98C7 /* macro.h */, + B3E6B93F2894B2F300CF98C7 /* F6SC.bin */, + B3E6B9402894B2F300CF98C7 /* xaa */, + B3E6B9412894B2F300CF98C7 /* EFSC.bin */, + B3E6B9422894B2F300CF98C7 /* F4SC.bin */, + B3E6B9432894B2F300CF98C7 /* F6SC.asm */, + B3E6B9442894B2F300CF98C7 /* FA_CBS+RAM.bin */, + B3E6B9452894B2F300CF98C7 /* x07.bin */, + B3E6B9462894B2F300CF98C7 /* F8SC.bin */, + B3E6B9472894B2F300CF98C7 /* x07.asm */, + B3E6B9482894B2F300CF98C7 /* FA_CBS+RAM.asm */, + B3E6B9492894B2F300CF98C7 /* F8SC.asm */, + B3E6B94A2894B2F300CF98C7 /* test.bin */, + B3E6B94B2894B2F300CF98C7 /* EF.asm */, + B3E6B94C2894B2F300CF98C7 /* E0.asm */, + B3E6B94D2894B2F300CF98C7 /* EF.bin */, + B3E6B94E2894B2F300CF98C7 /* E0.bin */, + B3E6B94F2894B2F300CF98C7 /* xab */, + B3E6B9502894B2F300CF98C7 /* F8.bin */, + B3E6B9512894B2F300CF98C7 /* 3F.asm */, + B3E6B9522894B2F300CF98C7 /* E7.asm */, + B3E6B9532894B2F300CF98C7 /* 3F.bin */, + B3E6B9542894B2F400CF98C7 /* E7.bin */, + B3E6B9552894B2F400CF98C7 /* F8.asm */, + ); + path = _code; + sourceTree = ""; + }; + B3E6B9562894B2F400CF98C7 /* F8SC */ = { + isa = PBXGroup; + children = ( + B3E6B9572894B2F400CF98C7 /* Stargate (1984) (Atari) (PAL) [!].a26 */, + B3E6B9582894B2F400CF98C7 /* Defender II (1984) (Atari) (PAL) [!].a26 */, + B3E6B9592894B2F400CF98C7 /* Elevator Action (Atari) (Prototype).a26 */, + B3E6B95A2894B2F400CF98C7 /* Stargate (1984) (Atari).a26 */, + B3E6B95B2894B2F400CF98C7 /* Defender II (1984) (Atari).a26 */, + ); + path = F8SC; + sourceTree = ""; + }; + B3E6B95C2894B2F400CF98C7 /* CDF */ = { + isa = PBXGroup; + children = ( + B3E6B95D2894B2F400CF98C7 /* draconian_20170314.bin */, + B3E6B95E2894B2F400CF98C7 /* cdf1_music.bin */, + B3E6B95F2894B2F400CF98C7 /* cdf3_fastjump.bin */, + B3E6B9602894B2F400CF98C7 /* draconian_20170309.bin */, + B3E6B9612894B2F400CF98C7 /* cdf0_fast.bin */, + B3E6B9622894B2F400CF98C7 /* cdf2_speech.bin */, + B3E6B9632894B2F400CF98C7 /* draconian_20170318.bin */, + ); + path = CDF; + sourceTree = ""; + }; + B3E6B9642894B2F400CF98C7 /* 3F */ = { + isa = PBXGroup; + children = ( + B3E6B9652894B2F400CF98C7 /* River Patrol (1984) (Tigervision).a26 */, + B3E6B9662894B2F400CF98C7 /* Springer (1982) (Tigervision).a26 */, + B3E6B9672894B2F400CF98C7 /* Polaris (1983) (Tigervision) (PAL).a26 */, + B3E6B9682894B2F400CF98C7 /* Miner 2049er Volume II (1983) (Tigervision) (PAL).a26 */, + B3E6B9692894B2F400CF98C7 /* Miner 2049er (1982) (Tigervision).a26 */, + B3E6B96A2894B2F400CF98C7 /* badapple6-25-14.bin */, + B3E6B96B2894B2F400CF98C7 /* Polaris (1983) (Thomas Jentzsch).a26 */, + B3E6B96C2894B2F400CF98C7 /* Polaris (1983) (Tigervision).a26 */, + B3E6B96D2894B2F400CF98C7 /* Espial (1984) (Tigervision).a26 */, + B3E6B96E2894B2F400CF98C7 /* Untitled.a26 */, + B3E6B96F2894B2F400CF98C7 /* Espial (1984) (Tigervision) (PAL).a26 */, + ); + path = 3F; + sourceTree = ""; + }; + B3E6B9702894B2F400CF98C7 /* XIN1 */ = { + isa = PBXGroup; + children = ( + B3E6B9712894B2F400CF98C7 /* 2 in 1 - Motocross - Pole Position.bin */, + B3E6B9722894B2F400CF98C7 /* 16 in 1 Digitel Brazil (Mania).bin */, + B3E6B9732894B2F400CF98C7 /* 4 Game in One - Rodeo Champ, Open Sesame, Bobby Is Going Home, Festival (1983) (Bit Corporation) (P460) (PAL).bin */, + B3E6B9742894B2F400CF98C7 /* Atari 2600 Multicart (16x8K. F8_E0).bin */, + B3E6B9752894B2F400CF98C7 /* 2 in 1 - Phoenix - H.E.R.O. (Rentacom).bin */, + B3E6B9762894B2F400CF98C7 /* 256 in 1 - Game Over 2600 (Megatronix).bin */, + B3E6B9772894B2F400CF98C7 /* 8 in 1 (Supergames 8 in 1) (01-16-92) (Atari) (CX26193) (Prototype).bin */, + B3E6B9782894B2F400CF98C7 /* 4 in 1 (Logitachi).bin */, + B3E6B9792894B2F400CF98C7 /* 2 in 1 - Time Pilot - Vanguard (Rentacom).bin */, + B3E6B97A2894B2F400CF98C7 /* 2 in 1 - Kung Fu Master (Irem, Activision) - H.E.R.O. (Mania RJ).BIN */, + ); + path = XIN1; + sourceTree = ""; + }; + B3E6B97B2894B2F400CF98C7 /* F6SC */ = { + isa = PBXGroup; + children = ( + B3E6B97C2894B2F400CF98C7 /* Super Football (1988) (Atari).a26 */, + B3E6B97D2894B2F400CF98C7 /* Secret Quest (1989) (Atari) (PAL) [!].a26 */, + B3E6B97E2894B2F400CF98C7 /* Crystal Castles (1984) (Atari) (NTSC) (Prototype) [!].a26 */, + B3E6B97F2894B2F400CF98C7 /* Radar Lock (1989) (Atari) (PAL) [!].a26 */, + B3E6B9802894B2F400CF98C7 /* Crystal Castles (1984) (Atari).a26 */, + B3E6B9812894B2F400CF98C7 /* Radar Lock (1989) (Atari).a26 */, + B3E6B9822894B2F400CF98C7 /* Sprint Master (1988) (Atari) (PAL) [!].a26 */, + B3E6B9832894B2F400CF98C7 /* Jr. Pac-Man (1986) (Atari) [!].a26 */, + B3E6B9842894B2F400CF98C7 /* Dark Chambers (1988) (Atari) (PAL) [!].a26 */, + B3E6B9852894B2F400CF98C7 /* Dig Dug (V2) (1983) (Atari) (PAL) [!].a26 */, + B3E6B9862894B2F400CF98C7 /* Crystal Castles (1984) (Atari) (PAL) [!].a26 */, + B3E6B9872894B2F400CF98C7 /* Sprint Master (1988) (Atari).a26 */, + B3E6B9882894B2F400CF98C7 /* Dark Chambers (1988) (Atari).a26 */, + B3E6B9892894B2F400CF98C7 /* Dig Dug (V1) (1983) (Atari) (PAL) [!].a26 */, + B3E6B98A2894B2F400CF98C7 /* Jr. Pac-Man (1984) (Atari) (PAL) [!].a26 */, + B3E6B98B2894B2F400CF98C7 /* Millipede (1984) (Atari) (PAL) [!].a26 */, + B3E6B98C2894B2F400CF98C7 /* Millipede (1984) (Atari).a26 */, + B3E6B98D2894B2F400CF98C7 /* Crystal Castles (1984) (Atari) [p1].a26 */, + B3E6B98E2894B2F400CF98C7 /* Secret Quest (1989) (Atari).a26 */, + B3E6B98F2894B2F400CF98C7 /* Jr. Pac-Man (1984) (Atari) [!].a26 */, + B3E6B9902894B2F400CF98C7 /* Dig Dug (1983) (Atari).a26 */, + B3E6B9912894B2F400CF98C7 /* Super Football (1988) (Atari) (PAL) [!].a26 */, + ); + path = F6SC; + sourceTree = ""; + }; + B3E6B9922894B2F400CF98C7 /* Sub2K */ = { + isa = PBXGroup; + children = ( + B3E6B9932894B2F400CF98C7 /* Pong256B.bin */, + B3E6B9942894B2F400CF98C7 /* 2k.bin */, + B3E6B9952894B2F400CF98C7 /* Pong512B.bin */, + B3E6B9962894B2F400CF98C7 /* 4k.bin */, + B3E6B9972894B2F400CF98C7 /* Harte32.bin */, + B3E6B9982894B2F400CF98C7 /* Vong_1K.bin */, + ); + path = Sub2K; + sourceTree = ""; + }; + B3E6B9992894B2F400CF98C7 /* BF */ = { + isa = PBXGroup; + children = ( + B3E6B99A2894B2F400CF98C7 /* BF_256k_test.bin */, + ); + path = BF; + sourceTree = ""; + }; + B3E6B99B2894B2F400CF98C7 /* CDFJ+ */ = { + isa = PBXGroup; + children = ( + B3E6B99C2894B2F400CF98C7 /* sample256.bin */, + B3E6B99D2894B2F400CF98C7 /* red512.bin */, + B3E6B99E2894B2F400CF98C7 /* zev64.bin */, + ); + path = "CDFJ+"; + sourceTree = ""; + }; + B3E6B99F2894B2F400CF98C7 /* AR */ = { + isa = PBXGroup; + children = ( + B3E6B9A02894B2F400CF98C7 /* Dragonstomper (1982) (Starpath).bin */, + B3E6B9A12894B2F400CF98C7 /* Official Frogger, The (1983) (Starpath).bin */, + B3E6B9A22894B2F400CF98C7 /* Escape from the Mindmaster (1982) (Arcadia).bin */, + B3E6B9A32894B2F400CF98C7 /* Party Mix (1983) (Arcadia).bin */, + B3E6B9A42894B2F400CF98C7 /* Phaser Patrol (1982) (Arcadia).bin */, + ); + path = AR; + sourceTree = ""; + }; + B3E6B9A52894B2F400CF98C7 /* BFSC */ = { + isa = PBXGroup; + children = ( + B3E6B9A62894B2F400CF98C7 /* BFSC_256k_ramtest.bin */, + ); + path = BFSC; + sourceTree = ""; + }; + B3E6B9A72894B2F400CF98C7 /* EF */ = { + isa = PBXGroup; + children = ( + B3E6B9A82894B2F400CF98C7 /* RobotZed_07.bas.bin */, + B3E6B9A92894B2F400CF98C7 /* megaboyEF.bin */, + B3E6B9AA2894B2F400CF98C7 /* 64kbb.EFEF_tagged.bin */, + B3E6B9AB2894B2F400CF98C7 /* EF.bin */, + B3E6B9AC2894B2F400CF98C7 /* Zippy_V2_FINAL_NTSC.bas.bin */, + ); + path = EF; + sourceTree = ""; + }; + B3E6B9AD2894B2F400CF98C7 /* CV */ = { + isa = PBXGroup; + children = ( + B3E6B9AE2894B2F400CF98C7 /* ColorGotcha2600.bin */, + B3E6B9AF2894B2F400CF98C7 /* Magicard Sample Program 1 - Display of Character Set $f100 (1982) (CommaVid).a26 */, + B3E6B9B02894B2F400CF98C7 /* Magicard Sample Program 5 - Life $f15e (1982) (CommaVid).a26 */, + B3E6B9B12894B2F400CF98C7 /* Magicard Sample Program 2 - Memo Pad $f100 (1982) (CommaVid).a26 */, + B3E6B9B22894B2F400CF98C7 /* Video Life (CommaVid).a26 */, + B3E6B9B32894B2F400CF98C7 /* Magicard (CommaVid).a26 */, + B3E6B9B42894B2F400CF98C7 /* Magicard Sample Program 4 - Generating Your Own Display $f200 (1982) (CommaVid).a26 */, + B3E6B9B52894B2F400CF98C7 /* Magicard Sample Program 3 - Target Practice $f100 (1982) (CommaVid).a26 */, + ); + path = CV; + sourceTree = ""; + }; + B3E6B9B62894B2F400CF98C7 /* 4A50 */ = { + isa = PBXGroup; + children = ( + B3E6B9B72894B2F400CF98C7 /* rr4.bin */, + B3E6B9B82894B2F400CF98C7 /* test4a50fix.bin */, + B3E6B9B92894B2F400CF98C7 /* rr3.bin */, + B3E6B9BA2894B2F400CF98C7 /* Ruby Runner 4A50.bin */, + B3E6B9BB2894B2F400CF98C7 /* spin4a50.bin */, + B3E6B9BC2894B2F400CF98C7 /* test_includes_file.bas.bin */, + ); + path = 4A50; + sourceTree = ""; + }; + B3E6B9BD2894B2F400CF98C7 /* F0 */ = { + isa = PBXGroup; + children = ( + B3E6B9BE2894B2F400CF98C7 /* MegaBoy (Dynacom).bin */, + B3E6B9BF2894B2F400CF98C7 /* F0_MegaBoy.bin */, + ); + path = F0; + sourceTree = ""; + }; + B3E6B9C02894B2F400CF98C7 /* CM */ = { + isa = PBXGroup; + children = ( + B3E6B9C12894B2F400CF98C7 /* CompuMate (1983) (Spectravideo).bin */, + ); + path = CM; + sourceTree = ""; + }; + B3E6B9C22894B2F400CF98C7 /* FA */ = { + isa = PBXGroup; + children = ( + B3E6B9C32894B2F400CF98C7 /* Mountain King (1983) (CBS Electronics).bin */, + ); + path = FA; + sourceTree = ""; + }; + B3E6B9C42894B2F400CF98C7 /* CTY */ = { + isa = PBXGroup; + children = ( + B3E6B9C52894B2F400CF98C7 /* chetiry_NTSC_STELLA.bin */, + ); + path = CTY; + sourceTree = ""; + }; + B3E6B9C62894B2F400CF98C7 /* 4KSC */ = { + isa = PBXGroup; + children = ( + B3E6B9C72894B2F400CF98C7 /* 4KSC_test.bin */, + ); + path = 4KSC; + sourceTree = ""; + }; + B3E6B9C82894B2F400CF98C7 /* F6 */ = { + isa = PBXGroup; + children = ( + B3E6B9C92894B2F400CF98C7 /* Rampage! (1989) (Activision) [b1].a26 */, + B3E6B9CA2894B2F400CF98C7 /* California Games (1988) (Epyx) [!].a26 */, + B3E6B9CB2894B2F400CF98C7 /* Solaris (1986) (Atari).a26 */, + B3E6B9CC2894B2F400CF98C7 /* Garfield (Prototype).a26 */, + B3E6B9CD2894B2F400CF98C7 /* Pete Rose Baseball (1988) (Absolute).a26 */, + B3E6B9CE2894B2F400CF98C7 /* Midnight Magic (1984) (Atari) (PAL) [!].a26 */, + B3E6B9CF2894B2F400CF98C7 /* Tomcat - The F-14 Flight Simulator (2002) (Skyworks) [!].a26 */, + B3E6B9D02894B2F400CF98C7 /* Battlezone TC by Thomas Jentzsch (2 joystick Hack).a26 */, + B3E6B9D12894B2F400CF98C7 /* Super Box (CCE).a26 */, + B3E6B9D22894B2F400CF98C7 /* Sentinel (1990) (Atari).a26 */, + B3E6B9D32894B2F400CF98C7 /* Double Dragon (1989) (Activision) (PAL) [!].a26 */, + B3E6B9D42894B2F400CF98C7 /* Solaris (1986) (Atari) (PAL) [!].a26 */, + B3E6B9D52894B2F400CF98C7 /* California Games (1988) (Epyx) (PAL) [!].a26 */, + B3E6B9D62894B2F400CF98C7 /* Rampage! (1989) (Activision) (PAL) [!].a26 */, + B3E6B9D72894B2F400CF98C7 /* RealSports Boxing (1987) (Atari) (PAL) [!].a26 */, + B3E6B9D82894B2F400CF98C7 /* bad */, + B3E6B9DA2894B2F400CF98C7 /* RealSports Boxing (1987) (Atari).a26 */, + B3E6B9DB2894B2F400CF98C7 /* Midnight Magic (1984) (Atari).a26 */, + B3E6B9DC2894B2F400CF98C7 /* Acid Drop (1992) (Salu) (PAL) [!].a26 */, + B3E6B9DD2894B2F400CF98C7 /* Summer Games (1987) (Epyx) (PAL) [!].a26 */, + B3E6B9DE2894B2F400CF98C7 /* Double Dragon (1989) (Activision).a26 */, + B3E6B9DF2894B2F400CF98C7 /* H.E.R.O. (1984) (Activision) [o1].a26 */, + B3E6B9E02894B2F400CF98C7 /* Tomcat - The F-14 Flight Simulator (1988) (Absolute) [a1].a26 */, + B3E6B9E12894B2F400CF98C7 /* Tomcat - The F-14 Flight Simulator (1988) (Absolute) [!].a26 */, + B3E6B9E22894B2F400CF98C7 /* Rampage! (1989) (Activision) [!].a26 */, + B3E6B9E32894B2F400CF98C7 /* Summer Games (1987) (Epyx).a26 */, + ); + path = F6; + sourceTree = ""; + }; + B3E6B9D82894B2F400CF98C7 /* bad */ = { + isa = PBXGroup; + children = ( + B3E6B9D92894B2F400CF98C7 /* Acid Drop (1992) (Salu) (PAL) [b1].a26 */, + ); + path = bad; + sourceTree = ""; + }; + B3E6B9E42894B2F400CF98C7 /* E7 */ = { + isa = PBXGroup; + children = ( + B3E6B9E52894B2F400CF98C7 /* bad */, + B3E6B9E72894B2F400CF98C7 /* Elite Demo v1.0 (NTSC).bin */, + B3E6B9E82894B2F400CF98C7 /* Bump 'n' Jump (1983) (M Network).bin */, + B3E6B9E92894B2F500CF98C7 /* BurgerTime (1983) (M Network) (12K).bin */, + B3E6B9EA2894B2F500CF98C7 /* fruitcake_22Oct09.bin */, + B3E6B9EB2894B2F500CF98C7 /* Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack).a26 */, + B3E6B9EC2894B2F500CF98C7 /* Burgertime (1982) (Mattel).a26 */, + B3E6B9ED2894B2F500CF98C7 /* fruitcake29Oct09.bin */, + B3E6B9EE2894B2F500CF98C7 /* Masters of the Universe - The Power of He-Man (1983) (Mattel).a26 */, + ); + path = E7; + sourceTree = ""; + }; + B3E6B9E52894B2F400CF98C7 /* bad */ = { + isa = PBXGroup; + children = ( + B3E6B9E62894B2F400CF98C7 /* Bump 'N' Jump (1983) (Mattel) [b1].a26 */, + ); + path = bad; + sourceTree = ""; + }; + B3E6B9EF2894B2F500CF98C7 /* F8 */ = { + isa = PBXGroup; + children = ( + B3E6B9F02894B2F500CF98C7 /* Joust (1982) (Atari).a26 */, + B3E6B9F12894B2F500CF98C7 /* Battlezone (1983) (Atari) (PAL) [!].a26 */, + B3E6B9F22894B2F500CF98C7 /* Centipede (1982) (Atari) (Prototype) (PAL) [!].a26 */, + B3E6B9F32894B2F500CF98C7 /* Spy Hunter (1983) (Sega) [!].a26 */, + B3E6B9F42894B2F500CF98C7 /* Raiders of the Lost Ark (1982) (Atari) (PAL) [!].a26 */, + B3E6B9F52894B2F500CF98C7 /* Raiders of the Lost Ark (1982) (Atari).a26 */, + B3E6B9F62894B2F500CF98C7 /* Asteroids DC+ by Thomas Jentzsch (Asteroids Hack).a26 */, + B3E6B9F72894B2F500CF98C7 /* Cyber Goth Galaxian by Manuel Polik (Galaxian Hack).a26 */, + B3E6B9F82894B2F500CF98C7 /* Asteroids (1979) (Atari) (PAL) [a2][!].a26 */, + B3E6B9F92894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari).a26 */, + B3E6B9FA2894B2F500CF98C7 /* Kung Fu Master (1984) (Activision) (PAL) [!].a26 */, + B3E6B9FB2894B2F500CF98C7 /* Asteroids SS (Asteroids Hack).a26 */, + B3E6B9FC2894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari) (PAL) [!].a26 */, + B3E6B9FD2894B2F500CF98C7 /* Joust (1982) (Atari) (PAL) [!].a26 */, + B3E6B9FE2894B2F500CF98C7 /* Galaxian (1983) (Atari) [!].a26 */, + B3E6B9FF2894B2F500CF98C7 /* Phoenix (1982) (CCE).a26 */, + B3E6BA002894B2F500CF98C7 /* Jungle Hunt (1982) (Atari) (PAL) [!].a26 */, + B3E6BA012894B2F500CF98C7 /* Galaxian (1983) (CCE).a26 */, + B3E6BA022894B2F500CF98C7 /* Aquaventure (CCE).a26 */, + B3E6BA032894B2F500CF98C7 /* Battlezone (1983) (Atari) [!].a26 */, + B3E6BA042894B2F500CF98C7 /* Jungle Hunt (1982) (CCE).a26 */, + B3E6BA052894B2F500CF98C7 /* Asteroids (1979) (Atari) (PAL) [!].a26 */, + B3E6BA062894B2F500CF98C7 /* Vanguard (1982) (Atari).a26 */, + B3E6BA072894B2F500CF98C7 /* Vanguard (1982) (Atari) (PAL) [!].a26 */, + B3E6BA082894B2F500CF98C7 /* Kung Fu Master (1984) (Activision) (PAL) [a1][!].a26 */, + B3E6BA092894B2F500CF98C7 /* Mr. Roboto by Paul Slocum (Berzerk Hack).a26 */, + B3E6BA0A2894B2F500CF98C7 /* Galaxian (1983) (Atari) (PAL) [a1][!].a26 */, + B3E6BA0B2894B2F500CF98C7 /* Asteroids 2 (Asteroids Hack).a26 */, + B3E6BA0C2894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) [!].a26 */, + B3E6BA0D2894B2F500CF98C7 /* Centipede (1982) (Atari) (PAL) [!].a26 */, + B3E6BA0E2894B2F500CF98C7 /* Asteroids (1979) (Atari) (PAL) [a1][!].a26 */, + B3E6BA0F2894B2F500CF98C7 /* Gravitar (1988) (CCE).a26 */, + B3E6BA102894B2F500CF98C7 /* Pengo (1984) (Atari).a26 */, + B3E6BA112894B2F500CF98C7 /* cfg */, + B3E6BA142894B2F500CF98C7 /* Gravitar (1988) (Atari) [a1][!].a26 */, + B3E6BA152894B2F500CF98C7 /* Asteroids (1979) (Atari) [a1][!].a26 */, + B3E6BA162894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) (PAL) [a2][!].a26 */, + B3E6BA172894B2F500CF98C7 /* Elk Attack (1987) (Atari).a26 */, + B3E6BA182894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari) (PAL) [a1][!].a26 */, + B3E6BA192894B2F500CF98C7 /* Vanguard (CCE).a26 */, + B3E6BA1A2894B2F500CF98C7 /* Joust (1982) (Atari) (PAL) [a1][!].a26 */, + B3E6BA1B2894B2F500CF98C7 /* Aquaventure (1983) (Atari) (Prototype).a26 */, + B3E6BA1C2894B2F500CF98C7 /* Battlezone (1983) (Atari) (PAL) [a1][!].a26 */, + B3E6BA1D2894B2F500CF98C7 /* Phoenix (1982) (Atari) (PAL) [!].a26 */, + B3E6BA1E2894B2F500CF98C7 /* Centipede 2k (2000) (PD).a26 */, + B3E6BA1F2894B2F500CF98C7 /* Phoenix (1982) (Atari).a26 */, + B3E6BA202894B2F500CF98C7 /* H.E.R.O. (1984) (CCE).a26 */, + B3E6BA212894B2F500CF98C7 /* Pengo - 1 Player Only (1984) (Atari).a26 */, + B3E6BA222894B2F500CF98C7 /* Kung Fu Master (CCE).a26 */, + B3E6BA232894B2F500CF98C7 /* Asteroids (1979) (Atari) [!].a26 */, + B3E6BA242894B2F500CF98C7 /* Gravitar (1988) (Atari) [!].a26 */, + B3E6BA252894B2F500CF98C7 /* Jungle Hunt (1982) (Atari) [!].a26 */, + B3E6BA262894B2F500CF98C7 /* Vanguard (1982) (Atari) (PAL) [a1][!].a26 */, + B3E6BA272894B2F500CF98C7 /* Ms. Pac-Man (1982) (Atari) [h1].a26 */, + B3E6BA282894B2F500CF98C7 /* Galaxian (1983) (Atari) (PAL) [!].a26 */, + B3E6BA292894B2F500CF98C7 /* Jungle Hunt (1982) (Atari) (PAL) [a1][!].a26 */, + B3E6BA2A2894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) (PAL) [a1][!].a26 */, + B3E6BA2B2894B2F500CF98C7 /* Galaxian by Jess Ragan (Enhanced Graphics).a26 */, + B3E6BA2C2894B2F500CF98C7 /* H.E.R.O. (1984) (Activision) (PAL) [!].a26 */, + B3E6BA2D2894B2F500CF98C7 /* Centipede (1982) (Atari) [!].a26 */, + B3E6BA2E2894B2F500CF98C7 /* Berenstain Bears (1982) (Coleco).a26 */, + B3E6BA2F2894B2F500CF98C7 /* Ms. Pac-Man (1982) (CCE).a26 */, + B3E6BA302894B2F500CF98C7 /* Phoenix (1982) (Atari) (PAL) [a1][!].a26 */, + B3E6BA312894B2F500CF98C7 /* Kung Fu Master (1984) (Activision).a26 */, + B3E6BA322894B2F500CF98C7 /* Asteroids [p1].a26 */, + ); + path = F8; + sourceTree = ""; + }; + B3E6BA112894B2F500CF98C7 /* cfg */ = { + isa = PBXGroup; + children = ( + B3E6BA122894B2F500CF98C7 /* a2600.cfg */, + B3E6BA132894B2F500CF98C7 /* default.cfg */, + ); + path = cfg; + sourceTree = ""; + }; + B3E6BA332894B2F500CF98C7 /* E0 */ = { + isa = PBXGroup; + children = ( + B3E6BA342894B2F500CF98C7 /* Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype).a26 */, + B3E6BA352894B2F500CF98C7 /* Frogger II (1984) (Parker Bros).a26 */, + B3E6BA362894B2F500CF98C7 /* Star Wars - The Arcade Game (1984) (Parker Bros).a26 */, + B3E6BA372894B2F500CF98C7 /* Q-bert's Qubes (1984) (Parker Bros).a26 */, + B3E6BA382894B2F500CF98C7 /* Montezuma's Revenge (1984) (Parker Bros).a26 */, + B3E6BA392894B2F500CF98C7 /* Gyruss (1984) (Parker Bros).a26 */, + B3E6BA3A2894B2F500CF98C7 /* Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype).a26 */, + B3E6BA3B2894B2F500CF98C7 /* Frogger II (1984) (Parker Bros) (PAL).a26 */, + B3E6BA3C2894B2F500CF98C7 /* bad */, + B3E6BA402894B2F500CF98C7 /* Lord of the Rings (1983) (Parker Bros) (Prototype).a26 */, + B3E6BA412894B2F500CF98C7 /* Popeye (1983) (Parker Bros) (PAL).a26 */, + B3E6BA422894B2F500CF98C7 /* Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype).a26 */, + B3E6BA432894B2F500CF98C7 /* Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype).a26 */, + B3E6BA442894B2F500CF98C7 /* Star Wars - Death Star Battle (1983) (Parker Bros) (PAL).a26 */, + B3E6BA452894B2F500CF98C7 /* Super Cobra (1982) (Parker Bros).a26 */, + B3E6BA462894B2F500CF98C7 /* Star Wars - The Arcade Game (1984) (Parker Bros) (PAL).a26 */, + B3E6BA472894B2F500CF98C7 /* Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL).a26 */, + B3E6BA482894B2F500CF98C7 /* Montezuma's Revenge (Thomas Jentzsch) (PAL60).a26 */, + B3E6BA492894B2F500CF98C7 /* Tutankham (1983) (Parker Bros) (PAL).a26 */, + B3E6BA4A2894B2F500CF98C7 /* James Bond 007 (1983) (Parker Bros).a26 */, + B3E6BA4B2894B2F500CF98C7 /* Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype).a26 */, + B3E6BA4C2894B2F500CF98C7 /* Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K).a26 */, + B3E6BA4D2894B2F500CF98C7 /* Star Wars - Death Star Battle (1983) (Parker Bros).a26 */, + B3E6BA4E2894B2F500CF98C7 /* Popeye (1983) (Parker Bros).a26 */, + B3E6BA4F2894B2F500CF98C7 /* Mr. Do!'s Castle (1984) (Parker Bros).a26 */, + B3E6BA502894B2F500CF98C7 /* Tooth Protectors (1983) (DSD-Camelot).a26 */, + B3E6BA512894B2F500CF98C7 /* Super Cobra (1982) (Parker Bros) (PAL).a26 */, + B3E6BA522894B2F500CF98C7 /* Tutankham (1983) (Parker Bros).a26 */, + ); + path = E0; + sourceTree = ""; + }; + B3E6BA3C2894B2F500CF98C7 /* bad */ = { + isa = PBXGroup; + children = ( + B3E6BA3D2894B2F500CF98C7 /* Super Cobra (1982) (Parker Bros) [b1].a26 */, + B3E6BA3E2894B2F500CF98C7 /* Star Wars - The Arcade Game (Parker Bros) (Prototype 122283).a26 */, + B3E6BA3F2894B2F500CF98C7 /* Q-bert's Qubes (1983) (Parker Bros).a26 */, + ); + path = bad; + sourceTree = ""; + }; + B3E6BA532894B2F500CF98C7 /* odd_sized */ = { + isa = PBXGroup; + children = ( + B3E6BA542894B2F500CF98C7 /* An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD).a26 */, + ); + path = odd_sized; + sourceTree = ""; + }; + B3E6BA552894B2F500CF98C7 /* TVBoy */ = { + isa = PBXGroup; + children = ( + B3E6BA562894B2F500CF98C7 /* Super TV Boy.bin */, + B3E6BA572894B2F500CF98C7 /* TV Boy (NTSC) (bad).bin */, + B3E6BA582894B2F500CF98C7 /* TV Boy 2.bin */, + B3E6BA592894B2F500CF98C7 /* TV Boy (PAL).bin */, + ); + path = TVBoy; + sourceTree = ""; + }; + B3E6BA5A2894B2F500CF98C7 /* DPC */ = { + isa = PBXGroup; + children = ( + B3E6BA5B2894B2F500CF98C7 /* Pitfall II (1984) (Activision).bin */, + ); + path = DPC; + sourceTree = ""; + }; + B3E6BA5C2894B2F500CF98C7 /* 2K */ = { + isa = PBXGroup; + children = ( + B3E6BA5D2894B2F500CF98C7 /* Okie Dokie (Older) (PD).a26 */, + B3E6BA5E2894B2F500CF98C7 /* Stampede (1981) (Activision) [!].a26 */, + B3E6BA5F2894B2F500CF98C7 /* Stampede (1981) (Activision) (PAL) [!].a26 */, + B3E6BA602894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) [o1].a26 */, + B3E6BA612894B2F500CF98C7 /* Kaboom! (CCE).a26 */, + B3E6BA622894B2F500CF98C7 /* Tennis (1981) (Activision) [o1].a26 */, + B3E6BA632894B2F500CF98C7 /* Tank Plus (1977) (Sears).a26 */, + B3E6BA642894B2F500CF98C7 /* Combat (Atari) (PAL) [!].a26 */, + B3E6BA652894B2F500CF98C7 /* Tennis (1981) (Activision) [!].a26 */, + B3E6BA662894B2F500CF98C7 /* Video Olympics (1978) (Atari).a26 */, + B3E6BA672894B2F500CF98C7 /* Video Olympics (1978) (Atari) (PAL) [!].a26 */, + B3E6BA682894B2F500CF98C7 /* Tennis (Pet Boat) (PAL) [p1][!].a26 */, + B3E6BA692894B2F500CF98C7 /* Air-Sea Battle (32-in-1) (Atari) (PAL) [!].a26 */, + B3E6BA6A2894B2F500CF98C7 /* Stampede (1981) (Activision) [o1].a26 */, + B3E6BA6B2894B2F500CF98C7 /* Freeway (1981) (Activision) [o1].a26 */, + B3E6BA6C2894B2F500CF98C7 /* Combat - Tank AI (19-04-2003) (Zach Matley).a26 */, + B3E6BA6D2894B2F500CF98C7 /* Combat TC (v0.1).a26 */, + B3E6BA6E2894B2F500CF98C7 /* Kaboom! (1981) (Activision) [o2].a26 */, + B3E6BA6F2894B2F500CF98C7 /* Stampede (32-in-1) (Atari) (PAL) [!].a26 */, + B3E6BA702894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) [!].a26 */, + B3E6BA712894B2F500CF98C7 /* Kabul! by Jess Ragan (Kaboom! Hack).a26 */, + B3E6BA722894B2F500CF98C7 /* Combat Rock (PD).a26 */, + B3E6BA732894B2F500CF98C7 /* Tennis (1981) (Activision) (PAL) [p1][o1].a26 */, + B3E6BA742894B2F500CF98C7 /* Tennis (1981) (Activision) (PAL) [!].a26 */, + B3E6BA752894B2F500CF98C7 /* Tennis (Starsoft) (PAL) [!].a26 */, + B3E6BA762894B2F500CF98C7 /* Freeway (CCE).a26 */, + B3E6BA772894B2F500CF98C7 /* Tennis (32-in-1) (Atari) (PAL) [!].a26 */, + B3E6BA782894B2F500CF98C7 /* Tennis (Dactar) (PAL) [p1][!].a26 */, + B3E6BA792894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) [o1][h1].a26 */, + B3E6BA7A2894B2F500CF98C7 /* Kaboom! (1981) (Activision) [o1].a26 */, + B3E6BA7B2894B2F500CF98C7 /* Freeway (1981) (Activision) (PAL) [!].a26 */, + B3E6BA7C2894B2F500CF98C7 /* Stampede (1981) (Activision) [o2].a26 */, + B3E6BA7D2894B2F500CF98C7 /* Air-Sea Battle (1977) (Atari) (PAL) [!].a26 */, + B3E6BA7E2894B2F500CF98C7 /* Combat Rock (PD) [a1].a26 */, + B3E6BA7F2894B2F500CF98C7 /* Freeway (1981) (Activision) [o2].a26 */, + B3E6BA802894B2F500CF98C7 /* Tank Plus (1977) (Sears) [a1].a26 */, + B3E6BA812894B2F500CF98C7 /* Stampede (1981) (Activision) (PAL) [p1][o1][!].a26 */, + B3E6BA822894B2F500CF98C7 /* Combat (1977) (Atari) [!].a26 */, + B3E6BA832894B2F600CF98C7 /* Freeway (1981) (Activision) [!].a26 */, + B3E6BA842894B2F600CF98C7 /* Combat (32-in-1) (Atari) (PAL) [!].a26 */, + B3E6BA852894B2F600CF98C7 /* Freeway (AKA Rabbits) (PAL) [p1][!].a26 */, + B3E6BA862894B2F600CF98C7 /* Okie Dokie (PD).a26 */, + B3E6BA872894B2F600CF98C7 /* Freeway (32-in-1) (Atari) (PAL) [!].a26 */, + B3E6BA882894B2F600CF98C7 /* Okie Dokie (4K) (PD).a26 */, + B3E6BA892894B2F600CF98C7 /* Xaxyrax Road by Charles Morgan (Freeway Hack).a26 */, + B3E6BA8A2894B2F600CF98C7 /* Kaboom! (1981) (Activision) (PAL) [!].a26 */, + B3E6BA8B2894B2F600CF98C7 /* Stampede (1981) (Activision) (PAL) [p1][!].a26 */, + B3E6BA8C2894B2F600CF98C7 /* Tennis (1981) (Activision) [o2].a26 */, + B3E6BA8D2894B2F600CF98C7 /* Video Olympics (1978) (Atari) [o1].a26 */, + B3E6BA8E2894B2F600CF98C7 /* Freeway (Dactar) (PAL) [p1][!].a26 */, + B3E6BA8F2894B2F600CF98C7 /* Air-Sea Battle (1977) (Atari) (PAL) [p1][!].a26 */, + B3E6BA902894B2F600CF98C7 /* Combat AI (16-02-2003) (Zach Matley).a26 */, + B3E6BA912894B2F600CF98C7 /* 2-in-1 - Freeway and Tennis [p1].a26 */, + ); + path = 2K; + sourceTree = ""; + }; + B3E6BA922894B2F600CF98C7 /* controller */ = { + isa = PBXGroup; + children = ( + B3E6BA932894B2F600CF98C7 /* quadtari */, + B3E6BA952894B2F600CF98C7 /* mindlink */, + B3E6BA982894B2F600CF98C7 /* joy2bplus */, + B3E6BA9A2894B2F600CF98C7 /* genesis */, + ); + path = controller; + sourceTree = ""; + }; + B3E6BA932894B2F600CF98C7 /* quadtari */ = { + isa = PBXGroup; + children = ( + B3E6BA942894B2F600CF98C7 /* multitap_test.bin */, + ); + path = quadtari; + sourceTree = ""; + }; + B3E6BA952894B2F600CF98C7 /* mindlink */ = { + isa = PBXGroup; + children = ( + B3E6BA962894B2F600CF98C7 /* Telepathy (Mindlink Controller) (1983) (Atari, Dan Oliver) (Prototype) ~.bin */, + B3E6BA972894B2F600CF98C7 /* Bionic Breakthrough (Headband - Super Breakout) (Mindlink Controller) (1984) (Atari, Paul Donaldson) (Prototype) ~.bin */, + ); + path = mindlink; + sourceTree = ""; + }; + B3E6BA982894B2F600CF98C7 /* joy2bplus */ = { + isa = PBXGroup; + children = ( + B3E6BA992894B2F600CF98C7 /* Grizzards.NTSC.full-beta-4.a26 */, + ); + path = joy2bplus; + sourceTree = ""; + }; + B3E6BA9A2894B2F600CF98C7 /* genesis */ = { + isa = PBXGroup; + children = ( + B3E6BA9B2894B2F600CF98C7 /* Defender (Genesis).bin */, + B3E6BA9C2894B2F600CF98C7 /* Sea Hawk (Genesis).bin */, + B3E6BA9D2894B2F600CF98C7 /* Mouse Trap (Genesis).bin */, + B3E6BA9E2894B2F600CF98C7 /* Defender MegaDrive (PAL) (Genesis).bin */, + B3E6BA9F2894B2F600CF98C7 /* H.E.R.O. (2 button)V2.bin */, + B3E6BAA02894B2F600CF98C7 /* Moon Patrol (Genesis).bin */, + B3E6BAA12894B2F600CF98C7 /* Star Voyager (Genesis).bin */, + B3E6BAA22894B2F600CF98C7 /* Solaris (Genesis).bin */, + B3E6BAA32894B2F600CF98C7 /* Moon Patrol Arcade (Genesis).bin */, + B3E6BAA42894B2F600CF98C7 /* Defender 2 (Genesis).bin */, + B3E6BAA52894B2F600CF98C7 /* Defender Arcade (Genesis).bin */, + B3E6BAA62894B2F600CF98C7 /* Asteroids (Genesis).bin */, + B3E6BAA72894B2F600CF98C7 /* Spy Hunter (Genesis).bin */, + B3E6BAA82894B2F600CF98C7 /* Yars' Revenge (Genesis).bin */, + ); + path = genesis; + sourceTree = ""; + }; + B3E6BAA92894B2F600CF98C7 /* profile */ = { + isa = PBXGroup; + children = ( + B3E6BAAA2894B2F600CF98C7 /* 128.bin */, + B3E6BAAB2894B2F600CF98C7 /* README.md */, + B3E6BAAC2894B2F600CF98C7 /* catharsis_theory.bin */, + ); + path = profile; + sourceTree = ""; + }; + B3E6BAAD2894B2F600CF98C7 /* debian */ = { + isa = PBXGroup; + children = ( + B3E6BAAE2894B2F600CF98C7 /* compat */, + B3E6BAAF2894B2F600CF98C7 /* changelog */, + B3E6BAB02894B2F600CF98C7 /* source */, + B3E6BAB22894B2F600CF98C7 /* docs */, + B3E6BAB32894B2F600CF98C7 /* rules */, + B3E6BAB42894B2F600CF98C7 /* watch */, + B3E6BAB52894B2F600CF98C7 /* copyright */, + B3E6BAB62894B2F600CF98C7 /* doc-base */, + B3E6BAB72894B2F600CF98C7 /* control */, + ); + name = debian; + path = src/os/libretro; + sourceTree = ""; + }; + B3E6BAB02894B2F600CF98C7 /* source */ = { + isa = PBXGroup; + children = ( + B3E6BAB12894B2F600CF98C7 /* format */, + ); + path = source; + sourceTree = ""; + }; + B3E6BABD2894B2F600CF98C7 /* docs */ = { + isa = PBXGroup; + children = ( + B3E6BABE2894B2F600CF98C7 /* index.html */, + B3E6BABF2894B2F600CF98C7 /* index_r77.html */, + B3E6BAC02894B2F600CF98C7 /* basic_settings.png */, + B3E6BAC12894B2F600CF98C7 /* commandsmenu_r77.png */, + B3E6BAC22894B2F600CF98C7 /* graphics */, + B3E6BB132894B2F600CF98C7 /* debugger.html */, + B3E6BB142894B2F600CF98C7 /* R77_readme.txt */, + ); + path = docs; + sourceTree = ""; + }; + B3E6BAC22894B2F600CF98C7 /* graphics */ = { + isa = PBXGroup; + children = ( + B3E6BAC32894B2F600CF98C7 /* space_invaders.png */, + B3E6BAC42894B2F600CF98C7 /* debugger_tiaoutcmenu.png */, + B3E6BAC52894B2F600CF98C7 /* navigation_buttons.png */, + B3E6BAC62894B2F600CF98C7 /* cheat.png */, + B3E6BAC72894B2F600CF98C7 /* developer_stats.png */, + B3E6BAC82894B2F600CF98C7 /* options_video_tv.png */, + B3E6BAC92894B2F600CF98C7 /* chucky_cheese.png */, + B3E6BACA2894B2F600CF98C7 /* options_emulation.png */, + B3E6BACB2894B2F600CF98C7 /* rominfo_2x_small.png */, + B3E6BACC2894B2F600CF98C7 /* options_gameinfo_quadtari.png */, + B3E6BACD2894B2F600CF98C7 /* jr_pacman.png */, + B3E6BACE2894B2F600CF98C7 /* debugger_banksimple.png */, + B3E6BACF2894B2F600CF98C7 /* debugger_dataops.png */, + B3E6BAD02894B2F600CF98C7 /* debugger_romcmenu.png */, + B3E6BAD12894B2F600CF98C7 /* highscores.png */, + B3E6BAD22894B2F600CF98C7 /* options_developer.png */, + B3E6BAD32894B2F600CF98C7 /* launcher.png */, + B3E6BAD42894B2F600CF98C7 /* options_developer_timemachine.png */, + B3E6BAD52894B2F600CF98C7 /* debugger_rom.png */, + B3E6BAD62894B2F600CF98C7 /* show_roms.png */, + B3E6BAD72894B2F600CF98C7 /* debugger_bankcomplex.png */, + B3E6BAD82894B2F600CF98C7 /* launcher_override.png */, + B3E6BAD92894B2F600CF98C7 /* launcher_options_snapshots.png */, + B3E6BADA2894B2F600CF98C7 /* logs.png */, + B3E6BADB2894B2F600CF98C7 /* debugger_tiainfo.png */, + B3E6BADC2894B2F600CF98C7 /* eventmapping_remap.png */, + B3E6BADD2894B2F600CF98C7 /* show_sub_dirs.png */, + B3E6BADE2894B2F600CF98C7 /* resources */, + B3E6BAE12894B2F600CF98C7 /* debugger_main.png */, + B3E6BAE22894B2F600CF98C7 /* options_misc_dark.png */, + B3E6BAE32894B2F600CF98C7 /* debugger_tiatab.png */, + B3E6BAE42894B2F600CF98C7 /* secret_quest.png */, + B3E6BAE52894B2F600CF98C7 /* circuit.png */, + B3E6BAE62894B2F600CF98C7 /* reload_list.png */, + B3E6BAE72894B2F600CF98C7 /* debugger_cpuregs.png */, + B3E6BAE82894B2F600CF98C7 /* eventmapping_mouse.png */, + B3E6BAE92894B2F600CF98C7 /* commandmenu.png */, + B3E6BAEA2894B2F600CF98C7 /* debugger_globalbuttons.png */, + B3E6BAEB2894B2F600CF98C7 /* open_help.png */, + B3E6BAEC2894B2F600CF98C7 /* options_developer_debugger.png */, + B3E6BAED2894B2F600CF98C7 /* Stella_icon.png */, + B3E6BAEE2894B2F600CF98C7 /* debugger_audiotab.png */, + B3E6BAEF2894B2F600CF98C7 /* timemachine.png */, + B3E6BAF02894B2F600CF98C7 /* options_developer_tia.png */, + B3E6BAF12894B2F600CF98C7 /* console.png */, + B3E6BAF22894B2F600CF98C7 /* options_misc_classic.png */, + B3E6BAF32894B2F600CF98C7 /* options_video_palettes.png */, + B3E6BAF42894B2F600CF98C7 /* debugger_iotab.png */, + B3E6BAF52894B2F600CF98C7 /* options_gameinfo_cartridge.png */, + B3E6BAF62894B2F600CF98C7 /* show_current_dir.png */, + B3E6BAF72894B2F600CF98C7 /* eventmapping.png */, + B3E6BAF82894B2F600CF98C7 /* options.png */, + B3E6BAF92894B2F600CF98C7 /* options_gameinfo_console.png */, + B3E6BAFA2894B2F600CF98C7 /* debugger_ramsearch.png */, + B3E6BAFB2894B2F600CF98C7 /* options_gameinfo_highscores.png */, + B3E6BAFC2894B2F600CF98C7 /* options_gameinfo_controller.png */, + B3E6BAFD2894B2F600CF98C7 /* options_gameinfo_emulation.png */, + B3E6BAFE2894B2F600CF98C7 /* rominfo_1x_large.png */, + B3E6BAFF2894B2F600CF98C7 /* show_all.png */, + B3E6BB002894B2F600CF98C7 /* debugger_options.png */, + B3E6BB012894B2F600CF98C7 /* qwertz.png */, + B3E6BB022894B2F600CF98C7 /* options_video.png */, + B3E6BB032894B2F600CF98C7 /* options_ui.png */, + B3E6BB042894B2F600CF98C7 /* options_developer_emulation.png */, + B3E6BB052894B2F600CF98C7 /* options_developer_video.png */, + B3E6BB062894B2F600CF98C7 /* debugger_ram-dpc.png */, + B3E6BB072894B2F600CF98C7 /* debugger_tiazoomcmenu.png */, + B3E6BB082894B2F600CF98C7 /* options_audio.png */, + B3E6BB092894B2F600CF98C7 /* eventmapping_devsports.png */, + B3E6BB0A2894B2F600CF98C7 /* romaudit.png */, + B3E6BB0B2894B2F600CF98C7 /* pacman.png */, + B3E6BB0C2894B2F600CF98C7 /* eventmapping_combo.png */, + B3E6BB0D2894B2F600CF98C7 /* debugger_ram-f8sc.png */, + B3E6BB0E2894B2F600CF98C7 /* options_misc_light.png */, + B3E6BB0F2894B2F600CF98C7 /* debugger_bpstatus.png */, + B3E6BB102894B2F600CF98C7 /* options_misc.png */, + B3E6BB112894B2F600CF98C7 /* debugger_ram.png */, + B3E6BB122894B2F600CF98C7 /* rominfo_1x_small.png */, + ); + path = graphics; + sourceTree = ""; }; - B305EEB2276B4BDF003AE510 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVStella-watchOS"; - PRODUCT_NAME = PVStella; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - TARGETED_DEVICE_FAMILY = 4; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - WATCHOS_DEPLOYMENT_TARGET = 8.3; - }; - name = Debug; + B3E6BADE2894B2F600CF98C7 /* resources */ = { + isa = PBXGroup; + children = ( + B3E6BADF2894B2F600CF98C7 /* debugger_main.pdn */, + B3E6BAE02894B2F600CF98C7 /* default_snapshot.png */, + ); + path = resources; + sourceTree = ""; }; - B305EEB3276B4BDF003AE510 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVStella-watchOS"; - PRODUCT_NAME = PVStella; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - TARGETED_DEVICE_FAMILY = 4; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - WATCHOS_DEPLOYMENT_TARGET = 8.3; + B3E6BB1F2894B2F600CF98C7 /* src */ = { + isa = PBXGroup; + children = ( + B312F91E292B0F1E00286CFE /* lib */, + B312F971292B0F1E00286CFE /* os */, + B3E6BB8D2894B2F700CF98C7 /* cheat */, + B3E6BBAA2894B2F700CF98C7 /* common */, + B3E6BCDE2894B2F900CF98C7 /* debugger */, + B3E6BDBC2894B2FA00CF98C7 /* emucore */, + B3E6BC532894B2F800CF98C7 /* gui */, + ); + path = src; + sourceTree = ""; + }; + B3E6BB202894B2F600CF98C7 /* tools */ = { + isa = PBXGroup; + children = ( + B3E6BB212894B2F600CF98C7 /* convbdf.c */, + B3E6BB222894B2F600CF98C7 /* merge_props.pl */, + B3E6BB232894B2F600CF98C7 /* PropSet.pm */, + B3E6BB242894B2F600CF98C7 /* prune_snapshots.pl */, + B3E6BB252894B2F600CF98C7 /* scrom.asm */, + B3E6BB262894B2F600CF98C7 /* check-sig.cxx */, + B3E6BB272894B2F600CF98C7 /* create_props.pl */, + B3E6BB282894B2F600CF98C7 /* rom_diff.pl */, + B3E6BB292894B2F600CF98C7 /* romtohex.cxx */, + B3E6BB2A2894B2F600CF98C7 /* evdev-joystick */, + ); + path = tools; + sourceTree = ""; + }; + B3E6BB2A2894B2F600CF98C7 /* evdev-joystick */ = { + isa = PBXGroup; + children = ( + B3E6BB2B2894B2F600CF98C7 /* Makefile */, + B3E6BB2C2894B2F600CF98C7 /* evdev-joystick.c */, + B3E6BB2D2894B2F600CF98C7 /* Readme.txt */, + B3E6BB2E2894B2F600CF98C7 /* License.txt */, + B3E6BB2F2894B2F600CF98C7 /* 80-stelladaptor-joystick.rules */, + ); + path = "evdev-joystick"; + sourceTree = ""; + }; + B3E6BB8D2894B2F700CF98C7 /* cheat */ = { + isa = PBXGroup; + children = ( + B3E6BB942894B2F700CF98C7 /* BankRomCheat.cxx */, + B3E6BB8E2894B2F700CF98C7 /* CheatCodeDialog.cxx */, + B3E6BB922894B2F700CF98C7 /* CheatManager.cxx */, + B3E6BB952894B2F700CF98C7 /* CheetahCheat.cxx */, + B3E6BB912894B2F700CF98C7 /* RamCheat.cxx */, + B3E6BB8F2894B2F700CF98C7 /* BankRomCheat.hxx */, + B3E6BB992894B2F700CF98C7 /* Cheat.hxx */, + B3E6BB982894B2F700CF98C7 /* CheatCodeDialog.hxx */, + B3E6BB972894B2F700CF98C7 /* CheatManager.hxx */, + B3E6BB902894B2F700CF98C7 /* CheetahCheat.hxx */, + B3E6BB962894B2F700CF98C7 /* RamCheat.hxx */, + B3E6BB932894B2F700CF98C7 /* module.mk */, + ); + path = cheat; + sourceTree = ""; + }; + B3E6BBAA2894B2F700CF98C7 /* common */ = { + isa = PBXGroup; + children = ( + B3E6BBD62894B2F800CF98C7 /* AudioQueue.cxx */, + B3E6BC2C2894B2F800CF98C7 /* AudioSettings.cxx */, + B3E6BC002894B2F800CF98C7 /* Base.cxx */, + B3E6BC272894B2F800CF98C7 /* DevSettingsHandler.cxx */, + B3E6BC1D2894B2F800CF98C7 /* EventHandlerSDL2.cxx */, + B3E6BBEF2894B2F800CF98C7 /* FBBackendSDL2.cxx */, + B3E6BBD72894B2F800CF98C7 /* FBSurfaceSDL2.cxx */, + B3E6BC292894B2F800CF98C7 /* FpsMeter.cxx */, + B3E6BC322894B2F800CF98C7 /* FSNodeZIP.cxx */, + B3E6BBD52894B2F800CF98C7 /* HighScoresManager.cxx */, + B3E6BBEC2894B2F800CF98C7 /* JoyMap.cxx */, + B3E6BBD12894B2F800CF98C7 /* KeyMap.cxx */, + B3E6BBDC2894B2F800CF98C7 /* Logger.cxx */, + B3E6BBCF2894B2F800CF98C7 /* main.cxx */, + B3E6BC2B2894B2F800CF98C7 /* MouseControl.cxx */, + B3E6BC302894B2F800CF98C7 /* PaletteHandler.cxx */, + B3E6BBFB2894B2F800CF98C7 /* PhosphorHandler.cxx */, + B3E6BBFD2894B2F800CF98C7 /* PhysicalJoystick.cxx */, + B3E6BBEE2894B2F800CF98C7 /* PJoystickHandler.cxx */, + B3E6BC252894B2F800CF98C7 /* PKeyboardHandler.cxx */, + B3E6BC012894B2F800CF98C7 /* PNGLibrary.cxx */, + B3E6BBFF2894B2F800CF98C7 /* RewindManager.cxx */, + B3E6BC342894B2F800CF98C7 /* SoundSDL2.cxx */, + B3E6BC0F2894B2F800CF98C7 /* StaggeredLogger.cxx */, + B3E6BBED2894B2F800CF98C7 /* StateManager.cxx */, + B3E6BBD02894B2F800CF98C7 /* ThreadDebugging.cxx */, + B3E6BC352894B2F800CF98C7 /* TimerManager.cxx */, + B3E6BBE02894B2F800CF98C7 /* VideoModeHandler.cxx */, + B3E6BC312894B2F800CF98C7 /* ZipHandler.cxx */, + B3E6BC2F2894B2F800CF98C7 /* AudioQueue.hxx */, + B3E6BBD32894B2F800CF98C7 /* AudioSettings.hxx */, + B3E6BBE52894B2F800CF98C7 /* Base.hxx */, + B3E6BBDE2894B2F800CF98C7 /* bspf.hxx */, + B3E6BBAE2894B2F700CF98C7 /* DevSettingsHandler.hxx */, + B3E6BBAB2894B2F700CF98C7 /* EventHandlerSDL2.hxx */, + B3E6BC182894B2F800CF98C7 /* FBBackendSDL2.hxx */, + B3E6BC2D2894B2F800CF98C7 /* FBSurfaceSDL2.hxx */, + B3E6BBD42894B2F800CF98C7 /* FpsMeter.hxx */, + B3E6BBE72894B2F800CF98C7 /* FSNodeFactory.hxx */, + B3E6BBD92894B2F800CF98C7 /* FSNodeZIP.hxx */, + B3E6BC2E2894B2F800CF98C7 /* HighScoresManager.hxx */, + B3E6BC122894B2F800CF98C7 /* JoyMap.hxx */, + B3E6BBEA2894B2F800CF98C7 /* jsonDefinitions.hxx */, + B3E6BC2A2894B2F800CF98C7 /* KeyMap.hxx */, + B3E6BBE92894B2F800CF98C7 /* LinkedObjectPool.hxx */, + B3E6BC332894B2F800CF98C7 /* Logger.hxx */, + B3E6BBDB2894B2F800CF98C7 /* MediaFactory.hxx */, + B3E6BBD22894B2F800CF98C7 /* MouseControl.hxx */, + B3E6BBD82894B2F800CF98C7 /* PaletteHandler.hxx */, + B3E6BC1A2894B2F800CF98C7 /* PhosphorHandler.hxx */, + B3E6BBE22894B2F800CF98C7 /* PhysicalJoystick.hxx */, + B3E6BC142894B2F800CF98C7 /* PJoystickHandler.hxx */, + B3E6BBAD2894B2F700CF98C7 /* PKeyboardHandler.hxx */, + B3E6BBE42894B2F800CF98C7 /* PNGLibrary.hxx */, + B3E6BC112894B2F800CF98C7 /* Rect.hxx */, + B3E6BBE12894B2F800CF98C7 /* RewindManager.hxx */, + B3E6BBEB2894B2F800CF98C7 /* SDL_lib.hxx */, + B3E6BBFE2894B2F800CF98C7 /* smartmod.hxx */, + B3E6BC262894B2F800CF98C7 /* SoundNull.hxx */, + B3E6BBDD2894B2F800CF98C7 /* SoundSDL2.hxx */, + B3E6BBE62894B2F800CF98C7 /* Stack.hxx */, + B3E6BBE82894B2F800CF98C7 /* StaggeredLogger.hxx */, + B3E6BC152894B2F800CF98C7 /* StateManager.hxx */, + B3E6BC132894B2F800CF98C7 /* stella_icon.hxx */, + B3E6BBF82894B2F800CF98C7 /* StellaKeys.hxx */, + B3E6BC162894B2F800CF98C7 /* StringParser.hxx */, + B3E6BC282894B2F800CF98C7 /* ThreadDebugging.hxx */, + B3E6BBDF2894B2F800CF98C7 /* TimerManager.hxx */, + B3E6BC0E2894B2F800CF98C7 /* Variant.hxx */, + B3E6BBAC2894B2F700CF98C7 /* Vec.hxx */, + B3E6BBFA2894B2F800CF98C7 /* Version.hxx */, + B3E6BBFC2894B2F800CF98C7 /* VideoModeHandler.hxx */, + B3E6BBDA2894B2F800CF98C7 /* ZipHandler.hxx */, + B3E6BBF92894B2F800CF98C7 /* module.mk */, + B3E6BBE32894B2F800CF98C7 /* stella-16x16.png */, + B3E6BC192894B2F800CF98C7 /* stella-22x22.png */, + B3E6BC1E2894B2F800CF98C7 /* stella-24x24.png */, + B3E6BC1B2894B2F800CF98C7 /* stella-32x32.png */, + B3E6BC1C2894B2F800CF98C7 /* stella-48x48.png */, + B3E6BC102894B2F800CF98C7 /* stella-64x64.png */, + B3E6BC172894B2F800CF98C7 /* stella-128x128.png */, + B3E6BC0D2894B2F800CF98C7 /* stella.png */, + B3E6BC022894B2F800CF98C7 /* audio */, + B3E6BBAF2894B2F700CF98C7 /* repository */, + B3E6BBF02894B2F800CF98C7 /* sdl_blitter */, + B3E6BC1F2894B2F800CF98C7 /* tv_filters */, + ); + path = common; + sourceTree = ""; + }; + B3E6BBAF2894B2F700CF98C7 /* repository */ = { + isa = PBXGroup; + children = ( + B3E6BBB32894B2F700CF98C7 /* CompositeKeyValueRepository.cxx */, + B3E6BBC62894B2F800CF98C7 /* CompositeKVRJsonAdapter.cxx */, + B3E6BBCC2894B2F800CF98C7 /* KeyValueRepositoryConfigfile.cxx */, + B3E6BBC92894B2F800CF98C7 /* KeyValueRepositoryJsonFile.cxx */, + B3E6BBCD2894B2F800CF98C7 /* KeyValueRepositoryPropertyFile.cxx */, + B3E6BBC82894B2F800CF98C7 /* CompositeKeyValueRepository.hxx */, + B3E6BBCE2894B2F800CF98C7 /* CompositeKeyValueRepositoryNoop.hxx */, + B3E6BBCA2894B2F800CF98C7 /* CompositeKVRJsonAdapter.hxx */, + B3E6BBCB2894B2F800CF98C7 /* KeyValueRepository.hxx */, + B3E6BBB02894B2F700CF98C7 /* KeyValueRepositoryConfigfile.hxx */, + B3E6BBB22894B2F700CF98C7 /* KeyValueRepositoryFile.hxx */, + B3E6BBC52894B2F800CF98C7 /* KeyValueRepositoryJsonFile.hxx */, + B3E6BBC72894B2F800CF98C7 /* KeyValueRepositoryNoop.hxx */, + B3E6BBB12894B2F700CF98C7 /* KeyValueRepositoryPropertyFile.hxx */, + B3E6BBB42894B2F700CF98C7 /* sqlite */, + ); + path = repository; + sourceTree = ""; + }; + B3E6BBB42894B2F700CF98C7 /* sqlite */ = { + isa = PBXGroup; + children = ( + B3E6BBB52894B2F700CF98C7 /* SqliteDatabase.cxx */, + B3E6BBB62894B2F700CF98C7 /* KeyValueRepositorySqlite.hxx */, + B3E6BBB72894B2F700CF98C7 /* StellaDb.cxx */, + B3E6BBB82894B2F700CF98C7 /* AbstractKeyValueRepositorySqlite.cxx */, + B3E6BBB92894B2F700CF98C7 /* SqliteStatement.hxx */, + B3E6BBBA2894B2F700CF98C7 /* CompositeKeyValueRepositorySqlite.cxx */, + B3E6BBBB2894B2F700CF98C7 /* SqliteTransaction.cxx */, + B3E6BBBC2894B2F700CF98C7 /* SqliteError.hxx */, + B3E6BBBD2894B2F700CF98C7 /* module.mk */, + B3E6BBBE2894B2F700CF98C7 /* CompositeKeyValueRepositorySqlite.hxx */, + B3E6BBBF2894B2F700CF98C7 /* SqliteTransaction.hxx */, + B3E6BBC02894B2F700CF98C7 /* SqliteDatabase.hxx */, + B3E6BBC12894B2F700CF98C7 /* StellaDb.hxx */, + B3E6BBC22894B2F800CF98C7 /* KeyValueRepositorySqlite.cxx */, + B3E6BBC32894B2F800CF98C7 /* AbstractKeyValueRepositorySqlite.hxx */, + B3E6BBC42894B2F800CF98C7 /* SqliteStatement.cxx */, + ); + path = sqlite; + sourceTree = ""; + }; + B3E6BBF02894B2F800CF98C7 /* sdl_blitter */ = { + isa = PBXGroup; + children = ( + B3E6BBF12894B2F800CF98C7 /* BilinearBlitter.cxx */, + B3E6BBF22894B2F800CF98C7 /* QisBlitter.hxx */, + B3E6BBF32894B2F800CF98C7 /* Blitter.hxx */, + B3E6BBF42894B2F800CF98C7 /* BlitterFactory.hxx */, + B3E6BBF52894B2F800CF98C7 /* BlitterFactory.cxx */, + B3E6BBF62894B2F800CF98C7 /* BilinearBlitter.hxx */, + B3E6BBF72894B2F800CF98C7 /* QisBlitter.cxx */, + ); + path = sdl_blitter; + sourceTree = ""; + }; + B3E6BC022894B2F800CF98C7 /* audio */ = { + isa = PBXGroup; + children = ( + B3E6BC032894B2F800CF98C7 /* LanczosResampler.hxx */, + B3E6BC042894B2F800CF98C7 /* HighPass.cxx */, + B3E6BC052894B2F800CF98C7 /* SimpleResampler.cxx */, + B3E6BC062894B2F800CF98C7 /* ConvolutionBuffer.cxx */, + B3E6BC072894B2F800CF98C7 /* module.mk */, + B3E6BC082894B2F800CF98C7 /* ConvolutionBuffer.hxx */, + B3E6BC092894B2F800CF98C7 /* Resampler.hxx */, + B3E6BC0A2894B2F800CF98C7 /* LanczosResampler.cxx */, + B3E6BC0B2894B2F800CF98C7 /* HighPass.hxx */, + B3E6BC0C2894B2F800CF98C7 /* SimpleResampler.hxx */, + ); + path = audio; + sourceTree = ""; + }; + B3E6BC1F2894B2F800CF98C7 /* tv_filters */ = { + isa = PBXGroup; + children = ( + B3E6BC202894B2F800CF98C7 /* AtariNTSC.cxx */, + B3E6BC212894B2F800CF98C7 /* NTSCFilter.cxx */, + B3E6BC232894B2F800CF98C7 /* AtariNTSC.hxx */, + B3E6BC242894B2F800CF98C7 /* NTSCFilter.hxx */, + B3E6BC222894B2F800CF98C7 /* module.mk */, + ); + path = tv_filters; + sourceTree = ""; + }; + B3E6BC532894B2F800CF98C7 /* gui */ = { + isa = PBXGroup; + children = ( + B3E6BB202894B2F600CF98C7 /* tools */, + B3E6BC542894B2F800CF98C7 /* Stella14x28tFont.hxx */, + B3E6BC552894B2F800CF98C7 /* Launcher.cxx */, + B3E6BC562894B2F800CF98C7 /* InputTextDialog.hxx */, + B3E6BC572894B2F800CF98C7 /* QuadTariDialog.cxx */, + B3E6BC582894B2F800CF98C7 /* DeveloperDialog.hxx */, + B3E6BC592894B2F800CF98C7 /* UndoHandler.cxx */, + B3E6BC5A2894B2F800CF98C7 /* PlusRomsMenu.hxx */, + B3E6BC5B2894B2F800CF98C7 /* SnapshotDialog.cxx */, + B3E6BC5C2894B2F800CF98C7 /* HelpDialog.cxx */, + B3E6BC5D2894B2F800CF98C7 /* JoystickDialog.cxx */, + B3E6BC5E2894B2F800CF98C7 /* MinUICommandDialog.hxx */, + B3E6BC5F2894B2F800CF98C7 /* VideoAudioDialog.cxx */, + B3E6BC602894B2F800CF98C7 /* BrowserDialog.cxx */, + B3E6BC612894B2F800CF98C7 /* GlobalPropsDialog.hxx */, + B3E6BC622894B2F800CF98C7 /* OptionsDialog.cxx */, + B3E6BC632894B2F800CF98C7 /* EventMappingWidget.hxx */, + B3E6BC642894B2F800CF98C7 /* PlusRomsSetupDialog.hxx */, + B3E6BC652894B2F800CF98C7 /* EditTextWidget.cxx */, + B3E6BC662894B2F800CF98C7 /* PopUpWidget.cxx */, + B3E6BC672894B2F800CF98C7 /* CommandDialog.cxx */, + B3E6BC682894B2F800CF98C7 /* ConsoleMediumFont.hxx */, + B3E6BC692894B2F800CF98C7 /* ScrollBarWidget.hxx */, + B3E6BC6A2894B2F800CF98C7 /* Widget.hxx */, + B3E6BC6B2894B2F800CF98C7 /* ProgressDialog.hxx */, + B3E6BC6C2894B2F800CF98C7 /* Stella12x24tFont.hxx */, + B3E6BC6D2894B2F800CF98C7 /* ConsoleBFont.hxx */, + B3E6BC6E2894B2F800CF98C7 /* InputDialog.cxx */, + B3E6BC6F2894B2F800CF98C7 /* ComboDialog.hxx */, + B3E6BC702894B2F800CF98C7 /* MessageDialog.cxx */, + B3E6BC712894B2F800CF98C7 /* HighScoresDialog.cxx */, + B3E6BC722894B2F800CF98C7 /* MessageBox.hxx */, + B3E6BC732894B2F800CF98C7 /* OptionsMenu.hxx */, + B3E6BC742894B2F800CF98C7 /* TabWidget.hxx */, + B3E6BC752894B2F800CF98C7 /* LauncherFileListWidget.hxx */, + B3E6BC762894B2F800CF98C7 /* CommandMenu.cxx */, + B3E6BC772894B2F800CF98C7 /* LoggerDialog.cxx */, + B3E6BC782894B2F800CF98C7 /* ColorWidget.hxx */, + B3E6BC792894B2F800CF98C7 /* NavigationWidget.cxx */, + B3E6BC7A2894B2F800CF98C7 /* WhatsNewDialog.hxx */, + B3E6BC7B2894B2F800CF98C7 /* FavoritesManager.cxx */, + B3E6BC7C2894B2F800CF98C7 /* Command.hxx */, + B3E6BC7D2894B2F800CF98C7 /* ContextMenu.hxx */, + B3E6BC7E2894B2F800CF98C7 /* StellaSettingsDialog.cxx */, + B3E6BC7F2894B2F800CF98C7 /* GuiObject.hxx */, + B3E6BC802894B2F900CF98C7 /* RomAuditDialog.hxx */, + B3E6BC812894B2F900CF98C7 /* GameInfoDialog.hxx */, + B3E6BC822894B2F900CF98C7 /* EditableWidget.cxx */, + B3E6BC832894B2F900CF98C7 /* DialogContainer.cxx */, + B3E6BC842894B2F900CF98C7 /* Font.hxx */, + B3E6BC852894B2F900CF98C7 /* HighScoresMenu.hxx */, + B3E6BC862894B2F900CF98C7 /* StringListWidget.cxx */, + B3E6BC872894B2F900CF98C7 /* StellaLargeFont.hxx */, + B3E6BC882894B2F900CF98C7 /* LauncherDialog.hxx */, + B3E6BC892894B2F900CF98C7 /* RadioButtonWidget.cxx */, + B3E6BC8A2894B2F900CF98C7 /* TimeLineWidget.cxx */, + B3E6BC8B2894B2F900CF98C7 /* Terminus-Font-License.txt */, + B3E6BC8C2894B2F900CF98C7 /* R77HelpDialog.hxx */, + B3E6BC8D2894B2F900CF98C7 /* CheckListWidget.hxx */, + B3E6BC8E2894B2F900CF98C7 /* RomInfoWidget.cxx */, + B3E6BC8F2894B2F900CF98C7 /* MessageMenu.cxx */, + B3E6BC902894B2F900CF98C7 /* Dialog.hxx */, + B3E6BC912894B2F900CF98C7 /* ListWidget.hxx */, + B3E6BC922894B2F900CF98C7 /* UIDialog.hxx */, + B3E6BC932894B2F900CF98C7 /* TimeMachine.hxx */, + B3E6BC942894B2F900CF98C7 /* TimeMachineDialog.cxx */, + B3E6BC952894B2F900CF98C7 /* EmulationDialog.hxx */, + B3E6BC962894B2F900CF98C7 /* Icons.hxx */, + B3E6BC972894B2F900CF98C7 /* FileListWidget.hxx */, + B3E6BC982894B2F900CF98C7 /* module.mk */, + B3E6BC992894B2F900CF98C7 /* ToolTip.cxx */, + B3E6BC9A2894B2F900CF98C7 /* AboutDialog.hxx */, + B3E6BC9B2894B2F900CF98C7 /* MessageDialog.hxx */, + B3E6BC9C2894B2F900CF98C7 /* HighScoresDialog.hxx */, + B3E6BC9D2894B2F900CF98C7 /* ComboDialog.cxx */, + B3E6BC9E2894B2F900CF98C7 /* InputDialog.hxx */, + B3E6BC9F2894B2F900CF98C7 /* OptionsMenu.cxx */, + B3E6BCA02894B2F900CF98C7 /* TabWidget.cxx */, + B3E6BCA12894B2F900CF98C7 /* MessageBox.cxx */, + B3E6BCA22894B2F900CF98C7 /* LauncherFileListWidget.cxx */, + B3E6BCA32894B2F900CF98C7 /* CommandMenu.hxx */, + B3E6BCA42894B2F900CF98C7 /* Stella16x32tFont.hxx */, + B3E6BCA52894B2F900CF98C7 /* LoggerDialog.hxx */, + B3E6BCA62894B2F900CF98C7 /* WhatsNewDialog.cxx */, + B3E6BCA72894B2F900CF98C7 /* FavoritesManager.hxx */, + B3E6BCA82894B2F900CF98C7 /* ColorWidget.cxx */, + B3E6BCA92894B2F900CF98C7 /* NavigationWidget.hxx */, + B3E6BCAA2894B2F900CF98C7 /* ContextMenu.cxx */, + B3E6BCAB2894B2F900CF98C7 /* DialogContainer.hxx */, + B3E6BCAC2894B2F900CF98C7 /* Font.cxx */, + B3E6BCAD2894B2F900CF98C7 /* StringListWidget.hxx */, + B3E6BCAE2894B2F900CF98C7 /* HighScoresMenu.cxx */, + B3E6BCAF2894B2F900CF98C7 /* EditableWidget.hxx */, + B3E6BCB02894B2F900CF98C7 /* GameInfoDialog.cxx */, + B3E6BCB12894B2F900CF98C7 /* LauncherDialog.cxx */, + B3E6BCB22894B2F900CF98C7 /* StellaSettingsDialog.hxx */, + B3E6BCB32894B2F900CF98C7 /* RomAuditDialog.cxx */, + B3E6BCB42894B2F900CF98C7 /* RadioButtonWidget.hxx */, + B3E6BCB52894B2F900CF98C7 /* R77HelpDialog.cxx */, + B3E6BCB62894B2F900CF98C7 /* CheckListWidget.cxx */, + B3E6BCB72894B2F900CF98C7 /* TimeLineWidget.hxx */, + B3E6BCB82894B2F900CF98C7 /* StellaMediumFont.hxx */, + B3E6BCB92894B2F900CF98C7 /* ConsoleFont.hxx */, + B3E6BCBA2894B2F900CF98C7 /* RomInfoWidget.hxx */, + B3E6BCBB2894B2F900CF98C7 /* Dialog.cxx */, + B3E6BCBC2894B2F900CF98C7 /* MessageMenu.hxx */, + B3E6BCBD2894B2F900CF98C7 /* TimeMachineDialog.hxx */, + B3E6BCBE2894B2F900CF98C7 /* ListWidget.cxx */, + B3E6BCBF2894B2F900CF98C7 /* TimeMachine.cxx */, + B3E6BCC02894B2F900CF98C7 /* UIDialog.cxx */, + B3E6BCC12894B2F900CF98C7 /* FileListWidget.cxx */, + B3E6BCC22894B2F900CF98C7 /* EmulationDialog.cxx */, + B3E6BCC32894B2F900CF98C7 /* AboutDialog.cxx */, + B3E6BCC42894B2F900CF98C7 /* ToolTip.hxx */, + B3E6BCC52894B2F900CF98C7 /* Launcher.hxx */, + B3E6BCC62894B2F900CF98C7 /* ConsoleMediumBFont.hxx */, + B3E6BCC72894B2F900CF98C7 /* InputTextDialog.cxx */, + B3E6BCC82894B2F900CF98C7 /* QuadTariDialog.hxx */, + B3E6BCC92894B2F900CF98C7 /* UndoHandler.hxx */, + B3E6BCCA2894B2F900CF98C7 /* DeveloperDialog.cxx */, + B3E6BCCB2894B2F900CF98C7 /* StellaFont.hxx */, + B3E6BCCC2894B2F900CF98C7 /* HelpDialog.hxx */, + B3E6BCCD2894B2F900CF98C7 /* SnapshotDialog.hxx */, + B3E6BCCE2894B2F900CF98C7 /* PlusRomsMenu.cxx */, + B3E6BCCF2894B2F900CF98C7 /* JoystickDialog.hxx */, + B3E6BCD02894B2F900CF98C7 /* MinUICommandDialog.cxx */, + B3E6BCD12894B2F900CF98C7 /* VideoAudioDialog.hxx */, + B3E6BCD22894B2F900CF98C7 /* BrowserDialog.hxx */, + B3E6BCD32894B2F900CF98C7 /* EventMappingWidget.cxx */, + B3E6BCD42894B2F900CF98C7 /* GlobalPropsDialog.cxx */, + B3E6BCD52894B2F900CF98C7 /* OptionsDialog.hxx */, + B3E6BCD62894B2F900CF98C7 /* PlusRomsSetupDialog.cxx */, + B3E6BCD72894B2F900CF98C7 /* EditTextWidget.hxx */, + B3E6BCD82894B2F900CF98C7 /* Icon.hxx */, + B3E6BCD92894B2F900CF98C7 /* CommandDialog.hxx */, + B3E6BCDA2894B2F900CF98C7 /* PopUpWidget.hxx */, + B3E6BCDB2894B2F900CF98C7 /* Widget.cxx */, + B3E6BCDC2894B2F900CF98C7 /* ScrollBarWidget.cxx */, + B3E6BCDD2894B2F900CF98C7 /* ProgressDialog.cxx */, + ); + path = gui; + sourceTree = ""; + }; + B3E6BCDE2894B2F900CF98C7 /* debugger */ = { + isa = PBXGroup; + children = ( + B3E6BCDF2894B2F900CF98C7 /* CartDebug.hxx */, + B3E6BCE02894B2F900CF98C7 /* BreakpointMap.hxx */, + B3E6BCE12894B2F900CF98C7 /* DebuggerParser.cxx */, + B3E6BCE22894B2F900CF98C7 /* DebuggerExpressions.hxx */, + B3E6BCE32894B2F900CF98C7 /* DiStella.hxx */, + B3E6BCE42894B2F900CF98C7 /* RiotDebug.hxx */, + B3E6BCE52894B2F900CF98C7 /* CpuDebug.hxx */, + B3E6BCE62894B2F900CF98C7 /* Debugger.cxx */, + B3E6BCE72894B2F900CF98C7 /* TrapArray.hxx */, + B3E6BCE82894B2F900CF98C7 /* module.mk */, + B3E6BCE92894B2F900CF98C7 /* TIADebug.cxx */, + B3E6BCEA2894B2F900CF98C7 /* CpuDebug.cxx */, + B3E6BCEB2894B2F900CF98C7 /* Debugger.hxx */, + B3E6BCEC2894B2F900CF98C7 /* DebuggerSystem.hxx */, + B3E6BCED2894B2F900CF98C7 /* gui */, + B3E6BD992894B2FA00CF98C7 /* TIADebug.hxx */, + B3E6BD9A2894B2FA00CF98C7 /* CartDebug.cxx */, + B3E6BD9B2894B2FA00CF98C7 /* BreakpointMap.cxx */, + B3E6BD9C2894B2FA00CF98C7 /* DebuggerParser.hxx */, + B3E6BD9D2894B2FA00CF98C7 /* DiStella.cxx */, + B3E6BD9E2894B2FA00CF98C7 /* Expression.hxx */, + B3E6BD9F2894B2FA00CF98C7 /* RiotDebug.cxx */, + ); + path = debugger; + sourceTree = ""; + }; + B3E6BCED2894B2F900CF98C7 /* gui */ = { + isa = PBXGroup; + children = ( + B3E6BCEE2894B2F900CF98C7 /* CartBUSWidget.hxx */, + B3E6BCEF2894B2F900CF98C7 /* CartBFWidget.cxx */, + B3E6BCF02894B2F900CF98C7 /* CartRamWidget.hxx */, + B3E6BCF12894B2F900CF98C7 /* SaveKeyWidget.cxx */, + B3E6BCF22894B2F900CF98C7 /* CartF6Widget.hxx */, + B3E6BCF32894B2F900CF98C7 /* TogglePixelWidget.cxx */, + B3E6BCF42894B2F900CF98C7 /* AtariMouseWidget.hxx */, + B3E6BCF52894B2F900CF98C7 /* RiotWidget.hxx */, + B3E6BCF62894B2F900CF98C7 /* DataGridWidget.cxx */, + B3E6BCF72894B2F900CF98C7 /* CartE0Widget.cxx */, + B3E6BCF82894B2F900CF98C7 /* CartDPCPlusWidget.cxx */, + B3E6BCF92894B2F900CF98C7 /* Cart4KSCWidget.hxx */, + B3E6BCFA2894B2F900CF98C7 /* CartF8Widget.cxx */, + B3E6BCFB2894B2F900CF98C7 /* CartX07Widget.hxx */, + B3E6BCFC2894B2F900CF98C7 /* CartFA2Widget.hxx */, + B3E6BCFD2894B2F900CF98C7 /* CartDFWidget.hxx */, + B3E6BCFE2894B2F900CF98C7 /* DataGridRamWidget.cxx */, + B3E6BCFF2894B2F900CF98C7 /* TiaOutputWidget.hxx */, + B3E6BD002894B2F900CF98C7 /* TrakBallWidget.hxx */, + B3E6BD012894B2F900CF98C7 /* CartBFSCWidget.cxx */, + B3E6BD022894B2F900CF98C7 /* CartEFSCWidget.cxx */, + B3E6BD032894B2F900CF98C7 /* CartCDFWidget.cxx */, + B3E6BD042894B2F900CF98C7 /* Cart0840Widget.cxx */, + B3E6BD052894B2F900CF98C7 /* RomListSettings.cxx */, + B3E6BD062894B2F900CF98C7 /* CartF0Widget.hxx */, + B3E6BD072894B2F900CF98C7 /* Cart3EPlusWidget.cxx */, + B3E6BD082894B2F900CF98C7 /* CartUAWidget.hxx */, + B3E6BD092894B2F900CF98C7 /* PaddleWidget.cxx */, + B3E6BD0A2894B2F900CF98C7 /* AtariVoxWidget.cxx */, + B3E6BD0B2894B2F900CF98C7 /* ToggleBitWidget.hxx */, + B3E6BD0C2894B2F900CF98C7 /* RiotRamWidget.hxx */, + B3E6BD0D2894B2F900CF98C7 /* Cart2KWidget.hxx */, + B3E6BD0E2894B2F900CF98C7 /* CartARMWidget.hxx */, + B3E6BD0F2894B2F900CF98C7 /* CartSBWidget.hxx */, + B3E6BD102894B2F900CF98C7 /* DrivingWidget.cxx */, + B3E6BD112894B2F900CF98C7 /* CartDFSCWidget.cxx */, + B3E6BD122894B2F900CF98C7 /* Cart4KWidget.cxx */, + B3E6BD132894B2F900CF98C7 /* CpuWidget.hxx */, + B3E6BD142894B2F900CF98C7 /* FlashWidget.hxx */, + B3E6BD152894B2F900CF98C7 /* AudioWidget.cxx */, + B3E6BD162894B2F900CF98C7 /* CartMDMWidget.hxx */, + B3E6BD172894B2F900CF98C7 /* Cart4A50Widget.hxx */, + B3E6BD182894B2F900CF98C7 /* NullControlWidget.hxx */, + B3E6BD192894B2F900CF98C7 /* CartFAWidget.hxx */, + B3E6BD1A2894B2F900CF98C7 /* CartF4Widget.cxx */, + B3E6BD1B2894B2F900CF98C7 /* QuadTariWidget.cxx */, + B3E6BD1C2894B2F900CF98C7 /* TiaZoomWidget.cxx */, + B3E6BD1D2894B2F900CF98C7 /* PromptWidget.cxx */, + B3E6BD1E2894B2F900CF98C7 /* CartWDWidget.cxx */, + B3E6BD1F2894B2F900CF98C7 /* CartCVWidget.cxx */, + B3E6BD202894B2F900CF98C7 /* CartBUSInfoWidget.hxx */, + B3E6BD212894B2F900CF98C7 /* CartTVBoyWidget.cxx */, + B3E6BD222894B2F900CF98C7 /* CartDPCWidget.cxx */, + B3E6BD232894B2F900CF98C7 /* PointingDeviceWidget.hxx */, + B3E6BD242894B2F900CF98C7 /* GenesisWidget.cxx */, + B3E6BD252894B2F900CF98C7 /* CartF8SCWidget.hxx */, + B3E6BD262894B2F900CF98C7 /* BoosterWidget.hxx */, + B3E6BD272894B2F900CF98C7 /* RamWidget.cxx */, + B3E6BD282894B2F900CF98C7 /* Cart3EWidget.hxx */, + B3E6BD292894B2F900CF98C7 /* AmigaMouseWidget.cxx */, + B3E6BD2A2894B2F900CF98C7 /* Cart3FWidget.cxx */, + B3E6BD2B2894B2F900CF98C7 /* CartFEWidget.cxx */, + B3E6BD2C2894B2F900CF98C7 /* CartDebugWidget.cxx */, + B3E6BD2D2894B2F900CF98C7 /* CartCMWidget.hxx */, + B3E6BD2E2894B2F900CF98C7 /* CartCTYWidget.hxx */, + B3E6BD2F2894B2F900CF98C7 /* CartCDFInfoWidget.cxx */, + B3E6BD302894B2F900CF98C7 /* CartE7Widget.cxx */, + B3E6BD312894B2F900CF98C7 /* CartARWidget.hxx */, + B3E6BD322894B2F900CF98C7 /* KeyboardWidget.cxx */, + B3E6BD332894B2F900CF98C7 /* JoystickWidget.cxx */, + B3E6BD342894B2F900CF98C7 /* DelayQueueWidget.cxx */, + B3E6BD352894B2F900CF98C7 /* Cart0FA0Widget.hxx */, + B3E6BD362894B2FA00CF98C7 /* TiaWidget.cxx */, + B3E6BD372894B2FA00CF98C7 /* RomListWidget.cxx */, + B3E6BD382894B2FA00CF98C7 /* RomWidget.hxx */, + B3E6BD392894B2FA00CF98C7 /* TiaInfoWidget.hxx */, + B3E6BD3A2894B2FA00CF98C7 /* CartF6SCWidget.cxx */, + B3E6BD3B2894B2FA00CF98C7 /* DataGridOpsWidget.hxx */, + B3E6BD3C2894B2FA00CF98C7 /* CartFCWidget.cxx */, + B3E6BD3D2894B2FA00CF98C7 /* DebuggerDialog.hxx */, + B3E6BD3E2894B2FA00CF98C7 /* CartF4SCWidget.hxx */, + B3E6BD3F2894B2FA00CF98C7 /* Joy2BPlusWidget.cxx */, + B3E6BD402894B2FA00CF98C7 /* ToggleWidget.hxx */, + B3E6BD412894B2FA00CF98C7 /* module.mk */, + B3E6BD422894B2FA00CF98C7 /* CartEnhancedWidget.hxx */, + B3E6BD432894B2FA00CF98C7 /* CartEFWidget.cxx */, + B3E6BD442894B2FA00CF98C7 /* TiaZoomWidget.hxx */, + B3E6BD452894B2FA00CF98C7 /* CartF4Widget.hxx */, + B3E6BD462894B2FA00CF98C7 /* QuadTariWidget.hxx */, + B3E6BD472894B2FA00CF98C7 /* PromptWidget.hxx */, + B3E6BD482894B2FA00CF98C7 /* CartCVWidget.hxx */, + B3E6BD492894B2FA00CF98C7 /* CartTVBoyWidget.hxx */, + B3E6BD4A2894B2FA00CF98C7 /* CartBUSInfoWidget.cxx */, + B3E6BD4B2894B2FA00CF98C7 /* CartWDWidget.hxx */, + B3E6BD4C2894B2FA00CF98C7 /* GenesisWidget.hxx */, + B3E6BD4D2894B2FA00CF98C7 /* CartF8SCWidget.cxx */, + B3E6BD4E2894B2FA00CF98C7 /* CartDPCWidget.hxx */, + B3E6BD4F2894B2FA00CF98C7 /* PointingDeviceWidget.cxx */, + B3E6BD502894B2FA00CF98C7 /* BoosterWidget.cxx */, + B3E6BD512894B2FA00CF98C7 /* AmigaMouseWidget.hxx */, + B3E6BD522894B2FA00CF98C7 /* RamWidget.hxx */, + B3E6BD532894B2FA00CF98C7 /* Cart3EWidget.cxx */, + B3E6BD542894B2FA00CF98C7 /* Cart3FWidget.hxx */, + B3E6BD552894B2FA00CF98C7 /* CartFEWidget.hxx */, + B3E6BD562894B2FA00CF98C7 /* CartCMWidget.cxx */, + B3E6BD572894B2FA00CF98C7 /* CartDebugWidget.hxx */, + B3E6BD582894B2FA00CF98C7 /* CartARWidget.cxx */, + B3E6BD592894B2FA00CF98C7 /* KeyboardWidget.hxx */, + B3E6BD5A2894B2FA00CF98C7 /* CartCTYWidget.cxx */, + B3E6BD5B2894B2FA00CF98C7 /* CartE7Widget.hxx */, + B3E6BD5C2894B2FA00CF98C7 /* CartCDFInfoWidget.hxx */, + B3E6BD5D2894B2FA00CF98C7 /* ControllerWidget.hxx */, + B3E6BD5E2894B2FA00CF98C7 /* Cart0FA0Widget.cxx */, + B3E6BD5F2894B2FA00CF98C7 /* TiaWidget.hxx */, + B3E6BD602894B2FA00CF98C7 /* JoystickWidget.hxx */, + B3E6BD612894B2FA00CF98C7 /* DelayQueueWidget.hxx */, + B3E6BD622894B2FA00CF98C7 /* RomWidget.cxx */, + B3E6BD632894B2FA00CF98C7 /* RomListWidget.hxx */, + B3E6BD642894B2FA00CF98C7 /* CartF6SCWidget.hxx */, + B3E6BD652894B2FA00CF98C7 /* TiaInfoWidget.cxx */, + B3E6BD662894B2FA00CF98C7 /* Joy2BPlusWidget.hxx */, + B3E6BD672894B2FA00CF98C7 /* CartF4SCWidget.cxx */, + B3E6BD682894B2FA00CF98C7 /* CartFCWidget.hxx */, + B3E6BD692894B2FA00CF98C7 /* DataGridOpsWidget.cxx */, + B3E6BD6A2894B2FA00CF98C7 /* DebuggerDialog.cxx */, + B3E6BD6B2894B2FA00CF98C7 /* ToggleWidget.cxx */, + B3E6BD6C2894B2FA00CF98C7 /* CartEFWidget.hxx */, + B3E6BD6D2894B2FA00CF98C7 /* CartEnhancedWidget.cxx */, + B3E6BD6E2894B2FA00CF98C7 /* CartBFWidget.hxx */, + B3E6BD6F2894B2FA00CF98C7 /* CartBUSWidget.cxx */, + B3E6BD702894B2FA00CF98C7 /* CartRamWidget.cxx */, + B3E6BD712894B2FA00CF98C7 /* TogglePixelWidget.hxx */, + B3E6BD722894B2FA00CF98C7 /* CartF6Widget.cxx */, + B3E6BD732894B2FA00CF98C7 /* SaveKeyWidget.hxx */, + B3E6BD742894B2FA00CF98C7 /* DataGridWidget.hxx */, + B3E6BD752894B2FA00CF98C7 /* CartE0Widget.hxx */, + B3E6BD762894B2FA00CF98C7 /* RiotWidget.cxx */, + B3E6BD772894B2FA00CF98C7 /* AtariMouseWidget.cxx */, + B3E6BD782894B2FA00CF98C7 /* Cart4KSCWidget.cxx */, + B3E6BD792894B2FA00CF98C7 /* CartDPCPlusWidget.hxx */, + B3E6BD7A2894B2FA00CF98C7 /* CartX07Widget.cxx */, + B3E6BD7B2894B2FA00CF98C7 /* CartF8Widget.hxx */, + B3E6BD7C2894B2FA00CF98C7 /* DataGridRamWidget.hxx */, + B3E6BD7D2894B2FA00CF98C7 /* CartFA2Widget.cxx */, + B3E6BD7E2894B2FA00CF98C7 /* CartDFWidget.cxx */, + B3E6BD7F2894B2FA00CF98C7 /* CartEFSCWidget.hxx */, + B3E6BD802894B2FA00CF98C7 /* TrakBallWidget.cxx */, + B3E6BD812894B2FA00CF98C7 /* CartBFSCWidget.hxx */, + B3E6BD822894B2FA00CF98C7 /* TiaOutputWidget.cxx */, + B3E6BD832894B2FA00CF98C7 /* Cart3EPlusWidget.hxx */, + B3E6BD842894B2FA00CF98C7 /* RomListSettings.hxx */, + B3E6BD852894B2FA00CF98C7 /* CartF0Widget.cxx */, + B3E6BD862894B2FA00CF98C7 /* Cart0840Widget.hxx */, + B3E6BD872894B2FA00CF98C7 /* CartCDFWidget.hxx */, + B3E6BD882894B2FA00CF98C7 /* PaddleWidget.hxx */, + B3E6BD892894B2FA00CF98C7 /* CartUAWidget.cxx */, + B3E6BD8A2894B2FA00CF98C7 /* RiotRamWidget.cxx */, + B3E6BD8B2894B2FA00CF98C7 /* ToggleBitWidget.cxx */, + B3E6BD8C2894B2FA00CF98C7 /* AtariVoxWidget.hxx */, + B3E6BD8D2894B2FA00CF98C7 /* Cart2KWidget.cxx */, + B3E6BD8E2894B2FA00CF98C7 /* DrivingWidget.hxx */, + B3E6BD8F2894B2FA00CF98C7 /* CartARMWidget.cxx */, + B3E6BD902894B2FA00CF98C7 /* CartSBWidget.cxx */, + B3E6BD912894B2FA00CF98C7 /* CpuWidget.cxx */, + B3E6BD922894B2FA00CF98C7 /* CartDFSCWidget.hxx */, + B3E6BD932894B2FA00CF98C7 /* Cart4KWidget.hxx */, + B3E6BD942894B2FA00CF98C7 /* Cart4A50Widget.cxx */, + B3E6BD952894B2FA00CF98C7 /* CartMDMWidget.cxx */, + B3E6BD962894B2FA00CF98C7 /* FlashWidget.cxx */, + B3E6BD972894B2FA00CF98C7 /* AudioWidget.hxx */, + B3E6BD982894B2FA00CF98C7 /* CartFAWidget.cxx */, + ); + path = gui; + sourceTree = ""; + }; + B3E6BDBC2894B2FA00CF98C7 /* emucore */ = { + isa = PBXGroup; + children = ( + B3E6BE492894B2FB00CF98C7 /* AtariVox.cxx */, + B3E6BE242894B2FB00CF98C7 /* Bankswitch.cxx */, + B3E6BE3D2894B2FB00CF98C7 /* Booster.cxx */, + B3E6BDC72894B2FA00CF98C7 /* Cart.cxx */, + B3E6BE362894B2FB00CF98C7 /* Cart0FA0.cxx */, + B3E6BE8B2894B2FB00CF98C7 /* Cart2K.cxx */, + B3E6BDC32894B2FA00CF98C7 /* Cart3E.cxx */, + B3E6BE132894B2FB00CF98C7 /* Cart3EPlus.cxx */, + B3E6BE4C2894B2FB00CF98C7 /* Cart3EX.cxx */, + B3E6BDF72894B2FB00CF98C7 /* Cart3F.cxx */, + B3E6BE532894B2FB00CF98C7 /* Cart4A50.cxx */, + B3E6BE4D2894B2FB00CF98C7 /* Cart4K.cxx */, + B3E6BEB02894B2FC00CF98C7 /* Cart4KSC.cxx */, + B3E6BE952894B2FB00CF98C7 /* Cart0840.cxx */, + B3E6BE692894B2FB00CF98C7 /* CartAR.cxx */, + B3E6BEA72894B2FC00CF98C7 /* CartARM.cxx */, + B3E6BE2A2894B2FB00CF98C7 /* CartBF.cxx */, + B3E6BE072894B2FB00CF98C7 /* CartBFSC.cxx */, + B3E6BDF42894B2FB00CF98C7 /* CartBUS.cxx */, + B3E6BE842894B2FB00CF98C7 /* CartCDF.cxx */, + B3E6BE6B2894B2FB00CF98C7 /* CartCM.cxx */, + B3E6BE2F2894B2FB00CF98C7 /* CartCreator.cxx */, + B3E6BE632894B2FB00CF98C7 /* CartCTY.cxx */, + B3E6BE202894B2FB00CF98C7 /* CartCV.cxx */, + B3E6BE0C2894B2FB00CF98C7 /* CartDetector.cxx */, + B3E6BDC12894B2FA00CF98C7 /* CartDF.cxx */, + B3E6BE432894B2FB00CF98C7 /* CartDFSC.cxx */, + B3E6BE6C2894B2FB00CF98C7 /* CartDPC.cxx */, + B3E6BE212894B2FB00CF98C7 /* CartDPCPlus.cxx */, + B3E6BE182894B2FB00CF98C7 /* CartE0.cxx */, + B3E6BDF82894B2FB00CF98C7 /* CartE7.cxx */, + B3E6BE152894B2FB00CF98C7 /* CartEF.cxx */, + B3E6BE9F2894B2FC00CF98C7 /* CartEFSC.cxx */, + B3E6BE942894B2FB00CF98C7 /* CartEnhanced.cxx */, + B3E6BE832894B2FB00CF98C7 /* CartF0.cxx */, + B3E6BEA82894B2FC00CF98C7 /* CartF4.cxx */, + B3E6BE9E2894B2FC00CF98C7 /* CartF4SC.cxx */, + B3E6BEA12894B2FC00CF98C7 /* CartF6.cxx */, + B3E6BEAF2894B2FC00CF98C7 /* CartF6SC.cxx */, + B3E6BDBE2894B2FA00CF98C7 /* CartF8.cxx */, + B3E6BDFB2894B2FB00CF98C7 /* CartF8SC.cxx */, + B3E6BE9D2894B2FC00CF98C7 /* CartFA.cxx */, + B3E6BDF92894B2FB00CF98C7 /* CartFA2.cxx */, + B3E6BEAB2894B2FC00CF98C7 /* CartFC.cxx */, + B3E6BE8E2894B2FB00CF98C7 /* CartFE.cxx */, + B3E6BEA62894B2FC00CF98C7 /* CartMDM.cxx */, + B3E6BE3F2894B2FB00CF98C7 /* CartMVC.cxx */, + B3E6BEAC2894B2FC00CF98C7 /* CartSB.cxx */, + B3E6BE8C2894B2FB00CF98C7 /* CartTVBoy.cxx */, + B3E6BE6E2894B2FB00CF98C7 /* CartUA.cxx */, + B3E6BE1F2894B2FB00CF98C7 /* CartWD.cxx */, + B3E6BDC42894B2FA00CF98C7 /* CartX07.cxx */, + B3E6BE262894B2FB00CF98C7 /* CompuMate.cxx */, + B3E6BE712894B2FB00CF98C7 /* Console.cxx */, + B3E6BE342894B2FB00CF98C7 /* Control.cxx */, + B3E6BE312894B2FB00CF98C7 /* ControllerDetector.cxx */, + B3E6BE852894B2FB00CF98C7 /* DispatchResult.cxx */, + B3E6BE802894B2FB00CF98C7 /* Driving.cxx */, + B3E6BDF52894B2FB00CF98C7 /* EmulationTiming.cxx */, + B3E6BE742894B2FB00CF98C7 /* EmulationWorker.cxx */, + B3E6BDBF2894B2FA00CF98C7 /* EventHandler.cxx */, + B3E6BDC82894B2FA00CF98C7 /* FBSurface.cxx */, + B3E6BE622894B2FB00CF98C7 /* FrameBuffer.cxx */, + B3E6BE1B2894B2FB00CF98C7 /* FSNode.cxx */, + B3E6BEA02894B2FC00CF98C7 /* Genesis.cxx */, + B3E6BEAA2894B2FC00CF98C7 /* GlobalKeyHandler.cxx */, + B3E6BE5B2894B2FB00CF98C7 /* Joy2BPlus.cxx */, + B3E6BDFE2894B2FB00CF98C7 /* Joystick.cxx */, + B3E6BE002894B2FB00CF98C7 /* Keyboard.cxx */, + B3E6BE572894B2FB00CF98C7 /* KidVid.cxx */, + B3E6BE372894B2FB00CF98C7 /* Lightgun.cxx */, + B3E6BE302894B2FB00CF98C7 /* M6502.cxx */, + B3E6BE512894B2FB00CF98C7 /* M6532.cxx */, + B3E6BEA52894B2FC00CF98C7 /* MD5.cxx */, + B3E6BE562894B2FB00CF98C7 /* MindLink.cxx */, + B3E6BE1D2894B2FB00CF98C7 /* MT24LC256.cxx */, + B3E6BE422894B2FB00CF98C7 /* OSystem.cxx */, + B3E6BDC22894B2FA00CF98C7 /* OSystemStandalone.cxx */, + B3E6BE232894B2FB00CF98C7 /* Paddles.cxx */, + B3E6BE6F2894B2FB00CF98C7 /* PlusROM.cxx */, + B3E6BE1A2894B2FB00CF98C7 /* PointingDevice.cxx */, + B3E6BE732894B2FB00CF98C7 /* ProfilingRunner.cxx */, + B3E6BE912894B2FB00CF98C7 /* Props.cxx */, + B3E6BE752894B2FB00CF98C7 /* PropsSet.cxx */, + B3E6BE7E2894B2FB00CF98C7 /* QuadTari.cxx */, + B3E6BE062894B2FB00CF98C7 /* SaveKey.cxx */, + B3E6BE012894B2FB00CF98C7 /* Serializer.cxx */, + B3E6BDCA2894B2FA00CF98C7 /* Settings.cxx */, + B3E6BE282894B2FB00CF98C7 /* Switches.cxx */, + B3E6BE2E2894B2FB00CF98C7 /* System.cxx */, + B3E6BE5D2894B2FB00CF98C7 /* Thumbulator.cxx */, + B3E6BE0B2894B2FB00CF98C7 /* TIASurface.cxx */, + B3E6BE972894B2FB00CF98C7 /* AmigaMouse.hxx */, + B3E6BE0A2894B2FB00CF98C7 /* AtariMouse.hxx */, + B3E6BE1C2894B2FB00CF98C7 /* AtariVox.hxx */, + B3E6BE502894B2FB00CF98C7 /* Bankswitch.hxx */, + B3E6BE6D2894B2FB00CF98C7 /* Booster.hxx */, + B3E6BE822894B2FB00CF98C7 /* Cart.hxx */, + B3E6BE662894B2FB00CF98C7 /* Cart0FA0.hxx */, + B3E6BDF62894B2FB00CF98C7 /* Cart2K.hxx */, + B3E6BE7A2894B2FB00CF98C7 /* Cart3E.hxx */, + B3E6BEAE2894B2FC00CF98C7 /* Cart3EPlus.hxx */, + B3E6BE222894B2FB00CF98C7 /* Cart3EX.hxx */, + B3E6BE8A2894B2FB00CF98C7 /* Cart3F.hxx */, + B3E6BE252894B2FB00CF98C7 /* Cart4A50.hxx */, + B3E6BE1E2894B2FB00CF98C7 /* Cart4K.hxx */, + B3E6BE172894B2FB00CF98C7 /* Cart4KSC.hxx */, + B3E6BE022894B2FB00CF98C7 /* Cart0840.hxx */, + B3E6BE382894B2FB00CF98C7 /* CartAR.hxx */, + B3E6BE112894B2FB00CF98C7 /* CartARM.hxx */, + B3E6BE542894B2FB00CF98C7 /* CartBF.hxx */, + B3E6BE9B2894B2FB00CF98C7 /* CartBFSC.hxx */, + B3E6BE882894B2FB00CF98C7 /* CartBUS.hxx */, + B3E6BDC62894B2FA00CF98C7 /* CartCDF.hxx */, + B3E6BE392894B2FB00CF98C7 /* CartCM.hxx */, + B3E6BE602894B2FB00CF98C7 /* CartCreator.hxx */, + B3E6BE352894B2FB00CF98C7 /* CartCTY.hxx */, + B3E6BE4A2894B2FB00CF98C7 /* CartCV.hxx */, + B3E6BEA32894B2FC00CF98C7 /* CartDetector.hxx */, + B3E6BE7D2894B2FB00CF98C7 /* CartDF.hxx */, + B3E6BE762894B2FB00CF98C7 /* CartDFSC.hxx */, + B3E6BE402894B2FB00CF98C7 /* CartDPC.hxx */, + B3E6BE4B2894B2FB00CF98C7 /* CartDPCPlus.hxx */, + B3E6BEB12894B2FC00CF98C7 /* CartE0.hxx */, + B3E6BE892894B2FB00CF98C7 /* CartE7.hxx */, + B3E6BEB22894B2FC00CF98C7 /* CartEF.hxx */, + B3E6BE052894B2FB00CF98C7 /* CartEFSC.hxx */, + B3E6BDFD2894B2FB00CF98C7 /* CartEnhanced.hxx */, + B3E6BDC92894B2FA00CF98C7 /* CartF0.hxx */, + B3E6BE0F2894B2FB00CF98C7 /* CartF4.hxx */, + B3E6BE042894B2FB00CF98C7 /* CartF4SC.hxx */, + B3E6BE092894B2FB00CF98C7 /* CartF6.hxx */, + B3E6BE162894B2FB00CF98C7 /* CartF6SC.hxx */, + B3E6BE7C2894B2FB00CF98C7 /* CartF8.hxx */, + B3E6BE8D2894B2FB00CF98C7 /* CartF8SC.hxx */, + B3E6BE032894B2FB00CF98C7 /* CartFA.hxx */, + B3E6BE8F2894B2FB00CF98C7 /* CartFA2.hxx */, + B3E6BE192894B2FB00CF98C7 /* CartFC.hxx */, + B3E6BDFC2894B2FB00CF98C7 /* CartFE.hxx */, + B3E6BE122894B2FB00CF98C7 /* CartMDM.hxx */, + B3E6BE702894B2FB00CF98C7 /* CartMVC.hxx */, + B3E6BE142894B2FB00CF98C7 /* CartSB.hxx */, + B3E6BDFA2894B2FB00CF98C7 /* CartTVBoy.hxx */, + B3E6BE3E2894B2FB00CF98C7 /* CartUA.hxx */, + B3E6BE4E2894B2FB00CF98C7 /* CartWD.hxx */, + B3E6BE7F2894B2FB00CF98C7 /* CartX07.hxx */, + B3E6BE522894B2FB00CF98C7 /* CompuMate.hxx */, + B3E6BE442894B2FB00CF98C7 /* Console.hxx */, + B3E6BE612894B2FB00CF98C7 /* ConsoleIO.hxx */, + B3E6BE722894B2FB00CF98C7 /* ConsoleTiming.hxx */, + B3E6BE652894B2FB00CF98C7 /* Control.hxx */, + B3E6BE5C2894B2FB00CF98C7 /* ControllerDetector.hxx */, + B3E6BE932894B2FB00CF98C7 /* ControlLowLevel.hxx */, + B3E6BEA92894B2FC00CF98C7 /* DefProps.hxx */, + B3E6BE2D2894B2FB00CF98C7 /* Device.hxx */, + B3E6BDCB2894B2FA00CF98C7 /* DispatchResult.hxx */, + B3E6BDBD2894B2FA00CF98C7 /* Driving.hxx */, + B3E6BE872894B2FB00CF98C7 /* EmulationTiming.hxx */, + B3E6BE472894B2FB00CF98C7 /* EmulationWorker.hxx */, + B3E6BEA42894B2FC00CF98C7 /* Event.hxx */, + B3E6BE7B2894B2FB00CF98C7 /* EventHandler.hxx */, + B3E6BE642894B2FB00CF98C7 /* EventHandlerConstants.hxx */, + B3E6BDC02894B2FA00CF98C7 /* FBBackend.hxx */, + B3E6BE812894B2FB00CF98C7 /* FBSurface.hxx */, + B3E6BE332894B2FB00CF98C7 /* FrameBuffer.hxx */, + B3E6BE672894B2FB00CF98C7 /* FrameBufferConstants.hxx */, + B3E6BEB42894B2FC00CF98C7 /* FSNode.hxx */, + B3E6BE082894B2FB00CF98C7 /* Genesis.hxx */, + B3E6BE102894B2FB00CF98C7 /* GlobalKeyHandler.hxx */, + B3E6BE2C2894B2FB00CF98C7 /* Joy2BPlus.hxx */, + B3E6BE902894B2FB00CF98C7 /* Joystick.hxx */, + B3E6BE922894B2FB00CF98C7 /* Keyboard.hxx */, + B3E6BE292894B2FB00CF98C7 /* KidVid.hxx */, + B3E6BE6A2894B2FB00CF98C7 /* Lightgun.hxx */, + B3E6BE5F2894B2FB00CF98C7 /* M6502.hxx */, + B3E6BE272894B2FB00CF98C7 /* M6532.hxx */, + B3E6BE0E2894B2FB00CF98C7 /* MD5.hxx */, + B3E6BE2B2894B2FB00CF98C7 /* MindLink.hxx */, + B3E6BE482894B2FB00CF98C7 /* MT24LC256.hxx */, + B3E6BE0D2894B2FB00CF98C7 /* NullDev.hxx */, + B3E6BE772894B2FB00CF98C7 /* OSystem.hxx */, + B3E6BE792894B2FB00CF98C7 /* OSystemStandalone.hxx */, + B3E6BE4F2894B2FB00CF98C7 /* Paddles.hxx */, + B3E6BE3C2894B2FB00CF98C7 /* PlusROM.hxx */, + B3E6BEB32894B2FC00CF98C7 /* PointingDevice.hxx */, + B3E6BE462894B2FB00CF98C7 /* ProfilingRunner.hxx */, + B3E6BDFF2894B2FB00CF98C7 /* Props.hxx */, + B3E6BE452894B2FB00CF98C7 /* PropsSet.hxx */, + B3E6BDC52894B2FA00CF98C7 /* QuadTari.hxx */, + B3E6BE3B2894B2FB00CF98C7 /* Random.hxx */, + B3E6BE9C2894B2FB00CF98C7 /* SaveKey.hxx */, + B3E6BE5E2894B2FB00CF98C7 /* Serializable.hxx */, + B3E6BE962894B2FB00CF98C7 /* Serializer.hxx */, + B3E6BE3A2894B2FB00CF98C7 /* SerialPort.hxx */, + B3E6BE862894B2FB00CF98C7 /* Settings.hxx */, + B3E6BE552894B2FB00CF98C7 /* Sound.hxx */, + B3E6BE582894B2FB00CF98C7 /* Switches.hxx */, + B3E6BE592894B2FB00CF98C7 /* System.hxx */, + B3E6BE322894B2FB00CF98C7 /* Thumbulator.hxx */, + B3E6BEA22894B2FC00CF98C7 /* TIASurface.hxx */, + B3E6BE5A2894B2FB00CF98C7 /* TrakBall.hxx */, + B3E6BE682894B2FB00CF98C7 /* M6502.ins */, + B3E6BEAD2894B2FC00CF98C7 /* M6502.m4 */, + B3E6BE412894B2FB00CF98C7 /* module.mk */, + B3E6BE782894B2FB00CF98C7 /* stella.pro */, + B3E6BE982894B2FB00CF98C7 /* exception */, + B3E6BDCC2894B2FA00CF98C7 /* tia */, + ); + path = emucore; + sourceTree = ""; + }; + B3E6BDCC2894B2FA00CF98C7 /* tia */ = { + isa = PBXGroup; + children = ( + B3E6BDDF2894B2FA00CF98C7 /* AnalogReadout.cxx */, + B3E6BDDD2894B2FA00CF98C7 /* Audio.cxx */, + B3E6BDD42894B2FA00CF98C7 /* AudioChannel.cxx */, + B3E6BDD62894B2FA00CF98C7 /* Background.cxx */, + B3E6BDCD2894B2FA00CF98C7 /* Ball.cxx */, + B3E6BDE52894B2FB00CF98C7 /* DrawCounterDecodes.cxx */, + B3E6BDDB2894B2FA00CF98C7 /* LatchedInput.cxx */, + B3E6BDCF2894B2FA00CF98C7 /* Missile.cxx */, + B3E6BDE62894B2FB00CF98C7 /* Player.cxx */, + B3E6BDE22894B2FA00CF98C7 /* Playfield.cxx */, + B3E6BDE72894B2FB00CF98C7 /* TIA.cxx */, + B3E6BDD92894B2FA00CF98C7 /* AnalogReadout.hxx */, + B3E6BDD82894B2FA00CF98C7 /* Audio.hxx */, + B3E6BDF22894B2FB00CF98C7 /* AudioChannel.hxx */, + B3E6BDDE2894B2FA00CF98C7 /* Background.hxx */, + B3E6BDE32894B2FB00CF98C7 /* Ball.hxx */, + B3E6BDD22894B2FA00CF98C7 /* DelayQueue.hxx */, + B3E6BDD72894B2FA00CF98C7 /* DelayQueueIterator.hxx */, + B3E6BDE02894B2FA00CF98C7 /* DelayQueueIteratorImpl.hxx */, + B3E6BDD02894B2FA00CF98C7 /* DelayQueueMember.hxx */, + B3E6BDCE2894B2FA00CF98C7 /* DrawCounterDecodes.hxx */, + B3E6BDD52894B2FA00CF98C7 /* FrameLayout.hxx */, + B3E6BDE12894B2FA00CF98C7 /* LatchedInput.hxx */, + B3E6BDE42894B2FB00CF98C7 /* Missile.hxx */, + B3E6BDD12894B2FA00CF98C7 /* Player.hxx */, + B3E6BDDA2894B2FA00CF98C7 /* Playfield.hxx */, + B3E6BDD32894B2FA00CF98C7 /* TIA.hxx */, + B3E6BDF32894B2FB00CF98C7 /* TIAConstants.hxx */, + B3E6BDDC2894B2FA00CF98C7 /* module.mk */, + B3E6BDE82894B2FB00CF98C7 /* frame-manager */, + ); + path = tia; + sourceTree = ""; + }; + B3E6BDE82894B2FB00CF98C7 /* frame-manager */ = { + isa = PBXGroup; + children = ( + B3E6BDEE2894B2FB00CF98C7 /* AbstractFrameManager.cxx */, + B3E6BDEF2894B2FB00CF98C7 /* FrameLayoutDetector.cxx */, + B3E6BDEA2894B2FB00CF98C7 /* FrameManager.cxx */, + B3E6BDF02894B2FB00CF98C7 /* JitterEmulation.cxx */, + B3E6BDEB2894B2FB00CF98C7 /* AbstractFrameManager.hxx */, + B3E6BDEC2894B2FB00CF98C7 /* FrameLayoutDetector.hxx */, + B3E6BDF12894B2FB00CF98C7 /* FrameManager.hxx */, + B3E6BDE92894B2FB00CF98C7 /* JitterEmulation.hxx */, + B3E6BDED2894B2FB00CF98C7 /* module.mk */, + ); + path = "frame-manager"; + sourceTree = ""; + }; + B3E6BE982894B2FB00CF98C7 /* exception */ = { + isa = PBXGroup; + children = ( + B3E6BE992894B2FB00CF98C7 /* FatalEmulationError.hxx */, + B3E6BE9A2894B2FB00CF98C7 /* EmulationWarning.hxx */, + ); + path = exception; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B38FB4BD1C839BE500CD73BE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B38FB4C31C839BE500CD73BE /* PVStella.h in Headers */, + B31B11592894A02D0044F0E6 /* PVStellaGameCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B38FB4BF1C839BE500CD73BE /* PVStella */ = { + isa = PBXNativeTarget; + buildConfigurationList = B38FB4C51C839BE500CD73BE /* Build configuration list for PBXNativeTarget "PVStella" */; + buildPhases = ( + B38FB4BD1C839BE500CD73BE /* Headers */, + B38FB4BB1C839BE500CD73BE /* Sources */, + B38FB4BC1C839BE500CD73BE /* Frameworks */, + B38FB4BE1C839BE500CD73BE /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B3E6BF2B2894B3F800CF98C7 /* PBXTargetDependency */, + ); + name = PVStella; + productName = Stella; + productReference = B38FB4C01C839BE500CD73BE /* PVStella.framework */; + productType = "com.apple.product-type.framework"; + }; + B3D3AE8F2894B23500EEBA1E /* stella */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3D3AED02894B23500EEBA1E /* Build configuration list for PBXNativeTarget "stella" */; + buildPhases = ( + B3D3AE902894B23500EEBA1E /* Sources */, + B3D3AECE2894B23500EEBA1E /* Frameworks */, + B3D3AECF2894B23500EEBA1E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = stella; + productName = stella; + productReference = B3D3AED42894B23500EEBA1E /* libstella.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B38FB4BF1C839BE500CD73BE = { + CreatedOnToolsVersion = 7.2.1; + }; + }; }; - name = Release; + buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "PVStella" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 1; + knownRegions = ( + en, + Base, + ); + mainGroup = 089C166AFE841209C02AAC07 /* VisualBoyAdvance */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B312F97E292B0F1E00286CFE /* Products */; + ProjectRef = B312F97D292B0F1E00286CFE /* stella.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + B38FB4BF1C839BE500CD73BE /* PVStella */, + B3D3AE8F2894B23500EEBA1E /* stella */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + B312F9C4292B0F1F00286CFE /* Stella.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Stella.app; + remoteRef = B312F9C3292B0F1F00286CFE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + B38FB4BE1C839BE500CD73BE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3547B662058591E00CFF7D8 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B38FB4BB1C839BE500CD73BE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B31B115C2894A02D0044F0E6 /* PVStellaGameCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3D3AE902894B23500EEBA1E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3E6BF562894BB3200CF98C7 /* Missile.cxx in Sources */, + B3E6BF372894BA6000CF98C7 /* PKeyboardHandler.cxx in Sources */, + B3E6BF422894BA6000CF98C7 /* TimerManager.cxx in Sources */, + B3E6BF1D2894B3EB00CF98C7 /* System.cxx in Sources */, + B3E6BF3C2894BA6000CF98C7 /* DevSettingsHandler.cxx in Sources */, + B3E6BF282894B3EB00CF98C7 /* GlobalKeyHandler.cxx in Sources */, + B3E6BEBA2894B37000CF98C7 /* Bankswitch.cxx in Sources */, + B3E6BEC52894B37000CF98C7 /* CartF4SC.cxx in Sources */, + B3E6BF552894BB3200CF98C7 /* Player.cxx in Sources */, + B3E6BED32894B37100CF98C7 /* CartSB.cxx in Sources */, + B3E6BED02894B37000CF98C7 /* CartE7.cxx in Sources */, + B3E6BEBB2894B37000CF98C7 /* Cart3EPlus.cxx in Sources */, + B3E6BF4F2894BB2200CF98C7 /* Audio.cxx in Sources */, + B3E6BEED2894B3C100CF98C7 /* Control.cxx in Sources */, + B3E6BF432894BA6000CF98C7 /* AudioSettings.cxx in Sources */, + B3E6BF1C2894B3EB00CF98C7 /* KidVid.cxx in Sources */, + B3E6BF172894B3EB00CF98C7 /* Props.cxx in Sources */, + B3E6BF132894B3EA00CF98C7 /* MD5.cxx in Sources */, + B3E6BF212894B3EB00CF98C7 /* MindLink.cxx in Sources */, + B3E6BED82894B37100CF98C7 /* CartFC.cxx in Sources */, + B3E6BF692894BD5C00CF98C7 /* EmulationWorker.cxx in Sources */, + B3E6BF2E2894B5FE00CF98C7 /* BankRomCheat.cxx in Sources */, + B3E6BF462894BA6000CF98C7 /* StaggeredLogger.cxx in Sources */, + B3E6BED92894B37100CF98C7 /* CartEF.cxx in Sources */, + B3E6BEE62894B37100CF98C7 /* CartCDF.cxx in Sources */, + B3E6BF3B2894BA6000CF98C7 /* PJoystickHandler.cxx in Sources */, + B3E6BEE12894B37100CF98C7 /* CartF8SC.cxx in Sources */, + B3E6BF4C2894BA7700CF98C7 /* KeyValueRepositoryJsonFile.cxx in Sources */, + B3E6BEC12894B37000CF98C7 /* CartWD.cxx in Sources */, + B3E6BF5D2894BB6E00CF98C7 /* ZipHandler.cxx in Sources */, + B3E6BF4E2894BAE300CF98C7 /* OSystem.cxx in Sources */, + B3E6BEC02894B37000CF98C7 /* CartBFSC.cxx in Sources */, + B3E6BF152894B3EA00CF98C7 /* PropsSet.cxx in Sources */, + B3E6BECF2894B37000CF98C7 /* CartDPC.cxx in Sources */, + B3E6BF412894BA6000CF98C7 /* PhysicalJoystick.cxx in Sources */, + B3E6BF582894BB3200CF98C7 /* TIA.cxx in Sources */, + B3E6BEE22894B37100CF98C7 /* CartBUS.cxx in Sources */, + B3E6BF1F2894B3EB00CF98C7 /* Keyboard.cxx in Sources */, + B312F9C8292B104200286CFE /* StellaLIBRETRO.cxx in Sources */, + B3E6BF222894B3EB00CF98C7 /* SaveKey.cxx in Sources */, + B3E6BEDA2894B37100CF98C7 /* Cart3EX.cxx in Sources */, + B3E6BF592894BB4000CF98C7 /* FrameManager.cxx in Sources */, + B3E6BF682894BD4700CF98C7 /* EmulationTiming.cxx in Sources */, + B3E6BEEF2894B3C600CF98C7 /* AtariVox.cxx in Sources */, + B3E6BF472894BA6000CF98C7 /* MouseControl.cxx in Sources */, + B3E6BF5E2894BBC800CF98C7 /* EventHandler.cxx in Sources */, + B3E6BEC72894B37000CF98C7 /* CartX07.cxx in Sources */, + B3E6BEE32894B37100CF98C7 /* CartARM.cxx in Sources */, + B3E6BF382894BA6000CF98C7 /* Logger.cxx in Sources */, + B3E6BF402894BA6000CF98C7 /* PhosphorHandler.cxx in Sources */, + B3E6BF182894B3EB00CF98C7 /* PointingDevice.cxx in Sources */, + B3E6BF662894BD0700CF98C7 /* FBSurface.cxx in Sources */, + B3E6BEDC2894B37100CF98C7 /* CartBF.cxx in Sources */, + B3E6BF452894BA6000CF98C7 /* KeyMap.cxx in Sources */, + B3E6BF232894B3EB00CF98C7 /* Paddles.cxx in Sources */, + B3E6BEB92894B37000CF98C7 /* CartFA.cxx in Sources */, + B3E6BF392894BA6000CF98C7 /* RewindManager.cxx in Sources */, + B312F9C6292B0F2900286CFE /* libretro.cxx in Sources */, + B3E6BF5C2894BB4000CF98C7 /* JitterEmulation.cxx in Sources */, + B3E6BED12894B37000CF98C7 /* CartDFSC.cxx in Sources */, + B3E6BECB2894B37000CF98C7 /* CartUA.cxx in Sources */, + B3E6BF522894BB2200CF98C7 /* AudioChannel.cxx in Sources */, + B3E6BEDB2894B37100CF98C7 /* Cart.cxx in Sources */, + B3E6BF162894B3EA00CF98C7 /* TIASurface.cxx in Sources */, + B3E6BEC62894B37000CF98C7 /* Cart4KSC.cxx in Sources */, + B3E6BECE2894B37000CF98C7 /* CartF6SC.cxx in Sources */, + B3E6BEEE2894B3C100CF98C7 /* Console.cxx in Sources */, + B3E6BF442894BA6000CF98C7 /* JoyMap.cxx in Sources */, + B3E6BF6E2894BE1B00CF98C7 /* ControllerDetector.cxx in Sources */, + B3E6BF0E2894B3EA00CF98C7 /* M6532.cxx in Sources */, + B3E6BF0F2894B3EA00CF98C7 /* Serializer.cxx in Sources */, + B3E6BEC22894B37000CF98C7 /* CartEFSC.cxx in Sources */, + B3E6BF112894B3EA00CF98C7 /* Joystick.cxx in Sources */, + B3E6BF4A2894BA7700CF98C7 /* CompositeKeyValueRepository.cxx in Sources */, + B3E6BF6B2894BDB400CF98C7 /* Driving.cxx in Sources */, + B3E6BF6D2894BDF100CF98C7 /* CompuMate.cxx in Sources */, + B312F9C5292B0F2900286CFE /* FSNodeLIBRETRO.cxx in Sources */, + B3E6BF542894BB3200CF98C7 /* LatchedInput.cxx in Sources */, + B3E6BF5A2894BB4000CF98C7 /* AbstractFrameManager.cxx in Sources */, + B3E6BF4D2894BA7700CF98C7 /* KeyValueRepositoryPropertyFile.cxx in Sources */, + B3E6BF352894BA6000CF98C7 /* StateManager.cxx in Sources */, + B3E6BED72894B37100CF98C7 /* CartFA2.cxx in Sources */, + B3E6BF572894BB3200CF98C7 /* Playfield.cxx in Sources */, + B3E6BF2C2894B5FE00CF98C7 /* CheatManager.cxx in Sources */, + B3E6BF2F2894B5FE00CF98C7 /* CheetahCheat.cxx in Sources */, + B3E6BECA2894B37000CF98C7 /* CartMVC.cxx in Sources */, + B3E6BF6A2894BD8C00CF98C7 /* DispatchResult.cxx in Sources */, + B3E6BF102894B3EA00CF98C7 /* Genesis.cxx in Sources */, + B3E6BF122894B3EA00CF98C7 /* Settings.cxx in Sources */, + B3E6BEC42894B37000CF98C7 /* CartF8.cxx in Sources */, + B3E6BF532894BB2200CF98C7 /* Background.cxx in Sources */, + B3E6BEE92894B37100CF98C7 /* CartF0.cxx in Sources */, + B3E6BEE52894B37100CF98C7 /* Cart3F.cxx in Sources */, + B3E6BF3D2894BA6000CF98C7 /* PaletteHandler.cxx in Sources */, + B3E6BEB82894B37000CF98C7 /* CartDetector.cxx in Sources */, + B3E6BF202894B3EB00CF98C7 /* PlusROM.cxx in Sources */, + B3E6BED62894B37100CF98C7 /* Cart0FA0.cxx in Sources */, + B3E6BEBD2894B37000CF98C7 /* CartTVBoy.cxx in Sources */, + B3E6BF3A2894BA6000CF98C7 /* AudioQueue.cxx in Sources */, + B3E6BF312894B96600CF98C7 /* QuadTari.cxx in Sources */, + B3E6BF362894BA6000CF98C7 /* VideoModeHandler.cxx in Sources */, + B3E6BF342894BA1C00CF98C7 /* AtariNTSC.cxx in Sources */, + B3E6BEC82894B37000CF98C7 /* Cart4A50.cxx in Sources */, + B3E6BF6C2894BDD400CF98C7 /* AnalogReadout.cxx in Sources */, + B3E6BF512894BB2200CF98C7 /* DrawCounterDecodes.cxx in Sources */, + B3E6BEEA2894B37100CF98C7 /* CartDF.cxx in Sources */, + B3E6BF332894BA1C00CF98C7 /* NTSCFilter.cxx in Sources */, + B3E6BF192894B3EB00CF98C7 /* M6502.cxx in Sources */, + B3E6BEDF2894B37100CF98C7 /* Cart0840.cxx in Sources */, + B3E6BF322894B98200CF98C7 /* FSNode.cxx in Sources */, + B3E6BF0D2894B3EA00CF98C7 /* Lightgun.cxx in Sources */, + B3E6BF2D2894B5FE00CF98C7 /* RamCheat.cxx in Sources */, + B3E6BEE02894B37100CF98C7 /* CartAR.cxx in Sources */, + B3E6BF272894B3EB00CF98C7 /* Joy2BPlus.cxx in Sources */, + B3E6BF3F2894BA6000CF98C7 /* FpsMeter.cxx in Sources */, + B3E6BF492894BA7700CF98C7 /* KeyValueRepositoryConfigfile.cxx in Sources */, + B3E6BF1B2894B3EB00CF98C7 /* Switches.cxx in Sources */, + B3E6BECD2894B37000CF98C7 /* CartF6.cxx in Sources */, + B3E6BECC2894B37000CF98C7 /* CartFE.cxx in Sources */, + B3E6BF5B2894BB4000CF98C7 /* FrameLayoutDetector.cxx in Sources */, + B3E6BF4B2894BA7700CF98C7 /* CompositeKVRJsonAdapter.cxx in Sources */, + B3E6BF482894BA6000CF98C7 /* Base.cxx in Sources */, + B3E6BF672894BD2C00CF98C7 /* FrameBuffer.cxx in Sources */, + B3E6BF262894B3EB00CF98C7 /* ProfilingRunner.cxx in Sources */, + B3E6BED52894B37100CF98C7 /* Cart2K.cxx in Sources */, + B3E6BEBF2894B37000CF98C7 /* CartDPCPlus.cxx in Sources */, + B3E6BEC92894B37000CF98C7 /* Booster.cxx in Sources */, + B3E6BED22894B37000CF98C7 /* Cart3E.cxx in Sources */, + B3E6BEDD2894B37100CF98C7 /* CartEnhanced.cxx in Sources */, + B3E6BEDE2894B37100CF98C7 /* CartCM.cxx in Sources */, + B3E6BEBC2894B37000CF98C7 /* CartCTY.cxx in Sources */, + B3E6BEBE2894B37000CF98C7 /* CartE0.cxx in Sources */, + B3E6BEE42894B37100CF98C7 /* Cart4K.cxx in Sources */, + B3E6BF502894BB2200CF98C7 /* Ball.cxx in Sources */, + B3E6BEC32894B37000CF98C7 /* CartF4.cxx in Sources */, + B3E6BEE72894B37100CF98C7 /* CartCV.cxx in Sources */, + B3E6BF142894B3EA00CF98C7 /* MT24LC256.cxx in Sources */, + B3E6BED42894B37100CF98C7 /* CartCreator.cxx in Sources */, + B3E6BF242894B3EB00CF98C7 /* Thumbulator.cxx in Sources */, + B3E6BF3E2894BA6000CF98C7 /* FSNodeZIP.cxx in Sources */, + B3E6BEE82894B37100CF98C7 /* CartMDM.cxx in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B3E6BF2B2894B3F800CF98C7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3D3AE8F2894B23500EEBA1E /* stella */; + targetProxy = B3E6BF2A2894B3F800CF98C7 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B312F973292B0F1E00286CFE /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B312F974292B0F1E00286CFE /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; }; - B305EEB4276B4BDF003AE510 /* Archive */ = { +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1DEB913F08733D840010E9CD /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B31B115528949D550044F0E6 /* BuildFlags.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2021 Provenance Emu. All rights reserved."; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", + "\"$(SRCROOT)/Stella/stella/src/emucore/tia\"", + "\"$(SRCROOT)/Stella/stella/src/common\"", + "\"$(SRCROOT)/Stella/stella/src/os/libretro\"", + "\"$(SRCROOT)/Stella/stella/src/lib\"", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVStella-watchOS"; - PRODUCT_NAME = PVStella; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - TARGETED_DEVICE_FAMILY = 4; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; WATCHOS_DEPLOYMENT_TARGET = 8.3; }; - name = Archive; + name = Debug; }; - B324C52F2191A44D009F4EDC /* Archive */ = { + 1DEB914008733D840010E9CD /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B31B115528949D550044F0E6 /* BuildFlags.xcconfig */; buildSettings = { CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; CLANG_ENABLE_MODULES = YES; @@ -1396,7 +4391,6 @@ COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -1405,82 +4399,81 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/Stella/stella/src/emucore/tia\"", + "\"$(SRCROOT)/Stella/stella/src/common\"", + "\"$(SRCROOT)/Stella/stella/src/os/libretro\"", + "\"$(SRCROOT)/Stella/stella/src/lib\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + WATCHOS_DEPLOYMENT_TARGET = 8.3; }; - name = Archive; + name = Release; }; - B324C5302191A44D009F4EDC /* Archive */ = { + B324C52F2191A44D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B31B115528949D550044F0E6 /* BuildFlags.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_EXPERIMENTAL = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; + COPY_PHASE_STRIP = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = Stella/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", + "\"$(SRCROOT)/Stella/stella/src/emucore/tia\"", + "\"$(SRCROOT)/Stella/stella/src/common\"", + "\"$(SRCROOT)/Stella/stella/src/os/libretro\"", + "\"$(SRCROOT)/Stella/stella/src/lib\"", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Stella"; - PRODUCT_NAME = PVStella; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + WATCHOS_DEPLOYMENT_TARGET = 8.3; }; name = Archive; }; - B324C5312191A44D009F4EDC /* Archive */ = { + B324C5302191A44D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; @@ -1491,52 +4484,34 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = Stella/Info.plist; + INFOPLIST_FILE = PVStella/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-msse", - "-msse2", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", - ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Stella"; PRODUCT_NAME = PVStella; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1545,8 +4520,8 @@ B38FB4C61C839BE500CD73BE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; @@ -1563,7 +4538,6 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -1575,9 +4549,9 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = Stella/Info.plist; + INFOPLIST_FILE = PVStella/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1585,26 +4559,12 @@ "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", - ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Stella"; PRODUCT_NAME = PVStella; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1613,8 +4573,8 @@ B38FB4C71C839BE500CD73BE /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; @@ -1631,16 +4591,15 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = Stella/Info.plist; + INFOPLIST_FILE = PVStella/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1648,169 +4607,116 @@ "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", - ); PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Stella"; PRODUCT_NAME = PVStella; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - B3C96E031D62BE5A003F1E93 /* Debug */ = { + B3D3AED12894B23500EEBA1E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - CURRENT_PROJECT_VERSION = 1; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; + DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", + __LIB_RETRO__, "$(inherited)", ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = Stella/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-msse", - "-msse2", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Stella"; - PRODUCT_NAME = PVStella; - SDKROOT = appletvos; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B3C96E041D62BE5A003F1E93 /* Release */ = { + B3D3AED22894B23500EEBA1E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - CURRENT_PROJECT_VERSION = 1; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_PREPROCESSOR_DEFINITIONS = ( + __LIB_RETRO__, + "$(inherited)", + ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = Stella/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3D3AED32894B23500EEBA1E /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_PREPROCESSOR_DEFINITIONS = ( + __LIB_RETRO__, "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "-fno-strict-overflow", - "-ffast-math", - "-msse", - "-msse2", - "-funroll-loops", - "-fPIC", - "-DLSB_FIRST", - "-DHAVE_MKDIR", - "-DSIZEOF_DOUBLE=8", - "-DPSS_STYLE=1", - "-DMPC_FIXED_POINT", - "-DARCH_X86", - "-DWANT_STELLA_EMU", - "-DSTDC_HEADERS", - "-DHAVE_INTTYPES", - "-DKeyboard=StellaKeyboard", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.Stella"; - PRODUCT_NAME = PVStella; - SDKROOT = appletvos; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; - name = Release; + name = Archive; }; /* End XCBuildConfiguration section */ @@ -1825,17 +4731,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B305EEB5276B4BDF003AE510 /* Build configuration list for PBXNativeTarget "PVStella-watchOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B305EEB2276B4BDF003AE510 /* Debug */, - B305EEB3276B4BDF003AE510 /* Release */, - B305EEB4276B4BDF003AE510 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B38FB4C51C839BE500CD73BE /* Build configuration list for PBXNativeTarget "PVStella-iOS" */ = { + B38FB4C51C839BE500CD73BE /* Build configuration list for PBXNativeTarget "PVStella" */ = { isa = XCConfigurationList; buildConfigurations = ( B38FB4C61C839BE500CD73BE /* Debug */, @@ -1845,12 +4741,12 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C96E051D62BE5A003F1E93 /* Build configuration list for PBXNativeTarget "PVStella-tvOS" */ = { + B3D3AED02894B23500EEBA1E /* Build configuration list for PBXNativeTarget "stella" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3C96E031D62BE5A003F1E93 /* Debug */, - B3C96E041D62BE5A003F1E93 /* Release */, - B324C5312191A44D009F4EDC /* Archive */, + B3D3AED12894B23500EEBA1E /* Debug */, + B3D3AED22894B23500EEBA1E /* Release */, + B3D3AED32894B23500EEBA1E /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Cores/Stella/PVStella.xcodeproj/xcshareddata/xcschemes/PVStella.xcscheme b/Cores/Stella/PVStella.xcodeproj/xcshareddata/xcschemes/PVStella.xcscheme index bbb7232fe0..ab87ae7043 100644 --- a/Cores/Stella/PVStella.xcodeproj/xcshareddata/xcschemes/PVStella.xcscheme +++ b/Cores/Stella/PVStella.xcodeproj/xcshareddata/xcschemes/PVStella.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B38FB4BF1C839BE500CD73BE" BuildableName = "PVStella.framework" - BlueprintName = "PVStella-iOS" + BlueprintName = "PVStella" ReferencedContainer = "container:PVStella.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B38FB4BF1C839BE500CD73BE" BuildableName = "PVStella.framework" - BlueprintName = "PVStella-iOS" + BlueprintName = "PVStella" ReferencedContainer = "container:PVStella.xcodeproj"> @@ -61,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B38FB4BF1C839BE500CD73BE" BuildableName = "PVStella.framework" - BlueprintName = "PVStella-iOS" + BlueprintName = "PVStella" ReferencedContainer = "container:PVStella.xcodeproj"> diff --git a/Cores/Stella/Stella/Core.plist b/Cores/Stella/PVStella/Core.plist similarity index 100% rename from Cores/Stella/Stella/Core.plist rename to Cores/Stella/PVStella/Core.plist diff --git a/Cores/Stella/Stella/Info.plist b/Cores/Stella/PVStella/Info.plist similarity index 100% rename from Cores/Stella/Stella/Info.plist rename to Cores/Stella/PVStella/Info.plist diff --git a/Cores/Stella/Stella/PVStella.h b/Cores/Stella/PVStella/PVStella.h similarity index 93% rename from Cores/Stella/Stella/PVStella.h rename to Cores/Stella/PVStella/PVStella.h index 45664c31d8..3866dcbd28 100644 --- a/Cores/Stella/Stella/PVStella.h +++ b/Cores/Stella/PVStella/PVStella.h @@ -6,7 +6,7 @@ // Copyright © 2016 JamSoft. All rights reserved. // -#import +#import //! Project version number for Stella. FOUNDATION_EXPORT double StellaVersionNumber; diff --git a/Cores/Stella/PVStella/Stella/PVStellaGameCore.mm b/Cores/Stella/PVStella/Stella/PVStellaGameCore.mm deleted file mode 100644 index 84794b1e0a..0000000000 --- a/Cores/Stella/PVStella/Stella/PVStellaGameCore.mm +++ /dev/null @@ -1,598 +0,0 @@ -/* - Copyright (c) 2013, OpenEmu Team - - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the OpenEmu Team nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "PVStellaGameCore.h" - -#import -#import - -#if !TARGET_OS_MACCATALYST -#import -#import -#import -#import -#else -#import -#import -#endif - -#include "libretro.h" - -// Size and screen buffer consants -typedef uint32_t stellabuffer_t; -#define STELLA_PITCH_SHIFT 2 -#define STELLA_PIXEL_TYPE GL_UNSIGNED_BYTE -#define STELLA_PIXEL_FORMAT GL_BGRA -#define STELLA_INTERNAL_FORMAT GL_RGBA - -const NSUInteger A2600EmulatorValues[] = { - RETRO_DEVICE_ID_JOYPAD_UP, - RETRO_DEVICE_ID_JOYPAD_DOWN, - RETRO_DEVICE_ID_JOYPAD_LEFT, - RETRO_DEVICE_ID_JOYPAD_RIGHT, - RETRO_DEVICE_ID_JOYPAD_B, - RETRO_DEVICE_ID_JOYPAD_L, - RETRO_DEVICE_ID_JOYPAD_L2, - RETRO_DEVICE_ID_JOYPAD_R, - RETRO_DEVICE_ID_JOYPAD_R2, - RETRO_DEVICE_ID_JOYPAD_START, - RETRO_DEVICE_ID_JOYPAD_SELECT -}; - -#define NUMBER_OF_PADS 2 -#define NUMBER_OF_PAD_INPUTS 16 - -@interface PVStellaGameCore () { - stellabuffer_t *_videoBuffer; - int _videoWidth, _videoHeight; - int16_t _pad[NUMBER_OF_PADS][NUMBER_OF_PAD_INPUTS]; -} - -@end - -static __weak PVStellaGameCore *_current; - -@implementation PVStellaGameCore - -#pragma mark - Static callbacks -static void audio_callback(int16_t left, int16_t right) { - __strong PVStellaGameCore *strongCurrent = _current; - - [[strongCurrent ringBufferAtIndex:0] write:&left maxLength:2]; - [[strongCurrent ringBufferAtIndex:0] write:&right maxLength:2]; - - strongCurrent = nil; -} - -static size_t audio_batch_callback(const int16_t *data, size_t frames) { - __strong PVStellaGameCore *strongCurrent = _current; - - [[strongCurrent ringBufferAtIndex:0] write:data maxLength:frames << 2]; - - strongCurrent = nil; - - return frames; -} - -static dispatch_queue_t memcpy_queue = -dispatch_queue_create("stella memcpy queue", dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INTERACTIVE, 0)); - -static void video_callback(const void *data, unsigned width, unsigned height, size_t pitch) { - __strong PVStellaGameCore *strongCurrent = _current; - - strongCurrent->_videoWidth = width; - strongCurrent->_videoHeight = height; - - dispatch_apply(height, memcpy_queue, ^(size_t y) { - const stellabuffer_t *src = (stellabuffer_t*)data + y * (pitch >> STELLA_PITCH_SHIFT); //pitch is in bytes not pixels - - //uint16_t *dst = current->videoBuffer + y * current->videoWidth; - stellabuffer_t *dst = strongCurrent->_videoBuffer + y * strongCurrent->_videoWidth; - - memcpy(dst, src, sizeof(stellabuffer_t)*width); - }); - - strongCurrent = nil; -} - -static void input_poll_callback(void) { - //DLOG(@"poll callback"); -} - -static int16_t input_state_callback(unsigned port, unsigned device, unsigned index, unsigned _id) -{ -// NSLog(@"polled input: port: %d device: %d id: %d", port, device, _id); - - __strong PVStellaGameCore *strongCurrent = _current; - int16_t value = 0; - - if (port == 0 & device == RETRO_DEVICE_JOYPAD) - { - value = strongCurrent->_pad[0][_id]; - } - else if(port == 1 & device == RETRO_DEVICE_JOYPAD) - { - if (value == 0) - { - value = strongCurrent->_pad[1][_id]; - } - } - - strongCurrent = nil; - - return value; -} - -static bool environment_callback(unsigned cmd, void *data) { - __strong PVStellaGameCore *strongCurrent = _current; - - switch(cmd) { - case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY : { - NSString *appSupportPath = [strongCurrent BIOSPath]; - - *(const char **)data = [appSupportPath UTF8String]; - DLOG(@"Environ SYSTEM_DIRECTORY: \"%@\".\n", appSupportPath); - break; - } - case RETRO_ENVIRONMENT_SET_PIXEL_FORMAT: { -// *(retro_pixel_format *)data = RETRO_PIXEL_FORMAT_0RGB1555; - break; - } - default : { - DLOG(@"Environ UNSUPPORTED (#%u).\n", cmd); - return false; - } - } - - strongCurrent = nil; - - return true; -} - - -static void loadSaveFile(const char* path, int type) { - FILE *file; - - file = fopen(path, "rb"); - if ( !file ) { - return; - } - - size_t size = stella_retro_get_memory_size(type); - void *data = stella_retro_get_memory_data(type); - - if (size == 0 || !data) { - fclose(file); - return; - } - - int rc = fread(data, sizeof(uint8_t), size, file); - if ( rc != size ) { - DLOG(@"Couldn't load save file."); - } - - DLOG(@"Loaded save file: %s", path); - fclose(file); -} - -static void writeSaveFile(const char* path, int type) -{ - size_t size = stella_retro_get_memory_size(type); - void *data = stella_retro_get_memory_data(type); - - if ( data && size > 0 ) - { - FILE *file = fopen(path, "wb"); - if ( file != NULL ) - { - DLOG(@"Saving state %s. Size: %d bytes.", path, (int)size); - stella_retro_serialize(data, size); - if ( fwrite(data, sizeof(uint8_t), size, file) != size ) - DLOG(@"Did not save state properly."); - fclose(file); - } - } -} - -- (id)init -{ - if((self = [super init])) - { - if(_videoBuffer) - free(_videoBuffer); - _videoBuffer = (stellabuffer_t*)malloc(160 * 256 * 4); - } - - _current = self; - - return self; -} - -#pragma mark Exectuion - -- (void)executeFrame -{ - if (self.controller1 || self.controller2) { - [self pollControllers]; - } - stella_retro_run(); -} - -- (void)executeFrameSkippingFrame: (BOOL) skip -{ - if (!skip && (self.controller1 || self.controller2)) { - [self pollControllers]; - } - stella_retro_run(); -} - -- (BOOL)loadFileAtPath: (NSString*) path -{ - memset(_pad, 0, sizeof(int16_t) * NUMBER_OF_PADS * NUMBER_OF_PAD_INPUTS); - - const void *data; - size_t size; - self.romName = [[[path lastPathComponent] componentsSeparatedByString:@"."] objectAtIndex:0]; //[path copy]; - - //load cart, read bytes, get length - NSData* dataObj = [NSData dataWithContentsOfFile:[path stringByStandardizingPath]]; - if(dataObj == nil) return false; - size = [dataObj length]; - data = (uint8_t*)[dataObj bytes]; - const char *meta = NULL; - - //memory.copy(data, size); - stella_retro_set_environment(environment_callback); - stella_retro_init(); - - stella_retro_set_audio_sample(audio_callback); - stella_retro_set_audio_sample_batch(audio_batch_callback); - stella_retro_set_video_refresh(video_callback); - stella_retro_set_input_poll(input_poll_callback); - stella_retro_set_input_state(input_state_callback); - - - const char *fullPath = [path UTF8String]; - - struct retro_game_info info = {NULL}; - info.path = fullPath; - info.data = data; - info.size = size; - info.meta = meta; - - if (stella_retro_load_game(&info)) - { - if ([self.batterySavesPath length]) - { - [[NSFileManager defaultManager] createDirectoryAtPath:self.batterySavesPath withIntermediateDirectories:YES attributes:nil error:NULL]; - - NSString *filePath = [self.batterySavesPath stringByAppendingPathComponent:[self.romName stringByAppendingPathExtension:@"sav"]]; - - [self loadSaveFile:filePath forType:RETRO_MEMORY_SAVE_RAM]; - } - - struct retro_system_av_info info; - stella_retro_get_system_av_info(&info); - - _frameInterval = info.timing.fps; - _sampleRate = info.timing.sample_rate; - - stella_retro_get_region(); - stella_retro_run(); - - return YES; - } - - return NO; -} - -- (BOOL)loadSaveFile:(NSString *)path forType:(int)type -{ - size_t size = stella_retro_get_memory_size(type); - void *ramData = stella_retro_get_memory_data(type); - - if (size == 0 || !ramData) - { - return NO; - } - - NSData *data = [NSData dataWithContentsOfFile:path]; - if (!data || ![data length]) - { - DLOG(@"Couldn't load save file."); - return NO; - } - - [data getBytes:ramData length:size]; - return YES; -} - -- (BOOL)writeSaveFile:(NSString *)path forType:(int)type { - size_t size = stella_retro_get_memory_size(type); - void *ramData = stella_retro_get_memory_data(type); - - if (ramData && (size > 0)) { - stella_retro_serialize(ramData, size); - NSData *data = [NSData dataWithBytes:ramData length:size]; - BOOL success = [data writeToFile:path atomically:YES]; - if (!success) - { - DLOG(@"Error writing save file"); - } - return success; - } else { - ELOG(@"Stella ramdata is invalid"); - return NO; - } -} - -- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error { - NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to save state.", - NSLocalizedFailureReasonErrorKey: @"Stella does not support save states.", - NSLocalizedRecoverySuggestionErrorKey: @"Check for future updates on ticket #753." - }; - - if(error != NULL) { - NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain - code:PVEmulatorCoreErrorCodeCouldNotSaveState - userInfo:userInfo]; - - *error = newError; - } - return NO; -// return [self writeSaveFile:fileName forType:RETRO_MEMORY_SAVE_RAM]; -} - -- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error { - if(error != NULL) { - NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Failed to load state.", - NSLocalizedFailureReasonErrorKey: @"Stella does not support save states.", - NSLocalizedRecoverySuggestionErrorKey: @"Check for future updates on ticket #753." - }; - - NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain - code:PVEmulatorCoreErrorCodeCouldNotLoadState - userInfo:userInfo]; - - *error = newError; - } - return NO; -// return [self loadSaveFile:fileName forType:RETRO_MEMORY_SAVE_RAM]; -} - - -#pragma mark Input -- (void)pollControllers { - for (NSInteger playerIndex = 0; playerIndex < 2; playerIndex++) { - GCController *controller = nil; - - if (self.controller1 && playerIndex == 0) { - controller = self.controller1; - } - else if (self.controller2 && playerIndex == 1) - { - controller = self.controller2; - } - - if ([controller extendedGamepad]) { - GCExtendedGamepad *gamepad = [controller extendedGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - /* TODO: To support paddles we would need to circumvent libRetro's emulation of analog controls or drop libRetro and talk to stella directly like OpenEMU did */ - - // D-Pad - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = (dpad.up.isPressed || gamepad.leftThumbstick.up.isPressed); - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = (dpad.down.isPressed || gamepad.leftThumbstick.down.isPressed); - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = (dpad.left.isPressed || gamepad.leftThumbstick.left.isPressed); - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = (dpad.right.isPressed || gamepad.leftThumbstick.right.isPressed); - - // #688, use second thumb to control second player input if no controller active - // some games used both joysticks for 1 player optionally - if(playerIndex == 0 && self.controller2 == nil) { - _pad[1][RETRO_DEVICE_ID_JOYPAD_UP] = gamepad.rightThumbstick.up.isPressed; - _pad[1][RETRO_DEVICE_ID_JOYPAD_DOWN] = gamepad.rightThumbstick.down.isPressed; - _pad[1][RETRO_DEVICE_ID_JOYPAD_LEFT] = gamepad.rightThumbstick.left.isPressed; - _pad[1][RETRO_DEVICE_ID_JOYPAD_RIGHT] = gamepad.rightThumbstick.right.isPressed; - } - - // Fire - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; - // Trigger - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed || gamepad.rightTrigger.isPressed; - // Booster - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed || gamepad.leftTrigger.isPressed; - - // Reset - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; - - // Select - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; - - /* - #define RETRO_DEVICE_ID_JOYPAD_B 0 == JoystickZeroFire1 - #define RETRO_DEVICE_ID_JOYPAD_Y 1 == Unmapped - #define RETRO_DEVICE_ID_JOYPAD_SELECT 2 == ConsoleSelect - #define RETRO_DEVICE_ID_JOYPAD_START 3 == ConsoleReset - #define RETRO_DEVICE_ID_JOYPAD_UP 4 == Up - #define RETRO_DEVICE_ID_JOYPAD_DOWN 5 == Down - #define RETRO_DEVICE_ID_JOYPAD_LEFT 6 == Left - #define RETRO_DEVICE_ID_JOYPAD_RIGHT 7 == Right - #define RETRO_DEVICE_ID_JOYPAD_A 8 == JoystickZeroFire2 - #define RETRO_DEVICE_ID_JOYPAD_X 9 == JoystickZeroFire3 - #define RETRO_DEVICE_ID_JOYPAD_L 10 == ConsoleLeftDiffA - #define RETRO_DEVICE_ID_JOYPAD_R 11 == ConsoleRightDiffA - #define RETRO_DEVICE_ID_JOYPAD_L2 12 == ConsoleLeftDiffB - #define RETRO_DEVICE_ID_JOYPAD_R2 13 == ConsoleRightDiffB - #define RETRO_DEVICE_ID_JOYPAD_L3 14 == ConsoleColor - #define RETRO_DEVICE_ID_JOYPAD_R3 15 == ConsoleBlackWhite - */ - } else if ([controller gamepad]) { - GCGamepad *gamepad = [controller gamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - // D-Pad - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.isPressed; - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.isPressed; - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.isPressed; - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.isPressed; - - // Fire - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; - // Trigger - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed; - // Booster - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed; - - // Reset - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; - - // Select - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; - - } -#if TARGET_OS_TV - else if ([controller microGamepad]) { - GCMicroGamepad *gamepad = [controller microGamepad]; - GCControllerDirectionPad *dpad = [gamepad dpad]; - - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.value > 0.5; - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.value > 0.5; - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.value > 0.5; - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.value > 0.5; - - // Fire - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonX.isPressed; - // Trigger - _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonA.isPressed; - } -#endif - } -} - -- (void)didPushPV2600Button:(PV2600Button)button forPlayer:(NSUInteger)player { - _pad[player][A2600EmulatorValues[button]] = 1; -} - -- (void)didReleasePV2600Button:(PV2600Button)button forPlayer:(NSUInteger)player { - _pad[player][A2600EmulatorValues[button]] = 0; -} - -#pragma mark Video -- (const void *)videoBuffer -{ - return _videoBuffer; -} - -- (CGRect)screenRect { -// __strong PVStellaGameCore *strongCurrent = _current; - - //return OEIntRectMake(0, 0, strongCurrent->_videoWidth, strongCurrent->_videoHeight); - return CGRectMake(0, 0, _videoWidth, _videoHeight); -} - -- (CGSize)bufferSize { - return CGSizeMake(160, 256); - -// __strong PVStellaGameCore *strongCurrent = _current; - //return CGSizeMake(strongCurrent->_videoWidth, strongCurrent->_videoHeight); -} - -- (CGSize)aspectSize { - return CGSizeMake(_videoWidth * (12.0/7.0), _videoHeight); -// return CGSizeMake(STELLA_WIDTH * 2, STELLA_HEIGHT); -} - -//- (void)setupEmulation -//{ -//} - -- (void)resetEmulation -{ - stella_retro_reset(); -} - -- (void)stopEmulation -{ - if ([self.batterySavesPath length]) - { - [[NSFileManager defaultManager] createDirectoryAtPath:self.batterySavesPath withIntermediateDirectories:YES attributes:nil error:NULL]; - NSString *filePath = [self.batterySavesPath stringByAppendingPathComponent:[self.romName stringByAppendingPathExtension:@"sav"]]; - [self writeSaveFile:filePath forType:RETRO_MEMORY_SAVE_RAM]; - } - - [super stopEmulation]; - - double delayInSeconds = 0.1; - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); - dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ - stella_retro_unload_game(); - stella_retro_deinit(); - }); -} - -- (void)dealloc -{ - free(_videoBuffer); -} - -- (GLenum)pixelFormat -{ - return STELLA_PIXEL_FORMAT; -} - -- (GLenum)pixelType -{ - return STELLA_PIXEL_TYPE; -} - -- (GLenum)internalPixelFormat -{ - return STELLA_INTERNAL_FORMAT; -} - -- (double)audioSampleRate -{ - return _sampleRate ? _sampleRate : 31400; -} - -- (NSTimeInterval)frameInterval -{ - return _frameInterval ? _frameInterval : 60.0; -} - -- (NSUInteger)channelCount -{ - return 2; -} - --(BOOL)supportsSaveStates { - return NO; -} - -@end diff --git a/Cores/Stella/PVStella/Stella/StellaCore/libretro.cpp b/Cores/Stella/PVStella/Stella/StellaCore/libretro.cpp deleted file mode 100644 index e3514b9add..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/libretro.cpp +++ /dev/null @@ -1,391 +0,0 @@ -#ifndef _MSC_VER -#include -#endif -#include -#include -#include -#include -#ifndef __CELLOS_LV2__ -//#include -#endif - -//#ifdef _MSC_VER -//#define snprintf _snprintf -//#pragma pack(1) -//#endif - -#include "libretro.h" - -#include "Settings.hxx" -#include "TIA.hxx" -#include "Props.hxx" -#include "PropsSet.hxx" -#include "Cart.hxx" -#include "Console.hxx" -#include "Serializer.hxx" -#include "Event.hxx" -#include "Switches.hxx" -#include "MD5.hxx" -#include "SoundSDL.hxx" -#include "Paddles.hxx" -#include "System.hxx" -#include "M6532.hxx" - - -struct Stella -{ - Console* GameConsole; - Settings GameSettings; - - const uInt32* Palette; - - SoundSDL Sound; - - Stella() {GameConsole = 0; Palette = 0;} - ~Stella() {delete GameConsole;} -}; -Stella* stella; - -static uint32_t frame_buffer[256*160]; -uint8_t samplebuffer[2048]; -//Set the palette for the current stella instance -void stellaMDFNSetPalette (const uInt32* palette) { - if(stella) { - stella->Palette = palette; - } -} - -//Get the settings from the current stella instance -Settings& stellaMDFNSettings () { - if(stella) { - return stella->GameSettings; - } - - //HACK - abort(); -} - -static retro_video_refresh_t video_cb; -static retro_input_poll_t input_poll_cb; -static retro_input_state_t input_state_cb; -static retro_environment_t environ_cb; -static retro_audio_sample_t audio_cb; -static retro_audio_sample_batch_t audio_batch_cb; - -void stella_retro_set_environment(retro_environment_t cb) { environ_cb = cb; } -void stella_retro_set_video_refresh(retro_video_refresh_t cb) { video_cb = cb; } -void stella_retro_set_audio_sample(retro_audio_sample_t cb) { audio_cb = cb; } -void stella_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb) { audio_batch_cb = cb; } -void stella_retro_set_input_poll(retro_input_poll_t cb) { input_poll_cb = cb; } -void stella_retro_set_input_state(retro_input_state_t cb) { input_state_cb = cb; } - -static void stella_update_input() { - - if (!input_poll_cb) { - return; - } - - input_poll_cb(); - - //Update stella's event structure - stella->GameConsole->event().set(Event::JoystickZeroUp, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP)); - stella->GameConsole->event().set(Event::JoystickZeroDown, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN)); - stella->GameConsole->event().set(Event::JoystickZeroLeft, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT)); - stella->GameConsole->event().set(Event::JoystickZeroRight, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT)); - stella->GameConsole->event().set(Event::JoystickZeroFire1, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B)); - stella->GameConsole->event().set(Event::JoystickZeroFire2, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A)); - stella->GameConsole->event().set(Event::JoystickZeroFire3, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X)); - - stella->GameConsole->event().set(Event::ConsoleLeftDiffA, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L)); - stella->GameConsole->event().set(Event::ConsoleLeftDiffB, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2)); - stella->GameConsole->event().set(Event::ConsoleColor, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3)); - stella->GameConsole->event().set(Event::ConsoleRightDiffA, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R)); - stella->GameConsole->event().set(Event::ConsoleRightDiffB, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2)); - stella->GameConsole->event().set(Event::ConsoleBlackWhite, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3)); - - stella->GameConsole->event().set(Event::ConsoleSelect, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT)); - stella->GameConsole->event().set(Event::ConsoleReset, input_state_cb(Controller::Left, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START)); - - //Events for right player's joystick - stella->GameConsole->event().set(Event::JoystickOneUp, input_state_cb(Controller::Right, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP)); - stella->GameConsole->event().set(Event::JoystickOneDown, input_state_cb(Controller::Right, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN)); - stella->GameConsole->event().set(Event::JoystickOneLeft, input_state_cb(Controller::Right, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT)); - stella->GameConsole->event().set(Event::JoystickOneRight, input_state_cb(Controller::Right, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT)); - stella->GameConsole->event().set(Event::JoystickOneFire1, input_state_cb(Controller::Right, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B)); - stella->GameConsole->event().set(Event::JoystickOneFire2, input_state_cb(Controller::Right, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A)); - stella->GameConsole->event().set(Event::JoystickOneFire3, input_state_cb(Controller::Right, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X)); - - //stella->GameConsole->fry(); - //Tell all input devices to read their state from the event structure - stella->GameConsole->controller(Controller::Left).update(); - stella->GameConsole->controller(Controller::Right).update(); - stella->GameConsole->switches().update(); -} - -/************************************ - * libretro implementation - ************************************/ - -static struct retro_system_av_info g_av_info; - -void stella_retro_get_system_info(struct retro_system_info *info) -{ - memset(info, 0, sizeof(*info)); - info->library_name = "Stella"; - info->library_version = "3.4.1"; - info->need_fullpath = true; - info->valid_extensions = "a26|A26"; -} - -void stella_retro_get_system_av_info(struct retro_system_av_info *info) -{ - memset(info, 0, sizeof(*info)); - // Just assume NTSC for now. TODO: Verify FPS. - info->timing.fps = stella->GameConsole->getFramerate(); - info->timing.sample_rate = 31400; - info->geometry.base_width = 160; - info->geometry.base_height = 210; - info->geometry.max_width = 160; - info->geometry.max_height = 256; - info->geometry.aspect_ratio = 4.0 / 3.0; -} - -void stella_retro_set_controller_port_device(unsigned port, unsigned device) -{ - (void)port; - (void)device; -} - -size_t stella_retro_serialize_size(void) -{ - return 0xfc080; - //return 0; -} - -bool stella_retro_serialize(void *data, size_t size) -{ - //if (size != STATE_SIZE) - // return false; - - //Serializer state((uint8_t*)data); - //Serializer(const string& filename, bool readonly = false); - - //Serializer state((const string&) data); - //stella->GameConsole->save((Serializer&)state); - - Serializer state((StateMem *)data); - stella->GameConsole->save(state); - - return false; -} - -bool stella_retro_unserialize(const void *data, size_t size) -{ - //if (size != STATE_SIZE) - // return false; - - //Serializer state((uint8_t*)data); - //stella->GameConsole->load(state); - - //Serializer state((const string&) data); - //stella->GameConsole->load((Serializer&)state); - - Serializer state((StateMem *)data); - stella->GameConsole->load(state); - - return true; -} - -void stella_retro_cheat_reset(void) -{} - -void stella_retro_cheat_set(unsigned index, bool enabled, const char *code) -{ - (void)index; - (void)enabled; - (void)code; -} - -bool stella_retro_load_game(const struct retro_game_info *info) -{ - stella = new Stella(); - const char *full_path; - - full_path = info->path; - - //Get the game properties - string cartMD5 = MD5((const uInt8*)info->data, info->size); - PropertiesSet propslist(0); - Properties gameProperties; - propslist.getMD5(cartMD5, gameProperties); - - //Input - Set paddles for games that require them (Range: 1-10) - Paddles::setDigitalSensitivity(5); - Paddles::setMouseSensitivity(5); - - //Load the cart - string cartType = gameProperties.get(Cartridge_Type); - string cartID = ""; - Cartridge* stellaCart = Cartridge::create((const uInt8*)info->data, (uInt32)info->size, cartMD5, cartType, cartID, stella->GameSettings); - - //printf("%s %d\n", cartMD5.c_str(), info->size); - if(stellaCart == 0) - { - printf("Stella: Failed to load cartridge."); - return false; - } - - //Create the console - stella->GameConsole = new Console(stella->Sound, stellaCart, gameProperties); - - //Init sound - stella->Sound.open(); - - //stella->Palette = 0; //NTSC - - return true; -} - -bool stella_retro_load_game_special(unsigned game_type, const struct stella_retro_game_info *info, size_t num_info) -{ - (void)game_type; - (void)info; - (void)num_info; - return false; -} - -void stella_retro_unload_game(void) -{ -// if (stella->GameConsole) -// { -// delete stella->GameConsole; -// stella->GameConsole = 0; -// } -// else if (cartridge) -// { -// delete cartridge; -// cartridge = 0; -// } -// if (stella->GameSettings) -// { -// delete stella->GameSettings; -// stella->GameSettings = 0; -// } -} - -unsigned stella_retro_get_region(void) -{ - //stella->GameConsole->getFramerate(); - return RETRO_REGION_NTSC; -} - -unsigned stella_retro_api_version(void) -{ - return RETRO_API_VERSION; -} - -void *stella_retro_get_memory_data(unsigned id) -{ - switch (id) - { - case RETRO_MEMORY_SYSTEM_RAM: return stella->GameConsole->system().m6532().getRAM(); - default: return NULL; - } -} - -size_t stella_retro_get_memory_size(unsigned id) -{ - switch (id) - { - case RETRO_MEMORY_SYSTEM_RAM: return 128; - default: return 0; - } -} - -void stella_retro_init(void) -{ - unsigned level = 3; - environ_cb(RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL, &level); -} - -void stella_retro_deinit(void) -{ - delete stella; - stella = 0; - //free(frame_buffer); -} - -void stella_retro_reset(void) -{ - stella->GameConsole->system().reset(); -} - -void stella_retro_run(void) -{ - //INPUT - stella_update_input(); - - //EMULATE - stella->GameConsole->tia().update(); - - //VIDEO - //Get the frame info from stella - Int32 frameWidth = stella->GameConsole->tia().width(); - Int32 frameHeight = stella->GameConsole->tia().height(); - - //Copy the frame from stella to video buffer - for ( unsigned int i = 0; i < frameHeight * frameWidth; ++i ) - frame_buffer[i] = stella->Palette[stella->GameConsole->tia().currentFrameBuffer()[i]]; - - video_cb(frame_buffer, frameWidth, frameHeight, frameWidth << 2); - - //AUDIO - //Get the number of samples in a frame - uint32_t soundFrameSize = 31400.0f / stella->GameConsole->getFramerate(); - - //Process one frame of audio from stella - - //const int16_t * final_samplebuffer; - stella->Sound.processFragment(samplebuffer, soundFrameSize); - - int16_t sample; - //Convert and stash it in the resampler... - for(int i = 0; i != soundFrameSize; i ++) - { - sample = (samplebuffer[i] << 8) - 32768; - int16_t frame[2] = {sample, sample}; - //Resampler::Fill(frame, 2); - audio_cb(frame[0], frame[1]); - //audio_batch_cb((const int16_t *)sample, soundFrameSize); - //memcpy(&final_samplebuffer, &sample, 2 * 2); - } - - //TODO: fix - //The array you pass in batch callback has to be interleaved signed 16-bit stereo - //audio_batch_cb((const int16_t *)samplebuffer, soundFrameSize); - //audio_batch_cb((const int16_t *)sample, soundFrameSize); - //audio_batch_cb(final_samplebuffer, soundFrameSize); - - /* convert uint16_t to uint8_t */ - //uint16_t A = 120; - //uint8_t B; - - //B = (uint8_t)A; // Get lower byte of 16-bit var - //B = (uint8_t)(A >> 8); // Get upper byte of 16-bit var - - /* convert 2 uint8_t to uint16_t */ - //uint8_t d1=0x01; - //uint8_t d2=0x02; - - //uint16_t wd; - - //union { - // uint8_t bytes[2]; - // int n; - //} join; - //join.bytes[0] = d1; - //join.bytes[1] = d2; - //wd = join.n; - //while(1) { - //} -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/libretro.h b/Cores/Stella/PVStella/Stella/StellaCore/libretro.h deleted file mode 100755 index c31a75ac61..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/libretro.h +++ /dev/null @@ -1,333 +0,0 @@ -#ifndef LIBRETRO_H__ -#define LIBRETRO_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#else -#if defined(_MSC_VER) && !defined(__cplusplus) -#define bool unsigned char -#define true 1 -#define false 0 -#else -#include -#endif -#endif - -#define RETRO_API_VERSION 1 - -#define RETRO_DEVICE_MASK 0xff -#define RETRO_DEVICE_NONE 0 -#define RETRO_DEVICE_JOYPAD 1 -#define RETRO_DEVICE_MOUSE 2 -#define RETRO_DEVICE_KEYBOARD 3 -#define RETRO_DEVICE_LIGHTGUN 4 -#define RETRO_DEVICE_ANALOG 5 - -#define RETRO_DEVICE_JOYPAD_MULTITAP ((1 << 8) | RETRO_DEVICE_JOYPAD) -#define RETRO_DEVICE_LIGHTGUN_SUPER_SCOPE ((1 << 8) | RETRO_DEVICE_LIGHTGUN) -#define RETRO_DEVICE_LIGHTGUN_JUSTIFIER ((2 << 8) | RETRO_DEVICE_LIGHTGUN) -#define RETRO_DEVICE_LIGHTGUN_JUSTIFIERS ((3 << 8) | RETRO_DEVICE_LIGHTGUN) - -#define RETRO_DEVICE_ID_JOYPAD_B 0 -#define RETRO_DEVICE_ID_JOYPAD_Y 1 -#define RETRO_DEVICE_ID_JOYPAD_SELECT 2 -#define RETRO_DEVICE_ID_JOYPAD_START 3 -#define RETRO_DEVICE_ID_JOYPAD_UP 4 -#define RETRO_DEVICE_ID_JOYPAD_DOWN 5 -#define RETRO_DEVICE_ID_JOYPAD_LEFT 6 -#define RETRO_DEVICE_ID_JOYPAD_RIGHT 7 -#define RETRO_DEVICE_ID_JOYPAD_A 8 -#define RETRO_DEVICE_ID_JOYPAD_X 9 -#define RETRO_DEVICE_ID_JOYPAD_L 10 -#define RETRO_DEVICE_ID_JOYPAD_R 11 -#define RETRO_DEVICE_ID_JOYPAD_L2 12 -#define RETRO_DEVICE_ID_JOYPAD_R2 13 -#define RETRO_DEVICE_ID_JOYPAD_L3 14 -#define RETRO_DEVICE_ID_JOYPAD_R3 15 - -#define RETRO_DEVICE_INDEX_ANALOG_LEFT 0 -#define RETRO_DEVICE_INDEX_ANALOG_RIGHT 1 -#define RETRO_DEVICE_ID_ANALOG_X 0 -#define RETRO_DEVICE_ID_ANALOG_Y 1 - -#define RETRO_DEVICE_ID_MOUSE_X 0 -#define RETRO_DEVICE_ID_MOUSE_Y 1 -#define RETRO_DEVICE_ID_MOUSE_LEFT 2 -#define RETRO_DEVICE_ID_MOUSE_RIGHT 3 - -#define RETRO_DEVICE_ID_LIGHTGUN_X 0 -#define RETRO_DEVICE_ID_LIGHTGUN_Y 1 -#define RETRO_DEVICE_ID_LIGHTGUN_TRIGGER 2 -#define RETRO_DEVICE_ID_LIGHTGUN_CURSOR 3 -#define RETRO_DEVICE_ID_LIGHTGUN_TURBO 4 -#define RETRO_DEVICE_ID_LIGHTGUN_PAUSE 5 -#define RETRO_DEVICE_ID_LIGHTGUN_START 6 - -#define RETRO_REGION_NTSC 0 -#define RETRO_REGION_PAL 1 - -#define RETRO_MEMORY_MASK 0xff -#define RETRO_MEMORY_SAVE_RAM 0 -#define RETRO_MEMORY_RTC 1 -#define RETRO_MEMORY_SYSTEM_RAM 2 -#define RETRO_MEMORY_VIDEO_RAM 3 - -#define RETRO_MEMORY_SNES_BSX_RAM ((1 << 8) | RETRO_MEMORY_SAVE_RAM) -#define RETRO_MEMORY_SNES_BSX_PRAM ((2 << 8) | RETRO_MEMORY_SAVE_RAM) -#define RETRO_MEMORY_SNES_SUFAMI_TURBO_A_RAM ((3 << 8) | RETRO_MEMORY_SAVE_RAM) -#define RETRO_MEMORY_SNES_SUFAMI_TURBO_B_RAM ((4 << 8) | RETRO_MEMORY_SAVE_RAM) -#define RETRO_MEMORY_SNES_GAME_BOY_RAM ((5 << 8) | RETRO_MEMORY_SAVE_RAM) -#define RETRO_MEMORY_SNES_GAME_BOY_RTC ((6 << 8) | RETRO_MEMORY_RTC) - -#define RETRO_GAME_TYPE_BSX 0x101 -#define RETRO_GAME_TYPE_BSX_SLOTTED 0x102 -#define RETRO_GAME_TYPE_SUFAMI_TURBO 0x103 -#define RETRO_GAME_TYPE_SUPER_GAME_BOY 0x104 - - - // Environment commands. -#define RETRO_ENVIRONMENT_SET_ROTATION 1 // const unsigned * -- - // Sets screen rotation of graphics. - // Is only implemented if rotation can be accelerated by hardware. - // Valid values are 0, 1, 2, 3, which rotates screen by 0, 90, 180, 270 degrees - // counter-clockwise respectively. - // -#define RETRO_ENVIRONMENT_GET_OVERSCAN 2 // bool * -- - // Boolean value whether or not the implementation should use overscan, or crop away overscan. - // -#define RETRO_ENVIRONMENT_GET_CAN_DUPE 3 // bool * -- - // Boolean value whether or not RetroArch supports frame duping, - // passing NULL to video frame callback. - // -#define RETRO_ENVIRONMENT_GET_VARIABLE 4 // struct retro_variable * -- - // Interface to aquire user-defined information from environment - // that cannot feasibly be supported in a multi-system way. - // Mostly used for obscure, - // specific features that the user can tap into when neseccary. - // -#define RETRO_ENVIRONMENT_SET_VARIABLES 5 // const struct retro_variable * -- - // Allows an implementation to signal the environment - // which variables it might want to check for later using GET_VARIABLE. - // 'data' points to an array of retro_variable structs terminated by a { NULL, NULL } element. - // retro_variable::value should contain a human readable description of the key. - // -#define RETRO_ENVIRONMENT_SET_MESSAGE 6 // const struct retro_message * -- - // Sets a message to be displayed in implementation-specific manner for a certain amount of 'frames'. - // Should not be used for trivial messages, which should simply be logged to stderr. -#define RETRO_ENVIRONMENT_SHUTDOWN 7 // N/A (NULL) -- - // Requests the frontend to shutdown. - // Should only be used if game has a specific - // way to shutdown the game from a menu item or similar. - // -#define RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL 8 - // const unsigned * -- - // Gives a hint to the frontend how demanding this implementation - // is on a system. E.g. reporting a level of 2 means - // this implementation should run decently on all frontends - // of level 2 and up. - // - // It can be used by the frontend to potentially warn - // about too demanding implementations. - // - // The levels are "floating", but roughly defined as: - // 1: Low-powered devices such as Raspberry Pi, smart phones, tablets, etc. - // 2: Medium-spec consoles, such as PS3/360, with sub-par CPUs. - // 3: Modern desktop/laptops with reasonably powerful CPUs. - // 4: High-end desktops with very powerful CPUs. - // - // This function can be called on a per-game basis, - // as certain games an implementation can play might be - // particularily demanding. - // If called, it should be called in retro_load_game(). - // -#define RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY 9 - // const char ** -- - // Returns the "system" directory of the frontend. - // This directory can be used to store system specific ROMs such as BIOSes, configuration data, etc. - // The returned value can be NULL. - // If so, no such directory is defined, - // and it's up to the implementation to find a suitable directory. - // -#define RETRO_ENVIRONMENT_SET_PIXEL_FORMAT 10 - // const enum retro_pixel_format * -- - // Sets the internal pixel format used by the implementation. - // The default pixel format is RETRO_PIXEL_FORMAT_XRGB1555. - // If the call returns false, the frontend does not support this pixel format. - // This function should be called inside retro_load_game() or retro_get_system_av_info(). - - enum retro_pixel_format - { - RETRO_PIXEL_FORMAT_0RGB1555 = 0, // 0RGB1555, native endian. 0 bit must be set to 0. - RETRO_PIXEL_FORMAT_XRGB8888 // XRGB8888, native endian. X bits are ignored. - }; - - struct retro_message - { - const char *msg; // Message to be displayed. - unsigned frames; // Duration in frames of message. - }; - - struct retro_system_info - { - const char *library_name; // Descriptive name of library. Should not contain any version numbers, etc. - const char *library_version; // Descriptive version of core. - - const char *valid_extensions; // A string listing probably rom extensions the core will be able to load, separated with pipe. - // I.e. "bin|rom|iso". - // Typically used for a GUI to filter out extensions. - - bool need_fullpath; // If true, retro_load_game() is guaranteed to provide a valid pathname in retro_game_info::path. - // ::data and ::size are both invalid. - // If false, ::data and ::size are guaranteed to be valid, but ::path might not be valid. - // This is typically set to true for libretro implementations that must load from file. - // Implementations should strive for setting this to false, as it allows the frontend to perform patching, etc. - - bool block_extract; // If true, the frontend is not allowed to extract any archives before loading the real ROM. - // Necessary for certain libretro implementations that load games from zipped archives. - }; - - struct retro_game_geometry - { - unsigned base_width; // Nominal video width of game. - unsigned base_height; // Nominal video height of game. - unsigned max_width; // Maximum possible width of game. - unsigned max_height; // Maximum possible height of game. - - float aspect_ratio; // Nominal aspect ratio of game. If aspect_ratio is <= 0.0, - // an aspect ratio of base_width / base_height is assumed. - // A frontend could override this setting if desired. - }; - - struct retro_system_timing - { - double fps; // FPS of video content. - double sample_rate; // Sampling rate of audio. - }; - - struct retro_system_av_info - { - struct retro_game_geometry geometry; - struct retro_system_timing timing; - }; - - struct retro_variable - { - const char *key; // Variable to query in RETRO_ENVIRONMENT_GET_VARIABLE. - // If NULL, obtains the complete environment string if more complex parsing is necessary. - // The environment string is formatted as key-value pairs delimited by semicolons as so: - // "key1=value1;key2=value2;..." - const char *value; // Value to be obtained. If key does not exist, it is set to NULL. - }; - - struct retro_game_info - { - const char *path; // Path to game, UTF-8 encoded. Usually used as a reference. - // May be NULL if rom was loaded from stdin or similar. - // retro_system_info::need_fullpath guaranteed that this path is valid. - const void *data; // Memory buffer of loaded game. Will be NULL if need_fullpath was set. - size_t size; // Size of memory buffer. - const char *meta; // String of implementation specific meta-data. - }; - - // Callbacks - // - // Environment callback. Gives implementations a way of performing uncommon tasks. Extensible. - typedef bool (*retro_environment_t)(unsigned cmd, void *data); - - // Render a frame. Pixel format is 15-bit 0RGB1555 native endian unless changed (see RETRO_ENVIRONMENT_SET_PIXEL_FORMAT). - // Width and height specify dimensions of buffer. - // Pitch specifices length in bytes between two lines in buffer. - typedef void (*retro_video_refresh_t)(const void *data, unsigned width, unsigned height, size_t pitch); - - // Renders a single audio frame. Should only be used if implementation generates a single sample at a time. - // Format is signed 16-bit native endian. - typedef void (*retro_audio_sample_t)(int16_t left, int16_t right); - // Renders multiple audio frames in one go. One frame is defined as a sample of left and right channels, interleaved. - // I.e. int16_t buf[4] = { l, r, l, r }; would be 2 frames. - // Only one of the audio callbacks must ever be used. - typedef size_t (*retro_audio_sample_batch_t)(const int16_t *data, size_t frames); - - // Polls input. - typedef void (*retro_input_poll_t)(void); - // Queries for input for player 'port'. device will be masked with RETRO_DEVICE_MASK. - // Specialization of devices such as RETRO_DEVICE_JOYPAD_MULTITAP that have been set with retro_set_controller_port_device() - // will still use the higher level RETRO_DEVICE_JOYPAD to request input. - typedef int16_t (*retro_input_state_t)(unsigned port, unsigned device, unsigned index, unsigned id); - - // Sets callbacks. retro_set_environment() is guaranteed to be called before retro_init(). - // The rest of the set_* functions are guaranteed to have been called before the first call to retro_run() is made. - void stella_retro_set_environment(retro_environment_t); - void stella_retro_set_video_refresh(retro_video_refresh_t); - void stella_retro_set_audio_sample(retro_audio_sample_t); - void stella_retro_set_audio_sample_batch(retro_audio_sample_batch_t); - void stella_retro_set_input_poll(retro_input_poll_t); - void stella_retro_set_input_state(retro_input_state_t); - - // Library global initialization/deinitialization. - void stella_retro_init(void); - void stella_retro_deinit(void); - - // Must return RETRO_API_VERSION. Used to validate ABI compatibility when the API is revised. - unsigned stella_retro_api_version(void); - - // Gets statically known system info. Pointers provided in *info must be statically allocated. - // Can be called at any time, even before retro_init(). - void stella_retro_get_system_info(struct retro_system_info *info); - - // Gets information about system audio/video timings and geometry. - // Can be called only after retro_load_game() has successfully completed. - void stella_retro_get_system_av_info(struct retro_system_av_info *info); - - // Sets device to be used for player 'port'. - void stella_retro_set_controller_port_device(unsigned port, unsigned device); - - // Resets the current game. - void stella_retro_reset(void); - - // Runs the game for one video frame. - // During retro_run(), input_poll callback must be called at least once. - // - // If a frame is not rendered for reasons where a game "dropped" a frame, - // this still counts as a frame, and retro_run() should explicitly dupe a frame if GET_CAN_DUPE returns true. - // In this case, the video callback can take a NULL argument for data. - void stella_retro_run(void); - - // Returns the amount of data the implementation requires to serialize internal state (save states). - // Beetween calls to retro_load_game() and retro_unload_game(), the returned size is never allowed to be larger than a previous returned value, to - // ensure that the frontend can allocate a save state buffer once. - size_t stella_retro_serialize_size(void); - - // Serializes internal state. If failed, or size is lower than retro_serialize_size(), it should return false, true otherwise. - bool stella_retro_serialize(void *data, size_t size); - bool stella_retro_unserialize(const void *data, size_t size); - - void stella_retro_cheat_reset(void); - void stella_retro_cheat_set(unsigned index, bool enabled, const char *code); - - // Loads a game. - bool stella_retro_load_game(const struct retro_game_info *game); - - // Loads a "special" kind of game. Should not be used except in extreme cases. - bool stella_retro_load_game_special( - unsigned game_type, - const struct retro_game_info *info, size_t num_info - ); - - // Unloads a currently loaded game. - void stella_retro_unload_game(void); - - // Gets region of game. - unsigned stella_retro_get_region(void); - - // Gets region of memory. - void *stella_retro_get_memory_data(unsigned id); - size_t stella_retro_get_memory_size(unsigned id); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Console.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Console.cpp deleted file mode 100644 index 33e9ab87f4..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Console.cpp +++ /dev/null @@ -1,1215 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Console.cxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#include -#include -#include -#include - -#include "AtariVox.hxx" -#include "Booster.hxx" -#include "Cart.hxx" -#include "Control.hxx" -#include "Cart.hxx" -#include "Driving.hxx" -#include "Event.hxx" -//ROBO: No EventHandler -//#include "EventHandler.hxx" -#include "Joystick.hxx" -#include "Keyboard.hxx" -#include "KidVid.hxx" -#include "Genesis.hxx" -#include "M6502.hxx" -#include "M6532.hxx" -#include "Paddles.hxx" -#include "Props.hxx" -#include "PropsSet.hxx" -#include "SaveKey.hxx" -#include "Settings.hxx" -#include "Sound.hxx" -#include "Switches.hxx" -#include "System.hxx" -#include "TIA.hxx" -#include "TrackBall.hxx" -//ROBO: No FrameBuffer or OSystem or Menu or CommandMenu -//#include "FrameBuffer.hxx" -//#include "OSystem.hxx" -//#include "Menu.hxx" -//#include "CommandMenu.hxx" -#include "Serializable.hxx" -#include "Version.hxx" - -#ifdef DEBUGGER_SUPPORT - #include "Debugger.hxx" -#endif - -#ifdef CHEATCODE_SUPPORT - #include "CheatManager.hxx" -#endif - -#include "Console.hxx" - -//ROBO: External global settings -extern Settings& stellaMDFNSettings(); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//ROBO: No OSystem, just sound -//Console::Console(OSystem* osystem, Cartridge* cart, const Properties& props) -Console::Console(Sound& sound, Cartridge* cart, const Properties& props) -//: //myOSystem(osystem), - : - myProperties(props), - myDisplayFormat("NTSC"), - myFramerate(60.0), - myUserPaletteDefined(false) -{ - myControllers[0] = 0; - myControllers[1] = 0; - myTIA = 0; - mySwitches = 0; - mySystem = 0; - myEvent = 0; - - // Attach the event subsystem to the current console -//ROBO: No OSystem, create own event -// myEvent = myOSystem->eventHandler().event(); - myEvent = new Event(); - - // Load user-defined palette for this ROM - loadUserPalette(); - - // Create switches for the console - mySwitches = new Switches(*myEvent, myProperties); - - // Construct the system and components - mySystem = new System(13, 6); - - // The real controllers for this console will be added later - // For now, we just add dummy joystick controllers, since autodetection - // runs the emulation for a while, and this may interfere with 'smart' - // controllers such as the AVox and SaveKey - // Note that the controllers must be added directly after the system - // has been created, and before any other device is added - // (particularly the M6532) - myControllers[0] = new Joystick(Controller::Left, *myEvent, *mySystem); - myControllers[1] = new Joystick(Controller::Right, *myEvent, *mySystem); - - M6502* m6502 = new M6502(1); -#ifdef DEBUGGER_SUPPORT - m6502->attach(myOSystem->debugger()); -#endif - - myCart = cart; -//ROBO: External global settings -//myRiot = new M6532(*this, myOSystem->settings()); -//myTIA = new TIA(*this, myOSystem->sound(), myOSystem->settings()); - myRiot = new M6532(*this, stellaMDFNSettings()); - myTIA = new TIA(*this, sound, stellaMDFNSettings()); - - - mySystem->attach(m6502); - mySystem->attach(myRiot); - mySystem->attach(myTIA); - mySystem->attach(myCart); - -#ifdef DEBUGGER_SUPPORT - // The debugger must be added before we run the console for the first time - myOSystem->debugger().setConsole(this); - myOSystem->debugger().initialize(); -#endif - - // Auto-detect NTSC/PAL mode if it's requested - string autodetected = ""; - myDisplayFormat = myProperties.get(Display_Format); - if(myDisplayFormat == "AUTO-DETECT" || -//ROBO: External global settings -// myOSystem->settings().getBool("rominfo")) - stellaMDFNSettings().getBool("rominfo")) - { - // Run the system for 60 frames, looking for PAL scanline patterns - // We turn off the SuperCharger progress bars, otherwise the SC BIOS - // will take over 250 frames! - // The 'fastscbios' option must be changed before the system is reset -//ROBO: External global settings -// bool fastscbios = myOSystem->settings().getBool("fastscbios"); -// myOSystem->settings().setBool("fastscbios", true); - bool fastscbios = stellaMDFNSettings().getBool("fastscbios"); - stellaMDFNSettings().setBool("fastscbios", true); - - mySystem->reset(true); // autodetect in reset enabled - int palCount = 0; - for(int i = 0; i < 60; ++i) - { - myTIA->update(); - if(myTIA->scanlines() > 285) - ++palCount; - } - myDisplayFormat = (palCount >= 20) ? "PAL" : "NTSC"; - if(myProperties.get(Display_Format) == "AUTO-DETECT") - autodetected = "*"; - - // Don't forget to reset the SC progress bars again -//ROBO: External global settings -// myOSystem->settings().setBool("fastscbios", fastscbios); - stellaMDFNSettings().setBool("fastscbios", fastscbios); - } - myConsoleInfo.DisplayFormat = myDisplayFormat + autodetected; - - // Set up the correct properties used when toggling format - // Note that this can be overridden if a format is forced - // For example, if a PAL ROM is forced to be NTSC, it will use NTSC-like - // properties (60Hz, 262 scanlines, etc) and cycle between NTSC-like modes - // The TIA will self-adjust the framerate if necessary - - // TODO - query these values directly from the TIA if value is 'AUTO' - uInt32 ystart = atoi(myProperties.get(Display_YStart).c_str()); - if(ystart < 0) ystart = 0; - else if(ystart > 64) ystart = 64; - uInt32 height = atoi(myProperties.get(Display_Height).c_str()); - if(height < 210) height = 210; - else if(height > 256) height = 256; - - if(myDisplayFormat == "NTSC" || myDisplayFormat == "PAL60" || - myDisplayFormat == "SECAM60") - { - // Assume we've got ~262 scanlines (NTSC-like format) - myFramerate = 60.0; - myConsoleInfo.InitialFrameRate = "60"; - } - else - { - // Assume we've got ~312 scanlines (PAL-like format) - myFramerate = 50.0; - myConsoleInfo.InitialFrameRate = "50"; - - // PAL ROMs normally need at least 250 lines - height = BSPF_max(height, 250u); - } - - // Make sure these values fit within the bounds of the desktop - // If not, attempt to center vertically -//ROBO: Fixed size -/* if(height <= myOSystem->desktopHeight()) - { - myTIA->setYStart(ystart); - myTIA->setHeight(height); - } - else - { - ystart += height - myOSystem->desktopHeight(); - ystart = BSPF_min(ystart, 64u); - height = myOSystem->desktopHeight(); - myTIA->setYStart(ystart); - myTIA->setHeight(height); - }*/ - - myTIA->setYStart(ystart); - myTIA->setHeight(height); - - -//ROBO: Send a palette, whoever was supposed to do this is gone now - setPalette(stellaMDFNSettings().getString("palette")); - - const string& md5 = myProperties.get(Cartridge_MD5); - - // Add the real controllers for this system - setControllers(md5); - - // Bumper Bash always requires all 4 directions - // Other ROMs can use it if the setting is enabled -//ROBO: TODO: No EventHandler... -/* bool joyallow4 = md5 == "aa1c41f86ec44c0a44eb64c332ce08af" || - md5 == "1bf503c724001b09be79c515ecfcbd03" || - myOSystem->settings().getBool("joyallow4"); - myOSystem->eventHandler().allowAllDirections(joyallow4);*/ - - // Reset the system to its power-on state - mySystem->reset(); - - // Finally, add remaining info about the console - myConsoleInfo.CartName = myProperties.get(Cartridge_Name); - myConsoleInfo.CartMD5 = myProperties.get(Cartridge_MD5); - myConsoleInfo.Control0 = myControllers[0]->about(); - myConsoleInfo.Control1 = myControllers[1]->about(); - myConsoleInfo.BankSwitch = cart->about(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Console::~Console() -{ -//ROBO: Delete myEvent - delete myEvent; - - delete mySystem; - delete mySwitches; - delete myControllers[0]; - delete myControllers[1]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Console::save(Serializer& out) const -{ - try - { - // First save state for the system - if(!mySystem->save(out)) - return false; - - // Now save the console switches - if(!mySwitches->save(out)) - return false; - } - catch(const char* msg) - { - cerr << "ERROR: Console::save" << endl << " " << msg << endl; - return false; - } - - return true; // success -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Console::load(Serializer& in) -{ - try - { - // First load state for the system - if(!mySystem->load(in)) - return false; - - // Then load the console switches - if(!mySwitches->load(in)) - return false; - } - catch(const char* msg) - { - cerr << "ERROR: Console::load" << endl << " " << msg << endl; - return false; - } - - return true; // success -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::toggleFormat() -{ - string format, message; - - if(myDisplayFormat.compare(0, 4, "NTSC") == 0) - { - if(myFramerate > 55.0) - { - format = "PAL60"; - message = "PAL palette (PAL60)"; - } - else - { - format = "PAL"; - message = "PAL palette (PAL)"; - } - } - else if(myDisplayFormat.compare(0, 3, "PAL") == 0) - { - if(myFramerate > 55.0) - { - format = "SECAM"; - message = "SECAM palette (SECAM60)"; - } - else - { - format = "SECAM"; - message = "SECAM palette (SECAM)"; - } - } - else if(myDisplayFormat.compare(0, 5, "SECAM") == 0) - { - if(myFramerate > 55.0) - { - format = "NTSC"; - message = "NTSC palette (NTSC)"; - } - else - { - format = "NTSC50"; - message = "NTSC palette (NTSC50)"; - } - } - - myDisplayFormat = format; - myProperties.set(Display_Format, myDisplayFormat); -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage(message); -//ROBO: External global settings -// setPalette(myOSystem->settings().getString("palette")); - setPalette(stellaMDFNSettings().getString("palette")); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::toggleColorLoss() -{ -//ROBO: Global settings -// bool colorloss = !myOSystem->settings().getBool("colorloss"); -// myOSystem->settings().setBool("colorloss", colorloss); - bool colorloss = !stellaMDFNSettings().getBool("colorloss"); - stellaMDFNSettings().setBool("colorloss", colorloss); - myTIA->enableColorLoss(colorloss); - -//ROBO: No Framebuffer Messages -// string message = string("PAL color-loss ") + -// (colorloss ? "enabled" : "disabled"); -// myOSystem->frameBuffer().showMessage(message); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::togglePalette() -{ - string palette, message; -//ROBO: External settings -// palette = myOSystem->settings().getString("palette"); - palette = stellaMDFNSettings().getString("palette"); - - if(palette == "standard") // switch to z26 - { - palette = "z26"; - message = "Z26 palette"; - } - else if(palette == "z26") // switch to user or standard - { - // If we have a user-defined palette, it will come next in - // the sequence; otherwise loop back to the standard one - if(myUserPaletteDefined) - { - palette = "user"; - message = "User-defined palette"; - } - else - { - palette = "standard"; - message = "Standard Stella palette"; - } - } - else if(palette == "user") // switch to standard - { - palette = "standard"; - message = "Standard Stella palette"; - } - else // switch to standard mode if we get this far - { - palette = "standard"; - message = "Standard Stella palette"; - } - -//ROBO: External settings -// myOSystem->settings().setString("palette", palette); - stellaMDFNSettings().setString("palette", palette); -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage(message); - - setPalette(palette); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//ROBO: Function to receive palette -extern void stellaMDFNSetPalette(const uInt32* palette); - -void Console::setPalette(const string& type) -{ - // Look at all the palettes, since we don't know which one is - // currently active - uInt32* palettes[3][3] = { - { &ourNTSCPalette[0], &ourPALPalette[0], &ourSECAMPalette[0] }, - { &ourNTSCPaletteZ26[0], &ourPALPaletteZ26[0], &ourSECAMPaletteZ26[0] }, - { 0, 0, 0 } - }; - if(myUserPaletteDefined) - { - palettes[2][0] = &ourUserNTSCPalette[0]; - palettes[2][1] = &ourUserPALPalette[0]; - palettes[2][2] = &ourUserSECAMPalette[0]; - } - - // See which format we should be using - int paletteNum = 0; - if(type == "standard") - paletteNum = 0; - else if(type == "z26") - paletteNum = 1; - else if(type == "user" && myUserPaletteDefined) - paletteNum = 2; - - // Now consider the current display format - const uInt32* palette = - (myDisplayFormat.compare(0, 3, "PAL") == 0) ? palettes[paletteNum][1] : - (myDisplayFormat.compare(0, 5, "SECAM") == 0) ? palettes[paletteNum][2] : - palettes[paletteNum][0]; - -//ROBO: Send palette to custom function -// myOSystem->frameBuffer().setTIAPalette(palette); - stellaMDFNSetPalette(palette); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::togglePhosphor() -{ - const string& phosphor = myProperties.get(Display_Phosphor); - int blend = atoi(myProperties.get(Display_PPBlend).c_str()); - bool enable; - if(phosphor == "YES") - { - myProperties.set(Display_Phosphor, "No"); - enable = false; -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("Phosphor effect disabled"); - } - else - { - myProperties.set(Display_Phosphor, "Yes"); - enable = true; -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("Phosphor effect enabled"); - } - -//ROBO TODO: No framebuffer -// myOSystem->frameBuffer().enablePhosphor(enable, blend); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::setProperties(const Properties& props) -{ - myProperties = props; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//ROBO TODO: Function not needed? -/*FBInitStatus Console::initializeVideo(bool full) -{ - FBInitStatus fbstatus = kSuccess; - - if(full) - { - const string& title = string("Stella ") + STELLA_VERSION + - ": \"" + myProperties.get(Cartridge_Name) + "\""; - fbstatus = myOSystem->frameBuffer().initialize(title, - myTIA->width() << 1, myTIA->height()); - if(fbstatus != kSuccess) - return fbstatus; - - myOSystem->frameBuffer().showFrameStats(myOSystem->settings().getBool("stats")); - setColorLossPalette(); - } - - bool enable = myProperties.get(Display_Phosphor) == "YES"; - int blend = atoi(myProperties.get(Display_PPBlend).c_str()); - myOSystem->frameBuffer().enablePhosphor(enable, blend); - setPalette(myOSystem->settings().getString("palette")); - - // Set the correct framerate based on the format of the ROM - // This can be overridden by changing the framerate in the - // VideoDialog box or on the commandline, but it can't be saved - // (ie, framerate is now determined based on number of scanlines). - int framerate = myOSystem->settings().getInt("framerate"); - if(framerate > 0) myFramerate = float(framerate); - myOSystem->setFramerate(myFramerate); - - // Make sure auto-frame calculation is only enabled when necessary - myTIA->enableAutoFrame(framerate <= 0); - - return fbstatus; -}*/ - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::initializeAudio() -{ -//ROBO TODO: Dummied function -/* // Initialize the sound interface. - // The # of channels can be overridden in the AudioDialog box or on - // the commandline, but it can't be saved. - int framerate = myOSystem->settings().getInt("framerate"); - if(framerate > 0) myFramerate = float(framerate); - const string& sound = myProperties.get(Cartridge_Sound); - uInt32 channels = (sound == "STEREO" ? 2 : 1); - - myOSystem->sound().close(); - myOSystem->sound().setChannels(channels); - myOSystem->sound().setFrameRate(myFramerate); - myOSystem->sound().open(); - - // Make sure auto-frame calculation is only enabled when necessary - myTIA->enableAutoFrame(framerate <= 0);*/ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/* Original frying research and code by Fred Quimby. - I've tried the following variations on this code: - - Both OR and Exclusive OR instead of AND. This generally crashes the game - without ever giving us realistic "fried" effects. - - Loop only over the RIOT RAM. This still gave us frying-like effects, but - it seemed harder to duplicate most effects. I have no idea why, but - munging the TIA regs seems to have some effect (I'd think it wouldn't). - - Fred says he also tried mangling the PC and registers, but usually it'd just - crash the game (e.g. black screen, no way out of it). - - It's definitely easier to get some effects (e.g. 255 lives in Battlezone) - with this code than it is on a real console. My guess is that most "good" - frying effects come from a RIOT location getting cleared to 0. Fred's - code is more likely to accomplish this than frying a real console is... - - Until someone comes up with a more accurate way to emulate frying, I'm - leaving this as Fred posted it. -- B. -*/ -void Console::fry() const -{ - for (int ZPmem=0; ZPmem<0x100; ZPmem += rand() % 4) - mySystem->poke(ZPmem, mySystem->peek(ZPmem) & (uInt8)rand() % 256); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::changeYStart(int direction) -{ - uInt32 ystart = myTIA->ystart(); - - if(direction == +1) // increase YStart - { - ystart++; - if(ystart > 64) - { -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("YStart at maximum"); - return; - } - } - else if(direction == -1) // decrease YStart - { - ystart--; - if(ystart < 0) - { -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("YStart at minimum"); - return; - } - } - else - return; - - myTIA->setYStart(ystart); - myTIA->frameReset(); -//ROBO TODO: No Framebuffer -// myOSystem->frameBuffer().refresh(); - - ostringstream val; - val << ystart; -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("YStart " + val.str()); - myProperties.set(Display_YStart, val.str()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::changeHeight(int direction) -{ - uInt32 height = myTIA->height(); - - if(direction == +1) // increase Height - { - height++; -//ROBO: No OSystem -// if(height > 256 || height > myOSystem->desktopHeight()) - if(height > 256) - { -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("Height at maximum"); - return; - } - } - else if(direction == -1) // decrease Height - { - height--; - if(height < 210) - { -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("Height at minimum"); - return; - } - } - else - return; - - myTIA->setHeight(height); - myTIA->frameReset(); -//ROBO TODO: video change -// initializeVideo(); // takes care of refreshing the screen - - ostringstream val; - val << height; -//ROBO: No FrameBuffer Messages -// myOSystem->frameBuffer().showMessage("Height " + val.str()); - myProperties.set(Display_Height, val.str()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::setControllers(const string& rommd5) -{ - delete myControllers[0]; - delete myControllers[1]; - - // Setup the controllers based on properties - const string& left = myProperties.get(Controller_Left); - const string& right = myProperties.get(Controller_Right); - - // Swap the ports if necessary - int leftPort, rightPort; - if(myProperties.get(Console_SwapPorts) == "NO") - { - leftPort = 0; rightPort = 1; - } - else - { - leftPort = 1; rightPort = 0; - } - - // Also check if we should swap the paddles plugged into a jack - bool swapPaddles = myProperties.get(Controller_SwapPaddles) == "YES"; - // Set default controller for mouse - Controller::setMouseIsController(0); - - // Construct left controller - if(left == "BOOSTERGRIP") - { - myControllers[leftPort] = new BoosterGrip(Controller::Left, *myEvent, *mySystem); - } - else if(left == "DRIVING") - { - myControllers[leftPort] = new Driving(Controller::Left, *myEvent, *mySystem); - } - else if((left == "KEYBOARD") || (left == "KEYPAD")) - { - myControllers[leftPort] = new Keyboard(Controller::Left, *myEvent, *mySystem); - } - else if(BSPF_startsWithIgnoreCase(left, "PADDLES")) - { - Controller::setMouseIsController(swapPaddles ? 1 : 0); - bool swapAxis = false, swapDir = false; - if(left == "PADDLES_IAXIS") - swapAxis = true; - else if(left == "PADDLES_IDIR") - swapDir = true; - else if(left == "PADDLES_IAXDR") - swapAxis = swapDir = true; - myControllers[leftPort] = - new Paddles(Controller::Left, *myEvent, *mySystem, - swapPaddles, swapAxis, swapDir); - } - else if(left == "TRACKBALL22") - { - myControllers[leftPort] = new TrackBall(Controller::Left, *myEvent, *mySystem, - Controller::TrackBall22); - } - else if(left == "TRACKBALL80") - { - myControllers[leftPort] = new TrackBall(Controller::Left, *myEvent, *mySystem, - Controller::TrackBall80); - } - else if(left == "AMIGAMOUSE") - { - myControllers[leftPort] = new TrackBall(Controller::Left, *myEvent, *mySystem, - Controller::AmigaMouse); - } - else if(left == "GENESIS") - { - myControllers[leftPort] = new Genesis(Controller::Left, *myEvent, *mySystem); - } - else - { - myControllers[leftPort] = new Joystick(Controller::Left, *myEvent, *mySystem); - } - - // Construct right controller - if(right == "BOOSTERGRIP") - { - myControllers[rightPort] = new BoosterGrip(Controller::Right, *myEvent, *mySystem); - } - else if(right == "DRIVING") - { - myControllers[rightPort] = new Driving(Controller::Right, *myEvent, *mySystem); - } - else if((right == "KEYBOARD") || (right == "KEYPAD")) - { - myControllers[rightPort] = new Keyboard(Controller::Right, *myEvent, *mySystem); - } - else if(BSPF_startsWithIgnoreCase(right, "PADDLES")) - { - bool swapAxis = false, swapDir = false; - if(right == "PADDLES_IAXIS") - swapAxis = true; - else if(right == "PADDLES_IDIR") - swapDir = true; - else if(right == "PADDLES_IAXDR") - swapAxis = swapDir = true; - myControllers[rightPort] = - new Paddles(Controller::Right, *myEvent, *mySystem, - swapPaddles, swapAxis, swapDir); - } - else if(right == "TRACKBALL22") - { - myControllers[rightPort] = new TrackBall(Controller::Left, *myEvent, *mySystem, - Controller::TrackBall22); - } - else if(right == "TRACKBALL80") - { - myControllers[rightPort] = new TrackBall(Controller::Left, *myEvent, *mySystem, - Controller::TrackBall80); - } - else if(right == "AMIGAMOUSE") - { - myControllers[rightPort] = new TrackBall(Controller::Left, *myEvent, *mySystem, - Controller::AmigaMouse); - } - else if(right == "ATARIVOX") - { -//ROBO TODO: No OSystem, use medanfen paths -/* const string& eepromfile = myOSystem->eepromDir() + "atarivox_eeprom.dat"; - myControllers[rightPort] = new AtariVox(Controller::Right, *myEvent, - *mySystem, myOSystem->serialPort(), - myOSystem->settings().getString("avoxport"), eepromfile);*/ - } - else if(right == "SAVEKEY") - { -//ROBO TODO: No OSystem, use medanfen paths -/* const string& eepromfile = myOSystem->eepromDir() + "savekey_eeprom.dat"; - myControllers[rightPort] = new SaveKey(Controller::Right, *myEvent, *mySystem, - eepromfile);*/ - } - else if(right == "KIDVID") - { - myControllers[rightPort] = new KidVid(Controller::Right, *myEvent, *mySystem, rommd5); - } - else if(right == "GENESIS") - { - myControllers[rightPort] = new Genesis(Controller::Right, *myEvent, *mySystem); - } - else - { - myControllers[rightPort] = new Joystick(Controller::Right, *myEvent, *mySystem); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::loadUserPalette() -{ -//ROBO TODO: Allow definintion thru mednafen setting -// const string& palette = myOSystem->paletteFile(); - const string& palette = "ERRORS"; - ifstream in(palette.c_str(), ios::binary); - if(!in) - return; - - // Make sure the contains enough data for the NTSC, PAL and SECAM palettes - // This means 128 colours each for NTSC and PAL, at 3 bytes per pixel - // and 8 colours for SECAM at 3 bytes per pixel - in.seekg(0, ios::end); - streampos length = in.tellg(); - in.seekg(0, ios::beg); - if(length < 128 * 3 * 2 + 8 * 3) - { - in.close(); - cerr << "ERROR: invalid palette file " << palette << endl; - return; - } - - // Now that we have valid data, create the user-defined palettes - uInt8 pixbuf[3]; // Temporary buffer for one 24-bit pixel - - for(int i = 0; i < 128; i++) // NTSC palette - { - in.read((char*)pixbuf, 3); - uInt32 pixel = ((int)pixbuf[0] << 16) + ((int)pixbuf[1] << 8) + (int)pixbuf[2]; - ourUserNTSCPalette[(i<<1)] = pixel; - } - for(int i = 0; i < 128; i++) // PAL palette - { - in.read((char*)pixbuf, 3); - uInt32 pixel = ((int)pixbuf[0] << 16) + ((int)pixbuf[1] << 8) + (int)pixbuf[2]; - ourUserPALPalette[(i<<1)] = pixel; - } - - uInt32 secam[16]; // All 8 24-bit pixels, plus 8 colorloss pixels - for(int i = 0; i < 8; i++) // SECAM palette - { - in.read((char*)pixbuf, 3); - uInt32 pixel = ((int)pixbuf[0] << 16) + ((int)pixbuf[1] << 8) + (int)pixbuf[2]; - secam[(i<<1)] = pixel; - secam[(i<<1)+1] = 0; - } - uInt32* ptr = ourUserSECAMPalette; - for(int i = 0; i < 16; ++i) - { - uInt32* s = secam; - for(int j = 0; j < 16; ++j) - *ptr++ = *s++; - } - - in.close(); - myUserPaletteDefined = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::setColorLossPalette() -{ - // Look at all the palettes, since we don't know which one is - // currently active - uInt32* palette[9] = { - &ourNTSCPalette[0], &ourPALPalette[0], &ourSECAMPalette[0], - &ourNTSCPaletteZ26[0], &ourPALPaletteZ26[0], &ourSECAMPaletteZ26[0], - 0, 0, 0 - }; - if(myUserPaletteDefined) - { - palette[6] = &ourUserNTSCPalette[0]; - palette[7] = &ourUserPALPalette[0]; - palette[8] = &ourUserSECAMPalette[0]; - } - - for(int i = 0; i < 9; ++i) - { - if(palette[i] == 0) - continue; - - // Fill the odd numbered palette entries with gray values (calculated - // using the standard RGB -> grayscale conversion formula) - for(int j = 0; j < 128; ++j) - { - uInt32 pixel = palette[i][(j<<1)]; - uInt8 r = (pixel >> 16) & 0xff; - uInt8 g = (pixel >> 8) & 0xff; - uInt8 b = (pixel >> 0) & 0xff; - uInt8 sum = (uInt8) (((float)r * 0.2989) + - ((float)g * 0.5870) + - ((float)b * 0.1140)); - palette[i][(j<<1)+1] = (sum << 16) + (sum << 8) + sum; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::setFramerate(float framerate) -{ - myFramerate = framerate; -//ROBO TODO: No OSYSTEM -// myOSystem->setFramerate(framerate); -// myOSystem->sound().setFrameRate(framerate); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::toggleTIABit(TIABit bit, const string& bitname, bool show) const -{ - bool result = myTIA->toggleBit(bit); -//ROBO: No FrameBuffer Messages -// string message = bitname + (result ? " enabled" : " disabled"); -// myOSystem->frameBuffer().showMessage(message); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::toggleTIACollision(TIABit bit, const string& bitname, bool show) const -{ - bool result = myTIA->toggleCollision(bit); -//ROBO: No FrameBuffer Messages -// string message = bitname + (result ? " collision enabled" : " collision disabled"); -// myOSystem->frameBuffer().showMessage(message); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::toggleHMOVE() const -{ -//ROBO: No FrameBuffer Messages -// if(myTIA->toggleHMOVEBlank()) -// myOSystem->frameBuffer().showMessage("HMOVE blanking enabled"); -// else -// myOSystem->frameBuffer().showMessage("HMOVE blanking disabled"); - myTIA->toggleHMOVEBlank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::enableBits(bool enable) const -{ - myTIA->enableBits(enable); -//ROBO: No FrameBuffer Messages -// string message = string("TIA bits") + (enable ? " enabled" : " disabled"); -// myOSystem->frameBuffer().showMessage(message); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::enableCollisions(bool enable) const -{ - myTIA->enableCollisions(enable); -//ROBO: No FrameBuffer Messages -// string message = string("TIA collisions") + (enable ? " enabled" : " disabled"); -// myOSystem->frameBuffer().showMessage(message); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::toggleFixedColors() const -{ -//ROBO: No FrameBuffer Messages -// if(myTIA->toggleFixedColors()) -// myOSystem->frameBuffer().showMessage("Fixed debug colors enabled"); -// else -// myOSystem->frameBuffer().showMessage("Fixed debug colors disabled"); - myTIA->toggleFixedColors(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourNTSCPalette[256] = { - 0x000000, 0, 0x4a4a4a, 0, 0x6f6f6f, 0, 0x8e8e8e, 0, - 0xaaaaaa, 0, 0xc0c0c0, 0, 0xd6d6d6, 0, 0xececec, 0, - 0x484800, 0, 0x69690f, 0, 0x86861d, 0, 0xa2a22a, 0, - 0xbbbb35, 0, 0xd2d240, 0, 0xe8e84a, 0, 0xfcfc54, 0, - 0x7c2c00, 0, 0x904811, 0, 0xa26221, 0, 0xb47a30, 0, - 0xc3903d, 0, 0xd2a44a, 0, 0xdfb755, 0, 0xecc860, 0, - 0x901c00, 0, 0xa33915, 0, 0xb55328, 0, 0xc66c3a, 0, - 0xd5824a, 0, 0xe39759, 0, 0xf0aa67, 0, 0xfcbc74, 0, - 0x940000, 0, 0xa71a1a, 0, 0xb83232, 0, 0xc84848, 0, - 0xd65c5c, 0, 0xe46f6f, 0, 0xf08080, 0, 0xfc9090, 0, - 0x840064, 0, 0x97197a, 0, 0xa8308f, 0, 0xb846a2, 0, - 0xc659b3, 0, 0xd46cc3, 0, 0xe07cd2, 0, 0xec8ce0, 0, - 0x500084, 0, 0x68199a, 0, 0x7d30ad, 0, 0x9246c0, 0, - 0xa459d0, 0, 0xb56ce0, 0, 0xc57cee, 0, 0xd48cfc, 0, - 0x140090, 0, 0x331aa3, 0, 0x4e32b5, 0, 0x6848c6, 0, - 0x7f5cd5, 0, 0x956fe3, 0, 0xa980f0, 0, 0xbc90fc, 0, - 0x000094, 0, 0x181aa7, 0, 0x2d32b8, 0, 0x4248c8, 0, - 0x545cd6, 0, 0x656fe4, 0, 0x7580f0, 0, 0x8490fc, 0, - 0x001c88, 0, 0x183b9d, 0, 0x2d57b0, 0, 0x4272c2, 0, - 0x548ad2, 0, 0x65a0e1, 0, 0x75b5ef, 0, 0x84c8fc, 0, - 0x003064, 0, 0x185080, 0, 0x2d6d98, 0, 0x4288b0, 0, - 0x54a0c5, 0, 0x65b7d9, 0, 0x75cceb, 0, 0x84e0fc, 0, - 0x004030, 0, 0x18624e, 0, 0x2d8169, 0, 0x429e82, 0, - 0x54b899, 0, 0x65d1ae, 0, 0x75e7c2, 0, 0x84fcd4, 0, - 0x004400, 0, 0x1a661a, 0, 0x328432, 0, 0x48a048, 0, - 0x5cba5c, 0, 0x6fd26f, 0, 0x80e880, 0, 0x90fc90, 0, - 0x143c00, 0, 0x355f18, 0, 0x527e2d, 0, 0x6e9c42, 0, - 0x87b754, 0, 0x9ed065, 0, 0xb4e775, 0, 0xc8fc84, 0, - 0x303800, 0, 0x505916, 0, 0x6d762b, 0, 0x88923e, 0, - 0xa0ab4f, 0, 0xb7c25f, 0, 0xccd86e, 0, 0xe0ec7c, 0, - 0x482c00, 0, 0x694d14, 0, 0x866a26, 0, 0xa28638, 0, - 0xbb9f47, 0, 0xd2b656, 0, 0xe8cc63, 0, 0xfce070, 0 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourPALPalette[256] = { - 0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0, - 0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0, - 0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0, - 0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0, - 0x805800, 0, 0x96711a, 0, 0xab8732, 0, 0xbe9c48, 0, - 0xcfaf5c, 0, 0xdfc06f, 0, 0xeed180, 0, 0xfce090, 0, - 0x445c00, 0, 0x5e791a, 0, 0x769332, 0, 0x8cac48, 0, - 0xa0c25c, 0, 0xb3d76f, 0, 0xc4ea80, 0, 0xd4fc90, 0, - 0x703400, 0, 0x89511a, 0, 0xa06b32, 0, 0xb68448, 0, - 0xc99a5c, 0, 0xdcaf6f, 0, 0xecc280, 0, 0xfcd490, 0, - 0x006414, 0, 0x1a8035, 0, 0x329852, 0, 0x48b06e, 0, - 0x5cc587, 0, 0x6fd99e, 0, 0x80ebb4, 0, 0x90fcc8, 0, - 0x700014, 0, 0x891a35, 0, 0xa03252, 0, 0xb6486e, 0, - 0xc95c87, 0, 0xdc6f9e, 0, 0xec80b4, 0, 0xfc90c8, 0, - 0x005c5c, 0, 0x1a7676, 0, 0x328e8e, 0, 0x48a4a4, 0, - 0x5cb8b8, 0, 0x6fcbcb, 0, 0x80dcdc, 0, 0x90ecec, 0, - 0x70005c, 0, 0x841a74, 0, 0x963289, 0, 0xa8489e, 0, - 0xb75cb0, 0, 0xc66fc1, 0, 0xd380d1, 0, 0xe090e0, 0, - 0x003c70, 0, 0x195a89, 0, 0x2f75a0, 0, 0x448eb6, 0, - 0x57a5c9, 0, 0x68badc, 0, 0x79ceec, 0, 0x88e0fc, 0, - 0x580070, 0, 0x6e1a89, 0, 0x8332a0, 0, 0x9648b6, 0, - 0xa75cc9, 0, 0xb76fdc, 0, 0xc680ec, 0, 0xd490fc, 0, - 0x002070, 0, 0x193f89, 0, 0x2f5aa0, 0, 0x4474b6, 0, - 0x578bc9, 0, 0x68a1dc, 0, 0x79b5ec, 0, 0x88c8fc, 0, - 0x340080, 0, 0x4a1a96, 0, 0x5f32ab, 0, 0x7248be, 0, - 0x835ccf, 0, 0x936fdf, 0, 0xa280ee, 0, 0xb090fc, 0, - 0x000088, 0, 0x1a1a9d, 0, 0x3232b0, 0, 0x4848c2, 0, - 0x5c5cd2, 0, 0x6f6fe1, 0, 0x8080ef, 0, 0x9090fc, 0, - 0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0, - 0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0, - 0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0, - 0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourSECAMPalette[256] = { - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff50ff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourNTSCPaletteZ26[256] = { - 0x000000, 0, 0x505050, 0, 0x646464, 0, 0x787878, 0, - 0x8c8c8c, 0, 0xa0a0a0, 0, 0xb4b4b4, 0, 0xc8c8c8, 0, - 0x445400, 0, 0x586800, 0, 0x6c7c00, 0, 0x809000, 0, - 0x94a414, 0, 0xa8b828, 0, 0xbccc3c, 0, 0xd0e050, 0, - 0x673900, 0, 0x7b4d00, 0, 0x8f6100, 0, 0xa37513, 0, - 0xb78927, 0, 0xcb9d3b, 0, 0xdfb14f, 0, 0xf3c563, 0, - 0x7b2504, 0, 0x8f3918, 0, 0xa34d2c, 0, 0xb76140, 0, - 0xcb7554, 0, 0xdf8968, 0, 0xf39d7c, 0, 0xffb190, 0, - 0x7d122c, 0, 0x912640, 0, 0xa53a54, 0, 0xb94e68, 0, - 0xcd627c, 0, 0xe17690, 0, 0xf58aa4, 0, 0xff9eb8, 0, - 0x730871, 0, 0x871c85, 0, 0x9b3099, 0, 0xaf44ad, 0, - 0xc358c1, 0, 0xd76cd5, 0, 0xeb80e9, 0, 0xff94fd, 0, - 0x5d0b92, 0, 0x711fa6, 0, 0x8533ba, 0, 0x9947ce, 0, - 0xad5be2, 0, 0xc16ff6, 0, 0xd583ff, 0, 0xe997ff, 0, - 0x401599, 0, 0x5429ad, 0, 0x683dc1, 0, 0x7c51d5, 0, - 0x9065e9, 0, 0xa479fd, 0, 0xb88dff, 0, 0xcca1ff, 0, - 0x252593, 0, 0x3939a7, 0, 0x4d4dbb, 0, 0x6161cf, 0, - 0x7575e3, 0, 0x8989f7, 0, 0x9d9dff, 0, 0xb1b1ff, 0, - 0x0f3480, 0, 0x234894, 0, 0x375ca8, 0, 0x4b70bc, 0, - 0x5f84d0, 0, 0x7398e4, 0, 0x87acf8, 0, 0x9bc0ff, 0, - 0x04425a, 0, 0x18566e, 0, 0x2c6a82, 0, 0x407e96, 0, - 0x5492aa, 0, 0x68a6be, 0, 0x7cbad2, 0, 0x90cee6, 0, - 0x044f30, 0, 0x186344, 0, 0x2c7758, 0, 0x408b6c, 0, - 0x549f80, 0, 0x68b394, 0, 0x7cc7a8, 0, 0x90dbbc, 0, - 0x0f550a, 0, 0x23691e, 0, 0x377d32, 0, 0x4b9146, 0, - 0x5fa55a, 0, 0x73b96e, 0, 0x87cd82, 0, 0x9be196, 0, - 0x1f5100, 0, 0x336505, 0, 0x477919, 0, 0x5b8d2d, 0, - 0x6fa141, 0, 0x83b555, 0, 0x97c969, 0, 0xabdd7d, 0, - 0x344600, 0, 0x485a00, 0, 0x5c6e14, 0, 0x708228, 0, - 0x84963c, 0, 0x98aa50, 0, 0xacbe64, 0, 0xc0d278, 0, - 0x463e00, 0, 0x5a5205, 0, 0x6e6619, 0, 0x827a2d, 0, - 0x968e41, 0, 0xaaa255, 0, 0xbeb669, 0, 0xd2ca7d, 0 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourPALPaletteZ26[256] = { - 0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0, - 0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0, - 0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0, - 0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0, - 0x533a00, 0, 0x674e00, 0, 0x7b6203, 0, 0x8f7617, 0, - 0xa38a2b, 0, 0xb79e3f, 0, 0xcbb253, 0, 0xdfc667, 0, - 0x1b5800, 0, 0x2f6c00, 0, 0x438001, 0, 0x579415, 0, - 0x6ba829, 0, 0x7fbc3d, 0, 0x93d051, 0, 0xa7e465, 0, - 0x6a2900, 0, 0x7e3d12, 0, 0x925126, 0, 0xa6653a, 0, - 0xba794e, 0, 0xce8d62, 0, 0xe2a176, 0, 0xf6b58a, 0, - 0x075b00, 0, 0x1b6f11, 0, 0x2f8325, 0, 0x439739, 0, - 0x57ab4d, 0, 0x6bbf61, 0, 0x7fd375, 0, 0x93e789, 0, - 0x741b2f, 0, 0x882f43, 0, 0x9c4357, 0, 0xb0576b, 0, - 0xc46b7f, 0, 0xd87f93, 0, 0xec93a7, 0, 0xffa7bb, 0, - 0x00572e, 0, 0x106b42, 0, 0x247f56, 0, 0x38936a, 0, - 0x4ca77e, 0, 0x60bb92, 0, 0x74cfa6, 0, 0x88e3ba, 0, - 0x6d165f, 0, 0x812a73, 0, 0x953e87, 0, 0xa9529b, 0, - 0xbd66af, 0, 0xd17ac3, 0, 0xe58ed7, 0, 0xf9a2eb, 0, - 0x014c5e, 0, 0x156072, 0, 0x297486, 0, 0x3d889a, 0, - 0x519cae, 0, 0x65b0c2, 0, 0x79c4d6, 0, 0x8dd8ea, 0, - 0x5f1588, 0, 0x73299c, 0, 0x873db0, 0, 0x9b51c4, 0, - 0xaf65d8, 0, 0xc379ec, 0, 0xd78dff, 0, 0xeba1ff, 0, - 0x123b87, 0, 0x264f9b, 0, 0x3a63af, 0, 0x4e77c3, 0, - 0x628bd7, 0, 0x769feb, 0, 0x8ab3ff, 0, 0x9ec7ff, 0, - 0x451e9d, 0, 0x5932b1, 0, 0x6d46c5, 0, 0x815ad9, 0, - 0x956eed, 0, 0xa982ff, 0, 0xbd96ff, 0, 0xd1aaff, 0, - 0x2a2b9e, 0, 0x3e3fb2, 0, 0x5253c6, 0, 0x6667da, 0, - 0x7a7bee, 0, 0x8e8fff, 0, 0xa2a3ff, 0, 0xb6b7ff, 0, - 0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0, - 0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0, - 0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0, - 0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourSECAMPaletteZ26[256] = { - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0, - 0x000000, 0, 0x2121ff, 0, 0xf03c79, 0, 0xff3cff, 0, - 0x7fff00, 0, 0x7fffff, 0, 0xffff3f, 0, 0xffffff, 0 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourUserNTSCPalette[256] = { 0 }; // filled from external file - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourUserPALPalette[256] = { 0 }; // filled from external file - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Console::ourUserSECAMPalette[256] = { 0 }; // filled from external file - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Console::Console(const Console& console) -//ROBO: No OSystem -// : myOSystem(console.myOSystem) -{ - assert(false); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Console& Console::operator = (const Console&) -{ - assert(false); - - return *this; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Console.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Console.hxx deleted file mode 100644 index f056d7bd7e..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Console.hxx +++ /dev/null @@ -1,380 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Console.hxx 2231 2011-05-10 15:04:19Z stephena $ -//============================================================================ - -#ifndef CONSOLE_HXX -#define CONSOLE_HXX - -class Controller; -class Event; -class Switches; -class System; -class TIA; -class M6532; -class Cartridge; - -#include "bspf.hxx" -#include "Control.hxx" -#include "Props.hxx" -#include "TIATables.hxx" -//ROBO: No FrameBuffer support -//#include "FrameBuffer.hxx" -#include "Serializable.hxx" - -//ROBO: For sound -#include "Sound.hxx" - -/** - Contains detailed info about a console. -*/ -struct ConsoleInfo -{ - string BankSwitch; - string CartName; - string CartMD5; - string Control0; - string Control1; - string DisplayFormat; - string InitialFrameRate; -}; - -/** - This class represents the entire game console. - - @author Bradford W. Mott - @version $Id: Console.hxx 2231 2011-05-10 15:04:19Z stephena $ -*/ -class Console : public Serializable -{ - public: - /** - Create a new console for emulating the specified game using the - given game image and operating system. - - @param osystem The OSystem object to use - @param cart The cartridge to use with this console - @param props The properties for the cartridge - */ -//ROBO: No OSystem support, just Sound - Console(Sound& osystem, Cartridge* cart, const Properties& props); - - /** - Create a new console object by copying another one - - @param console The object to copy - */ - Console(const Console& console); - - /** - Destructor - */ - virtual ~Console(); - - public: - /** - Get the controller plugged into the specified jack - - @return The specified controller - */ - Controller& controller(Controller::Jack jack) const - { - return (jack == Controller::Left) ? *myControllers[0] : *myControllers[1]; - } - - /** - Get the TIA for this console - - @return The TIA - */ - TIA& tia() const { return *myTIA; } - - /** - Get the properties being used by the game - - @return The properties being used by the game - */ - const Properties& properties() const { return myProperties; } - - /** - Get the console switches - - @return The console switches - */ - Switches& switches() const { return *mySwitches; } - - /** - Get the 6502 based system used by the console to emulate the game - - @return The 6502 based system - */ - System& system() const { return *mySystem; } - - /** - Get the cartridge used by the console which contains the ROM code - - @return The cartridge for this console - */ - Cartridge& cartridge() const { return *myCart; } - - /** - Get the 6532 used by the console - - @return The 6532 for this console - */ - M6532& riot() const { return *myRiot; } - - /** - Saves the current state of this console class to the given Serializer. - - @param out The serializer device to save to. - @return The result of the save. True on success, false on failure. - */ - bool save(Serializer& out) const; - - /** - Loads the current state of this console class from the given Serializer. - - @param in The Serializer device to load from. - @return The result of the load. True on success, false on failure. - */ - bool load(Serializer& in); - - /** - Get a descriptor for this console class (used in error checking). - - @return The name of the object - */ - string name() const { return "Console"; } - - /** - Set the properties to those given - - @param The properties to use for the current game - */ - void setProperties(const Properties& props); - - /** - Query detailed information about this console. - */ - const ConsoleInfo& about() const { return myConsoleInfo; } - - public: - /** - Overloaded assignment operator - - @param console The console object to set myself equal to - @return Myself after assignment has taken place - */ - Console& operator = (const Console& console); - - public: - /** - Toggle between NTSC/PAL/SECAM (and variants) display format. - */ - void toggleFormat(); - - /** - Toggle between the available palettes. - */ - void togglePalette(); - - /** - Sets the palette according to the given palette name. - - @param palette The palette to switch to. - */ - void setPalette(const string& palette); - - /** - Toggles phosphor effect. - */ - void togglePhosphor(); - - /** - Toggles the PAL color-loss effect. - */ - void toggleColorLoss(); - - /** - Initialize the video subsystem wrt this class. - This is required for changing window size, title, etc. - - @param full Whether we want a full initialization, - or only reset certain attributes. - - @return The results from FrameBuffer::initialize() - */ -//ROBO: Function isn't needed -// FBInitStatus initializeVideo(bool full = true); - - /** - Initialize the audio subsystem wrt this class. - This is required any time the sound settings change. - */ - void initializeAudio(); - - /** - "Fry" the Atari (mangle memory/TIA contents) - */ - void fry() const; - - /** - Change the "Display.YStart" variable. - - @param direction +1 indicates increase, -1 indicates decrease. - */ - void changeYStart(int direction); - - /** - Change the "Display.Height" variable. - - @param direction +1 indicates increase, -1 indicates decrease. - */ - void changeHeight(int direction); - - /** - Sets the framerate of the console, which in turn communicates - this to all applicable subsystems. - */ - void setFramerate(float framerate); - - /** - Returns the framerate based on a number of factors - (whether 'framerate' is set, what display format is in use, etc) - */ - float getFramerate() const { return myFramerate; } - - /** - Toggles the TIA bit specified in the method name. - */ - void toggleP0Bit() const { toggleTIABit(P0Bit, "P0"); } - void toggleP1Bit() const { toggleTIABit(P1Bit, "P1"); } - void toggleM0Bit() const { toggleTIABit(M0Bit, "M0"); } - void toggleM1Bit() const { toggleTIABit(M1Bit, "M1"); } - void toggleBLBit() const { toggleTIABit(BLBit, "BL"); } - void togglePFBit() const { toggleTIABit(PFBit, "PF"); } - void toggleHMOVE() const; - void enableBits(bool enable) const; - - /** - Toggles the TIA collisions specified in the method name. - */ - void toggleP0Collision() const { toggleTIACollision(P0Bit, "P0"); } - void toggleP1Collision() const { toggleTIACollision(P1Bit, "P1"); } - void toggleM0Collision() const { toggleTIACollision(M0Bit, "M0"); } - void toggleM1Collision() const { toggleTIACollision(M1Bit, "M1"); } - void toggleBLCollision() const { toggleTIACollision(BLBit, "BL"); } - void togglePFCollision() const { toggleTIACollision(PFBit, "PF"); } - void enableCollisions(bool enable) const; - - /** - Toggles the TIA 'fixed debug colors' mode. - */ - void toggleFixedColors() const; - - //ROBO: Get the event - Event& event() {return *myEvent;} - - private: - /** - Adds the left and right controllers to the console. - */ - void setControllers(const string& rommd5); - - /** - Loads a user-defined palette file (from OSystem::paletteFile), filling the - appropriate user-defined palette arrays. - */ - void loadUserPalette(); - - /** - Loads all defined palettes with PAL color-loss data, even those that - normally can't have it enabled (NTSC), since it's also used for - 'greying out' the frame in the debugger. - */ - void setColorLossPalette(); - - /** - Returns a pointer to the palette data for the palette currently defined - by the ROM properties. - */ - const uInt32* getPalette(int direction) const; - - void toggleTIABit(TIABit bit, const string& bitname, bool show = true) const; - void toggleTIACollision(TIABit bit, const string& bitname, bool show = true) const; - - private: - // Pointer to the osystem object -//ROBO: No OSystem -// OSystem* myOSystem; - - // Pointers to the left and right controllers - Controller* myControllers[2]; - - // Pointer to the event object to use - Event* myEvent; - - // Pointer to the TIA object - TIA* myTIA; - - // Properties for the game - Properties myProperties; - - // Pointer to the switches on the front of the console - Switches* mySwitches; - - // Pointer to the 6502 based system being emulated - System* mySystem; - - // Pointer to the Cartridge (the debugger needs it) - Cartridge *myCart; - - // Pointer to the 6532 (aka RIOT) (the debugger needs it) - // A RIOT of my own! (...with apologies to The Clash...) - M6532 *myRiot; - - // The currently defined display format (NTSC/PAL/SECAM) - string myDisplayFormat; - - // The currently defined display framerate - float myFramerate; - - // Indicates whether an external palette was found and - // successfully loaded - bool myUserPaletteDefined; - - // Contains detailed info about this console - ConsoleInfo myConsoleInfo; - - // Table of RGB values for NTSC, PAL and SECAM - static uInt32 ourNTSCPalette[256]; - static uInt32 ourPALPalette[256]; - static uInt32 ourSECAMPalette[256]; - - // Table of RGB values for NTSC, PAL and SECAM - Z26 version - static uInt32 ourNTSCPaletteZ26[256]; - static uInt32 ourPALPaletteZ26[256]; - static uInt32 ourSECAMPaletteZ26[256]; - - // Table of RGB values for NTSC, PAL and SECAM - user-defined - static uInt32 ourUserNTSCPalette[256]; - static uInt32 ourUserPALPalette[256]; - static uInt32 ourUserSECAMPalette[256]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNode.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNode.cpp deleted file mode 100644 index b8f2a58919..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNode.cpp +++ /dev/null @@ -1,156 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: FSNode.cxx 2250 2011-06-09 14:00:30Z stephena $ -// -// Based on code from ScummVM - Scumm Interpreter -// Copyright (C) 2002-2004 The ScummVM project -//============================================================================ - -#include "bspf.hxx" -#include "SharedPtr.hxx" -#include "FSNode.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FilesystemNode::FilesystemNode() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FilesystemNode::FilesystemNode(AbstractFilesystemNode *realNode) - : _realNode(realNode) -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FilesystemNode::FilesystemNode(const string& p) -{ - AbstractFilesystemNode* tmp = 0; - if (p.empty() || p == "." || p == "~") - tmp = AbstractFilesystemNode::makeHomeDirectoryFileNode(); - else - tmp = AbstractFilesystemNode::makeFileNodePath(p); - - _realNode = Common::SharedPtr(tmp); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool FilesystemNode::operator<(const FilesystemNode& node) const -{ - if (isDirectory() != node.isDirectory()) - return isDirectory(); - - return BSPF_strcasecmp(getDisplayName().c_str(), node.getDisplayName().c_str()) < 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool FilesystemNode::exists() const -{ - if (_realNode == 0) - return false; - - return _realNode->exists(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool FilesystemNode::getChildren(FSList& fslist, ListMode mode, bool hidden) const -{ - if (!_realNode || !_realNode->isDirectory()) - return false; - - AbstractFSList tmp; - - if (!_realNode->getChildren(tmp, mode, hidden)) - return false; - - fslist.clear(); - for (AbstractFSList::iterator i = tmp.begin(); i != tmp.end(); ++i) - { - fslist.push_back(FilesystemNode(*i)); - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string FilesystemNode::getDisplayName() const -{ - assert(_realNode); - return _realNode->getDisplayName(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string FilesystemNode::getName() const -{ - assert(_realNode); - return _realNode->getName(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool FilesystemNode::hasParent() const -{ - if (_realNode == 0) - return false; - - return _realNode->getParent() != 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FilesystemNode FilesystemNode::getParent() const -{ - if (_realNode == 0) - return *this; - - AbstractFilesystemNode* node = _realNode->getParent(); - if (node == 0) - return *this; - else - return FilesystemNode(node); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string FilesystemNode::getPath(bool fqn) const -{ - assert(_realNode); - return _realNode->getPath(fqn); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool FilesystemNode::isDirectory() const -{ - if (_realNode == 0) - return false; - - return _realNode->isDirectory(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool FilesystemNode::isReadable() const -{ - if (_realNode == 0) - return false; - - return _realNode->isReadable(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool FilesystemNode::isWritable() const -{ - if (_realNode == 0) - return false; - - return _realNode->isWritable(); -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNode.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNode.hxx deleted file mode 100644 index 0c06a039f2..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNode.hxx +++ /dev/null @@ -1,393 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: FSNode.hxx 2250 2011-06-09 14:00:30Z stephena $ -// -// Based on code from ScummVM - Scumm Interpreter -// Copyright (C) 2002-2004 The ScummVM project -//============================================================================ - -#ifndef FS_NODE_HXX -#define FS_NODE_HXX - -#include - -/* - * The API described in this header is meant to allow for file system browsing in a - * portable fashions. To this ends, multiple or single roots have to be supported - * (compare Unix with a single root, Windows with multiple roots C:, D:, ...). - * - * To this end, we abstract away from paths; implementations can be based on - * paths (and it's left to them whether / or \ or : is the path separator :-); - * but it is also possible to use inodes or vrefs (MacOS 9) or anything else. - * - * NOTE: Backends still have to provide a way to extract a path from a FSIntern - * - * You may ask now: "isn't this cheating? Why do we go through all this when we use - * a path in the end anyway?!?". - * Well, for once as long as we don't provide our own file open/read/write API, we - * still have to use fopen(). Since all our targets already support fopen(), it should - * be possible to get a fopen() compatible string for any file system node. - * - * Secondly, with this abstraction layer, we still avoid a lot of complications based on - * differences in FS roots, different path separators, or even systems with no real - * paths (MacOS 9 doesn't even have the notion of a "current directory"). - * And if we ever want to support devices with no FS in the classical sense (Palm...), - * we can build upon this. - */ - -/* - * TODO - Instead of starting with getRoot(), we should rather add a getDefaultDir() - * call that on Unix might return the current dir or the users home dir... - * i.e. the root dir is usually not the best starting point for browsing. - */ - -#include "Array.hxx" -#include "SharedPtr.hxx" - -class FilesystemNode; -class AbstractFilesystemNode; - -/** - * List of multiple file system nodes. E.g. the contents of a given directory. - * This is subclass instead of just a typedef so that we can use forward - * declarations of it in other places. - */ -class FSList : public Common::Array { }; - -/** - * FilesystemNode provides an abstraction for file paths, allowing for portable - * file system browsing. To this ends, multiple or single roots have to be supported - * (compare Unix with a single root, Windows with multiple roots C:, D:, ...). - * - * To this end, we abstract away from paths; implementations can be based on - * paths (and it's left to them whether / or \ or : is the path separator :-); - * but it is also possible to use inodes or vrefs (MacOS 9) or anything else. - * - * NOTE: Backends still have to provide a way to extract a path from a FSIntern - * - * You may ask now: "isn't this cheating? Why do we go through all this when we use - * a path in the end anyway?!?". - * Well, for once as long as we don't provide our own file open/read/write API, we - * still have to use fopen(). Since all our targets already support fopen(), it should - * be possible to get a fopen() compatible string for any file system node. - * - * Secondly, with this abstraction layer, we still avoid a lot of complications based on - * differences in FS roots, different path separators, or even systems with no real - * paths (MacOS 9 doesn't even have the notion of a "current directory"). - * And if we ever want to support devices with no FS in the classical sense (Palm...), - * we can build upon this. - * - * This class acts as a wrapper around the AbstractFilesystemNode class defined in backends/fs. - */ -class FilesystemNode -{ - public: - /** - * Flag to tell listDir() which kind of files to list. - */ - enum ListMode { - kListFilesOnly = 1, - kListDirectoriesOnly = 2, - kListAll = 3 - }; - - /** - * Create a new pathless FilesystemNode. Since there's no path associated - * with this node, path-related operations (i.e. exists(), isDirectory(), - * getPath()) will always return false or raise an assertion. - */ - FilesystemNode(); - - /** - * Create a new FilesystemNode referring to the specified path. This is - * the counterpart to the path() method. - * - * If path is empty or equals "." or "~", then a node representing the - * "home directory" will be created. If that is not possible (since e.g. the - * operating system doesn't support the concept), some other directory is - * used (usually the root directory). - */ - explicit FilesystemNode(const string& path); - - virtual ~FilesystemNode() {} - - /** - * Compare the name of this node to the name of another. Directories - * go before normal files. - */ - bool operator<(const FilesystemNode& node) const; - - /** - * Indicates whether the object referred by this path exists in the filesystem or not. - * - * @return bool true if the path exists, false otherwise. - */ - virtual bool exists() const; - - /** - * Return a list of child nodes of this directory node. If called on a node - * that does not represent a directory, false is returned. - * - * @return true if successful, false otherwise (e.g. when the directory does not exist). - */ - virtual bool getChildren(FSList &fslist, ListMode mode = kListDirectoriesOnly, bool hidden = false) const; - - /** - * Return a human readable string for this node, usable for display (e.g. - * in the GUI code). Do *not* rely on it being usable for anything else, - * like constructing paths! - * - * @return the display name - */ - virtual string getDisplayName() const; - - /** - * Return a string representation of the name of the file. This is can be - * used e.g. by detection code that relies on matching the name of a given - * file. But it is *not* suitable for use with fopen / File::open, nor - * should it be archived. - * - * @return the file name - */ - virtual string getName() const; - - /** - * Return a string representation of the file with the following properties: - * 1) can be passed to fopen() if fqn is true - * 2) contains the '~' symbol (if applicable), and is suitable for archiving - * (i.e. writing to the config file) if fqn is false - * - * This will usually be a 'path' (hence the name of the method), but can - * be anything that fulfills the above criterions. - * - * @note Do not assume that this string contains (back)slashes or any - * other kind of 'path separators'. - * - * @return the 'path' represented by this filesystem node - */ - virtual string getPath(bool fqn = true) const; - - /** - * Determine whether this node has a parent. - */ - bool hasParent() const; - - /** - * Get the parent node of this node. If this node has no parent node, - * then it returns a duplicate of this node. - */ - FilesystemNode getParent() const; - - /** - * Indicates whether the path refers to a directory or not. - * - * @todo Currently we assume that a node that is not a directory - * automatically is a file (ignoring things like symlinks or pipes). - * That might actually be OK... but we could still add an isFile method. - * Or even replace isDirectory by a getType() method that can return values like - * kDirNodeType, kFileNodeType, kInvalidNodeType. - */ - virtual bool isDirectory() const; - - /** - * Indicates whether the object referred by this path can be read from or not. - * - * If the path refers to a directory, readability implies being able to read - * and list the directory entries. - * - * If the path refers to a file, readability implies being able to read the - * contents of the file. - * - * @return bool true if the object can be read, false otherwise. - */ - virtual bool isReadable() const; - - /** - * Indicates whether the object referred by this path can be written to or not. - * - * If the path refers to a directory, writability implies being able to modify - * the directory entry (i.e. rename the directory, remove it or write files inside of it). - * - * If the path refers to a file, writability implies being able to write data - * to the file. - * - * @return bool true if the object can be written to, false otherwise. - */ - virtual bool isWritable() const; - - private: - Common::SharedPtr _realNode; - FilesystemNode(AbstractFilesystemNode* realNode); -}; - - -/** - * Abstract file system node. Private subclasses implement the actual - * functionality. - * - * Most of the methods correspond directly to methods in class FSNode, - * so if they are not documented here, look there for more information about - * the semantics. - */ - -typedef Common::Array AbstractFSList; - -class AbstractFilesystemNode -{ - protected: - friend class FilesystemNode; - typedef FilesystemNode::ListMode ListMode; - - public: - /** - * Destructor. - */ - virtual ~AbstractFilesystemNode() {} - - /* - * Indicates whether the object referred by this path exists in the filesystem or not. - */ - virtual bool exists() const = 0; - - /** - * Return a list of child nodes of this directory node. If called on a node - * that does not represent a directory, false is returned. - * - * @param list List to put the contents of the directory in. - * @param mode Mode to use while listing the directory. - * @param hidden Whether to include hidden files or not in the results. - * - * @return true if succesful, false otherwise (e.g. when the directory does not exist). - */ - virtual bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const = 0; - - /** - * Returns a human readable path string. - * - * @note By default, this method returns the value of getName(). - */ - virtual string getDisplayName() const { return getName(); } - - /** - * Returns the last component of the path pointed by this FilesystemNode. - * - * Examples (POSIX): - * /foo/bar.txt would return /bar.txt - * /foo/bar/ would return /bar/ - * - * @note This method is very architecture dependent, please check the concrete implementation for more information. - */ - virtual string getName() const = 0; - - /** - * Returns the 'path' of the current node, usable in fopen() or - containing '~' and for archiving. - */ - virtual string getPath(bool fqn = true) const = 0; - - /** - * Indicates whether this path refers to a directory or not. - */ - virtual bool isDirectory() const = 0; - - /** - * Indicates whether the object referred by this path can be read from or not. - * - * If the path refers to a directory, readability implies being able to read - * and list the directory entries. - * - * If the path refers to a file, readability implies being able to read the - * contents of the file. - * - * @return bool true if the object can be read, false otherwise. - */ - virtual bool isReadable() const = 0; - - /** - * Indicates whether the object referred by this path can be written to or not. - * - * If the path refers to a directory, writability implies being able to modify - * the directory entry (i.e. rename the directory, remove it or write files inside of it). - * - * If the path refers to a file, writability implies being able to write data - * to the file. - * - * @return bool true if the object can be written to, false otherwise. - */ - virtual bool isWritable() const = 0; - - /* TODO: - bool isFile(); - */ - - /** - Create a directory from the given path. - */ - static bool makeDir(const string& path); - - /** - Rename the given file with a new name. - */ - static bool renameFile(const string& oldfile, const string& newfile); - - /** - Create an absolute pathname from the given path (if it isn't already - absolute), pre-pending 'startpath' when necessary. If the path doesn't - have an extension matching 'ext', append it to the path. - */ - static string getAbsolutePath(const string& p, const string& startpath, - const string& ext); - - protected: - /** - * The parent node of this directory. - * The parent of the root is the root itself. - */ - virtual AbstractFilesystemNode* getParent() const = 0; - - /** - * Returns a node representing the "home directory". - * - * On Unix, this will be the value of $HOME. - * On Windows, it will be the 'My Documents' folder. - * Otherwise, it should just return the same value as getRoot(). - */ - static AbstractFilesystemNode* makeHomeDirectoryFileNode(); - - /** - * Construct a node based on a path; the path is in the same format as it - * would be for calls to fopen(). - * - * Furthermore getNodeForPath(oldNode.path()) should create a new node - * identical to oldNode. Hence, we can use the "path" value for persistent - * storage e.g. in the config file. - * - * @param path The path string to create a FilesystemNode for. - */ - static AbstractFilesystemNode* makeFileNodePath(const string& path); - - /** - * Returns a special node representing the filesystem root. - * The starting point for any file system browsing. - * - * On Unix, this will be simply the node for / (the root directory). - * On Windows, it will be a special node which "contains" all drives (C:, D:, E:). - */ - static AbstractFilesystemNode* makeRootFileNode(); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNodePOSIX.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNodePOSIX.cpp deleted file mode 100644 index 74116b8c87..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNodePOSIX.cpp +++ /dev/null @@ -1,327 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: FSNodePOSIX.cxx 2252 2011-06-11 15:58:42Z stephena $ -// -// Based on code from ScummVM - Scumm Interpreter -// Copyright (C) 2002-2004 The ScummVM project -//============================================================================ - -#include "FSNode.hxx" - -#ifdef MACOSX - #include -#endif - -#include -#include -#include - -#include -#include -#include -#include - -#include - -/* - * Implementation of the Stella file system API based on POSIX (for Linux and OSX) - * - * Parts of this class are documented in the base interface class, AbstractFilesystemNode. - */ -class POSIXFilesystemNode : public AbstractFilesystemNode -{ - public: - /** - * Creates a POSIXFilesystemNode with the root node as path. - */ - POSIXFilesystemNode(); - - /** - * Creates a POSIXFilesystemNode for a given path. - * - * @param path String with the path the new node should point to. - * @param verify true if the isValid and isDirectory flags should be verified during the construction. - */ - POSIXFilesystemNode(const string& path, bool verify); - - bool exists() const { return access(_path.c_str(), F_OK) == 0; } - string getDisplayName() const { return _displayName; } - string getName() const { return _displayName; } - string getPath(bool fqn) const; - bool isDirectory() const { return _isDirectory; } - bool isReadable() const { return access(_path.c_str(), R_OK) == 0; } - bool isWritable() const { return access(_path.c_str(), W_OK) == 0; } - - bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const; - AbstractFilesystemNode* getParent() const; - - protected: - string _displayName; - string _path; - bool _isDirectory; - bool _isValid; - - private: - /** - * Tests and sets the _isValid and _isDirectory flags, using the stat() function. - */ - virtual void setFlags(); -}; - -/** - * Returns the last component of a given path. - * - * Examples: - * /foo/bar.txt would return /bar.txt - * /foo/bar/ would return /bar/ - * - * @param str String containing the path. - * @return Pointer to the first char of the last component inside str. - */ -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const char* lastPathComponent(const string& str) -{ - if(str.empty()) - return ""; - - const char *start = str.c_str(); - const char *cur = start + str.size() - 2; - - while (cur >= start && *cur != '/') - --cur; - - return cur + 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void POSIXFilesystemNode::setFlags() -{ - struct stat st; - - _isValid = (0 == stat(_path.c_str(), &st)); - _isDirectory = _isValid ? S_ISDIR(st.st_mode) : false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -POSIXFilesystemNode::POSIXFilesystemNode() -{ - // The root dir. - _path = "/"; - _displayName = _path; - _isValid = true; - _isDirectory = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -POSIXFilesystemNode::POSIXFilesystemNode(const string& p, bool verify) -{ - // Expand '~/' and './' to the value of the HOME env variable - if ( p.length() >= 2 && (p[0] == '~' || p[0] == '.') && p[1] == '/') - { - const char *home = getenv("HOME"); -#ifdef MAXPATHLEN - if (home != NULL && strlen(home) < MAXPATHLEN) -#else // No MAXPATHLEN, as happens on Hurd - if (home != NULL) -#endif - { - _path = home; - // Skip over the tilde/dot. We know that p contains at least - // two chars, so this is safe: - _path += p.c_str() + 1; - } - } - else - _path = p; - - _displayName = lastPathComponent(_path); - - if (verify) - { - setFlags(); - - // Add a trailing slash, if necessary - if (_isDirectory && _path.length() > 0 && _path[_path.length()-1] != '/') - _path += '/'; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string POSIXFilesystemNode::getPath(bool fqn) const -{ - // If the path starts with the home directory, replace it with '~' - const char* home = getenv("HOME"); - if(!fqn && home != NULL && BSPF_startsWithIgnoreCase(_path, home)) - { - string path = "~"; - const char* offset = _path.c_str() + strlen(home); - if(*offset != '/') path += "/"; - path += offset; - return path; - } - return _path; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool POSIXFilesystemNode::getChildren(AbstractFSList& myList, ListMode mode, - bool hidden) const -{ - assert(_isDirectory); - - DIR *dirp = opendir(_path.c_str()); - struct dirent *dp; - - if (dirp == NULL) - return false; - - // loop over dir entries using readdir - while ((dp = readdir(dirp)) != NULL) - { - // Skip 'invisible' files if necessary - if (dp->d_name[0] == '.' && !hidden) - continue; - - // Skip '.' and '..' to avoid cycles - if ((dp->d_name[0] == '.' && dp->d_name[1] == 0) || (dp->d_name[0] == '.' && dp->d_name[1] == '.')) - continue; - - string newPath(_path); - if (newPath.length() > 0 && newPath[newPath.length()-1] != '/') - newPath += '/'; - newPath += dp->d_name; - - POSIXFilesystemNode entry(newPath, false); - -#if defined(SYSTEM_NOT_SUPPORTING_D_TYPE) - /* TODO: d_type is not part of POSIX, so it might not be supported - * on some of our targets. For those systems where it isn't supported, - * add this #elif case, which tries to use stat() instead. - * - * The d_type method is used to avoid costly recurrent stat() calls in big - * directories. - */ - entry.setFlags(); -#else - if (dp->d_type == DT_UNKNOWN) - { - // Fall back to stat() - entry.setFlags(); - } - else - { - entry._isValid = (dp->d_type == DT_DIR) || (dp->d_type == DT_REG) || (dp->d_type == DT_LNK); - if (dp->d_type == DT_LNK) - { - struct stat st; - if (stat(entry._path.c_str(), &st) == 0) - entry._isDirectory = S_ISDIR(st.st_mode); - else - entry._isDirectory = false; - } - else - entry._isDirectory = (dp->d_type == DT_DIR); - } -#endif - - // Skip files that are invalid for some reason (e.g. because we couldn't - // properly stat them). - if (!entry._isValid) - continue; - - // Honor the chosen mode - if ((mode == FilesystemNode::kListFilesOnly && entry._isDirectory) || - (mode == FilesystemNode::kListDirectoriesOnly && !entry._isDirectory)) - continue; - - if (entry._isDirectory) - entry._path += "/"; - - myList.push_back(new POSIXFilesystemNode(entry)); - } - closedir(dirp); - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* POSIXFilesystemNode::getParent() const -{ - if (_path == "/") - return 0; - - const char *start = _path.c_str(); - const char *end = lastPathComponent(_path); - - return new POSIXFilesystemNode(string(start, end - start), true); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* AbstractFilesystemNode::makeRootFileNode() -{ - return new POSIXFilesystemNode(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* AbstractFilesystemNode::makeHomeDirectoryFileNode() -{ - return new POSIXFilesystemNode("~/", true); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* AbstractFilesystemNode::makeFileNodePath(const string& path) -{ - return new POSIXFilesystemNode(path, true); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool AbstractFilesystemNode::makeDir(const string& path) -{ - return mkdir(path.c_str(), 0777) == 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool AbstractFilesystemNode::renameFile(const string& oldfile, - const string& newfile) -{ - return rename(oldfile.c_str(), newfile.c_str()) == 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string AbstractFilesystemNode::getAbsolutePath(const string& p, - const string& startpath, - const string& ext) -{ - // Does p start with the root directory or the given startpath? - // If not, it isn't an absolute path - string path = FilesystemNode(p).getPath(false); - if(!BSPF_startsWithIgnoreCase(p, startpath+"/") && - !BSPF_startsWithIgnoreCase(p, "/")) - path = startpath + "/" + p; - - // Does the path have a valid extension? - // If not, we add the given one - string::size_type idx = path.find_last_of('.'); - if(idx != string::npos) - { - if(!BSPF_equalsIgnoreCase(path.c_str() + idx + 1, ext)) - path = path.replace(idx+1, ext.length(), ext); - } - else - path += "." + ext; - - return path; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNodeWin32.cxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNodeWin32.cxx deleted file mode 100644 index 4271e6cb23..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/FSNodeWin32.cxx +++ /dev/null @@ -1,429 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: FSNodeWin32.cxx 2253 2011-06-11 15:59:19Z stephena $ -// -// Based on code from ScummVM - Scumm Interpreter -// Copyright (C) 2002-2004 The ScummVM project -//============================================================================ - -#include -#include - -#ifdef ARRAYSIZE - #undef ARRAYSIZE -#endif -#ifdef _WIN32_WCE - #include - // winnt.h defines ARRAYSIZE, but we want our own one... - #undef ARRAYSIZE - #undef GetCurrentDirectory -#endif - -#include -#include -#include -#ifndef _WIN32_WCE - #include - // winnt.h defines ARRAYSIZE, but we want our own one... - #undef ARRAYSIZE -#endif -#include - -// F_OK, R_OK and W_OK are not defined under MSVC, so we define them here -// For more information on the modes used by MSVC, check: -// http://msdn2.microsoft.com/en-us/library/1w06ktdy(VS.80).aspx -#ifndef F_OK - #define F_OK 0 -#endif - -#ifndef R_OK - #define R_OK 4 -#endif - -#ifndef W_OK - #define W_OK 2 -#endif - -#include "FSNode.hxx" -#include "HomeFinder.hxx" - -static HomeFinder myHomeFinder; - -/* - * Implementation of the Stella file system API based on Windows API. - * - * Parts of this class are documented in the base interface class, AbstractFilesystemNode. - */ -class WindowsFilesystemNode : public AbstractFilesystemNode -{ - public: - /** - * Creates a WindowsFilesystemNode with the root node as path. - * - * In regular windows systems, a virtual root path is used "". - * In windows CE, the "\" root is used instead. - */ - WindowsFilesystemNode(); - - /** - * Creates a WindowsFilesystemNode for a given path. - * - * Examples: - * path=c:\foo\bar.txt, currentDir=false -> c:\foo\bar.txt - * path=c:\foo\bar.txt, currentDir=true -> current directory - * path=NULL, currentDir=true -> current directory - * - * @param path String with the path the new node should point to. - */ - WindowsFilesystemNode(const string& path); - - bool exists() const { return _access(_path.c_str(), F_OK) == 0; } - string getDisplayName() const { return _displayName; } - string getName() const { return _displayName; } - string getPath(bool fqn) const; - bool isDirectory() const { return _isDirectory; } - bool isReadable() const { return _access(_path.c_str(), R_OK) == 0; } - bool isWritable() const { return _access(_path.c_str(), W_OK) == 0; } - - bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const; - AbstractFilesystemNode* getParent() const; - - protected: - string _displayName; - string _path; - bool _isDirectory; - bool _isPseudoRoot; - bool _isValid; - - private: - /** - * Adds a single WindowsFilesystemNode to a given list. - * This method is used by getChildren() to populate the directory entries list. - * - * @param list List to put the file entry node in. - * @param mode Mode to use while adding the file entry to the list. - * @param base String with the directory being listed. - * @param find_data Describes a file that the FindFirstFile, FindFirstFileEx, or FindNextFile functions find. - */ - static void addFile(AbstractFSList& list, ListMode mode, const char* base, WIN32_FIND_DATA* find_data); - - /** - * Converts a Unicode string to Ascii format. - * - * @param str String to convert from Unicode to Ascii. - * @return str in Ascii format. - */ - static char* toAscii(TCHAR *str); - - /** - * Converts an Ascii string to Unicode format. - * - * @param str String to convert from Ascii to Unicode. - * @return str in Unicode format. - */ - static const TCHAR* toUnicode(const char* str); -}; - -/** - * Returns the last component of a given path. - * - * Examples: - * c:\foo\bar.txt would return "\bar.txt" - * c:\foo\bar\ would return "\bar\" - * - * @param str Path to obtain the last component from. - * @return Pointer to the first char of the last component inside str. - */ -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const char* lastPathComponent(const string& str) -{ - if(str.empty()) - return ""; - - const char *start = str.c_str(); - const char *cur = start + str.size() - 2; - - while (cur >= start && *cur != '\\') - --cur; - - return cur + 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void WindowsFilesystemNode::addFile(AbstractFSList& list, ListMode mode, - const char* base, WIN32_FIND_DATA* find_data) -{ - WindowsFilesystemNode entry; - char* asciiName = toAscii(find_data->cFileName); - bool isDirectory; - - // Skip local directory (.) and parent (..) - if (!strncmp(asciiName, ".", 1) || !strncmp(asciiName, "..", 2)) - return; - - isDirectory = (find_data->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ? true : false); - - if ((!isDirectory && mode == FilesystemNode::kListDirectoriesOnly) || - (isDirectory && mode == FilesystemNode::kListFilesOnly)) - return; - - entry._isDirectory = isDirectory; - entry._displayName = asciiName; - entry._path = base; - entry._path += asciiName; - if (entry._isDirectory) - entry._path += "\\"; - entry._isValid = true; - entry._isPseudoRoot = false; - - list.push_back(new WindowsFilesystemNode(entry)); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -char* WindowsFilesystemNode::toAscii(TCHAR* str) -{ -#ifndef UNICODE - return (char*)str; -#else - static char asciiString[MAX_PATH]; - WideCharToMultiByte(CP_ACP, 0, str, _tcslen(str) + 1, asciiString, sizeof(asciiString), NULL, NULL); - return asciiString; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const TCHAR* WindowsFilesystemNode::toUnicode(const char* str) -{ -#ifndef UNICODE - return (const TCHAR *)str; -#else - static TCHAR unicodeString[MAX_PATH]; - MultiByteToWideChar(CP_ACP, 0, str, strlen(str) + 1, unicodeString, sizeof(unicodeString) / sizeof(TCHAR)); - return unicodeString; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -WindowsFilesystemNode::WindowsFilesystemNode() -{ - _isDirectory = true; -#ifndef _WIN32_WCE - // Create a virtual root directory for standard Windows system - _isValid = false; - _path = ""; - _isPseudoRoot = true; -#else - _displayName = "Root"; - // No need to create a pseudo root directory on Windows CE - _isValid = true; - _path = "\\"; - _isPseudoRoot = false; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -WindowsFilesystemNode::WindowsFilesystemNode(const string& p) -{ - // Expand '~\' and '.\' to the users 'home' directory - if ( p.length() >= 2 && (p[0] == '~' || p[0] == '.') && p[1] == '\\') - { - _path = myHomeFinder.getHomePath(); - // Skip over the tilde/dot. We know that p contains at least - // two chars, so this is safe: - _path += p.c_str() + 1; - } - else - { - assert(p.size() > 0); - _path = p; - } - - _displayName = lastPathComponent(_path); - - // Check whether it is a directory, and whether the file actually exists - DWORD fileAttribs = GetFileAttributes(toUnicode(_path.c_str())); - - if (fileAttribs == INVALID_FILE_ATTRIBUTES) - { - _isDirectory = false; - _isValid = false; - } - else - { - _isDirectory = ((fileAttribs & FILE_ATTRIBUTE_DIRECTORY) != 0); - _isValid = true; - - // Add a trailing backslash, if necessary - if (_isDirectory && _path.length() > 0 && _path[_path.length()-1] != '\\') - _path += '\\'; - } - _isPseudoRoot = false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string WindowsFilesystemNode::getPath(bool fqn) const -{ - // If the path starts with the home directory, replace it with '~' - const string& home = myHomeFinder.getHomePath(); - if(!fqn && home != "" && BSPF_startsWithIgnoreCase(_path, home)) - { - string path = "~"; - const char* offset = _path.c_str() + home.length(); - if(*offset != '\\') path += '\\'; - path += offset; - return path; - } - return _path; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool WindowsFilesystemNode:: - getChildren(AbstractFSList& myList, ListMode mode, bool hidden) const -{ - assert(_isDirectory); - - //TODO: honor the hidden flag - - if (_isPseudoRoot) - { -#ifndef _WIN32_WCE - // Drives enumeration - TCHAR drive_buffer[100]; - GetLogicalDriveStrings(sizeof(drive_buffer) / sizeof(TCHAR), drive_buffer); - - for (TCHAR *current_drive = drive_buffer; *current_drive; - current_drive += _tcslen(current_drive) + 1) - { - WindowsFilesystemNode entry; - char drive_name[2]; - - drive_name[0] = toAscii(current_drive)[0]; - drive_name[1] = '\0'; - entry._displayName = drive_name; - entry._isDirectory = true; - entry._isValid = true; - entry._isPseudoRoot = false; - entry._path = toAscii(current_drive); - myList.push_back(new WindowsFilesystemNode(entry)); - } -#endif - } - else - { - // Files enumeration - WIN32_FIND_DATA desc; - HANDLE handle; - char searchPath[MAX_PATH + 10]; - - sprintf(searchPath, "%s*", _path.c_str()); - - handle = FindFirstFile(toUnicode(searchPath), &desc); - - if (handle == INVALID_HANDLE_VALUE) - return false; - - addFile(myList, mode, _path.c_str(), &desc); - - while (FindNextFile(handle, &desc)) - addFile(myList, mode, _path.c_str(), &desc); - - FindClose(handle); - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* WindowsFilesystemNode::getParent() const -{ -// assert(_isValid || _isPseudoRoot); - - if (!_isValid || _isPseudoRoot) - return 0; - - WindowsFilesystemNode* p = new WindowsFilesystemNode(); - if (_path.size() > 3) - { - const char *start = _path.c_str(); - const char *end = lastPathComponent(_path); - - p->_path = string(start, end - start); - p->_isValid = true; - p->_isDirectory = true; - p->_displayName = lastPathComponent(p->_path); - p->_isPseudoRoot = false; - } - - return p; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* AbstractFilesystemNode::makeRootFileNode() -{ - return new WindowsFilesystemNode(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* AbstractFilesystemNode::makeHomeDirectoryFileNode() -{ - return new WindowsFilesystemNode("~\\"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFilesystemNode* AbstractFilesystemNode::makeFileNodePath(const string& path) -{ - return new WindowsFilesystemNode(path); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool AbstractFilesystemNode::makeDir(const string& path) -{ - return CreateDirectory(path.c_str(), NULL) != 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool AbstractFilesystemNode::renameFile(const string& oldfile, - const string& newfile) -{ - return MoveFile(oldfile.c_str(), newfile.c_str()) != 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string AbstractFilesystemNode::getAbsolutePath(const string& p, - const string& startpath, - const string& ext) -{ - // Does p start with a drive letter or the given startpath? - // If not, it isn't an absolute path - string path = FilesystemNode(p).getPath(false); - bool startsWithDrive = path.length() >= 2 && path[1] == ':'; - if(!BSPF_startsWithIgnoreCase(p, startpath+"\\") && !startsWithDrive) - path = startpath + "\\" + p; - - // Does the path have a valid extension? - // If not, we add the given one - string::size_type idx = path.find_last_of('.'); - if(idx != string::npos) - { - if(!BSPF_equalsIgnoreCase(path.c_str() + idx + 1, ext)) - path = path.replace(idx+1, ext.length(), ext); - } - else - path += "." + ext; - - return path; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Settings.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Settings.cpp deleted file mode 100644 index f046982958..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Settings.cpp +++ /dev/null @@ -1,209 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Settings.cxx 2245 2011-06-02 20:53:01Z stephena $ -//============================================================================ - -//ROBO: Totally convert this to use mednafen for settings backend, diff with orig for details -//ROBO: For mednafen settings -//#include -//#include - -#include -#include -#include -#include - -#include "bspf.hxx" - -#include "Version.hxx" -#include "Settings.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Settings::Settings() -{ - // Add options that are common to all versions of Stella -/* setInternal("video", "soft"); - - // OpenGL specific options - setInternal("gl_filter", "nearest"); - setInternal("gl_aspectn", "100"); - setInternal("gl_aspectp", "100"); - setInternal("gl_fsmax", "false"); - setInternal("gl_lib", "libGL.so"); - setInternal("gl_vsync", "false"); - setInternal("gl_texrect", "false"); -// setInternal("gl_accel", "true"); - - // Framebuffer-related options - setInternal("tia_filter", "zoom2x"); - setInternal("fullscreen", "0"); - setInternal("fullres", "auto"); - setInternal("center", "false"); - setInternal("grabmouse", "true"); - setInternal("palette", "standard"); - setInternal("colorloss", "false"); - setInternal("timing", "sleep"); - setInternal("uimessages", "true"); - - // TV filter options - setInternal("tv_tex", "off"); - setInternal("tv_bleed", "off"); - setInternal("tv_noise", "off"); -// setInternal("tv_curve", "false"); // not yet implemented - setInternal("tv_phos", "false"); - - // Sound options - setInternal("sound", "true"); - setInternal("fragsize", "512"); - setInternal("freq", "31400"); - setInternal("tiafreq", "31400"); - setInternal("volume", "100"); - setInternal("clipvol", "true"); - - // Input event options - setInternal("keymap", ""); - setInternal("joymap", ""); - setInternal("joyaxismap", ""); - setInternal("joyhatmap", ""); - setInternal("combomap", ""); - setInternal("joydeadzone", "13"); - setInternal("joyallow4", "false"); - setInternal("usemouse", "true"); - setInternal("dsense", "5"); - setInternal("msense", "7"); - setInternal("sa1", "left"); - setInternal("sa2", "right"); - setInternal("ctrlcombo", "true"); - - // Snapshot options - setInternal("ssdir", ""); - setInternal("sssingle", "false"); - setInternal("ss1x", "false"); - setInternal("ssinterval", "2"); - - // Config files and paths - setInternal("romdir", ""); - setInternal("statedir", ""); - setInternal("cheatfile", ""); - setInternal("palettefile", ""); - setInternal("propsfile", ""); - setInternal("eepromdir", ""); - setInternal("cfgdir", ""); - - // ROM browser options - setInternal("uselauncher", "true"); - setInternal("launcherres", "640x480"); - setInternal("launcherfont", "medium"); - setInternal("launcherexts", "allfiles"); - setInternal("romviewer", "0"); - setInternal("lastrom", ""); - - // UI-related options - setInternal("debuggerres", "1030x690"); - setInternal("uipalette", "0"); - setInternal("listdelay", "300"); - setInternal("mwheel", "4"); - - // Misc options - setInternal("autoslot", "false"); - setInternal("showinfo", "1"); - setInternal("tiadriven", "false"); - setInternal("ramrandom", "true"); - setInternal("avoxport", ""); - setInternal("stats", "false"); - setInternal("audiofirst", "true"); - setInternal("fastscbios", "false"); - setExternal("romloadcount", "0"); - setExternal("maxres", ""); - - // Debugger options - setInternal("resolvedata", "auto"); - setInternal("gfxformat", "2"); - setInternal("showaddr", "true");*/ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Settings::setInt(const string& key, const int value) -{ - stringstream strstr; strstr << value; - //MDFNI_SetSetting((string("stella.") + key).c_str(), strstr.str().c_str()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Settings::setFloat(const string& key, const float value) -{ - stringstream strstr; strstr << value; - //MDFNI_SetSetting((string("stella.") + key).c_str(), strstr.str().c_str()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Settings::setBool(const string& key, const bool value) -{ - stringstream strstr; strstr << value; - //MDFNI_SetSetting((string("stella.") + key).c_str(), strstr.str().c_str()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Settings::setString(const string& key, const string& value) -{ - stringstream strstr; strstr << value; - //MDFNI_SetSetting((string("stella.") + key).c_str(), strstr.str().c_str()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int Settings::getInt(const string& key) const -{ - if (key == "framerate") - return 60; - //return MDFN_GetSettingI((std::string("stella.") + key).c_str()); - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -float Settings::getFloat(const string& key) const -{ - //return MDFN_GetSettingF((std::string("stella.") + key).c_str()); - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Settings::getBool(const string& key) const -{ - if (key == "ramrandom") - return 1; - else if (key == "fastscbios") - return 0; - else if (key == "colorloss") - return 0; - else if (key == "tiadriven") - return 0; - //return MDFN_GetSettingB((std::string("stella.") + key).c_str()); - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const string& Settings::getString(const string& key) const -{ - static string result = "standard"; - if (key == "palette") - return result; - //static string result = MDFN_GetSettingS((std::string("stella.") + key).c_str()); - //return result; - return ""; -} - - diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Settings.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Settings.hxx deleted file mode 100644 index b84891c85b..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Settings.hxx +++ /dev/null @@ -1,125 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Settings.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef SETTINGS_HXX -#define SETTINGS_HXX - -//ROBO: Totally convert this to use mednafen for settings backend, diff with orig for details - -#include "Array.hxx" -#include "bspf.hxx" - -/** - This class provides an interface for accessing frontend specific settings. - - @author Stephen Anthony - @version $Id: Settings.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Settings -{ - public: - /** - Create a new settings abstract class - */ - Settings(); - - /** - Destructor - */ - virtual ~Settings() {}; - - public: - /** - Get the value assigned to the specified key. If the key does - not exist then -1 is returned. - - @param key The key of the setting to lookup - @return The integer value of the setting - */ - int getInt(const string& key) const; - - /** - Get the value assigned to the specified key. If the key does - not exist then -1.0 is returned. - - @param key The key of the setting to lookup - @return The floating point value of the setting - */ - float getFloat(const string& key) const; - - /** - Get the value assigned to the specified key. If the key does - not exist then false is returned. - - @param key The key of the setting to lookup - @return The boolean value of the setting - */ - bool getBool(const string& key) const; - - /** - Get the value assigned to the specified key. If the key does - not exist then the empty string is returned. - - @param key The key of the setting to lookup - @return The string value of the setting - */ - const string& getString(const string& key) const; - - /** - Set the value associated with key to the given value. - - @param key The key of the setting - @param value The value to assign to the setting - */ - void setInt(const string& key, const int value); - - /** - Set the value associated with key to the given value. - - @param key The key of the setting - @param value The value to assign to the setting - */ - void setFloat(const string& key, const float value); - - /** - Set the value associated with key to the given value. - - @param key The key of the setting - @param value The value to assign to the setting - */ - void setBool(const string& key, const bool value); - - /** - Set the value associated with key to the given value. - - @param key The key of the setting - @param value The value to assign to the setting - */ - void setString(const string& key, const string& value); - - - private: - // Copy constructor isn't supported by this class so make it private - Settings(const Settings&) {}; - - // Assignment operator isn't supported by this class so make it private - Settings& operator = (const Settings&) {assert(false); return *this;}; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SharedPtr.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SharedPtr.hxx deleted file mode 100644 index bd3683fcf8..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SharedPtr.hxx +++ /dev/null @@ -1,221 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: SharedPtr.hxx 2199 2011-01-01 16:04:32Z stephena $ -// -// Based on code from ScummVM - Scumm Interpreter -// Copyright (C) 2002-2004 The ScummVM project -//============================================================================ - -#ifndef SHARED_PTR_HXX -#define SHARED_PTR_HXX - -#include - -namespace Common { - -class SharedPtrDeletionInternal -{ - public: - virtual ~SharedPtrDeletionInternal() {} -}; - -template -class SharedPtrDeletionImpl : public SharedPtrDeletionInternal -{ - public: - SharedPtrDeletionImpl(T *ptr) : _ptr(ptr) {} - ~SharedPtrDeletionImpl() - { - // Checks if the supplied type is not just a plain - // forward definition, taken from boost::checked_delete - // This makes the user really aware what he tries to do - // when using this with an incomplete type. - typedef char completeCheck[sizeof(T) ? 1 : -1]; - (void)sizeof(completeCheck); - delete _ptr; - } - - private: - T *_ptr; -}; - -template -class SharedPtrDeletionDeleterImpl : public SharedPtrDeletionInternal -{ - public: - SharedPtrDeletionDeleterImpl(T *ptr, D d) : _ptr(ptr), _deleter(d) {} - ~SharedPtrDeletionDeleterImpl() { _deleter(_ptr); } - - private: - T *_ptr; - D _deleter; -}; - -/** - * A simple shared pointer implementation modelled after boost. - * - * This object keeps track of the assigned pointer and automatically - * frees it when no more SharedPtr references to it exist. - * - * To achieve that the object implements an internal reference counting. - * Thus you should try to avoid using the plain pointer after assigning - * it to a SharedPtr object for the first time. If you still use the - * plain pointer be sure you do not delete it on your own. You may also - * not use the plain pointer to create a new SharedPtr object, since that - * would result in a double deletion of the pointer sooner or later. - * - * Example creation: - * Common::SharedPtr pointer(new int(1)); - * would create a pointer to int. Later on usage via *pointer is the same - * as for a normal pointer. If you need to access the plain pointer value - * itself later on use the get method. The class also supplies a operator - * ->, which does the same as the -> operator on a normal pointer. - * - * Be sure you are using new to initialize the pointer you want to manage. - * If you do not use new for allocating, you have to supply a deleter as - * second parameter when creating a SharedPtr object. The deleter has to - * implement operator() which takes the pointer it should free as argument. - * - * Note that you have to specify the type itself not the pointer type as - * template parameter. - * - * When creating a SharedPtr object from a normal pointer you need a real - * definition of the type you want SharedPtr to manage, a simple forward - * definition is not enough. - * - * The class has implicit upcast support, so if you got a class B derived - * from class A, you can assign a pointer to B without any problems to a - * SharedPtr object with template parameter A. The very same applies to - * assignment of a SharedPtr object to a SharedPtr object. - * - * There are also operators != and == to compare two SharedPtr objects - * with compatible pointers. Comparison between a SharedPtr object and - * a plain pointer is only possible via SharedPtr::get. - */ -template -class SharedPtr -{ -#if !((__GNUC__ == 2) && (__GNUC_MINOR__ >= 95)) - template friend class SharedPtr; -#endif - public: - typedef int RefValue; - typedef T ValueType; - typedef T *Pointer; - - SharedPtr() : _refCount(0), _deletion(0), _pointer(0) {} - template explicit SharedPtr(T2 *p) : _refCount(new RefValue(1)), _deletion(new SharedPtrDeletionImpl(p)), _pointer(p) {} - template SharedPtr(T2 *p, D d) : _refCount(new RefValue(1)), _deletion(new SharedPtrDeletionDeleterImpl(p, d)), _pointer(p) {} - - SharedPtr(const SharedPtr &r) : _refCount(r._refCount), _deletion(r._deletion), _pointer(r._pointer) { if (_refCount) ++(*_refCount); } - template SharedPtr(const SharedPtr &r) : _refCount(r._refCount), _deletion(r._deletion), _pointer(r._pointer) { if (_refCount) ++(*_refCount); } - - ~SharedPtr() { decRef(); } - - SharedPtr &operator =(const SharedPtr &r) - { - if (r._refCount) - ++(*r._refCount); - decRef(); - - _refCount = r._refCount; - _deletion = r._deletion; - _pointer = r._pointer; - - return *this; - } - - template - SharedPtr &operator =(const SharedPtr &r) - { - if (r._refCount) - ++(*r._refCount); - decRef(); - - _refCount = r._refCount; - _deletion = r._deletion; - _pointer = r._pointer; - - return *this; - } - - ValueType &operator *() const { assert(_pointer); return *_pointer; } - Pointer operator ->() const { assert(_pointer); return _pointer; } - - /** - * Returns the plain pointer value. Be sure you know what you - * do if you are continuing to use that pointer. - * - * @return the pointer the SharedPtr object manages - */ - Pointer get() const { return _pointer; } - - /** - * Implicit conversion operator to bool for convenience, to make - * checks like "if (sharedPtr) ..." possible. - */ - operator bool() const { return _pointer != 0; } - - /** - * Checks if the SharedPtr object is the only object refering - * to the assigned pointer. This should just be used for - * debugging purposes. - */ - bool unique() const { return refCount() == 1; } - - /** - * Returns the number of references to the assigned pointer. - * This should just be used for debugging purposes. - */ - RefValue refCount() const { return _refCount ? *_refCount : 0; } -#if !((__GNUC__ == 2) && (__GNUC_MINOR__ >= 95)) - private: -#endif - void decRef() - { - if (_refCount) - { - --(*_refCount); - if (!*_refCount) - { - delete _refCount; - delete _deletion; - _deletion = 0; - _refCount = 0; - _pointer = 0; - } - } - } - - RefValue *_refCount; - SharedPtrDeletionInternal *_deletion; - T *_pointer; -}; - -} // end of namespace Common - -template -bool operator ==(const Common::SharedPtr &l, const Common::SharedPtr &r) { - return l.get() == r.get(); -} - -template -bool operator !=(const Common::SharedPtr &l, const Common::SharedPtr &r) { - return l.get() != r.get(); -} - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Sound.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Sound.hxx deleted file mode 100644 index f688cf8205..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Sound.hxx +++ /dev/null @@ -1,146 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Sound.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef SOUND_HXX -#define SOUND_HXX - -//ROBO: No OSystem -//class OSystem; - -#include "Serializable.hxx" -#include "bspf.hxx" - -/** - This class is an abstract base class for the various sound objects. - It has no functionality whatsoever. - - @author Stephen Anthony - @version $Id: Sound.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Sound : public Serializable -{ - public: - /** - Create a new sound object. The init method must be invoked before - using the object. - */ -//ROBO: No OSystem -// Sound(OSystem* osystem) { myOSystem = osystem; } - Sound(void* osystem) { } - - /** - Destructor - */ - virtual ~Sound() { }; - - public: - /** - Enables/disables the sound subsystem. - - @param enable Either true or false, to enable or disable the sound system - */ - virtual void setEnabled(bool enable) = 0; - - /** - The system cycle counter is being adjusting by the specified amount. Any - members using the system cycle counter should be adjusted as needed. - - @param amount The amount the cycle counter is being adjusted by - */ - virtual void adjustCycleCounter(Int32 amount) = 0; - - /** - Sets the number of channels (mono or stereo sound). - - @param channels The number of channels - */ - virtual void setChannels(uInt32 channels) = 0; - - /** - Sets the display framerate. Sound generation for NTSC and PAL games - depends on the framerate, so we need to set it here. - - @param framerate The base framerate depending on NTSC or PAL ROM - */ - virtual void setFrameRate(float framerate) = 0; - - /** - Start the sound system, initializing it if necessary. This must be - called before any calls are made to derived methods. - */ - virtual void open() = 0; - - /** - Should be called to stop the sound system. Once called the sound - device can be started again using the ::open() method. - */ - virtual void close() = 0; - - /** - Return true iff the sound device was successfully initialized. - - @return true iff the sound device was successfully initialized. - */ - virtual bool isSuccessfullyInitialized() const = 0; - - /** - Set the mute state of the sound object. While muted no sound is played. - - @param state Mutes sound if true, unmute if false - */ - virtual void mute(bool state) = 0; - - /** - Reset the sound device. - */ - virtual void reset() = 0; - - /** - Sets the sound register to a given value. - - @param addr The register address - @param value The value to save into the register - @param cycle The system cycle at which the register is being updated - */ - virtual void set(uInt16 addr, uInt8 value, Int32 cycle) = 0; - - /** - Sets the volume of the sound device to the specified level. The - volume is given as a percentage from 0 to 100. Values outside - this range indicate that the volume shouldn't be changed at all. - - @param percent The new volume percentage level for the sound device - */ - virtual void setVolume(Int32 percent) = 0; - - /** - Adjusts the volume of the sound device based on the given direction. - - @param direction Increase or decrease the current volume by a predefined - amount based on the direction (1 = increase, -1 =decrease) - */ - virtual void adjustVolume(Int8 direction) = 0; - - protected: - // The OSystem for this sound object -//ROBO: No OSystem -// OSystem* myOSystem; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SoundSDL.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SoundSDL.cpp deleted file mode 100644 index 6d0a335346..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SoundSDL.cpp +++ /dev/null @@ -1,314 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: SoundSDL.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -//ROBO: Totally convert, diff with orig for details - -#include -#include -#include - -#include "TIASnd.hxx" -#include "Settings.hxx" -#include "System.hxx" -#include "Console.hxx" -#include "SoundSDL.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SoundSDL::SoundSDL() : Sound(0), myLastRegisterSetCycle(0), myDisplayFrameRate(60.0) {} -SoundSDL::~SoundSDL() {close();} -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::open() -{ - // Make sure the sound queue is clear - myRegWriteQueue.clear(); - myTIASound.reset(); - - myLastRegisterSetCycle = 0; - -/* uInt32 fragsize = myOSystem->settings().getInt("fragsize"); - Int32 frequency = myOSystem->settings().getInt("freq"); - Int32 tiafreq = myOSystem->settings().getInt("tiafreq"); - myFragmentSizeLogBase2 = log((double)myHardwareSpec.samples) / log(2.0); - myTIASound.outputFrequency(myHardwareSpec.freq); - myTIASound.tiaFrequency(tiafreq); - myTIASound.channels(myHardwareSpec.channels); - bool clipvol = myOSystem->settings().getBool("clipvol"); - myTIASound.clipVolume(clipvol);*/ - -//ROBO: The TIA generator REALLY BLOWS if these don't match, resample in medanfen.cpp! - myTIASound.outputFrequency(31400); - myTIASound.tiaFrequency(31400); - myTIASound.channels(1); - - myTIASound.clipVolume(true); -} -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::reset() -{ - myLastRegisterSetCycle = 0; - myTIASound.reset(); - myRegWriteQueue.clear(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::adjustCycleCounter(Int32 amount) -{ - myLastRegisterSetCycle += amount; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::setFrameRate(float framerate) -{ - // FIXME - should we clear out the queue or adjust the values in it? - myDisplayFrameRate = framerate; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::set(uInt16 addr, uInt8 value, Int32 cycle) -{ - // First, calulate how many seconds would have past since the last - // register write on a real 2600 - double delta = (((double)(cycle - myLastRegisterSetCycle)) / (1193191.66666667)); - - // Now, adjust the time based on the frame rate the user has selected. For - // the sound to "scale" correctly, we have to know the games real frame - // rate (e.g., 50 or 60) and the currently emulated frame rate. We use these - // values to "scale" the time before the register change occurs. - RegWrite info; - info.addr = addr; - info.value = value; - info.delta = delta; - myRegWriteQueue.enqueue(info); - - // Update last cycle counter to the current cycle - myLastRegisterSetCycle = cycle; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::processFragment(uInt8* stream, Int32 length) -{ - double position = 0.0; - double remaining = length; - - while(remaining > 0.0) - { - if(myRegWriteQueue.size() == 0) - { - // There are no more pending TIA sound register updates so we'll use the current settings to finish filling the sound fragment - myTIASound.process(stream + ((uInt32)position), length - (uInt32)position); - myLastRegisterSetCycle = 0; - break; - } - else - { - // There are pending TIA sound register updates so we need to - // update the sound buffer to the point of the next register update - RegWrite& info = myRegWriteQueue.front(); - - // How long will the remaining samples in the fragment take to play -// double duration = remaining / (double)myHardwareSpec.freq; - double duration = remaining / 31400.0; - - // Does the register update occur before the end of the fragment? - if(info.delta <= duration) - { - // If the register update time hasn't already passed then - // process samples upto the point where it should occur - if(info.delta > 0.0) - { - // Process the fragment upto the next TIA register write. We - // round the count passed to process up if needed. -// double samples = (myHardwareSpec.freq * info.delta); - double samples = (31400.0 * info.delta); - myTIASound.process(stream + ((uInt32)position), (uInt32)samples + (uInt32)(position + samples) - ((uInt32)position + (uInt32)samples)); - - position += samples; - remaining -= samples; - } - myTIASound.set(info.addr, info.value); - myRegWriteQueue.dequeue(); - } - else - { - // The next register update occurs in the next fragment so finish - // this fragment with the current TIA settings and reduce the register - // update delay by the corresponding amount of time - myTIASound.process(stream + ((uInt32)position), length - (uInt32)position); - info.delta -= duration; - break; - } - } - } -} - - - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool SoundSDL::save(Serializer& out) const -{ - try - { - out.putString(name()); - - uInt8 reg1 = 0, reg2 = 0, reg3 = 0, reg4 = 0, reg5 = 0, reg6 = 0; - - // Only get the TIA sound registers if sound is enabled - reg1 = myTIASound.get(0x15); - reg2 = myTIASound.get(0x16); - reg3 = myTIASound.get(0x17); - reg4 = myTIASound.get(0x18); - reg5 = myTIASound.get(0x19); - reg6 = myTIASound.get(0x1a); - - out.putByte((char)reg1); - out.putByte((char)reg2); - out.putByte((char)reg3); - out.putByte((char)reg4); - out.putByte((char)reg5); - out.putByte((char)reg6); - - out.putInt(myLastRegisterSetCycle); - } - catch(const char* msg) - { - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool SoundSDL::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - uInt8 reg1 = 0, reg2 = 0, reg3 = 0, reg4 = 0, reg5 = 0, reg6 = 0; - reg1 = (uInt8) in.getByte(); - reg2 = (uInt8) in.getByte(); - reg3 = (uInt8) in.getByte(); - reg4 = (uInt8) in.getByte(); - reg5 = (uInt8) in.getByte(); - reg6 = (uInt8) in.getByte(); - - myLastRegisterSetCycle = (Int32) in.getInt(); - - myRegWriteQueue.clear(); - myTIASound.set(0x15, reg1); - myTIASound.set(0x16, reg2); - myTIASound.set(0x17, reg3); - myTIASound.set(0x18, reg4); - myTIASound.set(0x19, reg5); - myTIASound.set(0x1a, reg6); - } - catch(const char* msg) - { - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SoundSDL::RegWriteQueue::RegWriteQueue(uInt32 capacity) - : myCapacity(capacity), - myBuffer(0), - mySize(0), - myHead(0), - myTail(0) -{ - myBuffer = new RegWrite[myCapacity]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SoundSDL::RegWriteQueue::~RegWriteQueue() -{ - delete[] myBuffer; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::RegWriteQueue::clear() -{ - myHead = myTail = mySize = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::RegWriteQueue::dequeue() -{ - if(mySize > 0) - { - myHead = (myHead + 1) % myCapacity; - --mySize; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -double SoundSDL::RegWriteQueue::duration() -{ - double duration = 0.0; - for(uInt32 i = 0; i < mySize; ++i) - { - duration += myBuffer[(myHead + i) % myCapacity].delta; - } - return duration; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::RegWriteQueue::enqueue(const RegWrite& info) -{ - // If an attempt is made to enqueue more than the queue can hold then - // we'll enlarge the queue's capacity. - if(mySize == myCapacity) - grow(); - - myBuffer[myTail] = info; - myTail = (myTail + 1) % myCapacity; - ++mySize; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SoundSDL::RegWrite& SoundSDL::RegWriteQueue::front() -{ - assert(mySize != 0); - return myBuffer[myHead]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 SoundSDL::RegWriteQueue::size() const -{ - return mySize; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL::RegWriteQueue::grow() -{ - RegWrite* buffer = new RegWrite[myCapacity * 2]; - for(uInt32 i = 0; i < mySize; ++i) - { - buffer[i] = myBuffer[(myHead + i) % myCapacity]; - } - myHead = 0; - myTail = mySize; - myCapacity = myCapacity * 2; - delete[] myBuffer; - myBuffer = buffer; -} - diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SoundSDL.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SoundSDL.hxx deleted file mode 100644 index 55807108ea..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/SoundSDL.hxx +++ /dev/null @@ -1,164 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: SoundSDL.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -//ROBO: Totally convert, diff with orig for details - -#ifndef SOUND_SDL_HXX -#define SOUND_SDL_HXX - -#include "bspf.hxx" -#include "TIASnd.hxx" -#include "Sound.hxx" - -/** - This class implements the sound API for SDL. - - @author Stephen Anthony and Bradford W. Mott - @version $Id: SoundSDL.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class SoundSDL : public Sound -{ - public: - /** - Create a new sound object. The init method must be invoked before - using the object. - */ - SoundSDL(); - - /** - Destructor - */ - virtual ~SoundSDL(); - - public: - void adjustCycleCounter(Int32 amount); - void setFrameRate(float framerate); - void open(); - void reset(); - void set(uInt16 addr, uInt8 value, Int32 cycle); - - //Dummy functions - void setVolume(Int32 percent) {}; - void adjustVolume(Int8 direction) {}; - void close() {}; - bool isSuccessfullyInitialized() const {return true;}; - void mute(bool state) {}; - void setChannels(uInt32 channels) {}; - void setEnabled(bool state) {}; - - //Process - void processFragment(uInt8* stream, Int32 length); - - public: - bool save(Serializer& out) const; - bool load(Serializer& in); - string name() const { return "TIASound"; } - - protected: - // Struct to hold information regarding a TIA sound register write - struct RegWrite - { - uInt16 addr; - uInt8 value; - double delta; - }; - - /** - A queue class used to hold TIA sound register writes before being - processed while creating a sound fragment. - */ - class RegWriteQueue - { - public: - /** - Create a new queue instance with the specified initial - capacity. If the queue ever reaches its capacity then it will - automatically increase its size. - */ - RegWriteQueue(uInt32 capacity = 512); - - /** - Destroy this queue instance. - */ - virtual ~RegWriteQueue(); - - public: - /** - Clear any items stored in the queue. - */ - void clear(); - - /** - Dequeue the first object in the queue. - */ - void dequeue(); - - /** - Return the duration of all the items in the queue. - */ - double duration(); - - /** - Enqueue the specified object. - */ - void enqueue(const RegWrite& info); - - /** - Return the item at the front on the queue. - - @return The item at the front of the queue. - */ - RegWrite& front(); - - /** - Answers the number of items currently in the queue. - - @return The number of items in the queue. - */ - uInt32 size() const; - - private: - // Increase the size of the queue - void grow(); - - private: - uInt32 myCapacity; - RegWrite* myBuffer; - uInt32 mySize; - uInt32 myHead; - uInt32 myTail; - }; - - private: - // TIASound emulation object - TIASound myTIASound; - - // Indicates the cycle when a sound register was last set - Int32 myLastRegisterSetCycle; - - // Indicates the base framerate depending on if the ROM is NTSC or PAL - float myDisplayFrameRate; - - // Queue of TIA register writes - RegWriteQueue myRegWriteQueue; -}; - -#endif - - diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Version.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Version.hxx deleted file mode 100644 index 8f3d8837d9..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/Version.hxx +++ /dev/null @@ -1,28 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Version.hxx 2256 2011-06-11 23:55:53Z stephena $ -//============================================================================ - -#ifndef VERSION_HXX -#define VERSION_HXX - -#include - -#define STELLA_VERSION "3.4.1" -#define STELLA_BUILD atoi("$Rev: 2256 $" + 6) - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart.cpp deleted file mode 100644 index 9a196285c5..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart.cpp +++ /dev/null @@ -1,724 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart.cxx 2249 2011-06-07 13:40:59Z stephena $ -//============================================================================ - -#include -#include -#include - -#include "bspf.hxx" -#include "Cart.hxx" -#include "Cart0840.hxx" -#include "Cart2K.hxx" -#include "Cart3E.hxx" -#include "Cart3F.hxx" -#include "Cart4A50.hxx" -#include "Cart4K.hxx" -#include "CartAR.hxx" -#include "CartDPC.hxx" -#include "CartDPCPlus.hxx" -#include "CartE0.hxx" -#include "CartE7.hxx" -#include "CartEF.hxx" -#include "CartEFSC.hxx" -#include "CartF0.hxx" -#include "CartF4.hxx" -#include "CartF4SC.hxx" -#include "CartF6.hxx" -#include "CartF6SC.hxx" -#include "CartF8.hxx" -#include "CartF8SC.hxx" -#include "CartFA.hxx" -#include "CartFE.hxx" -#include "CartMC.hxx" -#include "CartCV.hxx" -#include "CartUA.hxx" -#include "CartSB.hxx" -#include "CartX07.hxx" -#include "MD5.hxx" -#include "Props.hxx" -#include "Settings.hxx" -#ifdef DEBUGGER_SUPPORT - #include "Debugger.hxx" - #include "CartDebug.hxx" -#endif - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge* Cartridge::create(const uInt8* image, uInt32 size, string& md5, - string& dtype, string& id, Settings& settings) -{ - Cartridge* cartridge = 0; - string type = dtype; - - // Collect some info about the ROM - ostringstream buf; - - // See if we should try to auto-detect the cartridge type - // If we ask for extended info, always do an autodetect - string autodetect = ""; - if(type == "AUTO-DETECT" || settings.getBool("rominfo")) - { - const string& detected = autodetectType(image, size); - autodetect = "*"; - if(type != "AUTO-DETECT" && type != detected) - cerr << "Auto-detection not consistent: " << type << ", " << detected << endl; - - type = detected; - } - buf << type << autodetect; - - // Check for multicart first; if found, get the correct part of the image - if(type == "2IN1") - { - // Make sure we have a valid sized image - if(size == 2*2048 || size == 2*4096 || size == 2*8192 || size == 2*16384) - { - dtype = type; - type = createFromMultiCart(image, size, 2, md5, id, settings); - buf << id; - } - - } - else if(type == "4IN1") - { - // Make sure we have a valid sized image - if(size == 4*2048 || size == 4*4096 || size == 4*8192) - { - dtype = type; - type = createFromMultiCart(image, size, 4, md5, id, settings); - buf << id; - } - } - else if(type == "8IN1") - { - // Make sure we have a valid sized image - if(size == 8*2048 || size == 8*4096 || size == 8*8192) - { - dtype = type; - type = createFromMultiCart(image, size, 8, md5, id, settings); - buf << id; - } - } - else if(type == "16IN1") - { - // Make sure we have a valid sized image - if(size == 16*2048 || size == 16*4096 || size == 16*8192) - { - dtype = type; - type = createFromMultiCart(image, size, 16, md5, id, settings); - buf << id; - } - } - else if(type == "32IN1") - { - // Make sure we have a valid sized image - if(size == 32*2048 || size == 32*4096) - { - dtype = type; - type = createFromMultiCart(image, size, 32, md5, id, settings); - buf << id; - } - } - - // We should know the cart's type by now so let's create it - if(type == "2K") - cartridge = new Cartridge2K(image, size, settings); - else if(type == "3E") - cartridge = new Cartridge3E(image, size, settings); - else if(type == "3F") - cartridge = new Cartridge3F(image, size, settings); - else if(type == "4A50") - cartridge = new Cartridge4A50(image, size, settings); - else if(type == "4K") - cartridge = new Cartridge4K(image, settings); - else if(type == "AR") - cartridge = new CartridgeAR(image, size, settings); - else if(type == "DPC") - cartridge = new CartridgeDPC(image, size, settings); - else if(type == "DPC+") - cartridge = new CartridgeDPCPlus(image, size, settings); - else if(type == "E0") - cartridge = new CartridgeE0(image, settings); - else if(type == "E7") - cartridge = new CartridgeE7(image, settings); - else if(type == "EF") - cartridge = new CartridgeEF(image, settings); - else if(type == "EFSC") - cartridge = new CartridgeEFSC(image, settings); - else if(type == "F4") - cartridge = new CartridgeF4(image, settings); - else if(type == "F4SC") - cartridge = new CartridgeF4SC(image, settings); - else if(type == "F6") - cartridge = new CartridgeF6(image, settings); - else if(type == "F6SC") - cartridge = new CartridgeF6SC(image, settings); - else if(type == "F8") - cartridge = new CartridgeF8(image, md5, settings); - else if(type == "F8SC") - cartridge = new CartridgeF8SC(image, settings); - else if(type == "FA" || type == "FASC") - cartridge = new CartridgeFA(image, settings); - else if(type == "FE") - cartridge = new CartridgeFE(image, settings); - else if(type == "MC") - cartridge = new CartridgeMC(image, size, settings); - else if(type == "F0" || type == "MB") - cartridge = new CartridgeF0(image, settings); - else if(type == "CV") - cartridge = new CartridgeCV(image, size, settings); - else if(type == "UA") - cartridge = new CartridgeUA(image, settings); - else if(type == "0840") - cartridge = new Cartridge0840(image, settings); - else if(type == "SB") - cartridge = new CartridgeSB(image, size, settings); - else if(type == "X07") - cartridge = new CartridgeX07(image, settings); - else - cerr << "ERROR: Invalid cartridge type " << type << " ..." << endl; - - if(size < 1024) - buf << " (" << size << "B) "; - else - buf << " (" << (size/1024) << "K) "; - myAboutString = buf.str(); - - return cartridge; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge::createFromMultiCart(const uInt8*& image, uInt32& size, - uInt32 numroms, string& md5, string& id, Settings& settings) -{ - // Get a piece of the larger image - uInt32 i = settings.getInt("romloadcount"); - size /= numroms; - image += i*size; - - // We need a new md5 and name - md5 = MD5(image, size); - ostringstream buf; - buf << " [G" << (i+1) << "]"; - id = buf.str(); - - // Move to the next game the next time this ROM is loaded - settings.setInt("romloadcount", (i+1)%numroms); - - if(size <= 2048) return "2K"; - else if(size == 4096) return "4K"; - else if(size == 8192) return "F8"; - else /* default */ return "4K"; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge::Cartridge(const Settings& settings) - : mySettings(settings), - myStartBank(0), - myBankChanged(true), - myCodeAccessBase(NULL), - myBankLocked(false) -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge::~Cartridge() -{ - if(myCodeAccessBase) - delete[] myCodeAccessBase; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::save(ofstream& out) -{ - int size = -1; - - const uInt8* image = getImage(size); - if(image == 0 || size <= 0) - { - cerr << "save not supported" << endl; - return false; - } - - for(int i=0; i= 10240 && size <= 10496) // ~10K - Pitfall2 - { - type = "DPC"; - } - else if(size == 12*1024) // 12K - { - type = "FA"; - } - else if(size == 16*1024) // 16K - { - if(isProbablySC(image, size)) - type = "F6SC"; - else if(isProbablyE7(image, size)) - type = "E7"; - else if(isProbably3E(image, size)) - type = "3E"; - else if(isProbably3F(image, size)) - type = "3F"; - else - type = "F6"; - } - else if(size == 29*1024) // 29K - { - type = "DPC+"; - } - else if(size == 32*1024) // 32K - { - if(isProbablySC(image, size)) - type = "F4SC"; - else if(isProbably3E(image, size)) - type = "3E"; - else if(isProbably3F(image, size)) - type = "3F"; - else if(isProbablyDPCplus(image, size)) - type = "DPC+"; - else - type = "F4"; - } - else if(size == 64*1024) // 64K - { - if(isProbably3E(image, size)) - type = "3E"; - else if(isProbably3F(image, size)) - type = "3F"; - else if(isProbably4A50(image, size)) - type = "4A50"; - else if(isProbablyEF(image, size)) - type = isProbablySC(image, size) ? "EFSC" : "EF"; - else if(isProbablyX07(image, size)) - type = "X07"; - else - type = "F0"; - } - else if(size == 128*1024) // 128K - { - if(isProbably3E(image, size)) - type = "3E"; - else if(isProbably3F(image, size)) - type = "3F"; - else if(isProbably4A50(image, size)) - type = "4A50"; - else if(isProbablySB(image, size)) - type = "SB"; - else - type = "MC"; - } - else if(size == 256*1024) // 256K - { - if(isProbably3E(image, size)) - type = "3E"; - else if(isProbably3F(image, size)) - type = "3F"; - else /*if(isProbablySB(image, size))*/ - type = "SB"; - } - else // what else can we do? - { - if(isProbably3E(image, size)) - type = "3E"; - else if(isProbably3F(image, size)) - type = "3F"; - else - type = "4K"; // Most common bankswitching type - } - - return type; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::searchForBytes(const uInt8* image, uInt32 imagesize, - const uInt8* signature, uInt32 sigsize, - uInt32 minhits) -{ - uInt32 count = 0; - for(uInt32 i = 0; i < imagesize - sigsize; ++i) - { - uInt32 matches = 0; - for(uInt32 j = 0; j < sigsize; ++j) - { - if(image[i+j] == signature[j]) - ++matches; - else - break; - } - if(matches == sigsize) - { - ++count; - i += sigsize; // skip past this signature 'window' entirely - } - if(count >= minhits) - break; - } - - return (count >= minhits); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablySC(const uInt8* image, uInt32 size) -{ - // We assume a Superchip cart contains the same bytes for its entire - // RAM area; obviously this test will fail if it doesn't - // The RAM area will be the first 256 bytes of each 4K bank - uInt32 banks = size / 4096; - for(uInt32 i = 0; i < banks; ++i) - { - uInt8 first = image[i*4096]; - for(uInt32 j = 0; j < 256; ++j) - { - if(image[i*4096+j] != first) - return false; - } - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbably0840(const uInt8* image, uInt32 size) -{ - // 0840 cart bankswitching is triggered by accessing addresses 0x0800 - // or 0x0840 - uInt8 signature1[2][3] = { - { 0xAD, 0x00, 0x08 }, // LDA $0800 - { 0xAD, 0x40, 0x08 } // LDA $0840 - }; - for(uInt32 i = 0; i < 2; ++i) - if(searchForBytes(image, size, signature1[i], 3, 1)) - return true; - - uInt8 signature2[2][4] = { - { 0x0C, 0x00, 0x08, 0x4C }, // NOP $0800; JMP ... - { 0x0C, 0xFF, 0x0F, 0x4C } // NOP $0FFF; JMP ... - }; - for(uInt32 i = 0; i < 2; ++i) - if(searchForBytes(image, size, signature2[i], 4, 1)) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbably3E(const uInt8* image, uInt32 size) -{ - // 3E cart bankswitching is triggered by storing the bank number - // in address 3E using 'STA $3E', commonly followed by an - // immediate mode LDA - uInt8 signature[] = { 0x85, 0x3E, 0xA9, 0x00 }; // STA $3E; LDA #$00 - return searchForBytes(image, size, signature, 4, 1); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbably3F(const uInt8* image, uInt32 size) -{ - // 3F cart bankswitching is triggered by storing the bank number - // in address 3F using 'STA $3F' - // We expect it will be present at least 2 times, since there are - // at least two banks - uInt8 signature[] = { 0x85, 0x3F }; // STA $3F - return searchForBytes(image, size, signature, 2, 2); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbably4A50(const uInt8* image, uInt32 size) -{ - // 4A50 carts store address $4A50 at the NMI vector, which - // in this scheme is always in the last page of ROM at - // $1FFA - $1FFB (at least this is true in rev 1 of the format) - if(image[size-6] == 0x50 && image[size-5] == 0x4A) - return true; - - // Program starts at $1Fxx with NOP $6Exx or NOP $6Fxx? - if(((image[0xfffd] & 0x1f) == 0x1f) && - (image[image[0xfffd] * 256 + image[0xfffc]] == 0x0c) && - ((image[image[0xfffd] * 256 + image[0xfffc] + 2] & 0xfe) == 0x6e)) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyCV(const uInt8* image, uInt32 size) -{ - // CV RAM access occurs at addresses $f3ff and $f400 - // These signatures are attributed to the MESS project - uInt8 signature[2][3] = { - { 0x9D, 0xFF, 0xF3 }, // STA $F3FF - { 0x99, 0x00, 0xF4 } // STA $F400 - }; - if(searchForBytes(image, size, signature[0], 3, 1)) - return true; - else - return searchForBytes(image, size, signature[1], 3, 1); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyDPCplus(const uInt8* image, uInt32 size) -{ - // DPC+ ARM code has 2 occurrences of the string DPC+ - uInt8 signature[] = { 0x44, 0x50, 0x43, 0x2B }; // DPC+ - return searchForBytes(image, size, signature, 4, 2); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyE0(const uInt8* image, uInt32 size) -{ - // E0 cart bankswitching is triggered by accessing addresses - // $FE0 to $FF9 using absolute non-indexed addressing - // To eliminate false positives (and speed up processing), we - // search for only certain known signatures - // Thanks to "stella@casperkitty.com" for this advice - // These signatures are attributed to the MESS project - uInt8 signature[8][3] = { - { 0x8D, 0xE0, 0x1F }, // STA $1FE0 - { 0x8D, 0xE0, 0x5F }, // STA $5FE0 - { 0x8D, 0xE9, 0xFF }, // STA $FFE9 - { 0x0C, 0xE0, 0x1F }, // NOP $1FE0 - { 0xAD, 0xE0, 0x1F }, // LDA $1FE0 - { 0xAD, 0xE9, 0xFF }, // LDA $FFE9 - { 0xAD, 0xED, 0xFF }, // LDA $FFED - { 0xAD, 0xF3, 0xBF } // LDA $BFF3 - }; - for(uInt32 i = 0; i < 8; ++i) - if(searchForBytes(image, size, signature[i], 3, 1)) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyE7(const uInt8* image, uInt32 size) -{ - // E7 cart bankswitching is triggered by accessing addresses - // $FE0 to $FE6 using absolute non-indexed addressing - // To eliminate false positives (and speed up processing), we - // search for only certain known signatures - // Thanks to "stella@casperkitty.com" for this advice - // These signatures are attributed to the MESS project - uInt8 signature[7][3] = { - { 0xAD, 0xE2, 0xFF }, // LDA $FFE2 - { 0xAD, 0xE5, 0xFF }, // LDA $FFE5 - { 0xAD, 0xE5, 0x1F }, // LDA $1FE5 - { 0xAD, 0xE7, 0x1F }, // LDA $1FE7 - { 0x0C, 0xE7, 0x1F }, // NOP $1FE7 - { 0x8D, 0xE7, 0xFF }, // STA $FFE7 - { 0x8D, 0xE7, 0x1F } // STA $1FE7 - }; - for(uInt32 i = 0; i < 7; ++i) - if(searchForBytes(image, size, signature[i], 3, 1)) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyEF(const uInt8* image, uInt32 size) -{ - // EF cart bankswitching switches banks by accessing addresses 0xFE0 - // to 0xFEF, usually with either a NOP or LDA - // It's likely that the code will switch to bank 0, so that's what is tested - uInt8 signature[2][3] = { - { 0x0C, 0xE0, 0xFF }, // NOP $FFE0 - { 0xAD, 0xE0, 0xFF } // LDA $FFE0 - }; - if(searchForBytes(image, size, signature[0], 3, 1)) - return true; - else - return searchForBytes(image, size, signature[1], 3, 1); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyFE(const uInt8* image, uInt32 size) -{ - // FE bankswitching is very weird, but always seems to include a - // 'JSR $xxxx' - // These signatures are attributed to the MESS project - uInt8 signature[4][5] = { - { 0x20, 0x00, 0xD0, 0xC6, 0xC5 }, // JSR $D000; DEC $C5 - { 0x20, 0xC3, 0xF8, 0xA5, 0x82 }, // JSR $F8C3; LDA $82 - { 0xD0, 0xFB, 0x20, 0x73, 0xFE }, // BNE $FB; JSR $FE73 - { 0x20, 0x00, 0xF0, 0x84, 0xD6 } // JSR $F000; STY $D6 - }; - for(uInt32 i = 0; i < 4; ++i) - if(searchForBytes(image, size, signature[i], 5, 1)) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablySB(const uInt8* image, uInt32 size) -{ - // SB cart bankswitching switches banks by accessing address 0x0800 - uInt8 signature[2][3] = { - { 0xBD, 0x00, 0x08 }, // LDA $0800,x - { 0xAD, 0x00, 0x08 } // LDA $0800 - }; - if(searchForBytes(image, size, signature[0], 3, 1)) - return true; - else - return searchForBytes(image, size, signature[1], 3, 1); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyUA(const uInt8* image, uInt32 size) -{ - // UA cart bankswitching switches to bank 1 by accessing address 0x240 - // using 'STA $240' or 'LDA $240' - uInt8 signature[3][3] = { - { 0x8D, 0x40, 0x02 }, // STA $240 - { 0xAD, 0x40, 0x02 }, // LDA $240 - { 0xBD, 0x1F, 0x02 } // LDA $21F,X - }; - for(uInt32 i = 0; i < 3; ++i) - if(searchForBytes(image, size, signature[i], 3, 1)) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::isProbablyX07(const uInt8* image, uInt32 size) -{ - // X07 bankswitching switches to bank 0, 1, 2, etc by accessing address 0x08xd - uInt8 signature[3][3] = { - { 0xAD, 0x0D, 0x08 }, // LDA $080D - { 0xAD, 0x1D, 0x08 }, // LDA $081D - { 0xAD, 0x2D, 0x08 } // LDA $082D - }; - for(uInt32 i = 0; i < 3; ++i) - if(searchForBytes(image, size, signature[i], 3, 1)) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge::Cartridge(const Cartridge& cart) - : mySettings(cart.mySettings) -{ - assert(false); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge& Cartridge::operator = (const Cartridge&) -{ - assert(false); - return *this; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge::myAboutString= ""; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart.hxx deleted file mode 100644 index 47c7f14108..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart.hxx +++ /dev/null @@ -1,368 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart.hxx 2231 2011-05-10 15:04:19Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE_HXX -#define CARTRIDGE_HXX - -#include -#include - -class Cartridge; -class Properties; - -#include "bspf.hxx" -#include "Array.hxx" -#include "Device.hxx" -#include "Settings.hxx" - -#ifdef DEBUGGER_SUPPORT -struct RamArea { - uInt16 start; uInt16 size; uInt16 roffset; uInt16 woffset; -}; -typedef Common::Array RamAreaList; -#endif - -/** - A cartridge is a device which contains the machine code for a - game and handles any bankswitching performed by the cartridge. - A 'bank' is defined as a 4K block that is visible in the - 0x1000-0x2000 area (or its mirrors). - - @author Bradford W. Mott - @version $Id: Cart.hxx 2231 2011-05-10 15:04:19Z stephena $ -*/ -class Cartridge : public Device -{ - public: - /** - Create a new cartridge object allocated on the heap. The - type of cartridge created depends on the properties object. - - @param image A pointer to the ROM image - @param size The size of the ROM image - @param md5 The md5sum for the given ROM image (can be updated) - @param name The name of the ROM (can be updated) - @param dtype The detected bankswitch type of the ROM image - @param id Any extra info about the ROM (currently which part - of a multiload game is being accessed - @param settings The settings associated with the system - @return Pointer to the new cartridge object allocated on the heap - */ - static Cartridge* create(const uInt8* image, uInt32 size, string& md5, - string& dtype, string& id, Settings& settings); - - /** - Create a new cartridge - - @param settings A reference to the various settings (read-only) - */ - Cartridge(const Settings& settings); - - /** - Destructor - */ - virtual ~Cartridge(); - - /** - Query some information about this cartridge. - */ - static const string& about() { return myAboutString; } - - /** - Save the internal (patched) ROM image. - - @param out The output file stream to save the image - */ - bool save(ofstream& out); - - /** - Lock/unlock bankswitching capability. The debugger will lock - the banks before querying the cart state, otherwise reading values - could inadvertantly cause a bankswitch to occur. - */ - void lockBank() { myBankLocked = true; } - void unlockBank() { myBankLocked = false; } - bool bankLocked() { return myBankLocked; } - - /** - Get the default startup bank for a cart. This is the bank where - the system will look at address 0xFFFC to determine where to - start running code. - - @return The startup bank - */ - uInt16 startBank(); - - /** - Answer whether the bank has changed since the last time this - method was called. Each cart class is able to override this - method to deal with its specific functionality. In those cases, - the derived class is still responsible for calling this base - function. - - @return Whether the bank was changed - */ - virtual bool bankChanged(); - -#ifdef DEBUGGER_SUPPORT - const RamAreaList& ramAreas() { return myRamAreaList; } -#endif - - public: - ////////////////////////////////////////////////////////////////////// - // The following methods are cart-specific and must be implemented - // in derived classes. - ////////////////////////////////////////////////////////////////////// - /** - Set the specified bank. - */ - virtual bool bank(uInt16 bank) = 0; - - /** - Get the current bank. - */ - virtual uInt16 bank() const = 0; - - /** - Query the number of banks supported by the cartridge. Note that - we're counting the number of 4K 'blocks' that can be swapped into - the 4K address space in the 2600. As such, it's possible to have - a ROM that is larger than 4K *but* only consists of 1 bank. - Such cases occur when pages of ROM can be swapped in and out, - yet the 4K image is considered the same. - */ - virtual uInt16 bankCount() const = 0; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - virtual bool patch(uInt16 address, uInt8 value) = 0; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - virtual const uInt8* getImage(int& size) const = 0; - - /** - Save the current state of this device to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - virtual bool save(Serializer& out) const = 0; - - /** - Load the current state of this device from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - virtual bool load(Serializer& in) = 0; - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - virtual string name() const = 0; - - protected: - /** - Add the given area to the RamArea list for this cart. - - @param start The beginning of the RAM area (0x0000 - 0x2000) - @param size Total number of bytes of area - @param roffset Offset to use when reading from RAM (read port) - @param woffset Offset to use when writing to RAM (write port) - */ - void registerRamArea(uInt16 start, uInt16 size, uInt16 roffset, uInt16 woffset); - - /** - Indicate that an illegal read from a write port has occurred. - - @param address The address of the illegal read - */ - void triggerReadFromWritePort(uInt16 address); - - /** - Create an array that holds code-access information for every byte - of the ROM (indicated by 'size'). Note that this is only used by - the debugger, and is unavailable otherwise. - - @param size The size of the code-access array to create - */ - void createCodeAccessBase(uInt32 size); - - private: - /** - Get an image pointer and size for a ROM that is part of a larger, - multi-ROM image. - - @param image A pointer to the ROM image - @param size The size of the ROM image - @param numroms The number of ROMs in the multicart - @param md5 The md5sum for the specific cart in the ROM image - @param id The ID for the specific cart in the ROM image - @param settings The settings associated with the system - @return The bankswitch type for the specific cart in the ROM image - */ - static string createFromMultiCart(const uInt8*& image, uInt32& size, - uInt32 numroms, string& md5, string& id, Settings& settings); - - /** - Try to auto-detect the bankswitching type of the cartridge - - @param image A pointer to the ROM image - @param size The size of the ROM image - @return The "best guess" for the cartridge type - */ - static string autodetectType(const uInt8* image, uInt32 size); - - /** - Search the image for the specified byte signature - - @param image A pointer to the ROM image - @param imagesize The size of the ROM image - @param signature The byte sequence to search for - @param sigsize The number of bytes in the signature - @param minhits The minimum number of times a signature is to be found - - @return True if the signature was found at least 'minhits' time, else false - */ - static bool searchForBytes(const uInt8* image, uInt32 imagesize, - const uInt8* signature, uInt32 sigsize, - uInt32 minhits); - - /** - Returns true if the image is probably a SuperChip (256 bytes RAM) - */ - static bool isProbablySC(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a 0840 bankswitching cartridge - */ - static bool isProbably0840(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a 3E bankswitching cartridge - */ - static bool isProbably3E(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a 3F bankswitching cartridge - */ - static bool isProbably3F(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a 4A50 bankswitching cartridge - */ - static bool isProbably4A50(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a CV bankswitching cartridge - */ - static bool isProbablyCV(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a DPC+ bankswitching cartridge - */ - static bool isProbablyDPCplus(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a E0 bankswitching cartridge - */ - static bool isProbablyE0(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a E7 bankswitching cartridge - */ - static bool isProbablyE7(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a EF bankswitching cartridge - */ - static bool isProbablyEF(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably an F6 bankswitching cartridge - */ - static bool isProbablyF6(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably an FE bankswitching cartridge - */ - static bool isProbablyFE(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a SB bankswitching cartridge - */ - static bool isProbablySB(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably a UA bankswitching cartridge - */ - static bool isProbablyUA(const uInt8* image, uInt32 size); - - /** - Returns true if the image is probably an X07 bankswitching cartridge - */ - static bool isProbablyX07(const uInt8* image, uInt32 size); - - protected: - // Settings class for the application - const Settings& mySettings; - - // The startup bank to use (where to look for the reset vector address) - uInt16 myStartBank; - - // Indicates if the bank has changed somehow (a bankswitch has occurred) - bool myBankChanged; - - // The array containing information about every byte of ROM indicating - // whether it is used as code. - uInt8* myCodeAccessBase; - - private: -#ifdef DEBUGGER_SUPPORT - // Contains RamArea entries for those carts with accessible RAM. - RamAreaList myRamAreaList; -#endif - - // If myBankLocked is true, ignore attempts at bankswitching. This is used - // by the debugger, when disassembling/dumping ROM. - bool myBankLocked; - - // Contains info about this cartridge in string format - static string myAboutString; - - // Copy constructor isn't supported by cartridges so make it private - Cartridge(const Cartridge&); - - // Assignment operator isn't supported by cartridges so make it private - Cartridge& operator = (const Cartridge&); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart0840.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart0840.cpp deleted file mode 100644 index 7c9da679ba..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart0840.cpp +++ /dev/null @@ -1,232 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart0840.cxx,v 1.0 2006/11/17 -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "Cart0840.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge0840::Cartridge0840(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 8192); - createCodeAccessBase(8192); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge0840::~Cartridge0840() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge0840::reset() -{ - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge0840::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - // Get the page accessing methods for the hot spots since they overlap - // areas within the TIA we'll need to forward requests to the TIA - myHotSpotPageAccess[0] = mySystem->getPageAccess(0x0800 >> shift); - myHotSpotPageAccess[1] = mySystem->getPageAccess(0x0900 >> shift); - myHotSpotPageAccess[2] = mySystem->getPageAccess(0x0A00 >> shift); - myHotSpotPageAccess[3] = mySystem->getPageAccess(0x0B00 >> shift); - myHotSpotPageAccess[4] = mySystem->getPageAccess(0x0C00 >> shift); - myHotSpotPageAccess[5] = mySystem->getPageAccess(0x0D00 >> shift); - myHotSpotPageAccess[6] = mySystem->getPageAccess(0x0E00 >> shift); - myHotSpotPageAccess[7] = mySystem->getPageAccess(0x0F00 >> shift); - - // Set the page accessing methods for the hot spots - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - for(uInt32 i = 0x0800; i < 0x0FFF; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Install pages for bank 0 - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge0840::peek(uInt16 address) -{ - address &= 0x1840; - - // Switch banks if necessary - switch(address) - { - case 0x0800: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0840: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - if(!(address & 0x1000)) - { - // Because of the way we've set up accessing above, we can only - // get here when the addresses are from 0x800 - 0xFFF - int hotspot = ((address & 0x0F00) >> 8) - 8; - return myHotSpotPageAccess[hotspot].device->peek(address); - } - - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::poke(uInt16 address, uInt8 value) -{ - address &= 0x1840; - - // Switch banks if necessary - switch(address) - { - case 0x0800: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0840: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - if(!(address & 0x1000)) - { - // Because of the way we've set up accessing above, we can only - // get here when the addresses are from 0x800 - 0xFFF - int hotspot = ((address & 0x0F00) >> 8) - 8; - myHotSpotPageAccess[hotspot].device->poke(address, value); - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1000; address < 0x2000; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge0840::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge0840::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0fff)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge0840::getImage(int& size) const -{ - size = 8192; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge0840::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16)in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge0840::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart0840.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart0840.hxx deleted file mode 100644 index 9cbe1bd824..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart0840.hxx +++ /dev/null @@ -1,148 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart0840.hxx,v 1.0 2006/11/14 -//============================================================================ - -#ifndef CARTRIDGE0840_HXX -#define CARTRIDGE0840_HXX - -#include "bspf.hxx" -#include "Cart.hxx" -#include "System.hxx" - -/** - Cartridge class used for 0840 "Econobanking" 8K bankswitched games. There - are two 4K banks. - - @author Fred X. Quimby -*/ -class Cartridge0840 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - Cartridge0840(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~Cartridge0840(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "Cartridge0840"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // The 8K ROM image of the cartridge - uInt8 myImage[8192]; - - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // Previous Device's page access - System::PageAccess myHotSpotPageAccess[8]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart2K.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart2K.cpp deleted file mode 100644 index f6778f0f37..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart2K.cpp +++ /dev/null @@ -1,168 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart2K.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "Cart2K.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge2K::Cartridge2K(const uInt8* image, uInt32 size, const Settings& settings) - : Cartridge(settings) -{ - // Size can be a maximum of 2K - if(size > 2048) size = 2048; - - // Set image size to closest power-of-two for the given size - mySize = 1; - while(mySize < size) - mySize <<= 1; - - // The smallest addressable area by Stella is 64 bytes - // This should really be read from the System, but for now I'm going - // to cheat a little and hard-code it to 64 (aka 2^6) - if(mySize < 64) - mySize = 64; - - // Initialize ROM with illegal 6502 opcode that causes a real 6502 to jam - myImage = new uInt8[mySize]; - memset(myImage, 0x02, mySize); - - // Copy the ROM image into my buffer - memcpy(myImage, image, size); - createCodeAccessBase(mySize); - - // Set mask for accessing the image buffer - // This is guaranteed to work, as mySize is a power of two - myMask = mySize - 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge2K::~Cartridge2K() -{ - delete[] myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge2K::reset() -{ - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge2K::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - // Map ROM image into the system - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - for(uInt32 address = 0x1000; address < 0x2000; address += (1 << shift)) - { - access.directPeekBase = &myImage[address & myMask]; - access.codeAccessBase = &myCodeAccessBase[address & myMask]; - mySystem->setPageAccess(address >> shift, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge2K::peek(uInt16 address) -{ - return myImage[address & myMask]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::poke(uInt16, uInt8) -{ - // This is ROM so poking has no effect :-) - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::bank(uInt16 bank) -{ - // Doesn't support bankswitching - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge2K::bank() const -{ - // Doesn't support bankswitching - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge2K::bankCount() const -{ - return 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::patch(uInt16 address, uInt8 value) -{ - myImage[address & myMask] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge2K::getImage(int& size) const -{ - size = mySize; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::save(Serializer& out) const -{ - try - { - out.putString(name()); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge2K::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge2K::load" << endl << " " << msg << endl; - return false; - } - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart2K.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart2K.hxx deleted file mode 100644 index 9091d0d459..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart2K.hxx +++ /dev/null @@ -1,152 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart2K.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE2K_HXX -#define CARTRIDGE2K_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the standard Atari 2K cartridge. These cartridges - are not bankswitched, however, the data repeats twice in the - 2600's 4K cartridge addressing space. - - @author Bradford W. Mott - @version $Id: Cart2K.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Cartridge2K : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param size The size of the ROM image (<= 2048 bytes) - @param settings A reference to the various settings (read-only) - */ - Cartridge2K(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~Cartridge2K(); - - public: - /** - Reset cartridge to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "Cartridge2K"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Pointer to a dynamically allocated ROM image of the cartridge - uInt8* myImage; - - // Size of the ROM image - uInt32 mySize; - - // Mask to use for mirroring - uInt32 myMask; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3E.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3E.cpp deleted file mode 100644 index ed45bd8cdc..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3E.cpp +++ /dev/null @@ -1,318 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart3E.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "TIA.hxx" -#include "Cart3E.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge3E::Cartridge3E(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - mySize(size) -{ - // Allocate array for the ROM image - myImage = new uInt8[mySize]; - - // Copy the ROM image into my buffer - memcpy(myImage, image, mySize); - createCodeAccessBase(mySize + 32768); - - // This cart can address a 1024 byte bank of RAM @ 0x1000 - // However, it may not be addressable all the time (it may be swapped out) - // so probably most of the time, the area will point to ROM instead - registerRamArea(0x1000, 1024, 0x00, 0x400); // 1024 bytes RAM @ 0x1000 - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge3E::~Cartridge3E() -{ - delete[] myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3E::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 32768; ++i) - myRam[i] = mySystem->randGenerator().next(); - else - memset(myRam, 0, 32768); - - // We'll map the startup bank into the first segment upon reset - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3E::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1800 & mask) == 0); - - System::PageAccess access(0, 0, 0, this, System::PA_READWRITE); - - // Set the page accessing methods for the hot spots (for 100% emulation - // we need to chain any accesses below 0x40 to the TIA. Our poke() method - // does this via mySystem->tiaPoke(...), at least until we come up with a - // cleaner way to do it). - for(uInt32 i = 0x00; i < 0x40; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Setup the second segment to always point to the last ROM slice - access.type = System::PA_READ; - for(uInt32 j = 0x1800; j < 0x2000; j += (1 << shift)) - { - access.directPeekBase = &myImage[(mySize - 2048) + (j & 0x07FF)]; - access.codeAccessBase = &myCodeAccessBase[(mySize - 2048) + (j & 0x07FF)]; - mySystem->setPageAccess(j >> shift, access); - } - - // Install pages for the startup bank into the first segment - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge3E::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - if(address < 0x0800) - { - if(myCurrentBank < 256) - return myImage[(address & 0x07FF) + (myCurrentBank << 11)]; - else - { - if(address < 0x0400) - return myRam[(address & 0x03FF) + ((myCurrentBank - 256) << 10)]; - else - { - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRam[(address & 0x03FF) + ((myCurrentBank - 256) << 10)] = value; - } - } - } - } - else - { - return myImage[(address & 0x07FF) + mySize - 2048]; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::poke(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - // Switch banks if necessary. Armin (Kroko) says there are no mirrored - // hotspots. - if(address == 0x003F) - { - bank(value); - } - else if(address == 0x003E) - { - bank(value + 256); - } - - // Pass the poke through to the TIA. In a real Atari, both the cart and the - // TIA see the address lines, and both react accordingly. In Stella, each - // 64-byte chunk of address space is "owned" by only one device. If we - // don't chain the poke to the TIA, then the TIA can't see it... - mySystem->tia().poke(address, value); - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - if(bank < 256) - { - // Make sure the bank they're asking for is reasonable - if(((uInt32)bank << 11) < uInt32(mySize)) - { - myCurrentBank = bank; - } - else - { - // Oops, the bank they're asking for isn't valid so let's wrap it - // around to a valid bank number - myCurrentBank = bank % (mySize >> 11); - } - - uInt32 offset = myCurrentBank << 11; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1000; address < 0x1800; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x07FF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x07FF)]; - mySystem->setPageAccess(address >> shift, access); - } - } - else - { - bank -= 256; - bank %= 32; - myCurrentBank = bank + 256; - - uInt32 offset = bank << 10; - uInt16 shift = mySystem->pageShift(); - uInt32 address; - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map read-port RAM image into the system - for(address = 0x1000; address < 0x1400; address += (1 << shift)) - { - access.directPeekBase = &myRam[offset + (address & 0x03FF)]; - access.codeAccessBase = &myCodeAccessBase[mySize + offset + (address & 0x03FF)]; - mySystem->setPageAccess(address >> shift, access); - } - - access.directPeekBase = 0; - access.type = System::PA_WRITE; - - // Map write-port RAM image into the system - for(address = 0x1400; address < 0x1800; address += (1 << shift)) - { - access.directPokeBase = &myRam[offset + (address & 0x03FF)]; - access.codeAccessBase = &myCodeAccessBase[mySize + offset + (address & 0x03FF)]; - mySystem->setPageAccess(address >> shift, access); - } - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3E::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3E::bankCount() const -{ - // Because the RAM banks always start at 256 and above, we require the - // number of ROM banks to be 256 - // If the RAM banks were simply appended to the number of actual - // ROM banks, bank numbers would be ambiguous (ie, would bank 128 be - // the last bank of ROM, or one of the banks of RAM?) - return 256 + 32; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0800) - { - if(myCurrentBank < 256) - myImage[(address & 0x07FF) + (myCurrentBank << 11)] = value; - else - myRam[(address & 0x03FF) + ((myCurrentBank - 256) << 10)] = value; - } - else - myImage[(address & 0x07FF) + mySize - 2048] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge3E::getImage(int& size) const -{ - size = mySize; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - - // Output RAM - out.putInt(32768); - for(uInt32 addr = 0; addr < 32768; ++addr) - out.putByte((char)myRam[addr]); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge3E::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - - // Input RAM - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 addr = 0; addr < limit; ++addr) - myRam[addr] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge3E::load" << endl << " " << msg << endl; - return false; - } - - // Now, go to the current bank - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3E.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3E.hxx deleted file mode 100644 index 89d660becc..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3E.hxx +++ /dev/null @@ -1,183 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart3E.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE3E_HXX -#define CARTRIDGE3E_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the cartridge class for Tigervision's bankswitched - games with RAM (basically, 3F plus up to 32K of RAM). This - code is basically Brad's Cart3F code plus 32K RAM support. - - In this bankswitching scheme the 2600's 4K cartridge - address space is broken into two 2K segments. The last 2K - segment always points to the last 2K of the ROM image. - - The lower 2K of address space maps to either one of the 2K ROM banks - (up to 256 of them, though only 240 are supposed to be used for - compatibility with the Kroko Cart and Cuttle Cart 2), or else one - of the 1K RAM banks (up to 32 of them). Like other carts with RAM, - this takes up twice the address space that it should: The lower 1K - is the read port, and the upper 1K is the write port (maps to the - same memory). - - To map ROM, the desired bank number of the first 2K segment is selected - by storing its value into $3F. To map RAM in the first 2K segment - instead, store the RAM bank number into $3E. - - This implementation of 3E bankswitching numbers the ROM banks 0 to - 256, and the RAM banks 256 to 287. This is done because the public - bankswitching interface requires us to use one bank number, not one - bank number plus the knowledge of whether it's RAM or ROM. - - All 32K of potential RAM is available to a game using this class, even - though real cartridges might not have the full 32K: We have no way to - tell how much RAM the game expects. This may change in the future (we - may add a stella.pro property for this), but for now it shouldn't cause - any problems. (Famous last words...) - - @author B. Watson - @version $Id: Cart3E.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ - -class Cartridge3E : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image and size - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - Cartridge3E(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~Cartridge3E(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "Cartridge3E"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active for the first segment - uInt16 myCurrentBank; - - // Pointer to a dynamically allocated ROM image of the cartridge - uInt8* myImage; - - // RAM contents. For now every ROM gets all 32K of potential RAM - uInt8 myRam[32 * 1024]; - - // Size of the ROM image - uInt32 mySize; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3F.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3F.cpp deleted file mode 100644 index 5e3098449c..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3F.cpp +++ /dev/null @@ -1,226 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart3F.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "TIA.hxx" -#include "Cart3F.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge3F::Cartridge3F(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - mySize(size) -{ - // Allocate array for the ROM image - myImage = new uInt8[mySize]; - - // Copy the ROM image into my buffer - memcpy(myImage, image, mySize); - createCodeAccessBase(mySize); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge3F::~Cartridge3F() -{ - delete[] myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3F::reset() -{ - // We'll map the startup bank into the first segment upon reset - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3F::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1800 & mask) == 0); - - System::PageAccess access(0, 0, 0, this, System::PA_READWRITE); - - // Set the page accessing methods for the hot spots (for 100% emulation - // we need to chain any accesses below 0x40 to the TIA. Our poke() method - // does this via mySystem->tiaPoke(...), at least until we come up with a - // cleaner way to do it). - for(uInt32 i = 0x00; i < 0x40; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Setup the second segment to always point to the last ROM slice - access.type = System::PA_READ; - for(uInt32 j = 0x1800; j < 0x2000; j += (1 << shift)) - { - access.directPeekBase = &myImage[(mySize - 2048) + (j & 0x07FF)]; - access.codeAccessBase = &myCodeAccessBase[(mySize - 2048) + (j & 0x07FF)]; - mySystem->setPageAccess(j >> shift, access); - } - - // Install pages for startup bank into the first segment - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge3F::peek(uInt16 address) -{ - address &= 0x0FFF; - - if(address < 0x0800) - { - return myImage[(address & 0x07FF) + (myCurrentBank << 11)]; - } - else - { - return myImage[(address & 0x07FF) + mySize - 2048]; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::poke(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if(address <= 0x003F) - { - bank(value); - } - - // Pass the poke through to the TIA. In a real Atari, both the cart and the - // TIA see the address lines, and both react accordingly. In Stella, each - // 64-byte chunk of address space is "owned" by only one device. If we - // don't chain the poke to the TIA, then the TIA can't see it... - mySystem->tia().poke(address, value); - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Make sure the bank they're asking for is reasonable - if(((uInt32)bank << 11) < mySize) - { - myCurrentBank = bank; - } - else - { - // Oops, the bank they're asking for isn't valid so let's wrap it - // around to a valid bank number - myCurrentBank = bank % (mySize >> 11); - } - - uInt32 offset = myCurrentBank << 11; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1000; address < 0x1800; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x07FF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x07FF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3F::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3F::bankCount() const -{ - return mySize >> 11; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0800) - myImage[(address & 0x07FF) + (myCurrentBank << 11)] = value; - else - myImage[(address & 0x07FF) + mySize - 2048] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge3F::getImage(int& size) const -{ - size = mySize; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge3F::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge3F::load" << endl << " " << msg << endl; - return false; - } - - // Now, go to the current bank - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3F.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3F.hxx deleted file mode 100644 index 8ce19f4ce3..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart3F.hxx +++ /dev/null @@ -1,157 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart3F.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE3F_HXX -#define CARTRIDGE3F_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the cartridge class for Tigervision's bankswitched - games. In this bankswitching scheme the 2600's 4K cartridge - address space is broken into two 2K segments. The last 2K - segment always points to the last 2K of the ROM image. The - desired bank number of the first 2K segment is selected by - storing its value into $3F. Actually, any write to location - $00 to $3F will change banks. Although, the Tigervision games - only used 8K this bankswitching scheme supports up to 512K. - - @author Bradford W. Mott - @version $Id: Cart3F.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Cartridge3F : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image and size - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - Cartridge3F(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~Cartridge3F(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "Cartridge3F"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active for the first segment - uInt16 myCurrentBank; - - // Pointer to a dynamically allocated ROM image of the cartridge - uInt8* myImage; - - // Size of the ROM image - uInt32 mySize; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4A50.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4A50.cpp deleted file mode 100644 index 06c7d3464d..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4A50.cpp +++ /dev/null @@ -1,515 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart4A50.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "M6532.hxx" -#include "TIA.hxx" -#include "Cart4A50.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge4A50::Cartridge4A50(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - // Supported file sizes are 32/64/128K, which are duplicated if necessary - if(size < 65536) size = 32768; - else if(size < 131072) size = 65536; - else size = 131072; - for(uInt32 slice = 0; slice < 131072 / size; ++slice) - memcpy(myImage + (slice*size), image, size); - - // We use System::PageAccess.codeAccessBase, but don't allow its use - // through a pointer, since the address space of 4A50 carts can change - // at the instruction level, and PageAccess is normally defined at an - // interval of 64 bytes - // - // Instead, access will be through the getAccessFlags and setAccessFlags - // methods below - createCodeAccessBase(131072 + 32768); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge4A50::~Cartridge4A50() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4A50::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 32768; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 32768); - - mySliceLow = mySliceMiddle = mySliceHigh = 0; - myIsRomLow = myIsRomMiddle = myIsRomHigh = true; - - myLastData = 0xff; - myLastAddress = 0xffff; - - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4A50::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - // Map all of the accesses to call peek and poke (We don't yet indicate RAM areas) - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - for(uInt32 i = 0x1000; i < 0x2000; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Mirror all access in TIA and RIOT; by doing so we're taking responsibility - // for that address space in peek and poke below. - mySystem->tia().install(system, *this); - mySystem->m6532().install(system, *this); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge4A50::peek(uInt16 address) -{ - uInt8 value = 0; - - if(!(address & 0x1000)) // Hotspots below 0x1000 - { - // Check for RAM or TIA mirroring - uInt16 lowAddress = address & 0x3ff; - if(lowAddress & 0x80) - value = mySystem->m6532().peek(address); - else if(!(lowAddress & 0x200)) - value = mySystem->tia().peek(address); - - checkBankSwitch(address, value); - } - else - { - if((address & 0x1800) == 0x1000) // 2K region from 0x1000 - 0x17ff - { - value = myIsRomLow ? myImage[(address & 0x7ff) + mySliceLow] - : myRAM[(address & 0x7ff) + mySliceLow]; - } - else if(((address & 0x1fff) >= 0x1800) && // 1.5K region from 0x1800 - 0x1dff - ((address & 0x1fff) <= 0x1dff)) - { - value = myIsRomMiddle ? myImage[(address & 0x7ff) + mySliceMiddle + 0x10000] - : myRAM[(address & 0x7ff) + mySliceMiddle]; - } - else if((address & 0x1f00) == 0x1e00) // 256B region from 0x1e00 - 0x1eff - { - value = myIsRomHigh ? myImage[(address & 0xff) + mySliceHigh + 0x10000] - : myRAM[(address & 0xff) + mySliceHigh]; - } - else if((address & 0x1f00) == 0x1f00) // 256B region from 0x1f00 - 0x1fff - { - value = myImage[(address & 0xff) + 0x1ff00]; - if(!bankLocked() && ((myLastData & 0xe0) == 0x60) && - ((myLastAddress >= 0x1000) || (myLastAddress < 0x200))) - mySliceHigh = (mySliceHigh & 0xf0ff) | ((address & 0x8) << 8) | - ((address & 0x70) << 4); - } - } - myLastData = value; - myLastAddress = address & 0x1fff; - - return value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4A50::poke(uInt16 address, uInt8 value) -{ - if(!(address & 0x1000)) // Hotspots below 0x1000 - { - // Check for RAM or TIA mirroring - uInt16 lowAddress = address & 0x3ff; - if(lowAddress & 0x80) - mySystem->m6532().poke(address, value); - else if(!(lowAddress & 0x200)) - mySystem->tia().poke(address, value); - - checkBankSwitch(address, value); - } - else - { - if((address & 0x1800) == 0x1000) // 2K region at 0x1000 - 0x17ff - { - if(!myIsRomLow) - { - myRAM[(address & 0x7ff) + mySliceLow] = value; - myBankChanged = true; - } - } - else if(((address & 0x1fff) >= 0x1800) && // 1.5K region at 0x1800 - 0x1dff - ((address & 0x1fff) <= 0x1dff)) - { - if(!myIsRomMiddle) - { - myRAM[(address & 0x7ff) + mySliceMiddle] = value; - myBankChanged = true; - } - } - else if((address & 0x1f00) == 0x1e00) // 256B region at 0x1e00 - 0x1eff - { - if(!myIsRomHigh) - { - myRAM[(address & 0xff) + mySliceHigh] = value; - myBankChanged = true; - } - } - else if((address & 0x1f00) == 0x1f00) // 256B region at 0x1f00 - 0x1fff - { - if(!bankLocked() && ((myLastData & 0xe0) == 0x60) && - ((myLastAddress >= 0x1000) || (myLastAddress < 0x200))) - { - mySliceHigh = (mySliceHigh & 0xf0ff) | ((address & 0x8) << 8) | - ((address & 0x70) << 4); - myBankChanged = true; - } - } - } - myLastData = value; - myLastAddress = address & 0x1fff; - - return myBankChanged; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge4A50::getAccessFlags(uInt16 address) -{ - if((address & 0x1800) == 0x1000) // 2K region from 0x1000 - 0x17ff - { - if(myIsRomLow) - return myCodeAccessBase[(address & 0x7ff) + mySliceLow]; - else - return myCodeAccessBase[131072 + (address & 0x7ff) + mySliceLow]; - } - else if(((address & 0x1fff) >= 0x1800) && // 1.5K region from 0x1800 - 0x1dff - ((address & 0x1fff) <= 0x1dff)) - { - if(myIsRomMiddle) - return myCodeAccessBase[(address & 0x7ff) + mySliceMiddle + 0x10000]; - else - return myCodeAccessBase[131072 + (address & 0x7ff) + mySliceMiddle]; - } - else if((address & 0x1f00) == 0x1e00) // 256B region from 0x1e00 - 0x1eff - { - if(myIsRomHigh) - return myCodeAccessBase[(address & 0xff) + mySliceHigh + 0x10000]; - else - return myCodeAccessBase[131072 + (address & 0xff) + mySliceHigh]; - } - else if((address & 0x1f00) == 0x1f00) // 256B region from 0x1f00 - 0x1fff - { - return myCodeAccessBase[(address & 0xff) + 0x1ff00]; - } - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4A50::setAccessFlags(uInt16 address, uInt8 flags) -{ - if((address & 0x1800) == 0x1000) // 2K region from 0x1000 - 0x17ff - { - if(myIsRomLow) - myCodeAccessBase[(address & 0x7ff) + mySliceLow] |= flags; - else - myCodeAccessBase[131072 + (address & 0x7ff) + mySliceLow] |= flags; - } - else if(((address & 0x1fff) >= 0x1800) && // 1.5K region from 0x1800 - 0x1dff - ((address & 0x1fff) <= 0x1dff)) - { - if(myIsRomMiddle) - myCodeAccessBase[(address & 0x7ff) + mySliceMiddle + 0x10000] |= flags; - else - myCodeAccessBase[131072 + (address & 0x7ff) + mySliceMiddle] |= flags; - } - else if((address & 0x1f00) == 0x1e00) // 256B region from 0x1e00 - 0x1eff - { - if(myIsRomHigh) - myCodeAccessBase[(address & 0xff) + mySliceHigh + 0x10000] |= flags; - else - myCodeAccessBase[131072 + (address & 0xff) + mySliceHigh] |= flags; - } - else if((address & 0x1f00) == 0x1f00) // 256B region from 0x1f00 - 0x1fff - { - myCodeAccessBase[(address & 0xff) + 0x1ff00] |= flags; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4A50::checkBankSwitch(uInt16 address, uInt8 value) -{ - if(bankLocked()) return; - - // This scheme contains so many hotspots that it's easier to just check - // all of them - if(((myLastData & 0xe0) == 0x60) && // Switch lower/middle/upper bank - ((myLastAddress >= 0x1000) || (myLastAddress < 0x200))) - { - if((address & 0x0f00) == 0x0c00) // Enable 256B of ROM at 0x1e00 - 0x1eff - { - myIsRomHigh = true; - mySliceHigh = (address & 0xff) << 8; - myBankChanged = true; - } - else if((address & 0x0f00) == 0x0d00) // Enable 256B of RAM at 0x1e00 - 0x1eff - { - myIsRomHigh = false; - mySliceHigh = (address & 0x7f) << 8; - myBankChanged = true; - } - else if((address & 0x0f40) == 0x0e00) // Enable 2K of ROM at 0x1000 - 0x17ff - { - myIsRomLow = true; - mySliceLow = (address & 0x1f) << 11; - myBankChanged = true; - } - else if((address & 0x0f40) == 0x0e40) // Enable 2K of RAM at 0x1000 - 0x17ff - { - myIsRomLow = false; - mySliceLow = (address & 0xf) << 11; - myBankChanged = true; - } - else if((address & 0x0f40) == 0x0f00) // Enable 1.5K of ROM at 0x1800 - 0x1dff - { - myIsRomMiddle = true; - mySliceMiddle = (address & 0x1f) << 11; - myBankChanged = true; - } - else if((address & 0x0f50) == 0x0f40) // Enable 1.5K of RAM at 0x1800 - 0x1dff - { - myIsRomMiddle = false; - mySliceMiddle = (address & 0xf) << 11; - myBankChanged = true; - } - - // Stella helper functions - else if((address & 0x0f00) == 0x0400) // Toggle bit A11 of lower block address - { - mySliceLow = mySliceLow ^ 0x800; - myBankChanged = true; - } - else if((address & 0x0f00) == 0x0500) // Toggle bit A12 of lower block address - { - mySliceLow = mySliceLow ^ 0x1000; - myBankChanged = true; - } - else if((address & 0x0f00) == 0x0800) // Toggle bit A11 of middle block address - { - mySliceMiddle = mySliceMiddle ^ 0x800; - myBankChanged = true; - } - else if((address & 0x0f00) == 0x0900) // Toggle bit A12 of middle block address - { - mySliceMiddle = mySliceMiddle ^ 0x1000; - myBankChanged = true; - } - } - - // Zero-page hotspots for upper page - // 0xf4, 0xf6, 0xfc, 0xfe for ROM - // 0xf5, 0xf7, 0xfd, 0xff for RAM - // 0x74 - 0x7f (0x80 bytes lower) - if((address & 0xf75) == 0x74) // Enable 256B of ROM at 0x1e00 - 0x1eff - { - myIsRomHigh = true; - mySliceHigh = value << 8; - myBankChanged = true; - } - else if((address & 0xf75) == 0x75) // Enable 256B of RAM at 0x1e00 - 0x1eff - { - myIsRomHigh = false; - mySliceHigh = (value & 0x7f) << 8; - myBankChanged = true; - } - - // Zero-page hotspots for lower and middle blocks - // 0xf8, 0xf9, 0xfa, 0xfb - // 0x78, 0x79, 0x7a, 0x7b (0x80 bytes lower) - else if((address & 0xf7c) == 0x78) - { - if((value & 0xf0) == 0) // Enable 2K of ROM at 0x1000 - 0x17ff - { - myIsRomLow = true; - mySliceLow = (value & 0xf) << 11; - myBankChanged = true; - } - else if((value & 0xf0) == 0x40) // Enable 2K of RAM at 0x1000 - 0x17ff - { - myIsRomLow = false; - mySliceLow = (value & 0xf) << 11; - myBankChanged = true; - } - else if((value & 0xf0) == 0x90) // Enable 1.5K of ROM at 0x1800 - 0x1dff - { - myIsRomMiddle = true; - mySliceMiddle = ((value & 0xf) | 0x10) << 11; - myBankChanged = true; - } - else if((value & 0xf0) == 0xc0) // Enable 1.5K of RAM at 0x1800 - 0x1dff - { - myIsRomMiddle = false; - mySliceMiddle = (value & 0xf) << 11; - myBankChanged = true; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4A50::bank(uInt16) -{ - // Doesn't support bankswitching in the normal sense - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge4A50::bank() const -{ - // Doesn't support bankswitching in the normal sense - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge4A50::bankCount() const -{ - // Doesn't support bankswitching in the normal sense - // There is one 'virtual' bank that can change in many different ways - return 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4A50::patch(uInt16 address, uInt8 value) -{ - if((address & 0x1800) == 0x1000) // 2K region from 0x1000 - 0x17ff - { - if(myIsRomLow) - myImage[(address & 0x7ff) + mySliceLow] = value; - else - myRAM[(address & 0x7ff) + mySliceLow] = value; - } - else if(((address & 0x1fff) >= 0x1800) && // 1.5K region from 0x1800 - 0x1dff - ((address & 0x1fff) <= 0x1dff)) - { - if(myIsRomMiddle) - myImage[(address & 0x7ff) + mySliceMiddle + 0x10000] = value; - else - myRAM[(address & 0x7ff) + mySliceMiddle] = value; - } - else if((address & 0x1f00) == 0x1e00) // 256B region from 0x1e00 - 0x1eff - { - if(myIsRomHigh) - myImage[(address & 0xff) + mySliceHigh + 0x10000] = value; - else - myRAM[(address & 0xff) + mySliceHigh] = value; - } - else if((address & 0x1f00) == 0x1f00) // 256B region from 0x1f00 - 0x1fff - { - myImage[(address & 0xff) + 0x1ff00] = value; - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge4A50::getImage(int& size) const -{ - size = 131072; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4A50::save(Serializer& out) const -{ - try - { - out.putString(name()); - - // The 32K bytes of RAM - out.putInt(32768); - for(uInt32 i = 0; i < 32768; ++i) - out.putByte((char)myRAM[i]); - - // Index pointers - out.putInt(mySliceLow); - out.putInt(mySliceMiddle); - out.putInt(mySliceHigh); - - // Whether index pointers are for ROM or RAM - out.putBool(myIsRomLow); - out.putBool(myIsRomMiddle); - out.putBool(myIsRomHigh); - - // Last address and data values - out.putByte(myLastData); - out.putInt(myLastAddress); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge4A40::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4A50::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 i = 0; i < limit; ++i) - myRAM[i] = (uInt8) in.getByte(); - - // Index pointers - mySliceLow = (uInt16) in.getInt(); - mySliceMiddle = (uInt16) in.getInt(); - mySliceHigh = (uInt16) in.getInt(); - - // Whether index pointers are for ROM or RAM - myIsRomLow = in.getBool(); - myIsRomMiddle = in.getBool(); - myIsRomHigh = in.getBool(); - - // Last address and data values - myLastData = (uInt8) in.getByte(); - myLastAddress = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge4A50::load" << endl << " " << msg << endl; - return false; - } - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4A50.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4A50.hxx deleted file mode 100644 index df8ddb9f69..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4A50.hxx +++ /dev/null @@ -1,191 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart4A50.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE4A50_HXX -#define CARTRIDGE4A50_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Bankswitching method as defined/created by John Payson (aka Supercat), - documented at http://www.casperkitty.com/stella/cartfmt.htm. - - In this bankswitching scheme the 2600's 4K cartridge address space - is broken into four segments. The first 2K segment accesses any 2K - region of RAM, or of the first 32K of ROM. The second 1.5K segment - accesses the first 1.5K of any 2K region of RAM, or of the last 32K - of ROM. The 3rd 256 byte segment points to any 256 byte page of - RAM or ROM. The last 256 byte segment always points to the last 256 - bytes of ROM. - - Because of the complexity of this scheme, the cart reports having - only one actual bank, in which pieces of it can be swapped out in - many different ways. It contains so many hotspots and possibilities - for the ROM address space to change that we just consider the bank to - have changed on every poke operation (for any RAM) or an actual bankswitch. - - @author Eckhard Stolberg & Stephen Anthony - @version $Id: Cart4A50.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Cartridge4A50 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - Cartridge4A50(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~Cartridge4A50(); - - public: - /** - Reset cartridge to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "Cartridge4A50"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Query/change the given address type to use the given disassembly flags - - @param address The address to modify - @param flags A bitfield of DisasmType directives for the given address - */ - uInt8 getAccessFlags(uInt16 address); - void setAccessFlags(uInt16 address, uInt8 flags); - - /** - Check all possible hotspots - */ - void checkBankSwitch(uInt16 address, uInt8 value); - - private: - // The 128K ROM image of the cartridge - uInt8 myImage[131072]; - - // The 32K of RAM on the cartridge - uInt8 myRAM[32768]; - - // Indicates the slice mapped into each of the three segments - uInt16 mySliceLow; /* index pointer for $1000-$17ff slice */ - uInt16 mySliceMiddle; /* index pointer for $1800-$1dff slice */ - uInt16 mySliceHigh; /* index pointer for $1e00-$1eff slice */ - - // Indicates whether the given slice is mapped to ROM or RAM - bool myIsRomLow; /* true = ROM -- false = RAM at $1000-$17ff */ - bool myIsRomMiddle; /* true = ROM -- false = RAM at $1800-$1dff */ - bool myIsRomHigh; /* true = ROM -- false = RAM at $1e00-$1eFF */ - - // The previous address and data values (from peek and poke) - uInt16 myLastAddress; - uInt8 myLastData; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4K.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4K.cpp deleted file mode 100644 index 1c61821dab..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4K.cpp +++ /dev/null @@ -1,145 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart4K.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "Cart4K.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge4K::Cartridge4K(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 4096); - createCodeAccessBase(4096); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cartridge4K::~Cartridge4K() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4K::reset() -{ - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4K::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1000; address < 0x2000; address += (1 << shift)) - { - access.directPeekBase = &myImage[address & 0x0FFF]; - access.codeAccessBase = &myCodeAccessBase[address & 0x0FFF]; - mySystem->setPageAccess(address >> mySystem->pageShift(), access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge4K::peek(uInt16 address) -{ - return myImage[address & 0x0FFF]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::poke(uInt16, uInt8) -{ - // This is ROM so poking has no effect :-) - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::bank(uInt16) -{ - // Doesn't support bankswitching - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge4K::bank() const -{ - // Doesn't support bankswitching - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge4K::bankCount() const -{ - return 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::patch(uInt16 address, uInt8 value) -{ - myImage[address & 0x0FFF] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge4K::getImage(int& size) const -{ - size = 4096; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::save(Serializer& out) const -{ - try - { - out.putString(name()); - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge4K::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - } - catch(const char* msg) - { - cerr << "ERROR: Cartridge4K::load" << endl << " " << msg << endl; - return false; - } - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4K.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4K.hxx deleted file mode 100644 index 4dc73444e3..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Cart4K.hxx +++ /dev/null @@ -1,144 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Cart4K.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE4K_HXX -#define CARTRIDGE4K_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the standard Atari 4K cartridge. These cartridges are - not bankswitched. - - @author Bradford W. Mott - @version $Id: Cart4K.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Cartridge4K : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - Cartridge4K(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~Cartridge4K(); - - public: - /** - Reset cartridge to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "Cartridge4K"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // The 4K ROM image for the cartridge - uInt8 myImage[4096]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartAR.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartAR.cpp deleted file mode 100644 index 9ef8f07dab..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartAR.cpp +++ /dev/null @@ -1,661 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartAR.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "M6502.hxx" -#include "System.hxx" -#include "CartAR.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeAR::CartridgeAR(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - my6502(0), - mySize(BSPF_max(size, 8448u)) -{ - // Create a load image buffer and copy the given image - myLoadImages = new uInt8[mySize]; - myNumberOfLoadImages = mySize / 8448; - memcpy(myLoadImages, image, size); - - // Add header if image doesn't include it - if(size < 8448) - memcpy(myLoadImages+8192, ourDefaultHeader, 256); - - // We use System::PageAccess.codeAccessBase, but don't allow its use - // through a pointer, since the AR scheme doesn't support bankswitching - // in the normal sense - // - // Instead, access will be through the getAccessFlags and setAccessFlags - // methods below - createCodeAccessBase(mySize); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeAR::~CartridgeAR() -{ - delete[] myLoadImages; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeAR::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 6 * 1024; ++i) - myImage[i] = mySystem->randGenerator().next(); - else - memset(myImage, 0, 6 * 1024); - - // Initialize SC BIOS ROM - initializeROM(); - - myPower = true; - myPowerRomCycle = mySystem->cycles(); - myWriteEnabled = false; - - myDataHoldRegister = 0; - myNumberOfDistinctAccesses = 0; - myWritePending = false; - - // Set bank configuration upon reset so ROM is selected and powered up - bankConfiguration(0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeAR::systemCyclesReset() -{ - // Get the current system cycle - uInt32 cycles = mySystem->cycles(); - - // Adjust cycle values - myPowerRomCycle -= cycles; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeAR::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - my6502 = &(mySystem->m6502()); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - // Map all of the accesses to call peek and poke (we don't yet indicate RAM areas) - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - for(uInt32 i = 0x1000; i < 0x2000; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - bankConfiguration(0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeAR::peek(uInt16 addr) -{ - // In debugger/bank-locked mode, we ignore all hotspots and in general - // anything that can change the internal state of the cart - if(bankLocked()) - return myImage[(addr & 0x07FF) + myImageOffset[(addr & 0x0800) ? 1 : 0]]; - - // Is the "dummy" SC BIOS hotspot for reading a load being accessed? - if(((addr & 0x1FFF) == 0x1850) && (myImageOffset[1] == (3 << 11))) - { - // Get load that's being accessed (BIOS places load number at 0x80) - uInt8 load = mySystem->peek(0x0080); - - // Read the specified load into RAM - loadIntoRAM(load); - - return myImage[(addr & 0x07FF) + myImageOffset[1]]; - } - - // Cancel any pending write if more than 5 distinct accesses have occurred - // TODO: Modify to handle when the distinct counter wraps around... - if(myWritePending && - (my6502->distinctAccesses() > myNumberOfDistinctAccesses + 5)) - { - myWritePending = false; - } - - // Is the data hold register being set? - if(!(addr & 0x0F00) && (!myWriteEnabled || !myWritePending)) - { - myDataHoldRegister = addr; - myNumberOfDistinctAccesses = my6502->distinctAccesses(); - myWritePending = true; - } - // Is the bank configuration hotspot being accessed? - else if((addr & 0x1FFF) == 0x1FF8) - { - // Yes, so handle bank configuration - myWritePending = false; - bankConfiguration(myDataHoldRegister); - } - // Handle poke if writing enabled - else if(myWriteEnabled && myWritePending && - (my6502->distinctAccesses() == (myNumberOfDistinctAccesses + 5))) - { - if((addr & 0x0800) == 0) - { - myImage[(addr & 0x07FF) + myImageOffset[0]] = myDataHoldRegister; - mySystem->setDirtyPage(addr); - } - else if(myImageOffset[1] != (3 << 11)) // Can't poke to ROM :-) - { - myImage[(addr & 0x07FF) + myImageOffset[1]] = myDataHoldRegister; - mySystem->setDirtyPage(addr); - } - myWritePending = false; - } - - return myImage[(addr & 0x07FF) + myImageOffset[(addr & 0x0800) ? 1 : 0]]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeAR::poke(uInt16 addr, uInt8) -{ - bool modified = false; - - // Cancel any pending write if more than 5 distinct accesses have occurred - // TODO: Modify to handle when the distinct counter wraps around... - if(myWritePending && - (my6502->distinctAccesses() > myNumberOfDistinctAccesses + 5)) - { - myWritePending = false; - } - - // Is the data hold register being set? - if(!(addr & 0x0F00) && (!myWriteEnabled || !myWritePending)) - { - myDataHoldRegister = addr; - myNumberOfDistinctAccesses = my6502->distinctAccesses(); - myWritePending = true; - } - // Is the bank configuration hotspot being accessed? - else if((addr & 0x1FFF) == 0x1FF8) - { - // Yes, so handle bank configuration - myWritePending = false; - bankConfiguration(myDataHoldRegister); - } - // Handle poke if writing enabled - else if(myWriteEnabled && myWritePending && - (my6502->distinctAccesses() == (myNumberOfDistinctAccesses + 5))) - { - if((addr & 0x0800) == 0) - { - myImage[(addr & 0x07FF) + myImageOffset[0]] = myDataHoldRegister; - modified = true; - } - else if(myImageOffset[1] != (3 << 11)) // Can't poke to ROM :-) - { - myImage[(addr & 0x07FF) + myImageOffset[1]] = myDataHoldRegister; - modified = true; - } - myWritePending = false; - } - - return modified; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeAR::getAccessFlags(uInt16 address) -{ - return myCodeAccessBase[(address & 0x07FF) + - myImageOffset[(address & 0x0800) ? 1 : 0]]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeAR::setAccessFlags(uInt16 address, uInt8 flags) -{ - myCodeAccessBase[(address & 0x07FF) + - myImageOffset[(address & 0x0800) ? 1 : 0]] |= flags; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeAR::bankConfiguration(uInt8 configuration) -{ - // D7-D5 of this byte: Write Pulse Delay (n/a for emulator) - // - // D4-D0: RAM/ROM configuration: - // $F000-F7FF $F800-FFFF Address range that banks map into - // 000wp 2 ROM - // 001wp 0 ROM - // 010wp 2 0 as used in Commie Mutants and many others - // 011wp 0 2 as used in Suicide Mission - // 100wp 2 ROM - // 101wp 1 ROM - // 110wp 2 1 as used in Killer Satellites - // 111wp 1 2 as we use for 2k/4k ROM cloning - // - // w = Write Enable (1 = enabled; accesses to $F000-$F0FF cause writes - // to happen. 0 = disabled, and the cart acts like ROM.) - // p = ROM Power (0 = enabled, 1 = off.) Only power the ROM if you're - // wanting to access the ROM for multiloads. Otherwise set to 1. - - myCurrentBank = configuration & 0x1F; // remember for the bank() method - - // Handle ROM power configuration - myPower = !(configuration & 0x01); - - if(myPower) - { - myPowerRomCycle = mySystem->cycles(); - } - - myWriteEnabled = configuration & 0x02; - - switch((configuration >> 2) & 0x07) - { - case 0: - { - myImageOffset[0] = 2 << 11; - myImageOffset[1] = 3 << 11; - break; - } - - case 1: - { - myImageOffset[0] = 0 ; - myImageOffset[1] = 3 << 11; - break; - } - - case 2: - { - myImageOffset[0] = 2 << 11; - myImageOffset[1] = 0 ; - break; - } - - case 3: - { - myImageOffset[0] = 0 ; - myImageOffset[1] = 2 << 11; - break; - } - - case 4: - { - myImageOffset[0] = 2 << 11; - myImageOffset[1] = 3 << 11; - break; - } - - case 5: - { - myImageOffset[0] = 1 << 11; - myImageOffset[1] = 3 << 11; - break; - } - - case 6: - { - myImageOffset[0] = 2 << 11; - myImageOffset[1] = 1 << 11; - break; - } - - case 7: - { - myImageOffset[0] = 1 << 11; - myImageOffset[1] = 2 << 11; - break; - } - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeAR::initializeROM() -{ - // Note that the following offsets depend on the 'scrom.asm' file - // in src/emucore/misc. If that file is ever recompiled (and its - // contents placed in the ourDummyROMCode array), the offsets will - // almost definitely change - - // The scrom.asm code checks a value at offset 109 as follows: - // 0xFF -> do a complete jump over the SC BIOS progress bars code - // 0x00 -> show SC BIOS progress bars as normal - ourDummyROMCode[109] = mySettings.getBool("fastscbios") ? 0xFF : 0x00; - - // The accumulator should contain a random value after exiting the - // SC BIOS code - a value placed in offset 281 will be stored in A - ourDummyROMCode[281] = mySystem->randGenerator().next(); - - // Initialize ROM with illegal 6502 opcode that causes a real 6502 to jam - memset(myImage + (3<<11), 0x02, 2048); - - // Copy the "dummy" Supercharger BIOS code into the ROM area - memcpy(myImage + (3<<11), ourDummyROMCode, sizeof(ourDummyROMCode)); - - // Finally set 6502 vectors to point to initial load code at 0xF80A of BIOS - myImage[(3<<11) + 2044] = 0x0A; - myImage[(3<<11) + 2045] = 0xF8; - myImage[(3<<11) + 2046] = 0x0A; - myImage[(3<<11) + 2047] = 0xF8; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeAR::checksum(uInt8* s, uInt16 length) -{ - uInt8 sum = 0; - - for(uInt32 i = 0; i < length; ++i) - sum += s[i]; - - return sum; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeAR::loadIntoRAM(uInt8 load) -{ - uInt16 image; - - // Scan through all of the loads to see if we find the one we're looking for - for(image = 0; image < myNumberOfLoadImages; ++image) - { - // Is this the correct load? - if(myLoadImages[(image * 8448) + 8192 + 5] == load) - { - // Copy the load's header - memcpy(myHeader, myLoadImages + (image * 8448) + 8192, 256); - - // Verify the load's header - if(checksum(myHeader, 8) != 0x55) - { - cerr << "WARNING: The Supercharger header checksum is invalid...\n"; - } - - // Load all of the pages from the load - bool invalidPageChecksumSeen = false; - for(uInt32 j = 0; j < myHeader[3]; ++j) - { - uInt32 bank = myHeader[16 + j] & 0x03; - uInt32 page = (myHeader[16 + j] >> 2) & 0x07; - uInt8* src = myLoadImages + (image * 8448) + (j * 256); - uInt8 sum = checksum(src, 256) + myHeader[16 + j] + myHeader[64 + j]; - - if(!invalidPageChecksumSeen && (sum != 0x55)) - { - cerr << "WARNING: Some Supercharger page checksums are invalid...\n"; - invalidPageChecksumSeen = true; - } - - // Copy page to Supercharger RAM (don't allow a copy into ROM area) - if(bank < 3) - { - memcpy(myImage + (bank * 2048) + (page * 256), src, 256); - } - } - - // Copy the bank switching byte and starting address into the 2600's - // RAM for the "dummy" SC BIOS to access it - mySystem->poke(0xfe, myHeader[0]); - mySystem->poke(0xff, myHeader[1]); - mySystem->poke(0x80, myHeader[2]); - - myBankChanged = true; - return; - } - } - - // TODO: Should probably switch to an internal ROM routine to display - // this message to the user... - cerr << "ERROR: Supercharger load is missing from ROM image...\n"; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeAR::bank(uInt16 bank) -{ - if(!bankLocked()) - return bankConfiguration(bank); - else - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeAR::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeAR::bankCount() const -{ - return 32; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeAR::patch(uInt16 address, uInt8 value) -{ - // TODO - add support for debugger - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeAR::getImage(int& size) const -{ - size = mySize; - return myLoadImages; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeAR::save(Serializer& out) const -{ - try - { - uInt32 i; - - out.putString(name()); - - // Indicates the offest within the image for the corresponding bank - out.putInt(2); - for(i = 0; i < 2; ++i) - out.putInt(myImageOffset[i]); - - // The 6K of RAM and 2K of ROM contained in the Supercharger - out.putInt(8192); - for(i = 0; i < 8192; ++i) - out.putByte((char)myImage[i]); - - // The 256 byte header for the current 8448 byte load - out.putInt(256); - for(i = 0; i < 256; ++i) - out.putByte((char)myHeader[i]); - - // All of the 8448 byte loads associated with the game - // Note that the size of this array is myNumberOfLoadImages * 8448 - out.putInt(myNumberOfLoadImages * 8448); - for(i = 0; i < (uInt32) myNumberOfLoadImages * 8448; ++i) - out.putInt(myLoadImages[i]); - - // Indicates how many 8448 loads there are - out.putByte((char)myNumberOfLoadImages); - - // Indicates if the RAM is write enabled - out.putBool(myWriteEnabled); - - // Indicates if the ROM's power is on or off - out.putBool(myPower); - - // Indicates when the power was last turned on - out.putInt(myPowerRomCycle); - - // Data hold register used for writing - out.putByte((char)myDataHoldRegister); - - // Indicates number of distinct accesses when data hold register was set - out.putInt(myNumberOfDistinctAccesses); - - // Indicates if a write is pending or not - out.putBool(myWritePending); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeAR::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeAR::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - uInt32 i, limit; - - // Indicates the offest within the image for the corresponding bank - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myImageOffset[i] = (uInt32) in.getInt(); - - // The 6K of RAM and 2K of ROM contained in the Supercharger - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myImage[i] = (uInt8) in.getByte(); - - // The 256 byte header for the current 8448 byte load - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myHeader[i] = (uInt8) in.getByte(); - - // All of the 8448 byte loads associated with the game - // Note that the size of this array is myNumberOfLoadImages * 8448 - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myLoadImages[i] = (uInt8) in.getInt(); - - // Indicates how many 8448 loads there are - myNumberOfLoadImages = (uInt8) in.getByte(); - - // Indicates if the RAM is write enabled - myWriteEnabled = in.getBool(); - - // Indicates if the ROM's power is on or off - myPower = in.getBool(); - - // Indicates when the power was last turned on - myPowerRomCycle = (Int32) in.getInt(); - - // Data hold register used for writing - myDataHoldRegister = (uInt8) in.getByte(); - - // Indicates number of distinct accesses when data hold register was set - myNumberOfDistinctAccesses = (uInt32) in.getInt(); - - // Indicates if a write is pending or not - myWritePending = in.getBool(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeAR::load" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeAR::ourDummyROMCode[] = { - 0xa5, 0xfa, 0x85, 0x80, 0x4c, 0x18, 0xf8, 0xff, - 0xff, 0xff, 0x78, 0xd8, 0xa0, 0x00, 0xa2, 0x00, - 0x94, 0x00, 0xe8, 0xd0, 0xfb, 0x4c, 0x50, 0xf8, - 0xa2, 0x00, 0xbd, 0x06, 0xf0, 0xad, 0xf8, 0xff, - 0xa2, 0x00, 0xad, 0x00, 0xf0, 0xea, 0xbd, 0x00, - 0xf7, 0xca, 0xd0, 0xf6, 0x4c, 0x50, 0xf8, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xa2, 0x03, 0xbc, 0x22, 0xf9, 0x94, 0xfa, 0xca, - 0x10, 0xf8, 0xa0, 0x00, 0xa2, 0x28, 0x94, 0x04, - 0xca, 0x10, 0xfb, 0xa2, 0x1c, 0x94, 0x81, 0xca, - 0x10, 0xfb, 0xa9, 0xff, 0xc9, 0x00, 0xd0, 0x03, - 0x4c, 0x13, 0xf9, 0xa9, 0x00, 0x85, 0x1b, 0x85, - 0x1c, 0x85, 0x1d, 0x85, 0x1e, 0x85, 0x1f, 0x85, - 0x19, 0x85, 0x1a, 0x85, 0x08, 0x85, 0x01, 0xa9, - 0x10, 0x85, 0x21, 0x85, 0x02, 0xa2, 0x07, 0xca, - 0xca, 0xd0, 0xfd, 0xa9, 0x00, 0x85, 0x20, 0x85, - 0x10, 0x85, 0x11, 0x85, 0x02, 0x85, 0x2a, 0xa9, - 0x05, 0x85, 0x0a, 0xa9, 0xff, 0x85, 0x0d, 0x85, - 0x0e, 0x85, 0x0f, 0x85, 0x84, 0x85, 0x85, 0xa9, - 0xf0, 0x85, 0x83, 0xa9, 0x74, 0x85, 0x09, 0xa9, - 0x0c, 0x85, 0x15, 0xa9, 0x1f, 0x85, 0x17, 0x85, - 0x82, 0xa9, 0x07, 0x85, 0x19, 0xa2, 0x08, 0xa0, - 0x00, 0x85, 0x02, 0x88, 0xd0, 0xfb, 0x85, 0x02, - 0x85, 0x02, 0xa9, 0x02, 0x85, 0x02, 0x85, 0x00, - 0x85, 0x02, 0x85, 0x02, 0x85, 0x02, 0xa9, 0x00, - 0x85, 0x00, 0xca, 0x10, 0xe4, 0x06, 0x83, 0x66, - 0x84, 0x26, 0x85, 0xa5, 0x83, 0x85, 0x0d, 0xa5, - 0x84, 0x85, 0x0e, 0xa5, 0x85, 0x85, 0x0f, 0xa6, - 0x82, 0xca, 0x86, 0x82, 0x86, 0x17, 0xe0, 0x0a, - 0xd0, 0xc3, 0xa9, 0x02, 0x85, 0x01, 0xa2, 0x1c, - 0xa0, 0x00, 0x84, 0x19, 0x84, 0x09, 0x94, 0x81, - 0xca, 0x10, 0xfb, 0xa6, 0x80, 0xdd, 0x00, 0xf0, - 0xa9, 0x9a, 0xa2, 0xff, 0xa0, 0x00, 0x9a, 0x4c, - 0xfa, 0x00, 0xcd, 0xf8, 0xff, 0x4c -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeAR::ourDefaultHeader[256] = { - 0xac, 0xfa, 0x0f, 0x18, 0x62, 0x00, 0x24, 0x02, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, 0x18, 0x1c, - 0x01, 0x05, 0x09, 0x0d, 0x11, 0x15, 0x19, 0x1d, - 0x02, 0x06, 0x0a, 0x0e, 0x12, 0x16, 0x1a, 0x1e, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 -}; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartAR.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartAR.hxx deleted file mode 100644 index 44c2e0360d..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartAR.hxx +++ /dev/null @@ -1,225 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartAR.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEAR_HXX -#define CARTRIDGEAR_HXX - -class M6502; -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the cartridge class for Arcadia (aka Starpath) Supercharger - games. Christopher Salomon provided most of the technical details - used in creating this class. A good description of the Supercharger - is provided in the Cuttle Cart's manual. - - The Supercharger has four 2K banks. There are three banks of RAM - and one bank of ROM. All 6K of the RAM can be read and written. - - @author Bradford W. Mott - @version $Id: CartAR.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeAR : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image and size - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeAR(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeAR(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeAR"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Query/change the given address type to use the given disassembly flags - - @param address The address to modify - @param flags A bitfield of DisasmType directives for the given address - */ - uInt8 getAccessFlags(uInt16 address); - void setAccessFlags(uInt16 address, uInt8 flags); - - // Handle a change to the bank configuration - bool bankConfiguration(uInt8 configuration); - - // Compute the sum of the array of bytes - uInt8 checksum(uInt8* s, uInt16 length); - - // Load the specified load into SC RAM - void loadIntoRAM(uInt8 load); - - // Sets up a "dummy" BIOS ROM in the ROM bank of the cartridge - void initializeROM(); - - private: - // Pointer to the 6502 processor in the system - M6502* my6502; - - // Indicates the offest within the image for the corresponding bank - uInt32 myImageOffset[2]; - - // The 6K of RAM and 2K of ROM contained in the Supercharger - uInt8 myImage[8192]; - - // The 256 byte header for the current 8448 byte load - uInt8 myHeader[256]; - - // Size of the ROM image - uInt32 mySize; - - // All of the 8448 byte loads associated with the game - uInt8* myLoadImages; - - // Indicates how many 8448 loads there are - uInt8 myNumberOfLoadImages; - - // Indicates if the RAM is write enabled - bool myWriteEnabled; - - // Indicates if the ROM's power is on or off - bool myPower; - - // Indicates when the power was last turned on - Int32 myPowerRomCycle; - - // Data hold register used for writing - uInt8 myDataHoldRegister; - - // Indicates number of distinct accesses when data hold register was set - uInt32 myNumberOfDistinctAccesses; - - // Indicates if a write is pending or not - bool myWritePending; - - uInt16 myCurrentBank; - - // Fake SC-BIOS code to simulate the Supercharger load bars - static uInt8 ourDummyROMCode[294]; - - // Default 256-byte header to use if one isn't included in the ROM - // This data comes from z26 - static uInt8 ourDefaultHeader[256]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartCV.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartCV.cpp deleted file mode 100644 index 08953babfc..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartCV.cpp +++ /dev/null @@ -1,242 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartCV.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartCV.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeCV::CartridgeCV(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - myInitialRAM(0), - mySize(size) -{ - if(mySize == 2048) - { - // Copy the ROM data into my buffer - memcpy(myImage, image, 2048); - } - else if(mySize == 4096) - { - // The game has something saved in the RAM - // Useful for MagiCard program listings - - // Copy the ROM data into my buffer - memcpy(myImage, image + 2048, 2048); - - // Copy the RAM image into a buffer for use in reset() - myInitialRAM = new uInt8[1024]; - memcpy(myInitialRAM, image, 1024); - } - createCodeAccessBase(2048+1024); - - // This cart contains 1024 bytes extended RAM @ 0x1000 - registerRamArea(0x1000, 1024, 0x00, 0x400); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeCV::~CartridgeCV() -{ - delete[] myInitialRAM; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCV::reset() -{ - if(myInitialRAM) - { - // Copy the RAM image into my buffer - memcpy(myRAM, myInitialRAM, 1024); - } - else - { - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 1024; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 1024); - } - - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCV::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1800 & mask) == 0); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1800; address < 0x2000; address += (1 << shift)) - { - access.directPeekBase = &myImage[address & 0x07FF]; - access.codeAccessBase = &myCodeAccessBase[address & 0x07FF]; - mySystem->setPageAccess(address >> mySystem->pageShift(), access); - } - - // Set the page accessing method for the RAM writing pages - access.directPeekBase = 0; - access.codeAccessBase = 0; - access.type = System::PA_WRITE; - for(uInt32 j = 0x1400; j < 0x1800; j += (1 << shift)) - { - access.directPokeBase = &myRAM[j & 0x03FF]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1000; k < 0x1400; k += (1 << shift)) - { - access.directPeekBase = &myRAM[k & 0x03FF]; - access.codeAccessBase = &myCodeAccessBase[2048 + (k & 0x03FF)]; - mySystem->setPageAccess(k >> shift, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeCV::peek(uInt16 address) -{ - if((address & 0x0FFF) < 0x0800) // Write port is at 0xF400 - 0xF800 (1024 bytes) - { // Read port is handled in ::install() - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(address); - return myRAM[address & 0x03FF] = value; - } - } - else - { - return myImage[address & 0x07FF]; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::poke(uInt16, uInt8) -{ - // NOTE: This does not handle accessing RAM, however, this function - // should never be called for RAM because of the way page accessing - // has been setup - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::bank(uInt16 bank) -{ - // Doesn't support bankswitching - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeCV::bank() const -{ - // Doesn't support bankswitching - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeCV::bankCount() const -{ - return 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0800) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - // The following will work for both reads and writes - myRAM[address & 0x03FF] = value; - } - else - myImage[address & 0x07FF] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeCV::getImage(int& size) const -{ - size = 2048; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::save(Serializer& out) const -{ - try - { - out.putString(name()); - - // Output RAM - out.putInt(1024); - for(uInt32 addr = 0; addr < 1024; ++addr) - out.putByte((char)myRAM[addr]); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeCV::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - // Input RAM - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 addr = 0; addr < limit; ++addr) - myRAM[addr] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeCV::load" << endl << " " << msg << endl; - return false; - } - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartCV.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartCV.hxx deleted file mode 100644 index e258e13827..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartCV.hxx +++ /dev/null @@ -1,158 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartCV.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGECV_HXX -#define CARTRIDGECV_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Commavid's extra-RAM games. - - $F000-$F3FF read from RAM - $F400-$F7FF write to RAM - $F800-$FFFF ROM - - @author Eckhard Stolberg - @version $Id: CartCV.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeCV : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeCV(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeCV(); - - public: - /** - Reset cartridge to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeCV"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Pointer to the initial RAM data from the cart - // This doesn't always exist, so we don't pre-allocate it - uInt8* myInitialRAM; - - // Initial size of the cart data - uInt32 mySize; - - // The 2k ROM image for the cartridge - uInt8 myImage[2048]; - - // The 1024 bytes of RAM - uInt8 myRAM[1024]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPC.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPC.cpp deleted file mode 100644 index 36396bcd3f..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPC.cpp +++ /dev/null @@ -1,582 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartDPC.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartDPC.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeDPC::CartridgeDPC(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - mySystemCycles(0), - myFractionalClocks(0.0) -{ - // Make a copy of the entire image - memcpy(myImage, image, BSPF_min(size, 8192u + 2048u + 255u)); - createCodeAccessBase(8192); - - // Pointer to the program ROM (8K @ 0 byte offset) - myProgramImage = myImage; - - // Pointer to the display ROM (2K @ 8K offset) - myDisplayImage = myProgramImage + 8192; - - // Initialize the DPC data fetcher registers - for(uInt16 i = 0; i < 8; ++i) - myTops[i] = myBottoms[i] = myCounters[i] = myFlags[i] = 0; - - // None of the data fetchers are in music mode - myMusicMode[0] = myMusicMode[1] = myMusicMode[2] = false; - - // Initialize the DPC's random number generator register (must be non-zero) - myRandomNumber = 1; - - // Remember startup bank - myStartBank = 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeDPC::~CartridgeDPC() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDPC::reset() -{ - // Update cycles to the current system cycles - mySystemCycles = mySystem->cycles(); - myFractionalClocks = 0.0; - - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDPC::systemCyclesReset() -{ - // Get the current system cycle - uInt32 cycles = mySystem->cycles(); - - // Adjust the cycle counter so that it reflects the new value - mySystemCycles -= cycles; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDPC::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1080 & mask) == 0) && ((0x1100 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing method for the DPC reading & writing pages - access.type = System::PA_READWRITE; - for(uInt32 j = 0x1000; j < 0x1080; j += (1 << shift)) - mySystem->setPageAccess(j >> shift, access); - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void CartridgeDPC::clockRandomNumberGenerator() -{ - // Table for computing the input bit of the random number generator's - // shift register (it's the NOT of the EOR of four bits) - static const uInt8 f[16] = { - 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1 - }; - - // Using bits 7, 5, 4, & 3 of the shift register compute the input - // bit for the shift register - uInt8 bit = f[((myRandomNumber >> 3) & 0x07) | - ((myRandomNumber & 0x80) ? 0x08 : 0x00)]; - - // Update the shift register - myRandomNumber = (myRandomNumber << 1) | bit; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void CartridgeDPC::updateMusicModeDataFetchers() -{ - // Calculate the number of cycles since the last update - Int32 cycles = mySystem->cycles() - mySystemCycles; - mySystemCycles = mySystem->cycles(); - - // Calculate the number of DPC OSC clocks since the last update - double clocks = ((20000.0 * cycles) / 1193191.66666667) + myFractionalClocks; - Int32 wholeClocks = (Int32)clocks; - myFractionalClocks = clocks - (double)wholeClocks; - - if(wholeClocks <= 0) - { - return; - } - - // Let's update counters and flags of the music mode data fetchers - for(int x = 5; x <= 7; ++x) - { - // Update only if the data fetcher is in music mode - if(myMusicMode[x - 5]) - { - Int32 top = myTops[x] + 1; - Int32 newLow = (Int32)(myCounters[x] & 0x00ff); - - if(myTops[x] != 0) - { - newLow -= (wholeClocks % top); - if(newLow < 0) - { - newLow += top; - } - } - else - { - newLow = 0; - } - - // Update flag register for this data fetcher - if(newLow <= myBottoms[x]) - { - myFlags[x] = 0x00; - } - else if(newLow <= myTops[x]) - { - myFlags[x] = 0xff; - } - - myCounters[x] = (myCounters[x] & 0x0700) | (uInt16)newLow; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeDPC::peek(uInt16 address) -{ - address &= 0x0FFF; - - // In debugger/bank-locked mode, we ignore all hotspots and in general - // anything that can change the internal state of the cart - if(bankLocked()) - return myProgramImage[(myCurrentBank << 12) + address]; - - // Clock the random number generator. This should be done for every - // cartridge access, however, we're only doing it for the DPC and - // hot-spot accesses to save time. - clockRandomNumberGenerator(); - - if(address < 0x0040) - { - uInt8 result = 0; - - // Get the index of the data fetcher that's being accessed - uInt32 index = address & 0x07; - uInt32 function = (address >> 3) & 0x07; - - // Update flag register for selected data fetcher - if((myCounters[index] & 0x00ff) == myTops[index]) - { - myFlags[index] = 0xff; - } - else if((myCounters[index] & 0x00ff) == myBottoms[index]) - { - myFlags[index] = 0x00; - } - - switch(function) - { - case 0x00: - { - // Is this a random number read - if(index < 4) - { - result = myRandomNumber; - } - // No, it's a music read - else - { - static const uInt8 musicAmplitudes[8] = { - 0x00, 0x04, 0x05, 0x09, 0x06, 0x0a, 0x0b, 0x0f - }; - - // Update the music data fetchers (counter & flag) - updateMusicModeDataFetchers(); - - uInt8 i = 0; - if(myMusicMode[0] && myFlags[5]) - { - i |= 0x01; - } - if(myMusicMode[1] && myFlags[6]) - { - i |= 0x02; - } - if(myMusicMode[2] && myFlags[7]) - { - i |= 0x04; - } - - result = musicAmplitudes[i]; - } - break; - } - - // DFx display data read - case 0x01: - { - result = myDisplayImage[2047 - myCounters[index]]; - break; - } - - // DFx display data read AND'd w/flag - case 0x02: - { - result = myDisplayImage[2047 - myCounters[index]] & myFlags[index]; - break; - } - - // DFx flag - case 0x07: - { - result = myFlags[index]; - break; - } - - default: - { - result = 0; - } - } - - // Clock the selected data fetcher's counter if needed - if((index < 5) || ((index >= 5) && (!myMusicMode[index - 5]))) - { - myCounters[index] = (myCounters[index] - 1) & 0x07ff; - } - - return result; - } - else - { - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - return myProgramImage[(myCurrentBank << 12) + address]; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPC::poke(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - // Clock the random number generator. This should be done for every - // cartridge access, however, we're only doing it for the DPC and - // hot-spot accesses to save time. - clockRandomNumberGenerator(); - - if((address >= 0x0040) && (address < 0x0080)) - { - // Get the index of the data fetcher that's being accessed - uInt32 index = address & 0x07; - uInt32 function = (address >> 3) & 0x07; - - switch(function) - { - // DFx top count - case 0x00: - { - myTops[index] = value; - myFlags[index] = 0x00; - break; - } - - // DFx bottom count - case 0x01: - { - myBottoms[index] = value; - break; - } - - // DFx counter low - case 0x02: - { - if((index >= 5) && myMusicMode[index - 5]) - { - // Data fetcher is in music mode so its low counter value - // should be loaded from the top register not the poked value - myCounters[index] = (myCounters[index] & 0x0700) | - (uInt16)myTops[index]; - } - else - { - // Data fetcher is either not a music mode data fetcher or it - // isn't in music mode so it's low counter value should be loaded - // with the poked value - myCounters[index] = (myCounters[index] & 0x0700) | (uInt16)value; - } - break; - } - - // DFx counter high - case 0x03: - { - myCounters[index] = (((uInt16)value & 0x07) << 8) | - (myCounters[index] & 0x00ff); - - // Execute special code for music mode data fetchers - if(index >= 5) - { - myMusicMode[index - 5] = (value & 0x10); - - // NOTE: We are not handling the clock source input for - // the music mode data fetchers. We're going to assume - // they always use the OSC input. - } - break; - } - - // Random Number Generator Reset - case 0x06: - { - myRandomNumber = 1; - break; - } - - default: - { - break; - } - } - } - else - { - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF8 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1080; address < (0x1FF8U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myProgramImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPC::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPC::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - // For now, we ignore attempts to patch the DPC address space - if(address >= 0x0080) - { - myProgramImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; - } - else - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeDPC::getImage(int& size) const -{ - size = 8192 + 2048 + 255; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPC::save(Serializer& out) const -{ - try - { - uInt32 i; - - out.putString(name()); - - // Indicates which bank is currently active - out.putInt(myCurrentBank); - - // The top registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putByte((char)myTops[i]); - - // The bottom registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putByte((char)myBottoms[i]); - - // The counter registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putInt(myCounters[i]); - - // The flag registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putByte((char)myFlags[i]); - - // The music mode flags for the data fetchers - out.putInt(3); - for(i = 0; i < 3; ++i) - out.putBool(myMusicMode[i]); - - // The random number generator register - out.putByte((char)myRandomNumber); - - out.putInt(mySystemCycles); - out.putInt((uInt32)(myFractionalClocks * 100000000.0)); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeDPC::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPC::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - uInt32 i, limit; - - // Indicates which bank is currently active - myCurrentBank = (uInt16) in.getInt(); - - // The top registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myTops[i] = (uInt8) in.getByte(); - - // The bottom registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myBottoms[i] = (uInt8) in.getByte(); - - // The counter registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myCounters[i] = (uInt16) in.getInt(); - - // The flag registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myFlags[i] = (uInt8) in.getByte(); - - // The music mode flags for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myMusicMode[i] = in.getBool(); - - // The random number generator register - myRandomNumber = (uInt8) in.getByte(); - - // Get system cycles and fractional clocks - mySystemCycles = in.getInt(); - myFractionalClocks = (double)in.getInt() / 100000000.0; - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeDPC::load" << endl << " " << msg << endl; - return false; - } - - // Now, go to the current bank - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPC.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPC.hxx deleted file mode 100644 index ea4810f6ea..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPC.hxx +++ /dev/null @@ -1,198 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartDPC.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE_DPC_HXX -#define CARTRIDGE_DPC_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Pitfall II. There are two 4K program banks, a - 2K display bank, and the DPC chip. For complete details on the DPC chip - see David P. Crane's United States Patent Number 4,644,495. - - @author Bradford W. Mott - @version $Id: CartDPC.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeDPC : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeDPC(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeDPC(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeDPC"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Clocks the random number generator to move it to its next state - */ - void clockRandomNumberGenerator(); - - /** - Updates any data fetchers in music mode based on the number of - CPU cycles which have passed since the last update. - */ - void updateMusicModeDataFetchers(); - - private: - // The ROM image - uInt8 myImage[8192 + 2048 + 255]; - - // Pointer to the 8K program ROM image of the cartridge - uInt8* myProgramImage; - - // Pointer to the 2K display ROM image of the cartridge - uInt8* myDisplayImage; - - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The top registers for the data fetchers - uInt8 myTops[8]; - - // The bottom registers for the data fetchers - uInt8 myBottoms[8]; - - // The counter registers for the data fetchers - uInt16 myCounters[8]; - - // The flag registers for the data fetchers - uInt8 myFlags[8]; - - // The music mode DF5, DF6, & DF7 enabled flags - bool myMusicMode[3]; - - // The random number generator register - uInt8 myRandomNumber; - - // System cycle count when the last update to music data fetchers occurred - Int32 mySystemCycles; - - // Fractional DPC music OSC clocks unused during the last update - double myFractionalClocks; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPCPlus.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPCPlus.cpp deleted file mode 100644 index 4cf6652c33..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPCPlus.cpp +++ /dev/null @@ -1,810 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartDPCPlus.cxx 2234 2011-05-26 16:14:46Z stephena $ -//============================================================================ - -#include -#include - -#ifdef DEBUGGER_SUPPORT - #include "Debugger.hxx" -#endif -#include "System.hxx" -#include "Thumbulator.hxx" -#include "CartDPCPlus.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeDPCPlus::CartridgeDPCPlus(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - myFastFetch(false), - myLDAimmediate(false), - myParameterPointer(0), - mySystemCycles(0), - myFractionalClocks(0.0) -{ - // Store image, making sure it's at least 29KB - uInt32 minsize = 4096 * 6 + 4096 + 1024 + 255; - mySize = BSPF_max(minsize, size); - myImage = new uInt8[mySize]; - myDPCRAM = new uInt8[8192]; - memcpy(myImage, image, size); - createCodeAccessBase(4096 * 6); - - // Pointer to the program ROM (24K @ 0 byte offset) - myProgramImage = myImage; - - // Pointer to the display RAM - myDisplayImage = myDPCRAM + 0xC00; - memset(myDPCRAM, 0, 8192); - - // Pointer to the Frequency ROM (1K @ 28K offset) - myFrequencyImage = myProgramImage + 0x7000; - - // If the image is larger than 29K, we assume any excess at the - // beginning is ARM code, and skip over it - if(size > 29 * 1024) - { - int offset = size - 29 * 1024; - myProgramImage += offset; -// myDisplayImage += offset; - myFrequencyImage += offset; - } - -#ifdef THUMB_SUPPORT - // Create Thumbulator ARM emulator - myThumbEmulator = new Thumbulator((uInt16*)(myProgramImage-0xC00), - (uInt16*)myDPCRAM); -#endif - - // Copy DPC display data to Harmony RAM - memcpy(myDisplayImage, myProgramImage + 0x6000, 0x1000); - - // Initialize the DPC data fetcher registers - for(uInt16 i = 0; i < 8; ++i) - myTops[i] = myBottoms[i] = myCounters[i] = myFractionalIncrements[i] = - myFractionalCounters[i] = 0; - - // Set waveforms to first waveform entry - myMusicWaveforms[0] = myMusicWaveforms[1] = myMusicWaveforms[2] = 0; - - // Initialize the DPC's random number generator register (must be non-zero) - myRandomNumber = 0x2B435044; // "DPC+" - - // DPC+ always starts in bank 5 - myStartBank = 5; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeDPCPlus::~CartridgeDPCPlus() -{ - delete[] myImage; - delete[] myDPCRAM; - -#ifdef THUMB_SUPPORT - delete myThumbEmulator; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDPCPlus::reset() -{ - // Update cycles to the current system cycles - mySystemCycles = mySystem->cycles(); - myFractionalClocks = 0.0; - - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDPCPlus::systemCyclesReset() -{ - // Get the current system cycle - uInt32 cycles = mySystem->cycles(); - - // Adjust the cycle counter so that it reflects the new value - mySystemCycles -= cycles; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDPCPlus::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1080 & mask) == 0) && ((0x1100 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map all of the accesses to call peek and poke - for(uInt32 i = 0x1000; i < 0x1080; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void CartridgeDPCPlus::clockRandomNumberGenerator() -{ - // Update random number generator (32-bit LFSR) - myRandomNumber = ((myRandomNumber & (1<<10)) ? 0x10adab1e: 0x00) ^ - ((myRandomNumber >> 11) | (myRandomNumber << 21)); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void CartridgeDPCPlus::priorClockRandomNumberGenerator() -{ - // Update random number generator (32-bit LFSR, reversed) - myRandomNumber = ((myRandomNumber & (1<<31)) ? - ((0x10adab1e^myRandomNumber) << 11) | ((0x10adab1e^myRandomNumber) >> 21) : - (myRandomNumber << 11) | (myRandomNumber >> 21)); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void CartridgeDPCPlus::updateMusicModeDataFetchers() -{ - // Calculate the number of cycles since the last update - Int32 cycles = mySystem->cycles() - mySystemCycles; - mySystemCycles = mySystem->cycles(); - - // Calculate the number of DPC OSC clocks since the last update - double clocks = ((20000.0 * cycles) / 1193191.66666667) + myFractionalClocks; - Int32 wholeClocks = (Int32)clocks; - myFractionalClocks = clocks - (double)wholeClocks; - - if(wholeClocks <= 0) - { - return; - } - - // Let's update counters and flags of the music mode data fetchers - for(int x = 0; x <= 2; ++x) - { - myMusicCounters[x] += myMusicFrequencies[x]; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void CartridgeDPCPlus::callFunction(uInt8 value) -{ - // myParameter - uInt16 ROMdata = (myParameter[1] << 8) + myParameter[0]; - switch (value) - { - case 0: // Parameter Pointer reset - myParameterPointer = 0; - break; - case 1: // Copy ROM to fetcher - for(int i = 0; i < myParameter[3]; ++i) - myDisplayImage[myCounters[myParameter[2] & 0x7]+i] = myProgramImage[ROMdata+i]; - myParameterPointer = 0; - break; - case 2: // Copy value to fetcher - for(int i = 0; i < myParameter[3]; ++i) - myDisplayImage[myCounters[myParameter[2]]+i] = myParameter[0]; - myParameterPointer = 0; - break; - #ifdef THUMB_SUPPORT - case 254: - case 255: - // Call user written ARM code (most likely be C compiled for ARM) - try { - myThumbEmulator->run(); - } - catch(const string& error) { - if(!mySystem->autodectMode()) - { - #ifdef DEBUGGER_SUPPORT - Debugger::debugger().startWithFatalError(error); - #else - cout << error << endl; - #endif - } - } - break; - #endif - // reserved - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeDPCPlus::peek(uInt16 address) -{ - address &= 0x0FFF; - - uInt8 peekvalue = myProgramImage[(myCurrentBank << 12) + address]; - uInt8 flag; - - // In debugger/bank-locked mode, we ignore all hotspots and in general - // anything that can change the internal state of the cart - if(bankLocked()) - return peekvalue; - - // Check if we're in Fast Fetch mode and the prior byte was an A9 (LDA #value) - if(myFastFetch && myLDAimmediate) - { - if(peekvalue < 0x0028) - // if #value is a read-register then we want to use that as the address - address = peekvalue; - } - myLDAimmediate = false; - - if(address < 0x0028) - { - uInt8 result = 0; - - // Get the index of the data fetcher that's being accessed - uInt32 index = address & 0x07; - uInt32 function = (address >> 3) & 0x07; - - // Update flag for selected data fetcher - flag = (((myTops[index]-(myCounters[index] & 0x00ff)) & 0xFF) > ((myTops[index]-myBottoms[index]) & 0xFF)) ? 0xFF : 0; - - switch(function) - { - case 0x00: - { - switch(index) - { - case 0x00: // RANDOM0NEXT - advance and return byte 0 of random - clockRandomNumberGenerator(); - result = myRandomNumber & 0xFF; - break; - - case 0x01: // RANDOM0PRIOR - return to prior and return byte 0 of random - priorClockRandomNumberGenerator(); - result = myRandomNumber & 0xFF; - break; - - case 0x02: // RANDOM1 - result = (myRandomNumber>>8) & 0xFF; - break; - - case 0x03: // RANDOM2 - result = (myRandomNumber>>16) & 0xFF; - break; - - case 0x04: // RANDOM3 - result = (myRandomNumber>>24) & 0xFF; - break; - - case 0x05: // AMPLITUDE - { - // Update the music data fetchers (counter & flag) - updateMusicModeDataFetchers(); - - // using myProgramImage[] instead of myDisplayImage[] because waveforms - // could also be in the 1K Frequency table. - uInt32 i = myProgramImage[6*4096 + (myMusicWaveforms[0] << 5) + (myMusicCounters[0] >> 27)] + - myProgramImage[6*4096 + (myMusicWaveforms[1] << 5) + (myMusicCounters[1] >> 27)] + - myProgramImage[6*4096 + (myMusicWaveforms[2] << 5) + (myMusicCounters[2] >> 27)]; - - result = (uInt8)i; - break; - } - - case 0x06: // reserved - case 0x07: // reserved - break; - } - break; - } - - // DFxDATA - display data read - case 0x01: - { - result = myDisplayImage[myCounters[index]]; - myCounters[index] = (myCounters[index] + 0x1) & 0x0fff; - break; - } - - // DFxDATAW - display data read AND'd w/flag ("windowed") - case 0x02: - { - result = myDisplayImage[myCounters[index]] & flag; - myCounters[index] = (myCounters[index] + 0x1) & 0x0fff; - break; - } - - // DFxFRACDATA - display data read w/fractional increment - case 0x03: - { - result = myDisplayImage[myFractionalCounters[index] >> 8]; - myFractionalCounters[index] = (myFractionalCounters[index] + myFractionalIncrements[index]) & 0x0fffff; - break; - } - - case 0x04: - { - switch (index) - { - case 0x00: // DF0FLAG - case 0x01: // DF1FLAG - case 0x02: // DF2FLAG - case 0x03: // DF3FLAG - { - result = flag; - break; - } - case 0x04: // reserved - case 0x05: // reserved - case 0x06: // reserved - case 0x07: // reserved - break; - } - break; - } - - default: - { - result = 0; - } - } - - return result; - } - else - { - // Switch banks if necessary - switch(address) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the fourth 4k bank - bank(3); - break; - - case 0x0FFA: - // Set the current bank to the fifth 4k bank - bank(4); - break; - - case 0x0FFB: - // Set the current bank to the last 4k bank - bank(5); - break; - - default: - break; - } - - if(myFastFetch) - myLDAimmediate = (peekvalue == 0xA9); - - return peekvalue; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPCPlus::poke(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if((address >= 0x0028) && (address < 0x0080)) - { - // Get the index of the data fetcher that's being accessed - uInt32 index = address & 0x07; - uInt32 function = ((address - 0x28) >> 3) & 0x0f; - - switch(function) - { - //DFxFRACLOW - fractional data pointer low byte - case 0x00: - myFractionalCounters[index] = (myFractionalCounters[index] & 0x0F0000) | ((uInt16)value << 8); - break; - - // DFxFRACHI - fractional data pointer high byte - case 0x01: - myFractionalCounters[index] = (((uInt16)value & 0x0F) << 16) | (myFractionalCounters[index] & 0x00ffff); - break; - - //DFxFRACINC - Fractional Increment amount - case 0x02: - myFractionalIncrements[index] = value; - myFractionalCounters[index] = myFractionalCounters[index] & 0x0FFF00; - break; - - // DFxTOP - set top of window (for reads of DFxDATAW) - case 0x03: - myTops[index] = value; - break; - - // DFxBOT - set bottom of window (for reads of DFxDATAW) - case 0x04: - myBottoms[index] = value; - break; - - // DFxLOW - data pointer low byte - case 0x05: - myCounters[index] = (myCounters[index] & 0x0F00) | value ; - break; - - // Control registers - case 0x06: - switch (index) - { - case 0x00: // FASTFETCH - turns on LDA #pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map Program ROM image into the system - for(uInt32 address = 0x1080; address < 0x2000; address += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPCPlus::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPCPlus::bankCount() const -{ - return 6; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPCPlus::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - // For now, we ignore attempts to patch the DPC address space - if(address >= 0x0080) - { - myProgramImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; - } - else - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeDPCPlus::getImage(int& size) const -{ - size = mySize; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPCPlus::save(Serializer& out) const -{ - try - { - uInt32 i; - - out.putString(name()); - - // Indicates which bank is currently active - out.putInt(myCurrentBank); - - // The top registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putByte((char)myTops[i]); - - // The bottom registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putByte((char)myBottoms[i]); - - // The counter registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putInt(myCounters[i]); - - // The counter registers for the fractional data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putInt(myFractionalCounters[i]); - - // The fractional registers for the data fetchers - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putByte((char)myFractionalIncrements[i]); - - // The Fast Fetcher Enabled flag - out.putBool(myFastFetch); - out.putBool(myLDAimmediate); - - // Control Byte to update - out.putInt(8); - for(i = 0; i < 8; ++i) - out.putByte((char)myParameter[i]); - - // The music counters - out.putInt(3); - for(i = 0; i < 3; ++i) - out.putInt(myMusicCounters[i]); - - // The music frequencies - out.putInt(3); - for(i = 0; i < 3; ++i) - out.putInt(myMusicFrequencies[i]); - - // The music waveforms - out.putInt(3); - for(i = 0; i < 3; ++i) - out.putInt(myMusicWaveforms[i]); - - // The random number generator register - out.putInt(myRandomNumber); - - out.putInt(mySystemCycles); - out.putInt((uInt32)(myFractionalClocks * 100000000.0)); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeDPCPlus::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPCPlus::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - uInt32 i, limit; - - // Indicates which bank is currently active - myCurrentBank = (uInt16) in.getInt(); - - // The top registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myTops[i] = (uInt8) in.getByte(); - - // The bottom registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myBottoms[i] = (uInt8) in.getByte(); - - // The counter registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myCounters[i] = (uInt16) in.getInt(); - - // The counter registers for the fractional data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myFractionalCounters[i] = (uInt32) in.getInt(); - - // The fractional registers for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myFractionalIncrements[i] = (uInt8) in.getByte(); - - // The Fast Fetcher Enabled flag - myFastFetch = in.getBool(); - myLDAimmediate = in.getBool(); - - // Control Byte to update - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myParameter[i] = (uInt8) in.getByte(); - - // The music mode counters for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myMusicCounters[i] = (uInt32) in.getInt(); - - // The music mode frequency addends for the data fetchers - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myMusicFrequencies[i] = (uInt32) in.getInt(); - - // The music waveforms - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myMusicWaveforms[i] = (uInt16) in.getInt(); - - // The random number generator register - myRandomNumber = (uInt32) in.getInt(); - - // Get system cycles and fractional clocks - mySystemCycles = in.getInt(); - myFractionalClocks = (double)in.getInt() / 100000000.0; - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeDPCPlus::load" << endl << " " << msg << endl; - return false; - } - - // Now, go to the current bank - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPCPlus.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPCPlus.hxx deleted file mode 100644 index d197d80ad2..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartDPCPlus.hxx +++ /dev/null @@ -1,244 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartDPCPlus.hxx 2231 2011-05-10 15:04:19Z stephena $ -//============================================================================ - -#ifndef CARTRIDGE_DPC_PLUS_HXX -#define CARTRIDGE_DPC_PLUS_HXX - -class System; -#ifdef THUMB_SUPPORT -class Thumbulator; -#endif - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for DPC+. There are six 4K program banks, a 4K - display bank, 1K frequency table and the DPC chip. For complete details on - the DPC chip see David P. Crane's United States Patent Number 4,644,495. - - @author Darrell Spice Jr, Fred Quimby, Stephen Anthony - @version $Id: CartDPCPlus.hxx 2231 2011-05-10 15:04:19Z stephena $ -*/ -class CartridgeDPCPlus : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeDPCPlus(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeDPCPlus(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeDPCPlus"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Clocks the random number generator to move it to its next state - */ - void clockRandomNumberGenerator(); - - /** - Clocks the random number generator to move it to its prior state - */ - void priorClockRandomNumberGenerator(); - - /** - Updates any data fetchers in music mode based on the number of - CPU cycles which have passed since the last update. - */ - void updateMusicModeDataFetchers(); - - /** - Call Special Functions - */ - void callFunction(uInt8 value); - - private: - // The ROM image and size - uInt8* myImage; - uInt32 mySize; - - // Pointer to the 24K program ROM image of the cartridge - uInt8* myProgramImage; - - // Pointer to the 4K display ROM image of the cartridge - uInt8* myDisplayImage; - - // Pointer to the DPC 8k RAM image - uInt8* myDPCRAM; - -#ifdef THUMB_SUPPORT - // Pointer to the Thumb ARM emulator object - Thumbulator* myThumbEmulator; -#endif - - // Pointer to the 1K frequency table - uInt8* myFrequencyImage; - - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The top registers for the data fetchers - uInt8 myTops[8]; - - // The bottom registers for the data fetchers - uInt8 myBottoms[8]; - - // The counter registers for the data fetchers - uInt16 myCounters[8]; - - // The counter registers for the fractional data fetchers - uInt32 myFractionalCounters[8]; - - // The fractional increments for the data fetchers - uInt8 myFractionalIncrements[8]; - - // The Fast Fetcher Enabled flag - bool myFastFetch; - - // Flags that last byte peeked was A9 (LDA #) - bool myLDAimmediate; - - // Parameter for special functions - uInt8 myParameter[8]; - - // Parameter pointer for special functions - uInt8 myParameterPointer; - - // The music mode counters - uInt32 myMusicCounters[3]; - - // The music frequency - uInt32 myMusicFrequencies[3]; - - // The music waveforms - uInt16 myMusicWaveforms[3]; - - // The random number generator register - uInt32 myRandomNumber; - - // System cycle count when the last update to music data fetchers occurred - Int32 mySystemCycles; - - // Fractional DPC music OSC clocks unused during the last update - double myFractionalClocks; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE0.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE0.cpp deleted file mode 100644 index 4fa5990ec7..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE0.cpp +++ /dev/null @@ -1,271 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartE0.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartE0.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeE0::CartridgeE0(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 8192); - createCodeAccessBase(8192); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeE0::~CartridgeE0() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::reset() -{ - // Setup segments to some default slices - segmentZero(4); - segmentOne(5); - segmentTwo(6); - - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1000 & mask) == 0) && ((0x1400 & mask) == 0) && - ((0x1800 & mask) == 0) && ((0x1C00 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page acessing methods for the first part of the last segment - for(uInt32 i = 0x1C00; i < (0x1FE0U & ~mask); i += (1 << shift)) - { - access.directPeekBase = &myImage[7168 + (i & 0x03FF)]; - access.codeAccessBase = &myCodeAccessBase[7168 + (i & 0x03FF)]; - mySystem->setPageAccess(i >> shift, access); - } - myCurrentSlice[3] = 7; - - // Set the page accessing methods for the hot spots in the last segment - access.directPeekBase = 0; - access.codeAccessBase = &myCodeAccessBase[8128]; - access.type = System::PA_READ; - for(uInt32 j = (0x1FE0 & ~mask); j < 0x2000; j += (1 << shift)) - mySystem->setPageAccess(j >> shift, access); - - // Install some default slices for the other segments - segmentZero(4); - segmentOne(5); - segmentTwo(6); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeE0::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FE7)) - { - segmentZero(address & 0x0007); - } - else if((address >= 0x0FE8) && (address <= 0x0FEF)) - { - segmentOne(address & 0x0007); - } - else if((address >= 0x0FF0) && (address <= 0x0FF7)) - { - segmentTwo(address & 0x0007); - } - - return myImage[(myCurrentSlice[address >> 10] << 10) + (address & 0x03FF)]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FE7)) - { - segmentZero(address & 0x0007); - } - else if((address >= 0x0FE8) && (address <= 0x0FEF)) - { - segmentOne(address & 0x0007); - } - else if((address >= 0x0FF0) && (address <= 0x0FF7)) - { - segmentTwo(address & 0x0007); - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::segmentZero(uInt16 slice) -{ - if(bankLocked()) return; - - // Remember the new slice - myCurrentSlice[0] = slice; - uInt16 offset = slice << 10; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - for(uInt32 address = 0x1000; address < 0x1400; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x03FF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x03FF)]; - mySystem->setPageAccess(address >> shift, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::segmentOne(uInt16 slice) -{ - if(bankLocked()) return; - - // Remember the new slice - myCurrentSlice[1] = slice; - uInt16 offset = slice << 10; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - for(uInt32 address = 0x1400; address < 0x1800; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x03FF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x03FF)]; - mySystem->setPageAccess(address >> shift, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::segmentTwo(uInt16 slice) -{ - if(bankLocked()) return; - - // Remember the new slice - myCurrentSlice[2] = slice; - uInt16 offset = slice << 10; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - for(uInt32 address = 0x1800; address < 0x1C00; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x03FF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x03FF)]; - mySystem->setPageAccess(address >> shift, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::bank(uInt16) -{ - // Doesn't support bankswitching in the normal sense - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeE0::bank() const -{ - // Doesn't support bankswitching in the normal sense - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeE0::bankCount() const -{ - // Doesn't support bankswitching in the normal sense - // There is one 'virtual' bank that can change in many different ways - return 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - myImage[(myCurrentSlice[address >> 10] << 10) + (address & 0x03FF)] = value; - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeE0::getImage(int& size) const -{ - size = 8192; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::save(Serializer& out) const -{ - try - { - out.putString(name()); - - out.putInt(4); - for(uInt32 i = 0; i < 4; ++i) - out.putInt(myCurrentSlice[i]); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeE0::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 i = 0; i < limit; ++i) - myCurrentSlice[i] = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeE0::load" << endl << " " << msg << endl; - return false; - } - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE0.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE0.hxx deleted file mode 100644 index d3688f5811..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE0.hxx +++ /dev/null @@ -1,178 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartE0.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEE0_HXX -#define CARTRIDGEE0_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the cartridge class for Parker Brothers' 8K games. In - this bankswitching scheme the 2600's 4K cartridge address space - is broken into four 1K segments. The desired 1K slice of the - ROM is selected by accessing 1FE0 to 1FE7 for the first 1K. - 1FE8 to 1FEF selects the slice for the second 1K, and 1FF0 to - 1FF8 selects the slice for the third 1K. The last 1K segment - always points to the last 1K of the ROM image. - - Because of the complexity of this scheme, the cart reports having - only one actual bank, in which pieces of it can be swapped out in - many different ways. - - @author Bradford W. Mott - @version $Id: CartE0.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeE0 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeE0(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeE0(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeE0"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Install the specified slice for segment zero - - @param slice The slice to map into the segment - */ - void segmentZero(uInt16 slice); - - /** - Install the specified slice for segment one - - @param slice The slice to map into the segment - */ - void segmentOne(uInt16 slice); - - /** - Install the specified slice for segment two - - @param slice The slice to map into the segment - */ - void segmentTwo(uInt16 slice); - - private: - // Indicates the slice mapped into each of the four segments - uInt16 myCurrentSlice[4]; - - // The 8K ROM image of the cartridge - uInt8 myImage[8192]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE7.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE7.cpp deleted file mode 100644 index f66d451abc..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE7.cpp +++ /dev/null @@ -1,359 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartE7.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartE7.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeE7::CartridgeE7(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 16384); - createCodeAccessBase(16384 + 2048); - - // This cart can address a 1024 byte bank of RAM @ 0x1000 - // and 256 bytes @ 0x1800 - // However, it may not be addressable all the time (it may be swapped out) - // so probably most of the time, the area will point to ROM instead - registerRamArea(0x1000, 1024, 0x400, 0x00); // 1024 bytes RAM @ 0x1000 - registerRamArea(0x1800, 256, 0x100, 0x00); // 256 bytes RAM @ 0x1800 - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeE7::~CartridgeE7() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE7::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 2048; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 2048); - - // Install some default banks for the RAM and first segment - bankRAM(0); - bank(myStartBank); - - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE7::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1400 & mask) == 0) && ((0x1800 & mask) == 0) && - ((0x1900 & mask) == 0) && ((0x1A00 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FE0 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[8128]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the second segment to always point to the last ROM slice - for(uInt32 j = 0x1A00; j < (0x1FE0U & ~mask); j += (1 << shift)) - { - access.directPeekBase = &myImage[7 * 2048 + (j & 0x07FF)]; - access.codeAccessBase = &myCodeAccessBase[7 * 2048 + (j & 0x07FF)]; - mySystem->setPageAccess(j >> shift, access); - } - myCurrentSlice[1] = 7; - - // Install some default banks for the RAM and first segment - bankRAM(0); - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeE7::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FE7)) - { - bank(address & 0x0007); - } - else if((address >= 0x0FE8) && (address <= 0x0FEB)) - { - bankRAM(address & 0x0003); - } - - if((myCurrentSlice[0] == 7) && (address < 0x0400)) - { - // Reading from the 1K write port @ $1000 triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[address & 0x03FF] = value; - } - } - else if((address >= 0x0800) && (address <= 0x08FF)) - { - // Reading from the 256B write port @ $1800 triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[1024 + (myCurrentRAM << 8) + (address & 0x00FF)] = value; - } - } - else - return myImage[(myCurrentSlice[address >> 11] << 11) + (address & 0x07FF)]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE7::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FE7)) - { - bank(address & 0x0007); - } - else if((address >= 0x0FE8) && (address <= 0x0FEB)) - { - bankRAM(address & 0x0003); - } - - // NOTE: This does not handle writing to RAM, however, this - // function should never be called for RAM because of the - // way page accessing has been setup - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE7::bankRAM(uInt16 bank) -{ - if(bankLocked()) return; - - // Remember what bank we're in - myCurrentRAM = bank; - uInt16 offset = bank << 8; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_WRITE); - - // Set the page accessing method for the 256 bytes of RAM writing pages - for(uInt32 j = 0x1800; j < 0x1900; j += (1 << shift)) - { - access.directPokeBase = &myRAM[1024 + offset + (j & 0x00FF)]; - access.codeAccessBase = &myCodeAccessBase[8192 + 1024 + offset + (j & 0x00FF)]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the 256 bytes of RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1900; k < 0x1A00; k += (1 << shift)) - { - access.directPeekBase = &myRAM[1024 + offset + (k & 0x00FF)]; - access.codeAccessBase = &myCodeAccessBase[8192 + 1024 + offset + (k & 0x00FF)]; - mySystem->setPageAccess(k >> shift, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE7::bank(uInt16 slice) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentSlice[0] = slice; - uInt16 offset = slice << 11; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - if(slice != 7) - { - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into first segment - for(uInt32 address = 0x1000; address < 0x1800; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x07FF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x07FF)]; - mySystem->setPageAccess(address >> shift, access); - } - } - else - { - System::PageAccess access(0, 0, 0, this, System::PA_WRITE); - - // Set the page accessing method for the 1K slice of RAM writing pages - for(uInt32 j = 0x1000; j < 0x1400; j += (1 << shift)) - { - access.directPokeBase = &myRAM[j & 0x03FF]; - access.codeAccessBase = &myCodeAccessBase[8192 + (j & 0x03FF)]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the 1K slice of RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1400; k < 0x1800; k += (1 << shift)) - { - access.directPeekBase = &myRAM[k & 0x03FF]; - access.codeAccessBase = &myCodeAccessBase[8192 + (k & 0x03FF)]; - mySystem->setPageAccess(k >> shift, access); - } - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeE7::bank() const -{ - return myCurrentSlice[0]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeE7::bankCount() const -{ - return 8; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE7::patch(uInt16 address, uInt8 value) -{ - address = address & 0x0FFF; - - if(address < 0x0800) - { - if(myCurrentSlice[0] == 7) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x03FF] = value; - } - else - myImage[(myCurrentSlice[0] << 11) + (address & 0x07FF)] = value; - } - else if(address < 0x0900) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[1024 + (myCurrentRAM << 8) + (address & 0x00FF)] = value; - } - else - myImage[(myCurrentSlice[address >> 11] << 11) + (address & 0x07FF)] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeE7::getImage(int& size) const -{ - size = 16384; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE7::save(Serializer& out) const -{ - try - { - uInt32 i; - - out.putString(name()); - - out.putInt(2); - for(i = 0; i < 2; ++i) - out.putInt(myCurrentSlice[i]); - - out.putInt(myCurrentRAM); - - // The 2048 bytes of RAM - out.putInt(2048); - for(i = 0; i < 2048; ++i) - out.putByte((char)myRAM[i]); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeE7::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE7::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - uInt32 i, limit; - - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myCurrentSlice[i] = (uInt16) in.getInt(); - - myCurrentRAM = (uInt16) in.getInt(); - - // The 2048 bytes of RAM - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myRAM[i] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeE7::load" << endl << " " << msg << endl; - return false; - } - - // Set up the previously used banks for the RAM and segment - bankRAM(myCurrentRAM); - bank(myCurrentSlice[0]); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE7.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE7.hxx deleted file mode 100644 index 4d9f9dba3f..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartE7.hxx +++ /dev/null @@ -1,187 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartE7.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEE7_HXX -#define CARTRIDGEE7_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the cartridge class for M-Network bankswitched games. - In this bankswitching scheme the 2600's 4K cartridge address - space is broken into two 2K segments. - - Kevin Horton describes E7 as follows: - - Only M-Network used this scheme. This has to be the - most complex method used in any cart! :-) It allows - for the capability of 2K of RAM; although it doesn't - have to be used (in fact, only one cart used it). - There are now 8 2K banks, instead of 4. The last 2K - in the cart always points to the last 2K of the ROM - image, while the first 2K is selectable. You access - 1FE0 to 1FE6 to select which 2K bank. Note that you - cannot select the last 2K of the ROM image into the - lower 2K of the cart! Accessing 1FE7 selects 1K of - RAM at 1000-17FF instead of ROM! The 2K of RAM is - broken up into two 1K sections. One 1K section is - mapped in at 1000-17FF if 1FE7 has been accessed. - 1000-13FF is the write port, while 1400-17FF is the - read port. The second 1K of RAM appears at 1800-19FF. - 1800-18FF is the write port while 1900-19FF is the - read port. You select which 256 byte block appears - here by accessing 1FE8 to 1FEB. - - This cart reports having 8 banks; 1 for each of the possible 7 - slices in the lower 2K area, and the last for RAM in the lower - 2K area. - - @author Bradford W. Mott - @version $Id: CartE7.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeE7 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeE7(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeE7(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeE7"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Install pages for the specified 256 byte bank of RAM - - @param bank The bank that should be installed in the system - */ - void bankRAM(uInt16 bank); - - private: - // Indicates which slice is in the segment - uInt16 myCurrentSlice[2]; - - // Indicates which 256 byte bank of RAM is being used - uInt16 myCurrentRAM; - - // The 16K ROM image of the cartridge - uInt8 myImage[16384]; - - // The 2048 bytes of RAM - uInt8 myRAM[2048]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEF.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEF.cpp deleted file mode 100644 index efd109ac86..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEF.cpp +++ /dev/null @@ -1,180 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartEF.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartEF.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeEF::CartridgeEF(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 65536); - createCodeAccessBase(65536); - - // Remember startup bank - myStartBank = 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeEF::~CartridgeEF() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEF::reset() -{ - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEF::install(System& system) -{ - mySystem = &system; - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mySystem->pageMask()) == 0); - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeEF::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FEF)) - bank(address - 0x0FE0); - - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FEF)) - bank(address - 0x0FE0); - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FE0 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1000; address < (0x1FE0U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEF::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEF::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeEF::getImage(int& size) const -{ - size = 65536; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeEF::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeEF::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEF.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEF.hxx deleted file mode 100644 index 6f12a76dd7..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEF.hxx +++ /dev/null @@ -1,151 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartEF.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEEF_HXX -#define CARTRIDGEEF_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Homestar Runner by Paul Slocum. - There are 16 4K banks (total of 64K ROM). - Accessing $1FE0 - $1FEF switches to each bank. - - This interpretation is based on analysis of the z26 assembly code, - as this scheme doesn't seem to be documented anywhere. - - @author Stephen Anthony - @version $Id: CartEF.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeEF : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeEF(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeEF(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeEF"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 64K ROM image of the cartridge - uInt8 myImage[65536]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEFSC.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEFSC.cpp deleted file mode 100644 index ad879b1848..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEFSC.cpp +++ /dev/null @@ -1,242 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartEFSC.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartEFSC.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeEFSC::CartridgeEFSC(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 65536); - createCodeAccessBase(65536); - - // This cart contains 128 bytes extended RAM @ 0x1000 - registerRamArea(0x1000, 128, 0x80, 0x00); - - // Remember startup bank - myStartBank = 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeEFSC::~CartridgeEFSC() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSC::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 128; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 128); - - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSC::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing method for the RAM writing pages - access.type = System::PA_WRITE; - for(uInt32 j = 0x1000; j < 0x1080; j += (1 << shift)) - { - access.directPokeBase = &myRAM[j & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[j & 0x007F]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1080; k < 0x1100; k += (1 << shift)) - { - access.directPeekBase = &myRAM[k & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[0x80 + (k & 0x007F)]; - mySystem->setPageAccess(k >> shift, access); - } - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeEFSC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FEF)) - bank(address - 0x0FE0); - - if(address < 0x0080) // Write port is at 0xF000 - 0xF080 (128 bytes) - { - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[address] = value; - } - } - else - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FEF)) - bank(address - 0x0FE0); - - // NOTE: This does not handle accessing RAM, however, this function - // should never be called for RAM because of the way page accessing - // has been setup - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FE0 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1100; address < (0x1FE0U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEFSC::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEFSC::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[(myCurrentBank << 12) + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeEFSC::getImage(int& size) const -{ - size = 65536; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeEFSC::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeEFSC::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEFSC.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEFSC.hxx deleted file mode 100644 index 81394edaa4..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartEFSC.hxx +++ /dev/null @@ -1,154 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartEFSC.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEEFSC_HXX -#define CARTRIDGEEFSC_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Homestar Runner by Paul Slocum. - There are 16 4K banks (total of 64K ROM) with 128 bytes of RAM. - Accessing $1FE0 - $1FEF switches to each bank. - - This interpretation is based on analysis of the z26 assembly code, - as this scheme doesn't seem to be documented anywhere. - - @author Stephen Anthony - @version $Id: CartEFSC.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeEFSC : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeEFSC(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeEFSC(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeEFSC"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 64K ROM image of the cartridge - uInt8 myImage[65536]; - - // The 128 bytes of RAM - uInt8 myRAM[128]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF0.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF0.cpp deleted file mode 100644 index ca9e0d55db..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF0.cpp +++ /dev/null @@ -1,195 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF0.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartF0.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF0::CartridgeF0(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 65536); - createCodeAccessBase(65536); - - // Remember startup bank - myStartBank = 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF0::~CartridgeF0() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0::reset() -{ - // Upon reset we switch to bank 1 - myCurrentBank = 0; - incbank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0::install(System& system) -{ - mySystem = &system; - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mySystem->pageMask()) == 0); - - // Install pages for bank 1 - myCurrentBank = 0; - incbank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF0::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch to next bank - if(address == 0x0FF0) - incbank(); - - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch to next bank - if(address == 0x0FF0) - incbank(); - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0::incbank() -{ - if(bankLocked()) return; - - // Remember what bank we're in - myCurrentBank++; - myCurrentBank &= 0x0F; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF0 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1000; address < (0x1FF0U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - myCurrentBank = bank - 1; - incbank(); - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF0::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF0::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF0::getImage(int& size) const -{ - size = 65536; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF0::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF0::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - --myCurrentBank; - incbank(); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF0.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF0.hxx deleted file mode 100644 index 344865e9a6..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF0.hxx +++ /dev/null @@ -1,154 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF0.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEF0_HXX -#define CARTRIDGEF0_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Dynacom Megaboy - There are 16 4K banks. - Accessing $1FF0 switches to next bank. - - @author Eckhard Stolberg - @version $Id: CartF0.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeF0 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeF0(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeF0(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeF0"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Install pages for the next bank in the system - */ - void incbank(); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 64K ROM image of the cartridge - uInt8 myImage[65536]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4.cpp deleted file mode 100644 index 1058c58571..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4.cpp +++ /dev/null @@ -1,185 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF4.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "Random.hxx" -#include "System.hxx" -#include "CartF4.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF4::CartridgeF4(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 32768); - createCodeAccessBase(32768); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF4::~CartridgeF4() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4::reset() -{ - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4::install(System& system) -{ - mySystem = &system; - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mySystem->pageMask()) == 0); - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF4::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FF4) && (address <= 0x0FFB)) - { - bank(address - 0x0FF4); - } - - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FF4) && (address <= 0x0FFB)) - { - bank(address - 0x0FF4); - } - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF4 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1000; address < (0x1FF4U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4::bankCount() const -{ - return 8; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF4::getImage(int& size) const -{ - size = 32768; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF4::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16)in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF4::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4.hxx deleted file mode 100644 index 4cba8cb686..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4.hxx +++ /dev/null @@ -1,147 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF4.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEF4_HXX -#define CARTRIDGEF4_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Atari's 32K bankswitched games. There - are eight 4K banks. - - @author Bradford W. Mott - @version $Id: CartF4.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeF4 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeF4(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeF4(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeF4"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 16K ROM image of the cartridge - uInt8 myImage[32768]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4SC.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4SC.cpp deleted file mode 100644 index de52bed05d..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4SC.cpp +++ /dev/null @@ -1,254 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF4SC.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartF4SC.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF4SC::CartridgeF4SC(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 32768); - createCodeAccessBase(32768); - - // This cart contains 128 bytes extended RAM @ 0x1000 - registerRamArea(0x1000, 128, 0x80, 0x00); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF4SC::~CartridgeF4SC() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SC::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 128; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 128); - - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SC::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1080 & mask) == 0) && ((0x1100 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing method for the RAM writing pages - access.type = System::PA_WRITE; - for(uInt32 j = 0x1000; j < 0x1080; j += (1 << shift)) - { - access.directPokeBase = &myRAM[j & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[j & 0x007F]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1080; k < 0x1100; k += (1 << shift)) - { - access.directPeekBase = &myRAM[k & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[0x80 + (k & 0x007F)]; - mySystem->setPageAccess(k >> shift, access); - } - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF4SC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FF4) && (address <= 0x0FFB)) - bank(address - 0x0FF4); - - if(address < 0x0080) // Write port is at 0xF000 - 0xF080 (128 bytes) - { - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[address] = value; - } - } - - // NOTE: This does not handle accessing RAM, however, this function - // should never be called for RAM because of the way page accessing - // has been setup - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FF4) && (address <= 0x0FFB)) - bank(address - 0x0FF4); - - // NOTE: This does not handle accessing RAM, however, this function - // should never be called for RAM because of the way page accessing - // has been setup - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF4 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1100; address < (0x1FF4U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4SC::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4SC::bankCount() const -{ - return 8; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[(myCurrentBank << 12) + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF4SC::getImage(int& size) const -{ - size = 32768; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - - // The 128 bytes of RAM - out.putInt(128); - for(uInt32 i = 0; i < 128; ++i) - out.putByte((char)myRAM[i]); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF4SC::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 i = 0; i < limit; ++i) - myRAM[i] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF4SC::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4SC.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4SC.hxx deleted file mode 100644 index a60fc49f7d..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF4SC.hxx +++ /dev/null @@ -1,150 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF4SC.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEF4SC_HXX -#define CARTRIDGEF4SC_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Atari's 32K bankswitched games with - 128 bytes of RAM. There are eight 4K banks. - - @author Bradford W. Mott - @version $Id: CartF4SC.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeF4SC : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeF4SC(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeF4SC(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeF4SC"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 16K ROM image of the cartridge - uInt8 myImage[32768]; - - // The 128 bytes of RAM - uInt8 myRAM[128]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6.cpp deleted file mode 100644 index 00a222149e..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6.cpp +++ /dev/null @@ -1,225 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF6.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartF6.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF6::CartridgeF6(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 16384); - createCodeAccessBase(16384); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF6::~CartridgeF6() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6::reset() -{ - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6::install(System& system) -{ - mySystem = &system; - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mySystem->pageMask()) == 0); - - // Upon install we'll setup the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF6::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - break; - - default: - break; - } - - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - break; - - default: - break; - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF6 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1000; address < (0x1FF6U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6::bankCount() const -{ - return 4; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF6::getImage(int& size) const -{ - size = 16384; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF6::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF6::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6.hxx deleted file mode 100644 index bcdde92944..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6.hxx +++ /dev/null @@ -1,147 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF6.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEF6_HXX -#define CARTRIDGEF6_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Atari's 16K bankswitched games. There - are four 4K banks. - - @author Bradford W. Mott - @version $Id: CartF6.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeF6 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeF6(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeF6(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeF6"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 16K ROM image of the cartridge - uInt8 myImage[16384]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6SC.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6SC.cpp deleted file mode 100644 index e56b284b66..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6SC.cpp +++ /dev/null @@ -1,299 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF6SC.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartF6SC.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF6SC::CartridgeF6SC(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 16384); - createCodeAccessBase(16384); - - // This cart contains 128 bytes extended RAM @ 0x1000 - registerRamArea(0x1000, 128, 0x80, 0x00); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF6SC::~CartridgeF6SC() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SC::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 128; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 128); - - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SC::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1080 & mask) == 0) && ((0x1100 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing method for the RAM writing pages - access.type = System::PA_WRITE; - for(uInt32 j = 0x1000; j < 0x1080; j += (1 << shift)) - { - access.directPokeBase = &myRAM[j & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[j & 0x007F]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1080; k < 0x1100; k += (1 << shift)) - { - access.directPeekBase = &myRAM[k & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[0x80 + (k & 0x007F)]; - mySystem->setPageAccess(k >> shift, access); - } - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF6SC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - break; - - default: - break; - } - - if(address < 0x0080) // Write port is at 0xF000 - 0xF080 (128 bytes) - { - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[address] = value; - } - } - else - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - break; - - default: - break; - } - - // NOTE: This does not handle accessing RAM, however, this function - // should never be called for RAM because of the way page accessing - // has been setup - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF6 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1100; address < (0x1FF6U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6SC::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6SC::bankCount() const -{ - return 4; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[(myCurrentBank << 12) + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF6SC::getImage(int& size) const -{ - size = 16384; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - - // The 128 bytes of RAM - out.putInt(128); - for(uInt32 i = 0; i < 128; ++i) - out.putByte((char)myRAM[i]); - - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF6SC::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - - // The 128 bytes of RAM - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 i = 0; i < limit; ++i) - myRAM[i] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF6SC::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6SC.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6SC.hxx deleted file mode 100644 index 8cb12ce631..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF6SC.hxx +++ /dev/null @@ -1,150 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF6SC.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEF6SC_HXX -#define CARTRIDGEF6SC_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Atari's 16K bankswitched games with - 128 bytes of RAM. There are four 4K banks. - - @author Bradford W. Mott - @version $Id: CartF6SC.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeF6SC : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeF6SC(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeF6SC(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeF6SC"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 16K ROM image of the cartridge - uInt8 myImage[16384]; - - // The 128 bytes of RAM - uInt8 myRAM[128]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8.cpp deleted file mode 100644 index 2a999ad666..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8.cpp +++ /dev/null @@ -1,212 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF8.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartF8.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF8::CartridgeF8(const uInt8* image, const string& md5, - const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 8192); - createCodeAccessBase(8192); - - // Normally bank 1 is the reset bank, unless we're dealing with ROMs - // that have been incorrectly created with banks in the opposite order - myStartBank = - (md5 == "bc24440b59092559a1ec26055fd1270e" || // Private Eye [a] - md5 == "75ea60884c05ba496473c23a58edf12f" || // 8-in-1 Yars Revenge - md5 == "75ee371ccfc4f43e7d9b8f24e1266b55" || // Snow White - md5 == "9905f9f4706223dadee84f6867ede8e3") // Challenge - ? 0 : 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF8::~CartridgeF8() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8::reset() -{ - // Upon reset we switch to the reset bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8::install(System& system) -{ - mySystem = &system; - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mySystem->pageMask()) == 0); - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF8::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF8 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1000; address < (0x1FF8U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF8::getImage(int& size) const -{ - size = 8192; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF8::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF8SC::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8.hxx deleted file mode 100644 index cf9011d3fa..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8.hxx +++ /dev/null @@ -1,148 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF8.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEF8_HXX -#define CARTRIDGEF8_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Atari's 8K bankswitched games. There - are two 4K banks. - - @author Bradford W. Mott - @version $Id: CartF8.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeF8 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param md5 MD5sum of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeF8(const uInt8* image, const string& md5, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeF8(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeF8"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 8K ROM image of the cartridge - uInt8 myImage[8192]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8SC.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8SC.cpp deleted file mode 100644 index 149bb43926..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8SC.cpp +++ /dev/null @@ -1,277 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF8SC.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartF8SC.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF8SC::CartridgeF8SC(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 8192); - createCodeAccessBase(8192); - - // This cart contains 128 bytes extended RAM @ 0x1000 - registerRamArea(0x1000, 128, 0x80, 0x00); - - // Remember startup bank - myStartBank = 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeF8SC::~CartridgeF8SC() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SC::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 128; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 128); - - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SC::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1080 & mask) == 0) && ((0x1100 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing method for the RAM writing pages - access.type = System::PA_WRITE; - for(uInt32 j = 0x1000; j < 0x1080; j += (1 << shift)) - { - access.directPokeBase = &myRAM[j & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[j & 0x007F]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1080; k < 0x1100; k += (1 << shift)) - { - access.directPeekBase = &myRAM[k & 0x007F]; - access.codeAccessBase = &myCodeAccessBase[0x80 + (k & 0x007F)]; - mySystem->setPageAccess(k >> shift, access); - } - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF8SC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - if(address < 0x0080) // Write port is at 0xF000 - 0xF080 (128 bytes) - { - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[address] = value; - } - } - else - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - // NOTE: This does not handle accessing RAM, however, this function - // should never be called for RAM because of the way page accessing - // has been setup - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF8 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1100; address < (0x1FF8U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8SC::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8SC::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[(myCurrentBank << 12) + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF8SC::getImage(int& size) const -{ - size = 8192; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - - // The 128 bytes of RAM - out.putInt(128); - for(uInt32 i = 0; i < 128; ++i) - out.putByte((char)myRAM[i]); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF8SC::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 i = 0; i < limit; ++i) - myRAM[i] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF8SC::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8SC.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8SC.hxx deleted file mode 100644 index ab0c7e20a0..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartF8SC.hxx +++ /dev/null @@ -1,150 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartF8SC.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEF8SC_HXX -#define CARTRIDGEF8SC_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for Atari's 8K bankswitched games with - 128 bytes of RAM. There are two 4K banks. - - @author Bradford W. Mott - @version $Id: CartF8SC.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeF8SC : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeF8SC(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeF8SC(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeF8SC"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 8K ROM image of the cartridge - uInt8 myImage[8192]; - - // The 128 bytes of RAM - uInt8 myRAM[128]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFA.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFA.cpp deleted file mode 100644 index d18407a5e5..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFA.cpp +++ /dev/null @@ -1,287 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartFA.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartFA.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeFA::CartridgeFA(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 12288); - createCodeAccessBase(12288); - - // This cart contains 256 bytes extended RAM @ 0x1000 - registerRamArea(0x1000, 256, 0x100, 0x00); - - // Remember startup bank - myStartBank = 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeFA::~CartridgeFA() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 256; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 256); - - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1100 & mask) == 0) && ((0x1200 & mask) == 0)); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing method for the RAM writing pages - access.type = System::PA_WRITE; - for(uInt32 j = 0x1000; j < 0x1100; j += (1 << shift)) - { - access.directPokeBase = &myRAM[j & 0x00FF]; - access.codeAccessBase = &myCodeAccessBase[j & 0x00FF]; - mySystem->setPageAccess(j >> shift, access); - } - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = 0; - access.type = System::PA_READ; - for(uInt32 k = 0x1100; k < 0x1200; k += (1 << shift)) - { - access.directPeekBase = &myRAM[k & 0x00FF]; - access.codeAccessBase = &myCodeAccessBase[0x100 + (k & 0x00FF)]; - mySystem->setPageAccess(k >> shift, access); - } - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeFA::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the middle 4k bank - bank(1); - break; - - case 0x0FFA: - // Set the current bank to the upper 4k bank - bank(2); - break; - - default: - break; - } - - if(address < 0x0100) // Write port is at 0xF000 - 0xF100 (256 bytes) - { - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[address] = value; - } - } - else - return myImage[(myCurrentBank << 12) + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the middle 4k bank - bank(1); - break; - - case 0x0FFA: - // Set the current bank to the upper 4k bank - bank(2); - break; - - default: - break; - } - - // NOTE: This does not handle accessing RAM, however, this function - // should never be called for RAM because of the way page accessing - // has been setup - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = (0x1FF8 & ~mask); i < 0x2000; i += (1 << shift)) - { - access.codeAccessBase = &myCodeAccessBase[offset + (i & 0x0FFF)]; - mySystem->setPageAccess(i >> shift, access); - } - - // Setup the page access methods for the current bank - for(uInt32 address = 0x1200; address < (0x1FF8U & ~mask); - address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFA::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFA::bankCount() const -{ - return 3; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0200) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x00FF] = value; - } - else - myImage[(myCurrentBank << 12) + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeFA::getImage(int& size) const -{ - size = 12288; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - - // The 256 bytes of RAM - out.putInt(256); - for(uInt32 i = 0; i < 256; ++i) - out.putByte((char)myRAM[i]); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeFA::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16) in.getInt(); - - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 i = 0; i < limit; ++i) - myRAM[i] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeFA::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFA.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFA.hxx deleted file mode 100644 index 422c54bbf3..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFA.hxx +++ /dev/null @@ -1,150 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartFA.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEFA_HXX -#define CARTRIDGEFA_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for CBS' RAM Plus cartridges. There are - three 4K banks and 256 bytes of RAM. - - @author Bradford W. Mott - @version $Id: CartFA.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeFA : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeFA(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeFA(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeFA"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 12K ROM image of the cartridge - uInt8 myImage[12288]; - - // The 256 bytes of RAM on the cartridge - uInt8 myRAM[256]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFE.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFE.cpp deleted file mode 100644 index 08cf0d08e0..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFE.cpp +++ /dev/null @@ -1,197 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartFE.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartFE.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeFE::CartridgeFE(const uInt8* image, const Settings& settings) - : Cartridge(settings), - myLastAddress1(0), - myLastAddress2(0), - myLastAddressChanged(false) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 8192); - - // We use System::PageAccess.codeAccessBase, but don't allow its use - // through a pointer, since the address space of FE carts can change - // at the instruction level, and PageAccess is normally defined at an - // interval of 64 bytes - // - // Instead, access will be through the getAccessFlags and setAccessFlags - // methods below - createCodeAccessBase(8192); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeFE::~CartridgeFE() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFE::reset() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFE::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map all of the accesses to call peek and poke - for(uInt32 i = 0x1000; i < 0x2000; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeFE::peek(uInt16 address) -{ - // The bank is determined by A13 of the processor - // We keep track of the two most recent accesses to determine which bank - // we're in, and when the values actually changed - myLastAddress2 = myLastAddress1; - myLastAddress1 = address; - myLastAddressChanged = true; - - return myImage[(address & 0x0FFF) + (((address & 0x2000) == 0) ? 4096 : 0)]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::poke(uInt16, uInt8) -{ - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeFE::getAccessFlags(uInt16 address) -{ - return myCodeAccessBase[(address & 0x0FFF) + - (((address & 0x2000) == 0) ? 4096 : 0)]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFE::setAccessFlags(uInt16 address, uInt8 flags) -{ - myCodeAccessBase[(address & 0x0FFF) + - (((address & 0x2000) == 0) ? 4096 : 0)] |= flags; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::bank(uInt16) -{ - // Doesn't support bankswitching in the normal sense - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFE::bank() const -{ - // The current bank depends on the last address accessed - return ((myLastAddress1 & 0x2000) == 0) ? 1 : 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFE::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::bankChanged() -{ - if(myLastAddressChanged) - { - // A bankswitch occurs when the addresses transition from state to another - bool a1 = ((myLastAddress1 & 0x2000) == 0), - a2 = ((myLastAddress2 & 0x2000) == 0); - myBankChanged = (a1 && !a2) || (a2 && !a1); - myLastAddressChanged = false; - } - else - { - myBankChanged = false; - } - - // In any event, let the base class know about it - return Cartridge::bankChanged(); -} - - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::patch(uInt16 address, uInt8 value) -{ - myImage[(address & 0x0FFF) + (((address & 0x2000) == 0) ? 4096 : 0)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeFE::getImage(int& size) const -{ - size = 8192; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myLastAddress1); - out.putInt(myLastAddress2); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeFE::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myLastAddress1 = (uInt16)in.getInt(); - myLastAddress2 = (uInt16)in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeF8SC::load" << endl << " " << msg << endl; - return false; - } - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFE.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFE.hxx deleted file mode 100644 index 54d1de44d9..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartFE.hxx +++ /dev/null @@ -1,183 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartFE.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEFE_HXX -#define CARTRIDGEFE_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Bankswitching method used by Activison's Robot Tank and Decathlon. - - Kevin Horton describes FE as follows: - - Used only on two carts (Robot Tank and Decathlon). These - carts are very weird. It does not use accesses to the stack - like was previously thought. Instead, if you watch the called - addresses very carefully, you can see that they are either Dxxx - or Fxxx. This determines the bank to use. Just monitor A13 of - the processor and use it to determine your bank! :-) Of course - the 6507 in the 2600 does not have an A13, so the cart must have - an extra bit in the ROM matrix to tell when to switch banks. - There is *no* way to determine which bank you want to be in from - monitoring the bus. - - This cart reports having 2 banks, even though this cannot be - determined on a real system. - - @author Bradford W. Mott - @version $Id: CartFE.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeFE : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeFE(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeFE(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Answer whether the bank has changed since the last time this - method was called. - - @return Whether the bank was changed - */ - bool bankChanged(); - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeFE"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - /** - Query/change the given address type to use the given disassembly flags - - @param address The address to modify - @param flags A bitfield of DisasmType directives for the given address - */ - uInt8 getAccessFlags(uInt16 address); - void setAccessFlags(uInt16 address, uInt8 flags); - - private: - // The 8K ROM image of the cartridge - uInt8 myImage[8192]; - - // Previous two addresses accessed by peek() - uInt16 myLastAddress1, myLastAddress2; - - // Last two addresses have been modified by peek() - bool myLastAddressChanged; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartMC.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartMC.cpp deleted file mode 100644 index d4393f1c4b..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartMC.cpp +++ /dev/null @@ -1,301 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartMC.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartMC.hxx" - -// TODO - much more testing of this scheme is required -// No test ROMs exist as of 2009-11-08, so we can't be sure how -// accurate the emulation is -// Bankchange and RAM modification cannot be completed until -// adequate test ROMs are available -// TODO (2010-10-03) - support CodeAccessBase functionality somehow - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeMC::CartridgeMC(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - mySlot3Locked(false) -{ - // Make sure size is reasonable - assert(size <= 131072); - - // Set the contents of the entire ROM to 0 - memset(myImage, 0, 131072); - - // Copy the ROM image to the end of the ROM buffer - memcpy(myImage + 131072 - size, image, size); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeMC::~CartridgeMC() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeMC::reset() -{ - // Initialize RAM - if(mySettings.getBool("ramrandom")) - for(uInt32 i = 0; i < 32768; ++i) - myRAM[i] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 32768); - - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeMC::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert(((0x1000 & mask) == 0) && ((0x1400 & mask) == 0) && - ((0x1800 & mask) == 0) && ((0x1C00 & mask) == 0)); - - // Set the page accessing methods for the hot spots in the TIA. For - // correct emulation I would need to chain any accesses below 0x40 to - // the TIA but for now I'll just forget about them. - // - // TODO: These TIA accesses may need to be chained, however, at this - // point Chris isn't sure if the hardware will allow it or not - // - System::PageAccess access(0, 0, 0, this, System::PA_READWRITE); - - for(uInt32 i = 0x00; i < 0x40; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Map the cartridge into the system - access.type = System::PA_READ; // We don't yet indicate RAM areas - for(uInt32 j = 0x1000; j < 0x2000; j += (1 << shift)) - mySystem->setPageAccess(j >> shift, access); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeMC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x1FFF; - - // Accessing the RESET vector so lets handle the powerup special case - if((address == 0x1FFC) || (address == 0x1FFD)) - { - // Indicate that slot 3 is locked for now - mySlot3Locked = true; - } - // Should we unlock slot 3? - else if(mySlot3Locked && (address >= 0x1000) && (address <= 0x1BFF)) - { - // Indicate that slot 3 is unlocked now - mySlot3Locked = false; - } - - // Handle reads made to the TIA addresses - if(address < 0x1000) - { - return 0; - } - else - { - uInt8 block; - - if(mySlot3Locked && ((address & 0x0C00) == 0x0C00)) - { - block = 0xFF; - } - else - { - block = myCurrentBlock[(address & 0x0C00) >> 10]; - } - - // Is this a RAM or a ROM access - if(block & 0x80) - { - // ROM access - return myImage[(uInt32)((block & 0x7F) << 10) + (address & 0x03FF)]; - } - else - { - // This is a RAM access, however, is it to the read or write port? - if(address & 0x0200) - { - // Reading from the read port of the RAM block - return myRAM[(uInt32)((block & 0x3F) << 9) + (address & 0x01FF)]; - } - else - { - // Oops, reading from the write port of the RAM block! - // Reading from the write port triggers an unwanted write - uInt8 value = mySystem->getDataBusState(0xFF); - - if(bankLocked()) - return value; - else - { - triggerReadFromWritePort(peekAddress); - return myRAM[(uInt32)((block & 0x3F) << 9) + (address & 0x01FF)] = value; - } - } - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeMC::poke(uInt16 address, uInt8 value) -{ - address &= 0x1FFF; - - // Accessing the RESET vector so lets handle the powerup special case - if((address == 0x1FFC) || (address == 0x1FFD)) - { - // Indicate that slot 3 is locked for now - mySlot3Locked = true; - } - // Should we unlock slot 3? - else if(mySlot3Locked && (address >= 0x1000) && (address <= 0x1BFF)) - { - // Indicate that slot 3 is unlocked now - mySlot3Locked = false; - } - - // Handle bank-switching writes - if((address >= 0x003C) && (address <= 0x003F)) - { - myCurrentBlock[address - 0x003C] = value; - } - else - { - uInt8 block; - - if(mySlot3Locked && ((address & 0x0C00) == 0x0C00)) - { - block = 0xFF; - } - else - { - block = myCurrentBlock[(address & 0x0C00) >> 10]; - } - - // Is this a RAM write access - if(!(block & 0x80) && !(address & 0x0200)) - { - // Handle the write to RAM - myRAM[(uInt32)((block & 0x3F) << 9) + (address & 0x01FF)] = value; - return true; - } - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeMC::bank(uInt16 b) -{ - // Doesn't support bankswitching in the normal sense - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeMC::bank() const -{ - // TODO - add support for debugger - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeMC::bankCount() const -{ - // TODO - add support for debugger - return 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeMC::patch(uInt16 address, uInt8 value) -{ - // TODO - add support for debugger - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeMC::getImage(int& size) const -{ - size = 128 * 1024; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeMC::save(Serializer& out) const -{ - try - { - uInt32 i; - out.putString(name()); - - // The currentBlock array - out.putInt(4); - for(i = 0; i < 4; ++i) - out.putByte((char)myCurrentBlock[i]); - - // The 32K of RAM - out.putInt(32 * 1024); - for(i = 0; i < 32 * 1024; ++i) - out.putByte((char)myRAM[i]); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeMC::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeMC::load(Serializer& in) -{ - try - { - uInt32 i, limit; - - if(in.getString() != name()) - return false; - - // The currentBlock array - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myCurrentBlock[i] = (uInt8) in.getByte(); - - // The 32K of RAM - limit = (uInt32) in.getInt(); - for(i = 0; i < limit; ++i) - myRAM[i] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeMC::load" << endl << " " << msg << endl; - return false; - } - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartMC.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartMC.hxx deleted file mode 100644 index 976f3c52a6..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartMC.hxx +++ /dev/null @@ -1,260 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartMC.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEMC_HXX -#define CARTRIDGEMC_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - This is the cartridge class for Chris Wilkson's Megacart. It does not - handle battery-backed RAM at this time and the code could use some serious - speed improvements. It is based on the following Megacart specification: - - - Megacart Specification, Rev1.1 - (c) 1997 Chris Wilkson - cwilkson@mit.edu - - Description - ----------- - - The Megacart is an external memory cartridge for the Atari 2600 and compatible - home video game consoles. It plugs into the standard cartridge port, and - contains a total of 128K bytes of ROM storage and 32K bytes of battery-backed - RAM storage. - - General Operation - ----------------- - - The Megacart uses "bank switching" to fit the 160K bytes of physical memory - into the console's available 4K address space. Physical memory is divided - into 64 RAM blocks of 512 bytes each, and 128 ROM blocks of 1K bytes each. - RAM blocks are numbered $00 through $3F, and ROM blocks are numbered $80 - through $FF. - - The console's address space is divided into 4 slots of 1K each. Any physical - memory block can be switched into any memory slot by writing its block number - to the "hot address" for the desired slot. Memory locations $3C through $3F - serve as "hot addresses" for memory slots 0 through 3, respectively. - - - Example: - - To make ROM addresses $1A400-$1A7FF (block $E9) available to the console at - memory locations $F800-$FBFF (slot 2), write $E9 to memory location $3e. - - Caution: - - Note that these memory locations are write only. Trying to read the contents - of memory locations $3C through $3F will not only return invalid data, but - will also corrupt the contents causing the software to crash. Reading these - addresses should not be attempted. - - Special Case - RAM - ------------------- - - RAM blocks differ from ROM blocks in that one of the console's address lines, - A9 in this case, must be used as a read/write select. Because of this, RAM - blocks are limited to 512 bytes each, yet still occupy an entire 1K slot. - To store a value A9 must be low. To retrieve a value A9 must high. - - Example: - - First, let's set slot 0 (console addresses $F000-$F3FF) to point to RAM - block $9 (RAM $1200-$13ff). To do this, write $9 to console address $3c. - To store the value $69 in RAM location $1234, write $69 to console address - $F034 (A9=0). To retrieve the value of RAM location $1234, read from console - address $F234 (A9=1). - - Special Case - Powerup - ----------------------- - - Because the console's memory is randomized at powerup, there is no way to - predict the data initially contained in the "hot addresses". Therefore, - hardware will force slot 3 to always point to ROM block $FF immediately - after any read or write to the RESET vector at $FFFC-$FFFD. Block $FF - must contain code to initialize the 4 memory slots to point to the desired - physical memory blocks before any other code can be executed. After program - execution jumps out of the boot code, the hardware will release slot 3 and - it will function just like any other slot. - - Example (the first column is the physical ROM address): - - $00C00 JUNK ... ; random code and data - ... - ... - ... - ... - $1F400 START ... ; program starts here - ... ; slot 3 now points to rom block $83 - ... - ... - ... - $1FFDD BOOT SEI ; disable interrupts - $1FFDE CLD ; set hexadecimal arithmetic mode - $1FFDF LDX #$FF ; - $1FFE1 TXS ; set stack pointer to $ff - $1FFE2 LDA #$00 - $1FFE4 ZERO STA 00,X ; clear RIOT and TIA -BEFORE- setting - $1FFE6 DEX ; up banks - $1FFE7 BNE ZERO - $1FFE9 BANKS LDA #$00 ; ram block 0 ($0000-$01ff) - $1FFEB STA SLOT0 ; slot 0 points to ram block 0 - $1FFED LDA #$34 ; ram block $34 ($6800-$69ff) - $1FFEF STA SLOT1 ; slot 1 points to ram block $34 - $1FFF1 LDA #$FD ; rom block $fd ($1f400-$1f7ff) - $1FFF3 STA SLOT2 ; slot 2 points to rom block $fd - $1FFF5 LDA #$83 ; rom block $83 ($00C00-$01000) - $1FFF7 STA SLOT3 ; slot 3 points to bootcode - ; (rom block $ff) - ; until jumping out of slot 3 - $1FFF9 JMP $F800 ; jump to slot 2 - $1FFFC RESET .WORD $FFDD ; powerup reset vector - $1FFFE SWI .WORD $FFDD ; software interrupt vector (BRK) - - - @author Bradford W. Mott - @version $Id: CartMC.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeMC : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image and size. If the - size of the image is less than 128K then the cartridge will pad the - beginning of the 128K ROM with zeros. - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeMC(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeMC(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeMC"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // The 128K ROM image for the cartridge - uInt8 myImage[131072]; - - // The 32K of RAM for the cartridge - uInt8 myRAM[32768]; - - // Indicates which block is currently active for the four segments - uInt8 myCurrentBlock[4]; - - // Indicates if slot 3 is locked to block $FF or not - bool mySlot3Locked; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartSB.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartSB.cpp deleted file mode 100644 index 722a3ebd49..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartSB.cpp +++ /dev/null @@ -1,212 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartSB.cxx,v 1.0 2007/10/11 -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartSB.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeSB::CartridgeSB(const uInt8* image, uInt32 size, - const Settings& settings) - : Cartridge(settings), - mySize(size) -{ - // Allocate array for the ROM image - myImage = new uInt8[mySize]; - - // Copy the ROM image into my buffer - memcpy(myImage, image, mySize); - createCodeAccessBase(mySize); - - // Remember startup bank - myStartBank = (mySize >> 12) - 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeSB::~CartridgeSB() -{ - delete[] myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeSB::reset() -{ - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeSB::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - // Get the page accessing methods for the hot spots since they overlap - // areas within the TIA we'll need to forward requests to the TIA - myHotSpotPageAccess[0] = mySystem->getPageAccess(0x0800 >> shift); - myHotSpotPageAccess[1] = mySystem->getPageAccess(0x0900 >> shift); - myHotSpotPageAccess[2] = mySystem->getPageAccess(0x0A00 >> shift); - myHotSpotPageAccess[3] = mySystem->getPageAccess(0x0B00 >> shift); - myHotSpotPageAccess[4] = mySystem->getPageAccess(0x0C00 >> shift); - myHotSpotPageAccess[5] = mySystem->getPageAccess(0x0D00 >> shift); - myHotSpotPageAccess[6] = mySystem->getPageAccess(0x0E00 >> shift); - myHotSpotPageAccess[7] = mySystem->getPageAccess(0x0F00 >> shift); - - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Set the page accessing methods for the hot spots - for(uInt32 i = 0x0800; i < 0x0FFF; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Install pages for startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeSB::peek(uInt16 address) -{ - address = address & (0x17FF + (mySize >> 12)); - - // Switch banks if necessary - if ((address & 0x1800) == 0x0800) - bank(address & myStartBank); - - if(!(address & 0x1000)) - { - // Because of the way we've set up accessing above, we can only - // get here when the addresses are from 0x800 - 0xFFF - int hotspot = ((address & 0x0F00) >> 8) - 8; - return myHotSpotPageAccess[hotspot].device->peek(address); - } - - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::poke(uInt16 address, uInt8 value) -{ - address = address & (0x17FF + (mySize >> 12)); - - // Switch banks if necessary - if((address & 0x1800) == 0x0800) - bank(address & myStartBank); - - if(!(address & 0x1000)) - { - // Because of the way we've set up accessing above, we can only - // get here when the addresses are from 0x800 - 0xFFF - int hotspot = ((address & 0x0F00) >> 8) - 8; - myHotSpotPageAccess[hotspot].device->poke(address, value); - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt32 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1000; address < 0x2000; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeSB::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeSB::bankCount() const -{ - return mySize >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeSB::getImage(int& size) const -{ - size = mySize; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeSB::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16)in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeSB::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartSB.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartSB.hxx deleted file mode 100644 index a71ebe9fec..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartSB.hxx +++ /dev/null @@ -1,150 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartSB.hxx,v 1.0 2007/10/11 -//============================================================================ - -#ifndef CARTRIDGESB_HXX -#define CARTRIDGESB_HXX - -#include "bspf.hxx" -#include "Cart.hxx" -#include "System.hxx" - -/** - Cartridge class used for SB "SUPERbanking" 128k-256k bankswitched games. - There are either 32 or 64 4K banks. - - @author Fred X. Quimby -*/ -class CartridgeSB : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeSB(const uInt8* image, uInt32 size, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeSB(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeSB"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // The 128-256K ROM image and size of the cartridge - uInt8* myImage; - uInt32 mySize; - - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // Previous Device's page access - System::PageAccess myHotSpotPageAccess[8]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartUA.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartUA.cpp deleted file mode 100644 index f914fd199c..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartUA.cpp +++ /dev/null @@ -1,220 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartUA.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "CartUA.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeUA::CartridgeUA(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 8192); - createCodeAccessBase(8192); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeUA::~CartridgeUA() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeUA::reset() -{ - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeUA::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - // Get the page accessing methods for the hot spots since they overlap - // areas within the TIA we'll need to forward requests to the TIA - myHotSpotPageAccess = mySystem->getPageAccess(0x0220 >> shift); - - // Set the page accessing methods for the hot spots - System::PageAccess access(0, 0, 0, this, System::PA_READ); - mySystem->setPageAccess(0x0220 >> shift, access); - mySystem->setPageAccess(0x0240 >> shift, access); - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeUA::peek(uInt16 address) -{ - address &= 0x1FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0220: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0240: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - if(!(address & 0x1000)) - { - return myHotSpotPageAccess.device->peek(address); - } - else - { - return 0; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::poke(uInt16 address, uInt8 value) -{ - address &= 0x1FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0220: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0240: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - if(!(address & 0x1000)) - { - myHotSpotPageAccess.device->poke(address, value); - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = bank; - uInt16 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1000; address < 0x2000; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeUA::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeUA::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeUA::getImage(int& size) const -{ - size = 8192; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeUA::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16)in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeUA::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartUA.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartUA.hxx deleted file mode 100644 index a91f45c092..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartUA.hxx +++ /dev/null @@ -1,151 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartUA.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEUA_HXX -#define CARTRIDGEUA_HXX - -class System; - -#include "bspf.hxx" -#include "System.hxx" -#include "Cart.hxx" - -/** - Cartridge class used for UA Limited's 8K bankswitched games. There - are two 4K banks. - - @author Bradford W. Mott - @version $Id: CartUA.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeUA : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeUA(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeUA(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeUA"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 8K ROM image of the cartridge - uInt8 myImage[8192]; - - // Previous Device's page access - System::PageAccess myHotSpotPageAccess; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartX07.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartX07.cpp deleted file mode 100644 index cfb01a48d5..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartX07.cpp +++ /dev/null @@ -1,204 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartX07.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include - -#include "System.hxx" -#include "M6532.hxx" -#include "TIA.hxx" -#include "CartX07.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeX07::CartridgeX07(const uInt8* image, const Settings& settings) - : Cartridge(settings) -{ - // Copy the ROM image into my buffer - memcpy(myImage, image, 65536); - createCodeAccessBase(65536); - - // Remember startup bank - myStartBank = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeX07::~CartridgeX07() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeX07::reset() -{ - // Upon reset we switch to the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeX07::install(System& system) -{ - mySystem = &system; - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1000 & mask) == 0); - - // Set the page accessing methods for the hot spots - // The hotspots use almost all addresses below 0x1000, so we simply grab them - // all and forward the TIA/RIOT calls from the peek and poke methods. - System::PageAccess access(0, 0, 0, this, System::PA_READWRITE); - for(uInt32 i = 0x00; i < 0x1000; i += (1 << shift)) - mySystem->setPageAccess(i >> shift, access); - - // Install pages for the startup bank - bank(myStartBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeX07::peek(uInt16 address) -{ - uInt8 value = 0; - - // Check for RAM or TIA mirroring - uInt16 lowAddress = address & 0x3ff; - if(lowAddress & 0x80) - value = mySystem->m6532().peek(address); - else if(!(lowAddress & 0x200)) - value = mySystem->tia().peek(address); - - // Switch banks if necessary - if((address & 0x180f) == 0x080d) - bank((address & 0xf0) >> 4); - else if((address & 0x1880) == 0) - { - if((myCurrentBank & 0xe) == 0xe) - bank(((address & 0x40) >> 6) | (myCurrentBank & 0xe)); - } - - return value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::poke(uInt16 address, uInt8 value) -{ - // Check for RAM or TIA mirroring - uInt16 lowAddress = address & 0x3ff; - if(lowAddress & 0x80) - mySystem->m6532().poke(address, value); - else if(!(lowAddress & 0x200)) - mySystem->tia().poke(address, value); - - // Switch banks if necessary - if((address & 0x180f) == 0x080d) - bank((address & 0xf0) >> 4); - else if((address & 0x1880) == 0) - { - if((myCurrentBank & 0xe) == 0xe) - bank(((address & 0x40) >> 6) | (myCurrentBank & 0xe)); - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = (bank & 0x0f); - uInt32 offset = myCurrentBank << 12; - uInt16 shift = mySystem->pageShift(); - - // Setup the page access methods for the current bank - System::PageAccess access(0, 0, 0, this, System::PA_READ); - - // Map ROM image into the system - for(uInt32 address = 0x1000; address < 0x2000; address += (1 << shift)) - { - access.directPeekBase = &myImage[offset + (address & 0x0FFF)]; - access.codeAccessBase = &myCodeAccessBase[offset + (address & 0x0FFF)]; - mySystem->setPageAccess(address >> shift, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeX07::bank() const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeX07::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeX07::getImage(int& size) const -{ - size = 65536; - return myImage; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCurrentBank); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeX07::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCurrentBank = (uInt16)in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: CartridgeX07::load" << endl << " " << msg << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartX07.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartX07.hxx deleted file mode 100644 index 12c102648d..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/CartX07.hxx +++ /dev/null @@ -1,157 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: CartX07.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef CARTRIDGEX07_HXX -#define CARTRIDGEX07_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -/** - Bankswitching method as defined/created by John Payson (aka Supercat) - and Fred Quimby (aka batari). - - This bankswitching method has 16 4K banks that can be accessed at - addresses $1000 to $1FFF. The bankswitching hotspots are all below - $1000. X07 uses two types of hotspots: - - 0 1xxx nnnn 1101 -- Switch to bank nnnn - 0 0xxx 0nxx xxxx -- If in bank 111x, switch to bank 111n. - In any other bank, do not switch. - - Note that the latter will hit on almost any TIA access. - - @author Eckhard Stolberg - @version $Id: CartX07.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class CartridgeX07 : public Cartridge -{ - public: - /** - Create a new cartridge using the specified image - - @param image Pointer to the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeX07(const uInt8* image, const Settings& settings); - - /** - Destructor - */ - virtual ~CartridgeX07(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank); - - /** - Get the current bank. - */ - uInt16 bank() const; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value); - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(int& size) const; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "CartridgeX07"; } - - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - // Indicates which bank is currently active - uInt16 myCurrentBank; - - // The 64K ROM image of the cartridge - uInt8 myImage[65536]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Thumbulator.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Thumbulator.cpp deleted file mode 100644 index 9ce1e2ddd0..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Thumbulator.cpp +++ /dev/null @@ -1,2089 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Thumbulator.cxx 2234 2011-05-26 16:14:46Z stephena $ -//============================================================================ - -//============================================================================ -// This class provides Thumb emulation code ("Thumbulator") -// by David Welch (dwelch@dwelch.com) -// Modified by Fred Quimby -// Code is public domain and used with the author's consent -//============================================================================ - -#ifdef THUMB_SUPPORT - -#include "bspf.hxx" -#include "Thumbulator.hxx" - - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Thumbulator::Thumbulator(uInt16* rom_ptr, uInt16* ram_ptr) - : rom(rom_ptr), - ram(ram_ptr), - copydata(0), - DBUG(0), // dump detailed execution trace - DISS(0) // dump Thumb instruction trace -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Thumbulator::~Thumbulator() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Thumbulator::run( void ) throw(const string&) -{ - reset(); - for(;;) - { - if (execute()) break; - if (instructions > 500000) // way more than would otherwise be possible - { - DISS=1; // dump instructions - DBUG=1; - } - if (instructions > 501000) // Stop dumping, quit executing - { - DISS=0; - DBUG=0; - throw "instructions > 501000"; - } - } - //dump_counters(); - return statusMsg.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline int Thumbulator::fatalError(const char* opcode, uInt32 v1, const char* msg) - throw(const string&) -{ - statusMsg << "Thumb ARM emulation fatal error: " << endl - << opcode << "(" << HEX8 << v1 << "), " << msg << endl; - dump_regs(); - throw statusMsg.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline int Thumbulator::fatalError(const char* opcode, uInt32 v1, uInt32 v2, - const char* msg) - throw(const string&) -{ - statusMsg << "Thumb ARM emulation fatal error: " << endl - << opcode << "(" << HEX8 << v1 << "," << v2 << "), " << msg << endl; - dump_regs(); - throw statusMsg.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::dump_counters ( void ) -{ - cout << endl << endl - << "instructions " << instructions << endl - << "fetches " << fetches << endl - << "reads " << reads << endl - << "writes " << writes << endl - << "memcycles " << (fetches+reads+writes) << endl; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::dump_regs( void ) -{ - for (int cnt = 1; cnt < 14; cnt++) - { - statusMsg << "R" << cnt << " = " << HEX8 << reg_sys[cnt-1] << " "; - if(cnt % 4 == 0) statusMsg << endl; - } - statusMsg << endl - << "SP = " << HEX8 << reg_svc[13] << " " - << "LR = " << HEX8 << reg_svc[14] << " " - << "PC = " << HEX8 << reg_sys[15] << " " - << endl; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Thumbulator::fetch16 ( uInt32 addr ) -{ - uInt32 data; - - fetches++; - - if(DBUG) - statusMsg << "fetch16(" << HEX8 << addr << ")="; - - switch(addr&0xF0000000) - { - case 0x00000000: //ROM - addr &= ROMADDMASK; - if(addr<0x50) - fatalError("fetch16", addr, "abort"); - - addr>>=1; - #ifdef __BIG_ENDIAN__ - data=((rom[addr]>>8)|(rom[addr]<<8))&0xffff; - #else - data=rom[addr]; - #endif - if(DBUG) - statusMsg << HEX4 << data << endl; - return(data); - - case 0x40000000: //RAM - addr &= RAMADDMASK; - addr>>=1; - #ifdef __BIG_ENDIAN__ - data=((ram[addr]>>8)|(ram[addr]<<8))&0xffff; - #else - data=ram[addr]; - #endif - if(DBUG) - statusMsg << HEX4 << data << endl; - return(data); - } - return fatalError("fetch16", addr, "abort"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Thumbulator::fetch32 ( uInt32 addr ) -{ - uInt32 data; - - if(DBUG) - statusMsg << "fetch32(" << HEX8 << addr << ")="; - - switch(addr&0xF0000000) - { - case 0x00000000: //ROM - if(addr<0x50) - { - data=read32(addr); - if(DBUG) - statusMsg << HEX8 << data << endl; - if(addr==0x00000000) return(data); - if(addr==0x00000004) return(data); - fatalError("fetch32", addr, "abort"); - } - - case 0x40000000: //RAM - data =fetch16(addr+2); - data<<=16; - data|=fetch16(addr+0); - if(DBUG) - statusMsg << HEX8 << data << endl;; - return(data); - } - return fatalError("fetch32", addr, "abort"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::write16 ( uInt32 addr, uInt32 data ) -{ - if((addr>0x40001fff)&&(addr<0x50000000)) - fatalError("write16", addr, "abort - out of range"); - else if((addr>0x40000028)&&(addr<0x40000c00)) - fatalError("write16", addr, "to bankswitch code area"); - if(addr&1) - fatalError("write16", addr, "abort - misaligned"); - - writes++; - - if(DBUG) - statusMsg << "write16(" << HEX8 << addr << "," << HEX8 << data << ")" << endl; - - switch(addr&0xF0000000) - { - case 0x40000000: //RAM - addr&=RAMADDMASK; - addr>>=1; - #ifdef __BIG_ENDIAN__ - ram[addr]=(((data&0xFFFF)>>8)|((data&0xffff)<<8))&0xffff; - #else - ram[addr]=data&0xFFFF; - #endif - return; - } - fatalError("write16", addr, data, "abort"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::write32 ( uInt32 addr, uInt32 data ) -{ - if(addr&3) - fatalError("write32", addr, "abort - misaligned"); - - if(DBUG) - statusMsg << "write32(" << HEX8 << addr << "," << HEX8 << data << ")" << endl; - - switch(addr&0xF0000000) - { - case 0xF0000000: //halt - dump_counters(); - throw "HALT";// exit(0); - - case 0xE0000000: //periph - switch(addr) - { - case 0xE0000000: - if(DISS) statusMsg << "uart: ["; - statusMsg << char(data&0xFF); - if(DISS) statusMsg << "]" << endl; - break; - } - return; - - case 0xD0000000: //debug - statusMsg << "[" << HEX8 << read_register(14) << "][" - << addr << "] " << data << endl; - return; - - case 0x40000000: //RAM - write16(addr+0,(data>> 0)&0xFFFF); - write16(addr+2,(data>>16)&0xFFFF); - return; - } - fatalError("write32", addr, data, "abort"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Thumbulator::read16 ( uInt32 addr ) -{ - uInt32 data; - - if((addr>0x40001fff)&&(addr<0x50000000)) - fatalError("read16", addr, "abort - out of range"); - else if((addr>0x7fff)&&(addr<0x10000000)) - fatalError("read16", addr, "abort - out of range"); - if(addr&1) - fatalError("read16", addr, "abort - misaligned"); - - reads++; - - if(DBUG) - statusMsg << "read16(" << HEX8 << addr << ")="; - - switch(addr&0xF0000000) - { - case 0x00000000: //ROM - addr&=ROMADDMASK; - addr>>=1; - #ifdef __BIG_ENDIAN__ - data=((rom[addr]>>8)|(rom[addr]<<8))&0xffff; - #else - data=rom[addr]; - #endif - if(DBUG) - statusMsg << HEX4 << data << endl; - return(data); - - case 0x40000000: //RAM - addr&=RAMADDMASK; - addr>>=1; - #ifdef __BIG_ENDIAN__ - data=((ram[addr]>>8)|(ram[addr]<<8))&0xffff; - #else - data=ram[addr]; - #endif - if(DBUG) - statusMsg << HEX4 << data << endl; - return(data); - } - return fatalError("read16", addr, "abort"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Thumbulator::read32 ( uInt32 addr ) -{ - if(addr&3) - fatalError("read32", addr, "abort - misaligned"); - - if(DBUG) - statusMsg << "read32(" << HEX8 << addr << ")="; - - uInt32 data; - switch(addr&0xF0000000) - { - case 0x00000000: //ROM - case 0x40000000: //RAM - data =read16(addr+2); - data<<=16; - data|=read16(addr+0); - if(DBUG) - statusMsg << HEX8 << data << endl; - return(data); - } - return fatalError("read32", addr, "abort"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Thumbulator::read_register ( uInt32 reg ) -{ - uInt32 data; - - reg&=0xF; - if(DBUG) - statusMsg << "read_register(" << dec << reg << ")="; - - switch(cpsr&0x1F) - { - case MODE_SVC: - switch(reg) // TODO (SA) - does this do anything other than default? - { - default: data=reg_sys[reg]; break; - case 13: case 14: data=reg_svc[reg]; break; - } - if(DBUG) - statusMsg << HEX8 << data << endl; - return(data); - } - return fatalError("read_register", cpsr, "invalid cpsr mode"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Thumbulator::write_register ( uInt32 reg, uInt32 data ) -{ - reg&=0xF; - - if(DBUG) - statusMsg << "write_register(" << dec << reg << "," - << HEX8 << data << ")" << endl; - - switch(cpsr&0x1F) - { - case MODE_SVC: - switch(reg) // TODO (SA) - does this do anything other than default? - { - default: reg_sys[reg]=data; break; - case 13: case 14: reg_svc[reg]=data; break; - } - return(data); - } - return fatalError("write_register", cpsr, "invalid cpsr mode"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::do_zflag ( uInt32 x ) -{ - if(x==0) cpsr|=CPSR_Z; - else cpsr&=~CPSR_Z; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::do_nflag ( uInt32 x ) -{ - if(x&0x80000000) cpsr|=CPSR_N; - else cpsr&=~CPSR_N; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::do_cflag ( uInt32 a, uInt32 b, uInt32 c ) -{ - uInt32 rc; - - cpsr&=~CPSR_C; - rc=(a&0x7FFFFFFF)+(b&0x7FFFFFFF)+c; //carry in - rc = (rc>>31)+(a>>31)+(b>>31); //carry out - if(rc&2) - cpsr|=CPSR_C; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::do_sub_vflag ( uInt32 a, uInt32 b, uInt32 c ) -{ - cpsr&=~CPSR_V; - - //if the sign bits are different - if((a&0x80000000)^(b&0x80000000)) - { - //and result matches b - if((b&0x80000000)==(c&0x80000000)) - cpsr|=CPSR_V; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::do_add_vflag ( uInt32 a, uInt32 b, uInt32 c ) -{ - cpsr&=~CPSR_V; - - //if sign bits are the same - if((a&0x80000000)==(b&0x80000000)) - { - //and the result is different - if((b&0x80000000)!=(c&0x80000000)) - cpsr|=CPSR_V; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::do_cflag_bit ( uInt32 x ) -{ - if(x) cpsr|=CPSR_C; - else cpsr&=~CPSR_C; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Thumbulator::do_vflag_bit ( uInt32 x ) -{ - if(x) cpsr|=CPSR_V; - else cpsr&=~CPSR_V; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int Thumbulator::execute ( void ) -{ - uInt32 pc, sp, inst, - ra,rb,rc, - rm,rd,rn,rs, - op; - - pc=read_register(15); - inst=fetch16(pc-2); - pc+=2; - write_register(15,pc); - if(DISS) - statusMsg << HEX8 << (pc-5) << ": " << HEX4 << inst << " "; - - instructions++; - - //ADC - if((inst&0xFFC0)==0x4140) - { - rd=(inst>>0)&0x07; - rm=(inst>>3)&0x07; - if(DISS) - statusMsg << "adc r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra+rb; - if(cpsr&CPSR_C) - rc++; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - if(cpsr&CPSR_C) do_cflag(ra,rb,1); - else do_cflag(ra,rb,0); - do_add_vflag(ra,rb,rc); - return(0); - } - - //ADD(1) small immediate two registers - if((inst&0xFE00)==0x1C00) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rb=(inst>>6)&0x7; - if(rb) - { - if(DISS) - statusMsg << "adds r" << dec << rd << ",r" << dec << rn << "," - << "#0x" << HEX2 << rb << endl; - ra=read_register(rn); - rc=ra+rb; - //fprintf(stderr,"0x%08X = 0x%08X + 0x%08X\n",rc,ra,rb); - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,rb,0); - do_add_vflag(ra,rb,rc); - return(0); - } - else - { - //this is a mov - } - } - - //ADD(2) big immediate one register - if((inst&0xF800)==0x3000) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x7; - if(DISS) - statusMsg << "adds r" << dec << rd << ",#0x" << HEX2 << rb << endl; - ra=read_register(rd); - rc=ra+rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,rb,0); - do_add_vflag(ra,-rb,rc); - return(0); - } - - //ADD(3) three registers - if((inst&0xFE00)==0x1800) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "adds r" << dec << rd << ",r" << dec << rn - << ",r" << rm << endl; - ra=read_register(rn); - rb=read_register(rm); - rc=ra+rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,rb,0); - do_add_vflag(ra,rb,rc); - return(0); - } - - //ADD(4) two registers one or both high no flags - if((inst&0xFF00)==0x4400) - { - if((inst>>6)&3) - { - //UNPREDICTABLE - } - rd=(inst>>0)&0x7; - rd|=(inst>>4)&0x8; - rm=(inst>>3)&0xF; - if(DISS) - statusMsg << "add r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra+rb; - //fprintf(stderr,"0x%08X = 0x%08X + 0x%08X\n",rc,ra,rb); - write_register(rd,rc); - return(0); - } - - //ADD(5) rd = pc plus immediate - if((inst&0xF800)==0xA000) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x7; - rb<<=2; - if(DISS) - statusMsg << "add r" << dec << rd << ",PC,#0x" << HEX2 << rb << endl; - ra=read_register(15); - rc=(ra&(~3))+rb; - write_register(rd,rc); - return(0); - } - - //ADD(6) rd = sp plus immediate - if((inst&0xF800)==0xA800) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x7; - rb<<=2; - if(DISS) - statusMsg << "add r" << dec << rd << ",SP,#0x" << HEX2 << rb << endl; - ra=read_register(13); - rc=ra+rb; - write_register(rd,rc); - return(0); - } - - //ADD(7) sp plus immediate - if((inst&0xFF80)==0xB000) - { - rb=(inst>>0)&0x7F; - rb<<=2; - if(DISS) - statusMsg << "add SP,#0x" << HEX2 << rb << endl; - ra=read_register(13); - rc=ra+rb; - write_register(13,rc); - return(0); - } - - //AND - if((inst&0xFFC0)==0x4000) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "ands r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra&rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //ASR(1) two register immediate - if((inst&0xF800)==0x1000) - { - rd=(inst>>0)&0x07; - rm=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - if(DISS) - statusMsg << "asrs r" << dec << rd << ",r" << dec << rm - << ",#0x" << HEX2 << rb << endl; - rc=read_register(rm); - if(rb==0) - { - if(rc&0x80000000) - { - do_cflag_bit(1); - rc=~0; - } - else - { - do_cflag_bit(0); - rc=0; - } - } - else - { - do_cflag_bit(rc&(1<<(rb-1))); - ra=rc&0x80000000; - rc>>=rb; - if(ra) //asr, sign is shifted in - { - rc|=(~0)<<(32-rb); - } - } - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //ASR(2) two register - if((inst&0xFFC0)==0x4100) - { - rd=(inst>>0)&0x07; - rs=(inst>>3)&0x07; - if(DISS) - statusMsg << "asrs r" << dec << rd << ",r" << dec << rs << endl; - rc=read_register(rd); - rb=read_register(rs); - rb&=0xFF; - if(rb==0) - { - } - else if(rb<32) - { - do_cflag_bit(rc&(1<<(rb-1))); - ra=rc&0x80000000; - rc>>=rb; - if(ra) //asr, sign is shifted in - { - rc|=(~0)<<(32-rb); - } - } - else - { - if(rc&0x80000000) - { - do_cflag_bit(1); - rc=(~0); - } - else - { - do_cflag_bit(0); - rc=0; - } - } - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //B(1) conditional branch - if((inst&0xF000)==0xD000) - { - rb=(inst>>0)&0xFF; - if(rb&0x80) - rb|=(~0)<<8; - op=(inst>>8)&0xF; - rb<<=1; - rb+=pc; - rb+=2; - switch(op) - { - case 0x0: //b eq z set - if(DISS) - statusMsg << "beq 0x" << HEX8 << (rb-3) << endl; - if(cpsr&CPSR_Z) - { - write_register(15,rb); - } - return(0); - - case 0x1: //b ne z clear - if(DISS) - statusMsg << "bne 0x" << HEX8 << (rb-3) << endl; - if(!(cpsr&CPSR_Z)) - { - write_register(15,rb); - } - return(0); - - case 0x2: //b cs c set - if(DISS) - statusMsg << "bcs 0x" << HEX8 << (rb-3) << endl; - if(cpsr&CPSR_C) - { - write_register(15,rb); - } - return(0); - - case 0x3: //b cc c clear - if(DISS) - statusMsg << "bcc 0x" << HEX8 << (rb-3) << endl; - if(!(cpsr&CPSR_C)) - { - write_register(15,rb); - } - return(0); - - case 0x4: //b mi n set - if(DISS) - statusMsg << "bmi 0x" << HEX8 << (rb-3) << endl; - if(cpsr&CPSR_N) - { - write_register(15,rb); - } - return(0); - - case 0x5: //b pl n clear - if(DISS) - statusMsg << "bpl 0x" << HEX8 << (rb-3) << endl; - if(!(cpsr&CPSR_N)) - { - write_register(15,rb); - } - return(0); - - case 0x6: //b vs v set - if(DISS) - statusMsg << "bvs 0x" << HEX8 << (rb-3) << endl; - if(cpsr&CPSR_V) - { - write_register(15,rb); - } - return(0); - - case 0x7: //b vc v clear - if(DISS) - statusMsg << "bvc 0x" << HEX8 << (rb-3) << endl; - if(!(cpsr&CPSR_V)) - { - write_register(15,rb); - } - return(0); - - case 0x8: //b hi c set z clear - if(DISS) - statusMsg << "bhi 0x" << HEX8 << (rb-3) << endl; - if((cpsr&CPSR_C)&&(!(cpsr&CPSR_Z))) - { - write_register(15,rb); - } - return(0); - - case 0x9: //b ls c clear or z set - if(DISS) - statusMsg << "bls 0x" << HEX8 << (rb-3) << endl; - if((cpsr&CPSR_Z)||(!(cpsr&CPSR_C))) - { - write_register(15,rb); - } - return(0); - - case 0xA: //b ge N == V - if(DISS) - statusMsg << "bge 0x" << HEX8 << (rb-3) << endl; - ra=0; - if( (cpsr&CPSR_N) && (cpsr&CPSR_V) ) ra++; - if((!(cpsr&CPSR_N))&&(!(cpsr&CPSR_V))) ra++; - if(ra) - { - write_register(15,rb); - } - return(0); - - case 0xB: //b lt N != V - if(DISS) - statusMsg << "blt 0x" << HEX8 << (rb-3) << endl; - ra=0; - if((!(cpsr&CPSR_N))&&(cpsr&CPSR_V)) ra++; - if((!(cpsr&CPSR_V))&&(cpsr&CPSR_N)) ra++; - if(ra) - { - write_register(15,rb); - } - return(0); - - case 0xC: //b gt Z==0 and N == V - if(DISS) - statusMsg << "bgt 0x" << HEX8 << (rb-3) << endl; - ra=0; - if( (cpsr&CPSR_N) && (cpsr&CPSR_V) ) ra++; - if((!(cpsr&CPSR_N))&&(!(cpsr&CPSR_V))) ra++; - if(cpsr&CPSR_Z) ra=0; - if(ra) - { - write_register(15,rb); - } - return(0); - - case 0xD: //b le Z==1 or N != V - if(DISS) - statusMsg << "ble 0x" << HEX8 << (rb-3) << endl; - ra=0; - if((!(cpsr&CPSR_N))&&(cpsr&CPSR_V)) ra++; - if((!(cpsr&CPSR_V))&&(cpsr&CPSR_N)) ra++; - if(cpsr&CPSR_Z) ra++; - if(ra) - { - write_register(15,rb); - } - return(0); - - case 0xE: - //undefined instruction - break; - - case 0xF: - //swi - break; - } - } - - //B(2) unconditional branch - if((inst&0xF800)==0xE000) - { - rb=(inst>>0)&0x7FF; - if(rb&(1<<10)) - rb|=(~0)<<11; - rb<<=1; - rb+=pc; - rb+=2; - if(DISS) - statusMsg << "B 0x" << HEX8 << (rb-3) << endl; - write_register(15,rb); - return(0); - } - - //BIC - if((inst&0xFFC0)==0x4380) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "bics r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra&(~rb); - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //BKPT - if((inst&0xFF00)==0xBE00) - { - rb=(inst>>0)&0xFF; - statusMsg << "bkpt 0x" << HEX2 << rb << endl; - return(1); - } - - //BL/BLX(1) - if((inst&0xE000)==0xE000) //BL,BLX - { - if((inst&0x1800)==0x1000) //H=b10 - { - if(DISS) - statusMsg << endl; - halfadd=inst; - return(0); - } - else if((inst&0x1800)==0x1800) //H=b11 - { - //branch to thumb - rb=halfadd&((1<<11)-1); - if(rb&1<<10) - rb|=(~((1<<11)-1)); //sign extend - rb<<=11; - rb|=inst&((1<<11)-1); - rb<<=1; - rb+=pc; - if(DISS) - statusMsg << "bl 0x" << HEX8 << (rb-3) << endl; - write_register(14,pc-2); - write_register(15,rb); - return(0); - } - else if((inst&0x1800)==0x0800) //H=b01 - { - //fprintf(stderr,"cannot branch to arm 0x%08X 0x%04X\n",pc,inst); - // fxq: this should exit the code without having to detect it - return(1); - } - } - - //BLX(2) - if((inst&0xFF87)==0x4780) - { - rm=(inst>>3)&0xF; - if(DISS) - statusMsg << "blx r" << dec << rm << endl; - rc=read_register(rm); - //fprintf(stderr,"blx r%u 0x%X 0x%X\n",rm,rc,pc); - rc+=2; - if(rc&1) - { - write_register(14,pc-2); - write_register(15,rc); - return(0); - } - else - { - //fprintf(stderr,"cannot branch to arm 0x%08X 0x%04X\n",pc,inst); - // fxq: this could serve as exit code - return(1); - } - } - - //BX - if((inst&0xFF87)==0x4700) - { - rm=(inst>>3)&0xF; - if(DISS) - statusMsg << "bx r" << dec << rm << endl; - rc=read_register(rm); - rc+=2; - //fprintf(stderr,"bx r%u 0x%X 0x%X\n",rm,rc,pc); - if(rc&1) - { - write_register(15,rc); - return(0); - } - else - { - //fprintf(stderr,"cannot branch to arm 0x%08X 0x%04X\n",pc,inst); - // fxq: or maybe this one?? - return(1); - } - } - - //CMN - if((inst&0xFFC0)==0x42C0) - { - rn=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "cmns r" << dec << rn << ",r" << dec << rm << endl; - ra=read_register(rn); - rb=read_register(rm); - rc=ra+rb; - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,rb,0); - do_add_vflag(ra,rb,rc); - return(0); - } - - //CMP(1) compare immediate - if((inst&0xF800)==0x2800) - { - rb=(inst>>0)&0xFF; - rn=(inst>>8)&0x07; - if(DISS) - statusMsg << "cmp r" << dec << rn << ",#0x" << HEX2 << rb << endl; - ra=read_register(rn); - rc=ra-rb; - //fprintf(stderr,"0x%08X 0x%08X\n",ra,rb); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,~rb,1); - do_sub_vflag(ra,rb,rc); - return(0); - } - - //CMP(2) compare register - if((inst&0xFFC0)==0x4280) - { - rn=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "cmps r" << dec << rn << ",r" << dec << rm << endl; - ra=read_register(rn); - rb=read_register(rm); - rc=ra-rb; - //fprintf(stderr,"0x%08X 0x%08X\n",ra,rb); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,~rb,1); - do_sub_vflag(ra,rb,rc); - return(0); - } - - //CMP(3) compare high register - if((inst&0xFF00)==0x4500) - { - if(((inst>>6)&3)==0x0) - { - //UNPREDICTABLE - } - rn=(inst>>0)&0x7; - rn|=(inst>>4)&0x8; - if(rn==0xF) - { - //UNPREDICTABLE - } - rm=(inst>>3)&0xF; - if(DISS) - statusMsg << "cmps r" << dec << rn << ",r" << dec << rm << endl; - ra=read_register(rn); - rb=read_register(rm); - rc=ra-rb; - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,~rb,1); - do_sub_vflag(ra,rb,rc); - -#if 0 - if(cpsr&CPSR_N) statusMsg << "N"; else statusMsg << "n"; - if(cpsr&CPSR_Z) statusMsg << "Z"; else statusMsg << "z"; - if(cpsr&CPSR_C) statusMsg << "C"; else statusMsg << "c"; - if(cpsr&CPSR_V) statusMsg << "V"; else statusMsg << "v"; - statusMsg << " -- 0x" << HEX8 << ra << " 0x" << HEX8 << rb << endl; -#endif - return(0); - } - - //CPS - if((inst&0xFFE8)==0xB660) - { - if(DISS) - statusMsg << "cps TODO" << endl; - return(1); - } - - //CPY copy high register - if((inst&0xFFC0)==0x4600) - { - //same as mov except you can use both low registers - //going to let mov handle high registers - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "cpy r" << dec << rd << ",r" << dec << rm << endl; - rc=read_register(rm); - write_register(rd,rc); - return(0); - } - - //EOR - if((inst&0xFFC0)==0x4040) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "eors r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra^rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //LDMIA - if((inst&0xF800)==0xC800) - { - rn=(inst>>8)&0x7; - if(DISS) - { - statusMsg << "ldmia r" << dec << rn << "!,{"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - if(rc) statusMsg << ","; - statusMsg << "r" << dec << ra; - rc++; - } - } - statusMsg << "}" << endl; - } - sp=read_register(rn); - for(ra=0,rb=0x01;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - write_register(ra,read32(sp)); - sp+=4; - } - } - write_register(rn,sp); - return(0); - } - - //LDR(1) two register immediate - if((inst&0xF800)==0x6800) - { - rd=(inst>>0)&0x07; - rn=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - rb<<=2; - if(DISS) - statusMsg << "ldr r" << dec << rd << ",[r" << dec << rn - << ",#0x" << HEX2 << rb << "]" << endl; - rb=read_register(rn)+rb; - rc=read32(rb); - write_register(rd,rc); - return(0); - } - - //LDR(2) three register - if((inst&0xFE00)==0x5800) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "ldr r" << dec << rd << ",[r" << dec << rn - << ",r" << dec << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read32(rb); - write_register(rd,rc); - return(0); - } - - //LDR(3) - if((inst&0xF800)==0x4800) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x07; - rb<<=2; - if(DISS) - statusMsg << "ldr r" << dec << rd << ",[PC+#0x" << HEX2 << rb << "] "; - ra=read_register(15); - ra&=~3; - rb+=ra; - if(DISS) - statusMsg << ";@ 0x" << HEX2 << rb << endl; - rc=read32(rb); - write_register(rd,rc); - return(0); - } - - //LDR(4) - if((inst&0xF800)==0x9800) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x07; - rb<<=2; - if(DISS) - statusMsg << "ldr r" << dec << rd << ",[SP+#0x" << HEX2 << rb - << "]" << endl; - ra=read_register(13); - //ra&=~3; - rb+=ra; - rc=read32(rb); - write_register(rd,rc); - return(0); - } - - //LDRB(1) - if((inst&0xF800)==0x7800) - { - rd=(inst>>0)&0x07; - rn=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - if(DISS) - statusMsg << "ldrb r" << dec << rd << ",[r" << dec << rn - << ",#0x" << HEX2 << rb << "]" << endl; - rb=read_register(rn)+rb; - rc=read16(rb&(~1)); - if(rb&1) - { - rc>>=8; - } - else - { - } - write_register(rd,rc&0xFF); - return(0); - } - - //LDRB(2) - if((inst&0xFE00)==0x5C00) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "ldrb r" << dec << rd << ",[r" << dec << rn - << ",r" << dec << rm << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read16(rb&(~1)); - if(rb&1) - { - rc>>=8; - } - else - { - } - write_register(rd,rc&0xFF); - return(0); - } - - //LDRH(1) - if((inst&0xF800)==0x8800) - { - rd=(inst>>0)&0x07; - rn=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - rb<<=1; - if(DISS) - statusMsg << "ldrh r" << dec << rd << ",[r" << dec << rn - << ",#0x" << HEX2 << rb << "]" << endl; - rb=read_register(rn)+rb; - rc=read16(rb); - write_register(rd,rc&0xFFFF); - return(0); - } - - //LDRH(2) - if((inst&0xFE00)==0x5A00) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "ldrh r" << dec << rd << ",[r" << dec << rn - << ",r" << dec << rm << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read16(rb); - write_register(rd,rc&0xFFFF); - return(0); - } - - //LDRSB - if((inst&0xFE00)==0x5600) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "ldrsb r" << dec << rd << ",[r" << dec << rn - << ",r" << dec << rm << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read16(rb&(~1)); - if(rb&1) - { - rc>>=8; - } - else - { - } - rc&=0xFF; - if(rc&0x80) rc|=((~0)<<8); - write_register(rd,rc); - return(0); - } - - //LDRSH - if((inst&0xFE00)==0x5E00) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "ldrsh r" << dec << rd << ",[r" << dec << rn - << ",r" << dec << rm << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read16(rb); - rc&=0xFFFF; - if(rc&0x8000) rc|=((~0)<<16); - write_register(rd,rc); - return(0); - } - - //LSL(1) - if((inst&0xF800)==0x0000) - { - rd=(inst>>0)&0x07; - rm=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - if(DISS) - statusMsg << "lsls r" << dec << rd << ",r" << dec << rm - << ",#0x" << HEX2 << rb << endl; - rc=read_register(rm); - if(rb==0) - { - //if immed_5 == 0 - //C unnaffected - //result not shifted - } - else - { - //else immed_5 > 0 - do_cflag_bit(rc&(1<<(32-rb))); - rc<<=rb; - } - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //LSL(2) two register - if((inst&0xFFC0)==0x4080) - { - rd=(inst>>0)&0x07; - rs=(inst>>3)&0x07; - if(DISS) - statusMsg << "lsls r" << dec << rd << ",r" << dec << rs << endl; - rc=read_register(rd); - rb=read_register(rs); - rb&=0xFF; - if(rb==0) - { - } - else if(rb<32) - { - do_cflag_bit(rc&(1<<(32-rb))); - rc<<=rb; - } - else if(rb==32) - { - do_cflag_bit(rc&1); - rc=0; - } - else - { - do_cflag_bit(0); - rc=0; - } - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //LSR(1) two register immediate - if((inst&0xF800)==0x0800) - { - rd=(inst>>0)&0x07; - rm=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - if(DISS) - statusMsg << "lsrs r" << dec << rd << ",r" << dec << rm - << ",#0x" << HEX2 << rb << endl; - rc=read_register(rm); - if(rb==0) - { - do_cflag_bit(rc&0x80000000); - rc=0; - } - else - { - do_cflag_bit(rc&(1<<(rb-1))); - rc>>=rb; - } - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //LSR(2) two register - if((inst&0xFFC0)==0x40C0) - { - rd=(inst>>0)&0x07; - rs=(inst>>3)&0x07; - if(DISS) - statusMsg << "lsrs r" << dec << rd << ",r" << dec << rs << endl; - rc=read_register(rd); - rb=read_register(rs); - rb&=0xFF; - if(rb==0) - { - } - else if(rb<32) - { - do_cflag_bit(rc&(1<<(32-rb))); - rc>>=rb; - } - else if(rb==32) - { - do_cflag_bit(rc&0x80000000); - rc=0; - } - else - { - do_cflag_bit(0); - rc=0; - } - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //MOV(1) immediate - if((inst&0xF800)==0x2000) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x07; - if(DISS) - statusMsg << "movs r" << dec << rd << ",#0x" << HEX2 << rb << endl; - write_register(rd,rb); - do_nflag(rb); - do_zflag(rb); - return(0); - } - - //MOV(2) two low registers - if((inst&0xFFC0)==0x1C00) - { - rd=(inst>>0)&7; - rn=(inst>>3)&7; - if(DISS) - statusMsg << "movs r" << dec << rd << ",r" << dec << rn << endl; - rc=read_register(rn); - //fprintf(stderr,"0x%08X\n",rc); - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag_bit(0); - do_vflag_bit(0); - return(0); - } - - //MOV(3) - if((inst&0xFF00)==0x4600) - { - rd=(inst>>0)&0x7; - rd|=(inst>>4)&0x8; - rm=(inst>>3)&0xF; - if(DISS) - statusMsg << "mov r" << dec << rd << ",r" << dec << rm << endl; - rc=read_register(rm); - if (rd==15) rc+=2; // fxq fix for MOV R15 - write_register(rd,rc); - return(0); - } - - //MUL - if((inst&0xFFC0)==0x4340) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "muls r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra*rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //MVN - if((inst&0xFFC0)==0x43C0) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "mvns r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rm); - rc=(~ra); - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //NEG - if((inst&0xFFC0)==0x4240) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "negs r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rm); - rc=0-ra; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(0,~ra,1); - do_sub_vflag(0,ra,rc); - return(0); - } - - //ORR - if((inst&0xFFC0)==0x4300) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "orrs r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra|rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //POP - if((inst&0xFE00)==0xBC00) - { - if(DISS) - { - statusMsg << "pop {"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - if(rc) statusMsg << ","; - statusMsg << "r" << dec << ra; - rc++; - } - } - if(inst&0x100) - { - if(rc) statusMsg << ","; - statusMsg << "pc"; - } - statusMsg << "}" << endl; - } - - sp=read_register(13); - for(ra=0,rb=0x01;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - write_register(ra,read32(sp)); - sp+=4; - } - } - if(inst&0x100) - { - rc=read32(sp); - rc+=2; - write_register(15,rc); - sp+=4; - } - write_register(13,sp); - return(0); - } - - //PUSH - if((inst&0xFE00)==0xB400) - { - if(DISS) - { - statusMsg << "push {"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - if(rc) statusMsg << ","; - statusMsg << "r" << dec << ra; - rc++; - } - } - if(inst&0x100) - { - if(rc) statusMsg << ","; - statusMsg << "lr"; - } - statusMsg << "}" << endl; - } - - sp=read_register(13); - //fprintf(stderr,"sp 0x%08X\n",sp); - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - rc++; - } - } - if(inst&0x100) rc++; - rc<<=2; - sp-=rc; - rd=sp; - for(ra=0,rb=0x01;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - write32(rd,read_register(ra)); - rd+=4; - } - } - if(inst&0x100) - { - write32(rd,read_register(14)); - } - write_register(13,sp); - return(0); - } - - //REV - if((inst&0xFFC0)==0xBA00) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - if(DISS) - statusMsg << "rev r" << dec << rd << ",r" << dec << rn << endl; - ra=read_register(rn); - rc =((ra>> 0)&0xFF)<<24; - rc|=((ra>> 8)&0xFF)<<16; - rc|=((ra>>16)&0xFF)<< 8; - rc|=((ra>>24)&0xFF)<< 0; - write_register(rd,rc); - return(0); - } - - //REV16 - if((inst&0xFFC0)==0xBA40) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - if(DISS) - statusMsg << "rev16 r" << dec << rd << ",r" << dec << rn << endl; - ra=read_register(rn); - rc =((ra>> 0)&0xFF)<< 8; - rc|=((ra>> 8)&0xFF)<< 0; - rc|=((ra>>16)&0xFF)<<24; - rc|=((ra>>24)&0xFF)<<16; - write_register(rd,rc); - return(0); - } - - //REVSH - if((inst&0xFFC0)==0xBAC0) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - if(DISS) - statusMsg << "revsh r" << dec << rd << ",r" << dec << rn << endl; - ra=read_register(rn); - rc =((ra>> 0)&0xFF)<< 8; - rc|=((ra>> 8)&0xFF)<< 0; - if(rc&0x8000) rc|=0xFFFF0000; - else rc&=0x0000FFFF; - write_register(rd,rc); - return(0); - } - - //ROR - if((inst&0xFFC0)==0x41C0) - { - rd=(inst>>0)&0x7; - rs=(inst>>3)&0x7; - if(DISS) - statusMsg << "rors r" << dec << rd << ",r" << dec << rs << endl; - rc=read_register(rd); - ra=read_register(rs); - ra&=0xFF; - if(ra==0) - { - } - else - { - ra&=0x1F; - if(ra==0) - { - do_cflag_bit(rc&0x80000000); - } - else - { - do_cflag_bit(rc&(1<<(ra-1))); - rb=rc<<(32-ra); - rc>>=ra; - rc|=rb; - } - } - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //SBC - if((inst&0xFFC0)==0x4180) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "sbc r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rd); - rb=read_register(rm); - rc=ra-rb; - if(!(cpsr&CPSR_C)) rc--; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,rb,0); - do_sub_vflag(ra,rb,rc); - return(0); - } - - //SETEND - if((inst&0xFFF7)==0xB650) - { - statusMsg << "setend not implemented" << endl; - return(1); - } - - //STMIA - if((inst&0xF800)==0xC000) - { - rn=(inst>>8)&0x7; - if(DISS) - { - statusMsg << "stmia r" << dec << rn << "!,{"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - if(rc) statusMsg << ","; - statusMsg << "r" << dec << ra; - rc++; - } - } - statusMsg << "}" << endl; - } - sp=read_register(rn); - for(ra=0,rb=0x01;rb;rb=(rb<<1)&0xFF,ra++) - { - if(inst&rb) - { - write32(sp,read_register(ra)); - sp+=4; - } - } - write_register(rn,sp); - return(0); - } - - //STR(1) - if((inst&0xF800)==0x6000) - { - rd=(inst>>0)&0x07; - rn=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - rb<<=2; - if(DISS) - statusMsg << "str r" << dec << rd << ",[r" << dec << rn - << ",#0x" << HEX2 << rb << "]" << endl; - rb=read_register(rn)+rb; - rc=read_register(rd); - write32(rb,rc); - return(0); - } - - //STR(2) - if((inst&0xFE00)==0x5000) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "str r" << dec << rd << ",[r" << dec << rn - << ",r" << dec << rm << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read_register(rd); - write32(rb,rc); - return(0); - } - - //STR(3) - if((inst&0xF800)==0x9000) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x07; - rb<<=2; - if(DISS) - statusMsg << "str r" << dec << rd << ",[SP,#0x" << HEX2 << rb << "]" << endl; - rb=read_register(13)+rb; - //fprintf(stderr,"0x%08X\n",rb); - rc=read_register(rd); - write32(rb,rc); - return(0); - } - - //STRB(1) - if((inst&0xF800)==0x7000) - { - rd=(inst>>0)&0x07; - rn=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - if(DISS) - statusMsg << "strb r" << dec << rd << ",[r" << dec << rn - << ",#0x" << HEX8 << rb << "]" << endl; - rb=read_register(rn)+rb; - rc=read_register(rd); - ra=read16(rb&(~1)); - if(rb&1) - { - ra&=0x00FF; - ra|=rc<<8; - } - else - { - ra&=0xFF00; - ra|=rc&0x00FF; - } - write16(rb&(~1),ra&0xFFFF); - return(0); - } - - //STRB(2) - if((inst&0xFE00)==0x5400) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "strb r" << dec << rd << ",[r" << dec << rn - << ",r" << rm << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read_register(rd); - ra=read16(rb&(~1)); - if(rb&1) - { - ra&=0x00FF; - ra|=rc<<8; - } - else - { - ra&=0xFF00; - ra|=rc&0x00FF; - } - write16(rb&(~1),ra&0xFFFF); - return(0); - } - - //STRH(1) - if((inst&0xF800)==0x8000) - { - rd=(inst>>0)&0x07; - rn=(inst>>3)&0x07; - rb=(inst>>6)&0x1F; - rb<<=1; - if(DISS) - statusMsg << "strh r" << dec << rd << ",[r" << dec << rn - << ",#0x" << HEX2 << rb << "]" << endl; - rb=read_register(rn)+rb; - rc=read_register(rd); - write16(rb,rc&0xFFFF); - return(0); - } - - //STRH(2) - if((inst&0xFE00)==0x5200) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "strh r" << dec << rd << ",[r" << dec << rn - << ",r" << dec << rm << "]" << endl; - rb=read_register(rn)+read_register(rm); - rc=read_register(rd); - write16(rb,rc&0xFFFF); - return(0); - } - - //SUB(1) - if((inst&0xFE00)==0x1E00) - { - rd=(inst>>0)&7; - rn=(inst>>3)&7; - rb=(inst>>6)&7; - if(DISS) - statusMsg << "subs r" << dec << rd << ",r" << dec << rn - << ",#0x" << HEX2 << rb << endl; - ra=read_register(rn); - rc=ra-rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,~rb,1); - do_sub_vflag(ra,rb,rc); - return(0); - } - - //SUB(2) - if((inst&0xF800)==0x3800) - { - rb=(inst>>0)&0xFF; - rd=(inst>>8)&0x07; - if(DISS) - statusMsg << "subs r" << dec << rd << ",#0x" << HEX2 << rb << endl; - ra=read_register(rd); - rc=ra-rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,~rb,1); - do_sub_vflag(ra,rb,rc); - return(0); - } - - //SUB(3) - if((inst&0xFE00)==0x1A00) - { - rd=(inst>>0)&0x7; - rn=(inst>>3)&0x7; - rm=(inst>>6)&0x7; - if(DISS) - statusMsg << "subs r" << dec << rd << ",r" << dec << rn - << ",r" << dec << rm << endl; - ra=read_register(rn); - rb=read_register(rm); - rc=ra-rb; - write_register(rd,rc); - do_nflag(rc); - do_zflag(rc); - do_cflag(ra,~rb,1); - do_sub_vflag(ra,rb,rc); - return(0); - } - - //SUB(4) - if((inst&0xFF80)==0xB080) - { - rb=inst&0x7F; - rb<<=2; - if(DISS) - statusMsg << "sub SP,#0x" << HEX2 << rb << endl; - ra=read_register(13); - ra-=rb; - write_register(13,ra); - return(0); - } - - //SWI - if((inst&0xFF00)==0xDF00) - { - rb=inst&0xFF; - if(DISS) - statusMsg << "swi 0x" << HEX2 << rb << endl; - statusMsg << endl << endl << "swi 0x" << HEX2 << rb << endl; - return(1); - } - - //SXTB - if((inst&0xFFC0)==0xB240) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "sxtb r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rm); - rc=ra&0xFF; - if(rc&0x80) rc|=(~0)<<8; - write_register(rd,rc); - return(0); - } - - //SXTH - if((inst&0xFFC0)==0xB200) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "sxth r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rm); - rc=ra&0xFFFF; - if(rc&0x8000) rc|=(~0)<<16; - write_register(rd,rc); - return(0); - } - - //TST - if((inst&0xFFC0)==0x4200) - { - rn=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "tst r" << dec << rn << ",r" << dec << rm << endl; - ra=read_register(rn); - rb=read_register(rm); - rc=ra&rb; - do_nflag(rc); - do_zflag(rc); - return(0); - } - - //UXTB - if((inst&0xFFC0)==0xB2C0) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "uxtb r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rm); - rc=ra&0xFF; - write_register(rd,rc); - return(0); - } - - //UXTH - if((inst&0xFFC0)==0xB280) - { - rd=(inst>>0)&0x7; - rm=(inst>>3)&0x7; - if(DISS) - statusMsg << "uxth r" << dec << rd << ",r" << dec << rm << endl; - ra=read_register(rm); - rc=ra&0xFFFF; - write_register(rd,rc); - return(0); - } - - statusMsg << "invalid instruction " << HEX8 << pc << " " << HEX4 << inst << endl; - return(1); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int Thumbulator::reset ( void ) -{ - //memset(ram,0xFF,sizeof(ram)); - cpsr=CPSR_T|CPSR_I|CPSR_F|MODE_SVC; - - reg_svc[13]=0x40001fb4; //sp - reg_svc[14]=0x00000c00; //lr (duz this use odd addrs) - reg_sys[15]=0x00000c0b; // entry point of 0xc09+2 - // reg_sys[15]+=2; - - // fxq: don't care about below so much (maybe to guess timing???) - instructions=0; - fetches=0; - reads=0; - writes=0; - - statusMsg.str(""); - - return(0); -} - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Thumbulator.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Thumbulator.hxx deleted file mode 100644 index fcb8c3f2c1..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/cart/Thumbulator.hxx +++ /dev/null @@ -1,128 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Thumbulator.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -//============================================================================ -// This class provides Thumb emulation code ("Thumbulator") -// by David Welch (dwelch@dwelch.com) -// Modified by Fred Quimby -// Code is public domain and used with the author's consent -//============================================================================ - -#ifdef THUMB_SUPPORT - -#include "bspf.hxx" - -#define ROMADDMASK 0x7FFF -#define RAMADDMASK 0x1FFF - -#define ROMSIZE (ROMADDMASK+1) -#define RAMSIZE (RAMADDMASK+1) - -//0b10000 User PC, R14 to R0, CPSR -//0b10001 FIQ PC, R14_fiq to R8_fiq, R7 to R0, CPSR, SPSR_fiq -//0b10010 IRQ PC, R14_irq, R13_irq, R12 to R0, CPSR, SPSR_irq -//0b10011 Supervisor PC, R14_svc, R13_svc, R12 to R0, CPSR, SPSR_svc -//0b10111 Abort PC, R14_abt, R13_abt, R12 to R0, CPSR, SPSR_abt -//0b11011 Undefined PC, R14_und, R13_und, R12 to R0, CPSR, SPSR_und -//0b11111 System - -#define MODE_USR 0x10 -#define MODE_FIQ 0x11 -#define MODE_IRQ 0x12 -#define MODE_SVC 0x13 -#define MODE_ABT 0x17 -#define MODE_UND 0x1B -#define MODE_SYS 0x1F - -#define CPSR_T (1<<5) -#define CPSR_F (1<<6) -#define CPSR_I (1<<7) -#define CPSR_N (1<<31) -#define CPSR_Z (1<<30) -#define CPSR_C (1<<29) -#define CPSR_V (1<<28) -#define CPSR_Q (1<<27) - -class Thumbulator -{ - public: - Thumbulator(uInt16* rom, uInt16* ram); - ~Thumbulator(); - - /** - Run the ARM code, and return when finished. An exception is thrown - in case of any fatal errors/aborts, containing the actual error, - and the contents of the registers at that point in time. - - @return The results of any debugging output (if enabled), - otherwise an empty string - */ - string run() throw(const string&); - - private: - uInt32 read_register ( uInt32 reg ); - uInt32 write_register ( uInt32 reg, uInt32 data ); - uInt32 fetch16 ( uInt32 addr ); - uInt32 fetch32 ( uInt32 addr ); - uInt32 read16 ( uInt32 addr ); - uInt32 read32 ( uInt32 ); - void write16 ( uInt32 addr, uInt32 data ); - void write32 ( uInt32 addr, uInt32 data ); - - void do_zflag ( uInt32 x ); - void do_nflag ( uInt32 x ); - void do_cflag ( uInt32 a, uInt32 b, uInt32 c ); - void do_sub_vflag ( uInt32 a, uInt32 b, uInt32 c ); - void do_add_vflag ( uInt32 a, uInt32 b, uInt32 c ); - void do_cflag_bit ( uInt32 x ); - void do_vflag_bit ( uInt32 x ); - - int fatalError(const char* opcode, uInt32 v1, const char* msg) throw(const string&); - int fatalError(const char* opcode, uInt32 v1, uInt32 v2, const char* msg) throw(const string&); - void dump_counters ( void ); - void dump_regs( void ); - int execute ( void ); - int reset ( void ); - - private: - uInt16* rom; - uInt16* ram; - Int32 copydata; - - uInt32 halfadd; - uInt32 cpsr; - uInt32 reg_usr[16]; //User mode - uInt32 reg_sys[16]; //System mode - uInt32 reg_svc[16]; //Supervisor mode - //uInt32 reg_abt[16]; //Abort mode - //uInt32 reg_und[16]; //Undefined mode - uInt32 reg_irq[16]; //Interrupt mode - //uInt32 reg_fiq[16]; //Fast Interrupt mode - - uInt64 instructions; - uInt64 fetches; - uInt64 reads; - uInt64 writes; - - Int32 DBUG; // dump detailed execution trace - Int32 DISS; // dump Thumb instruction trace - ostringstream statusMsg; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/AtariVox.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/AtariVox.cpp deleted file mode 100644 index 62cea92ade..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/AtariVox.cpp +++ /dev/null @@ -1,172 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: AtariVox.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include "MT24LC256.hxx" -#include "SerialPort.hxx" -#include "System.hxx" -#include "AtariVox.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AtariVox::AtariVox(Jack jack, const Event& event, const System& system, - const SerialPort& port, const string& portname, - const string& eepromfile) - : Controller(jack, event, system, Controller::AtariVox), - mySerialPort((SerialPort&)port), - myEEPROM(NULL), - myShiftCount(0), - myShiftRegister(0), - myLastDataWriteCycle(0) -{ - if(mySerialPort.openPort(portname)) - myAboutString = " (using serial port \'" + portname + "\')"; - else - myAboutString = " (invalid serial port \'" + portname + "\')"; - - myEEPROM = new MT24LC256(eepromfile, system); - - myDigitalPinState[One] = myDigitalPinState[Two] = - myDigitalPinState[Three] = myDigitalPinState[Four] = true; - - myAnalogPinValue[Five] = myAnalogPinValue[Nine] = maximumResistance; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AtariVox::~AtariVox() -{ - mySerialPort.closePort(); - delete myEEPROM; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool AtariVox::read(DigitalPin pin) -{ - // We need to override the Controller::read() method, since the timing - // of the actual read is important for the EEPROM (we can't just read - // 60 times per second in the ::update() method) - switch(pin) - { - // Pin 2: SpeakJet READY - case Two: - // For now, we just assume the device is always ready - return myDigitalPinState[Two] = true; - - // Pin 3: EEPROM SDA - // input data from the 24LC256 EEPROM using the I2C protocol - case Three: - return myDigitalPinState[Three] = myEEPROM->readSDA(); - - default: - return Controller::read(pin); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void AtariVox::write(DigitalPin pin, bool value) -{ - // Change the pin state based on value - switch(pin) - { - // Pin 1: SpeakJet DATA - // output serial data to the speakjet - case One: - myDigitalPinState[One] = value; - clockDataIn(value); - break; - - // Pin 3: EEPROM SDA - // output data to the 24LC256 EEPROM using the I2C protocol - case Three: - myDigitalPinState[Three] = value; - myEEPROM->writeSDA(value); - break; - - // Pin 4: EEPROM SCL - // output clock data to the 24LC256 EEPROM using the I2C protocol - case Four: - myDigitalPinState[Four] = value; - myEEPROM->writeSCL(value); - break; - - default: - break; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void AtariVox::clockDataIn(bool value) -{ - uInt32 cycle = mySystem.cycles(); - - if(value && (myShiftCount == 0)) - return; - - // If this is the first write this frame, or if it's been a long time - // since the last write, start a new data byte. - if(cycle < myLastDataWriteCycle) - { - myShiftRegister = 0; - myShiftCount = 0; - } - else if(cycle > myLastDataWriteCycle + 1000) - { - myShiftRegister = 0; - myShiftCount = 0; - } - - // If this is the first write this frame, or if it's been 62 cycles - // since the last write, shift this bit into the current byte. - if(cycle < myLastDataWriteCycle || cycle >= myLastDataWriteCycle + 62) - { - myShiftRegister >>= 1; - myShiftRegister |= (value << 15); - if(++myShiftCount == 10) - { - myShiftCount = 0; - myShiftRegister >>= 6; - if(!(myShiftRegister & (1<<9))) - cerr << "AtariVox: bad start bit" << endl; - else if((myShiftRegister & 1)) - cerr << "AtariVox: bad stop bit" << endl; - else - { - uInt8 data = ((myShiftRegister >> 1) & 0xff); - mySerialPort.writeByte(&data); - } - myShiftRegister = 0; - } - } - - myLastDataWriteCycle = cycle; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void AtariVox::systemCyclesReset() -{ - myLastDataWriteCycle -= mySystem.cycles(); - - // The EEPROM keeps track of cycle counts, and needs to know when the - // cycles are reset - myEEPROM->systemCyclesReset(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string AtariVox::about() const -{ - return Controller::about() + myAboutString; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/AtariVox.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/AtariVox.hxx deleted file mode 100644 index 791d014e17..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/AtariVox.hxx +++ /dev/null @@ -1,126 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: AtariVox.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef ATARIVOX_HXX -#define ATARIVOX_HXX - -class SerialPort; -class MT24LC256; - -#include "Control.hxx" - -/** - Richard Hutchinson's AtariVox "controller": A speech synthesizer and - storage device. - - This code owes a great debt to Alex Herbert's AtariVox documentation and - driver code. - - @author B. Watson - @version $Id: AtariVox.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class AtariVox : public Controller -{ - public: - /** - Create a new AtariVox controller plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - @param port The serial port object - @param portname Name of the port used for reading and writing - @param eepromfile The file containing the EEPROM data - */ - AtariVox(Jack jack, const Event& event, const System& system, - const SerialPort& port, const string& portname, - const string& eepromfile); - - /** - Destructor - */ - virtual ~AtariVox(); - - public: - /** - Read the value of the specified digital pin for this controller. - - @param pin The pin of the controller jack to read - @return The state of the pin - */ - bool read(DigitalPin pin); - - /** - Write the given value to the specified digital pin for this - controller. Writing is only allowed to the pins associated - with the PIA. Therefore you cannot write to pin six. - - @param pin The pin of the controller jack to write to - @param value The value to write to the pin - */ - void write(DigitalPin pin, bool value); - - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update() { } - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - virtual string about() const; - - private: - void clockDataIn(bool value); - void shiftIn(bool value); - - private: - // Instance of an real serial port on the system - // Assuming there's a real AtariVox attached, we can send SpeakJet - // bytes directly to it - SerialPort& mySerialPort; - - // The EEPROM used in the AtariVox - MT24LC256* myEEPROM; - - // How many bits have been shifted into the shift register? - uInt8 myShiftCount; - - // Shift register. Data comes in serially: - // 1 start bit, always 0 - // 8 data bits, LSB first - // 1 stop bit, always 1 - uInt16 myShiftRegister; - - // When did the last data write start, in CPU cycles? - // The real SpeakJet chip reads data at 19200 bits/sec. Alex's - // driver code sends data at 62 CPU cycles per bit, which is - // "close enough". - uInt32 myLastDataWriteCycle; - - // Holds information concerning serial port usage - string myAboutString; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Booster.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Booster.cpp deleted file mode 100644 index ec1f2ba20a..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Booster.cpp +++ /dev/null @@ -1,129 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Booster.cxx 2228 2011-05-06 14:29:39Z stephena $ -//============================================================================ - -#include "Event.hxx" -#include "Booster.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -BoosterGrip::BoosterGrip(Jack jack, const Event& event, const System& system) - : Controller(jack, event, system, Controller::BoosterGrip) -{ - if(myJack == Left) - { - myUpEvent = Event::JoystickZeroUp; - myDownEvent = Event::JoystickZeroDown; - myLeftEvent = Event::JoystickZeroLeft; - myRightEvent = Event::JoystickZeroRight; - myFireEvent = Event::JoystickZeroFire1; - myTriggerEvent = Event::JoystickZeroFire2; - myBoosterEvent = Event::JoystickZeroFire3; - myXAxisValue = Event::SALeftAxis0Value; - myYAxisValue = Event::SALeftAxis1Value; - } - else - { - myUpEvent = Event::JoystickOneUp; - myDownEvent = Event::JoystickOneDown; - myLeftEvent = Event::JoystickOneLeft; - myRightEvent = Event::JoystickOneRight; - myFireEvent = Event::JoystickOneFire1; - myTriggerEvent = Event::JoystickOneFire2; - myBoosterEvent = Event::JoystickOneFire3; - myXAxisValue = Event::SARightAxis0Value; - myYAxisValue = Event::SARightAxis1Value; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -BoosterGrip::~BoosterGrip() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void BoosterGrip::update() -{ - // Digital events (from keyboard or joystick hats & buttons) - myDigitalPinState[One] = (myEvent.get(myUpEvent) == 0); - myDigitalPinState[Two] = (myEvent.get(myDownEvent) == 0); - myDigitalPinState[Three] = (myEvent.get(myLeftEvent) == 0); - myDigitalPinState[Four] = (myEvent.get(myRightEvent) == 0); - myDigitalPinState[Six] = (myEvent.get(myFireEvent) == 0); - - // The CBS Booster-grip has two more buttons on it. These buttons are - // connected to the inputs usually used by paddles. - myAnalogPinValue[Five] = (myEvent.get(myBoosterEvent) != 0) ? - minimumResistance : maximumResistance; - myAnalogPinValue[Nine] = (myEvent.get(myTriggerEvent) != 0) ? - minimumResistance : maximumResistance; - - // Axis events (usually generated by the Stelladaptor) - int xaxis = myEvent.get(myXAxisValue); - int yaxis = myEvent.get(myYAxisValue); - if(xaxis > 16384-4096) - { - myDigitalPinState[Four] = false; - // Stelladaptor sends "half moved right" for L+R pushed together - if(xaxis < 16384+4096) - myDigitalPinState[Three] = false; - } - else if(xaxis < -16384) - myDigitalPinState[Three] = false; - if(yaxis > 16384-4096) - { - myDigitalPinState[Two] = false; - // Stelladaptor sends "half moved down" for U+D pushed together - if(yaxis < 16384+4096) - myDigitalPinState[One] = false; - } - else if(yaxis < -16384) - myDigitalPinState[One] = false; - - // Mouse motion and button events - // Since there are 4 possible controller numbers, we use 0 & 2 - // for the left jack, and 1 & 3 for the right jack - if((myJack == Left && !(ourControlNum & 0x1)) || - (myJack == Right && ourControlNum & 0x1)) - { - // The following code was taken from z26 - #define MJ_Threshold 2 - int mousex = myEvent.get(Event::MouseAxisXValue), - mousey = myEvent.get(Event::MouseAxisYValue); - if(mousex || mousey) - { - if((!(abs(mousey) > abs(mousex) << 1)) && (abs(mousex) >= MJ_Threshold)) - { - if(mousex < 0) - myDigitalPinState[Three] = false; - else if (mousex > 0) - myDigitalPinState[Four] = false; - } - - if((!(abs(mousex) > abs(mousey) << 1)) && (abs(mousey) >= MJ_Threshold)) - { - if(mousey < 0) - myDigitalPinState[One] = false; - else if(mousey > 0) - myDigitalPinState[Two] = false; - } - } - // Get mouse button state - if(myEvent.get(Event::MouseButtonValue)) - myDigitalPinState[Six] = false; - } -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Booster.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Booster.hxx deleted file mode 100644 index 881babbe6f..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Booster.hxx +++ /dev/null @@ -1,66 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Booster.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef BOOSTERGRIP_HXX -#define BOOSTERGRIP_HXX - -#include "Control.hxx" -#include "Event.hxx" - -/** - The standard Atari 2600 joystick controller fitted with the - CBS Booster grip. The Booster grip has two more fire buttons - on it (a booster and a trigger). - - @author Bradford W. Mott - @version $Id: Booster.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class BoosterGrip : public Controller -{ - public: - /** - Create a new booster grip joystick plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - */ - BoosterGrip(Jack jack, const Event& event, const System& system); - - /** - Destructor - */ - virtual ~BoosterGrip(); - - public: - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - private: - // Pre-compute the events we care about based on given port - // This will eliminate test for left or right port in update() - Event::Type myUpEvent, myDownEvent, myLeftEvent, myRightEvent, - myFireEvent, myBoosterEvent, myTriggerEvent, - myXAxisValue, myYAxisValue; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Control.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Control.cpp deleted file mode 100644 index 733911d0ad..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Control.cpp +++ /dev/null @@ -1,217 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Control.cxx 2228 2011-05-06 14:29:39Z stephena $ -//============================================================================ - -#include - -#include "System.hxx" -#include "Control.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Controller::Controller(Jack jack, const Event& event, const System& system, - Type type) - : myJack(jack), - myEvent(event), - mySystem(system), - myType(type) -{ - myDigitalPinState[One] = - myDigitalPinState[Two] = - myDigitalPinState[Three] = - myDigitalPinState[Four] = - myDigitalPinState[Six] = true; - - myAnalogPinValue[Five] = - myAnalogPinValue[Nine] = maximumResistance; - - switch(myType) - { - case Joystick: - myName = "Joystick"; - break; - case Paddles: - myName = "Paddles"; - break; - case BoosterGrip: - myName = "BoosterGrip"; - break; - case Driving: - myName = "Driving"; - break; - case Keyboard: - myName = "Keyboard"; - break; - case TrackBall22: - myName = "TrackBall22"; - break; - case TrackBall80: - myName = "TrackBall80"; - break; - case AmigaMouse: - myName = "AmigaMouse"; - break; - case AtariVox: - myName = "AtariVox"; - break; - case SaveKey: - myName = "SaveKey"; - break; - case KidVid: - myName = "KidVid"; - break; - case Genesis: - myName = "Genesis"; - break; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Controller::~Controller() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const Controller::Type Controller::type() const -{ - return myType; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Controller::read(DigitalPin pin) -{ - switch(pin) - { - case One: - case Two: - case Three: - case Four: - case Six: - return myDigitalPinState[pin]; - - default: - return true; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Int32 Controller::read(AnalogPin pin) -{ - switch(pin) - { - case Five: - case Nine: - return myAnalogPinValue[pin]; - - default: - return maximumResistance; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Controller::save(Serializer& out) const -{ - try - { - // Output the digital pins - out.putBool(myDigitalPinState[One]); - out.putBool(myDigitalPinState[Two]); - out.putBool(myDigitalPinState[Three]); - out.putBool(myDigitalPinState[Four]); - out.putBool(myDigitalPinState[Six]); - - // Output the analog pins - out.putInt(myAnalogPinValue[Five]); - out.putInt(myAnalogPinValue[Nine]); - } - catch(...) - { - cerr << "ERROR: Controller::save() exception\n"; - return false; - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Controller::load(Serializer& in) -{ - try - { - // Input the digital pins - myDigitalPinState[One] = in.getBool(); - myDigitalPinState[Two] = in.getBool(); - myDigitalPinState[Three] = in.getBool(); - myDigitalPinState[Four] = in.getBool(); - myDigitalPinState[Six] = in.getBool(); - - // Input the analog pins - myAnalogPinValue[Five] = (Int32) in.getInt(); - myAnalogPinValue[Nine] = (Int32) in.getInt(); - } - catch(...) - { - cerr << "ERROR: Controller::load() exception\n"; - return false; - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Controller::name() const -{ - return myName; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Controller::about() const -{ - return name() + " in " + (myJack == Left ? "left port" : "right port"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Controller::setMouseIsController(int number) -{ - ourControlNum = number; - if(ourControlNum < 0) ourControlNum = 0; - else if (ourControlNum > 3) ourControlNum = 3; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const Int32 Controller::maximumResistance = 0x7FFFFFFF; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const Int32 Controller::minimumResistance = 0x00000000; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Int32 Controller::ourControlNum = 0; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Controller::Controller(const Controller& c) - : myJack(c.myJack), - myEvent(c.myEvent), - mySystem(c.mySystem), - myType(c.myType) -{ - assert(false); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Controller& Controller::operator = (const Controller&) -{ - assert(false); - return *this; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Control.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Control.hxx deleted file mode 100644 index 42f37f4651..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Control.hxx +++ /dev/null @@ -1,246 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Control.hxx 2228 2011-05-06 14:29:39Z stephena $ -//============================================================================ - -#ifndef CONTROLLER_HXX -#define CONTROLLER_HXX - -class Controller; -class Event; -class System; - -#include "Serializable.hxx" -#include "bspf.hxx" - -/** - A controller is a device that plugs into either the left or right - controller jack of the Video Computer System (VCS). The pins of - the controller jacks are mapped as follows: - - ------------- - \ 1 2 3 4 5 / - \ 6 7 8 9 / - --------- - - Left Controller Right Controller - - pin 1 D4 PIA SWCHA D0 PIA SWCHA - pin 2 D5 PIA SWCHA D1 PIA SWCHA - pin 3 D6 PIA SWCHA D2 PIA SWCHA - pin 4 D7 PIA SWCHA D3 PIA SWCHA - pin 5 D7 TIA INPT1 (Dumped) D7 TIA INPT3 (Dumped) - pin 6 D7 TIA INPT4 (Latched) D7 TIA INPT5 (Latched) - pin 7 +5 +5 - pin 8 GND GND - pin 9 D7 TIA INPT0 (Dumped) D7 TIA INPT2 (Dumped) - - Each of the pins connected to the PIA can be configured as an - input or output pin. The "dumped" TIA pins are used to charge - a capacitor. A potentiometer is sometimes connected to these - pins for analog input. - - This is a base class for all controllers. It provides a view - of the controller from the perspective of the controller's jack. - - @author Bradford W. Mott - @version $Id: Control.hxx 2228 2011-05-06 14:29:39Z stephena $ -*/ -class Controller : public Serializable -{ - /** - Riot debug class needs special access to the underlying controller state - */ - friend class RiotDebug; - - public: - /** - Enumeration of the controller jacks - */ - enum Jack - { - Left, Right - }; - - /** - Enumeration of the controller types - */ - enum Type - { - BoosterGrip, Driving, Keyboard, Paddles, Joystick, - TrackBall22, TrackBall80, AmigaMouse, AtariVox, SaveKey, - KidVid, Genesis - }; - - public: - /** - Create a new controller plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param type The type for this controller - @param system The system using this controller - */ - Controller(Jack jack, const Event& event, const System& system, - Type type); - - /** - Destructor - */ - virtual ~Controller(); - - /** - Returns the type of this controller. - */ - const Type type() const; - - public: - /** - Enumeration of the digital pins of a controller port - */ - enum DigitalPin - { - One, Two, Three, Four, Six - }; - - /** - Enumeration of the analog pins of a controller port - */ - enum AnalogPin - { - Five, Nine - }; - - public: - /** - Read the value of the specified digital pin for this controller. - - @param pin The pin of the controller jack to read - @return The state of the pin - */ - virtual bool read(DigitalPin pin); - - /** - Read the resistance at the specified analog pin for this controller. - The returned value is the resistance measured in ohms. - - @param pin The pin of the controller jack to read - @return The resistance at the specified pin - */ - virtual Int32 read(AnalogPin pin); - - /** - Write the given value to the specified digital pin for this - controller. Writing is only allowed to the pins associated - with the PIA. Therefore you cannot write to pin six. - - @param pin The pin of the controller jack to write to - @param value The value to write to the pin - */ - virtual void write(DigitalPin pin, bool value) { }; - - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - virtual void update() = 0; - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - virtual void systemCyclesReset() { }; - - /** - Returns the name of this controller. - */ - virtual string name() const; - - /** - Returns more detailed information about this controller. - */ - virtual string about() const; - - /** - Saves the current state of this controller to the given Serializer. - - @param out The serializer device to save to. - @return The result of the save. True on success, false on failure. - */ - bool save(Serializer& out) const; - - /** - Loads the current state of this controller from the given Serializer. - - @param in The serializer device to load from. - @return The result of the load. True on success, false on failure. - */ - bool load(Serializer& in); - - /** - Sets the mouse to emulate controller number 'X'. Note that this - can accept values 0 to 3, since there can be up to four possible - controllers (when using paddles). In all other cases when only - two controllers are present, it's up to the specific class to - decide how to use this data. - - @param number The controller number (0, 1, 2, 3) - */ - static void setMouseIsController(int number); - - public: - /// Constant which represents maximum resistance for analog pins - static const Int32 maximumResistance; - - /// Constant which represents minimum resistance for analog pins - static const Int32 minimumResistance; - - protected: - /// Specifies which jack the controller is plugged in - const Jack myJack; - - /// Reference to the event object this controller uses - const Event& myEvent; - - /// Pointer to the System object (used for timing purposes) - const System& mySystem; - - /// Specifies which type of controller this is (defined by child classes) - const Type myType; - - /// Specifies the name of this controller based on type - string myName; - - /// The boolean value on each digital pin - bool myDigitalPinState[5]; - - /// The analog value on each analog pin - Int32 myAnalogPinValue[2]; - - /// The controller number - static Int32 ourControlNum; - - protected: - // Copy constructor isn't supported by controllers so make it private - Controller(const Controller&); - - // Assignment operator isn't supported by controllers so make it private - Controller& operator = (const Controller&); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Driving.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Driving.cpp deleted file mode 100644 index 4b83096b3f..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Driving.cpp +++ /dev/null @@ -1,114 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Driving.cxx 2228 2011-05-06 14:29:39Z stephena $ -//============================================================================ - -#include "Event.hxx" -#include "System.hxx" - -#include "Driving.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Driving::Driving(Jack jack, const Event& event, const System& system) - : Controller(jack, event, system, Controller::Driving), - myCounter(0) -{ - if(myJack == Left) - { - myCCWEvent = Event::JoystickZeroLeft; - myCWEvent = Event::JoystickZeroRight; - myFireEvent = Event::JoystickZeroFire1; - myXAxisValue = Event::SALeftAxis0Value; - myYAxisValue = Event::SALeftAxis1Value; - } - else - { - myCCWEvent = Event::JoystickOneLeft; - myCWEvent = Event::JoystickOneRight; - myFireEvent = Event::JoystickOneFire1; - myXAxisValue = Event::SARightAxis0Value; - myYAxisValue = Event::SARightAxis1Value; - } - - // Digital pins 3 and 4 are not connected - myDigitalPinState[Three] = myDigitalPinState[Four] = true; - - // Analog pins are not connected - myAnalogPinValue[Five] = myAnalogPinValue[Nine] = maximumResistance; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Driving::~Driving() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Driving::update() -{ - // Make sure direct gray codes from Stelladaptor stay in sync with - // simulated gray codes generated by PC keyboard or PC joystick - myCounter = (myGrayIndex << 2) | (myCounter & 3); - - // Digital events (from keyboard or joystick hats & buttons) - myDigitalPinState[Six] = (myEvent.get(myFireEvent) == 0); - int d_axis = myEvent.get(myXAxisValue); - if(myEvent.get(myCCWEvent) != 0 || d_axis < -16384) myCounter--; - else if(myEvent.get(myCWEvent) != 0 || d_axis > 16384) myCounter++; - - // Mouse motion and button events - // Since there are 4 possible controller numbers, we use 0 & 2 - // for the left jack, and 1 & 3 for the right jack - if((myJack == Left && !(ourControlNum & 0x1)) || - (myJack == Right && ourControlNum & 0x1)) - { - int m_axis = myEvent.get(Event::MouseAxisXValue); - if(m_axis < -2) myCounter--; - else if(m_axis > 2) myCounter++; - if(myEvent.get(Event::MouseButtonValue)) - myDigitalPinState[Six] = false; - } - - // Only consider the lower-most bits (corresponding to pins 1 & 2) - myCounter &= 0x0f; - myGrayIndex = myCounter >> 2; - - // Stelladaptor is the only controller that should set this - int yaxis = myEvent.get(myYAxisValue); - - // Only overwrite gray code when Stelladaptor input has changed - // (that means real changes, not just analog signal jitter) - if((yaxis < (myLastYaxis - 1024)) || (yaxis > (myLastYaxis + 1024))) - { - myLastYaxis = yaxis; - if(yaxis <= -16384-4096) - myGrayIndex = 3; // up - else if(yaxis > 16384+4096) - myGrayIndex = 1; // down - else if(yaxis >= 16384-4096) - myGrayIndex = 2; // up + down - else if(yaxis < 16384-4096) - myGrayIndex = 0; // no movement - } - - // Gray codes for rotation - static const uInt8 graytable[] = { 0x03, 0x01, 0x00, 0x02 }; - - // Determine which bits are set - uInt8 gray = graytable[myGrayIndex]; - myDigitalPinState[One] = (gray & 0x1) != 0; - myDigitalPinState[Two] = (gray & 0x2) != 0; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Driving.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Driving.hxx deleted file mode 100644 index 8dbf7b514b..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Driving.hxx +++ /dev/null @@ -1,75 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Driving.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef DRIVING_HXX -#define DRIVING_HXX - -#include "bspf.hxx" -#include "Control.hxx" -#include "Event.hxx" - -/** - The standard Atari 2600 Indy 500 driving controller. - - @author Bradford W. Mott - @version $Id: Driving.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class Driving : public Controller -{ - public: - /** - Create a new Indy 500 driving controller plugged into - the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - */ - Driving(Jack jack, const Event& event, const System& system); - - /** - Destructor - */ - virtual ~Driving(); - - public: - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - private: - // Counter to iterate through the gray codes - uInt32 myCounter; - - // Index into the gray code table - uInt32 myGrayIndex; - - // Y axis value from last yaxis event that was used to generate a new - // gray code - int myLastYaxis; - - // Pre-compute the events we care about based on given port - // This will eliminate test for left or right port in update() - Event::Type myCWEvent, myCCWEvent, myFireEvent, - myXAxisValue, myYAxisValue, myAxisMouseMotion; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Event.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Event.hxx deleted file mode 100644 index c24cf0b1a9..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Event.hxx +++ /dev/null @@ -1,126 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Event.hxx 2231 2011-05-10 15:04:19Z stephena $ -//============================================================================ - -#ifndef EVENT_HXX -#define EVENT_HXX - -#include "bspf.hxx" - -class Event; - -/** - @author Bradford W. Mott - @version $Id: Event.hxx 2231 2011-05-10 15:04:19Z stephena $ -*/ -class Event -{ - public: - /** - Enumeration of all possible events in Stella, including both - console and controller event types as well as events that aren't - technically part of the emulation core - */ - //ROBO: Hack this up to make mednafen input easier - enum Type - { - NoType, - -//ROBO: These are physically on the console - ConsoleOn, ConsoleOff, ConsoleColor, ConsoleBlackWhite, - ConsoleLeftDiffA, ConsoleLeftDiffB, - ConsoleRightDiffA, ConsoleRightDiffB, - ConsoleSelect, ConsoleReset, - -//ROBO: Joystick. - JoystickZeroUp, JoystickZeroDown, JoystickZeroLeft, JoystickZeroRight, - JoystickZeroFire1, JoystickZeroFire2, JoystickZeroFire3, - -//ROBO: These are all used by keyboard controllers, 1 thru 3 are used by 'KidVid' too - KeyboardZero1, KeyboardZero2, KeyboardZero3, - KeyboardZero4, KeyboardZero5, KeyboardZero6, - KeyboardZero7, KeyboardZero8, KeyboardZero9, - KeyboardZeroStar, KeyboardZero0, KeyboardZeroPound, - -//ROBO: These are used only by paddle controllers - PaddleZeroDecrease, PaddleZeroIncrease, PaddleZeroAnalog, PaddleZeroFire, - PaddleOneDecrease, PaddleOneIncrease, PaddleOneAnalog, PaddleOneFire, - -//ROBO: Move port 2's crap down here - JoystickOneUp, JoystickOneDown, JoystickOneLeft, JoystickOneRight, - JoystickOneFire1, JoystickOneFire2, JoystickOneFire3, - KeyboardOne1, KeyboardOne2, KeyboardOne3, - KeyboardOne4, KeyboardOne5, KeyboardOne6, - KeyboardOne7, KeyboardOne8, KeyboardOne9, - KeyboardOneStar, KeyboardOne0, KeyboardOnePound, - PaddleTwoDecrease, PaddleTwoIncrease, PaddleTwoAnalog, PaddleTwoFire, - PaddleThreeDecrease, PaddleThreeIncrease, PaddleThreeAnalog, PaddleThreeFire, - - -//ROBO: Not used -// Combo1, Combo2, Combo3, Combo4, Combo5, Combo6, Combo7, Combo8, -// Combo9, Combo10, Combo11, Combo12, Combo13, Combo14, Combo15, Combo16, - -//ROBO: Used for axis inputs, I'm not sure if these provide any features that don't duplicate something in the Joystick group - SALeftAxis0Value, SALeftAxis1Value, - SARightAxis0Value, SARightAxis1Value, - MouseAxisXValue, MouseAxisYValue, MouseButtonValue, - -//ROBO: More unused types (the GUI is GONE) -// ChangeState, LoadState, SaveState, TakeSnapshot, Quit, -// PauseMode, MenuMode, CmdMenuMode, DebuggerMode, LauncherMode, -// Fry, VolumeDecrease, VolumeIncrease, - -// UIUp, UIDown, UILeft, UIRight, UIHome, UIEnd, UIPgUp, UIPgDown, -// UISelect, UINavPrev, UINavNext, UIOK, UICancel, UIPrevDir, - - LastType - }; - - public: - /** - Create a new event object - */ - Event() { clear(); } - - public: - /** - Get the value associated with the event of the specified type - */ - Int32 get(Type type) const { return myValues[type]; } - - /** - Set the value associated with the event of the specified type - */ - void set(Type type, Int32 value) { myValues[type] = value; } - - /** - Clears the event array (resets to initial state) - */ - void clear() - { - for(uInt32 i = 0; i < LastType; ++i) - myValues[i] = Event::NoType; - } - - private: - // Array of values associated with each event type - Int32 myValues[LastType]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Genesis.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Genesis.cpp deleted file mode 100644 index feaff527bc..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Genesis.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Genesis.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include "Event.hxx" -#include "Genesis.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Genesis::Genesis(Jack jack, const Event& event, const System& system) - : Controller(jack, event, system, Controller::Genesis) -{ - if(myJack == Left) - { - myUpEvent = Event::JoystickZeroUp; - myDownEvent = Event::JoystickZeroDown; - myLeftEvent = Event::JoystickZeroLeft; - myRightEvent = Event::JoystickZeroRight; - myFire1Event = Event::JoystickZeroFire1; - myFire2Event = Event::JoystickZeroFire3; - } - else - { - myUpEvent = Event::JoystickOneUp; - myDownEvent = Event::JoystickOneDown; - myLeftEvent = Event::JoystickOneLeft; - myRightEvent = Event::JoystickOneRight; - myFire1Event = Event::JoystickOneFire1; - myFire2Event = Event::JoystickOneFire3; - } - - // Analog pin 9 is not connected to this controller at all - // Analog pin 5 corresponds to button 'C' on the gamepad, and corresponds - // to the 'booster' button on a BoosterGrip controller - myAnalogPinValue[Five] = myAnalogPinValue[Nine] = maximumResistance; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Genesis::~Genesis() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Genesis::update() -{ - // Digital events (from keyboard or joystick hats & buttons) - myDigitalPinState[One] = (myEvent.get(myUpEvent) == 0); - myDigitalPinState[Two] = (myEvent.get(myDownEvent) == 0); - myDigitalPinState[Three] = (myEvent.get(myLeftEvent) == 0); - myDigitalPinState[Four] = (myEvent.get(myRightEvent) == 0); - myDigitalPinState[Six] = (myEvent.get(myFire1Event) == 0); - - // The Genesis has one more button (C) that can be read by the 2600 - // However, it seems to work opposite to the BoosterGrip controller, - // in that the logic is inverted - myAnalogPinValue[Five] = (myEvent.get(myFire2Event) == 0) ? - minimumResistance : maximumResistance; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Genesis.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Genesis.hxx deleted file mode 100644 index 0cd90f75bd..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Genesis.hxx +++ /dev/null @@ -1,67 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Genesis.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef GENESIS_HXX -#define GENESIS_HXX - -#include "bspf.hxx" -#include "Control.hxx" -#include "Event.hxx" - -/** - The standard Sega Genesis controller works with the 2600 console for - joystick directions and some of the buttons. Button 'B' corresponds to - the normal fire button (joy0fire), while button 'C' is read through - INPT1 (analog pin 5), which is normally mapped to the BoosterGrip - booster button. - - @author Stephen Anthony -*/ -class Genesis : public Controller -{ - public: - /** - Create a new Genesis gamepad plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - */ - Genesis(Jack jack, const Event& event, const System& system); - - /** - Destructor - */ - virtual ~Genesis(); - - public: - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - private: - // Pre-compute the events we care about based on given port - // This will eliminate test for left or right port in update() - Event::Type myUpEvent, myDownEvent, myLeftEvent, myRightEvent, - myFire1Event, myFire2Event; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Joystick.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Joystick.cpp deleted file mode 100644 index 0bb7b03093..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Joystick.cpp +++ /dev/null @@ -1,133 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Joystick.cxx 2228 2011-05-06 14:29:39Z stephena $ -//============================================================================ - -#include "Event.hxx" -#include "Joystick.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Joystick::Joystick(Jack jack, const Event& event, const System& system) - : Controller(jack, event, system, Controller::Joystick) -{ - if(myJack == Left) - { - myUpEvent = Event::JoystickZeroUp; - myDownEvent = Event::JoystickZeroDown; - myLeftEvent = Event::JoystickZeroLeft; - myRightEvent = Event::JoystickZeroRight; - myFireEvent = Event::JoystickZeroFire1; - myXAxisValue = Event::SALeftAxis0Value; - myYAxisValue = Event::SALeftAxis1Value; - } - else - { - myUpEvent = Event::JoystickOneUp; - myDownEvent = Event::JoystickOneDown; - myLeftEvent = Event::JoystickOneLeft; - myRightEvent = Event::JoystickOneRight; - myFireEvent = Event::JoystickOneFire1; - myXAxisValue = Event::SARightAxis0Value; - myYAxisValue = Event::SARightAxis1Value; - } - - // Analog pins are never used by the joystick - myAnalogPinValue[Five] = myAnalogPinValue[Nine] = maximumResistance; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Joystick::~Joystick() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Joystick::update() -{ - // Digital events (from keyboard or joystick hats & buttons) - myDigitalPinState[One] = (myEvent.get(myUpEvent) == 0); - myDigitalPinState[Two] = (myEvent.get(myDownEvent) == 0); - myDigitalPinState[Three] = (myEvent.get(myLeftEvent) == 0); - myDigitalPinState[Four] = (myEvent.get(myRightEvent) == 0); - myDigitalPinState[Six] = (myEvent.get(myFireEvent) == 0); - - // Axis events (usually generated by the Stelladaptor) - int xaxis = myEvent.get(myXAxisValue); - int yaxis = myEvent.get(myYAxisValue); - if(xaxis > 16384-4096) - { - myDigitalPinState[Four] = false; - // Stelladaptor sends "half moved right" for L+R pushed together - if(xaxis < 16384+4096) - myDigitalPinState[Three] = false; - } - else if(xaxis < -16384) - myDigitalPinState[Three] = false; - if(yaxis > 16384-4096) - { - myDigitalPinState[Two] = false; - // Stelladaptor sends "half moved down" for U+D pushed together - if(yaxis < 16384+4096) - myDigitalPinState[One] = false; - } - else if(yaxis < -16384) - myDigitalPinState[One] = false; - - // Mouse motion and button events - // Since there are 4 possible controller numbers, we use 0 & 2 - // for the left jack, and 1 & 3 for the right jack - if((myJack == Left && !(ourControlNum & 0x1)) || - (myJack == Right && ourControlNum & 0x1)) - { - // The following code was taken from z26 - #define MJ_Threshold 2 - int mousex = myEvent.get(Event::MouseAxisXValue), - mousey = myEvent.get(Event::MouseAxisYValue); - if(mousex || mousey) - { - if((!(abs(mousey) > abs(mousex) << 1)) && (abs(mousex) >= MJ_Threshold)) - { - if(mousex < 0) - myDigitalPinState[Three] = false; - else if (mousex > 0) - myDigitalPinState[Four] = false; - } - - if((!(abs(mousex) > abs(mousey) << 1)) && (abs(mousey) >= MJ_Threshold)) - { - if(mousey < 0) - myDigitalPinState[One] = false; - else if(mousey > 0) - myDigitalPinState[Two] = false; - } - } - // Get mouse button state - if(myEvent.get(Event::MouseButtonValue)) - myDigitalPinState[Six] = false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Joystick::setDeadZone(int deadzone) -{ - if(deadzone < 0) deadzone = 0; - if(deadzone > 29) deadzone = 29; - - _DEAD_ZONE = 3200 + deadzone * 1000; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int Joystick::_DEAD_ZONE = 3200; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Joystick.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Joystick.hxx deleted file mode 100644 index a00a86506f..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Joystick.hxx +++ /dev/null @@ -1,74 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Joystick.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef JOYSTICK_HXX -#define JOYSTICK_HXX - -#include "bspf.hxx" -#include "Control.hxx" -#include "Event.hxx" - -/** - The standard Atari 2600 joystick controller. - - @author Bradford W. Mott - @version $Id: Joystick.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class Joystick : public Controller -{ - public: - /** - Create a new joystick controller plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - */ - Joystick(Jack jack, const Event& event, const System& system); - - /** - Destructor - */ - virtual ~Joystick(); - - public: - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - /** - Sets the deadzone amount for real analog joysticks. - Technically, this isn't really used by the Joystick class at all, - but it seemed like the best place to put it. - */ - static void setDeadZone(int deadzone); - inline static int deadzone() { return _DEAD_ZONE; } - - private: - // Pre-compute the events we care about based on given port - // This will eliminate test for left or right port in update() - Event::Type myUpEvent, myDownEvent, myLeftEvent, myRightEvent, - myXAxisValue, myYAxisValue, myFireEvent; - - static int _DEAD_ZONE; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Keyboard.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Keyboard.cpp deleted file mode 100644 index ad2b6b4b16..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Keyboard.cpp +++ /dev/null @@ -1,133 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Keyboard.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include "Event.hxx" -#include "Keyboard.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Keyboard::Keyboard(Jack jack, const Event& event, const System& system) - : Controller(jack, event, system, Controller::Keyboard), - myPinState(0) -{ - if(myJack == Left) - { - myOneEvent = Event::KeyboardZero1; - myTwoEvent = Event::KeyboardZero2; - myThreeEvent = Event::KeyboardZero3; - myFourEvent = Event::KeyboardZero4; - myFiveEvent = Event::KeyboardZero5; - mySixEvent = Event::KeyboardZero6; - mySevenEvent = Event::KeyboardZero7; - myEightEvent = Event::KeyboardZero8; - myNineEvent = Event::KeyboardZero9; - myStarEvent = Event::KeyboardZeroStar; - myZeroEvent = Event::KeyboardZero0; - myPoundEvent = Event::KeyboardZeroPound; - } - else - { - myOneEvent = Event::KeyboardOne1; - myTwoEvent = Event::KeyboardOne2; - myThreeEvent = Event::KeyboardOne3; - myFourEvent = Event::KeyboardOne4; - myFiveEvent = Event::KeyboardOne5; - mySixEvent = Event::KeyboardOne6; - mySevenEvent = Event::KeyboardOne7; - myEightEvent = Event::KeyboardOne8; - myNineEvent = Event::KeyboardOne9; - myStarEvent = Event::KeyboardOneStar; - myZeroEvent = Event::KeyboardOne0; - myPoundEvent = Event::KeyboardOnePound; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Keyboard::~Keyboard() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Keyboard::write(DigitalPin pin, bool value) -{ - // Change the pin state based on value - switch(pin) - { - case One: - myPinState = (myPinState & 0x0E) | (value ? 0x01 : 0x00); - break; - - case Two: - myPinState = (myPinState & 0x0D) | (value ? 0x02 : 0x00); - break; - - case Three: - myPinState = (myPinState & 0x0B) | (value ? 0x04 : 0x00); - break; - - case Four: - myPinState = (myPinState & 0x07) | (value ? 0x08 : 0x00); - break; - - default: - break; - } - - // State has probably changed, so recalculate it - update(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Keyboard::update() -{ - myDigitalPinState[One] = (myPinState & 0x01); - myDigitalPinState[Two] = (myPinState & 0x02); - myDigitalPinState[Three] = (myPinState & 0x04); - myDigitalPinState[Four] = (myPinState & 0x08); - - // Set defaults - myDigitalPinState[Six] = true; - myAnalogPinValue[Five] = minimumResistance; - myAnalogPinValue[Nine] = minimumResistance; - - // Now scan the rows and columns - if(!(myPinState & 0x08)) - { - myDigitalPinState[Six] = (myEvent.get(myPoundEvent) == 0); - if(myEvent.get(myZeroEvent) != 0) myAnalogPinValue[Five] = maximumResistance; - if(myEvent.get(myStarEvent) != 0) myAnalogPinValue[Nine] = maximumResistance; - } - if(!(myPinState & 0x04)) - { - myDigitalPinState[Six] = (myEvent.get(myNineEvent) == 0); - if(myEvent.get(myEightEvent) != 0) myAnalogPinValue[Five] = maximumResistance; - if(myEvent.get(mySevenEvent) != 0) myAnalogPinValue[Nine] = maximumResistance; - } - if(!(myPinState & 0x02)) - { - myDigitalPinState[Six] = (myEvent.get(mySixEvent) == 0); - if(myEvent.get(myFiveEvent) != 0) myAnalogPinValue[Five] = maximumResistance; - if(myEvent.get(myFourEvent) != 0) myAnalogPinValue[Nine] = maximumResistance; - } - if(!(myPinState & 0x01)) - { - myDigitalPinState[Six] = (myEvent.get(myThreeEvent) == 0); - if(myEvent.get(myTwoEvent) != 0) myAnalogPinValue[Five] = maximumResistance; - if(myEvent.get(myOneEvent) != 0) myAnalogPinValue[Nine] = maximumResistance; - } -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Keyboard.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Keyboard.hxx deleted file mode 100644 index e7bc4cf7ca..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Keyboard.hxx +++ /dev/null @@ -1,79 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Keyboard.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef KEYBOARD_HXX -#define KEYBOARD_HXX - -#include "bspf.hxx" -#include "Control.hxx" -#include "Event.hxx" - -/** - The standard Atari 2600 keyboard controller - - @author Bradford W. Mott - @version $Id: Keyboard.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class Keyboard : public Controller -{ - public: - /** - Create a new keyboard controller plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - */ - Keyboard(Jack jack, const Event& event, const System& system); - - /** - Destructor - */ - virtual ~Keyboard(); - - public: - /** - Write the given value to the specified digital pin for this - controller. Writing is only allowed to the pins associated - with the PIA. Therefore you cannot write to pin six. - - @param pin The pin of the controller jack to write to - @param value The value to write to the pin - */ - void write(DigitalPin pin, bool value); - - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - private: - // State of the output pins - uInt8 myPinState; - - // Pre-compute the events we care about based on given port - // This will eliminate test for left or right port in update() - Event::Type myOneEvent, myTwoEvent, myThreeEvent, - myFourEvent, myFiveEvent, mySixEvent, - mySevenEvent, myEightEvent, myNineEvent, - myStarEvent, myZeroEvent, myPoundEvent; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/KidVid.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/KidVid.cpp deleted file mode 100644 index 56e33bbc85..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/KidVid.cpp +++ /dev/null @@ -1,484 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: KidVid.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include - -#include "KidVid.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -KidVid::KidVid(Jack jack, const Event& event, const System& system, - const string& rommd5) - : Controller(jack, event, system, Controller::KidVid), - myEnabled(myJack == Right), - myFileOpened(false), - mySongCounter(0), - myTape(0) -{ - // Right now, there are only two games that use the KidVid - if(rommd5 == "ee6665683ebdb539e89ba620981cb0f6") - myGame = KVBBEARS; // Berenstain Bears - else if(rommd5 == "a204cd4fb1944c86e800120706512a64") - myGame = KVSMURFS; // Smurfs Save the Day - else - myEnabled = false; - - // Analog pins are never used by the KidVid controller - // (at least not in this implementation) - myAnalogPinValue[Five] = myAnalogPinValue[Nine] = maximumResistance; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -KidVid::~KidVid() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void KidVid::update() -{ - if(!myEnabled) - return; - -/* TODO - tie system reset into the 'rewind' action - if (KeyTable[KeyF1]) - { - KidVidTape = 0; // "rewind Kid Vid tape - kv_CloseSampleFile(); - } -*/ - if(myEvent.get(Event::KeyboardZero1)) - { - myTape = 2; - myIdx = myGame == KVBBEARS ? KVBLOCKBITS : 0; - myBlockIdx = KVBLOCKBITS; - myBlock = 0; - openSampleFile(); - } - else if(myEvent.get(Event::KeyboardZero2)) - { - myTape = 3; - myIdx = myGame == KVBBEARS ? KVBLOCKBITS : 0; - myBlockIdx = KVBLOCKBITS; - myBlock = 0; - openSampleFile(); - } - else if(myEvent.get(Event::KeyboardZero3)) - { - if(myGame == KVBBEARS) /* Berenstain Bears ? */ - { - myTape = 4; - myIdx = KVBLOCKBITS; - } - else /* no, Smurf Save The Day */ - { - myTape = 1; - myIdx = 0; - } - myBlockIdx = KVBLOCKBITS; - myBlock = 0; - openSampleFile(); - } - - // Convert separate pin states into a 'register' - uInt8 IOPortA = 0xf0; - if(myDigitalPinState[One]) IOPortA |= 0x01; - if(myDigitalPinState[Two]) IOPortA |= 0x02; - if(myDigitalPinState[Three]) IOPortA |= 0x04; - if(myDigitalPinState[Four]) IOPortA |= 0x08; - - // Is the tape running? - if((myTape != 0) && ((IOPortA & 0x01) == 0x01) && !myTapeBusy) - { - IOPortA = (IOPortA & 0xf7) | (((ourKVData[myIdx >> 3] << (myIdx & 0x07)) & 0x80) >> 4); - - // increase to next bit - myIdx++; - myBlockIdx--; - - // increase to next block (byte) - if(myBlockIdx == 0) - { - if(myBlock == 0) - myIdx = ((myTape * 6) + 12 - KVBLOCKS) * 8; //KVData00-KVData=12 - else - { - if(myGame == KVSMURFS) - { - if(myBlock >= ourKVBlocks[myTape - 1]) - myIdx = 42 * 8; //KVData80-KVData=42 - else - { - myIdx = 36 * 8;//KVPause-KVData=36 - setNextSong(); - } - } - else - { - if(myBlock >= ourKVBlocks[myTape + 2 - 1]) - myIdx = 42 * 8; //KVData80-KVData=42 - else - { - myIdx = 36 * 8;//KVPause-KVData=36 - setNextSong(); - } - } - } - myBlock++; - myBlockIdx = KVBLOCKBITS; - } - } - - // Now convert the register back into separate boolean values - myDigitalPinState[One] = IOPortA & 0x01; - myDigitalPinState[Two] = IOPortA & 0x02; - myDigitalPinState[Three] = IOPortA & 0x04; - myDigitalPinState[Four] = IOPortA & 0x08; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void KidVid::openSampleFile() -{ - static const char* kvNameTable[6] = { - "KVS3.WAV", "KVS1.WAV", "KVS2.WAV", "KVB3.WAV", "KVB1.WAV", "KVB2.WAV" - }; - static uInt32 StartSong[6] = { - 44+38, 0, 44, 44+38+42+62+80, 44+38+42, 44+38+42+62 - }; - - // TODO - add code here to immediately return if no sound should be output - - if(!myFileOpened) - { - int i = myGame == KVSMURFS ? 0 : 3; - i += myTape - 1; - if(myTape == 4) i -= 3; - - mySampleFile = fopen(kvNameTable[i], "rb"); - if(mySampleFile != NULL) - { - mySharedSampleFile = fopen("KVSHARED.WAV", "rb"); - if(mySharedSampleFile == NULL) - { - fclose(mySampleFile); - myFileOpened = false; - } - else - { - myFileOpened = true; - fseek(mySampleFile, 45, SEEK_SET); - } - } - else - myFileOpened = false; - - mySongCounter = 0; - myTapeBusy = false; - myFilePointer = StartSong[i]; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void KidVid::closeSampleFile() -{ - if(myFileOpened) - { - fclose(mySampleFile); - fclose(mySharedSampleFile); - myFileOpened = false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void KidVid::setNextSong() -{ - if(myFileOpened) - { - myBeep = (ourSongPositions[myFilePointer] & 0x80) ? false : true; - - uInt8 temp = ourSongPositions[myFilePointer] & 0x7f; - mySharedData = (temp < 10); - mySongCounter = ourSongStart[temp+1] - ourSongStart[temp]; - - if(mySharedData) - fseek(mySharedSampleFile, ourSongStart[temp], SEEK_SET); - else - fseek(mySampleFile, ourSongStart[temp], SEEK_SET); - - myFilePointer++; - myTapeBusy = true; - } - else - { - myBeep = true; - myTapeBusy = true; - mySongCounter = 80*262; /* delay needed for Harmony without tape */ - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void KidVid::getNextSampleByte() -{ -/* -static int oddeven = 0; - if(kv_SongCounter==0) SampleByte = (db) 0x80; - else{ - oddeven=oddeven^1; - if(oddeven&1){ - kv_SongCounter--; - if((kv_SongCounter>262*48)||(kv_Beep==0)) kv_TapeBusy=1; - else kv_TapeBusy=0; - if(FileOpened){ - if(kv_SharedData) SampleByte=getc(SharedSampleFile); - else SampleByte=getc(SampleFile); - }else SampleByte = (db) 0x80; - if((kv_Beep==0)&&(kv_SongCounter==0)) kv_SetNextSong(); - } - } -*/ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8 KidVid::ourKVBlocks[6] = { - 2+40, 2+21, 2+35, /* Smurfs tapes 3, 1, 2 */ - 42+60, 42+78, 42+60 /* BBears tapes 1, 2, 3 (40 extra blocks for intro) */ -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8 KidVid::ourKVData[6*8] = { -/* KVData44 */ - 0x7b, // 0111 1011b ; (1)0 - 0x1e, // 0001 1110b ; 1 - 0xc6, // 1100 0110b ; 00 - 0x31, // 0011 0001b ; 01 - 0xec, // 1110 1100b ; 0 - 0x60, // 0110 0000b ; 0+ - -/* KVData48 */ - 0x7b, // 0111 1011b ; (1)0 - 0x1e, // 0001 1110b ; 1 - 0xc6, // 1100 0110b ; 00 - 0x3d, // 0011 1101b ; 10 - 0x8c, // 1000 1100b ; 0 - 0x60, // 0110 0000b ; 0+ - -/* KVData00 */ - 0xf6, // 1111 0110b - 0x31, // 0011 0001b - 0x8c, // 1000 1100b - 0x63, // 0110 0011b - 0x18, // 0001 1000b - 0xc0, // 1100 0000b - -/* KVData01 */ - 0xf6, // 1111 0110b - 0x31, // 0011 0001b - 0x8c, // 1000 1100b - 0x63, // 0110 0011b - 0x18, // 0001 1000b - 0xf0, // 1111 0000b - -/* KVData02 */ - 0xf6, // 1111 0110b - 0x31, // 0011 0001b - 0x8c, // 1000 1100b - 0x63, // 0110 0011b - 0x1e, // 0001 1110b - 0xc0, // 1100 0000b - -/* KVData03 */ - 0xf6, // 1111 0110b - 0x31, // 0011 0001b - 0x8c, // 1000 1100b - 0x63, // 0110 0011b - 0x1e, // 0001 1110b - 0xf0, // 1111 0000b - -/* KVPause */ - 0x3f, // 0011 1111b - 0xf0, // 1111 0000b - 0x00, // 0000 0000b - 0x00, // 0000 0000b - 0x00, // 0000 0000b - 0x00, // 0000 0000b - -/* KVData80 */ - 0xf7, // 1111 0111b ; marks end of tape (green/yellow screen) - 0xb1, // 1011 0001b - 0x8c, // 1000 1100b - 0x63, // 0110 0011b - 0x18, // 0001 1000b - 0xc0 // 1100 0000b -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8 KidVid::ourSongPositions[44+38+42+62+80+62] = { -/* kvs1 44 */ - 11, 12+0x80, 13+0x80, 14, 15+0x80, 16, 8+0x80, 17, 18+0x80, 19, 20+0x80, - 21, 8+0x80, 22, 15+0x80, 23, 18+0x80, 14, 20+0x80, 16, 18+0x80, - 17, 15+0x80, 19, 8+0x80, 21, 20+0x80, 22, 18+0x80, 23, 15+0x80, - 14, 20+0x80, 16, 8+0x80, 22, 15+0x80, 23, 18+0x80, 14, 20+0x80, - 16, 8+0x80, 9, - -/* kvs2 38 */ - 25+0x80, 26, 27, 28, 8, 29, 30, 26, 27, 28, 8, 29, 30, 26, 27, 28, 8, 29, - 30, 26, 27, 28, 8, 29, 30, 26, 27, 28, 8, 29, 30, 26, 27, 28, 8, 29, - 30+0x80, 9, - -/* kvs3 42 */ - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 34, 42, 36, 43, 40, 39, 38, 37, - 34, 43, 36, 39, 40, 37, 38, 43, 34, 37, 36, 43, 40, 39, 38, 37, 34, 43, - 36, 39, 40, 37, 38+0x80, 9, - -/* kvb1 62 */ - 0, 1, 45, 2, 3, 46, 4, 5, 47, 6, 7, 48, 4, 3, 49, 2, 1, 50, 6, 7, 51, - 4, 5, 52, 6, 1, 53, 2, 7, 54, 6, 5, 45, 2, 1, 46, 4, 3, 47, 2, 5, 48, - 4, 7, 49, 6, 1, 50, 2, 5, 51, 6, 3, 52, 4, 7, 53, 2, 1, 54, 6+0x80, 9, - -/* kvb2 80 */ - 0, 1, 56, 4, 3, 57, 2, 5, 58, 6, 7, 59, 2, 3, 60, 4, 1, 61, 6, 7, 62, - 2, 5, 63, 6, 1, 64, 4, 7, 65, 6, 5, 66, 4, 1, 67, 2, 3, 68, 6, 5, 69, - 2, 7, 70, 4, 1, 71, 2, 5, 72, 4, 3, 73, 6, 7, 74, 2, 1, 75, 6, 3, 76, - 4, 5, 77, 6, 7, 78, 2, 3, 79, 4, 1, 80, 2, 7, 81, 4+0x80, 9, - -/* kvb3 62 */ - 0, 1, 83, 2, 3, 84, 4, 5, 85, 6, 7, 86, 4, 3, 87, 2, 1, 88, 6, 7, 89, - 2, 5, 90, 6, 1, 91, 4, 7, 92, 6, 5, 93, 4, 1, 94, 2, 3, 95, 6, 5, 96, - 2, 7, 97, 4, 1, 98, 6, 5, 99, 4, 3, 100, 2, 7, 101, 4, 1, 102, 2+0x80, 9 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt32 KidVid::ourSongStart[104] = { -/* kvshared */ - 44, /* Welcome + intro Berenstain Bears */ - 980829, /* boulders in the road */ - 1178398, /* standing ovations */ - 1430063, /* brother bear */ - 1691136, /* good work */ - 1841665, /* crossing a bridge */ - 2100386, /* not bad (applause) */ - 2283843, /* ourgame */ - 2629588, /* start the parade */ - 2824805, /* rewind */ - 3059116, - -/* kvs1 */ - 44, /* Harmony into 1 */ - 164685, /* falling notes (into 2) */ - 395182, /* instructions */ - 750335, /* high notes are high */ - 962016, /* my hat's off to you */ - 1204273, /* 1 2 3 do re mi */ - 1538258, /* Harmony */ - 1801683, /* concratulations (all of the Smurfs voted) */ - 2086276, /* line or space */ - 2399093, /* hooray */ - 2589606, /* hear yeeh */ - 2801287, /* over the river */ - 3111752, /* musical deduction */ - 3436329, - -/* kvs2 */ - 44, /* Handy intro + instructions */ - 778557, /* place in shape */ - 1100782, /* sailor mate + whistle */ -// 1281887, - 1293648, /* attention */ - 1493569, /* colours */ - 1801682, /* congratulations (Handy and friends voted) */ - 2086275, - -/* kvs3 */ - 44, /* Greedy and Clumsy intro + instructions */ - 686829, /* red */ - 893806, /* don't count your chicken */ - 1143119, /* yellow */ - 1385376, /* thank you */ - 1578241, /* mixin' and matchin' */ - 1942802, /* fun / colour shake */ - 2168595, /* colours can be usefull */ - 2493172, /* hip hip horay */ - 2662517, /* green */ - 3022374, /* purple */ - 3229351, /* white */ - 3720920, - -/* kvb1 */ - 44, /* 3 */ - 592749, /* 5 */ - 936142, /* 2 */ - 1465343, /* 4 */ - 1787568, /* 1 */ - 2145073, /* 7 */ - 2568434, /* 9 */ - 2822451, /* 8 */ - 3045892, /* 6 */ - 3709157, /* 0 */ - 4219542, - -/* kvb2 */ - 44, /* A */ - 303453, /* B */ - 703294, /* C */ - 1150175, /* D */ - 1514736, /* E */ - 2208577, /* F */ - 2511986, /* G */ - 2864787, /* H */ - 3306964, /* I */ - 3864389, /* J */ - 4148982, /* K */ - 4499431, /* L */ - 4824008, /* M */ - 5162697, /* N */ - 5581354, /* O */ - 5844779, /* P */ - 6162300, /* Q */ - 6590365, /* R */ - 6839678, /* S */ - 7225407, /* T */ - 7552336, /* U */ - 7867505, /* V */ - 8316738, /* W */ - 8608387, /* X */ - 8940020, /* Y */ - 9274005, /* Z */ - 9593878, - -/* kvb3 */ - 44, /* cat */ - 341085, /* one */ - 653902, /* red */ - 1018463, /* two */ - 1265424, /* dog */ - 1669969, /* six */ - 1919282, /* hat */ - 2227395, /* ten */ - 2535508, /* mom */ - 3057653, /* dad */ - 3375174, /* ball */ - 3704455, /* fish */ - 4092536, /* nine */ - 4487673, /* bear */ - 5026282, /* four */ - 5416715, /* bird */ - 5670732, /* tree */ - 6225805, /* rock */ - 6736190, /* book */ - 7110159, /* road */ - 7676992 -}; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/KidVid.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/KidVid.hxx deleted file mode 100644 index b505f4a139..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/KidVid.hxx +++ /dev/null @@ -1,114 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: KidVid.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef KIDVID_HXX -#define KIDVID_HXX - -#include - -#include "bspf.hxx" -#include "Control.hxx" -#include "Event.hxx" - -/** - The KidVid Voice Module, created by Coleco. This class emulates the - KVVM cassette player by mixing WAV data into the sound stream. The - WAV files are located at: - - http://www.atariage.com/2600/archives/KidVidAudio/index.html - - This code was heavily borrowed from z26. - - @author Stephen Anthony & z26 team - @version $Id: KidVid.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class KidVid : public Controller -{ - public: - /** - Create a new KidVid controller plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - @param md5sum The md5 of the ROM using this controller - */ - KidVid(Jack jack, const Event& event, const System& system, - const string& md5sum); - - /** - Destructor - */ - virtual ~KidVid(); - - public: - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - private: - // Open/close a WAV sample file - void openSampleFile(); - void closeSampleFile(); - - // Jump to next song in the sequence - void setNextSong(); - - // Generate next sample byte - // TODO - rework this, perhaps send directly to sound class - void getNextSampleByte(); - - private: - enum { - KVSMURFS = 0x44, - KVBBEARS = 0x48, - KVBLOCKS = 6, /* number of bytes / block */ - KVBLOCKBITS = KVBLOCKS*8 /* number of bits / block */ - }; - - // Whether the KidVid device is enabled (only for games that it - // supports, and if it's plugged into the right port - bool myEnabled; - - // The file handles for the WAV files - FILE *mySampleFile, *mySharedSampleFile; - - // Indicates if sample files have been successfully opened - bool myFileOpened; - - // Is the tape currently 'busy' / in use? - bool myTapeBusy; - - // TODO - document the following - uInt32 myFilePointer, mySongCounter; - bool myBeep, mySharedData; - uInt8 mySampleByte; - uInt32 myGame, myTape, myIdx, myBlock, myBlockIdx; - - // Number of blocks and data on tape - static const uInt8 ourKVBlocks[6]; - static const uInt8 ourKVData[6*8]; - - static const uInt8 ourSongPositions[44+38+42+62+80+62]; - static const uInt32 ourSongStart[104]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/MT24LC256.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/MT24LC256.cpp deleted file mode 100644 index 61caa022cd..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/MT24LC256.cpp +++ /dev/null @@ -1,394 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: MT24LC256.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include -#include -#include - -#include "System.hxx" -#include "MT24LC256.hxx" - -#define DEBUG_EEPROM 0 - -#if DEBUG_EEPROM - char jpee_msg[256]; - #define JPEE_LOG0(msg) jpee_logproc(msg) - #define JPEE_LOG1(msg,arg1) sprintf(jpee_msg,(msg),(arg1)), jpee_logproc(jpee_msg) - #define JPEE_LOG2(msg,arg1,arg2) sprintf(jpee_msg,(msg),(arg1),(arg2)), jpee_logproc(jpee_msg) -#else - #define JPEE_LOG0(msg) - #define JPEE_LOG1(msg,arg1) - #define JPEE_LOG2(msg,arg1,arg2) -#endif - -/* - State values for I2C: - 0 - Idle - 1 - Byte going to chip (shift left until bit 8 is set) - 2 - Chip outputting acknowledgement - 3 - Byte coming in from chip (shift left until lower 8 bits are clear) - 4 - Chip waiting for acknowledgement -*/ - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MT24LC256::MT24LC256(const string& filename, const System& system) - : mySystem(system), - mySDA(false), - mySCL(false), - myTimerActive(false), - myCyclesWhenTimerSet(0), - myCyclesWhenSDASet(0), - myCyclesWhenSCLSet(0), - myDataFile(filename), - myDataFileExists(false), - myDataChanged(false) -{ - // Load the data from an external file (if it exists) - ifstream in; - in.open(myDataFile.c_str(), ios_base::binary); - if(in.is_open()) - { - // Get length of file; it must be 32768 - in.seekg(0, ios::end); - if((int)in.tellg() == 32768) - { - in.seekg(0, ios::beg); - in.read((char*)myData, 32768); - myDataFileExists = true; - } - in.close(); - } - else - myDataFileExists = false; - - // Then initialize the I2C state - jpee_init(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MT24LC256::~MT24LC256() -{ - // Save EEPROM data to external file only when necessary - if(!myDataFileExists || myDataChanged) - { - ofstream out; - out.open(myDataFile.c_str(), ios_base::binary); - if(out.is_open()) - { - out.write((char*)myData, 32768); - out.close(); - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool MT24LC256::readSDA() -{ - return jpee_mdat && jpee_sdat; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void MT24LC256::writeSDA(bool state) -{ - mySDA = state; - myCyclesWhenSDASet = mySystem.cycles(); - - update(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void MT24LC256::writeSCL(bool state) -{ - mySCL = state; - myCyclesWhenSCLSet = mySystem.cycles(); - - update(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void MT24LC256::update() -{ -#define jpee_clock(x) ( (x) ? \ - (jpee_mclk = 1) : \ - (jpee_mclk && (jpee_clock_fall(),1), jpee_mclk = 0)) - -#define jpee_data(x) ( (x) ? \ - (!jpee_mdat && jpee_sdat && jpee_mclk && (jpee_data_stop(),1), jpee_mdat = 1) : \ - (jpee_mdat && jpee_sdat && jpee_mclk && (jpee_data_start(),1), jpee_mdat = 0)) - - // These pins have to be updated at the same time - // However, there's no guarantee that the writeSDA() and writeSDL() - // methods will be called at the same time or in the correct order, so - // we only do the write when they have the same 'timestamp' - if(myCyclesWhenSDASet == myCyclesWhenSCLSet) - { -#if DEBUG_EEPROM - cerr << endl << " I2C_PIN_WRITE(SCL = " << mySCL - << ", SDA = " << mySDA << ")" << " @ " << mySystem.cycles() << endl; -#endif - jpee_clock(mySCL); - jpee_data(mySDA); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void MT24LC256::systemCyclesReset() -{ - // System cycles are being reset to zero so we need to adjust - // the cycle counts we remembered - uInt32 cycles = mySystem.cycles(); - myCyclesWhenSDASet -= cycles; - myCyclesWhenSCLSet -= cycles; - myCyclesWhenTimerSet -= cycles; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void MT24LC256::jpee_init() -{ - jpee_sdat = 1; - jpee_address = 0; - jpee_state=0; - jpee_sizemask = 32767; - jpee_pagemask = 63; - jpee_smallmode = 0; - jpee_logmode = -1; - if(!myDataFileExists) - memset(myData, 0xff, 32768); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void MT24LC256::jpee_data_start() -{ - /* We have a start condition */ - if (jpee_state == 1 && (jpee_nb != 1 || jpee_pptr != 3)) - { - JPEE_LOG0("I2C_WARNING ABANDON WRITE"); - jpee_ad_known = 0; - } - if (jpee_state == 3) - { - JPEE_LOG0("I2C_WARNING ABANDON READ"); - } - if (!jpee_timercheck(0)) - { - JPEE_LOG0("I2C_START"); - jpee_state = 2; - } - else - { - JPEE_LOG0("I2C_BUSY"); - jpee_state = 0; - } - jpee_pptr = 0; - jpee_nb = 0; - jpee_packet[0] = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void MT24LC256::jpee_data_stop() -{ - int i; - - if (jpee_state == 1 && jpee_nb != 1) - { - JPEE_LOG0("I2C_WARNING ABANDON_WRITE"); - jpee_ad_known = 0; - } - if (jpee_state == 3) - { - JPEE_LOG0("I2C_WARNING ABANDON_READ"); - jpee_ad_known = 0; - } - /* We have a stop condition. */ - if (jpee_state == 1 && jpee_nb == 1 && jpee_pptr > 3) - { - jpee_timercheck(1); - JPEE_LOG2("I2C_STOP(Write %d bytes at %04X)",jpee_pptr-3,jpee_address); - if (((jpee_address + jpee_pptr-4) ^ jpee_address) & ~jpee_pagemask) - { - jpee_pptr = 4+jpee_pagemask-(jpee_address & jpee_pagemask); - JPEE_LOG1("I2C_WARNING PAGECROSSING!(Truncate to %d bytes)",jpee_pptr-3); - } - for (i=3; i> 1) & 7; - if (jpee_packet[1] != (jpee_address >> 8) && (jpee_packet[0] & 1)) - JPEE_LOG0("I2C_WARNING ADDRESS MSB CHANGED"); - jpee_nb &= 0x1A1; - } - if (jpee_nb == 0x1A0) - { - JPEE_LOG1("I2C_SENT(%02X--start write)",jpee_packet[0]); - jpee_state = 2; - jpee_sdat = 0; - } - else if (jpee_nb == 0x1A1) - { - jpee_state = 4; - JPEE_LOG2("I2C_SENT(%02X--start read @%04X)", - jpee_packet[0],jpee_address); - if (!jpee_ad_known) - JPEE_LOG0("I2C_WARNING ADDRESS IS UNKNOWN"); - jpee_sdat = 0; - } - else - { - JPEE_LOG1("I2C_WARNING ODDBALL FIRST BYTE!(%02X)",jpee_nb & 0xFF); - jpee_state = 0; - } - } - else - { - jpee_state = 2; - jpee_sdat = 0; - } - } - break; - - case 2: - if (jpee_nb) - { - if (!jpee_pptr) - { - jpee_packet[0] = (unsigned char)jpee_nb; - if (jpee_smallmode) - jpee_pptr=2; - else - jpee_pptr=1; - } - else if (jpee_pptr < 70) - { - JPEE_LOG1("I2C_SENT(%02X)",jpee_nb & 0xFF); - jpee_packet[jpee_pptr++] = (unsigned char)jpee_nb; - jpee_address = (jpee_packet[1] << 8) | jpee_packet[2]; - if (jpee_pptr > 2) - jpee_ad_known = 1; - } - else - JPEE_LOG0("I2C_WARNING OUTPUT_OVERFLOW!"); - } - jpee_sdat = 1; - jpee_nb = 1; - jpee_state=1; - break; - - case 4: - if (jpee_mdat && jpee_sdat) - { - JPEE_LOG0("I2C_READ_NAK"); - jpee_state=0; - break; - } - jpee_state=3; - jpee_nb = (myData[jpee_address & jpee_sizemask] << 1) | 1; /* Fall through */ - JPEE_LOG2("I2C_READ(%04X=%02X)",jpee_address,jpee_nb/2); - - case 3: - jpee_sdat = !!(jpee_nb & 256); - jpee_nb <<= 1; - if (!(jpee_nb & 510)) - { - jpee_state = 4; - jpee_sdat = 1; - jpee_address++; - } - break; - - default: - /* Do nothing */ - break; - } - JPEE_LOG2("I2C_CLOCK (dat=%d/%d)",jpee_mdat,jpee_sdat); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool MT24LC256::jpee_timercheck(int mode) -{ - /* - Evaluate how long the EEPROM is busy. When invoked with an argument of 1, - start a timer (probably about 5 milliseconds); when invoked with an - argument of 0, return zero if the timer has expired or non-zero if it is - still running. - */ - if(mode) // set timer - { - myCyclesWhenTimerSet = mySystem.cycles(); - return myTimerActive = true; - } - else // read timer - { - if(myTimerActive) - { - uInt32 elapsed = mySystem.cycles() - myCyclesWhenTimerSet; - myTimerActive = elapsed < (uInt32)(5000000.0 / 838.0); - } - return myTimerActive; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int MT24LC256::jpee_logproc(char const *st) -{ - cerr << " " << st << endl; - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MT24LC256::MT24LC256(const MT24LC256& c) - : mySystem(c.mySystem), - myDataFile(c.myDataFile) -{ - assert(false); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MT24LC256& MT24LC256::operator = (const MT24LC256&) -{ - assert(false); - return *this; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/MT24LC256.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/MT24LC256.hxx deleted file mode 100644 index a96675a516..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/MT24LC256.hxx +++ /dev/null @@ -1,121 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: MT24LC256.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef MT24LC256_HXX -#define MT24LC256_HXX - -class Controller; -class System; - -#include "bspf.hxx" - -/** - Emulates a Microchip Technology Inc. 24LC256, a 32KB Serial Electrically - Erasable PROM accessed using the I2C protocol. Thanks to J. Payson - (aka Supercat) for the bulk of this code. - - @author Stephen Anthony & J. Payson - @version $Id: MT24LC256.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class MT24LC256 -{ - public: - /** - Create a new 24LC256 with its data stored in the given file - - @param filename Data file containing the EEPROM data - @param system The system using the controller of this device - */ - MT24LC256(const string& filename, const System& system); - - /** - Destructor - */ - virtual ~MT24LC256(); - - public: - /** Read boolean data from the SDA line */ - bool readSDA(); - - /** Write boolean data to the SDA and SCL lines */ - void writeSDA(bool state); - void writeSCL(bool state); - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - private: - // I2C access code provided by Supercat - void jpee_init(); - void jpee_data_start(); - void jpee_data_stop(); - void jpee_clock_fall(); - int jpee_logproc(char const *st); - bool jpee_timercheck(int mode); - - void update(); - - private: - // The system of the parent controller - const System& mySystem; - - // The EEPROM data - uInt8 myData[32768]; - - // Cached state of the SDA and SCL pins on the last write - bool mySDA, mySCL; - - // Indicates that a timer has been set and hasn't expired yet - bool myTimerActive; - - // Indicates when the timer was set - uInt32 myCyclesWhenTimerSet; - - // Indicates when the SDA and SCL pins were set/written - uInt32 myCyclesWhenSDASet, myCyclesWhenSCLSet; - - // The file containing the EEPROM data - string myDataFile; - - // Indicates if a valid EEPROM data file exists/was successfully loaded - bool myDataFileExists; - - // Indicates if the EEPROM has changed since class invocation - bool myDataChanged; - - // Required for I2C functionality - int jpee_mdat, jpee_sdat, jpee_mclk; - int jpee_sizemask, jpee_pagemask, jpee_smallmode, jpee_logmode; - int jpee_pptr, jpee_state, jpee_nb; - unsigned int jpee_address, jpee_ad_known; - uInt8 jpee_packet[70]; - - private: - // Copy constructor isn't supported by this class so make it private - MT24LC256(const MT24LC256&); - - // Assignment operator isn't supported by this class so make it private - MT24LC256& operator = (const MT24LC256&); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Paddles.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Paddles.cpp deleted file mode 100644 index 5ffe9f5b70..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Paddles.cpp +++ /dev/null @@ -1,378 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Paddles.cxx 2228 2011-05-06 14:29:39Z stephena $ -//============================================================================ - -#include - -#include "Event.hxx" -#include "Paddles.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Paddles::Paddles(Jack jack, const Event& event, const System& system, - bool swapport, bool swapaxis, bool swapdir) - : Controller(jack, event, system, Controller::Paddles) -{ - // The following logic reflects that mapping paddles to different - // devices can be extremely complex - // As well, while many paddle games have horizontal movement of - // objects (which maps nicely to horizontal movement of the joystick - // or mouse), others have vertical movement - // This vertical handling is taken care of by swapping the axes - // On the other hand, some games treat paddle resistance differently, - // (ie, increasing resistance can move an object right instead of left) - // This is taken care of by swapping the direction of movement - // Arrgh, did I mention that paddles are complex ... - - // As much as possible, precompute which events we care about for - // a given port; this will speed up processing in update() - // Consider whether this is the left or right port - if(myJack == Left) - { - if(!swapport) // First paddle is 0, second is 1 - { - // These aren't affected by changes in axis orientation - myP0AxisValue = Event::SALeftAxis0Value; - myP1AxisValue = Event::SALeftAxis1Value; - myP0FireEvent1 = Event::PaddleZeroFire; - myP0FireEvent2 = Event::JoystickZeroFire1; - myP1FireEvent1 = Event::PaddleOneFire; - myP1FireEvent2 = Event::JoystickZeroFire3; - - // Direction of movement is swapped - // That is, moving in a certain direction on an axis can - // result in either increasing or decreasing paddle movement - if(!swapdir) - { - myP0DecEvent1 = Event::PaddleZeroDecrease; - myP0DecEvent2 = Event::JoystickZeroRight; - myP0IncEvent1 = Event::PaddleZeroIncrease; - myP0IncEvent2 = Event::JoystickZeroLeft; - myP1DecEvent1 = Event::PaddleOneDecrease; - myP1DecEvent2 = Event::JoystickZeroDown; - myP1IncEvent1 = Event::PaddleOneIncrease; - myP1IncEvent2 = Event::JoystickZeroUp; - } - else - { - myP0DecEvent1 = Event::PaddleZeroIncrease; - myP0DecEvent2 = Event::JoystickZeroLeft; - myP0IncEvent1 = Event::PaddleZeroDecrease; - myP0IncEvent2 = Event::JoystickZeroRight; - myP1DecEvent1 = Event::PaddleOneIncrease; - myP1DecEvent2 = Event::JoystickZeroUp; - myP1IncEvent1 = Event::PaddleOneDecrease; - myP1IncEvent2 = Event::JoystickZeroDown; - } - } - else // First paddle is 1, second is 0 - { - // These aren't affected by changes in axis orientation - myP0AxisValue = Event::SALeftAxis1Value; - myP1AxisValue = Event::SALeftAxis0Value; - myP0FireEvent1 = Event::PaddleOneFire; - myP0FireEvent2 = Event::JoystickZeroFire3; - myP1FireEvent1 = Event::PaddleZeroFire; - myP1FireEvent2 = Event::JoystickZeroFire1; - - // Direction of movement is swapped - // That is, moving in a certain direction on an axis can - // result in either increasing or decreasing paddle movement - if(!swapdir) - { - myP0DecEvent1 = Event::PaddleOneDecrease; - myP0DecEvent2 = Event::JoystickZeroDown; - myP0IncEvent1 = Event::PaddleOneIncrease; - myP0IncEvent2 = Event::JoystickZeroUp; - myP1DecEvent1 = Event::PaddleZeroDecrease; - myP1DecEvent2 = Event::JoystickZeroRight; - myP1IncEvent1 = Event::PaddleZeroIncrease; - myP1IncEvent2 = Event::JoystickZeroLeft; - } - else - { - myP0DecEvent1 = Event::PaddleOneIncrease; - myP0DecEvent2 = Event::JoystickZeroUp; - myP0IncEvent1 = Event::PaddleOneDecrease; - myP0IncEvent2 = Event::JoystickZeroDown; - myP1DecEvent1 = Event::PaddleZeroIncrease; - myP1DecEvent2 = Event::JoystickZeroLeft; - myP1IncEvent1 = Event::PaddleZeroDecrease; - myP1IncEvent2 = Event::JoystickZeroRight; - } - } - } - else // Jack is right port - { - if(!swapport) // First paddle is 2, second is 3 - { - // These aren't affected by changes in axis orientation - myP0AxisValue = Event::SARightAxis0Value; - myP1AxisValue = Event::SARightAxis1Value; - myP0FireEvent1 = Event::PaddleTwoFire; - myP0FireEvent2 = Event::JoystickOneFire1; - myP1FireEvent1 = Event::PaddleThreeFire; - myP1FireEvent2 = Event::JoystickOneFire3; - - // Direction of movement is swapped - // That is, moving in a certain direction on an axis can - // result in either increasing or decreasing paddle movement - if(!swapdir) - { - myP0DecEvent1 = Event::PaddleTwoDecrease; - myP0DecEvent2 = Event::JoystickOneRight; - myP0IncEvent1 = Event::PaddleTwoIncrease; - myP0IncEvent2 = Event::JoystickOneLeft; - myP1DecEvent1 = Event::PaddleThreeDecrease; - myP1DecEvent2 = Event::JoystickOneDown; - myP1IncEvent1 = Event::PaddleThreeIncrease; - myP1IncEvent2 = Event::JoystickOneUp; - } - else - { - myP0DecEvent1 = Event::PaddleTwoIncrease; - myP0DecEvent2 = Event::JoystickOneLeft; - myP0IncEvent1 = Event::PaddleTwoDecrease; - myP0IncEvent2 = Event::JoystickOneRight; - myP1DecEvent1 = Event::PaddleThreeIncrease; - myP1DecEvent2 = Event::JoystickOneUp; - myP1IncEvent1 = Event::PaddleThreeDecrease; - myP1IncEvent2 = Event::JoystickOneDown; - } - } - else // First paddle is 3, second is 2 - { - // These aren't affected by changes in axis orientation - myP0AxisValue = Event::SARightAxis1Value; - myP1AxisValue = Event::SARightAxis0Value; - myP0FireEvent1 = Event::PaddleThreeFire; - myP0FireEvent2 = Event::JoystickOneFire3; - myP1FireEvent1 = Event::PaddleTwoFire; - myP1FireEvent2 = Event::JoystickOneFire1; - - // Direction of movement is swapped - // That is, moving in a certain direction on an axis can - // result in either increasing or decreasing paddle movement - if(!swapdir) - { - myP0DecEvent1 = Event::PaddleThreeDecrease; - myP0DecEvent2 = Event::JoystickOneDown; - myP0IncEvent1 = Event::PaddleThreeIncrease; - myP0IncEvent2 = Event::JoystickOneUp; - myP1DecEvent1 = Event::PaddleTwoDecrease; - myP1DecEvent2 = Event::JoystickOneRight; - myP1IncEvent1 = Event::PaddleTwoIncrease; - myP1IncEvent2 = Event::JoystickOneLeft; - } - else - { - myP0DecEvent1 = Event::PaddleThreeIncrease; - myP0DecEvent2 = Event::JoystickOneUp; - myP0IncEvent1 = Event::PaddleThreeDecrease; - myP0IncEvent2 = Event::JoystickOneDown; - myP1DecEvent1 = Event::PaddleTwoIncrease; - myP1DecEvent2 = Event::JoystickOneLeft; - myP1IncEvent1 = Event::PaddleTwoDecrease; - myP1IncEvent2 = Event::JoystickOneRight; - } - } - } - - // The following are independent of whether or not the port - // is left or right - _MOUSE_SENSITIVITY = swapdir ? -abs(_MOUSE_SENSITIVITY) : - abs(_MOUSE_SENSITIVITY); - if(!swapaxis) - { - myAxisMouseMotion = Event::MouseAxisXValue; - myAxisDigitalZero = 0; - myAxisDigitalOne = 1; - } - else - { - myAxisMouseMotion = Event::MouseAxisYValue; - myAxisDigitalZero = 1; - myAxisDigitalOne = 0; - } - - // Digital pins 1, 2 and 6 are not connected - myDigitalPinState[One] = - myDigitalPinState[Two] = - myDigitalPinState[Six] = true; - - // Digital emulation of analog paddle movement - myKeyRepeat0 = myKeyRepeat1 = false; - myPaddleRepeat0 = myPaddleRepeat1 = myLastAxisX = myLastAxisY = 0; - - myCharge[0] = myCharge[1] = myLastCharge[0] = myLastCharge[1] = 0; - - // Paranoid mode: defaults for the global variables should be set - // before the first instance of this class is instantiated - assert(_DIGITAL_SENSITIVITY != -1 && _MOUSE_SENSITIVITY != -1); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Paddles::~Paddles() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Paddles::update() -{ - myDigitalPinState[Three] = myDigitalPinState[Four] = true; - - // Digital events (from keyboard or joystick hats & buttons) - myDigitalPinState[Three] = - (myEvent.get(myP1FireEvent1) == 0 && myEvent.get(myP1FireEvent2) == 0); - myDigitalPinState[Four] = - (myEvent.get(myP0FireEvent1) == 0 && myEvent.get(myP0FireEvent2) == 0); - - // Paddle movement is a very difficult thing to accurately emulate, - // since it originally came from an analog device that had very - // peculiar behaviour - // Compounding the problem is the fact that we'd like to emulate - // movement with 'digital' data (like from a keyboard or a digital - // joystick axis), but also from a mouse (relative values) - // and Stelladaptor-like devices (absolute analog values clamped to - // a certain range) - // And to top it all off, we don't want one devices input to conflict - // with the others ... - - // Analog axis events from Stelladaptor-like devices - // These devices generate data in the range -32768 to 32767, - // so we have to scale appropriately - // Since these events are generated and stored indefinitely, - // we only process the first one we see (when it differs from - // previous values by a pre-defined amount) - // Otherwise, it would always override input from digital and mouse - bool sa_changed = false; - int sa_xaxis = myEvent.get(myP0AxisValue); - int sa_yaxis = myEvent.get(myP1AxisValue); - if(abs(myLastAxisX - sa_xaxis) > 10) - { - myAnalogPinValue[Nine] = (Int32)(1400000 * - (float)(32767 - (Int16)sa_xaxis) / 65536.0); - sa_changed = true; - } - if(abs(myLastAxisY - sa_yaxis) > 10) - { - myAnalogPinValue[Five] = (Int32)(1400000 * - (float)(32767 - (Int16)sa_yaxis) / 65536.0); - sa_changed = true; - } - myLastAxisX = sa_xaxis; - myLastAxisY = sa_yaxis; - if(sa_changed) - return; - - // Mouse motion events give relative movement - // That is, they're only relevant if they're non-zero - if((myJack == Left && ourControlNum <= 1) || - (myJack == Right && ourControlNum > 1)) - { - int num = ourControlNum & 0x01; - myCharge[num] -= - ((myEvent.get(myAxisMouseMotion) >> 1) * _MOUSE_SENSITIVITY); - if(myCharge[num] < TRIGMIN) - myCharge[num] = TRIGMIN; - if(myCharge[num] > TRIGMAX) - myCharge[num] = TRIGMAX; - if(myEvent.get(Event::MouseButtonValue)) - myDigitalPinState[ourButtonPin[num]] = false; - } - - // Finally, consider digital input, where movement happens - // until a digital event is released - if(myKeyRepeat0) - { - myPaddleRepeat0++; - if(myPaddleRepeat0 > _DIGITAL_SENSITIVITY) - myPaddleRepeat0 = _DIGITAL_DISTANCE; - } - if(myKeyRepeat1) - { - myPaddleRepeat1++; - if(myPaddleRepeat1 > _DIGITAL_SENSITIVITY) - myPaddleRepeat1 = _DIGITAL_DISTANCE; - } - - myKeyRepeat0 = false; - myKeyRepeat1 = false; - - if(myEvent.get(myP0DecEvent1) || myEvent.get(myP0DecEvent2)) - { - myKeyRepeat0 = true; - if(myCharge[myAxisDigitalZero] > myPaddleRepeat0) - myCharge[myAxisDigitalZero] -= myPaddleRepeat0; - } - if(myEvent.get(myP0IncEvent1) || myEvent.get(myP0IncEvent2)) - { - myKeyRepeat0 = true; - if((myCharge[myAxisDigitalZero] + myPaddleRepeat0) < TRIGMAX) - myCharge[myAxisDigitalZero] += myPaddleRepeat0; - } - if(myEvent.get(myP1DecEvent1) || myEvent.get(myP1DecEvent2)) - { - myKeyRepeat1 = true; - if(myCharge[myAxisDigitalOne] > myPaddleRepeat1) - myCharge[myAxisDigitalOne] -= myPaddleRepeat1; - } - if(myEvent.get(myP1IncEvent1) || myEvent.get(myP1IncEvent2)) - { - myKeyRepeat1 = true; - if((myCharge[myAxisDigitalOne] + myPaddleRepeat1) < TRIGMAX) - myCharge[myAxisDigitalOne] += myPaddleRepeat1; - } - - // Only change state if the charge has actually changed - if(myCharge[1] != myLastCharge[1]) - myAnalogPinValue[Five] = - (Int32)(1400000 * (myCharge[1] / float(TRIGRANGE))); - if(myCharge[0] != myLastCharge[0]) - myAnalogPinValue[Nine] = - (Int32)(1400000 * (myCharge[0] / float(TRIGRANGE))); - - myLastCharge[1] = myCharge[1]; - myLastCharge[0] = myCharge[0]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Paddles::setDigitalSensitivity(int sensitivity) -{ - if(sensitivity < 1) sensitivity = 1; - else if(sensitivity > 10) sensitivity = 10; - - _DIGITAL_SENSITIVITY = sensitivity; - _DIGITAL_DISTANCE = 20 + (sensitivity << 3); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Paddles::setMouseSensitivity(int sensitivity) -{ - if(sensitivity < 1) sensitivity = 1; - else if(sensitivity > 15) sensitivity = 15; - - _MOUSE_SENSITIVITY = sensitivity; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int Paddles::_DIGITAL_SENSITIVITY = -1; -int Paddles::_DIGITAL_DISTANCE = -1; -int Paddles::_MOUSE_SENSITIVITY = -1; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const Controller::DigitalPin Paddles::ourButtonPin[2] = { Four, Three }; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Paddles.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Paddles.hxx deleted file mode 100644 index f79676c57d..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Paddles.hxx +++ /dev/null @@ -1,115 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Paddles.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef PADDLES_HXX -#define PADDLES_HXX - -#include "bspf.hxx" -#include "Control.hxx" -#include "Event.hxx" - -/** - The standard Atari 2600 pair of paddle controllers. - - @author Bradford W. Mott - @version $Id: Paddles.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class Paddles : public Controller -{ - public: - /** - Create a new pair of paddle controllers plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - - @param swapport Whether to swap the paddles plugged into this jack - @param swapaxis Whether to swap the axis on the paddle (x <-> y) - @param swapdir Whether to swap the direction for which an axis - causes movement (lesser axis values cause paddle - resistance to decrease instead of increase) - */ - Paddles(Jack jack, const Event& event, const System& system, - bool swapport, bool swapaxis, bool swapdir); - - /** - Destructor - */ - virtual ~Paddles(); - - public: - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - /** - Sets the sensitivity for digital emulation of paddle movement. - This is only used for *digital* events (ie, buttons or keys, - or digital joystick axis events); Stelladaptors or the mouse are - not modified. - - @param sensitivity Value from 1 to 10, with larger values - causing more movement - */ - static void setDigitalSensitivity(int sensitivity); - - /** - Sets the sensitivity for analog emulation of paddle movement - using a mouse. - - @param sensitivity Value from 1 to 10, with larger values - causing more movement - */ - static void setMouseSensitivity(int sensitivity); - - private: - // Range of values over which digital and mouse movement is scaled - // to paddle resistance - enum { - TRIGRANGE = 4096, - TRIGMAX = 3856, - TRIGMIN = 1 - }; - - // Pre-compute the events we care about based on given port - // This will eliminate test for left or right port in update() - Event::Type myP0AxisValue, myP1AxisValue, - myP0DecEvent1, myP0DecEvent2, myP0IncEvent1, myP0IncEvent2, - myP1DecEvent1, myP1DecEvent2, myP1IncEvent1, myP1IncEvent2, - myP0FireEvent1, myP0FireEvent2, myP1FireEvent1, myP1FireEvent2, - myAxisMouseMotion; - - bool myKeyRepeat0, myKeyRepeat1; - int myPaddleRepeat0, myPaddleRepeat1; - int myCharge[2], myLastCharge[2]; - int myLastAxisX, myLastAxisY; - int myAxisDigitalZero, myAxisDigitalOne; - - static int _DIGITAL_SENSITIVITY, _DIGITAL_DISTANCE; - static int _MOUSE_SENSITIVITY; - - // Lookup table for associating paddle buttons with controller pins - // Yes, this is hideously complex - static const Controller::DigitalPin ourButtonPin[2]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SaveKey.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SaveKey.cpp deleted file mode 100644 index d20385f405..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SaveKey.cpp +++ /dev/null @@ -1,91 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: SaveKey.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include "MT24LC256.hxx" -#include "System.hxx" -#include "SaveKey.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SaveKey::SaveKey(Jack jack, const Event& event, const System& system, - const string& eepromfile) - : Controller(jack, event, system, Controller::SaveKey), - myEEPROM(NULL) -{ - myEEPROM = new MT24LC256(eepromfile, system); - - myDigitalPinState[One] = myDigitalPinState[Two] = true; - myAnalogPinValue[Five] = myAnalogPinValue[Nine] = maximumResistance; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SaveKey::~SaveKey() -{ - delete myEEPROM; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool SaveKey::read(DigitalPin pin) -{ - // We need to override the Controller::read() method, since the timing - // of the actual read is important for the EEPROM (we can't just read - // 60 times per second in the ::update() method) - switch(pin) - { - // Pin 3: EEPROM SDA - // input data from the 24LC256 EEPROM using the I2C protocol - case Three: - return myDigitalPinState[Three] = myEEPROM->readSDA(); - - default: - return Controller::read(pin); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SaveKey::write(DigitalPin pin, bool value) -{ - // Change the pin state based on value - switch(pin) - { - // Pin 3: EEPROM SDA - // output data to the 24LC256 EEPROM using the I2C protocol - case Three: - myDigitalPinState[Three] = value; - myEEPROM->writeSDA(value); - break; - - // Pin 4: EEPROM SCL - // output clock data to the 24LC256 EEPROM using the I2C protocol - case Four: - myDigitalPinState[Four] = value; - myEEPROM->writeSCL(value); - break; - - default: - break; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SaveKey::systemCyclesReset() -{ - // The EEPROM keeps track of cycle counts, and needs to know when the - // cycles are reset - myEEPROM->systemCyclesReset(); -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SaveKey.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SaveKey.hxx deleted file mode 100644 index 01b9fb7c52..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SaveKey.hxx +++ /dev/null @@ -1,93 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: SaveKey.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef SAVEKEY_HXX -#define SAVEKEY_HXX - -class MT24LC256; - -#include "Control.hxx" - -/** - Richard Hutchinson's SaveKey "controller", consisting of a 32KB EEPROM - accessible using the I2C protocol. - - This code owes a great debt to Alex Herbert's AtariVox documentation and - driver code. - - @author Stephen Anthony - @version $Id: SaveKey.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class SaveKey : public Controller -{ - public: - /** - Create a new SaveKey controller plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - @param eepromfile The file containing the EEPROM data - */ - SaveKey(Jack jack, const Event& event, const System& system, - const string& eepromfile); - - /** - Destructor - */ - virtual ~SaveKey(); - - public: - /** - Read the value of the specified digital pin for this controller. - - @param pin The pin of the controller jack to read - @return The state of the pin - */ - bool read(DigitalPin pin); - - /** - Write the given value to the specified digital pin for this - controller. Writing is only allowed to the pins associated - with the PIA. Therefore you cannot write to pin six. - - @param pin The pin of the controller jack to write to - @param value The value to write to the pin - */ - void write(DigitalPin pin, bool value); - - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update() { } - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - private: - // The EEPROM used in the SaveKey - MT24LC256* myEEPROM; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SerialPort.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SerialPort.hxx deleted file mode 100644 index e24926c406..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/SerialPort.hxx +++ /dev/null @@ -1,69 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: SerialPort.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef SERIALPORT_HXX -#define SERIALPORT_HXX - -#include "bspf.hxx" - -/** - This class provides an interface for a standard serial port. - For now, this is used when connecting a real AtariVox device, - and as such it always uses 19200, 8n1, no flow control. - - @author Stephen Anthony - @version $Id: SerialPort.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class SerialPort -{ - public: - SerialPort() { } - virtual ~SerialPort() { } - - /** - Open the given serial port with the specified attributes. - - @param device The name of the port - @return False on any errors, else true - */ - virtual bool openPort(const string& device) { return false; } - - /** - Close a previously opened serial port. - */ - virtual void closePort() { } - - /** - Read a byte from the serial port. - - @param data Destination for the byte read from the port - @return True if a byte was read, else false - */ - virtual bool readByte(uInt8* data) { return false; } - - /** - Write a byte to the serial port. - - @param data The byte to write to the port - @return True if a byte was written, else false - */ - virtual bool writeByte(const uInt8* data) { return false; } -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Switches.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Switches.cpp deleted file mode 100644 index 6f02c16514..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Switches.cpp +++ /dev/null @@ -1,139 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Switches.cxx 2228 2011-05-06 14:29:39Z stephena $ -//============================================================================ - -#include "Event.hxx" -#include "Props.hxx" -#include "Switches.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Switches::Switches(const Event& event, const Properties& properties) - : myEvent(event), - mySwitches(0xFF) -{ - if(properties.get(Console_RightDifficulty) == "B") - { - mySwitches &= ~0x80; - } - else - { - mySwitches |= 0x80; - } - - if(properties.get(Console_LeftDifficulty) == "B") - { - mySwitches &= ~0x40; - } - else - { - mySwitches |= 0x40; - } - - if(properties.get(Console_TelevisionType) == "COLOR") - { - mySwitches |= 0x08; - } - else - { - mySwitches &= ~0x08; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Switches::~Switches() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Switches::update() -{ - if(myEvent.get(Event::ConsoleColor) != 0) - { - mySwitches |= 0x08; - } - else if(myEvent.get(Event::ConsoleBlackWhite) != 0) - { - mySwitches &= ~0x08; - } - - if(myEvent.get(Event::ConsoleRightDiffA) != 0) - { - mySwitches |= 0x80; - } - else if(myEvent.get(Event::ConsoleRightDiffB) != 0) - { - mySwitches &= ~0x80; - } - - if(myEvent.get(Event::ConsoleLeftDiffA) != 0) - { - mySwitches |= 0x40; - } - else if(myEvent.get(Event::ConsoleLeftDiffB) != 0) - { - mySwitches &= ~0x40; - } - - if(myEvent.get(Event::ConsoleSelect) != 0) - { - mySwitches &= ~0x02; - } - else - { - mySwitches |= 0x02; - } - - if(myEvent.get(Event::ConsoleReset) != 0) - { - mySwitches &= ~0x01; - } - else - { - mySwitches |= 0x01; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Switches::save(Serializer& out) const -{ - try - { - out.putByte((char)mySwitches); - } - catch(...) - { - cerr << "ERROR: Switches::save() exception\n"; - return false; - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Switches::load(Serializer& in) -{ - try - { - mySwitches = (uInt8) in.getByte(); - } - catch(...) - { - cerr << "ERROR: Switches::load() exception\n"; - return false; - } - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Switches.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Switches.hxx deleted file mode 100644 index 7f89dd6ea4..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/Switches.hxx +++ /dev/null @@ -1,100 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Switches.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef SWITCHES_HXX -#define SWITCHES_HXX - -class Event; -class Properties; - -#include "Serializable.hxx" -#include "bspf.hxx" - -/** - This class represents the console switches of the game console. - - @author Bradford W. Mott - @version $Id: Switches.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Switches : public Serializable -{ - /** - Riot debug class needs special access to the underlying controller state - */ - friend class RiotDebug; - - public: - /** - Create a new set of switches using the specified events and - properties - - @param event The event object to use for events - */ - Switches(const Event& event, const Properties& properties); - - /** - Destructor - */ - virtual ~Switches(); - - public: - /** - Get the value of the console switches - - @return The 8 bits which represent the state of the console switches - */ - uInt8 read() const { return mySwitches; } - - /** - Update the switches variable - */ - void update(); - - /** - Save the current state of the switches to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of the switches from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "Switches"; } - - private: - // Reference to the event object to use - const Event& myEvent; - - // State of the console switches - uInt8 mySwitches; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/TrackBall.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/TrackBall.cpp deleted file mode 100644 index 85066d887b..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/TrackBall.cpp +++ /dev/null @@ -1,195 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TrackBall.cxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#include - -#include "Event.hxx" -#include "System.hxx" -#include "TIA.hxx" -#include "TrackBall.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TrackBall::TrackBall(Jack jack, const Event& event, const System& system, - Type type) - : Controller(jack, event, system, type), - myHCounter(0), - myVCounter(0), - myCyclesWhenSWCHARead(0) -{ - if(myJack == Left) - { - myPin1Mask = 0x10; - myPin2Mask = 0x20; - myPin3Mask = 0x40; - myPin4Mask = 0x80; - } - else - { - myPin1Mask = 0x01; - myPin2Mask = 0x02; - myPin3Mask = 0x04; - myPin4Mask = 0x08; - } - - myTrakBallCountH = myTrakBallCountV = 0; - myTrakBallLinesH = myTrakBallLinesV = 1; - - myTrakBallLeft = myTrakBallDown = myScanCountV = myScanCountH = - myCountV = myCountH = 0; - - // Analog pins are never used by the trackball controller - myAnalogPinValue[Five] = myAnalogPinValue[Nine] = maximumResistance; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TrackBall::~TrackBall() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TrackBall::read(DigitalPin pin) -{ - // Only update the controller pins when an SWCHA read is actually - // different from a previous one - // This is done since Stella tends to read several pins consecutively - // in the same processor 'cycle', and it would be incorrect to do this - // work multiple times per processor cycle - if(myCyclesWhenSWCHARead != mySystem.cycles()) - { - int scanline = ((System&)mySystem).tia().scanlines(); - - if(myScanCountV > scanline) myScanCountV = 0; - if(myScanCountH > scanline) myScanCountH = 0; - while((myScanCountV + myTrakBallLinesV) < scanline) - { - if(myTrakBallCountV) - { - if(myTrakBallDown) myCountV--; - else myCountV++; - myTrakBallCountV--; - } - myScanCountV += myTrakBallLinesV; - } - - while((myScanCountH + myTrakBallLinesH) < scanline) - { - if(myTrakBallCountH) - { - if(myTrakBallLeft) myCountH--; - else myCountH++; - myTrakBallCountH--; - } - myScanCountH += myTrakBallLinesH; - } - - myCountV &= 0x03; - myCountH &= 0x03; - - uInt8 IOPortA = 0x00; - switch(myType) - { - case Controller::TrackBall80: - IOPortA = IOPortA - | ourTrakBallTableST_V[myCountV] - | ourTrakBallTableST_H[myCountH]; - break; - case Controller::TrackBall22: - IOPortA = IOPortA - | ourTrakBallTableTB_V[myCountV & 0x01][myTrakBallDown] - | ourTrakBallTableTB_H[myCountH & 0x01][myTrakBallLeft]; - break; - case Controller::AmigaMouse: - IOPortA = IOPortA - | ourTrakBallTableAM_V[myCountV] - | ourTrakBallTableAM_H[myCountH]; - break; - default: - break; - } - - myDigitalPinState[One] = IOPortA & myPin1Mask; - myDigitalPinState[Two] = IOPortA & myPin2Mask; - myDigitalPinState[Three] = IOPortA & myPin3Mask; - myDigitalPinState[Four] = IOPortA & myPin4Mask; - } - - // Remember when the SWCHA read was issued - myCyclesWhenSWCHARead = mySystem.cycles(); - - return Controller::read(pin); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TrackBall::update() -{ - // Get the current mouse position - myHCounter = myEvent.get(Event::MouseAxisXValue); - myVCounter = myEvent.get(Event::MouseAxisYValue); - - if(myVCounter < 0) myTrakBallLeft = 1; - else myTrakBallLeft = 0; - if(myHCounter < 0) myTrakBallDown = 0; - else myTrakBallDown = 1; - myTrakBallCountH = abs(myVCounter >> 1); - myTrakBallCountV = abs(myHCounter >> 1); - myTrakBallLinesH = 200 /*LinesInFrame*/ / (myTrakBallCountH + 1); - if(myTrakBallLinesH == 0) myTrakBallLinesH = 1; - myTrakBallLinesV = 200 /*LinesInFrame*/ / (myTrakBallCountV + 1); - if(myTrakBallLinesV == 0) myTrakBallLinesV = 1; - - // Get mouse button state - myDigitalPinState[Six] = (myEvent.get(Event::MouseButtonValue) == 0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TrackBall::systemCyclesReset() -{ - myCyclesWhenSWCHARead -= mySystem.cycles(); -} - - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt32 TrackBall::ourTrakBallTableTB_H[2][2] = { - { 0x40, 0x00 }, { 0xc0, 0x80 } -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt32 TrackBall::ourTrakBallTableTB_V[2][2] = { - { 0x00, 0x10 }, { 0x20, 0x30 } -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt32 TrackBall::ourTrakBallTableST_H[4] = { - 0x00, 0x80, 0xc0, 0x40 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt32 TrackBall::ourTrakBallTableST_V[4] = { - 0x00, 0x10, 0x30, 0x20 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt32 TrackBall::ourTrakBallTableAM_H[4] = { - 0x00, 0x10, 0x50, 0x40 -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt32 TrackBall::ourTrakBallTableAM_V[4] = { - 0x00, 0x80, 0xa0, 0x20 -}; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/TrackBall.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/TrackBall.hxx deleted file mode 100644 index 99df5f9edd..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/input/TrackBall.hxx +++ /dev/null @@ -1,119 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TrackBall.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef TRACKBALL_HXX -#define TRACKBALL_HXX - -#include "bspf.hxx" -#include "Control.hxx" -#include "Event.hxx" - -/** - The various trackball-like controllers supported by the Atari 2600. - They're all placed in one class, since other than a few minor - differences, they work almost exactly the same. This code was - heavily borrowed from z26. - - The supported controllers include: - TrackBall22: Atari 2600 CX-22 Trakball - TrackBall80: Atari ST CX-80 Trakball - AmigaMouse: Amiga Mouse - - @author Stephen Anthony & z26 team - @version $Id: TrackBall.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class TrackBall : public Controller -{ - public: - /** - Create a new TrackBall controller plugged into the specified jack - - @param jack The jack the controller is plugged into - @param event The event object to use for events - @param system The system using this controller - @param type The type of trackball controller - */ - TrackBall(Jack jack, const Event& event, const System& system, Type type); - - /** - Destructor - */ - virtual ~TrackBall(); - - public: - /** - Read the value of the specified digital pin for this controller. - - @param pin The pin of the controller jack to read - @return The state of the pin - */ - bool read(DigitalPin pin); - - /** - Update the entire digital and analog pin state according to the - events currently set. - */ - void update(); - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - private: - // Counter to iterate through the gray codes - int myHCounter, myVCounter; - - // Indicates the processor cycle when SWCHA was last read - uInt32 myCyclesWhenSWCHARead; - - // Masks to indicate how to access the pins (differentiate between - // left and right ports) - uInt8 myPin1Mask, myPin2Mask, myPin3Mask, myPin4Mask; - - // How many new horizontal and vertical values this frame - int myTrakBallCountH, myTrakBallCountV; - - // How many lines to wait before sending new horz and vert val - int myTrakBallLinesH, myTrakBallLinesV; - - // Was TrakBall moved left or moved right instead - int myTrakBallLeft; - - // Was TrakBall moved down or moved up instead - int myTrakBallDown; - - int myScanCountH, myScanCountV, myCountH, myCountV; - - // CX-22 - static const uInt32 ourTrakBallTableTB_H[2][2]; - static const uInt32 ourTrakBallTableTB_V[2][2]; - - // ST mouse / CX-80 - static const uInt32 ourTrakBallTableST_H[4]; - static const uInt32 ourTrakBallTableST_V[4]; - - // Amiga mouse - static const uInt32 ourTrakBallTableAM_H[4]; - static const uInt32 ourTrakBallTableAM_V[4]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/main.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/main.cpp deleted file mode 100644 index 2291ffdb88..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/main.cpp +++ /dev/null @@ -1,549 +0,0 @@ -#include "stella.h" -#include "../md5.h" -#include "../mempatcher.h" -#include "../player.h" - -#include -#include -#include -#include -#include - -#include "Settings.hxx" -#include "TIA.hxx" -#include "Props.hxx" -#include "PropsSet.hxx" -#include "Cart.hxx" -#include "Console.hxx" -#include "Serializer.hxx" -#include "Event.hxx" -#include "Switches.hxx" -#include "MD5.hxx" -#include "SoundSDL.hxx" - -namespace MDFN_IEN_WSWAN -{ - - -int wsc = 1; /*color/mono*/ -uint32 rom_size; - -uint16 WSButtonStatus; - - -static bool IsWSR; -static uint8 WSRCurrentSong; - -static void Reset(void) -{ - int u0; - - v30mz_reset(); /* Reset CPU */ - WSwan_MemoryReset(); - WSwan_GfxReset(); - WSwan_SoundReset(); - WSwan_InterruptReset(); - WSwan_RTCReset(); - WSwan_EEPROMReset(); - - for(u0=0;u0<0xc9;u0++) - { - if(u0 != 0xC4 && u0 != 0xC5 && u0 != 0xBA && u0 != 0xBB) - WSwan_writeport(u0,startio[u0]); - } - - v30mz_set_reg(NEC_SS,0); - v30mz_set_reg(NEC_SP,0x2000); - - if(IsWSR) - { - v30mz_set_reg(NEC_AW, WSRCurrentSong); - } -} - -static uint8 *chee; -static void Emulate(EmulateSpecStruct *espec) -{ - espec->DisplayRect.x = 0; - espec->DisplayRect.y = 0; - espec->DisplayRect.w = 224; - espec->DisplayRect.h = 144; - - if(espec->VideoFormatChanged) - WSwan_SetPixelFormat(espec->surface->format); - - if(espec->SoundFormatChanged) - WSwan_SetSoundRate(espec->SoundRate); - - uint16 butt_data = chee[0] | (chee[1] << 8); - - WSButtonStatus = butt_data; - - - MDFNMP_ApplyPeriodicCheats(); - - while(!wsExecuteLine(espec->surface, espec->skip)) - { - - } - - - espec->SoundBufSize = WSwan_SoundFlush(espec->SoundBuf, espec->SoundBufMaxSize); - - espec->MasterCycles = v30mz_timestamp; - v30mz_timestamp = 0; - - if(IsWSR) - { - bool needreload = FALSE; - static uint16 last; - - Player_Draw(espec->surface, &espec->DisplayRect, WSRCurrentSong, espec->SoundBuf, espec->SoundBufSize); - - if((WSButtonStatus & 0x02) && !(last & 0x02)) - { - WSRCurrentSong++; - needreload = 1; - } - - if((WSButtonStatus & 0x08) && !(last & 0x08)) - { - WSRCurrentSong--; - needreload = 1; - } - - if((WSButtonStatus & 0x100) && !(last & 0x100)) - needreload = 1; - - if((WSButtonStatus & 0x01) && !(last & 0x01)) - { - WSRCurrentSong += 10; - needreload = 1; - } - - if((WSButtonStatus & 0x04) && !(last & 0x04)) - { - WSRCurrentSong -= 10; - needreload = 1; - } - - - last = WSButtonStatus; - - if(needreload) - Reset(); - } -} - -typedef struct -{ - const uint8 id; - const char *name; -} DLEntry; - -static const DLEntry Developers[] = -{ - { 0x01, "Bandai" }, - { 0x02, "Taito" }, - { 0x03, "Tomy" }, - { 0x04, "Koei" }, - { 0x05, "Data East" }, - { 0x06, "Asmik" }, // Asmik Ace? - { 0x07, "Media Entertainment" }, - { 0x08, "Nichibutsu" }, - { 0x0A, "Coconuts Japan" }, - { 0x0B, "Sammy" }, - { 0x0C, "Sunsoft" }, - { 0x0D, "Mebius" }, - { 0x0E, "Banpresto" }, - { 0x10, "Jaleco" }, - { 0x11, "Imagineer" }, - { 0x12, "Konami" }, - { 0x16, "Kobunsha" }, - { 0x17, "Bottom Up" }, - { 0x18, "Naxat" }, // Mechanic Arms? Media Entertainment? Argh! - { 0x19, "Sunrise" }, - { 0x1A, "Cyberfront" }, - { 0x1B, "Megahouse" }, - { 0x1D, "Interbec" }, - { 0x1E, "NAC" }, - { 0x1F, "Emotion" }, // Bandai Visual?? - { 0x20, "Athena" }, - { 0x21, "KID" }, - { 0x24, "Omega Micott" }, - { 0x25, "Upstar" }, - { 0x26, "Kadokawa/Megas" }, - { 0x27, "Cocktail Soft" }, - { 0x28, "Squaresoft" }, - { 0x2B, "TomCreate" }, - { 0x2D, "Namco" }, - { 0x2F, "Gust" }, - { 0x36, "Capcom" }, -}; - -static bool TestMagic(const char *name, MDFNFILE *fp) -{ - if(strcasecmp(fp->ext, "ws") && strcasecmp(fp->ext, "wsc") && strcasecmp(fp->ext, "wsr")) - return(FALSE); - - if(fp->size < 65536) - return(FALSE); - - return(TRUE); -} - -static int Load(const char *name, MDFNFILE *fp) -{ - uint32 real_rom_size; - - if(fp->size < 65536) - { - MDFN_PrintError(_("%s ROM image is too small."), MDFNGameInfo->fullname); - return(0); - } - - if(!memcmp(fp->data + fp->size - 0x20, "WSRF", 4)) - { - const uint8 *wsr_footer = fp->data + fp->size - 0x20; - - IsWSR = TRUE; - WSRCurrentSong = wsr_footer[0x5]; - - Player_Init(256, "", "", ""); - } - else - IsWSR = false; - - real_rom_size = (fp->size + 0xFFFF) & ~0xFFFF; - rom_size = round_up_pow2(real_rom_size); //fp->size); - - wsCartROM = (uint8 *)calloc(1, rom_size); - - - // This real_rom_size vs rom_size funny business is intended primarily for handling - // WSR files. - if(real_rom_size < rom_size) - memset(wsCartROM, 0xFF, rom_size - real_rom_size); - - memcpy(wsCartROM + (rom_size - real_rom_size), fp->data, fp->size); - - MDFN_printf(_("ROM: %dKiB\n"), real_rom_size / 1024); - md5_context md5; - md5.starts(); - md5.update(wsCartROM, rom_size); - md5.finish(MDFNGameInfo->MD5); - MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); - - uint8 header[10]; - memcpy(header, wsCartROM + rom_size - 10, 10); - - { - const char *developer_name = "???"; - for(unsigned int x = 0; x < sizeof(Developers) / sizeof(DLEntry); x++) - { - if(Developers[x].id == header[0]) - { - developer_name = Developers[x].name; - break; - } - } - MDFN_printf(_("Developer: %s (0x%02x)\n"), developer_name, header[0]); - } - - uint32 SRAMSize = 0; - eeprom_size = 0; - - switch(header[5]) - { - case 0x01: SRAMSize = 8*1024; break; - case 0x02: SRAMSize = 32*1024; break; - case 0x03: SRAMSize = 16 * 65536; break; - case 0x04: SRAMSize = 32 * 65536; break; // Dicing Knight! - - case 0x10: eeprom_size = 128; break; - case 0x20: eeprom_size = 2*1024; break; - case 0x50: eeprom_size = 1024; break; - } - - //printf("%02x\n", header[5]); - - if(eeprom_size) - MDFN_printf(_("EEPROM: %d bytes\n"), eeprom_size); - - if(SRAMSize) - MDFN_printf(_("Battery-backed RAM: %d bytes\n"), SRAMSize); - - MDFN_printf(_("Recorded Checksum: 0x%04x\n"), header[8] | (header[9] << 8)); - { - uint16 real_crc = 0; - for(unsigned int i = 0; i < rom_size - 2; i++) - real_crc += wsCartROM[i]; - MDFN_printf(_("Real Checksum: 0x%04x\n"), real_crc); - } - - if((header[8] | (header[9] << 8)) == 0x8de1 && (header[0]==0x01)&&(header[2]==0x27)) /* Detective Conan */ - { - //puts("HAX"); - /* WS cpu is using cache/pipeline or there's protected ROM bank where pointing CS */ - wsCartROM[0xfffe8]=0xea; - wsCartROM[0xfffe9]=0x00; - wsCartROM[0xfffea]=0x00; - wsCartROM[0xfffeb]=0x00; - wsCartROM[0xfffec]=0x20; - } - - if(!IsWSR) - { - if(header[6] & 0x1) - MDFNGameInfo->rotated = MDFN_ROTATE90; - } - - MDFNMP_Init(16384, (1 << 20) / 1024); - - #ifdef WANT_DEBUGGER - WSwanDBG_Init(); - #endif - - v30mz_init(WSwan_readmem20, WSwan_writemem20, WSwan_readport, WSwan_writeport); - WSwan_MemoryInit(MDFN_GetSettingB("wswan.language"), wsc, SRAMSize, IsWSR); // EEPROM and SRAM are loaded in this func. - WSwan_GfxInit(); - MDFNGameInfo->fps = (uint32)((uint64)3072000 * 65536 * 256 / (159*256)); - MDFNGameInfo->GameSetMD5Valid = FALSE; - - WSwan_SoundInit(); - - wsMakeTiles(); - - Reset(); - - return(1); -} - -static void CloseGame(void) -{ - WSwan_MemoryKill(); // saves sram/eeprom - - if(wsCartROM) - { - free(wsCartROM); - wsCartROM = NULL; - } -} - -static void SetInput(int port, const char *type, void *ptr) -{ - if(!port) chee = (uint8 *)ptr; -} - -static int StateAction(StateMem *sm, int load, int data_only) -{ - if(!v30mz_StateAction(sm, load, data_only)) - return(0); - - // Call MemoryStateAction before others StateActions... - if(!WSwan_MemoryStateAction(sm, load, data_only)) - return(0); - - if(!WSwan_GfxStateAction(sm, load, data_only)) - return(0); - - if(!WSwan_RTCStateAction(sm, load, data_only)) - return(0); - - if(!WSwan_InterruptStateAction(sm, load, data_only)) - return(0); - - if(!WSwan_SoundStateAction(sm, load, data_only)) - return(0); - - if(!WSwan_EEPROMStateAction(sm, load, data_only)) - { - puts("Oops"); - return(0); - } - - return(1); -} - -static void DoSimpleCommand(int cmd) -{ - switch(cmd) - { - case MDFN_MSC_POWER: - case MDFN_MSC_RESET: Reset(); - break; - } -} - -static const MDFNSetting_EnumList SexList[] = -{ - { "m", WSWAN_SEX_MALE }, - { "male", WSWAN_SEX_MALE, gettext_noop("Male") }, - - { "f", WSWAN_SEX_FEMALE }, - { "female", WSWAN_SEX_FEMALE, gettext_noop("Female") }, - - { "3", 3 }, - - { NULL, 0 }, -}; - -static const MDFNSetting_EnumList BloodList[] = -{ - { "a", WSWAN_BLOOD_A, "A" }, - { "b", WSWAN_BLOOD_B, "B" }, - { "o", WSWAN_BLOOD_O, "O" }, - { "ab", WSWAN_BLOOD_AB, "AB" }, - - { "5", 5 }, - - { NULL, 0 }, -}; - -static const MDFNSetting_EnumList LanguageList[] = -{ - { "japanese", 0, gettext_noop("Japanese") }, - { "0", 0 }, - - { "english", 1, gettext_noop("English") }, - { "1", 1 }, - - { NULL, 0 }, -}; - -static const MDFNSetting WSwanSettings[] = -{ - { "wswan.rotateinput", MDFNSF_NOFLAGS, gettext_noop("Virtually rotate D-pads along with screen."), NULL, MDFNST_BOOL, "0" }, - { "wswan.language", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Language games should display text in."), gettext_noop("The only game this setting is known to affect is \"Digimon Tamers - Battle Spirit\"."), MDFNST_ENUM, "english", NULL, NULL, NULL, NULL, LanguageList }, - { "wswan.name", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Name"), NULL, MDFNST_STRING, "Mednafen" }, - { "wswan.byear", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Birth Year"), NULL, MDFNST_UINT, "1989", "0", "9999" }, - { "wswan.bmonth", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Birth Month"), NULL, MDFNST_UINT, "6", "1", "12" }, - { "wswan.bday", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Birth Day"), NULL, MDFNST_UINT, "23", "1", "31" }, - { "wswan.sex", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Sex"), NULL, MDFNST_ENUM, "F", NULL, NULL, NULL, NULL, SexList }, - { "wswan.blood", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Blood Type"), NULL, MDFNST_ENUM, "O", NULL, NULL, NULL, NULL, BloodList }, - { NULL } -}; - -static const InputDeviceInputInfoStruct IDII[] = -{ - { "up-x", "UP ↑, X Cursors", 0, IDIT_BUTTON, "down-x", { "right-x", "down-x", "left-x" } }, - { "right-x", "RIGHT →, X Cursors", 3, IDIT_BUTTON, "left-x", { "down-x", "left-x", "up-x" } }, - { "down-x", "DOWN ↓, X Cursors", 1, IDIT_BUTTON, "up-x", { "left-x", "up-x", "right-x" } }, - { "left-x", "LEFT ←, X Cursors", 2, IDIT_BUTTON, "right-x", { "up-x", "right-x", "down-x" } }, - - { "up-y", "UP ↑, Y Cur: MUST NOT = X CURSORS", 4, IDIT_BUTTON, "down-y", { "right-y", "down-y", "left-y" } }, - { "right-y", "RIGHT →, Y Cur: MUST NOT = X CURSORS", 7, IDIT_BUTTON, "left-y", { "down-y", "left-y", "up-y" } }, - { "down-y", "DOWN ↓, Y Cur: MUST NOT = X CURSORS", 5, IDIT_BUTTON, "up-y", { "left-y", "up-y", "right-y" } }, - { "left-y", "LEFT ←, Y Cur: MUST NOT = X CURSORS", 6, IDIT_BUTTON, "right-y", { "up-y", "right-y", "down-y" } }, - - { "start", "Start", 8, IDIT_BUTTON, NULL }, - { "a", "A", 10, IDIT_BUTTON_CAN_RAPID, NULL }, - { "b", "B", 9, IDIT_BUTTON_CAN_RAPID, NULL }, -}; - -static InputDeviceInfoStruct InputDeviceInfo[] = -{ - { - "gamepad", - "Gamepad", - NULL, - sizeof(IDII) / sizeof(InputDeviceInputInfoStruct), - IDII, - } -}; - -static const InputPortInfoStruct PortInfo[] = -{ - { 0, "builtin", "Built-In", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" } -}; - -static InputInfoStruct InputInfo = -{ - sizeof(PortInfo) / sizeof(InputPortInfoStruct), - PortInfo -}; - - -#ifdef WANT_DEBUGGER -static DebuggerInfoStruct DBGInfo = -{ - "shift_jis", - 7 + 1 + 8, // Fixme, probably not right... maximum number of prefixes + 1 for opcode + 4 for operand(go with 8 to be safe) - 1, // Instruction alignment(bytes) - 16, - 20, - 0x0000, - ~0, - - WSwanDBG_MemPeek, - WSwanDBG_Disassemble, - WSwanDBG_ToggleSyntax, - WSwanDBG_IRQ, - NULL, //NESDBG_GetVector, - WSwanDBG_FlushBreakPoints, - WSwanDBG_AddBreakPoint, - WSwanDBG_SetCPUCallback, - WSwanDBG_SetBPCallback, - WSwanDBG_GetBranchTrace, - WSwan_GfxSetGraphicsDecode, -}; -#endif - -static const FileExtensionSpecStruct KnownExtensions[] = -{ - { ".ws", gettext_noop("WonderSwan ROM Image") }, - { ".wsc", gettext_noop("WonderSwan Color ROM Image") }, - { ".wsr", gettext_noop("WonderSwan Music Rip") }, - { NULL, NULL } -}; - -} - -using namespace MDFN_IEN_WSWAN; - -MDFNGI EmulatedWSwan = -{ - "wswan", - "WonderSwan", - KnownExtensions, - MODPRIO_INTERNAL_HIGH, - #ifdef WANT_DEBUGGER - &DBGInfo, - #else - NULL, - #endif - &InputInfo, - Load, - TestMagic, - NULL, - NULL, - CloseGame, - WSwan_SetLayerEnableMask, - "Background\0Foreground\0Sprites\0", - NULL, - NULL, - NULL, - NULL, - NULL, - StateAction, - Emulate, - SetInput, - DoSimpleCommand, - WSwanSettings, - MDFN_MASTERCLOCK_FIXED(3072000), - 0, - FALSE, // Multires possible? - - 224, // lcm_width - 144, // lcm_height - NULL, // Dummy - - 224, // Nominal width - 144, // Nominal height - - 224, // Framebuffer width - 144, // Framebuffer height - - 2, // Number of output sound channels -}; - diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/DefProps.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/DefProps.hxx deleted file mode 100644 index 1e88fd1180..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/DefProps.hxx +++ /dev/null @@ -1,3279 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: DefProps.hxx 2249 2011-06-07 13:40:59Z stephena $ -//============================================================================ - -#ifndef DEF_PROPS_HXX -#define DEF_PROPS_HXX - -/** - This code is generated using the 'create_props.pl' script, - located in the src/tools directory. All properties changes - should be made in stella.pro, and then this file should be - regenerated and the application recompiled. -*/ - -#define DEF_PROPS_SIZE 3244 - -static const char* DefProps[DEF_PROPS_SIZE][20] = { - { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0060a89b4c956b9c703a59b181cb3018", "CommaVid, Irwin Gaines - Ariola", "CM-008 - 712 008-720", "Cakewalk (1983) (CommaVid) (PAL)", "AKA Alarm in der Backstube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "007d18dedc1f0565f09c42aa61a6f585", "CCE", "C-843", "Worm War I (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "008543ae43497af015e9428a5e3e874e", "Retroactive", "", "Qb (V2.09) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "00b7b4cbec81570642283e7fc1ef17af", "Sega, Steve Beck, Phat Ho - Beck-Tech - Teldec", "006-01", "Congo Bongo (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "00ce0bdd43aed84a983bef38fe7f5ee3", "20th Century Fox, Bill Aspromonte", "11012", "Bank Heist (1983) (20th Century Fox)", "AKA Bonnie and Clyde, Holdup, Rooring 20's", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00ce76ad69cdc2fa36ada01ae092d5a6", "Bit Corporation", "PGP214", "Cosmic Avenger (4 Game in One) (1983) (BitCorp) (PAL)", "AKA StarMaster", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00dc28b881989c39a6cf87a892bd3c6b", "CCE", "", "Krull (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00df776eb994d729db9eb13b17887aa6", "", "", "Greeting Cart Atari Coin (V2) (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00e19ebf9d0817ccfb057e262be1e5af", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL) [no grid markers]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00e55b27fe2e96354cd21b8b698d1e31", "", "", "Phoenix (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00eaee22034aff602f899b684c107d77", "Rainbow Vision - Suntek - Sunteck Corp", "SS-001", "Time Race (Rainbow Vision) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00f7985c20b8bdf3c557fac4d3f26775", "Aaron Curtis", "", "AStar (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "012020625a3227815e47b37fd025e480", "Rob Kudla", "", "Better Space Invaders (1999) (Rob Kudla) (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01293bd90a4579abb7aed2f7d440681f", "Century", "", "Snoopy (1983) (Century) (PAL)", "AKA Snoopy and the Red Baron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01297d9b450455dd716db9658efb2fae", "TechnoVision", "TVS1002", "Save Our Ship (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "012b8e6ef3b5fd5aabc94075c527709d", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (1983) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "24", "", "", "" }, - { "0164f26f6b38a34208cd4a2d0212afc3", "Coleco, Ed English", "2656", "Mr. Do! (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "", "YES", "" }, - { "0173675d40a8d975763ee493377ca87d", "CBS Electronics, Ed English", "4L1751", "Roc 'n Rope (1984) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "50", "", "", "" }, - { "01abcc1d2d3cba87a3aa0eb97a9d7b9c", "Jone Yuan Telephonic Enterprise Co", "", "Topy (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "01acf9881a2f8bfa2d49982b1b10fb64", "", "", "Image - Woody (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01b09872dcd9556427761f0ed64aa42a", "Galaga Games", "", "River Raid (1984) (Galaga Games)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "01cb3e8dfab7203a9c62ba3b94b4e59f", "Atari, Mimi Nyden, Scott Smith, Robert Vieira", "CX26127", "Gremlins (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01e5c81258860dd82f77339d58bc5f5c", "CCE", "", "Corrida da Matematica (CCE)", "AKA Math Gran Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01e60a109a6a67c70d3c0528381d0187", "ITT Family Games, Perry Rhodan-Serie", "554-33 383", "Fire Birds (1983) (ITT Family Games) (PAL)", "AKA Sky Alien", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01f584bf67b0e464014a8c8b5ea470e3", "Arcadia Corporation, Dennis Caswell", "5 AR-4200", "Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02066b17f29082412c6754c1a2d6302e", "", "", "Demo Image Series #3 - Baboon (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "024365007a87f213cbe8ef5f2e8e1333", "Atari, Frank Hausman, Steve Woita", "CX2686", "Quadrun (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "026180bf641ff17d8577c33facf0edea", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0277c449fae63f6f1c8f94dedfcf0058", "", "", "Laser Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "027a59a575b78860aed780b2ae7d001d", "CCE", "", "Pressure Cooker (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "028024fb8e5e5f18ea586652f9799c96", "Coleco, Steve 'Jessica' Kitchen", "2468", "Carnival (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "214", "", "" }, - { "02811151906e477d47c135db5b1699c6", "", "", "FlickerSort Demo (Updated) (20-04-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02a5fc90a0d183f870e8eebac1f16591", "HES", "771-422", "2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02ab2c47bc21e7feafa015f90d7df776", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02ced7ea2b7cb509748db6bfa227ebec", "Parker Brothers, Ed English, David Lamkins", "931502", "Frogger (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02cee0b140d2f1a1efcfb1d482a5c392", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02dcba28c614fec7ca25955327128abb", "Andrew Wallace", "", "Laseresal 2002 (PAL) (PD) [a]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02e3f4ba156fb578bef7d7a0bf3400c1", "", "", "Booster (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "033e21521e0bf4e54e8816873943406d", "20th Century Fox Video Games, Dan Thompson", "11020", "Earth Dies Screaming, The (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "29", "", "", "" }, - { "034c1434280b0f2c9f229777d790d1e1", "Telegames", "5665 A016", "Baseball (1989) (Telegames) (PAL)", "AKA Super Challenge Baseball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0375f589f7da06d2d2be532e0d4d4b94", "", "", "Push (V0.04) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "038e1e79c3d4410defde4bfe0b99cc32", "Atari, Gary Shannon", "", "Aquaventure (08-12-1983) (Atari) (Prototype)", "AKA Sea Sentinel", "Unbelievably Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "039cf18b459d33b8a8fca31d06c4c244", "", "", "Demo Image Series #0 (12-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "03b1051c9374678363c899914412cfc5", "", "", "Incoming (30-10-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "03c3f7ba4585e349dd12bfa7b34b7729", "Sega, Jeff Lorenz", "004-01", "Star Trek - Strategic Operations Simulator (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "03ff9e8a7af437f16447fe88cea3226c", "Bomb - Onbase", "CA285", "Wall-Defender (1983) (Bomb)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "04014d563b094e79ac8974366f616308", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "041b5e56bbc650db574bd8db3fae2696", "", "", "Thrust (V1.0) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "043f165f384fbea3ea89393597951512", "Spectravision, Spectravideo", "SA-202", "Planet Patrol (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0443cfa9872cdb49069186413275fa21", "M Network, Patricia Lewis Du Long, Ron Surratt - INTV", "MT4518", "BurgerTime (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "", "", "" }, - { "045035f995272eb2deb8820111745a07", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia)", "AKA Jungle Raid", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "047ac3b9faea64522b7a23c4465a7aa8", "", "", "Defender (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04856e3006a4f5f7b4638da71dad3d88", "Atari, Douglas Neubauer", "CX26176", "Radar Lock (1989) (Atari) (PAL)", "AKA Dog Fight", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "049626cbfb1a5f7a5dc885a0c4bb758e", "", "", "MegaMania (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04b488d4eef622d022a0021375e7e339", "Home Vision - Gem International Corp.", "VCS83107", "Tennis (1983) (Home Vision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04dfb4acac1d0909e4c360fd2ac04480", "", "", "Jammed (2001) (XYPE) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "04e737c9d53cd84bfd5ee679954e4706", "Jone Yuan Telephonic Enterprise Co", "", "Checkers (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04fccc7735155a6c1373d453b110c640", "HES, David Lubar", "535", "My Golf (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0519f395d5f7d76be813b834aa51c0be", "Atari, Ian Shepard", "CX2604", "Space War (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0546f4e6b946f38956799dd00caab3b1", "Thomas Jentzsch", "", "My Golf (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "056f5d886a4e7e6fdd83650554997d0d", "Parker Brothers, Ed Temple", "931504", "Amidar (1982) (Parker Bros) (PAL)", "", "Uncommon", "", "", "A", "A", "", "", "", "", "", "", "", "", "", "" }, - { "056ff67dd9715fafa91fb8b0ddcc4a46", "", "", "Frisco (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05824fcbe615dbca836d061a140a50e0", "Jeffry Johnston", "", "Radial Pong - Version 9 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05aedf04803c43eb5e09dfd098d3fd01", "", "", "Keystone Kapers (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05aff8f626ef870432ae3b3d9d5aa301", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05b45ba09c05befa75ac70476829eda0", "Parker Brothers, Rex Bradford", "931507", "Star Wars - Jedi Arena (1983) (Parker Bros) (PAL)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "", "", "", "", "" }, - { "05c60458ec69e7fe8b1be973852d84f1", "", "", "Test (1996) (J.V. Matthews) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05ccf96247af12eef59698f1a060a54f", "Quelle", "600273", "King Arthur (1983) (Quelle) (PAL)", "AKA Dragonfire (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05d61b925d3d2474bab83f0a79bb5df1", "Eckhard Stolberg", "", "Cosmic Ark Stars (1997) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05eb4347f0ec8f4783983ca35ffd8d1b", "", "", "Qb (2.06) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "05ebd183ea854c0a1b56c218246fbbae", "Atari, Dan Hitchens", "CX2656", "SwordQuest - EarthWorld (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05f11fb2e45c4e47424d3cb25414d278", "", "", "Boring (NTSC) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "060c865c782debb047e6fd101c8923fc", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0614ed51acd027d531e7c85c4f435292", "", "", "Narnia (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0651216c4a4a9c9ac5ada3013a317c72", "Jone Yuan Telephonic Enterprise Co", "", "Fishing Derby (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06742cf522f23797157f215a1dc8a1a9", "", "", "Healthbars (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0685bd0bcb975ceef7041749a5454a48", "Piero Cavina", "", "11 Sprite Demo (Piero Cavina) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06953ed762220dba63d63930d4ad0cc3", "", "", "Star Fire - Eckhard WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "069c17beb1e8e0557adb8539fdcf6cba", "", "", "Phantom II & Pirate (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "06b0194ce992584c365278e0d7323279", "Activision", "", "Unknown Activision Game #2 (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06b6c5031b8353f3a424a5b86b8fe409", "Activision, Mike Lorenzen - Ariola", "EAX-023 - 711 023-720", "Oink! (1982) (Activision) (PAL)", "AKA Das Schweinchen und der Wolf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06cfd57f0559f38b9293adae9128ff88", "Telegames", "4317 A009", "Adventures on GX-12 (1989) (Telegames) (PAL)", "AKA Adventures of Tron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06db908011065e5ebb37f4e253c2a0b0", "", "", "Gopher (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06e5dc181a8eda1c31cc7c581c68b6ef", "", "", "Tac-Scan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "071f84d10b343c7c05ce3e32af631687", "Videospielkassette - Ariola", "PGP233", "Krieg der Sterne (Ariola) (PAL)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "072a6ea2181ca0df88ac0dedc67b239d", "", "", "Multiple Missiles Demo (19-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "073cb76b006af034fd150be3f5e0e7e6", "", "", "Mobile 48 Sprite Kernel (Bug Fixed) (10-01-2003) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "073d7aff37b7601431e4f742c36c0dc1", "", "", "Bermuda (Unknown) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "10", "", "", "" }, - { "074ec425ec20579e64a7ded592155d48", "Atari - Sculptured Software, Steve Aguirre", "CX26162", "Fatal Run (Ultimate Driving) (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "075069ad80cde15eca69e3c98bd66714", "CCE", "C-803", "Bobby Is Going Home (1983) (CCE)", "AKA Bobby Vai Para Casa", "", "", "", "", "", "", "", "", "", "", "", "31", "", "", "" }, - { "0751f342ee4cf28f2c9a6e8467c901be", "Atari, Joseph Tung", "CX26152", "Super Baseball (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "075ec8eb0aa39f0539bbaf5980203edb", "", "", "Image - Megaman (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07973be3ecfd55235bf59aa56bdef28c", "Quelle", "732.052 6", "Eddy Langfinger, der Museumsdieb (1983) (Quelle) (PAL)", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "079fe9103515d15bc108577e234a484d", "", "", "Multi-Color Demo 0 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07a3af1e18b63765b6807876366f5e8a", "Joe Grand", "", "SCSIcide Pre-release 2 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07c76f2d88552d20ad2c0ed7aef406c6", "Cody Pittman", "", "Blob (Cody Pittman) (Hack)", "Hack of Halloween", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07f42847a79e4f5ae55cc03304b18c25", "Zellers", "", "Sea Hawk (Zellers)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07f84db31e97ef8d08dc9fa8a5250755", "Supergame", "", "Enduro (1984) (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07f91e33e76f53bb9d2731fd5d8a35a5", "Atari", "CX2632", "Space Invaders (1978) (Atari) [t1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0805366f1b165a64b6d4df20d2c39d25", "Atari, Dan Hitchens", "CX2650", "Berzerk (1982) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08188785e2b8300983529946dbeff4d2", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari) (4K)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "28", "", "", "" }, - { "081e2c114c9c20b61acf25fc95c71bf4", "Parker Brothers, Ed English, David Lamkins", "PB5300", "Frogger (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "082fdc8bd47fef01482ce5883c4ffdb8", "Charles Morgan", "", "Tanks DX (Charles Morgan) (Hack)", "Hack of Tanks But No Tanks", "Hack", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "0832fb2ee654bf9382bc57d2b16d2ffc", "Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "083b17a1a6b3efc464ba7e789f1e194d", "", "", "Greeting Cart (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "083e7cae41a874b2f9b61736c37d2ffe", "Imagic, Rob Fulop, Bob Smith", "720106-2A, IA3600P, EIX-009-04I", "Riddle of the Sphinx (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "085322bae40d904f53bdcc56df0593fc", "Parker Brothers, Dave Engman, Dawn Stockbridge", "PB5340", "Tutankham (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0856f202b18cd46e44fd1dc3b42e9bfb", "", "", "Frame Counter 1 (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0866e22f6f56f92ea1a14c8d8d01d29c", "Western Technologies, Michael Case, Lenny Carlson", "", "AndroMan on the Moon (1984) (Western Tech) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0890a5b089191f45d0f08dd1e3235687", "", "", "Star Fire - 4K Version (25-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0894aa7be77521f9df562be8d9555fe6", "CBS Electronics, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1982) (CBS Electronics) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08989fa4ff537f5dbd611aff4019521a", "Atari, Gary Palmer", "CX26163P", "Fun with Numbers (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08bd4c1dcc843f6a0b563d9fd80b3b11", "Quelle", "343.273 9", "Phantompanzer II (1983) (Quelle) (PAL)", "AKA Thunderground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08bf437d012db07b05ff57a0c745c49e", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "4 AR-4102", "Meteoroids (1982) (Arcadia) (Prototype)", "Suicide Mission Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "08d1b6d75206edb999252caf542a2c7f", "Larry Petit", "", "Super Home Run (2003) (Larry Petit) (Hack)", "Hack of Home Run", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08d60a58a691c7f690162850302dc0e1", "", "", "Poker Squares (V0.27) (PAL) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08f4dc6f118f7c98e2406c180c08e78e", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Tug of War (2 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "08f853e8e01e711919e734d85349220d", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0906c6e0e4bda9c10cfa4c5fc64d2f4b", "Retroactive", "", "Qb (V0.12) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "090f0a7ef8a3f885048d213faa59b2f8", "Carrere Video - Teldec", "USC1012", "M.A.D. (1983) (Carrere Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09274c3fc1c43bf1e362fda436651fd8", "Thomas Jentzsch", "", "Acid Drop (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "8", "240", "", "" }, - { "09388bf390cd9a86dc0849697b96c7dc", "Absolute Entertainment, Alex DeMeo", "AG-045-04, AK-045-04", "Pete Rose Baseball (1988) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0945081a6bd00345ff3d58eb7a07330a", "", "", "Stampede (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0956285e24a18efa10c68a33846ca84d", "Dismac", "", "Viagem Espacial (Dismac)", "AKA Star Voyager", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0963aa9f7f6cf5a36ff700001583624e", "Franklin Cruz", "", "Space Invaders 2 (Hack) [o1]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "096649575e451508006b17e0353259a5", "Justin J. Scott", "", "Yar Vs. Yar (2002) (Justin J. Scott) (Hack)", "Hack of Yars' Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "097074f24cde141fe6a0f26a10333265", "", "", "Marble Craze (V0.90) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "097936b07e0e0117b9026ae6835eb168", "Imagic, Dennis Koble", "720100-2B, IA3000P", "Trick Shot (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "09abfe9a312ce7c9f661582fdf12eab6", "Atari, Douglas Neubauer", "CX26154", "Super Football (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09d19274c20768f842e8fae84b766abe", "", "", "Star Fire - Animated Patricles (06-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09e1ecf9bd2a3030d5670dba7a65e78d", "Atari, James Andreasen", "CX2654", "Haunted House (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09f89bbfa2ab00f1964d200e12d7ced0", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0a1b98937911d621b004b1617446d124", "", "", "Hangman Pac-Man Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0a981c03204ac2b278ba392674682560", "Atari, Bob Whitehead - Sears", "CX2651 - 99805, 49-75602", "Blackjack (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "" }, - { "0aa208060d7c140f20571e3341f5a3f8", "U.S. Games Corporation, Jeff Corsiglia, Paul Allen Newell", "VC1009", "Towering Inferno (1982) (U.S. Games)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "YES", "", "", "", "", "30", "220", "YES", "" }, - { "0abf64ca504a116adca80f77f85e00fb", "", "", "Cube Conquest (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0ac0d491763153fac75f5337ce32a9d6", "", "", "SPAM Image Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0acaf71e60b89f6b6eab63db6ab84510", "", "", "This Planet Sucks (Greg Troutman) [a2]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0aceb7c3bd13fe048b77a1928ed4267d", "Imagic, Bob Smith", "720102-2B, IA3201P, EIX-011-04I", "Star Voyager (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0ad9a358e361256b94f3fb4f2fa5a3b1", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner - Sears", "CX2608 - 49-75165", "Super Breakout (1982 - 1981) (Atari) [a]", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "0ae3497e731ca0bf6a77b23441d9d9f9", "", "", "Analog Clock (V0.0) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0af51ceb4aecc7a8fc89781ac44a1973", "Barry Laws Jr.", "", "Face Invaders Deluxe (Barry Laws Jr.) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0afe6ae18966795b89314c3797dd2b1e", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692, CX2692P", "Moon Patrol (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b01909ba84512fdaf224d3c3fd0cf8d", "", "", "Revenge of the Apes (Hack)", "Hack of Planet of the Apes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b1056f1091cfdc5eb0e2301f47ac6c3", "Tigervision, Karl T. Olinger - Teldec", "7-001 - 3.60001 VE", "King Kong (1982) (Tigervision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "0b17ed42984000da8b727ca46143f87a", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (05-17-1983) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "0b24658714f8dff110a693a2052cc207", "CCE", "C-815", "Seaquest (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b33252b680b65001e91a411e56e72e9", "CCE", "C-832", "Atlantis (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b4e793c9425175498f5a65a3e960086", "CCE", "", "Kung Fu Master (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b55399cf640a2a00ba72dd155a0c140", "Imagic, Wilfredo 'Willy' Aguilar, Michael Becker, Rob Fulop", "720111-1A, 03205", "Fathom (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0b577e63b0c64f9779f315dca8967587", "Videospielkassette - Ariola", "PGP236", "Raketen-Angriff (Ariola) (PAL)", "AKA Missile Control", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b8d3002d8f744a753ba434a4d39249a", "Sears Tele-Games, Robert Zdybel", "CX2619 - 49-75159", "Stellar Track (1980) (Sears)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0bf19e40d5cd8aa5afb33b16569313e6", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "0bf1e354304f46c0caf8fc0f6f5e9525", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "0bfabf1e98bdb180643f35f2165995d0", "Atari, Bob Whitehead - Sears", "CX2623 - 6-99819, 49-75108, 49-75125", "Home Run (1978) (Atari)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "0c0392db94a20e4d006d885abbe60d8e", "", "", "Dodge Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c35806ff0019a270a7acae68de89d28", "Froggo", "FG1003", "Task Force (1987) (Froggo)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c48e820301251fbb6bcdc89bd3555d9", "Atari, Andrew Fuchs", "CX26120", "Stargate (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c54811cf3b1f1573c9164d5f19eca65", "Activision, David Crane - Ariola", "EAG-001, PAG-001, EAG-001-04B, EAG-001-04I - 711 001-715", "Dragster (1980) (Activision) (PAL)", "AKA Dragster Rennen", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c7926d660f903a2d6910c254660c32c", "Atari, Larry Kaplan", "CX2602, CX2602P", "Air-Sea Battle (1977) (Atari) (PAL)", "AKA Anti-Aircraft", "Uncommon", "", "", "", "", "", "", "", "", "", "", "38", "256", "", "" }, - { "0c7bd935d9a7f2522155e48315f44fa0", "Carrere Video, Jeff Corsiglia, Paul Allen Newell - Teldec", "USC1009", "Infernal Tower (1983) (Carrere Video) (PAL)", "AKA Towering Inferno", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "YES", "" }, - { "0c80751f6f7a3b370cc9e9f39ad533a7", "Atari, Carla Meninsky", "CX2610", "Warlords (1981) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "0cb7af80fd0ddef84844481d85e5d29b", "", "", "Mr. Pac-Man (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cc8224ff1edfe458e8629e9e5fe3f5b", "", "", "Trick 12 (2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cdd9cc692e8b04ba8eb31fc31d72e5e", "Thomas Jentzsch", "", "Wing War (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cebb0bb45a856b23f56d21ce7d1bc34", "20th Century Fox Video Games, Bill Aspromonte", "11131", "Crash Dive (1983) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cfdd2f3b243cac21f38a0f09f54bead", "", "", "Overhead Adventure Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d07d2c1be1a5eaaea235a533bcda781", "", "", "Scrolling Playfield 1 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d09cff0d28033c02c3290edfc3a5cea", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d1b3abf681a2fc9a6aa31a9b0e8b445", "Atari", "CX26163P", "Laser Blast (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d27c7f5db349b592f70f68daf5e8f3b", "", "", "Space Instigators (21-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d35618b6d76ddd46d2626e9e3e40db5", "", "", "X-Doom V.26 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d5af65ad3f19558e6f8e29bf2a9d0f8", "Atari, Adam Clayton, John Howard Palevich", "CX26151, CX26151P", "Dark Chambers (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0d6b974fe58a1bdd453600401c407856", "Atari", "", "128-in-1 Junior Console (Chip 3 or 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d786a41695e5fc8cffd05a6dbb3f659", "", "", "Scrolling Playfield With Score (10-02-2003) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d7e630a14856f4d52c9666040961d4d", "", "", "Wavy Line Test (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d90a0ee73d55539b7def24c88caa651", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0db4f4150fecf77e4ce72ca4d04c052f", "Atari, Carol Shaw - Sears", "CX2618 - 49-75123", "3-D Tic-Tac-Toe (1980) (Atari)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0dd4c69b5f9a7ae96a7a08329496779a", "Tigervision, Karl T. Olinger - Teldec", "7-001 - 3.60001 VE", "King Kong (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0de53160a8b54c3aa5aed8d68c970b62", "Quelle", "806.174 9", "Fuchs & Schweinchen Schlau (1983) (Quelle) (PAL)", "AKA Oink!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0dfbdadf8f1bc718e7e1bb3ccd5fef3d", "", "", "Mr. Pac-Man (New start tune) (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e0808227ef41f6825c06f25082c2e56", "", "", "Candi (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e08cd2c5bcf11c6a7e5a009a7715b6a", "", "", "Boing! (PD) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e224ea74310da4e7e2103400eb1b4bf", "Atari, Peter C. Niday, Howard Scott Warshaw", "", "Mind Maze (10-10-1984) (Atari) (Prototype)", "Uses the Mindlink Controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e4b2b6e014a93ef8be896823da0d4ec", "", "", "Skiing (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e713d4e272ea7322c5b27d645f56dd0", "Home Vision - Gem International Corp.", "VCS83105", "Panda Chase (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e7e73421606873b544e858c59dc283e", "Digivision", "", "Super Soccer (Digivision)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0e86470791b26292abe1c64545c47985", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Down on the Line (3 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "" }, - { "0ec93f519bb769e0d9f80e61f6cc8023", "Atari - GCC, Mike Feinstein, John Allred", "CX2688", "Jungle Hunt (02-25-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0eebfb60d437796d536039701ec43845", "Fabrizio Zavagli", "", "Cakewalk (Fabrizio Zavagli)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0eecb5f58f55de9db4eedb3a0f6b74a8", "Xonox - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "0ef64cdbecccb7049752a3de0b7ade14", "Atari, Joe Decuir, Steve Mayer, Larry Wagner", "CX26163P", "Combat (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "39", "256", "", "" }, - { "0f14c03050b35d6b1d8850b07578722d", "Jeffry Johnston", "", "Radial Pong - Version 10 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f24ca5668b4ab5dfaf217933c505926", "", "", "Fantastic Voyage (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f2e09c71cc216f79d22a804152ba24b", "Bob Colbert", "", "Scroller Demo (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0f341d1f4e144e3163d9a5fc5a662b79", "", "", "RUN Platform Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "0", "", "YES", "" }, - { "0f39fc03d579d0d93a6b729a3746843e", "Atari, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (05-27-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f643c34e40e3f1daafd9c524d3ffe64", "Atari, Robert C. Polaro, Alan J. Murphy - Sears", "CX2609 - 49-75186", "Defender (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f6676b05621f80c670966e2995b227a", "", "", "Globe Trotter Demo 1 (24-03-2003) (Weston)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f738dc44437557624eb277ed7ad91c9", "", "", "Grand Prix (Unknown) (PAL)", "AKA Grand Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f8043715d66a4bbed394ef801d99862", "Quelle", "684.733 9", "Robin Hood (1983) (Quelle) (PAL)", "AKA Save Our Ship", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f95264089c99fc2a839a19872552004", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0fba7d8c3520bdb681f75494e498ec36", "", "", "Gunfight 2600 - Final Run (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0fbf618be43d4396856d4244126fe7dc", "Quelle", "805.784 6", "Labyrinth (1983) (Quelle) (PAL)", "AKA Maze Craze", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, - { "0fc161704c46e16f7483f92b06c1558d", "CCE", "C-853", "Spider Fighter (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "0fcff6fe3b0769ad5d0cf82814d2a6d9", "Suntek", "SS-027", "Zoo Fun (Suntek) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0fd518e9435f5ab0893d79ee0d63fc92", "", "", "Greeting Cart Jeri Ryan (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0fd72a13b3b6103fc825a692c71963b4", "Imagic, Rob Fulop", "720104-2A, IA3204P, EIX-008-04I", "Cosmic Ark (1982) (Imagic) (PAL) [selectable starfield]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "101ab60f4000a5d13792ef0abad5f74b", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "102672bbd7e25cd79f4384dd7214c32b", "Atari, Alan Miller - Sears", "CX2642 - 6-99814", "Hunt & Score - Memory Match (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "103d4c890c2108cb536372c98d093e5f", "", "", "Star Fire - Star Background (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "103e9d616328969f5d7b4e0a381b25d5", "", "", "Playfield Illustration and Logo Demo (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "103f1756d9dc0dd2b16b53ad0f0f1859", "Quelle", "732.174 8", "Go Go Home Monster (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "106326c262dfd3e8eaeabd961d2a0519", "", "", "PAL-NTSC Detector (15-11-2002) (CT)[a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "106855474c69d08c8ffa308d47337269", "Atari, Adam Clayton, John Howard Palevich", "CX26151", "Dark Chambers (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "107cc025334211e6d29da0b6be46aec7", "Atari, Bob Smith - Sears", "CX2648 - 49-75161", "Video Pinball (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1086ff69f82b68d6776634f336fb4857", "Activision, David Crane", "AG-009", "Bloody Human Freeway (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10958cd0a1a81d599005f1797ab0e51d", "", "", "Centipede 2k (2000) (PD) (Hack)", "Hack of Centipede", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10a3cd14e5dcfdde6ff216a14ce7b7dd", "Atari", "CX262, CX2627P", "Human Cannonball (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10af8728f975aa35a99d0965de8f714c", "Dinatronic", "", "Seaquest (Dinatronic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10eae73a07b3da044b72473d8d366267", "Funvision - Fund. Int'l Co.", "", "Karate (1982) (Funvision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10f0ecaf962aef1fc28abed870b01b65", "Atari, Paul Donaldson", "", "Bionic Breakthrough (06-22-1984) (Atari) (Prototype)", "Uses the Mindlink Controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10f62443f1ae087dc588a77f9e8f43e9", "Atari, Carla Meninsky", "CX2637, CX2637P", "Dodge 'Em (1980) (Atari) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "110ac8ecaf1b69f41bc94c59dfcb8b2d", "", "", "Demon Attack (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "111029770226b319524134193886a10e", "Hozer Video Games", "", "Gunfight 2600 - One Limit Reached! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11330eaa5dd2629052fac37cfe1a0b7d", "128-in-1 Junior Console", "", "Human Cannonball (128-in-1 Junior Console) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "113cd09c9771ac278544b7e90efe7df2", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) [no grid markers]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "114c599454d32f74c728a6e1f71012ba", "Activision, Bob Whitehead - Ariola", "EAX-015, EAX-015-04I - 711 015-725", "Chopper Command (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "119305fe8e3c6cb878e8b610af8f0663", "", "", "Greeting Cart Ali Landry Closeup (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11bcf5c752088b5aaf86d6c7a6a11e8d", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "11cf751bc8173db105eabd119c5844ba", "", "", "Star Fire - Crosshair (12-02-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11e7e0d9437ec98fa085284cf16d0eb4", "", "", "Bowling (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1201c18cf00d2c236f42e4d7d8c86aa1", "", "", "Nick Bensema Demo (Nick Bensema)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "12123b534bdee79ed7563b9ad74f1cbd", "Absolute Entertainment, Alex DeMeo", "AG-041-04", "Title Match Pro Wrestling (1987) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1228c01cd3c4b9c477540c5adb306d2a", "Atari, Alan Miller", "CX26163P", "Basketball (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1266b3fd632c981f3ef9bdbf9f86ce9a", "Activision, Bob Whitehead", "EAZ-034-04, EAZ-034-04I", "Private Eye (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1267e3c6ca951ff1df6f222c8f813d97", "", "", "Dragonfire (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1278f74ca1dfaa9122df3eca3c5bcaad", "Quelle", "719.013 5", "Ungeheuer der Tiefe (Quelle) (PAL)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "1287535256bf5dff404839ac9e25c3e7", "PacManPlus", "Rev 2", "Alien Pac-Man (PacManPlus) (Hack)", "Hack of Alien", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "12937db3d4a80da5c4452b752891252d", "Digitel", "", "Megamania (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "12bca8305d5ab8ea51fe1cfd95d7ab0e", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00250", "Summer Games (1987) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "12d7e0d6b187889f8d150bf7034d1db2", "", "", "Poker Squares (V0.0e) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "130c5742cd6cbe4877704d733d5b08ca", "Home Vision - Gem International Corp.", "VCS83109", "World End (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "133456269a03e3fdae6cddd65754c50d", "Tigervision - Teldec", "7-006 - 3.60008 VG", "Springer (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "133a4234512e8c4e9e8c5651469d4a09", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "133b56de011d562cbab665968bde352b", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13448eb5ba575e8d7b8d5b280ea6788f", "Digivision", "", "Crackpots (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1345e972dbe08ea3e70850902e20e1a5", "Greg Troutman", "", "Dark Mage (rough beta) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1351c67b42770c1bd758c3e42f553fea", "Digivision", "", "Keystone Kapers (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "135708b9a7dd20576c1b66ab2a41860d", "", "", "Hangman Man Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13584411da0a8d431991035423fdc0dc", "Jone Yuan Telephonic Enterprise Co", "", "Skiing (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1367e41858be525710eb04d0dab53505", "Kyle Pittman", "", "Zelda (2003) (Kyle Pittman) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "136f75c4dd02c29283752b7e5799f978", "Atari, Dan Hitchens - Sears", "CX2650 - 49-75168", "Berzerk (1982) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13782adc70e285d51e2f4dd9c3094166", "", "", "Death Derby (21-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13895ef15610af0d0f89d588f376b3fe", "Tigervision, Rorke Weigandt", "7-005", "Marauder (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13a37cf8170a3a34ce311b89bde82032", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13a991bc9c2ff03753aeb322d3e3e2e5", "Funvision - Fund. International Co.", "", "Galactic (Funvision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13aa1f9ac4249947e4af61319d9a08f2", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13abc32f803165c458bb086fa57195fb", "Christian Samuel", "", "E.T. The Extra-Testical (Christian Samuel) (Hack)", "Hack of E.T. The Extra-Terrestrial", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13d8326bf5648db4dafce45d25e62ddd", "", "", "Atari Logo Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13dfb095e519a555a5b60b7d9d7169f9", "", "", "Red Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "140909d204abd6841c64cdad4d7765b4", "", "", "Moving Blue Ladder Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14163eb2a3ddd35576bd8527eae3b45e", "", "", "Multi-Color Demo 6 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1423f560062c4f3c669d55891a2bcbe7", "CCE", "C-859", "MASH (1983) (CCE) [a]", "AKA M.A.S.H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1428029e762797069ad795ce7c6a1a93", "", "", "Thunderground (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "143918368f4f4dfff90999188c0197c9", "", "", "Unknown Title (bin00016 (200110)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1442d1b35a6478fba22ae7dd1fcb5634", "", "", "Thrust (V0.2) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "149b543c917c180a1b02d33c12415206", "CCE", "C-857", "Superman (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14a56b493a8d9d10e94a3e100362e3a2", "Hozer Video Games", "", "Gunfight 2600 - Early Play-kernel (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14b1e30982962c72f426e2e763eb4274", "Atari, Carol Shaw - Ralph Lauren", "", "Polo (1978) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14c2548712099c220964d7f044c59fd9", "First Star Software, Alex Leavens, Shirley Ann Russell", "", "Boing! (1983) (First Star Software)", "AKA Bubbles, Soap Suds, The Emphysema Game", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "14d365bbfaac3d20c6119591f57acca4", "", "", "Video Life (Unknown) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "14dbb3686dd31964332dc2ef0c55cad0", "", "", "Demo Image Series #15 - Three Marios (PAL) (Non-Interleave) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "151c33a71b99e6bcffb34b43c6f0ec23", "Parker Brothers, Laura Nikolich", "", "Care Bears (1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "151fa3218d8d7600114eb5bcd79c85cb", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (05-02-1983) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "152c253478b009c275e18cd731b48561", "", "", "Quest (11-10-2002) (Chris Larkin)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "153f40e335e5cb90f5ce02e54934ab62", "Absolute Entertainment, Alex DeMeo", "EAZ-041-04I", "Title Match Pro Wrestling (1987) (Absolute) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1542662f665d2ffaa77b4b897dd2e2af", "", "", "Starfield (V1.0) (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "155fa7f479dcba3b10b1494e236d6010", "Skyworks", "", "Tomcat (2002) (Skyworks) (PAL)", "AKA The F-14 Flight Simulator", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "157356f80c709ab675961d8b8b207e20", "", "", "Multi-Sprite Game V2.5 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "157bddb7192754a45372be196797f284", "Atari, Warren Robinett - Sears", "CX2613, 49-75154", "Adventure (1980) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "159e5cd6ccb968015f49aed5adbc91eb", "Justin J. Scott", "", "Yar's Defeat (2002) (Justin J. Scott) (Hack)", "Hack of Yars' Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "15b498199ed0ed28057bf0dbdce9b8d8", "Hozer Video Games", "", "Jammed (V0.2) (Demo) (2001) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "15bcd74f2f1f2a63e1aa93e90d2c0555", "", "", "Incoming (22-08-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15bf2ef7583bfcbbba630847a1dc5539", "Erik Eid", "", "Euchre (Jul 15) (2002) (Eric Eid) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15c11ab6e4502b2010b18366133fc322", "Atari - Axlon, Tod Frye", "CX26169", "Shooting Arcade (09-19-1989) (Atari) (Prototype)", "Uses the Light Gun Controller (left only)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15dd21c2608e0d7d9f54c0d3f08cca1f", "Data Age", "112-008", "Frankenstein's Monster (1983) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15fe28d0c8893be9223e8cb2d032e557", "", "", "Towering Inferno (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "52", "", "YES", "" }, - { "1619bc27632f9148d8480cd813aa74c3", "Thomas Jentzsch", "", "Steeple Chase (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "20", "220", "YES", "" }, - { "161ded4a85d3c78e44fffd40426f537f", "", "", "JtzBall (Alpha) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1623da579aa30b957bb8fa6ccd89b30a", "", "", "Image - USA Flag (15-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "163e7e757e2dc44469123ff0e5daec5e", "", "", "Many Blue Bars and Text Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "169d4c7bd3a4d09e184a3b993823d048", "", "", "Superman (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16cb43492987d2f32b423817cdaaf7c4", "Atari, Larry Kaplan - Sears", "CX2602 - 99802, 6-99802, 49-75102", "Air-Sea Battle (1977) (Atari)", "AKA Target Fun (Anti-Aircraft)", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16cc6d1b4ddce51c767a1ba8e5ff196c", "", "", "Big - Move This Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "16e04823887c547dc24bc70dff693df4", "Atari", "CX26163P", "Tennis (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16f494f20af5dc803bc35939ef924020", "Mark De Smet", "", "Video Simon (Mark De Smet)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16fbb36a6124567405a235821e8f69ee", "", "", "Star Fire (28-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "170e7589a48739cfb9cc782cbb0fe25a", "M Network, Hal Finney - INTV", "MT5666", "Astroblast (1982) (M Network) [fixed]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "171cd6b55267573e6a9c2921fb720794", "Kurt Howe", "", "Adventure 34 (Kurt Howe) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1733772165d7b886a94e2b4ed0f74ccd", "", "", "Boring Journey Escape (Hack)", "Hack of Journey - Escape", "Hack", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "1738b2e3f25ab3eef3cecb95e1d0d957", "", "", "Hangman Monkey Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17512d0c38f448712f49f36f9d185c4e", "Retroactive", "", "Qb (Release Candidate #1) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "17515a4d0b7ea5029ffff7dfa8456671", "Piero Cavina", "", "Multi-Sprite Demo V1.1 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "176d3fba7d687f2b23158098e103c34a", "Zach Matley", "", "Combat AI (16-02-2003) (Zach Matley)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "177504abd4260c4265e1338955e9fa47", "HCC Software", "", "Pitfall! (Steroids Hack)", "Hack of Pitfall! (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17754da584db6f22838eea255e68b31e", "", "", "Death Derby (v0010) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1782929e1c214b70fb6884f77c207a55", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (Prototype)", "Pitfall Harry's Jungle Adventure", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17ba72433dd41383065d4aa6dedb3d91", "", "", "SCSIcide (09-06-2001) (Joe Grand)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17badbb3f54d1fc01ee68726882f26a6", "M Network, Hal Finney, Bruce Pedersen - INTV", "MT5659", "Space Attack (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "17bbe288c3855c235950fea91c9504e9", "Dismac", "", "Pega Ladrao (Dismac)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17c0a63f9a680e7a61beba81692d9297", "U.S. Games Corporation, Tom Sloper", "VC2004", "Picnic (1982) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "17d000a2882f9fdaa8b4a391ad367f00", "Atari - GCC", "CX2676", "Centipede (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17ee158d15e4a34f57a837bc1ce2b0ce", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691, CX2691P", "Joust (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "17ee23e5da931be82f733917adcb6386", "Salu, Dennis M. Kiss", "460758", "Acid Drop (1992) (Salu) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "54", "", "", "" }, - { "1802cc46b879b229272501998c5de04f", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (1983) (Atari)", "Uses Kids/Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "180c234496f31a8671226277e0afbf2f", "", "", "Greeting Cart Mario And Luigi(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "183020a80848e06a1238a1ab74079d52", "Thomas Jentzsch", "", "Missile Command (Amiga Mouse) (2002) (TJ) (PAL)", "Uses Amiga Mouse Controller", "Homebrew", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "YES", "" }, - { "1862fca4f98e66f363308b859b5863af", "Atari", "", "128-in-1 Junior Console (Chip 1 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18760f1f9ca5e18610115cf7b815b824", "", "", "Star Fire (23-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18a970bea7ac4d29707c8d5cd559d03a", "", "", "Bridge (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18b28b386abdadb3a700ac8fb68e639a", "Manuel Polik", "", "Gunfight 2600 (MP) (PAL)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18bebbbd41c234f82b1717b1905e6027", "", "", "Space Instigators (Public Release) (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18d26111cef66dff0c8af8cf0e117843", "", "", "Tunnel Demo (Cycling Colours 2) (29-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18dc28bc22402f21e1c9b81344b3b8c5", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18ed63e3ce5bc3dd2d8bd188b807f1a2", "", "", "Stell-A-Sketch (Bob Colbert) (PD) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "18f299edb5ba709a64c80c8c9cec24f2", "Home Vision - Gem International Corp.", "VCS83111", "Asteroid Fire (1983) (Home Vision) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "19098c46da0640f2b5763167dea6c716", "Andrew Wallace", "", "Laseresal 2002 (NTSC) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "191449e40b0c56411c70772706f79224", "", "", "Multi-Color Demo 2 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19162393786098d50587827588198a86", "Jone Yuan Telephonic Enterprise Co", "", "Flag Capture (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "191ac4eec767358ee3ec3756c120423a", "", "", "Checkers (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "193f060553ba0a2a2676f91d9ec0c555", "Atari, Carol Shaw", "CX2636, CX2636P", "Video Checkers (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19829cfe884e30219c868b2d9a5b3540", "", "", "Death Derby (v0003) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "199985cae1c0123ab1aef921daace8be", "", "", "Euchre (Release Candidate 2) (PAL) (01-10-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "199eb0b8dce1408f3f7d46411b715ca9", "Parker Brothers, David Lamkins, Laura Nikolich", "PB5900", "Spider-Man (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "19a9d3f9fa1b1358fb53009444247aaf", "", "", "Blackjack (Unknown) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "56", "", "", "" }, - { "19abaf2144b6a7b281c4112cff154904", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "19d6956ff17a959c48fcd8f4706a848d", "PlayAround - J.H.M.", "202", "Burning Desire (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "25", "", "YES", "" }, - { "19d9b5f8428947eae6f8e97c7f33bf44", "", "", "Fortress (Dual Version) (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19e739c2764a5ab9ed08f9095aa2af0b", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19e761e53e5ec8e9f2fceea62715ca06", "Panda", "104", "Scuba Diver (1983) (Panda)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a23540d91f87584a04f184304a00648", "", "", "Race Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a613ce60fc834d4970e1e674b9196b3", "Home Vision - Gem International Corp.", "VCS83135", "Tanks War (1983) (Home Vision) (PAL)", "AKA Phantom Tank", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a624e236526c4c8f31175e9c89b2a22", "Rainbow Vision - Suntek", "SS-007", "Space Raid (Rainbow Vision) (PAL) [a]", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a8204a2bcd793f539168773d9ad6230", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari) [no initials]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1aa7344b563c597eecfbfcf8e7093c27", "David Marli", "", "Slot Invaders (David Marli) (Hack)", "Hack of Slot Machine", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b0f3d7af668eeea38ddd6182d8f48fb", "Jone Yuan Telephonic Enterprise Co", "", "Cosmic Swarm (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, - { "1b1daaa9aa5cded3d633bfcbeb06479c", "", "", "Ship Demo (V 1502) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b22a3d79ddd79335b69c94dd9b3e44e", "Tron", "", "Moon Patrol (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b4b06c2a14ed3ee73b7d0fd61b6aaf5", "Arcadia Corporation, Stephen Harland Landrum", "6 AR-4400", "Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b8c3c0bfb815b2a1010bba95998b66e", "Telegames", "", "Frogs and Flies (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b8d35d93697450ea26ebf7ff17bd4d1", "Quelle", "176.764 9 - 781644", "Marineflieger (1983) (Quelle) (PAL)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1bb91bae919ddbd655fa25c54ea6f532", "Suntek", "SS-026", "Treasure Island (Suntek) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1bc2427ac9b032a52fe527c7b26ce22c", "Intellivision Productions - M Network, Bruce Pedersen, Larry Zwick", "MT5860", "Sea Battle (1983) (M Network)", "High Seas", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1bef389e3dd2d4ca4f2f60d42c932509", "Dimax - Sinmax", "SM8001", "Space Robot (1983) (Dimax - Sinmax) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1bf503c724001b09be79c515ecfcbd03", "Spectravideo, David Lubar", "SA-218", "Bumper Bash (1983) (Spectravideo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "54", "", "", "" }, - { "1c3f3133a3e5b023c77ecba94fd65995", "CCE", "C-830", "Planet Patrol (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c5796d277d9e4df3f6648f7012884c4", "Quelle", "715.853 5", "Wachroboter jagt Jupy (Quelle) (PAL)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c6eb740d3c485766cade566abab8208", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c85c0fc480bbd69dc301591b6ecb422", "CCE", "", "Super Box (CCE)", "AKA RealSports Boxing", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c8c42d1aee5010b30e7f1992d69216e", "PlayAround - J.H.M.", "205", "Gigolo (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1cad3b56cc0e6e858554e46d08952861", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1cafa9f3f9a2fce4af6e4b85a2bbd254", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (1982) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "1cca2197d95c5a41f2add49a13738055", "Atari, Larry Kaplan - Sears", "CX2664 - 6-99818", "Brain Games (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "1cf59fc7b11cdbcefe931e41641772f6", "Sega", "005-01", "Buck Rogers - Planet of Zoom (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "", "YES", "" }, - { "1d1d2603ec139867c1d1f5ddf83093f1", "Atari, Larry Kaplan - Sears", "CX2602 - 99802, 6-99802, 49-75102", "Air-Sea Battle (1977) (Atari) (4K)", "AKA Target Fun (Anti-Aircraft)", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d284d6a3f850bafb25635a12b316f3d", "CCE", "", "H.E.R.O. (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d2a28eb8c95da0d6d6b18294211839f", "", "", "Fishing Derby (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d4e0a034ad1275bc4d75165ae236105", "20th Century Fox Video Games, Mark Klein", "11034", "Pick Up (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d5eac85e67b8cff1377c8dba1136929", "", "", "Chronocolor Donkey Kong Sideways (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d6ed6fe9dfbde32708e8353548cbb80", "Jone Yuan Telephonic Enterprise Co", "", "Super Challenge Baseball (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1da2da7974d2ca73a823523f82f517b3", "Spectravision, Spectravideo, David Lubar", "SA-206", "Challenge of.... Nexar, The (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1db3bc4601f22cf43be7ce015d74f59a", "", "", "Ship Demo (V 10) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e060a8025512ad2127e3da11e212ccc", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (3 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "1e0ef01e330e5b91387f75f700ccaf8f", "Quelle", "686.561 2 - 781627", "Mein Weg (1983) (Quelle) (PAL)", "AKA Challenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e1290ea102e12d7ac52820961457e2b", "Parker Brothers, Wilfredo 'Willy' Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1e1817d9cbcc3ba75043b7db4e6c228f", "", "", "Star Fire (07-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e272d09c0e55f5ef14fcb76a735f6d7", "Atari, David Crane", "CX26163P", "Slot Machine (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e4990f2bfc79b47b9b091f0a1538eeb", "", "", "Greeting Cart Sue (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e587ca91518a47753a28217cd4fd586", "Telesys, Jim Rupp, Jack Woodman", "1001", "Coco Nuts (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e750000af77cc76232f4d040f4ab060", "Jone Yuan Telephonic Enterprise Co", "", "Raft Rider (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e85f8bccb4b866d4daa9fcf89306474", "Atari, Tod Frye", "CX26122", "Sinistar (02-13-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e89f722494608d6ea15a00d99f81337", "", "", "River Raid (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "NTSC50", "", "", "", "" }, - { "1ea1abcd2d3d3d628f59a99a9d41b13b", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ea980574416bfd504f62575ba524005", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675", "Ms. Pac-Man (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ec57bbd27bdbd08b60c391c4895c1cf", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (09-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ec5bef77b91e59313cba205f15b06d7", "", "", "Overhead Adventure Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "64", "", "", "" }, - { "1ede4f365ce1386d58f121b15a775e24", "Parker Brothers, Dave Hampton, Tom Sloper", "931517", "Q-bert (1983) (Parker Bros) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1edfbde1dba5498c14dcb80277cd9b99", "", "", "Death Derby (v0006) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ee2cfc7d0333b96bd11f7f3ec8ce8bc", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (4 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ee9c1ba95cef2cf987d63f176c54ac3", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675, CX2675P", "Ms. Pac-Man (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f21666b8f78b65051b7a609f1d48608", "K-Tel Vision", "", "Vulture Attack (1982) (K-Tel Vision)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f2ae0c70a04c980c838c2cdc412cf45", "Atari - GCC", "CX2698", "Rubik's Cube (1984) (Atari)", "AKA Atari Video Cube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f349dd41c3f93c4214e5e308dccb056", "", "", "Virtual Pet Demo 2 (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f40eefc7447336ae6cd8ffa5eb325be", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) (4K) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f562b89d081e36d58e6fc943512ec05", "", "", "Hangman Man Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f5a2927a0b2faf87540b01d9d7d7fd1", "Pet Boat", "", "Tennis (Pet Boat) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f60e48ad98b659a05ce0c1a8e999ad9", "", "", "Mondo Pong V2 (Piero Cavina) (PD)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "1f773a94d919b2a3c647172bbb97f6b4", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (07-11-1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1fa58679d4a39052bd9db059e8cda4ad", "Imagic, Dan Oliver", "720118-1A, 03208", "Laser Gates (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1fa7a42c2c7d6b7a0c6a05d38c7508f4", "Coleco, Ed Temple", "", "Cabbage Patch Kids (09-04-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1fa86282403fa35d103ab88a9d603c31", "SpiceWare - Darrell Spice Jr.", "", "Stay Frosty (SpiceWare) (PAL60)", "Part of Stella's Stocking 2007 Xmas compilation", "Homebrew", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, - { "1fab68fd67fe5a86b2c0a9227a59bb95", "20th Century Fox Video Games - Videa, Lee Actor", "", "Lasercade (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "29", "", "", "" }, - { "200309c8fba0f248c13751ed4fc69bab", "Jeffry Johnston", "", "Radial Pong - Version 1 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2008c76deba5953201ef75a09b2ff7dc", "", "", "Fortress (21-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "200a9d2a7cb4441ce4f002df6aa47e38", "", "", "Doomzerk (PD) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2016726db38ad6a68b4c48ba6fe51557", "Piero Cavina, Erik Mooney", "", "INV 2 (Piero Cavina, Erik Mooney)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "203049f4d8290bb4521cc4402415e737", "Tigervision, Robert H. O'Neil - Teldec", "7-007 - 3.60005 VG", "Polaris (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "203abb713c00b0884206dcc656caa48f", "Imagic, Bob Smith", "720114-1A, 03207, IZ-001-04", "Moonsweeper (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "203b1efc6101d4b9d83bb6cc1c71f67f", "Quelle", "685.996 1", "Teller-Jonglieren! (1983) (Quelle) (PAL)", "AKA Dancing Plate", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "205070b6a0d454961dd9196a8e81d877", "", "", "Hangman Monkey Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2091af29b4e7b86914d79d9aaa4cbd20", "CBS Electronics, Harley H. Puthuff Jr.", "4L1802", "Donkey Kong Junior (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "20ae62fb69c6cc6e8098cca8cd080487", "Zirok", "", "Tennis (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "20d4457ba22517253fcb62967af11b37", "Atari, Eric Manghise, Joseph Tung", "CX2640", "RealSports Baseball (1982) (Atari) (Prototype)", "AKA Foxbat", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "20dca534b997bf607d658e77fbb3c0ee", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1002", "Fire Fly (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "20edcc3aa6c189259fa7e2f044a99c49", "Spectravision, Spectravideo", "SA-201", "Gangster Alley (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "211774f4c5739042618be8ff67351177", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684", "Galaxian (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "211f76dff0b7dad3f6fcac9d938ee61a", "JSK", "", "Custer's Viagra (JSK) (Hack) [a]", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "211fbbdbbca1102dc5b43dc8157c09b3", "Apollo", "AP-2009", "Final Approach (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2124cf92978c46684b6c39ccc2e33713", "", "", "Sea Monster (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21299c8c3ac1d54f8289d88702a738fd", "K-Tel Vision", "", "Spider Maze (1982) (K-Tel Vision)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "25", "220", "", "" }, - { "212d0b200ed8b45d8795ad899734d7d7", "Atari, Richard Maurer, Christopher H. Omarzu - Coca Cola", "", "Pepsi Invaders (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "213e5e82ecb42af237cfed8612c128ac", "Sancho - Tang's Electronic Co.", "TEC006", "Forest (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "YES", "" }, - { "2162266b906c939b35c84ff9a0f50ad1", "Atari, Larry Kaplan", "CX2664, CX2664P", "Brain Games (1978) (Atari) (PAL) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "2179dfd7edee76efafe698c1bc763735", "", "", "Yellow Submarine (Cody Pittman) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "218b76f5a4142dc2ea9051a768583d70", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "218c0fe53dfaaa37f3c823f66eafd3fc", "Atari, Alan Miller", "CX2624, CX2624P", "Basketball (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21a96301bb0df27fde2e7eefa49e0397", "Data Age", "DA1003", "Sssnake (1982) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21b09c40295c2d7074a83ae040f22edf", "", "", "Marble Craze (V0.90) (Easy Version) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21d2c435bcccde7792d82844b3cf60f4", "Atari - GCC, Doug Macrae", "CX2677, CX2677P", "Dig Dug (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21d7334e406c2407e69dbddd7cec3583", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2228c67d25e507603d4873d3934f0757", "", "", "Fu Kung! (V0.10) (28-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22319be7a640af5314ec3c482cceb676", "", "", "Joustpong (05-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2240655247d6de1c585564004a853ab7", "", "", "Fu Kung! (V0.17) (07-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "225522777dc7155627808bde0c1d0ef0", "", "", "This Planet Sucks Demo 1 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "40", "", "", "" }, - { "22675cacd9b71dea21800cbf8597f000", "Atari, David Crane", "CX2605, CX2605P", "Outlaw (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "227532d82505c3c185a878273c285d5f", "", "", "Hangman Man Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22abbdcb094d014388d529352abe9b4b", "Apollo", "AP-2012", "Squoosh (1983) (Apollo) (Prototype) [a]", "AKA Vat's Incredible!, The Grape Escape", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22b22c4ce240303012e8a9596ae8d189", "", "", "Skeleton+ (03-05-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22f6b40fc82110d68e50a1208ae0bb97", "", "", "Purple Bar Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2319922df4d0c820b3e5f15faa870cc3", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2327456f86d7e0deda94758c518d05b3", "Digitel", "", "Mr. Postman (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2351d26d0bfdee3095bec9c05cbcf7b0", "", "", "Warring Worms (19-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "235436ab0832370e73677c9c6f0c8b06", "", "", "Beast Invaders (Double Shot) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2365e1534d67f94d8670394ab99150ce", "Thomas Jentzsch", "", "Missile Command (CX-80 Trackball) (2002) (TJ)", "Uses CX-80 Trackball Controller", "Homebrew", "", "", "", "", "", "", "TRACKBALL80", "", "", "", "", "", "YES", "" }, - { "23d445ea19a18fb78d5035878d9fb649", "CBS Electronics, Sylvia Day, Henry Will IV", "4L1818, 4L1819, 4L1820", "Mouse Trap (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "23e4ca038aba11982e1694559f3be10f", "", "", "Big Dig (V3) (20-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "23fad5a125bcd4463701c8ad8a0043a9", "CCE", "C-840", "Stone Age (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "220", "", "" }, - { "240bfbac5163af4df5ae713985386f92", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2432f33fd278dea5fe6ae94073627fcc", "CBS Electronics, Tom DiDomenico", "4L2477, 4L2482, 4L2485, 4L4171", "Blueprint (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "24385ba7f5109fbe76aadc0a375de573", "CCE", "", "Xevious (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2447e17a4e18e6b609de498fe4ab52ba", "CCE", "", "Super Futebol (CCE)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "244c6de27faff527886fc7699a41c3be", "", "", "Matt Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2450dfa1df70d12b60683185775efed8", "Jeffry Johnston", "", "Radial Pong - Version 7 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24544ee5d76f579992d9522e9b238955", "Carrere Video, Tom Sloper - Teldec", "USC2004", "Picnic (1983) (Carrere Video) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "245f07c8603077a0caf5f83ee6cf8b43", "Home Vision - Thomas Jentzsch", "", "Parachute (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "24759be31e8fe55d2829fd86bdf3181f", "Hozer Video Games", "", "Gunfight 2600 - Worst Nightmare... (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "247fa1a29ad90e64069ee13d96fea6d6", "CCE", "C-867", "Radar (1983) (CCE)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2496d404bfc561a40a80bea6a69695c3", "CCE", "C-1007", "Jungle Hunt (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24ad538291eb5f5cac4b9998f3b851c3", "", "", "Gunfight 2600 - This time it's your decission! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24aff972d58990f9b88a6d787c796f1e", "CBS Electronics", "4L1767, 4L1768, 4L1769, 4L1770", "Smurf (1982) (CBS Electronics) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24b5f4bbdb853eca38ea0cae2dfe73a1", "", "", "Home Run (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "24b9adac1b4f85b0bac9bf9b9e180906", "Angelino", "", "Space 2002 (Angelino) (Hack)", "Hack of Space Jockey", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24d018c4a6de7e5bd19a36f2b879b335", "Activision, Larry Miller", "AX-021", "Spider Fighter (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "24d9a55d8f0633e886a1b33ee1e0e797", "Thomas Jentzsch", "", "Dragon Defender (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "15", "240", "YES", "" }, - { "24df052902aa9de21c2b2525eb84a255", "Imagic, Dennis Koble", "720000-100, 720100-1B, IA3000, IA3000C", "Trick Shot (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "24fbf8250a71611e40ef18552e61b009", "", "", "Movable Grid Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2516f4f4b811ede4ecf6fbeb5d54a299", "Quelle", "701.134 9", "Schiessbude (1983) (Quelle) (PAL)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2517827950fee41a3b9de60275c8aa6a", "Atari", "CX26163P", "Fishing (32 in 1) (1988) (Atari) (PAL)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25265d0e7f88b3026003809f25ee025e", "Atari - GCC, Ava-Robin Cohen", "CX26123", "Jr. Pac-Man (1984) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25472dfdeef6a42581a231d631d6b04d", "", "", "Gunfight 2600 - Design thoughts (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25710bde8fa181b0c5cf0846b983bec1", "", "", "Demo Image Series #15 - Three Marios (NTSC) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "257bc3b72a6b5db3fd0d47619125b387", "CBS Electronics", "4L 2737 0000", "Omega Race (1983) (CBS Electronics) [a]", "Set right difficulty to 'A' for BoosterGrip in both ports", "", "", "", "", "", "", "", "BOOSTERGRIP", "BOOSTERGRIP", "", "", "", "", "", "" }, - { "25a21c47afe925a3ca0806876a2b4f3f", "Quelle", "685.640 5", "Der kleine Baer (1983) (Quelle) (PAL)", "AKA Frostbite", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25a943e9d5e312b516660b0627352448", "", "", "Image - Baboon (Interlaced Demo 1) (15-02-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25b52bf8dd215bcbd59c9abdb55c44f8", "Atari - GCC, Betty Ryan Tylko, Doug Macrae", "CX2694, CX2694P", "Pole Position (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25b6dc012cdba63704ea9535c6987beb", "Avalon Hill, Jean Baer, Bill Hood", "5004002", "Shuttle Orbiter (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "25bb080457351be724aac8a02021aa92", "CBS Electronics", "4L1784, 4L1786, 4L2277", "Zaxxon (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25bcf07491f65012a70a528959c4881c", "", "", "Greeting Cart Brook Burke Blue Bikini(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25d4be3309b89583c6b39d9f93bf654f", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25e73efb9a6edf119114718bd2f646ba", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "25f2e760cd7f56b88aac88d63757d41b", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25f9cf703575c5d63048c222f5463758", "", "", "Multi-Sprite Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "260c787e8925bf3649c8aeae5b97dcc0", "Thomas Jentzsch", "", "Hell Driver (Thomas Jentzsch)", "NTSC Conversion, joystick ports swapped", "Homebrew", "", "", "", "", "", "YES", "", "", "", "", "36", "", "", "" }, - { "262ccb882ff617d9b4b51f24aee02cbe", "Atari, Douglas Neubauer", "CX26154, CX26154P", "Super Football (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "265a85f66544eaf95fda06c3d9e48abf", "", "", "Tunnel Demo (Cycling Colours) (29-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "265c74a956500bd31efd24adc6d5ccf6", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2683d29a282dd059535ac3bb250f540d", "", "", "Space Treat (12-01-2003) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "268f46038e29301568fa9e443e16e960", "Atarius Maximum", "", "Pitfall Unlimited (Atarius Maximus) (Hack)", "Hack of Pitfall", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "26bc2bdf447a17376aea7ef187ff6e44", "", "", "Amanda Invaders (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "26f4f8b098609164effef7809e0121e1", "", "", "Oystron (V2.7) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "270229c6d5578446e6a588492e4e5910", "", "", "Space Invaders 2 (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "271bfd5dc2673d382019f1fb6cab9332", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "273ce50db5a0d6da7ea827a54f44dee9", "", "", "Island Flyer Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "274d17ccd825ef9c728d68394b4569d2", "Playaround - J.H.M.", "202", "Bachelorette Party (1982) (Playaround)", "AKA Bachelor Party, Uses the paddle controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "22", "222", "YES", "" }, - { "277c7281ac945b8331e2e6fcad560c11", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (2 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "277cca62014fceebb46c549bac25a2e3", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "277fa4b9a6bb7a8dcea2c5f38a4c25f0", "Atari, Alan J. Murphy, Robert Zdybel", "CX2668", "RealSports Football (1982) (Atari) (Prototype)", "AKA Football II", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "278155fc9956e9b6ef2359eb238f7c7f", "", "", "Donkey Kong Junior (Unknown) (Hack)", "Hack of Donkey Kong Junior", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2783006ee6519f15cbc96adae031c9a9", "Telegames", "", "Night Stalker (1989) (Telegames) (PAL) [a]", "AKA Dark Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "278f14887d601b5e5b620f1870bc09f6", "Thomas Jentzsch", "", "SWOOPS! (v0.96) (TJ)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "PADDLES", "", "", "30", "", "", "" }, - { "27a3c5216b6c6e96e321634973b73784", "", "", "Greeting Cart Atari Coin (V1) (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "27c4c2af4b46394bb98638af8e0f6e9d", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "27c6a2ca16ad7d814626ceea62fa8fb4", "Parker Brothers, Mark Lesser", "PB5590", "Frogger II (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "27c8a76cf59a9fc6b667468ef1e3f9e9", "", "", "Greeting Cart Atari-Troll(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "27f9e2e1b92af9dc17c6155605c38e49", "CCE", "", "Nightmare (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2808dc745ff4321dc5c8122abef6711f", "Retroactive", "", "Qb (2.11) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "28148a52b1955ce12c7a74d3a3e620a4", "CCE", "", "Freeway (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "281ff9bd0470643853de5cbd6d9e17f5", "Eckhard Stolberg", "", "Cubis (EM) (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2823364702595feea24a3fbee138a243", "Bit Corporation", "PG206", "Bobby Is Going Home (1983) (BitCorp) (PAL)", "AKA Bobby geht Heim", "Rare", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "2825f4d068feba6973e61c84649489fe", "", "", "Boom Bang (Unknown) (PAL)", "AKA Crackpots", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "282a77841cb3d33af5b56151acba770e", "Quelle", "311388", "Black Hole (1983) (Quelle) (PAL)", "AKA Cosmic Ark (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "283dee88f295834c4c077d788f151125", "Retroactive", "", "Qb (2.11) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "284ca61b2407bdba3938048b0a559015", "Atari, Tod Frye", "CX2695", "Xevious (05-25-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2854e5dfb84173fafc5bf485c3e69d5a", "Canal 3 - Intellivision", "C 3004", "Moon Patrol (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2880c6b59bd54b153174676e465167c7", "Tron", "", "Donkey Kong Jr. (Tron)", "AKA Donkey Kong Junior", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "28a2bea8f84936cb2e063f857414cda0", "Thiago Paiva", "", "Mega Mania Raid (1999) (Thiago Paiva) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "28a4cd87fb9de4ee91693a38611cb53c", "", "", "Skeleton (V1.1) (NTSC) (24-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "28d5df3ed036ed63d33a31d0d8b85c47", "Goliath", "5", "Open Sesame (1983) (Goliath) (PAL) [a]", "AKA Open, Sesame!", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2903896d88a341511586d69fcfc20f7d", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "291bcdb05f2b37cdf9452d2bf08e0321", "Atari", "CX26163P", "32 in 1 Game Cartridge (1988) (Atari) (Prototype) (PAL)", "", "Prototype", "", "32IN1", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "291cc37604bc899e8e065c30153fc4b9", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "291dd47588b9158beebe4accc3a093a6", "Atari", "", "32 in 1 Console ROM (02-10-1989) (Atari) (Prototype) (PAL)", "", "Prototype", "", "32IN1", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "292a0bb975b2587f9ac784c960e1b453", "", "", "Qb (05-02-2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "292f2446a0325b7b423e88a2ebfeb5a0", "", "", "Cube Conquest (Non Interlaced) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "29396db58406084e416032c372734a3e", "", "", "Gunfight 2600 - Fixed Beta Release! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2942680c47beb9bf713a910706ffabfe", "", "", "Blue Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "294762000e853b4319f9991c1ced5dfc", "", "", "T.F. Space Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "295f3679bdf91ca5e37da3f787b29997", "", "", "Exorcise (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "29630a20d356fb58685b150bfa8f00c3", "M Network, Kevin Miller", "MT5687", "International Soccer (1982) (Mattel) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "297c405afd01f3ac48cdb67b00d273fe", "Atari - GCC, Ava-Robin Cohen", "CX26123, CX26123P", "Jr. Pac-Man (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2982e655dffc89d218a0a3072cfc6811", "", "", "Mini Golf 812631 (Hack)", "Hack of Miniature Golf", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "298387b0637173d2002770a649b4fbca", "", "", "S.I.PLIX 2 (Hack) [a]", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "29949f893ef6cb9e8ecb368b9e99eee4", "Erik Eid", "", "Euchre (Alpha) (NTSC) (31-08-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "299eb1ad959176b2c89f36082ee5e861", "", "", "Death Derby (14-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "29dfa26b7988af9984d617708e4fc6e2", "", "", "Boulderdash Demo (05-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a0ba55e56e7a596146fa729acf0e109", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a10053fd08664c7cfbbb104386ed77f", "", "", "Alpha Demo - The Beta Demo (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a1b454a5c3832b0240111e7fd73de8a", "Tigervision, Bill Hogue", "7-011", "Miner 2049er Volume II (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "YES", "" }, - { "2a2f46b3f4000495239cbdad70f17c59", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2a33e21447bf9e13dcfed85077ff6b40", "", "", "Backwards Cannonball v2 (Hack)", "Hack of Human Cannonball", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a360bc85bf22de438651cf92ffda1de", "Bit Corporation", "PGP213", "Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a9f9001540c55a302befd8e9d54b47b", "Atari, Dan Hitchens", "CX2697, CX2697P", "Mario Bros. (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2aa5e56d36c2e58b6f2856109f2099a9", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2aba6a1b01a5859e96d6a66d2286772f", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2abc3d46b3f2140160759e2e10bc86d9", "", "", "Gunfight 2600 - Beta Release! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ac3a08cfbf1942ba169c3e9e6c47e09", "Activision, Dan Kitchen", "EAK-046-04B", "Fighter Pilot (1988) (Activision) (PAL)", "AKA Tomcat - The F-14 Fighter Simulator", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ae700c9dba843a68dfdca40d7d86bd6", "TechnoVision - Thomas Jentzsch", "", "Pharaoh's Curse (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "40", "240", "YES", "" }, - { "2b1589c7e1f394ae6a1c046944f06688", "Carrere Video, Todd Marshall, Wes Trager, Henry Will IV - Teldec", "USC2003", "Eggomania (1983) (Carrere Video) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "2b27eb194e13f3b38d23c879cc1e3abf", "Quelle", "402.272 9", "Super-Ferrari (1983) (Quelle) (PAL)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2b42da79a682ed6e2d735facbf70107e", "", "", "DKjr Improved (Hack)", "Hack of Donkey Kong Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2b430c00dc79e495762ac59b2f9b4fcd", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2b71a59a53be5883399917bf582b7772", "Greg Troutman", "", "Dark Mage (final beta) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2ba02f509a4991aa176ba8d9e540df3d", "Atari, Mark R. Hahn", "CX2678", "Dukes of Hazzard (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bb0a1f1dee5226de648eb5f1c97f067", "Robby", "", "Enduro (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bb9f4686f7e08c5fcc69ec1a1c66fe7", "Atari - GCC, Mike Feinstein, John Allred", "CX2688", "Jungle Hunt (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bc26619e31710a9884c110d8430c1da", "Atari, Bob Whitehead", "CX2652, CX2652P", "Casino (1979) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "60", "", "", "" }, - { "2bc6c53b19e0097a242f22375a6a60ff", "", "", "Droid Demo 2 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bee7f226d506c217163bad4ab1768c0", "Xonox - K-Tel Software - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "2bf34b6ad7d2317a2d0808b3fb93571b", "", "", "Easy Playfield Graphics (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c0dc885d5ede94aa664bf3081add34e", "", "", "Earth Dies Screaming, The (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c29182edf0965a7f56fe0897d2f84ba", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (08-18-1990) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c2aea31b01c6126c1a43e10cacbfd58", "Paul Slocum", "", "Synthcart (2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "YES", "" }, - { "2c3b2843295c9d6b16996971180a3fe9", "HES - Activision", "", "Sports Action Pak - Enduro, Ice Hockey, Fishing Derby, Dragster (1988) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c3b9c171e214e9e46bbaa12bdf8977e", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c3d5df0a55500cd59916dbb4fee3fa4", "", "", "Death Derby (Experiment 02) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c45c3eb819a797237820a1816c532eb", "Atari", "CX26163P", "Boxing (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c8835aed7f52a0da9ade5226ee5aa75", "Arcadia Corporation, Stephen Harland Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c8c11295d8613f875b7bcf5253ab9bb", "Fabrizio Zavagli", "", "Kool Aid Man (PAL Conversion) (16-11-2002) (Fabrizio Zavagli) (PAL60)", "PAL60 Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "2c9fadd510509cc7f28f1ccba931855f", "", "", "Hangman Invader Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ca6445204ffb7686ddee3e33ba64d5b", "Alex Herbert", "", "AtariVox Test ROM", "Uses the AtariVox controller", "", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "" }, - { "2cb42cf62b2f25f59f909b5447821b14", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (1983) (Atari) (PAL) [a]", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "2cccc079c15e9af94246f867ffc7e9bf", "PlayAround - J.H.M.", "203", "Jungle Fever (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "2cefa695df2ed020899a7df7bb1e3a95", "Manuel Polik, Fabrizio Zavagli", "", "A-Team (2002) (Manuel Polik) (Hack)", "Hack of A-Team", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2cf20f82abcae2decff88db99331e071", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2cfb188c1091cc7ec2a7e60064d2a758", "", "", "Space Invaders Hack Demo (2003) (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d16a8b59a225ea551667be45f554652", "Quelle", "802.744 3", "Der Geheimkurier (1983) (Quelle) (PAL)", "AKA Mr. Postman", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d1cf85fbc732856bf76470cd4060f4a", "", "", "Daredevil (V1) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d2c5f0761e609e3c5228766f446f7f8", "Atari - Axlon, Steve DeFrisco", "CX26170, CX26170P", "Secret Quest (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d405da70af82b20a6b3ecc3d1d2c4ec", "Genus", "", "Pitfall (Genus)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d6741cda3000230f6bbdd5e31941c01", "CBS Electronics", "80110", "Targ (1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d69a5f23784f1c2230143292a073b53", "", "", "Qb (Fixed background animation) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2d6da0eb85eabc93270e5bb8a466ca51", "", "", "Sprite Demo 7 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d76c5d1aad506442b9e9fb67765e051", "Apollo - Games by Apollo, Ernie Runyon, Ed Salvo", "AP-2004", "Lost Luggage (1981) (Apollo) [no opening scene]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d9e5d8d083b6367eda880e80dfdfaeb", "Selchow & Righter - QDI", "87", "Glib (1983) (Selchow & Righter)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d9e65959808a6098c16c82a59c9d9dc", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2dbc92688f9ba92a7e086d62be9df79d", "", "", "How to Draw a Playfield (1997) (Jim Crawford) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2dbdca3058035d2b40c734dcf06a86d9", "Thomas Jentzsch", "", "Asteroids DC+ (Thomas Jentzsch) (Hack)", "Uses the Joystick (left) or Steering (right) Controller", "Hack", "", "", "", "", "", "", "", "DRIVING", "", "", "", "", "YES", "" }, - { "2dcf9ce486393cd36ca0928cd53b96cb", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2dfec1615c49501fefc02165c81955e6", "", "", "Song (05-11-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2e0aed5bb619edcefa3fafb4fbe7c551", "", "", "Qb (2.06) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2e1401b931c9eb064af5e0a7184e598d", "", "", "Death Derby (v0008) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e2885e68fa1045871ce1382b68f6efc", "", "", "Star Fire - Return of the Crosshair (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e2acef8513edcca991e7e5149412e11", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (16K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e3728f3086dc3e71047ffd6b2d9f015", "Atari, David Crane", "CX26163P", "Outlaw (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e5b184da8a27c4d362b5a81f0b4a68f", "Atari", "", "Rabbit Transit (08-29-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e663eaa0d6b723b645e643750b942fd", "Atari, Tom Rudadahl - Sears", "CX2634 - 49-75121", "Golf (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e7e9c6dcfcceaffc6fa73f0d08a402a", "CCE", "C-818", "Star Voyager (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e82a1628ef6c735c0ab8fa92927e9b0", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e842c2ee22e9dad9df16eed091315c4", "HES", "0701-157", "2 Pak Special - Motocross, Boom Bang (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2eaf8fa9e9fdf1fcfc896926a4bdbf85", "Arcadia Corporation, Stephen Harland Landrum", "6 AR-4400", "Excalibur Version 39 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ec6b045cfd7bc52d9cdfd1b1447d1e5", "Activision, David Crane - Ariola", "EAG-009, PAG-009 - 711 009-720", "Freeway (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2eda6a49a49fcb2b674ea9e160b6a617", "Kyle Pittman", "", "Rambo in Afghanistan (Kyle Pittman) (Hack)", "Hack of Riddle of the Sphinx", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ef36341d1bf42e02c7ea2f71e024982", "", "", "Space Invaders (Explosion Hack)", "Hack of Space Invaders (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f0546c4d238551c7d64d884b618100c", "Sega, Jeff Lorenz", "", "Ixion (1984) (Sega) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f0a8bb4e18839f9b1dcaa2f5d02fd1d", "CCE", "", "Super Futebol (CCE) [a]", "AKA RealSports Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2f11ba54609777e2c6a5da9b302c98e8", "Atari - GCC", "CX2676", "Centipede (1982) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f16663b01591539624d0ef52934a17d", "M Network", "", "Rocky and Bullwinkle", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f2f9061398a74c80420b99ddecf6448", "Rentacom - Brazil", "", "Bobby Is Going Home (Rentacom)", "", "", "", "", "", "", "", "", "", "", "", "", "31", "", "", "" }, - { "2f66ebf037321ed0442ac4b89ce22633", "Baroque Gaming (Brian Eno)", "", "Warring Worms (Beta 2) (2002) (Baroque Gaming)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f77f015fc880b05f28e84156f989a0c", "", "", "Plane Demo (Gonzalo) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f7949f71076db42480d3f5036b4a332", "", "", "Name This Game (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2fa5f90deb8b84ecaf64f5fb11c0fd93", "", "", "Death Derby (19-01-2003) (TJ) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2facd460a6828e0e476d3ac4b8c5f4f7", "Sancho - Tang's Electronic Co.", "", "Words-Attack (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3025bdc30b5aec9fb40668787f67d24c", "", "", "Demo Image Series #14 - Two Marios (4K Interleaved Chronocolour Vertical Movement) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "303242c239474f2d7763b843de58c1c3", "CCE", "", "Laser Blast (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "304512528a5530a9361e8a231ed9a6de", "Thomas Jentzsch", "", "River Raid Plus (Thomas Jentzsch) (Hack)", "Hack of River Raid", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30512e0e83903fc05541d2f6a6a62654", "Atari, Jim Huether - Sears", "CX2644 - 6-99824", "Flag Capture (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30516cfbaa1bc3b5335ee53ad811f17a", "Wizard Video Games, Robert Barber, Tim Martin", "007", "Halloween (1983) (Wizard Video Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3051b6071cb26377cd428af155e1bfc4", "Atari, David Crane - Sears", "CX2607 - 6-99828, 49-75115", "Canyon Bomber (1979) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "42", "", "", "" }, - { "30685b9b6ebd9ba71536dd7632a1e3b6", "Dactari - Milmar", "", "Tennis (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3091af0ef1a61e801f4867783c21d45c", "CCE", "C-862", "Crackpots (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30997031b668e37168d4d0e299ccc46f", "", "", "John K Harvey's Equalizer (PAL) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "30c92c685224dc7a72b9bbe5eb62d004", "", "", "Hangman Monkey Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30e012e8d50330c8972f126b8e913bc4", "", "", "Indy 500 (Hack) [a2]", "Hack of Indy 500", "Hack", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "28", "", "", "" }, - { "30e0ab8be713208ae9a978b34e9e8e8c", "Atari, Mike Lorenzen", "CX2630, CX2630P", "Circus Atari (1980) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "30f0b49661cfcfd4ec63395fab837dc3", "Sega, Jeff Lorenz - Teldec", "004-01", "Star Trek - Strategic Operations Simulator (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3105967f7222cc36a5ac6e5f6e89a0b4", "Sega, Jeff Lorenz - Bally Midway", "011-01, 011-02", "Spy Hunter (1984) (Sega)", "Uses Joystick Coupler (Dual Control Module)", "", "", "", "", "", "", "", "", "", "", "", "29", "", "", "" }, - { "310ba30e25ea8957e58180b663503c0c", "Ed Federmeyer", "", "Sound X6 (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "313243fc41e49ef6bd3aa9ebc0d372dd", "", "", "Fast Food (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31512cdfadfd82bfb6f196e3b0fd83cd", "Tigervision", "7-004", "River Patrol (1984) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3177cc5c04c1a4080a927dfa4099482b", "Atari", "CX26135", "RealSports Boxing (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "317a4cdbab090dcc996833d07cb40165", "Goliath - Hot Shot", "83-312", "Missile War (1983) (Goliath) (PAL)", "AKA Astrowar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "318046ae3711c05fd16e479b298e5fcc", "Retroactive", "", "Qb (V2.08) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "318a9d6dda791268df92d72679914ac3", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "319a142aab6260842ab616382848c204", "", "", "Marble Craze (05-02-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31bb9b8ceed46cb3e506777a9e65f3ce", "Bit Corporation", "", "4 Game in One Light Green (1983) (BitCorp) (PAL)", "Phantom UFO, Ice Hockey, Cosmic Avenger, Spy Vs. Spy", "", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31d08cb465965f80d3541a57ec82c625", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31df1c50c4351e144c9a378adb8c10ba", "Quelle", "687.463 0", "Die Ratte und die Karotten (1983) (Quelle) (PAL)", "AKA Gopher", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31e518debba46df6226b535fa8bd2543", "Atari, Douglas 'Solaris' Neubauer", "CX26134", "Last Starfighter (1984) (Atari) (Prototype)", "Solaris Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31f4692ee2ca07a7ce1f7a6a1dab4ac9", "Atari, Alan Miller", "CX2642", "Game of Concentration (1980) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "31fcbce1cfa6ec9f5b6de318e1f57647", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32199271dc980eb31a2cc96e10a9e244", "", "", "Radial Pong - Version 12 (Jeffry Johnston) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "321c3451129357af42a375d12afd4450", "Atari", "CX26177", "Ikari Warriors (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32244e55ce6ec6bfbd763f33384bdc2e", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3225676f5c0c577aeccfaa7e6bedd765", "CCE", "C-1002", "Pole Position (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "322b29e84455aa41e7cc9af463bffa89", "Atari, Robert C. Polaro", "CX2663", "Road Runner (06-25-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "44", "", "", "" }, - { "324cb4a749bcac4f3db9da842b85d2f7", "Dennis Debro", "", "Climber 5 (01-05-2003) (Dennis Debro)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "327468d6c19697e65ab702f06502c7ed", "Charles Morgan", "", "Aster-Hawk (2002) (Charles Morgan) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3276c777cbe97cdd2b4a63ffc16b7151", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691", "Joust (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "327fe8cf94f3a45c35a840a453df1235", "", "", "Spice Girls Rule Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "328949872e454181223a80389d03c122", "", "", "Home Run (Unknown) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "32d1260ea682e1bb10850fa94c04ec5f", "Atari, Alan Miller", "CX26163P", "Basketball (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32dcd1b535f564ee38143a70a8146efe", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox)", "AKA Thundarr the Barbarian", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "32e65d1e4dfcbcd9b57fee72cafe074c", "", "", "Eckhard Stolberg's Scrolling Text Demo 3 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32ecb5a652eb73d287e883eea751d99c", "Dactar - Milmar", "", "Bowling (Dactar - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32f4e47a71601ab06cfb59e1c6a0b846", "Ed Federmeyer", "", "Sound X (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3316ee2f887e9cb9b54dd23c5b98c3e2", "", "", "Texas Golf (miniature Gold Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "331938989f0f33ca39c10af4c09ff640", "Zach Matley", "", "Combat - Tank AI (19-04-2003) (Zach Matley)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "332f01fd18e99c6584f61aa45ee7791e", "", "", "X'Mission (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "0", "", "YES", "" }, - { "3347a6dd59049b15a38394aa2dafa585", "Parker Brothers, Robert Jaeger", "PB5760", "Montezuma's Revenge (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3349fbd01dde378b31f72bd8dc793dc5", "", "", "Greeting Cart (RSIDDALL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "335793736cbf6fc99c9359ed2a32a49d", "", "", "Analog Clock (V0.0) (20-01-2003) (AD) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "335a7c5cfa6fee0f35f5824d1fa09aed", "Sega, Steve Beck, Phat Ho - Beck-Tech - Teldec", "006-01 - 3.60105 VG", "Congo Bongo (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3367eeba3269aa04720abe6169767502", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3391f7c4c656793f92299f4187e139f7", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a4]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "33cac5e767a534c95d292b04f439dc37", "Jone Yuan Telephonic Enterprise Co", "", "Tapeworm (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "33d68c3cd74e5bc4cf0df3716c5848bc", "CBS Electronics, Tom DiDomenico", "4L 2486 5000", "Blueprint (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "YES", "" }, - { "33ed6dfac4b9ea2f81f778ceddbb4a75", "Activision", "", "River Raid (1982) (SpkSoft) [t1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "340f546d59e72fb358c49ac2ca8482bb", "Sancho - Tang's Electronic Co.", "TEC003", "Skindiver (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "39", "", "", "" }, - { "34340c8eecd1e557314789cc6477e650", "Joe Grand", "", "SCSIcide Pre-release 4 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "345488d3b014b684a181108f0ef823cb", "CBS Electronics, Tom DiDomenico", "4L 2486 5000", "Blueprint (1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "31", "", "", "" }, - { "345758747b893e4c9bdde8877de47788", "CBS Electronics, Joseph Biel", "4L1802, 4L1803, 4L1804, 4L2278", "Venture (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "345769d085113d57937198262af52298", "Rainbow Vision - Suntek", "SS-007", "Space Raid (Rainbow Vision) (PAL)", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "346555779a2d51b48833463b5433472f", "", "", "Thrust (V0.1) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "348615ffa30fab3cec1441b5a76e9460", "Activision, Alan Miller - Ariola", "EAX-016, PAX-016 - 711 016-725", "StarMaster (1982) (Activision) (PAL) [fixed]", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34b269387fa1aa5a396636f5ecdd63dd", "", "", "Marble Craze (mc7_23) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34c808ad6577dbfa46169b73171585a3", "Apollo", "AP-2012", "Squoosh (1983) (Apollo) (Prototype)", "AKA Vat's Incredible!, The Grape Escape", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34ca2fcbc8ba4a0b544acd94991cfb50", "Atari, Robert C. Polaro", "", "Dukes of Hazzard (1980) (Atari) (Prototype) (4K)", "AKA Stunt Cycle", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34e37eaffc0d34e05e40ed883f848b40", "Retroactive", "", "Qb (2.15) (Retroactive) (Stella)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "34f4b1d809aa705ace6e46b13253fd3b", "Aaron Bergstrom", "", "Nothern Alliance (Aaron Bergstrom) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34fd4fcb40ff5babce67f8b806d5969c", "", "", "Boxing (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "350e0f7b562ec5e457b3f5af013648db", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (06-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35163b56f4a692a232ae96ad3e23310f", "Retroactive", "", "Qb (2.12) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3556e125681aea864e17b09f3f3b2a75", "", "", "Incoming (2 Player Demo) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3576037c9281656655fa114a835be553", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3577e19714921912685bb0e32ddf943c", "TechnoVision", "TVS1003", "Pharaoh's Curse (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "35ae903dff7389755ad4a07f2fb7400c", "", "", "Colored Wall Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35b10a248a7e67493ec43aeb9743538c", "Dor-x", "", "Defender (Dor-x) (Hack)", "Hack of Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35b43b54e83403bb3d71f519739a9549", "Parker Brothers, Dave Engman, Isabel Garret", "", "McDonald's (06-06-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35be55426c1fec32dfb503b4f0651572", "Men-A-Vision", "", "Air Raid (Men-A-Vision) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "NTSC50", "", "", "YES", "" }, - { "35fa32256982774a4f134c3347882dff", "Retroactive", "", "Qb (V0.05) (Macintosh) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "360ba640f6810ec902b01a09cc8ab556", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (06-15-1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "360c0dcb11506e73bd0b77207c81bc62", "Digitel", "", "Enduro (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3619786f6a32efc1e4a262d5aca8a070", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3624e5568368929fabb55d7f9df1022e", "Activision, Dan Kitchen", "EAK-050-04", "Double Dragon (1989) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36306070f0c90a72461551a7a4f3a209", "U.S. Games Corporation, Roger Booth, Sylvia Day, Ron Dubren, Todd Marshall, Wes Trager, Henry Will IV", "VC1007", "Name This Game (1982) (U.S. Games)", "AKA Guardians of Treasure, Octopussy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36547bc6faa5132b87504e18d088e1d7", "", "", "Cosmic Swarm (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "367411b78119299234772c08df10e134", "Atari", "CX26163P", "Skiing (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3685060707df27d4091ba0ea2dc4b059", "", "", "PezZerk - PezMan in Ghost Manor (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "368d88a6c071caba60b4f778615aae94", "Atari, Matthew L. Hubbard", "CX26159", "Double Dunk (1989) (Atari)", "AKA Super Basketball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36a701c60a9f9768d057bc2a83526a80", "", "", "Cube Conquest (Interlaced) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "36b20c427975760cb9cf4a47e41369e4", "Atari", "CX26143", "Donkey Kong (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36c29ceee2c151b23a1ad7aa04bd529d", "Atari - GCC, Ava-Robin Cohen", "CX26123", "Jr. Pac-Man (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36c31bb5daeb103f488c66de67ac5075", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "30", "", "", "" }, - { "36c993dc328933e4dd6374a8ffe224f4", "Gameworld", "133-007", "Bermuda Triangle (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "48", "", "", "" }, - { "36e47ed74968c365121eab60f48c6517", "Quelle", "343.373 7", "Master Builder (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36edef446ab4c2395666efc672b92ed0", "Atari - Axlon", "CX26168", "Off the Wall (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36f9a953ebdd9a8be97ccf27a2041903", "", "", "Chinese Character Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37252757a79dc5b174e3c03d6ea0bdcb", "", "", "Sky Diver (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "372bddf113d088bc572f94e98d8249f5", "Bomb - Onbase", "CA285", "Wall-Defender (1983) (Bomb) (PAL)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "373b8a081acd98a895db0cb02df35673", "", "", "Demo Image Series #5 - Boofly (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3750f2375252b6a20e4628692e94e8b1", "Dismac", "", "Ases do Ar (Dismac)", "AKA Sky Jinks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37527966823ee9243d34c7da8302774f", "", "", "Word Zapper (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "376944889dcfa96c73d3079f308e3d32", "Retroactive", "", "Qb (0.11) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "378a62af6e9c12a760795ff4fc939656", "Atari - Axlon, Steve DeFrisco", "CX26171", "MotoRodeo (1990) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "378c118b3bda502c73e76190ca089eef", "Atari, Alan Miller", "CX2662P", "Hangman (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37ab3affc7987995784b59fcd3fcbd31", "", "", "Sprite Test (29-11-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37b98344c8e0746c486caf5aaeec892a", "K-Tel Vision", "6", "Spider Maze (1982) (K-Tel Vision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37f42ab50018497114f6b0f4f01aa9a1", "", "", "Droid Demo 2-M (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37fd7fa52d358f66984948999f1213c5", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (Rainbow Vision) (PAL) [a2]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "384db97670817103dd8c0bbdef132445", "Atari - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "384f5fbf57b5e92ed708935ebf8a8610", "20th Century Fox Video Games, John W.S. Marvin", "11009", "Crypts of Chaos (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3856b9425cc0185ed770376a62af0282", "Kyle Pittman", "", "Yellow Submarine (Kyle Pittman) (Hack)", "Hack of Bermuda Triangle", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "386ff28ac5e254ba1b1bac6916bcc93a", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "3882224adbd0ca7c748b2a1c9b87263e", "Atari, Tod Frye", "CX2657", "SwordQuest - FireWorld (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3889351c6c2100b9f3aef817a7e17a7a", "CCE", "", "Dolphin (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3897744dd3c756ea4b1542e5e181e02a", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (05-05-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38bd172da8b2a3a176e517c213fcd5a6", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38c362dcd5cad5a62e73ae52631bd9d8", "Jake Patterson", "", "Baubles (14-11-2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38cf93eacfb2fa9a2c5e39059ff35a74", "Greg Zumwalt", "", "WacMan (2003) (Greg Zumwalt) (Hack)", "Hack of Ms. Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38de7b68379770b9bd3f7bf000136eb0", "Imagic, Mark Klein", "EIZ-003-04I", "Subterranea (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "391764720140c432aec454a468f77a40", "Video Game Program", "", "Miss Pack Man (Video Game Program) (PAL)", "AKA Ms. Pac-Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "392d34c0498075dd58df0ce7cd491ea2", "Atari, Frank Hausman, Steve Woita", "CX2686", "Quadrun (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "392f00fd1a074a3c15bc96b0a57d52a1", "Atari, Rob Fulop - Sears", "CX2633 - 49-75119", "Night Driver (1980) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "YES", "" }, - { "393948436d1f4cc3192410bb918f9724", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "393e41ca8bdd35b52bf6256a968a9b89", "U.S. Games Corporation", "VC1012", "M.A.D. (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3947eb7305b0c904256cdbc5c5956c0f", "Jone Yuan Telephonic Enterprise Co", "", "Lilly Adventure (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "30", "230", "", "" }, - { "396f7bc90ab4fa4975f8c74abe4e81f0", "Atari, Larry Kaplan - Sears", "CX2612 - 99804, 49-75103", "Street Racer (1977) (Atari)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "", "", "", "", "" }, - { "39790a2e9030751d7db414e13f1b6960", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39a6a5a2e1f6297cceaa48bb03af02e9", "", "", "Pitfall 2 Plus (Hack)", "Hack of Pitfall 2", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39bf392448c8bd39d48acc95ed3b423f", "", "", "Greeting Cart Barb (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39c78d682516d79130b379fa9deb8d1c", "Apollo - Games by Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39d36366ae7e6dfd53393fb9ebab02a0", "CCE", "C-811", "River Raid (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39da69ff9833f8c143f03b6e0e7a996b", "Charles Morgan", "", "Ventrra Invaders 2002 (Charles Morgan) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39fe316952134b1277b6a81af8e05776", "Robby", "18", "River Raid (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a2e2d0c6892aa14544083dfb7762782", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3a35d7f1dc2a33565c8dca52baa86bc4", "", "", "Rubik's Cube Demo 2 (23-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a51a6860848e36e6d06ffe01b71fb13", "Retroactive", "", "Qb (2.07) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3a526e6a1f9fe918af0f2ce997dfea73", "CBS Electronics, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1982) (CBS Electronics) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a53963f053b22599db6ac9686f7722f", "", "", "Word Zapper (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a771876e4b61d42e3a3892ad885d889", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Defender II (1988) (Atari)", "AKA Stargate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3aad0ef62885736a5b8c6ccac0dbe00c", "Dynacom", "", "Atlantis (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ab5d138e26d88c8190e7cc629a89493", "", "", "Phased Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3ac6c50a8e62d4ce71595134cbd8035e", "Absolute Entertainment, Dan Kitchen", "AK-046-04", "Tomcat (1988) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "3ad58b53a1e972396890bd86c735e78d", "Arcadia Corporation, Stephen Harland Landrum", "6 AR-4400", "Excalibur Version 36 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b097a7ed5bd2a84dc3d3ed361e9c31c", "", "", "Interleaved ChronoColour Demo (PAL) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b10106836565e5db28c7823c0898fbb", "Xonox - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "3b2c32fcd331664d037952bcaa62df94", "Xonox", "6230, 6250", "Super Kung-Fu (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b37ebc0674e3d5e49ffbdc4b65607a6", "", "", "Greeting Cart Decepticon(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b5751a8d20f7de41eb069f76fecd5d7", "", "", "Eckhard Stolberg's Scrolling Text Demo 4 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b64a00ce147c3c29f7f8f8e531d08d8", "", "", "This Planet Sucks (16K) (Greg Troutman)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "3b69f8929373598e1752f43f8da61aa4", "Apollo - Games by Apollo - RCA Video Jeux", "AP-2006", "Infiltrate (1981) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3b6dba1a24bb2893bd3bd0593f92016b", "CBS Electronics / Thomas Jentzsch", "", "Omega Race JS (TJ)", "Hack of Omega Race (CBS Electronics)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b76242691730b2dd22ec0ceab351bc6", "M Network, Connie Goldman, Joe King, Patricia Lewis Du Long, Gerald Moore, Mike Sanders, Jossef Wagner - INTV", "MT4319", "Masters of the Universe (1983) (M Network)", "", "", "", "", "", "A", "", "", "", "", "", "", "25", "", "YES", "" }, - { "3b80b8f52a0939e16b5059f93a3fc19a", "V007", "", "Virtual Pet (V007) (after Demo 2) (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b86a27132fb74d9b35d4783605a1bcb", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b8aacf5f5638492b926b5124de19f18", "Atari, Tod Frye - Sears", "CX2646 - 49-75185", "Pac-Man (1981) (Atari) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b91c347d8e6427edbe942a7a405290d", "Parker Brothers", "PB5350", "Sky Skipper (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b9480bb6fb1e358c9c0a64e86945aee", "", "", "Title Match Pro Wrestling (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b966bf3c2ca34ac6ca1de4cf6383582", "", "", "Double-Height 6-Digit Score Display (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3bb9793c60c92911895cf44530846136", "Jone Yuan Telephonic Enterprise Co", "", "Dragster (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "3c3a2bb776dec245c7d6678b5a56ac10", "", "", "Unknown Title (bin00003) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c4a6f613ca8ba27ce9e43c6c92a3128", "", "", "Qb (V0.04) (Non-Lax Version) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3c57748c8286cf9e821ecd064f21aaa9", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c72ddaf41158fdd66e4f1cb90d4fd29", "Dismac", "", "Comando Suicida (Dismac)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c7a96978f52b2b15426cdd50f2c4048", "", "", "Overhead Adventure Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c82e808fe0e6a006dc0c4e714d36209", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c853d864a1d5534ed0d4b325347f131", "Telesys, Don 'Donyo' Ruffcorn", "1002", "Cosmic Creeps (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3c8e57a246742fa5d59e517134c0b4e6", "Parker Brothers, Rex Bradford, Sam Kjellman", "PB5050", "Star Wars - The Empire Strikes Back (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3caa902ac0ce4509308990645876426a", "Atari - GCC, Dave Payne", "CX2669, CX2669P", "Vanguard (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3cbdf71bb9fd261fbc433717f547d738", "CCE", "C-803", "Bobby Is Going Home (1983) (CCE) (PAL)", "AKA Bobby Vai Para Casa", "Rare", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "3cdd91e1c28d28e856c0063d602da166", "", "", "Stell-A-Sketch (03-11-1997) (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "YES", "" }, - { "3d1e83afdb4265fa2fb84819c9cfd39c", "Coleco, Henry Will IV", "2465", "Smurf - Rescue in Gargamel's Castle (1982) (Coleco)", "AKA Smurf, Smurf Action", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d2367b2b09c28f1659c082bb46a7334", "Imagic, Dennis Koble", "720103-2A, IA3203P, EIX-010-04I", "Atlantis (1982) (Imagic) (PAL)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d2652cbea462a886a41791dd7c8d073", "", "", "Ritorno dei frattelli di Mario (Mario Bros Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d48b8b586a09bdbf49f1a016bf4d29a", "Video Game Cartridge - Ariola", "TP-606", "Hole Hunter (Video Game Cartridge)", "AKA Topy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d6fc7a19be76d808aa233415cb583fc", "CCE", "C-833", "Target Practice (1983) (CCE)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "26", "214", "", "" }, - { "3d7749fb9c2f91a276dfe494495234c5", "Jone Yuan Telephonic Enterprise Co", "", "Checkers (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d7aad37c55692814211c8b590a0334c", "Atari, Dan Oliver", "", "Telepathy (1983) (Atari) (Prototype)", "Uses the Mindlink Controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d8a2d6493123a53ade45e3e2c5cafa0", "Atari, Jim Huether - Sears", "CX2629 - 6-99843, 49-75118", "Sky Diver (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d934bb980e2e63e1ead3e7756928ccd", "Activision, Steve Cartwright - Ariola", "EAX-017, EAX-017-04I - 711 017-720", "MegaMania (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d9c2fccf8b11630762ff00811c19277", "", "", "Challenge of.... Nexar, The (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3da7cc7049d73d34920bb73817bd05a9", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3dfb7c1803f937fadc652a3e95ff7dc6", "Dimax - Sinmax", "SM8001", "Space Robot (Dimax - Sinmax)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3e03086da53ecc29d855d8edf10962cb", "CBS Electronics, Joe Gaucher, Alex Leavens", "4L1751, 4L1752, 4L1753, 4L2275", "Gorf (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3e1682ddaec486d8b6b90b527aaa0fc4", "Thomas Jentzsch", "", "Robot City (V0.12) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "3e22c7eaf6459b67388602e4bebbb3a8", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL) (4K)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e33ac10dcf2dff014bc1decf8a9aea4", "Spectravideo - Video Games Industries Corporation, Mike Schwartz - Ralston Purina", "", "Chase the Chuckwagon (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "22", "", "YES", "" }, - { "3e49da621193d2611a4ea152d5d5ca3a", "", "", "Atari Logo Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e5ca1afaa27c5da3c54c9942fec528b", "", "", "2600 Digital Clock (Demo 2) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e6dab92009d6034618cb6b7844c5216", "", "", "Ed Invaders (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e7d10d0a911afc4b492d06c99863e65", "VGS", "", "Super Tenis (VGS)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e88cca5b860d0bd8947479e74c44284", "Atari, Tod Frye", "CX26122", "Sinistar (01-23-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e899eba0ca8cd2972da1ae5479b4f0d", "Coleco, Joseph Biel", "2457", "Venture (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3e90cf23106f2e08b2781e41299de556", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3eae062a9b722bda1255d474a87eca5c", "Atari, David Crane", "CX2605, CX2605P", "Outlaw (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3eb1e34a4f0eec36f12e7336badcecf2", "Jake Patterson", "", "Baubles (V0.001) (2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3eb21313ea5d5764c5ed9160a5a55a83", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ec12372ca3e870b11ca70edc7ec26a4", "CommaVid, John Bronstein", "CM-002", "Video Life (1981) (CommaVid) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3eccf9f363f5c5de0c8b174a535dc83b", "", "", "Plaque Attack (Unknown) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ef9573536730dcd6d9c20b6822dbdc4", "Atari, Larry Wagner, Bob Whitehead", "CX2645", "Video Chess (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f01bd6d059396f495a4cde7de0ab180", "", "", "Qb (Special Edition) (NTSC) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3f039981255691d3859d04ef813a1264", "Xonox, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) [a]", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "3f251c50aa7237e61a38ab42315ebed4", "Thomas Jentzsch", "", "Ikari Warriors (1990) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f3ad2765c874ca13c015ca6a44a40a1", "CCE", "C-862", "Crackpots (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f540a30fdee0b20aed7288e4a5ea528", "Atari - GCC", "CX2670", "Atari Video Cube (1982) (Atari)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f58f972276d1e4e0e09582521ed7a5b", "Telegames", "6082 A145", "Kung Fu Superkicks (1989) (Telegames)", "AKA Chuck Norris Superkicks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f5a43602f960ede330cd2f43a25139e", "Activision, Alan Miller", "AG-003", "Checkers (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f6938aa6ce66e6f42e582c1eb19b18c", "Jone Yuan Telephonic Enterprise Co", "", "Laser Blast (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "3f6dbf448f25e2bd06dea44248eb122d", "", "5687 A279", "Soccer (1989) (Telegames)", "AKA International Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f75a5da3e40d486b21dfc1c8517adc0", "Atari, Jim Huether", "CX26163P", "Sky Diver (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f9431cc8c5e2f220b2ac14bbc8231f4", "", "", "Colors Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f96eb711928a6fac667c04ecd41f59f", "Bit Corporation", "PGP218", "Rodeo Champ (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f9cb1aba8ec20e2c243ae642f9942bf", "", "", "New Questions (1998) (John K. Harvey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3fd1f9d66a418c9f787fc5799174ddb7", "Aaron Curtis", "", "AStar (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3fd53bfeee39064c945a769f17815a7f", "CCE", "", "Sea Hawk (CCE)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3fe43915e5655cf69485364e9f464097", "CCE", "C-863", "Fisher Price (1983) (CCE)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ff5165378213dab531ffa4f1a41ae45", "Quelle", "311377", "Pygmy (1983) (Quelle) (PAL)", "AKA Lock 'n' Chase (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "402b1ca3c230a60fb279d4a2a10fa677", "", "", "3-D Tic-Tac-Toe (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "62", "", "", "" }, - { "402d876ec4a73f9e3133f8f7f7992a1e", "Alex Herbert", "", "Man Goes Down (2006) (A. Herbert) (Prototype)", "Uses AtariVox controller", "Homebrew", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "" }, - { "405f8591b6941cff56c9b392c2d5e4e5", "Telegames", "", "Star Strike (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4066309eb3fa3e7a725585b9814bc375", "", "", "Multi Ball Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4066d7d88ec4a2c656127a67fa52dcf1", "", "", "Overhead Adventure Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "64", "", "", "" }, - { "407a0c6cc0ff777f67b669440d68a242", "Erik Eid", "", "Euchre (Alpha) (PAL) (31-08-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4093382187f8387e6d011883e8ea519b", "", "", "Go Go Home Monster (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "40aa851e8d0f1c555176a5e209a5fabb", "", "", "Euchre (More for less) (NTSC) (22-08-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40b1832177c63ebf81e6c5b61aaffd3a", "Atari, Peter C. Niday", "", "Rubik's Cube 3-D (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40b58f2f93e503b14a5d1d0ae2ca5aa0", "", "", "Greeting Cart Tanya (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40b59249e05135bca33861e383735e9e", "Atari", "CX26163P", "Skiing (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40d7ccd460c9b1198238af6ceea1737d", "", "", "Star Fire - Enemy Mine (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40d8ed6a5106245aa79f05642a961485", "Xonox - K-Tel Software - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "40d9f5709877ecf3dd1184f9791dd35e", "Dactari - Milmar", "", "Skiing (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40e12c008037a323a1290c8fa4d2fe7f", "", "", "Skeleton (NTSC) (06-09-2002) (Eric Ball)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40eb4e263581b3dfec6dd8920b68e00f", "Sears Tele-Games, Marilyn Churchill, Matthew L. Hubbard", "CX2647 - 49-75142", "Seawolf 3 (03-23-1981) (Sears) (Prototype) (PAL)", "Submarine Commander Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "413c925c5fdcea62842a63a4c671a5f2", "Activision, Larry Kaplan", "AX-006", "Bridge (1980) (Activision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "415c11fcac66bbd2ace2096687774b5a", "", "", "Fu Kung! (V0.00) (07-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4181087389a79c7f59611fb51c263137", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (06-24-1983) (Atari) (Prototype) (8K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "41810dd94bd0de1110bedc5092bef5b0", "Funvision - Fund. International Co.", "", "Dragon Treasure (Funvision)", "AKA Dragonfire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "41818738ab1745e879024a17784d71f5", "CCE", "C-832", "Atlantis (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4189adfc1b30c121248876e3a1a3ac7e", "Eric Ball", "", "Skeleton (Complete) (06-09-2002) (Eric Ball)", "", "New Release", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4191b671bcd8237fc8e297b4947f2990", "Exus Corporation", "", "Video Jogger (1983) (Exus)", "AKA Foot Craz", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "41c4e3d45a06df9d21b7aae6ae7e9912", "CCE", "C-826", "Grand Prix (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "41f252a66c6301f1e8ab3612c19bc5d4", "Atari - GCC, Mike Feinstein", "CX2681", "Battlezone (1983) (Atari)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4209e9dcdf05614e290167a1c033cfd2", "CommaVid, John Bronstein", "CM-002", "Video Life (1981) (CommaVid) [higher sounds]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "42249ec8043a9a0203dde0b5bb46d8c4", "CCE", "", "Resgate Espacial (CCE)", "AKA Moonsweeper", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4233eb824c2b4811abef9b6d00355ae9", "Retroactive", "", "Qb (V0.10) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4251b4557ea6953e88afb22a3a868724", "", "", "Robot City (V1.1) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "425ee444a41d218598893d6b6e03431a", "", "", "Invaders Demo (2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4279485e922b34f127a88904b31ce9fa", "", "", "Enduro (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "428b2d36f5d716765460701f7016ac91", "Andrew Wallace", "", "Brooni (2001) (Andrew Wallace) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42ae81ae8ac51e5c238639f9f77d91ae", "", "", "Multi-Sprite Demo 2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42b2c3b4545f1499a083cfbc4a3b7640", "U.S. Games Corporation, Todd Marshall, Wes Trager, Henry Will IV", "VC2003", "Eggomania (1982) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "42b3ab3cf661929bdc77b621a8c37574", "Robby", "", "Volleyball (Robby)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42b5e3a35b032f033809afb0ea28802d", "Atari, Mimi Nyden, Scott Smith, Robert Vieira", "CX26127", "Gremlins (03-12-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42cdd6a9e42a3639e190722b8ea3fc51", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42dcc02777b0bcfacd85aeb61d33558a", "", "", "Human Cannonball (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42e0ec5ab8f5deba53e4169ff2a5efbe", "", "", "Atari Logo Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42e8d67213227dee01e72c788712c002", "", "", "Greeting Cart Amy in thong (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4311a4115fb7bc68477c96cf44cebacf", "", "", "Challenge (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "14", "240", "", "" }, - { "4326edb70ff20d0ee5ba58fa5cb09d60", "Atari - GCC, Kevin Osborn", "CX2689", "Kangaroo (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "435fd469f088468c4d66be6b5204d887", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "438968a26b7cfe14a499f5bbbbf844db", "", "", "Raft Rider (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43adf60ebdd6b5a0fae21594ecf17154", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43c6cfffeddab6b3787357fed9d44529", "20th Century Fox Video Games, Frank Cohen, Douglas 'Dallas North' Neubauer", "11111", "M.A.S.H (1983) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43c7eb836378b1b3df6788d908940b59", "", "", "Death Derby (2LK_16) (24-03-2003) (Glenn Saunders)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43e6c5159c3a093fca88656628c6ef34", "", "", "Star Fire (17-02-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43f33c6dfdeaf5138ce6e6968ad7c5ce", "Jeffry Johnston", "", "Radial Pong - Version 11 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43f8459d39fb4eddf9186d62722ff795", "", "", "Skeleton+ (17-04-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "442602713cb45b9321ee93c6ea28a5d0", "", "", "Demon Attack (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "442b7863683e5f084716fda050474feb", "Eckhard Stolberg", "", "Frame Timed Sound Effects-EM (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "44560e324ffb30741a483218ba5b4342", "", "", "Star Fire - Faster Skipping 2 (24-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4474b3ad3bf6aabe719a2d7f1d1fb4cc", "Activision, Dan Kitchen", "EAX-039-04B, EAX-039-04I", "Kung-Fu Master (1987) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4476c39736090dabac09f6caf835fc49", "", "", "Text Screen (25-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "448c2a175afc8df174d6ff4cce12c794", "Activision, David Crane", "AB-035-04", "Pitfall II (1983) (Activision) [a2]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "44f71e70b89dcc7cf39dfd622cfb9a27", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45027dde2be5bdd0cab522b80632717d", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00250", "Summer Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45040679d72b101189c298a864a5b5ba", "20th Century Fox Video Games, David Lubar", "11022", "SpaceMaster X-7 (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4543b7691914dfd69c3755a5287a95e1", "CommaVid, Irwin Gaines", "CM-005", "Mines of Minos (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "456453a54ca65191781aef316343ae00", "", "", "Full Screen Bitmap (3-D Green) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4565c1a7abce773e53c75b35414adefd", "Arcadia Corporation", "", "Supercharger BIOS (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "457e7d4fcd56ebc47f5925dbea3ee427", "Carrere Video, Garry Kitchen - Teldec", "USC1001", "Space Jockey (1983) (Carrere Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "59", "", "", "" }, - { "457f4ad2cda5f4803f122508bfbde3f5", "", "", "Canyon Bomber (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "458883f1d952cd772cf0057abca57497", "", "", "Fishing Derby (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45a095645696a217e416e4bd2baea723", "Digivision", "", "Snoopy (Digivision)", "AKA Snoopy and the Red Baron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45a4f55bb9a5083d470ad479afd8bca2", "CommaVid, Joseph Biel", "", "Frog Demo (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45beef9da1a7e45f37f3f445f769a0b3", "Atari, Suki Lee", "CX2658", "Math Gran Prix (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45c4413dd703b9cfea49a13709d560eb", "Jone Yuan Telephonic Enterprise Co", "", "Challenge of.... Nexar, The (Jone Yuan) (Hack)", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45cb0f41774b78def53331e4c3bf3362", "Carrere Video, Roger Booth, Sylvia Day, Todd Marshall, Wes Trager, Henry Will IV - Teldec", "USC1007", "Octopus (1983) (Carrere Video) (PAL)", "AKA Name This Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4605a00f5b44a9cbd5803a7a55de150e", "Coleco, Ed Temple", "", "Cabbage Patch Kids (07-03-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "461029ab23800833e9645be3e472d470", "", "", "Combat TC (v0.1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "46258bd92b1f66f4cb47864d7654f542", "Zellers", "", "Turmoil (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "463dd4770506e6c0ef993a40c52c47be", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "AR-4102", "Suicide Mission (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "463e66ad98806a49106cffa49c08e2ed", "", "", "Interlace Game Demo (01-09-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "467340a18158649aa5e02a4372dcfccd", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4689081b7363721858756fe781cc7713", "", "", "Oystron (V2.6) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "468f2dec984f3d4114ea84f05edf82b6", "Tigervision - Teldec", "7-011 - 3.60015 VG", "Miner 2049er Volume II (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4690fdb70c86604bb35da26696818667", "", "", "Euchre (Release Candidate) (NTSC) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "469473ff6fed8cc8d65f3c334f963aab", "Atari, Bruce Poehlman, Gary Stark", "", "Dune (07-10-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "23", "", "YES", "" }, - { "46c021a3e9e2fd00919ca3dd1a6b76d8", "Atari, Jim Huether - Sears", "CX2629 - 6-99843, 49-75118", "Sky Diver (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "46c43fdcbce8fde3a91ebeafc05b7cbd", "", "", "Invaders Demo (PAL) (2001) (Eckhard Stolberg)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "46e9428848c9ea71a4d8f91ff81ac9cc", "Telegames", "", "Astroblast (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4702d8d9b48a332724af198aeac9e469", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "470878b9917ea0348d64b5750af149aa", "Atari, Suki Lee - Sears", "CX2658 - 49-75128", "Math Gran Prix (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47464694e9cce07fdbfd096605bf39d4", "Activision, Dan Kitchen", "EAK-050-04", "Double Dragon (1989) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4767356fa0ed3ebe21437b4473d4ee28", "Atari, Dan Hitchens", "CX2685", "Gravitar (04-12-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "47711c44723da5d67047990157dcb5dd", "CCE", "", "Ice Hockey (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47911752bf113a2496dbb66c70c9e70c", "Atari, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (1983) (Atari) (PAL)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "4799a40b6e889370b7ee55c17ba65141", "Konami", "RC 100-X 02", "Pooyan (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "220", "", "" }, - { "47aad247cce2534fd70c412cb483c7e0", "Rainbow Vision - Suntek", "SS-010", "Mafia (Rainbow Vision) (PAL)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47abfb993ff14f502f88cf988092e055", "Zellers", "", "Inca Gold (Zellers)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "29", "", "", "" }, - { "47aef18509051bab493589cb2619170b", "", "", "Stell-A-Sketch (Bob Colbert) (PD)", "Uses Driving, Joystick, or Amiga/Atari ST mouse Controllers", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "47b82d47e491ac7fdb5053a88fccc832", "Atari Freak 1, Franklin Cruz", "", "Asteroid 2 (Atari Freak 1) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "47bb1c677fe7ba5f376372ae7358e790", "", "", "Star Fire (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47cd61f83457a0890de381e478f5cf5f", "Imagic, Wilfredo 'Willy' Aguilar, Michael Becker, Rob Fulop", "720111-2A, 13205", "Fathom (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "481d20ec22e7a63e818d5ef9679d548b", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "481f9a742052801cc5f3defb41cb638e", "Jeffry Johnston", "", "Radial Pong - Version 4 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "48287a9323a0ae6ab15e671ac2a87598", "Zellers", "", "Laser Volley (Zellers)", "AKA Laser Gates", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "48411c9ef7e2cef1d6b2bee0e6055c27", "Telesys, Don 'Donyo' Ruffcorn, Jack Woodman", "1003", "Fast Food (1982) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "484b0076816a104875e00467d431c2d2", "Atari", "CX26150", "Q-bert (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "40", "", "", "" }, - { "4868a81e1b6031ed66ecd60547e6ec85", "Eric Mooney", "", "Invaders by Erik Mooney (V2.1) (1-3-98) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4884b1297500bd1243659e43c7e7579e", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (10-24-1991) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "48bcf2c5a8c80f18b24c55db96845472", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "48e5c4ae4f2d3b62b35a87bca18dc9f5", "Quelle", "476.774 5", "Bobby geht nach Hause (1983) (Quelle) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "48f18d69799a5f5451a5f0d17876acef", "ZiMAG - Emag - Vidco", "GN-070", "Mysterious Thief, A (1983) (ZiMAG) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4901c05068512828367fde3fb22199fe", "Imagic, Rob Fulop", "720101-2B, IA3200P, EIX-006-04I", "Demon Attack (1982) (Imagic) (PAL)", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4904a2550759b9b4570e886374f9d092", "Parker Brothers, Charlie Heath", "931506", "Reactor (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "490e3cc59d82f85fae817cdf767ea7a0", "", "", "Berzerk (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "490eed07d4691b27f473953fbea6541a", "Activision, David Crane", "AB-035-04", "Pitfall II (1983) (Activision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "493daaf9fb1ba450eba6b8ed53ffb37d", "", "", "3-D Corridor Demo (27-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "493de059b32f84ab29cde6213964aeee", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Stargate (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "493e90602a4434b117c91c95e73828d1", "Telegames", "", "Lock 'n' Chase (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4947c9de2e28b2f5f3b0c40ce7e56d93", "", "", "3-D Corridor Demo 2 (29-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "49571b26f46620a85f93448359324c28", "", "", "Save Our Ship (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "NTSC", "38", "", "", "" }, - { "497f3d2970c43e5224be99f75e97cbbb", "CommaVid, John Bronstein", "CM-002", "Video Life (1981) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4981cefe5493ea512284e7f9f27d1e54", "Home Vision - Gem International Corp.", "VCS83136", "Cosmic War (1983) (Home Vision) (PAL)", "AKA Space Tunnel", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "4999b45be0ab5a85bac1b7c0e551542b", "CCE", "", "Double Dragon (CCE) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "499b612f6544ae71d4915aa63e403e10", "Atari, Carol Shaw", "CX26163P", "Checkers (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a196713a21ef07a3f74cf51784c6b12", "Jone Yuan Telephonic Enterprise Co", "", "Frogs and Flies (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a2fe6f0f6317f006fd6d4b34515448b", "", "", "Warring Worms (Midwest Classic Edition) (08-06-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a45c6d75b1ba131f94a9c13194d8e46", "", "", "How to Draw a Playfield II (Joystick Hack) (1997) (Eric Bacher) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a6be79310f86f0bebc7dfcba4d74161", "", "", "Demolition Herby (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4a7eee19c2dfb6aeb4d9d0a01d37e127", "Hozer Video Games", "", "Crazy Valet (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a9009620038f7f30aaeb2a00ae58fde", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (3 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ab4af3adcdae8cdacc3d06084fc8d6a", "Nick Bensema", "", "Sucky Zepplin (Nick Bensema) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4abb4c87a4c5f5d0c14ead2bb36251be", "Atari", "CX26135, CX26135P", "RealSports Boxing (1987) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ac9f40ddfcf194bd8732a75b3f2f214", "Atari, Stephan R. Keith, Preston Stuart", "CX26106", "Grover's Music Maker (12-29-1982) (Atari) (Prototype)", "Uses Kids/Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "4ae8c76cd6f24a2e181ae874d4d2aa3d", "", "", "Flash Gordon (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4af4103759d603c82b1c9c5acd2d8faf", "Imagic, Bob Smith", "720114-2A, 13207, EIZ-001-04I", "Moonsweeper (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4afa7f377eae1cafb4265c68f73f2718", "Ed Fries", "", "Halo 2600 (2010) (Ed Fries)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4afe528a082f0d008e7319ebd481248d", "", "", "Multi-Color Demo 1 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b143d7dcf6c96796c37090cba045f4f", "Atari, Jim Huether - Sears", "CX2644 - 6-99824", "Flag Capture (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b205ef73a5779acc5759bde3f6d33ed", "", "", "Berzerk (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b27f5397c442d25f0c418ccdacf1926", "Atari, Warren Robinett", "CX2613, 49-75154", "Adventure (1980) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b71197153d651480830638cb6a03249", "Atari, Larry Kaplan", "CX26163P", "Bowling (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b753a97aee91e4b3e4e02f5e9758c72", "Glenn Saunders, Roger Williams", "", "Asymmetric Reflected Playfield (Glenn Saunders)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b94fd272785d7ec6c95fb7279d0f522", "Atari, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (12-03-1982) (Atari) (Prototype)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "4b9581c3100a1ef05eac1535d25385aa", "", "", "IQ 180 (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "235", "", "" }, - { "4baada22435320d185c95b7dd2bcdb24", "Atari, Jerome Domurat, Dave Staugas", "CX2682", "Krull (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4bcc7f6ba501a26ee785b7efbfb0fdc8", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4bdae9246d6ee258c26665512c1c8de3", "Atari", "CX26163P", "Human Cannonball (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c030667d07d1438f0e5c458a90978d8", "Retroactive", "", "Qb (V2.03) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4c0fb2544ae0f8b5f7ae8bce7bd7f134", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (Preview) (1983) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "24", "", "", "" }, - { "4c205f166157154df2f1ef60d87e552f", "", "", "Single-Scanline Positioning Demo 2 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c39a2c97917d3d71739b3e21f60bba5", "", "", "Whale (Sub Scan Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c462b2b6fb0a19a1437eb2c3dc20783", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "4c4ce802cbfd160f7b3ec0f13f2a29df", "", "", "Beta Demo (V1.1) (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c606235f4ec5d2a4b89139093a69437", "Andrew Davies", "", "Andrew Davies early notBoulderDash demo (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4c6afb8a44adf8e28f49164c84144bfe", "Bit Corporation", "PG207", "Mission 3,000 A.D. (1983) (BitCorp)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c8832ed387bbafc055320c05205bc08", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c8970f6c294a0a54c9c45e5e8445f93", "Xonox - K-Tel Software, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c9307de724c36fd487af6c99ca078f2", "Imagic, Brad Stewart", "720106-1A, IA3409", "Sky Patrol (1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ca0959f846d2beada18ecf29efe137e", "Atari, Jim Huether, Alan J. Murphy, Robert C. Polaro", "CX2666, CX2666P", "RealSports Volleyball (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ca73eb959299471788f0b685c3ba0b5", "Activision, Steve Cartwright", "AX-031", "Frostbite (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ca90ba45eced6f5ad560ea8938641b2", "", "", "Hangman Man Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4cabc895ea546022c2ecaa5129036634", "Funvision - Fund. International Co.", "", "Ocean City (Funvision)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4cd796b5911ed3f1062e805a3df33d98", "Tigervision", "7-006", "Springer (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d0a28443f7df5f883cf669894164cfa", "", "", "Beast Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d2cef8f19cafeec72d142e34a1bbc03", "HES", "771-422", "2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d38e1105c3a5f0b3119a805f261fcb5", "Bit Corporation", "PGP212", "Phantom UFO (4 Game in One Light Green) (1983) (BitCorp) (PAL)", "AKA Spider Fighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d502d6fb5b992ee0591569144128f99", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (11-21-1989) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d5f6db55f7f44fd0253258e810bde21", "Fabrizio Zavagli", "", "Betterblast (Fabrizio Zavagli) (Hack)", "Hack of Astroblast", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d7517ae69f95cfbc053be01312b7dba", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d77f291dca1518d7d8e47838695f54b", "Data Age", "DA1004", "Airlock (1982) (Data Age)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d8396deeabb40b5e8578276eb5a8b6d", "Quelle", "781698", "Volleyball (1983) (Quelle) (PAL)", "AKA RealSports Volleyball (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4dbf47c7f5ac767a3b07843a530d29a5", "Ric Pryor", "", "Breaking News (2002) (Ric Pryor) (Hack)", "Hack of Bump 'n' Jump", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4dcc7e7c2ec0738e26c817b9383091af", "", "", "Unknown Title (bin00026 (200110)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4dd6c7ab9ef77f2b4950d8fc7cd42ee1", "Retroactive", "", "Qb (V2.04) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4dd6f53684ccbb569fe9f41498d80018", "", "", "Image - Nude1 (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4df6124093ccb4f0b6c26a719f4b7706", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) [a]", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "4df9d7352a56a458abb7961bf10aba4e", "", "", "Racing Car (Unknown)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "4e01d9072c500331e65bb87c24020d3f", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (06-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e02880beeb8dbd4da724a3f33f0971f", "Imagic, Michael Greene", "EIZ-002-04I", "Wing War (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e15ddfd48bca4f0bf999240c47b49f5", "Avalon Hill, Jean Baer, Jim Jacob", "5001002", "Death Trap (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4e2c884d04b57b43f23a5a2f4e9d9750", "", "", "Baby Center Animation (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4e37992a37ea36489283f7eb90913bbc", "Kris", "", "Hangman Ghost Halloween (Kris) (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e4895c3381aa4220f8c2795d6338237", "", "", "Backwards Cannonball v1 (Hack)", "Hack of Human Cannonball", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e66c8e7c670532569c70d205f615dad", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e86866d9cde738d1630e2e35d7288ce", "Supergame", "", "River Raid III (Supergame)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e99ebd65a967cabf350db54405d577c", "Coleco", "2663", "Time Pilot (1983) (Coleco) [b1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4edb251f5f287c22efc64b3a2d095504", "Atari", "", "Atari VCS Point-of-Purchase ROM (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f0071946e80ca68edfdccbac86dcce0", "", "", "Virtual Pet Demo 1 (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f2d47792a06da224ba996c489a87939", "HES - Activision", "223", "Super Action Pak - Pitfall, Barnstorming, Grand Prix, Laser Blast (1988) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f618c2429138e0280969193ed6c107e", "Activision, Alan Miller", "AZ-028, AG-028-04", "Robot Tank (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f634893d54e9cabe106e0ec0b7bdcdf", "Retroactive", "", "Qb (2.14) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4f64d6d0694d9b7a1ed7b0cb0b83e759", "20th Century Fox Video Games, John Russell", "11016", "Revenge of the Beefsteak Tomatoes (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f6702c3ba6e0ee2e2868d054b00c064", "Activision, Steve 'Jessica' Kitchen - Ariola", "EAZ-033 - 711 033-725", "Space Shuttle (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f781f0476493c50dc578336f1132a67", "", "", "Indy 500 (Unknown) (PAL) (4K)", "Uses Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "", "", "", "" }, - { "4f7b07ec2bef5ccffe06403a142f80db", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1981) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4f82d8d78099dd71e8e169646e799d05", "", "", "Miniature Golf (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f89b897444e7c3b36aed469b8836839", "Atari", "CX26190", "BMX Air Master (1990) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4fae08027365d31c558e400b687adf21", "", "", "Qb (V2.17) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4faeb04b1b7fb0fa25db05753182a898", "", "", "2600 Digital Clock (V x.xx) (PD) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4fbe0f10a6327a76f83f83958c3cbeff", "CCE", "C-816", "Keystone Kappers (1983) (CCE)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4fc1b85b8074b4b9436d097900e34f29", "John K. Harvey", "", "John K. Harvey's Equalizer (John K. Harvey)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "50200f697aeef38a3ce31c4f49739551", "Mystique - American Multiple Industries, Joel H. Martin", "", "Custer's Revenge (1982) (Mystique) (PAL60)", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "502044b1ac111b394e6fbb0d821fca41", "", "", "Hangman Invader 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "502168660bfd9c1d2649d415dc89c69d", "Activision, Bob Whitehead - Ariola", "EAG-019, EAG-019-04I - 711 019-715", "Sky Jinks (1982) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "504688d49a41bf03d8a955512609f3f2", "Thomas Jentzsch", "", "SWOOPS! (TJ)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "PADDLES", "", "", "30", "", "", "" }, - { "50568c80ac61cab789d9923c9b05b68e", "Ebivision", "", "Merlin's Walls - Standard Edition (1999) (Ebivision)", "Image rotated 90 degrees CW", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5069fecbe4706371f17737b0357cfa68", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Shark Attack (1982) (Apollo) (PAL)", "AKA Lochjaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "50a410a5ded0fc9aa6576be45a04f215", "Activision, Bob Whitehead - Ariola", "EAG-019, EAG-019-04I - 711 019-715", "Sky Jinks (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "50ef88f9a5e0e1e6b86e175362a27fdb", "", "", "Multi-Sprite Game V2.4 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "512e874a240731d7378586a05f28aec6", "Tigervision, Rorke Weigandt - Teldec", "7-005", "Marauder (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5131ab3797fe8c127e3e135b18b4d2c8", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "514f911ecff2be5eeff2f39c49a9725c", "Parker Brothers", "931510", "Sky Skipper (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "515046e3061b7b18aa3a551c3ae12673", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "516ffd008057a1d78d007c851e6eff37", "Parker Brothers, Dawn Stockbridge", "PB5910", "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "517592e6e0c71731019c0cebc2ce044f", "Parker Brothers, Todd Marshall", "PB5550", "Q-bert's Qubes (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "517923e655755086a3b72c0b17b430e6", "Tron", "", "Super Tennis (Tron)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5188fee071d3c5ef0d66fb45c123e4a5", "Gameworld", "133-001", "Encounter at L-5 (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "51de328e79d919d7234cf19c1cd77fbc", "Atari, Mark R. Hahn", "CX2678", "Dukes of Hazzard (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51e390424f20e468d2b480030ce95d7b", "Video Game Program", "", "Fire Bird (Video Game Program) (PAL)", "AKA Phoenix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51f15b39d9f502c2361b6ba6a73464d4", "", "", "Amanda Invaders (PD) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51f211c8fc879391fee26edfa7d3f11c", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "521f4dd1eb84a09b2b19959a41839aad", "Bit Corporation", "PG206", "Bobby Is Going Home (1983) (BitCorp)", "AKA Bobby geht Heim", "", "", "", "", "", "", "", "", "", "", "", "31", "", "", "" }, - { "522c9cf684ecd72db2f85053e6f6f720", "Rainbow Vision - Suntek", "SS-008", "Year 1999, The (Rainbow Vision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52385334ac9e9b713e13ffa4cc5cb940", "CCE", "C-804", "Open, Sesame! (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "523f5cbb992f121e2d100f0f9965e33f", "Joe Grand", "", "SCSIcide (1.30) (CGE 2001 Release) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "524693b337f7ecc9e8b9126e04a232af", "", "", "Euchre (19-08-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5256f68d1491986aae5cfdff539bfeb5", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-26-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "525ea747d746f3e80e3027720e1fa7ac", "Activision, Garry Kitchen - Ariola", "EAZ-032 - 771 032-712", "Pressure Cooker (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "525f2dfc8b21b0186cff2568e0509bfc", "Activision, David Crane", "AG-930-04, AZ-030", "Decathlon (1983) (Activision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52615ae358a68de6e76467e95eb404c7", "", "", "DJdsl-wopd (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "528400fad9a77fd5ad7fc5fdc2b7d69d", "Arcadia Corporation, Stephen Harland Landrum, Jon Leupp", "AR-4201", "Sword of Saros (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52a0003efb3b1c49fcde4dbc2c685d8f", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari) (4K) [a]", "", "", "", "2K", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52b448757081fd9fabf859f4e2f91f6b", "", "", "Worm War I (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52bae1726d2d7a531c9ca81e25377fc3", "", "", "Space Instigators (V1.8 Fixed) (20-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52e1954dc01454c03a336b30c390fb8d", "Retroactive", "", "Qb (2.14) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "52e9db3fe8b5d336843acac234aaea79", "", "", "Fu Kung! (V0.11) (28-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5305f69fbf772fac4760cdcf87f1ab1f", "Jone Yuan Telephonic Enterprise Co", "", "Ski Run (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5324cf5b6dc17af4c64bf8696c39c2c1", "Imagic, Dennis Koble", "IA3203, IX-010-04", "Atlantis (1982) (Imagic) (8K)", "AKA Lost City of Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5336f86f6b982cc925532f2e80aa1e17", "Parker Brothers, Ray Miller, Todd Marshall", "PB5060", "Star Wars - Death Star Battle (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "534e23210dd1993c828d944c6ac4d9fb", "M Network, Stephen Tatsumi, Jane Terjung - Kool Aid", "MT4648", "Kool-Aid Man (1983) (M Network)", "AKA Kool Aid Pitcher Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5355f80cacf0e63a49cbf4ade4e27034", "Christian Samuel", "", "Cute Dead Things House (Christian Samuel) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5360693f1eb90856176bd1c0a7b17432", "", "", "Oystron (V2.85) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "537ed1e0d80e6c9f752b33ea7acbe079", "", "", "A-VCS-tec Challenge (beta 5) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5385cf2a04de1d36ab55c73174b84db0", "Paul Slocum", "", "Combat Rock (PD) (Hack)", "Hack of Combat", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "539b7038acec0ccedeae40f238998579", "", "", "Star Fire (25-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "539d26b6e9df0da8e7465f0f5ad863b7", "Atari, Carol Shaw - Sears", "CX2636 - 49-75156", "Video Checkers (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "53b66f11f67c3b53b2995e0e02017bd7", "CCE", "C-1005", "Super Tennis (1983) (CCE)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "53d181cde2e0219b5754caad246fcb66", "", "", "Missile Demo (1998) (Ruffin Bailey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "53f147b9746fdc997c62f3dd67888ee5", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "540075f657d4b244a1f74da1b9e4bf92", "Bit Corporation", "PGP230", "Festival (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5409d20c1aea0b89c56993aec5dc5740", "", "", "Carnival Shooter (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5428cdfada281c569c74c7308c7f2c26", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "542c6dd5f7280179b51917a4cba4faff", "ZiMAG - Emag - Vidco", "GN-080", "Spinning Fireball (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "40", "", "", "" }, - { "5438e84b90e50a5362f01cc843b358d4", "Arcadia Corporation, Scott Nelson", "3 AR-4300", "Fireball (1982) (Arcadia) (Prototype)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "543b4b8ff1d616fa250c648be428a75c", "Warren Robinett", "", "Adventure (1978) (Warren Robinett) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "545048ccb045f9efc6cf2b125cd0dfa8", "Arcadia Corporation, Stephen Harland Landrum, Jon Leupp", "AR-4201", "Sword of Saros (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "54785fa29e28aae6038929ba29d33d38", "", "", "Poker Squares (V0.19) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5494b9ee403d9757f0fd1f749e80214a", "Larry Petit", "", "Xenophobe Arcade (2003) (Larry Petit) (Hack)", "Hack of Xenophobe", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "54a1c1255ed45eb8f71414dadb1cf669", "Spectravideo", "SA-212", "Mangia' (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "54da3b0b3f43f5b37911c135b9432b49", "", "", "Halloween III Revision (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "54f7efa6428f14b9f610ad0ca757e26c", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Shark Attack (1982) (Apollo)", "AKA Lochjaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "551a64a945d7d6ece81e9c1047acedbc", "Matthias Jaap", "", "Coffee Cup Soccer (Matthias Jaap) (Hack)", "Hack of Pele's Soccer", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "551ef75593ec18d078e8f5cc0229e1c4", "", "", "Star Fire - New Paulstar WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5524718a19107a04ec3265c93136a7b5", "Thomas Jentzsch", "", "RealSports Basketball (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "557e893616648c37a27aab5a47acbf10", "Atari - Axlon, Tod Frye", "CX26169", "Shooting Arcade (01-16-1990) (Atari) (Prototype) (PAL)", "Uses the Light Gun Controller (left only)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "559317712f989f097ea464517f1a8318", "Panda", "100", "Space Canyon (1983) (Panda)", "AKA Space Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55949cb7884f9db0f8dfcf8707c7e5cb", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55ace3c775f42eb46f08bb1dca9114e7", "", "", "Shadow Keep (04-03-2003) (Andrew Towers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55ef6ab2321ca0c3d369e63d59c059c8", "", "", "Pitfall! (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55ef7b65066428367844342ed59f956c", "Atari, Joe Gaucher, Alex Leavens", "CX2683", "Crazy Climber (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "562acb1b7ff182aba133bda8e21ad7c1", "", "", "Space Treat Deluxe (08-03-2003) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "562bf02f5031d51c6b53b03972a56b22", "", "", "Star Fire - Framework Done (30-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "56300ed31fef018bd96768ccc982f7b4", "HES - Activision", "559", "Rad Action Pak - Kung-Fu Master, Freeway, Frostbite (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5641c0ff707630d2dd829b26a9f2e98f", "Joystik", "", "Motocross (Joystik)", "AKA Motocross Racer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5678ebaa09ca3b699516dba4671643ed", "Coleco, Sylvia Day, Henry Will IV", "2459", "Mouse Trap (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "568371fbae6f5e5b936af80031cd8888", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "571c6d9bc71cb97617422851f787f8fe", "Activision, David Crane - Ariola", "EAG-004, PAG-004 - 711 004-715", "Fishing Derby (1980) (Activision) (PAL)", "AKA Schneller als der Hai", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "572d0a4633d6a9407d3ba83083536e0f", "Funvision - Fund. International Co.", "", "Busy Police (Funvision)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "575c0fb61e66a31d982c95c9dea6865c", "", "", "Blackjack (Unknown) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "56", "", "", "" }, - { "57939b326df86b74ca6404f64f89fce9", "Atari, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "579baa6a4aa44f035d245908ea7a044d", "Jess Ragan", "", "Galaxian Enhanced Graphics (Jess Ragan) (Hack)", "Hack of Galaxian", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "57a66b6db7efc5df17b0b0f2f2c2f078", "Retroactive", "", "Qb (V2.08) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "57c5b351d4de021785cf8ed8191a195c", "Atari, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari)", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "5835a78a88f97acea38c964980b7dbc6", "", "", "Cosmic Creeps (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5846b1d34c296bf7afc2fa05bbc16e98", "Atari, Larry Kaplan - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "58513bae774360b96866a07ca0e8fd8e", "Mystique - American Multiple Industries, Joel H. Martin", "1001", "Custer's Revenge (1982) (Mystique)", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "585600522b1f22f617652c962e358a5d", "", "", "Multi-Sprite Game V2.2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "585f73010e205ae5b04ee5c1a67e632d", "", "", "Daredevil (V3) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5864cab0bc21a60be3853b6bcd50c59f", "", "", "Commando Raid (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "58746219d8094edff869f0f5c2aeaad5", "Jone Yuan Telephonic Enterprise Co", "", "Bowling (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5894c9c0c1e7e29f3ab86c6d3f673361", "Activision, Steve 'Jessica' Kitchen", "AZ-033, AZ-033-04", "Space Shuttle (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "589c73bbcd77db798cb92a992b4c06c3", "Xonox - K-Tel Software, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "58a82e1da64a692fd727c25faef2ecc9", "CCE", "C-824", "Jaw Breaker (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "58c396323ea3e85671e34c98eb54e2a4", "Brian Watson", "", "Color Tweaker (B. Watson)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "58d331c23297ed98663d11b869636f16", "", "", "Fu Kung! (V0.09) (26-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "58e313e2b5613b2439b5f12bb41e3eef", "", "", "Cube Conquest (Demo Interlace) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "590ac71fa5f71d3eb29c41023b09ade9", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684", "Galaxian (01-05-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59135f13985b84c4f13cc9e55eec869a", "", "", "Multi-Sprite Game V2.0 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5961d259115e99c30b64fe7058256bcf", "Universal Gamex Corporation, Alan Roberts, H.K. Poon", "GX-001", "X-Man (1983) (Universal)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "59734e1cc41822373845a09c51e6ba21", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "598a4e6e12f8238b7e7555f5a7777b46", "Tigervision", "7-008", "Miner 2049er (1982) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "599cbf919d47a05af975ad447df29497", "Jake Patterson", "", "Baubles (V0.002) (2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59b70658f9dd0e2075770b07be1a35cf", "Thomas Jentzsch", "", "Surfer's Paradise (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59e53894b3899ee164c91cfa7842da66", "Data Age", "", "Survival Run (1983) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "40", "", "", "" }, - { "59e96de9628e8373d1c685f5e57dcf10", "PlayAround - J.H.M.", "204", "Beat 'Em & Eat 'Em (1982) (PlayAround)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "59f596285d174233c84597dee6f34f1f", "CCE", "C-811", "River Raid (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a17e30e6e911e74ccd7b716d02b16c6", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a272012a62becabcd52920348c7c60b", "Star Game", "", "Pitfall (Star Game)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a2f2dcd775207536d9299e768bcd2df", "Quelle", "781698", "Flippern (Double-Game Package) (1983) (Quelle) (PAL)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a5390f91437af9951a5f8455b61cd43", "Retroactive", "", "Qb (0.11) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5a6febb9554483d8c71c86a84a0aa74e", "CCE", "C-1003", "Donkey Kong Jr (1983) (CCE)", "AKA Donkey Kong Junior", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a734779d797ccef25dc8acfa47244c7", "", "", "Oh No! (Version 2) (18-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a80b857eb8b908ab477ec4ef902edc8", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a81ad4e184050851e63c8e16e3dac77", "Jone Yuan Telephonic Enterprise Co", "Hack", "Sky Diver (Jone Yuan) (Hack)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a8afe5422abbfb0a342fb15afd7415f", "Atari, Robert C. Polaro", "CX26155", "Sprint Master (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "5a93265095146458df2baf2162014889", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a9685c4d51a6c1d6a9544946d9e8dc3", "AtariAge", "", "Grandma's Revenge (AtariAge)", "Can use driving controller in right port", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a9d188245aff829efde816fcade0b16", "CCE", "C-808", "Phantom Tank (1983) (CCE) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5acf9865a72c0ce944979f76ff9610f0", "", "", "Dodge Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ae73916fa1da8d38ceff674fa25a78a", "CCE", "", "Barnstorming (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5aea9974b975a6a844e6df10d2b861c4", "Atari, Dan Hitchens", "CX2656", "SwordQuest - EarthWorld (1982) (Atari)", "AKA Adventure I, SwordQuest I - EarthWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5af9cd346266a1f2515e1fbc86f5186a", "Sega", "002-01", "Sub-Scan (1982) (Sega)", "AKA Subterfuge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b124850de9eea66781a50b2e9837000", "PlayAround - J.H.M.", "205", "Bachelor Party (1982) (PlayAround)", "Uses the paddle controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "22", "222", "YES", "" }, - { "5b574faa56836da0866ba32ae32547f2", "", "", "Tomb Raider 2600 [REV 03] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b6f5bcbbde42fc77d0bdb3146693565", "", "", "Seaquest (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b7ea6aa6b35dc947c65ce665fde624b", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (2 of 3) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b85e987e2b1618769d97ba9182333d0", "Atari - GCC, Mike Feinstein", "CX2681", "Battlezone (05-12-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b92a93b23523ff16e2789b820e2a4c5", "Activision, Dan Kitchen", "AG-039-04", "Kung-Fu Master (1987) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b98e0536c3f60547dd708ae22adb04b", "Ben Hudman", "", "Donkey Kong Gingerbread Man (Ben Hudman) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b9c2e0012fbfd29efd3306359bbfc4a", "HES", "", "2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5babe0cad3ec99d76b0aa1d36a695d2f", "Coleco, Ed Temple", "2654", "Looping (1983) (Coleco) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "5bba254e18257e578c245ed96f6b003b", "", "", "Music Effects Demo (21-01-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5bbab3f3e4b47e3e23f9820765dbb45c", "", "", "Pitfall! (says 1985) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5bc9998b7e9a970e31d2cb60e8696cc4", "Jack Kortkamp", "", "Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5bcc83677d68f7ef74c1b4a0697ba2a8", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision) (16K)", "", "", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5bd79139a0c03b63f6f2cf00a7d385d2", "Marc de Smet", "", "An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5be03a1fe7b2c114725150be04b38704", "Atari, Alan Miller", "CX2642", "Hunt & Score (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "5c0227ad63300670a647fcebf595ea37", "Josh", "", "Battle for Naboo (Josh) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c0520c00163915a4336e481ca4e7ef4", "Quelle", "262.794 1", "Wuestenschlacht (1983) (Quelle) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c1b1aa78b7609d43c5144c3b3b60adf", "", "", "Demo Image Series #8 - Two Marios (Different Interlacing) (27-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c3a6d27c026f59a96b7af91e8b1bf26", "PlayAround - J.H.M.", "", "PlayAround Demo (PlayAround) (1982)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c618a50dfa23daac97ba459b9ff5206", "Steve Engelhardt", "", "Berzerk Renegade (2002) (Steve Engelhardt) (Hack)", "Hack of Room of Doom", "Hack", "", "", "", "", "", "", "", "", "", "", "29", "", "YES", "" }, - { "5c73693a89b06e5a09f1721a13176f95", "", "", "Wavy Line Test 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c86e938e0845b9d61f458539e9a552b", "Atari, Alan Miller", "CX26163P", "Surround (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5cbd7c31443fb9c308e9f0b54d94a395", "Spectravideo, Mark Turmell", "SA-217", "Gas Hog (1983) (Spectravideo) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ce98f22ade915108860424d8dde0d35", "", "", "Hangman Man Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d0e8a25cbd23e76f843c75a86b7e15b", "Coleco, Ed Temple", "", "Cabbage Patch Kids (09-07-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d1260152596d91adc8cf5741adb719a", "", "", "Death Derby (200204) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d132d121aabc5235dd039dfc46aa024", "", "", "Basketball (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d2cc33ca798783dee435eb29debf6d6", "Activision, Mike Riedel", "AK-043-04", "Commando (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d799bfa9e1e7b6224877162accada0d", "Spectravision, Spectravideo, David Lubar", "SA-206", "Challenge of.... Nexar, The (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d8f1ab95362acdf3426d572a6301bf2", "Thomas Jentzsch", "", "SWOOPS! (v0.96) (TJ) (PAL)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "PADDLES", "", "", "30", "", "", "" }, - { "5d8fb14860c2f198472b233874f6b0c9", "", "", "Boing! (PD) [a2]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d9592756425192ec621d2613d0e683d", "CCE", "C-839", "Misterious Thief, A (1983) (CCE) [a]", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5da8fd0b5ed33a360bff37f8b5d0cd58", "Tron", "", "Pole Position (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5db9e5bf663cad6bf159bc395f6ead53", "Goliath - Hot Shot", "83-212", "Time Race (1983) (Goliath) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "48", "256", "", "" }, - { "5dccf215fdb9bbf5d4a6d0139e5e8bcb", "Froggo", "FG1009", "Sea Hunt (1987) (Froggo)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5de8803a59c36725888346fdc6e7429d", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5df32450b9fbcaf43f9d83bd66bd5a81", "Eric Ball", "", "Atari Logo Playfield Demo (2001) (Eric Ball) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5df559a36347d8572f9a6e8075a31322", "Digivision", "", "Enduro (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e0c37f534ab5ccc4661768e2ddf0162", "Telegames, Ed Salvo", "5667 A106", "Glacier Patrol (1989) (Telegames)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e1b4629426f4992cf3b2905a696e1a7", "Activision, Robert C. Polaro", "AK-049-04", "Rampage! (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e1b7a6078af428ef056fe85a37a95ca", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e1cd11a6d41fc15cf4792257400a31e", "Philip R. Frey", "", "Return of Mario Bros (Philip R. Frey) (Hack)", "Hack of Mario Bros.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e201d6bfc520424a28f129ee5e56835", "Universal Gamex Corporation, Alan Roberts, H.K. Poon", "GX-001", "X-Man (1983) (Universal) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e2495d43b981010304af55efed1e798", "Jone Yuan Telephonic Enterprise Co", "", "Math Gran Prix (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e2928f089490017e88e9f9e5a881a25", "", "", "Star Fire - Faster Skipping 1 (24-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e99aa93d0acc741dcda8752c4e813ce", "", "", "2600 Digital Clock (V b2) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ec73ac7d2ac95ac9530c6d33e713d14", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (2 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "5eeb81292992e057b290a5cd196f155d", "Wizard Video Games, Ed Salvo", "008", "Texas Chainsaw Massacre, The (1983) (Wizard Video)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ef303b9f0aa8cf20720c560e5f9baa1", "Atari, Jim Huether", "CX2629, CX2629P", "Sky Diver (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f1b7d5fa73aa071ba0a3c2819511505", "CCE", "", "Cosmic Commuter (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f2b4c155949f01c06507fb32369d42a", "Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f316973ffd107f7ab9117e93f50e4bd", "", "", "Commando Raid (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f39353f7c6925779b0169a87ff86f1e", "Atari - GCC, Betty Ryan Tylko, Douglas B. Macrae", "CX2694", "Pole Position (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f46d1ff6d7cdeb4b09c39d04dfd50a1", "Atari, Gary Palmer", "CX2661P", "Fun with Numbers (1980) (Atari) (PAL)", "AKA Basic Math", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f681403b1051a0822344f467b05a94d", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5f69453a69f21dc49697a80d2e933491", "", "", "Star Fire - Reduced Flickering (06-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f708ca39627697e859d1c53f8d8d7d2", "Atari, Warren Robinett - Sears", "CX2606 - 6-99825, 49-75112", "Slot Racers (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f73e7175474c1c22fb8030c3158e9b3", "Atari, Nick 'Sandy Maiwald' Turner", "CX2665", "Frog Pond (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f786b67e05fb9985b77d4beb35e06ee", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Defender II (1988) (Atari) (PAL)", "AKA Stargate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f7ae9a7f8d79a3b37e8fc841f65643a", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f950a2d1eb331a1276819520705df94", "Universal", "", "Unknown Universal Game (1983) (Universal) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "28", "", "YES", "" }, - { "5f9b62350b31be8bd270d9a241cbd50e", "Telegames", "5658 A088", "Football (1989) (Telegames) (PAL)", "AKA Super Challenge Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5faffe1c4c57430978dec5ced32b9f4a", "Dactari - Milmar", "", "Volleyball (Dactari - Milmar)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5fb71cc60e293fe10a5023f11c734e55", "", "", "This Planet Sucks (Fix) (27-12-2002) (Greg Troutman)", "", "", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "600d48eef5c0ec27db554b7328b3251c", "", "", "Bars and Text Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6015a9cef783e97e98a2aa2cf070ae06", "Thomas Jentzsch", "", "Battlezone TC (Thomas Jentzsch) (Hack)", "Uses two simultaneous Joystick Controllers, Hack of Battlezone", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60358edf0c2cc76b1e549e031e50e130", "Manuel Polik", "", "Cyber Goth Galaxian (Manuel Polik) (Hack)", "Hack of Galaxian", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "603c7a0d12c935df5810f400f3971b67", "Bit Corporation", "PG209", "Mr. Postman (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6041f400b45511aa3a69fab4b8fc8f41", "Apollo, Ban Tran", "AP-2010", "Wabbit (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "604e09724555807c28108049efe34a13", "", "", "Sokoban (01-01-2003) (Adam Wozniak)", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "6058e40ce79d7434c7f7477b29abd4a5", "", "", "Rubik's Cube Demo (23-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "605dcb73d22f4efdb90ef9da2f290f7c", "Atari, Larry Kaplan", "CX26163P", "Air-Sea Battle (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "40", "256", "", "" }, - { "605fd59bfef88901c8c4794193a4cbad", "Data Age", "", "Secret Agent (1983) (Data Age) (Prototype)", "Uses the Paddle Controllers", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "38", "", "", "" }, - { "606c2c1753051e03c1f1ac096c9d2832", "Jone Yuan Telephonic Enterprise Co", "", "Crackpots (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6076b187a5d8ea7a2a05111c19b5d5cd", "", "", "Fu Kung! (V0.14) (01-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60a61da9b2f43dd7e13a5093ec41a53d", "VentureVision, Dan Oliver", "VV2001", "Rescue Terra I (1982) (VentureVision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60bbd425cb7214ddb9f9a31948e91ecb", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60d304582d33e2957b73eb300a7495bb", "", "", "Jam Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60e0ea3cbe0913d39803477945e9e5ec", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "" }, - { "613abf596c304ef6dbd8f3351920c37a", "", "", "Boring Pac-Man (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "6141c095d0aee4e734bebfaac939030a", "Rainbow Vision - Suntek", "SS-017", "Mariana (Rainbow Vision) (PAL)", "AKA Seaquest", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61426cee013306e7f7367534ab124747", "", "", "One Blue Bar Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "615a3bf251a38eb6638cdc7ffbde5480", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61621a556ad3228f0234f5feb3ab135c", "", "", "Fu Kung! (V0.05 Cuttle Card Compattle Revision) (14-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61631c2f96221527e7da9802b4704f93", "Activision, Mike Riedel", "AK-043-04", "Commando (1988) (Activision) [different logo]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61719a8bdafbd8dab3ca9ce7b171b9e2", "", "", "Enduro (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61728c6cfb052e62a9ed088c5bf407ba", "", "", "Sprite Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "619de46281eb2e0adbb98255732483b4", "", "", "Time Warp (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "61dbe94f110f30ca4ec524ae5ce2d026", "CCE", "C-820", "Space Invaders (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61e0f5e1cc207e98704d0758c68df317", "Star Game", "007", "Tennis (Star Game)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61ef8c2fc43be9a04fe13fdb79ff2bd9", "", "", "Gas Gauge Demo - Revisited (2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6205855cc848d1f6c4551391b9bfa279", "", "", "Euchre (Release Candidate 2) (NTSC) (01-10-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "624e0a77f9ec67d628211aaf24d8aea6", "Panda", "108", "Sea Hawk (1983) (Panda)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "626d67918f4b5e3f961e4b2af2f41f1d", "Atari", "50008", "Diagnostic Test Cartridge 2.0 (1980) (Atari) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6272f348a9a7f2d500a4006aa93e0d08", "Atari, Jerome Domurat, Michael Sierchio", "CX2667, CX2667P", "RealSports Soccer (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "62921652f6634eb1a0940ed5489c7e18", "", "", "SCSIcide (V1.09) (2001) (Joe Grand)", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "62992392ea651a16aa724a92e4596ed6", "Eric Mooney", "", "Invaders by Erik Mooney (Beta) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "62f74a2736841191135514422b20382d", "", "", "Pharaoh's Curse (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "20", "225", "YES", "" }, - { "62ffd175cac3f781ef6e4870136a2520", "", "", "2600 Digital Clock (V x.xx) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63166867f75869a3592b7a94ea62d147", "", "", "Indy 500 (Hack) [a1]", "Hack of Indy 500", "Hack", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "28", "", "", "" }, - { "6333ef5b5cbb77acd47f558c8b7a95d3", "Greg Troutman", "", "Dark Mage (Greg Troutman) (PD) (8K)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6337927ad909aa739d6d0044699a916d", "Jeffry Johnston", "", "Radial Pong - Version 2 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6339d28c9a7f92054e70029eb0375837", "Parker Brothers, Wilfredo 'Willy' Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6342afe9c9ad1b6120b8f6fb040d0926", "", "", "Move a Blue Blob Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6354f9c7588a27109c66905b0405825b", "Thomas Jentzsch", "", "Amidar DS (2003) (TJ) (Hack)", "Hack of Amidar", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "635cc7a0db33773959d739d04eff96c2", "", "", "Minesweeper (V.90) (Soren Gust) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6362396c8344eec3e86731a700b13abf", "Panda", "109", "Exocet (1983) (Panda)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "637efac676ff063f2fbb0abff77c4fa5", "", "", "Noize Maker Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63811ed69bdbc35c69d8aa7806c3d6e9", "Atari", "CX26163P", "Homerun (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "638cc82ea96f67674595ba9ae05da6c6", "Rainbow Vision - Suntek", "SS-011", "Super Ferrari (Rainbow Vision) (PAL)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63a6eda1da30446569ac76211d0f861c", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "63a7445b1d3046d3cdcdbd488dca38d9", "Rob Kudla", "", "Better Space Invaders (1999) (Rob Kudla) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63c5fef3208bb1424d26cf1ab984b40c", "", "", "Analog Clock (V0.1) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63c7395d412a3cd095ccdd9b5711f387", "Eric Ball", "ELB005", "Skeleton+ (PAL)", "Stereo sound", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63d6247f35902ba32aa49e7660b0ecaa", "", "", "Space War (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63e42d576800086488679490a833e097", "Telesys, Jim Rupp", "1004", "Ram It (1982) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63e783994df824caf289b69a084cbf3e", "David Marli", "", "Fat Albert (David Marli) (Hack)", "Hack of Fast Food", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63e9e612bbee31045f8d184a4e53f8ec", "ATARITALIA", "", "Moby Blues (2002) (ATARITALIA) (Hack)", "Hack of Mario Bros", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "640a08e9ca019172d612df22a9190afb", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691, CX2691P", "Joust (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "64198bb6470c78ac24fcf13fe76ab28c", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "643e6451eb6b8ab793eb60ba9c02e000", "Salu - Avantgarde Software, Michael Buetepage", "460741", "Ghostbusters II (1992) (Salu) (PAL) [different tune]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "645bf7f9146f0e4811ff9c7898f5cd93", "Xonox - K-Tel Software", "6230, 6250", "Super Kung-Fu (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6468d744be9984f2a39ca9285443a2b2", "Atari", "CX26163P", "Reversi (32 in 1) (1988) (Atari) (PAL)", "AKA Othello", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "647162cceb550fd49820e2206d9ee7e8", "", "", "Skeleton (NTSC) (2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "64b8e19c767191ccdc97acc6904c397b", "Jeffry Johnston", "", "Radial Pong - Version 6 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "64ca518905311d2d9aeb56273f6caa04", "CCE", "", "Cubo Magico (CCE)", "AKA Cubicolor", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "64d43859258dc8ca54949e9ff4174202", "Thomas Jentzsch", "", "Lilly Adventure (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "64fab9d15df937915b1c392fc119b83b", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (05-20-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "651d2b6743a3a18b426bce2c881af212", "CCE", "C-812", "Pac Man (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "6522717cfd75d1dba252cbde76992090", "Home Vision - Gem International Corp.", "VCS83102", "War 2000 (1983) (Home Vision) (PAL)", "AKA Astrowar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6538e454b0498ad2befe1ef0f87815c0", "Joe Grand", "", "SCSIcide (v1.2) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "65490d61922f3e3883ee1d583ce10855", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692, CX2692P", "Moon Patrol (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "65562f686b267b21b81c4dddc129d724", "", "", "Euchre (28-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "655c84e5b951258c9d20f0bf2b9d496d", "", "", "2600_2003 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "656dc247db2871766dffd978c71da80c", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (1980) (Sears)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "", "", "", "", "" }, - { "65917ae29a8c9785bb1f2acb0d6aafd0", "", "", "Junkosoft One Year Demo (1999) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6596b3737ae4b976e4aadb68d836c5c7", "Digivision", "", "Defender (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "659a20019de4a23c748ec2292ea5f221", "Retroactive", "", "Qb (V2.05) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "65b106eba3e45f3dab72ea907f39f8b4", "Sparrow - HomeComputer Software Co., Dan Schafer, Glenn Stohel, Jon Tedesco", "GCG 1001T", "Music Machine, The (1983) (Sparrow)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "65ba1a4c643d1ab44481bdddeb403827", "Quelle", "876.013 4", "Katastrophen-Einsatz (1983) (Quelle) (PAL)", "AKA M.A.S.H.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "65bd29e8ab1b847309775b0de6b2e4fe", "Coleco, Ed English", "2667", "Roc 'n Rope (1984) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "65c6406f5af934590097c8c032ebb482", "", "", "Three Hugger (Pave Demo) (20-12-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6604f72a966ca6b2df6a94ee4a68eb82", "", "", "MegaMania (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "662eca7e3d89175ba0802e8e3425dedb", "", "", "Hangman Pac-Man Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66362890eb78d6ea65301592cce65f5b", "", "", "Euchre (13-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "663ef22eb399504d5204c543b8a86bcd", "CBS Electronics, Joe Hellesen", "4L1720, 4L1721, 4L2276", "Wizard of Wor (1982) (CBS Electronics) (PAL)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "YES", "" }, - { "6651e2791d38edc02c5a5fd7b47a1627", "Parker Brothers, Wilfredo 'Willy' Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "665b8f8ead0eef220ed53886fbd61ec9", "Telesys, Don 'Donyo' Ruffcorn, Jack Woodman", "1003", "Fast Food (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66706459e62514d0c39c3797cbf73ff1", "Video Gems", "VG-05", "Treasure Below (1983) (Video Gems) (PAL)", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "" }, - { "6672de8f82c4f7b8f7f1ef8b6b4f614d", "Videospielkassette - Ariola", "PGP237", "Angeln I (Ariola) (PAL)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "668dc528b7ea9345140f4fcfbecf7066", "Gakken", "001", "Pooyan (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6697f177847c70505824422e76aad586", "", "", "Tennis (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "669840b0411bfbab5c05b786947d55d4", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66b89ba44e7ae0b51f9ef000ebba1eb7", "Atari, Stephan R. Keith, Preston Stuart", "CX26106", "Grover's Music Maker (01-18-1983) (Atari) (Prototype)", "Uses Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "66b92ede655b73b402ecd1f4d8cd9c50", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66bc1bef269ea59033928bac2d1d81e6", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (Preview) (1982) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "66c2380c71709efa7b166621e5bb4558", "Parker Brothers, Dave Engman, Dawn Stockbridge", "931509", "Tutankham (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66c4e0298d4120df333bc2f3e163657e", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (2 of 3) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66fcf7643d554f5e15d4d06bab59fe70", "Coleco, Ed Temple", "", "Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6706a00f9635508cfeda20639156e66e", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "672012d40336b403edea4a98ce70c76d", "", "", "Spider Kong (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "675ae9c23fa1aae376cea86cad96f9a5", "", "", "Poker Squares (V0.25) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67631ea5cfe44066a1e76ddcb6bcb512", "", "", "Termool (Unknown) (PAL)", "AKA Turmoil", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67684a1d18c85ffa5d82dab48fd1cb51", "Tigervision, Warren Schwader - Teldec", "7-003", "Threshold (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "678c1d71a1616d9d022f03d8545b64bb", "", "", "Demo Image Series #11 - Donald And Mario (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67931b0d37dc99af250dd06f1c095e8d", "CommaVid, Irwin Gaines", "CM-004", "Room of Doom (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "679d30c7886b283cbe1db4e7dbe5f2a6", "Colin Hughes", "", "Puzzle (Colin Hughes) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "679e910b27406c6a2072f9569ae35fc8", "Data Age", "DA1002", "Warplock (1982) (Data Age)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "YES", "" }, - { "67bd3d4dc5ac6a42a99950b4245bdc81", "Retroactive", "", "Qb (2.11) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "67c05ae94bf8b83a666c3ae2c4bc14de", "Atari", "CX26163P", "NFL Football (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67ce6cdf788d324935fd317d064ed842", "Retroactive", "", "Qb (V2.09) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "67cf913d1df0bf2d7ae668060d0b6694", "", "", "Hangman Monkey 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6803fa7c2c094b428b859a58dc1dd06a", "Retroactive", "", "Qb (0.11) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6805734a0b7bcc8925d9305b071bf147", "Bit Corporation", "PGP229", "Kung Fu (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Karate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "681206a6bde73e71c19743607e96c4bb", "", "", "Casino (Unknown) (PAL)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "49", "", "", "" }, - { "683bb0d0f0c5df58557fba9dffc32c40", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia) [a]", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "683dc64ef7316c13ba04ee4398e2b93a", "Ed Federmeyer", "", "Edtris (1995) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "68449e4aaba677abcd7cde4264e02168", "", "", "Horizonal Color Bars Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6847ce70819b74febcfd03e99610243b", "", "", "Ruby Runner 4A50", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "68489e60268a5e6e052bad9c62681635", "Bit Corporation", "PG201", "Sea Monster (1982) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "36", "256", "", "" }, - { "68597264c8e57ada93be3a5be4565096", "Data Age", "DA1005", "Bugs (1982) (Data Age)", "Uses the Paddle Controllers", "Uncommon", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "685e9668dc270b6deeb9cfbfd4d633c3", "CommaVid, Irwin Gaines - Ariola", "CM-004 - 712 004-720", "Room of Doom (1982) (CommaVid) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "68760b82fc5dcf3fedf84376a4944bf9", "CCE", "C-860", "Laser Gate (1983) (CCE)", "AKA Laser Gates", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "687c23224e26f81c56e431c24faea36d", "", "", "Qb (Simple Background Animation) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "68878250e106eb6c7754bc2519d780a0", "CCE", "C-809", "Squirrel (1983) (CCE)", "AKA Snail Against Squirrel", "", "", "", "", "", "", "", "", "", "", "", "24", "230", "", "" }, - { "68c80e7e1d30df98a0cf67ecbf39cc67", "Hozer Video Games", "", "Gunfight 2600 - One Step Forward & Two Steps Back (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "68cd2adc6b1fc9a1f263ab4561112f30", "Thomas Jentzsch", "", "Boulderdash Demo (09-12-2002) (TJ)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "68feb6d6ff63e80df1302d8547979aec", "", "", "Starfield Demo 2 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "690a6049db78b9400c13521646708e9c", "King Tripod Enterprise Co.", "SS - 007", "Space Raid (King Tripod) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6913c90002636c1487538d4004f7cac2", "Atari", "CX26131", "Monster Cise (1984) (Atari) (Prototype)", "Uses the Keypad Controllers (left only)", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "691d67910b08b63de8631901d1887c1f", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "692202772d8b38ccf85a90c8003a1324", "", "", "Zi - The Flie Buster (2002) (Fernando Mora) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "693137592a7f5ccc9baae2d1041b7a85", "", "", "Qb (V2.02) (Stella) (2001) (Retroactive) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6979f30204149be3e227558cffe21c1d", "Atari", "CX26163P", "Miniaturer Golf (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Miniature Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6982854657a2cc87d712f718e402bf85", "Zellers", "", "Earth Attack (Zellers)", "AKA Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "698f569eab5a9906eec3bc7c6b3e0980", "SpkLeader", "", "Demons! (2003) (SpkLeader) (Hack)", "Hack of Phoenix", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69974dd5d6420b90898cde50aec5ef39", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69df0411d4d176e558017f961f5c5849", "CCE", "C-831", "Cosmic Ark (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69e79b1352b9ee1754bbe63b4a7062c3", "Barry Laws Jr.", "", "Pink Floyd - The Wall (2003) (Barry Laws Jr.) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69ebf910ab9b63e5b8345f016095003b", "", "", "Maze Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69fac82cd2312dd9ce5d90e22e2f070a", "Spectravision, Spectravideo - Quelle", "SA-202 - 412.851 8", "Planet Patrol (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a03c28d505bab710bf20b954e14d521", "", "", "Pressure Gauge 2 Beta (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a07836c382195dd5305ce61d992aaa6", "Apollo, Larry Martin", "AP-2008", "Guardian (1982) (Apollo) (Prototype)", "Uses the Paddle Controller (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "6a091b8ffeacd0939850da2094b51564", "", "", "Vertically Scrolling Playfield (02-02-2003) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a2c68f7a77736ba02c0f21a6ba0985b", "Atari, Larry Wagner, Bob Whitehead", "", "Computer Chess (07-07-1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a3b0c33cf74b1e213a629e3c142b73c", "Cody Pittman", "", "Cory The Interviewer (Cody Pittman) (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a76d5f0ed721639474aa9bbde69ebf0", "", "", "Play Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6a82b8ecc663f371b19076d99f46c598", "Activision, Larry Miller - Ariola", "EAX-026, EAX-026-04B, EAX-026-04I - 711 026-725", "Enduro (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a882fb1413912d2ce5cf5fa62cf3875", "Video Game Cartridge - Ariola", "TP-605", "Dragon Defender (Ariola) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6a9b30ca46b0dba9e719f4cbd340e01c", "", "", "Frostbite (Unknown) (PAL) (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a9e0c72fab92df70084eccd9061fdbd", "CCE", "C-835", "Beany Bopper (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6aa66e9c3eea76a0c40ef05513497c40", "", "", "Hangman Ghost Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ac3fd31a51730358708c7fdc62487f8", "Matthias Jaap", "", "PC Invaders (Matthias Jaap) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ae4dc6d7351dacd1012749ca82f9a56", "Atari - GCC, Jaques Hugon, Seth Lipkin", "CX26125, CX26127", "Track and Field (1984) (Atari)", "Uses the Track & Field Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b01a519b413f8cfa2f399f4d2841b42", "", "", "Aphex Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b1fc959e28bd71aed7b89014574bdc2", "Bit Corporation", "PG203", "Phantom Tank (1982) (BitCorp) (PAL)", "AKA Phantom-Panzer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b4eb5b3df80995b8d9117cb7e9aeb3c", "Gameworld", "133-006", "Journey Escape (1983) (Gameworld) (PAL)", "AKA Rock 'n' Roll Escape", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6b683be69f92958abe0e2a9945157ad5", "U.S. Games Corporation, Paul Allen Newell, Steve Sidley, Tom Sloper", "VC2007", "Entombed (1982) (U.S. Games)", "Released as Name That Game for a contest (winning name was Entombed)", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6b6ca32228ae352b4267e4bd2cddf10c", "", "", "Pac-Man 4 (Pac-Man Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "6b71f20c857574b732e7a8e840bd3cb2", "", "", "Frostbite (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b72b691ea86f61438ed0d84c4d711de", "", "", "Fishing Derby (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b75f8fa4fd011a6698c58315f83d2ac", "Thomas Jentzsch", "", "Sprintmaster DC (TJ)", "Uses the Driving Controllers, Hack of Sprintmaster (Atari)", "New Release (Hack)", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "24", "", "", "" }, - { "6b7a56b6ac2ca4bf9254474bf6ed7d80", "", "", "Horizonal Color Bars Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b7e1c11448c4d3f28160d2de884ebc8", "Zirok", "", "Fast Food (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b853585764b8cfdc73310e372c828d9", "", "", "Image - Baboon (Interlaced Demo 2) (15-02-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b8fb021bb2e1f1e9bd7ee57f2a8e709", "Paul Slocum", "", "3-D Corridor (29-03-2003) (Paul Slocum) (PD) [a]", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6bb09bc915a7411fe160d0b2e4d66047", "Atari", "CX26163P", "UFO (32 in 1) (1988) (Atari) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6bb22efa892b89b69b9bf5ea547e62b8", "Dynacom", "", "Megamania (1982) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6bde3f6ac31aceef447ce57d4d2c2ec0", "Piero Cavina", "", "Mondo Pong V1 (Piero Cavina) (PD)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "6c128bc950fcbdbcaf0d99935da70156", "Digitel", "", "Volleyball (1983) (Digitel)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c1553ca90b413bf762dfc65f2b881c7", "Quelle", "343.073 3", "Winterjagd (1983) (Quelle) (PAL)", "AKA Ski Hunt", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c1f3f2e359dbf55df462ccbcdd2f6bf", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c25f58fd184632ca76020f589bb3767", "Dynacom", "", "Beat 'Em & Eat 'Em (1983) (Dynacom)", "Uses the Paddle Controller (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "6c449db9bbbd90972ad1932d6af87330", "", "", "20 Sprites at Once Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c658b52d03e01828b9d2d4718a998ac", "", "", "Hangman Invader Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c76fe09aa8b39ee52035e0da6d0808b", "Atari, Brad Stewart", "CX2622, CX2622P", "Breakout (1978) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "6c85098518d3f94f7622c42fd1d819ac", "Suntek", "SS-028", "Firebug (Suntek) (PAL)", "AKA Spinning Fireball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c91ac51421cb9fc72c9833c4f440d65", "ITT Family Games", "554-33 375", "Cosmic Town (1983) (ITT Family Games) (PAL)", "AKA Base Attack (Perry Rhodan-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c9a32ad83bcfde3774536e52be1cce7", "", "", "Space Treat (NTSC) (13-08-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cbe945e16d9f827d0d295546ac11b22", "", "", "Gunfight 2600 - AI (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ccd8ca17a0e4429b446cdcb66327bf1", "", "", "RPG Engine (12-05-2003) (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6cd1dc960e3e8d5c5e0fbe67ab49087a", "", "", "Vertical Playfield Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cd506509e8fd5627f55603780e862a8", "Greg Troutman", "", "Dark Mage (SuperCharger) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6ce2110ac5dd89ab398d9452891752ab", "Funvision - Fund. International Co.", "", "Persian Gulf War (Funvision)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cea35ded079863a846159c3a1101cc7", "", "", "Atlantis (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cf054cd23a02e09298d2c6f787eb21d", "Parker Brothers, Wilfredo 'Willy' Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6d218dafbf5a691045cdc1f67ceb6a8f", "Robin Harbron", "", "6 Digit Score Display (1998) (Robin Harbron) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d475019ea30d0b29f695e9dcfd8f730", "Eric Mooney", "", "Invaders by Erik Mooney (Alpha 2) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d74ebaba914a5cfc868de9dd1a5c434", "", "", "Fortress (Smooth Version) (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d842c96d5a01967be9680080dd5be54", "Activision, David Crane", "AB-035-04", "Pitfall II (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d8a04ee15951480cb7c466e5951eee0", "Zirok", "", "Kanguru (1983) (Zirok)", "AKA Kangaroo", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d9afd70e9369c2a6bff96c4964413b7", "", "", "Time Warp (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6dda84fb8e442ecf34241ac0d1d91d69", "Atari - GCC, Douglas B. Macrae", "CX2677", "Dig Dug (1983) (Atari)", "", "", "", "F6SC", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6de924c2297c8733524952448d54a33c", "CCE", "C-1006", "Moon Patrol (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6dfad2dd2c7c16ac0fa257b6ce0be2f0", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e19428387686a77d8c8d2f731cb09e0", "", "", "Purple Cross Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e372f076fb9586aff416144f5cfe1cb", "Atari, Tod Frye - Sears", "CX2646 - 49-75185", "Pac-Man (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "6e4521989a60a0ddf4ff1fc6e6e5fc3d", "", "", "Star Fire (01-05-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e59dd52f88c00d5060eac56c1a0b0d3", "Atari, Bob Smith", "CX2648", "Video Pinball (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e5d5ba193d2540aec2e847aafb2a5fb", "Retroactive", "", "Qb (2.14) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6e7ed74082f39ad4166c823765a59909", "", "", "Poker Squares (V0.14) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ed5012793f5ddf4353a48c11ea9b8d3", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Down on the Line (3 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "", "30", "", "", "" }, - { "6efe876168e2d45d4719b6a61355e5fe", "Bit Corporation", "PG207", "Mission 3,000 A.D. (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6f084daf265599f65422ef4173b69bc7", "", "", "Music Kit (V2.0) - Song Player (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6f2aaffaaf53d23a28bf6677b86ac0e3", "U.S. Games Corporation, Garry Kitchen - Vidtec", "VC1001", "Space Jockey (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6f5b3021a88930a9bba3770094c95f3d", "", "", "Image - Clown (09-02-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6f74ed915ffe73b524ef0f63819e2a1d", "Eckhard Stolberg", "", "An Exercise In Minimalism (V2) (1999) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6f75d72e4cf996100ccdd163d57bdac2", "", "", "Star Fire (200203) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fa0ac6943e33637d8e77df14962fbfc", "Imagic, Rob Fulop", "", "Cubicolor (1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fac680fc9a72e0e54255567c72afe34", "", "", "Superman (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fbd05b0ad65b2a261fa154b34328a7f", "", "", "Boardgame Demo (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fc0176ccf53d7bce249aeb56d59d414", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (Rainbow Vision) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fc27a9233fc69d28d3f190b4ff80f03", "", "", "UFO #6 (Charles Morgan) (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fc394dbf21cf541a60e3b3631b817f1", "Imagic, Bob Smith", "720020-2A, IA3611P", "Dragonfire (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fd7c7057eeab273b29c7aafc7429a96", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fe67f525c39200a798985e419431805", "Atari - GCC, Kevin Osborn", "CX2689, CX2689P", "Kangaroo (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ff4156d10b357f61f09820d03c0f852", "Atari, Larry Kaplan - Sears", "CX2612 - 99804, 49-75103", "Street Racer (1977) (Atari) (4K)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "", "", "", "", "" }, - { "6ffc95108e5add6f9b8abcaf330be835", "Charles Morgan", "", "TP Bug (Charles Morgan) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "700a786471c8a91ec09e2f8e47f14a04", "Activision", "", "Unknown Activision Game #2 (1983) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, - { "703d32062436e4c20c48313dff30e257", "", "", "Moving Maze Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "703f0f7af350b0fa29dfe5fbf45d0d75", "Bit Corporation", "P460", "4 Game in One Dark Green (1983) (BitCorp) (PAL)", "Rodeo Champ, Bobby is Going Home, Open Sesame, Festival", "", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "705fe719179e65b0af328644f3a04900", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "706e3cc4931f984447213b92d1417aff", "", "", "Joustpong (06-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "707ecd80030e85751ef311ced66220bc", "", "", "Double-Height 6-Digit Score Display (Background Color Change) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7096a198531d3f16a99d518ac0d7519a", "Telesys, Jim Rupp", "1004", "Ram It (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "709910c2e83361bc4bf8cd0c20c34fbf", "Rainbow Vision - Suntek", "SS-006", "Netmaker (Rainbow Vision) (PAL)", "AKA Amidar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "70a8480cfaf08776e5420365732159d2", "Rob Kudla", "", "Horizontally Scrolling Playfield Thing (Rob Kudla) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "70ce036e59be92821c4c7fd735ec6f68", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "70d14c66c319683b4c19abbe0e3db57c", "", "", "Oystron (V2.82) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "710497df2caab69cdcc45e919c69e13f", "Arcadia Corporation, Dennis Caswell", "5 AR-4200", "Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "713095cd968b1aff45a2562ea4bbcbfe", "", "", "Image - Qb (16-02-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "713fde2af865b6ec464dfd72e2ebb83e", "", "", "Challenge (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "71464c54da46adae9447926fdbfc1abe", "M Network, Bruce Pedersen - INTV", "MT5663", "Lock 'n' Chase (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "714e13c08508ee9a7785ceac908ae831", "Home Vision - Gem International Corp.", "VCS83123", "Parachute (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "715dd9e0240638d441a3add49316c018", "Atari", "", "128-in-1 Junior Console (Chip 2 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7187118674ff3c0bb932e049d9dbb379", "Zirok", "", "Keystone Keypers (1983) (Zirok)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "718ae62c70af4e5fd8e932fee216948a", "Data Age", "112-006", "Journey Escape (1982) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "230", "YES", "" }, - { "718ee85ea7ec27d5bea60d11f6d40030", "Thomas Jentzsch", "", "Ghostbusters II (1992) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7197b6cbde6ecd10376155e6b848e80d", "Piero Cavina", "", "Multi-Sprite Game V2.1 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "71b193f46c88fb234329855452dfac5b", "Digitel", "", "Atlantis (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "71d005b60cf6e608d04efb99a37362c3", "Atari, Larry Kaplan", "CX2643", "Codebreaker (1978) (Atari) (PAL) (4K) [a]", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "57", "", "", "" }, - { "71f09f128e76eb14e244be8f44848759", "Funvision - Fund. International Co.", "", "Time Race (Funvision) (PAL)", "AKA Time Warp", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "71f8bacfbdca019113f3f0801849057e", "Atari, Dan Hitchens", "CX26126", "Elevator Action (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72097e9dc366900ba2da73a47e3e80f5", "", "", "Euchre (15-06-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "721a5567f76856f6b50a6707aa8f8316", "Activision, David Crane, Dan Kitchen", "EAG-108-04, EAZ-108-04B", "Ghostbusters (1985) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72305c997f2cec414fe6f8c946172f83", "Arcadia Corporation, Dennis Caswell", "AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "724613effaf7743cbcd695fab469c2a8", "", "", "Super-Ferrari (Unknown)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "728152f5ae6fdd0d3a9b88709bee6c7a", "Spectravideo, Mark Turmell", "SA-217", "Gas Hog (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72876fd7c7435f41d571f1101fc456ea", "Quelle", "688.383 9", "Die Ente und der Wolf (1983) (Quelle) (PAL)", "AKA Pooyan", "", "", "", "", "", "", "", "", "", "", "", "26", "", "", "" }, - { "72a46e0c21f825518b7261c267ab886e", "Xonox - K-Tel Software", "99005, 6220, 6250", "Robin Hood (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "222", "", "" }, - { "72a5b5052272ac785fa076709d16cef4", "", "", "KC Munckin (29-01-2003) (J. Parlee)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72bda70c75dfa2365b3f8894bace9e6a", "Thomas Jentzsch", "", "Atlantis (TJ) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72d0acb5de0db662de0360a6fc59334d", "", "", "Cosmic Ark (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72db1194b1cc7d45b242f25eb1c148d3", "", "", "Pac-Man (1981) (Atari) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "72fd08deed1d6195942e0c6f392e9848", "HES", "0701-406", "2 Pak Special - Wall Defender, Planet Patrol (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72ffbef6504b75e69ee1045af9075f66", "Atari, Richard Maurer - Sears", "CX2632 - 49-75153", "Space Invaders (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73158ea51d77bf521e1369311d26c27b", "Zellers", "", "Challenge (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "25", "", "", "" }, - { "73521c6b9fed6a243d9b7b161a0fb793", "Atari", "CX26163P", "Miniaturer Golf (32 in 1) (1988) (Atari) (PAL)", "AKA Miniature Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "736388d73198552d77d423962000006f", "Dactari", "", "Tennis (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73a710e621d44e97039d640071908aef", "", "", "Barber Pole Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73aa02458b413091ac940c0489301710", "Quelle", "463.574 4 - 781393", "Boom Bang (1983) (Quelle) (PAL)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73b4e8f8b04515d91937510e680214bc", "", "", "Rubik's Cube Demo 3 (24-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73c545db2afd5783d37c46004e4024c2", "CBS Electronics, Henry Will IV", "4L1767, 4L1768, 4L1769, 4L1770", "Smurf (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73c839aff6a055643044d2ce16b3aaf7", "Activision, Alan Miller - Ariola", "EAX-016, PAX-016 - 711 016-725", "StarMaster (1982) (Activision) (PAL)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73cb1f1666f3fd30b52b4f3d760c928f", "", "", "Mines of Minos (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "73e66e82ac22b305eb4d9578e866236e", "Jone Yuan Telephonic Enterprise Co", "", "Unknown Datatech Game (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "73efa9f3cbe197f26e0fb87132829232", "CCE", "C-858", "Tennis (1983) (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74023e0f2e739fc5a9ba7caaeeee8b6b", "Jone Yuan Telephonic Enterprise Co", "", "Fishing Derby (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "740b47df422372fbef700b42cea4e0bf", "", "", "Dizzy Wiz (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "740f39e71104e90416c29a73560b9c6b", "Atari", "TE016643", "Diagnostic Test Cartridge 2.6P (1982) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "742de93b8d849220f266b627fbabba82", "", "", "SCSIcide (25-02-2001) (Chris Wilkson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7450ae4e10ba8380c55b259d7c2b13e8", "", "", "Register Twiddler Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7454786af7126ccc7a0c31fcf5af40f1", "", "", "Phantom Tank (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7465b06b6e25a4a6c6d77d02242af6d6", "Atari", "CX26193", "8 in 1 (01-16-92) (Atari) (Prototype)", "Game 2 is Centipede, but doesn't work", "Prototype", "", "8IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "747d3031eb37e32abc7f6e5ee928cd8f", "", "", "Greeting Cart Goth (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7481f0771bff13885b2ff2570cf90d7b", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "749fec9918160921576f850b2375b516", "Spectravision, Spectravideo", "SA-205", "China Syndrome (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "29", "", "YES", "" }, - { "74ca9bdc91ee387a5bd929b73aec5c2c", "", "", "Star Fire - New Shields (03-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74d072e8a34560c36cacbc57b2462360", "Sancho - Tang's Electronic Co.", "TEC002", "Seahawk (1982) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74ebaca101cc428cf219f15dda84b6f8", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74f623833429d35341b7a84bc09793c0", "Zellers", "", "Radar (Zellers)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75028162bfc4cc8e74b04e320f9e6a3f", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White and the Seven Dwarfs (02-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7511c34518a9a124ea773f5b0b5c9a48", "", "", "Donkey Kong (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75169c08b56e4e6c36681e599c4d8cc5", "M Network, Hal Finney - INTV", "MT5666", "Astroblast (1982) (M Network)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "753375d183c713cfa0aa7298d1f3067b", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "AR-4102", "Suicide Mission (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7550b821ee56fb5833dca2be88622d5a", "", "", "Multiple Moving Objects Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75511bb694662301c9e71df645f4b5a7", "Activision, Bob Whitehead - Ariola", "EAG-011, PAG-011 - 711 011-715", "Stampede (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "755fed16b48e81de05130708a905d00d", "SnailSoft", "", "Comitoid beta 3 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "756ca07a65a4fbbedeb5f0ddfc04d0be", "Atari, Jim Huether", "CX2629, CX2629P", "Sky Diver (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7574480ae2ab0d282c887e9015fdb54c", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7576dd46c2f8d8ab159d97e3a3f2052f", "Goliath - Hot Shot", "83-112", "Time Machine (1983) (Goliath) (PAL)", "AKA Asteroid Fire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "757f529026696e13838364dea382a4ed", "Activision, David Crane - Ariola", "EAX-014, PAX-014, EAX-014-04B, EAX-014-04I - 711 014-720", "Grand Prix (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75a303fd46ad12457ed8e853016815a0", "ZiMAG - Emag - Vidco", "715-111 - GN-060", "Immies & Aggies (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75b22fdf632d76e246433db1ebccd3c4", "", "", "Skeleton+ (05-05-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75b557be7f08db84ec5b242207b9f241", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75e276ba12dc4504659481c31345703a", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75e8d8b9e9c5c67c2226dbfd77dcfa7d", "", "", "2600 Digital Clock (V b1) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75ea128ba96ac6db8edf54b071027c4e", "Atari, David Crane", "CX26163P", "Slot Machine (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75ea60884c05ba496473c23a58edf12f", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "75ee371ccfc4f43e7d9b8f24e1266b55", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White and the Seven Dwarfs (11-09-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7608abdfd9b26f4a0ecec18b232bea54", "Atari", "CX26163P", "NFL Football (32 in 1) (1988) (Atari) (PAL)", "AKA Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7623a639a6fffdb246775fe2eabc8d01", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7628d3cadeee0fd2e41e68b3b8fbe229", "Atari", "CX26163P", "Fishing Derby (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7648e72a5b5899076688df18a1ddcf72", "CBS Electronics, Richard K. Balaska Jr., Andy Frank, Stuart Ross", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics) (Prototype)", "Black Box", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76809eb1ee0db8a318308a5cdda0f4e2", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76a9bf05a6de8418a3ebc7fc254b71b4", "VideoSoft, Jerry Lawson", "VS1008", "Color Bar Generator (1984) (VideoSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76c685d1a60c0107aa54a772113a2972", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (3 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76c88341017eae660efc6e49c4b6ab40", "", "", "Indiana Pitfall (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76ee917d817ef9a654bc4783e0273ac4", "Quelle", "311377", "Fox & Goat (Double-Game Package) (1983) (Quelle) (PAL)", "AKA Nuts", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76f53abbbf39a0063f24036d6ee0968a", "M Network, David Akers, Joe 'Ferreira' King, Patricia Lewis Du Long, Jeff Ratcliff - INTV", "MT7045", "Bump 'n' Jump (1983) (M Network)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76f66ce3b83d7a104a899b4b3354a2f2", "UA Limited", "", "Cat Trax (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, - { "77057d9d14b99e465ea9e29783af0ae3", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "22", "", "", "" }, - { "7732e4e4cc2644f163d6650ddcc9d9df", "HES", "771-333", "2 Pak Special - Challenge, Surfing (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7778ac65d775a079f537e97cbdad541c", "", "", "Spider Fighter (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "777aece98d7373998ffb8bc0b5eff1a2", "", "", "2600 Collison Demo 2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "77887e4192a6b0a781530e6cf9be7199", "Atari", "CX2604", "Space War (1978) (Atari) [b1]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "77be57d872e3f5b7ecf8d19d97f73281", "", "", "Basketball (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "77cd9a9dd810ce8042bdb9d40e256dfe", "Kyle Pittman", "", "Evil Dead (2003) (Kyle Pittman) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "77d0a577636e1c9212aeccde9d0baa4b", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "" }, - { "78297db7f416af3052dd793b53ff014e", "", "", "Poker Squares (V0.17) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7836794b79e8060c2b8326a2db74eef0", "", "", "RIOT RAM Test (26-11-2002) (Dennis Debro)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "784176346e9422733d55c427230e5bad", "Activision, Alex DeMeo", "", "Title Match Pro Wrestling (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7860716fa5dbc0fffab93fb9a4cb4132", "", "", "Hangman Monkey Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7867ee819b53d69cfcfe740f7ddca574", "Arcadia Corporation, Dennis Caswell", "1 AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "787ebc2609a31eb5c57c4a18837d1aee", "Prescott", "", "Vault Assault (19xx) (Prescott)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78821ef76ebc3934850d1bc1b9e4f4b0", "HES - Activision", "542", "Hot Action Pak - Ghostbusters, Tennis, Plaque Attack (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78963290052fd17c6c7998305ab3a6a0", "", "", "Push (V0.08) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78b84cfb1c57b0488d674d2374e656e6", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78c2de58e42cd1faac2ea7df783eaeb3", "", "", "Fu Kung! (V0.07) (25-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79004f84bdeee78d142e445057883169", "CCE", "C-830", "Planet Patrol (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "791bc8aceb6b0f4d9990d6062b30adfa", "Activision, David Crane - Ariola", "EAX-018, EAX-018-04B, EAX-018-04I - 711 018-725", "Pitfall! (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7926083ad423ed685de3b3a04a914315", "Barry Laws Jr.", "", "Face Invaders 2 (Barry Laws Jr.) (Hack)", "Hack of Astroblast", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "792b1d93eb1d8045260c840b0688ec8f", "Kroko", "", "3E Bankswitch Test (TIA @ $00)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7972e5101fa548b952d852db24ad6060", "Atari - Sears", "CX2627 - 6-99841", "Human Cannonball (1979) (Atari)", "AKA Cannon Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "798b8921276eec9e332dfcb47a2dbb17", "Atari, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari) (PAL) [a]", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "798cc114f1623c14085868cd3494fe8e", "", "", "Pins Revenge (Atari Freak 1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7991e1797e5e9f311fd957e62d889dff", "Joe Grand", "", "SCSIcide (v1.1) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "7996b8d07462a19259baa4c811c2b4b4", "", "", "Math Gran Prix (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79ab4123a83dc11d468fb2108ea09e2e", "Activision, David Rolfe - Cheshire Engineering", "AZ-037-04", "Beamrider (1984) (Activision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79b649fb812c50b4347d12e7ddbb8400", "", "", "Red Pong Number 2 Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "79c27f90591e3fdc7d2ed020ecbedeb3", "CCE", "C-815", "Seaquest (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79d4af56036ec28f298cad964a2e2494", "", "", "Hangman Pac-Man Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79d6f61da3c64688ac8e075667f8a39f", "", "", "Tie-Fighters (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79e5338dbfa6b64008bb0d72a3179d3c", "M Network, David Akers, Patricia Lewis Du Long - INTV", "MT4313", "Star Strike (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79fcdee6d71f23f6cf3d01258236c3b9", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673, CX2673P", "Phoenix (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a09299f473105ae1ef3ad6f9f2cd807", "Atari, Steve Wright", "CX2616P", "Pele's Soccer (1981) (Atari) (PAL)", "AKA Championship Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a2af383014f5d810ad26d322823549d", "", "", "FlickerSort Demo (20-04-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a5463545dfb2dcfdafa6074b2f2c15e", "20th Century Fox Video Games, Mark Turmell", "11007", "Turmoil (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a63d7ea3f2851bcf04f0bb4ba1a3929", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (3 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a64a8b727c8215d945e37d565ca95a5", "Atari, Warren Robinett", "CX2606", "Slot Racers (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a64b5a6e90619c6aacf244cdd7502f8", "Baroque Gaming (Brian Eno)", "", "Warring Worms (Beta 1) (2002) (Baroque Gaming)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a7f6ab9215a3a6b5940b8737f116359", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a93d0c029eaa72236523eedc3f19645", "", "", "20 Sprites at Once Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ab0917107b6ec768a5ebaadf28c497a", "", "", "Santa's Helper (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "7ab210f448de518fa61a5924120ba872", "", "", "Fortress (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ab2f190d4e59e8742e76a6e870b567e", "Apollo, Larry Martin", "AP-2008", "Guardian (1982) (Apollo)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "7ac4f4fb425db38288fa07fb8ff4b21d", "Goliath", "83-213", "Space Eagle (1983) (Goliath) (PAL)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ad257833190bc60277c1ca475057051", "Atari, Alan J. Murphy, Robert Zdybel", "CX2668", "RealSports Football (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7ad782952e5147b88b65a25cadcdf9e0", "Imagic, Dave Johnson", "720119-1A, 03211", "Kwibble (1983) (Imagic) (Prototype)", "AKA Quick Step! Beta", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7adbcf78399b19596671edbffc3d34aa", "Atari, Joseph Tung", "CX26152", "Super Baseball (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "7af40c1485ce9f29b1a7b069a2eb04a7", "Amiga", "3120", "Mogul Maniac (1983) (Amiga)", "Uses the Amiga Joyboard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b24bfe1b61864e758ada1fe9adaa098", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b33407b2b198af74906b936ce1eecbb", "King Atari", "", "Ghostbuster 2 (King Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7b3cf0256e1fa0fdc538caf3d5d86337", "CommaVid, Joseph Biel", "CM-009", "Stronghold (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "7b43c32e3d4ff5932f39afcb4c551627", "Syncro, Dan Wolf", "", "Kamikaze Saucers (1983) (Syncro) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "38", "220", "", "" }, - { "7b5207e68ee85b16998bea861987c690", "Atari, Carol Shaw", "CX26163P", "3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "62", "", "", "" }, - { "7b6f3348dbf71ada88db0fdaf7feefe0", "", "", "3-D Corridor (Pink Spiral) (31-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b79beb378d1b4471def90ceccf413de", "", "", "Pitfall Cupcake (Hack)", "Hack of Pitfall", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b7b4ac05232490c28f9b680c72998f9", "Zellers", "", "Freeway (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b8a481e0c5aa78150b5555dff01f64e", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (05-16-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b938c7ddf18e8362949b62c7eaa660a", "Atari, Bob Whitehead - Sears", "CX2603 - 99803, 49-75601", "Star Ship (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ba07d4ea18bf3b3245c374d8720ad30", "Arcadia Corporation, Stephen Harland Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7bb286cb659d146af3966d699b51f509", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (04-03-1989) (Atari) (Prototype)", "AKA Saving Mary", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7bc4fd254ec8c0a25a13f02fd3f762ff", "Retroactive", "", "Qb (V1.00) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7c00e7a205d3fda98eb20da7c9c50a55", "Apollo - Games by Apollo, Ernie Runyon, Ed Salvo", "AP-2004", "Lost Luggage (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7c4a499d343fca0cef2d59dd16af621a", "", "", "Poker Card Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7c757bb151269b2a626c907a22f5dae7", "TNT Games, Adam Clayton", "26192", "BMX Air Master (1989) (TNT Games) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7c9b3b8b25acf2fe3b8da834f69629c6", "", "", "I Robot (1984) (Atari) (Prototype) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ca7a471d70305c673fedd08174a81e8", "Tim Snider", "", "Venture II (2001) (Tim Snider)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7cc77f6745e1f2b20df4a4327d350545", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ccf350354ee15cd9b85564a2014b08c", "", "", "Big Dig (13-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7cd379da92c93679f3b6d2548617746a", "", "", "Demo Image Series #5 - Clown (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7cd900e9eccbb240fe9c37fa28f917b5", "Jone Yuan Telephonic Enterprise Co", "", "Bi! Bi! (Jone Yuan) (PAL)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "7ced6709f091e79a2ab9575d3516a4ac", "Activision, Steve Cartwright - Ariola", "EAX-027 - 711 027-722", "Plaque Attack (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d0b49ea4fe3a5f1e119a6d14843db17", "Gameworld", "133-008", "Frankenstein's Monster (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d3cdde63b16fa637c4484e716839c94", "CCE", "", "Road Runner (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "7d5c3b7b908752b98e30690e2a3322c2", "Dactari - Milmar", "", "Freeway (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d726fa494f706784bafeb1b50d87f23", "Coleco, Ed Temple", "", "Cabbage Patch Kids (07-27-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d903411807704e725cf3fafbeb97255", "Imagic, Rob Fulop", "720104-1A, 720104-1B, IA3204", "Cosmic Ark (Reaction) (1982) (Imagic) [selectable starfield]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d93071b3e3616093a6b5a98b0315751", "", "", "Gunfight 2600 - Music & Bugfixes 2 (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d940d749e55b96b7b746519fa06f2de", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (Preview) (1983) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "7d9c96b215d1941e87b6fb412eb9204f", "", "", "Othello (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7da9de8d62fcdd3a2c545b2e720c2a61", "CommaVid, John Bronstein", "CM-001", "MagiCard (1981) (CommaVid) (4K)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "24", "", "", "" }, - { "7dbc8fa2e488e3f6b87fbe0f76c5b89f", "Ed Federmeyer", "", "Sound X (1996) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7dc03a1f56d0e6a8aae3e3e50d654a08", "", "", "Hozer Video Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7dcbfd2acc013e817f011309c7504daa", "Arcadia Corporation, Dennis Caswell", "AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "7dd9c5284422f729066ab22a284c8283", "CCE", "C-833", "Target Practice (1983) (CCE) [a]", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "26", "214", "", "" }, - { "7dfd100bda9abb0f3744361bc7112681", "Telesys, Don 'Donyo' Ruffcorn", "1006", "Demolition Herby (1983) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7e2fe40a788e56765fe56a3576019968", "Activision, Dan Kitchen", "AK-050-04", "Double Dragon (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e464186ba384069582d9f0c141f7491", "PlayAround - J.H.M.", "206", "General Re-Treat (1982) (PlayAround) (PAL)", "AKA Custer's Revenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e4783a59972ae2cd8384f231757ea0b", "Atari", "CX26139P", "Crossbow (1987) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e51a58de2c0db7d33715f518893b0db", "CBS Electronics, E.F. Dreyer, Ed Salvo", "4L 2738 0000", "Mountain King (1983) (CBS Electronics) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7e52a95074a66640fcfde124fffd491a", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673", "Phoenix (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e7c4c59d55494e66eef5e04ec1c6157", "Baroque Gaming (Brian Eno)", "", "Warring Worms (2002) (Baroque Gaming)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e8aa18bc9502eb57daaf5e7c1e94da7", "CBS Electronics", "M8774, M8794", "Wizard of Wor (1982) (CBS Electronics)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "YES", "" }, - { "7e9da5cb84d5bc869854938fe3e85ffa", "Atari, Ian Shepard - Sears", "CX2604 - 6-99812, 49-75106", "Space War (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7eab0284a0cd1043461d446a08d08cec", "Jone Yuan Telephonic Enterprise Co", "", "Basic Math (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ead257e8b5a44cac538f5f54c7a0023", "Xonox, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7eaf009a892f03d90682dc1e67e85f07", "Fabrizio Zavagli", "", "Bounce! (18-03-2003) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7eafc9827e8d5b1336905939e097aae7", "Atari, Mark R. Hahn", "", "Elk Attack (1987) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7eba20c2291a982214cc7cbe8d0b47cd", "Imagic, Dave Johnson", "720119-1A, 03211", "Quick Step! (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ed61a18cebdeca0a93be1f5461731e5", "Dactari", "", "Skiing (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ed7130a6e4020161836414332b11983", "", "", "Fu Kung! (V0.05 Cuttle Card Compatible) (13-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7edc8fcb319b3fb61cac87614afd4ffa", "Activision, Alan Miller", "AG-003", "Checkers (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ef3ca08abde439c6ccca84693839c57", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (1983) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "7ef74879d7cb9fa0ef161b91ad55b3bb", "CCE", "", "Vanguard (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f0209cfcc3d181715463f4d6451cecf", "Atari - GCC, Betty Ryan Tylko, Douglas B. Macrae", "CX2694", "Pole Position (05-15-1983) (Atari) (Prototype)", "AKA RealSports Driving", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f07cd2e89dda5a3a90d3ab064bfd1f6", "Videospielkassette - Ariola", "PGP234", "Boxen (Ariola) (PAL)", "AKA Boxing", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f430c33044e0354815392b53a9a772d", "HES", "", "2 Pak Special - Cavern Blaster, City War (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f525b07bc98080cc8950f7284e52ede", "Atari", "", "128-in-1 Junior Console (Chip 4 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f54fa6aa824001af415503c313262f2", "HES", "", "Boom Bang (HES) (PAL)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f6533386644c7d6358f871666c86e79", "CommaVid, Irwin Gaines", "CM-008", "Cakewalk (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f73ac39e5e3e13e40fd8ad885561a0f", "", "", "Star Fire - Warping Star (13-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f790939f7eaa8c47a246c4283981f84", "", "", "This Planet Sucks Demo 3 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f819454734ddf93f83fefcffcd3e212", "Jone Yuan Telephonic Enterprise Co", "", "Outlaw (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f9fbe3e00a21ea06e6ae5e0e5db2143", "", "", "Skate Boardin' (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7fcd1766de75c614a3ccc31b25dd5b7a", "PlayAround - J.H.M.", "203", "Knight on the Town (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7fcd5fb59e88fc7b8473c641f44226c3", "CCE", "C-807", "Space Tunnel (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, - { "7ff53f6922708119e7bf478d7d618c86", "Suntek", "SS-032", "Walker (Suntek) (PAL)", "AKA Clown Down Town", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ffc2d80fd49a124808315306d19868e", "Ishido", "", "Domino (Ishido) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "801ba40f3290fc413e8c816c467c765c", "Hozer Video Games", "", "Gunfight 2600 - Westward Ho! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "803393ed29a9e9346569dd1bf209907b", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684", "Galaxian (02-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "804ed85eadf1ce3e93721547cbea7592", "CCE", "", "Fishing Derby (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8055b9c2622136fd91edfea6df642daf", "Activision", "", "Unknown Activision Game #1 (1983) (Activision) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "805f9a32ef97ac25f999a25014dc5c23", "SnailSoft", "", "Balthazar (SnailSoft)", "AKA Babylon 5", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8068e07b484dfd661158b3771d6621ca", "Epyx, Steven A. Baker, Peter Engelbrite", "80561-00286", "California Games (1988) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "807a8ff6216b00d52aba2dfea5d8d860", "John Payson", "", "Strat-O-Gems Deluxe (2005) (J. Payson)", "Uses the AtariVox controller", "Homebrew", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "" }, - { "808c3b1e60ee0e7c65205fa4bd772221", "CCE", "", "Defender (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80cd42881e670e4b74a9ccd10d0d7b2e", "20th Century Fox Video Games - Sirius, Ed Hodapp", "11004", "Deadly Duck (1982) (20th Century Fox) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80cec82239913cb8c4016eb13749de44", "David Marli", "", "Invaders from Space by David Marli (Space Invaders Hack)", "Hack of Space Invaders (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80e1410ec98089e0733cc09e584dba4b", "Dynamics", "DY-293005", "Jumping Jack (1983) (Dynamics) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "46", "", "", "" }, - { "80e52315919bd8a8b82a407ccd9bb13f", "", "", "Euchre (Jul 28) (2002) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80e5400470ac788143e6db9bc8dd88cf", "Coleco, Ed Temple", "", "Cabbage Patch Kids (06-XX-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8101efafcf0af32fedda4579c941e6f4", "", "", "Okie Dokie (4K) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81073d0377a2badef8d5e74fc44fc323", "Thomas Jentzsch", "", "Sadoom (TJ) (PAL60) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "PAL60", "", "", "", "" }, - { "8108162bc88b5a14adc3e031cf4175ad", "Quelle", "719.941 7", "Vom Himmel durch die Hoelle (1983) (Quelle) (PAL)", "AKA Parachute", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8108ad2679bd055afec0a35a1dca46a4", "", "", "Maze Craze (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "810d8952af5a6036fca8d0c4e1b23db6", "Tiger Vision - Eram", "", "Keystone (Tiger Vision)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81254ebce88fa46c4ff5a2f4d2bad538", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81341f00b61ab37d19d1529f483d496d", "", "", "Fu Kung! (V0.04) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "813985a940aa739cc28df19e0edd4722", "Imagic, Bob Smith", "720000-201, 720102-1B, IA3201", "Star Voyager (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81414174f1816d5c1e583af427ac89fc", "Thomas Jentzsch", "", "Treasure Below (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "20", "230", "", "" }, - { "814210c0e121f7dbc25661b93c06311c", "", "", "Joustpong (16-09-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81591a221419024060b890665beb0fb8", "Atari, Carla Meninsky, Ed Riddle", "CX2611, CX2611P", "Indy 500 (1977) (Atari) (PAL)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "", "", "", "" }, - { "8190b403d67bf9792fe22fa5d22f3556", "", "", "Sky Diver (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "819aeeb9a2e11deb54e6de334f843894", "Atari, Gary Palmer", "CX2661", "Fun with Numbers (1980) (Atari)", "AKA Basic Math", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81a010abdba1a640f7adf7f84e13d307", "Telegames", "7062 A305", "Universal Chaos (1989) (Telegames)", "AKA Targ", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "81b3bf17cf01039d311b4cd738ae608e", "CBS Electronics, Joe Gaucher, Alex Leavens", "M8776, M8793", "Gorf (1982) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "81f4f0285f651399a12ff2e2f35bab77", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "822a950f27ff0122870558a89a49cad3", "", "", "Space Jockey (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82337e5fe0f418ca9484ca851dfc226a", "", "", "Robot City (V1.0) (Alpha) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "826481f6fc53ea47c9f272f7050eedf7", "Imagic, Dennis Koble", "720103-1A, IA3203", "Atlantis II (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "827a22b9dffee24e93ed0df09ff8414a", "CBS Electronics, Stuart Ross", "", "Wings (10-10-1983) (CBS Electronics) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8290daea8391f96d7c8e1482e184d19c", "Eckhard Stolberg", "", "Frame Timed Sound Effects (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82bf0dff20cee6a1ed4bb834b00074e6", "Suntek", "SS-035", "Panda (Quest) (Suntek) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82c25d1c35e6ac6f893d1d7c2fc2f9c8", "Atari, Larry Kaplan", "CX2628, CX2628P", "Bowling (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82e7aab602c378cffdd8186a099e807e", "", "", "Space Robot (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82efe7984783e23a7c55266a5125c68e", "CCE", "C-837", "Pizza Chef (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "831a0c908b1797093290b688baf5ba76", "", "", "Death Derby (2LK Demo) (26-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "834a2273e97aec3181ee127917b4b269", "Quelle", "043.151 0, 874.382 5", "Die hungrigen Froesche (1983) (Quelle) (PAL)", "AKA Frogs and Flies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "835759ff95c2cdc2324d7c1e7c5fa237", "20th Century Fox Video Games, Frank Cohen, Douglas 'Dallas North' Neubauer", "11011", "M.A.S.H (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "836b955663d013300eaaa39f2403068f", "", "", "Greeting Cart Moon(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8372eec01a08c60dbed063c5524cdfb1", "", "", "Cross Force (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8388d6fe59c38c0b3a6ab2c58420036a", "Atari, Frank Hausman, Steve Woita", "CX2686", "Quadrun (12-06-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83b8c01c72306d60dd9b753332ebd276", "", "", "Bank Heist (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83bdc819980db99bf89a7f2ed6a2de59", "Atari, Carla Meninsky - Sears", "CX2637 - 49-75158", "Dodge 'Em (1980) (Atari) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83d15fb9843d9f84aa3710538403f434", "", "", "Gunfight 2600 - Release Candidate (2001) (MP) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83f05ececae8be59ba1e51135f4bdcbf", "", "", "Demo Image Series #13 - Mario (4K Interleaved Chronocolour) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83f50fa0fbae545e4b88bb53b788c341", "Atari, Larry Kaplan - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "83fafd7bd12e3335166c6314b3bde528", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "840a5a2eaea24d95d289f514fd12f9bb", "", "", "GBImprov (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "841b7bc1cad05f5408302308777d49dc", "Activision", "", "Unknown Activision Game #1 (10-22-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "84290e333ff7567c2380f179430083b8", "Imagic, Dave Johnson", "13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "843435eb360ed72085f7ab9374f9749a", "Joe Grand", "", "SCSIcide (1.31) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "84535afb9a69712ec0af4947329e08b8", "CCE", "C-868", "Bingo (1983) (CCE) (PAL)", "AKA Dice Puzzle", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8454ed9787c9d8211748ccddb673e920", "Froggo", "FG1002", "Spiderdroid (1987) (Froggo)", "AKA Amidar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8490e1014c2baa0d3a3a08854e5d68b3", "Xonox, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "84db818cd4111542a15c2a795369a256", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "84df0704e6c777e1f9a16ec92ad80df0", "Gray Games & AtariAge", "", "E.T. Book Cart (PAL60)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "PAL60", "15", "240", "YES", "55" }, - { "84ea80e31b306059f56fdce2f07b758f", "", "", "Death Derby (19-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "850ffd5849c911946b24544ea1e60496", "", "", "Invasion (07-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "851cc1f3c64eaedd10361ea26345acea", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85227160f37aaa29f5e3a6c7a3219f54", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8530caaaf40acbdcd118c282b5f8a37a", "", "", "This Planet Sucks Demo 2 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8538c5e3ee83267774480649f83fa8d6", "", "", "Escape Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "853c11c4d07050c22ef3e0721533e0c5", "", "", "Oink! (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85470dcb7989e5e856f36b962d815537", "Atari - Sculptured Software, Inc., Steve Aguirre", "CX26162", "Fatal Run (1989) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85478bb289dfa5c63726b9153992a920", "", "", "Candi (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "854b68b93e7123a3be42b5a2a41f75d7", "Atari, Carol Shaw", "CX2618, CX2618P", "3-D Tic-Tac-Toe (1980) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "44", "", "", "" }, - { "85502d69fe46b7f54ef2598225678b47", "Jone Yuan Telephonic Enterprise Co", "", "Super-Ferrari (Jone Yuan)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85564dd0665aa0a1359037aef1a48d58", "ITT Family Games", "554-33 367", "Laser Base (1983) (ITT Family Games) (PAL) [a]", "AKA World End (Perry Rhodan-Serie)", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, - { "8556b42aa05f94bc29ff39c39b11bff4", "Atari, Craig Nelson - Sears", "CX2617 - 49-75183", "Backgammon (1979) (Atari)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "855a42078b14714bcfd490d2cf57e68d", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "85a4133f6dcf4180e36e70ad0fca0921", "CCE", "C-827", "Chopper Command (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85b1bca93e69f13905107cc802a02470", "Atari, Craig Nelson", "CX2617, CX2617P", "Backgammon (1979) (Atari) (PAL)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "85bbefb90e16bf386b304c1e9a1f6084", "Champ Games", "", "Conquest Of Mars (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "85dcc70a0adeb2e001e5df387612de24", "", "", "Greeting Cart Gene (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85e48d68c8d802e3ba9d494a47d6e016", "", "", "Ship Demo (V 15) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85e564dae5687e431955056fbda10978", "Milton Bradley Company", "4362", "Survival Run (1983) (Milton Bradley)", "AKA Cosmic Commander", "", "", "", "", "", "", "", "", "", "", "", "29", "225", "YES", "" }, - { "86128001e69ab049937f265911ce7e8a", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Lochjaw (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "862cf669cbced78f9ed31a5d375b2ebe", "", "", "Gunfight 2600 - Flicker acceptance (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8644352b806985efde499ae6fc7b0fec", "CCE", "C-801", "Mr. Postman (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8654d7f0fb351960016e06646f639b02", "Home Vision - Gem International Corp. - R.J.P.G.", "VCS83106", "Ski Hunt (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "866e5150c995c4ae5172e5207ba948c7", "Canal 3 - Intellivision", "", "Stampede (Canal 3) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "869abe0426e6e9fcb6d75a3c2d6e05d1", "", "", "Stampede (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "86b4aa76bbeb70e1a4f9211a9880ba8e", "", "", "Incoming (1 Player Version) (05-11-2002) (Ben Larson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "86f5e55ca9a9bde7338a157570828e79", "", "", "Star Fire - Creating a Universe (09-09-2002) (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8712cceec5644aacc2c21203d9ebe2ec", "Retroactive", "", "Qb (V0.10) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8726c17ee7b559cb7bf2330d20972ad0", "", "", "Cave Demo (21-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "873fb75a7788ba0f4ae715229a05545e", "", "", "Euchre (Improved Colors) (PAL) (26-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8747ba79cd39fa83a529bb26010db21b", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL) [different speed and colors]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8749a0d088df25218c149dc325abc7ca", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a5]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "874c76726f68c166fcfac48ce78eef95", "", "", "Red Pong Number 2 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8764462d7d19a33b0717af22b99fc88f", "CCE", "", "Sky Jinks (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87662815bc4f3c3c86071dc994e3f30e", "Intellivision Productions - M Network, Patricia Lewis Du Long, Stephen Tatsumi", "", "Swordfight (1983) (Intellivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "876a953daae0e946620cf05ed41989f4", "Retroactive", "", "Qb (V2.08) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "877a5397f3f205bf6750398c98f33de1", "Erik Eid", "", "Euchre (Beta) (PAL) (12-09-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8786c1e56ef221d946c64f6b65b697e9", "20th Century Fox Video Games, David Lubar", "11015", "AKA Space Adventure", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8786f229b974c393222874f73a9f3206", "Activision, Larry Miller - Ariola", "EAX-021, EAX-021-04I - 711 021-720", "Spider Fighter (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8786f4609a66fbea2cd9aa48ca7aa11c", "Goliath", "5", "Open Sesame (1983) (Goliath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "87b460df21b7bbcfc57b1c082c6794b0", "Dennis Debro", "", "Climber 5 (20-03-2003) (Dennis Debro)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "87b6a17132fc32f576bc49ea18729506", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87bea777a34278d29b3b6029833c5422", "Thomas Jentzsch", "", "Polaris (1983) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87e79cd41ce136fd4f72cc6e2c161bee", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675", "Ms. Pac-Man (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87f020daa98d0132e98e43db7d8fea7e", "20th Century Fox Video Games - Sirius, David Lubar", "11001", "Worm War I (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "883258dcd68cefc6cd4d40b1185116dc", "Activision, David Crane - Ariola", "EAZ-030, EAZ-030-04B, EAZ-030-04I - 711 030-725", "Decathlon (1983) (Activision) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8874b68751fd2ba6d3306a263ae57a7d", "Eric Mooney", "", "Invaders by Erik Mooney (Alpha 1) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8885d0ce11c5b40c3a8a8d9ed28cefef", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner - Sears", "CX2608 - 49-75165", "Super Breakout (1982 - 1981) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "888debb162d7d1ae71025b4ab794257f", "", "", "Interleaved ChronoColour - Nude Art (17-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88a6c9c88cb329ee5fa7d168bd6c7c63", "CCE", "C-1007", "Jungle Hunt (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88d300a38bdd7cab9edad271c18cd02b", "Funvision - Fund. Int'l Co.", "", "Pac Kong (Funvision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88d7b6b3967de0db24cdae1c7f7181bd", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88d8a1accab58cf1abb043613cf185e9", "Ultravison", "", "Sabotage (Ultravison)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88dce4037471424bb38ab6841aaa8cab", "", "", "Double-Height 6-Digit Score Display (Two Background Color Change) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88ed87c011f699dd27321dbe404db6c8", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88f74ec75ef696e7294b7b6ac5ca465f", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (16K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8905d54f48b8024fc718ed643e9033f7", "Coleco, Ed Temple", "", "Cabbage Patch Kids (05-24-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "890c13590e0d8d5d6149737d930e4d95", "Atari, David Crane - Sears", "CX2605 - 6-99822, 49-75109", "Outlaw (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8917f7c1ac5eb05b82331cf01c495af2", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "8933976f2029c0d8492ebd8f4eb21492", "", "", "Synthcart Plus (09-02-2003) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "8953bc11352d794431d3303e31d3b892", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (02-17-1983) (Tigervision) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "896ec58f26e930e02f5e4f046602c3a1", "", "", "Synthcart (Beta) (2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "YES", "" }, - { "898143773824663efe88d0a3a0bb1ba4", "Activision, Steve 'Jessica' Kitchen", "AZ-033, AZ-033-04", "Space Shuttle (1983) (Activision) [FE]", "A Journey Into Space", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "898748d5eaac3164b0391a64ae1e0e32", "", "", "Hangman Man 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "898b5467551d32af48a604802407b6e8", "Bit Corporation", "PG208", "Snail Against Squirrel (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "44", "", "", "" }, - { "89a65b83203980d5d4d60f52a584a5b8", "", "", "Marble Craze (PAL) (02-02-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "89a68746eff7f266bbf08de2483abe55", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1983) (Atari)", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "89afff4a10807093c105740c73e9b544", "", "", "Pooyan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "89eaba47a59cbfd26e74aad32f553cd7", "Apollo - Games by Apollo, Ed Salvo, Bryson Park", "AP-2001", "Spacechase (1981) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a159ee58b2f0a54805162984b0f07e5", "Atari - Sculptured Software, Inc., Steve Aguirre", "CX26162", "Fatal Run (1989) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a183b6357987db5170c5cf9f4a113e5", "Atari, Joe Gaucher", "CX2679", "RealSports Basketball (1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a42e2c7266439d8997a55d0124c912c", "", "", "Hangman Invader Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a49cf1785e3dea2012d331a3ad476e1", "", "", "Boulderdash (10 Blocks Wide) (02-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a6c84f481acf42abcb78ba5064ad755", "128-in-1 Junior Console", "", "Street Racer (128-in-1 Junior Console) (PAL) (4K)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "", "", "", "", "" }, - { "8a8e401369e2b63a13e18a4d685387c6", "Activision, David Crane - Ariola", "EAG-008, PAG-008, EAG-008-04I - 711 008-720", "Laser Blast (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a9d874a38608964f33ec0c35cab618d", "Chris Cracknell", "", "Rescue Bira Bira (Chris Cracknell)", "Hack of Jungle Fever", "Hack", "", "", "", "", "", "", "", "", "", "", "20", "230", "YES", "" }, - { "8a9d953ac3db52a313a90d6a9b139c76", "", "", "Hangman Invader Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8aad33da907bed78b76b87fceaa838c1", "Atari, Larry Kaplan", "CX26163P", "Air-Sea Battle (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "40", "256", "", "" }, - { "8ac18076d01a6b63acf6e2cab4968940", "Atari, Dan Hitchens", "CX2685", "Gravitar (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ae7809702b7d618e45daa2ddb0ece26", "", "", "Greeting Cart Blue-Ribbon Award(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8af58a9b90b25907da0251ec0facf3b8", "Jone Yuan Telephonic Enterprise Co", "", "Cosmic Swarm (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "8b04e9d132b8e30d447acaa6bd049c32", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b40a9ca1cfcd14822e2547eaa9df5c1", "Parker Brothers, Dave Hampton, Tom Sloper", "931517", "Q-bert (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b504b417c8626167a7e02f44229f0e7", "Retroactive", "", "Qb (V1.00) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8b556c3d9ca8e5e6e665bd759b93ffae", "", "", "Synthcart (2002) (Paul Slocum) (PAL) [!]", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "YES", "" }, - { "8b5b1e3a434ebbdc2c2a49dc68f46360", "CBS Electronics, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b7ca29a55432f886cee3d452fb00481", "Arcadia Corporation, Stephen Harland Landrum, Jon Leupp", "AR-4201", "Sword of Saros (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b8152d6081f31365406cb716bd95567", "Atari", "CX2626, CX2626P", "Miniature Golf (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b8789c6669a4cee86c579a65332f852", "Digivision", "", "Plaque Attack (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8bbfd951c89cc09c148bfabdefa08bec", "UA Limited", "", "Pleiades (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "32", "", "YES", "" }, - { "8bc0d2052b4f259e7a50a7c771b45241", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox) [a]", "AKA Thundarr the Barbarian", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "8bd8f65377023bdb7c5fcf46ddda5d31", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8bebac614571135933116045204f0f00", "Thomas Jentzsch", "", "Missile Command (CX-22 Trackball) (2002) (TJ) (PAL)", "Uses CX-22 Trackball Controller", "Homebrew", "", "", "", "", "", "", "TRACKBALL22", "", "", "", "", "", "YES", "" }, - { "8c103a79b007a2fd5af602334937b4e1", "Thomas Jentzsch", "", "Laser Base (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "8c136e97c0a4af66da4a249561ed17db", "", "", "Poker Squares (V0.27) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c2fa33048f055f38358d51eefe417db", "Home Vision - Gem International Corp.", "VCS83137", "Teddy Apple (1983) (Home Vision) (PAL)", "AKA Open Sesame", "", "", "", "", "", "", "", "", "", "", "", "42", "", "YES", "" }, - { "8c36ed2352801031516695d1eeefe617", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c7e5e2329f4f4e06cbcc994a30fd352", "Data Age", "DA1004", "Airlock (1982) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c8a26ed57870daba8e13162d497bad1", "HES", "", "2 Pak Special - Dolphin, Oink (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c8b15b3259e60757987ed13cdd74d41", "Supergame", "71", "River Raid (1984) (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c941fa32c7718a10061d8c328909577", "Digivision", "", "River Raid (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ccaa442d26b09139685f5b22bf189c4", "Retroactive", "", "Qb (V1.01) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8cd26dcf249456fe4aeb8db42d49df74", "Atari", "CX26139", "Crossbow (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ce9126066f2ddd5173e9f1f9ce1494e", "Thomas Jentzsch", "", "Missile Command (CX-22 Trackball) (2002) (TJ)", "Uses CX-22 Trackball Controller", "Homebrew", "", "", "", "", "", "", "TRACKBALL22", "", "", "", "", "", "YES", "" }, - { "8cf0d333bbe85b9549b1e6b1e2390b8d", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8d00a38f4c8f8800f1c237215ac243fc", "", "", "3-D Corridor (Green) (30-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8d1e2a6d2885966e6d86717180938f87", "Thomas Jentzsch", "", "Missile Command (Amiga Mouse) (2002) (TJ)", "Uses Amiga Mouse Controller", "Homebrew", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "YES", "" }, - { "8d8b7d7b983f75debbdaac651e814768", "", "", "Demo Image Series #15 - Three Marios (PAL) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8d9a06101ebb0f147936356e645309b8", "", "", "Grid Pattern Demo 2 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8da51e0c4b6b46f7619425119c7d018e", "Atari, David Lubar", "CX26183", "Sentinel (1990) (Atari)", "Uses the Light Gun Controller (left only)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8db152458abaef3cfa7a4e420ddbda59", "", "", "Keystone Kapers (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8df4be9ddc54ac363b13dc57ceaf161a", "Scott Stilphen", "", "Asteroids SS (Scott Stilphen) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8e0ab801b1705a740b476b7f588c6d16", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e42674972d6805068fc653e014370fd", "", "", "Skeleton (PAL) (15-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e48ea6ea53709b98e6f4bd8aa018908", "CBS Electronics, Stuart Ross", "", "Wings (06-03-1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8e4cd60d93fcde8065c1a2b972a26377", "Imagic, Dan Oliver", "720118-2A, 13208, EIX-007-04I", "Laser Gates (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e4fa8c6ad8d8dce0db8c991c166cdaa", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e737a88a566cc94bd50174c2d019593", "Quelle", "343.173 1", "Feuerwehr im Einsatz (1983) (Quelle) (PAL)", "AKA Fire Fighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e822b39a71c84ac875f0107fb61d6f0", "", "", "Hangman Ghost Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e879aa58db41edb67cbf318b77766c4", "Thomas Jentzsch", "", "Cosmic Commuter (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "8e887d1ba5f3a71ae8a0ea16a4af9fc9", "", "", "Skeleton (V1.1) (PAL) (24-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ed5a746c59571feb255eaa7d6d0cf98", "", "", "Carnival (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ed73106e2f42f91447fb90b6f0ea4a4", "Spectravision, Spectravideo", "SA-204", "Tapeworm (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8ee3f64dc0f349adc893fe93df5245d8", "", "", "Euchre (20-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f33bce5ba1053dcf4cea9c1c69981e4", "", "", "Jawbreaker (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f53a3b925f0fd961d9b8c4d46ee6755", "", "", "Astrowar (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f5ac5139419c5d49bacc296e342a247", "Atari, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (12-22-1983) (Atari) (Prototype)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "8f60551db6d1535ef0030f155018c738", "", "", "Space War (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f613ea7c32a587d6741790e32872ddd", "", "", "Troll Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f88309afad108936ca70f8b2b084718", "Spectravision, Spectravideo - Quelle", "SA-203 - 413.223 9", "Cross Force (1982) (Spectravision) (PAL)", "AKA Kreuzfeuer (Cross Fire)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f90590dba143d783df5a6cff2000e4d", "", "", "Gopher (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f98519a91dbbf4864f135a10050d9ed", "Silvio Mogno", "", "Rainbow Invaders (non-playable demo) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8fbabaa87941cdf3a377c15e95bdb0f3", "", "", "Meteor Smasher (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8fe00172e7fff4c1878dabcf11bb8dce", "Quelle", "689.302 8", "Hili Ball (1983) (Quelle) (PAL)", "AKA Racquetball", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8febdd9142960d084ab6eeb1d3e88969", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8fffc8f15bb2e6d24e211884a5479aa5", "Retroactive", "", "Qb (V1.00) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9041cfd144df075552efebbb81df625d", "", "", "Greeting Cart Ann R (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9048ccb7e0802cd8fa5bfc2609f292d8", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (1983) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9057694dce8449521e6164d263702185", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90578a63441de4520be5324e8f015352", "Bit Corporation", "PGP204", "Open Sesame (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "YES", "" }, - { "9072c142728a3a3d994956d03bfacba2", "Fabrizio Zavagli", "", "Crash Dive (Fabrizio Zavagli) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "PAL60", "30", "", "", "" }, - { "90b1799dddb8bf748ee286d22e609480", "", "", "Ship Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90ccf4f30a5ad8c801090b388ddd5613", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90d77e966793754ab4312c47b42900b1", "Imagic, Brad Stewart", "720105-2A, IA3400P, EIX-005-04I", "Fire Fighter (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90f502cbf4438a95f69f848cef36eb64", "Digitel", "", "River Raid II (1985) (Digitel)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "910dd9bf98cc5bc080943e5128b15bf5", "", "", "Gunfight 2600 - Improved AI (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91191666186117f5bf78b40623d79039", "Gray Games & AtariAge", "", "E.T. Book Cart (PAL)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "23", "280", "YES", "55" }, - { "911d385ee0805ff5b8f96c5a63da7de5", "Hozer Video Games", "", "Jammed (V0.1) (Demo) (2001) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "913d5d959b5021f879033c89797bab5e", "", "", "Robot Player Graphic (1996) (J.V. Matthews) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "914a8feaf6d0a1bbed9eb61d33817679", "Atari", "CX26163P", "Freeway Chicken (32 in 1) (1988) (Atari) (PAL)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91925abce3a29e33b6a8b81482f4f5af", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9193b6fff6897d43274741d4f9855b6d", "", "", "M.A.S.H (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91a3749ff7b7e72b7fa09e05396a0e7b", "", "", "Gunfight 2600 - Final Run Part 2 (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91b007f33f9b790be64f57220ec52e80", "Jone Yuan Telephonic Enterprise", "", "Laser Blast (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "91c2098e88a6b13f977af8c003e0bca5", "Atari - GCC", "CX2676", "Centipede (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91d1c82ceaf8af2add3973a3c34bc0cb", "", "", "Starfield Demo 1 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91f0a708eeb93c133e9672ad2c8e0429", "", "", "Oystron (V2.9) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91fdb6541f70c40b16aabf8308123be8", "", "", "Interlacing Game (19-08-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9222b25a0875022b412e8da37e7f6887", "Panda", "106", "Dice Puzzle (1983) (Panda)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, - { "9245a84e9851565d565cb6c9fac5802b", "Bomb - Onbase", "CA282", "Great Escape (1983) (Bomb)", "AKA Asteroid Fire", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "927d422d6335018da469a9a07cd80390", "Activision, Carol Shaw - Ariola", "EAX-020, EAX-020-04B, EAX-020-04I - 711 020-720", "River Raid (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9281eccd7f6ef4b3ebdcfd2204c9763a", "Retroactive", "", "Qb (2.15) (Retroactive) (PAL)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9295570a141cdec18074c55dc7229d08", "Telegames", "7045 A015", "Bump 'n' Jump (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "929e8a84ed50601d9af8c49b0425c7ea", "Bit Corporation", "PG205", "Dancing Plate (1982) (BitCorp) (PAL)", "AKA Dancing Plates, Tanzende Teller", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "92a1a605b7ad56d863a56373a866761b", "U.S. Games Corporation", "VC2006", "Raft Rider (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "92c5abb7a8bb1c3fc66c92ba353a3d21", "", "", "Star Fire - Sorting Fixed (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "92d1f6ac179ebe5963868d6bc1bdda8d", "HES", "498", "Smash Hit Pak - Frogger, Boxing, Seaquest, Skiing, Stampede (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "92e72f7cc569584c44c9530d645ae04e", "Canal 3 - Intellivision", "", "Spider Fighter (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "92ede72ed8f61d255bc58d2f166dc6b6", "", "", "Star Fire - Shootable (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "931b91a8ea2d39fe4dca1a23832b591a", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9333172e3c4992ecf548d3ac1f2553eb", "Konami", "RC 101-X 02", "Strategy X (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "93420cc4cb1af1f2175c63e52ec18332", "Tim Snider", "", "Blair Witch Project (Tim Snider) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9364ad51c321e0f15c96a8c0aff47ceb", "Atari, Rob Fulop", "CX2638", "Missile Command (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "936ef1d6f8a57b9ff575dc195ee36b80", "", "", "Pac Kong (Unknown)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "24", "220", "", "" }, - { "936f555b4b1a2cd061b659ff63f4f5f2", "HES, David Lubar", "535", "My Golf (1990) (HES) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "937736d899337036de818391a87271e0", "Atari, Peter C. Niday", "CX26108", "Donald Duck's Speedboat (04-12-1983) (Atari) (Prototype)", "AKA Donald Duck's Regatta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "939ce554f5c0e74cc6e4e62810ec2111", "ZiMAG - Emag - Vidco", "711-111 - GN-020", "Dishaster (1983) (ZiMAG)", "AKA Dancing Plate", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "93acd5020ae8eb5673601e2edecbc158", "Chris Cracknell", "", "Video Time Machine (Chris Cracknell)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93b9229fc0ea4fb959d604f83f8f603c", "Thomas Jentzsch", "", "Amidar DS (Fast Enemies) (2003) (TJ) (Hack)", "Hack of Amidar", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93c52141d3c4e1b5574d072f1afde6cd", "Imagic, Mark Klein", "720112-1A, 03213", "Subterranea (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93c8d9d24f9c5f1f570694848d087df7", "Digivision", "", "Galaxian (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93c9f9239a4e5c956663dd7affa70da2", "Quelle", "626.610 0", "Billard (1983) (Quelle) (PAL)", "AKA Trick Shot", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "93dc15d15e77a7b23162467f95a5f22d", "CCE", "", "Sky Jinks (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93eb1795c8b1065b1b3d62bb9ec0ccdc", "JSK", "", "Custer's Viagra (JSK) (Hack)", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "94102febc53b4a78342d11b645342ed4", "", "", "Joustpong (14-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9436b7ad131b5a1f7753ce4309ba3dee", "Kyle Pittman", "", "War of The Worlds (Kyle Pittman) (Hack)", "Hack of Defender", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9469d18238345d87768e8965f9f4a6b2", "CCE", "", "Ms. Pac-Man (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "947317a89af38a49c4864d6bdd6a91fb", "CBS Electronics, Bob Curtiss", "4L 2487 5000", "Solar Fox (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94b92a882f6dbaa6993a46e2dcc58402", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94d90f63678e086f6b6d5e1bc6c4c8c2", "Digivision", "", "Seaquest (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94e3fbc19107a169909e274187247a9d", "", "2402-044-01", "Freeway (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94e4c9b924286038527f49cdc20fda69", "Retroactive", "", "Qb (V2.12) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "94e7cc6342d11e508e7e8b2ddf53c255", "", "", "Missile Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94ff6b7489ed401dcaaf952fece10f67", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-31-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "951e8cec7a1a1d6c01fd649e7ff7743a", "Atari, Adam Clayton, John Howard Palevich", "CX26151, CX26151P", "Dark Chambers (1988) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9526e3db3bdfbc27989a9cbfd0ee34bf", "", "", "Atari Logo Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95351b46fa9c45471d852d28b9b4e00b", "Atari", "CX26163P", "Golf (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "955c408265ad6994f61f9b66657bbae9", "", "", "Quadrun (Video Conversion) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "956496f81775de0b69a116a0d1ad41cc", "CCE", "", "Alien (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "956b99511c0f47b3a11d18e8b7ac8d47", "", "", "Bones (Arcade Golf Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95956108289a917f80667eccd3ce98a9", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95a69cf8c08ef1522b050529464f0bca", "", "", "Grid Pattern Demo 1 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95a89d1bf767d7cc9d0d5093d579ba61", "PlayAround - J.H.M.", "204", "Lady in Wading (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "95e1d834c57cdd525dd0bd6048a57f7b", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95e542a7467c94b1e4ab24a3ebe907f1", "Quelle", "719.252 9", "Im Schutz der Drachen (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "95fd6097dc27c20666f039cfe34f7c69", "", "", "Oh No! (Version 1) (17-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "961112b74a920a5242e233480326c356", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "962ffd3eaf865230a7a312b80e6c5cfd", "Imagic, Wilfredo 'Willy' Aguilar, Michael Becker, Rob Fulop", "13205", "Fathom (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "96670d0bf3610da2afcabd8e21d8eabf", "", "", "Boring Pitfall (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "966b11d3c147d894dd9e4ebb971ea309", "", "", "Marble Craze Song (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9671b658286e276cc4a3d02aa25931d2", "", "", "Hangman Ghost Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "968efc79d500dce52a906870a97358ab", "Atari", "CX26190", "BMX Air Master (1990) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "969b968383d9f0e9d8ffd1056bcaef49", "Atari, Larry Kaplan", "CX2628, CX2628P", "Bowling (1979) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "96bcb3d97ce4ff7586326d183ac338a2", "", "", "Revenge of the Apes (Hack) [h2]", "Hack of Planet of the Apes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "96e798995af6ed9d8601166d4350f276", "20th Century Fox Video Games - Videa, David Ross", "11029", "Meltdown (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "96eccc2277043508a6c481ea432d7dd9", "Thomas Jentzsch", "", "Missile Command (CX-80 Trackball) (2002) (TJ) (PAL)", "Uses CX-80 Trackball Controller", "Homebrew", "", "", "", "", "", "", "TRACKBALL80", "", "", "", "", "", "YES", "" }, - { "96f806fc62005205d851e758d050dfca", "", "", "Push (V0.05) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9718b85ac5a55cbc7348963c63ffa35a", "Robby", "", "Demon Attack (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "972486110933623039a3581db308fda6", "", "", "Xeno Plus (Hack)", "Hack of Xenophobe", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97327d6962f8c64e6f926f79cd01c6b9", "", "", "Jawbreaker (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "977294ae6526c31c7f9a166ee00964ad", "Atari - GCC, Douglas B. Macrae", "CX2677, CX2677P", "Dig Dug (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97842fe847e8eb71263d6f92f7e122bd", "Imagic, Wilfredo 'Willy' Aguilar, Michael Becker, Dennis Koble", "720113-1A, 03206", "Solar Storm (1983) (Imagic)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "97933c9f20873446e4c1f8a4da21575f", "", "", "Racquetball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "97a9bb5c3679d67f5c2cd17f30b85d95", "Atari", "", "Colors (1980) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97cd63c483fe3c68b7ce939ab8f7a318", "Thomas Jentzsch", "", "Robot City (V0.21) (15-09-2002) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "97d0151beb84acbe82aa6db18cd91b98", "Steve Engelhardt", "", "Lunar Attack (2002) (Steve Engelhardt) (Hack)", "Hack of Z-Tack", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97d079315c09796ff6d95a06e4b70171", "Activision, Garry Kitchen", "AZ-032", "Pressure Cooker (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9813b9e4b8a6fd919c86a40c6bda8c93", "Atari", "CX26177", "Ikari Warriors (1989) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9831efc7f4cb8ffb4df0082bab2f07a3", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9848b5ef7a0c02fe808b920a2ac566d2", "Skyworks Technology Inc.", "", "Baseball (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9853089672116117258097dbbdb939b7", "Hozer Video Games", "", "Gunfight 2600 - Cowboy Hair (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98555b95cb38e0e0b22b482b2b60a5b6", "", "", "Spinning Fireball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "98ba601a60172cb46c5bf9a962fd5b1f", "", "", "Gorilla Kong (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ccd15345b1aee6caf51e05955f0261", "Retroactive", "", "Qb (V2.03) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "98e5e4d5c4dd9a986d30fd62bd2f75ae", "", "", "Air-Sea Battle (Unknown) (Hack) (4K)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98e6e34af45a0664597972c3bb31180f", "", "", "Space Instigators (V1.7) (17-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98e7caaab8ec237558378d2776c66616", "Bradford W. Mott", "", "HMOVE Test (Bradford W. Mott) (1998) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ea10c47c13f1b3306c7b13db304865", "", "", "Jam Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ec0fa4199b9c01f7b8fa3732e43372", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ef1593624b409b9fb83a1c272a0aa7", "CCE", "C-831", "Cosmic Ark (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98f63949e656ff309cefa672146dc1b8", "Atari - Axlon", "CX26168", "Off the Wall (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98fa3ad778a668a79449350de4b3b95b", "", "", "Thrust (V1.1) (2000) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9905f9f4706223dadee84f6867ede8e3", "HES", "", "Challenge (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "99112a46486b52b1110bae607bfa8cd6", "", "", "Greeting Cart Ali Landry Bikini (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9912d06eea42200a198dd3e2be18c601", "Imagic, Michael Greene", "IA3312", "No Escape! (1982) (Imagic) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "991d57bbcd529ad62925098e0aec1241", "", "", "Gunfight 2600 - The Final Kernel (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9945a22f60bbaf6d04a8d73b3cf3db75", "Activision, Dan Kitchen", "EAX-039-04B, EAX-039-04I", "Kung-Fu Master (1987) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9947f1ebabb56fd075a96c6d37351efa", "CBS Electronics", "4L 2737 0000", "Omega Race (1983) (CBS Electronics)", "Set right difficulty to 'A' for BoosterGrip in both ports", "", "", "", "", "A", "", "", "BOOSTERGRIP", "BOOSTERGRIP", "", "", "", "", "", "" }, - { "9962034ea7b3d4a905d0991804670087", "", "", "Grid Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9989f974c3cf9c641db6c8a70a2a2267", "Eckhard Stolberg", "", "Colours Selector (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "99a24d7bb31d49b720b422550b32c35f", "", "", "Hangman Ghost Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "99f7c6c26046bbe95f1c604b25da8360", "SnailSoft", "", "Comitoid beta 2 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a01115206f32eb0b539c7e5a47ccafa", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (07-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a165c39af3f050fdee6583fdfcdc9be", "Zirok", "", "Mario Bros. (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a21fba9ee9794e0fadd7c7eb6be4e12", "Atari", "CX26177", "Ikari Warriors (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a25b3cfe2bbb847b66a97282200cca2", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "9a4274409216ff09ecde799f2a56ac73", "CCE", "C-801", "Mr. Postman (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ab72d3fd2cc1a0c9adb504502579037", "Epyx, Steven A. Baker, Peter Engelbrite", "80561-00286", "California Games (1988) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ad362179c2eea4ea115c7640b4b003e", "", "", "Barnstorming (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "NTSC50", "", "", "", "" }, - { "9ad36e699ef6f45d9eb6c4cf90475c9f", "Imagic, Dennis Koble", "720103-1A, 720103-1B, IA3203, IX-010-04", "Atlantis (1982) (Imagic)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9aeb5206c5bf974892a9cc59f1478db3", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9afdfe1cff7f37f1c971fe3f0c900606", "Funvision - Fund. International Co.", "", "Plug Attack (Funvision)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9b150a42fc788960fbb4cbe250259ee2", "Kroko", "", "3E Bankswitch Test (TIA @ $40)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9b21d8fc78cc4308990d99a4d906ec52", "CCE", "C-838", "Immies & Aggies (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "18", "223", "", "" }, - { "9b246683f44c963a50e41d6b485bee77", "", "", "Boring (PAL) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9bb136b62521c67ac893213e01dd338f", "Xonox - Beck-Tech", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9bd4e0d5f28ba6da417c26649171f8e4", "", "", "Hangman Pac-Man Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9be58a14e055b0e7581fc4d6c2f6b31d", "", "", "Adventure (Color Scrolling) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c27ef3bd01c611cdb80182a59463a82", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c40bf810f761ffc9c1b69c4647a8b84", "", "", "2 in 1 - Frostbite, River Raid (Unknown)", "", "", "", "2IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c6d65bd3b477aace0376f705b354d68", "", "", "RPG Kernal (18-04-2003) (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9c6faa4ff7f2ae549bbcb14f582b70e4", "U.S. Games Corporation, Garry Kitchen, Paul Willson - Vidtec", "VC1002", "Sneak 'n Peek (1982) (U.S. Games)", "AKA Hide 'n Seek", "", "", "", "", "", "", "", "", "", "", "", "30", "218", "", "" }, - { "9c6fd6ed3599978ab7b6f900484b9be6", "Andrew Wallace", "", "Laseresal 2002 (PAL60) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "9c729017dd2f9ccbadcb511187f80e6b", "", "", "J-Pac (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c7fa3cfcaaafb4e6daf1e2517d43d88", "", "", "PIEROXM Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ca2deb61318eba4fb784d4bf7441d8b", "", "", "Purple Bar Demo 2 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9cbb07f1993a027bc2f87d5205457ec9", "", "", "Eckhard Stolberg's Scrolling Text Demo 1 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d0befa555f003069a21d2f6847ad962", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d1556ae5890398be7e3d57449774b40", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "9d2938eb2b17bb73e9a79bbc06053506", "Imagic, Michael Greene", "EIZ-002-04I", "Wing War (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d2f05d0fe8b2dfcf770b02eda066fc1", "", "", "Push (V0.06) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d37a1be4a6e898026414b8fee2fc826", "M Network, David Rolfe - INTV", "MT5665", "Super Challenge Baseball (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d4bc7c6fe9a7c8c4aa24a237c340adb", "Dennis Debro", "", "Climber 5 (16-04-2003) (Dennis Debro)", "For Philly Classic 4", "Homebrew", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "9d522a3759aa855668e75962c84546f7", "Atari, Tom Rudadahl", "CX2634, CX2634P", "Golf (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d7f04618bb4043f531d087e3aaa7ac8", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL) (16K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9de0d45731f90a0a922ab09228510393", "20th Century Fox Video Games - Sirius, Mark Turmell", "11003", "Fast Eddie (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9dec0be14d899e1aac4337acef5ab94a", "CommaVid, John Bronstein", "CM-003", "Cosmic Swarm (1982) (CommaVid) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9e01f7f95cb8596765e03b9a36e8e33c", "Atari, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "9e192601829f5f5c2d3b51f8ae25dbe5", "PlayAround - J.H.M.", "201", "Cathouse Blues (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9e2c7299c69b602443d327c7dad51cbf", "Charles Morgan", "", "Xaxyrax Road (Charles Morgan) (Hack)", "Hack of Freeway", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e437229136f1c5e6ef4c5f36178ed18", "Funvision - Fund. International Co.", "", "Grand Prize (Funvision)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e5007131695621d06902ab3c960622a", "Sega", "", "Tac Scan (1983) (Sega) [h1]", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "215", "YES", "" }, - { "9e6fa031ece07919c816fba5dc8de43e", "", "", "Star Fire - Meteor Dance (13-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e792a59f8795664cbaaff1ba152d731", "", "", "Bullet Demo (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e904e2eaa471c050c491289b8b80f60", "", "", "How to Draw a Playfield II (1997) (Erik Mooney) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ea8ed9dec03082973244a080941e58a", "Eric Mooney, Piero Cavina", "", "INV+", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ec1b259a1bcffa63042a3c2b3b90f0a", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9eca521db1959156a115dee85a405194", "", "", "Fu Kung! (V0.08) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ed0f2aa226c34d4f55f661442e8f22a", "", "", "Nuts (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9eeb40f04a27efb1c68ba1d25e606607", "Kyle Pittman", "", "Rambo II (2003) (Kyle Pittman) (Hack)", "Hack of Double Dragon", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9efa877a98dd5a075e058214da428abb", "Hozer Video Games", "", "SCSIcide (1.32) (Hozer Video Games)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "", "", "", "", "" }, - { "9efb4e1a15a6cdd286e4bcd7cd94b7b8", "20th Century Fox Video Games, John W.S. Marvin", "", "Planet of the Apes (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f2d58dce1b81c6ba201ed103507c025", "", "", "Fu Kung! (V0.02) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f48eeb47836cf145a15771775f0767a", "Atari, Warren Robinett", "CX2620", "Basic Programming (1979) (Atari)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "YES", "" }, - { "9f5096a6f1a5049df87798eb59707583", "20th Century Fox Video Games, Mark Klein", "11036", "Entity, The (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f59eddf9ba91a7d93bce7ee4b7693bc", "Thomas Jentzsch", "", "Montezuma's Revenge (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "9f8fad4badcd7be61bbd2bcaeef3c58f", "Parker Brothers, Charlie Heath", "PB5330", "Reactor (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9f901509f0474bf9760e6ebd80e629cd", "Atari, Bob Whitehead - Sears", "CX2623 - 6-99819, 49-75108, 49-75125", "Home Run (1978) (Atari) (4K)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "9f93734c68f6479eb022cab40814142e", "", "", "Push (V0.07) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f9ee0f60c119c831e80694b6678ca1a", "Jeffry Johnston", "", "Radial Pong - Version 8 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9fc2d1627dcdd8925f4c042e38eb0bc9", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0028f057d496f22b549fd8deecc6f78", "Joe Grand", "", "SCSIcide Pre-release 6 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a00ec89d22fcc0c1a85bb542ddcb1178", "CCE", "C-1012", "Phoenix (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a00ee0aed5c8979add4c170f5322c706", "Barry Laws Jr.", "", "Egghead (Barry Laws Jr.) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "a0185c06297b2818f786d11a3f9e42c3", "", "", "International Soccer (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a025a8f83a42a4d6d46c4887e799bfac", "Hozer Video Games", "", "Gunfight 2600 - Descissions had to be made (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0297c4788f9e91d43e522f4c561b4ad", "Atari, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari) (PAL)", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "a0563dd6d8215c38c488fbbd61435626", "", "", "Ship Demo (V 1501) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0675883f9b09a3595ddd66a6f5d3498", "Telegames", "6057 A227", "Quest for Quintana Roo (1989) (Telegames)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a075ad332942740c386f4c3814925ece", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (2 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0d502dc8b90b1d7daa5f6effb10d349", "", "", "Demo Image Series #5 - Sam (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0e2d310e3e98646268200c8f0f08f46", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a100eff2d7ae61ca2b8e65baf7e2aae8", "David Marli", "", "Muncher (David Marli) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "a11099b6ec24e4b00b8795744fb12005", "Activision, Robert C. Polaro", "EAK-049-04B", "Rampage! (1989) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1403fef01641dcd3980cac9f24d63f9", "Dactari - Milmar", "", "Atlantis (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a14d8a388083c60283e00592b18d4c6c", "", "", "Tunnel Demo (28-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a15b5831a1fab52e4c416068c85ec011", "Hozer Video Games", "", "Gunfight 2600 - The Good, The Bad, The Ugly (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a174cece06b3abc0aec3516913cdf9cc", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (1980) (Sears) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "", "", "", "", "" }, - { "a1770ef47146ab7b12e2c4beccd68806", "Digitel", "", "Kaystone Kapers (1983) (Digitel)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a184846d8904396830951217b47d13d9", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a189f280521f4e5224d345efb4e75506", "Atari - Thomas Jentzsch", "", "Obelix (1983) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a19215975aeca1d98328173a124c47f7", "", "", "Death Derby (12-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1ca372388b6465a693e4626cc98b865", "Quelle", "176.543 7", "Der Vielfrass (1983) (Quelle) (PAL)", "AKA Fast Food", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1ccf58ca588bd3e0fb35a1e2a41b423", "", "", "Greeting Cart Green Dress (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1ead9c181d67859aa93c44e40f1709c", "American Videogame - Dunhill Electronics, Darrell Wagner, Todd Clark Holm, John Simonds", "", "Tax Avoiders (1982) (American Videogame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1f9159121142d42e63e6fb807d337aa", "Quelle", "700.223 1 - 781627", "Der moderne Ritter (1983) (Quelle) (PAL)", "AKA Fast Eddie", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a204cd4fb1944c86e800120706512a64", "Coleco", "2511", "Smurfs Save the Day (1983) (Coleco)", "Uses the Kid Vid Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a20b7abbcdf90fbc29ac0fafa195bd12", "Quelle", "719.383 2 - 649635 - 781393", "Motocross (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a20d931a8fddcd6f6116ed21ff5c4832", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1981) (Apollo) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a2170318a8ef4b50a1b1d38567c220d6", "Amiga", "3125", "Surf's Up (1983) (Amiga) (Prototype) [a]", "Uses the Amiga Joyboard", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a23ffc86804240ce77134a1c91926685", "", "", "Star Fire - Paulstar WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2424c1a0c783d7585d701b1c71b5fdc", "", "", "Video Pinball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a25bb76e9e773117e567fd4300b1bb23", "", "", "Interleaved ChronoColour Demo (NTSC) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a28d872fc50fa6b64eb35981d0f4bb8d", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari) (4K)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a29df35557f31dfea2e2ae4609c6ebb7", "Atari", "", "Circus Atari (1980) (Atari) (Joystick)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a29fc854838e08c247553a7d883dd65b", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision) (16K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2aae759e4e76f85c8afec3b86529317", "", "", "Boom Bang (Unknown)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2de0fc85548871279ed2a3c1325c13e", "George Veeder", "", "Cat and Mouse (George Veeder) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "a2eb84cfeed55acd7fece7fefdc83fbb", "", "", "Kool Aid Man (Fixed) (15-11-2002) (CT)", "HMOVE handling fixed in this version", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2f296ea2d6d4b59979bac5dfbf4edf0", "", "", "Warring Worms (28-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a302b922a8dbec47743f28b7f91d4cd8", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a30ece6dc4787e474fbc4090512838dc", "Zellers", "", "Circus (Zellers)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a310494ad5ba2b5b221a30d7180a0336", "", "", "Demo Image Series #6 - Mario (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a336beac1f0a835614200ecd9c41fd70", "Atari, Robert Vieira", "CX26121", "Zoo Keeper Sounds (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a34560841e0878c7b14cc65f79f6967d", "Multivision, Michael Case", "", "Harem (1982) (Multivision)", "", "", "", "", "", "", "", "", "", "", "", "", "29", "", "", "" }, - { "a3486c0b8110d9d4b1db5d8a280723c6", "Atari, Alan J. Murphy, Robert C. Polaro", "CX26100", "Bugs Bunny (08-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a35d47898b2b16ec641d1dfa8a45c2b7", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3873d7c544af459f40d58dfcfb78887", "", "", "Tennis (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3b9d2be822eab07e7f4b10593fb5eaa", "", "", "GREGXM Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3c1c70024d7aabb41381adbfb6d3b25", "Telesys, Alex Leavens", "1005", "Stargunner (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3d7c299fbcd7b637898ee0fdcfc47fc", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (Preview) (1982) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "a3f2a0fcf74bbc5fa763b0ee979b05b1", "Quelle", "873.790 0", "Eishockey-Fieber (1983) (Quelle) (PAL)", "AKA Ice Hockey", "", "", "", "", "", "", "", "", "", "", "", "52", "", "", "" }, - { "a3f8aebb38182749cb8da85cfbc63d7c", "", "", "Tennis (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3fee8ce15525ea00d45a06f04c215d1", "Aaron Curtis", "", "AStar (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "a406d2f6d84e61d842f4cb13b2b1cfa7", "Tigervision, John Harris - Teldec", "7-002", "Jawbreaker (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a412c8577b2d57b09185ae51739ac54f", "Arcadia Corporation, Dennis Caswell", "AR-4000", "Phaser Patrol (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "a41450333f8dd0e96e5e9f0af3770ae9", "", "", "Basic Math (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a422194290c64ef9d444da9d6a207807", "M Network, Hal Finney", "MT5667", "Dark Cavern (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a443d8557d712845c8cd3699363a42e6", "", "", "Star Fire (07-01-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a47878a760f5fa3aa99f95c3fdc70a0b", "", "", "Demo Image Series #5 - Baboon (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4790224bd5afabd53cbe93e46a7f241", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a47e26096de6f6487bf5dd2d1cced294", "Atari, Larry Kaplan", "CX2643", "Codebreaker (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "57", "", "", "" }, - { "a499d720e7ee35c62424de882a3351b6", "Sega, Phat Ho - Bally Midway - Beck-Tech", "009-01", "Up 'n Down (1984) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "a4aa7630e4c0ad7ebb9837d2d81de801", "", "", "Atari 2600 Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4ab331e8768eafdc20ce8b0411ff77a", "", "", "Demo Image Series #1 - Sam (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4b9423877a0b86ca35b52ca3c994ac5", "CCE", "C-805", "Sea Monster (1983) (CCE)", "O Monstro Marinho", "", "", "", "", "", "", "", "", "", "", "", "30", "220", "", "" }, - { "a4b99aa5ed85cfdb7d101923147de035", "Jim Goebel", "", "Pac-Law (Jim Goebel) (Hack)", "Hack of Outlaw", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4c08c4994eb9d24fb78be1793e82e26", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4d026a5c200ef98518ebb77719fe8dc", "Kyle Pittman", "", "SpongeBob SquarePants (2003) (Kyle Pittman) (Hack)", "Hack of Revenge of the Beefsteak Tomatoes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4e885726af9d97b12bb5a36792eab63", "Xonox - K-Tel Software - Beck-Tech", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "217", "", "" }, - { "a4ecb54f877cd94515527b11e698608c", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (12-20-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4f1cea2c8479284e2a2292f8d51b5fa", "", "", "Gunfight 2600 - The Final Kernel Part 2 (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4ff39d513b993159911efe01ac12eba", "Atari - GCC, Betty Ryan Tylko, Douglas B. Macrae", "CX2694", "Pole Position (1983) (Atari)", "AKA RealSports Driving", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a511f7ee13e4b35512f9217a677b4028", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5262fe6d01d6a1253692682a47f79dd", "", "", "JKH Text Scrolling Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a537879d8e82e1061d3ad800479d3b84", "Andrew Wallace", "", "Brooni (2001) (Andrew Wallace) (PD) (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a539b9fd1ba57e46442b3e9351e6383b", "", "", "River Raid (208 in 1) (Unknown) (PAL) (Hack) [a]", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a56b642a3d3ab9bbeee63cd44eb73216", "Carrere Video, Sylvia Day, Henry Will IV - Teldec", "USC2001", "Gopher (1983) (Carrere Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5855d73d304d83ef07dde03e379619f", "Atari, David Crane", "", "Boggle (08-07-1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "27", "215", "YES", "" }, - { "a58b11148c18d85e4c2aef4ff46ade67", "", "", "Video Chess (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a591b5e8587aae0d984a0f6fe2cc7d1c", "", "", "Globe Trotter Demo (24-03-2003) (Weston)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5b7f420ca6cc1384da0fed523920d8e", "", "", "Adventure (New Graphics) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5c96b046d5f8b7c96daaa12f925bef8", "Activision, Alan Miller - Ariola", "EAG-007, EAG-007-04I, PAG-007 - 711 007-720", "Tennis (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5e9ed3033fb2836e80aa7a420376788", "Atari, Carla Meninsky", "CX2637, CX2637P", "Dodge 'Em (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a60598ad7ee9c5ccad42d5b0df1570a1", "Atari, Alan Miller", "CX26163P", "Surround (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a6127f470306eed359d85eb4a9cf3c96", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a62e3e19280ff958407e05ca0a2d5ec7", "", "", "Hangman Ghost Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a641d14c516d00da81cd12c2dbaa06db", "", "", "Image - Baboon2 (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a6637741b3e1111ebb0d4c9712a871b6", "", "", "Greeting Cart Cindy Margolis (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a6737c81542a99ee71cb5f5ff14703d9", "", "", "Scrolling Playfield 3 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a68a396ff1f3b311712f6bdf05dcefab", "", "", "Greeting Cart Amy (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a69f5b1761a8a11c98e706ec7204937f", "", "", "Pharaoh's Curse (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a74689a08746a667a299b0507e1e6dd9", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger, The (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7523db9a33e9417637be0e71fa4377c", "Videospielkassette - Ariola", "PGP238", "Gangster (Ariola) (PAL)", "AKA Outlaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7673809068062106db8e9d10b56a5b3", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118, CX26118P", "Millipede (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a779b9fa02c62d00d7c31ed51268f18a", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7a58e9291aefa1064e933071f60d4ef", "Arcadia Corporation, Dennis Caswell", "1 AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "a7b584937911d60c120677fe0d47f36f", "M Network, Hal Finney - INTV", "MT5661", "Armor Ambush (1982) (M Network)", "AKA Tank Battle", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7b96a8150600b3e800a4689c3ec60a2", "Atari, Mike Lorenzen - Sears", "CX2630 - 49-75122", "Circus Atari (1980) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "a7cf2b9afdbb3a161bf418dbcf0321dc", "Barry Laws Jr.", "", "Attack Of The Mutant Space Urchins (2002) (Barry Laws Jr.) (Hack)", "Hack of Alien", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a7ed7dc5cbc901388afa59030fb11d26", "Atari, Warren Robinett", "CX2606, CX2606P", "Slot Racers (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7ef44ccb5b9000caf02df3e6da71a92", "Atari, Ian Shepard - Sears", "CX2604 - 6-99812, 49-75106", "Space War (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8101cb667e50a46165c6fb48c608b6b", "", "", "Kung Fu Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a81697b0c8bbc338ae4d0046ede0646b", "CCE", "", "Gravitar (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a81b29177f258494b499fbac69789cef", "Greg Thompson", "", "Console Wars (Greg Thompson) (Hack)", "Hack of Space Jockey", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a83b070b485cf1fb4d5a48da153fdf1a", "Apollo", "AP-2011", "Pompeii (1983) (Apollo) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8435ec570141de5d833c4abec499e55", "", "", "Happy Birthday Demo (2001) (Dennis Debro) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8633050a686270fcf6c0cc4dcbad630", "Zirok", "", "Phoenix (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a867b76098786c4091dba2fcee5084c3", "", "", "Dragrace (Hack)", "Hack of Dragster", "Hack", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "a875f0a919129b4f1b5103ddd200d2fe", "Atari, Dan Hitchens", "CX2656", "SwordQuest - EarthWorld (1982) (Atari) (PAL)", "AKA Adventure I, SwordQuest I - EarthWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8916734ff8c64ec3342f4c73fd5b57d", "Atari", "", "Stand Alone Test Cart (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a899a3e3fec8d466f45c2c3beb2961fd", "", "", "Greeting Cart Cathy (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a89a3e0547d6887279c34aba4b17a560", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (1983) (Mattel) (Prototype)", "", "Prototype", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8a703e073183a89c94d4d99b9661b7f", "Franklin Cruz", "", "Spice Invaders (Franklin Cruz) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8b3ea6836b99bea77c8f603cf1ea187", "CCE", "C-861", "Boxing (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8c48b4e0bf35fe97cc84fdd2c507f78", "Puzzy - Bit Corporation", "PG201", "Seamonster (1982) (Puzzy)", "", "", "", "", "", "", "", "", "", "", "", "", "29", "220", "", "" }, - { "a8d0a4a77cd71ac601bd71df5a060e4c", "", "", "Space Shuttle (1983) (Activision) [t2] (Fuel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8d4a9500b18b0a067a1f272f869e094", "", "", "Red And White Checkerboard Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a91d0858a52de3a2e6468437212d93e8", "", "", "Q-bert (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a936d80083e99d48752ad15c2b5f7c96", "", "", "Room of Doom (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a93e8ea1f565c3c1e86b708cf0dc2fa9", "Jess Ragan", "", "Kabul! (Jess Ragan) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "a94528ae05dd051894e945d4d2349b3b", "Genus", "", "River Raid (Genus)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a94b8ca630f467b574b614808d813919", "HES", "773-883", "2 Pak Special - Space Voyage, Fire Alert (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a9531c763077464307086ec9a1fd057d", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a957dbe7d85ea89133346ad56fbda03f", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a97733b0852ee3096300102cb0689175", "CCE", "C-834", "Fast Eddie (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a9784c24cddb33bd0d14442b97784f3d", "", "", "Omega Race DC (2003) (TJ) (Omega Race Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a98b649912b6ca19eaf5c2d2faf38562", "", "", "This Planet Sucks (Greg Troutman) (PAL) [!]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "a995b6cbdb1f0433abc74050808590e6", "Imagic, Rob Fulop, Bob Smith", "720106-1A, IA3600", "Riddle of the Sphinx (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a9cb638cd2cb2e8e0643d7a67db4281c", "M Network, Larry Zwick - INTV", "MT5861", "Air Raiders (1982) (M Network)", "AKA Air Battle", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aa1c41f86ec44c0a44eb64c332ce08af", "Spectravideo, David Lubar", "SA-218", "Bumper Bash (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "aa2c4b32656bde9a75042a4d158583e1", "", "", "Oystron X (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aa7bb54d2c189a31bb1fa20099e42859", "CBS Electronics, Ed English", "4L4478", "Mr. Do! (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "aa8e4b2cb8a78ffe6b20580033f4dec9", "", "", "Bitmap Demo (13-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aab840db22075aa0f6a6b83a597f8890", "Home Vision - Gem International Corp. - R.J.P.G.", "VCS83124", "Racing Car (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "aacbf0dd6021bc5f4cee6c96ff37e84f", "", "", "Death Derby (v0001) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aad61898633f470ce528e3d7ef3d0adb", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a2]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aad91be0bf78d33d29758876d999848a", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1981) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aaea37b65db9e492798f0105a6915e96", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Tug of War (2 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "30", "", "", "" }, - { "aafc79ffc32c4c9b2d73c8ada7602cfe", "", "", "Planet Patrol (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab10f2974dee73dab4579f0cab35fca6", "ITT Family Games", "", "Wilma Wanderer (1983) (ITT Family Games) (PAL)", "AKA Lilly Adventure", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab2ea35dcc1098c87455bb8210b018cf", "", "", "Fu Kung! (V0.04 Single Line Resolution) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab301d3d7f2f4fe3fdd8a3540b7a74f5", "Jone Yuan Telephonic Enterprise Co", "", "IQ 180 (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "27", "230", "", "" }, - { "ab434f4c942d6472e75d5490cc4dd128", "HES", "", "2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab4ac994865fb16ebb85738316309457", "Atari, Alan Miller - Sears", "CX2624 - 6-99826, 49-75113", "Basketball (1978) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab56f1b2542a05bebc4fbccfc4803a38", "Activision, David Lubar", "AK-048-04", "River Raid II (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab5bf1ef5e463ad1cbb11b6a33797228", "Imagic, Rob Fulop", "720104-1A, 720104-1B, IA3204", "Cosmic Ark (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab60ea7b707c58d356cad858eb18db43", "", "", "Tazer (John K. Harvey)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "abb740bea0a6842831b4f53112fb8145", "", "", "Qb (V1.01) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "abb741c83f665d73c86d90a7d9292a9b", "Telegames", "", "Space Attack (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "abc64037ca5d5b04ae8a7eedbca3ed74", "", "", "Green and Yellow Number 1 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "abe40542e4ff2d1c51aa2bb033f09984", "Absolute Entertainment, David Crane", "EAZ-042-04B, EAZ-042-04I", "Skate Boardin' (1987) (Absolute) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac05c0e53a5e7009ddd75ed4b99949fc", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac0ddbcff34d064009591607746e33b8", "Thomas Jentzsch", "", "Atlantis FH (2003) (TJ) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac26d7d37248d1d8eac5eccacdbef8db", "", "", "Snail Against Squirrel (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac3dd22dd945724be705ddd2785487c2", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (06-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac53b83e1b57a601eeae9d3ce1b4a458", "Retroactive", "", "Qb (2.15) (Retroactive) (NTSC)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ac5f78bae0638cf3f2a0c8d07eb4df69", "", "", "Minesweeper (V.99) (Soren Gust) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac7c2260378975614192ca2bc3d20e0b", "Activision, David Crane", "AG-930004, AZ-030", "Decathlon (1983) (Activision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac9adbd6de786a242e19d4bec527982b", "Activision, Alan Miller - Ariola", "EAG-012-04I, EAX-012, EAX-012-04B - 711 012-720", "Ice Hockey (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aca09ffea77174b148b96b205109db4d", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "acaa27d214039d89d7031609aafa55c3", "", "", "Sprite Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "acb6787b938079f4e74313a905ec3ceb", "", "", "Chronocolor Donkey Kong (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "acb7750b4d0c4bd34969802a7deb2990", "Parker Brothers, Ed Temple", "PB5310", "Amidar (1982) (Parker Bros)", "", "Uncommon", "", "", "A", "A", "", "", "", "", "", "", "", "", "", "" }, - { "acb962473185d7a652f90ed6591ae13b", "Imagic, Dennis Koble", "IA3203, IX-010-04", "Atlantis (1982) (Imagic) (16K)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ace319dc4f76548659876741a6690d57", "Atari, Steve Wright", "CX2616", "Pele's Soccer (1981) (Atari)", "AKA Championship Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad2e6bfb3b9b9b36ba8bf493ce764c49", "", "", "2600 Collison Demo 1 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad42e3ca3144e2159e26be123471bffc", "Atari", "CX26163P", "Human Cannonball (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad7e97c19bd25d5aa3999430845c755b", "", "", "Sprite Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad8072675109d13fdd31a2e0403d5cff", "Funvision - Fund. International Co.", "", "Tank City (Funvision)", "AKA Thunderground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adb770ff70e9adf08bbb907a7eccd240", "", "", "Inv Demo 3 (2001) (Erik Mooney) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adb79f9ac1a633cdd44954e2eac14774", "Digivision", "", "Frostbite (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adf1afac3bdd7b36d2eda5949f1a0fa3", "Quelle", "495.463 2 - 746381", "Angriff der Luftflotten (1983) (Quelle) (PAL)", "AKA Paris Attack, M.A.D.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adfbd2e8a38f96e03751717f7422851d", "Champ Games", "", "Lady Bug (NTSC)", "", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae047e9468bda961d8e9e9d8ff52980f", "", "", "Tunnel Demo (Red Spiral) (30-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae0d4f3396cb49de0fabdff03cb2756f", "Retroactive", "", "Qb (V2.02) (PAL) (2001) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae10527840a1ac24de43730645ed508d", "Charles Morgan", "", "Planet Invaders (Charles Morgan) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae18c11e4d7ed2437f0bf5d167c0e96c", "", "", "Multi-Color Demo 3 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae2f1f69bb38355395c1c75c81acc644", "Parker Brothers, Wilfredo 'Willy' Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae465044dfba287d344ba468820995d7", "", "", "Spider Kong (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae4be3a36b285c1a1dff202157e2155d", "Spectravideo", "SA-210", "Master Builder (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae682886058cd6981c4b8e93e7b019cf", "Retroactive", "", "Qb (V0.12) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae6cb335470788b94beb5787976e8818", "", "", "Mortal Kurling (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae83541cf4a4c0bce0adccd2c1bf6288", "", "", "Maze 003 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae97cf8ed21f4154b4360a3cf6c95c5e", "", "", "Teleterm 2600 (John K. Harvey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aea308e30cd92cc73dc0c7f53f69ec56", "", "", "Death Derby (2LK_12) (24-02-2003) (Glenn Saunders)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aeb104f1e7b166bc0cbaca0a968fde51", "", "", "Ms. Pac-Man (1999) (Hack)", "Hack of Ms. Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aec9b885d0e8b24e871925630884095c", "Amiga", "3125", "Surf's Up (1983) (Amiga) (Prototype)", "Uses the Amiga Joyboard", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aed0b7bd64cc384f85fdea33e28daf3b", "Atari, Alan J. Murphy, Robert C. Polaro", "CX2666", "RealSports Volleyball (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aed82052f7589df05a3f417bb4e45f0c", "Atari, Warren Robinett - Sears", "CX2606 - 6-99825, 49-75112", "Slot Racers (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "af6ab88d3d7c7417db2b3b3c70b0da0a", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "afb3bc45c6a82739cc82582127cd96e6", "Atari, John Howard Palevich", "CX26151, CX26151P", "Dungeon (11-22-1985) (Atari) (Prototype)", "Dark Chambers Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "afc194534c1b346609ef05eff6d3cef6", "Jone Yuan Telephonic Enterprise Co", "", "Boxing (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "afd2cf258d51ae4965ee21abba3627ab", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (12-08-1982) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "afe4eefc7d885c277fc0649507fbcd84", "Atari", "CX26163P", "Ant Party (32 in 1) (1988) (Atari) (PAL)", "AKA Cosmic Swarm", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "afe776db50e3378cd6f29c7cdd79104a", "Thomas Jentzsch", "", "Bobby is Going Home (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "23", "245", "", "" }, - { "afe88aae81d99e0947c0cfb687b16251", "Apollo - Games by Apollo", "AP-2006", "Infiltrate (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "29", "", "YES", "" }, - { "aff8cba0f2d2eb239953dd7116894a08", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (3 of 3) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b00088418fc891f3faa3d4ddde6ace94", "", "", "Unknown Title (bin00007 (200102)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b00a8bc9d7fe7080980a514005cbad13", "K-Tel Vision", "", "Vulture Attack (1982) (K-Tel Vision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b00e8217633e870bf39d948662a52aac", "Konami", "RC 102-X 02", "Marine Wars (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b049fc8ac50be7c2f28418817979c637", "Activision, David Lubar", "EAK-048-04, EAK-048-04B", "River Raid II (1988) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b06050f686c6b857d0df1b79fea47bb4", "Activision", "AIZ-001", "Moonsweeper (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b061e98a4c854a672aadefa233236e51", "Atari, Warren Robinett", "CX2620, CX2620P", "Basic Programming (1979) (Atari) (PAL)", "Uses Keypad Controllers", "Common", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "YES", "" }, - { "b095009004df341386d22b2a3fae3c81", "", "", "Sub-Scan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b09b79c9628878be051e89f7f1e77378", "Activision, Larry Kaplan, David Crane - Ariola", "EAG-010, PAG-010 - 711 010-720", "Kaboom! (1981) (Activision) (PAL) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "b0ba51723b9330797985808db598fc31", "Atari, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "b0c47e426c7f799aee2c40422df8f56a", "", "", "Space Treat (PAL) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b0c9cf89a6d4e612524f4fd48b5bb562", "Atari - GCC", "CX26156", "Combat Two (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b0e1ee07fbc73493eac5651a52f90f00", "Colin Hughes", "", "Tetris 2600 (Colin Hughes)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b12a7f63787a6bb08e683837a8ed3f18", "Imagic, Rob Fulop", "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04", "Demon Attack (1982) (Imagic) [fixed]", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1339c56a9ea63122232fe4328373ac5", "Goliath - Hot Shot", "83-215", "Dream Flight (1983) (Goliath) (PAL)", "AKA Nightmare", "", "", "", "", "", "", "", "", "", "", "", "44", "256", "", "" }, - { "b1486e12de717013376447ac6f7f3a80", "Quelle", "292.542 8", "Marspatrouille (1983) (Quelle) (PAL)", "AKA Gas Hog", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b15026b43c6758609667468434766dd8", "Retroactive", "", "Qb (0.06) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b17b9cc4103844dcda54f77f44acc93a", "Quelle", "377.943 6", "Stopp die Gangster (1983) (Quelle) (PAL)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1a6c96e9093352106bc335e96caa154", "Joe Grand", "", "SCSIcide Pre-release 1 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "b1b20536aef4eed9c79dc5804f077862", "", "", "Euchre (NTSC) (09-11-2001) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1c14b5ac896400cc91c8e5dd67acb59", "", "", "River Raid (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1c4f026a854385259020744e589faa6", "", "", "Greeting Cart Blond on Brunette (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1d1e083dc9e7d9a5dc1627869d2ade7", "CCE", "C-1004", "Mario's Bros. (1983) (CCE)", "AKA Mario Bros.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1e2d5dc1353af6d56cd2fe7cfe75254", "Atari - Axlon, Steve DeFrisco", "CX26171", "MotoRodeo (1990) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b1fd0b71de9f6eeb5143a97963674cb6", "", "", "Multi-Color Demo 7 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b227175699e372b8fe10ce243ad6dda5", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b23ebf427713dd0198b7ef47dbd07ef4", "Jone Yuan Telephonic Enterprise Co", "", "Sky Diver (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b24f6a5820a4b7763a3d547e3e07441d", "CCE", "C-823", "Demon Attack (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b26506fbf411009e5e3f7365f442960e", "Atari, Alan Miller", "CX2642", "Hunt & Score (1978) (Atari) (PAL) (4K)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "b2737034f974535f5c0c6431ab8caf73", "CBS Electronics, Richard K. Balaska Jr., Andy Frank, Stuart Ross", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2761efb8a11fc59b00a3b9d78022ad6", "Atari, Bob Whitehead - Sears", "CX2651 - 99805, 49-75602", "Blackjack (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "" }, - { "b28b3d07ffd5f56938a922b7448730b9", "", "", "Greeting Cart Autobots(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b290c2b139344fcff5b312c71b9ac3b2", "Atari", "CX26163P", "UFO (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b29359f7de62fed6e6ad4c948f699df8", "Puzzy - Bit Corporation", "PG203", "Phantom Tank (1982) (Puzzy) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2a6f31636b699aeda900f07152bab6e", "", "", "Space Instigators (Public Release 2) (06-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2d1e63f7f22864096b7b6c154151d55", "Fabrizio Zavagli", "", "Bounce! (17-03-2003) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b2d3bcee001cff2bd2d8a21b2cb55109", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691", "Joust (08-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b2d5d200f0af8485413fad957828582a", "Atari, Robert C. Polaro", "CX26155P", "Sprint Master (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2f0d7217147160b2f481954cedf814b", "", "", "Marquee Drawer (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b3017e397f74efd53caf8fae0a38e3fe", "Retroactive", "", "Qb (2.12) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b311ab95e85bc0162308390728a7361d", "Parker Brothers", "PB5080", "Gyruss (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b31dc989f594764eacfa7931cead0050", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (2 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b31f178aa0d569cccac7959f84e0a724", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (07-13-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b3203e383b435f7e43f9492893c7469f", "Gameworld", "133-003", "Sssnake (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b36040a2f9ecafa73d835d804a572dbf", "Digitel", "", "Pac Man (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "b37f0fe822b92ca8f5e330bf62d56ea9", "Xonox - K-Tel Software - Beck-Tech", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b392964e8b1c9c2bed12246f228011b2", "", "", "Name This Game (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4030c38a720dd84b84178b6ce1fc749", "M Network, Kevin Miller", "MT5687", "International Soccer (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b40dea357d41c5408546e4e4d5f27779", "Digivision", "", "Spider Fighter (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "b41fdd4a522e1d5a2721840028684ac2", "", "", "Green and Yellow Number 1 Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b42df8d92e3118dc594cecd575f515d7", "Mystique - American Multiple Industries", "1003", "Burning Desire (1982) (Mystique) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b438a6aa9d4b9b8f0b2ddb51323b21e4", "Telegames", "5861 A030", "Bogey Blaster (1989) (Telegames) (PAL)", "AKA Air Raiders", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b451307b8b5e29f1c5f2cf064f6c7227", "", "", "Demo Image Series #6 - Mario (Fixed) (26-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b49331b237c8f11d5f36fe2054a7b92b", "", "", "Condor Attack (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4a4c87840613f102acb5b3a647d0a67", "", "", "Mobile 48 Sprite Kernel (04-01-2003) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4daedb43511521db9036d503b3c1b69", "", "", "Sokoban (01-01-2003) (Adam Wozniak) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "b4e2fd27d3180f0f4eb1065afc0d7fc9", "Avalon Hill, Jean Baer, Bill 'Rebecca Ann' Heineman, William O. Sheppard", "5002002", "London Blitz (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4f05e544834d0238a0c263491775edf", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "AR-4102", "Suicide Mission (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b4f31ea8a6cc9f1fd4d5585a87c3b487", "Mystique - American Multiple Industries, Joel H. Martin", "", "Beat 'Em & Eat 'Em (1982) (Mystique) (PAL)", "Uses the Paddle Controller (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "b4f87ce75f7329c18301a2505fe59cd3", "Videospielkassett - Ariola", "PGP232", "Autorennen (Ariola) (PAL)", "AKA Grand Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b5110f55ed99d5279f18266d001a8cd5", "Eckhard Stolberg", "", "Auto-mobile Demo (2001) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b56264f738b2eb2c8f7cf5a2a75e5fdc", "Atari - GCC, Betty Ryan Tylko, Douglas B. Macrae", "CX2694, CX2694P", "Pole Position (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b5657d4c1c732fbb6af150668464247f", "Arcadia Corporation, Stephen Harland Landrum", "6 AR-4400", "Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b59417d083b0be2d49a7d93769880a4b", "Pet Boat", "", "Donkey Kong (1983) (Pet Boat) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b5a1a189601a785bdb2f02a424080412", "Imagic, Dennis Koble", "720021-1A, IA3410", "Shootin' Gallery (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "29", "", "", "" }, - { "b5cb9cf6e668ea3f4cc2be00ea70ec3c", "CommaVid, Irwin Gaines - Ariola", "CM-005 - 712 005-720", "Mines of Minos (1982) (CommaVid) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b5cdbab514ea726a14383cff6db40e26", "Video Gems", "VG-04", "Mission Survive (1983) (Video Gems) (PAL) [a]", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "YES", "" }, - { "b5efe0271d2214e4d5dc798881486884", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (06-14-1990) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6166f15720fdf192932f1f76df5b65d", "Amiga", "3130", "Off Your Rocker (1983) (Amiga) (Prototype)", "Uses the Amiga Joyboard", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "b64426e787f04ff23ee629182c168603", "Dynacom", "", "Plaque Attack (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b65d4a38d6047735824ee99684f3515e", "Dynacom", "", "MegaBoy (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "b676a9b7094e0345a76ef027091d916b", "Thomas Jentzsch", "", "Mission Survive (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "YES", "" }, - { "b6812eaf87127f043e78f91f2028f9f4", "Simage", "", "Eli's Ladder (1982) (Simage)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6821ac51c4c1dcb283f01be2f047dc1", "", "", "Rubik's Cube 3D Demo (25-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6960be26bee87d53ba4e2e71cfe772f", "", "", "3-D Corridor (Spiral Words) (31-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6d52a0cf53ad4216feb04147301f87d", "Imagic, Michael Greene", "720055-1A, IA3312", "No Escape! (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6e40bce550672e5495a8cdde7075b8b", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b702641d698c60bcdc922dbd8c9dd49c", "Atari, Ian Shepard", "CX26163P", "Space War (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b719ada17771a8d206c7976553825139", "Ron Corcoran", "", "DUP Space Invaders (Ron Corcoran) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b731d35e4ac6b3b47eba5dd0991f452f", "", "", "Rubik's Cube 3D Demo (Final) (08-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7345220a0c587f3b0c47af33ebe533c", "Quelle", "176.433 1", "Landungskommando (1983) (Quelle) (PAL)", "AKA Strategy X", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b76fbadc8ffb1f83e2ca08b6fb4d6c9f", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b77468d586957d1b7fb4cccda2684f47", "Atari", "CX26163P", "Boxing (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7903268e235310dc346a164af4c7022", "Thomas Jentzsch", "", "Cat Trax (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "PAL60", "30", "", "YES", "" }, - { "b79fe32320388a197ac3a0b932cc2189", "Imagic, Bob Smith", "13207, EIZ-001-04I", "Moonsweeper (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b7a7e34e304e4b7bc565ec01ba33ea27", "Parker Brothers", "PB5820", "Mr. Do!'s Castle (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b7b1d3ce07e75976c43a2dca3866237e", "Atari", "CX26163P", "Freeway Chicken (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7e459d5416eeb196aaa8e092db14463", "", "", "Push (V0.02) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7f184013991823fc02a6557341d2a7a", "", "", "Blue Rod Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b80d50ecee73919a507498d0a4d922ae", "20th Century Fox Video Games, David Lubar", "11008", "Fantastic Voyage (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "b816296311019ab69a21cb9e9e235d12", "Atari, Bob Whitehead - Sears", "CX2652 - 6-99816, 49-75151", "Casino (1979) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "" }, - { "b822fba8b7c8a97ea4e92aeb2c455ef9", "Dactari", "", "Freeway (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b83579c4450fcbdf2b108903731fa734", "", "", "Mission 3,000 A.D. (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b83df1f32b4539c324bdf94851b4db55", "Angelino", "", "One On One by Angelino (Basketball Hack)", "Hack of Basketball (1978) (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b86552198f52cfce721bafb496363099", "Apollo, Tim Martin", "AP-2007", "Kyphus (1982) (Apollo) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b86a12e53ab107b6caedd4e0272aa034", "Funvision - Fund. International Co.", "", "Treasure Hunting (Funvision)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b879e13fd99382e09bcaf1d87ad84add", "Zellers", "", "Time Warp (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "b8865f05676e64f3bec72b9defdacfa7", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b897f9e3f939b9f21566d56db812a84e", "Atari, Jim Huether", "CX26163P", "Flag Capture (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b8ed78afdb1e6cfe44ef6e3428789d5f", "Data Age", "112-007", "Bermuda Triangle (1982) (Data Age)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9040a7af6d0d13e7d8fea72b2fb7432", "", "", "Image - Samantha Fox (09-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9232c1de494875efe1858fc8390616d", "Panda", "110", "Harbor Escape (1983) (Panda)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9336ed6d94a5cc81a16483b0a946a73", "Atari, Jerome Domurat, Michael Sierchio", "CX2667, CX2667P", "RealSports Soccer (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b958d5fd9574c5cf9ece4b9421c28ecd", "Piero Cavina", "", "Multi-Sprite Game V1.0 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b95a6274ca0e0c773bfdc06b4c3daa42", "Paul Slocum", "", "3-D Corridor (29-03-2003) (Paul Slocum)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9b4612358a0b2c1b4d66bb146767306", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a3]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "20", "230", "", "" }, - { "b9d1e3be30b131324482345959aed5e5", "Activision, Rex Bradford", "", "Kabobber (07-25-1983) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9f6fa399b8cd386c235983ec45e4355", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL)", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "b9f9c0fed0db08c34346317f3957a945", "SuperVision", "405, 427, 806, 808, 813, 816", "Chopper Command (SuperVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba257438f8a78862a9e014d831143690", "U.S. Games Corporation, Henry Will IV", "VC2002", "Squeeze Box (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba317f83cdfcd58cbc65aac1ccb87bc5", "", "", "Jammed (2001) (XYPE) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba3a17efd26db8b4f09c0cf7afdf84d1", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "ba3b0eebccc7b791107de5b4abb671b4", "", "", "Thrust (V0.9) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba638f02faac0878c3b0f9669923485f", "", "", "Image - Baboon (10-02-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba657d940a11e807ff314bba2c8b389b", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bac28d06dfc03d3d2f4a7c13383e84ee", "Supergame", "", "Demon Attack (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bae1a23f9b6acdadf465cfb330ba0acb", "Atari - GCC, Doug Macrae", "CX2677", "Dig Dug (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bae66907c3200bc63592efe5a9a69dbb", "Spectravision, Spectravideo - Quelle", "SA-201 - 412.783 3", "Gangster Alley (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "baf4ce885aa281fd31711da9b9795485", "Atari, Douglas Neubauer", "CX26176", "Radar Lock (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb07f917611cde42b7d83746ee27147d", "", "", "Star Fire - Warping!! (13-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb18189021d58362d9e4d317cd2e28b7", "Activision, David Crane - Ariola", "EAG-001, PAG-001, EAG-001-04B, EAG-001-04I - 711 001-715", "Dragster (1980) (Activision) (PAL) (4K)", "AKA Dragster Rennen", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb5049e4558daade0f87fed69a244c59", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [no copyright]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "bb579404924c40ca378b4aff6ccf302d", "", "", "Lightbulb Lightens, The (PD) (Non Functional)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb6a5a2f7b67bee5d1f237f62f1e643f", "", "", "Demo Image Series #5 - Animegirl (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb745c893999b0efc96ea9029e3c62ca", "Play Video", "", "Planet Patrol (1982) (Play Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb756aa98b847dddc8fc170bc79f92b2", "", "", "Golf (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb9f06b288b5275bc0d38b6731b2526a", "", "", "Star Fire - Meteor Dance 2 (18-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc3057a35319aae3a5cd87a203736abe", "CCE", "C-845", "Time Warp (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "bc33c685e6ffced83abe7a43f30df7f9", "Dynacom", "", "Seaquest (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc4cf38a4bee45752dc466c98ed7ad09", "Atari, Douglas Neubauer", "CX26136", "Solaris (1986) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc526185ad324241782dc68ba5d0540b", "", "", "Dodge Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc5389839857612cfabeb810ba7effdc", "Atari, Tod Frye", "CX2671", "SwordQuest - WaterWorld (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc6432cbed32c695658514c4eb41d905", "Manuel Polik", "", "Star Fire (MP) (2002) (PD)", "Won't work with Stella < V1.2", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc703ea6afb20bc089f04d8c9d79a2bd", "", "", "Gunfight 2600 - Not mergeable with Colbert wizardry... (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc97d544f1d4834cc72bcc92a37b8c1b", "", "", "Sky Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bccb4e2cfad5efc93f6d55dc992118ce", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bce4c291d0007f16997faa5c4db0a6b8", "Quelle", "292.651 7", "Weltraumtunnel (1983) (Quelle) (PAL)", "AKA Laser Gates", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bce93984b920e9b56cf24064f740fe78", "Atari, Carol Shaw", "CX26163P", "Checkers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bcef7880828a391cf6b50d5a6dcef719", "Rainbow Vision - Suntek", "SS-009", "Bermuda, The (Rainbow Vision) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bd1bd6f6b928df17a702def0302f46f4", "", "", "Binary To Decimal Routine (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bd39598f067a1193ae81bd6182e756d1", "Telegames", "", "Night Stalker (1989) (Telegames) (PAL)", "AKA Dark Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bd430c2193045c68d1a20a018a976248", "", "", "Pac Ghost Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bda1463e02ae3a6e1107ffe1b572efd2", "Atari, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdb4b584ddc90c9d2ec7e21632a236b6", "Atari Freak 1", "", "Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack)", "Hack of Pac-Man Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdbac0c6cd0fab9c81c3be0bedb0ddd4", "", "", "Greeting Cart The Snail(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdbaeff1f7132358ea64c7be9e46c1ac", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11105", "Mega Force (1982) (20th Century Fox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdc381baf7c252c63739c5e9ed087a5c", "", "", "Vertical Ship Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdecc81f740200780db04a107c3a1eba", "Quelle", "874.254 6", "Super-Cowboy beim Rodeo (1983) (Quelle) (PAL)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdf1996e2dd64baf8eff5511811ca6ca", "Tron", "", "H.E.R.O. (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be060a704803446c02e6f039ab12eb91", "Parker Brothers, Rex Bradford, Sam Kjellman", "931501", "Star Wars - The Empire Strikes Back (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be1922bd8e09d74da471287e1e968653", "Cropsy", "", "Hangman Pacman Demo (Cropsy) (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be2870a0120fd28d25284e9ccdcbdc99", "", "", "Tomb Raider 2600 [REV 01] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be3343494301a3a8b1b2a2f8d7473c45", "", "", "Image - Clown (Full Screen) (12-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be35d8b37bbc03848a5f020662a99909", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be3f0e827e2f748819dac2a22d6ac823", "Puzzy - Bit Corporation", "PG202", "Space Tunnel (1982) (Puzzy)", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, - { "be41463cd918daef107d249f8cde3409", "", "", "Berzerk (Voice Enhanced) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be561b286b6432cac71bccbae68002f7", "", "", "Counter Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be929419902e21bd7830a7a7d746195d", "Activision, Garry Kitchen", "AX-025, AX-025-04", "Keystone Kapers (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "becd908f9d7bb361982c3dc02d6475c6", "Kyle Pittman", "", "THX-1138 (Kyle Pittman) (Hack)", "Hack of Berserk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bedfbde71fb606601f936b5b057f26f7", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "befce0de2012b24fd6cb8b53c17c8271", "", "", "Push (V0.03) (No Illegal Opcodes) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf52327c2197d9d2c4544be053caded1", "HES", "AG-930-04, AZ-030", "Decathlon (HES) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf5e2079586cb307bf5eb2413e2e61af", "", "", "Star Fire - 1LK Intro (13-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf6b753ec11acfec3b40f8a4c476e77d", "", "", "Image - Girl (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf84f528de44225dd733c0e6a8e400a0", "CCE", "", "Demons to Diamonds (CCE)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "", "", "", "", "" }, - { "bf976cf80bcf52c5f164c1d45f2b316b", "Atari, Tod Frye", "CX2657", "SwordQuest - FireWorld (1982) (Atari) (PAL)", "AKA Adventure II, SwordQuest II - FireWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf9ddc5dd9056633d4ac0dac8b871dfe", "", "", "Star Fire - Cockpit View (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bfa58198c6b9cd8062ee76a2b38e9b33", "", "", "20 Sprites at Once Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bfcabc6995ef42d0b6c06786993dc4d6", "", "", "Star Fire - Creating a Universe (09-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bff8f8f53a8aeb1ee804004ccbb08313", "", "", "Droid Demo 22 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bffe34516aaa3cbf5d307eab382a7e95", "", "", "Euchre (Release Candidate) (PAL) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c00734a2233ef683d9b6e622ac97a5c8", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (03-30-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c00b65d1bae0aef6a1b5652c9c2156a1", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "" }, - { "c02e1afa0671e438fd526055c556d231", "Atari", "", "A-Team (Atari) (Prototype) (PAL60)", "", "Prototype", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "c032c2bd7017fdfbba9a105ec50f800e", "Activision, Charlie Heath", "", "Thwocker (04-09-1984) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c033dc1d7b6fde41b9cadce9638909bb", "", "", "Skeleton (V1.1) (06-09-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c05f367fa4767ceb27abadf0066df7f4", "", "", "TomInv (31-07-2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c08d0cee43077d3055febb00e5745c1d", "HES - Activision", "", "Super Hit Pak - River Raid, Sky Jinks, Grand Prix, Fishing Derby, Checkers (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c0a68837c60e15d1fc5a40c9a62894bc", "Arcadia Corporation, Kevin Norman", "7 AR-4103", "Killer Satellites (1983) (Arcadia) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c0d2434348de72fa6edcc6d8e40f28d7", "Sega - Bally Midway - Beck-Tech", "010-01", "Tapper (1984) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "24", "225", "", "" }, - { "c118854d670289a8b5d5156aa74b0c49", "Jone Yuan Telephonic Enterprise Co", "", "Skiing (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c126656df6badfa519cc63e681fb3596", "Ron Corcoran", "", "Space Invaders (2002) (Ron Corcoran) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c150c76cbde2c9b5a97eb5399d46c64f", "", "", "Unknown Title (xxx00000 (200203)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c16c79aad6272baffb8aae9a7fff0864", "U.S. Games Corporation, Sylvia Day, Henry Will IV", "VC2001", "Gopher (1982) (U.S. Games)", "AKA Gopher Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c16fbfdbfdf5590cc8179e4b0f5f5aeb", "", "", "Wall Break (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "c17bdc7d14a36e10837d039f43ee5fa3", "Spectravision, Spectravideo", "SA-203", "Cross Force (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1a83f44137ea914b495fc6ac036c493", "Atari, Carla Meninsky", "CX2660", "Star Raiders (1982) (Atari) (PAL)", "Uses Joystick (left) and Keypad (right) Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "" }, - { "c1b038ce5cb6d85e956c5509b0e0d0d8", "", "", "Rotating Colors Demo 2 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1b1049b88bcd98437d8872d1d62ba31", "", "", "Demo Image Series #4 - Donald (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1b7aeabc3ec41556d924c8372a9ba5b", "Atari, Robert C. Polaro", "", "Dukes of Hazard (1980) (Atari) (Prototype)", "AKA Stunt Cycle", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1cb228470a87beb5f36e90ac745da26", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1e6e4e7ef5f146388a090f1c469a2fa", "Bomb - Onbase", "CA283", "Z-Tack (1983) (Bomb)", "AKA Base Attack", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "c1f209d80f0624dada5866ce05dd3399", "Telegames", "", "Deadly Discs (1989) (Telegames) (PAL)", "AKA TRON - Deadly Discs", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1fdd44efda916414be3527a47752c75", "Parker Brothers, John Emerson", "PB5920", "G.I. Joe - Cobra Strike (1983) (Parker Bros)", "Uses the Paddle (left) and Joystick (right) Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "30", "", "", "" }, - { "c20f15282a1aa8724d70c117e5c9709e", "Video Gems", "VG-02", "Surfer's Paradise (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c21450c21efb7715746e9fa87ad6f145", "Hozer Video Games", "", "Gunfight 2600 - It could've been soooo cool, but... (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c216b91f5db21a093ded6a5aaec85709", "Jone Yuan Telephonic Enterprise Co", "", "Dragster (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "22", "", "", "" }, - { "c221607529cabc93450ef25dbac6e8d2", "Eckhard Stolberg", "", "Color Test (26-09-2002) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "", "" }, - { "c225379e7c4fb6f886ef9c8c522275b4", "Video Mania", "", "Frostbite (1983) (Video Mania)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c225abfb584960efe1f359fc94b73379", "", "", "Joustpong (21-09-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2410d03820e0ff0a449fa6170f51211", "", "", "Pac-Man (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c246e05b52f68ab2e9aee40f278cd158", "Thomas Jentzsch", "", "Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "c2778507b83d9540e9be5713758ff945", "", "", "Island Flyer Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c28b29764c2338b0cf95537cc9aad8c9", "", "", "Multi-Color Demo 4 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c29d17eef6b0784db4586c12cb5fd454", "Jone Yuan Telephonic Enterprise Co", "", "River Raid (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c29f8db680990cb45ef7fef6ab57a2c2", "Parker Brothers, Mike Brodie", "PB5320", "Super Cobra (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2a37f1c7603c5fd97df47d6c562abfa", "Roger Williams", "", "Bar-Score Demo (2001) (Roger Williams)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2b5c50ccb59816867036d7cf730bf75", "Salu - Avantgarde Software, Michael Buetepage", "460741", "Ghostbusters II (1992) (Salu) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c2bcd8f2378c3779067f3a551f662bb7", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2c7a11717e255593e54d0acaf653ee5", "", "", "Chopper Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2fbef02b6eea37d8df3e91107f89950", "Champ Games", "", "Conquest Of Mars (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c31a17942d162b80962cb1f7571cd1d5", "Home Vision - Gem International Corp.", "VCS83112", "Sky Alien (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3205e3707f646e1a106e09c5c49c1bf", "", "", "Unknown Title (bin00003 (200206)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3472fa98c3b452fa2fd37d1c219fb6f", "Atari, Carla Meninsky - Sears", "CX2637 - 49-75158", "Dodge 'Em (1980) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c370c3268ad95b3266d6e36ff23d1f0c", "Atari, Alan Miller", "CX2641, CX2641P", "Surround (1977) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3a9550f6345f4c25b372c42dc865703", "Atari, Robert C. Polaro", "CX2663", "Road Runner (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3aeb796fdaf9429e8cd6af6346f337e", "", "", "If It's Not One Thing It's Another (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3bbc673acf2701b5275e85d9372facf", "Atari, Robert C. Polaro", "CX26157", "Stunt Cycle (07-21-1980) (Atari) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3e4aa718f46291311f1cce53e6ccd79", "", "", "Hangman Ghost 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3ef5c4653212088eda54dc91d787870", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3f53993ade534b0982ca3a286c85bb5", "", "", "Full Screen Bitmap Drawing System (12-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4060a31d61ba857e756430a0a15ed2e", "Thomas Jentzsch", "", "Pick 'n Pile (2003) (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "25", "220", "YES", "" }, - { "c41e7735f6701dd50e84ee71d3ed1d8f", "Dynacom", "", "Spider Fighter (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "c43bd363e1f128e73ba5f0380b6fd7e3", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c446288fe62c0c2737639fd788ae4a21", "", "", "Mark's Sound Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c450a285daa7a3b65188c2c3cf04fb3e", "Wizard Video Games", "007", "Halloween (1983) (Wizard Video Games) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c469151655e333793472777052013f4f", "", "", "Base Attack (Unknown) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "c471b97446a85304bbac021c57c2cb49", "First Star Software, Alex Leavens, Shirley Ann Russell", "", "Boing! (1983) (First Star Software) (PAL)", "AKA Bubbles, Soap Suds, The Emphysema Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c47244f5557ae12c61e8e01c140e2173", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c473b222b7c5308d0773326416094272", "", "", "Star Fire (28-11-2002) (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c47b7389e76974fd0de3f088fea35576", "Funvision - Fund. International Co.", "", "Mighty Mouse (Funvision)", "AKA Gopher", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c482f8eebd45e0b8d479d9b71dd72bb8", "Retroactive", "", "Push (V0.03) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c49fe437800ad7fd9302f3a90a38fb7d", "Atari, Dan Hitchens", "CX2697, CX2697P", "Mario Bros. (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4b73c35bc2f54b66cd786f55b668a82", "Arcadia Corporation, Stephen Harland Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4bbbb0c8fe203cbd3be2e318e55bcc0", "", "", "Atlantis (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4bc8c2e130d76346ebf8eb544991b46", "Imagic", "", "Imagic Selector ROM (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4be1f4024fa8840fcfcbbbc9befff11", "", "", "Greeting Cart 2600 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4d888bcf532e7c9c5fdeafbb145266a", "", "", "Space Robot (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c504a71c411a601d1fc3173369cfdca4", "Retroactive", "", "Qb (V2.02) (Stella) (2001) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c5124e7d7a8c768e5a18bde8b54aeb1d", "Imagic, Rob Fulop", "720104-2A, IA3204P, EIX-008-04I", "Cosmic Ark (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c517144e3d3ac5c06f2f682ebf212dd7", "Tigervision - Teldec", "7-008 - 3.60006 VG", "Miner 2049er (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c529e63013698064149b9e0468afd941", "", "", "S.I.PLIX 2 (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "c52d9bbdc5530e1ef8e8ba7be692b01e", "Atari, Robert C. Polaro", "CX26130", "Holey Moley (02-29-1984) (Atari) (Prototype)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "c5301f549d0722049bb0add6b10d1e09", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "28", "", "", "" }, - { "c5387fc1aa71f11d2fa82459e189a5f0", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp) (PAL)", "AKA Weltraum-Tunnel", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "c541a5f6fc23b40a211196dd78233780", "Atari, Carla Meninsky - Sears", "CX2660 - 49-75187", "Star Raiders (1981) (Atari) (Prototype)", "Uses Joystick (left) and Keypad (right) Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "" }, - { "c54b4207ce1d4bf72fadbb1a805d4a39", "Billy Eno", "", "Sniper (Feb 30) (2001) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c569e57dca93d3bee115a49923057fd7", "", "", "Pac-Space (Pac-Man Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "c58708c09ccb61625cda9d15ddcd8be6", "SPIKE the Percussionist", "", "NOIZ Invaders (SPIKE) (2002) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5930d0e8cdae3e037349bfa08e871be", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c59633dbebd926c150fb6d30b0576405", "Telegames", "5861 A030", "Bogey Blaster (1989) (Telegames)", "AKA Air Raiders", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5a76bafc4676edb76e0126fb9f0fb2d", "Charles Morgan", "", "Zero Patrol (Charles Morgan) (Hack)", "Hack of Moon Patrol", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5bab953ac13dbb2cba03cd0684fb125", "SpiceWare - Darrell Spice Jr.", "", "Stay Frosty (SpiceWare)", "Part of Stella's Stocking 2007 Xmas compilation", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c5c7cc66febf2d4e743b4459de7ed868", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1983) (Atari) (PAL) [a]", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5d2834bf98e90245e545573eb7e6bbc", "CCE", "", "Snoopy and the Red Baron (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5dd8399257d8862f3952be75c23e0eb", "Atari - GCC", "CX2680", "RealSports Tennis (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5fe45f2734afd47e27ca3b04a90213c", "Atari, Brad Stewart", "CX2622, CX2622P", "Breakout (1978) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "c63a98ca404aa5ee9fcff1de488c3f43", "Atari", "CX26145", "Venture (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c6556e082aac04260596b4045bc122de", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6688781f4ab844852f4e3352772289b", "Atari, Tod Frye", "CX2695", "Xevious (08-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c67ff409f28f44883bd5251cea79727d", "", "", "Gunfight 2600 - Music & Bugfixes 1 (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c689148ad9275667924ab334107b517e", "Jone Yuan Telephonic Enterprise Co", "", "Space Raid (Jone Yuan)", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c68a6bafb667bad2f6d020f879be1d11", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6ae21caceaad734987cb24243793bd5", "CCE", "", "Frostbite (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6c63da3bc2e47291f63280e057061d0", "128-in-1 Junior Console", "", "Human Cannonball (128-in-1 Junior Console) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6cedb25b7d390b580ea8edb614b168b", "", "", "Star Fire - Radar Completed (22-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6d48c6ae6461e0e82753540a985ac9e", "Ed Federmeyer", "", "Edtris (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6d7fe7a46dc46f962fe8413c6f53fc9", "Parker Brothers, Mark Lesser", "PB5950", "Lord of the Rings (1983) (Parker Bros) (Prototype) [a]", "Journey to Rivendell (The Lord of the Rings I)", "Prototype", "", "", "", "", "", "", "", "", "", "", "26", "", "", "" }, - { "c6db733e0b108c2580a1d65211f06dbf", "Atari, Eric Manghise, Joseph Tung", "CX2640", "RealSports Baseball (07-09-1982) (Atari) (Prototype)", "AKA Foxbat", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "c738fc3f5aae1e8f86f7249f6c82ac81", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) (16K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "c73ae5ba5a0a3f3ac77f0a9e14770e73", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger, The (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "c745487828a1a6a743488ecebc55ad44", "Rainbow Vision - Suntek", "SS-002", "Galactic (Rainbow Vision) (PAL)", "AKA The Challenge of.... Nexar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c74bfd02c7f1877bbe712c1da5c4c194", "Thomas Jentzsch", "", "River Raid Tanks (Thomas Jentzsch) (Hack)", "Hack of River Raid", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7600d72247c5dfa1ec1a88d23e6c85e", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (1 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "c77c35a6fc3c0f12bf9e8bae48cba54b", "Xonox - K-Tel Software, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "c77d3b47f2293e69419b92522c6f6647", "Panda", "101", "Tank Brigade (1983) (Panda)", "AKA Phantom Tank", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "c7900a7fe95a47eef3b325072ad2c232", "Larry Petit", "", "Super Congo Bongo (2003) (Larry Petit) (Hack)", "Hack of Bongo", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7d5819b26b480a49eb26aeb63cc831e", "Bit Corporation", "PGP210", "Ice Hockey (4 Game in One Light Green) (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7e43ad79c5e5c029d9f5ffde23e32cf", "", "", "PAL-NTSC Detector (15-11-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7eab66576696e11e3c11ffff92e13cc", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7f13ef38f61ee2367ada94fdcc6d206", "Parker Brothers, Joe Gaucher", "PB5370", "Popeye (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c82ec00335cbb4b74494aecf31608fa1", "CCE", "", "E.T. - The Extra-Terrestrial (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c830f6ae7ee58bcc2a6712fb33e92d55", "Atari, Carla Meninsky", "CX2687", "Tempest (01-05-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c866c995c0d2ca7d017fef0fc0c2e268", "Retroactive", "", "Qb (2.00) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c880c659cdc0f84c4a66bc818f89618e", "Thomas Jentzsch", "", "Open Sesame (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "20", "254", "YES", "" }, - { "c8c7da12f087e8d16d3e6a21b371a5d3", "", "", "Demo Image Series #9 - Genius (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c8fa5d69d9e555eb16068ef87b1c9c45", "Atari", "CX26144", "Donkey Kong Junior (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9196e28367e46f8a55e04c27743148f", "Atari", "CX26163P", "Stampede (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c92cfa54b5d022637fdcbdc1ef640d82", "Retroactive", "", "Qb (V2.05) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c9b7afad3bfd922e006a6bfc1d4f3fe7", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9c25fc536de9a7cdc5b9a916c459110", "Activision, Mike Lorenzen", "AX-023", "Oink! (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9d02d3cfeef8b48fb71cb4520a4aa84", "", "", "Euchre (More for less) (PAL) (22-08-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9e721eb29c940c2e743485b044c0a3f", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9f6e521a49a2d15dac56b6ddb3fb4c7", "Parker Brothers, Rex Bradford", "PB5000", "Star Wars - Jedi Arena (1983) (Parker Bros)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "", "30", "", "", "" }, - { "ca09fa7406b7d2aea10d969b6fc90195", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ca4f8c5b4d6fb9d608bb96bc7ebd26c7", "M Network, Hal Finney, Glenn Hightower, Peter Kaminski - INTV", "MT4317", "Adventures of TRON (1982) (M Network)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ca50cc4b21b0155255e066fcd6396331", "Suntek", "SS-031", "UFO Patrol (Suntek) (PAL)", "AKA X'Mission", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ca53fc8fd8b3c4a7df89ac86b222eba0", "CCE", "C-812", "Pac Man (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "ca54de69f7cdf4d7996e86f347129892", "PlayAround - J.H.M.", "201", "Philly Flasher (1982) (PlayAround)", "Uses the Paddle Controllers, AKA Beat 'Em & Eat 'Em", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "ca7aaebd861a9ef47967d31c5a6c4555", "Atari", "CX26163P", "Homerun (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "ca7abc774a2fa95014688bc0849eee47", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ca7f166a94eed1a349dec6d6a358bcad", "Activision, Alan Miller - Ariola", "EAG-007, EAG-007-04I, PAG-007 - 711 007-720", "Tennis (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cad982c9b45bc5eff34e4ea982d5f1ca", "", "", "Song (17-02-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cae8f83c06831ec7bb6a3c07e98e9342", "Colin Hughes", "", "Tetris 2600 (Colin Hughes) [o1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cb24210dc86d92df97b38cf2a51782da", "Video Gems", "VG-01", "Missile Control (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb4a7b507372c24f8b9390d22d54a918", "ITT Family Games", "554-37 338", "Peter Penguin (1983) (ITT Family Games) (PAL)", "AKA Frisco (Pumuckl-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb8399dc0d409ff1f531ef86b3b34953", "", "", "Demo Image Series #12 - Luigi And Mario (01-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb9626517b440f099c0b6b27ca65142c", "Atari, Larry Kaplan - Sears", "CX2664 - 6-99818", "Brain Games (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "cb96b0cf90ab7777a2f6f05e8ad3f694", "Silvio Mogno", "", "Rainbow Invaders", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb9b2e9806a7fbab3d819cfe15f0f05a", "Parker Brothers, Ray Miller, Todd Marshall", "931513", "Star Wars - Death Star Battle (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cba56e939252b05df7b7de87307d12ca", "", "", "Playfield Text Demo (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbad928e10aeee848786cc55394fb692", "", "", "Fu Kung! (V0.06a Cuttle Cart Compatible) (15-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbb0ee17c1308148823cc6da85bff25c", "", "", "Rotating Colors Demo 1 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbc373fbcb1653b4c56bfabba33ea50d", "CCE", "", "Super Voleyball (CCE)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbced209dd0575a27212d3eee6aee3bc", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cbd981a23c592fb9ab979223bb368cd5", "Atari, Carla Meninsky - Sears", "CX2660 - 49-75187", "Star Raiders (1982) (Atari)", "Uses Joystick (left) and Keypad (right) Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "" }, - { "cbe5a166550a8129a5e6d374901dffad", "Atari, Carla Meninsky - Sears", "CX2610 - 49-75127", "Warlords (1981) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "cbeafd37f15e0dddb0540dbe15c545a4", "", "", "Black and White Fast Scolling Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc03c68b8348b62331964d7a3dbec381", "Jone Yuan Telephonic Enterprise Co", "", "Marauder (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc12581e079cd18330a89902625b8347", "Dave Neuman", "", "Space Battle (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc1727dadf82e8fbf152e47d7e88d6c9", "", "", "Death Derby (v0004) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc1939e4769d0c157ace326efcfdcf80", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (3 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc2973680c150886cce1ed8693c3aca2", "Quelle", "874.254 6", "Super-Cowboy beim Rodeo (1983) (Quelle) (PAL) (4K)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc3d942c6958bd16b1c602623f59e6e1", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc7138202cd8f6776212ebfc3a820ecc", "Atari, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (03-30-1983) (Atari) (Prototype)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "cc724ebe74a109e39c0b2784ddc980ca", "Atari, Jerome Domurat, Dave Staugas", "CX2682", "Krull (05-27-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc74ddb45d7bc4d04c2e6f1907416699", "", "", "Colour Display Programme (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cca33ae30a58f39e3fc5d80f94dc0362", "", "", "Okie Dokie (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ccb56107ff0492232065b85493daa635", "Bit Corporation", "PG206 [demonstration cartridge]", "Bobby Is Going Home (1983) (BitCorp) (PAL) [demo cart]", "AKA Bobby geht Heim", "", "", "", "", "", "", "", "", "", "", "", "40", "", "", "" }, - { "ccb5fa954fb76f09caae9a8c66462190", "Answer Software Corporation - TY Associates", "ASC1001", "Malagai (1983) (Answer Software)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ccb807eb79b0ed0f5fdc460445ef703a", "", "", "Superman (Stunt_Cycle_Rules!) (Hack)", "Hack of Superman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ccbd36746ed4525821a8083b0d6d2c2c", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [no copyright]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cccfe9e9a11b1dad04beba46eefb7351", "", "", "Poker Squares (V0.25) (PAL) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ccd6ce508eee4b3fca67212833edcd85", "Quelle", "746422", "Hot Wave (Double-Game Package) (1983) (Quelle) (PAL)", "AKA Ram It", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd032ab6764b55438a7b0bfb5e78595a", "", "", "Hangman Pac-Man 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd139ae6d09f3665ad09eb79da3f9e49", "Eric Mooney", "", "Invaders by Erik Mooney (4-24-97) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd34b3b3ef9e485201e841ba71beb253", "Bradford W. Mott", "", "Hit HMOVE At Various Cycles After WSYNC Test (Bradford W. Mott) (1998) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd38ad19f51b1048d8e5e99c86a2a655", "", "", "Demo Image Series #5 - Flag (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd399bc422992a361ba932cc50f48b65", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (Preview) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd3e26786136a4692fd2cb2dfbc1927e", "", "", "Multiple Moving Objects Demo 2 (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd4423bd9f0763409bae9111f888f7c2", "Jone Yuan Telephonic Enterprise Co", "", "River Raid (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd4ded1ede63c4dd09f3dd01bda7458c", "Future Video Games", "", "Laser Gate (Future Video Games) (PAL)", "AKA Laser Gates", "", "", "", "", "", "", "", "", "", "", "", "14", "", "", "" }, - { "cd568d6acb2f14477ebf7e59fb382292", "Videospielkassette - Ariola", "PGP235", "Fussball (Ariola) (PAL)", "AKA International Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd5af682685cfecbc25a983e16b9d833", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (05-08-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd88ef1736497288c4533bcca339f881", "Sega - Teldec", "005-01", "Buck Rogers - Planet of Zoom (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "YES", "" }, - { "cd8fa2e9f6255ef3d3b9b5a4f24a54f7", "", "", "Daredevil (V2) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd98be8a48ebf610c9609a688b9c57f2", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "4 AR-4102", "Suicide Mission (1982) (Arcadia) (Prototype)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cd9fea12051e414a6dfe17052067da8e", "Paul Slocum", "", "Marble Craze Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cda38714267978b9a8b0b24bee3529ae", "", "", "Space Instigators (V1.6) (17-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cdb81bf33d830ee4ee0606ee99e84dba", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "cdc1a5c61d7488eadc9aba36166b253d", "Retroactive", "", "Qb (V0.12) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cddabfd68363a76cd30bee4e8094c646", "Computer Magic - CommaVid, John Bronstein", "CM-001", "MagiCard (1981) (CommaVid)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "24", "", "", "" }, - { "ce17325834bf8b0a0d0d8de08478d436", "", "", "Boring Freeway (Hack)", "Hack of Freeway", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ce243747bf34a2de366f846b3f4ca772", "Home Vision - Gem International Corp.", "", "Jacky Jump (1983) (Home Vision) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "39", "256", "", "" }, - { "ce4bbe11d682c15a490ae15a4a8716cf", "", "", "Okie Dokie (Older) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ce5cc62608be2cd3ed8abd844efb8919", "Atari, Robert C. Polaro", "CX2663", "Road Runner (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "ce64812eb83c95723b04fb56d816910b", "Retroactive", "", "Qb (V2.04) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ce6c4270f605ad3ce5e82678b0fc71f8", "", "", "Vertical Rainbow Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ce89529d6e98a13ddf3d84827bbdfe68", "", "", "Kung Fu Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ce904c0ae58d36d085cd506989116b0b", "Telegames", "5687 A279", "International Soccer (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cea9f72036dc6f7af5eff52459066290", "Retroactive", "", "Qb (2.07) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cedbd67d1ff321c996051eec843f8716", "Ultravision", "1044", "Karate (1982) (Ultravision)", "", "", "", "", "", "", "", "", "", "", "", "", "25", "", "", "" }, - { "cef01595000627ee50863d4290372c27", "", "", "Many Blue Bars and Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cef2287d5fd80216b2200fb2ef1adfa8", "Milton Bradley Company", "4363", "Spitfire Attack (1983) (Milton Bradley)", "AKA Flight Commander)", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "cf0c593c563c84fdaf0f741adb367445", "Retroactive", "", "Qb (V0.05) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cf3a9ada2692bb42f81192897752b912", "", "", "Air Raiders (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cf3c2725f736d4bcb84ad6f42de62a41", "Rainbow Vision - Suntek", "SS-009", "Bermuda, The (Rainbow Vision) (PAL) [a]", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cf507910d6e74568a68ac949537bccf9", "Sega, Jeff Lorenz", "003-01", "Thunderground (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cf63ffac9da89ef09c6c973083061a47", "CCE", "C-859", "MASH (1983) (CCE)", "AKA M.A.S.H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cf9069f92a43f719974ee712c50cd932", "Video Gems", "VG-04", "Mission Survive (1983) (Video Gems) (PAL)", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "YES", "" }, - { "cfad2b9ca8b8fec7fb1611d656cc765b", "Bit Corporation", "PG207", "Mission 3,000 A.D. (1983) (BitCorp) (PAL) [demo cart]", "demonstration cartridge", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cfb3260c603b0341d49ddfc94051ec10", "Dactari - Milmar", "", "Boxing (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfc226d04d7490b69e155abd7741e98c", "Atari, Matthew L. Hubbard", "CX26159", "Double Dunk (1989) (Atari) (PAL)", "AKA Super Basketball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfd6a8b23d12b0462baf6a05ef347cd8", "Activision, Larry Kaplan", "AX-006", "Bridge (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfdb4d0427a1ea8085c6bc6eb90259d8", "", "", "Gunfight 2600 - Release Candidate (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfe2185f84ce8501933beb5c5e1fd053", "", "", "Football (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfe62ed7125ff9fae99b4c8a367c0399", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfee10bd7119f10b136921ced2ee8972", "", "", "Space Instigators (V1.8) (19-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfef1a2d1f6a5ee7a5e1f43f3056f112", "", "", "Skeleton+ (05-05-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cff1e9170bdbc29859b815203edf18fa", "Retroactive", "", "Push (V0.01) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cff578e5c60de8caecbee7f2c9bbb57b", "George Veeder", "", "Suicide Adventure (George Veeder) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cff9950d4e650094f65f40d179a9882d", "Paul Slocum", "", "Mr. Roboto (Paul Slocum) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d00f6f8ba89559e4b20972a478fc0370", "Spiceware", "SW-01", "Medieval Mayhem (PAL)", "", "Homebrew", "STEREO", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "d010e3dfe7366e47561c088079a59439", "Retroactive", "", "Qb (V0.10) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d026716b3c5be2c951cc4c064317c524", "", "", "Fu Kung! (V0.06) (14-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0498baca989e792db4b8270a02b9624", "", "", "Pac Ghost Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d05e371765929bf5d39c91c6ea189bec", "", "", "Death Derby (v0005 New Build) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d071d2ec86b9d52b585cc0382480b351", "UA Limited", "", "Cat Trax (1983) (UA Limited) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, - { "d078674afdf24a4547b4b32890fdc614", "Jone Yuan Telephonic Enterprise Co", "", "Laser Blast (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d078d25873c5b99f78fa267245a2af02", "Sega, Steve Beck, Phat Ho - Beck-Tech", "006-01", "Congo Bongo (1983) (Sega) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "d08fccfbebaa531c4a4fa7359393a0a9", "Activision, David Crane", "", "Venetian Blinds Demo (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d090836f0a4ea8db9ac7abb7d6adf61e", "Hozer Video Games", "", "Yahtzee (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d09935802d6760ae58253685ff649268", "Telesys, Don 'Donyo' Ruffcorn", "1006", "Demolition Herby (1983) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d09a7504ee8c8717ac3e24d263e7814d", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d09f1830fb316515b90694c45728d702", "Imagic, Brad Stewart", "720105-1A, IA3400", "Fire Fighter (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0a379946ed77b1b126230ca68461333", "Ataripoll", "", "Atari Invaders (Ataripoll) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0af33865512e9b6900714c26db5fa23", "Telegames", "", "Armor Ambush (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0b26e908370683ad99bc6b52137a784", "Apollo - Games by Apollo, Ernie Runyon, Ed Salvo - RCA Video Jeux", "AP-2004", "Lost Luggage (1981) (Apollo) (PAL)", "AKA La valise piegee", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0b9df57bfea66378c0418ec68cfe37f", "20th Century Fox Video Games - Sirius, Grady Ward", "11002", "Beany Bopper (1982) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0b9f705aa5f61f47a748a66009ae2d2", "", "", "Synthcart (14-01-2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "YES", "" }, - { "d0cb28e1b7bd6c7f683a0917b59f707e", "Atari, Gary Palmer", "CX2661P", "Fun with Numbers (1980) (Atari) (PAL) (4K)", "AKA Basic Math", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0cdafcb000b9ae04ac465f17788ad11", "Quelle", "732.273 8 - 600273, 781644", "Lilly Adventure (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0e9beb2347595c6c7d158e9d83d2da8", "Retroactive", "", "Qb (2.00) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d100b11be34a1e5b7832b1b53f711497", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d170317ae4c7d997a989c7d6567c2840", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d175258b2973b917a05b46df4e1cf15d", "Suntek", "SS-032", "Walker (Suntek) (PAL) [a]", "AKA Clown Down Town", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "d17a671029b1532b197defca5f3649a7", "Hozer Video Games", "", "Gunfight 2600 - Limit broken again! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d17a8c440d6be79fae393a4b46661164", "", "", "Warring Worms (Beta 3) (2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1a1841b7f2007a24439ac248374630a", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1a9478b99d6a55e13a9fd4262da7cd4", "U.S. Games Corporation, Garry Kitchen - Vidtec", "VC1001", "Space Jockey (1982) (U.S. Games) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1b4075925e8d3031a7616d2f02fdd1f", "", "", "Demo Image Series #7 - Two Marios (27-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1c3520b57c348bc21d543699bc88e7e", "Gameworld", "133-002", "Warplock (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "YES", "" }, - { "d1d704a7146e95709b57b6d4cac3f788", "Atari, Warren Robinett", "CX26163P", "Slot Racers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d20e61c86ed729780feca162166912ca", "Supergame", "32", "Pitfall (1984) (Supergame)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d223bc6f13358642f02ddacfaf4a90c9", "Rainbow Vision - Suntek", "SS-003", "Pac-Kong (Rainbow Vision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d245e2f27c84016041e9496b66b722fe", "", "", "Gunfight 2600 - The Final Kernel (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d25018349c544320bf3fd5092ee072bc", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "d28afe0517a046265c418181fa9dd9a1", "", "", "Dodge 'Em (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2901c34bb6496bb96c7bc78a9e6142a", "Greg Zumwalt", "", "Fish Revenge (2003) (Greg Zumwalt) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c305a443dfc49e8430964d7c1bd1b7", "", "", "Star Fire - Advice on radar needed (16-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c4f8a4a98a905a9deef3ba7380ed64", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1001", "Sorcerer (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c8e6aa8172b16c8aa9aae739ac9c5e", "Activision, David Crane", "08-08-1980", "Laser Blast (08-08-1980) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c957dd7746521b51bb09fde25c5774", "Eckhard Stolberg", "", "Cubis (6K) (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2d8c4f1ea7f347c8bcc7d24f45aa338", "", "", "20 Sprites at Once Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2deddb77c8b823e4be9c57cb3c69adc", "Canal 3 - Intellivision", "C 3007", "Snoopy and the Red Baron (Canal 3)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2f713c78a9ebba9da6d10aeefc6f20f", "Digivision", "", "Enduro (Digivision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d3171407c3a8bb401a3a62eb578f48fb", "ZiMAG - Emag - Vidco", "GN-080", "Spinning Fireball (1983) (ZiMAG) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d326db524d93fa2897ab69c42d6fb698", "Parker Brothers, Mike Brodie", "931505", "Super Cobra (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d339b95f273f8c3550dc4daa67a4aa94", "", "", "Laser Blast (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d341d39774277cee6a1d378a013f92ac", "Xonox, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "d3423d7600879174c038f53e5ebbf9d3", "U.S. Games Corporation", "VC2005", "Piece o' Cake (1982) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "d3456b4cf1bd1a7b8fb907af1a80ee15", "Avalon Hill, Duncan Scott", "5003002", "Wall Ball (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d34b933660e29c0a0a04004f15d7e160", "", "", "Multi-Color Demo 5 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d36308387241e98f813646f346e7f9f7", "King Atari", "", "Ghostbuster 2 (King Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d39e29b03af3c28641084dd1528aae05", "Funvision - Fund. Int'l Co.", "", "Spider Monster (1982) (Funvision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d3bb42228a6cd452c111c1932503cc03", "UA Limited", "", "Funky Fish (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "38", "", "YES", "" }, - { "d44d90e7c389165f5034b5844077777f", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d45bf71871b196022829aa3b96bfcfd4", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d45ebf130ed9070ea8ebd56176e48a38", "Sega", "001-01", "Tac-Scan (1982) (Sega)", "Uses the Paddle Controllers (right only)", "", "", "", "", "", "", "YES", "PADDLES", "PADDLES", "YES", "", "", "215", "YES", "" }, - { "d47387658ed450db77c3f189b969cc00", "PlayAround - J.H.M.", "206", "Westward Ho (1982) (PlayAround) (PAL)", "AKA Custer's Revenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4806775693fcaaa24cf00fc00edcdf3", "Atari, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (1987) (Atari) (PAL)", "AKA Nile Flyer, Sphinx", "", "", "", "", "", "", "", "", "", "", "PAL", "22", "", "", "" }, - { "d483f65468d9a265661917bae1a54f3e", "Joe Grand", "", "SCSIcide Pre-release 3 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4942f4b55313ff269488527d84ce35c", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675, CX2675P", "Ms. Pac-Man (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d49aff83f77a1b9041ad7185df3c2277", "", "", "Space Treat (60% complete) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4aa89e96d2902692f5c45f36903d336", "", "", "Euchre (NTSC) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4c590ccfb611a73b3331359700c01a3", "", "", "Sprite Movement Demo 2 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d541b20eae221a8ee321375e5971e766", "Arcadia Corporation, Stephen Harland Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5618464dbdc2981f6aa8b955828eeb4", "CCE", "C-829", "Megamania (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d563ba38151b8204c9f5c9f58e781455", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d573089534ca596e64efef474be7b6bc", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL) [a]", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "d57913088e0c49ac3a716bf9837b284f", "Activision, Garry Kitchen", "EAZ-032", "Pressure Cooker (1983) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d57eb282d7540051bc9b5427cf966f03", "Atari Troll", "", "Custer's Viagra (Atari Troll) (Hack)", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "d597d35c6022c590d6e75e865738558a", "", "", "Sprite Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5aa7472e7f2cc17e893a1a36f8dadf0", "", "", "Overhead Adventure Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5c6b81212ad86fd9542a1fedaf57cae", "", "", "Sprite Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5d2d44fb73785996ccc24ae3a0f5cef", "Robby", "", "Grand Prix (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5e27051512c1e7445a9bf91501bda09", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5e5b3ec074fff8976017ef121d26129", "Star Game", "003", "River Raid (Star Game)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5f965c159e26a1fb49a22a47fbd1dd0", "Supergame", "", "River Raid II (Supergame)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d605ed12f4eaaaec3dcd5aa909a4bad7", "", "", "Chronocolor Frame Demo (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d61629bbbe035f45552e31cef7d591b2", "", "", "Atari Logo Demo (PD) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d62283aed0f4199adb2333de4c263e9c", "Atari, Alan J. Murphy, Nick 'Sandy Maiwald' Turner", "CX2615", "Demons to Diamonds (1982) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "", "", "", "", "" }, - { "d62d7d1a974c31c5803f96a8c1552510", "", "", "StarMaster (Unknown) (PAL)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d632b74fea533d593af82cf16e7c5e4a", "", "", "Fu Kung! (V0.13) (01-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d65028524761ef52fbbdebab46f79d0f", "CCE", "", "Galaxian (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d65900fefa7dc18ac3ad99c213e2fa4e", "", "", "Grid and Purple Dot Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d69559f9c9dc6ef528d841bf9d91b275", "Activision, Alan Miller", "AX-016", "StarMaster (1982) (Activision)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6a44277c3eb4f9d039185e0ecf7bfa6", "", "", "Trick (1997) (Eckhard Stolberg)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6acff6aed0f04690fe4024d58ff4ce3", "Spectravision, Spectravideo - Quelle", "SA-202 - 412.851 8", "Planet Patrol (1982) (Spectravision) (PAL) [different spaceship]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6b8beeb05e5b730084d4b8f381bbf8d", "", "", "Game Select (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6d1ddd21e9d17ea5f325fa09305069c", "Funvision - Fund. International Co.", "", "Time Warp (1982) (Funvision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6d5dd8fd322d3cf874e651e7b6c1657", "", "", "How to Draw a Playfield (1997) (Nick Bensema) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6dc9b4508da407e2437bfa4de53d1b2", "Bomb - Onbase", "CA283", "Z-Tack (1983) (Bomb) (PAL)", "AKA Base Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d726621c676552afa503b7942af5afa2", "Atari, Bob Whitehead", "CX26163P", "Blackjack (32 in 1) (1988) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "63", "", "", "" }, - { "d73ad614f1c2357997c88f37e75b18fe", "Puzzy - Bit Corporation", "PG202", "Space Tunnel (1982) (Puzzy) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d74a81fcd89c5cf0bd4c88eb207ebd62", "", "", "Poker Squares (V0.00a) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d763e3a9cdcdd56c715ec826106fab6a", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "d7759fa91902edd93f1568a37dc70cdb", "Atari, Robert C. Polaro", "CX26157", "Stunt Cycle (1980) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d782543818b6320e4f60d77da2b596de", "Atari", "CX26163P", "Fishing Derby (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d787ec6785b0ccfbd844c7866db9667d", "Retroactive", "", "Qb (V0.04) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d7891b0faa4c7f764482762d0ed427a5", "", "", "Bars and Text Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d79df06894e3c1585a47c2807332b319", "", "", "Star Fire - Explosions! (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d7b58303ec8d8c4dbcbf54d3b9734c7e", "", "", "Paddle Demo (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "d7dd56677e4ec1e6627419478a4a9668", "", "", "Shadow Keep (Fixed) (04-03-2003) (Andrew Towers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d7f5bf138cfc7feab7b8ef1534c8b477", "", "", "Eric Bergstrom's KC-135 (Radar Map) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d816fea559b47f9a672604df06f9d2e3", "Atari, Gary Palmer", "CX26163P", "Fun with Numbers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d81bb6965e6c99b3be99ffd8978740e4", "", "", "Gunfight 2600 - The Final Kernel Part 3 (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d82675ce67caf16afe5ed6b6fac8aa37", "", "", "Robot City (V0.23) (13-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8295eff5dcc43360afa87221ea6021f", "Spectravideo", "SA-212", "Mangia' (1983) (Spectravideo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d82c8a58098a6b46c5b81c16180354d1", "Dennis Debro", "", "Climber 5 (30-10-2002) (Dennis Debro) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "d84cda16d9303a7e2a658b168966c973", "", "", "Image - Clown (10-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d85f1e35c5445ac898746719a3d93f09", "Quelle", "731.503 9", "Tom's Eierjagd (1983) (Quelle) (PAL)", "AKA Play Farm", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d86deb100c6abed1588aa84b2f7b3a98", "Atari, Bob Whitehead - Sears", "CX2625 - 6-99827, 49-75114", "Football (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d88691c995008b9ab61a44bb686b32e4", "", "", "Warring Worms (07-02-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d89fedded0436fdeda7c3c37e2fb7cf1", "", "", "Surround (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8acaa980cda94b65066568dd04d9eb0", "CCE", "", "Sea Hunt (CCE)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8b2c81cea5af04f795eb3dc6573d72b", "", "", "Tunnel Demo 2 (27-03-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8df256c0d89e494a9fb3e9abb8e44ac", "Imagic, Michael Greene", "IA3312P", "No Escape! (1982) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8e4c8e2d210270cd1e0f6d1b4582b91", "Imagic, Mark Klein", "EIZ-003-04I", "Subterranea (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d90205e29bb73a4cdf28ea7662ba0c3c", "Thomas Jentzsch", "", "Boulderdash Demo (Brighter Version) (09-12-2002) (TJ)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d912312349d90e9d41a9db0d5cd3db70", "CCE", "C-818", "Star Voyager (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9548ad44e67edec202d1b8b325e5adf", "Apollo - Games by Apollo, Dan Oliver - RCA Video Jeux", "AP-2002", "Space Cavern (1981) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d97e3d0b4575ce0b9a6132e19cfeac6e", "Fabrizio Zavagli", "", "Space Treat (061002) (PD)", "Won't work with Stella < V1.2", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d97fd5e6e1daacd909559a71f189f14b", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (04-20-1983) (M Network) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9ab6b67a17da51e5ad13717e93fa2e2", "", "", "Turbo (Coleco) Prototype Fake v0.1 (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9b49f0678776e04916fa5478685a819", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9da2ae7c7894a29b43b3c6b79f3b7a2", "Atari, Rob Fulop", "CX2633, CX2633P", "Night Driver (1980) (Atari) (PAL) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "YES", "" }, - { "d9fbf1113114fb3a3c97550a0689f10f", "ZiMAG - Emag - Vidco", "713-111 - GN-050", "Pizza Chef (1983) (ZiMAG) (Prototype)", "AKA Pizza Time", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da0fb2a484d0d2d8f79d6e063c94063d", "", "", "Air Raiders (1982) (Unknown) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da4e3396aa2db3bd667f83a1cb9e4a36", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da5096000db5fdaa8d02db57d9367998", "Digitel", "", "River Raid (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da6465a34d2e44d26aa9a2a0cd1bce4d", "Absolute Entertainment, Alex DeMeo", "AG-041-04", "Title Match Pro Wrestling (1987) (Absolute) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da64f33d0521d5c9958e5d2d4434ff95", "", "", "Star Fire - Return of the Starfield (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da66d75e4b47fab99733529743f86f4f", "Digitel", "", "Chopper Command (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da732c57697ad7d7af414998fa527e75", "Atari, Glenn Axworthy", "CX26129", "Midnight Magic (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "da79aad11572c80a96e261e4ac6392d0", "Salu - Ubi Soft, Dennis M. Kiss", "460673", "Pick 'n' Pile (1990) (Salu) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "PAL", "38", "256", "YES", "" }, - { "da7a17dcdaa62d6971393c0a6faf202a", "", "", "Flag Capture (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dab844deed4c752632b5e786b0f47999", "", "", "Super Challenge Baseball (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dac38b4dd3da73bb7b2e9d70c61d2b7c", "", "", "Hangman Monkey Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dac5c0fe74531f077c105b396874a9f1", "Atari - GCC", "CX2680", "RealSports Tennis (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dac762e4d01d445bdef20b7771f6570e", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari) (4K) [a]", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "28", "", "", "" }, - { "dad2ab5f66f98674f12c92abcfbf3a20", "", "", "Blue and White Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "daeb54957875c50198a7e616f9cc8144", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11005", "Mega Force (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "daef7d8e5a09981c4aa81573d4dbb380", "Adam Thornton", "", "Lord of the Rings (Adam Thornton) (Hack)", "Hack of Dark Mage", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dafc3945677ccc322ce323d1e9930beb", "Atari", "", "A-Team (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db1753cc702c18d3917ec7f3b0e8659f", "", "", "Frame Counter 2 (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db339aea2b65b84c7cfe0eeab11e110a", "", "", "Chronocolor Frame Demo 2 (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db4eb44bc5d652d9192451383d3249fc", "CBS Electronics, E.F. Dreyer, Ed Salvo", "4L 2738 0000", "Mountain King (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "db5073bd75eb05f7d62a7268396d1e77", "Atari", "CX26163P", "Golf (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db76f7a0819659d9e585f2cdde9175c7", "Xonox", "99005, 6220, 6250", "Robin Hood (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "db80d8ef9087af4764236f7b5649fa12", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (1983) (Mattel) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db971b6afc9d243f614ebf380af0ac60", "Gammation, Robert L. Esken Jr.", "", "Gamma-Attack (1983) (Gammation)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dba2692a216cb6c262c78f8b111a813e", "", "", "Star Fire (08-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dba270850ae997969a18ee0001675821", "Greg Troutman", "", "Dark Mage (Greg Troutman) (PD) (4K)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dbabb80e92ff18d8eecf615c0539151e", "", "", "Sprite Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dbb10b904242fcfb8428f372e00c01af", "Atari, John Dunn", "CX2631, CX2631P", "Superman (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dbc7485ad5814d466de780a3e7ed3b46", "Kyle Pittman", "", "Pink Floyd (Kyle Pittman) (PD)", "Hack of Adventures of Tron (Mattel)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dbc8829ef6f12db8f463e30f60af209f", "Data Age", "DA1001", "Encounter at L-5 (1982) (Data Age)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "dbdaf82f4f0c415a94d1030271a9ef44", "CCE", "", "Kaboom! (CCE)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "dbdd21e1ee3d72119e8cd14d943c585b", "", "", "Slot Machine (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc13df8420ec69841a7c51e41b9fbba5", "Atari, Mimi Nyden, Steve Woita", "CX26132", "Garfield (06-21-1984) (Atari) (Prototype)", "AKA Garfield on the Run", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc33479d66615a3b09670775de4c2a38", "Suntek", "SS-033", "I.Q. Memory Teaser (Suntek) (PAL)", "AKA IQ 180", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc6aa0bb21a6e66e80e75ba5edc5c0dd", "", "", "Star Fire - Kernel Done (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc81c4805bf23959fcf2c649700b82bf", "Imagic, Michael Greene", "720055-2A, IA3312P", "No Escape! (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dca90ea1084a2fdbe300d7178ca1a138", "Imagic, Dennis Koble", "IA3000P", "Trick Shot (1982) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dca941dab5c6f859b71883b13ade9744", "", "", "Hangman Pac-Man Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dcba0e33aa4aed67630a4b292386f405", "Retroactive", "", "Qb (V2.08) (Half Speed Version) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dcc2956c7a39fdbf1e861fc5c595da0d", "M Network, David Rolfe - INTV", "MT5664", "Frogs and Flies (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dcec46a98f45b193f07239611eb878c2", "", "", "Bars and Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd08e18cfee87a0e7fc19a684b36e124", "Atari - GCC, Kevin Osborn", "CX2689, CX2689P", "Kangaroo (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd0cbe5351551a538414fb9e37fc56e8", "Xonox - K-Tel Software, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd10b5ee37fdbf909423f2998a1f3179", "", "", "Space Instigators (V1.9) (21-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd1422ffd538e2e33b339ebeef4f259d", "Atari, Tod Frye", "", "Red Vs. Blue (1981) (Atari) (Prototype)", "RealSports Football Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd17711a30ad60109c8beace0d4a76e8", "", "", "Karate (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "dd1ecb349691aa4805eb9835dc87c094", "", "", "Greeting Cart Original(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd4f4e0fbd81762533e39e6f5b55bb3a", "", "", "Turbo WIP (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd7598b8bcb81590428900f71b720efb", "Xonox - K-Tel Software", "99005, 6220, 6250", "Robin Hood (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "dd7884b4f93cab423ac471aa1935e3df", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dd8a2124d4eda200df715c698a6ea887", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (3 of 3) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd92d6ad50976f881d86b52d38616118", "SpkSoft", "", "River Raid (SpkSoft) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "10", "", "", "" }, - { "dda23757407c4e217f64962c87ad0c82", "Atari Freak 1", "", "Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack) [a]", "Hack of Pac-Man Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ddd1efc1862cd3eb3baf4cba81ff5050", "", "", "Max3 (2001) (Maxime Beauvais) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de0173ed6be9de6fd049803811e5f1a8", "Xonox - K-Tel Software, Anthony R. Henderson", "99008, 6240", "Motocross Racer (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de07e9cb43ad8d06a35f6506e22c62e9", "", "", "Oh No! (Version 4) (22-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de1a636d098349be11bbc2d090f4e9cf", "", "", "Pressure Gauge (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de1e9fb700baf8d2e5ae242bffe2dbda", "Activision, Mike Riedel", "EAK-043-04I", "Commando (1988) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de24f700fd28d5b8381de13abd091db9", "CCE", "", "Plaque Attack (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de29e46dbea003c3c09c892d668b9413", "CBS Electronics, Steve 'Jessica' Kitchen", "4L1717, 4L1718, 4L2277", "Carnival (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de3d0e37729d85afcb25a8d052a6e236", "Spectravision, Spectravideo", "SA-204", "Tapeworm (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "de4436eaa41e5d7b7609512632b90078", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de5aab22e5aba5edcb29a3e7491ff319", "Star Game", "001", "Donkey Kong (Star Game)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "de61a0b171e909a5a4cfcf81d146dbcb", "Rainbow Vision - Suntek", "SS-005", "Tom Boy (Rainbow Vision) (PAL)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de62f8a30298e2325249fe112ecb5c10", "CCE", "C-810", "Enduro (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de78b3a064d374390ac0710f95edde92", "Bomb - Onbase", "CA281", "Assault (1983) (Bomb)", "AKA Sky Alien", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de7a64108074098ba333cc0c70eef18a", "", "", "Nuts (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de7bca4e569ad9d3fd08ff1395e53d2d", "Thomas Jentzsch", "", "Thrust (V1.22) (2000) (TJ)", "Won't work with Stella < V1.2, supports Booster Grip", "New Release", "", "", "", "", "", "", "BOOSTERGRIP", "", "", "", "", "", "", "" }, - { "de8443ff47283e7b274a7838cb071fb6", "Atari, Tod Frye", "CX26122", "Sinistar (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dea0ade296f7093e71185e802b500db8", "CCE", "", "Fishing Derby (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "deb39482e77f984d4ce73be9fd8adabd", "Activision, David Lubar", "AK-048-04", "River Raid II (1988) (Activision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ded26e1cb17f875a9c17515c900f9933", "", "", "Space Treat (29-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df2745d585238780101df812d00b49f4", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp)", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, - { "df3e6a9b6927cf59b7afb626f6fd7eea", "", "", "Tuby Bird (208 in 1) (Unknown) (PAL)", "AKA Dolphin", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df40af244a8d68b492bfba9e97dea4d6", "Franklin Cruz", "", "Asteroids 2 (Franlin Cruz) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "df4aea767cdf6a3f138255092e84d713", "", "", "Image - Samantha Fox (Colour) (09-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df5cc5cccdc140eb7107f5b8adfacda1", "Cracker Jack Productions", "", "Lumberman (Cracker Jack) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "df62a658496ac98a3aa4a6ee5719c251", "Atari - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df6a28a89600affe36d94394ef597214", "Apollo - Games by Apollo, Dan Oliver", "AP-2002", "Space Cavern (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df6a46714960a3e39b57b3c3983801b5", "Puzzy - Bit Corporation", "PG201", "Sea Monster (1982) (Puzzy) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df753cb87d3af4d03f694ab848638108", "CBS Electronics, Bob Curtiss", "4L1845, 4L1852, 4L1853, 4L1854", "Solar Fox (1983) (CBS Electronics) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df94affaece8b9a02da82e971ea9c0ca", "", "", "Image - Nude2 (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df95e4af466c809619299f49ece92365", "Atari, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (06-03-1983) (Atari) (Prototype) (PAL)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "dfad86dd85a11c80259f3ddb6151f48f", "HES, David Lubar", "535", "My Golf (1990) (HES) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfafa3fa58f5cc3f0342cca475df6095", "", "", "Space Treat (V1.1 Beta) (24-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfc03ef371cf5163f54c50d8ee73c8cf", "Atari, Gary Palmer", "CX2661", "Fun with Numbers (1980) (Atari) (4K)", "AKA Basic Math", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfcdd6f593bb7b05dbc2e8e1fc6ee0de", "", "", "Gunfight 2600 - Scenarios complete (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfe034297200dff672df9533ed1449a9", "", "", "Sprite Movement Demo 1 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfe6aa7443bb813cefa35a4cf4887422", "", "", "This Planet Sucks (Greg Troutman) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, - { "dff33523ccd2fdc8912e84cab8e0d982", "", "", "Fu Kung! (V0.03) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e01e00504e6d4b88fa743c0bbe8a96e5", "", "", "Qb (Special Edition, some bugfixes) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e020f612255e266a8a6a9795a4df0c0f", "Telegames", "7062 A305", "Universal Chaos (1989) (Telegames) (PAL)", "AKA Targ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e02156294393818ff872d4314fc2f38e", "Sancho - Tang's Electronic Co.", "TEC005", "Dice Puzzle (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e0221c95aa657f5764eeeb64c8429258", "", "", "Tomb Raider 2600 [REV 02] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e03b0b091bea5bc9d3f14ee0221e714d", "CBS Electronics, Bob Curtiss", "4L1845, 4L1852, 4L1853, 4L1854", "Solar Fox (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e040df95a055b18ebdb094e904cb71b2", "", "", "Score Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0b24c3f40a46cda52e29835ab7ad660", "Quelle", "626.502 9 - 746381", "Top Gun (1983) (Quelle) (PAL)", "AKA Air Raiders", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0cf2dcc4c1348c468f5bb1e421c9164", "", "", "Invader Sprites in a Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0de3773f5b867795db557be7b8a703e", "", "", "Boulderdash (13 Blocks Wide) (02-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0eff071f578ecf19edc2ab276644e46", "", "", "Gas Gauge Demo (2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1029676edb3d35b76ca943da7434da8", "Atari, Robert C. Polaro, Alan J. Murphy - Sears", "CX2609 - 49-75186", "Defender (10-30-1981) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e10bf1af6bf3b4a253c5bef6577fe923", "Rob Kudla", "", "Space Invaders (1978) (Atari) [h1]", "Hack of Space Invaders (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e10d2c785aadb42c06390fae0d92f282", "Parker Brothers, Dawn Stockbridge", "PB5910", "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "25", "225", "", "" }, - { "e1143b72a30d4d3fee385eec38b4aa4d", "", "", "Word Zapper (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e12e32dee68201b6765fcd0ed54d6646", "Atari, Larry Kaplan", "CX2612, CX2612P", "Street Racer (1977) (Atari) (PAL)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "", "", "", "", "" }, - { "e13818a5c0cb2f84dd84368070e9f099", "CCE", "C-839", "Misterious Thief, A (1983) (CCE)", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "216", "YES", "" }, - { "e13c7627b2e136b9c449d9e8925b4547", "Atari, Alan Miller - Sears", "CX2624 - 6-99826, 49-75113", "Basketball (1978) (Atari) (4K)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1486c7822c07117b4f94a32e5ed68c1", "Coleco, Ed Temple", "", "Cabbage Patch Kids (06-14-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e14dc36b24fe22c04fa076e298f2e15f", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (16K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "e14feddeb82f5160ed5cf9ca4078e58d", "", "", "SpaceMaster X-7 (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e150f0d14f013a104b032305c0ce23ef", "Spectravision, Spectravideo", "SA-205", "China Syndrome (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e15b5525cf8f77297b322838df8d999c", "", "", "Sprite Demo 0 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e171558c51bb3bac97bfa79fa2c1a19c", "", "", "Warring Worms (Tim Strauss Edition) (20-12-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e17699a54c90f3a56ae4820f779f72c4", "Quelle", "465.302 8", "Vogel Flieh (1983) (Quelle) (PAL)", "AKA Dolphin", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e18abe87035379c56b435bfe8175077b", "Grimlock", "", "Rumble 2600 (Grimlock) (Hack)", "Hack of Mario Bros.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1a51690792838c5c687da80cd764d78", "20th Century Fox, John Russell", "", "Alligator People (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1b90f1e01b1a316d7bbf141525cc00e", "", "", "Sky Jinks (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1c8d02ca138083db868501360cf12a8", "", "", "Image - Baboon (10-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1d5c8213e82820128fa9c4775f1e166", "Jess Ragan", "", "Jungle King (2003) (Jess Ragan) (Hack)", "Hack of Jungle Hunt", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1d79e4e7c150f3861256c541ec715a1", "", "", "Space Jockey (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1e09e2f280e8e142121a377d0dc1b46", "Thomas Jentzsch", "", "Thrust (V1.21) (2000) (TJ)", "Won't work with Stella < V1.2, bugfixed", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1efe2ef7664bb6758b1a22ff8ea16a1", "Dynacom", "", "Enduro (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1f88da6da8a7d521ca1dcbf2bc6978b", "Activision, Bob Whitehead - Ariola", "EAG-005, PAG-005, EAG-005-04B - 711 005-715", "Skiing (1980) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e21ee3541ebd2c23e817ffb449939c37", "Tigervision, Karl T. Olinger", "7-001", "King Kong (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "e237ee91514d5ed535c95a14fc608c11", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2389c0be5b5b84e0d3ca36ec7e67514", "Retroactive", "", "Qb (V2.09) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e24d7d879281ffec0641e9c3f52e505a", "Parker Brothers, Mark Lesser", "PB5950", "Lord of the Rings (1983) (Parker Bros) (Prototype)", "Journey to Rivendell (The Lord of the Rings I)", "Prototype", "", "", "", "", "", "", "", "", "", "", "26", "", "", "" }, - { "e25e173740f7ecc0e23025445c4591f3", "Greg Zumwalt", "", "Comitoid (Greg Zumwalt)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e275cbe7d4e11e62c3bfcfb38fca3d49", "M Network, Ken Smith - INTV", "MT5658", "Super Challenge Football (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e28113d10c0c14cc3b5f430b0d142fcb", "CCE", "C-816", "Keystone Kappers (1983) (CCE) [a]", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2846af3e4d172b251ab77cbdd01761e", "Steve Engelhardt", "", "Adventure Plus (2003) (Steve Engelhardt) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2904748da63dfefc8816652b924b642", "Jone Yuan Telephonic Enterprise Co", "", "Catch Time (Jone Yuan)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2b682f6e6d76b35c180c7d847e93b4f", "", "", "Dodge Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2c1b60eaa8eda131632d73e4e0c146b", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2c89f270f72cd256ed667507fa038a2", "Arcadia Corporation, Stephen Harland Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2ca84a2bb63d1a210ebb659929747a9", "Telesys, Don 'Donyo' Ruffcorn", "1002", "Cosmic Creeps (1982) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e2eccbbe963f80f291cb1f18803bf557", "Atari, Joe Decuir, Steve Mayer, Larry Wagner", "CX26163P", "Combat (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "40", "256", "", "" }, - { "e314b42761cd13c03def744b4afc7b1b", "Activision, David Crane, Dan Kitchen", "AZ-108-04", "Ghostbusters (1985) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e34c236630c945089fcdef088c4b6e06", "Activision, David Crane - Ariola", "EAB-035-04 - 711 035-720", "Pitfall II (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3533684a7ef930a7fbd0c4dd8ec4847", "CCE", "C-856", "Pimball (1983) (CCE)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3600be9eb98146adafdc12d91323d0f", "Atari, Carol Shaw", "CX2618, CX2618P", "3-D Tic-Tac-Toe (1980) (Atari) (PAL)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "44", "", "", "" }, - { "e363e467f605537f3777ad33e74e113a", "Atari, Bob Whitehead - Sears", "CX2603 - 99803, 49-75601", "Star Ship (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e377c3af4f54a51b85efe37d4b7029e6", "20th Century Fox Video Games, Steve Beck", "11035", "Save the Whales (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "25", "215", "", "" }, - { "e37c8055d70979af354251ebe9f1b7dd", "HES", "", "Mega Funpak - Gorf, P. Patrol, Pacman, Skeet Shoot (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e38dc1f81a02e325562cd285123f579b", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e39843c56b7a4a08b18fa7949ec3ee6b", "", "", "Joshua Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e39a13b13dc82c5fdbfbbfd55ba1230e", "", "", "Analog Clock (Additional Frame Info) (V0.0) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3c0451d29dad724231bc5818ec4bae0", "", "", "Single-Scanline Positioning Demo 1 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3c35eac234537396a865d23bafb1c84", "TechnoVision", "TVS1001", "Nuts (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3ed4ba3361756970f076e46e9cad1d2", "", "", "Tennis (Unknown) (PAL) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e40a818dac4dd851f3b4aafbe2f1e0c1", "Atari, Bill Aspromonte, Dr. Lee Salk", "CX26137", "Peek-A-Boo (1984) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "e42b937c30c617241ca9e01e4510c3f6", "", "", "Pitfall! (No Walls Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e434c0e161dd3c3fb435eb6bad2e182c", "Atari - GCC, Mike Feinstein", "CX2681", "Battlezone (05-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e45449bde2f467a52da36ddd5b427d76", "", "", "Image - Qb Cover Art (09-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e49ac0ec879a0d7820bc2598fc2cfcd4", "CCE", "", "Kaboom! (CCE) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "e4a0b28befaaa2915df1fa01238b1e29", "", "", "Gunfight 2600 - Red River (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4afe157c09962cf39cdb25845d83d47", "Activision, David Crane - Ariola", "EAG-009, PAG-009 - 711 009-720", "Freeway (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4b12deaafd1dbf5ac31afe4b8e9c233", "Adam Thornton", "", "Lord of the Rings (Adam Thornton) (Hack) [a]", "Hack of Dark Mage", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e4bff1d5df70163c0428a1ead309c22d", "Atari, Robert C. Polaro, Alan J. Murphy", "CX2609, CX2609P", "Defender (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4c00beb17fdc5881757855f2838c816", "20th Century Fox Video Games - Sirius, Ed Hodapp", "11004", "Deadly Duck (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4c2077a18e3c27f4819aa7757903aa0", "", "", "Many Blue Bars Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4c666ca0c36928b95b13d33474dbb44", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "AR-4102", "Suicide Mission (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e4d41f2d59a56a9d917038682b8e0b8c", "Cody Pittman", "", "Kiss Meets Pacman (Cody Pittman) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "e4e9125a8741977583776729359614e1", "SnailSoft", "", "Comitoid beta 4 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e505bd8e59e31aaed20718d47b15c61b", "Funvision - Fund. Int'l Co.", "", "Space War (1982) (Funvision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e51030251e440cffaab1ac63438b44ae", "Parker Brothers, Joe Gaucher, Louis Marbel", "PB5110", "James Bond 007 (1983) (Parker Bros)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e51c23389e43ab328ccfb05be7d451da", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "e5359cbbbff9c6d7fe8aeff5fb471b46", "CCE", "C-849", "Boom Bang (1983) (CCE)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e549f1178e038fa88dc6d657dc441146", "Atari, Bob Whitehead - Sears", "CX2625 - 6-99827, 49-75114", "Football (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e556e07cc06c803f2955986f53ef63ed", "Coleco, Ed Temple", "2665", "Front Line (1984) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e558be88eef569f33716e8e330d2f5bc", "Shock Vision", "", "Keystone Kapers (Shock Vision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e56da674188ba2f02c7a0a343a01236f", "", "", "This Planet Sucks Demo 4 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5a6e0bb7d56e2f08b237e15076e5699", "", "", "Color Table Display Helper (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5d5085123a98c1e61818caa2971e999", "", "", "Euchre (PAL) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5d72ff8bab4450be57785cc9e83f3c0", "Telegames", "6082 A145", "Kung Fu Superkicks (1989) (Telegames) (PAL)", "AKA Chuck Norris Superkicks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5ecd78edd24326a968809decbc7b916", "Imagic, Bob Smith", "720020-1A, IA3611", "Cheese (Dragonfire Beta) (05-21-1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5f17b3e62a21d0df1ca9aee1aa8c7c5", "CommaVid, John Bronstein", "CM-003", "Cosmic Swarm (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e5f84930aa468db33c0d0f7b26dd8293", "CCE", "C-826", "Grand Prix (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5fcc62e1d73706be7b895e887e90f84", "", "", "Air-Sea Battle (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "40", "260", "", "" }, - { "e600f5e98a20fafa47676198efe6834d", "Parker Brothers", "PB5080", "Gyruss (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e609e8a007127b8fcff79ffc380da6b1", "", "", "Multi-Sprite Game V2.3 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e61210293b14c9c4ecc91705072c6a7e", "Gameworld", "133-005", "Bugs (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "e62e60a3e6cb5563f72982fcd83de25a", "Jone Yuan Telephonic Enterprise Co", "", "World End (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "e63a87c231ee9a506f9599aa4ef7dfb9", "Tigervision, Warren Schwader", "7-003", "Threshold (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "21", "214", "", "" }, - { "e63efdfda9a4003dcd77a854a781a06a", "Paul Slocum", "", "Combat Rock (PD) (Hack) [a]", "Hack of Combat", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e643aaec9a9e1c8ab7fe1eae90bc77d7", "Roger Williams", "", "Asymmetric Playfield (Roger Williams)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e64a8008812327853877a37befeb6465", "Answer Software Corporation - TY Associates", "ASC1002", "Gauntlet (1983) (Answer Software)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6508b878145187b87b9cded097293e7", "", "", "Oystron (V2.8) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e66e5af5dea661d58420088368e4ef0d", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6d5948f451a24994dfaaca51dfdb4e1", "Jone Yuan Telephonic Enterprise Co", "", "Football (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6de4ef9ab62e2196962aa6b0dedac59", "Imagic, Wilfredo 'Willy' Aguilar, Michael Becker, Dennis Koble", "720113-2A, 13206", "Solar Storm (1983) (Imagic) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "e6e5bb0e4f4350da573023256268313d", "Thomas Jentzsch", "", "Missile Control (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6f49a1053c79211f82be4d90dc9fe3d", "", "", "Gunfight 2600 - Little progress... (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e723ad8f406cb258b89681ef4cef0eff", "Thomas Jentzsch", "", "Sadoom (TJ) (PAL) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "PAL60", "", "", "", "" }, - { "e72eb8d4410152bdcb69e7fba327b420", "Atari, Douglas Neubauer", "CX26136", "Solaris (1986) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e72ee2d6e501f07ec5e8a0efbe520bee", "Imagic, Dave Johnson", "720119-2A, 13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e73838c43040bcbc83e4204a3e72eef4", "CCE", "", "Apples and Dolls (CCE)", "AKA Open Sesame", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e74022cfe31ec8908844718dfbdedf7a", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e77ec259e1387bc308b0534647a89198", "Parker Brothers, David Lamkins, Laura Nikolich", "931503", "Spider-Man (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e77f332b71f13884c84771e7a121182d", "Jone Yuan Telephonic Enterprise Co", "", "Hey! Stop! (Jone Yuan)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e784a9d26707cfcd170a4c1c60422a72", "Quelle", "147.443 6", "Gefecht im All (1983) (Quelle) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "64", "", "", "" }, - { "e7864caaf9ec49ed67b1904ce8602690", "", "", "Donkey Kong 2K3 Pic (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e7a758bb0b43d0f7004e92b9abf4bc83", "", "", "Troll's Adventure (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e7dd8c2e6c100044002c1086d02b366e", "Activision, Steve Cartwright - Ariola", "EAX-013, PAX-013, 711 013-720", "Barnstorming (1982) (Activision) (PAL)", "AKA Die tollkeuhnen Flieger", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e7f005ddb6902c648de098511f6ae2e5", "Spectravideo - Universum", "SV-010", "CompuMate (1983) (Spectravideo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e800e4aec7c6c54c9cf3db0d1d030058", "", "", "Qb (2.06) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e80a4026d29777c3c7993fbfaee8920f", "", "", "Frisco (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e823b13751e4388f1f2a375d3560a8d7", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger (Preview) (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "e847e1b57a704ad9f029cc2d564bde11", "", "", "Death Derby (v0007) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e879b7093ac4cfad74c88d636ca97d00", "", "", "Poker Squares (V0.0f) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e88340f5bd2f03e2e9ce5ecfa9c644f5", "", "", "Lock 'n' Chase (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e8a3473bf786cf796d1336d2d03a0008", "Parker Brothers, Wilfredo 'Willy' Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "", "Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e8aa36e3d49e9bfa654c25dcc19c74e6", "Atari, Joe Decuir, Steve Mayer, Larry Wagner", "CX2601, CX2601P", "Combat (1977) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "36", "260", "", "" }, - { "e8e7b9bdf4bf04930c2bcaa0278ee637", "", "", "Boring Taz (Hack)", "Hack of Taz", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e8f7679359c4f532f5d5e93af7d8a985", "", "", "Hangman Invader Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9034b41741dcee64ab6605aba9de455", "Digivision", "", "Phanton Tank (Digivision)", "AKA Phantom Tank", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "e908611d99890733be31733a979c62d8", "Atari, Dan Hitchens", "CX2697", "Mario Bros. (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e91d2ecf8803ae52b55bbf105af04d4b", "Atari, Howard Scott Warshaw", "CX2655, CX2655P", "Yars' Revenge (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e923001015bedd7901569f035d9c592c", "", "", "Adventure II (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e927ecf80f3784d745abd8368d78f2f3", "", "", "Space Instigators (V1.8) (19-10-2002) (CT) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e932f44fad2a66b6d5faec9addec208e", "", "", "Atari Logo Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e94632b0d863dd76459d689a9865bb33", "Jone Yuan Telephonic Enterprise Co", "", "Combat (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e957eb4612d6bd5940d3492dfa749668", "", "", "Tunnel Demo (27-03-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e959b5a2c882ccaacb43c32790957c2d", "", "", "Phantom II & Pirate (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e97eafd0635651d3999cece953c06bd5", "", "", "M.A.S.H (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9be3e8e4a7e73dd63ed4235a3a1a25f", "", "", "MMetall (Hack)", "Hack of Miniature Golf", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9c5d04643855949a23ff29349af74ea", "", "", "SCSIcide (Score Hack 2) (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9c71f8cdba6037521c9a3c70819d171", "Action Hi Tech - Hi-Score", "", "Bank Heist (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9cb18770a41a16de63b124c1e8bd493", "Parker Brothers, Joe Gaucher", "931519", "Popeye (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e9e646f730b8400cd5da08c849ef3e3b", "Tron", "", "Enduro (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9e6ad30549a6e2cd89fe93b7691d447", "Atari, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea38fcfc06ad87a0aed1a3d1588744e4", "Atari, Tod Frye", "CX26122", "Sinistar (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea6d40db5498d6386571a76df448aa4c", "", "", "Vertical Playfield Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea7e25ade3fe68f5b786ee0aa82b1fe5", "", "", "Galatic (208 in 1) (Unknown) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea832e2cb6aae6f525f07452c381fa48", "", "", "Polar to Cartesian and VV (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea86176b27ab0da8cce8f0179884bfaa", "", "", "Demo Image Series #10 - It's Art (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ead60451c28635b55ca8fea198444e16", "Sancho - Tang's Electronic Co.", "TEC004", "Nightmare (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "43", "256", "", "" }, - { "eada0dd61ce13f8317de774dc1e68604", "", "", "2600 Digital Clock (Demo 1) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eae0c06ee61c63b81cd016096fc901b0", "Joe Grand", "", "SCSIcide (v1.0) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eae6a5510055341d3abeb45667bb3e9b", "HES", "", "Wall Defender (HES) (PAL)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eaf744185d5e8def899950ba7c6e7bb5", "Atari", "CX26172", "Xenophobe (1990) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eafe8b40313a65792e88ff9f2fe2655c", "Eric Ball", "ELB004", "Skeleton+ (NTSC)", "Stereo sound", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb3d680699f8762f71f38e28e321234d", "", "", "Fu Kung! (V0.01) (08-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb4252faff7a4f2ba5284a98b8f78d1a", "", "", "John K Harvey's Equalizer (NTSC) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "eb46e99ec15858f8cd8c91cef384ce09", "Goliath - Hot Shot", "83-113", "Ground Zero (1983) (Goliath) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb503cc64c3560cd78b7051188b7ba56", "Star Game", "043", "Moto Laser (Star Game)", "AKA Mega Force", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb634650c3912132092b7aee540bbce3", "Atari, Eric Manghise, Joseph Tung", "CX2640", "RealSports Baseball (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "", "YES", "" }, - { "eb6d6e22a16f30687ade526d7a6f05c5", "Atari", "CX26150P", "Q-bert (1987) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb71743c6c7ccce5b108fad70a326ad9", "", "", "Euchre (25-11-2001) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb92193f06b645df0b2a15d077ce435f", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "AR-4102", "Suicide Mission (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "eb9712e423b57f0b07ccd315bb9abf61", "Retroactive", "", "Qb (V2.04) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "eb9f8b84c193d9d93a58fca112aa39ed", "", "", "Register Twiddler Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ebcb084a91d41865b2c1915779001ca7", "JVP", "", "Bob Is Going Home (JVP)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "31", "", "", "" }, - { "ebcbc8a181a738e13df6216e5c329230", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ebf2dff78a08733251bf3838f02f7938", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a1]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "220", "", "" }, - { "ebf9038e927e6a0db3e0d170c59911e6", "", "", "Pac-2600 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec26fdc87b1d35f1d60ea89cda4f4dd4", "", "", "Star Fire - Crash Scene (04-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec3beb6d8b5689e867bafb5d5f507491", "U.S. Games Corporation, Henry Will IV - Vidtec", "VC1003", "Word Zapper (1982) (U.S. Games)", "AKA Word Grabber", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec407a206b718a0a9f69b03e920a0185", "Quelle", "876.482 1", "Landung in der Normandie (1983) (Quelle) (PAL)", "AKA Commando Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec5c861b487a5075876ab01155e74c6c", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2001", "Spacechase (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ece463abde92e8b89bcd867ec71751b8", "Puzzy - Bit Corporation", "PG205", "Dancing Plate (1982) (Puzzy) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ece908d77ab944f7bac84322b9973549", "", "", "Tom Boy (Unknown) (PAL60)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "PAL60", "24", "", "", "" }, - { "ecf51385384b468834611d44a8429c03", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11105", "Mega Force (1982) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ecfa04523dde82fe42cdc7315a8f61b6", "Activision, David Crane - Ariola", "EAG-004, PAG-004 - 711 004-715", "Fishing Derby (1980) (Activision) (PAL) (4K)", "AKA Schneller als der Hai", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed014beeeb77dbb2bbcf9b5f6850b2f4", "", "", "Green Bar Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed0451010d022b96a464febcba70b9c4", "PlayAround - J.H.M.", "203", "Knight on the Town (1982) (PlayAround) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ed0ab909cf7b30aff6fc28c3a4660b8e", "Panda", "105", "Stunt Man (1983) (Panda)", "AKA Nightmare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed1306436ce237afc5a7ed3f77134202", "HES", "771-341", "2 Pak Special - Dolphin, Pigs 'n' Wolf (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed1492d4cafd7ebf064f0c933249f5b0", "CCE", "", "Video Cube (CCE)", "AKA Atari Video Cube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed1a784875538c7871d035b7a98c2433", "", "", "Save Our Ship (Unknown) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "ed2218b3075d15eaa34e3356025ccca3", "Atari, Richard Maurer", "CX2635, CX2635P", "Maze Craze (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, - { "ed5ccfc93ad4561075436ee42a15438a", "Atari", "CX2626, CX2626P", "Miniature Golf (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed8f319e82d355832195eb7715644795", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (8K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "ed9999911b406dc5f75c850dcc17bdf4", "", "", "Star Fire - Shootable (Friendlier Collision Detection) (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eddef10fdc0029301064115ae0cd41d4", "CCE", "", "Freeway (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ede7e8bf865b0afb4744f86d13624f9a", "", "", "Demo Image Series #2 - Clown (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "edf69b123e06eaf8663cc78d8aeba06e", "SpkSoft 98", "", "River Raid (SpkSoft 98) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "10", "", "", "" }, - { "ee28424af389a7f3672182009472500c", "Atari, Carol Shaw - Ralph Lauren", "", "Polo (1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee456542b93fa8d7e6a8c689b5a0413c", "", "", "Chronocolor Donkey Kong Clean (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee4c186123d31a279ed7a84d3578df23", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner", "CX2608", "Super Breakout (1982 - 1981) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "ee659ae50e9df886ac4f8d7ad10d046a", "Exus Corporation", "", "Video Reflex (1983) (Exus)", "AKA Foot Craz", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee6665683ebdb539e89ba620981cb0f6", "Coleco", "2658", "Berenstain Bears (1983) (Coleco)", "Uses the KidVid Controller", "Unbelievably Rare", "", "", "", "", "", "", "", "", "", "", "25", "", "", "" }, - { "ee67dc0b01746372d2b983d88f48e24f", "", "", "Scroller Demo (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee681f566aad6c07c61bbbfc66d74a27", "Activision", "", "Unknown Activision Game #1 (10-29-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee6cbedf6c0aac90faa0a8dbc093ffbe", "CCE", "", "My Golf (CCE) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee84bdc5dae268e227e407c7b5e6b6b7", "", "", "Marilyn Monroe Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee9caee4eb958284fb10c277b14537f1", "Carrere Video, Garry Kitchen - Teldec", "USC1001", "Space Jockey (1983) (Carrere Video) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "59", "", "", "" }, - { "eea0da9b987d661264cce69a7c13c3bd", "Coleco", "2454", "Zaxxon (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eeb92f3f46df841487d1504f2896d61a", "Cody Pittman", "", "Corys Adventure (Cody Pittman) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "eec61cc4250df70939d48fe02d7122ac", "Activision, Bob Whitehead - Ariola", "EAG-005, PAG-005, EAG-005-04B - 711 005-715", "Skiing (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eed9eaf1a0b6a2b9bc4c8032cb43e3fb", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (1990) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eee7695ae3eea7818321df0b790b31f3", "", "", "Sound Paddle V2 (Dennis Caswell & Jim Nitchals) (PD)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "ef263d40a23483ab339cac44d9515a56", "Thomas Jentzsch", "", "Fatal Run (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef3a4f64b6494ba770862768caf04b86", "Activision, Bob Whitehead", "AG-034-04", "Private Eye (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef5c02c95a1e7ed24f24193935755cd3", "Thomas Jentzsch", "", "Jammed Demo (1999) (Hozer Video Games)", "Won't work with Stella < V1.2", "New Release", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "ef60b06fddb675b0d783afbfa5fc5232", "", "", "Many Blue Bars and Text Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef66af190840871409fe1702d2483554", "Andrew Davie, Paul Slocum, Christopher Tumber", "", "DiscoTech (12-02-2003) (Andrew Davie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef71e9fb0d8d477226d8d42261fbf0a7", "Piero Cavina", "", "Multi-Sprite Demo V2.0 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef76ea05655a0b62cb1018c92b9b4b7d", "Gakken", "010", "Strategy X (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efa1098c7d091b940c2543abe372f036", "Scott Stilphen", "", "E.T. The Extra-Terrestrial (Scott Stilphen) (Hack)", "Hack of E.T. The Extra-Terrestrial", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efb47d70b2965ce689e2c5757616b286", "", "", "Time Test Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efd387430a35a659ff569a9a0ec22209", "Atari - GCC", "CX26118", "Millipede (1984) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efefc02bbc5258815457f7a5b8d8750a", "CBS Electronics, Richard K. Balaska Jr.", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efffafc17b7cb01b9ca35324aa767364", "", "", "Circus Atari (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f02ba8b5292bf3017d10553c9b7b2861", "Atari", "CX26172", "Xenophobe (1990) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f032b2f2d8323404a6b4541f92dd1825", "", "", "Many Blue Bars and Text Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f047df70d3d08e331122cd2de61d6af8", "Dave Neuman", "", "Space Battle (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f04ee80011d95798006378643650aaa7", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0536303f49006806bac3aec15738336", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (4 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0541d2f7cda5ec7bab6d62b6128b823", "Atari, Paul Donaldson", "", "Bionic Breakthrough (1984) (Atari) (Prototype)", "Uses Mindlink Controller (left only)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f060826626aac9e0d8cda0282f4b7fc3", "Atari, David Crane - Sears", "CX2605 - 6-99822, 49-75109", "Outlaw (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0631c6675033428238408885d7e4fde", "Paul Slocum", "", "Test Cart (2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f066bea7ab0a37b83c83c924a87c5b67", "", "", "Air Raiders (1982) (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0a6e99f5875891246c3dbecbf2d2cea", "Atari, James Andreasen - Sears", "CX2654 - 49-75141", "Haunted House (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0b7db930ca0e548c41a97160b9f6275", "Atari, Larry Wagner, Bob Whitehead - Sears", "CX2645 - 49-75181", "Video Chess (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0cacae1d1b79ee92f0dc035f42e0560", "", "", "Boring Donkey Kong (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0d393dbf4164a688b2346770c9bbd12", "", "", "Racquetball (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f0daaa966199ef2b49403e9a29d12c50", "", "", "Mr. Postman (Unknown)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0e0addc07971561ab80d9abe1b8d333", "Imagic, Rob Fulop", "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04", "Demon Attack (1982) (Imagic)", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f10e3f45fb01416c87e5835ab270b53a", "Video Game Cartridge - Ariola", "TP-607", "Ski Run (Ariola) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1127ade54037236e75a133b1dfc389d", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f12afbffa080dd3b2801dd14d4837cf6", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f137211537438b1fce3d811baef25457", "", "", "Incoming (02-10-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1489e27a4539a0c6c8529262f9f7e18", "Champ Games", "", "Lady Bug (PAL60)", "", "Homebrew", "", "", "", "A", "", "", "", "", "", "PAL60", "", "", "YES", "" }, - { "f14d5e96ec3380aef57a4b70132c6677", "Goliath", "6", "Spider Kong (1983) (Goliath) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1554569321dc933c87981cf5c239c43", "Atari, Glenn Axworthy", "CX26129", "Midnight Magic (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f16c709df0a6c52f47ff52b9d95b7d8d", "Atari, Alan Miller - Sears", "CX2662 - 6-99811", "Hangman (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1929bb9b5db22d98dd992aa3fe72920", "", "", "Cube Conquest (Improved Interlace) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f19aba18f86e415812480ad2be221425", "Chris Larkin", "", "Solaris Trainer (2002) (Chris Larkin) (Hack)", "Hack of Solaris", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1a0a23e6464d954e3a9579c4ccd01c8", "20th Century Fox, Douglas 'Dallas North' Neubauer", "11006", "Alien (1982) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f1b2ea568b3e156e3f2849dac83591f6", "", "", "Sprite Demo (1997) (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1b7edff81ceef5af7ae1fa76c8590fc", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1beca5a198cf08190487e5c27b8e540", "", "", "Fu Kung! (V0.16) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1e375d921858467166e53bcec05803f", "Jeffry Johnston", "", "Radial Pong - Version 3 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1eeeccc4bba6999345a2575ae96508e", "Video Gems", "VG-03", "Steeplechase (1983) (Video Gems) (PAL)", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "YES", "" }, - { "f1fe06ebe2900eac4cdd17799389a102", "Atari, Jim Huether", "CX26163P", "Sky Diver (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f20675c8b98518367b9f5b8ee6f7c8ea", "Atari", "CX26163P", "Stampede (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f20bd756f3990e06c492f53cd0168e68", "", "", "Skeleton+ (03-05-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f21813aa050437f0dbc8479864acec6d", "", "", "Sneak 'n Peek (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f240ba9f8092d2e8a4c7d82c554bf509", "Quelle", "463.860 7", "Strahlen der Teufelsvoegel (1983) (Quelle) (PAL)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f280976d69d6e27a48506bd6bad11dcd", "Atari, Larry Kaplan", "CX2664, CX2664P", "Brain Games (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "f283cc294ece520c2badf9da20cfc025", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (1983) (Atari) (PAL)", "Uses Kids/Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "f2d40c70cf3e1d03bc112796315888d9", "Atari, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari) (PAL)", "", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "f2d4d6187903cac2d5ea8ed90dad120d", "Digimax", "", "River Raid II (Digimax)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f2e4fb2d3600c0f76d05864e658cc57b", "", "", "Marble Craze (Kernel) (17-02-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f2f2cb35fdef063c966c1f5481050ea2", "", "", "Ram It (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f2f59629d7341c97644405daeac08845", "Jone Yuan Telephonic Enterprise Co", "", "Bobby Is Going Home (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "31", "", "", "" }, - { "f303630a2d7316787aecd67fff6b2e33", "AtariAge - Fred Quimby", "", "Gingerbread Man (Fred Quimby)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3213a8a702b0646d2eaf9ee0722b51c", "Atari, Carol Shaw - Sears", "CX2618 - 49-75123", "3-D Tic-Tac-Toe (1980) (Atari) (4K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f33f1d0f7819c74148dacb48cbf1c597", "Retroactive", "", "Qb (2.00) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f344ac1279152157d63e64aa39479599", "Tigervision", "7-012", "Espial (1984) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f34dd3b8156aaf113cb621b2e51d90b8", "Joe Grand", "", "SCSIcide Pre-release 5 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f34f08e5eb96e500e851a80be3277a56", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "f367e58667a30e7482175809e3cec4d4", "ZiMAG - Emag - Vidco", "708-111 - GN-040", "Cosmic Corridor (1983) (ZiMAG)", "AKA Space Tunnel", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "f38358cd8f5ecfedffd5aca1aa939f18", "Universal Gamex Corporation, Alan Roberts", "1005", "X-Man (1983) (Universal) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "f39e4bc99845edd8621b0f3c7b8c4fd9", "AtariAge", "", "Toyshop Trouble (AtariAge)", "F8 Emulator Release", "", "", "", "", "", "", "", "", "PADDLES", "", "", "33", "", "", "" }, - { "f3c431930e035a457fe370ed4d230659", "", "", "Crackpots (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3cd0f886201d1376f3abab2df53b1b9", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3dfae774f3bd005a026e29894db40d3", "Quelle", "649635", "See Saw (Double-Game Package) (1983) (Quelle) (PAL)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3f5f72bfdd67f3d0e45d097e11b8091", "Sears Tele-Games, Marilyn Churchill, Matthew L. Hubbard", "CX2647 - 49-75142", "Submarine Commander (1982) (Sears)", "AKA Seawolf 3", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3f92aad3a335f0a1ead24a0214ff446", "", "", "Spectrum Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4204fc92d17ed4cb567c40361ad58f1", "Inky", "", "Beanie Baby Bash (Inky) (Hack)", "Hack of Beany Bopper", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4469178cd8998cb437fa110a228eaca", "Digitel", "", "Frostbite (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f45644ff82b533a781a1ee50f2e95f3c", "", "", "Overhead Adventure Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f457674cef449cfd85f21db2b4f631a7", "U.S. Games Corporation, Wes Trager, Henry Will IV", "VC1004", "Commando Raid (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f473f99e47d4026a7a571184922ebf04", "Philip R. Frey", "", "Donkey Claus (Philip R. Frey) (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f48022230bb774a7f22184b48a3385af", "Atari, Rob Fulop - Sears", "CX2633 - 49-75119", "Night Driver (1980) (Atari) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "YES", "" }, - { "f48735115ec302ba8bb2d2f3a442e814", "", "", "Dancing Plate (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f49a34f1fdd7dc147cbf96ce2ce71b76", "", "", "Qb (Special Edition) (PAL) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f4ab6bd5f80d8988141edde4c84b23b5", "Atari, Alan Miller", "CX2624, CX2624P", "Basketball (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4b8a47a95b61895e671c3ec86ffd461", "Parker Brothers, Wilfredo 'Willy' Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f4c2e50b01dff99bddbe037b3489511c", "", "", "Hypnotic (V0.04) (2001) (Inkling) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4dabd5bcc603e8464a478208037d423", "Coleco, Ed Temple", "", "Cabbage Patch Kids (08-21-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f526d0c519f5001adb1fc7948bfbb3ce", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1003", "Star Fox (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f52f40299fd238c6ffd9e6107050dc76", "Activision, Bob Whitehead - Ariola", "EAG-011, PAG-011 - 711 011-715", "Stampede (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f539e32bf6ce39c8ca47cb0cdd2c5cb8", "Control Video Corporation", "", "GameLine Master Module ROM (1983) (Control Video)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f53f81fae276d72dbdba7064786a8266", "", "", "Death Derby (v0011) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f542b5d0193a3959b54f3c4c803ba242", "Atari, Tom Rudadahl - Sears", "CX2634 - 49-75121", "Golf (1980) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5445b52999e229e3789c39e7ee99947", "Atari, Jim Huether", "CX26163P", "Flag Capture (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5a2f6efa33a3e5541bc680e9dc31d5b", "Suntek", "SS-022", "Motocross (Suntek) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5a3e051730d45fea518f2e8b926565b", "Robby", "", "Keystone Kapers (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5aa6bd10f662199c42e43863a30106c", "", "", "Music Kit (V1.0) - Song Player (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f5d103a9ae36d1d4ee7eef657b75d2b3", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger, The (Preview) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "f613aad84d2163d6b197b220bfec1b7e", "", "", "X-Doom V.27 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f661f129644f338b13d9f4510d816c03", "Atari, David Crane", "CX26163P", "Outlaw (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6676e3fe901eb8515fc7ae310302c3c", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f67181b3a01b9c9159840b15449b87b0", "Atari, Nick 'Sandy Maiwald' Turner", "CX2665", "Frog Pond (08-27-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f687ec4b69611a7f78bd69b8a567937a", "Activision, Alan Miller - Ariola", "EAZ-028 - 711 028-725", "Robot Tank (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f69a39b215852a0c2764d2a923c1e463", "", "", "Move a Blue Blob Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f69bb58b815a6bdca548fa4d5e0d5a75", "Atari, Larry Kaplan", "CX26163P", "Bowling (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f69d4fcf76942fcd9bdf3fd8fde790fb", "CCE", "", "Aquaventure (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6a282374441012b01714e19699fc62a", "ZiMAG - Emag - Vidco", "710-111 - GN-010", "I Want My Mommy (1983) (ZiMAG)", "AKA Open Sesame", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f6a9ea814d15b85bffe980c927df606b", "", "", "Missile Command (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f6b5ebb65cbb2981af4d546c470629d7", "Coleco, Ed Temple", "", "Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype) [a]", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6c13e816e58c8c62f82b2c8b91a2d67", "", "", "Scrolling Playfield 2 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6d512bef1bf253dc935d0e13c3d1462", "", "", "Slot Racers (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6daebc0424fa0f8d9aaf26c86df50f4", "Brian Watson", "", "Color Tweaker (V1.0) (2001) (B. Watson)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6efa00ae99aaf33e427b674bcfd834d", "", "", "2600 Digital Clock (Demo 3) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6f1b27efc247a0e8d473ddb4269ff9e", "Quelle", "429.663 8", "Schnapp die Apfeldiebe (1983) (Quelle) (PAL)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f70e3f3bb2d19ec2aaec8f78dc43744f", "Jone Yuan Telephonic Enterprise Co", "", "Pooyan (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "26", "", "", "" }, - { "f714a223954c28eccf459295517dcae6", "", "", "Big - Move This Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f71694bd8e89d5a28daa73bf856635df", "Gray Games & AtariAge", "", "E.T. Book Cart (NTSC)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "15", "240", "YES", "55" }, - { "f724d3dd2471ed4cf5f191dbb724b69f", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (1982) (Atari)", "Console ports are swapped", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "" }, - { "f736864442164b29235e8872013180cd", "Telegames", "6057 A227", "Quest for Quintana Roo (1989) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f73d2d0eff548e8fc66996f27acf2b4b", "CCE", "C-813", "Pitfall (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f74ad642552385c3daa203a2a6fc2291", "Eckhard Stolberg", "", "Cubis (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f750b5d613796963acecab1690f554ae", "Manuel Polik", "", "Gunfight 2600 (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f75872946e82ad74d48eae5bc28f5f0e", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (04-15-1980) (Sears) (Prototype)", "Uses the Paddle Controllers", "Prototype", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "f777444fc21a5925e066b68b1d350575", "", "", "Marble Craze (Kernel Works) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f77f5fc3893da5d00198e4cd96544aad", "Canal 3 - Intellivision", "", "Stampede (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7856e324bc56f45b9c8e6ff062ec033", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari) [no opening tune]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f78c125b5da483c41e51522947d6c4ce", "", "", "Sound Paddle V1 (Dennis Caswell & Jim Nitchals) (PD)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "f7a138eed69665b5cd1bfa796a550b01", "Tigervision - Teldec", "7-012 - 3.60016 VC", "Espial (1984) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7a651972d78f9ba485b14690452d4be", "Paul Slocum", "", "Homestar Runner Demo #2 (2004-03-29)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f7af41a87533524d9a478575b0d873d0", "Quelle", "495.663 7", "Spiderman (1983) (Quelle) (PAL)", "AKA Spider-Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7d6592dcb773c81c278140ed4d01669", "Activision, David Crane, Dan Kitchen", "EAG-108-04, EAZ-108-04B", "Ghostbusters (1985) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7e07080ed8396b68f2e5788a5c245e2", "Video Game Cartridge - Ariola", "TP-617", "Farmyard Fun (Ariola)", "AKA Play Farm", "", "", "", "", "", "", "", "", "", "", "", "33", "217", "", "" }, - { "f7f50d9c9d28bcc9f7d3075668b7ac89", "Activision, David Crane - Ariola", "EAG-008, PAG-008, EAG-008-04I - 711 008-720", "Laser Blast (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7fac15cf54b55c5597718b6742dbec2", "Spiceware", "SW-01", "Medieval Mayhem (NTSC)", "", "Homebrew", "STEREO", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "f802fa61011dd9eb6f80b271bac479d0", "Suntek", "SS-023", "Mole Hunter (Suntek) (PAL)", "AKA Topy", "", "", "", "", "", "", "", "", "", "", "", "60", "", "", "" }, - { "f80cf77164079d774b9b0fae33dffca9", "", "", "Fu Kung! (V0.15) (Negative Version) (05-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8240e62d8c0a64a61e19388414e3104", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f825c538481f9a7a46d1e9bc06200aaf", "Atari, Richard Maurer - Sears", "CX2635 - 49-75157", "Maze Craze (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f844f4c6f3baaaf5322657442d6f29eb", "Atari, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f847fb8dba6c6d66d13724dbe5d95c4d", "Absolute Entertainment, David Crane", "AG-042-02, AG-042-04", "Skate Boardin' (1987) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8582bc6ca7046adb8e18164e8cecdbc", "", "", "Panda Chase (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8648d0c6ad1266434f6c485ff69ec40", "CCE", "", "Oink! (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8811d45a9935cca90c62f924712f8e6", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8ad87b3ecfc04c9e76d2cebef76a6cb", "", "", "Greeting Cart Carmon (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8bfd99163d2c4ec688357786e6fba28", "", "", "Eckhard Stolberg's Scrolling Text Demo 2 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8c1c4a41303bd40b0d6c81bfaf8573b", "HES", "", "2 Pak Special - Dungeon Master, Creature Strike (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8ff34b53d86f55bd52d7a520af6d1dc", "", "", "Big Dig (04-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f90b5da189f24d7e1a2117d8c8abc952", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f91fb8da3223b79f1c9a07b77ebfa0b2", "Atari, Alan J. Murphy, Nick 'Sandy Maiwald' Turner - Sears", "CX2615 - 49-75140", "Demons to Diamonds (1982) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "", "", "", "", "" }, - { "f93d7fee92717e161e6763a88a293ffa", "20th Century Fox Video Games - Lazer Micro Systems - Dunhill Electronic Media Corp., B. Winston Hendrickson, Randy Hyde, Mark V. Rhoads, John Simonds", "11013", "Porky's (1983) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9420173efcb4b9f2b01c2a7b595cca7", "CCE", "", "Laser Blast (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f954381f9e0f2009d1ac40dedd777b1a", "Thomas Jentzsch", "", "Robot City (V0.18) (01-09-2002) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "f9655ed51462ecfc690c7b97cec649f9", "Andrew Wallace", "", "Laseresal 2002 (PAL) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f965cc981cbb0822f955641f8d84e774", "Answer Software Corporation - TY Associates", "ASC2001", "Confrontation (1983) (Answer) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "30", "220", "YES", "" }, - { "f9660ebed66fee8bdfdf07b4faa22941", "VGS", "", "Vanguard (VGS)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9677b2ec8728a703eb710274474613d", "Atari, Ian Shepard", "CX2604, CX2604P", "Space War (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f96a763ced577e383d1102c4d0949525", "", "", "Death Derby (v0005) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f97dee1aa2629911f30f225ca31789d4", "Avalon Hill, Jean Baer, Bill 'Rebecca Ann' Heineman, Jim Jacob", "5005002", "Out of Control (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f98d2276d4a25b286135566255aea9d0", "Digitel", "", "Name This Game (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f98d869f287d2ce4f8fb36e0686929d9", "", "", "Skeleton+ (17-04-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f992a39b46aa48188fab12ad3809ae4a", "", "", "Sky Jinks (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9967369943209b4788d4e92cefc0795", "Atari", "CX26163P", "Fishing (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9cef637ea8e905a10e324e582dd39c2", "CCE", "", "Private Eye (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9d51a4e5f8b48f68770c89ffd495ed1", "Atari, Tod Frye", "CX2657", "SwordQuest - FireWorld (1982) (Atari)", "AKA Adventure II, SwordQuest II - FireWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9da42f91a1c5cfa344d2ff440c6f8d4", "ZUT", "", "Pac Invaders (ZUT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9de91d868d6ebfb0076af9063d7195e", "", "", "Maze Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9e99596345a84358bc5d1fbe877134b", "Activision, Larry Kaplan, David Crane - Ariola", "EAG-010, PAG-010 - 711 010-720", "Kaboom! (1981) (Activision) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "" }, - { "fa0570561aa80896f0ead05c46351389", "Tigervision", "7-008", "Miner 2049er (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "31", "", "", "" }, - { "fa1b060fd8e0bca0c2a097dcffce93d3", "Atari, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (1983) (Atari)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "" }, - { "fa2be8125c3c60ab83e1c0fe56922fcb", "DSD-Camelot - Johnson & Johnson", "", "Tooth Protectors (1983) (DSD-Camelot)", "", "", "", "", "", "", "", "", "", "", "", "", "26", "", "YES", "" }, - { "fa2f5f409cff75c9b9b9a5af84bd9909", "", "", "Greeting Cart Brook Burke Closeup(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa3de71841c0841db6a741884a6b6b2f", "", "", "Warring Worms (17-02-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa4404fabc094e3a31fcd7b559cdd029", "Atari, Alan J. Murphy, Robert C. Polaro", "CX26100", "Bugs Bunny (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa529ec88eca679f6d5fd0ccb2120e46", "", "", "20 Sprites at Once Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa6fe97a10efb9e74c0b5a816e6e1958", "ZiMAG - Emag - Vidco", "707-111 - GN-030", "Tanks But No Tanks (1983) (ZiMAG)", "AKA Phantom Tank", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "fa7ce62e7fd77e02b3e2198d70742f80", "Atari, Peter C. Niday", "CX26108", "Donald Duck's Speedboat (04-18-1983) (Atari) (Prototype) (PAL)", "AKA Donald Duck's Regatta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa7e11a3dbea4365975cd2f094e61d25", "Tim Snider", "", "Mystery Science Theater 2600 (1999) (Tim Snider) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fabca526d57de46768b392f758f1a008", "", "", "Laseresal 2600 (16-12-2001) (Andrew Wallace) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fac28963307b6e85082ccd77c88325e7", "CCE", "", "Berzerk (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fadb89f9b23beb4d43a7895c532757e2", "Galaga Games", "", "River Raid (1984) (Galaga Games) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fae0b86934a7c5a362281dffebdb43a0", "Retroactive", "", "Qb (2.07) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "faebcb2ef1f3831b2fc1dbd39d36517c", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1983) (Atari) (PAL)", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "faed2ef6b44894f8c83f2b50891c35c6", "CCE", "", "Super Baseball (CCE)", "AKA RealSports Baseball", "", "", "", "", "", "", "", "", "", "", "", "26", "", "", "" }, - { "faffd84f3a8eceee2fa5ea5b0a3e6678", "Suntek", "SS-025", "Spectracube Invasion (Suntek) (PAL)", "AKA Immies & Aggies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb09ee4ccd47ae74a3c314f0d8a40344", "", "", "Titans (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb0c32ef7af5b45486db663510094be8", "", "", "Demo Image Series #15 - Three Marios (NTSC) (Non-Interleave) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb0e84cee4c108d24253bcb7e382cffd", "", "", "Interleaved ChronoColour Demo (SECAM) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb27afe896e7c928089307b32e5642ee", "M Network, Jeff Ronne, Brett Stutz - INTV", "MT5662", "TRON - Deadly Discs (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb4ca865abc02d66e39651bd9ade140a", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb531febf8e155328ec0cd39ef77a122", "", "", "Worm War I (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fb5c8af97bd8ffe88323656f462645a7", "", "", "Interlace Demo (Glenn Saunders)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fb833ed50c865a9a505a125fc9d79a7e", "Home Vision - Gem International Corp.", "", "Zoo Fun (1983) (Home Vision) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "fb88c400d602fe759ae74ef1716ee84e", "20th Century Fox Video Games, Bill Aspromonte", "11031", "Crash Dive (1983) (20th Century Fox)", "AKA Voyage to the Bottom of the Sea", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "fb91da78455d9b1606913fbf8c859772", "", "", "Split Screen (Ballblazer) Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb91dfc36cddaa54b09924ae8fd96199", "Parker Brothers, Mark Lesser", "PB5590", "Frogger II (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fbac6476e7b2b20d246202af81662c88", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbb0151ea2108e33b2dbaae14a1831dd", "Thomas Jentzsch", "", "Robot Tank TV (Thomas Jentzsch) (Hack)", "Uses two simultaneous Joystick Controllers, Hack of Robot Tank", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbb4f3debf48dc961b559384467f2057", "Digitel", "", "River Raid III (1985) (Digitel)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbd6102e17a5c02c6e1911381b7203f9", "", "", "Star Fire - Warping!! (10-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbe554aa8f759226d251ba6b64a9cce4", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbfebee9c14694719e3eda4854dc42ee", "Jake Patterson", "", "Baubles 3 (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc2104dd2dadf9a6176c1c1c8f87ced9", "Coleco, Harley H. Puthuff Jr.", "2663", "Time Pilot (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc2233fc116faef0d3c31541717ca2db", "Atari, Tod Frye", "CX2646", "Pac-Man (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc24a94d4371c69bc58f5245ada43c44", "Atari - Axlon, Steve DeFrisco", "CX26170", "Secret Quest (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc6052438f339aea373bbc999433388a", "Atari, David Crane", "CX2653P", "Slot Machine (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc668a2251dd79cbd903d4fa0e558f96", "", "", "Thrust (V1.1) (2000) (TJ) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc92d74f073a44bc6e46a3b3fa8256a2", "", "", "Megademo (19xx) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc9c1652fe3a2cade6188f4d3692481f", "Andrew Davies", "", "Andrew Davies early notBoulderDash demo (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fca4a5be1251927027f2c24774a02160", "Activision, John Van Ryzin", "AZ-036-04", "H.E.R.O. (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fcbbd0a407d3ff7bf857b8a399280ea1", "ZiMAG - Emag - Vidco", "GN-070", "Mysterious Thief, A (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fcea12625c071ddc49f4e409f4038c60", "Fabrizio Zavagli", "", "Balls! (16-09-2002) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fcf8e306f6615f74feba5cb25550038c", "", "", "Blue Dot Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd0e5148162e8ec6719445d559f018a9", "Activision, Steve Cartwright - Ariola", "EAX-022, EAX-022-04I - 711 022-720", "Seaquest (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd10915633aea4f9cd8b518a25d62b55", "Atari, John Dunn", "CX2631, CX2631P", "Superman (1979) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd16949913aaab5beaefed73bf2ca67c", "Atari - GCC, Mike Feinstein, John Allred", "CX2688", "Jungle Hunt (02-03-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd4f5536fd80f35c64d365df85873418", "Atari, Robert C. Polaro", "CX26140", "Desert Falcon (1987) (Atari)", "AKA Nile Flyer, Sphinx", "", "", "", "", "", "", "", "", "", "", "", "22", "", "", "" }, - { "fd6e507b5df68beeeddeaf696b6828fa", "", "", "Boxing (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd7464edaa8cc264b97ba0d13e7f0678", "HES", "771-333", "2 Pak Special - Challenge, Surfing (1990) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd8b4ee0d57605b35e236e814f706ff1", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673, CX2673P", "Phoenix (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd9b321cee5fbb32c39ba3ca5d9ec7cf", "Jeffry Johnston", "", "Radial Pong - Version 5 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fdd4995a50395db14f518f63c2d63438", "", "", "Oh No! (Version 3) (18-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fdf0de38517e0cf7f0885f98ccc95836", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (2 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fdf6680b2b1e8054293a39700a765692", "", "", "Alpha Demo - The Beta Demo 2 (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe0b7f27e3ad50bbf9ff468ee56d553d", "", "", "Lines Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe0bc4bb92c1c4de7d5706aaa8d8c10d", "", "", "Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe3b461d4c8b179fe68bc77760294c25", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "fe67087f9c22655ce519616fc6c6ef4d", "Atari, Randy Bowker", "CX26142", "Crack'ed (11-28-1988) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe6abc0f63e31e2646c9c600926b5b7f", "Atari", "CX26137", "4 in 1 (02-19-1987) (Atari) (Prototype)", "Home Run, Canyon Bomber, Sky Diver, Night Driver", "Prototype", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe870018332a0221eb59fb18b0c6bccc", "", "", "Incoming (08-11-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe9ae625d924b54c9f8a14ac9a0f6c6d", "BG Dodson", "", "High Bid! (BG Dodson) (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "feba8686fd0376015258d1152923958a", "", "", "Super Circus (Unknown) (PAL)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fec0c2e2ab0588ed20c750b58cf3baa3", "Activision, David Rolfe - Cheshire Engineering", "EAZ-037-04, EAZ-037-04I", "Beamrider (1984) (Activision) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fece458a8023a809a5006867feca40e8", "", "", "SCSIcide (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "feeae23f2eeac44b81a43e8292d0c574", "", "", "Greeting Cart Halle Berry (SnailSoft)(PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "feec54aac911887940b47fe8c9f80b11", "Atari, Rob Fulop", "CX2633, CX2633P", "Night Driver (1980) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "YES", "" }, - { "feedcc20bc3ca34851cd5d9e38aa2ca6", "Atari, David Crane - Sears", "CX2607 - 6-99828, 49-75115", "Canyon Bomber (1979) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "42", "", "", "" }, - { "ff3bd0c684f7144aeaa18758d8281a78", "Atari, Bob Whitehead", "CX2651", "Blackjack (1977) (Atari) (PAL)", "Uses the Paddle Controllers", "Rare", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "48", "", "", "" }, - { "ff4ed162386c795b4fb434903295b571", "", "", "Death Derby (v0002) (2001) (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ff5a9e340d96df6f5a5b6eb038e923bd", "", "", "Space Shuttle (1983) (Activision) [t1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ff7627207e8aa03730c35c735a82c26c", "Atari, Bob Whitehead", "CX26163P", "Blackjack (32 in 1) (1988) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "63", "", "", "" }, - { "ff86fc8ffa717bb095e8471638c1c31c", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "" }, - { "ff87d58125ae517eb7b09a0475a1ccdc", "", "", "SCSIcide (Score Hack 1) (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffb1cd548563158ce33f9d10268187e7", "Erik Eid", "", "Euchre (Beta) (NTSC) (12-09-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffc0ff4305dd46b4b459885bd1818e2e", "Barry Laws Jr.", "", "Star Wars - The Battle of Alderaan (Star Strike Hack)", "Hack of Star Strike (Mattel)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffdc0eb3543404eb4c353fbdddfa33b6", "CCE", "C-827", "Chopper Command (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffe51989ba6da2c6ae5a12d277862e16", "Atari - Sears", "CX2627 - 6-99841", "Human Cannonball (1979) (Atari) (4K)", "AKA Cannon Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffebb0070689b9d322687edd9c0a2bae", "", "", "Spitfire Attack (1983) (Milton Bradley) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" } -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/Props.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/Props.cpp deleted file mode 100644 index 41580d656a..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/Props.cpp +++ /dev/null @@ -1,345 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Props.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include -#include - -#include "bspf.hxx" -#include "Props.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Properties::Properties() -{ - setDefaults(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Properties::Properties(const Properties& properties) -{ - copy(properties); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Properties::~Properties() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const string& Properties::get(PropertyType key) const -{ - if(key >= 0 && key < LastPropType) - return myProperties[key]; - else - return EmptyString; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::set(PropertyType key, const string& value) -{ - if(key >= 0 && key < LastPropType) - { - myProperties[key] = value; - - switch(key) - { - case Cartridge_Sound: - case Cartridge_Type: - case Console_LeftDifficulty: - case Console_RightDifficulty: - case Console_TelevisionType: - case Console_SwapPorts: - case Controller_Left: - case Controller_Right: - case Controller_SwapPaddles: - case Display_Format: - case Display_Phosphor: - { - transform(myProperties[key].begin(), myProperties[key].end(), - myProperties[key].begin(), (int(*)(int)) toupper); - break; - } - - case Display_PPBlend: - { - int blend = atoi(myProperties[key].c_str()); - if(blend < 0 || blend > 100) blend = 77; - ostringstream buf; - buf << blend; - myProperties[key] = buf.str(); - break; - } - - default: - break; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::load(istream& in) -{ - setDefaults(); - - // Loop reading properties - string key, value; - for(;;) - { - // Get the key associated with this property - key = readQuotedString(in); - - // Make sure the stream is still okay - if(!in) - return; - - // A null key signifies the end of the property list - if(key == "") - break; - - // Get the value associated with this property - value = readQuotedString(in); - - // Make sure the stream is still okay - if(!in) - return; - - // Set the property - PropertyType type = getPropertyType(key); - set(type, value); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::save(ostream& out) const -{ - // Write out each of the key and value pairs - bool changed = false; - for(int i = 0; i < LastPropType; ++i) - { - // Try to save some space by only saving the items that differ from default - if(myProperties[i] != ourDefaultProperties[i]) - { - writeQuotedString(out, ourPropertyNames[i]); - out.put(' '); - writeQuotedString(out, myProperties[i]); - out.put('\n'); - changed = true; - } - } - - if(changed) - { - // Put a trailing null string so we know when to stop reading - writeQuotedString(out, ""); - out.put('\n'); - out.put('\n'); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Properties::readQuotedString(istream& in) -{ - char c; - - // Read characters until we see a quote - while(in.get(c)) - { - if(c == '"') - break; - } - - // Read characters until we see the close quote - string s; - while(in.get(c)) - { - if((c == '\\') && (in.peek() == '"')) - in.get(c); - else if((c == '\\') && (in.peek() == '\\')) - in.get(c); - else if(c == '"') - break; - else if(c == '\r') - continue; - - s += c; - } - - return s; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::writeQuotedString(ostream& out, const string& s) -{ - out.put('"'); - for(uInt32 i = 0; i < s.length(); ++i) - { - if(s[i] == '\\') - { - out.put('\\'); - out.put('\\'); - } - else if(s[i] == '\"') - { - out.put('\\'); - out.put('"'); - } - else - out.put(s[i]); - } - out.put('"'); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Properties& Properties::operator = (const Properties& properties) -{ - // Do the assignment only if this isn't a self assignment - if(this != &properties) - { - // Now, make myself a copy of the given object - copy(properties); - } - - return *this; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::copy(const Properties& properties) -{ - // Now, copy each property from properties - for(int i = 0; i < LastPropType; ++i) - myProperties[i] = properties.myProperties[i]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::print() const -{ - cout << get(Cartridge_MD5) << "|" - << get(Cartridge_Name) << "|" - << get(Cartridge_Manufacturer) << "|" - << get(Cartridge_ModelNo) << "|" - << get(Cartridge_Note) << "|" - << get(Cartridge_Rarity) << "|" - << get(Cartridge_Sound) << "|" - << get(Cartridge_Type) << "|" - << get(Console_LeftDifficulty) << "|" - << get(Console_RightDifficulty)<< "|" - << get(Console_TelevisionType) << "|" - << get(Console_SwapPorts) << "|" - << get(Controller_Left) << "|" - << get(Controller_Right) << "|" - << get(Controller_SwapPaddles) << "|" - << get(Display_Format) << "|" - << get(Display_YStart) << "|" - << get(Display_Height) << "|" - << get(Display_Phosphor) << "|" - << get(Display_PPBlend) - << endl; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::setDefaults() -{ - for(int i = 0; i < LastPropType; ++i) - myProperties[i] = ourDefaultProperties[i]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PropertyType Properties::getPropertyType(const string& name) -{ - for(int i = 0; i < LastPropType; ++i) - if(ourPropertyNames[i] == name) - return (PropertyType)i; - - // Otherwise, indicate that the item wasn't found - return LastPropType; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Properties::printHeader() -{ - cout << "Cartridge_MD5|" - << "Cartridge_Name|" - << "Cartridge_Manufacturer|" - << "Cartridge_ModelNo|" - << "Cartridge_Note|" - << "Cartridge_Rarity|" - << "Cartridge_Sound|" - << "Cartridge_Type|" - << "Console_LeftDifficulty|" - << "Console_RightDifficulty|" - << "Console_TelevisionType|" - << "Console_SwapPorts|" - << "Controller_Left|" - << "Controller_Right|" - << "Controller_SwapPaddles|" - << "Display_Format|" - << "Display_YStart|" - << "Display_Height|" - << "Display_Phosphor|" - << "Display_PPBlend" - << endl; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const char* Properties::ourDefaultProperties[LastPropType] = { - "", // Cartridge.MD5 - "", // Cartridge.Manufacturer - "", // Cartridge.ModelNo - "Untitled", // Cartridge.Name - "", // Cartridge.Note - "", // Cartridge.Rarity - "MONO", // Cartridge.Sound - "AUTO-DETECT", // Cartridge.Type - "B", // Console.LeftDifficulty - "B", // Console.RightDifficulty - "COLOR", // Console.TelevisionType - "NO", // Console.SwapPorts - "JOYSTICK", // Controller.Left - "JOYSTICK", // Controller.Right - "NO", // Controller.SwapPaddles - "AUTO-DETECT", // Display.Format - "34", // Display.YStart - "210", // Display.Height - "NO", // Display.Phosphor - "77" // Display.PPBlend -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const char* Properties::ourPropertyNames[LastPropType] = { - "Cartridge.MD5", - "Cartridge.Manufacturer", - "Cartridge.ModelNo", - "Cartridge.Name", - "Cartridge.Note", - "Cartridge.Rarity", - "Cartridge.Sound", - "Cartridge.Type", - "Console.LeftDifficulty", - "Console.RightDifficulty", - "Console.TelevisionType", - "Console.SwapPorts", - "Controller.Left", - "Controller.Right", - "Controller.SwapPaddles", - "Display.Format", - "Display.YStart", - "Display.Height", - "Display.Phosphor", - "Display.PPBlend" -}; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/Props.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/Props.hxx deleted file mode 100644 index 25dd7a18b8..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/Props.hxx +++ /dev/null @@ -1,187 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Props.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef PROPERTIES_HXX -#define PROPERTIES_HXX - -#include "bspf.hxx" - -enum PropertyType { - Cartridge_MD5, - Cartridge_Manufacturer, - Cartridge_ModelNo, - Cartridge_Name, - Cartridge_Note, - Cartridge_Rarity, - Cartridge_Sound, - Cartridge_Type, - Console_LeftDifficulty, - Console_RightDifficulty, - Console_TelevisionType, - Console_SwapPorts, - Controller_Left, - Controller_Right, - Controller_SwapPaddles, - Display_Format, - Display_YStart, - Display_Height, - Display_Phosphor, - Display_PPBlend, - LastPropType -}; - -/** - This class represents objects which maintain a collection of - properties. A property is a key and its corresponding value. - - A properties object can contain a reference to another properties - object as its "defaults"; this second properties object is searched - if the property key is not found in the original property list. - - @author Bradford W. Mott - @version $Id: Props.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Properties -{ - friend class PropertiesSet; - - public: - /** - Creates an empty properties object with the specified defaults. The - new properties object does not claim ownership of the defaults. - */ - Properties(); - - /** - Creates a properties list by copying another one - - @param properties The properties to copy - */ - Properties(const Properties& properties); - - /** - Destructor - */ - virtual ~Properties(); - - public: - /** - Get the value assigned to the specified key. If the key does - not exist then the empty string is returned. - - @param key The key of the property to lookup - @return The value of the property - */ - const string& get(PropertyType key) const; - - /** - Set the value associated with key to the given value. - - @param key The key of the property to set - @param value The value to assign to the property - */ - void set(PropertyType key, const string& value); - - /** - Load properties from the specified input stream - - @param in The input stream to use - */ - void load(istream& in); - - /** - Save properties to the specified output stream - - @param out The output stream to use - */ - void save(ostream& out) const; - - /** - Print the attributes of this properties object - */ - void print() const; - - /** - Resets all properties to their defaults - */ - void setDefaults(); - - public: - /** - Overloaded assignment operator - - @param properties The properties object to set myself equal to - @return Myself after assignment has taken place - */ - Properties& operator = (const Properties& properties); - - private: - /** - Helper function to perform a deep copy of the specified - properties. Assumes that old properties have already been - freed. - - @param properties The properties object to copy myself from - */ - void copy(const Properties& properties); - - /** - Read the next quoted string from the specified input stream - and returns it. - - @param in The input stream to use - @return The string inside the quotes - */ - static string readQuotedString(istream& in); - - /** - Write the specified string to the given output stream as a - quoted string. - - @param out The output stream to use - @param s The string to output - */ - static void writeQuotedString(ostream& out, const string& s); - - /** - Get the property type associated with the named property - - @param name The PropertyType key associated with the given string - */ - static PropertyType getPropertyType(const string& name); - - /** - When printing each collection of ROM properties, it is useful to - see which columns correspond to the output fields; this method - provides that output. - */ - static void printHeader(); - - private: - // The array of properties - string myProperties[LastPropType]; - - // List of default properties to use when none have been provided - static const char* ourDefaultProperties[LastPropType]; - - // The text strings associated with each property type - static const char* ourPropertyNames[LastPropType]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/PropsSet.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/PropsSet.cpp deleted file mode 100644 index d05efe5c6e..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/PropsSet.cpp +++ /dev/null @@ -1,227 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: PropsSet.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include -#include - -#include "bspf.hxx" - -#include "DefProps.hxx" -//ROBO: No OSystem -//#include "OSystem.hxx" -#include "Props.hxx" -#include "Settings.hxx" - -#include "PropsSet.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//ROBO: No OSystem -PropertiesSet::PropertiesSet(void* osystem) -// : myOSystem(osystem), - : mySize(0) -{ -//ROBO: No OSystem -// const string& props = myOSystem->propertiesFile(); - //TODO: LOAD FROM MEDNAFEN FIRMWARE FOLDER? -// load(props); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PropertiesSet::~PropertiesSet() -{ - myExternalProps.clear(); - myTempProps.clear(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void PropertiesSet::load(const string& filename) -{ - ifstream in(filename.c_str(), ios::in); - - // Loop reading properties - for(;;) - { - // Make sure the stream is still good or we're done - if(!in) - break; - - // Get the property list associated with this profile - Properties prop; - prop.load(in); - - // If the stream is still good then insert the properties - if(in) - insert(prop); - } - if(in) - in.close(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool PropertiesSet::save(const string& filename) const -{ - ofstream out(filename.c_str(), ios::out); - if(!out) - return false; - - // Only save those entries in the external list - for(PropsList::const_iterator i = myExternalProps.begin(); - i != myExternalProps.end(); ++i) - i->second.save(out); - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool PropertiesSet::getMD5(const string& md5, Properties& properties, - bool useDefaults) const -{ - properties.setDefaults(); - bool found = false; - - // There are three lists to search when looking for a properties entry, - // which must be done in the following order - // If 'useDefaults' is specified, only use the built-in list - // - // 'save': entries previously inserted that are saved on program exit - // 'temp': entries previously inserted that are discarded - // 'builtin': the defaults compiled into the program - - // First check properties from external file - if(!useDefaults) - { - // Check external list - PropsList::const_iterator iter = myExternalProps.find(md5); - if(iter != myExternalProps.end()) - { - properties = iter->second; - found = true; - } - else // Search temp list - { - iter = myTempProps.find(md5); - if(iter != myTempProps.end()) - { - properties = iter->second; - found = true; - } - } - } - - // Otherwise, search the internal database using binary search - if(!found) - { - int low = 0, high = DEF_PROPS_SIZE - 1; - while(low <= high) - { - int i = (low + high) / 2; - int cmp = strncmp(md5.c_str(), DefProps[i][Cartridge_MD5], 32); - - if(cmp == 0) // found it - { - for(int p = 0; p < LastPropType; ++p) - if(DefProps[i][p][0] != 0) - properties.set((PropertyType)p, DefProps[i][p]); - - found = true; - break; - } - else if(cmp < 0) - high = i - 1; // look at lower range - else - low = i + 1; // look at upper range - } - } - - return found; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void PropertiesSet::insert(const Properties& properties, bool save) -{ - // Note that the following code is optimized for insertion when an item - // doesn't already exist, and when the external properties file is - // relatively small (which is the case with current versions of Stella, - // as the properties are built-in) - // If an item does exist, it will be removed and insertion done again - // This shouldn't be a speed issue, as insertions will only fail with - // duplicates when you're changing the current ROM properties, which - // most people tend not to do - - // Since the PropSet is keyed by md5, we can't insert without a valid one - const string& md5 = properties.get(Cartridge_MD5); - if(md5 == "") - return; - - // The status of 'save' determines which list to save to - PropsList& list = save ? myExternalProps : myTempProps; - - pair ret; - ret = list.insert(make_pair(md5, properties)); - if(ret.second == false) - { - // Remove old item and insert again - list.erase(ret.first); - list.insert(make_pair(md5, properties)); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void PropertiesSet::removeMD5(const string& md5) -{ - // We only remove from the external list - myExternalProps.erase(md5); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void PropertiesSet::print() const -{ - // We only look at the external properties and the built-in ones; - // the temp properties are ignored - // Also, any properties entries in the external file override the built-in - // ones - // The easiest way to merge the lists is to create another temporary one - // This isn't fast, but I suspect this method isn't used too often (or at all) - - PropsList list; - - // First insert all external props - list = myExternalProps; - - // Now insert all the built-in ones - // Note that if we try to insert a duplicate, the insertion will fail - // This is fine, since a duplicate in the built-in list means it should - // be overrided anyway (and insertion shouldn't be done) - Properties properties; - for(int i = 0; i < DEF_PROPS_SIZE; ++i) - { - properties.setDefaults(); - for(int p = 0; p < LastPropType; ++p) - if(DefProps[i][p][0] != 0) - properties.set((PropertyType)p, DefProps[i][p]); - - list.insert(make_pair(DefProps[i][Cartridge_MD5], properties)); - } - - // Now, print the resulting list - Properties::printHeader(); - for(PropsList::const_iterator i = list.begin(); i != list.end(); ++i) - i->second.print(); -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/PropsSet.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/PropsSet.hxx deleted file mode 100644 index 222294edee..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/properties/PropsSet.hxx +++ /dev/null @@ -1,130 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: PropsSet.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef PROPERTIES_SET_HXX -#define PROPERTIES_SET_HXX - -#include - -#include "bspf.hxx" -#include "Props.hxx" - -//ROBO: No OSystem -//class OSystem; - -/** - This class maintains an ordered collection of properties, maintained - in a C++ map and accessible by ROM md5. The md5 is used since this is - the attribute which must be present in each entry in stella.pro - and least likely to change. A change in MD5 would mean a change in - the game rom image (essentially a different game) and this would - necessitate a new entry in the stella.pro file anyway. - - @author Stephen Anthony -*/ -class PropertiesSet -{ - public: - /** - Create an empty properties set object using the md5 as the - key to the BST. - */ -//ROBO: No OSystem -// PropertiesSet(OSystem* osystem); - PropertiesSet(void* osystem); - - /** - Destructor - */ - virtual ~PropertiesSet(); - - public: - /** - Load properties from the specified file, and create an internal - searchable list. - - @param filename Full pathname of input file to use - */ - void load(const string& filename); - - /** - Save properties to the specified file. - - @param filename Full pathname of output file to use - - @return True on success, false on failure - Failure occurs if file couldn't be opened for writing - */ - bool save(const string& filename) const; - - /** - Get the property from the set with the given MD5. - - @param md5 The md5 of the property to get - @param properties The properties with the given MD5, or the default - properties if not found - @param defaults Use the built-in defaults, ignoring any properties - from an external file - - @return True if the set with the specified md5 was found, else false - */ - bool getMD5(const string& md5, Properties& properties, - bool useDefaults = false) const; - - /** - Insert the properties into the set. If a duplicate is inserted - the old properties are overwritten with the new ones. - - @param properties The collection of properties - @param save Indicates whether the properties should be saved - when the program exits - */ - void insert(const Properties& properties, bool save = true); - - /** - Marks the property with the given MD5 as being removed. - - @param md5 The md5 of the property to remove - */ - void removeMD5(const string& md5); - - /** - Prints the contents of the PropertiesSet as a flat file. - */ - void print() const; - - private: - typedef map PropsList; - - // The parent system for this object -//ROBO: No OSystem -// OSystem* myOSystem; - - // The properties read from an external 'stella.pro' file - PropsList myExternalProps; - - // The properties temporarily inserted by the program, which should - // be discarded when the program ends - PropsList myTempProps; - - // The size of the properties bst (i.e. the number of properties in it) - uInt32 mySize; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/stella.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/stella.cpp deleted file mode 100644 index d8caceb699..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/stella.cpp +++ /dev/null @@ -1,390 +0,0 @@ -#include "stella.h" -#include "../md5.h" -#include "../mempatcher.h" -#include "../player.h" - -#include -#include -#include -#include -#include - -#include "Settings.hxx" -#include "TIA.hxx" -#include "Props.hxx" -#include "PropsSet.hxx" -#include "Cart.hxx" -#include "Console.hxx" -#include "Serializer.hxx" -#include "Event.hxx" -#include "Switches.hxx" -#include "MD5.hxx" -#include "SoundSDL.hxx" -#include - -extern MDFNGI EmulatedStella; - -//Structure holding all of the objects needed for a stella instance -struct MDFNStella -{ - Console* GameConsole; - Settings GameSettings; - - const uInt32* Palette; - - SoundSDL Sound; - - MDFNStella() {GameConsole = 0; Palette = 0;} - ~MDFNStella() {delete GameConsole;} -}; -MDFNStella* mdfnStella; - -//Set the palette for the current stella instance -void stellaMDFNSetPalette (const uInt32* palette) -{ - if(mdfnStella) - { - mdfnStella->Palette = palette; - } -} - -//Get the settings from the current stella instance -Settings& stellaMDFNSettings () -{ - if(mdfnStella) - { - return mdfnStella->GameSettings; - } - - //HACK - abort(); -} - -namespace MDFN_IEN_STELLA -{ - -static const FileExtensionSpecStruct KnownExtensions[] = -{ - { ".a26", gettext_noop("Atari 2600 ROM Image") }, - { NULL, NULL } -}; - -static const InputDeviceInputInfoStruct GamepadIDII[] = -{ - {"up", "Up", 0, IDIT_BUTTON, NULL}, - {"down", "Down", 1, IDIT_BUTTON, NULL}, - {"left", "Left", 2, IDIT_BUTTON, NULL}, - {"right", "Right", 3, IDIT_BUTTON, NULL}, - {"fire1", "1", 4, IDIT_BUTTON, NULL}, - {"fire2", "2", 5, IDIT_BUTTON, NULL}, - {"fire3", "3", 6, IDIT_BUTTON, NULL}, - - {"one", "Keyboard One", 7, IDIT_BUTTON, NULL}, - {"two", "Keyboard Two", 8, IDIT_BUTTON, NULL}, - {"three", "Keyboard Three", 9, IDIT_BUTTON, NULL}, - {"four", "Keyboard Four", 10, IDIT_BUTTON, NULL}, - {"five", "Keyboard Five", 11, IDIT_BUTTON, NULL}, - {"six", "Keyboard Six", 12, IDIT_BUTTON, NULL}, - {"seven", "Keyboard Seven", 13, IDIT_BUTTON, NULL}, - {"eight", "Keyboard Eight", 14, IDIT_BUTTON, NULL}, - {"nine", "Keyboard Nine", 15, IDIT_BUTTON, NULL}, - {"star", "Keyboard Star", 16, IDIT_BUTTON, NULL}, - {"zero", "Keyboard Zero", 17, IDIT_BUTTON, NULL}, - {"pound", "Keyboard Pound", 18, IDIT_BUTTON, NULL}, - - {"select", "Select (Port 1 Only)", 19, IDIT_BUTTON, NULL}, - {"reset", "Reset (Port 1 Only)", 20, IDIT_BUTTON, NULL}, -}; - -static InputDeviceInfoStruct InputDeviceInfoPort[] = -{ - {"none", "none", NULL, 0, NULL}, - {"gamepad", "All Types", NULL, 21, GamepadIDII} -}; - - -static const InputPortInfoStruct PortInfo[] = -{ - {0, "port1", "Port 1", 2, InputDeviceInfoPort, "gamepad"}, - {0, "port2", "Port 2", 2, InputDeviceInfoPort, "gamepad"}, -}; - -static InputInfoStruct InputInfo = -{ - 2, PortInfo -}; - -static int Load (const char *name, MDFNFILE *fp) -{ - try - { - //Setup cheats - MDFNMP_Init(128, 65536 / 128); - - //Create the stella objects - mdfnStella = new MDFNStella(); - - //Get the game properties - string cartMD5 = MD5(fp->data, fp->size); - PropertiesSet propslist(0); - Properties gameProperties; - propslist.getMD5(cartMD5, gameProperties); - - //Load the cart - string cartType = gameProperties.get(Cartridge_Type); - string cartID = ""; - Cartridge* stellaCart = Cartridge::create(fp->data, fp->size, cartMD5, cartType, cartID, mdfnStella->GameSettings); - - if(stellaCart == 0) - { - MDFND_PrintError("Stella: Failed to load cartridge."); - return 0; - } - - //Create the console - mdfnStella->GameConsole = new Console(mdfnStella->Sound, stellaCart, gameProperties); - - //Init sound - mdfnStella->Sound.open(); - - //Update MDFNGI's timing - EmulatedStella.MasterClock = MDFN_MASTERCLOCK_FIXED(((uint32_t)mdfnStella->GameConsole->getFramerate()) * 100); - - return 1; - } - catch(...) - { - MDFND_PrintError("Stella: Failed to load due to exception."); - return 0; - } -} - -static bool TestMagic (const char *name, MDFNFILE *fp) -{ - //There is no reliable way to detect a 2600 game, only support games listed in stella's properties file - string cartMD5 = MD5(fp->data, fp->size); - PropertiesSet propslist(0); - Properties gameProperties; - propslist.getMD5(cartMD5, gameProperties); - - return gameProperties.get(Cartridge_MD5).length() != 0; -} - -static void CloseGame () -{ - //Resampler::Kill(); - - //TODO: Is anything else needed here? - delete mdfnStella; - mdfnStella = 0; - - //Stop cheats - MDFNMP_Kill(); -} - -static int StateAction (StateMem *sm, int load, int data_only) -{ - try - { - //Can't load a state if there is no console. - if(mdfnStella && mdfnStella->GameConsole) - { - //Get the state stream - Serializer state(sm); - - //Do the action - if(load) mdfnStella->GameConsole->load(state); - else mdfnStella->GameConsole->save(state); - - //Done and done - return 1; - } - } - catch(...){} - - return 0; -} - -static uint8 *chee; -static void Emulate (EmulateSpecStruct *espec) -{ - Fir_Resampler<8>* Resampler; - //AUDIO PREP - //Resampler::Init(espec, 34100.0); - - - //INPUT - //Update stella's event structure - for(int i = 0; i != 2; i ++) - { - //Get the base event id for this port - Event::Type baseEvent = (i == 0) ? Event::JoystickZeroUp : Event::JoystickOneUp; - - //Get the input data for this port and stuff it in the event structure - //uint32_t inputState = Input::GetPort<3>(i); - uint32_t inputState; - for(int j = 0; j != 19; j ++, inputState >>= 1) - { - mdfnStella->GameConsole->event().set((Event::Type)(baseEvent + j), inputState & 1); - } - } - - uint16 butt_data = chee[0] | (chee[1] << 8); - - //mdfnStella->SetButtonData(butt_data); - - //Update the reset and select events - //uint32_t inputState = Input::GetPort<0, 3>() >> 19; - uint32_t inputState; - mdfnStella->GameConsole->event().set(Event::ConsoleSelect, inputState & 1); - mdfnStella->GameConsole->event().set(Event::ConsoleReset, inputState & 2); - - //Tell all input devices to read their state from the event structure - mdfnStella->GameConsole->switches().update(); - mdfnStella->GameConsole->controller(Controller::Left).update(); - mdfnStella->GameConsole->controller(Controller::Right).update(); - - //CHEATS - MDFNMP_ApplyPeriodicCheats(); - - //EMULATE - mdfnStella->GameConsole->tia().update(); - - // if(myOSystem->eventHandler().frying()) - // myOSystem->GameConsole().fry(); - - //VIDEO: TODO: Support other color formats - //Get the frame info from stella - Int32 frameWidth = mdfnStella->GameConsole->tia().width(); - Int32 frameHeight = mdfnStella->GameConsole->tia().height(); - - //printf("frameWidth %d\n", frameWidth); - //printf("frameHeight %d\n", frameHeight); - - - //Setup the output area for mednafen, never allow stella's size to excede mednafen's - //Video::SetDisplayRect(espec, 0, 0, frameWidth, frameHeight); - espec->DisplayRect.x = 0; - espec->DisplayRect.y = 0; - espec->DisplayRect.w = frameWidth; - espec->DisplayRect.h = frameHeight; - - //Copy the frame from stella to mednafen - //Video::BlitPalette<0xFF>(espec, mdfnStella->Palette, mdfnStella->GameConsole->tia().currentFrameBuffer(), frameWidth, frameHeight, frameWidth); - //inline void __attribute((always_inline)) BlitPalette (EmulateSpecStruct* espec, const pType* aPalette, const sType* aSource, uint32_t aWidth, uint32_t aHeight, uint32_t aPixelPitch) - - for(int i = 0; i != frameHeight; i ++) - { - for(int j = 0; j != frameWidth; j ++) - { - espec->surface->pixels[i * espec->surface->pitchinpix + j] = mdfnStella->Palette[mdfnStella->GameConsole->tia().currentFrameBuffer()[i * frameWidth + j] & 0xFF]; - } - } - - //Player_Draw(espec->surface, &espec->DisplayRect, 0, espec->SoundBuf, espec->SoundBufSize); - - //AUDIO - //Get the number of samples in a frame - uint32_t soundFrameSize = 34100.0f / mdfnStella->GameConsole->getFramerate(); - - //Process one frame of audio from stella - uint8_t samplebuffer[2048]; - mdfnStella->Sound.processFragment(samplebuffer, soundFrameSize); - - //Convert and stash it in the resampler... - for(int i = 0; i != soundFrameSize; i ++) - { - int16_t sample = (samplebuffer[i] << 8) - 32768; - int16_t frame[2] = {sample, sample}; - //Resampler::Fill(frame, 2); - } - - //Get the output - //Resampler::Fetch(espec); - assert(espec); - if(Resampler && espec->SoundBuf && espec->SoundBufMaxSize) - { - uint32_t readsize = std::min(Resampler->avail() / 2, espec->SoundBufMaxSize); - espec->SoundBufSize = Resampler->read(espec->SoundBuf, readsize) >> 1; - } - - //TIMING - espec->MasterCycles = 1LL * 100; -} - -static void SetInput (int port, const char *type, void *ptr) -{ - //Input::SetPort(port, (uint8_t*)ptr); - chee = (uint8 *)ptr; -} - -static void DoSimpleCommand (int cmd) -{ - //Reset the game - if(cmd == MDFN_MSC_RESET || cmd == MDFN_MSC_POWER) - { - mdfnStella->GameConsole->system().reset(); - } -} - -static MDFNSetting StellaSettings[] = -{ - {"stella.ramrandom", MDFNSF_NOFLAGS, "Use random values to initialize RAM", NULL, MDFNST_BOOL, "1"}, - {"stella.fastscbios", MDFNSF_NOFLAGS, "Use quick method to init SuperCharger BIOS", NULL, MDFNST_BOOL, "0"}, - {"stella.colorloss", MDFNSF_NOFLAGS, "Emulate Color loss", NULL, MDFNST_BOOL, "0"}, - {"stella.tiadriven", MDFNSF_NOFLAGS, "Randomly toggle unused TIA pins", NULL, MDFNST_BOOL, "0"}, - {"stella.palette", MDFNSF_NOFLAGS, "Color Palette to use", NULL, MDFNST_STRING, "standard"}, - {"stella.framerate", MDFNSF_NOFLAGS, "Unused", NULL, MDFNST_UINT, "60", "30", "70"}, - {NULL} -}; - -} - -using namespace MDFN_IEN_STELLA; - -MDFNGI EmulatedStella = -{ - "stella", - "Atari 2600 (Stella)", - KnownExtensions, - MODPRIO_INTERNAL_HIGH, -#ifdef WANT_DEBUGGER - &DBGInfo, -#else - NULL, -#endif - &InputInfo, - Load, - TestMagic, - NULL, - NULL, - CloseGame, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - StateAction, - Emulate, - SetInput, - DoSimpleCommand, - StellaSettings, - MDFN_MASTERCLOCK_FIXED(6000), //3072000 - 0, - TRUE, // Multires possible? - - 160, // lcm_width //160 - 5250, // lcm_height //5250 - NULL, // Dummy - - 320, // Nominal width //320 - 250, // Nominal height //250 - - 640, // Framebuffer width //640 - 480, // Framebuffer height //480 - - 2, // Number of output sound channels -}; - diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/stella.h b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/stella.h deleted file mode 100644 index 09abaed53a..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/stella.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __STELLA_H -#define __STELLA_H - -#include "../mednafen.h" -#include "../state.h" -#include "../general.h" - -//#include "interrupt.h" - -namespace MDFN_IEN_STELLA -{ - -#define mBCD(value) (((value)/10)<<4)|((value)%10) - -extern uint32 rom_size; -extern int wsc; - -} - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/Device.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/Device.hxx deleted file mode 100644 index b1446c5971..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/Device.hxx +++ /dev/null @@ -1,128 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Device.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef DEVICE_HXX -#define DEVICE_HXX - -class System; - -#include "Serializable.hxx" -#include "bspf.hxx" - -/** - Abstract base class for devices which can be attached to a 6502 - based system. - - @author Bradford W. Mott - @version $Id: Device.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class Device : public Serializable -{ - public: - /** - Create a new device - */ - Device() : mySystem(0) { } - - /** - Destructor - */ - virtual ~Device() { } - - public: - /** - Reset device to its power-on state. - - *DO NOT* call this method until the device has been attached to - the System. In fact, it should never be necessary to call this - method directly at all. - */ - virtual void reset() = 0; - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - virtual void systemCyclesReset() { } - - /** - Install device in the specified system. Invoked by the system - when the device is attached to it. - - @param system The system the device should install itself in - */ - virtual void install(System& system) = 0; - - /** - Save the current state of this device to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - virtual bool save(Serializer& out) const = 0; - - /** - Load the current state of this device from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - virtual bool load(Serializer& in) = 0; - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - virtual string name() const = 0; - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - virtual uInt8 peek(uInt16 address) = 0; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - - @return True if the poke changed the device address space, else false - */ - virtual bool poke(uInt16 address, uInt8 value) = 0; - - /** - Query/change the given address type to use the given disassembly flags - - @param address The address to modify - @param flags A bitfield of DisasmType directives for the given address - */ - virtual uInt8 getAccessFlags(uInt16 address) { return 0; } - virtual void setAccessFlags(uInt16 address, uInt8 flags) { } - - protected: - /// Pointer to the system the device is installed in or the null pointer - System* mySystem; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.cpp deleted file mode 100644 index 6c3a159347..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.cpp +++ /dev/null @@ -1,602 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: M6502.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -//#define DEBUG_OUTPUT -#define debugStream cout - -#ifdef DEBUGGER_SUPPORT - #include "Debugger.hxx" - #include "Expression.hxx" - #include "CartDebug.hxx" - #include "PackedBitArray.hxx" - - // Flags for disassembly types - #define DISASM_SKIP CartDebug::SKIP - #define DISASM_CODE CartDebug::CODE - #define DISASM_GFX CartDebug::GFX - #define DISASM_PGFX CartDebug::PGFX - #define DISASM_DATA CartDebug::DATA - #define DISASM_ROW CartDebug::ROW - #define DISASM_NONE 0 -#else - // Flags for disassembly types - #define DISASM_SKIP 0 - #define DISASM_CODE 0 - #define DISASM_GFX 0 - #define DISASM_PGFX 0 - #define DISASM_DATA 0 - #define DISASM_ROW 0 - #define DISASM_NONE 0 -#endif - -#include "M6502.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -M6502::M6502(uInt32 systemCyclesPerProcessorCycle) - : myExecutionStatus(0), - mySystem(0), - mySystemCyclesPerProcessorCycle(systemCyclesPerProcessorCycle), - myLastAccessWasRead(true), - myTotalInstructionCount(0), - myNumberOfDistinctAccesses(0), - myLastAddress(0), - myLastPeekAddress(0), - myLastPokeAddress(0), - myLastSrcAddressS(0), - myLastSrcAddressA(0), - myLastSrcAddressX(0), - myLastSrcAddressY(0), - myDataAddressForPoke(0) -{ -#ifdef DEBUGGER_SUPPORT - myDebugger = NULL; - myBreakPoints = NULL; - myReadTraps = NULL; - myWriteTraps = NULL; - - myJustHitTrapFlag = false; -#endif - - // Compute the System Cycle table - for(uInt32 t = 0; t < 256; ++t) - { - myInstructionSystemCycleTable[t] = ourInstructionCycleTable[t] * - mySystemCyclesPerProcessorCycle; - } - -#ifdef DEBUG_OUTPUT -debugStream << "( Fm Ln Cyc Clk) ( P0 P1 M0 M1 BL) " - << "flags A X Y SP Code Disasm" << endl - << endl; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -M6502::~M6502() -{ -#ifdef DEBUGGER_SUPPORT - myBreakConds.clear(); - myBreakCondNames.clear(); -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::install(System& system) -{ - // Remember which system I'm installed in - mySystem = &system; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::reset() -{ - // Clear the execution status flags - myExecutionStatus = 0; - - // Set registers to default values - A = X = Y = 0; - SP = 0xff; - PS(0x20); - - // Reset access flag - myLastAccessWasRead = true; - - // Load PC from the reset vector - PC = (uInt16)mySystem->peek(0xfffc) | ((uInt16)mySystem->peek(0xfffd) << 8); - - myTotalInstructionCount = 0; - - myLastAddress = myLastPeekAddress = myLastPokeAddress = 0; - myLastSrcAddressS = myLastSrcAddressA = - myLastSrcAddressX = myLastSrcAddressY = 0; - myDataAddressForPoke = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::irq() -{ - myExecutionStatus |= MaskableInterruptBit; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::nmi() -{ - myExecutionStatus |= NonmaskableInterruptBit; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::stop() -{ - myExecutionStatus |= StopExecutionBit; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 M6502::PS() const -{ - uInt8 ps = 0x20; - - if(N) - ps |= 0x80; - if(V) - ps |= 0x40; - if(B) - ps |= 0x10; - if(D) - ps |= 0x08; - if(I) - ps |= 0x04; - if(!notZ) - ps |= 0x02; - if(C) - ps |= 0x01; - - return ps; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::PS(uInt8 ps) -{ - N = ps & 0x80; - V = ps & 0x40; - B = true; // B = ps & 0x10; The 6507's B flag always true - D = ps & 0x08; - I = ps & 0x04; - notZ = !(ps & 0x02); - C = ps & 0x01; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline uInt8 M6502::peek(uInt16 address, uInt8 flags) -{ - if(address != myLastAddress) - { - myNumberOfDistinctAccesses++; - myLastAddress = address; - } - mySystem->incrementCycles(mySystemCyclesPerProcessorCycle); - -#ifdef DEBUGGER_SUPPORT - if(myReadTraps != NULL && myReadTraps->isSet(address)) - { - myJustHitTrapFlag = true; - myHitTrapInfo.message = "RTrap: "; - myHitTrapInfo.address = address; - } -//cerr << "addr = " << HEX4 << address << ", flags = " << Debugger::to_bin_8(flags) << endl; -#endif - - uInt8 result = mySystem->peek(address, flags); - myLastAccessWasRead = true; - myLastPeekAddress = address; - return result; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void M6502::poke(uInt16 address, uInt8 value) -{ - if(address != myLastAddress) - { - myNumberOfDistinctAccesses++; - myLastAddress = address; - } - mySystem->incrementCycles(mySystemCyclesPerProcessorCycle); - -#ifdef DEBUGGER_SUPPORT - if(myWriteTraps != NULL && myWriteTraps->isSet(address)) - { - myJustHitTrapFlag = true; - myHitTrapInfo.message = "WTrap: "; - myHitTrapInfo.address = address; - } -#endif - - mySystem->poke(address, value); - myLastAccessWasRead = false; - myLastPokeAddress = address; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool M6502::execute(uInt32 number) -{ - // Clear all of the execution status bits except for the fatal error bit - myExecutionStatus &= FatalErrorBit; - - // Loop until execution is stopped or a fatal error occurs - for(;;) - { - for(; !myExecutionStatus && (number != 0); --number) - { -#ifdef DEBUGGER_SUPPORT - if(myJustHitTrapFlag) - { - if(myDebugger->start(myHitTrapInfo.message, myHitTrapInfo.address)) - { - myJustHitTrapFlag = false; - return true; - } - } - - if(myBreakPoints != NULL) - { - if(myBreakPoints->isSet(PC)) - { - if(myDebugger->start("BP: ", PC)) - return true; - } - } - - int cond = evalCondBreaks(); - if(cond > -1) - { - string buf = "CBP: " + myBreakCondNames[cond]; - if(myDebugger->start(buf)) - return true; - } -#endif - uInt16 operandAddress = 0, intermediateAddress = 0; - uInt8 operand = 0; - - // Reset the peek/poke address pointers - myLastPeekAddress = myLastPokeAddress = myDataAddressForPoke = 0; - - // Fetch instruction at the program counter - IR = peek(PC++, DISASM_CODE); // This address represents a code section - -#ifdef DEBUG_OUTPUT - debugStream << ::hex << setw(2) << (int)A << " " - << ::hex << setw(2) << (int)X << " " - << ::hex << setw(2) << (int)Y << " " - << ::hex << setw(2) << (int)SP << " " - << setw(4) << (PC-1) << ": " - << setw(2) << (int)IR << " " -// << "<" << ourAddressingModeTable[IR] << " "; -// debugStream << hex << setw(4) << operandAddress << " "; -// << setw(3) << ourInstructionMnemonicTable[IR] - -// debugStream << "PS=" << ::hex << setw(2) << (int)PS() << " "; - -// debugStream << "Cyc=" << dec << mySystem->cycles(); - << endl; -#endif - - // Call code to execute the instruction - switch(IR) - { - // 6502 instruction emulation is generated by an M4 macro file - #include "M6502.ins" - - default: - // Oops, illegal instruction executed so set fatal error flag - myExecutionStatus |= FatalErrorBit; - } - myTotalInstructionCount++; - } - - // See if we need to handle an interrupt - if((myExecutionStatus & MaskableInterruptBit) || - (myExecutionStatus & NonmaskableInterruptBit)) - { - // Yes, so handle the interrupt - interruptHandler(); - } - - // See if execution has been stopped - if(myExecutionStatus & StopExecutionBit) - { - // Yes, so answer that everything finished fine - return true; - } - - // See if a fatal error has occured - if(myExecutionStatus & FatalErrorBit) - { - // Yes, so answer that something when wrong - return false; - } - - // See if we've executed the specified number of instructions - if(number == 0) - { - // Yes, so answer that everything finished fine - return true; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::interruptHandler() -{ - // Handle the interrupt - if((myExecutionStatus & MaskableInterruptBit) && !I) - { - mySystem->incrementCycles(7 * mySystemCyclesPerProcessorCycle); - mySystem->poke(0x0100 + SP--, (PC - 1) >> 8); - mySystem->poke(0x0100 + SP--, (PC - 1) & 0x00ff); - mySystem->poke(0x0100 + SP--, PS() & (~0x10)); - D = false; - I = true; - PC = (uInt16)mySystem->peek(0xFFFE) | ((uInt16)mySystem->peek(0xFFFF) << 8); - } - else if(myExecutionStatus & NonmaskableInterruptBit) - { - mySystem->incrementCycles(7 * mySystemCyclesPerProcessorCycle); - mySystem->poke(0x0100 + SP--, (PC - 1) >> 8); - mySystem->poke(0x0100 + SP--, (PC - 1) & 0x00ff); - mySystem->poke(0x0100 + SP--, PS() & (~0x10)); - D = false; - PC = (uInt16)mySystem->peek(0xFFFA) | ((uInt16)mySystem->peek(0xFFFB) << 8); - } - - // Clear the interrupt bits in myExecutionStatus - myExecutionStatus &= ~(MaskableInterruptBit | NonmaskableInterruptBit); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool M6502::save(Serializer& out) const -{ - const string& CPU = name(); - - try - { - out.putString(CPU); - - out.putByte((char)A); // Accumulator - out.putByte((char)X); // X index register - out.putByte((char)Y); // Y index register - out.putByte((char)SP); // Stack Pointer - out.putByte((char)IR); // Instruction register - out.putInt(PC); // Program Counter - - out.putBool(N); // N flag for processor status register - out.putBool(V); // V flag for processor status register - out.putBool(B); // B flag for processor status register - out.putBool(D); // D flag for processor status register - out.putBool(I); // I flag for processor status register - out.putBool(notZ); // Z flag complement for processor status register - out.putBool(C); // C flag for processor status register - - out.putByte((char)myExecutionStatus); - - // Indicates the number of distinct memory accesses - out.putInt(myNumberOfDistinctAccesses); - // Indicates the last address(es) which was accessed - out.putInt(myLastAddress); - out.putInt(myLastPeekAddress); - out.putInt(myLastPokeAddress); - out.putInt(myLastSrcAddressS); - out.putInt(myLastSrcAddressA); - out.putInt(myLastSrcAddressX); - out.putInt(myLastSrcAddressY); - out.putInt(myDataAddressForPoke); - } - catch(const char* msg) - { - cerr << "ERROR: M6502::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool M6502::load(Serializer& in) -{ - const string& CPU = name(); - - try - { - if(in.getString() != CPU) - return false; - - A = (uInt8) in.getByte(); // Accumulator - X = (uInt8) in.getByte(); // X index register - Y = (uInt8) in.getByte(); // Y index register - SP = (uInt8) in.getByte(); // Stack Pointer - IR = (uInt8) in.getByte(); // Instruction register - PC = (uInt16) in.getInt(); // Program Counter - - N = in.getBool(); // N flag for processor status register - V = in.getBool(); // V flag for processor status register - B = in.getBool(); // B flag for processor status register - D = in.getBool(); // D flag for processor status register - I = in.getBool(); // I flag for processor status register - notZ = in.getBool(); // Z flag complement for processor status register - C = in.getBool(); // C flag for processor status register - - myExecutionStatus = (uInt8) in.getByte(); - - // Indicates the number of distinct memory accesses - myNumberOfDistinctAccesses = (uInt32) in.getInt(); - // Indicates the last address(es) which was accessed - myLastAddress = (uInt16) in.getInt(); - myLastPeekAddress = (uInt16) in.getInt(); - myLastPokeAddress = (uInt16) in.getInt(); - myLastSrcAddressS = (uInt16) in.getInt(); - myLastSrcAddressA = (uInt16) in.getInt(); - myLastSrcAddressX = (uInt16) in.getInt(); - myLastSrcAddressY = (uInt16) in.getInt(); - myDataAddressForPoke = (uInt16) in.getInt(); - } - catch(const char* msg) - { - cerr << "ERROR: M6502::laod" << endl << " " << msg << endl; - return false; - } - - return true; -} - -#if 0 -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ostream& operator<<(ostream& out, const M6502::AddressingMode& mode) -{ - switch(mode) - { - case M6502::Absolute: - out << "$nnnn "; - break; - case M6502::AbsoluteX: - out << "$nnnn,X"; - break; - case M6502::AbsoluteY: - out << "$nnnn,Y"; - break; - case M6502::Implied: - out << "implied"; - break; - case M6502::Immediate: - out << "#$nn "; - break; - case M6502::Indirect: - out << "($nnnn)"; - break; - case M6502::IndirectX: - out << "($nn,X)"; - break; - case M6502::IndirectY: - out << "($nn),Y"; - break; - case M6502::Invalid: - out << "invalid"; - break; - case M6502::Relative: - out << "$nn "; - break; - case M6502::Zero: - out << "$nn "; - break; - case M6502::ZeroX: - out << "$nn,X "; - break; - case M6502::ZeroY: - out << "$nn,Y "; - break; - } - return out; -} -#endif - -#ifdef DEBUGGER_SUPPORT -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::attach(Debugger& debugger) -{ - // Remember the debugger for this microprocessor - myDebugger = &debugger; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -unsigned int M6502::addCondBreak(Expression *e, const string& name) -{ - myBreakConds.push_back(e); - myBreakCondNames.push_back(name); - return myBreakConds.size() - 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::delCondBreak(unsigned int brk) -{ - if(brk < myBreakConds.size()) - { - delete myBreakConds[brk]; - myBreakConds.remove_at(brk); - myBreakCondNames.remove_at(brk); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::clearCondBreaks() -{ - for(uInt32 i = 0; i < myBreakConds.size(); i++) - delete myBreakConds[i]; - - myBreakConds.clear(); - myBreakCondNames.clear(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const StringList& M6502::getCondBreakNames() const -{ - return myBreakCondNames; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int M6502::evalCondBreaks() -{ - for(uInt32 i = 0; i < myBreakConds.size(); i++) - if(myBreakConds[i]->evaluate()) - return i; - - return -1; // no break hit -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::setBreakPoints(PackedBitArray *bp) -{ - myBreakPoints = bp; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6502::setTraps(PackedBitArray *read, PackedBitArray *write) -{ - myReadTraps = read; - myWriteTraps = write; -} - -#endif - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 M6502::ourInstructionCycleTable[256] = { -// 0 1 2 3 4 5 6 7 8 9 a b c d e f - 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, // 0 - 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, // 1 - 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, // 2 - 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, // 3 - 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, // 4 - 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, // 5 - 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, // 6 - 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, // 7 - 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, // 8 - 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, // 9 - 2, 6, 2, 6, 3, 3, 3, 4, 2, 2, 2, 2, 4, 4, 4, 4, // a - 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, // b - 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, // c - 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, // d - 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, // e - 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7 // f -}; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.hxx deleted file mode 100644 index 5a9e0b9e1c..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.hxx +++ /dev/null @@ -1,364 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: M6502.hxx 2231 2011-05-10 15:04:19Z stephena $ -//============================================================================ - -#ifndef M6502_HXX -#define M6502_HXX - -class M6502; -class Debugger; -class CpuDebug; -class Expression; -class PackedBitArray; - -#include "bspf.hxx" -#include "System.hxx" -#include "Array.hxx" -#include "StringList.hxx" -#include "Serializable.hxx" - -typedef Common::Array ExpressionList; - -/** - The 6502 is an 8-bit microprocessor that has a 64K addressing space. - This class provides a high compatibility 6502 microprocessor emulator. - - The memory accesses and cycle counts it generates are valid at the - sub-instruction level and "false" reads are generated (such as the ones - produced by the Indirect,X addressing when it crosses a page boundary). - This provides provides better compatibility for hardware that has side - effects and for games which are very time sensitive. - - @author Bradford W. Mott - @version $Id: M6502.hxx 2231 2011-05-10 15:04:19Z stephena $ -*/ -class M6502 : public Serializable -{ - // The 6502 and Cart debugger classes are friends who need special access - friend class CartDebug; - friend class CpuDebug; - - public: - /** - Create a new 6502 microprocessor with the specified cycle - multiplier. The cycle multiplier is the number of system cycles - per processor cycle. - - @param systemCyclesPerProcessorCycle The cycle multiplier - */ - M6502(uInt32 systemCyclesPerProcessorCycle); - - /** - Destructor - */ - virtual ~M6502(); - - public: - /** - Install the processor in the specified system. Invoked by the - system when the processor is attached to it. - - @param system The system the processor should install itself in - */ - void install(System& system); - - /** - Reset the processor to its power-on state. This method should not - be invoked until the entire 6502 system is constructed and installed - since it involves reading the reset vector from memory. - */ - void reset(); - - /** - Request a maskable interrupt - */ - void irq(); - - /** - Request a non-maskable interrupt - */ - void nmi(); - - /** - Execute instructions until the specified number of instructions - is executed, someone stops execution, or an error occurs. Answers - true iff execution stops normally. - - @param number Indicates the number of instructions to execute - @return true iff execution stops normally - */ - bool execute(uInt32 number); - - /** - Tell the processor to stop executing instructions. Invoking this - method while the processor is executing instructions will stop - execution as soon as possible. - */ - void stop(); - - /** - Answer true iff a fatal error has occured from which the processor - cannot recover (i.e. illegal instruction, etc.) - - @return true iff a fatal error has occured - */ - bool fatalError() const { return myExecutionStatus & FatalErrorBit; } - - /** - Get the 16-bit value of the Program Counter register. - - @return The program counter register - */ - uInt16 getPC() const { return PC; } - - /** - Answer true iff the last memory access was a read. - - @return true iff last access was a read - */ - bool lastAccessWasRead() const { return myLastAccessWasRead; } - - /** - Return the last address that was part of a read/peek. Note that - reads which are part of a write are not considered here, unless - they're not the same as the last write address. This eliminates - accesses that are part of a normal read/write cycle. - - @return The address of the last read - */ - uInt16 lastReadAddress() const { - return myLastPokeAddress ? - (myLastPokeAddress != myLastPeekAddress ? myLastPeekAddress : 0) : - myLastPeekAddress; - } - - /** - Return the source of the address that was used for a write/poke. - Note that this isn't the same as the address that is poked, but - is instead the address of the *data* that is poked (if any). - - @return The address of the data used in the last poke, else 0 - */ - uInt16 lastDataAddressForPoke() const { return myDataAddressForPoke; } - - /** - Return the last data address used as part of a peek operation for - the S/A/X/Y registers. Note that if an address wasn't used (as in - immediate mode), then the address is zero. - - @return The address of the data used in the last peek, else 0 - */ - uInt16 lastSrcAddressS() const { return myLastSrcAddressS; } - uInt16 lastSrcAddressA() const { return myLastSrcAddressA; } - uInt16 lastSrcAddressX() const { return myLastSrcAddressX; } - uInt16 lastSrcAddressY() const { return myLastSrcAddressY; } - - /** - Get the total number of instructions executed so far. - - @return The number of executed instructions - */ - int totalInstructionCount() const { return myTotalInstructionCount; } - - /** - Get the number of memory accesses to distinct memory locations - - @return The number of memory accesses to distinct memory locations - */ - uInt32 distinctAccesses() const { return myNumberOfDistinctAccesses; } - - /** - Saves the current state of this device to the given Serializer. - - @param out The serializer device to save to. - @return The result of the save. True on success, false on failure. - */ - bool save(Serializer& out) const; - - /** - Loads the current state of this device from the given Serializer. - - @param in The Serializer device to load from. - @return The result of the load. True on success, false on failure. - */ - bool load(Serializer& in); - - /** - Get a null terminated string which is the processor's name (i.e. "M6532") - - @return The name of the device - */ - string name() const { return "M6502"; } - -#ifdef DEBUGGER_SUPPORT - public: - /** - Attach the specified debugger. - - @param debugger The debugger to attach to the microprocessor. - */ - void attach(Debugger& debugger); - - void setBreakPoints(PackedBitArray* bp); - void setTraps(PackedBitArray* read, PackedBitArray* write); - - unsigned int addCondBreak(Expression* e, const string& name); - void delCondBreak(unsigned int brk); - void clearCondBreaks(); - const StringList& getCondBreakNames() const; - int evalCondBreaks(); -#endif - - private: - /** - Get the byte at the specified address and update the cycle count. - Addresses marked as code are hints to the debugger/disassembler to - conclusively determine code sections, even if the disassembler cannot - find them itself. - - @param address The address from which the value should be loaded - @param flags Indicates that this address has the given flags - for type of access (CODE, DATA, GFX, etc) - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address, uInt8 flags); - - /** - Change the byte at the specified address to the given value and - update the cycle count. - - @param address The address where the value should be stored - @param value The value to be stored at the address - */ - void poke(uInt16 address, uInt8 value); - - /** - Get the 8-bit value of the Processor Status register. - - @return The processor status register - */ - uInt8 PS() const; - - /** - Change the Processor Status register to correspond to the given value. - - @param ps The value to set the processor status register to - */ - void PS(uInt8 ps); - - /** - Called after an interrupt has be requested using irq() or nmi() - */ - void interruptHandler(); - - private: - uInt8 A; // Accumulator - uInt8 X; // X index register - uInt8 Y; // Y index register - uInt8 SP; // Stack Pointer - uInt8 IR; // Instruction register - uInt16 PC; // Program Counter - - bool N; // N flag for processor status register - bool V; // V flag for processor status register - bool B; // B flag for processor status register - bool D; // D flag for processor status register - bool I; // I flag for processor status register - bool notZ; // Z flag complement for processor status register - bool C; // C flag for processor status register - - /** - Bit fields used to indicate that certain conditions need to be - handled such as stopping execution, fatal errors, maskable interrupts - and non-maskable interrupts (in myExecutionStatus) - */ - enum - { - StopExecutionBit = 0x01, - FatalErrorBit = 0x02, - MaskableInterruptBit = 0x04, - NonmaskableInterruptBit = 0x08 - }; - uInt8 myExecutionStatus; - - /// Pointer to the system the processor is installed in or the null pointer - System* mySystem; - - /// Indicates the number of system cycles per processor cycle - const uInt32 mySystemCyclesPerProcessorCycle; - - /// Table of system cycles for each instruction - uInt32 myInstructionSystemCycleTable[256]; - - /// Indicates if the last memory access was a read or not - bool myLastAccessWasRead; - - /// The total number of instructions executed so far - int myTotalInstructionCount; - - /// Indicates the numer of distinct memory accesses - uInt32 myNumberOfDistinctAccesses; - - /// Indicates the last address which was accessed - uInt16 myLastAddress; - - /// Indicates the last address which was accessed specifically - /// by a peek or poke command - uInt16 myLastPeekAddress, myLastPokeAddress; - - /// Indicates the last address used to access data by a peek command - /// for the CPU registers (S/A/X/Y) - uInt16 myLastSrcAddressS, myLastSrcAddressA, - myLastSrcAddressX, myLastSrcAddressY; - - /// Indicates the data address used by the last command that performed - /// a poke (currently, the last address used by STx) - /// If an address wasn't used (ie, as in immediate mode), the address - /// is set to zero - uInt16 myDataAddressForPoke; - -#ifdef DEBUGGER_SUPPORT - /// Pointer to the debugger for this processor or the null pointer - Debugger* myDebugger; - - PackedBitArray* myBreakPoints; - PackedBitArray* myReadTraps; - PackedBitArray* myWriteTraps; - - // Did we just now hit a trap? - bool myJustHitTrapFlag; - struct HitTrapInfo { - string message; - int address; - }; - HitTrapInfo myHitTrapInfo; - - StringList myBreakCondNames; - ExpressionList myBreakConds; -#endif - - private: - /** - Table of instruction processor cycle times. In some cases additional - cycles will be added during the execution of an instruction. - */ - static uInt32 ourInstructionCycleTable[256]; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.ins b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.ins deleted file mode 100644 index a6ca940112..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6502.ins +++ /dev/null @@ -1,4648 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -/** - Code and cases to emulate each of the 6502 instructions. - - Recompile with the following: - 'm4 M6502.m4 > M6502.ins' - - @author Bradford W. Mott and Stephen Anthony -*/ - -#ifndef NOTSAMEPAGE - #define NOTSAMEPAGE(_addr1, _addr2) (((_addr1) ^ (_addr2)) & 0xff00) -#endif - -#ifndef SET_LAST_PEEK - #ifdef DEBUGGER_SUPPORT - #define SET_LAST_PEEK(_addr1, _addr2) _addr1 = _addr2; - #else - #define SET_LAST_PEEK(_addr1, _addr2) - #endif -#endif - -#ifndef CLEAR_LAST_PEEK - #ifdef DEBUGGER_SUPPORT - #define CLEAR_LAST_PEEK(_addr) _addr = 0; - #else - #define CLEAR_LAST_PEEK(_addr) - #endif -#endif - -#ifndef SET_LAST_POKE - #ifdef DEBUGGER_SUPPORT - #define SET_LAST_POKE(_addr) myDataAddressForPoke = _addr; - #else - #define SET_LAST_POKE(_addr) - #endif -#endif - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -case 0x69: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x65: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x75: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x6d: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x7d: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x79: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x61: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x71: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - - -case 0x4b: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - A &= operand; - - // Set carry flag according to the right-most bit - C = A & 0x01; - - A = (A >> 1) & 0x7f; - - notZ = A; - N = A & 0x80; -} -break; - - -case 0x0b: -case 0x2b: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - A &= operand; - notZ = A; - N = A & 0x80; - C = N; -} -break; - - -case 0x29: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x25: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x35: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x2d: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x3d: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x39: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x21: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x31: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - A &= operand; - notZ = A; - N = A & 0x80; -} -break; - - -case 0x8b: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - // NOTE: The implementation of this instruction is based on - // information from the 64doc.txt file. This instruction is - // reported to be unstable! - A = (A | 0xee) & X & operand; - notZ = A; - N = A & 0x80; -} -break; - - -case 0x6b: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - // NOTE: The implementation of this instruction is based on - // information from the 64doc.txt file. There are mixed - // reports on its operation! - if(!D) - { - A &= operand; - A = ((A >> 1) & 0x7f) | (C ? 0x80 : 0x00); - - C = A & 0x40; - V = (A & 0x40) ^ ((A & 0x20) << 1); - - notZ = A; - N = A & 0x80; - } - else - { - uInt8 value = A & operand; - - A = ((value >> 1) & 0x7f) | (C ? 0x80 : 0x00); - N = C; - notZ = A; - V = (value ^ A) & 0x40; - - if(((value & 0x0f) + (value & 0x01)) > 0x05) - { - A = (A & 0xf0) | ((A + 0x06) & 0x0f); - } - - if(((value & 0xf0) + (value & 0x10)) > 0x50) - { - A = (A + 0x60) & 0xff; - C = 1; - } - else - { - C = 0; - } - } -} -break; - - -case 0x0a: -{ - peek(PC, DISASM_NONE); -} -{ - // Set carry flag according to the left-most bit in A - C = A & 0x80; - - A <<= 1; - - notZ = A; - N = A & 0x80; -} -break; - -case 0x06: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x16: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x0e: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x1e: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - - -case 0x90: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(!C) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0xb0: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(C) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0xf0: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(!notZ) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0x24: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - notZ = (A & operand); - N = operand & 0x80; - V = operand & 0x40; -} -break; - -case 0x2C: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - notZ = (A & operand); - N = operand & 0x80; - V = operand & 0x40; -} -break; - - -case 0x30: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(N) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0xD0: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(notZ) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0x10: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(!N) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0x00: -{ - peek(PC++, DISASM_CODE); - - B = true; - - poke(0x0100 + SP--, PC >> 8); - poke(0x0100 + SP--, PC & 0x00ff); - poke(0x0100 + SP--, PS()); - - I = true; - - PC = peek(0xfffe, DISASM_NONE); - PC |= ((uInt16)peek(0xffff, DISASM_NONE) << 8); -} -break; - - -case 0x50: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(!V) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0x70: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - if(V) - { - peek(PC, DISASM_NONE); - uInt16 address = PC + (Int8)operand; - if(NOTSAMEPAGE(PC, address)) - peek((PC & 0xFF00) | (address & 0x00FF), DISASM_NONE); - PC = address; - } -} -break; - - -case 0x18: -{ - peek(PC, DISASM_NONE); -} -{ - C = false; -} -break; - - -case 0xd8: -{ - peek(PC, DISASM_NONE); -} -{ - D = false; -} -break; - - -case 0x58: -{ - peek(PC, DISASM_NONE); -} -{ - I = false; -} -break; - - -case 0xb8: -{ - peek(PC, DISASM_NONE); -} -{ - V = false; -} -break; - - -case 0xc9: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xc5: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xd5: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xcd: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xdd: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xd9: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xc1: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xd1: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - uInt16 value = (uInt16)A - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - - -case 0xe0: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - uInt16 value = (uInt16)X - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xe4: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)X - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xec: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)X - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - - -case 0xc0: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - uInt16 value = (uInt16)Y - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xc4: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)Y - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - -case 0xcc: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - uInt16 value = (uInt16)Y - (uInt16)operand; - - notZ = value; - N = value & 0x0080; - C = !(value & 0x0100); -} -break; - - -case 0xcf: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - uInt16 value2 = (uInt16)A - (uInt16)value; - notZ = value2; - N = value2 & 0x0080; - C = !(value2 & 0x0100); -} -break; - -case 0xdf: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - uInt16 value2 = (uInt16)A - (uInt16)value; - notZ = value2; - N = value2 & 0x0080; - C = !(value2 & 0x0100); -} -break; - -case 0xdb: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - uInt16 value2 = (uInt16)A - (uInt16)value; - notZ = value2; - N = value2 & 0x0080; - C = !(value2 & 0x0100); -} -break; - -case 0xc7: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - uInt16 value2 = (uInt16)A - (uInt16)value; - notZ = value2; - N = value2 & 0x0080; - C = !(value2 & 0x0100); -} -break; - -case 0xd7: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - uInt16 value2 = (uInt16)A - (uInt16)value; - notZ = value2; - N = value2 & 0x0080; - C = !(value2 & 0x0100); -} -break; - -case 0xc3: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - uInt16 value2 = (uInt16)A - (uInt16)value; - notZ = value2; - N = value2 & 0x0080; - C = !(value2 & 0x0100); -} -break; - -case 0xd3: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - uInt16 value2 = (uInt16)A - (uInt16)value; - notZ = value2; - N = value2 & 0x0080; - C = !(value2 & 0x0100); -} -break; - - -case 0xc6: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - -case 0xd6: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - -case 0xce: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - -case 0xde: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand - 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - - -case 0xca: -{ - peek(PC, DISASM_NONE); -} -{ - X--; - - notZ = X; - N = X & 0x80; -} -break; - - -case 0x88: -{ - peek(PC, DISASM_NONE); -} -{ - Y--; - - notZ = Y; - N = Y & 0x80; -} -break; - - -case 0x49: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x45: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x55: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x4d: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x5d: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x59: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x41: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x51: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - - -case 0xe6: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand + 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - -case 0xf6: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand + 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - -case 0xee: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand + 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - -case 0xfe: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = operand + 1; - poke(operandAddress, value); - - notZ = value; - N = value & 0x80; -} -break; - - -case 0xe8: -{ - peek(PC, DISASM_NONE); -} -{ - X++; - notZ = X; - N = X & 0x80; -} -break; - - -case 0xc8: -{ - peek(PC, DISASM_NONE); -} -{ - Y++; - notZ = Y; - N = Y & 0x80; -} -break; - - -case 0xef: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - operand = operand + 1; - poke(operandAddress, operand); - - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xff: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - operand = operand + 1; - poke(operandAddress, operand); - - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xfb: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - operand = operand + 1; - poke(operandAddress, operand); - - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xe7: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - operand = operand + 1; - poke(operandAddress, operand); - - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xf7: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - operand = operand + 1; - poke(operandAddress, operand); - - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xe3: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - operand = operand + 1; - poke(operandAddress, operand); - - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xf3: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - operand = operand + 1; - poke(operandAddress, operand); - - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - - -case 0x4c: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); -} -{ - PC = operandAddress; -} -break; - -case 0x6c: -{ - uInt16 addr = peek(PC++, DISASM_CODE); - addr |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - - // Simulate the error in the indirect addressing mode! - uInt16 high = NOTSAMEPAGE(addr, addr + 1) ? (addr & 0xff00) : (addr + 1); - - operandAddress = peek(addr, DISASM_DATA); - operandAddress |= ((uInt16)peek(high, DISASM_DATA) << 8); -} -{ - PC = operandAddress; -} -break; - - -case 0x20: -{ - uInt8 low = peek(PC++, DISASM_CODE); - peek(0x0100 + SP, DISASM_NONE); - - // It seems that the 650x does not push the address of the next instruction - // on the stack it actually pushes the address of the next instruction - // minus one. This is compensated for in the RTS instruction - poke(0x0100 + SP--, PC >> 8); - poke(0x0100 + SP--, PC & 0xff); - - PC = (low | ((uInt16)peek(PC, DISASM_CODE) << 8)); -} -break; - - -case 0xbb: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - A = X = SP = SP & operand; - notZ = A; - N = A & 0x80; -} -break; - - -////////////////////////////////////////////////// -// LAX -case 0xaf: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - A = operand; - X = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xbf: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - A = operand; - X = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xa7: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - A = operand; - X = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xb7: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += Y; - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) // TODO - check this -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - A = operand; - X = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xa3: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) // TODO - check this -{ - A = operand; - X = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xb3: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) // TODO - check this -{ - A = operand; - X = operand; - notZ = A; - N = A & 0x80; -} -break; -////////////////////////////////////////////////// - - -////////////////////////////////////////////////// -// LDA -case 0xa9: -{ - operand = peek(PC++, DISASM_CODE); -} -CLEAR_LAST_PEEK(myLastSrcAddressA) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xa5: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xb5: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xad: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xbd: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xb9: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xa1: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0xb1: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A = operand; - notZ = A; - N = A & 0x80; -} -break; -////////////////////////////////////////////////// - - -////////////////////////////////////////////////// -// LDX -case 0xa2: -{ - operand = peek(PC++, DISASM_CODE); -} -CLEAR_LAST_PEEK(myLastSrcAddressX) -{ - X = operand; - notZ = X; - N = X & 0x80; -} -break; - -case 0xa6: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - X = operand; - notZ = X; - N = X & 0x80; -} -break; - -case 0xb6: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += Y; - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - X = operand; - notZ = X; - N = X & 0x80; -} -break; - -case 0xae: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - X = operand; - notZ = X; - N = X & 0x80; -} -break; - -case 0xbe: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressX, intermediateAddress) -{ - X = operand; - notZ = X; - N = X & 0x80; -} -break; -////////////////////////////////////////////////// - - -////////////////////////////////////////////////// -// LDY -case 0xa0: -{ - operand = peek(PC++, DISASM_CODE); -} -CLEAR_LAST_PEEK(myLastSrcAddressY) -{ - Y = operand; - notZ = Y; - N = Y & 0x80; -} -break; - -case 0xa4: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressY, intermediateAddress) -{ - Y = operand; - notZ = Y; - N = Y & 0x80; -} -break; - -case 0xb4: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressY, intermediateAddress) -{ - Y = operand; - notZ = Y; - N = Y & 0x80; -} -break; - -case 0xac: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressY, intermediateAddress) -{ - Y = operand; - notZ = Y; - N = Y & 0x80; -} -break; - -case 0xbc: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressY, intermediateAddress) -{ - Y = operand; - notZ = Y; - N = Y & 0x80; -} -break; -////////////////////////////////////////////////// - - -case 0x4a: -{ - peek(PC, DISASM_NONE); -} -{ - // Set carry flag according to the right-most bit - C = A & 0x01; - - A = (A >> 1) & 0x7f; - - notZ = A; - N = A & 0x80; -} -break; - - -case 0x46: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x56: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x4e: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x5e: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - - -case 0xab: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - // NOTE: The implementation of this instruction is based on - // information from the 64doc.txt file. This instruction is - // reported to be very unstable! - A = X = (A | 0xee) & operand; - notZ = A; - N = A & 0x80; -} -break; - - -case 0x1a: -case 0x3a: -case 0x5a: -case 0x7a: -case 0xda: -case 0xea: -case 0xfa: -{ - peek(PC, DISASM_NONE); -} -{ -} -break; - -case 0x80: -case 0x82: -case 0x89: -case 0xc2: -case 0xe2: -{ - operand = peek(PC++, DISASM_CODE); -} -{ -} -break; - -case 0x04: -case 0x44: -case 0x64: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ -} -break; - -case 0x14: -case 0x34: -case 0x54: -case 0x74: -case 0xd4: -case 0xf4: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -{ -} -break; - -case 0x0c: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ -} -break; - -case 0x1c: -case 0x3c: -case 0x5c: -case 0x7c: -case 0xdc: -case 0xfc: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ -} -break; - - -////////////////////////////////////////////////// -// ORA -case 0x09: -{ - operand = peek(PC++, DISASM_CODE); -} -CLEAR_LAST_PEEK(myLastSrcAddressA) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x05: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x15: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x0d: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x1d: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x19: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x01: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x11: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -SET_LAST_PEEK(myLastSrcAddressA, intermediateAddress) -{ - A |= operand; - notZ = A; - N = A & 0x80; -} -break; -////////////////////////////////////////////////// - - -case 0x48: -{ - peek(PC, DISASM_NONE); -} -// TODO - add tracking for this opcode -{ - poke(0x0100 + SP--, A); -} -break; - - -case 0x08: -{ - peek(PC, DISASM_NONE); -} -// TODO - add tracking for this opcode -{ - poke(0x0100 + SP--, PS()); -} -break; - - -case 0x68: -{ - peek(PC, DISASM_NONE); -} -// TODO - add tracking for this opcode -{ - peek(0x0100 + SP++, DISASM_NONE); - A = peek(0x0100 + SP, DISASM_NONE); - notZ = A; - N = A & 0x80; -} -break; - - -case 0x28: -{ - peek(PC, DISASM_NONE); -} -// TODO - add tracking for this opcode -{ - peek(0x0100 + SP++, DISASM_NONE); - PS(peek(0x0100 + SP, DISASM_NONE)); -} -break; - - -case 0x2f: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = (operand << 1) | (C ? 1 : 0); - poke(operandAddress, value); - - A &= value; - C = operand & 0x80; - notZ = A; - N = A & 0x80; -} -break; - -case 0x3f: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = (operand << 1) | (C ? 1 : 0); - poke(operandAddress, value); - - A &= value; - C = operand & 0x80; - notZ = A; - N = A & 0x80; -} -break; - -case 0x3b: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = (operand << 1) | (C ? 1 : 0); - poke(operandAddress, value); - - A &= value; - C = operand & 0x80; - notZ = A; - N = A & 0x80; -} -break; - -case 0x27: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = (operand << 1) | (C ? 1 : 0); - poke(operandAddress, value); - - A &= value; - C = operand & 0x80; - notZ = A; - N = A & 0x80; -} -break; - -case 0x37: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = (operand << 1) | (C ? 1 : 0); - poke(operandAddress, value); - - A &= value; - C = operand & 0x80; - notZ = A; - N = A & 0x80; -} -break; - -case 0x23: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = (operand << 1) | (C ? 1 : 0); - poke(operandAddress, value); - - A &= value; - C = operand & 0x80; - notZ = A; - N = A & 0x80; -} -break; - -case 0x33: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - uInt8 value = (operand << 1) | (C ? 1 : 0); - poke(operandAddress, value); - - A &= value; - C = operand & 0x80; - notZ = A; - N = A & 0x80; -} -break; - - -case 0x2a: -{ - peek(PC, DISASM_NONE); -} -{ - bool oldC = C; - - // Set carry flag according to the left-most bit - C = A & 0x80; - - A = (A << 1) | (oldC ? 1 : 0); - - notZ = A; - N = A & 0x80; -} -break; - - -case 0x26: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the left-most bit in operand - C = operand & 0x80; - - operand = (operand << 1) | (oldC ? 1 : 0); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x36: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the left-most bit in operand - C = operand & 0x80; - - operand = (operand << 1) | (oldC ? 1 : 0); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x2e: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the left-most bit in operand - C = operand & 0x80; - - operand = (operand << 1) | (oldC ? 1 : 0); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x3e: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the left-most bit in operand - C = operand & 0x80; - - operand = (operand << 1) | (oldC ? 1 : 0); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - - -case 0x6a: -{ - peek(PC, DISASM_NONE); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = A & 0x01; - - A = ((A >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - - notZ = A; - N = A & 0x80; -} -break; - -case 0x66: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x76: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x6e: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - -case 0x7e: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - notZ = operand; - N = operand & 0x80; -} -break; - - -case 0x6f: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x7f: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x7b: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x67: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x77: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x63: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - -case 0x73: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - bool oldC = C; - - // Set carry flag according to the right-most bit - C = operand & 0x01; - - operand = ((operand >> 1) & 0x7f) | (oldC ? 0x80 : 0x00); - poke(operandAddress, operand); - - if(!D) - { - Int32 sum = A + operand + (C ? 1 : 0); - N = sum & 0x80; - V = ~(A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - C = sum & 0xff00; - - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) + (operand & 0x0f) + (C ? 1 : 0); - Int32 hi = (A & 0xf0) + (operand & 0xf0); - notZ = (lo+hi) & 0xff; - if(lo > 0x09) - { - hi += 0x10; - lo += 0x06; - } - N = hi & 0x80; - V = ~(A ^ operand) & (A ^ hi) & 0x80; - if(hi > 0x90) - hi += 0x60; - C = hi & 0xff00; - - A = (lo & 0x0f) + (hi & 0xf0); - } -} -break; - - -case 0x40: -{ - peek(PC, DISASM_NONE); -} -{ - peek(0x0100 + SP++, DISASM_NONE); - PS(peek(0x0100 + SP++, DISASM_NONE)); - PC = peek(0x0100 + SP++, DISASM_NONE); - PC |= ((uInt16)peek(0x0100 + SP, DISASM_NONE) << 8); -} -break; - - -case 0x60: -{ - peek(PC, DISASM_NONE); -} -{ - peek(0x0100 + SP++, DISASM_NONE); - PC = peek(0x0100 + SP++, DISASM_NONE); - PC |= ((uInt16)peek(0x0100 + SP, DISASM_NONE) << 8); - peek(PC++, DISASM_CODE); -} -break; - - -case 0x8f: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); -} -{ - poke(operandAddress, A & X); -} -break; - -case 0x87: -{ - operandAddress = peek(PC++, DISASM_CODE); -} -{ - poke(operandAddress, A & X); -} -break; - -case 0x97: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + Y) & 0xFF; -} -{ - poke(operandAddress, A & X); -} -break; - -case 0x83: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); -} -{ - poke(operandAddress, A & X); -} -break; - - -case 0xe9: -case 0xeb: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xe5: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xf5: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - peek(intermediateAddress, DISASM_DATA); - intermediateAddress += X; - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xed: -{ - intermediateAddress = peek(PC++, DISASM_CODE); - intermediateAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xfd: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + X); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + X) > 0xFF) - { - intermediateAddress = (high | low) + X; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xf9: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xe1: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - intermediateAddress = peek(pointer++, DISASM_DATA); - intermediateAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(intermediateAddress, DISASM_DATA); -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - -case 0xf1: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - intermediateAddress = high | (uInt8)(low + Y); - operand = peek(intermediateAddress, DISASM_DATA); - if((low + Y) > 0xFF) - { - intermediateAddress = (high | low) + Y; - operand = peek(intermediateAddress, DISASM_DATA); - } -} -{ - // N, V, Z, C flags are the same in either mode (C calculated at the end) - Int32 sum = A - operand - (C ? 0 : 1); - N = sum & 0x80; - V = (A ^ operand) & (A ^ sum) & 0x80; - notZ = sum & 0xff; - - if(!D) - { - A = (uInt8) sum; - } - else - { - Int32 lo = (A & 0x0f) - (operand & 0x0f) - (C ? 0 : 1); - Int32 hi = (A & 0xf0) - (operand & 0xf0); - if(lo & 0x10) - { - lo -= 6; - hi--; - } - if(hi & 0x0100) - hi -= 0x60; - - A = (lo & 0x0f) | (hi & 0xf0); - } - C = (sum & 0xff00) == 0; -} -break; - - -case 0xcb: -{ - operand = peek(PC++, DISASM_CODE); -} -{ - uInt16 value = (uInt16)(X & A) - (uInt16)operand; - X = (value & 0xff); - - notZ = X; - N = X & 0x80; - C = !(value & 0x0100); -} -break; - - -case 0x38: -{ - peek(PC, DISASM_NONE); -} -{ - C = true; -} -break; - - -case 0xf8: -{ - peek(PC, DISASM_NONE); -} -{ - D = true; -} -break; - - -case 0x78: -{ - peek(PC, DISASM_NONE); -} -{ - I = true; -} -break; - - -case 0x9f: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; -} -{ - // NOTE: There are mixed reports on the actual operation - // of this instruction! - poke(operandAddress, A & X & (((operandAddress >> 8) & 0xff) + 1)); -} -break; - -case 0x93: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; -} -{ - // NOTE: There are mixed reports on the actual operation - // of this instruction! - poke(operandAddress, A & X & (((operandAddress >> 8) & 0xff) + 1)); -} -break; - - -case 0x9b: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; -} -{ - // NOTE: There are mixed reports on the actual operation - // of this instruction! - SP = A & X; - poke(operandAddress, A & X & (((operandAddress >> 8) & 0xff) + 1)); -} -break; - - -case 0x9e: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; -} -{ - // NOTE: There are mixed reports on the actual operation - // of this instruction! - poke(operandAddress, X & (((operandAddress >> 8) & 0xff) + 1)); -} -break; - - -case 0x9c: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; -} -{ - // NOTE: There are mixed reports on the actual operation - // of this instruction! - poke(operandAddress, Y & (((operandAddress >> 8) & 0xff) + 1)); -} -break; - - -case 0x0f: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x1f: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x1b: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x07: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x17: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x03: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x13: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the left-most bit in value - C = operand & 0x80; - - operand <<= 1; - poke(operandAddress, operand); - - A |= operand; - notZ = A; - N = A & 0x80; -} -break; - - -case 0x4f: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x5f: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x5b: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x47: -{ - operandAddress = peek(PC++, DISASM_CODE); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x57: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x43: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - -case 0x53: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; - operand = peek(operandAddress, DISASM_DATA); - poke(operandAddress, operand); -} -{ - // Set carry flag according to the right-most bit in value - C = operand & 0x01; - - operand = (operand >> 1) & 0x7f; - poke(operandAddress, operand); - - A ^= operand; - notZ = A; - N = A & 0x80; -} -break; - - -////////////////////////////////////////////////// -// STA -case 0x85: -{ - operandAddress = peek(PC++, DISASM_CODE); -} -SET_LAST_POKE(myLastSrcAddressA) -{ - poke(operandAddress, A); -} -break; - -case 0x95: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; -} -{ - poke(operandAddress, A); -} -break; - -case 0x8d: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); -} -{ - poke(operandAddress, A); -} -break; - -case 0x9d: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + X), DISASM_DATA); - operandAddress = (high | low) + X; -} -{ - poke(operandAddress, A); -} -break; - -case 0x99: -{ - uInt16 low = peek(PC++, DISASM_CODE); - uInt16 high = ((uInt16)peek(PC++, DISASM_CODE) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; -} -{ - poke(operandAddress, A); -} -break; - -case 0x81: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - peek(pointer, DISASM_DATA); - pointer += X; - operandAddress = peek(pointer++, DISASM_DATA); - operandAddress |= ((uInt16)peek(pointer, DISASM_DATA) << 8); -} -{ - poke(operandAddress, A); -} -break; - -case 0x91: -{ - uInt8 pointer = peek(PC++, DISASM_CODE); - uInt16 low = peek(pointer++, DISASM_DATA); - uInt16 high = ((uInt16)peek(pointer, DISASM_DATA) << 8); - peek(high | (uInt8)(low + Y), DISASM_DATA); - operandAddress = (high | low) + Y; -} -{ - poke(operandAddress, A); -} -break; -////////////////////////////////////////////////// - - -////////////////////////////////////////////////// -// STX -case 0x86: -{ - operandAddress = peek(PC++, DISASM_CODE); -} -SET_LAST_POKE(myLastSrcAddressX) -{ - poke(operandAddress, X); -} -break; - -case 0x96: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + Y) & 0xFF; -} -{ - poke(operandAddress, X); -} -break; - -case 0x8e: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); -} -{ - poke(operandAddress, X); -} -break; -////////////////////////////////////////////////// - - -////////////////////////////////////////////////// -// STY -case 0x84: -{ - operandAddress = peek(PC++, DISASM_CODE); -} -SET_LAST_POKE(myLastSrcAddressY) -{ - poke(operandAddress, Y); -} -break; - -case 0x94: -{ - operandAddress = peek(PC++, DISASM_CODE); - peek(operandAddress, DISASM_DATA); - operandAddress = (operandAddress + X) & 0xFF; -} -{ - poke(operandAddress, Y); -} -break; - -case 0x8c: -{ - operandAddress = peek(PC++, DISASM_CODE); - operandAddress |= ((uInt16)peek(PC++, DISASM_CODE) << 8); -} -{ - poke(operandAddress, Y); -} -break; -////////////////////////////////////////////////// - - -////////////////////////////////////////////////// -// Remaining MOVE opcodes -case 0xaa: -{ - peek(PC, DISASM_NONE); -} -SET_LAST_PEEK(myLastSrcAddressX, myLastSrcAddressA) -{ - X = A; - notZ = X; - N = X & 0x80; -} -break; - - -case 0xa8: -{ - peek(PC, DISASM_NONE); -} -SET_LAST_PEEK(myLastSrcAddressY, myLastSrcAddressA) -{ - Y = A; - notZ = Y; - N = Y & 0x80; -} -break; - - -case 0xba: -{ - peek(PC, DISASM_NONE); -} -SET_LAST_PEEK(myLastSrcAddressX, myLastSrcAddressS) -{ - X = SP; - notZ = X; - N = X & 0x80; -} -break; - - -case 0x8a: -{ - peek(PC, DISASM_NONE); -} -SET_LAST_PEEK(myLastSrcAddressA, myLastSrcAddressX) -{ - A = X; - notZ = A; - N = A & 0x80; -} -break; - - -case 0x9a: -{ - peek(PC, DISASM_NONE); -} -SET_LAST_PEEK(myLastSrcAddressS, myLastSrcAddressX) -{ - SP = X; -} -break; - - -case 0x98: -{ - peek(PC, DISASM_NONE); -} -SET_LAST_PEEK(myLastSrcAddressA, myLastSrcAddressY) -{ - A = Y; - notZ = A; - N = A & 0x80; -} -break; -////////////////////////////////////////////////// diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6532.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6532.cpp deleted file mode 100644 index 25e27482d2..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6532.cpp +++ /dev/null @@ -1,394 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: M6532.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -//ROBO: For cheats -//#include -//#include - -#include -#include - -#include "Console.hxx" -#include "Settings.hxx" -#include "Switches.hxx" -#include "System.hxx" - -#include "M6532.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -M6532::M6532(const Console& console, const Settings& settings) - : myConsole(console), - mySettings(settings) -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -M6532::~M6532() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6532::reset() -{ - // Initialize the 128 bytes of memory - if(mySettings.getBool("ramrandom")) - for(uInt32 t = 0; t < 128; ++t) - myRAM[t] = mySystem->randGenerator().next(); - else - memset(myRAM, 0, 128); - - //ROBO: Map memory for cheats - //MDFNMP_AddRAM(128, 128, myRAM); - - // The timer absolutely cannot be initialized to zero; some games will - // loop or hang (notably Solaris and H.E.R.O.) - myTimer = (0xff - (mySystem->randGenerator().next() % 0xfe)) << 10; - myIntervalShift = 10; - myCyclesWhenTimerSet = 0; - myInterruptEnabled = false; - myInterruptTriggered = false; - - // Zero the I/O registers - myDDRA = myDDRB = myOutA = myOutB = 0x00; - - // Zero the timer registers - myOutTimer[0] = myOutTimer[1] = myOutTimer[2] = myOutTimer[3] = 0x00; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6532::systemCyclesReset() -{ - // System cycles are being reset to zero so we need to adjust - // the cycle count we remembered when the timer was last set - myCyclesWhenTimerSet -= mySystem->cycles(); - - // We should also inform any 'smart' controllers as well - myConsole.controller(Controller::Left).systemCyclesReset(); - myConsole.controller(Controller::Right).systemCyclesReset(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6532::install(System& system) -{ - install(system, *this); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6532::install(System& system, Device& device) -{ - // Remember which system I'm installed in - mySystem = &system; - - uInt16 shift = mySystem->pageShift(); - uInt16 mask = mySystem->pageMask(); - - // Make sure the system we're being installed in has a page size that'll work - assert((0x1080 & mask) == 0); - - // All accesses are to the given device - System::PageAccess access(0, 0, 0, &device, System::PA_READWRITE); - - // We're installing in a 2600 system - for(int address = 0; address < 8192; address += (1 << shift)) - if((address & 0x1080) == 0x0080) - mySystem->setPageAccess(address >> shift, access); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 M6532::peek(uInt16 addr) -{ - // Access RAM directly. Originally, accesses to RAM could bypass - // this method and its pages could be installed directly into the - // system. However, certain cartridges (notably 4A50) can mirror - // the RAM address space, making it necessary to chain accesses. - if((addr & 0x1080) == 0x0080 && (addr & 0x0200) == 0x0000) - { - return myRAM[addr & 0x007f]; - } - - switch(addr & 0x07) - { - case 0x00: // SWCHA - Port A I/O Register (Joystick) - { - uInt8 value = 0x00; - - Controller& port0 = myConsole.controller(Controller::Left); - if(port0.read(Controller::One)) value |= 0x10; - if(port0.read(Controller::Two)) value |= 0x20; - if(port0.read(Controller::Three)) value |= 0x40; - if(port0.read(Controller::Four)) value |= 0x80; - - Controller& port1 = myConsole.controller(Controller::Right); - if(port1.read(Controller::One)) value |= 0x01; - if(port1.read(Controller::Two)) value |= 0x02; - if(port1.read(Controller::Three)) value |= 0x04; - if(port1.read(Controller::Four)) value |= 0x08; - - // Each pin is high (1) by default and will only go low (0) if either - // (a) External device drives the pin low - // (b) Corresponding bit in SWACNT = 1 and SWCHA = 0 - // Thanks to A. Herbert for this info - return (myOutA | ~myDDRA) & value; - } - - case 0x01: // SWACNT - Port A Data Direction Register - { - return myDDRA; - } - - case 0x02: // SWCHB - Port B I/O Register (Console switches) - { - return (myOutB | ~myDDRB) & (myConsole.switches().read() | myDDRB); - } - - case 0x03: // SWBCNT - Port B Data Direction Register - { - return myDDRB; - } - - case 0x04: // Timer Output - case 0x06: - { - myInterruptTriggered = false; - Int32 timer = timerClocks(); - - // See if the timer has expired yet? - // Note that this constant comes from z26, and corresponds to - // 256 intervals of T1024T (ie, the maximum that the timer should hold) - // I'm not sure why this is required, but quite a few PAL ROMs fail - // if we just check >= 0. - if(!(timer & 0x40000)) - { - return (timer >> myIntervalShift) & 0xff; - } - else - { - if(timer != -1) - myInterruptTriggered = true; - - // According to the M6532 documentation, the timer continues to count - // down to -255 timer clocks after wraparound. However, it isn't - // entirely clear what happens *after* if reaches -255. - // For now, we'll let it continuously wrap around. - return timer & 0xff; - } - } - - case 0x05: // Interrupt Flag - case 0x07: - { - if((timerClocks() >= 0) || (myInterruptEnabled && myInterruptTriggered)) - return 0x00; - else - return 0x80; - } - - default: - { -#ifdef DEBUG_ACCESSES - cerr << "BAD M6532 Peek: " << hex << addr << endl; -#endif - return 0; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool M6532::poke(uInt16 addr, uInt8 value) -{ - // Access RAM directly. Originally, accesses to RAM could bypass - // this method and its pages could be installed directly into the - // system. However, certain cartridges (notably 4A50) can mirror - // the RAM address space, making it necessary to chain accesses. - if((addr & 0x1080) == 0x0080 && (addr & 0x0200) == 0x0000) - { - myRAM[addr & 0x007f] = value; - return true; - } - - // A2 distinguishes I/O registers from the timer - if((addr & 0x04) != 0) - { - if((addr & 0x10) != 0) - { - myInterruptEnabled = (addr & 0x08); - setTimerRegister(value, addr & 0x03); - } - } - else - { - switch(addr & 0x03) - { - case 0: // SWCHA - Port A I/O Register (Joystick) - { - myOutA = value; - setPinState(); - break; - } - - case 1: // SWACNT - Port A Data Direction Register - { - myDDRA = value; - setPinState(); - break; - } - - case 2: // SWCHB - Port B I/O Register (Console switches) - { - myOutB = value; - break; - } - - case 3: // SWBCNT - Port B Data Direction Register - { - myDDRB = value; - break; - } - } - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6532::setTimerRegister(uInt8 value, uInt8 interval) -{ - static const uInt8 shift[] = { 0, 3, 6, 10 }; - - myInterruptTriggered = false; - myIntervalShift = shift[interval]; - myOutTimer[interval] = value; - myTimer = value << myIntervalShift; - myCyclesWhenTimerSet = mySystem->cycles(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void M6532::setPinState() -{ - /* - When a bit in the DDR is set as input, +5V is placed on its output - pin. When it's set as output, either +5V or 0V (depending on the - contents of SWCHA) will be placed on the output pin. - The standard macros for the AtariVox and SaveKey use this fact to - send data to the port. This is represented by the following algorithm: - - if(DDR bit is input) set output as 1 - else if(DDR bit is output) set output as bit in ORA - */ - uInt8 a = myOutA | ~myDDRA; - - Controller& port0 = myConsole.controller(Controller::Left); - port0.write(Controller::One, a & 0x10); - port0.write(Controller::Two, a & 0x20); - port0.write(Controller::Three, a & 0x40); - port0.write(Controller::Four, a & 0x80); - - Controller& port1 = myConsole.controller(Controller::Right); - port1.write(Controller::One, a & 0x01); - port1.write(Controller::Two, a & 0x02); - port1.write(Controller::Three, a & 0x04); - port1.write(Controller::Four, a & 0x08); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool M6532::save(Serializer& out) const -{ - try - { - out.putString(name()); - - // Output the RAM - out.putInt(128); - for(uInt32 t = 0; t < 128; ++t) - out.putByte((char)myRAM[t]); - - out.putInt(myTimer); - out.putInt(myIntervalShift); - out.putInt(myCyclesWhenTimerSet); - out.putBool(myInterruptEnabled); - out.putBool(myInterruptTriggered); - - out.putByte((char)myDDRA); - out.putByte((char)myDDRB); - out.putByte((char)myOutA); - out.putByte((char)myOutB); - out.putByte((char)myOutTimer[0]); - out.putByte((char)myOutTimer[1]); - out.putByte((char)myOutTimer[2]); - out.putByte((char)myOutTimer[3]); - } - catch(const char* msg) - { - cerr << "ERROR: M6532::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool M6532::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - // Input the RAM - uInt32 limit = (uInt32) in.getInt(); - for(uInt32 t = 0; t < limit; ++t) - myRAM[t] = (uInt8) in.getByte(); - - myTimer = (uInt32) in.getInt(); - myIntervalShift = (uInt32) in.getInt(); - myCyclesWhenTimerSet = (uInt32) in.getInt(); - myInterruptEnabled = in.getBool(); - myInterruptTriggered = in.getBool(); - - myDDRA = (uInt8) in.getByte(); - myDDRB = (uInt8) in.getByte(); - myOutA = (uInt8) in.getByte(); - myOutB = (uInt8) in.getByte(); - myOutTimer[0] = (uInt8) in.getByte(); - myOutTimer[1] = (uInt8) in.getByte(); - myOutTimer[2] = (uInt8) in.getByte(); - myOutTimer[3] = (uInt8) in.getByte(); - } - catch(const char* msg) - { - cerr << "ERROR: M6532::load" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -M6532::M6532(const M6532& c) - : myConsole(c.myConsole), - mySettings(c.mySettings) -{ - assert(false); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -M6532& M6532::operator = (const M6532&) -{ - assert(false); - return *this; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6532.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6532.hxx deleted file mode 100644 index 415c1c81ef..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/M6532.hxx +++ /dev/null @@ -1,189 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: M6532.hxx 2231 2011-05-10 15:04:19Z stephena $ -//============================================================================ - -#ifndef M6532_HXX -#define M6532_HXX - -class Console; -class RiotDebug; -class Settings; - -#include "bspf.hxx" -#include "Device.hxx" -#include "System.hxx" - -/** - RIOT - - @author Bradford W. Mott - @version $Id: M6532.hxx 2231 2011-05-10 15:04:19Z stephena $ -*/ -class M6532 : public Device -{ - public: - /** - The RIOT debugger class is a friend who needs special access - */ - friend class RiotDebug; - - public: - /** - Create a new 6532 for the specified console - - @param console The console the 6532 is associated with - @param randRam Randomize or zero RAM on reset - */ - M6532(const Console& console, const Settings& settings); - - /** - Destructor - */ - virtual ~M6532(); - - public: - /** - Reset cartridge to its power-on state - */ - void reset(); - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - /** - Install 6532 in the specified system. Invoked by the system - when the 6532 is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install 6532 in the specified system and device. Invoked by - the system when the 6532 is attached to it. All devices - which invoke this method take responsibility for chaining - requests back to *this* device. - - @param system The system the device should install itself in - @param device The device responsible for this address space - */ - void install(System& system, Device& device); - - /** - Save the current state of this device to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this device from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "M6532"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - private: - Int32 timerClocks() - { return myTimer - (mySystem->cycles() - myCyclesWhenTimerSet); } - - void setTimerRegister(uInt8 data, uInt8 interval); - void setPinState(); - - private: - // Reference to the console - const Console& myConsole; - - // Reference to the settings - const Settings& mySettings; - - // An amazing 128 bytes of RAM - uInt8 myRAM[128]; - - // Current value of my Timer - uInt32 myTimer; - - // Log base 2 of the number of cycles in a timer interval - uInt32 myIntervalShift; - - // Indicates the number of cycles when the timer was last set - Int32 myCyclesWhenTimerSet; - - // Indicates if a timer interrupt has been enabled - bool myInterruptEnabled; - - // Indicates if a read from timer has taken place after interrupt occured - bool myInterruptTriggered; - - // Data Direction Register for Port A - uInt8 myDDRA; - - // Data Direction Register for Port B - uInt8 myDDRB; - - // Last value written to Port A - uInt8 myOutA; - - // Last value written to Port B - uInt8 myOutB; - - // Last value written to the timer registers - uInt8 myOutTimer[4]; - - private: - // Copy constructor isn't supported by this class so make it private - M6532(const M6532&); - - // Assignment operator isn't supported by this class so make it private - M6532& operator = (const M6532&); - - public: uInt8* getRAM() { return myRAM; } -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/NullDev.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/NullDev.cpp deleted file mode 100644 index e0b7d41909..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/NullDev.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: NullDev.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include "Serializer.hxx" -#include "NullDev.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NullDevice::NullDevice() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NullDevice::~NullDevice() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void NullDevice::reset() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void NullDevice::install(System& system) -{ - mySystem = &system; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 NullDevice::peek(uInt16 address) -{ - cerr << hex << "NullDevice: peek(" << address << ")" << endl; - return 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool NullDevice::poke(uInt16 address, uInt8 value) -{ - cerr << hex << "NullDevice: poke(" << address << "," << value << ")" << endl; - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool NullDevice::save(Serializer& out) const -{ - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool NullDevice::load(Serializer& in) -{ - return true; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/NullDev.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/NullDev.hxx deleted file mode 100644 index 738e9e8542..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/NullDev.hxx +++ /dev/null @@ -1,105 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: NullDev.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef NULLDEVICE_HXX -#define NULLDEVICE_HXX - -class System; - -#include "bspf.hxx" -#include "Device.hxx" - -/** - Class that represents a "null" device. The basic idea is that a - null device is installed in a 6502 based system anywhere there are - holes in the address space (i.e. no real device attached). - - @author Bradford W. Mott - @version $Id: NullDev.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class NullDevice : public Device -{ - public: - /** - Create a new null device - */ - NullDevice(); - - /** - Destructor - */ - virtual ~NullDevice(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Install device in the specified system. Invoked by the system - when the device is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Save the current state of this device to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this device from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "NullDevice"; } - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/System.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/System.cpp deleted file mode 100644 index 4fb351743b..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/System.cpp +++ /dev/null @@ -1,375 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: System.cxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#include -#include - -#include "Device.hxx" -#include "M6502.hxx" -#include "M6532.hxx" -#include "TIA.hxx" -#include "System.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -System::System(uInt16 n, uInt16 m) - : myAddressMask((1 << n) - 1), - myPageShift(m), - myPageMask((1 << m) - 1), - myNumberOfPages(1 << (n - m)), - myNumberOfDevices(0), - myM6502(0), - myTIA(0), - myCycles(0), - myDataBusState(0), - myDataBusLocked(false), - mySystemInAutodetect(false) -{ - // Make sure the arguments are reasonable - assert((1 <= m) && (m <= n) && (n <= 16)); - - // Create a new random number generator - myRandom = new Random(); - - // Allocate page table and dirty list - myPageAccessTable = new PageAccess[myNumberOfPages]; - myPageIsDirtyTable = new bool[myNumberOfPages]; - - // Initialize page access table - PageAccess access; - access.directPeekBase = 0; - access.directPokeBase = 0; - access.device = &myNullDevice; - for(int page = 0; page < myNumberOfPages; ++page) - { - setPageAccess(page, access); - myPageIsDirtyTable[page] = false; - } - - // Bus starts out unlocked (in other words, peek() changes myDataBusState) - myDataBusLocked = false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -System::~System() -{ - // Free the devices attached to me, since I own them - for(uInt32 i = 0; i < myNumberOfDevices; ++i) - { - delete myDevices[i]; - } - - // Free the M6502 that I own - delete myM6502; - - // Free my page access table and dirty list - delete[] myPageAccessTable; - delete[] myPageIsDirtyTable; - - // Free the random number generator - delete myRandom; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::reset(bool autodetect) -{ - // Provide hint to devices that autodetection is active (or not) - mySystemInAutodetect = autodetect; - - // Reset system cycle counter - resetCycles(); - - // First we reset the devices attached to myself - for(uInt32 i = 0; i < myNumberOfDevices; ++i) - myDevices[i]->reset(); - - // Now we reset the processor if it exists - if(myM6502 != 0) - myM6502->reset(); - - // There are no dirty pages upon startup - clearDirtyPages(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::attach(Device* device) -{ - assert(myNumberOfDevices < 100); - - // Add device to my collection of devices - myDevices[myNumberOfDevices++] = device; - - // Ask the device to install itself - device->install(*this); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::attach(M6502* m6502) -{ - // Remember the processor - myM6502 = m6502; - - // Ask the processor to install itself - myM6502->install(*this); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::attach(M6532* m6532) -{ - // Remember the processor - myM6532 = m6532; - - // Attach it as a normal device - attach((Device*) m6532); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::attach(TIA* tia) -{ - myTIA = tia; - attach((Device*) tia); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::resetCycles() -{ - // First we let all of the device attached to me know about the reset - for(uInt32 i = 0; i < myNumberOfDevices; ++i) - { - myDevices[i]->systemCyclesReset(); - } - - // Now, we reset cycle count to zero - myCycles = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::setPageAccess(uInt16 page, const PageAccess& access) -{ - // Make sure the page is within range - assert(page < myNumberOfPages); - - // Make sure the access methods make sense - assert(access.device != 0); - - myPageAccessTable[page] = access; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const System::PageAccess& System::getPageAccess(uInt16 page) const -{ - // Make sure the page is within range - assert(page < myNumberOfPages); - - return myPageAccessTable[page]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -System::PageAccessType System::getPageAccessType(uInt16 addr) const -{ - return myPageAccessTable[(addr & myAddressMask) >> myPageShift].type; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::setDirtyPage(uInt16 addr) -{ - myPageIsDirtyTable[(addr & myAddressMask) >> myPageShift] = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool System::isPageDirty(uInt16 start_addr, uInt16 end_addr) const -{ - uInt16 start_page = (start_addr & myAddressMask) >> myPageShift; - uInt16 end_page = (end_addr & myAddressMask) >> myPageShift; - - for(uInt16 page = start_page; page <= end_page; ++page) - if(myPageIsDirtyTable[page]) - return true; - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::clearDirtyPages() -{ - for(uInt32 i = 0; i < myNumberOfPages; ++i) - myPageIsDirtyTable[i] = false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 System::peek(uInt16 addr, uInt8 flags) -{ - PageAccess& access = myPageAccessTable[(addr & myAddressMask) >> myPageShift]; - -#ifdef DEBUGGER_SUPPORT - // Set access type - if(access.codeAccessBase) - *(access.codeAccessBase + (addr & myPageMask)) |= flags; - else - access.device->setAccessFlags(addr, flags); -#endif - - // See if this page uses direct accessing or not - uInt8 result; - if(access.directPeekBase) - result = *(access.directPeekBase + (addr & myPageMask)); - else - result = access.device->peek(addr); - -#ifdef DEBUGGER_SUPPORT - if(!myDataBusLocked) -#endif - myDataBusState = result; - - return result; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::poke(uInt16 addr, uInt8 value) -{ - uInt16 page = (addr & myAddressMask) >> myPageShift; - PageAccess& access = myPageAccessTable[page]; - - // See if this page uses direct accessing or not - if(access.directPokeBase) - { - // Since we have direct access to this poke, we can dirty its page - *(access.directPokeBase + (addr & myPageMask)) = value; - myPageIsDirtyTable[page] = true; - } - else - { - // The specific device informs us if the poke succeeded - myPageIsDirtyTable[page] = access.device->poke(addr, value); - } - -#ifdef DEBUGGER_SUPPORT - if(!myDataBusLocked) -#endif - myDataBusState = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 System::getAccessFlags(uInt16 addr) -{ -#ifdef DEBUGGER_SUPPORT - PageAccess& access = myPageAccessTable[(addr & myAddressMask) >> myPageShift]; - - if(access.codeAccessBase) - return *(access.codeAccessBase + (addr & myPageMask)); - else - return access.device->getAccessFlags(addr); -#else - return 0; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::setAccessFlags(uInt16 addr, uInt8 flags) -{ -#ifdef DEBUGGER_SUPPORT - PageAccess& access = myPageAccessTable[(addr & myAddressMask) >> myPageShift]; - - if(access.codeAccessBase) - *(access.codeAccessBase + (addr & myPageMask)) |= flags; - else - access.device->setAccessFlags(addr, flags); -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::lockDataBus() -{ - myDataBusLocked = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void System::unlockDataBus() -{ - myDataBusLocked = false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool System::save(Serializer& out) const -{ - try - { - out.putString(name()); - out.putInt(myCycles); - - if(!myM6502->save(out)) - return false; - - // Now save the state of each device - for(uInt32 i = 0; i < myNumberOfDevices; ++i) - if(!myDevices[i]->save(out)) - return false; - } - catch(const char* msg) - { - cerr << "ERROR: System::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool System::load(Serializer& in) -{ - try - { - if(in.getString() != name()) - return false; - - myCycles = (uInt32) in.getInt(); - - // Next, load state for the CPU - if(!myM6502->load(in)) - return false; - - // Now load the state of each device - for(uInt32 i = 0; i < myNumberOfDevices; ++i) - if(!myDevices[i]->load(in)) - return false; - } - catch(const char* msg) - { - cerr << "ERROR: System::load" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -System::System(const System& s) - : myAddressMask(s.myAddressMask), - myPageShift(s.myPageShift), - myPageMask(s.myPageMask), - myNumberOfPages(s.myNumberOfPages) -{ - assert(false); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -System& System::operator = (const System&) -{ - assert(false); - return *this; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/System.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/System.hxx deleted file mode 100644 index c62b6450d2..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/System.hxx +++ /dev/null @@ -1,500 +0,0 @@ -//============================================================================ -// -// MM MM 6666 555555 0000 2222 -// MMMM MMMM 66 66 55 00 00 22 22 -// MM MMM MM 66 55 00 00 22 -// MM M MM 66666 55555 00 00 22222 -- "A 6502 Microprocessor Emulator" -// MM MM 66 66 55 00 00 22 -// MM MM 66 66 55 55 00 00 22 -// MM MM 6666 5555 0000 222222 -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: System.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef SYSTEM_HXX -#define SYSTEM_HXX - -class Device; -class M6502; -class M6532; -class TIA; -class NullDevice; - -#include "bspf.hxx" -#include "Device.hxx" -#include "NullDev.hxx" -#include "Random.hxx" -#include "Serializable.hxx" - -/** - This class represents a system consisting of a 6502 microprocessor - and a set of devices. The devices are mapped into an addressing - space of 2^n bytes (1 <= n <= 16). The addressing space is broken - into 2^m byte pages (1 <= m <= n), where a page is the smallest unit - a device can use when installing itself in the system. - - In general the addressing space will be 8192 (2^13) bytes for a - 6507 based system and 65536 (2^16) bytes for a 6502 based system. - - @author Bradford W. Mott - @version $Id: System.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ -class System : public Serializable -{ - public: - /** - Create a new system with an addressing space of 2^n bytes and - pages of 2^m bytes. - - @param n Log base 2 of the addressing space size - @param m Log base 2 of the page size - */ - System(uInt16 n, uInt16 m); - - /** - Destructor - */ - virtual ~System(); - - public: - /** - Reset the system cycle counter, the attached devices, and the - attached processor of the system. - - @param autodetect A hint to devices that the system is currently - in autodetect mode. That is, the system is being - run to autodetect certain device settings before - actual emulation will begin. Certain devices may - use this hint to act differently under those - circumstances. - */ - void reset(bool autodetect = false); - - /** - Attach the specified device and claim ownership of it. The device - will be asked to install itself. - - @param device The device to attach to the system - */ - void attach(Device* device); - - /** - Attach the specified processor and claim ownership of it. The - processor will be asked to install itself. - - @param m6502 The 6502 microprocessor to attach to the system - */ - void attach(M6502* m6502); - - /** - Attach the specified processor and claim ownership of it. The - processor will be asked to install itself. - - @param m6532 The 6532 microprocessor to attach to the system - */ - void attach(M6532* m6532); - - /** - Attach the specified TIA device and claim ownership of it. The device - will be asked to install itself. - - @param tia The TIA device to attach to the system - */ - void attach(TIA* tia); - - public: - /** - Answer the 6502 microprocessor attached to the system. If a - processor has not been attached calling this function will fail. - - @return The attached 6502 microprocessor - */ - M6502& m6502() - { - return *myM6502; - } - - /** - Answer the 6532 processor attached to the system. If a - processor has not been attached calling this function will fail. - - @return The attached 6532 microprocessor - */ - M6532& m6532() - { - return *myM6532; - } - - /** - Answer the TIA device attached to the system. - - @return The attached TIA device - */ - TIA& tia() - { - return *myTIA; - } - - /** - Answer the random generator attached to the system. - - @return The random generator - */ - Random& randGenerator() - { - return *myRandom; - } - - /** - Get the null device associated with the system. Every system - has a null device associated with it that's used by pages which - aren't mapped to "real" devices. - - @return The null device associated with the system - */ - NullDevice& nullDevice() - { - return myNullDevice; - } - - /** - Get the total number of pages available in the system. - - @return The total number of pages available - */ - uInt16 numberOfPages() const { return myNumberOfPages; } - - /** - Get the amount to right shift an address by to obtain its page. - - @return The amount to right shift an address by to get its page - */ - uInt16 pageShift() const { return myPageShift; } - - /** - Get the mask to apply to an address to obtain its page offset. - - @return The mask to apply to an address to obtain its page offset - */ - uInt16 pageMask() const { return myPageMask; } - - public: - /** - Get the number of system cycles which have passed since the last - time cycles were reset or the system was reset. - - @return The number of system cycles which have passed - */ - uInt32 cycles() const { return myCycles; } - - /** - Increment the system cycles by the specified number of cycles. - - @param amount The amount to add to the system cycles counter - */ - void incrementCycles(uInt32 amount) - { - myCycles += amount; - } - - /** - Reset the system cycle count to zero. The first thing that - happens is that all devices are notified of the reset by invoking - their systemCyclesReset method then the system cycle count is - reset to zero. - */ - void resetCycles(); - - /** - Answers whether the system is currently in device autodetect mode. - */ - bool autodectMode() const { return mySystemInAutodetect; } - - public: - /** - Get the current state of the data bus in the system. The current - state is the last data that was accessed by the system. - - @return The data bus state - */ - uInt8 getDataBusState() const { return myDataBusState; } - - /** - Get the current state of the data bus in the system, taking into - account that certain bits are in Z-state (undriven). In those - cases, the bits are floating, but will usually be the same as the - last data bus value (the 'usually' is emulated by randomly driving - certain bits high). - - However, some CMOS EPROM chips always drive Z-state bits high. - This is emulated by hmask, which specifies to push a specific - Z-state bit high. - - @param zmask The bits which are in Z-state - @param hmask The bits which should always be driven high - @return The data bus state - */ - uInt8 getDataBusState(uInt8 zmask, uInt8 hmask = 0x00) - { - // For the pins that are floating, randomly decide which are high or low - // Otherwise, they're specifically driven high - return (myDataBusState | (myRandom->next() | hmask)) & zmask; - } - - /** - Get the byte at the specified address. No masking of the - address occurs before it's sent to the device mapped at - the address. - - @param address The address from which the value should be loaded - @param flags Indicates that this address has the given flags - for type of access (CODE, DATA, GFX, etc) - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address, uInt8 flags = 0); - - /** - Change the byte at the specified address to the given value. - No masking of the address occurs before it's sent to the device - mapped at the address. - - This method sets the 'page dirty' if the write succeeds. In the - case of direct-access pokes, the write always succeeds. Otherwise, - if the device is handling the poke, we depend on its return value - for this information. - - @param address The address where the value should be stored - @param value The value to be stored at the address - */ - void poke(uInt16 address, uInt8 value); - - /** - Lock/unlock the data bus. When the bus is locked, peek() and - poke() don't update the bus state. The bus should be unlocked - while the CPU is running (normal emulation, or when the debugger - is stepping/advancing). It should be locked while the debugger - is active but not running the CPU. This is so the debugger can - use System.peek() to examine memory/registers without changing - the state of the system. - */ - void lockDataBus(); - void unlockDataBus(); - - /** - Access and modify the disassembly type flags for the given - address. Note that while any flag can be used, the disassembly - only really acts on SKIP/CODE/GFX/PGFX/DATA/ROW. - */ - uInt8 getAccessFlags(uInt16 address); - void setAccessFlags(uInt16 address, uInt8 flags); - - public: - /** - Describes how a page can be accessed - */ - enum PageAccessType { - PA_READ = 1 << 0, - PA_WRITE = 1 << 1, - PA_READWRITE = PA_READ | PA_WRITE - }; - - /** - Structure used to specify access methods for a page - */ - struct PageAccess - { - /** - Pointer to a block of memory or the null pointer. The null pointer - indicates that the device's peek method should be invoked for reads - to this page, while other values are the base address of an array - to directly access for reads to this page. - */ - uInt8* directPeekBase; - - /** - Pointer to a block of memory or the null pointer. The null pointer - indicates that the device's poke method should be invoked for writes - to this page, while other values are the base address of an array - to directly access for pokes to this page. - */ - uInt8* directPokeBase; - - /** - Pointer to a lookup table for marking an address as CODE. A CODE - section is defined as any address that appears in the program - counter. Currently, this is used by the debugger/disassembler to - conclusively determine if a section of address space is CODE, even - if the disassembler failed to mark it as such. - */ - uInt8* codeAccessBase; - - /** - Pointer to the device associated with this page or to the system's - null device if the page hasn't been mapped to a device. - */ - Device* device; - - /** - The manner in which the pages are accessed by the system - (READ, WRITE, READWRITE) - */ - PageAccessType type; - - // Constructors - PageAccess() - : directPeekBase(0), - directPokeBase(0), - codeAccessBase(0), - device(0), - type(System::PA_READ) { } - - PageAccess(uInt8* peek, uInt8* poke, uInt8* code, Device* dev, - PageAccessType access) - : directPeekBase(peek), - directPokeBase(poke), - codeAccessBase(code), - device(dev), - type(access) { } - }; - - /** - Set the page accessing method for the specified page. - - @param page The page accessing methods should be set for - @param access The accessing methods to be used by the page - */ - void setPageAccess(uInt16 page, const PageAccess& access); - - /** - Get the page accessing method for the specified page. - - @param page The page to get accessing methods for - @return The accessing methods used by the page - */ - const PageAccess& getPageAccess(uInt16 page) const; - - /** - Get the page type for the given address. - - @param addr The address contained in the page in questions - @return The type of page that contains the given address - */ - System::PageAccessType getPageAccessType(uInt16 addr) const; - - /** - Mark the page containing this address as being dirty. - - @param addr Determines the page that is dirty - */ - void setDirtyPage(uInt16 addr); - - /** - Answer whether any pages in given range of addresses have been - marked as dirty. - - @param start_addr The start address; determines the start page - @param end_addr The end address; determines the end page - */ - bool isPageDirty(uInt16 start_addr, uInt16 end_addr) const; - - /** - Mark all pages as clean (ie, turn off the dirty flag). - */ - void clearDirtyPages(); - - /** - Save the current state of this system to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this system from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "System"; } - - private: - // Mask to apply to an address before accessing memory - const uInt16 myAddressMask; - - // Amount to shift an address by to determine what page it's on - const uInt16 myPageShift; - - // Mask to apply to an address to obtain its page offset - const uInt16 myPageMask; - - // Number of pages in the system - const uInt16 myNumberOfPages; - - // Pointer to a dynamically allocated array of PageAccess structures - PageAccess* myPageAccessTable; - - // Pointer to a dynamically allocated array for dirty pages - bool* myPageIsDirtyTable; - - // Array of all the devices attached to the system - Device* myDevices[100]; - - // Number of devices attached to the system - uInt32 myNumberOfDevices; - - // 6502 processor attached to the system or the null pointer - M6502* myM6502; - - // 6532 processor attached to the system or the null pointer - M6532* myM6532; - - // TIA device attached to the system or the null pointer - TIA* myTIA; - - // Many devices need a source of random numbers, usually for emulating - // unknown/undefined behaviour - Random* myRandom; - - // Number of system cycles executed since the last reset - uInt32 myCycles; - - // Null device to use for page which are not installed - NullDevice myNullDevice; - - // The current state of the Data Bus - uInt8 myDataBusState; - - // Whether or not peek() updates the data bus state. This - // is true during normal emulation, and false when the - // debugger is active. - bool myDataBusLocked; - - // Whether autodetection is currently running (ie, the emulation - // core is attempting to autodetect display settings, cart modes, etc) - // Some parts of the codebase need to act differently in such a case - bool mySystemInAutodetect; - - private: - // Copy constructor isn't supported by this class so make it private - System(const System&); - - // Assignment operator isn't supported by this class so make it private - System& operator = (const System&); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIA.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIA.cpp deleted file mode 100644 index a40c2dfdc6..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIA.cpp +++ /dev/null @@ -1,2324 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIA.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include -#include -#include - -#include "bspf.hxx" - -#ifdef DEBUGGER_SUPPORT - #include "CartDebug.hxx" -#endif - -#include "Console.hxx" -#include "Control.hxx" -#include "Device.hxx" -#include "M6502.hxx" -#include "Settings.hxx" -#include "Sound.hxx" -#include "System.hxx" -#include "TIATables.hxx" - -#include "TIA.hxx" - -#define HBLANK 68 -#define USE_MMR_LATCHES - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIA::TIA(Console& console, Sound& sound, Settings& settings) - : myConsole(console), - mySound(sound), - mySettings(settings), - myFrameWidth(160), - myFrameYStart(34), - myFrameHeight(210), - myMaximumNumberOfScanlines(262), - myColorLossEnabled(false), - myPartialFrameFlag(false), - myAutoFrameEnabled(false), - myFrameCounter(0) -{ - // Allocate buffers for two frame buffers - myCurrentFrameBuffer = new uInt8[160 * 320]; - myPreviousFrameBuffer = new uInt8[160 * 320]; - - // Make sure all TIA bits are enabled - enableBits(true); - - for(uInt16 x = 0; x < 2; ++x) - { - for(uInt16 enabled = 0; enabled < 256; ++enabled) - { - if(enabled & PriorityBit) - { - // Priority from highest to lowest: - // PF/BL => P0/M0 => P1/M1 => BK - uInt8 color = _BK; - - if((enabled & M1Bit) != 0) - color = _M1; - if((enabled & P1Bit) != 0) - color = _P1; - if((enabled & M0Bit) != 0) - color = _M0; - if((enabled & P0Bit) != 0) - color = _P0; - if((enabled & BLBit) != 0) - color = _BL; - if((enabled & PFBit) != 0) - color = _PF; // NOTE: Playfield has priority so ScoreBit isn't used - - myPriorityEncoder[x][enabled] = color; - } - else - { - // Priority from highest to lowest: - // P0/M0 => P1/M1 => PF/BL => BK - uInt8 color = _BK; - - if((enabled & BLBit) != 0) - color = _BL; - if((enabled & PFBit) != 0) - color = (enabled & ScoreBit) ? ((x == 0) ? _P0 : _P1) : _PF; - if((enabled & M1Bit) != 0) - color = _M1; - if((enabled & P1Bit) != 0) - color = _P1; - if((enabled & M0Bit) != 0) - color = _M0; - if((enabled & P0Bit) != 0) - color = _P0; - - myPriorityEncoder[x][enabled] = color; - } - } - } - - // Compute all of the mask tables - TIATables::computeAllTables(); - - // Zero audio registers - myAUDV0 = myAUDV1 = myAUDF0 = myAUDF1 = myAUDC0 = myAUDC1 = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIA::~TIA() -{ - delete[] myCurrentFrameBuffer; - delete[] myPreviousFrameBuffer; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::reset() -{ - // Reset the sound device - mySound.reset(); - - // Currently no objects are enabled or selectively disabled - myEnabledObjects = 0; - myDisabledObjects = 0xFF; - myAllowHMOVEBlanks = true; - - // Some default values for the registers - myColorPtr = myColor; - myVSYNC = myVBLANK = 0; - myNUSIZ0 = myNUSIZ1 = 0; - myColor[_P0] = myColor[_P1] = myColor[_PF] = myColor[_BK] = 0; - myColor[_M0] = myColor[_M1] = myColor[_BL] = myColor[_HBLANK] = 0; - - myPlayfieldPriorityAndScore = 0; - myCTRLPF = 0; - myREFP0 = myREFP1 = false; - myPF = 0; - myGRP0 = myGRP1 = myDGRP0 = myDGRP1 = 0; - myENAM0 = myENAM1 = myENABL = myDENABL = false; - myHMP0 = myHMP1 = myHMM0 = myHMM1 = myHMBL = 0; - myVDELP0 = myVDELP1 = myVDELBL = myRESMP0 = myRESMP1 = false; - myCollision = 0; - myCollisionEnabledMask = 0xFFFFFFFF; - myPOSP0 = myPOSP1 = myPOSM0 = myPOSM1 = myPOSBL = 0; - - // Some default values for the "current" variables - myCurrentGRP0 = 0; - myCurrentGRP1 = 0; - - myMotionClockP0 = 0; - myMotionClockP1 = 0; - myMotionClockM0 = 0; - myMotionClockM1 = 0; - myMotionClockBL = 0; - - mySuppressP0 = mySuppressP1 = 0; - - myHMP0mmr = myHMP1mmr = myHMM0mmr = myHMM1mmr = myHMBLmmr = false; - - myCurrentHMOVEPos = myPreviousHMOVEPos = 0x7FFFFFFF; - myHMOVEBlankEnabled = false; - - enableBits(true); - - myDumpEnabled = false; - myDumpDisabledCycle = 0; - myINPT4 = myINPT5 = 0x80; - - // Should undriven pins be randomly driven high or low? - myTIAPinsDriven = mySettings.getBool("tiadriven"); - - myFrameCounter = 0; - myScanlineCountForLastFrame = 0; - myAutoFrameEnabled = (mySettings.getInt("framerate") <= 0); - myFramerate = myConsole.getFramerate(); - - if(myFramerate > 55.0) // NTSC - { - myFixedColor[_P0] = 0x30303030; - myFixedColor[_P1] = 0x16161616; - myFixedColor[_M0] = 0x38383838; - myFixedColor[_M1] = 0x12121212; - myFixedColor[_BL] = 0x7e7e7e7e; - myFixedColor[_PF] = 0x76767676; - myFixedColor[_BK] = 0x0a0a0a0a; - myFixedColor[_HBLANK] = 0x0e0e0e0e; - myColorLossEnabled = false; - myMaximumNumberOfScanlines = 290; - } - else - { - myFixedColor[_P0] = 0x62626262; - myFixedColor[_P1] = 0x26262626; - myFixedColor[_M0] = 0x68686868; - myFixedColor[_M1] = 0x2e2e2e2e; - myFixedColor[_BL] = 0xdededede; - myFixedColor[_PF] = 0xd8d8d8d8; - myFixedColor[_BK] = 0x1c1c1c1c; - myFixedColor[_HBLANK] = 0x0e0e0e0e; - myColorLossEnabled = mySettings.getBool("colorloss"); - myMaximumNumberOfScanlines = 342; - } - - myCurrentP0Mask = &TIATables::PxMask[0][0][0][0]; - myCurrentP1Mask = &TIATables::PxMask[0][0][0][0]; - myCurrentM0Mask = &TIATables::MxMask[0][0][0][0]; - myCurrentM1Mask = &TIATables::MxMask[0][0][0][0]; - myCurrentBLMask = &TIATables::BLMask[0][0][0]; - myCurrentPFMask = TIATables::PFMask[0]; - - // Recalculate the size of the display - frameReset(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::frameReset() -{ - // Clear frame buffers - clearBuffers(); - - // Reset pixel pointer and drawing flag - myFramePointer = myCurrentFrameBuffer; - - // Calculate color clock offsets for starting and stopping frame drawing - // Note that although we always start drawing at scanline zero, the - // framebuffer that is exposed outside the class actually starts at 'ystart' - myFramePointerOffset = myFrameWidth * myFrameYStart; - myStartDisplayOffset = 0; - - // NTSC screens will process at least 262 scanlines, - // while PAL will have at least 312 - // In any event, at most 320 lines can be processed - uInt32 scanlines = myFrameYStart + myFrameHeight; - if(myMaximumNumberOfScanlines == 290) - scanlines = BSPF_max(scanlines, 262u); // NTSC - else - scanlines = BSPF_max(scanlines, 312u); // PAL - myStopDisplayOffset = 228 * BSPF_min(scanlines, 320u); - - // Reasonable values to start and stop the current frame drawing - myClockWhenFrameStarted = mySystem->cycles() * 3; - myClockStartDisplay = myClockWhenFrameStarted + myStartDisplayOffset; - myClockStopDisplay = myClockWhenFrameStarted + myStopDisplayOffset; - myClockAtLastUpdate = myClockWhenFrameStarted; - myClocksToEndOfScanLine = 228; - myVSYNCFinishClock = 0x7FFFFFFF; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::systemCyclesReset() -{ - // Get the current system cycle - uInt32 cycles = mySystem->cycles(); - - // Adjust the sound cycle indicator - mySound.adjustCycleCounter(-1 * cycles); - - // Adjust the dump cycle - myDumpDisabledCycle -= cycles; - - // Get the current color clock the system is using - uInt32 clocks = cycles * 3; - - // Adjust the clocks by this amount since we're reseting the clock to zero - myClockWhenFrameStarted -= clocks; - myClockStartDisplay -= clocks; - myClockStopDisplay -= clocks; - myClockAtLastUpdate -= clocks; - myVSYNCFinishClock -= clocks; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::install(System& system) -{ - install(system, *this); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::install(System& system, Device& device) -{ - // Remember which system I'm installed in - mySystem = &system; - - uInt16 shift = mySystem->pageShift(); - mySystem->resetCycles(); - - // All accesses are to the given device - System::PageAccess access(0, 0, 0, &device, System::PA_READWRITE); - - // We're installing in a 2600 system - for(uInt32 i = 0; i < 8192; i += (1 << shift)) - if((i & 0x1080) == 0x0000) - mySystem->setPageAccess(i >> shift, access); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::save(Serializer& out) const -{ - const string& device = name(); - - try - { - out.putString(device); - - out.putInt(myClockWhenFrameStarted); - out.putInt(myClockStartDisplay); - out.putInt(myClockStopDisplay); - out.putInt(myClockAtLastUpdate); - out.putInt(myClocksToEndOfScanLine); - out.putInt(myScanlineCountForLastFrame); - out.putInt(myVSYNCFinishClock); - - out.putByte((char)myEnabledObjects); - out.putByte((char)myDisabledObjects); - - out.putByte((char)myVSYNC); - out.putByte((char)myVBLANK); - out.putByte((char)myNUSIZ0); - out.putByte((char)myNUSIZ1); - - out.putInt(myColor[_P0]); - out.putInt(myColor[_P1]); - out.putInt(myColor[_PF]); - out.putInt(myColor[_BK]); - out.putInt(myColor[_M0]); - out.putInt(myColor[_M1]); - out.putInt(myColor[_BL]); - - out.putByte((char)myCTRLPF); - out.putByte((char)myPlayfieldPriorityAndScore); - out.putBool(myREFP0); - out.putBool(myREFP1); - out.putInt(myPF); - out.putByte((char)myGRP0); - out.putByte((char)myGRP1); - out.putByte((char)myDGRP0); - out.putByte((char)myDGRP1); - out.putBool(myENAM0); - out.putBool(myENAM1); - out.putBool(myENABL); - out.putBool(myDENABL); - out.putByte((char)myHMP0); - out.putByte((char)myHMP1); - out.putByte((char)myHMM0); - out.putByte((char)myHMM1); - out.putByte((char)myHMBL); - out.putBool(myVDELP0); - out.putBool(myVDELP1); - out.putBool(myVDELBL); - out.putBool(myRESMP0); - out.putBool(myRESMP1); - out.putInt(myCollision); - out.putInt(myCollisionEnabledMask); - out.putByte((char)myCurrentGRP0); - out.putByte((char)myCurrentGRP1); - - out.putBool(myDumpEnabled); - out.putInt(myDumpDisabledCycle); - - out.putInt(myPOSP0); - out.putInt(myPOSP1); - out.putInt(myPOSM0); - out.putInt(myPOSM1); - out.putInt(myPOSBL); - - out.putInt(myMotionClockP0); - out.putInt(myMotionClockP1); - out.putInt(myMotionClockM0); - out.putInt(myMotionClockM1); - out.putInt(myMotionClockBL); - - out.putInt(myStartP0); - out.putInt(myStartP1); - out.putInt(myStartM0); - out.putInt(myStartM1); - - out.putByte(mySuppressP0); - out.putByte(mySuppressP1); - - out.putBool(myHMP0mmr); - out.putBool(myHMP1mmr); - out.putBool(myHMM0mmr); - out.putBool(myHMM1mmr); - out.putBool(myHMBLmmr); - - out.putInt(myCurrentHMOVEPos); - out.putInt(myPreviousHMOVEPos); - out.putBool(myHMOVEBlankEnabled); - - out.putInt(myFrameCounter); - - // Save the sound sample stuff ... - mySound.save(out); - } - catch(const char* msg) - { - cerr << "ERROR: TIA::save" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::load(Serializer& in) -{ - const string& device = name(); - - try - { - if(in.getString() != device) - return false; - - myClockWhenFrameStarted = (Int32) in.getInt(); - myClockStartDisplay = (Int32) in.getInt(); - myClockStopDisplay = (Int32) in.getInt(); - myClockAtLastUpdate = (Int32) in.getInt(); - myClocksToEndOfScanLine = (Int32) in.getInt(); - myScanlineCountForLastFrame = (uInt32) in.getInt(); - myVSYNCFinishClock = (Int32) in.getInt(); - - myEnabledObjects = (uInt8) in.getByte(); - myDisabledObjects = (uInt8) in.getByte(); - - myVSYNC = (uInt8) in.getByte(); - myVBLANK = (uInt8) in.getByte(); - myNUSIZ0 = (uInt8) in.getByte(); - myNUSIZ1 = (uInt8) in.getByte(); - - myColor[_P0] = (uInt32) in.getInt(); - myColor[_P1] = (uInt32) in.getInt(); - myColor[_PF] = (uInt32) in.getInt(); - myColor[_BK] = (uInt32) in.getInt(); - myColor[_M0] = (uInt32) in.getInt(); - myColor[_M1] = (uInt32) in.getInt(); - myColor[_BL] = (uInt32) in.getInt(); - - myCTRLPF = (uInt8) in.getByte(); - myPlayfieldPriorityAndScore = (uInt8) in.getByte(); - myREFP0 = in.getBool(); - myREFP1 = in.getBool(); - myPF = (uInt32) in.getInt(); - myGRP0 = (uInt8) in.getByte(); - myGRP1 = (uInt8) in.getByte(); - myDGRP0 = (uInt8) in.getByte(); - myDGRP1 = (uInt8) in.getByte(); - myENAM0 = in.getBool(); - myENAM1 = in.getBool(); - myENABL = in.getBool(); - myDENABL = in.getBool(); - myHMP0 = (uInt8) in.getByte(); - myHMP1 = (uInt8) in.getByte(); - myHMM0 = (uInt8) in.getByte(); - myHMM1 = (uInt8) in.getByte(); - myHMBL = (uInt8) in.getByte(); - myVDELP0 = in.getBool(); - myVDELP1 = in.getBool(); - myVDELBL = in.getBool(); - myRESMP0 = in.getBool(); - myRESMP1 = in.getBool(); - myCollision = (uInt16) in.getInt(); - myCollisionEnabledMask = in.getInt(); - myCurrentGRP0 = (uInt8) in.getByte(); - myCurrentGRP1 = (uInt8) in.getByte(); - - myDumpEnabled = in.getBool(); - myDumpDisabledCycle = (Int32) in.getInt(); - - myPOSP0 = (Int16) in.getInt(); - myPOSP1 = (Int16) in.getInt(); - myPOSM0 = (Int16) in.getInt(); - myPOSM1 = (Int16) in.getInt(); - myPOSBL = (Int16) in.getInt(); - - myMotionClockP0 = (Int32) in.getInt(); - myMotionClockP1 = (Int32) in.getInt(); - myMotionClockM0 = (Int32) in.getInt(); - myMotionClockM1 = (Int32) in.getInt(); - myMotionClockBL = (Int32) in.getInt(); - - myStartP0 = (Int32) in.getInt(); - myStartP1 = (Int32) in.getInt(); - myStartM0 = (Int32) in.getInt(); - myStartM1 = (Int32) in.getInt(); - - mySuppressP0 = (uInt8) in.getByte(); - mySuppressP1 = (uInt8) in.getByte(); - - myHMP0mmr = in.getBool(); - myHMP1mmr = in.getBool(); - myHMM0mmr = in.getBool(); - myHMM1mmr = in.getBool(); - myHMBLmmr = in.getBool(); - - myCurrentHMOVEPos = (Int32) in.getInt(); - myPreviousHMOVEPos = (Int32) in.getInt(); - myHMOVEBlankEnabled = in.getBool(); - - myFrameCounter = (Int32) in.getInt(); - - // Load the sound sample stuff ... - mySound.load(in); - - // Reset TIA bits to be on - enableBits(true); - myAllowHMOVEBlanks = true; - myColorPtr = myColor; - } - catch(const char* msg) - { - cerr << "ERROR: TIA::load" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::saveDisplay(Serializer& out) const -{ - try - { - out.putBool(myPartialFrameFlag); - out.putInt(myFramePointerClocks); - - for(int i = 0; i < 160*320; ++i) - out.putByte(myCurrentFrameBuffer[i]); - } - catch(const char* msg) - { - cerr << "ERROR: TIA::saveDisplay" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::loadDisplay(Serializer& in) -{ - try - { - myPartialFrameFlag = in.getBool(); - myFramePointerClocks = (uInt32) in.getInt(); - - // Reset frame buffer pointer and data - clearBuffers(); - myFramePointer = myCurrentFrameBuffer; - for(int i = 0; i < 160*320; ++i) - myCurrentFrameBuffer[i] = myPreviousFrameBuffer[i] = (uInt8) in.getByte(); - - // If we're in partial frame mode, make sure to re-create the screen - // as it existed when the state was saved - if(myPartialFrameFlag) - myFramePointer += myFramePointerClocks; - } - catch(const char* msg) - { - cerr << "ERROR: TIA::loadDisplay" << endl << " " << msg << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::update() -{ - // if we've finished a frame, start a new one - if(!myPartialFrameFlag) - startFrame(); - - // Partial frame flag starts out true here. When then 6502 strobes VSYNC, - // TIA::poke() will set this flag to false, so we'll know whether the - // frame got finished or interrupted by the debugger hitting a break/trap. - myPartialFrameFlag = true; - - // Execute instructions until frame is finished, or a breakpoint/trap hits - mySystem->m6502().execute(25000); - - // TODO: have code here that handles errors.... - - endFrame(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void TIA::startFrame() -{ - // This stuff should only happen at the beginning of a new frame. - uInt8* tmp = myCurrentFrameBuffer; - myCurrentFrameBuffer = myPreviousFrameBuffer; - myPreviousFrameBuffer = tmp; - - // Remember the number of clocks which have passed on the current scanline - // so that we can adjust the frame's starting clock by this amount. This - // is necessary since some games position objects during VSYNC and the - // TIA's internal counters are not reset by VSYNC. - uInt32 clocks = ((mySystem->cycles() * 3) - myClockWhenFrameStarted) % 228; - - // Ask the system to reset the cycle count so it doesn't overflow - mySystem->resetCycles(); - - // Setup clocks that'll be used for drawing this frame - myClockWhenFrameStarted = -1 * clocks; - myClockStartDisplay = myClockWhenFrameStarted + myStartDisplayOffset; - myClockStopDisplay = myClockWhenFrameStarted + myStopDisplayOffset; - myClockAtLastUpdate = myClockStartDisplay; - myClocksToEndOfScanLine = 228; - - // Reset frame buffer pointer - myFramePointer = myCurrentFrameBuffer; - myFramePointerClocks = 0; - - // If color loss is enabled then update the color registers based on - // the number of scanlines in the last frame that was generated - if(myColorLossEnabled) - { - if(myScanlineCountForLastFrame & 0x01) - { - myColor[_P0] |= 0x01010101; - myColor[_P1] |= 0x01010101; - myColor[_PF] |= 0x01010101; - myColor[_BK] |= 0x01010101; - myColor[_M0] |= 0x01010101; - myColor[_M1] |= 0x01010101; - myColor[_BL] |= 0x01010101; - } - else - { - myColor[_P0] &= 0xfefefefe; - myColor[_P1] &= 0xfefefefe; - myColor[_PF] &= 0xfefefefe; - myColor[_BK] &= 0xfefefefe; - myColor[_M0] &= 0xfefefefe; - myColor[_M1] &= 0xfefefefe; - myColor[_BL] &= 0xfefefefe; - } - } - myStartScanline = 0x7FFFFFFF; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void TIA::endFrame() -{ - // This stuff should only happen at the end of a frame - // Compute the number of scanlines in the frame - uInt32 previousCount = myScanlineCountForLastFrame; - myScanlineCountForLastFrame = scanlines(); - - // Stats counters - myFrameCounter++; - - // Recalculate framerate. attempting to auto-correct for scanline 'jumps' - if(myFrameCounter % 8 == 0 && myAutoFrameEnabled && - myScanlineCountForLastFrame < myMaximumNumberOfScanlines) - { - myFramerate = (myScanlineCountForLastFrame > 285 ? 15600.0 : 15720.0) / - myScanlineCountForLastFrame; - myConsole.setFramerate(myFramerate); - - // Adjust end-of-frame pointer - // We always accommodate the highest # of scanlines, up to the maximum - // size of the buffer (currently, 320 lines) - uInt32 offset = 228 * myScanlineCountForLastFrame; - if(offset > myStopDisplayOffset && offset < 228 * 320) - myStopDisplayOffset = offset; - } - - // This is a bit of a hack for those ROMs which generate too many - // scanlines each frame, usually caused by VBLANK taking too long - // When this happens, the frame pointers sometimes get 'confused', - // and the framebuffer class doesn't properly overwrite data from - // the previous frame, causing graphical garbage - // - // We basically erase the entire contents of both buffers, making - // sure that they're also different from one another - // This will force the framebuffer class to completely re-render - // the screen - if(previousCount > myMaximumNumberOfScanlines && - myScanlineCountForLastFrame <= myMaximumNumberOfScanlines) - { - memset(myCurrentFrameBuffer, 0, 160 * 320); - memset(myPreviousFrameBuffer, 1, 160 * 320); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::scanlinePos(uInt16& x, uInt16& y) const -{ - if(myPartialFrameFlag) - { - // We only care about the scanline position when it's in the viewable area - if(myFramePointerClocks >= myFramePointerOffset) - { - x = (myFramePointerClocks - myFramePointerOffset) % 160; - y = (myFramePointerClocks - myFramePointerOffset) / 160; - return true; - } - else - { - x = 0; - y = 0; - return false; - } - } - else - { - x = width(); - y = height(); - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::enableBits(bool mode) -{ - toggleBit(P0Bit, mode ? 1 : 0); - toggleBit(P1Bit, mode ? 1 : 0); - toggleBit(M0Bit, mode ? 1 : 0); - toggleBit(M1Bit, mode ? 1 : 0); - toggleBit(BLBit, mode ? 1 : 0); - toggleBit(PFBit, mode ? 1 : 0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::toggleBit(TIABit b, uInt8 mode) -{ - // If mode is 0 or 1, use it as a boolean (off or on) - // Otherwise, flip the state - bool on = (mode == 0 || mode == 1) ? bool(mode) : !(myDisabledObjects & b); - if(on) myDisabledObjects |= b; - else myDisabledObjects &= ~b; - - return on; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::enableCollisions(bool mode) -{ - toggleCollision(P0Bit, mode ? 1 : 0); - toggleCollision(P1Bit, mode ? 1 : 0); - toggleCollision(M0Bit, mode ? 1 : 0); - toggleCollision(M1Bit, mode ? 1 : 0); - toggleCollision(BLBit, mode ? 1 : 0); - toggleCollision(PFBit, mode ? 1 : 0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::toggleCollision(TIABit b, uInt8 mode) -{ - uInt16 enabled = myCollisionEnabledMask >> 16; - - // If mode is 0 or 1, use it as a boolean (off or on) - // Otherwise, flip the state - bool on = (mode == 0 || mode == 1) ? bool(mode) : !(enabled & b); - if(on) enabled |= b; - else enabled &= ~b; - - // Assume all collisions are on, then selectively turn the desired ones off - uInt16 mask = 0xffff; - if(!(enabled & P0Bit)) - mask &= ~(Cx_M0P0 | Cx_M1P0 | Cx_P0PF | Cx_P0BL | Cx_P0P1); - if(!(enabled & P1Bit)) - mask &= ~(Cx_M0P1 | Cx_M1P1 | Cx_P1PF | Cx_P1BL | Cx_P0P1); - if(!(enabled & M0Bit)) - mask &= ~(Cx_M0P0 | Cx_M0P1 | Cx_M0PF | Cx_M0BL | Cx_M0M1); - if(!(enabled & M1Bit)) - mask &= ~(Cx_M1P0 | Cx_M1P1 | Cx_M1PF | Cx_M1BL | Cx_M0M1); - if(!(enabled & BLBit)) - mask &= ~(Cx_P0BL | Cx_P1BL | Cx_M0BL | Cx_M1BL | Cx_BLPF); - if(!(enabled & PFBit)) - mask &= ~(Cx_P0PF | Cx_P1PF | Cx_M0PF | Cx_M1PF | Cx_BLPF); - - // Now combine the masks - myCollisionEnabledMask = (enabled << 16) | mask; - - return on; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::toggleHMOVEBlank() -{ - myAllowHMOVEBlanks = myAllowHMOVEBlanks ? false : true; - return myAllowHMOVEBlanks; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::toggleFixedColors(uInt8 mode) -{ - // If mode is 0 or 1, use it as a boolean (off or on) - // Otherwise, flip the state - bool on = (mode == 0 || mode == 1) ? bool(mode) : - (myColorPtr == myColor ? true : false); - if(on) myColorPtr = myFixedColor; - else myColorPtr = myColor; - - return on; -} - -#ifdef DEBUGGER_SUPPORT -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::updateScanline() -{ - // Start a new frame if the old one was finished - if(!myPartialFrameFlag) - startFrame(); - - // true either way: - myPartialFrameFlag = true; - - int totalClocks = (mySystem->cycles() * 3) - myClockWhenFrameStarted; - int endClock = ((totalClocks + 228) / 228) * 228; - - int clock; - do { - mySystem->m6502().execute(1); - clock = mySystem->cycles() * 3; - updateFrame(clock); - } while(clock < endClock); - - // if we finished the frame, get ready for the next one - if(!myPartialFrameFlag) - endFrame(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::updateScanlineByStep() -{ - // Start a new frame if the old one was finished - if(!myPartialFrameFlag) - startFrame(); - - // true either way: - myPartialFrameFlag = true; - - // Update frame by one CPU instruction/color clock - mySystem->m6502().execute(1); - updateFrame(mySystem->cycles() * 3); - - // if we finished the frame, get ready for the next one - if(!myPartialFrameFlag) - endFrame(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::updateScanlineByTrace(int target) -{ - // Start a new frame if the old one was finished - if(!myPartialFrameFlag) - startFrame(); - - // true either way: - myPartialFrameFlag = true; - - while(mySystem->m6502().getPC() != target) - { - mySystem->m6502().execute(1); - updateFrame(mySystem->cycles() * 3); - } - - // if we finished the frame, get ready for the next one - if(!myPartialFrameFlag) - endFrame(); -} -#endif - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::updateFrame(Int32 clock) -{ - // See if we've already updated this portion of the screen - if((clock < myClockStartDisplay) || - (myClockAtLastUpdate >= myClockStopDisplay) || - (myClockAtLastUpdate >= clock)) - return; - - // Truncate the number of cycles to update to the stop display point - if(clock > myClockStopDisplay) - clock = myClockStopDisplay; - - // Determine how many scanlines to process - // It's easier to think about this in scanlines rather than color clocks - uInt32 startLine = (myClockAtLastUpdate - myClockWhenFrameStarted) / 228; - uInt32 endLine = (clock - myClockWhenFrameStarted) / 228; - - // Update frame one scanline at a time - for(uInt32 line = startLine; line <= endLine; ++line) - { - // Only check for inter-line changes after the current scanline - // The ideas for much of the following code was inspired by MESS - // (used with permission from Wilbert Pol) - if(line != startLine) - { - // We're no longer concerned with previously issued HMOVE's - myPreviousHMOVEPos = 0x7FFFFFFF; - bool posChanged = false; - - // Apply pending motion clocks from a HMOVE initiated during the scanline - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - if(myCurrentHMOVEPos >= 97 && myCurrentHMOVEPos < 157) - { - myPOSP0 -= myMotionClockP0; - myPOSP1 -= myMotionClockP1; - myPOSM0 -= myMotionClockM0; - myPOSM1 -= myMotionClockM1; - myPOSBL -= myMotionClockBL; - myPreviousHMOVEPos = myCurrentHMOVEPos; - posChanged = true; - } - // Indicate that the HMOVE has been completed - myCurrentHMOVEPos = 0x7FFFFFFF; - } -#ifdef USE_MMR_LATCHES - // Apply extra clocks for 'more motion required/mmr' - if(myHMP0mmr) { myPOSP0 -= 17; posChanged = true; } - if(myHMP1mmr) { myPOSP1 -= 17; posChanged = true; } - if(myHMM0mmr) { myPOSM0 -= 17; posChanged = true; } - if(myHMM1mmr) { myPOSM1 -= 17; posChanged = true; } - if(myHMBLmmr) { myPOSBL -= 17; posChanged = true; } -#endif - // Make sure positions are in range - if(posChanged) - { - if(myPOSP0 < 0) { myPOSP0 += 160; } myPOSP0 %= 160; - if(myPOSP1 < 0) { myPOSP1 += 160; } myPOSP1 %= 160; - if(myPOSM0 < 0) { myPOSM0 += 160; } myPOSM0 %= 160; - if(myPOSM1 < 0) { myPOSM1 += 160; } myPOSM1 %= 160; - if(myPOSBL < 0) { myPOSBL += 160; } myPOSBL %= 160; - } - } - - // Compute the number of clocks we're going to update - Int32 clocksToUpdate = 0; - - // Remember how many clocks we are from the left side of the screen - Int32 clocksFromStartOfScanLine = 228 - myClocksToEndOfScanLine; - - // See if we're updating more than the current scanline - if(clock > (myClockAtLastUpdate + myClocksToEndOfScanLine)) - { - // Yes, we have more than one scanline to update so finish current one - clocksToUpdate = myClocksToEndOfScanLine; - myClocksToEndOfScanLine = 228; - myClockAtLastUpdate += clocksToUpdate; - } - else - { - // No, so do as much of the current scanline as possible - clocksToUpdate = clock - myClockAtLastUpdate; - myClocksToEndOfScanLine -= clocksToUpdate; - myClockAtLastUpdate = clock; - } - - Int32 startOfScanLine = HBLANK; - - // Skip over as many horizontal blank clocks as we can - if(clocksFromStartOfScanLine < startOfScanLine) - { - uInt32 tmp; - - if((startOfScanLine - clocksFromStartOfScanLine) < clocksToUpdate) - tmp = startOfScanLine - clocksFromStartOfScanLine; - else - tmp = clocksToUpdate; - - clocksFromStartOfScanLine += tmp; - clocksToUpdate -= tmp; - } - - // Remember frame pointer in case HMOVE blanks need to be handled - uInt8* oldFramePointer = myFramePointer; - - // Update as much of the scanline as we can - if(clocksToUpdate != 0) - { - // Calculate the ending frame pointer value - uInt8* ending = myFramePointer + clocksToUpdate; - myFramePointerClocks += clocksToUpdate; - - // See if we're in the vertical blank region - if(myVBLANK & 0x02) - { - memset(myFramePointer, 0, clocksToUpdate); - } - // Handle all other possible combinations - else - { - // Update masks - myCurrentBLMask = &TIATables::BLMask[myPOSBL & 0x03] - [(myCTRLPF & 0x30) >> 4][160 - (myPOSBL & 0xFC)]; - myCurrentP0Mask = &TIATables::PxMask[myPOSP0 & 0x03] - [mySuppressP0][myNUSIZ0 & 0x07][160 - (myPOSP0 & 0xFC)]; - myCurrentP1Mask = &TIATables::PxMask[myPOSP1 & 0x03] - [mySuppressP1][myNUSIZ1 & 0x07][160 - (myPOSP1 & 0xFC)]; - - // TODO - 08-27-2009: Simulate the weird effects of Cosmic Ark and - // Stay Frosty. The movement itself is well understood, but there - // also seems to be some widening and blanking occurring as well. - // This doesn't properly emulate the effect at a low level; it only - // simulates the behaviour as visually seen in the aforementioned - // ROMs. Other ROMs may break this simulation; more testing is - // required to figure out what's really going on here. - if(myHMM0mmr) - { - switch(myPOSM0 % 4) - { - case 3: - // Stretch this missle so it's 2 pixels wide and shifted one - // pixel to the left - myCurrentM0Mask = &TIATables::MxMask[(myPOSM0-1) & 0x03] - [myNUSIZ0 & 0x07][((myNUSIZ0 & 0x30) >> 4)|1][160 - ((myPOSM0-1) & 0xFC)]; - break; - case 2: - // Missle is disabled on this line - myCurrentM0Mask = &TIATables::DisabledMask[0]; - break; - default: - myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03] - [myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4][160 - (myPOSM0 & 0xFC)]; - break; - } - } - else - myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03] - [myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4][160 - (myPOSM0 & 0xFC)]; - if(myHMM1mmr) - { - switch(myPOSM1 % 4) - { - case 3: - // Stretch this missle so it's 2 pixels wide and shifted one - // pixel to the left - myCurrentM1Mask = &TIATables::MxMask[(myPOSM1-1) & 0x03] - [myNUSIZ1 & 0x07][((myNUSIZ1 & 0x30) >> 4)|1][160 - ((myPOSM1-1) & 0xFC)]; - break; - case 2: - // Missle is disabled on this line - myCurrentM1Mask = &TIATables::DisabledMask[0]; - break; - default: - myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03] - [myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4][160 - (myPOSM1 & 0xFC)]; - break; - } - } - else - myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03] - [myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4][160 - (myPOSM1 & 0xFC)]; - - uInt8 enabledObjects = myEnabledObjects & myDisabledObjects; - uInt32 hpos = clocksFromStartOfScanLine - HBLANK; - for(; myFramePointer < ending; ++myFramePointer, ++hpos) - { - uInt8 enabled = ((enabledObjects & PFBit) && - (myPF & myCurrentPFMask[hpos])) ? PFBit : 0; - - if((enabledObjects & BLBit) && myCurrentBLMask[hpos]) - enabled |= BLBit; - - if((enabledObjects & P1Bit) && (myCurrentGRP1 & myCurrentP1Mask[hpos])) - enabled |= P1Bit; - - if((enabledObjects & M1Bit) && myCurrentM1Mask[hpos]) - enabled |= M1Bit; - - if((enabledObjects & P0Bit) && (myCurrentGRP0 & myCurrentP0Mask[hpos])) - enabled |= P0Bit; - - if((enabledObjects & M0Bit) && myCurrentM0Mask[hpos]) - enabled |= M0Bit; - - myCollision |= TIATables::CollisionMask[enabled]; - *myFramePointer = myColorPtr[myPriorityEncoder[hpos < 80 ? 0 : 1] - [enabled | myPlayfieldPriorityAndScore]]; - } - } - myFramePointer = ending; - } - - // Handle HMOVE blanks if they are enabled - if(myHMOVEBlankEnabled && (startOfScanLine < HBLANK + 8) && - (clocksFromStartOfScanLine < (HBLANK + 8))) - { - Int32 blanks = (HBLANK + 8) - clocksFromStartOfScanLine; - memset(oldFramePointer, myColorPtr[_HBLANK], blanks); - - if((clocksToUpdate + clocksFromStartOfScanLine) >= (HBLANK + 8)) - myHMOVEBlankEnabled = false; - } - - // See if we're at the end of a scanline - if(myClocksToEndOfScanLine == 228) - { - // Yes, so set PF mask based on current CTRLPF reflection state - myCurrentPFMask = TIATables::PFMask[myCTRLPF & 0x01]; - - // TODO - 01-21-99: These should be reset right after the first copy - // of the player has passed. However, for now we'll just reset at the - // end of the scanline since the other way would be too slow. - mySuppressP0 = mySuppressP1 = 0; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void TIA::waitHorizontalSync() -{ - uInt32 cyclesToEndOfLine = 76 - ((mySystem->cycles() - - (myClockWhenFrameStarted / 3)) % 76); - - if(cyclesToEndOfLine < 76) - mySystem->incrementCycles(cyclesToEndOfLine); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::clearBuffers() -{ - memset(myCurrentFrameBuffer, 0, 160 * 320); - memset(myPreviousFrameBuffer, 0, 160 * 320); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline uInt8 TIA::dumpedInputPort(int resistance) -{ - if(resistance == Controller::minimumResistance) - { - return 0x80; - } - else if((resistance == Controller::maximumResistance) || myDumpEnabled) - { - return 0x00; - } - else - { - // Constant here is derived from '1.6 * 0.01e-6 * 228 / 3' - uInt32 needed = (uInt32) - (1.216e-6 * resistance * myScanlineCountForLastFrame * myFramerate); - if((mySystem->cycles() - myDumpDisabledCycle) > needed) - return 0x80; - else - return 0x00; - } - return 0x00; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 TIA::peek(uInt16 addr) -{ - // Update frame to current color clock before we look at anything! - updateFrame(mySystem->cycles() * 3); - - // If pins are undriven, we start with the last databus value - // Otherwise, there is some randomness injected into the mix - // In either case, we start out with D7 and D6 disabled (the only - // valid bits in a TIA read), and selectively enable them - uInt8 value = 0x3F & (!myTIAPinsDriven ? mySystem->getDataBusState() : - mySystem->getDataBusState(0xFF)); - uInt16 collision = myCollision & (uInt16)myCollisionEnabledMask; - - switch(addr & 0x000f) - { - case CXM0P: - value |= ((collision & Cx_M0P1) ? 0x80 : 0x00) | - ((collision & Cx_M0P0) ? 0x40 : 0x00); - break; - - case CXM1P: - value |= ((collision & Cx_M1P0) ? 0x80 : 0x00) | - ((collision & Cx_M1P1) ? 0x40 : 0x00); - break; - - case CXP0FB: - value |= ((collision & Cx_P0PF) ? 0x80 : 0x00) | - ((collision & Cx_P0BL) ? 0x40 : 0x00); - break; - - case CXP1FB: - value |= ((collision & Cx_P1PF) ? 0x80 : 0x00) | - ((collision & Cx_P1BL) ? 0x40 : 0x00); - break; - - case CXM0FB: - value |= ((collision & Cx_M0PF) ? 0x80 : 0x00) | - ((collision & Cx_M0BL) ? 0x40 : 0x00); - break; - - case CXM1FB: - value |= ((collision & Cx_M1PF) ? 0x80 : 0x00) | - ((collision & Cx_M1BL) ? 0x40 : 0x00); - break; - - case CXBLPF: - value = (value & 0x7F) | ((collision & Cx_BLPF) ? 0x80 : 0x00); - break; - - case CXPPMM: - value |= ((collision & Cx_P0P1) ? 0x80 : 0x00) | - ((collision & Cx_M0M1) ? 0x40 : 0x00); - break; - - case INPT0: - value = (value & 0x7F) | - dumpedInputPort(myConsole.controller(Controller::Left).read(Controller::Nine)); - break; - - case INPT1: - value = (value & 0x7F) | - dumpedInputPort(myConsole.controller(Controller::Left).read(Controller::Five)); - break; - - case INPT2: - value = (value & 0x7F) | - dumpedInputPort(myConsole.controller(Controller::Right).read(Controller::Nine)); - break; - - case INPT3: - value = (value & 0x7F) | - dumpedInputPort(myConsole.controller(Controller::Right).read(Controller::Five)); - break; - - case INPT4: - { - uInt8 button = (myConsole.controller(Controller::Left).read(Controller::Six) ? 0x80 : 0x00); - myINPT4 = (myVBLANK & 0x40) ? (myINPT4 & button) : button; - - value = (value & 0x7F) | myINPT4; - break; - } - - case INPT5: - { - uInt8 button = (myConsole.controller(Controller::Right).read(Controller::Six) ? 0x80 : 0x00); - myINPT5 = (myVBLANK & 0x40) ? (myINPT5 & button) : button; - - value = (value & 0x7F) | myINPT5; - break; - } - - default: - // This shouldn't happen, but if it does, we essentially just - // return the last databus value with bits D6 and D7 zeroed out - break; - } - return value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool TIA::poke(uInt16 addr, uInt8 value) -{ - addr = addr & 0x003f; - - Int32 clock = mySystem->cycles() * 3; - Int16 delay = TIATables::PokeDelay[addr]; - - // See if this is a poke to a PF register - if(delay == -1) - { - static uInt32 d[4] = {4, 5, 2, 3}; - Int32 x = ((clock - myClockWhenFrameStarted) % 228); - delay = d[(x / 3) & 3]; - } - - // Update frame to current CPU cycle before we make any changes! - updateFrame(clock + delay); - - // If a VSYNC hasn't been generated in time go ahead and end the frame - if(((clock - myClockWhenFrameStarted) / 228) > (Int32)myMaximumNumberOfScanlines) - { - mySystem->m6502().stop(); - myPartialFrameFlag = false; - } - - switch(addr) - { - case VSYNC: // Vertical sync set-clear - { - myVSYNC = value; - - if(myVSYNC & 0x02) - { - // Indicate when VSYNC should be finished. This should really - // be 3 * 228 according to Atari's documentation, however, some - // games don't supply the full 3 scanlines of VSYNC. - myVSYNCFinishClock = clock + 228; - } - else if(!(myVSYNC & 0x02) && (clock >= myVSYNCFinishClock)) - { - // We're no longer interested in myVSYNCFinishClock - myVSYNCFinishClock = 0x7FFFFFFF; - - // Since we're finished with the frame tell the processor to halt - mySystem->m6502().stop(); - myPartialFrameFlag = false; - } - break; - } - - case VBLANK: // Vertical blank set-clear - { - // Is the dump to ground path being set for I0, I1, I2, and I3? - if(!(myVBLANK & 0x80) && (value & 0x80)) - { - myDumpEnabled = true; - } - // Is the dump to ground path being removed from I0, I1, I2, and I3? - else if((myVBLANK & 0x80) && !(value & 0x80)) - { - myDumpEnabled = false; - myDumpDisabledCycle = mySystem->cycles(); - } - - // Are the latches for I4 and I5 being set? - if (!(myVBLANK & 0x40)) - myINPT4 = myINPT5 = 0x80; - -#if 0 // TODO - this isn't yet complete - // Check for the first scanline at which VBLANK is disabled. - // Usually, this will be the first scanline to start drawing. - if(myStartScanline == 0x7FFFFFFF && !(value & 0x10)) - myStartScanline = scanlines(); -#endif - - myVBLANK = value; - break; - } - - case WSYNC: // Wait for leading edge of HBLANK - { - // It appears that the 6507 only halts during a read cycle so - // we test here for follow-on writes which should be ignored as - // far as halting the processor is concerned. - // - // TODO - 08-30-2006: This halting isn't correct since it's - // still halting on the original write. The 6507 emulation - // should be expanded to include a READY line. - if(mySystem->m6502().lastAccessWasRead()) - { - // Tell the cpu to waste the necessary amount of time - waitHorizontalSync(); - } - break; - } - - case RSYNC: // Reset horizontal sync counter - { -// cerr << "TIA Poke: " << hex << addr << endl; - break; - } - - case NUSIZ0: // Number-size of player-missle 0 - { - // TODO - 08-11-2009: determine correct delay instead of always - // using '8'. - myNUSIZ0 = value; - mySuppressP0 = 0; - break; - } - - case NUSIZ1: // Number-size of player-missle 1 - { - // TODO - 08-11-2009: determine correct delay instead of always - // using '8'. - myNUSIZ1 = value; - mySuppressP1 = 0; - break; - } - - case COLUP0: // Color-Luminance Player 0 - { - uInt32 color = (uInt32)(value & 0xfe); - if(myColorLossEnabled && (myScanlineCountForLastFrame & 0x01)) - { - color |= 0x01; - } - myColor[_P0] = myColor[_M0] = - (((((color << 8) | color) << 8) | color) << 8) | color; - break; - } - - case COLUP1: // Color-Luminance Player 1 - { - uInt32 color = (uInt32)(value & 0xfe); - if(myColorLossEnabled && (myScanlineCountForLastFrame & 0x01)) - { - color |= 0x01; - } - myColor[_P1] = myColor[_M1] = - (((((color << 8) | color) << 8) | color) << 8) | color; - break; - } - - case COLUPF: // Color-Luminance Playfield - { - uInt32 color = (uInt32)(value & 0xfe); - if(myColorLossEnabled && (myScanlineCountForLastFrame & 0x01)) - { - color |= 0x01; - } - myColor[_PF] = myColor[_BL] = - (((((color << 8) | color) << 8) | color) << 8) | color; - break; - } - - case COLUBK: // Color-Luminance Background - { - uInt32 color = (uInt32)(value & 0xfe); - if(myColorLossEnabled && (myScanlineCountForLastFrame & 0x01)) - { - color |= 0x01; - } - myColor[_BK] = (((((color << 8) | color) << 8) | color) << 8) | color; - break; - } - - case CTRLPF: // Control Playfield, Ball size, Collisions - { - myCTRLPF = value; - - // The playfield priority and score bits from the control register - // are accessed when the frame is being drawn. We precompute the - // necessary value here so we can save time while drawing. - myPlayfieldPriorityAndScore = ((myCTRLPF & 0x06) << 5); - - // Update the playfield mask based on reflection state if - // we're still on the left hand side of the playfield - if(((clock - myClockWhenFrameStarted) % 228) < (68 + 79)) - myCurrentPFMask = TIATables::PFMask[myCTRLPF & 0x01]; - - break; - } - - case REFP0: // Reflect Player 0 - { - // See if the reflection state of the player is being changed - if(((value & 0x08) && !myREFP0) || (!(value & 0x08) && myREFP0)) - { - myREFP0 = (value & 0x08); - myCurrentGRP0 = TIATables::GRPReflect[myCurrentGRP0]; - } - break; - } - - case REFP1: // Reflect Player 1 - { - // See if the reflection state of the player is being changed - if(((value & 0x08) && !myREFP1) || (!(value & 0x08) && myREFP1)) - { - myREFP1 = (value & 0x08); - myCurrentGRP1 = TIATables::GRPReflect[myCurrentGRP1]; - } - break; - } - - case PF0: // Playfield register byte 0 - { - myPF = (myPF & 0x000FFFF0) | ((value >> 4) & 0x0F); - - if(myPF == 0) - myEnabledObjects &= ~PFBit; - else - myEnabledObjects |= PFBit; - - #ifdef DEBUGGER_SUPPORT - uInt16 dataAddr = mySystem->m6502().lastDataAddressForPoke(); - if(dataAddr) - mySystem->setAccessFlags(dataAddr, CartDebug::PGFX); - #endif - break; - } - - case PF1: // Playfield register byte 1 - { - myPF = (myPF & 0x000FF00F) | ((uInt32)value << 4); - - if(myPF == 0) - myEnabledObjects &= ~PFBit; - else - myEnabledObjects |= PFBit; - - #ifdef DEBUGGER_SUPPORT - uInt16 dataAddr = mySystem->m6502().lastDataAddressForPoke(); - if(dataAddr) - mySystem->setAccessFlags(dataAddr, CartDebug::PGFX); - #endif - break; - } - - case PF2: // Playfield register byte 2 - { - myPF = (myPF & 0x00000FFF) | ((uInt32)value << 12); - - if(myPF == 0) - myEnabledObjects &= ~PFBit; - else - myEnabledObjects |= PFBit; - - #ifdef DEBUGGER_SUPPORT - uInt16 dataAddr = mySystem->m6502().lastDataAddressForPoke(); - if(dataAddr) - mySystem->setAccessFlags(dataAddr, CartDebug::PGFX); - #endif - break; - } - - case RESP0: // Reset Player 0 - { - Int32 hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - Int16 newx; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - newx = hpos < 7 ? 3 : ((hpos + 5) % 160); - // If HMOVE is active, adjust for any remaining horizontal move clocks - applyActiveHMOVEMotion(hpos, newx, myMotionClockP0); - } - else - { - newx = hpos < -2 ? 3 : ((hpos + 5) % 160); - applyPreviousHMOVEMotion(hpos, newx, myHMP0); - } - if(myPOSP0 != newx) - { - // Find out under what condition the player is being reset - delay = TIATables::PxPosResetWhen[myNUSIZ0 & 7][myPOSP0][newx]; - - switch(delay) - { - // Player is being reset during the display of one of its copies - case 1: - // TODO - 08-20-2009: determine whether we really need to update - // the frame here, and also come up with a way to eliminate the - // 200KB PxPosResetWhen table. - updateFrame(clock + 11); - mySuppressP0 = 1; - break; - - // Player is being reset in neither the delay nor display section - case 0: - mySuppressP0 = 1; - break; - - // Player is being reset during the delay section of one of its copies - case -1: - mySuppressP0 = 0; - break; - } - myPOSP0 = newx; - } - break; - } - - case RESP1: // Reset Player 1 - { - Int32 hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - Int16 newx; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - newx = hpos < 7 ? 3 : ((hpos + 5) % 160); - // If HMOVE is active, adjust for any remaining horizontal move clocks - applyActiveHMOVEMotion(hpos, newx, myMotionClockP1); - } - else - { - newx = hpos < -2 ? 3 : ((hpos + 5) % 160); - applyPreviousHMOVEMotion(hpos, newx, myHMP1); - } - if(myPOSP1 != newx) - { - // Find out under what condition the player is being reset - delay = TIATables::PxPosResetWhen[myNUSIZ1 & 7][myPOSP1][newx]; - - switch(delay) - { - // Player is being reset during the display of one of its copies - case 1: - // TODO - 08-20-2009: determine whether we really need to update - // the frame here, and also come up with a way to eliminate the - // 200KB PxPosResetWhen table. - updateFrame(clock + 11); - mySuppressP1 = 1; - break; - - // Player is being reset in neither the delay nor display section - case 0: - mySuppressP1 = 1; - break; - - // Player is being reset during the delay section of one of its copies - case -1: - mySuppressP1 = 0; - break; - } - myPOSP1 = newx; - } - break; - } - - case RESM0: // Reset Missle 0 - { - Int32 hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - Int16 newx; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - newx = hpos < 7 ? 2 : ((hpos + 4) % 160); - // If HMOVE is active, adjust for any remaining horizontal move clocks - applyActiveHMOVEMotion(hpos, newx, myMotionClockM0); - } - else - { - newx = hpos < -1 ? 2 : ((hpos + 4) % 160); - applyPreviousHMOVEMotion(hpos, newx, myHMM0); - } - if(newx != myPOSM0) - { - myPOSM0 = newx; - } - break; - } - - case RESM1: // Reset Missle 1 - { - Int32 hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - Int16 newx; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - newx = hpos < 7 ? 2 : ((hpos + 4) % 160); - // If HMOVE is active, adjust for any remaining horizontal move clocks - applyActiveHMOVEMotion(hpos, newx, myMotionClockM1); - } - else - { - newx = hpos < -1 ? 2 : ((hpos + 4) % 160); - applyPreviousHMOVEMotion(hpos, newx, myHMM1); - } - if(newx != myPOSM1) - { - myPOSM1 = newx; - } - break; - } - - case RESBL: // Reset Ball - { - Int32 hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - myPOSBL = hpos < 7 ? 2 : ((hpos + 4) % 160); - // If HMOVE is active, adjust for any remaining horizontal move clocks - applyActiveHMOVEMotion(hpos, myPOSBL, myMotionClockBL); - } - else - { - myPOSBL = hpos < 0 ? 2 : ((hpos + 4) % 160); - applyPreviousHMOVEMotion(hpos, myPOSBL, myHMBL); - } - break; - } - - case AUDC0: // Audio control 0 - { - myAUDC0 = value & 0x0f; - mySound.set(addr, value, mySystem->cycles()); - break; - } - - case AUDC1: // Audio control 1 - { - myAUDC1 = value & 0x0f; - mySound.set(addr, value, mySystem->cycles()); - break; - } - - case AUDF0: // Audio frequency 0 - { - myAUDF0 = value & 0x1f; - mySound.set(addr, value, mySystem->cycles()); - break; - } - - case AUDF1: // Audio frequency 1 - { - myAUDF1 = value & 0x1f; - mySound.set(addr, value, mySystem->cycles()); - break; - } - - case AUDV0: // Audio volume 0 - { - myAUDV0 = value & 0x0f; - mySound.set(addr, value, mySystem->cycles()); - break; - } - - case AUDV1: // Audio volume 1 - { - myAUDV1 = value & 0x0f; - mySound.set(addr, value, mySystem->cycles()); - break; - } - - case GRP0: // Graphics Player 0 - { - // Set player 0 graphics - myGRP0 = value; - - // Copy player 1 graphics into its delayed register - myDGRP1 = myGRP1; - - // Get the "current" data for GRP0 base on delay register and reflect - uInt8 grp0 = myVDELP0 ? myDGRP0 : myGRP0; - myCurrentGRP0 = myREFP0 ? TIATables::GRPReflect[grp0] : grp0; - - // Get the "current" data for GRP1 base on delay register and reflect - uInt8 grp1 = myVDELP1 ? myDGRP1 : myGRP1; - myCurrentGRP1 = myREFP1 ? TIATables::GRPReflect[grp1] : grp1; - - // Set enabled object bits - if(myCurrentGRP0 != 0) - myEnabledObjects |= P0Bit; - else - myEnabledObjects &= ~P0Bit; - - if(myCurrentGRP1 != 0) - myEnabledObjects |= P1Bit; - else - myEnabledObjects &= ~P1Bit; - - #ifdef DEBUGGER_SUPPORT - uInt16 dataAddr = mySystem->m6502().lastDataAddressForPoke(); - if(dataAddr) - mySystem->setAccessFlags(dataAddr, CartDebug::GFX); - #endif - break; - } - - case GRP1: // Graphics Player 1 - { - // Set player 1 graphics - myGRP1 = value; - - // Copy player 0 graphics into its delayed register - myDGRP0 = myGRP0; - - // Copy ball graphics into its delayed register - myDENABL = myENABL; - - // Get the "current" data for GRP0 base on delay register - uInt8 grp0 = myVDELP0 ? myDGRP0 : myGRP0; - myCurrentGRP0 = myREFP0 ? TIATables::GRPReflect[grp0] : grp0; - - // Get the "current" data for GRP1 base on delay register - uInt8 grp1 = myVDELP1 ? myDGRP1 : myGRP1; - myCurrentGRP1 = myREFP1 ? TIATables::GRPReflect[grp1] : grp1; - - // Set enabled object bits - if(myCurrentGRP0 != 0) - myEnabledObjects |= P0Bit; - else - myEnabledObjects &= ~P0Bit; - - if(myCurrentGRP1 != 0) - myEnabledObjects |= P1Bit; - else - myEnabledObjects &= ~P1Bit; - - if(myVDELBL ? myDENABL : myENABL) - myEnabledObjects |= BLBit; - else - myEnabledObjects &= ~BLBit; - - #ifdef DEBUGGER_SUPPORT - uInt16 dataAddr = mySystem->m6502().lastDataAddressForPoke(); - if(dataAddr) - mySystem->setAccessFlags(dataAddr, CartDebug::GFX); - #endif - break; - } - - case ENAM0: // Enable Missile 0 graphics - { - myENAM0 = value & 0x02; - - if(myENAM0 && !myRESMP0) - myEnabledObjects |= M0Bit; - else - myEnabledObjects &= ~M0Bit; - break; - } - - case ENAM1: // Enable Missile 1 graphics - { - myENAM1 = value & 0x02; - - if(myENAM1 && !myRESMP1) - myEnabledObjects |= M1Bit; - else - myEnabledObjects &= ~M1Bit; - break; - } - - case ENABL: // Enable Ball graphics - { - myENABL = value & 0x02; - - if(myVDELBL ? myDENABL : myENABL) - myEnabledObjects |= BLBit; - else - myEnabledObjects &= ~BLBit; - - break; - } - - case HMP0: // Horizontal Motion Player 0 - { - pokeHMP0(value, clock); - break; - } - - case HMP1: // Horizontal Motion Player 1 - { - pokeHMP1(value, clock); - break; - } - - case HMM0: // Horizontal Motion Missle 0 - { - pokeHMM0(value, clock); - break; - } - - case HMM1: // Horizontal Motion Missle 1 - { - pokeHMM1(value, clock); - break; - } - - case HMBL: // Horizontal Motion Ball - { - pokeHMBL(value, clock); - break; - } - - case VDELP0: // Vertical Delay Player 0 - { - myVDELP0 = value & 0x01; - - uInt8 grp0 = myVDELP0 ? myDGRP0 : myGRP0; - myCurrentGRP0 = myREFP0 ? TIATables::GRPReflect[grp0] : grp0; - - if(myCurrentGRP0 != 0) - myEnabledObjects |= P0Bit; - else - myEnabledObjects &= ~P0Bit; - break; - } - - case VDELP1: // Vertical Delay Player 1 - { - myVDELP1 = value & 0x01; - - uInt8 grp1 = myVDELP1 ? myDGRP1 : myGRP1; - myCurrentGRP1 = myREFP1 ? TIATables::GRPReflect[grp1] : grp1; - - if(myCurrentGRP1 != 0) - myEnabledObjects |= P1Bit; - else - myEnabledObjects &= ~P1Bit; - break; - } - - case VDELBL: // Vertical Delay Ball - { - myVDELBL = value & 0x01; - - if(myVDELBL ? myDENABL : myENABL) - myEnabledObjects |= BLBit; - else - myEnabledObjects &= ~BLBit; - break; - } - - case RESMP0: // Reset missle 0 to player 0 - { - if(myRESMP0 && !(value & 0x02)) - { - uInt16 middle = 4; - switch(myNUSIZ0 & 0x07) - { - case 0x05: middle = 8; break; // double size - case 0x07: middle = 16; break; // quad size - } - myPOSM0 = myPOSP0 + middle; - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - myPOSM0 -= (8 - myMotionClockP0); - myPOSM0 += (8 - myMotionClockM0); - if(myPOSM0 < 0) myPOSM0 += 160; - } - myPOSM0 %= 160; - } - myRESMP0 = value & 0x02; - - if(myENAM0 && !myRESMP0) - myEnabledObjects |= M0Bit; - else - myEnabledObjects &= ~M0Bit; - - break; - } - - case RESMP1: // Reset missle 1 to player 1 - { - if(myRESMP1 && !(value & 0x02)) - { - uInt16 middle = 4; - switch(myNUSIZ1 & 0x07) - { - case 0x05: middle = 8; break; // double size - case 0x07: middle = 16; break; // quad size - } - myPOSM1 = myPOSP1 + middle; - if(myCurrentHMOVEPos != 0x7FFFFFFF) - { - myPOSM1 -= (8 - myMotionClockP1); - myPOSM1 += (8 - myMotionClockM1); - if(myPOSM1 < 0) myPOSM1 += 160; - } - myPOSM1 %= 160; - } - myRESMP1 = value & 0x02; - - if(myENAM1 && !myRESMP1) - myEnabledObjects |= M1Bit; - else - myEnabledObjects &= ~M1Bit; - break; - } - - case HMOVE: // Apply horizontal motion - { - int hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - myCurrentHMOVEPos = hpos; - - // See if we need to enable the HMOVE blank bug - myHMOVEBlankEnabled = myAllowHMOVEBlanks ? - TIATables::HMOVEBlankEnableCycles[((clock - myClockWhenFrameStarted) % 228) / 3] : false; - -#ifdef USE_MMR_LATCHES - // Do we have to undo some of the already applied cycles from an - // active graphics latch? - if(hpos + HBLANK < 17 * 4) - { - Int16 cycle_fix = 17 - ((hpos + VBLANK + 7) / 4); - if(myHMP0mmr) myPOSP0 = (myPOSP0 + cycle_fix) % 160; - if(myHMP1mmr) myPOSP1 = (myPOSP1 + cycle_fix) % 160; - if(myHMM0mmr) myPOSM0 = (myPOSM0 + cycle_fix) % 160; - if(myHMM1mmr) myPOSM1 = (myPOSM1 + cycle_fix) % 160; - if(myHMBLmmr) myPOSBL = (myPOSBL + cycle_fix) % 160; - } - myHMP0mmr = myHMP1mmr = myHMM0mmr = myHMM1mmr = myHMBLmmr = false; -#endif - // Can HMOVE activities be ignored? - if(hpos >= -5 && hpos < 97 ) - { - myMotionClockP0 = 0; - myMotionClockP1 = 0; - myMotionClockM0 = 0; - myMotionClockM1 = 0; - myMotionClockBL = 0; - myHMOVEBlankEnabled = false; - myCurrentHMOVEPos = 0x7FFFFFFF; - break; - } - - myMotionClockP0 = (myHMP0 ^ 0x80) >> 4; - myMotionClockP1 = (myHMP1 ^ 0x80) >> 4; - myMotionClockM0 = (myHMM0 ^ 0x80) >> 4; - myMotionClockM1 = (myHMM1 ^ 0x80) >> 4; - myMotionClockBL = (myHMBL ^ 0x80) >> 4; - - // Adjust number of graphics motion clocks for active display - if(hpos >= 97 && hpos < 151) - { - Int16 skip_motclks = (160 - myCurrentHMOVEPos - 6) >> 2; - myMotionClockP0 -= skip_motclks; - myMotionClockP1 -= skip_motclks; - myMotionClockM0 -= skip_motclks; - myMotionClockM1 -= skip_motclks; - myMotionClockBL -= skip_motclks; - if(myMotionClockP0 < 0) myMotionClockP0 = 0; - if(myMotionClockP1 < 0) myMotionClockP1 = 0; - if(myMotionClockM0 < 0) myMotionClockM0 = 0; - if(myMotionClockM1 < 0) myMotionClockM1 = 0; - if(myMotionClockBL < 0) myMotionClockBL = 0; - } - - if(hpos >= -56 && hpos < -5) - { - Int16 max_motclks = (7 - (myCurrentHMOVEPos + 5)) >> 2; - if(myMotionClockP0 > max_motclks) myMotionClockP0 = max_motclks; - if(myMotionClockP1 > max_motclks) myMotionClockP1 = max_motclks; - if(myMotionClockM0 > max_motclks) myMotionClockM0 = max_motclks; - if(myMotionClockM1 > max_motclks) myMotionClockM1 = max_motclks; - if(myMotionClockBL > max_motclks) myMotionClockBL = max_motclks; - } - - // Apply horizontal motion - if(hpos < -5 || hpos >= 157) - { - myPOSP0 += 8 - myMotionClockP0; - myPOSP1 += 8 - myMotionClockP1; - myPOSM0 += 8 - myMotionClockM0; - myPOSM1 += 8 - myMotionClockM1; - myPOSBL += 8 - myMotionClockBL; - } - - // Make sure positions are in range - if(myPOSP0 < 0) { myPOSP0 += 160; } myPOSP0 %= 160; - if(myPOSP1 < 0) { myPOSP1 += 160; } myPOSP1 %= 160; - if(myPOSM0 < 0) { myPOSM0 += 160; } myPOSM0 %= 160; - if(myPOSM1 < 0) { myPOSM1 += 160; } myPOSM1 %= 160; - if(myPOSBL < 0) { myPOSBL += 160; } myPOSBL %= 160; - - mySuppressP0 = mySuppressP1 = 0; - break; - } - - case HMCLR: // Clear horizontal motion registers - { - pokeHMP0(0, clock); - pokeHMP1(0, clock); - pokeHMM0(0, clock); - pokeHMM1(0, clock); - pokeHMBL(0, clock); - break; - } - - case CXCLR: // Clear collision latches - { - myCollision = 0; - break; - } - - default: - { -#ifdef DEBUG_ACCESSES - cerr << "BAD TIA Poke: " << hex << addr << endl; -#endif - break; - } - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Note that the following methods to change the horizontal motion registers -// are not completely accurate. We should be taking care of the following -// explanation from A. Towers Hardware Notes: -// -// Much more interesting is this: if the counter has not yet -// reached the value in HMxx (or has reached it but not yet -// commited the comparison) and a value with at least one bit -// in common with all remaining internal counter states is -// written (zeros or ones), the stopping condition will never be -// reached and the object will be moved a full 15 pixels left. -// In addition to this, the HMOVE will complete without clearing -// the "more movement required" latch, and so will continue to send -// an additional clock signal every 4 CLK (during visible and -// non-visible parts of the scanline) until another HMOVE operation -// clears the latch. The HMCLR command does not reset these latches. -// -// This condition is what causes the 'starfield effect' in Cosmic Ark, -// and the 'snow' in Stay Frosty. Ideally, we'd trace the counter and -// do a compare every colour clock, updating the horizontal positions -// when applicable. We can save time by cheating, and noting that the -// effect only occurs for 'magic numbers' 0x70 and 0x80. -// -// Most of the ideas in these methods come from MESS. -// (used with permission from Wilbert Pol) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::pokeHMP0(uInt8 value, Int32 clock) -{ - value &= 0xF0; - if(myHMP0 == value) - return; - - int hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF && - hpos < BSPF_min(myCurrentHMOVEPos + 6 + myMotionClockP0 * 4, 7)) - { - Int32 newMotion = (value ^ 0x80) >> 4; - // Check if new horizontal move can still be applied normally - if(newMotion > myMotionClockP0 || - hpos <= BSPF_min(myCurrentHMOVEPos + 6 + newMotion * 4, 7)) - { - myPOSP0 -= (newMotion - myMotionClockP0); - myMotionClockP0 = newMotion; - } - else - { - myPOSP0 -= (15 - myMotionClockP0); - myMotionClockP0 = 15; - if(value != 0x70 && value != 0x80) - myHMP0mmr = true; - } - if(myPOSP0 < 0) { myPOSP0 += 160; } myPOSP0 %= 160; - } - myHMP0 = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::pokeHMP1(uInt8 value, Int32 clock) -{ - value &= 0xF0; - if(myHMP1 == value) - return; - - int hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF && - hpos < BSPF_min(myCurrentHMOVEPos + 6 + myMotionClockP1 * 4, 7)) - { - Int32 newMotion = (value ^ 0x80) >> 4; - // Check if new horizontal move can still be applied normally - if(newMotion > myMotionClockP1 || - hpos <= BSPF_min(myCurrentHMOVEPos + 6 + newMotion * 4, 7)) - { - myPOSP1 -= (newMotion - myMotionClockP1); - myMotionClockP1 = newMotion; - } - else - { - myPOSP1 -= (15 - myMotionClockP1); - myMotionClockP1 = 15; - if(value != 0x70 && value != 0x80) - myHMP1mmr = true; - } - if(myPOSP1 < 0) { myPOSP1 += 160; } myPOSP1 %= 160; - } - myHMP1 = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::pokeHMM0(uInt8 value, Int32 clock) -{ - value &= 0xF0; - if(myHMM0 == value) - return; - - int hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF && - hpos < BSPF_min(myCurrentHMOVEPos + 6 + myMotionClockM0 * 4, 7)) - { - Int32 newMotion = (value ^ 0x80) >> 4; - // Check if new horizontal move can still be applied normally - if(newMotion > myMotionClockM0 || - hpos <= BSPF_min(myCurrentHMOVEPos + 6 + newMotion * 4, 7)) - { - myPOSM0 -= (newMotion - myMotionClockM0); - myMotionClockM0 = newMotion; - } - else - { - myPOSM0 -= (15 - myMotionClockM0); - myMotionClockM0 = 15; - if(value != 0x70 && value != 0x80) - myHMM0mmr = true; - } - if(myPOSM0 < 0) { myPOSM0 += 160; } myPOSM0 %= 160; - } - myHMM0 = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::pokeHMM1(uInt8 value, Int32 clock) -{ - value &= 0xF0; - if(myHMM1 == value) - return; - - int hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF && - hpos < BSPF_min(myCurrentHMOVEPos + 6 + myMotionClockM1 * 4, 7)) - { - Int32 newMotion = (value ^ 0x80) >> 4; - // Check if new horizontal move can still be applied normally - if(newMotion > myMotionClockM1 || - hpos <= BSPF_min(myCurrentHMOVEPos + 6 + newMotion * 4, 7)) - { - myPOSM1 -= (newMotion - myMotionClockM1); - myMotionClockM1 = newMotion; - } - else - { - myPOSM1 -= (15 - myMotionClockM1); - myMotionClockM1 = 15; - if(value != 0x70 && value != 0x80) - myHMM1mmr = true; - } - if(myPOSM1 < 0) { myPOSM1 += 160; } myPOSM1 %= 160; - } - myHMM1 = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::pokeHMBL(uInt8 value, Int32 clock) -{ - value &= 0xF0; - if(myHMBL == value) - return; - - int hpos = (clock - myClockWhenFrameStarted) % 228 - HBLANK; - - // Check if HMOVE is currently active - if(myCurrentHMOVEPos != 0x7FFFFFFF && - hpos < BSPF_min(myCurrentHMOVEPos + 6 + myMotionClockBL * 4, 7)) - { - Int32 newMotion = (value ^ 0x80) >> 4; - // Check if new horizontal move can still be applied normally - if(newMotion > myMotionClockBL || - hpos <= BSPF_min(myCurrentHMOVEPos + 6 + newMotion * 4, 7)) - { - myPOSBL -= (newMotion - myMotionClockBL); - myMotionClockBL = newMotion; - } - else - { - myPOSBL -= (15 - myMotionClockBL); - myMotionClockBL = 15; - if(value != 0x70 && value != 0x80) - myHMBLmmr = true; - } - if(myPOSBL < 0) { myPOSBL += 160; } myPOSBL %= 160; - } - myHMBL = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// The following two methods apply extra clocks when a horizontal motion -// register (HMxx) is modified during an HMOVE, before waiting for the -// documented time of at least 24 CPU cycles. The applicable explanation -// from A. Towers Hardware Notes is as follows: -// -// In theory then the side effects of modifying the HMxx registers -// during HMOVE should be quite straight-forward. If the internal -// counter has not yet reached the value in HMxx, a new value greater -// than this (in 0-15 terms) will work normally. Conversely, if -// the counter has already reached the value in HMxx, new values -// will have no effect because the latch will have been cleared. -// -// Most of the ideas in these methods come from MESS. -// (used with permission from Wilbert Pol) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void TIA::applyActiveHMOVEMotion(int hpos, Int16& pos, Int32 motionClock) -{ - if(hpos < BSPF_min(myCurrentHMOVEPos + 6 + 16 * 4, 7)) - { - Int32 decrements_passed = (hpos - (myCurrentHMOVEPos + 4)) >> 2; - pos += 8; - if((motionClock - decrements_passed) > 0) - { - pos -= (motionClock - decrements_passed); - if(pos < 0) pos += 160; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -inline void TIA::applyPreviousHMOVEMotion(int hpos, Int16& pos, uInt8 motion) -{ - if(myPreviousHMOVEPos != 0x7FFFFFFF) - { - uInt8 motclk = (motion ^ 0x80) >> 4; - if(hpos <= myPreviousHMOVEPos - 228 + 5 + motclk * 4) - { - uInt8 motclk_passed = (hpos - (myPreviousHMOVEPos - 228 + 6)) >> 2; - pos -= (motclk - motclk_passed); - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIA::TIA(const TIA& c) - : myConsole(c.myConsole), - mySound(c.mySound), - mySettings(c.mySettings) -{ - assert(false); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIA& TIA::operator = (const TIA&) -{ - assert(false); - return *this; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIA.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIA.hxx deleted file mode 100644 index 42f492a2e1..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIA.hxx +++ /dev/null @@ -1,618 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIA.hxx 2231 2011-05-10 15:04:19Z stephena $ -//============================================================================ - -#ifndef TIA_HXX -#define TIA_HXX - -class Console; -class Settings; -class Sound; - -#include "bspf.hxx" -#include "Device.hxx" -#include "System.hxx" -#include "TIATables.hxx" - -/** - This class is a device that emulates the Television Interface Adapator - found in the Atari 2600 and 7800 consoles. The Television Interface - Adapator is an integrated circuit designed to interface between an - eight bit microprocessor and a television video modulator. It converts - eight bit parallel data into serial outputs for the color, luminosity, - and composite sync required by a video modulator. - - This class outputs the serial data into a frame buffer which can then - be displayed on screen. - - @author Bradford W. Mott - @version $Id: TIA.hxx 2231 2011-05-10 15:04:19Z stephena $ -*/ -class TIA : public Device -{ - public: - friend class TIADebug; - - /** - Create a new TIA for the specified console - - @param console The console the TIA is associated with - @param sound The sound object the TIA is associated with - @param settings The settings object for this TIA device - */ - TIA(Console& console, Sound& sound, Settings& settings); - - /** - Destructor - */ - virtual ~TIA(); - - public: - /** - Reset device to its power-on state - */ - void reset(); - - /** - Reset frame to current YStart/Height properties - */ - void frameReset(); - - /** - Notification method invoked by the system right before the - system resets its cycle counter to zero. It may be necessary - to override this method for devices that remember cycle counts. - */ - void systemCyclesReset(); - - /** - Install TIA in the specified system. Invoked by the system - when the TIA is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system); - - /** - Install TIA in the specified system and device. Invoked by - the system when the TIA is attached to it. All devices - which invoke this method take responsibility for chaining - requests back to *this* device. - - @param system The system the device should install itself in - @param device The device responsible for this address space - */ - void install(System& system, Device& device); - - /** - Save the current state of this device to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const; - - /** - Load the current state of this device from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in); - - /** - The following are very similar to save() and load(), except they - do a 'deeper' save of the display data itself. - - Normally, the internal framebuffer doesn't need to be saved to - a state file, since the file already contains all the information - needed to re-create it, starting from scanline 0. In effect, when a - state is loaded, the framebuffer is empty, and the next call to - update() generates valid framebuffer data. - - However, state files saved from the debugger need more information, - such as the exact state of the internal framebuffer itself *before* - we call update(), including if the display was in partial frame mode. - - Essentially, a normal state save has 'frame resolution', whereas - the debugger state save has 'cycle resolution', and hence needs - more information. The methods below save/load this extra info, - and eliminate having to save approx. 50K to normal state files. - */ - bool saveDisplay(Serializer& out) const; - bool loadDisplay(Serializer& in); - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const { return "TIA"; } - - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address); - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value); - - /** - This method should be called at an interval corresponding to the - desired frame rate to update the TIA. Invoking this method will update - the graphics buffer and generate the corresponding audio samples. - */ - void update(); - - /** - Answers the current frame buffer - - @return Pointer to the current frame buffer - */ - uInt8* currentFrameBuffer() const - { return myCurrentFrameBuffer + myFramePointerOffset; } - - /** - Answers the previous frame buffer - - @return Pointer to the previous frame buffer - */ - uInt8* previousFrameBuffer() const - { return myPreviousFrameBuffer + myFramePointerOffset; } - - /** - Answers the width and height of the frame buffer - */ - uInt32 width() const { return myFrameWidth; } - uInt32 height() const { return myFrameHeight; } - uInt32 ystart() const { return myFrameYStart; } - - /** - Changes the current Height/YStart properties. - Note that calls to these method(s) must be eventually followed by - ::frameReset() for the changes to take effect. - */ - void setHeight(uInt32 height) { myFrameHeight = height; } - void setYStart(uInt32 ystart) { myFrameYStart = ystart; } - - /** - Enables/disables auto-frame calculation. If enabled, the TIA - re-adjusts the framerate at regular intervals. - - @param mode Whether to enable or disable all auto-frame calculation - */ - void enableAutoFrame(bool mode) { myAutoFrameEnabled = mode; } - - /** - Enables/disables color-loss for PAL modes only. - - @param mode Whether to enable or disable PAL color-loss mode - */ - void enableColorLoss(bool mode) - { myColorLossEnabled = myFramerate <= 55 ? mode : false; } - - /** - Answers the current color clock we've gotten to on this scanline. - - @return The current color clock - */ - uInt32 clocksThisLine() const - { return ((mySystem->cycles() * 3) - myClockWhenFrameStarted) % 228; } - - /** - Answers the total number of scanlines the TIA generated in producing - the current frame buffer. For partial frames, this will be the - current scanline. - - @return The total number of scanlines generated - */ - uInt32 scanlines() const - { return ((mySystem->cycles() * 3) - myClockWhenFrameStarted) / 228; } - - /** - Answers whether the TIA is currently in 'partial frame' mode - (we're in between a call of startFrame and endFrame). - - @return If we're in partial frame mode - */ - bool partialFrame() const { return myPartialFrameFlag; } - - /** - Answers the first scanline at which drawing occured in the last frame. - - @return The starting scanline - */ - uInt32 startScanline() const { return myStartScanline; } - - /** - Answers the current position of the virtual 'electron beam' used to - draw the TIA image. If not in partial frame mode, the position is - defined to be in the lower right corner (@ width/height of the screen). - Note that the coordinates are with respect to currentFrameBuffer(), - taking any YStart values into account. - - @return The x/y coordinates of the scanline electron beam, and whether - it is in the visible/viewable area of the screen - */ - bool scanlinePos(uInt16& x, uInt16& y) const; - - /** - Enables/disables all TIABit bits. Note that disabling a graphical - object also disables its collisions. - - @param mode Whether to enable or disable all bits - */ - void enableBits(bool mode); - - /** - Enables/disable/toggle the specified TIA bit. Note that disabling a - graphical object also disables its collisions. - - @param mode 1/0 indicates on/off, and values greater than 1 mean - flip the bit from its current state - - @return Whether the bit was enabled or disabled - */ - bool toggleBit(TIABit b, uInt8 mode = 2); - - /** - Enables/disables all TIABit collisions. - - @param mode Whether to enable or disable all collisions - */ - void enableCollisions(bool mode); - - /** - Enables/disable/toggle the specified TIA bit collision. - - @param mode 1/0 indicates on/off, and values greater than 1 mean - flip the collision from its current state - - @return Whether the collision was enabled or disabled - */ - bool toggleCollision(TIABit b, uInt8 mode = 2); - - /** - Toggle the display of HMOVE blanks. - - @return Whether the HMOVE blanking was enabled or disabled - */ - bool toggleHMOVEBlank(); - - /** - Enables/disable/toggle 'fixed debug colors' mode. - - @param mode 1/0 indicates on/off, otherwise flip from - its current state - - @return Whether the mode was enabled or disabled - */ - bool toggleFixedColors(uInt8 mode = 2); - -#ifdef DEBUGGER_SUPPORT - /** - This method should be called to update the TIA with a new scanline. - */ - void updateScanline(); - - /** - This method should be called to update the TIA with a new partial - scanline by stepping one CPU instruction. - */ - void updateScanlineByStep(); - - /** - This method should be called to update the TIA with a new partial - scanline by tracing to target address. - */ - void updateScanlineByTrace(int target); -#endif - - private: - // Update the current frame buffer to the specified color clock - void updateFrame(Int32 clock); - - // Waste cycles until the current scanline is finished - void waitHorizontalSync(); - - // Clear both internal TIA buffers to black (palette color 0) - void clearBuffers(); - - // Set up bookkeeping for the next frame - void startFrame(); - - // Update bookkeeping at end of frame - void endFrame(); - - // Convert resistance from ports to dumped value - uInt8 dumpedInputPort(int resistance); - - // Write the specified value to the HMOVE registers at the given clock - void pokeHMP0(uInt8 value, Int32 clock); - void pokeHMP1(uInt8 value, Int32 clock); - void pokeHMM0(uInt8 value, Int32 clock); - void pokeHMM1(uInt8 value, Int32 clock); - void pokeHMBL(uInt8 value, Int32 clock); - - // Apply motion to registers when HMOVE is currently active - void applyActiveHMOVEMotion(int hpos, Int16& pos, Int32 motionClock); - - // Apply motion to registers when HMOVE was previously active - void applyPreviousHMOVEMotion(int hpos, Int16& pos, uInt8 motion); - - private: - // Console the TIA is associated with - Console& myConsole; - - // Sound object the TIA is associated with - Sound& mySound; - - // Settings object the TIA is associated with - Settings& mySettings; - - // Pointer to the current frame buffer - uInt8* myCurrentFrameBuffer; - - // Pointer to the previous frame buffer - uInt8* myPreviousFrameBuffer; - - // Pointer to the next pixel that will be drawn in the current frame buffer - uInt8* myFramePointer; - - // Indicates offset used by the exported frame buffer - // (the exported frame buffer is a vertical 'sliding window' of the actual buffer) - uInt32 myFramePointerOffset; - - // Indicates the number of 'colour clocks' offset from the base - // frame buffer pointer - // (this is used when loading state files with a 'partial' frame) - uInt32 myFramePointerClocks; - - // Indicates the width of the visible scanline - uInt32 myFrameWidth; - - // Indicated what scanline the frame should start being drawn at - uInt32 myFrameYStart; - - // Indicates the height of the frame in scanlines - uInt32 myFrameHeight; - - // Indicates offset in color clocks when display should begin - uInt32 myStartDisplayOffset; - - // Indicates offset in color clocks when display should stop - uInt32 myStopDisplayOffset; - - // Indicates color clocks when the current frame began - Int32 myClockWhenFrameStarted; - - // Indicates color clocks when frame should begin to be drawn - Int32 myClockStartDisplay; - - // Indicates color clocks when frame should stop being drawn - Int32 myClockStopDisplay; - - // Indicates color clocks when the frame was last updated - Int32 myClockAtLastUpdate; - - // Indicates how many color clocks remain until the end of - // current scanline. This value is valid during the - // displayed portion of the frame. - Int32 myClocksToEndOfScanLine; - - // Indicates the total number of scanlines generated by the last frame - uInt32 myScanlineCountForLastFrame; - - // Indicates the maximum number of scanlines to be generated for a frame - uInt32 myMaximumNumberOfScanlines; - - // Indicates potentially the first scanline at which drawing occurs - uInt32 myStartScanline; - - // Color clock when VSYNC ending causes a new frame to be started - Int32 myVSYNCFinishClock; - - uInt8 myVSYNC; // Holds the VSYNC register value - uInt8 myVBLANK; // Holds the VBLANK register value - - uInt8 myNUSIZ0; // Number and size of player 0 and missle 0 - uInt8 myNUSIZ1; // Number and size of player 1 and missle 1 - - uInt8 myPlayfieldPriorityAndScore; - uInt8 myPriorityEncoder[2][256]; - uInt32 myColor[8]; - uInt32 myFixedColor[8]; - uInt32* myColorPtr; - enum { _BK, _PF, _P0, _P1, _M0, _M1, _BL, _HBLANK }; - - uInt8 myCTRLPF; // Playfield control register - - bool myREFP0; // Indicates if player 0 is being reflected - bool myREFP1; // Indicates if player 1 is being reflected - - uInt32 myPF; // Playfield graphics (19-12:PF2 11-4:PF1 3-0:PF0) - - uInt8 myGRP0; // Player 0 graphics register - uInt8 myGRP1; // Player 1 graphics register - - uInt8 myDGRP0; // Player 0 delayed graphics register - uInt8 myDGRP1; // Player 1 delayed graphics register - - bool myENAM0; // Indicates if missle 0 is enabled - bool myENAM1; // Indicates if missle 1 is enabled - - bool myENABL; // Indicates if the ball is enabled - bool myDENABL; // Indicates if the vertically delayed ball is enabled - - uInt8 myHMP0; // Player 0 horizontal motion register - uInt8 myHMP1; // Player 1 horizontal motion register - uInt8 myHMM0; // Missle 0 horizontal motion register - uInt8 myHMM1; // Missle 1 horizontal motion register - uInt8 myHMBL; // Ball horizontal motion register - - bool myVDELP0; // Indicates if player 0 is being vertically delayed - bool myVDELP1; // Indicates if player 1 is being vertically delayed - bool myVDELBL; // Indicates if the ball is being vertically delayed - - bool myRESMP0; // Indicates if missle 0 is reset to player 0 - bool myRESMP1; // Indicates if missle 1 is reset to player 1 - - uInt16 myCollision; // Collision register - - // Determines whether specified collisions are enabled or disabled - // The lower 16 bits are and'ed with the collision register to mask out - // any collisions we don't want to be processed - // The upper 16 bits are used to store which objects is currently - // enabled or disabled - // This is necessary since there are 15 collision combinations which - // are controlled by 6 objects - uInt32 myCollisionEnabledMask; - - // Note that these position registers contain the color clock - // on which the object's serial output should begin (0 to 159) - Int16 myPOSP0; // Player 0 position register - Int16 myPOSP1; // Player 1 position register - Int16 myPOSM0; // Missle 0 position register - Int16 myPOSM1; // Missle 1 position register - Int16 myPOSBL; // Ball position register - - // The color clocks elapsed so far for each of the graphical objects, - // as denoted by 'MOTCK' line described in A. Towers TIA Hardware Notes - Int32 myMotionClockP0; - Int32 myMotionClockP1; - Int32 myMotionClockM0; - Int32 myMotionClockM1; - Int32 myMotionClockBL; - - // Indicates 'start' signal for each of the graphical objects as - // described in A. Towers TIA Hardware Notes - Int32 myStartP0; - Int32 myStartP1; - Int32 myStartM0; - Int32 myStartM1; - - // Index into the player mask arrays indicating whether display - // of the first copy should be suppressed - uInt8 mySuppressP0; - uInt8 mySuppressP1; - - // Latches for 'more motion required' as described in A. Towers TIA - // Hardware Notes - bool myHMP0mmr; - bool myHMP1mmr; - bool myHMM0mmr; - bool myHMM1mmr; - bool myHMBLmmr; - - // Graphics for Player 0 that should be displayed. This will be - // reflected if the player is being reflected. - uInt8 myCurrentGRP0; - - // Graphics for Player 1 that should be displayed. This will be - // reflected if the player is being reflected. - uInt8 myCurrentGRP1; - - // It's VERY important that the BL, M0, M1, P0 and P1 current - // mask pointers are always on a uInt32 boundary. Otherwise, - // the TIA code will fail on a good number of CPUs. - - // Pointer to the currently active mask array for the ball - uInt8* myCurrentBLMask; - - // Pointer to the currently active mask array for missle 0 - uInt8* myCurrentM0Mask; - - // Pointer to the currently active mask array for missle 1 - uInt8* myCurrentM1Mask; - - // Pointer to the currently active mask array for player 0 - uInt8* myCurrentP0Mask; - - // Pointer to the currently active mask array for player 1 - uInt8* myCurrentP1Mask; - - // Pointer to the currently active mask array for the playfield - uInt32* myCurrentPFMask; - - // Audio values; only used by TIADebug - uInt8 myAUDV0, myAUDV1, myAUDC0, myAUDC1, myAUDF0, myAUDF1; - - // Indicates when the dump for paddles was last set - Int32 myDumpDisabledCycle; - - // Indicates if the dump is current enabled for the paddles - bool myDumpEnabled; - - // Latches for INPT4 and INPT5 - uInt8 myINPT4, myINPT5; - - // Indicates if HMOVE blanks are currently or previously enabled, - // and at which horizontal position the HMOVE was initiated - Int32 myCurrentHMOVEPos; - Int32 myPreviousHMOVEPos; - bool myHMOVEBlankEnabled; - bool myAllowHMOVEBlanks; - - // Indicates if unused TIA pins are randomly driven high or low - // Otherwise, they take on the value previously on the databus - bool myTIAPinsDriven; - - // Bitmap of the objects that should be considered while drawing - uInt8 myEnabledObjects; - - // Determines whether specified bits (from TIABit) are enabled or disabled - // This is and'ed with the enabled objects each scanline to mask out any - // objects we don't want to be processed - uInt8 myDisabledObjects; - - // Indicates if color loss should be enabled or disabled. Color loss - // occurs on PAL (and maybe SECAM) systems when the previous frame - // contains an odd number of scanlines. - bool myColorLossEnabled; - - // Indicates whether we're done with the current frame. poke() clears this - // when VSYNC is strobed or the max scanlines/frame limit is hit. - bool myPartialFrameFlag; - - // Automatic framerate correction based on number of scanlines - bool myAutoFrameEnabled; - - // Number of frames displayed by this TIA - int myFrameCounter; - - // The framerate currently in use by the Console - float myFramerate; - - private: - // Copy constructor isn't supported by this class so make it private - TIA(const TIA&); - - // Assignment operator isn't supported by this class so make it private - TIA& operator = (const TIA&); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIASnd.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIASnd.cpp deleted file mode 100644 index e3c98d42cb..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIASnd.cpp +++ /dev/null @@ -1,383 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIASnd.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include "System.hxx" -#include "TIASnd.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIASound::TIASound(Int32 outputFrequency, Int32 tiaFrequency, uInt32 channels) - : myOutputFrequency(outputFrequency), - myTIAFrequency(tiaFrequency), - myChannels(channels), - myOutputCounter(0), - myVolumePercentage(100), - myVolumeClip(128) -{ - reset(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIASound::~TIASound() -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::reset() -{ - myAUDC[0] = myAUDC[1] = myAUDF[0] = myAUDF[1] = myAUDV[0] = myAUDV[1] = 0; - myP4[0] = myP5[0] = myP4[1] = myP5[1] = 1; - myFreqDiv[0].set(0); - myFreqDiv[1].set(0); - myOutputCounter = 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::outputFrequency(Int32 freq) -{ - myOutputFrequency = freq; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::tiaFrequency(Int32 freq) -{ - myTIAFrequency = freq; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::channels(uInt32 number) -{ - myChannels = number == 2 ? 2 : 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::clipVolume(bool clip) -{ - myVolumeClip = clip ? 128 : 0; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::set(uInt16 address, uInt8 value) -{ - switch(address) - { - case 0x15: // AUDC0 - myAUDC[0] = value & 0x0f; - break; - - case 0x16: // AUDC1 - myAUDC[1] = value & 0x0f; - break; - - case 0x17: // AUDF0 - myAUDF[0] = value & 0x1f; - myFreqDiv[0].set(myAUDF[0]); - break; - - case 0x18: // AUDF1 - myAUDF[1] = value & 0x1f; - myFreqDiv[1].set(myAUDF[1]); - break; - - case 0x19: // AUDV0 - myAUDV[0] = value & 0x0f; - break; - - case 0x1a: // AUDV1 - myAUDV[1] = value & 0x0f; - break; - - default: - break; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 TIASound::get(uInt16 address) const -{ - switch(address) - { - case 0x15: // AUDC0 - return myAUDC[0]; - - case 0x16: // AUDC1 - return myAUDC[1]; - - case 0x17: // AUDF0 - return myAUDF[0]; - - case 0x18: // AUDF1 - return myAUDF[1]; - - case 0x19: // AUDV0 - return myAUDV[0]; - - case 0x1a: // AUDV1 - return myAUDV[1]; - - default: - return 0; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::volume(uInt32 percent) -{ - if((percent >= 0) && (percent <= 100)) - myVolumePercentage = percent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::process(uInt8* buffer, uInt32 samples) -{ - Int32 v0 = ((myAUDV[0] << 2) * myVolumePercentage) / 100; - Int32 v1 = ((myAUDV[1] << 2) * myVolumePercentage) / 100; - - // Loop until the sample buffer is full - while(samples > 0) - { - // Process both sound channels - for(uInt32 c = 0; c < 2; ++c) - { - // Update P4 & P5 registers for channel if freq divider outputs a pulse - if((myFreqDiv[c].clock())) - { - switch(myAUDC[c]) - { - case 0x00: // Set to 1 - { - // Shift a 1 into the 4-bit register each clock - myP4[c] = (myP4[c] << 1) | 0x01; - break; - } - - case 0x01: // 4 bit poly - { - // Clock P4 as a standard 4-bit LSFR taps at bits 3 & 2 - myP4[c] = (myP4[c] & 0x0f) ? - ((myP4[c] << 1) | (((myP4[c] & 0x08) ? 1 : 0) ^ - ((myP4[c] & 0x04) ? 1 : 0))) : 1; - break; - } - - case 0x02: // div 31 -> 4 bit poly - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // This does the divide-by 31 with length 13:18 - if((myP5[c] & 0x0f) == 0x08) - { - // Clock P4 as a standard 4-bit LSFR taps at bits 3 & 2 - myP4[c] = (myP4[c] & 0x0f) ? - ((myP4[c] << 1) | (((myP4[c] & 0x08) ? 1 : 0) ^ - ((myP4[c] & 0x04) ? 1 : 0))) : 1; - } - break; - } - - case 0x03: // 5 bit poly -> 4 bit poly - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // P5 clocks the 4 bit poly - if(myP5[c] & 0x10) - { - // Clock P4 as a standard 4-bit LSFR taps at bits 3 & 2 - myP4[c] = (myP4[c] & 0x0f) ? - ((myP4[c] << 1) | (((myP4[c] & 0x08) ? 1 : 0) ^ - ((myP4[c] & 0x04) ? 1 : 0))) : 1; - } - break; - } - - case 0x04: // div 2 - { - // Clock P4 toggling the lower bit (divide by 2) - myP4[c] = (myP4[c] << 1) | ((myP4[c] & 0x01) ? 0 : 1); - break; - } - - case 0x05: // div 2 - { - // Clock P4 toggling the lower bit (divide by 2) - myP4[c] = (myP4[c] << 1) | ((myP4[c] & 0x01) ? 0 : 1); - break; - } - - case 0x06: // div 31 -> div 2 - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // This does the divide-by 31 with length 13:18 - if((myP5[c] & 0x0f) == 0x08) - { - // Clock P4 toggling the lower bit (divide by 2) - myP4[c] = (myP4[c] << 1) | ((myP4[c] & 0x01) ? 0 : 1); - } - break; - } - - case 0x07: // 5 bit poly -> div 2 - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // P5 clocks the 4 bit register - if(myP5[c] & 0x10) - { - // Clock P4 toggling the lower bit (divide by 2) - myP4[c] = (myP4[c] << 1) | ((myP4[c] & 0x01) ? 0 : 1); - } - break; - } - - case 0x08: // 9 bit poly - { - // Clock P5 & P4 as a standard 9-bit LSFR taps at 8 & 4 - myP5[c] = ((myP5[c] & 0x1f) || (myP4[c] & 0x0f)) ? - ((myP5[c] << 1) | (((myP4[c] & 0x08) ? 1 : 0) ^ - ((myP5[c] & 0x10) ? 1 : 0))) : 1; - myP4[c] = (myP4[c] << 1) | ((myP5[c] & 0x20) ? 1 : 0); - break; - } - - case 0x09: // 5 bit poly - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // Clock value out of P5 into P4 with no modification - myP4[c] = (myP4[c] << 1) | ((myP5[c] & 0x20) ? 1 : 0); - break; - } - - case 0x0a: // div 31 - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // This does the divide-by 31 with length 13:18 - if((myP5[c] & 0x0f) == 0x08) - { - // Feed bit 4 of P5 into P4 (this will toggle back and forth) - myP4[c] = (myP4[c] << 1) | ((myP5[c] & 0x10) ? 1 : 0); - } - break; - } - - case 0x0b: // Set last 4 bits to 1 - { - // A 1 is shifted into the 4-bit register each clock - myP4[c] = (myP4[c] << 1) | 0x01; - break; - } - - case 0x0c: // div 6 - { - // Use 4-bit register to generate sequence 000111000111 - myP4[c] = (~myP4[c] << 1) | - ((!(!(myP4[c] & 4) && ((myP4[c] & 7)))) ? 0 : 1); - break; - } - - case 0x0d: // div 6 - { - // Use 4-bit register to generate sequence 000111000111 - myP4[c] = (~myP4[c] << 1) | - ((!(!(myP4[c] & 4) && ((myP4[c] & 7)))) ? 0 : 1); - break; - } - - case 0x0e: // div 31 -> div 6 - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // This does the divide-by 31 with length 13:18 - if((myP5[c] & 0x0f) == 0x08) - { - // Use 4-bit register to generate sequence 000111000111 - myP4[c] = (~myP4[c] << 1) | - ((!(!(myP4[c] & 4) && ((myP4[c] & 7)))) ? 0 : 1); - } - break; - } - - case 0x0f: // poly 5 -> div 6 - { - // Clock P5 as a standard 5-bit LSFR taps at bits 4 & 2 - myP5[c] = (myP5[c] & 0x1f) ? - ((myP5[c] << 1) | (((myP5[c] & 0x10) ? 1 : 0) ^ - ((myP5[c] & 0x04) ? 1 : 0))) : 1; - - // Use poly 5 to clock 4-bit div register - if(myP5[c] & 0x10) - { - // Use 4-bit register to generate sequence 000111000111 - myP4[c] = (~myP4[c] << 1) | - ((!(!(myP4[c] & 4) && ((myP4[c] & 7)))) ? 0 : 1); - } - break; - } - } - } - } - - myOutputCounter += myOutputFrequency; - - if(myChannels == 1) - { - // Handle mono sample generation - while((samples > 0) && (myOutputCounter >= myTIAFrequency)) - { - *(buffer++) = (((myP4[0] & 8) ? v0 : 0) + - ((myP4[1] & 8) ? v1 : 0)) + myVolumeClip; - myOutputCounter -= myTIAFrequency; - samples--; - } - } - else - { - // Handle stereo sample generation - while((samples > 0) && (myOutputCounter >= myTIAFrequency)) - { - *(buffer++) = ((myP4[0] & 8) ? v0 : 0) + myVolumeClip; - *(buffer++) = ((myP4[1] & 8) ? v1 : 0) + myVolumeClip; - myOutputCounter -= myTIAFrequency; - samples--; - } - } - } -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIASnd.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIASnd.hxx deleted file mode 100644 index 1bbe556817..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIASnd.hxx +++ /dev/null @@ -1,153 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIASnd.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef TIASOUND_HXX -#define TIASOUND_HXX - -#include "bspf.hxx" - -/** - This class implements a fairly accurate emulation of the TIA sound - hardware. - - @author Bradford W. Mott - @version $Id: TIASnd.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class TIASound -{ - public: - /** - Create a new TIA Sound object using the specified output frequency - */ - TIASound(Int32 outputFrequency = 31400, Int32 tiaFrequency = 31400, - uInt32 channels = 1); - - /** - Destructor - */ - virtual ~TIASound(); - - public: - /** - Reset the sound emulation to its power-on state - */ - void reset(); - - /** - Set the frequency output samples should be generated at - */ - void outputFrequency(Int32 freq); - - /** - Set the frequency the of the TIA device - */ - void tiaFrequency(Int32 freq); - - /** - Selects the number of audio channels per sample (1 = mono, 2 = stereo) - */ - void channels(uInt32 number); - - /** - Set volume clipping (decrease volume range by half to eliminate popping) - */ - void clipVolume(bool clip); - - public: - /** - Sets the specified sound register to the given value - - @param address Register address - @param value Value to store in the register - */ - void set(uInt16 address, uInt8 value); - - /** - Gets the specified sound register's value - - @param address Register address - */ - uInt8 get(uInt16 address) const; - - /** - Create sound samples based on the current sound register settings - in the specified buffer. NOTE: If channels is set to stereo then - the buffer will need to be twice as long as the number of samples. - - @param buffer The location to store generated samples - @param samples The number of samples to generate - */ - void process(uInt8* buffer, uInt32 samples); - - /** - Set the volume of the samples created (0-100) - */ - void volume(uInt32 percent); - - private: - /** - Frequency divider class which outputs 1 after "divide-by" clocks. This - is used to divide the main frequency by the values 1 to 32. - */ - class FreqDiv - { - public: - FreqDiv() - { - myDivideByValue = myCounter = 0; - } - - void set(uInt32 divideBy) - { - myDivideByValue = divideBy; - } - - bool clock() - { - if(++myCounter > myDivideByValue) - { - myCounter = 0; - return true; - } - return false; - } - - private: - uInt32 myDivideByValue; - uInt32 myCounter; - }; - - private: - uInt8 myAUDC[2]; - uInt8 myAUDF[2]; - uInt8 myAUDV[2]; - - FreqDiv myFreqDiv[2]; // Frequency dividers - uInt8 myP4[2]; // 4-bit register LFSR (lower 4 bits used) - uInt8 myP5[2]; // 5-bit register LFSR (lower 5 bits used) - - Int32 myOutputFrequency; - Int32 myTIAFrequency; - uInt32 myChannels; - Int32 myOutputCounter; - uInt32 myVolumePercentage; - uInt8 myVolumeClip; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIATables.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIATables.cpp deleted file mode 100644 index bdd0dcc21f..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIATables.cpp +++ /dev/null @@ -1,732 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIATables.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include - -#include "bspf.hxx" -#include "TIATables.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIATables::computeAllTables() -{ - for(uInt32 i = 0; i < 640; ++i) - DisabledMask[i] = 0; - - buildCollisionMaskTable(); - buildPxMaskTable(); - buildMxMaskTable(); - buildBLMaskTable(); - buildPFMaskTable(); - buildGRPReflectTable(); - buildPxPosResetWhenTable(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIATables::buildCollisionMaskTable() -{ - for(uInt8 i = 0; i < 64; ++i) - { - CollisionMask[i] = 0; - - if((i & M0Bit) && (i & P1Bit)) // M0-P1 - CollisionMask[i] |= Cx_M0P1; - - if((i & M0Bit) && (i & P0Bit)) // M0-P0 - CollisionMask[i] |= Cx_M0P0; - - if((i & M1Bit) && (i & P0Bit)) // M1-P0 - CollisionMask[i] |= Cx_M1P0; - - if((i & M1Bit) && (i & P1Bit)) // M1-P1 - CollisionMask[i] |= Cx_M1P1; - - if((i & P0Bit) && (i & PFBit)) // P0-PF - CollisionMask[i] |= Cx_P0PF; - - if((i & P0Bit) && (i & BLBit)) // P0-BL - CollisionMask[i] |= Cx_P0BL; - - if((i & P1Bit) && (i & PFBit)) // P1-PF - CollisionMask[i] |= Cx_P1PF; - - if((i & P1Bit) && (i & BLBit)) // P1-BL - CollisionMask[i] |= Cx_P1BL; - - if((i & M0Bit) && (i & PFBit)) // M0-PF - CollisionMask[i] |= Cx_M0PF; - - if((i & M0Bit) && (i & BLBit)) // M0-BL - CollisionMask[i] |= Cx_M0BL; - - if((i & M1Bit) && (i & PFBit)) // M1-PF - CollisionMask[i] |= Cx_M1PF; - - if((i & M1Bit) && (i & BLBit)) // M1-BL - CollisionMask[i] |= Cx_M1BL; - - if((i & BLBit) && (i & PFBit)) // BL-PF - CollisionMask[i] |= Cx_BLPF; - - if((i & P0Bit) && (i & P1Bit)) // P0-P1 - CollisionMask[i] |= Cx_P0P1; - - if((i & M0Bit) && (i & M1Bit)) // M0-M1 - CollisionMask[i] |= Cx_M0M1; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// [4][2][8][320] -// [alignment][suppress mode][nusiz][pixel] -// suppress=1: suppress on -// suppress=0: suppress off -void TIATables::buildPxMaskTable() -{ - // First, calculate masks for alignment 0 - Int32 x, suppress, nusiz; - - // Set the player mask table to all zeros - for(suppress = 0; suppress < 2; ++suppress) - for(nusiz = 0; nusiz < 8; ++nusiz) - for(x = 0; x < 160; ++x) - PxMask[0][suppress][nusiz][x] = 0x00; - - // Now, compute the player mask table - for(suppress = 0; suppress < 2; ++suppress) - { - for(nusiz = 0; nusiz < 8; ++nusiz) - { - for(x = 0; x < 160 + 72; ++x) - { - // nusiz: - // 0: one copy - // 1: two copies-close - // 2: two copies-med - // 3: three copies-close - // 4: two copies-wide - // 5: double size player - // 6: 3 copies medium - // 7: quad sized player - switch(nusiz) - { - case 0x00: - if((suppress == 0) && (x >= 0) && (x < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> x; - break; - - case 0x01: - if((suppress == 0) && (x >= 0) && (x < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> x; - else if(((x - 16) >= 0) && ((x - 16) < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> (x - 16); - break; - - case 0x02: - if((suppress == 0) && (x >= 0) && (x < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> x; - else if(((x - 32) >= 0) && ((x - 32) < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> (x - 32); - break; - - case 0x03: - if((suppress == 0) && (x >= 0) && (x < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> x; - else if(((x - 16) >= 0) && ((x - 16) < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> (x - 16); - else if(((x - 32) >= 0) && ((x - 32) < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> (x - 32); - break; - - case 0x04: - if((suppress == 0) && (x >= 0) && (x < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> x; - else if(((x - 64) >= 0) && ((x - 64) < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> (x - 64); - break; - - case 0x05: - // For some reason in double size nusiz the player's output - // is delayed by one pixel thus we use > instead of >= - if((suppress == 0) && (x > 0) && (x <= 16)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> ((x - 1)/2); - break; - - case 0x06: - if((suppress == 0) && (x >= 0) && (x < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> x; - else if(((x - 32) >= 0) && ((x - 32) < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> (x - 32); - else if(((x - 64) >= 0) && ((x - 64) < 8)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> (x - 64); - break; - - case 0x07: - // For some reason in quad size nusiz the player's output - // is delayed by one pixel thus we use > instead of >= - if((suppress == 0) && (x > 0) && (x <= 32)) - PxMask[0][suppress][nusiz][x % 160] = 0x80 >> ((x - 1)/4); - break; - } - } - - // Copy data into wrap-around area - for(x = 0; x < 160; ++x) - PxMask[0][suppress][nusiz][x + 160] = PxMask[0][suppress][nusiz][x]; - } - } - - // Now, copy data for alignments of 1, 2 and 3 - for(uInt32 align = 1; align < 4; ++align) - { - for(suppress = 0; suppress < 2; ++suppress) - { - for(nusiz = 0; nusiz < 8; ++nusiz) - { - for(x = 0; x < 320; ++x) - { - PxMask[align][suppress][nusiz][x] = - PxMask[0][suppress][nusiz][(x + 320 - align) % 320]; - } - } - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// [4][8][5][320] -// [alignment][number][size][pixel] -void TIATables::buildMxMaskTable() -{ - // First, calculate masks for alignment 0 - Int32 x, size, number; - - // Clear the missle table to start with - for(number = 0; number < 8; ++number) - for(size = 0; size < 5; ++size) - for(x = 0; x < 160; ++x) - MxMask[0][number][size][x] = false; - - for(number = 0; number < 8; ++number) - { - for(size = 0; size < 5; ++size) - { - for(x = 0; x < 160 + 72; ++x) - { - // For the following, size index = 4 is almost exactly the same as - // index = 2; that is, 1 << 2, or 4 colour clocks wide - // To simulate the weirdness in the Cosmic Ark starfield effect, - // each group of 4 pixels has its 3rd pixel blanked - switch(number) - { - // Only one copy of the missle - case 0x00: - case 0x05: - case 0x07: - if(size != 4) - { - if((x >= 0) && (x < (1 << size))) - MxMask[0][number][size][x % 160] = true; - } - else - { - if((x >= 0) && (x < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - } - break; - - // Two copies - close - case 0x01: - if(size != 4) - { - if((x >= 0) && (x < (1 << size))) - MxMask[0][number][size][x % 160] = true; - else if(((x - 16) >= 0) && ((x - 16) < (1 << size))) - MxMask[0][number][size][x % 160] = true; - } - else - { - if((x >= 0) && (x < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - else if(((x - 16) >= 0) && ((x - 16) < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - } - break; - - // Two copies - medium - case 0x02: - if(size != 4) - { - if((x >= 0) && (x < (1 << size))) - MxMask[0][number][size][x % 160] = true; - else if(((x - 32) >= 0) && ((x - 32) < (1 << size))) - MxMask[0][number][size][x % 160] = true; - } - else - { - if((x >= 0) && (x < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - else if(((x - 32) >= 0) && ((x - 32) < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - } - break; - - // Three copies - close - case 0x03: - if(size != 4) - { - if((x >= 0) && (x < (1 << size))) - MxMask[0][number][size][x % 160] = true; - else if(((x - 16) >= 0) && ((x - 16) < (1 << size))) - MxMask[0][number][size][x % 160] = true; - else if(((x - 32) >= 0) && ((x - 32) < (1 << size))) - MxMask[0][number][size][x % 160] = true; - } - else - { - if((x >= 0) && (x < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - else if(((x - 16) >= 0) && ((x - 16) < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - else if(((x - 32) >= 0) && ((x - 32) < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - } - break; - - // Two copies - wide - case 0x04: - if(size != 4) - { - if((x >= 0) && (x < (1 << size))) - MxMask[0][number][size][x % 160] = true; - else if(((x - 64) >= 0) && ((x - 64) < (1 << size))) - MxMask[0][number][size][x % 160] = true; - } - else - { - if((x >= 0) && (x < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - else if(((x - 64) >= 0) && ((x - 64) < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - } - break; - - // Three copies - medium - case 0x06: - if(size != 4) - { - if((x >= 0) && (x < (1 << size))) - MxMask[0][number][size][x % 160] = true; - else if(((x - 32) >= 0) && ((x - 32) < (1 << size))) - MxMask[0][number][size][x % 160] = true; - else if(((x - 64) >= 0) && ((x - 64) < (1 << size))) - MxMask[0][number][size][x % 160] = true; - } - else - { - if((x >= 0) && (x < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - else if(((x - 32) >= 0) && ((x - 32) < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - else if(((x - 64) >= 0) && ((x - 64) < (1 << 2))) - MxMask[0][number][4][x % 160] = ((x - 2) % 4 == 0 ? false : true); - } - break; - } - } - - // Copy data into wrap-around area - for(x = 0; x < 160; ++x) - MxMask[0][number][size][x + 160] = - MxMask[0][number][size][x]; - } - } - - // Now, copy data for alignments of 1, 2 and 3 - for(uInt32 align = 1; align < 4; ++align) - { - for(number = 0; number < 8; ++number) - { - for(size = 0; size < 5; ++size) - { - for(x = 0; x < 320; ++x) - { - MxMask[align][number][size][x] = - MxMask[0][number][size][(x + 320 - align) % 320]; - } - } - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// [4][4][320] -// [alignment][size][pixel] -void TIATables::buildBLMaskTable() -{ - // First, calculate masks for alignment 0 - for(Int32 size = 0; size < 4; ++size) - { - Int32 x; - - // Set all of the masks to false to start with - for(x = 0; x < 160; ++x) - BLMask[0][size][x] = false; - - // Set the necessary fields true - for(x = 0; x < 160 + 8; ++x) - if((x >= 0) && (x < (1 << size))) - BLMask[0][size][x % 160] = true; - - // Copy fields into the wrap-around area of the mask - for(x = 0; x < 160; ++x) - BLMask[0][size][x + 160] = BLMask[0][size][x]; - } - - // Now, copy data for alignments of 1, 2 and 3 - for(uInt32 align = 1; align < 4; ++align) - for(uInt32 size = 0; size < 4; ++size) - for(uInt32 x = 0; x < 320; ++x) - BLMask[align][size][x] = BLMask[0][size][(x + 320 - align) % 320]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// [2][160] -// [reflect, pixel] -// reflect=1: reflection on -// reflect=0: reflection off -void TIATables::buildPFMaskTable() -{ - Int32 x; - - // Compute playfield mask table for non-reflected mode - for(x = 0; x < 160; ++x) - { - if(x < 16) - PFMask[0][x] = 0x00001 << (x >> 2); - else if(x < 48) - PFMask[0][x] = 0x00800 >> ((x - 16) >> 2); - else if(x < 80) - PFMask[0][x] = 0x01000 << ((x - 48) >> 2); - else if(x < 96) - PFMask[0][x] = 0x00001 << ((x - 80) >> 2); - else if(x < 128) - PFMask[0][x] = 0x00800 >> ((x - 96) >> 2); - else if(x < 160) - PFMask[0][x] = 0x01000 << ((x - 128) >> 2); - } - - // Compute playfield mask table for reflected mode - for(x = 0; x < 160; ++x) - { - if(x < 16) - PFMask[1][x] = 0x00001 << (x >> 2); - else if(x < 48) - PFMask[1][x] = 0x00800 >> ((x - 16) >> 2); - else if(x < 80) - PFMask[1][x] = 0x01000 << ((x - 48) >> 2); - else if(x < 112) - PFMask[1][x] = 0x80000 >> ((x - 80) >> 2); - else if(x < 144) - PFMask[1][x] = 0x00010 << ((x - 112) >> 2); - else if(x < 160) - PFMask[1][x] = 0x00008 >> ((x - 144) >> 2); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIATables::buildGRPReflectTable() -{ - for(uInt16 i = 0; i < 256; ++i) - { - uInt8 r = 0; - - for(uInt16 t = 1; t <= 128; t <<= 1) - r = (r << 1) | ((i & t) ? 0x01 : 0x00); - - GRPReflect[i] = r; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// [8][160][160] -// [nusiz][old pixel][new pixel] -void TIATables::buildPxPosResetWhenTable() -{ - uInt32 nusiz, oldx, newx; - - // Loop through all player nusizs, all old player positions, and all new - // player positions and determine where the new position is located: - // 1 means the new position is within the display of an old copy of the - // player, -1 means the new position is within the delay portion of an - // old copy of the player, and 0 means it's neither of these two - for(nusiz = 0; nusiz < 8; ++nusiz) - { - for(oldx = 0; oldx < 160; ++oldx) - { - // Set everything to 0 for non-delay/non-display section - for(newx = 0; newx < 160; ++newx) - PxPosResetWhen[nusiz][oldx][newx] = 0; - - // Now, we'll set the entries for non-delay/non-display section - for(newx = 0; newx < 160 + 72 + 5; ++newx) - { - // nusiz: - // 0: one copy - // 1: two copies-close - // 2: two copies-med - // 3: three copies-close - // 4: two copies-wide - // 5: double size player - // 6: 3 copies medium - // 7: quad sized player - switch(nusiz) - { - case 0x00: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - - case 0x01: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - else if((newx >= (oldx + 16)) && (newx < (oldx + 16 + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - else if((newx >= oldx + 16 + 4) && (newx < (oldx + 16 + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - - case 0x02: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - else if((newx >= (oldx + 32)) && (newx < (oldx + 32 + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - else if((newx >= oldx + 32 + 4) && (newx < (oldx + 32 + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - - case 0x03: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - else if((newx >= (oldx + 16)) && (newx < (oldx + 16 + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - else if((newx >= (oldx + 32)) && (newx < (oldx + 32 + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - else if((newx >= oldx + 16 + 4) && (newx < (oldx + 16 + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - else if((newx >= oldx + 32 + 4) && (newx < (oldx + 32 + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - - case 0x04: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - else if((newx >= (oldx + 64)) && (newx < (oldx + 64 + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - else if((newx >= oldx + 64 + 4) && (newx < (oldx + 64 + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - - case 0x05: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 16))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - - case 0x06: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - else if((newx >= (oldx + 32)) && (newx < (oldx + 32 + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - else if((newx >= (oldx + 64)) && (newx < (oldx + 64 + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - else if((newx >= oldx + 32 + 4) && (newx < (oldx + 32 + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - else if((newx >= oldx + 64 + 4) && (newx < (oldx + 64 + 4 + 8))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - - case 0x07: - if((newx >= oldx) && (newx < (oldx + 4))) - PxPosResetWhen[nusiz][oldx][newx % 160] = -1; - - else if((newx >= oldx + 4) && (newx < (oldx + 4 + 32))) - PxPosResetWhen[nusiz][oldx][newx % 160] = 1; - break; - } - } - - // Let's do a sanity check on table entries - uInt32 s1 = 0, s2 = 0; - for(newx = 0; newx < 160; ++newx) - { - if(PxPosResetWhen[nusiz][oldx][newx] == -1) - ++s1; - if(PxPosResetWhen[nusiz][oldx][newx] == 1) - ++s2; - } - assert((s1 % 4 == 0) && (s2 % 8 == 0)); - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 TIATables::BLMask[4][4][320]; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 TIATables::CollisionMask[64]; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 TIATables::DisabledMask[640]; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const Int16 TIATables::PokeDelay[64] = { - 0, 1, 0, 0, 8, 8, 0, 0, 0, 0, 0, 1, 1, -1, -1, -1, - 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 TIATables::MxMask[4][8][5][320]; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const bool TIATables::HMOVEBlankEnableCycles[76] = { - true, true, true, true, true, true, true, true, true, true, // 00 - true, true, true, true, true, true, true, true, true, true, // 10 - true, false, false, false, false, false, false, false, false, false, // 20 - false, false, false, false, false, false, false, false, false, false, // 30 - false, false, false, false, false, false, false, false, false, false, // 40 - false, false, false, false, false, false, false, false, false, false, // 50 - false, false, false, false, false, false, false, false, false, false, // 60 - false, false, false, false, false, true // 70 -}; - -#if 0 -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const Int32 TIATables::CompleteMotion[76][16] = { - { 0, -1, -2, -3, -4, -5, -6, -7, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -4, -5, -6, -7, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -4, -5, -6, -7, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -4, -5, -6, -7, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -4, -5, -6, -6, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -4, -5, -5, -5, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -4, -5, -5, -5, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -4, -4, -4, -4, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -3, -3, -3, -3, -3, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -2, -2, -2, -2, -2, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -2, -2, -2, -2, -2, -2, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, -1, -1, -1, -1, -1, -1, -1, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 1, 1, 1, 1, 1, 1, 1, 1, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 1, 1, 1, 1, 1, 1, 1, 1, 8, 7, 6, 5, 4, 3, 2, 1}, // HBLANK - { 2, 2, 2, 2, 2, 2, 2, 2, 8, 7, 6, 5, 4, 3, 2, 2}, // HBLANK - { 3, 3, 3, 3, 3, 3, 3, 3, 8, 7, 6, 5, 4, 3, 3, 3}, // HBLANK - { 4, 4, 4, 4, 4, 4, 4, 4, 8, 7, 6, 5, 4, 4, 4, 4}, // HBLANK - { 4, 4, 4, 4, 4, 4, 4, 4, 8, 7, 6, 5, 4, 4, 4, 4}, // HBLANK - { 5, 5, 5, 5, 5, 5, 5, 5, 8, 7, 6, 5, 5, 5, 5, 5}, // HBLANK - { 6, 6, 6, 6, 6, 6, 6, 6, 8, 7, 6, 6, 6, 6, 6, 6}, // HBLANK - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, -1, -2, -3, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, -1, -2, -3, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, -1, -2, -3, -4, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, -1, -2, -3, -4, -5, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, -1, -2, -3, -4, -5, -6, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 0, -1, -2, -3, -4, -5, -6, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, -1, -2, -3, -4, -5, -6, -7, 0, 0, 0, 0, 0, 0, 0, 0}, - {-1, -2, -3, -4, -5, -6, -7, -8, 0, 0, 0, 0, 0, 0, 0, 0}, - {-2, -3, -4, -5, -6, -7, -8, -9, 0, 0, 0, 0, 0, 0, 0, -1}, - {-2, -3, -4, -5, -6, -7, -8, -9, 0, 0, 0, 0, 0, 0, 0, -1}, - {-3, -4, -5, -6, -7, -8, -9,-10, 0, 0, 0, 0, 0, 0, -1, -2}, - {-4, -5, -6, -7, -8, -9,-10,-11, 0, 0, 0, 0, 0, -1, -2, -3}, - {-5, -6, -7, -8, -9,-10,-11,-12, 0, 0, 0, 0, -1, -2, -3, -4}, - {-5, -6, -7, -8, -9,-10,-11,-12, 0, 0, 0, 0, -1, -2, -3, -4}, - {-6, -7, -8, -9,-10,-11,-12,-13, 0, 0, 0, -1, -2, -3, -4, -5}, - {-7, -8, -9,-10,-11,-12,-13,-14, 0, 0, -1, -2, -3, -4, -5, -6}, - {-8, -9,-10,-11,-12,-13,-14,-15, 0, -1, -2, -3, -4, -5, -6, -7}, - {-8, -9,-10,-11,-12,-13,-14,-15, 0, -1, -2, -3, -4, -5, -6, -7}, - { 0, -1, -2, -3, -4, -5, -6, -7, 8, 7, 6, 5, 4, 3, 2, 1} // HBLANK -}; -#endif - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 TIATables::PxMask[4][2][8][320]; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Int8 TIATables::PxPosResetWhen[8][160][160]; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 TIATables::GRPReflect[256]; - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 TIATables::PFMask[2][160]; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIATables.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIATables.hxx deleted file mode 100644 index 7afe8cb5db..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/system/TIATables.hxx +++ /dev/null @@ -1,202 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIATables.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef TIA_TABLES_HXX -#define TIA_TABLES_HXX - -#include "bspf.hxx" - -enum TIABit { - P0Bit = 0x01, // Bit for Player 0 - M0Bit = 0x02, // Bit for Missle 0 - P1Bit = 0x04, // Bit for Player 1 - M1Bit = 0x08, // Bit for Missle 1 - BLBit = 0x10, // Bit for Ball - PFBit = 0x20, // Bit for Playfield - ScoreBit = 0x40, // Bit for Playfield score mode - PriorityBit = 0x80 // Bit for Playfield priority -}; - -enum CollisionBit -{ - Cx_M0P1 = 1 << 0, // Missle0 - Player1 collision - Cx_M0P0 = 1 << 1, // Missle0 - Player0 collision - Cx_M1P0 = 1 << 2, // Missle1 - Player0 collision - Cx_M1P1 = 1 << 3, // Missle1 - Player1 collision - Cx_P0PF = 1 << 4, // Player0 - Playfield collision - Cx_P0BL = 1 << 5, // Player0 - Ball collision - Cx_P1PF = 1 << 6, // Player1 - Playfield collision - Cx_P1BL = 1 << 7, // Player1 - Ball collision - Cx_M0PF = 1 << 8, // Missle0 - Playfield collision - Cx_M0BL = 1 << 9, // Missle0 - Ball collision - Cx_M1PF = 1 << 10, // Missle1 - Playfield collision - Cx_M1BL = 1 << 11, // Missle1 - Ball collision - Cx_BLPF = 1 << 12, // Ball - Playfield collision - Cx_P0P1 = 1 << 13, // Player0 - Player1 collision - Cx_M0M1 = 1 << 14 // Missle0 - Missle1 collision -}; - -// TIA Write/Read register names -enum TIARegister { - VSYNC = 0x00, // Write: vertical sync set-clear (D1) - VBLANK = 0x01, // Write: vertical blank set-clear (D7-6,D1) - WSYNC = 0x02, // Write: wait for leading edge of hrz. blank (strobe) - RSYNC = 0x03, // Write: reset hrz. sync counter (strobe) - NUSIZ0 = 0x04, // Write: number-size player-missle 0 (D5-0) - NUSIZ1 = 0x05, // Write: number-size player-missle 1 (D5-0) - COLUP0 = 0x06, // Write: color-lum player 0 (D7-1) - COLUP1 = 0x07, // Write: color-lum player 1 (D7-1) - COLUPF = 0x08, // Write: color-lum playfield (D7-1) - COLUBK = 0x09, // Write: color-lum background (D7-1) - CTRLPF = 0x0a, // Write: cntrl playfield ballsize & coll. (D5-4,D2-0) - REFP0 = 0x0b, // Write: reflect player 0 (D3) - REFP1 = 0x0c, // Write: reflect player 1 (D3) - PF0 = 0x0d, // Write: playfield register byte 0 (D7-4) - PF1 = 0x0e, // Write: playfield register byte 1 (D7-0) - PF2 = 0x0f, // Write: playfield register byte 2 (D7-0) - RESP0 = 0x10, // Write: reset player 0 (strobe) - RESP1 = 0x11, // Write: reset player 1 (strobe) - RESM0 = 0x12, // Write: reset missle 0 (strobe) - RESM1 = 0x13, // Write: reset missle 1 (strobe) - RESBL = 0x14, // Write: reset ball (strobe) - AUDC0 = 0x15, // Write: audio control 0 (D3-0) - AUDC1 = 0x16, // Write: audio control 1 (D4-0) - AUDF0 = 0x17, // Write: audio frequency 0 (D4-0) - AUDF1 = 0x18, // Write: audio frequency 1 (D3-0) - AUDV0 = 0x19, // Write: audio volume 0 (D3-0) - AUDV1 = 0x1a, // Write: audio volume 1 (D3-0) - GRP0 = 0x1b, // Write: graphics player 0 (D7-0) - GRP1 = 0x1c, // Write: graphics player 1 (D7-0) - ENAM0 = 0x1d, // Write: graphics (enable) missle 0 (D1) - ENAM1 = 0x1e, // Write: graphics (enable) missle 1 (D1) - ENABL = 0x1f, // Write: graphics (enable) ball (D1) - HMP0 = 0x20, // Write: horizontal motion player 0 (D7-4) - HMP1 = 0x21, // Write: horizontal motion player 1 (D7-4) - HMM0 = 0x22, // Write: horizontal motion missle 0 (D7-4) - HMM1 = 0x23, // Write: horizontal motion missle 1 (D7-4) - HMBL = 0x24, // Write: horizontal motion ball (D7-4) - VDELP0 = 0x25, // Write: vertical delay player 0 (D0) - VDELP1 = 0x26, // Write: vertical delay player 1 (D0) - VDELBL = 0x27, // Write: vertical delay ball (D0) - RESMP0 = 0x28, // Write: reset missle 0 to player 0 (D1) - RESMP1 = 0x29, // Write: reset missle 1 to player 1 (D1) - HMOVE = 0x2a, // Write: apply horizontal motion (strobe) - HMCLR = 0x2b, // Write: clear horizontal motion registers (strobe) - CXCLR = 0x2c, // Write: clear collision latches (strobe) - - CXM0P = 0x00, // Read collision: D7=(M0,P1); D6=(M0,P0) - CXM1P = 0x01, // Read collision: D7=(M1,P0); D6=(M1,P1) - CXP0FB = 0x02, // Read collision: D7=(P0,PF); D6=(P0,BL) - CXP1FB = 0x03, // Read collision: D7=(P1,PF); D6=(P1,BL) - CXM0FB = 0x04, // Read collision: D7=(M0,PF); D6=(M0,BL) - CXM1FB = 0x05, // Read collision: D7=(M1,PF); D6=(M1,BL) - CXBLPF = 0x06, // Read collision: D7=(BL,PF); D6=(unused) - CXPPMM = 0x07, // Read collision: D7=(P0,P1); D6=(M0,M1) - INPT0 = 0x08, // Read pot port: D7 - INPT1 = 0x09, // Read pot port: D7 - INPT2 = 0x0a, // Read pot port: D7 - INPT3 = 0x0b, // Read pot port: D7 - INPT4 = 0x0c, // Read P1 joystick trigger: D7 - INPT5 = 0x0d // Read P2 joystick trigger: D7 -}; - -/** - The TIA class uses some static tables that aren't dependent on the actual - TIA state. For code organization, it's better to place that functionality - here. - - @author Stephen Anthony - @version $Id: TIATables.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class TIATables -{ - public: - /** - Compute all static tables used by the TIA - */ - static void computeAllTables(); - - // Used to set the collision register to the correct value - static uInt16 CollisionMask[64]; - - // A mask table which can be used when an object is disabled - static uInt8 DisabledMask[640]; - - // Indicates the update delay associated with poking at a TIA address - static const Int16 PokeDelay[64]; - -#if 0 - // Used to convert value written in a motion register into - // its internal representation - static const Int32 CompleteMotion[76][16]; -#endif - - // Indicates if HMOVE blanks should occur for the corresponding cycle - static const bool HMOVEBlankEnableCycles[76]; - - // Player mask table - // [alignment][suppress mode][nusiz][pixel] - static uInt8 PxMask[4][2][8][320]; - - // Missle mask table (entries are true or false) - // [alignment][number][size][pixel] - // There are actually only 4 possible size combinations on a real system - // The fifth size is used for simulating the starfield effect in - // Cosmic Ark and Stay Frosty - static uInt8 MxMask[4][8][5][320]; - - // Ball mask table (entries are true or false) - // [alignment][size][pixel] - static uInt8 BLMask[4][4][320]; - - // Playfield mask table for reflected and non-reflected playfields - // [reflect, pixel] - static uInt32 PFMask[2][160]; - - // Used to reflect a players graphics - static uInt8 GRPReflect[256]; - - // Indicates if player is being reset during delay, display or other times - // [nusiz][old pixel][new pixel] - static Int8 PxPosResetWhen[8][160][160]; - - private: - // Compute the collision decode table - static void buildCollisionMaskTable(); - - // Compute the player mask table - static void buildPxMaskTable(); - - // Compute the missle mask table - static void buildMxMaskTable(); - - // Compute the ball mask table - static void buildBLMaskTable(); - - // Compute playfield mask table - static void buildPFMaskTable(); - - // Compute the player reflect table - static void buildGRPReflectTable(); - - // Compute the player position reset when table - static void buildPxPosResetWhenTable(); -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Array.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Array.hxx deleted file mode 100644 index 445e3582a5..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Array.hxx +++ /dev/null @@ -1,209 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Array.hxx 2232 2011-05-24 16:04:48Z stephena $ -// -// Based on code from ScummVM - Scumm Interpreter -// Copyright (C) 2002-2004 The ScummVM project -//============================================================================ - -#ifndef ARRAY_HXX -#define ARRAY_HXX - -#include - -#include "bspf.hxx" - -namespace Common { - -template -class Array -{ - protected: - int _capacity; - int _size; - T *_data; - - public: - typedef T *iterator; - typedef const T *const_iterator; - - public: - Array() : _capacity(0), _size(0), _data(0) {} - Array(const Array& array) : _capacity(0), _size(0), _data(0) - { - _size = array._size; - _capacity = _size + 128; - _data = new T[_capacity]; - for(int i = 0; i < _size; i++) - _data[i] = array._data[i]; - } - - ~Array() - { - if (_data) - delete [] _data; - } - - void push_back(const T& element) - { - ensureCapacity(_size + 1); - _data[_size++] = element; - } - - void push_back(const Array& array) - { - ensureCapacity(_size + array._size); - for(int i = 0; i < array._size; i++) - _data[_size++] = array._data[i]; - } - - void push_back_unique(const T& element) - { - if(!contains(element)) - { - ensureCapacity(_size + 1); - _data[_size++] = element; - } - } - - void insert_at(int idx, const T& element) - { - assert(idx >= 0 && idx <= _size); - ensureCapacity(_size + 1); - // The following loop is not efficient if you can just memcpy things around. - // e.g. if you have a list of ints. But for real objects (String...), memcpy - // usually isn't correct (specifically, for any class which has a non-default - // copy behaviour. E.g. the String class uses a refCounter which has to be - // updated whenever a String is copied. - for(int i = _size; i > idx; i--) - _data[i] = _data[i-1]; - - _data[idx] = element; - _size++; - } - - T remove_at(int idx) - { - assert(idx >= 0 && idx < _size); - T tmp = _data[idx]; - for(int i = idx; i < _size - 1; i++) - _data[i] = _data[i+1]; - _size--; - return tmp; - } - - // TODO: insert, remove, ... - - T& operator [](int idx) - { - assert(idx >= 0 && idx < _size); - return _data[idx]; - } - - const T& operator [](int idx) const - { - assert(idx >= 0 && idx < _size); - return _data[idx]; - } - - Array& operator =(const Array& array) - { - if (_data) - delete [] _data; - _size = array._size; - _capacity = _size + 128; - _data = new T[_capacity]; - for(int i = 0; i < _size; i++) - _data[i] = array._data[i]; - - return *this; - } - - unsigned int size() const { return _size; } - - void clear() - { - if(_data) - { - delete [] _data; - _data = 0; - } - _size = 0; - _capacity = 0; - } - - bool isEmpty() const - { - return (_size == 0); - } - - iterator begin() - { - return _data; - } - - iterator end() - { - return _data + _size; - } - - const_iterator begin() const - { - return _data; - } - - const_iterator end() const - { - return _data + _size; - } - - bool contains(const T &key) const - { - for (const_iterator i = begin(); i != end(); ++i) { - if (*i == key) - return true; - } - return false; - } - - protected: - void ensureCapacity(int new_len) - { - if (new_len <= _capacity) - return; - - T *old_data = _data; - _capacity = new_len + 128; - _data = new T[_capacity]; - - if (old_data) - { - // Copy old data - for (int i = 0; i < _size; i++) - _data[i] = old_data[i]; - delete [] old_data; - } - } -}; - -} // Namespace Common - -typedef Common::Array IntArray; -typedef Common::Array BoolArray; -typedef Common::Array ByteArray; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/MD5.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/MD5.cpp deleted file mode 100644 index 8f2533a083..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/MD5.cpp +++ /dev/null @@ -1,347 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// This file is derived from the RSA Data Security, Inc. MD5 Message-Digest -// Algorithm. See the header below for copyright information. -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: MD5.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include "MD5.hxx" - -/* - Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - rights reserved. - - License to copy and use this software is granted provided that it - is identified as the "RSA Data Security, Inc. MD5 Message-Digest - Algorithm" in all material mentioning or referencing this software - or this function. - - License is also granted to make and use derivative works provided - that such works are identified as "derived from the RSA Data - Security, Inc. MD5 Message-Digest Algorithm" in all material - mentioning or referencing the derived work. - - RSA Data Security, Inc. makes no representations concerning either - the merchantability of this software or the suitability of this - software for any particular purpose. It is provided "as is" - without express or implied warranty of any kind. - - These notices must be retained in any copies of any part of this - documentation and/or software. -*/ - -// Setup the types used by the MD5 routines -typedef unsigned char* POINTER; -typedef uInt16 UINT2; -typedef uInt32 UINT4; - -// MD5 context. -typedef struct -{ - UINT4 state[4]; /* state (ABCD) */ - UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */ - unsigned char buffer[64]; /* input buffer */ -} MD5_CTX; - -// Constants for MD5Transform routine. -#define S11 7 -#define S12 12 -#define S13 17 -#define S14 22 -#define S21 5 -#define S22 9 -#define S23 14 -#define S24 20 -#define S31 4 -#define S32 11 -#define S33 16 -#define S34 23 -#define S41 6 -#define S42 10 -#define S43 15 -#define S44 21 - -static void MD5Init(MD5_CTX*); -static void MD5Update(MD5_CTX*, const unsigned char*, unsigned int); -static void MD5Final(unsigned char[16], MD5_CTX*); -static void MD5Transform(UINT4 [4], const unsigned char [64]); -static void Encode(unsigned char*, UINT4*, unsigned int); -static void Decode(UINT4*, const unsigned char*, unsigned int); -static void MD5_memcpy(POINTER, POINTER, unsigned int); -static void MD5_memset(POINTER, int, unsigned int); - -static unsigned char PADDING[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -// F, G, H and I are basic MD5 functions. -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define I(x, y, z) ((y) ^ ((x) | (~z))) - -// ROTATE_LEFT rotates x left n bits. -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -// FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. -// Rotation is separate from addition to prevent recomputation. -#define FF(a, b, c, d, x, s, ac) { \ - (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define GG(a, b, c, d, x, s, ac) { \ - (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define HH(a, b, c, d, x, s, ac) { \ - (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define II(a, b, c, d, x, s, ac) { \ - (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } - -// MD5 initialization. Begins an MD5 operation, writing a new context. -static void MD5Init(MD5_CTX* context) -{ - context->count[0] = context->count[1] = 0; - /* Load magic initialization constants. */ - context->state[0] = 0x67452301; - context->state[1] = 0xefcdab89; - context->state[2] = 0x98badcfe; - context->state[3] = 0x10325476; -} - -// MD5 block update operation. Continues an MD5 message-digest -// operation, processing another message block, and updating the -// context. -static void MD5Update(MD5_CTX* context, const unsigned char* input, - unsigned int inputLen) -{ - unsigned int i, index, partLen; - - /* Compute number of bytes mod 64 */ - index = (unsigned int)((context->count[0] >> 3) & 0x3F); - - /* Update number of bits */ - if ((context->count[0] += ((UINT4)inputLen << 3)) - < ((UINT4)inputLen << 3)) - context->count[1]++; - context->count[1] += ((UINT4)inputLen >> 29); - - partLen = 64 - index; - - /* Transform as many times as possible. */ - if (inputLen >= partLen) { - MD5_memcpy ((POINTER)&context->buffer[index], (POINTER)input, partLen); - MD5Transform (context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) - MD5Transform (context->state, &input[i]); - - index = 0; - } - else - i = 0; - - /* Buffer remaining input */ - MD5_memcpy((POINTER)&context->buffer[index], (POINTER)&input[i], inputLen-i); -} - -// MD5 finalization. Ends an MD5 message-digest operation, writing the -// the message digest and zeroizing the context. -static void MD5Final(unsigned char digest[16], MD5_CTX* context) -{ - unsigned char bits[8]; - unsigned int index, padLen; - - /* Save number of bits */ - Encode (bits, context->count, 8); - - /* Pad out to 56 mod 64. */ - index = (unsigned int)((context->count[0] >> 3) & 0x3f); - padLen = (index < 56) ? (56 - index) : (120 - index); - MD5Update (context, PADDING, padLen); - - /* Append length (before padding) */ - MD5Update (context, bits, 8); - /* Store state in digest */ - Encode (digest, context->state, 16); - - /* Zeroize sensitive information. */ - MD5_memset ((POINTER)context, 0, sizeof (*context)); -} - -// MD5 basic transformation. Transforms state based on block. -static void MD5Transform(UINT4 state[4], const unsigned char block[64]) -{ - UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16]; - - Decode (x, block, 64); - - /* Round 1 */ - FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */ - FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */ - FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */ - FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */ - FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */ - FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */ - FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */ - FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */ - FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */ - FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */ - FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ - FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ - FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ - FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ - FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ - FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */ - GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */ - GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ - GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */ - GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */ - GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */ - GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ - GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */ - GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */ - GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ - GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */ - GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */ - GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ - GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */ - GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */ - GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */ - HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */ - HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ - HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ - HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */ - HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */ - HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */ - HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ - HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ - HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */ - HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */ - HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */ - HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */ - HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ - HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ - HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */ - II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */ - II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ - II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */ - II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ - II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */ - II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ - II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */ - II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */ - II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ - II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */ - II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ - II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */ - II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ - II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */ - II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */ - - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - - /* Zeroize sensitive information. */ - MD5_memset ((POINTER)x, 0, sizeof (x)); -} - -// Encodes input (UINT4) into output (unsigned char). Assumes len is -// a multiple of 4. -static void Encode(unsigned char* output, UINT4* input, unsigned int len) -{ - unsigned int i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) { - output[j] = (unsigned char)(input[i] & 0xff); - output[j+1] = (unsigned char)((input[i] >> 8) & 0xff); - output[j+2] = (unsigned char)((input[i] >> 16) & 0xff); - output[j+3] = (unsigned char)((input[i] >> 24) & 0xff); - } -} - -// Decodes input (unsigned char) into output (UINT4). Assumes len is -// a multiple of 4. -static void Decode(UINT4* output, const unsigned char* input, unsigned int len) -{ - unsigned int i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) | - (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24); -} - -// Note: Replace "for loop" with standard memcpy if possible. -static void MD5_memcpy(POINTER output, POINTER input, unsigned int len) -{ - unsigned int i; - - for (i = 0; i < len; i++) - output[i] = input[i]; -} - -// Note: Replace "for loop" with standard memset if possible. -static void MD5_memset(POINTER output, int value, unsigned int len) -{ - unsigned int i; - - for (i = 0; i < len; i++) - ((char *)output)[i] = (char)value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string MD5(const uInt8* buffer, uInt32 length) -{ - char hex[] = "0123456789abcdef"; - MD5_CTX context; - unsigned char md5[16]; - - MD5Init(&context); - MD5Update(&context, buffer, length); - MD5Final(md5, &context); - - string result; - for(int t = 0; t < 16; ++t) - { - result += hex[(md5[t] >> 4) & 0x0f]; - result += hex[md5[t] & 0x0f]; - } - - return result; -} diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/MD5.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/MD5.hxx deleted file mode 100644 index f22beed3d6..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/MD5.hxx +++ /dev/null @@ -1,35 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: MD5.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef MD5_HXX -#define MD5_HXX - -#include "bspf.hxx" - -/** - Get the MD5 Message-Digest of the specified message with the - given length. The digest consists of 32 hexadecimal digits. - - @param buffer The message to compute the digest of - @param length The length of the message - @return The message-digest -*/ -string MD5(const uInt8* buffer, uInt32 length); - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Random.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Random.cpp deleted file mode 100644 index bf2b0cd75a..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Random.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Random.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#include - -//ROBO: No OSystem -//#include "OSystem.hxx" -#include "Random.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Random::Random() -{ - initSeed(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Random::initSeed() -{ -//ROBO: No OSystem -// if(ourSystem) -// myValue = ourSystem->getTicks(); -// else - myValue = (uInt32)time(0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Random::next() -{ - return (myValue = (myValue * 2416 + 374441) % 1771875); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//ROBO: No OSystem -//const OSystem* Random::ourSystem = NULL; diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Random.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Random.hxx deleted file mode 100644 index a38596bb19..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Random.hxx +++ /dev/null @@ -1,77 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Random.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef RANDOM_HXX -#define RANDOM_HXX - -//ROBO: No OSystem -//class OSystem; - -#include "bspf.hxx" - -/** - This is a quick-and-dirty random number generator. It is based on - information in Chapter 7 of "Numerical Recipes in C". It's a simple - linear congruential generator. - - @author Bradford W. Mott - @version $Id: Random.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Random -{ - public: - /** - Create a new random number generator - */ - Random(); - - public: - /** - Re-initialize the random number generator with a new seed, - to generate a different set of random numbers. - */ - void initSeed(); - - /** - Answer the next random number from the random number generator - - @return A random number - */ - uInt32 next(); - - /** - Class method which sets the OSystem in use; the constructor will - use this to reseed the random number generator every time a new - instance is created - - @param system The system currently in use - */ -//ROBO: No OSystem -// static void setSystem(const OSystem* system) { ourSystem = system; } - - private: - // Indicates the next random number - uInt32 myValue; - - // Set the OSystem we're using -//ROBO: No OSystem -// static const OSystem* ourSystem; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializable.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializable.hxx deleted file mode 100644 index 967c9962fd..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializable.hxx +++ /dev/null @@ -1,63 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Serializable.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef SERIALIZABLE_HXX -#define SERIALIZABLE_HXX - -#include "Serializer.hxx" - -/** - This class provides an interface for (de)serializing objects. - It exists strictly to guarantee that all required classes use - method signatures as defined below. - - @author Stephen Anthony - @version $Id: Serializable.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Serializable -{ - public: - Serializable() { } - virtual ~Serializable() { } - - /** - Save the current state of the object to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - virtual bool save(Serializer& out) const = 0; - - /** - Load the current state of the object from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - virtual bool load(Serializer& in) = 0; - - /** - Get a descriptor for the object name (used in error checking). - - @return The name of the object - */ - virtual string name() const = 0; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializer.cpp b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializer.cpp deleted file mode 100644 index bbebaf9f44..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializer.cpp +++ /dev/null @@ -1,168 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Serializer.cxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -//ROBO: Entire file is modified, diff with original for details... -//ROBO: Use StateMem as stream backend -//#include - -#include -#include - -#include "Serializer.hxx" - -Int32 smem_read(StateMem *st, void *buffer, uInt32 len) -{ - if((len + st->loc) > st->len) - return(0); - - memcpy(buffer, st->data + st->loc, len); - st->loc += len; - - return(len); -} - -int smem_read32le(StateMem *st, uInt32 *b) -{ - uInt8 s[4]; - - if(smem_read(st, s, 4) < 4) - return(0); - - *b = s[0] | (s[1] << 8) | (s[2] << 16) | (s[3] << 24); - - return(4); -} - -Int32 smem_write(StateMem *st, void *buffer, uInt32 len) -{ - if((len + st->loc) > st->malloced) - { - uInt32 newsize = (st->malloced >= 32768) ? st->malloced : (st->initial_malloc ? st->initial_malloc : 32768); - - while(newsize < (len + st->loc)) - newsize *= 2; - st->data = (uInt8 *)realloc(st->data, newsize); - st->malloced = newsize; - } - memcpy(st->data + st->loc, buffer, len); - st->loc += len; - - if(st->loc > st->len) st->len = st->loc; - - return(len); -} - -int smem_write32le(StateMem *st, uInt32 b) -{ - uInt8 s[4]; - s[0]=b; - s[1]=b>>8; - s[2]=b>>16; - s[3]=b>>24; - return((smem_write(st, s, 4)<4)?0:4); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Serializer::Serializer(StateMem* stream) - : myStream(stream) -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Serializer::~Serializer(void) -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Serializer::isValid(void) -{ - return myStream != NULL; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Serializer::reset(void) -{ -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -char Serializer::getByte(void) -{ - char buf; - smem_read(myStream, &buf, 1); - return buf; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int Serializer::getInt(void) -{ - Int32 value; - smem_read32le(myStream, (uInt32*)&value); - return value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Serializer::getString(void) -{ - int len = getInt(); - string str; - str.resize((string::size_type)len); - smem_read(myStream, &str[0], len); - return str; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Serializer::getBool(void) -{ - char b = getByte(); - if(b == (char)TruePattern) - return true; - else if(b == (char)FalsePattern) - return false; - else - throw "Serializer::getBool() data corruption"; - - return false; // to stop compiler from complaining -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Serializer::putByte(char value) -{ - smem_write(myStream, &value, 1); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Serializer::putInt(int value) -{ - smem_write32le(myStream, value); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Serializer::putString(const string& str) -{ - uInt32 len = str.length(); - smem_write32le(myStream, len); - smem_write(myStream, (void*)str.data(), len); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Serializer::putBool(bool b) -{ - putByte(b ? TruePattern : FalsePattern); -} - diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializer.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializer.hxx deleted file mode 100644 index dee54d544b..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/Serializer.hxx +++ /dev/null @@ -1,146 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: Serializer.hxx 2199 2011-01-01 16:04:32Z stephena $ -//============================================================================ - -#ifndef SERIALIZER_HXX -#define SERIALIZER_HXX - -//ROBO: Use mednafen's StateMem as stream -//ROBO: This is a hack to prevent #error's from mednafen's types.h about include order -#ifndef _STATE_H -#include -typedef struct StateMem -{ - uint8_t *data; - uint32_t loc; - uint32_t len; - - uint32_t malloced; - - uint32_t initial_malloc; // A setting! - StateMem() {loc = 0; len = 0; malloced = 0; initial_malloc = 0;} -} StateMem; -#endif - -#include -#include "bspf.hxx" - -/** - This class implements a Serializer device, whereby data is serialized and - read from/written to a binary stream in a system-independent way. The - stream can be either an actual file, or an in-memory structure. - - Bytes are written as characters, integers are written as 4 characters - (32-bit), strings are written as characters prepended by the length of the - string, boolean values are written using a special character pattern. - - All bytes and ints should be cast to their appropriate data type upon - method return. - - @author Stephen Anthony - @version $Id: Serializer.hxx 2199 2011-01-01 16:04:32Z stephena $ -*/ -class Serializer -{ - public: - Serializer(StateMem* stream); - - /** - Destructor - */ - virtual ~Serializer(void); - - public: - /** - Answers whether the serializer is currently initialized for reading - and writing. - */ - bool isValid(void); - - /** - Resets the read/write location to the beginning of the stream. - */ - void reset(void); - - /** - Reads a byte value (8-bit) from the current input stream. - - @result The char value which has been read from the stream. - */ - char getByte(void); - - /** - Reads an int value (32-bit) from the current input stream. - - @result The int value which has been read from the stream. - */ - int getInt(void); - - /** - Reads a string from the current input stream. - - @result The string which has been read from the stream. - */ - string getString(void); - - /** - Reads a boolean value from the current input stream. - - @result The boolean value which has been read from the stream. - */ - bool getBool(void); - - /** - Writes an byte value (8-bit) to the current output stream. - - @param value The byte value to write to the output stream. - */ - void putByte(char value); - - /** - Writes an int value (32-bit) to the current output stream. - - @param value The int value to write to the output stream. - */ - void putInt(int value); - - /** - Writes a string to the current output stream. - - @param str The string to write to the output stream. - */ - void putString(const string& str); - - /** - Writes a boolean value to the current output stream. - - @param b The boolean value to write to the output stream. - */ - void putBool(bool b); - - private: - // The stream to send the serialized data to. - StateMem* myStream; - - enum { - TruePattern = 0xfe, - FalsePattern = 0x01 - }; -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/StringList.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/StringList.hxx deleted file mode 100644 index 130e5b2281..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/StringList.hxx +++ /dev/null @@ -1,73 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: StringList.hxx 2234 2011-05-26 16:14:46Z stephena $ -//============================================================================ - -#ifndef STRING_LIST_HXX -#define STRING_LIST_HXX - -#include "Array.hxx" -#include "bspf.hxx" - - -class StringList : public Common::Array -{ - public: - void push_back(const char *str) - { - ensureCapacity(_size + 1); - _data[_size++] = str; - } - - void push_back(const string& str) - { - ensureCapacity(_size + 1); - _data[_size++] = str; - } - - static string removePattern(const string& str, const string& pattern) - { - // This can probably be made more efficient ... - string tmp; - for(unsigned int i = 0; i < str.length(); ++i) - { - bool match = false; - for(unsigned int j = 0; j < pattern.length(); ++j) - { - if(str[i] == pattern[j]) - { - match = true; - break; - } - } - if(!match) tmp += str[i]; - } - return tmp; - } -}; - -class StringMap : public Common::Array< pair > -{ - public: - void push_back(const string& name, const string& tag) - { - ensureCapacity(_size + 1); - _data[_size++] = make_pair(name, tag); - } -}; - -#endif diff --git a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/bspf.hxx b/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/bspf.hxx deleted file mode 100644 index 9c8b4a5f12..0000000000 --- a/Cores/Stella/PVStella/Stella/StellaCore/src/stella/utility/bspf.hxx +++ /dev/null @@ -1,162 +0,0 @@ -//============================================================================ -// -// BBBBB SSSS PPPPP FFFFFF -// BB BB SS SS PP PP FF -// BB BB SS PP PP FF -// BBBBB SSSS PPPPP FFFF -- "Brad's Simple Portability Framework" -// BB BB SS PP FF -// BB BB SS SS PP FF -// BBBBB SSSS PP FF -// -// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: bspf.hxx 2232 2011-05-24 16:04:48Z stephena $ -//============================================================================ - -#ifndef BSPF_HXX -#define BSPF_HXX - -/** - This file defines various basic data types and preprocessor variables - that need to be defined for different operating systems. - - @author Bradford W. Mott - @version $Id: bspf.hxx 2232 2011-05-24 16:04:48Z stephena $ -*/ - -#ifdef HAVE_INTTYPES - #include - - // Types for 8-bit signed and unsigned integers - typedef int8_t Int8; - typedef uint8_t uInt8; - // Types for 16-bit signed and unsigned integers - typedef int16_t Int16; - typedef uint16_t uInt16; - // Types for 32-bit signed and unsigned integers - typedef int32_t Int32; - typedef uint32_t uInt32; - // Types for 64-bit signed and unsigned integers - typedef int64_t Int64; - typedef uint64_t uInt64; -#elif defined BSPF_WIN32 - // Types for 8-bit signed and unsigned integers - typedef signed char Int8; - typedef unsigned char uInt8; - // Types for 16-bit signed and unsigned integers - typedef signed short Int16; - typedef unsigned short uInt16; - // Types for 32-bit signed and unsigned integers - typedef signed int Int32; - typedef unsigned int uInt32; - // Types for 64-bit signed and unsigned integers - typedef __int64 Int64; - typedef unsigned __int64 uInt64; -#else - #error Update BSPF.hxx for datatypes -#endif - - -// The following code should provide access to the standard C++ objects and -// types: cout, cerr, string, ostream, istream, etc. -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -// Defines to help with path handling -#if defined BSPF_UNIX - #define BSPF_PATH_SEPARATOR "/" -#elif (defined(BSPF_DOS) || defined(BSPF_WIN32) || defined(BSPF_OS2)) - #define BSPF_PATH_SEPARATOR "\\" -#elif defined BSPF_MAC_OSX - #define BSPF_PATH_SEPARATOR "/" -#elif defined BSPF_GP2X - #define BSPF_PATH_SEPARATOR "/" -#endif - -// I wish Windows had a complete POSIX layer -#if defined BSPF_WIN32 && !defined __GNUG__ - #define BSPF_strcasecmp stricmp - #define BSPF_strncasecmp strnicmp - #define BSPF_isblank(c) ((c == ' ') || (c == '\t')) - #define BSPF_snprintf _snprintf - #define BSPF_vsnprintf _vsnprintf -#else -//ROBO: -// #include - #include - #define BSPF_strcasecmp strcasecmp - #define BSPF_strncasecmp strncasecmp - #define BSPF_isblank(c) isblank(c) - #define BSPF_snprintf snprintf - #define BSPF_vsnprintf vsnprintf -#endif - -// CPU architecture type -// This isn't complete yet, but takes care of all the major platforms -#if defined(__i386__) || defined(_M_IX86) - #define BSPF_ARCH "i386" -#elif defined(__x86_64__) || defined(_WIN64) - #define BSPF_ARCH "x86_64" -#elif defined(__powerpc__) || defined(__ppc__) - #define BSPF_ARCH "ppc" -#else - #define BSPF_ARCH "NOARCH" -#endif - -// Used for stringstreams -#define HEX8 uppercase << hex << setw(8) << setfill('0') -#define HEX4 uppercase << hex << setw(4) << setfill('0') -#define HEX2 uppercase << hex << setw(2) << setfill('0') - -// Some convenience functions -template inline void BSPF_swap(T& a, T& b) { T tmp = a; a = b; b = tmp; } -template inline T BSPF_abs (T x) { return (x>=0) ? x : -x; } -template inline T BSPF_min (T a, T b) { return (a inline T BSPF_max (T a, T b) { return (a>b) ? a : b; } - -// Test whether two strings are equal (case insensitive) -inline bool BSPF_equalsIgnoreCase(const string& s1, const string& s2) -{ - return BSPF_strcasecmp(s1.c_str(), s2.c_str()) == 0; -} -inline bool BSPF_equalsIgnoreCase(const char* s1, const char* s2) -{ - return BSPF_strcasecmp(s1, s2) == 0; -} - -// Test whether the first string starts with the second one (case insensitive) -inline bool BSPF_startsWithIgnoreCase(const string& s1, const string& s2) -{ - return BSPF_strncasecmp(s1.c_str(), s2.c_str(), s2.length()) == 0; -} -inline bool BSPF_startsWithIgnoreCase(const char* s1, const char* s2) -{ - return BSPF_strncasecmp(s1, s2, strlen(s2)) == 0; -} - -// Test whether two characters are equal (case insensitive) -static bool BSPF_equalsIgnoreCaseChar(char ch1, char ch2) -{ - return toupper((unsigned char)ch1) == toupper((unsigned char)ch2); -} -// Find location (if any) of the second string within the first -inline size_t BSPF_findIgnoreCase(const string& s1, const string& s2) -{ - string::const_iterator pos = std::search(s1.begin(), s1.end(), - s2.begin(), s2.end(), BSPF_equalsIgnoreCaseChar); - return pos == s1.end() ? string::npos : pos - s1.begin(); -} - -static const string EmptyString(""); - -#endif diff --git a/Cores/Stella/PVStella/Stella/PVStellaGameCore.h b/Cores/Stella/PVStellaGameCore/PVStellaGameCore.h similarity index 100% rename from Cores/Stella/PVStella/Stella/PVStellaGameCore.h rename to Cores/Stella/PVStellaGameCore/PVStellaGameCore.h diff --git a/Cores/Stella/PVStellaGameCore/PVStellaGameCore.mm b/Cores/Stella/PVStellaGameCore/PVStellaGameCore.mm new file mode 100644 index 0000000000..672cc4ac0f --- /dev/null +++ b/Cores/Stella/PVStellaGameCore/PVStellaGameCore.mm @@ -0,0 +1,651 @@ +/* + Copyright (c) 2013, OpenEmu Team + + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "PVStellaGameCore.h" + +#import +#import + +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +#import +#import +#import +#import +#else +#import +#import +#endif + +#include "libretro.h" + +// Size and screen buffer consants +typedef uint32_t stellabuffer_t; +#define STELLA_PITCH_SHIFT 2 +#define STELLA_PIXEL_TYPE GL_UNSIGNED_BYTE +#define STELLA_PIXEL_FORMAT GL_BGRA +#define STELLA_INTERNAL_FORMAT GL_RGBA + +#define STELLA_WIDTH 160 +#define STELLA_HEIGHT 256 + + +const NSUInteger A2600EmulatorValues[] = { + RETRO_DEVICE_ID_JOYPAD_UP, + RETRO_DEVICE_ID_JOYPAD_DOWN, + RETRO_DEVICE_ID_JOYPAD_LEFT, + RETRO_DEVICE_ID_JOYPAD_RIGHT, + RETRO_DEVICE_ID_JOYPAD_B, + RETRO_DEVICE_ID_JOYPAD_L, + RETRO_DEVICE_ID_JOYPAD_L2, + RETRO_DEVICE_ID_JOYPAD_R, + RETRO_DEVICE_ID_JOYPAD_R2, + RETRO_DEVICE_ID_JOYPAD_START, + RETRO_DEVICE_ID_JOYPAD_SELECT +}; + +#define NUMBER_OF_PADS 2 +#define NUMBER_OF_PAD_INPUTS 16 + +@interface PVStellaGameCore () { + stellabuffer_t *_videoBuffer; + int _videoWidth, _videoHeight; + int16_t _pad[NUMBER_OF_PADS][NUMBER_OF_PAD_INPUTS]; +} +@property (nonatomic, strong) NSMutableArray* cheats; +@end + +static __weak PVStellaGameCore *_current; + +@implementation PVStellaGameCore + +#pragma mark - Static callbacks +static void audio_callback(int16_t left, int16_t right) { + __strong PVStellaGameCore *strongCurrent = _current; + + [[strongCurrent ringBufferAtIndex:0] write:&left maxLength:2]; + [[strongCurrent ringBufferAtIndex:0] write:&right maxLength:2]; + + strongCurrent = nil; +} + +static size_t audio_batch_callback(const int16_t *data, size_t frames) { + __strong PVStellaGameCore *strongCurrent = _current; + + [[strongCurrent ringBufferAtIndex:0] write:data maxLength:frames << 2]; + + strongCurrent = nil; + + return frames; +} + +static dispatch_queue_t memcpy_queue = +dispatch_queue_create("stella memcpy queue", dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INTERACTIVE, 0)); + +static void video_callback(const void *data, unsigned width, unsigned height, size_t pitch) { + __strong PVStellaGameCore *strongCurrent = _current; + + strongCurrent->_videoWidth = width; + strongCurrent->_videoHeight = height; + + dispatch_apply(height, memcpy_queue, ^(size_t y) { + const stellabuffer_t *src = (stellabuffer_t*)data + y * (pitch >> STELLA_PITCH_SHIFT); //pitch is in bytes not pixels + + //uint16_t *dst = current->videoBuffer + y * current->videoWidth; + stellabuffer_t *dst = strongCurrent->_videoBuffer + y * width; + + memcpy(dst, src, sizeof(stellabuffer_t)*width); + }); + + strongCurrent = nil; +} + +static void input_poll_callback(void) { + //DLOG(@"poll callback"); +} + +static int16_t input_state_callback(unsigned port, unsigned device, unsigned index, unsigned _id) +{ +// NSLog(@"polled input: port: %d device: %d id: %d", port, device, _id); + + __strong PVStellaGameCore *strongCurrent = _current; + int16_t value = 0; + + if (port == 0 & device == RETRO_DEVICE_JOYPAD) + { + value = strongCurrent->_pad[0][_id]; + } + else if(port == 1 & device == RETRO_DEVICE_JOYPAD) + { + if (value == 0) + { + value = strongCurrent->_pad[1][_id]; + } + } + + strongCurrent = nil; + + return value; +} + +static bool environment_callback(unsigned cmd, void *data) { + __strong PVStellaGameCore *strongCurrent = _current; + + switch(cmd) { + case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY : { + NSString *appSupportPath = [strongCurrent BIOSPath]; + + *(const char **)data = [appSupportPath UTF8String]; + DLOG(@"Environ SYSTEM_DIRECTORY: \"%@\".\n", appSupportPath); + break; + } + case RETRO_ENVIRONMENT_SET_PIXEL_FORMAT: { +// *(retro_pixel_format *)data = RETRO_PIXEL_FORMAT_0RGB1555; + break; + } + default : { + DLOG(@"Environ UNSUPPORTED (#%u).\n", cmd); + return false; + } + } + + strongCurrent = nil; + + return true; +} + + +static void loadSaveFile(const char* path, int type) { + FILE *file; + + file = fopen(path, "rb"); + if ( !file ) { + return; + } + + size_t size = retro_get_memory_size(type); + void *data = retro_get_memory_data(type); + + if (size == 0 || !data) { + fclose(file); + return; + } + + int rc = fread(data, sizeof(uint8_t), size, file); + if ( rc != size ) { + DLOG(@"Couldn't load save file."); + } + + DLOG(@"Loaded save file: %s", path); + fclose(file); +} + +static void writeSaveFile(const char* path, int type) { + size_t size = retro_get_memory_size(type); + void *data = retro_get_memory_data(type); + + if ( data && size > 0 ) { + FILE *file = fopen(path, "wb"); + if ( file != NULL ) { + DLOG(@"Saving state %s. Size: %d bytes.", path, (int)size); + retro_serialize(data, size); + if ( fwrite(data, sizeof(uint8_t), size, file) != size ) { + DLOG(@"Did not save state properly."); + } + fclose(file); + } + } +} + +- (instancetype)init { + if((self = [super init])) + { + _cheats = [NSMutableArray new]; + } + + _current = self; + + return self; +} + +#pragma mark - Exectuion + +- (void)resetEmulation { + retro_reset(); +} + +- (void)stopEmulation { + if ([self.batterySavesPath length]) + { + [[NSFileManager defaultManager] createDirectoryAtPath:self.batterySavesPath withIntermediateDirectories:YES attributes:nil error:NULL]; + NSString *filePath = [self.batterySavesPath stringByAppendingPathComponent:[self.romName stringByAppendingPathExtension:@"sav"]]; + [self writeSaveFile:filePath forType:RETRO_MEMORY_SAVE_RAM]; + } + + [super stopEmulation]; + + double delayInSeconds = 0.1; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + retro_unload_game(); + retro_deinit(); + }); +} + +- (void)dealloc { + free(_videoBuffer); +} + +- (void)executeFrame { + if (self.controller1 || self.controller2) { + [self pollControllers]; + } + retro_run(); +} + +- (void)executeFrameSkippingFrame: (BOOL) skip +{ + if (!skip && (self.controller1 || self.controller2)) { + [self pollControllers]; + } + retro_run(); +} + +- (BOOL)loadFileAtPath: (NSString*) path { + memset(_pad, 0, sizeof(int16_t) * NUMBER_OF_PADS * NUMBER_OF_PAD_INPUTS); + if(_videoBuffer) + free(_videoBuffer); + _videoBuffer = (stellabuffer_t*)malloc(STELLA_WIDTH * STELLA_HEIGHT * 4); + + const void *data; + size_t size; + self.romName = [[[path lastPathComponent] componentsSeparatedByString:@"."] objectAtIndex:0]; //[path copy]; + + //load cart, read bytes, get length + NSData* dataObj = [NSData dataWithContentsOfFile:[path stringByStandardizingPath]]; + if(dataObj == nil) return false; + size = [dataObj length]; + data = (uint8_t*)[dataObj bytes]; + const char *meta = NULL; + + //memory.copy(data, size); + retro_set_environment(environment_callback); + retro_init(); + + retro_set_audio_sample(audio_callback); + retro_set_audio_sample_batch(audio_batch_callback); + retro_set_video_refresh(video_callback); + retro_set_input_poll(input_poll_callback); + retro_set_input_state(input_state_callback); + + + const char *fullPath = [path UTF8String]; + + struct retro_game_info info = {NULL}; + info.path = fullPath; + info.data = data; + info.size = size; + info.meta = meta; + + if (retro_load_game(&info)) + { + if ([self.batterySavesPath length]) + { + [[NSFileManager defaultManager] createDirectoryAtPath:self.batterySavesPath withIntermediateDirectories:YES attributes:nil error:NULL]; + + NSString *filePath = [self.batterySavesPath stringByAppendingPathComponent:[self.romName stringByAppendingPathExtension:@"sav"]]; + + [self loadSaveFile:filePath forType:RETRO_MEMORY_SAVE_RAM]; + } + + struct retro_system_av_info info; + retro_get_system_av_info(&info); + + _frameInterval = info.timing.fps; + _sampleRate = info.timing.sample_rate; + + retro_get_region(); + retro_run(); + + return YES; + } + + return NO; +} + +#pragma mark - Input + +- (void)pollControllers { + for (NSInteger playerIndex = 0; playerIndex < 2; playerIndex++) { + GCController *controller = nil; + + if (self.controller1 && playerIndex == 0) { + controller = self.controller1; + } + else if (self.controller2 && playerIndex == 1) + { + controller = self.controller2; + } + + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + /* TODO: To support paddles we would need to circumvent libRetro's emulation of analog controls or drop libRetro and talk to stella directly like OpenEMU did */ + + // D-Pad + float deadZone = 0.1; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = (dpad.up.isPressed || gamepad.leftThumbstick.up.value > deadZone); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = (dpad.down.isPressed || gamepad.leftThumbstick.down.value > deadZone); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = (dpad.left.isPressed || gamepad.leftThumbstick.left.value > deadZone); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = (dpad.right.isPressed || gamepad.leftThumbstick.right.value > deadZone); + + // #688, use second thumb to control second player input if no controller active + // some games used both joysticks for 1 player optionally + if(playerIndex == 0 && self.controller2 == nil) { + _pad[1][RETRO_DEVICE_ID_JOYPAD_UP] = gamepad.rightThumbstick.up.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_DOWN] = gamepad.rightThumbstick.down.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_LEFT] = gamepad.rightThumbstick.left.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_RIGHT] = gamepad.rightThumbstick.right.isPressed; + } + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed || gamepad.rightTrigger.isPressed; + // Booster + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed || gamepad.leftTrigger.isPressed; + + // Reset + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; + + // Select + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; + + /* + #define RETRO_DEVICE_ID_JOYPAD_B 0 == JoystickZeroFire1 + #define RETRO_DEVICE_ID_JOYPAD_Y 1 == Unmapped + #define RETRO_DEVICE_ID_JOYPAD_SELECT 2 == ConsoleSelect + #define RETRO_DEVICE_ID_JOYPAD_START 3 == ConsoleReset + #define RETRO_DEVICE_ID_JOYPAD_UP 4 == Up + #define RETRO_DEVICE_ID_JOYPAD_DOWN 5 == Down + #define RETRO_DEVICE_ID_JOYPAD_LEFT 6 == Left + #define RETRO_DEVICE_ID_JOYPAD_RIGHT 7 == Right + #define RETRO_DEVICE_ID_JOYPAD_A 8 == JoystickZeroFire2 + #define RETRO_DEVICE_ID_JOYPAD_X 9 == JoystickZeroFire3 + #define RETRO_DEVICE_ID_JOYPAD_L 10 == ConsoleLeftDiffA + #define RETRO_DEVICE_ID_JOYPAD_R 11 == ConsoleRightDiffA + #define RETRO_DEVICE_ID_JOYPAD_L2 12 == ConsoleLeftDiffB + #define RETRO_DEVICE_ID_JOYPAD_R2 13 == ConsoleRightDiffB + #define RETRO_DEVICE_ID_JOYPAD_L3 14 == ConsoleColor + #define RETRO_DEVICE_ID_JOYPAD_R3 15 == ConsoleBlackWhite + */ + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + // D-Pad + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.isPressed; + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed; + // Booster + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed; + + // Reset + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; + + // Select + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; + + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.value > 0.5; + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonX.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonA.isPressed; + } +#endif + } +} + +- (void)didPushPV2600Button:(PV2600Button)button forPlayer:(NSUInteger)player { + _pad[player][A2600EmulatorValues[button]] = 1; +} + +- (void)didReleasePV2600Button:(PV2600Button)button forPlayer:(NSUInteger)player { + _pad[player][A2600EmulatorValues[button]] = 0; +} + +#pragma mark - Video +- (const void *)videoBuffer +{ + return _videoBuffer; +} + +- (CGRect)screenRect { +// __strong PVStellaGameCore *strongCurrent = _current; + + //return OEIntRectMake(0, 0, strongCurrent->_videoWidth, strongCurrent->_videoHeight); + return CGRectMake(0, 0, _videoWidth, _videoHeight); +} + +- (CGSize)bufferSize { + return CGSizeMake(STELLA_WIDTH, STELLA_HEIGHT); + +// __strong PVStellaGameCore *strongCurrent = _current; + //return CGSizeMake(strongCurrent->_videoWidth, strongCurrent->_videoHeight); +} + +- (CGSize)aspectSize { + return CGSizeMake(_videoWidth * (12.0/7.0), _videoHeight); +// return CGSizeMake(STELLA_WIDTH * 2, STELLA_HEIGHT); +} + +#pragma mark - Video +- (GLenum)pixelFormat +{ + return STELLA_PIXEL_FORMAT; +} + +- (GLenum)pixelType +{ + return STELLA_PIXEL_TYPE; +} + +- (GLenum)internalPixelFormat +{ + return STELLA_INTERNAL_FORMAT; +} + +#pragma mark - Audio +- (double)audioSampleRate +{ + return _sampleRate ? _sampleRate : 31400; +} + +- (NSTimeInterval)frameInterval +{ + return _frameInterval ? _frameInterval : 60.0; +} + +- (NSUInteger)channelCount { return 2; } + +#pragma mark - Saves +-(BOOL)supportsSaveStates { + return YES; +} + +- (void)loadSaveFile:(NSString *)path forType:(int)type { + size_t size = retro_get_memory_size(type); + void *ramData = retro_get_memory_data(type); + + if (size == 0 || !ramData) + { + return; + } + + NSData *data = [NSData dataWithContentsOfFile:path]; + if (!data || ![data length]) + { + WLOG(@"Couldn't load save file."); + } + + [data getBytes:ramData length:size]; +} + +- (BOOL)writeSaveFile:(NSString *)path forType:(int)type +{ + size_t size = retro_get_memory_size(type); + void *ramData = retro_get_memory_data(type); + + if (ramData && (size > 0)) + { + retro_serialize(ramData, size); + NSData *data = [NSData dataWithBytes:ramData length:size]; + BOOL success = [data writeToFile:path atomically:YES]; + if (!success) + { + ELOG(@"Error writing save file"); + } + return success; + } else { + return NO; + } +} + + +- (BOOL)saveStateToFileAtPath:(NSString *)path error:(NSError *__autoreleasing *)error +{ + @synchronized(self) { + int serial_size = retro_serialize_size(); + uint8_t *serial_data = (uint8_t *) malloc(serial_size); + + retro_serialize(serial_data, serial_size); + + NSError *error = nil; + NSData *saveStateData = [NSData dataWithBytes:serial_data length:serial_size]; + free(serial_data); + BOOL success = [saveStateData writeToFile:path + options:NSDataWritingAtomic + error:&error]; + if (!success) { + ELOG(@"Error saving state: %@", [error localizedDescription]); + return NO; + } + + return YES; + } +} + +- (BOOL)loadStateFromFileAtPath:(NSString *)path error:(NSError *__autoreleasing *)error +{ + @synchronized(self) { + NSData *saveStateData = [NSData dataWithContentsOfFile:path]; + if (!saveStateData) + { + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load save state.", + NSLocalizedFailureReasonErrorKey: @"Genesis failed to read savestate data.", + NSLocalizedRecoverySuggestionErrorKey: @"Check that the path is correct and file exists." + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadState + userInfo:userInfo]; + *error = newError; + } + ELOG(@"Unable to load save state from path: %@", path); + return NO; + } + + if (!retro_unserialize([saveStateData bytes], [saveStateData length])) + { + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to load save state.", + NSLocalizedFailureReasonErrorKey: @"Genesis failed to load savestate data.", + NSLocalizedRecoverySuggestionErrorKey: @"Check that the path is correct and file exists." + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadState + userInfo:userInfo]; + *error = newError; + } + DLOG(@"Unable to load save state"); + return NO; + } + + return YES; + } +} + +@end + +#pragma mark - Cheats + +@implementation PVStellaGameCore (GameWithCheat) + +-(BOOL)supportsCheatCode { + return NO; +} + +- (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled error:(NSError**)error { + @synchronized(self) { + + BOOL cheatListSuccessfull = NO; + + NSUInteger foundIndex = [self.cheats indexOfObjectIdenticalTo:code]; + NSUInteger index = foundIndex != NSNotFound ?: self.cheats.count; + + [self.cheats insertObject:code atIndex:index]; + + const char* _Nullable code_c = [code cStringUsingEncoding:NSUTF8StringEncoding]; + retro_cheat_set(index, enabled, code_c); + + ILOG(@"Applied Cheat Code %@ %@ %@", code, type, cheatListSuccessfull ? @"Success" : @"Failed"); + + return cheatListSuccessfull; + } +} + +@end diff --git a/Cores/Stella/Stella/stella b/Cores/Stella/Stella/stella new file mode 160000 index 0000000000..fa49e03410 --- /dev/null +++ b/Cores/Stella/Stella/stella @@ -0,0 +1 @@ +Subproject commit fa49e034101a22344c7bd01648d514b6cc61ac7f diff --git a/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj b/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj index 48fae422d5..71b962d73b 100644 --- a/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj +++ b/Cores/TGBDual/PVTGBDual.xcodeproj/project.pbxproj @@ -3,69 +3,39 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 55; objects = { /* Begin PBXBuildFile section */ 1481E27721DA2F11005AD9D0 /* PVTGBDualCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E26D21DA2F10005AD9D0 /* PVTGBDualCore+Audio.h */; }; - 1481E27821DA2F11005AD9D0 /* PVTGBDualCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E26D21DA2F10005AD9D0 /* PVTGBDualCore+Audio.h */; }; 1481E27921DA2F11005AD9D0 /* PVTGBDualCore+Video.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E26E21DA2F10005AD9D0 /* PVTGBDualCore+Video.mm */; }; - 1481E27A21DA2F11005AD9D0 /* PVTGBDualCore+Video.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E26E21DA2F10005AD9D0 /* PVTGBDualCore+Video.mm */; }; 1481E27B21DA2F11005AD9D0 /* PVTGBDualCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E26F21DA2F10005AD9D0 /* PVTGBDualCore+Saves.h */; }; - 1481E27C21DA2F11005AD9D0 /* PVTGBDualCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E26F21DA2F10005AD9D0 /* PVTGBDualCore+Saves.h */; }; 1481E27D21DA2F11005AD9D0 /* PVTGBDualCore+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27021DA2F10005AD9D0 /* PVTGBDualCore+Audio.mm */; }; - 1481E27E21DA2F11005AD9D0 /* PVTGBDualCore+Audio.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27021DA2F10005AD9D0 /* PVTGBDualCore+Audio.mm */; }; 1481E27F21DA2F11005AD9D0 /* PVTGBDualCore+Saves.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27121DA2F10005AD9D0 /* PVTGBDualCore+Saves.mm */; }; - 1481E28021DA2F11005AD9D0 /* PVTGBDualCore+Saves.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27121DA2F10005AD9D0 /* PVTGBDualCore+Saves.mm */; }; 1481E28121DA2F11005AD9D0 /* PVTGBDualCore+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E27221DA2F10005AD9D0 /* PVTGBDualCore+Video.h */; }; - 1481E28221DA2F11005AD9D0 /* PVTGBDualCore+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E27221DA2F10005AD9D0 /* PVTGBDualCore+Video.h */; }; 1481E28321DA2F11005AD9D0 /* PVTGBDualCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E27321DA2F10005AD9D0 /* PVTGBDualCore+Controls.h */; }; - 1481E28421DA2F11005AD9D0 /* PVTGBDualCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E27321DA2F10005AD9D0 /* PVTGBDualCore+Controls.h */; }; 1481E28521DA2F11005AD9D0 /* PVTGBDualCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E27421DA2F10005AD9D0 /* PVTGBDualCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1481E28621DA2F11005AD9D0 /* PVTGBDualCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1481E27421DA2F10005AD9D0 /* PVTGBDualCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1481E28721DA2F11005AD9D0 /* PVTGBDualCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27521DA2F10005AD9D0 /* PVTGBDualCore+Controls.mm */; }; - 1481E28821DA2F11005AD9D0 /* PVTGBDualCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27521DA2F10005AD9D0 /* PVTGBDualCore+Controls.mm */; }; 1481E28921DA2F11005AD9D0 /* PVTGBDualCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27621DA2F11005AD9D0 /* PVTGBDualCore.mm */; }; - 1481E28A21DA2F11005AD9D0 /* PVTGBDualCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1481E27621DA2F11005AD9D0 /* PVTGBDualCore.mm */; }; 149019AF21C8466700C35ECE /* gbr.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490198521C8466700C35ECE /* gbr.h */; }; - 149019B021C8466700C35ECE /* gbr.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490198521C8466700C35ECE /* gbr.h */; }; 149019C921C8466700C35ECE /* dmy_renderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490199821C8466700C35ECE /* dmy_renderer.h */; }; - 149019CA21C8466700C35ECE /* dmy_renderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490199821C8466700C35ECE /* dmy_renderer.h */; }; 149019CB21C8466700C35ECE /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490199921C8466700C35ECE /* libretro.h */; }; - 149019CC21C8466700C35ECE /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490199921C8466700C35ECE /* libretro.h */; }; 149019CF21C8466700C35ECE /* link.T in Resources */ = {isa = PBXBuildFile; fileRef = 1490199B21C8466700C35ECE /* link.T */; }; - 149019D021C8466700C35ECE /* link.T in Resources */ = {isa = PBXBuildFile; fileRef = 1490199B21C8466700C35ECE /* link.T */; }; 149019D521C8466700C35ECE /* renderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490199F21C8466700C35ECE /* renderer.h */; }; - 149019D621C8466700C35ECE /* renderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1490199F21C8466700C35ECE /* renderer.h */; }; 149019D921C8466700C35ECE /* gb_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A121C8466700C35ECE /* gb_types.h */; }; - 149019DA21C8466700C35ECE /* gb_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A121C8466700C35ECE /* gb_types.h */; }; 149019DB21C8466700C35ECE /* serializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A221C8466700C35ECE /* serializer.h */; }; - 149019DC21C8466700C35ECE /* serializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A221C8466700C35ECE /* serializer.h */; }; 149019DD21C8466700C35ECE /* op_cb.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A321C8466700C35ECE /* op_cb.h */; }; - 149019DE21C8466700C35ECE /* op_cb.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A321C8466700C35ECE /* op_cb.h */; }; 149019DF21C8466700C35ECE /* gb.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A421C8466700C35ECE /* gb.h */; }; - 149019E021C8466700C35ECE /* gb.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A421C8466700C35ECE /* gb.h */; }; 149019E321C8466700C35ECE /* op_normal.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A621C8466700C35ECE /* op_normal.h */; }; - 149019E421C8466700C35ECE /* op_normal.h in Headers */ = {isa = PBXBuildFile; fileRef = 149019A621C8466700C35ECE /* op_normal.h */; }; - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; - B3271BE1276B8C730031AECC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3271BE0276B8C730031AECC /* OpenGL.framework */; platformFilter = maccatalyst; }; + B3271BE1276B8C730031AECC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3271BE0276B8C730031AECC /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; - B3447ED6218BEDD200557ACE /* PVTGBDual.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVTGBDual.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3447EE2218BEDD200557ACE /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; - B3A3976427E6B9C800D8F433 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A3976327E6B9C800D8F433 /* PVSupport.framework */; }; B3C7621520783162009950E4 /* PVTGBDual.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVTGBDual.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilters = (ios, tvos, watchos, ); }; B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; B3D275B626E9D5E000543CFE /* apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019A821C8466700C35ECE /* apu.cpp */; }; @@ -78,18 +48,7 @@ B3D275BD26E9D5E000543CFE /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1490199A21C8466700C35ECE /* libretro.cpp */; }; B3D275BE26E9D5E000543CFE /* gbr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1490198621C8466700C35ECE /* gbr.cpp */; }; B3D275BF26E9D5E000543CFE /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019A921C8466700C35ECE /* cpu.cpp */; }; - B3D275C026E9D70900543CFE /* libtgbdual-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D275A126E9D5C100543CFE /* libtgbdual-iOS.a */; }; - B3D275C526E9D71800543CFE /* rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019A521C8466700C35ECE /* rom.cpp */; }; - B3D275C626E9D71800543CFE /* dmy_renderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1490199721C8466700C35ECE /* dmy_renderer.cpp */; }; - B3D275C726E9D71800543CFE /* gb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019A721C8466700C35ECE /* gb.cpp */; }; - B3D275C826E9D71800543CFE /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019A921C8466700C35ECE /* cpu.cpp */; }; - B3D275C926E9D71800543CFE /* gbr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1490198621C8466700C35ECE /* gbr.cpp */; }; - B3D275CA26E9D71800543CFE /* lcd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1490199E21C8466700C35ECE /* lcd.cpp */; }; - B3D275CB26E9D71800543CFE /* mbc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019A021C8466700C35ECE /* mbc.cpp */; }; - B3D275CC26E9D71800543CFE /* apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019A821C8466700C35ECE /* apu.cpp */; }; - B3D275CD26E9D71800543CFE /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1490199A21C8466700C35ECE /* libretro.cpp */; }; - B3D275CF26E9D71800543CFE /* cheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149019AA21C8466700C35ECE /* cheat.cpp */; }; - B3D275D826E9D75000543CFE /* libtgbdual-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D275D726E9D71800543CFE /* libtgbdual-tvOS.a */; }; + B3D275C026E9D70900543CFE /* libtgbdual.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D275A126E9D5C100543CFE /* libtgbdual.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -100,13 +59,6 @@ remoteGlobalIDString = B3D275A026E9D5C100543CFE; remoteInfo = tgbdual; }; - B3D275D926E9D75000543CFE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B3C7620720783162009950E4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B3D275C326E9D71800543CFE; - remoteInfo = "tgbdual-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -119,15 +71,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D275D126E9D71800543CFE /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -179,7 +122,6 @@ B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; B3411B47276B2F9C00D85327 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3447EE6218BEDD200557ACE /* PVTGBDual.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVTGBDual.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; @@ -194,28 +136,11 @@ B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C7622720783510009950E4 /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; - B3D275A126E9D5C100543CFE /* libtgbdual-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libtgbdual-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B3D275D726E9D71800543CFE /* libtgbdual-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libtgbdual-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3D275A126E9D5C100543CFE /* libtgbdual.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtgbdual.a; sourceTree = BUILT_PRODUCTS_DIR; }; B3D275DB26E9D8A000543CFE /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B3447ECA218BEDD200557ACE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B3A3976427E6B9C800D8F433 /* PVSupport.framework in Frameworks */, - B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, - B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, - B3D275D826E9D75000543CFE /* libtgbdual-tvOS.a in Frameworks */, - B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, - B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, - B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, - B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, - B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620C20783162009950E4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -224,7 +149,7 @@ B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, - B3D275C026E9D70900543CFE /* libtgbdual-iOS.a in Frameworks */, + B3D275C026E9D70900543CFE /* libtgbdual.a in Frameworks */, B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, @@ -240,13 +165,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D275D026E9D71800543CFE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -377,9 +295,7 @@ isa = PBXGroup; children = ( B3C7621020783162009950E4 /* PVTGBDual.framework */, - B3447EE6218BEDD200557ACE /* PVTGBDual.framework */, - B3D275A126E9D5C100543CFE /* libtgbdual-iOS.a */, - B3D275D726E9D71800543CFE /* libtgbdual-tvOS.a */, + B3D275A126E9D5C100543CFE /* libtgbdual.a */, ); name = Products; sourceTree = ""; @@ -437,28 +353,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B3447ED5218BEDD200557ACE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 149019CA21C8466700C35ECE /* dmy_renderer.h in Headers */, - 149019CC21C8466700C35ECE /* libretro.h in Headers */, - 149019DE21C8466700C35ECE /* op_cb.h in Headers */, - 149019E421C8466700C35ECE /* op_normal.h in Headers */, - 1481E28221DA2F11005AD9D0 /* PVTGBDualCore+Video.h in Headers */, - 149019D621C8466700C35ECE /* renderer.h in Headers */, - 1481E27821DA2F11005AD9D0 /* PVTGBDualCore+Audio.h in Headers */, - 1481E27C21DA2F11005AD9D0 /* PVTGBDualCore+Saves.h in Headers */, - 149019DC21C8466700C35ECE /* serializer.h in Headers */, - 1481E28421DA2F11005AD9D0 /* PVTGBDualCore+Controls.h in Headers */, - 149019B021C8466700C35ECE /* gbr.h in Headers */, - B3447ED6218BEDD200557ACE /* PVTGBDual.h in Headers */, - 149019DA21C8466700C35ECE /* gb_types.h in Headers */, - 1481E28621DA2F11005AD9D0 /* PVTGBDualCore.h in Headers */, - 149019E021C8466700C35ECE /* gb.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620D20783162009950E4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -484,28 +378,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B3447EC0218BEDD200557ACE /* PVTGBDual-tvOS */ = { + B3C7620F20783162009950E4 /* PVTGBDual */ = { isa = PBXNativeTarget; - buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVTGBDual-tvOS" */; - buildPhases = ( - B3447EC1218BEDD200557ACE /* Sources */, - B3447ECA218BEDD200557ACE /* Frameworks */, - B3447ED5218BEDD200557ACE /* Headers */, - B3447EDF218BEDD200557ACE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3D275DA26E9D75000543CFE /* PBXTargetDependency */, - ); - name = "PVTGBDual-tvOS"; - productName = PVTGBDual; - productReference = B3447EE6218BEDD200557ACE /* PVTGBDual.framework */; - productType = "com.apple.product-type.framework"; - }; - B3C7620F20783162009950E4 /* PVTGBDual-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVTGBDual-iOS" */; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVTGBDual" */; buildPhases = ( B3C7620B20783162009950E4 /* Sources */, B3C7620C20783162009950E4 /* Frameworks */, @@ -517,14 +392,14 @@ dependencies = ( B3D275C226E9D70900543CFE /* PBXTargetDependency */, ); - name = "PVTGBDual-iOS"; + name = PVTGBDual; productName = PVTGBDual; productReference = B3C7621020783162009950E4 /* PVTGBDual.framework */; productType = "com.apple.product-type.framework"; }; - B3D275A026E9D5C100543CFE /* tgbdual-iOS */ = { + B3D275A026E9D5C100543CFE /* tgbdual */ = { isa = PBXNativeTarget; - buildConfigurationList = B3D275AA26E9D5C100543CFE /* Build configuration list for PBXNativeTarget "tgbdual-iOS" */; + buildConfigurationList = B3D275AA26E9D5C100543CFE /* Build configuration list for PBXNativeTarget "tgbdual" */; buildPhases = ( B3D2759D26E9D5C100543CFE /* Sources */, B3D2759E26E9D5C100543CFE /* Frameworks */, @@ -534,26 +409,9 @@ ); dependencies = ( ); - name = "tgbdual-iOS"; - productName = "tgbdual-tvOS"; - productReference = B3D275A126E9D5C100543CFE /* libtgbdual-iOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B3D275C326E9D71800543CFE /* tgbdual-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3D275D326E9D71800543CFE /* Build configuration list for PBXNativeTarget "tgbdual-tvOS" */; - buildPhases = ( - B3D275C426E9D71800543CFE /* Sources */, - B3D275D026E9D71800543CFE /* Frameworks */, - B3D275D126E9D71800543CFE /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "tgbdual-tvOS"; + name = tgbdual; productName = "tgbdual-tvOS"; - productReference = B3D275D726E9D71800543CFE /* libtgbdual-tvOS.a */; + productReference = B3D275A126E9D5C100543CFE /* libtgbdual.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -588,24 +446,13 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C7620F20783162009950E4 /* PVTGBDual-iOS */, - B3447EC0218BEDD200557ACE /* PVTGBDual-tvOS */, - B3D275A026E9D5C100543CFE /* tgbdual-iOS */, - B3D275C326E9D71800543CFE /* tgbdual-tvOS */, + B3C7620F20783162009950E4 /* PVTGBDual */, + B3D275A026E9D5C100543CFE /* tgbdual */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B3447EDF218BEDD200557ACE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 149019D021C8466700C35ECE /* link.T in Resources */, - B3447EE2218BEDD200557ACE /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620E20783162009950E4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -618,18 +465,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B3447EC1218BEDD200557ACE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1481E28021DA2F11005AD9D0 /* PVTGBDualCore+Saves.mm in Sources */, - 1481E27E21DA2F11005AD9D0 /* PVTGBDualCore+Audio.mm in Sources */, - 1481E28821DA2F11005AD9D0 /* PVTGBDualCore+Controls.mm in Sources */, - 1481E28A21DA2F11005AD9D0 /* PVTGBDualCore.mm in Sources */, - 1481E27A21DA2F11005AD9D0 /* PVTGBDualCore+Video.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3C7620B20783162009950E4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -659,36 +494,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3D275C426E9D71800543CFE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3D275C526E9D71800543CFE /* rom.cpp in Sources */, - B3D275C626E9D71800543CFE /* dmy_renderer.cpp in Sources */, - B3D275C726E9D71800543CFE /* gb.cpp in Sources */, - B3D275C826E9D71800543CFE /* cpu.cpp in Sources */, - B3D275C926E9D71800543CFE /* gbr.cpp in Sources */, - B3D275CA26E9D71800543CFE /* lcd.cpp in Sources */, - B3D275CB26E9D71800543CFE /* mbc.cpp in Sources */, - B3D275CC26E9D71800543CFE /* apu.cpp in Sources */, - B3D275CD26E9D71800543CFE /* libretro.cpp in Sources */, - B3D275CF26E9D71800543CFE /* cheat.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ B3D275C226E9D70900543CFE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3D275A026E9D5C100543CFE /* tgbdual-iOS */; + target = B3D275A026E9D5C100543CFE /* tgbdual */; targetProxy = B3D275C126E9D70900543CFE /* PBXContainerItemProxy */; }; - B3D275DA26E9D75000543CFE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B3D275C326E9D71800543CFE /* tgbdual-tvOS */; - targetProxy = B3D275D926E9D75000543CFE /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -754,7 +567,7 @@ "\"$(SRCROOT)/tgbdual-emulator/core/deps\"", "\"$(SRCROOT)/tgbdual-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_CFLAGS = ( "$(inherited)", @@ -772,7 +585,7 @@ "-fsingle-precision-constant", ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -783,6 +596,7 @@ B324C5022191A2A2009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -793,7 +607,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVTGBDual/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -804,94 +618,13 @@ PRODUCT_NAME = PVTGBDual; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Archive; }; - B324C5032191A2A2009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVTGBDual/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVTGBDual"; - PRODUCT_NAME = PVTGBDual; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Archive; - }; - B3447EE4218BEDD200557ACE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVTGBDual/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVTGBDual"; - PRODUCT_NAME = PVTGBDual; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3447EE5218BEDD200557ACE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVTGBDual/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVTGBDual"; - PRODUCT_NAME = PVTGBDual; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; B3C7621620783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -956,12 +689,12 @@ "\"$(SRCROOT)/tgbdual-emulator/core/deps\"", "\"$(SRCROOT)/tgbdual-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1030,7 +763,7 @@ "\"$(SRCROOT)/tgbdual-emulator/core/deps\"", "\"$(SRCROOT)/tgbdual-emulator/core/khronos\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( @@ -1049,7 +782,7 @@ "-fsingle-precision-constant", ); SDKROOT = iphoneos; - TVOS_DEPLOYMENT_TARGET = 12.1; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; VERSIONING_SYSTEM = "apple-generic"; @@ -1060,6 +793,7 @@ B3C7621920783162009950E4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -1070,7 +804,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVTGBDual/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1081,13 +815,17 @@ PRODUCT_NAME = PVTGBDual; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; B3C7621A20783162009950E4 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; @@ -1098,7 +836,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVTGBDual/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1109,13 +847,17 @@ PRODUCT_NAME = PVTGBDual; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Release; }; B3D275A726E9D5C100543CFE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -1130,13 +872,16 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; B3D275A826E9D5C100543CFE /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -1146,13 +891,16 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Release; }; B3D275A926E9D5C100543CFE /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_STYLE = Automatic; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -1162,76 +910,15 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - }; - name = Archive; - }; - B3D275D426E9D71800543CFE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CODE_SIGN_STYLE = Automatic; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - B3D275D526E9D71800543CFE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CODE_SIGN_STYLE = Automatic; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - B3D275D626E9D71800543CFE /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CODE_SIGN_STYLE = Automatic; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Archive; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVTGBDual-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3447EE4218BEDD200557ACE /* Debug */, - B3447EE5218BEDD200557ACE /* Release */, - B324C5032191A2A2009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVTGBDual" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1242,7 +929,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVTGBDual-iOS" */ = { + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVTGBDual" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C7621920783162009950E4 /* Debug */, @@ -1252,7 +939,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3D275AA26E9D5C100543CFE /* Build configuration list for PBXNativeTarget "tgbdual-iOS" */ = { + B3D275AA26E9D5C100543CFE /* Build configuration list for PBXNativeTarget "tgbdual" */ = { isa = XCConfigurationList; buildConfigurations = ( B3D275A726E9D5C100543CFE /* Debug */, @@ -1262,16 +949,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3D275D326E9D71800543CFE /* Build configuration list for PBXNativeTarget "tgbdual-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3D275D426E9D71800543CFE /* Debug */, - B3D275D526E9D71800543CFE /* Release */, - B3D275D626E9D71800543CFE /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = B3C7620720783162009950E4 /* Project object */; diff --git a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual-iOS.xcscheme b/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual-iOS.xcscheme deleted file mode 100644 index 8c9191ae6b..0000000000 --- a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual-iOS.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual-tvOS.xcscheme b/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual-tvOS.xcscheme deleted file mode 100644 index 39adcadb0f..0000000000 --- a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual-tvOS.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual.xcscheme b/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual.xcscheme new file mode 100644 index 0000000000..1c58630228 --- /dev/null +++ b/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/PVTGBDual.xcscheme @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/tgbdual-iOS.xcscheme b/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/tgbdual-iOS.xcscheme index bdd14ccbf6..e13e80084e 100644 --- a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/tgbdual-iOS.xcscheme +++ b/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/tgbdual-iOS.xcscheme @@ -15,8 +15,8 @@ @@ -51,8 +51,8 @@ diff --git a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/tgbdual-tvOS.xcscheme b/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/tgbdual-tvOS.xcscheme deleted file mode 100644 index 6ef03ec130..0000000000 --- a/Cores/TGBDual/PVTGBDual.xcodeproj/xcshareddata/xcschemes/tgbdual-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/TGBDual/PVTGBDual/PVTGBDual.h b/Cores/TGBDual/PVTGBDual/PVTGBDual.h index 5d74ebd1c5..1fde001396 100644 --- a/Cores/TGBDual/PVTGBDual/PVTGBDual.h +++ b/Cores/TGBDual/PVTGBDual/PVTGBDual.h @@ -6,7 +6,7 @@ // Copyright © 2018 Provenance. All rights reserved. // -#import +#import //! Project version number for PVTGBDual. FOUNDATION_EXPORT double PVTGBDualVersionNumber; diff --git a/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore+Video.mm b/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore+Video.mm index 663be8461c..423f809b65 100644 --- a/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore+Video.mm +++ b/Cores/TGBDual/PVTGBDualCore/PVTGBDualCore+Video.mm @@ -8,7 +8,7 @@ #import "PVTGBDualCore+Video.h" -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import diff --git a/Cores/TIC80/BuildFlags.xcconfig b/Cores/TIC80/BuildFlags.xcconfig new file mode 100644 index 0000000000..cc8e1c652f --- /dev/null +++ b/Cores/TIC80/BuildFlags.xcconfig @@ -0,0 +1,26 @@ +// +// BuildFlags.xcconfig +// PVTIC80 +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/TIC80/PVTIC80-Prefix.pch b/Cores/TIC80/PVTIC80-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/TIC80/PVTIC80-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/TIC80/PVTIC80.xcodeproj/project.pbxproj b/Cores/TIC80/PVTIC80.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..48d91338d7 --- /dev/null +++ b/Cores/TIC80/PVTIC80.xcodeproj/project.pbxproj @@ -0,0 +1,2312 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B367030128962E0A00F75595 /* cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B367028428962DFA00F75595 /* cart.c */; }; + B367030228962E0A00F75595 /* tic.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702BA28962DFA00F75595 /* tic.c */; }; + B367030328962E0A00F75595 /* tilesheet.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702BB28962DFA00F75595 /* tilesheet.c */; }; + B367030428962E0A00F75595 /* tools.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702B928962DFA00F75595 /* tools.c */; }; + B367030928962E1A00F75595 /* tic80_libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702DC28962DFB00F75595 /* tic80_libretro.c */; }; + B367030B28962E3600F75595 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702B628962DFA00F75595 /* sound.c */; }; + B367030C28962E3600F75595 /* languages.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702B428962DFA00F75595 /* languages.c */; }; + B367030D28962E3600F75595 /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702B228962DFA00F75595 /* io.c */; }; + B367030E28962E3600F75595 /* core.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702B528962DFA00F75595 /* core.c */; }; + B367030F28962E3600F75595 /* draw.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702B328962DFA00F75595 /* draw.c */; }; + B367031028962E3600F75595 /* draw_dep.c in Sources */ = {isa = PBXBuildFile; fileRef = B36702B728962DFA00F75595 /* draw_dep.c */; }; + B367031728962E8E00F75595 /* libTIC80.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libTIC80.a */; }; + B37022C82872553E00B3F6DA /* PVTIC80Core.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVTIC80Core.mm */; }; + B37022C92872554300B3F6DA /* PVTIC80Core.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVTIC80Core.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVTIC80.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVTIC80.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libTIC80-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libTIC80-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3EBB1FD2872B1A000EAEB37 /* libTIC80.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libTIC80.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B367031828962E8E00F75595 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B30178D2207C901D0051B93D; + remoteInfo = "TIC80-iOS"; + }; + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libTIC80.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTIC80.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libTIC80-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libTIC80-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B367017428962DF700F75595 /* CODE_OF_CONDUCT.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CODE_OF_CONDUCT.md; sourceTree = ""; }; + B367017628962DF700F75595 /* zig_sync */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = zig_sync; sourceTree = ""; }; + B367017728962DF700F75595 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B367017828962DF700F75595 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B367017928962DF700F75595 /* version.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.h.in; sourceTree = ""; }; + B367017B28962DF700F75595 /* tic80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tic80.h; sourceTree = ""; }; + B367017C28962DF700F75595 /* tic80_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tic80_config.h; sourceTree = ""; }; + B367017D28962DF700F75595 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B367017E28962DF700F75595 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B367017F28962DF700F75595 /* tic80_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tic80_types.h; sourceTree = ""; }; + B367018028962DF700F75595 /* tic80.sublime-project */ = {isa = PBXFileReference; lastKnownFileType = text; path = "tic80.sublime-project"; sourceTree = ""; }; + B367018128962DF700F75595 /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; + B367018228962DF700F75595 /* config.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.lua; sourceTree = ""; }; + B367018328962DF700F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367018428962DF700F75595 /* CommunityGuidelines.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CommunityGuidelines.md; sourceTree = ""; }; + B367018528962DF700F75595 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B367018828962DF700F75595 /* webapp.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = webapp.yml; sourceTree = ""; }; + B367018928962DF700F75595 /* build.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = build.yml; sourceTree = ""; }; + B367018C28962DF700F75595 /* build.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.zig; sourceTree = ""; }; + B367018D28962DF700F75595 /* wasmdemo.wasmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = wasmdemo.wasmp; sourceTree = ""; }; + B367018E28962DF700F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367018F28962DF700F75595 /* wasmdemo.wasm */ = {isa = PBXFileReference; lastKnownFileType = file; path = wasmdemo.wasm; sourceTree = ""; }; + B367019128962DF700F75595 /* tic80.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic80.zig; sourceTree = ""; }; + B367019228962DF700F75595 /* main.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.zig; sourceTree = ""; }; + B367019428962DF700F75595 /* Cargo.toml */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cargo.toml; sourceTree = ""; }; + B367019528962DF700F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367019728962DF700F75595 /* config.toml */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.toml; sourceTree = ""; }; + B367019828962DF700F75595 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B367019A28962DF700F75595 /* lib.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = lib.rs; sourceTree = ""; }; + B367019B28962DF700F75595 /* tic80.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic80.rs; sourceTree = ""; }; + B367019C28962DF700F75595 /* alloc.rs */ = {isa = PBXFileReference; lastKnownFileType = text; path = alloc.rs; sourceTree = ""; }; + B367019D28962DF700F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367019F28962DF800F75595 /* buildwasm.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = buildwasm.sh; sourceTree = ""; }; + B36701A028962DF800F75595 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B36701A128962DF800F75595 /* wasmdemo.wasmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = wasmdemo.wasmp; sourceTree = ""; }; + B36701A228962DF800F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B36701A328962DF800F75595 /* buildcart.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = buildcart.sh; sourceTree = ""; }; + B36701A528962DF800F75595 /* tic80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tic80.h; sourceTree = ""; }; + B36701A628962DF800F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B36701A828962DF800F75595 /* buildwasm.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = buildwasm.sh; sourceTree = ""; }; + B36701A928962DF800F75595 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B36701AA28962DF800F75595 /* wasmdemo.wasmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = wasmdemo.wasmp; sourceTree = ""; }; + B36701AB28962DF800F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B36701AC28962DF800F75595 /* buildcart.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = buildcart.sh; sourceTree = ""; }; + B36701AD28962DF800F75595 /* dub.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = dub.json; sourceTree = ""; }; + B36701AF28962DF800F75595 /* main.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = main.d; sourceTree = ""; }; + B36701B028962DF800F75595 /* tic80.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = tic80.d; sourceTree = ""; }; + B36701B328962DF800F75595 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + B36701B528962DF800F75595 /* xplode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xplode.c; sourceTree = ""; }; + B36701B628962DF800F75595 /* wasmp2cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wasmp2cart.c; sourceTree = ""; }; + B36701B728962DF800F75595 /* bin2txt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bin2txt.c; sourceTree = ""; }; + B36701B828962DF800F75595 /* cart2prj.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cart2prj.c; sourceTree = ""; }; + B36701B928962DF800F75595 /* prj2cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = prj2cart.c; sourceTree = ""; }; + B36701BA28962DF800F75595 /* cart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cart.png; sourceTree = ""; }; + B36701BC28962DF800F75595 /* toolchain.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = toolchain.cmake; sourceTree = ""; }; + B36701BE28962DF800F75595 /* config.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.txt; sourceTree = ""; }; + B36701BF28962DF800F75595 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B36701C028962DF800F75595 /* Dockerfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dockerfile; sourceTree = ""; }; + B36701C128962DF800F75595 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B36701C228962DF800F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B36701C328962DF800F75595 /* circle.patch */ = {isa = PBXFileReference; lastKnownFileType = text; path = circle.patch; sourceTree = ""; }; + B36701C528962DF800F75595 /* toolchain.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = toolchain.cmake; sourceTree = ""; }; + B36701C628962DF800F75595 /* Dockerfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dockerfile; sourceTree = ""; }; + B36701C828962DF800F75595 /* tic80.webmanifest */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic80.webmanifest; sourceTree = ""; }; + B36701C928962DF800F75595 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + B36701CA28962DF800F75595 /* tic80-192.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tic80-192.png"; sourceTree = ""; }; + B36701CB28962DF800F75595 /* tic80-180.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tic80-180.png"; sourceTree = ""; }; + B36701CC28962DF800F75595 /* serviceworker.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = serviceworker.js; sourceTree = ""; }; + B36701CD28962DF800F75595 /* tic80-512.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tic80-512.png"; sourceTree = ""; }; + B36701CF28962DF800F75595 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + B36701D128962DF800F75595 /* tic_default.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = tic_default.rb; sourceTree = ""; }; + B36701D228962DF800F75595 /* tic.gembox */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic.gembox; sourceTree = ""; }; + B36701D328962DF800F75595 /* tic_android.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = tic_android.rb; sourceTree = ""; }; + B36701D428962DF800F75595 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B36701D628962DF800F75595 /* merge_static.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = merge_static.sh; sourceTree = ""; }; + B36701D828962DF800F75595 /* tic80-sokol.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "tic80-sokol.plist.in"; sourceTree = ""; }; + B36701D928962DF800F75595 /* tic80.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = tic80.icns; sourceTree = ""; }; + B36701DA28962DF800F75595 /* tic80.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = tic80.plist.in; sourceTree = ""; }; + B36701DB28962DF800F75595 /* tic80pro-sokol.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "tic80pro-sokol.plist.in"; sourceTree = ""; }; + B36701DC28962DF800F75595 /* tic80pro.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = tic80pro.plist.in; sourceTree = ""; }; + B36701DE28962DF800F75595 /* tic80.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = tic80.xml; sourceTree = ""; }; + B36701DF28962DF800F75595 /* tic80.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tic80.png; sourceTree = ""; }; + B36701E028962DF800F75595 /* com.tic80.TIC_80.metainfo.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = com.tic80.TIC_80.metainfo.xml; sourceTree = ""; }; + B36701E128962DF800F75595 /* tic80.desktop.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic80.desktop.in; sourceTree = ""; }; + B36701E428962DF900F75595 /* proguard-rules.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = "proguard-rules.pro"; sourceTree = ""; }; + B36701E528962DF900F75595 /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B36701EA28962DF900F75595 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B36701EC28962DF900F75595 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B36701EE28962DF900F75595 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B36701F028962DF900F75595 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B36701F228962DF900F75595 /* colors.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = colors.xml; sourceTree = ""; }; + B36701F328962DF900F75595 /* styles.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = styles.xml; sourceTree = ""; }; + B36701F428962DF900F75595 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B36701F628962DF900F75595 /* ic_launcher.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_launcher.png; sourceTree = ""; }; + B36701F728962DF900F75595 /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; + B36701FC28962DF900F75595 /* SDLAudioManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLAudioManager.java; sourceTree = ""; }; + B36701FD28962DF900F75595 /* SDLControllerManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLControllerManager.java; sourceTree = ""; }; + B36701FE28962DF900F75595 /* HIDDevice.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDevice.java; sourceTree = ""; }; + B36701FF28962DF900F75595 /* HIDDeviceBLESteamController.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceBLESteamController.java; sourceTree = ""; }; + B367020028962DF900F75595 /* HIDDeviceUSB.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceUSB.java; sourceTree = ""; }; + B367020128962DF900F75595 /* SDL.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDL.java; sourceTree = ""; }; + B367020228962DF900F75595 /* SDLActivity.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SDLActivity.java; sourceTree = ""; }; + B367020328962DF900F75595 /* HIDDeviceManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = HIDDeviceManager.java; sourceTree = ""; }; + B367020728962DF900F75595 /* TICDocumentsProvider.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = TICDocumentsProvider.java; sourceTree = ""; }; + B367020828962DF900F75595 /* TIC.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = TIC.java; sourceTree = ""; }; + B367020928962DF900F75595 /* my-release-key.keystore */ = {isa = PBXFileReference; lastKnownFileType = file; path = "my-release-key.keystore"; sourceTree = ""; }; + B367020A28962DF900F75595 /* Dockerfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dockerfile; sourceTree = ""; }; + B367020B28962DF900F75595 /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; + B367020E28962DF900F75595 /* gradle-wrapper.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "gradle-wrapper.jar"; sourceTree = ""; }; + B367020F28962DF900F75595 /* gradle-wrapper.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gradle-wrapper.properties"; sourceTree = ""; }; + B367021028962DF900F75595 /* gradlew */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew; sourceTree = ""; }; + B367021128962DF900F75595 /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B367021228962DF900F75595 /* gradle.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradle.properties; sourceTree = ""; }; + B367021328962DF900F75595 /* gradlew.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew.bat; sourceTree = ""; }; + B367021428962DF900F75595 /* settings.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = settings.gradle; sourceTree = ""; }; + B367021628962DF900F75595 /* icon.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon.ico; sourceTree = ""; }; + B367021728962DF900F75595 /* tic80.rc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic80.rc.in; sourceTree = ""; }; + B367021928962DF900F75595 /* wasmdemo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = wasmdemo.tic.dat; sourceTree = ""; }; + B367021A28962DF900F75595 /* moondemo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = moondemo.tic.dat; sourceTree = ""; }; + B367021B28962DF900F75595 /* jsdemo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = jsdemo.tic.dat; sourceTree = ""; }; + B367021C28962DF900F75595 /* fire.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = fire.tic.dat; sourceTree = ""; }; + B367021D28962DF900F75595 /* wrendemo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = wrendemo.tic.dat; sourceTree = ""; }; + B367021E28962DF900F75595 /* palette.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = palette.tic.dat; sourceTree = ""; }; + B367021F28962DF900F75595 /* rubymark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = rubymark.tic.dat; sourceTree = ""; }; + B367022028962DF900F75595 /* p3d.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = p3d.tic.dat; sourceTree = ""; }; + B367022128962DF900F75595 /* car.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = car.tic.dat; sourceTree = ""; }; + B367022228962DF900F75595 /* squirreldemo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = squirreldemo.tic.dat; sourceTree = ""; }; + B367022328962DF900F75595 /* cart.png.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = cart.png.dat; sourceTree = ""; }; + B367022428962DF900F75595 /* font.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = font.tic.dat; sourceTree = ""; }; + B367022528962DF900F75595 /* luamark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = luamark.tic.dat; sourceTree = ""; }; + B367022628962DF900F75595 /* benchmark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = benchmark.tic.dat; sourceTree = ""; }; + B367022728962DF900F75595 /* quest.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = quest.tic.dat; sourceTree = ""; }; + B367022828962DF900F75595 /* squirrelmark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = squirrelmark.tic.dat; sourceTree = ""; }; + B367022928962DF900F75595 /* bpp.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = bpp.tic.dat; sourceTree = ""; }; + B367022A28962DF900F75595 /* config.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.tic.dat; sourceTree = ""; }; + B367022B28962DF900F75595 /* tetris.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = tetris.tic.dat; sourceTree = ""; }; + B367022C28962DF900F75595 /* sfx.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = sfx.tic.dat; sourceTree = ""; }; + B367022D28962DF900F75595 /* luademo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = luademo.tic.dat; sourceTree = ""; }; + B367022E28962DF900F75595 /* music.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = music.tic.dat; sourceTree = ""; }; + B367022F28962DF900F75595 /* fenneldemo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = fenneldemo.tic.dat; sourceTree = ""; }; + B367023028962DF900F75595 /* wrenmark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = wrenmark.tic.dat; sourceTree = ""; }; + B367023128962DF900F75595 /* wasmmark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = wasmmark.tic.dat; sourceTree = ""; }; + B367023228962DF900F75595 /* moonmark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = moonmark.tic.dat; sourceTree = ""; }; + B367023328962DF900F75595 /* jsmark.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = jsmark.tic.dat; sourceTree = ""; }; + B367023428962DF900F75595 /* rubydemo.tic.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = rubydemo.tic.dat; sourceTree = ""; }; + B367023628962DF900F75595 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B367023728962DF900F75595 /* Dockerfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dockerfile; sourceTree = ""; }; + B367023828962DF900F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367023A28962DF900F75595 /* kbd_display.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = kbd_display.png; sourceTree = ""; }; + B367023B28962DF900F75595 /* elf_to_3dsx.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = elf_to_3dsx.sh; sourceTree = ""; }; + B367023D28962DF900F75595 /* palette.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = palette.lua; sourceTree = ""; }; + B367023E28962DF900F75595 /* quest.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = quest.lua; sourceTree = ""; }; + B367023F28962DF900F75595 /* rubydemo.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = rubydemo.rb; sourceTree = ""; }; + B367024028962DF900F75595 /* fire.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = fire.lua; sourceTree = ""; }; + B367024128962DF900F75595 /* tetris.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = tetris.lua; sourceTree = ""; }; + B367024228962DF900F75595 /* squirreldemo.nut */ = {isa = PBXFileReference; lastKnownFileType = text; path = squirreldemo.nut; sourceTree = ""; }; + B367024428962DFA00F75595 /* build.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.zig; sourceTree = ""; }; + B367024528962DFA00F75595 /* wasmdemo.wasmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = wasmdemo.wasmp; sourceTree = ""; }; + B367024628962DFA00F75595 /* wasmdemo.wasm */ = {isa = PBXFileReference; lastKnownFileType = file; path = wasmdemo.wasm; sourceTree = ""; }; + B367024828962DFA00F75595 /* tic80.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic80.zig; sourceTree = ""; }; + B367024928962DFA00F75595 /* main.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.zig; sourceTree = ""; }; + B367024A28962DFA00F75595 /* music.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = music.lua; sourceTree = ""; }; + B367024C28962DFA00F75595 /* wrenmark.wren */ = {isa = PBXFileReference; lastKnownFileType = text; path = wrenmark.wren; sourceTree = ""; }; + B367024D28962DFA00F75595 /* jsmark.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = jsmark.js; sourceTree = ""; }; + B367024E28962DFA00F75595 /* luamark.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = luamark.lua; sourceTree = ""; }; + B367024F28962DFA00F75595 /* moonmark.moon */ = {isa = PBXFileReference; lastKnownFileType = text; path = moonmark.moon; sourceTree = ""; }; + B367025128962DFA00F75595 /* build.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.zig; sourceTree = ""; }; + B367025228962DFA00F75595 /* wasmmark.wasm */ = {isa = PBXFileReference; lastKnownFileType = file; path = wasmmark.wasm; sourceTree = ""; }; + B367025328962DFA00F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B367025428962DFA00F75595 /* wasmmark.wasmp */ = {isa = PBXFileReference; lastKnownFileType = text; path = wasmmark.wasmp; sourceTree = ""; }; + B367025628962DFA00F75595 /* tic80.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = tic80.zig; sourceTree = ""; }; + B367025728962DFA00F75595 /* main.zig */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.zig; sourceTree = ""; }; + B367025828962DFA00F75595 /* rubymark.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = rubymark.rb; sourceTree = ""; }; + B367025928962DFA00F75595 /* squirrelmark.nut */ = {isa = PBXFileReference; lastKnownFileType = text; path = squirrelmark.nut; sourceTree = ""; }; + B367025A28962DFA00F75595 /* bpp.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = bpp.lua; sourceTree = ""; }; + B367025B28962DFA00F75595 /* moondemo.moon */ = {isa = PBXFileReference; lastKnownFileType = text; path = moondemo.moon; sourceTree = ""; }; + B367025C28962DFA00F75595 /* font.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = font.lua; sourceTree = ""; }; + B367025D28962DFA00F75595 /* sfx.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = sfx.lua; sourceTree = ""; }; + B367025E28962DFA00F75595 /* jsdemo.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = jsdemo.js; sourceTree = ""; }; + B367025F28962DFA00F75595 /* car.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = car.lua; sourceTree = ""; }; + B367026028962DFA00F75595 /* benchmark.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = benchmark.lua; sourceTree = ""; }; + B367026128962DFA00F75595 /* fenneldemo.fnl */ = {isa = PBXFileReference; lastKnownFileType = text; path = fenneldemo.fnl; sourceTree = ""; }; + B367026228962DFA00F75595 /* luademo.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = luademo.lua; sourceTree = ""; }; + B367026328962DFA00F75595 /* p3d.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = p3d.lua; sourceTree = ""; }; + B367026428962DFA00F75595 /* wrendemo.wren */ = {isa = PBXFileReference; lastKnownFileType = text; path = wrendemo.wren; sourceTree = ""; }; + B367026528962DFA00F75595 /* Dockerfile.dapper */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dockerfile.dapper; sourceTree = ""; }; + B367027728962DFA00F75595 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B367027A28962DFA00F75595 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B367027B28962DFA00F75595 /* fennel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fennel.h; sourceTree = ""; }; + B367027C28962DFA00F75595 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B367027D28962DFA00F75595 /* fennel.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = fennel.lua; sourceTree = ""; }; + B367028228962DFA00F75595 /* SECURITY.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = SECURITY.md; sourceTree = ""; }; + B367028428962DFA00F75595 /* cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cart.c; sourceTree = ""; }; + B367028628962DFA00F75595 /* demos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = demos.c; sourceTree = ""; }; + B367028728962DFA00F75595 /* studio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = studio.h; sourceTree = ""; }; + B367028828962DFA00F75595 /* net.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net.h; sourceTree = ""; }; + B367028928962DFA00F75595 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B367028B28962DFA00F75595 /* music.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = music.h; sourceTree = ""; }; + B367028C28962DFA00F75595 /* sprite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sprite.c; sourceTree = ""; }; + B367028D28962DFA00F75595 /* sfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sfx.c; sourceTree = ""; }; + B367028E28962DFA00F75595 /* map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = map.h; sourceTree = ""; }; + B367028F28962DFA00F75595 /* code.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = code.h; sourceTree = ""; }; + B367029028962DFA00F75595 /* world.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = world.c; sourceTree = ""; }; + B367029128962DFA00F75595 /* sfx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sfx.h; sourceTree = ""; }; + B367029228962DFA00F75595 /* sprite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sprite.h; sourceTree = ""; }; + B367029328962DFA00F75595 /* music.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = music.c; sourceTree = ""; }; + B367029428962DFA00F75595 /* map.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = map.c; sourceTree = ""; }; + B367029528962DFA00F75595 /* world.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = world.h; sourceTree = ""; }; + B367029628962DFA00F75595 /* code.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = code.c; sourceTree = ""; }; + B367029728962DFA00F75595 /* project.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = project.c; sourceTree = ""; }; + B367029828962DFA00F75595 /* fs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fs.c; sourceTree = ""; }; + B367029A28962DFA00F75595 /* surf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = surf.h; sourceTree = ""; }; + B367029B28962DFA00F75595 /* console.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = ""; }; + B367029C28962DFA00F75595 /* mainmenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mainmenu.h; sourceTree = ""; }; + B367029D28962DFA00F75595 /* menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; + B367029E28962DFA00F75595 /* run.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = run.c; sourceTree = ""; }; + B367029F28962DFA00F75595 /* start.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = start.h; sourceTree = ""; }; + B36702A028962DFA00F75595 /* mainmenu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mainmenu.c; sourceTree = ""; }; + B36702A128962DFA00F75595 /* console.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = console.c; sourceTree = ""; }; + B36702A228962DFA00F75595 /* surf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = surf.c; sourceTree = ""; }; + B36702A328962DFA00F75595 /* menu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = ""; }; + B36702A428962DFA00F75595 /* run.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = run.h; sourceTree = ""; }; + B36702A528962DFA00F75595 /* start.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = start.c; sourceTree = ""; }; + B36702A628962DFA00F75595 /* studio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = studio.c; sourceTree = ""; }; + B36702A728962DFA00F75595 /* demos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = demos.h; sourceTree = ""; }; + B36702A828962DFA00F75595 /* config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = ""; }; + B36702A928962DFA00F75595 /* net.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net.c; sourceTree = ""; }; + B36702AA28962DFA00F75595 /* anim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = anim.h; sourceTree = ""; }; + B36702AB28962DFA00F75595 /* project.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = project.h; sourceTree = ""; }; + B36702AC28962DFA00F75595 /* system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = system.h; sourceTree = ""; }; + B36702AD28962DFA00F75595 /* fs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fs.h; sourceTree = ""; }; + B36702AE28962DFA00F75595 /* tic_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tic_assert.h; sourceTree = ""; }; + B36702B028962DFA00F75595 /* altfont.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = altfont.inl; sourceTree = ""; }; + B36702B128962DFA00F75595 /* core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; + B36702B228962DFA00F75595 /* io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = io.c; sourceTree = ""; }; + B36702B328962DFA00F75595 /* draw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = draw.c; sourceTree = ""; }; + B36702B428962DFA00F75595 /* languages.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = languages.c; sourceTree = ""; }; + B36702B528962DFA00F75595 /* core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = core.c; sourceTree = ""; }; + B36702B628962DFA00F75595 /* sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sound.c; sourceTree = ""; }; + B36702B728962DFA00F75595 /* draw_dep.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = draw_dep.c; sourceTree = ""; }; + B36702B828962DFA00F75595 /* font.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = font.inl; sourceTree = ""; }; + B36702B928962DFA00F75595 /* tools.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tools.c; sourceTree = ""; }; + B36702BA28962DFA00F75595 /* tic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tic.c; sourceTree = ""; }; + B36702BB28962DFA00F75595 /* tilesheet.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tilesheet.c; sourceTree = ""; }; + B36702BD28962DFA00F75595 /* history.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = history.c; sourceTree = ""; }; + B36702BE28962DFA00F75595 /* gif.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gif.h; sourceTree = ""; }; + B36702BF28962DFA00F75595 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B36702C028962DFA00F75595 /* png.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; + B36702C128962DFA00F75595 /* history.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = history.h; sourceTree = ""; }; + B36702C228962DFA00F75595 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B36702C328962DFA00F75595 /* gif.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gif.c; sourceTree = ""; }; + B36702C428962DFB00F75595 /* png.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = png.c; sourceTree = ""; }; + B36702C528962DFB00F75595 /* defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = defines.h; sourceTree = ""; }; + B36702C628962DFB00F75595 /* api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = api.h; sourceTree = ""; }; + B36702C928962DFB00F75595 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B36702CA28962DFB00F75595 /* utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = utils.cpp; sourceTree = ""; }; + B36702CB28962DFB00F75595 /* stdlib_app.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdlib_app.h; sourceTree = ""; }; + B36702CC28962DFB00F75595 /* customchargenerator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = customchargenerator.h; sourceTree = ""; }; + B36702CD28962DFB00F75595 /* customscreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = customscreen.h; sourceTree = ""; }; + B36702CE28962DFB00F75595 /* kernel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = kernel.cpp; sourceTree = ""; }; + B36702CF28962DFB00F75595 /* customscreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = customscreen.cpp; sourceTree = ""; }; + B36702D028962DFB00F75595 /* keycodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keycodes.h; sourceTree = ""; }; + B36702D128962DFB00F75595 /* gamepads.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gamepads.cpp; sourceTree = ""; }; + B36702D228962DFB00F75595 /* gamepads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gamepads.h; sourceTree = ""; }; + B36702D328962DFB00F75595 /* syscore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = syscore.h; sourceTree = ""; }; + B36702D428962DFB00F75595 /* kernel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kernel.h; sourceTree = ""; }; + B36702D528962DFB00F75595 /* customfont.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = customfont.h; sourceTree = ""; }; + B36702D628962DFB00F75595 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B36702D728962DFB00F75595 /* customchargenerator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = customchargenerator.cpp; sourceTree = ""; }; + B36702D928962DFB00F75595 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B36702DA28962DFB00F75595 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B36702DB28962DFB00F75595 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B36702DC28962DFB00F75595 /* tic80_libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tic80_libretro.c; sourceTree = ""; }; + B36702DF28962DFB00F75595 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B36702E128962DFB00F75595 /* kbdlabels.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = kbdlabels.inl; sourceTree = ""; }; + B36702E228962DFB00F75595 /* kbdlayout.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = kbdlayout.inl; sourceTree = ""; }; + B36702E328962DFB00F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B36702E428962DFB00F75595 /* keycodes.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = keycodes.inl; sourceTree = ""; }; + B36702E528962DFB00F75595 /* player.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = player.c; sourceTree = ""; }; + B36702E728962DFB00F75595 /* sokol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sokol.h; sourceTree = ""; }; + B36702E828962DFB00F75595 /* sokol_impl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = sokol_impl.m; sourceTree = ""; }; + B36702E928962DFB00F75595 /* sokol_impl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sokol_impl.c; sourceTree = ""; }; + B36702EA28962DFB00F75595 /* sokol.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sokol.c; sourceTree = ""; }; + B36702EB28962DFB00F75595 /* player.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = player.c; sourceTree = ""; }; + B36702EC28962DFB00F75595 /* sokol_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sokol_gfx.c; sourceTree = ""; }; + B36702EE28962DFB00F75595 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B36702EF28962DFB00F75595 /* keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard.c; sourceTree = ""; }; + B36702F028962DFB00F75595 /* utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = ""; }; + B36702F128962DFB00F75595 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B36702F228962DFB00F75595 /* keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard.h; sourceTree = ""; }; + B36702F328962DFB00F75595 /* cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cart.h; sourceTree = ""; }; + B36702F428962DFB00F75595 /* tic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tic.h; sourceTree = ""; }; + B36702F528962DFB00F75595 /* tools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tools.h; sourceTree = ""; }; + B36702F728962DFB00F75595 /* mruby.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mruby.c; sourceTree = ""; }; + B36702F828962DFB00F75595 /* fennel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fennel.c; sourceTree = ""; }; + B36702F928962DFB00F75595 /* lua.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lua.c; sourceTree = ""; }; + B36702FA28962DFB00F75595 /* moonscript.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = moonscript.c; sourceTree = ""; }; + B36702FB28962DFB00F75595 /* squirrel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = squirrel.c; sourceTree = ""; }; + B36702FC28962DFB00F75595 /* lua_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lua_api.h; sourceTree = ""; }; + B36702FD28962DFB00F75595 /* wren.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wren.c; sourceTree = ""; }; + B36702FE28962DFB00F75595 /* wasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wasm.c; sourceTree = ""; }; + B36702FF28962DFB00F75595 /* js.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = js.c; sourceTree = ""; }; + B367030028962DFB00F75595 /* tilesheet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tilesheet.h; sourceTree = ""; }; + B37022BD287253B300B3F6DA /* PVTIC80-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVTIC80-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVTIC80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVTIC80.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVTIC80Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVTIC80Core.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVTIC80Core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVTIC80Core.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVTIC80.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVTIC80.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1FD2872B1A000EAEB37 /* libTIC80.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B367031728962E8E00F75595 /* libTIC80.a in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libTIC80-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B367017328962DF700F75595 /* TIC-80 */ = { + isa = PBXGroup; + children = ( + B367018528962DF700F75595 /* .gitignore */, + B367018128962DF700F75595 /* .gitmodules */, + B367017828962DF700F75595 /* LICENSE */, + B367026528962DFA00F75595 /* Dockerfile.dapper */, + B367017928962DF700F75595 /* version.h.in */, + B367018228962DF700F75595 /* config.lua */, + B367017428962DF700F75595 /* CODE_OF_CONDUCT.md */, + B367018428962DF700F75595 /* CommunityGuidelines.md */, + B367018328962DF700F75595 /* README.md */, + B367028228962DFA00F75595 /* SECURITY.md */, + B367018028962DF700F75595 /* tic80.sublime-project */, + B367017728962DF700F75595 /* CMakeLists.txt */, + B367018628962DF700F75595 /* .github */, + B36701B128962DF800F75595 /* build */, + B367023C28962DF900F75595 /* demos */, + B367017A28962DF700F75595 /* include */, + B367028328962DFA00F75595 /* src */, + B367018A28962DF700F75595 /* templates */, + B367017528962DF700F75595 /* tools */, + B367026628962DFA00F75595 /* vendor */, + ); + path = "TIC-80"; + sourceTree = ""; + }; + B367017528962DF700F75595 /* tools */ = { + isa = PBXGroup; + children = ( + B367017628962DF700F75595 /* zig_sync */, + ); + path = tools; + sourceTree = ""; + }; + B367017A28962DF700F75595 /* include */ = { + isa = PBXGroup; + children = ( + B367017B28962DF700F75595 /* tic80.h */, + B367017C28962DF700F75595 /* tic80_config.h */, + B367017D28962DF700F75595 /* retro_inline.h */, + B367017E28962DF700F75595 /* retro_endianness.h */, + B367017F28962DF700F75595 /* tic80_types.h */, + ); + path = include; + sourceTree = ""; + }; + B367018628962DF700F75595 /* .github */ = { + isa = PBXGroup; + children = ( + B367018728962DF700F75595 /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B367018728962DF700F75595 /* workflows */ = { + isa = PBXGroup; + children = ( + B367018828962DF700F75595 /* webapp.yml */, + B367018928962DF700F75595 /* build.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B367018A28962DF700F75595 /* templates */ = { + isa = PBXGroup; + children = ( + B367018B28962DF700F75595 /* zig */, + B367019328962DF700F75595 /* rust */, + B367019D28962DF700F75595 /* README.md */, + B367019E28962DF800F75595 /* c */, + B36701A728962DF800F75595 /* d */, + ); + path = templates; + sourceTree = ""; + }; + B367018B28962DF700F75595 /* zig */ = { + isa = PBXGroup; + children = ( + B367018C28962DF700F75595 /* build.zig */, + B367018D28962DF700F75595 /* wasmdemo.wasmp */, + B367018E28962DF700F75595 /* README.md */, + B367018F28962DF700F75595 /* wasmdemo.wasm */, + B367019028962DF700F75595 /* src */, + ); + path = zig; + sourceTree = ""; + }; + B367019028962DF700F75595 /* src */ = { + isa = PBXGroup; + children = ( + B367019128962DF700F75595 /* tic80.zig */, + B367019228962DF700F75595 /* main.zig */, + ); + path = src; + sourceTree = ""; + }; + B367019328962DF700F75595 /* rust */ = { + isa = PBXGroup; + children = ( + B367019428962DF700F75595 /* Cargo.toml */, + B367019528962DF700F75595 /* README.md */, + B367019628962DF700F75595 /* .cargo */, + B367019828962DF700F75595 /* .gitignore */, + B367019928962DF700F75595 /* src */, + ); + path = rust; + sourceTree = ""; + }; + B367019628962DF700F75595 /* .cargo */ = { + isa = PBXGroup; + children = ( + B367019728962DF700F75595 /* config.toml */, + ); + path = .cargo; + sourceTree = ""; + }; + B367019928962DF700F75595 /* src */ = { + isa = PBXGroup; + children = ( + B367019A28962DF700F75595 /* lib.rs */, + B367019B28962DF700F75595 /* tic80.rs */, + B367019C28962DF700F75595 /* alloc.rs */, + ); + path = src; + sourceTree = ""; + }; + B367019E28962DF800F75595 /* c */ = { + isa = PBXGroup; + children = ( + B367019F28962DF800F75595 /* buildwasm.sh */, + B36701A028962DF800F75595 /* Makefile */, + B36701A128962DF800F75595 /* wasmdemo.wasmp */, + B36701A228962DF800F75595 /* README.md */, + B36701A328962DF800F75595 /* buildcart.sh */, + B36701A428962DF800F75595 /* src */, + ); + path = c; + sourceTree = ""; + }; + B36701A428962DF800F75595 /* src */ = { + isa = PBXGroup; + children = ( + B36701A528962DF800F75595 /* tic80.h */, + B36701A628962DF800F75595 /* main.c */, + ); + path = src; + sourceTree = ""; + }; + B36701A728962DF800F75595 /* d */ = { + isa = PBXGroup; + children = ( + B36701A828962DF800F75595 /* buildwasm.sh */, + B36701A928962DF800F75595 /* Makefile */, + B36701AA28962DF800F75595 /* wasmdemo.wasmp */, + B36701AB28962DF800F75595 /* README.md */, + B36701AC28962DF800F75595 /* buildcart.sh */, + B36701AD28962DF800F75595 /* dub.json */, + B36701AE28962DF800F75595 /* src */, + ); + path = d; + sourceTree = ""; + }; + B36701AE28962DF800F75595 /* src */ = { + isa = PBXGroup; + children = ( + B36701AF28962DF800F75595 /* main.d */, + B36701B028962DF800F75595 /* tic80.d */, + ); + path = src; + sourceTree = ""; + }; + B36701B128962DF800F75595 /* build */ = { + isa = PBXGroup; + children = ( + B36701B228962DF800F75595 /* html-export */, + B36701B428962DF800F75595 /* tools */, + B36701BA28962DF800F75595 /* cart.png */, + B36701BB28962DF800F75595 /* baremetalpi */, + B36701C428962DF800F75595 /* rpi */, + B36701C728962DF800F75595 /* webapp */, + B36701CE28962DF800F75595 /* html */, + B36701D028962DF800F75595 /* mruby */, + B36701D528962DF800F75595 /* libretro */, + B36701D728962DF800F75595 /* macosx */, + B36701DD28962DF800F75595 /* linux */, + B36701E228962DF800F75595 /* android */, + B367021528962DF900F75595 /* windows */, + B367021828962DF900F75595 /* assets */, + B367023528962DF900F75595 /* n3ds */, + ); + path = build; + sourceTree = ""; + }; + B36701B228962DF800F75595 /* html-export */ = { + isa = PBXGroup; + children = ( + B36701B328962DF800F75595 /* index.html */, + ); + path = "html-export"; + sourceTree = ""; + }; + B36701B428962DF800F75595 /* tools */ = { + isa = PBXGroup; + children = ( + B36701B528962DF800F75595 /* xplode.c */, + B36701B628962DF800F75595 /* wasmp2cart.c */, + B36701B728962DF800F75595 /* bin2txt.c */, + B36701B828962DF800F75595 /* cart2prj.c */, + B36701B928962DF800F75595 /* prj2cart.c */, + ); + path = tools; + sourceTree = ""; + }; + B36701BB28962DF800F75595 /* baremetalpi */ = { + isa = PBXGroup; + children = ( + B36701BC28962DF800F75595 /* toolchain.cmake */, + B36701BD28962DF800F75595 /* boot */, + B36701C028962DF800F75595 /* Dockerfile */, + B36701C128962DF800F75595 /* Makefile */, + B36701C228962DF800F75595 /* README.md */, + B36701C328962DF800F75595 /* circle.patch */, + ); + path = baremetalpi; + sourceTree = ""; + }; + B36701BD28962DF800F75595 /* boot */ = { + isa = PBXGroup; + children = ( + B36701BE28962DF800F75595 /* config.txt */, + B36701BF28962DF800F75595 /* Makefile */, + ); + path = boot; + sourceTree = ""; + }; + B36701C428962DF800F75595 /* rpi */ = { + isa = PBXGroup; + children = ( + B36701C528962DF800F75595 /* toolchain.cmake */, + B36701C628962DF800F75595 /* Dockerfile */, + ); + path = rpi; + sourceTree = ""; + }; + B36701C728962DF800F75595 /* webapp */ = { + isa = PBXGroup; + children = ( + B36701C828962DF800F75595 /* tic80.webmanifest */, + B36701C928962DF800F75595 /* index.html */, + B36701CA28962DF800F75595 /* tic80-192.png */, + B36701CB28962DF800F75595 /* tic80-180.png */, + B36701CC28962DF800F75595 /* serviceworker.js */, + B36701CD28962DF800F75595 /* tic80-512.png */, + ); + path = webapp; + sourceTree = ""; + }; + B36701CE28962DF800F75595 /* html */ = { + isa = PBXGroup; + children = ( + B36701CF28962DF800F75595 /* index.html */, + ); + path = html; + sourceTree = ""; + }; + B36701D028962DF800F75595 /* mruby */ = { + isa = PBXGroup; + children = ( + B36701D128962DF800F75595 /* tic_default.rb */, + B36701D228962DF800F75595 /* tic.gembox */, + B36701D328962DF800F75595 /* tic_android.rb */, + B36701D428962DF800F75595 /* .gitignore */, + ); + path = mruby; + sourceTree = ""; + }; + B36701D528962DF800F75595 /* libretro */ = { + isa = PBXGroup; + children = ( + B36701D628962DF800F75595 /* merge_static.sh */, + ); + path = libretro; + sourceTree = ""; + }; + B36701D728962DF800F75595 /* macosx */ = { + isa = PBXGroup; + children = ( + B36701D828962DF800F75595 /* tic80-sokol.plist.in */, + B36701D928962DF800F75595 /* tic80.icns */, + B36701DA28962DF800F75595 /* tic80.plist.in */, + B36701DB28962DF800F75595 /* tic80pro-sokol.plist.in */, + B36701DC28962DF800F75595 /* tic80pro.plist.in */, + ); + path = macosx; + sourceTree = ""; + }; + B36701DD28962DF800F75595 /* linux */ = { + isa = PBXGroup; + children = ( + B36701DE28962DF800F75595 /* tic80.xml */, + B36701DF28962DF800F75595 /* tic80.png */, + B36701E028962DF800F75595 /* com.tic80.TIC_80.metainfo.xml */, + B36701E128962DF800F75595 /* tic80.desktop.in */, + ); + path = linux; + sourceTree = ""; + }; + B36701E228962DF800F75595 /* android */ = { + isa = PBXGroup; + children = ( + B36701E328962DF900F75595 /* app */, + B367020928962DF900F75595 /* my-release-key.keystore */, + B367020A28962DF900F75595 /* Dockerfile */, + B367020B28962DF900F75595 /* readme.md */, + B367020C28962DF900F75595 /* gradle */, + B367021028962DF900F75595 /* gradlew */, + B367021128962DF900F75595 /* build.gradle */, + B367021228962DF900F75595 /* gradle.properties */, + B367021328962DF900F75595 /* gradlew.bat */, + B367021428962DF900F75595 /* settings.gradle */, + ); + path = android; + sourceTree = ""; + }; + B36701E328962DF900F75595 /* app */ = { + isa = PBXGroup; + children = ( + B36701E428962DF900F75595 /* proguard-rules.pro */, + B36701E528962DF900F75595 /* build.gradle */, + B36701E628962DF900F75595 /* src */, + ); + path = app; + sourceTree = ""; + }; + B36701E628962DF900F75595 /* src */ = { + isa = PBXGroup; + children = ( + B36701E728962DF900F75595 /* main */, + ); + path = src; + sourceTree = ""; + }; + B36701E728962DF900F75595 /* main */ = { + isa = PBXGroup; + children = ( + B36701E828962DF900F75595 /* res */, + B36701F728962DF900F75595 /* AndroidManifest.xml */, + B36701F828962DF900F75595 /* java */, + ); + path = main; + sourceTree = ""; + }; + B36701E828962DF900F75595 /* res */ = { + isa = PBXGroup; + children = ( + B36701E928962DF900F75595 /* mipmap-mdpi */, + B36701EB28962DF900F75595 /* mipmap-hdpi */, + B36701ED28962DF900F75595 /* mipmap-xxxhdpi */, + B36701EF28962DF900F75595 /* mipmap-xxhdpi */, + B36701F128962DF900F75595 /* values */, + B36701F528962DF900F75595 /* mipmap-xhdpi */, + ); + path = res; + sourceTree = ""; + }; + B36701E928962DF900F75595 /* mipmap-mdpi */ = { + isa = PBXGroup; + children = ( + B36701EA28962DF900F75595 /* ic_launcher.png */, + ); + path = "mipmap-mdpi"; + sourceTree = ""; + }; + B36701EB28962DF900F75595 /* mipmap-hdpi */ = { + isa = PBXGroup; + children = ( + B36701EC28962DF900F75595 /* ic_launcher.png */, + ); + path = "mipmap-hdpi"; + sourceTree = ""; + }; + B36701ED28962DF900F75595 /* mipmap-xxxhdpi */ = { + isa = PBXGroup; + children = ( + B36701EE28962DF900F75595 /* ic_launcher.png */, + ); + path = "mipmap-xxxhdpi"; + sourceTree = ""; + }; + B36701EF28962DF900F75595 /* mipmap-xxhdpi */ = { + isa = PBXGroup; + children = ( + B36701F028962DF900F75595 /* ic_launcher.png */, + ); + path = "mipmap-xxhdpi"; + sourceTree = ""; + }; + B36701F128962DF900F75595 /* values */ = { + isa = PBXGroup; + children = ( + B36701F228962DF900F75595 /* colors.xml */, + B36701F328962DF900F75595 /* styles.xml */, + B36701F428962DF900F75595 /* strings.xml */, + ); + path = values; + sourceTree = ""; + }; + B36701F528962DF900F75595 /* mipmap-xhdpi */ = { + isa = PBXGroup; + children = ( + B36701F628962DF900F75595 /* ic_launcher.png */, + ); + path = "mipmap-xhdpi"; + sourceTree = ""; + }; + B36701F828962DF900F75595 /* java */ = { + isa = PBXGroup; + children = ( + B36701F928962DF900F75595 /* org */, + B367020428962DF900F75595 /* com */, + ); + path = java; + sourceTree = ""; + }; + B36701F928962DF900F75595 /* org */ = { + isa = PBXGroup; + children = ( + B36701FA28962DF900F75595 /* libsdl */, + ); + path = org; + sourceTree = ""; + }; + B36701FA28962DF900F75595 /* libsdl */ = { + isa = PBXGroup; + children = ( + B36701FB28962DF900F75595 /* app */, + ); + path = libsdl; + sourceTree = ""; + }; + B36701FB28962DF900F75595 /* app */ = { + isa = PBXGroup; + children = ( + B36701FC28962DF900F75595 /* SDLAudioManager.java */, + B36701FD28962DF900F75595 /* SDLControllerManager.java */, + B36701FE28962DF900F75595 /* HIDDevice.java */, + B36701FF28962DF900F75595 /* HIDDeviceBLESteamController.java */, + B367020028962DF900F75595 /* HIDDeviceUSB.java */, + B367020128962DF900F75595 /* SDL.java */, + B367020228962DF900F75595 /* SDLActivity.java */, + B367020328962DF900F75595 /* HIDDeviceManager.java */, + ); + path = app; + sourceTree = ""; + }; + B367020428962DF900F75595 /* com */ = { + isa = PBXGroup; + children = ( + B367020528962DF900F75595 /* nesbox */, + ); + path = com; + sourceTree = ""; + }; + B367020528962DF900F75595 /* nesbox */ = { + isa = PBXGroup; + children = ( + B367020628962DF900F75595 /* tic */, + ); + path = nesbox; + sourceTree = ""; + }; + B367020628962DF900F75595 /* tic */ = { + isa = PBXGroup; + children = ( + B367020728962DF900F75595 /* TICDocumentsProvider.java */, + B367020828962DF900F75595 /* TIC.java */, + ); + path = tic; + sourceTree = ""; + }; + B367020C28962DF900F75595 /* gradle */ = { + isa = PBXGroup; + children = ( + B367020D28962DF900F75595 /* wrapper */, + ); + path = gradle; + sourceTree = ""; + }; + B367020D28962DF900F75595 /* wrapper */ = { + isa = PBXGroup; + children = ( + B367020E28962DF900F75595 /* gradle-wrapper.jar */, + B367020F28962DF900F75595 /* gradle-wrapper.properties */, + ); + path = wrapper; + sourceTree = ""; + }; + B367021528962DF900F75595 /* windows */ = { + isa = PBXGroup; + children = ( + B367021628962DF900F75595 /* icon.ico */, + B367021728962DF900F75595 /* tic80.rc.in */, + ); + path = windows; + sourceTree = ""; + }; + B367021828962DF900F75595 /* assets */ = { + isa = PBXGroup; + children = ( + B367021928962DF900F75595 /* wasmdemo.tic.dat */, + B367021A28962DF900F75595 /* moondemo.tic.dat */, + B367021B28962DF900F75595 /* jsdemo.tic.dat */, + B367021C28962DF900F75595 /* fire.tic.dat */, + B367021D28962DF900F75595 /* wrendemo.tic.dat */, + B367021E28962DF900F75595 /* palette.tic.dat */, + B367021F28962DF900F75595 /* rubymark.tic.dat */, + B367022028962DF900F75595 /* p3d.tic.dat */, + B367022128962DF900F75595 /* car.tic.dat */, + B367022228962DF900F75595 /* squirreldemo.tic.dat */, + B367022328962DF900F75595 /* cart.png.dat */, + B367022428962DF900F75595 /* font.tic.dat */, + B367022528962DF900F75595 /* luamark.tic.dat */, + B367022628962DF900F75595 /* benchmark.tic.dat */, + B367022728962DF900F75595 /* quest.tic.dat */, + B367022828962DF900F75595 /* squirrelmark.tic.dat */, + B367022928962DF900F75595 /* bpp.tic.dat */, + B367022A28962DF900F75595 /* config.tic.dat */, + B367022B28962DF900F75595 /* tetris.tic.dat */, + B367022C28962DF900F75595 /* sfx.tic.dat */, + B367022D28962DF900F75595 /* luademo.tic.dat */, + B367022E28962DF900F75595 /* music.tic.dat */, + B367022F28962DF900F75595 /* fenneldemo.tic.dat */, + B367023028962DF900F75595 /* wrenmark.tic.dat */, + B367023128962DF900F75595 /* wasmmark.tic.dat */, + B367023228962DF900F75595 /* moonmark.tic.dat */, + B367023328962DF900F75595 /* jsmark.tic.dat */, + B367023428962DF900F75595 /* rubydemo.tic.dat */, + ); + path = assets; + sourceTree = ""; + }; + B367023528962DF900F75595 /* n3ds */ = { + isa = PBXGroup; + children = ( + B367023628962DF900F75595 /* icon.png */, + B367023728962DF900F75595 /* Dockerfile */, + B367023828962DF900F75595 /* README.md */, + B367023928962DF900F75595 /* romfs */, + B367023B28962DF900F75595 /* elf_to_3dsx.sh */, + ); + path = n3ds; + sourceTree = ""; + }; + B367023928962DF900F75595 /* romfs */ = { + isa = PBXGroup; + children = ( + B367023A28962DF900F75595 /* kbd_display.png */, + ); + path = romfs; + sourceTree = ""; + }; + B367023C28962DF900F75595 /* demos */ = { + isa = PBXGroup; + children = ( + B367023D28962DF900F75595 /* palette.lua */, + B367023E28962DF900F75595 /* quest.lua */, + B367023F28962DF900F75595 /* rubydemo.rb */, + B367024028962DF900F75595 /* fire.lua */, + B367024128962DF900F75595 /* tetris.lua */, + B367024228962DF900F75595 /* squirreldemo.nut */, + B367024328962DFA00F75595 /* wasm */, + B367024A28962DFA00F75595 /* music.lua */, + B367024B28962DFA00F75595 /* bunny */, + B367025A28962DFA00F75595 /* bpp.lua */, + B367025B28962DFA00F75595 /* moondemo.moon */, + B367025C28962DFA00F75595 /* font.lua */, + B367025D28962DFA00F75595 /* sfx.lua */, + B367025E28962DFA00F75595 /* jsdemo.js */, + B367025F28962DFA00F75595 /* car.lua */, + B367026028962DFA00F75595 /* benchmark.lua */, + B367026128962DFA00F75595 /* fenneldemo.fnl */, + B367026228962DFA00F75595 /* luademo.lua */, + B367026328962DFA00F75595 /* p3d.lua */, + B367026428962DFA00F75595 /* wrendemo.wren */, + ); + path = demos; + sourceTree = ""; + }; + B367024328962DFA00F75595 /* wasm */ = { + isa = PBXGroup; + children = ( + B367024428962DFA00F75595 /* build.zig */, + B367024528962DFA00F75595 /* wasmdemo.wasmp */, + B367024628962DFA00F75595 /* wasmdemo.wasm */, + B367024728962DFA00F75595 /* src */, + ); + path = wasm; + sourceTree = ""; + }; + B367024728962DFA00F75595 /* src */ = { + isa = PBXGroup; + children = ( + B367024828962DFA00F75595 /* tic80.zig */, + B367024928962DFA00F75595 /* main.zig */, + ); + path = src; + sourceTree = ""; + }; + B367024B28962DFA00F75595 /* bunny */ = { + isa = PBXGroup; + children = ( + B367024C28962DFA00F75595 /* wrenmark.wren */, + B367024D28962DFA00F75595 /* jsmark.js */, + B367024E28962DFA00F75595 /* luamark.lua */, + B367024F28962DFA00F75595 /* moonmark.moon */, + B367025028962DFA00F75595 /* wasmmark */, + B367025828962DFA00F75595 /* rubymark.rb */, + B367025928962DFA00F75595 /* squirrelmark.nut */, + ); + path = bunny; + sourceTree = ""; + }; + B367025028962DFA00F75595 /* wasmmark */ = { + isa = PBXGroup; + children = ( + B367025128962DFA00F75595 /* build.zig */, + B367025228962DFA00F75595 /* wasmmark.wasm */, + B367025328962DFA00F75595 /* README.md */, + B367025428962DFA00F75595 /* wasmmark.wasmp */, + B367025528962DFA00F75595 /* src */, + ); + path = wasmmark; + sourceTree = ""; + }; + B367025528962DFA00F75595 /* src */ = { + isa = PBXGroup; + children = ( + B367025628962DFA00F75595 /* tic80.zig */, + B367025728962DFA00F75595 /* main.zig */, + ); + path = src; + sourceTree = ""; + }; + B367026628962DFA00F75595 /* vendor */ = { + isa = PBXGroup; + children = ( + B367026728962DFA00F75595 /* wasm3 */, + B367026828962DFA00F75595 /* blip-buf */, + B367026928962DFA00F75595 /* lpeg */, + B367026A28962DFA00F75595 /* moonscript */, + B367026B28962DFA00F75595 /* libpng */, + B367026C28962DFA00F75595 /* libuv */, + B367026D28962DFA00F75595 /* http-parser */, + B367026E28962DFA00F75595 /* argparse */, + B367026F28962DFA00F75595 /* dirent */, + B367027028962DFA00F75595 /* circle-stdlib */, + B367027128962DFA00F75595 /* wren */, + B367027228962DFA00F75595 /* zlib */, + B367027328962DFA00F75595 /* lua */, + B367027428962DFA00F75595 /* mruby */, + B367027528962DFA00F75595 /* zip */, + B367027628962DFA00F75595 /* giflib */, + B367027728962DFA00F75595 /* .gitignore */, + B367027828962DFA00F75595 /* sokol */, + B367027928962DFA00F75595 /* fennel */, + B367027E28962DFA00F75595 /* sdl2 */, + B367027F28962DFA00F75595 /* sdl-gpu */, + B367028028962DFA00F75595 /* squirrel */, + B367028128962DFA00F75595 /* duktape */, + ); + path = vendor; + sourceTree = ""; + }; + B367026728962DFA00F75595 /* wasm3 */ = { + isa = PBXGroup; + children = ( + ); + path = wasm3; + sourceTree = ""; + }; + B367026828962DFA00F75595 /* blip-buf */ = { + isa = PBXGroup; + children = ( + ); + path = "blip-buf"; + sourceTree = ""; + }; + B367026928962DFA00F75595 /* lpeg */ = { + isa = PBXGroup; + children = ( + ); + path = lpeg; + sourceTree = ""; + }; + B367026A28962DFA00F75595 /* moonscript */ = { + isa = PBXGroup; + children = ( + ); + path = moonscript; + sourceTree = ""; + }; + B367026B28962DFA00F75595 /* libpng */ = { + isa = PBXGroup; + children = ( + ); + path = libpng; + sourceTree = ""; + }; + B367026C28962DFA00F75595 /* libuv */ = { + isa = PBXGroup; + children = ( + ); + path = libuv; + sourceTree = ""; + }; + B367026D28962DFA00F75595 /* http-parser */ = { + isa = PBXGroup; + children = ( + ); + path = "http-parser"; + sourceTree = ""; + }; + B367026E28962DFA00F75595 /* argparse */ = { + isa = PBXGroup; + children = ( + ); + path = argparse; + sourceTree = ""; + }; + B367026F28962DFA00F75595 /* dirent */ = { + isa = PBXGroup; + children = ( + ); + path = dirent; + sourceTree = ""; + }; + B367027028962DFA00F75595 /* circle-stdlib */ = { + isa = PBXGroup; + children = ( + ); + path = "circle-stdlib"; + sourceTree = ""; + }; + B367027128962DFA00F75595 /* wren */ = { + isa = PBXGroup; + children = ( + ); + path = wren; + sourceTree = ""; + }; + B367027228962DFA00F75595 /* zlib */ = { + isa = PBXGroup; + children = ( + ); + path = zlib; + sourceTree = ""; + }; + B367027328962DFA00F75595 /* lua */ = { + isa = PBXGroup; + children = ( + ); + path = lua; + sourceTree = ""; + }; + B367027428962DFA00F75595 /* mruby */ = { + isa = PBXGroup; + children = ( + ); + path = mruby; + sourceTree = ""; + }; + B367027528962DFA00F75595 /* zip */ = { + isa = PBXGroup; + children = ( + ); + path = zip; + sourceTree = ""; + }; + B367027628962DFA00F75595 /* giflib */ = { + isa = PBXGroup; + children = ( + ); + path = giflib; + sourceTree = ""; + }; + B367027828962DFA00F75595 /* sokol */ = { + isa = PBXGroup; + children = ( + ); + path = sokol; + sourceTree = ""; + }; + B367027928962DFA00F75595 /* fennel */ = { + isa = PBXGroup; + children = ( + B367027A28962DFA00F75595 /* Makefile */, + B367027B28962DFA00F75595 /* fennel.h */, + B367027C28962DFA00F75595 /* .gitignore */, + B367027D28962DFA00F75595 /* fennel.lua */, + ); + path = fennel; + sourceTree = ""; + }; + B367027E28962DFA00F75595 /* sdl2 */ = { + isa = PBXGroup; + children = ( + ); + path = sdl2; + sourceTree = ""; + }; + B367027F28962DFA00F75595 /* sdl-gpu */ = { + isa = PBXGroup; + children = ( + ); + path = "sdl-gpu"; + sourceTree = ""; + }; + B367028028962DFA00F75595 /* squirrel */ = { + isa = PBXGroup; + children = ( + ); + path = squirrel; + sourceTree = ""; + }; + B367028128962DFA00F75595 /* duktape */ = { + isa = PBXGroup; + children = ( + ); + path = duktape; + sourceTree = ""; + }; + B367028328962DFA00F75595 /* src */ = { + isa = PBXGroup; + children = ( + B367028428962DFA00F75595 /* cart.c */, + B36702BA28962DFA00F75595 /* tic.c */, + B36702BB28962DFA00F75595 /* tilesheet.c */, + B36702B928962DFA00F75595 /* tools.c */, + B36702C628962DFB00F75595 /* api.h */, + B36702F328962DFB00F75595 /* cart.h */, + B36702C528962DFB00F75595 /* defines.h */, + B36702AE28962DFA00F75595 /* tic_assert.h */, + B36702F428962DFB00F75595 /* tic.h */, + B367030028962DFB00F75595 /* tilesheet.h */, + B36702F528962DFB00F75595 /* tools.h */, + B36702F628962DFB00F75595 /* api */, + B36702AF28962DFA00F75595 /* core */, + B36702BC28962DFA00F75595 /* ext */, + B367028528962DFA00F75595 /* studio */, + B36702C728962DFB00F75595 /* system */, + ); + path = src; + sourceTree = ""; + }; + B367028528962DFA00F75595 /* studio */ = { + isa = PBXGroup; + children = ( + B367028628962DFA00F75595 /* demos.c */, + B367028728962DFA00F75595 /* studio.h */, + B367028828962DFA00F75595 /* net.h */, + B367028928962DFA00F75595 /* config.h */, + B367028A28962DFA00F75595 /* editors */, + B367029728962DFA00F75595 /* project.c */, + B367029828962DFA00F75595 /* fs.c */, + B367029928962DFA00F75595 /* screens */, + B36702A628962DFA00F75595 /* studio.c */, + B36702A728962DFA00F75595 /* demos.h */, + B36702A828962DFA00F75595 /* config.c */, + B36702A928962DFA00F75595 /* net.c */, + B36702AA28962DFA00F75595 /* anim.h */, + B36702AB28962DFA00F75595 /* project.h */, + B36702AC28962DFA00F75595 /* system.h */, + B36702AD28962DFA00F75595 /* fs.h */, + ); + path = studio; + sourceTree = ""; + }; + B367028A28962DFA00F75595 /* editors */ = { + isa = PBXGroup; + children = ( + B367028B28962DFA00F75595 /* music.h */, + B367028C28962DFA00F75595 /* sprite.c */, + B367028D28962DFA00F75595 /* sfx.c */, + B367028E28962DFA00F75595 /* map.h */, + B367028F28962DFA00F75595 /* code.h */, + B367029028962DFA00F75595 /* world.c */, + B367029128962DFA00F75595 /* sfx.h */, + B367029228962DFA00F75595 /* sprite.h */, + B367029328962DFA00F75595 /* music.c */, + B367029428962DFA00F75595 /* map.c */, + B367029528962DFA00F75595 /* world.h */, + B367029628962DFA00F75595 /* code.c */, + ); + path = editors; + sourceTree = ""; + }; + B367029928962DFA00F75595 /* screens */ = { + isa = PBXGroup; + children = ( + B367029A28962DFA00F75595 /* surf.h */, + B367029B28962DFA00F75595 /* console.h */, + B367029C28962DFA00F75595 /* mainmenu.h */, + B367029D28962DFA00F75595 /* menu.c */, + B367029E28962DFA00F75595 /* run.c */, + B367029F28962DFA00F75595 /* start.h */, + B36702A028962DFA00F75595 /* mainmenu.c */, + B36702A128962DFA00F75595 /* console.c */, + B36702A228962DFA00F75595 /* surf.c */, + B36702A328962DFA00F75595 /* menu.h */, + B36702A428962DFA00F75595 /* run.h */, + B36702A528962DFA00F75595 /* start.c */, + ); + path = screens; + sourceTree = ""; + }; + B36702AF28962DFA00F75595 /* core */ = { + isa = PBXGroup; + children = ( + B36702B528962DFA00F75595 /* core.c */, + B36702B728962DFA00F75595 /* draw_dep.c */, + B36702B328962DFA00F75595 /* draw.c */, + B36702B228962DFA00F75595 /* io.c */, + B36702B428962DFA00F75595 /* languages.c */, + B36702B628962DFA00F75595 /* sound.c */, + B36702B128962DFA00F75595 /* core.h */, + B36702B028962DFA00F75595 /* altfont.inl */, + B36702B828962DFA00F75595 /* font.inl */, + ); + path = core; + sourceTree = ""; + }; + B36702BC28962DFA00F75595 /* ext */ = { + isa = PBXGroup; + children = ( + B36702BD28962DFA00F75595 /* history.c */, + B36702BE28962DFA00F75595 /* gif.h */, + B36702BF28962DFA00F75595 /* md5.h */, + B36702C028962DFA00F75595 /* png.h */, + B36702C128962DFA00F75595 /* history.h */, + B36702C228962DFA00F75595 /* md5.c */, + B36702C328962DFA00F75595 /* gif.c */, + B36702C428962DFB00F75595 /* png.c */, + ); + path = ext; + sourceTree = ""; + }; + B36702C728962DFB00F75595 /* system */ = { + isa = PBXGroup; + children = ( + B36702C828962DFB00F75595 /* baremetalpi */, + B36702D828962DFB00F75595 /* libretro */, + B36702E028962DFB00F75595 /* sdl */, + B36702E628962DFB00F75595 /* sokol */, + B36702ED28962DFB00F75595 /* n3ds */, + ); + path = system; + sourceTree = ""; + }; + B36702C828962DFB00F75595 /* baremetalpi */ = { + isa = PBXGroup; + children = ( + B36702C928962DFB00F75595 /* utils.h */, + B36702CA28962DFB00F75595 /* utils.cpp */, + B36702CB28962DFB00F75595 /* stdlib_app.h */, + B36702CC28962DFB00F75595 /* customchargenerator.h */, + B36702CD28962DFB00F75595 /* customscreen.h */, + B36702CE28962DFB00F75595 /* kernel.cpp */, + B36702CF28962DFB00F75595 /* customscreen.cpp */, + B36702D028962DFB00F75595 /* keycodes.h */, + B36702D128962DFB00F75595 /* gamepads.cpp */, + B36702D228962DFB00F75595 /* gamepads.h */, + B36702D328962DFB00F75595 /* syscore.h */, + B36702D428962DFB00F75595 /* kernel.h */, + B36702D528962DFB00F75595 /* customfont.h */, + B36702D628962DFB00F75595 /* main.cpp */, + B36702D728962DFB00F75595 /* customchargenerator.cpp */, + ); + path = baremetalpi; + sourceTree = ""; + }; + B36702D828962DFB00F75595 /* libretro */ = { + isa = PBXGroup; + children = ( + B36702D928962DFB00F75595 /* README.md */, + B36702DA28962DFB00F75595 /* libretro_core_options.h */, + B36702DB28962DFB00F75595 /* libretro_core_options_intl.h */, + B36702DC28962DFB00F75595 /* tic80_libretro.c */, + B36702DD28962DFB00F75595 /* libretro-common */, + ); + path = libretro; + sourceTree = ""; + }; + B36702DD28962DFB00F75595 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B36702DE28962DFB00F75595 /* include */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B36702DE28962DFB00F75595 /* include */ = { + isa = PBXGroup; + children = ( + B36702DF28962DFB00F75595 /* libretro.h */, + ); + path = include; + sourceTree = ""; + }; + B36702E028962DFB00F75595 /* sdl */ = { + isa = PBXGroup; + children = ( + B36702E128962DFB00F75595 /* kbdlabels.inl */, + B36702E228962DFB00F75595 /* kbdlayout.inl */, + B36702E328962DFB00F75595 /* main.c */, + B36702E428962DFB00F75595 /* keycodes.inl */, + B36702E528962DFB00F75595 /* player.c */, + ); + path = sdl; + sourceTree = ""; + }; + B36702E628962DFB00F75595 /* sokol */ = { + isa = PBXGroup; + children = ( + B36702E728962DFB00F75595 /* sokol.h */, + B36702E828962DFB00F75595 /* sokol_impl.m */, + B36702E928962DFB00F75595 /* sokol_impl.c */, + B36702EA28962DFB00F75595 /* sokol.c */, + B36702EB28962DFB00F75595 /* player.c */, + B36702EC28962DFB00F75595 /* sokol_gfx.c */, + ); + path = sokol; + sourceTree = ""; + }; + B36702ED28962DFB00F75595 /* n3ds */ = { + isa = PBXGroup; + children = ( + B36702EE28962DFB00F75595 /* utils.h */, + B36702EF28962DFB00F75595 /* keyboard.c */, + B36702F028962DFB00F75595 /* utils.c */, + B36702F128962DFB00F75595 /* main.c */, + B36702F228962DFB00F75595 /* keyboard.h */, + ); + path = n3ds; + sourceTree = ""; + }; + B36702F628962DFB00F75595 /* api */ = { + isa = PBXGroup; + children = ( + B36702F728962DFB00F75595 /* mruby.c */, + B36702F828962DFB00F75595 /* fennel.c */, + B36702F928962DFB00F75595 /* lua.c */, + B36702FA28962DFB00F75595 /* moonscript.c */, + B36702FB28962DFB00F75595 /* squirrel.c */, + B36702FC28962DFB00F75595 /* lua_api.h */, + B36702FD28962DFB00F75595 /* wren.c */, + B36702FE28962DFB00F75595 /* wasm.c */, + B36702FF28962DFB00F75595 /* js.c */, + ); + path = api; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVTIC80 */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVTIC80.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVTIC80; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVTIC80Core */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVTIC80Core.h */, + B37022C6287253B300B3F6DA /* PVTIC80Core.mm */, + ); + path = PVTIC80Core; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B367017328962DF700F75595 /* TIC-80 */, + B37022BE287253B300B3F6DA /* PVTIC80 */, + B37022C4287253B300B3F6DA /* PVTIC80Core */, + B37022BD287253B300B3F6DA /* PVTIC80-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVTIC80.framework */, + B30178D3207C901D0051B93D /* libTIC80.a */, + B3344BC32859E088006E6B3A /* libTIC80-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVTIC80.h in Headers */, + B37022C92872554300B3F6DA /* PVTIC80Core.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* TIC80 */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "TIC80" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TIC80; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libTIC80.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* TIC80-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "TIC80-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "TIC80-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libTIC80-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVTIC80 */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVTIC80" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + B367031928962E8E00F75595 /* PBXTargetDependency */, + ); + name = PVTIC80; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVTIC80.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVTIC80" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVTIC80 */, + B3344B522859E088006E6B3A /* TIC80-libretro */, + B30178D2207C901D0051B93D /* TIC80 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B367030E28962E3600F75595 /* core.c in Sources */, + B367031028962E3600F75595 /* draw_dep.c in Sources */, + B367030B28962E3600F75595 /* sound.c in Sources */, + B367030328962E0A00F75595 /* tilesheet.c in Sources */, + B367030428962E0A00F75595 /* tools.c in Sources */, + B367030F28962E3600F75595 /* draw.c in Sources */, + B367030C28962E3600F75595 /* languages.c in Sources */, + B367030228962E0A00F75595 /* tic.c in Sources */, + B367030128962E0A00F75595 /* cart.c in Sources */, + B367030D28962E3600F75595 /* io.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B367030928962E1A00F75595 /* tic80_libretro.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVTIC80Core.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B367031928962E8E00F75595 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B30178D2207C901D0051B93D /* TIC80 */; + targetProxy = B367031828962E8E00F75595 /* PBXContainerItemProxy */; + }; + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* TIC80-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = TIC80; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = TIC80; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/TIC-80/src/system/libretro/libretro-common/include\"", + "\"$(SRCROOT)/TIC-80/include\"", + "\"$(SRCROOT)/TIC-80/src\"", + "\"$(SRCROOT)/TIC-80/vendor\"", + "\"$(SRCROOT)/TIC-80/vendor/argparse\"", + "\"$(SRCROOT)/TIC-80/vendor/blip-buf\"", + "\"$(SRCROOT)/TIC-80/vendor/circle-stdlib\"", + "\"$(SRCROOT)/TIC-80/vendor/dirent\"", + "\"$(SRCROOT)/TIC-80/vendor/duktape\"", + "\"$(SRCROOT)/TIC-80/vendor/fennel\"", + "\"$(SRCROOT)/TIC-80/vendor/giflib\"", + "\"$(SRCROOT)/TIC-80/vendor/http-parser\"", + "\"$(SRCROOT)/TIC-80/vendor/libpng\"", + "\"$(SRCROOT)/TIC-80/vendor/libuv\"", + "\"$(SRCROOT)/TIC-80/vendor/lpeg\"", + "\"$(SRCROOT)/TIC-80/vendor/lua\"", + "\"$(SRCROOT)/TIC-80/vendor/moonscript\"", + "\"$(SRCROOT)/TIC-80/vendor/mruby\"", + "\"$(SRCROOT)/TIC-80/vendor/sdl-gpu\"", + "\"$(SRCROOT)/TIC-80/vendor/sdl2\"", + "\"$(SRCROOT)/TIC-80/vendor/sokol\"", + "\"$(SRCROOT)/TIC-80/vendor/squirrel\"", + "\"$(SRCROOT)/TIC-80/vendor/wasm3\"", + "\"$(SRCROOT)/TIC-80/vendor/wren\"", + "\"$(SRCROOT)/TIC-80/vendor/zip\"", + "\"$(SRCROOT)/TIC-80/vendor/zlib\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/TIC-80/src/system/libretro/libretro-common/include\"", + "\"$(SRCROOT)/TIC-80/include\"", + "\"$(SRCROOT)/TIC-80/vendor\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVTIC80/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVTIC80"; + PRODUCT_NAME = PVTIC80; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = TIC80; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "TIC80-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "TIC80-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "TIC80-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/TIC-80/src/system/libretro/libretro-common/include\"", + "\"$(SRCROOT)/TIC-80/include\"", + "\"$(SRCROOT)/TIC-80/src\"", + "\"$(SRCROOT)/TIC-80/vendor\"", + "\"$(SRCROOT)/TIC-80/vendor/argparse\"", + "\"$(SRCROOT)/TIC-80/vendor/blip-buf\"", + "\"$(SRCROOT)/TIC-80/vendor/circle-stdlib\"", + "\"$(SRCROOT)/TIC-80/vendor/dirent\"", + "\"$(SRCROOT)/TIC-80/vendor/duktape\"", + "\"$(SRCROOT)/TIC-80/vendor/fennel\"", + "\"$(SRCROOT)/TIC-80/vendor/giflib\"", + "\"$(SRCROOT)/TIC-80/vendor/http-parser\"", + "\"$(SRCROOT)/TIC-80/vendor/libpng\"", + "\"$(SRCROOT)/TIC-80/vendor/libuv\"", + "\"$(SRCROOT)/TIC-80/vendor/lpeg\"", + "\"$(SRCROOT)/TIC-80/vendor/lua\"", + "\"$(SRCROOT)/TIC-80/vendor/moonscript\"", + "\"$(SRCROOT)/TIC-80/vendor/mruby\"", + "\"$(SRCROOT)/TIC-80/vendor/sdl-gpu\"", + "\"$(SRCROOT)/TIC-80/vendor/sdl2\"", + "\"$(SRCROOT)/TIC-80/vendor/sokol\"", + "\"$(SRCROOT)/TIC-80/vendor/squirrel\"", + "\"$(SRCROOT)/TIC-80/vendor/wasm3\"", + "\"$(SRCROOT)/TIC-80/vendor/wren\"", + "\"$(SRCROOT)/TIC-80/vendor/zip\"", + "\"$(SRCROOT)/TIC-80/vendor/zlib\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/TIC-80/src/system/libretro/libretro-common/include\"", + "\"$(SRCROOT)/TIC-80/include\"", + "\"$(SRCROOT)/TIC-80/src\"", + "\"$(SRCROOT)/TIC-80/vendor\"", + "\"$(SRCROOT)/TIC-80/vendor/argparse\"", + "\"$(SRCROOT)/TIC-80/vendor/blip-buf\"", + "\"$(SRCROOT)/TIC-80/vendor/circle-stdlib\"", + "\"$(SRCROOT)/TIC-80/vendor/dirent\"", + "\"$(SRCROOT)/TIC-80/vendor/duktape\"", + "\"$(SRCROOT)/TIC-80/vendor/fennel\"", + "\"$(SRCROOT)/TIC-80/vendor/giflib\"", + "\"$(SRCROOT)/TIC-80/vendor/http-parser\"", + "\"$(SRCROOT)/TIC-80/vendor/libpng\"", + "\"$(SRCROOT)/TIC-80/vendor/libuv\"", + "\"$(SRCROOT)/TIC-80/vendor/lpeg\"", + "\"$(SRCROOT)/TIC-80/vendor/lua\"", + "\"$(SRCROOT)/TIC-80/vendor/moonscript\"", + "\"$(SRCROOT)/TIC-80/vendor/mruby\"", + "\"$(SRCROOT)/TIC-80/vendor/sdl-gpu\"", + "\"$(SRCROOT)/TIC-80/vendor/sdl2\"", + "\"$(SRCROOT)/TIC-80/vendor/sokol\"", + "\"$(SRCROOT)/TIC-80/vendor/squirrel\"", + "\"$(SRCROOT)/TIC-80/vendor/wasm3\"", + "\"$(SRCROOT)/TIC-80/vendor/wren\"", + "\"$(SRCROOT)/TIC-80/vendor/zip\"", + "\"$(SRCROOT)/TIC-80/vendor/zlib\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/TIC-80/src/system/libretro/libretro-common/include\"", + "\"$(SRCROOT)/TIC-80/include\"", + "\"$(SRCROOT)/TIC-80/vendor\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVTIC80/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVTIC80"; + PRODUCT_NAME = PVTIC80; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/TIC-80/src/system/libretro/libretro-common/include\"", + "\"$(SRCROOT)/TIC-80/include\"", + "\"$(SRCROOT)/TIC-80/vendor\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVTIC80/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVTIC80"; + PRODUCT_NAME = PVTIC80; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "TIC80" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "TIC80-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVTIC80" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVTIC80" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/TIC80/PVTIC80.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/TIC80/PVTIC80.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/TIC80/PVTIC80.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/TIC80/PVTIC80.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/TIC80/PVTIC80.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/TIC80/PVTIC80.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/TIC80/PVTIC80.xcodeproj/xcshareddata/xcschemes/PVTIC80.xcscheme b/Cores/TIC80/PVTIC80.xcodeproj/xcshareddata/xcschemes/PVTIC80.xcscheme new file mode 100644 index 0000000000..0ed6fbc2b5 --- /dev/null +++ b/Cores/TIC80/PVTIC80.xcodeproj/xcshareddata/xcschemes/PVTIC80.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/TIC80/PVTIC80/Core.plist b/Cores/TIC80/PVTIC80/Core.plist new file mode 100644 index 0000000000..ecbc360f96 --- /dev/null +++ b/Cores/TIC80/PVTIC80/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.TIC80 + PVPrincipleClass + PVTIC80Core + PVSupportedSystems + + com.provenance.tic80 + + PVProjectName + TIC80 + PVProjectURL + http://fms.komkon.org/TIC80/ + PVProjectVersion + 0 + + diff --git a/Cores/TIC80/PVTIC80/Info.plist b/Cores/TIC80/PVTIC80/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/TIC80/PVTIC80/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/TIC80/PVTIC80/PVTIC80.h b/Cores/TIC80/PVTIC80/PVTIC80.h new file mode 100644 index 0000000000..03a759b229 --- /dev/null +++ b/Cores/TIC80/PVTIC80/PVTIC80.h @@ -0,0 +1,18 @@ +// +// PVTIC80.h +// PVTIC80 +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVTIC80. +FOUNDATION_EXPORT double PVTIC80VersionNumber; + +//! Project version string for PVTIC80. +FOUNDATION_EXPORT const unsigned char PVTIC80VersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/TIC80/PVTIC80Core/PVTIC80Core.h b/Cores/TIC80/PVTIC80Core/PVTIC80Core.h new file mode 100644 index 0000000000..9c653de112 --- /dev/null +++ b/Cores/TIC80/PVTIC80Core/PVTIC80Core.h @@ -0,0 +1,43 @@ +// +// PVTIC80Core.h +// PVTIC80 +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVTIC80Core : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/TIC80/PVTIC80Core/PVTIC80Core.mm b/Cores/TIC80/PVTIC80Core/PVTIC80Core.mm new file mode 100644 index 0000000000..9414a72f91 --- /dev/null +++ b/Cores/TIC80/PVTIC80Core/PVTIC80Core.mm @@ -0,0 +1,257 @@ +// +// PVTIC80Core.m +// PVTIC80 +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVTIC80Core.h" +#include +//#import "PVTIC80Core+Controls.h" +//#import "PVTIC80Core+Audio.h" +//#import "PVTIC80Core+Video.h" +// +//#import "PVTIC80Core+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVTIC80Core() { + +} + +@end + +#pragma mark - PVTIC80Core Begin + +@implementation PVTIC80Core +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1024, 768); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT + return GL_RGB565; +} + + +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +# pragma mark - Audio + +- (double)audioSampleRate { + return 48000; +} + +#if 0 +const struct retro_variable vars[] = { + { "TIC80_mode", "MSX Mode; MSX2+|MSX1|MSX2" }, + { "TIC80_video_mode", "MSX Video Mode; NTSC|PAL|Dynamic" }, + { "TIC80_hires", "Support high resolution; Off|Interlaced|Progressive" }, + { "TIC80_overscan", "Support overscan; No|Yes" }, + { "TIC80_mapper_type_mode", "MSX Mapper Type Mode; " + "Guess|" + "Generic 8kB|" + "Generic 16kB|" + "Konami5 8kB|" + "Konami4 8kB|" + "ASCII 8kB|" + "ASCII 16kB|" + "GameMaster2|" + "FMPAC" + }, + { "TIC80_ram_pages", "MSX Main Memory; Auto|64KB|128KB|256KB|512KB|4MB" }, + { "TIC80_vram_pages", "MSX Video Memory; Auto|32KB|64KB|128KB|192KB" }, + { "TIC80_log_level", "TIC80 logging; Off|Info|Debug|Spam" }, + { "TIC80_game_master", "Support Game Master; No|Yes" }, + { "TIC80_simbdos", "Simulate DiskROM disk access calls; No|Yes" }, + { "TIC80_autospace", "Use autofire on SPACE; No|Yes" }, + { "TIC80_allsprites", "Show all sprites; No|Yes" }, + { "TIC80_font", "Text font; standard|DEFAULT.FNT|ITALIC.FNT|INTERNAT.FNT|CYRILLIC.FNT|KOREAN.FNT|JAPANESE.FNT" }, + { "TIC80_flush_disk", "Save disk changes; Never|Immediate|On close|To/From SRAM" }, + { "TIC80_phantom_disk", "Create empty disk when none loaded; No|Yes" }, + { "TIC80_custom_keyboard_up", up_value}, + { "TIC80_custom_keyboard_down", down_value}, + { "TIC80_custom_keyboard_left", left_value}, + { "TIC80_custom_keyboard_right", right_value}, + { "TIC80_custom_keyboard_a", a_value}, + { "TIC80_custom_keyboard_b", b_value}, + { "TIC80_custom_keyboard_y", y_value}, + { "TIC80_custom_keyboard_x", x_value}, + { "TIC80_custom_keyboard_start", start_value}, + { "TIC80_custom_keyboard_select", select_value}, + { "TIC80_custom_keyboard_l", l_value}, + { "TIC80_custom_keyboard_r", r_value}, + { "TIC80_custom_keyboard_l2", l2_value}, + { "TIC80_custom_keyboard_r2", r2_value}, + { "TIC80_custom_keyboard_l3", l3_value}, + { "TIC80_custom_keyboard_r3", r3_value}, + { NULL, NULL }, +}; +#endif + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + if (V("TIC80_video_mode")) { + // NTSC|PAL|Dynamic + char *value = strdup("Dynamic"); + return value; + } else if (V("TIC80_mode")) { + // MSX2+|MSX1|MSX2 + char * value = strdup("MSX2+"); + return value; + } else if (V("TIC80_hires")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("TIC80_overscan")) { + // No|Yes + char *value = strdup("Yes"); + return value; + } else if (V("TIC80_mapper_type_mode")) { +// { "TIC80_mapper_type_mode", "MSX Mapper Type Mode; " +// "Guess|" +// "Generic 8kB|" +// "Generic 16kB|" +// "Konami5 8kB|" +// "Konami4 8kB|" +// "ASCII 8kB|" +// "ASCII 16kB|" +// "GameMaster2|" +// "FMPAC" +// }, + char *value = strdup("FMPAC"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} +@end diff --git a/Cores/TIC80/TIC-80 b/Cores/TIC80/TIC-80 new file mode 160000 index 0000000000..3384179fd4 --- /dev/null +++ b/Cores/TIC80/TIC-80 @@ -0,0 +1 @@ +Subproject commit 3384179fd4956702814d4a8aee997e23f79a4f59 diff --git a/Cores/VecX/BuildFlags.xcconfig b/Cores/VecX/BuildFlags.xcconfig new file mode 100644 index 0000000000..9fef66b2e5 --- /dev/null +++ b/Cores/VecX/BuildFlags.xcconfig @@ -0,0 +1,35 @@ +// +// BuildFlags.xcconfig +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 STATIC_LINKING=1 FRONTEND_SUPPORTS_RGB565=1 HAVE_STRINGS=1 HAVE_STDINT_H=1 HAVE_INTTYPES_H=1 INLINE=inline HAVE_LIBNX=1 HAVE_OPENGLES=1 HAVE_OPENGLES2=1 HAVE_OPENGLES3=1 HAVE_OPENGLES_3_1=1 +// TODO: Fix linking with HAS_GPU +// HAS_GPU=1 +// C_DYNREC=0 +// HAVE_OPENGLES3=1 HAVE_OPENGLES3_1=1 +//GCC_PREPROCESSOR_DEFINITIONS[configuration=Debug] = $(inherited) DEBUG=1 +//GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = $(inherited) NDEBUG=1 + +// DISABLE_DYNAREC=1 +OTHER_CFLAGS = $(inherited) -ObjC -Wno-ignored-optimization-argument -Wno-unknown-warning-option -fomit-frame-pointer -fno-exceptions -fno-non-call-exceptions -Wno-address-of-packed-member -Wno-format -Wno-switch -Wno-psabi -fpic -fvisibility=hidden -ffunction-sections -Iinclude +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load -lpthread + + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 IOS +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 IOS + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 IOS +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 IOS diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Audio.h b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Audio.h new file mode 100644 index 0000000000..adfb869280 --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Audio.h @@ -0,0 +1,17 @@ +// +// PVVecXCore+Audio.h +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVVecXCore (Audio) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Audio.m b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Audio.m new file mode 100644 index 0000000000..8fff609630 --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Audio.m @@ -0,0 +1,25 @@ +// +// PVVecXCore+Audio.m +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVVecXCore+Audio.h" + +@implementation PVVecXCore (Audio) + +- (NSTimeInterval)frameInterval { + return 59.72; +} + +- (NSUInteger)channelCount { + return 2; +} + +- (double)audioSampleRate { + return 44100; +} + +@end diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Controls.h b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Controls.h new file mode 100644 index 0000000000..f036b502d7 --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Controls.h @@ -0,0 +1,29 @@ +// +// PVVecXCore+Controls.h +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVVecXCore (Controls) + +- (void)initControllBuffers; +- (void)pollControllers; + +#pragma mark - Control + +- (void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player; +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Controls.mm b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Controls.mm new file mode 100644 index 0000000000..f88790e955 --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Controls.mm @@ -0,0 +1,202 @@ +// +// PVVecXCore+Controls.m +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import + +#define DC_BTN_C (1<<0) +#define DC_BTN_B (1<<1) +#define DC_BTN_A (1<<2) +#define DC_BTN_START (1<<3) +#define DC_DPAD_UP (1<<4) +#define DC_DPAD_DOWN (1<<5) +#define DC_DPAD_LEFT (1<<6) +#define DC_DPAD_RIGHT (1<<7) +#define DC_BTN_Z (1<<8) +#define DC_BTN_Y (1<<9) +#define DC_BTN_X (1<<10) +#define DC_BTN_D (1<<11) +#define DC_DPAD2_UP (1<<12) +#define DC_DPAD2_DOWN (1<<13) +#define DC_DPAD2_LEFT (1<<14) +#define DC_DPAD2_RIGHT (1<<15) + +#define DC_AXIS_LT (0X10000) +#define DC_AXIS_RT (0X10001) +#define DC_AXIS_X (0X20000) +#define DC_AXIS_Y (0X20001) + +static const int DOSMap[] = { + DC_DPAD_UP, DC_DPAD_DOWN, DC_DPAD_LEFT, DC_DPAD_RIGHT, + DC_BTN_A, DC_BTN_B, DC_BTN_X, DC_BTN_Y, + DC_AXIS_LT, DC_AXIS_RT, + DC_BTN_START +}; + +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef unsigned int u32; + + // Reicast controller data +u16 kcode[4]; +u8 rt[4]; +u8 lt[4]; +u32 vks[4]; +s8 joyx[4], joyy[4]; + +@implementation PVVecXCore (Controls) + +- (void)initControllBuffers { + memset(&kcode, 0xFFFF, sizeof(kcode)); + bzero(&rt, sizeof(rt)); + bzero(<, sizeof(lt)); +} + +#pragma mark - Control + +- (void)pollControllers { + for (NSInteger playerIndex = 0; playerIndex < 4; playerIndex++) + { + GCController *controller = nil; + + if (self.controller1 && playerIndex == 0) + { + controller = self.controller1; + } + else if (self.controller2 && playerIndex == 1) + { + controller = self.controller2; + } + else if (self.controller3 && playerIndex == 3) + { + controller = self.controller3; + } + else if (self.controller4 && playerIndex == 4) + { + controller = self.controller4; + } + + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); + dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); + dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); + dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); + + gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); + gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); + gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); + gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); + + gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); + gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); + + gamepad.leftTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Z) : kcode[playerIndex] |= (DC_BTN_Z); + gamepad.rightTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_START) : kcode[playerIndex] |= (DC_BTN_START); + + + float xvalue = gamepad.leftThumbstick.xAxis.value; + s8 x=(s8)(xvalue*127); + joyx[0] = x; + + float yvalue = gamepad.leftThumbstick.yAxis.value; + s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range + joyy[0] = y; + + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); + dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); + dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); + dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); + + gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); + gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); + gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); + gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); + + gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); + gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + } +#endif + } +} + +-(void)didPushDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +-(void)didReleaseDOSButton:(enum PVDOSButton)button forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +- (void)didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { +// if(_isInitialized) +// { +// } +} + +-(void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { + [self didMoveDOSJoystickDirection:(enum PVDOSButton)button withValue:value forPlayer:player]; +} + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { + [self didPushDOSButton:(PVDOSButton)button forPlayer:player]; +} + +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { + [self didReleaseDOSButton:(PVDOSButton)button forPlayer:player]; +} + + +# pragma mark - Input Wii +//- (oneway void)didMoveWiiJoystickDirection:(OEWiiButton)button withValue:(CGFloat)value forPlayer:(NSUInteger)player +//{ +// if(_isInitialized) +// { +// dol_host->SetAxis(button, value, (int)player); +// } +//} +// +//- (oneway void)didPushWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player +//{ +// if(_isInitialized) +// { +// if (button > OEWiiButtonCount) { +// dol_host->processSpecialKeys(button , (int)player); +// } else { +// dol_host->setButtonState(button, 1, (int)player); +// } +// } +//} +// +//- (oneway void)didReleaseWiiButton:(OEWiiButton)button forPlayer:(NSUInteger)player +//{ +// if(_isInitialized && button != OEWiimoteSideways && button != OEWiimoteUpright) +// { +// dol_host->setButtonState(button, 0, (int)player); +// } +//} + +@end diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Saves.h b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Saves.h new file mode 100644 index 0000000000..b2707e9adc --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Saves.h @@ -0,0 +1,17 @@ +// +// PVVecX+Saves.h +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVVecXCore (Saves) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Saves.m b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Saves.m new file mode 100644 index 0000000000..6275cd6d28 --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Saves.m @@ -0,0 +1,37 @@ +// +// PVVecX+Saves.m +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVVecXCore+Saves.h" +#import "PVVecXCore.h" + +@implementation PVVecXCore (Saves) + +#pragma mark - Properties +-(BOOL)supportsSaveStates { + return YES; +} + +#pragma mark - Methods + +- (BOOL)saveStateToFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +@end diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Video.h b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Video.h new file mode 100644 index 0000000000..6f22c5171a --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Video.h @@ -0,0 +1,19 @@ +// +// PVVecX+Video.h +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVVecXCore (Video) + +- (void)videoInterrupt; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore+Video.m b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Video.m new file mode 100644 index 0000000000..9e17626990 --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore+Video.m @@ -0,0 +1,104 @@ +// +// PVVecX+Video.m +// PVVecX +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVVecXCore+Video.h" +#import "PVVecXCore.h" + +#if !TARGET_OS_OSX +#import +#import +#import +#else +#import +#import +#import +#endif + +@implementation PVVecXCore (Video) + +# pragma mark - Methods + +//- (void)videoInterrupt { +// //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)swapBuffers { +// [self.renderDelegate didRenderFrameOnAlternateThread]; +//} +// +//- (void)executeFrameSkippingFrame:(BOOL)skip { +// +// if (![self isEmulationPaused]) +// { +// } +// //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// +// //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)executeFrame { +// [self executeFrameSkippingFrame:NO]; +//} + +# pragma mark - Properties + +//- (CGSize)bufferSize { +// CGSize size = CGSizeMake(av_info.geometry.max_width, av_info.geometry.max_height); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} +// +//- (CGRect)screenRect { +// CGRect rect = CGRectMake(0, 0, av_info.geometry.base_width, av_info.geometry.base_height); +// DLOG(@"<%i, %i>", rect.size.width, rect.size.height); +// return rect; +//} +// +//- (CGSize)aspectSize { +// CGSize size = CGSizeMake(1, av_info.geometry.aspect_ratio); +// DLOG(@"<%i, %i>", size.width, size.height); +// return size; +//} + +//- (BOOL)rendersToOpenGL { +// return YES; +//} +// +//- (BOOL)isDoubleBuffered { +// return YES; +//} + +//- (const void *)videoBuffer { +// return NULL; +//} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT +#if !TARGET_OS_MAC && !TARGET_OS_MACCATALYST + return GL_RGB565; +#else + return GL_UNSIGNED_SHORT_5_6_5; +#endif +} + +// +//- (GLenum)depthFormat { +// // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 +// return GL_DEPTH_COMPONENT24; +//} +@end diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore.h b/Cores/VecX/PBVecXCore/Core/PVVecXCore.h new file mode 100644 index 0000000000..82859f34bf --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore.h @@ -0,0 +1,43 @@ +// +// PVVecXCore.h +// PVVecX +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVVecXCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/VecX/PBVecXCore/Core/PVVecXCore.mm b/Cores/VecX/PBVecXCore/Core/PVVecXCore.mm new file mode 100644 index 0000000000..30317263d8 --- /dev/null +++ b/Cores/VecX/PBVecXCore/Core/PVVecXCore.mm @@ -0,0 +1,257 @@ +// +// PVVecXCore.m +// PVVecX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVVecXCore.h" +#include +#import "PVVecXCore+Controls.h" +#import "PVVecXCore+Audio.h" +#import "PVVecXCore+Video.h" + +#import "PVVecXCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVVecXCore() { + +} + +@end + +#pragma mark - PVVecXCore Begin + +@implementation PVVecXCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + pitch_shift = 4; + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// BOOL loaded = [super loadFileAtPath:path completionHandler:error]; +// +// return loaded; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + +#define V(x) strcmp(variable, x) == 0 + if (V("vecx_use_hw") || V("vecx_render")) { +// char *value = strdup("Hardware"); + char *value = strdup("Software"); + return value; + } else if (V("vecx_res_multi")) { + // Internal Resolution Multiplier + // 1,2,3,4 + char *value = strdup("4"); + return value; + } else if (V("vecx_res_hw")) { + // Hardware Rendering Resolution + // 824x1024|434x540|515x640|580x720|618x768|845x1050|869x1080|966x1200|1159x1440|1648x2048 + char *value = strdup("869x1080"); + return value; + } else if (V("vecx_line_brightness")) { + char *value = strdup("4"); + return value; + } else if (V("vecx_line_width")) { + char *value = strdup("4"); + return value; + } else if (V("vecx_bloom_brightness")) { + char *value = strdup("4"); + return value; + } else if (V("vecx_bloom_width")) { + char *value = strdup("8x"); + return value; + } else if (V("vecx_scale_x")) { + // "Scale vector display horizontally; 1|0.845|0.85|0.855|0.86|0.865|0.87|0.875|0.88|0.885|0.89|0.895|0.90|0.905|0.91|0.915|0.92|0.925|0.93|0.935|0.94|0.945|0.95|0.955|0.96|0.965|0.97|0.975|0.98|0.985|0.99|0.995|1.005|1.01" + char *value = strdup("1"); + return value; + } else if (V("vecx_scale_y")) { + // "Scale vector display vertically; 1|0.845|0.85|0.855|0.86|0.865|0.87|0.875|0.88|0.885|0.89|0.895|0.90|0.905|0.91|0.915|0.92|0.925|0.93|0.935|0.94|0.945|0.95|0.955|0.96|0.965|0.97|0.975|0.98|0.985|0.99|0.995|1.005|1.01" + char *value = strdup("1"); + return value; + } else if (V("vecx_shift_x")) { + char *value = strdup("0"); + return value; + } else if (V("vecx_shift_y")) { + char *value = strdup("0"); + return value; + } else if (V("VecX_pure_memory_size")) { + char *value = strdup("16"); + return value; + } else if (V("VecX_pure_cpu_type")) { + char *value = strdup("auto"); // auto +// char *value = strdup("pentium_slow"); // auto + return value; + } else if (V("VecX_pure_cpu_core")) { + char *value = strdup("auto"); + return value; + } else if (V("VecX_pure_keyboard_layout")) { + char *value = strdup("us"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + + /* + "VecX_pure_mouse_wheel", + "Bind Mouse Wheel To Key", NULL, + "Bind mouse wheel up and down to two keyboard keys to be able to use it in DOS games.", NULL, + "Input", + { + { "67/68", "Left-Bracket/Right-Bracket" }, + { "72/71", "Comma/Period" }, + { "79/82", "Page-Up/Page-Down" }, + { "78/81", "Home/End" }, + { "80/82", "Delete/Page-Down" }, + { "64/65", "Minus/Equals" }, + { "69/70", "Semicolon/Quote" }, + { "99/100", "Numpad Minus/Plus" }, + { "97/98", "Numpad Divide/Multiply" }, + { "84/85", "Up/Down" }, + { "83/86", "Left/Right" }, + { "11/13", "Q/E" }, + { "none", "Disable" }, + }, + "67/68" + + "VecX_pure_cycles", + "Emulated Performance", NULL, + "The raw performance that VecX will try to emulate." "\n\n", NULL, //end of Performance section + "Performance", + { + { "auto", "AUTO - VecX will try to detect performance needs (default)" }, + { "max", "MAX - Emulate as many instructions as possible" }, + { "315", "8086/8088, 4.77 MHz from 1980 (315 cps)" }, + { "1320", "286, 6 MHz from 1982 (1320 cps)" }, + { "2750", "286, 12.5 MHz from 1985 (2750 cps)" }, + { "4720", "386, 20 MHz from 1987 (4720 cps)" }, + { "7800", "386DX, 33 MHz from 1989 (7800 cps)" }, + { "13400", "486DX, 33 MHz from 1990 (13400 cps)" }, + { "26800", "486DX2, 66 MHz from 1992 (26800 cps)" }, + { "77000", "Pentium, 100 MHz from 1995 (77000 cps)" }, + { "200000", "Pentium II, 300 MHz from 1997 (200000 cps)" }, + { "500000", "Pentium III, 600 MHz from 1999 (500000 cps)" }, + { "1000000", "AMD Athlon, 1.2 GHz from 2000 (1000000 cps)" }, + }, + + "VecX_pure_cpu_type", + "CPU Type", NULL, + "Emulated CPU type. Auto is the fastest choice." "\n" + "Games that require specific CPU type selection:" "\n" + "386 (prefetch): X-Men: Madness in The Murderworld, Terminator 1, Contra, Fifa International Soccer 1994" "\n" + "486 (slow): Betrayal in Antara" "\n" + "Pentium (slow): Fifa International Soccer 1994, Windows 95/Windows 3.x games" "\n\n", NULL, //end of System section + "System", + { + { "auto", "Auto - Mixed feature set with maximum performance and compatibility" }, + { "386", "386 - 386 instruction with fast memory access" }, + { "386_slow", "386 (slow) - 386 instruction set with memory privilege checks" }, + { "386_prefetch", "386 (prefetch) - With prefetch queue emulation (only on 'auto' and 'normal' core)" }, + { "486_slow", "486 (slow) - 486 instruction set with memory privilege checks" }, + { "pentium_slow", "Pentium (slow) - 586 instruction set with memory privilege checks" }, + }, + "auto" + }, + { + "VecX_pure_cpu_core", + "Advanced > CPU Core", NULL, + "Emulation method (VecX CPU core) used.", NULL, + "System", + { + #if defined(C_DYNAMIC_X86) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynamic_x86 implementation)" }, + #elif defined(C_DYNREC) + { "auto", "Auto - Real-mode games use normal, protected-mode games use dynamic" }, + { "dynamic", "Dynamic - Dynamic recompilation (fast, using dynrec implementation)" }, + #endif + { "normal", "Normal (interpreter)" }, + { "simple", "Simple (interpreter optimized for old real-mode games)" }, + }, + #if defined(C_DYNAMIC_X86) || defined(C_DYNREC) + "auto" + #else + "normal" + #endif + }, + */ +#undef V + return NULL; +} + + +@end diff --git a/Cores/VecX/PBVecXCore/PVVecX.mm b/Cores/VecX/PBVecXCore/PVVecX.mm new file mode 100644 index 0000000000..7fab9ef217 --- /dev/null +++ b/Cores/VecX/PBVecXCore/PVVecX.mm @@ -0,0 +1,11 @@ +// +// PVVecX.mm +// PVVecX +// +// Created by Joseph Mattiello on 9/5/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import "PVVecXCore.h" +#import "PVVecXCore+Controls.h" +#import "PVVecXCore+Video.h" diff --git a/Cores/VecX/PVVecX.xcodeproj/project.pbxproj b/Cores/VecX/PVVecX.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..36b50e1324 --- /dev/null +++ b/Cores/VecX/PVVecX.xcodeproj/project.pbxproj @@ -0,0 +1,1043 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libvecx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libvecx.a */; }; + B3135B9B26E4CAD40047F338 /* PVVecXCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVVecXCore.mm */; }; + B3135B9C26E4CC290047F338 /* PVVecXCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVVecXCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3135BA126E4CC620047F338 /* PVVecX.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVVecX.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B353CC06293F86B900124F12 /* glsym_es2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1AE2894D32A00CF98C7 /* glsym_es2.c */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B380C2592894E846007B76FD /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C19B2894D32900CF98C7 /* libretro.c */; }; + B380C2692894EB37007B76FD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B380C2682894EB37007B76FD /* OpenGL.framework */; platformFilters = (maccatalyst, macos, ); }; + B39768F82859E23200558958 /* libvecx-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libvecx-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilters = (ios, tvos, watchos, ); }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3C8A65F2877D6350037A946 /* PVVecXCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVVecXCore+Controls.mm */; }; + B3C8A6612877D6B30037A946 /* PVVecXCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVVecXCore+Audio.m */; }; + B3D3E7692894E5310016EB85 /* e6809.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1CD2894D32A00CF98C7 /* e6809.c */; }; + B3D3E76A2894E5310016EB85 /* e8910.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1A02894D32900CF98C7 /* e8910.c */; }; + B3D3E76B2894E5310016EB85 /* vecx.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C19A2894D32900CF98C7 /* vecx.c */; }; + B3EB8B22293F81D600BCCBAE /* skip.bin in Resources */ = {isa = PBXBuildFile; fileRef = B3E6C1C92894D32A00CF98C7 /* skip.bin */; }; + B3EB8B23293F81D600BCCBAE /* fast.bin in Resources */ = {isa = PBXBuildFile; fileRef = B3E6C1CA2894D32A00CF98C7 /* fast.bin */; }; + B3EB8B24293F81D600BCCBAE /* system.bin in Resources */ = {isa = PBXBuildFile; fileRef = B3E6C1C82894D32A00CF98C7 /* system.bin */; }; + B3EB8B25293F81E000BCCBAE /* rom.dat in Resources */ = {isa = PBXBuildFile; fileRef = B3E6C19E2894D32900CF98C7 /* rom.dat */; }; + B3EB8B28293F835000BCCBAE /* rglgen.c in Sources */ = {isa = PBXBuildFile; fileRef = B3E6C1AF2894D32A00CF98C7 /* rglgen.c */; }; + B3EBB2032872B65700EAEB37 /* PVVecXCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVVecXCore+Video.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libvecx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libvecx.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libvecx-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libvecx-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447E96218B809200557ACE /* PVVecXCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVVecXCore+Controls.h"; sourceTree = ""; }; + B3447E97218B809300557ACE /* PVVecXCore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVVecXCore+Controls.mm"; sourceTree = ""; }; + B3447EA0218B881000557ACE /* PVVecX.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVVecX.mm; sourceTree = ""; }; + B3447EA9218BC59D00557ACE /* PVVecXCore+Saves.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVVecXCore+Saves.h"; sourceTree = ""; }; + B3447EAA218BC59D00557ACE /* PVVecXCore+Saves.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVVecXCore+Saves.m"; sourceTree = ""; }; + B3447EAD218BC5C500557ACE /* PVVecXCore+Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVVecXCore+Video.h"; sourceTree = ""; }; + B3447EAE218BC5C500557ACE /* PVVecXCore+Video.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVVecXCore+Video.m"; sourceTree = ""; }; + B3447EB1218BC69700557ACE /* PVVecXCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVVecXCore+Audio.h"; sourceTree = ""; }; + B3447EB2218BC69700557ACE /* PVVecXCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVVecXCore+Audio.m"; sourceTree = ""; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B380C2682894EB37007B76FD /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVVecX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVVecX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621320783162009950E4 /* PVVecX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVVecX.h; sourceTree = ""; }; + B3C7621420783162009950E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C76223207833DE009950E4 /* PVVecXCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVVecXCore.h; sourceTree = ""; }; + B3C76224207833DE009950E4 /* PVVecXCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVVecXCore.mm; sourceTree = ""; }; + B3C7622720783510009950E4 /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B3E6C19A2894D32900CF98C7 /* vecx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vecx.c; sourceTree = ""; }; + B3E6C19B2894D32900CF98C7 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3E6C19C2894D32900CF98C7 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; }; + B3E6C19D2894D32900CF98C7 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3E6C19E2894D32900CF98C7 /* rom.dat */ = {isa = PBXFileReference; lastKnownFileType = file; path = rom.dat; sourceTree = ""; }; + B3E6C19F2894D32900CF98C7 /* e6809.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = e6809.h; sourceTree = ""; }; + B3E6C1A02894D32900CF98C7 /* e8910.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e8910.c; sourceTree = ""; }; + B3E6C1A12894D32900CF98C7 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3E6C1A22894D32900CF98C7 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3E6C1A32894D32900CF98C7 /* dots.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dots.h; sourceTree = ""; }; + B3E6C1A42894D32A00CF98C7 /* Makefile.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.libretro; sourceTree = ""; }; + B3E6C1A52894D32A00CF98C7 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3E6C1A62894D32A00CF98C7 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3E6C1A72894D32A00CF98C7 /* vecx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vecx.h; sourceTree = ""; }; + B3E6C1A82894D32A00CF98C7 /* osint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osint.h; sourceTree = ""; }; + B3E6C1AB2894D32A00CF98C7 /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B3E6C1AC2894D32A00CF98C7 /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B3E6C1AD2894D32A00CF98C7 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3E6C1AE2894D32A00CF98C7 /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B3E6C1AF2894D32A00CF98C7 /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B3E6C1B02894D32A00CF98C7 /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B3E6C1B12894D32A00CF98C7 /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B3E6C1B42894D32A00CF98C7 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B3E6C1B62894D32A00CF98C7 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3E6C1B72894D32A00CF98C7 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3E6C1B92894D32A00CF98C7 /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B3E6C1BA2894D32A00CF98C7 /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B3E6C1BB2894D32A00CF98C7 /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B3E6C1BC2894D32A00CF98C7 /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B3E6C1BE2894D32A00CF98C7 /* nx_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_gl.h; sourceTree = ""; }; + B3E6C1BF2894D32A00CF98C7 /* nx_glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_glsym.h; sourceTree = ""; }; + B3E6C1C02894D32A00CF98C7 /* rglgen_private_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_private_headers.h; sourceTree = ""; }; + B3E6C1C12894D32A00CF98C7 /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B3E6C1C22894D32A00CF98C7 /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B3E6C1C32894D32A00CF98C7 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3E6C1C42894D32A00CF98C7 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3E6C1C62894D32A00CF98C7 /* fast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fast.h; sourceTree = ""; }; + B3E6C1C72894D32A00CF98C7 /* skip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = skip.h; sourceTree = ""; }; + B3E6C1C82894D32A00CF98C7 /* system.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = system.bin; sourceTree = ""; }; + B3E6C1C92894D32A00CF98C7 /* skip.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = skip.bin; sourceTree = ""; }; + B3E6C1CA2894D32A00CF98C7 /* fast.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = fast.bin; sourceTree = ""; }; + B3E6C1CB2894D32A00CF98C7 /* system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = system.h; sourceTree = ""; }; + B3E6C1CC2894D32A00CF98C7 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3E6C1CD2894D32A00CF98C7 /* e6809.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = e6809.c; sourceTree = ""; }; + B3E6C1CE2894D32A00CF98C7 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3E6C1D02894D32A00CF98C7 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3E6C1D12894D32A00CF98C7 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3E6C1D22894D32A00CF98C7 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3E6C1D32894D32A00CF98C7 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; + B3E6C1D42894D32A00CF98C7 /* e8910.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = e8910.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B380C2692894EB37007B76FD /* OpenGL.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libvecx.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libvecx-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B3447EB5218BCE2000557ACE /* Core */ = { + isa = PBXGroup; + children = ( + B3C76223207833DE009950E4 /* PVVecXCore.h */, + B3C76224207833DE009950E4 /* PVVecXCore.mm */, + B3447EB1218BC69700557ACE /* PVVecXCore+Audio.h */, + B3447EB2218BC69700557ACE /* PVVecXCore+Audio.m */, + B3447EAD218BC5C500557ACE /* PVVecXCore+Video.h */, + B3447EAE218BC5C500557ACE /* PVVecXCore+Video.m */, + B3447EA9218BC59D00557ACE /* PVVecXCore+Saves.h */, + B3447EAA218BC59D00557ACE /* PVVecXCore+Saves.m */, + B3447E96218B809200557ACE /* PVVecXCore+Controls.h */, + B3447E97218B809300557ACE /* PVVecXCore+Controls.mm */, + ); + path = Core; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3E6C1992894D32900CF98C7 /* libretro-vecx */, + B3C762202078327B009950E4 /* PVVecXCore */, + B3C7621220783162009950E4 /* PVVecX */, + B3C7621120783162009950E4 /* Products */, + B3C7621B20783242009950E4 /* Frameworks */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVVecX.framework */, + B30178D3207C901D0051B93D /* libvecx.a */, + B3344BC32859E088006E6B3A /* libvecx-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621220783162009950E4 /* PVVecX */ = { + isa = PBXGroup; + children = ( + B3C7622720783510009950E4 /* Core.plist */, + B3C7621320783162009950E4 /* PVVecX.h */, + B3C7621420783162009950E4 /* Info.plist */, + ); + path = PVVecX; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B380C2682894EB37007B76FD /* OpenGL.framework */, + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3C762202078327B009950E4 /* PVVecXCore */ = { + isa = PBXGroup; + children = ( + B3447EB5218BCE2000557ACE /* Core */, + B3447EA0218B881000557ACE /* PVVecX.mm */, + ); + name = PVVecXCore; + path = PBVecXCore; + sourceTree = ""; + }; + B3E6C1992894D32900CF98C7 /* libretro-vecx */ = { + isa = PBXGroup; + children = ( + B3E6C1A52894D32A00CF98C7 /* .gitignore */, + B3E6C1D32894D32A00CF98C7 /* control */, + B3E6C19D2894D32900CF98C7 /* Makefile */, + B3E6C1CD2894D32A00CF98C7 /* e6809.c */, + B3E6C1A02894D32900CF98C7 /* e8910.c */, + B3E6C19B2894D32900CF98C7 /* libretro.c */, + B3E6C19A2894D32900CF98C7 /* vecx.c */, + B3E6C1A12894D32900CF98C7 /* Makefile.common */, + B3E6C19E2894D32900CF98C7 /* rom.dat */, + B3E6C1A32894D32900CF98C7 /* dots.h */, + B3E6C19F2894D32900CF98C7 /* e6809.h */, + B3E6C1D42894D32A00CF98C7 /* e8910.h */, + B3E6C1A62894D32A00CF98C7 /* libretro_core_options.h */, + B3E6C1A82894D32A00CF98C7 /* osint.h */, + B3E6C1A72894D32A00CF98C7 /* vecx.h */, + B3E6C1A42894D32A00CF98C7 /* Makefile.libretro */, + B3E6C19C2894D32900CF98C7 /* LICENSE.md */, + B3E6C1A22894D32900CF98C7 /* README.md */, + B3E6C1CE2894D32A00CF98C7 /* link.T */, + B3E6C1CC2894D32A00CF98C7 /* .gitlab-ci.yml */, + B3E6C1D22894D32A00CF98C7 /* .travis.yml */, + B3E6C1C52894D32A00CF98C7 /* bios */, + B3E6C1CF2894D32A00CF98C7 /* jni */, + B3E6C1A92894D32A00CF98C7 /* libretro-common */, + ); + path = "libretro-vecx"; + sourceTree = ""; + }; + B3E6C1A92894D32A00CF98C7 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3E6C1AA2894D32A00CF98C7 /* glsym */, + B3E6C1B22894D32A00CF98C7 /* include */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3E6C1AA2894D32A00CF98C7 /* glsym */ = { + isa = PBXGroup; + children = ( + B3E6C1AB2894D32A00CF98C7 /* glsym_es3.c */, + B3E6C1AC2894D32A00CF98C7 /* glsym_gl.c */, + B3E6C1AD2894D32A00CF98C7 /* README.md */, + B3E6C1AE2894D32A00CF98C7 /* glsym_es2.c */, + B3E6C1AF2894D32A00CF98C7 /* rglgen.c */, + B3E6C1B02894D32A00CF98C7 /* glgen.py */, + B3E6C1B12894D32A00CF98C7 /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B3E6C1B22894D32A00CF98C7 /* include */ = { + isa = PBXGroup; + children = ( + B3E6C1B32894D32A00CF98C7 /* compat */, + B3E6C1B72894D32A00CF98C7 /* retro_common_api.h */, + B3E6C1B82894D32A00CF98C7 /* glsym */, + B3E6C1C32894D32A00CF98C7 /* retro_inline.h */, + B3E6C1C42894D32A00CF98C7 /* libretro.h */, + ); + path = include; + sourceTree = ""; + }; + B3E6C1B32894D32A00CF98C7 /* compat */ = { + isa = PBXGroup; + children = ( + B3E6C1B42894D32A00CF98C7 /* apple_compat.h */, + B3E6C1B52894D32A00CF98C7 /* msvc */, + ); + path = compat; + sourceTree = ""; + }; + B3E6C1B52894D32A00CF98C7 /* msvc */ = { + isa = PBXGroup; + children = ( + B3E6C1B62894D32A00CF98C7 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3E6C1B82894D32A00CF98C7 /* glsym */ = { + isa = PBXGroup; + children = ( + B3E6C1B92894D32A00CF98C7 /* rglgen.h */, + B3E6C1BA2894D32A00CF98C7 /* glsym_es2.h */, + B3E6C1BB2894D32A00CF98C7 /* glsym.h */, + B3E6C1BC2894D32A00CF98C7 /* rglgen_headers.h */, + B3E6C1BD2894D32A00CF98C7 /* switch */, + B3E6C1C02894D32A00CF98C7 /* rglgen_private_headers.h */, + B3E6C1C12894D32A00CF98C7 /* glsym_es3.h */, + B3E6C1C22894D32A00CF98C7 /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B3E6C1BD2894D32A00CF98C7 /* switch */ = { + isa = PBXGroup; + children = ( + B3E6C1BE2894D32A00CF98C7 /* nx_gl.h */, + B3E6C1BF2894D32A00CF98C7 /* nx_glsym.h */, + ); + path = switch; + sourceTree = ""; + }; + B3E6C1C52894D32A00CF98C7 /* bios */ = { + isa = PBXGroup; + children = ( + B3E6C1C62894D32A00CF98C7 /* fast.h */, + B3E6C1C72894D32A00CF98C7 /* skip.h */, + B3E6C1C82894D32A00CF98C7 /* system.bin */, + B3E6C1C92894D32A00CF98C7 /* skip.bin */, + B3E6C1CA2894D32A00CF98C7 /* fast.bin */, + B3E6C1CB2894D32A00CF98C7 /* system.h */, + ); + path = bios; + sourceTree = ""; + }; + B3E6C1CF2894D32A00CF98C7 /* jni */ = { + isa = PBXGroup; + children = ( + B3E6C1D02894D32A00CF98C7 /* Android.mk */, + B3E6C1D12894D32A00CF98C7 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3135B9C26E4CC290047F338 /* PVVecXCore.h in Headers */, + B3135BA126E4CC620047F338 /* PVVecX.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* vecx */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "vecx" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = vecx; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libvecx.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* vecx-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "vecx-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "vecx-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libvecx-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVVecX */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVVecX" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVVecX; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVVecX.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVVecX" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVVecX */, + B3344B522859E088006E6B3A /* vecx-libretro */, + B30178D2207C901D0051B93D /* vecx */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EB8B25293F81E000BCCBAE /* rom.dat in Resources */, + B3EB8B22293F81D600BCCBAE /* skip.bin in Resources */, + B3EB8B23293F81D600BCCBAE /* fast.bin in Resources */, + B3EB8B24293F81D600BCCBAE /* system.bin in Resources */, + B33350262078619C0036A448 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3D3E76A2894E5310016EB85 /* e8910.c in Sources */, + B3D3E76B2894E5310016EB85 /* vecx.c in Sources */, + B3D3E7692894E5310016EB85 /* e6809.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B380C2592894E846007B76FD /* libretro.c in Sources */, + B353CC06293F86B900124F12 /* glsym_es2.c in Sources */, + B3EB8B28293F835000BCCBAE /* rglgen.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3135B9B26E4CAD40047F338 /* PVVecXCore.mm in Sources */, + B3C8A65F2877D6350037A946 /* PVVecXCore+Controls.mm in Sources */, + B3C8A6612877D6B30037A946 /* PVVecXCore+Audio.m in Sources */, + B3EBB2032872B65700EAEB37 /* PVVecXCore+Video.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* vecx-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = vecx; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = vecx; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + NDEBUG, + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-vecx/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVVecX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVVecX"; + PRODUCT_NAME = PVVecX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = vecx; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "vecx-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "vecx-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "vecx-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-vecx/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + NDEBUG, + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-vecx/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVVecX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVVecX"; + PRODUCT_NAME = PVVecX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVVecX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVVecX"; + PRODUCT_NAME = PVVecX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "vecx" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "vecx-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVVecX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVVecX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/VecX/PVVecX.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/VecX/PVVecX.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/VecX/PVVecX.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/VecX/PVVecX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/VecX/PVVecX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/VecX/PVVecX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/VecX/PVVecX.xcodeproj/xcshareddata/xcschemes/PVVecX.xcscheme b/Cores/VecX/PVVecX.xcodeproj/xcshareddata/xcschemes/PVVecX.xcscheme new file mode 100644 index 0000000000..301fffebc1 --- /dev/null +++ b/Cores/VecX/PVVecX.xcodeproj/xcshareddata/xcschemes/PVVecX.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/VecX/PVVecX/Core.plist b/Cores/VecX/PVVecX/Core.plist new file mode 100644 index 0000000000..dd415ab40a --- /dev/null +++ b/Cores/VecX/PVVecX/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.VecX + PVPrincipleClass + PVVecXCore + PVSupportedSystems + + com.provenance.vectrex + + PVProjectName + VecX + PVProjectURL + https://github.com/libretro/libretro-vecx + PVProjectVersion + a4ae282 + + diff --git a/Cores/VecX/PVVecX/Info.plist b/Cores/VecX/PVVecX/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/VecX/PVVecX/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/VecX/PVVecX/PVVecX.h b/Cores/VecX/PVVecX/PVVecX.h new file mode 100644 index 0000000000..42548bb10a --- /dev/null +++ b/Cores/VecX/PVVecX/PVVecX.h @@ -0,0 +1,18 @@ +// +// PVVecX.h +// PVVecX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVVecX. +FOUNDATION_EXPORT double PVVecXVersionNumber; + +//! Project version string for PVVecX. +FOUNDATION_EXPORT const unsigned char PVVecXVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/VecX/libretro-vecx b/Cores/VecX/libretro-vecx new file mode 160000 index 0000000000..0afa5ee84e --- /dev/null +++ b/Cores/VecX/libretro-vecx @@ -0,0 +1 @@ +Subproject commit 0afa5ee84e37c9d42c89d1396e62b0fd82050c59 diff --git a/Cores/VecXGL b/Cores/VecXGL deleted file mode 160000 index c44ef42761..0000000000 --- a/Cores/VecXGL +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c44ef4276172b5cf96632d8863e1fdc3d6970d1b diff --git a/Cores/VirtualJaguar b/Cores/VirtualJaguar index 6837e5573e..cdec1a72e5 160000 --- a/Cores/VirtualJaguar +++ b/Cores/VirtualJaguar @@ -1 +1 @@ -Subproject commit 6837e5573eed71696788b33963dca6f073c27b62 +Subproject commit cdec1a72e5bf1446d067bf7ed4a31c42a71454d4 diff --git a/Cores/VisualBoyAdvance-M/GBA/PVGBA-Prefix.pch b/Cores/VisualBoyAdvance-M/GBA/PVGBA-Prefix.pch index 3fdee9d3d6..12bd3bf15b 100644 --- a/Cores/VisualBoyAdvance-M/GBA/PVGBA-Prefix.pch +++ b/Cores/VisualBoyAdvance-M/GBA/PVGBA-Prefix.pch @@ -5,6 +5,6 @@ // #ifdef __OBJC__ - #import + #import #import #endif diff --git a/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm b/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm index e29c145c51..43a60e4514 100644 --- a/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm +++ b/Cores/VisualBoyAdvance-M/GBA/PVGBAEmulatorCore.mm @@ -27,7 +27,7 @@ #import "PVGBAEmulatorCore.h" #import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import diff --git a/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/project.pbxproj b/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/project.pbxproj index 4b1d7a3f37..cefd19c1c1 100644 --- a/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/project.pbxproj +++ b/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/project.pbxproj @@ -7,20 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - B324C63721920D96009F4EDC /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5261DEA7C410068D057 /* libz.tbd */; }; B324C63921920DAC009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63821920DAC009F4EDC /* PVSupport.framework */; }; - B324C63C21920DCD009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C63B21920DCD009F4EDC /* PVSupport.framework */; }; B3547B542058587300CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B532058587300CFF7D8 /* Core.plist */; }; - B3547B552058587300CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B532058587300CFF7D8 /* Core.plist */; }; B3AF47E121072B63002211EE /* vba-over.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47E021072B63002211EE /* vba-over.ini */; }; - B3AF47E221072B63002211EE /* vba-over.ini in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47E021072B63002211EE /* vba-over.ini */; }; B3C9D4BC1DEA77DF0068D057 /* PVGBA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D4BA1DEA77DF0068D057 /* PVGBA.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D4D21DEA78050068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4D11DEA78050068D057 /* OpenGLES.framework */; }; - B3C9D4D41DEA780A0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4D31DEA780A0068D057 /* Foundation.framework */; }; - B3C9D4D61DEA780E0068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D4D51DEA780E0068D057 /* UIKit.framework */; }; - B3C9D4D91DEA78210068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A9FBE161ABD1B46004E778B /* OpenGLES.framework */; platformFilter = ios; }; B3C9D4DA1DEA782C0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A9FBE0A1ABD1289004E778B /* Foundation.framework */; }; - B3C9D4DB1DEA78310068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A9FBE141ABD1B41004E778B /* UIKit.framework */; }; B3C9D4DC1DEA78550068D057 /* GBA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC9A1ABD0FEF004E778B /* GBA.cpp */; }; B3C9D4DD1DEA78550068D057 /* Effects_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC411ABD0FEF004E778B /* Effects_Buffer.cpp */; }; B3C9D4DE1DEA78550068D057 /* EEprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC921ABD0FEF004E778B /* EEprom.cpp */; }; @@ -55,44 +46,8 @@ B3C9D4FB1DEA78550068D057 /* RTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCAF1ABD0FEF004E778B /* RTC.cpp */; }; B3C9D4FC1DEA78550068D057 /* Flash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC961ABD0FEF004E778B /* Flash.cpp */; }; B3C9D4FD1DEA78550068D057 /* Gb_Apu_State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC451ABD0FEF004E778B /* Gb_Apu_State.cpp */; }; - B3C9D4FE1DEA78550068D057 /* GBA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC9A1ABD0FEF004E778B /* GBA.cpp */; }; - B3C9D4FF1DEA78550068D057 /* Effects_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC411ABD0FEF004E778B /* Effects_Buffer.cpp */; }; - B3C9D5001DEA78550068D057 /* EEprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC921ABD0FEF004E778B /* EEprom.cpp */; }; - B3C9D5011DEA78550068D057 /* Gb_Apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC431ABD0FEF004E778B /* Gb_Apu.cpp */; }; - B3C9D5021DEA78550068D057 /* GBA-arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC981ABD0FEF004E778B /* GBA-arm.cpp */; }; - B3C9D5031DEA78550068D057 /* Globals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCA61ABD0FEF004E778B /* Globals.cpp */; }; - B3C9D5041DEA78550068D057 /* Util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBD211ABD0FEF004E778B /* Util.cpp */; }; - B3C9D5051DEA78550068D057 /* Multi_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC481ABD0FEF004E778B /* Multi_Buffer.cpp */; }; - B3C9D5061DEA78550068D057 /* GBAGfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC9F1ABD0FEF004E778B /* GBAGfx.cpp */; }; - B3C9D5071DEA78550068D057 /* CheatSearch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC901ABD0FEF004E778B /* CheatSearch.cpp */; }; - B3C9D5081DEA78550068D057 /* armdis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC8A1ABD0FEF004E778B /* armdis.cpp */; }; - B3C9D5091DEA78550068D057 /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCB11ABD0FEF004E778B /* Sound.cpp */; }; - B3C9D50A1DEA78550068D057 /* Mode1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCA91ABD0FEF004E778B /* Mode1.cpp */; }; - B3C9D50B1DEA78550068D057 /* Sram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCB31ABD0FEF004E778B /* Sram.cpp */; }; - B3C9D50C1DEA78550068D057 /* Mode4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCAC1ABD0FEF004E778B /* Mode4.cpp */; }; - B3C9D50D1DEA78550068D057 /* gbafilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC9D1ABD0FEF004E778B /* gbafilter.cpp */; }; - B3C9D50E1DEA78550068D057 /* Mode5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCAD1ABD0FEF004E778B /* Mode5.cpp */; }; - B3C9D50F1DEA78550068D057 /* Blip_Buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC3F1ABD0FEF004E778B /* Blip_Buffer.cpp */; }; - B3C9D5101DEA78550068D057 /* agbprint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC881ABD0FEF004E778B /* agbprint.cpp */; }; - B3C9D5111DEA78550068D057 /* PVGBAEmulatorCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC381ABD0FE2004E778B /* PVGBAEmulatorCore.mm */; }; - B3C9D5121DEA78550068D057 /* GBALink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCA21ABD0FEF004E778B /* GBALink.cpp */; }; - B3C9D5131DEA78550068D057 /* Mode0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCA81ABD0FEF004E778B /* Mode0.cpp */; }; - B3C9D5141DEA78550068D057 /* memgzio.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC4F1ABD0FEF004E778B /* memgzio.c */; }; - B3C9D5151DEA78550068D057 /* Cheats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC8E1ABD0FEF004E778B /* Cheats.cpp */; }; - B3C9D5161DEA78550068D057 /* Mode3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCAB1ABD0FEF004E778B /* Mode3.cpp */; }; - B3C9D5171DEA78550068D057 /* GBASockClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCA41ABD0FEF004E778B /* GBASockClient.cpp */; }; - B3C9D5181DEA78550068D057 /* Gb_Oscs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC461ABD0FEF004E778B /* Gb_Oscs.cpp */; }; - B3C9D5191DEA78550068D057 /* elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC941ABD0FEF004E778B /* elf.cpp */; }; - B3C9D51A1DEA78550068D057 /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC8C1ABD0FEF004E778B /* bios.cpp */; }; - B3C9D51B1DEA78550068D057 /* GBA-thumb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC991ABD0FEF004E778B /* GBA-thumb.cpp */; }; - B3C9D51C1DEA78550068D057 /* Mode2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCAA1ABD0FEF004E778B /* Mode2.cpp */; }; - B3C9D51D1DEA78550068D057 /* RTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBCAF1ABD0FEF004E778B /* RTC.cpp */; }; - B3C9D51E1DEA78550068D057 /* Flash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC961ABD0FEF004E778B /* Flash.cpp */; }; - B3C9D51F1DEA78550068D057 /* Gb_Apu_State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A9FBC451ABD0FEF004E778B /* Gb_Apu_State.cpp */; }; B3C9D5271DEA7C410068D057 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5261DEA7C410068D057 /* libz.tbd */; }; B3C9D52A1DEA7D040068D057 /* PVGBAEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A9FBC371ABD0FE2004E778B /* PVGBAEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D52B1DEA7D1A0068D057 /* PVGBA.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D4BA1DEA77DF0068D057 /* PVGBA.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D52C1DEA7D200068D057 /* PVGBAEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A9FBC371ABD0FE2004E778B /* PVGBAEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -187,7 +142,6 @@ B3C9D4B81DEA77DF0068D057 /* PVGBA.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGBA.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D4BA1DEA77DF0068D057 /* PVGBA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVGBA.h; sourceTree = ""; }; B3C9D4BB1DEA77DF0068D057 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3C9D4C61DEA77E90068D057 /* PVGBA.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVGBA.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D4D11DEA78050068D057 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; B3C9D4D31DEA780A0068D057 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B3C9D4D51DEA780E0068D057 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; @@ -201,21 +155,7 @@ files = ( B324C63921920DAC009F4EDC /* PVSupport.framework in Frameworks */, B3C9D5271DEA7C410068D057 /* libz.tbd in Frameworks */, - B3C9D4DB1DEA78310068D057 /* UIKit.framework in Frameworks */, B3C9D4DA1DEA782C0068D057 /* Foundation.framework in Frameworks */, - B3C9D4D91DEA78210068D057 /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C9D4C21DEA77E90068D057 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B324C63C21920DCD009F4EDC /* PVSupport.framework in Frameworks */, - B324C63721920D96009F4EDC /* libz.tbd in Frameworks */, - B3C9D4D61DEA780E0068D057 /* UIKit.framework in Frameworks */, - B3C9D4D41DEA780A0068D057 /* Foundation.framework in Frameworks */, - B3C9D4D21DEA78050068D057 /* OpenGLES.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -236,7 +176,6 @@ isa = PBXGroup; children = ( B3C9D4B81DEA77DF0068D057 /* PVGBA.framework */, - B3C9D4C61DEA77E90068D057 /* PVGBA.framework */, ); name = Products; sourceTree = ""; @@ -416,21 +355,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D4C31DEA77E90068D057 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C9D52B1DEA7D1A0068D057 /* PVGBA.h in Headers */, - B3C9D52C1DEA7D200068D057 /* PVGBAEmulatorCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B3C9D4B71DEA77DF0068D057 /* PVGBA-iOS */ = { + B3C9D4B71DEA77DF0068D057 /* PVGBA */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C9D4BD1DEA77DF0068D057 /* Build configuration list for PBXNativeTarget "PVGBA-iOS" */; + buildConfigurationList = B3C9D4BD1DEA77DF0068D057 /* Build configuration list for PBXNativeTarget "PVGBA" */; buildPhases = ( B3C9D4B51DEA77DF0068D057 /* Headers */, B3C9D4B31DEA77DF0068D057 /* Sources */, @@ -441,29 +371,11 @@ ); dependencies = ( ); - name = "PVGBA-iOS"; + name = PVGBA; productName = PVGBA; productReference = B3C9D4B81DEA77DF0068D057 /* PVGBA.framework */; productType = "com.apple.product-type.framework"; }; - B3C9D4C51DEA77E90068D057 /* PVGBA-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C9D4CB1DEA77E90068D057 /* Build configuration list for PBXNativeTarget "PVGBA-tvOS" */; - buildPhases = ( - B3C9D4C31DEA77E90068D057 /* Headers */, - B3C9D4C11DEA77E90068D057 /* Sources */, - B3C9D4C21DEA77E90068D057 /* Frameworks */, - B3C9D4C41DEA77E90068D057 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVGBA-tvOS"; - productName = "PVGBA tvOS"; - productReference = B3C9D4C61DEA77E90068D057 /* PVGBA.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -478,9 +390,6 @@ B3C9D4B71DEA77DF0068D057 = { CreatedOnToolsVersion = 8.1; }; - B3C9D4C51DEA77E90068D057 = { - CreatedOnToolsVersion = 8.1; - }; }; }; buildConfigurationList = 1A9FBC151ABD0DA7004E778B /* Build configuration list for PBXProject "PVGBA" */; @@ -496,8 +405,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C9D4B71DEA77DF0068D057 /* PVGBA-iOS */, - B3C9D4C51DEA77E90068D057 /* PVGBA-tvOS */, + B3C9D4B71DEA77DF0068D057 /* PVGBA */, ); }; /* End PBXProject section */ @@ -512,15 +420,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D4C41DEA77E90068D057 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3AF47E221072B63002211EE /* vba-over.ini in Resources */, - B3547B552058587300CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -565,47 +464,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D4C11DEA77E90068D057 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C9D4FE1DEA78550068D057 /* GBA.cpp in Sources */, - B3C9D4FF1DEA78550068D057 /* Effects_Buffer.cpp in Sources */, - B3C9D5001DEA78550068D057 /* EEprom.cpp in Sources */, - B3C9D5011DEA78550068D057 /* Gb_Apu.cpp in Sources */, - B3C9D5021DEA78550068D057 /* GBA-arm.cpp in Sources */, - B3C9D5031DEA78550068D057 /* Globals.cpp in Sources */, - B3C9D5041DEA78550068D057 /* Util.cpp in Sources */, - B3C9D5051DEA78550068D057 /* Multi_Buffer.cpp in Sources */, - B3C9D5061DEA78550068D057 /* GBAGfx.cpp in Sources */, - B3C9D5071DEA78550068D057 /* CheatSearch.cpp in Sources */, - B3C9D5081DEA78550068D057 /* armdis.cpp in Sources */, - B3C9D5091DEA78550068D057 /* Sound.cpp in Sources */, - B3C9D50A1DEA78550068D057 /* Mode1.cpp in Sources */, - B3C9D50B1DEA78550068D057 /* Sram.cpp in Sources */, - B3C9D50C1DEA78550068D057 /* Mode4.cpp in Sources */, - B3C9D50D1DEA78550068D057 /* gbafilter.cpp in Sources */, - B3C9D50E1DEA78550068D057 /* Mode5.cpp in Sources */, - B3C9D50F1DEA78550068D057 /* Blip_Buffer.cpp in Sources */, - B3C9D5101DEA78550068D057 /* agbprint.cpp in Sources */, - B3C9D5111DEA78550068D057 /* PVGBAEmulatorCore.mm in Sources */, - B3C9D5121DEA78550068D057 /* GBALink.cpp in Sources */, - B3C9D5131DEA78550068D057 /* Mode0.cpp in Sources */, - B3C9D5141DEA78550068D057 /* memgzio.c in Sources */, - B3C9D5151DEA78550068D057 /* Cheats.cpp in Sources */, - B3C9D5161DEA78550068D057 /* Mode3.cpp in Sources */, - B3C9D5171DEA78550068D057 /* GBASockClient.cpp in Sources */, - B3C9D5181DEA78550068D057 /* Gb_Oscs.cpp in Sources */, - B3C9D5191DEA78550068D057 /* elf.cpp in Sources */, - B3C9D51A1DEA78550068D057 /* bios.cpp in Sources */, - B3C9D51B1DEA78550068D057 /* GBA-thumb.cpp in Sources */, - B3C9D51C1DEA78550068D057 /* Mode2.cpp in Sources */, - B3C9D51D1DEA78550068D057 /* RTC.cpp in Sources */, - B3C9D51E1DEA78550068D057 /* Flash.cpp in Sources */, - B3C9D51F1DEA78550068D057 /* Gb_Apu_State.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -657,7 +515,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/GBA/GBACore\""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -706,7 +564,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/GBA/GBACore\""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -756,7 +614,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "\"$(SRCROOT)/GBA/GBACore\""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = NO; SDKROOT = iphoneos; @@ -788,7 +646,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVGBA/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -806,53 +664,11 @@ PRODUCT_NAME = PVGBA; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5192191A3CF009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "GBA/PVGBA-Prefix.pch"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVGBA/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_CFLAGS = ( - "-DC_CORE", - "-DFINAL_VERSION", - "-DNO_LINK", - "-DNO_PNG", - "-DTILED_RENDERING", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGBA"; - PRODUCT_NAME = PVGBA; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -881,7 +697,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVGBA/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -899,7 +715,11 @@ PRODUCT_NAME = PVGBA; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -928,7 +748,7 @@ GCC_WARN_INHIBIT_ALL_WARNINGS = YES; INFOPLIST_FILE = PVGBA/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -946,99 +766,11 @@ PRODUCT_NAME = PVGBA; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B3C9D4CC1DEA77E90068D057 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "GBA/PVGBA-Prefix.pch"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVGBA/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_CFLAGS = ( - "-DC_CORE", - "-DFINAL_VERSION", - "-DNO_LINK", - "-DNO_PNG", - "-DTILED_RENDERING", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGBA"; - PRODUCT_NAME = PVGBA; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3C9D4CD1DEA77E90068D057 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "GBA/PVGBA-Prefix.pch"; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - INFOPLIST_FILE = PVGBA/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_CFLAGS = ( - "-DC_CORE", - "-DFINAL_VERSION", - "-DNO_LINK", - "-DNO_PNG", - "-DTILED_RENDERING", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVGBA"; - PRODUCT_NAME = PVGBA; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1057,7 +789,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D4BD1DEA77DF0068D057 /* Build configuration list for PBXNativeTarget "PVGBA-iOS" */ = { + B3C9D4BD1DEA77DF0068D057 /* Build configuration list for PBXNativeTarget "PVGBA" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C9D4BE1DEA77DF0068D057 /* Debug */, @@ -1067,16 +799,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D4CB1DEA77E90068D057 /* Build configuration list for PBXNativeTarget "PVGBA-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3C9D4CC1DEA77E90068D057 /* Debug */, - B3C9D4CD1DEA77E90068D057 /* Release */, - B324C5192191A3CF009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 1A9FBC121ABD0DA7004E778B /* Project object */; diff --git a/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBA.xcscheme b/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBA.xcscheme index 5c28cefb98..2ee95ce258 100644 --- a/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBA.xcscheme +++ b/Cores/VisualBoyAdvance-M/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBA.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D4B71DEA77DF0068D057" BuildableName = "PVGBA.framework" - BlueprintName = "PVGBA-iOS" + BlueprintName = "PVGBA" ReferencedContainer = "container:PVGBA.xcodeproj"> @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:../../PVSupport/PVSupport.xcodeproj"> @@ -59,7 +59,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D4B71DEA77DF0068D057" BuildableName = "PVGBA.framework" - BlueprintName = "PVGBA-iOS" + BlueprintName = "PVGBA" ReferencedContainer = "container:PVGBA.xcodeproj"> @@ -75,7 +75,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D4B71DEA77DF0068D057" BuildableName = "PVGBA.framework" - BlueprintName = "PVGBA-iOS" + BlueprintName = "PVGBA" ReferencedContainer = "container:PVGBA.xcodeproj"> diff --git a/Cores/VisualBoyAdvance-M/PVGBA/PVGBA.h b/Cores/VisualBoyAdvance-M/PVGBA/PVGBA.h index 226bcabf7a..646009b7a9 100644 --- a/Cores/VisualBoyAdvance-M/PVGBA/PVGBA.h +++ b/Cores/VisualBoyAdvance-M/PVGBA/PVGBA.h @@ -6,7 +6,7 @@ // Copyright © 2016 JamSoft. All rights reserved. // -#import +#import //! Project version number for PVGBA. FOUNDATION_EXPORT double PVGBAVersionNumber; diff --git a/Cores/Yabause/BuildFlags.xcconfig b/Cores/Yabause/BuildFlags.xcconfig new file mode 100644 index 0000000000..18c3ab873d --- /dev/null +++ b/Cores/Yabause/BuildFlags.xcconfig @@ -0,0 +1,28 @@ +// +// BuildFlags.xcconfig +// PVYabause +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 HAVE_SSE=1 FASTMATH=1 HAVE_THREADS=1 HAVE_MUSASHI=1 USE_RGB_565=1 HAVE_SYS_PARAM_H=1 ENABLE_ZLIB=1 ENABLE_CHD=1 NO_CLI=1 OBJ_C IOS USE_POSIX_MEMALIGN __RETRO_ARM__ USE_POSIX_MEMALIGN YAB_WANT_DIRECTSOUND=ON YAB_WANT_DIRECTINPUT=ON YAB_NETWORK=ON YAB_WANT_GDBSTUB=ON YAB_WANT_GLUT=OFF +// USE_PLAY_JIT=0 USE_SCSP2=0 ENABLE_TSUNAMI=0 DEBUG=0 DEBUG_ASAN=0 DEBUG_UBSAN=0 DEBUG_TSAN=0 DYNAREC=0 HAVE_GRIFFIN=0 HAVE_UWP=0 HAVE_FSEEKO=0 ARCH_IS_LINUX=0 ARCH_IS_MACOSX=0 ARCH_IS_WINDOWS=0 +OTHER_CFLAGS = $(inherited) -frtti -ObjC +// -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/Yabause/PVYabause-Prefix.pch b/Cores/Yabause/PVYabause-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/Yabause/PVYabause-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/Yabause/PVYabause.h b/Cores/Yabause/PVYabause.h new file mode 100644 index 0000000000..8957430691 --- /dev/null +++ b/Cores/Yabause/PVYabause.h @@ -0,0 +1,18 @@ +// +// PVYabause.h +// PVYabause +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVYabause. +FOUNDATION_EXPORT double PVYabauseVersionNumber; + +//! Project version string for PVYabause. +FOUNDATION_EXPORT const unsigned char PVYabauseVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/Yabause/PVYabause.xcodeproj/project.pbxproj b/Cores/Yabause/PVYabause.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..50a35430d6 --- /dev/null +++ b/Cores/Yabause/PVYabause.xcodeproj/project.pbxproj @@ -0,0 +1,5733 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libyabause.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libyabause.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C31B2191964F009F4EDC /* AVFoundation.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C72872553D00B3F6DA /* PVYabauseCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVYabauseCore.mm */; }; + B37022C82872553E00B3F6DA /* PVYabauseCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVYabauseCore.mm */; }; + B37022C92872554300B3F6DA /* PVYabauseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVYabauseCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CA2872554300B3F6DA /* PVYabauseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVYabauseCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CC2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVYabause.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVYabause.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CE2872558F00B3F6DA /* PVYabause.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVYabause.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libyabause-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libyabause-libretro.a */; }; + B39768FB2859E23A00558958 /* libyabause-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B39768F72859E18B00558958 /* libyabause-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3A41BF0286E76490054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */; }; + B3B104AF218F26F400210C39 /* libyabause.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3447F91218BEE3F00557ACE /* libyabause.a */; }; + B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3B104B8218F281B00210C39 /* PVSupport.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3FF63CA2873E37000829C14 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FB22872965000EAEB37 /* error.c */; }; + B3FF63CB2873E37000829C14 /* cs1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9BB42872964D00EAEB37 /* cs1.c */; }; + B3FF63CC2873E37000829C14 /* m68kd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0BA2872965100EAEB37 /* m68kd.c */; }; + B3FF63CD2873E37000829C14 /* bios.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D902872964E00EAEB37 /* bios.c */; }; + B3FF63CE2873E37000829C14 /* cs2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9B762872964D00EAEB37 /* cs2.c */; }; + B3FF63CF2873E37000829C14 /* cdbase.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9BAD2872964D00EAEB37 /* cdbase.c */; }; + B3FF63D02873E37000829C14 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D922872964E00EAEB37 /* debug.c */; }; + B3FF63D12873E37000829C14 /* cheat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9F812872964F00EAEB37 /* cheat.c */; }; + B3FF63D22873E37000829C14 /* cs0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FAD2872965000EAEB37 /* cs0.c */; }; + B3FF63D32873E37000829C14 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9B8B2872964D00EAEB37 /* memory.c */; }; + B3FF63D42873E37000829C14 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FB22872965000EAEB37 /* error.c */; }; + B3FF63D52873E37000829C14 /* cs1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9BB42872964D00EAEB37 /* cs1.c */; }; + B3FF63D62873E37000829C14 /* m68kd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0BA2872965100EAEB37 /* m68kd.c */; }; + B3FF63D72873E37000829C14 /* bios.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D902872964E00EAEB37 /* bios.c */; }; + B3FF63D82873E37000829C14 /* cs2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9B762872964D00EAEB37 /* cs2.c */; }; + B3FF63D92873E37000829C14 /* cdbase.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9BAD2872964D00EAEB37 /* cdbase.c */; }; + B3FF63DA2873E37000829C14 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D922872964E00EAEB37 /* debug.c */; }; + B3FF63DB2873E37000829C14 /* cheat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9F812872964F00EAEB37 /* cheat.c */; }; + B3FF63DC2873E37000829C14 /* cs0.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FAD2872965000EAEB37 /* cs0.c */; }; + B3FF63DD2873E37000829C14 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9B8B2872964D00EAEB37 /* memory.c */; }; + B3FF63DE2873E3AA00829C14 /* vdp2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0B62872965100EAEB37 /* vdp2.c */; }; + B3FF63DF2873E3AA00829C14 /* smpc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D862872964E00EAEB37 /* smpc.c */; }; + B3FF63E02873E3AA00829C14 /* scsp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FAE2872965000EAEB37 /* scsp.c */; }; + B3FF63E12873E3AA00829C14 /* yabause.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D912872964E00EAEB37 /* yabause.c */; }; + B3FF63E22873E3AA00829C14 /* sh2d.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FB52872965000EAEB37 /* sh2d.c */; }; + B3FF63E32873E3AA00829C14 /* sh2int.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9B8E2872964D00EAEB37 /* sh2int.c */; }; + B3FF63E42873E3AA00829C14 /* sh2idle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0602872965000EAEB37 /* sh2idle.c */; }; + B3FF63E52873E3AA00829C14 /* vdp1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FB92872965000EAEB37 /* vdp1.c */; }; + B3FF63E62873E3AA00829C14 /* profile.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0192872965000EAEB37 /* profile.c */; }; + B3FF63E72873E3AA00829C14 /* scu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D7D2872964E00EAEB37 /* scu.c */; }; + B3FF63E82873E3AA00829C14 /* netlink.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0AF2872965100EAEB37 /* netlink.c */; }; + B3FF63E92873E3AA00829C14 /* sh2core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D8E2872964E00EAEB37 /* sh2core.c */; }; + B3FF63EA2873E3AA00829C14 /* peripheral.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9BAF2872964D00EAEB37 /* peripheral.c */; }; + B3FF63EB2873E3AA00829C14 /* vdp2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0B62872965100EAEB37 /* vdp2.c */; }; + B3FF63EC2873E3AA00829C14 /* smpc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D862872964E00EAEB37 /* smpc.c */; }; + B3FF63ED2873E3AA00829C14 /* scsp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FAE2872965000EAEB37 /* scsp.c */; }; + B3FF63EE2873E3AA00829C14 /* yabause.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D912872964E00EAEB37 /* yabause.c */; }; + B3FF63EF2873E3AA00829C14 /* sh2d.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FB52872965000EAEB37 /* sh2d.c */; }; + B3FF63F02873E3AA00829C14 /* sh2int.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9B8E2872964D00EAEB37 /* sh2int.c */; }; + B3FF63F12873E3AA00829C14 /* sh2idle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0602872965000EAEB37 /* sh2idle.c */; }; + B3FF63F22873E3AA00829C14 /* vdp1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9FB92872965000EAEB37 /* vdp1.c */; }; + B3FF63F32873E3AA00829C14 /* profile.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0192872965000EAEB37 /* profile.c */; }; + B3FF63F42873E3AA00829C14 /* scu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D7D2872964E00EAEB37 /* scu.c */; }; + B3FF63F52873E3AA00829C14 /* netlink.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0AF2872965100EAEB37 /* netlink.c */; }; + B3FF63F62873E3AA00829C14 /* sh2core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D8E2872964E00EAEB37 /* sh2core.c */; }; + B3FF63F72873E3AA00829C14 /* peripheral.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9BAF2872964D00EAEB37 /* peripheral.c */; }; + B3FF63F82873E3BA00829C14 /* coffelf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0522872965000EAEB37 /* coffelf.c */; }; + B3FF63F92873E3BA00829C14 /* m68kcore.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D882872964E00EAEB37 /* m68kcore.c */; }; + B3FF63FA2873E3BA00829C14 /* coffelf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA0522872965000EAEB37 /* coffelf.c */; }; + B3FF63FB2873E3BA00829C14 /* m68kcore.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D882872964E00EAEB37 /* m68kcore.c */; }; + B3FF64122873E52700829C14 /* yabause_griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D982872964E00EAEB37 /* yabause_griffin.c */; }; + B3FF64132873E52700829C14 /* yabause_griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EB9D982872964E00EAEB37 /* yabause_griffin.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; + B39768FC2859E23A00558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B39768ED2859E18B00558958; + remoteInfo = "dos-box-libretro-tvOS"; + }; + B3EBA0F62872965100EAEB37 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3EB9F9A2872965000EAEB37 /* Yabause.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2A7D3A55115BA3E700DE3BD1; + remoteInfo = gen68k; + }; + B3EBA0F82872965100EAEB37 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3EB9F9A2872965000EAEB37 /* Yabause.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8D1107320486CEB800E47090; + remoteInfo = Yabause; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447F8D218BEE3F00557ACE /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B39768F22859E18B00558958 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libyabause.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libyabause.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libyabause-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libyabause-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B3447EE6218BEDD200557ACE /* PVYabause.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVYabause.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3447F91218BEE3F00557ACE /* libyabause.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libyabause.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVYabause-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVYabause-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVYabause.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVYabause.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVYabause.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVYabause.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVYabauseCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVYabauseCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVYabauseCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVYabauseCore.mm; sourceTree = ""; }; + B39768F72859E18B00558958 /* libyabause-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libyabause-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVYabause.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVYabause.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3EB9AF32872964C00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9AF42872964C00EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EB9AF62872964C00EAEB37 /* SegaSaturn */ = {isa = PBXFileReference; lastKnownFileType = text; path = SegaSaturn; sourceTree = ""; }; + B3EB9AF72872964C00EAEB37 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3EB9AF82872964C00EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EB9AFA2872964C00EAEB37 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B3EB9AFB2872964C00EAEB37 /* cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cart.c; sourceTree = ""; }; + B3EB9AFC2872964C00EAEB37 /* scsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scsp.h; sourceTree = ""; }; + B3EB9AFD2872964C00EAEB37 /* m68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; + B3EB9AFE2872964C00EAEB37 /* dsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp.c; sourceTree = ""; }; + B3EB9AFF2872964C00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9B002872964C00EAEB37 /* slavesh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = slavesh.h; sourceTree = ""; }; + B3EB9B012872964C00EAEB37 /* vdp1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdp1.h; sourceTree = ""; }; + B3EB9B022872964C00EAEB37 /* tests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tests.h; sourceTree = ""; }; + B3EB9B032872964C00EAEB37 /* sh2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2.h; sourceTree = ""; }; + B3EB9B042872964C00EAEB37 /* cdb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdb.c; sourceTree = ""; }; + B3EB9B052872964C00EAEB37 /* scu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scu.c; sourceTree = ""; }; + B3EB9B072872964C00EAEB37 /* bart.lk */ = {isa = PBXFileReference; lastKnownFileType = text; path = bart.lk; sourceTree = ""; }; + B3EB9B082872964C00EAEB37 /* crt0.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = crt0.s; sourceTree = ""; }; + B3EB9B092872964C00EAEB37 /* vdp2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdp2.h; sourceTree = ""; }; + B3EB9B0A2872964C00EAEB37 /* mpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mpeg.c; sourceTree = ""; }; + B3EB9B0B2872964C00EAEB37 /* smpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = smpc.c; sourceTree = ""; }; + B3EB9B0C2872964C00EAEB37 /* m68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68k.c; sourceTree = ""; }; + B3EB9B0D2872964C00EAEB37 /* cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cart.h; sourceTree = ""; }; + B3EB9B0E2872964C00EAEB37 /* scsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scsp.c; sourceTree = ""; }; + B3EB9B0F2872964C00EAEB37 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3EB9B102872964C00EAEB37 /* tests.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tests.c; sourceTree = ""; }; + B3EB9B112872964C00EAEB37 /* vdp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdp1.c; sourceTree = ""; }; + B3EB9B122872964C00EAEB37 /* slavesh.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = slavesh.c; sourceTree = ""; }; + B3EB9B132872964C00EAEB37 /* dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; + B3EB9B152872964C00EAEB37 /* disc.scr */ = {isa = PBXFileReference; lastKnownFileType = text; path = disc.scr; sourceTree = ""; }; + B3EB9B172872964C00EAEB37 /* MOVIE.m1v */ = {isa = PBXFileReference; lastKnownFileType = file; path = MOVIE.m1v; sourceTree = ""; }; + B3EB9B182872964C00EAEB37 /* INTRLV2.BIN */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = INTRLV2.BIN; sourceTree = ""; }; + B3EB9B192872964C00EAEB37 /* INTRLV3.BIN */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = INTRLV3.BIN; sourceTree = ""; }; + B3EB9B1A2872964C00EAEB37 /* INTRLV1.BIN */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = INTRLV1.BIN; sourceTree = ""; }; + B3EB9B1B2872964C00EAEB37 /* XAMC.XA */ = {isa = PBXFileReference; lastKnownFileType = text; path = XAMC.XA; sourceTree = ""; }; + B3EB9B1C2872964C00EAEB37 /* MOVIE.MP2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = MOVIE.MP2; sourceTree = ""; }; + B3EB9B1E2872964C00EAEB37 /* BIGFILE.BIN */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = BIGFILE.BIN; sourceTree = ""; }; + B3EB9B1F2872964C00EAEB37 /* IP.BIN */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = IP.BIN; sourceTree = ""; }; + B3EB9B202872964C00EAEB37 /* cdda-license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "cdda-license.txt"; sourceTree = ""; }; + B3EB9B212872964C00EAEB37 /* cdda.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = cdda.bin; sourceTree = ""; }; + B3EB9B222872964C00EAEB37 /* cdb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdb.h; sourceTree = ""; }; + B3EB9B232872964C00EAEB37 /* sh2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2.c; sourceTree = ""; }; + B3EB9B242872964C00EAEB37 /* mpeg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mpeg.h; sourceTree = ""; }; + B3EB9B252872964C00EAEB37 /* vdp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdp2.c; sourceTree = ""; }; + B3EB9B262872964C00EAEB37 /* smpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smpc.h; sourceTree = ""; }; + B3EB9B272872964C00EAEB37 /* scu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scu.h; sourceTree = ""; }; + B3EB9B292872964C00EAEB37 /* crowdin_translate.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_translate.py; sourceTree = ""; }; + B3EB9B2A2872964C00EAEB37 /* download_workflow.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = download_workflow.py; sourceTree = ""; }; + B3EB9B2B2872964C00EAEB37 /* core_option_regex.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = core_option_regex.py; sourceTree = ""; }; + B3EB9B2C2872964C00EAEB37 /* upload_workflow.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = upload_workflow.py; sourceTree = ""; }; + B3EB9B2D2872964C00EAEB37 /* crowdin_source_upload.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_source_upload.py; sourceTree = ""; }; + B3EB9B2E2872964C00EAEB37 /* crowdin.yaml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = crowdin.yaml; sourceTree = ""; }; + B3EB9B2F2872964C00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EB9B302872964C00EAEB37 /* core_option_translation.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = core_option_translation.py; sourceTree = ""; }; + B3EB9B312872964C00EAEB37 /* initial_sync.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = initial_sync.py; sourceTree = ""; }; + B3EB9B322872964C00EAEB37 /* v1_to_v2_converter.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = v1_to_v2_converter.py; sourceTree = ""; }; + B3EB9B332872964C00EAEB37 /* crowdin_translation_download.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_translation_download.py; sourceTree = ""; }; + B3EB9B342872964C00EAEB37 /* crowdin_prep.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = crowdin_prep.py; sourceTree = ""; }; + B3EB9B372872964C00EAEB37 /* yabause_es_419.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_es_419.yts; sourceTree = ""; }; + B3EB9B382872964C00EAEB37 /* yabause_pt_BR.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_pt_BR.yts; sourceTree = ""; }; + B3EB9B392872964C00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9B3A2872964C00EAEB37 /* yabause_pt.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_pt.yts; sourceTree = ""; }; + B3EB9B3B2872964C00EAEB37 /* yabause_de.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_de.yts; sourceTree = ""; }; + B3EB9B3C2872964C00EAEB37 /* yabause_it.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_it.yts; sourceTree = ""; }; + B3EB9B3D2872964C00EAEB37 /* yabause_ko.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_ko.yts; sourceTree = ""; }; + B3EB9B3E2872964C00EAEB37 /* yabause_es.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_es.yts; sourceTree = ""; }; + B3EB9B3F2872964C00EAEB37 /* yabause_da.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_da.yts; sourceTree = ""; }; + B3EB9B402872964C00EAEB37 /* yabause_ru.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_ru.yts; sourceTree = ""; }; + B3EB9B412872964C00EAEB37 /* yabause_pl_PL.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_pl_PL.yts; sourceTree = ""; }; + B3EB9B422872964C00EAEB37 /* yabause_fr.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_fr.yts; sourceTree = ""; }; + B3EB9B432872964C00EAEB37 /* yabause_sv.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_sv.yts; sourceTree = ""; }; + B3EB9B442872964C00EAEB37 /* yabause_el.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_el.yts; sourceTree = ""; }; + B3EB9B452872964C00EAEB37 /* yabause_ja.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_ja.yts; sourceTree = ""; }; + B3EB9B462872964C00EAEB37 /* yabause_zh_TW.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_zh_TW.yts; sourceTree = ""; }; + B3EB9B472872964C00EAEB37 /* yabause_nl.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_nl.yts; sourceTree = ""; }; + B3EB9B482872964C00EAEB37 /* yabause_zh_CN.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_zh_CN.yts; sourceTree = ""; }; + B3EB9B492872964C00EAEB37 /* yabause_en.csv */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_en.csv; sourceTree = ""; }; + B3EB9B4A2872964C00EAEB37 /* yabause_ar.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_ar.yts; sourceTree = ""; }; + B3EB9B4B2872964C00EAEB37 /* yabause_tr.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_tr.yts; sourceTree = ""; }; + B3EB9B4C2872964C00EAEB37 /* yabause_lt.yts */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause_lt.yts; sourceTree = ""; }; + B3EB9B4D2872964C00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9B4E2872964C00EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EB9B4F2872964C00EAEB37 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3EB9B502872964C00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EB9B512872964C00EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EB9B532872964C00EAEB37 /* FindSDL2.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindSDL2.cmake; sourceTree = ""; }; + B3EB9B542872964C00EAEB37 /* FindFFmpeg.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindFFmpeg.cmake; sourceTree = ""; }; + B3EB9B552872964C00EAEB37 /* FindGLEW.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindGLEW.cmake; sourceTree = ""; }; + B3EB9B572872964C00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9B582872964C00EAEB37 /* Doxyfile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile.in; sourceTree = ""; }; + B3EB9B5A2872964C00EAEB37 /* permacjoy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = permacjoy.h; sourceTree = ""; }; + B3EB9B5B2872964C00EAEB37 /* sock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sock.h; sourceTree = ""; }; + B3EB9B5C2872964C00EAEB37 /* Makefile.dc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.dc; sourceTree = ""; }; + B3EB9B5D2872964C00EAEB37 /* mpeg_card.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mpeg_card.c; sourceTree = ""; }; + B3EB9B5E2872964C00EAEB37 /* fakeddk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fakeddk.h; sourceTree = ""; }; + B3EB9B5F2872964C00EAEB37 /* cd-windows.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cd-windows.c"; sourceTree = ""; }; + B3EB9B602872964C00EAEB37 /* yglcache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = yglcache.cpp; sourceTree = ""; }; + B3EB9B612872964C00EAEB37 /* error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + B3EB9B622872964C00EAEB37 /* gameinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gameinfo.c; sourceTree = ""; }; + B3EB9B632872964C00EAEB37 /* cheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheat.h; sourceTree = ""; }; + B3EB9B642872964C00EAEB37 /* sndwav.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sndwav.c; sourceTree = ""; }; + B3EB9B652872964C00EAEB37 /* scsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scsp.h; sourceTree = ""; }; + B3EB9B662872964C00EAEB37 /* cs0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cs0.h; sourceTree = ""; }; + B3EB9B672872964C00EAEB37 /* yglcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yglcache.c; sourceTree = ""; }; + B3EB9B682872964C00EAEB37 /* vidogl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vidogl.c; sourceTree = ""; }; + B3EB9B692872964C00EAEB37 /* sh2iasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2iasm.h; sourceTree = ""; }; + B3EB9B6A2872964C00EAEB37 /* logo.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = logo.ico; sourceTree = ""; }; + B3EB9B6B2872964C00EAEB37 /* scr-x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "scr-x.c"; sourceTree = ""; }; + B3EB9B6C2872964C00EAEB37 /* sndmac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndmac.h; sourceTree = ""; }; + B3EB9B6E2872964C00EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EB9B6F2872964C00EAEB37 /* yab_tsunami.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yab_tsunami.c; sourceTree = ""; }; + B3EB9B702872964C00EAEB37 /* Tsunami.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Tsunami.c; sourceTree = ""; }; + B3EB9B712872964D00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EB9B722872964D00EAEB37 /* Tsunami.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Tsunami.h; sourceTree = ""; }; + B3EB9B732872964D00EAEB37 /* TsunamiPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TsunamiPrivate.h; sourceTree = ""; }; + B3EB9B742872964D00EAEB37 /* yab_tsunami.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yab_tsunami.h; sourceTree = ""; }; + B3EB9B752872964D00EAEB37 /* yabause.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yabause.h; sourceTree = ""; }; + B3EB9B762872964D00EAEB37 /* cs2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cs2.c; sourceTree = ""; }; + B3EB9B772872964D00EAEB37 /* bios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bios.h; sourceTree = ""; }; + B3EB9B782872964D00EAEB37 /* sh2core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2core.h; sourceTree = ""; }; + B3EB9B7A2872964D00EAEB37 /* dsplist.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = dsplist.txt; sourceTree = ""; }; + B3EB9B7B2872964D00EAEB37 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3EB9B7C2872964D00EAEB37 /* core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; + B3EB9B7E2872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9B7F2872964D00EAEB37 /* pertest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pertest.c; sourceTree = ""; }; + B3EB9B802872964D00EAEB37 /* cdtest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdtest.c; sourceTree = ""; }; + B3EB9B822872964D00EAEB37 /* client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client.h; sourceTree = ""; }; + B3EB9B832872964D00EAEB37 /* packet.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = packet.c; sourceTree = ""; }; + B3EB9B842872964D00EAEB37 /* stub.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stub.c; sourceTree = ""; }; + B3EB9B852872964D00EAEB37 /* client.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = client.c; sourceTree = ""; }; + B3EB9B862872964D00EAEB37 /* packet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = packet.h; sourceTree = ""; }; + B3EB9B872872964D00EAEB37 /* stub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stub.h; sourceTree = ""; }; + B3EB9B882872964D00EAEB37 /* sh7034.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh7034.h; sourceTree = ""; }; + B3EB9B892872964D00EAEB37 /* profile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profile.h; sourceTree = ""; }; + B3EB9B8A2872964D00EAEB37 /* junzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = junzip.c; sourceTree = ""; }; + B3EB9B8B2872964D00EAEB37 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3EB9B8C2872964D00EAEB37 /* sh2cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2cache.h; sourceTree = ""; }; + B3EB9B8D2872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9B8E2872964D00EAEB37 /* sh2int.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2int.c; sourceTree = ""; }; + B3EB9B8F2872964D00EAEB37 /* thr-windows.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "thr-windows.c"; sourceTree = ""; }; + B3EB9B912872964D00EAEB37 /* assem_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_arm.c; sourceTree = ""; }; + B3EB9B922872964D00EAEB37 /* sh2_dynarec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2_dynarec.c; sourceTree = ""; }; + B3EB9B932872964D00EAEB37 /* assem_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_x86.c; sourceTree = ""; }; + B3EB9B942872964D00EAEB37 /* linkage_x64.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_x64.s; sourceTree = ""; }; + B3EB9B952872964D00EAEB37 /* assem_x64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_x64.h; sourceTree = ""; }; + B3EB9B962872964D00EAEB37 /* sh2_dynarec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2_dynarec.h; sourceTree = ""; }; + B3EB9B972872964D00EAEB37 /* assem_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_arm.h; sourceTree = ""; }; + B3EB9B982872964D00EAEB37 /* linkage_x86.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_x86.s; sourceTree = ""; }; + B3EB9B992872964D00EAEB37 /* assem_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_x86.h; sourceTree = ""; }; + B3EB9B9A2872964D00EAEB37 /* linkage_arm.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_arm.s; sourceTree = ""; }; + B3EB9B9B2872964D00EAEB37 /* assem_x64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_x64.c; sourceTree = ""; }; + B3EB9B9C2872964D00EAEB37 /* sndsdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndsdl.h; sourceTree = ""; }; + B3EB9B9D2872964D00EAEB37 /* vidsoft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vidsoft.c; sourceTree = ""; }; + B3EB9B9E2872964D00EAEB37 /* sock-linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "sock-linux.c"; sourceTree = ""; }; + B3EB9B9F2872964D00EAEB37 /* logo.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = logo.bmp; sourceTree = ""; }; + B3EB9BA02872964D00EAEB37 /* cd_drive.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cd_drive.c; sourceTree = ""; }; + B3EB9BA12872964D00EAEB37 /* vdp1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdp1.h; sourceTree = ""; }; + B3EB9BA22872964D00EAEB37 /* m68kmusashi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kmusashi.c; sourceTree = ""; }; + B3EB9BA32872964D00EAEB37 /* japmodem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = japmodem.h; sourceTree = ""; }; + B3EB9BA42872964D00EAEB37 /* sh2d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2d.h; sourceTree = ""; }; + B3EB9BA52872964D00EAEB37 /* osdcore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = osdcore.h; sourceTree = ""; }; + B3EB9BA62872964D00EAEB37 /* m68kc68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kc68k.h; sourceTree = ""; }; + B3EB9BA72872964D00EAEB37 /* perlinuxjoy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = perlinuxjoy.h; sourceTree = ""; }; + B3EB9BA82872964D00EAEB37 /* persdljoy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = persdljoy.c; sourceTree = ""; }; + B3EB9BA92872964D00EAEB37 /* scsp_dsp_jit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = scsp_dsp_jit.cpp; sourceTree = ""; }; + B3EB9BAA2872964D00EAEB37 /* macjoy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macjoy.h; sourceTree = ""; }; + B3EB9BAB2872964D00EAEB37 /* yui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yui.h; sourceTree = ""; }; + B3EB9BAC2872964D00EAEB37 /* sh2idle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2idle.h; sourceTree = ""; }; + B3EB9BAD2872964D00EAEB37 /* cdbase.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdbase.c; sourceTree = ""; }; + B3EB9BAE2872964D00EAEB37 /* movie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; + B3EB9BAF2872964D00EAEB37 /* peripheral.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = peripheral.c; sourceTree = ""; }; + B3EB9BB12872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9BB22872964D00EAEB37 /* yui.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = yui.cpp; sourceTree = ""; }; + B3EB9BB32872964D00EAEB37 /* scsp2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scsp2.h; sourceTree = ""; }; + B3EB9BB42872964D00EAEB37 /* cs1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cs1.c; sourceTree = ""; }; + B3EB9BB52872964D00EAEB37 /* perdx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = perdx.h; sourceTree = ""; }; + B3EB9BB72872964D00EAEB37 /* c68kexec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = c68kexec.c; sourceTree = ""; }; + B3EB9BB82872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9BB92872964D00EAEB37 /* c68kmac.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = c68kmac.inc; sourceTree = ""; }; + B3EB9BBA2872964D00EAEB37 /* c68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = c68k.c; sourceTree = ""; }; + B3EB9BBB2872964D00EAEB37 /* gen68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gen68k.c; sourceTree = ""; }; + B3EB9BBC2872964D00EAEB37 /* gen68k.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = gen68k.inc; sourceTree = ""; }; + B3EB9BBD2872964D00EAEB37 /* c68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = c68k.h; sourceTree = ""; }; + B3EB9BBE2872964D00EAEB37 /* gen68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gen68k.h; sourceTree = ""; }; + B3EB9BBF2872964D00EAEB37 /* vidshared.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vidshared.h; sourceTree = ""; }; + B3EB9BC02872964D00EAEB37 /* vdp2debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdp2debug.h; sourceTree = ""; }; + B3EB9BC12872964D00EAEB37 /* coffelf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coffelf.h; sourceTree = ""; }; + B3EB9BC52872964D00EAEB37 /* gl3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3.h; sourceTree = ""; }; + B3EB9BC62872964D00EAEB37 /* gl3platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl3platform.h; sourceTree = ""; }; + B3EB9BC72872964D00EAEB37 /* gl31.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl31.h; sourceTree = ""; }; + B3EB9BC92872964D00EAEB37 /* glxew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glxew.h; sourceTree = ""; }; + B3EB9BCA2872964D00EAEB37 /* wglew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wglew.h; sourceTree = ""; }; + B3EB9BCB2872964D00EAEB37 /* glew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glew.h; sourceTree = ""; }; + B3EB9BCD2872964D00EAEB37 /* glew.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glew.c; sourceTree = ""; }; + B3EB9BCF2872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9BD22872964D00EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EB9BD32872964D00EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EB9BD42872964D00EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EB9BD52872964D00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EB9BD62872964D00EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EB9BD72872964D00EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EB9BD82872964D00EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EB9BD92872964D00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EB9BDC2872964D00EAEB37 /* COPYING.LGPL */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.LGPL; sourceTree = ""; }; + B3EB9BDD2872964D00EAEB37 /* COPYING.Xiph */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.Xiph; sourceTree = ""; }; + B3EB9BDE2872964D00EAEB37 /* libFLAC.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC.vcxproj.filters; sourceTree = ""; }; + B3EB9BDF2872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9BE02872964D00EAEB37 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3EB9BE22872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9BE42872964D00EAEB37 /* export.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = export.h; sourceTree = ""; }; + B3EB9BE52872964D00EAEB37 /* all.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = all.h; sourceTree = ""; }; + B3EB9BE62872964D00EAEB37 /* ordinals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ordinals.h; sourceTree = ""; }; + B3EB9BE72872964D00EAEB37 /* metadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = metadata.h; sourceTree = ""; }; + B3EB9BE82872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9BE92872964D00EAEB37 /* format.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = format.h; sourceTree = ""; }; + B3EB9BEA2872964D00EAEB37 /* stream_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream_decoder.h; sourceTree = ""; }; + B3EB9BEB2872964D00EAEB37 /* assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assert.h; sourceTree = ""; }; + B3EB9BEC2872964D00EAEB37 /* callback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = callback.h; sourceTree = ""; }; + B3EB9BEE2872964D00EAEB37 /* safe_str.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = safe_str.h; sourceTree = ""; }; + B3EB9BEF2872964D00EAEB37 /* windows_unicode_filenames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = windows_unicode_filenames.h; sourceTree = ""; }; + B3EB9BF02872964D00EAEB37 /* win_utf8_io.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win_utf8_io.h; sourceTree = ""; }; + B3EB9BF12872964D00EAEB37 /* replaygain_synthesis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = replaygain_synthesis.h; sourceTree = ""; }; + B3EB9BF22872964D00EAEB37 /* private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = private.h; sourceTree = ""; }; + B3EB9BF32872964D00EAEB37 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B3EB9BF42872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9BF52872964D00EAEB37 /* msvc2005_int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc2005_int.h; sourceTree = ""; }; + B3EB9BF62872964D00EAEB37 /* macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + B3EB9BF82872964D00EAEB37 /* picture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = picture.h; sourceTree = ""; }; + B3EB9BF92872964D00EAEB37 /* replaygain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = replaygain.h; sourceTree = ""; }; + B3EB9BFA2872964D00EAEB37 /* file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file.h; sourceTree = ""; }; + B3EB9BFB2872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9BFC2872964D00EAEB37 /* seektable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = seektable.h; sourceTree = ""; }; + B3EB9BFD2872964D00EAEB37 /* cuesheet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cuesheet.h; sourceTree = ""; }; + B3EB9BFE2872964D00EAEB37 /* compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compat.h; sourceTree = ""; }; + B3EB9BFF2872964D00EAEB37 /* endswap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = endswap.h; sourceTree = ""; }; + B3EB9C002872964D00EAEB37 /* grabbag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = grabbag.h; sourceTree = ""; }; + B3EB9C012872964D00EAEB37 /* replaygain_analysis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = replaygain_analysis.h; sourceTree = ""; }; + B3EB9C022872964D00EAEB37 /* alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = alloc.h; sourceTree = ""; }; + B3EB9C032872964D00EAEB37 /* utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf8.h; sourceTree = ""; }; + B3EB9C042872964D00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EB9C052872964D00EAEB37 /* COPYING.GPL */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.GPL; sourceTree = ""; }; + B3EB9C062872964D00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EB9C072872964D00EAEB37 /* libFLAC.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC.vcxproj; sourceTree = ""; }; + B3EB9C082872964D00EAEB37 /* COPYING.FDL */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.FDL; sourceTree = ""; }; + B3EB9C092872964D00EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3EB9C0B2872964D00EAEB37 /* libFLAC_static.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC_static.vcxproj.filters; sourceTree = ""; }; + B3EB9C0C2872964D00EAEB37 /* flac.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = flac.pc.in; sourceTree = ""; }; + B3EB9C0D2872964D00EAEB37 /* libFLAC_dynamic.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC_dynamic.vcxproj.filters; sourceTree = ""; }; + B3EB9C0E2872964D00EAEB37 /* metadata_object.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = metadata_object.c; sourceTree = ""; }; + B3EB9C0F2872964D00EAEB37 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3EB9C102872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9C112872964D00EAEB37 /* cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpu.c; sourceTree = ""; }; + B3EB9C122872964D00EAEB37 /* format.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = format.c; sourceTree = ""; }; + B3EB9C132872964D00EAEB37 /* lpc_intrin_sse41.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_sse41.c; sourceTree = ""; }; + B3EB9C142872964D00EAEB37 /* stream_decoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stream_decoder.c; sourceTree = ""; }; + B3EB9C162872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9C182872964D00EAEB37 /* float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float.h; sourceTree = ""; }; + B3EB9C192872964D00EAEB37 /* stream_encoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream_encoder.h; sourceTree = ""; }; + B3EB9C1A2872964D00EAEB37 /* fixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fixed.h; sourceTree = ""; }; + B3EB9C1B2872964D00EAEB37 /* all.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = all.h; sourceTree = ""; }; + B3EB9C1C2872964D00EAEB37 /* bitwriter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitwriter.h; sourceTree = ""; }; + B3EB9C1D2872964D00EAEB37 /* crc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = ""; }; + B3EB9C1E2872964D00EAEB37 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3EB9C1F2872964D00EAEB37 /* ogg_encoder_aspect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ogg_encoder_aspect.h; sourceTree = ""; }; + B3EB9C202872964D00EAEB37 /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = ""; }; + B3EB9C212872964D00EAEB37 /* ogg_mapping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ogg_mapping.h; sourceTree = ""; }; + B3EB9C222872964D00EAEB37 /* metadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = metadata.h; sourceTree = ""; }; + B3EB9C232872964D00EAEB37 /* lpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lpc.h; sourceTree = ""; }; + B3EB9C242872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9C252872964D00EAEB37 /* stream_encoder_framing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream_encoder_framing.h; sourceTree = ""; }; + B3EB9C262872964D00EAEB37 /* macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + B3EB9C272872964D00EAEB37 /* cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; + B3EB9C282872964D00EAEB37 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B3EB9C292872964D00EAEB37 /* ogg_decoder_aspect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ogg_decoder_aspect.h; sourceTree = ""; }; + B3EB9C2A2872964D00EAEB37 /* ogg_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ogg_helper.h; sourceTree = ""; }; + B3EB9C2B2872964D00EAEB37 /* format.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = format.h; sourceTree = ""; }; + B3EB9C2C2872964D00EAEB37 /* bitreader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitreader.h; sourceTree = ""; }; + B3EB9C2D2872964D00EAEB37 /* bitmath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitmath.h; sourceTree = ""; }; + B3EB9C2F2872964D00EAEB37 /* stream_encoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream_encoder.h; sourceTree = ""; }; + B3EB9C302872964D00EAEB37 /* all.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = all.h; sourceTree = ""; }; + B3EB9C312872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9C322872964D00EAEB37 /* stream_decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stream_decoder.h; sourceTree = ""; }; + B3EB9C332872964D00EAEB37 /* Makefile.lite */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.lite; sourceTree = ""; }; + B3EB9C342872964D00EAEB37 /* libFLAC_dynamic.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC_dynamic.vcxproj; sourceTree = ""; }; + B3EB9C352872964D00EAEB37 /* lpc_intrin_sse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_sse.c; sourceTree = ""; }; + B3EB9C362872964D00EAEB37 /* libFLAC_static.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC_static.vcxproj; sourceTree = ""; }; + B3EB9C372872964D00EAEB37 /* bitmath.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitmath.c; sourceTree = ""; }; + B3EB9C382872964D00EAEB37 /* metadata_iterators.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = metadata_iterators.c; sourceTree = ""; }; + B3EB9C392872964D00EAEB37 /* bitreader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitreader.c; sourceTree = ""; }; + B3EB9C3A2872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9C3B2872964D00EAEB37 /* libFLAC_static.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC_static.vcproj; sourceTree = ""; }; + B3EB9C3C2872964D00EAEB37 /* lpc_intrin_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_sse2.c; sourceTree = ""; }; + B3EB9C3E2872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9C3F2872964D00EAEB37 /* nasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nasm.h; sourceTree = ""; }; + B3EB9C402872964D00EAEB37 /* fixed_asm.nasm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.nasm; path = fixed_asm.nasm; sourceTree = ""; }; + B3EB9C412872964D00EAEB37 /* lpc_asm.nasm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.nasm; path = lpc_asm.nasm; sourceTree = ""; }; + B3EB9C422872964D00EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EB9C432872964D00EAEB37 /* lpc_asm-unrolled.nasm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.nasm; path = "lpc_asm-unrolled.nasm"; sourceTree = ""; }; + B3EB9C442872964D00EAEB37 /* cpu_asm.nasm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.nasm; path = cpu_asm.nasm; sourceTree = ""; }; + B3EB9C452872964D00EAEB37 /* fixed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fixed.c; sourceTree = ""; }; + B3EB9C462872964D00EAEB37 /* windows_unicode_filenames.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = windows_unicode_filenames.c; sourceTree = ""; }; + B3EB9C472872964D00EAEB37 /* lpc_intrin_vsx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_vsx.c; sourceTree = ""; }; + B3EB9C482872964D00EAEB37 /* float.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float.c; sourceTree = ""; }; + B3EB9C492872964D00EAEB37 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B3EB9C4A2872964D00EAEB37 /* fixed_intrin_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fixed_intrin_sse2.c; sourceTree = ""; }; + B3EB9C4B2872964D00EAEB37 /* crc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc.c; sourceTree = ""; }; + B3EB9C4C2872964D00EAEB37 /* fixed_intrin_ssse3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fixed_intrin_ssse3.c; sourceTree = ""; }; + B3EB9C4D2872964D00EAEB37 /* bitwriter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitwriter.c; sourceTree = ""; }; + B3EB9C4E2872964D00EAEB37 /* lpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc.c; sourceTree = ""; }; + B3EB9C4F2872964D00EAEB37 /* libFLAC_dynamic.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = libFLAC_dynamic.vcproj; sourceTree = ""; }; + B3EB9C502872964D00EAEB37 /* libFLAC.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = libFLAC.m4; sourceTree = ""; }; + B3EB9C512872964D00EAEB37 /* lpc_intrin_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc_intrin_avx2.c; sourceTree = ""; }; + B3EB9C522872964D00EAEB37 /* window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = window.c; sourceTree = ""; }; + B3EB9C542872964D00EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EB9C552872964D00EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EB9C562872964D00EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EB9C572872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9C582872964D00EAEB37 /* zlib.map */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = zlib.map; sourceTree = ""; }; + B3EB9C592872964D00EAEB37 /* zlib.pc.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.cmakein; sourceTree = ""; }; + B3EB9C5A2872964D00EAEB37 /* zlib.3.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = zlib.3.pdf; sourceTree = ""; }; + B3EB9C5B2872964D00EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EB9C5C2872964D00EAEB37 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3EB9C5D2872964D00EAEB37 /* zlib.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.3; sourceTree = ""; }; + B3EB9C5E2872964D00EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EB9C5F2872964D00EAEB37 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3EB9C602872964D00EAEB37 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3EB9C612872964D00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9C622872964D00EAEB37 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3EB9C632872964D00EAEB37 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3EB9C642872964D00EAEB37 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3EB9C652872964D00EAEB37 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3EB9C662872964D00EAEB37 /* zconf.h.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.cmakein; sourceTree = ""; }; + B3EB9C672872964D00EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EB9C682872964D00EAEB37 /* treebuild.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = treebuild.xml; sourceTree = ""; }; + B3EB9C692872964D00EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EB9C6A2872964D00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EB9C6B2872964D00EAEB37 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3EB9C6C2872964D00EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EB9C6D2872964D00EAEB37 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3EB9C6E2872964D00EAEB37 /* zlib.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.in; sourceTree = ""; }; + B3EB9C6F2872964D00EAEB37 /* zlib2ansi */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = zlib2ansi; sourceTree = ""; }; + B3EB9C702872964D00EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EB9C712872964D00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EB9C722872964D00EAEB37 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3EB9C732872964D00EAEB37 /* make_vms.com */ = {isa = PBXFileReference; lastKnownFileType = text; path = make_vms.com; sourceTree = ""; }; + B3EB9C742872964D00EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EB9C752872964D00EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EB9C762872964D00EAEB37 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3EB9C782872964D00EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EB9C792872964D00EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EB9C7A2872964D00EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EB9C7B2872964D00EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EB9C7C2872964D00EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EB9C7D2872964D00EAEB37 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B3EB9C7E2872964D00EAEB37 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B3EB9C7F2872964D00EAEB37 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B3EB9C802872964D00EAEB37 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B3EB9C812872964D00EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EB9C822872964D00EAEB37 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3EB9C832872964D00EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EB9C842872964D00EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EB9C852872964D00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EB9C872872964D00EAEB37 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B3EB9C882872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9C892872964D00EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EB9C8B2872964D00EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EB9C8C2872964D00EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EB9C8D2872964D00EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EB9C8E2872964D00EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EB9C8F2872964D00EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EB9C902872964D00EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EB9C912872964D00EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EB9C922872964D00EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EB9C932872964D00EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EB9C942872964D00EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EB9C952872964D00EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EB9C962872964D00EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EB9C972872964D00EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EB9C982872964D00EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EB9C992872964D00EAEB37 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B3EB9C9A2872964D00EAEB37 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B3EB9C9B2872964D00EAEB37 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B3EB9C9D2872964D00EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EB9C9E2872964D00EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EB9C9F2872964D00EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EB9CA02872964D00EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EB9CA12872964D00EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EB9CA22872964D00EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EB9CA32872964D00EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EB9CA42872964D00EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EB9CA52872964D00EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EB9CA62872964D00EAEB37 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3EB9CA72872964D00EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EB9CA82872964D00EAEB37 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B3EB9CAA2872964D00EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EB9CAB2872964D00EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EB9CAC2872964D00EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EB9CAD2872964D00EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EB9CAE2872964D00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EB9CAF2872964D00EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EB9CB12872964D00EAEB37 /* ssf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ssf.c; sourceTree = ""; }; + B3EB9CB22872964D00EAEB37 /* corlett.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = corlett.c; sourceTree = ""; }; + B3EB9CB32872964D00EAEB37 /* ao.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ao.h; sourceTree = ""; }; + B3EB9CB42872964D00EAEB37 /* corlett.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = corlett.h; sourceTree = ""; }; + B3EB9CB52872964D00EAEB37 /* ssf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ssf.h; sourceTree = ""; }; + B3EB9CB62872964D00EAEB37 /* eng_ssf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eng_ssf.c; sourceTree = ""; }; + B3EB9CB72872964D00EAEB37 /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B3EB9CB92872964D00EAEB37 /* viddc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = viddc.h; sourceTree = ""; }; + B3EB9CBA2872964D00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9CBB2872964D00EAEB37 /* cd.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = cd.s; sourceTree = ""; }; + B3EB9CBC2872964D00EAEB37 /* perdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = perdc.h; sourceTree = ""; }; + B3EB9CBD2872964D00EAEB37 /* localtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = localtime.c; sourceTree = ""; }; + B3EB9CBF2872964D00EAEB37 /* sh2rec_mem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2rec_mem.c; sourceTree = ""; }; + B3EB9CC02872964D00EAEB37 /* sh2rec_htab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2rec_htab.h; sourceTree = ""; }; + B3EB9CC12872964D00EAEB37 /* sh2rec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2rec.c; sourceTree = ""; }; + B3EB9CC22872964D00EAEB37 /* sh2rec_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2rec_mem.h; sourceTree = ""; }; + B3EB9CC32872964D00EAEB37 /* sh2rec_htab.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2rec_htab.c; sourceTree = ""; }; + B3EB9CC42872964D00EAEB37 /* sh2exec.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sh2exec.s; sourceTree = ""; }; + B3EB9CC52872964D00EAEB37 /* sh2rec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2rec.h; sourceTree = ""; }; + B3EB9CC62872964D00EAEB37 /* viddc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = viddc.c; sourceTree = ""; }; + B3EB9CC72872964D00EAEB37 /* perdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = perdc.c; sourceTree = ""; }; + B3EB9CC82872964D00EAEB37 /* dreamcast.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = dreamcast.cmake; sourceTree = ""; }; + B3EB9CC92872964D00EAEB37 /* yui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yui.c; sourceTree = ""; }; + B3EB9CCA2872964D00EAEB37 /* localtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = localtime.h; sourceTree = ""; }; + B3EB9CCD2872964D00EAEB37 /* UIAbout.ui */ = {isa = PBXFileReference; lastKnownFileType = text; path = UIAbout.ui; sourceTree = ""; }; + B3EB9CCE2872964D00EAEB37 /* UIMouseSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIMouseSetting.cpp; sourceTree = ""; }; + B3EB9CCF2872964D00EAEB37 /* UIShortcutManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIShortcutManager.cpp; sourceTree = ""; }; + B3EB9CD02872964D00EAEB37 /* UICheatSearch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UICheatSearch.cpp; sourceTree = ""; }; + B3EB9CD12872964D00EAEB37 /* UIDebugVDP2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugVDP2.h; sourceTree = ""; }; + B3EB9CD22872964D00EAEB37 /* UICheatAR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UICheatAR.h; sourceTree = ""; }; + B3EB9CD32872964D00EAEB37 /* UI3DControlPadSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UI3DControlPadSetting.cpp; sourceTree = ""; }; + B3EB9CD42872964D00EAEB37 /* UI3DControlPadSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UI3DControlPadSetting.h; sourceTree = ""; }; + B3EB9CD52872964D00EAEB37 /* UIControllerSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIControllerSetting.h; sourceTree = ""; }; + B3EB9CD62872964D00EAEB37 /* UI3DControlPadSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UI3DControlPadSetting.ui; sourceTree = ""; }; + B3EB9CD72872964D00EAEB37 /* UICheatSearch.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UICheatSearch.ui; sourceTree = ""; }; + B3EB9CD82872964D00EAEB37 /* UIBackupRam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIBackupRam.h; sourceTree = ""; }; + B3EB9CD92872964D00EAEB37 /* UIGunSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIGunSetting.cpp; sourceTree = ""; }; + B3EB9CDA2872964D00EAEB37 /* UIDebugCPU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugCPU.h; sourceTree = ""; }; + B3EB9CDB2872964D00EAEB37 /* UICheatRaw.ui */ = {isa = PBXFileReference; lastKnownFileType = text; path = UICheatRaw.ui; sourceTree = ""; }; + B3EB9CDC2872964D00EAEB37 /* UICheats.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UICheats.cpp; sourceTree = ""; }; + B3EB9CDD2872964D00EAEB37 /* UIMemoryTransfer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIMemoryTransfer.cpp; sourceTree = ""; }; + B3EB9CDE2872964D00EAEB37 /* UIDebugSCSPDSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugSCSPDSP.h; sourceTree = ""; }; + B3EB9CDF2872964D00EAEB37 /* UIPadSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIPadSetting.h; sourceTree = ""; }; + B3EB9CE02872964E00EAEB37 /* UIPadSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIPadSetting.cpp; sourceTree = ""; }; + B3EB9CE12872964E00EAEB37 /* UIDebugVDP2Viewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugVDP2Viewer.h; sourceTree = ""; }; + B3EB9CE22872964E00EAEB37 /* UIDebugSCSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugSCSP.cpp; sourceTree = ""; }; + B3EB9CE32872964E00EAEB37 /* UIHexInput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIHexInput.cpp; sourceTree = ""; }; + B3EB9CE42872964E00EAEB37 /* UISettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UISettings.h; sourceTree = ""; }; + B3EB9CE52872964E00EAEB37 /* UIMemoryEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIMemoryEditor.h; sourceTree = ""; }; + B3EB9CE62872964E00EAEB37 /* UIDebugCPU.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIDebugCPU.ui; sourceTree = ""; }; + B3EB9CE72872964E00EAEB37 /* UIDebugVDP1.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIDebugVDP1.ui; sourceTree = ""; }; + B3EB9CE82872964E00EAEB37 /* UITwinStickSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UITwinStickSetting.ui; sourceTree = ""; }; + B3EB9CE92872964E00EAEB37 /* UIDebugVDP1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugVDP1.h; sourceTree = ""; }; + B3EB9CEA2872964E00EAEB37 /* UIPadSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text; path = UIPadSetting.ui; sourceTree = ""; }; + B3EB9CEB2872964E00EAEB37 /* UIHexInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIHexInput.h; sourceTree = ""; }; + B3EB9CEC2872964E00EAEB37 /* UIDebugVDP2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugVDP2.cpp; sourceTree = ""; }; + B3EB9CED2872964E00EAEB37 /* UICheatSearch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UICheatSearch.h; sourceTree = ""; }; + B3EB9CEE2872964E00EAEB37 /* UITwinStickSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UITwinStickSetting.h; sourceTree = ""; }; + B3EB9CEF2872964E00EAEB37 /* UIMissionStickSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIMissionStickSetting.h; sourceTree = ""; }; + B3EB9CF02872964E00EAEB37 /* UIMissionStickSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIMissionStickSetting.ui; sourceTree = ""; }; + B3EB9CF12872964E00EAEB37 /* UIMemoryTransfer.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIMemoryTransfer.ui; sourceTree = ""; }; + B3EB9CF22872964E00EAEB37 /* UITwinStickSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UITwinStickSetting.cpp; sourceTree = ""; }; + B3EB9CF32872964E00EAEB37 /* UIHexEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIHexEditor.cpp; sourceTree = ""; }; + B3EB9CF42872964E00EAEB37 /* UICheatRaw.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UICheatRaw.cpp; sourceTree = ""; }; + B3EB9CF52872964E00EAEB37 /* UIDebugVDP1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugVDP1.cpp; sourceTree = ""; }; + B3EB9CF62872964E00EAEB37 /* UIYabause.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIYabause.cpp; sourceTree = ""; }; + B3EB9CF72872964E00EAEB37 /* UIDebugM68K.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugM68K.h; sourceTree = ""; }; + B3EB9CF82872964E00EAEB37 /* UIDebugSCSPChan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugSCSPChan.h; sourceTree = ""; }; + B3EB9CF92872964E00EAEB37 /* UIMissionStickSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIMissionStickSetting.cpp; sourceTree = ""; }; + B3EB9CFA2872964E00EAEB37 /* UIDebugSH2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugSH2.cpp; sourceTree = ""; }; + B3EB9CFB2872964E00EAEB37 /* UISettings.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UISettings.ui; sourceTree = ""; }; + B3EB9CFC2872964E00EAEB37 /* UIDebugVDP2Viewer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugVDP2Viewer.cpp; sourceTree = ""; }; + B3EB9CFD2872964E00EAEB37 /* UIHexInput.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIHexInput.ui; sourceTree = ""; }; + B3EB9CFE2872964E00EAEB37 /* UIDebugSCSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugSCSP.h; sourceTree = ""; }; + B3EB9CFF2872964E00EAEB37 /* UIAbout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIAbout.h; sourceTree = ""; }; + B3EB9D002872964E00EAEB37 /* UIDebugVDP2Viewer.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIDebugVDP2Viewer.ui; sourceTree = ""; }; + B3EB9D012872964E00EAEB37 /* UIDebugSCSP.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIDebugSCSP.ui; sourceTree = ""; }; + B3EB9D022872964E00EAEB37 /* UIMouseSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIMouseSetting.h; sourceTree = ""; }; + B3EB9D032872964E00EAEB37 /* UIDebugSCSPDSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugSCSPDSP.cpp; sourceTree = ""; }; + B3EB9D042872964E00EAEB37 /* UIDoubleMissionStickSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDoubleMissionStickSetting.h; sourceTree = ""; }; + B3EB9D052872964E00EAEB37 /* UIYabause.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIYabause.h; sourceTree = ""; }; + B3EB9D062872964E00EAEB37 /* UIShortcutManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIShortcutManager.h; sourceTree = ""; }; + B3EB9D072872964E00EAEB37 /* UIMemoryTransfer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIMemoryTransfer.h; sourceTree = ""; }; + B3EB9D082872964E00EAEB37 /* UIPortManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIPortManager.cpp; sourceTree = ""; }; + B3EB9D092872964E00EAEB37 /* UIControllerSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIControllerSetting.cpp; sourceTree = ""; }; + B3EB9D0A2872964E00EAEB37 /* UIDoubleMissionStickSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDoubleMissionStickSetting.cpp; sourceTree = ""; }; + B3EB9D0B2872964E00EAEB37 /* UICheatAR.ui */ = {isa = PBXFileReference; lastKnownFileType = text; path = UICheatAR.ui; sourceTree = ""; }; + B3EB9D0C2872964E00EAEB37 /* UICheatRaw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UICheatRaw.h; sourceTree = ""; }; + B3EB9D0D2872964E00EAEB37 /* UIAbout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIAbout.cpp; sourceTree = ""; }; + B3EB9D0E2872964E00EAEB37 /* UIDoubleMissionStickSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIDoubleMissionStickSetting.ui; sourceTree = ""; }; + B3EB9D0F2872964E00EAEB37 /* UISettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UISettings.cpp; sourceTree = ""; }; + B3EB9D102872964E00EAEB37 /* UIMemorySearch.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIMemorySearch.ui; sourceTree = ""; }; + B3EB9D112872964E00EAEB37 /* UIDebugSCUDSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugSCUDSP.cpp; sourceTree = ""; }; + B3EB9D122872964E00EAEB37 /* UIDebugSCSPChan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugSCSPChan.cpp; sourceTree = ""; }; + B3EB9D132872964E00EAEB37 /* UIWheelSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIWheelSetting.ui; sourceTree = ""; }; + B3EB9D142872964E00EAEB37 /* UIDisasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDisasm.h; sourceTree = ""; }; + B3EB9D152872964E00EAEB37 /* UIHexEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIHexEditor.h; sourceTree = ""; }; + B3EB9D162872964E00EAEB37 /* UIMemorySearch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIMemorySearch.h; sourceTree = ""; }; + B3EB9D172872964E00EAEB37 /* UIBackupRam.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIBackupRam.cpp; sourceTree = ""; }; + B3EB9D182872964E00EAEB37 /* UIPortManager.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIPortManager.ui; sourceTree = ""; }; + B3EB9D192872964E00EAEB37 /* UIYabause.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIYabause.ui; sourceTree = ""; }; + B3EB9D1A2872964E00EAEB37 /* UIMemoryEditor.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIMemoryEditor.ui; sourceTree = ""; }; + B3EB9D1B2872964E00EAEB37 /* UIDebugVDP2.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIDebugVDP2.ui; sourceTree = ""; }; + B3EB9D1C2872964E00EAEB37 /* UICheats.ui */ = {isa = PBXFileReference; lastKnownFileType = text; path = UICheats.ui; sourceTree = ""; }; + B3EB9D1D2872964E00EAEB37 /* UIDisasm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDisasm.cpp; sourceTree = ""; }; + B3EB9D1E2872964E00EAEB37 /* UIMemorySearch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIMemorySearch.cpp; sourceTree = ""; }; + B3EB9D1F2872964E00EAEB37 /* UIBackupRam.ui */ = {isa = PBXFileReference; lastKnownFileType = text; path = UIBackupRam.ui; sourceTree = ""; }; + B3EB9D202872964E00EAEB37 /* UICheats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UICheats.h; sourceTree = ""; }; + B3EB9D212872964E00EAEB37 /* UIWheelSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIWheelSetting.h; sourceTree = ""; }; + B3EB9D222872964E00EAEB37 /* UIMemoryEditor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIMemoryEditor.cpp; sourceTree = ""; }; + B3EB9D232872964E00EAEB37 /* UIDebugSCUDSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugSCUDSP.h; sourceTree = ""; }; + B3EB9D242872964E00EAEB37 /* UIGunSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIGunSetting.h; sourceTree = ""; }; + B3EB9D252872964E00EAEB37 /* UIDebugSH2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIDebugSH2.h; sourceTree = ""; }; + B3EB9D262872964E00EAEB37 /* UIWheelSetting.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIWheelSetting.cpp; sourceTree = ""; }; + B3EB9D272872964E00EAEB37 /* UIDebugM68K.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugM68K.cpp; sourceTree = ""; }; + B3EB9D282872964E00EAEB37 /* UIPortManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIPortManager.h; sourceTree = ""; }; + B3EB9D292872964E00EAEB37 /* UIMouseSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIMouseSetting.ui; sourceTree = ""; }; + B3EB9D2A2872964E00EAEB37 /* UIDebugCPU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIDebugCPU.cpp; sourceTree = ""; }; + B3EB9D2B2872964E00EAEB37 /* UICheatAR.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UICheatAR.cpp; sourceTree = ""; }; + B3EB9D2C2872964E00EAEB37 /* UIDebugSCSPDSP.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIDebugSCSPDSP.ui; sourceTree = ""; }; + B3EB9D2D2872964E00EAEB37 /* UIGunSetting.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = UIGunSetting.ui; sourceTree = ""; }; + B3EB9D2E2872964E00EAEB37 /* QtYabause.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = QtYabause.cpp; sourceTree = ""; }; + B3EB9D2F2872964E00EAEB37 /* VolatileSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VolatileSettings.h; sourceTree = ""; }; + B3EB9D302872964E00EAEB37 /* YabauseThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = YabauseThread.cpp; sourceTree = ""; }; + B3EB9D312872964E00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9D322872964E00EAEB37 /* Arguments.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Arguments.cpp; sourceTree = ""; }; + B3EB9D332872964E00EAEB37 /* CommonDialogs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommonDialogs.cpp; sourceTree = ""; }; + B3EB9D342872964E00EAEB37 /* Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; }; + B3EB9D352872964E00EAEB37 /* Arguments.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Arguments.h; sourceTree = ""; }; + B3EB9D382872964E00EAEB37 /* doublemissionstick.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doublemissionstick.png; sourceTree = ""; }; + B3EB9D392872964E00EAEB37 /* controller.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = controller.png; sourceTree = ""; }; + B3EB9D3A2872964E00EAEB37 /* 3dcontroller.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dcontroller.png; sourceTree = ""; }; + B3EB9D3B2872964E00EAEB37 /* yabause.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause.rc; sourceTree = ""; }; + B3EB9D3C2872964E00EAEB37 /* wheel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = wheel.png; sourceTree = ""; }; + B3EB9D3D2872964E00EAEB37 /* yabause.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = yabause.icns; sourceTree = ""; }; + B3EB9D3E2872964E00EAEB37 /* yabause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = yabause.png; sourceTree = ""; }; + B3EB9D3F2872964E00EAEB37 /* mouse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mouse.png; sourceTree = ""; }; + B3EB9D402872964E00EAEB37 /* twinsticks.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = twinsticks.png; sourceTree = ""; }; + B3EB9D422872964E00EAEB37 /* button_cancel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_cancel.png; sourceTree = ""; }; + B3EB9D432872964E00EAEB37 /* save_state.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = save_state.png; sourceTree = ""; }; + B3EB9D442872964E00EAEB37 /* backup_ram.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = backup_ram.png; sourceTree = ""; }; + B3EB9D452872964E00EAEB37 /* quit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = quit.png; sourceTree = ""; }; + B3EB9D462872964E00EAEB37 /* frame_skipping.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frame_skipping.png; sourceTree = ""; }; + B3EB9D472872964E00EAEB37 /* no_fullscreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = no_fullscreen.png; sourceTree = ""; }; + B3EB9D482872964E00EAEB37 /* load_state.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = load_state.png; sourceTree = ""; }; + B3EB9D492872964E00EAEB37 /* settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = settings.png; sourceTree = ""; }; + B3EB9D4A2872964E00EAEB37 /* fps.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fps.png; sourceTree = ""; }; + B3EB9D4B2872964E00EAEB37 /* screenshot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screenshot.png; sourceTree = ""; }; + B3EB9D4C2872964E00EAEB37 /* fullscreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fullscreen.png; sourceTree = ""; }; + B3EB9D4D2872964E00EAEB37 /* reset.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = reset.png; sourceTree = ""; }; + B3EB9D4E2872964E00EAEB37 /* sound.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sound.png; sourceTree = ""; }; + B3EB9D4F2872964E00EAEB37 /* transfert.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = transfert.png; sourceTree = ""; }; + B3EB9D502872964E00EAEB37 /* button_ok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_ok.png; sourceTree = ""; }; + B3EB9D512872964E00EAEB37 /* cheat_search.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cheat_search.png; sourceTree = ""; }; + B3EB9D522872964E00EAEB37 /* layer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = layer.png; sourceTree = ""; }; + B3EB9D532872964E00EAEB37 /* pause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pause.png; sourceTree = ""; }; + B3EB9D542872964E00EAEB37 /* open_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = open_file.png; sourceTree = ""; }; + B3EB9D552872964E00EAEB37 /* video.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = video.png; sourceTree = ""; }; + B3EB9D562872964E00EAEB37 /* debug_cpu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = debug_cpu.png; sourceTree = ""; }; + B3EB9D572872964E00EAEB37 /* log.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = log.png; sourceTree = ""; }; + B3EB9D582872964E00EAEB37 /* cheats.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cheats.png; sourceTree = ""; }; + B3EB9D592872964E00EAEB37 /* cd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cd.png; sourceTree = ""; }; + B3EB9D5A2872964E00EAEB37 /* about.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = about.png; sourceTree = ""; }; + B3EB9D5B2872964E00EAEB37 /* iso.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iso.png; sourceTree = ""; }; + B3EB9D5C2872964E00EAEB37 /* mute.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mute.png; sourceTree = ""; }; + B3EB9D5D2872964E00EAEB37 /* play.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = play.png; sourceTree = ""; }; + B3EB9D5E2872964E00EAEB37 /* made.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = made.png; sourceTree = ""; }; + B3EB9D5F2872964E00EAEB37 /* missionstick.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = missionstick.png; sourceTree = ""; }; + B3EB9D602872964E00EAEB37 /* resources.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = resources.qrc; sourceTree = ""; }; + B3EB9D612872964E00EAEB37 /* CommonDialogs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonDialogs.h; sourceTree = ""; }; + B3EB9D622872964E00EAEB37 /* YabauseThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabauseThread.h; sourceTree = ""; }; + B3EB9D632872964E00EAEB37 /* PerQt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PerQt.h; sourceTree = ""; }; + B3EB9D642872964E00EAEB37 /* YabauseGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabauseGL.h; sourceTree = ""; }; + B3EB9D652872964E00EAEB37 /* YabauseGLProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabauseGLProxy.h; sourceTree = ""; }; + B3EB9D662872964E00EAEB37 /* YabauseSoftGL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = YabauseSoftGL.cpp; sourceTree = ""; }; + B3EB9D672872964E00EAEB37 /* QtYabause.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QtYabause.h; sourceTree = ""; }; + B3EB9D682872964E00EAEB37 /* YabauseSoftGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabauseSoftGL.h; sourceTree = ""; }; + B3EB9D6A2872964E00EAEB37 /* yabause.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = yabause.1; sourceTree = ""; }; + B3EB9D6D2872964E00EAEB37 /* qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = qmake.conf; sourceTree = ""; }; + B3EB9D6E2872964E00EAEB37 /* qplatformdefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qplatformdefs.h; sourceTree = ""; }; + B3EB9D702872964E00EAEB37 /* qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = qmake.conf; sourceTree = ""; }; + B3EB9D712872964E00EAEB37 /* qplatformdefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qplatformdefs.h; sourceTree = ""; }; + B3EB9D722872964E00EAEB37 /* YabauseGLProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = YabauseGLProxy.cpp; sourceTree = ""; }; + B3EB9D732872964E00EAEB37 /* VolatileSettings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VolatileSettings.cpp; sourceTree = ""; }; + B3EB9D742872964E00EAEB37 /* PerQt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = PerQt.c; sourceTree = ""; }; + B3EB9D752872964E00EAEB37 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3EB9D772872964E00EAEB37 /* yabause_pt.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = yabause_pt.ts; sourceTree = ""; }; + B3EB9D782872964E00EAEB37 /* yabause_fr.ts */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = yabause_fr.ts; sourceTree = ""; }; + B3EB9D792872964E00EAEB37 /* Settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Settings.cpp; sourceTree = ""; }; + B3EB9D7A2872964E00EAEB37 /* yabause.desktop.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause.desktop.in; sourceTree = ""; }; + B3EB9D7B2872964E00EAEB37 /* YabauseGL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = YabauseGL.cpp; sourceTree = ""; }; + B3EB9D7C2872964E00EAEB37 /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.h.in; sourceTree = ""; }; + B3EB9D7D2872964E00EAEB37 /* scu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scu.c; sourceTree = ""; }; + B3EB9D7E2872964E00EAEB37 /* m68kq68.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kq68.c; sourceTree = ""; }; + B3EB9D7F2872964E00EAEB37 /* threads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = threads.h; sourceTree = ""; }; + B3EB9D802872964E00EAEB37 /* thr-dummy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "thr-dummy.c"; sourceTree = ""; }; + B3EB9D812872964E00EAEB37 /* ygr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ygr.h; sourceTree = ""; }; + B3EB9D822872964E00EAEB37 /* snddx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snddx.h; sourceTree = ""; }; + B3EB9D832872964E00EAEB37 /* sndal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sndal.c; sourceTree = ""; }; + B3EB9D842872964E00EAEB37 /* vdp2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdp2.h; sourceTree = ""; }; + B3EB9D852872964E00EAEB37 /* m68kd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kd.h; sourceTree = ""; }; + B3EB9D862872964E00EAEB37 /* smpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = smpc.c; sourceTree = ""; }; + B3EB9D872872964E00EAEB37 /* sh2trace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2trace.c; sourceTree = ""; }; + B3EB9D882872964E00EAEB37 /* m68kcore.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kcore.c; sourceTree = ""; }; + B3EB9D892872964E00EAEB37 /* scspdsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scspdsp.h; sourceTree = ""; }; + B3EB9D8A2872964E00EAEB37 /* netlink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netlink.h; sourceTree = ""; }; + B3EB9D8B2872964E00EAEB37 /* scsp_dsp_jit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scsp_dsp_jit.h; sourceTree = ""; }; + B3EB9D8C2872964E00EAEB37 /* cd-linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cd-linux.c"; sourceTree = ""; }; + B3EB9D8D2872964E00EAEB37 /* cd-netbsd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cd-netbsd.c"; sourceTree = ""; }; + B3EB9D8E2872964E00EAEB37 /* sh2core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2core.c; sourceTree = ""; }; + B3EB9D8F2872964E00EAEB37 /* cs2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cs2.h; sourceTree = ""; }; + B3EB9D902872964E00EAEB37 /* bios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bios.c; sourceTree = ""; }; + B3EB9D912872964E00EAEB37 /* yabause.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yabause.c; sourceTree = ""; }; + B3EB9D922872964E00EAEB37 /* debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debug.c; sourceTree = ""; }; + B3EB9D932872964E00EAEB37 /* sndmac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sndmac.c; sourceTree = ""; }; + B3EB9D942872964E00EAEB37 /* glext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glext.h; sourceTree = ""; }; + B3EB9D962872964E00EAEB37 /* Tupfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tupfile; sourceTree = ""; }; + B3EB9D972872964E00EAEB37 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3EB9D982872964E00EAEB37 /* yabause_griffin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yabause_griffin.c; sourceTree = ""; }; + B3EB9D992872964E00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9D9A2872964E00EAEB37 /* gas-preprocessor.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "gas-preprocessor.pl"; sourceTree = ""; }; + B3EB9D9B2872964E00EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EB9D9C2872964E00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EB9D9D2872964E00EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EB9DA02872964E00EAEB37 /* encoding_base64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_base64.c; sourceTree = ""; }; + B3EB9DA12872964E00EAEB37 /* encoding_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_crc32.c; sourceTree = ""; }; + B3EB9DA22872964E00EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EB9DA42872964E00EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EB9DA52872964E00EAEB37 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3EB9DA62872964E00EAEB37 /* vfs_implementation_uwp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfs_implementation_uwp.cpp; sourceTree = ""; }; + B3EB9DA82872964E00EAEB37 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3EB9DAA2872964E00EAEB37 /* compat_ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_ifaddrs.c; sourceTree = ""; }; + B3EB9DAB2872964E00EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EB9DAC2872964E00EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EB9DAD2872964E00EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EB9DAE2872964E00EAEB37 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3EB9DAF2872964E00EAEB37 /* compat_getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_getopt.c; sourceTree = ""; }; + B3EB9DB02872964E00EAEB37 /* compat_fnmatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch.c; sourceTree = ""; }; + B3EB9DB12872964E00EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EB9DB22872964E00EAEB37 /* compat_vscprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_vscprintf.c; sourceTree = ""; }; + B3EB9DB42872964E00EAEB37 /* label_sanitization.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = label_sanitization.c; sourceTree = ""; }; + B3EB9DB62872964E00EAEB37 /* dylib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dylib.c; sourceTree = ""; }; + B3EB9DB82872964E00EAEB37 /* net_natt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_natt.c; sourceTree = ""; }; + B3EB9DB92872964E00EAEB37 /* net_socket_ssl_mbed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket_ssl_mbed.c; sourceTree = ""; }; + B3EB9DBA2872964E00EAEB37 /* net_http.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http.c; sourceTree = ""; }; + B3EB9DBB2872964E00EAEB37 /* net_http_parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_parse.c; sourceTree = ""; }; + B3EB9DBC2872964E00EAEB37 /* net_ifinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo.c; sourceTree = ""; }; + B3EB9DBD2872964E00EAEB37 /* net_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_compat.c; sourceTree = ""; }; + B3EB9DBE2872964E00EAEB37 /* net_socket_ssl_bear.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket_ssl_bear.c; sourceTree = ""; }; + B3EB9DBF2872964E00EAEB37 /* net_socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket.c; sourceTree = ""; }; + B3EB9DC02872964E00EAEB37 /* Makefile.test */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.test; sourceTree = ""; }; + B3EB9DC32872964E00EAEB37 /* rwav.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwav.c; sourceTree = ""; }; + B3EB9DC52872964E00EAEB37 /* m3u_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m3u_file.c; sourceTree = ""; }; + B3EB9DC72872964E00EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EB9DC82872964E00EAEB37 /* libchdr_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_zlib.c; sourceTree = ""; }; + B3EB9DC92872964E00EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EB9DCA2872964E00EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EB9DCB2872964E00EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EB9DCC2872964E00EAEB37 /* libchdr_flac_codec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac_codec.c; sourceTree = ""; }; + B3EB9DCD2872964E00EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EB9DCE2872964E00EAEB37 /* libchdr_lzma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_lzma.c; sourceTree = ""; }; + B3EB9DCF2872964E00EAEB37 /* image_texture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_texture.c; sourceTree = ""; }; + B3EB9DD12872964E00EAEB37 /* rtga.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtga.c; sourceTree = ""; }; + B3EB9DD32872964E00EAEB37 /* rpng.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng.c; sourceTree = ""; }; + B3EB9DD42872964E00EAEB37 /* rpng_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng_internal.h; sourceTree = ""; }; + B3EB9DD52872964E00EAEB37 /* rpng_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_encode.c; sourceTree = ""; }; + B3EB9DD82872964E00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9DD92872964E00EAEB37 /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B3EB9DDA2872964E00EAEB37 /* rxml.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml.c; sourceTree = ""; }; + B3EB9DDC2872964E00EAEB37 /* jsonsax_full.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax_full.c; sourceTree = ""; }; + B3EB9DDD2872964E00EAEB37 /* rjson.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjson.c; sourceTree = ""; }; + B3EB9DDE2872964E00EAEB37 /* jsonsax.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax.c; sourceTree = ""; }; + B3EB9DE02872964E00EAEB37 /* logiqx_dat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = logiqx_dat.c; sourceTree = ""; }; + B3EB9DE22872964E00EAEB37 /* cdfs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdfs.c; sourceTree = ""; }; + B3EB9DE42872964E00EAEB37 /* rjpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjpeg.c; sourceTree = ""; }; + B3EB9DE62872964E00EAEB37 /* rbmp_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp_encode.c; sourceTree = ""; }; + B3EB9DE72872964E00EAEB37 /* rbmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp.c; sourceTree = ""; }; + B3EB9DE82872964E00EAEB37 /* image_transfer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_transfer.c; sourceTree = ""; }; + B3EB9DEB2872964E00EAEB37 /* test_linked_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_linked_list.c; sourceTree = ""; }; + B3EB9DED2872964E00EAEB37 /* test_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_hash.c; sourceTree = ""; }; + B3EB9DEF2872964E00EAEB37 /* test_utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_utils.c; sourceTree = ""; }; + B3EB9DF12872964E00EAEB37 /* test_generic_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_generic_queue.c; sourceTree = ""; }; + B3EB9DF32872964E00EAEB37 /* test_stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_stdstring.c; sourceTree = ""; }; + B3EB9DF52872964E00EAEB37 /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B3EB9DF62872964E00EAEB37 /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B3EB9DF72872964E00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EB9DF82872964E00EAEB37 /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B3EB9DF92872964E00EAEB37 /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B3EB9DFA2872964E00EAEB37 /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B3EB9DFB2872964E00EAEB37 /* xglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = xglgen.py; sourceTree = ""; }; + B3EB9DFC2872964E00EAEB37 /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B3EB9DFE2872964E00EAEB37 /* nested_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nested_list.c; sourceTree = ""; }; + B3EB9DFF2872964E00EAEB37 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3EB9E002872964E00EAEB37 /* vector_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vector_list.c; sourceTree = ""; }; + B3EB9E012872964E00EAEB37 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3EB9E022872964E00EAEB37 /* linked_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linked_list.c; sourceTree = ""; }; + B3EB9E032872964E00EAEB37 /* file_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_list.c; sourceTree = ""; }; + B3EB9E052872964E00EAEB37 /* file_path_io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path_io.c; sourceTree = ""; }; + B3EB9E062872964E00EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EB9E072872964E00EAEB37 /* config_file_userdata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file_userdata.c; sourceTree = ""; }; + B3EB9E092872964E00EAEB37 /* nbio_unixmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_unixmmap.c; sourceTree = ""; }; + B3EB9E0A2872964E00EAEB37 /* nbio_linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_linux.c; sourceTree = ""; }; + B3EB9E0B2872964E00EAEB37 /* nbio_orbis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_orbis.c; sourceTree = ""; }; + B3EB9E0C2872964E00EAEB37 /* nbio_windowsmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_windowsmmap.c; sourceTree = ""; }; + B3EB9E0D2872964E00EAEB37 /* nbio_intf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_intf.c; sourceTree = ""; }; + B3EB9E0E2872964E00EAEB37 /* nbio_stdio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_stdio.c; sourceTree = ""; }; + B3EB9E0F2872964E00EAEB37 /* archive_file_7z.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_7z.c; sourceTree = ""; }; + B3EB9E102872964E00EAEB37 /* archive_file_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_zlib.c; sourceTree = ""; }; + B3EB9E112872964E00EAEB37 /* config_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file.c; sourceTree = ""; }; + B3EB9E122872964E00EAEB37 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3EB9E132872964E00EAEB37 /* archive_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file.c; sourceTree = ""; }; + B3EB9E152872964E00EAEB37 /* lrc_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lrc_hash.c; sourceTree = ""; }; + B3EB9E172872964E00EAEB37 /* stdin_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdin_stream.c; sourceTree = ""; }; + B3EB9E182872964E00EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EB9E192872964E00EAEB37 /* trans_stream_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_zlib.c; sourceTree = ""; }; + B3EB9E1A2872964E00EAEB37 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B3EB9E1B2872964E00EAEB37 /* trans_stream_pipe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_pipe.c; sourceTree = ""; }; + B3EB9E1C2872964E00EAEB37 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B3EB9E1D2872964E00EAEB37 /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B3EB9E1E2872964E00EAEB37 /* trans_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream.c; sourceTree = ""; }; + B3EB9E1F2872964E00EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EB9E202872964E00EAEB37 /* rzip_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzip_stream.c; sourceTree = ""; }; + B3EB9E232872964E00EAEB37 /* base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = ""; }; + B3EB9E242872964E00EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EB9E252872964E00EAEB37 /* win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32.h; sourceTree = ""; }; + B3EB9E262872964E00EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EB9E272872964E00EAEB37 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3EB9E282872964E00EAEB37 /* libretro_dspfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_dspfilter.h; sourceTree = ""; }; + B3EB9E2A2872964E00EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EB9E2B2872964E00EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EB9E2C2872964E00EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EB9E2E2872964E00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EB9E2F2872964E00EAEB37 /* libco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; + B3EB9E312872964F00EAEB37 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B3EB9E322872964F00EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EB9E332872964F00EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EB9E342872964F00EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EB9E362872964F00EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EB9E372872964F00EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EB9E382872964F00EAEB37 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3EB9E392872964F00EAEB37 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B3EB9E3A2872964F00EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EB9E3C2872964F00EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EB9E3D2872964F00EAEB37 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3EB9E3E2872964F00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EB9E3F2872964F00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EB9E402872964F00EAEB37 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B3EB9E412872964F00EAEB37 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B3EB9E422872964F00EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EB9E432872964F00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EB9E442872964F00EAEB37 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B3EB9E452872964F00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EB9E462872964F00EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EB9E482872964F00EAEB37 /* label_sanitization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = label_sanitization.h; sourceTree = ""; }; + B3EB9E4A2872964F00EAEB37 /* dylib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dylib.h; sourceTree = ""; }; + B3EB9E4C2872964F00EAEB37 /* net_ifinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_ifinfo.h; sourceTree = ""; }; + B3EB9E4D2872964F00EAEB37 /* net_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_compat.h; sourceTree = ""; }; + B3EB9E4E2872964F00EAEB37 /* net_socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket.h; sourceTree = ""; }; + B3EB9E4F2872964F00EAEB37 /* net_natt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_natt.h; sourceTree = ""; }; + B3EB9E502872964F00EAEB37 /* net_socket_ssl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket_ssl.h; sourceTree = ""; }; + B3EB9E512872964F00EAEB37 /* net_http.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http.h; sourceTree = ""; }; + B3EB9E522872964F00EAEB37 /* net_http_parse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http_parse.h; sourceTree = ""; }; + B3EB9E532872964F00EAEB37 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3EB9E552872964F00EAEB37 /* m3u_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m3u_file.h; sourceTree = ""; }; + B3EB9E562872964F00EAEB37 /* jsonsax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax.h; sourceTree = ""; }; + B3EB9E572872964F00EAEB37 /* rxml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rxml.h; sourceTree = ""; }; + B3EB9E582872964F00EAEB37 /* cdfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdfs.h; sourceTree = ""; }; + B3EB9E592872964F00EAEB37 /* rpng.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng.h; sourceTree = ""; }; + B3EB9E5A2872964F00EAEB37 /* rtga.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtga.h; sourceTree = ""; }; + B3EB9E5B2872964F00EAEB37 /* rjson.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjson.h; sourceTree = ""; }; + B3EB9E5C2872964F00EAEB37 /* image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = ""; }; + B3EB9E5D2872964F00EAEB37 /* logiqx_dat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = logiqx_dat.h; sourceTree = ""; }; + B3EB9E5E2872964F00EAEB37 /* rbmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbmp.h; sourceTree = ""; }; + B3EB9E5F2872964F00EAEB37 /* rwav.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rwav.h; sourceTree = ""; }; + B3EB9E602872964F00EAEB37 /* jsonsax_full.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax_full.h; sourceTree = ""; }; + B3EB9E612872964F00EAEB37 /* rjpeg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjpeg.h; sourceTree = ""; }; + B3EB9E632872964F00EAEB37 /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B3EB9E642872964F00EAEB37 /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B3EB9E652872964F00EAEB37 /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B3EB9E662872964F00EAEB37 /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B3EB9E682872964F00EAEB37 /* nx_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_gl.h; sourceTree = ""; }; + B3EB9E692872964F00EAEB37 /* nx_glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_glsym.h; sourceTree = ""; }; + B3EB9E6A2872964F00EAEB37 /* rglgen_private_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_private_headers.h; sourceTree = ""; }; + B3EB9E6B2872964F00EAEB37 /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B3EB9E6C2872964F00EAEB37 /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B3EB9E6E2872964F00EAEB37 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3EB9E6F2872964F00EAEB37 /* linked_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linked_list.h; sourceTree = ""; }; + B3EB9E702872964F00EAEB37 /* file_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_list.h; sourceTree = ""; }; + B3EB9E712872964F00EAEB37 /* nested_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nested_list.h; sourceTree = ""; }; + B3EB9E722872964F00EAEB37 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3EB9E742872964F00EAEB37 /* nbio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nbio.h; sourceTree = ""; }; + B3EB9E752872964F00EAEB37 /* config_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file.h; sourceTree = ""; }; + B3EB9E762872964F00EAEB37 /* archive_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_file.h; sourceTree = ""; }; + B3EB9E772872964F00EAEB37 /* config_file_userdata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file_userdata.h; sourceTree = ""; }; + B3EB9E782872964F00EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EB9E792872964F00EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EB9E7B2872964F00EAEB37 /* rhmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rhmap.h; sourceTree = ""; }; + B3EB9E7C2872964F00EAEB37 /* rbuf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbuf.h; sourceTree = ""; }; + B3EB9E7D2872964F00EAEB37 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3EB9E7E2872964F00EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EB9E7F2872964F00EAEB37 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3EB9E812872964F00EAEB37 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3EB9E822872964F00EAEB37 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3EB9E832872964F00EAEB37 /* trans_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trans_stream.h; sourceTree = ""; }; + B3EB9E842872964F00EAEB37 /* rzip_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rzip_stream.h; sourceTree = ""; }; + B3EB9E852872964F00EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EB9E862872964F00EAEB37 /* stdin_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdin_stream.h; sourceTree = ""; }; + B3EB9E872872964F00EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EB9E882872964F00EAEB37 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3EB9E892872964F00EAEB37 /* fastcpy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fastcpy.h; sourceTree = ""; }; + B3EB9E8B2872964F00EAEB37 /* features_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = features_cpu.h; sourceTree = ""; }; + B3EB9E8C2872964F00EAEB37 /* lrc_hash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lrc_hash.h; sourceTree = ""; }; + B3EB9E8E2872964F00EAEB37 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3EB9E8F2872964F00EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EB9E902872964F00EAEB37 /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B3EB9E922872964F00EAEB37 /* float_minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_minmax.h; sourceTree = ""; }; + B3EB9E932872964F00EAEB37 /* fxp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fxp.h; sourceTree = ""; }; + B3EB9E942872964F00EAEB37 /* complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = complex.h; sourceTree = ""; }; + B3EB9E962872964F00EAEB37 /* rtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtime.h; sourceTree = ""; }; + B3EB9E982872964F00EAEB37 /* d3d_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_defines.h; sourceTree = ""; }; + B3EB9E992872964F00EAEB37 /* gx_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_defines.h; sourceTree = ""; }; + B3EB9E9A2872964F00EAEB37 /* cocoa_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cocoa_defines.h; sourceTree = ""; }; + B3EB9E9B2872964F00EAEB37 /* psp_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_defines.h; sourceTree = ""; }; + B3EB9E9C2872964F00EAEB37 /* ps3_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps3_defines.h; sourceTree = ""; }; + B3EB9E9D2872964F00EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EB9E9E2872964F00EAEB37 /* libretro_gskit_ps2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_gskit_ps2.h; sourceTree = ""; }; + B3EB9EA02872964F00EAEB37 /* glsm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm.h; sourceTree = ""; }; + B3EB9EA12872964F00EAEB37 /* glsmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsmsym.h; sourceTree = ""; }; + B3EB9EA32872964F00EAEB37 /* dsp_filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_filter.h; sourceTree = ""; }; + B3EB9EA42872964F00EAEB37 /* audio_resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_resampler.h; sourceTree = ""; }; + B3EB9EA52872964F00EAEB37 /* audio_mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mixer.h; sourceTree = ""; }; + B3EB9EA72872964F00EAEB37 /* s16_to_float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s16_to_float.h; sourceTree = ""; }; + B3EB9EA82872964F00EAEB37 /* float_to_s16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_to_s16.h; sourceTree = ""; }; + B3EB9EA92872964F00EAEB37 /* audio_mix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mix.h; sourceTree = ""; }; + B3EB9EAA2872964F00EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EB9EAC2872964F00EAEB37 /* tpool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tpool.h; sourceTree = ""; }; + B3EB9EAD2872964F00EAEB37 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3EB9EAE2872964F00EAEB37 /* async_job.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = async_job.h; sourceTree = ""; }; + B3EB9EAF2872964F00EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EB9EB12872964F00EAEB37 /* vulkan_symbol_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_symbol_wrapper.h; sourceTree = ""; }; + B3EB9EB22872964F00EAEB37 /* retro_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; + B3EB9EB32872964F00EAEB37 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3EB9EB52872964F00EAEB37 /* generic_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = generic_queue.h; sourceTree = ""; }; + B3EB9EB62872964F00EAEB37 /* task_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = task_queue.h; sourceTree = ""; }; + B3EB9EB72872964F00EAEB37 /* fifo_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fifo_queue.h; sourceTree = ""; }; + B3EB9EB82872964F00EAEB37 /* message_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message_queue.h; sourceTree = ""; }; + B3EB9EB92872964F00EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EB9EBB2872964F00EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EB9EBC2872964F00EAEB37 /* libretro_d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_d3d.h; sourceTree = ""; }; + B3EB9EBD2872964F00EAEB37 /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B3EB9EBF2872964F00EAEB37 /* video_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_frame.h; sourceTree = ""; }; + B3EB9EC12872964F00EAEB37 /* vector_4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_4.h; sourceTree = ""; }; + B3EB9EC22872964F00EAEB37 /* vector_3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_3.h; sourceTree = ""; }; + B3EB9EC32872964F00EAEB37 /* vector_2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_2.h; sourceTree = ""; }; + B3EB9EC42872964F00EAEB37 /* matrix_3x3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_3x3.h; sourceTree = ""; }; + B3EB9EC52872964F00EAEB37 /* matrix_4x4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_4x4.h; sourceTree = ""; }; + B3EB9EC72872964F00EAEB37 /* scaler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; + B3EB9EC82872964F00EAEB37 /* pixconv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pixconv.h; sourceTree = ""; }; + B3EB9EC92872964F00EAEB37 /* scaler_int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler_int.h; sourceTree = ""; }; + B3EB9ECA2872964F00EAEB37 /* filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + B3EB9ECB2872964F00EAEB37 /* gl_capabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_capabilities.h; sourceTree = ""; }; + B3EB9ECC2872964F00EAEB37 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3EB9ECD2872964F00EAEB37 /* filters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + B3EB9ECF2872964F00EAEB37 /* media_detect_cd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = media_detect_cd.h; sourceTree = ""; }; + B3EB9ED12872964F00EAEB37 /* features_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = features_cpu.c; sourceTree = ""; }; + B3EB9ED32872964F00EAEB37 /* djb2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = djb2.c; sourceTree = ""; }; + B3EB9ED42872964F00EAEB37 /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = ""; }; + B3EB9ED62872964F00EAEB37 /* debugbreak.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugbreak.c; sourceTree = ""; }; + B3EB9ED72872964F00EAEB37 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B3EB9ED92872964F00EAEB37 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3EB9EDA2872964F00EAEB37 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3EB9EDC2872964F00EAEB37 /* rtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtime.c; sourceTree = ""; }; + B3EB9EE12872964F00EAEB37 /* core_option_regex.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = core_option_regex.py; sourceTree = ""; }; + B3EB9EE22872964F00EAEB37 /* v1_to_v2_converter.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = v1_to_v2_converter.py; sourceTree = ""; }; + B3EB9EE32872964F00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EB9EE42872964F00EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EB9EE62872964F00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EB9EE72872964F00EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EB9EE82872964F00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EB9EEA2872964F00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EB9EEB2872964F00EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EB9EED2872964F00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EB9EEE2872964F00EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EB9EF12872964F00EAEB37 /* compat_fnmatch_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch_test.c; sourceTree = ""; }; + B3EB9EF22872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9EF42872964F00EAEB37 /* strl_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = strl_test.c; sourceTree = ""; }; + B3EB9EF52872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9EF72872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9EF82872964F00EAEB37 /* snprintf_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snprintf_test.c; sourceTree = ""; }; + B3EB9EFA2872964F00EAEB37 /* net_ifinfo_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo_test.c; sourceTree = ""; }; + B3EB9EFB2872964F00EAEB37 /* udp-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "udp-test.c"; sourceTree = ""; }; + B3EB9EFC2872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9EFD2872964F00EAEB37 /* net_http_parse_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_parse_test.c; sourceTree = ""; }; + B3EB9EFE2872964F00EAEB37 /* net_ifinfo */ = {isa = PBXFileReference; lastKnownFileType = file; path = net_ifinfo; sourceTree = ""; }; + B3EB9EFF2872964F00EAEB37 /* http_test */ = {isa = PBXFileReference; lastKnownFileType = file; path = http_test; sourceTree = ""; }; + B3EB9F002872964F00EAEB37 /* net_http_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_test.c; sourceTree = ""; }; + B3EB9F032872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9F042872964F00EAEB37 /* rpng_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_test.c; sourceTree = ""; }; + B3EB9F062872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9F072872964F00EAEB37 /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B3EB9F0A2872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9F0B2872964F00EAEB37 /* nbio_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_test.c; sourceTree = ""; }; + B3EB9F0D2872964F00EAEB37 /* config_file_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file_test.c; sourceTree = ""; }; + B3EB9F0E2872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9F112872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9F122872964F00EAEB37 /* rzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzip.c; sourceTree = ""; }; + B3EB9F142872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9F152872964F00EAEB37 /* md5_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5_test.c; sourceTree = ""; }; + B3EB9F162872964F00EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EB9F172872964F00EAEB37 /* sha1_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1_main.c; sourceTree = ""; }; + B3EB9F192872964F00EAEB37 /* glsm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsm.c; sourceTree = ""; }; + B3EB9F1C2872964F00EAEB37 /* eq.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eq.c; sourceTree = ""; }; + B3EB9F1D2872964F00EAEB37 /* EQ.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EQ.dsp; sourceTree = ""; }; + B3EB9F1E2872964F00EAEB37 /* Vibrato.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Vibrato.dsp; sourceTree = ""; }; + B3EB9F1F2872964F00EAEB37 /* ChipTuneEnhance.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChipTuneEnhance.dsp; sourceTree = ""; }; + B3EB9F202872964F00EAEB37 /* phaser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = phaser.c; sourceTree = ""; }; + B3EB9F212872964F00EAEB37 /* Crystalizer.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Crystalizer.dsp; sourceTree = ""; }; + B3EB9F222872964F00EAEB37 /* Mono.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Mono.dsp; sourceTree = ""; }; + B3EB9F232872964F00EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EB9F242872964F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EB9F252872964F00EAEB37 /* chorus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chorus.c; sourceTree = ""; }; + B3EB9F262872964F00EAEB37 /* Phaser.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Phaser.dsp; sourceTree = ""; }; + B3EB9F272872964F00EAEB37 /* wahwah.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wahwah.c; sourceTree = ""; }; + B3EB9F282872964F00EAEB37 /* IIR.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = IIR.dsp; sourceTree = ""; }; + B3EB9F292872964F00EAEB37 /* HighShelfDampen.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = HighShelfDampen.dsp; sourceTree = ""; }; + B3EB9F2A2872964F00EAEB37 /* EchoReverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EchoReverb.dsp; sourceTree = ""; }; + B3EB9F2B2872964F00EAEB37 /* iir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iir.c; sourceTree = ""; }; + B3EB9F2C2872964F00EAEB37 /* reverb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reverb.c; sourceTree = ""; }; + B3EB9F2D2872964F00EAEB37 /* crystalizer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crystalizer.c; sourceTree = ""; }; + B3EB9F2E2872964F00EAEB37 /* WahWah.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = WahWah.dsp; sourceTree = ""; }; + B3EB9F302872964F00EAEB37 /* fft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = ""; }; + B3EB9F312872964F00EAEB37 /* fft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fft.c; sourceTree = ""; }; + B3EB9F322872964F00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EB9F332872964F00EAEB37 /* BassBoost.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = BassBoost.dsp; sourceTree = ""; }; + B3EB9F342872964F00EAEB37 /* vibrato.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vibrato.c; sourceTree = ""; }; + B3EB9F352872964F00EAEB37 /* Echo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Echo.dsp; sourceTree = ""; }; + B3EB9F362872964F00EAEB37 /* LowPassCPS.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = LowPassCPS.dsp; sourceTree = ""; }; + B3EB9F372872964F00EAEB37 /* Panning.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Panning.dsp; sourceTree = ""; }; + B3EB9F382872964F00EAEB37 /* tremolo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tremolo.c; sourceTree = ""; }; + B3EB9F392872964F00EAEB37 /* panning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = panning.c; sourceTree = ""; }; + B3EB9F3A2872964F00EAEB37 /* Chorus.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Chorus.dsp; sourceTree = ""; }; + B3EB9F3B2872964F00EAEB37 /* Tremolo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tremolo.dsp; sourceTree = ""; }; + B3EB9F3C2872964F00EAEB37 /* Reverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Reverb.dsp; sourceTree = ""; }; + B3EB9F3D2872964F00EAEB37 /* echo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = echo.c; sourceTree = ""; }; + B3EB9F3E2872964F00EAEB37 /* audio_mix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mix.c; sourceTree = ""; }; + B3EB9F412872964F00EAEB37 /* sinc_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sinc_resampler.c; sourceTree = ""; }; + B3EB9F422872964F00EAEB37 /* nearest_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nearest_resampler.c; sourceTree = ""; }; + B3EB9F432872964F00EAEB37 /* sinc_resampler_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sinc_resampler_neon.S; sourceTree = ""; }; + B3EB9F442872964F00EAEB37 /* audio_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_resampler.c; sourceTree = ""; }; + B3EB9F452872964F00EAEB37 /* dsp_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp_filter.c; sourceTree = ""; }; + B3EB9F472872964F00EAEB37 /* s16_to_float.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float.c; sourceTree = ""; }; + B3EB9F482872964F00EAEB37 /* float_to_s16_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16_neon.c; sourceTree = ""; }; + B3EB9F492872964F00EAEB37 /* s16_to_float_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float_neon.c; sourceTree = ""; }; + B3EB9F4A2872964F00EAEB37 /* float_to_s16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16.c; sourceTree = ""; }; + B3EB9F4B2872964F00EAEB37 /* float_to_s16_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = float_to_s16_neon.S; sourceTree = ""; }; + B3EB9F4C2872964F00EAEB37 /* s16_to_float_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = s16_to_float_neon.S; sourceTree = ""; }; + B3EB9F4D2872964F00EAEB37 /* audio_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mixer.c; sourceTree = ""; }; + B3EB9F4F2872964F00EAEB37 /* wiiu_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiiu_pthread.h; sourceTree = ""; }; + B3EB9F502872964F00EAEB37 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3EB9F512872964F00EAEB37 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3EB9F522872964F00EAEB37 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3EB9F532872964F00EAEB37 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3EB9F542872964F00EAEB37 /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B3EB9F552872964F00EAEB37 /* tpool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tpool.c; sourceTree = ""; }; + B3EB9F562872964F00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EB9F582872964F00EAEB37 /* vulkan_symbol_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_symbol_wrapper.c; sourceTree = ""; }; + B3EB9F5A2872964F00EAEB37 /* fifo_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fifo_queue.c; sourceTree = ""; }; + B3EB9F5B2872964F00EAEB37 /* message_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = message_queue.c; sourceTree = ""; }; + B3EB9F5C2872964F00EAEB37 /* generic_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = generic_queue.c; sourceTree = ""; }; + B3EB9F5D2872964F00EAEB37 /* task_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_queue.c; sourceTree = ""; }; + B3EB9F5F2872964F00EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EB9F622872964F00EAEB37 /* string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string.h; sourceTree = ""; }; + B3EB9F632872964F00EAEB37 /* string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = ""; }; + B3EB9F652872964F00EAEB37 /* gl_capabilities.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl_capabilities.c; sourceTree = ""; }; + B3EB9F672872964F00EAEB37 /* scaler_int.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_int.c; sourceTree = ""; }; + B3EB9F682872964F00EAEB37 /* pixconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; + B3EB9F692872964F00EAEB37 /* scaler_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_filter.c; sourceTree = ""; }; + B3EB9F6A2872964F00EAEB37 /* scaler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + B3EB9F6C2872964F00EAEB37 /* sjlj.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjlj.c; sourceTree = ""; }; + B3EB9F6D2872964F00EAEB37 /* ps2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps2.c; sourceTree = ""; }; + B3EB9F6E2872964F00EAEB37 /* ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ppc.c; sourceTree = ""; }; + B3EB9F6F2872964F00EAEB37 /* ucontext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ucontext.c; sourceTree = ""; }; + B3EB9F702872964F00EAEB37 /* fiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fiber.c; sourceTree = ""; }; + B3EB9F712872964F00EAEB37 /* aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aarch64.c; sourceTree = ""; }; + B3EB9F722872964F00EAEB37 /* libco.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libco.c; sourceTree = ""; }; + B3EB9F732872964F00EAEB37 /* scefiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scefiber.c; sourceTree = ""; }; + B3EB9F742872964F00EAEB37 /* genode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = genode.cpp; sourceTree = ""; }; + B3EB9F752872964F00EAEB37 /* armeabi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armeabi.c; sourceTree = ""; }; + B3EB9F762872964F00EAEB37 /* amd64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = amd64.c; sourceTree = ""; }; + B3EB9F772872964F00EAEB37 /* psp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp2.c; sourceTree = ""; }; + B3EB9F782872964F00EAEB37 /* x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = ""; }; + B3EB9F792872964F00EAEB37 /* psp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp1.c; sourceTree = ""; }; + B3EB9F7B2872964F00EAEB37 /* media_detect_cd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = media_detect_cd.c; sourceTree = ""; }; + B3EB9F7C2872964F00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EB9F7E2872964F00EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EB9F7F2872964F00EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EB9F802872964F00EAEB37 /* sock-dummy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "sock-dummy.c"; sourceTree = ""; }; + B3EB9F812872964F00EAEB37 /* cheat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cheat.c; sourceTree = ""; }; + B3EB9F822872964F00EAEB37 /* sh2iasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2iasm.c; sourceTree = ""; }; + B3EB9F832872964F00EAEB37 /* yglshaderes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yglshaderes.c; sourceTree = ""; }; + B3EB9F842872964F00EAEB37 /* vidogl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vidogl.h; sourceTree = ""; }; + B3EB9F862872964F00EAEB37 /* q68-jit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "q68-jit.h"; sourceTree = ""; }; + B3EB9F872872964F00EAEB37 /* q68-jit-x86.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "q68-jit-x86.S"; sourceTree = ""; }; + B3EB9F882872964F00EAEB37 /* q68-jit-x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "q68-jit-x86.h"; sourceTree = ""; }; + B3EB9F892872964F00EAEB37 /* q68-disasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "q68-disasm.c"; sourceTree = ""; }; + B3EB9F8A2872964F00EAEB37 /* q68.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = q68.c; sourceTree = ""; }; + B3EB9F8B2872964F00EAEB37 /* q68-internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "q68-internal.h"; sourceTree = ""; }; + B3EB9F8C2872964F00EAEB37 /* q68-jit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "q68-jit.c"; sourceTree = ""; }; + B3EB9F8D2872964F00EAEB37 /* q68-const.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "q68-const.h"; sourceTree = ""; }; + B3EB9F8E2872964F00EAEB37 /* q68-jit-psp.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "q68-jit-psp.S"; sourceTree = ""; }; + B3EB9F8F2872964F00EAEB37 /* q68-jit-psp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "q68-jit-psp.h"; sourceTree = ""; }; + B3EB9F902872964F00EAEB37 /* q68-core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "q68-core.c"; sourceTree = ""; }; + B3EB9F912872964F00EAEB37 /* q68.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = q68.h; sourceTree = ""; }; + B3EB9F932872964F00EAEB37 /* CMake-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CMake-Info.plist"; sourceTree = ""; }; + B3EB9F942872965000EAEB37 /* YabauseButtonFormatter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabauseButtonFormatter.h; sourceTree = ""; }; + B3EB9F962872965000EAEB37 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + B3EB9F982872965000EAEB37 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; + B3EB9F992872965000EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9F9A2872965000EAEB37 /* Yabause.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = Yabause.xcodeproj; sourceTree = ""; }; + B3EB9F9D2872965000EAEB37 /* YabauseController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YabauseController.m; sourceTree = ""; }; + B3EB9F9E2872965000EAEB37 /* PerCocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PerCocoa.h; sourceTree = ""; }; + B3EB9F9F2872965000EAEB37 /* YabauseGLView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabauseGLView.h; sourceTree = ""; }; + B3EB9FA02872965000EAEB37 /* YabausePrefsController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YabausePrefsController.m; sourceTree = ""; }; + B3EB9FA12872965000EAEB37 /* Yabause.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Yabause.icns; sourceTree = ""; }; + B3EB9FA32872965000EAEB37 /* controller.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = controller.png; sourceTree = ""; }; + B3EB9FA42872965000EAEB37 /* vidgcd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vidgcd.c; sourceTree = ""; }; + B3EB9FA52872965000EAEB37 /* Yabause-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Yabause-Info.plist"; sourceTree = ""; }; + B3EB9FA62872965000EAEB37 /* YabauseButtonFormatter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YabauseButtonFormatter.m; sourceTree = ""; }; + B3EB9FA72872965000EAEB37 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B3EB9FA82872965000EAEB37 /* YabauseGLView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YabauseGLView.m; sourceTree = ""; }; + B3EB9FA92872965000EAEB37 /* PerCocoa.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PerCocoa.m; sourceTree = ""; }; + B3EB9FAA2872965000EAEB37 /* YabauseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabauseController.h; sourceTree = ""; }; + B3EB9FAB2872965000EAEB37 /* vidgcd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vidgcd.h; sourceTree = ""; }; + B3EB9FAC2872965000EAEB37 /* YabausePrefsController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YabausePrefsController.h; sourceTree = ""; }; + B3EB9FAD2872965000EAEB37 /* cs0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cs0.c; sourceTree = ""; }; + B3EB9FAE2872965000EAEB37 /* scsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scsp.c; sourceTree = ""; }; + B3EB9FAF2872965000EAEB37 /* mpeg_card.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mpeg_card.h; sourceTree = ""; }; + B3EB9FB02872965000EAEB37 /* thr-rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "thr-rthreads.c"; sourceTree = ""; }; + B3EB9FB12872965000EAEB37 /* permacjoy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = permacjoy.c; sourceTree = ""; }; + B3EB9FB22872965000EAEB37 /* error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + B3EB9FB32872965000EAEB37 /* gameinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gameinfo.h; sourceTree = ""; }; + B3EB9FB42872965000EAEB37 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = ""; }; + B3EB9FB52872965000EAEB37 /* sh2d.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2d.c; sourceTree = ""; }; + B3EB9FB62872965000EAEB37 /* ygles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ygles.c; sourceTree = ""; }; + B3EB9FB72872965000EAEB37 /* japmodem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = japmodem.c; sourceTree = ""; }; + B3EB9FB82872965000EAEB37 /* m68kmusashi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kmusashi.h; sourceTree = ""; }; + B3EB9FB92872965000EAEB37 /* vdp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdp1.c; sourceTree = ""; }; + B3EB9FBA2872965000EAEB37 /* perlinuxjoy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = perlinuxjoy.c; sourceTree = ""; }; + B3EB9FBB2872965000EAEB37 /* m68kc68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kc68k.c; sourceTree = ""; }; + B3EB9FBC2872965000EAEB37 /* osdcore.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osdcore.c; sourceTree = ""; }; + B3EB9FC02872965000EAEB37 /* main.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = main.xml; sourceTree = ""; }; + B3EB9FC12872965000EAEB37 /* game_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = game_item.xml; sourceTree = ""; }; + B3EB9FC22872965000EAEB37 /* save_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = save_item.xml; sourceTree = ""; }; + B3EB9FC32872965000EAEB37 /* home.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = home.xml; sourceTree = ""; }; + B3EB9FC42872965000EAEB37 /* save_list.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = save_list.xml; sourceTree = ""; }; + B3EB9FC62872965000EAEB37 /* strings.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = strings.xml; sourceTree = ""; }; + B3EB9FC82872965000EAEB37 /* banner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = banner.png; sourceTree = ""; }; + B3EB9FCA2872965000EAEB37 /* preferences.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = preferences.xml; sourceTree = ""; }; + B3EB9FCC2872965000EAEB37 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B3EB9FCE2872965000EAEB37 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B3EB9FD02872965000EAEB37 /* save_list.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = save_list.xml; sourceTree = ""; }; + B3EB9FD22872965000EAEB37 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + B3EB9FD42872965000EAEB37 /* save_item.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = save_item.xml; sourceTree = ""; }; + B3EB9FD52872965000EAEB37 /* arm64-v8a.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "arm64-v8a.cmake"; sourceTree = ""; }; + B3EB9FD62872965000EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EB9FD72872965000EAEB37 /* android-windows.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "android-windows.cmake"; sourceTree = ""; }; + B3EB9FD82872965000EAEB37 /* AndroidManifest.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AndroidManifest.xml; sourceTree = ""; }; + B3EB9FDB2872965000EAEB37 /* gradle-wrapper.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = "gradle-wrapper.jar"; sourceTree = ""; }; + B3EB9FDC2872965000EAEB37 /* gradle-wrapper.properties */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gradle-wrapper.properties"; sourceTree = ""; }; + B3EB9FDD2872965000EAEB37 /* gradlew */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew; sourceTree = ""; }; + B3EB9FDE2872965000EAEB37 /* x86.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = x86.cmake; sourceTree = ""; }; + B3EB9FDF2872965000EAEB37 /* build.gradle */ = {isa = PBXFileReference; lastKnownFileType = text; path = build.gradle; sourceTree = ""; }; + B3EB9FE02872965000EAEB37 /* armeabi.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = armeabi.cmake; sourceTree = ""; }; + B3EB9FE12872965000EAEB37 /* gradlew.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradlew.bat; sourceTree = ""; }; + B3EB9FE32872965000EAEB37 /* Application.mk.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk.in; sourceTree = ""; }; + B3EB9FE42872965000EAEB37 /* Android.mk.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk.in; sourceTree = ""; }; + B3EB9FE52872965000EAEB37 /* sndaudiotrack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndaudiotrack.h; sourceTree = ""; }; + B3EB9FE62872965000EAEB37 /* sndopensl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndopensl.h; sourceTree = ""; }; + B3EB9FE72872965000EAEB37 /* yui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yui.c; sourceTree = ""; }; + B3EB9FE82872965000EAEB37 /* miniegl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = miniegl.h; sourceTree = ""; }; + B3EB9FE92872965000EAEB37 /* sndopensl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sndopensl.c; sourceTree = ""; }; + B3EB9FEA2872965000EAEB37 /* sndaudiotrack.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sndaudiotrack.c; sourceTree = ""; }; + B3EB9FEB2872965000EAEB37 /* gradle.properties.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = gradle.properties.in; sourceTree = ""; }; + B3EB9FF02872965000EAEB37 /* YabausePad.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = YabausePad.java; sourceTree = ""; }; + B3EB9FF12872965000EAEB37 /* YabauseSettings.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = YabauseSettings.java; sourceTree = ""; }; + B3EB9FF22872965000EAEB37 /* Cartridge.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Cartridge.java; sourceTree = ""; }; + B3EB9FF32872965000EAEB37 /* Yabause.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Yabause.java; sourceTree = ""; }; + B3EB9FF42872965000EAEB37 /* Home.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = Home.java; sourceTree = ""; }; + B3EB9FF52872965000EAEB37 /* YabauseStorage.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = YabauseStorage.java; sourceTree = ""; }; + B3EB9FF62872965000EAEB37 /* YabauseAudio.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = YabauseAudio.java; sourceTree = ""; }; + B3EB9FF72872965000EAEB37 /* PadEvent.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PadEvent.java; sourceTree = ""; }; + B3EB9FF82872965000EAEB37 /* YabauseView.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = YabauseView.java; sourceTree = ""; }; + B3EB9FF92872965000EAEB37 /* GameInfoManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameInfoManager.java; sourceTree = ""; }; + B3EB9FFA2872965000EAEB37 /* PadManager.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PadManager.java; sourceTree = ""; }; + B3EB9FFB2872965000EAEB37 /* PadManagerV16.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PadManagerV16.java; sourceTree = ""; }; + B3EB9FFC2872965000EAEB37 /* GameInfo.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameInfo.java; sourceTree = ""; }; + B3EB9FFD2872965000EAEB37 /* SaveList.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SaveList.java; sourceTree = ""; }; + B3EB9FFE2872965000EAEB37 /* GameList.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameList.java; sourceTree = ""; }; + B3EB9FFF2872965000EAEB37 /* GameListAdapter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = GameListAdapter.java; sourceTree = ""; }; + B3EBA0002872965000EAEB37 /* PadManagerV8.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = PadManagerV8.java; sourceTree = ""; }; + B3EBA0012872965000EAEB37 /* SaveListModeListener.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SaveListModeListener.java; sourceTree = ""; }; + B3EBA0022872965000EAEB37 /* SaveListAdapter.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = SaveListAdapter.java; sourceTree = ""; }; + B3EBA0032872965000EAEB37 /* vidsoft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vidsoft.h; sourceTree = ""; }; + B3EBA0042872965000EAEB37 /* sock-windows.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "sock-windows.c"; sourceTree = ""; }; + B3EBA0052872965000EAEB37 /* cd_drive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cd_drive.h; sourceTree = ""; }; + B3EBA0062872965000EAEB37 /* scu_dsp_jit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scu_dsp_jit.h; sourceTree = ""; }; + B3EBA0082872965000EAEB37 /* m68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; + B3EBA0092872965000EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA00A2872965000EAEB37 /* m68kcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kcpu.c; sourceTree = ""; }; + B3EBA00B2872965000EAEB37 /* m68kdasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kdasm.c; sourceTree = ""; }; + B3EBA00C2872965000EAEB37 /* m68kopac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kopac.c; sourceTree = ""; }; + B3EBA00D2872965000EAEB37 /* m68kops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kops.c; sourceTree = ""; }; + B3EBA00E2872965000EAEB37 /* m68kmake.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kmake.c; sourceTree = ""; }; + B3EBA00F2872965000EAEB37 /* m68kopdm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kopdm.c; sourceTree = ""; }; + B3EBA0102872965000EAEB37 /* m68kcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kcpu.h; sourceTree = ""; }; + B3EBA0112872965000EAEB37 /* m68kconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kconf.h; sourceTree = ""; }; + B3EBA0122872965000EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA0132872965000EAEB37 /* m68kopnz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kopnz.c; sourceTree = ""; }; + B3EBA0142872965000EAEB37 /* m68kops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kops.h; sourceTree = ""; }; + B3EBA0152872965000EAEB37 /* m68k_in.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68k_in.c; sourceTree = ""; }; + B3EBA0162872965000EAEB37 /* sh2int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2int.h; sourceTree = ""; }; + B3EBA0172872965000EAEB37 /* sndsdl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sndsdl.c; sourceTree = ""; }; + B3EBA0182872965000EAEB37 /* sh7034.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh7034.c; sourceTree = ""; }; + B3EBA0192872965000EAEB37 /* profile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profile.c; sourceTree = ""; }; + B3EBA01A2872965000EAEB37 /* scu_dsp_jit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = scu_dsp_jit.cpp; sourceTree = ""; }; + B3EBA01B2872965000EAEB37 /* sh2_jit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sh2_jit.cpp; sourceTree = ""; }; + B3EBA01C2872965000EAEB37 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B3EBA01D2872965000EAEB37 /* sh2cache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2cache.c; sourceTree = ""; }; + B3EBA01E2872965000EAEB37 /* junzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = junzip.h; sourceTree = ""; }; + B3EBA01F2872965000EAEB37 /* cd-libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cd-libretro.c"; sourceTree = ""; }; + B3EBA0212872965000EAEB37 /* yuim68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuim68k.c; sourceTree = ""; }; + B3EBA0222872965000EAEB37 /* gtk-compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "gtk-compat.c"; sourceTree = ""; }; + B3EBA0232872965000EAEB37 /* yuipage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuipage.c; sourceTree = ""; }; + B3EBA0242872965000EAEB37 /* yuiscsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuiscsp.c; sourceTree = ""; }; + B3EBA0252872965000EAEB37 /* yuirange.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuirange.c; sourceTree = ""; }; + B3EBA0262872965000EAEB37 /* yuivdp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuivdp1.c; sourceTree = ""; }; + B3EBA0272872965000EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA0282872965000EAEB37 /* pergtk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pergtk.h; sourceTree = ""; }; + B3EBA0292872965000EAEB37 /* menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; + B3EBA02A2872965000EAEB37 /* yuicheckbutton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuicheckbutton.h; sourceTree = ""; }; + B3EBA02B2872965000EAEB37 /* settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = settings.h; sourceTree = ""; }; + B3EBA02C2872965000EAEB37 /* yuiviewer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuiviewer.c; sourceTree = ""; }; + B3EBA02D2872965000EAEB37 /* yuiresolution.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuiresolution.c; sourceTree = ""; }; + B3EBA02E2872965000EAEB37 /* yuiscudsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuiscudsp.c; sourceTree = ""; }; + B3EBA02F2872965000EAEB37 /* gtkglwidget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtkglwidget.c; sourceTree = ""; }; + B3EBA0302872965000EAEB37 /* yuiinputentry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuiinputentry.c; sourceTree = ""; }; + B3EBA0312872965000EAEB37 /* yuish.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuish.h; sourceTree = ""; }; + B3EBA0322872965000EAEB37 /* yuiscreenshot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuiscreenshot.h; sourceTree = ""; }; + B3EBA0332872965000EAEB37 /* yuivdp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuivdp2.c; sourceTree = ""; }; + B3EBA0342872965000EAEB37 /* yuimem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuimem.h; sourceTree = ""; }; + B3EBA0352872965000EAEB37 /* yuifileentry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuifileentry.h; sourceTree = ""; }; + B3EBA0362872965000EAEB37 /* yabause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = yabause.png; sourceTree = ""; }; + B3EBA0372872965000EAEB37 /* yuitransfer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuitransfer.h; sourceTree = ""; }; + B3EBA0382872965000EAEB37 /* yuiwindow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuiwindow.c; sourceTree = ""; }; + B3EBA0392872965000EAEB37 /* yuiscsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuiscsp.h; sourceTree = ""; }; + B3EBA03A2872965000EAEB37 /* gtk-compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gtk-compat.h"; sourceTree = ""; }; + B3EBA03B2872965000EAEB37 /* yuipage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuipage.h; sourceTree = ""; }; + B3EBA03C2872965000EAEB37 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3EBA03D2872965000EAEB37 /* yuim68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuim68k.h; sourceTree = ""; }; + B3EBA03E2872965000EAEB37 /* yuiresolution.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuiresolution.h; sourceTree = ""; }; + B3EBA03F2872965000EAEB37 /* yuiviewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuiviewer.h; sourceTree = ""; }; + B3EBA0402872965000EAEB37 /* yuicheckbutton.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuicheckbutton.c; sourceTree = ""; }; + B3EBA0412872965000EAEB37 /* settings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = settings.c; sourceTree = ""; }; + B3EBA0422872965000EAEB37 /* pergtk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pergtk.c; sourceTree = ""; }; + B3EBA0432872965000EAEB37 /* yuivdp1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuivdp1.h; sourceTree = ""; }; + B3EBA0442872965000EAEB37 /* yuirange.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuirange.h; sourceTree = ""; }; + B3EBA0462872965000EAEB37 /* yabause.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = yabause.1; sourceTree = ""; }; + B3EBA0472872965000EAEB37 /* yuiscreenshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuiscreenshot.c; sourceTree = ""; }; + B3EBA0482872965000EAEB37 /* yuiscudsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuiscudsp.h; sourceTree = ""; }; + B3EBA0492872965000EAEB37 /* yuiinputentry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuiinputentry.h; sourceTree = ""; }; + B3EBA04A2872965000EAEB37 /* yuish.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuish.c; sourceTree = ""; }; + B3EBA04B2872965000EAEB37 /* gtkglwidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtkglwidget.h; sourceTree = ""; }; + B3EBA04C2872965000EAEB37 /* yuitransfer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuitransfer.c; sourceTree = ""; }; + B3EBA04D2872965000EAEB37 /* yuiwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuiwindow.h; sourceTree = ""; }; + B3EBA04E2872965000EAEB37 /* yuimem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuimem.c; sourceTree = ""; }; + B3EBA04F2872965000EAEB37 /* yuivdp2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = yuivdp2.h; sourceTree = ""; }; + B3EBA0502872965000EAEB37 /* yuifileentry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yuifileentry.c; sourceTree = ""; }; + B3EBA0512872965000EAEB37 /* yabause.desktop.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = yabause.desktop.in; sourceTree = ""; }; + B3EBA0522872965000EAEB37 /* coffelf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = coffelf.c; sourceTree = ""; }; + B3EBA0532872965000EAEB37 /* vdp2debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdp2debug.c; sourceTree = ""; }; + B3EBA0542872965000EAEB37 /* sh1-pseudo.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "sh1-pseudo.txt"; sourceTree = ""; }; + B3EBA0552872965000EAEB37 /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; + B3EBA0562872965000EAEB37 /* cd-freebsd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cd-freebsd.c"; sourceTree = ""; }; + B3EBA0572872965000EAEB37 /* thr-linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "thr-linux.c"; sourceTree = ""; }; + B3EBA0582872965000EAEB37 /* cs1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cs1.h; sourceTree = ""; }; + B3EBA0592872965000EAEB37 /* screen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = screen.h; sourceTree = ""; }; + B3EBA05A2872965000EAEB37 /* scsp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scsp2.c; sourceTree = ""; }; + B3EBA05B2872965000EAEB37 /* vidshared.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vidshared.c; sourceTree = ""; }; + B3EBA05C2872965000EAEB37 /* perdx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = perdx.c; sourceTree = ""; }; + B3EBA05E2872965000EAEB37 /* titan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = titan.h; sourceTree = ""; }; + B3EBA05F2872965000EAEB37 /* titan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = titan.c; sourceTree = ""; }; + B3EBA0602872965000EAEB37 /* sh2idle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sh2idle.c; sourceTree = ""; }; + B3EBA0612872965000EAEB37 /* ygl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ygl.h; sourceTree = ""; }; + B3EBA0622872965000EAEB37 /* movie.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = movie.c; sourceTree = ""; }; + B3EBA0632872965000EAEB37 /* peripheral.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = peripheral.h; sourceTree = ""; }; + B3EBA0642872965000EAEB37 /* cdbase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdbase.h; sourceTree = ""; }; + B3EBA0662872965000EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA0682872965000EAEB37 /* Jitter_CodeGen_AArch32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_AArch32.h; sourceTree = ""; }; + B3EBA0692872965000EAEB37 /* Jitter_CodeGen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen.h; sourceTree = ""; }; + B3EBA06A2872965000EAEB37 /* MemoryFunction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemoryFunction.h; sourceTree = ""; }; + B3EBA06B2872965000EAEB37 /* Jitter_CodeGen_x86_64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_x86_64.h; sourceTree = ""; }; + B3EBA06C2872965000EAEB37 /* Types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Types.h; sourceTree = ""; }; + B3EBA06D2872965000EAEB37 /* Jitter_Statement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_Statement.h; sourceTree = ""; }; + B3EBA06E2872965000EAEB37 /* Jitter_SymbolTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_SymbolTable.h; sourceTree = ""; }; + B3EBA06F2872965000EAEB37 /* offsetof_def.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = offsetof_def.h; sourceTree = ""; }; + B3EBA0702872965000EAEB37 /* Jitter_SymbolRef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_SymbolRef.h; sourceTree = ""; }; + B3EBA0712872965000EAEB37 /* Jitter_CodeGenFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGenFactory.h; sourceTree = ""; }; + B3EBA0722872965000EAEB37 /* MachoObjectFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MachoObjectFile.h; sourceTree = ""; }; + B3EBA0732872965000EAEB37 /* placeholder_def.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = placeholder_def.h; sourceTree = ""; }; + B3EBA0742872965000EAEB37 /* AArch64Assembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AArch64Assembler.h; sourceTree = ""; }; + B3EBA0752872965000EAEB37 /* Stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Stream.h; sourceTree = ""; }; + B3EBA0762872965000EAEB37 /* Jitter_CodeGen_x86_32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_x86_32.h; sourceTree = ""; }; + B3EBA0772872965000EAEB37 /* AArch32Assembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AArch32Assembler.h; sourceTree = ""; }; + B3EBA0782872965000EAEB37 /* CoffDefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoffDefs.h; sourceTree = ""; }; + B3EBA0792872965000EAEB37 /* MemStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemStream.h; sourceTree = ""; }; + B3EBA07A2872965000EAEB37 /* Jitter_CodeGen_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_x86.h; sourceTree = ""; }; + B3EBA07B2872965000EAEB37 /* BitManip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BitManip.h; sourceTree = ""; }; + B3EBA07C2872965100EAEB37 /* CoffObjectFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoffObjectFile.h; sourceTree = ""; }; + B3EBA07D2872965100EAEB37 /* Jitter_CodeGen_AArch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_AArch64.h; sourceTree = ""; }; + B3EBA07E2872965100EAEB37 /* Jitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter.h; sourceTree = ""; }; + B3EBA07F2872965100EAEB37 /* X86Assembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = X86Assembler.h; sourceTree = ""; }; + B3EBA0802872965100EAEB37 /* MachoDefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MachoDefs.h; sourceTree = ""; }; + B3EBA0812872965100EAEB37 /* Jitter_Symbol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_Symbol.h; sourceTree = ""; }; + B3EBA0822872965100EAEB37 /* ObjectFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ObjectFile.h; sourceTree = ""; }; + B3EBA0832872965100EAEB37 /* alloca_def.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = alloca_def.h; sourceTree = ""; }; + B3EBA0842872965100EAEB37 /* PtrMacro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PtrMacro.h; sourceTree = ""; }; + B3EBA0852872965100EAEB37 /* ArrayStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArrayStack.h; sourceTree = ""; }; + B3EBA0862872965100EAEB37 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; + B3EBA0882872965100EAEB37 /* Jitter_CodeGen_x86_64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_x86_64.cpp; sourceTree = ""; }; + B3EBA0892872965100EAEB37 /* Jitter_CodeGen_x86_Fpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_x86_Fpu.cpp; sourceTree = ""; }; + B3EBA08A2872965100EAEB37 /* Jitter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter.cpp; sourceTree = ""; }; + B3EBA08B2872965100EAEB37 /* Jitter_Optimize.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_Optimize.cpp; sourceTree = ""; }; + B3EBA08C2872965100EAEB37 /* Jitter_CodeGen_x86_Md.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_x86_Md.cpp; sourceTree = ""; }; + B3EBA08D2872965100EAEB37 /* Jitter_CodeGen_AArch64_Fpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch64_Fpu.cpp; sourceTree = ""; }; + B3EBA08E2872965100EAEB37 /* Jitter_CodeGen_x86_Shift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_x86_Shift.h; sourceTree = ""; }; + B3EBA08F2872965100EAEB37 /* Jitter_RegAlloc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_RegAlloc.cpp; sourceTree = ""; }; + B3EBA0902872965100EAEB37 /* Jitter_CodeGen_AArch64_Md.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch64_Md.cpp; sourceTree = ""; }; + B3EBA0912872965100EAEB37 /* Jitter_CodeGen_AArch32_Fpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch32_Fpu.cpp; sourceTree = ""; }; + B3EBA0922872965100EAEB37 /* AArch32Assembler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AArch32Assembler.cpp; sourceTree = ""; }; + B3EBA0932872965100EAEB37 /* MemoryFunction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryFunction.cpp; sourceTree = ""; }; + B3EBA0942872965100EAEB37 /* Jitter_CodeGen_AArch64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch64.cpp; sourceTree = ""; }; + B3EBA0952872965100EAEB37 /* Jitter_CodeGen_AArch64_64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch64_64.cpp; sourceTree = ""; }; + B3EBA0962872965100EAEB37 /* Jitter_Statement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_Statement.cpp; sourceTree = ""; }; + B3EBA0972872965100EAEB37 /* Jitter_CodeGen_x86_32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_x86_32.cpp; sourceTree = ""; }; + B3EBA0982872965100EAEB37 /* MemStream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MemStream.cpp; sourceTree = ""; }; + B3EBA0992872965100EAEB37 /* Jitter_CodeGen_x86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_x86.cpp; sourceTree = ""; }; + B3EBA09A2872965100EAEB37 /* X86Assembler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = X86Assembler.cpp; sourceTree = ""; }; + B3EBA09B2872965100EAEB37 /* Jitter_CodeGen_x86_Div.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_x86_Div.h; sourceTree = ""; }; + B3EBA09C2872965100EAEB37 /* Stream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Stream.cpp; sourceTree = ""; }; + B3EBA09D2872965100EAEB37 /* AArch64Assembler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AArch64Assembler.cpp; sourceTree = ""; }; + B3EBA09E2872965100EAEB37 /* CoffObjectFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CoffObjectFile.cpp; sourceTree = ""; }; + B3EBA09F2872965100EAEB37 /* Jitter_CodeGen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen.cpp; sourceTree = ""; }; + B3EBA0A02872965100EAEB37 /* ObjectFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFile.cpp; sourceTree = ""; }; + B3EBA0A12872965100EAEB37 /* Jitter_CodeGen_AArch32_Div.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_AArch32_Div.h; sourceTree = ""; }; + B3EBA0A22872965100EAEB37 /* X86Assembler_Sse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = X86Assembler_Sse.cpp; sourceTree = ""; }; + B3EBA0A32872965100EAEB37 /* Jitter_CodeGen_AArch32_64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch32_64.cpp; sourceTree = ""; }; + B3EBA0A42872965100EAEB37 /* Jitter_CodeGen_x86_Mul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_x86_Mul.h; sourceTree = ""; }; + B3EBA0A52872965100EAEB37 /* Jitter_SymbolTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_SymbolTable.cpp; sourceTree = ""; }; + B3EBA0A62872965100EAEB37 /* MachoObjectFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MachoObjectFile.cpp; sourceTree = ""; }; + B3EBA0A72872965100EAEB37 /* Jitter_CodeGen_AArch32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch32.cpp; sourceTree = ""; }; + B3EBA0A82872965100EAEB37 /* Jitter_CodeGen_AArch32_Md.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGen_AArch32_Md.cpp; sourceTree = ""; }; + B3EBA0A92872965100EAEB37 /* Jitter_CodeGenFactory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Jitter_CodeGenFactory.cpp; sourceTree = ""; }; + B3EBA0AA2872965100EAEB37 /* Jitter_CodeGen_x86_Alu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jitter_CodeGen_x86_Alu.h; sourceTree = ""; }; + B3EBA0AB2872965100EAEB37 /* X86Assembler_Fpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = X86Assembler_Fpu.cpp; sourceTree = ""; }; + B3EBA0AC2872965100EAEB37 /* snddummy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snddummy.c; sourceTree = ""; }; + B3EBA0AD2872965100EAEB37 /* persdljoy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = persdljoy.h; sourceTree = ""; }; + B3EBA0AE2872965100EAEB37 /* macjoy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = macjoy.c; sourceTree = ""; }; + B3EBA0AF2872965100EAEB37 /* netlink.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netlink.c; sourceTree = ""; }; + B3EBA0B02872965100EAEB37 /* scspdsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scspdsp.c; sourceTree = ""; }; + B3EBA0B12872965100EAEB37 /* m68kcore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68kcore.h; sourceTree = ""; }; + B3EBA0B22872965100EAEB37 /* sh-opc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "sh-opc.h"; sourceTree = ""; }; + B3EBA0B32872965100EAEB37 /* logo.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = logo.svg; sourceTree = ""; }; + B3EBA0B42872965100EAEB37 /* cd-macosx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cd-macosx.c"; sourceTree = ""; }; + B3EBA0B52872965100EAEB37 /* dx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dx.h; sourceTree = ""; }; + B3EBA0B62872965100EAEB37 /* vdp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdp2.c; sourceTree = ""; }; + B3EBA0B72872965100EAEB37 /* sh2trace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2trace.h; sourceTree = ""; }; + B3EBA0B82872965100EAEB37 /* smpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smpc.h; sourceTree = ""; }; + B3EBA0B92872965100EAEB37 /* thr-macosx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "thr-macosx.c"; sourceTree = ""; }; + B3EBA0BA2872965100EAEB37 /* m68kd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68kd.c; sourceTree = ""; }; + B3EBA0BB2872965100EAEB37 /* ygr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ygr.c; sourceTree = ""; }; + B3EBA0BC2872965100EAEB37 /* sh2_jit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sh2_jit.h; sourceTree = ""; }; + B3EBA0BD2872965100EAEB37 /* sndal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndal.h; sourceTree = ""; }; + B3EBA0BE2872965100EAEB37 /* snddx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snddx.c; sourceTree = ""; }; + B3EBA0BF2872965100EAEB37 /* scu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scu.h; sourceTree = ""; }; + B3EBA0C02872965100EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA0C22872965100EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA0C42872965100EAEB37 /* check_wcs_functions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = check_wcs_functions.c; sourceTree = ""; }; + B3EBA0C52872965100EAEB37 /* windows.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = windows.cmake; sourceTree = ""; }; + B3EBA0C62872965100EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA0C82872965100EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA0C92872965100EAEB37 /* multi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = multi.c; sourceTree = ""; }; + B3EBA0CA2872965100EAEB37 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3EBA0CB2872965100EAEB37 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text; path = fr; sourceTree = ""; }; + B3EBA0CC2872965100EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA0CD2872965100EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBA0CF2872965100EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA0D02872965100EAEB37 /* mini18n.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = mini18n.3; sourceTree = ""; }; + B3EBA0D12872965100EAEB37 /* Doxyfile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile.in; sourceTree = ""; }; + B3EBA0D22872965100EAEB37 /* mini18n_set_locale.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = mini18n_set_locale.3; sourceTree = ""; }; + B3EBA0D42872965100EAEB37 /* mini18n-multi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "mini18n-multi.c"; sourceTree = ""; }; + B3EBA0D52872965100EAEB37 /* mini18n_pv_file_yts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_file_yts.h; sourceTree = ""; }; + B3EBA0D62872965100EAEB37 /* mini18n_pv_conv_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_conv_windows.h; sourceTree = ""; }; + B3EBA0D72872965100EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA0D82872965100EAEB37 /* mini18n_pv_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_list.h; sourceTree = ""; }; + B3EBA0D92872965100EAEB37 /* mini18n.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n.c; sourceTree = ""; }; + B3EBA0DA2872965100EAEB37 /* mini18n_pv_hash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_hash.h; sourceTree = ""; }; + B3EBA0DB2872965100EAEB37 /* mini18n_pv_conv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_conv.h; sourceTree = ""; }; + B3EBA0DC2872965100EAEB37 /* mini18n_pv_file_csv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n_pv_file_csv.c; sourceTree = ""; }; + B3EBA0DD2872965100EAEB37 /* mini18n_pv_file_po.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n_pv_file_po.c; sourceTree = ""; }; + B3EBA0DE2872965100EAEB37 /* mini18n_pv_data.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n_pv_data.c; sourceTree = ""; }; + B3EBA0DF2872965100EAEB37 /* mini18n_pv_file_yts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n_pv_file_yts.c; sourceTree = ""; }; + B3EBA0E02872965100EAEB37 /* mini18n_pv_conv_windows.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n_pv_conv_windows.c; sourceTree = ""; }; + B3EBA0E12872965100EAEB37 /* mini18n-multi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "mini18n-multi.h"; sourceTree = ""; }; + B3EBA0E22872965100EAEB37 /* mini18n_pv_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n_pv_list.c; sourceTree = ""; }; + B3EBA0E32872965100EAEB37 /* mini18n_pv_file_csv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_file_csv.h; sourceTree = ""; }; + B3EBA0E42872965100EAEB37 /* mini18n.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n.h; sourceTree = ""; }; + B3EBA0E52872965100EAEB37 /* mini18n_pv_hash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mini18n_pv_hash.c; sourceTree = ""; }; + B3EBA0E62872965100EAEB37 /* mini18n_pv_data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_data.h; sourceTree = ""; }; + B3EBA0E72872965100EAEB37 /* mini18n_pv_file_po.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_file_po.h; sourceTree = ""; }; + B3EBA0E82872965100EAEB37 /* mini18n_pv_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mini18n_pv_file.h; sourceTree = ""; }; + B3EBA0E92872965100EAEB37 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B3EBA0EA2872965100EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA0EB2872965100EAEB37 /* circle.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = circle.yml; sourceTree = ""; }; + B3EBA0EE2872965100EAEB37 /* crowdin_prep.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = crowdin_prep.yml; sourceTree = ""; }; + B3EBA0EF2872965100EAEB37 /* crowdin_translate.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = crowdin_translate.yml; sourceTree = ""; }; + B3EBA0F12872965100EAEB37 /* bug_report.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = bug_report.md; sourceTree = ""; }; + B3EBA0F22872965100EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBA0F32872965100EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447ECA218BEDD200557ACE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B324C31C2191964F009F4EDC /* AVFoundation.framework in Frameworks */, + B3B104B9218F281B00210C39 /* PVSupport.framework in Frameworks */, + B3B104AF218F26F400210C39 /* libyabause.a in Frameworks */, + B39768FB2859E23A00558958 /* libyabause-libretro.a in Frameworks */, + B3447ECD218BEDD200557ACE /* CoreAudio.framework in Frameworks */, + B3447ECE218BEDD200557ACE /* AudioToolbox.framework in Frameworks */, + B3447ED0218BEDD200557ACE /* libz.tbd in Frameworks */, + B3A41BF0286E76490054E9A5 /* PVLibRetro.framework in Frameworks */, + B3447ED1218BEDD200557ACE /* libpthread.tbd in Frameworks */, + B3447ED3218BEDD200557ACE /* Foundation.framework in Frameworks */, + B3447ED4218BEDD200557ACE /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447F8C218BEE3F00557ACE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B39768F12859E18B00558958 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libyabause.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libyabause-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVYabause */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVYabause.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVYabause; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVYabauseCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVYabauseCore.h */, + B37022C6287253B300B3F6DA /* PVYabauseCore.mm */, + ); + path = PVYabauseCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EB9AF12872964C00EAEB37 /* yabause */, + B37022BE287253B300B3F6DA /* PVYabause */, + B37022C4287253B300B3F6DA /* PVYabauseCore */, + B37022C3287253B300B3F6DA /* PVYabause.h */, + B37022BD287253B300B3F6DA /* PVYabause-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVYabause.framework */, + B30178D3207C901D0051B93D /* libyabause.a */, + B3447EE6218BEDD200557ACE /* PVYabause.framework */, + B3447F91218BEE3F00557ACE /* libyabause.a */, + B3344BC32859E088006E6B3A /* libyabause-libretro.a */, + B39768F72859E18B00558958 /* libyabause-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EB9AF12872964C00EAEB37 /* yabause */ = { + isa = PBXGroup; + children = ( + B3EBA0EA2872965100EAEB37 /* .gitignore */, + B3EBA0C02872965100EAEB37 /* README.md */, + B3EBA0F22872965100EAEB37 /* .gitlab-ci.yml */, + B3EBA0F32872965100EAEB37 /* .travis.yml */, + B3EBA0E92872965100EAEB37 /* appveyor.yml */, + B3EBA0EB2872965100EAEB37 /* circle.yml */, + B3EBA0EC2872965100EAEB37 /* .github */, + B3EB9B282872964C00EAEB37 /* intl */, + B3EBA0C12872965100EAEB37 /* mini18n */, + B3EB9B352872964C00EAEB37 /* yabause */, + B3EB9AF22872964C00EAEB37 /* yabauseut */, + ); + path = yabause; + sourceTree = ""; + }; + B3EB9AF22872964C00EAEB37 /* yabauseut */ = { + isa = PBXGroup; + children = ( + B3EB9AF42872964C00EAEB37 /* ChangeLog */, + B3EB9AF82872964C00EAEB37 /* COPYING */, + B3EB9AF72872964C00EAEB37 /* TODO */, + B3EB9AF32872964C00EAEB37 /* CMakeLists.txt */, + B3EB9AF52872964C00EAEB37 /* Platform */, + B3EB9AF92872964C00EAEB37 /* src */, + ); + path = yabauseut; + sourceTree = ""; + }; + B3EB9AF52872964C00EAEB37 /* Platform */ = { + isa = PBXGroup; + children = ( + B3EB9AF62872964C00EAEB37 /* SegaSaturn */, + ); + path = Platform; + sourceTree = ""; + }; + B3EB9AF92872964C00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EB9AFB2872964C00EAEB37 /* cart.c */, + B3EB9B042872964C00EAEB37 /* cdb.c */, + B3EB9AFE2872964C00EAEB37 /* dsp.c */, + B3EB9B0C2872964C00EAEB37 /* m68k.c */, + B3EB9B0F2872964C00EAEB37 /* main.c */, + B3EB9B0A2872964C00EAEB37 /* mpeg.c */, + B3EB9B0E2872964C00EAEB37 /* scsp.c */, + B3EB9B052872964C00EAEB37 /* scu.c */, + B3EB9B232872964C00EAEB37 /* sh2.c */, + B3EB9B122872964C00EAEB37 /* slavesh.c */, + B3EB9B0B2872964C00EAEB37 /* smpc.c */, + B3EB9B102872964C00EAEB37 /* tests.c */, + B3EB9B112872964C00EAEB37 /* vdp1.c */, + B3EB9B252872964C00EAEB37 /* vdp2.c */, + B3EB9B0D2872964C00EAEB37 /* cart.h */, + B3EB9B222872964C00EAEB37 /* cdb.h */, + B3EB9B132872964C00EAEB37 /* dsp.h */, + B3EB9AFD2872964C00EAEB37 /* m68k.h */, + B3EB9AFA2872964C00EAEB37 /* main.h */, + B3EB9B242872964C00EAEB37 /* mpeg.h */, + B3EB9AFC2872964C00EAEB37 /* scsp.h */, + B3EB9B272872964C00EAEB37 /* scu.h */, + B3EB9B032872964C00EAEB37 /* sh2.h */, + B3EB9B002872964C00EAEB37 /* slavesh.h */, + B3EB9B262872964C00EAEB37 /* smpc.h */, + B3EB9B022872964C00EAEB37 /* tests.h */, + B3EB9B012872964C00EAEB37 /* vdp1.h */, + B3EB9B092872964C00EAEB37 /* vdp2.h */, + B3EB9AFF2872964C00EAEB37 /* CMakeLists.txt */, + B3EB9B142872964C00EAEB37 /* buildcd */, + B3EB9B062872964C00EAEB37 /* shared */, + ); + path = src; + sourceTree = ""; + }; + B3EB9B062872964C00EAEB37 /* shared */ = { + isa = PBXGroup; + children = ( + B3EB9B072872964C00EAEB37 /* bart.lk */, + B3EB9B082872964C00EAEB37 /* crt0.s */, + ); + path = shared; + sourceTree = ""; + }; + B3EB9B142872964C00EAEB37 /* buildcd */ = { + isa = PBXGroup; + children = ( + B3EB9B152872964C00EAEB37 /* disc.scr */, + B3EB9B162872964C00EAEB37 /* M2TEST */, + B3EB9B1D2872964C00EAEB37 /* M1TEST */, + B3EB9B1F2872964C00EAEB37 /* IP.BIN */, + B3EB9B202872964C00EAEB37 /* cdda-license.txt */, + B3EB9B212872964C00EAEB37 /* cdda.bin */, + ); + path = buildcd; + sourceTree = ""; + }; + B3EB9B162872964C00EAEB37 /* M2TEST */ = { + isa = PBXGroup; + children = ( + B3EB9B172872964C00EAEB37 /* MOVIE.m1v */, + B3EB9B182872964C00EAEB37 /* INTRLV2.BIN */, + B3EB9B192872964C00EAEB37 /* INTRLV3.BIN */, + B3EB9B1A2872964C00EAEB37 /* INTRLV1.BIN */, + B3EB9B1B2872964C00EAEB37 /* XAMC.XA */, + B3EB9B1C2872964C00EAEB37 /* MOVIE.MP2 */, + ); + path = M2TEST; + sourceTree = ""; + }; + B3EB9B1D2872964C00EAEB37 /* M1TEST */ = { + isa = PBXGroup; + children = ( + B3EB9B1E2872964C00EAEB37 /* BIGFILE.BIN */, + ); + path = M1TEST; + sourceTree = ""; + }; + B3EB9B282872964C00EAEB37 /* intl */ = { + isa = PBXGroup; + children = ( + B3EB9B292872964C00EAEB37 /* crowdin_translate.py */, + B3EB9B2A2872964C00EAEB37 /* download_workflow.py */, + B3EB9B2B2872964C00EAEB37 /* core_option_regex.py */, + B3EB9B2C2872964C00EAEB37 /* upload_workflow.py */, + B3EB9B2D2872964C00EAEB37 /* crowdin_source_upload.py */, + B3EB9B2E2872964C00EAEB37 /* crowdin.yaml */, + B3EB9B2F2872964C00EAEB37 /* .gitignore */, + B3EB9B302872964C00EAEB37 /* core_option_translation.py */, + B3EB9B312872964C00EAEB37 /* initial_sync.py */, + B3EB9B322872964C00EAEB37 /* v1_to_v2_converter.py */, + B3EB9B332872964C00EAEB37 /* crowdin_translation_download.py */, + B3EB9B342872964C00EAEB37 /* crowdin_prep.py */, + ); + path = intl; + sourceTree = ""; + }; + B3EB9B352872964C00EAEB37 /* yabause */ = { + isa = PBXGroup; + children = ( + B3EB9B4F2872964C00EAEB37 /* AUTHORS */, + B3EB9B4E2872964C00EAEB37 /* ChangeLog */, + B3EB9B512872964C00EAEB37 /* COPYING */, + B3EB9B502872964C00EAEB37 /* README */, + B3EB9B4D2872964C00EAEB37 /* CMakeLists.txt */, + B3EB9B522872964C00EAEB37 /* CMakeTests */, + B3EB9B562872964C00EAEB37 /* doc */, + B3EB9B362872964C00EAEB37 /* l10n */, + B3EB9B592872964C00EAEB37 /* src */, + ); + path = yabause; + sourceTree = ""; + }; + B3EB9B362872964C00EAEB37 /* l10n */ = { + isa = PBXGroup; + children = ( + B3EB9B372872964C00EAEB37 /* yabause_es_419.yts */, + B3EB9B382872964C00EAEB37 /* yabause_pt_BR.yts */, + B3EB9B392872964C00EAEB37 /* CMakeLists.txt */, + B3EB9B3A2872964C00EAEB37 /* yabause_pt.yts */, + B3EB9B3B2872964C00EAEB37 /* yabause_de.yts */, + B3EB9B3C2872964C00EAEB37 /* yabause_it.yts */, + B3EB9B3D2872964C00EAEB37 /* yabause_ko.yts */, + B3EB9B3E2872964C00EAEB37 /* yabause_es.yts */, + B3EB9B3F2872964C00EAEB37 /* yabause_da.yts */, + B3EB9B402872964C00EAEB37 /* yabause_ru.yts */, + B3EB9B412872964C00EAEB37 /* yabause_pl_PL.yts */, + B3EB9B422872964C00EAEB37 /* yabause_fr.yts */, + B3EB9B432872964C00EAEB37 /* yabause_sv.yts */, + B3EB9B442872964C00EAEB37 /* yabause_el.yts */, + B3EB9B452872964C00EAEB37 /* yabause_ja.yts */, + B3EB9B462872964C00EAEB37 /* yabause_zh_TW.yts */, + B3EB9B472872964C00EAEB37 /* yabause_nl.yts */, + B3EB9B482872964C00EAEB37 /* yabause_zh_CN.yts */, + B3EB9B492872964C00EAEB37 /* yabause_en.csv */, + B3EB9B4A2872964C00EAEB37 /* yabause_ar.yts */, + B3EB9B4B2872964C00EAEB37 /* yabause_tr.yts */, + B3EB9B4C2872964C00EAEB37 /* yabause_lt.yts */, + ); + path = l10n; + sourceTree = ""; + }; + B3EB9B522872964C00EAEB37 /* CMakeTests */ = { + isa = PBXGroup; + children = ( + B3EB9B532872964C00EAEB37 /* FindSDL2.cmake */, + B3EB9B542872964C00EAEB37 /* FindFFmpeg.cmake */, + B3EB9B552872964C00EAEB37 /* FindGLEW.cmake */, + ); + path = CMakeTests; + sourceTree = ""; + }; + B3EB9B562872964C00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EB9B572872964C00EAEB37 /* CMakeLists.txt */, + B3EB9B582872964C00EAEB37 /* Doxyfile.in */, + ); + path = doc; + sourceTree = ""; + }; + B3EB9B592872964C00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EB9B9F2872964D00EAEB37 /* logo.bmp */, + B3EB9BA02872964D00EAEB37 /* cd_drive.c */, + B3EBA0562872965000EAEB37 /* cd-freebsd.c */, + B3EBA01F2872965000EAEB37 /* cd-libretro.c */, + B3EB9D8C2872964E00EAEB37 /* cd-linux.c */, + B3EBA0B42872965100EAEB37 /* cd-macosx.c */, + B3EB9D8D2872964E00EAEB37 /* cd-netbsd.c */, + B3EB9B5F2872964C00EAEB37 /* cd-windows.c */, + B3EBA0522872965000EAEB37 /* coffelf.c */, + B3EB9B622872964C00EAEB37 /* gameinfo.c */, + B3EB9FB72872965000EAEB37 /* japmodem.c */, + B3EB9B8A2872964D00EAEB37 /* junzip.c */, + B3EB9FBB2872965000EAEB37 /* m68kc68k.c */, + B3EB9D882872964E00EAEB37 /* m68kcore.c */, + B3EB9D902872964E00EAEB37 /* bios.c */, + B3EB9BAD2872964D00EAEB37 /* cdbase.c */, + B3EB9F812872964F00EAEB37 /* cheat.c */, + B3EB9FAD2872965000EAEB37 /* cs0.c */, + B3EB9BB42872964D00EAEB37 /* cs1.c */, + B3EB9B762872964D00EAEB37 /* cs2.c */, + B3EB9D922872964E00EAEB37 /* debug.c */, + B3EB9FB22872965000EAEB37 /* error.c */, + B3EBA0BA2872965100EAEB37 /* m68kd.c */, + B3EB9BA22872964D00EAEB37 /* m68kmusashi.c */, + B3EB9D7E2872964E00EAEB37 /* m68kq68.c */, + B3EBA0AE2872965100EAEB37 /* macjoy.c */, + B3EB9B8B2872964D00EAEB37 /* memory.c */, + B3EBA0622872965000EAEB37 /* movie.c */, + B3EB9B5D2872964C00EAEB37 /* mpeg_card.c */, + B3EBA0AF2872965100EAEB37 /* netlink.c */, + B3EB9FBC2872965000EAEB37 /* osdcore.c */, + B3EBA05C2872965000EAEB37 /* perdx.c */, + B3EB9BAF2872964D00EAEB37 /* peripheral.c */, + B3EB9FBA2872965000EAEB37 /* perlinuxjoy.c */, + B3EB9FB12872965000EAEB37 /* permacjoy.c */, + B3EB9BA82872964D00EAEB37 /* persdljoy.c */, + B3EBA0192872965000EAEB37 /* profile.c */, + B3EB9B6B2872964C00EAEB37 /* scr-x.c */, + B3EB9FAE2872965000EAEB37 /* scsp.c */, + B3EBA05A2872965000EAEB37 /* scsp2.c */, + B3EBA0B02872965100EAEB37 /* scspdsp.c */, + B3EB9D7D2872964E00EAEB37 /* scu.c */, + B3EBA01D2872965000EAEB37 /* sh2cache.c */, + B3EB9D8E2872964E00EAEB37 /* sh2core.c */, + B3EB9FB52872965000EAEB37 /* sh2d.c */, + B3EB9F822872964F00EAEB37 /* sh2iasm.c */, + B3EBA0602872965000EAEB37 /* sh2idle.c */, + B3EB9B8E2872964D00EAEB37 /* sh2int.c */, + B3EB9D872872964E00EAEB37 /* sh2trace.c */, + B3EBA0182872965000EAEB37 /* sh7034.c */, + B3EB9D862872964E00EAEB37 /* smpc.c */, + B3EB9D832872964E00EAEB37 /* sndal.c */, + B3EBA0AC2872965100EAEB37 /* snddummy.c */, + B3EBA0BE2872965100EAEB37 /* snddx.c */, + B3EB9D932872964E00EAEB37 /* sndmac.c */, + B3EBA0172872965000EAEB37 /* sndsdl.c */, + B3EB9B642872964C00EAEB37 /* sndwav.c */, + B3EB9F802872964F00EAEB37 /* sock-dummy.c */, + B3EB9B9E2872964D00EAEB37 /* sock-linux.c */, + B3EBA0042872965000EAEB37 /* sock-windows.c */, + B3EB9D802872964E00EAEB37 /* thr-dummy.c */, + B3EBA0572872965000EAEB37 /* thr-linux.c */, + B3EBA0B92872965100EAEB37 /* thr-macosx.c */, + B3EB9FB02872965000EAEB37 /* thr-rthreads.c */, + B3EB9B8F2872964D00EAEB37 /* thr-windows.c */, + B3EB9FB92872965000EAEB37 /* vdp1.c */, + B3EBA0B62872965100EAEB37 /* vdp2.c */, + B3EBA0532872965000EAEB37 /* vdp2debug.c */, + B3EB9B682872964C00EAEB37 /* vidogl.c */, + B3EBA05B2872965000EAEB37 /* vidshared.c */, + B3EB9B9D2872964D00EAEB37 /* vidsoft.c */, + B3EB9D912872964E00EAEB37 /* yabause.c */, + B3EB9B672872964C00EAEB37 /* yglcache.c */, + B3EB9FB62872965000EAEB37 /* ygles.c */, + B3EB9F832872964F00EAEB37 /* yglshaderes.c */, + B3EBA0BB2872965100EAEB37 /* ygr.c */, + B3EB9BA92872964D00EAEB37 /* scsp_dsp_jit.cpp */, + B3EBA01A2872965000EAEB37 /* scu_dsp_jit.cpp */, + B3EBA01B2872965000EAEB37 /* sh2_jit.cpp */, + B3EB9B602872964C00EAEB37 /* yglcache.cpp */, + B3EB9B5C2872964C00EAEB37 /* Makefile.dc */, + B3EB9B772872964D00EAEB37 /* bios.h */, + B3EBA0052872965000EAEB37 /* cd_drive.h */, + B3EBA0642872965000EAEB37 /* cdbase.h */, + B3EB9B632872964C00EAEB37 /* cheat.h */, + B3EB9BC12872964D00EAEB37 /* coffelf.h */, + B3EB9B7C2872964D00EAEB37 /* core.h */, + B3EB9B662872964C00EAEB37 /* cs0.h */, + B3EBA0582872965000EAEB37 /* cs1.h */, + B3EB9D8F2872964E00EAEB37 /* cs2.h */, + B3EB9B7B2872964D00EAEB37 /* debug.h */, + B3EBA0B52872965100EAEB37 /* dx.h */, + B3EB9B612872964C00EAEB37 /* error.h */, + B3EB9B5E2872964C00EAEB37 /* fakeddk.h */, + B3EBA0552872965000EAEB37 /* font.h */, + B3EB9FB32872965000EAEB37 /* gameinfo.h */, + B3EB9D942872964E00EAEB37 /* glext.h */, + B3EB9BA32872964D00EAEB37 /* japmodem.h */, + B3EBA01E2872965000EAEB37 /* junzip.h */, + B3EB9BA62872964D00EAEB37 /* m68kc68k.h */, + B3EBA0B12872965100EAEB37 /* m68kcore.h */, + B3EB9D852872964E00EAEB37 /* m68kd.h */, + B3EB9FB82872965000EAEB37 /* m68kmusashi.h */, + B3EB9BAA2872964D00EAEB37 /* macjoy.h */, + B3EBA01C2872965000EAEB37 /* memory.h */, + B3EB9BAE2872964D00EAEB37 /* movie.h */, + B3EB9FAF2872965000EAEB37 /* mpeg_card.h */, + B3EB9D8A2872964E00EAEB37 /* netlink.h */, + B3EB9BA52872964D00EAEB37 /* osdcore.h */, + B3EB9BB52872964D00EAEB37 /* perdx.h */, + B3EBA0632872965000EAEB37 /* peripheral.h */, + B3EB9BA72872964D00EAEB37 /* perlinuxjoy.h */, + B3EB9B5A2872964C00EAEB37 /* permacjoy.h */, + B3EBA0AD2872965100EAEB37 /* persdljoy.h */, + B3EB9B892872964D00EAEB37 /* profile.h */, + B3EBA0592872965000EAEB37 /* screen.h */, + B3EB9D8B2872964E00EAEB37 /* scsp_dsp_jit.h */, + B3EB9B652872964C00EAEB37 /* scsp.h */, + B3EB9BB32872964D00EAEB37 /* scsp2.h */, + B3EB9D892872964E00EAEB37 /* scspdsp.h */, + B3EBA0062872965000EAEB37 /* scu_dsp_jit.h */, + B3EBA0BF2872965100EAEB37 /* scu.h */, + B3EBA0B22872965100EAEB37 /* sh-opc.h */, + B3EBA0BC2872965100EAEB37 /* sh2_jit.h */, + B3EB9B8C2872964D00EAEB37 /* sh2cache.h */, + B3EB9B782872964D00EAEB37 /* sh2core.h */, + B3EB9BA42872964D00EAEB37 /* sh2d.h */, + B3EB9B692872964C00EAEB37 /* sh2iasm.h */, + B3EB9BAC2872964D00EAEB37 /* sh2idle.h */, + B3EBA0162872965000EAEB37 /* sh2int.h */, + B3EBA0B72872965100EAEB37 /* sh2trace.h */, + B3EB9B882872964D00EAEB37 /* sh7034.h */, + B3EBA0B82872965100EAEB37 /* smpc.h */, + B3EBA0BD2872965100EAEB37 /* sndal.h */, + B3EB9D822872964E00EAEB37 /* snddx.h */, + B3EB9B6C2872964C00EAEB37 /* sndmac.h */, + B3EB9B9C2872964D00EAEB37 /* sndsdl.h */, + B3EB9B5B2872964C00EAEB37 /* sock.h */, + B3EB9D7F2872964E00EAEB37 /* threads.h */, + B3EB9BA12872964D00EAEB37 /* vdp1.h */, + B3EB9D842872964E00EAEB37 /* vdp2.h */, + B3EB9BC02872964D00EAEB37 /* vdp2debug.h */, + B3EB9F842872964F00EAEB37 /* vidogl.h */, + B3EB9BBF2872964D00EAEB37 /* vidshared.h */, + B3EBA0032872965000EAEB37 /* vidsoft.h */, + B3EB9B752872964D00EAEB37 /* yabause.h */, + B3EBA0612872965000EAEB37 /* ygl.h */, + B3EB9D812872964E00EAEB37 /* ygr.h */, + B3EB9BAB2872964D00EAEB37 /* yui.h */, + B3EB9B6A2872964C00EAEB37 /* logo.ico */, + B3EB9D7C2872964E00EAEB37 /* config.h.in */, + B3EB9FB42872965000EAEB37 /* logo.png */, + B3EBA0B32872965100EAEB37 /* logo.svg */, + B3EB9B8D2872964D00EAEB37 /* CMakeLists.txt */, + B3EBA0542872965000EAEB37 /* sh1-pseudo.txt */, + B3EB9FBD2872965000EAEB37 /* android */, + B3EB9CB02872964D00EAEB37 /* aosdk */, + B3EB9BB62872964D00EAEB37 /* c68k */, + B3EB9F922872964F00EAEB37 /* cocoa */, + B3EB9CB82872964D00EAEB37 /* dreamcast */, + B3EB9B792872964D00EAEB37 /* gameshw */, + B3EB9B812872964D00EAEB37 /* gdb */, + B3EB9BC22872964D00EAEB37 /* gllibs */, + B3EBA0202872965000EAEB37 /* gtk */, + B3EB9BCE2872964D00EAEB37 /* libchdr */, + B3EB9D952872964E00EAEB37 /* libretro */, + B3EBA0072872965000EAEB37 /* musashi */, + B3EBA0652872965000EAEB37 /* play */, + B3EB9F852872964F00EAEB37 /* q68 */, + B3EB9CCB2872964D00EAEB37 /* qt */, + B3EB9BB02872964D00EAEB37 /* runner */, + B3EB9B902872964D00EAEB37 /* sh2_dynarec */, + B3EBA05D2872965000EAEB37 /* titan */, + B3EB9B7D2872964D00EAEB37 /* tools */, + B3EB9B6D2872964C00EAEB37 /* tsunami */, + ); + path = src; + sourceTree = ""; + }; + B3EB9B6D2872964C00EAEB37 /* tsunami */ = { + isa = PBXGroup; + children = ( + B3EB9B6E2872964C00EAEB37 /* LICENSE */, + B3EB9B6F2872964C00EAEB37 /* yab_tsunami.c */, + B3EB9B702872964C00EAEB37 /* Tsunami.c */, + B3EB9B712872964D00EAEB37 /* README.md */, + B3EB9B722872964D00EAEB37 /* Tsunami.h */, + B3EB9B732872964D00EAEB37 /* TsunamiPrivate.h */, + B3EB9B742872964D00EAEB37 /* yab_tsunami.h */, + ); + path = tsunami; + sourceTree = ""; + }; + B3EB9B792872964D00EAEB37 /* gameshw */ = { + isa = PBXGroup; + children = ( + B3EB9B7A2872964D00EAEB37 /* dsplist.txt */, + ); + path = gameshw; + sourceTree = ""; + }; + B3EB9B7D2872964D00EAEB37 /* tools */ = { + isa = PBXGroup; + children = ( + B3EB9B7E2872964D00EAEB37 /* CMakeLists.txt */, + B3EB9B7F2872964D00EAEB37 /* pertest.c */, + B3EB9B802872964D00EAEB37 /* cdtest.c */, + ); + path = tools; + sourceTree = ""; + }; + B3EB9B812872964D00EAEB37 /* gdb */ = { + isa = PBXGroup; + children = ( + B3EB9B822872964D00EAEB37 /* client.h */, + B3EB9B832872964D00EAEB37 /* packet.c */, + B3EB9B842872964D00EAEB37 /* stub.c */, + B3EB9B852872964D00EAEB37 /* client.c */, + B3EB9B862872964D00EAEB37 /* packet.h */, + B3EB9B872872964D00EAEB37 /* stub.h */, + ); + path = gdb; + sourceTree = ""; + }; + B3EB9B902872964D00EAEB37 /* sh2_dynarec */ = { + isa = PBXGroup; + children = ( + B3EB9B912872964D00EAEB37 /* assem_arm.c */, + B3EB9B9B2872964D00EAEB37 /* assem_x64.c */, + B3EB9B932872964D00EAEB37 /* assem_x86.c */, + B3EB9B922872964D00EAEB37 /* sh2_dynarec.c */, + B3EB9B972872964D00EAEB37 /* assem_arm.h */, + B3EB9B952872964D00EAEB37 /* assem_x64.h */, + B3EB9B992872964D00EAEB37 /* assem_x86.h */, + B3EB9B962872964D00EAEB37 /* sh2_dynarec.h */, + B3EB9B9A2872964D00EAEB37 /* linkage_arm.s */, + B3EB9B942872964D00EAEB37 /* linkage_x64.s */, + B3EB9B982872964D00EAEB37 /* linkage_x86.s */, + ); + path = sh2_dynarec; + sourceTree = ""; + }; + B3EB9BB02872964D00EAEB37 /* runner */ = { + isa = PBXGroup; + children = ( + B3EB9BB12872964D00EAEB37 /* CMakeLists.txt */, + B3EB9BB22872964D00EAEB37 /* yui.cpp */, + ); + path = runner; + sourceTree = ""; + }; + B3EB9BB62872964D00EAEB37 /* c68k */ = { + isa = PBXGroup; + children = ( + B3EB9BBA2872964D00EAEB37 /* c68k.c */, + B3EB9BB72872964D00EAEB37 /* c68kexec.c */, + B3EB9BBB2872964D00EAEB37 /* gen68k.c */, + B3EB9BBD2872964D00EAEB37 /* c68k.h */, + B3EB9BBE2872964D00EAEB37 /* gen68k.h */, + B3EB9BB92872964D00EAEB37 /* c68kmac.inc */, + B3EB9BBC2872964D00EAEB37 /* gen68k.inc */, + B3EB9BB82872964D00EAEB37 /* CMakeLists.txt */, + ); + path = c68k; + sourceTree = ""; + }; + B3EB9BC22872964D00EAEB37 /* gllibs */ = { + isa = PBXGroup; + children = ( + B3EB9BC32872964D00EAEB37 /* include */, + B3EB9BCC2872964D00EAEB37 /* glew */, + ); + path = gllibs; + sourceTree = ""; + }; + B3EB9BC32872964D00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EB9BC42872964D00EAEB37 /* GLES3 */, + B3EB9BC82872964D00EAEB37 /* GL */, + ); + path = include; + sourceTree = ""; + }; + B3EB9BC42872964D00EAEB37 /* GLES3 */ = { + isa = PBXGroup; + children = ( + B3EB9BC52872964D00EAEB37 /* gl3.h */, + B3EB9BC62872964D00EAEB37 /* gl3platform.h */, + B3EB9BC72872964D00EAEB37 /* gl31.h */, + ); + path = GLES3; + sourceTree = ""; + }; + B3EB9BC82872964D00EAEB37 /* GL */ = { + isa = PBXGroup; + children = ( + B3EB9BC92872964D00EAEB37 /* glxew.h */, + B3EB9BCA2872964D00EAEB37 /* wglew.h */, + B3EB9BCB2872964D00EAEB37 /* glew.h */, + ); + path = GL; + sourceTree = ""; + }; + B3EB9BCC2872964D00EAEB37 /* glew */ = { + isa = PBXGroup; + children = ( + B3EB9BCD2872964D00EAEB37 /* glew.c */, + ); + path = glew; + sourceTree = ""; + }; + B3EB9BCE2872964D00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EB9BCF2872964D00EAEB37 /* CMakeLists.txt */, + B3EB9BD02872964D00EAEB37 /* include */, + B3EB9BD92872964D00EAEB37 /* README.md */, + B3EB9BDA2872964D00EAEB37 /* deps */, + B3EB9CA82872964D00EAEB37 /* LICENSE.txt */, + B3EB9CA92872964D00EAEB37 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EB9BD02872964D00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EB9BD12872964D00EAEB37 /* libchdr */, + ); + path = include; + sourceTree = ""; + }; + B3EB9BD12872964D00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EB9BD22872964D00EAEB37 /* flac.h */, + B3EB9BD32872964D00EAEB37 /* chdconfig.h */, + B3EB9BD42872964D00EAEB37 /* bitstream.h */, + B3EB9BD52872964D00EAEB37 /* cdrom.h */, + B3EB9BD62872964D00EAEB37 /* chd.h */, + B3EB9BD72872964D00EAEB37 /* huffman.h */, + B3EB9BD82872964D00EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EB9BDA2872964D00EAEB37 /* deps */ = { + isa = PBXGroup; + children = ( + B3EB9BDB2872964D00EAEB37 /* flac-1.3.3 */, + B3EB9C532872964D00EAEB37 /* zlib-1.2.11 */, + B3EB9C862872964D00EAEB37 /* lzma-19.00 */, + ); + path = deps; + sourceTree = ""; + }; + B3EB9BDB2872964D00EAEB37 /* flac-1.3.3 */ = { + isa = PBXGroup; + children = ( + B3EB9BDC2872964D00EAEB37 /* COPYING.LGPL */, + B3EB9BDD2872964D00EAEB37 /* COPYING.Xiph */, + B3EB9BDE2872964D00EAEB37 /* libFLAC.vcxproj.filters */, + B3EB9BDF2872964D00EAEB37 /* CMakeLists.txt */, + B3EB9BE02872964D00EAEB37 /* AUTHORS */, + B3EB9BE12872964D00EAEB37 /* include */, + B3EB9C042872964D00EAEB37 /* README */, + B3EB9C052872964D00EAEB37 /* COPYING.GPL */, + B3EB9C062872964D00EAEB37 /* .gitignore */, + B3EB9C072872964D00EAEB37 /* libFLAC.vcxproj */, + B3EB9C082872964D00EAEB37 /* COPYING.FDL */, + B3EB9C092872964D00EAEB37 /* .travis.yml */, + B3EB9C0A2872964D00EAEB37 /* src */, + ); + path = "flac-1.3.3"; + sourceTree = ""; + }; + B3EB9BE12872964D00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EB9BE22872964D00EAEB37 /* Makefile.am */, + B3EB9BE32872964D00EAEB37 /* FLAC */, + B3EB9BED2872964D00EAEB37 /* share */, + ); + path = include; + sourceTree = ""; + }; + B3EB9BE32872964D00EAEB37 /* FLAC */ = { + isa = PBXGroup; + children = ( + B3EB9BE42872964D00EAEB37 /* export.h */, + B3EB9BE52872964D00EAEB37 /* all.h */, + B3EB9BE62872964D00EAEB37 /* ordinals.h */, + B3EB9BE72872964D00EAEB37 /* metadata.h */, + B3EB9BE82872964D00EAEB37 /* Makefile.am */, + B3EB9BE92872964D00EAEB37 /* format.h */, + B3EB9BEA2872964D00EAEB37 /* stream_decoder.h */, + B3EB9BEB2872964D00EAEB37 /* assert.h */, + B3EB9BEC2872964D00EAEB37 /* callback.h */, + ); + path = FLAC; + sourceTree = ""; + }; + B3EB9BED2872964D00EAEB37 /* share */ = { + isa = PBXGroup; + children = ( + B3EB9BEE2872964D00EAEB37 /* safe_str.h */, + B3EB9BEF2872964D00EAEB37 /* windows_unicode_filenames.h */, + B3EB9BF02872964D00EAEB37 /* win_utf8_io.h */, + B3EB9BF12872964D00EAEB37 /* replaygain_synthesis.h */, + B3EB9BF22872964D00EAEB37 /* private.h */, + B3EB9BF32872964D00EAEB37 /* getopt.h */, + B3EB9BF42872964D00EAEB37 /* Makefile.am */, + B3EB9BF52872964D00EAEB37 /* msvc2005_int.h */, + B3EB9BF62872964D00EAEB37 /* macros.h */, + B3EB9BF72872964D00EAEB37 /* grabbag */, + B3EB9BFE2872964D00EAEB37 /* compat.h */, + B3EB9BFF2872964D00EAEB37 /* endswap.h */, + B3EB9C002872964D00EAEB37 /* grabbag.h */, + B3EB9C012872964D00EAEB37 /* replaygain_analysis.h */, + B3EB9C022872964D00EAEB37 /* alloc.h */, + B3EB9C032872964D00EAEB37 /* utf8.h */, + ); + path = share; + sourceTree = ""; + }; + B3EB9BF72872964D00EAEB37 /* grabbag */ = { + isa = PBXGroup; + children = ( + B3EB9BF82872964D00EAEB37 /* picture.h */, + B3EB9BF92872964D00EAEB37 /* replaygain.h */, + B3EB9BFA2872964D00EAEB37 /* file.h */, + B3EB9BFB2872964D00EAEB37 /* Makefile.am */, + B3EB9BFC2872964D00EAEB37 /* seektable.h */, + B3EB9BFD2872964D00EAEB37 /* cuesheet.h */, + ); + path = grabbag; + sourceTree = ""; + }; + B3EB9C0A2872964D00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EB9C0B2872964D00EAEB37 /* libFLAC_static.vcxproj.filters */, + B3EB9C0C2872964D00EAEB37 /* flac.pc.in */, + B3EB9C0D2872964D00EAEB37 /* libFLAC_dynamic.vcxproj.filters */, + B3EB9C0E2872964D00EAEB37 /* metadata_object.c */, + B3EB9C0F2872964D00EAEB37 /* memory.c */, + B3EB9C102872964D00EAEB37 /* CMakeLists.txt */, + B3EB9C112872964D00EAEB37 /* cpu.c */, + B3EB9C122872964D00EAEB37 /* format.c */, + B3EB9C132872964D00EAEB37 /* lpc_intrin_sse41.c */, + B3EB9C142872964D00EAEB37 /* stream_decoder.c */, + B3EB9C152872964D00EAEB37 /* include */, + B3EB9C332872964D00EAEB37 /* Makefile.lite */, + B3EB9C342872964D00EAEB37 /* libFLAC_dynamic.vcxproj */, + B3EB9C352872964D00EAEB37 /* lpc_intrin_sse.c */, + B3EB9C362872964D00EAEB37 /* libFLAC_static.vcxproj */, + B3EB9C372872964D00EAEB37 /* bitmath.c */, + B3EB9C382872964D00EAEB37 /* metadata_iterators.c */, + B3EB9C392872964D00EAEB37 /* bitreader.c */, + B3EB9C3A2872964D00EAEB37 /* Makefile.am */, + B3EB9C3B2872964D00EAEB37 /* libFLAC_static.vcproj */, + B3EB9C3C2872964D00EAEB37 /* lpc_intrin_sse2.c */, + B3EB9C3D2872964D00EAEB37 /* ia32 */, + B3EB9C452872964D00EAEB37 /* fixed.c */, + B3EB9C462872964D00EAEB37 /* windows_unicode_filenames.c */, + B3EB9C472872964D00EAEB37 /* lpc_intrin_vsx.c */, + B3EB9C482872964D00EAEB37 /* float.c */, + B3EB9C492872964D00EAEB37 /* md5.c */, + B3EB9C4A2872964D00EAEB37 /* fixed_intrin_sse2.c */, + B3EB9C4B2872964D00EAEB37 /* crc.c */, + B3EB9C4C2872964D00EAEB37 /* fixed_intrin_ssse3.c */, + B3EB9C4D2872964D00EAEB37 /* bitwriter.c */, + B3EB9C4E2872964D00EAEB37 /* lpc.c */, + B3EB9C4F2872964D00EAEB37 /* libFLAC_dynamic.vcproj */, + B3EB9C502872964D00EAEB37 /* libFLAC.m4 */, + B3EB9C512872964D00EAEB37 /* lpc_intrin_avx2.c */, + B3EB9C522872964D00EAEB37 /* window.c */, + ); + path = src; + sourceTree = ""; + }; + B3EB9C152872964D00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EB9C162872964D00EAEB37 /* Makefile.am */, + B3EB9C172872964D00EAEB37 /* private */, + B3EB9C2E2872964D00EAEB37 /* protected */, + ); + path = include; + sourceTree = ""; + }; + B3EB9C172872964D00EAEB37 /* private */ = { + isa = PBXGroup; + children = ( + B3EB9C182872964D00EAEB37 /* float.h */, + B3EB9C192872964D00EAEB37 /* stream_encoder.h */, + B3EB9C1A2872964D00EAEB37 /* fixed.h */, + B3EB9C1B2872964D00EAEB37 /* all.h */, + B3EB9C1C2872964D00EAEB37 /* bitwriter.h */, + B3EB9C1D2872964D00EAEB37 /* crc.h */, + B3EB9C1E2872964D00EAEB37 /* md5.h */, + B3EB9C1F2872964D00EAEB37 /* ogg_encoder_aspect.h */, + B3EB9C202872964D00EAEB37 /* window.h */, + B3EB9C212872964D00EAEB37 /* ogg_mapping.h */, + B3EB9C222872964D00EAEB37 /* metadata.h */, + B3EB9C232872964D00EAEB37 /* lpc.h */, + B3EB9C242872964D00EAEB37 /* Makefile.am */, + B3EB9C252872964D00EAEB37 /* stream_encoder_framing.h */, + B3EB9C262872964D00EAEB37 /* macros.h */, + B3EB9C272872964D00EAEB37 /* cpu.h */, + B3EB9C282872964D00EAEB37 /* memory.h */, + B3EB9C292872964D00EAEB37 /* ogg_decoder_aspect.h */, + B3EB9C2A2872964D00EAEB37 /* ogg_helper.h */, + B3EB9C2B2872964D00EAEB37 /* format.h */, + B3EB9C2C2872964D00EAEB37 /* bitreader.h */, + B3EB9C2D2872964D00EAEB37 /* bitmath.h */, + ); + path = private; + sourceTree = ""; + }; + B3EB9C2E2872964D00EAEB37 /* protected */ = { + isa = PBXGroup; + children = ( + B3EB9C2F2872964D00EAEB37 /* stream_encoder.h */, + B3EB9C302872964D00EAEB37 /* all.h */, + B3EB9C312872964D00EAEB37 /* Makefile.am */, + B3EB9C322872964D00EAEB37 /* stream_decoder.h */, + ); + path = protected; + sourceTree = ""; + }; + B3EB9C3D2872964D00EAEB37 /* ia32 */ = { + isa = PBXGroup; + children = ( + B3EB9C3E2872964D00EAEB37 /* CMakeLists.txt */, + B3EB9C3F2872964D00EAEB37 /* nasm.h */, + B3EB9C402872964D00EAEB37 /* fixed_asm.nasm */, + B3EB9C412872964D00EAEB37 /* lpc_asm.nasm */, + B3EB9C422872964D00EAEB37 /* Makefile.am */, + B3EB9C432872964D00EAEB37 /* lpc_asm-unrolled.nasm */, + B3EB9C442872964D00EAEB37 /* cpu_asm.nasm */, + ); + path = ia32; + sourceTree = ""; + }; + B3EB9C532872964D00EAEB37 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3EB9C542872964D00EAEB37 /* zutil.h */, + B3EB9C552872964D00EAEB37 /* inftrees.h */, + B3EB9C562872964D00EAEB37 /* inflate.c */, + B3EB9C572872964D00EAEB37 /* CMakeLists.txt */, + B3EB9C582872964D00EAEB37 /* zlib.map */, + B3EB9C592872964D00EAEB37 /* zlib.pc.cmakein */, + B3EB9C5A2872964D00EAEB37 /* zlib.3.pdf */, + B3EB9C5B2872964D00EAEB37 /* configure */, + B3EB9C5C2872964D00EAEB37 /* compress.c */, + B3EB9C5D2872964D00EAEB37 /* zlib.3 */, + B3EB9C5E2872964D00EAEB37 /* ChangeLog */, + B3EB9C5F2872964D00EAEB37 /* deflate.c */, + B3EB9C602872964D00EAEB37 /* inffixed.h */, + B3EB9C612872964D00EAEB37 /* Makefile */, + B3EB9C622872964D00EAEB37 /* FAQ */, + B3EB9C632872964D00EAEB37 /* gzread.c */, + B3EB9C642872964D00EAEB37 /* zconf.h.in */, + B3EB9C652872964D00EAEB37 /* trees.h */, + B3EB9C662872964D00EAEB37 /* zconf.h.cmakein */, + B3EB9C672872964D00EAEB37 /* inffast.h */, + B3EB9C682872964D00EAEB37 /* treebuild.xml */, + B3EB9C692872964D00EAEB37 /* crc32.c */, + B3EB9C6A2872964D00EAEB37 /* README */, + B3EB9C6B2872964D00EAEB37 /* infback.c */, + B3EB9C6C2872964D00EAEB37 /* zutil.c */, + B3EB9C6D2872964D00EAEB37 /* deflate.h */, + B3EB9C6E2872964D00EAEB37 /* zlib.pc.in */, + B3EB9C6F2872964D00EAEB37 /* zlib2ansi */, + B3EB9C702872964D00EAEB37 /* gzguts.h */, + B3EB9C712872964D00EAEB37 /* zlib.h */, + B3EB9C722872964D00EAEB37 /* gzlib.c */, + B3EB9C732872964D00EAEB37 /* make_vms.com */, + B3EB9C742872964D00EAEB37 /* inflate.h */, + B3EB9C752872964D00EAEB37 /* inftrees.c */, + B3EB9C762872964D00EAEB37 /* INDEX */, + B3EB9C772872964D00EAEB37 /* doc */, + B3EB9C7D2872964D00EAEB37 /* uncompr.c */, + B3EB9C7E2872964D00EAEB37 /* gzwrite.c */, + B3EB9C7F2872964D00EAEB37 /* trees.c */, + B3EB9C802872964D00EAEB37 /* gzclose.c */, + B3EB9C812872964D00EAEB37 /* crc32.h */, + B3EB9C822872964D00EAEB37 /* Makefile.in */, + B3EB9C832872964D00EAEB37 /* inffast.c */, + B3EB9C842872964D00EAEB37 /* adler32.c */, + B3EB9C852872964D00EAEB37 /* zconf.h */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3EB9C772872964D00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EB9C782872964D00EAEB37 /* rfc1952.txt */, + B3EB9C792872964D00EAEB37 /* rfc1950.txt */, + B3EB9C7A2872964D00EAEB37 /* algorithm.txt */, + B3EB9C7B2872964D00EAEB37 /* rfc1951.txt */, + B3EB9C7C2872964D00EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EB9C862872964D00EAEB37 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B3EB9C872872964D00EAEB37 /* lzma.vcxproj.filters */, + B3EB9C882872964D00EAEB37 /* CMakeLists.txt */, + B3EB9C892872964D00EAEB37 /* LICENSE */, + B3EB9C8A2872964D00EAEB37 /* include */, + B3EB9C992872964D00EAEB37 /* lzma.vcxproj */, + B3EB9C9A2872964D00EAEB37 /* lzma.txt */, + B3EB9C9B2872964D00EAEB37 /* lzma-history.txt */, + B3EB9C9C2872964D00EAEB37 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B3EB9C8A2872964D00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EB9C8B2872964D00EAEB37 /* LzHash.h */, + B3EB9C8C2872964D00EAEB37 /* 7zTypes.h */, + B3EB9C8D2872964D00EAEB37 /* Compiler.h */, + B3EB9C8E2872964D00EAEB37 /* Precomp.h */, + B3EB9C8F2872964D00EAEB37 /* CpuArch.h */, + B3EB9C902872964D00EAEB37 /* Delta.h */, + B3EB9C912872964D00EAEB37 /* LzmaLib.h */, + B3EB9C922872964D00EAEB37 /* Lzma86.h */, + B3EB9C932872964D00EAEB37 /* LzmaEnc.h */, + B3EB9C942872964D00EAEB37 /* LzFind.h */, + B3EB9C952872964D00EAEB37 /* Bra.h */, + B3EB9C962872964D00EAEB37 /* Sort.h */, + B3EB9C972872964D00EAEB37 /* LzmaDec.h */, + B3EB9C982872964D00EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EB9C9C2872964D00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EB9C9D2872964D00EAEB37 /* LzmaEnc.c */, + B3EB9C9E2872964D00EAEB37 /* LzFind.c */, + B3EB9C9F2872964D00EAEB37 /* Sort.c */, + B3EB9CA02872964D00EAEB37 /* Bra86.c */, + B3EB9CA12872964D00EAEB37 /* Alloc.c */, + B3EB9CA22872964D00EAEB37 /* LzmaDec.c */, + B3EB9CA32872964D00EAEB37 /* BraIA64.c */, + B3EB9CA42872964D00EAEB37 /* Lzma86Dec.c */, + B3EB9CA52872964D00EAEB37 /* Delta.c */, + B3EB9CA62872964D00EAEB37 /* Lzma86Enc.c */, + B3EB9CA72872964D00EAEB37 /* CpuArch.c */, + ); + path = src; + sourceTree = ""; + }; + B3EB9CA92872964D00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EB9CAA2872964D00EAEB37 /* libchdr_chd.c */, + B3EB9CAB2872964D00EAEB37 /* libchdr_bitstream.c */, + B3EB9CAC2872964D00EAEB37 /* libchdr_huffman.c */, + B3EB9CAD2872964D00EAEB37 /* libchdr_flac.c */, + B3EB9CAE2872964D00EAEB37 /* link.T */, + B3EB9CAF2872964D00EAEB37 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B3EB9CB02872964D00EAEB37 /* aosdk */ = { + isa = PBXGroup; + children = ( + B3EB9CB12872964D00EAEB37 /* ssf.c */, + B3EB9CB22872964D00EAEB37 /* corlett.c */, + B3EB9CB32872964D00EAEB37 /* ao.h */, + B3EB9CB42872964D00EAEB37 /* corlett.h */, + B3EB9CB52872964D00EAEB37 /* ssf.h */, + B3EB9CB62872964D00EAEB37 /* eng_ssf.c */, + B3EB9CB72872964D00EAEB37 /* license.txt */, + ); + path = aosdk; + sourceTree = ""; + }; + B3EB9CB82872964D00EAEB37 /* dreamcast */ = { + isa = PBXGroup; + children = ( + B3EB9CBD2872964D00EAEB37 /* localtime.c */, + B3EB9CC72872964D00EAEB37 /* perdc.c */, + B3EB9CC62872964D00EAEB37 /* viddc.c */, + B3EB9CC92872964D00EAEB37 /* yui.c */, + B3EB9CC82872964D00EAEB37 /* dreamcast.cmake */, + B3EB9CCA2872964D00EAEB37 /* localtime.h */, + B3EB9CBC2872964D00EAEB37 /* perdc.h */, + B3EB9CB92872964D00EAEB37 /* viddc.h */, + B3EB9CBB2872964D00EAEB37 /* cd.s */, + B3EB9CBA2872964D00EAEB37 /* CMakeLists.txt */, + B3EB9CBE2872964D00EAEB37 /* sh2rec */, + ); + path = dreamcast; + sourceTree = ""; + }; + B3EB9CBE2872964D00EAEB37 /* sh2rec */ = { + isa = PBXGroup; + children = ( + B3EB9CC32872964D00EAEB37 /* sh2rec_htab.c */, + B3EB9CBF2872964D00EAEB37 /* sh2rec_mem.c */, + B3EB9CC12872964D00EAEB37 /* sh2rec.c */, + B3EB9CC02872964D00EAEB37 /* sh2rec_htab.h */, + B3EB9CC22872964D00EAEB37 /* sh2rec_mem.h */, + B3EB9CC52872964D00EAEB37 /* sh2rec.h */, + B3EB9CC42872964D00EAEB37 /* sh2exec.s */, + ); + path = sh2rec; + sourceTree = ""; + }; + B3EB9CCB2872964D00EAEB37 /* qt */ = { + isa = PBXGroup; + children = ( + B3EB9CCC2872964D00EAEB37 /* ui */, + B3EB9D2E2872964E00EAEB37 /* QtYabause.cpp */, + B3EB9D2F2872964E00EAEB37 /* VolatileSettings.h */, + B3EB9D302872964E00EAEB37 /* YabauseThread.cpp */, + B3EB9D312872964E00EAEB37 /* CMakeLists.txt */, + B3EB9D322872964E00EAEB37 /* Arguments.cpp */, + B3EB9D332872964E00EAEB37 /* CommonDialogs.cpp */, + B3EB9D342872964E00EAEB37 /* Settings.h */, + B3EB9D352872964E00EAEB37 /* Arguments.h */, + B3EB9D362872964E00EAEB37 /* resources */, + B3EB9D612872964E00EAEB37 /* CommonDialogs.h */, + B3EB9D622872964E00EAEB37 /* YabauseThread.h */, + B3EB9D632872964E00EAEB37 /* PerQt.h */, + B3EB9D642872964E00EAEB37 /* YabauseGL.h */, + B3EB9D652872964E00EAEB37 /* YabauseGLProxy.h */, + B3EB9D662872964E00EAEB37 /* YabauseSoftGL.cpp */, + B3EB9D672872964E00EAEB37 /* QtYabause.h */, + B3EB9D682872964E00EAEB37 /* YabauseSoftGL.h */, + B3EB9D692872964E00EAEB37 /* doc */, + B3EB9D6B2872964E00EAEB37 /* mkspecs */, + B3EB9D722872964E00EAEB37 /* YabauseGLProxy.cpp */, + B3EB9D732872964E00EAEB37 /* VolatileSettings.cpp */, + B3EB9D742872964E00EAEB37 /* PerQt.c */, + B3EB9D752872964E00EAEB37 /* main.cpp */, + B3EB9D762872964E00EAEB37 /* translations */, + B3EB9D792872964E00EAEB37 /* Settings.cpp */, + B3EB9D7A2872964E00EAEB37 /* yabause.desktop.in */, + B3EB9D7B2872964E00EAEB37 /* YabauseGL.cpp */, + ); + path = qt; + sourceTree = ""; + }; + B3EB9CCC2872964D00EAEB37 /* ui */ = { + isa = PBXGroup; + children = ( + B3EB9CCD2872964D00EAEB37 /* UIAbout.ui */, + B3EB9CCE2872964D00EAEB37 /* UIMouseSetting.cpp */, + B3EB9CCF2872964D00EAEB37 /* UIShortcutManager.cpp */, + B3EB9CD02872964D00EAEB37 /* UICheatSearch.cpp */, + B3EB9CD12872964D00EAEB37 /* UIDebugVDP2.h */, + B3EB9CD22872964D00EAEB37 /* UICheatAR.h */, + B3EB9CD32872964D00EAEB37 /* UI3DControlPadSetting.cpp */, + B3EB9CD42872964D00EAEB37 /* UI3DControlPadSetting.h */, + B3EB9CD52872964D00EAEB37 /* UIControllerSetting.h */, + B3EB9CD62872964D00EAEB37 /* UI3DControlPadSetting.ui */, + B3EB9CD72872964D00EAEB37 /* UICheatSearch.ui */, + B3EB9CD82872964D00EAEB37 /* UIBackupRam.h */, + B3EB9CD92872964D00EAEB37 /* UIGunSetting.cpp */, + B3EB9CDA2872964D00EAEB37 /* UIDebugCPU.h */, + B3EB9CDB2872964D00EAEB37 /* UICheatRaw.ui */, + B3EB9CDC2872964D00EAEB37 /* UICheats.cpp */, + B3EB9CDD2872964D00EAEB37 /* UIMemoryTransfer.cpp */, + B3EB9CDE2872964D00EAEB37 /* UIDebugSCSPDSP.h */, + B3EB9CDF2872964D00EAEB37 /* UIPadSetting.h */, + B3EB9CE02872964E00EAEB37 /* UIPadSetting.cpp */, + B3EB9CE12872964E00EAEB37 /* UIDebugVDP2Viewer.h */, + B3EB9CE22872964E00EAEB37 /* UIDebugSCSP.cpp */, + B3EB9CE32872964E00EAEB37 /* UIHexInput.cpp */, + B3EB9CE42872964E00EAEB37 /* UISettings.h */, + B3EB9CE52872964E00EAEB37 /* UIMemoryEditor.h */, + B3EB9CE62872964E00EAEB37 /* UIDebugCPU.ui */, + B3EB9CE72872964E00EAEB37 /* UIDebugVDP1.ui */, + B3EB9CE82872964E00EAEB37 /* UITwinStickSetting.ui */, + B3EB9CE92872964E00EAEB37 /* UIDebugVDP1.h */, + B3EB9CEA2872964E00EAEB37 /* UIPadSetting.ui */, + B3EB9CEB2872964E00EAEB37 /* UIHexInput.h */, + B3EB9CEC2872964E00EAEB37 /* UIDebugVDP2.cpp */, + B3EB9CED2872964E00EAEB37 /* UICheatSearch.h */, + B3EB9CEE2872964E00EAEB37 /* UITwinStickSetting.h */, + B3EB9CEF2872964E00EAEB37 /* UIMissionStickSetting.h */, + B3EB9CF02872964E00EAEB37 /* UIMissionStickSetting.ui */, + B3EB9CF12872964E00EAEB37 /* UIMemoryTransfer.ui */, + B3EB9CF22872964E00EAEB37 /* UITwinStickSetting.cpp */, + B3EB9CF32872964E00EAEB37 /* UIHexEditor.cpp */, + B3EB9CF42872964E00EAEB37 /* UICheatRaw.cpp */, + B3EB9CF52872964E00EAEB37 /* UIDebugVDP1.cpp */, + B3EB9CF62872964E00EAEB37 /* UIYabause.cpp */, + B3EB9CF72872964E00EAEB37 /* UIDebugM68K.h */, + B3EB9CF82872964E00EAEB37 /* UIDebugSCSPChan.h */, + B3EB9CF92872964E00EAEB37 /* UIMissionStickSetting.cpp */, + B3EB9CFA2872964E00EAEB37 /* UIDebugSH2.cpp */, + B3EB9CFB2872964E00EAEB37 /* UISettings.ui */, + B3EB9CFC2872964E00EAEB37 /* UIDebugVDP2Viewer.cpp */, + B3EB9CFD2872964E00EAEB37 /* UIHexInput.ui */, + B3EB9CFE2872964E00EAEB37 /* UIDebugSCSP.h */, + B3EB9CFF2872964E00EAEB37 /* UIAbout.h */, + B3EB9D002872964E00EAEB37 /* UIDebugVDP2Viewer.ui */, + B3EB9D012872964E00EAEB37 /* UIDebugSCSP.ui */, + B3EB9D022872964E00EAEB37 /* UIMouseSetting.h */, + B3EB9D032872964E00EAEB37 /* UIDebugSCSPDSP.cpp */, + B3EB9D042872964E00EAEB37 /* UIDoubleMissionStickSetting.h */, + B3EB9D052872964E00EAEB37 /* UIYabause.h */, + B3EB9D062872964E00EAEB37 /* UIShortcutManager.h */, + B3EB9D072872964E00EAEB37 /* UIMemoryTransfer.h */, + B3EB9D082872964E00EAEB37 /* UIPortManager.cpp */, + B3EB9D092872964E00EAEB37 /* UIControllerSetting.cpp */, + B3EB9D0A2872964E00EAEB37 /* UIDoubleMissionStickSetting.cpp */, + B3EB9D0B2872964E00EAEB37 /* UICheatAR.ui */, + B3EB9D0C2872964E00EAEB37 /* UICheatRaw.h */, + B3EB9D0D2872964E00EAEB37 /* UIAbout.cpp */, + B3EB9D0E2872964E00EAEB37 /* UIDoubleMissionStickSetting.ui */, + B3EB9D0F2872964E00EAEB37 /* UISettings.cpp */, + B3EB9D102872964E00EAEB37 /* UIMemorySearch.ui */, + B3EB9D112872964E00EAEB37 /* UIDebugSCUDSP.cpp */, + B3EB9D122872964E00EAEB37 /* UIDebugSCSPChan.cpp */, + B3EB9D132872964E00EAEB37 /* UIWheelSetting.ui */, + B3EB9D142872964E00EAEB37 /* UIDisasm.h */, + B3EB9D152872964E00EAEB37 /* UIHexEditor.h */, + B3EB9D162872964E00EAEB37 /* UIMemorySearch.h */, + B3EB9D172872964E00EAEB37 /* UIBackupRam.cpp */, + B3EB9D182872964E00EAEB37 /* UIPortManager.ui */, + B3EB9D192872964E00EAEB37 /* UIYabause.ui */, + B3EB9D1A2872964E00EAEB37 /* UIMemoryEditor.ui */, + B3EB9D1B2872964E00EAEB37 /* UIDebugVDP2.ui */, + B3EB9D1C2872964E00EAEB37 /* UICheats.ui */, + B3EB9D1D2872964E00EAEB37 /* UIDisasm.cpp */, + B3EB9D1E2872964E00EAEB37 /* UIMemorySearch.cpp */, + B3EB9D1F2872964E00EAEB37 /* UIBackupRam.ui */, + B3EB9D202872964E00EAEB37 /* UICheats.h */, + B3EB9D212872964E00EAEB37 /* UIWheelSetting.h */, + B3EB9D222872964E00EAEB37 /* UIMemoryEditor.cpp */, + B3EB9D232872964E00EAEB37 /* UIDebugSCUDSP.h */, + B3EB9D242872964E00EAEB37 /* UIGunSetting.h */, + B3EB9D252872964E00EAEB37 /* UIDebugSH2.h */, + B3EB9D262872964E00EAEB37 /* UIWheelSetting.cpp */, + B3EB9D272872964E00EAEB37 /* UIDebugM68K.cpp */, + B3EB9D282872964E00EAEB37 /* UIPortManager.h */, + B3EB9D292872964E00EAEB37 /* UIMouseSetting.ui */, + B3EB9D2A2872964E00EAEB37 /* UIDebugCPU.cpp */, + B3EB9D2B2872964E00EAEB37 /* UICheatAR.cpp */, + B3EB9D2C2872964E00EAEB37 /* UIDebugSCSPDSP.ui */, + B3EB9D2D2872964E00EAEB37 /* UIGunSetting.ui */, + ); + path = ui; + sourceTree = ""; + }; + B3EB9D362872964E00EAEB37 /* resources */ = { + isa = PBXGroup; + children = ( + B3EB9D372872964E00EAEB37 /* icons */, + B3EB9D602872964E00EAEB37 /* resources.qrc */, + ); + path = resources; + sourceTree = ""; + }; + B3EB9D372872964E00EAEB37 /* icons */ = { + isa = PBXGroup; + children = ( + B3EB9D382872964E00EAEB37 /* doublemissionstick.png */, + B3EB9D392872964E00EAEB37 /* controller.png */, + B3EB9D3A2872964E00EAEB37 /* 3dcontroller.png */, + B3EB9D3B2872964E00EAEB37 /* yabause.rc */, + B3EB9D3C2872964E00EAEB37 /* wheel.png */, + B3EB9D3D2872964E00EAEB37 /* yabause.icns */, + B3EB9D3E2872964E00EAEB37 /* yabause.png */, + B3EB9D3F2872964E00EAEB37 /* mouse.png */, + B3EB9D402872964E00EAEB37 /* twinsticks.png */, + B3EB9D412872964E00EAEB37 /* actions */, + B3EB9D5E2872964E00EAEB37 /* made.png */, + B3EB9D5F2872964E00EAEB37 /* missionstick.png */, + ); + path = icons; + sourceTree = ""; + }; + B3EB9D412872964E00EAEB37 /* actions */ = { + isa = PBXGroup; + children = ( + B3EB9D422872964E00EAEB37 /* button_cancel.png */, + B3EB9D432872964E00EAEB37 /* save_state.png */, + B3EB9D442872964E00EAEB37 /* backup_ram.png */, + B3EB9D452872964E00EAEB37 /* quit.png */, + B3EB9D462872964E00EAEB37 /* frame_skipping.png */, + B3EB9D472872964E00EAEB37 /* no_fullscreen.png */, + B3EB9D482872964E00EAEB37 /* load_state.png */, + B3EB9D492872964E00EAEB37 /* settings.png */, + B3EB9D4A2872964E00EAEB37 /* fps.png */, + B3EB9D4B2872964E00EAEB37 /* screenshot.png */, + B3EB9D4C2872964E00EAEB37 /* fullscreen.png */, + B3EB9D4D2872964E00EAEB37 /* reset.png */, + B3EB9D4E2872964E00EAEB37 /* sound.png */, + B3EB9D4F2872964E00EAEB37 /* transfert.png */, + B3EB9D502872964E00EAEB37 /* button_ok.png */, + B3EB9D512872964E00EAEB37 /* cheat_search.png */, + B3EB9D522872964E00EAEB37 /* layer.png */, + B3EB9D532872964E00EAEB37 /* pause.png */, + B3EB9D542872964E00EAEB37 /* open_file.png */, + B3EB9D552872964E00EAEB37 /* video.png */, + B3EB9D562872964E00EAEB37 /* debug_cpu.png */, + B3EB9D572872964E00EAEB37 /* log.png */, + B3EB9D582872964E00EAEB37 /* cheats.png */, + B3EB9D592872964E00EAEB37 /* cd.png */, + B3EB9D5A2872964E00EAEB37 /* about.png */, + B3EB9D5B2872964E00EAEB37 /* iso.png */, + B3EB9D5C2872964E00EAEB37 /* mute.png */, + B3EB9D5D2872964E00EAEB37 /* play.png */, + ); + path = actions; + sourceTree = ""; + }; + B3EB9D692872964E00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EB9D6A2872964E00EAEB37 /* yabause.1 */, + ); + path = doc; + sourceTree = ""; + }; + B3EB9D6B2872964E00EAEB37 /* mkspecs */ = { + isa = PBXGroup; + children = ( + B3EB9D6C2872964E00EAEB37 /* win32-osx-g++ */, + B3EB9D6F2872964E00EAEB37 /* win32-x11-g++ */, + ); + path = mkspecs; + sourceTree = ""; + }; + B3EB9D6C2872964E00EAEB37 /* win32-osx-g++ */ = { + isa = PBXGroup; + children = ( + B3EB9D6D2872964E00EAEB37 /* qmake.conf */, + B3EB9D6E2872964E00EAEB37 /* qplatformdefs.h */, + ); + path = "win32-osx-g++"; + sourceTree = ""; + }; + B3EB9D6F2872964E00EAEB37 /* win32-x11-g++ */ = { + isa = PBXGroup; + children = ( + B3EB9D702872964E00EAEB37 /* qmake.conf */, + B3EB9D712872964E00EAEB37 /* qplatformdefs.h */, + ); + path = "win32-x11-g++"; + sourceTree = ""; + }; + B3EB9D762872964E00EAEB37 /* translations */ = { + isa = PBXGroup; + children = ( + B3EB9D772872964E00EAEB37 /* yabause_pt.ts */, + B3EB9D782872964E00EAEB37 /* yabause_fr.ts */, + ); + path = translations; + sourceTree = ""; + }; + B3EB9D952872964E00EAEB37 /* libretro */ = { + isa = PBXGroup; + children = ( + B3EB9D992872964E00EAEB37 /* Makefile */, + B3EB9D962872964E00EAEB37 /* Tupfile */, + B3EB9D972872964E00EAEB37 /* libretro.c */, + B3EB9D982872964E00EAEB37 /* yabause_griffin.c */, + B3EB9D9B2872964E00EAEB37 /* Makefile.common */, + B3EB9D9D2872964E00EAEB37 /* libretro_core_options_intl.h */, + B3EB9D9C2872964E00EAEB37 /* libretro_core_options.h */, + B3EB9D9A2872964E00EAEB37 /* gas-preprocessor.pl */, + B3EB9F7C2872964F00EAEB37 /* link.T */, + B3EB9F7D2872964F00EAEB37 /* jni */, + B3EB9D9E2872964E00EAEB37 /* libretro-common */, + ); + path = libretro; + sourceTree = ""; + }; + B3EB9D9E2872964E00EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EB9D9F2872964E00EAEB37 /* encodings */, + B3EB9DA32872964E00EAEB37 /* vfs */, + B3EB9DA72872964E00EAEB37 /* cdrom */, + B3EB9DA92872964E00EAEB37 /* compat */, + B3EB9DB32872964E00EAEB37 /* playlists */, + B3EB9DB52872964E00EAEB37 /* dynamic */, + B3EB9DB72872964E00EAEB37 /* net */, + B3EB9DC02872964E00EAEB37 /* Makefile.test */, + B3EB9DC12872964E00EAEB37 /* formats */, + B3EB9DE92872964E00EAEB37 /* test */, + B3EB9DF42872964E00EAEB37 /* glsym */, + B3EB9DFD2872964E00EAEB37 /* lists */, + B3EB9E042872964E00EAEB37 /* file */, + B3EB9E142872964E00EAEB37 /* hash */, + B3EB9E162872964E00EAEB37 /* streams */, + B3EB9E212872964E00EAEB37 /* include */, + B3EB9ED02872964F00EAEB37 /* features */, + B3EB9ED22872964F00EAEB37 /* utils */, + B3EB9ED82872964F00EAEB37 /* memmap */, + B3EB9EDB2872964F00EAEB37 /* time */, + B3EB9EDD2872964F00EAEB37 /* samples */, + B3EB9F182872964F00EAEB37 /* glsm */, + B3EB9F1A2872964F00EAEB37 /* audio */, + B3EB9F4E2872964F00EAEB37 /* rthreads */, + B3EB9F562872964F00EAEB37 /* .gitignore */, + B3EB9F572872964F00EAEB37 /* vulkan */, + B3EB9F592872964F00EAEB37 /* queues */, + B3EB9F5E2872964F00EAEB37 /* string */, + B3EB9F602872964F00EAEB37 /* crt */, + B3EB9F642872964F00EAEB37 /* gfx */, + B3EB9F6B2872964F00EAEB37 /* libco */, + B3EB9F7A2872964F00EAEB37 /* media */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EB9D9F2872964E00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EB9DA02872964E00EAEB37 /* encoding_base64.c */, + B3EB9DA12872964E00EAEB37 /* encoding_crc32.c */, + B3EB9DA22872964E00EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EB9DA32872964E00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EB9DA42872964E00EAEB37 /* vfs_implementation.c */, + B3EB9DA52872964E00EAEB37 /* vfs_implementation_cdrom.c */, + B3EB9DA62872964E00EAEB37 /* vfs_implementation_uwp.cpp */, + ); + path = vfs; + sourceTree = ""; + }; + B3EB9DA72872964E00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EB9DA82872964E00EAEB37 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EB9DA92872964E00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EB9DAA2872964E00EAEB37 /* compat_ifaddrs.c */, + B3EB9DAB2872964E00EAEB37 /* compat_strl.c */, + B3EB9DAC2872964E00EAEB37 /* compat_posix_string.c */, + B3EB9DAD2872964E00EAEB37 /* compat_strcasestr.c */, + B3EB9DAE2872964E00EAEB37 /* compat_snprintf.c */, + B3EB9DAF2872964E00EAEB37 /* compat_getopt.c */, + B3EB9DB02872964E00EAEB37 /* compat_fnmatch.c */, + B3EB9DB12872964E00EAEB37 /* fopen_utf8.c */, + B3EB9DB22872964E00EAEB37 /* compat_vscprintf.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EB9DB32872964E00EAEB37 /* playlists */ = { + isa = PBXGroup; + children = ( + B3EB9DB42872964E00EAEB37 /* label_sanitization.c */, + ); + path = playlists; + sourceTree = ""; + }; + B3EB9DB52872964E00EAEB37 /* dynamic */ = { + isa = PBXGroup; + children = ( + B3EB9DB62872964E00EAEB37 /* dylib.c */, + ); + path = dynamic; + sourceTree = ""; + }; + B3EB9DB72872964E00EAEB37 /* net */ = { + isa = PBXGroup; + children = ( + B3EB9DB82872964E00EAEB37 /* net_natt.c */, + B3EB9DB92872964E00EAEB37 /* net_socket_ssl_mbed.c */, + B3EB9DBA2872964E00EAEB37 /* net_http.c */, + B3EB9DBB2872964E00EAEB37 /* net_http_parse.c */, + B3EB9DBC2872964E00EAEB37 /* net_ifinfo.c */, + B3EB9DBD2872964E00EAEB37 /* net_compat.c */, + B3EB9DBE2872964E00EAEB37 /* net_socket_ssl_bear.c */, + B3EB9DBF2872964E00EAEB37 /* net_socket.c */, + ); + path = net; + sourceTree = ""; + }; + B3EB9DC12872964E00EAEB37 /* formats */ = { + isa = PBXGroup; + children = ( + B3EB9DC22872964E00EAEB37 /* wav */, + B3EB9DC42872964E00EAEB37 /* m3u */, + B3EB9DC62872964E00EAEB37 /* libchdr */, + B3EB9DCF2872964E00EAEB37 /* image_texture.c */, + B3EB9DD02872964E00EAEB37 /* tga */, + B3EB9DD22872964E00EAEB37 /* png */, + B3EB9DD62872964E00EAEB37 /* xml */, + B3EB9DDB2872964E00EAEB37 /* json */, + B3EB9DDF2872964E00EAEB37 /* logiqx_dat */, + B3EB9DE12872964E00EAEB37 /* cdfs */, + B3EB9DE32872964E00EAEB37 /* jpeg */, + B3EB9DE52872964E00EAEB37 /* bmp */, + B3EB9DE82872964E00EAEB37 /* image_transfer.c */, + ); + path = formats; + sourceTree = ""; + }; + B3EB9DC22872964E00EAEB37 /* wav */ = { + isa = PBXGroup; + children = ( + B3EB9DC32872964E00EAEB37 /* rwav.c */, + ); + path = wav; + sourceTree = ""; + }; + B3EB9DC42872964E00EAEB37 /* m3u */ = { + isa = PBXGroup; + children = ( + B3EB9DC52872964E00EAEB37 /* m3u_file.c */, + ); + path = m3u; + sourceTree = ""; + }; + B3EB9DC62872964E00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EB9DC72872964E00EAEB37 /* libchdr_chd.c */, + B3EB9DC82872964E00EAEB37 /* libchdr_zlib.c */, + B3EB9DC92872964E00EAEB37 /* libchdr_bitstream.c */, + B3EB9DCA2872964E00EAEB37 /* libchdr_huffman.c */, + B3EB9DCB2872964E00EAEB37 /* libchdr_flac.c */, + B3EB9DCC2872964E00EAEB37 /* libchdr_flac_codec.c */, + B3EB9DCD2872964E00EAEB37 /* libchdr_cdrom.c */, + B3EB9DCE2872964E00EAEB37 /* libchdr_lzma.c */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EB9DD02872964E00EAEB37 /* tga */ = { + isa = PBXGroup; + children = ( + B3EB9DD12872964E00EAEB37 /* rtga.c */, + ); + path = tga; + sourceTree = ""; + }; + B3EB9DD22872964E00EAEB37 /* png */ = { + isa = PBXGroup; + children = ( + B3EB9DD32872964E00EAEB37 /* rpng.c */, + B3EB9DD42872964E00EAEB37 /* rpng_internal.h */, + B3EB9DD52872964E00EAEB37 /* rpng_encode.c */, + ); + path = png; + sourceTree = ""; + }; + B3EB9DD62872964E00EAEB37 /* xml */ = { + isa = PBXGroup; + children = ( + B3EB9DD72872964E00EAEB37 /* test */, + B3EB9DDA2872964E00EAEB37 /* rxml.c */, + ); + path = xml; + sourceTree = ""; + }; + B3EB9DD72872964E00EAEB37 /* test */ = { + isa = PBXGroup; + children = ( + B3EB9DD82872964E00EAEB37 /* Makefile */, + B3EB9DD92872964E00EAEB37 /* rxml_test.c */, + ); + path = test; + sourceTree = ""; + }; + B3EB9DDB2872964E00EAEB37 /* json */ = { + isa = PBXGroup; + children = ( + B3EB9DDC2872964E00EAEB37 /* jsonsax_full.c */, + B3EB9DDD2872964E00EAEB37 /* rjson.c */, + B3EB9DDE2872964E00EAEB37 /* jsonsax.c */, + ); + path = json; + sourceTree = ""; + }; + B3EB9DDF2872964E00EAEB37 /* logiqx_dat */ = { + isa = PBXGroup; + children = ( + B3EB9DE02872964E00EAEB37 /* logiqx_dat.c */, + ); + path = logiqx_dat; + sourceTree = ""; + }; + B3EB9DE12872964E00EAEB37 /* cdfs */ = { + isa = PBXGroup; + children = ( + B3EB9DE22872964E00EAEB37 /* cdfs.c */, + ); + path = cdfs; + sourceTree = ""; + }; + B3EB9DE32872964E00EAEB37 /* jpeg */ = { + isa = PBXGroup; + children = ( + B3EB9DE42872964E00EAEB37 /* rjpeg.c */, + ); + path = jpeg; + sourceTree = ""; + }; + B3EB9DE52872964E00EAEB37 /* bmp */ = { + isa = PBXGroup; + children = ( + B3EB9DE62872964E00EAEB37 /* rbmp_encode.c */, + B3EB9DE72872964E00EAEB37 /* rbmp.c */, + ); + path = bmp; + sourceTree = ""; + }; + B3EB9DE92872964E00EAEB37 /* test */ = { + isa = PBXGroup; + children = ( + B3EB9DEA2872964E00EAEB37 /* lists */, + B3EB9DEC2872964E00EAEB37 /* hash */, + B3EB9DEE2872964E00EAEB37 /* utils */, + B3EB9DF02872964E00EAEB37 /* queues */, + B3EB9DF22872964E00EAEB37 /* string */, + ); + path = test; + sourceTree = ""; + }; + B3EB9DEA2872964E00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EB9DEB2872964E00EAEB37 /* test_linked_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3EB9DEC2872964E00EAEB37 /* hash */ = { + isa = PBXGroup; + children = ( + B3EB9DED2872964E00EAEB37 /* test_hash.c */, + ); + path = hash; + sourceTree = ""; + }; + B3EB9DEE2872964E00EAEB37 /* utils */ = { + isa = PBXGroup; + children = ( + B3EB9DEF2872964E00EAEB37 /* test_utils.c */, + ); + path = utils; + sourceTree = ""; + }; + B3EB9DF02872964E00EAEB37 /* queues */ = { + isa = PBXGroup; + children = ( + B3EB9DF12872964E00EAEB37 /* test_generic_queue.c */, + ); + path = queues; + sourceTree = ""; + }; + B3EB9DF22872964E00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EB9DF32872964E00EAEB37 /* test_stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EB9DF42872964E00EAEB37 /* glsym */ = { + isa = PBXGroup; + children = ( + B3EB9DF52872964E00EAEB37 /* glsym_es3.c */, + B3EB9DF62872964E00EAEB37 /* glsym_gl.c */, + B3EB9DF72872964E00EAEB37 /* README.md */, + B3EB9DF82872964E00EAEB37 /* glsym_es2.c */, + B3EB9DF92872964E00EAEB37 /* rglgen.c */, + B3EB9DFA2872964E00EAEB37 /* glgen.py */, + B3EB9DFB2872964E00EAEB37 /* xglgen.py */, + B3EB9DFC2872964E00EAEB37 /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B3EB9DFD2872964E00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EB9DFE2872964E00EAEB37 /* nested_list.c */, + B3EB9DFF2872964E00EAEB37 /* dir_list.c */, + B3EB9E002872964E00EAEB37 /* vector_list.c */, + B3EB9E012872964E00EAEB37 /* string_list.c */, + B3EB9E022872964E00EAEB37 /* linked_list.c */, + B3EB9E032872964E00EAEB37 /* file_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3EB9E042872964E00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EB9E052872964E00EAEB37 /* file_path_io.c */, + B3EB9E062872964E00EAEB37 /* file_path.c */, + B3EB9E072872964E00EAEB37 /* config_file_userdata.c */, + B3EB9E082872964E00EAEB37 /* nbio */, + B3EB9E0F2872964E00EAEB37 /* archive_file_7z.c */, + B3EB9E102872964E00EAEB37 /* archive_file_zlib.c */, + B3EB9E112872964E00EAEB37 /* config_file.c */, + B3EB9E122872964E00EAEB37 /* retro_dirent.c */, + B3EB9E132872964E00EAEB37 /* archive_file.c */, + ); + path = file; + sourceTree = ""; + }; + B3EB9E082872964E00EAEB37 /* nbio */ = { + isa = PBXGroup; + children = ( + B3EB9E092872964E00EAEB37 /* nbio_unixmmap.c */, + B3EB9E0A2872964E00EAEB37 /* nbio_linux.c */, + B3EB9E0B2872964E00EAEB37 /* nbio_orbis.c */, + B3EB9E0C2872964E00EAEB37 /* nbio_windowsmmap.c */, + B3EB9E0D2872964E00EAEB37 /* nbio_intf.c */, + B3EB9E0E2872964E00EAEB37 /* nbio_stdio.c */, + ); + path = nbio; + sourceTree = ""; + }; + B3EB9E142872964E00EAEB37 /* hash */ = { + isa = PBXGroup; + children = ( + B3EB9E152872964E00EAEB37 /* lrc_hash.c */, + ); + path = hash; + sourceTree = ""; + }; + B3EB9E162872964E00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EB9E172872964E00EAEB37 /* stdin_stream.c */, + B3EB9E182872964E00EAEB37 /* file_stream_transforms.c */, + B3EB9E192872964E00EAEB37 /* trans_stream_zlib.c */, + B3EB9E1A2872964E00EAEB37 /* interface_stream.c */, + B3EB9E1B2872964E00EAEB37 /* trans_stream_pipe.c */, + B3EB9E1C2872964E00EAEB37 /* memory_stream.c */, + B3EB9E1D2872964E00EAEB37 /* chd_stream.c */, + B3EB9E1E2872964E00EAEB37 /* trans_stream.c */, + B3EB9E1F2872964E00EAEB37 /* file_stream.c */, + B3EB9E202872964E00EAEB37 /* rzip_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EB9E212872964E00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EB9E222872964E00EAEB37 /* encodings */, + B3EB9E272872964E00EAEB37 /* memalign.h */, + B3EB9E282872964E00EAEB37 /* libretro_dspfilter.h */, + B3EB9E292872964E00EAEB37 /* vfs */, + B3EB9E2D2872964E00EAEB37 /* cdrom */, + B3EB9E2F2872964E00EAEB37 /* libco.h */, + B3EB9E302872964E00EAEB37 /* compat */, + B3EB9E462872964F00EAEB37 /* retro_common_api.h */, + B3EB9E472872964F00EAEB37 /* playlists */, + B3EB9E492872964F00EAEB37 /* dynamic */, + B3EB9E4B2872964F00EAEB37 /* net */, + B3EB9E532872964F00EAEB37 /* retro_timers.h */, + B3EB9E542872964F00EAEB37 /* formats */, + B3EB9E622872964F00EAEB37 /* glsym */, + B3EB9E6D2872964F00EAEB37 /* lists */, + B3EB9E732872964F00EAEB37 /* file */, + B3EB9E792872964F00EAEB37 /* retro_environment.h */, + B3EB9E7A2872964F00EAEB37 /* array */, + B3EB9E7D2872964F00EAEB37 /* retro_dirent.h */, + B3EB9E7E2872964F00EAEB37 /* retro_inline.h */, + B3EB9E7F2872964F00EAEB37 /* retro_math.h */, + B3EB9E802872964F00EAEB37 /* streams */, + B3EB9E892872964F00EAEB37 /* fastcpy.h */, + B3EB9E8A2872964F00EAEB37 /* features */, + B3EB9E8C2872964F00EAEB37 /* lrc_hash.h */, + B3EB9E8D2872964F00EAEB37 /* utils */, + B3EB9E8F2872964F00EAEB37 /* retro_miscellaneous.h */, + B3EB9E902872964F00EAEB37 /* clamping.h */, + B3EB9E912872964F00EAEB37 /* math */, + B3EB9E952872964F00EAEB37 /* time */, + B3EB9E972872964F00EAEB37 /* defines */, + B3EB9E9D2872964F00EAEB37 /* boolean.h */, + B3EB9E9E2872964F00EAEB37 /* libretro_gskit_ps2.h */, + B3EB9E9F2872964F00EAEB37 /* glsm */, + B3EB9EA22872964F00EAEB37 /* audio */, + B3EB9EAA2872964F00EAEB37 /* memmap.h */, + B3EB9EAB2872964F00EAEB37 /* rthreads */, + B3EB9EAF2872964F00EAEB37 /* libretro.h */, + B3EB9EB02872964F00EAEB37 /* vulkan */, + B3EB9EB22872964F00EAEB37 /* retro_stat.h */, + B3EB9EB32872964F00EAEB37 /* retro_common.h */, + B3EB9EB42872964F00EAEB37 /* queues */, + B3EB9EB92872964F00EAEB37 /* retro_assert.h */, + B3EB9EBA2872964F00EAEB37 /* string */, + B3EB9EBC2872964F00EAEB37 /* libretro_d3d.h */, + B3EB9EBD2872964F00EAEB37 /* libretro_vulkan.h */, + B3EB9EBE2872964F00EAEB37 /* gfx */, + B3EB9ECC2872964F00EAEB37 /* retro_endianness.h */, + B3EB9ECD2872964F00EAEB37 /* filters.h */, + B3EB9ECE2872964F00EAEB37 /* media */, + ); + path = include; + sourceTree = ""; + }; + B3EB9E222872964E00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EB9E232872964E00EAEB37 /* base64.h */, + B3EB9E242872964E00EAEB37 /* utf.h */, + B3EB9E252872964E00EAEB37 /* win32.h */, + B3EB9E262872964E00EAEB37 /* crc32.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EB9E292872964E00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EB9E2A2872964E00EAEB37 /* vfs.h */, + B3EB9E2B2872964E00EAEB37 /* vfs_implementation.h */, + B3EB9E2C2872964E00EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EB9E2D2872964E00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EB9E2E2872964E00EAEB37 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EB9E302872964E00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EB9E312872964F00EAEB37 /* apple_compat.h */, + B3EB9E322872964F00EAEB37 /* zutil.h */, + B3EB9E332872964F00EAEB37 /* strl.h */, + B3EB9E342872964F00EAEB37 /* strcasestr.h */, + B3EB9E352872964F00EAEB37 /* msvc */, + B3EB9E372872964F00EAEB37 /* fopen_utf8.h */, + B3EB9E382872964F00EAEB37 /* zconf.h.in */, + B3EB9E392872964F00EAEB37 /* intrinsics.h */, + B3EB9E3A2872964F00EAEB37 /* posix_string.h */, + B3EB9E3B2872964F00EAEB37 /* zlib */, + B3EB9E402872964F00EAEB37 /* getopt.h */, + B3EB9E412872964F00EAEB37 /* fnmatch.h */, + B3EB9E422872964F00EAEB37 /* msvc.h */, + B3EB9E432872964F00EAEB37 /* zlib.h */, + B3EB9E442872964F00EAEB37 /* ifaddrs.h */, + B3EB9E452872964F00EAEB37 /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EB9E352872964F00EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EB9E362872964F00EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EB9E3B2872964F00EAEB37 /* zlib */ = { + isa = PBXGroup; + children = ( + B3EB9E3C2872964F00EAEB37 /* zutil.h */, + B3EB9E3D2872964F00EAEB37 /* zconf.h.in */, + B3EB9E3E2872964F00EAEB37 /* zlib.h */, + B3EB9E3F2872964F00EAEB37 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B3EB9E472872964F00EAEB37 /* playlists */ = { + isa = PBXGroup; + children = ( + B3EB9E482872964F00EAEB37 /* label_sanitization.h */, + ); + path = playlists; + sourceTree = ""; + }; + B3EB9E492872964F00EAEB37 /* dynamic */ = { + isa = PBXGroup; + children = ( + B3EB9E4A2872964F00EAEB37 /* dylib.h */, + ); + path = dynamic; + sourceTree = ""; + }; + B3EB9E4B2872964F00EAEB37 /* net */ = { + isa = PBXGroup; + children = ( + B3EB9E4C2872964F00EAEB37 /* net_ifinfo.h */, + B3EB9E4D2872964F00EAEB37 /* net_compat.h */, + B3EB9E4E2872964F00EAEB37 /* net_socket.h */, + B3EB9E4F2872964F00EAEB37 /* net_natt.h */, + B3EB9E502872964F00EAEB37 /* net_socket_ssl.h */, + B3EB9E512872964F00EAEB37 /* net_http.h */, + B3EB9E522872964F00EAEB37 /* net_http_parse.h */, + ); + path = net; + sourceTree = ""; + }; + B3EB9E542872964F00EAEB37 /* formats */ = { + isa = PBXGroup; + children = ( + B3EB9E552872964F00EAEB37 /* m3u_file.h */, + B3EB9E562872964F00EAEB37 /* jsonsax.h */, + B3EB9E572872964F00EAEB37 /* rxml.h */, + B3EB9E582872964F00EAEB37 /* cdfs.h */, + B3EB9E592872964F00EAEB37 /* rpng.h */, + B3EB9E5A2872964F00EAEB37 /* rtga.h */, + B3EB9E5B2872964F00EAEB37 /* rjson.h */, + B3EB9E5C2872964F00EAEB37 /* image.h */, + B3EB9E5D2872964F00EAEB37 /* logiqx_dat.h */, + B3EB9E5E2872964F00EAEB37 /* rbmp.h */, + B3EB9E5F2872964F00EAEB37 /* rwav.h */, + B3EB9E602872964F00EAEB37 /* jsonsax_full.h */, + B3EB9E612872964F00EAEB37 /* rjpeg.h */, + ); + path = formats; + sourceTree = ""; + }; + B3EB9E622872964F00EAEB37 /* glsym */ = { + isa = PBXGroup; + children = ( + B3EB9E632872964F00EAEB37 /* rglgen.h */, + B3EB9E642872964F00EAEB37 /* glsym_es2.h */, + B3EB9E652872964F00EAEB37 /* glsym.h */, + B3EB9E662872964F00EAEB37 /* rglgen_headers.h */, + B3EB9E672872964F00EAEB37 /* switch */, + B3EB9E6A2872964F00EAEB37 /* rglgen_private_headers.h */, + B3EB9E6B2872964F00EAEB37 /* glsym_es3.h */, + B3EB9E6C2872964F00EAEB37 /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B3EB9E672872964F00EAEB37 /* switch */ = { + isa = PBXGroup; + children = ( + B3EB9E682872964F00EAEB37 /* nx_gl.h */, + B3EB9E692872964F00EAEB37 /* nx_glsym.h */, + ); + path = switch; + sourceTree = ""; + }; + B3EB9E6D2872964F00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EB9E6E2872964F00EAEB37 /* string_list.h */, + B3EB9E6F2872964F00EAEB37 /* linked_list.h */, + B3EB9E702872964F00EAEB37 /* file_list.h */, + B3EB9E712872964F00EAEB37 /* nested_list.h */, + B3EB9E722872964F00EAEB37 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3EB9E732872964F00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EB9E742872964F00EAEB37 /* nbio.h */, + B3EB9E752872964F00EAEB37 /* config_file.h */, + B3EB9E762872964F00EAEB37 /* archive_file.h */, + B3EB9E772872964F00EAEB37 /* config_file_userdata.h */, + B3EB9E782872964F00EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EB9E7A2872964F00EAEB37 /* array */ = { + isa = PBXGroup; + children = ( + B3EB9E7B2872964F00EAEB37 /* rhmap.h */, + B3EB9E7C2872964F00EAEB37 /* rbuf.h */, + ); + path = array; + sourceTree = ""; + }; + B3EB9E802872964F00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EB9E812872964F00EAEB37 /* memory_stream.h */, + B3EB9E822872964F00EAEB37 /* chd_stream.h */, + B3EB9E832872964F00EAEB37 /* trans_stream.h */, + B3EB9E842872964F00EAEB37 /* rzip_stream.h */, + B3EB9E852872964F00EAEB37 /* file_stream.h */, + B3EB9E862872964F00EAEB37 /* stdin_stream.h */, + B3EB9E872872964F00EAEB37 /* file_stream_transforms.h */, + B3EB9E882872964F00EAEB37 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EB9E8A2872964F00EAEB37 /* features */ = { + isa = PBXGroup; + children = ( + B3EB9E8B2872964F00EAEB37 /* features_cpu.h */, + ); + path = features; + sourceTree = ""; + }; + B3EB9E8D2872964F00EAEB37 /* utils */ = { + isa = PBXGroup; + children = ( + B3EB9E8E2872964F00EAEB37 /* md5.h */, + ); + path = utils; + sourceTree = ""; + }; + B3EB9E912872964F00EAEB37 /* math */ = { + isa = PBXGroup; + children = ( + B3EB9E922872964F00EAEB37 /* float_minmax.h */, + B3EB9E932872964F00EAEB37 /* fxp.h */, + B3EB9E942872964F00EAEB37 /* complex.h */, + ); + path = math; + sourceTree = ""; + }; + B3EB9E952872964F00EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EB9E962872964F00EAEB37 /* rtime.h */, + ); + path = time; + sourceTree = ""; + }; + B3EB9E972872964F00EAEB37 /* defines */ = { + isa = PBXGroup; + children = ( + B3EB9E982872964F00EAEB37 /* d3d_defines.h */, + B3EB9E992872964F00EAEB37 /* gx_defines.h */, + B3EB9E9A2872964F00EAEB37 /* cocoa_defines.h */, + B3EB9E9B2872964F00EAEB37 /* psp_defines.h */, + B3EB9E9C2872964F00EAEB37 /* ps3_defines.h */, + ); + path = defines; + sourceTree = ""; + }; + B3EB9E9F2872964F00EAEB37 /* glsm */ = { + isa = PBXGroup; + children = ( + B3EB9EA02872964F00EAEB37 /* glsm.h */, + B3EB9EA12872964F00EAEB37 /* glsmsym.h */, + ); + path = glsm; + sourceTree = ""; + }; + B3EB9EA22872964F00EAEB37 /* audio */ = { + isa = PBXGroup; + children = ( + B3EB9EA32872964F00EAEB37 /* dsp_filter.h */, + B3EB9EA42872964F00EAEB37 /* audio_resampler.h */, + B3EB9EA52872964F00EAEB37 /* audio_mixer.h */, + B3EB9EA62872964F00EAEB37 /* conversion */, + B3EB9EA92872964F00EAEB37 /* audio_mix.h */, + ); + path = audio; + sourceTree = ""; + }; + B3EB9EA62872964F00EAEB37 /* conversion */ = { + isa = PBXGroup; + children = ( + B3EB9EA72872964F00EAEB37 /* s16_to_float.h */, + B3EB9EA82872964F00EAEB37 /* float_to_s16.h */, + ); + path = conversion; + sourceTree = ""; + }; + B3EB9EAB2872964F00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EB9EAC2872964F00EAEB37 /* tpool.h */, + B3EB9EAD2872964F00EAEB37 /* rthreads.h */, + B3EB9EAE2872964F00EAEB37 /* async_job.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EB9EB02872964F00EAEB37 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3EB9EB12872964F00EAEB37 /* vulkan_symbol_wrapper.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B3EB9EB42872964F00EAEB37 /* queues */ = { + isa = PBXGroup; + children = ( + B3EB9EB52872964F00EAEB37 /* generic_queue.h */, + B3EB9EB62872964F00EAEB37 /* task_queue.h */, + B3EB9EB72872964F00EAEB37 /* fifo_queue.h */, + B3EB9EB82872964F00EAEB37 /* message_queue.h */, + ); + path = queues; + sourceTree = ""; + }; + B3EB9EBA2872964F00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EB9EBB2872964F00EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EB9EBE2872964F00EAEB37 /* gfx */ = { + isa = PBXGroup; + children = ( + B3EB9EBF2872964F00EAEB37 /* video_frame.h */, + B3EB9EC02872964F00EAEB37 /* math */, + B3EB9EC62872964F00EAEB37 /* scaler */, + B3EB9ECB2872964F00EAEB37 /* gl_capabilities.h */, + ); + path = gfx; + sourceTree = ""; + }; + B3EB9EC02872964F00EAEB37 /* math */ = { + isa = PBXGroup; + children = ( + B3EB9EC12872964F00EAEB37 /* vector_4.h */, + B3EB9EC22872964F00EAEB37 /* vector_3.h */, + B3EB9EC32872964F00EAEB37 /* vector_2.h */, + B3EB9EC42872964F00EAEB37 /* matrix_3x3.h */, + B3EB9EC52872964F00EAEB37 /* matrix_4x4.h */, + ); + path = math; + sourceTree = ""; + }; + B3EB9EC62872964F00EAEB37 /* scaler */ = { + isa = PBXGroup; + children = ( + B3EB9EC72872964F00EAEB37 /* scaler.h */, + B3EB9EC82872964F00EAEB37 /* pixconv.h */, + B3EB9EC92872964F00EAEB37 /* scaler_int.h */, + B3EB9ECA2872964F00EAEB37 /* filter.h */, + ); + path = scaler; + sourceTree = ""; + }; + B3EB9ECE2872964F00EAEB37 /* media */ = { + isa = PBXGroup; + children = ( + B3EB9ECF2872964F00EAEB37 /* media_detect_cd.h */, + ); + path = media; + sourceTree = ""; + }; + B3EB9ED02872964F00EAEB37 /* features */ = { + isa = PBXGroup; + children = ( + B3EB9ED12872964F00EAEB37 /* features_cpu.c */, + ); + path = features; + sourceTree = ""; + }; + B3EB9ED22872964F00EAEB37 /* utils */ = { + isa = PBXGroup; + children = ( + B3EB9ED32872964F00EAEB37 /* djb2.c */, + B3EB9ED42872964F00EAEB37 /* sha1.c */, + B3EB9ED52872964F00EAEB37 /* debugbreak */, + B3EB9ED72872964F00EAEB37 /* md5.c */, + ); + path = utils; + sourceTree = ""; + }; + B3EB9ED52872964F00EAEB37 /* debugbreak */ = { + isa = PBXGroup; + children = ( + B3EB9ED62872964F00EAEB37 /* debugbreak.c */, + ); + path = debugbreak; + sourceTree = ""; + }; + B3EB9ED82872964F00EAEB37 /* memmap */ = { + isa = PBXGroup; + children = ( + B3EB9ED92872964F00EAEB37 /* memmap.c */, + B3EB9EDA2872964F00EAEB37 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3EB9EDB2872964F00EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EB9EDC2872964F00EAEB37 /* rtime.c */, + ); + path = time; + sourceTree = ""; + }; + B3EB9EDD2872964F00EAEB37 /* samples */ = { + isa = PBXGroup; + children = ( + B3EB9EDE2872964F00EAEB37 /* core_options */, + B3EB9EEF2872964F00EAEB37 /* compat */, + B3EB9EF92872964F00EAEB37 /* net */, + B3EB9F012872964F00EAEB37 /* formats */, + B3EB9F082872964F00EAEB37 /* file */, + B3EB9F0F2872964F00EAEB37 /* streams */, + B3EB9F132872964F00EAEB37 /* utils */, + ); + path = samples; + sourceTree = ""; + }; + B3EB9EDE2872964F00EAEB37 /* core_options */ = { + isa = PBXGroup; + children = ( + B3EB9EDF2872964F00EAEB37 /* example_categories */, + B3EB9EE52872964F00EAEB37 /* example_default */, + B3EB9EE82872964F00EAEB37 /* README.md */, + B3EB9EE92872964F00EAEB37 /* example_hide_option */, + B3EB9EEC2872964F00EAEB37 /* example_translation */, + ); + path = core_options; + sourceTree = ""; + }; + B3EB9EDF2872964F00EAEB37 /* example_categories */ = { + isa = PBXGroup; + children = ( + B3EB9EE02872964F00EAEB37 /* conversion_scripts */, + B3EB9EE32872964F00EAEB37 /* libretro_core_options.h */, + B3EB9EE42872964F00EAEB37 /* libretro_core_options_intl.h */, + ); + path = example_categories; + sourceTree = ""; + }; + B3EB9EE02872964F00EAEB37 /* conversion_scripts */ = { + isa = PBXGroup; + children = ( + B3EB9EE12872964F00EAEB37 /* core_option_regex.py */, + B3EB9EE22872964F00EAEB37 /* v1_to_v2_converter.py */, + ); + path = conversion_scripts; + sourceTree = ""; + }; + B3EB9EE52872964F00EAEB37 /* example_default */ = { + isa = PBXGroup; + children = ( + B3EB9EE62872964F00EAEB37 /* libretro_core_options.h */, + B3EB9EE72872964F00EAEB37 /* libretro_core_options_intl.h */, + ); + path = example_default; + sourceTree = ""; + }; + B3EB9EE92872964F00EAEB37 /* example_hide_option */ = { + isa = PBXGroup; + children = ( + B3EB9EEA2872964F00EAEB37 /* libretro_core_options.h */, + B3EB9EEB2872964F00EAEB37 /* libretro_core_options_intl.h */, + ); + path = example_hide_option; + sourceTree = ""; + }; + B3EB9EEC2872964F00EAEB37 /* example_translation */ = { + isa = PBXGroup; + children = ( + B3EB9EED2872964F00EAEB37 /* libretro_core_options.h */, + B3EB9EEE2872964F00EAEB37 /* libretro_core_options_intl.h */, + ); + path = example_translation; + sourceTree = ""; + }; + B3EB9EEF2872964F00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EB9EF02872964F00EAEB37 /* fnmatch */, + B3EB9EF32872964F00EAEB37 /* strl */, + B3EB9EF62872964F00EAEB37 /* snprintf */, + ); + path = compat; + sourceTree = ""; + }; + B3EB9EF02872964F00EAEB37 /* fnmatch */ = { + isa = PBXGroup; + children = ( + B3EB9EF12872964F00EAEB37 /* compat_fnmatch_test.c */, + B3EB9EF22872964F00EAEB37 /* Makefile */, + ); + path = fnmatch; + sourceTree = ""; + }; + B3EB9EF32872964F00EAEB37 /* strl */ = { + isa = PBXGroup; + children = ( + B3EB9EF42872964F00EAEB37 /* strl_test.c */, + B3EB9EF52872964F00EAEB37 /* Makefile */, + ); + path = strl; + sourceTree = ""; + }; + B3EB9EF62872964F00EAEB37 /* snprintf */ = { + isa = PBXGroup; + children = ( + B3EB9EF72872964F00EAEB37 /* Makefile */, + B3EB9EF82872964F00EAEB37 /* snprintf_test.c */, + ); + path = snprintf; + sourceTree = ""; + }; + B3EB9EF92872964F00EAEB37 /* net */ = { + isa = PBXGroup; + children = ( + B3EB9EFA2872964F00EAEB37 /* net_ifinfo_test.c */, + B3EB9EFB2872964F00EAEB37 /* udp-test.c */, + B3EB9EFC2872964F00EAEB37 /* Makefile */, + B3EB9EFD2872964F00EAEB37 /* net_http_parse_test.c */, + B3EB9EFE2872964F00EAEB37 /* net_ifinfo */, + B3EB9EFF2872964F00EAEB37 /* http_test */, + B3EB9F002872964F00EAEB37 /* net_http_test.c */, + ); + path = net; + sourceTree = ""; + }; + B3EB9F012872964F00EAEB37 /* formats */ = { + isa = PBXGroup; + children = ( + B3EB9F022872964F00EAEB37 /* png */, + B3EB9F052872964F00EAEB37 /* xml */, + ); + path = formats; + sourceTree = ""; + }; + B3EB9F022872964F00EAEB37 /* png */ = { + isa = PBXGroup; + children = ( + B3EB9F032872964F00EAEB37 /* Makefile */, + B3EB9F042872964F00EAEB37 /* rpng_test.c */, + ); + path = png; + sourceTree = ""; + }; + B3EB9F052872964F00EAEB37 /* xml */ = { + isa = PBXGroup; + children = ( + B3EB9F062872964F00EAEB37 /* Makefile */, + B3EB9F072872964F00EAEB37 /* rxml_test.c */, + ); + path = xml; + sourceTree = ""; + }; + B3EB9F082872964F00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EB9F092872964F00EAEB37 /* nbio */, + B3EB9F0C2872964F00EAEB37 /* config_file */, + ); + path = file; + sourceTree = ""; + }; + B3EB9F092872964F00EAEB37 /* nbio */ = { + isa = PBXGroup; + children = ( + B3EB9F0A2872964F00EAEB37 /* Makefile */, + B3EB9F0B2872964F00EAEB37 /* nbio_test.c */, + ); + path = nbio; + sourceTree = ""; + }; + B3EB9F0C2872964F00EAEB37 /* config_file */ = { + isa = PBXGroup; + children = ( + B3EB9F0D2872964F00EAEB37 /* config_file_test.c */, + B3EB9F0E2872964F00EAEB37 /* Makefile */, + ); + path = config_file; + sourceTree = ""; + }; + B3EB9F0F2872964F00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EB9F102872964F00EAEB37 /* rzip */, + ); + path = streams; + sourceTree = ""; + }; + B3EB9F102872964F00EAEB37 /* rzip */ = { + isa = PBXGroup; + children = ( + B3EB9F112872964F00EAEB37 /* Makefile */, + B3EB9F122872964F00EAEB37 /* rzip.c */, + ); + path = rzip; + sourceTree = ""; + }; + B3EB9F132872964F00EAEB37 /* utils */ = { + isa = PBXGroup; + children = ( + B3EB9F142872964F00EAEB37 /* Makefile */, + B3EB9F152872964F00EAEB37 /* md5_test.c */, + B3EB9F162872964F00EAEB37 /* crc32.c */, + B3EB9F172872964F00EAEB37 /* sha1_main.c */, + ); + path = utils; + sourceTree = ""; + }; + B3EB9F182872964F00EAEB37 /* glsm */ = { + isa = PBXGroup; + children = ( + B3EB9F192872964F00EAEB37 /* glsm.c */, + ); + path = glsm; + sourceTree = ""; + }; + B3EB9F1A2872964F00EAEB37 /* audio */ = { + isa = PBXGroup; + children = ( + B3EB9F1B2872964F00EAEB37 /* dsp_filters */, + B3EB9F3E2872964F00EAEB37 /* audio_mix.c */, + B3EB9F3F2872964F00EAEB37 /* resampler */, + B3EB9F452872964F00EAEB37 /* dsp_filter.c */, + B3EB9F462872964F00EAEB37 /* conversion */, + B3EB9F4D2872964F00EAEB37 /* audio_mixer.c */, + ); + path = audio; + sourceTree = ""; + }; + B3EB9F1B2872964F00EAEB37 /* dsp_filters */ = { + isa = PBXGroup; + children = ( + B3EB9F1C2872964F00EAEB37 /* eq.c */, + B3EB9F1D2872964F00EAEB37 /* EQ.dsp */, + B3EB9F1E2872964F00EAEB37 /* Vibrato.dsp */, + B3EB9F1F2872964F00EAEB37 /* ChipTuneEnhance.dsp */, + B3EB9F202872964F00EAEB37 /* phaser.c */, + B3EB9F212872964F00EAEB37 /* Crystalizer.dsp */, + B3EB9F222872964F00EAEB37 /* Mono.dsp */, + B3EB9F232872964F00EAEB37 /* configure */, + B3EB9F242872964F00EAEB37 /* Makefile */, + B3EB9F252872964F00EAEB37 /* chorus.c */, + B3EB9F262872964F00EAEB37 /* Phaser.dsp */, + B3EB9F272872964F00EAEB37 /* wahwah.c */, + B3EB9F282872964F00EAEB37 /* IIR.dsp */, + B3EB9F292872964F00EAEB37 /* HighShelfDampen.dsp */, + B3EB9F2A2872964F00EAEB37 /* EchoReverb.dsp */, + B3EB9F2B2872964F00EAEB37 /* iir.c */, + B3EB9F2C2872964F00EAEB37 /* reverb.c */, + B3EB9F2D2872964F00EAEB37 /* crystalizer.c */, + B3EB9F2E2872964F00EAEB37 /* WahWah.dsp */, + B3EB9F2F2872964F00EAEB37 /* fft */, + B3EB9F322872964F00EAEB37 /* link.T */, + B3EB9F332872964F00EAEB37 /* BassBoost.dsp */, + B3EB9F342872964F00EAEB37 /* vibrato.c */, + B3EB9F352872964F00EAEB37 /* Echo.dsp */, + B3EB9F362872964F00EAEB37 /* LowPassCPS.dsp */, + B3EB9F372872964F00EAEB37 /* Panning.dsp */, + B3EB9F382872964F00EAEB37 /* tremolo.c */, + B3EB9F392872964F00EAEB37 /* panning.c */, + B3EB9F3A2872964F00EAEB37 /* Chorus.dsp */, + B3EB9F3B2872964F00EAEB37 /* Tremolo.dsp */, + B3EB9F3C2872964F00EAEB37 /* Reverb.dsp */, + B3EB9F3D2872964F00EAEB37 /* echo.c */, + ); + path = dsp_filters; + sourceTree = ""; + }; + B3EB9F2F2872964F00EAEB37 /* fft */ = { + isa = PBXGroup; + children = ( + B3EB9F302872964F00EAEB37 /* fft.h */, + B3EB9F312872964F00EAEB37 /* fft.c */, + ); + path = fft; + sourceTree = ""; + }; + B3EB9F3F2872964F00EAEB37 /* resampler */ = { + isa = PBXGroup; + children = ( + B3EB9F402872964F00EAEB37 /* drivers */, + B3EB9F442872964F00EAEB37 /* audio_resampler.c */, + ); + path = resampler; + sourceTree = ""; + }; + B3EB9F402872964F00EAEB37 /* drivers */ = { + isa = PBXGroup; + children = ( + B3EB9F412872964F00EAEB37 /* sinc_resampler.c */, + B3EB9F422872964F00EAEB37 /* nearest_resampler.c */, + B3EB9F432872964F00EAEB37 /* sinc_resampler_neon.S */, + ); + path = drivers; + sourceTree = ""; + }; + B3EB9F462872964F00EAEB37 /* conversion */ = { + isa = PBXGroup; + children = ( + B3EB9F472872964F00EAEB37 /* s16_to_float.c */, + B3EB9F482872964F00EAEB37 /* float_to_s16_neon.c */, + B3EB9F492872964F00EAEB37 /* s16_to_float_neon.c */, + B3EB9F4A2872964F00EAEB37 /* float_to_s16.c */, + B3EB9F4B2872964F00EAEB37 /* float_to_s16_neon.S */, + B3EB9F4C2872964F00EAEB37 /* s16_to_float_neon.S */, + ); + path = conversion; + sourceTree = ""; + }; + B3EB9F4E2872964F00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EB9F4F2872964F00EAEB37 /* wiiu_pthread.h */, + B3EB9F502872964F00EAEB37 /* rthreads.c */, + B3EB9F512872964F00EAEB37 /* gx_pthread.h */, + B3EB9F522872964F00EAEB37 /* psp_pthread.h */, + B3EB9F532872964F00EAEB37 /* xenon_sdl_threads.c */, + B3EB9F542872964F00EAEB37 /* ctr_pthread.h */, + B3EB9F552872964F00EAEB37 /* tpool.c */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EB9F572872964F00EAEB37 /* vulkan */ = { + isa = PBXGroup; + children = ( + B3EB9F582872964F00EAEB37 /* vulkan_symbol_wrapper.c */, + ); + path = vulkan; + sourceTree = ""; + }; + B3EB9F592872964F00EAEB37 /* queues */ = { + isa = PBXGroup; + children = ( + B3EB9F5A2872964F00EAEB37 /* fifo_queue.c */, + B3EB9F5B2872964F00EAEB37 /* message_queue.c */, + B3EB9F5C2872964F00EAEB37 /* generic_queue.c */, + B3EB9F5D2872964F00EAEB37 /* task_queue.c */, + ); + path = queues; + sourceTree = ""; + }; + B3EB9F5E2872964F00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EB9F5F2872964F00EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EB9F602872964F00EAEB37 /* crt */ = { + isa = PBXGroup; + children = ( + B3EB9F612872964F00EAEB37 /* include */, + B3EB9F632872964F00EAEB37 /* string.c */, + ); + path = crt; + sourceTree = ""; + }; + B3EB9F612872964F00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EB9F622872964F00EAEB37 /* string.h */, + ); + path = include; + sourceTree = ""; + }; + B3EB9F642872964F00EAEB37 /* gfx */ = { + isa = PBXGroup; + children = ( + B3EB9F652872964F00EAEB37 /* gl_capabilities.c */, + B3EB9F662872964F00EAEB37 /* scaler */, + ); + path = gfx; + sourceTree = ""; + }; + B3EB9F662872964F00EAEB37 /* scaler */ = { + isa = PBXGroup; + children = ( + B3EB9F672872964F00EAEB37 /* scaler_int.c */, + B3EB9F682872964F00EAEB37 /* pixconv.c */, + B3EB9F692872964F00EAEB37 /* scaler_filter.c */, + B3EB9F6A2872964F00EAEB37 /* scaler.c */, + ); + path = scaler; + sourceTree = ""; + }; + B3EB9F6B2872964F00EAEB37 /* libco */ = { + isa = PBXGroup; + children = ( + B3EB9F6C2872964F00EAEB37 /* sjlj.c */, + B3EB9F6D2872964F00EAEB37 /* ps2.c */, + B3EB9F6E2872964F00EAEB37 /* ppc.c */, + B3EB9F6F2872964F00EAEB37 /* ucontext.c */, + B3EB9F702872964F00EAEB37 /* fiber.c */, + B3EB9F712872964F00EAEB37 /* aarch64.c */, + B3EB9F722872964F00EAEB37 /* libco.c */, + B3EB9F732872964F00EAEB37 /* scefiber.c */, + B3EB9F742872964F00EAEB37 /* genode.cpp */, + B3EB9F752872964F00EAEB37 /* armeabi.c */, + B3EB9F762872964F00EAEB37 /* amd64.c */, + B3EB9F772872964F00EAEB37 /* psp2.c */, + B3EB9F782872964F00EAEB37 /* x86.c */, + B3EB9F792872964F00EAEB37 /* psp1.c */, + ); + path = libco; + sourceTree = ""; + }; + B3EB9F7A2872964F00EAEB37 /* media */ = { + isa = PBXGroup; + children = ( + B3EB9F7B2872964F00EAEB37 /* media_detect_cd.c */, + ); + path = media; + sourceTree = ""; + }; + B3EB9F7D2872964F00EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EB9F7E2872964F00EAEB37 /* Android.mk */, + B3EB9F7F2872964F00EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3EB9F852872964F00EAEB37 /* q68 */ = { + isa = PBXGroup; + children = ( + B3EB9F862872964F00EAEB37 /* q68-jit.h */, + B3EB9F872872964F00EAEB37 /* q68-jit-x86.S */, + B3EB9F882872964F00EAEB37 /* q68-jit-x86.h */, + B3EB9F892872964F00EAEB37 /* q68-disasm.c */, + B3EB9F8A2872964F00EAEB37 /* q68.c */, + B3EB9F8B2872964F00EAEB37 /* q68-internal.h */, + B3EB9F8C2872964F00EAEB37 /* q68-jit.c */, + B3EB9F8D2872964F00EAEB37 /* q68-const.h */, + B3EB9F8E2872964F00EAEB37 /* q68-jit-psp.S */, + B3EB9F8F2872964F00EAEB37 /* q68-jit-psp.h */, + B3EB9F902872964F00EAEB37 /* q68-core.c */, + B3EB9F912872964F00EAEB37 /* q68.h */, + ); + path = q68; + sourceTree = ""; + }; + B3EB9F922872964F00EAEB37 /* cocoa */ = { + isa = PBXGroup; + children = ( + B3EB9FA42872965000EAEB37 /* vidgcd.c */, + B3EB9F9E2872965000EAEB37 /* PerCocoa.h */, + B3EB9FAB2872965000EAEB37 /* vidgcd.h */, + B3EB9F942872965000EAEB37 /* YabauseButtonFormatter.h */, + B3EB9FAA2872965000EAEB37 /* YabauseController.h */, + B3EB9F9F2872965000EAEB37 /* YabauseGLView.h */, + B3EB9FAC2872965000EAEB37 /* YabausePrefsController.h */, + B3EB9FA12872965000EAEB37 /* Yabause.icns */, + B3EB9FA72872965000EAEB37 /* main.m */, + B3EB9FA92872965000EAEB37 /* PerCocoa.m */, + B3EB9FA62872965000EAEB37 /* YabauseButtonFormatter.m */, + B3EB9F9D2872965000EAEB37 /* YabauseController.m */, + B3EB9FA82872965000EAEB37 /* YabauseGLView.m */, + B3EB9FA02872965000EAEB37 /* YabausePrefsController.m */, + B3EB9F932872964F00EAEB37 /* CMake-Info.plist */, + B3EB9FA52872965000EAEB37 /* Yabause-Info.plist */, + B3EB9F992872965000EAEB37 /* CMakeLists.txt */, + B3EB9F9A2872965000EAEB37 /* Yabause.xcodeproj */, + B3EB9F952872965000EAEB37 /* InfoPlist.strings */, + B3EB9F972872965000EAEB37 /* MainMenu.xib */, + B3EB9FA22872965000EAEB37 /* resources */, + ); + path = cocoa; + sourceTree = ""; + }; + B3EB9F9B2872965000EAEB37 /* Products */ = { + isa = PBXGroup; + children = ( + B3EBA0F72872965100EAEB37 /* gen68k */, + B3EBA0F92872965100EAEB37 /* Yabause.app */, + ); + name = Products; + sourceTree = ""; + }; + B3EB9FA22872965000EAEB37 /* resources */ = { + isa = PBXGroup; + children = ( + B3EB9FA32872965000EAEB37 /* controller.png */, + ); + path = resources; + sourceTree = ""; + }; + B3EB9FBD2872965000EAEB37 /* android */ = { + isa = PBXGroup; + children = ( + B3EB9FBE2872965000EAEB37 /* res */, + B3EB9FD52872965000EAEB37 /* arm64-v8a.cmake */, + B3EB9FD62872965000EAEB37 /* CMakeLists.txt */, + B3EB9FD72872965000EAEB37 /* android-windows.cmake */, + B3EB9FD82872965000EAEB37 /* AndroidManifest.xml */, + B3EB9FD92872965000EAEB37 /* gradle */, + B3EB9FDD2872965000EAEB37 /* gradlew */, + B3EB9FDE2872965000EAEB37 /* x86.cmake */, + B3EB9FDF2872965000EAEB37 /* build.gradle */, + B3EB9FE02872965000EAEB37 /* armeabi.cmake */, + B3EB9FE12872965000EAEB37 /* gradlew.bat */, + B3EB9FE22872965000EAEB37 /* jni */, + B3EB9FEB2872965000EAEB37 /* gradle.properties.in */, + B3EB9FEC2872965000EAEB37 /* src */, + ); + path = android; + sourceTree = ""; + }; + B3EB9FBE2872965000EAEB37 /* res */ = { + isa = PBXGroup; + children = ( + B3EB9FBF2872965000EAEB37 /* layout */, + B3EB9FC52872965000EAEB37 /* values */, + B3EB9FC72872965000EAEB37 /* drawable-xhdpi */, + B3EB9FC92872965000EAEB37 /* xml */, + B3EB9FCB2872965000EAEB37 /* drawable-hdpi */, + B3EB9FCD2872965000EAEB37 /* drawable-ldpi */, + B3EB9FCF2872965000EAEB37 /* menu */, + B3EB9FD12872965000EAEB37 /* drawable-mdpi */, + B3EB9FD32872965000EAEB37 /* layout-v11 */, + ); + path = res; + sourceTree = ""; + }; + B3EB9FBF2872965000EAEB37 /* layout */ = { + isa = PBXGroup; + children = ( + B3EB9FC02872965000EAEB37 /* main.xml */, + B3EB9FC12872965000EAEB37 /* game_item.xml */, + B3EB9FC22872965000EAEB37 /* save_item.xml */, + B3EB9FC32872965000EAEB37 /* home.xml */, + B3EB9FC42872965000EAEB37 /* save_list.xml */, + ); + path = layout; + sourceTree = ""; + }; + B3EB9FC52872965000EAEB37 /* values */ = { + isa = PBXGroup; + children = ( + B3EB9FC62872965000EAEB37 /* strings.xml */, + ); + path = values; + sourceTree = ""; + }; + B3EB9FC72872965000EAEB37 /* drawable-xhdpi */ = { + isa = PBXGroup; + children = ( + B3EB9FC82872965000EAEB37 /* banner.png */, + ); + path = "drawable-xhdpi"; + sourceTree = ""; + }; + B3EB9FC92872965000EAEB37 /* xml */ = { + isa = PBXGroup; + children = ( + B3EB9FCA2872965000EAEB37 /* preferences.xml */, + ); + path = xml; + sourceTree = ""; + }; + B3EB9FCB2872965000EAEB37 /* drawable-hdpi */ = { + isa = PBXGroup; + children = ( + B3EB9FCC2872965000EAEB37 /* icon.png */, + ); + path = "drawable-hdpi"; + sourceTree = ""; + }; + B3EB9FCD2872965000EAEB37 /* drawable-ldpi */ = { + isa = PBXGroup; + children = ( + B3EB9FCE2872965000EAEB37 /* icon.png */, + ); + path = "drawable-ldpi"; + sourceTree = ""; + }; + B3EB9FCF2872965000EAEB37 /* menu */ = { + isa = PBXGroup; + children = ( + B3EB9FD02872965000EAEB37 /* save_list.xml */, + ); + path = menu; + sourceTree = ""; + }; + B3EB9FD12872965000EAEB37 /* drawable-mdpi */ = { + isa = PBXGroup; + children = ( + B3EB9FD22872965000EAEB37 /* icon.png */, + ); + path = "drawable-mdpi"; + sourceTree = ""; + }; + B3EB9FD32872965000EAEB37 /* layout-v11 */ = { + isa = PBXGroup; + children = ( + B3EB9FD42872965000EAEB37 /* save_item.xml */, + ); + path = "layout-v11"; + sourceTree = ""; + }; + B3EB9FD92872965000EAEB37 /* gradle */ = { + isa = PBXGroup; + children = ( + B3EB9FDA2872965000EAEB37 /* wrapper */, + ); + path = gradle; + sourceTree = ""; + }; + B3EB9FDA2872965000EAEB37 /* wrapper */ = { + isa = PBXGroup; + children = ( + B3EB9FDB2872965000EAEB37 /* gradle-wrapper.jar */, + B3EB9FDC2872965000EAEB37 /* gradle-wrapper.properties */, + ); + path = wrapper; + sourceTree = ""; + }; + B3EB9FE22872965000EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EB9FE32872965000EAEB37 /* Application.mk.in */, + B3EB9FE42872965000EAEB37 /* Android.mk.in */, + B3EB9FE52872965000EAEB37 /* sndaudiotrack.h */, + B3EB9FE62872965000EAEB37 /* sndopensl.h */, + B3EB9FE72872965000EAEB37 /* yui.c */, + B3EB9FE82872965000EAEB37 /* miniegl.h */, + B3EB9FE92872965000EAEB37 /* sndopensl.c */, + B3EB9FEA2872965000EAEB37 /* sndaudiotrack.c */, + ); + path = jni; + sourceTree = ""; + }; + B3EB9FEC2872965000EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EB9FED2872965000EAEB37 /* org */, + ); + path = src; + sourceTree = ""; + }; + B3EB9FED2872965000EAEB37 /* org */ = { + isa = PBXGroup; + children = ( + B3EB9FEE2872965000EAEB37 /* yabause */, + ); + path = org; + sourceTree = ""; + }; + B3EB9FEE2872965000EAEB37 /* yabause */ = { + isa = PBXGroup; + children = ( + B3EB9FEF2872965000EAEB37 /* android */, + ); + path = yabause; + sourceTree = ""; + }; + B3EB9FEF2872965000EAEB37 /* android */ = { + isa = PBXGroup; + children = ( + B3EB9FF02872965000EAEB37 /* YabausePad.java */, + B3EB9FF12872965000EAEB37 /* YabauseSettings.java */, + B3EB9FF22872965000EAEB37 /* Cartridge.java */, + B3EB9FF32872965000EAEB37 /* Yabause.java */, + B3EB9FF42872965000EAEB37 /* Home.java */, + B3EB9FF52872965000EAEB37 /* YabauseStorage.java */, + B3EB9FF62872965000EAEB37 /* YabauseAudio.java */, + B3EB9FF72872965000EAEB37 /* PadEvent.java */, + B3EB9FF82872965000EAEB37 /* YabauseView.java */, + B3EB9FF92872965000EAEB37 /* GameInfoManager.java */, + B3EB9FFA2872965000EAEB37 /* PadManager.java */, + B3EB9FFB2872965000EAEB37 /* PadManagerV16.java */, + B3EB9FFC2872965000EAEB37 /* GameInfo.java */, + B3EB9FFD2872965000EAEB37 /* SaveList.java */, + B3EB9FFE2872965000EAEB37 /* GameList.java */, + B3EB9FFF2872965000EAEB37 /* GameListAdapter.java */, + B3EBA0002872965000EAEB37 /* PadManagerV8.java */, + B3EBA0012872965000EAEB37 /* SaveListModeListener.java */, + B3EBA0022872965000EAEB37 /* SaveListAdapter.java */, + ); + path = android; + sourceTree = ""; + }; + B3EBA0072872965000EAEB37 /* musashi */ = { + isa = PBXGroup; + children = ( + B3EBA0082872965000EAEB37 /* m68k.h */, + B3EBA0092872965000EAEB37 /* CMakeLists.txt */, + B3EBA00A2872965000EAEB37 /* m68kcpu.c */, + B3EBA00B2872965000EAEB37 /* m68kdasm.c */, + B3EBA00C2872965000EAEB37 /* m68kopac.c */, + B3EBA00D2872965000EAEB37 /* m68kops.c */, + B3EBA00E2872965000EAEB37 /* m68kmake.c */, + B3EBA00F2872965000EAEB37 /* m68kopdm.c */, + B3EBA0102872965000EAEB37 /* m68kcpu.h */, + B3EBA0112872965000EAEB37 /* m68kconf.h */, + B3EBA0122872965000EAEB37 /* readme.txt */, + B3EBA0132872965000EAEB37 /* m68kopnz.c */, + B3EBA0142872965000EAEB37 /* m68kops.h */, + B3EBA0152872965000EAEB37 /* m68k_in.c */, + ); + path = musashi; + sourceTree = ""; + }; + B3EBA0202872965000EAEB37 /* gtk */ = { + isa = PBXGroup; + children = ( + B3EBA0212872965000EAEB37 /* yuim68k.c */, + B3EBA0222872965000EAEB37 /* gtk-compat.c */, + B3EBA0232872965000EAEB37 /* yuipage.c */, + B3EBA0242872965000EAEB37 /* yuiscsp.c */, + B3EBA0252872965000EAEB37 /* yuirange.c */, + B3EBA0262872965000EAEB37 /* yuivdp1.c */, + B3EBA0272872965000EAEB37 /* CMakeLists.txt */, + B3EBA0282872965000EAEB37 /* pergtk.h */, + B3EBA0292872965000EAEB37 /* menu.c */, + B3EBA02A2872965000EAEB37 /* yuicheckbutton.h */, + B3EBA02B2872965000EAEB37 /* settings.h */, + B3EBA02C2872965000EAEB37 /* yuiviewer.c */, + B3EBA02D2872965000EAEB37 /* yuiresolution.c */, + B3EBA02E2872965000EAEB37 /* yuiscudsp.c */, + B3EBA02F2872965000EAEB37 /* gtkglwidget.c */, + B3EBA0302872965000EAEB37 /* yuiinputentry.c */, + B3EBA0312872965000EAEB37 /* yuish.h */, + B3EBA0322872965000EAEB37 /* yuiscreenshot.h */, + B3EBA0332872965000EAEB37 /* yuivdp2.c */, + B3EBA0342872965000EAEB37 /* yuimem.h */, + B3EBA0352872965000EAEB37 /* yuifileentry.h */, + B3EBA0362872965000EAEB37 /* yabause.png */, + B3EBA0372872965000EAEB37 /* yuitransfer.h */, + B3EBA0382872965000EAEB37 /* yuiwindow.c */, + B3EBA0392872965000EAEB37 /* yuiscsp.h */, + B3EBA03A2872965000EAEB37 /* gtk-compat.h */, + B3EBA03B2872965000EAEB37 /* yuipage.h */, + B3EBA03C2872965000EAEB37 /* main.c */, + B3EBA03D2872965000EAEB37 /* yuim68k.h */, + B3EBA03E2872965000EAEB37 /* yuiresolution.h */, + B3EBA03F2872965000EAEB37 /* yuiviewer.h */, + B3EBA0402872965000EAEB37 /* yuicheckbutton.c */, + B3EBA0412872965000EAEB37 /* settings.c */, + B3EBA0422872965000EAEB37 /* pergtk.c */, + B3EBA0432872965000EAEB37 /* yuivdp1.h */, + B3EBA0442872965000EAEB37 /* yuirange.h */, + B3EBA0452872965000EAEB37 /* doc */, + B3EBA0472872965000EAEB37 /* yuiscreenshot.c */, + B3EBA0482872965000EAEB37 /* yuiscudsp.h */, + B3EBA0492872965000EAEB37 /* yuiinputentry.h */, + B3EBA04A2872965000EAEB37 /* yuish.c */, + B3EBA04B2872965000EAEB37 /* gtkglwidget.h */, + B3EBA04C2872965000EAEB37 /* yuitransfer.c */, + B3EBA04D2872965000EAEB37 /* yuiwindow.h */, + B3EBA04E2872965000EAEB37 /* yuimem.c */, + B3EBA04F2872965000EAEB37 /* yuivdp2.h */, + B3EBA0502872965000EAEB37 /* yuifileentry.c */, + B3EBA0512872965000EAEB37 /* yabause.desktop.in */, + ); + path = gtk; + sourceTree = ""; + }; + B3EBA0452872965000EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA0462872965000EAEB37 /* yabause.1 */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA05D2872965000EAEB37 /* titan */ = { + isa = PBXGroup; + children = ( + B3EBA05E2872965000EAEB37 /* titan.h */, + B3EBA05F2872965000EAEB37 /* titan.c */, + ); + path = titan; + sourceTree = ""; + }; + B3EBA0652872965000EAEB37 /* play */ = { + isa = PBXGroup; + children = ( + B3EBA0662872965000EAEB37 /* CMakeLists.txt */, + B3EBA0672872965000EAEB37 /* include */, + B3EBA0862872965100EAEB37 /* License.txt */, + B3EBA0872872965100EAEB37 /* src */, + ); + path = play; + sourceTree = ""; + }; + B3EBA0672872965000EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA0682872965000EAEB37 /* Jitter_CodeGen_AArch32.h */, + B3EBA0692872965000EAEB37 /* Jitter_CodeGen.h */, + B3EBA06A2872965000EAEB37 /* MemoryFunction.h */, + B3EBA06B2872965000EAEB37 /* Jitter_CodeGen_x86_64.h */, + B3EBA06C2872965000EAEB37 /* Types.h */, + B3EBA06D2872965000EAEB37 /* Jitter_Statement.h */, + B3EBA06E2872965000EAEB37 /* Jitter_SymbolTable.h */, + B3EBA06F2872965000EAEB37 /* offsetof_def.h */, + B3EBA0702872965000EAEB37 /* Jitter_SymbolRef.h */, + B3EBA0712872965000EAEB37 /* Jitter_CodeGenFactory.h */, + B3EBA0722872965000EAEB37 /* MachoObjectFile.h */, + B3EBA0732872965000EAEB37 /* placeholder_def.h */, + B3EBA0742872965000EAEB37 /* AArch64Assembler.h */, + B3EBA0752872965000EAEB37 /* Stream.h */, + B3EBA0762872965000EAEB37 /* Jitter_CodeGen_x86_32.h */, + B3EBA0772872965000EAEB37 /* AArch32Assembler.h */, + B3EBA0782872965000EAEB37 /* CoffDefs.h */, + B3EBA0792872965000EAEB37 /* MemStream.h */, + B3EBA07A2872965000EAEB37 /* Jitter_CodeGen_x86.h */, + B3EBA07B2872965000EAEB37 /* BitManip.h */, + B3EBA07C2872965100EAEB37 /* CoffObjectFile.h */, + B3EBA07D2872965100EAEB37 /* Jitter_CodeGen_AArch64.h */, + B3EBA07E2872965100EAEB37 /* Jitter.h */, + B3EBA07F2872965100EAEB37 /* X86Assembler.h */, + B3EBA0802872965100EAEB37 /* MachoDefs.h */, + B3EBA0812872965100EAEB37 /* Jitter_Symbol.h */, + B3EBA0822872965100EAEB37 /* ObjectFile.h */, + B3EBA0832872965100EAEB37 /* alloca_def.h */, + B3EBA0842872965100EAEB37 /* PtrMacro.h */, + B3EBA0852872965100EAEB37 /* ArrayStack.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA0872872965100EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA0882872965100EAEB37 /* Jitter_CodeGen_x86_64.cpp */, + B3EBA0892872965100EAEB37 /* Jitter_CodeGen_x86_Fpu.cpp */, + B3EBA08A2872965100EAEB37 /* Jitter.cpp */, + B3EBA08B2872965100EAEB37 /* Jitter_Optimize.cpp */, + B3EBA08C2872965100EAEB37 /* Jitter_CodeGen_x86_Md.cpp */, + B3EBA08D2872965100EAEB37 /* Jitter_CodeGen_AArch64_Fpu.cpp */, + B3EBA08E2872965100EAEB37 /* Jitter_CodeGen_x86_Shift.h */, + B3EBA08F2872965100EAEB37 /* Jitter_RegAlloc.cpp */, + B3EBA0902872965100EAEB37 /* Jitter_CodeGen_AArch64_Md.cpp */, + B3EBA0912872965100EAEB37 /* Jitter_CodeGen_AArch32_Fpu.cpp */, + B3EBA0922872965100EAEB37 /* AArch32Assembler.cpp */, + B3EBA0932872965100EAEB37 /* MemoryFunction.cpp */, + B3EBA0942872965100EAEB37 /* Jitter_CodeGen_AArch64.cpp */, + B3EBA0952872965100EAEB37 /* Jitter_CodeGen_AArch64_64.cpp */, + B3EBA0962872965100EAEB37 /* Jitter_Statement.cpp */, + B3EBA0972872965100EAEB37 /* Jitter_CodeGen_x86_32.cpp */, + B3EBA0982872965100EAEB37 /* MemStream.cpp */, + B3EBA0992872965100EAEB37 /* Jitter_CodeGen_x86.cpp */, + B3EBA09A2872965100EAEB37 /* X86Assembler.cpp */, + B3EBA09B2872965100EAEB37 /* Jitter_CodeGen_x86_Div.h */, + B3EBA09C2872965100EAEB37 /* Stream.cpp */, + B3EBA09D2872965100EAEB37 /* AArch64Assembler.cpp */, + B3EBA09E2872965100EAEB37 /* CoffObjectFile.cpp */, + B3EBA09F2872965100EAEB37 /* Jitter_CodeGen.cpp */, + B3EBA0A02872965100EAEB37 /* ObjectFile.cpp */, + B3EBA0A12872965100EAEB37 /* Jitter_CodeGen_AArch32_Div.h */, + B3EBA0A22872965100EAEB37 /* X86Assembler_Sse.cpp */, + B3EBA0A32872965100EAEB37 /* Jitter_CodeGen_AArch32_64.cpp */, + B3EBA0A42872965100EAEB37 /* Jitter_CodeGen_x86_Mul.h */, + B3EBA0A52872965100EAEB37 /* Jitter_SymbolTable.cpp */, + B3EBA0A62872965100EAEB37 /* MachoObjectFile.cpp */, + B3EBA0A72872965100EAEB37 /* Jitter_CodeGen_AArch32.cpp */, + B3EBA0A82872965100EAEB37 /* Jitter_CodeGen_AArch32_Md.cpp */, + B3EBA0A92872965100EAEB37 /* Jitter_CodeGenFactory.cpp */, + B3EBA0AA2872965100EAEB37 /* Jitter_CodeGen_x86_Alu.h */, + B3EBA0AB2872965100EAEB37 /* X86Assembler_Fpu.cpp */, + ); + path = src; + sourceTree = ""; + }; + B3EBA0C12872965100EAEB37 /* mini18n */ = { + isa = PBXGroup; + children = ( + B3EBA0C22872965100EAEB37 /* CMakeLists.txt */, + B3EBA0C32872965100EAEB37 /* cmake */, + B3EBA0C62872965100EAEB37 /* ChangeLog */, + B3EBA0C72872965100EAEB37 /* example */, + B3EBA0CC2872965100EAEB37 /* README */, + B3EBA0CD2872965100EAEB37 /* COPYING */, + B3EBA0CE2872965100EAEB37 /* doc */, + B3EBA0D32872965100EAEB37 /* src */, + ); + path = mini18n; + sourceTree = ""; + }; + B3EBA0C32872965100EAEB37 /* cmake */ = { + isa = PBXGroup; + children = ( + B3EBA0C42872965100EAEB37 /* check_wcs_functions.c */, + B3EBA0C52872965100EAEB37 /* windows.cmake */, + ); + path = cmake; + sourceTree = ""; + }; + B3EBA0C72872965100EAEB37 /* example */ = { + isa = PBXGroup; + children = ( + B3EBA0C82872965100EAEB37 /* CMakeLists.txt */, + B3EBA0C92872965100EAEB37 /* multi.c */, + B3EBA0CA2872965100EAEB37 /* main.c */, + B3EBA0CB2872965100EAEB37 /* fr */, + ); + path = example; + sourceTree = ""; + }; + B3EBA0CE2872965100EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA0CF2872965100EAEB37 /* CMakeLists.txt */, + B3EBA0D02872965100EAEB37 /* mini18n.3 */, + B3EBA0D12872965100EAEB37 /* Doxyfile.in */, + B3EBA0D22872965100EAEB37 /* mini18n_set_locale.3 */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA0D32872965100EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA0D42872965100EAEB37 /* mini18n-multi.c */, + B3EBA0D52872965100EAEB37 /* mini18n_pv_file_yts.h */, + B3EBA0D62872965100EAEB37 /* mini18n_pv_conv_windows.h */, + B3EBA0D72872965100EAEB37 /* CMakeLists.txt */, + B3EBA0D82872965100EAEB37 /* mini18n_pv_list.h */, + B3EBA0D92872965100EAEB37 /* mini18n.c */, + B3EBA0DA2872965100EAEB37 /* mini18n_pv_hash.h */, + B3EBA0DB2872965100EAEB37 /* mini18n_pv_conv.h */, + B3EBA0DC2872965100EAEB37 /* mini18n_pv_file_csv.c */, + B3EBA0DD2872965100EAEB37 /* mini18n_pv_file_po.c */, + B3EBA0DE2872965100EAEB37 /* mini18n_pv_data.c */, + B3EBA0DF2872965100EAEB37 /* mini18n_pv_file_yts.c */, + B3EBA0E02872965100EAEB37 /* mini18n_pv_conv_windows.c */, + B3EBA0E12872965100EAEB37 /* mini18n-multi.h */, + B3EBA0E22872965100EAEB37 /* mini18n_pv_list.c */, + B3EBA0E32872965100EAEB37 /* mini18n_pv_file_csv.h */, + B3EBA0E42872965100EAEB37 /* mini18n.h */, + B3EBA0E52872965100EAEB37 /* mini18n_pv_hash.c */, + B3EBA0E62872965100EAEB37 /* mini18n_pv_data.h */, + B3EBA0E72872965100EAEB37 /* mini18n_pv_file_po.h */, + B3EBA0E82872965100EAEB37 /* mini18n_pv_file.h */, + ); + path = src; + sourceTree = ""; + }; + B3EBA0EC2872965100EAEB37 /* .github */ = { + isa = PBXGroup; + children = ( + B3EBA0ED2872965100EAEB37 /* workflows */, + B3EBA0F02872965100EAEB37 /* ISSUE_TEMPLATE */, + ); + path = .github; + sourceTree = ""; + }; + B3EBA0ED2872965100EAEB37 /* workflows */ = { + isa = PBXGroup; + children = ( + B3EBA0EE2872965100EAEB37 /* crowdin_prep.yml */, + B3EBA0EF2872965100EAEB37 /* crowdin_translate.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B3EBA0F02872965100EAEB37 /* ISSUE_TEMPLATE */ = { + isa = PBXGroup; + children = ( + B3EBA0F12872965100EAEB37 /* bug_report.md */, + ); + path = ISSUE_TEMPLATE; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3447ED5218BEDD200557ACE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CE2872558F00B3F6DA /* PVYabause.h in Headers */, + B37022CA2872554300B3F6DA /* PVYabauseCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVYabause.h in Headers */, + B37022C92872554300B3F6DA /* PVYabauseCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* yabause-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "yabause-iOS" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "yabause-iOS"; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libyabause.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* yabause-libretro-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "yabause-libretro-iOS" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "yabause-libretro-iOS"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libyabause-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3447EC0218BEDD200557ACE /* PVYabause-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVYabause-tvOS" */; + buildPhases = ( + B3447EC1218BEDD200557ACE /* Sources */, + B3447ECA218BEDD200557ACE /* Frameworks */, + B3447ED5218BEDD200557ACE /* Headers */, + B3447EDF218BEDD200557ACE /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FD2859E23A00558958 /* PBXTargetDependency */, + ); + name = "PVYabause-tvOS"; + productName = PVReicast; + productReference = B3447EE6218BEDD200557ACE /* PVYabause.framework */; + productType = "com.apple.product-type.framework"; + }; + B3447EE8218BEE3F00557ACE /* yabause-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "yabause-tvOS" */; + buildPhases = ( + B3447EE9218BEE3F00557ACE /* Sources */, + B3447F8C218BEE3F00557ACE /* Frameworks */, + B3447F8D218BEE3F00557ACE /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "yabause-tvOS"; + productName = reicast; + productReference = B3447F91218BEE3F00557ACE /* libyabause.a */; + productType = "com.apple.product-type.library.static"; + }; + B39768ED2859E18B00558958 /* yabause-libretro-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B39768F32859E18B00558958 /* Build configuration list for PBXNativeTarget "yabause-libretro-tvOS" */; + buildPhases = ( + B39768EE2859E18B00558958 /* Sources */, + B39768F12859E18B00558958 /* Frameworks */, + B39768F22859E18B00558958 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "yabause-libretro-tvOS"; + productName = reicast; + productReference = B39768F72859E18B00558958 /* libyabause-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVYabause-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVYabause-iOS" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = "PVYabause-iOS"; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVYabause.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVYabause" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + English, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B3EB9F9B2872965000EAEB37 /* Products */; + ProjectRef = B3EB9F9A2872965000EAEB37 /* Yabause.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVYabause-iOS */, + B3447EC0218BEDD200557ACE /* PVYabause-tvOS */, + B3344B522859E088006E6B3A /* yabause-libretro-iOS */, + B39768ED2859E18B00558958 /* yabause-libretro-tvOS */, + B30178D2207C901D0051B93D /* yabause-iOS */, + B3447EE8218BEE3F00557ACE /* yabause-tvOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + B3EBA0F72872965100EAEB37 /* gen68k */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = gen68k; + remoteRef = B3EBA0F62872965100EAEB37 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B3EBA0F92872965100EAEB37 /* Yabause.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Yabause.app; + remoteRef = B3EBA0F82872965100EAEB37 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + B3447EDF218BEDD200557ACE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CC2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3FF63E02873E3AA00829C14 /* scsp.c in Sources */, + B3FF63E32873E3AA00829C14 /* sh2int.c in Sources */, + B3FF63E92873E3AA00829C14 /* sh2core.c in Sources */, + B3FF63F92873E3BA00829C14 /* m68kcore.c in Sources */, + B3FF63CE2873E37000829C14 /* cs2.c in Sources */, + B3FF63D02873E37000829C14 /* debug.c in Sources */, + B3FF63DF2873E3AA00829C14 /* smpc.c in Sources */, + B3FF63D32873E37000829C14 /* memory.c in Sources */, + B3FF63CF2873E37000829C14 /* cdbase.c in Sources */, + B3FF63CD2873E37000829C14 /* bios.c in Sources */, + B3FF63CC2873E37000829C14 /* m68kd.c in Sources */, + B3FF63E12873E3AA00829C14 /* yabause.c in Sources */, + B3FF63D12873E37000829C14 /* cheat.c in Sources */, + B3FF63E22873E3AA00829C14 /* sh2d.c in Sources */, + B3FF63DE2873E3AA00829C14 /* vdp2.c in Sources */, + B3FF63E72873E3AA00829C14 /* scu.c in Sources */, + B3FF63F82873E3BA00829C14 /* coffelf.c in Sources */, + B3FF63E62873E3AA00829C14 /* profile.c in Sources */, + B3FF63D22873E37000829C14 /* cs0.c in Sources */, + B3FF63CA2873E37000829C14 /* error.c in Sources */, + B3FF63CB2873E37000829C14 /* cs1.c in Sources */, + B3FF63EA2873E3AA00829C14 /* peripheral.c in Sources */, + B3FF63E82873E3AA00829C14 /* netlink.c in Sources */, + B3FF63E52873E3AA00829C14 /* vdp1.c in Sources */, + B3FF63E42873E3AA00829C14 /* sh2idle.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3FF64122873E52700829C14 /* yabause_griffin.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447EC1218BEDD200557ACE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C72872553D00B3F6DA /* PVYabauseCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3447EE9218BEE3F00557ACE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3FF63ED2873E3AA00829C14 /* scsp.c in Sources */, + B3FF63F02873E3AA00829C14 /* sh2int.c in Sources */, + B3FF63F62873E3AA00829C14 /* sh2core.c in Sources */, + B3FF63FB2873E3BA00829C14 /* m68kcore.c in Sources */, + B3FF63D82873E37000829C14 /* cs2.c in Sources */, + B3FF63DA2873E37000829C14 /* debug.c in Sources */, + B3FF63EC2873E3AA00829C14 /* smpc.c in Sources */, + B3FF63DD2873E37000829C14 /* memory.c in Sources */, + B3FF63D92873E37000829C14 /* cdbase.c in Sources */, + B3FF63D72873E37000829C14 /* bios.c in Sources */, + B3FF63D62873E37000829C14 /* m68kd.c in Sources */, + B3FF63EE2873E3AA00829C14 /* yabause.c in Sources */, + B3FF63DB2873E37000829C14 /* cheat.c in Sources */, + B3FF63EF2873E3AA00829C14 /* sh2d.c in Sources */, + B3FF63EB2873E3AA00829C14 /* vdp2.c in Sources */, + B3FF63F42873E3AA00829C14 /* scu.c in Sources */, + B3FF63FA2873E3BA00829C14 /* coffelf.c in Sources */, + B3FF63F32873E3AA00829C14 /* profile.c in Sources */, + B3FF63DC2873E37000829C14 /* cs0.c in Sources */, + B3FF63D42873E37000829C14 /* error.c in Sources */, + B3FF63D52873E37000829C14 /* cs1.c in Sources */, + B3FF63F72873E3AA00829C14 /* peripheral.c in Sources */, + B3FF63F52873E3AA00829C14 /* netlink.c in Sources */, + B3FF63F22873E3AA00829C14 /* vdp1.c in Sources */, + B3FF63F12873E3AA00829C14 /* sh2idle.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B39768EE2859E18B00558958 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3FF64132873E52700829C14 /* yabause_griffin.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVYabauseCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* yabause-libretro-iOS */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; + B39768FD2859E23A00558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B39768ED2859E18B00558958 /* yabause-libretro-tvOS */; + targetProxy = B39768FC2859E23A00558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B3EB9F952872965000EAEB37 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B3EB9F962872965000EAEB37 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B3EB9F972872965000EAEB37 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + B3EB9F982872965000EAEB37 /* English */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = yabause; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = yabause; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/yabause/yabause/src/libretro/libretro-common/include\"", + "\"$(SRCROOT)/yabause/yabause/src/libretro\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + INFOPLIST_FILE = "$(SRCROOT)/PVYabause/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVYabause"; + PRODUCT_NAME = PVYabause; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5032191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + INFOPLIST_FILE = "$(SRCROOT)/PVYabause/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVYabause"; + PRODUCT_NAME = PVYabause; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = yabause; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5052191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = yabause; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "yabause-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "yabause-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "yabause-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3447EE4218BEDD200557ACE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + INFOPLIST_FILE = "$(SRCROOT)/PVYabause/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVYabause"; + PRODUCT_NAME = PVYabause; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B3447EE5218BEDD200557ACE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + INFOPLIST_FILE = "$(SRCROOT)/PVYabause/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVYabause"; + PRODUCT_NAME = PVYabause; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Release; + }; + B3447F8F218BEE3F00557ACE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = yabause; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B3447F90218BEE3F00557ACE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = yabause; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Release; + }; + B39768F42859E18B00558958 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "yabause-libretro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Debug; + }; + B39768F52859E18B00558958 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "yabause-libretro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Release; + }; + B39768F62859E18B00558958 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "yabause-libretro"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + TARGETED_DEVICE_FAMILY = 3; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/yabause/yabause/src/libretro/libretro-common/include\"", + "\"$(SRCROOT)/yabause/yabause/src/libretro\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/yabause/yabause/src/libretro/libretro-common/include\"", + "\"$(SRCROOT)/yabause/yabause/src/libretro\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + INFOPLIST_FILE = "$(SRCROOT)/PVYabause/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVYabause"; + PRODUCT_NAME = PVYabause; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + INFOPLIST_FILE = "$(SRCROOT)/PVYabause/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVYabause"; + PRODUCT_NAME = PVYabause; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "yabause-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "yabause-libretro-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3447EE3218BEDD200557ACE /* Build configuration list for PBXNativeTarget "PVYabause-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3447EE4218BEDD200557ACE /* Debug */, + B3447EE5218BEDD200557ACE /* Release */, + B324C5032191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3447F8E218BEE3F00557ACE /* Build configuration list for PBXNativeTarget "yabause-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3447F8F218BEE3F00557ACE /* Debug */, + B3447F90218BEE3F00557ACE /* Release */, + B324C5052191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B39768F32859E18B00558958 /* Build configuration list for PBXNativeTarget "yabause-libretro-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B39768F42859E18B00558958 /* Debug */, + B39768F52859E18B00558958 /* Release */, + B39768F62859E18B00558958 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVYabause" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVYabause-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/Yabause/PVYabause.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/Yabause/PVYabause.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/Yabause/PVYabause.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/Yabause/PVYabause.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/Yabause/PVYabause.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/Yabause/PVYabause.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/Yabause/PVYabause.xcodeproj/xcshareddata/xcschemes/PVYabause.xcscheme b/Cores/Yabause/PVYabause.xcodeproj/xcshareddata/xcschemes/PVYabause.xcscheme new file mode 100644 index 0000000000..047406bb47 --- /dev/null +++ b/Cores/Yabause/PVYabause.xcodeproj/xcshareddata/xcschemes/PVYabause.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/Yabause/PVYabause/Core.plist b/Cores/Yabause/PVYabause/Core.plist new file mode 100644 index 0000000000..33b8c1cd70 --- /dev/null +++ b/Cores/Yabause/PVYabause/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.Yabause + PVPrincipleClass + PVYabauseCore + PVSupportedSystems + + com.provenance.saturn + + PVProjectName + Yabause + PVProjectURL + https://yabause.org + PVProjectVersion + 0 + + diff --git a/Cores/Yabause/PVYabause/Info.plist b/Cores/Yabause/PVYabause/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/Yabause/PVYabause/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/Yabause/PVYabause/PVYabause.h b/Cores/Yabause/PVYabause/PVYabause.h new file mode 100644 index 0000000000..8f7250e6e6 --- /dev/null +++ b/Cores/Yabause/PVYabause/PVYabause.h @@ -0,0 +1,18 @@ +// +// PVYabause.h +// PVYabause +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVYabause. +FOUNDATION_EXPORT double PVYabauseVersionNumber; + +//! Project version string for PVYabause. +FOUNDATION_EXPORT const unsigned char PVYabauseVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/Yabause/PVYabauseCore/PVYabauseCore.h b/Cores/Yabause/PVYabauseCore/PVYabauseCore.h new file mode 100644 index 0000000000..66f77b9fc7 --- /dev/null +++ b/Cores/Yabause/PVYabauseCore/PVYabauseCore.h @@ -0,0 +1,43 @@ +// +// PVYabauseCore.h +// PVYabause +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVYabauseCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/Yabause/PVYabauseCore/PVYabauseCore.mm b/Cores/Yabause/PVYabauseCore/PVYabauseCore.mm new file mode 100644 index 0000000000..7e56e51e18 --- /dev/null +++ b/Cores/Yabause/PVYabauseCore/PVYabauseCore.mm @@ -0,0 +1,152 @@ +// +// PVYabauseCore.m +// PVYabause +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVYabauseCore.h" +#include +//#import "PVYabauseCore+Controls.h" +//#import "PVYabauseCore+Audio.h" +//#import "PVYabauseCore+Video.h" +// +//#import "PVYabauseCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVYabauseCore() { + +} + +@end + +#pragma mark - PVYabauseCore Begin + +@implementation PVYabauseCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 13.63; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1440, 1080); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + return GL_RGB565; +} + +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/Yabause/yabause b/Cores/Yabause/yabause new file mode 160000 index 0000000000..61b6ea4db9 --- /dev/null +++ b/Cores/Yabause/yabause @@ -0,0 +1 @@ +Subproject commit 61b6ea4db991ff65a0b80ad9a3f68c24ab389543 diff --git a/Cores/blueMSX/BuildFlags.xcconfig b/Cores/blueMSX/BuildFlags.xcconfig new file mode 100644 index 0000000000..f01c518c73 --- /dev/null +++ b/Cores/blueMSX/BuildFlags.xcconfig @@ -0,0 +1,26 @@ +// +// BuildFlags.xcconfig +// PVblueMSX +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/blueMSX/PVblueMSX-Prefix.pch b/Cores/blueMSX/PVblueMSX-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/blueMSX/PVblueMSX-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/blueMSX/PVblueMSX.xcodeproj/project.pbxproj b/Cores/blueMSX/PVblueMSX.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..76ff2ead2b --- /dev/null +++ b/Cores/blueMSX/PVblueMSX.xcodeproj/project.pbxproj @@ -0,0 +1,4609 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B3510962289665CD00FA401F /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B35104CA2896659C00FA401F /* libretro.c */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVblueMSXCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVblueMSXCore.mm */; }; + B37022C92872554300B3F6DA /* PVblueMSXCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVblueMSXCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVblueMSX.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVblueMSX.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libblueMSX-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libblueMSX-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3EBB1FD2872B1A000EAEB37 /* libblueMSX.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libblueMSX.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libblueMSX.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libblueMSX.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libblueMSX-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libblueMSX-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35104CA2896659C00FA401F /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B35104CB2896659C00FA401F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B35104CC2896659C00FA401F /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B35104CD2896659C00FA401F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B35104CE2896659C00FA401F /* Makefile.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.libretro; sourceTree = ""; }; + B35104CF2896659C00FA401F /* changes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = changes.txt; sourceTree = ""; }; + B35104D32896659C00FA401F /* segadb.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = segadb.xml; sourceTree = ""; }; + B35104D42896659C00FA401F /* msxsysromdb.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = msxsysromdb.xml; sourceTree = ""; }; + B35104D52896659C00FA401F /* msxcaswavdb.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = msxcaswavdb.xml; sourceTree = ""; }; + B35104D62896659C00FA401F /* colecodb.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = colecodb.xml; sourceTree = ""; }; + B35104D72896659C00FA401F /* svidb.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = svidb.xml; sourceTree = ""; }; + B35104D82896659C00FA401F /* msxromdb.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = msxromdb.xml; sourceTree = ""; }; + B35104DB2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104DD2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104DF2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104E12896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104E32896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104E52896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104E72896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104E92896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104EB2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104ED2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104EF2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104F12896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104F32896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104F52896659C00FA401F /* cbios.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = cbios.txt; sourceTree = ""; }; + B35104F62896659C00FA401F /* cbios_logo_msx1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = cbios_logo_msx1.rom; sourceTree = ""; }; + B35104F72896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104F82896659C00FA401F /* cbios_main_msx1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = cbios_main_msx1.rom; sourceTree = ""; }; + B35104FA2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104FC2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35104FE2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105002896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105022896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105042896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105062896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105082896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351050A2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351050C2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351050E2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105102896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105122896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105142896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105162896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105182896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351051A2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351051C2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351051E2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105202896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105222896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105242896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105252896659C00FA401F /* pesadelo.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = pesadelo.rom; sourceTree = ""; }; + B35105272896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105292896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351052B2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351052D2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351052F2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105312896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105332896659C00FA401F /* cbios_main_msx2+.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "cbios_main_msx2+.rom"; sourceTree = ""; }; + B35105342896659C00FA401F /* cbios_sub.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = cbios_sub.rom; sourceTree = ""; }; + B35105352896659C00FA401F /* cbios.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = cbios.txt; sourceTree = ""; }; + B35105362896659C00FA401F /* cbios_music.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = cbios_music.rom; sourceTree = ""; }; + B35105372896659C00FA401F /* cbios_logo_msx2+.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "cbios_logo_msx2+.rom"; sourceTree = ""; }; + B35105382896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351053A2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351053C2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351053E2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105402896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105422896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105442896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105462896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105482896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351054A2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351054C2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351054E2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105502896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105522896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105542896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105562896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105582896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351055A2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351055C2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351055E2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105602896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105622896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105642896659C00FA401F /* MSX2SP.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2SP.rom; sourceTree = ""; }; + B35105652896659C00FA401F /* MSXG.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXG.rom; sourceTree = ""; }; + B35105662896659C00FA401F /* MSX2KREXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2KREXT.rom; sourceTree = ""; }; + B35105672896659C00FA401F /* NATIONALDISK.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = NATIONALDISK.rom; sourceTree = ""; }; + B35105682896659C00FA401F /* KANJI.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = KANJI.rom; sourceTree = ""; }; + B35105692896659C00FA401F /* MSX.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX.rom; sourceTree = ""; }; + B351056A2896659C00FA401F /* MSX2FR.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2FR.rom; sourceTree = ""; }; + B351056B2896659C00FA401F /* FMPAC.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = FMPAC.rom; sourceTree = ""; }; + B351056C2896659C00FA401F /* MSX2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2.rom; sourceTree = ""; }; + B351056D2896659C00FA401F /* MSXR.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXR.rom; sourceTree = ""; }; + B351056E2896659C00FA401F /* MSX2BREXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2BREXT.rom; sourceTree = ""; }; + B351056F2896659C00FA401F /* MOONSOUND.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MOONSOUND.rom; sourceTree = ""; }; + B35105702896659C00FA401F /* MSX2SE.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2SE.rom; sourceTree = ""; }; + B35105712896659C00FA401F /* HANGUL.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = HANGUL.rom; sourceTree = ""; }; + B35105722896659C00FA401F /* nowindDos1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = nowindDos1.rom; sourceTree = ""; }; + B35105732896659C00FA401F /* MSXBR.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXBR.rom; sourceTree = ""; }; + B35105742896659C00FA401F /* SUNRISEIDE.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = SUNRISEIDE.rom; sourceTree = ""; }; + B35105752896659C00FA401F /* MSX2R2.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2R2.ROM; sourceTree = ""; }; + B35105762896659C00FA401F /* MSXTREXT.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXTREXT.ROM; sourceTree = ""; }; + B35105772896659C00FA401F /* SWP.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = SWP.rom; sourceTree = ""; }; + B35105782896659C00FA401F /* MSXDOS23.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXDOS23.ROM; sourceTree = ""; }; + B35105792896659C00FA401F /* nowindDos2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = nowindDos2.rom; sourceTree = ""; }; + B351057A2896659C00FA401F /* GCVMX80.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = GCVMX80.ROM; sourceTree = ""; }; + B351057B2896659C00FA401F /* MSX2HAN.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2HAN.rom; sourceTree = ""; }; + B351057C2896659C00FA401F /* MSX2KR.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2KR.rom; sourceTree = ""; }; + B351057D2896659C00FA401F /* MSX2G.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2G.rom; sourceTree = ""; }; + B351057E2896659C00FA401F /* MSX2P.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2P.rom; sourceTree = ""; }; + B351057F2896659C00FA401F /* MSX2PEXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2PEXT.rom; sourceTree = ""; }; + B35105802896659C00FA401F /* Shared.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Shared.txt; sourceTree = ""; }; + B35105812896659C00FA401F /* MSX2AREXT.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2AREXT.ROM; sourceTree = ""; }; + B35105822896659C00FA401F /* ARAB1.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = ARAB1.ROM; sourceTree = ""; }; + B35105832896659C00FA401F /* MSX2R.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2R.rom; sourceTree = ""; }; + B35105842896659C00FA401F /* PANASONICDISK.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = PANASONICDISK.rom; sourceTree = ""; }; + B35105852896659C00FA401F /* MSX2REXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2REXT.rom; sourceTree = ""; }; + B35105862896659C00FA401F /* MSX2EXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2EXT.rom; sourceTree = ""; }; + B35105872896659C00FA401F /* MSXTROPT.ROM */ = {isa = PBXFileReference; lastKnownFileType = text; path = MSXTROPT.ROM; sourceTree = ""; }; + B35105882896659C00FA401F /* MSX2JEXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2JEXT.rom; sourceTree = ""; }; + B35105892896659C00FA401F /* BEERIDE.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = BEERIDE.ROM; sourceTree = ""; }; + B351058A2896659C00FA401F /* MSX2AR.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2AR.ROM; sourceTree = ""; }; + B351058B2896659C00FA401F /* MSX2PMUS.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2PMUS.rom; sourceTree = ""; }; + B351058C2896659C00FA401F /* MSXR2.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXR2.ROM; sourceTree = ""; }; + B351058D2896659C00FA401F /* PHILIPSDISK.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = PHILIPSDISK.rom; sourceTree = ""; }; + B351058E2896659C00FA401F /* MSX2BR.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2BR.rom; sourceTree = ""; }; + B351058F2896659C00FA401F /* MSXKR.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXKR.rom; sourceTree = ""; }; + B35105902896659C00FA401F /* MSXKANJI.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXKANJI.rom; sourceTree = ""; }; + B35105912896659C00FA401F /* NOVAXIS.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = NOVAXIS.rom; sourceTree = ""; }; + B35105922896659C00FA401F /* MSXSP.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXSP.rom; sourceTree = ""; }; + B35105932896659C00FA401F /* ARABIC.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = ARABIC.rom; sourceTree = ""; }; + B35105942896659C00FA401F /* MSXSE.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXSE.ROM; sourceTree = ""; }; + B35105952896659C00FA401F /* MSXFR.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXFR.rom; sourceTree = ""; }; + B35105962896659C00FA401F /* MSX2J.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2J.rom; sourceTree = ""; }; + B35105972896659C00FA401F /* XBASIC2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = XBASIC2.rom; sourceTree = ""; }; + B35105982896659C00FA401F /* PAINT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = PAINT.rom; sourceTree = ""; }; + B35105992896659C00FA401F /* MSXHAN.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXHAN.rom; sourceTree = ""; }; + B351059A2896659C00FA401F /* RS232.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = RS232.ROM; sourceTree = ""; }; + B351059B2896659C00FA401F /* MSXAR.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXAR.ROM; sourceTree = ""; }; + B351059C2896659C00FA401F /* MICROSOLDISK.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MICROSOLDISK.ROM; sourceTree = ""; }; + B351059D2896659C00FA401F /* MSX2FREXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2FREXT.rom; sourceTree = ""; }; + B351059E2896659C00FA401F /* MSXTR.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXTR.ROM; sourceTree = ""; }; + B351059F2896659C00FA401F /* MSX2GEXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2GEXT.rom; sourceTree = ""; }; + B35105A02896659C00FA401F /* MSX2SPEXT.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2SPEXT.rom; sourceTree = ""; }; + B35105A12896659C00FA401F /* MSXTRMUS.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXTRMUS.ROM; sourceTree = ""; }; + B35105A22896659C00FA401F /* MSXJ.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXJ.rom; sourceTree = ""; }; + B35105A42896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105A62896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105A82896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105AA2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105AC2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105AE2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105B02896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105B22896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105B42896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105B62896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105B82896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105BA2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105BC2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105BE2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105C02896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105C22896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105C42896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105C62896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105C82896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105CA2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105CC2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105CE2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105D02896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105D22896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105D42896659C00FA401F /* cbios_sub.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = cbios_sub.rom; sourceTree = ""; }; + B35105D52896659C00FA401F /* cbios.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = cbios.txt; sourceTree = ""; }; + B35105D62896659C00FA401F /* cbios_logo_msx2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = cbios_logo_msx2.rom; sourceTree = ""; }; + B35105D72896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105D82896659C00FA401F /* cbios_main_msx2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = cbios_main_msx2.rom; sourceTree = ""; }; + B35105DA2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105DC2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105DE2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105E02896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105E22896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105E42896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105E62896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105E72896659C00FA401F /* svi328a.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi328a.rom; sourceTree = ""; }; + B35105E82896659C00FA401F /* svi806se.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi806se.rom; sourceTree = ""; }; + B35105EA2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105EC2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105EE2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105F02896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105F22896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105F42896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105F62896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105F82896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105FA2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105FC2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35105FE2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106002896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106022896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106042896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106062896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106072896659C00FA401F /* svi328a.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi328a.rom; sourceTree = ""; }; + B35106082896659C00FA401F /* svi806.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi806.rom; sourceTree = ""; }; + B351060A2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351060C2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351060E2896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106102896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106122896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106142896659C00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106152896659C00FA401F /* svi328a.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi328a.rom; sourceTree = ""; }; + B35106162896659C00FA401F /* svi806.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi806.rom; sourceTree = ""; }; + B35106182896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351061A2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351061C2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351061E2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106202896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106222896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106242896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106262896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106282896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351062A2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351062C2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351062E2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106302896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106322896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106342896659D00FA401F /* KANJI.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = KANJI.rom; sourceTree = ""; }; + B35106352896659D00FA401F /* Msx2pexte.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = Msx2pexte.rom; sourceTree = ""; }; + B35106362896659D00FA401F /* PANASONICDISK.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = PANASONICDISK.rom; sourceTree = ""; }; + B35106372896659D00FA401F /* MSX2PMUS.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2PMUS.rom; sourceTree = ""; }; + B35106382896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106392896659D00FA401F /* MSXKANJI.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXKANJI.rom; sourceTree = ""; }; + B351063A2896659D00FA401F /* XBASIC2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = XBASIC2.rom; sourceTree = ""; }; + B351063B2896659D00FA401F /* Msx2pe.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = Msx2pe.rom; sourceTree = ""; }; + B351063D2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351063F2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106412896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106432896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106452896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106472896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106492896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351064B2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351064D2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351064F2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106512896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106522896659D00FA401F /* sf7000.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = sf7000.rom; sourceTree = ""; }; + B35106542896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106562896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106582896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351065A2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351065C2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351065E2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106602896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106622896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106642896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106662896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106682896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351066A2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351066C2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351066E2896659D00FA401F /* czz50-2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "czz50-2.rom"; sourceTree = ""; }; + B351066F2896659D00FA401F /* czz50-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "czz50-1.rom"; sourceTree = ""; }; + B35106702896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106722896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106742896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106762896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106782896659D00FA401F /* SVI603.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = SVI603.ROM; sourceTree = ""; }; + B35106792896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351067B2896659D00FA401F /* coleco.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = coleco.rom; sourceTree = ""; }; + B351067C2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351067E2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106802896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106822896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106842896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106862896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106882896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351068A2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351068C2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351068E2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106902896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106922896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106942896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106952896659D00FA401F /* svi318.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi318.rom; sourceTree = ""; }; + B35106972896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106992896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351069B2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351069D2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B351069F2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106A12896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106A32896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106A52896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106A72896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106A92896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106AB2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106AD2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106AF2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106B12896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106B32896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106B52896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106B72896659D00FA401F /* svi328.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = svi328.rom; sourceTree = ""; }; + B35106B82896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106BA2896659D00FA401F /* coleco.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = coleco.rom; sourceTree = ""; }; + B35106BB2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106BD2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106BF2896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106C12896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106C32896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106C52896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106C72896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106C92896659D00FA401F /* config.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.ini; sourceTree = ""; }; + B35106CA2896659D00FA401F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B35106CB2896659D00FA401F /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B35106CE2896659D00FA401F /* compilation.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = compilation.yml; sourceTree = ""; }; + B35106D12896659D00FA401F /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B35106D22896659D00FA401F /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B35106D42896659D00FA401F /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B35106D72896659D00FA401F /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B35106D92896659D00FA401F /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B35106DA2896659D00FA401F /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B35106DB2896659D00FA401F /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B35106DC2896659D00FA401F /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B35106DD2896659D00FA401F /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B35106DE2896659D00FA401F /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B35106DF2896659D00FA401F /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B35106E02896659D00FA401F /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B35106E12896659D00FA401F /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B35106E42896659D00FA401F /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B35106E52896659D00FA401F /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B35106E62896659D00FA401F /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B35106E72896659D00FA401F /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B35106E82896659D00FA401F /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B35106E92896659D00FA401F /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B35106EA2896659D00FA401F /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B35106EB2896659D00FA401F /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B35106EC2896659D00FA401F /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B35106ED2896659D00FA401F /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B35106EE2896659D00FA401F /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B35106EF2896659D00FA401F /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B35106F02896659D00FA401F /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B35106F12896659D00FA401F /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B35106F22896659D00FA401F /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B35106F32896659D00FA401F /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B35106F42896659D00FA401F /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B35106F52896659D00FA401F /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B35106F62896659D00FA401F /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B35106F72896659D00FA401F /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B35106F82896659D00FA401F /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B35106F92896659D00FA401F /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B35106FA2896659D00FA401F /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B35106FB2896659D00FA401F /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B35106FC2896659D00FA401F /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B35106FD2896659D00FA401F /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B35106FE2896659D00FA401F /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B35106FF2896659D00FA401F /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B35107002896659D00FA401F /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B35107012896659D00FA401F /* license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license.txt; sourceTree = ""; }; + B35107032896659D00FA401F /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B35107042896659D00FA401F /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B35107052896659D00FA401F /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B35107062896659D00FA401F /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; + B35107092896659D00FA401F /* Y8950.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Y8950.c; sourceTree = ""; }; + B351070A2896659D00FA401F /* YM2413.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YM2413.h; sourceTree = ""; }; + B351070B2896659D00FA401F /* OpenMsxY8950Adpcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenMsxY8950Adpcm.h; sourceTree = ""; }; + B351070C2896659D00FA401F /* Fmopl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Fmopl.c; sourceTree = ""; }; + B351070D2896659D00FA401F /* OpenMsxYMF278.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenMsxYMF278.h; sourceTree = ""; }; + B351070E2896659D00FA401F /* DAC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DAC.h; sourceTree = ""; }; + B351070F2896659D00FA401F /* SN76489.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SN76489.c; sourceTree = ""; }; + B35107102896659D00FA401F /* KeyClick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = KeyClick.c; sourceTree = ""; }; + B35107112896659D00FA401F /* MameVLM5030.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MameVLM5030.h; sourceTree = ""; }; + B35107122896659D00FA401F /* OpenMsxYMF262.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenMsxYMF262.h; sourceTree = ""; }; + B35107132896659D00FA401F /* Moonsound.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Moonsound.cpp; sourceTree = ""; }; + B35107142896659D00FA401F /* VLM5030VoiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLM5030VoiceData.h; sourceTree = ""; }; + B35107152896659D00FA401F /* AudioMixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioMixer.h; sourceTree = ""; }; + B35107162896659D00FA401F /* OpenMsxYMF278.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenMsxYMF278.cpp; sourceTree = ""; }; + B35107172896659D00FA401F /* OpenMsxY8950.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenMsxY8950.h; sourceTree = ""; }; + B35107182896659D00FA401F /* ym2151.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ym2151.c; sourceTree = ""; }; + B35107192896659D00FA401F /* AY8910.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AY8910.h; sourceTree = ""; }; + B351071A2896659D00FA401F /* YM2413.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = YM2413.cpp; sourceTree = ""; }; + B351071B2896659D00FA401F /* VLM5030.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VLM5030.c; sourceTree = ""; }; + B351071C2896659D00FA401F /* MameYM2151.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MameYM2151.h; sourceTree = ""; }; + B351071D2896659D00FA401F /* OpenMsxY8950.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenMsxY8950.cpp; sourceTree = ""; }; + B351071E2896659D00FA401F /* SCC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SCC.c; sourceTree = ""; }; + B351071F2896659D00FA401F /* MsxPsg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxPsg.h; sourceTree = ""; }; + B35107202896659D00FA401F /* OpenMsxYM2413_2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenMsxYM2413_2.cpp; sourceTree = ""; }; + B35107212896659D00FA401F /* Ymdeltat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ymdeltat.h; sourceTree = ""; }; + B35107222896659D00FA401F /* SamplePlayer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SamplePlayer.c; sourceTree = ""; }; + B35107232896659D00FA401F /* DAC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = DAC.c; sourceTree = ""; }; + B35107242896659D00FA401F /* SN76489.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SN76489.h; sourceTree = ""; }; + B35107252896659D00FA401F /* OpenMsxY8950Adpcm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenMsxY8950Adpcm.cpp; sourceTree = ""; }; + B35107262896659D00FA401F /* Fmopl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fmopl.h; sourceTree = ""; }; + B35107272896659D00FA401F /* Y8950.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Y8950.h; sourceTree = ""; }; + B35107282896659D00FA401F /* AudioMixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = AudioMixer.c; sourceTree = ""; }; + B35107292896659D00FA401F /* ym2151.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym2151.h; sourceTree = ""; }; + B351072A2896659D00FA401F /* MameVLM5030.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MameVLM5030.c; sourceTree = ""; }; + B351072B2896659D00FA401F /* MsxAudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxAudio.h; sourceTree = ""; }; + B351072C2896659D00FA401F /* KeyClick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyClick.h; sourceTree = ""; }; + B351072D2896659D00FA401F /* MsxPsg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxPsg.c; sourceTree = ""; }; + B351072E2896659D00FA401F /* SCC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCC.h; sourceTree = ""; }; + B351072F2896659D00FA401F /* MameYM2151.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MameYM2151.c; sourceTree = ""; }; + B35107302896659D00FA401F /* OpenMsxYM2413.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenMsxYM2413.cpp; sourceTree = ""; }; + B35107312896659D00FA401F /* OpenMsxYMF262.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenMsxYMF262.cpp; sourceTree = ""; }; + B35107322896659D00FA401F /* VLM5030.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLM5030.h; sourceTree = ""; }; + B35107332896659D00FA401F /* OpenMsxYM2413.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenMsxYM2413.h; sourceTree = ""; }; + B35107342896659D00FA401F /* AY8910.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = AY8910.c; sourceTree = ""; }; + B35107352896659D00FA401F /* Ymdeltat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Ymdeltat.c; sourceTree = ""; }; + B35107362896659D00FA401F /* SamplePlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SamplePlayer.h; sourceTree = ""; }; + B35107372896659D00FA401F /* Moonsound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Moonsound.h; sourceTree = ""; }; + B35107382896659D00FA401F /* MsxAudio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MsxAudio.cpp; sourceTree = ""; }; + B35107392896659D00FA401F /* OpenMsxYM2413_2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenMsxYM2413_2.h; sourceTree = ""; }; + B351073B2896659D00FA401F /* tinyxml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tinyxml.h; sourceTree = ""; }; + B351073C2896659D00FA401F /* TinyStr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TinyStr.h; sourceTree = ""; }; + B351073D2896659D00FA401F /* tinystr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = ""; }; + B351073E2896659D00FA401F /* tinyxmlparser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlparser.cpp; sourceTree = ""; }; + B351073F2896659D00FA401F /* tinyxmlerror.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlerror.cpp; sourceTree = ""; }; + B35107402896659D00FA401F /* tinyxml.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = ""; }; + B35107422896659D00FA401F /* romMapperKonamiSynth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKonamiSynth.h; sourceTree = ""; }; + B35107432896659D00FA401F /* romMapperCvMegaCart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperCvMegaCart.h; sourceTree = ""; }; + B35107442896659D00FA401F /* romMapperOpcodeBios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperOpcodeBios.h; sourceTree = ""; }; + B35107452896659D00FA401F /* romMapperOpcodeSlotManager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperOpcodeSlotManager.c; sourceTree = ""; }; + B35107462896659D00FA401F /* RomLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RomLoader.h; sourceTree = ""; }; + B35107472896659D00FA401F /* romMapperTurboRTimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperTurboRTimer.c; sourceTree = ""; }; + B35107482896659D00FA401F /* romMapperFMPAK.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperFMPAK.c; sourceTree = ""; }; + B35107492896659D00FA401F /* AmdFlash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AmdFlash.h; sourceTree = ""; }; + B351074A2896659D00FA401F /* romMapperF4device.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperF4device.h; sourceTree = ""; }; + B351074B2896659D00FA401F /* romMapperMuPack.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMuPack.c; sourceTree = ""; }; + B351074C2896659D00FA401F /* romMapperSg1000Castle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSg1000Castle.h; sourceTree = ""; }; + B351074D2896659D00FA401F /* romMapperASCII8sram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperASCII8sram.c; sourceTree = ""; }; + B351074E2896659D00FA401F /* ramMapperIo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ramMapperIo.c; sourceTree = ""; }; + B351074F2896659D00FA401F /* romMapperMsxMusic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMsxMusic.h; sourceTree = ""; }; + B35107502896659D00FA401F /* romMapperObsonet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperObsonet.h; sourceTree = ""; }; + B35107512896659D00FA401F /* MegaromCartridge.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MegaromCartridge.c; sourceTree = ""; }; + B35107522896659D00FA401F /* romMapperSCCplus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSCCplus.c; sourceTree = ""; }; + B35107532896659D00FA401F /* romMapperNms1210Rs232.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNms1210Rs232.c; sourceTree = ""; }; + B35107542896659D00FA401F /* sramLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sramLoader.h; sourceTree = ""; }; + B35107552896659D00FA401F /* romMapperJoyrexPsg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperJoyrexPsg.h; sourceTree = ""; }; + B35107562896659D00FA401F /* romMapperHarryFox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperHarryFox.c; sourceTree = ""; }; + B35107572896659D00FA401F /* romMapperArc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperArc.c; sourceTree = ""; }; + B35107582896659D00FA401F /* romMapperFMPAC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperFMPAC.h; sourceTree = ""; }; + B35107592896659D00FA401F /* sramMapperMegaSCSI.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sramMapperMegaSCSI.c; sourceTree = ""; }; + B351075A2896659D00FA401F /* romMapperKorean90.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKorean90.c; sourceTree = ""; }; + B351075B2896659D00FA401F /* romMapperASCII8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperASCII8.h; sourceTree = ""; }; + B351075C2896659D00FA401F /* romMapperDooly.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperDooly.h; sourceTree = ""; }; + B351075D2896659D00FA401F /* romMapperMatraINK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMatraINK.h; sourceTree = ""; }; + B351075E2896659D00FA401F /* romMapperKanji.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKanji.h; sourceTree = ""; }; + B351075F2896659D00FA401F /* romMapperPanasonic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperPanasonic.c; sourceTree = ""; }; + B35107602896659D00FA401F /* romMapperBasic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperBasic.c; sourceTree = ""; }; + B35107612896659D00FA401F /* romMapperMsxDos2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMsxDos2.h; sourceTree = ""; }; + B35107622896659D00FA401F /* romMapperMegaFlashRomScc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMegaFlashRomScc.h; sourceTree = ""; }; + B35107632896659D00FA401F /* romMapperGameReader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperGameReader.c; sourceTree = ""; }; + B35107642896659D00FA401F /* romMapperMsxRs232.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMsxRs232.h; sourceTree = ""; }; + B35107652896659D00FA401F /* romMapperCasette.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperCasette.h; sourceTree = ""; }; + B35107662896659D00FA401F /* romMapperKonamiKeyboardMaster.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKonamiKeyboardMaster.h; sourceTree = ""; }; + B35107672896659D00FA401F /* romMapperASCII16sram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperASCII16sram.c; sourceTree = ""; }; + B35107682896659D00FA401F /* romMapperKorean80.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKorean80.c; sourceTree = ""; }; + B35107692896659D00FA401F /* romMapperActivisionPcb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperActivisionPcb.c; sourceTree = ""; }; + B351076A2896659D00FA401F /* romMapperForteII.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperForteII.c; sourceTree = ""; }; + B351076B2896659D00FA401F /* romMapperGoudaSCSI.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperGoudaSCSI.c; sourceTree = ""; }; + B351076C2896659D00FA401F /* romMapperKonami4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKonami4.c; sourceTree = ""; }; + B351076D2896659D00FA401F /* romMapperMicrosolVmx80.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMicrosolVmx80.c; sourceTree = ""; }; + B351076E2896659D00FA401F /* romMapperLodeRunner.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperLodeRunner.c; sourceTree = ""; }; + B351076F2896659D00FA401F /* romMapperPhilipsFdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperPhilipsFdc.h; sourceTree = ""; }; + B35107702896659D00FA401F /* romMapperOpcodeMegaRam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperOpcodeMegaRam.c; sourceTree = ""; }; + B35107712896659D00FA401F /* ram1kBMirrored.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ram1kBMirrored.c; sourceTree = ""; }; + B35107722896659D00FA401F /* romMapperSvi80Col.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi80Col.c; sourceTree = ""; }; + B35107732896659D00FA401F /* romMapperNoWind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNoWind.c; sourceTree = ""; }; + B35107742896659D00FA401F /* ramMapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ramMapper.h; sourceTree = ""; }; + B35107752896659D00FA401F /* romMapperFmDas.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperFmDas.c; sourceTree = ""; }; + B35107762896659E00FA401F /* romMapperKanji12.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKanji12.h; sourceTree = ""; }; + B35107772896659E00FA401F /* romMapperA1FM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperA1FM.h; sourceTree = ""; }; + B35107782896659E00FA401F /* romMapperSf7000Ipl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSf7000Ipl.c; sourceTree = ""; }; + B35107792896659E00FA401F /* romMapperGameMaster2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperGameMaster2.c; sourceTree = ""; }; + B351077A2896659E00FA401F /* AtmelPerom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AtmelPerom.h; sourceTree = ""; }; + B351077B2896659E00FA401F /* IoPort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = IoPort.c; sourceTree = ""; }; + B351077C2896659E00FA401F /* romMapperBunsetu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperBunsetu.h; sourceTree = ""; }; + B351077D2896659E00FA401F /* romMapperMicrosol.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMicrosol.c; sourceTree = ""; }; + B351077E2896659E00FA401F /* romMapperTurboRPcm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperTurboRPcm.c; sourceTree = ""; }; + B351077F2896659E00FA401F /* romMapperHolyQuran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperHolyQuran.c; sourceTree = ""; }; + B35107802896659E00FA401F /* romMapperMegaFlashRomSccPlus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMegaFlashRomSccPlus.h; sourceTree = ""; }; + B35107812896659E00FA401F /* romMapperGIDE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperGIDE.c; sourceTree = ""; }; + B35107822896659E00FA401F /* romMapperRType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperRType.h; sourceTree = ""; }; + B35107832896659E00FA401F /* romMapperKoei.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKoei.h; sourceTree = ""; }; + B35107842896659E00FA401F /* sramMapperEseSCC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sramMapperEseSCC.h; sourceTree = ""; }; + B35107852896659E00FA401F /* romMapperNormal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNormal.c; sourceTree = ""; }; + B35107862896659E00FA401F /* romMapperS1990.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperS1990.h; sourceTree = ""; }; + B35107872896659E00FA401F /* romMapperPAC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperPAC.c; sourceTree = ""; }; + B35107882896659E00FA401F /* MegaSCSIsub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MegaSCSIsub.h; sourceTree = ""; }; + B35107892896659E00FA401F /* romMapperSvi328Fdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi328Fdc.h; sourceTree = ""; }; + B351078A2896659E00FA401F /* romMapperSonyHBIV1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSonyHBIV1.c; sourceTree = ""; }; + B351078B2896659E00FA401F /* romMapperSvi328Prn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi328Prn.h; sourceTree = ""; }; + B351078C2896659E00FA401F /* romMapperSonyHBI55.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSonyHBI55.h; sourceTree = ""; }; + B351078D2896659E00FA401F /* romMapperNationalFdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNationalFdc.h; sourceTree = ""; }; + B351078E2896659E00FA401F /* romMapperMajutsushi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMajutsushi.h; sourceTree = ""; }; + B351078F2896659E00FA401F /* romMapperSegaBasic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSegaBasic.h; sourceTree = ""; }; + B35107902896659E00FA401F /* romMapperSvi707Fdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi707Fdc.c; sourceTree = ""; }; + B35107912896659E00FA401F /* romMapperBeerIDE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperBeerIDE.h; sourceTree = ""; }; + B35107922896659E00FA401F /* romMapperTC8566AF.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperTC8566AF.c; sourceTree = ""; }; + B35107932896659E00FA401F /* romMapperDisk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperDisk.h; sourceTree = ""; }; + B35107942896659E00FA401F /* romMapperKonamiWordPro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKonamiWordPro.h; sourceTree = ""; }; + B35107952896659E00FA401F /* ramNormal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ramNormal.c; sourceTree = ""; }; + B35107962896659E00FA401F /* romMapperDumas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperDumas.h; sourceTree = ""; }; + B35107972896659E00FA401F /* romMapperNoWind.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = romMapperNoWind.cpp; sourceTree = ""; }; + B35107982896659E00FA401F /* romMapperOpcodePsg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperOpcodePsg.h; sourceTree = ""; }; + B35107992896659E00FA401F /* romMapperMegaRAM.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMegaRAM.c; sourceTree = ""; }; + B351079A2896659E00FA401F /* romMapperMsxAudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMsxAudio.h; sourceTree = ""; }; + B351079B2896659E00FA401F /* SlotManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlotManager.h; sourceTree = ""; }; + B351079C2896659E00FA401F /* romMapperPlain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperPlain.h; sourceTree = ""; }; + B351079D2896659E00FA401F /* RomMapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = RomMapper.c; sourceTree = ""; }; + B351079E2896659E00FA401F /* romMapperMsxPrn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMsxPrn.h; sourceTree = ""; }; + B351079F2896659E00FA401F /* romMapperSvi738Fdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi738Fdc.h; sourceTree = ""; }; + B35107A02896659E00FA401F /* romMapperNet.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNet.c; sourceTree = ""; }; + B35107A12896659E00FA401F /* romMapperNational.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNational.h; sourceTree = ""; }; + B35107A22896659E00FA401F /* romMapperA1FMModem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperA1FMModem.c; sourceTree = ""; }; + B35107A32896659E00FA401F /* romMapperStandard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperStandard.h; sourceTree = ""; }; + B35107A42896659E00FA401F /* romMapperASCII16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperASCII16.h; sourceTree = ""; }; + B35107A52896659E00FA401F /* romMapperSg1000RamExpander.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSg1000RamExpander.c; sourceTree = ""; }; + B35107A62896659E00FA401F /* romMapperOpcodeSaveRam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperOpcodeSaveRam.c; sourceTree = ""; }; + B35107A72896659E00FA401F /* romMapperSvi727.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi727.c; sourceTree = ""; }; + B35107A82896659E00FA401F /* romMapperKonami4nf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKonami4nf.h; sourceTree = ""; }; + B35107A92896659E00FA401F /* romMapperKonami5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKonami5.h; sourceTree = ""; }; + B35107AA2896659E00FA401F /* romMapperSfg05.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSfg05.c; sourceTree = ""; }; + B35107AB2896659E00FA401F /* romMapperMoonsound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMoonsound.h; sourceTree = ""; }; + B35107AC2896659E00FA401F /* romMapperKorean126.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKorean126.c; sourceTree = ""; }; + B35107AD2896659E00FA401F /* romMapperPlayBall.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperPlayBall.c; sourceTree = ""; }; + B35107AE2896659E00FA401F /* romMapperSunriseIDE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSunriseIDE.c; sourceTree = ""; }; + B35107AF2896659E00FA401F /* romMapperSg1000.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSg1000.h; sourceTree = ""; }; + B35107B02896659E00FA401F /* romMapperDRAM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperDRAM.h; sourceTree = ""; }; + B35107B12896659E00FA401F /* sramMapperMatsuchita.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sramMapperMatsuchita.c; sourceTree = ""; }; + B35107B22896659E00FA401F /* sramMapperS1985.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sramMapperS1985.c; sourceTree = ""; }; + B35107B32896659E00FA401F /* romMapperHalnote.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperHalnote.c; sourceTree = ""; }; + B35107B42896659E00FA401F /* DeviceManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceManager.h; sourceTree = ""; }; + B35107B52896659E00FA401F /* romMapperOpcodeModule.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperOpcodeModule.c; sourceTree = ""; }; + B35107B62896659E00FA401F /* romMapperASCII16nf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperASCII16nf.c; sourceTree = ""; }; + B35107B72896659E00FA401F /* romMapperSvi328Rs232.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi328Rs232.c; sourceTree = ""; }; + B35107B82896659E00FA401F /* romMapperCrossBlaim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperCrossBlaim.c; sourceTree = ""; }; + B35107B92896659E00FA401F /* romMapperNettouYakyuu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNettouYakyuu.h; sourceTree = ""; }; + B35107BA2896659E00FA401F /* romMapperNms8280VideoDa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNms8280VideoDa.h; sourceTree = ""; }; + B35107BB2896659E00FA401F /* romMapperSvi328RsIDE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi328RsIDE.h; sourceTree = ""; }; + B35107BC2896659E00FA401F /* romMapperPanasonic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperPanasonic.h; sourceTree = ""; }; + B35107BD2896659E00FA401F /* romMapperKanji.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKanji.c; sourceTree = ""; }; + B35107BE2896659E00FA401F /* romMapperMatraINK.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMatraINK.c; sourceTree = ""; }; + B35107BF2896659E00FA401F /* romMapperDooly.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperDooly.c; sourceTree = ""; }; + B35107C02896659E00FA401F /* romMapperJoyrexPsg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperJoyrexPsg.c; sourceTree = ""; }; + B35107C12896659E00FA401F /* sramLoader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sramLoader.c; sourceTree = ""; }; + B35107C22896659E00FA401F /* romMapperHarryFox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperHarryFox.h; sourceTree = ""; }; + B35107C32896659E00FA401F /* romMapperNms1210Rs232.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNms1210Rs232.h; sourceTree = ""; }; + B35107C42896659E00FA401F /* romMapperSCCplus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSCCplus.h; sourceTree = ""; }; + B35107C52896659E00FA401F /* romMapperObsonet.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperObsonet.c; sourceTree = ""; }; + B35107C62896659E00FA401F /* MegaromCartridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MegaromCartridge.h; sourceTree = ""; }; + B35107C72896659E00FA401F /* romMapperASCII8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperASCII8.c; sourceTree = ""; }; + B35107C82896659E00FA401F /* romMapperKorean90.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKorean90.h; sourceTree = ""; }; + B35107C92896659E00FA401F /* sramMapperMegaSCSI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sramMapperMegaSCSI.h; sourceTree = ""; }; + B35107CA2896659E00FA401F /* romMapperFMPAC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperFMPAC.c; sourceTree = ""; }; + B35107CB2896659E00FA401F /* romMapperArc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperArc.h; sourceTree = ""; }; + B35107CC2896659E00FA401F /* romMapperSg1000Castle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSg1000Castle.c; sourceTree = ""; }; + B35107CD2896659E00FA401F /* romMapperMuPack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMuPack.h; sourceTree = ""; }; + B35107CE2896659E00FA401F /* romMapperF4device.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperF4device.c; sourceTree = ""; }; + B35107CF2896659E00FA401F /* ramMapperIo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ramMapperIo.h; sourceTree = ""; }; + B35107D02896659E00FA401F /* romMapperMsxMusic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMsxMusic.c; sourceTree = ""; }; + B35107D12896659E00FA401F /* romMapperASCII8sram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperASCII8sram.h; sourceTree = ""; }; + B35107D22896659E00FA401F /* romMapperOpcodeSlotManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperOpcodeSlotManager.h; sourceTree = ""; }; + B35107D32896659E00FA401F /* romMapperOpcodeBios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperOpcodeBios.c; sourceTree = ""; }; + B35107D42896659E00FA401F /* romMapperCvMegaCart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperCvMegaCart.c; sourceTree = ""; }; + B35107D52896659E00FA401F /* romMapperKonamiSynth.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKonamiSynth.c; sourceTree = ""; }; + B35107D62896659E00FA401F /* AmdFlash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = AmdFlash.c; sourceTree = ""; }; + B35107D72896659E00FA401F /* romMapperTurboRTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperTurboRTimer.h; sourceTree = ""; }; + B35107D82896659E00FA401F /* romMapperFMPAK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperFMPAK.h; sourceTree = ""; }; + B35107D92896659E00FA401F /* RomLoader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = RomLoader.c; sourceTree = ""; }; + B35107DA2896659E00FA401F /* romMapperSf7000Ipl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSf7000Ipl.h; sourceTree = ""; }; + B35107DB2896659E00FA401F /* romMapperA1FM.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperA1FM.c; sourceTree = ""; }; + B35107DC2896659E00FA401F /* PlayballSamples.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlayballSamples.h; sourceTree = ""; }; + B35107DD2896659E00FA401F /* romMapperKanji12.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKanji12.c; sourceTree = ""; }; + B35107DE2896659E00FA401F /* romMapperFmDas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperFmDas.h; sourceTree = ""; }; + B35107DF2896659E00FA401F /* ramMapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ramMapper.c; sourceTree = ""; }; + B35107E02896659E00FA401F /* romMapperNoWind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNoWind.h; sourceTree = ""; }; + B35107E12896659E00FA401F /* romMapperGameMaster2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperGameMaster2.h; sourceTree = ""; }; + B35107E22896659E00FA401F /* ram1kBMirrored.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ram1kBMirrored.h; sourceTree = ""; }; + B35107E32896659E00FA401F /* romMapperOpcodeMegaRam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperOpcodeMegaRam.h; sourceTree = ""; }; + B35107E42896659E00FA401F /* romMapperSvi80Col.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi80Col.h; sourceTree = ""; }; + B35107E52896659E00FA401F /* romMapperGoudaSCSI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperGoudaSCSI.h; sourceTree = ""; }; + B35107E62896659E00FA401F /* romMapperForteII.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperForteII.h; sourceTree = ""; }; + B35107E72896659E00FA401F /* romMapperActivisionPcb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperActivisionPcb.h; sourceTree = ""; }; + B35107E82896659E00FA401F /* romMapperLodeRunner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperLodeRunner.h; sourceTree = ""; }; + B35107E92896659E00FA401F /* romMapperPhilipsFdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperPhilipsFdc.c; sourceTree = ""; }; + B35107EA2896659E00FA401F /* romMapperMicrosolVmx80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMicrosolVmx80.h; sourceTree = ""; }; + B35107EB2896659E00FA401F /* romMapperKonami4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKonami4.h; sourceTree = ""; }; + B35107EC2896659E00FA401F /* romMapperMegaFlashRomScc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMegaFlashRomScc.c; sourceTree = ""; }; + B35107ED2896659E00FA401F /* NettouYakyuuSamples.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NettouYakyuuSamples.h; sourceTree = ""; }; + B35107EE2896659E00FA401F /* romMapperMsxDos2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMsxDos2.c; sourceTree = ""; }; + B35107EF2896659E00FA401F /* romMapperBasic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperBasic.h; sourceTree = ""; }; + B35107F02896659E00FA401F /* romMapperKorean80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKorean80.h; sourceTree = ""; }; + B35107F12896659E00FA401F /* romMapperKonamiKeyboardMaster.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKonamiKeyboardMaster.c; sourceTree = ""; }; + B35107F22896659E00FA401F /* romMapperASCII16sram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperASCII16sram.h; sourceTree = ""; }; + B35107F32896659E00FA401F /* romMapperCasette.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperCasette.c; sourceTree = ""; }; + B35107F42896659E00FA401F /* romMapperMsxRs232.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMsxRs232.c; sourceTree = ""; }; + B35107F52896659E00FA401F /* romMapperGameReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperGameReader.h; sourceTree = ""; }; + B35107F62896659E00FA401F /* romMapperBeerIDE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperBeerIDE.c; sourceTree = ""; }; + B35107F72896659E00FA401F /* romMapperSvi707Fdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi707Fdc.h; sourceTree = ""; }; + B35107F82896659E00FA401F /* romMapperSegaBasic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSegaBasic.c; sourceTree = ""; }; + B35107F92896659E00FA401F /* romMapperMajutsushi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMajutsushi.c; sourceTree = ""; }; + B35107FA2896659E00FA401F /* romMapperOpcodePsg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperOpcodePsg.c; sourceTree = ""; }; + B35107FB2896659E00FA401F /* ramNormal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ramNormal.h; sourceTree = ""; }; + B35107FC2896659E00FA401F /* romMapperDumas.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperDumas.c; sourceTree = ""; }; + B35107FD2896659E00FA401F /* romMapperKonamiWordPro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKonamiWordPro.c; sourceTree = ""; }; + B35107FE2896659E00FA401F /* romMapperDisk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperDisk.c; sourceTree = ""; }; + B35107FF2896659E00FA401F /* romMapperTC8566AF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperTC8566AF.h; sourceTree = ""; }; + B35108002896659E00FA401F /* romMapperSonyHBIV1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSonyHBIV1.h; sourceTree = ""; }; + B35108012896659E00FA401F /* romMapperSvi328Fdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi328Fdc.c; sourceTree = ""; }; + B35108022896659E00FA401F /* romMapperNationalFdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNationalFdc.c; sourceTree = ""; }; + B35108032896659E00FA401F /* romMapperSonyHBI55.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSonyHBI55.c; sourceTree = ""; }; + B35108042896659E00FA401F /* romMapperSvi328Prn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi328Prn.c; sourceTree = ""; }; + B35108052896659E00FA401F /* romMapperS1990.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperS1990.c; sourceTree = ""; }; + B35108062896659E00FA401F /* romMapperNormal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNormal.h; sourceTree = ""; }; + B35108072896659E00FA401F /* sramMapperEseSCC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sramMapperEseSCC.c; sourceTree = ""; }; + B35108082896659E00FA401F /* romMapperKoei.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKoei.c; sourceTree = ""; }; + B35108092896659E00FA401F /* MegaSCSIsub.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MegaSCSIsub.c; sourceTree = ""; }; + B351080A2896659E00FA401F /* romMapperPAC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperPAC.h; sourceTree = ""; }; + B351080B2896659E00FA401F /* romMapperMegaFlashRomSccPlus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMegaFlashRomSccPlus.c; sourceTree = ""; }; + B351080C2896659E00FA401F /* romMapperHolyQuran.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperHolyQuran.h; sourceTree = ""; }; + B351080D2896659E00FA401F /* romMapperTurboRPcm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperTurboRPcm.h; sourceTree = ""; }; + B351080E2896659E00FA401F /* romMapperMicrosol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMicrosol.h; sourceTree = ""; }; + B351080F2896659E00FA401F /* romMapperBunsetu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperBunsetu.c; sourceTree = ""; }; + B35108102896659E00FA401F /* AtmelPerom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = AtmelPerom.c; sourceTree = ""; }; + B35108112896659E00FA401F /* IoPort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IoPort.h; sourceTree = ""; }; + B35108122896659E00FA401F /* romMapperRType.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperRType.c; sourceTree = ""; }; + B35108132896659E00FA401F /* romMapperGIDE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperGIDE.h; sourceTree = ""; }; + B35108142896659E00FA401F /* romMapperHalnote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperHalnote.h; sourceTree = ""; }; + B35108152896659E00FA401F /* sramMapperS1985.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sramMapperS1985.h; sourceTree = ""; }; + B35108162896659E00FA401F /* sramMapperMatsuchita.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sramMapperMatsuchita.h; sourceTree = ""; }; + B35108172896659E00FA401F /* romMapperNms8280VideoDa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNms8280VideoDa.c; sourceTree = ""; }; + B35108182896659E00FA401F /* romMapperSvi328RsIDE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi328RsIDE.c; sourceTree = ""; }; + B35108192896659E00FA401F /* romMapperNettouYakyuu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNettouYakyuu.c; sourceTree = ""; }; + B351081A2896659E00FA401F /* romMapperCrossBlaim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperCrossBlaim.h; sourceTree = ""; }; + B351081B2896659E00FA401F /* romMapperSvi328Rs232.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi328Rs232.h; sourceTree = ""; }; + B351081C2896659E00FA401F /* romMapperASCII16nf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperASCII16nf.h; sourceTree = ""; }; + B351081D2896659E00FA401F /* romMapperOpcodeModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperOpcodeModule.h; sourceTree = ""; }; + B351081E2896659E00FA401F /* DeviceManager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = DeviceManager.c; sourceTree = ""; }; + B351081F2896659E00FA401F /* romMapperKorean126.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperKorean126.h; sourceTree = ""; }; + B35108202896659E00FA401F /* romExclusion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romExclusion.h; sourceTree = ""; }; + B35108212896659E00FA401F /* romMapperMoonsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMoonsound.c; sourceTree = ""; }; + B35108222896659E00FA401F /* romMapperSfg05.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSfg05.h; sourceTree = ""; }; + B35108232896659E00FA401F /* romMapperKonami4nf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKonami4nf.c; sourceTree = ""; }; + B35108242896659E00FA401F /* romMapperKonami5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperKonami5.c; sourceTree = ""; }; + B35108252896659E00FA401F /* romMapperDRAM.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperDRAM.c; sourceTree = ""; }; + B35108262896659E00FA401F /* romMapperSg1000.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSg1000.c; sourceTree = ""; }; + B35108272896659E00FA401F /* romMapperSunriseIDE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSunriseIDE.h; sourceTree = ""; }; + B35108282896659E00FA401F /* romMapperPlayBall.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperPlayBall.h; sourceTree = ""; }; + B35108292896659E00FA401F /* romMapperSvi738Fdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperSvi738Fdc.c; sourceTree = ""; }; + B351082A2896659E00FA401F /* romMapperMsxPrn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMsxPrn.c; sourceTree = ""; }; + B351082B2896659E00FA401F /* romMapperSvi727.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSvi727.h; sourceTree = ""; }; + B351082C2896659E00FA401F /* romMapperOpcodeSaveRam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperOpcodeSaveRam.h; sourceTree = ""; }; + B351082D2896659E00FA401F /* romMapperASCII16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperASCII16.c; sourceTree = ""; }; + B351082E2896659E00FA401F /* romMapperSg1000RamExpander.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperSg1000RamExpander.h; sourceTree = ""; }; + B351082F2896659E00FA401F /* romMapperStandard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperStandard.c; sourceTree = ""; }; + B35108302896659E00FA401F /* romMapperA1FMModem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperA1FMModem.h; sourceTree = ""; }; + B35108312896659E00FA401F /* romMapperNational.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperNational.c; sourceTree = ""; }; + B35108322896659E00FA401F /* romMapperNet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperNet.h; sourceTree = ""; }; + B35108332896659E00FA401F /* romMapperMegaRAM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = romMapperMegaRAM.h; sourceTree = ""; }; + B35108342896659E00FA401F /* RomMapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RomMapper.h; sourceTree = ""; }; + B35108352896659E00FA401F /* romMapperPlain.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperPlain.c; sourceTree = ""; }; + B35108362896659E00FA401F /* SlotManager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SlotManager.c; sourceTree = ""; }; + B35108372896659E00FA401F /* romMapperMsxAudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = romMapperMsxAudio.c; sourceTree = ""; }; + B35108392896659E00FA401F /* Coleco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Coleco.h; sourceTree = ""; }; + B351083A2896659E00FA401F /* SG1000.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SG1000.h; sourceTree = ""; }; + B351083B2896659E00FA401F /* Machine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Machine.h; sourceTree = ""; }; + B351083C2896659E00FA401F /* Board.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Board.c; sourceTree = ""; }; + B351083D2896659E00FA401F /* Adam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Adam.c; sourceTree = ""; }; + B351083E2896659E00FA401F /* MSX.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MSX.c; sourceTree = ""; }; + B351083F2896659E00FA401F /* SVI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SVI.h; sourceTree = ""; }; + B35108402896659E00FA401F /* Machine.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Machine.c; sourceTree = ""; }; + B35108412896659E00FA401F /* SG1000.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SG1000.c; sourceTree = ""; }; + B35108422896659E00FA401F /* Coleco.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Coleco.c; sourceTree = ""; }; + B35108432896659E00FA401F /* Board.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Board.h; sourceTree = ""; }; + B35108442896659E00FA401F /* SVI.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SVI.c; sourceTree = ""; }; + B35108452896659E00FA401F /* MSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSX.h; sourceTree = ""; }; + B35108462896659E00FA401F /* Adam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Adam.h; sourceTree = ""; }; + B35108482896659E00FA401F /* WDCRC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WDCRC.h; sourceTree = ""; }; + B35108492896659E00FA401F /* Sf7000PPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sf7000PPI.h; sourceTree = ""; }; + B351084A2896659E00FA401F /* Led.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Led.c; sourceTree = ""; }; + B351084B2896659E00FA401F /* MidiIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MidiIO.h; sourceTree = ""; }; + B351084C2896659E00FA401F /* SviPPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SviPPI.h; sourceTree = ""; }; + B351084D2896659E00FA401F /* I8251.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = I8251.h; sourceTree = ""; }; + B351084E2896659E00FA401F /* I8255.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = I8255.h; sourceTree = ""; }; + B351084F2896659E00FA401F /* Sc3000PPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sc3000PPI.h; sourceTree = ""; }; + B35108502896659E00FA401F /* TC8566AF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TC8566AF.h; sourceTree = ""; }; + B35108512896659E00FA401F /* MSXMidi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSXMidi.h; sourceTree = ""; }; + B35108522896659E00FA401F /* PrinterIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrinterIO.h; sourceTree = ""; }; + B35108532896659E00FA401F /* Microwire93Cx6.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Microwire93Cx6.c; sourceTree = ""; }; + B35108542896659E00FA401F /* ScsiDevice.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ScsiDevice.c; sourceTree = ""; }; + B35108552896659E00FA401F /* Casette.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Casette.h; sourceTree = ""; }; + B35108562896659E00FA401F /* TurboRIO.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = TurboRIO.c; sourceTree = ""; }; + B35108572896659E00FA401F /* wd33c93.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wd33c93.c; sourceTree = ""; }; + B35108582896659E00FA401F /* WD2793.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WD2793.h; sourceTree = ""; }; + B35108592896659E00FA401F /* RTC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = RTC.c; sourceTree = ""; }; + B351085A2896659E00FA401F /* MsxPPI.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxPPI.c; sourceTree = ""; }; + B351085B2896659E00FA401F /* sl811hs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sl811hs.h; sourceTree = ""; }; + B351085C2896659E00FA401F /* Microchip24x00.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Microchip24x00.c; sourceTree = ""; }; + B351085D2896659E00FA401F /* SunriseIDE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SunriseIDE.c; sourceTree = ""; }; + B351085E2896659E00FA401F /* I8254.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = I8254.c; sourceTree = ""; }; + B351085F2896659E00FA401F /* I8250.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = I8250.c; sourceTree = ""; }; + B35108602896659E00FA401F /* ft245.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ft245.h; sourceTree = ""; }; + B35108612896659E00FA401F /* NEC765.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NEC765.h; sourceTree = ""; }; + B35108622896659E00FA401F /* HarddiskIDE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = HarddiskIDE.c; sourceTree = ""; }; + B35108632896659E00FA401F /* JoystickIO.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = JoystickIO.c; sourceTree = ""; }; + B35108642896659E00FA401F /* MB89352.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MB89352.c; sourceTree = ""; }; + B35108652896659E00FA401F /* FdcAudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FdcAudio.h; sourceTree = ""; }; + B35108662896659E00FA401F /* rtl8019.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtl8019.c; sourceTree = ""; }; + B35108672896659E00FA401F /* UartIO.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = UartIO.c; sourceTree = ""; }; + B35108682896659E00FA401F /* Z8530.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Z8530.c; sourceTree = ""; }; + B35108692896659E00FA401F /* Disk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Disk.h; sourceTree = ""; }; + B351086A2896659E00FA401F /* DirAsDisk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = DirAsDisk.c; sourceTree = ""; }; + B351086B2896659E00FA401F /* Switches.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Switches.c; sourceTree = ""; }; + B351086C2896659E00FA401F /* Microwire93Cx6.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Microwire93Cx6.h; sourceTree = ""; }; + B351086D2896659E00FA401F /* ScsiDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScsiDevice.h; sourceTree = ""; }; + B351086E2896659E00FA401F /* PrinterIO.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = PrinterIO.c; sourceTree = ""; }; + B351086F2896659E00FA401F /* MSXMidi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MSXMidi.c; sourceTree = ""; }; + B35108702896659E00FA401F /* Casette.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Casette.c; sourceTree = ""; }; + B35108712896659E00FA401F /* TC8566AF.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = TC8566AF.c; sourceTree = ""; }; + B35108722896659E00FA401F /* GameReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GameReader.h; sourceTree = ""; }; + B35108732896659E00FA401F /* I8255.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = I8255.c; sourceTree = ""; }; + B35108742896659E00FA401F /* Sc3000PPI.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sc3000PPI.c; sourceTree = ""; }; + B35108752896659E00FA401F /* Led.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Led.h; sourceTree = ""; }; + B35108762896659E00FA401F /* MidiIO.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MidiIO.c; sourceTree = ""; }; + B35108772896659E00FA401F /* SviPPI.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SviPPI.c; sourceTree = ""; }; + B35108782896659E00FA401F /* Sf7000PPI.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sf7000PPI.c; sourceTree = ""; }; + B35108792896659E00FA401F /* I8251.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = I8251.c; sourceTree = ""; }; + B351087A2896659E00FA401F /* WDCRC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = WDCRC.c; sourceTree = ""; }; + B351087B2896659E00FA401F /* sl811hs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sl811hs.c; sourceTree = ""; }; + B351087C2896659E00FA401F /* MsxPPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxPPI.h; sourceTree = ""; }; + B351087D2896659E00FA401F /* Microchip24x00.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Microchip24x00.h; sourceTree = ""; }; + B351087E2896659E00FA401F /* msxgr.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = msxgr.cpp; sourceTree = ""; }; + B351087F2896659E00FA401F /* RTC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTC.h; sourceTree = ""; }; + B35108802896659E00FA401F /* scsidev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scsidev.h; sourceTree = ""; }; + B35108812896659E00FA401F /* wd33c93.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wd33c93.h; sourceTree = ""; }; + B35108822896659E00FA401F /* TurboRIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TurboRIO.h; sourceTree = ""; }; + B35108832896659E00FA401F /* GameReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GameReader.cpp; sourceTree = ""; }; + B35108842896659E00FA401F /* WD2793.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = WD2793.c; sourceTree = ""; }; + B35108852896659E00FA401F /* msxgr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msxgr.h; sourceTree = ""; }; + B35108862896659E00FA401F /* ScsiDefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScsiDefs.h; sourceTree = ""; }; + B35108872896659E00FA401F /* HarddiskIDE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HarddiskIDE.h; sourceTree = ""; }; + B35108882896659E00FA401F /* NEC765.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = NEC765.c; sourceTree = ""; }; + B35108892896659E00FA401F /* JoystickIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JoystickIO.h; sourceTree = ""; }; + B351088A2896659E00FA401F /* I8250.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = I8250.h; sourceTree = ""; }; + B351088B2896659E00FA401F /* ft245.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ft245.c; sourceTree = ""; }; + B351088C2896659E00FA401F /* DiskUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiskUtil.h; sourceTree = ""; }; + B351088D2896659E00FA401F /* I8254.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = I8254.h; sourceTree = ""; }; + B351088E2896659E00FA401F /* SunriseIDE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SunriseIDE.h; sourceTree = ""; }; + B351088F2896659E00FA401F /* Disk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Disk.c; sourceTree = ""; }; + B35108902896659E00FA401F /* Z8530.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Z8530.h; sourceTree = ""; }; + B35108912896659E00FA401F /* Switches.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Switches.h; sourceTree = ""; }; + B35108922896659E00FA401F /* DirAsDisk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DirAsDisk.h; sourceTree = ""; }; + B35108932896659E00FA401F /* UartIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UartIO.h; sourceTree = ""; }; + B35108942896659E00FA401F /* rtl8019.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtl8019.h; sourceTree = ""; }; + B35108952896659E00FA401F /* MB89352.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MB89352.h; sourceTree = ""; }; + B35108962896659E00FA401F /* FdcAudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = FdcAudio.c; sourceTree = ""; }; + B35108982896659E00FA401F /* R800Debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = R800Debug.c; sourceTree = ""; }; + B35108992896659E00FA401F /* R800SaveState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = R800SaveState.h; sourceTree = ""; }; + B351089A2896659E00FA401F /* R800Dasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = R800Dasm.h; sourceTree = ""; }; + B351089B2896659E00FA401F /* R800.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = R800.c; sourceTree = ""; }; + B351089C2896659E00FA401F /* R800SaveState.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = R800SaveState.c; sourceTree = ""; }; + B351089D2896659E00FA401F /* R800Debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = R800Debug.h; sourceTree = ""; }; + B351089E2896659E00FA401F /* R800Dasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = R800Dasm.c; sourceTree = ""; }; + B351089F2896659E00FA401F /* R800.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = R800.h; sourceTree = ""; }; + B35108A12896659E00FA401F /* ColecoSuperAction.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ColecoSuperAction.c; sourceTree = ""; }; + B35108A22896659E00FA401F /* ColecoJoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColecoJoystick.h; sourceTree = ""; }; + B35108A32896659E00FA401F /* MsxGunstick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxGunstick.h; sourceTree = ""; }; + B35108A42896659E00FA401F /* Sg1000JoystickDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sg1000JoystickDevice.h; sourceTree = ""; }; + B35108A52896659E00FA401F /* SviJoyIo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SviJoyIo.h; sourceTree = ""; }; + B35108A62896659E00FA401F /* MsxJoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxJoystick.h; sourceTree = ""; }; + B35108A72896659E00FA401F /* SviJoystickDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SviJoystickDevice.h; sourceTree = ""; }; + B35108A82896659E00FA401F /* ColecoSteeringWheel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ColecoSteeringWheel.c; sourceTree = ""; }; + B35108A92896659E00FA401F /* CoinDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoinDevice.h; sourceTree = ""; }; + B35108AA2896659E00FA401F /* Sg1000Joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sg1000Joystick.h; sourceTree = ""; }; + B35108AB2896659E00FA401F /* MsxArkanoidPad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxArkanoidPad.h; sourceTree = ""; }; + B35108AC2896659E00FA401F /* MsxMouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxMouse.h; sourceTree = ""; }; + B35108AD2896659E00FA401F /* MagicKeyDongle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MagicKeyDongle.c; sourceTree = ""; }; + B35108AE2896659E00FA401F /* MsxTetrisDongle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxTetrisDongle.c; sourceTree = ""; }; + B35108AF2896659E00FA401F /* JoystickPort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = JoystickPort.c; sourceTree = ""; }; + B35108B02896659E00FA401F /* SviJoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SviJoystick.h; sourceTree = ""; }; + B35108B12896659E00FA401F /* Sg1000JoyIo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sg1000JoyIo.c; sourceTree = ""; }; + B35108B22896659E00FA401F /* MsxAsciiLaser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxAsciiLaser.h; sourceTree = ""; }; + B35108B32896659E00FA401F /* InputEvent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = InputEvent.c; sourceTree = ""; }; + B35108B42896659E00FA401F /* ColecoJoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ColecoJoystick.c; sourceTree = ""; }; + B35108B52896659E00FA401F /* ColecoSuperAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColecoSuperAction.h; sourceTree = ""; }; + B35108B62896659E00FA401F /* MsxJoystickDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxJoystickDevice.h; sourceTree = ""; }; + B35108B72896659E00FA401F /* SviJoyIo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SviJoyIo.c; sourceTree = ""; }; + B35108B82896659E00FA401F /* MsxGunstick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxGunstick.c; sourceTree = ""; }; + B35108B92896659E00FA401F /* MsxMouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxMouse.c; sourceTree = ""; }; + B35108BA2896659E00FA401F /* Sg1000Joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sg1000Joystick.c; sourceTree = ""; }; + B35108BB2896659E00FA401F /* MsxArkanoidPad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxArkanoidPad.c; sourceTree = ""; }; + B35108BC2896659E00FA401F /* CoinDevice.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CoinDevice.c; sourceTree = ""; }; + B35108BD2896659E00FA401F /* ColecoSteeringWheel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColecoSteeringWheel.h; sourceTree = ""; }; + B35108BE2896659E00FA401F /* MsxJoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxJoystick.c; sourceTree = ""; }; + B35108BF2896659E00FA401F /* Sg1000JoyIo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sg1000JoyIo.h; sourceTree = ""; }; + B35108C02896659E00FA401F /* ColecoJoystickDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColecoJoystickDevice.h; sourceTree = ""; }; + B35108C12896659E00FA401F /* InputEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InputEvent.h; sourceTree = ""; }; + B35108C22896659E00FA401F /* MsxAsciiLaser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MsxAsciiLaser.c; sourceTree = ""; }; + B35108C32896659E00FA401F /* JoystickPort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JoystickPort.h; sourceTree = ""; }; + B35108C42896659E00FA401F /* MsxTetrisDongle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxTetrisDongle.h; sourceTree = ""; }; + B35108C52896659E00FA401F /* SviJoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SviJoystick.c; sourceTree = ""; }; + B35108C62896659E00FA401F /* MagicKeyDongle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MagicKeyDongle.h; sourceTree = ""; }; + B35108C82896659E00FA401F /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B35108C92896659E00FA401F /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B35108CA2896659E00FA401F /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B35108CB2896659E00FA401F /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B35108CC2896659E00FA401F /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B35108CD2896659E00FA401F /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B35108CE2896659E00FA401F /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B35108CF2896659E00FA401F /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B35108D02896659E00FA401F /* iowin32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iowin32.h; sourceTree = ""; }; + B35108D12896659E00FA401F /* ioapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + B35108D22896659E00FA401F /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B35108D32896659E00FA401F /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B35108D42896659E00FA401F /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B35108D52896659E00FA401F /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B35108D62896659E00FA401F /* crypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + B35108D72896659E00FA401F /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B35108D82896659E00FA401F /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B35108D92896659E00FA401F /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B35108DA2896659E00FA401F /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B35108DB2896659E00FA401F /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B35108DC2896659E00FA401F /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B35108DD2896659E00FA401F /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B35108DE2896659E00FA401F /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B35108DF2896659E00FA401F /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B35108E02896659E00FA401F /* ioapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + B35108E12896659E00FA401F /* iowin32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iowin32.c; sourceTree = ""; }; + B35108E22896659E00FA401F /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B35108E32896659E00FA401F /* gzio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzio.c; sourceTree = ""; }; + B35108E42896659E00FA401F /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B35108E52896659E00FA401F /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B35108E62896659E00FA401F /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B35108E82896659E00FA401F /* StrcmpNoCase.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = StrcmpNoCase.c; sourceTree = ""; }; + B35108E92896659E00FA401F /* blowfish.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blowfish.h; sourceTree = ""; }; + B35108EA2896659E00FA401F /* ZipFromMem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZipFromMem.h; sourceTree = ""; }; + B35108EB2896659E00FA401F /* TokenExtract.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = TokenExtract.c; sourceTree = ""; }; + B35108EC2896659E00FA401F /* ziphelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ziphelper.h; sourceTree = ""; }; + B35108ED2896659E00FA401F /* IsFileExtension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IsFileExtension.h; sourceTree = ""; }; + B35108EE2896659E00FA401F /* PacketFileSystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = PacketFileSystem.c; sourceTree = ""; }; + B35108EF2896659E00FA401F /* IniFileParser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = IniFileParser.c; sourceTree = ""; }; + B35108F02896659E00FA401F /* SaveState.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SaveState.c; sourceTree = ""; }; + B35108F12896659E00FA401F /* authkey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = authkey.h; sourceTree = ""; }; + B35108F22896659E00FA401F /* blowfish.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blowfish.c; sourceTree = ""; }; + B35108F32896659E00FA401F /* StrcmpNoCase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StrcmpNoCase.h; sourceTree = ""; }; + B35108F42896659E00FA401F /* ziphelper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ziphelper.c; sourceTree = ""; }; + B35108F52896659E00FA401F /* TokenExtract.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TokenExtract.h; sourceTree = ""; }; + B35108F62896659E00FA401F /* IsFileExtension.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = IsFileExtension.c; sourceTree = ""; }; + B35108F72896659E00FA401F /* ZipFromMem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ZipFromMem.c; sourceTree = ""; }; + B35108F82896659E00FA401F /* IniFileParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IniFileParser.h; sourceTree = ""; }; + B35108F92896659E00FA401F /* PacketFileSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PacketFileSystem.h; sourceTree = ""; }; + B35108FA2896659E00FA401F /* SaveState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SaveState.h; sourceTree = ""; }; + B35108FC2896659E00FA401F /* Language.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Language.h; sourceTree = ""; }; + B35108FD2896659E00FA401F /* LanguageMinimal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LanguageMinimal.c; sourceTree = ""; }; + B35108FF2896659E00FA401F /* VideoManager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VideoManager.c; sourceTree = ""; }; + B35109002896659E00FA401F /* SpriteLine.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SpriteLine.c; sourceTree = ""; }; + B35109012896659E00FA401F /* CRTC6845.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CRTC6845.c; sourceTree = ""; }; + B35109022896659E00FA401F /* V9938.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = V9938.h; sourceTree = ""; }; + B35109032896659E00FA401F /* FrameBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FrameBuffer.h; sourceTree = ""; }; + B35109042896659E00FA401F /* VDP.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VDP.c; sourceTree = ""; }; + B35109052896659E00FA401F /* Common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Common.h; sourceTree = ""; }; + B35109062896659E00FA401F /* VideoManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VideoManager.h; sourceTree = ""; }; + B35109072896659E00FA401F /* SpriteLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SpriteLine.h; sourceTree = ""; }; + B35109082896659E00FA401F /* V9938.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = V9938.c; sourceTree = ""; }; + B35109092896659E00FA401F /* CRTC6845.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CRTC6845.h; sourceTree = ""; }; + B351090A2896659E00FA401F /* VDP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VDP.h; sourceTree = ""; }; + B351090B2896659E00FA401F /* FrameBuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = FrameBuffer.c; sourceTree = ""; }; + B351090D2896659E00FA401F /* ArrayList.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ArrayList.c; sourceTree = ""; }; + B351090E2896659E00FA401F /* ArrayList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArrayList.h; sourceTree = ""; }; + B351090F2896659E00FA401F /* MsxTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MsxTypes.h; sourceTree = ""; }; + B35109112896659E00FA401F /* VideoIn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VideoIn.c; sourceTree = ""; }; + B35109122896659E00FA401F /* Mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Mouse.c; sourceTree = ""; }; + B35109132896659E00FA401F /* Timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Timer.c; sourceTree = ""; }; + B35109142896659E00FA401F /* Menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Menu.c; sourceTree = ""; }; + B35109152896659E00FA401F /* Cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Cdrom.c; sourceTree = ""; }; + B35109172896659E00FA401F /* diet-fnmatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "diet-fnmatch.c"; sourceTree = ""; }; + B35109182896659E00FA401F /* diet-glob.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "diet-glob.c"; sourceTree = ""; }; + B35109192896659E00FA401F /* diet-fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "diet-fnmatch.h"; sourceTree = ""; }; + B351091A2896659E00FA401F /* dietfeatures.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dietfeatures.h; sourceTree = ""; }; + B351091B2896659E00FA401F /* diet-glob.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "diet-glob.h"; sourceTree = ""; }; + B351091C2896659E00FA401F /* Glob.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Glob.c; sourceTree = ""; }; + B351091D2896659E00FA401F /* Input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Input.c; sourceTree = ""; }; + B351091E2896659E00FA401F /* Printer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Printer.c; sourceTree = ""; }; + B351091F2896659E00FA401F /* Sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sound.c; sourceTree = ""; }; + B35109202896659E00FA401F /* Notifications.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Notifications.c; sourceTree = ""; }; + B35109212896659E00FA401F /* Event.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Event.c; sourceTree = ""; }; + B35109222896659E00FA401F /* Midi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Midi.c; sourceTree = ""; }; + B35109232896659E00FA401F /* Dialog.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Dialog.c; sourceTree = ""; }; + B35109242896659E00FA401F /* File.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = File.c; sourceTree = ""; }; + B35109252896659E00FA401F /* Emulator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Emulator.c; sourceTree = ""; }; + B35109262896659E00FA401F /* Eth.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Eth.c; sourceTree = ""; }; + B35109272896659E00FA401F /* Uart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Uart.c; sourceTree = ""; }; + B35109292896659E00FA401F /* ArchTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchTimer.h; sourceTree = ""; }; + B351092A2896659E00FA401F /* ArchCdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchCdrom.h; sourceTree = ""; }; + B351092B2896659E00FA401F /* ArchNotifications.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchNotifications.h; sourceTree = ""; }; + B351092C2896659E00FA401F /* ArchMidi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchMidi.h; sourceTree = ""; }; + B351092D2896659E00FA401F /* ArchFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchFile.h; sourceTree = ""; }; + B351092E2896659E00FA401F /* ArchDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchDialog.h; sourceTree = ""; }; + B351092F2896659E00FA401F /* ArchEth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchEth.h; sourceTree = ""; }; + B35109302896659E00FA401F /* ArchPrinter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchPrinter.h; sourceTree = ""; }; + B35109312896659E00FA401F /* ArchUart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchUart.h; sourceTree = ""; }; + B35109322896659E00FA401F /* ArchSound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchSound.h; sourceTree = ""; }; + B35109332896659E00FA401F /* ArchInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchInput.h; sourceTree = ""; }; + B35109342896659E00FA401F /* ArchKeyStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchKeyStorage.h; sourceTree = ""; }; + B35109352896659E00FA401F /* ArchEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchEvent.h; sourceTree = ""; }; + B35109362896659E00FA401F /* ArchMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchMenu.h; sourceTree = ""; }; + B35109372896659E00FA401F /* ArchThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchThread.h; sourceTree = ""; }; + B35109382896659E00FA401F /* ArchVideoIn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchVideoIn.h; sourceTree = ""; }; + B35109392896659E00FA401F /* ArchGlob.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchGlob.h; sourceTree = ""; }; + B351093B2896659E00FA401F /* DebugDeviceManager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = DebugDeviceManager.c; sourceTree = ""; }; + B351093C2896659E00FA401F /* Debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Debugger.c; sourceTree = ""; }; + B351093D2896659E00FA401F /* Debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Debugger.h; sourceTree = ""; }; + B351093E2896659E00FA401F /* DebugDeviceManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DebugDeviceManager.h; sourceTree = ""; }; + B35109402896659E00FA401F /* Patch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Patch.c; sourceTree = ""; }; + B35109422896659E00FA401F /* VideoRender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VideoRender.h; sourceTree = ""; }; + B35109432896659E00FA401F /* Scalebit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Scalebit.h; sourceTree = ""; }; + B35109452896659E00FA401F /* AppConfig.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = AppConfig.c; sourceTree = ""; }; + B35109462896659E00FA401F /* Actions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Actions.h; sourceTree = ""; }; + B35109472896659E00FA401F /* Keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Keyboard.c; sourceTree = ""; }; + B35109482896659E00FA401F /* FileHistory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = FileHistory.c; sourceTree = ""; }; + B35109492896659E00FA401F /* Properties.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Properties.c; sourceTree = ""; }; + B351094A2896659E00FA401F /* LaunchFile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LaunchFile.c; sourceTree = ""; }; + B351094B2896659E00FA401F /* Emulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Emulator.h; sourceTree = ""; }; + B351094C2896659E00FA401F /* AppConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppConfig.h; sourceTree = ""; }; + B351094D2896659E00FA401F /* Keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Keyboard.h; sourceTree = ""; }; + B351094E2896659E00FA401F /* Actions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Actions.c; sourceTree = ""; }; + B351094F2896659E00FA401F /* FileHistory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FileHistory.h; sourceTree = ""; }; + B35109502896659F00FA401F /* Properties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Properties.h; sourceTree = ""; }; + B35109512896659F00FA401F /* LaunchFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LaunchFile.h; sourceTree = ""; }; + B35109542896659F00FA401F /* Devioctl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Devioctl.h; sourceTree = ""; }; + B35109552896659F00FA401F /* Ntddndis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ntddndis.h; sourceTree = ""; }; + B35109562896659F00FA401F /* Packet32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Packet32.h; sourceTree = ""; }; + B35109582896659F00FA401F /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; + B35109592896659F00FA401F /* build_info.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = build_info.txt; sourceTree = ""; }; + B351095A2896659F00FA401F /* build_number.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = build_number.h; sourceTree = ""; }; + B351095C2896659F00FA401F /* Crc32Calc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Crc32Calc.h; sourceTree = ""; }; + B351095D2896659F00FA401F /* Sha1.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sha1.cpp; sourceTree = ""; }; + B351095E2896659F00FA401F /* Crc32Calc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Crc32Calc.c; sourceTree = ""; }; + B351095F2896659F00FA401F /* MediaDb.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MediaDb.cpp; sourceTree = ""; }; + B35109602896659F00FA401F /* Sha1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sha1.h; sourceTree = ""; }; + B35109612896659F00FA401F /* MediaDb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaDb.h; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVblueMSX-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVblueMSX-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVblueMSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVblueMSX.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVblueMSXCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVblueMSXCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVblueMSXCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVblueMSXCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVblueMSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVblueMSX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1FD2872B1A000EAEB37 /* libblueMSX.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libblueMSX-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B35104C92896659C00FA401F /* blueMSX-libretro */ = { + isa = PBXGroup; + children = ( + B35106CA2896659D00FA401F /* .gitignore */, + B35107062896659D00FA401F /* control */, + B35104CB2896659C00FA401F /* Makefile */, + B35104CA2896659C00FA401F /* libretro.c */, + B35104CC2896659C00FA401F /* Makefile.common */, + B35106CB2896659D00FA401F /* libretro_core_options.h */, + B35104CE2896659C00FA401F /* Makefile.libretro */, + B35104CD2896659C00FA401F /* README.md */, + B35107002896659D00FA401F /* link.T */, + B35104CF2896659C00FA401F /* changes.txt */, + B35107012896659D00FA401F /* license.txt */, + B35106FF2896659D00FA401F /* .gitlab-ci.yml */, + B35107052896659D00FA401F /* .travis.yml */, + B35106CC2896659D00FA401F /* .github */, + B35106E22896659D00FA401F /* deps */, + B35107022896659D00FA401F /* jni */, + B35106CF2896659D00FA401F /* libretro-common */, + B35107072896659D00FA401F /* Src */, + B35104D02896659C00FA401F /* system */, + ); + path = "blueMSX-libretro"; + sourceTree = ""; + }; + B35104D02896659C00FA401F /* system */ = { + isa = PBXGroup; + children = ( + B35104D12896659C00FA401F /* bluemsx */, + ); + path = system; + sourceTree = ""; + }; + B35104D12896659C00FA401F /* bluemsx */ = { + isa = PBXGroup; + children = ( + B35104D22896659C00FA401F /* Databases */, + B35104D92896659C00FA401F /* Machines */, + ); + path = bluemsx; + sourceTree = ""; + }; + B35104D22896659C00FA401F /* Databases */ = { + isa = PBXGroup; + children = ( + B35104D32896659C00FA401F /* segadb.xml */, + B35104D42896659C00FA401F /* msxsysromdb.xml */, + B35104D52896659C00FA401F /* msxcaswavdb.xml */, + B35104D62896659C00FA401F /* colecodb.xml */, + B35104D72896659C00FA401F /* svidb.xml */, + B35104D82896659C00FA401F /* msxromdb.xml */, + ); + path = Databases; + sourceTree = ""; + }; + B35104D92896659C00FA401F /* Machines */ = { + isa = PBXGroup; + children = ( + B35104DA2896659C00FA401F /* MSX - Canon V-20 */, + B35104DC2896659C00FA401F /* MSX2 - Sony HB-F1 */, + B35104DE2896659C00FA401F /* MSX - Spectravideo SVI-738 Henrik Gilvad */, + B35104E02896659C00FA401F /* MSX - Philips VG-8010F */, + B35104E22896659C00FA401F /* MSX2+ - Ciel Expert 3 IDE */, + B35104E42896659C00FA401F /* MSX2 - Spectravideo SVI-738-2 CUC */, + B35104E62896659C00FA401F /* MSX - Yamaha YIS503II */, + B35104E82896659C00FA401F /* MSX2 - Daewoo CPC-400 */, + B35104EA2896659C00FA401F /* MSX2 - Spectravideo SVI-738-2 LC Grosso */, + B35104EC2896659C00FA401F /* MSX - Sharp Epcom HotBit 1.1 */, + B35104EE2896659C00FA401F /* MSX - Canon V-10 */, + B35104F02896659C00FA401F /* MSX2 - National FS-4600 */, + B35104F22896659C00FA401F /* MSX - National CF-2700 */, + B35104F42896659C00FA401F /* MSX - C-BIOS */, + B35104F92896659C00FA401F /* MSX2 - Sony HB-G900AP */, + B35104FB2896659C00FA401F /* MSX - Daewoo DPC-180 */, + B35104FD2896659C00FA401F /* MSX - Yamaha CX5M-128 */, + B35104FF2896659C00FA401F /* MSX2 - Sony HB-G900P */, + B35105012896659C00FA401F /* MSX2 - Philips VG-8230 */, + B35105032896659C00FA401F /* MSX2 - Philips NMS-8245 */, + B35105052896659C00FA401F /* MSX - National CF-1200 */, + B35105072896659C00FA401F /* MSX2 - Only PSG */, + B35105092896659C00FA401F /* MSX - Gradiente Expert 1.0 */, + B351050B2896659C00FA401F /* MSX - Yamaha CX5MII */, + B351050D2896659C00FA401F /* MSX - Sony HB-75P */, + B351050F2896659C00FA401F /* MSX2 - Philips NMS-8280 */, + B35105112896659C00FA401F /* MSX2+ - Gradiente Expert AC88+ */, + B35105132896659C00FA401F /* MSX - Russian */, + B35105152896659C00FA401F /* MSX2 - Sony HB-F500 */, + B35105172896659C00FA401F /* MSX - Sony HB-501P */, + B35105192896659C00FA401F /* MSX2 - Al Alamiah AX-350 */, + B351051B2896659C00FA401F /* MSX2 - Philips NMS-8220 */, + B351051D2896659C00FA401F /* MSX2 - Daewoo CPC-300E */, + B351051F2896659C00FA401F /* MSX - Yamaha YIS303 */, + B35105212896659C00FA401F /* MSX2 - French */, + B35105232896659C00FA401F /* Forte II Games - Pesadelo */, + B35105262896659C00FA401F /* MSX - Sony HB-10P */, + B35105282896659C00FA401F /* MSX - Arabic */, + B351052A2896659C00FA401F /* MSX2 - Panasonic FS-A1MK2 */, + B351052C2896659C00FA401F /* MSX2 - Spectravideo SVI-738-2 JP Grobler */, + B351052E2896659C00FA401F /* MSX - National CF-3300 */, + B35105302896659C00FA401F /* MSX - Gradiente Expert 1.1 */, + B35105322896659C00FA401F /* MSX2+ - C-BIOS */, + B35105392896659C00FA401F /* MSX2 - Russian */, + B351053B2896659C00FA401F /* MSX - Sony HB-75D */, + B351053D2896659C00FA401F /* SEGA - SG-1000 */, + B351053F2896659C00FA401F /* MSX - Yamaha YIS503M */, + B35105412896659C00FA401F /* MSX2 - Sony HB-F700P */, + B35105432896659C00FA401F /* MSX - Pioneer PX-7 */, + B35105452896659C00FA401F /* MSX2+ - MSXPLAYer 2003 */, + B35105472896659C00FA401F /* MSX2 - National FS-5500F1 */, + B35105492896659C00FA401F /* MSX2 */, + B351054B2896659C00FA401F /* MSXturboR - Panasonic FS-A1ST (b) */, + B351054D2896659C00FA401F /* MSX - Philips NMS-801 */, + B351054F2896659C00FA401F /* MSX - Toshiba HX-20 */, + B35105512896659C00FA401F /* MSX - Yamaha CX5M-1 */, + B35105532896659C00FA401F /* MSX - National CF-2000 */, + B35105552896659C00FA401F /* MSX - French */, + B35105572896659C00FA401F /* MSX - Philips VG-8020F */, + B35105592896659C00FA401F /* MSX2+ - Gradiente Expert DDX+ */, + B351055B2896659C00FA401F /* MSX - Yamaha YIS503IIR */, + B351055D2896659C00FA401F /* MSX2 - Philips NMS-8250 */, + B351055F2896659C00FA401F /* MSX2 - National FS-4500 */, + B35105612896659C00FA401F /* MSX2 - Arabic */, + B35105632896659C00FA401F /* Shared Roms */, + B35105A32896659C00FA401F /* MSX - Toshiba HX-10 */, + B35105A52896659C00FA401F /* MSX - Philips VG-8010 */, + B35105A72896659C00FA401F /* MSX - Talent DPC-200 */, + B35105A92896659C00FA401F /* MSX2 - Sony HB-F700D */, + B35105AB2896659C00FA401F /* MSX2 - Daewoo CPC-300 */, + B35105AD2896659C00FA401F /* MSX2 - Sony HB-F1XD */, + B35105AF2896659C00FA401F /* MSXturboR - Panasonic FS-A1ST (a) */, + B35105B12896659C00FA401F /* MSX2 - Daewoo CPC-400S */, + B35105B32896659C00FA401F /* MSX - Panasonic CF-2700G */, + B35105B52896659C00FA401F /* MSX - Philips VG-8020-20 */, + B35105B72896659C00FA401F /* MSX - Sanyo MPC-64 */, + B35105B92896659C00FA401F /* MSX2 - Philips NMS-8220 (a) */, + B35105BB2896659C00FA401F /* MSX2 - Toshiba HX-23F */, + B35105BD2896659C00FA401F /* MSX - Mitsubishi ML-FX1 */, + B35105BF2896659C00FA401F /* MSX2 - Sony HB-F900 (a) */, + B35105C12896659C00FA401F /* MSX2 - Sony HB-F9S */, + B35105C32896659C00FA401F /* MSX - Toshiba HX-10S */, + B35105C52896659C00FA401F /* MSX2+ - Sanyo Wavy PHC-70FD1 */, + B35105C72896659C00FA401F /* SEGA - SC-3000 */, + B35105C92896659C00FA401F /* MSX - Sanyo PHC-28S */, + B35105CB2896659C00FA401F /* MSX - Frael Bruc 100-1 */, + B35105CD2896659C00FA401F /* MSX2 - Panasonic FS-A1F */, + B35105CF2896659C00FA401F /* MSX - Spectravideo SVI-728 */, + B35105D12896659C00FA401F /* MSX - Sony HB-20P */, + B35105D32896659C00FA401F /* MSX2 - C-BIOS */, + B35105D92896659C00FA401F /* MSX2 - Philips VG-8240 */, + B35105DB2896659C00FA401F /* MSX - National CF-3000 */, + B35105DD2896659C00FA401F /* MSX2+ - Sony HB-F9S+ */, + B35105DF2896659C00FA401F /* MSX - Mitsubishi ML-F80 */, + B35105E12896659C00FA401F /* MSXturboR - Panasonic FS-A1GT */, + B35105E32896659C00FA401F /* MSX - JVC HC-7GB */, + B35105E52896659C00FA401F /* SVI - Spectravideo SVI-328 80 Swedish */, + B35105E92896659C00FA401F /* MSX2+ - Panasonic FS-A1WSX */, + B35105EB2896659C00FA401F /* MSX2 - Philips VG-8235 */, + B35105ED2896659C00FA401F /* MSX2 - Toshiba HX-23 */, + B35105EF2896659C00FA401F /* MSX2 - Philips NMS-8245F */, + B35105F12896659C00FA401F /* MSX - Olympia PHC-28 */, + B35105F32896659C00FA401F /* MSX - National FS-1300 */, + B35105F52896659C00FA401F /* MSX2 - Philips NMS-8280G */, + B35105F72896659C00FA401F /* MSX - Yashica YC-64 */, + B35105F92896659C00FA401F /* MSX - Talent DPC-200A */, + B35105FB2896659C00FA401F /* MSX - Spectravideo SVI-738 */, + B35105FD2896659C00FA401F /* MSX - Philips VG-8020-00 */, + B35105FF2896659C00FA401F /* MSX2+ - Sony HB-F1XV */, + B35106012896659C00FA401F /* MSX2+ - Ciel Expert 3 Turbo */, + B35106032896659C00FA401F /* MSX2 - Korean */, + B35106052896659C00FA401F /* SVI - Spectravideo SVI-328 80 Column */, + B35106092896659C00FA401F /* MSX - Olympia PHC-2 */, + B351060B2896659C00FA401F /* MSX2 - Sony HB-F500P */, + B351060D2896659C00FA401F /* MSX2 - Sony HB-F1XDMK2 */, + B351060F2896659C00FA401F /* MSX2 - Estonian */, + B35106112896659C00FA401F /* MSX - Sharp Epcom HotBit 1.2 */, + B35106132896659C00FA401F /* SVI - Spectravideo SVI-328 MK2 */, + B35106172896659C00FA401F /* MSX2+ */, + B35106192896659D00FA401F /* MSX - German */, + B351061B2896659D00FA401F /* MSX - Japanese */, + B351061D2896659D00FA401F /* MSX - Philips VG-8000 */, + B351061F2896659D00FA401F /* MSX - Gradiente Expert 1.3 */, + B35106212896659D00FA401F /* MSX - Sony HB-55P */, + B35106232896659D00FA401F /* MSXturboR */, + B35106252896659D00FA401F /* MSX2 - Yamaha CX7M */, + B35106272896659D00FA401F /* MSX - Sony HB-55D */, + B35106292896659D00FA401F /* MSX2 - Talent TPC-310 */, + B351062B2896659D00FA401F /* MSX2 - Brazilian */, + B351062D2896659D00FA401F /* MSX2 - Panasonic FS-A1 */, + B351062F2896659D00FA401F /* MSX - Sanyo Wavy MPC-10 */, + B35106312896659D00FA401F /* MSX */, + B35106332896659D00FA401F /* MSX2+ - European */, + B351063C2896659D00FA401F /* MSX2 - National FS-5000 */, + B351063E2896659D00FA401F /* MSX2 - Philips VG-8235F */, + B35106402896659D00FA401F /* MSX2 - Virtual Haesung Console */, + B35106422896659D00FA401F /* MSX2 - Sony HB-F900 */, + B35106442896659D00FA401F /* MSX - Yamaha YIS503 */, + B35106462896659D00FA401F /* MSX - Daewoo DPC-200 */, + B35106482896659D00FA401F /* MSX2 - Sharp Epcom HotBit 2.0 */, + B351064A2896659D00FA401F /* MSX2 - National FS-5500F2 */, + B351064C2896659D00FA401F /* MSX - Spectravideo SVI-738 Swedish */, + B351064E2896659D00FA401F /* MSX - Brazilian */, + B35106502896659D00FA401F /* SEGA - SF-7000 */, + B35106532896659D00FA401F /* MSX - Yeno DPC-64 */, + B35106552896659D00FA401F /* MSX2 - German */, + B35106572896659D00FA401F /* MSX - Sanyo MPC-100 */, + B35106592896659D00FA401F /* MSX - Goldstar FC-200 */, + B351065B2896659D00FA401F /* MSX2 - Sony HB-F700F */, + B351065D2896659D00FA401F /* MSX - Yamaha CX5M-2 */, + B351065F2896659D00FA401F /* MSX2+ - Panasonic FS-A1WX */, + B35106612896659D00FA401F /* MSX2 - Gradiente Expert 2.0 */, + B35106632896659D00FA401F /* MSX2 - Sony HB-F700S */, + B35106652896659D00FA401F /* MSX2 - Al Alamiah AX-370 */, + B35106672896659D00FA401F /* MSX - Pioneer PX-V60 */, + B35106692896659D00FA401F /* MSX2+ - Sony HB-F1XDJ */, + B351066B2896659D00FA401F /* MSX2+ - Brazilian */, + B351066D2896659D00FA401F /* COL - Bit Corporation Dina */, + B35106712896659D00FA401F /* MSXturboR - Panasonic FS-A1ST */, + B35106732896659D00FA401F /* MSX2 - Philips NMS-8255 */, + B35106752896659D00FA401F /* MSX2+ - Panasonic FS-A1WX (a) */, + B35106772896659D00FA401F /* COL - Spectravideo SVI-603 Coleco */, + B351067A2896659D00FA401F /* COL - ColecoVision */, + B351067D2896659D00FA401F /* MSX - Estonian */, + B351067F2896659D00FA401F /* MSX - Yamaha YIS503F */, + B35106812896659D00FA401F /* MSXturboR - European */, + B35106832896659D00FA401F /* MSX - Sony HB-201P */, + B35106852896659D00FA401F /* MSX2 - Panasonic FS-A1FM */, + B35106872896659D00FA401F /* MSX2 - Panasonic FS-A1 (a) */, + B35106892896659D00FA401F /* MSX2 - Sony HB-F9P Russian */, + B351068B2896659D00FA401F /* MSX - Yamaha YIS503IIR Estonian */, + B351068D2896659D00FA401F /* MSX2 - National FS-4700 */, + B351068F2896659D00FA401F /* MSX - Spanish */, + B35106912896659D00FA401F /* MSX - Sharp Epcom HotBit 1.3b */, + B35106932896659D00FA401F /* SVI - Spectravideo SVI-318 */, + B35106962896659D00FA401F /* MSX2 - Sony HB-F9P */, + B35106982896659D00FA401F /* MSX2 - Japanese */, + B351069A2896659D00FA401F /* MSX - Sharp Epcom HotBit 1.3p */, + B351069C2896659D00FA401F /* MSX - Gradiente Expert Plus */, + B351069E2896659D00FA401F /* MSX - Korean */, + B35106A02896659D00FA401F /* MSX2 - Swedish */, + B35106A22896659D00FA401F /* MSX2+ - Panasonic FS-A1FX */, + B35106A42896659D00FA401F /* MSX - National FS-4000 */, + B35106A62896659D00FA401F /* MSX - Daewoo DPC-200E */, + B35106A82896659D00FA401F /* MSX - Gradiente Expert DDPlus */, + B35106AA2896659D00FA401F /* MSX - Swedish */, + B35106AC2896659D00FA401F /* MSX2 - Sanyo Wavy PHC-23 */, + B35106AE2896659D00FA401F /* MSX - Yeno MX64 */, + B35106B02896659D00FA401F /* MSX - Sanyo PHC-28L */, + B35106B22896659D00FA401F /* MSX - Sony HB-201 */, + B35106B42896659D00FA401F /* MSX - Daewoo DPC-100 */, + B35106B62896659D00FA401F /* SVI - Spectravideo SVI-328 */, + B35106B92896659D00FA401F /* COL - ColecoVision with Opcode Memory Extension */, + B35106BC2896659D00FA401F /* MSX2+ - Sanyo Wavy PHC-35J */, + B35106BE2896659D00FA401F /* MSX2+ - Sanyo Wavy PHC-70FD2 */, + B35106C02896659D00FA401F /* MSX2 - Spanish */, + B35106C22896659D00FA401F /* MSX - Al Alamiah AX-170 */, + B35106C42896659D00FA401F /* MSX2 - Sanyo Wavy MPC-25FD */, + B35106C62896659D00FA401F /* MSX2 - Yamaha CX7M-128 */, + B35106C82896659D00FA401F /* MSX2 - Sony HB-F1II */, + ); + path = Machines; + sourceTree = ""; + }; + B35104DA2896659C00FA401F /* MSX - Canon V-20 */ = { + isa = PBXGroup; + children = ( + B35104DB2896659C00FA401F /* config.ini */, + ); + path = "MSX - Canon V-20"; + sourceTree = ""; + }; + B35104DC2896659C00FA401F /* MSX2 - Sony HB-F1 */ = { + isa = PBXGroup; + children = ( + B35104DD2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F1"; + sourceTree = ""; + }; + B35104DE2896659C00FA401F /* MSX - Spectravideo SVI-738 Henrik Gilvad */ = { + isa = PBXGroup; + children = ( + B35104DF2896659C00FA401F /* config.ini */, + ); + path = "MSX - Spectravideo SVI-738 Henrik Gilvad"; + sourceTree = ""; + }; + B35104E02896659C00FA401F /* MSX - Philips VG-8010F */ = { + isa = PBXGroup; + children = ( + B35104E12896659C00FA401F /* config.ini */, + ); + path = "MSX - Philips VG-8010F"; + sourceTree = ""; + }; + B35104E22896659C00FA401F /* MSX2+ - Ciel Expert 3 IDE */ = { + isa = PBXGroup; + children = ( + B35104E32896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Ciel Expert 3 IDE"; + sourceTree = ""; + }; + B35104E42896659C00FA401F /* MSX2 - Spectravideo SVI-738-2 CUC */ = { + isa = PBXGroup; + children = ( + B35104E52896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Spectravideo SVI-738-2 CUC"; + sourceTree = ""; + }; + B35104E62896659C00FA401F /* MSX - Yamaha YIS503II */ = { + isa = PBXGroup; + children = ( + B35104E72896659C00FA401F /* config.ini */, + ); + path = "MSX - Yamaha YIS503II"; + sourceTree = ""; + }; + B35104E82896659C00FA401F /* MSX2 - Daewoo CPC-400 */ = { + isa = PBXGroup; + children = ( + B35104E92896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Daewoo CPC-400"; + sourceTree = ""; + }; + B35104EA2896659C00FA401F /* MSX2 - Spectravideo SVI-738-2 LC Grosso */ = { + isa = PBXGroup; + children = ( + B35104EB2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Spectravideo SVI-738-2 LC Grosso"; + sourceTree = ""; + }; + B35104EC2896659C00FA401F /* MSX - Sharp Epcom HotBit 1.1 */ = { + isa = PBXGroup; + children = ( + B35104ED2896659C00FA401F /* config.ini */, + ); + path = "MSX - Sharp Epcom HotBit 1.1"; + sourceTree = ""; + }; + B35104EE2896659C00FA401F /* MSX - Canon V-10 */ = { + isa = PBXGroup; + children = ( + B35104EF2896659C00FA401F /* config.ini */, + ); + path = "MSX - Canon V-10"; + sourceTree = ""; + }; + B35104F02896659C00FA401F /* MSX2 - National FS-4600 */ = { + isa = PBXGroup; + children = ( + B35104F12896659C00FA401F /* config.ini */, + ); + path = "MSX2 - National FS-4600"; + sourceTree = ""; + }; + B35104F22896659C00FA401F /* MSX - National CF-2700 */ = { + isa = PBXGroup; + children = ( + B35104F32896659C00FA401F /* config.ini */, + ); + path = "MSX - National CF-2700"; + sourceTree = ""; + }; + B35104F42896659C00FA401F /* MSX - C-BIOS */ = { + isa = PBXGroup; + children = ( + B35104F52896659C00FA401F /* cbios.txt */, + B35104F62896659C00FA401F /* cbios_logo_msx1.rom */, + B35104F72896659C00FA401F /* config.ini */, + B35104F82896659C00FA401F /* cbios_main_msx1.rom */, + ); + path = "MSX - C-BIOS"; + sourceTree = ""; + }; + B35104F92896659C00FA401F /* MSX2 - Sony HB-G900AP */ = { + isa = PBXGroup; + children = ( + B35104FA2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-G900AP"; + sourceTree = ""; + }; + B35104FB2896659C00FA401F /* MSX - Daewoo DPC-180 */ = { + isa = PBXGroup; + children = ( + B35104FC2896659C00FA401F /* config.ini */, + ); + path = "MSX - Daewoo DPC-180"; + sourceTree = ""; + }; + B35104FD2896659C00FA401F /* MSX - Yamaha CX5M-128 */ = { + isa = PBXGroup; + children = ( + B35104FE2896659C00FA401F /* config.ini */, + ); + path = "MSX - Yamaha CX5M-128"; + sourceTree = ""; + }; + B35104FF2896659C00FA401F /* MSX2 - Sony HB-G900P */ = { + isa = PBXGroup; + children = ( + B35105002896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-G900P"; + sourceTree = ""; + }; + B35105012896659C00FA401F /* MSX2 - Philips VG-8230 */ = { + isa = PBXGroup; + children = ( + B35105022896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips VG-8230"; + sourceTree = ""; + }; + B35105032896659C00FA401F /* MSX2 - Philips NMS-8245 */ = { + isa = PBXGroup; + children = ( + B35105042896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8245"; + sourceTree = ""; + }; + B35105052896659C00FA401F /* MSX - National CF-1200 */ = { + isa = PBXGroup; + children = ( + B35105062896659C00FA401F /* config.ini */, + ); + path = "MSX - National CF-1200"; + sourceTree = ""; + }; + B35105072896659C00FA401F /* MSX2 - Only PSG */ = { + isa = PBXGroup; + children = ( + B35105082896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Only PSG"; + sourceTree = ""; + }; + B35105092896659C00FA401F /* MSX - Gradiente Expert 1.0 */ = { + isa = PBXGroup; + children = ( + B351050A2896659C00FA401F /* config.ini */, + ); + path = "MSX - Gradiente Expert 1.0"; + sourceTree = ""; + }; + B351050B2896659C00FA401F /* MSX - Yamaha CX5MII */ = { + isa = PBXGroup; + children = ( + B351050C2896659C00FA401F /* config.ini */, + ); + path = "MSX - Yamaha CX5MII"; + sourceTree = ""; + }; + B351050D2896659C00FA401F /* MSX - Sony HB-75P */ = { + isa = PBXGroup; + children = ( + B351050E2896659C00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-75P"; + sourceTree = ""; + }; + B351050F2896659C00FA401F /* MSX2 - Philips NMS-8280 */ = { + isa = PBXGroup; + children = ( + B35105102896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8280"; + sourceTree = ""; + }; + B35105112896659C00FA401F /* MSX2+ - Gradiente Expert AC88+ */ = { + isa = PBXGroup; + children = ( + B35105122896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Gradiente Expert AC88+"; + sourceTree = ""; + }; + B35105132896659C00FA401F /* MSX - Russian */ = { + isa = PBXGroup; + children = ( + B35105142896659C00FA401F /* config.ini */, + ); + path = "MSX - Russian"; + sourceTree = ""; + }; + B35105152896659C00FA401F /* MSX2 - Sony HB-F500 */ = { + isa = PBXGroup; + children = ( + B35105162896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F500"; + sourceTree = ""; + }; + B35105172896659C00FA401F /* MSX - Sony HB-501P */ = { + isa = PBXGroup; + children = ( + B35105182896659C00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-501P"; + sourceTree = ""; + }; + B35105192896659C00FA401F /* MSX2 - Al Alamiah AX-350 */ = { + isa = PBXGroup; + children = ( + B351051A2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Al Alamiah AX-350"; + sourceTree = ""; + }; + B351051B2896659C00FA401F /* MSX2 - Philips NMS-8220 */ = { + isa = PBXGroup; + children = ( + B351051C2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8220"; + sourceTree = ""; + }; + B351051D2896659C00FA401F /* MSX2 - Daewoo CPC-300E */ = { + isa = PBXGroup; + children = ( + B351051E2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Daewoo CPC-300E"; + sourceTree = ""; + }; + B351051F2896659C00FA401F /* MSX - Yamaha YIS303 */ = { + isa = PBXGroup; + children = ( + B35105202896659C00FA401F /* config.ini */, + ); + path = "MSX - Yamaha YIS303"; + sourceTree = ""; + }; + B35105212896659C00FA401F /* MSX2 - French */ = { + isa = PBXGroup; + children = ( + B35105222896659C00FA401F /* config.ini */, + ); + path = "MSX2 - French"; + sourceTree = ""; + }; + B35105232896659C00FA401F /* Forte II Games - Pesadelo */ = { + isa = PBXGroup; + children = ( + B35105242896659C00FA401F /* config.ini */, + B35105252896659C00FA401F /* pesadelo.rom */, + ); + path = "Forte II Games - Pesadelo"; + sourceTree = ""; + }; + B35105262896659C00FA401F /* MSX - Sony HB-10P */ = { + isa = PBXGroup; + children = ( + B35105272896659C00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-10P"; + sourceTree = ""; + }; + B35105282896659C00FA401F /* MSX - Arabic */ = { + isa = PBXGroup; + children = ( + B35105292896659C00FA401F /* config.ini */, + ); + path = "MSX - Arabic"; + sourceTree = ""; + }; + B351052A2896659C00FA401F /* MSX2 - Panasonic FS-A1MK2 */ = { + isa = PBXGroup; + children = ( + B351052B2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Panasonic FS-A1MK2"; + sourceTree = ""; + }; + B351052C2896659C00FA401F /* MSX2 - Spectravideo SVI-738-2 JP Grobler */ = { + isa = PBXGroup; + children = ( + B351052D2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Spectravideo SVI-738-2 JP Grobler"; + sourceTree = ""; + }; + B351052E2896659C00FA401F /* MSX - National CF-3300 */ = { + isa = PBXGroup; + children = ( + B351052F2896659C00FA401F /* config.ini */, + ); + path = "MSX - National CF-3300"; + sourceTree = ""; + }; + B35105302896659C00FA401F /* MSX - Gradiente Expert 1.1 */ = { + isa = PBXGroup; + children = ( + B35105312896659C00FA401F /* config.ini */, + ); + path = "MSX - Gradiente Expert 1.1"; + sourceTree = ""; + }; + B35105322896659C00FA401F /* MSX2+ - C-BIOS */ = { + isa = PBXGroup; + children = ( + B35105332896659C00FA401F /* cbios_main_msx2+.rom */, + B35105342896659C00FA401F /* cbios_sub.rom */, + B35105352896659C00FA401F /* cbios.txt */, + B35105362896659C00FA401F /* cbios_music.rom */, + B35105372896659C00FA401F /* cbios_logo_msx2+.rom */, + B35105382896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - C-BIOS"; + sourceTree = ""; + }; + B35105392896659C00FA401F /* MSX2 - Russian */ = { + isa = PBXGroup; + children = ( + B351053A2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Russian"; + sourceTree = ""; + }; + B351053B2896659C00FA401F /* MSX - Sony HB-75D */ = { + isa = PBXGroup; + children = ( + B351053C2896659C00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-75D"; + sourceTree = ""; + }; + B351053D2896659C00FA401F /* SEGA - SG-1000 */ = { + isa = PBXGroup; + children = ( + B351053E2896659C00FA401F /* config.ini */, + ); + path = "SEGA - SG-1000"; + sourceTree = ""; + }; + B351053F2896659C00FA401F /* MSX - Yamaha YIS503M */ = { + isa = PBXGroup; + children = ( + B35105402896659C00FA401F /* config.ini */, + ); + path = "MSX - Yamaha YIS503M"; + sourceTree = ""; + }; + B35105412896659C00FA401F /* MSX2 - Sony HB-F700P */ = { + isa = PBXGroup; + children = ( + B35105422896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F700P"; + sourceTree = ""; + }; + B35105432896659C00FA401F /* MSX - Pioneer PX-7 */ = { + isa = PBXGroup; + children = ( + B35105442896659C00FA401F /* config.ini */, + ); + path = "MSX - Pioneer PX-7"; + sourceTree = ""; + }; + B35105452896659C00FA401F /* MSX2+ - MSXPLAYer 2003 */ = { + isa = PBXGroup; + children = ( + B35105462896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - MSXPLAYer 2003"; + sourceTree = ""; + }; + B35105472896659C00FA401F /* MSX2 - National FS-5500F1 */ = { + isa = PBXGroup; + children = ( + B35105482896659C00FA401F /* config.ini */, + ); + path = "MSX2 - National FS-5500F1"; + sourceTree = ""; + }; + B35105492896659C00FA401F /* MSX2 */ = { + isa = PBXGroup; + children = ( + B351054A2896659C00FA401F /* config.ini */, + ); + path = MSX2; + sourceTree = ""; + }; + B351054B2896659C00FA401F /* MSXturboR - Panasonic FS-A1ST (b) */ = { + isa = PBXGroup; + children = ( + B351054C2896659C00FA401F /* config.ini */, + ); + path = "MSXturboR - Panasonic FS-A1ST (b)"; + sourceTree = ""; + }; + B351054D2896659C00FA401F /* MSX - Philips NMS-801 */ = { + isa = PBXGroup; + children = ( + B351054E2896659C00FA401F /* config.ini */, + ); + path = "MSX - Philips NMS-801"; + sourceTree = ""; + }; + B351054F2896659C00FA401F /* MSX - Toshiba HX-20 */ = { + isa = PBXGroup; + children = ( + B35105502896659C00FA401F /* config.ini */, + ); + path = "MSX - Toshiba HX-20"; + sourceTree = ""; + }; + B35105512896659C00FA401F /* MSX - Yamaha CX5M-1 */ = { + isa = PBXGroup; + children = ( + B35105522896659C00FA401F /* config.ini */, + ); + path = "MSX - Yamaha CX5M-1"; + sourceTree = ""; + }; + B35105532896659C00FA401F /* MSX - National CF-2000 */ = { + isa = PBXGroup; + children = ( + B35105542896659C00FA401F /* config.ini */, + ); + path = "MSX - National CF-2000"; + sourceTree = ""; + }; + B35105552896659C00FA401F /* MSX - French */ = { + isa = PBXGroup; + children = ( + B35105562896659C00FA401F /* config.ini */, + ); + path = "MSX - French"; + sourceTree = ""; + }; + B35105572896659C00FA401F /* MSX - Philips VG-8020F */ = { + isa = PBXGroup; + children = ( + B35105582896659C00FA401F /* config.ini */, + ); + path = "MSX - Philips VG-8020F"; + sourceTree = ""; + }; + B35105592896659C00FA401F /* MSX2+ - Gradiente Expert DDX+ */ = { + isa = PBXGroup; + children = ( + B351055A2896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Gradiente Expert DDX+"; + sourceTree = ""; + }; + B351055B2896659C00FA401F /* MSX - Yamaha YIS503IIR */ = { + isa = PBXGroup; + children = ( + B351055C2896659C00FA401F /* config.ini */, + ); + path = "MSX - Yamaha YIS503IIR"; + sourceTree = ""; + }; + B351055D2896659C00FA401F /* MSX2 - Philips NMS-8250 */ = { + isa = PBXGroup; + children = ( + B351055E2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8250"; + sourceTree = ""; + }; + B351055F2896659C00FA401F /* MSX2 - National FS-4500 */ = { + isa = PBXGroup; + children = ( + B35105602896659C00FA401F /* config.ini */, + ); + path = "MSX2 - National FS-4500"; + sourceTree = ""; + }; + B35105612896659C00FA401F /* MSX2 - Arabic */ = { + isa = PBXGroup; + children = ( + B35105622896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Arabic"; + sourceTree = ""; + }; + B35105632896659C00FA401F /* Shared Roms */ = { + isa = PBXGroup; + children = ( + B35105642896659C00FA401F /* MSX2SP.rom */, + B35105652896659C00FA401F /* MSXG.rom */, + B35105662896659C00FA401F /* MSX2KREXT.rom */, + B35105672896659C00FA401F /* NATIONALDISK.rom */, + B35105682896659C00FA401F /* KANJI.rom */, + B35105692896659C00FA401F /* MSX.rom */, + B351056A2896659C00FA401F /* MSX2FR.rom */, + B351056B2896659C00FA401F /* FMPAC.rom */, + B351056C2896659C00FA401F /* MSX2.rom */, + B351056D2896659C00FA401F /* MSXR.rom */, + B351056E2896659C00FA401F /* MSX2BREXT.rom */, + B351056F2896659C00FA401F /* MOONSOUND.rom */, + B35105702896659C00FA401F /* MSX2SE.rom */, + B35105712896659C00FA401F /* HANGUL.rom */, + B35105722896659C00FA401F /* nowindDos1.rom */, + B35105732896659C00FA401F /* MSXBR.rom */, + B35105742896659C00FA401F /* SUNRISEIDE.rom */, + B35105752896659C00FA401F /* MSX2R2.ROM */, + B35105762896659C00FA401F /* MSXTREXT.ROM */, + B35105772896659C00FA401F /* SWP.rom */, + B35105782896659C00FA401F /* MSXDOS23.ROM */, + B35105792896659C00FA401F /* nowindDos2.rom */, + B351057A2896659C00FA401F /* GCVMX80.ROM */, + B351057B2896659C00FA401F /* MSX2HAN.rom */, + B351057C2896659C00FA401F /* MSX2KR.rom */, + B351057D2896659C00FA401F /* MSX2G.rom */, + B351057E2896659C00FA401F /* MSX2P.rom */, + B351057F2896659C00FA401F /* MSX2PEXT.rom */, + B35105802896659C00FA401F /* Shared.txt */, + B35105812896659C00FA401F /* MSX2AREXT.ROM */, + B35105822896659C00FA401F /* ARAB1.ROM */, + B35105832896659C00FA401F /* MSX2R.rom */, + B35105842896659C00FA401F /* PANASONICDISK.rom */, + B35105852896659C00FA401F /* MSX2REXT.rom */, + B35105862896659C00FA401F /* MSX2EXT.rom */, + B35105872896659C00FA401F /* MSXTROPT.ROM */, + B35105882896659C00FA401F /* MSX2JEXT.rom */, + B35105892896659C00FA401F /* BEERIDE.ROM */, + B351058A2896659C00FA401F /* MSX2AR.ROM */, + B351058B2896659C00FA401F /* MSX2PMUS.rom */, + B351058C2896659C00FA401F /* MSXR2.ROM */, + B351058D2896659C00FA401F /* PHILIPSDISK.rom */, + B351058E2896659C00FA401F /* MSX2BR.rom */, + B351058F2896659C00FA401F /* MSXKR.rom */, + B35105902896659C00FA401F /* MSXKANJI.rom */, + B35105912896659C00FA401F /* NOVAXIS.rom */, + B35105922896659C00FA401F /* MSXSP.rom */, + B35105932896659C00FA401F /* ARABIC.rom */, + B35105942896659C00FA401F /* MSXSE.ROM */, + B35105952896659C00FA401F /* MSXFR.rom */, + B35105962896659C00FA401F /* MSX2J.rom */, + B35105972896659C00FA401F /* XBASIC2.rom */, + B35105982896659C00FA401F /* PAINT.rom */, + B35105992896659C00FA401F /* MSXHAN.rom */, + B351059A2896659C00FA401F /* RS232.ROM */, + B351059B2896659C00FA401F /* MSXAR.ROM */, + B351059C2896659C00FA401F /* MICROSOLDISK.ROM */, + B351059D2896659C00FA401F /* MSX2FREXT.rom */, + B351059E2896659C00FA401F /* MSXTR.ROM */, + B351059F2896659C00FA401F /* MSX2GEXT.rom */, + B35105A02896659C00FA401F /* MSX2SPEXT.rom */, + B35105A12896659C00FA401F /* MSXTRMUS.ROM */, + B35105A22896659C00FA401F /* MSXJ.rom */, + ); + path = "Shared Roms"; + sourceTree = ""; + }; + B35105A32896659C00FA401F /* MSX - Toshiba HX-10 */ = { + isa = PBXGroup; + children = ( + B35105A42896659C00FA401F /* config.ini */, + ); + path = "MSX - Toshiba HX-10"; + sourceTree = ""; + }; + B35105A52896659C00FA401F /* MSX - Philips VG-8010 */ = { + isa = PBXGroup; + children = ( + B35105A62896659C00FA401F /* config.ini */, + ); + path = "MSX - Philips VG-8010"; + sourceTree = ""; + }; + B35105A72896659C00FA401F /* MSX - Talent DPC-200 */ = { + isa = PBXGroup; + children = ( + B35105A82896659C00FA401F /* config.ini */, + ); + path = "MSX - Talent DPC-200"; + sourceTree = ""; + }; + B35105A92896659C00FA401F /* MSX2 - Sony HB-F700D */ = { + isa = PBXGroup; + children = ( + B35105AA2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F700D"; + sourceTree = ""; + }; + B35105AB2896659C00FA401F /* MSX2 - Daewoo CPC-300 */ = { + isa = PBXGroup; + children = ( + B35105AC2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Daewoo CPC-300"; + sourceTree = ""; + }; + B35105AD2896659C00FA401F /* MSX2 - Sony HB-F1XD */ = { + isa = PBXGroup; + children = ( + B35105AE2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F1XD"; + sourceTree = ""; + }; + B35105AF2896659C00FA401F /* MSXturboR - Panasonic FS-A1ST (a) */ = { + isa = PBXGroup; + children = ( + B35105B02896659C00FA401F /* config.ini */, + ); + path = "MSXturboR - Panasonic FS-A1ST (a)"; + sourceTree = ""; + }; + B35105B12896659C00FA401F /* MSX2 - Daewoo CPC-400S */ = { + isa = PBXGroup; + children = ( + B35105B22896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Daewoo CPC-400S"; + sourceTree = ""; + }; + B35105B32896659C00FA401F /* MSX - Panasonic CF-2700G */ = { + isa = PBXGroup; + children = ( + B35105B42896659C00FA401F /* config.ini */, + ); + path = "MSX - Panasonic CF-2700G"; + sourceTree = ""; + }; + B35105B52896659C00FA401F /* MSX - Philips VG-8020-20 */ = { + isa = PBXGroup; + children = ( + B35105B62896659C00FA401F /* config.ini */, + ); + path = "MSX - Philips VG-8020-20"; + sourceTree = ""; + }; + B35105B72896659C00FA401F /* MSX - Sanyo MPC-64 */ = { + isa = PBXGroup; + children = ( + B35105B82896659C00FA401F /* config.ini */, + ); + path = "MSX - Sanyo MPC-64"; + sourceTree = ""; + }; + B35105B92896659C00FA401F /* MSX2 - Philips NMS-8220 (a) */ = { + isa = PBXGroup; + children = ( + B35105BA2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8220 (a)"; + sourceTree = ""; + }; + B35105BB2896659C00FA401F /* MSX2 - Toshiba HX-23F */ = { + isa = PBXGroup; + children = ( + B35105BC2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Toshiba HX-23F"; + sourceTree = ""; + }; + B35105BD2896659C00FA401F /* MSX - Mitsubishi ML-FX1 */ = { + isa = PBXGroup; + children = ( + B35105BE2896659C00FA401F /* config.ini */, + ); + path = "MSX - Mitsubishi ML-FX1"; + sourceTree = ""; + }; + B35105BF2896659C00FA401F /* MSX2 - Sony HB-F900 (a) */ = { + isa = PBXGroup; + children = ( + B35105C02896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F900 (a)"; + sourceTree = ""; + }; + B35105C12896659C00FA401F /* MSX2 - Sony HB-F9S */ = { + isa = PBXGroup; + children = ( + B35105C22896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F9S"; + sourceTree = ""; + }; + B35105C32896659C00FA401F /* MSX - Toshiba HX-10S */ = { + isa = PBXGroup; + children = ( + B35105C42896659C00FA401F /* config.ini */, + ); + path = "MSX - Toshiba HX-10S"; + sourceTree = ""; + }; + B35105C52896659C00FA401F /* MSX2+ - Sanyo Wavy PHC-70FD1 */ = { + isa = PBXGroup; + children = ( + B35105C62896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Sanyo Wavy PHC-70FD1"; + sourceTree = ""; + }; + B35105C72896659C00FA401F /* SEGA - SC-3000 */ = { + isa = PBXGroup; + children = ( + B35105C82896659C00FA401F /* config.ini */, + ); + path = "SEGA - SC-3000"; + sourceTree = ""; + }; + B35105C92896659C00FA401F /* MSX - Sanyo PHC-28S */ = { + isa = PBXGroup; + children = ( + B35105CA2896659C00FA401F /* config.ini */, + ); + path = "MSX - Sanyo PHC-28S"; + sourceTree = ""; + }; + B35105CB2896659C00FA401F /* MSX - Frael Bruc 100-1 */ = { + isa = PBXGroup; + children = ( + B35105CC2896659C00FA401F /* config.ini */, + ); + path = "MSX - Frael Bruc 100-1"; + sourceTree = ""; + }; + B35105CD2896659C00FA401F /* MSX2 - Panasonic FS-A1F */ = { + isa = PBXGroup; + children = ( + B35105CE2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Panasonic FS-A1F"; + sourceTree = ""; + }; + B35105CF2896659C00FA401F /* MSX - Spectravideo SVI-728 */ = { + isa = PBXGroup; + children = ( + B35105D02896659C00FA401F /* config.ini */, + ); + path = "MSX - Spectravideo SVI-728"; + sourceTree = ""; + }; + B35105D12896659C00FA401F /* MSX - Sony HB-20P */ = { + isa = PBXGroup; + children = ( + B35105D22896659C00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-20P"; + sourceTree = ""; + }; + B35105D32896659C00FA401F /* MSX2 - C-BIOS */ = { + isa = PBXGroup; + children = ( + B35105D42896659C00FA401F /* cbios_sub.rom */, + B35105D52896659C00FA401F /* cbios.txt */, + B35105D62896659C00FA401F /* cbios_logo_msx2.rom */, + B35105D72896659C00FA401F /* config.ini */, + B35105D82896659C00FA401F /* cbios_main_msx2.rom */, + ); + path = "MSX2 - C-BIOS"; + sourceTree = ""; + }; + B35105D92896659C00FA401F /* MSX2 - Philips VG-8240 */ = { + isa = PBXGroup; + children = ( + B35105DA2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips VG-8240"; + sourceTree = ""; + }; + B35105DB2896659C00FA401F /* MSX - National CF-3000 */ = { + isa = PBXGroup; + children = ( + B35105DC2896659C00FA401F /* config.ini */, + ); + path = "MSX - National CF-3000"; + sourceTree = ""; + }; + B35105DD2896659C00FA401F /* MSX2+ - Sony HB-F9S+ */ = { + isa = PBXGroup; + children = ( + B35105DE2896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Sony HB-F9S+"; + sourceTree = ""; + }; + B35105DF2896659C00FA401F /* MSX - Mitsubishi ML-F80 */ = { + isa = PBXGroup; + children = ( + B35105E02896659C00FA401F /* config.ini */, + ); + path = "MSX - Mitsubishi ML-F80"; + sourceTree = ""; + }; + B35105E12896659C00FA401F /* MSXturboR - Panasonic FS-A1GT */ = { + isa = PBXGroup; + children = ( + B35105E22896659C00FA401F /* config.ini */, + ); + path = "MSXturboR - Panasonic FS-A1GT"; + sourceTree = ""; + }; + B35105E32896659C00FA401F /* MSX - JVC HC-7GB */ = { + isa = PBXGroup; + children = ( + B35105E42896659C00FA401F /* config.ini */, + ); + path = "MSX - JVC HC-7GB"; + sourceTree = ""; + }; + B35105E52896659C00FA401F /* SVI - Spectravideo SVI-328 80 Swedish */ = { + isa = PBXGroup; + children = ( + B35105E62896659C00FA401F /* config.ini */, + B35105E72896659C00FA401F /* svi328a.rom */, + B35105E82896659C00FA401F /* svi806se.rom */, + ); + path = "SVI - Spectravideo SVI-328 80 Swedish"; + sourceTree = ""; + }; + B35105E92896659C00FA401F /* MSX2+ - Panasonic FS-A1WSX */ = { + isa = PBXGroup; + children = ( + B35105EA2896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Panasonic FS-A1WSX"; + sourceTree = ""; + }; + B35105EB2896659C00FA401F /* MSX2 - Philips VG-8235 */ = { + isa = PBXGroup; + children = ( + B35105EC2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips VG-8235"; + sourceTree = ""; + }; + B35105ED2896659C00FA401F /* MSX2 - Toshiba HX-23 */ = { + isa = PBXGroup; + children = ( + B35105EE2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Toshiba HX-23"; + sourceTree = ""; + }; + B35105EF2896659C00FA401F /* MSX2 - Philips NMS-8245F */ = { + isa = PBXGroup; + children = ( + B35105F02896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8245F"; + sourceTree = ""; + }; + B35105F12896659C00FA401F /* MSX - Olympia PHC-28 */ = { + isa = PBXGroup; + children = ( + B35105F22896659C00FA401F /* config.ini */, + ); + path = "MSX - Olympia PHC-28"; + sourceTree = ""; + }; + B35105F32896659C00FA401F /* MSX - National FS-1300 */ = { + isa = PBXGroup; + children = ( + B35105F42896659C00FA401F /* config.ini */, + ); + path = "MSX - National FS-1300"; + sourceTree = ""; + }; + B35105F52896659C00FA401F /* MSX2 - Philips NMS-8280G */ = { + isa = PBXGroup; + children = ( + B35105F62896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8280G"; + sourceTree = ""; + }; + B35105F72896659C00FA401F /* MSX - Yashica YC-64 */ = { + isa = PBXGroup; + children = ( + B35105F82896659C00FA401F /* config.ini */, + ); + path = "MSX - Yashica YC-64"; + sourceTree = ""; + }; + B35105F92896659C00FA401F /* MSX - Talent DPC-200A */ = { + isa = PBXGroup; + children = ( + B35105FA2896659C00FA401F /* config.ini */, + ); + path = "MSX - Talent DPC-200A"; + sourceTree = ""; + }; + B35105FB2896659C00FA401F /* MSX - Spectravideo SVI-738 */ = { + isa = PBXGroup; + children = ( + B35105FC2896659C00FA401F /* config.ini */, + ); + path = "MSX - Spectravideo SVI-738"; + sourceTree = ""; + }; + B35105FD2896659C00FA401F /* MSX - Philips VG-8020-00 */ = { + isa = PBXGroup; + children = ( + B35105FE2896659C00FA401F /* config.ini */, + ); + path = "MSX - Philips VG-8020-00"; + sourceTree = ""; + }; + B35105FF2896659C00FA401F /* MSX2+ - Sony HB-F1XV */ = { + isa = PBXGroup; + children = ( + B35106002896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Sony HB-F1XV"; + sourceTree = ""; + }; + B35106012896659C00FA401F /* MSX2+ - Ciel Expert 3 Turbo */ = { + isa = PBXGroup; + children = ( + B35106022896659C00FA401F /* config.ini */, + ); + path = "MSX2+ - Ciel Expert 3 Turbo"; + sourceTree = ""; + }; + B35106032896659C00FA401F /* MSX2 - Korean */ = { + isa = PBXGroup; + children = ( + B35106042896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Korean"; + sourceTree = ""; + }; + B35106052896659C00FA401F /* SVI - Spectravideo SVI-328 80 Column */ = { + isa = PBXGroup; + children = ( + B35106062896659C00FA401F /* config.ini */, + B35106072896659C00FA401F /* svi328a.rom */, + B35106082896659C00FA401F /* svi806.rom */, + ); + path = "SVI - Spectravideo SVI-328 80 Column"; + sourceTree = ""; + }; + B35106092896659C00FA401F /* MSX - Olympia PHC-2 */ = { + isa = PBXGroup; + children = ( + B351060A2896659C00FA401F /* config.ini */, + ); + path = "MSX - Olympia PHC-2"; + sourceTree = ""; + }; + B351060B2896659C00FA401F /* MSX2 - Sony HB-F500P */ = { + isa = PBXGroup; + children = ( + B351060C2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F500P"; + sourceTree = ""; + }; + B351060D2896659C00FA401F /* MSX2 - Sony HB-F1XDMK2 */ = { + isa = PBXGroup; + children = ( + B351060E2896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F1XDMK2"; + sourceTree = ""; + }; + B351060F2896659C00FA401F /* MSX2 - Estonian */ = { + isa = PBXGroup; + children = ( + B35106102896659C00FA401F /* config.ini */, + ); + path = "MSX2 - Estonian"; + sourceTree = ""; + }; + B35106112896659C00FA401F /* MSX - Sharp Epcom HotBit 1.2 */ = { + isa = PBXGroup; + children = ( + B35106122896659C00FA401F /* config.ini */, + ); + path = "MSX - Sharp Epcom HotBit 1.2"; + sourceTree = ""; + }; + B35106132896659C00FA401F /* SVI - Spectravideo SVI-328 MK2 */ = { + isa = PBXGroup; + children = ( + B35106142896659C00FA401F /* config.ini */, + B35106152896659C00FA401F /* svi328a.rom */, + B35106162896659C00FA401F /* svi806.rom */, + ); + path = "SVI - Spectravideo SVI-328 MK2"; + sourceTree = ""; + }; + B35106172896659C00FA401F /* MSX2+ */ = { + isa = PBXGroup; + children = ( + B35106182896659D00FA401F /* config.ini */, + ); + path = "MSX2+"; + sourceTree = ""; + }; + B35106192896659D00FA401F /* MSX - German */ = { + isa = PBXGroup; + children = ( + B351061A2896659D00FA401F /* config.ini */, + ); + path = "MSX - German"; + sourceTree = ""; + }; + B351061B2896659D00FA401F /* MSX - Japanese */ = { + isa = PBXGroup; + children = ( + B351061C2896659D00FA401F /* config.ini */, + ); + path = "MSX - Japanese"; + sourceTree = ""; + }; + B351061D2896659D00FA401F /* MSX - Philips VG-8000 */ = { + isa = PBXGroup; + children = ( + B351061E2896659D00FA401F /* config.ini */, + ); + path = "MSX - Philips VG-8000"; + sourceTree = ""; + }; + B351061F2896659D00FA401F /* MSX - Gradiente Expert 1.3 */ = { + isa = PBXGroup; + children = ( + B35106202896659D00FA401F /* config.ini */, + ); + path = "MSX - Gradiente Expert 1.3"; + sourceTree = ""; + }; + B35106212896659D00FA401F /* MSX - Sony HB-55P */ = { + isa = PBXGroup; + children = ( + B35106222896659D00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-55P"; + sourceTree = ""; + }; + B35106232896659D00FA401F /* MSXturboR */ = { + isa = PBXGroup; + children = ( + B35106242896659D00FA401F /* config.ini */, + ); + path = MSXturboR; + sourceTree = ""; + }; + B35106252896659D00FA401F /* MSX2 - Yamaha CX7M */ = { + isa = PBXGroup; + children = ( + B35106262896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Yamaha CX7M"; + sourceTree = ""; + }; + B35106272896659D00FA401F /* MSX - Sony HB-55D */ = { + isa = PBXGroup; + children = ( + B35106282896659D00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-55D"; + sourceTree = ""; + }; + B35106292896659D00FA401F /* MSX2 - Talent TPC-310 */ = { + isa = PBXGroup; + children = ( + B351062A2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Talent TPC-310"; + sourceTree = ""; + }; + B351062B2896659D00FA401F /* MSX2 - Brazilian */ = { + isa = PBXGroup; + children = ( + B351062C2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Brazilian"; + sourceTree = ""; + }; + B351062D2896659D00FA401F /* MSX2 - Panasonic FS-A1 */ = { + isa = PBXGroup; + children = ( + B351062E2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Panasonic FS-A1"; + sourceTree = ""; + }; + B351062F2896659D00FA401F /* MSX - Sanyo Wavy MPC-10 */ = { + isa = PBXGroup; + children = ( + B35106302896659D00FA401F /* config.ini */, + ); + path = "MSX - Sanyo Wavy MPC-10"; + sourceTree = ""; + }; + B35106312896659D00FA401F /* MSX */ = { + isa = PBXGroup; + children = ( + B35106322896659D00FA401F /* config.ini */, + ); + path = MSX; + sourceTree = ""; + }; + B35106332896659D00FA401F /* MSX2+ - European */ = { + isa = PBXGroup; + children = ( + B35106342896659D00FA401F /* KANJI.rom */, + B35106352896659D00FA401F /* Msx2pexte.rom */, + B35106362896659D00FA401F /* PANASONICDISK.rom */, + B35106372896659D00FA401F /* MSX2PMUS.rom */, + B35106382896659D00FA401F /* config.ini */, + B35106392896659D00FA401F /* MSXKANJI.rom */, + B351063A2896659D00FA401F /* XBASIC2.rom */, + B351063B2896659D00FA401F /* Msx2pe.rom */, + ); + path = "MSX2+ - European"; + sourceTree = ""; + }; + B351063C2896659D00FA401F /* MSX2 - National FS-5000 */ = { + isa = PBXGroup; + children = ( + B351063D2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - National FS-5000"; + sourceTree = ""; + }; + B351063E2896659D00FA401F /* MSX2 - Philips VG-8235F */ = { + isa = PBXGroup; + children = ( + B351063F2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Philips VG-8235F"; + sourceTree = ""; + }; + B35106402896659D00FA401F /* MSX2 - Virtual Haesung Console */ = { + isa = PBXGroup; + children = ( + B35106412896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Virtual Haesung Console"; + sourceTree = ""; + }; + B35106422896659D00FA401F /* MSX2 - Sony HB-F900 */ = { + isa = PBXGroup; + children = ( + B35106432896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F900"; + sourceTree = ""; + }; + B35106442896659D00FA401F /* MSX - Yamaha YIS503 */ = { + isa = PBXGroup; + children = ( + B35106452896659D00FA401F /* config.ini */, + ); + path = "MSX - Yamaha YIS503"; + sourceTree = ""; + }; + B35106462896659D00FA401F /* MSX - Daewoo DPC-200 */ = { + isa = PBXGroup; + children = ( + B35106472896659D00FA401F /* config.ini */, + ); + path = "MSX - Daewoo DPC-200"; + sourceTree = ""; + }; + B35106482896659D00FA401F /* MSX2 - Sharp Epcom HotBit 2.0 */ = { + isa = PBXGroup; + children = ( + B35106492896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sharp Epcom HotBit 2.0"; + sourceTree = ""; + }; + B351064A2896659D00FA401F /* MSX2 - National FS-5500F2 */ = { + isa = PBXGroup; + children = ( + B351064B2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - National FS-5500F2"; + sourceTree = ""; + }; + B351064C2896659D00FA401F /* MSX - Spectravideo SVI-738 Swedish */ = { + isa = PBXGroup; + children = ( + B351064D2896659D00FA401F /* config.ini */, + ); + path = "MSX - Spectravideo SVI-738 Swedish"; + sourceTree = ""; + }; + B351064E2896659D00FA401F /* MSX - Brazilian */ = { + isa = PBXGroup; + children = ( + B351064F2896659D00FA401F /* config.ini */, + ); + path = "MSX - Brazilian"; + sourceTree = ""; + }; + B35106502896659D00FA401F /* SEGA - SF-7000 */ = { + isa = PBXGroup; + children = ( + B35106512896659D00FA401F /* config.ini */, + B35106522896659D00FA401F /* sf7000.rom */, + ); + path = "SEGA - SF-7000"; + sourceTree = ""; + }; + B35106532896659D00FA401F /* MSX - Yeno DPC-64 */ = { + isa = PBXGroup; + children = ( + B35106542896659D00FA401F /* config.ini */, + ); + path = "MSX - Yeno DPC-64"; + sourceTree = ""; + }; + B35106552896659D00FA401F /* MSX2 - German */ = { + isa = PBXGroup; + children = ( + B35106562896659D00FA401F /* config.ini */, + ); + path = "MSX2 - German"; + sourceTree = ""; + }; + B35106572896659D00FA401F /* MSX - Sanyo MPC-100 */ = { + isa = PBXGroup; + children = ( + B35106582896659D00FA401F /* config.ini */, + ); + path = "MSX - Sanyo MPC-100"; + sourceTree = ""; + }; + B35106592896659D00FA401F /* MSX - Goldstar FC-200 */ = { + isa = PBXGroup; + children = ( + B351065A2896659D00FA401F /* config.ini */, + ); + path = "MSX - Goldstar FC-200"; + sourceTree = ""; + }; + B351065B2896659D00FA401F /* MSX2 - Sony HB-F700F */ = { + isa = PBXGroup; + children = ( + B351065C2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F700F"; + sourceTree = ""; + }; + B351065D2896659D00FA401F /* MSX - Yamaha CX5M-2 */ = { + isa = PBXGroup; + children = ( + B351065E2896659D00FA401F /* config.ini */, + ); + path = "MSX - Yamaha CX5M-2"; + sourceTree = ""; + }; + B351065F2896659D00FA401F /* MSX2+ - Panasonic FS-A1WX */ = { + isa = PBXGroup; + children = ( + B35106602896659D00FA401F /* config.ini */, + ); + path = "MSX2+ - Panasonic FS-A1WX"; + sourceTree = ""; + }; + B35106612896659D00FA401F /* MSX2 - Gradiente Expert 2.0 */ = { + isa = PBXGroup; + children = ( + B35106622896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Gradiente Expert 2.0"; + sourceTree = ""; + }; + B35106632896659D00FA401F /* MSX2 - Sony HB-F700S */ = { + isa = PBXGroup; + children = ( + B35106642896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F700S"; + sourceTree = ""; + }; + B35106652896659D00FA401F /* MSX2 - Al Alamiah AX-370 */ = { + isa = PBXGroup; + children = ( + B35106662896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Al Alamiah AX-370"; + sourceTree = ""; + }; + B35106672896659D00FA401F /* MSX - Pioneer PX-V60 */ = { + isa = PBXGroup; + children = ( + B35106682896659D00FA401F /* config.ini */, + ); + path = "MSX - Pioneer PX-V60"; + sourceTree = ""; + }; + B35106692896659D00FA401F /* MSX2+ - Sony HB-F1XDJ */ = { + isa = PBXGroup; + children = ( + B351066A2896659D00FA401F /* config.ini */, + ); + path = "MSX2+ - Sony HB-F1XDJ"; + sourceTree = ""; + }; + B351066B2896659D00FA401F /* MSX2+ - Brazilian */ = { + isa = PBXGroup; + children = ( + B351066C2896659D00FA401F /* config.ini */, + ); + path = "MSX2+ - Brazilian"; + sourceTree = ""; + }; + B351066D2896659D00FA401F /* COL - Bit Corporation Dina */ = { + isa = PBXGroup; + children = ( + B351066E2896659D00FA401F /* czz50-2.rom */, + B351066F2896659D00FA401F /* czz50-1.rom */, + B35106702896659D00FA401F /* config.ini */, + ); + path = "COL - Bit Corporation Dina"; + sourceTree = ""; + }; + B35106712896659D00FA401F /* MSXturboR - Panasonic FS-A1ST */ = { + isa = PBXGroup; + children = ( + B35106722896659D00FA401F /* config.ini */, + ); + path = "MSXturboR - Panasonic FS-A1ST"; + sourceTree = ""; + }; + B35106732896659D00FA401F /* MSX2 - Philips NMS-8255 */ = { + isa = PBXGroup; + children = ( + B35106742896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Philips NMS-8255"; + sourceTree = ""; + }; + B35106752896659D00FA401F /* MSX2+ - Panasonic FS-A1WX (a) */ = { + isa = PBXGroup; + children = ( + B35106762896659D00FA401F /* config.ini */, + ); + path = "MSX2+ - Panasonic FS-A1WX (a)"; + sourceTree = ""; + }; + B35106772896659D00FA401F /* COL - Spectravideo SVI-603 Coleco */ = { + isa = PBXGroup; + children = ( + B35106782896659D00FA401F /* SVI603.ROM */, + B35106792896659D00FA401F /* config.ini */, + ); + path = "COL - Spectravideo SVI-603 Coleco"; + sourceTree = ""; + }; + B351067A2896659D00FA401F /* COL - ColecoVision */ = { + isa = PBXGroup; + children = ( + B351067B2896659D00FA401F /* coleco.rom */, + B351067C2896659D00FA401F /* config.ini */, + ); + path = "COL - ColecoVision"; + sourceTree = ""; + }; + B351067D2896659D00FA401F /* MSX - Estonian */ = { + isa = PBXGroup; + children = ( + B351067E2896659D00FA401F /* config.ini */, + ); + path = "MSX - Estonian"; + sourceTree = ""; + }; + B351067F2896659D00FA401F /* MSX - Yamaha YIS503F */ = { + isa = PBXGroup; + children = ( + B35106802896659D00FA401F /* config.ini */, + ); + path = "MSX - Yamaha YIS503F"; + sourceTree = ""; + }; + B35106812896659D00FA401F /* MSXturboR - European */ = { + isa = PBXGroup; + children = ( + B35106822896659D00FA401F /* config.ini */, + ); + path = "MSXturboR - European"; + sourceTree = ""; + }; + B35106832896659D00FA401F /* MSX - Sony HB-201P */ = { + isa = PBXGroup; + children = ( + B35106842896659D00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-201P"; + sourceTree = ""; + }; + B35106852896659D00FA401F /* MSX2 - Panasonic FS-A1FM */ = { + isa = PBXGroup; + children = ( + B35106862896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Panasonic FS-A1FM"; + sourceTree = ""; + }; + B35106872896659D00FA401F /* MSX2 - Panasonic FS-A1 (a) */ = { + isa = PBXGroup; + children = ( + B35106882896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Panasonic FS-A1 (a)"; + sourceTree = ""; + }; + B35106892896659D00FA401F /* MSX2 - Sony HB-F9P Russian */ = { + isa = PBXGroup; + children = ( + B351068A2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F9P Russian"; + sourceTree = ""; + }; + B351068B2896659D00FA401F /* MSX - Yamaha YIS503IIR Estonian */ = { + isa = PBXGroup; + children = ( + B351068C2896659D00FA401F /* config.ini */, + ); + path = "MSX - Yamaha YIS503IIR Estonian"; + sourceTree = ""; + }; + B351068D2896659D00FA401F /* MSX2 - National FS-4700 */ = { + isa = PBXGroup; + children = ( + B351068E2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - National FS-4700"; + sourceTree = ""; + }; + B351068F2896659D00FA401F /* MSX - Spanish */ = { + isa = PBXGroup; + children = ( + B35106902896659D00FA401F /* config.ini */, + ); + path = "MSX - Spanish"; + sourceTree = ""; + }; + B35106912896659D00FA401F /* MSX - Sharp Epcom HotBit 1.3b */ = { + isa = PBXGroup; + children = ( + B35106922896659D00FA401F /* config.ini */, + ); + path = "MSX - Sharp Epcom HotBit 1.3b"; + sourceTree = ""; + }; + B35106932896659D00FA401F /* SVI - Spectravideo SVI-318 */ = { + isa = PBXGroup; + children = ( + B35106942896659D00FA401F /* config.ini */, + B35106952896659D00FA401F /* svi318.rom */, + ); + path = "SVI - Spectravideo SVI-318"; + sourceTree = ""; + }; + B35106962896659D00FA401F /* MSX2 - Sony HB-F9P */ = { + isa = PBXGroup; + children = ( + B35106972896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F9P"; + sourceTree = ""; + }; + B35106982896659D00FA401F /* MSX2 - Japanese */ = { + isa = PBXGroup; + children = ( + B35106992896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Japanese"; + sourceTree = ""; + }; + B351069A2896659D00FA401F /* MSX - Sharp Epcom HotBit 1.3p */ = { + isa = PBXGroup; + children = ( + B351069B2896659D00FA401F /* config.ini */, + ); + path = "MSX - Sharp Epcom HotBit 1.3p"; + sourceTree = ""; + }; + B351069C2896659D00FA401F /* MSX - Gradiente Expert Plus */ = { + isa = PBXGroup; + children = ( + B351069D2896659D00FA401F /* config.ini */, + ); + path = "MSX - Gradiente Expert Plus"; + sourceTree = ""; + }; + B351069E2896659D00FA401F /* MSX - Korean */ = { + isa = PBXGroup; + children = ( + B351069F2896659D00FA401F /* config.ini */, + ); + path = "MSX - Korean"; + sourceTree = ""; + }; + B35106A02896659D00FA401F /* MSX2 - Swedish */ = { + isa = PBXGroup; + children = ( + B35106A12896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Swedish"; + sourceTree = ""; + }; + B35106A22896659D00FA401F /* MSX2+ - Panasonic FS-A1FX */ = { + isa = PBXGroup; + children = ( + B35106A32896659D00FA401F /* config.ini */, + ); + path = "MSX2+ - Panasonic FS-A1FX"; + sourceTree = ""; + }; + B35106A42896659D00FA401F /* MSX - National FS-4000 */ = { + isa = PBXGroup; + children = ( + B35106A52896659D00FA401F /* config.ini */, + ); + path = "MSX - National FS-4000"; + sourceTree = ""; + }; + B35106A62896659D00FA401F /* MSX - Daewoo DPC-200E */ = { + isa = PBXGroup; + children = ( + B35106A72896659D00FA401F /* config.ini */, + ); + path = "MSX - Daewoo DPC-200E"; + sourceTree = ""; + }; + B35106A82896659D00FA401F /* MSX - Gradiente Expert DDPlus */ = { + isa = PBXGroup; + children = ( + B35106A92896659D00FA401F /* config.ini */, + ); + path = "MSX - Gradiente Expert DDPlus"; + sourceTree = ""; + }; + B35106AA2896659D00FA401F /* MSX - Swedish */ = { + isa = PBXGroup; + children = ( + B35106AB2896659D00FA401F /* config.ini */, + ); + path = "MSX - Swedish"; + sourceTree = ""; + }; + B35106AC2896659D00FA401F /* MSX2 - Sanyo Wavy PHC-23 */ = { + isa = PBXGroup; + children = ( + B35106AD2896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sanyo Wavy PHC-23"; + sourceTree = ""; + }; + B35106AE2896659D00FA401F /* MSX - Yeno MX64 */ = { + isa = PBXGroup; + children = ( + B35106AF2896659D00FA401F /* config.ini */, + ); + path = "MSX - Yeno MX64"; + sourceTree = ""; + }; + B35106B02896659D00FA401F /* MSX - Sanyo PHC-28L */ = { + isa = PBXGroup; + children = ( + B35106B12896659D00FA401F /* config.ini */, + ); + path = "MSX - Sanyo PHC-28L"; + sourceTree = ""; + }; + B35106B22896659D00FA401F /* MSX - Sony HB-201 */ = { + isa = PBXGroup; + children = ( + B35106B32896659D00FA401F /* config.ini */, + ); + path = "MSX - Sony HB-201"; + sourceTree = ""; + }; + B35106B42896659D00FA401F /* MSX - Daewoo DPC-100 */ = { + isa = PBXGroup; + children = ( + B35106B52896659D00FA401F /* config.ini */, + ); + path = "MSX - Daewoo DPC-100"; + sourceTree = ""; + }; + B35106B62896659D00FA401F /* SVI - Spectravideo SVI-328 */ = { + isa = PBXGroup; + children = ( + B35106B72896659D00FA401F /* svi328.rom */, + B35106B82896659D00FA401F /* config.ini */, + ); + path = "SVI - Spectravideo SVI-328"; + sourceTree = ""; + }; + B35106B92896659D00FA401F /* COL - ColecoVision with Opcode Memory Extension */ = { + isa = PBXGroup; + children = ( + B35106BA2896659D00FA401F /* coleco.rom */, + B35106BB2896659D00FA401F /* config.ini */, + ); + path = "COL - ColecoVision with Opcode Memory Extension"; + sourceTree = ""; + }; + B35106BC2896659D00FA401F /* MSX2+ - Sanyo Wavy PHC-35J */ = { + isa = PBXGroup; + children = ( + B35106BD2896659D00FA401F /* config.ini */, + ); + path = "MSX2+ - Sanyo Wavy PHC-35J"; + sourceTree = ""; + }; + B35106BE2896659D00FA401F /* MSX2+ - Sanyo Wavy PHC-70FD2 */ = { + isa = PBXGroup; + children = ( + B35106BF2896659D00FA401F /* config.ini */, + ); + path = "MSX2+ - Sanyo Wavy PHC-70FD2"; + sourceTree = ""; + }; + B35106C02896659D00FA401F /* MSX2 - Spanish */ = { + isa = PBXGroup; + children = ( + B35106C12896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Spanish"; + sourceTree = ""; + }; + B35106C22896659D00FA401F /* MSX - Al Alamiah AX-170 */ = { + isa = PBXGroup; + children = ( + B35106C32896659D00FA401F /* config.ini */, + ); + path = "MSX - Al Alamiah AX-170"; + sourceTree = ""; + }; + B35106C42896659D00FA401F /* MSX2 - Sanyo Wavy MPC-25FD */ = { + isa = PBXGroup; + children = ( + B35106C52896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sanyo Wavy MPC-25FD"; + sourceTree = ""; + }; + B35106C62896659D00FA401F /* MSX2 - Yamaha CX7M-128 */ = { + isa = PBXGroup; + children = ( + B35106C72896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Yamaha CX7M-128"; + sourceTree = ""; + }; + B35106C82896659D00FA401F /* MSX2 - Sony HB-F1II */ = { + isa = PBXGroup; + children = ( + B35106C92896659D00FA401F /* config.ini */, + ); + path = "MSX2 - Sony HB-F1II"; + sourceTree = ""; + }; + B35106CC2896659D00FA401F /* .github */ = { + isa = PBXGroup; + children = ( + B35106CD2896659D00FA401F /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B35106CD2896659D00FA401F /* workflows */ = { + isa = PBXGroup; + children = ( + B35106CE2896659D00FA401F /* compilation.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B35106CF2896659D00FA401F /* libretro-common */ = { + isa = PBXGroup; + children = ( + B35106D02896659D00FA401F /* compat */, + B35106D32896659D00FA401F /* file */, + B35106D52896659D00FA401F /* include */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B35106D02896659D00FA401F /* compat */ = { + isa = PBXGroup; + children = ( + B35106D12896659D00FA401F /* compat_strcasestr.c */, + B35106D22896659D00FA401F /* compat_snprintf.c */, + ); + path = compat; + sourceTree = ""; + }; + B35106D32896659D00FA401F /* file */ = { + isa = PBXGroup; + children = ( + B35106D42896659D00FA401F /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B35106D52896659D00FA401F /* include */ = { + isa = PBXGroup; + children = ( + B35106D62896659D00FA401F /* compat */, + B35106DB2896659D00FA401F /* retro_common_api.h */, + B35106DC2896659D00FA401F /* retro_dirent.h */, + B35106DD2896659D00FA401F /* retro_inline.h */, + B35106DE2896659D00FA401F /* retro_miscellaneous.h */, + B35106DF2896659D00FA401F /* boolean.h */, + B35106E02896659D00FA401F /* libretro.h */, + B35106E12896659D00FA401F /* retro_common.h */, + ); + path = include; + sourceTree = ""; + }; + B35106D62896659D00FA401F /* compat */ = { + isa = PBXGroup; + children = ( + B35106D72896659D00FA401F /* strcasestr.h */, + B35106D82896659D00FA401F /* msvc */, + B35106DA2896659D00FA401F /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B35106D82896659D00FA401F /* msvc */ = { + isa = PBXGroup; + children = ( + B35106D92896659D00FA401F /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B35106E22896659D00FA401F /* deps */ = { + isa = PBXGroup; + children = ( + B35106E32896659D00FA401F /* zlib */, + ); + path = deps; + sourceTree = ""; + }; + B35106E32896659D00FA401F /* zlib */ = { + isa = PBXGroup; + children = ( + B35106E42896659D00FA401F /* zutil.h */, + B35106E52896659D00FA401F /* inftrees.h */, + B35106E62896659D00FA401F /* inflate.c */, + B35106E72896659D00FA401F /* compress.c */, + B35106E82896659D00FA401F /* deflate.c */, + B35106E92896659D00FA401F /* inffixed.h */, + B35106EA2896659D00FA401F /* gzread.c */, + B35106EB2896659D00FA401F /* zconf.h.in */, + B35106EC2896659D00FA401F /* trees.h */, + B35106ED2896659D00FA401F /* inffast.h */, + B35106EE2896659D00FA401F /* crc32.c */, + B35106EF2896659D00FA401F /* infback.c */, + B35106F02896659D00FA401F /* zutil.c */, + B35106F12896659D00FA401F /* deflate.h */, + B35106F22896659D00FA401F /* gzguts.h */, + B35106F32896659D00FA401F /* zlib.h */, + B35106F42896659D00FA401F /* gzlib.c */, + B35106F52896659D00FA401F /* inflate.h */, + B35106F62896659D00FA401F /* inftrees.c */, + B35106F72896659D00FA401F /* uncompr.c */, + B35106F82896659D00FA401F /* gzwrite.c */, + B35106F92896659D00FA401F /* trees.c */, + B35106FA2896659D00FA401F /* gzclose.c */, + B35106FB2896659D00FA401F /* crc32.h */, + B35106FC2896659D00FA401F /* inffast.c */, + B35106FD2896659D00FA401F /* adler32.c */, + B35106FE2896659D00FA401F /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B35107022896659D00FA401F /* jni */ = { + isa = PBXGroup; + children = ( + B35107032896659D00FA401F /* Android.mk */, + B35107042896659D00FA401F /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B35107072896659D00FA401F /* Src */ = { + isa = PBXGroup; + children = ( + B35109282896659E00FA401F /* Arch */, + B351093F2896659E00FA401F /* Bios */, + B35108382896659E00FA401F /* Board */, + B35109572896659F00FA401F /* BuildInfo */, + B351090C2896659E00FA401F /* Common */, + B351093A2896659E00FA401F /* Debugger */, + B35109442896659E00FA401F /* Emulator */, + B35108A02896659E00FA401F /* Input */, + B35108472896659E00FA401F /* IoDevice */, + B35108FB2896659E00FA401F /* Language */, + B35109102896659E00FA401F /* Libretro */, + B351095B2896659F00FA401F /* Media */, + B35107412896659D00FA401F /* Memory */, + B35107082896659D00FA401F /* SoundChips */, + B35109522896659F00FA401F /* ThirdParty */, + B351073A2896659D00FA401F /* TinyXML */, + B35108C72896659E00FA401F /* Unzip */, + B35108E72896659E00FA401F /* Utils */, + B35108FE2896659E00FA401F /* VideoChips */, + B35109412896659E00FA401F /* VideoRender */, + B35108972896659E00FA401F /* Z80 */, + ); + path = Src; + sourceTree = ""; + }; + B35107082896659D00FA401F /* SoundChips */ = { + isa = PBXGroup; + children = ( + B35107092896659D00FA401F /* Y8950.c */, + B351070A2896659D00FA401F /* YM2413.h */, + B351070B2896659D00FA401F /* OpenMsxY8950Adpcm.h */, + B351070C2896659D00FA401F /* Fmopl.c */, + B351070D2896659D00FA401F /* OpenMsxYMF278.h */, + B351070E2896659D00FA401F /* DAC.h */, + B351070F2896659D00FA401F /* SN76489.c */, + B35107102896659D00FA401F /* KeyClick.c */, + B35107112896659D00FA401F /* MameVLM5030.h */, + B35107122896659D00FA401F /* OpenMsxYMF262.h */, + B35107132896659D00FA401F /* Moonsound.cpp */, + B35107142896659D00FA401F /* VLM5030VoiceData.h */, + B35107152896659D00FA401F /* AudioMixer.h */, + B35107162896659D00FA401F /* OpenMsxYMF278.cpp */, + B35107172896659D00FA401F /* OpenMsxY8950.h */, + B35107182896659D00FA401F /* ym2151.c */, + B35107192896659D00FA401F /* AY8910.h */, + B351071A2896659D00FA401F /* YM2413.cpp */, + B351071B2896659D00FA401F /* VLM5030.c */, + B351071C2896659D00FA401F /* MameYM2151.h */, + B351071D2896659D00FA401F /* OpenMsxY8950.cpp */, + B351071E2896659D00FA401F /* SCC.c */, + B351071F2896659D00FA401F /* MsxPsg.h */, + B35107202896659D00FA401F /* OpenMsxYM2413_2.cpp */, + B35107212896659D00FA401F /* Ymdeltat.h */, + B35107222896659D00FA401F /* SamplePlayer.c */, + B35107232896659D00FA401F /* DAC.c */, + B35107242896659D00FA401F /* SN76489.h */, + B35107252896659D00FA401F /* OpenMsxY8950Adpcm.cpp */, + B35107262896659D00FA401F /* Fmopl.h */, + B35107272896659D00FA401F /* Y8950.h */, + B35107282896659D00FA401F /* AudioMixer.c */, + B35107292896659D00FA401F /* ym2151.h */, + B351072A2896659D00FA401F /* MameVLM5030.c */, + B351072B2896659D00FA401F /* MsxAudio.h */, + B351072C2896659D00FA401F /* KeyClick.h */, + B351072D2896659D00FA401F /* MsxPsg.c */, + B351072E2896659D00FA401F /* SCC.h */, + B351072F2896659D00FA401F /* MameYM2151.c */, + B35107302896659D00FA401F /* OpenMsxYM2413.cpp */, + B35107312896659D00FA401F /* OpenMsxYMF262.cpp */, + B35107322896659D00FA401F /* VLM5030.h */, + B35107332896659D00FA401F /* OpenMsxYM2413.h */, + B35107342896659D00FA401F /* AY8910.c */, + B35107352896659D00FA401F /* Ymdeltat.c */, + B35107362896659D00FA401F /* SamplePlayer.h */, + B35107372896659D00FA401F /* Moonsound.h */, + B35107382896659D00FA401F /* MsxAudio.cpp */, + B35107392896659D00FA401F /* OpenMsxYM2413_2.h */, + ); + path = SoundChips; + sourceTree = ""; + }; + B351073A2896659D00FA401F /* TinyXML */ = { + isa = PBXGroup; + children = ( + B351073B2896659D00FA401F /* tinyxml.h */, + B351073C2896659D00FA401F /* TinyStr.h */, + B351073D2896659D00FA401F /* tinystr.cpp */, + B351073E2896659D00FA401F /* tinyxmlparser.cpp */, + B351073F2896659D00FA401F /* tinyxmlerror.cpp */, + B35107402896659D00FA401F /* tinyxml.cpp */, + ); + path = TinyXML; + sourceTree = ""; + }; + B35107412896659D00FA401F /* Memory */ = { + isa = PBXGroup; + children = ( + B35107422896659D00FA401F /* romMapperKonamiSynth.h */, + B35107432896659D00FA401F /* romMapperCvMegaCart.h */, + B35107442896659D00FA401F /* romMapperOpcodeBios.h */, + B35107452896659D00FA401F /* romMapperOpcodeSlotManager.c */, + B35107462896659D00FA401F /* RomLoader.h */, + B35107472896659D00FA401F /* romMapperTurboRTimer.c */, + B35107482896659D00FA401F /* romMapperFMPAK.c */, + B35107492896659D00FA401F /* AmdFlash.h */, + B351074A2896659D00FA401F /* romMapperF4device.h */, + B351074B2896659D00FA401F /* romMapperMuPack.c */, + B351074C2896659D00FA401F /* romMapperSg1000Castle.h */, + B351074D2896659D00FA401F /* romMapperASCII8sram.c */, + B351074E2896659D00FA401F /* ramMapperIo.c */, + B351074F2896659D00FA401F /* romMapperMsxMusic.h */, + B35107502896659D00FA401F /* romMapperObsonet.h */, + B35107512896659D00FA401F /* MegaromCartridge.c */, + B35107522896659D00FA401F /* romMapperSCCplus.c */, + B35107532896659D00FA401F /* romMapperNms1210Rs232.c */, + B35107542896659D00FA401F /* sramLoader.h */, + B35107552896659D00FA401F /* romMapperJoyrexPsg.h */, + B35107562896659D00FA401F /* romMapperHarryFox.c */, + B35107572896659D00FA401F /* romMapperArc.c */, + B35107582896659D00FA401F /* romMapperFMPAC.h */, + B35107592896659D00FA401F /* sramMapperMegaSCSI.c */, + B351075A2896659D00FA401F /* romMapperKorean90.c */, + B351075B2896659D00FA401F /* romMapperASCII8.h */, + B351075C2896659D00FA401F /* romMapperDooly.h */, + B351075D2896659D00FA401F /* romMapperMatraINK.h */, + B351075E2896659D00FA401F /* romMapperKanji.h */, + B351075F2896659D00FA401F /* romMapperPanasonic.c */, + B35107602896659D00FA401F /* romMapperBasic.c */, + B35107612896659D00FA401F /* romMapperMsxDos2.h */, + B35107622896659D00FA401F /* romMapperMegaFlashRomScc.h */, + B35107632896659D00FA401F /* romMapperGameReader.c */, + B35107642896659D00FA401F /* romMapperMsxRs232.h */, + B35107652896659D00FA401F /* romMapperCasette.h */, + B35107662896659D00FA401F /* romMapperKonamiKeyboardMaster.h */, + B35107672896659D00FA401F /* romMapperASCII16sram.c */, + B35107682896659D00FA401F /* romMapperKorean80.c */, + B35107692896659D00FA401F /* romMapperActivisionPcb.c */, + B351076A2896659D00FA401F /* romMapperForteII.c */, + B351076B2896659D00FA401F /* romMapperGoudaSCSI.c */, + B351076C2896659D00FA401F /* romMapperKonami4.c */, + B351076D2896659D00FA401F /* romMapperMicrosolVmx80.c */, + B351076E2896659D00FA401F /* romMapperLodeRunner.c */, + B351076F2896659D00FA401F /* romMapperPhilipsFdc.h */, + B35107702896659D00FA401F /* romMapperOpcodeMegaRam.c */, + B35107712896659D00FA401F /* ram1kBMirrored.c */, + B35107722896659D00FA401F /* romMapperSvi80Col.c */, + B35107732896659D00FA401F /* romMapperNoWind.c */, + B35107742896659D00FA401F /* ramMapper.h */, + B35107752896659D00FA401F /* romMapperFmDas.c */, + B35107762896659E00FA401F /* romMapperKanji12.h */, + B35107772896659E00FA401F /* romMapperA1FM.h */, + B35107782896659E00FA401F /* romMapperSf7000Ipl.c */, + B35107792896659E00FA401F /* romMapperGameMaster2.c */, + B351077A2896659E00FA401F /* AtmelPerom.h */, + B351077B2896659E00FA401F /* IoPort.c */, + B351077C2896659E00FA401F /* romMapperBunsetu.h */, + B351077D2896659E00FA401F /* romMapperMicrosol.c */, + B351077E2896659E00FA401F /* romMapperTurboRPcm.c */, + B351077F2896659E00FA401F /* romMapperHolyQuran.c */, + B35107802896659E00FA401F /* romMapperMegaFlashRomSccPlus.h */, + B35107812896659E00FA401F /* romMapperGIDE.c */, + B35107822896659E00FA401F /* romMapperRType.h */, + B35107832896659E00FA401F /* romMapperKoei.h */, + B35107842896659E00FA401F /* sramMapperEseSCC.h */, + B35107852896659E00FA401F /* romMapperNormal.c */, + B35107862896659E00FA401F /* romMapperS1990.h */, + B35107872896659E00FA401F /* romMapperPAC.c */, + B35107882896659E00FA401F /* MegaSCSIsub.h */, + B35107892896659E00FA401F /* romMapperSvi328Fdc.h */, + B351078A2896659E00FA401F /* romMapperSonyHBIV1.c */, + B351078B2896659E00FA401F /* romMapperSvi328Prn.h */, + B351078C2896659E00FA401F /* romMapperSonyHBI55.h */, + B351078D2896659E00FA401F /* romMapperNationalFdc.h */, + B351078E2896659E00FA401F /* romMapperMajutsushi.h */, + B351078F2896659E00FA401F /* romMapperSegaBasic.h */, + B35107902896659E00FA401F /* romMapperSvi707Fdc.c */, + B35107912896659E00FA401F /* romMapperBeerIDE.h */, + B35107922896659E00FA401F /* romMapperTC8566AF.c */, + B35107932896659E00FA401F /* romMapperDisk.h */, + B35107942896659E00FA401F /* romMapperKonamiWordPro.h */, + B35107952896659E00FA401F /* ramNormal.c */, + B35107962896659E00FA401F /* romMapperDumas.h */, + B35107972896659E00FA401F /* romMapperNoWind.cpp */, + B35107982896659E00FA401F /* romMapperOpcodePsg.h */, + B35107992896659E00FA401F /* romMapperMegaRAM.c */, + B351079A2896659E00FA401F /* romMapperMsxAudio.h */, + B351079B2896659E00FA401F /* SlotManager.h */, + B351079C2896659E00FA401F /* romMapperPlain.h */, + B351079D2896659E00FA401F /* RomMapper.c */, + B351079E2896659E00FA401F /* romMapperMsxPrn.h */, + B351079F2896659E00FA401F /* romMapperSvi738Fdc.h */, + B35107A02896659E00FA401F /* romMapperNet.c */, + B35107A12896659E00FA401F /* romMapperNational.h */, + B35107A22896659E00FA401F /* romMapperA1FMModem.c */, + B35107A32896659E00FA401F /* romMapperStandard.h */, + B35107A42896659E00FA401F /* romMapperASCII16.h */, + B35107A52896659E00FA401F /* romMapperSg1000RamExpander.c */, + B35107A62896659E00FA401F /* romMapperOpcodeSaveRam.c */, + B35107A72896659E00FA401F /* romMapperSvi727.c */, + B35107A82896659E00FA401F /* romMapperKonami4nf.h */, + B35107A92896659E00FA401F /* romMapperKonami5.h */, + B35107AA2896659E00FA401F /* romMapperSfg05.c */, + B35107AB2896659E00FA401F /* romMapperMoonsound.h */, + B35107AC2896659E00FA401F /* romMapperKorean126.c */, + B35107AD2896659E00FA401F /* romMapperPlayBall.c */, + B35107AE2896659E00FA401F /* romMapperSunriseIDE.c */, + B35107AF2896659E00FA401F /* romMapperSg1000.h */, + B35107B02896659E00FA401F /* romMapperDRAM.h */, + B35107B12896659E00FA401F /* sramMapperMatsuchita.c */, + B35107B22896659E00FA401F /* sramMapperS1985.c */, + B35107B32896659E00FA401F /* romMapperHalnote.c */, + B35107B42896659E00FA401F /* DeviceManager.h */, + B35107B52896659E00FA401F /* romMapperOpcodeModule.c */, + B35107B62896659E00FA401F /* romMapperASCII16nf.c */, + B35107B72896659E00FA401F /* romMapperSvi328Rs232.c */, + B35107B82896659E00FA401F /* romMapperCrossBlaim.c */, + B35107B92896659E00FA401F /* romMapperNettouYakyuu.h */, + B35107BA2896659E00FA401F /* romMapperNms8280VideoDa.h */, + B35107BB2896659E00FA401F /* romMapperSvi328RsIDE.h */, + B35107BC2896659E00FA401F /* romMapperPanasonic.h */, + B35107BD2896659E00FA401F /* romMapperKanji.c */, + B35107BE2896659E00FA401F /* romMapperMatraINK.c */, + B35107BF2896659E00FA401F /* romMapperDooly.c */, + B35107C02896659E00FA401F /* romMapperJoyrexPsg.c */, + B35107C12896659E00FA401F /* sramLoader.c */, + B35107C22896659E00FA401F /* romMapperHarryFox.h */, + B35107C32896659E00FA401F /* romMapperNms1210Rs232.h */, + B35107C42896659E00FA401F /* romMapperSCCplus.h */, + B35107C52896659E00FA401F /* romMapperObsonet.c */, + B35107C62896659E00FA401F /* MegaromCartridge.h */, + B35107C72896659E00FA401F /* romMapperASCII8.c */, + B35107C82896659E00FA401F /* romMapperKorean90.h */, + B35107C92896659E00FA401F /* sramMapperMegaSCSI.h */, + B35107CA2896659E00FA401F /* romMapperFMPAC.c */, + B35107CB2896659E00FA401F /* romMapperArc.h */, + B35107CC2896659E00FA401F /* romMapperSg1000Castle.c */, + B35107CD2896659E00FA401F /* romMapperMuPack.h */, + B35107CE2896659E00FA401F /* romMapperF4device.c */, + B35107CF2896659E00FA401F /* ramMapperIo.h */, + B35107D02896659E00FA401F /* romMapperMsxMusic.c */, + B35107D12896659E00FA401F /* romMapperASCII8sram.h */, + B35107D22896659E00FA401F /* romMapperOpcodeSlotManager.h */, + B35107D32896659E00FA401F /* romMapperOpcodeBios.c */, + B35107D42896659E00FA401F /* romMapperCvMegaCart.c */, + B35107D52896659E00FA401F /* romMapperKonamiSynth.c */, + B35107D62896659E00FA401F /* AmdFlash.c */, + B35107D72896659E00FA401F /* romMapperTurboRTimer.h */, + B35107D82896659E00FA401F /* romMapperFMPAK.h */, + B35107D92896659E00FA401F /* RomLoader.c */, + B35107DA2896659E00FA401F /* romMapperSf7000Ipl.h */, + B35107DB2896659E00FA401F /* romMapperA1FM.c */, + B35107DC2896659E00FA401F /* PlayballSamples.h */, + B35107DD2896659E00FA401F /* romMapperKanji12.c */, + B35107DE2896659E00FA401F /* romMapperFmDas.h */, + B35107DF2896659E00FA401F /* ramMapper.c */, + B35107E02896659E00FA401F /* romMapperNoWind.h */, + B35107E12896659E00FA401F /* romMapperGameMaster2.h */, + B35107E22896659E00FA401F /* ram1kBMirrored.h */, + B35107E32896659E00FA401F /* romMapperOpcodeMegaRam.h */, + B35107E42896659E00FA401F /* romMapperSvi80Col.h */, + B35107E52896659E00FA401F /* romMapperGoudaSCSI.h */, + B35107E62896659E00FA401F /* romMapperForteII.h */, + B35107E72896659E00FA401F /* romMapperActivisionPcb.h */, + B35107E82896659E00FA401F /* romMapperLodeRunner.h */, + B35107E92896659E00FA401F /* romMapperPhilipsFdc.c */, + B35107EA2896659E00FA401F /* romMapperMicrosolVmx80.h */, + B35107EB2896659E00FA401F /* romMapperKonami4.h */, + B35107EC2896659E00FA401F /* romMapperMegaFlashRomScc.c */, + B35107ED2896659E00FA401F /* NettouYakyuuSamples.h */, + B35107EE2896659E00FA401F /* romMapperMsxDos2.c */, + B35107EF2896659E00FA401F /* romMapperBasic.h */, + B35107F02896659E00FA401F /* romMapperKorean80.h */, + B35107F12896659E00FA401F /* romMapperKonamiKeyboardMaster.c */, + B35107F22896659E00FA401F /* romMapperASCII16sram.h */, + B35107F32896659E00FA401F /* romMapperCasette.c */, + B35107F42896659E00FA401F /* romMapperMsxRs232.c */, + B35107F52896659E00FA401F /* romMapperGameReader.h */, + B35107F62896659E00FA401F /* romMapperBeerIDE.c */, + B35107F72896659E00FA401F /* romMapperSvi707Fdc.h */, + B35107F82896659E00FA401F /* romMapperSegaBasic.c */, + B35107F92896659E00FA401F /* romMapperMajutsushi.c */, + B35107FA2896659E00FA401F /* romMapperOpcodePsg.c */, + B35107FB2896659E00FA401F /* ramNormal.h */, + B35107FC2896659E00FA401F /* romMapperDumas.c */, + B35107FD2896659E00FA401F /* romMapperKonamiWordPro.c */, + B35107FE2896659E00FA401F /* romMapperDisk.c */, + B35107FF2896659E00FA401F /* romMapperTC8566AF.h */, + B35108002896659E00FA401F /* romMapperSonyHBIV1.h */, + B35108012896659E00FA401F /* romMapperSvi328Fdc.c */, + B35108022896659E00FA401F /* romMapperNationalFdc.c */, + B35108032896659E00FA401F /* romMapperSonyHBI55.c */, + B35108042896659E00FA401F /* romMapperSvi328Prn.c */, + B35108052896659E00FA401F /* romMapperS1990.c */, + B35108062896659E00FA401F /* romMapperNormal.h */, + B35108072896659E00FA401F /* sramMapperEseSCC.c */, + B35108082896659E00FA401F /* romMapperKoei.c */, + B35108092896659E00FA401F /* MegaSCSIsub.c */, + B351080A2896659E00FA401F /* romMapperPAC.h */, + B351080B2896659E00FA401F /* romMapperMegaFlashRomSccPlus.c */, + B351080C2896659E00FA401F /* romMapperHolyQuran.h */, + B351080D2896659E00FA401F /* romMapperTurboRPcm.h */, + B351080E2896659E00FA401F /* romMapperMicrosol.h */, + B351080F2896659E00FA401F /* romMapperBunsetu.c */, + B35108102896659E00FA401F /* AtmelPerom.c */, + B35108112896659E00FA401F /* IoPort.h */, + B35108122896659E00FA401F /* romMapperRType.c */, + B35108132896659E00FA401F /* romMapperGIDE.h */, + B35108142896659E00FA401F /* romMapperHalnote.h */, + B35108152896659E00FA401F /* sramMapperS1985.h */, + B35108162896659E00FA401F /* sramMapperMatsuchita.h */, + B35108172896659E00FA401F /* romMapperNms8280VideoDa.c */, + B35108182896659E00FA401F /* romMapperSvi328RsIDE.c */, + B35108192896659E00FA401F /* romMapperNettouYakyuu.c */, + B351081A2896659E00FA401F /* romMapperCrossBlaim.h */, + B351081B2896659E00FA401F /* romMapperSvi328Rs232.h */, + B351081C2896659E00FA401F /* romMapperASCII16nf.h */, + B351081D2896659E00FA401F /* romMapperOpcodeModule.h */, + B351081E2896659E00FA401F /* DeviceManager.c */, + B351081F2896659E00FA401F /* romMapperKorean126.h */, + B35108202896659E00FA401F /* romExclusion.h */, + B35108212896659E00FA401F /* romMapperMoonsound.c */, + B35108222896659E00FA401F /* romMapperSfg05.h */, + B35108232896659E00FA401F /* romMapperKonami4nf.c */, + B35108242896659E00FA401F /* romMapperKonami5.c */, + B35108252896659E00FA401F /* romMapperDRAM.c */, + B35108262896659E00FA401F /* romMapperSg1000.c */, + B35108272896659E00FA401F /* romMapperSunriseIDE.h */, + B35108282896659E00FA401F /* romMapperPlayBall.h */, + B35108292896659E00FA401F /* romMapperSvi738Fdc.c */, + B351082A2896659E00FA401F /* romMapperMsxPrn.c */, + B351082B2896659E00FA401F /* romMapperSvi727.h */, + B351082C2896659E00FA401F /* romMapperOpcodeSaveRam.h */, + B351082D2896659E00FA401F /* romMapperASCII16.c */, + B351082E2896659E00FA401F /* romMapperSg1000RamExpander.h */, + B351082F2896659E00FA401F /* romMapperStandard.c */, + B35108302896659E00FA401F /* romMapperA1FMModem.h */, + B35108312896659E00FA401F /* romMapperNational.c */, + B35108322896659E00FA401F /* romMapperNet.h */, + B35108332896659E00FA401F /* romMapperMegaRAM.h */, + B35108342896659E00FA401F /* RomMapper.h */, + B35108352896659E00FA401F /* romMapperPlain.c */, + B35108362896659E00FA401F /* SlotManager.c */, + B35108372896659E00FA401F /* romMapperMsxAudio.c */, + ); + path = Memory; + sourceTree = ""; + }; + B35108382896659E00FA401F /* Board */ = { + isa = PBXGroup; + children = ( + B35108392896659E00FA401F /* Coleco.h */, + B351083A2896659E00FA401F /* SG1000.h */, + B351083B2896659E00FA401F /* Machine.h */, + B351083C2896659E00FA401F /* Board.c */, + B351083D2896659E00FA401F /* Adam.c */, + B351083E2896659E00FA401F /* MSX.c */, + B351083F2896659E00FA401F /* SVI.h */, + B35108402896659E00FA401F /* Machine.c */, + B35108412896659E00FA401F /* SG1000.c */, + B35108422896659E00FA401F /* Coleco.c */, + B35108432896659E00FA401F /* Board.h */, + B35108442896659E00FA401F /* SVI.c */, + B35108452896659E00FA401F /* MSX.h */, + B35108462896659E00FA401F /* Adam.h */, + ); + path = Board; + sourceTree = ""; + }; + B35108472896659E00FA401F /* IoDevice */ = { + isa = PBXGroup; + children = ( + B35108482896659E00FA401F /* WDCRC.h */, + B35108492896659E00FA401F /* Sf7000PPI.h */, + B351084A2896659E00FA401F /* Led.c */, + B351084B2896659E00FA401F /* MidiIO.h */, + B351084C2896659E00FA401F /* SviPPI.h */, + B351084D2896659E00FA401F /* I8251.h */, + B351084E2896659E00FA401F /* I8255.h */, + B351084F2896659E00FA401F /* Sc3000PPI.h */, + B35108502896659E00FA401F /* TC8566AF.h */, + B35108512896659E00FA401F /* MSXMidi.h */, + B35108522896659E00FA401F /* PrinterIO.h */, + B35108532896659E00FA401F /* Microwire93Cx6.c */, + B35108542896659E00FA401F /* ScsiDevice.c */, + B35108552896659E00FA401F /* Casette.h */, + B35108562896659E00FA401F /* TurboRIO.c */, + B35108572896659E00FA401F /* wd33c93.c */, + B35108582896659E00FA401F /* WD2793.h */, + B35108592896659E00FA401F /* RTC.c */, + B351085A2896659E00FA401F /* MsxPPI.c */, + B351085B2896659E00FA401F /* sl811hs.h */, + B351085C2896659E00FA401F /* Microchip24x00.c */, + B351085D2896659E00FA401F /* SunriseIDE.c */, + B351085E2896659E00FA401F /* I8254.c */, + B351085F2896659E00FA401F /* I8250.c */, + B35108602896659E00FA401F /* ft245.h */, + B35108612896659E00FA401F /* NEC765.h */, + B35108622896659E00FA401F /* HarddiskIDE.c */, + B35108632896659E00FA401F /* JoystickIO.c */, + B35108642896659E00FA401F /* MB89352.c */, + B35108652896659E00FA401F /* FdcAudio.h */, + B35108662896659E00FA401F /* rtl8019.c */, + B35108672896659E00FA401F /* UartIO.c */, + B35108682896659E00FA401F /* Z8530.c */, + B35108692896659E00FA401F /* Disk.h */, + B351086A2896659E00FA401F /* DirAsDisk.c */, + B351086B2896659E00FA401F /* Switches.c */, + B351086C2896659E00FA401F /* Microwire93Cx6.h */, + B351086D2896659E00FA401F /* ScsiDevice.h */, + B351086E2896659E00FA401F /* PrinterIO.c */, + B351086F2896659E00FA401F /* MSXMidi.c */, + B35108702896659E00FA401F /* Casette.c */, + B35108712896659E00FA401F /* TC8566AF.c */, + B35108722896659E00FA401F /* GameReader.h */, + B35108732896659E00FA401F /* I8255.c */, + B35108742896659E00FA401F /* Sc3000PPI.c */, + B35108752896659E00FA401F /* Led.h */, + B35108762896659E00FA401F /* MidiIO.c */, + B35108772896659E00FA401F /* SviPPI.c */, + B35108782896659E00FA401F /* Sf7000PPI.c */, + B35108792896659E00FA401F /* I8251.c */, + B351087A2896659E00FA401F /* WDCRC.c */, + B351087B2896659E00FA401F /* sl811hs.c */, + B351087C2896659E00FA401F /* MsxPPI.h */, + B351087D2896659E00FA401F /* Microchip24x00.h */, + B351087E2896659E00FA401F /* msxgr.cpp */, + B351087F2896659E00FA401F /* RTC.h */, + B35108802896659E00FA401F /* scsidev.h */, + B35108812896659E00FA401F /* wd33c93.h */, + B35108822896659E00FA401F /* TurboRIO.h */, + B35108832896659E00FA401F /* GameReader.cpp */, + B35108842896659E00FA401F /* WD2793.c */, + B35108852896659E00FA401F /* msxgr.h */, + B35108862896659E00FA401F /* ScsiDefs.h */, + B35108872896659E00FA401F /* HarddiskIDE.h */, + B35108882896659E00FA401F /* NEC765.c */, + B35108892896659E00FA401F /* JoystickIO.h */, + B351088A2896659E00FA401F /* I8250.h */, + B351088B2896659E00FA401F /* ft245.c */, + B351088C2896659E00FA401F /* DiskUtil.h */, + B351088D2896659E00FA401F /* I8254.h */, + B351088E2896659E00FA401F /* SunriseIDE.h */, + B351088F2896659E00FA401F /* Disk.c */, + B35108902896659E00FA401F /* Z8530.h */, + B35108912896659E00FA401F /* Switches.h */, + B35108922896659E00FA401F /* DirAsDisk.h */, + B35108932896659E00FA401F /* UartIO.h */, + B35108942896659E00FA401F /* rtl8019.h */, + B35108952896659E00FA401F /* MB89352.h */, + B35108962896659E00FA401F /* FdcAudio.c */, + ); + path = IoDevice; + sourceTree = ""; + }; + B35108972896659E00FA401F /* Z80 */ = { + isa = PBXGroup; + children = ( + B35108982896659E00FA401F /* R800Debug.c */, + B35108992896659E00FA401F /* R800SaveState.h */, + B351089A2896659E00FA401F /* R800Dasm.h */, + B351089B2896659E00FA401F /* R800.c */, + B351089C2896659E00FA401F /* R800SaveState.c */, + B351089D2896659E00FA401F /* R800Debug.h */, + B351089E2896659E00FA401F /* R800Dasm.c */, + B351089F2896659E00FA401F /* R800.h */, + ); + path = Z80; + sourceTree = ""; + }; + B35108A02896659E00FA401F /* Input */ = { + isa = PBXGroup; + children = ( + B35108A12896659E00FA401F /* ColecoSuperAction.c */, + B35108A22896659E00FA401F /* ColecoJoystick.h */, + B35108A32896659E00FA401F /* MsxGunstick.h */, + B35108A42896659E00FA401F /* Sg1000JoystickDevice.h */, + B35108A52896659E00FA401F /* SviJoyIo.h */, + B35108A62896659E00FA401F /* MsxJoystick.h */, + B35108A72896659E00FA401F /* SviJoystickDevice.h */, + B35108A82896659E00FA401F /* ColecoSteeringWheel.c */, + B35108A92896659E00FA401F /* CoinDevice.h */, + B35108AA2896659E00FA401F /* Sg1000Joystick.h */, + B35108AB2896659E00FA401F /* MsxArkanoidPad.h */, + B35108AC2896659E00FA401F /* MsxMouse.h */, + B35108AD2896659E00FA401F /* MagicKeyDongle.c */, + B35108AE2896659E00FA401F /* MsxTetrisDongle.c */, + B35108AF2896659E00FA401F /* JoystickPort.c */, + B35108B02896659E00FA401F /* SviJoystick.h */, + B35108B12896659E00FA401F /* Sg1000JoyIo.c */, + B35108B22896659E00FA401F /* MsxAsciiLaser.h */, + B35108B32896659E00FA401F /* InputEvent.c */, + B35108B42896659E00FA401F /* ColecoJoystick.c */, + B35108B52896659E00FA401F /* ColecoSuperAction.h */, + B35108B62896659E00FA401F /* MsxJoystickDevice.h */, + B35108B72896659E00FA401F /* SviJoyIo.c */, + B35108B82896659E00FA401F /* MsxGunstick.c */, + B35108B92896659E00FA401F /* MsxMouse.c */, + B35108BA2896659E00FA401F /* Sg1000Joystick.c */, + B35108BB2896659E00FA401F /* MsxArkanoidPad.c */, + B35108BC2896659E00FA401F /* CoinDevice.c */, + B35108BD2896659E00FA401F /* ColecoSteeringWheel.h */, + B35108BE2896659E00FA401F /* MsxJoystick.c */, + B35108BF2896659E00FA401F /* Sg1000JoyIo.h */, + B35108C02896659E00FA401F /* ColecoJoystickDevice.h */, + B35108C12896659E00FA401F /* InputEvent.h */, + B35108C22896659E00FA401F /* MsxAsciiLaser.c */, + B35108C32896659E00FA401F /* JoystickPort.h */, + B35108C42896659E00FA401F /* MsxTetrisDongle.h */, + B35108C52896659E00FA401F /* SviJoystick.c */, + B35108C62896659E00FA401F /* MagicKeyDongle.h */, + ); + path = Input; + sourceTree = ""; + }; + B35108C72896659E00FA401F /* Unzip */ = { + isa = PBXGroup; + children = ( + B35108C82896659E00FA401F /* zutil.h */, + B35108C92896659E00FA401F /* inftrees.h */, + B35108CA2896659E00FA401F /* inflate.c */, + B35108CB2896659E00FA401F /* unzip.c */, + B35108CC2896659E00FA401F /* compress.c */, + B35108CD2896659E00FA401F /* zip.c */, + B35108CE2896659E00FA401F /* deflate.c */, + B35108CF2896659E00FA401F /* inffixed.h */, + B35108D02896659E00FA401F /* iowin32.h */, + B35108D12896659E00FA401F /* ioapi.c */, + B35108D22896659E00FA401F /* trees.h */, + B35108D32896659E00FA401F /* inffast.h */, + B35108D42896659E00FA401F /* crc32.c */, + B35108D52896659E00FA401F /* infback.c */, + B35108D62896659E00FA401F /* crypt.h */, + B35108D72896659E00FA401F /* zutil.c */, + B35108D82896659E00FA401F /* deflate.h */, + B35108D92896659E00FA401F /* zip.h */, + B35108DA2896659E00FA401F /* zlib.h */, + B35108DB2896659E00FA401F /* unzip.h */, + B35108DC2896659E00FA401F /* inflate.h */, + B35108DD2896659E00FA401F /* inftrees.c */, + B35108DE2896659E00FA401F /* uncompr.c */, + B35108DF2896659E00FA401F /* trees.c */, + B35108E02896659E00FA401F /* ioapi.h */, + B35108E12896659E00FA401F /* iowin32.c */, + B35108E22896659E00FA401F /* crc32.h */, + B35108E32896659E00FA401F /* gzio.c */, + B35108E42896659E00FA401F /* inffast.c */, + B35108E52896659E00FA401F /* adler32.c */, + B35108E62896659E00FA401F /* zconf.h */, + ); + path = Unzip; + sourceTree = ""; + }; + B35108E72896659E00FA401F /* Utils */ = { + isa = PBXGroup; + children = ( + B35108E82896659E00FA401F /* StrcmpNoCase.c */, + B35108E92896659E00FA401F /* blowfish.h */, + B35108EA2896659E00FA401F /* ZipFromMem.h */, + B35108EB2896659E00FA401F /* TokenExtract.c */, + B35108EC2896659E00FA401F /* ziphelper.h */, + B35108ED2896659E00FA401F /* IsFileExtension.h */, + B35108EE2896659E00FA401F /* PacketFileSystem.c */, + B35108EF2896659E00FA401F /* IniFileParser.c */, + B35108F02896659E00FA401F /* SaveState.c */, + B35108F12896659E00FA401F /* authkey.h */, + B35108F22896659E00FA401F /* blowfish.c */, + B35108F32896659E00FA401F /* StrcmpNoCase.h */, + B35108F42896659E00FA401F /* ziphelper.c */, + B35108F52896659E00FA401F /* TokenExtract.h */, + B35108F62896659E00FA401F /* IsFileExtension.c */, + B35108F72896659E00FA401F /* ZipFromMem.c */, + B35108F82896659E00FA401F /* IniFileParser.h */, + B35108F92896659E00FA401F /* PacketFileSystem.h */, + B35108FA2896659E00FA401F /* SaveState.h */, + ); + path = Utils; + sourceTree = ""; + }; + B35108FB2896659E00FA401F /* Language */ = { + isa = PBXGroup; + children = ( + B35108FC2896659E00FA401F /* Language.h */, + B35108FD2896659E00FA401F /* LanguageMinimal.c */, + ); + path = Language; + sourceTree = ""; + }; + B35108FE2896659E00FA401F /* VideoChips */ = { + isa = PBXGroup; + children = ( + B35108FF2896659E00FA401F /* VideoManager.c */, + B35109002896659E00FA401F /* SpriteLine.c */, + B35109012896659E00FA401F /* CRTC6845.c */, + B35109022896659E00FA401F /* V9938.h */, + B35109032896659E00FA401F /* FrameBuffer.h */, + B35109042896659E00FA401F /* VDP.c */, + B35109052896659E00FA401F /* Common.h */, + B35109062896659E00FA401F /* VideoManager.h */, + B35109072896659E00FA401F /* SpriteLine.h */, + B35109082896659E00FA401F /* V9938.c */, + B35109092896659E00FA401F /* CRTC6845.h */, + B351090A2896659E00FA401F /* VDP.h */, + B351090B2896659E00FA401F /* FrameBuffer.c */, + ); + path = VideoChips; + sourceTree = ""; + }; + B351090C2896659E00FA401F /* Common */ = { + isa = PBXGroup; + children = ( + B351090D2896659E00FA401F /* ArrayList.c */, + B351090E2896659E00FA401F /* ArrayList.h */, + B351090F2896659E00FA401F /* MsxTypes.h */, + ); + path = Common; + sourceTree = ""; + }; + B35109102896659E00FA401F /* Libretro */ = { + isa = PBXGroup; + children = ( + B35109112896659E00FA401F /* VideoIn.c */, + B35109122896659E00FA401F /* Mouse.c */, + B35109132896659E00FA401F /* Timer.c */, + B35109142896659E00FA401F /* Menu.c */, + B35109152896659E00FA401F /* Cdrom.c */, + B35109162896659E00FA401F /* psp */, + B351091C2896659E00FA401F /* Glob.c */, + B351091D2896659E00FA401F /* Input.c */, + B351091E2896659E00FA401F /* Printer.c */, + B351091F2896659E00FA401F /* Sound.c */, + B35109202896659E00FA401F /* Notifications.c */, + B35109212896659E00FA401F /* Event.c */, + B35109222896659E00FA401F /* Midi.c */, + B35109232896659E00FA401F /* Dialog.c */, + B35109242896659E00FA401F /* File.c */, + B35109252896659E00FA401F /* Emulator.c */, + B35109262896659E00FA401F /* Eth.c */, + B35109272896659E00FA401F /* Uart.c */, + ); + path = Libretro; + sourceTree = ""; + }; + B35109162896659E00FA401F /* psp */ = { + isa = PBXGroup; + children = ( + B35109172896659E00FA401F /* diet-fnmatch.c */, + B35109182896659E00FA401F /* diet-glob.c */, + B35109192896659E00FA401F /* diet-fnmatch.h */, + B351091A2896659E00FA401F /* dietfeatures.h */, + B351091B2896659E00FA401F /* diet-glob.h */, + ); + path = psp; + sourceTree = ""; + }; + B35109282896659E00FA401F /* Arch */ = { + isa = PBXGroup; + children = ( + B35109292896659E00FA401F /* ArchTimer.h */, + B351092A2896659E00FA401F /* ArchCdrom.h */, + B351092B2896659E00FA401F /* ArchNotifications.h */, + B351092C2896659E00FA401F /* ArchMidi.h */, + B351092D2896659E00FA401F /* ArchFile.h */, + B351092E2896659E00FA401F /* ArchDialog.h */, + B351092F2896659E00FA401F /* ArchEth.h */, + B35109302896659E00FA401F /* ArchPrinter.h */, + B35109312896659E00FA401F /* ArchUart.h */, + B35109322896659E00FA401F /* ArchSound.h */, + B35109332896659E00FA401F /* ArchInput.h */, + B35109342896659E00FA401F /* ArchKeyStorage.h */, + B35109352896659E00FA401F /* ArchEvent.h */, + B35109362896659E00FA401F /* ArchMenu.h */, + B35109372896659E00FA401F /* ArchThread.h */, + B35109382896659E00FA401F /* ArchVideoIn.h */, + B35109392896659E00FA401F /* ArchGlob.h */, + ); + path = Arch; + sourceTree = ""; + }; + B351093A2896659E00FA401F /* Debugger */ = { + isa = PBXGroup; + children = ( + B351093B2896659E00FA401F /* DebugDeviceManager.c */, + B351093C2896659E00FA401F /* Debugger.c */, + B351093D2896659E00FA401F /* Debugger.h */, + B351093E2896659E00FA401F /* DebugDeviceManager.h */, + ); + path = Debugger; + sourceTree = ""; + }; + B351093F2896659E00FA401F /* Bios */ = { + isa = PBXGroup; + children = ( + B35109402896659E00FA401F /* Patch.c */, + ); + path = Bios; + sourceTree = ""; + }; + B35109412896659E00FA401F /* VideoRender */ = { + isa = PBXGroup; + children = ( + B35109422896659E00FA401F /* VideoRender.h */, + B35109432896659E00FA401F /* Scalebit.h */, + ); + path = VideoRender; + sourceTree = ""; + }; + B35109442896659E00FA401F /* Emulator */ = { + isa = PBXGroup; + children = ( + B35109452896659E00FA401F /* AppConfig.c */, + B35109462896659E00FA401F /* Actions.h */, + B35109472896659E00FA401F /* Keyboard.c */, + B35109482896659E00FA401F /* FileHistory.c */, + B35109492896659E00FA401F /* Properties.c */, + B351094A2896659E00FA401F /* LaunchFile.c */, + B351094B2896659E00FA401F /* Emulator.h */, + B351094C2896659E00FA401F /* AppConfig.h */, + B351094D2896659E00FA401F /* Keyboard.h */, + B351094E2896659E00FA401F /* Actions.c */, + B351094F2896659E00FA401F /* FileHistory.h */, + B35109502896659F00FA401F /* Properties.h */, + B35109512896659F00FA401F /* LaunchFile.h */, + ); + path = Emulator; + sourceTree = ""; + }; + B35109522896659F00FA401F /* ThirdParty */ = { + isa = PBXGroup; + children = ( + B35109532896659F00FA401F /* WinPCap */, + ); + path = ThirdParty; + sourceTree = ""; + }; + B35109532896659F00FA401F /* WinPCap */ = { + isa = PBXGroup; + children = ( + B35109542896659F00FA401F /* Devioctl.h */, + B35109552896659F00FA401F /* Ntddndis.h */, + B35109562896659F00FA401F /* Packet32.h */, + ); + path = WinPCap; + sourceTree = ""; + }; + B35109572896659F00FA401F /* BuildInfo */ = { + isa = PBXGroup; + children = ( + B35109582896659F00FA401F /* version.h */, + B35109592896659F00FA401F /* build_info.txt */, + B351095A2896659F00FA401F /* build_number.h */, + ); + path = BuildInfo; + sourceTree = ""; + }; + B351095B2896659F00FA401F /* Media */ = { + isa = PBXGroup; + children = ( + B351095C2896659F00FA401F /* Crc32Calc.h */, + B351095D2896659F00FA401F /* Sha1.cpp */, + B351095E2896659F00FA401F /* Crc32Calc.c */, + B351095F2896659F00FA401F /* MediaDb.cpp */, + B35109602896659F00FA401F /* Sha1.h */, + B35109612896659F00FA401F /* MediaDb.h */, + ); + path = Media; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVblueMSX */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVblueMSX.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVblueMSX; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVblueMSXCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVblueMSXCore.h */, + B37022C6287253B300B3F6DA /* PVblueMSXCore.mm */, + ); + path = PVblueMSXCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B35104C92896659C00FA401F /* blueMSX-libretro */, + B37022BE287253B300B3F6DA /* PVblueMSX */, + B37022C4287253B300B3F6DA /* PVblueMSXCore */, + B37022BD287253B300B3F6DA /* PVblueMSX-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVblueMSX.framework */, + B30178D3207C901D0051B93D /* libblueMSX.a */, + B3344BC32859E088006E6B3A /* libblueMSX-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVblueMSX.h in Headers */, + B37022C92872554300B3F6DA /* PVblueMSXCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* blueMSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "blueMSX" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = blueMSX; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libblueMSX.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* blueMSX-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "blueMSX-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "blueMSX-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libblueMSX-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVblueMSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVblueMSX" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVblueMSX; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVblueMSX.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVblueMSX" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVblueMSX */, + B3344B522859E088006E6B3A /* blueMSX-libretro */, + B30178D2207C901D0051B93D /* blueMSX */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3510962289665CD00FA401F /* libretro.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVblueMSXCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* blueMSX-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = blueMSX; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = blueMSX; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/blueMSX-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVblueMSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVblueMSX"; + PRODUCT_NAME = PVblueMSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = blueMSX; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "blueMSX-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "blueMSX-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "blueMSX-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/blueMSX-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/blueMSX-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVblueMSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVblueMSX"; + PRODUCT_NAME = PVblueMSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVblueMSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVblueMSX"; + PRODUCT_NAME = PVblueMSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "blueMSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "blueMSX-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVblueMSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVblueMSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/blueMSX/PVblueMSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/blueMSX/PVblueMSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/blueMSX/PVblueMSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/blueMSX/PVblueMSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/blueMSX/PVblueMSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/blueMSX/PVblueMSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/blueMSX/PVblueMSX.xcodeproj/xcshareddata/xcschemes/PVblueMSX.xcscheme b/Cores/blueMSX/PVblueMSX.xcodeproj/xcshareddata/xcschemes/PVblueMSX.xcscheme new file mode 100644 index 0000000000..3d56c47860 --- /dev/null +++ b/Cores/blueMSX/PVblueMSX.xcodeproj/xcshareddata/xcschemes/PVblueMSX.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/blueMSX/PVblueMSX/Core.plist b/Cores/blueMSX/PVblueMSX/Core.plist new file mode 100644 index 0000000000..8d5be5ecaf --- /dev/null +++ b/Cores/blueMSX/PVblueMSX/Core.plist @@ -0,0 +1,21 @@ + + + + + PVCoreIdentifier + com.provenance.blueMSX + PVPrincipleClass + PVblueMSXCore + PVSupportedSystems + + com.provenance.msx + com.provenance.msx2 + + PVProjectName + blueMSX + PVProjectURL + http://fms.komkon.org/blueMSX/ + PVProjectVersion + 0 + + diff --git a/Cores/blueMSX/PVblueMSX/Info.plist b/Cores/blueMSX/PVblueMSX/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/blueMSX/PVblueMSX/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/blueMSX/PVblueMSX/PVblueMSX.h b/Cores/blueMSX/PVblueMSX/PVblueMSX.h new file mode 100644 index 0000000000..16e435b161 --- /dev/null +++ b/Cores/blueMSX/PVblueMSX/PVblueMSX.h @@ -0,0 +1,18 @@ +// +// PVblueMSX.h +// PVblueMSX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVblueMSX. +FOUNDATION_EXPORT double PVblueMSXVersionNumber; + +//! Project version string for PVblueMSX. +FOUNDATION_EXPORT const unsigned char PVblueMSXVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/blueMSX/PVblueMSXCore/PVblueMSXCore.h b/Cores/blueMSX/PVblueMSXCore/PVblueMSXCore.h new file mode 100644 index 0000000000..780b217dc7 --- /dev/null +++ b/Cores/blueMSX/PVblueMSXCore/PVblueMSXCore.h @@ -0,0 +1,43 @@ +// +// PVblueMSXCore.h +// PVblueMSX +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVblueMSXCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/blueMSX/PVblueMSXCore/PVblueMSXCore.mm b/Cores/blueMSX/PVblueMSXCore/PVblueMSXCore.mm new file mode 100644 index 0000000000..4d45c9cd68 --- /dev/null +++ b/Cores/blueMSX/PVblueMSXCore/PVblueMSXCore.mm @@ -0,0 +1,257 @@ +// +// PVblueMSXCore.m +// PVblueMSX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVblueMSXCore.h" +#include +//#import "PVblueMSXCore+Controls.h" +//#import "PVblueMSXCore+Audio.h" +//#import "PVblueMSXCore+Video.h" +// +//#import "PVblueMSXCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVblueMSXCore() { + +} + +@end + +#pragma mark - PVblueMSXCore Begin + +@implementation PVblueMSXCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1024, 768); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT + return GL_RGB565; +} + + +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +# pragma mark - Audio + +- (double)audioSampleRate { + return 48000; +} + +#if 0 +const struct retro_variable vars[] = { + { "blueMSX_mode", "MSX Mode; MSX2+|MSX1|MSX2" }, + { "blueMSX_video_mode", "MSX Video Mode; NTSC|PAL|Dynamic" }, + { "blueMSX_hires", "Support high resolution; Off|Interlaced|Progressive" }, + { "blueMSX_overscan", "Support overscan; No|Yes" }, + { "blueMSX_mapper_type_mode", "MSX Mapper Type Mode; " + "Guess|" + "Generic 8kB|" + "Generic 16kB|" + "Konami5 8kB|" + "Konami4 8kB|" + "ASCII 8kB|" + "ASCII 16kB|" + "GameMaster2|" + "FMPAC" + }, + { "blueMSX_ram_pages", "MSX Main Memory; Auto|64KB|128KB|256KB|512KB|4MB" }, + { "blueMSX_vram_pages", "MSX Video Memory; Auto|32KB|64KB|128KB|192KB" }, + { "blueMSX_log_level", "blueMSX logging; Off|Info|Debug|Spam" }, + { "blueMSX_game_master", "Support Game Master; No|Yes" }, + { "blueMSX_simbdos", "Simulate DiskROM disk access calls; No|Yes" }, + { "blueMSX_autospace", "Use autofire on SPACE; No|Yes" }, + { "blueMSX_allsprites", "Show all sprites; No|Yes" }, + { "blueMSX_font", "Text font; standard|DEFAULT.FNT|ITALIC.FNT|INTERNAT.FNT|CYRILLIC.FNT|KOREAN.FNT|JAPANESE.FNT" }, + { "blueMSX_flush_disk", "Save disk changes; Never|Immediate|On close|To/From SRAM" }, + { "blueMSX_phantom_disk", "Create empty disk when none loaded; No|Yes" }, + { "blueMSX_custom_keyboard_up", up_value}, + { "blueMSX_custom_keyboard_down", down_value}, + { "blueMSX_custom_keyboard_left", left_value}, + { "blueMSX_custom_keyboard_right", right_value}, + { "blueMSX_custom_keyboard_a", a_value}, + { "blueMSX_custom_keyboard_b", b_value}, + { "blueMSX_custom_keyboard_y", y_value}, + { "blueMSX_custom_keyboard_x", x_value}, + { "blueMSX_custom_keyboard_start", start_value}, + { "blueMSX_custom_keyboard_select", select_value}, + { "blueMSX_custom_keyboard_l", l_value}, + { "blueMSX_custom_keyboard_r", r_value}, + { "blueMSX_custom_keyboard_l2", l2_value}, + { "blueMSX_custom_keyboard_r2", r2_value}, + { "blueMSX_custom_keyboard_l3", l3_value}, + { "blueMSX_custom_keyboard_r3", r3_value}, + { NULL, NULL }, +}; +#endif + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + if (V("blueMSX_video_mode")) { + // NTSC|PAL|Dynamic + char *value = strdup("Dynamic"); + return value; + } else if (V("blueMSX_mode")) { + // MSX2+|MSX1|MSX2 + char * value = strdup("MSX2+"); + return value; + } else if (V("blueMSX_hires")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("blueMSX_overscan")) { + // No|Yes + char *value = strdup("Yes"); + return value; + } else if (V("blueMSX_mapper_type_mode")) { +// { "blueMSX_mapper_type_mode", "MSX Mapper Type Mode; " +// "Guess|" +// "Generic 8kB|" +// "Generic 16kB|" +// "Konami5 8kB|" +// "Konami4 8kB|" +// "ASCII 8kB|" +// "ASCII 16kB|" +// "GameMaster2|" +// "FMPAC" +// }, + char *value = strdup("FMPAC"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} +@end diff --git a/Cores/blueMSX/blueMSX-libretro b/Cores/blueMSX/blueMSX-libretro new file mode 160000 index 0000000000..acf358be18 --- /dev/null +++ b/Cores/blueMSX/blueMSX-libretro @@ -0,0 +1 @@ +Subproject commit acf358be18644a9df0ed9602d63c2f73d4fe605a diff --git a/Cores/ep128emu/BuildFlags.xcconfig b/Cores/ep128emu/BuildFlags.xcconfig new file mode 100644 index 0000000000..4c3c944a7f --- /dev/null +++ b/Cores/ep128emu/BuildFlags.xcconfig @@ -0,0 +1,28 @@ +// +// BuildFlags.xcconfig +// PVEP128Emu +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 OBJ_C=1 IOS=1 EXCLUDE_SOUND_LIBS=1 +// USE_POSIX_MEMALIGN __RETRO_ARM__ ENABLE_MIDI_PORT=1 +OTHER_CFLAGS = $(inherited) -ObjC +// -frtti -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/ep128emu/PVEP128Emu-Prefix.pch b/Cores/ep128emu/PVEP128Emu-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/ep128emu/PVEP128Emu.h b/Cores/ep128emu/PVEP128Emu.h new file mode 100644 index 0000000000..d1c750e769 --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu.h @@ -0,0 +1,19 @@ +// +// PVEP128Emu.h +// PVEP128Emu +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVEP128Emu. +FOUNDATION_EXPORT double PVEP128EmuVersionNumber; + +//! Project version string for PVEP128Emu. +FOUNDATION_EXPORT const unsigned char PVEP128EmuVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/ep128emu/PVEP128Emu.xcodeproj/project.pbxproj b/Cores/ep128emu/PVEP128Emu.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..e93daf3f0b --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu.xcodeproj/project.pbxproj @@ -0,0 +1,1441 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libep128emu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libep128emu.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVEP128EmuCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVEP128EmuCore.mm */; }; + B37022C92872554300B3F6DA /* PVEP128EmuCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVEP128EmuCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVEP128Emu.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVEP128Emu.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libep128emu-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libep128emu-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3EBB1272872984700EAEB37 /* compress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD5B2872977900EAEB37 /* compress.cpp */; }; + B3EBB1282872984700EAEB37 /* ula.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD4A2872977900EAEB37 /* ula.cpp */; }; + B3EBB1292872984700EAEB37 /* videorec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD232872977900EAEB37 /* videorec.cpp */; }; + B3EBB12A2872984700EAEB37 /* cpcmem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD112872977900EAEB37 /* cpcmem.cpp */; }; + B3EBB12B2872984700EAEB37 /* ay3_8912.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD202872977900EAEB37 /* ay3_8912.cpp */; }; + B3EBB12C2872984700EAEB37 /* cfg_db.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD1C2872977900EAEB37 /* cfg_db.cpp */; }; + B3EBB12E2872984700EAEB37 /* ep_fdd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD122872977900EAEB37 /* ep_fdd.cpp */; }; + B3EBB12F2872984700EAEB37 /* tvcmem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACFE2872977900EAEB37 /* tvcmem.cpp */; }; + B3EBB1302872984700EAEB37 /* tvcvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD352872977900EAEB37 /* tvcvideo.cpp */; }; + B3EBB1312872984700EAEB37 /* cpc464vm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD4C2872977900EAEB37 /* cpc464vm.cpp */; }; + B3EBB1322872984700EAEB37 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACFF2872977900EAEB37 /* memory.cpp */; }; + B3EBB1332872984700EAEB37 /* zxioport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD242872977900EAEB37 /* zxioport.cpp */; }; + B3EBB1342872984700EAEB37 /* decompm2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD0C2872977900EAEB37 /* decompm2.cpp */; }; + B3EBB1352872984700EAEB37 /* pngwrite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD402872977900EAEB37 /* pngwrite.cpp */; }; + B3EBB1362872984700EAEB37 /* comprlib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD3A2872977900EAEB37 /* comprlib.cpp */; }; + B3EBB1372872984700EAEB37 /* cpcvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD142872977900EAEB37 /* cpcvideo.cpp */; }; + B3EBB1382872984700EAEB37 /* tvc64vm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD522872977900EAEB37 /* tvc64vm.cpp */; }; + B3EBB1392872984700EAEB37 /* soundio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD0B2872977900EAEB37 /* soundio.cpp */; }; + B3EBB13A2872984700EAEB37 /* system.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD372872977900EAEB37 /* system.cpp */; }; + B3EBB13B2872984700EAEB37 /* fileio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD262872977900EAEB37 /* fileio.cpp */; }; + B3EBB13C2872984700EAEB37 /* emucfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD2F2872977900EAEB37 /* emucfg.cpp */; }; + B3EBB13D2872984700EAEB37 /* epmemcfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD382872977900EAEB37 /* epmemcfg.cpp */; }; + B3EBB13E2872984700EAEB37 /* sdext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD0D2872977900EAEB37 /* sdext.cpp */; }; + B3EBB13F2872984700EAEB37 /* joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD502872977900EAEB37 /* joystick.cpp */; }; + B3EBB1402872984700EAEB37 /* script.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD162872977900EAEB37 /* script.cpp */; }; + B3EBB1412872984700EAEB37 /* crtc6845.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD1A2872977900EAEB37 /* crtc6845.cpp */; }; + B3EBB1422872984700EAEB37 /* zx128vm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACFD2872977900EAEB37 /* zx128vm.cpp */; }; + B3EBB1432872984700EAEB37 /* bplist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD3D2872977900EAEB37 /* bplist.cpp */; }; + B3EBB1442872984700EAEB37 /* snapshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD302872977900EAEB37 /* snapshot.cpp */; }; + B3EBB1452872984700EAEB37 /* vmthread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD1D2872977900EAEB37 /* vmthread.cpp */; }; + B3EBB1462872984700EAEB37 /* zxmemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD5D2872977900EAEB37 /* zxmemory.cpp */; }; + B3EBB1472872984700EAEB37 /* ep128vm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD482872977900EAEB37 /* ep128vm.cpp */; }; + B3EBB1482872984700EAEB37 /* wd177x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD552872977900EAEB37 /* wd177x.cpp */; }; + B3EBB1492872984700EAEB37 /* vm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD412872977900EAEB37 /* vm.cpp */; }; + B3EBB14A2872984700EAEB37 /* cpcio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD2B2872977900EAEB37 /* cpcio.cpp */; }; + B3EBB14B2872984700EAEB37 /* ide.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD002872977900EAEB37 /* ide.cpp */; }; + B3EBB14C2872984700EAEB37 /* tvc_snap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD422872977900EAEB37 /* tvc_snap.cpp */; }; + B3EBB14D2872984700EAEB37 /* tape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD3F2872977900EAEB37 /* tape.cpp */; }; + B3EBB14E2872984700EAEB37 /* fdc765.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD4B2872977900EAEB37 /* fdc765.cpp */; }; + B3EBB14F2872984700EAEB37 /* cpcdisk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD2C2872977900EAEB37 /* cpcdisk.cpp */; }; + B3EBB1502872984700EAEB37 /* dave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD2E2872977900EAEB37 /* dave.cpp */; }; + B3EBB1512872984700EAEB37 /* display.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD282872977900EAEB37 /* display.cpp */; }; + B3EBB1522872984700EAEB37 /* cpc_snap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD1F2872977900EAEB37 /* cpc_snap.cpp */; }; + B3EBB1532872984700EAEB37 /* debuglib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACFC2872977900EAEB37 /* debuglib.cpp */; }; + B3EBB1552872984700EAEB37 /* dotconf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD252872977900EAEB37 /* dotconf.c */; }; + B3EBB1562872984700EAEB37 /* snd_conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD102872977900EAEB37 /* snd_conv.cpp */; }; + B3EBB1572872984700EAEB37 /* ioports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD062872977900EAEB37 /* ioports.cpp */; }; + B3EBB1582872984700EAEB37 /* zx_snap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD472872977900EAEB37 /* zx_snap.cpp */; }; + B3EBB15A2872984700EAEB37 /* nick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAD562872977900EAEB37 /* nick.cpp */; }; + B3EBB191287298A700EAEB37 /* z80.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACB42872977900EAEB37 /* z80.cpp */; }; + B3EBB192287298A700EAEB37 /* z80funcs2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACAF2872977900EAEB37 /* z80funcs2.cpp */; }; + B3EBB1932872993500EAEB37 /* core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC9F2872977800EAEB37 /* core.cpp */; }; + B3EBB1942872993500EAEB37 /* libretrodisp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACA42872977800EAEB37 /* libretrodisp.cpp */; }; + B3EBB1952872993500EAEB37 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACA52872977800EAEB37 /* main.cpp */; }; + B3EBB1962872993500EAEB37 /* libretrosnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3EBACA02872977800EAEB37 /* libretrosnd.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libep128emu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libep128emu.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libep128emu-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libep128emu-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37021F9287253B200B3F6DA /* PVEP128Emu.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = PVEP128Emu.xcodeproj; sourceTree = ""; }; + B37022BD287253B300B3F6DA /* PVEP128Emu-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVEP128Emu-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVEP128Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVEP128Emu.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVEP128Emu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVEP128Emu.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVEP128EmuCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVEP128EmuCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVEP128EmuCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVEP128EmuCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVEP128Emu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVEP128Emu.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3EBAC9C2872977800EAEB37 /* libretrodisp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = libretrodisp.hpp; sourceTree = ""; }; + B3EBAC9D2872977800EAEB37 /* sample.ep128cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = sample.ep128cfg; sourceTree = ""; }; + B3EBAC9E2872977800EAEB37 /* libretro_keys_reverse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_keys_reverse.h; sourceTree = ""; }; + B3EBAC9F2872977800EAEB37 /* core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = core.cpp; sourceTree = ""; }; + B3EBACA02872977800EAEB37 /* libretrosnd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretrosnd.cpp; sourceTree = ""; }; + B3EBACA12872977800EAEB37 /* libretro-funcs.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = "libretro-funcs.hpp"; sourceTree = ""; }; + B3EBACA22872977800EAEB37 /* libretrosnd.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = libretrosnd.hpp; sourceTree = ""; }; + B3EBACA32872977800EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBACA42872977800EAEB37 /* libretrodisp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretrodisp.cpp; sourceTree = ""; }; + B3EBACA52872977800EAEB37 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B3EBACA62872977800EAEB37 /* core.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = core.hpp; sourceTree = ""; }; + B3EBACA72872977800EAEB37 /* PKGBUILD */ = {isa = PBXFileReference; lastKnownFileType = text; path = PKGBUILD; sourceTree = ""; }; + B3EBACA92872977800EAEB37 /* LICENSE.PortAudio */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.PortAudio; sourceTree = ""; }; + B3EBACAA2872977900EAEB37 /* LICENSE.dotconf */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.dotconf; sourceTree = ""; }; + B3EBACAB2872977900EAEB37 /* LICENSE.libsndfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.libsndfile; sourceTree = ""; }; + B3EBACAC2872977900EAEB37 /* LICENSE.SDL */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.SDL; sourceTree = ""; }; + B3EBACAD2872977900EAEB37 /* LICENSE.Lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.Lua; sourceTree = ""; }; + B3EBACAF2872977900EAEB37 /* z80funcs2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z80funcs2.cpp; sourceTree = ""; }; + B3EBACB02872977900EAEB37 /* z80.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = z80.hpp; sourceTree = ""; }; + B3EBACB12872977900EAEB37 /* z80funcs.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = z80funcs.hpp; sourceTree = ""; }; + B3EBACB22872977900EAEB37 /* z80macros.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = z80macros.hpp; sourceTree = ""; }; + B3EBACB32872977900EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBACB42872977900EAEB37 /* z80.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = z80.cpp; sourceTree = ""; }; + B3EBACB52872977900EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBACB62872977900EAEB37 /* ep128emu_libretro.info */ = {isa = PBXFileReference; lastKnownFileType = text; path = ep128emu_libretro.info; sourceTree = ""; }; + B3EBACB82872977900EAEB37 /* epfileio.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = epfileio.s; sourceTree = ""; }; + B3EBACB92872977900EAEB37 /* tvcfileio.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = tvcfileio.s; sourceTree = ""; }; + B3EBACBA2872977900EAEB37 /* epfileio.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = epfileio.rom; sourceTree = ""; }; + B3EBACBB2872977900EAEB37 /* tvcfileio.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = tvcfileio.rom; sourceTree = ""; }; + B3EBACBD2872977900EAEB37 /* voice.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = voice.cpp; sourceTree = ""; }; + B3EBACBE2872977900EAEB37 /* wave6581_PST.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave6581_PST.hpp; sourceTree = ""; }; + B3EBACBF2872977900EAEB37 /* extfilt.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = extfilt.hpp; sourceTree = ""; }; + B3EBACC02872977900EAEB37 /* spline.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = spline.hpp; sourceTree = ""; }; + B3EBACC12872977900EAEB37 /* envelope.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = envelope.hpp; sourceTree = ""; }; + B3EBACC22872977900EAEB37 /* wave8580_P_T.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave8580_P_T.hpp; sourceTree = ""; }; + B3EBACC32872977900EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBACC42872977900EAEB37 /* dac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dac.cpp; sourceTree = ""; }; + B3EBACC52872977900EAEB37 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3EBACC62872977900EAEB37 /* wave.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wave.cpp; sourceTree = ""; }; + B3EBACC72872977900EAEB37 /* version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = version.cpp; sourceTree = ""; }; + B3EBACC82872977900EAEB37 /* wave8580_PS_.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave8580_PS_.hpp; sourceTree = ""; }; + B3EBACC92872977900EAEB37 /* pot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pot.cpp; sourceTree = ""; }; + B3EBACCA2872977900EAEB37 /* sid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sid.cpp; sourceTree = ""; }; + B3EBACCB2872977900EAEB37 /* wave8580__ST.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave8580__ST.hpp; sourceTree = ""; }; + B3EBACCC2872977900EAEB37 /* filter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = filter.cpp; sourceTree = ""; }; + B3EBACCD2872977900EAEB37 /* siddefs.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = siddefs.hpp; sourceTree = ""; }; + B3EBACCE2872977900EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBACCF2872977900EAEB37 /* wave.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave.hpp; sourceTree = ""; }; + B3EBACD02872977900EAEB37 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3EBACD12872977900EAEB37 /* wave6581_PS_.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave6581_PS_.hpp; sourceTree = ""; }; + B3EBACD22872977900EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBACD32872977900EAEB37 /* pot.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pot.hpp; sourceTree = ""; }; + B3EBACD42872977900EAEB37 /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + B3EBACD52872977900EAEB37 /* sid.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = sid.hpp; sourceTree = ""; }; + B3EBACD62872977900EAEB37 /* wave6581__ST.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave6581__ST.hpp; sourceTree = ""; }; + B3EBACD72872977900EAEB37 /* filter.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = filter.hpp; sourceTree = ""; }; + B3EBACD82872977900EAEB37 /* voice.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = voice.hpp; sourceTree = ""; }; + B3EBACD92872977900EAEB37 /* THANKS */ = {isa = PBXFileReference; lastKnownFileType = text; path = THANKS; sourceTree = ""; }; + B3EBACDA2872977900EAEB37 /* wave8580_PST.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave8580_PST.hpp; sourceTree = ""; }; + B3EBACDB2872977900EAEB37 /* extfilt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = extfilt.cpp; sourceTree = ""; }; + B3EBACDC2872977900EAEB37 /* envelope.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = envelope.cpp; sourceTree = ""; }; + B3EBACDD2872977900EAEB37 /* dac.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = dac.hpp; sourceTree = ""; }; + B3EBACDE2872977900EAEB37 /* wave6581_P_T.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wave6581_P_T.hpp; sourceTree = ""; }; + B3EBACDF2872977900EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBACE02872977900EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EBACE12872977900EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBACE22872977900EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBACE32872977900EAEB37 /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + B3EBACE42872977900EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBACE52872977900EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBACE62872977900EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBACE82872977900EAEB37 /* ep128.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = ep128.desktop; sourceTree = ""; }; + B3EBACE92872977900EAEB37 /* cpc464emu.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = cpc464emu.ico; sourceTree = ""; }; + B3EBACEA2872977900EAEB37 /* zx128.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = zx128.desktop; sourceTree = ""; }; + B3EBACEB2872977900EAEB37 /* tvc64emu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tvc64emu.png; sourceTree = ""; }; + B3EBACEC2872977900EAEB37 /* ep128emu.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = ep128emu.rc; sourceTree = ""; }; + B3EBACED2872977900EAEB37 /* eptapeedit.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = eptapeedit.desktop; sourceTree = ""; }; + B3EBACEE2872977900EAEB37 /* zx128emu.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = zx128emu.ico; sourceTree = ""; }; + B3EBACEF2872977900EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBACF02872977900EAEB37 /* tapeedit.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = tapeedit.ico; sourceTree = ""; }; + B3EBACF12872977900EAEB37 /* tapeedit.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = tapeedit.rc; sourceTree = ""; }; + B3EBACF22872977900EAEB37 /* cpc464emu.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = cpc464emu.desktop; sourceTree = ""; }; + B3EBACF32872977900EAEB37 /* ep128emu.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = ep128emu.ico; sourceTree = ""; }; + B3EBACF42872977900EAEB37 /* cpc464emu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cpc464emu.png; sourceTree = ""; }; + B3EBACF52872977900EAEB37 /* tvc64emu.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = tvc64emu.desktop; sourceTree = ""; }; + B3EBACF62872977900EAEB37 /* zx128emu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = zx128emu.png; sourceTree = ""; }; + B3EBACF72872977900EAEB37 /* tvc64emu.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = tvc64emu.ico; sourceTree = ""; }; + B3EBACF82872977900EAEB37 /* tapeedit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tapeedit.png; sourceTree = ""; }; + B3EBACF92872977900EAEB37 /* ep128emu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ep128emu.png; sourceTree = ""; }; + B3EBACFB2872977900EAEB37 /* vm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vm.hpp; sourceTree = ""; }; + B3EBACFC2872977900EAEB37 /* debuglib.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = debuglib.cpp; sourceTree = ""; }; + B3EBACFD2872977900EAEB37 /* zx128vm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zx128vm.cpp; sourceTree = ""; }; + B3EBACFE2872977900EAEB37 /* tvcmem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tvcmem.cpp; sourceTree = ""; }; + B3EBACFF2872977900EAEB37 /* memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory.cpp; sourceTree = ""; }; + B3EBAD002872977900EAEB37 /* ide.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ide.cpp; sourceTree = ""; }; + B3EBAD012872977900EAEB37 /* ula.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ula.hpp; sourceTree = ""; }; + B3EBAD022872977900EAEB37 /* ep128vm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ep128vm.hpp; sourceTree = ""; }; + B3EBAD032872977900EAEB37 /* fdc765.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fdc765.hpp; sourceTree = ""; }; + B3EBAD042872977900EAEB37 /* cpc464vm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cpc464vm.hpp; sourceTree = ""; }; + B3EBAD052872977900EAEB37 /* joystick.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = joystick.hpp; sourceTree = ""; }; + B3EBAD062872977900EAEB37 /* ioports.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ioports.cpp; sourceTree = ""; }; + B3EBAD072872977900EAEB37 /* gldisp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gldisp.cpp; sourceTree = ""; }; + B3EBAD082872977900EAEB37 /* fldisp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fldisp.cpp; sourceTree = ""; }; + B3EBAD092872977900EAEB37 /* dotconf_priv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dotconf_priv.h; sourceTree = ""; }; + B3EBAD0A2872977900EAEB37 /* tvc64vm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = tvc64vm.hpp; sourceTree = ""; }; + B3EBAD0B2872977900EAEB37 /* soundio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = soundio.cpp; sourceTree = ""; }; + B3EBAD0C2872977900EAEB37 /* decompm2.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = decompm2.cpp; sourceTree = ""; }; + B3EBAD0D2872977900EAEB37 /* sdext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sdext.cpp; sourceTree = ""; }; + B3EBAD0E2872977900EAEB37 /* wd177x.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = wd177x.hpp; sourceTree = ""; }; + B3EBAD0F2872977900EAEB37 /* nick.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = nick.hpp; sourceTree = ""; }; + B3EBAD102872977900EAEB37 /* snd_conv.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snd_conv.cpp; sourceTree = ""; }; + B3EBAD112872977900EAEB37 /* cpcmem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpcmem.cpp; sourceTree = ""; }; + B3EBAD122872977900EAEB37 /* ep_fdd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ep_fdd.cpp; sourceTree = ""; }; + B3EBAD132872977900EAEB37 /* zxmemory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = zxmemory.hpp; sourceTree = ""; }; + B3EBAD142872977900EAEB37 /* cpcvideo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpcvideo.cpp; sourceTree = ""; }; + B3EBAD152872977900EAEB37 /* cpcio.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cpcio.hpp; sourceTree = ""; }; + B3EBAD162872977900EAEB37 /* script.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = script.cpp; sourceTree = ""; }; + B3EBAD172872977900EAEB37 /* cpcdisk.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cpcdisk.hpp; sourceTree = ""; }; + B3EBAD182872977900EAEB37 /* emucfg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = emucfg.hpp; sourceTree = ""; }; + B3EBAD192872977900EAEB37 /* dave.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = dave.hpp; sourceTree = ""; }; + B3EBAD1A2872977900EAEB37 /* crtc6845.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crtc6845.cpp; sourceTree = ""; }; + B3EBAD1B2872977900EAEB37 /* guicolor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = guicolor.cpp; sourceTree = ""; }; + B3EBAD1C2872977900EAEB37 /* cfg_db.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_db.cpp; sourceTree = ""; }; + B3EBAD1D2872977900EAEB37 /* vmthread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vmthread.cpp; sourceTree = ""; }; + B3EBAD1E2872977900EAEB37 /* tvcvideo.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = tvcvideo.hpp; sourceTree = ""; }; + B3EBAD1F2872977900EAEB37 /* cpc_snap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpc_snap.cpp; sourceTree = ""; }; + B3EBAD202872977900EAEB37 /* ay3_8912.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ay3_8912.cpp; sourceTree = ""; }; + B3EBAD212872977900EAEB37 /* system.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = system.hpp; sourceTree = ""; }; + B3EBAD222872977900EAEB37 /* comprlib.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = comprlib.hpp; sourceTree = ""; }; + B3EBAD232872977900EAEB37 /* videorec.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = videorec.cpp; sourceTree = ""; }; + B3EBAD242872977900EAEB37 /* zxioport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zxioport.cpp; sourceTree = ""; }; + B3EBAD252872977900EAEB37 /* dotconf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dotconf.c; sourceTree = ""; }; + B3EBAD262872977900EAEB37 /* fileio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fileio.cpp; sourceTree = ""; }; + B3EBAD272872977900EAEB37 /* bplist.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = bplist.hpp; sourceTree = ""; }; + B3EBAD282872977900EAEB37 /* display.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = display.cpp; sourceTree = ""; }; + B3EBAD292872977900EAEB37 /* tape.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = tape.hpp; sourceTree = ""; }; + B3EBAD2A2872977900EAEB37 /* pngwrite.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pngwrite.hpp; sourceTree = ""; }; + B3EBAD2B2872977900EAEB37 /* cpcio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpcio.cpp; sourceTree = ""; }; + B3EBAD2C2872977900EAEB37 /* cpcdisk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpcdisk.cpp; sourceTree = ""; }; + B3EBAD2D2872977900EAEB37 /* script.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = script.hpp; sourceTree = ""; }; + B3EBAD2E2872977900EAEB37 /* dave.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dave.cpp; sourceTree = ""; }; + B3EBAD2F2872977900EAEB37 /* emucfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = emucfg.cpp; sourceTree = ""; }; + B3EBAD302872977900EAEB37 /* snapshot.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snapshot.cpp; sourceTree = ""; }; + B3EBAD312872977900EAEB37 /* crtc6845.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = crtc6845.hpp; sourceTree = ""; }; + B3EBAD322872977900EAEB37 /* guicolor.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = guicolor.hpp; sourceTree = ""; }; + B3EBAD332872977900EAEB37 /* cfg_db.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cfg_db.hpp; sourceTree = ""; }; + B3EBAD342872977900EAEB37 /* vmthread.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = vmthread.hpp; sourceTree = ""; }; + B3EBAD352872977900EAEB37 /* tvcvideo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tvcvideo.cpp; sourceTree = ""; }; + B3EBAD362872977900EAEB37 /* ay3_8912.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ay3_8912.hpp; sourceTree = ""; }; + B3EBAD372872977900EAEB37 /* system.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = system.cpp; sourceTree = ""; }; + B3EBAD382872977900EAEB37 /* epmemcfg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = epmemcfg.cpp; sourceTree = ""; }; + B3EBAD392872977900EAEB37 /* videorec.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = videorec.hpp; sourceTree = ""; }; + B3EBAD3A2872977900EAEB37 /* comprlib.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = comprlib.cpp; sourceTree = ""; }; + B3EBAD3B2872977900EAEB37 /* fileio.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fileio.hpp; sourceTree = ""; }; + B3EBAD3C2872977900EAEB37 /* zxioport.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = zxioport.hpp; sourceTree = ""; }; + B3EBAD3D2872977900EAEB37 /* bplist.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = bplist.cpp; sourceTree = ""; }; + B3EBAD3E2872977900EAEB37 /* display.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = display.hpp; sourceTree = ""; }; + B3EBAD3F2872977900EAEB37 /* tape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tape.cpp; sourceTree = ""; }; + B3EBAD402872977900EAEB37 /* pngwrite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pngwrite.cpp; sourceTree = ""; }; + B3EBAD412872977900EAEB37 /* vm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vm.cpp; sourceTree = ""; }; + B3EBAD422872977900EAEB37 /* tvc_snap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tvc_snap.cpp; sourceTree = ""; }; + B3EBAD432872977900EAEB37 /* zx128vm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = zx128vm.hpp; sourceTree = ""; }; + B3EBAD442872977900EAEB37 /* tvcmem.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = tvcmem.hpp; sourceTree = ""; }; + B3EBAD452872977900EAEB37 /* debuglib.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = debuglib.hpp; sourceTree = ""; }; + B3EBAD462872977900EAEB37 /* memory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = memory.hpp; sourceTree = ""; }; + B3EBAD472872977900EAEB37 /* zx_snap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zx_snap.cpp; sourceTree = ""; }; + B3EBAD482872977900EAEB37 /* ep128vm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ep128vm.cpp; sourceTree = ""; }; + B3EBAD492872977900EAEB37 /* ide.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ide.hpp; sourceTree = ""; }; + B3EBAD4A2872977900EAEB37 /* ula.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ula.cpp; sourceTree = ""; }; + B3EBAD4B2872977900EAEB37 /* fdc765.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fdc765.cpp; sourceTree = ""; }; + B3EBAD4C2872977900EAEB37 /* cpc464vm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cpc464vm.cpp; sourceTree = ""; }; + B3EBAD4D2872977900EAEB37 /* ioports.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ioports.hpp; sourceTree = ""; }; + B3EBAD4E2872977900EAEB37 /* gldisp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = gldisp.hpp; sourceTree = ""; }; + B3EBAD4F2872977900EAEB37 /* fldisp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fldisp.hpp; sourceTree = ""; }; + B3EBAD502872977900EAEB37 /* joystick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = joystick.cpp; sourceTree = ""; }; + B3EBAD512872977900EAEB37 /* soundio.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = soundio.hpp; sourceTree = ""; }; + B3EBAD522872977900EAEB37 /* tvc64vm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tvc64vm.cpp; sourceTree = ""; }; + B3EBAD532872977900EAEB37 /* ep128emu.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ep128emu.hpp; sourceTree = ""; }; + B3EBAD542872977900EAEB37 /* decompm2.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = decompm2.hpp; sourceTree = ""; }; + B3EBAD552872977900EAEB37 /* wd177x.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wd177x.cpp; sourceTree = ""; }; + B3EBAD562872977900EAEB37 /* nick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = nick.cpp; sourceTree = ""; }; + B3EBAD572872977900EAEB37 /* sdext.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = sdext.hpp; sourceTree = ""; }; + B3EBAD582872977900EAEB37 /* cpcmem.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cpcmem.hpp; sourceTree = ""; }; + B3EBAD592872977900EAEB37 /* dotconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dotconf.h; sourceTree = ""; }; + B3EBAD5A2872977900EAEB37 /* snd_conv.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = snd_conv.hpp; sourceTree = ""; }; + B3EBAD5B2872977900EAEB37 /* compress.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = compress.cpp; sourceTree = ""; }; + B3EBAD5C2872977900EAEB37 /* ep_fdd.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ep_fdd.hpp; sourceTree = ""; }; + B3EBAD5D2872977900EAEB37 /* zxmemory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zxmemory.cpp; sourceTree = ""; }; + B3EBAD5E2872977900EAEB37 /* cpcvideo.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cpcvideo.hpp; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libep128emu.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libep128emu-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37021FA287253B200B3F6DA /* Products */ = { + isa = PBXGroup; + name = Products; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVEP128Emu */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVEP128Emu.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVEP128Emu; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVEP128EmuCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVEP128EmuCore.h */, + B37022C6287253B300B3F6DA /* PVEP128EmuCore.mm */, + ); + path = PVEP128EmuCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EBAC9A2872977800EAEB37 /* ep128emu-core */, + B37022BE287253B300B3F6DA /* PVEP128Emu */, + B37022C4287253B300B3F6DA /* PVEP128EmuCore */, + B37022C3287253B300B3F6DA /* PVEP128Emu.h */, + B37022BD287253B300B3F6DA /* PVEP128Emu-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B37021F9287253B200B3F6DA /* PVEP128Emu.xcodeproj */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVEP128Emu.framework */, + B30178D3207C901D0051B93D /* libep128emu.a */, + B3344BC32859E088006E6B3A /* libep128emu-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EBAC9A2872977800EAEB37 /* ep128emu-core */ = { + isa = PBXGroup; + children = ( + B3EBACE42872977900EAEB37 /* .gitignore */, + B3EBACE22872977900EAEB37 /* COPYING */, + B3EBACB52872977900EAEB37 /* Makefile */, + B3EBACE32872977900EAEB37 /* NEWS */, + B3EBACA72872977800EAEB37 /* PKGBUILD */, + B3EBACDF2872977900EAEB37 /* README */, + B3EBACE02872977900EAEB37 /* Makefile.common */, + B3EBACB62872977900EAEB37 /* ep128emu_libretro.info */, + B3EBACE12872977900EAEB37 /* README.md */, + B3EBACE62872977900EAEB37 /* link.T */, + B3EBACE52872977900EAEB37 /* .gitlab-ci.yml */, + B3EBAC9B2872977800EAEB37 /* core */, + B3EBACA82872977800EAEB37 /* licenses */, + B3EBACBC2872977900EAEB37 /* resid */, + B3EBACE72872977900EAEB37 /* resource */, + B3EBACB72872977900EAEB37 /* roms */, + B3EBACFA2872977900EAEB37 /* src */, + B3EBACAE2872977900EAEB37 /* z80 */, + ); + path = "ep128emu-core"; + sourceTree = ""; + }; + B3EBAC9B2872977800EAEB37 /* core */ = { + isa = PBXGroup; + children = ( + B3EBAC9F2872977800EAEB37 /* core.cpp */, + B3EBACA42872977800EAEB37 /* libretrodisp.cpp */, + B3EBACA02872977800EAEB37 /* libretrosnd.cpp */, + B3EBACA52872977800EAEB37 /* main.cpp */, + B3EBAC9D2872977800EAEB37 /* sample.ep128cfg */, + B3EBAC9E2872977800EAEB37 /* libretro_keys_reverse.h */, + B3EBACA32872977800EAEB37 /* libretro.h */, + B3EBACA62872977800EAEB37 /* core.hpp */, + B3EBACA12872977800EAEB37 /* libretro-funcs.hpp */, + B3EBAC9C2872977800EAEB37 /* libretrodisp.hpp */, + B3EBACA22872977800EAEB37 /* libretrosnd.hpp */, + ); + path = core; + sourceTree = ""; + }; + B3EBACA82872977800EAEB37 /* licenses */ = { + isa = PBXGroup; + children = ( + B3EBACA92872977800EAEB37 /* LICENSE.PortAudio */, + B3EBACAA2872977900EAEB37 /* LICENSE.dotconf */, + B3EBACAB2872977900EAEB37 /* LICENSE.libsndfile */, + B3EBACAC2872977900EAEB37 /* LICENSE.SDL */, + B3EBACAD2872977900EAEB37 /* LICENSE.Lua */, + ); + path = licenses; + sourceTree = ""; + }; + B3EBACAE2872977900EAEB37 /* z80 */ = { + isa = PBXGroup; + children = ( + B3EBACAF2872977900EAEB37 /* z80funcs2.cpp */, + B3EBACB02872977900EAEB37 /* z80.hpp */, + B3EBACB12872977900EAEB37 /* z80funcs.hpp */, + B3EBACB22872977900EAEB37 /* z80macros.hpp */, + B3EBACB32872977900EAEB37 /* COPYING */, + B3EBACB42872977900EAEB37 /* z80.cpp */, + ); + path = z80; + sourceTree = ""; + }; + B3EBACB72872977900EAEB37 /* roms */ = { + isa = PBXGroup; + children = ( + B3EBACB82872977900EAEB37 /* epfileio.s */, + B3EBACB92872977900EAEB37 /* tvcfileio.s */, + B3EBACBA2872977900EAEB37 /* epfileio.rom */, + B3EBACBB2872977900EAEB37 /* tvcfileio.rom */, + ); + path = roms; + sourceTree = ""; + }; + B3EBACBC2872977900EAEB37 /* resid */ = { + isa = PBXGroup; + children = ( + B3EBACC52872977900EAEB37 /* AUTHORS */, + B3EBACC32872977900EAEB37 /* ChangeLog */, + B3EBACD22872977900EAEB37 /* COPYING */, + B3EBACD42872977900EAEB37 /* NEWS */, + B3EBACCE2872977900EAEB37 /* README */, + B3EBACD92872977900EAEB37 /* THANKS */, + B3EBACD02872977900EAEB37 /* TODO */, + B3EBACC42872977900EAEB37 /* dac.cpp */, + B3EBACDC2872977900EAEB37 /* envelope.cpp */, + B3EBACDB2872977900EAEB37 /* extfilt.cpp */, + B3EBACCC2872977900EAEB37 /* filter.cpp */, + B3EBACC92872977900EAEB37 /* pot.cpp */, + B3EBACCA2872977900EAEB37 /* sid.cpp */, + B3EBACC72872977900EAEB37 /* version.cpp */, + B3EBACBD2872977900EAEB37 /* voice.cpp */, + B3EBACC62872977900EAEB37 /* wave.cpp */, + B3EBACDD2872977900EAEB37 /* dac.hpp */, + B3EBACC12872977900EAEB37 /* envelope.hpp */, + B3EBACBF2872977900EAEB37 /* extfilt.hpp */, + B3EBACD72872977900EAEB37 /* filter.hpp */, + B3EBACD32872977900EAEB37 /* pot.hpp */, + B3EBACD52872977900EAEB37 /* sid.hpp */, + B3EBACCD2872977900EAEB37 /* siddefs.hpp */, + B3EBACC02872977900EAEB37 /* spline.hpp */, + B3EBACD82872977900EAEB37 /* voice.hpp */, + B3EBACCF2872977900EAEB37 /* wave.hpp */, + B3EBACD62872977900EAEB37 /* wave6581__ST.hpp */, + B3EBACDE2872977900EAEB37 /* wave6581_P_T.hpp */, + B3EBACD12872977900EAEB37 /* wave6581_PS_.hpp */, + B3EBACBE2872977900EAEB37 /* wave6581_PST.hpp */, + B3EBACCB2872977900EAEB37 /* wave8580__ST.hpp */, + B3EBACC22872977900EAEB37 /* wave8580_P_T.hpp */, + B3EBACC82872977900EAEB37 /* wave8580_PS_.hpp */, + B3EBACDA2872977900EAEB37 /* wave8580_PST.hpp */, + ); + path = resid; + sourceTree = ""; + }; + B3EBACE72872977900EAEB37 /* resource */ = { + isa = PBXGroup; + children = ( + B3EBACEF2872977900EAEB37 /* Makefile */, + B3EBACF22872977900EAEB37 /* cpc464emu.desktop */, + B3EBACE82872977900EAEB37 /* ep128.desktop */, + B3EBACED2872977900EAEB37 /* eptapeedit.desktop */, + B3EBACF52872977900EAEB37 /* tvc64emu.desktop */, + B3EBACEA2872977900EAEB37 /* zx128.desktop */, + B3EBACE92872977900EAEB37 /* cpc464emu.ico */, + B3EBACF32872977900EAEB37 /* ep128emu.ico */, + B3EBACF02872977900EAEB37 /* tapeedit.ico */, + B3EBACF72872977900EAEB37 /* tvc64emu.ico */, + B3EBACEE2872977900EAEB37 /* zx128emu.ico */, + B3EBACF42872977900EAEB37 /* cpc464emu.png */, + B3EBACF92872977900EAEB37 /* ep128emu.png */, + B3EBACF82872977900EAEB37 /* tapeedit.png */, + B3EBACEB2872977900EAEB37 /* tvc64emu.png */, + B3EBACF62872977900EAEB37 /* zx128emu.png */, + B3EBACEC2872977900EAEB37 /* ep128emu.rc */, + B3EBACF12872977900EAEB37 /* tapeedit.rc */, + ); + path = resource; + sourceTree = ""; + }; + B3EBACFA2872977900EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBAD252872977900EAEB37 /* dotconf.c */, + B3EBAD202872977900EAEB37 /* ay3_8912.cpp */, + B3EBAD3D2872977900EAEB37 /* bplist.cpp */, + B3EBAD1C2872977900EAEB37 /* cfg_db.cpp */, + B3EBAD5B2872977900EAEB37 /* compress.cpp */, + B3EBAD3A2872977900EAEB37 /* comprlib.cpp */, + B3EBAD1F2872977900EAEB37 /* cpc_snap.cpp */, + B3EBAD4C2872977900EAEB37 /* cpc464vm.cpp */, + B3EBAD2C2872977900EAEB37 /* cpcdisk.cpp */, + B3EBAD2B2872977900EAEB37 /* cpcio.cpp */, + B3EBAD112872977900EAEB37 /* cpcmem.cpp */, + B3EBAD142872977900EAEB37 /* cpcvideo.cpp */, + B3EBAD1A2872977900EAEB37 /* crtc6845.cpp */, + B3EBAD2E2872977900EAEB37 /* dave.cpp */, + B3EBACFC2872977900EAEB37 /* debuglib.cpp */, + B3EBAD0C2872977900EAEB37 /* decompm2.cpp */, + B3EBAD282872977900EAEB37 /* display.cpp */, + B3EBAD2F2872977900EAEB37 /* emucfg.cpp */, + B3EBAD122872977900EAEB37 /* ep_fdd.cpp */, + B3EBAD482872977900EAEB37 /* ep128vm.cpp */, + B3EBAD382872977900EAEB37 /* epmemcfg.cpp */, + B3EBAD4B2872977900EAEB37 /* fdc765.cpp */, + B3EBAD262872977900EAEB37 /* fileio.cpp */, + B3EBAD082872977900EAEB37 /* fldisp.cpp */, + B3EBAD072872977900EAEB37 /* gldisp.cpp */, + B3EBAD1B2872977900EAEB37 /* guicolor.cpp */, + B3EBAD002872977900EAEB37 /* ide.cpp */, + B3EBAD062872977900EAEB37 /* ioports.cpp */, + B3EBAD502872977900EAEB37 /* joystick.cpp */, + B3EBACFF2872977900EAEB37 /* memory.cpp */, + B3EBAD562872977900EAEB37 /* nick.cpp */, + B3EBAD402872977900EAEB37 /* pngwrite.cpp */, + B3EBAD162872977900EAEB37 /* script.cpp */, + B3EBAD0D2872977900EAEB37 /* sdext.cpp */, + B3EBAD302872977900EAEB37 /* snapshot.cpp */, + B3EBAD102872977900EAEB37 /* snd_conv.cpp */, + B3EBAD0B2872977900EAEB37 /* soundio.cpp */, + B3EBAD372872977900EAEB37 /* system.cpp */, + B3EBAD3F2872977900EAEB37 /* tape.cpp */, + B3EBAD422872977900EAEB37 /* tvc_snap.cpp */, + B3EBAD522872977900EAEB37 /* tvc64vm.cpp */, + B3EBACFE2872977900EAEB37 /* tvcmem.cpp */, + B3EBAD352872977900EAEB37 /* tvcvideo.cpp */, + B3EBAD4A2872977900EAEB37 /* ula.cpp */, + B3EBAD232872977900EAEB37 /* videorec.cpp */, + B3EBAD412872977900EAEB37 /* vm.cpp */, + B3EBAD1D2872977900EAEB37 /* vmthread.cpp */, + B3EBAD552872977900EAEB37 /* wd177x.cpp */, + B3EBAD472872977900EAEB37 /* zx_snap.cpp */, + B3EBACFD2872977900EAEB37 /* zx128vm.cpp */, + B3EBAD242872977900EAEB37 /* zxioport.cpp */, + B3EBAD5D2872977900EAEB37 /* zxmemory.cpp */, + B3EBAD092872977900EAEB37 /* dotconf_priv.h */, + B3EBAD592872977900EAEB37 /* dotconf.h */, + B3EBAD362872977900EAEB37 /* ay3_8912.hpp */, + B3EBAD272872977900EAEB37 /* bplist.hpp */, + B3EBAD332872977900EAEB37 /* cfg_db.hpp */, + B3EBAD222872977900EAEB37 /* comprlib.hpp */, + B3EBAD042872977900EAEB37 /* cpc464vm.hpp */, + B3EBAD172872977900EAEB37 /* cpcdisk.hpp */, + B3EBAD152872977900EAEB37 /* cpcio.hpp */, + B3EBAD582872977900EAEB37 /* cpcmem.hpp */, + B3EBAD5E2872977900EAEB37 /* cpcvideo.hpp */, + B3EBAD312872977900EAEB37 /* crtc6845.hpp */, + B3EBAD192872977900EAEB37 /* dave.hpp */, + B3EBAD452872977900EAEB37 /* debuglib.hpp */, + B3EBAD542872977900EAEB37 /* decompm2.hpp */, + B3EBAD3E2872977900EAEB37 /* display.hpp */, + B3EBAD182872977900EAEB37 /* emucfg.hpp */, + B3EBAD5C2872977900EAEB37 /* ep_fdd.hpp */, + B3EBAD532872977900EAEB37 /* ep128emu.hpp */, + B3EBAD022872977900EAEB37 /* ep128vm.hpp */, + B3EBAD032872977900EAEB37 /* fdc765.hpp */, + B3EBAD3B2872977900EAEB37 /* fileio.hpp */, + B3EBAD4F2872977900EAEB37 /* fldisp.hpp */, + B3EBAD4E2872977900EAEB37 /* gldisp.hpp */, + B3EBAD322872977900EAEB37 /* guicolor.hpp */, + B3EBAD492872977900EAEB37 /* ide.hpp */, + B3EBAD4D2872977900EAEB37 /* ioports.hpp */, + B3EBAD052872977900EAEB37 /* joystick.hpp */, + B3EBAD462872977900EAEB37 /* memory.hpp */, + B3EBAD0F2872977900EAEB37 /* nick.hpp */, + B3EBAD2A2872977900EAEB37 /* pngwrite.hpp */, + B3EBAD2D2872977900EAEB37 /* script.hpp */, + B3EBAD572872977900EAEB37 /* sdext.hpp */, + B3EBAD5A2872977900EAEB37 /* snd_conv.hpp */, + B3EBAD512872977900EAEB37 /* soundio.hpp */, + B3EBAD212872977900EAEB37 /* system.hpp */, + B3EBAD292872977900EAEB37 /* tape.hpp */, + B3EBAD0A2872977900EAEB37 /* tvc64vm.hpp */, + B3EBAD442872977900EAEB37 /* tvcmem.hpp */, + B3EBAD1E2872977900EAEB37 /* tvcvideo.hpp */, + B3EBAD012872977900EAEB37 /* ula.hpp */, + B3EBAD392872977900EAEB37 /* videorec.hpp */, + B3EBACFB2872977900EAEB37 /* vm.hpp */, + B3EBAD342872977900EAEB37 /* vmthread.hpp */, + B3EBAD0E2872977900EAEB37 /* wd177x.hpp */, + B3EBAD432872977900EAEB37 /* zx128vm.hpp */, + B3EBAD3C2872977900EAEB37 /* zxioport.hpp */, + B3EBAD132872977900EAEB37 /* zxmemory.hpp */, + ); + path = src; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVEP128Emu.h in Headers */, + B37022C92872554300B3F6DA /* PVEP128EmuCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* ep128emu */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "ep128emu" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ep128emu; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libep128emu.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* ep128emu-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "ep128emu-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ep128emu-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libep128emu-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVEP128Emu */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVEP128Emu" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVEP128Emu; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVEP128Emu.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVEP128Emu" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B37021FA287253B200B3F6DA /* Products */; + ProjectRef = B37021F9287253B200B3F6DA /* PVEP128Emu.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVEP128Emu */, + B3344B522859E088006E6B3A /* ep128emu-libretro */, + B30178D2207C901D0051B93D /* ep128emu */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB14A2872984700EAEB37 /* cpcio.cpp in Sources */, + B3EBB14C2872984700EAEB37 /* tvc_snap.cpp in Sources */, + B3EBB12C2872984700EAEB37 /* cfg_db.cpp in Sources */, + B3EBB1522872984700EAEB37 /* cpc_snap.cpp in Sources */, + B3EBB1392872984700EAEB37 /* soundio.cpp in Sources */, + B3EBB1502872984700EAEB37 /* dave.cpp in Sources */, + B3EBB1332872984700EAEB37 /* zxioport.cpp in Sources */, + B3EBB1312872984700EAEB37 /* cpc464vm.cpp in Sources */, + B3EBB1492872984700EAEB37 /* vm.cpp in Sources */, + B3EBB12B2872984700EAEB37 /* ay3_8912.cpp in Sources */, + B3EBB191287298A700EAEB37 /* z80.cpp in Sources */, + B3EBB1572872984700EAEB37 /* ioports.cpp in Sources */, + B3EBB1362872984700EAEB37 /* comprlib.cpp in Sources */, + B3EBB1352872984700EAEB37 /* pngwrite.cpp in Sources */, + B3EBB1462872984700EAEB37 /* zxmemory.cpp in Sources */, + B3EBB13B2872984700EAEB37 /* fileio.cpp in Sources */, + B3EBB1442872984700EAEB37 /* snapshot.cpp in Sources */, + B3EBB12A2872984700EAEB37 /* cpcmem.cpp in Sources */, + B3EBB1402872984700EAEB37 /* script.cpp in Sources */, + B3EBB13E2872984700EAEB37 /* sdext.cpp in Sources */, + B3EBB1372872984700EAEB37 /* cpcvideo.cpp in Sources */, + B3EBB1552872984700EAEB37 /* dotconf.c in Sources */, + B3EBB1512872984700EAEB37 /* display.cpp in Sources */, + B3EBB14F2872984700EAEB37 /* cpcdisk.cpp in Sources */, + B3EBB1282872984700EAEB37 /* ula.cpp in Sources */, + B3EBB1412872984700EAEB37 /* crtc6845.cpp in Sources */, + B3EBB14D2872984700EAEB37 /* tape.cpp in Sources */, + B3EBB1532872984700EAEB37 /* debuglib.cpp in Sources */, + B3EBB1302872984700EAEB37 /* tvcvideo.cpp in Sources */, + B3EBB14B2872984700EAEB37 /* ide.cpp in Sources */, + B3EBB1582872984700EAEB37 /* zx_snap.cpp in Sources */, + B3EBB12E2872984700EAEB37 /* ep_fdd.cpp in Sources */, + B3EBB1382872984700EAEB37 /* tvc64vm.cpp in Sources */, + B3EBB1472872984700EAEB37 /* ep128vm.cpp in Sources */, + B3EBB1322872984700EAEB37 /* memory.cpp in Sources */, + B3EBB13F2872984700EAEB37 /* joystick.cpp in Sources */, + B3EBB192287298A700EAEB37 /* z80funcs2.cpp in Sources */, + B3EBB1482872984700EAEB37 /* wd177x.cpp in Sources */, + B3EBB13C2872984700EAEB37 /* emucfg.cpp in Sources */, + B3EBB1342872984700EAEB37 /* decompm2.cpp in Sources */, + B3EBB13D2872984700EAEB37 /* epmemcfg.cpp in Sources */, + B3EBB1562872984700EAEB37 /* snd_conv.cpp in Sources */, + B3EBB13A2872984700EAEB37 /* system.cpp in Sources */, + B3EBB1422872984700EAEB37 /* zx128vm.cpp in Sources */, + B3EBB14E2872984700EAEB37 /* fdc765.cpp in Sources */, + B3EBB1292872984700EAEB37 /* videorec.cpp in Sources */, + B3EBB1272872984700EAEB37 /* compress.cpp in Sources */, + B3EBB1452872984700EAEB37 /* vmthread.cpp in Sources */, + B3EBB1432872984700EAEB37 /* bplist.cpp in Sources */, + B3EBB15A2872984700EAEB37 /* nick.cpp in Sources */, + B3EBB12F2872984700EAEB37 /* tvcmem.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1962872993500EAEB37 /* libretrosnd.cpp in Sources */, + B3EBB1942872993500EAEB37 /* libretrodisp.cpp in Sources */, + B3EBB1932872993500EAEB37 /* core.cpp in Sources */, + B3EBB1952872993500EAEB37 /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVEP128EmuCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* ep128emu-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = ep128emu; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = ep128emu; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/ep128emu-core/src\"", + "\"$(SRCROOT)/ep128emu-core/z80\"", + "\"$(SRCROOT)/ep128emu-core\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "$(inherited)"; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVEP128Emu/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVEP128Emu"; + PRODUCT_NAME = PVEP128Emu; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = ep128emu; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = "ep128emu-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = "ep128emu-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + PRODUCT_NAME = "ep128emu-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/ep128emu-core/src\"", + "\"$(SRCROOT)/ep128emu-core/z80\"", + "\"$(SRCROOT)/ep128emu-core\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "$(inherited)"; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/ep128emu-core/src\"", + "\"$(SRCROOT)/ep128emu-core/z80\"", + "\"$(SRCROOT)/ep128emu-core\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "$(inherited)"; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVEP128Emu/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVEP128Emu"; + PRODUCT_NAME = PVEP128Emu; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVEP128Emu/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVEP128Emu"; + PRODUCT_NAME = PVEP128Emu; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "ep128emu" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "ep128emu-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVEP128Emu" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVEP128Emu" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/ep128emu/PVEP128Emu.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/ep128emu/PVEP128Emu.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/ep128emu/PVEP128Emu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/ep128emu/PVEP128Emu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/ep128emu/PVEP128Emu.xcodeproj/xcshareddata/xcschemes/PVEP128Emu.xcscheme b/Cores/ep128emu/PVEP128Emu.xcodeproj/xcshareddata/xcschemes/PVEP128Emu.xcscheme new file mode 100644 index 0000000000..5ef1cfbccb --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu.xcodeproj/xcshareddata/xcschemes/PVEP128Emu.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/ep128emu/PVEP128Emu/Core.plist b/Cores/ep128emu/PVEP128Emu/Core.plist new file mode 100644 index 0000000000..c3f3e25517 --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu/Core.plist @@ -0,0 +1,21 @@ + + + + + PVCoreIdentifier + com.provenance.core.EP128Emu + PVPrincipleClass + PVEP128EmuCore + PVSupportedSystems + + com.provenance.ep128 + com.provenance.zxspectrum + + PVProjectName + EP128Emu + PVProjectURL + http://ep128emu.sourceforge.net/about.html + PVProjectVersion + 2.0.11 + + diff --git a/Cores/ep128emu/PVEP128Emu/Info.plist b/Cores/ep128emu/PVEP128Emu/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/ep128emu/PVEP128Emu/PVEP128Emu.h b/Cores/ep128emu/PVEP128Emu/PVEP128Emu.h new file mode 100644 index 0000000000..d8e73e65ff --- /dev/null +++ b/Cores/ep128emu/PVEP128Emu/PVEP128Emu.h @@ -0,0 +1,18 @@ +// +// PVEP128Emu.h +// PVEP128Emu +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVEP128Emu. +FOUNDATION_EXPORT double PVEP128EmuVersionNumber; + +//! Project version string for PVEP128Emu. +FOUNDATION_EXPORT const unsigned char PVEP128EmuVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/ep128emu/PVEP128EmuCore/PVEP128EmuCore.h b/Cores/ep128emu/PVEP128EmuCore/PVEP128EmuCore.h new file mode 100644 index 0000000000..2ad5aaa762 --- /dev/null +++ b/Cores/ep128emu/PVEP128EmuCore/PVEP128EmuCore.h @@ -0,0 +1,43 @@ +// +// PVEP128EmuCore.h +// PVEP128Emu +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVEP128EmuCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/ep128emu/PVEP128EmuCore/PVEP128EmuCore.mm b/Cores/ep128emu/PVEP128EmuCore/PVEP128EmuCore.mm new file mode 100644 index 0000000000..8c91319ccf --- /dev/null +++ b/Cores/ep128emu/PVEP128EmuCore/PVEP128EmuCore.mm @@ -0,0 +1,157 @@ +// +// PVEP128EmuCore.m +// PVEP128Emu +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVEP128EmuCore.h" +#include +//#import "PVEP128EmuCore+Controls.h" +//#import "PVEP128EmuCore+Audio.h" +//#import "PVEP128EmuCore+Video.h" +// +//#import "PVEP128EmuCore+Audio.h" + +#import +#import + +#if TARGET_OS_OSX || TARGET_OS_MACCATALYST +#import +#import +#endif + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVEP128EmuCore() { + +} + +@end + +#pragma mark - PVEP128EmuCore Begin + +@implementation PVEP128EmuCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 13.63; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1440, 1080); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + return GL_RGB565; +} + +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/ep128emu/ep128emu-core b/Cores/ep128emu/ep128emu-core new file mode 160000 index 0000000000..cacec8481c --- /dev/null +++ b/Cores/ep128emu/ep128emu-core @@ -0,0 +1 @@ +Subproject commit cacec8481c5f3b180a3aa9f99869d7da540c3088 diff --git a/Cores/fmsx/BuildFlags.xcconfig b/Cores/fmsx/BuildFlags.xcconfig new file mode 100644 index 0000000000..fc04ff45b0 --- /dev/null +++ b/Cores/fmsx/BuildFlags.xcconfig @@ -0,0 +1,26 @@ +// +// BuildFlags.xcconfig +// PVfMSX +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/fmsx/PVfMSX-Prefix.pch b/Cores/fmsx/PVfMSX-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/fmsx/PVfMSX-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/fmsx/PVfMSX.xcodeproj/project.pbxproj b/Cores/fmsx/PVfMSX.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..787520c183 --- /dev/null +++ b/Cores/fmsx/PVfMSX.xcodeproj/project.pbxproj @@ -0,0 +1,1460 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35104C2289663DC00FA401F /* libfMSX.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libfMSX.a */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; platformFilters = (driverkit, ios, maccatalyst, macos, watchos, ); }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVfMSXCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVfMSXCore.mm */; }; + B37022C92872554300B3F6DA /* PVfMSXCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVfMSXCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVfMSX.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVfMSX.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libfMSX-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libfMSX-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3EBB19B28729B4300EAEB37 /* Z80.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC122872971F00EAEB37 /* Z80.c */; }; + B3EBB19D28729B7200EAEB37 /* Floppy.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC062872971F00EAEB37 /* Floppy.c */; }; + B3EBB19E28729B7200EAEB37 /* MCF.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC002872971F00EAEB37 /* MCF.c */; }; + B3EBB19F28729B7200EAEB37 /* Sound.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC052872971F00EAEB37 /* Sound.c */; }; + B3EBB1A028729B7200EAEB37 /* FDIDisk.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC0B2872971F00EAEB37 /* FDIDisk.c */; }; + B3EBB1A128729B7200EAEB37 /* WD1793.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBABFE2872971F00EAEB37 /* WD1793.c */; }; + B3EBB1A228729B7200EAEB37 /* AY8910.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC0D2872971F00EAEB37 /* AY8910.c */; }; + B3EBB1A328729B7200EAEB37 /* SHA1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC022872971F00EAEB37 /* SHA1.c */; }; + B3EBB1A428729B7200EAEB37 /* I8255.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC032872971F00EAEB37 /* I8255.c */; }; + B3EBB1A528729B7200EAEB37 /* SCC.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC012872971F00EAEB37 /* SCC.c */; }; + B3EBB1A628729B7200EAEB37 /* YM2413.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC042872971F00EAEB37 /* YM2413.c */; }; + B3EBB1B128729B8200EAEB37 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBABF72872971F00EAEB37 /* libretro.c */; }; + B3EBB1B328729BA300EAEB37 /* MSX.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC332872971F00EAEB37 /* MSX.c */; }; + B3EBB1B428729BA300EAEB37 /* V9938.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC362872971F00EAEB37 /* V9938.c */; }; + B3EBB1B728729BB900EAEB37 /* KANJI.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC1E2872971F00EAEB37 /* KANJI.ROM */; }; + B3EBB1B828729BB900EAEB37 /* JAPANESE.FNT in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC282872971F00EAEB37 /* JAPANESE.FNT */; }; + B3EBB1B928729BB900EAEB37 /* INTERNAT.FNT in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC2D2872971F00EAEB37 /* INTERNAT.FNT */; }; + B3EBB1BA28729BB900EAEB37 /* MSXDOS2.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC2B2872971F00EAEB37 /* MSXDOS2.ROM */; }; + B3EBB1BB28729BB900EAEB37 /* DEFAULT.FNT in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC2E2872971F00EAEB37 /* DEFAULT.FNT */; }; + B3EBB1BC28729BB900EAEB37 /* FMPAC16.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC292872971F00EAEB37 /* FMPAC16.ROM */; }; + B3EBB1BD28729BB900EAEB37 /* PAINTER.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC262872971F00EAEB37 /* PAINTER.ROM */; }; + B3EBB1BE28729BB900EAEB37 /* FMPAC.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC202872971F00EAEB37 /* FMPAC.ROM */; }; + B3EBB1BF28729BB900EAEB37 /* MSX2EXT.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC272872971F00EAEB37 /* MSX2EXT.ROM */; }; + B3EBB1C028729BB900EAEB37 /* DISK.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC232872971F00EAEB37 /* DISK.ROM */; }; + B3EBB1C128729BB900EAEB37 /* KOREAN.FNT in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC2C2872971F00EAEB37 /* KOREAN.FNT */; }; + B3EBB1C228729BB900EAEB37 /* MSX2.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC222872971F00EAEB37 /* MSX2.ROM */; }; + B3EBB1C328729BB900EAEB37 /* ITALIC.FNT in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC2A2872971F00EAEB37 /* ITALIC.FNT */; }; + B3EBB1C428729BB900EAEB37 /* CYRILLIC.FNT in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC212872971F00EAEB37 /* CYRILLIC.FNT */; }; + B3EBB1C528729BB900EAEB37 /* MSX.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC1F2872971F00EAEB37 /* MSX.ROM */; }; + B3EBB1C628729BB900EAEB37 /* MSX2P.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC242872971F00EAEB37 /* MSX2P.ROM */; }; + B3EBB1C728729BB900EAEB37 /* MSX2PEXT.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC252872971F00EAEB37 /* MSX2PEXT.ROM */; }; + B3EBB1C828729BB900EAEB37 /* CARTS.SHA in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC302872971F00EAEB37 /* CARTS.SHA */; }; + B3EBB1C928729BB900EAEB37 /* RS232.ROM in Resources */ = {isa = PBXBuildFile; fileRef = B3EBAC2F2872971F00EAEB37 /* RS232.ROM */; }; + B3EBB1DD28729C2600EAEB37 /* file_path_io.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC4A2872971F00EAEB37 /* file_path_io.c */; }; + B3EBB1DE28729C2600EAEB37 /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC4B2872971F00EAEB37 /* file_path.c */; }; + B3EBB1DF28729C2600EAEB37 /* retro_dirent.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC4C2872971F00EAEB37 /* retro_dirent.c */; }; + B3EBB1E328729C5000EAEB37 /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC472872971F00EAEB37 /* fopen_utf8.c */; }; + B3EBB1E428729C5000EAEB37 /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC432872971F00EAEB37 /* compat_strl.c */; }; + B3EBB1E528729C5000EAEB37 /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC442872971F00EAEB37 /* compat_posix_string.c */; }; + B3EBB1E628729C5000EAEB37 /* compat_strcasestr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC452872971F00EAEB37 /* compat_strcasestr.c */; }; + B3EBB1E728729C5000EAEB37 /* compat_snprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC462872971F00EAEB37 /* compat_snprintf.c */; }; + B3EBB1ED28729C6800EAEB37 /* file_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC502872971F00EAEB37 /* file_stream.c */; }; + B3EBB1EE28729C6800EAEB37 /* file_stream_transforms.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC4E2872971F00EAEB37 /* file_stream_transforms.c */; }; + B3EBB1F128729C7F00EAEB37 /* vfs_implementation.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC402872971F00EAEB37 /* vfs_implementation.c */; }; + B3EBB1F228729C7F00EAEB37 /* rtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC902872972000EAEB37 /* rtime.c */; }; + B3EBB1F528729C8E00EAEB37 /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC922872972000EAEB37 /* stdstring.c */; }; + B3EBB2012872B1F600EAEB37 /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAC3E2872971F00EAEB37 /* encoding_utf.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libfMSX.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libfMSX.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libfMSX-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libfMSX-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVfMSX-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVfMSX-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVfMSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVfMSX.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVfMSXCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVfMSXCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVfMSXCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVfMSXCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVfMSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVfMSX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3EBABF72872971F00EAEB37 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3EBABF92872971F00EAEB37 /* Sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sound.h; sourceTree = ""; }; + B3EBABFA2872971F00EAEB37 /* YM2413.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YM2413.h; sourceTree = ""; }; + B3EBABFB2872971F00EAEB37 /* I8255.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = I8255.h; sourceTree = ""; }; + B3EBABFC2872971F00EAEB37 /* Floppy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Floppy.h; sourceTree = ""; }; + B3EBABFD2872971F00EAEB37 /* FDIDisk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FDIDisk.h; sourceTree = ""; }; + B3EBABFE2872971F00EAEB37 /* WD1793.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = WD1793.c; sourceTree = ""; }; + B3EBABFF2872971F00EAEB37 /* AY8910.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AY8910.h; sourceTree = ""; }; + B3EBAC002872971F00EAEB37 /* MCF.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MCF.c; sourceTree = ""; }; + B3EBAC012872971F00EAEB37 /* SCC.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SCC.c; sourceTree = ""; }; + B3EBAC022872971F00EAEB37 /* SHA1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SHA1.c; sourceTree = ""; }; + B3EBAC032872971F00EAEB37 /* I8255.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = I8255.c; sourceTree = ""; }; + B3EBAC042872971F00EAEB37 /* YM2413.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = YM2413.c; sourceTree = ""; }; + B3EBAC052872971F00EAEB37 /* Sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sound.c; sourceTree = ""; }; + B3EBAC062872971F00EAEB37 /* Floppy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Floppy.c; sourceTree = ""; }; + B3EBAC072872971F00EAEB37 /* EMULib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EMULib.h; sourceTree = ""; }; + B3EBAC082872971F00EAEB37 /* SHA1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SHA1.h; sourceTree = ""; }; + B3EBAC092872971F00EAEB37 /* SCC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SCC.h; sourceTree = ""; }; + B3EBAC0A2872971F00EAEB37 /* MCF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCF.h; sourceTree = ""; }; + B3EBAC0B2872971F00EAEB37 /* FDIDisk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = FDIDisk.c; sourceTree = ""; }; + B3EBAC0C2872971F00EAEB37 /* WD1793.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WD1793.h; sourceTree = ""; }; + B3EBAC0D2872971F00EAEB37 /* AY8910.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = AY8910.c; sourceTree = ""; }; + B3EBAC0E2872971F00EAEB37 /* Japanese-MSX2+-keyboard.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "Japanese-MSX2+-keyboard.jpg"; sourceTree = ""; }; + B3EBAC0F2872971F00EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBAC112872971F00EAEB37 /* Codes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Codes.h; sourceTree = ""; }; + B3EBAC122872971F00EAEB37 /* Z80.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Z80.c; sourceTree = ""; }; + B3EBAC132872971F00EAEB37 /* Tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Tables.h; sourceTree = ""; }; + B3EBAC142872971F00EAEB37 /* CodesXX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CodesXX.h; sourceTree = ""; }; + B3EBAC152872971F00EAEB37 /* CodesED.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CodesED.h; sourceTree = ""; }; + B3EBAC162872971F00EAEB37 /* CodesXCB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CodesXCB.h; sourceTree = ""; }; + B3EBAC172872971F00EAEB37 /* CodesCB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CodesCB.h; sourceTree = ""; }; + B3EBAC182872971F00EAEB37 /* Z80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Z80.h; sourceTree = ""; }; + B3EBAC192872971F00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBAC1B2872971F00EAEB37 /* Patch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Patch.c; sourceTree = ""; }; + B3EBAC1C2872971F00EAEB37 /* Wide.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Wide.h; sourceTree = ""; }; + B3EBAC1E2872971F00EAEB37 /* KANJI.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = KANJI.ROM; sourceTree = ""; }; + B3EBAC1F2872971F00EAEB37 /* MSX.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX.ROM; sourceTree = ""; }; + B3EBAC202872971F00EAEB37 /* FMPAC.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = FMPAC.ROM; sourceTree = ""; }; + B3EBAC212872971F00EAEB37 /* CYRILLIC.FNT */ = {isa = PBXFileReference; lastKnownFileType = file; path = CYRILLIC.FNT; sourceTree = ""; }; + B3EBAC222872971F00EAEB37 /* MSX2.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2.ROM; sourceTree = ""; }; + B3EBAC232872971F00EAEB37 /* DISK.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = DISK.ROM; sourceTree = ""; }; + B3EBAC242872971F00EAEB37 /* MSX2P.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2P.ROM; sourceTree = ""; }; + B3EBAC252872971F00EAEB37 /* MSX2PEXT.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2PEXT.ROM; sourceTree = ""; }; + B3EBAC262872971F00EAEB37 /* PAINTER.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = PAINTER.ROM; sourceTree = ""; }; + B3EBAC272872971F00EAEB37 /* MSX2EXT.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSX2EXT.ROM; sourceTree = ""; }; + B3EBAC282872971F00EAEB37 /* JAPANESE.FNT */ = {isa = PBXFileReference; lastKnownFileType = file; path = JAPANESE.FNT; sourceTree = ""; }; + B3EBAC292872971F00EAEB37 /* FMPAC16.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = FMPAC16.ROM; sourceTree = ""; }; + B3EBAC2A2872971F00EAEB37 /* ITALIC.FNT */ = {isa = PBXFileReference; lastKnownFileType = file; path = ITALIC.FNT; sourceTree = ""; }; + B3EBAC2B2872971F00EAEB37 /* MSXDOS2.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = MSXDOS2.ROM; sourceTree = ""; }; + B3EBAC2C2872971F00EAEB37 /* KOREAN.FNT */ = {isa = PBXFileReference; lastKnownFileType = file; path = KOREAN.FNT; sourceTree = ""; }; + B3EBAC2D2872971F00EAEB37 /* INTERNAT.FNT */ = {isa = PBXFileReference; lastKnownFileType = file; path = INTERNAT.FNT; sourceTree = ""; }; + B3EBAC2E2872971F00EAEB37 /* DEFAULT.FNT */ = {isa = PBXFileReference; lastKnownFileType = file; path = DEFAULT.FNT; sourceTree = ""; }; + B3EBAC2F2872971F00EAEB37 /* RS232.ROM */ = {isa = PBXFileReference; lastKnownFileType = file; path = RS232.ROM; sourceTree = ""; }; + B3EBAC302872971F00EAEB37 /* CARTS.SHA */ = {isa = PBXFileReference; lastKnownFileType = text; path = CARTS.SHA; sourceTree = ""; }; + B3EBAC312872971F00EAEB37 /* V9938.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = V9938.h; sourceTree = ""; }; + B3EBAC322872971F00EAEB37 /* Boot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Boot.h; sourceTree = ""; }; + B3EBAC332872971F00EAEB37 /* MSX.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = MSX.c; sourceTree = ""; }; + B3EBAC342872971F00EAEB37 /* CommonMux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonMux.h; sourceTree = ""; }; + B3EBAC352872971F00EAEB37 /* Common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Common.h; sourceTree = ""; }; + B3EBAC362872971F00EAEB37 /* V9938.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = V9938.c; sourceTree = ""; }; + B3EBAC372872971F00EAEB37 /* MSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSX.h; sourceTree = ""; }; + B3EBAC382872971F00EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EBAC392872971F00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBAC3A2872971F00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBAC3B2872971F00EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBAC3E2872971F00EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EBAC402872971F00EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EBAC412872971F00EAEB37 /* vfs_implementation_uwp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfs_implementation_uwp.cpp; sourceTree = ""; }; + B3EBAC432872971F00EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EBAC442872971F00EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EBAC452872971F00EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EBAC462872971F00EAEB37 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3EBAC472872971F00EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EBAC482872971F00EAEB37 /* compat_vscprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_vscprintf.c; sourceTree = ""; }; + B3EBAC4A2872971F00EAEB37 /* file_path_io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path_io.c; sourceTree = ""; }; + B3EBAC4B2872971F00EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EBAC4C2872971F00EAEB37 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3EBAC4E2872971F00EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EBAC4F2872971F00EAEB37 /* trans_stream_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_zlib.c; sourceTree = ""; }; + B3EBAC502872971F00EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EBAC532872971F00EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBAC542872971F00EAEB37 /* win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32.h; sourceTree = ""; }; + B3EBAC552872971F00EAEB37 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3EBAC562872971F00EAEB37 /* libretro_dspfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_dspfilter.h; sourceTree = ""; }; + B3EBAC582872971F00EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBAC592872971F00EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBAC5A2872971F00EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EBAC5C2872971F00EAEB37 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B3EBAC5D2872971F00EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBAC5E2872971F00EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBAC602872971F00EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBAC612872971F00EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBAC622872971F00EAEB37 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B3EBAC632872971F00EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBAC652872971F00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBAC662872971F00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBAC672872971F00EAEB37 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B3EBAC682872971F00EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBAC692872971F00EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBAC6A2872971F00EAEB37 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3EBAC6C2872971F00EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBAC6D2872971F00EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EBAC6F2872971F00EAEB37 /* rhmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rhmap.h; sourceTree = ""; }; + B3EBAC702872971F00EAEB37 /* rbuf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbuf.h; sourceTree = ""; }; + B3EBAC712872971F00EAEB37 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3EBAC722872971F00EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBAC732872971F00EAEB37 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3EBAC752872971F00EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBAC762872971F00EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBAC772872971F00EAEB37 /* fastcpy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fastcpy.h; sourceTree = ""; }; + B3EBAC792872971F00EAEB37 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B3EBAC7A2872971F00EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EBAC7B2872971F00EAEB37 /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B3EBAC7D2872972000EAEB37 /* rtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtime.h; sourceTree = ""; }; + B3EBAC7F2872972000EAEB37 /* ps3_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps3_defines.h; sourceTree = ""; }; + B3EBAC802872972000EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EBAC812872972000EAEB37 /* libretro_gskit_ps2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_gskit_ps2.h; sourceTree = ""; }; + B3EBAC822872972000EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBAC832872972000EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBAC842872972000EAEB37 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3EBAC852872972000EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EBAC872872972000EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBAC882872972000EAEB37 /* libretro_d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_d3d.h; sourceTree = ""; }; + B3EBAC892872972000EAEB37 /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B3EBAC8A2872972000EAEB37 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3EBAC8B2872972000EAEB37 /* filters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + B3EBAC8D2872972000EAEB37 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3EBAC8E2872972000EAEB37 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3EBAC902872972000EAEB37 /* rtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtime.c; sourceTree = ""; }; + B3EBAC922872972000EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EBAC932872972000EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBAC942872972000EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBAC962872972000EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBAC972872972000EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBAC982872972000EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3EBAC992872972000EAEB37 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35104C2289663DC00FA401F /* libfMSX.a in Frameworks */, + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libfMSX-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVfMSX */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVfMSX.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVfMSX; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVfMSXCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVfMSXCore.h */, + B37022C6287253B300B3F6DA /* PVfMSXCore.mm */, + ); + path = PVfMSXCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EBABF62872971F00EAEB37 /* fmsx-libretro */, + B37022BE287253B300B3F6DA /* PVfMSX */, + B37022C4287253B300B3F6DA /* PVfMSXCore */, + B37022BD287253B300B3F6DA /* PVfMSX-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVfMSX.framework */, + B30178D3207C901D0051B93D /* libfMSX.a */, + B3344BC32859E088006E6B3A /* libfMSX-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EBABF62872971F00EAEB37 /* fmsx-libretro */ = { + isa = PBXGroup; + children = ( + B3EBAC3A2872971F00EAEB37 /* .gitignore */, + B3EBAC992872972000EAEB37 /* control */, + B3EBAC0F2872971F00EAEB37 /* LICENSE */, + B3EBAC192872971F00EAEB37 /* Makefile */, + B3EBABF72872971F00EAEB37 /* libretro.c */, + B3EBAC382872971F00EAEB37 /* Makefile.common */, + B3EBAC3B2872971F00EAEB37 /* libretro.h */, + B3EBAC0E2872971F00EAEB37 /* Japanese-MSX2+-keyboard.jpg */, + B3EBAC392872971F00EAEB37 /* README.md */, + B3EBAC942872972000EAEB37 /* link.T */, + B3EBAC932872972000EAEB37 /* .gitlab-ci.yml */, + B3EBAC982872972000EAEB37 /* .travis.yml */, + B3EBABF82872971F00EAEB37 /* EMULib */, + B3EBAC1A2872971F00EAEB37 /* fMSX */, + B3EBAC952872972000EAEB37 /* jni */, + B3EBAC3C2872971F00EAEB37 /* libretro-common */, + B3EBAC102872971F00EAEB37 /* Z80 */, + ); + path = "fmsx-libretro"; + sourceTree = ""; + }; + B3EBABF82872971F00EAEB37 /* EMULib */ = { + isa = PBXGroup; + children = ( + B3EBAC0D2872971F00EAEB37 /* AY8910.c */, + B3EBAC0B2872971F00EAEB37 /* FDIDisk.c */, + B3EBAC062872971F00EAEB37 /* Floppy.c */, + B3EBAC032872971F00EAEB37 /* I8255.c */, + B3EBAC002872971F00EAEB37 /* MCF.c */, + B3EBAC012872971F00EAEB37 /* SCC.c */, + B3EBAC022872971F00EAEB37 /* SHA1.c */, + B3EBAC052872971F00EAEB37 /* Sound.c */, + B3EBABFE2872971F00EAEB37 /* WD1793.c */, + B3EBAC042872971F00EAEB37 /* YM2413.c */, + B3EBABFF2872971F00EAEB37 /* AY8910.h */, + B3EBAC072872971F00EAEB37 /* EMULib.h */, + B3EBABFD2872971F00EAEB37 /* FDIDisk.h */, + B3EBABFC2872971F00EAEB37 /* Floppy.h */, + B3EBABFB2872971F00EAEB37 /* I8255.h */, + B3EBAC0A2872971F00EAEB37 /* MCF.h */, + B3EBAC092872971F00EAEB37 /* SCC.h */, + B3EBAC082872971F00EAEB37 /* SHA1.h */, + B3EBABF92872971F00EAEB37 /* Sound.h */, + B3EBAC0C2872971F00EAEB37 /* WD1793.h */, + B3EBABFA2872971F00EAEB37 /* YM2413.h */, + ); + path = EMULib; + sourceTree = ""; + }; + B3EBAC102872971F00EAEB37 /* Z80 */ = { + isa = PBXGroup; + children = ( + B3EBAC112872971F00EAEB37 /* Codes.h */, + B3EBAC122872971F00EAEB37 /* Z80.c */, + B3EBAC132872971F00EAEB37 /* Tables.h */, + B3EBAC142872971F00EAEB37 /* CodesXX.h */, + B3EBAC152872971F00EAEB37 /* CodesED.h */, + B3EBAC162872971F00EAEB37 /* CodesXCB.h */, + B3EBAC172872971F00EAEB37 /* CodesCB.h */, + B3EBAC182872971F00EAEB37 /* Z80.h */, + ); + path = Z80; + sourceTree = ""; + }; + B3EBAC1A2872971F00EAEB37 /* fMSX */ = { + isa = PBXGroup; + children = ( + B3EBAC1B2872971F00EAEB37 /* Patch.c */, + B3EBAC1C2872971F00EAEB37 /* Wide.h */, + B3EBAC1D2872971F00EAEB37 /* ROMs */, + B3EBAC312872971F00EAEB37 /* V9938.h */, + B3EBAC322872971F00EAEB37 /* Boot.h */, + B3EBAC332872971F00EAEB37 /* MSX.c */, + B3EBAC342872971F00EAEB37 /* CommonMux.h */, + B3EBAC352872971F00EAEB37 /* Common.h */, + B3EBAC362872971F00EAEB37 /* V9938.c */, + B3EBAC372872971F00EAEB37 /* MSX.h */, + ); + path = fMSX; + sourceTree = ""; + }; + B3EBAC1D2872971F00EAEB37 /* ROMs */ = { + isa = PBXGroup; + children = ( + B3EBAC1E2872971F00EAEB37 /* KANJI.ROM */, + B3EBAC1F2872971F00EAEB37 /* MSX.ROM */, + B3EBAC202872971F00EAEB37 /* FMPAC.ROM */, + B3EBAC212872971F00EAEB37 /* CYRILLIC.FNT */, + B3EBAC222872971F00EAEB37 /* MSX2.ROM */, + B3EBAC232872971F00EAEB37 /* DISK.ROM */, + B3EBAC242872971F00EAEB37 /* MSX2P.ROM */, + B3EBAC252872971F00EAEB37 /* MSX2PEXT.ROM */, + B3EBAC262872971F00EAEB37 /* PAINTER.ROM */, + B3EBAC272872971F00EAEB37 /* MSX2EXT.ROM */, + B3EBAC282872971F00EAEB37 /* JAPANESE.FNT */, + B3EBAC292872971F00EAEB37 /* FMPAC16.ROM */, + B3EBAC2A2872971F00EAEB37 /* ITALIC.FNT */, + B3EBAC2B2872971F00EAEB37 /* MSXDOS2.ROM */, + B3EBAC2C2872971F00EAEB37 /* KOREAN.FNT */, + B3EBAC2D2872971F00EAEB37 /* INTERNAT.FNT */, + B3EBAC2E2872971F00EAEB37 /* DEFAULT.FNT */, + B3EBAC2F2872971F00EAEB37 /* RS232.ROM */, + B3EBAC302872971F00EAEB37 /* CARTS.SHA */, + ); + path = ROMs; + sourceTree = ""; + }; + B3EBAC3C2872971F00EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBAC422872971F00EAEB37 /* compat */, + B3EBAC3D2872971F00EAEB37 /* encodings */, + B3EBAC492872971F00EAEB37 /* file */, + B3EBAC512872971F00EAEB37 /* include */, + B3EBAC8C2872972000EAEB37 /* memmap */, + B3EBAC4D2872971F00EAEB37 /* streams */, + B3EBAC912872972000EAEB37 /* string */, + B3EBAC8F2872972000EAEB37 /* time */, + B3EBAC3F2872971F00EAEB37 /* vfs */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBAC3D2872971F00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBAC3E2872971F00EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBAC3F2872971F00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBAC402872971F00EAEB37 /* vfs_implementation.c */, + B3EBAC412872971F00EAEB37 /* vfs_implementation_uwp.cpp */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBAC422872971F00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBAC432872971F00EAEB37 /* compat_strl.c */, + B3EBAC442872971F00EAEB37 /* compat_posix_string.c */, + B3EBAC452872971F00EAEB37 /* compat_strcasestr.c */, + B3EBAC462872971F00EAEB37 /* compat_snprintf.c */, + B3EBAC472872971F00EAEB37 /* fopen_utf8.c */, + B3EBAC482872971F00EAEB37 /* compat_vscprintf.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EBAC492872971F00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBAC4A2872971F00EAEB37 /* file_path_io.c */, + B3EBAC4B2872971F00EAEB37 /* file_path.c */, + B3EBAC4C2872971F00EAEB37 /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B3EBAC4D2872971F00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBAC4E2872971F00EAEB37 /* file_stream_transforms.c */, + B3EBAC4F2872971F00EAEB37 /* trans_stream_zlib.c */, + B3EBAC502872971F00EAEB37 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EBAC512872971F00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBAC522872971F00EAEB37 /* encodings */, + B3EBAC552872971F00EAEB37 /* memalign.h */, + B3EBAC562872971F00EAEB37 /* libretro_dspfilter.h */, + B3EBAC572872971F00EAEB37 /* vfs */, + B3EBAC5B2872971F00EAEB37 /* compat */, + B3EBAC692872971F00EAEB37 /* retro_common_api.h */, + B3EBAC6A2872971F00EAEB37 /* retro_timers.h */, + B3EBAC6B2872971F00EAEB37 /* file */, + B3EBAC6D2872971F00EAEB37 /* retro_environment.h */, + B3EBAC6E2872971F00EAEB37 /* array */, + B3EBAC712872971F00EAEB37 /* retro_dirent.h */, + B3EBAC722872971F00EAEB37 /* retro_inline.h */, + B3EBAC732872971F00EAEB37 /* retro_math.h */, + B3EBAC742872971F00EAEB37 /* streams */, + B3EBAC772872971F00EAEB37 /* fastcpy.h */, + B3EBAC782872971F00EAEB37 /* utils */, + B3EBAC7A2872971F00EAEB37 /* retro_miscellaneous.h */, + B3EBAC7B2872971F00EAEB37 /* clamping.h */, + B3EBAC7C2872972000EAEB37 /* time */, + B3EBAC7E2872972000EAEB37 /* defines */, + B3EBAC802872972000EAEB37 /* boolean.h */, + B3EBAC812872972000EAEB37 /* libretro_gskit_ps2.h */, + B3EBAC822872972000EAEB37 /* memmap.h */, + B3EBAC832872972000EAEB37 /* libretro.h */, + B3EBAC842872972000EAEB37 /* retro_common.h */, + B3EBAC852872972000EAEB37 /* retro_assert.h */, + B3EBAC862872972000EAEB37 /* string */, + B3EBAC882872972000EAEB37 /* libretro_d3d.h */, + B3EBAC892872972000EAEB37 /* libretro_vulkan.h */, + B3EBAC8A2872972000EAEB37 /* retro_endianness.h */, + B3EBAC8B2872972000EAEB37 /* filters.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBAC522872971F00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBAC532872971F00EAEB37 /* utf.h */, + B3EBAC542872971F00EAEB37 /* win32.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBAC572872971F00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBAC582872971F00EAEB37 /* vfs.h */, + B3EBAC592872971F00EAEB37 /* vfs_implementation.h */, + B3EBAC5A2872971F00EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBAC5B2872971F00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBAC5C2872971F00EAEB37 /* apple_compat.h */, + B3EBAC5D2872971F00EAEB37 /* strl.h */, + B3EBAC5E2872971F00EAEB37 /* strcasestr.h */, + B3EBAC5F2872971F00EAEB37 /* msvc */, + B3EBAC612872971F00EAEB37 /* fopen_utf8.h */, + B3EBAC622872971F00EAEB37 /* intrinsics.h */, + B3EBAC632872971F00EAEB37 /* posix_string.h */, + B3EBAC642872971F00EAEB37 /* zlib */, + B3EBAC672872971F00EAEB37 /* fnmatch.h */, + B3EBAC682872971F00EAEB37 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBAC5F2872971F00EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBAC602872971F00EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBAC642872971F00EAEB37 /* zlib */ = { + isa = PBXGroup; + children = ( + B3EBAC652872971F00EAEB37 /* zlib.h */, + B3EBAC662872971F00EAEB37 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B3EBAC6B2872971F00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBAC6C2872971F00EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBAC6E2872971F00EAEB37 /* array */ = { + isa = PBXGroup; + children = ( + B3EBAC6F2872971F00EAEB37 /* rhmap.h */, + B3EBAC702872971F00EAEB37 /* rbuf.h */, + ); + path = array; + sourceTree = ""; + }; + B3EBAC742872971F00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBAC752872971F00EAEB37 /* file_stream.h */, + B3EBAC762872971F00EAEB37 /* file_stream_transforms.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBAC782872971F00EAEB37 /* utils */ = { + isa = PBXGroup; + children = ( + B3EBAC792872971F00EAEB37 /* md5.h */, + ); + path = utils; + sourceTree = ""; + }; + B3EBAC7C2872972000EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EBAC7D2872972000EAEB37 /* rtime.h */, + ); + path = time; + sourceTree = ""; + }; + B3EBAC7E2872972000EAEB37 /* defines */ = { + isa = PBXGroup; + children = ( + B3EBAC7F2872972000EAEB37 /* ps3_defines.h */, + ); + path = defines; + sourceTree = ""; + }; + B3EBAC862872972000EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBAC872872972000EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBAC8C2872972000EAEB37 /* memmap */ = { + isa = PBXGroup; + children = ( + B3EBAC8D2872972000EAEB37 /* memmap.c */, + B3EBAC8E2872972000EAEB37 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3EBAC8F2872972000EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EBAC902872972000EAEB37 /* rtime.c */, + ); + path = time; + sourceTree = ""; + }; + B3EBAC912872972000EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBAC922872972000EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EBAC952872972000EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBAC962872972000EAEB37 /* Android.mk */, + B3EBAC972872972000EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVfMSX.h in Headers */, + B37022C92872554300B3F6DA /* PVfMSXCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* fMSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "fMSX" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = fMSX; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libfMSX.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* fMSX-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "fMSX-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "fMSX-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libfMSX-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVfMSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVfMSX" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVfMSX; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVfMSX.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVfMSX" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVfMSX */, + B3344B522859E088006E6B3A /* fMSX-libretro */, + B30178D2207C901D0051B93D /* fMSX */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1BF28729BB900EAEB37 /* MSX2EXT.ROM in Resources */, + B3EBB1C928729BB900EAEB37 /* RS232.ROM in Resources */, + B3EBB1B728729BB900EAEB37 /* KANJI.ROM in Resources */, + B3EBB1BC28729BB900EAEB37 /* FMPAC16.ROM in Resources */, + B3EBB1C428729BB900EAEB37 /* CYRILLIC.FNT in Resources */, + B3EBB1BD28729BB900EAEB37 /* PAINTER.ROM in Resources */, + B3EBB1BA28729BB900EAEB37 /* MSXDOS2.ROM in Resources */, + B3EBB1BB28729BB900EAEB37 /* DEFAULT.FNT in Resources */, + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + B3EBB1B828729BB900EAEB37 /* JAPANESE.FNT in Resources */, + B3EBB1C128729BB900EAEB37 /* KOREAN.FNT in Resources */, + B3EBB1C028729BB900EAEB37 /* DISK.ROM in Resources */, + B3EBB1C728729BB900EAEB37 /* MSX2PEXT.ROM in Resources */, + B3EBB1C528729BB900EAEB37 /* MSX.ROM in Resources */, + B3EBB1C628729BB900EAEB37 /* MSX2P.ROM in Resources */, + B3EBB1C828729BB900EAEB37 /* CARTS.SHA in Resources */, + B3EBB1B928729BB900EAEB37 /* INTERNAT.FNT in Resources */, + B3EBB1BE28729BB900EAEB37 /* FMPAC.ROM in Resources */, + B3EBB1C328729BB900EAEB37 /* ITALIC.FNT in Resources */, + B3EBB1C228729BB900EAEB37 /* MSX2.ROM in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1A428729B7200EAEB37 /* I8255.c in Sources */, + B3EBB1A128729B7200EAEB37 /* WD1793.c in Sources */, + B3EBB19E28729B7200EAEB37 /* MCF.c in Sources */, + B3EBB19F28729B7200EAEB37 /* Sound.c in Sources */, + B3EBB19B28729B4300EAEB37 /* Z80.c in Sources */, + B3EBB1A328729B7200EAEB37 /* SHA1.c in Sources */, + B3EBB1B328729BA300EAEB37 /* MSX.c in Sources */, + B3EBB1A628729B7200EAEB37 /* YM2413.c in Sources */, + B3EBB1B428729BA300EAEB37 /* V9938.c in Sources */, + B3EBB1A228729B7200EAEB37 /* AY8910.c in Sources */, + B3EBB19D28729B7200EAEB37 /* Floppy.c in Sources */, + B3EBB1A028729B7200EAEB37 /* FDIDisk.c in Sources */, + B3EBB1A528729B7200EAEB37 /* SCC.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1E428729C5000EAEB37 /* compat_strl.c in Sources */, + B3EBB2012872B1F600EAEB37 /* encoding_utf.c in Sources */, + B3EBB1DF28729C2600EAEB37 /* retro_dirent.c in Sources */, + B3EBB1E328729C5000EAEB37 /* fopen_utf8.c in Sources */, + B3EBB1DE28729C2600EAEB37 /* file_path.c in Sources */, + B3EBB1E728729C5000EAEB37 /* compat_snprintf.c in Sources */, + B3EBB1DD28729C2600EAEB37 /* file_path_io.c in Sources */, + B3EBB1F528729C8E00EAEB37 /* stdstring.c in Sources */, + B3EBB1E628729C5000EAEB37 /* compat_strcasestr.c in Sources */, + B3EBB1F228729C7F00EAEB37 /* rtime.c in Sources */, + B3EBB1B128729B8200EAEB37 /* libretro.c in Sources */, + B3EBB1EE28729C6800EAEB37 /* file_stream_transforms.c in Sources */, + B3EBB1F128729C7F00EAEB37 /* vfs_implementation.c in Sources */, + B3EBB1E528729C5000EAEB37 /* compat_posix_string.c in Sources */, + B3EBB1ED28729C6800EAEB37 /* file_stream.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVfMSXCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* fMSX-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = fMSX; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = fMSX; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/fmsx-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVfMSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVfMSX"; + PRODUCT_NAME = PVfMSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = fMSX; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "fMSX-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "fMSX-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "fMSX-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/fmsx-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/fmsx-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVfMSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVfMSX"; + PRODUCT_NAME = PVfMSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVfMSX/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVfMSX"; + PRODUCT_NAME = PVfMSX; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "fMSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "fMSX-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVfMSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVfMSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/fmsx/PVfMSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/fmsx/PVfMSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/fmsx/PVfMSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/fmsx/PVfMSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/fmsx/PVfMSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/fmsx/PVfMSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/fmsx/PVfMSX.xcodeproj/xcshareddata/xcschemes/PVfMSX.xcscheme b/Cores/fmsx/PVfMSX.xcodeproj/xcshareddata/xcschemes/PVfMSX.xcscheme new file mode 100644 index 0000000000..ff7c3c4a28 --- /dev/null +++ b/Cores/fmsx/PVfMSX.xcodeproj/xcshareddata/xcschemes/PVfMSX.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/fmsx/PVfMSX/Core.plist b/Cores/fmsx/PVfMSX/Core.plist new file mode 100644 index 0000000000..4dcd367417 --- /dev/null +++ b/Cores/fmsx/PVfMSX/Core.plist @@ -0,0 +1,21 @@ + + + + + PVCoreIdentifier + com.provenance.core.fMSX + PVPrincipleClass + PVfMSXCore + PVSupportedSystems + + com.provenance.msx + com.provenance.msx2 + + PVProjectName + fMSX + PVProjectURL + http://fms.komkon.org/fMSX/ + PVProjectVersion + 0 + + diff --git a/Cores/fmsx/PVfMSX/Info.plist b/Cores/fmsx/PVfMSX/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/fmsx/PVfMSX/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/fmsx/PVfMSX/PVfMSX.h b/Cores/fmsx/PVfMSX/PVfMSX.h new file mode 100644 index 0000000000..f320ccabbe --- /dev/null +++ b/Cores/fmsx/PVfMSX/PVfMSX.h @@ -0,0 +1,18 @@ +// +// PVfMSX.h +// PVfMSX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVfMSX. +FOUNDATION_EXPORT double PVfMSXVersionNumber; + +//! Project version string for PVfMSX. +FOUNDATION_EXPORT const unsigned char PVfMSXVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/fmsx/PVfMSXCore/PVfMSXCore.h b/Cores/fmsx/PVfMSXCore/PVfMSXCore.h new file mode 100644 index 0000000000..35318095c3 --- /dev/null +++ b/Cores/fmsx/PVfMSXCore/PVfMSXCore.h @@ -0,0 +1,43 @@ +// +// PVfMSXCore.h +// PVfMSX +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVfMSXCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/fmsx/PVfMSXCore/PVfMSXCore.mm b/Cores/fmsx/PVfMSXCore/PVfMSXCore.mm new file mode 100644 index 0000000000..5c2791c0eb --- /dev/null +++ b/Cores/fmsx/PVfMSXCore/PVfMSXCore.mm @@ -0,0 +1,262 @@ +// +// PVfMSXCore.m +// PVfMSX +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVfMSXCore.h" +#include +//#import "PVfMSXCore+Controls.h" +//#import "PVfMSXCore+Audio.h" +//#import "PVfMSXCore+Video.h" +// +//#import "PVfMSXCore+Audio.h" + +#import +#import + +#if TARGET_OS_OSX || TARGET_OS_MACCATALYST +#import +#import +#endif + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVfMSXCore() { + +} + +@end + +#pragma mark - PVfMSXCore Begin + +@implementation PVfMSXCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1024, 768); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT + return GL_RGB565; +} + + +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +# pragma mark - Audio + +- (double)audioSampleRate { + return 48000; +} + +#if 0 +const struct retro_variable vars[] = { + { "fmsx_mode", "MSX Mode; MSX2+|MSX1|MSX2" }, + { "fmsx_video_mode", "MSX Video Mode; NTSC|PAL|Dynamic" }, + { "fmsx_hires", "Support high resolution; Off|Interlaced|Progressive" }, + { "fmsx_overscan", "Support overscan; No|Yes" }, + { "fmsx_mapper_type_mode", "MSX Mapper Type Mode; " + "Guess|" + "Generic 8kB|" + "Generic 16kB|" + "Konami5 8kB|" + "Konami4 8kB|" + "ASCII 8kB|" + "ASCII 16kB|" + "GameMaster2|" + "FMPAC" + }, + { "fmsx_ram_pages", "MSX Main Memory; Auto|64KB|128KB|256KB|512KB|4MB" }, + { "fmsx_vram_pages", "MSX Video Memory; Auto|32KB|64KB|128KB|192KB" }, + { "fmsx_log_level", "fMSX logging; Off|Info|Debug|Spam" }, + { "fmsx_game_master", "Support Game Master; No|Yes" }, + { "fmsx_simbdos", "Simulate DiskROM disk access calls; No|Yes" }, + { "fmsx_autospace", "Use autofire on SPACE; No|Yes" }, + { "fmsx_allsprites", "Show all sprites; No|Yes" }, + { "fmsx_font", "Text font; standard|DEFAULT.FNT|ITALIC.FNT|INTERNAT.FNT|CYRILLIC.FNT|KOREAN.FNT|JAPANESE.FNT" }, + { "fmsx_flush_disk", "Save disk changes; Never|Immediate|On close|To/From SRAM" }, + { "fmsx_phantom_disk", "Create empty disk when none loaded; No|Yes" }, + { "fmsx_custom_keyboard_up", up_value}, + { "fmsx_custom_keyboard_down", down_value}, + { "fmsx_custom_keyboard_left", left_value}, + { "fmsx_custom_keyboard_right", right_value}, + { "fmsx_custom_keyboard_a", a_value}, + { "fmsx_custom_keyboard_b", b_value}, + { "fmsx_custom_keyboard_y", y_value}, + { "fmsx_custom_keyboard_x", x_value}, + { "fmsx_custom_keyboard_start", start_value}, + { "fmsx_custom_keyboard_select", select_value}, + { "fmsx_custom_keyboard_l", l_value}, + { "fmsx_custom_keyboard_r", r_value}, + { "fmsx_custom_keyboard_l2", l2_value}, + { "fmsx_custom_keyboard_r2", r2_value}, + { "fmsx_custom_keyboard_l3", l3_value}, + { "fmsx_custom_keyboard_r3", r3_value}, + { NULL, NULL }, +}; +#endif + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + if (V("fmsx_video_mode")) { + // NTSC|PAL|Dynamic + char *value = strdup("Dynamic"); + return value; + } else if (V("fmsx_mode")) { + // MSX2+|MSX1|MSX2 + char * value = strdup("MSX2+"); + return value; + } else if (V("fmsx_hires")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("fmsx_overscan")) { + // No|Yes + char *value = strdup("Yes"); + return value; + } else if (V("fmsx_mapper_type_mode")) { +// { "fmsx_mapper_type_mode", "MSX Mapper Type Mode; " +// "Guess|" +// "Generic 8kB|" +// "Generic 16kB|" +// "Konami5 8kB|" +// "Konami4 8kB|" +// "ASCII 8kB|" +// "ASCII 16kB|" +// "GameMaster2|" +// "FMPAC" +// }, + char *value = strdup("FMPAC"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} +@end diff --git a/Cores/fmsx/fmsx-libretro b/Cores/fmsx/fmsx-libretro new file mode 160000 index 0000000000..bdb15d0066 --- /dev/null +++ b/Cores/fmsx/fmsx-libretro @@ -0,0 +1 @@ +Subproject commit bdb15d0066b151c95e65e966c0f3ef1973f498a7 diff --git a/Cores/fuse/BuildFlags.xcconfig b/Cores/fuse/BuildFlags.xcconfig new file mode 100644 index 0000000000..c38b399d9e --- /dev/null +++ b/Cores/fuse/BuildFlags.xcconfig @@ -0,0 +1,26 @@ +// +// BuildFlags.xcconfig +// PVFuse +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/fuse/PVFuse-Prefix.pch b/Cores/fuse/PVFuse-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/fuse/PVFuse-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/fuse/PVFuse.xcodeproj/project.pbxproj b/Cores/fuse/PVFuse.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..154bb39c9c --- /dev/null +++ b/Cores/fuse/PVFuse.xcodeproj/project.pbxproj @@ -0,0 +1,3945 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVFuseCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVFuseCore.mm */; }; + B37022C92872554300B3F6DA /* PVFuseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVFuseCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVFuse.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVFuse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libFuse-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libFuse-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3AEE2F6293F35CD0050BDB6 /* scalers32.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2E6293F35B10050BDB6 /* scalers32.c */; }; + B3AEE2F7293F35CD0050BDB6 /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2E8293F35B10050BDB6 /* utils.c */; }; + B3AEE2F8293F35CD0050BDB6 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2E9293F35B10050BDB6 /* error.c */; }; + B3AEE2F9293F35CD0050BDB6 /* scalers16.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2EA293F35B10050BDB6 /* scalers16.c */; }; + B3AEE2FA293F35CD0050BDB6 /* settings.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2EB293F35B10050BDB6 /* settings.c */; }; + B3AEE2FB293F35CD0050BDB6 /* getopt1.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2E5293F35B10050BDB6 /* getopt1.c */; }; + B3AEE2FC293F35CD0050BDB6 /* snapshot.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2E7293F35B10050BDB6 /* snapshot.c */; }; + B3AEE2FD293F35CD0050BDB6 /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2EC293F35B10050BDB6 /* ui.c */; }; + B3AEE2FE293F35CD0050BDB6 /* getopt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2ED293F35B10050BDB6 /* getopt.c */; }; + B3AEE2FF293F35CD0050BDB6 /* fuse.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2EE293F35B10050BDB6 /* fuse.c */; }; + B3AEE300293F35D40050BDB6 /* mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2D6293F35B10050BDB6 /* mouse.c */; }; + B3AEE301293F35D40050BDB6 /* timer.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2D7293F35B10050BDB6 /* timer.c */; }; + B3AEE302293F35D40050BDB6 /* socket.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2DC293F35B10050BDB6 /* socket.c */; }; + B3AEE303293F35D40050BDB6 /* display.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2D5293F35B10050BDB6 /* display.c */; }; + B3AEE304293F35D40050BDB6 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2DE293F35B10050BDB6 /* sound.c */; }; + B3AEE305293F35D40050BDB6 /* keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2D9293F35B10050BDB6 /* keyboard.c */; }; + B3AEE306293F35D40050BDB6 /* paths.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2D8293F35B10050BDB6 /* paths.c */; }; + B3AEE307293F35D40050BDB6 /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2E0293F35B10050BDB6 /* file.c */; }; + B3AEE308293F35D40050BDB6 /* osname.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2DA293F35B10050BDB6 /* osname.c */; }; + B3AEE309293F35D40050BDB6 /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2DF293F35B10050BDB6 /* ui.c */; }; + B3AEE30A293F35D40050BDB6 /* fat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2DB293F35B10050BDB6 /* fat.c */; }; + B3AEE30B293F35D40050BDB6 /* joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2E1293F35B10050BDB6 /* joystick.c */; }; + B3AEE30C293F35D40050BDB6 /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2DD293F35B10050BDB6 /* dir.c */; }; + B3AEE30D293F35D80050BDB6 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2D2293F35B10050BDB6 /* libretro.c */; }; + B3AEE30E293F35D80050BDB6 /* coreopt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2F0293F35B10050BDB6 /* coreopt.c */; }; + B3AEE30F293F35D80050BDB6 /* missing.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AEE2D3293F35B10050BDB6 /* missing.c */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3EBB1FD2872B1A000EAEB37 /* libFuse.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libFuse.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libFuse.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFuse.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libFuse-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libFuse-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVFuse-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVFuse-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVFuse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFuse.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVFuseCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVFuseCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVFuseCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVFuseCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3AEDE31293F35AC0050BDB6 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3AEDE32293F35AC0050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEDE33293F35AC0050BDB6 /* _BASIC.z80 */ = {isa = PBXFileReference; lastKnownFileType = text; path = _BASIC.z80; sourceTree = ""; }; + B3AEDE35293F35AC0050BDB6 /* spectrum.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spectrum.c; sourceTree = ""; }; + B3AEDE36293F35AC0050BDB6 /* periph.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = periph.c; sourceTree = ""; }; + B3AEDE37293F35AC0050BDB6 /* loader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loader.c; sourceTree = ""; }; + B3AEDE38293F35AC0050BDB6 /* menu_data.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = menu_data.pl; sourceTree = ""; }; + B3AEDE39293F35AC0050BDB6 /* rzx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzx.c; sourceTree = ""; }; + B3AEDE3B293F35AC0050BDB6 /* fuse.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = fuse.1; sourceTree = ""; }; + B3AEDE3C293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE3D293F35AC0050BDB6 /* settings.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = settings.dat; sourceTree = ""; }; + B3AEDE3E293F35AC0050BDB6 /* sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; + B3AEDE40293F35AC0050BDB6 /* uidisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uidisplay.h; sourceTree = ""; }; + B3AEDE42293F35AC0050BDB6 /* options.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = options.pl; sourceTree = ""; }; + B3AEDE43293F35AC0050BDB6 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3AEDE44293F35AC0050BDB6 /* menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; + B3AEDE45293F35AC0050BDB6 /* pokefinder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokefinder.c; sourceTree = ""; }; + B3AEDE46293F35AC0050BDB6 /* options_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = options_internals.h; sourceTree = ""; }; + B3AEDE47293F35AC0050BDB6 /* widget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = widget.h; sourceTree = ""; }; + B3AEDE48293F35AC0050BDB6 /* debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugger.c; sourceTree = ""; }; + B3AEDE49293F35AC0050BDB6 /* browse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = browse.c; sourceTree = ""; }; + B3AEDE4A293F35AC0050BDB6 /* select.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = select.c; sourceTree = ""; }; + B3AEDE4B293F35AC0050BDB6 /* binary.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = binary.c; sourceTree = ""; }; + B3AEDE4C293F35AC0050BDB6 /* options-header.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "options-header.pl"; sourceTree = ""; }; + B3AEDE4D293F35AC0050BDB6 /* menu_data.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu_data.c; sourceTree = ""; }; + B3AEDE4E293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE4F293F35AC0050BDB6 /* about.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = about.c; sourceTree = ""; }; + B3AEDE50293F35AC0050BDB6 /* picture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = picture.c; sourceTree = ""; }; + B3AEDE51293F35AC0050BDB6 /* fuse.font.sbf */ = {isa = PBXFileReference; lastKnownFileType = text; path = fuse.font.sbf; sourceTree = ""; }; + B3AEDE52293F35AC0050BDB6 /* pokemem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokemem.c; sourceTree = ""; }; + B3AEDE53293F35AC0050BDB6 /* error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + B3AEDE54293F35AC0050BDB6 /* widget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = widget.c; sourceTree = ""; }; + B3AEDE55293F35AC0050BDB6 /* query.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = query.c; sourceTree = ""; }; + B3AEDE56293F35AC0050BDB6 /* text.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = text.c; sourceTree = ""; }; + B3AEDE57293F35AC0050BDB6 /* widget_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = widget_internals.h; sourceTree = ""; }; + B3AEDE58293F35AC0050BDB6 /* roms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = roms.c; sourceTree = ""; }; + B3AEDE59293F35AC0050BDB6 /* filesel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = filesel.c; sourceTree = ""; }; + B3AEDE5A293F35AC0050BDB6 /* options.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = options.c; sourceTree = ""; }; + B3AEDE5B293F35AC0050BDB6 /* mkfusefont.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = mkfusefont.pl; sourceTree = ""; }; + B3AEDE5C293F35AC0050BDB6 /* ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = ""; }; + B3AEDE5E293F35AC0050BDB6 /* wiikeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiikeyboard.c; sourceTree = ""; }; + B3AEDE5F293F35AC0050BDB6 /* wiimouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiimouse.c; sourceTree = ""; }; + B3AEDE60293F35AC0050BDB6 /* wiidisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiidisplay.c; sourceTree = ""; }; + B3AEDE61293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE62293F35AC0050BDB6 /* wiiui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiiui.c; sourceTree = ""; }; + B3AEDE63293F35AC0050BDB6 /* wiikeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiikeyboard.h; sourceTree = ""; }; + B3AEDE64293F35AC0050BDB6 /* wiijoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiijoystick.c; sourceTree = ""; }; + B3AEDE65293F35AC0050BDB6 /* wiikeysyms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiikeysyms.h; sourceTree = ""; }; + B3AEDE66293F35AC0050BDB6 /* wiidisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiidisplay.h; sourceTree = ""; }; + B3AEDE67293F35AC0050BDB6 /* wiimouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiimouse.h; sourceTree = ""; }; + B3AEDE68293F35AC0050BDB6 /* uijoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uijoystick.h; sourceTree = ""; }; + B3AEDE69293F35AC0050BDB6 /* uimedia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uimedia.h; sourceTree = ""; }; + B3AEDE6B293F35AC0050BDB6 /* fbmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fbmouse.c; sourceTree = ""; }; + B3AEDE6C293F35AC0050BDB6 /* fbkeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fbkeyboard.c; sourceTree = ""; }; + B3AEDE6D293F35AC0050BDB6 /* fbdisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fbdisplay.h; sourceTree = ""; }; + B3AEDE6E293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE6F293F35AC0050BDB6 /* fbkeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fbkeyboard.h; sourceTree = ""; }; + B3AEDE70293F35AC0050BDB6 /* fbmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fbmouse.h; sourceTree = ""; }; + B3AEDE71293F35AC0050BDB6 /* fbdisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fbdisplay.c; sourceTree = ""; }; + B3AEDE72293F35AC0050BDB6 /* fbui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fbui.c; sourceTree = ""; }; + B3AEDE73293F35AC0050BDB6 /* fbjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fbjoystick.c; sourceTree = ""; }; + B3AEDE74293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE76293F35AC0050BDB6 /* svgakeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = svgakeyboard.c; sourceTree = ""; }; + B3AEDE77293F35AC0050BDB6 /* svgaui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = svgaui.c; sourceTree = ""; }; + B3AEDE78293F35AC0050BDB6 /* svgadisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = svgadisplay.c; sourceTree = ""; }; + B3AEDE79293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE7A293F35AC0050BDB6 /* svgakeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svgakeyboard.h; sourceTree = ""; }; + B3AEDE7B293F35AC0050BDB6 /* svgadisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svgadisplay.h; sourceTree = ""; }; + B3AEDE7C293F35AC0050BDB6 /* svgajoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = svgajoystick.c; sourceTree = ""; }; + B3AEDE7E293F35AC0050BDB6 /* scaler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; + B3AEDE7F293F35AC0050BDB6 /* scaler_hq4x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_hq4x.c; sourceTree = ""; }; + B3AEDE80293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE81293F35AC0050BDB6 /* scaler_hq3x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_hq3x.c; sourceTree = ""; }; + B3AEDE82293F35AC0050BDB6 /* scaler_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler_internals.h; sourceTree = ""; }; + B3AEDE83293F35AC0050BDB6 /* scalers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scalers.c; sourceTree = ""; }; + B3AEDE84293F35AC0050BDB6 /* scaler_hq2x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_hq2x.c; sourceTree = ""; }; + B3AEDE85293F35AC0050BDB6 /* scaler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + B3AEDE87293F35AC0050BDB6 /* options.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = options.pl; sourceTree = ""; }; + B3AEDE88293F35AC0050BDB6 /* options-header.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "options-header.pl"; sourceTree = ""; }; + B3AEDE89293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE8A293F35AC0050BDB6 /* null_ui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_ui.c; sourceTree = ""; }; + B3AEDE8B293F35AC0050BDB6 /* options.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = options.dat; sourceTree = ""; }; + B3AEDE8D293F35AC0050BDB6 /* sdldisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdldisplay.c; sourceTree = ""; }; + B3AEDE8E293F35AC0050BDB6 /* sdljoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdljoystick.h; sourceTree = ""; }; + B3AEDE8F293F35AC0050BDB6 /* sdlkeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdlkeyboard.c; sourceTree = ""; }; + B3AEDE90293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE91293F35AC0050BDB6 /* sdljoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdljoystick.c; sourceTree = ""; }; + B3AEDE92293F35AC0050BDB6 /* sdlui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdlui.c; sourceTree = ""; }; + B3AEDE93293F35AC0050BDB6 /* sdldisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdldisplay.h; sourceTree = ""; }; + B3AEDE94293F35AC0050BDB6 /* sdlkeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdlkeyboard.h; sourceTree = ""; }; + B3AEDE96293F35AC0050BDB6 /* xkeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xkeyboard.h; sourceTree = ""; }; + B3AEDE97293F35AC0050BDB6 /* xstatusbar.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = xstatusbar.pl; sourceTree = ""; }; + B3AEDE98293F35AC0050BDB6 /* keysyms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keysyms.c; sourceTree = ""; }; + B3AEDE99293F35AC0050BDB6 /* xui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xui.h; sourceTree = ""; }; + B3AEDE9A293F35AC0050BDB6 /* xdisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xdisplay.h; sourceTree = ""; }; + B3AEDE9B293F35AC0050BDB6 /* xjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xjoystick.c; sourceTree = ""; }; + B3AEDE9C293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDE9D293F35AC0050BDB6 /* xkeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xkeyboard.c; sourceTree = ""; }; + B3AEDE9E293F35AC0050BDB6 /* xerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xerror.c; sourceTree = ""; }; + B3AEDE9F293F35AC0050BDB6 /* xdisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xdisplay.c; sourceTree = ""; }; + B3AEDEA0293F35AC0050BDB6 /* xui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xui.c; sourceTree = ""; }; + B3AEDEA2293F35AC0050BDB6 /* options.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = options.pl; sourceTree = ""; }; + B3AEDEA3293F35AC0050BDB6 /* rollback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rollback.c; sourceTree = ""; }; + B3AEDEA4293F35AC0050BDB6 /* gtkkeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtkkeyboard.c; sourceTree = ""; }; + B3AEDEA5293F35AC0050BDB6 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3AEDEA6293F35AC0050BDB6 /* pokefinder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokefinder.c; sourceTree = ""; }; + B3AEDEA7293F35AC0050BDB6 /* debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugger.c; sourceTree = ""; }; + B3AEDEA8293F35AC0050BDB6 /* browse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = browse.c; sourceTree = ""; }; + B3AEDEA9293F35AC0050BDB6 /* gtkcompat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtkcompat.h; sourceTree = ""; }; + B3AEDEAA293F35AC0050BDB6 /* binary.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = binary.c; sourceTree = ""; }; + B3AEDEAB293F35AC0050BDB6 /* options-header.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "options-header.pl"; sourceTree = ""; }; + B3AEDEAC293F35AC0050BDB6 /* pixmaps.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pixmaps.c; sourceTree = ""; }; + B3AEDEAD293F35AC0050BDB6 /* memory_gtk2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_gtk2.c; sourceTree = ""; }; + B3AEDEAE293F35AC0050BDB6 /* gtkmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtkmouse.c; sourceTree = ""; }; + B3AEDEAF293F35AC0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDEB0293F35AC0050BDB6 /* gtkui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtkui.c; sourceTree = ""; }; + B3AEDEB1293F35AC0050BDB6 /* picture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = picture.c; sourceTree = ""; }; + B3AEDEB2293F35AC0050BDB6 /* pokemem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokemem.c; sourceTree = ""; }; + B3AEDEB3293F35AC0050BDB6 /* fileselector.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fileselector.c; sourceTree = ""; }; + B3AEDEB4293F35AC0050BDB6 /* gtkinternals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtkinternals.h; sourceTree = ""; }; + B3AEDEB5293F35AD0050BDB6 /* gtkdisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtkdisplay.c; sourceTree = ""; }; + B3AEDEB6293F35AD0050BDB6 /* statusbar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = statusbar.c; sourceTree = ""; }; + B3AEDEB7293F35AD0050BDB6 /* stock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stock.c; sourceTree = ""; }; + B3AEDEB8293F35AD0050BDB6 /* roms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = roms.c; sourceTree = ""; }; + B3AEDEB9293F35AD0050BDB6 /* gtkjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtkjoystick.c; sourceTree = ""; }; + B3AEDEBA293F35AD0050BDB6 /* confirm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = confirm.c; sourceTree = ""; }; + B3AEDEBB293F35AD0050BDB6 /* gtkcompat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gtkcompat.c; sourceTree = ""; }; + B3AEDEBC293F35AD0050BDB6 /* uijoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uijoystick.c; sourceTree = ""; }; + B3AEDEBE293F35AD0050BDB6 /* pokemem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pokemem.h; sourceTree = ""; }; + B3AEDEBF293F35AD0050BDB6 /* options.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = options.pl; sourceTree = ""; }; + B3AEDEC0293F35AD0050BDB6 /* rollback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rollback.c; sourceTree = ""; }; + B3AEDEC1293F35AD0050BDB6 /* picture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = picture.h; sourceTree = ""; }; + B3AEDEC2293F35AD0050BDB6 /* about.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = about.h; sourceTree = ""; }; + B3AEDEC3293F35AD0050BDB6 /* pokefinder.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = pokefinder.rc; sourceTree = ""; }; + B3AEDEC4293F35AD0050BDB6 /* memorybrowser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memorybrowser.c; sourceTree = ""; }; + B3AEDEC5293F35AD0050BDB6 /* hyperlinks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hyperlinks.h; sourceTree = ""; }; + B3AEDEC6293F35AD0050BDB6 /* pokefinder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokefinder.c; sourceTree = ""; }; + B3AEDEC7293F35AD0050BDB6 /* win32internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32internals.h; sourceTree = ""; }; + B3AEDEC8293F35AD0050BDB6 /* roms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = roms.h; sourceTree = ""; }; + B3AEDEC9293F35AD0050BDB6 /* win32joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = win32joystick.c; sourceTree = ""; }; + B3AEDECA293F35AD0050BDB6 /* debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugger.c; sourceTree = ""; }; + B3AEDECB293F35AD0050BDB6 /* win32display.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = win32display.c; sourceTree = ""; }; + B3AEDECC293F35AD0050BDB6 /* win32ui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = win32ui.c; sourceTree = ""; }; + B3AEDECD293F35AD0050BDB6 /* browse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = browse.c; sourceTree = ""; }; + B3AEDECE293F35AD0050BDB6 /* pokemem.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = pokemem.rc; sourceTree = ""; }; + B3AEDECF293F35AD0050BDB6 /* binary.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = binary.c; sourceTree = ""; }; + B3AEDED0293F35AD0050BDB6 /* options-header.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "options-header.pl"; sourceTree = ""; }; + B3AEDED1293F35AD0050BDB6 /* win32joystick.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = win32joystick.rc; sourceTree = ""; }; + B3AEDED2293F35AD0050BDB6 /* debugger.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = debugger.rc; sourceTree = ""; }; + B3AEDED3293F35AD0050BDB6 /* hyperlinks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hyperlinks.c; sourceTree = ""; }; + B3AEDED4293F35AD0050BDB6 /* memorybrowser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memorybrowser.h; sourceTree = ""; }; + B3AEDED5293F35AD0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDED6293F35AD0050BDB6 /* about.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = about.rc; sourceTree = ""; }; + B3AEDED7293F35AD0050BDB6 /* rollback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rollback.h; sourceTree = ""; }; + B3AEDED8293F35AD0050BDB6 /* rollback.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = rollback.rc; sourceTree = ""; }; + B3AEDED9293F35AD0050BDB6 /* about.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = about.c; sourceTree = ""; }; + B3AEDEDA293F35AD0050BDB6 /* picture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = picture.c; sourceTree = ""; }; + B3AEDEDB293F35AD0050BDB6 /* pokemem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokemem.c; sourceTree = ""; }; + B3AEDEDC293F35AD0050BDB6 /* fileselector.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fileselector.c; sourceTree = ""; }; + B3AEDEDD293F35AD0050BDB6 /* pokefinder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pokefinder.h; sourceTree = ""; }; + B3AEDEDF293F35AD0050BDB6 /* tape_inactive.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = tape_inactive.bmp; sourceTree = ""; }; + B3AEDEE0293F35AD0050BDB6 /* pause_inactive.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = pause_inactive.bmp; sourceTree = ""; }; + B3AEDEE1293F35AD0050BDB6 /* mdr_inactive.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = mdr_inactive.bmp; sourceTree = ""; }; + B3AEDEE2293F35AD0050BDB6 /* pause_active.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = pause_active.bmp; sourceTree = ""; }; + B3AEDEE3293F35AD0050BDB6 /* tape_marker_mask.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = tape_marker_mask.bmp; sourceTree = ""; }; + B3AEDEE4293F35AD0050BDB6 /* disk_inactive.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = disk_inactive.bmp; sourceTree = ""; }; + B3AEDEE5293F35AD0050BDB6 /* disk_active.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = disk_active.bmp; sourceTree = ""; }; + B3AEDEE6293F35AD0050BDB6 /* tape_active.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = tape_active.bmp; sourceTree = ""; }; + B3AEDEE7293F35AD0050BDB6 /* tape_marker.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = tape_marker.bmp; sourceTree = ""; }; + B3AEDEE8293F35AD0050BDB6 /* mdr_active.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = mdr_active.bmp; sourceTree = ""; }; + B3AEDEE9293F35AD0050BDB6 /* mouse_inactive.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = mouse_inactive.bmp; sourceTree = ""; }; + B3AEDEEA293F35AD0050BDB6 /* mouse_active.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = mouse_active.bmp; sourceTree = ""; }; + B3AEDEEB293F35AD0050BDB6 /* select_template.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = select_template.rc; sourceTree = ""; }; + B3AEDEEC293F35AD0050BDB6 /* win32keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = win32keyboard.c; sourceTree = ""; }; + B3AEDEED293F35AD0050BDB6 /* memorybrowser.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = memorybrowser.rc; sourceTree = ""; }; + B3AEDEEE293F35AD0050BDB6 /* browse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = browse.h; sourceTree = ""; }; + B3AEDEEF293F35AD0050BDB6 /* debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; + B3AEDEF0293F35AD0050BDB6 /* picture.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = picture.rc; sourceTree = ""; }; + B3AEDEF1293F35AD0050BDB6 /* win32joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32joystick.h; sourceTree = ""; }; + B3AEDEF2293F35AD0050BDB6 /* statusbar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = statusbar.c; sourceTree = ""; }; + B3AEDEF3293F35AD0050BDB6 /* select_template.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = select_template.h; sourceTree = ""; }; + B3AEDEF4293F35AD0050BDB6 /* win32mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = win32mouse.c; sourceTree = ""; }; + B3AEDEF5293F35AD0050BDB6 /* roms.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = roms.rc; sourceTree = ""; }; + B3AEDEF6293F35AD0050BDB6 /* roms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = roms.c; sourceTree = ""; }; + B3AEDEF7293F35AD0050BDB6 /* options-resource.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "options-resource.pl"; sourceTree = ""; }; + B3AEDEF8293F35AD0050BDB6 /* statusbar.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = statusbar.rc; sourceTree = ""; }; + B3AEDEF9293F35AD0050BDB6 /* binary.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = binary.rc; sourceTree = ""; }; + B3AEDEFA293F35AD0050BDB6 /* binary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = binary.h; sourceTree = ""; }; + B3AEDEFB293F35AD0050BDB6 /* browse.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = browse.rc; sourceTree = ""; }; + B3AEDEFC293F35AD0050BDB6 /* confirm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = confirm.c; sourceTree = ""; }; + B3AEDEFD293F35AD0050BDB6 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B3AEDEFE293F35AD0050BDB6 /* display.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = display.c; sourceTree = ""; }; + B3AEDEFF293F35AD0050BDB6 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B3AEDF00293F35AD0050BDB6 /* install-sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-sh"; sourceTree = ""; }; + B3AEDF01293F35AD0050BDB6 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3AEDF03293F35AD0050BDB6 /* getopt1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = getopt1.c; sourceTree = ""; }; + B3AEDF05293F35AD0050BDB6 /* timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timer.c; sourceTree = ""; }; + B3AEDF06293F35AD0050BDB6 /* paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = paths.c; sourceTree = ""; }; + B3AEDF07293F35AD0050BDB6 /* osname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osname.c; sourceTree = ""; }; + B3AEDF08293F35AD0050BDB6 /* dir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir.c; sourceTree = ""; }; + B3AEDF09293F35AD0050BDB6 /* dirname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dirname.c; sourceTree = ""; }; + B3AEDF0A293F35AD0050BDB6 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B3AEDF0B293F35AD0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDF0D293F35AD0050BDB6 /* tuntap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tuntap.c; sourceTree = ""; }; + B3AEDF0E293F35AD0050BDB6 /* timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timer.c; sourceTree = ""; }; + B3AEDF0F293F35AD0050BDB6 /* paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = paths.c; sourceTree = ""; }; + B3AEDF10293F35AD0050BDB6 /* relative_paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = relative_paths.c; sourceTree = ""; }; + B3AEDF11293F35AD0050BDB6 /* osname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osname.c; sourceTree = ""; }; + B3AEDF12293F35AD0050BDB6 /* socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = socket.c; sourceTree = ""; }; + B3AEDF13293F35AD0050BDB6 /* dir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir.c; sourceTree = ""; }; + B3AEDF14293F35AD0050BDB6 /* file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file.c; sourceTree = ""; }; + B3AEDF16293F35AD0050BDB6 /* relative_paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = relative_paths.c; sourceTree = ""; }; + B3AEDF18293F35AD0050BDB6 /* paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = paths.c; sourceTree = ""; }; + B3AEDF19293F35AD0050BDB6 /* osname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osname.c; sourceTree = ""; }; + B3AEDF1B293F35AD0050BDB6 /* timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timer.c; sourceTree = ""; }; + B3AEDF1C293F35AD0050BDB6 /* paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = paths.c; sourceTree = ""; }; + B3AEDF1D293F35AD0050BDB6 /* osname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osname.c; sourceTree = ""; }; + B3AEDF1E293F35AD0050BDB6 /* socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = socket.c; sourceTree = ""; }; + B3AEDF20293F35AD0050BDB6 /* osname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osname.c; sourceTree = ""; }; + B3AEDF21293F35AD0050BDB6 /* getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = getopt.c; sourceTree = ""; }; + B3AEDF22293F35AD0050BDB6 /* INSTALL */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL; sourceTree = ""; }; + B3AEDF23293F35AD0050BDB6 /* phantom_typist.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = phantom_typist.c; sourceTree = ""; }; + B3AEDF24293F35AD0050BDB6 /* profile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profile.h; sourceTree = ""; }; + B3AEDF25293F35AD0050BDB6 /* ltmain.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ltmain.sh; sourceTree = ""; }; + B3AEDF26293F35AD0050BDB6 /* menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; + B3AEDF27293F35AD0050BDB6 /* screenshot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = screenshot.h; sourceTree = ""; }; + B3AEDF28293F35AD0050BDB6 /* settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = settings.h; sourceTree = ""; }; + B3AEDF29293F35AD0050BDB6 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3AEDF2A293F35AD0050BDB6 /* ylwrap */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ylwrap; sourceTree = ""; }; + B3AEDF2B293F35AD0050BDB6 /* memory_pages.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_pages.c; sourceTree = ""; }; + B3AEDF2C293F35AD0050BDB6 /* machine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = machine.h; sourceTree = ""; }; + B3AEDF2D293F35AD0050BDB6 /* keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard.c; sourceTree = ""; }; + B3AEDF2E293F35AD0050BDB6 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3AEDF2F293F35AD0050BDB6 /* event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = ""; }; + B3AEDF30293F35AD0050BDB6 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3AEDF32293F35AD0050BDB6 /* z80_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80_internals.h; sourceTree = ""; }; + B3AEDF33293F35AD0050BDB6 /* opcodes_ddfdcb.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = opcodes_ddfdcb.dat; sourceTree = ""; }; + B3AEDF34293F35AD0050BDB6 /* coretest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = coretest.c; sourceTree = ""; }; + B3AEDF35293F35AD0050BDB6 /* z80_ops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80_ops.c; sourceTree = ""; }; + B3AEDF36293F35AD0050BDB6 /* z80_checks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80_checks.h; sourceTree = ""; }; + B3AEDF37293F35AD0050BDB6 /* opcodes_cb.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = opcodes_cb.dat; sourceTree = ""; }; + B3AEDF38293F35AD0050BDB6 /* z80_ed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80_ed.c; sourceTree = ""; }; + B3AEDF39293F35AD0050BDB6 /* z80_ddfd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80_ddfd.c; sourceTree = ""; }; + B3AEDF3B293F35AD0050BDB6 /* tests.expected */ = {isa = PBXFileReference; lastKnownFileType = text; path = tests.expected; sourceTree = ""; }; + B3AEDF3C293F35AD0050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEDF3D293F35AD0050BDB6 /* tests.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = tests.in; sourceTree = ""; }; + B3AEDF3E293F35AD0050BDB6 /* opcodes_ed.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = opcodes_ed.dat; sourceTree = ""; }; + B3AEDF3F293F35AD0050BDB6 /* z80.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80.c; sourceTree = ""; }; + B3AEDF40293F35AD0050BDB6 /* z80_cb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80_cb.c; sourceTree = ""; }; + B3AEDF41293F35AD0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDF42293F35AD0050BDB6 /* z80_ddfdcb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80_ddfdcb.c; sourceTree = ""; }; + B3AEDF43293F35AD0050BDB6 /* opcodes_ddfd.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = opcodes_ddfd.dat; sourceTree = ""; }; + B3AEDF44293F35AD0050BDB6 /* opcodes_base.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opcodes_base.c; sourceTree = ""; }; + B3AEDF45293F35AD0050BDB6 /* opcodes_base.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = opcodes_base.dat; sourceTree = ""; }; + B3AEDF46293F35AD0050BDB6 /* z80_debugger_variables.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80_debugger_variables.c; sourceTree = ""; }; + B3AEDF47293F35AD0050BDB6 /* z80.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = z80.pl; sourceTree = ""; }; + B3AEDF48293F35AD0050BDB6 /* z80_macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80_macros.h; sourceTree = ""; }; + B3AEDF49293F35AD0050BDB6 /* z80.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = z80.h; sourceTree = ""; }; + B3AEDF4A293F35AD0050BDB6 /* rectangle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rectangle.c; sourceTree = ""; }; + B3AEDF4B293F35AD0050BDB6 /* movie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; + B3AEDF4C293F35AD0050BDB6 /* module.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = module.c; sourceTree = ""; }; + B3AEDF4D293F35AD0050BDB6 /* mempool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mempool.c; sourceTree = ""; }; + B3AEDF50293F35AD0050BDB6 /* Dialog.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = Dialog.pm; sourceTree = ""; }; + B3AEDF51293F35AD0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDF52293F35AD0050BDB6 /* cpp-perl.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "cpp-perl.pl"; sourceTree = ""; }; + B3AEDF53293F35AD0050BDB6 /* Fuse.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = Fuse.pm; sourceTree = ""; }; + B3AEDF55293F35AD0050BDB6 /* 128-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "128-1.rom"; sourceTree = ""; }; + B3AEDF56293F35AD0050BDB6 /* 128-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "128-0.rom"; sourceTree = ""; }; + B3AEDF57293F35AD0050BDB6 /* se-0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "se-0.h"; sourceTree = ""; }; + B3AEDF58293F35AD0050BDB6 /* disciple.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = disciple.rom; sourceTree = ""; }; + B3AEDF59293F35AD0050BDB6 /* 128-0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "128-0.h"; sourceTree = ""; }; + B3AEDF5A293F35AD0050BDB6 /* plus3e-3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3e-3.h"; sourceTree = ""; }; + B3AEDF5B293F35AD0050BDB6 /* plus3-3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3-3.h"; sourceTree = ""; }; + B3AEDF5C293F35AD0050BDB6 /* se-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "se-1.rom"; sourceTree = ""; }; + B3AEDF5D293F35AD0050BDB6 /* se-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "se-0.rom"; sourceTree = ""; }; + B3AEDF5E293F35AD0050BDB6 /* tc2068-1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "tc2068-1.h"; sourceTree = ""; }; + B3AEDF5F293F35AD0050BDB6 /* README.copyright */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.copyright; sourceTree = ""; }; + B3AEDF60293F35AD0050BDB6 /* plus2-0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus2-0.h"; sourceTree = ""; }; + B3AEDF61293F35AD0050BDB6 /* plus3e-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3e-1.rom"; sourceTree = ""; }; + B3AEDF62293F35AD0050BDB6 /* tc2068-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "tc2068-1.rom"; sourceTree = ""; }; + B3AEDF63293F35AD0050BDB6 /* tc2068-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "tc2068-0.rom"; sourceTree = ""; }; + B3AEDF64293F35AD0050BDB6 /* plus3e-0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3e-0.h"; sourceTree = ""; }; + B3AEDF65293F35AD0050BDB6 /* plus3e-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3e-0.rom"; sourceTree = ""; }; + B3AEDF66293F35AD0050BDB6 /* plus3-0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3-0.h"; sourceTree = ""; }; + B3AEDF67293F35AD0050BDB6 /* plus3e-2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3e-2.rom"; sourceTree = ""; }; + B3AEDF68293F35AD0050BDB6 /* plus3e-3.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3e-3.rom"; sourceTree = ""; }; + B3AEDF69293F35AD0050BDB6 /* 48.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 48.h; sourceTree = ""; }; + B3AEDF6A293F35AD0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDF6B293F35AD0050BDB6 /* tc2068-0.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "tc2068-0.h"; sourceTree = ""; }; + B3AEDF6C293F35AD0050BDB6 /* plus2-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus2-0.rom"; sourceTree = ""; }; + B3AEDF6D293F35AD0050BDB6 /* plus2-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus2-1.rom"; sourceTree = ""; }; + B3AEDF6E293F35AD0050BDB6 /* plus2-1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus2-1.h"; sourceTree = ""; }; + B3AEDF6F293F35AD0050BDB6 /* plus3-1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3-1.h"; sourceTree = ""; }; + B3AEDF70293F35AD0050BDB6 /* tc2048.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tc2048.h; sourceTree = ""; }; + B3AEDF71293F35AD0050BDB6 /* plus3e-1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3e-1.h"; sourceTree = ""; }; + B3AEDF72293F35AD0050BDB6 /* plus3-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3-0.rom"; sourceTree = ""; }; + B3AEDF73293F35AD0050BDB6 /* speccyboot-1.4.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "speccyboot-1.4.rom"; sourceTree = ""; }; + B3AEDF74293F35AD0050BDB6 /* plus3-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3-1.rom"; sourceTree = ""; }; + B3AEDF75293F35AD0050BDB6 /* plus3-3.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3-3.rom"; sourceTree = ""; }; + B3AEDF76293F35AD0050BDB6 /* tc2048.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = tc2048.rom; sourceTree = ""; }; + B3AEDF77293F35AD0050BDB6 /* se-1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "se-1.h"; sourceTree = ""; }; + B3AEDF78293F35AD0050BDB6 /* plus3-2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = "plus3-2.rom"; sourceTree = ""; }; + B3AEDF79293F35AD0050BDB6 /* plus3-2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3-2.h"; sourceTree = ""; }; + B3AEDF7A293F35AD0050BDB6 /* 48.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = 48.rom; sourceTree = ""; }; + B3AEDF7B293F35AD0050BDB6 /* plus3e-2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "plus3e-2.h"; sourceTree = ""; }; + B3AEDF7C293F35AD0050BDB6 /* 128-1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "128-1.h"; sourceTree = ""; }; + B3AEDF7D293F35AD0050BDB6 /* plusd.rom */ = {isa = PBXFileReference; lastKnownFileType = file; path = plusd.rom; sourceTree = ""; }; + B3AEDF7F293F35AD0050BDB6 /* timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timer.c; sourceTree = ""; }; + B3AEDF80293F35AD0050BDB6 /* sdl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl.c; sourceTree = ""; }; + B3AEDF81293F35AD0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDF82293F35AD0050BDB6 /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + B3AEDF83293F35AD0050BDB6 /* native.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = native.c; sourceTree = ""; }; + B3AEDF84293F35AD0050BDB6 /* movie_tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = movie_tables.h; sourceTree = ""; }; + B3AEDF85293F35AD0050BDB6 /* fuse.font */ = {isa = PBXFileReference; lastKnownFileType = file; path = fuse.font; sourceTree = ""; }; + B3AEDF86293F35AD0050BDB6 /* psg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psg.h; sourceTree = ""; }; + B3AEDF87293F35AD0050BDB6 /* slt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = slt.h; sourceTree = ""; }; + B3AEDF89293F35AD0050BDB6 /* unittests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unittests.h; sourceTree = ""; }; + B3AEDF8A293F35AD0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDF8B293F35AD0050BDB6 /* unittests.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unittests.c; sourceTree = ""; }; + B3AEDF8C293F35AD0050BDB6 /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.h.in; sourceTree = ""; }; + B3AEDF8D293F35AD0050BDB6 /* config.guess */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.guess; sourceTree = ""; }; + B3AEDF8E293F35AD0050BDB6 /* svg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = svg.h; sourceTree = ""; }; + B3AEDF8F293F35AD0050BDB6 /* depcomp */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = depcomp; sourceTree = ""; }; + B3AEDF90293F35AD0050BDB6 /* fuse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fuse.h; sourceTree = ""; }; + B3AEDF91293F35AD0050BDB6 /* options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = options.h; sourceTree = ""; }; + B3AEDF92293F35AD0050BDB6 /* missing */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = missing; sourceTree = ""; }; + B3AEDF93293F35AE0050BDB6 /* tape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tape.c; sourceTree = ""; }; + B3AEDF94293F35AE0050BDB6 /* snapshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snapshot.c; sourceTree = ""; }; + B3AEDF95293F35AE0050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEDF96293F35AE0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDF97293F35AE0050BDB6 /* windres.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = windres.rc; sourceTree = ""; }; + B3AEDF98293F35AE0050BDB6 /* input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input.c; sourceTree = ""; }; + B3AEDF99293F35AE0050BDB6 /* display.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = ""; }; + B3AEDF9A293F35AE0050BDB6 /* config.sub */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.sub; sourceTree = ""; }; + B3AEDF9B293F35AE0050BDB6 /* uidisplay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uidisplay.c; sourceTree = ""; }; + B3AEDF9C293F35AE0050BDB6 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3AEDF9D293F35AE0050BDB6 /* utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = ""; }; + B3AEDF9E293F35AE0050BDB6 /* loader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = loader.h; sourceTree = ""; }; + B3AEDF9F293F35AE0050BDB6 /* periph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = periph.h; sourceTree = ""; }; + B3AEDFA0293F35AE0050BDB6 /* spectrum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spectrum.h; sourceTree = ""; }; + B3AEDFA1293F35AE0050BDB6 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3AEDFA2293F35AE0050BDB6 /* sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sound.c; sourceTree = ""; }; + B3AEDFA4293F35AE0050BDB6 /* pentagon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pentagon.c; sourceTree = ""; }; + B3AEDFA5293F35AE0050BDB6 /* pentagon512.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pentagon512.c; sourceTree = ""; }; + B3AEDFA6293F35AE0050BDB6 /* machines_periph.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = machines_periph.c; sourceTree = ""; }; + B3AEDFA7293F35AE0050BDB6 /* spec_se.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spec_se.c; sourceTree = ""; }; + B3AEDFA8293F35AE0050BDB6 /* pentagon1024.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pentagon1024.c; sourceTree = ""; }; + B3AEDFA9293F35AE0050BDB6 /* spec128.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spec128.h; sourceTree = ""; }; + B3AEDFAA293F35AE0050BDB6 /* spec48.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spec48.c; sourceTree = ""; }; + B3AEDFAB293F35AE0050BDB6 /* spec16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spec16.c; sourceTree = ""; }; + B3AEDFAC293F35AE0050BDB6 /* tc2048.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tc2048.c; sourceTree = ""; }; + B3AEDFAD293F35AE0050BDB6 /* scorpion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scorpion.h; sourceTree = ""; }; + B3AEDFAE293F35AE0050BDB6 /* specplus3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = specplus3.c; sourceTree = ""; }; + B3AEDFAF293F35AE0050BDB6 /* ts2068.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ts2068.c; sourceTree = ""; }; + B3AEDFB0293F35AE0050BDB6 /* tc2068.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tc2068.h; sourceTree = ""; }; + B3AEDFB1293F35AE0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDFB2293F35AE0050BDB6 /* specplus3e.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = specplus3e.c; sourceTree = ""; }; + B3AEDFB3293F35AE0050BDB6 /* spec128.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spec128.c; sourceTree = ""; }; + B3AEDFB4293F35AE0050BDB6 /* spec48.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spec48.h; sourceTree = ""; }; + B3AEDFB5293F35AE0050BDB6 /* machines_periph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = machines_periph.h; sourceTree = ""; }; + B3AEDFB6293F35AE0050BDB6 /* pentagon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pentagon.h; sourceTree = ""; }; + B3AEDFB7293F35AE0050BDB6 /* specplus2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = specplus2.c; sourceTree = ""; }; + B3AEDFB8293F35AE0050BDB6 /* specplus2a.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = specplus2a.c; sourceTree = ""; }; + B3AEDFB9293F35AE0050BDB6 /* spec48_ntsc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spec48_ntsc.c; sourceTree = ""; }; + B3AEDFBA293F35AE0050BDB6 /* machines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = machines.h; sourceTree = ""; }; + B3AEDFBB293F35AE0050BDB6 /* specplus3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = specplus3.h; sourceTree = ""; }; + B3AEDFBC293F35AE0050BDB6 /* scorpion.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scorpion.c; sourceTree = ""; }; + B3AEDFBD293F35AE0050BDB6 /* tc2068.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tc2068.c; sourceTree = ""; }; + B3AEDFBE293F35AE0050BDB6 /* rzx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rzx.h; sourceTree = ""; }; + B3AEDFBF293F35AE0050BDB6 /* event.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = event.c; sourceTree = ""; }; + B3AEDFC0293F35AE0050BDB6 /* keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard.h; sourceTree = ""; }; + B3AEDFC1293F35AE0050BDB6 /* memory_pages.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_pages.h; sourceTree = ""; }; + B3AEDFC2293F35AE0050BDB6 /* machine.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = machine.c; sourceTree = ""; }; + B3AEDFC3293F35AE0050BDB6 /* screenshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = screenshot.c; sourceTree = ""; }; + B3AEDFC4293F35AE0050BDB6 /* menu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = ""; }; + B3AEDFC6293F35AE0050BDB6 /* pokemem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pokemem.h; sourceTree = ""; }; + B3AEDFC7293F35AE0050BDB6 /* pokefinder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokefinder.c; sourceTree = ""; }; + B3AEDFC8293F35AE0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDFC9293F35AE0050BDB6 /* pokemem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pokemem.c; sourceTree = ""; }; + B3AEDFCA293F35AE0050BDB6 /* pokefinder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pokefinder.h; sourceTree = ""; }; + B3AEDFCB293F35AE0050BDB6 /* settings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = settings.c; sourceTree = ""; }; + B3AEDFCC293F35AE0050BDB6 /* keysyms.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = keysyms.dat; sourceTree = ""; }; + B3AEDFCD293F35AE0050BDB6 /* compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compat.h; sourceTree = ""; }; + B3AEDFCE293F35AE0050BDB6 /* ui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ui.c; sourceTree = ""; }; + B3AEDFD0293F35AE0050BDB6 /* uncrustify.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = uncrustify.cfg; sourceTree = ""; }; + B3AEDFD1293F35AE0050BDB6 /* sound.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = sound.txt; sourceTree = ""; }; + B3AEDFD2293F35AE0050BDB6 /* coding_style.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = coding_style.txt; sourceTree = ""; }; + B3AEDFD3293F35AE0050BDB6 /* tc2048_tech_notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = tc2048_tech_notes.txt; sourceTree = ""; }; + B3AEDFD4293F35AE0050BDB6 /* peripheral_tests.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = peripheral_tests.txt; sourceTree = ""; }; + B3AEDFD5293F35AE0050BDB6 /* implementation_notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = implementation_notes.txt; sourceTree = ""; }; + B3AEDFD6293F35AE0050BDB6 /* spectranet.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = spectranet.txt; sourceTree = ""; }; + B3AEDFD7293F35AE0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDFD8293F35AE0050BDB6 /* input.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = input.txt; sourceTree = ""; }; + B3AEDFD9293F35AE0050BDB6 /* ui.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ui.txt; sourceTree = ""; }; + B3AEDFDA293F35AE0050BDB6 /* code_beautifiers.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = code_beautifiers.txt; sourceTree = ""; }; + B3AEDFDB293F35AE0050BDB6 /* valgrind.supp */ = {isa = PBXFileReference; lastKnownFileType = text; path = valgrind.supp; sourceTree = ""; }; + B3AEDFDC293F35AE0050BDB6 /* timer.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = timer.txt; sourceTree = ""; }; + B3AEDFDD293F35AE0050BDB6 /* cvs-tags */ = {isa = PBXFileReference; lastKnownFileType = text; path = "cvs-tags"; sourceTree = ""; }; + B3AEDFDF293F35AE0050BDB6 /* keyboard.scr */ = {isa = PBXFileReference; lastKnownFileType = file; path = keyboard.scr; sourceTree = ""; }; + B3AEDFE0293F35AE0050BDB6 /* cassette.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = cassette.bmp; sourceTree = ""; }; + B3AEDFE1293F35AE0050BDB6 /* keyboard.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = keyboard.png; sourceTree = ""; }; + B3AEDFE2293F35AE0050BDB6 /* plus3disk.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = plus3disk.bmp; sourceTree = ""; }; + B3AEDFE4293F35AE0050BDB6 /* fatware-success.hdf.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "fatware-success.hdf.bz2"; sourceTree = ""; }; + B3AEDFE5293F35AE0050BDB6 /* success.mdr */ = {isa = PBXFileReference; lastKnownFileType = file; path = success.mdr; sourceTree = ""; }; + B3AEDFE6293F35AE0050BDB6 /* success.udi */ = {isa = PBXFileReference; lastKnownFileType = file; path = success.udi; sourceTree = ""; }; + B3AEDFE7293F35AE0050BDB6 /* success.d80.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = success.d80.bz2; sourceTree = ""; }; + B3AEDFE8293F35AE0050BDB6 /* success.mgt.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = success.mgt.bz2; sourceTree = ""; }; + B3AEDFE9293F35AE0050BDB6 /* idedos-success.hdf.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "idedos-success.hdf.bz2"; sourceTree = ""; }; + B3AEDFEA293F35AE0050BDB6 /* success.opd */ = {isa = PBXFileReference; lastKnownFileType = file; path = success.opd; sourceTree = ""; }; + B3AEDFEB293F35AE0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEDFED293F35AE0050BDB6 /* tape_16.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_16.szx; sourceTree = ""; }; + B3AEDFEE293F35AE0050BDB6 /* tape_plus3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_plus3.h; sourceTree = ""; }; + B3AEDFEF293F35AE0050BDB6 /* tape_plus2.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_plus2.szx; sourceTree = ""; }; + B3AEDFF0293F35AE0050BDB6 /* tape_plus3.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_plus3.szx; sourceTree = ""; }; + B3AEDFF1293F35AE0050BDB6 /* tape_se.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_se.szx; sourceTree = ""; }; + B3AEDFF2293F35AE0050BDB6 /* disk_plus3.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = disk_plus3.szx; sourceTree = ""; }; + B3AEDFF3293F35AE0050BDB6 /* tape_se.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_se.h; sourceTree = ""; }; + B3AEDFF4293F35AE0050BDB6 /* tape_48.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_48.szx; sourceTree = ""; }; + B3AEDFF5293F35AE0050BDB6 /* tape_2048.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_2048.szx; sourceTree = ""; }; + B3AEDFF6293F35AE0050BDB6 /* tape_plus2a.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_plus2a.h; sourceTree = ""; }; + B3AEDFF7293F35AE0050BDB6 /* tape_pentagon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_pentagon.h; sourceTree = ""; }; + B3AEDFF8293F35AE0050BDB6 /* tape_plus3e.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_plus3e.h; sourceTree = ""; }; + B3AEDFF9293F35AE0050BDB6 /* tape_2048.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_2048.h; sourceTree = ""; }; + B3AEDFFA293F35AE0050BDB6 /* tape_128.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_128.h; sourceTree = ""; }; + B3AEDFFB293F35AE0050BDB6 /* tape_2068.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_2068.szx; sourceTree = ""; }; + B3AEDFFC293F35AE0050BDB6 /* tape_16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_16.h; sourceTree = ""; }; + B3AEDFFD293F35AE0050BDB6 /* tape_scorpion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_scorpion.h; sourceTree = ""; }; + B3AEDFFE293F35AE0050BDB6 /* tape_pentagon.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_pentagon.szx; sourceTree = ""; }; + B3AEDFFF293F35AE0050BDB6 /* tape_plus3e.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_plus3e.szx; sourceTree = ""; }; + B3AEE000293F35AE0050BDB6 /* tape_plus2a.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_plus2a.szx; sourceTree = ""; }; + B3AEE001293F35AE0050BDB6 /* tape_ts2068.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_ts2068.szx; sourceTree = ""; }; + B3AEE002293F35AE0050BDB6 /* tape_48_ntsc.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_48_ntsc.szx; sourceTree = ""; }; + B3AEE003293F35AE0050BDB6 /* tape_2068.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_2068.h; sourceTree = ""; }; + B3AEE004293F35AE0050BDB6 /* tape_48.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_48.h; sourceTree = ""; }; + B3AEE005293F35AE0050BDB6 /* tape_128.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_128.szx; sourceTree = ""; }; + B3AEE006293F35AE0050BDB6 /* tape_plus2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_plus2.h; sourceTree = ""; }; + B3AEE007293F35AE0050BDB6 /* tape_ts2068.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_ts2068.h; sourceTree = ""; }; + B3AEE008293F35AE0050BDB6 /* tape_48_ntsc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_48_ntsc.h; sourceTree = ""; }; + B3AEE009293F35AE0050BDB6 /* tape_scorpion.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = tape_scorpion.szx; sourceTree = ""; }; + B3AEE00A293F35AE0050BDB6 /* microdrive.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = microdrive.bmp; sourceTree = ""; }; + B3AEE00C293F35AE0050BDB6 /* expression.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = expression.c; sourceTree = ""; }; + B3AEE00D293F35AE0050BDB6 /* debugger_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugger_internals.h; sourceTree = ""; }; + B3AEE00E293F35AE0050BDB6 /* disassemble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disassemble.c; sourceTree = ""; }; + B3AEE00F293F35AE0050BDB6 /* breakpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = breakpoint.h; sourceTree = ""; }; + B3AEE010293F35AE0050BDB6 /* debugger.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugger.c; sourceTree = ""; }; + B3AEE011293F35AE0050BDB6 /* command.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = command.c; sourceTree = ""; }; + B3AEE012293F35AE0050BDB6 /* commandy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = commandy.h; sourceTree = ""; }; + B3AEE013293F35AE0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE014293F35AE0050BDB6 /* commandl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = commandl.c; sourceTree = ""; }; + B3AEE015293F35AE0050BDB6 /* commandl.l */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.lex; path = commandl.l; sourceTree = ""; }; + B3AEE016293F35AE0050BDB6 /* event.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = event.c; sourceTree = ""; }; + B3AEE017293F35AE0050BDB6 /* debugger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; + B3AEE018293F35AE0050BDB6 /* system_variable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = system_variable.c; sourceTree = ""; }; + B3AEE019293F35AE0050BDB6 /* breakpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = breakpoint.c; sourceTree = ""; }; + B3AEE01A293F35AE0050BDB6 /* commandy.y */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.yacc; path = commandy.y; sourceTree = ""; }; + B3AEE01B293F35AE0050BDB6 /* commandy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = commandy.c; sourceTree = ""; }; + B3AEE01C293F35AE0050BDB6 /* variable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = variable.c; sourceTree = ""; }; + B3AEE01D293F35AE0050BDB6 /* phantom_typist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = phantom_typist.h; sourceTree = ""; }; + B3AEE01E293F35AE0050BDB6 /* profile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profile.c; sourceTree = ""; }; + B3AEE01F293F35AE0050BDB6 /* settings.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = settings.pl; sourceTree = ""; }; + B3AEE021293F35AE0050BDB6 /* ltversion.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltversion.m4; sourceTree = ""; }; + B3AEE022293F35AE0050BDB6 /* pkg.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = pkg.m4; sourceTree = ""; }; + B3AEE023293F35AE0050BDB6 /* libtool.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = libtool.m4; sourceTree = ""; }; + B3AEE024293F35AE0050BDB6 /* ltoptions.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltoptions.m4; sourceTree = ""; }; + B3AEE025293F35AE0050BDB6 /* ltsugar.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltsugar.m4; sourceTree = ""; }; + B3AEE026293F35AE0050BDB6 /* sdl.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = sdl.m4; sourceTree = ""; }; + B3AEE027293F35AE0050BDB6 /* ax_string_strcasecmp.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_string_strcasecmp.m4; sourceTree = ""; }; + B3AEE028293F35AE0050BDB6 /* ax_pthread.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_pthread.m4; sourceTree = ""; }; + B3AEE029293F35AE0050BDB6 /* ax_create_stdint_h.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_create_stdint_h.m4; sourceTree = ""; }; + B3AEE02A293F35AE0050BDB6 /* gtk-2.0.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gtk-2.0.m4"; sourceTree = ""; }; + B3AEE02B293F35AE0050BDB6 /* lt~obsolete.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lt~obsolete.m4"; sourceTree = ""; }; + B3AEE02C293F35AE0050BDB6 /* menu_data.dat */ = {isa = PBXFileReference; lastKnownFileType = text; path = menu_data.dat; sourceTree = ""; }; + B3AEE02E293F35AE0050BDB6 /* ula.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ula.h; sourceTree = ""; }; + B3AEE02F293F35AE0050BDB6 /* ay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ay.h; sourceTree = ""; }; + B3AEE030293F35AE0050BDB6 /* covox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = covox.c; sourceTree = ""; }; + B3AEE031293F35AE0050BDB6 /* melodik.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = melodik.c; sourceTree = ""; }; + B3AEE033293F35AE0050BDB6 /* zxmmc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zxmmc.h; sourceTree = ""; }; + B3AEE034293F35AE0050BDB6 /* divmmc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = divmmc.h; sourceTree = ""; }; + B3AEE035293F35AE0050BDB6 /* divide.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = divide.h; sourceTree = ""; }; + B3AEE036293F35AE0050BDB6 /* simpleide.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = simpleide.c; sourceTree = ""; }; + B3AEE037293F35AE0050BDB6 /* ide.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ide.h; sourceTree = ""; }; + B3AEE038293F35AE0050BDB6 /* zxatasp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zxatasp.c; sourceTree = ""; }; + B3AEE039293F35AE0050BDB6 /* divxxx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = divxxx.c; sourceTree = ""; }; + B3AEE03A293F35AE0050BDB6 /* zxcf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zxcf.c; sourceTree = ""; }; + B3AEE03B293F35AE0050BDB6 /* zxmmc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zxmmc.c; sourceTree = ""; }; + B3AEE03C293F35AE0050BDB6 /* simpleide.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = simpleide.h; sourceTree = ""; }; + B3AEE03D293F35AE0050BDB6 /* divide.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = divide.c; sourceTree = ""; }; + B3AEE03E293F35AE0050BDB6 /* divmmc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = divmmc.c; sourceTree = ""; }; + B3AEE03F293F35AE0050BDB6 /* ide.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ide.c; sourceTree = ""; }; + B3AEE040293F35AE0050BDB6 /* zxcf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zxcf.h; sourceTree = ""; }; + B3AEE041293F35AE0050BDB6 /* divxxx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = divxxx.h; sourceTree = ""; }; + B3AEE042293F35AE0050BDB6 /* zxatasp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zxatasp.h; sourceTree = ""; }; + B3AEE043293F35AE0050BDB6 /* printer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = printer.h; sourceTree = ""; }; + B3AEE044293F35AE0050BDB6 /* usource.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = usource.c; sourceTree = ""; }; + B3AEE045293F35AE0050BDB6 /* ttx2000s.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ttx2000s.c; sourceTree = ""; }; + B3AEE047293F35AE0050BDB6 /* enc28j60.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = enc28j60.h; sourceTree = ""; }; + B3AEE048293F35AE0050BDB6 /* w5100_socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = w5100_socket.c; sourceTree = ""; }; + B3AEE049293F35AE0050BDB6 /* w5100.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = w5100.c; sourceTree = ""; }; + B3AEE04A293F35AE0050BDB6 /* w5100_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = w5100_internals.h; sourceTree = ""; }; + B3AEE04B293F35AE0050BDB6 /* enc28j60.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = enc28j60.c; sourceTree = ""; }; + B3AEE04C293F35AE0050BDB6 /* w5100.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = w5100.h; sourceTree = ""; }; + B3AEE04D293F35AE0050BDB6 /* spectranet.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spectranet.c; sourceTree = ""; }; + B3AEE04E293F35AE0050BDB6 /* specdrum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = specdrum.h; sourceTree = ""; }; + B3AEE04F293F35AE0050BDB6 /* speccyboot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = speccyboot.h; sourceTree = ""; }; + B3AEE050293F35AE0050BDB6 /* if1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = if1.c; sourceTree = ""; }; + B3AEE051293F35AE0050BDB6 /* dck.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dck.h; sourceTree = ""; }; + B3AEE052293F35AE0050BDB6 /* scld.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scld.h; sourceTree = ""; }; + B3AEE053293F35AE0050BDB6 /* joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joystick.h; sourceTree = ""; }; + B3AEE054293F35AE0050BDB6 /* kempmouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kempmouse.h; sourceTree = ""; }; + B3AEE055293F35AE0050BDB6 /* fuller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fuller.h; sourceTree = ""; }; + B3AEE056293F35AE0050BDB6 /* if2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = if2.c; sourceTree = ""; }; + B3AEE057293F35AE0050BDB6 /* multiface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = multiface.c; sourceTree = ""; }; + B3AEE058293F35AE0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE059293F35AE0050BDB6 /* usource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = usource.h; sourceTree = ""; }; + B3AEE05A293F35AE0050BDB6 /* ttx2000s.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ttx2000s.h; sourceTree = ""; }; + B3AEE05C293F35AE0050BDB6 /* am29f010.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = am29f010.h; sourceTree = ""; }; + B3AEE05D293F35AE0050BDB6 /* am29f010.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = am29f010.c; sourceTree = ""; }; + B3AEE05E293F35AE0050BDB6 /* printer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printer.c; sourceTree = ""; }; + B3AEE05F293F35AE0050BDB6 /* melodik.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = melodik.h; sourceTree = ""; }; + B3AEE060293F35AE0050BDB6 /* ay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ay.c; sourceTree = ""; }; + B3AEE061293F35AE0050BDB6 /* covox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = covox.h; sourceTree = ""; }; + B3AEE062293F35AE0050BDB6 /* ula.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ula.c; sourceTree = ""; }; + B3AEE063293F35AE0050BDB6 /* if1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = if1.h; sourceTree = ""; }; + B3AEE064293F35AE0050BDB6 /* speccyboot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = speccyboot.c; sourceTree = ""; }; + B3AEE065293F35AE0050BDB6 /* spectranet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spectranet.h; sourceTree = ""; }; + B3AEE066293F35AE0050BDB6 /* specdrum.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = specdrum.c; sourceTree = ""; }; + B3AEE068293F35AE0050BDB6 /* opus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opus.h; sourceTree = ""; }; + B3AEE069293F35AE0050BDB6 /* plusd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plusd.c; sourceTree = ""; }; + B3AEE06A293F35AE0050BDB6 /* didaktik.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = didaktik.c; sourceTree = ""; }; + B3AEE06B293F35AE0050BDB6 /* trdos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trdos.h; sourceTree = ""; }; + B3AEE06C293F35AE0050BDB6 /* beta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = beta.h; sourceTree = ""; }; + B3AEE06D293F35AE0050BDB6 /* crc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = ""; }; + B3AEE06E293F35AE0050BDB6 /* wd_fdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wd_fdc.h; sourceTree = ""; }; + B3AEE06F293F35AE0050BDB6 /* disciple.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disciple.c; sourceTree = ""; }; + B3AEE070293F35AE0050BDB6 /* fdd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fdd.h; sourceTree = ""; }; + B3AEE071293F35AE0050BDB6 /* upd_fdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upd_fdc.h; sourceTree = ""; }; + B3AEE072293F35AE0050BDB6 /* disk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disk.h; sourceTree = ""; }; + B3AEE073293F35AE0050BDB6 /* didaktik.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = didaktik.h; sourceTree = ""; }; + B3AEE074293F35AE0050BDB6 /* trdos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trdos.c; sourceTree = ""; }; + B3AEE075293F35AE0050BDB6 /* plusd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plusd.h; sourceTree = ""; }; + B3AEE076293F35AE0050BDB6 /* opus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opus.c; sourceTree = ""; }; + B3AEE077293F35AE0050BDB6 /* beta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = beta.c; sourceTree = ""; }; + B3AEE078293F35AE0050BDB6 /* crc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc.c; sourceTree = ""; }; + B3AEE079293F35AE0050BDB6 /* disk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disk.c; sourceTree = ""; }; + B3AEE07A293F35AE0050BDB6 /* upd_fdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = upd_fdc.c; sourceTree = ""; }; + B3AEE07B293F35AF0050BDB6 /* fdd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fdd.c; sourceTree = ""; }; + B3AEE07C293F35AF0050BDB6 /* disciple.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disciple.h; sourceTree = ""; }; + B3AEE07D293F35AF0050BDB6 /* wd_fdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wd_fdc.c; sourceTree = ""; }; + B3AEE07E293F35AF0050BDB6 /* joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = joystick.c; sourceTree = ""; }; + B3AEE07F293F35AF0050BDB6 /* scld.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scld.c; sourceTree = ""; }; + B3AEE080293F35AF0050BDB6 /* dck.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dck.c; sourceTree = ""; }; + B3AEE081293F35AF0050BDB6 /* if2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = if2.h; sourceTree = ""; }; + B3AEE082293F35AF0050BDB6 /* fuller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fuller.c; sourceTree = ""; }; + B3AEE083293F35AF0050BDB6 /* multiface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = multiface.h; sourceTree = ""; }; + B3AEE084293F35AF0050BDB6 /* kempmouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = kempmouse.c; sourceTree = ""; }; + B3AEE085293F35AF0050BDB6 /* slt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = slt.c; sourceTree = ""; }; + B3AEE086293F35AF0050BDB6 /* THANKS */ = {isa = PBXFileReference; lastKnownFileType = text; path = THANKS; sourceTree = ""; }; + B3AEE087293F35AF0050BDB6 /* psg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psg.c; sourceTree = ""; }; + B3AEE088293F35AF0050BDB6 /* mempool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mempool.h; sourceTree = ""; }; + B3AEE089293F35AF0050BDB6 /* uimedia.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uimedia.c; sourceTree = ""; }; + B3AEE08A293F35AF0050BDB6 /* rectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rectangle.h; sourceTree = ""; }; + B3AEE08B293F35AF0050BDB6 /* module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = module.h; sourceTree = ""; }; + B3AEE08C293F35AF0050BDB6 /* movie.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = movie.c; sourceTree = ""; }; + B3AEE08E293F35AF0050BDB6 /* startup_manager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = startup_manager.c; sourceTree = ""; }; + B3AEE08F293F35AF0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE090293F35AF0050BDB6 /* startup_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = startup_manager.h; sourceTree = ""; }; + B3AEE091293F35AF0050BDB6 /* bitmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitmap.h; sourceTree = ""; }; + B3AEE095293F35AF0050BDB6 /* fuse */ = {isa = PBXFileReference; lastKnownFileType = text; path = fuse; sourceTree = ""; }; + B3AEE096293F35AF0050BDB6 /* diff_options.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = diff_options.sh; sourceTree = ""; }; + B3AEE097293F35AF0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE09A293F35AF0050BDB6 /* fuse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fuse.png; sourceTree = ""; }; + B3AEE09B293F35AF0050BDB6 /* application-x-spectrum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-spectrum.png"; sourceTree = ""; }; + B3AEE09D293F35AF0050BDB6 /* fuse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fuse.png; sourceTree = ""; }; + B3AEE09E293F35AF0050BDB6 /* application-x-spectrum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-spectrum.png"; sourceTree = ""; }; + B3AEE0A0293F35AF0050BDB6 /* fuse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fuse.png; sourceTree = ""; }; + B3AEE0A1293F35AF0050BDB6 /* application-x-spectrum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-spectrum.png"; sourceTree = ""; }; + B3AEE0A3293F35AF0050BDB6 /* fuse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fuse.png; sourceTree = ""; }; + B3AEE0A4293F35AF0050BDB6 /* application-x-spectrum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-spectrum.png"; sourceTree = ""; }; + B3AEE0A6293F35AF0050BDB6 /* fuse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fuse.png; sourceTree = ""; }; + B3AEE0A7293F35AF0050BDB6 /* application-x-spectrum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-spectrum.png"; sourceTree = ""; }; + B3AEE0A9293F35AF0050BDB6 /* fuse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fuse.png; sourceTree = ""; }; + B3AEE0AA293F35AF0050BDB6 /* application-x-spectrum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-spectrum.png"; sourceTree = ""; }; + B3AEE0AB293F35AF0050BDB6 /* fuse.desktop.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = fuse.desktop.in; sourceTree = ""; }; + B3AEE0AD293F35AF0050BDB6 /* installer.nsi.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = installer.nsi.in; sourceTree = ""; }; + B3AEE0AE293F35AF0050BDB6 /* winfuse.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = winfuse.ico; sourceTree = ""; }; + B3AEE0AF293F35AF0050BDB6 /* distribution.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = distribution.mk; sourceTree = ""; }; + B3AEE0B0293F35AF0050BDB6 /* fuse.manifest.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fuse.manifest.in; sourceTree = ""; }; + B3AEE0B1293F35AF0050BDB6 /* fuse.xml.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = fuse.xml.in; sourceTree = ""; }; + B3AEE0B2293F35AF0050BDB6 /* snapshot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snapshot.h; sourceTree = ""; }; + B3AEE0B3293F35AF0050BDB6 /* tape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape.h; sourceTree = ""; }; + B3AEE0B5293F35AF0050BDB6 /* sdlsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdlsound.c; sourceTree = ""; }; + B3AEE0B6293F35AF0050BDB6 /* alsasound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alsasound.c; sourceTree = ""; }; + B3AEE0B7293F35AF0050BDB6 /* osssound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osssound.c; sourceTree = ""; }; + B3AEE0B8293F35AF0050BDB6 /* nullsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nullsound.c; sourceTree = ""; }; + B3AEE0B9293F35AF0050BDB6 /* pulsesound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pulsesound.c; sourceTree = ""; }; + B3AEE0BA293F35AF0050BDB6 /* sfifo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sfifo.h; sourceTree = ""; }; + B3AEE0BB293F35AF0050BDB6 /* coreaudiosound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = coreaudiosound.c; sourceTree = ""; }; + B3AEE0BC293F35AF0050BDB6 /* win32sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = win32sound.c; sourceTree = ""; }; + B3AEE0BD293F35AF0050BDB6 /* hpsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hpsound.c; sourceTree = ""; }; + B3AEE0BE293F35AF0050BDB6 /* blipbuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blipbuffer.c; sourceTree = ""; }; + B3AEE0BF293F35AF0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE0C0293F35AF0050BDB6 /* aosound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aosound.c; sourceTree = ""; }; + B3AEE0C1293F35AF0050BDB6 /* sfifo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sfifo.c; sourceTree = ""; }; + B3AEE0C2293F35AF0050BDB6 /* dxsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dxsound.c; sourceTree = ""; }; + B3AEE0C3293F35AF0050BDB6 /* blipbuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blipbuffer.h; sourceTree = ""; }; + B3AEE0C4293F35AF0050BDB6 /* sunsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sunsound.c; sourceTree = ""; }; + B3AEE0C5293F35AF0050BDB6 /* wiisound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiisound.c; sourceTree = ""; }; + B3AEE0C6293F35AF0050BDB6 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3AEE0C7293F35AF0050BDB6 /* aclocal.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = aclocal.m4; sourceTree = ""; }; + B3AEE0C8293F35AF0050BDB6 /* fuse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fuse.c; sourceTree = ""; }; + B3AEE0C9293F35AF0050BDB6 /* settings-header.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "settings-header.pl"; sourceTree = ""; }; + B3AEE0CA293F35AF0050BDB6 /* svg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = svg.c; sourceTree = ""; }; + B3AEE0CB293F35AF0050BDB6 /* keysyms.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = keysyms.pl; sourceTree = ""; }; + B3AEE0CC293F35AF0050BDB6 /* autogen.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = autogen.sh; sourceTree = ""; }; + B3AEE0CD293F35AF0050BDB6 /* PORTING */ = {isa = PBXFileReference; lastKnownFileType = text; path = PORTING; sourceTree = ""; }; + B3AEE0CF293F35AF0050BDB6 /* version.c.templ */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.c.templ; sourceTree = ""; }; + B3AEE0D0293F35AF0050BDB6 /* mkmake.lua */ = {isa = PBXFileReference; lastKnownFileType = text; path = mkmake.lua; sourceTree = ""; }; + B3AEE0D1293F35AF0050BDB6 /* keyboverlay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = keyboverlay.png; sourceTree = ""; }; + B3AEE0D3293F35AF0050BDB6 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3AEE0D4293F35AF0050BDB6 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3AEE0D5293F35AF0050BDB6 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3AEE0D6293F35AF0050BDB6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3AEE0D7293F35AF0050BDB6 /* zlib.map */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = zlib.map; sourceTree = ""; }; + B3AEE0D8293F35AF0050BDB6 /* zlib.pc.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.cmakein; sourceTree = ""; }; + B3AEE0D9293F35AF0050BDB6 /* zlib.3.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = zlib.3.pdf; sourceTree = ""; }; + B3AEE0DB293F35AF0050BDB6 /* infcover.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infcover.c; sourceTree = ""; }; + B3AEE0DC293F35AF0050BDB6 /* example.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = example.c; sourceTree = ""; }; + B3AEE0DD293F35AF0050BDB6 /* minigzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minigzip.c; sourceTree = ""; }; + B3AEE0DE293F35AF0050BDB6 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3AEE0DF293F35AF0050BDB6 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3AEE0E0293F35AF0050BDB6 /* zlib.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.3; sourceTree = ""; }; + B3AEE0E1293F35AF0050BDB6 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3AEE0E2293F35AF0050BDB6 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3AEE0E4293F35AF0050BDB6 /* package.qpg */ = {isa = PBXFileReference; lastKnownFileType = text; path = package.qpg; sourceTree = ""; }; + B3AEE0E6293F35AF0050BDB6 /* Makefile.bor */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.bor; sourceTree = ""; }; + B3AEE0E7293F35AF0050BDB6 /* Makefile.msc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.msc; sourceTree = ""; }; + B3AEE0E8293F35AF0050BDB6 /* Makefile.emx */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.emx; sourceTree = ""; }; + B3AEE0E9293F35AF0050BDB6 /* Makefile.dj2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.dj2; sourceTree = ""; }; + B3AEE0EA293F35AF0050BDB6 /* Makefile.tc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.tc; sourceTree = ""; }; + B3AEE0EB293F35AF0050BDB6 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3AEE0EC293F35AF0050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEE0ED293F35AF0050BDB6 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3AEE0EE293F35AF0050BDB6 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3AEE0EF293F35AF0050BDB6 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3AEE0F0293F35AF0050BDB6 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3AEE0F1293F35AF0050BDB6 /* zconf.h.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.cmakein; sourceTree = ""; }; + B3AEE0F2293F35AF0050BDB6 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3AEE0F4293F35AF0050BDB6 /* Makefile.riscos */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.riscos; sourceTree = ""; }; + B3AEE0F6293F35AF0050BDB6 /* Makefile.os2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.os2; sourceTree = ""; }; + B3AEE0F7293F35AF0050BDB6 /* zlib.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.def; sourceTree = ""; }; + B3AEE0F8293F35AF0050BDB6 /* Makefile.emx */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.emx; sourceTree = ""; }; + B3AEE0F9293F35AF0050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE0FA293F35AF0050BDB6 /* descrip.mms */ = {isa = PBXFileReference; lastKnownFileType = text; path = descrip.mms; sourceTree = ""; }; + B3AEE0FB293F35AF0050BDB6 /* visual-basic.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "visual-basic.txt"; sourceTree = ""; }; + B3AEE0FC293F35AF0050BDB6 /* treebuild.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = treebuild.xml; sourceTree = ""; }; + B3AEE0FF293F35AF0050BDB6 /* bld_ml32.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = bld_ml32.bat; sourceTree = ""; }; + B3AEE100293F35AF0050BDB6 /* inffas32.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = inffas32.asm; sourceTree = ""; }; + B3AEE101293F35AF0050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE102293F35AF0050BDB6 /* match686.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = match686.asm; sourceTree = ""; }; + B3AEE104293F35AF0050BDB6 /* buffer_demo.adb */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = buffer_demo.adb; sourceTree = ""; }; + B3AEE105293F35AF0050BDB6 /* zlib-streams.ads */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = "zlib-streams.ads"; sourceTree = ""; }; + B3AEE106293F35AF0050BDB6 /* zlib-thin.ads */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = "zlib-thin.ads"; sourceTree = ""; }; + B3AEE107293F35AF0050BDB6 /* zlib.adb */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = zlib.adb; sourceTree = ""; }; + B3AEE108293F35AF0050BDB6 /* read.adb */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = read.adb; sourceTree = ""; }; + B3AEE109293F35AF0050BDB6 /* mtest.adb */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = mtest.adb; sourceTree = ""; }; + B3AEE10A293F35AF0050BDB6 /* test.adb */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = test.adb; sourceTree = ""; }; + B3AEE10B293F35AF0050BDB6 /* zlib.gpr */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.gpr; sourceTree = ""; }; + B3AEE10C293F35AF0050BDB6 /* zlib-thin.adb */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = "zlib-thin.adb"; sourceTree = ""; }; + B3AEE10D293F35AF0050BDB6 /* zlib-streams.adb */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = "zlib-streams.adb"; sourceTree = ""; }; + B3AEE10E293F35AF0050BDB6 /* zlib.ads */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.ada; path = zlib.ads; sourceTree = ""; }; + B3AEE10F293F35AF0050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE111293F35AF0050BDB6 /* example.pas */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = example.pas; sourceTree = ""; }; + B3AEE112293F35AF0050BDB6 /* zlibpas.pas */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = zlibpas.pas; sourceTree = ""; }; + B3AEE113293F35AF0050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE114293F35AF0050BDB6 /* zlibd32.mak */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = zlibd32.mak; sourceTree = ""; }; + B3AEE116293F35AF0050BDB6 /* DotZLib.build */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = DotZLib.build; sourceTree = ""; }; + B3AEE118293F35AF0050BDB6 /* GZipStream.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = GZipStream.cs; sourceTree = ""; }; + B3AEE119293F35AF0050BDB6 /* CodecBase.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = CodecBase.cs; sourceTree = ""; }; + B3AEE11A293F35AF0050BDB6 /* CircularBuffer.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = CircularBuffer.cs; sourceTree = ""; }; + B3AEE11B293F35AF0050BDB6 /* AssemblyInfo.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = AssemblyInfo.cs; sourceTree = ""; }; + B3AEE11C293F35AF0050BDB6 /* UnitTests.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = UnitTests.cs; sourceTree = ""; }; + B3AEE11D293F35AF0050BDB6 /* DotZLib.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = DotZLib.cs; sourceTree = ""; }; + B3AEE11E293F35AF0050BDB6 /* ChecksumImpl.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChecksumImpl.cs; sourceTree = ""; }; + B3AEE11F293F35AF0050BDB6 /* DotZLib.csproj */ = {isa = PBXFileReference; lastKnownFileType = text; path = DotZLib.csproj; sourceTree = ""; }; + B3AEE120293F35AF0050BDB6 /* Deflater.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = Deflater.cs; sourceTree = ""; }; + B3AEE121293F35AF0050BDB6 /* Inflater.cs */ = {isa = PBXFileReference; lastKnownFileType = text; path = Inflater.cs; sourceTree = ""; }; + B3AEE122293F35AF0050BDB6 /* LICENSE_1_0.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE_1_0.txt; sourceTree = ""; }; + B3AEE123293F35AF0050BDB6 /* DotZLib.chm */ = {isa = PBXFileReference; lastKnownFileType = file; path = DotZLib.chm; sourceTree = ""; }; + B3AEE124293F35AF0050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE125293F35AF0050BDB6 /* DotZLib.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = DotZLib.sln; sourceTree = ""; }; + B3AEE128293F35AF0050BDB6 /* zlibvc.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibvc.vcxproj; sourceTree = ""; }; + B3AEE129293F35AF0050BDB6 /* testzlibdll.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlibdll.vcxproj.filters; sourceTree = ""; }; + B3AEE12A293F35AF0050BDB6 /* testzlib.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlib.vcxproj.filters; sourceTree = ""; }; + B3AEE12B293F35AF0050BDB6 /* zlibvc.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibvc.vcxproj.filters; sourceTree = ""; }; + B3AEE12C293F35AF0050BDB6 /* miniunz.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniunz.vcxproj; sourceTree = ""; }; + B3AEE12D293F35AF0050BDB6 /* testzlibdll.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlibdll.vcxproj; sourceTree = ""; }; + B3AEE12E293F35AF0050BDB6 /* zlibvc.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlibvc.sln; sourceTree = ""; }; + B3AEE12F293F35AF0050BDB6 /* minizip.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = minizip.vcxproj.filters; sourceTree = ""; }; + B3AEE130293F35AF0050BDB6 /* testzlib.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlib.vcxproj; sourceTree = ""; }; + B3AEE131293F35AF0050BDB6 /* zlibstat.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibstat.vcxproj.filters; sourceTree = ""; }; + B3AEE132293F35AF0050BDB6 /* zlib.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.rc; sourceTree = ""; }; + B3AEE133293F35AF0050BDB6 /* zlibstat.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibstat.vcxproj; sourceTree = ""; }; + B3AEE134293F35AF0050BDB6 /* zlibvc.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlibvc.def; sourceTree = ""; }; + B3AEE135293F35AF0050BDB6 /* miniunz.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniunz.vcxproj.filters; sourceTree = ""; }; + B3AEE136293F35AF0050BDB6 /* minizip.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = minizip.vcxproj; sourceTree = ""; }; + B3AEE138293F35AF0050BDB6 /* zlibvc.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlibvc.sln; sourceTree = ""; }; + B3AEE139293F35AF0050BDB6 /* zlibvc.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibvc.vcproj; sourceTree = ""; }; + B3AEE13A293F35AF0050BDB6 /* minizip.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = minizip.vcproj; sourceTree = ""; }; + B3AEE13B293F35AF0050BDB6 /* miniunz.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniunz.vcproj; sourceTree = ""; }; + B3AEE13C293F35AF0050BDB6 /* zlib.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.rc; sourceTree = ""; }; + B3AEE13D293F35AF0050BDB6 /* testzlibdll.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlibdll.vcproj; sourceTree = ""; }; + B3AEE13E293F35AF0050BDB6 /* zlibvc.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlibvc.def; sourceTree = ""; }; + B3AEE13F293F35AF0050BDB6 /* testzlib.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlib.vcproj; sourceTree = ""; }; + B3AEE140293F35AF0050BDB6 /* zlibstat.vcproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibstat.vcproj; sourceTree = ""; }; + B3AEE142293F35AF0050BDB6 /* zlibvc.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibvc.vcxproj; sourceTree = ""; }; + B3AEE143293F35AF0050BDB6 /* miniunz.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = miniunz.vcxproj; sourceTree = ""; }; + B3AEE144293F35AF0050BDB6 /* testzlibdll.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlibdll.vcxproj; sourceTree = ""; }; + B3AEE145293F35AF0050BDB6 /* zlibvc.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlibvc.sln; sourceTree = ""; }; + B3AEE146293F35AF0050BDB6 /* testzlib.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = testzlib.vcxproj; sourceTree = ""; }; + B3AEE147293F35AF0050BDB6 /* zlib.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.rc; sourceTree = ""; }; + B3AEE148293F35AF0050BDB6 /* zlibstat.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = zlibstat.vcxproj; sourceTree = ""; }; + B3AEE149293F35AF0050BDB6 /* zlibvc.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlibvc.def; sourceTree = ""; }; + B3AEE14A293F35AF0050BDB6 /* minizip.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = minizip.vcxproj; sourceTree = ""; }; + B3AEE14B293F35AF0050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE14D293F35AF0050BDB6 /* amd64-match.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = "amd64-match.S"; sourceTree = ""; }; + B3AEE14F293F35AF0050BDB6 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3AEE150293F35AF0050BDB6 /* MiniZip64_Changes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = MiniZip64_Changes.txt; sourceTree = ""; }; + B3AEE151293F35AF0050BDB6 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B3AEE152293F35AF0050BDB6 /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B3AEE153293F35AF0050BDB6 /* iowin32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iowin32.h; sourceTree = ""; }; + B3AEE154293F35AF0050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEE155293F35AF0050BDB6 /* ioapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + B3AEE156293F35AF0050BDB6 /* mztools.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; }; + B3AEE157293F35AF0050BDB6 /* MiniZip64_info.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = MiniZip64_info.txt; sourceTree = ""; }; + B3AEE158293F35AF0050BDB6 /* minizip.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = minizip.pc.in; sourceTree = ""; }; + B3AEE159293F35AF0050BDB6 /* minizip.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = minizip.1; sourceTree = ""; }; + B3AEE15A293F35AF0050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE15B293F35AF0050BDB6 /* crypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + B3AEE15C293F35AF0050BDB6 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B3AEE15D293F35AF0050BDB6 /* make_vms.com */ = {isa = PBXFileReference; lastKnownFileType = text; path = make_vms.com; sourceTree = ""; }; + B3AEE15E293F35B00050BDB6 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B3AEE15F293F35B00050BDB6 /* miniunzip.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = miniunzip.1; sourceTree = ""; }; + B3AEE160293F35B00050BDB6 /* mztools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; }; + B3AEE161293F35B00050BDB6 /* ioapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + B3AEE162293F35B00050BDB6 /* iowin32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iowin32.c; sourceTree = ""; }; + B3AEE163293F35B00050BDB6 /* minizip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minizip.c; sourceTree = ""; }; + B3AEE164293F35B00050BDB6 /* miniunz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = miniunz.c; sourceTree = ""; }; + B3AEE165293F35B00050BDB6 /* README.contrib */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.contrib; sourceTree = ""; }; + B3AEE167293F35B00050BDB6 /* ZLibConst.pas */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ZLibConst.pas; sourceTree = ""; }; + B3AEE168293F35B00050BDB6 /* ZLib.pas */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ZLib.pas; sourceTree = ""; }; + B3AEE169293F35B00050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE16A293F35B00050BDB6 /* zlibd32.mak */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = zlibd32.mak; sourceTree = ""; }; + B3AEE16C293F35B00050BDB6 /* inffix9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffix9.h; sourceTree = ""; }; + B3AEE16D293F35B00050BDB6 /* inftree9.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftree9.c; sourceTree = ""; }; + B3AEE16E293F35B00050BDB6 /* infback9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = infback9.h; sourceTree = ""; }; + B3AEE16F293F35B00050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE170293F35B00050BDB6 /* inflate9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate9.h; sourceTree = ""; }; + B3AEE171293F35B00050BDB6 /* infback9.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback9.c; sourceTree = ""; }; + B3AEE172293F35B00050BDB6 /* inftree9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftree9.h; sourceTree = ""; }; + B3AEE174293F35B00050BDB6 /* gvmat64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gvmat64.S; sourceTree = ""; }; + B3AEE176293F35B00050BDB6 /* testzlib.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = testzlib.txt; sourceTree = ""; }; + B3AEE177293F35B00050BDB6 /* testzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testzlib.c; sourceTree = ""; }; + B3AEE179293F35B00050BDB6 /* test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test.cpp; sourceTree = ""; }; + B3AEE17A293F35B00050BDB6 /* zfstream.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zfstream.cpp; sourceTree = ""; }; + B3AEE17B293F35B00050BDB6 /* zfstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zfstream.h; sourceTree = ""; }; + B3AEE17D293F35B00050BDB6 /* blast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blast.c; sourceTree = ""; }; + B3AEE17E293F35B00050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEE17F293F35B00050BDB6 /* test.pk */ = {isa = PBXFileReference; lastKnownFileType = file; path = test.pk; sourceTree = ""; }; + B3AEE180293F35B00050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE181293F35B00050BDB6 /* blast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blast.h; sourceTree = ""; }; + B3AEE182293F35B00050BDB6 /* test.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = test.txt; sourceTree = ""; }; + B3AEE184293F35B00050BDB6 /* Makefile.msc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.msc; sourceTree = ""; }; + B3AEE185293F35B00050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEE186293F35B00050BDB6 /* untgz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = untgz.c; sourceTree = ""; }; + B3AEE188293F35B00050BDB6 /* match.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = match.S; sourceTree = ""; }; + B3AEE189293F35B00050BDB6 /* README.686 */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.686; sourceTree = ""; }; + B3AEE18B293F35B00050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEE18C293F35B00050BDB6 /* puff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = puff.h; sourceTree = ""; }; + B3AEE18D293F35B00050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE18E293F35B00050BDB6 /* pufftest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pufftest.c; sourceTree = ""; }; + B3AEE18F293F35B00050BDB6 /* puff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = puff.c; sourceTree = ""; }; + B3AEE190293F35B00050BDB6 /* zeros.raw */ = {isa = PBXFileReference; lastKnownFileType = file; path = zeros.raw; sourceTree = ""; }; + B3AEE192293F35B00050BDB6 /* inffasx64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = inffasx64.asm; sourceTree = ""; }; + B3AEE193293F35B00050BDB6 /* bld_ml64.bat */ = {isa = PBXFileReference; lastKnownFileType = text; path = bld_ml64.bat; sourceTree = ""; }; + B3AEE194293F35B00050BDB6 /* gvmat64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = gvmat64.asm; sourceTree = ""; }; + B3AEE195293F35B00050BDB6 /* inffas8664.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffas8664.c; sourceTree = ""; }; + B3AEE196293F35B00050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE198293F35B00050BDB6 /* zfstream.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zfstream.cc; sourceTree = ""; }; + B3AEE199293F35B00050BDB6 /* zfstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zfstream.h; sourceTree = ""; }; + B3AEE19A293F35B00050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE19B293F35B00050BDB6 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3AEE19C293F35B00050BDB6 /* test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test.cc; sourceTree = ""; }; + B3AEE19E293F35B00050BDB6 /* inffast.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = inffast.S; sourceTree = ""; }; + B3AEE19F293F35B00050BDB6 /* inffas86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffas86.c; sourceTree = ""; }; + B3AEE1A1293F35B00050BDB6 /* zstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zstream.h; sourceTree = ""; }; + B3AEE1A2293F35B00050BDB6 /* zstream_test.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = zstream_test.cpp; sourceTree = ""; }; + B3AEE1A3293F35B00050BDB6 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3AEE1A4293F35B00050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE1A5293F35B00050BDB6 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3AEE1A6293F35B00050BDB6 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3AEE1A7293F35B00050BDB6 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3AEE1A8293F35B00050BDB6 /* zlib.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.in; sourceTree = ""; }; + B3AEE1A9293F35B00050BDB6 /* zlib2ansi */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = zlib2ansi; sourceTree = ""; }; + B3AEE1AA293F35B00050BDB6 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3AEE1AC293F35B00050BDB6 /* fitblk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fitblk.c; sourceTree = ""; }; + B3AEE1AD293F35B00050BDB6 /* enough.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = enough.c; sourceTree = ""; }; + B3AEE1AE293F35B00050BDB6 /* gzlog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzlog.h; sourceTree = ""; }; + B3AEE1AF293F35B00050BDB6 /* gzjoin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzjoin.c; sourceTree = ""; }; + B3AEE1B0293F35B00050BDB6 /* gun.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gun.c; sourceTree = ""; }; + B3AEE1B1293F35B00050BDB6 /* README.examples */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.examples; sourceTree = ""; }; + B3AEE1B2293F35B00050BDB6 /* zlib_how.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = zlib_how.html; sourceTree = ""; }; + B3AEE1B3293F35B00050BDB6 /* zpipe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zpipe.c; sourceTree = ""; }; + B3AEE1B4293F35B00050BDB6 /* gzlog.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlog.c; sourceTree = ""; }; + B3AEE1B5293F35B00050BDB6 /* zran.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zran.c; sourceTree = ""; }; + B3AEE1B6293F35B00050BDB6 /* gzappend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzappend.c; sourceTree = ""; }; + B3AEE1B7293F35B00050BDB6 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3AEE1B8293F35B00050BDB6 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3AEE1B9293F35B00050BDB6 /* make_vms.com */ = {isa = PBXFileReference; lastKnownFileType = text; path = make_vms.com; sourceTree = ""; }; + B3AEE1BB293F35B00050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEE1BC293F35B00050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE1BE293F35B00050BDB6 /* Makefile.sas */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.sas; sourceTree = ""; }; + B3AEE1BF293F35B00050BDB6 /* Makefile.pup */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.pup; sourceTree = ""; }; + B3AEE1C1293F35B00050BDB6 /* bndsrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = bndsrc; sourceTree = ""; }; + B3AEE1C2293F35B00050BDB6 /* zlib.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = zlib.inc; sourceTree = ""; }; + B3AEE1C3293F35B00050BDB6 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3AEE1C4293F35B00050BDB6 /* compile.clp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.clips; path = compile.clp; sourceTree = ""; }; + B3AEE1C5293F35B00050BDB6 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3AEE1C6293F35B00050BDB6 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3AEE1C7293F35B00050BDB6 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3AEE1C9293F35B00050BDB6 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3AEE1CA293F35B00050BDB6 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3AEE1CB293F35B00050BDB6 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3AEE1CC293F35B00050BDB6 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3AEE1CD293F35B00050BDB6 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3AEE1CE293F35B00050BDB6 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B3AEE1CF293F35B00050BDB6 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B3AEE1D0293F35B00050BDB6 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B3AEE1D1293F35B00050BDB6 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B3AEE1D3293F35B00050BDB6 /* VisualC.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = VisualC.txt; sourceTree = ""; }; + B3AEE1D4293F35B00050BDB6 /* Makefile.bor */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.bor; sourceTree = ""; }; + B3AEE1D5293F35B00050BDB6 /* Makefile.msc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.msc; sourceTree = ""; }; + B3AEE1D6293F35B00050BDB6 /* zlib.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.def; sourceTree = ""; }; + B3AEE1D7293F35B00050BDB6 /* DLL_FAQ.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = DLL_FAQ.txt; sourceTree = ""; }; + B3AEE1D8293F35B00050BDB6 /* README-WIN32.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-WIN32.txt"; sourceTree = ""; }; + B3AEE1D9293F35B00050BDB6 /* Makefile.gcc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.gcc; sourceTree = ""; }; + B3AEE1DA293F35B00050BDB6 /* zlib1.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib1.rc; sourceTree = ""; }; + B3AEE1DB293F35B00050BDB6 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3AEE1DC293F35B00050BDB6 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3AEE1DD293F35B00050BDB6 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3AEE1DE293F35B00050BDB6 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3AEE1DF293F35B00050BDB6 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3AEE1E1293F35B00050BDB6 /* watcom_f.mak */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = watcom_f.mak; sourceTree = ""; }; + B3AEE1E2293F35B00050BDB6 /* watcom_l.mak */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = watcom_l.mak; sourceTree = ""; }; + B3AEE1E3293F35B00050BDB6 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3AEE1E4293F35B00050BDB6 /* Makefile.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.libretro; sourceTree = ""; }; + B3AEE1E5293F35B00050BDB6 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3AEE1E7293F35B00050BDB6 /* rzx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rzx.c; sourceTree = ""; }; + B3AEE1E8293F35B00050BDB6 /* plusd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plusd.c; sourceTree = ""; }; + B3AEE1E9293F35B00050BDB6 /* accessor.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = accessor.pl; sourceTree = ""; }; + B3AEE1EA293F35B00050BDB6 /* snp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snp.c; sourceTree = ""; }; + B3AEE1EB293F35B00050BDB6 /* szx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = szx.c; sourceTree = ""; }; + B3AEE1EC293F35B00050BDB6 /* buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = buffer.c; sourceTree = ""; }; + B3AEE1ED293F35B00050BDB6 /* make-perl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "make-perl.c"; sourceTree = ""; }; + B3AEE1EE293F35B00050BDB6 /* install-sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-sh"; sourceTree = ""; }; + B3AEE1EF293F35B00050BDB6 /* z80em.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80em.c; sourceTree = ""; }; + B3AEE1F0293F35B00050BDB6 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3AEE1F1293F35B00050BDB6 /* tzx_read.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tzx_read.c; sourceTree = ""; }; + B3AEE1F2293F35B00050BDB6 /* ltmain.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ltmain.sh; sourceTree = ""; }; + B3AEE1F3293F35B00050BDB6 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3AEE1F4293F35B00050BDB6 /* zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zlib.c; sourceTree = ""; }; + B3AEE1F6293F35B00050BDB6 /* empty.z80 */ = {isa = PBXFileReference; lastKnownFileType = file; path = empty.z80; sourceTree = ""; }; + B3AEE1F8293F35B00050BDB6 /* CFRP.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = CFRP.szx; sourceTree = ""; }; + B3AEE1F9293F35B00050BDB6 /* ATRP-uncompressed.szx.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = "ATRP-uncompressed.szx.gz"; sourceTree = ""; }; + B3AEE1FA293F35B00050BDB6 /* ZXPR.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = ZXPR.szx; sourceTree = ""; }; + B3AEE1FB293F35B00050BDB6 /* AMXM.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = AMXM.szx; sourceTree = ""; }; + B3AEE1FC293F35B00050BDB6 /* SIDE.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = SIDE.szx; sourceTree = ""; }; + B3AEE1FD293F35B00050BDB6 /* SPCR.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = SPCR.szx; sourceTree = ""; }; + B3AEE1FE293F35B00050BDB6 /* JOY.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = JOY.szx; sourceTree = ""; }; + B3AEE1FF293F35B00050BDB6 /* ZXCF.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = ZXCF.szx; sourceTree = ""; }; + B3AEE200293F35B00050BDB6 /* SCLD.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = SCLD.szx; sourceTree = ""; }; + B3AEE201293F35B00050BDB6 /* ZMMC.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = ZMMC.szx; sourceTree = ""; }; + B3AEE202293F35B00050BDB6 /* KEYB.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = KEYB.szx; sourceTree = ""; }; + B3AEE203293F35B00050BDB6 /* RAMP-uncompressed.szx.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = "RAMP-uncompressed.szx.gz"; sourceTree = ""; }; + B3AEE204293F35B00050BDB6 /* ZXAT.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = ZXAT.szx; sourceTree = ""; }; + B3AEE205293F35B00050BDB6 /* ATRP.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = ATRP.szx; sourceTree = ""; }; + B3AEE206293F35B00050BDB6 /* AY.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = AY.szx; sourceTree = ""; }; + B3AEE207293F35B00050BDB6 /* COVX.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = COVX.szx; sourceTree = ""; }; + B3AEE208293F35B00050BDB6 /* RAMP.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = RAMP.szx; sourceTree = ""; }; + B3AEE209293F35B00050BDB6 /* Z80R.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = Z80R.szx; sourceTree = ""; }; + B3AEE20A293F35B00050BDB6 /* DRUM.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = DRUM.szx; sourceTree = ""; }; + B3AEE20B293F35B00050BDB6 /* CFRP-uncompressed.szx.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = "CFRP-uncompressed.szx.gz"; sourceTree = ""; }; + B3AEE20C293F35B00050BDB6 /* szx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = szx.c; sourceTree = ""; }; + B3AEE20D293F35B00050BDB6 /* trailing-pause-block.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "trailing-pause-block.tzx"; sourceTree = ""; }; + B3AEE20E293F35B00050BDB6 /* invalid-hardwareinfo.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "invalid-hardwareinfo.tzx"; sourceTree = ""; }; + B3AEE20F293F35B00050BDB6 /* no-pilot-gdb.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "no-pilot-gdb.tzx"; sourceTree = ""; }; + B3AEE210293F35B00050BDB6 /* empty.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = empty.szx; sourceTree = ""; }; + B3AEE211293F35B00050BDB6 /* loop2.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = loop2.tzx; sourceTree = ""; }; + B3AEE212293F35B00050BDB6 /* turbo-zeropilot.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "turbo-zeropilot.tzx"; sourceTree = ""; }; + B3AEE213293F35B00050BDB6 /* jump.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = jump.tzx; sourceTree = ""; }; + B3AEE214293F35B00050BDB6 /* plus3.z80 */ = {isa = PBXFileReference; lastKnownFileType = file; path = plus3.z80; sourceTree = ""; }; + B3AEE215293F35B00050BDB6 /* invalid-gdb.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "invalid-gdb.tzx"; sourceTree = ""; }; + B3AEE216293F35B00050BDB6 /* raw-data-block.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "raw-data-block.tzx"; sourceTree = ""; }; + B3AEE217293F35B00050BDB6 /* sp-ffff.sna.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = "sp-ffff.sna.gz"; sourceTree = ""; }; + B3AEE218293F35B00050BDB6 /* test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = test.h; sourceTree = ""; }; + B3AEE219293F35B00050BDB6 /* invalid-archiveinfo.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "invalid-archiveinfo.tzx"; sourceTree = ""; }; + B3AEE21A293F35B00050BDB6 /* invalid.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = invalid.gz; sourceTree = ""; }; + B3AEE21B293F35B00050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE21C293F35B00050BDB6 /* standard-tap.tap */ = {isa = PBXFileReference; lastKnownFileType = file; path = "standard-tap.tap"; sourceTree = ""; }; + B3AEE21D293F35B00050BDB6 /* empty.csw */ = {isa = PBXFileReference; lastKnownFileType = file; path = empty.csw; sourceTree = ""; }; + B3AEE21E293F35B00050BDB6 /* loopend.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = loopend.tzx; sourceTree = ""; }; + B3AEE21F293F35B00050BDB6 /* invalid.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = invalid.tzx; sourceTree = ""; }; + B3AEE220293F35B00050BDB6 /* zero-tail.pzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "zero-tail.pzx"; sourceTree = ""; }; + B3AEE221293F35B00050BDB6 /* test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = ""; }; + B3AEE222293F35B00050BDB6 /* test_edges.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_edges.c; sourceTree = ""; }; + B3AEE223293F35B00050BDB6 /* sp-2000.sna.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = "sp-2000.sna.gz"; sourceTree = ""; }; + B3AEE224293F35B00050BDB6 /* complete-tzx.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "complete-tzx.pl"; sourceTree = ""; }; + B3AEE225293F35B00050BDB6 /* empty-drb.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "empty-drb.tzx"; sourceTree = ""; }; + B3AEE226293F35B00050BDB6 /* invalid.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = invalid.szx; sourceTree = ""; }; + B3AEE227293F35B00050BDB6 /* writeprotected.mdr */ = {isa = PBXFileReference; lastKnownFileType = file; path = writeprotected.mdr; sourceTree = ""; }; + B3AEE228293F35B00050BDB6 /* loop.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = loop.tzx; sourceTree = ""; }; + B3AEE229293F35B00050BDB6 /* random.szx */ = {isa = PBXFileReference; lastKnownFileType = file; path = random.szx; sourceTree = ""; }; + B3AEE22A293F35B00050BDB6 /* invalid-warajevo-blockoffset.tap */ = {isa = PBXFileReference; lastKnownFileType = file; path = "invalid-warajevo-blockoffset.tap"; sourceTree = ""; }; + B3AEE22B293F35B00050BDB6 /* invalid-custominfo.tzx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "invalid-custominfo.tzx"; sourceTree = ""; }; + B3AEE22C293F35B00050BDB6 /* edges.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = edges.c; sourceTree = ""; }; + B3AEE22D293F35B00050BDB6 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3AEE22E293F35B00050BDB6 /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B3AEE22F293F35B00050BDB6 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3AEE230293F35B00050BDB6 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3AEE231293F35B00050BDB6 /* timings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timings.c; sourceTree = ""; }; + B3AEE232293F35B00050BDB6 /* tap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tap.c; sourceTree = ""; }; + B3AEE233293F35B00050BDB6 /* generate.pl.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = generate.pl.in; sourceTree = ""; }; + B3AEE234293F35B00050BDB6 /* tape_block.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tape_block.h; sourceTree = ""; }; + B3AEE235293F35B00050BDB6 /* tape_accessors.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = tape_accessors.pl; sourceTree = ""; }; + B3AEE236293F35B00050BDB6 /* internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internals.h; sourceTree = ""; }; + B3AEE237293F35B00050BDB6 /* csw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = csw.c; sourceTree = ""; }; + B3AEE238293F35B00050BDB6 /* creator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = creator.c; sourceTree = ""; }; + B3AEE239293F35B00050BDB6 /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = config.h.in; sourceTree = ""; }; + B3AEE23A293F35B00050BDB6 /* sna.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sna.c; sourceTree = ""; }; + B3AEE23B293F35B00050BDB6 /* config.guess */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.guess; sourceTree = ""; }; + B3AEE23C293F35B00050BDB6 /* z80.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = z80.c; sourceTree = ""; }; + B3AEE23D293F35B00050BDB6 /* depcomp */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = depcomp; sourceTree = ""; }; + B3AEE23E293F35B00050BDB6 /* missing */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = missing; sourceTree = ""; }; + B3AEE23F293F35B00050BDB6 /* symbol_table.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = symbol_table.c; sourceTree = ""; }; + B3AEE240293F35B10050BDB6 /* tape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tape.c; sourceTree = ""; }; + B3AEE241293F35B10050BDB6 /* snapshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snapshot.c; sourceTree = ""; }; + B3AEE242293F35B10050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE243293F35B10050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE244293F35B10050BDB6 /* buffer_license.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = buffer_license.txt; sourceTree = ""; }; + B3AEE245293F35B10050BDB6 /* windres.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = windres.rc; sourceTree = ""; }; + B3AEE246293F35B10050BDB6 /* config.sub */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = config.sub; sourceTree = ""; }; + B3AEE247293F35B10050BDB6 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3AEE248293F35B10050BDB6 /* snap_accessors.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = snap_accessors.txt; sourceTree = ""; }; + B3AEE249293F35B10050BDB6 /* tzx_write.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tzx_write.c; sourceTree = ""; }; + B3AEE24A293F35B10050BDB6 /* libspectrum.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = libspectrum.pc.in; sourceTree = ""; }; + B3AEE24B293F35B10050BDB6 /* sp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sp.c; sourceTree = ""; }; + B3AEE24C293F35B10050BDB6 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3AEE24D293F35B10050BDB6 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B3AEE24E293F35B10050BDB6 /* libspectrum.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libspectrum.c; sourceTree = ""; }; + B3AEE24F293F35B10050BDB6 /* libspectrum.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = libspectrum.h.in; sourceTree = ""; }; + B3AEE250293F35B10050BDB6 /* microdrive.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = microdrive.c; sourceTree = ""; }; + B3AEE251293F35B10050BDB6 /* tape_accessors.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tape_accessors.c; sourceTree = ""; }; + B3AEE253293F35B10050BDB6 /* ltversion.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltversion.m4; sourceTree = ""; }; + B3AEE254293F35B10050BDB6 /* pkg.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = pkg.m4; sourceTree = ""; }; + B3AEE255293F35B10050BDB6 /* libtool.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = libtool.m4; sourceTree = ""; }; + B3AEE256293F35B10050BDB6 /* ltoptions.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltoptions.m4; sourceTree = ""; }; + B3AEE257293F35B10050BDB6 /* ltsugar.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ltsugar.m4; sourceTree = ""; }; + B3AEE258293F35B10050BDB6 /* audiofile.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = audiofile.m4; sourceTree = ""; }; + B3AEE259293F35B10050BDB6 /* ax_create_stdint_h.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = ax_create_stdint_h.m4; sourceTree = ""; }; + B3AEE25A293F35B10050BDB6 /* lt~obsolete.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lt~obsolete.m4"; sourceTree = ""; }; + B3AEE25C293F35B10050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE25D293F35B10050BDB6 /* libspectrum.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = libspectrum.txt; sourceTree = ""; }; + B3AEE25E293F35B10050BDB6 /* libspectrum.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = libspectrum.3; sourceTree = ""; }; + B3AEE25F293F35B10050BDB6 /* cvs-tags */ = {isa = PBXFileReference; lastKnownFileType = text; path = "cvs-tags"; sourceTree = ""; }; + B3AEE260293F35B10050BDB6 /* wav.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wav.c; sourceTree = ""; }; + B3AEE261293F35B10050BDB6 /* utilities.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utilities.c; sourceTree = ""; }; + B3AEE262293F35B10050BDB6 /* mmc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mmc.c; sourceTree = ""; }; + B3AEE263293F35B10050BDB6 /* THANKS */ = {isa = PBXFileReference; lastKnownFileType = text; path = THANKS; sourceTree = ""; }; + B3AEE264293F35B10050BDB6 /* tape_block.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tape_block.c; sourceTree = ""; }; + B3AEE265293F35B10050BDB6 /* ide.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ide.c; sourceTree = ""; }; + B3AEE267293F35B10050BDB6 /* glock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glock.c; sourceTree = ""; }; + B3AEE268293F35B10050BDB6 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3AEE269293F35B10050BDB6 /* garray.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = garray.c; sourceTree = ""; }; + B3AEE26A293F35B10050BDB6 /* gslist.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gslist.c; sourceTree = ""; }; + B3AEE26B293F35B10050BDB6 /* ghash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ghash.c; sourceTree = ""; }; + B3AEE26C293F35B10050BDB6 /* libspectrum.qpg.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = libspectrum.qpg.in; sourceTree = ""; }; + B3AEE26D293F35B10050BDB6 /* zxs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zxs.c; sourceTree = ""; }; + B3AEE26E293F35B10050BDB6 /* dck.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dck.c; sourceTree = ""; }; + B3AEE26F293F35B10050BDB6 /* crypto.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crypto.c; sourceTree = ""; }; + B3AEE270293F35B10050BDB6 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3AEE271293F35B10050BDB6 /* warajevo_read.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = warajevo_read.c; sourceTree = ""; }; + B3AEE272293F35B10050BDB6 /* aclocal.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = aclocal.m4; sourceTree = ""; }; + B3AEE273293F35B10050BDB6 /* tape_set.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = tape_set.pl; sourceTree = ""; }; + B3AEE274293F35B10050BDB6 /* dll.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dll.c; sourceTree = ""; }; + B3AEE275293F35B10050BDB6 /* tape_accessors.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = tape_accessors.txt; sourceTree = ""; }; + B3AEE276293F35B10050BDB6 /* bzip2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bzip2.c; sourceTree = ""; }; + B3AEE277293F35B10050BDB6 /* tape_set.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tape_set.c; sourceTree = ""; }; + B3AEE278293F35B10050BDB6 /* pzx_read.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pzx_read.c; sourceTree = ""; }; + B3AEE279293F35B10050BDB6 /* autogen.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = autogen.sh; sourceTree = ""; }; + B3AEE27A293F35B10050BDB6 /* snap_accessors.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snap_accessors.c; sourceTree = ""; }; + B3AEE27B293F35B10050BDB6 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3AEE27D293F35B10050BDB6 /* Makefile.linux_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.linux_x86_64; sourceTree = ""; }; + B3AEE27E293F35B10050BDB6 /* Makefile.osx_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.osx_x86; sourceTree = ""; }; + B3AEE27F293F35B10050BDB6 /* Makefile.linux-portable_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile.linux-portable_x86_64"; sourceTree = ""; }; + B3AEE280293F35B10050BDB6 /* Makefile.windows_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_x86; sourceTree = ""; }; + B3AEE281293F35B10050BDB6 /* Makefile.linux_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.linux_x86; sourceTree = ""; }; + B3AEE282293F35B10050BDB6 /* Makefile.rules */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.rules; sourceTree = ""; }; + B3AEE283293F35B10050BDB6 /* Makefile.ps3_ppc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.ps3_ppc; sourceTree = ""; }; + B3AEE284293F35B10050BDB6 /* Makefile.wii_ppc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.wii_ppc; sourceTree = ""; }; + B3AEE285293F35B10050BDB6 /* Makefile.linux-portable_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile.linux-portable_x86"; sourceTree = ""; }; + B3AEE286293F35B10050BDB6 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3AEE287293F35B10050BDB6 /* Makefile.vita_arm */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.vita_arm; sourceTree = ""; }; + B3AEE288293F35B10050BDB6 /* Makefile.android_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.android_x86; sourceTree = ""; }; + B3AEE289293F35B10050BDB6 /* Makefile.mingw_x86 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mingw_x86; sourceTree = ""; }; + B3AEE28A293F35B10050BDB6 /* Makefile.windows_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.windows_x86_64; sourceTree = ""; }; + B3AEE28B293F35B10050BDB6 /* Makefile.android_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.android_x86_64; sourceTree = ""; }; + B3AEE28C293F35B10050BDB6 /* Makefile.android_armeabi */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.android_armeabi; sourceTree = ""; }; + B3AEE28D293F35B10050BDB6 /* Makefile.mingw_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.mingw_x86_64; sourceTree = ""; }; + B3AEE28E293F35B10050BDB6 /* Makefile.android_armeabi-v7a */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile.android_armeabi-v7a"; sourceTree = ""; }; + B3AEE28F293F35B10050BDB6 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3AEE291293F35B10050BDB6 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3AEE292293F35B10050BDB6 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3AEE293293F35B10050BDB6 /* Makefile.android_arm64-v8a */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile.android_arm64-v8a"; sourceTree = ""; }; + B3AEE294293F35B10050BDB6 /* Makefile.osx_x86_64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.osx_x86_64; sourceTree = ""; }; + B3AEE295293F35B10050BDB6 /* Makefile.android_mips64 */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.android_mips64; sourceTree = ""; }; + B3AEE296293F35B10050BDB6 /* Makefile.android_mips */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.android_mips; sourceTree = ""; }; + B3AEE297293F35B10050BDB6 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3AEE299293F35B10050BDB6 /* bzmore */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = bzmore; sourceTree = ""; }; + B3AEE29A293F35B10050BDB6 /* bzgrep */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = bzgrep; sourceTree = ""; }; + B3AEE29B293F35B10050BDB6 /* makefile.msc */ = {isa = PBXFileReference; lastKnownFileType = text; path = makefile.msc; sourceTree = ""; }; + B3AEE29C293F35B10050BDB6 /* bzmore.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = bzmore.1; sourceTree = ""; }; + B3AEE29D293F35B10050BDB6 /* randtable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = randtable.c; sourceTree = ""; }; + B3AEE29E293F35B10050BDB6 /* bzdiff */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = bzdiff; sourceTree = ""; }; + B3AEE29F293F35B10050BDB6 /* bzip.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = bzip.css; sourceTree = ""; }; + B3AEE2A0293F35B10050BDB6 /* bz-common.xsl */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "bz-common.xsl"; sourceTree = ""; }; + B3AEE2A1293F35B10050BDB6 /* mk251.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mk251.c; sourceTree = ""; }; + B3AEE2A2293F35B10050BDB6 /* xmlproc.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = xmlproc.sh; sourceTree = ""; }; + B3AEE2A3293F35B10050BDB6 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3AEE2A4293F35B10050BDB6 /* libbz2.def */ = {isa = PBXFileReference; lastKnownFileType = text; path = libbz2.def; sourceTree = ""; }; + B3AEE2A5293F35B10050BDB6 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3AEE2A6293F35B10050BDB6 /* decompress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = decompress.c; sourceTree = ""; }; + B3AEE2A7293F35B10050BDB6 /* bzdiff.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = bzdiff.1; sourceTree = ""; }; + B3AEE2A8293F35B10050BDB6 /* words0 */ = {isa = PBXFileReference; lastKnownFileType = text; path = words0; sourceTree = ""; }; + B3AEE2A9293F35B10050BDB6 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3AEE2AA293F35B10050BDB6 /* bzlib_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bzlib_private.h; sourceTree = ""; }; + B3AEE2AB293F35B10050BDB6 /* CHANGES */ = {isa = PBXFileReference; lastKnownFileType = text; path = CHANGES; sourceTree = ""; }; + B3AEE2AC293F35B10050BDB6 /* words1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = words1; sourceTree = ""; }; + B3AEE2AD293F35B10050BDB6 /* bzlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bzlib.h; sourceTree = ""; }; + B3AEE2AE293F35B10050BDB6 /* entities.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = entities.xml; sourceTree = ""; }; + B3AEE2AF293F35B10050BDB6 /* bzip2.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = bzip2.txt; sourceTree = ""; }; + B3AEE2B0293F35B10050BDB6 /* format.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = format.pl; sourceTree = ""; }; + B3AEE2B1293F35B10050BDB6 /* bzip2.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = bzip2.1; sourceTree = ""; }; + B3AEE2B2293F35B10050BDB6 /* blocksort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blocksort.c; sourceTree = ""; }; + B3AEE2B3293F35B10050BDB6 /* huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = huffman.c; sourceTree = ""; }; + B3AEE2B4293F35B10050BDB6 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3AEE2B5293F35B10050BDB6 /* spewG.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spewG.c; sourceTree = ""; }; + B3AEE2B6293F35B10050BDB6 /* README.COMPILATION.PROBLEMS */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.COMPILATION.PROBLEMS; sourceTree = ""; }; + B3AEE2B7293F35B10050BDB6 /* bzgrep.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = bzgrep.1; sourceTree = ""; }; + B3AEE2B8293F35B10050BDB6 /* dlltest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlltest.c; sourceTree = ""; }; + B3AEE2B9293F35B10050BDB6 /* manual.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = manual.xml; sourceTree = ""; }; + B3AEE2BA293F35B10050BDB6 /* sample3.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = sample3.bz2; sourceTree = ""; }; + B3AEE2BB293F35B10050BDB6 /* bzip2recover.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bzip2recover.c; sourceTree = ""; }; + B3AEE2BC293F35B10050BDB6 /* crctable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crctable.c; sourceTree = ""; }; + B3AEE2BD293F35B10050BDB6 /* sample2.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = sample2.bz2; sourceTree = ""; }; + B3AEE2BE293F35B10050BDB6 /* bzip2.1.preformatted */ = {isa = PBXFileReference; lastKnownFileType = file; path = bzip2.1.preformatted; sourceTree = ""; }; + B3AEE2BF293F35B10050BDB6 /* Makefile-libbz2_so */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile-libbz2_so"; sourceTree = ""; }; + B3AEE2C0293F35B10050BDB6 /* unzcrash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzcrash.c; sourceTree = ""; }; + B3AEE2C1293F35B10050BDB6 /* bz-html.xsl */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "bz-html.xsl"; sourceTree = ""; }; + B3AEE2C2293F35B10050BDB6 /* bz-fo.xsl */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "bz-fo.xsl"; sourceTree = ""; }; + B3AEE2C3293F35B10050BDB6 /* sample1.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = sample1.bz2; sourceTree = ""; }; + B3AEE2C4293F35B10050BDB6 /* manual.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = manual.pdf; sourceTree = ""; }; + B3AEE2C5293F35B10050BDB6 /* bzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bzlib.c; sourceTree = ""; }; + B3AEE2C6293F35B10050BDB6 /* words3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = words3; sourceTree = ""; }; + B3AEE2C7293F35B10050BDB6 /* dlltest.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = dlltest.dsp; sourceTree = ""; }; + B3AEE2C8293F35B10050BDB6 /* sample1.ref */ = {isa = PBXFileReference; lastKnownFileType = file; path = sample1.ref; sourceTree = ""; }; + B3AEE2C9293F35B10050BDB6 /* sample3.ref */ = {isa = PBXFileReference; lastKnownFileType = text; path = sample3.ref; sourceTree = ""; }; + B3AEE2CA293F35B10050BDB6 /* manual.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = manual.html; sourceTree = ""; }; + B3AEE2CB293F35B10050BDB6 /* sample2.ref */ = {isa = PBXFileReference; lastKnownFileType = file; path = sample2.ref; sourceTree = ""; }; + B3AEE2CC293F35B10050BDB6 /* words2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = words2; sourceTree = ""; }; + B3AEE2CD293F35B10050BDB6 /* README.XML.STUFF */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.XML.STUFF; sourceTree = ""; }; + B3AEE2CE293F35B10050BDB6 /* bzip2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bzip2.c; sourceTree = ""; }; + B3AEE2CF293F35B10050BDB6 /* manual.ps */ = {isa = PBXFileReference; lastKnownFileType = text; path = manual.ps; sourceTree = ""; }; + B3AEE2D0293F35B10050BDB6 /* libbz2.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = libbz2.dsp; sourceTree = ""; }; + B3AEE2D2293F35B10050BDB6 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3AEE2D3293F35B10050BDB6 /* missing.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = missing.c; sourceTree = ""; }; + B3AEE2D5293F35B10050BDB6 /* display.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = display.c; sourceTree = ""; }; + B3AEE2D6293F35B10050BDB6 /* mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mouse.c; sourceTree = ""; }; + B3AEE2D7293F35B10050BDB6 /* timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = timer.c; sourceTree = ""; }; + B3AEE2D8293F35B10050BDB6 /* paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = paths.c; sourceTree = ""; }; + B3AEE2D9293F35B10050BDB6 /* keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard.c; sourceTree = ""; }; + B3AEE2DA293F35B10050BDB6 /* osname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osname.c; sourceTree = ""; }; + B3AEE2DB293F35B10050BDB6 /* fat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fat.c; sourceTree = ""; }; + B3AEE2DC293F35B10050BDB6 /* socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = socket.c; sourceTree = ""; }; + B3AEE2DD293F35B10050BDB6 /* dir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir.c; sourceTree = ""; }; + B3AEE2DE293F35B10050BDB6 /* sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sound.c; sourceTree = ""; }; + B3AEE2DF293F35B10050BDB6 /* ui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ui.c; sourceTree = ""; }; + B3AEE2E0293F35B10050BDB6 /* file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file.c; sourceTree = ""; }; + B3AEE2E1293F35B10050BDB6 /* joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = joystick.c; sourceTree = ""; }; + B3AEE2E2293F35B10050BDB6 /* fat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fat.h; sourceTree = ""; }; + B3AEE2E3293F35B10050BDB6 /* libspectrum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libspectrum.h; sourceTree = ""; }; + B3AEE2E5293F35B10050BDB6 /* getopt1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = getopt1.c; sourceTree = ""; }; + B3AEE2E6293F35B10050BDB6 /* scalers32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scalers32.c; sourceTree = ""; }; + B3AEE2E7293F35B10050BDB6 /* snapshot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snapshot.c; sourceTree = ""; }; + B3AEE2E8293F35B10050BDB6 /* utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = ""; }; + B3AEE2E9293F35B10050BDB6 /* error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + B3AEE2EA293F35B10050BDB6 /* scalers16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scalers16.c; sourceTree = ""; }; + B3AEE2EB293F35B10050BDB6 /* settings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = settings.c; sourceTree = ""; }; + B3AEE2EC293F35B10050BDB6 /* ui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ui.c; sourceTree = ""; }; + B3AEE2ED293F35B10050BDB6 /* getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = getopt.c; sourceTree = ""; }; + B3AEE2EE293F35B10050BDB6 /* fuse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fuse.c; sourceTree = ""; }; + B3AEE2EF293F35B10050BDB6 /* keyboverlay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboverlay.h; sourceTree = ""; }; + B3AEE2F0293F35B10050BDB6 /* coreopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = coreopt.c; sourceTree = ""; }; + B3AEE2F1293F35B10050BDB6 /* config_fuse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_fuse.h; sourceTree = ""; }; + B3AEE2F2293F35B10050BDB6 /* externs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = externs.h; sourceTree = ""; }; + B3AEE2F3293F35B10050BDB6 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3AEE2F4293F35B10050BDB6 /* config_libspectrum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_libspectrum.h; sourceTree = ""; }; + B3AEE2F5293F35B10050BDB6 /* coreopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coreopt.h; sourceTree = ""; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVFuse.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVFuse.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3EBB1FD2872B1A000EAEB37 /* libFuse.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libFuse-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVFuse */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVFuse.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVFuse; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVFuseCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVFuseCore.h */, + B37022C6287253B300B3F6DA /* PVFuseCore.mm */, + ); + path = PVFuseCore; + sourceTree = ""; + }; + B3AEDE30293F35AC0050BDB6 /* fuse-libretro */ = { + isa = PBXGroup; + children = ( + B3AEE1E5293F35B00050BDB6 /* .gitignore */, + B3AEDE31293F35AC0050BDB6 /* LICENSE */, + B3AEDE32293F35AC0050BDB6 /* Makefile */, + B3AEE1E4293F35B00050BDB6 /* Makefile.libretro */, + B3AEE1E3293F35B00050BDB6 /* README.md */, + B3AEE27B293F35B10050BDB6 /* .gitlab-ci.yml */, + B3AEE297293F35B10050BDB6 /* .travis.yml */, + B3AEDE33293F35AC0050BDB6 /* _BASIC.z80 */, + B3AEE27C293F35B10050BDB6 /* build */, + B3AEE298293F35B10050BDB6 /* bzip2 */, + B3AEE0CE293F35AF0050BDB6 /* etc */, + B3AEDE34293F35AC0050BDB6 /* fuse */, + B3AEE1E6293F35B00050BDB6 /* libspectrum */, + B3AEE2D1293F35B10050BDB6 /* src */, + B3AEE0D2293F35AF0050BDB6 /* zlib */, + ); + path = "fuse-libretro"; + sourceTree = ""; + }; + B3AEDE34293F35AC0050BDB6 /* fuse */ = { + isa = PBXGroup; + children = ( + B3AEDE35293F35AC0050BDB6 /* spectrum.c */, + B3AEDE36293F35AC0050BDB6 /* periph.c */, + B3AEDE37293F35AC0050BDB6 /* loader.c */, + B3AEDE38293F35AC0050BDB6 /* menu_data.pl */, + B3AEDE39293F35AC0050BDB6 /* rzx.c */, + B3AEDE3A293F35AC0050BDB6 /* man */, + B3AEDE3D293F35AC0050BDB6 /* settings.dat */, + B3AEDE3E293F35AC0050BDB6 /* sound.h */, + B3AEDE3F293F35AC0050BDB6 /* ui */, + B3AEDEFD293F35AD0050BDB6 /* utils.h */, + B3AEDEFE293F35AD0050BDB6 /* display.c */, + B3AEDEFF293F35AD0050BDB6 /* input.h */, + B3AEDF00293F35AD0050BDB6 /* install-sh */, + B3AEDF01293F35AD0050BDB6 /* configure.ac */, + B3AEDF02293F35AD0050BDB6 /* compat */, + B3AEDF22293F35AD0050BDB6 /* INSTALL */, + B3AEDF23293F35AD0050BDB6 /* phantom_typist.c */, + B3AEDF24293F35AD0050BDB6 /* profile.h */, + B3AEDF25293F35AD0050BDB6 /* ltmain.sh */, + B3AEDF26293F35AD0050BDB6 /* menu.c */, + B3AEDF27293F35AD0050BDB6 /* screenshot.h */, + B3AEDF28293F35AD0050BDB6 /* settings.h */, + B3AEDF29293F35AD0050BDB6 /* configure */, + B3AEDF2A293F35AD0050BDB6 /* ylwrap */, + B3AEDF2B293F35AD0050BDB6 /* memory_pages.c */, + B3AEDF2C293F35AD0050BDB6 /* machine.h */, + B3AEDF2D293F35AD0050BDB6 /* keyboard.c */, + B3AEDF2E293F35AD0050BDB6 /* ChangeLog */, + B3AEDF2F293F35AD0050BDB6 /* event.h */, + B3AEDF30293F35AD0050BDB6 /* AUTHORS */, + B3AEDF31293F35AD0050BDB6 /* z80 */, + B3AEDF4A293F35AD0050BDB6 /* rectangle.c */, + B3AEDF4B293F35AD0050BDB6 /* movie.h */, + B3AEDF4C293F35AD0050BDB6 /* module.c */, + B3AEDF4D293F35AD0050BDB6 /* mempool.c */, + B3AEDF4E293F35AD0050BDB6 /* perl */, + B3AEDF54293F35AD0050BDB6 /* roms */, + B3AEDF7E293F35AD0050BDB6 /* timer */, + B3AEDF84293F35AD0050BDB6 /* movie_tables.h */, + B3AEDF85293F35AD0050BDB6 /* fuse.font */, + B3AEDF86293F35AD0050BDB6 /* psg.h */, + B3AEDF87293F35AD0050BDB6 /* slt.h */, + B3AEDF88293F35AD0050BDB6 /* unittests */, + B3AEDF8C293F35AD0050BDB6 /* config.h.in */, + B3AEDF8D293F35AD0050BDB6 /* config.guess */, + B3AEDF8E293F35AD0050BDB6 /* svg.h */, + B3AEDF8F293F35AD0050BDB6 /* depcomp */, + B3AEDF90293F35AD0050BDB6 /* fuse.h */, + B3AEDF91293F35AD0050BDB6 /* options.h */, + B3AEDF92293F35AD0050BDB6 /* missing */, + B3AEDF93293F35AE0050BDB6 /* tape.c */, + B3AEDF94293F35AE0050BDB6 /* snapshot.c */, + B3AEDF95293F35AE0050BDB6 /* README */, + B3AEDF96293F35AE0050BDB6 /* Makefile.am */, + B3AEDF97293F35AE0050BDB6 /* windres.rc */, + B3AEDF98293F35AE0050BDB6 /* input.c */, + B3AEDF99293F35AE0050BDB6 /* display.h */, + B3AEDF9A293F35AE0050BDB6 /* config.sub */, + B3AEDF9B293F35AE0050BDB6 /* uidisplay.c */, + B3AEDF9C293F35AE0050BDB6 /* COPYING */, + B3AEDF9D293F35AE0050BDB6 /* utils.c */, + B3AEDF9E293F35AE0050BDB6 /* loader.h */, + B3AEDF9F293F35AE0050BDB6 /* periph.h */, + B3AEDFA0293F35AE0050BDB6 /* spectrum.h */, + B3AEDFA1293F35AE0050BDB6 /* .gitignore */, + B3AEDFA2293F35AE0050BDB6 /* sound.c */, + B3AEDFA3293F35AE0050BDB6 /* machines */, + B3AEDFBE293F35AE0050BDB6 /* rzx.h */, + B3AEDFBF293F35AE0050BDB6 /* event.c */, + B3AEDFC0293F35AE0050BDB6 /* keyboard.h */, + B3AEDFC1293F35AE0050BDB6 /* memory_pages.h */, + B3AEDFC2293F35AE0050BDB6 /* machine.c */, + B3AEDFC3293F35AE0050BDB6 /* screenshot.c */, + B3AEDFC4293F35AE0050BDB6 /* menu.h */, + B3AEDFC5293F35AE0050BDB6 /* pokefinder */, + B3AEDFCB293F35AE0050BDB6 /* settings.c */, + B3AEDFCC293F35AE0050BDB6 /* keysyms.dat */, + B3AEDFCD293F35AE0050BDB6 /* compat.h */, + B3AEDFCE293F35AE0050BDB6 /* ui.c */, + B3AEDFCF293F35AE0050BDB6 /* hacking */, + B3AEDFDE293F35AE0050BDB6 /* lib */, + B3AEE00B293F35AE0050BDB6 /* debugger */, + B3AEE01D293F35AE0050BDB6 /* phantom_typist.h */, + B3AEE01E293F35AE0050BDB6 /* profile.c */, + B3AEE01F293F35AE0050BDB6 /* settings.pl */, + B3AEE020293F35AE0050BDB6 /* m4 */, + B3AEE02C293F35AE0050BDB6 /* menu_data.dat */, + B3AEE02D293F35AE0050BDB6 /* peripherals */, + B3AEE085293F35AF0050BDB6 /* slt.c */, + B3AEE086293F35AF0050BDB6 /* THANKS */, + B3AEE087293F35AF0050BDB6 /* psg.c */, + B3AEE088293F35AF0050BDB6 /* mempool.h */, + B3AEE089293F35AF0050BDB6 /* uimedia.c */, + B3AEE08A293F35AF0050BDB6 /* rectangle.h */, + B3AEE08B293F35AF0050BDB6 /* module.h */, + B3AEE08C293F35AF0050BDB6 /* movie.c */, + B3AEE08D293F35AF0050BDB6 /* infrastructure */, + B3AEE091293F35AF0050BDB6 /* bitmap.h */, + B3AEE092293F35AF0050BDB6 /* data */, + B3AEE0B2293F35AF0050BDB6 /* snapshot.h */, + B3AEE0B3293F35AF0050BDB6 /* tape.h */, + B3AEE0B4293F35AF0050BDB6 /* sound */, + B3AEE0C6293F35AF0050BDB6 /* Makefile.in */, + B3AEE0C7293F35AF0050BDB6 /* aclocal.m4 */, + B3AEE0C8293F35AF0050BDB6 /* fuse.c */, + B3AEE0C9293F35AF0050BDB6 /* settings-header.pl */, + B3AEE0CA293F35AF0050BDB6 /* svg.c */, + B3AEE0CB293F35AF0050BDB6 /* keysyms.pl */, + B3AEE0CC293F35AF0050BDB6 /* autogen.sh */, + B3AEE0CD293F35AF0050BDB6 /* PORTING */, + ); + path = fuse; + sourceTree = ""; + }; + B3AEDE3A293F35AC0050BDB6 /* man */ = { + isa = PBXGroup; + children = ( + B3AEDE3B293F35AC0050BDB6 /* fuse.1 */, + B3AEDE3C293F35AC0050BDB6 /* Makefile.am */, + ); + path = man; + sourceTree = ""; + }; + B3AEDE3F293F35AC0050BDB6 /* ui */ = { + isa = PBXGroup; + children = ( + B3AEDE40293F35AC0050BDB6 /* uidisplay.h */, + B3AEDE41293F35AC0050BDB6 /* widget */, + B3AEDE5C293F35AC0050BDB6 /* ui.h */, + B3AEDE5D293F35AC0050BDB6 /* wii */, + B3AEDE68293F35AC0050BDB6 /* uijoystick.h */, + B3AEDE69293F35AC0050BDB6 /* uimedia.h */, + B3AEDE6A293F35AC0050BDB6 /* fb */, + B3AEDE74293F35AC0050BDB6 /* Makefile.am */, + B3AEDE75293F35AC0050BDB6 /* svga */, + B3AEDE7D293F35AC0050BDB6 /* scaler */, + B3AEDE86293F35AC0050BDB6 /* null */, + B3AEDE8B293F35AC0050BDB6 /* options.dat */, + B3AEDE8C293F35AC0050BDB6 /* sdl */, + B3AEDE95293F35AC0050BDB6 /* xlib */, + B3AEDEA1293F35AC0050BDB6 /* gtk */, + B3AEDEBC293F35AD0050BDB6 /* uijoystick.c */, + B3AEDEBD293F35AD0050BDB6 /* win32 */, + ); + path = ui; + sourceTree = ""; + }; + B3AEDE41293F35AC0050BDB6 /* widget */ = { + isa = PBXGroup; + children = ( + B3AEDE42293F35AC0050BDB6 /* options.pl */, + B3AEDE43293F35AC0050BDB6 /* memory.c */, + B3AEDE44293F35AC0050BDB6 /* menu.c */, + B3AEDE45293F35AC0050BDB6 /* pokefinder.c */, + B3AEDE46293F35AC0050BDB6 /* options_internals.h */, + B3AEDE47293F35AC0050BDB6 /* widget.h */, + B3AEDE48293F35AC0050BDB6 /* debugger.c */, + B3AEDE49293F35AC0050BDB6 /* browse.c */, + B3AEDE4A293F35AC0050BDB6 /* select.c */, + B3AEDE4B293F35AC0050BDB6 /* binary.c */, + B3AEDE4C293F35AC0050BDB6 /* options-header.pl */, + B3AEDE4D293F35AC0050BDB6 /* menu_data.c */, + B3AEDE4E293F35AC0050BDB6 /* Makefile.am */, + B3AEDE4F293F35AC0050BDB6 /* about.c */, + B3AEDE50293F35AC0050BDB6 /* picture.c */, + B3AEDE51293F35AC0050BDB6 /* fuse.font.sbf */, + B3AEDE52293F35AC0050BDB6 /* pokemem.c */, + B3AEDE53293F35AC0050BDB6 /* error.c */, + B3AEDE54293F35AC0050BDB6 /* widget.c */, + B3AEDE55293F35AC0050BDB6 /* query.c */, + B3AEDE56293F35AC0050BDB6 /* text.c */, + B3AEDE57293F35AC0050BDB6 /* widget_internals.h */, + B3AEDE58293F35AC0050BDB6 /* roms.c */, + B3AEDE59293F35AC0050BDB6 /* filesel.c */, + B3AEDE5A293F35AC0050BDB6 /* options.c */, + B3AEDE5B293F35AC0050BDB6 /* mkfusefont.pl */, + ); + path = widget; + sourceTree = ""; + }; + B3AEDE5D293F35AC0050BDB6 /* wii */ = { + isa = PBXGroup; + children = ( + B3AEDE5E293F35AC0050BDB6 /* wiikeyboard.c */, + B3AEDE5F293F35AC0050BDB6 /* wiimouse.c */, + B3AEDE60293F35AC0050BDB6 /* wiidisplay.c */, + B3AEDE61293F35AC0050BDB6 /* Makefile.am */, + B3AEDE62293F35AC0050BDB6 /* wiiui.c */, + B3AEDE63293F35AC0050BDB6 /* wiikeyboard.h */, + B3AEDE64293F35AC0050BDB6 /* wiijoystick.c */, + B3AEDE65293F35AC0050BDB6 /* wiikeysyms.h */, + B3AEDE66293F35AC0050BDB6 /* wiidisplay.h */, + B3AEDE67293F35AC0050BDB6 /* wiimouse.h */, + ); + path = wii; + sourceTree = ""; + }; + B3AEDE6A293F35AC0050BDB6 /* fb */ = { + isa = PBXGroup; + children = ( + B3AEDE6B293F35AC0050BDB6 /* fbmouse.c */, + B3AEDE6C293F35AC0050BDB6 /* fbkeyboard.c */, + B3AEDE6D293F35AC0050BDB6 /* fbdisplay.h */, + B3AEDE6E293F35AC0050BDB6 /* Makefile.am */, + B3AEDE6F293F35AC0050BDB6 /* fbkeyboard.h */, + B3AEDE70293F35AC0050BDB6 /* fbmouse.h */, + B3AEDE71293F35AC0050BDB6 /* fbdisplay.c */, + B3AEDE72293F35AC0050BDB6 /* fbui.c */, + B3AEDE73293F35AC0050BDB6 /* fbjoystick.c */, + ); + path = fb; + sourceTree = ""; + }; + B3AEDE75293F35AC0050BDB6 /* svga */ = { + isa = PBXGroup; + children = ( + B3AEDE76293F35AC0050BDB6 /* svgakeyboard.c */, + B3AEDE77293F35AC0050BDB6 /* svgaui.c */, + B3AEDE78293F35AC0050BDB6 /* svgadisplay.c */, + B3AEDE79293F35AC0050BDB6 /* Makefile.am */, + B3AEDE7A293F35AC0050BDB6 /* svgakeyboard.h */, + B3AEDE7B293F35AC0050BDB6 /* svgadisplay.h */, + B3AEDE7C293F35AC0050BDB6 /* svgajoystick.c */, + ); + path = svga; + sourceTree = ""; + }; + B3AEDE7D293F35AC0050BDB6 /* scaler */ = { + isa = PBXGroup; + children = ( + B3AEDE7E293F35AC0050BDB6 /* scaler.h */, + B3AEDE7F293F35AC0050BDB6 /* scaler_hq4x.c */, + B3AEDE80293F35AC0050BDB6 /* Makefile.am */, + B3AEDE81293F35AC0050BDB6 /* scaler_hq3x.c */, + B3AEDE82293F35AC0050BDB6 /* scaler_internals.h */, + B3AEDE83293F35AC0050BDB6 /* scalers.c */, + B3AEDE84293F35AC0050BDB6 /* scaler_hq2x.c */, + B3AEDE85293F35AC0050BDB6 /* scaler.c */, + ); + path = scaler; + sourceTree = ""; + }; + B3AEDE86293F35AC0050BDB6 /* null */ = { + isa = PBXGroup; + children = ( + B3AEDE87293F35AC0050BDB6 /* options.pl */, + B3AEDE88293F35AC0050BDB6 /* options-header.pl */, + B3AEDE89293F35AC0050BDB6 /* Makefile.am */, + B3AEDE8A293F35AC0050BDB6 /* null_ui.c */, + ); + path = null; + sourceTree = ""; + }; + B3AEDE8C293F35AC0050BDB6 /* sdl */ = { + isa = PBXGroup; + children = ( + B3AEDE8D293F35AC0050BDB6 /* sdldisplay.c */, + B3AEDE8E293F35AC0050BDB6 /* sdljoystick.h */, + B3AEDE8F293F35AC0050BDB6 /* sdlkeyboard.c */, + B3AEDE90293F35AC0050BDB6 /* Makefile.am */, + B3AEDE91293F35AC0050BDB6 /* sdljoystick.c */, + B3AEDE92293F35AC0050BDB6 /* sdlui.c */, + B3AEDE93293F35AC0050BDB6 /* sdldisplay.h */, + B3AEDE94293F35AC0050BDB6 /* sdlkeyboard.h */, + ); + path = sdl; + sourceTree = ""; + }; + B3AEDE95293F35AC0050BDB6 /* xlib */ = { + isa = PBXGroup; + children = ( + B3AEDE96293F35AC0050BDB6 /* xkeyboard.h */, + B3AEDE97293F35AC0050BDB6 /* xstatusbar.pl */, + B3AEDE98293F35AC0050BDB6 /* keysyms.c */, + B3AEDE99293F35AC0050BDB6 /* xui.h */, + B3AEDE9A293F35AC0050BDB6 /* xdisplay.h */, + B3AEDE9B293F35AC0050BDB6 /* xjoystick.c */, + B3AEDE9C293F35AC0050BDB6 /* Makefile.am */, + B3AEDE9D293F35AC0050BDB6 /* xkeyboard.c */, + B3AEDE9E293F35AC0050BDB6 /* xerror.c */, + B3AEDE9F293F35AC0050BDB6 /* xdisplay.c */, + B3AEDEA0293F35AC0050BDB6 /* xui.c */, + ); + path = xlib; + sourceTree = ""; + }; + B3AEDEA1293F35AC0050BDB6 /* gtk */ = { + isa = PBXGroup; + children = ( + B3AEDEA2293F35AC0050BDB6 /* options.pl */, + B3AEDEA3293F35AC0050BDB6 /* rollback.c */, + B3AEDEA4293F35AC0050BDB6 /* gtkkeyboard.c */, + B3AEDEA5293F35AC0050BDB6 /* memory.c */, + B3AEDEA6293F35AC0050BDB6 /* pokefinder.c */, + B3AEDEA7293F35AC0050BDB6 /* debugger.c */, + B3AEDEA8293F35AC0050BDB6 /* browse.c */, + B3AEDEA9293F35AC0050BDB6 /* gtkcompat.h */, + B3AEDEAA293F35AC0050BDB6 /* binary.c */, + B3AEDEAB293F35AC0050BDB6 /* options-header.pl */, + B3AEDEAC293F35AC0050BDB6 /* pixmaps.c */, + B3AEDEAD293F35AC0050BDB6 /* memory_gtk2.c */, + B3AEDEAE293F35AC0050BDB6 /* gtkmouse.c */, + B3AEDEAF293F35AC0050BDB6 /* Makefile.am */, + B3AEDEB0293F35AC0050BDB6 /* gtkui.c */, + B3AEDEB1293F35AC0050BDB6 /* picture.c */, + B3AEDEB2293F35AC0050BDB6 /* pokemem.c */, + B3AEDEB3293F35AC0050BDB6 /* fileselector.c */, + B3AEDEB4293F35AC0050BDB6 /* gtkinternals.h */, + B3AEDEB5293F35AD0050BDB6 /* gtkdisplay.c */, + B3AEDEB6293F35AD0050BDB6 /* statusbar.c */, + B3AEDEB7293F35AD0050BDB6 /* stock.c */, + B3AEDEB8293F35AD0050BDB6 /* roms.c */, + B3AEDEB9293F35AD0050BDB6 /* gtkjoystick.c */, + B3AEDEBA293F35AD0050BDB6 /* confirm.c */, + B3AEDEBB293F35AD0050BDB6 /* gtkcompat.c */, + ); + path = gtk; + sourceTree = ""; + }; + B3AEDEBD293F35AD0050BDB6 /* win32 */ = { + isa = PBXGroup; + children = ( + B3AEDEBE293F35AD0050BDB6 /* pokemem.h */, + B3AEDEBF293F35AD0050BDB6 /* options.pl */, + B3AEDEC0293F35AD0050BDB6 /* rollback.c */, + B3AEDEC1293F35AD0050BDB6 /* picture.h */, + B3AEDEC2293F35AD0050BDB6 /* about.h */, + B3AEDEC3293F35AD0050BDB6 /* pokefinder.rc */, + B3AEDEC4293F35AD0050BDB6 /* memorybrowser.c */, + B3AEDEC5293F35AD0050BDB6 /* hyperlinks.h */, + B3AEDEC6293F35AD0050BDB6 /* pokefinder.c */, + B3AEDEC7293F35AD0050BDB6 /* win32internals.h */, + B3AEDEC8293F35AD0050BDB6 /* roms.h */, + B3AEDEC9293F35AD0050BDB6 /* win32joystick.c */, + B3AEDECA293F35AD0050BDB6 /* debugger.c */, + B3AEDECB293F35AD0050BDB6 /* win32display.c */, + B3AEDECC293F35AD0050BDB6 /* win32ui.c */, + B3AEDECD293F35AD0050BDB6 /* browse.c */, + B3AEDECE293F35AD0050BDB6 /* pokemem.rc */, + B3AEDECF293F35AD0050BDB6 /* binary.c */, + B3AEDED0293F35AD0050BDB6 /* options-header.pl */, + B3AEDED1293F35AD0050BDB6 /* win32joystick.rc */, + B3AEDED2293F35AD0050BDB6 /* debugger.rc */, + B3AEDED3293F35AD0050BDB6 /* hyperlinks.c */, + B3AEDED4293F35AD0050BDB6 /* memorybrowser.h */, + B3AEDED5293F35AD0050BDB6 /* Makefile.am */, + B3AEDED6293F35AD0050BDB6 /* about.rc */, + B3AEDED7293F35AD0050BDB6 /* rollback.h */, + B3AEDED8293F35AD0050BDB6 /* rollback.rc */, + B3AEDED9293F35AD0050BDB6 /* about.c */, + B3AEDEDA293F35AD0050BDB6 /* picture.c */, + B3AEDEDB293F35AD0050BDB6 /* pokemem.c */, + B3AEDEDC293F35AD0050BDB6 /* fileselector.c */, + B3AEDEDD293F35AD0050BDB6 /* pokefinder.h */, + B3AEDEDE293F35AD0050BDB6 /* icons */, + B3AEDEEB293F35AD0050BDB6 /* select_template.rc */, + B3AEDEEC293F35AD0050BDB6 /* win32keyboard.c */, + B3AEDEED293F35AD0050BDB6 /* memorybrowser.rc */, + B3AEDEEE293F35AD0050BDB6 /* browse.h */, + B3AEDEEF293F35AD0050BDB6 /* debugger.h */, + B3AEDEF0293F35AD0050BDB6 /* picture.rc */, + B3AEDEF1293F35AD0050BDB6 /* win32joystick.h */, + B3AEDEF2293F35AD0050BDB6 /* statusbar.c */, + B3AEDEF3293F35AD0050BDB6 /* select_template.h */, + B3AEDEF4293F35AD0050BDB6 /* win32mouse.c */, + B3AEDEF5293F35AD0050BDB6 /* roms.rc */, + B3AEDEF6293F35AD0050BDB6 /* roms.c */, + B3AEDEF7293F35AD0050BDB6 /* options-resource.pl */, + B3AEDEF8293F35AD0050BDB6 /* statusbar.rc */, + B3AEDEF9293F35AD0050BDB6 /* binary.rc */, + B3AEDEFA293F35AD0050BDB6 /* binary.h */, + B3AEDEFB293F35AD0050BDB6 /* browse.rc */, + B3AEDEFC293F35AD0050BDB6 /* confirm.c */, + ); + path = win32; + sourceTree = ""; + }; + B3AEDEDE293F35AD0050BDB6 /* icons */ = { + isa = PBXGroup; + children = ( + B3AEDEDF293F35AD0050BDB6 /* tape_inactive.bmp */, + B3AEDEE0293F35AD0050BDB6 /* pause_inactive.bmp */, + B3AEDEE1293F35AD0050BDB6 /* mdr_inactive.bmp */, + B3AEDEE2293F35AD0050BDB6 /* pause_active.bmp */, + B3AEDEE3293F35AD0050BDB6 /* tape_marker_mask.bmp */, + B3AEDEE4293F35AD0050BDB6 /* disk_inactive.bmp */, + B3AEDEE5293F35AD0050BDB6 /* disk_active.bmp */, + B3AEDEE6293F35AD0050BDB6 /* tape_active.bmp */, + B3AEDEE7293F35AD0050BDB6 /* tape_marker.bmp */, + B3AEDEE8293F35AD0050BDB6 /* mdr_active.bmp */, + B3AEDEE9293F35AD0050BDB6 /* mouse_inactive.bmp */, + B3AEDEEA293F35AD0050BDB6 /* mouse_active.bmp */, + ); + path = icons; + sourceTree = ""; + }; + B3AEDF02293F35AD0050BDB6 /* compat */ = { + isa = PBXGroup; + children = ( + B3AEDF03293F35AD0050BDB6 /* getopt1.c */, + B3AEDF04293F35AD0050BDB6 /* wii */, + B3AEDF09293F35AD0050BDB6 /* dirname.c */, + B3AEDF0A293F35AD0050BDB6 /* getopt.h */, + B3AEDF0B293F35AD0050BDB6 /* Makefile.am */, + B3AEDF0C293F35AD0050BDB6 /* unix */, + B3AEDF15293F35AD0050BDB6 /* linux */, + B3AEDF17293F35AD0050BDB6 /* amiga */, + B3AEDF1A293F35AD0050BDB6 /* win32 */, + B3AEDF1F293F35AD0050BDB6 /* morphos */, + B3AEDF21293F35AD0050BDB6 /* getopt.c */, + ); + path = compat; + sourceTree = ""; + }; + B3AEDF04293F35AD0050BDB6 /* wii */ = { + isa = PBXGroup; + children = ( + B3AEDF05293F35AD0050BDB6 /* timer.c */, + B3AEDF06293F35AD0050BDB6 /* paths.c */, + B3AEDF07293F35AD0050BDB6 /* osname.c */, + B3AEDF08293F35AD0050BDB6 /* dir.c */, + ); + path = wii; + sourceTree = ""; + }; + B3AEDF0C293F35AD0050BDB6 /* unix */ = { + isa = PBXGroup; + children = ( + B3AEDF0D293F35AD0050BDB6 /* tuntap.c */, + B3AEDF0E293F35AD0050BDB6 /* timer.c */, + B3AEDF0F293F35AD0050BDB6 /* paths.c */, + B3AEDF10293F35AD0050BDB6 /* relative_paths.c */, + B3AEDF11293F35AD0050BDB6 /* osname.c */, + B3AEDF12293F35AD0050BDB6 /* socket.c */, + B3AEDF13293F35AD0050BDB6 /* dir.c */, + B3AEDF14293F35AD0050BDB6 /* file.c */, + ); + path = unix; + sourceTree = ""; + }; + B3AEDF15293F35AD0050BDB6 /* linux */ = { + isa = PBXGroup; + children = ( + B3AEDF16293F35AD0050BDB6 /* relative_paths.c */, + ); + path = linux; + sourceTree = ""; + }; + B3AEDF17293F35AD0050BDB6 /* amiga */ = { + isa = PBXGroup; + children = ( + B3AEDF18293F35AD0050BDB6 /* paths.c */, + B3AEDF19293F35AD0050BDB6 /* osname.c */, + ); + path = amiga; + sourceTree = ""; + }; + B3AEDF1A293F35AD0050BDB6 /* win32 */ = { + isa = PBXGroup; + children = ( + B3AEDF1B293F35AD0050BDB6 /* timer.c */, + B3AEDF1C293F35AD0050BDB6 /* paths.c */, + B3AEDF1D293F35AD0050BDB6 /* osname.c */, + B3AEDF1E293F35AD0050BDB6 /* socket.c */, + ); + path = win32; + sourceTree = ""; + }; + B3AEDF1F293F35AD0050BDB6 /* morphos */ = { + isa = PBXGroup; + children = ( + B3AEDF20293F35AD0050BDB6 /* osname.c */, + ); + path = morphos; + sourceTree = ""; + }; + B3AEDF31293F35AD0050BDB6 /* z80 */ = { + isa = PBXGroup; + children = ( + B3AEDF32293F35AD0050BDB6 /* z80_internals.h */, + B3AEDF33293F35AD0050BDB6 /* opcodes_ddfdcb.dat */, + B3AEDF34293F35AD0050BDB6 /* coretest.c */, + B3AEDF35293F35AD0050BDB6 /* z80_ops.c */, + B3AEDF36293F35AD0050BDB6 /* z80_checks.h */, + B3AEDF37293F35AD0050BDB6 /* opcodes_cb.dat */, + B3AEDF38293F35AD0050BDB6 /* z80_ed.c */, + B3AEDF39293F35AD0050BDB6 /* z80_ddfd.c */, + B3AEDF3A293F35AD0050BDB6 /* tests */, + B3AEDF3E293F35AD0050BDB6 /* opcodes_ed.dat */, + B3AEDF3F293F35AD0050BDB6 /* z80.c */, + B3AEDF40293F35AD0050BDB6 /* z80_cb.c */, + B3AEDF41293F35AD0050BDB6 /* Makefile.am */, + B3AEDF42293F35AD0050BDB6 /* z80_ddfdcb.c */, + B3AEDF43293F35AD0050BDB6 /* opcodes_ddfd.dat */, + B3AEDF44293F35AD0050BDB6 /* opcodes_base.c */, + B3AEDF45293F35AD0050BDB6 /* opcodes_base.dat */, + B3AEDF46293F35AD0050BDB6 /* z80_debugger_variables.c */, + B3AEDF47293F35AD0050BDB6 /* z80.pl */, + B3AEDF48293F35AD0050BDB6 /* z80_macros.h */, + B3AEDF49293F35AD0050BDB6 /* z80.h */, + ); + path = z80; + sourceTree = ""; + }; + B3AEDF3A293F35AD0050BDB6 /* tests */ = { + isa = PBXGroup; + children = ( + B3AEDF3B293F35AD0050BDB6 /* tests.expected */, + B3AEDF3C293F35AD0050BDB6 /* README */, + B3AEDF3D293F35AD0050BDB6 /* tests.in */, + ); + path = tests; + sourceTree = ""; + }; + B3AEDF4E293F35AD0050BDB6 /* perl */ = { + isa = PBXGroup; + children = ( + B3AEDF4F293F35AD0050BDB6 /* Fuse */, + B3AEDF51293F35AD0050BDB6 /* Makefile.am */, + B3AEDF52293F35AD0050BDB6 /* cpp-perl.pl */, + B3AEDF53293F35AD0050BDB6 /* Fuse.pm */, + ); + path = perl; + sourceTree = ""; + }; + B3AEDF4F293F35AD0050BDB6 /* Fuse */ = { + isa = PBXGroup; + children = ( + B3AEDF50293F35AD0050BDB6 /* Dialog.pm */, + ); + path = Fuse; + sourceTree = ""; + }; + B3AEDF54293F35AD0050BDB6 /* roms */ = { + isa = PBXGroup; + children = ( + B3AEDF55293F35AD0050BDB6 /* 128-1.rom */, + B3AEDF56293F35AD0050BDB6 /* 128-0.rom */, + B3AEDF57293F35AD0050BDB6 /* se-0.h */, + B3AEDF58293F35AD0050BDB6 /* disciple.rom */, + B3AEDF59293F35AD0050BDB6 /* 128-0.h */, + B3AEDF5A293F35AD0050BDB6 /* plus3e-3.h */, + B3AEDF5B293F35AD0050BDB6 /* plus3-3.h */, + B3AEDF5C293F35AD0050BDB6 /* se-1.rom */, + B3AEDF5D293F35AD0050BDB6 /* se-0.rom */, + B3AEDF5E293F35AD0050BDB6 /* tc2068-1.h */, + B3AEDF5F293F35AD0050BDB6 /* README.copyright */, + B3AEDF60293F35AD0050BDB6 /* plus2-0.h */, + B3AEDF61293F35AD0050BDB6 /* plus3e-1.rom */, + B3AEDF62293F35AD0050BDB6 /* tc2068-1.rom */, + B3AEDF63293F35AD0050BDB6 /* tc2068-0.rom */, + B3AEDF64293F35AD0050BDB6 /* plus3e-0.h */, + B3AEDF65293F35AD0050BDB6 /* plus3e-0.rom */, + B3AEDF66293F35AD0050BDB6 /* plus3-0.h */, + B3AEDF67293F35AD0050BDB6 /* plus3e-2.rom */, + B3AEDF68293F35AD0050BDB6 /* plus3e-3.rom */, + B3AEDF69293F35AD0050BDB6 /* 48.h */, + B3AEDF6A293F35AD0050BDB6 /* Makefile.am */, + B3AEDF6B293F35AD0050BDB6 /* tc2068-0.h */, + B3AEDF6C293F35AD0050BDB6 /* plus2-0.rom */, + B3AEDF6D293F35AD0050BDB6 /* plus2-1.rom */, + B3AEDF6E293F35AD0050BDB6 /* plus2-1.h */, + B3AEDF6F293F35AD0050BDB6 /* plus3-1.h */, + B3AEDF70293F35AD0050BDB6 /* tc2048.h */, + B3AEDF71293F35AD0050BDB6 /* plus3e-1.h */, + B3AEDF72293F35AD0050BDB6 /* plus3-0.rom */, + B3AEDF73293F35AD0050BDB6 /* speccyboot-1.4.rom */, + B3AEDF74293F35AD0050BDB6 /* plus3-1.rom */, + B3AEDF75293F35AD0050BDB6 /* plus3-3.rom */, + B3AEDF76293F35AD0050BDB6 /* tc2048.rom */, + B3AEDF77293F35AD0050BDB6 /* se-1.h */, + B3AEDF78293F35AD0050BDB6 /* plus3-2.rom */, + B3AEDF79293F35AD0050BDB6 /* plus3-2.h */, + B3AEDF7A293F35AD0050BDB6 /* 48.rom */, + B3AEDF7B293F35AD0050BDB6 /* plus3e-2.h */, + B3AEDF7C293F35AD0050BDB6 /* 128-1.h */, + B3AEDF7D293F35AD0050BDB6 /* plusd.rom */, + ); + path = roms; + sourceTree = ""; + }; + B3AEDF7E293F35AD0050BDB6 /* timer */ = { + isa = PBXGroup; + children = ( + B3AEDF7F293F35AD0050BDB6 /* timer.c */, + B3AEDF80293F35AD0050BDB6 /* sdl.c */, + B3AEDF81293F35AD0050BDB6 /* Makefile.am */, + B3AEDF82293F35AD0050BDB6 /* timer.h */, + B3AEDF83293F35AD0050BDB6 /* native.c */, + ); + path = timer; + sourceTree = ""; + }; + B3AEDF88293F35AD0050BDB6 /* unittests */ = { + isa = PBXGroup; + children = ( + B3AEDF89293F35AD0050BDB6 /* unittests.h */, + B3AEDF8A293F35AD0050BDB6 /* Makefile.am */, + B3AEDF8B293F35AD0050BDB6 /* unittests.c */, + ); + path = unittests; + sourceTree = ""; + }; + B3AEDFA3293F35AE0050BDB6 /* machines */ = { + isa = PBXGroup; + children = ( + B3AEDFA4293F35AE0050BDB6 /* pentagon.c */, + B3AEDFA5293F35AE0050BDB6 /* pentagon512.c */, + B3AEDFA6293F35AE0050BDB6 /* machines_periph.c */, + B3AEDFA7293F35AE0050BDB6 /* spec_se.c */, + B3AEDFA8293F35AE0050BDB6 /* pentagon1024.c */, + B3AEDFA9293F35AE0050BDB6 /* spec128.h */, + B3AEDFAA293F35AE0050BDB6 /* spec48.c */, + B3AEDFAB293F35AE0050BDB6 /* spec16.c */, + B3AEDFAC293F35AE0050BDB6 /* tc2048.c */, + B3AEDFAD293F35AE0050BDB6 /* scorpion.h */, + B3AEDFAE293F35AE0050BDB6 /* specplus3.c */, + B3AEDFAF293F35AE0050BDB6 /* ts2068.c */, + B3AEDFB0293F35AE0050BDB6 /* tc2068.h */, + B3AEDFB1293F35AE0050BDB6 /* Makefile.am */, + B3AEDFB2293F35AE0050BDB6 /* specplus3e.c */, + B3AEDFB3293F35AE0050BDB6 /* spec128.c */, + B3AEDFB4293F35AE0050BDB6 /* spec48.h */, + B3AEDFB5293F35AE0050BDB6 /* machines_periph.h */, + B3AEDFB6293F35AE0050BDB6 /* pentagon.h */, + B3AEDFB7293F35AE0050BDB6 /* specplus2.c */, + B3AEDFB8293F35AE0050BDB6 /* specplus2a.c */, + B3AEDFB9293F35AE0050BDB6 /* spec48_ntsc.c */, + B3AEDFBA293F35AE0050BDB6 /* machines.h */, + B3AEDFBB293F35AE0050BDB6 /* specplus3.h */, + B3AEDFBC293F35AE0050BDB6 /* scorpion.c */, + B3AEDFBD293F35AE0050BDB6 /* tc2068.c */, + ); + path = machines; + sourceTree = ""; + }; + B3AEDFC5293F35AE0050BDB6 /* pokefinder */ = { + isa = PBXGroup; + children = ( + B3AEDFC6293F35AE0050BDB6 /* pokemem.h */, + B3AEDFC7293F35AE0050BDB6 /* pokefinder.c */, + B3AEDFC8293F35AE0050BDB6 /* Makefile.am */, + B3AEDFC9293F35AE0050BDB6 /* pokemem.c */, + B3AEDFCA293F35AE0050BDB6 /* pokefinder.h */, + ); + path = pokefinder; + sourceTree = ""; + }; + B3AEDFCF293F35AE0050BDB6 /* hacking */ = { + isa = PBXGroup; + children = ( + B3AEDFD0293F35AE0050BDB6 /* uncrustify.cfg */, + B3AEDFD1293F35AE0050BDB6 /* sound.txt */, + B3AEDFD2293F35AE0050BDB6 /* coding_style.txt */, + B3AEDFD3293F35AE0050BDB6 /* tc2048_tech_notes.txt */, + B3AEDFD4293F35AE0050BDB6 /* peripheral_tests.txt */, + B3AEDFD5293F35AE0050BDB6 /* implementation_notes.txt */, + B3AEDFD6293F35AE0050BDB6 /* spectranet.txt */, + B3AEDFD7293F35AE0050BDB6 /* Makefile.am */, + B3AEDFD8293F35AE0050BDB6 /* input.txt */, + B3AEDFD9293F35AE0050BDB6 /* ui.txt */, + B3AEDFDA293F35AE0050BDB6 /* code_beautifiers.txt */, + B3AEDFDB293F35AE0050BDB6 /* valgrind.supp */, + B3AEDFDC293F35AE0050BDB6 /* timer.txt */, + B3AEDFDD293F35AE0050BDB6 /* cvs-tags */, + ); + path = hacking; + sourceTree = ""; + }; + B3AEDFDE293F35AE0050BDB6 /* lib */ = { + isa = PBXGroup; + children = ( + B3AEDFDF293F35AE0050BDB6 /* keyboard.scr */, + B3AEDFE0293F35AE0050BDB6 /* cassette.bmp */, + B3AEDFE1293F35AE0050BDB6 /* keyboard.png */, + B3AEDFE2293F35AE0050BDB6 /* plus3disk.bmp */, + B3AEDFE3293F35AE0050BDB6 /* tests */, + B3AEDFEB293F35AE0050BDB6 /* Makefile.am */, + B3AEDFEC293F35AE0050BDB6 /* compressed */, + B3AEE00A293F35AE0050BDB6 /* microdrive.bmp */, + ); + path = lib; + sourceTree = ""; + }; + B3AEDFE3293F35AE0050BDB6 /* tests */ = { + isa = PBXGroup; + children = ( + B3AEDFE4293F35AE0050BDB6 /* fatware-success.hdf.bz2 */, + B3AEDFE5293F35AE0050BDB6 /* success.mdr */, + B3AEDFE6293F35AE0050BDB6 /* success.udi */, + B3AEDFE7293F35AE0050BDB6 /* success.d80.bz2 */, + B3AEDFE8293F35AE0050BDB6 /* success.mgt.bz2 */, + B3AEDFE9293F35AE0050BDB6 /* idedos-success.hdf.bz2 */, + B3AEDFEA293F35AE0050BDB6 /* success.opd */, + ); + path = tests; + sourceTree = ""; + }; + B3AEDFEC293F35AE0050BDB6 /* compressed */ = { + isa = PBXGroup; + children = ( + B3AEDFED293F35AE0050BDB6 /* tape_16.szx */, + B3AEDFEE293F35AE0050BDB6 /* tape_plus3.h */, + B3AEDFEF293F35AE0050BDB6 /* tape_plus2.szx */, + B3AEDFF0293F35AE0050BDB6 /* tape_plus3.szx */, + B3AEDFF1293F35AE0050BDB6 /* tape_se.szx */, + B3AEDFF2293F35AE0050BDB6 /* disk_plus3.szx */, + B3AEDFF3293F35AE0050BDB6 /* tape_se.h */, + B3AEDFF4293F35AE0050BDB6 /* tape_48.szx */, + B3AEDFF5293F35AE0050BDB6 /* tape_2048.szx */, + B3AEDFF6293F35AE0050BDB6 /* tape_plus2a.h */, + B3AEDFF7293F35AE0050BDB6 /* tape_pentagon.h */, + B3AEDFF8293F35AE0050BDB6 /* tape_plus3e.h */, + B3AEDFF9293F35AE0050BDB6 /* tape_2048.h */, + B3AEDFFA293F35AE0050BDB6 /* tape_128.h */, + B3AEDFFB293F35AE0050BDB6 /* tape_2068.szx */, + B3AEDFFC293F35AE0050BDB6 /* tape_16.h */, + B3AEDFFD293F35AE0050BDB6 /* tape_scorpion.h */, + B3AEDFFE293F35AE0050BDB6 /* tape_pentagon.szx */, + B3AEDFFF293F35AE0050BDB6 /* tape_plus3e.szx */, + B3AEE000293F35AE0050BDB6 /* tape_plus2a.szx */, + B3AEE001293F35AE0050BDB6 /* tape_ts2068.szx */, + B3AEE002293F35AE0050BDB6 /* tape_48_ntsc.szx */, + B3AEE003293F35AE0050BDB6 /* tape_2068.h */, + B3AEE004293F35AE0050BDB6 /* tape_48.h */, + B3AEE005293F35AE0050BDB6 /* tape_128.szx */, + B3AEE006293F35AE0050BDB6 /* tape_plus2.h */, + B3AEE007293F35AE0050BDB6 /* tape_ts2068.h */, + B3AEE008293F35AE0050BDB6 /* tape_48_ntsc.h */, + B3AEE009293F35AE0050BDB6 /* tape_scorpion.szx */, + ); + path = compressed; + sourceTree = ""; + }; + B3AEE00B293F35AE0050BDB6 /* debugger */ = { + isa = PBXGroup; + children = ( + B3AEE00C293F35AE0050BDB6 /* expression.c */, + B3AEE00D293F35AE0050BDB6 /* debugger_internals.h */, + B3AEE00E293F35AE0050BDB6 /* disassemble.c */, + B3AEE00F293F35AE0050BDB6 /* breakpoint.h */, + B3AEE010293F35AE0050BDB6 /* debugger.c */, + B3AEE011293F35AE0050BDB6 /* command.c */, + B3AEE012293F35AE0050BDB6 /* commandy.h */, + B3AEE013293F35AE0050BDB6 /* Makefile.am */, + B3AEE014293F35AE0050BDB6 /* commandl.c */, + B3AEE015293F35AE0050BDB6 /* commandl.l */, + B3AEE016293F35AE0050BDB6 /* event.c */, + B3AEE017293F35AE0050BDB6 /* debugger.h */, + B3AEE018293F35AE0050BDB6 /* system_variable.c */, + B3AEE019293F35AE0050BDB6 /* breakpoint.c */, + B3AEE01A293F35AE0050BDB6 /* commandy.y */, + B3AEE01B293F35AE0050BDB6 /* commandy.c */, + B3AEE01C293F35AE0050BDB6 /* variable.c */, + ); + path = debugger; + sourceTree = ""; + }; + B3AEE020293F35AE0050BDB6 /* m4 */ = { + isa = PBXGroup; + children = ( + B3AEE021293F35AE0050BDB6 /* ltversion.m4 */, + B3AEE022293F35AE0050BDB6 /* pkg.m4 */, + B3AEE023293F35AE0050BDB6 /* libtool.m4 */, + B3AEE024293F35AE0050BDB6 /* ltoptions.m4 */, + B3AEE025293F35AE0050BDB6 /* ltsugar.m4 */, + B3AEE026293F35AE0050BDB6 /* sdl.m4 */, + B3AEE027293F35AE0050BDB6 /* ax_string_strcasecmp.m4 */, + B3AEE028293F35AE0050BDB6 /* ax_pthread.m4 */, + B3AEE029293F35AE0050BDB6 /* ax_create_stdint_h.m4 */, + B3AEE02A293F35AE0050BDB6 /* gtk-2.0.m4 */, + B3AEE02B293F35AE0050BDB6 /* lt~obsolete.m4 */, + ); + path = m4; + sourceTree = ""; + }; + B3AEE02D293F35AE0050BDB6 /* peripherals */ = { + isa = PBXGroup; + children = ( + B3AEE02E293F35AE0050BDB6 /* ula.h */, + B3AEE02F293F35AE0050BDB6 /* ay.h */, + B3AEE030293F35AE0050BDB6 /* covox.c */, + B3AEE031293F35AE0050BDB6 /* melodik.c */, + B3AEE032293F35AE0050BDB6 /* ide */, + B3AEE043293F35AE0050BDB6 /* printer.h */, + B3AEE044293F35AE0050BDB6 /* usource.c */, + B3AEE045293F35AE0050BDB6 /* ttx2000s.c */, + B3AEE046293F35AE0050BDB6 /* nic */, + B3AEE04D293F35AE0050BDB6 /* spectranet.c */, + B3AEE04E293F35AE0050BDB6 /* specdrum.h */, + B3AEE04F293F35AE0050BDB6 /* speccyboot.h */, + B3AEE050293F35AE0050BDB6 /* if1.c */, + B3AEE051293F35AE0050BDB6 /* dck.h */, + B3AEE052293F35AE0050BDB6 /* scld.h */, + B3AEE053293F35AE0050BDB6 /* joystick.h */, + B3AEE054293F35AE0050BDB6 /* kempmouse.h */, + B3AEE055293F35AE0050BDB6 /* fuller.h */, + B3AEE056293F35AE0050BDB6 /* if2.c */, + B3AEE057293F35AE0050BDB6 /* multiface.c */, + B3AEE058293F35AE0050BDB6 /* Makefile.am */, + B3AEE059293F35AE0050BDB6 /* usource.h */, + B3AEE05A293F35AE0050BDB6 /* ttx2000s.h */, + B3AEE05B293F35AE0050BDB6 /* flash */, + B3AEE05E293F35AE0050BDB6 /* printer.c */, + B3AEE05F293F35AE0050BDB6 /* melodik.h */, + B3AEE060293F35AE0050BDB6 /* ay.c */, + B3AEE061293F35AE0050BDB6 /* covox.h */, + B3AEE062293F35AE0050BDB6 /* ula.c */, + B3AEE063293F35AE0050BDB6 /* if1.h */, + B3AEE064293F35AE0050BDB6 /* speccyboot.c */, + B3AEE065293F35AE0050BDB6 /* spectranet.h */, + B3AEE066293F35AE0050BDB6 /* specdrum.c */, + B3AEE067293F35AE0050BDB6 /* disk */, + B3AEE07E293F35AF0050BDB6 /* joystick.c */, + B3AEE07F293F35AF0050BDB6 /* scld.c */, + B3AEE080293F35AF0050BDB6 /* dck.c */, + B3AEE081293F35AF0050BDB6 /* if2.h */, + B3AEE082293F35AF0050BDB6 /* fuller.c */, + B3AEE083293F35AF0050BDB6 /* multiface.h */, + B3AEE084293F35AF0050BDB6 /* kempmouse.c */, + ); + path = peripherals; + sourceTree = ""; + }; + B3AEE032293F35AE0050BDB6 /* ide */ = { + isa = PBXGroup; + children = ( + B3AEE033293F35AE0050BDB6 /* zxmmc.h */, + B3AEE034293F35AE0050BDB6 /* divmmc.h */, + B3AEE035293F35AE0050BDB6 /* divide.h */, + B3AEE036293F35AE0050BDB6 /* simpleide.c */, + B3AEE037293F35AE0050BDB6 /* ide.h */, + B3AEE038293F35AE0050BDB6 /* zxatasp.c */, + B3AEE039293F35AE0050BDB6 /* divxxx.c */, + B3AEE03A293F35AE0050BDB6 /* zxcf.c */, + B3AEE03B293F35AE0050BDB6 /* zxmmc.c */, + B3AEE03C293F35AE0050BDB6 /* simpleide.h */, + B3AEE03D293F35AE0050BDB6 /* divide.c */, + B3AEE03E293F35AE0050BDB6 /* divmmc.c */, + B3AEE03F293F35AE0050BDB6 /* ide.c */, + B3AEE040293F35AE0050BDB6 /* zxcf.h */, + B3AEE041293F35AE0050BDB6 /* divxxx.h */, + B3AEE042293F35AE0050BDB6 /* zxatasp.h */, + ); + path = ide; + sourceTree = ""; + }; + B3AEE046293F35AE0050BDB6 /* nic */ = { + isa = PBXGroup; + children = ( + B3AEE047293F35AE0050BDB6 /* enc28j60.h */, + B3AEE048293F35AE0050BDB6 /* w5100_socket.c */, + B3AEE049293F35AE0050BDB6 /* w5100.c */, + B3AEE04A293F35AE0050BDB6 /* w5100_internals.h */, + B3AEE04B293F35AE0050BDB6 /* enc28j60.c */, + B3AEE04C293F35AE0050BDB6 /* w5100.h */, + ); + path = nic; + sourceTree = ""; + }; + B3AEE05B293F35AE0050BDB6 /* flash */ = { + isa = PBXGroup; + children = ( + B3AEE05C293F35AE0050BDB6 /* am29f010.h */, + B3AEE05D293F35AE0050BDB6 /* am29f010.c */, + ); + path = flash; + sourceTree = ""; + }; + B3AEE067293F35AE0050BDB6 /* disk */ = { + isa = PBXGroup; + children = ( + B3AEE068293F35AE0050BDB6 /* opus.h */, + B3AEE069293F35AE0050BDB6 /* plusd.c */, + B3AEE06A293F35AE0050BDB6 /* didaktik.c */, + B3AEE06B293F35AE0050BDB6 /* trdos.h */, + B3AEE06C293F35AE0050BDB6 /* beta.h */, + B3AEE06D293F35AE0050BDB6 /* crc.h */, + B3AEE06E293F35AE0050BDB6 /* wd_fdc.h */, + B3AEE06F293F35AE0050BDB6 /* disciple.c */, + B3AEE070293F35AE0050BDB6 /* fdd.h */, + B3AEE071293F35AE0050BDB6 /* upd_fdc.h */, + B3AEE072293F35AE0050BDB6 /* disk.h */, + B3AEE073293F35AE0050BDB6 /* didaktik.h */, + B3AEE074293F35AE0050BDB6 /* trdos.c */, + B3AEE075293F35AE0050BDB6 /* plusd.h */, + B3AEE076293F35AE0050BDB6 /* opus.c */, + B3AEE077293F35AE0050BDB6 /* beta.c */, + B3AEE078293F35AE0050BDB6 /* crc.c */, + B3AEE079293F35AE0050BDB6 /* disk.c */, + B3AEE07A293F35AE0050BDB6 /* upd_fdc.c */, + B3AEE07B293F35AF0050BDB6 /* fdd.c */, + B3AEE07C293F35AF0050BDB6 /* disciple.h */, + B3AEE07D293F35AF0050BDB6 /* wd_fdc.c */, + ); + path = disk; + sourceTree = ""; + }; + B3AEE08D293F35AF0050BDB6 /* infrastructure */ = { + isa = PBXGroup; + children = ( + B3AEE08E293F35AF0050BDB6 /* startup_manager.c */, + B3AEE08F293F35AF0050BDB6 /* Makefile.am */, + B3AEE090293F35AF0050BDB6 /* startup_manager.h */, + ); + path = infrastructure; + sourceTree = ""; + }; + B3AEE092293F35AF0050BDB6 /* data */ = { + isa = PBXGroup; + children = ( + B3AEE093293F35AF0050BDB6 /* shell-completion */, + B3AEE097293F35AF0050BDB6 /* Makefile.am */, + B3AEE098293F35AF0050BDB6 /* icons */, + B3AEE0AB293F35AF0050BDB6 /* fuse.desktop.in */, + B3AEE0AC293F35AF0050BDB6 /* win32 */, + B3AEE0B1293F35AF0050BDB6 /* fuse.xml.in */, + ); + path = data; + sourceTree = ""; + }; + B3AEE093293F35AF0050BDB6 /* shell-completion */ = { + isa = PBXGroup; + children = ( + B3AEE094293F35AF0050BDB6 /* bash */, + B3AEE096293F35AF0050BDB6 /* diff_options.sh */, + ); + path = "shell-completion"; + sourceTree = ""; + }; + B3AEE094293F35AF0050BDB6 /* bash */ = { + isa = PBXGroup; + children = ( + B3AEE095293F35AF0050BDB6 /* fuse */, + ); + path = bash; + sourceTree = ""; + }; + B3AEE098293F35AF0050BDB6 /* icons */ = { + isa = PBXGroup; + children = ( + B3AEE099293F35AF0050BDB6 /* 16x16 */, + B3AEE09C293F35AF0050BDB6 /* 64x64 */, + B3AEE09F293F35AF0050BDB6 /* 32x32 */, + B3AEE0A2293F35AF0050BDB6 /* 128x128 */, + B3AEE0A5293F35AF0050BDB6 /* 256x256 */, + B3AEE0A8293F35AF0050BDB6 /* 48x48 */, + ); + path = icons; + sourceTree = ""; + }; + B3AEE099293F35AF0050BDB6 /* 16x16 */ = { + isa = PBXGroup; + children = ( + B3AEE09A293F35AF0050BDB6 /* fuse.png */, + B3AEE09B293F35AF0050BDB6 /* application-x-spectrum.png */, + ); + path = 16x16; + sourceTree = ""; + }; + B3AEE09C293F35AF0050BDB6 /* 64x64 */ = { + isa = PBXGroup; + children = ( + B3AEE09D293F35AF0050BDB6 /* fuse.png */, + B3AEE09E293F35AF0050BDB6 /* application-x-spectrum.png */, + ); + path = 64x64; + sourceTree = ""; + }; + B3AEE09F293F35AF0050BDB6 /* 32x32 */ = { + isa = PBXGroup; + children = ( + B3AEE0A0293F35AF0050BDB6 /* fuse.png */, + B3AEE0A1293F35AF0050BDB6 /* application-x-spectrum.png */, + ); + path = 32x32; + sourceTree = ""; + }; + B3AEE0A2293F35AF0050BDB6 /* 128x128 */ = { + isa = PBXGroup; + children = ( + B3AEE0A3293F35AF0050BDB6 /* fuse.png */, + B3AEE0A4293F35AF0050BDB6 /* application-x-spectrum.png */, + ); + path = 128x128; + sourceTree = ""; + }; + B3AEE0A5293F35AF0050BDB6 /* 256x256 */ = { + isa = PBXGroup; + children = ( + B3AEE0A6293F35AF0050BDB6 /* fuse.png */, + B3AEE0A7293F35AF0050BDB6 /* application-x-spectrum.png */, + ); + path = 256x256; + sourceTree = ""; + }; + B3AEE0A8293F35AF0050BDB6 /* 48x48 */ = { + isa = PBXGroup; + children = ( + B3AEE0A9293F35AF0050BDB6 /* fuse.png */, + B3AEE0AA293F35AF0050BDB6 /* application-x-spectrum.png */, + ); + path = 48x48; + sourceTree = ""; + }; + B3AEE0AC293F35AF0050BDB6 /* win32 */ = { + isa = PBXGroup; + children = ( + B3AEE0AD293F35AF0050BDB6 /* installer.nsi.in */, + B3AEE0AE293F35AF0050BDB6 /* winfuse.ico */, + B3AEE0AF293F35AF0050BDB6 /* distribution.mk */, + B3AEE0B0293F35AF0050BDB6 /* fuse.manifest.in */, + ); + path = win32; + sourceTree = ""; + }; + B3AEE0B4293F35AF0050BDB6 /* sound */ = { + isa = PBXGroup; + children = ( + B3AEE0B5293F35AF0050BDB6 /* sdlsound.c */, + B3AEE0B6293F35AF0050BDB6 /* alsasound.c */, + B3AEE0B7293F35AF0050BDB6 /* osssound.c */, + B3AEE0B8293F35AF0050BDB6 /* nullsound.c */, + B3AEE0B9293F35AF0050BDB6 /* pulsesound.c */, + B3AEE0BA293F35AF0050BDB6 /* sfifo.h */, + B3AEE0BB293F35AF0050BDB6 /* coreaudiosound.c */, + B3AEE0BC293F35AF0050BDB6 /* win32sound.c */, + B3AEE0BD293F35AF0050BDB6 /* hpsound.c */, + B3AEE0BE293F35AF0050BDB6 /* blipbuffer.c */, + B3AEE0BF293F35AF0050BDB6 /* Makefile.am */, + B3AEE0C0293F35AF0050BDB6 /* aosound.c */, + B3AEE0C1293F35AF0050BDB6 /* sfifo.c */, + B3AEE0C2293F35AF0050BDB6 /* dxsound.c */, + B3AEE0C3293F35AF0050BDB6 /* blipbuffer.h */, + B3AEE0C4293F35AF0050BDB6 /* sunsound.c */, + B3AEE0C5293F35AF0050BDB6 /* wiisound.c */, + ); + path = sound; + sourceTree = ""; + }; + B3AEE0CE293F35AF0050BDB6 /* etc */ = { + isa = PBXGroup; + children = ( + B3AEE0CF293F35AF0050BDB6 /* version.c.templ */, + B3AEE0D0293F35AF0050BDB6 /* mkmake.lua */, + B3AEE0D1293F35AF0050BDB6 /* keyboverlay.png */, + ); + path = etc; + sourceTree = ""; + }; + B3AEE0D2293F35AF0050BDB6 /* zlib */ = { + isa = PBXGroup; + children = ( + B3AEE0D3293F35AF0050BDB6 /* zutil.h */, + B3AEE0D4293F35AF0050BDB6 /* inftrees.h */, + B3AEE0D5293F35AF0050BDB6 /* inflate.c */, + B3AEE0D6293F35AF0050BDB6 /* CMakeLists.txt */, + B3AEE0D7293F35AF0050BDB6 /* zlib.map */, + B3AEE0D8293F35AF0050BDB6 /* zlib.pc.cmakein */, + B3AEE0D9293F35AF0050BDB6 /* zlib.3.pdf */, + B3AEE0DA293F35AF0050BDB6 /* test */, + B3AEE0DE293F35AF0050BDB6 /* configure */, + B3AEE0DF293F35AF0050BDB6 /* compress.c */, + B3AEE0E0293F35AF0050BDB6 /* zlib.3 */, + B3AEE0E1293F35AF0050BDB6 /* ChangeLog */, + B3AEE0E2293F35AF0050BDB6 /* deflate.c */, + B3AEE0E3293F35AF0050BDB6 /* qnx */, + B3AEE0E5293F35AF0050BDB6 /* msdos */, + B3AEE0EB293F35AF0050BDB6 /* inffixed.h */, + B3AEE0EC293F35AF0050BDB6 /* Makefile */, + B3AEE0ED293F35AF0050BDB6 /* FAQ */, + B3AEE0EE293F35AF0050BDB6 /* gzread.c */, + B3AEE0EF293F35AF0050BDB6 /* zconf.h.in */, + B3AEE0F0293F35AF0050BDB6 /* trees.h */, + B3AEE0F1293F35AF0050BDB6 /* zconf.h.cmakein */, + B3AEE0F2293F35AF0050BDB6 /* inffast.h */, + B3AEE0F3293F35AF0050BDB6 /* old */, + B3AEE0FC293F35AF0050BDB6 /* treebuild.xml */, + B3AEE0FD293F35AF0050BDB6 /* contrib */, + B3AEE1A3293F35B00050BDB6 /* crc32.c */, + B3AEE1A4293F35B00050BDB6 /* README */, + B3AEE1A5293F35B00050BDB6 /* infback.c */, + B3AEE1A6293F35B00050BDB6 /* zutil.c */, + B3AEE1A7293F35B00050BDB6 /* deflate.h */, + B3AEE1A8293F35B00050BDB6 /* zlib.pc.in */, + B3AEE1A9293F35B00050BDB6 /* zlib2ansi */, + B3AEE1AA293F35B00050BDB6 /* gzguts.h */, + B3AEE1AB293F35B00050BDB6 /* examples */, + B3AEE1B7293F35B00050BDB6 /* zlib.h */, + B3AEE1B8293F35B00050BDB6 /* gzlib.c */, + B3AEE1B9293F35B00050BDB6 /* make_vms.com */, + B3AEE1BA293F35B00050BDB6 /* nintendods */, + B3AEE1BD293F35B00050BDB6 /* amiga */, + B3AEE1C0293F35B00050BDB6 /* as400 */, + B3AEE1C5293F35B00050BDB6 /* inflate.h */, + B3AEE1C6293F35B00050BDB6 /* inftrees.c */, + B3AEE1C7293F35B00050BDB6 /* INDEX */, + B3AEE1C8293F35B00050BDB6 /* doc */, + B3AEE1CE293F35B00050BDB6 /* uncompr.c */, + B3AEE1CF293F35B00050BDB6 /* gzwrite.c */, + B3AEE1D0293F35B00050BDB6 /* trees.c */, + B3AEE1D1293F35B00050BDB6 /* gzclose.c */, + B3AEE1D2293F35B00050BDB6 /* win32 */, + B3AEE1DB293F35B00050BDB6 /* crc32.h */, + B3AEE1DC293F35B00050BDB6 /* Makefile.in */, + B3AEE1DD293F35B00050BDB6 /* inffast.c */, + B3AEE1DE293F35B00050BDB6 /* adler32.c */, + B3AEE1DF293F35B00050BDB6 /* zconf.h */, + B3AEE1E0293F35B00050BDB6 /* watcom */, + ); + path = zlib; + sourceTree = ""; + }; + B3AEE0DA293F35AF0050BDB6 /* test */ = { + isa = PBXGroup; + children = ( + B3AEE0DB293F35AF0050BDB6 /* infcover.c */, + B3AEE0DC293F35AF0050BDB6 /* example.c */, + B3AEE0DD293F35AF0050BDB6 /* minigzip.c */, + ); + path = test; + sourceTree = ""; + }; + B3AEE0E3293F35AF0050BDB6 /* qnx */ = { + isa = PBXGroup; + children = ( + B3AEE0E4293F35AF0050BDB6 /* package.qpg */, + ); + path = qnx; + sourceTree = ""; + }; + B3AEE0E5293F35AF0050BDB6 /* msdos */ = { + isa = PBXGroup; + children = ( + B3AEE0E6293F35AF0050BDB6 /* Makefile.bor */, + B3AEE0E7293F35AF0050BDB6 /* Makefile.msc */, + B3AEE0E8293F35AF0050BDB6 /* Makefile.emx */, + B3AEE0E9293F35AF0050BDB6 /* Makefile.dj2 */, + B3AEE0EA293F35AF0050BDB6 /* Makefile.tc */, + ); + path = msdos; + sourceTree = ""; + }; + B3AEE0F3293F35AF0050BDB6 /* old */ = { + isa = PBXGroup; + children = ( + B3AEE0F4293F35AF0050BDB6 /* Makefile.riscos */, + B3AEE0F5293F35AF0050BDB6 /* os2 */, + B3AEE0F8293F35AF0050BDB6 /* Makefile.emx */, + B3AEE0F9293F35AF0050BDB6 /* README */, + B3AEE0FA293F35AF0050BDB6 /* descrip.mms */, + B3AEE0FB293F35AF0050BDB6 /* visual-basic.txt */, + ); + path = old; + sourceTree = ""; + }; + B3AEE0F5293F35AF0050BDB6 /* os2 */ = { + isa = PBXGroup; + children = ( + B3AEE0F6293F35AF0050BDB6 /* Makefile.os2 */, + B3AEE0F7293F35AF0050BDB6 /* zlib.def */, + ); + path = os2; + sourceTree = ""; + }; + B3AEE0FD293F35AF0050BDB6 /* contrib */ = { + isa = PBXGroup; + children = ( + B3AEE0FE293F35AF0050BDB6 /* masmx86 */, + B3AEE103293F35AF0050BDB6 /* ada */, + B3AEE110293F35AF0050BDB6 /* pascal */, + B3AEE115293F35AF0050BDB6 /* dotzlib */, + B3AEE126293F35AF0050BDB6 /* vstudio */, + B3AEE14C293F35AF0050BDB6 /* amd64 */, + B3AEE14E293F35AF0050BDB6 /* minizip */, + B3AEE165293F35B00050BDB6 /* README.contrib */, + B3AEE166293F35B00050BDB6 /* delphi */, + B3AEE16B293F35B00050BDB6 /* infback9 */, + B3AEE173293F35B00050BDB6 /* gcc_gvmat64 */, + B3AEE175293F35B00050BDB6 /* testzlib */, + B3AEE178293F35B00050BDB6 /* iostream */, + B3AEE17C293F35B00050BDB6 /* blast */, + B3AEE183293F35B00050BDB6 /* untgz */, + B3AEE187293F35B00050BDB6 /* asm686 */, + B3AEE18A293F35B00050BDB6 /* puff */, + B3AEE191293F35B00050BDB6 /* masmx64 */, + B3AEE197293F35B00050BDB6 /* iostream3 */, + B3AEE19D293F35B00050BDB6 /* inflate86 */, + B3AEE1A0293F35B00050BDB6 /* iostream2 */, + ); + path = contrib; + sourceTree = ""; + }; + B3AEE0FE293F35AF0050BDB6 /* masmx86 */ = { + isa = PBXGroup; + children = ( + B3AEE0FF293F35AF0050BDB6 /* bld_ml32.bat */, + B3AEE100293F35AF0050BDB6 /* inffas32.asm */, + B3AEE101293F35AF0050BDB6 /* readme.txt */, + B3AEE102293F35AF0050BDB6 /* match686.asm */, + ); + path = masmx86; + sourceTree = ""; + }; + B3AEE103293F35AF0050BDB6 /* ada */ = { + isa = PBXGroup; + children = ( + B3AEE104293F35AF0050BDB6 /* buffer_demo.adb */, + B3AEE105293F35AF0050BDB6 /* zlib-streams.ads */, + B3AEE106293F35AF0050BDB6 /* zlib-thin.ads */, + B3AEE107293F35AF0050BDB6 /* zlib.adb */, + B3AEE108293F35AF0050BDB6 /* read.adb */, + B3AEE109293F35AF0050BDB6 /* mtest.adb */, + B3AEE10A293F35AF0050BDB6 /* test.adb */, + B3AEE10B293F35AF0050BDB6 /* zlib.gpr */, + B3AEE10C293F35AF0050BDB6 /* zlib-thin.adb */, + B3AEE10D293F35AF0050BDB6 /* zlib-streams.adb */, + B3AEE10E293F35AF0050BDB6 /* zlib.ads */, + B3AEE10F293F35AF0050BDB6 /* readme.txt */, + ); + path = ada; + sourceTree = ""; + }; + B3AEE110293F35AF0050BDB6 /* pascal */ = { + isa = PBXGroup; + children = ( + B3AEE111293F35AF0050BDB6 /* example.pas */, + B3AEE112293F35AF0050BDB6 /* zlibpas.pas */, + B3AEE113293F35AF0050BDB6 /* readme.txt */, + B3AEE114293F35AF0050BDB6 /* zlibd32.mak */, + ); + path = pascal; + sourceTree = ""; + }; + B3AEE115293F35AF0050BDB6 /* dotzlib */ = { + isa = PBXGroup; + children = ( + B3AEE116293F35AF0050BDB6 /* DotZLib.build */, + B3AEE117293F35AF0050BDB6 /* DotZLib */, + B3AEE122293F35AF0050BDB6 /* LICENSE_1_0.txt */, + B3AEE123293F35AF0050BDB6 /* DotZLib.chm */, + B3AEE124293F35AF0050BDB6 /* readme.txt */, + B3AEE125293F35AF0050BDB6 /* DotZLib.sln */, + ); + path = dotzlib; + sourceTree = ""; + }; + B3AEE117293F35AF0050BDB6 /* DotZLib */ = { + isa = PBXGroup; + children = ( + B3AEE118293F35AF0050BDB6 /* GZipStream.cs */, + B3AEE119293F35AF0050BDB6 /* CodecBase.cs */, + B3AEE11A293F35AF0050BDB6 /* CircularBuffer.cs */, + B3AEE11B293F35AF0050BDB6 /* AssemblyInfo.cs */, + B3AEE11C293F35AF0050BDB6 /* UnitTests.cs */, + B3AEE11D293F35AF0050BDB6 /* DotZLib.cs */, + B3AEE11E293F35AF0050BDB6 /* ChecksumImpl.cs */, + B3AEE11F293F35AF0050BDB6 /* DotZLib.csproj */, + B3AEE120293F35AF0050BDB6 /* Deflater.cs */, + B3AEE121293F35AF0050BDB6 /* Inflater.cs */, + ); + path = DotZLib; + sourceTree = ""; + }; + B3AEE126293F35AF0050BDB6 /* vstudio */ = { + isa = PBXGroup; + children = ( + B3AEE127293F35AF0050BDB6 /* vc10 */, + B3AEE137293F35AF0050BDB6 /* vc9 */, + B3AEE141293F35AF0050BDB6 /* vc11 */, + B3AEE14B293F35AF0050BDB6 /* readme.txt */, + ); + path = vstudio; + sourceTree = ""; + }; + B3AEE127293F35AF0050BDB6 /* vc10 */ = { + isa = PBXGroup; + children = ( + B3AEE128293F35AF0050BDB6 /* zlibvc.vcxproj */, + B3AEE129293F35AF0050BDB6 /* testzlibdll.vcxproj.filters */, + B3AEE12A293F35AF0050BDB6 /* testzlib.vcxproj.filters */, + B3AEE12B293F35AF0050BDB6 /* zlibvc.vcxproj.filters */, + B3AEE12C293F35AF0050BDB6 /* miniunz.vcxproj */, + B3AEE12D293F35AF0050BDB6 /* testzlibdll.vcxproj */, + B3AEE12E293F35AF0050BDB6 /* zlibvc.sln */, + B3AEE12F293F35AF0050BDB6 /* minizip.vcxproj.filters */, + B3AEE130293F35AF0050BDB6 /* testzlib.vcxproj */, + B3AEE131293F35AF0050BDB6 /* zlibstat.vcxproj.filters */, + B3AEE132293F35AF0050BDB6 /* zlib.rc */, + B3AEE133293F35AF0050BDB6 /* zlibstat.vcxproj */, + B3AEE134293F35AF0050BDB6 /* zlibvc.def */, + B3AEE135293F35AF0050BDB6 /* miniunz.vcxproj.filters */, + B3AEE136293F35AF0050BDB6 /* minizip.vcxproj */, + ); + path = vc10; + sourceTree = ""; + }; + B3AEE137293F35AF0050BDB6 /* vc9 */ = { + isa = PBXGroup; + children = ( + B3AEE138293F35AF0050BDB6 /* zlibvc.sln */, + B3AEE139293F35AF0050BDB6 /* zlibvc.vcproj */, + B3AEE13A293F35AF0050BDB6 /* minizip.vcproj */, + B3AEE13B293F35AF0050BDB6 /* miniunz.vcproj */, + B3AEE13C293F35AF0050BDB6 /* zlib.rc */, + B3AEE13D293F35AF0050BDB6 /* testzlibdll.vcproj */, + B3AEE13E293F35AF0050BDB6 /* zlibvc.def */, + B3AEE13F293F35AF0050BDB6 /* testzlib.vcproj */, + B3AEE140293F35AF0050BDB6 /* zlibstat.vcproj */, + ); + path = vc9; + sourceTree = ""; + }; + B3AEE141293F35AF0050BDB6 /* vc11 */ = { + isa = PBXGroup; + children = ( + B3AEE142293F35AF0050BDB6 /* zlibvc.vcxproj */, + B3AEE143293F35AF0050BDB6 /* miniunz.vcxproj */, + B3AEE144293F35AF0050BDB6 /* testzlibdll.vcxproj */, + B3AEE145293F35AF0050BDB6 /* zlibvc.sln */, + B3AEE146293F35AF0050BDB6 /* testzlib.vcxproj */, + B3AEE147293F35AF0050BDB6 /* zlib.rc */, + B3AEE148293F35AF0050BDB6 /* zlibstat.vcxproj */, + B3AEE149293F35AF0050BDB6 /* zlibvc.def */, + B3AEE14A293F35AF0050BDB6 /* minizip.vcxproj */, + ); + path = vc11; + sourceTree = ""; + }; + B3AEE14C293F35AF0050BDB6 /* amd64 */ = { + isa = PBXGroup; + children = ( + B3AEE14D293F35AF0050BDB6 /* amd64-match.S */, + ); + path = amd64; + sourceTree = ""; + }; + B3AEE14E293F35AF0050BDB6 /* minizip */ = { + isa = PBXGroup; + children = ( + B3AEE14F293F35AF0050BDB6 /* configure.ac */, + B3AEE150293F35AF0050BDB6 /* MiniZip64_Changes.txt */, + B3AEE151293F35AF0050BDB6 /* unzip.c */, + B3AEE152293F35AF0050BDB6 /* zip.c */, + B3AEE153293F35AF0050BDB6 /* iowin32.h */, + B3AEE154293F35AF0050BDB6 /* Makefile */, + B3AEE155293F35AF0050BDB6 /* ioapi.c */, + B3AEE156293F35AF0050BDB6 /* mztools.c */, + B3AEE157293F35AF0050BDB6 /* MiniZip64_info.txt */, + B3AEE158293F35AF0050BDB6 /* minizip.pc.in */, + B3AEE159293F35AF0050BDB6 /* minizip.1 */, + B3AEE15A293F35AF0050BDB6 /* Makefile.am */, + B3AEE15B293F35AF0050BDB6 /* crypt.h */, + B3AEE15C293F35AF0050BDB6 /* zip.h */, + B3AEE15D293F35AF0050BDB6 /* make_vms.com */, + B3AEE15E293F35B00050BDB6 /* unzip.h */, + B3AEE15F293F35B00050BDB6 /* miniunzip.1 */, + B3AEE160293F35B00050BDB6 /* mztools.h */, + B3AEE161293F35B00050BDB6 /* ioapi.h */, + B3AEE162293F35B00050BDB6 /* iowin32.c */, + B3AEE163293F35B00050BDB6 /* minizip.c */, + B3AEE164293F35B00050BDB6 /* miniunz.c */, + ); + path = minizip; + sourceTree = ""; + }; + B3AEE166293F35B00050BDB6 /* delphi */ = { + isa = PBXGroup; + children = ( + B3AEE167293F35B00050BDB6 /* ZLibConst.pas */, + B3AEE168293F35B00050BDB6 /* ZLib.pas */, + B3AEE169293F35B00050BDB6 /* readme.txt */, + B3AEE16A293F35B00050BDB6 /* zlibd32.mak */, + ); + path = delphi; + sourceTree = ""; + }; + B3AEE16B293F35B00050BDB6 /* infback9 */ = { + isa = PBXGroup; + children = ( + B3AEE16C293F35B00050BDB6 /* inffix9.h */, + B3AEE16D293F35B00050BDB6 /* inftree9.c */, + B3AEE16E293F35B00050BDB6 /* infback9.h */, + B3AEE16F293F35B00050BDB6 /* README */, + B3AEE170293F35B00050BDB6 /* inflate9.h */, + B3AEE171293F35B00050BDB6 /* infback9.c */, + B3AEE172293F35B00050BDB6 /* inftree9.h */, + ); + path = infback9; + sourceTree = ""; + }; + B3AEE173293F35B00050BDB6 /* gcc_gvmat64 */ = { + isa = PBXGroup; + children = ( + B3AEE174293F35B00050BDB6 /* gvmat64.S */, + ); + path = gcc_gvmat64; + sourceTree = ""; + }; + B3AEE175293F35B00050BDB6 /* testzlib */ = { + isa = PBXGroup; + children = ( + B3AEE176293F35B00050BDB6 /* testzlib.txt */, + B3AEE177293F35B00050BDB6 /* testzlib.c */, + ); + path = testzlib; + sourceTree = ""; + }; + B3AEE178293F35B00050BDB6 /* iostream */ = { + isa = PBXGroup; + children = ( + B3AEE179293F35B00050BDB6 /* test.cpp */, + B3AEE17A293F35B00050BDB6 /* zfstream.cpp */, + B3AEE17B293F35B00050BDB6 /* zfstream.h */, + ); + path = iostream; + sourceTree = ""; + }; + B3AEE17C293F35B00050BDB6 /* blast */ = { + isa = PBXGroup; + children = ( + B3AEE17D293F35B00050BDB6 /* blast.c */, + B3AEE17E293F35B00050BDB6 /* Makefile */, + B3AEE17F293F35B00050BDB6 /* test.pk */, + B3AEE180293F35B00050BDB6 /* README */, + B3AEE181293F35B00050BDB6 /* blast.h */, + B3AEE182293F35B00050BDB6 /* test.txt */, + ); + path = blast; + sourceTree = ""; + }; + B3AEE183293F35B00050BDB6 /* untgz */ = { + isa = PBXGroup; + children = ( + B3AEE184293F35B00050BDB6 /* Makefile.msc */, + B3AEE185293F35B00050BDB6 /* Makefile */, + B3AEE186293F35B00050BDB6 /* untgz.c */, + ); + path = untgz; + sourceTree = ""; + }; + B3AEE187293F35B00050BDB6 /* asm686 */ = { + isa = PBXGroup; + children = ( + B3AEE188293F35B00050BDB6 /* match.S */, + B3AEE189293F35B00050BDB6 /* README.686 */, + ); + path = asm686; + sourceTree = ""; + }; + B3AEE18A293F35B00050BDB6 /* puff */ = { + isa = PBXGroup; + children = ( + B3AEE18B293F35B00050BDB6 /* Makefile */, + B3AEE18C293F35B00050BDB6 /* puff.h */, + B3AEE18D293F35B00050BDB6 /* README */, + B3AEE18E293F35B00050BDB6 /* pufftest.c */, + B3AEE18F293F35B00050BDB6 /* puff.c */, + B3AEE190293F35B00050BDB6 /* zeros.raw */, + ); + path = puff; + sourceTree = ""; + }; + B3AEE191293F35B00050BDB6 /* masmx64 */ = { + isa = PBXGroup; + children = ( + B3AEE192293F35B00050BDB6 /* inffasx64.asm */, + B3AEE193293F35B00050BDB6 /* bld_ml64.bat */, + B3AEE194293F35B00050BDB6 /* gvmat64.asm */, + B3AEE195293F35B00050BDB6 /* inffas8664.c */, + B3AEE196293F35B00050BDB6 /* readme.txt */, + ); + path = masmx64; + sourceTree = ""; + }; + B3AEE197293F35B00050BDB6 /* iostream3 */ = { + isa = PBXGroup; + children = ( + B3AEE198293F35B00050BDB6 /* zfstream.cc */, + B3AEE199293F35B00050BDB6 /* zfstream.h */, + B3AEE19A293F35B00050BDB6 /* README */, + B3AEE19B293F35B00050BDB6 /* TODO */, + B3AEE19C293F35B00050BDB6 /* test.cc */, + ); + path = iostream3; + sourceTree = ""; + }; + B3AEE19D293F35B00050BDB6 /* inflate86 */ = { + isa = PBXGroup; + children = ( + B3AEE19E293F35B00050BDB6 /* inffast.S */, + B3AEE19F293F35B00050BDB6 /* inffas86.c */, + ); + path = inflate86; + sourceTree = ""; + }; + B3AEE1A0293F35B00050BDB6 /* iostream2 */ = { + isa = PBXGroup; + children = ( + B3AEE1A1293F35B00050BDB6 /* zstream.h */, + B3AEE1A2293F35B00050BDB6 /* zstream_test.cpp */, + ); + path = iostream2; + sourceTree = ""; + }; + B3AEE1AB293F35B00050BDB6 /* examples */ = { + isa = PBXGroup; + children = ( + B3AEE1AC293F35B00050BDB6 /* fitblk.c */, + B3AEE1AD293F35B00050BDB6 /* enough.c */, + B3AEE1AE293F35B00050BDB6 /* gzlog.h */, + B3AEE1AF293F35B00050BDB6 /* gzjoin.c */, + B3AEE1B0293F35B00050BDB6 /* gun.c */, + B3AEE1B1293F35B00050BDB6 /* README.examples */, + B3AEE1B2293F35B00050BDB6 /* zlib_how.html */, + B3AEE1B3293F35B00050BDB6 /* zpipe.c */, + B3AEE1B4293F35B00050BDB6 /* gzlog.c */, + B3AEE1B5293F35B00050BDB6 /* zran.c */, + B3AEE1B6293F35B00050BDB6 /* gzappend.c */, + ); + path = examples; + sourceTree = ""; + }; + B3AEE1BA293F35B00050BDB6 /* nintendods */ = { + isa = PBXGroup; + children = ( + B3AEE1BB293F35B00050BDB6 /* Makefile */, + B3AEE1BC293F35B00050BDB6 /* README */, + ); + path = nintendods; + sourceTree = ""; + }; + B3AEE1BD293F35B00050BDB6 /* amiga */ = { + isa = PBXGroup; + children = ( + B3AEE1BE293F35B00050BDB6 /* Makefile.sas */, + B3AEE1BF293F35B00050BDB6 /* Makefile.pup */, + ); + path = amiga; + sourceTree = ""; + }; + B3AEE1C0293F35B00050BDB6 /* as400 */ = { + isa = PBXGroup; + children = ( + B3AEE1C1293F35B00050BDB6 /* bndsrc */, + B3AEE1C2293F35B00050BDB6 /* zlib.inc */, + B3AEE1C3293F35B00050BDB6 /* readme.txt */, + B3AEE1C4293F35B00050BDB6 /* compile.clp */, + ); + path = as400; + sourceTree = ""; + }; + B3AEE1C8293F35B00050BDB6 /* doc */ = { + isa = PBXGroup; + children = ( + B3AEE1C9293F35B00050BDB6 /* rfc1952.txt */, + B3AEE1CA293F35B00050BDB6 /* rfc1950.txt */, + B3AEE1CB293F35B00050BDB6 /* algorithm.txt */, + B3AEE1CC293F35B00050BDB6 /* rfc1951.txt */, + B3AEE1CD293F35B00050BDB6 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3AEE1D2293F35B00050BDB6 /* win32 */ = { + isa = PBXGroup; + children = ( + B3AEE1D3293F35B00050BDB6 /* VisualC.txt */, + B3AEE1D4293F35B00050BDB6 /* Makefile.bor */, + B3AEE1D5293F35B00050BDB6 /* Makefile.msc */, + B3AEE1D6293F35B00050BDB6 /* zlib.def */, + B3AEE1D7293F35B00050BDB6 /* DLL_FAQ.txt */, + B3AEE1D8293F35B00050BDB6 /* README-WIN32.txt */, + B3AEE1D9293F35B00050BDB6 /* Makefile.gcc */, + B3AEE1DA293F35B00050BDB6 /* zlib1.rc */, + ); + path = win32; + sourceTree = ""; + }; + B3AEE1E0293F35B00050BDB6 /* watcom */ = { + isa = PBXGroup; + children = ( + B3AEE1E1293F35B00050BDB6 /* watcom_f.mak */, + B3AEE1E2293F35B00050BDB6 /* watcom_l.mak */, + ); + path = watcom; + sourceTree = ""; + }; + B3AEE1E6293F35B00050BDB6 /* libspectrum */ = { + isa = PBXGroup; + children = ( + B3AEE24C293F35B10050BDB6 /* .gitignore */, + B3AEE230293F35B00050BDB6 /* AUTHORS */, + B3AEE22F293F35B00050BDB6 /* ChangeLog */, + B3AEE22D293F35B00050BDB6 /* configure */, + B3AEE247293F35B10050BDB6 /* COPYING */, + B3AEE23D293F35B00050BDB6 /* depcomp */, + B3AEE1EE293F35B00050BDB6 /* install-sh */, + B3AEE23E293F35B00050BDB6 /* missing */, + B3AEE242293F35B10050BDB6 /* README */, + B3AEE263293F35B10050BDB6 /* THANKS */, + B3AEE1F0293F35B00050BDB6 /* configure.ac */, + B3AEE243293F35B10050BDB6 /* Makefile.am */, + B3AEE1EC293F35B00050BDB6 /* buffer.c */, + B3AEE276293F35B10050BDB6 /* bzip2.c */, + B3AEE238293F35B00050BDB6 /* creator.c */, + B3AEE26F293F35B10050BDB6 /* crypto.c */, + B3AEE237293F35B00050BDB6 /* csw.c */, + B3AEE26E293F35B10050BDB6 /* dck.c */, + B3AEE274293F35B10050BDB6 /* dll.c */, + B3AEE265293F35B10050BDB6 /* ide.c */, + B3AEE24E293F35B10050BDB6 /* libspectrum.c */, + B3AEE1ED293F35B00050BDB6 /* make-perl.c */, + B3AEE1F3293F35B00050BDB6 /* memory.c */, + B3AEE250293F35B10050BDB6 /* microdrive.c */, + B3AEE262293F35B10050BDB6 /* mmc.c */, + B3AEE1E8293F35B00050BDB6 /* plusd.c */, + B3AEE278293F35B10050BDB6 /* pzx_read.c */, + B3AEE1E7293F35B00050BDB6 /* rzx.c */, + B3AEE23A293F35B00050BDB6 /* sna.c */, + B3AEE27A293F35B10050BDB6 /* snap_accessors.c */, + B3AEE241293F35B10050BDB6 /* snapshot.c */, + B3AEE1EA293F35B00050BDB6 /* snp.c */, + B3AEE24B293F35B10050BDB6 /* sp.c */, + B3AEE23F293F35B00050BDB6 /* symbol_table.c */, + B3AEE1EB293F35B00050BDB6 /* szx.c */, + B3AEE232293F35B00050BDB6 /* tap.c */, + B3AEE251293F35B10050BDB6 /* tape_accessors.c */, + B3AEE264293F35B10050BDB6 /* tape_block.c */, + B3AEE277293F35B10050BDB6 /* tape_set.c */, + B3AEE240293F35B10050BDB6 /* tape.c */, + B3AEE231293F35B00050BDB6 /* timings.c */, + B3AEE1F1293F35B00050BDB6 /* tzx_read.c */, + B3AEE249293F35B10050BDB6 /* tzx_write.c */, + B3AEE261293F35B10050BDB6 /* utilities.c */, + B3AEE271293F35B10050BDB6 /* warajevo_read.c */, + B3AEE260293F35B10050BDB6 /* wav.c */, + B3AEE23C293F35B00050BDB6 /* z80.c */, + B3AEE1EF293F35B00050BDB6 /* z80em.c */, + B3AEE22E293F35B00050BDB6 /* zip.c */, + B3AEE1F4293F35B00050BDB6 /* zlib.c */, + B3AEE26D293F35B10050BDB6 /* zxs.c */, + B3AEE23B293F35B00050BDB6 /* config.guess */, + B3AEE236293F35B00050BDB6 /* internals.h */, + B3AEE234293F35B00050BDB6 /* tape_block.h */, + B3AEE24D293F35B10050BDB6 /* zip.h */, + B3AEE239293F35B00050BDB6 /* config.h.in */, + B3AEE233293F35B00050BDB6 /* generate.pl.in */, + B3AEE24F293F35B10050BDB6 /* libspectrum.h.in */, + B3AEE24A293F35B10050BDB6 /* libspectrum.pc.in */, + B3AEE26C293F35B10050BDB6 /* libspectrum.qpg.in */, + B3AEE270293F35B10050BDB6 /* Makefile.in */, + B3AEE272293F35B10050BDB6 /* aclocal.m4 */, + B3AEE1E9293F35B00050BDB6 /* accessor.pl */, + B3AEE235293F35B00050BDB6 /* tape_accessors.pl */, + B3AEE273293F35B10050BDB6 /* tape_set.pl */, + B3AEE245293F35B10050BDB6 /* windres.rc */, + B3AEE279293F35B10050BDB6 /* autogen.sh */, + B3AEE1F2293F35B00050BDB6 /* ltmain.sh */, + B3AEE246293F35B10050BDB6 /* config.sub */, + B3AEE244293F35B10050BDB6 /* buffer_license.txt */, + B3AEE248293F35B10050BDB6 /* snap_accessors.txt */, + B3AEE275293F35B10050BDB6 /* tape_accessors.txt */, + B3AEE25B293F35B10050BDB6 /* doc */, + B3AEE252293F35B10050BDB6 /* m4 */, + B3AEE266293F35B10050BDB6 /* myglib */, + B3AEE1F5293F35B00050BDB6 /* test */, + ); + path = libspectrum; + sourceTree = ""; + }; + B3AEE1F5293F35B00050BDB6 /* test */ = { + isa = PBXGroup; + children = ( + B3AEE1F6293F35B00050BDB6 /* empty.z80 */, + B3AEE1F7293F35B00050BDB6 /* szx-chunks */, + B3AEE20C293F35B00050BDB6 /* szx.c */, + B3AEE20D293F35B00050BDB6 /* trailing-pause-block.tzx */, + B3AEE20E293F35B00050BDB6 /* invalid-hardwareinfo.tzx */, + B3AEE20F293F35B00050BDB6 /* no-pilot-gdb.tzx */, + B3AEE210293F35B00050BDB6 /* empty.szx */, + B3AEE211293F35B00050BDB6 /* loop2.tzx */, + B3AEE212293F35B00050BDB6 /* turbo-zeropilot.tzx */, + B3AEE213293F35B00050BDB6 /* jump.tzx */, + B3AEE214293F35B00050BDB6 /* plus3.z80 */, + B3AEE215293F35B00050BDB6 /* invalid-gdb.tzx */, + B3AEE216293F35B00050BDB6 /* raw-data-block.tzx */, + B3AEE217293F35B00050BDB6 /* sp-ffff.sna.gz */, + B3AEE218293F35B00050BDB6 /* test.h */, + B3AEE219293F35B00050BDB6 /* invalid-archiveinfo.tzx */, + B3AEE21A293F35B00050BDB6 /* invalid.gz */, + B3AEE21B293F35B00050BDB6 /* Makefile.am */, + B3AEE21C293F35B00050BDB6 /* standard-tap.tap */, + B3AEE21D293F35B00050BDB6 /* empty.csw */, + B3AEE21E293F35B00050BDB6 /* loopend.tzx */, + B3AEE21F293F35B00050BDB6 /* invalid.tzx */, + B3AEE220293F35B00050BDB6 /* zero-tail.pzx */, + B3AEE221293F35B00050BDB6 /* test.c */, + B3AEE222293F35B00050BDB6 /* test_edges.c */, + B3AEE223293F35B00050BDB6 /* sp-2000.sna.gz */, + B3AEE224293F35B00050BDB6 /* complete-tzx.pl */, + B3AEE225293F35B00050BDB6 /* empty-drb.tzx */, + B3AEE226293F35B00050BDB6 /* invalid.szx */, + B3AEE227293F35B00050BDB6 /* writeprotected.mdr */, + B3AEE228293F35B00050BDB6 /* loop.tzx */, + B3AEE229293F35B00050BDB6 /* random.szx */, + B3AEE22A293F35B00050BDB6 /* invalid-warajevo-blockoffset.tap */, + B3AEE22B293F35B00050BDB6 /* invalid-custominfo.tzx */, + B3AEE22C293F35B00050BDB6 /* edges.c */, + ); + path = test; + sourceTree = ""; + }; + B3AEE1F7293F35B00050BDB6 /* szx-chunks */ = { + isa = PBXGroup; + children = ( + B3AEE1F8293F35B00050BDB6 /* CFRP.szx */, + B3AEE1F9293F35B00050BDB6 /* ATRP-uncompressed.szx.gz */, + B3AEE1FA293F35B00050BDB6 /* ZXPR.szx */, + B3AEE1FB293F35B00050BDB6 /* AMXM.szx */, + B3AEE1FC293F35B00050BDB6 /* SIDE.szx */, + B3AEE1FD293F35B00050BDB6 /* SPCR.szx */, + B3AEE1FE293F35B00050BDB6 /* JOY.szx */, + B3AEE1FF293F35B00050BDB6 /* ZXCF.szx */, + B3AEE200293F35B00050BDB6 /* SCLD.szx */, + B3AEE201293F35B00050BDB6 /* ZMMC.szx */, + B3AEE202293F35B00050BDB6 /* KEYB.szx */, + B3AEE203293F35B00050BDB6 /* RAMP-uncompressed.szx.gz */, + B3AEE204293F35B00050BDB6 /* ZXAT.szx */, + B3AEE205293F35B00050BDB6 /* ATRP.szx */, + B3AEE206293F35B00050BDB6 /* AY.szx */, + B3AEE207293F35B00050BDB6 /* COVX.szx */, + B3AEE208293F35B00050BDB6 /* RAMP.szx */, + B3AEE209293F35B00050BDB6 /* Z80R.szx */, + B3AEE20A293F35B00050BDB6 /* DRUM.szx */, + B3AEE20B293F35B00050BDB6 /* CFRP-uncompressed.szx.gz */, + ); + path = "szx-chunks"; + sourceTree = ""; + }; + B3AEE252293F35B10050BDB6 /* m4 */ = { + isa = PBXGroup; + children = ( + B3AEE253293F35B10050BDB6 /* ltversion.m4 */, + B3AEE254293F35B10050BDB6 /* pkg.m4 */, + B3AEE255293F35B10050BDB6 /* libtool.m4 */, + B3AEE256293F35B10050BDB6 /* ltoptions.m4 */, + B3AEE257293F35B10050BDB6 /* ltsugar.m4 */, + B3AEE258293F35B10050BDB6 /* audiofile.m4 */, + B3AEE259293F35B10050BDB6 /* ax_create_stdint_h.m4 */, + B3AEE25A293F35B10050BDB6 /* lt~obsolete.m4 */, + ); + path = m4; + sourceTree = ""; + }; + B3AEE25B293F35B10050BDB6 /* doc */ = { + isa = PBXGroup; + children = ( + B3AEE25C293F35B10050BDB6 /* Makefile.am */, + B3AEE25D293F35B10050BDB6 /* libspectrum.txt */, + B3AEE25E293F35B10050BDB6 /* libspectrum.3 */, + B3AEE25F293F35B10050BDB6 /* cvs-tags */, + ); + path = doc; + sourceTree = ""; + }; + B3AEE266293F35B10050BDB6 /* myglib */ = { + isa = PBXGroup; + children = ( + B3AEE267293F35B10050BDB6 /* glock.c */, + B3AEE268293F35B10050BDB6 /* Makefile.am */, + B3AEE269293F35B10050BDB6 /* garray.c */, + B3AEE26A293F35B10050BDB6 /* gslist.c */, + B3AEE26B293F35B10050BDB6 /* ghash.c */, + ); + path = myglib; + sourceTree = ""; + }; + B3AEE27C293F35B10050BDB6 /* build */ = { + isa = PBXGroup; + children = ( + B3AEE27D293F35B10050BDB6 /* Makefile.linux_x86_64 */, + B3AEE27E293F35B10050BDB6 /* Makefile.osx_x86 */, + B3AEE27F293F35B10050BDB6 /* Makefile.linux-portable_x86_64 */, + B3AEE280293F35B10050BDB6 /* Makefile.windows_x86 */, + B3AEE281293F35B10050BDB6 /* Makefile.linux_x86 */, + B3AEE282293F35B10050BDB6 /* Makefile.rules */, + B3AEE283293F35B10050BDB6 /* Makefile.ps3_ppc */, + B3AEE284293F35B10050BDB6 /* Makefile.wii_ppc */, + B3AEE285293F35B10050BDB6 /* Makefile.linux-portable_x86 */, + B3AEE286293F35B10050BDB6 /* Makefile.common */, + B3AEE287293F35B10050BDB6 /* Makefile.vita_arm */, + B3AEE288293F35B10050BDB6 /* Makefile.android_x86 */, + B3AEE289293F35B10050BDB6 /* Makefile.mingw_x86 */, + B3AEE28A293F35B10050BDB6 /* Makefile.windows_x86_64 */, + B3AEE28B293F35B10050BDB6 /* Makefile.android_x86_64 */, + B3AEE28C293F35B10050BDB6 /* Makefile.android_armeabi */, + B3AEE28D293F35B10050BDB6 /* Makefile.mingw_x86_64 */, + B3AEE28E293F35B10050BDB6 /* Makefile.android_armeabi-v7a */, + B3AEE28F293F35B10050BDB6 /* link.T */, + B3AEE290293F35B10050BDB6 /* jni */, + B3AEE293293F35B10050BDB6 /* Makefile.android_arm64-v8a */, + B3AEE294293F35B10050BDB6 /* Makefile.osx_x86_64 */, + B3AEE295293F35B10050BDB6 /* Makefile.android_mips64 */, + B3AEE296293F35B10050BDB6 /* Makefile.android_mips */, + ); + path = build; + sourceTree = ""; + }; + B3AEE290293F35B10050BDB6 /* jni */ = { + isa = PBXGroup; + children = ( + B3AEE291293F35B10050BDB6 /* Android.mk */, + B3AEE292293F35B10050BDB6 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3AEE298293F35B10050BDB6 /* bzip2 */ = { + isa = PBXGroup; + children = ( + B3AEE299293F35B10050BDB6 /* bzmore */, + B3AEE29A293F35B10050BDB6 /* bzgrep */, + B3AEE29B293F35B10050BDB6 /* makefile.msc */, + B3AEE29C293F35B10050BDB6 /* bzmore.1 */, + B3AEE29D293F35B10050BDB6 /* randtable.c */, + B3AEE29E293F35B10050BDB6 /* bzdiff */, + B3AEE29F293F35B10050BDB6 /* bzip.css */, + B3AEE2A0293F35B10050BDB6 /* bz-common.xsl */, + B3AEE2A1293F35B10050BDB6 /* mk251.c */, + B3AEE2A2293F35B10050BDB6 /* xmlproc.sh */, + B3AEE2A3293F35B10050BDB6 /* LICENSE */, + B3AEE2A4293F35B10050BDB6 /* libbz2.def */, + B3AEE2A5293F35B10050BDB6 /* compress.c */, + B3AEE2A6293F35B10050BDB6 /* decompress.c */, + B3AEE2A7293F35B10050BDB6 /* bzdiff.1 */, + B3AEE2A8293F35B10050BDB6 /* words0 */, + B3AEE2A9293F35B10050BDB6 /* Makefile */, + B3AEE2AA293F35B10050BDB6 /* bzlib_private.h */, + B3AEE2AB293F35B10050BDB6 /* CHANGES */, + B3AEE2AC293F35B10050BDB6 /* words1 */, + B3AEE2AD293F35B10050BDB6 /* bzlib.h */, + B3AEE2AE293F35B10050BDB6 /* entities.xml */, + B3AEE2AF293F35B10050BDB6 /* bzip2.txt */, + B3AEE2B0293F35B10050BDB6 /* format.pl */, + B3AEE2B1293F35B10050BDB6 /* bzip2.1 */, + B3AEE2B2293F35B10050BDB6 /* blocksort.c */, + B3AEE2B3293F35B10050BDB6 /* huffman.c */, + B3AEE2B4293F35B10050BDB6 /* README */, + B3AEE2B5293F35B10050BDB6 /* spewG.c */, + B3AEE2B6293F35B10050BDB6 /* README.COMPILATION.PROBLEMS */, + B3AEE2B7293F35B10050BDB6 /* bzgrep.1 */, + B3AEE2B8293F35B10050BDB6 /* dlltest.c */, + B3AEE2B9293F35B10050BDB6 /* manual.xml */, + B3AEE2BA293F35B10050BDB6 /* sample3.bz2 */, + B3AEE2BB293F35B10050BDB6 /* bzip2recover.c */, + B3AEE2BC293F35B10050BDB6 /* crctable.c */, + B3AEE2BD293F35B10050BDB6 /* sample2.bz2 */, + B3AEE2BE293F35B10050BDB6 /* bzip2.1.preformatted */, + B3AEE2BF293F35B10050BDB6 /* Makefile-libbz2_so */, + B3AEE2C0293F35B10050BDB6 /* unzcrash.c */, + B3AEE2C1293F35B10050BDB6 /* bz-html.xsl */, + B3AEE2C2293F35B10050BDB6 /* bz-fo.xsl */, + B3AEE2C3293F35B10050BDB6 /* sample1.bz2 */, + B3AEE2C4293F35B10050BDB6 /* manual.pdf */, + B3AEE2C5293F35B10050BDB6 /* bzlib.c */, + B3AEE2C6293F35B10050BDB6 /* words3 */, + B3AEE2C7293F35B10050BDB6 /* dlltest.dsp */, + B3AEE2C8293F35B10050BDB6 /* sample1.ref */, + B3AEE2C9293F35B10050BDB6 /* sample3.ref */, + B3AEE2CA293F35B10050BDB6 /* manual.html */, + B3AEE2CB293F35B10050BDB6 /* sample2.ref */, + B3AEE2CC293F35B10050BDB6 /* words2 */, + B3AEE2CD293F35B10050BDB6 /* README.XML.STUFF */, + B3AEE2CE293F35B10050BDB6 /* bzip2.c */, + B3AEE2CF293F35B10050BDB6 /* manual.ps */, + B3AEE2D0293F35B10050BDB6 /* libbz2.dsp */, + ); + path = bzip2; + sourceTree = ""; + }; + B3AEE2D1293F35B10050BDB6 /* src */ = { + isa = PBXGroup; + children = ( + B3AEE2F0293F35B10050BDB6 /* coreopt.c */, + B3AEE2D2293F35B10050BDB6 /* libretro.c */, + B3AEE2D3293F35B10050BDB6 /* missing.c */, + B3AEE2F1293F35B10050BDB6 /* config_fuse.h */, + B3AEE2F4293F35B10050BDB6 /* config_libspectrum.h */, + B3AEE2F5293F35B10050BDB6 /* coreopt.h */, + B3AEE2F2293F35B10050BDB6 /* externs.h */, + B3AEE2EF293F35B10050BDB6 /* keyboverlay.h */, + B3AEE2F3293F35B10050BDB6 /* libretro.h */, + B3AEE2E3293F35B10050BDB6 /* libspectrum.h */, + B3AEE2D4293F35B10050BDB6 /* compat */, + B3AEE2E4293F35B10050BDB6 /* fuse */, + ); + path = src; + sourceTree = ""; + }; + B3AEE2D4293F35B10050BDB6 /* compat */ = { + isa = PBXGroup; + children = ( + B3AEE2D5293F35B10050BDB6 /* display.c */, + B3AEE2D6293F35B10050BDB6 /* mouse.c */, + B3AEE2D7293F35B10050BDB6 /* timer.c */, + B3AEE2D8293F35B10050BDB6 /* paths.c */, + B3AEE2D9293F35B10050BDB6 /* keyboard.c */, + B3AEE2DA293F35B10050BDB6 /* osname.c */, + B3AEE2DB293F35B10050BDB6 /* fat.c */, + B3AEE2DC293F35B10050BDB6 /* socket.c */, + B3AEE2DD293F35B10050BDB6 /* dir.c */, + B3AEE2DE293F35B10050BDB6 /* sound.c */, + B3AEE2DF293F35B10050BDB6 /* ui.c */, + B3AEE2E0293F35B10050BDB6 /* file.c */, + B3AEE2E1293F35B10050BDB6 /* joystick.c */, + B3AEE2E2293F35B10050BDB6 /* fat.h */, + ); + path = compat; + sourceTree = ""; + }; + B3AEE2E4293F35B10050BDB6 /* fuse */ = { + isa = PBXGroup; + children = ( + B3AEE2E5293F35B10050BDB6 /* getopt1.c */, + B3AEE2E6293F35B10050BDB6 /* scalers32.c */, + B3AEE2E7293F35B10050BDB6 /* snapshot.c */, + B3AEE2E8293F35B10050BDB6 /* utils.c */, + B3AEE2E9293F35B10050BDB6 /* error.c */, + B3AEE2EA293F35B10050BDB6 /* scalers16.c */, + B3AEE2EB293F35B10050BDB6 /* settings.c */, + B3AEE2EC293F35B10050BDB6 /* ui.c */, + B3AEE2ED293F35B10050BDB6 /* getopt.c */, + B3AEE2EE293F35B10050BDB6 /* fuse.c */, + ); + path = fuse; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3AEDE30293F35AC0050BDB6 /* fuse-libretro */, + B37022BE287253B300B3F6DA /* PVFuse */, + B37022C4287253B300B3F6DA /* PVFuseCore */, + B37022BD287253B300B3F6DA /* PVFuse-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVFuse.framework */, + B30178D3207C901D0051B93D /* libFuse.a */, + B3344BC32859E088006E6B3A /* libFuse-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVFuse.h in Headers */, + B37022C92872554300B3F6DA /* PVFuseCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* Fuse */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "Fuse" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Fuse; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libFuse.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* Fuse-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "Fuse-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Fuse-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libFuse-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVFuse */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFuse" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVFuse; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVFuse.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFuse" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVFuse */, + B3344B522859E088006E6B3A /* Fuse-libretro */, + B30178D2207C901D0051B93D /* Fuse */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3AEE2FF293F35CD0050BDB6 /* fuse.c in Sources */, + B3AEE2F9293F35CD0050BDB6 /* scalers16.c in Sources */, + B3AEE2FE293F35CD0050BDB6 /* getopt.c in Sources */, + B3AEE2F8293F35CD0050BDB6 /* error.c in Sources */, + B3AEE2FC293F35CD0050BDB6 /* snapshot.c in Sources */, + B3AEE2FD293F35CD0050BDB6 /* ui.c in Sources */, + B3AEE2F6293F35CD0050BDB6 /* scalers32.c in Sources */, + B3AEE2FA293F35CD0050BDB6 /* settings.c in Sources */, + B3AEE2FB293F35CD0050BDB6 /* getopt1.c in Sources */, + B3AEE2F7293F35CD0050BDB6 /* utils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3AEE30A293F35D40050BDB6 /* fat.c in Sources */, + B3AEE304293F35D40050BDB6 /* sound.c in Sources */, + B3AEE30D293F35D80050BDB6 /* libretro.c in Sources */, + B3AEE303293F35D40050BDB6 /* display.c in Sources */, + B3AEE30F293F35D80050BDB6 /* missing.c in Sources */, + B3AEE305293F35D40050BDB6 /* keyboard.c in Sources */, + B3AEE300293F35D40050BDB6 /* mouse.c in Sources */, + B3AEE308293F35D40050BDB6 /* osname.c in Sources */, + B3AEE301293F35D40050BDB6 /* timer.c in Sources */, + B3AEE306293F35D40050BDB6 /* paths.c in Sources */, + B3AEE30E293F35D80050BDB6 /* coreopt.c in Sources */, + B3AEE302293F35D40050BDB6 /* socket.c in Sources */, + B3AEE307293F35D40050BDB6 /* file.c in Sources */, + B3AEE309293F35D40050BDB6 /* ui.c in Sources */, + B3AEE30B293F35D40050BDB6 /* joystick.c in Sources */, + B3AEE30C293F35D40050BDB6 /* dir.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVFuseCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* Fuse-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Fuse; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Fuse; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Fuse-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFuse/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFuse"; + PRODUCT_NAME = PVFuse; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = Fuse; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Fuse-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Fuse-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = "Fuse-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Fuse-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Fuse-libretro/libretro-common/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFuse/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFuse"; + PRODUCT_NAME = PVFuse; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVFuse/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVFuse"; + PRODUCT_NAME = PVFuse; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,5,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "Fuse" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "Fuse-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVFuse" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVFuse" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/fuse/PVFuse.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/fuse/PVFuse.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/fuse/PVFuse.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/fuse/PVFuse.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/fuse/PVFuse.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/fuse/PVFuse.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/fuse/PVFuse.xcodeproj/xcshareddata/xcschemes/PVFuse.xcscheme b/Cores/fuse/PVFuse.xcodeproj/xcshareddata/xcschemes/PVFuse.xcscheme new file mode 100644 index 0000000000..8294203618 --- /dev/null +++ b/Cores/fuse/PVFuse.xcodeproj/xcshareddata/xcschemes/PVFuse.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/fuse/PVFuse/Core.plist b/Cores/fuse/PVFuse/Core.plist new file mode 100644 index 0000000000..7e8c1d2872 --- /dev/null +++ b/Cores/fuse/PVFuse/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.Fuse + PVPrincipleClass + PVFuseCore + PVSupportedSystems + + com.provenance.zxspectrum + + PVProjectName + Fuse + PVProjectURL + http://fuse-emulator.sourceforge.net + PVProjectVersion + 0 + + diff --git a/Cores/fuse/PVFuse/Info.plist b/Cores/fuse/PVFuse/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/fuse/PVFuse/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/fuse/PVFuse/PVFuse.h b/Cores/fuse/PVFuse/PVFuse.h new file mode 100644 index 0000000000..34b647f763 --- /dev/null +++ b/Cores/fuse/PVFuse/PVFuse.h @@ -0,0 +1,18 @@ +// +// PVFuse.h +// PVFuse +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVFuse. +FOUNDATION_EXPORT double PVFuseVersionNumber; + +//! Project version string for PVFuse. +FOUNDATION_EXPORT const unsigned char PVFuseVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/fuse/PVFuseCore/PVFuseCore.h b/Cores/fuse/PVFuseCore/PVFuseCore.h new file mode 100644 index 0000000000..08c52280b2 --- /dev/null +++ b/Cores/fuse/PVFuseCore/PVFuseCore.h @@ -0,0 +1,43 @@ +// +// PVFuseCore.h +// PVFuse +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVFuseCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/fuse/PVFuseCore/PVFuseCore.mm b/Cores/fuse/PVFuseCore/PVFuseCore.mm new file mode 100644 index 0000000000..2bc27b5538 --- /dev/null +++ b/Cores/fuse/PVFuseCore/PVFuseCore.mm @@ -0,0 +1,257 @@ +// +// PVFuseCore.m +// PVFuse +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVFuseCore.h" +#include +//#import "PVFuseCore+Controls.h" +//#import "PVFuseCore+Audio.h" +//#import "PVFuseCore+Video.h" +// +//#import "PVFuseCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVFuseCore() { + +} + +@end + +#pragma mark - PVFuseCore Begin + +@implementation PVFuseCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1024, 768); +} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT + return GL_RGB565; +} + + +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} +# pragma mark - Audio + +- (double)audioSampleRate { + return 48000; +} + +#if 0 +const struct retro_variable vars[] = { + { "Fuse_mode", "MSX Mode; MSX2+|MSX1|MSX2" }, + { "Fuse_video_mode", "MSX Video Mode; NTSC|PAL|Dynamic" }, + { "Fuse_hires", "Support high resolution; Off|Interlaced|Progressive" }, + { "Fuse_overscan", "Support overscan; No|Yes" }, + { "Fuse_mapper_type_mode", "MSX Mapper Type Mode; " + "Guess|" + "Generic 8kB|" + "Generic 16kB|" + "Konami5 8kB|" + "Konami4 8kB|" + "ASCII 8kB|" + "ASCII 16kB|" + "GameMaster2|" + "FMPAC" + }, + { "Fuse_ram_pages", "MSX Main Memory; Auto|64KB|128KB|256KB|512KB|4MB" }, + { "Fuse_vram_pages", "MSX Video Memory; Auto|32KB|64KB|128KB|192KB" }, + { "Fuse_log_level", "Fuse logging; Off|Info|Debug|Spam" }, + { "Fuse_game_master", "Support Game Master; No|Yes" }, + { "Fuse_simbdos", "Simulate DiskROM disk access calls; No|Yes" }, + { "Fuse_autospace", "Use autofire on SPACE; No|Yes" }, + { "Fuse_allsprites", "Show all sprites; No|Yes" }, + { "Fuse_font", "Text font; standard|DEFAULT.FNT|ITALIC.FNT|INTERNAT.FNT|CYRILLIC.FNT|KOREAN.FNT|JAPANESE.FNT" }, + { "Fuse_flush_disk", "Save disk changes; Never|Immediate|On close|To/From SRAM" }, + { "Fuse_phantom_disk", "Create empty disk when none loaded; No|Yes" }, + { "Fuse_custom_keyboard_up", up_value}, + { "Fuse_custom_keyboard_down", down_value}, + { "Fuse_custom_keyboard_left", left_value}, + { "Fuse_custom_keyboard_right", right_value}, + { "Fuse_custom_keyboard_a", a_value}, + { "Fuse_custom_keyboard_b", b_value}, + { "Fuse_custom_keyboard_y", y_value}, + { "Fuse_custom_keyboard_x", x_value}, + { "Fuse_custom_keyboard_start", start_value}, + { "Fuse_custom_keyboard_select", select_value}, + { "Fuse_custom_keyboard_l", l_value}, + { "Fuse_custom_keyboard_r", r_value}, + { "Fuse_custom_keyboard_l2", l2_value}, + { "Fuse_custom_keyboard_r2", r2_value}, + { "Fuse_custom_keyboard_l3", l3_value}, + { "Fuse_custom_keyboard_r3", r3_value}, + { NULL, NULL }, +}; +#endif + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + + #define V(x) strcmp(variable, x) == 0 + if (V("Fuse_video_mode")) { + // NTSC|PAL|Dynamic + char *value = strdup("Dynamic"); + return value; + } else if (V("Fuse_mode")) { + // MSX2+|MSX1|MSX2 + char * value = strdup("MSX2+"); + return value; + } else if (V("Fuse_hires")) { + // Off|Interlaced|Progressive + char *value = strdup("Progressive"); + return value; + } else if (V("Fuse_overscan")) { + // No|Yes + char *value = strdup("Yes"); + return value; + } else if (V("Fuse_mapper_type_mode")) { +// { "Fuse_mapper_type_mode", "MSX Mapper Type Mode; " +// "Guess|" +// "Generic 8kB|" +// "Generic 16kB|" +// "Konami5 8kB|" +// "Konami4 8kB|" +// "ASCII 8kB|" +// "ASCII 16kB|" +// "GameMaster2|" +// "FMPAC" +// }, + char *value = strdup("FMPAC"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} +@end diff --git a/Cores/fuse/fuse-libretro b/Cores/fuse/fuse-libretro new file mode 160000 index 0000000000..3f9344ddf8 --- /dev/null +++ b/Cores/fuse/fuse-libretro @@ -0,0 +1 @@ +Subproject commit 3f9344ddf88dfd251d95cffdea615692479e8cc6 diff --git a/Cores/hatari/BuildFlags.xcconfig b/Cores/hatari/BuildFlags.xcconfig new file mode 100644 index 0000000000..8d6f3c7cac --- /dev/null +++ b/Cores/hatari/BuildFlags.xcconfig @@ -0,0 +1,31 @@ +// +// BuildFlags.xcconfig +// PVHatari +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 OBJ_C IOS HAVE_POSIX_MEMALIGN=1 HAVE_LIBZ=1 HAVE_ZLIB_H=1 ENABLE_DSP_EMU=1 UAE_NOGUI=1 HAVE_GLOB_H=1 HAVE_STRINGS_H=1 HAVE_SYS_TIMES_H=1 HAVE_CFMAKERAW=1 HAVE_SETENV=1 HAVE_SELECT=1 HAVE_UNIX_DOMAIN_SOCKETS=1 HAVE_POSIX_MEMALIGN=1 HAVE_MEMALIGN=1 HAVE_GETTIMEOFDAY=1 HAVE_NANOSLEEP=1 HAVE_ALPHASORT=1 HAVE_SCANDIR=1 HAVE_STATVFS=1 HAVE_FSEEKO=1 HAVE_FTELLO=1 HAVE_FLOCK=1 HAVE_DIRENT_D_TYPE=1 BIN2DATADIR="@BIN2DATADIR@" ENABLE_DSP_EMU=1 ENABLE_WINUAE_CPU=1 +// HAVE_LIBREADLINE=1 ENABLE_SDL2=1 HAVE_SDL_CONFIG_H=1 +//WITH_SDL2=1 HAVE_LIBPNG=1 +OTHER_CFLAGS = $(inherited) -ObjC -lz -lpthread -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -fno-builtin -fsigned-char + +OTHER_CFLAGS[configuration=Release] = $(inherited) -funroll-loops -ffast-math -fomit-frame-pointer +// -frtti -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 LSB_FIRST ALIGN_DWORD HAVE_NEON=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 HAVE_SSE=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 HAVE_NEON=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 HAVE_SSE=1 diff --git a/Cores/hatari/PVHatari-Prefix.pch b/Cores/hatari/PVHatari-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/hatari/PVHatari-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/hatari/PVHatari.h b/Cores/hatari/PVHatari.h new file mode 100644 index 0000000000..2d8a488609 --- /dev/null +++ b/Cores/hatari/PVHatari.h @@ -0,0 +1,19 @@ +// +// PVHatari.h +// PVHatari +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVHatari. +FOUNDATION_EXPORT double PVHatariVersionNumber; + +//! Project version string for PVHatari. +FOUNDATION_EXPORT const unsigned char PVHatariVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/hatari/PVHatari.xcodeproj/project.pbxproj b/Cores/hatari/PVHatari.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..bb635d2b4e --- /dev/null +++ b/Cores/hatari/PVHatari.xcodeproj/project.pbxproj @@ -0,0 +1,3170 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libhatari.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libhatari.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B3161B0A289225CB000CF68C /* dlgHardDisk.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA984287296FB00EAEB37 /* dlgHardDisk.c */; }; + B3161B0B289225CB000CF68C /* sdlgui.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA98C287296FB00EAEB37 /* sdlgui.c */; }; + B3161B0C289225CB000CF68C /* dlgAlert.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA990287296FB00EAEB37 /* dlgAlert.c */; }; + B3161B0D289225CB000CF68C /* dlgMain.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA988287296FB00EAEB37 /* dlgMain.c */; }; + B3161B0E289225CB000CF68C /* dlgFloppy.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA981287296FB00EAEB37 /* dlgFloppy.c */; }; + B3161B0F289225CB000CF68C /* dlgKeyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA993287296FC00EAEB37 /* dlgKeyboard.c */; }; + B3161B10289225CB000CF68C /* dlgAbout.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA98A287296FB00EAEB37 /* dlgAbout.c */; }; + B3161B11289225CB000CF68C /* dlgRom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA987287296FB00EAEB37 /* dlgRom.c */; }; + B3161B12289225CB000CF68C /* dlgFileSelect.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA991287296FB00EAEB37 /* dlgFileSelect.c */; }; + B3161B13289225CB000CF68C /* dlgNewDisk.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA989287296FB00EAEB37 /* dlgNewDisk.c */; }; + B3161B14289225CB000CF68C /* dlgMemory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA98D287296FB00EAEB37 /* dlgMemory.c */; }; + B3161B15289225CB000CF68C /* dlgJoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA983287296FB00EAEB37 /* dlgJoystick.c */; }; + B3161B16289225CB000CF68C /* dlgScreen.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA994287296FC00EAEB37 /* dlgScreen.c */; }; + B3161B17289225CB000CF68C /* dlgSound.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA98B287296FB00EAEB37 /* dlgSound.c */; }; + B3161B18289225CB000CF68C /* dlgSystem.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA995287296FC00EAEB37 /* dlgSystem.c */; }; + B3161B19289225CB000CF68C /* dlgDevice.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA982287296FB00EAEB37 /* dlgDevice.c */; }; + B32C4C0F289223DC001B51AE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B32C4C0E289223DC001B51AE /* libz.tbd */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF3207CD2730040709A /* CoreAudioKit.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVHatariCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVHatariCore.mm */; }; + B37022C92872554300B3F6DA /* PVHatariCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVHatariCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVHatari.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVHatari.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libhatari-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libhatari-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3E0AB36289214D900DB1E39 /* hatari.cfg in Resources */ = {isa = PBXBuildFile; fileRef = B3E0AB35289214D900DB1E39 /* hatari.cfg */; }; + B3E0AB3B2892166A00DB1E39 /* cpustbl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA935287296FB00EAEB37 /* cpustbl.c */; }; + B3E0AB3C2892166A00DB1E39 /* cpudefs.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA932287296FB00EAEB37 /* cpudefs.c */; }; + B3E0AB3D2892166A00DB1E39 /* cpuemu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA934287296FB00EAEB37 /* cpuemu.c */; }; + B3E0AB412892168700DB1E39 /* hatari-glue.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA4D287296FC00EAEB37 /* hatari-glue.c */; }; + B3E0AB422892168700DB1E39 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA4A287296FC00EAEB37 /* memory.c */; }; + B3E0AB432892168700DB1E39 /* fpp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA70287296FC00EAEB37 /* fpp.c */; }; + B3E0AB442892168700DB1E39 /* readcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA51287296FC00EAEB37 /* readcpu.c */; }; + B3E0AB452892168700DB1E39 /* newcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA6E287296FC00EAEB37 /* newcpu.c */; }; + B3E0AB69289216D600DB1E39 /* dsp_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB48287296FD00EAEB37 /* dsp_disasm.c */; }; + B3E0AB6A289216D600DB1E39 /* dsp_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB42287296FD00EAEB37 /* dsp_cpu.c */; }; + B3E0AB6B289216D600DB1E39 /* dsp_core.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB3D287296FD00EAEB37 /* dsp_core.c */; }; + B3E0AB6C289216D600DB1E39 /* videl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB40287296FD00EAEB37 /* videl.c */; }; + B3E0AB6D289216D600DB1E39 /* crossbar.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB49287296FD00EAEB37 /* crossbar.c */; }; + B3E0AB6E289216D600DB1E39 /* dsp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB38287296FD00EAEB37 /* dsp.c */; }; + B3E0AB6F289216D600DB1E39 /* hostscreen.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB43287296FD00EAEB37 /* hostscreen.c */; }; + B3E0AB70289216D600DB1E39 /* microphone.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB46287296FD00EAEB37 /* microphone.c */; }; + B3E0AB71289216D600DB1E39 /* nvram.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB41287296FD00EAEB37 /* nvram.c */; }; + B3E0AB7B2892170200DB1E39 /* symbols.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB7E287296FD00EAEB37 /* symbols.c */; }; + B3E0AB7C2892170200DB1E39 /* debugui.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB7A287296FD00EAEB37 /* debugui.c */; }; + B3E0AB7D2892170200DB1E39 /* evaluate.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB72287296FD00EAEB37 /* evaluate.c */; }; + B3E0AB7E2892170300DB1E39 /* 68kDisass.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB6A287296FD00EAEB37 /* 68kDisass.c */; }; + B3E0AB7F2892170300DB1E39 /* breakcond.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB70287296FD00EAEB37 /* breakcond.c */; }; + B3E0AB802892170300DB1E39 /* debugInfo.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB81287296FD00EAEB37 /* debugInfo.c */; }; + B3E0AB812892170300DB1E39 /* history.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB67287296FD00EAEB37 /* history.c */; }; + B3E0AB822892170300DB1E39 /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB65287296FD00EAEB37 /* log.c */; }; + B3E0AB832892170300DB1E39 /* profile.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB7D287296FD00EAEB37 /* profile.c */; }; + B3E0AB842892170300DB1E39 /* profiledsp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB6F287296FD00EAEB37 /* profiledsp.c */; }; + B3E0AB852892170300DB1E39 /* debugdsp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB78287296FD00EAEB37 /* debugdsp.c */; }; + B3E0AB862892170300DB1E39 /* profilecpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB71287296FD00EAEB37 /* profilecpu.c */; }; + B3E0AB872892170300DB1E39 /* debugcpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB75287296FD00EAEB37 /* debugcpu.c */; }; + B3E0AB882892170300DB1E39 /* natfeats.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB82287296FD00EAEB37 /* natfeats.c */; }; + B3E0AB892892170300DB1E39 /* console.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB77287296FD00EAEB37 /* console.c */; }; + B3E0AB9E2892173300DB1E39 /* createBlankImage.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA3A287296FC00EAEB37 /* createBlankImage.c */; }; + B3E0AB9F2892173300DB1E39 /* dim.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA33287296FC00EAEB37 /* dim.c */; }; + B3E0ABA02892173300DB1E39 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA41287296FC00EAEB37 /* zip.c */; }; + B3E0ABA12892173300DB1E39 /* msa.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAADF287296FD00EAEB37 /* msa.c */; }; + B3E0ABA22892173300DB1E39 /* st.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAADC287296FD00EAEB37 /* st.c */; }; + B3E0ABA32892177A00DB1E39 /* hd6301_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAC3287296FC00EAEB37 /* hd6301_cpu.c */; }; + B3E0ABA42892177A00DB1E39 /* ide.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB16287296FD00EAEB37 /* ide.c */; }; + B3E0ABA52892177A00DB1E39 /* control.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAADD287296FD00EAEB37 /* control.c */; }; + B3E0ABA62892177A00DB1E39 /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB4B287296FD00EAEB37 /* audio.c */; }; + B3E0ABA72892177A00DB1E39 /* bios.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAADE287296FD00EAEB37 /* bios.c */; }; + B3E0ABA82892177A00DB1E39 /* ikbd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAF3287296FD00EAEB37 /* ikbd.c */; }; + B3E0ABA92892177A00DB1E39 /* cart.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA32287296FC00EAEB37 /* cart.c */; }; + B3E0ABAA2892177A00DB1E39 /* ioMemTabTT.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA40287296FC00EAEB37 /* ioMemTabTT.c */; }; + B3E0ABAB2892177A00DB1E39 /* cfgopts.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB0C287296FD00EAEB37 /* cfgopts.c */; }; + B3E0ABAC2892177A00DB1E39 /* floppy.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAF2287296FD00EAEB37 /* floppy.c */; }; + B3E0ABAD2892177A00DB1E39 /* cycInt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB18287296FD00EAEB37 /* cycInt.c */; }; + B3E0ABAE2892177A00DB1E39 /* dmaSnd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA3C287296FC00EAEB37 /* dmaSnd.c */; }; + B3E0ABAF2892177A00DB1E39 /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB14287296FD00EAEB37 /* file.c */; }; + B3E0ABB02892177A00DB1E39 /* floppy_stx.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAC1287296FC00EAEB37 /* floppy_stx.c */; }; + B3E0ABB12892177A00DB1E39 /* change.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA38287296FC00EAEB37 /* change.c */; }; + B3E0ABB22892177A00DB1E39 /* clocks_timings.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB19287296FD00EAEB37 /* clocks_timings.c */; }; + B3E0ABB32892177A00DB1E39 /* dialog.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB0D287296FD00EAEB37 /* dialog.c */; }; + B3E0ABB42892177A00DB1E39 /* floppy_ipf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA3B287296FC00EAEB37 /* floppy_ipf.c */; }; + B3E0ABB52892177A00DB1E39 /* ioMemTabFalcon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB12287296FD00EAEB37 /* ioMemTabFalcon.c */; }; + B3E0ABB62892177A00DB1E39 /* fdc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB0F287296FD00EAEB37 /* fdc.c */; }; + B3E0ABB72892177A00DB1E39 /* ioMem.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA34287296FC00EAEB37 /* ioMem.c */; }; + B3E0ABB82892177A00DB1E39 /* blitter.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAF5287296FD00EAEB37 /* blitter.c */; }; + B3E0ABB92892177A00DB1E39 /* cycles.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB11287296FD00EAEB37 /* cycles.c */; }; + B3E0ABBA2892177A00DB1E39 /* configuration.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB83287296FD00EAEB37 /* configuration.c */; }; + B3E0ABBB2892177A00DB1E39 /* avi_record.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE1287296FD00EAEB37 /* avi_record.c */; }; + B3E0ABBC2892177A00DB1E39 /* ioMemTabST.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB15287296FD00EAEB37 /* ioMemTabST.c */; }; + B3E0ABBD2892177A00DB1E39 /* ioMemTabSTE.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB10287296FD00EAEB37 /* ioMemTabSTE.c */; }; + B3E0ABBE2892177A00DB1E39 /* acia.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA72287296FC00EAEB37 /* acia.c */; }; + B3E0ABBF2892177A00DB1E39 /* gemdos.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE0287296FD00EAEB37 /* gemdos.c */; }; + B3E0ABC02892177A00DB1E39 /* hdc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA75287296FC00EAEB37 /* hdc.c */; }; + B3E0ABDF289217BD00DB1E39 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE8287296FD00EAEB37 /* main.c */; }; + B3E0ABE0289217BD00DB1E39 /* video.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA3F287296FC00EAEB37 /* video.c */; }; + B3E0ABE1289217BD00DB1E39 /* spec512.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA73287296FC00EAEB37 /* spec512.c */; }; + B3E0ABE2289217BD00DB1E39 /* wavFormat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAC4287296FC00EAEB37 /* wavFormat.c */; }; + B3E0ABE3289217BD00DB1E39 /* keymap.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAC2287296FC00EAEB37 /* keymap.c */; }; + B3E0ABE4289217BD00DB1E39 /* memorySnapShot.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB0E287296FD00EAEB37 /* memorySnapShot.c */; }; + B3E0ABE5289217BD00DB1E39 /* paths.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA3E287296FC00EAEB37 /* paths.c */; }; + B3E0ABE6289217BD00DB1E39 /* printer.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE7287296FD00EAEB37 /* printer.c */; }; + B3E0ABE7289217BD00DB1E39 /* rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA3D287296FC00EAEB37 /* rtc.c */; }; + B3E0ABE8289217BD00DB1E39 /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE5287296FD00EAEB37 /* utils.c */; }; + B3E0ABE9289217BD00DB1E39 /* scandir.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA76287296FC00EAEB37 /* scandir.c */; }; + B3E0ABEA289217BD00DB1E39 /* resolution.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA77287296FC00EAEB37 /* resolution.c */; }; + B3E0ABEB289217BD00DB1E39 /* vdi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE4287296FD00EAEB37 /* vdi.c */; }; + B3E0ABEC289217BD00DB1E39 /* joy.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE9287296FD00EAEB37 /* joy.c */; }; + B3E0ABED289217BD00DB1E39 /* m68000.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAF1287296FD00EAEB37 /* m68000.c */; }; + B3E0ABEE289217BD00DB1E39 /* reset.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAADB287296FD00EAEB37 /* reset.c */; }; + B3E0ABEF289217BD00DB1E39 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAEB287296FD00EAEB37 /* sound.c */; }; + B3E0ABF0289217BD00DB1E39 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA39287296FC00EAEB37 /* unzip.c */; }; + B3E0ABF1289217BD00DB1E39 /* psg.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAB13287296FD00EAEB37 /* psg.c */; }; + B3E0ABF2289217BD00DB1E39 /* shortcut.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE6287296FD00EAEB37 /* shortcut.c */; }; + B3E0ABF3289217BD00DB1E39 /* mfp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA7A287296FC00EAEB37 /* mfp.c */; }; + B3E0ABF4289217BD00DB1E39 /* tos.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA79287296FC00EAEB37 /* tos.c */; }; + B3E0ABF5289217BD00DB1E39 /* screenSnapShot.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAE2287296FD00EAEB37 /* screenSnapShot.c */; }; + B3E0ABF6289217BD00DB1E39 /* midi.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAF6287296FD00EAEB37 /* midi.c */; }; + B3E0ABF7289217BD00DB1E39 /* rs232.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAF4287296FD00EAEB37 /* rs232.c */; }; + B3E0ABF8289217BD00DB1E39 /* str.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA78287296FC00EAEB37 /* str.c */; }; + B3E0ABF9289217BD00DB1E39 /* screen.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA74287296FC00EAEB37 /* screen.c */; }; + B3E0ABFA289217BD00DB1E39 /* ymFormat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAAEA287296FD00EAEB37 /* ymFormat.c */; }; + B3E0ABFB289217BD00DB1E39 /* xbios.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBAA35287296FC00EAEB37 /* xbios.c */; }; + B3E0AC19289217CA00DB1E39 /* libco.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA9AB287296FC00EAEB37 /* libco.c */; }; + B3E0AC1B289217EC00DB1E39 /* vkbd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA9BD287296FC00EAEB37 /* vkbd.c */; }; + B3E0AC1C289217EC00DB1E39 /* retro_strings.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA92F287296FB00EAEB37 /* retro_strings.c */; }; + B3E0AC1D289217EC00DB1E39 /* hatari-mapper.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA943287296FB00EAEB37 /* hatari-mapper.c */; }; + B3E0AC1E289217EC00DB1E39 /* bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA9B6287296FC00EAEB37 /* bmp.c */; }; + B3E0AC1F289217EC00DB1E39 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA92E287296FB00EAEB37 /* libretro.c */; }; + B3E0AC20289217EC00DB1E39 /* dlgAlert.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA999287296FC00EAEB37 /* dlgAlert.c */; }; + B3E0AC21289217EC00DB1E39 /* retro_files.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA942287296FB00EAEB37 /* retro_files.c */; }; + B3E0AC22289217EC00DB1E39 /* retro_disk_control.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA930287296FB00EAEB37 /* retro_disk_control.c */; }; + B3E0AC23289217EC00DB1E39 /* graph.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA9BC287296FC00EAEB37 /* graph.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libhatari.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhatari.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B32C4BF528922257001B51AE /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; + B32C4BF728922257001B51AE /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + B32C4BF928922257001B51AE /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/SDLMain.nib; sourceTree = ""; }; + B32C4BFB28922257001B51AE /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/SDLMain.xib; sourceTree = ""; }; + B32C4BFC28922257001B51AE /* Shared.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Shared.h; sourceTree = ""; }; + B32C4BFD28922257001B51AE /* Info-Hatari.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Hatari.plist"; sourceTree = ""; }; + B32C4BFE28922257001B51AE /* PrefsController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PrefsController.m; sourceTree = ""; }; + B32C4BFF28922257001B51AE /* SDLMain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = ""; }; + B32C4C0028922257001B51AE /* Info-Hatari Winuae.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Hatari Winuae.plist"; sourceTree = ""; }; + B32C4C0128922257001B51AE /* disk.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = disk.icns; sourceTree = ""; }; + B32C4C0228922257001B51AE /* CreateFloppyController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CreateFloppyController.h; sourceTree = ""; }; + B32C4C0328922257001B51AE /* AlertHooks.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AlertHooks.m; sourceTree = ""; }; + B32C4C0428922257001B51AE /* Shared.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Shared.m; sourceTree = ""; }; + B32C4C0528922257001B51AE /* French */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/Localizable.strings; sourceTree = ""; }; + B32C4C0628922257001B51AE /* French */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/InfoPlist.strings; sourceTree = ""; }; + B32C4C0728922257001B51AE /* French */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path = French.lproj/SDLMain.nib; sourceTree = ""; }; + B32C4C0828922257001B51AE /* French */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = French; path = French.lproj/SDLMain.xib; sourceTree = ""; }; + B32C4C0928922257001B51AE /* Hatari.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Hatari.icns; sourceTree = ""; }; + B32C4C0A28922257001B51AE /* SDLMain.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = ""; }; + B32C4C0B28922257001B51AE /* PrefsController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrefsController.h; sourceTree = ""; }; + B32C4C0C28922257001B51AE /* AlertHooks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AlertHooks.h; sourceTree = ""; }; + B32C4C0D28922257001B51AE /* CreateFloppyController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CreateFloppyController.m; sourceTree = ""; }; + B32C4C0E289223DC001B51AE /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libhatari-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libhatari-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVHatari-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVHatari-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVHatari.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVHatari.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVHatari.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVHatari.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVHatariCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVHatariCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVHatariCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVHatariCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVHatari.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVHatari.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3E0AB35289214D900DB1E39 /* hatari.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = hatari.cfg; path = ../../hatari/PVHatari/hatari.cfg; sourceTree = ""; }; + B3EBA89B287296FB00EAEB37 /* VisualStudioFix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VisualStudioFix.h; sourceTree = ""; }; + B3EBA89C287296FB00EAEB37 /* VisualStudioFix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = VisualStudioFix.c; sourceTree = ""; }; + B3EBA89E287296FB00EAEB37 /* zip2st.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = zip2st.sh; sourceTree = ""; }; + B3EBA89F287296FB00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA8A0287296FB00EAEB37 /* hatari-local-rs232.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "hatari-local-rs232.sh"; sourceTree = ""; }; + B3EBA8A1287296FB00EAEB37 /* atari-hd-image.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = "atari-hd-image.1"; sourceTree = ""; }; + B3EBA8A3287296FB00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA8A4287296FB00EAEB37 /* floppy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = floppy.h; sourceTree = ""; }; + B3EBA8A5287296FB00EAEB37 /* hmsa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hmsa.h; sourceTree = ""; }; + B3EBA8A6287296FB00EAEB37 /* hmsa.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hmsa.1; sourceTree = ""; }; + B3EBA8A7287296FB00EAEB37 /* floppy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floppy.c; sourceTree = ""; }; + B3EBA8A8287296FB00EAEB37 /* hmsa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hmsa.c; sourceTree = ""; }; + B3EBA8A9287296FB00EAEB37 /* readme-hmsa.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "readme-hmsa.txt"; sourceTree = ""; }; + B3EBA8AB287296FB00EAEB37 /* ahcc-symbols-convert.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "ahcc-symbols-convert.sh"; sourceTree = ""; }; + B3EBA8AC287296FB00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA8AD287296FB00EAEB37 /* gst2ascii.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = gst2ascii.1; sourceTree = ""; }; + B3EBA8AE287296FB00EAEB37 /* hatari_profile.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hatari_profile.1; sourceTree = ""; }; + B3EBA8AF287296FB00EAEB37 /* nm-symbols-cleanup.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "nm-symbols-cleanup.sh"; sourceTree = ""; }; + B3EBA8B0287296FB00EAEB37 /* dsp-lod-symbols-convert.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "dsp-lod-symbols-convert.sh"; sourceTree = ""; }; + B3EBA8B1287296FB00EAEB37 /* hatari_spinloop.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = hatari_spinloop.py; sourceTree = ""; }; + B3EBA8B2287296FB00EAEB37 /* gst2ascii.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gst2ascii.c; sourceTree = ""; }; + B3EBA8B3287296FB00EAEB37 /* devpac3-symbols-convert.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "devpac3-symbols-convert.sh"; sourceTree = ""; }; + B3EBA8B4287296FB00EAEB37 /* hatari_profile.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = hatari_profile.py; sourceTree = ""; }; + B3EBA8B5287296FB00EAEB37 /* hatari-tos-register.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "hatari-tos-register.sh"; sourceTree = ""; }; + B3EBA8B6287296FB00EAEB37 /* hatari-local-midi-ring.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "hatari-local-midi-ring.sh"; sourceTree = ""; }; + B3EBA8B8287296FB00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA8B9287296FB00EAEB37 /* hconsole.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hconsole.1; sourceTree = ""; }; + B3EBA8BA287296FB00EAEB37 /* hconsole.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = hconsole.py; sourceTree = ""; }; + B3EBA8BB287296FB00EAEB37 /* release-notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "release-notes.txt"; sourceTree = ""; }; + B3EBA8BC287296FB00EAEB37 /* example.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = example.py; sourceTree = ""; }; + B3EBA8BD287296FB00EAEB37 /* example-debugger */ = {isa = PBXFileReference; lastKnownFileType = text; path = "example-debugger"; sourceTree = ""; }; + B3EBA8BE287296FB00EAEB37 /* example-commands */ = {isa = PBXFileReference; lastKnownFileType = text; path = "example-commands"; sourceTree = ""; }; + B3EBA8BF287296FB00EAEB37 /* zip2st.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = zip2st.1; sourceTree = ""; }; + B3EBA8C0287296FB00EAEB37 /* atari-hd-image.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "atari-hd-image.sh"; sourceTree = ""; }; + B3EBA8C1287296FB00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA8C3287296FB00EAEB37 /* FindCapsImage.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindCapsImage.cmake; sourceTree = ""; }; + B3EBA8C4287296FB00EAEB37 /* DistClean.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = DistClean.cmake; sourceTree = ""; }; + B3EBA8C5287296FB00EAEB37 /* FindSDL2.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindSDL2.cmake; sourceTree = ""; }; + B3EBA8C6287296FB00EAEB37 /* Toolchain-mingw32-win64_32.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Toolchain-mingw32-win64_32.cmake"; sourceTree = ""; }; + B3EBA8C7287296FB00EAEB37 /* config-cmake.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "config-cmake.h"; sourceTree = ""; }; + B3EBA8C8287296FB00EAEB37 /* Uninstall.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = Uninstall.cmake; sourceTree = ""; }; + B3EBA8C9287296FB00EAEB37 /* FindPortAudio.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindPortAudio.cmake; sourceTree = ""; }; + B3EBA8CA287296FB00EAEB37 /* FindTermcap.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindTermcap.cmake; sourceTree = ""; }; + B3EBA8CB287296FB00EAEB37 /* FindMath.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindMath.cmake; sourceTree = ""; }; + B3EBA8CC287296FB00EAEB37 /* FindReadline.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindReadline.cmake; sourceTree = ""; }; + B3EBA8CD287296FB00EAEB37 /* Toolchain-mingw32-win64_64.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Toolchain-mingw32-win64_64.cmake"; sourceTree = ""; }; + B3EBA8CE287296FB00EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA8CF287296FB00EAEB37 /* .hgignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .hgignore; sourceTree = ""; }; + B3EBA8D2287296FB00EAEB37 /* buserr_w.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = buserr_w.s; sourceTree = ""; }; + B3EBA8D3287296FB00EAEB37 /* buserr_b.prg */ = {isa = PBXFileReference; lastKnownFileType = file; path = buserr_b.prg; sourceTree = ""; }; + B3EBA8D4287296FB00EAEB37 /* buserr_w.prg */ = {isa = PBXFileReference; lastKnownFileType = file; path = buserr_w.prg; sourceTree = ""; }; + B3EBA8D5287296FB00EAEB37 /* buserr_b.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = buserr_b.s; sourceTree = ""; }; + B3EBA8D7287296FB00EAEB37 /* fal_n_b.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = fal_n_b.txt; sourceTree = ""; }; + B3EBA8D8287296FB00EAEB37 /* st_b.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = st_b.txt; sourceTree = ""; }; + B3EBA8D9287296FB00EAEB37 /* st_w.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = st_w.txt; sourceTree = ""; }; + B3EBA8DA287296FB00EAEB37 /* fal_n_w.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = fal_n_w.txt; sourceTree = ""; }; + B3EBA8DB287296FB00EAEB37 /* ste_b.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ste_b.txt; sourceTree = ""; }; + B3EBA8DC287296FB00EAEB37 /* ste_w.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ste_w.txt; sourceTree = ""; }; + B3EBA8DD287296FB00EAEB37 /* fal_c_b.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = fal_c_b.txt; sourceTree = ""; }; + B3EBA8DE287296FB00EAEB37 /* fal_c_w.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = fal_c_w.txt; sourceTree = ""; }; + B3EBA8DF287296FB00EAEB37 /* tt_b.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = tt_b.txt; sourceTree = ""; }; + B3EBA8E0287296FB00EAEB37 /* tt_w.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = tt_w.txt; sourceTree = ""; }; + B3EBA8E1287296FB00EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA8E3287296FB00EAEB37 /* nf_ahcc.prj */ = {isa = PBXFileReference; lastKnownFileType = text; path = nf_ahcc.prj; sourceTree = ""; }; + B3EBA8E4287296FB00EAEB37 /* makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = ""; }; + B3EBA8E5287296FB00EAEB37 /* Makefile.vbc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.vbc; sourceTree = ""; }; + B3EBA8E6287296FB00EAEB37 /* natfeats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = natfeats.h; sourceTree = ""; }; + B3EBA8E7287296FB00EAEB37 /* nf_vbcc.tos */ = {isa = PBXFileReference; lastKnownFileType = file; path = nf_vbcc.tos; sourceTree = ""; }; + B3EBA8E8287296FB00EAEB37 /* nf_asma.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = nf_asma.s; sourceTree = ""; }; + B3EBA8E9287296FB00EAEB37 /* nf_asmv.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = nf_asmv.s; sourceTree = ""; }; + B3EBA8EA287296FB00EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA8EB287296FB00EAEB37 /* Makefile.gcc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.gcc; sourceTree = ""; }; + B3EBA8EC287296FB00EAEB37 /* nf_asmg.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = nf_asmg.s; sourceTree = ""; }; + B3EBA8ED287296FB00EAEB37 /* natfeats.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = natfeats.c; sourceTree = ""; }; + B3EBA8EF287296FB00EAEB37 /* keytest.prg */ = {isa = PBXFileReference; lastKnownFileType = file; path = keytest.prg; sourceTree = ""; }; + B3EBA8F0287296FB00EAEB37 /* keytest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keytest.c; sourceTree = ""; }; + B3EBA8F1287296FB00EAEB37 /* keytest.rso */ = {isa = PBXFileReference; lastKnownFileType = file; path = keytest.rso; sourceTree = ""; }; + B3EBA8F2287296FB00EAEB37 /* listkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = listkeys.c; sourceTree = ""; }; + B3EBA8F3287296FB00EAEB37 /* checkkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = checkkeys.c; sourceTree = ""; }; + B3EBA8F4287296FB00EAEB37 /* keytest.mak */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = keytest.mak; sourceTree = ""; }; + B3EBA8F5287296FB00EAEB37 /* keytest.prj */ = {isa = PBXFileReference; lastKnownFileType = text; path = keytest.prj; sourceTree = ""; }; + B3EBA8F6287296FB00EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA8F7287296FB00EAEB37 /* keytest.rsc */ = {isa = PBXFileReference; lastKnownFileType = file; path = keytest.rsc; sourceTree = ""; }; + B3EBA8F9287296FB00EAEB37 /* test-symbols.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "test-symbols.c"; sourceTree = ""; }; + B3EBA8FA287296FB00EAEB37 /* test-dummies.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "test-dummies.c"; sourceTree = ""; }; + B3EBA8FB287296FB00EAEB37 /* makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = ""; }; + B3EBA8FC287296FB00EAEB37 /* test-evaluate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "test-evaluate.c"; sourceTree = ""; }; + B3EBA8FD287296FB00EAEB37 /* test-breakcond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "test-breakcond.c"; sourceTree = ""; }; + B3EBA8FE287296FB00EAEB37 /* test-scripting.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "test-scripting.sh"; sourceTree = ""; }; + B3EBA900287296FB00EAEB37 /* etos512.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = etos512.sym; sourceTree = ""; }; + B3EBA901287296FB00EAEB37 /* test.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = test.ini; sourceTree = ""; }; + B3EBA902287296FB00EAEB37 /* console.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = console.ini; sourceTree = ""; }; + B3EBA903287296FB00EAEB37 /* os-header.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = "os-header.sym"; sourceTree = ""; }; + B3EBA904287296FB00EAEB37 /* debugger.ini */ = {isa = PBXFileReference; lastKnownFileType = text; path = debugger.ini; sourceTree = ""; }; + B3EBA905287296FB00EAEB37 /* dsp-test.sym */ = {isa = PBXFileReference; lastKnownFileType = text; path = "dsp-test.sym"; sourceTree = ""; }; + B3EBA906287296FB00EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA908287296FB00EAEB37 /* bootauto.st.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = bootauto.st.gz; sourceTree = ""; }; + B3EBA909287296FB00EAEB37 /* makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = ""; }; + B3EBA90A287296FB00EAEB37 /* .hgignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .hgignore; sourceTree = ""; }; + B3EBA90B287296FB00EAEB37 /* screenshot-report.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "screenshot-report.sh"; sourceTree = ""; }; + B3EBA90D287296FB00EAEB37 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = common.c; sourceTree = ""; }; + B3EBA90E287296FB00EAEB37 /* minimal.prj */ = {isa = PBXFileReference; lastKnownFileType = text; path = minimal.prj; sourceTree = ""; }; + B3EBA90F287296FB00EAEB37 /* TEST */ = {isa = PBXFileReference; lastKnownFileType = text; path = TEST; sourceTree = ""; }; + B3EBA910287296FB00EAEB37 /* ahcc-gemdos */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ahcc-gemdos"; sourceTree = ""; }; + B3EBA911287296FB00EAEB37 /* minimal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = minimal.c; sourceTree = ""; }; + B3EBA912287296FB00EAEB37 /* .hgignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .hgignore; sourceTree = ""; }; + B3EBA913287296FB00EAEB37 /* GEMDOS.PRG */ = {isa = PBXFileReference; lastKnownFileType = file; path = GEMDOS.PRG; sourceTree = ""; }; + B3EBA914287296FB00EAEB37 /* ahcc-minimal */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ahcc-minimal"; sourceTree = ""; }; + B3EBA915287296FB00EAEB37 /* gemdos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gemdos.c; sourceTree = ""; }; + B3EBA916287296FB00EAEB37 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B3EBA917287296FB00EAEB37 /* MINIMAL.PRG */ = {isa = PBXFileReference; lastKnownFileType = file; path = MINIMAL.PRG; sourceTree = ""; }; + B3EBA918287296FB00EAEB37 /* TEXT */ = {isa = PBXFileReference; lastKnownFileType = text; path = TEXT; sourceTree = ""; }; + B3EBA919287296FB00EAEB37 /* gemdos.prj */ = {isa = PBXFileReference; lastKnownFileType = text; path = gemdos.prj; sourceTree = ""; }; + B3EBA91A287296FB00EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA91B287296FB00EAEB37 /* bootdesk.st.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = bootdesk.st.gz; sourceTree = ""; }; + B3EBA91C287296FB00EAEB37 /* tos_tester.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = tos_tester.py; sourceTree = ""; }; + B3EBA91E287296FB00EAEB37 /* EMUDESK.INF */ = {isa = PBXFileReference; lastKnownFileType = text; path = EMUDESK.INF; sourceTree = ""; }; + B3EBA91F287296FB00EAEB37 /* DESKTOP.INF */ = {isa = PBXFileReference; lastKnownFileType = text; path = DESKTOP.INF; sourceTree = ""; }; + B3EBA920287296FB00EAEB37 /* blank-a.st.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = "blank-a.st.gz"; sourceTree = ""; }; + B3EBA922287296FB00EAEB37 /* win-ce.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = "win-ce.cfg"; sourceTree = ""; }; + B3EBA923287296FB00EAEB37 /* wiz.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = wiz.cfg; sourceTree = ""; }; + B3EBA925287296FB00EAEB37 /* hatari-wrapper.gpe */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "hatari-wrapper.gpe"; sourceTree = ""; }; + B3EBA926287296FB00EAEB37 /* crossdefs.wiz */ = {isa = PBXFileReference; lastKnownFileType = text; path = crossdefs.wiz; sourceTree = ""; }; + B3EBA927287296FB00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA928287296FB00EAEB37 /* n810.cfg */ = {isa = PBXFileReference; lastKnownFileType = text; path = n810.cfg; sourceTree = ""; }; + B3EBA929287296FB00EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EBA92A287296FB00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA92B287296FB00EAEB37 /* Makefile.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.libretro; sourceTree = ""; }; + B3EBA92C287296FB00EAEB37 /* gpl.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = gpl.txt; sourceTree = ""; }; + B3EBA92E287296FB00EAEB37 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3EBA92F287296FB00EAEB37 /* retro_strings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_strings.c; sourceTree = ""; }; + B3EBA930287296FB00EAEB37 /* retro_disk_control.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_disk_control.c; sourceTree = ""; }; + B3EBA932287296FB00EAEB37 /* cpudefs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpudefs.c; sourceTree = ""; }; + B3EBA933287296FB00EAEB37 /* cputbl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cputbl.h; sourceTree = ""; }; + B3EBA934287296FB00EAEB37 /* cpuemu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpuemu.c; sourceTree = ""; }; + B3EBA935287296FB00EAEB37 /* cpustbl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpustbl.c; sourceTree = ""; }; + B3EBA936287296FB00EAEB37 /* RETROHACK.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = RETROHACK.txt; sourceTree = ""; }; + B3EBA938287296FB00EAEB37 /* retroscreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retroscreen.h; sourceTree = ""; }; + B3EBA939287296FB00EAEB37 /* SDL_endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_endian.h; sourceTree = ""; }; + B3EBA93A287296FB00EAEB37 /* SDL_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_types.h; sourceTree = ""; }; + B3EBA93B287296FB00EAEB37 /* SDL_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keyboard.h; sourceTree = ""; }; + B3EBA93C287296FB00EAEB37 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3EBA93D287296FB00EAEB37 /* SDL_keysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keysym.h; sourceTree = ""; }; + B3EBA93E287296FB00EAEB37 /* SDL_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_video.h; sourceTree = ""; }; + B3EBA93F287296FB00EAEB37 /* SDL_thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_thread.h; sourceTree = ""; }; + B3EBA940287296FB00EAEB37 /* SDL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = ""; }; + B3EBA941287296FB00EAEB37 /* gui-retro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gui-retro.h"; sourceTree = ""; }; + B3EBA942287296FB00EAEB37 /* retro_files.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_files.c; sourceTree = ""; }; + B3EBA943287296FB00EAEB37 /* hatari-mapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "hatari-mapper.c"; sourceTree = ""; }; + B3EBA946287296FB00EAEB37 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B3EBA947287296FB00EAEB37 /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B3EBA948287296FB00EAEB37 /* iowin32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iowin32.h; sourceTree = ""; }; + B3EBA949287296FB00EAEB37 /* ioapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + B3EBA94A287296FB00EAEB37 /* mztools.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; }; + B3EBA94B287296FB00EAEB37 /* crypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + B3EBA94C287296FB00EAEB37 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B3EBA94D287296FB00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA94E287296FB00EAEB37 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B3EBA94F287296FB00EAEB37 /* mztools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; }; + B3EBA950287296FB00EAEB37 /* ioapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + B3EBA951287296FB00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA953287296FB00EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBA954287296FB00EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EBA955287296FB00EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EBA956287296FB00EAEB37 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3EBA957287296FB00EAEB37 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3EBA958287296FB00EAEB37 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3EBA959287296FB00EAEB37 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3EBA95A287296FB00EAEB37 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3EBA95B287296FB00EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EBA95E287296FB00EAEB37 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B3EBA95F287296FB00EAEB37 /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B3EBA960287296FB00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA961287296FB00EAEB37 /* ioapi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + B3EBA962287296FB00EAEB37 /* mztools.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; }; + B3EBA963287296FB00EAEB37 /* crypt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + B3EBA964287296FB00EAEB37 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B3EBA965287296FB00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA966287296FB00EAEB37 /* make_vms.com */ = {isa = PBXFileReference; lastKnownFileType = text; path = make_vms.com; sourceTree = ""; }; + B3EBA967287296FB00EAEB37 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B3EBA968287296FB00EAEB37 /* mztools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; }; + B3EBA969287296FB00EAEB37 /* ioapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + B3EBA96A287296FB00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA96B287296FB00EAEB37 /* miniunz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = miniunz.c; sourceTree = ""; }; + B3EBA96C287296FB00EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EBA96D287296FB00EAEB37 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3EBA96E287296FB00EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EBA96F287296FB00EAEB37 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3EBA970287296FB00EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EBA971287296FB00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA972287296FB00EAEB37 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3EBA973287296FB00EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EBA974287296FB00EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EBA975287296FB00EAEB37 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B3EBA976287296FB00EAEB37 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B3EBA977287296FB00EAEB37 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B3EBA978287296FB00EAEB37 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B3EBA979287296FB00EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EBA97A287296FB00EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EBA97B287296FB00EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EBA97C287296FB00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA97D287296FB00EAEB37 /* vkbd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vkbd.h; sourceTree = ""; }; + B3EBA97E287296FB00EAEB37 /* graph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = graph.h; sourceTree = ""; }; + B3EBA97F287296FB00EAEB37 /* libretro-hatari.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "libretro-hatari.h"; sourceTree = ""; }; + B3EBA981287296FB00EAEB37 /* dlgFloppy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgFloppy.c; sourceTree = ""; }; + B3EBA982287296FB00EAEB37 /* dlgDevice.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgDevice.c; sourceTree = ""; }; + B3EBA983287296FB00EAEB37 /* dlgJoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgJoystick.c; sourceTree = ""; }; + B3EBA984287296FB00EAEB37 /* dlgHardDisk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgHardDisk.c; sourceTree = ""; }; + B3EBA985287296FB00EAEB37 /* font10x16.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = font10x16.bmp; sourceTree = ""; }; + B3EBA986287296FB00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA987287296FB00EAEB37 /* dlgRom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgRom.c; sourceTree = ""; }; + B3EBA988287296FB00EAEB37 /* dlgMain.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgMain.c; sourceTree = ""; }; + B3EBA989287296FB00EAEB37 /* dlgNewDisk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgNewDisk.c; sourceTree = ""; }; + B3EBA98A287296FB00EAEB37 /* dlgAbout.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgAbout.c; sourceTree = ""; }; + B3EBA98B287296FB00EAEB37 /* dlgSound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgSound.c; sourceTree = ""; }; + B3EBA98C287296FB00EAEB37 /* sdlgui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdlgui.c; sourceTree = ""; }; + B3EBA98D287296FB00EAEB37 /* dlgMemory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgMemory.c; sourceTree = ""; }; + B3EBA98E287296FB00EAEB37 /* font5x8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font5x8.h; sourceTree = ""; }; + B3EBA98F287296FB00EAEB37 /* font5x8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = font5x8.bmp; sourceTree = ""; }; + B3EBA990287296FB00EAEB37 /* dlgAlert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgAlert.c; sourceTree = ""; }; + B3EBA991287296FB00EAEB37 /* dlgFileSelect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgFileSelect.c; sourceTree = ""; }; + B3EBA992287296FC00EAEB37 /* font10x16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font10x16.h; sourceTree = ""; }; + B3EBA993287296FC00EAEB37 /* dlgKeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgKeyboard.c; sourceTree = ""; }; + B3EBA994287296FC00EAEB37 /* dlgScreen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgScreen.c; sourceTree = ""; }; + B3EBA995287296FC00EAEB37 /* dlgSystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgSystem.c; sourceTree = ""; }; + B3EBA996287296FC00EAEB37 /* retro_strings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_strings.h; sourceTree = ""; }; + B3EBA997287296FC00EAEB37 /* retromain.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = retromain.inc; sourceTree = ""; }; + B3EBA999287296FC00EAEB37 /* dlgAlert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgAlert.c; sourceTree = ""; }; + B3EBA99C287296FC00EAEB37 /* libco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; + B3EBA99F287296FC00EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBA9A0287296FC00EAEB37 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3EBA9A1287296FC00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA9A2287296FC00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA9A3287296FC00EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBA9A4287296FC00EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBA9A6287296FC00EAEB37 /* sjlj.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjlj.c; sourceTree = ""; }; + B3EBA9A7287296FC00EAEB37 /* ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ppc.c; sourceTree = ""; }; + B3EBA9A8287296FC00EAEB37 /* ucontext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ucontext.c; sourceTree = ""; }; + B3EBA9A9287296FC00EAEB37 /* fiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fiber.c; sourceTree = ""; }; + B3EBA9AA287296FC00EAEB37 /* aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aarch64.c; sourceTree = ""; }; + B3EBA9AB287296FC00EAEB37 /* libco.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libco.c; sourceTree = ""; }; + B3EBA9AC287296FC00EAEB37 /* scefiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scefiber.c; sourceTree = ""; }; + B3EBA9AD287296FC00EAEB37 /* genode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = genode.cpp; sourceTree = ""; }; + B3EBA9AE287296FC00EAEB37 /* armeabi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armeabi.c; sourceTree = ""; }; + B3EBA9AF287296FC00EAEB37 /* amd64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = amd64.c; sourceTree = ""; }; + B3EBA9B0287296FC00EAEB37 /* psp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp2.c; sourceTree = ""; }; + B3EBA9B1287296FC00EAEB37 /* x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = ""; }; + B3EBA9B2287296FC00EAEB37 /* psp1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp1.c; sourceTree = ""; }; + B3EBA9B3287296FC00EAEB37 /* vkbd_def.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vkbd_def.h; sourceTree = ""; }; + B3EBA9B4287296FC00EAEB37 /* retro_disk_control.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_disk_control.h; sourceTree = ""; }; + B3EBA9B5287296FC00EAEB37 /* cmdline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cmdline.c; sourceTree = ""; }; + B3EBA9B6287296FC00EAEB37 /* bmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bmp.c; sourceTree = ""; }; + B3EBA9B7287296FC00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA9B9287296FC00EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBA9BA287296FC00EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBA9BB287296FC00EAEB37 /* STkeymap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STkeymap.h; sourceTree = ""; }; + B3EBA9BC287296FC00EAEB37 /* graph.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = graph.c; sourceTree = ""; }; + B3EBA9BD287296FC00EAEB37 /* vkbd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vkbd.c; sourceTree = ""; }; + B3EBA9BE287296FC00EAEB37 /* retro_files.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_files.h; sourceTree = ""; }; + B3EBA9BF287296FC00EAEB37 /* font2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font2.c; sourceTree = ""; }; + B3EBA9C0287296FC00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA9C2287296FC00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA9C3287296FC00EAEB37 /* hatari.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hatari.1; sourceTree = ""; }; + B3EBA9C4287296FC00EAEB37 /* todo.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = todo.txt; sourceTree = ""; }; + B3EBA9C6287296FC00EAEB37 /* callgraph.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = callgraph.svg; sourceTree = ""; }; + B3EBA9C7287296FC00EAEB37 /* floppydisks.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = floppydisks.png; sourceTree = ""; }; + B3EBA9C8287296FC00EAEB37 /* main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = main.png; sourceTree = ""; }; + B3EBA9C9287296FC00EAEB37 /* joystick.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = joystick.png; sourceTree = ""; }; + B3EBA9CA287296FC00EAEB37 /* keyboard.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = keyboard.png; sourceTree = ""; }; + B3EBA9CB287296FC00EAEB37 /* devices.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = devices.png; sourceTree = ""; }; + B3EBA9CC287296FC00EAEB37 /* callgraph.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = callgraph.png; sourceTree = ""; }; + B3EBA9CD287296FC00EAEB37 /* sound.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sound.png; sourceTree = ""; }; + B3EBA9CE287296FC00EAEB37 /* harddisks.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = harddisks.png; sourceTree = ""; }; + B3EBA9CF287296FC00EAEB37 /* system.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = system.png; sourceTree = ""; }; + B3EBA9D0287296FC00EAEB37 /* monitor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = monitor.png; sourceTree = ""; }; + B3EBA9D1287296FC00EAEB37 /* screen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screen.png; sourceTree = ""; }; + B3EBA9D2287296FC00EAEB37 /* tos.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tos.png; sourceTree = ""; }; + B3EBA9D3287296FC00EAEB37 /* kcachegrind.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = kcachegrind.png; sourceTree = ""; }; + B3EBA9D4287296FC00EAEB37 /* fileselector.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fileselector.png; sourceTree = ""; }; + B3EBA9D5287296FC00EAEB37 /* newfloppy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = newfloppy.png; sourceTree = ""; }; + B3EBA9D6287296FC00EAEB37 /* memory.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = memory.png; sourceTree = ""; }; + B3EBA9D7287296FC00EAEB37 /* emutos.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = emutos.txt; sourceTree = ""; }; + B3EBA9D8287296FC00EAEB37 /* toc.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = toc.js; sourceTree = ""; }; + B3EBA9D9287296FC00EAEB37 /* release-notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "release-notes.txt"; sourceTree = ""; }; + B3EBA9DA287296FC00EAEB37 /* compatibility.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = compatibility.html; sourceTree = ""; }; + B3EBA9DB287296FC00EAEB37 /* coding.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = coding.txt; sourceTree = ""; }; + B3EBA9DD287296FC00EAEB37 /* tastatur-windows.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "tastatur-windows.txt"; sourceTree = ""; }; + B3EBA9DF287296FC00EAEB37 /* hatari.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hatari.1; sourceTree = ""; }; + B3EBA9E0287296FC00EAEB37 /* clavier-exemple.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "clavier-exemple.txt"; sourceTree = ""; }; + B3EBA9E2287296FC00EAEB37 /* Doxyfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile; sourceTree = ""; }; + B3EBA9E3287296FC00EAEB37 /* authors.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = authors.txt; sourceTree = ""; }; + B3EBA9E4287296FC00EAEB37 /* manual.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = manual.html; sourceTree = ""; }; + B3EBA9E5287296FC00EAEB37 /* keymap-sample.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "keymap-sample.txt"; sourceTree = ""; }; + B3EBA9E6287296FC00EAEB37 /* midi-linux.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "midi-linux.txt"; sourceTree = ""; }; + B3EBA9E7287296FC00EAEB37 /* memory-usage.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "memory-usage.txt"; sourceTree = ""; }; + B3EBA9E8287296FC00EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA9E9287296FC00EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBA9EA287296FC00EAEB37 /* hatari.spec */ = {isa = PBXFileReference; lastKnownFileType = text; path = hatari.spec; sourceTree = ""; }; + B3EBA9EB287296FC00EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3EBA9ED287296FC00EAEB37 /* hatariui */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = hatariui; sourceTree = ""; }; + B3EBA9EE287296FC00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA9EF287296FC00EAEB37 /* config.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = config.py; sourceTree = ""; }; + B3EBA9F0287296FC00EAEB37 /* release-notes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "release-notes.txt"; sourceTree = ""; }; + B3EBA9F2287296FC00EAEB37 /* pygtk-hatari-embed-test.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "pygtk-hatari-embed-test.py"; sourceTree = ""; }; + B3EBA9F3287296FC00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA9F4287296FC00EAEB37 /* pygtk-hello-world.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "pygtk-hello-world.py"; sourceTree = ""; }; + B3EBA9F5287296FC00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA9F6287296FC00EAEB37 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3EBA9F7287296FC00EAEB37 /* hatari-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "hatari-icon.png"; sourceTree = ""; }; + B3EBA9F8287296FC00EAEB37 /* hatari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hatari.png; sourceTree = ""; }; + B3EBA9F9287296FC00EAEB37 /* hatariui.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = hatariui.py; sourceTree = ""; }; + B3EBA9FA287296FC00EAEB37 /* gentypes.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = gentypes.py; sourceTree = ""; }; + B3EBA9FB287296FC00EAEB37 /* FILES */ = {isa = PBXFileReference; lastKnownFileType = text; path = FILES; sourceTree = ""; }; + B3EBA9FC287296FC00EAEB37 /* hatariui.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = hatariui.desktop; sourceTree = ""; }; + B3EBA9FD287296FC00EAEB37 /* dialogs.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = dialogs.py; sourceTree = ""; }; + B3EBA9FE287296FC00EAEB37 /* uihelpers.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = uihelpers.py; sourceTree = ""; }; + B3EBA9FF287296FC00EAEB37 /* .cvsignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .cvsignore; sourceTree = ""; }; + B3EBAA00287296FC00EAEB37 /* hatariui.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hatariui.1; sourceTree = ""; }; + B3EBAA01287296FC00EAEB37 /* hatari.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = hatari.py; sourceTree = ""; }; + B3EBAA02287296FC00EAEB37 /* debugui.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = debugui.py; sourceTree = ""; }; + B3EBAA04287296FC00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAA09287296FC00EAEB37 /* application-x-msa-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-msa-disk-image.png"; sourceTree = ""; }; + B3EBAA0A287296FC00EAEB37 /* application-x-st-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-st-disk-image.png"; sourceTree = ""; }; + B3EBAA0C287296FC00EAEB37 /* hatari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hatari.png; sourceTree = ""; }; + B3EBAA0F287296FC00EAEB37 /* application-x-msa-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-msa-disk-image.png"; sourceTree = ""; }; + B3EBAA10287296FC00EAEB37 /* application-x-st-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-st-disk-image.png"; sourceTree = ""; }; + B3EBAA12287296FC00EAEB37 /* hatari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hatari.png; sourceTree = ""; }; + B3EBAA15287296FC00EAEB37 /* application-x-msa-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-msa-disk-image.png"; sourceTree = ""; }; + B3EBAA16287296FC00EAEB37 /* application-x-st-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-st-disk-image.png"; sourceTree = ""; }; + B3EBAA18287296FC00EAEB37 /* hatari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hatari.png; sourceTree = ""; }; + B3EBAA1B287296FC00EAEB37 /* application-x-msa-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-msa-disk-image.png"; sourceTree = ""; }; + B3EBAA1C287296FC00EAEB37 /* application-x-st-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-st-disk-image.png"; sourceTree = ""; }; + B3EBAA1E287296FC00EAEB37 /* hatari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hatari.png; sourceTree = ""; }; + B3EBAA21287296FC00EAEB37 /* application-x-msa-disk-image.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "application-x-msa-disk-image.svg"; sourceTree = ""; }; + B3EBAA22287296FC00EAEB37 /* application-x-st-disk-image.svg */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "application-x-st-disk-image.svg"; sourceTree = ""; }; + B3EBAA24287296FC00EAEB37 /* hatari.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = hatari.svg; sourceTree = ""; }; + B3EBAA27287296FC00EAEB37 /* application-x-msa-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-msa-disk-image.png"; sourceTree = ""; }; + B3EBAA28287296FC00EAEB37 /* application-x-st-disk-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "application-x-st-disk-image.png"; sourceTree = ""; }; + B3EBAA2A287296FC00EAEB37 /* hatari.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hatari.png; sourceTree = ""; }; + B3EBAA2C287296FC00EAEB37 /* hatari.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = hatari.desktop; sourceTree = ""; }; + B3EBAA2F287296FC00EAEB37 /* hatari.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = hatari.xml; sourceTree = ""; }; + B3EBAA31287296FC00EAEB37 /* stMemory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stMemory.c; sourceTree = ""; }; + B3EBAA32287296FC00EAEB37 /* cart.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cart.c; sourceTree = ""; }; + B3EBAA33287296FC00EAEB37 /* dim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dim.c; sourceTree = ""; }; + B3EBAA34287296FC00EAEB37 /* ioMem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioMem.c; sourceTree = ""; }; + B3EBAA35287296FC00EAEB37 /* xbios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xbios.c; sourceTree = ""; }; + B3EBAA36287296FC00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAA37287296FC00EAEB37 /* hatari-icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = "hatari-icon.bmp"; sourceTree = ""; }; + B3EBAA38287296FC00EAEB37 /* change.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = change.c; sourceTree = ""; }; + B3EBAA39287296FC00EAEB37 /* unzip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + B3EBAA3A287296FC00EAEB37 /* createBlankImage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = createBlankImage.c; sourceTree = ""; }; + B3EBAA3B287296FC00EAEB37 /* floppy_ipf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floppy_ipf.c; sourceTree = ""; }; + B3EBAA3C287296FC00EAEB37 /* dmaSnd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dmaSnd.c; sourceTree = ""; }; + B3EBAA3D287296FC00EAEB37 /* rtc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtc.c; sourceTree = ""; }; + B3EBAA3E287296FC00EAEB37 /* paths.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = paths.c; sourceTree = ""; }; + B3EBAA3F287296FC00EAEB37 /* video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video.c; sourceTree = ""; }; + B3EBAA40287296FC00EAEB37 /* ioMemTabTT.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioMemTabTT.c; sourceTree = ""; }; + B3EBAA41287296FC00EAEB37 /* zip.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + B3EBAA43287296FC00EAEB37 /* events_jit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = events_jit.h; sourceTree = ""; }; + B3EBAA44287296FC00EAEB37 /* sysconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sysconfig.h; sourceTree = ""; }; + B3EBAA45287296FC00EAEB37 /* fpp-unknown.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "fpp-unknown.h"; sourceTree = ""; }; + B3EBAA46287296FC00EAEB37 /* table68k */ = {isa = PBXFileReference; lastKnownFileType = text; path = table68k; sourceTree = ""; }; + B3EBAA47287296FC00EAEB37 /* custom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = custom.h; sourceTree = ""; }; + B3EBAA48287296FC00EAEB37 /* m68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; + B3EBAA49287296FC00EAEB37 /* fpp-ieee-be.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "fpp-ieee-be.h"; sourceTree = ""; }; + B3EBAA4A287296FC00EAEB37 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3EBAA4B287296FC00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAA4C287296FC00EAEB37 /* events_normal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = events_normal.h; sourceTree = ""; }; + B3EBAA4D287296FC00EAEB37 /* hatari-glue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "hatari-glue.c"; sourceTree = ""; }; + B3EBAA4E287296FC00EAEB37 /* mmu_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mmu_common.h; sourceTree = ""; }; + B3EBAA4F287296FC00EAEB37 /* falcon_cycle030.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = falcon_cycle030.h; sourceTree = ""; }; + B3EBAA50287296FC00EAEB37 /* cpummu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpummu.h; sourceTree = ""; }; + B3EBAA51287296FC00EAEB37 /* readcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = readcpu.c; sourceTree = ""; }; + B3EBAA52287296FC00EAEB37 /* gencpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gencpu.c; sourceTree = ""; }; + B3EBAA53287296FC00EAEB37 /* newcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = newcpu.h; sourceTree = ""; }; + B3EBAA54287296FC00EAEB37 /* cpummu030.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpummu030.c; sourceTree = ""; }; + B3EBAA55287296FC00EAEB37 /* events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = events.h; sourceTree = ""; }; + B3EBAA56287296FC00EAEB37 /* md-fpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "md-fpp.h"; sourceTree = ""; }; + B3EBAA57287296FC00EAEB37 /* build68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = build68k.c; sourceTree = ""; }; + B3EBAA58287296FC00EAEB37 /* custom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = custom.c; sourceTree = ""; }; + B3EBAA59287296FC00EAEB37 /* cpummu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cpummu.c; sourceTree = ""; }; + B3EBAA5B287296FC00EAEB37 /* compemu_support.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compemu_support.c; sourceTree = ""; }; + B3EBAA5C287296FC00EAEB37 /* codegen_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = codegen_x86.c; sourceTree = ""; }; + B3EBAA5D287296FC00EAEB37 /* compemu_raw_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compemu_raw_x86.c; sourceTree = ""; }; + B3EBAA5E287296FC00EAEB37 /* comptbl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = comptbl.h; sourceTree = ""; }; + B3EBAA5F287296FC00EAEB37 /* compemu_fpp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compemu_fpp.c; sourceTree = ""; }; + B3EBAA60287296FC00EAEB37 /* codegen_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codegen_x86.h; sourceTree = ""; }; + B3EBAA61287296FC00EAEB37 /* compemu_support_codegen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compemu_support_codegen.c; sourceTree = ""; }; + B3EBAA62287296FC00EAEB37 /* compemu_codegen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compemu_codegen.h; sourceTree = ""; }; + B3EBAA63287296FC00EAEB37 /* compemu_optimizer_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compemu_optimizer_x86.c; sourceTree = ""; }; + B3EBAA64287296FC00EAEB37 /* gencomp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gencomp.c; sourceTree = ""; }; + B3EBAA65287296FC00EAEB37 /* compemu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compemu.h; sourceTree = ""; }; + B3EBAA66287296FC00EAEB37 /* readcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = readcpu.h; sourceTree = ""; }; + B3EBAA67287296FC00EAEB37 /* options_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = options_cpu.h; sourceTree = ""; }; + B3EBAA68287296FC00EAEB37 /* maccess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maccess.h; sourceTree = ""; }; + B3EBAA69287296FC00EAEB37 /* hatari-glue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "hatari-glue.h"; sourceTree = ""; }; + B3EBAA6A287296FC00EAEB37 /* compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compat.h; sourceTree = ""; }; + B3EBAA6B287296FC00EAEB37 /* cpu_prefetch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpu_prefetch.h; sourceTree = ""; }; + B3EBAA6C287296FC00EAEB37 /* memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + B3EBAA6D287296FC00EAEB37 /* cpummu030.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpummu030.h; sourceTree = ""; }; + B3EBAA6E287296FC00EAEB37 /* newcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = newcpu.c; sourceTree = ""; }; + B3EBAA6F287296FC00EAEB37 /* sysdeps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sysdeps.h; sourceTree = ""; }; + B3EBAA70287296FC00EAEB37 /* fpp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fpp.c; sourceTree = ""; }; + B3EBAA71287296FC00EAEB37 /* savestate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = savestate.h; sourceTree = ""; }; + B3EBAA72287296FC00EAEB37 /* acia.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = acia.c; sourceTree = ""; }; + B3EBAA73287296FC00EAEB37 /* spec512.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spec512.c; sourceTree = ""; }; + B3EBAA74287296FC00EAEB37 /* screen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = screen.c; sourceTree = ""; }; + B3EBAA75287296FC00EAEB37 /* hdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hdc.c; sourceTree = ""; }; + B3EBAA76287296FC00EAEB37 /* scandir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scandir.c; sourceTree = ""; }; + B3EBAA77287296FC00EAEB37 /* resolution.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = resolution.c; sourceTree = ""; }; + B3EBAA78287296FC00EAEB37 /* str.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = str.c; sourceTree = ""; }; + B3EBAA79287296FC00EAEB37 /* tos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tos.c; sourceTree = ""; }; + B3EBAA7A287296FC00EAEB37 /* mfp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mfp.c; sourceTree = ""; }; + B3EBAA7B287296FC00EAEB37 /* cartData.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cartData.c; sourceTree = ""; }; + B3EBAA7D287296FC00EAEB37 /* ymFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ymFormat.h; sourceTree = ""; }; + B3EBAA7E287296FC00EAEB37 /* joy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joy.h; sourceTree = ""; }; + B3EBAA7F287296FC00EAEB37 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B3EBAA80287296FC00EAEB37 /* sound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; + B3EBAA81287296FC00EAEB37 /* screenSnapShot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = screenSnapShot.h; sourceTree = ""; }; + B3EBAA82287296FC00EAEB37 /* avi_record.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = avi_record.h; sourceTree = ""; }; + B3EBAA83287296FC00EAEB37 /* ioMemTables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioMemTables.h; sourceTree = ""; }; + B3EBAA84287296FC00EAEB37 /* printer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = printer.h; sourceTree = ""; }; + B3EBAA85287296FC00EAEB37 /* shortcut.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shortcut.h; sourceTree = ""; }; + B3EBAA86287296FC00EAEB37 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B3EBAA87287296FC00EAEB37 /* vdi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vdi.h; sourceTree = ""; }; + B3EBAA88287296FC00EAEB37 /* gemdos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gemdos.h; sourceTree = ""; }; + B3EBAA89287296FC00EAEB37 /* bios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bios.h; sourceTree = ""; }; + B3EBAA8A287296FC00EAEB37 /* control.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = control.h; sourceTree = ""; }; + B3EBAA8B287296FC00EAEB37 /* sdlgui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sdlgui.h; sourceTree = ""; }; + B3EBAA8C287296FC00EAEB37 /* st.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = st.h; sourceTree = ""; }; + B3EBAA8D287296FC00EAEB37 /* msa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msa.h; sourceTree = ""; }; + B3EBAA8E287296FC00EAEB37 /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; + B3EBAA8F287296FC00EAEB37 /* dialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dialog.h; sourceTree = ""; }; + B3EBAA90287296FC00EAEB37 /* cfgopts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cfgopts.h; sourceTree = ""; }; + B3EBAA91287296FC00EAEB37 /* fdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fdc.h; sourceTree = ""; }; + B3EBAA92287296FC00EAEB37 /* memorySnapShot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memorySnapShot.h; sourceTree = ""; }; + B3EBAA93287296FC00EAEB37 /* rs232.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rs232.h; sourceTree = ""; }; + B3EBAA94287296FC00EAEB37 /* pixel_convert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pixel_convert.h; sourceTree = ""; }; + B3EBAA95287296FC00EAEB37 /* midi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = midi.h; sourceTree = ""; }; + B3EBAA96287296FC00EAEB37 /* blitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blitter.h; sourceTree = ""; }; + B3EBAA97287296FC00EAEB37 /* floppy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = floppy.h; sourceTree = ""; }; + B3EBAA98287296FC00EAEB37 /* m68000.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68000.h; sourceTree = ""; }; + B3EBAA99287296FC00EAEB37 /* ikbd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ikbd.h; sourceTree = ""; }; + B3EBAA9A287296FC00EAEB37 /* clocks_timings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clocks_timings.h; sourceTree = ""; }; + B3EBAA9B287296FC00EAEB37 /* cycInt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cycInt.h; sourceTree = ""; }; + B3EBAA9C287296FC00EAEB37 /* statusbar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = statusbar.h; sourceTree = ""; }; + B3EBAA9D287296FC00EAEB37 /* file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file.h; sourceTree = ""; }; + B3EBAA9E287296FC00EAEB37 /* ide.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ide.h; sourceTree = ""; }; + B3EBAA9F287296FC00EAEB37 /* psg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psg.h; sourceTree = ""; }; + B3EBAAA0287296FC00EAEB37 /* cycles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cycles.h; sourceTree = ""; }; + B3EBAAA1287296FC00EAEB37 /* configuration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = configuration.h; sourceTree = ""; }; + B3EBAAA2287296FC00EAEB37 /* audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; + B3EBAAA3287296FC00EAEB37 /* gemdos_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gemdos_defines.h; sourceTree = ""; }; + B3EBAAA4287296FC00EAEB37 /* options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = options.h; sourceTree = ""; }; + B3EBAAA5287296FC00EAEB37 /* ioMem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioMem.h; sourceTree = ""; }; + B3EBAAA6287296FC00EAEB37 /* cart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cart.h; sourceTree = ""; }; + B3EBAAA7287296FC00EAEB37 /* dim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dim.h; sourceTree = ""; }; + B3EBAAA8287296FC00EAEB37 /* stMemory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stMemory.h; sourceTree = ""; }; + B3EBAAA9287296FC00EAEB37 /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + B3EBAAAA287296FC00EAEB37 /* floppy_ipf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = floppy_ipf.h; sourceTree = ""; }; + B3EBAAAB287296FC00EAEB37 /* createBlankImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = createBlankImage.h; sourceTree = ""; }; + B3EBAAAC287296FC00EAEB37 /* video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video.h; sourceTree = ""; }; + B3EBAAAD287296FC00EAEB37 /* paths.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = paths.h; sourceTree = ""; }; + B3EBAAAE287296FC00EAEB37 /* rtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = ""; }; + B3EBAAAF287296FC00EAEB37 /* ym2149_fixed_vol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ym2149_fixed_vol.h; sourceTree = ""; }; + B3EBAAB0287296FC00EAEB37 /* dmaSnd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dmaSnd.h; sourceTree = ""; }; + B3EBAAB1287296FC00EAEB37 /* change.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = change.h; sourceTree = ""; }; + B3EBAAB2287296FC00EAEB37 /* unzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + B3EBAAB3287296FC00EAEB37 /* xbios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xbios.h; sourceTree = ""; }; + B3EBAAB4287296FC00EAEB37 /* str.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = str.h; sourceTree = ""; }; + B3EBAAB5287296FC00EAEB37 /* mfp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mfp.h; sourceTree = ""; }; + B3EBAAB6287296FC00EAEB37 /* tos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tos.h; sourceTree = ""; }; + B3EBAAB7287296FC00EAEB37 /* scandir.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scandir.h; sourceTree = ""; }; + B3EBAAB8287296FC00EAEB37 /* hdc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hdc.h; sourceTree = ""; }; + B3EBAAB9287296FC00EAEB37 /* screen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = screen.h; sourceTree = ""; }; + B3EBAABA287296FC00EAEB37 /* spec512.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spec512.h; sourceTree = ""; }; + B3EBAABB287296FC00EAEB37 /* resolution.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resolution.h; sourceTree = ""; }; + B3EBAABC287296FC00EAEB37 /* acia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = acia.h; sourceTree = ""; }; + B3EBAABD287296FC00EAEB37 /* reset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reset.h; sourceTree = ""; }; + B3EBAABE287296FC00EAEB37 /* wavFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wavFormat.h; sourceTree = ""; }; + B3EBAABF287296FC00EAEB37 /* floppy_stx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = floppy_stx.h; sourceTree = ""; }; + B3EBAAC0287296FC00EAEB37 /* keymap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keymap.h; sourceTree = ""; }; + B3EBAAC1287296FC00EAEB37 /* floppy_stx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floppy_stx.c; sourceTree = ""; }; + B3EBAAC2287296FC00EAEB37 /* keymap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keymap.c; sourceTree = ""; }; + B3EBAAC3287296FC00EAEB37 /* hd6301_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hd6301_cpu.c; sourceTree = ""; }; + B3EBAAC4287296FC00EAEB37 /* wavFormat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wavFormat.c; sourceTree = ""; }; + B3EBAAC6287296FC00EAEB37 /* dlgFloppy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgFloppy.c; sourceTree = ""; }; + B3EBAAC7287296FC00EAEB37 /* dlgDevice.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgDevice.c; sourceTree = ""; }; + B3EBAAC8287296FC00EAEB37 /* dlgJoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgJoystick.c; sourceTree = ""; }; + B3EBAAC9287296FC00EAEB37 /* dlgHardDisk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgHardDisk.c; sourceTree = ""; }; + B3EBAACA287296FC00EAEB37 /* font10x16.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = font10x16.bmp; sourceTree = ""; }; + B3EBAACB287296FC00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAACC287296FC00EAEB37 /* dlgRom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgRom.c; sourceTree = ""; }; + B3EBAACD287296FC00EAEB37 /* dlgMain.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgMain.c; sourceTree = ""; }; + B3EBAACE287296FC00EAEB37 /* dlgNewDisk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgNewDisk.c; sourceTree = ""; }; + B3EBAACF287296FC00EAEB37 /* dlgAbout.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgAbout.c; sourceTree = ""; }; + B3EBAAD0287296FC00EAEB37 /* dlgSound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgSound.c; sourceTree = ""; }; + B3EBAAD1287296FD00EAEB37 /* sdlgui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdlgui.c; sourceTree = ""; }; + B3EBAAD2287296FD00EAEB37 /* dlgMemory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgMemory.c; sourceTree = ""; }; + B3EBAAD3287296FD00EAEB37 /* font5x8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font5x8.h; sourceTree = ""; }; + B3EBAAD4287296FD00EAEB37 /* font5x8.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = font5x8.bmp; sourceTree = ""; }; + B3EBAAD5287296FD00EAEB37 /* dlgAlert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgAlert.c; sourceTree = ""; }; + B3EBAAD6287296FD00EAEB37 /* dlgFileSelect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgFileSelect.c; sourceTree = ""; }; + B3EBAAD7287296FD00EAEB37 /* font10x16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font10x16.h; sourceTree = ""; }; + B3EBAAD8287296FD00EAEB37 /* dlgKeyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgKeyboard.c; sourceTree = ""; }; + B3EBAAD9287296FD00EAEB37 /* dlgScreen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgScreen.c; sourceTree = ""; }; + B3EBAADA287296FD00EAEB37 /* dlgSystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dlgSystem.c; sourceTree = ""; }; + B3EBAADB287296FD00EAEB37 /* reset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reset.c; sourceTree = ""; }; + B3EBAADC287296FD00EAEB37 /* st.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = st.c; sourceTree = ""; }; + B3EBAADD287296FD00EAEB37 /* control.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = control.c; sourceTree = ""; }; + B3EBAADE287296FD00EAEB37 /* bios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bios.c; sourceTree = ""; }; + B3EBAADF287296FD00EAEB37 /* msa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msa.c; sourceTree = ""; }; + B3EBAAE0287296FD00EAEB37 /* gemdos.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gemdos.c; sourceTree = ""; }; + B3EBAAE1287296FD00EAEB37 /* avi_record.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = avi_record.c; sourceTree = ""; }; + B3EBAAE2287296FD00EAEB37 /* screenSnapShot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = screenSnapShot.c; sourceTree = ""; }; + B3EBAAE3287296FD00EAEB37 /* cart_asm.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = cart_asm.s; sourceTree = ""; }; + B3EBAAE4287296FD00EAEB37 /* vdi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdi.c; sourceTree = ""; }; + B3EBAAE5287296FD00EAEB37 /* utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = ""; }; + B3EBAAE6287296FD00EAEB37 /* shortcut.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shortcut.c; sourceTree = ""; }; + B3EBAAE7287296FD00EAEB37 /* printer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printer.c; sourceTree = ""; }; + B3EBAAE8287296FD00EAEB37 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3EBAAE9287296FD00EAEB37 /* joy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = joy.c; sourceTree = ""; }; + B3EBAAEA287296FD00EAEB37 /* ymFormat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ymFormat.c; sourceTree = ""; }; + B3EBAAEB287296FD00EAEB37 /* sound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sound.c; sourceTree = ""; }; + B3EBAAED287296FD00EAEB37 /* opencon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opencon.c; sourceTree = ""; }; + B3EBAAEE287296FD00EAEB37 /* hatari-winicon.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "hatari-winicon.ico"; sourceTree = ""; }; + B3EBAAEF287296FD00EAEB37 /* hatari-winicon.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = "hatari-winicon.rc"; sourceTree = ""; }; + B3EBAAF0287296FD00EAEB37 /* opencon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opencon.h; sourceTree = ""; }; + B3EBAAF1287296FD00EAEB37 /* m68000.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = m68000.c; sourceTree = ""; }; + B3EBAAF2287296FD00EAEB37 /* floppy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floppy.c; sourceTree = ""; }; + B3EBAAF3287296FD00EAEB37 /* ikbd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ikbd.c; sourceTree = ""; }; + B3EBAAF4287296FD00EAEB37 /* rs232.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rs232.c; sourceTree = ""; }; + B3EBAAF5287296FD00EAEB37 /* blitter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blitter.c; sourceTree = ""; }; + B3EBAAF6287296FD00EAEB37 /* midi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = midi.c; sourceTree = ""; }; + B3EBAAF8287296FD00EAEB37 /* fpp-unknown.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "fpp-unknown.h"; sourceTree = ""; }; + B3EBAAF9287296FD00EAEB37 /* table68k */ = {isa = PBXFileReference; lastKnownFileType = text; path = table68k; sourceTree = ""; }; + B3EBAAFA287296FD00EAEB37 /* m68k.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = m68k.h; sourceTree = ""; }; + B3EBAAFB287296FD00EAEB37 /* fpp-ieee-be.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "fpp-ieee-be.h"; sourceTree = ""; }; + B3EBAAFC287296FD00EAEB37 /* memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = ""; }; + B3EBAAFD287296FD00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAAFE287296FD00EAEB37 /* hatari-glue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "hatari-glue.c"; sourceTree = ""; }; + B3EBAAFF287296FD00EAEB37 /* readcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = readcpu.c; sourceTree = ""; }; + B3EBAB00287296FD00EAEB37 /* gencpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gencpu.c; sourceTree = ""; }; + B3EBAB01287296FD00EAEB37 /* newcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = newcpu.h; sourceTree = ""; }; + B3EBAB02287296FD00EAEB37 /* build68k.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = build68k.c; sourceTree = ""; }; + B3EBAB03287296FD00EAEB37 /* readcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = readcpu.h; sourceTree = ""; }; + B3EBAB04287296FD00EAEB37 /* options_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = options_cpu.h; sourceTree = ""; }; + B3EBAB05287296FD00EAEB37 /* maccess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maccess.h; sourceTree = ""; }; + B3EBAB06287296FD00EAEB37 /* hatari-glue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "hatari-glue.h"; sourceTree = ""; }; + B3EBAB07287296FD00EAEB37 /* emumemory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emumemory.h; sourceTree = ""; }; + B3EBAB08287296FD00EAEB37 /* newcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = newcpu.c; sourceTree = ""; }; + B3EBAB09287296FD00EAEB37 /* sysdeps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sysdeps.h; sourceTree = ""; }; + B3EBAB0A287296FD00EAEB37 /* fpp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fpp.c; sourceTree = ""; }; + B3EBAB0B287296FD00EAEB37 /* savestate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = savestate.h; sourceTree = ""; }; + B3EBAB0C287296FD00EAEB37 /* cfgopts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cfgopts.c; sourceTree = ""; }; + B3EBAB0D287296FD00EAEB37 /* dialog.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dialog.c; sourceTree = ""; }; + B3EBAB0E287296FD00EAEB37 /* memorySnapShot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memorySnapShot.c; sourceTree = ""; }; + B3EBAB0F287296FD00EAEB37 /* fdc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fdc.c; sourceTree = ""; }; + B3EBAB10287296FD00EAEB37 /* ioMemTabSTE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioMemTabSTE.c; sourceTree = ""; }; + B3EBAB11287296FD00EAEB37 /* cycles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cycles.c; sourceTree = ""; }; + B3EBAB12287296FD00EAEB37 /* ioMemTabFalcon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioMemTabFalcon.c; sourceTree = ""; }; + B3EBAB13287296FD00EAEB37 /* psg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psg.c; sourceTree = ""; }; + B3EBAB14287296FD00EAEB37 /* file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file.c; sourceTree = ""; }; + B3EBAB15287296FD00EAEB37 /* ioMemTabST.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ioMemTabST.c; sourceTree = ""; }; + B3EBAB16287296FD00EAEB37 /* ide.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ide.c; sourceTree = ""; }; + B3EBAB17287296FD00EAEB37 /* statusbar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = statusbar.c; sourceTree = ""; }; + B3EBAB18287296FD00EAEB37 /* cycInt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cycInt.c; sourceTree = ""; }; + B3EBAB19287296FD00EAEB37 /* clocks_timings.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = clocks_timings.c; sourceTree = ""; }; + B3EBAB1A287296FD00EAEB37 /* cart_mus.x32 */ = {isa = PBXFileReference; lastKnownFileType = file; path = cart_mus.x32; sourceTree = ""; }; + B3EBAB1D287296FD00EAEB37 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; + B3EBAB1F287296FD00EAEB37 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + B3EBAB21287296FD00EAEB37 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/SDLMain.nib; sourceTree = ""; }; + B3EBAB23287296FD00EAEB37 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/SDLMain.xib; sourceTree = ""; }; + B3EBAB24287296FD00EAEB37 /* Shared.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Shared.h; sourceTree = ""; }; + B3EBAB25287296FD00EAEB37 /* Info-Hatari.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Hatari.plist"; sourceTree = ""; }; + B3EBAB26287296FD00EAEB37 /* PrefsController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PrefsController.m; sourceTree = ""; }; + B3EBAB27287296FD00EAEB37 /* SDLMain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = ""; }; + B3EBAB28287296FD00EAEB37 /* Info-Hatari Winuae.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Hatari Winuae.plist"; sourceTree = ""; }; + B3EBAB29287296FD00EAEB37 /* disk.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = disk.icns; sourceTree = ""; }; + B3EBAB2A287296FD00EAEB37 /* CreateFloppyController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CreateFloppyController.h; sourceTree = ""; }; + B3EBAB2B287296FD00EAEB37 /* AlertHooks.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AlertHooks.m; sourceTree = ""; }; + B3EBAB2C287296FD00EAEB37 /* Shared.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Shared.m; sourceTree = ""; }; + B3EBAB2D287296FD00EAEB37 /* French */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/Localizable.strings; sourceTree = ""; }; + B3EBAB2E287296FD00EAEB37 /* French */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/InfoPlist.strings; sourceTree = ""; }; + B3EBAB2F287296FD00EAEB37 /* French */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path = French.lproj/SDLMain.nib; sourceTree = ""; }; + B3EBAB30287296FD00EAEB37 /* French */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = French; path = French.lproj/SDLMain.xib; sourceTree = ""; }; + B3EBAB31287296FD00EAEB37 /* Hatari.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Hatari.icns; sourceTree = ""; }; + B3EBAB32287296FD00EAEB37 /* SDLMain.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = ""; }; + B3EBAB33287296FD00EAEB37 /* PrefsController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrefsController.h; sourceTree = ""; }; + B3EBAB34287296FD00EAEB37 /* AlertHooks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AlertHooks.h; sourceTree = ""; }; + B3EBAB35287296FD00EAEB37 /* CreateFloppyController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CreateFloppyController.m; sourceTree = ""; }; + B3EBAB37287296FD00EAEB37 /* hostscreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hostscreen.h; sourceTree = ""; }; + B3EBAB38287296FD00EAEB37 /* dsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp.c; sourceTree = ""; }; + B3EBAB39287296FD00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAB3A287296FD00EAEB37 /* dsp_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_cpu.h; sourceTree = ""; }; + B3EBAB3B287296FD00EAEB37 /* nvram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nvram.h; sourceTree = ""; }; + B3EBAB3C287296FD00EAEB37 /* microphone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = microphone.h; sourceTree = ""; }; + B3EBAB3D287296FD00EAEB37 /* dsp_core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp_core.c; sourceTree = ""; }; + B3EBAB3E287296FD00EAEB37 /* crossbar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crossbar.h; sourceTree = ""; }; + B3EBAB3F287296FD00EAEB37 /* dsp_disasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_disasm.h; sourceTree = ""; }; + B3EBAB40287296FD00EAEB37 /* videl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = videl.c; sourceTree = ""; }; + B3EBAB41287296FD00EAEB37 /* nvram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nvram.c; sourceTree = ""; }; + B3EBAB42287296FD00EAEB37 /* dsp_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp_cpu.c; sourceTree = ""; }; + B3EBAB43287296FD00EAEB37 /* hostscreen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hostscreen.c; sourceTree = ""; }; + B3EBAB44287296FD00EAEB37 /* dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; + B3EBAB45287296FD00EAEB37 /* dsp_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_core.h; sourceTree = ""; }; + B3EBAB46287296FD00EAEB37 /* microphone.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = microphone.c; sourceTree = ""; }; + B3EBAB47287296FD00EAEB37 /* videl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = videl.h; sourceTree = ""; }; + B3EBAB48287296FD00EAEB37 /* dsp_disasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp_disasm.c; sourceTree = ""; }; + B3EBAB49287296FD00EAEB37 /* crossbar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crossbar.c; sourceTree = ""; }; + B3EBAB4A287296FD00EAEB37 /* options.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = options.c; sourceTree = ""; }; + B3EBAB4B287296FD00EAEB37 /* audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio.c; sourceTree = ""; }; + B3EBAB4C287296FD00EAEB37 /* hd6301_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hd6301_cpu.h; sourceTree = ""; }; + B3EBAB4E287296FD00EAEB37 /* high640x8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = high640x8.c; sourceTree = ""; }; + B3EBAB4F287296FD00EAEB37 /* low320x16_spec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low320x16_spec.c; sourceTree = ""; }; + B3EBAB50287296FD00EAEB37 /* routines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = routines.h; sourceTree = ""; }; + B3EBAB51287296FD00EAEB37 /* low320x32_spec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low320x32_spec.c; sourceTree = ""; }; + B3EBAB52287296FD00EAEB37 /* vdi4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdi4.c; sourceTree = ""; }; + B3EBAB53287296FD00EAEB37 /* med640x16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = med640x16.c; sourceTree = ""; }; + B3EBAB54287296FD00EAEB37 /* low320x8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low320x8.c; sourceTree = ""; }; + B3EBAB55287296FD00EAEB37 /* low640x8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low640x8.c; sourceTree = ""; }; + B3EBAB56287296FD00EAEB37 /* low640x32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low640x32.c; sourceTree = ""; }; + B3EBAB57287296FD00EAEB37 /* vdi16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdi16.c; sourceTree = ""; }; + B3EBAB58287296FD00EAEB37 /* low320x16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low320x16.c; sourceTree = ""; }; + B3EBAB59287296FD00EAEB37 /* med640x32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = med640x32.c; sourceTree = ""; }; + B3EBAB5A287296FD00EAEB37 /* macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + B3EBAB5B287296FD00EAEB37 /* low640x16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low640x16.c; sourceTree = ""; }; + B3EBAB5C287296FD00EAEB37 /* low320x32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low320x32.c; sourceTree = ""; }; + B3EBAB5D287296FD00EAEB37 /* low640x32_spec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low640x32_spec.c; sourceTree = ""; }; + B3EBAB5E287296FD00EAEB37 /* med640x32_spec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = med640x32_spec.c; sourceTree = ""; }; + B3EBAB5F287296FD00EAEB37 /* vdi2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vdi2.c; sourceTree = ""; }; + B3EBAB60287296FD00EAEB37 /* low640x16_spec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = low640x16_spec.c; sourceTree = ""; }; + B3EBAB61287296FD00EAEB37 /* med640x16_spec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = med640x16_spec.c; sourceTree = ""; }; + B3EBAB62287296FD00EAEB37 /* med640x8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = med640x8.c; sourceTree = ""; }; + B3EBAB64287296FD00EAEB37 /* debugui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugui.h; sourceTree = ""; }; + B3EBAB65287296FD00EAEB37 /* log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = ""; }; + B3EBAB66287296FD00EAEB37 /* console.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = ""; }; + B3EBAB67287296FD00EAEB37 /* history.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = history.c; sourceTree = ""; }; + B3EBAB68287296FD00EAEB37 /* debugdsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugdsp.h; sourceTree = ""; }; + B3EBAB69287296FD00EAEB37 /* debugcpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugcpu.h; sourceTree = ""; }; + B3EBAB6A287296FD00EAEB37 /* 68kDisass.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 68kDisass.c; sourceTree = ""; }; + B3EBAB6B287296FD00EAEB37 /* debug_priv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug_priv.h; sourceTree = ""; }; + B3EBAB6C287296FD00EAEB37 /* profile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profile.h; sourceTree = ""; }; + B3EBAB6D287296FD00EAEB37 /* symbols.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = symbols.h; sourceTree = ""; }; + B3EBAB6E287296FD00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBAB6F287296FD00EAEB37 /* profiledsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profiledsp.c; sourceTree = ""; }; + B3EBAB70287296FD00EAEB37 /* breakcond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = breakcond.c; sourceTree = ""; }; + B3EBAB71287296FD00EAEB37 /* profilecpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profilecpu.c; sourceTree = ""; }; + B3EBAB72287296FD00EAEB37 /* evaluate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = evaluate.c; sourceTree = ""; }; + B3EBAB73287296FD00EAEB37 /* natfeats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = natfeats.h; sourceTree = ""; }; + B3EBAB74287296FD00EAEB37 /* debugInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debugInfo.h; sourceTree = ""; }; + B3EBAB75287296FD00EAEB37 /* debugcpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugcpu.c; sourceTree = ""; }; + B3EBAB76287296FD00EAEB37 /* 68kDisass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 68kDisass.h; sourceTree = ""; }; + B3EBAB77287296FD00EAEB37 /* console.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = console.c; sourceTree = ""; }; + B3EBAB78287296FD00EAEB37 /* debugdsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugdsp.c; sourceTree = ""; }; + B3EBAB79287296FD00EAEB37 /* history.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = history.h; sourceTree = ""; }; + B3EBAB7A287296FD00EAEB37 /* debugui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugui.c; sourceTree = ""; }; + B3EBAB7B287296FD00EAEB37 /* log.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + B3EBAB7C287296FD00EAEB37 /* breakcond.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = breakcond.h; sourceTree = ""; }; + B3EBAB7D287296FD00EAEB37 /* profile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = profile.c; sourceTree = ""; }; + B3EBAB7E287296FD00EAEB37 /* symbols.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = symbols.c; sourceTree = ""; }; + B3EBAB7F287296FD00EAEB37 /* evaluate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = evaluate.h; sourceTree = ""; }; + B3EBAB80287296FD00EAEB37 /* profile_priv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profile_priv.h; sourceTree = ""; }; + B3EBAB81287296FD00EAEB37 /* debugInfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugInfo.c; sourceTree = ""; }; + B3EBAB82287296FD00EAEB37 /* natfeats.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = natfeats.c; sourceTree = ""; }; + B3EBAB83287296FD00EAEB37 /* configuration.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = configuration.c; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B32C4C0F289223DC001B51AE /* libz.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF5207CD2740040709A /* CoreAudioKit.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libhatari.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libhatari-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B32C4BF328922257001B51AE /* gui-ios */ = { + isa = PBXGroup; + children = ( + B32C4BF428922257001B51AE /* Localizable.strings */, + B32C4BF628922257001B51AE /* InfoPlist.strings */, + B32C4BF828922257001B51AE /* SDLMain.nib */, + B32C4BFA28922257001B51AE /* SDLMain.xib */, + B32C4BFC28922257001B51AE /* Shared.h */, + B32C4BFD28922257001B51AE /* Info-Hatari.plist */, + B32C4BFE28922257001B51AE /* PrefsController.m */, + B32C4BFF28922257001B51AE /* SDLMain.h */, + B32C4C0028922257001B51AE /* Info-Hatari Winuae.plist */, + B32C4C0128922257001B51AE /* disk.icns */, + B32C4C0228922257001B51AE /* CreateFloppyController.h */, + B32C4C0328922257001B51AE /* AlertHooks.m */, + B32C4C0428922257001B51AE /* Shared.m */, + B32C4C0928922257001B51AE /* Hatari.icns */, + B32C4C0A28922257001B51AE /* SDLMain.m */, + B32C4C0B28922257001B51AE /* PrefsController.h */, + B32C4C0C28922257001B51AE /* AlertHooks.h */, + B32C4C0D28922257001B51AE /* CreateFloppyController.m */, + ); + name = "gui-ios"; + path = "../../../hatari/hatari/src/gui-ios"; + sourceTree = ""; + }; + B37022BE287253B300B3F6DA /* PVHatari */ = { + isa = PBXGroup; + children = ( + B3E0AB35289214D900DB1E39 /* hatari.cfg */, + B37022C0287253B300B3F6DA /* PVHatari.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVHatari; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVHatariCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVHatariCore.h */, + B37022C6287253B300B3F6DA /* PVHatariCore.mm */, + ); + path = PVHatariCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EBA899287296FB00EAEB37 /* hatari */, + B37022BE287253B300B3F6DA /* PVHatari */, + B37022C4287253B300B3F6DA /* PVHatariCore */, + B37022C3287253B300B3F6DA /* PVHatari.h */, + B37022BD287253B300B3F6DA /* PVHatari-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVHatari.framework */, + B30178D3207C901D0051B93D /* libhatari.a */, + B3344BC32859E088006E6B3A /* libhatari-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B32C4C0E289223DC001B51AE /* libz.tbd */, + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EBA899287296FB00EAEB37 /* hatari */ = { + isa = PBXGroup; + children = ( + B3EBA9C0287296FC00EAEB37 /* .gitignore */, + B3EBA8CF287296FB00EAEB37 /* .hgignore */, + B3EBA8CE287296FB00EAEB37 /* configure */, + B3EBA929287296FB00EAEB37 /* Makefile.common */, + B3EBA92B287296FB00EAEB37 /* Makefile.libretro */, + B3EBA92A287296FB00EAEB37 /* README.md */, + B3EBA9EA287296FC00EAEB37 /* hatari.spec */, + B3EBA8C1287296FB00EAEB37 /* CMakeLists.txt */, + B3EBA92C287296FB00EAEB37 /* gpl.txt */, + B3EBA9E8287296FC00EAEB37 /* readme.txt */, + B3EBA9E9287296FC00EAEB37 /* .gitlab-ci.yml */, + B3EBA9EB287296FC00EAEB37 /* .travis.yml */, + B3EBA8C2287296FB00EAEB37 /* cmake */, + B3EBA9C1287296FC00EAEB37 /* doc */, + B3EBA921287296FB00EAEB37 /* etc */, + B3EBA92D287296FB00EAEB37 /* libretro */, + B3EBA9EC287296FC00EAEB37 /* python-ui */, + B3EBAA03287296FC00EAEB37 /* share */, + B3EBAA30287296FC00EAEB37 /* src */, + B3EBA8D0287296FB00EAEB37 /* tests */, + B3EBA89D287296FB00EAEB37 /* tools */, + B3EBA89A287296FB00EAEB37 /* Visual.Studio */, + ); + path = hatari; + sourceTree = ""; + }; + B3EBA89A287296FB00EAEB37 /* Visual.Studio */ = { + isa = PBXGroup; + children = ( + B3EBA89B287296FB00EAEB37 /* VisualStudioFix.h */, + B3EBA89C287296FB00EAEB37 /* VisualStudioFix.c */, + ); + path = Visual.Studio; + sourceTree = ""; + }; + B3EBA89D287296FB00EAEB37 /* tools */ = { + isa = PBXGroup; + children = ( + B3EBA89E287296FB00EAEB37 /* zip2st.sh */, + B3EBA89F287296FB00EAEB37 /* CMakeLists.txt */, + B3EBA8A0287296FB00EAEB37 /* hatari-local-rs232.sh */, + B3EBA8A1287296FB00EAEB37 /* atari-hd-image.1 */, + B3EBA8A2287296FB00EAEB37 /* hmsa */, + B3EBA8AA287296FB00EAEB37 /* debugger */, + B3EBA8B5287296FB00EAEB37 /* hatari-tos-register.sh */, + B3EBA8B6287296FB00EAEB37 /* hatari-local-midi-ring.sh */, + B3EBA8B7287296FB00EAEB37 /* hconsole */, + B3EBA8BF287296FB00EAEB37 /* zip2st.1 */, + B3EBA8C0287296FB00EAEB37 /* atari-hd-image.sh */, + ); + path = tools; + sourceTree = ""; + }; + B3EBA8A2287296FB00EAEB37 /* hmsa */ = { + isa = PBXGroup; + children = ( + B3EBA8A3287296FB00EAEB37 /* CMakeLists.txt */, + B3EBA8A4287296FB00EAEB37 /* floppy.h */, + B3EBA8A5287296FB00EAEB37 /* hmsa.h */, + B3EBA8A6287296FB00EAEB37 /* hmsa.1 */, + B3EBA8A7287296FB00EAEB37 /* floppy.c */, + B3EBA8A8287296FB00EAEB37 /* hmsa.c */, + B3EBA8A9287296FB00EAEB37 /* readme-hmsa.txt */, + ); + path = hmsa; + sourceTree = ""; + }; + B3EBA8AA287296FB00EAEB37 /* debugger */ = { + isa = PBXGroup; + children = ( + B3EBA8AB287296FB00EAEB37 /* ahcc-symbols-convert.sh */, + B3EBA8AC287296FB00EAEB37 /* CMakeLists.txt */, + B3EBA8AD287296FB00EAEB37 /* gst2ascii.1 */, + B3EBA8AE287296FB00EAEB37 /* hatari_profile.1 */, + B3EBA8AF287296FB00EAEB37 /* nm-symbols-cleanup.sh */, + B3EBA8B0287296FB00EAEB37 /* dsp-lod-symbols-convert.sh */, + B3EBA8B1287296FB00EAEB37 /* hatari_spinloop.py */, + B3EBA8B2287296FB00EAEB37 /* gst2ascii.c */, + B3EBA8B3287296FB00EAEB37 /* devpac3-symbols-convert.sh */, + B3EBA8B4287296FB00EAEB37 /* hatari_profile.py */, + ); + path = debugger; + sourceTree = ""; + }; + B3EBA8B7287296FB00EAEB37 /* hconsole */ = { + isa = PBXGroup; + children = ( + B3EBA8B8287296FB00EAEB37 /* CMakeLists.txt */, + B3EBA8B9287296FB00EAEB37 /* hconsole.1 */, + B3EBA8BA287296FB00EAEB37 /* hconsole.py */, + B3EBA8BB287296FB00EAEB37 /* release-notes.txt */, + B3EBA8BC287296FB00EAEB37 /* example.py */, + B3EBA8BD287296FB00EAEB37 /* example-debugger */, + B3EBA8BE287296FB00EAEB37 /* example-commands */, + ); + path = hconsole; + sourceTree = ""; + }; + B3EBA8C2287296FB00EAEB37 /* cmake */ = { + isa = PBXGroup; + children = ( + B3EBA8C3287296FB00EAEB37 /* FindCapsImage.cmake */, + B3EBA8C4287296FB00EAEB37 /* DistClean.cmake */, + B3EBA8C5287296FB00EAEB37 /* FindSDL2.cmake */, + B3EBA8C6287296FB00EAEB37 /* Toolchain-mingw32-win64_32.cmake */, + B3EBA8C7287296FB00EAEB37 /* config-cmake.h */, + B3EBA8C8287296FB00EAEB37 /* Uninstall.cmake */, + B3EBA8C9287296FB00EAEB37 /* FindPortAudio.cmake */, + B3EBA8CA287296FB00EAEB37 /* FindTermcap.cmake */, + B3EBA8CB287296FB00EAEB37 /* FindMath.cmake */, + B3EBA8CC287296FB00EAEB37 /* FindReadline.cmake */, + B3EBA8CD287296FB00EAEB37 /* Toolchain-mingw32-win64_64.cmake */, + ); + path = cmake; + sourceTree = ""; + }; + B3EBA8D0287296FB00EAEB37 /* tests */ = { + isa = PBXGroup; + children = ( + B3EBA8D1287296FB00EAEB37 /* buserror */, + B3EBA8E2287296FB00EAEB37 /* natfeats */, + B3EBA8EE287296FB00EAEB37 /* keymap */, + B3EBA8F8287296FB00EAEB37 /* debugger */, + B3EBA906287296FB00EAEB37 /* readme.txt */, + B3EBA907287296FB00EAEB37 /* tosboot */, + ); + path = tests; + sourceTree = ""; + }; + B3EBA8D1287296FB00EAEB37 /* buserror */ = { + isa = PBXGroup; + children = ( + B3EBA8D2287296FB00EAEB37 /* buserr_w.s */, + B3EBA8D3287296FB00EAEB37 /* buserr_b.prg */, + B3EBA8D4287296FB00EAEB37 /* buserr_w.prg */, + B3EBA8D5287296FB00EAEB37 /* buserr_b.s */, + B3EBA8D6287296FB00EAEB37 /* results */, + B3EBA8E1287296FB00EAEB37 /* readme.txt */, + ); + path = buserror; + sourceTree = ""; + }; + B3EBA8D6287296FB00EAEB37 /* results */ = { + isa = PBXGroup; + children = ( + B3EBA8D7287296FB00EAEB37 /* fal_n_b.txt */, + B3EBA8D8287296FB00EAEB37 /* st_b.txt */, + B3EBA8D9287296FB00EAEB37 /* st_w.txt */, + B3EBA8DA287296FB00EAEB37 /* fal_n_w.txt */, + B3EBA8DB287296FB00EAEB37 /* ste_b.txt */, + B3EBA8DC287296FB00EAEB37 /* ste_w.txt */, + B3EBA8DD287296FB00EAEB37 /* fal_c_b.txt */, + B3EBA8DE287296FB00EAEB37 /* fal_c_w.txt */, + B3EBA8DF287296FB00EAEB37 /* tt_b.txt */, + B3EBA8E0287296FB00EAEB37 /* tt_w.txt */, + ); + path = results; + sourceTree = ""; + }; + B3EBA8E2287296FB00EAEB37 /* natfeats */ = { + isa = PBXGroup; + children = ( + B3EBA8E3287296FB00EAEB37 /* nf_ahcc.prj */, + B3EBA8E4287296FB00EAEB37 /* makefile */, + B3EBA8E5287296FB00EAEB37 /* Makefile.vbc */, + B3EBA8E6287296FB00EAEB37 /* natfeats.h */, + B3EBA8E7287296FB00EAEB37 /* nf_vbcc.tos */, + B3EBA8E8287296FB00EAEB37 /* nf_asma.s */, + B3EBA8E9287296FB00EAEB37 /* nf_asmv.s */, + B3EBA8EA287296FB00EAEB37 /* readme.txt */, + B3EBA8EB287296FB00EAEB37 /* Makefile.gcc */, + B3EBA8EC287296FB00EAEB37 /* nf_asmg.s */, + B3EBA8ED287296FB00EAEB37 /* natfeats.c */, + ); + path = natfeats; + sourceTree = ""; + }; + B3EBA8EE287296FB00EAEB37 /* keymap */ = { + isa = PBXGroup; + children = ( + B3EBA8EF287296FB00EAEB37 /* keytest.prg */, + B3EBA8F0287296FB00EAEB37 /* keytest.c */, + B3EBA8F1287296FB00EAEB37 /* keytest.rso */, + B3EBA8F2287296FB00EAEB37 /* listkeys.c */, + B3EBA8F3287296FB00EAEB37 /* checkkeys.c */, + B3EBA8F4287296FB00EAEB37 /* keytest.mak */, + B3EBA8F5287296FB00EAEB37 /* keytest.prj */, + B3EBA8F6287296FB00EAEB37 /* readme.txt */, + B3EBA8F7287296FB00EAEB37 /* keytest.rsc */, + ); + path = keymap; + sourceTree = ""; + }; + B3EBA8F8287296FB00EAEB37 /* debugger */ = { + isa = PBXGroup; + children = ( + B3EBA8F9287296FB00EAEB37 /* test-symbols.c */, + B3EBA8FA287296FB00EAEB37 /* test-dummies.c */, + B3EBA8FB287296FB00EAEB37 /* makefile */, + B3EBA8FC287296FB00EAEB37 /* test-evaluate.c */, + B3EBA8FD287296FB00EAEB37 /* test-breakcond.c */, + B3EBA8FE287296FB00EAEB37 /* test-scripting.sh */, + B3EBA8FF287296FB00EAEB37 /* data */, + ); + path = debugger; + sourceTree = ""; + }; + B3EBA8FF287296FB00EAEB37 /* data */ = { + isa = PBXGroup; + children = ( + B3EBA900287296FB00EAEB37 /* etos512.sym */, + B3EBA901287296FB00EAEB37 /* test.ini */, + B3EBA902287296FB00EAEB37 /* console.ini */, + B3EBA903287296FB00EAEB37 /* os-header.sym */, + B3EBA904287296FB00EAEB37 /* debugger.ini */, + B3EBA905287296FB00EAEB37 /* dsp-test.sym */, + ); + path = data; + sourceTree = ""; + }; + B3EBA907287296FB00EAEB37 /* tosboot */ = { + isa = PBXGroup; + children = ( + B3EBA908287296FB00EAEB37 /* bootauto.st.gz */, + B3EBA909287296FB00EAEB37 /* makefile */, + B3EBA90A287296FB00EAEB37 /* .hgignore */, + B3EBA90B287296FB00EAEB37 /* screenshot-report.sh */, + B3EBA90C287296FB00EAEB37 /* disk */, + B3EBA91A287296FB00EAEB37 /* readme.txt */, + B3EBA91B287296FB00EAEB37 /* bootdesk.st.gz */, + B3EBA91C287296FB00EAEB37 /* tos_tester.py */, + B3EBA91D287296FB00EAEB37 /* floppy */, + B3EBA920287296FB00EAEB37 /* blank-a.st.gz */, + ); + path = tosboot; + sourceTree = ""; + }; + B3EBA90C287296FB00EAEB37 /* disk */ = { + isa = PBXGroup; + children = ( + B3EBA90D287296FB00EAEB37 /* common.c */, + B3EBA90E287296FB00EAEB37 /* minimal.prj */, + B3EBA90F287296FB00EAEB37 /* TEST */, + B3EBA910287296FB00EAEB37 /* ahcc-gemdos */, + B3EBA911287296FB00EAEB37 /* minimal.c */, + B3EBA912287296FB00EAEB37 /* .hgignore */, + B3EBA913287296FB00EAEB37 /* GEMDOS.PRG */, + B3EBA914287296FB00EAEB37 /* ahcc-minimal */, + B3EBA915287296FB00EAEB37 /* gemdos.c */, + B3EBA916287296FB00EAEB37 /* common.h */, + B3EBA917287296FB00EAEB37 /* MINIMAL.PRG */, + B3EBA918287296FB00EAEB37 /* TEXT */, + B3EBA919287296FB00EAEB37 /* gemdos.prj */, + ); + path = disk; + sourceTree = ""; + }; + B3EBA91D287296FB00EAEB37 /* floppy */ = { + isa = PBXGroup; + children = ( + B3EBA91E287296FB00EAEB37 /* EMUDESK.INF */, + B3EBA91F287296FB00EAEB37 /* DESKTOP.INF */, + ); + path = floppy; + sourceTree = ""; + }; + B3EBA921287296FB00EAEB37 /* etc */ = { + isa = PBXGroup; + children = ( + B3EBA922287296FB00EAEB37 /* win-ce.cfg */, + B3EBA923287296FB00EAEB37 /* wiz.cfg */, + B3EBA924287296FB00EAEB37 /* GP2X_Wiz */, + B3EBA927287296FB00EAEB37 /* README */, + B3EBA928287296FB00EAEB37 /* n810.cfg */, + ); + path = etc; + sourceTree = ""; + }; + B3EBA924287296FB00EAEB37 /* GP2X_Wiz */ = { + isa = PBXGroup; + children = ( + B3EBA925287296FB00EAEB37 /* hatari-wrapper.gpe */, + B3EBA926287296FB00EAEB37 /* crossdefs.wiz */, + ); + path = GP2X_Wiz; + sourceTree = ""; + }; + B3EBA92D287296FB00EAEB37 /* libretro */ = { + isa = PBXGroup; + children = ( + B3EBA9B6287296FC00EAEB37 /* bmp.c */, + B3EBA9B5287296FC00EAEB37 /* cmdline.c */, + B3EBA9BF287296FC00EAEB37 /* font2.c */, + B3EBA9BC287296FC00EAEB37 /* graph.c */, + B3EBA943287296FB00EAEB37 /* hatari-mapper.c */, + B3EBA92E287296FB00EAEB37 /* libretro.c */, + B3EBA930287296FB00EAEB37 /* retro_disk_control.c */, + B3EBA942287296FB00EAEB37 /* retro_files.c */, + B3EBA92F287296FB00EAEB37 /* retro_strings.c */, + B3EBA9BD287296FC00EAEB37 /* vkbd.c */, + B3EBA97E287296FB00EAEB37 /* graph.h */, + B3EBA97F287296FB00EAEB37 /* libretro-hatari.h */, + B3EBA9B4287296FC00EAEB37 /* retro_disk_control.h */, + B3EBA9BE287296FC00EAEB37 /* retro_files.h */, + B3EBA996287296FC00EAEB37 /* retro_strings.h */, + B3EBA9BB287296FC00EAEB37 /* STkeymap.h */, + B3EBA9B3287296FC00EAEB37 /* vkbd_def.h */, + B3EBA97D287296FB00EAEB37 /* vkbd.h */, + B3EBA997287296FC00EAEB37 /* retromain.inc */, + B3EBA9B7287296FC00EAEB37 /* link.T */, + B3EBA936287296FB00EAEB37 /* RETROHACK.txt */, + B3EBA980287296FB00EAEB37 /* gui-retro */, + B3EBA937287296FB00EAEB37 /* include */, + B3EBA9B8287296FC00EAEB37 /* jni */, + B3EBA99A287296FC00EAEB37 /* libretro-common */, + B3EBA998287296FC00EAEB37 /* stub */, + B3EBA931287296FB00EAEB37 /* uae-cpu-pregen */, + B3EBA944287296FB00EAEB37 /* utils */, + ); + path = libretro; + sourceTree = ""; + }; + B3EBA931287296FB00EAEB37 /* uae-cpu-pregen */ = { + isa = PBXGroup; + children = ( + B3EBA932287296FB00EAEB37 /* cpudefs.c */, + B3EBA934287296FB00EAEB37 /* cpuemu.c */, + B3EBA935287296FB00EAEB37 /* cpustbl.c */, + B3EBA933287296FB00EAEB37 /* cputbl.h */, + ); + path = "uae-cpu-pregen"; + sourceTree = ""; + }; + B3EBA937287296FB00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA938287296FB00EAEB37 /* retroscreen.h */, + B3EBA939287296FB00EAEB37 /* SDL_endian.h */, + B3EBA93A287296FB00EAEB37 /* SDL_types.h */, + B3EBA93B287296FB00EAEB37 /* SDL_keyboard.h */, + B3EBA93C287296FB00EAEB37 /* config.h */, + B3EBA93D287296FB00EAEB37 /* SDL_keysym.h */, + B3EBA93E287296FB00EAEB37 /* SDL_video.h */, + B3EBA93F287296FB00EAEB37 /* SDL_thread.h */, + B3EBA940287296FB00EAEB37 /* SDL.h */, + B3EBA941287296FB00EAEB37 /* gui-retro.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA944287296FB00EAEB37 /* utils */ = { + isa = PBXGroup; + children = ( + B3EBA945287296FB00EAEB37 /* unzip */, + B3EBA952287296FB00EAEB37 /* zlib */, + ); + path = utils; + sourceTree = ""; + }; + B3EBA945287296FB00EAEB37 /* unzip */ = { + isa = PBXGroup; + children = ( + B3EBA946287296FB00EAEB37 /* unzip.c */, + B3EBA947287296FB00EAEB37 /* zip.c */, + B3EBA948287296FB00EAEB37 /* iowin32.h */, + B3EBA949287296FB00EAEB37 /* ioapi.c */, + B3EBA94A287296FB00EAEB37 /* mztools.c */, + B3EBA94B287296FB00EAEB37 /* crypt.h */, + B3EBA94C287296FB00EAEB37 /* zip.h */, + B3EBA94D287296FB00EAEB37 /* zlib.h */, + B3EBA94E287296FB00EAEB37 /* unzip.h */, + B3EBA94F287296FB00EAEB37 /* mztools.h */, + B3EBA950287296FB00EAEB37 /* ioapi.h */, + B3EBA951287296FB00EAEB37 /* zconf.h */, + ); + path = unzip; + sourceTree = ""; + }; + B3EBA952287296FB00EAEB37 /* zlib */ = { + isa = PBXGroup; + children = ( + B3EBA953287296FB00EAEB37 /* zutil.h */, + B3EBA954287296FB00EAEB37 /* inftrees.h */, + B3EBA955287296FB00EAEB37 /* inflate.c */, + B3EBA956287296FB00EAEB37 /* compress.c */, + B3EBA957287296FB00EAEB37 /* deflate.c */, + B3EBA958287296FB00EAEB37 /* inffixed.h */, + B3EBA959287296FB00EAEB37 /* gzread.c */, + B3EBA95A287296FB00EAEB37 /* trees.h */, + B3EBA95B287296FB00EAEB37 /* inffast.h */, + B3EBA95C287296FB00EAEB37 /* contrib */, + B3EBA96C287296FB00EAEB37 /* crc32.c */, + B3EBA96D287296FB00EAEB37 /* infback.c */, + B3EBA96E287296FB00EAEB37 /* zutil.c */, + B3EBA96F287296FB00EAEB37 /* deflate.h */, + B3EBA970287296FB00EAEB37 /* gzguts.h */, + B3EBA971287296FB00EAEB37 /* zlib.h */, + B3EBA972287296FB00EAEB37 /* gzlib.c */, + B3EBA973287296FB00EAEB37 /* inflate.h */, + B3EBA974287296FB00EAEB37 /* inftrees.c */, + B3EBA975287296FB00EAEB37 /* uncompr.c */, + B3EBA976287296FB00EAEB37 /* gzwrite.c */, + B3EBA977287296FB00EAEB37 /* trees.c */, + B3EBA978287296FB00EAEB37 /* gzclose.c */, + B3EBA979287296FB00EAEB37 /* crc32.h */, + B3EBA97A287296FB00EAEB37 /* inffast.c */, + B3EBA97B287296FB00EAEB37 /* adler32.c */, + B3EBA97C287296FB00EAEB37 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B3EBA95C287296FB00EAEB37 /* contrib */ = { + isa = PBXGroup; + children = ( + B3EBA95D287296FB00EAEB37 /* minizip */, + ); + path = contrib; + sourceTree = ""; + }; + B3EBA95D287296FB00EAEB37 /* minizip */ = { + isa = PBXGroup; + children = ( + B3EBA95E287296FB00EAEB37 /* unzip.c */, + B3EBA95F287296FB00EAEB37 /* zip.c */, + B3EBA960287296FB00EAEB37 /* Makefile */, + B3EBA961287296FB00EAEB37 /* ioapi.c */, + B3EBA962287296FB00EAEB37 /* mztools.c */, + B3EBA963287296FB00EAEB37 /* crypt.h */, + B3EBA964287296FB00EAEB37 /* zip.h */, + B3EBA965287296FB00EAEB37 /* zlib.h */, + B3EBA966287296FB00EAEB37 /* make_vms.com */, + B3EBA967287296FB00EAEB37 /* unzip.h */, + B3EBA968287296FB00EAEB37 /* mztools.h */, + B3EBA969287296FB00EAEB37 /* ioapi.h */, + B3EBA96A287296FB00EAEB37 /* zconf.h */, + B3EBA96B287296FB00EAEB37 /* miniunz.c */, + ); + path = minizip; + sourceTree = ""; + }; + B3EBA980287296FB00EAEB37 /* gui-retro */ = { + isa = PBXGroup; + children = ( + B3EBA98F287296FB00EAEB37 /* font5x8.bmp */, + B3EBA985287296FB00EAEB37 /* font10x16.bmp */, + B3EBA98A287296FB00EAEB37 /* dlgAbout.c */, + B3EBA990287296FB00EAEB37 /* dlgAlert.c */, + B3EBA982287296FB00EAEB37 /* dlgDevice.c */, + B3EBA991287296FB00EAEB37 /* dlgFileSelect.c */, + B3EBA981287296FB00EAEB37 /* dlgFloppy.c */, + B3EBA984287296FB00EAEB37 /* dlgHardDisk.c */, + B3EBA983287296FB00EAEB37 /* dlgJoystick.c */, + B3EBA993287296FC00EAEB37 /* dlgKeyboard.c */, + B3EBA988287296FB00EAEB37 /* dlgMain.c */, + B3EBA98D287296FB00EAEB37 /* dlgMemory.c */, + B3EBA989287296FB00EAEB37 /* dlgNewDisk.c */, + B3EBA987287296FB00EAEB37 /* dlgRom.c */, + B3EBA994287296FC00EAEB37 /* dlgScreen.c */, + B3EBA98B287296FB00EAEB37 /* dlgSound.c */, + B3EBA995287296FC00EAEB37 /* dlgSystem.c */, + B3EBA98C287296FB00EAEB37 /* sdlgui.c */, + B3EBA98E287296FB00EAEB37 /* font5x8.h */, + B3EBA992287296FC00EAEB37 /* font10x16.h */, + B3EBA986287296FB00EAEB37 /* CMakeLists.txt */, + ); + path = "gui-retro"; + sourceTree = ""; + }; + B3EBA998287296FC00EAEB37 /* stub */ = { + isa = PBXGroup; + children = ( + B3EBA999287296FC00EAEB37 /* dlgAlert.c */, + ); + path = stub; + sourceTree = ""; + }; + B3EBA99A287296FC00EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBA99B287296FC00EAEB37 /* include */, + B3EBA9A5287296FC00EAEB37 /* libco */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBA99B287296FC00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA99C287296FC00EAEB37 /* libco.h */, + B3EBA99D287296FC00EAEB37 /* compat */, + B3EBA9A3287296FC00EAEB37 /* retro_common_api.h */, + B3EBA9A4287296FC00EAEB37 /* libretro.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA99D287296FC00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA99E287296FC00EAEB37 /* zlib */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA99E287296FC00EAEB37 /* zlib */ = { + isa = PBXGroup; + children = ( + B3EBA99F287296FC00EAEB37 /* zutil.h */, + B3EBA9A0287296FC00EAEB37 /* zconf.h.in */, + B3EBA9A1287296FC00EAEB37 /* zlib.h */, + B3EBA9A2287296FC00EAEB37 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B3EBA9A5287296FC00EAEB37 /* libco */ = { + isa = PBXGroup; + children = ( + B3EBA9A6287296FC00EAEB37 /* sjlj.c */, + B3EBA9A7287296FC00EAEB37 /* ppc.c */, + B3EBA9A8287296FC00EAEB37 /* ucontext.c */, + B3EBA9A9287296FC00EAEB37 /* fiber.c */, + B3EBA9AA287296FC00EAEB37 /* aarch64.c */, + B3EBA9AB287296FC00EAEB37 /* libco.c */, + B3EBA9AC287296FC00EAEB37 /* scefiber.c */, + B3EBA9AD287296FC00EAEB37 /* genode.cpp */, + B3EBA9AE287296FC00EAEB37 /* armeabi.c */, + B3EBA9AF287296FC00EAEB37 /* amd64.c */, + B3EBA9B0287296FC00EAEB37 /* psp2.c */, + B3EBA9B1287296FC00EAEB37 /* x86.c */, + B3EBA9B2287296FC00EAEB37 /* psp1.c */, + ); + path = libco; + sourceTree = ""; + }; + B3EBA9B8287296FC00EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBA9B9287296FC00EAEB37 /* Android.mk */, + B3EBA9BA287296FC00EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3EBA9C1287296FC00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA9C2287296FC00EAEB37 /* CMakeLists.txt */, + B3EBA9C3287296FC00EAEB37 /* hatari.1 */, + B3EBA9C4287296FC00EAEB37 /* todo.txt */, + B3EBA9C5287296FC00EAEB37 /* images */, + B3EBA9D7287296FC00EAEB37 /* emutos.txt */, + B3EBA9D8287296FC00EAEB37 /* toc.js */, + B3EBA9D9287296FC00EAEB37 /* release-notes.txt */, + B3EBA9DA287296FC00EAEB37 /* compatibility.html */, + B3EBA9DB287296FC00EAEB37 /* coding.txt */, + B3EBA9DC287296FC00EAEB37 /* de */, + B3EBA9DE287296FC00EAEB37 /* fr */, + B3EBA9E1287296FC00EAEB37 /* doxygen */, + B3EBA9E3287296FC00EAEB37 /* authors.txt */, + B3EBA9E4287296FC00EAEB37 /* manual.html */, + B3EBA9E5287296FC00EAEB37 /* keymap-sample.txt */, + B3EBA9E6287296FC00EAEB37 /* midi-linux.txt */, + B3EBA9E7287296FC00EAEB37 /* memory-usage.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA9C5287296FC00EAEB37 /* images */ = { + isa = PBXGroup; + children = ( + B3EBA9C6287296FC00EAEB37 /* callgraph.svg */, + B3EBA9C7287296FC00EAEB37 /* floppydisks.png */, + B3EBA9C8287296FC00EAEB37 /* main.png */, + B3EBA9C9287296FC00EAEB37 /* joystick.png */, + B3EBA9CA287296FC00EAEB37 /* keyboard.png */, + B3EBA9CB287296FC00EAEB37 /* devices.png */, + B3EBA9CC287296FC00EAEB37 /* callgraph.png */, + B3EBA9CD287296FC00EAEB37 /* sound.png */, + B3EBA9CE287296FC00EAEB37 /* harddisks.png */, + B3EBA9CF287296FC00EAEB37 /* system.png */, + B3EBA9D0287296FC00EAEB37 /* monitor.png */, + B3EBA9D1287296FC00EAEB37 /* screen.png */, + B3EBA9D2287296FC00EAEB37 /* tos.png */, + B3EBA9D3287296FC00EAEB37 /* kcachegrind.png */, + B3EBA9D4287296FC00EAEB37 /* fileselector.png */, + B3EBA9D5287296FC00EAEB37 /* newfloppy.png */, + B3EBA9D6287296FC00EAEB37 /* memory.png */, + ); + path = images; + sourceTree = ""; + }; + B3EBA9DC287296FC00EAEB37 /* de */ = { + isa = PBXGroup; + children = ( + B3EBA9DD287296FC00EAEB37 /* tastatur-windows.txt */, + ); + path = de; + sourceTree = ""; + }; + B3EBA9DE287296FC00EAEB37 /* fr */ = { + isa = PBXGroup; + children = ( + B3EBA9DF287296FC00EAEB37 /* hatari.1 */, + B3EBA9E0287296FC00EAEB37 /* clavier-exemple.txt */, + ); + path = fr; + sourceTree = ""; + }; + B3EBA9E1287296FC00EAEB37 /* doxygen */ = { + isa = PBXGroup; + children = ( + B3EBA9E2287296FC00EAEB37 /* Doxyfile */, + ); + path = doxygen; + sourceTree = ""; + }; + B3EBA9EC287296FC00EAEB37 /* python-ui */ = { + isa = PBXGroup; + children = ( + B3EBA9ED287296FC00EAEB37 /* hatariui */, + B3EBA9EE287296FC00EAEB37 /* CMakeLists.txt */, + B3EBA9EF287296FC00EAEB37 /* config.py */, + B3EBA9F0287296FC00EAEB37 /* release-notes.txt */, + B3EBA9F1287296FC00EAEB37 /* tests */, + B3EBA9F5287296FC00EAEB37 /* README */, + B3EBA9F6287296FC00EAEB37 /* TODO */, + B3EBA9F7287296FC00EAEB37 /* hatari-icon.png */, + B3EBA9F8287296FC00EAEB37 /* hatari.png */, + B3EBA9F9287296FC00EAEB37 /* hatariui.py */, + B3EBA9FA287296FC00EAEB37 /* gentypes.py */, + B3EBA9FB287296FC00EAEB37 /* FILES */, + B3EBA9FC287296FC00EAEB37 /* hatariui.desktop */, + B3EBA9FD287296FC00EAEB37 /* dialogs.py */, + B3EBA9FE287296FC00EAEB37 /* uihelpers.py */, + B3EBA9FF287296FC00EAEB37 /* .cvsignore */, + B3EBAA00287296FC00EAEB37 /* hatariui.1 */, + B3EBAA01287296FC00EAEB37 /* hatari.py */, + B3EBAA02287296FC00EAEB37 /* debugui.py */, + ); + path = "python-ui"; + sourceTree = ""; + }; + B3EBA9F1287296FC00EAEB37 /* tests */ = { + isa = PBXGroup; + children = ( + B3EBA9F2287296FC00EAEB37 /* pygtk-hatari-embed-test.py */, + B3EBA9F3287296FC00EAEB37 /* README */, + B3EBA9F4287296FC00EAEB37 /* pygtk-hello-world.py */, + ); + path = tests; + sourceTree = ""; + }; + B3EBAA03287296FC00EAEB37 /* share */ = { + isa = PBXGroup; + children = ( + B3EBAA04287296FC00EAEB37 /* CMakeLists.txt */, + B3EBAA05287296FC00EAEB37 /* icons */, + B3EBAA2B287296FC00EAEB37 /* applications */, + B3EBAA2D287296FC00EAEB37 /* mime */, + ); + path = share; + sourceTree = ""; + }; + B3EBAA05287296FC00EAEB37 /* icons */ = { + isa = PBXGroup; + children = ( + B3EBAA06287296FC00EAEB37 /* hicolor */, + ); + path = icons; + sourceTree = ""; + }; + B3EBAA06287296FC00EAEB37 /* hicolor */ = { + isa = PBXGroup; + children = ( + B3EBAA07287296FC00EAEB37 /* 64x64 */, + B3EBAA0D287296FC00EAEB37 /* 32x32 */, + B3EBAA13287296FC00EAEB37 /* 128x128 */, + B3EBAA19287296FC00EAEB37 /* 256x256 */, + B3EBAA1F287296FC00EAEB37 /* scalable */, + B3EBAA25287296FC00EAEB37 /* 48x48 */, + ); + path = hicolor; + sourceTree = ""; + }; + B3EBAA07287296FC00EAEB37 /* 64x64 */ = { + isa = PBXGroup; + children = ( + B3EBAA08287296FC00EAEB37 /* mimetypes */, + B3EBAA0B287296FC00EAEB37 /* apps */, + ); + path = 64x64; + sourceTree = ""; + }; + B3EBAA08287296FC00EAEB37 /* mimetypes */ = { + isa = PBXGroup; + children = ( + B3EBAA09287296FC00EAEB37 /* application-x-msa-disk-image.png */, + B3EBAA0A287296FC00EAEB37 /* application-x-st-disk-image.png */, + ); + path = mimetypes; + sourceTree = ""; + }; + B3EBAA0B287296FC00EAEB37 /* apps */ = { + isa = PBXGroup; + children = ( + B3EBAA0C287296FC00EAEB37 /* hatari.png */, + ); + path = apps; + sourceTree = ""; + }; + B3EBAA0D287296FC00EAEB37 /* 32x32 */ = { + isa = PBXGroup; + children = ( + B3EBAA0E287296FC00EAEB37 /* mimetypes */, + B3EBAA11287296FC00EAEB37 /* apps */, + ); + path = 32x32; + sourceTree = ""; + }; + B3EBAA0E287296FC00EAEB37 /* mimetypes */ = { + isa = PBXGroup; + children = ( + B3EBAA0F287296FC00EAEB37 /* application-x-msa-disk-image.png */, + B3EBAA10287296FC00EAEB37 /* application-x-st-disk-image.png */, + ); + path = mimetypes; + sourceTree = ""; + }; + B3EBAA11287296FC00EAEB37 /* apps */ = { + isa = PBXGroup; + children = ( + B3EBAA12287296FC00EAEB37 /* hatari.png */, + ); + path = apps; + sourceTree = ""; + }; + B3EBAA13287296FC00EAEB37 /* 128x128 */ = { + isa = PBXGroup; + children = ( + B3EBAA14287296FC00EAEB37 /* mimetypes */, + B3EBAA17287296FC00EAEB37 /* apps */, + ); + path = 128x128; + sourceTree = ""; + }; + B3EBAA14287296FC00EAEB37 /* mimetypes */ = { + isa = PBXGroup; + children = ( + B3EBAA15287296FC00EAEB37 /* application-x-msa-disk-image.png */, + B3EBAA16287296FC00EAEB37 /* application-x-st-disk-image.png */, + ); + path = mimetypes; + sourceTree = ""; + }; + B3EBAA17287296FC00EAEB37 /* apps */ = { + isa = PBXGroup; + children = ( + B3EBAA18287296FC00EAEB37 /* hatari.png */, + ); + path = apps; + sourceTree = ""; + }; + B3EBAA19287296FC00EAEB37 /* 256x256 */ = { + isa = PBXGroup; + children = ( + B3EBAA1A287296FC00EAEB37 /* mimetypes */, + B3EBAA1D287296FC00EAEB37 /* apps */, + ); + path = 256x256; + sourceTree = ""; + }; + B3EBAA1A287296FC00EAEB37 /* mimetypes */ = { + isa = PBXGroup; + children = ( + B3EBAA1B287296FC00EAEB37 /* application-x-msa-disk-image.png */, + B3EBAA1C287296FC00EAEB37 /* application-x-st-disk-image.png */, + ); + path = mimetypes; + sourceTree = ""; + }; + B3EBAA1D287296FC00EAEB37 /* apps */ = { + isa = PBXGroup; + children = ( + B3EBAA1E287296FC00EAEB37 /* hatari.png */, + ); + path = apps; + sourceTree = ""; + }; + B3EBAA1F287296FC00EAEB37 /* scalable */ = { + isa = PBXGroup; + children = ( + B3EBAA20287296FC00EAEB37 /* mimetypes */, + B3EBAA23287296FC00EAEB37 /* apps */, + ); + path = scalable; + sourceTree = ""; + }; + B3EBAA20287296FC00EAEB37 /* mimetypes */ = { + isa = PBXGroup; + children = ( + B3EBAA21287296FC00EAEB37 /* application-x-msa-disk-image.svg */, + B3EBAA22287296FC00EAEB37 /* application-x-st-disk-image.svg */, + ); + path = mimetypes; + sourceTree = ""; + }; + B3EBAA23287296FC00EAEB37 /* apps */ = { + isa = PBXGroup; + children = ( + B3EBAA24287296FC00EAEB37 /* hatari.svg */, + ); + path = apps; + sourceTree = ""; + }; + B3EBAA25287296FC00EAEB37 /* 48x48 */ = { + isa = PBXGroup; + children = ( + B3EBAA26287296FC00EAEB37 /* mimetypes */, + B3EBAA29287296FC00EAEB37 /* apps */, + ); + path = 48x48; + sourceTree = ""; + }; + B3EBAA26287296FC00EAEB37 /* mimetypes */ = { + isa = PBXGroup; + children = ( + B3EBAA27287296FC00EAEB37 /* application-x-msa-disk-image.png */, + B3EBAA28287296FC00EAEB37 /* application-x-st-disk-image.png */, + ); + path = mimetypes; + sourceTree = ""; + }; + B3EBAA29287296FC00EAEB37 /* apps */ = { + isa = PBXGroup; + children = ( + B3EBAA2A287296FC00EAEB37 /* hatari.png */, + ); + path = apps; + sourceTree = ""; + }; + B3EBAA2B287296FC00EAEB37 /* applications */ = { + isa = PBXGroup; + children = ( + B3EBAA2C287296FC00EAEB37 /* hatari.desktop */, + ); + path = applications; + sourceTree = ""; + }; + B3EBAA2D287296FC00EAEB37 /* mime */ = { + isa = PBXGroup; + children = ( + B3EBAA2E287296FC00EAEB37 /* packages */, + ); + path = mime; + sourceTree = ""; + }; + B3EBAA2E287296FC00EAEB37 /* packages */ = { + isa = PBXGroup; + children = ( + B3EBAA2F287296FC00EAEB37 /* hatari.xml */, + ); + path = packages; + sourceTree = ""; + }; + B3EBAA30287296FC00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBAA37287296FC00EAEB37 /* hatari-icon.bmp */, + B3EBAA72287296FC00EAEB37 /* acia.c */, + B3EBAB4B287296FD00EAEB37 /* audio.c */, + B3EBAAE1287296FD00EAEB37 /* avi_record.c */, + B3EBAADE287296FD00EAEB37 /* bios.c */, + B3EBAAF5287296FD00EAEB37 /* blitter.c */, + B3EBAA32287296FC00EAEB37 /* cart.c */, + B3EBAA7B287296FC00EAEB37 /* cartData.c */, + B3EBAB0C287296FD00EAEB37 /* cfgopts.c */, + B3EBAA38287296FC00EAEB37 /* change.c */, + B3EBAB19287296FD00EAEB37 /* clocks_timings.c */, + B3EBAB83287296FD00EAEB37 /* configuration.c */, + B3EBAADD287296FD00EAEB37 /* control.c */, + B3EBAA3A287296FC00EAEB37 /* createBlankImage.c */, + B3EBAB18287296FD00EAEB37 /* cycInt.c */, + B3EBAB11287296FD00EAEB37 /* cycles.c */, + B3EBAB0D287296FD00EAEB37 /* dialog.c */, + B3EBAA33287296FC00EAEB37 /* dim.c */, + B3EBAA3C287296FC00EAEB37 /* dmaSnd.c */, + B3EBAB0F287296FD00EAEB37 /* fdc.c */, + B3EBAB14287296FD00EAEB37 /* file.c */, + B3EBAA3B287296FC00EAEB37 /* floppy_ipf.c */, + B3EBAAC1287296FC00EAEB37 /* floppy_stx.c */, + B3EBAAF2287296FD00EAEB37 /* floppy.c */, + B3EBAAE0287296FD00EAEB37 /* gemdos.c */, + B3EBAAC3287296FC00EAEB37 /* hd6301_cpu.c */, + B3EBAA75287296FC00EAEB37 /* hdc.c */, + B3EBAB16287296FD00EAEB37 /* ide.c */, + B3EBAAF3287296FD00EAEB37 /* ikbd.c */, + B3EBAA34287296FC00EAEB37 /* ioMem.c */, + B3EBAB12287296FD00EAEB37 /* ioMemTabFalcon.c */, + B3EBAB15287296FD00EAEB37 /* ioMemTabST.c */, + B3EBAB10287296FD00EAEB37 /* ioMemTabSTE.c */, + B3EBAA40287296FC00EAEB37 /* ioMemTabTT.c */, + B3EBAAE9287296FD00EAEB37 /* joy.c */, + B3EBAAC2287296FC00EAEB37 /* keymap.c */, + B3EBAAF1287296FD00EAEB37 /* m68000.c */, + B3EBAAE8287296FD00EAEB37 /* main.c */, + B3EBAB0E287296FD00EAEB37 /* memorySnapShot.c */, + B3EBAA7A287296FC00EAEB37 /* mfp.c */, + B3EBAAF6287296FD00EAEB37 /* midi.c */, + B3EBAADF287296FD00EAEB37 /* msa.c */, + B3EBAB4A287296FD00EAEB37 /* options.c */, + B3EBAA3E287296FC00EAEB37 /* paths.c */, + B3EBAAE7287296FD00EAEB37 /* printer.c */, + B3EBAB13287296FD00EAEB37 /* psg.c */, + B3EBAADB287296FD00EAEB37 /* reset.c */, + B3EBAA77287296FC00EAEB37 /* resolution.c */, + B3EBAAF4287296FD00EAEB37 /* rs232.c */, + B3EBAA3D287296FC00EAEB37 /* rtc.c */, + B3EBAA76287296FC00EAEB37 /* scandir.c */, + B3EBAA74287296FC00EAEB37 /* screen.c */, + B3EBAAE2287296FD00EAEB37 /* screenSnapShot.c */, + B3EBAAE6287296FD00EAEB37 /* shortcut.c */, + B3EBAAEB287296FD00EAEB37 /* sound.c */, + B3EBAA73287296FC00EAEB37 /* spec512.c */, + B3EBAADC287296FD00EAEB37 /* st.c */, + B3EBAB17287296FD00EAEB37 /* statusbar.c */, + B3EBAA31287296FC00EAEB37 /* stMemory.c */, + B3EBAA78287296FC00EAEB37 /* str.c */, + B3EBAA79287296FC00EAEB37 /* tos.c */, + B3EBAA39287296FC00EAEB37 /* unzip.c */, + B3EBAAE5287296FD00EAEB37 /* utils.c */, + B3EBAAE4287296FD00EAEB37 /* vdi.c */, + B3EBAA3F287296FC00EAEB37 /* video.c */, + B3EBAAC4287296FC00EAEB37 /* wavFormat.c */, + B3EBAA35287296FC00EAEB37 /* xbios.c */, + B3EBAAEA287296FD00EAEB37 /* ymFormat.c */, + B3EBAA41287296FC00EAEB37 /* zip.c */, + B3EBAB4C287296FD00EAEB37 /* hd6301_cpu.h */, + B3EBAAE3287296FD00EAEB37 /* cart_asm.s */, + B3EBAA36287296FC00EAEB37 /* CMakeLists.txt */, + B3EBAB1A287296FD00EAEB37 /* cart_mus.x32 */, + B3EBAB4D287296FD00EAEB37 /* convert */, + B3EBAA42287296FC00EAEB37 /* cpu */, + B3EBAB63287296FD00EAEB37 /* debug */, + B3EBAB36287296FD00EAEB37 /* falcon */, + B3EBAB1B287296FD00EAEB37 /* gui-osx */, + B3EBAAC5287296FC00EAEB37 /* gui-sdl */, + B3EBAAEC287296FD00EAEB37 /* gui-win */, + B32C4BF328922257001B51AE /* gui-ios */, + B3EBAA7C287296FC00EAEB37 /* includes */, + B3EBAAF7287296FD00EAEB37 /* uae-cpu */, + ); + path = src; + sourceTree = ""; + }; + B3EBAA42287296FC00EAEB37 /* cpu */ = { + isa = PBXGroup; + children = ( + B3EBAA46287296FC00EAEB37 /* table68k */, + B3EBAA57287296FC00EAEB37 /* build68k.c */, + B3EBAA59287296FC00EAEB37 /* cpummu.c */, + B3EBAA54287296FC00EAEB37 /* cpummu030.c */, + B3EBAA58287296FC00EAEB37 /* custom.c */, + B3EBAA70287296FC00EAEB37 /* fpp.c */, + B3EBAA52287296FC00EAEB37 /* gencpu.c */, + B3EBAA4D287296FC00EAEB37 /* hatari-glue.c */, + B3EBAA4A287296FC00EAEB37 /* memory.c */, + B3EBAA6E287296FC00EAEB37 /* newcpu.c */, + B3EBAA51287296FC00EAEB37 /* readcpu.c */, + B3EBAA6A287296FC00EAEB37 /* compat.h */, + B3EBAA6B287296FC00EAEB37 /* cpu_prefetch.h */, + B3EBAA50287296FC00EAEB37 /* cpummu.h */, + B3EBAA6D287296FC00EAEB37 /* cpummu030.h */, + B3EBAA47287296FC00EAEB37 /* custom.h */, + B3EBAA43287296FC00EAEB37 /* events_jit.h */, + B3EBAA4C287296FC00EAEB37 /* events_normal.h */, + B3EBAA55287296FC00EAEB37 /* events.h */, + B3EBAA4F287296FC00EAEB37 /* falcon_cycle030.h */, + B3EBAA49287296FC00EAEB37 /* fpp-ieee-be.h */, + B3EBAA45287296FC00EAEB37 /* fpp-unknown.h */, + B3EBAA69287296FC00EAEB37 /* hatari-glue.h */, + B3EBAA48287296FC00EAEB37 /* m68k.h */, + B3EBAA68287296FC00EAEB37 /* maccess.h */, + B3EBAA56287296FC00EAEB37 /* md-fpp.h */, + B3EBAA6C287296FC00EAEB37 /* memory.h */, + B3EBAA4E287296FC00EAEB37 /* mmu_common.h */, + B3EBAA53287296FC00EAEB37 /* newcpu.h */, + B3EBAA67287296FC00EAEB37 /* options_cpu.h */, + B3EBAA66287296FC00EAEB37 /* readcpu.h */, + B3EBAA71287296FC00EAEB37 /* savestate.h */, + B3EBAA44287296FC00EAEB37 /* sysconfig.h */, + B3EBAA6F287296FC00EAEB37 /* sysdeps.h */, + B3EBAA4B287296FC00EAEB37 /* CMakeLists.txt */, + B3EBAA5A287296FC00EAEB37 /* jit */, + ); + path = cpu; + sourceTree = ""; + }; + B3EBAA5A287296FC00EAEB37 /* jit */ = { + isa = PBXGroup; + children = ( + B3EBAA5B287296FC00EAEB37 /* compemu_support.c */, + B3EBAA5C287296FC00EAEB37 /* codegen_x86.c */, + B3EBAA5D287296FC00EAEB37 /* compemu_raw_x86.c */, + B3EBAA5E287296FC00EAEB37 /* comptbl.h */, + B3EBAA5F287296FC00EAEB37 /* compemu_fpp.c */, + B3EBAA60287296FC00EAEB37 /* codegen_x86.h */, + B3EBAA61287296FC00EAEB37 /* compemu_support_codegen.c */, + B3EBAA62287296FC00EAEB37 /* compemu_codegen.h */, + B3EBAA63287296FC00EAEB37 /* compemu_optimizer_x86.c */, + B3EBAA64287296FC00EAEB37 /* gencomp.c */, + B3EBAA65287296FC00EAEB37 /* compemu.h */, + ); + path = jit; + sourceTree = ""; + }; + B3EBAA7C287296FC00EAEB37 /* includes */ = { + isa = PBXGroup; + children = ( + B3EBAA7D287296FC00EAEB37 /* ymFormat.h */, + B3EBAA7E287296FC00EAEB37 /* joy.h */, + B3EBAA7F287296FC00EAEB37 /* main.h */, + B3EBAA80287296FC00EAEB37 /* sound.h */, + B3EBAA81287296FC00EAEB37 /* screenSnapShot.h */, + B3EBAA82287296FC00EAEB37 /* avi_record.h */, + B3EBAA83287296FC00EAEB37 /* ioMemTables.h */, + B3EBAA84287296FC00EAEB37 /* printer.h */, + B3EBAA85287296FC00EAEB37 /* shortcut.h */, + B3EBAA86287296FC00EAEB37 /* utils.h */, + B3EBAA87287296FC00EAEB37 /* vdi.h */, + B3EBAA88287296FC00EAEB37 /* gemdos.h */, + B3EBAA89287296FC00EAEB37 /* bios.h */, + B3EBAA8A287296FC00EAEB37 /* control.h */, + B3EBAA8B287296FC00EAEB37 /* sdlgui.h */, + B3EBAA8C287296FC00EAEB37 /* st.h */, + B3EBAA8D287296FC00EAEB37 /* msa.h */, + B3EBAA8E287296FC00EAEB37 /* version.h */, + B3EBAA8F287296FC00EAEB37 /* dialog.h */, + B3EBAA90287296FC00EAEB37 /* cfgopts.h */, + B3EBAA91287296FC00EAEB37 /* fdc.h */, + B3EBAA92287296FC00EAEB37 /* memorySnapShot.h */, + B3EBAA93287296FC00EAEB37 /* rs232.h */, + B3EBAA94287296FC00EAEB37 /* pixel_convert.h */, + B3EBAA95287296FC00EAEB37 /* midi.h */, + B3EBAA96287296FC00EAEB37 /* blitter.h */, + B3EBAA97287296FC00EAEB37 /* floppy.h */, + B3EBAA98287296FC00EAEB37 /* m68000.h */, + B3EBAA99287296FC00EAEB37 /* ikbd.h */, + B3EBAA9A287296FC00EAEB37 /* clocks_timings.h */, + B3EBAA9B287296FC00EAEB37 /* cycInt.h */, + B3EBAA9C287296FC00EAEB37 /* statusbar.h */, + B3EBAA9D287296FC00EAEB37 /* file.h */, + B3EBAA9E287296FC00EAEB37 /* ide.h */, + B3EBAA9F287296FC00EAEB37 /* psg.h */, + B3EBAAA0287296FC00EAEB37 /* cycles.h */, + B3EBAAA1287296FC00EAEB37 /* configuration.h */, + B3EBAAA2287296FC00EAEB37 /* audio.h */, + B3EBAAA3287296FC00EAEB37 /* gemdos_defines.h */, + B3EBAAA4287296FC00EAEB37 /* options.h */, + B3EBAAA5287296FC00EAEB37 /* ioMem.h */, + B3EBAAA6287296FC00EAEB37 /* cart.h */, + B3EBAAA7287296FC00EAEB37 /* dim.h */, + B3EBAAA8287296FC00EAEB37 /* stMemory.h */, + B3EBAAA9287296FC00EAEB37 /* zip.h */, + B3EBAAAA287296FC00EAEB37 /* floppy_ipf.h */, + B3EBAAAB287296FC00EAEB37 /* createBlankImage.h */, + B3EBAAAC287296FC00EAEB37 /* video.h */, + B3EBAAAD287296FC00EAEB37 /* paths.h */, + B3EBAAAE287296FC00EAEB37 /* rtc.h */, + B3EBAAAF287296FC00EAEB37 /* ym2149_fixed_vol.h */, + B3EBAAB0287296FC00EAEB37 /* dmaSnd.h */, + B3EBAAB1287296FC00EAEB37 /* change.h */, + B3EBAAB2287296FC00EAEB37 /* unzip.h */, + B3EBAAB3287296FC00EAEB37 /* xbios.h */, + B3EBAAB4287296FC00EAEB37 /* str.h */, + B3EBAAB5287296FC00EAEB37 /* mfp.h */, + B3EBAAB6287296FC00EAEB37 /* tos.h */, + B3EBAAB7287296FC00EAEB37 /* scandir.h */, + B3EBAAB8287296FC00EAEB37 /* hdc.h */, + B3EBAAB9287296FC00EAEB37 /* screen.h */, + B3EBAABA287296FC00EAEB37 /* spec512.h */, + B3EBAABB287296FC00EAEB37 /* resolution.h */, + B3EBAABC287296FC00EAEB37 /* acia.h */, + B3EBAABD287296FC00EAEB37 /* reset.h */, + B3EBAABE287296FC00EAEB37 /* wavFormat.h */, + B3EBAABF287296FC00EAEB37 /* floppy_stx.h */, + B3EBAAC0287296FC00EAEB37 /* keymap.h */, + ); + path = includes; + sourceTree = ""; + }; + B3EBAAC5287296FC00EAEB37 /* gui-sdl */ = { + isa = PBXGroup; + children = ( + B3EBAAD4287296FD00EAEB37 /* font5x8.bmp */, + B3EBAACA287296FC00EAEB37 /* font10x16.bmp */, + B3EBAACF287296FC00EAEB37 /* dlgAbout.c */, + B3EBAAD5287296FD00EAEB37 /* dlgAlert.c */, + B3EBAAC7287296FC00EAEB37 /* dlgDevice.c */, + B3EBAAD6287296FD00EAEB37 /* dlgFileSelect.c */, + B3EBAAC6287296FC00EAEB37 /* dlgFloppy.c */, + B3EBAAC9287296FC00EAEB37 /* dlgHardDisk.c */, + B3EBAAC8287296FC00EAEB37 /* dlgJoystick.c */, + B3EBAAD8287296FD00EAEB37 /* dlgKeyboard.c */, + B3EBAACD287296FC00EAEB37 /* dlgMain.c */, + B3EBAAD2287296FD00EAEB37 /* dlgMemory.c */, + B3EBAACE287296FC00EAEB37 /* dlgNewDisk.c */, + B3EBAACC287296FC00EAEB37 /* dlgRom.c */, + B3EBAAD9287296FD00EAEB37 /* dlgScreen.c */, + B3EBAAD0287296FC00EAEB37 /* dlgSound.c */, + B3EBAADA287296FD00EAEB37 /* dlgSystem.c */, + B3EBAAD1287296FD00EAEB37 /* sdlgui.c */, + B3EBAAD3287296FD00EAEB37 /* font5x8.h */, + B3EBAAD7287296FD00EAEB37 /* font10x16.h */, + B3EBAACB287296FC00EAEB37 /* CMakeLists.txt */, + ); + path = "gui-sdl"; + sourceTree = ""; + }; + B3EBAAEC287296FD00EAEB37 /* gui-win */ = { + isa = PBXGroup; + children = ( + B3EBAAED287296FD00EAEB37 /* opencon.c */, + B3EBAAEE287296FD00EAEB37 /* hatari-winicon.ico */, + B3EBAAEF287296FD00EAEB37 /* hatari-winicon.rc */, + B3EBAAF0287296FD00EAEB37 /* opencon.h */, + ); + path = "gui-win"; + sourceTree = ""; + }; + B3EBAAF7287296FD00EAEB37 /* uae-cpu */ = { + isa = PBXGroup; + children = ( + B3EBAAF9287296FD00EAEB37 /* table68k */, + B3EBAB02287296FD00EAEB37 /* build68k.c */, + B3EBAB0A287296FD00EAEB37 /* fpp.c */, + B3EBAB00287296FD00EAEB37 /* gencpu.c */, + B3EBAAFE287296FD00EAEB37 /* hatari-glue.c */, + B3EBAAFC287296FD00EAEB37 /* memory.c */, + B3EBAB08287296FD00EAEB37 /* newcpu.c */, + B3EBAAFF287296FD00EAEB37 /* readcpu.c */, + B3EBAB07287296FD00EAEB37 /* emumemory.h */, + B3EBAAFB287296FD00EAEB37 /* fpp-ieee-be.h */, + B3EBAAF8287296FD00EAEB37 /* fpp-unknown.h */, + B3EBAB06287296FD00EAEB37 /* hatari-glue.h */, + B3EBAAFA287296FD00EAEB37 /* m68k.h */, + B3EBAB05287296FD00EAEB37 /* maccess.h */, + B3EBAB01287296FD00EAEB37 /* newcpu.h */, + B3EBAB04287296FD00EAEB37 /* options_cpu.h */, + B3EBAB03287296FD00EAEB37 /* readcpu.h */, + B3EBAB0B287296FD00EAEB37 /* savestate.h */, + B3EBAB09287296FD00EAEB37 /* sysdeps.h */, + B3EBAAFD287296FD00EAEB37 /* CMakeLists.txt */, + ); + path = "uae-cpu"; + sourceTree = ""; + }; + B3EBAB1B287296FD00EAEB37 /* gui-osx */ = { + isa = PBXGroup; + children = ( + B3EBAB34287296FD00EAEB37 /* AlertHooks.h */, + B3EBAB2A287296FD00EAEB37 /* CreateFloppyController.h */, + B3EBAB33287296FD00EAEB37 /* PrefsController.h */, + B3EBAB27287296FD00EAEB37 /* SDLMain.h */, + B3EBAB24287296FD00EAEB37 /* Shared.h */, + B3EBAB29287296FD00EAEB37 /* disk.icns */, + B3EBAB31287296FD00EAEB37 /* Hatari.icns */, + B3EBAB2B287296FD00EAEB37 /* AlertHooks.m */, + B3EBAB35287296FD00EAEB37 /* CreateFloppyController.m */, + B3EBAB26287296FD00EAEB37 /* PrefsController.m */, + B3EBAB32287296FD00EAEB37 /* SDLMain.m */, + B3EBAB2C287296FD00EAEB37 /* Shared.m */, + B3EBAB28287296FD00EAEB37 /* Info-Hatari Winuae.plist */, + B3EBAB25287296FD00EAEB37 /* Info-Hatari.plist */, + B3EBAB1E287296FD00EAEB37 /* InfoPlist.strings */, + B3EBAB1C287296FD00EAEB37 /* Localizable.strings */, + B3EBAB20287296FD00EAEB37 /* SDLMain.nib */, + B3EBAB22287296FD00EAEB37 /* SDLMain.xib */, + ); + path = "gui-osx"; + sourceTree = ""; + }; + B3EBAB36287296FD00EAEB37 /* falcon */ = { + isa = PBXGroup; + children = ( + B3EBAB49287296FD00EAEB37 /* crossbar.c */, + B3EBAB3D287296FD00EAEB37 /* dsp_core.c */, + B3EBAB42287296FD00EAEB37 /* dsp_cpu.c */, + B3EBAB48287296FD00EAEB37 /* dsp_disasm.c */, + B3EBAB38287296FD00EAEB37 /* dsp.c */, + B3EBAB43287296FD00EAEB37 /* hostscreen.c */, + B3EBAB46287296FD00EAEB37 /* microphone.c */, + B3EBAB41287296FD00EAEB37 /* nvram.c */, + B3EBAB40287296FD00EAEB37 /* videl.c */, + B3EBAB3E287296FD00EAEB37 /* crossbar.h */, + B3EBAB45287296FD00EAEB37 /* dsp_core.h */, + B3EBAB3A287296FD00EAEB37 /* dsp_cpu.h */, + B3EBAB3F287296FD00EAEB37 /* dsp_disasm.h */, + B3EBAB44287296FD00EAEB37 /* dsp.h */, + B3EBAB37287296FD00EAEB37 /* hostscreen.h */, + B3EBAB3C287296FD00EAEB37 /* microphone.h */, + B3EBAB3B287296FD00EAEB37 /* nvram.h */, + B3EBAB47287296FD00EAEB37 /* videl.h */, + B3EBAB39287296FD00EAEB37 /* CMakeLists.txt */, + ); + path = falcon; + sourceTree = ""; + }; + B3EBAB4D287296FD00EAEB37 /* convert */ = { + isa = PBXGroup; + children = ( + B3EBAB4E287296FD00EAEB37 /* high640x8.c */, + B3EBAB4F287296FD00EAEB37 /* low320x16_spec.c */, + B3EBAB50287296FD00EAEB37 /* routines.h */, + B3EBAB51287296FD00EAEB37 /* low320x32_spec.c */, + B3EBAB52287296FD00EAEB37 /* vdi4.c */, + B3EBAB53287296FD00EAEB37 /* med640x16.c */, + B3EBAB54287296FD00EAEB37 /* low320x8.c */, + B3EBAB55287296FD00EAEB37 /* low640x8.c */, + B3EBAB56287296FD00EAEB37 /* low640x32.c */, + B3EBAB57287296FD00EAEB37 /* vdi16.c */, + B3EBAB58287296FD00EAEB37 /* low320x16.c */, + B3EBAB59287296FD00EAEB37 /* med640x32.c */, + B3EBAB5A287296FD00EAEB37 /* macros.h */, + B3EBAB5B287296FD00EAEB37 /* low640x16.c */, + B3EBAB5C287296FD00EAEB37 /* low320x32.c */, + B3EBAB5D287296FD00EAEB37 /* low640x32_spec.c */, + B3EBAB5E287296FD00EAEB37 /* med640x32_spec.c */, + B3EBAB5F287296FD00EAEB37 /* vdi2.c */, + B3EBAB60287296FD00EAEB37 /* low640x16_spec.c */, + B3EBAB61287296FD00EAEB37 /* med640x16_spec.c */, + B3EBAB62287296FD00EAEB37 /* med640x8.c */, + ); + path = convert; + sourceTree = ""; + }; + B3EBAB63287296FD00EAEB37 /* debug */ = { + isa = PBXGroup; + children = ( + B3EBAB6A287296FD00EAEB37 /* 68kDisass.c */, + B3EBAB70287296FD00EAEB37 /* breakcond.c */, + B3EBAB77287296FD00EAEB37 /* console.c */, + B3EBAB75287296FD00EAEB37 /* debugcpu.c */, + B3EBAB78287296FD00EAEB37 /* debugdsp.c */, + B3EBAB81287296FD00EAEB37 /* debugInfo.c */, + B3EBAB7A287296FD00EAEB37 /* debugui.c */, + B3EBAB72287296FD00EAEB37 /* evaluate.c */, + B3EBAB67287296FD00EAEB37 /* history.c */, + B3EBAB65287296FD00EAEB37 /* log.c */, + B3EBAB82287296FD00EAEB37 /* natfeats.c */, + B3EBAB7D287296FD00EAEB37 /* profile.c */, + B3EBAB71287296FD00EAEB37 /* profilecpu.c */, + B3EBAB6F287296FD00EAEB37 /* profiledsp.c */, + B3EBAB7E287296FD00EAEB37 /* symbols.c */, + B3EBAB76287296FD00EAEB37 /* 68kDisass.h */, + B3EBAB7C287296FD00EAEB37 /* breakcond.h */, + B3EBAB66287296FD00EAEB37 /* console.h */, + B3EBAB6B287296FD00EAEB37 /* debug_priv.h */, + B3EBAB69287296FD00EAEB37 /* debugcpu.h */, + B3EBAB68287296FD00EAEB37 /* debugdsp.h */, + B3EBAB74287296FD00EAEB37 /* debugInfo.h */, + B3EBAB64287296FD00EAEB37 /* debugui.h */, + B3EBAB7F287296FD00EAEB37 /* evaluate.h */, + B3EBAB79287296FD00EAEB37 /* history.h */, + B3EBAB7B287296FD00EAEB37 /* log.h */, + B3EBAB73287296FD00EAEB37 /* natfeats.h */, + B3EBAB80287296FD00EAEB37 /* profile_priv.h */, + B3EBAB6C287296FD00EAEB37 /* profile.h */, + B3EBAB6D287296FD00EAEB37 /* symbols.h */, + B3EBAB6E287296FD00EAEB37 /* CMakeLists.txt */, + ); + path = debug; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVHatari.h in Headers */, + B37022C92872554300B3F6DA /* PVHatariCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* hatari */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "hatari" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = hatari; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libhatari.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* hatari-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "hatari-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "hatari-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libhatari-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVHatari */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVHatari" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVHatari; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVHatari.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVHatari" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + English, + French, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVHatari */, + B3344B522859E088006E6B3A /* hatari-libretro */, + B30178D2207C901D0051B93D /* hatari */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + B3E0AB36289214D900DB1E39 /* hatari.cfg in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3E0ABE5289217BD00DB1E39 /* paths.c in Sources */, + B3E0ABAF2892177A00DB1E39 /* file.c in Sources */, + B3E0ABF5289217BD00DB1E39 /* screenSnapShot.c in Sources */, + B3E0ABF1289217BD00DB1E39 /* psg.c in Sources */, + B3E0AB432892168700DB1E39 /* fpp.c in Sources */, + B3E0ABE2289217BD00DB1E39 /* wavFormat.c in Sources */, + B3E0ABB12892177A00DB1E39 /* change.c in Sources */, + B3E0ABBA2892177A00DB1E39 /* configuration.c in Sources */, + B3E0ABBE2892177A00DB1E39 /* acia.c in Sources */, + B3E0ABB32892177A00DB1E39 /* dialog.c in Sources */, + B3E0ABBB2892177A00DB1E39 /* avi_record.c in Sources */, + B3E0AB6A289216D600DB1E39 /* dsp_cpu.c in Sources */, + B3E0ABB92892177A00DB1E39 /* cycles.c in Sources */, + B3E0ABF7289217BD00DB1E39 /* rs232.c in Sources */, + B3E0ABEB289217BD00DB1E39 /* vdi.c in Sources */, + B3E0ABE1289217BD00DB1E39 /* spec512.c in Sources */, + B3E0AB6F289216D600DB1E39 /* hostscreen.c in Sources */, + B3E0AB7D2892170200DB1E39 /* evaluate.c in Sources */, + B3E0ABA32892177A00DB1E39 /* hd6301_cpu.c in Sources */, + B3E0ABB72892177A00DB1E39 /* ioMem.c in Sources */, + B3E0ABE3289217BD00DB1E39 /* keymap.c in Sources */, + B3E0AB69289216D600DB1E39 /* dsp_disasm.c in Sources */, + B3E0AB6D289216D600DB1E39 /* crossbar.c in Sources */, + B3E0AB7F2892170300DB1E39 /* breakcond.c in Sources */, + B3E0ABEF289217BD00DB1E39 /* sound.c in Sources */, + B3E0AB6E289216D600DB1E39 /* dsp.c in Sources */, + B3E0ABED289217BD00DB1E39 /* m68000.c in Sources */, + B3E0AB6B289216D600DB1E39 /* dsp_core.c in Sources */, + B3E0AB832892170300DB1E39 /* profile.c in Sources */, + B3E0ABB52892177A00DB1E39 /* ioMemTabFalcon.c in Sources */, + B3E0ABFB289217BD00DB1E39 /* xbios.c in Sources */, + B3E0ABDF289217BD00DB1E39 /* main.c in Sources */, + B3E0ABB82892177A00DB1E39 /* blitter.c in Sources */, + B3E0AB862892170300DB1E39 /* profilecpu.c in Sources */, + B3E0AB3D2892166A00DB1E39 /* cpuemu.c in Sources */, + B3E0AB412892168700DB1E39 /* hatari-glue.c in Sources */, + B3E0AB9F2892173300DB1E39 /* dim.c in Sources */, + B3E0AB9E2892173300DB1E39 /* createBlankImage.c in Sources */, + B3E0ABAC2892177A00DB1E39 /* floppy.c in Sources */, + B3E0ABF2289217BD00DB1E39 /* shortcut.c in Sources */, + B3E0ABF4289217BD00DB1E39 /* tos.c in Sources */, + B3E0ABBF2892177A00DB1E39 /* gemdos.c in Sources */, + B3E0ABB02892177A00DB1E39 /* floppy_stx.c in Sources */, + B3E0ABE8289217BD00DB1E39 /* utils.c in Sources */, + B3E0AB452892168700DB1E39 /* newcpu.c in Sources */, + B3E0ABF8289217BD00DB1E39 /* str.c in Sources */, + B3E0AB812892170300DB1E39 /* history.c in Sources */, + B3E0ABA12892173300DB1E39 /* msa.c in Sources */, + B3E0ABF3289217BD00DB1E39 /* mfp.c in Sources */, + B3E0ABA92892177A00DB1E39 /* cart.c in Sources */, + B3E0ABA72892177A00DB1E39 /* bios.c in Sources */, + B3E0AB422892168700DB1E39 /* memory.c in Sources */, + B3E0AB6C289216D600DB1E39 /* videl.c in Sources */, + B3E0AB7C2892170200DB1E39 /* debugui.c in Sources */, + B3E0ABAA2892177A00DB1E39 /* ioMemTabTT.c in Sources */, + B3E0ABEA289217BD00DB1E39 /* resolution.c in Sources */, + B3E0ABE6289217BD00DB1E39 /* printer.c in Sources */, + B3E0ABE4289217BD00DB1E39 /* memorySnapShot.c in Sources */, + B3E0AB852892170300DB1E39 /* debugdsp.c in Sources */, + B3E0ABA22892173300DB1E39 /* st.c in Sources */, + B3E0ABE0289217BD00DB1E39 /* video.c in Sources */, + B3E0AB842892170300DB1E39 /* profiledsp.c in Sources */, + B3E0AB892892170300DB1E39 /* console.c in Sources */, + B3E0ABA42892177A00DB1E39 /* ide.c in Sources */, + B3E0ABF0289217BD00DB1E39 /* unzip.c in Sources */, + B3E0ABBD2892177A00DB1E39 /* ioMemTabSTE.c in Sources */, + B3E0AB442892168700DB1E39 /* readcpu.c in Sources */, + B3E0ABE7289217BD00DB1E39 /* rtc.c in Sources */, + B3E0ABF9289217BD00DB1E39 /* screen.c in Sources */, + B3E0ABBC2892177A00DB1E39 /* ioMemTabST.c in Sources */, + B3E0AB7E2892170300DB1E39 /* 68kDisass.c in Sources */, + B3E0ABEC289217BD00DB1E39 /* joy.c in Sources */, + B3E0ABFA289217BD00DB1E39 /* ymFormat.c in Sources */, + B3E0ABB62892177A00DB1E39 /* fdc.c in Sources */, + B3E0ABA62892177A00DB1E39 /* audio.c in Sources */, + B3E0ABAD2892177A00DB1E39 /* cycInt.c in Sources */, + B3E0ABAE2892177A00DB1E39 /* dmaSnd.c in Sources */, + B3E0AB3C2892166A00DB1E39 /* cpudefs.c in Sources */, + B3E0AB822892170300DB1E39 /* log.c in Sources */, + B3E0AB71289216D600DB1E39 /* nvram.c in Sources */, + B3E0AB872892170300DB1E39 /* debugcpu.c in Sources */, + B3E0ABEE289217BD00DB1E39 /* reset.c in Sources */, + B3E0ABA02892173300DB1E39 /* zip.c in Sources */, + B3E0AB802892170300DB1E39 /* debugInfo.c in Sources */, + B3E0ABF6289217BD00DB1E39 /* midi.c in Sources */, + B3E0AB70289216D600DB1E39 /* microphone.c in Sources */, + B3E0AB7B2892170200DB1E39 /* symbols.c in Sources */, + B3E0ABB42892177A00DB1E39 /* floppy_ipf.c in Sources */, + B3E0ABC02892177A00DB1E39 /* hdc.c in Sources */, + B3E0AB3B2892166A00DB1E39 /* cpustbl.c in Sources */, + B3E0ABAB2892177A00DB1E39 /* cfgopts.c in Sources */, + B3E0ABE9289217BD00DB1E39 /* scandir.c in Sources */, + B3E0ABA82892177A00DB1E39 /* ikbd.c in Sources */, + B3E0ABA52892177A00DB1E39 /* control.c in Sources */, + B3E0ABB22892177A00DB1E39 /* clocks_timings.c in Sources */, + B3E0AB882892170300DB1E39 /* natfeats.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3161B0D289225CB000CF68C /* dlgMain.c in Sources */, + B3161B0C289225CB000CF68C /* dlgAlert.c in Sources */, + B3161B0A289225CB000CF68C /* dlgHardDisk.c in Sources */, + B3E0AC23289217EC00DB1E39 /* graph.c in Sources */, + B3161B11289225CB000CF68C /* dlgRom.c in Sources */, + B3161B19289225CB000CF68C /* dlgDevice.c in Sources */, + B3161B14289225CB000CF68C /* dlgMemory.c in Sources */, + B3E0AC1B289217EC00DB1E39 /* vkbd.c in Sources */, + B3161B18289225CB000CF68C /* dlgSystem.c in Sources */, + B3E0AC19289217CA00DB1E39 /* libco.c in Sources */, + B3161B0F289225CB000CF68C /* dlgKeyboard.c in Sources */, + B3E0AC1E289217EC00DB1E39 /* bmp.c in Sources */, + B3161B0B289225CB000CF68C /* sdlgui.c in Sources */, + B3E0AC1C289217EC00DB1E39 /* retro_strings.c in Sources */, + B3161B12289225CB000CF68C /* dlgFileSelect.c in Sources */, + B3E0AC21289217EC00DB1E39 /* retro_files.c in Sources */, + B3E0AC1F289217EC00DB1E39 /* libretro.c in Sources */, + B3E0AC20289217EC00DB1E39 /* dlgAlert.c in Sources */, + B3161B0E289225CB000CF68C /* dlgFloppy.c in Sources */, + B3161B15289225CB000CF68C /* dlgJoystick.c in Sources */, + B3E0AC1D289217EC00DB1E39 /* hatari-mapper.c in Sources */, + B3161B17289225CB000CF68C /* dlgSound.c in Sources */, + B3161B16289225CB000CF68C /* dlgScreen.c in Sources */, + B3161B13289225CB000CF68C /* dlgNewDisk.c in Sources */, + B3E0AC22289217EC00DB1E39 /* retro_disk_control.c in Sources */, + B3161B10289225CB000CF68C /* dlgAbout.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVHatariCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* hatari-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B32C4BF428922257001B51AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + B32C4BF528922257001B51AE /* English */, + B32C4C0528922257001B51AE /* French */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + B32C4BF628922257001B51AE /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B32C4BF728922257001B51AE /* English */, + B32C4C0628922257001B51AE /* French */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B32C4BF828922257001B51AE /* SDLMain.nib */ = { + isa = PBXVariantGroup; + children = ( + B32C4BF928922257001B51AE /* English */, + B32C4C0728922257001B51AE /* French */, + ); + name = SDLMain.nib; + sourceTree = ""; + }; + B32C4BFA28922257001B51AE /* SDLMain.xib */ = { + isa = PBXVariantGroup; + children = ( + B32C4BFB28922257001B51AE /* English */, + B32C4C0828922257001B51AE /* French */, + ); + name = SDLMain.xib; + sourceTree = ""; + }; + B3EBAB1C287296FD00EAEB37 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + B3EBAB1D287296FD00EAEB37 /* English */, + B3EBAB2D287296FD00EAEB37 /* French */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + B3EBAB1E287296FD00EAEB37 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B3EBAB1F287296FD00EAEB37 /* English */, + B3EBAB2E287296FD00EAEB37 /* French */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B3EBAB20287296FD00EAEB37 /* SDLMain.nib */ = { + isa = PBXVariantGroup; + children = ( + B3EBAB21287296FD00EAEB37 /* English */, + B3EBAB2F287296FD00EAEB37 /* French */, + ); + name = SDLMain.nib; + sourceTree = ""; + }; + B3EBAB22287296FD00EAEB37 /* SDLMain.xib */ = { + isa = PBXVariantGroup; + children = ( + B3EBAB23287296FD00EAEB37 /* English */, + B3EBAB30287296FD00EAEB37 /* French */, + ); + name = SDLMain.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = hatari; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = hatari; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/../hatari/hatari/src/includes\"", + "\"$(SRCROOT)/../hatari/hatari/src/falcon\"", + "\"$(SRCROOT)/../hatari/hatari/src/debug\"", + "\"$(SRCROOT)/../hatari/hatari/src/uae-cpu\"", + "\"$(SRCROOT)/../hatari/hatari/src/cpu\"", + "\"$(SRCROOT)/../hatari/hatari/libretro\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/include\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/gui-retro\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/include\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/libco\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/include/compat/zlib\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVHatari/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVHatari"; + PRODUCT_NAME = PVHatari; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = hatari; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "hatari-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "hatari-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "hatari-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/../hatari/hatari/src/includes\"", + "\"$(SRCROOT)/../hatari/hatari/src/falcon\"", + "\"$(SRCROOT)/../hatari/hatari/src/debug\"", + "\"$(SRCROOT)/../hatari/hatari/src/uae-cpu\"", + "\"$(SRCROOT)/../hatari/hatari/src/cpu\"", + "\"$(SRCROOT)/../hatari/hatari/libretro\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/include\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/gui-retro\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/include\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/libco\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/include/compat/zlib\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/../hatari/hatari/src/includes\"", + "\"$(SRCROOT)/../hatari/hatari/src/falcon\"", + "\"$(SRCROOT)/../hatari/hatari/src/debug\"", + "\"$(SRCROOT)/../hatari/hatari/src/uae-cpu\"", + "\"$(SRCROOT)/../hatari/hatari/src/cpu\"", + "\"$(SRCROOT)/../hatari/hatari/libretro\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/include\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/gui-retro\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/include\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/libco\"", + "\"$(SRCROOT)/../hatari/hatari/libretro/libretro-common/include/compat/zlib\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVHatari/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVHatari"; + PRODUCT_NAME = PVHatari; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVHatari/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVHatari"; + PRODUCT_NAME = PVHatari; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "hatari" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "hatari-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVHatari" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVHatari" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/hatari/PVHatari.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/hatari/PVHatari.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/hatari/PVHatari.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/hatari/PVHatari.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/hatari/PVHatari.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/hatari/PVHatari.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/hatari/PVHatari.xcodeproj/xcshareddata/xcschemes/PVHatari.xcscheme b/Cores/hatari/PVHatari.xcodeproj/xcshareddata/xcschemes/PVHatari.xcscheme new file mode 100644 index 0000000000..93e89a3f71 --- /dev/null +++ b/Cores/hatari/PVHatari.xcodeproj/xcshareddata/xcschemes/PVHatari.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/hatari/PVHatari/Core.plist b/Cores/hatari/PVHatari/Core.plist new file mode 100644 index 0000000000..66e9d775d1 --- /dev/null +++ b/Cores/hatari/PVHatari/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.Hatari + PVPrincipleClass + PVHatari + PVSupportedSystems + + com.provenance.atarist + + PVProjectName + Hatari + PVProjectURL + http://hatari.tuxfamily.org/index.html + PVProjectVersion + 0 + + diff --git a/Cores/hatari/PVHatari/Info.plist b/Cores/hatari/PVHatari/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/hatari/PVHatari/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/hatari/PVHatari/PVHatari.h b/Cores/hatari/PVHatari/PVHatari.h new file mode 100644 index 0000000000..bd7897eee8 --- /dev/null +++ b/Cores/hatari/PVHatari/PVHatari.h @@ -0,0 +1,18 @@ +// +// PVHatari.h +// PVHatari +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVHatari. +FOUNDATION_EXPORT double PVHatariVersionNumber; + +//! Project version string for PVHatari. +FOUNDATION_EXPORT const unsigned char PVHatariVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/hatari/PVHatari/hatari.cfg b/Cores/hatari/PVHatari/hatari.cfg new file mode 100644 index 0000000000..dfad468e00 --- /dev/null +++ b/Cores/hatari/PVHatari/hatari.cfg @@ -0,0 +1,13 @@ +[Floppy] +bAutoInsertDiskB = TRUE +FastFloppy = TRUE +nWriteProtection = 0 +szDiskAFileName = /storage/roms/Atari\ -\ ST/game.st +szDiskBFileName = +szDiskImageDirectory = /storage/roms/Atari\ -\ ST/ +szDiskAZipPath = +szDiskBZipPath = + +[ROM] +szCartridgeImageFileName = +szTosImageFileName = /storage/system/tos.img \ No newline at end of file diff --git a/Cores/hatari/PVHatariCore/PVHatariCore.h b/Cores/hatari/PVHatariCore/PVHatariCore.h new file mode 100644 index 0000000000..e28c5831f9 --- /dev/null +++ b/Cores/hatari/PVHatariCore/PVHatariCore.h @@ -0,0 +1,43 @@ +// +// PVHatariCore.h +// PVHatari +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVHatariCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/hatari/PVHatariCore/PVHatariCore.mm b/Cores/hatari/PVHatariCore/PVHatariCore.mm new file mode 100644 index 0000000000..90599c67be --- /dev/null +++ b/Cores/hatari/PVHatariCore/PVHatariCore.mm @@ -0,0 +1,152 @@ +// +// PVHatariCore.m +// PVHatari +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVHatariCore.h" +#include +//#import "PVHatariCore+Controls.h" +//#import "PVHatariCore+Audio.h" +//#import "PVHatariCore+Video.h" +// +//#import "PVHatariCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVHatariCore() { + +} + +@end + +#pragma mark - PVHatariCore Begin + +@implementation PVHatariCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 13.63; +} + +//- (CGSize)aspectSize { +// return CGSizeMake(4, 3); +//} +// +//- (CGSize)bufferSize { +// return CGSizeMake(1440, 1080); +//} +// +//- (GLenum)pixelFormat { +// return GL_BGRA; +//} +// +//- (GLenum)pixelType { +// return GL_UNSIGNED_BYTE; +//} +// +//- (GLenum)internalPixelFormat { +// return GL_RGBA; +//} + +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/hatari/hatari b/Cores/hatari/hatari new file mode 160000 index 0000000000..018d0fe66a --- /dev/null +++ b/Cores/hatari/hatari @@ -0,0 +1 @@ +Subproject commit 018d0fe66afc881caf5a65588d09de40897da73a diff --git a/Cores/melonDS/BuildFlags.xcconfig b/Cores/melonDS/BuildFlags.xcconfig new file mode 100644 index 0000000000..f5cd943f71 --- /dev/null +++ b/Cores/melonDS/BuildFlags.xcconfig @@ -0,0 +1,71 @@ +// +// BuildFlags.xcconfig +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) OBJ_C IOS USE_POSIX_MEMALIGN USE_POSIX_MEMALIGN HAVE_WIFI JIT_ARCH=aarch64 HAVE_NEON=1 HAVE_THREADS=1 __LIBRETRO__ MELONDS_VERSION="" GIT_VERSION="" HAVE_OPENGLES=1 HAVE_OPENGLES2=1 HAVE_OPENGLES3=1 GLES=1 GLES2=1 GLES3=1 GLES31=1 +// JIT_ENABLED=1 +OTHER_CFLAGS = $(inherited) -ObjC -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer -fPIC +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + +GCC_PREPROCESSOR_DEFINITIONS[arch=armv7] = $(inherited) __RETRO_ARM__ ARCHITECTURE_ARM=1 +GCC_PREPROCESSOR_DEFINITIONS[arch=armv72] = $(inherited) __RETRO_ARM__ ARCHITECTURE_ARM=1 +GCC_PREPROCESSOR_DEFINITIONS[arch=arm64] = $(inherited) __RETRO_ARM__ ARCHITECTURE_ARM64=1 +GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64] = $(inherited) ARCHITECTURE_X64=1 + +GCC_PREPROCESSOR_DEFINITIONS[sdk=macos] = $(inherited) HAVE_OPENGL=1 OGLRENDERER_ENABLED=1 CORE=1 + +//OTHER_CFLAGS = $(inherited) -mno-thumb -mfpu=neon -fno-operator-names -fno-rtti -ffast-math -ftree-vectorize -fno-strict-aliasing -frename-registers -fno-rtti -fpermissive -fno-operator-names -fsingle-precision-constant + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +//OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) -fomit-frame-pointer + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +//OTHER_CFLAGS[sdk=appletvos*] = $(inherited) -fomit-frame-pointer + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 +// +//ifdef JIT_ARCH +//SOURCES_CXX += $(MELON_DIR)/ARMJIT.cpp \ +// $(MELON_DIR)/ARMJIT_Memory.cpp \ +// $(MELON_DIR)/ARM_InstrInfo.cpp \ +// $(MELON_DIR)/dolphin/CommonFuncs.cpp +// +//DEFINES += -DJIT_ENABLED +//endif +//ifeq ($(JIT_ARCH), aarch64) +//SOURCES_CXX += $(MELON_DIR)/dolphin/Arm64Emitter.cpp \ +// $(MELON_DIR)/dolphin/MathUtil.cpp \ +// $(MELON_DIR)/ARMJIT_A64/ARMJIT_Compiler.cpp \ +// $(MELON_DIR)/ARMJIT_A64/ARMJIT_ALU.cpp \ +// $(MELON_DIR)/ARMJIT_A64/ARMJIT_LoadStore.cpp \ +// $(MELON_DIR)/ARMJIT_A64/ARMJIT_Branch.cpp +//SOURCES_S += $(MELON_DIR)/ARMJIT_A64/ARMJIT_Linkage.S +//INCFLAGS += -I$(MELON_DIR)/ARMJIT_A64/ +// +//DEFINES += -DARCHITECTURE_ARM64 +//endif +// +//ifeq ($(JIT_ARCH), x64) +//SOURCES_CXX += $(MELON_DIR)/dolphin/x64ABI.cpp \ +// $(MELON_DIR)/dolphin/x64CPUDetect.cpp \ +// $(MELON_DIR)/dolphin/x64Emitter.cpp \ +// $(MELON_DIR)/ARMJIT_x64/ARMJIT_ALU.cpp \ +// $(MELON_DIR)/ARMJIT_x64/ARMJIT_Branch.cpp \ +// $(MELON_DIR)/ARMJIT_x64/ARMJIT_Compiler.cpp \ +// $(MELON_DIR)/ARMJIT_x64/ARMJIT_LoadStore.cpp +//SOURCES_S += $(MELON_DIR)/ARMJIT_x64/ARMJIT_Linkage.S +//INCFLAGS += -I$(MELON_DIR)/ARMJIT_x64/ +// +//DEFINES += -DARCHITECTURE_X64 +//endif diff --git a/Cores/melonDS/PVMelonDS.xcodeproj/project.pbxproj b/Cores/melonDS/PVMelonDS.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..65c2315f98 --- /dev/null +++ b/Cores/melonDS/PVMelonDS.xcodeproj/project.pbxproj @@ -0,0 +1,3322 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B33350262078619C0036A448 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3C7622720783510009950E4 /* Core.plist */; }; + B338055B28757C3A0009C732 /* PVMelonDSCore+Controls.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3447E97218B809300557ACE /* PVMelonDSCore+Controls.mm */; }; + B338055D287582CE0009C732 /* PVMelonDSCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EB2218BC69700557ACE /* PVMelonDSCore+Audio.m */; }; + B338055F287583AD0009C732 /* PVMelonDSCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B3447EAE218BC5C500557ACE /* PVMelonDSCore+Video.m */; }; + B33808932877B5E70009C732 /* DSi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806A12877B5080009C732 /* DSi.cpp */; }; + B33808942877B5E70009C732 /* DSi_Camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338085E2877B50A0009C732 /* DSi_Camera.cpp */; }; + B33808952877B5E70009C732 /* CRC32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806892877B5080009C732 /* CRC32.cpp */; }; + B33808962877B5E70009C732 /* DMA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338065B2877B5080009C732 /* DMA.cpp */; }; + B33808972877B5E70009C732 /* ARMInterpreter_ALU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808762877B50A0009C732 /* ARMInterpreter_ALU.cpp */; }; + B33808982877B5E70009C732 /* ARMInterpreter_Branch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806A22877B5080009C732 /* ARMInterpreter_Branch.cpp */; }; + B33808992877B5E70009C732 /* ARMInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808902877B50A0009C732 /* ARMInterpreter.cpp */; }; + B338089A2877B5E70009C732 /* DSi_NAND.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338069A2877B5080009C732 /* DSi_NAND.cpp */; }; + B338089B2877B5E70009C732 /* DSi_SD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338088D2877B50A0009C732 /* DSi_SD.cpp */; }; + B338089C2877B5E70009C732 /* DSi_NDMA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338087B2877B50A0009C732 /* DSi_NDMA.cpp */; }; + B338089D2877B5E70009C732 /* DSiCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806922877B5080009C732 /* DSiCrypto.cpp */; }; + B338089E2877B5E70009C732 /* DSi_NWifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808792877B50A0009C732 /* DSi_NWifi.cpp */; }; + B338089F2877B5E70009C732 /* ARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808872877B50A0009C732 /* ARM.cpp */; }; + B33808A02877B5E70009C732 /* ARCodeFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806962877B5080009C732 /* ARCodeFile.cpp */; }; + B33808A12877B5E70009C732 /* AREngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806972877B5080009C732 /* AREngine.cpp */; }; + B33808A22877B5E70009C732 /* DSi_DSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808572877B50A0009C732 /* DSi_DSP.cpp */; }; + B33808A32877B5E70009C732 /* ARMInterpreter_LoadStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808922877B50A0009C732 /* ARMInterpreter_LoadStore.cpp */; }; + B33808A42877B5E70009C732 /* CP15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805982877B5080009C732 /* CP15.cpp */; }; + B33808A52877B5E70009C732 /* DSi_AES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805A92877B5080009C732 /* DSi_AES.cpp */; }; + B33808A62877B5E70009C732 /* DSi_I2C.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808892877B50A0009C732 /* DSi_I2C.cpp */; }; + B33808A72877B5E70009C732 /* DSi_SPI_TSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338087F2877B50A0009C732 /* DSi_SPI_TSC.cpp */; }; + B33808BD2877B6090009C732 /* NDSCart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808682877B50A0009C732 /* NDSCart.cpp */; }; + B33808BE2877B6090009C732 /* Savestate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808722877B50A0009C732 /* Savestate.cpp */; }; + B33808BF2877B6090009C732 /* GPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338088A2877B50A0009C732 /* GPU.cpp */; }; + B33808C02877B6090009C732 /* GPU2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806742877B5080009C732 /* GPU2D.cpp */; }; + B33808C12877B6090009C732 /* GPU3D_Soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806102877B5080009C732 /* GPU3D_Soft.cpp */; }; + B33808C22877B6090009C732 /* GPU3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805942877B5080009C732 /* GPU3D.cpp */; }; + B33808C32877B6090009C732 /* WifiAP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806982877B5080009C732 /* WifiAP.cpp */; }; + B33808C42877B6090009C732 /* Wifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338087C2877B50A0009C732 /* Wifi.cpp */; }; + B33808C52877B6090009C732 /* GPU2D_Soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806932877B5080009C732 /* GPU2D_Soft.cpp */; }; + B33808C62877B6090009C732 /* RTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808552877B50A0009C732 /* RTC.cpp */; }; + B33808C72877B6090009C732 /* GBACart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808912877B50A0009C732 /* GBACart.cpp */; }; + B33808C82877B6090009C732 /* NDSCart_SRAMManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806872877B5080009C732 /* NDSCart_SRAMManager.cpp */; }; + B33808C92877B6090009C732 /* SPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338069D2877B5080009C732 /* SPI.cpp */; }; + B33808CA2877B6090009C732 /* SPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338068C2877B5080009C732 /* SPU.cpp */; }; + B33808D92877B61B0009C732 /* Util_ROM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806152877B5080009C732 /* Util_ROM.cpp */; }; + B33808DB2877B62D0009C732 /* screenlayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806AD2877B5080009C732 /* screenlayout.cpp */; }; + B33808DC2877B62D0009C732 /* config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806AC2877B5080009C732 /* config.cpp */; }; + B33808DD2877B62D0009C732 /* libretro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808502877B50A0009C732 /* libretro.cpp */; }; + B33808DE2877B62D0009C732 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806A82877B5080009C732 /* input.cpp */; }; + B33808DF2877B62D0009C732 /* platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806AE2877B5080009C732 /* platform.cpp */; }; + B33808E02877B62D0009C732 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806A72877B5080009C732 /* utils.cpp */; }; + B33808E72877B64F0009C732 /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B33806BC2877B5090009C732 /* compat_strl.c */; }; + B33808E82877B64F0009C732 /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B33806C22877B5090009C732 /* fopen_utf8.c */; }; + B33808E92877B64F0009C732 /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B33806BD2877B5090009C732 /* compat_posix_string.c */; }; + B33808EA2877B64F0009C732 /* compat_strcasestr.c in Sources */ = {isa = PBXBuildFile; fileRef = B33806BE2877B5090009C732 /* compat_strcasestr.c */; }; + B33808EF2877B6570009C732 /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B33807022877B5090009C732 /* file_path.c */; }; + B33808F12877B6680009C732 /* file_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B338071B2877B5090009C732 /* file_stream.c */; }; + B33808F22877B6680009C732 /* file_stream_transforms.c in Sources */ = {isa = PBXBuildFile; fileRef = B33807142877B5090009C732 /* file_stream_transforms.c */; }; + B33808F32877B6680009C732 /* memory_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B33807182877B5090009C732 /* memory_stream.c */; }; + B33808F72877B6700009C732 /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B33808342877B5090009C732 /* stdstring.c */; }; + B33808FA2877B67C0009C732 /* vfs_implementation.c in Sources */ = {isa = PBXBuildFile; fileRef = B33806B52877B5090009C732 /* vfs_implementation.c */; }; + B33808FC2877B6860009C732 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = B33808702877B50A0009C732 /* xxhash.c */; }; + B33808FE2877B68B0009C732 /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = B33808812877B50A0009C732 /* aes.c */; }; + B33809002877B6A00009C732 /* ffunicode.c in Sources */ = {isa = PBXBuildFile; fileRef = B33805A22877B5080009C732 /* ffunicode.c */; }; + B33809012877B6A00009C732 /* ffsystem.c in Sources */ = {isa = PBXBuildFile; fileRef = B33805A72877B5080009C732 /* ffsystem.c */; }; + B33809042877B6A80009C732 /* sha1.c in Sources */ = {isa = PBXBuildFile; fileRef = B338085A2877B50A0009C732 /* sha1.c */; }; + B33809072877B99C0009C732 /* rthreads.c in Sources */ = {isa = PBXBuildFile; fileRef = B33808262877B5090009C732 /* rthreads.c */; }; + B33809082877B9A20009C732 /* rsemaphore.c in Sources */ = {isa = PBXBuildFile; fileRef = B338082B2877B5090009C732 /* rsemaphore.c */; }; + B338090A2877B9F10009C732 /* ARMJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338068B2877B5080009C732 /* ARMJIT.cpp */; }; + B338090B2877B9F10009C732 /* ARMJIT_Memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338086D2877B50A0009C732 /* ARMJIT_Memory.cpp */; }; + B338090C2877B9F10009C732 /* CommonFuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806692877B5080009C732 /* CommonFuncs.cpp */; }; + B338090D2877B9F10009C732 /* ARM_InstrInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338068A2877B5080009C732 /* ARM_InstrInfo.cpp */; }; + B33809122877BA350009C732 /* ARMJIT_Linkage.S in Sources */ = {isa = PBXBuildFile; fileRef = B33808652877B50A0009C732 /* ARMJIT_Linkage.S */; }; + B33809132877BA350009C732 /* ARMJIT_Branch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808662877B50A0009C732 /* ARMJIT_Branch.cpp */; }; + B33809142877BA350009C732 /* ARMJIT_Compiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808612877B50A0009C732 /* ARMJIT_Compiler.cpp */; }; + B33809152877BA350009C732 /* ARMJIT_ALU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808632877B50A0009C732 /* ARMJIT_ALU.cpp */; }; + B33809162877BA350009C732 /* ARMJIT_LoadStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33808642877B50A0009C732 /* ARMJIT_LoadStore.cpp */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B3447E9C218B826F00557ACE /* PVMelonDS+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E9A218B826F00557ACE /* PVMelonDS+Audio.h */; }; + B3447E9F218B858100557ACE /* PVMelonDSCore+Controls.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E96218B809200557ACE /* PVMelonDSCore+Controls.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3447EA3218BBFBC00557ACE /* PVMelonDS+AudioTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA2218BBFB700557ACE /* PVMelonDS+AudioTypes.h */; }; + B3447EA7218BC3A600557ACE /* PVMelonDS+CoreAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA6218BC3A600557ACE /* PVMelonDS+CoreAudio.h */; }; + B3447EAB218BC59D00557ACE /* PVMelonDSCore+Saves.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EA9218BC59D00557ACE /* PVMelonDSCore+Saves.h */; }; + B3447EAF218BC5C500557ACE /* PVMelonDSCore+Video.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EAD218BC5C500557ACE /* PVMelonDSCore+Video.h */; }; + B3447EB3218BC69700557ACE /* PVMelonDSCore+Audio.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447EB1218BC69700557ACE /* PVMelonDSCore+Audio.h */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B364D4B72870E7D300B93A4B /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364D4B62870E7D300B93A4B /* PVLibRetro.framework */; }; + B39313802870FB9A00372EBB /* libMelonDS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libMelonDS.a */; }; + B3C7621520783162009950E4 /* PVMelonDS.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C7621320783162009950E4 /* PVMelonDS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; + B3C76225207833DE009950E4 /* PVMelonDSCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C76223207833DE009950E4 /* PVMelonDSCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3C76226207833DE009950E4 /* PVMelonDSCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3C76224207833DE009950E4 /* PVMelonDSCore.mm */; }; + B3C8A666287808C10037A946 /* NDS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806942877B5080009C732 /* NDS.cpp */; }; + B3C8A668287809340037A946 /* MathUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806672877B5080009C732 /* MathUtil.cpp */; }; + B3C8A66A2878093A0037A946 /* Arm64Emitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806712877B5080009C732 /* Arm64Emitter.cpp */; }; + B3C8A66C287809920037A946 /* teakra_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805CC2877B5080009C732 /* teakra_c.cpp */; }; + B3C8A66D287809920037A946 /* disassembler_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805F32877B5080009C732 /* disassembler_c.cpp */; }; + B3C8A670287809B00037A946 /* btdmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B338060F2877B5080009C732 /* btdmp.cpp */; }; + B3C8A671287809B00037A946 /* disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805D02877B5080009C732 /* disassembler.cpp */; }; + B3C8A672287809B00037A946 /* apbp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805F12877B5080009C732 /* apbp.cpp */; }; + B3C8A673287809B00037A946 /* ahbm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805CB2877B5080009C732 /* ahbm.cpp */; }; + B3C8A674287809B00037A946 /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805D12877B5080009C732 /* dma.cpp */; }; + B3C8A675287809B00037A946 /* parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33806052877B5080009C732 /* parser.cpp */; }; + B3C8A676287809B00037A946 /* mmio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805CD2877B5080009C732 /* mmio.cpp */; }; + B3C8A677287809B00037A946 /* processor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805DD2877B5080009C732 /* processor.cpp */; }; + B3C8A678287809B00037A946 /* teakra.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805F22877B5080009C732 /* teakra.cpp */; }; + B3C8A679287809B00037A946 /* memory_interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805CF2877B5080009C732 /* memory_interface.cpp */; }; + B3C8A67A287809B00037A946 /* test_generator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805FC2877B5080009C732 /* test_generator.cpp */; }; + B3C8A67B287809B00037A946 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33805E12877B5080009C732 /* timer.cpp */; }; + B3C8A68A28780AB90037A946 /* ff.c in Sources */ = {isa = PBXBuildFile; fileRef = B338059F2877B5080009C732 /* ff.c */; }; + B3C8A68D28780AE70037A946 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C8A68C28780AE30037A946 /* libpthread.tbd */; }; + B3C8A69028780B9A0037A946 /* diskio.c in Sources */ = {isa = PBXBuildFile; fileRef = B33805A62877B5080009C732 /* diskio.c */; }; + B3C8A69228780D5C0037A946 /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B33806B32877B5090009C732 /* encoding_utf.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39313812870FB9A00372EBB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B30178D2207C901D0051B93D; + remoteInfo = "MelonDS-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libMelonDS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMelonDS.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B33805642877B5080009C732 /* net.kuribo64.melonDS.desktop */ = {isa = PBXFileReference; lastKnownFileType = text; path = net.kuribo64.melonDS.desktop; sourceTree = ""; }; + B33805662877B5080009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33805672877B5080009C732 /* bios_common.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = bios_common.S; sourceTree = ""; }; + B33805682877B5080009C732 /* drastic_bios_arm7.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = drastic_bios_arm7.bin; sourceTree = ""; }; + B33805692877B5080009C732 /* drastic_bios_arm9.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = drastic_bios_arm9.bin; sourceTree = ""; }; + B338056A2877B5080009C732 /* drastic_bios_readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = drastic_bios_readme.txt; sourceTree = ""; }; + B338056C2877B5080009C732 /* msys-dist.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "msys-dist.sh"; sourceTree = ""; }; + B338056D2877B5080009C732 /* mac-libs.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = "mac-libs.rb"; sourceTree = ""; }; + B338056E2877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B338056F2877B5080009C732 /* xp.manifest */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = xp.manifest; sourceTree = ""; }; + B33805702877B5080009C732 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B33805722877B5080009C732 /* FindVTune.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = FindVTune.cmake; sourceTree = ""; }; + B33805732877B5080009C732 /* Toolchain-cross-MinGW-w64-x86_64.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Toolchain-cross-MinGW-w64-x86_64.cmake"; sourceTree = ""; }; + B33805742877B5080009C732 /* melon.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = melon.ico; sourceTree = ""; }; + B33805752877B5080009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33805762877B5080009C732 /* melon_grc.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = melon_grc.xml; sourceTree = ""; }; + B33805772877B5080009C732 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B33805782877B5080009C732 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B33805792877B5080009C732 /* melon.rc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = melon.rc.in; sourceTree = ""; }; + B338057A2877B5080009C732 /* melon.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = melon.plist.in; sourceTree = ""; }; + B338057B2877B5080009C732 /* melon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = melon.icns; sourceTree = ""; }; + B338057C2877B5080009C732 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B338057D2877B5080009C732 /* melon.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; path = melon.qrc; sourceTree = ""; }; + B338057E2877B5080009C732 /* contributing.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = contributing.md; sourceTree = ""; }; + B33805802877B5080009C732 /* FUNDING.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = FUNDING.yml; sourceTree = ""; }; + B33805822877B5080009C732 /* build-mac-arm64.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "build-mac-arm64.yml"; sourceTree = ""; }; + B33805832877B5080009C732 /* build-mac-x86_64.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "build-mac-x86_64.yml"; sourceTree = ""; }; + B33805852877B5080009C732 /* build-ubuntu-aarch64.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "build-ubuntu-aarch64.yml"; sourceTree = ""; }; + B33805862877B5080009C732 /* build-ubuntu.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "build-ubuntu.yml"; sourceTree = ""; }; + B33805872877B5080009C732 /* build-windows.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "build-windows.yml"; sourceTree = ""; }; + B33805882877B5080009C732 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B338058A2877B5080009C732 /* melon_16x16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = melon_16x16.png; sourceTree = ""; }; + B338058B2877B5080009C732 /* melon_128x128.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = melon_128x128.png; sourceTree = ""; }; + B338058C2877B5080009C732 /* melon_256x256.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = melon_256x256.png; sourceTree = ""; }; + B338058D2877B5080009C732 /* melon_48x48.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = melon_48x48.png; sourceTree = ""; }; + B338058E2877B5080009C732 /* melon_64x64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = melon_64x64.png; sourceTree = ""; }; + B338058F2877B5080009C732 /* melon_32x32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = melon_32x32.png; sourceTree = ""; }; + B33805912877B5080009C732 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B33805922877B5080009C732 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B33805942877B5080009C732 /* GPU3D.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPU3D.cpp; sourceTree = ""; }; + B33805952877B5080009C732 /* DSi_AES.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_AES.h; sourceTree = ""; }; + B33805962877B5080009C732 /* GBACart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GBACart.h; sourceTree = ""; }; + B33805972877B5080009C732 /* GPU_OpenGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU_OpenGL.h; sourceTree = ""; }; + B33805982877B5080009C732 /* CP15.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CP15.cpp; sourceTree = ""; }; + B33805992877B5080009C732 /* ARCodeFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARCodeFile.h; sourceTree = ""; }; + B338059A2877B5080009C732 /* DMA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DMA.h; sourceTree = ""; }; + B338059B2877B5080009C732 /* Wifi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Wifi.h; sourceTree = ""; }; + B338059C2877B5080009C732 /* WifiAP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WifiAP.h; sourceTree = ""; }; + B338059D2877B5080009C732 /* FIFO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FIFO.h; sourceTree = ""; }; + B338059F2877B5080009C732 /* ff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ff.c; sourceTree = ""; }; + B33805A02877B5080009C732 /* diskio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = diskio.h; sourceTree = ""; }; + B33805A12877B5080009C732 /* 00readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = 00readme.txt; sourceTree = ""; }; + B33805A22877B5080009C732 /* ffunicode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ffunicode.c; sourceTree = ""; }; + B33805A32877B5080009C732 /* ff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ff.h; sourceTree = ""; }; + B33805A42877B5080009C732 /* ffconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ffconf.h; sourceTree = ""; }; + B33805A52877B5080009C732 /* 00history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = 00history.txt; sourceTree = ""; }; + B33805A62877B5080009C732 /* diskio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = diskio.c; sourceTree = ""; }; + B33805A72877B5080009C732 /* ffsystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ffsystem.c; sourceTree = ""; }; + B33805A82877B5080009C732 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B33805A92877B5080009C732 /* DSi_AES.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_AES.cpp; sourceTree = ""; }; + B33805AA2877B5080009C732 /* version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; + B33805AB2877B5080009C732 /* DSi_DSP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_DSP.h; sourceTree = ""; }; + B33805AC2877B5080009C732 /* ARMInterpreter_Branch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_Branch.h; sourceTree = ""; }; + B33805AD2877B5080009C732 /* ARMInterpreter_ALU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_ALU.h; sourceTree = ""; }; + B33805AE2877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805B02877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805B12877B5080009C732 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B33805B42877B5080009C732 /* disassembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disassembler.h; sourceTree = ""; }; + B33805B52877B5080009C732 /* teakra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = teakra.h; sourceTree = ""; }; + B33805B62877B5080009C732 /* teakra_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = teakra_c.h; sourceTree = ""; }; + B33805B72877B5080009C732 /* disassembler_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disassembler_c.h; sourceTree = ""; }; + B33805B92877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805BB2877B5080009C732 /* catch.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch.hpp; sourceTree = ""; }; + B33805BC2877B5080009C732 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B33805BD2877B5080009C732 /* appveyor.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = appveyor.yml; sourceTree = ""; }; + B33805BE2877B5080009C732 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B33805C02877B5080009C732 /* CreateDirectoryGroups.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = CreateDirectoryGroups.cmake; sourceTree = ""; }; + B33805C12877B5080009C732 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B33805C32877B5080009C732 /* common_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common_types.h; sourceTree = ""; }; + B33805C42877B5080009C732 /* icu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = icu.h; sourceTree = ""; }; + B33805C52877B5080009C732 /* apbp.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = apbp.md; sourceTree = ""; }; + B33805C62877B5080009C732 /* ahbm.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ahbm.md; sourceTree = ""; }; + B33805C82877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805C92877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33805CA2877B5080009C732 /* dma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dma.h; sourceTree = ""; }; + B33805CB2877B5080009C732 /* ahbm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ahbm.cpp; sourceTree = ""; }; + B33805CC2877B5080009C732 /* teakra_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = teakra_c.cpp; sourceTree = ""; }; + B33805CD2877B5080009C732 /* mmio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mmio.cpp; sourceTree = ""; }; + B33805CE2877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805CF2877B5080009C732 /* memory_interface.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memory_interface.cpp; sourceTree = ""; }; + B33805D02877B5080009C732 /* disassembler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disassembler.cpp; sourceTree = ""; }; + B33805D12877B5080009C732 /* dma.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dma.cpp; sourceTree = ""; }; + B33805D22877B5080009C732 /* matcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matcher.h; sourceTree = ""; }; + B33805D42877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805D52877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33805D62877B5080009C732 /* mmio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mmio.h; sourceTree = ""; }; + B33805D72877B5080009C732 /* processor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = processor.h; sourceTree = ""; }; + B33805D92877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805DA2877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33805DB2877B5080009C732 /* processor_general.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = processor_general.md; sourceTree = ""; }; + B33805DC2877B5080009C732 /* parser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = parser.h; sourceTree = ""; }; + B33805DD2877B5080009C732 /* processor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = processor.cpp; sourceTree = ""; }; + B33805DE2877B5080009C732 /* memory_interface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_interface.h; sourceTree = ""; }; + B33805DF2877B5080009C732 /* interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interpreter.h; sourceTree = ""; }; + B33805E02877B5080009C732 /* btdmp.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = btdmp.md; sourceTree = ""; }; + B33805E12877B5080009C732 /* timer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + B33805E22877B5080009C732 /* decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decoder.h; sourceTree = ""; }; + B33805E32877B5080009C732 /* mmio.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = mmio.md; sourceTree = ""; }; + B33805E42877B5080009C732 /* test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = test.h; sourceTree = ""; }; + B33805E52877B5080009C732 /* bit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bit.h; sourceTree = ""; }; + B33805E62877B5080009C732 /* operand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = operand.h; sourceTree = ""; }; + B33805E72877B5080009C732 /* sio.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = sio.md; sourceTree = ""; }; + B33805E82877B5080009C732 /* btdmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = btdmp.h; sourceTree = ""; }; + B33805E92877B5080009C732 /* pmu.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = pmu.md; sourceTree = ""; }; + B33805EA2877B5080009C732 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B33805EB2877B5080009C732 /* timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + B33805ED2877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33805EE2877B5080009C732 /* coff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coff.h; sourceTree = ""; }; + B33805EF2877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33805F02877B5080009C732 /* icu.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = icu.md; sourceTree = ""; }; + B33805F12877B5080009C732 /* apbp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = apbp.cpp; sourceTree = ""; }; + B33805F22877B5080009C732 /* teakra.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = teakra.cpp; sourceTree = ""; }; + B33805F32877B5080009C732 /* disassembler_c.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disassembler_c.cpp; sourceTree = ""; }; + B33805F42877B5080009C732 /* register.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = register.md; sourceTree = ""; }; + B33805F52877B5080009C732 /* crash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash.h; sourceTree = ""; }; + B33805F62877B5080009C732 /* decoder.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = decoder.md; sourceTree = ""; }; + B33805F72877B5080009C732 /* core_timing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_timing.h; sourceTree = ""; }; + B33805F82877B5080009C732 /* ocem.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ocem.md; sourceTree = ""; }; + B33805F92877B5080009C732 /* test_generator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = test_generator.h; sourceTree = ""; }; + B33805FA2877B5080009C732 /* dma.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = dma.md; sourceTree = ""; }; + B33805FB2877B5080009C732 /* miu.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = miu.md; sourceTree = ""; }; + B33805FC2877B5080009C732 /* test_generator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_generator.cpp; sourceTree = ""; }; + B33805FD2877B5080009C732 /* register.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = register.h; sourceTree = ""; }; + B33805FF2877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33806002877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33806022877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33806032877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33806042877B5080009C732 /* timer.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = timer.md; sourceTree = ""; }; + B33806052877B5080009C732 /* parser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = parser.cpp; sourceTree = ""; }; + B33806062877B5080009C732 /* cru.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = cru.md; sourceTree = ""; }; + B33806072877B5080009C732 /* ahbm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ahbm.h; sourceTree = ""; }; + B33806082877B5080009C732 /* shared_memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shared_memory.h; sourceTree = ""; }; + B338060A2877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B338060B2877B5080009C732 /* sha256.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sha256.h; sourceTree = ""; }; + B338060C2877B5080009C732 /* sha256.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sha256.cpp; sourceTree = ""; }; + B338060D2877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B338060E2877B5080009C732 /* apbp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apbp.h; sourceTree = ""; }; + B338060F2877B5080009C732 /* btdmp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = btdmp.cpp; sourceTree = ""; }; + B33806102877B5080009C732 /* GPU3D_Soft.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPU3D_Soft.cpp; sourceTree = ""; }; + B33806122877B5080009C732 /* SharedConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SharedConfig.h; sourceTree = ""; }; + B33806132877B5080009C732 /* mic_blow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mic_blow.h; sourceTree = ""; }; + B33806142877B5080009C732 /* Util_Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Util_Audio.cpp; sourceTree = ""; }; + B33806152877B5080009C732 /* Util_ROM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Util_ROM.cpp; sourceTree = ""; }; + B33806162877B5080009C732 /* Util_Video.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Util_Video.cpp; sourceTree = ""; }; + B33806192877B5080009C732 /* nflog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nflog.h; sourceTree = ""; }; + B338061A2877B5080009C732 /* compiler-tests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "compiler-tests.h"; sourceTree = ""; }; + B338061B2877B5080009C732 /* pcap-inttypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "pcap-inttypes.h"; sourceTree = ""; }; + B338061C2877B5080009C732 /* funcattrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = funcattrs.h; sourceTree = ""; }; + B338061D2877B5080009C732 /* ipnet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ipnet.h; sourceTree = ""; }; + B338061E2877B5080009C732 /* bpf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bpf.h; sourceTree = ""; }; + B338061F2877B5080009C732 /* dlt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dlt.h; sourceTree = ""; }; + B33806202877B5080009C732 /* sll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sll.h; sourceTree = ""; }; + B33806212877B5080009C732 /* bluetooth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bluetooth.h; sourceTree = ""; }; + B33806222877B5080009C732 /* can_socketcan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = can_socketcan.h; sourceTree = ""; }; + B33806232877B5080009C732 /* pcap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcap.h; sourceTree = ""; }; + B33806242877B5080009C732 /* usb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = usb.h; sourceTree = ""; }; + B33806252877B5080009C732 /* vlan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vlan.h; sourceTree = ""; }; + B33806262877B5080009C732 /* namedb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = namedb.h; sourceTree = ""; }; + B33806272877B5080009C732 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B33806282877B5080009C732 /* LAN_PCap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LAN_PCap.h; sourceTree = ""; }; + B33806292877B5080009C732 /* VideoSettingsDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VideoSettingsDialog.h; sourceTree = ""; }; + B338062A2877B5080009C732 /* ROMInfoDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ROMInfoDialog.h; sourceTree = ""; }; + B338062B2877B5080009C732 /* EmuSettingsDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmuSettingsDialog.h; sourceTree = ""; }; + B338062C2877B5080009C732 /* Input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Input.h; sourceTree = ""; }; + B338062D2877B5080009C732 /* ROMInfoDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ROMInfoDialog.ui; sourceTree = ""; }; + B338062E2877B5080009C732 /* Input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Input.cpp; sourceTree = ""; }; + B338062F2877B5080009C732 /* TitleManagerDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TitleManagerDialog.h; sourceTree = ""; }; + B33806302877B5080009C732 /* InterfaceSettingsDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InterfaceSettingsDialog.cpp; sourceTree = ""; }; + B33806312877B5080009C732 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B33806322877B5080009C732 /* WifiSettingsDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WifiSettingsDialog.h; sourceTree = ""; }; + B33806332877B5080009C732 /* AudioSettingsDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSettingsDialog.cpp; sourceTree = ""; }; + B33806342877B5080009C732 /* AudioSettingsDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AudioSettingsDialog.ui; sourceTree = ""; }; + B33806352877B5080009C732 /* WifiSettingsDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = WifiSettingsDialog.ui; sourceTree = ""; }; + B33806362877B5080009C732 /* CheatsDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CheatsDialog.cpp; sourceTree = ""; }; + B33806372877B5080009C732 /* PlatformConfig.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformConfig.cpp; sourceTree = ""; }; + B33806382877B5080009C732 /* VideoSettingsDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VideoSettingsDialog.cpp; sourceTree = ""; }; + B33806392877B5080009C732 /* CheatsDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = CheatsDialog.ui; sourceTree = ""; }; + B338063A2877B5080009C732 /* LAN_Socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LAN_Socket.h; sourceTree = ""; }; + B338063B2877B5080009C732 /* main_shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main_shaders.h; sourceTree = ""; }; + B338063C2877B5080009C732 /* TitleManagerDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = TitleManagerDialog.ui; sourceTree = ""; }; + B338063D2877B5080009C732 /* FirmwareSettingsDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirmwareSettingsDialog.h; sourceTree = ""; }; + B338063E2877B5080009C732 /* TitleManagerDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TitleManagerDialog.cpp; sourceTree = ""; }; + B338063F2877B5080009C732 /* EmuSettingsDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = EmuSettingsDialog.ui; sourceTree = ""; }; + B33806402877B5080009C732 /* InputConfigDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = InputConfigDialog.ui; sourceTree = ""; }; + B33806412877B5080009C732 /* VideoSettingsDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = VideoSettingsDialog.ui; sourceTree = ""; }; + B33806422877B5080009C732 /* EmuSettingsDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = EmuSettingsDialog.cpp; sourceTree = ""; }; + B33806432877B5080009C732 /* InterfaceSettingsDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = InterfaceSettingsDialog.ui; sourceTree = ""; }; + B33806442877B5080009C732 /* TitleImportDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = TitleImportDialog.ui; sourceTree = ""; }; + B33806452877B5080009C732 /* QPathInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QPathInput.h; sourceTree = ""; }; + B33806462877B5080009C732 /* WifiSettingsDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WifiSettingsDialog.cpp; sourceTree = ""; }; + B33806472877B5080009C732 /* ArchiveUtil.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ArchiveUtil.cpp; sourceTree = ""; }; + B33806482877B5080009C732 /* InputConfigDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InputConfigDialog.h; sourceTree = ""; }; + B33806492877B5080009C732 /* LAN_Socket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LAN_Socket.cpp; sourceTree = ""; }; + B338064A2877B5080009C732 /* Platform.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Platform.cpp; sourceTree = ""; }; + B338064B2877B5080009C732 /* CheatsDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CheatsDialog.h; sourceTree = ""; }; + B338064C2877B5080009C732 /* FirmwareSettingsDialog.ui */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = FirmwareSettingsDialog.ui; sourceTree = ""; }; + B338064D2877B5080009C732 /* AudioSettingsDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioSettingsDialog.h; sourceTree = ""; }; + B338064E2877B5080009C732 /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; + B338064F2877B5080009C732 /* PlatformConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformConfig.h; sourceTree = ""; }; + B33806502877B5080009C732 /* InterfaceSettingsDialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterfaceSettingsDialog.h; sourceTree = ""; }; + B33806512877B5080009C732 /* ROMInfoDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ROMInfoDialog.cpp; sourceTree = ""; }; + B33806522877B5080009C732 /* InputConfigDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InputConfigDialog.cpp; sourceTree = ""; }; + B33806532877B5080009C732 /* OSD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OSD.h; sourceTree = ""; }; + B33806542877B5080009C732 /* FirmwareSettingsDialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FirmwareSettingsDialog.cpp; sourceTree = ""; }; + B33806552877B5080009C732 /* LAN_PCap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LAN_PCap.cpp; sourceTree = ""; }; + B33806562877B5080009C732 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + B33806572877B5080009C732 /* ArchiveUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArchiveUtil.h; sourceTree = ""; }; + B33806582877B5080009C732 /* OSD_shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OSD_shaders.h; sourceTree = ""; }; + B33806592877B5080009C732 /* OSD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OSD.cpp; sourceTree = ""; }; + B338065A2877B5080009C732 /* FrontendUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FrontendUtil.h; sourceTree = ""; }; + B338065B2877B5080009C732 /* DMA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DMA.cpp; sourceTree = ""; }; + B338065C2877B5080009C732 /* ARMInterpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter.h; sourceTree = ""; }; + B338065D2877B5080009C732 /* Config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = ""; }; + B338065E2877B5080009C732 /* OpenGLSupport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = OpenGLSupport.cpp; sourceTree = ""; }; + B338065F2877B5080009C732 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + B33806612877B5080009C732 /* BitSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BitSet.h; sourceTree = ""; }; + B33806622877B5080009C732 /* Align.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Align.h; sourceTree = ""; }; + B33806632877B5080009C732 /* x64Reg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x64Reg.h; sourceTree = ""; }; + B33806642877B5080009C732 /* Arm64Emitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Arm64Emitter.h; sourceTree = ""; }; + B33806652877B5080009C732 /* x64Emitter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x64Emitter.cpp; sourceTree = ""; }; + B33806662877B5080009C732 /* license_dolphin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = license_dolphin.txt; sourceTree = ""; }; + B33806672877B5080009C732 /* MathUtil.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MathUtil.cpp; sourceTree = ""; }; + B33806682877B5080009C732 /* x64Emitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x64Emitter.h; sourceTree = ""; }; + B33806692877B5080009C732 /* CommonFuncs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CommonFuncs.cpp; sourceTree = ""; }; + B338066A2877B5080009C732 /* ArmCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArmCommon.h; sourceTree = ""; }; + B338066B2877B5080009C732 /* BitUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BitUtils.h; sourceTree = ""; }; + B338066C2877B5080009C732 /* CPUDetect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPUDetect.h; sourceTree = ""; }; + B338066D2877B5080009C732 /* Compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compat.h; sourceTree = ""; }; + B338066E2877B5080009C732 /* x64ABI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x64ABI.cpp; sourceTree = ""; }; + B338066F2877B5080009C732 /* x64ABI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x64ABI.h; sourceTree = ""; }; + B33806702877B5080009C732 /* MathUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MathUtil.h; sourceTree = ""; }; + B33806712877B5080009C732 /* Arm64Emitter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Arm64Emitter.cpp; sourceTree = ""; }; + B33806722877B5080009C732 /* CommonFuncs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonFuncs.h; sourceTree = ""; }; + B33806732877B5080009C732 /* x64CPUDetect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = x64CPUDetect.cpp; sourceTree = ""; }; + B33806742877B5080009C732 /* GPU2D.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPU2D.cpp; sourceTree = ""; }; + B33806752877B5080009C732 /* DSi_NDMA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_NDMA.h; sourceTree = ""; }; + B33806762877B5080009C732 /* GPU3D_OpenGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU3D_OpenGL.h; sourceTree = ""; }; + B33806772877B5080009C732 /* ARM_InstrInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARM_InstrInfo.h; sourceTree = ""; }; + B33806792877B5080009C732 /* ARMJIT_Compiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Compiler.cpp; sourceTree = ""; }; + B338067A2877B5080009C732 /* ARMJIT_GenOffsets.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_GenOffsets.cpp; sourceTree = ""; }; + B338067B2877B5080009C732 /* ARMJIT_Offsets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Offsets.h; sourceTree = ""; }; + B338067C2877B5080009C732 /* ARMJIT_Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Compiler.h; sourceTree = ""; }; + B338067D2877B5080009C732 /* ARMJIT_ALU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_ALU.cpp; sourceTree = ""; }; + B338067E2877B5080009C732 /* ARMJIT_LoadStore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_LoadStore.cpp; sourceTree = ""; }; + B338067F2877B5080009C732 /* ARMJIT_Linkage.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ARMJIT_Linkage.S; sourceTree = ""; }; + B33806802877B5080009C732 /* ARMJIT_Branch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Branch.cpp; sourceTree = ""; }; + B33806812877B5080009C732 /* ARM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARM.h; sourceTree = ""; }; + B33806822877B5080009C732 /* DSi_NAND.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_NAND.h; sourceTree = ""; }; + B33806832877B5080009C732 /* ARMInterpreter_LoadStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_LoadStore.h; sourceTree = ""; }; + B33806842877B5080009C732 /* ARMJIT_RegisterCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT_RegisterCache.h; sourceTree = ""; }; + B33806852877B5080009C732 /* NDS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NDS.h; sourceTree = ""; }; + B33806862877B5080009C732 /* GPU2D_Soft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU2D_Soft.h; sourceTree = ""; }; + B33806872877B5080009C732 /* NDSCart_SRAMManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NDSCart_SRAMManager.cpp; sourceTree = ""; }; + B33806882877B5080009C732 /* DSi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi.h; sourceTree = ""; }; + B33806892877B5080009C732 /* CRC32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CRC32.cpp; sourceTree = ""; }; + B338068A2877B5080009C732 /* ARM_InstrInfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARM_InstrInfo.cpp; sourceTree = ""; }; + B338068B2877B5080009C732 /* ARMJIT.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT.cpp; sourceTree = ""; }; + B338068C2877B5080009C732 /* SPU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SPU.cpp; sourceTree = ""; }; + B338068D2877B5080009C732 /* GPU3D_Soft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU3D_Soft.h; sourceTree = ""; }; + B338068E2877B5080009C732 /* DSi_I2C.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_I2C.h; sourceTree = ""; }; + B338068F2877B5080009C732 /* DSiCrypto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSiCrypto.h; sourceTree = ""; }; + B33806902877B5080009C732 /* OpenGLSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenGLSupport.h; sourceTree = ""; }; + B33806912877B5080009C732 /* ARMJIT_Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Memory.h; sourceTree = ""; }; + B33806922877B5080009C732 /* DSiCrypto.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSiCrypto.cpp; sourceTree = ""; }; + B33806932877B5080009C732 /* GPU2D_Soft.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPU2D_Soft.cpp; sourceTree = ""; }; + B33806942877B5080009C732 /* NDS.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NDS.cpp; sourceTree = ""; }; + B33806952877B5080009C732 /* DMA_Timings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DMA_Timings.h; sourceTree = ""; }; + B33806962877B5080009C732 /* ARCodeFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARCodeFile.cpp; sourceTree = ""; }; + B33806972877B5080009C732 /* AREngine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AREngine.cpp; sourceTree = ""; }; + B33806982877B5080009C732 /* WifiAP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WifiAP.cpp; sourceTree = ""; }; + B33806992877B5080009C732 /* GPU3D_OpenGL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPU3D_OpenGL.cpp; sourceTree = ""; }; + B338069A2877B5080009C732 /* DSi_NAND.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_NAND.cpp; sourceTree = ""; }; + B338069B2877B5080009C732 /* DSi_SPI_TSC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_SPI_TSC.h; sourceTree = ""; }; + B338069C2877B5080009C732 /* ROMList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ROMList.h; sourceTree = ""; }; + B338069D2877B5080009C732 /* SPI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SPI.cpp; sourceTree = ""; }; + B338069E2877B5080009C732 /* GPU2D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU2D.h; sourceTree = ""; }; + B338069F2877B5080009C732 /* SPU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SPU.h; sourceTree = ""; }; + B33806A02877B5080009C732 /* ARM_InstrTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARM_InstrTable.h; sourceTree = ""; }; + B33806A12877B5080009C732 /* DSi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi.cpp; sourceTree = ""; }; + B33806A22877B5080009C732 /* ARMInterpreter_Branch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_Branch.cpp; sourceTree = ""; }; + B33806A42877B5080009C732 /* libretro_state.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_state.h; sourceTree = ""; }; + B33806A52877B5080009C732 /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; + B33806A62877B5080009C732 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; + B33806A72877B5080009C732 /* utils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = utils.cpp; sourceTree = ""; }; + B33806A82877B5080009C732 /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; + B33806A92877B5080009C732 /* opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opengl.h; sourceTree = ""; }; + B33806AA2877B5080009C732 /* shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shaders.h; sourceTree = ""; }; + B33806AB2877B5080009C732 /* opengl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = opengl.cpp; sourceTree = ""; }; + B33806AC2877B5080009C732 /* config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = config.cpp; sourceTree = ""; }; + B33806AD2877B5080009C732 /* screenlayout.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = screenlayout.cpp; sourceTree = ""; }; + B33806AE2877B5080009C732 /* platform.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = platform.cpp; sourceTree = ""; }; + B33806B12877B5080009C732 /* encoding_base64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_base64.c; sourceTree = ""; }; + B33806B22877B5080009C732 /* encoding_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_crc32.c; sourceTree = ""; }; + B33806B32877B5090009C732 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B33806B52877B5090009C732 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B33806B62877B5090009C732 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B33806B72877B5090009C732 /* vfs_implementation_uwp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vfs_implementation_uwp.cpp; sourceTree = ""; }; + B33806B92877B5090009C732 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B33806BB2877B5090009C732 /* compat_ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_ifaddrs.c; sourceTree = ""; }; + B33806BC2877B5090009C732 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B33806BD2877B5090009C732 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B33806BE2877B5090009C732 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B33806BF2877B5090009C732 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B33806C02877B5090009C732 /* compat_getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_getopt.c; sourceTree = ""; }; + B33806C12877B5090009C732 /* compat_fnmatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch.c; sourceTree = ""; }; + B33806C22877B5090009C732 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B33806C32877B5090009C732 /* compat_vscprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_vscprintf.c; sourceTree = ""; }; + B33806C52877B5090009C732 /* label_sanitization.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = label_sanitization.c; sourceTree = ""; }; + B33806C72877B5090009C732 /* dylib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dylib.c; sourceTree = ""; }; + B33806C92877B5090009C732 /* net_natt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_natt.c; sourceTree = ""; }; + B33806CA2877B5090009C732 /* net_socket_ssl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket_ssl.c; sourceTree = ""; }; + B33806CB2877B5090009C732 /* net_http.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http.c; sourceTree = ""; }; + B33806CC2877B5090009C732 /* net_http_parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_parse.c; sourceTree = ""; }; + B33806CD2877B5090009C732 /* net_ifinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo.c; sourceTree = ""; }; + B33806CE2877B5090009C732 /* net_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_compat.c; sourceTree = ""; }; + B33806CF2877B5090009C732 /* net_socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket.c; sourceTree = ""; }; + B33806D22877B5090009C732 /* rwav.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwav.c; sourceTree = ""; }; + B33806D42877B5090009C732 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B33806D52877B5090009C732 /* libchdr_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_zlib.c; sourceTree = ""; }; + B33806D62877B5090009C732 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B33806D72877B5090009C732 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B33806D82877B5090009C732 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B33806D92877B5090009C732 /* libchdr_flac_codec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac_codec.c; sourceTree = ""; }; + B33806DA2877B5090009C732 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B33806DB2877B5090009C732 /* libchdr_lzma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_lzma.c; sourceTree = ""; }; + B33806DC2877B5090009C732 /* image_texture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_texture.c; sourceTree = ""; }; + B33806DE2877B5090009C732 /* rtga.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtga.c; sourceTree = ""; }; + B33806E02877B5090009C732 /* rpng.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng.c; sourceTree = ""; }; + B33806E12877B5090009C732 /* rpng_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng_internal.h; sourceTree = ""; }; + B33806E22877B5090009C732 /* rpng_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_encode.c; sourceTree = ""; }; + B33806E52877B5090009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33806E62877B5090009C732 /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B33806E72877B5090009C732 /* rxml.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml.c; sourceTree = ""; }; + B33806E92877B5090009C732 /* jsonsax_full.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax_full.c; sourceTree = ""; }; + B33806EA2877B5090009C732 /* jsonsax.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax.c; sourceTree = ""; }; + B33806EC2877B5090009C732 /* cdfs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdfs.c; sourceTree = ""; }; + B33806EE2877B5090009C732 /* rjpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjpeg.c; sourceTree = ""; }; + B33806F02877B5090009C732 /* rbmp_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp_encode.c; sourceTree = ""; }; + B33806F12877B5090009C732 /* rbmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp.c; sourceTree = ""; }; + B33806F22877B5090009C732 /* image_transfer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_transfer.c; sourceTree = ""; }; + B33806F42877B5090009C732 /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B33806F52877B5090009C732 /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B33806F62877B5090009C732 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B33806F72877B5090009C732 /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B33806F82877B5090009C732 /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B33806F92877B5090009C732 /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B33806FA2877B5090009C732 /* xglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = xglgen.py; sourceTree = ""; }; + B33806FB2877B5090009C732 /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B33806FD2877B5090009C732 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B33806FE2877B5090009C732 /* vector_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vector_list.c; sourceTree = ""; }; + B33806FF2877B5090009C732 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B33807002877B5090009C732 /* file_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_list.c; sourceTree = ""; }; + B33807022877B5090009C732 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B33807032877B5090009C732 /* config_file_userdata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file_userdata.c; sourceTree = ""; }; + B33807052877B5090009C732 /* nbio_unixmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_unixmmap.c; sourceTree = ""; }; + B33807062877B5090009C732 /* nbio_linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_linux.c; sourceTree = ""; }; + B33807072877B5090009C732 /* nbio_orbis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_orbis.c; sourceTree = ""; }; + B33807082877B5090009C732 /* nbio_windowsmmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_windowsmmap.c; sourceTree = ""; }; + B33807092877B5090009C732 /* nbio_intf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_intf.c; sourceTree = ""; }; + B338070A2877B5090009C732 /* nbio_stdio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_stdio.c; sourceTree = ""; }; + B338070B2877B5090009C732 /* archive_file_7z.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_7z.c; sourceTree = ""; }; + B338070C2877B5090009C732 /* archive_file_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_zlib.c; sourceTree = ""; }; + B338070D2877B5090009C732 /* config_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file.c; sourceTree = ""; }; + B338070E2877B5090009C732 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B338070F2877B5090009C732 /* archive_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file.c; sourceTree = ""; }; + B33807112877B5090009C732 /* rhash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rhash.c; sourceTree = ""; }; + B33807132877B5090009C732 /* stdin_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdin_stream.c; sourceTree = ""; }; + B33807142877B5090009C732 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B33807152877B5090009C732 /* trans_stream_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_zlib.c; sourceTree = ""; }; + B33807162877B5090009C732 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B33807172877B5090009C732 /* trans_stream_pipe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream_pipe.c; sourceTree = ""; }; + B33807182877B5090009C732 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B33807192877B5090009C732 /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B338071A2877B5090009C732 /* trans_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trans_stream.c; sourceTree = ""; }; + B338071B2877B5090009C732 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B338071E2877B5090009C732 /* base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = ""; }; + B338071F2877B5090009C732 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B33807202877B5090009C732 /* win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32.h; sourceTree = ""; }; + B33807212877B5090009C732 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B33807222877B5090009C732 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B33807232877B5090009C732 /* libretro_dspfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_dspfilter.h; sourceTree = ""; }; + B33807252877B5090009C732 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B33807262877B5090009C732 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B33807272877B5090009C732 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B33807292877B5090009C732 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B338072A2877B5090009C732 /* libco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; + B338072C2877B5090009C732 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B338072D2877B5090009C732 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B338072E2877B5090009C732 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B338072F2877B5090009C732 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B33807312877B5090009C732 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B33807322877B5090009C732 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B33807332877B5090009C732 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B33807342877B5090009C732 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B33807352877B5090009C732 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B33807372877B5090009C732 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B33807382877B5090009C732 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B33807392877B5090009C732 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B338073A2877B5090009C732 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B338073B2877B5090009C732 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B338073C2877B5090009C732 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B338073D2877B5090009C732 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B338073E2877B5090009C732 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B338073F2877B5090009C732 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B33807402877B5090009C732 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B33807412877B5090009C732 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B33807432877B5090009C732 /* label_sanitization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = label_sanitization.h; sourceTree = ""; }; + B33807452877B5090009C732 /* dylib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dylib.h; sourceTree = ""; }; + B33807472877B5090009C732 /* net_ifinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_ifinfo.h; sourceTree = ""; }; + B33807482877B5090009C732 /* net_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_compat.h; sourceTree = ""; }; + B33807492877B5090009C732 /* net_socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket.h; sourceTree = ""; }; + B338074A2877B5090009C732 /* net_natt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_natt.h; sourceTree = ""; }; + B338074B2877B5090009C732 /* net_socket_ssl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket_ssl.h; sourceTree = ""; }; + B338074C2877B5090009C732 /* net_http.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http.h; sourceTree = ""; }; + B338074D2877B5090009C732 /* net_http_parse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http_parse.h; sourceTree = ""; }; + B338074E2877B5090009C732 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B33807502877B5090009C732 /* jsonsax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax.h; sourceTree = ""; }; + B33807512877B5090009C732 /* rxml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rxml.h; sourceTree = ""; }; + B33807522877B5090009C732 /* cdfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdfs.h; sourceTree = ""; }; + B33807532877B5090009C732 /* rpng.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng.h; sourceTree = ""; }; + B33807542877B5090009C732 /* rtga.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtga.h; sourceTree = ""; }; + B33807552877B5090009C732 /* image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = ""; }; + B33807562877B5090009C732 /* rbmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbmp.h; sourceTree = ""; }; + B33807572877B5090009C732 /* rwav.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rwav.h; sourceTree = ""; }; + B33807582877B5090009C732 /* jsonsax_full.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax_full.h; sourceTree = ""; }; + B33807592877B5090009C732 /* rjpeg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjpeg.h; sourceTree = ""; }; + B338075B2877B5090009C732 /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B338075C2877B5090009C732 /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B338075D2877B5090009C732 /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B338075E2877B5090009C732 /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B33807602877B5090009C732 /* nx_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_gl.h; sourceTree = ""; }; + B33807612877B5090009C732 /* nx_glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nx_glsym.h; sourceTree = ""; }; + B33807622877B5090009C732 /* rglgen_private_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_private_headers.h; sourceTree = ""; }; + B33807632877B5090009C732 /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B33807642877B5090009C732 /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B33807662877B5090009C732 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B33807672877B5090009C732 /* file_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_list.h; sourceTree = ""; }; + B33807682877B5090009C732 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B338076A2877B5090009C732 /* nbio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nbio.h; sourceTree = ""; }; + B338076B2877B5090009C732 /* config_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file.h; sourceTree = ""; }; + B338076C2877B5090009C732 /* archive_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_file.h; sourceTree = ""; }; + B338076D2877B5090009C732 /* config_file_userdata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file_userdata.h; sourceTree = ""; }; + B338076E2877B5090009C732 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B338076F2877B5090009C732 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B33807712877B5090009C732 /* dynarray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dynarray.h; sourceTree = ""; }; + B33807722877B5090009C732 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B33807732877B5090009C732 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B33807742877B5090009C732 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B33807762877B5090009C732 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B33807772877B5090009C732 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B33807782877B5090009C732 /* trans_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trans_stream.h; sourceTree = ""; }; + B33807792877B5090009C732 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B338077A2877B5090009C732 /* stdin_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdin_stream.h; sourceTree = ""; }; + B338077B2877B5090009C732 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B338077C2877B5090009C732 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B338077D2877B5090009C732 /* fastcpy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fastcpy.h; sourceTree = ""; }; + B338077F2877B5090009C732 /* lzma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lzma.h; sourceTree = ""; }; + B33807802877B5090009C732 /* minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = minmax.h; sourceTree = ""; }; + B33807812877B5090009C732 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B33807822877B5090009C732 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B33807832877B5090009C732 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B33807842877B5090009C732 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B33807852877B5090009C732 /* libchdr_zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libchdr_zlib.h; sourceTree = ""; }; + B33807862877B5090009C732 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B33807872877B5090009C732 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B33807892877B5090009C732 /* features_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = features_cpu.h; sourceTree = ""; }; + B338078B2877B5090009C732 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B338078C2877B5090009C732 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B338078D2877B5090009C732 /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B338078F2877B5090009C732 /* float_minmax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_minmax.h; sourceTree = ""; }; + B33807902877B5090009C732 /* fxp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fxp.h; sourceTree = ""; }; + B33807912877B5090009C732 /* complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = complex.h; sourceTree = ""; }; + B33807922877B5090009C732 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B33807932877B5090009C732 /* libretro_gskit_ps2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_gskit_ps2.h; sourceTree = ""; }; + B33807952877B5090009C732 /* glsm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm.h; sourceTree = ""; }; + B33807962877B5090009C732 /* glsmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsmsym.h; sourceTree = ""; }; + B33807982877B5090009C732 /* dsp_filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dsp_filter.h; sourceTree = ""; }; + B33807992877B5090009C732 /* audio_resampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_resampler.h; sourceTree = ""; }; + B338079A2877B5090009C732 /* audio_mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mixer.h; sourceTree = ""; }; + B338079C2877B5090009C732 /* s16_to_float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s16_to_float.h; sourceTree = ""; }; + B338079D2877B5090009C732 /* float_to_s16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_to_s16.h; sourceTree = ""; }; + B338079E2877B5090009C732 /* audio_mix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_mix.h; sourceTree = ""; }; + B338079F2877B5090009C732 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B33807A02877B5090009C732 /* rhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rhash.h; sourceTree = ""; }; + B33807A22877B5090009C732 /* rsemaphore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsemaphore.h; sourceTree = ""; }; + B33807A32877B5090009C732 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B33807A42877B5090009C732 /* async_job.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = async_job.h; sourceTree = ""; }; + B33807A52877B5090009C732 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B33807A72877B5090009C732 /* vulkan_symbol_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_symbol_wrapper.h; sourceTree = ""; }; + B33807A82877B5090009C732 /* retro_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; + B33807A92877B5090009C732 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B33807AB2877B5090009C732 /* task_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = task_queue.h; sourceTree = ""; }; + B33807AC2877B5090009C732 /* fifo_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fifo_queue.h; sourceTree = ""; }; + B33807AD2877B5090009C732 /* message_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message_queue.h; sourceTree = ""; }; + B33807AE2877B5090009C732 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B33807B02877B5090009C732 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B33807B12877B5090009C732 /* libretro_d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_d3d.h; sourceTree = ""; }; + B33807B22877B5090009C732 /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B33807B42877B5090009C732 /* video_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_frame.h; sourceTree = ""; }; + B33807B62877B5090009C732 /* vector_4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_4.h; sourceTree = ""; }; + B33807B72877B5090009C732 /* vector_3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_3.h; sourceTree = ""; }; + B33807B82877B5090009C732 /* vector_2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_2.h; sourceTree = ""; }; + B33807B92877B5090009C732 /* matrix_3x3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_3x3.h; sourceTree = ""; }; + B33807BA2877B5090009C732 /* matrix_4x4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_4x4.h; sourceTree = ""; }; + B33807BC2877B5090009C732 /* scaler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; + B33807BD2877B5090009C732 /* pixconv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pixconv.h; sourceTree = ""; }; + B33807BE2877B5090009C732 /* scaler_int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler_int.h; sourceTree = ""; }; + B33807BF2877B5090009C732 /* filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + B33807C02877B5090009C732 /* gl_capabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_capabilities.h; sourceTree = ""; }; + B33807C12877B5090009C732 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B33807C22877B5090009C732 /* filters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + B33807C42877B5090009C732 /* media_detect_cd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = media_detect_cd.h; sourceTree = ""; }; + B33807C62877B5090009C732 /* features_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = features_cpu.c; sourceTree = ""; }; + B33807C82877B5090009C732 /* djb2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = djb2.c; sourceTree = ""; }; + B33807C92877B5090009C732 /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = ""; }; + B33807CA2877B5090009C732 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B33807CB2877B5090009C732 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B33807CC2877B5090009C732 /* sha1_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1_main.c; sourceTree = ""; }; + B33807CE2877B5090009C732 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B33807CF2877B5090009C732 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B33807D32877B5090009C732 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B33807D42877B5090009C732 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B33807D52877B5090009C732 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B33807D72877B5090009C732 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B33807D82877B5090009C732 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B33807DA2877B5090009C732 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B33807DB2877B5090009C732 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B33807DD2877B5090009C732 /* net_ifinfo_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo_test.c; sourceTree = ""; }; + B33807DE2877B5090009C732 /* udp-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "udp-test.c"; sourceTree = ""; }; + B33807DF2877B5090009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33807E02877B5090009C732 /* net_ifinfo */ = {isa = PBXFileReference; lastKnownFileType = file; path = net_ifinfo; sourceTree = ""; }; + B33807E12877B5090009C732 /* http_test */ = {isa = PBXFileReference; lastKnownFileType = file; path = http_test; sourceTree = ""; }; + B33807E22877B5090009C732 /* net_http_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_test.c; sourceTree = ""; }; + B33807E52877B5090009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33807E62877B5090009C732 /* rpng_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_test.c; sourceTree = ""; }; + B33807E92877B5090009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33807EA2877B5090009C732 /* nbio_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_test.c; sourceTree = ""; }; + B33807EC2877B5090009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33807EE2877B5090009C732 /* glsm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsm.c; sourceTree = ""; }; + B33807F12877B5090009C732 /* eq.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eq.c; sourceTree = ""; }; + B33807F22877B5090009C732 /* EQ.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EQ.dsp; sourceTree = ""; }; + B33807F32877B5090009C732 /* Vibrato.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Vibrato.dsp; sourceTree = ""; }; + B33807F42877B5090009C732 /* ChipTuneEnhance.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChipTuneEnhance.dsp; sourceTree = ""; }; + B33807F52877B5090009C732 /* phaser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = phaser.c; sourceTree = ""; }; + B33807F62877B5090009C732 /* Crystalizer.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Crystalizer.dsp; sourceTree = ""; }; + B33807F72877B5090009C732 /* Mono.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Mono.dsp; sourceTree = ""; }; + B33807F82877B5090009C732 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B33807F92877B5090009C732 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B33807FA2877B5090009C732 /* chorus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chorus.c; sourceTree = ""; }; + B33807FB2877B5090009C732 /* Phaser.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Phaser.dsp; sourceTree = ""; }; + B33807FC2877B5090009C732 /* wahwah.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wahwah.c; sourceTree = ""; }; + B33807FD2877B5090009C732 /* IIR.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = IIR.dsp; sourceTree = ""; }; + B33807FE2877B5090009C732 /* HighShelfDampen.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = HighShelfDampen.dsp; sourceTree = ""; }; + B33807FF2877B5090009C732 /* EchoReverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EchoReverb.dsp; sourceTree = ""; }; + B33808002877B5090009C732 /* iir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iir.c; sourceTree = ""; }; + B33808012877B5090009C732 /* reverb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reverb.c; sourceTree = ""; }; + B33808022877B5090009C732 /* crystalizer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crystalizer.c; sourceTree = ""; }; + B33808032877B5090009C732 /* WahWah.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = WahWah.dsp; sourceTree = ""; }; + B33808052877B5090009C732 /* fft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = ""; }; + B33808062877B5090009C732 /* fft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fft.c; sourceTree = ""; }; + B33808072877B5090009C732 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B33808082877B5090009C732 /* BassBoost.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = BassBoost.dsp; sourceTree = ""; }; + B33808092877B5090009C732 /* vibrato.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vibrato.c; sourceTree = ""; }; + B338080A2877B5090009C732 /* Echo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Echo.dsp; sourceTree = ""; }; + B338080B2877B5090009C732 /* LowPassCPS.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = LowPassCPS.dsp; sourceTree = ""; }; + B338080C2877B5090009C732 /* Panning.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Panning.dsp; sourceTree = ""; }; + B338080D2877B5090009C732 /* tremolo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tremolo.c; sourceTree = ""; }; + B338080E2877B5090009C732 /* panning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = panning.c; sourceTree = ""; }; + B338080F2877B5090009C732 /* Chorus.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Chorus.dsp; sourceTree = ""; }; + B33808102877B5090009C732 /* Tremolo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tremolo.dsp; sourceTree = ""; }; + B33808112877B5090009C732 /* Reverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Reverb.dsp; sourceTree = ""; }; + B33808122877B5090009C732 /* echo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = echo.c; sourceTree = ""; }; + B33808132877B5090009C732 /* audio_mix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mix.c; sourceTree = ""; }; + B33808162877B5090009C732 /* sinc_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sinc_resampler.c; sourceTree = ""; }; + B33808172877B5090009C732 /* null_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_resampler.c; sourceTree = ""; }; + B33808182877B5090009C732 /* nearest_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nearest_resampler.c; sourceTree = ""; }; + B33808192877B5090009C732 /* sinc_resampler_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sinc_resampler_neon.S; sourceTree = ""; }; + B338081A2877B5090009C732 /* audio_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_resampler.c; sourceTree = ""; }; + B338081B2877B5090009C732 /* dsp_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsp_filter.c; sourceTree = ""; }; + B338081D2877B5090009C732 /* s16_to_float.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float.c; sourceTree = ""; }; + B338081E2877B5090009C732 /* float_to_s16_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16_neon.c; sourceTree = ""; }; + B338081F2877B5090009C732 /* s16_to_float_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float_neon.c; sourceTree = ""; }; + B33808202877B5090009C732 /* float_to_s16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16.c; sourceTree = ""; }; + B33808212877B5090009C732 /* float_to_s16_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = float_to_s16_neon.S; sourceTree = ""; }; + B33808222877B5090009C732 /* s16_to_float_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = s16_to_float_neon.S; sourceTree = ""; }; + B33808232877B5090009C732 /* audio_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_mixer.c; sourceTree = ""; }; + B33808252877B5090009C732 /* wiiu_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wiiu_pthread.h; sourceTree = ""; }; + B33808262877B5090009C732 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B33808272877B5090009C732 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B33808282877B5090009C732 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B33808292877B5090009C732 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B338082A2877B5090009C732 /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B338082B2877B5090009C732 /* rsemaphore.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rsemaphore.c; sourceTree = ""; }; + B338082C2877B5090009C732 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B338082E2877B5090009C732 /* vulkan_symbol_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_symbol_wrapper.c; sourceTree = ""; }; + B33808302877B5090009C732 /* fifo_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fifo_queue.c; sourceTree = ""; }; + B33808312877B5090009C732 /* message_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = message_queue.c; sourceTree = ""; }; + B33808322877B5090009C732 /* task_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_queue.c; sourceTree = ""; }; + B33808342877B5090009C732 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B33808372877B5090009C732 /* string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string.h; sourceTree = ""; }; + B33808382877B5090009C732 /* string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = ""; }; + B338083A2877B5090009C732 /* gl_capabilities.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl_capabilities.c; sourceTree = ""; }; + B338083C2877B5090009C732 /* scaler_int.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_int.c; sourceTree = ""; }; + B338083D2877B5090009C732 /* pixconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; + B338083E2877B5090009C732 /* scaler_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_filter.c; sourceTree = ""; }; + B338083F2877B5090009C732 /* scaler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + B33808412877B5090009C732 /* sjlj.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjlj.c; sourceTree = ""; }; + B33808422877B50A0009C732 /* ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ppc.c; sourceTree = ""; }; + B33808432877B50A0009C732 /* ucontext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ucontext.c; sourceTree = ""; }; + B33808442877B50A0009C732 /* fiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fiber.c; sourceTree = ""; }; + B33808452877B50A0009C732 /* aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aarch64.c; sourceTree = ""; }; + B33808462877B50A0009C732 /* libco.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libco.c; sourceTree = ""; }; + B33808472877B50A0009C732 /* scefiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scefiber.c; sourceTree = ""; }; + B33808482877B50A0009C732 /* genode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = genode.cpp; sourceTree = ""; }; + B33808492877B50A0009C732 /* armeabi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armeabi.c; sourceTree = ""; }; + B338084A2877B50A0009C732 /* amd64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = amd64.c; sourceTree = ""; }; + B338084B2877B50A0009C732 /* psp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp2.c; sourceTree = ""; }; + B338084C2877B50A0009C732 /* x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = ""; }; + B338084E2877B50A0009C732 /* media_detect_cd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = media_detect_cd.c; sourceTree = ""; }; + B338084F2877B50A0009C732 /* screenlayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = screenlayout.h; sourceTree = ""; }; + B33808502877B50A0009C732 /* libretro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = libretro.cpp; sourceTree = ""; }; + B33808512877B50A0009C732 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B33808522877B50A0009C732 /* melonDLDI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = melonDLDI.h; sourceTree = ""; }; + B33808532877B50A0009C732 /* GPU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU.h; sourceTree = ""; }; + B33808542877B50A0009C732 /* FreeBIOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FreeBIOS.h; sourceTree = ""; }; + B33808552877B50A0009C732 /* RTC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RTC.cpp; sourceTree = ""; }; + B33808562877B50A0009C732 /* ARMJIT_Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Compiler.h; sourceTree = ""; }; + B33808572877B50A0009C732 /* DSi_DSP.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_DSP.cpp; sourceTree = ""; }; + B33808582877B50A0009C732 /* Config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = ""; }; + B338085A2877B50A0009C732 /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = ""; }; + B338085B2877B50A0009C732 /* sha1.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = sha1.hpp; sourceTree = ""; }; + B338085C2877B50A0009C732 /* sha1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sha1.h; sourceTree = ""; }; + B338085D2877B50A0009C732 /* ARMJIT_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Internal.h; sourceTree = ""; }; + B338085E2877B50A0009C732 /* DSi_Camera.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_Camera.cpp; sourceTree = ""; }; + B338085F2877B50A0009C732 /* RTC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTC.h; sourceTree = ""; }; + B33808612877B50A0009C732 /* ARMJIT_Compiler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Compiler.cpp; sourceTree = ""; }; + B33808622877B50A0009C732 /* ARMJIT_Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Compiler.h; sourceTree = ""; }; + B33808632877B50A0009C732 /* ARMJIT_ALU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_ALU.cpp; sourceTree = ""; }; + B33808642877B50A0009C732 /* ARMJIT_LoadStore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_LoadStore.cpp; sourceTree = ""; }; + B33808652877B50A0009C732 /* ARMJIT_Linkage.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ARMJIT_Linkage.S; sourceTree = ""; }; + B33808662877B50A0009C732 /* ARMJIT_Branch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Branch.cpp; sourceTree = ""; }; + B33808672877B50A0009C732 /* NDS_Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NDS_Header.h; sourceTree = ""; }; + B33808682877B50A0009C732 /* NDSCart.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NDSCart.cpp; sourceTree = ""; }; + B33808692877B50A0009C732 /* GPU3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU3D.h; sourceTree = ""; }; + B338086B2877B50A0009C732 /* compat_switch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compat_switch.h; sourceTree = ""; }; + B338086C2877B50A0009C732 /* SPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SPI.h; sourceTree = ""; }; + B338086D2877B50A0009C732 /* ARMJIT_Memory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Memory.cpp; sourceTree = ""; }; + B338086F2877B50A0009C732 /* xxhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; + B33808702877B50A0009C732 /* xxhash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xxhash.c; sourceTree = ""; }; + B33808712877B50A0009C732 /* xxh3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xxh3.h; sourceTree = ""; }; + B33808722877B50A0009C732 /* Savestate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Savestate.cpp; sourceTree = ""; }; + B33808732877B50A0009C732 /* GPU_OpenGL_shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU_OpenGL_shaders.h; sourceTree = ""; }; + B33808742877B50A0009C732 /* DSi_Camera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_Camera.h; sourceTree = ""; }; + B33808752877B50A0009C732 /* ARMJIT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMJIT.h; sourceTree = ""; }; + B33808762877B50A0009C732 /* ARMInterpreter_ALU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_ALU.cpp; sourceTree = ""; }; + B33808772877B50A0009C732 /* DSi_SD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_SD.h; sourceTree = ""; }; + B33808782877B50A0009C732 /* AREngine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AREngine.h; sourceTree = ""; }; + B33808792877B50A0009C732 /* DSi_NWifi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_NWifi.cpp; sourceTree = ""; }; + B338087A2877B50A0009C732 /* GPU3D_OpenGL_shaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPU3D_OpenGL_shaders.h; sourceTree = ""; }; + B338087B2877B50A0009C732 /* DSi_NDMA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_NDMA.cpp; sourceTree = ""; }; + B338087C2877B50A0009C732 /* Wifi.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Wifi.cpp; sourceTree = ""; }; + B338087D2877B50A0009C732 /* NDSCart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NDSCart.h; sourceTree = ""; }; + B338087E2877B50A0009C732 /* NonStupidBitfield.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NonStupidBitfield.h; sourceTree = ""; }; + B338087F2877B50A0009C732 /* DSi_SPI_TSC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_SPI_TSC.cpp; sourceTree = ""; }; + B33808812877B50A0009C732 /* aes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = aes.c; sourceTree = ""; }; + B33808822877B50A0009C732 /* aes.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = aes.hpp; sourceTree = ""; }; + B33808832877B50A0009C732 /* unlicense.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = unlicense.txt; sourceTree = ""; }; + B33808842877B50A0009C732 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B33808852877B50A0009C732 /* aes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; + B33808862877B50A0009C732 /* CRC32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CRC32.h; sourceTree = ""; }; + B33808872877B50A0009C732 /* ARM.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARM.cpp; sourceTree = ""; }; + B33808882877B50A0009C732 /* DSi_NWifi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSi_NWifi.h; sourceTree = ""; }; + B33808892877B50A0009C732 /* DSi_I2C.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_I2C.cpp; sourceTree = ""; }; + B338088A2877B50A0009C732 /* GPU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPU.cpp; sourceTree = ""; }; + B338088B2877B50A0009C732 /* Platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; + B338088C2877B50A0009C732 /* Savestate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Savestate.h; sourceTree = ""; }; + B338088D2877B50A0009C732 /* DSi_SD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_SD.cpp; sourceTree = ""; }; + B338088E2877B50A0009C732 /* NDSCart_SRAMManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NDSCart_SRAMManager.h; sourceTree = ""; }; + B338088F2877B50A0009C732 /* GPU_OpenGL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPU_OpenGL.cpp; sourceTree = ""; }; + B33808902877B50A0009C732 /* ARMInterpreter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter.cpp; sourceTree = ""; }; + B33808912877B50A0009C732 /* GBACart.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GBACart.cpp; sourceTree = ""; }; + B33808922877B50A0009C732 /* ARMInterpreter_LoadStore.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_LoadStore.cpp; sourceTree = ""; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447E96218B809200557ACE /* PVMelonDSCore+Controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMelonDSCore+Controls.h"; sourceTree = ""; }; + B3447E97218B809300557ACE /* PVMelonDSCore+Controls.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVMelonDSCore+Controls.mm"; sourceTree = ""; }; + B3447E9A218B826F00557ACE /* PVMelonDS+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVMelonDS+Audio.h"; sourceTree = ""; }; + B3447E9B218B826F00557ACE /* PVMelonDS+Audio.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVMelonDS+Audio.mm"; sourceTree = ""; }; + B3447EA0218B881000557ACE /* PVMelonDS.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVMelonDS.mm; sourceTree = ""; }; + B3447EA2218BBFB700557ACE /* PVMelonDS+AudioTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVMelonDS+AudioTypes.h"; sourceTree = ""; }; + B3447EA4218BC36B00557ACE /* PVMelonDS+CoreAudio.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "PVMelonDS+CoreAudio.mm"; sourceTree = ""; }; + B3447EA6218BC3A600557ACE /* PVMelonDS+CoreAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PVMelonDS+CoreAudio.h"; sourceTree = ""; }; + B3447EA9218BC59D00557ACE /* PVMelonDSCore+Saves.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVMelonDSCore+Saves.h"; sourceTree = ""; }; + B3447EAA218BC59D00557ACE /* PVMelonDSCore+Saves.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVMelonDSCore+Saves.m"; sourceTree = ""; }; + B3447EAD218BC5C500557ACE /* PVMelonDSCore+Video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVMelonDSCore+Video.h"; sourceTree = ""; }; + B3447EAE218BC5C500557ACE /* PVMelonDSCore+Video.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVMelonDSCore+Video.m"; sourceTree = ""; }; + B3447EB1218BC69700557ACE /* PVMelonDSCore+Audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVMelonDSCore+Audio.h"; sourceTree = ""; }; + B3447EB2218BC69700557ACE /* PVMelonDSCore+Audio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PVMelonDSCore+Audio.m"; sourceTree = ""; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B364D4B62870E7D300B93A4B /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B364D4BA2870E7DE00B93A4B /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVMelonDS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVMelonDS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621320783162009950E4 /* PVMelonDS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMelonDS.h; sourceTree = ""; }; + B3C7621420783162009950E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C76223207833DE009950E4 /* PVMelonDSCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVMelonDSCore.h; sourceTree = ""; }; + B3C76224207833DE009950E4 /* PVMelonDSCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVMelonDSCore.mm; sourceTree = ""; }; + B3C7622720783510009950E4 /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B3C8A68C28780AE30037A946 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/lib/libpthread.tbd; sourceTree = DEVELOPER_DIR; }; + B3C8A68E28780AEF0037A946 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.4.sdk/usr/lib/libpthread.tbd; sourceTree = DEVELOPER_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C8A68D28780AE70037A946 /* libpthread.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39313802870FB9A00372EBB /* libMelonDS.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B364D4B72870E7D300B93A4B /* PVLibRetro.framework in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B33805632877B5080009C732 /* melonDS */ = { + isa = PBXGroup; + children = ( + B338057C2877B5080009C732 /* .gitignore */, + B33805702877B5080009C732 /* LICENSE */, + B33805752877B5080009C732 /* Makefile */, + B33805772877B5080009C732 /* Makefile.common */, + B33805642877B5080009C732 /* net.kuribo64.melonDS.desktop */, + B338057B2877B5080009C732 /* melon.icns */, + B33805742877B5080009C732 /* melon.ico */, + B338057A2877B5080009C732 /* melon.plist.in */, + B33805792877B5080009C732 /* melon.rc.in */, + B338056F2877B5080009C732 /* xp.manifest */, + B338057E2877B5080009C732 /* contributing.md */, + B33805782877B5080009C732 /* README.md */, + B338057D2877B5080009C732 /* melon.qrc */, + B338056E2877B5080009C732 /* CMakeLists.txt */, + B33805762877B5080009C732 /* melon_grc.xml */, + B33805882877B5080009C732 /* .gitlab-ci.yml */, + B338057F2877B5080009C732 /* .github */, + B33805712877B5080009C732 /* cmake */, + B33805652877B5080009C732 /* freebios */, + B33805892877B5080009C732 /* icon */, + B33805902877B5080009C732 /* jni */, + B33805932877B5080009C732 /* src */, + B338056B2877B5080009C732 /* tools */, + ); + path = melonDS; + sourceTree = ""; + }; + B33805652877B5080009C732 /* freebios */ = { + isa = PBXGroup; + children = ( + B33805662877B5080009C732 /* Makefile */, + B33805672877B5080009C732 /* bios_common.S */, + B33805682877B5080009C732 /* drastic_bios_arm7.bin */, + B33805692877B5080009C732 /* drastic_bios_arm9.bin */, + B338056A2877B5080009C732 /* drastic_bios_readme.txt */, + ); + path = freebios; + sourceTree = ""; + }; + B338056B2877B5080009C732 /* tools */ = { + isa = PBXGroup; + children = ( + B338056C2877B5080009C732 /* msys-dist.sh */, + B338056D2877B5080009C732 /* mac-libs.rb */, + ); + path = tools; + sourceTree = ""; + }; + B33805712877B5080009C732 /* cmake */ = { + isa = PBXGroup; + children = ( + B33805722877B5080009C732 /* FindVTune.cmake */, + B33805732877B5080009C732 /* Toolchain-cross-MinGW-w64-x86_64.cmake */, + ); + path = cmake; + sourceTree = ""; + }; + B338057F2877B5080009C732 /* .github */ = { + isa = PBXGroup; + children = ( + B33805802877B5080009C732 /* FUNDING.yml */, + B33805812877B5080009C732 /* azure-workflows */, + B33805842877B5080009C732 /* workflows */, + ); + path = .github; + sourceTree = ""; + }; + B33805812877B5080009C732 /* azure-workflows */ = { + isa = PBXGroup; + children = ( + B33805822877B5080009C732 /* build-mac-arm64.yml */, + B33805832877B5080009C732 /* build-mac-x86_64.yml */, + ); + path = "azure-workflows"; + sourceTree = ""; + }; + B33805842877B5080009C732 /* workflows */ = { + isa = PBXGroup; + children = ( + B33805852877B5080009C732 /* build-ubuntu-aarch64.yml */, + B33805862877B5080009C732 /* build-ubuntu.yml */, + B33805872877B5080009C732 /* build-windows.yml */, + ); + path = workflows; + sourceTree = ""; + }; + B33805892877B5080009C732 /* icon */ = { + isa = PBXGroup; + children = ( + B338058A2877B5080009C732 /* melon_16x16.png */, + B338058B2877B5080009C732 /* melon_128x128.png */, + B338058C2877B5080009C732 /* melon_256x256.png */, + B338058D2877B5080009C732 /* melon_48x48.png */, + B338058E2877B5080009C732 /* melon_64x64.png */, + B338058F2877B5080009C732 /* melon_32x32.png */, + ); + path = icon; + sourceTree = ""; + }; + B33805902877B5080009C732 /* jni */ = { + isa = PBXGroup; + children = ( + B33805912877B5080009C732 /* Android.mk */, + B33805922877B5080009C732 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B33805932877B5080009C732 /* src */ = { + isa = PBXGroup; + children = ( + B33806962877B5080009C732 /* ARCodeFile.cpp */, + B33806972877B5080009C732 /* AREngine.cpp */, + B338068A2877B5080009C732 /* ARM_InstrInfo.cpp */, + B33808872877B50A0009C732 /* ARM.cpp */, + B33808762877B50A0009C732 /* ARMInterpreter_ALU.cpp */, + B33806A22877B5080009C732 /* ARMInterpreter_Branch.cpp */, + B33808922877B50A0009C732 /* ARMInterpreter_LoadStore.cpp */, + B33808902877B50A0009C732 /* ARMInterpreter.cpp */, + B338086D2877B50A0009C732 /* ARMJIT_Memory.cpp */, + B338068B2877B5080009C732 /* ARMJIT.cpp */, + B33808582877B50A0009C732 /* Config.cpp */, + B33805982877B5080009C732 /* CP15.cpp */, + B33806892877B5080009C732 /* CRC32.cpp */, + B338065B2877B5080009C732 /* DMA.cpp */, + B33805A92877B5080009C732 /* DSi_AES.cpp */, + B338085E2877B50A0009C732 /* DSi_Camera.cpp */, + B33808572877B50A0009C732 /* DSi_DSP.cpp */, + B33808892877B50A0009C732 /* DSi_I2C.cpp */, + B338069A2877B5080009C732 /* DSi_NAND.cpp */, + B338087B2877B50A0009C732 /* DSi_NDMA.cpp */, + B33808792877B50A0009C732 /* DSi_NWifi.cpp */, + B338088D2877B50A0009C732 /* DSi_SD.cpp */, + B338087F2877B50A0009C732 /* DSi_SPI_TSC.cpp */, + B33806A12877B5080009C732 /* DSi.cpp */, + B33806922877B5080009C732 /* DSiCrypto.cpp */, + B33808912877B50A0009C732 /* GBACart.cpp */, + B338088F2877B50A0009C732 /* GPU_OpenGL.cpp */, + B338088A2877B50A0009C732 /* GPU.cpp */, + B33806932877B5080009C732 /* GPU2D_Soft.cpp */, + B33806742877B5080009C732 /* GPU2D.cpp */, + B33806992877B5080009C732 /* GPU3D_OpenGL.cpp */, + B33806102877B5080009C732 /* GPU3D_Soft.cpp */, + B33805942877B5080009C732 /* GPU3D.cpp */, + B33806942877B5080009C732 /* NDS.cpp */, + B33806872877B5080009C732 /* NDSCart_SRAMManager.cpp */, + B33808682877B50A0009C732 /* NDSCart.cpp */, + B338065E2877B5080009C732 /* OpenGLSupport.cpp */, + B33808552877B50A0009C732 /* RTC.cpp */, + B33808722877B50A0009C732 /* Savestate.cpp */, + B338069D2877B5080009C732 /* SPI.cpp */, + B338068C2877B5080009C732 /* SPU.cpp */, + B338087C2877B50A0009C732 /* Wifi.cpp */, + B33806982877B5080009C732 /* WifiAP.cpp */, + B33805992877B5080009C732 /* ARCodeFile.h */, + B33808782877B50A0009C732 /* AREngine.h */, + B33806772877B5080009C732 /* ARM_InstrInfo.h */, + B33806A02877B5080009C732 /* ARM_InstrTable.h */, + B33806812877B5080009C732 /* ARM.h */, + B33805AD2877B5080009C732 /* ARMInterpreter_ALU.h */, + B33805AC2877B5080009C732 /* ARMInterpreter_Branch.h */, + B33806832877B5080009C732 /* ARMInterpreter_LoadStore.h */, + B338065C2877B5080009C732 /* ARMInterpreter.h */, + B33808562877B50A0009C732 /* ARMJIT_Compiler.h */, + B338085D2877B50A0009C732 /* ARMJIT_Internal.h */, + B33806912877B5080009C732 /* ARMJIT_Memory.h */, + B33806842877B5080009C732 /* ARMJIT_RegisterCache.h */, + B33808752877B50A0009C732 /* ARMJIT.h */, + B338065D2877B5080009C732 /* Config.h */, + B33808862877B50A0009C732 /* CRC32.h */, + B33806952877B5080009C732 /* DMA_Timings.h */, + B338059A2877B5080009C732 /* DMA.h */, + B33805952877B5080009C732 /* DSi_AES.h */, + B33808742877B50A0009C732 /* DSi_Camera.h */, + B33805AB2877B5080009C732 /* DSi_DSP.h */, + B338068E2877B5080009C732 /* DSi_I2C.h */, + B33806822877B5080009C732 /* DSi_NAND.h */, + B33806752877B5080009C732 /* DSi_NDMA.h */, + B33808882877B50A0009C732 /* DSi_NWifi.h */, + B33808772877B50A0009C732 /* DSi_SD.h */, + B338069B2877B5080009C732 /* DSi_SPI_TSC.h */, + B33806882877B5080009C732 /* DSi.h */, + B338068F2877B5080009C732 /* DSiCrypto.h */, + B338059D2877B5080009C732 /* FIFO.h */, + B33808542877B50A0009C732 /* FreeBIOS.h */, + B33805962877B5080009C732 /* GBACart.h */, + B33808732877B50A0009C732 /* GPU_OpenGL_shaders.h */, + B33805972877B5080009C732 /* GPU_OpenGL.h */, + B33808532877B50A0009C732 /* GPU.h */, + B33806862877B5080009C732 /* GPU2D_Soft.h */, + B338069E2877B5080009C732 /* GPU2D.h */, + B338087A2877B50A0009C732 /* GPU3D_OpenGL_shaders.h */, + B33806762877B5080009C732 /* GPU3D_OpenGL.h */, + B338068D2877B5080009C732 /* GPU3D_Soft.h */, + B33808692877B50A0009C732 /* GPU3D.h */, + B33808522877B50A0009C732 /* melonDLDI.h */, + B33808672877B50A0009C732 /* NDS_Header.h */, + B33806852877B5080009C732 /* NDS.h */, + B338088E2877B50A0009C732 /* NDSCart_SRAMManager.h */, + B338087D2877B50A0009C732 /* NDSCart.h */, + B338087E2877B50A0009C732 /* NonStupidBitfield.h */, + B33806902877B5080009C732 /* OpenGLSupport.h */, + B338088B2877B50A0009C732 /* Platform.h */, + B338069C2877B5080009C732 /* ROMList.h */, + B338085F2877B50A0009C732 /* RTC.h */, + B338088C2877B50A0009C732 /* Savestate.h */, + B338086C2877B50A0009C732 /* SPI.h */, + B338069F2877B5080009C732 /* SPU.h */, + B338065F2877B5080009C732 /* types.h */, + B33805AA2877B5080009C732 /* version.h */, + B338059B2877B5080009C732 /* Wifi.h */, + B338059C2877B5080009C732 /* WifiAP.h */, + B33805AE2877B5080009C732 /* CMakeLists.txt */, + B33808602877B50A0009C732 /* ARMJIT_A64 */, + B33806782877B5080009C732 /* ARMJIT_x64 */, + B33806602877B5080009C732 /* dolphin */, + B338059E2877B5080009C732 /* fatfs */, + B33806112877B5080009C732 /* frontend */, + B33806A32877B5080009C732 /* libretro */, + B33808592877B50A0009C732 /* sha1 */, + B338086A2877B50A0009C732 /* switch */, + B33805AF2877B5080009C732 /* teakra */, + B33808802877B50A0009C732 /* tiny-AES-c */, + B338086E2877B50A0009C732 /* xxhash */, + ); + path = src; + sourceTree = ""; + }; + B338059E2877B5080009C732 /* fatfs */ = { + isa = PBXGroup; + children = ( + B33805A62877B5080009C732 /* diskio.c */, + B338059F2877B5080009C732 /* ff.c */, + B33805A72877B5080009C732 /* ffsystem.c */, + B33805A22877B5080009C732 /* ffunicode.c */, + B33805A02877B5080009C732 /* diskio.h */, + B33805A32877B5080009C732 /* ff.h */, + B33805A42877B5080009C732 /* ffconf.h */, + B33805A52877B5080009C732 /* 00history.txt */, + B33805A12877B5080009C732 /* 00readme.txt */, + B33805A82877B5080009C732 /* LICENSE.txt */, + ); + path = fatfs; + sourceTree = ""; + }; + B33805AF2877B5080009C732 /* teakra */ = { + isa = PBXGroup; + children = ( + B33805B02877B5080009C732 /* CMakeLists.txt */, + B33805B12877B5080009C732 /* LICENSE */, + B33805B22877B5080009C732 /* include */, + B33805B82877B5080009C732 /* externals */, + B33805BC2877B5080009C732 /* README.md */, + B33805BD2877B5080009C732 /* appveyor.yml */, + B33805BE2877B5080009C732 /* .gitignore */, + B33805BF2877B5080009C732 /* CMakeModules */, + B33805C12877B5080009C732 /* .travis.yml */, + B33805C22877B5080009C732 /* src */, + ); + path = teakra; + sourceTree = ""; + }; + B33805B22877B5080009C732 /* include */ = { + isa = PBXGroup; + children = ( + B33805B32877B5080009C732 /* teakra */, + ); + path = include; + sourceTree = ""; + }; + B33805B32877B5080009C732 /* teakra */ = { + isa = PBXGroup; + children = ( + B33805B42877B5080009C732 /* disassembler.h */, + B33805B52877B5080009C732 /* teakra.h */, + B33805B62877B5080009C732 /* teakra_c.h */, + B33805B72877B5080009C732 /* disassembler_c.h */, + ); + path = teakra; + sourceTree = ""; + }; + B33805B82877B5080009C732 /* externals */ = { + isa = PBXGroup; + children = ( + B33805B92877B5080009C732 /* CMakeLists.txt */, + B33805BA2877B5080009C732 /* catch */, + ); + path = externals; + sourceTree = ""; + }; + B33805BA2877B5080009C732 /* catch */ = { + isa = PBXGroup; + children = ( + B33805BB2877B5080009C732 /* catch.hpp */, + ); + path = catch; + sourceTree = ""; + }; + B33805BF2877B5080009C732 /* CMakeModules */ = { + isa = PBXGroup; + children = ( + B33805C02877B5080009C732 /* CreateDirectoryGroups.cmake */, + ); + path = CMakeModules; + sourceTree = ""; + }; + B33805C22877B5080009C732 /* src */ = { + isa = PBXGroup; + children = ( + B33805CB2877B5080009C732 /* ahbm.cpp */, + B33805F12877B5080009C732 /* apbp.cpp */, + B338060F2877B5080009C732 /* btdmp.cpp */, + B33805F32877B5080009C732 /* disassembler_c.cpp */, + B33805D02877B5080009C732 /* disassembler.cpp */, + B33805D12877B5080009C732 /* dma.cpp */, + B33805CF2877B5080009C732 /* memory_interface.cpp */, + B33805CD2877B5080009C732 /* mmio.cpp */, + B33806052877B5080009C732 /* parser.cpp */, + B33805DD2877B5080009C732 /* processor.cpp */, + B33805CC2877B5080009C732 /* teakra_c.cpp */, + B33805F22877B5080009C732 /* teakra.cpp */, + B33805FC2877B5080009C732 /* test_generator.cpp */, + B33805E12877B5080009C732 /* timer.cpp */, + B33806072877B5080009C732 /* ahbm.h */, + B338060E2877B5080009C732 /* apbp.h */, + B33805E52877B5080009C732 /* bit.h */, + B33805E82877B5080009C732 /* btdmp.h */, + B33805C32877B5080009C732 /* common_types.h */, + B33805F72877B5080009C732 /* core_timing.h */, + B33805F52877B5080009C732 /* crash.h */, + B33805E22877B5080009C732 /* decoder.h */, + B33805CA2877B5080009C732 /* dma.h */, + B33805C42877B5080009C732 /* icu.h */, + B33805DF2877B5080009C732 /* interpreter.h */, + B33805D22877B5080009C732 /* matcher.h */, + B33805DE2877B5080009C732 /* memory_interface.h */, + B33805D62877B5080009C732 /* mmio.h */, + B33805E62877B5080009C732 /* operand.h */, + B33805DC2877B5080009C732 /* parser.h */, + B33805D72877B5080009C732 /* processor.h */, + B33805FD2877B5080009C732 /* register.h */, + B33806082877B5080009C732 /* shared_memory.h */, + B33805F92877B5080009C732 /* test_generator.h */, + B33805E42877B5080009C732 /* test.h */, + B33805EB2877B5080009C732 /* timer.h */, + B33805C62877B5080009C732 /* ahbm.md */, + B33805C52877B5080009C732 /* apbp.md */, + B33805E02877B5080009C732 /* btdmp.md */, + B33806062877B5080009C732 /* cru.md */, + B33805F62877B5080009C732 /* decoder.md */, + B33805FA2877B5080009C732 /* dma.md */, + B33805F02877B5080009C732 /* icu.md */, + B33805FB2877B5080009C732 /* miu.md */, + B33805E32877B5080009C732 /* mmio.md */, + B33805F82877B5080009C732 /* ocem.md */, + B33805E92877B5080009C732 /* pmu.md */, + B33805DB2877B5080009C732 /* processor_general.md */, + B33805EA2877B5080009C732 /* README.md */, + B33805F42877B5080009C732 /* register.md */, + B33805E72877B5080009C732 /* sio.md */, + B33806042877B5080009C732 /* timer.md */, + B33805CE2877B5080009C732 /* CMakeLists.txt */, + B33805EC2877B5080009C732 /* coff_reader */, + B33805FE2877B5080009C732 /* dsp1_reader */, + B33806092877B5080009C732 /* makedsp1 */, + B33805D82877B5080009C732 /* mod_test_generator */, + B33806012877B5080009C732 /* step2_test_generator */, + B33805C72877B5080009C732 /* test_generator */, + B33805D32877B5080009C732 /* test_verifier */, + ); + path = src; + sourceTree = ""; + }; + B33805C72877B5080009C732 /* test_generator */ = { + isa = PBXGroup; + children = ( + B33805C82877B5080009C732 /* CMakeLists.txt */, + B33805C92877B5080009C732 /* main.cpp */, + ); + path = test_generator; + sourceTree = ""; + }; + B33805D32877B5080009C732 /* test_verifier */ = { + isa = PBXGroup; + children = ( + B33805D42877B5080009C732 /* CMakeLists.txt */, + B33805D52877B5080009C732 /* main.cpp */, + ); + path = test_verifier; + sourceTree = ""; + }; + B33805D82877B5080009C732 /* mod_test_generator */ = { + isa = PBXGroup; + children = ( + B33805D92877B5080009C732 /* CMakeLists.txt */, + B33805DA2877B5080009C732 /* main.cpp */, + ); + path = mod_test_generator; + sourceTree = ""; + }; + B33805EC2877B5080009C732 /* coff_reader */ = { + isa = PBXGroup; + children = ( + B33805ED2877B5080009C732 /* CMakeLists.txt */, + B33805EE2877B5080009C732 /* coff.h */, + B33805EF2877B5080009C732 /* main.cpp */, + ); + path = coff_reader; + sourceTree = ""; + }; + B33805FE2877B5080009C732 /* dsp1_reader */ = { + isa = PBXGroup; + children = ( + B33805FF2877B5080009C732 /* CMakeLists.txt */, + B33806002877B5080009C732 /* main.cpp */, + ); + path = dsp1_reader; + sourceTree = ""; + }; + B33806012877B5080009C732 /* step2_test_generator */ = { + isa = PBXGroup; + children = ( + B33806022877B5080009C732 /* CMakeLists.txt */, + B33806032877B5080009C732 /* main.cpp */, + ); + path = step2_test_generator; + sourceTree = ""; + }; + B33806092877B5080009C732 /* makedsp1 */ = { + isa = PBXGroup; + children = ( + B338060A2877B5080009C732 /* CMakeLists.txt */, + B338060B2877B5080009C732 /* sha256.h */, + B338060C2877B5080009C732 /* sha256.cpp */, + B338060D2877B5080009C732 /* main.cpp */, + ); + path = makedsp1; + sourceTree = ""; + }; + B33806112877B5080009C732 /* frontend */ = { + isa = PBXGroup; + children = ( + B33806122877B5080009C732 /* SharedConfig.h */, + B33806132877B5080009C732 /* mic_blow.h */, + B33806142877B5080009C732 /* Util_Audio.cpp */, + B33806152877B5080009C732 /* Util_ROM.cpp */, + B33806162877B5080009C732 /* Util_Video.cpp */, + B33806172877B5080009C732 /* qt_sdl */, + B338065A2877B5080009C732 /* FrontendUtil.h */, + ); + path = frontend; + sourceTree = ""; + }; + B33806172877B5080009C732 /* qt_sdl */ = { + isa = PBXGroup; + children = ( + B33806182877B5080009C732 /* pcap */, + B33806272877B5080009C732 /* main.h */, + B33806282877B5080009C732 /* LAN_PCap.h */, + B33806292877B5080009C732 /* VideoSettingsDialog.h */, + B338062A2877B5080009C732 /* ROMInfoDialog.h */, + B338062B2877B5080009C732 /* EmuSettingsDialog.h */, + B338062C2877B5080009C732 /* Input.h */, + B338062D2877B5080009C732 /* ROMInfoDialog.ui */, + B338062E2877B5080009C732 /* Input.cpp */, + B338062F2877B5080009C732 /* TitleManagerDialog.h */, + B33806302877B5080009C732 /* InterfaceSettingsDialog.cpp */, + B33806312877B5080009C732 /* CMakeLists.txt */, + B33806322877B5080009C732 /* WifiSettingsDialog.h */, + B33806332877B5080009C732 /* AudioSettingsDialog.cpp */, + B33806342877B5080009C732 /* AudioSettingsDialog.ui */, + B33806352877B5080009C732 /* WifiSettingsDialog.ui */, + B33806362877B5080009C732 /* CheatsDialog.cpp */, + B33806372877B5080009C732 /* PlatformConfig.cpp */, + B33806382877B5080009C732 /* VideoSettingsDialog.cpp */, + B33806392877B5080009C732 /* CheatsDialog.ui */, + B338063A2877B5080009C732 /* LAN_Socket.h */, + B338063B2877B5080009C732 /* main_shaders.h */, + B338063C2877B5080009C732 /* TitleManagerDialog.ui */, + B338063D2877B5080009C732 /* FirmwareSettingsDialog.h */, + B338063E2877B5080009C732 /* TitleManagerDialog.cpp */, + B338063F2877B5080009C732 /* EmuSettingsDialog.ui */, + B33806402877B5080009C732 /* InputConfigDialog.ui */, + B33806412877B5080009C732 /* VideoSettingsDialog.ui */, + B33806422877B5080009C732 /* EmuSettingsDialog.cpp */, + B33806432877B5080009C732 /* InterfaceSettingsDialog.ui */, + B33806442877B5080009C732 /* TitleImportDialog.ui */, + B33806452877B5080009C732 /* QPathInput.h */, + B33806462877B5080009C732 /* WifiSettingsDialog.cpp */, + B33806472877B5080009C732 /* ArchiveUtil.cpp */, + B33806482877B5080009C732 /* InputConfigDialog.h */, + B33806492877B5080009C732 /* LAN_Socket.cpp */, + B338064A2877B5080009C732 /* Platform.cpp */, + B338064B2877B5080009C732 /* CheatsDialog.h */, + B338064C2877B5080009C732 /* FirmwareSettingsDialog.ui */, + B338064D2877B5080009C732 /* AudioSettingsDialog.h */, + B338064E2877B5080009C732 /* font.h */, + B338064F2877B5080009C732 /* PlatformConfig.h */, + B33806502877B5080009C732 /* InterfaceSettingsDialog.h */, + B33806512877B5080009C732 /* ROMInfoDialog.cpp */, + B33806522877B5080009C732 /* InputConfigDialog.cpp */, + B33806532877B5080009C732 /* OSD.h */, + B33806542877B5080009C732 /* FirmwareSettingsDialog.cpp */, + B33806552877B5080009C732 /* LAN_PCap.cpp */, + B33806562877B5080009C732 /* main.cpp */, + B33806572877B5080009C732 /* ArchiveUtil.h */, + B33806582877B5080009C732 /* OSD_shaders.h */, + B33806592877B5080009C732 /* OSD.cpp */, + ); + path = qt_sdl; + sourceTree = ""; + }; + B33806182877B5080009C732 /* pcap */ = { + isa = PBXGroup; + children = ( + B33806192877B5080009C732 /* nflog.h */, + B338061A2877B5080009C732 /* compiler-tests.h */, + B338061B2877B5080009C732 /* pcap-inttypes.h */, + B338061C2877B5080009C732 /* funcattrs.h */, + B338061D2877B5080009C732 /* ipnet.h */, + B338061E2877B5080009C732 /* bpf.h */, + B338061F2877B5080009C732 /* dlt.h */, + B33806202877B5080009C732 /* sll.h */, + B33806212877B5080009C732 /* bluetooth.h */, + B33806222877B5080009C732 /* can_socketcan.h */, + B33806232877B5080009C732 /* pcap.h */, + B33806242877B5080009C732 /* usb.h */, + B33806252877B5080009C732 /* vlan.h */, + B33806262877B5080009C732 /* namedb.h */, + ); + path = pcap; + sourceTree = ""; + }; + B33806602877B5080009C732 /* dolphin */ = { + isa = PBXGroup; + children = ( + B33806712877B5080009C732 /* Arm64Emitter.cpp */, + B33806692877B5080009C732 /* CommonFuncs.cpp */, + B33806672877B5080009C732 /* MathUtil.cpp */, + B338066E2877B5080009C732 /* x64ABI.cpp */, + B33806732877B5080009C732 /* x64CPUDetect.cpp */, + B33806652877B5080009C732 /* x64Emitter.cpp */, + B33806622877B5080009C732 /* Align.h */, + B33806642877B5080009C732 /* Arm64Emitter.h */, + B338066A2877B5080009C732 /* ArmCommon.h */, + B33806612877B5080009C732 /* BitSet.h */, + B338066B2877B5080009C732 /* BitUtils.h */, + B33806722877B5080009C732 /* CommonFuncs.h */, + B338066D2877B5080009C732 /* Compat.h */, + B338066C2877B5080009C732 /* CPUDetect.h */, + B33806702877B5080009C732 /* MathUtil.h */, + B338066F2877B5080009C732 /* x64ABI.h */, + B33806682877B5080009C732 /* x64Emitter.h */, + B33806632877B5080009C732 /* x64Reg.h */, + B33806662877B5080009C732 /* license_dolphin.txt */, + ); + path = dolphin; + sourceTree = ""; + }; + B33806782877B5080009C732 /* ARMJIT_x64 */ = { + isa = PBXGroup; + children = ( + B33806792877B5080009C732 /* ARMJIT_Compiler.cpp */, + B338067A2877B5080009C732 /* ARMJIT_GenOffsets.cpp */, + B338067B2877B5080009C732 /* ARMJIT_Offsets.h */, + B338067C2877B5080009C732 /* ARMJIT_Compiler.h */, + B338067D2877B5080009C732 /* ARMJIT_ALU.cpp */, + B338067E2877B5080009C732 /* ARMJIT_LoadStore.cpp */, + B338067F2877B5080009C732 /* ARMJIT_Linkage.S */, + B33806802877B5080009C732 /* ARMJIT_Branch.cpp */, + ); + path = ARMJIT_x64; + sourceTree = ""; + }; + B33806A32877B5080009C732 /* libretro */ = { + isa = PBXGroup; + children = ( + B33806AC2877B5080009C732 /* config.cpp */, + B33806A82877B5080009C732 /* input.cpp */, + B33808502877B50A0009C732 /* libretro.cpp */, + B33806AB2877B5080009C732 /* opengl.cpp */, + B33806AE2877B5080009C732 /* platform.cpp */, + B33806AD2877B5080009C732 /* screenlayout.cpp */, + B33806A72877B5080009C732 /* utils.cpp */, + B33806A62877B5080009C732 /* input.h */, + B33806A42877B5080009C732 /* libretro_state.h */, + B33806A92877B5080009C732 /* opengl.h */, + B338084F2877B50A0009C732 /* screenlayout.h */, + B33806AA2877B5080009C732 /* shaders.h */, + B33806A52877B5080009C732 /* utils.h */, + B33808512877B50A0009C732 /* link.T */, + B33806AF2877B5080009C732 /* libretro-common */, + ); + path = libretro; + sourceTree = ""; + }; + B33806AF2877B5080009C732 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B338082C2877B5090009C732 /* .gitignore */, + B33807EF2877B5090009C732 /* audio */, + B33806B82877B5090009C732 /* cdrom */, + B33806BA2877B5090009C732 /* compat */, + B33808352877B5090009C732 /* crt */, + B33806C62877B5090009C732 /* dynamic */, + B33806B02877B5080009C732 /* encodings */, + B33807C52877B5090009C732 /* features */, + B33807012877B5090009C732 /* file */, + B33806D02877B5090009C732 /* formats */, + B33808392877B5090009C732 /* gfx */, + B33807ED2877B5090009C732 /* glsm */, + B33806F32877B5090009C732 /* glsym */, + B33807102877B5090009C732 /* hash */, + B338071C2877B5090009C732 /* include */, + B33808402877B5090009C732 /* libco */, + B33806FC2877B5090009C732 /* lists */, + B338084D2877B50A0009C732 /* media */, + B33807CD2877B5090009C732 /* memmap */, + B33806C82877B5090009C732 /* net */, + B33806C42877B5090009C732 /* playlists */, + B338082F2877B5090009C732 /* queues */, + B33808242877B5090009C732 /* rthreads */, + B33807D02877B5090009C732 /* samples */, + B33807122877B5090009C732 /* streams */, + B33808332877B5090009C732 /* string */, + B33807C72877B5090009C732 /* utils */, + B33806B42877B5090009C732 /* vfs */, + B338082D2877B5090009C732 /* vulkan */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B33806B02877B5080009C732 /* encodings */ = { + isa = PBXGroup; + children = ( + B33806B12877B5080009C732 /* encoding_base64.c */, + B33806B22877B5080009C732 /* encoding_crc32.c */, + B33806B32877B5090009C732 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B33806B42877B5090009C732 /* vfs */ = { + isa = PBXGroup; + children = ( + B33806B52877B5090009C732 /* vfs_implementation.c */, + B33806B62877B5090009C732 /* vfs_implementation_cdrom.c */, + B33806B72877B5090009C732 /* vfs_implementation_uwp.cpp */, + ); + path = vfs; + sourceTree = ""; + }; + B33806B82877B5090009C732 /* cdrom */ = { + isa = PBXGroup; + children = ( + B33806B92877B5090009C732 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B33806BA2877B5090009C732 /* compat */ = { + isa = PBXGroup; + children = ( + B33806BB2877B5090009C732 /* compat_ifaddrs.c */, + B33806BC2877B5090009C732 /* compat_strl.c */, + B33806BD2877B5090009C732 /* compat_posix_string.c */, + B33806BE2877B5090009C732 /* compat_strcasestr.c */, + B33806BF2877B5090009C732 /* compat_snprintf.c */, + B33806C02877B5090009C732 /* compat_getopt.c */, + B33806C12877B5090009C732 /* compat_fnmatch.c */, + B33806C22877B5090009C732 /* fopen_utf8.c */, + B33806C32877B5090009C732 /* compat_vscprintf.c */, + ); + path = compat; + sourceTree = ""; + }; + B33806C42877B5090009C732 /* playlists */ = { + isa = PBXGroup; + children = ( + B33806C52877B5090009C732 /* label_sanitization.c */, + ); + path = playlists; + sourceTree = ""; + }; + B33806C62877B5090009C732 /* dynamic */ = { + isa = PBXGroup; + children = ( + B33806C72877B5090009C732 /* dylib.c */, + ); + path = dynamic; + sourceTree = ""; + }; + B33806C82877B5090009C732 /* net */ = { + isa = PBXGroup; + children = ( + B33806C92877B5090009C732 /* net_natt.c */, + B33806CA2877B5090009C732 /* net_socket_ssl.c */, + B33806CB2877B5090009C732 /* net_http.c */, + B33806CC2877B5090009C732 /* net_http_parse.c */, + B33806CD2877B5090009C732 /* net_ifinfo.c */, + B33806CE2877B5090009C732 /* net_compat.c */, + B33806CF2877B5090009C732 /* net_socket.c */, + ); + path = net; + sourceTree = ""; + }; + B33806D02877B5090009C732 /* formats */ = { + isa = PBXGroup; + children = ( + B33806D12877B5090009C732 /* wav */, + B33806D32877B5090009C732 /* libchdr */, + B33806DC2877B5090009C732 /* image_texture.c */, + B33806DD2877B5090009C732 /* tga */, + B33806DF2877B5090009C732 /* png */, + B33806E32877B5090009C732 /* xml */, + B33806E82877B5090009C732 /* json */, + B33806EB2877B5090009C732 /* cdfs */, + B33806ED2877B5090009C732 /* jpeg */, + B33806EF2877B5090009C732 /* bmp */, + B33806F22877B5090009C732 /* image_transfer.c */, + ); + path = formats; + sourceTree = ""; + }; + B33806D12877B5090009C732 /* wav */ = { + isa = PBXGroup; + children = ( + B33806D22877B5090009C732 /* rwav.c */, + ); + path = wav; + sourceTree = ""; + }; + B33806D32877B5090009C732 /* libchdr */ = { + isa = PBXGroup; + children = ( + B33806D42877B5090009C732 /* libchdr_chd.c */, + B33806D52877B5090009C732 /* libchdr_zlib.c */, + B33806D62877B5090009C732 /* libchdr_bitstream.c */, + B33806D72877B5090009C732 /* libchdr_huffman.c */, + B33806D82877B5090009C732 /* libchdr_flac.c */, + B33806D92877B5090009C732 /* libchdr_flac_codec.c */, + B33806DA2877B5090009C732 /* libchdr_cdrom.c */, + B33806DB2877B5090009C732 /* libchdr_lzma.c */, + ); + path = libchdr; + sourceTree = ""; + }; + B33806DD2877B5090009C732 /* tga */ = { + isa = PBXGroup; + children = ( + B33806DE2877B5090009C732 /* rtga.c */, + ); + path = tga; + sourceTree = ""; + }; + B33806DF2877B5090009C732 /* png */ = { + isa = PBXGroup; + children = ( + B33806E02877B5090009C732 /* rpng.c */, + B33806E12877B5090009C732 /* rpng_internal.h */, + B33806E22877B5090009C732 /* rpng_encode.c */, + ); + path = png; + sourceTree = ""; + }; + B33806E32877B5090009C732 /* xml */ = { + isa = PBXGroup; + children = ( + B33806E42877B5090009C732 /* test */, + B33806E72877B5090009C732 /* rxml.c */, + ); + path = xml; + sourceTree = ""; + }; + B33806E42877B5090009C732 /* test */ = { + isa = PBXGroup; + children = ( + B33806E52877B5090009C732 /* Makefile */, + B33806E62877B5090009C732 /* rxml_test.c */, + ); + path = test; + sourceTree = ""; + }; + B33806E82877B5090009C732 /* json */ = { + isa = PBXGroup; + children = ( + B33806E92877B5090009C732 /* jsonsax_full.c */, + B33806EA2877B5090009C732 /* jsonsax.c */, + ); + path = json; + sourceTree = ""; + }; + B33806EB2877B5090009C732 /* cdfs */ = { + isa = PBXGroup; + children = ( + B33806EC2877B5090009C732 /* cdfs.c */, + ); + path = cdfs; + sourceTree = ""; + }; + B33806ED2877B5090009C732 /* jpeg */ = { + isa = PBXGroup; + children = ( + B33806EE2877B5090009C732 /* rjpeg.c */, + ); + path = jpeg; + sourceTree = ""; + }; + B33806EF2877B5090009C732 /* bmp */ = { + isa = PBXGroup; + children = ( + B33806F02877B5090009C732 /* rbmp_encode.c */, + B33806F12877B5090009C732 /* rbmp.c */, + ); + path = bmp; + sourceTree = ""; + }; + B33806F32877B5090009C732 /* glsym */ = { + isa = PBXGroup; + children = ( + B33806F42877B5090009C732 /* glsym_es3.c */, + B33806F52877B5090009C732 /* glsym_gl.c */, + B33806F62877B5090009C732 /* README.md */, + B33806F72877B5090009C732 /* glsym_es2.c */, + B33806F82877B5090009C732 /* rglgen.c */, + B33806F92877B5090009C732 /* glgen.py */, + B33806FA2877B5090009C732 /* xglgen.py */, + B33806FB2877B5090009C732 /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B33806FC2877B5090009C732 /* lists */ = { + isa = PBXGroup; + children = ( + B33806FD2877B5090009C732 /* dir_list.c */, + B33806FE2877B5090009C732 /* vector_list.c */, + B33806FF2877B5090009C732 /* string_list.c */, + B33807002877B5090009C732 /* file_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B33807012877B5090009C732 /* file */ = { + isa = PBXGroup; + children = ( + B33807022877B5090009C732 /* file_path.c */, + B33807032877B5090009C732 /* config_file_userdata.c */, + B33807042877B5090009C732 /* nbio */, + B338070B2877B5090009C732 /* archive_file_7z.c */, + B338070C2877B5090009C732 /* archive_file_zlib.c */, + B338070D2877B5090009C732 /* config_file.c */, + B338070E2877B5090009C732 /* retro_dirent.c */, + B338070F2877B5090009C732 /* archive_file.c */, + ); + path = file; + sourceTree = ""; + }; + B33807042877B5090009C732 /* nbio */ = { + isa = PBXGroup; + children = ( + B33807052877B5090009C732 /* nbio_unixmmap.c */, + B33807062877B5090009C732 /* nbio_linux.c */, + B33807072877B5090009C732 /* nbio_orbis.c */, + B33807082877B5090009C732 /* nbio_windowsmmap.c */, + B33807092877B5090009C732 /* nbio_intf.c */, + B338070A2877B5090009C732 /* nbio_stdio.c */, + ); + path = nbio; + sourceTree = ""; + }; + B33807102877B5090009C732 /* hash */ = { + isa = PBXGroup; + children = ( + B33807112877B5090009C732 /* rhash.c */, + ); + path = hash; + sourceTree = ""; + }; + B33807122877B5090009C732 /* streams */ = { + isa = PBXGroup; + children = ( + B33807132877B5090009C732 /* stdin_stream.c */, + B33807142877B5090009C732 /* file_stream_transforms.c */, + B33807152877B5090009C732 /* trans_stream_zlib.c */, + B33807162877B5090009C732 /* interface_stream.c */, + B33807172877B5090009C732 /* trans_stream_pipe.c */, + B33807182877B5090009C732 /* memory_stream.c */, + B33807192877B5090009C732 /* chd_stream.c */, + B338071A2877B5090009C732 /* trans_stream.c */, + B338071B2877B5090009C732 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B338071C2877B5090009C732 /* include */ = { + isa = PBXGroup; + children = ( + B338071D2877B5090009C732 /* encodings */, + B33807222877B5090009C732 /* memalign.h */, + B33807232877B5090009C732 /* libretro_dspfilter.h */, + B33807242877B5090009C732 /* vfs */, + B33807282877B5090009C732 /* cdrom */, + B338072A2877B5090009C732 /* libco.h */, + B338072B2877B5090009C732 /* compat */, + B33807412877B5090009C732 /* retro_common_api.h */, + B33807422877B5090009C732 /* playlists */, + B33807442877B5090009C732 /* dynamic */, + B33807462877B5090009C732 /* net */, + B338074E2877B5090009C732 /* retro_timers.h */, + B338074F2877B5090009C732 /* formats */, + B338075A2877B5090009C732 /* glsym */, + B33807652877B5090009C732 /* lists */, + B33807692877B5090009C732 /* file */, + B338076F2877B5090009C732 /* retro_environment.h */, + B33807702877B5090009C732 /* array */, + B33807722877B5090009C732 /* retro_dirent.h */, + B33807732877B5090009C732 /* retro_inline.h */, + B33807742877B5090009C732 /* retro_math.h */, + B33807752877B5090009C732 /* streams */, + B338077D2877B5090009C732 /* fastcpy.h */, + B338077E2877B5090009C732 /* libchdr */, + B33807882877B5090009C732 /* features */, + B338078A2877B5090009C732 /* utils */, + B338078C2877B5090009C732 /* retro_miscellaneous.h */, + B338078D2877B5090009C732 /* clamping.h */, + B338078E2877B5090009C732 /* math */, + B33807922877B5090009C732 /* boolean.h */, + B33807932877B5090009C732 /* libretro_gskit_ps2.h */, + B33807942877B5090009C732 /* glsm */, + B33807972877B5090009C732 /* audio */, + B338079F2877B5090009C732 /* memmap.h */, + B33807A02877B5090009C732 /* rhash.h */, + B33807A12877B5090009C732 /* rthreads */, + B33807A52877B5090009C732 /* libretro.h */, + B33807A62877B5090009C732 /* vulkan */, + B33807A82877B5090009C732 /* retro_stat.h */, + B33807A92877B5090009C732 /* retro_common.h */, + B33807AA2877B5090009C732 /* queues */, + B33807AE2877B5090009C732 /* retro_assert.h */, + B33807AF2877B5090009C732 /* string */, + B33807B12877B5090009C732 /* libretro_d3d.h */, + B33807B22877B5090009C732 /* libretro_vulkan.h */, + B33807B32877B5090009C732 /* gfx */, + B33807C12877B5090009C732 /* retro_endianness.h */, + B33807C22877B5090009C732 /* filters.h */, + B33807C32877B5090009C732 /* media */, + ); + path = include; + sourceTree = ""; + }; + B338071D2877B5090009C732 /* encodings */ = { + isa = PBXGroup; + children = ( + B338071E2877B5090009C732 /* base64.h */, + B338071F2877B5090009C732 /* utf.h */, + B33807202877B5090009C732 /* win32.h */, + B33807212877B5090009C732 /* crc32.h */, + ); + path = encodings; + sourceTree = ""; + }; + B33807242877B5090009C732 /* vfs */ = { + isa = PBXGroup; + children = ( + B33807252877B5090009C732 /* vfs.h */, + B33807262877B5090009C732 /* vfs_implementation.h */, + B33807272877B5090009C732 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B33807282877B5090009C732 /* cdrom */ = { + isa = PBXGroup; + children = ( + B33807292877B5090009C732 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B338072B2877B5090009C732 /* compat */ = { + isa = PBXGroup; + children = ( + B338072C2877B5090009C732 /* apple_compat.h */, + B338072D2877B5090009C732 /* zutil.h */, + B338072E2877B5090009C732 /* strl.h */, + B338072F2877B5090009C732 /* strcasestr.h */, + B33807302877B5090009C732 /* msvc */, + B33807322877B5090009C732 /* fopen_utf8.h */, + B33807332877B5090009C732 /* zconf.h.in */, + B33807342877B5090009C732 /* intrinsics.h */, + B33807352877B5090009C732 /* posix_string.h */, + B33807362877B5090009C732 /* zlib */, + B338073B2877B5090009C732 /* getopt.h */, + B338073C2877B5090009C732 /* fnmatch.h */, + B338073D2877B5090009C732 /* msvc.h */, + B338073E2877B5090009C732 /* zlib.h */, + B338073F2877B5090009C732 /* ifaddrs.h */, + B33807402877B5090009C732 /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B33807302877B5090009C732 /* msvc */ = { + isa = PBXGroup; + children = ( + B33807312877B5090009C732 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B33807362877B5090009C732 /* zlib */ = { + isa = PBXGroup; + children = ( + B33807372877B5090009C732 /* zutil.h */, + B33807382877B5090009C732 /* zconf.h.in */, + B33807392877B5090009C732 /* zlib.h */, + B338073A2877B5090009C732 /* zconf.h */, + ); + path = zlib; + sourceTree = ""; + }; + B33807422877B5090009C732 /* playlists */ = { + isa = PBXGroup; + children = ( + B33807432877B5090009C732 /* label_sanitization.h */, + ); + path = playlists; + sourceTree = ""; + }; + B33807442877B5090009C732 /* dynamic */ = { + isa = PBXGroup; + children = ( + B33807452877B5090009C732 /* dylib.h */, + ); + path = dynamic; + sourceTree = ""; + }; + B33807462877B5090009C732 /* net */ = { + isa = PBXGroup; + children = ( + B33807472877B5090009C732 /* net_ifinfo.h */, + B33807482877B5090009C732 /* net_compat.h */, + B33807492877B5090009C732 /* net_socket.h */, + B338074A2877B5090009C732 /* net_natt.h */, + B338074B2877B5090009C732 /* net_socket_ssl.h */, + B338074C2877B5090009C732 /* net_http.h */, + B338074D2877B5090009C732 /* net_http_parse.h */, + ); + path = net; + sourceTree = ""; + }; + B338074F2877B5090009C732 /* formats */ = { + isa = PBXGroup; + children = ( + B33807502877B5090009C732 /* jsonsax.h */, + B33807512877B5090009C732 /* rxml.h */, + B33807522877B5090009C732 /* cdfs.h */, + B33807532877B5090009C732 /* rpng.h */, + B33807542877B5090009C732 /* rtga.h */, + B33807552877B5090009C732 /* image.h */, + B33807562877B5090009C732 /* rbmp.h */, + B33807572877B5090009C732 /* rwav.h */, + B33807582877B5090009C732 /* jsonsax_full.h */, + B33807592877B5090009C732 /* rjpeg.h */, + ); + path = formats; + sourceTree = ""; + }; + B338075A2877B5090009C732 /* glsym */ = { + isa = PBXGroup; + children = ( + B338075B2877B5090009C732 /* rglgen.h */, + B338075C2877B5090009C732 /* glsym_es2.h */, + B338075D2877B5090009C732 /* glsym.h */, + B338075E2877B5090009C732 /* rglgen_headers.h */, + B338075F2877B5090009C732 /* switch */, + B33807622877B5090009C732 /* rglgen_private_headers.h */, + B33807632877B5090009C732 /* glsym_es3.h */, + B33807642877B5090009C732 /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B338075F2877B5090009C732 /* switch */ = { + isa = PBXGroup; + children = ( + B33807602877B5090009C732 /* nx_gl.h */, + B33807612877B5090009C732 /* nx_glsym.h */, + ); + path = switch; + sourceTree = ""; + }; + B33807652877B5090009C732 /* lists */ = { + isa = PBXGroup; + children = ( + B33807662877B5090009C732 /* string_list.h */, + B33807672877B5090009C732 /* file_list.h */, + B33807682877B5090009C732 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B33807692877B5090009C732 /* file */ = { + isa = PBXGroup; + children = ( + B338076A2877B5090009C732 /* nbio.h */, + B338076B2877B5090009C732 /* config_file.h */, + B338076C2877B5090009C732 /* archive_file.h */, + B338076D2877B5090009C732 /* config_file_userdata.h */, + B338076E2877B5090009C732 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B33807702877B5090009C732 /* array */ = { + isa = PBXGroup; + children = ( + B33807712877B5090009C732 /* dynarray.h */, + ); + path = array; + sourceTree = ""; + }; + B33807752877B5090009C732 /* streams */ = { + isa = PBXGroup; + children = ( + B33807762877B5090009C732 /* memory_stream.h */, + B33807772877B5090009C732 /* chd_stream.h */, + B33807782877B5090009C732 /* trans_stream.h */, + B33807792877B5090009C732 /* file_stream.h */, + B338077A2877B5090009C732 /* stdin_stream.h */, + B338077B2877B5090009C732 /* file_stream_transforms.h */, + B338077C2877B5090009C732 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B338077E2877B5090009C732 /* libchdr */ = { + isa = PBXGroup; + children = ( + B338077F2877B5090009C732 /* lzma.h */, + B33807802877B5090009C732 /* minmax.h */, + B33807812877B5090009C732 /* flac.h */, + B33807822877B5090009C732 /* bitstream.h */, + B33807832877B5090009C732 /* cdrom.h */, + B33807842877B5090009C732 /* chd.h */, + B33807852877B5090009C732 /* libchdr_zlib.h */, + B33807862877B5090009C732 /* huffman.h */, + B33807872877B5090009C732 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B33807882877B5090009C732 /* features */ = { + isa = PBXGroup; + children = ( + B33807892877B5090009C732 /* features_cpu.h */, + ); + path = features; + sourceTree = ""; + }; + B338078A2877B5090009C732 /* utils */ = { + isa = PBXGroup; + children = ( + B338078B2877B5090009C732 /* md5.h */, + ); + path = utils; + sourceTree = ""; + }; + B338078E2877B5090009C732 /* math */ = { + isa = PBXGroup; + children = ( + B338078F2877B5090009C732 /* float_minmax.h */, + B33807902877B5090009C732 /* fxp.h */, + B33807912877B5090009C732 /* complex.h */, + ); + path = math; + sourceTree = ""; + }; + B33807942877B5090009C732 /* glsm */ = { + isa = PBXGroup; + children = ( + B33807952877B5090009C732 /* glsm.h */, + B33807962877B5090009C732 /* glsmsym.h */, + ); + path = glsm; + sourceTree = ""; + }; + B33807972877B5090009C732 /* audio */ = { + isa = PBXGroup; + children = ( + B33807982877B5090009C732 /* dsp_filter.h */, + B33807992877B5090009C732 /* audio_resampler.h */, + B338079A2877B5090009C732 /* audio_mixer.h */, + B338079B2877B5090009C732 /* conversion */, + B338079E2877B5090009C732 /* audio_mix.h */, + ); + path = audio; + sourceTree = ""; + }; + B338079B2877B5090009C732 /* conversion */ = { + isa = PBXGroup; + children = ( + B338079C2877B5090009C732 /* s16_to_float.h */, + B338079D2877B5090009C732 /* float_to_s16.h */, + ); + path = conversion; + sourceTree = ""; + }; + B33807A12877B5090009C732 /* rthreads */ = { + isa = PBXGroup; + children = ( + B33807A22877B5090009C732 /* rsemaphore.h */, + B33807A32877B5090009C732 /* rthreads.h */, + B33807A42877B5090009C732 /* async_job.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B33807A62877B5090009C732 /* vulkan */ = { + isa = PBXGroup; + children = ( + B33807A72877B5090009C732 /* vulkan_symbol_wrapper.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B33807AA2877B5090009C732 /* queues */ = { + isa = PBXGroup; + children = ( + B33807AB2877B5090009C732 /* task_queue.h */, + B33807AC2877B5090009C732 /* fifo_queue.h */, + B33807AD2877B5090009C732 /* message_queue.h */, + ); + path = queues; + sourceTree = ""; + }; + B33807AF2877B5090009C732 /* string */ = { + isa = PBXGroup; + children = ( + B33807B02877B5090009C732 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B33807B32877B5090009C732 /* gfx */ = { + isa = PBXGroup; + children = ( + B33807B42877B5090009C732 /* video_frame.h */, + B33807B52877B5090009C732 /* math */, + B33807BB2877B5090009C732 /* scaler */, + B33807C02877B5090009C732 /* gl_capabilities.h */, + ); + path = gfx; + sourceTree = ""; + }; + B33807B52877B5090009C732 /* math */ = { + isa = PBXGroup; + children = ( + B33807B62877B5090009C732 /* vector_4.h */, + B33807B72877B5090009C732 /* vector_3.h */, + B33807B82877B5090009C732 /* vector_2.h */, + B33807B92877B5090009C732 /* matrix_3x3.h */, + B33807BA2877B5090009C732 /* matrix_4x4.h */, + ); + path = math; + sourceTree = ""; + }; + B33807BB2877B5090009C732 /* scaler */ = { + isa = PBXGroup; + children = ( + B33807BC2877B5090009C732 /* scaler.h */, + B33807BD2877B5090009C732 /* pixconv.h */, + B33807BE2877B5090009C732 /* scaler_int.h */, + B33807BF2877B5090009C732 /* filter.h */, + ); + path = scaler; + sourceTree = ""; + }; + B33807C32877B5090009C732 /* media */ = { + isa = PBXGroup; + children = ( + B33807C42877B5090009C732 /* media_detect_cd.h */, + ); + path = media; + sourceTree = ""; + }; + B33807C52877B5090009C732 /* features */ = { + isa = PBXGroup; + children = ( + B33807C62877B5090009C732 /* features_cpu.c */, + ); + path = features; + sourceTree = ""; + }; + B33807C72877B5090009C732 /* utils */ = { + isa = PBXGroup; + children = ( + B33807C82877B5090009C732 /* djb2.c */, + B33807C92877B5090009C732 /* sha1.c */, + B33807CA2877B5090009C732 /* crc32.c */, + B33807CB2877B5090009C732 /* md5.c */, + B33807CC2877B5090009C732 /* sha1_main.c */, + ); + path = utils; + sourceTree = ""; + }; + B33807CD2877B5090009C732 /* memmap */ = { + isa = PBXGroup; + children = ( + B33807CE2877B5090009C732 /* memmap.c */, + B33807CF2877B5090009C732 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B33807D02877B5090009C732 /* samples */ = { + isa = PBXGroup; + children = ( + B33807D12877B5090009C732 /* core_options */, + B33807DC2877B5090009C732 /* net */, + B33807E32877B5090009C732 /* formats */, + B33807E72877B5090009C732 /* file */, + B33807EB2877B5090009C732 /* utils */, + ); + path = samples; + sourceTree = ""; + }; + B33807D12877B5090009C732 /* core_options */ = { + isa = PBXGroup; + children = ( + B33807D22877B5090009C732 /* example_default */, + B33807D52877B5090009C732 /* README.md */, + B33807D62877B5090009C732 /* example_hide_option */, + B33807D92877B5090009C732 /* example_translation */, + ); + path = core_options; + sourceTree = ""; + }; + B33807D22877B5090009C732 /* example_default */ = { + isa = PBXGroup; + children = ( + B33807D32877B5090009C732 /* libretro_core_options.h */, + B33807D42877B5090009C732 /* libretro_core_options_intl.h */, + ); + path = example_default; + sourceTree = ""; + }; + B33807D62877B5090009C732 /* example_hide_option */ = { + isa = PBXGroup; + children = ( + B33807D72877B5090009C732 /* libretro_core_options.h */, + B33807D82877B5090009C732 /* libretro_core_options_intl.h */, + ); + path = example_hide_option; + sourceTree = ""; + }; + B33807D92877B5090009C732 /* example_translation */ = { + isa = PBXGroup; + children = ( + B33807DA2877B5090009C732 /* libretro_core_options.h */, + B33807DB2877B5090009C732 /* libretro_core_options_intl.h */, + ); + path = example_translation; + sourceTree = ""; + }; + B33807DC2877B5090009C732 /* net */ = { + isa = PBXGroup; + children = ( + B33807DD2877B5090009C732 /* net_ifinfo_test.c */, + B33807DE2877B5090009C732 /* udp-test.c */, + B33807DF2877B5090009C732 /* Makefile */, + B33807E02877B5090009C732 /* net_ifinfo */, + B33807E12877B5090009C732 /* http_test */, + B33807E22877B5090009C732 /* net_http_test.c */, + ); + path = net; + sourceTree = ""; + }; + B33807E32877B5090009C732 /* formats */ = { + isa = PBXGroup; + children = ( + B33807E42877B5090009C732 /* png */, + ); + path = formats; + sourceTree = ""; + }; + B33807E42877B5090009C732 /* png */ = { + isa = PBXGroup; + children = ( + B33807E52877B5090009C732 /* Makefile */, + B33807E62877B5090009C732 /* rpng_test.c */, + ); + path = png; + sourceTree = ""; + }; + B33807E72877B5090009C732 /* file */ = { + isa = PBXGroup; + children = ( + B33807E82877B5090009C732 /* nbio */, + ); + path = file; + sourceTree = ""; + }; + B33807E82877B5090009C732 /* nbio */ = { + isa = PBXGroup; + children = ( + B33807E92877B5090009C732 /* Makefile */, + B33807EA2877B5090009C732 /* nbio_test.c */, + ); + path = nbio; + sourceTree = ""; + }; + B33807EB2877B5090009C732 /* utils */ = { + isa = PBXGroup; + children = ( + B33807EC2877B5090009C732 /* Makefile */, + ); + path = utils; + sourceTree = ""; + }; + B33807ED2877B5090009C732 /* glsm */ = { + isa = PBXGroup; + children = ( + B33807EE2877B5090009C732 /* glsm.c */, + ); + path = glsm; + sourceTree = ""; + }; + B33807EF2877B5090009C732 /* audio */ = { + isa = PBXGroup; + children = ( + B33807F02877B5090009C732 /* dsp_filters */, + B33808132877B5090009C732 /* audio_mix.c */, + B33808142877B5090009C732 /* resampler */, + B338081B2877B5090009C732 /* dsp_filter.c */, + B338081C2877B5090009C732 /* conversion */, + B33808232877B5090009C732 /* audio_mixer.c */, + ); + path = audio; + sourceTree = ""; + }; + B33807F02877B5090009C732 /* dsp_filters */ = { + isa = PBXGroup; + children = ( + B33807F12877B5090009C732 /* eq.c */, + B33807F22877B5090009C732 /* EQ.dsp */, + B33807F32877B5090009C732 /* Vibrato.dsp */, + B33807F42877B5090009C732 /* ChipTuneEnhance.dsp */, + B33807F52877B5090009C732 /* phaser.c */, + B33807F62877B5090009C732 /* Crystalizer.dsp */, + B33807F72877B5090009C732 /* Mono.dsp */, + B33807F82877B5090009C732 /* configure */, + B33807F92877B5090009C732 /* Makefile */, + B33807FA2877B5090009C732 /* chorus.c */, + B33807FB2877B5090009C732 /* Phaser.dsp */, + B33807FC2877B5090009C732 /* wahwah.c */, + B33807FD2877B5090009C732 /* IIR.dsp */, + B33807FE2877B5090009C732 /* HighShelfDampen.dsp */, + B33807FF2877B5090009C732 /* EchoReverb.dsp */, + B33808002877B5090009C732 /* iir.c */, + B33808012877B5090009C732 /* reverb.c */, + B33808022877B5090009C732 /* crystalizer.c */, + B33808032877B5090009C732 /* WahWah.dsp */, + B33808042877B5090009C732 /* fft */, + B33808072877B5090009C732 /* link.T */, + B33808082877B5090009C732 /* BassBoost.dsp */, + B33808092877B5090009C732 /* vibrato.c */, + B338080A2877B5090009C732 /* Echo.dsp */, + B338080B2877B5090009C732 /* LowPassCPS.dsp */, + B338080C2877B5090009C732 /* Panning.dsp */, + B338080D2877B5090009C732 /* tremolo.c */, + B338080E2877B5090009C732 /* panning.c */, + B338080F2877B5090009C732 /* Chorus.dsp */, + B33808102877B5090009C732 /* Tremolo.dsp */, + B33808112877B5090009C732 /* Reverb.dsp */, + B33808122877B5090009C732 /* echo.c */, + ); + path = dsp_filters; + sourceTree = ""; + }; + B33808042877B5090009C732 /* fft */ = { + isa = PBXGroup; + children = ( + B33808052877B5090009C732 /* fft.h */, + B33808062877B5090009C732 /* fft.c */, + ); + path = fft; + sourceTree = ""; + }; + B33808142877B5090009C732 /* resampler */ = { + isa = PBXGroup; + children = ( + B33808152877B5090009C732 /* drivers */, + B338081A2877B5090009C732 /* audio_resampler.c */, + ); + path = resampler; + sourceTree = ""; + }; + B33808152877B5090009C732 /* drivers */ = { + isa = PBXGroup; + children = ( + B33808162877B5090009C732 /* sinc_resampler.c */, + B33808172877B5090009C732 /* null_resampler.c */, + B33808182877B5090009C732 /* nearest_resampler.c */, + B33808192877B5090009C732 /* sinc_resampler_neon.S */, + ); + path = drivers; + sourceTree = ""; + }; + B338081C2877B5090009C732 /* conversion */ = { + isa = PBXGroup; + children = ( + B338081D2877B5090009C732 /* s16_to_float.c */, + B338081E2877B5090009C732 /* float_to_s16_neon.c */, + B338081F2877B5090009C732 /* s16_to_float_neon.c */, + B33808202877B5090009C732 /* float_to_s16.c */, + B33808212877B5090009C732 /* float_to_s16_neon.S */, + B33808222877B5090009C732 /* s16_to_float_neon.S */, + ); + path = conversion; + sourceTree = ""; + }; + B33808242877B5090009C732 /* rthreads */ = { + isa = PBXGroup; + children = ( + B33808252877B5090009C732 /* wiiu_pthread.h */, + B33808262877B5090009C732 /* rthreads.c */, + B33808272877B5090009C732 /* gx_pthread.h */, + B33808282877B5090009C732 /* psp_pthread.h */, + B33808292877B5090009C732 /* xenon_sdl_threads.c */, + B338082A2877B5090009C732 /* ctr_pthread.h */, + B338082B2877B5090009C732 /* rsemaphore.c */, + ); + path = rthreads; + sourceTree = ""; + }; + B338082D2877B5090009C732 /* vulkan */ = { + isa = PBXGroup; + children = ( + B338082E2877B5090009C732 /* vulkan_symbol_wrapper.c */, + ); + path = vulkan; + sourceTree = ""; + }; + B338082F2877B5090009C732 /* queues */ = { + isa = PBXGroup; + children = ( + B33808302877B5090009C732 /* fifo_queue.c */, + B33808312877B5090009C732 /* message_queue.c */, + B33808322877B5090009C732 /* task_queue.c */, + ); + path = queues; + sourceTree = ""; + }; + B33808332877B5090009C732 /* string */ = { + isa = PBXGroup; + children = ( + B33808342877B5090009C732 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B33808352877B5090009C732 /* crt */ = { + isa = PBXGroup; + children = ( + B33808362877B5090009C732 /* include */, + B33808382877B5090009C732 /* string.c */, + ); + path = crt; + sourceTree = ""; + }; + B33808362877B5090009C732 /* include */ = { + isa = PBXGroup; + children = ( + B33808372877B5090009C732 /* string.h */, + ); + path = include; + sourceTree = ""; + }; + B33808392877B5090009C732 /* gfx */ = { + isa = PBXGroup; + children = ( + B338083A2877B5090009C732 /* gl_capabilities.c */, + B338083B2877B5090009C732 /* scaler */, + ); + path = gfx; + sourceTree = ""; + }; + B338083B2877B5090009C732 /* scaler */ = { + isa = PBXGroup; + children = ( + B338083C2877B5090009C732 /* scaler_int.c */, + B338083D2877B5090009C732 /* pixconv.c */, + B338083E2877B5090009C732 /* scaler_filter.c */, + B338083F2877B5090009C732 /* scaler.c */, + ); + path = scaler; + sourceTree = ""; + }; + B33808402877B5090009C732 /* libco */ = { + isa = PBXGroup; + children = ( + B33808412877B5090009C732 /* sjlj.c */, + B33808422877B50A0009C732 /* ppc.c */, + B33808432877B50A0009C732 /* ucontext.c */, + B33808442877B50A0009C732 /* fiber.c */, + B33808452877B50A0009C732 /* aarch64.c */, + B33808462877B50A0009C732 /* libco.c */, + B33808472877B50A0009C732 /* scefiber.c */, + B33808482877B50A0009C732 /* genode.cpp */, + B33808492877B50A0009C732 /* armeabi.c */, + B338084A2877B50A0009C732 /* amd64.c */, + B338084B2877B50A0009C732 /* psp2.c */, + B338084C2877B50A0009C732 /* x86.c */, + ); + path = libco; + sourceTree = ""; + }; + B338084D2877B50A0009C732 /* media */ = { + isa = PBXGroup; + children = ( + B338084E2877B50A0009C732 /* media_detect_cd.c */, + ); + path = media; + sourceTree = ""; + }; + B33808592877B50A0009C732 /* sha1 */ = { + isa = PBXGroup; + children = ( + B338085A2877B50A0009C732 /* sha1.c */, + B338085B2877B50A0009C732 /* sha1.hpp */, + B338085C2877B50A0009C732 /* sha1.h */, + ); + path = sha1; + sourceTree = ""; + }; + B33808602877B50A0009C732 /* ARMJIT_A64 */ = { + isa = PBXGroup; + children = ( + B33808632877B50A0009C732 /* ARMJIT_ALU.cpp */, + B33808662877B50A0009C732 /* ARMJIT_Branch.cpp */, + B33808612877B50A0009C732 /* ARMJIT_Compiler.cpp */, + B33808642877B50A0009C732 /* ARMJIT_LoadStore.cpp */, + B33808622877B50A0009C732 /* ARMJIT_Compiler.h */, + B33808652877B50A0009C732 /* ARMJIT_Linkage.S */, + ); + path = ARMJIT_A64; + sourceTree = ""; + }; + B338086A2877B50A0009C732 /* switch */ = { + isa = PBXGroup; + children = ( + B338086B2877B50A0009C732 /* compat_switch.h */, + ); + path = switch; + sourceTree = ""; + }; + B338086E2877B50A0009C732 /* xxhash */ = { + isa = PBXGroup; + children = ( + B338086F2877B50A0009C732 /* xxhash.h */, + B33808702877B50A0009C732 /* xxhash.c */, + B33808712877B50A0009C732 /* xxh3.h */, + ); + path = xxhash; + sourceTree = ""; + }; + B33808802877B50A0009C732 /* tiny-AES-c */ = { + isa = PBXGroup; + children = ( + B33808812877B50A0009C732 /* aes.c */, + B33808822877B50A0009C732 /* aes.hpp */, + B33808832877B50A0009C732 /* unlicense.txt */, + B33808842877B50A0009C732 /* README.md */, + B33808852877B50A0009C732 /* aes.h */, + ); + path = "tiny-AES-c"; + sourceTree = ""; + }; + B3447EA8218BC51300557ACE /* Audio */ = { + isa = PBXGroup; + children = ( + B3447EA2218BBFB700557ACE /* PVMelonDS+AudioTypes.h */, + B3447E9A218B826F00557ACE /* PVMelonDS+Audio.h */, + B3447E9B218B826F00557ACE /* PVMelonDS+Audio.mm */, + B3447EA6218BC3A600557ACE /* PVMelonDS+CoreAudio.h */, + B3447EA4218BC36B00557ACE /* PVMelonDS+CoreAudio.mm */, + ); + path = Audio; + sourceTree = ""; + }; + B3447EB5218BCE2000557ACE /* Core */ = { + isa = PBXGroup; + children = ( + B3C76223207833DE009950E4 /* PVMelonDSCore.h */, + B3C76224207833DE009950E4 /* PVMelonDSCore.mm */, + B3447EB1218BC69700557ACE /* PVMelonDSCore+Audio.h */, + B3447EB2218BC69700557ACE /* PVMelonDSCore+Audio.m */, + B3447EAD218BC5C500557ACE /* PVMelonDSCore+Video.h */, + B3447EAE218BC5C500557ACE /* PVMelonDSCore+Video.m */, + B3447EA9218BC59D00557ACE /* PVMelonDSCore+Saves.h */, + B3447EAA218BC59D00557ACE /* PVMelonDSCore+Saves.m */, + B3447E96218B809200557ACE /* PVMelonDSCore+Controls.h */, + B3447E97218B809300557ACE /* PVMelonDSCore+Controls.mm */, + ); + path = Core; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B33805632877B5080009C732 /* melonDS */, + B3C762202078327B009950E4 /* PVMelonDSCore */, + B3C7621220783162009950E4 /* PVMelonDS */, + B3C7621120783162009950E4 /* Products */, + B3C7621B20783242009950E4 /* Frameworks */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVMelonDS.framework */, + B30178D3207C901D0051B93D /* libMelonDS.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621220783162009950E4 /* PVMelonDS */ = { + isa = PBXGroup; + children = ( + B3C7622720783510009950E4 /* Core.plist */, + B3C7621320783162009950E4 /* PVMelonDS.h */, + B3C7621420783162009950E4 /* Info.plist */, + ); + path = PVMelonDS; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3C8A68C28780AE30037A946 /* libpthread.tbd */, + B3C8A68E28780AEF0037A946 /* libpthread.tbd */, + B364D4BA2870E7DE00B93A4B /* PVLibRetro.framework */, + B364D4B62870E7D300B93A4B /* PVLibRetro.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3C762202078327B009950E4 /* PVMelonDSCore */ = { + isa = PBXGroup; + children = ( + B3447EB5218BCE2000557ACE /* Core */, + B3447EA8218BC51300557ACE /* Audio */, + B3447EA0218B881000557ACE /* PVMelonDS.mm */, + ); + path = PVMelonDSCore; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C7621520783162009950E4 /* PVMelonDS.h in Headers */, + B3C76225207833DE009950E4 /* PVMelonDSCore.h in Headers */, + B3447E9C218B826F00557ACE /* PVMelonDS+Audio.h in Headers */, + B3447EB3218BC69700557ACE /* PVMelonDSCore+Audio.h in Headers */, + B3447EAB218BC59D00557ACE /* PVMelonDSCore+Saves.h in Headers */, + B3447EA3218BBFBC00557ACE /* PVMelonDS+AudioTypes.h in Headers */, + B3447EA7218BC3A600557ACE /* PVMelonDS+CoreAudio.h in Headers */, + B3447E9F218B858100557ACE /* PVMelonDSCore+Controls.h in Headers */, + B3447EAF218BC5C500557ACE /* PVMelonDSCore+Video.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* MelonDS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "MelonDS" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MelonDS; + productName = MelonDS; + productReference = B30178D3207C901D0051B93D /* libMelonDS.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVMelonDS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVMelonDS" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39313822870FB9A00372EBB /* PBXTargetDependency */, + ); + name = PVMelonDS; + productName = PVMelonDS; + productReference = B3C7621020783162009950E4 /* PVMelonDS.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVMelonDS" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVMelonDS */, + B30178D2207C901D0051B93D /* MelonDS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B33350262078619C0036A448 /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3C8A666287808C10037A946 /* NDS.cpp in Sources */, + B33809002877B6A00009C732 /* ffunicode.c in Sources */, + B33808A42877B5E70009C732 /* CP15.cpp in Sources */, + B33808C42877B6090009C732 /* Wifi.cpp in Sources */, + B33808E92877B64F0009C732 /* compat_posix_string.c in Sources */, + B3C8A69028780B9A0037A946 /* diskio.c in Sources */, + B33808DE2877B62D0009C732 /* input.cpp in Sources */, + B338089F2877B5E70009C732 /* ARM.cpp in Sources */, + B33808FA2877B67C0009C732 /* vfs_implementation.c in Sources */, + B33808992877B5E70009C732 /* ARMInterpreter.cpp in Sources */, + B33808C32877B6090009C732 /* WifiAP.cpp in Sources */, + B33808EF2877B6570009C732 /* file_path.c in Sources */, + B33808F22877B6680009C732 /* file_stream_transforms.c in Sources */, + B33808EA2877B64F0009C732 /* compat_strcasestr.c in Sources */, + B33809162877BA350009C732 /* ARMJIT_LoadStore.cpp in Sources */, + B33809042877B6A80009C732 /* sha1.c in Sources */, + B3C8A66C287809920037A946 /* teakra_c.cpp in Sources */, + B33809142877BA350009C732 /* ARMJIT_Compiler.cpp in Sources */, + B3C8A66D287809920037A946 /* disassembler_c.cpp in Sources */, + B3C8A674287809B00037A946 /* dma.cpp in Sources */, + B33808A22877B5E70009C732 /* DSi_DSP.cpp in Sources */, + B33808932877B5E70009C732 /* DSi.cpp in Sources */, + B33808A02877B5E70009C732 /* ARCodeFile.cpp in Sources */, + B338090D2877B9F10009C732 /* ARM_InstrInfo.cpp in Sources */, + B338089D2877B5E70009C732 /* DSiCrypto.cpp in Sources */, + B33808DC2877B62D0009C732 /* config.cpp in Sources */, + B33808F72877B6700009C732 /* stdstring.c in Sources */, + B338089C2877B5E70009C732 /* DSi_NDMA.cpp in Sources */, + B33808A52877B5E70009C732 /* DSi_AES.cpp in Sources */, + B3C8A677287809B00037A946 /* processor.cpp in Sources */, + B3C8A673287809B00037A946 /* ahbm.cpp in Sources */, + B33809132877BA350009C732 /* ARMJIT_Branch.cpp in Sources */, + B33808DD2877B62D0009C732 /* libretro.cpp in Sources */, + B33808942877B5E70009C732 /* DSi_Camera.cpp in Sources */, + B33808FE2877B68B0009C732 /* aes.c in Sources */, + B33809152877BA350009C732 /* ARMJIT_ALU.cpp in Sources */, + B3C8A672287809B00037A946 /* apbp.cpp in Sources */, + B33808D92877B61B0009C732 /* Util_ROM.cpp in Sources */, + B33808972877B5E70009C732 /* ARMInterpreter_ALU.cpp in Sources */, + B33808C62877B6090009C732 /* RTC.cpp in Sources */, + B33808C92877B6090009C732 /* SPI.cpp in Sources */, + B33808C82877B6090009C732 /* NDSCart_SRAMManager.cpp in Sources */, + B33808C12877B6090009C732 /* GPU3D_Soft.cpp in Sources */, + B338090A2877B9F10009C732 /* ARMJIT.cpp in Sources */, + B3C8A675287809B00037A946 /* parser.cpp in Sources */, + B3C8A676287809B00037A946 /* mmio.cpp in Sources */, + B3C8A670287809B00037A946 /* btdmp.cpp in Sources */, + B3C8A67B287809B00037A946 /* timer.cpp in Sources */, + B33808962877B5E70009C732 /* DMA.cpp in Sources */, + B33808F12877B6680009C732 /* file_stream.c in Sources */, + B33808C72877B6090009C732 /* GBACart.cpp in Sources */, + B33808BF2877B6090009C732 /* GPU.cpp in Sources */, + B33809072877B99C0009C732 /* rthreads.c in Sources */, + B338089A2877B5E70009C732 /* DSi_NAND.cpp in Sources */, + B3C8A68A28780AB90037A946 /* ff.c in Sources */, + B33808BD2877B6090009C732 /* NDSCart.cpp in Sources */, + B33808BE2877B6090009C732 /* Savestate.cpp in Sources */, + B33808E02877B62D0009C732 /* utils.cpp in Sources */, + B33808CA2877B6090009C732 /* SPU.cpp in Sources */, + B33808A62877B5E70009C732 /* DSi_I2C.cpp in Sources */, + B3C8A69228780D5C0037A946 /* encoding_utf.c in Sources */, + B33808C02877B6090009C732 /* GPU2D.cpp in Sources */, + B33808F32877B6680009C732 /* memory_stream.c in Sources */, + B3C8A678287809B00037A946 /* teakra.cpp in Sources */, + B33808E82877B64F0009C732 /* fopen_utf8.c in Sources */, + B33809082877B9A20009C732 /* rsemaphore.c in Sources */, + B33808A72877B5E70009C732 /* DSi_SPI_TSC.cpp in Sources */, + B33808FC2877B6860009C732 /* xxhash.c in Sources */, + B3C8A679287809B00037A946 /* memory_interface.cpp in Sources */, + B3C8A67A287809B00037A946 /* test_generator.cpp in Sources */, + B33808E72877B64F0009C732 /* compat_strl.c in Sources */, + B33809122877BA350009C732 /* ARMJIT_Linkage.S in Sources */, + B33808952877B5E70009C732 /* CRC32.cpp in Sources */, + B3C8A668287809340037A946 /* MathUtil.cpp in Sources */, + B33808DB2877B62D0009C732 /* screenlayout.cpp in Sources */, + B33808DF2877B62D0009C732 /* platform.cpp in Sources */, + B33808A32877B5E70009C732 /* ARMInterpreter_LoadStore.cpp in Sources */, + B3C8A671287809B00037A946 /* disassembler.cpp in Sources */, + B338089B2877B5E70009C732 /* DSi_SD.cpp in Sources */, + B33808A12877B5E70009C732 /* AREngine.cpp in Sources */, + B338089E2877B5E70009C732 /* DSi_NWifi.cpp in Sources */, + B338090C2877B9F10009C732 /* CommonFuncs.cpp in Sources */, + B33809012877B6A00009C732 /* ffsystem.c in Sources */, + B33808982877B5E70009C732 /* ARMInterpreter_Branch.cpp in Sources */, + B3C8A66A2878093A0037A946 /* Arm64Emitter.cpp in Sources */, + B33808C52877B6090009C732 /* GPU2D_Soft.cpp in Sources */, + B338090B2877B9F10009C732 /* ARMJIT_Memory.cpp in Sources */, + B33808C22877B6090009C732 /* GPU3D.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B338055D287582CE0009C732 /* PVMelonDSCore+Audio.m in Sources */, + B338055B28757C3A0009C732 /* PVMelonDSCore+Controls.mm in Sources */, + B338055F287583AD0009C732 /* PVMelonDSCore+Video.m in Sources */, + B3C76226207833DE009950E4 /* PVMelonDSCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39313822870FB9A00372EBB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B30178D2207C901D0051B93D /* MelonDS */; + targetProxy = B39313812870FB9A00372EBB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = MelonDS; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = MelonDS; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/melonDS/src\"", + "\"$(SRCROOT)/melonDS/src/libretro/libretro-common/include\"", + "\"$(SRCROOT)/melonDS/src/libretro\"", + "\"$(SRCROOT)/melonDS/src/ARMJIT_A64\"", + "\"$(SRCROOT)/melonDS/src/ARMJIT_x64\"", + "\"$(SRCROOT)/melonDS/src/dolphin\"", + "\"$(SRCROOT)/melonDS/src/teakra/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = NO; + INFOPLIST_FILE = PVMelonDS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = mh_dylib; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMelonDS"; + PRODUCT_NAME = PVMelonDS; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_SWIFT_SYMBOLS = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + PRODUCT_NAME = MelonDS; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/melonDS/src\"", + "\"$(SRCROOT)/melonDS/src/libretro/libretro-common/include\"", + "\"$(SRCROOT)/melonDS/src/libretro\"", + "\"$(SRCROOT)/melonDS/src/ARMJIT_A64\"", + "\"$(SRCROOT)/melonDS/src/ARMJIT_x64\"", + "\"$(SRCROOT)/melonDS/src/dolphin\"", + "\"$(SRCROOT)/melonDS/src/teakra/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/melonDS/src\"", + "\"$(SRCROOT)/melonDS/src/libretro/libretro-common/include\"", + "\"$(SRCROOT)/melonDS/src/libretro\"", + "\"$(SRCROOT)/melonDS/src/ARMJIT_A64\"", + "\"$(SRCROOT)/melonDS/src/ARMJIT_x64\"", + "\"$(SRCROOT)/melonDS/src/dolphin\"", + "\"$(SRCROOT)/melonDS/src/teakra/include\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = NO; + INFOPLIST_FILE = PVMelonDS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = mh_dylib; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMelonDS"; + PRODUCT_NAME = PVMelonDS; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_SWIFT_SYMBOLS = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEAD_CODE_STRIPPING = NO; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_ENABLE_CPP_EXCEPTIONS = YES; + GCC_WARN_INHIBIT_ALL_WARNINGS = NO; + INFOPLIST_FILE = PVMelonDS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = mh_dylib; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVMelonDS"; + PRODUCT_NAME = PVMelonDS; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + STRIP_SWIFT_SYMBOLS = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "MelonDS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVMelonDS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVMelonDS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/melonDS/PVMelonDS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/melonDS/PVMelonDS.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/melonDS/PVMelonDS.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/melonDS/PVMelonDS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/melonDS/PVMelonDS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/melonDS/PVMelonDS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/melonDS/PVMelonDS.xcodeproj/xcshareddata/xcschemes/PVMelonDS.xcscheme b/Cores/melonDS/PVMelonDS.xcodeproj/xcshareddata/xcschemes/PVMelonDS.xcscheme new file mode 100644 index 0000000000..84bb853b1b --- /dev/null +++ b/Cores/melonDS/PVMelonDS.xcodeproj/xcshareddata/xcschemes/PVMelonDS.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/melonDS/PVMelonDS/Core.plist b/Cores/melonDS/PVMelonDS/Core.plist new file mode 100644 index 0000000000..3ffd24b836 --- /dev/null +++ b/Cores/melonDS/PVMelonDS/Core.plist @@ -0,0 +1,22 @@ + + + + + PVCoreIdentifier + com.provenance.core.MelonDS + PVPrincipleClass + PVMelonDSCore + PVSupportedSystems + + com.provenance.ds + + PVProjectName + MelonDS + PVProjectURL + https://melonds.kuribo64.net + PVProjectVersion + 0.9.4 + PVDisabled + + + diff --git a/Cores/melonDS/PVMelonDS/Info.plist b/Cores/melonDS/PVMelonDS/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/melonDS/PVMelonDS/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/melonDS/PVMelonDS/PVMelonDS.h b/Cores/melonDS/PVMelonDS/PVMelonDS.h new file mode 100644 index 0000000000..9813df6641 --- /dev/null +++ b/Cores/melonDS/PVMelonDS/PVMelonDS.h @@ -0,0 +1,19 @@ +// +// PVMelonDS.h +// PVMelonDS +// +// Created by Joseph Mattiello on 4/6/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVMelonDS. +FOUNDATION_EXPORT double PVMelonDSVersionNumber; + +//! Project version string for PVMelonDS. +FOUNDATION_EXPORT const unsigned char PVMelonDSVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+Audio.h b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+Audio.h new file mode 100644 index 0000000000..812a979cee --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+Audio.h @@ -0,0 +1,35 @@ +// +// PVMelonDS+Audio.h +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import + +#define CALLBACK_VERSION_1 1 // Fill the ring buffer, if full, wait until has space +#define CALLBACK_VERSION_2 2 // samples_ptr > rb.bytesWritten then do next rb write +#define CALLBACK_VERSION_3 3 // Use a sample counter instead of filling the buffer +#define CALLBACK_VERSION_4 4 // Use a sample counter instead of filling the buffer +#define CALLBACK_VERSION_5 5 // Wait for each ringbuffer read to finish? +#define CALLBACK_VERSION_6 6 // Wait until ring buffer has space using availableBytes +#define CALLBACK_VERSION_7 7 // Hacking at time based ring buffer +#define CALLBACK_VERSION_8 8 // Stock copy to ORRingBuffer no wait + +#define CALLBACK_VERSION CALLBACK_VERSION_8 +#define USE_DIRECTSOUND_THING FALSE +#define EXTRA_LOGGING TRUE + +#if CALLBACK_VERSION <= 7 +#define COREAUDIO_USE_DEFAULT 0 +#else +#define COREAUDIO_USE_DEFAULT 1 +#endif + +#if EXTRA_LOGGING +#define CALOG(fmt, ...) \ +printf(fmt, ##__VA_ARGS__); +#else +#define CALOG(...) +#endif diff --git a/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+Audio.mm b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+Audio.mm new file mode 100644 index 0000000000..a99ab2e25f --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+Audio.mm @@ -0,0 +1,467 @@ +// +// PVMelonDS+Audio.m +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import "PVMelonDS+Audio.h" +#import "PVMelonDS+CoreAudio.h" +#import "PVMelonDS+AudioTypes.h" + +#import + +#include "oslib/audiobackend_coreaudio.h" + +#pragma mark - MelonDS Callbacks + +#pragma mark Forward Declerations +static void coreaudio_init(); +static void coreaudio_term(); +static u32 coreaudio_push(void* frame, u32 samples, bool wait); + +static u32 coreaudio_push1(void* frame, u32 samples, bool wait); +static u32 coreaudio_push2(void* frame, u32 samples, bool wait); +static u32 coreaudio_push3(void* frame, u32 samples, bool wait); +static u32 coreaudio_push4(void* frame, u32 samples, bool wait); +static u32 coreaudio_push5(void* frame, u32 samples, bool wait); +static u32 coreaudio_push6(void* frame, u32 samples, bool wait); +static u32 coreaudio_push7(void* frame, u32 samples, bool wait); +static u32 coreaudio_push8(void* frame, u32 samples, bool wait); + +#pragma mark Externed callback struct +audiobackend_t audiobackend_coreaudio = { + "coreaudio", // Slug + "Core Audio", // Name + &coreaudio_init, + &coreaudio_push, + &coreaudio_term +}; + +#pragma mark Implimentations + +void coreaudio_init() { +#if COREAUDIO_USE_DEFAULT + // Handled by the host app + VLOG(@"Using host app audio graph."); + return; +#else + // GET_CURRENT_OR_RETURN(); + // [current ringBufferAtIndex:0]; + // + // if (settings.aica.GlobalFocus) { + // // TODO: Allow background audio? + // } + NSError *error; + [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error]; + if(error) { + ELOG(@"Couldn't set av session %@", error.localizedDescription); + } else { + ILOG(@"Successfully set audio session to ambient"); + } + + player = {0}; + + // build a graph with output unit and set stream format + CreateMyAUGraph(&player); + InitAUPlayer(&player); +#endif // COREAUDIO_USE_DEFAULT +} + +static void coreaudio_term() +{ + GET_CURRENT_OR_RETURN(); +} + +static u32 coreaudio_push(void* frame, u32 samples, bool wait) +{ +#if CALLBACK_VERSION == 0 + return 1; +#endif + + GET_CURRENT_OR_RETURN(1); + + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + // ELOG(@"Ring buffer was nil!"); + return 1; + } + + if (current.isEmulationPaused) { + CALOG("Paused, clearing ring buffer."); + TPCircularBufferClear(&rb->buffer); + return 1; + } + +#if USE_DIRECTSOUND_THING + u16* f=(u16*)frame; + + bool w= false; + + for (u32 i = 0; i < samples*2; i++) { + if (f[i]) { + w = true; + break; + } + } + + wait &= w; +#endif + + // Fill the buffer and wait for it to empty +#if CALLBACK_VERSION == 1 + return coreaudio_push1(frame, samples, wait); +#elif CALLBACK_VERSION == 2 + return coreaudio_push2(frame, samples, wait); +#elif CALLBACK_VERSION == 3 + // Faster, stutters + return coreaudio_push3(frame, samples, wait); +#elif CALLBACK_VERSION == 4 + return coreaudio_push4(frame, samples, wait); +#elif CALLBACK_VERSION == 5 + return coreaudio_push5(frame, samples, wait); +#elif CALLBACK_VERSION == 6 + return coreaudio_push6(frame, samples, wait); +#elif CALLBACK_VERSION == 7 + return coreaudio_push7(frame, samples, wait); +#elif CALLBACK_VERSION == 8 + return coreaudio_push8(frame, samples, wait); +#endif +} + +#pragma mark - Callback Variations + +static inline u32 +coreaudio_push1(void* frame, u32 samples, bool wait) { + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + + // Results: Too slow + while (rb.availableBytes == 0 && wait) { } + [rb write:(const unsigned char *)frame maxLength:samples * 4]; + + return 1; +} + +static inline u32 +coreaudio_push2(void* frame, u32 samples, bool wait) { + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + // Use a sample counter instead of filling the buffer + while (samples_ptr > rb.bytesWritten && wait) { } + if(samples_ptr <= rb.bytesWritten) { + [rb write:(const unsigned char *)frame maxLength:samples * 4]; + samples_ptr += samples * 4; + } + + return 1; +} + +static inline u32 +coreaudio_push3(void* frame, u32 samples, bool wait) { + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + + NSLog(@"%lu %lu diff: %lu", (unsigned long)samples_ptr, (unsigned long)rb.bytesWritten, (unsigned long)samples_ptr-rb.bytesWritten); + + // Use a sample counter instead of filling the buffer + while (samples_ptr != 0 && samples_ptr != rb.bytesRead && rb.bytesRead != 0 && wait) { } + [rb write:(const unsigned char *)frame maxLength:samples * 4]; + samples_ptr += samples * 4; + + return 1; +} + +static inline u32 +coreaudio_push4(void* frame, u32 samples, bool wait) { + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + + while (samples_ptr >= rb.bytesWritten && wait) { } + if (samples_ptr >= rb.bytesWritten) + [rb write:(const unsigned char *)frame maxLength:samples * 4]; + samples_ptr += samples * 4; + + return 1; +} + +static inline u32 +coreaudio_push5(void* frame, u32 samples, bool wait) { + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + + if (samples_ptr <= rb.bytesWritten) + [rb write:(const unsigned char *)frame maxLength:samples * 4]; + + samples_ptr += samples * 4; + + while (samples_ptr >= rb.bytesWritten > 0 && wait) { } + + return 1; +} + +static inline u32 +coreaudio_push6(void* frame, u32 samples, bool wait) { + static uint clearedCounter = 0; + + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + + NSUInteger maxFillSize = clearedCounter > 4 ? samples * 8 : -1; + CALOG("used bytes: %lu", (unsigned long)rb.usedBytes); +#define notfull [rb write:(const unsigned char *)frame maxLength:samples * 4] + + while ([rb availableBytes] > maxFillSize && wait) { } + + [rb write:(const unsigned char *)frame maxLength:samples * 4]; + + // dispatch_async(current->_callbackQueue, ^{ + // [rb write:(const unsigned char *)frame maxLength:samples * 4]; + // }); + if (rb.usedBytes == 0) { + clearedCounter++; + } + + return 1; +} + +static inline u32 +coreaudio_push7(void* frame, u32 samples, bool wait) { + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + + // render into our buffer + OSStatus inputProcErr = noErr; + UInt32 inNumberFrames = samples; + UInt32 inNumberBytes = samples * 4; + + AudioTimeStamp timeStamp = {0}; + FillOutAudioTimeStampWithSampleTime(timeStamp, settings.dreamcast.RTC); + + //write_ptr += inNumberFrames; + + // have we ever logged input timing? (for offset calculation) + if (player.firstInputSampleTime < 0.0) { + player.firstInputSampleTime = write_ptr; + if ((player.firstOutputSampleTime > -1.0) && + (player.inToOutSampleTimeOffset < 0.0)) { + player.inToOutSampleTimeOffset = + player.firstInputSampleTime - player.firstOutputSampleTime; + } + } + + // In order to render continuously, the effect audio unit needs a new time stamp for each buffer + // Use the number of frames for each unit of time continuously incrementing + //player.firstInputSampleTime += (double)samples * 4; + //AudioBufferList ioData = {0}; + //ioData.mNumberBuffers = 1; + //ioData.mBuffers[0] = + //ioData.mBuffers[0].mNumberChannels = 2; + //ioData.mBuffers[0].mDataByteSize = (UInt32)(inNumberBytes); + //ioData.mBuffers[0].mData = frame; + + //AudioBufferList *bufferList = NULL; + //UInt32 numBuffers = 1; + //UInt32 channelsPerBuffer = 2; + //bufferList = static_cast(calloc(1, offsetof(AudioBufferList, mBuffers) + (sizeof(AudioBuffer) * numBuffers))); + //bufferList->mNumberBuffers = numBuffers; + // + //for(UInt32 bufferIndex = 0; bufferIndex < bufferList->mNumberBuffers; ++bufferIndex) { + // bufferList->mBuffers[bufferIndex].mData = frame; //static_cast(calloc(capacityFrames, bytesPerFrame)); + // bufferList->mBuffers[bufferIndex].mDataByteSize = inNumberBytes; + // bufferList->mBuffers[bufferIndex].mNumberChannels = 2; + //} + + + + CALOG("set %d frames at time %f\n", inNumberFrames, timeStamp.mSampleTime); + + /* + #define kNumChannels 2 + AudioBufferList *bufferList = (AudioBufferList*)malloc(sizeof(AudioBufferList) * kNumChannels); + bufferList->mNumberBuffers = kNumChannels; // 2 for stereo, 1 for mono + for(int i = 0; i < 2; i++) { + int numSamples = 123456; // Number of sample frames in the buffer + bufferList->mBuffers[i].mNumberChannels = 1; + bufferList->mBuffers[i].mDataByteSize = numSamples * sizeof(Float32); + bufferList->mBuffers[i].mData = (Float32*)malloc(sizeof(Float32) * numSamples); + } + + // Do stuff... + + for(int i = 0; i < 2; i++) { + free(bufferList->mBuffers[i].mData); + } + free(bufferList); + */ + //AudioUnitGetProperty(player.graph, + // kAudioUnitProperty_CurrentPlayTime, + // kAudioUnitScope_Global, + // 0, + // &ts, + // &size); + // + //AudioUnitGetProperty(player.graph, + // kAudioUnitProperty_CurrentPlayTime, + // kAudioUnitScope_Global, + // 0, + // (void*)&ts, + // &size); + + // float freq = 440.f; + // int seconds = 4; + // unsigned sample_rate = 44100; + // size_t buf_size = seconds * sample_rate; + // + // short *staticsamples; + // staticsamples = new short[buf_size]; + // for(int i=0; imBuffers[0].mData, frame, inNumberBytes); + + + // player.inputBuffer->mBuffers[0].mDataByteSize = inNumberBytes; + + // memcpy(player.inputBuffer->mBuffers[0].mData, frame, inNumberBytes); + player.inputBuffer->mBuffers[0].mData = frame; + player.inputBuffer->mBuffers[0].mDataByteSize = inNumberBytes; + player.inputBuffer->mBuffers[0].mNumberChannels = 2; + + // copy from our buffer to ring buffer + if (! inputProcErr) { + inputProcErr = player.ringBuffer->Store(player.inputBuffer, + inNumberFrames, + timeStamp.mSampleTime); + CALOG("Stored: %i", inputProcErr); + } + + // }); + /* Yeah, right */ + // while (samples_ptr != 0 && wait) ; + // + // if (samples_ptr == 0) { + // memcpy(&samples_temp[samples_ptr], frame, samples * 4); + // samples_ptr += samples * 4; + // } + // + + return 1; +} + +static inline u32 +coreaudio_push8(void* frame, u32 samples, bool wait) { + GET_CURRENT_OR_RETURN(1); + OERingBuffer *rb = [current ringBufferAtIndex:0]; + + if (rb == nil) { + ELOG(@"Ring buffer was nil!"); + return 1; + } + + static dispatch_queue_t serialQueue; + static dispatch_group_t group; + static CFAbsoluteTime lastTime; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); + serialQueue = dispatch_queue_create("com.provenance.reicase.audio", queueAttributes); + + group = dispatch_group_create(); + lastTime = CFAbsoluteTimeGetCurrent(); + }); + +// BOOL fullBuffer = rb.availableBytes < samples / 4; + static u32 previousSampleCount = 0; + static const float samplePerSecond = 2.0 * (1.0 / 44100.0); + static const float bytesPerSample = 2.0; + + int currentAvailable = rb.availableBytes; + + [rb write:(const unsigned char *)frame maxLength:samples * 4]; + + if (wait) { + while ( rb.availableBytes < (currentAvailable + (previousSampleCount * 4))) { + + } + } + + CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); + CFTimeInterval deltaTime = now - lastTime; +#if DEBUG + printf("TimeDelta: %i", deltaTime); +#endif + /* TODO: Look into what the options here are + var timestamp = AudioTimeStamp() + + timestamp.mSampleTime = numberOfSamplesRecorded + timestamp.mFlags = .sampleHostTimeValid + + static var sampleTimeValid: AudioTimeStampFlags + static var hostTimeValid: AudioTimeStampFlags + static var rateScalarValid: AudioTimeStampFlags + static var wordClockTimeValid: AudioTimeStampFlags + static var smpteTimeValid: AudioTimeStampFlags + */ + +// if (fullBuffer && wait) { + dispatch_time_t maxWait = dispatch_time( DISPATCH_TIME_NOW, samples / samplePerSecond); +// dispatch_group_wait(group, maxWait); +// dispatch_group_enter(group); +// dispatch_async(serialQueue, ^{ +// // Note, is the frame pointer too volitile if we return early? +// // should we do a max wait instead of 1 or 2 frames? + [rb write:(const unsigned char *)frame maxLength:samples * 4]; +// dispatch_group_leave(group); +// }); +// } else { +// [rb write:(const unsigned char *)frame maxLength:samples * 4]; +// } + +// if(wait) { +// float waitTime = samplePerSecond * samples; +// printf("wait %f", waitTime); +// [NSThread sleepForTimeInterval:waitTime]; +// } + previousSampleCount = samples; + + return 1; +} diff --git a/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+AudioTypes.h b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+AudioTypes.h new file mode 100644 index 0000000000..16f126c757 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+AudioTypes.h @@ -0,0 +1,30 @@ +// +// PVMelonDS+Audio.h +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import + +#import +#import +#import +#import +#import +#import + + // MelonDS imports +#include "types.h" +#include "profiler/profiler.h" +#include "cfg/cfg.h" +#include "rend/rend.h" +#include "rend/TexCache.h" +#include "hw/maple/maple_devs.h" +#include "hw/maple/maple_if.h" +#include "hw/maple/maple_cfg.h" + +static volatile Float64 write_ptr = 0; +static volatile Float64 read_ptr = 0; +static volatile Float64 samples_ptr = 0; diff --git a/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+CoreAudio.h b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+CoreAudio.h new file mode 100644 index 0000000000..6ed37295d5 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+CoreAudio.h @@ -0,0 +1,48 @@ +// +// PVMelonDS+CoreAudio.h +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import +#import +#import + +typedef struct MelonDSAUGraphPlayer { + AudioStreamBasicDescription streamFormat; + AUGraph graph; + AudioUnit inputUnit; + AudioUnit outputUnit; + AudioUnit converterUnit; + + AudioBufferList *inputBuffer; + CARingBuffer *ringBuffer; + Float64 firstInputSampleTime; + Float64 firstOutputSampleTime; + Float64 inToOutSampleTimeOffset; +} MelonDSAUGraphPlayer; + +static MelonDSAUGraphPlayer player; + +OSStatus InputRenderProc(void *inRefCon, + AudioUnitRenderActionFlags *ioActionFlags, + const AudioTimeStamp *inTimeStamp, + UInt32 inBusNumber, + UInt32 inNumberFrames, + AudioBufferList * ioData); +OSStatus GraphRenderProc(void *inRefCon, + AudioUnitRenderActionFlags *ioActionFlags, + const AudioTimeStamp *inTimeStamp, + UInt32 inBusNumber, + UInt32 inNumberFrames, + AudioBufferList * ioData); + +void CreateMyAUGraph(MelonDSAUGraphPlayer *player); +void InitAUPlayer(MelonDSAUGraphPlayer *player); +static void CheckError(OSStatus error, const char *operation); diff --git a/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+CoreAudio.mm b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+CoreAudio.mm new file mode 100644 index 0000000000..bcd1195a71 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Audio/PVMelonDS+CoreAudio.mm @@ -0,0 +1,495 @@ +// +// PVMelonDS+Audio.m +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import "PVMelonDS+CoreAudio.h" +#import "PVMelonDS+Audio.h" +#import "PVMelonDS+AudioTypes.h" +#import +#import + +#pragma mark - Core Audio Setup - + +void +InitAUPlayer(MelonDSAUGraphPlayer *player) { + /* allocate some buffers to hold samples between input and output callbacks + (this part largely copied from CAPlayThrough) */ + //Get the size of the IO buffer(s) + Float64 sampleRate; + Float32 bufferDuration; + +#if TARGET_OS_IOS + UInt32 propSize = sizeof(Float64); + AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareSampleRate, + &propSize, + &sampleRate); + + propSize = sizeof(Float32); + AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareIOBufferDuration, + &propSize, + &bufferDuration); +#else +#endif + UInt32 bufferLengthInFrames = sampleRate * bufferDuration; + UInt32 bufferSizeBytes = bufferLengthInFrames * sizeof(Float32); + + if (player->streamFormat.mFormatFlags & kAudioFormatFlagIsNonInterleaved) { + ILOG(@"format is non-interleaved\n"); + // allocate an AudioBufferList plus enough space for array of AudioBuffers + UInt32 propsize = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * player->streamFormat.mChannelsPerFrame); + + //malloc buffer lists + player->inputBuffer = (AudioBufferList *)malloc(propsize); + player->inputBuffer->mNumberBuffers = player->streamFormat.mChannelsPerFrame; + + //pre-malloc buffers for AudioBufferLists + for(UInt32 i =0; i< player->inputBuffer->mNumberBuffers ; i++) { + player->inputBuffer->mBuffers[i].mNumberChannels = 1; + player->inputBuffer->mBuffers[i].mDataByteSize = bufferSizeBytes; + player->inputBuffer->mBuffers[i].mData = malloc(bufferSizeBytes); + } + } else { + ILOG(@"format is interleaved\n"); + // allocate an AudioBufferList plus enough space for array of AudioBuffers + UInt32 propsize = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * 1); + + //malloc buffer lists + player->inputBuffer = (AudioBufferList *)malloc(propsize); + player->inputBuffer->mNumberBuffers = 1; + + //pre-malloc buffers for AudioBufferLists + player->inputBuffer->mBuffers[0].mNumberChannels = player->streamFormat.mChannelsPerFrame; + player->inputBuffer->mBuffers[0].mDataByteSize = bufferSizeBytes; + player->inputBuffer->mBuffers[0].mData = malloc(bufferSizeBytes); + } + + //Alloc ring buffer that will hold data between the two audio devices + player->ringBuffer = new CARingBuffer(); + player->ringBuffer->Allocate(player->streamFormat.mChannelsPerFrame, + player->streamFormat.mBytesPerFrame, + bufferLengthInFrames * 4000); + + player->firstInputSampleTime = -1; + player->firstOutputSampleTime = -1; + player->inToOutSampleTimeOffset = -1; + + CheckError(AUGraphStart(player->graph), "AUGraphStart failed"); + + settings.aica.BufferSize = bufferLengthInFrames; + + // settings.aica.LimitFPS = 1; +} + +void +CreateMyAUGraph(MelonDSAUGraphPlayer *player) +{ +#if COREAUDIO_USE_DEFAULT + NAssert(@"Shouldn't be here."); +#endif + + GET_CURRENT_OR_RETURN(); + + AUGraphStop(player->graph); + AUGraphClose(player->graph); + AUGraphUninitialize(player->graph); + + // create a new AUGraph + CheckError(NewAUGraph(&player->graph), + "NewAUGraph failed"); + + //Open the graph + CheckError(AUGraphOpen(player->graph), + "couldn't open graph"); + + AudioComponentDescription desc = {0}; + + desc.componentType = kAudioUnitType_Output; + desc.componentSubType = kAudioUnitSubType_RemoteIO; + desc.componentManufacturer = kAudioUnitManufacturer_Apple; + desc.componentFlagsMask = 0; + desc.componentFlags = 0; + + + // adds a node with above description to the graph + AUNode outputNode; + CheckError(AUGraphAddNode(player->graph, (const AudioComponentDescription *)&desc, &outputNode), + "AUGraphAddNode[kAudioUnitSubType_DefaultOutput] failed"); + + CheckError(AUGraphNodeInfo(player->graph, outputNode, NULL, &player->outputUnit), + "couldn't get output from node"); + + desc.componentType = kAudioUnitType_Mixer; + desc.componentSubType = kAudioUnitSubType_MultiChannelMixer; + desc.componentManufacturer = kAudioUnitManufacturer_Apple; + + //Create the mixer node + AUNode mixerNode; + + CheckError(AUGraphAddNode(player->graph, (const AudioComponentDescription *)&desc, &mixerNode), + "couldn't create node for file player"); + + AudioUnit mixerUnit; + + CheckError(AUGraphNodeInfo(player->graph, mixerNode, NULL, &mixerUnit), + "couldn't get player unit from node"); + + desc.componentType = kAudioUnitType_FormatConverter; + desc.componentSubType = kAudioUnitSubType_AUConverter; + desc.componentManufacturer = kAudioUnitManufacturer_Apple; + + NSUInteger bufferCount = [current audioBufferCount]; + + //Create the converter node + AUNode mConverterNode; + CheckError(AUGraphAddNode(player->graph, (const AudioComponentDescription *)&desc, &mConverterNode), + "couldn't create node for converter"); + + CheckError(AUGraphNodeInfo(player->graph, mConverterNode, NULL, &player->converterUnit), + "couldn't get player unit from converter"); + + + AURenderCallbackStruct renderStruct; + renderStruct.inputProc = GraphRenderProc; + renderStruct.inputProcRefCon = (void*)&player; + + CheckError(AudioUnitSetProperty(player->converterUnit, kAudioUnitProperty_SetRenderCallback, + kAudioUnitScope_Input, 0, &renderStruct, sizeof(AURenderCallbackStruct)), + "Couldn't set the render callback"); + + // CheckError(AudioUnitSetProperty(player->outputUnit, + // kAudioUnitProperty_SetRenderCallback, + // kAudioUnitScope_Global, + // 0, + // &renderStruct, + // sizeof(renderStruct)), + // "Couldn't set render callback on output unit"); + + AudioStreamBasicDescription mDataFormat; + NSUInteger channelCount = [current channelCount]; + NSUInteger bytesPerSample = [current audioBitDepth] / 8; + + // int formatFlag = (bytesPerSample == 4) ? kLinearPCMFormatFlagIsFloat : kLinearPCMFormatFlagIsSignedInteger; + // mDataFormat.mSampleRate = [current audioSampleRateForBuffer:0]; + // mDataFormat.mFormatID = kAudioFormatLinearPCM; + // mDataFormat.mFormatFlags = formatFlag | kAudioFormatFlagsNativeEndian; + // mDataFormat.mBytesPerPacket = bytesPerSample * channelCount; + // mDataFormat.mFramesPerPacket = 1; // this means each packet in the AQ has two samples, one for each channel -> 4 bytes/frame/packet + // mDataFormat.mBytesPerFrame = bytesPerSample * channelCount; + // mDataFormat.mChannelsPerFrame = channelCount; + // mDataFormat.mBitsPerChannel = 8 * bytesPerSample; + + // int formatFlag = (bytesPerSample == 4) ? kLinearPCMFormatFlagIsFloat : kLinearPCMFormatFlagIsSignedInteger; + mDataFormat.mSampleRate = 44100; + mDataFormat.mFormatID = kAudioFormatLinearPCM; + mDataFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; ////formatFlag | kAudioFormatFlagsNativeEndian; + mDataFormat.mBytesPerPacket = 2*16/8; //bytesPerSample * channelCount; + mDataFormat.mFramesPerPacket = 1; // this means each packet in the AQ has two samples, one for each channel -> 4 bytes/frame/packet + mDataFormat.mBytesPerFrame = 2*16/8; //bytesPerSample * channelCount; + mDataFormat.mChannelsPerFrame = 2; //channelCount; + mDataFormat.mBitsPerChannel = 16; //8 * bytesPerSample; + + player->streamFormat = mDataFormat; + + CheckError(AudioUnitSetProperty(player->converterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &mDataFormat, sizeof(AudioStreamBasicDescription)), + "couldn't set player's input stream format"); + + CheckError(AUGraphConnectNodeInput(player->graph, mConverterNode, 0, mixerNode, 0), + "Couldn't connect the converter to the mixer"); + + CheckError(AUGraphConnectNodeInput(player->graph, mixerNode, 0, outputNode, 0), + "Could not connect the input of the output"); + + AudioUnitSetParameter(player->outputUnit, kAudioUnitParameterUnit_LinearGain, kAudioUnitScope_Global, 0, 1.0 ,0); + + // AudioDeviceID outputDeviceID = 0; + // // if(outputDeviceID != 0) + // CheckError(AudioUnitSetProperty(player->outputUnit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, &outputDeviceID, sizeof(AudioDeviceID)), + // "couldn't set device properties"); + + CheckError(AUGraphInitialize(player->graph), + "couldn't initialize graph"); + + DLOG(@"Initialized the graph"); + + // CheckError(AUGraphStart(player->graph), + // "couldn't start graph"); + // + // DLOG(@"Started the graph"); + + // CFShow(player->graph); + float volume = 1.0; + AudioUnitSetParameter( mixerUnit, kMultiChannelMixerParam_Volume, kAudioUnitScope_Input, 0, volume, 0 ) ; + // + //#define PART_II 0 + //#ifdef PART_II + // AudioStreamBasicDescription mDataFormat; + // NSUInteger channelCount = [current channelCount]; + // NSUInteger bytesPerSample = [current audioBitDepth] / 8; + // + // // int formatFlag = (bytesPerSample == 4) ? kLinearPCMFormatFlagIsFloat : kLinearPCMFormatFlagIsSignedInteger; + // mDataFormat.mSampleRate = 44100; + // mDataFormat.mFormatID = kAudioFormatLinearPCM; + // mDataFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; ////formatFlag | kAudioFormatFlagsNativeEndian; + // mDataFormat.mBytesPerPacket = 2*16/8; //bytesPerSample * channelCount; + // mDataFormat.mFramesPerPacket = 1; // this means each packet in the AQ has two samples, one for each channel -> 4 bytes/frame/packet + // mDataFormat.mBytesPerFrame = 2*16/8; //bytesPerSample * channelCount; + // mDataFormat.mChannelsPerFrame = 2; //channelCount; + // mDataFormat.mBitsPerChannel = 16; //8 * bytesPerSample; + // + // player->streamFormat = mDataFormat; + // + // // add a mixer to the graph, + // AudioComponentDescription mixercd = {0}; + // mixercd.componentType = kAudioUnitType_Mixer; + // mixercd.componentSubType = kAudioUnitSubType_MultiChannelMixer; // doesn't work: kAudioUnitSubType_MatrixMixer + // mixercd.componentManufacturer = kAudioUnitManufacturer_Apple; + // AUNode mixerNode; + // CheckError(AUGraphAddNode(player->graph, &mixercd, &mixerNode), + // "AUGraphAddNode[kAudioUnitSubType_StereoMixer] failed"); + // + // // adds a node with above description to the graph + //// AudioComponentDescription speechcd = {0}; + //// speechcd.componentType = kAudioUnitType_Generator; + //// speechcd.componentSubType = kAudioUnitSubType_SpeechSynthesis; + //// speechcd.componentManufacturer = kAudioUnitManufacturer_Apple; + //// AUNode speechNode; + //// CheckError(AUGraphAddNode(player->graph, &speechcd, &speechNode), + //// "AUGraphAddNode[kAudioUnitSubType_AudioFilePlayer] failed"); + // + // // opening the graph opens all contained audio units but does not allocate any resources yet + // CheckError(AUGraphOpen(player->graph), + // "AUGraphOpen failed"); + // + // // get the reference to the AudioUnit objects for the various nodes + //// CheckError(AUGraphNodeInfo(player->graph, outputNode, NULL, &player->outputUnit), + //// "AUGraphNodeInfo failed"); + //// CheckError(AUGraphNodeInfo(player->graph, speechNode, NULL, &player->speechUnit), + //// "AUGraphNodeInfo failed"); + // AudioUnit mixerUnit; + // CheckError(AUGraphNodeInfo(player->graph, mixerNode, NULL, &mixerUnit), + // "AUGraphNodeInfo failed"); + // + // // set ASBDs here + // UInt32 propertySize = sizeof (AudioStreamBasicDescription); + // CheckError(AudioUnitSetProperty(player->outputUnit, + // kAudioUnitProperty_StreamFormat, + // kAudioUnitScope_Input, + // 0, + // &player->streamFormat, + // propertySize), + // "Couldn't set stream format on output unit"); + // + // // problem: badComponentInstance (-2147450879) + // CheckError(AudioUnitSetProperty(mixerUnit, + // kAudioUnitProperty_StreamFormat, + // kAudioUnitScope_Input, + // 0, + // &player->streamFormat, + // propertySize), + // "Couldn't set stream format on mixer unit bus 0"); + // CheckError(AudioUnitSetProperty(mixerUnit, + // kAudioUnitProperty_StreamFormat, + // kAudioUnitScope_Input, + // 1, + // &player->streamFormat, + // propertySize), + // "Couldn't set stream format on mixer unit bus 1"); + // + // + // // connections + // // mixer output scope / bus 0 to outputUnit input scope / bus 0 + // // mixer input scope / bus 0 to render callback (from ringbuffer, which in turn is from inputUnit) + // // mixer input scope / bus 1 to speech unit output scope / bus 0 + // + // CheckError(AUGraphConnectNodeInput(player->graph, mixerNode, 0, outputNode, 0), + // "Couldn't connect mixer output(0) to outputNode (0)"); + //// CheckError(AUGraphConnectNodeInput(player->graph, speechNode, 0, mixerNode, 1), + //// "Couldn't connect speech synth unit output (0) to mixer input (1)"); + // AURenderCallbackStruct callbackStruct; + // callbackStruct.inputProc = GraphRenderProc; + // callbackStruct.inputProcRefCon = player; + // CheckError(AudioUnitSetProperty(mixerUnit, + // kAudioUnitProperty_SetRenderCallback, + // kAudioUnitScope_Global, + // 0, + // &callbackStruct, + // sizeof(callbackStruct)), + // "Couldn't set render callback on mixer unit"); + // + // + //#else + // + // // opening the graph opens all contained audio units but does not allocate any resources yet + // CheckError(AUGraphOpen(player->graph), + // "AUGraphOpen failed"); + // + // // get the reference to the AudioUnit object for the output graph node + // CheckError(AUGraphNodeInfo(player->graph, outputNode, NULL, &player->outputUnit), + // "AUGraphNodeInfo failed"); + // + // AudioStreamBasicDescription mDataFormat; + // NSUInteger channelCount = [current channelCount]; + // NSUInteger bytesPerSample = [current audioBitDepth] / 8; + // + // // int formatFlag = (bytesPerSample == 4) ? kLinearPCMFormatFlagIsFloat : kLinearPCMFormatFlagIsSignedInteger; + // mDataFormat.mSampleRate = 44100; + // mDataFormat.mFormatID = kAudioFormatLinearPCM; + // mDataFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; ////formatFlag | kAudioFormatFlagsNativeEndian; + // mDataFormat.mBytesPerPacket = 2*16/8; //bytesPerSample * channelCount; + // mDataFormat.mFramesPerPacket = 1; // this means each packet in the AQ has two samples, one for each channel -> 4 bytes/frame/packet + // mDataFormat.mBytesPerFrame = 2*16/8; //bytesPerSample * channelCount; + // mDataFormat.mChannelsPerFrame = 2; //channelCount; + // mDataFormat.mBitsPerChannel = 16; //8 * bytesPerSample; + // + // player->streamFormat = mDataFormat; + //// OSStatus inputProcErr = noErr; + //// err = AudioUnitSetProperty(mConverterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &mDataFormat, sizeof(AudioStreamBasicDescription)); + // + // // set the stream format on the output unit's input scope + // UInt32 propertySize = sizeof (AudioStreamBasicDescription); + // CheckError(AudioUnitSetProperty(player->outputUnit, + // kAudioUnitProperty_StreamFormat, + // kAudioUnitScope_Input, + // 0, + // &player->streamFormat, + // propertySize), + // "Couldn't set stream format on output unit"); + // + // AURenderCallbackStruct callbackStruct; + // callbackStruct.inputProc = GraphRenderProc; + // callbackStruct.inputProcRefCon = player; + // + // CheckError(AudioUnitSetProperty(player->outputUnit, + // kAudioUnitProperty_SetRenderCallback, + // kAudioUnitScope_Global, + // 0, + // &callbackStruct, + // sizeof(callbackStruct)), + // "Couldn't set render callback on output unit"); + // + //#endif + // + // + // // now initialize the graph (causes resources to be allocated) + // CheckError(AUGraphInitialize(player->graph), + // "AUGraphInitialize failed"); + + player->firstOutputSampleTime = -1; + + CALOG("Bottom of CreateSimpleAUGraph()\n"); +} + +#pragma mark - Render Callback - + +OSStatus +GraphRenderProc(void *inRefCon, + AudioUnitRenderActionFlags *ioActionFlags, + const AudioTimeStamp *inTimeStamp, + UInt32 inBusNumber, + UInt32 inNumberFrames, + AudioBufferList * ioData) +{ +#if COREAUDIO_USE_DEFAULT + NAssert(@"Shouldn't be here."); + return 0; +#else + + read_ptr += inNumberFrames; + // CALOG("GraphRenderProc! need %d frames for time %f \n", inNumberFrames, inTimeStamp->mSampleTime); + + // MelonDSAUGraphPlayer *player = (MelonDSAUGraphPlayer*) inRefCon; + + // have we ever logged output timing? (for offset calculation) + if (player.firstOutputSampleTime < 0.0) { + player.firstOutputSampleTime = inTimeStamp->mSampleTime; + if ((player.firstInputSampleTime > -1.0) && + (player.inToOutSampleTimeOffset < 0.0)) { + player.inToOutSampleTimeOffset = + player.firstInputSampleTime - player.firstOutputSampleTime; + } + } + + // copy samples out of ring buffer + OSStatus outputProcErr = noErr; + + // Float64 time = inTimeStamp->mSampleTime + player.inToOutSampleTimeOffset; + Float64 time = read_ptr + player.inToOutSampleTimeOffset; + + // new CARingBuffer doesn't take bool 4th arg + outputProcErr = player.ringBuffer->Fetch(ioData, + inNumberFrames, + time); + // float freq = 440.f; + // int seconds = 4; + // unsigned sample_rate = 44100; + // size_t buf_size = seconds * sample_rate; + // + // short *samples; + // samples = new short[buf_size]; + // for(int i=0; imBuffers[0].mData, samples, inNumberFrames); + + // memcpy(ioData->mBuffers[0].mData, player.inputBuffer->mBuffers[0].mData, inNumberFrames); + // + samples_ptr -= inNumberFrames * 2 * 2; + + if (samples_ptr < 0) + samples_ptr = 0; + + printf ("fetched %d frames at time %f error: %i\n", inNumberFrames, time, outputProcErr); + return outputProcErr; +#endif +} + + +#pragma mark - Utilities - + + +static AudioBufferList * +AllocateABL(UInt32 channelsPerFrame, UInt32 bytesPerFrame, bool interleaved, UInt32 capacityFrames) +{ + AudioBufferList *bufferList = NULL; + + UInt32 numBuffers = interleaved ? 1 : channelsPerFrame; + UInt32 channelsPerBuffer = interleaved ? channelsPerFrame : 1; + + bufferList = static_cast(calloc(1, offsetof(AudioBufferList, mBuffers) + (sizeof(AudioBuffer) * numBuffers))); + + bufferList->mNumberBuffers = numBuffers; + + for(UInt32 bufferIndex = 0; bufferIndex < bufferList->mNumberBuffers; ++bufferIndex) { + bufferList->mBuffers[bufferIndex].mData = static_cast(calloc(capacityFrames, bytesPerFrame)); + bufferList->mBuffers[bufferIndex].mDataByteSize = capacityFrames * bytesPerFrame; + bufferList->mBuffers[bufferIndex].mNumberChannels = channelsPerBuffer; + } + + return bufferList; +} + +static void +CheckError(OSStatus error, const char *operation) +{ + if (error == noErr) return; + + char errorString[20]; + // see if it appears to be a 4-char-code + *(UInt32 *)(errorString + 1) = CFSwapInt32HostToBig(error); + if (isprint(errorString[1]) && isprint(errorString[2]) && isprint(errorString[3]) && isprint(errorString[4])) { + errorString[0] = errorString[5] = '\''; + errorString[6] = '\0'; + } else { + // no, format it as an integer + sprintf(errorString, "%d", (int)error); + } + + ELOG(@"CoreAudio: %s (%s)", operation, errorString); + + exit(1); +} diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Audio.h b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Audio.h new file mode 100644 index 0000000000..07b9af8fd8 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Audio.h @@ -0,0 +1,17 @@ +// +// PVMelonDSCore+Audio.h +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVMelonDSCore (Audio) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Audio.m b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Audio.m new file mode 100644 index 0000000000..d61950646a --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Audio.m @@ -0,0 +1,25 @@ +// +// PVMelonDSCore+Audio.m +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import "PVMelonDSCore+Audio.h" + +@implementation PVMelonDSCore (Audio) + +- (NSTimeInterval)frameInterval { + return 60; +} + +- (NSUInteger)channelCount { + return 2; +} + +- (double)audioSampleRate { + return 44100; +} + +@end diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Controls.h b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Controls.h new file mode 100644 index 0000000000..c9ca34d1a0 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Controls.h @@ -0,0 +1,29 @@ +// +// PVMelonDSCore+Controls.h +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVMelonDSCore (Controls) + +- (void)initControllBuffers; +- (void)pollControllers; + +#pragma mark - Control + +- (void)didPushDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player; +- (void)didReleaseDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player; +- (void)didMoveDSJoystickDirection:(enum PVDSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player; +- (void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player; + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player; +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player; +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Controls.mm b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Controls.mm new file mode 100644 index 0000000000..af96376047 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Controls.mm @@ -0,0 +1,188 @@ +// +// PVMelonDSCore+Controls.m +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import +#import +#import + +#define DC_BTN_C (1<<0) +#define DC_BTN_B (1<<1) +#define DC_BTN_A (1<<2) +#define DC_BTN_START (1<<3) +#define DC_DPAD_UP (1<<4) +#define DC_DPAD_DOWN (1<<5) +#define DC_DPAD_LEFT (1<<6) +#define DC_DPAD_RIGHT (1<<7) +#define DC_BTN_Z (1<<8) +#define DC_BTN_Y (1<<9) +#define DC_BTN_X (1<<10) +#define DC_BTN_D (1<<11) +#define DC_DPAD2_UP (1<<12) +#define DC_DPAD2_DOWN (1<<13) +#define DC_DPAD2_LEFT (1<<14) +#define DC_DPAD2_RIGHT (1<<15) + +#define DC_AXIS_LT (0X10000) +#define DC_AXIS_RT (0X10001) +#define DC_AXIS_X (0X20000) +#define DC_AXIS_Y (0X20001) + +//static const int DSMap[] = { +// DC_DPAD_UP, DC_DPAD_DOWN, DC_DPAD_LEFT, DC_DPAD_RIGHT, +// DC_BTN_A, DC_BTN_B, DC_BTN_X, DC_BTN_Y, +// DC_AXIS_LT, DC_AXIS_RT, +// DC_BTN_START +//}; + +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef unsigned int u32; + + // MelonDS controller data +//u16 kcode[4]; +//u8 rt[4]; +//u8 lt[4]; +//u32 vks[4]; +//s8 joyx[4], joyy[4]; + +@implementation PVMelonDSCore (Controls) + +- (void)initControllBuffers { +// memset(&kcode, 0xFFFF, sizeof(kcode)); +// bzero(&rt, sizeof(rt)); +// bzero(<, sizeof(lt)); +} + +#pragma mark - Control +// +//- (void)pollControllers { +// for (NSInteger playerIndex = 0; playerIndex < 4; playerIndex++) +// { +// GCController *controller = nil; +// +// if (self.controller1 && playerIndex == 0) +// { +// controller = self.controller1; +// } +// else if (self.controller2 && playerIndex == 1) +// { +// controller = self.controller2; +// } +// else if (self.controller3 && playerIndex == 3) +// { +// controller = self.controller3; +// } +// else if (self.controller4 && playerIndex == 4) +// { +// controller = self.controller4; +// } +// +// if ([controller extendedGamepad]) +// { +// GCExtendedGamepad *gamepad = [controller extendedGamepad]; +// GCControllerDirectionPad *dpad = [gamepad dpad]; +// +// dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); +// dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); +// dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); +// dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); +// +// gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); +// gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); +// gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); +// gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); +// +// gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); +// gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); +// +// gamepad.leftTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Z) : kcode[playerIndex] |= (DC_BTN_Z); +// gamepad.rightTrigger.isPressed ? kcode[playerIndex] &= ~(DC_BTN_START) : kcode[playerIndex] |= (DC_BTN_START); +// +// +// float xvalue = gamepad.leftThumbstick.xAxis.value; +// s8 x=(s8)(xvalue*127); +// joyx[0] = x; +// +// float yvalue = gamepad.leftThumbstick.yAxis.value; +// s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range +// joyy[0] = y; +// +// } else if ([controller gamepad]) { +// GCGamepad *gamepad = [controller gamepad]; +// GCControllerDirectionPad *dpad = [gamepad dpad]; +// +// dpad.up.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_UP) : kcode[playerIndex] |= (DC_DPAD_UP); +// dpad.down.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_DOWN) : kcode[playerIndex] |= (DC_DPAD_DOWN); +// dpad.left.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_LEFT) : kcode[playerIndex] |= (DC_DPAD_LEFT); +// dpad.right.isPressed ? kcode[playerIndex] &= ~(DC_DPAD_RIGHT) : kcode[playerIndex] |= (DC_DPAD_RIGHT); +// +// gamepad.buttonA.isPressed ? kcode[playerIndex] &= ~(DC_BTN_A) : kcode[playerIndex] |= (DC_BTN_A); +// gamepad.buttonB.isPressed ? kcode[playerIndex] &= ~(DC_BTN_B) : kcode[playerIndex] |= (DC_BTN_B); +// gamepad.buttonX.isPressed ? kcode[playerIndex] &= ~(DC_BTN_X) : kcode[playerIndex] |= (DC_BTN_X); +// gamepad.buttonY.isPressed ? kcode[playerIndex] &= ~(DC_BTN_Y) : kcode[playerIndex] |= (DC_BTN_Y); +// +// gamepad.leftShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_LT) : kcode[playerIndex] |= (DC_AXIS_LT); +// gamepad.rightShoulder.isPressed ? kcode[playerIndex] &= ~(DC_AXIS_RT) : kcode[playerIndex] |= (DC_AXIS_RT); +// } +//#if TARGET_OS_TV +// else if ([controller microGamepad]) { +// GCMicroGamepad *gamepad = [controller microGamepad]; +// GCControllerDirectionPad *dpad = [gamepad dpad]; +// } +//#endif +// } +//} + +-(void)didPushDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player { +// if (button == PVDSButtonL) { +// lt[player] |= 0xff * true; +// } else if (button == PVDSButtonR) { +// rt[player] |= 0xff * true; +// } else { +// int mapped = DSMap[button]; +// kcode[player] &= ~(mapped); +// } +} + +-(void)didReleaseDSButton:(enum PVDSButton)button forPlayer:(NSInteger)player { +// if (button == PVDSButtonL) { +// lt[player] |= 0xff * false; +// } else if (button == PVDSButtonR) { +// rt[player] |= 0xff * false; +// } else { +// int mapped = DSMap[button]; +// kcode[player] |= (mapped); +// } +} + +- (void)didMoveDSJoystickDirection:(enum PVDSButton)button withValue:(CGFloat)value forPlayer:(NSInteger)player { + /* + float xvalue = gamepad.leftThumbstick.xAxis.value; + s8 x=(s8)(xvalue*127); + joyx[0] = x; + + float yvalue = gamepad.leftThumbstick.yAxis.value; + s8 y=(s8)(yvalue*127 * - 1); //-127 ... + 127 range + joyy[0] = y; + */ +} + +-(void)didMoveJoystick:(NSInteger)button withValue:(CGFloat)value forPlayer:(NSInteger)player { + [self didMoveDSJoystickDirection:(enum PVDSButton)button withValue:value forPlayer:player]; +} + +- (void)didPush:(NSInteger)button forPlayer:(NSInteger)player { + [self didPushDSButton:(PVDSButton)button forPlayer:player]; +} + +- (void)didRelease:(NSInteger)button forPlayer:(NSInteger)player { + [self didReleaseDSButton:(PVDSButton)button forPlayer:player]; +} + +@end diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Saves.h b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Saves.h new file mode 100644 index 0000000000..6a68bd7db8 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Saves.h @@ -0,0 +1,17 @@ +// +// PVMelonDS+Saves.h +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVMelonDSCore (Saves) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Saves.m b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Saves.m new file mode 100644 index 0000000000..7cf347b969 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Saves.m @@ -0,0 +1,37 @@ +// +// PVMelonDS+Saves.m +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import "PVMelonDSCore+Saves.h" +#import "PVMelonDSCore.h" + +@implementation PVMelonDSCore (Saves) + +#pragma mark - Properties +-(BOOL)supportsSaveStates { + return NO; +} + +#pragma mark - Methods + +- (BOOL)saveStateToFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName { + return NO; +} + +- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { + block(NO, nil); +} + +@end diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Video.h b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Video.h new file mode 100644 index 0000000000..741020e738 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Video.h @@ -0,0 +1,19 @@ +// +// PVMelonDS+Video.h +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PVMelonDSCore (Video) + +- (void)videoInterrupt; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Video.m b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Video.m new file mode 100644 index 0000000000..7750545833 --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore+Video.m @@ -0,0 +1,110 @@ +// +// PVMelonDS+Video.m +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import "PVMelonDSCore+Video.h" +#import "PVMelonDSCore.h" + +#if !TARGET_OS_OSX && !TARGET_OS_MACCATALYST +#import +#import +#import +#else +#import +#import +#endif + +#if __has_include() +#import +#endif + +@implementation PVMelonDSCore (Video) + +# pragma mark - Methods + +//- (void)videoInterrupt { +// //dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// //dispatch_semaphore_wait(mupenWaitToBeginFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)swapBuffers { +// [self.renderDelegate didRenderFrameOnAlternateThread]; +//} +// +//- (void)executeFrameSkippingFrame:(BOOL)skip { +// //dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// +// //dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, DISPATCH_TIME_FOREVER); +//} +// +//- (void)executeFrame { +// [self executeFrameSkippingFrame:NO]; +//} + +# pragma mark - Properties +// +//- (CGSize)bufferSize { +// return CGSizeMake(1024, 512); +//} +// +//- (CGRect)screenRect { +// return CGRectMake(0, 0, self.videoWidth, self.videoHeight); +//} +// +- (CGSize)aspectSize { + return CGSizeMake(256, 192); +} +// +//- (BOOL)rendersToOpenGL { +// return YES; +//} +// +//- (void)swapBuffers +//{ +// if (bitmap.data == (uint8_t*)videoBufferA) +// { +// videoBuffer = videoBufferA; +// bitmap.data = (uint8_t*)videoBufferB; +// } +// else +// { +// videoBuffer = videoBufferB; +// bitmap.data = (uint8_t*)videoBufferA; +// } +//} +// +//-(BOOL)isDoubleBuffered { +// return YES; +//} + +//- (const void *)videoBuffer { +// return videoBuffer; +//} + +- (GLenum)pixelFormat { + return GL_RGB; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_SHORT_5_6_5; +} + +- (GLenum)internalPixelFormat { + // TODO: use struct retro_pixel_format var, set with, RETRO_ENVIRONMENT_SET_PIXEL_FORMAT +#if !TARGET_OS_MAC && !TARGET_OS_MACCATALYST + return GL_RGB565; +#else + return GL_UNSIGNED_SHORT_5_6_5; +#endif +} + +//- (GLenum)depthFormat { +// // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 +// return GL_DEPTH_COMPONENT24; +//} +@end diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore.h b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore.h new file mode 100644 index 0000000000..7591e92b5b --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore.h @@ -0,0 +1,25 @@ +// +// PVMelonDSCore.h +// PVMelonDS +// +// Created by Joseph Mattiello on 4/6/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVMelonDSCore : PVLibRetroCore +{ +@public + dispatch_queue_t _callbackQueue; +} + +@end diff --git a/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore.mm b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore.mm new file mode 100644 index 0000000000..9a1d5cd13a --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore.mm @@ -0,0 +1,468 @@ +// +// PVMelonDSCore.m +// PVMelonDS +// +// Created by Joseph Mattiello on 4/6/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import "PVMelonDSCore.h" +#import "PVMelonDSCore+Controls.h" +#import "PVMelonDSCore+Audio.h" +#import "PVMelonDSCore+Video.h" + +#import "PVMelonDS+Audio.h" + +#import +#import + +// MelonDS imports +//#include "types.h" +////#include "profiler/profiler.h" +//#include "cfg/cfg.h" +//#include "rend/rend.h" +//#include "rend/TexCache.h" +//#include "hw/maple/maple_devs.h" +//#include "hw/maple/maple_if.h" +//#include "hw/maple/maple_cfg.h" + +//__weak PVMelonDSCore *_current = 0; +// +//@interface PVMelonDSCore() { +// +//} +// +//@property(nonatomic, strong, nullable) NSString *diskPath; +// +//@end +// +//// MelonDS function declerations +//extern int screen_width,screen_height; +//bool rend_single_frame(); +//bool gles_init(); +//extern int MelonDS_main(int argc, char* argv[]); +//void common_linux_setup(); +//int dc_init(int argc,wchar* argv[]); +//void dc_run(); +//void dc_term(); +//void dc_stop(); +//extern void MakeCurrentThreadRealTime(); +// +//bool inside_loop = true; +//static bool first_run = true;; +//volatile bool has_init = false; +// +#pragma mark - PVMelonDSCore Begin +#import +#import +#import +#import +#import + +//static void *dlopen_myself() +//{ +// Dl_info info; +// +// dladdr(dlopen_myself, &info); +// +// return dlopen(info.dli_fname, RTLD_LAZY | RTLD_GLOBAL); +//} + +@implementation PVMelonDSCore { +// dispatch_semaphore_t mupenWaitToBeginFrameSemaphore; +// dispatch_semaphore_t coreWaitToEndFrameSemaphore; +// dispatch_semaphore_t coreWaitForExitSemaphore; +// +// NSMutableDictionary *_callbackHandlers; +} + +- (instancetype)init { + if (self = [super init]) { +// mupenWaitToBeginFrameSemaphore = dispatch_semaphore_create(0); +// coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); +// coreWaitForExitSemaphore = dispatch_semaphore_create(0); +// +// _videoWidth = screen_width = 640; +// _videoHeight = screen_height = 480; +// _videoBitDepth = 32; // ignored +// videoDepthBitDepth = 0; // TODO +// +// sampleRate = 44100; +// +// isNTSC = YES; +// +// dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0); +// +// _callbackQueue = dispatch_queue_create("org.openemu.MelonDS.CallbackHandlerQueue", queueAttributes); +// _callbackHandlers = [[NSMutableDictionary alloc] init]; + _current = self; + } + return self; +} + + +#pragma mark - Options +- (void *)getVariable:(const char *)variable { + ILOG(@"%s", variable); + + #define V(x) strcmp(variable, x) == 0 + + if (V("melonds_console_mode")) { + // Console Mode; DS|DSi + char * value = strdup("DS"); + return value; + } else if (V("melonds_boot_directly")) { + // Boot game directly; enabled|disabled + char * value = strdup("enabled"); + return value; + } else if (V("melonds_threaded_renderer")) { + // Threaded software renderer; disabled|enabled + char * value = strdup("enabled"); + return value; + } else if (V("melonds_touch_mode")) { + // disabled|Mouse|Touch|Joystick + char * value = strdup("touch"); + return value; + } else if (V("melonds_jit_enable")) { + // JIT Enable (Restart); enabled|disabled + char * value = strdup("enabled"); + return value; + } else if (V("melonds_jit_branch_optimisations")) { + // JIT Branch optimisations; enabled|disabled + char * value = strdup("enabled"); + return value; + } else if (V("melonds_jit_literal_optimisations")) { + // JIT Literal optimisations; enabled|disabled + char * value = strdup("enabled"); + return value; + } else if (V("melonds_jit_fast_memory")) { + // JIT Fast memory; enabled|disabled + char * value = strdup("enabled"); + return value; + } else if (V("melonds_dsi_sdcard")) { + // Enable DSi SD card; disabled|enabled + char * value = strdup("disabled"); + return value; + } else if (V("melonds_audio_bitrate")) { + // Audio bitrate; Automatic|10-bit|16-bit + char * value = strdup("16-bit"); + return value; + } else if (V("melonds_audio_interpolation")) { + // Audio Interpolation; None|Linear|Cosine|Cubic + char * value = strdup("Cubic"); + return value; + } else if (V("melonds_opengl_filtering")) { + // "OpenGL filtering; nearest|linear" + char * value = strdup("linear"); + return value; + } else if (V("melonds_opengl_better_polygons")) { + // OpenGL Improved polygon splitting; disabled|enabled + char * value = strdup("enabled"); + return value; + } else if (V("melonds_opengl_renderer")) { + // OpenGL Renderer (Restart); disabled|enabled + char * value = strdup("disabled"); + return value; + } else if (V("melonds_hybrid_ratio")) { + // Hybrid ratio (OpenGL only); 2|3 + char * value = strdup("3"); + return value; + } else { + ELOG(@"Unprocessed var: %s", variable); + return nil; + } + +#undef V + return NULL; +} + +// +//- (void)dealloc { +//#if !__has_feature(objc_arc) +// dispatch_release(mupenWaitToBeginFrameSemaphore); +// dispatch_release(coreWaitToEndFrameSemaphore); +// dispatch_release(coreWaitForExitSemaphore); +//#endif +// +// _current = nil; +//} +// +//#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self copyCFGIfMissing]; +// [self copyShadersIfMissing]; +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// +//// if (!success) { +//// NSDictionary *userInfo = @{ +//// NSLocalizedDescriptionKey: @"Failed to load game.", +//// NSLocalizedFailureReasonErrorKey: @"MelonDS failed to load GLES graphics.", +//// NSLocalizedRecoverySuggestionErrorKey: @"Provenance may not be compiled correctly." +//// }; +//// +//// NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain +//// code:PVEmulatorCoreErrorCodeCouldNotLoadRom +//// userInfo:userInfo]; +//// +//// *error = newError; +//// return NO; +//// } +// +// self.diskPath = path; +// +// return YES; +//} +// +//- (void)printSettings { +//#define LIST_OF_VARIABLES \ +//X(dynarec.Enable) \ +//X(dynarec.idleskip) \ +//X(DS.region) \ +//X(DS.region) \ +//X(aica.LimitFPS) \ +//X(aica.NoSound) \ +//X(aica.NoBatch) \ +//X(aica.GlobalFocus) \ +//X(aica.BufferSize) \ +//X(aica.OldSyncronousDma) \ +//X(bios.UseReios) \ +//X(rend.WideScreen) \ +//X(rend.UseMipmaps) \ +//X(pvr.MaxThreads) \ +//X(pvr.SynchronousRender) +// +// +// NSMutableString *s = [NSMutableString stringWithFormat:@"----------\nMelonDS Settings:\n---------\n"]; +//#define X(name) \ +//[s appendString: [NSString stringWithFormat:@"%@ : %i\n", @#name , settings.name ]]; +//LIST_OF_VARIABLES +//#undef X +// +// ILOG(@"%@", s); +//} +// +// +//- (void)copyShadersIfMissing { +// +// NSArray *shaders = @[@"Shader.vsh",@"Shader.fsh"]; +// NSString *destinationFolder = self.BIOSPath; +// NSFileManager *fm = [NSFileManager defaultManager]; +// +// for (NSString* shader in shaders) { +// NSString *destinationPath = [destinationFolder stringByAppendingPathComponent:shader]; +// ILOG(@"Checking for shader %@", destinationPath); +// if( ![fm fileExistsAtPath:destinationPath] ) { +// NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:[shader stringByDeletingPathExtension] ofType:[shader pathExtension]]; +// [fm copyItemAtPath:source +// toPath:destinationPath +// error:nil]; +// ILOG(@"Copied %@ from %@ to %@", shader, source, destinationPath); +// } +// } +//} +// +//- (void)copyCFGIfMissing { +// +// NSString *cfg = @"emu.cfg"; +// +//// Whcih one is it again? +// NSString *destinationFolder = self.BIOSPath; +//// NSString *destinationFolder = self.diskPath; +// +// NSFileManager *fm = [NSFileManager defaultManager]; +// NSString *destinationPath = [destinationFolder stringByAppendingPathComponent:cfg]; +// +// if( ![fm fileExistsAtPath:destinationPath] ) { +// NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:@"emu" ofType:@"cfg"]; +// [fm copyItemAtPath:source +// toPath:destinationPath +// error:nil]; +// ILOG(@"Copied %@ from %@ to %@", cfg, source, destinationPath); +// } else { +// ILOG(@"emu.cfg already exists at path (%@). Skipping installing default version.", destinationFolder); +// } +//} +// +//#pragma mark - Running +//- (void)startEmulation { +// if(!self.isRunning) { +// [super startEmulation]; +// [NSThread detachNewThreadSelector:@selector(runMelonDSRenderThread) toTarget:self withObject:nil]; +// } +//} +// +//- (void)runMelonDSEmuThread { +// @autoreleasepool +// { +// [self MelonDSMain]; +// +// // Core returns +// +// // Unlock rendering thread +// dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// [super stopEmulation]; +// } +//} +// +//- (void)runMelonDSRenderThread { +// @autoreleasepool +// { +// [self.renderDelegate startRenderingOnAlternateThread]; +// BOOL success = gles_init(); +// assert(success); +// [NSThread detachNewThreadSelector:@selector(runMelonDSEmuThread) toTarget:self withObject:nil]; +// +// CFAbsoluteTime lastTime = CFAbsoluteTimeGetCurrent(); +// +// while (!has_init) {} +// while ( !shouldStop ) +// { +// [self.frontBufferCondition lock]; +// while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; +// [self.frontBufferCondition unlock]; +// +// CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); +// CFTimeInterval deltaTime = now - lastTime; +// while ( !shouldStop && !rend_single_frame() ) {} +// [self swapBuffers]; +// lastTime = now; +// } +// } +//} +// +//- (void)MelonDSMain { +// // #if !TARGET_OS_SIMULATOR +// // install_prof_handler(1); +// // #endif +// +// char *Args[3]; +// const char *P; +// +// P = (const char *)[self.diskPath UTF8String]; +// Args[0] = "dc"; +// Args[1] = "-config"; +// Args[2] = P&&P[0]? (char *)malloc(strlen(P)+32):0; +// +// if(Args[2]) +// { +// strcpy(Args[2],"config:image="); +// strcat(Args[2],P); +// } +// +// MakeCurrentThreadRealTime(); +// +// int argc = Args[2]? 3:1; +// +// // Set directories +// set_user_config_dir(self.BIOSPath.UTF8String); +// set_user_data_dir(self.BIOSPath.UTF8String); +// // Shouuld be this, but it looks for BIOS there too and have to copy BIOS into battery saves dir of every game then +// // set_user_data_dir(self.batterySavesPath.UTF8String); +// +// add_system_data_dir(self.BIOSPath.UTF8String); +// add_system_config_dir(self.BIOSPath.UTF8String); +// +// NSString *systemPath = [self.diskPath stringByDeletingLastPathComponent]; +// +// NSString *configDirs = [NSString stringWithFormat:@"%@", systemPath]; +// NSString *dataDirs = [NSString stringWithFormat:@"%@", systemPath]; +// +// setenv("XDG_CONFIG_DIRS", configDirs.UTF8String, true); +// setenv("XDG_DATA_DIRS", dataDirs.UTF8String, true); +// +// ILOG(@"Config dir is: %s\n", get_writable_config_path("/").c_str()); +// ILOG(@"Data dir is: %s\n", get_writable_data_path("/").c_str()); +// +// common_linux_setup(); +// +// settings.profile.run_counts=0; +// +// MelonDS_main(argc, Args); +// +// dispatch_semaphore_signal(coreWaitForExitSemaphore); +//} +// +//int MelonDS_main(int argc, wchar* argv[]) { +// int status = dc_init(argc, argv); +// if (status != 0) { +// ELOG(@"MelonDS dc_init failed with code: %i", status); +// return status; +// } +// +// ILOG(@"MelonDS init status: %i", status); +// +// [_current printSettings]; +// +// has_init = true; +// +// dc_run(); +// +// has_init = false; +//// _current->shouldStop = true; +// +// dc_term(); +// +// return 0; +//} +// +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +// +// if (flag) +// { +// dc_stop(); +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// } else { +// dc_run(); +// } +//} +// +//- (void)stopEmulation { +// has_init = false; +// +// // TODO: Call MelonDS stop command here +// dc_term(); +// self->shouldStop = YES; +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // TODO: Call MelonDS reset command here +// plugins_Reset(true); +// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +@end + diff --git a/Cores/melonDS/PVMelonDSCore/PVMelonDS.mm b/Cores/melonDS/PVMelonDSCore/PVMelonDS.mm new file mode 100644 index 0000000000..8758114e5b --- /dev/null +++ b/Cores/melonDS/PVMelonDSCore/PVMelonDS.mm @@ -0,0 +1,167 @@ +// +// PVMelonDS.mm +// PVMelonDS +// +// Created by Joseph Mattiello on 11/1/18. +// Copyright © 2018 Provenance. All rights reserved. +// + +#import "PVMelonDSCore.h" +#import "PVMelonDSCore+Controls.h" +#import "PVMelonDSCore+Video.h" +#import + +#import "PVMelonDS+Audio.h" + +#include + + // MelonDS imports +#include "types.h" +#include "profiler/profiler.h" +#include "cfg/cfg.h" +#include "rend/rend.h" +#include "rend/TexCache.h" +#include "hw/maple/maple_devs.h" +#include "hw/maple/maple_if.h" +#include "hw/maple/maple_cfg.h" + +#pragma mark - MelonDS C++ interface +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hw/sh4/dyna/blockmanager.h" +#include + +void move_pthread_to_realtime_scheduling_class(pthread_t pthread) +{ + mach_timebase_info_data_t timebase_info; + mach_timebase_info(&timebase_info); + + const uint64_t NANOS_PER_MSEC = 1000000ULL; + double clock2abs = ((double)timebase_info.denom / (double)timebase_info.numer) * NANOS_PER_MSEC; + + thread_time_constraint_policy_data_t policy; + policy.period = 0; + policy.computation = (uint32_t)(5 * clock2abs); // 5 ms of work + policy.constraint = (uint32_t)(10 * clock2abs); + policy.preemptible = FALSE; + + int kr = thread_policy_set(pthread_mach_thread_np(pthread_self()), + THREAD_TIME_CONSTRAINT_POLICY, + (thread_policy_t)&policy, + THREAD_TIME_CONSTRAINT_POLICY_COUNT); + if (kr != KERN_SUCCESS) { + mach_error("thread_policy_set:", kr); + exit(1); + } +} + +void MakeCurrentThreadRealTime() +{ + move_pthread_to_realtime_scheduling_class(pthread_self()); +} + +#pragma mark Debugging calls + +int msgboxf(const wchar* text,unsigned int type,...) +{ + va_list args; + + wchar temp[2048]; + va_start(args, type); + vsprintf(temp, text, args); + va_end(args); + + //printf(NULL,temp,VER_SHORTNAME,type | MB_TASKMODAL); + ILOG(@"%s", temp); + return 0; +} + +int darw_printf(const wchar* text,...) { + va_list args; + + wchar temp[2048]; + va_start(args, text); + vsprintf(temp, text, args); + va_end(args); + + ILOG(@"%s", temp); + + return 0; +} + +#pragma mark C Lifecycle calls +void os_DoEvents() { + GET_CURRENT_OR_RETURN(); + [current videoInterrupt]; + //// + //// is_dupe = false; + // [current updateControllers]; + // + // if (settings.UpdateMode || settings.UpdateModeForced) + // { + // inside_loop = false; + // rend_end_render(); + // } +} + +u32 os_Push(void*, u32, bool) { + return 1; +} + +void os_SetWindowText(const char* t) { + ILOG(@"WindowText: %s", t); +} + +void os_CreateWindow() { + +} + +void os_SetupInput() { + mcfg_CreateDevicesFromConfig(); +} + +void UpdateInputState(u32 port) { + GET_CURRENT_OR_RETURN(); + [current pollControllers]; +} + +void UpdateVibration(u32 port, u32 value) { + +} + +int get_mic_data(unsigned char* ) { + return 0; +} + +void* libPvr_GetRenderTarget() { + return 0; +} + +void* libPvr_GetRenderSurface() { + return 0; + +} + +bool gl_init(void*, void*) { + return true; +} + +void gl_term() { + +} + +void gl_swap() { + GET_CURRENT_OR_RETURN(); + [current swapBuffers]; +} diff --git a/Cores/melonDS/melonDS b/Cores/melonDS/melonDS new file mode 160000 index 0000000000..58598a8e22 --- /dev/null +++ b/Cores/melonDS/melonDS @@ -0,0 +1 @@ +Subproject commit 58598a8e22597a5906cc7852c10174a922ba3f95 diff --git a/Cores/opera/BuildFlags.xcconfig b/Cores/opera/BuildFlags.xcconfig new file mode 100644 index 0000000000..f352e1c2c0 --- /dev/null +++ b/Cores/opera/BuildFlags.xcconfig @@ -0,0 +1,25 @@ +// +// BuildFlags.xcconfig +// PVOpera +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 +OTHER_CFLAGS = $(inherited) + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/opera/PVOpera-Prefix.pch b/Cores/opera/PVOpera-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/opera/PVOpera-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/opera/PVOpera.h b/Cores/opera/PVOpera.h new file mode 100644 index 0000000000..714d42d6de --- /dev/null +++ b/Cores/opera/PVOpera.h @@ -0,0 +1,19 @@ +// +// PVOpera.h +// PVOpera +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVOpera. +FOUNDATION_EXPORT double PVOperaVersionNumber; + +//! Project version string for PVOpera. +FOUNDATION_EXPORT const unsigned char PVOperaVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/opera/PVOpera.xcodeproj/project.pbxproj b/Cores/opera/PVOpera.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..90f6d4f665 --- /dev/null +++ b/Cores/opera/PVOpera.xcodeproj/project.pbxproj @@ -0,0 +1,4270 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libopera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libopera.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVOperaCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVOperaCore.mm */; }; + B37022C92872554300B3F6DA /* PVOperaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVOperaCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVOpera.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVOpera.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B39768F82859E23200558958 /* libopera-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libopera-libretro.a */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; platformFilter = ios; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libopera.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libopera.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libopera-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libopera-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVOpera-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVOpera-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVOpera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVOpera.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVOpera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVOpera.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVOperaCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVOperaCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVOperaCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVOperaCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVOpera.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVOpera.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3EBA44D287296AD00EAEB37 /* Tupfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tupfile; sourceTree = ""; }; + B3EBA44E287296AD00EAEB37 /* libretro_core_options.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro_core_options.c; sourceTree = ""; }; + B3EBA44F287296AD00EAEB37 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3EBA450287296AD00EAEB37 /* cuefile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cuefile.c; sourceTree = ""; }; + B3EBA451287296AD00EAEB37 /* lr_input_crosshair.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lr_input_crosshair.h; sourceTree = ""; }; + B3EBA452287296AD00EAEB37 /* opera_lr_callbacks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_callbacks.h; sourceTree = ""; }; + B3EBA453287296AD00EAEB37 /* opera_lr_dsp_regular.ic */ = {isa = PBXFileReference; lastKnownFileType = text; path = opera_lr_dsp_regular.ic; sourceTree = ""; }; + B3EBA454287296AD00EAEB37 /* opera_lr_opts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_opts.h; sourceTree = ""; }; + B3EBA455287296AD00EAEB37 /* lr_input_descs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lr_input_descs.h; sourceTree = ""; }; + B3EBA456287296AD00EAEB37 /* retro_cdimage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_cdimage.h; sourceTree = ""; }; + B3EBA457287296AD00EAEB37 /* lr_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lr_input.h; sourceTree = ""; }; + B3EBA45B287296AD00EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA45C287296AD00EAEB37 /* opera_lr_dsp_threaded.ic */ = {isa = PBXFileReference; lastKnownFileType = text; path = opera_lr_dsp_threaded.ic; sourceTree = ""; }; + B3EBA45D287296AD00EAEB37 /* opera_lr_dsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_dsp.c; sourceTree = ""; }; + B3EBA45E287296AD00EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EBA45F287296AD00EAEB37 /* opera_lr_nvram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_nvram.h; sourceTree = ""; }; + B3EBA460287296AD00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA461287296AD00EAEB37 /* opera_lr_callbacks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_callbacks.c; sourceTree = ""; }; + B3EBA462287296AD00EAEB37 /* cuefile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cuefile.h; sourceTree = ""; }; + B3EBA463287296AD00EAEB37 /* lr_input_crosshair.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lr_input_crosshair.c; sourceTree = ""; }; + B3EBA464287296AD00EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA465287296AD00EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EBA467287296AD00EAEB37 /* opera_3do.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_3do.h; sourceTree = ""; }; + B3EBA468287296AD00EAEB37 /* opera_region_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_region_i.h; sourceTree = ""; }; + B3EBA469287296AD00EAEB37 /* opera_bitop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_bitop.h; sourceTree = ""; }; + B3EBA46A287296AD00EAEB37 /* opera_sport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_sport.h; sourceTree = ""; }; + B3EBA46B287296AD00EAEB37 /* opera_diag_port.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_diag_port.c; sourceTree = ""; }; + B3EBA46C287296AD00EAEB37 /* extern_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = extern_c.h; sourceTree = ""; }; + B3EBA46D287296AD00EAEB37 /* opera_dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_dsp.h; sourceTree = ""; }; + B3EBA46E287296AD00EAEB37 /* opera_xbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_xbus.h; sourceTree = ""; }; + B3EBA46F287296AD00EAEB37 /* opera_madam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_madam.c; sourceTree = ""; }; + B3EBA470287296AD00EAEB37 /* endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = endianness.h; sourceTree = ""; }; + B3EBA471287296AD00EAEB37 /* opera_pbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_pbus.c; sourceTree = ""; }; + B3EBA472287296AD00EAEB37 /* opera_vdlp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_vdlp.c; sourceTree = ""; }; + B3EBA473287296AD00EAEB37 /* opera_clio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_clio.h; sourceTree = ""; }; + B3EBA474287296AD00EAEB37 /* opera_nvram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_nvram.h; sourceTree = ""; }; + B3EBA475287296AD00EAEB37 /* hack_flags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hack_flags.h; sourceTree = ""; }; + B3EBA476287296AD00EAEB37 /* opera_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_cdrom.c; sourceTree = ""; }; + B3EBA477287296AD00EAEB37 /* bool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bool.h; sourceTree = ""; }; + B3EBA478287296AD00EAEB37 /* opera_swi_hle_0x5XXXX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_swi_hle_0x5XXXX.h; sourceTree = ""; }; + B3EBA479287296AD00EAEB37 /* opera_bios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_bios.c; sourceTree = ""; }; + B3EBA47A287296AD00EAEB37 /* opera_xbus_cdrom_plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_xbus_cdrom_plugin.c; sourceTree = ""; }; + B3EBA47B287296AD00EAEB37 /* opera_fixedpoint_math.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_fixedpoint_math.c; sourceTree = ""; }; + B3EBA47C287296AD00EAEB37 /* inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inline.h; sourceTree = ""; }; + B3EBA47D287296AD00EAEB37 /* opera_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_arm.c; sourceTree = ""; }; + B3EBA47E287296AD00EAEB37 /* opera_region.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_region.c; sourceTree = ""; }; + B3EBA47F287296AD00EAEB37 /* opera_vdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdl.h; sourceTree = ""; }; + B3EBA480287296AD00EAEB37 /* opera_clock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_clock.c; sourceTree = ""; }; + B3EBA481287296AD00EAEB37 /* opera_dsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_dsp.c; sourceTree = ""; }; + B3EBA482287296AD00EAEB37 /* static_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_assert.h; sourceTree = ""; }; + B3EBA483287296AD00EAEB37 /* opera_diag_port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_diag_port.h; sourceTree = ""; }; + B3EBA484287296AD00EAEB37 /* opera_bitop.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_bitop.c; sourceTree = ""; }; + B3EBA485287296AD00EAEB37 /* opera_sport.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_sport.c; sourceTree = ""; }; + B3EBA486287296AD00EAEB37 /* opera_3do.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_3do.c; sourceTree = ""; }; + B3EBA487287296AD00EAEB37 /* pbus.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = pbus.txt; sourceTree = ""; }; + B3EBA488287296AD00EAEB37 /* opera_nvram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_nvram.c; sourceTree = ""; }; + B3EBA489287296AD00EAEB37 /* opera_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_cdrom.h; sourceTree = ""; }; + B3EBA48A287296AD00EAEB37 /* opera_pbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_pbus.h; sourceTree = ""; }; + B3EBA48B287296AD00EAEB37 /* opera_clio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_clio.c; sourceTree = ""; }; + B3EBA48C287296AD00EAEB37 /* opera_vdlp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdlp.h; sourceTree = ""; }; + B3EBA48D287296AD00EAEB37 /* opera_dsp2_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_dsp2_i.h; sourceTree = ""; }; + B3EBA48E287296AD00EAEB37 /* opera_vdlp_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdlp_i.h; sourceTree = ""; }; + B3EBA48F287296AD00EAEB37 /* opera_madam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_madam.h; sourceTree = ""; }; + B3EBA490287296AD00EAEB37 /* opera_xbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_xbus.c; sourceTree = ""; }; + B3EBA491287296AD00EAEB37 /* opera_bios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_bios.h; sourceTree = ""; }; + B3EBA492287296AD00EAEB37 /* opera_xbus_cdrom_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_xbus_cdrom_plugin.h; sourceTree = ""; }; + B3EBA493287296AD00EAEB37 /* opera_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_core.h; sourceTree = ""; }; + B3EBA494287296AD00EAEB37 /* opera_arm_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_arm_core.h; sourceTree = ""; }; + B3EBA495287296AD00EAEB37 /* opera_region.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_region.h; sourceTree = ""; }; + B3EBA496287296AD00EAEB37 /* opera_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_arm.h; sourceTree = ""; }; + B3EBA497287296AD00EAEB37 /* opera_clock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_clock.h; sourceTree = ""; }; + B3EBA498287296AD00EAEB37 /* opera_fixedpoint_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_fixedpoint_math.h; sourceTree = ""; }; + B3EBA499287296AD00EAEB37 /* lr_input_descs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lr_input_descs.c; sourceTree = ""; }; + B3EBA49A287296AD00EAEB37 /* opera_lr_opts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_opts.c; sourceTree = ""; }; + B3EBA49D287296AD00EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EBA49F287296AD00EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EBA4A0287296AD00EAEB37 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3EBA4A2287296AD00EAEB37 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3EBA4A4287296AD00EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EBA4A5287296AD00EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EBA4A6287296AD00EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EBA4A7287296AD00EAEB37 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3EBA4A8287296AD00EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EBA4AA287296AD00EAEB37 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3EBA4AB287296AD00EAEB37 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3EBA4AD287296AD00EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EBA4AE287296AD00EAEB37 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3EBA4B0287296AD00EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EBA4B1287296AD00EAEB37 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B3EBA4B2287296AD00EAEB37 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B3EBA4B3287296AD00EAEB37 /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B3EBA4B4287296AD00EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EBA4B7287296AD00EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBA4B8287296AD00EAEB37 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3EBA4BA287296AD00EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBA4BB287296AD00EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBA4BC287296AD00EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EBA4BE287296AD00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA4C0287296AD00EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBA4C1287296AD00EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBA4C3287296AD00EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBA4C4287296AD00EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBA4C5287296AD00EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBA4C6287296AD00EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBA4C7287296AD00EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBA4C8287296AD00EAEB37 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3EBA4CA287296AD00EAEB37 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3EBA4CB287296AD00EAEB37 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3EBA4CD287296AD00EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBA4CE287296AD00EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EBA4CF287296AD00EAEB37 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3EBA4D0287296AD00EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBA4D1287296AD00EAEB37 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3EBA4D3287296AD00EAEB37 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3EBA4D4287296AD00EAEB37 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3EBA4D5287296AD00EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBA4D6287296AD00EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBA4D7287296AD00EAEB37 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3EBA4D8287296AD00EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EBA4D9287296AD00EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EBA4DA287296AD00EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBA4DC287296AD00EAEB37 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3EBA4DD287296AD00EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBA4DE287296AD00EAEB37 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3EBA4DF287296AD00EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EBA4E1287296AD00EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBA4E2287296AD00EAEB37 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3EBA4E4287296AD00EAEB37 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3EBA4E5287296AD00EAEB37 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3EBA4E7287296AD00EAEB37 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3EBA4E8287296AD00EAEB37 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3EBA4E9287296AD00EAEB37 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3EBA4EA287296AD00EAEB37 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3EBA4EB287296AD00EAEB37 /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B3EBA4ED287296AD00EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EBA4F0287296AD00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA4F3287296AD00EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBA4F4287296AD00EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBA4F5287296AD00EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBA4F6287296AD00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA4F7287296AD00EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBA4F8287296AD00EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBA4F9287296AD00EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBA4FB287296AD00EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBA4FC287296AD00EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA4FD287296AD00EAEB37 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B3EBA4FF287296AD00EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EBA500287296AD00EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EBA501287296AD00EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EBA502287296AD00EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EBA503287296AD00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA504287296AD00EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EBA506287296AD00EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBA507287296AD00EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EBA508287296AD00EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EBA509287296AD00EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA50A287296AD00EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA50B287296AD00EAEB37 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3EBA50C287296AD00EAEB37 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3EBA50D287296AD00EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EBA50E287296AD00EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EBA50F287296AD00EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA510287296AD00EAEB37 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3EBA511287296AD00EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EBA512287296AD00EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EBA513287296AD00EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA514287296AD00EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EBA515287296AD00EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EBA516287296AD00EAEB37 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3EBA518287296AD00EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EBA519287296AD00EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EBA51A287296AD00EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EBA51B287296AD00EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EBA51C287296AD00EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EBA51D287296AD00EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EBA51E287296AD00EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EBA51F287296AD00EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EBA520287296AD00EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA522287296AD00EAEB37 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B3EBA523287296AD00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA524287296AD00EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBA526287296AD00EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EBA527287296AD00EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EBA528287296AD00EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EBA529287296AD00EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EBA52A287296AD00EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EBA52B287296AD00EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EBA52C287296AD00EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EBA52D287296AD00EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EBA52E287296AD00EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EBA52F287296AD00EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EBA530287296AD00EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EBA531287296AD00EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EBA532287296AD00EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EBA533287296AD00EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EBA534287296AD00EAEB37 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B3EBA535287296AD00EAEB37 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B3EBA536287296AD00EAEB37 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B3EBA538287296AD00EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EBA539287296AD00EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EBA53A287296AD00EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EBA53B287296AD00EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EBA53C287296AD00EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EBA53D287296AD00EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EBA53E287296AD00EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EBA53F287296AD00EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EBA540287296AD00EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EBA541287296AD00EAEB37 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3EBA542287296AD00EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EBA543287296AD00EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBA544287296AD00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA545287296AD00EAEB37 /* opera_lr_dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_dsp.h; sourceTree = ""; }; + B3EBA546287296AD00EAEB37 /* lr_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lr_input.c; sourceTree = ""; }; + B3EBA548287296AD00EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBA549287296AD00EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBA54A287296AD00EAEB37 /* retro_cdimage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_cdimage.c; sourceTree = ""; }; + B3EBA54B287296AD00EAEB37 /* opera_lr_nvram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_nvram.c; sourceTree = ""; }; + B3EBA54C287296AD00EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3EBA54D287296AD00EAEB37 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; + B3EBA550287296E400EAEB37 /* Tupfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tupfile; sourceTree = ""; }; + B3EBA551287296E400EAEB37 /* libretro_core_options.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro_core_options.c; sourceTree = ""; }; + B3EBA552287296E400EAEB37 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3EBA553287296E400EAEB37 /* cuefile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cuefile.c; sourceTree = ""; }; + B3EBA554287296E400EAEB37 /* lr_input_crosshair.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lr_input_crosshair.h; sourceTree = ""; }; + B3EBA555287296E400EAEB37 /* opera_lr_callbacks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_callbacks.h; sourceTree = ""; }; + B3EBA556287296E400EAEB37 /* opera_lr_dsp_regular.ic */ = {isa = PBXFileReference; lastKnownFileType = text; path = opera_lr_dsp_regular.ic; sourceTree = ""; }; + B3EBA557287296E400EAEB37 /* opera_lr_opts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_opts.h; sourceTree = ""; }; + B3EBA558287296E400EAEB37 /* lr_input_descs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lr_input_descs.h; sourceTree = ""; }; + B3EBA559287296E400EAEB37 /* retro_cdimage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_cdimage.h; sourceTree = ""; }; + B3EBA55A287296E400EAEB37 /* lr_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lr_input.h; sourceTree = ""; }; + B3EBA55B287296E400EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA55C287296E400EAEB37 /* opera_lr_dsp_threaded.ic */ = {isa = PBXFileReference; lastKnownFileType = text; path = opera_lr_dsp_threaded.ic; sourceTree = ""; }; + B3EBA55D287296E400EAEB37 /* opera_lr_dsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_dsp.c; sourceTree = ""; }; + B3EBA55E287296E400EAEB37 /* Makefile.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.common; sourceTree = ""; }; + B3EBA55F287296E400EAEB37 /* opera_lr_nvram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_nvram.h; sourceTree = ""; }; + B3EBA560287296E400EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA561287296E400EAEB37 /* opera_lr_callbacks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_callbacks.c; sourceTree = ""; }; + B3EBA562287296E400EAEB37 /* cuefile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cuefile.h; sourceTree = ""; }; + B3EBA563287296E400EAEB37 /* lr_input_crosshair.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lr_input_crosshair.c; sourceTree = ""; }; + B3EBA564287296E400EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA565287296E400EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EBA567287296E400EAEB37 /* opera_3do.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_3do.h; sourceTree = ""; }; + B3EBA568287296E400EAEB37 /* opera_region_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_region_i.h; sourceTree = ""; }; + B3EBA569287296E400EAEB37 /* opera_bitop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_bitop.h; sourceTree = ""; }; + B3EBA56A287296E400EAEB37 /* opera_sport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_sport.h; sourceTree = ""; }; + B3EBA56B287296E400EAEB37 /* opera_diag_port.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_diag_port.c; sourceTree = ""; }; + B3EBA56C287296E400EAEB37 /* extern_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = extern_c.h; sourceTree = ""; }; + B3EBA56D287296E400EAEB37 /* opera_dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_dsp.h; sourceTree = ""; }; + B3EBA56E287296E400EAEB37 /* opera_xbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_xbus.h; sourceTree = ""; }; + B3EBA56F287296E400EAEB37 /* opera_madam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_madam.c; sourceTree = ""; }; + B3EBA570287296E400EAEB37 /* endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = endianness.h; sourceTree = ""; }; + B3EBA571287296E400EAEB37 /* opera_pbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_pbus.c; sourceTree = ""; }; + B3EBA572287296E400EAEB37 /* opera_vdlp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_vdlp.c; sourceTree = ""; }; + B3EBA573287296E400EAEB37 /* opera_clio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_clio.h; sourceTree = ""; }; + B3EBA574287296E400EAEB37 /* opera_nvram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_nvram.h; sourceTree = ""; }; + B3EBA575287296E400EAEB37 /* hack_flags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hack_flags.h; sourceTree = ""; }; + B3EBA576287296E400EAEB37 /* opera_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_cdrom.c; sourceTree = ""; }; + B3EBA577287296E400EAEB37 /* bool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bool.h; sourceTree = ""; }; + B3EBA578287296E400EAEB37 /* opera_swi_hle_0x5XXXX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_swi_hle_0x5XXXX.h; sourceTree = ""; }; + B3EBA579287296E400EAEB37 /* opera_bios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_bios.c; sourceTree = ""; }; + B3EBA57A287296E400EAEB37 /* opera_xbus_cdrom_plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_xbus_cdrom_plugin.c; sourceTree = ""; }; + B3EBA57B287296E400EAEB37 /* opera_fixedpoint_math.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_fixedpoint_math.c; sourceTree = ""; }; + B3EBA57C287296E400EAEB37 /* inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inline.h; sourceTree = ""; }; + B3EBA57D287296E400EAEB37 /* opera_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_arm.c; sourceTree = ""; }; + B3EBA57E287296E400EAEB37 /* opera_region.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_region.c; sourceTree = ""; }; + B3EBA57F287296E400EAEB37 /* opera_vdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdl.h; sourceTree = ""; }; + B3EBA580287296E400EAEB37 /* opera_clock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_clock.c; sourceTree = ""; }; + B3EBA581287296E400EAEB37 /* opera_dsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_dsp.c; sourceTree = ""; }; + B3EBA582287296E400EAEB37 /* static_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_assert.h; sourceTree = ""; }; + B3EBA583287296E400EAEB37 /* opera_diag_port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_diag_port.h; sourceTree = ""; }; + B3EBA584287296E400EAEB37 /* opera_bitop.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_bitop.c; sourceTree = ""; }; + B3EBA585287296E400EAEB37 /* opera_sport.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_sport.c; sourceTree = ""; }; + B3EBA586287296E400EAEB37 /* opera_3do.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_3do.c; sourceTree = ""; }; + B3EBA587287296E400EAEB37 /* pbus.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = pbus.txt; sourceTree = ""; }; + B3EBA588287296E400EAEB37 /* opera_nvram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_nvram.c; sourceTree = ""; }; + B3EBA589287296E400EAEB37 /* opera_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_cdrom.h; sourceTree = ""; }; + B3EBA58A287296E500EAEB37 /* opera_pbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_pbus.h; sourceTree = ""; }; + B3EBA58B287296E500EAEB37 /* opera_clio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_clio.c; sourceTree = ""; }; + B3EBA58C287296E500EAEB37 /* opera_vdlp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdlp.h; sourceTree = ""; }; + B3EBA58D287296E500EAEB37 /* opera_dsp2_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_dsp2_i.h; sourceTree = ""; }; + B3EBA58E287296E500EAEB37 /* opera_vdlp_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdlp_i.h; sourceTree = ""; }; + B3EBA58F287296E500EAEB37 /* opera_madam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_madam.h; sourceTree = ""; }; + B3EBA590287296E500EAEB37 /* opera_xbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_xbus.c; sourceTree = ""; }; + B3EBA591287296E500EAEB37 /* opera_bios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_bios.h; sourceTree = ""; }; + B3EBA592287296E500EAEB37 /* opera_xbus_cdrom_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_xbus_cdrom_plugin.h; sourceTree = ""; }; + B3EBA593287296E500EAEB37 /* opera_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_core.h; sourceTree = ""; }; + B3EBA594287296E500EAEB37 /* opera_arm_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_arm_core.h; sourceTree = ""; }; + B3EBA595287296E500EAEB37 /* opera_region.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_region.h; sourceTree = ""; }; + B3EBA596287296E500EAEB37 /* opera_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_arm.h; sourceTree = ""; }; + B3EBA597287296E500EAEB37 /* opera_clock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_clock.h; sourceTree = ""; }; + B3EBA598287296E500EAEB37 /* opera_fixedpoint_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_fixedpoint_math.h; sourceTree = ""; }; + B3EBA599287296E500EAEB37 /* lr_input_descs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lr_input_descs.c; sourceTree = ""; }; + B3EBA59A287296E500EAEB37 /* opera_lr_opts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_opts.c; sourceTree = ""; }; + B3EBA59D287296E500EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EBA59F287296E500EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EBA5A0287296E500EAEB37 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3EBA5A2287296E500EAEB37 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3EBA5A4287296E500EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EBA5A5287296E500EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EBA5A6287296E500EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EBA5A7287296E500EAEB37 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3EBA5A8287296E500EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EBA5AA287296E500EAEB37 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3EBA5AB287296E500EAEB37 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3EBA5AD287296E500EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EBA5AE287296E500EAEB37 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3EBA5B0287296E500EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EBA5B1287296E500EAEB37 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B3EBA5B2287296E500EAEB37 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B3EBA5B3287296E500EAEB37 /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B3EBA5B4287296E500EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EBA5B7287296E500EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBA5B8287296E500EAEB37 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3EBA5BA287296E500EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBA5BB287296E500EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBA5BC287296E500EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EBA5BE287296E500EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA5C0287296E500EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBA5C1287296E500EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBA5C3287296E500EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBA5C4287296E500EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBA5C5287296E500EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBA5C6287296E500EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBA5C7287296E500EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBA5C8287296E500EAEB37 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3EBA5CA287296E500EAEB37 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3EBA5CB287296E500EAEB37 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3EBA5CD287296E500EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBA5CE287296E500EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EBA5CF287296E500EAEB37 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3EBA5D0287296E500EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBA5D1287296E500EAEB37 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3EBA5D3287296E500EAEB37 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3EBA5D4287296E500EAEB37 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3EBA5D5287296E500EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBA5D6287296E500EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBA5D7287296E500EAEB37 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3EBA5D8287296E500EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EBA5D9287296E500EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EBA5DA287296E500EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBA5DC287296E500EAEB37 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3EBA5DD287296E500EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBA5DE287296E500EAEB37 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3EBA5DF287296E500EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EBA5E1287296E500EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBA5E2287296E500EAEB37 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3EBA5E4287296E500EAEB37 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3EBA5E5287296E500EAEB37 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3EBA5E7287296E500EAEB37 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3EBA5E8287296E500EAEB37 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3EBA5E9287296E500EAEB37 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3EBA5EA287296E500EAEB37 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3EBA5EB287296E500EAEB37 /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B3EBA5ED287296E500EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EBA5F0287296E500EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA5F3287296E500EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBA5F4287296E500EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBA5F5287296E500EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBA5F6287296E500EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA5F7287296E500EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBA5F8287296E500EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBA5F9287296E500EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBA5FB287296E500EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBA5FC287296E500EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA5FD287296E500EAEB37 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B3EBA5FF287296E500EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EBA600287296E500EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EBA601287296E500EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EBA602287296E500EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EBA603287296E500EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA604287296E500EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EBA606287296E500EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBA607287296E500EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EBA608287296E500EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EBA609287296E500EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA60A287296E500EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA60B287296E500EAEB37 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3EBA60C287296E500EAEB37 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3EBA60D287296E500EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EBA60E287296E500EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EBA60F287296E500EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA610287296E500EAEB37 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3EBA611287296E500EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EBA612287296E500EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EBA613287296E500EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA614287296E500EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EBA615287296E500EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EBA616287296E500EAEB37 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3EBA618287296E500EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EBA619287296E500EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EBA61A287296E500EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EBA61B287296E500EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EBA61C287296E500EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EBA61D287296E500EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EBA61E287296E500EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EBA61F287296E500EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EBA620287296E500EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA622287296E500EAEB37 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B3EBA623287296E500EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA624287296E500EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBA626287296E500EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EBA627287296E500EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EBA628287296E500EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EBA629287296E500EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EBA62A287296E500EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EBA62B287296E500EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EBA62C287296E500EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EBA62D287296E500EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EBA62E287296E500EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EBA62F287296E500EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EBA630287296E500EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EBA631287296E500EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EBA632287296E500EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EBA633287296E500EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EBA634287296E500EAEB37 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B3EBA635287296E500EAEB37 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B3EBA636287296E500EAEB37 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B3EBA638287296E500EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EBA639287296E500EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EBA63A287296E500EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EBA63B287296E500EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EBA63C287296E500EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EBA63D287296E500EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EBA63E287296E500EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EBA63F287296E500EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EBA640287296E500EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EBA641287296E500EAEB37 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3EBA642287296E500EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EBA643287296E500EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBA644287296E500EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA645287296E500EAEB37 /* opera_lr_dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_lr_dsp.h; sourceTree = ""; }; + B3EBA646287296E500EAEB37 /* lr_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lr_input.c; sourceTree = ""; }; + B3EBA648287296E500EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBA649287296E500EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBA64A287296E500EAEB37 /* retro_cdimage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_cdimage.c; sourceTree = ""; }; + B3EBA64B287296E500EAEB37 /* opera_lr_nvram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_lr_nvram.c; sourceTree = ""; }; + B3EBA64C287296E500EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; + B3EBA64D287296E500EAEB37 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = ""; }; + B3EBA64E287296E500EAEB37 /* opera_lr_dsp_regular copy.ic */ = {isa = PBXFileReference; lastKnownFileType = text; path = "opera_lr_dsp_regular copy.ic"; sourceTree = ""; }; + B3EBA64F287296E500EAEB37 /* cuefile copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cuefile copy.c"; sourceTree = ""; }; + B3EBA650287296E600EAEB37 /* libretro_core_options copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "libretro_core_options copy.h"; sourceTree = ""; }; + B3EBA651287296E600EAEB37 /* opera_lr_opts copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_lr_opts copy.c"; sourceTree = ""; }; + B3EBA652287296E600EAEB37 /* lr_input copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "lr_input copy.h"; sourceTree = ""; }; + B3EBA653287296E600EAEB37 /* opera_lr_nvram copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_lr_nvram copy.h"; sourceTree = ""; }; + B3EBA654287296E600EAEB37 /* .gitignore copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".gitignore copy"; sourceTree = ""; }; + B3EBA655287296E600EAEB37 /* opera_lr_callbacks copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_lr_callbacks copy.h"; sourceTree = ""; }; + B3EBA656287296E600EAEB37 /* .travis copy.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".travis copy.yml"; sourceTree = ""; }; + B3EBA657287296E600EAEB37 /* opera_lr_dsp copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_lr_dsp copy.h"; sourceTree = ""; }; + B3EBA658287296E600EAEB37 /* retro_cdimage copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_cdimage copy.h"; sourceTree = ""; }; + B3EBA659287296E600EAEB37 /* link copy.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = "link copy.T"; sourceTree = ""; }; + B3EBA65A287296E700EAEB37 /* libretro_core_options copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libretro_core_options copy.c"; sourceTree = ""; }; + B3EBA65B287296E700EAEB37 /* lr_input_crosshair copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "lr_input_crosshair copy.h"; sourceTree = ""; }; + B3EBA65C287296E700EAEB37 /* cuefile copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "cuefile copy.h"; sourceTree = ""; }; + B3EBA65D287296E700EAEB37 /* opera_lr_dsp_threaded copy.ic */ = {isa = PBXFileReference; lastKnownFileType = text; path = "opera_lr_dsp_threaded copy.ic"; sourceTree = ""; }; + B3EBA65E287296E700EAEB37 /* opera_lr_opts copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_lr_opts copy.h"; sourceTree = ""; }; + B3EBA65F287296E700EAEB37 /* libretro copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libretro copy.c"; sourceTree = ""; }; + B3EBA660287296E700EAEB37 /* lr_input copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "lr_input copy.c"; sourceTree = ""; }; + B3EBA661287296E700EAEB37 /* control copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "control copy"; sourceTree = ""; }; + B3EBA662287296E700EAEB37 /* lr_input_crosshair copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "lr_input_crosshair copy.c"; sourceTree = ""; }; + B3EBA663287296E800EAEB37 /* opera_lr_callbacks copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_lr_callbacks copy.c"; sourceTree = ""; }; + B3EBA664287296E800EAEB37 /* opera_lr_nvram copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_lr_nvram copy.c"; sourceTree = ""; }; + B3EBA665287296E800EAEB37 /* lr_input_descs copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "lr_input_descs copy.h"; sourceTree = ""; }; + B3EBA666287296E800EAEB37 /* Tupfile copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Tupfile copy"; sourceTree = ""; }; + B3EBA667287296E800EAEB37 /* .gitlab-ci copy.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci copy.yml"; sourceTree = ""; }; + B3EBA668287296E800EAEB37 /* Makefile copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile copy"; sourceTree = ""; }; + B3EBA669287296E800EAEB37 /* README copy.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README copy.md"; sourceTree = ""; }; + B3EBA66A287296E800EAEB37 /* retro_cdimage copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "retro_cdimage copy.c"; sourceTree = ""; }; + B3EBA66B287296E800EAEB37 /* Makefile copy.common */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Makefile copy.common"; sourceTree = ""; }; + B3EBA66C287296E900EAEB37 /* opera_lr_dsp copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_lr_dsp copy.c"; sourceTree = ""; }; + B3EBA66D287296E900EAEB37 /* lr_input_descs copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "lr_input_descs copy.c"; sourceTree = ""; }; + B3EBA66F287296E900EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBA670287296E900EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBA671287296E900EAEB37 /* Application copy.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Application copy.mk"; sourceTree = ""; }; + B3EBA672287296E900EAEB37 /* Android copy.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Android copy.mk"; sourceTree = ""; }; + B3EBA675287296E900EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA678287296E900EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBA679287296E900EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBA67A287296E900EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBA67B287296E900EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA67C287296E900EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBA67D287296E900EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBA67E287296E900EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBA680287296E900EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBA681287296E900EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA682287296E900EAEB37 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B3EBA684287296E900EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EBA685287296E900EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EBA686287296E900EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EBA687287296E900EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EBA688287296E900EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA689287296E900EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EBA68B287296E900EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBA68C287296E900EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EBA68D287296E900EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EBA68E287296E900EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA68F287296E900EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA690287296E900EAEB37 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3EBA691287296E900EAEB37 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3EBA692287296E900EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EBA693287296E900EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EBA694287296E900EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA695287296E900EAEB37 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3EBA696287296E900EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EBA697287296E900EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EBA698287296E900EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA699287296E900EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EBA69A287296E900EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EBA69B287296E900EAEB37 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3EBA69D287296E900EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EBA69E287296E900EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EBA69F287296E900EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EBA6A0287296E900EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EBA6A1287296E900EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EBA6A2287296E900EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EBA6A3287296E900EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EBA6A4287296E900EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EBA6A5287296E900EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA6A7287296E900EAEB37 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B3EBA6A8287296E900EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA6A9287296E900EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBA6AB287296E900EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EBA6AC287296E900EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EBA6AD287296E900EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EBA6AE287296E900EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EBA6AF287296E900EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EBA6B0287296E900EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EBA6B1287296E900EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EBA6B2287296E900EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EBA6B3287296E900EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EBA6B4287296E900EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EBA6B5287296E900EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EBA6B6287296E900EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EBA6B7287296E900EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EBA6B8287296E900EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EBA6B9287296E900EAEB37 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B3EBA6BA287296E900EAEB37 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B3EBA6BB287296E900EAEB37 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B3EBA6BD287296E900EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EBA6BE287296E900EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EBA6BF287296E900EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EBA6C0287296E900EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EBA6C1287296E900EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EBA6C2287296E900EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EBA6C3287296E900EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EBA6C4287296E900EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EBA6C5287296E900EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EBA6C6287296E900EAEB37 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3EBA6C7287296E900EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EBA6CA287296E900EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EBA6CC287296E900EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EBA6CD287296E900EAEB37 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3EBA6CF287296E900EAEB37 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3EBA6D1287296E900EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EBA6D2287296E900EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EBA6D3287296E900EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EBA6D4287296E900EAEB37 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3EBA6D5287296E900EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EBA6D7287296E900EAEB37 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3EBA6D8287296E900EAEB37 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3EBA6DA287296E900EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EBA6DB287296E900EAEB37 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3EBA6DD287296E900EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EBA6DE287296E900EAEB37 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B3EBA6DF287296E900EAEB37 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B3EBA6E0287296E900EAEB37 /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B3EBA6E1287296E900EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EBA6E4287296EA00EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBA6E5287296EA00EAEB37 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3EBA6E7287296EA00EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBA6E8287296EA00EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBA6E9287296EA00EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EBA6EB287296EA00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA6ED287296EA00EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBA6EE287296EA00EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBA6F0287296EA00EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBA6F1287296EA00EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBA6F2287296EA00EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBA6F3287296EA00EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBA6F4287296EA00EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBA6F5287296EA00EAEB37 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3EBA6F7287296EA00EAEB37 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3EBA6F8287296EA00EAEB37 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3EBA6FA287296EA00EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBA6FB287296EA00EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EBA6FC287296EA00EAEB37 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3EBA6FD287296EA00EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBA6FE287296EA00EAEB37 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3EBA700287296EA00EAEB37 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3EBA701287296EA00EAEB37 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3EBA702287296EA00EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBA703287296EA00EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBA704287296EA00EAEB37 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3EBA705287296EA00EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EBA706287296EA00EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EBA707287296EA00EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBA709287296EA00EAEB37 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3EBA70A287296EA00EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBA70B287296EA00EAEB37 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3EBA70C287296EA00EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EBA70E287296EA00EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBA70F287296EA00EAEB37 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3EBA711287296EA00EAEB37 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3EBA712287296EA00EAEB37 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3EBA714287296EA00EAEB37 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3EBA715287296EA00EAEB37 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3EBA716287296EA00EAEB37 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3EBA717287296EA00EAEB37 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3EBA718287296EA00EAEB37 /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B3EBA71A287296EA00EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EBA71C287296EA00EAEB37 /* opera_3do.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_3do.h; sourceTree = ""; }; + B3EBA71D287296EA00EAEB37 /* opera_region_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_region_i.h; sourceTree = ""; }; + B3EBA71E287296EA00EAEB37 /* opera_bitop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_bitop.h; sourceTree = ""; }; + B3EBA71F287296EA00EAEB37 /* opera_sport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_sport.h; sourceTree = ""; }; + B3EBA720287296EA00EAEB37 /* opera_diag_port.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_diag_port.c; sourceTree = ""; }; + B3EBA721287296EA00EAEB37 /* extern_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = extern_c.h; sourceTree = ""; }; + B3EBA722287296EA00EAEB37 /* opera_dsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_dsp.h; sourceTree = ""; }; + B3EBA723287296EA00EAEB37 /* opera_xbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_xbus.h; sourceTree = ""; }; + B3EBA724287296EA00EAEB37 /* opera_madam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_madam.c; sourceTree = ""; }; + B3EBA725287296EA00EAEB37 /* endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = endianness.h; sourceTree = ""; }; + B3EBA726287296EA00EAEB37 /* opera_pbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_pbus.c; sourceTree = ""; }; + B3EBA727287296EA00EAEB37 /* opera_vdlp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_vdlp.c; sourceTree = ""; }; + B3EBA728287296EA00EAEB37 /* opera_clio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_clio.h; sourceTree = ""; }; + B3EBA729287296EA00EAEB37 /* opera_nvram.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_nvram.h; sourceTree = ""; }; + B3EBA72A287296EA00EAEB37 /* hack_flags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hack_flags.h; sourceTree = ""; }; + B3EBA72B287296EA00EAEB37 /* opera_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_cdrom.c; sourceTree = ""; }; + B3EBA72C287296EA00EAEB37 /* bool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bool.h; sourceTree = ""; }; + B3EBA72D287296EA00EAEB37 /* opera_swi_hle_0x5XXXX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_swi_hle_0x5XXXX.h; sourceTree = ""; }; + B3EBA72E287296EA00EAEB37 /* opera_bios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_bios.c; sourceTree = ""; }; + B3EBA72F287296EA00EAEB37 /* opera_xbus_cdrom_plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_xbus_cdrom_plugin.c; sourceTree = ""; }; + B3EBA730287296EA00EAEB37 /* opera_fixedpoint_math.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_fixedpoint_math.c; sourceTree = ""; }; + B3EBA731287296EA00EAEB37 /* inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inline.h; sourceTree = ""; }; + B3EBA732287296EA00EAEB37 /* opera_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_arm.c; sourceTree = ""; }; + B3EBA733287296EA00EAEB37 /* opera_region.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_region.c; sourceTree = ""; }; + B3EBA734287296EA00EAEB37 /* opera_vdl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdl.h; sourceTree = ""; }; + B3EBA735287296EA00EAEB37 /* opera_clock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_clock.c; sourceTree = ""; }; + B3EBA736287296EA00EAEB37 /* opera_dsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_dsp.c; sourceTree = ""; }; + B3EBA737287296EA00EAEB37 /* static_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = static_assert.h; sourceTree = ""; }; + B3EBA738287296EA00EAEB37 /* opera_diag_port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_diag_port.h; sourceTree = ""; }; + B3EBA739287296EA00EAEB37 /* opera_bitop.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_bitop.c; sourceTree = ""; }; + B3EBA73A287296EA00EAEB37 /* opera_sport.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_sport.c; sourceTree = ""; }; + B3EBA73B287296EA00EAEB37 /* opera_3do.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_3do.c; sourceTree = ""; }; + B3EBA73C287296EA00EAEB37 /* pbus.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = pbus.txt; sourceTree = ""; }; + B3EBA73D287296EA00EAEB37 /* opera_nvram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_nvram.c; sourceTree = ""; }; + B3EBA73E287296EA00EAEB37 /* opera_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_cdrom.h; sourceTree = ""; }; + B3EBA73F287296EA00EAEB37 /* opera_pbus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_pbus.h; sourceTree = ""; }; + B3EBA740287296EA00EAEB37 /* opera_clio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_clio.c; sourceTree = ""; }; + B3EBA741287296EA00EAEB37 /* opera_vdlp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdlp.h; sourceTree = ""; }; + B3EBA742287296EA00EAEB37 /* opera_dsp2_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_dsp2_i.h; sourceTree = ""; }; + B3EBA743287296EA00EAEB37 /* opera_vdlp_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_vdlp_i.h; sourceTree = ""; }; + B3EBA744287296EA00EAEB37 /* opera_madam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_madam.h; sourceTree = ""; }; + B3EBA745287296EA00EAEB37 /* opera_xbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opera_xbus.c; sourceTree = ""; }; + B3EBA746287296EA00EAEB37 /* opera_bios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_bios.h; sourceTree = ""; }; + B3EBA747287296EA00EAEB37 /* opera_xbus_cdrom_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_xbus_cdrom_plugin.h; sourceTree = ""; }; + B3EBA748287296EA00EAEB37 /* opera_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_core.h; sourceTree = ""; }; + B3EBA749287296EA00EAEB37 /* opera_arm_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_arm_core.h; sourceTree = ""; }; + B3EBA74A287296EA00EAEB37 /* opera_region.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_region.h; sourceTree = ""; }; + B3EBA74B287296EA00EAEB37 /* opera_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_arm.h; sourceTree = ""; }; + B3EBA74C287296EA00EAEB37 /* opera_clock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_clock.h; sourceTree = ""; }; + B3EBA74D287296EA00EAEB37 /* opera_fixedpoint_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opera_fixedpoint_math.h; sourceTree = ""; }; + B3EBA74E287296EA00EAEB37 /* static_assert copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "static_assert copy.h"; sourceTree = ""; }; + B3EBA74F287296EA00EAEB37 /* opera_diag_port copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_diag_port copy.c"; sourceTree = ""; }; + B3EBA750287296EA00EAEB37 /* opera_core copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_core copy.h"; sourceTree = ""; }; + B3EBA751287296EB00EAEB37 /* opera_sport copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_sport copy.c"; sourceTree = ""; }; + B3EBA752287296EB00EAEB37 /* opera_fixedpoint_math copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_fixedpoint_math copy.c"; sourceTree = ""; }; + B3EBA753287296EB00EAEB37 /* opera_region_i copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_region_i copy.h"; sourceTree = ""; }; + B3EBA754287296EB00EAEB37 /* opera_3do copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_3do copy.c"; sourceTree = ""; }; + B3EBA755287296EB00EAEB37 /* opera_clio copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_clio copy.h"; sourceTree = ""; }; + B3EBA756287296EB00EAEB37 /* bool copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "bool copy.h"; sourceTree = ""; }; + B3EBA757287296EB00EAEB37 /* hack_flags copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "hack_flags copy.h"; sourceTree = ""; }; + B3EBA758287296EC00EAEB37 /* opera_cdrom copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_cdrom copy.c"; sourceTree = ""; }; + B3EBA759287296EC00EAEB37 /* opera_xbus copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_xbus copy.c"; sourceTree = ""; }; + B3EBA75A287296EC00EAEB37 /* opera_sport copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_sport copy.h"; sourceTree = ""; }; + B3EBA75B287296EC00EAEB37 /* opera_clio copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_clio copy.c"; sourceTree = ""; }; + B3EBA75C287296EC00EAEB37 /* opera_vdl copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_vdl copy.h"; sourceTree = ""; }; + B3EBA75D287296EC00EAEB37 /* opera_vdlp copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_vdlp copy.h"; sourceTree = ""; }; + B3EBA75E287296EC00EAEB37 /* opera_vdlp_i copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_vdlp_i copy.h"; sourceTree = ""; }; + B3EBA75F287296EC00EAEB37 /* opera_bitop copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_bitop copy.h"; sourceTree = ""; }; + B3EBA760287296EC00EAEB37 /* opera_clock copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_clock copy.h"; sourceTree = ""; }; + B3EBA761287296EC00EAEB37 /* opera_dsp copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_dsp copy.h"; sourceTree = ""; }; + B3EBA762287296EC00EAEB37 /* opera_fixedpoint_math copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_fixedpoint_math copy.h"; sourceTree = ""; }; + B3EBA763287296EC00EAEB37 /* opera_nvram copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_nvram copy.c"; sourceTree = ""; }; + B3EBA764287296ED00EAEB37 /* opera_madam copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_madam copy.c"; sourceTree = ""; }; + B3EBA765287296ED00EAEB37 /* opera_nvram copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_nvram copy.h"; sourceTree = ""; }; + B3EBA766287296ED00EAEB37 /* opera_swi_hle_0x5XXXX copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_swi_hle_0x5XXXX copy.h"; sourceTree = ""; }; + B3EBA767287296ED00EAEB37 /* opera_dsp2_i copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_dsp2_i copy.h"; sourceTree = ""; }; + B3EBA768287296ED00EAEB37 /* opera_diag_port copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_diag_port copy.h"; sourceTree = ""; }; + B3EBA769287296ED00EAEB37 /* pbus copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "pbus copy.txt"; sourceTree = ""; }; + B3EBA76A287296ED00EAEB37 /* opera_bios copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_bios copy.h"; sourceTree = ""; }; + B3EBA76B287296ED00EAEB37 /* endianness copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "endianness copy.h"; sourceTree = ""; }; + B3EBA76C287296ED00EAEB37 /* opera_arm copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_arm copy.h"; sourceTree = ""; }; + B3EBA76D287296ED00EAEB37 /* opera_dsp copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_dsp copy.c"; sourceTree = ""; }; + B3EBA76E287296ED00EAEB37 /* opera_xbus_cdrom_plugin copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_xbus_cdrom_plugin copy.c"; sourceTree = ""; }; + B3EBA76F287296ED00EAEB37 /* opera_cdrom copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_cdrom copy.h"; sourceTree = ""; }; + B3EBA770287296ED00EAEB37 /* opera_pbus copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_pbus copy.h"; sourceTree = ""; }; + B3EBA771287296EE00EAEB37 /* opera_madam copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_madam copy.h"; sourceTree = ""; }; + B3EBA772287296EE00EAEB37 /* opera_xbus_cdrom_plugin copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_xbus_cdrom_plugin copy.h"; sourceTree = ""; }; + B3EBA773287296EE00EAEB37 /* opera_vdlp copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_vdlp copy.c"; sourceTree = ""; }; + B3EBA774287296EE00EAEB37 /* opera_region copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_region copy.c"; sourceTree = ""; }; + B3EBA775287296EE00EAEB37 /* opera_clock copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_clock copy.c"; sourceTree = ""; }; + B3EBA776287296EE00EAEB37 /* opera_region copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_region copy.h"; sourceTree = ""; }; + B3EBA777287296EE00EAEB37 /* opera_arm_core copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_arm_core copy.h"; sourceTree = ""; }; + B3EBA778287296EE00EAEB37 /* opera_bios copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_bios copy.c"; sourceTree = ""; }; + B3EBA779287296EE00EAEB37 /* opera_3do copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_3do copy.h"; sourceTree = ""; }; + B3EBA77A287296EE00EAEB37 /* opera_bitop copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_bitop copy.c"; sourceTree = ""; }; + B3EBA77B287296EE00EAEB37 /* extern_c copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "extern_c copy.h"; sourceTree = ""; }; + B3EBA77C287296EE00EAEB37 /* opera_arm copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_arm copy.c"; sourceTree = ""; }; + B3EBA77D287296EE00EAEB37 /* inline copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "inline copy.h"; sourceTree = ""; }; + B3EBA77E287296EF00EAEB37 /* opera_xbus copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "opera_xbus copy.h"; sourceTree = ""; }; + B3EBA77F287296EF00EAEB37 /* opera_pbus copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "opera_pbus copy.c"; sourceTree = ""; }; + B3EBA781287296EF00EAEB37 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B3EBA782287296EF00EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA783287296EF00EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBA785287296EF00EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EBA786287296EF00EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EBA787287296EF00EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EBA788287296EF00EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EBA789287296EF00EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EBA78A287296EF00EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EBA78B287296EF00EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EBA78C287296EF00EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EBA78D287296EF00EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EBA78E287296EF00EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EBA78F287296EF00EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EBA790287296EF00EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EBA791287296EF00EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EBA792287296EF00EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EBA793287296EF00EAEB37 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B3EBA794287296EF00EAEB37 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B3EBA795287296EF00EAEB37 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B3EBA797287296EF00EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EBA798287296EF00EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EBA799287296EF00EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EBA79A287296EF00EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EBA79B287296EF00EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EBA79C287296EF00EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EBA79D287296EF00EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EBA79E287296EF00EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EBA79F287296EF00EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EBA7A0287296EF00EAEB37 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3EBA7A1287296EF00EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EBA7A2287296EF00EAEB37 /* lzma copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma copy.txt"; sourceTree = ""; }; + B3EBA7A3287296EF00EAEB37 /* CMakeLists copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "CMakeLists copy.txt"; sourceTree = ""; }; + B3EBA7A4287296F000EAEB37 /* LICENSE copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE copy"; sourceTree = ""; }; + B3EBA7A5287296F000EAEB37 /* lzma copy.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "lzma copy.vcxproj"; sourceTree = ""; }; + B3EBA7A6287296F000EAEB37 /* lzma.vcxproj copy.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "lzma.vcxproj copy.filters"; sourceTree = ""; }; + B3EBA7A7287296F000EAEB37 /* lzma-history copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history copy.txt"; sourceTree = ""; }; + B3EBA7A9287296F000EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBA7AA287296F000EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EBA7AB287296F000EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EBA7AC287296F000EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA7AD287296F000EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA7AE287296F000EAEB37 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3EBA7AF287296F000EAEB37 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3EBA7B0287296F000EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EBA7B1287296F000EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EBA7B2287296F000EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA7B3287296F000EAEB37 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3EBA7B4287296F000EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EBA7B5287296F000EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EBA7B6287296F000EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA7B7287296F000EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EBA7B8287296F000EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EBA7B9287296F000EAEB37 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3EBA7BB287296F000EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EBA7BC287296F000EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EBA7BD287296F000EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EBA7BE287296F000EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EBA7BF287296F000EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EBA7C0287296F000EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EBA7C1287296F000EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EBA7C2287296F000EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EBA7C3287296F000EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA7C4287296F000EAEB37 /* FAQ copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "FAQ copy"; sourceTree = ""; }; + B3EBA7C5287296F000EAEB37 /* inflate copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "inflate copy.h"; sourceTree = ""; }; + B3EBA7C6287296F000EAEB37 /* inftrees copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "inftrees copy.c"; sourceTree = ""; }; + B3EBA7C7287296F000EAEB37 /* inffixed copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "inffixed copy.h"; sourceTree = ""; }; + B3EBA7C8287296F000EAEB37 /* zutil copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "zutil copy.h"; sourceTree = ""; }; + B3EBA7C9287296F000EAEB37 /* adler32 copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "adler32 copy.c"; sourceTree = ""; }; + B3EBA7CA287296F100EAEB37 /* inftrees copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "inftrees copy.h"; sourceTree = ""; }; + B3EBA7CB287296F100EAEB37 /* gzguts copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gzguts copy.h"; sourceTree = ""; }; + B3EBA7CC287296F100EAEB37 /* zconf copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "zconf copy.h"; sourceTree = ""; }; + B3EBA7CD287296F100EAEB37 /* ChangeLog copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ChangeLog copy"; sourceTree = ""; }; + B3EBA7CE287296F100EAEB37 /* configure copy */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "configure copy"; sourceTree = ""; }; + B3EBA7CF287296F100EAEB37 /* inflate copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "inflate copy.c"; sourceTree = ""; }; + B3EBA7D0287296F100EAEB37 /* inffast copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "inffast copy.c"; sourceTree = ""; }; + B3EBA7D1287296F100EAEB37 /* inffast copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "inffast copy.h"; sourceTree = ""; }; + B3EBA7D2287296F100EAEB37 /* README copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README copy"; sourceTree = ""; }; + B3EBA7D3287296F100EAEB37 /* zlib copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "zlib copy.h"; sourceTree = ""; }; + B3EBA7D4287296F100EAEB37 /* infback copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "infback copy.c"; sourceTree = ""; }; + B3EBA7D5287296F300EAEB37 /* INDEX copy */ = {isa = PBXFileReference; lastKnownFileType = text; path = "INDEX copy"; sourceTree = ""; }; + B3EBA7D6287296F300EAEB37 /* crc32 copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "crc32 copy.c"; sourceTree = ""; }; + B3EBA7D7287296F300EAEB37 /* crc32 copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "crc32 copy.h"; sourceTree = ""; }; + B3EBA7D8287296F300EAEB37 /* zutil copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "zutil copy.c"; sourceTree = ""; }; + B3EBA7DA287296F300EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA7DD287296F300EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBA7DE287296F300EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBA7DF287296F300EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBA7E0287296F300EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA7E1287296F300EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBA7E2287296F300EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBA7E3287296F300EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBA7E5287296F300EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBA7E6287296F300EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA7E7287296F300EAEB37 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B3EBA7E9287296F300EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EBA7EA287296F300EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EBA7EB287296F300EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EBA7EC287296F300EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EBA7ED287296F300EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA7EE287296F300EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EBA7EF287296F300EAEB37 /* README copy.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README copy.md"; sourceTree = ""; }; + B3EBA7F0287296F300EAEB37 /* CMakeLists copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "CMakeLists copy.txt"; sourceTree = ""; }; + B3EBA7F1287296F300EAEB37 /* LICENSE copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE copy.txt"; sourceTree = ""; }; + B3EBA7F3287296F300EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EBA7F4287296F300EAEB37 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B3EBA7F5287296F300EAEB37 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B3EBA7F6287296F300EAEB37 /* chd_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chd_stream.c; sourceTree = ""; }; + B3EBA7F7287296F300EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EBA7F8287296F300EAEB37 /* interface_stream copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "interface_stream copy.c"; sourceTree = ""; }; + B3EBA7F9287296F300EAEB37 /* chd_stream copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "chd_stream copy.c"; sourceTree = ""; }; + B3EBA7FA287296F400EAEB37 /* file_stream copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "file_stream copy.c"; sourceTree = ""; }; + B3EBA7FB287296F400EAEB37 /* file_stream_transforms copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "file_stream_transforms copy.c"; sourceTree = ""; }; + B3EBA7FC287296F400EAEB37 /* memory_stream copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "memory_stream copy.c"; sourceTree = ""; }; + B3EBA7FE287296F400EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EBA7FF287296F400EAEB37 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B3EBA800287296F400EAEB37 /* file_path copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "file_path copy.c"; sourceTree = ""; }; + B3EBA801287296F400EAEB37 /* retro_dirent copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "retro_dirent copy.c"; sourceTree = ""; }; + B3EBA803287296F400EAEB37 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B3EBA804287296F400EAEB37 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B3EBA805287296F400EAEB37 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B3EBA806287296F400EAEB37 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B3EBA807287296F400EAEB37 /* ctr_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_pthread.h; sourceTree = ""; }; + B3EBA808287296F400EAEB37 /* rthreads copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "rthreads copy.c"; sourceTree = ""; }; + B3EBA809287296F400EAEB37 /* xenon_sdl_threads copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "xenon_sdl_threads copy.c"; sourceTree = ""; }; + B3EBA80A287296F400EAEB37 /* ctr_pthread copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ctr_pthread copy.h"; sourceTree = ""; }; + B3EBA80B287296F400EAEB37 /* psp_pthread copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "psp_pthread copy.h"; sourceTree = ""; }; + B3EBA80C287296F500EAEB37 /* gx_pthread copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "gx_pthread copy.h"; sourceTree = ""; }; + B3EBA80F287296F500EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBA810287296F500EAEB37 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B3EBA812287296F500EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBA813287296F500EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBA814287296F500EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EBA816287296F500EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA818287296F500EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBA819287296F500EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBA81B287296F500EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBA81C287296F500EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBA81D287296F500EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBA81E287296F500EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBA81F287296F500EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBA820287296F500EAEB37 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B3EBA822287296F500EAEB37 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3EBA823287296F500EAEB37 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3EBA825287296F500EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBA826287296F500EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EBA827287296F500EAEB37 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B3EBA828287296F500EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBA829287296F500EAEB37 /* retro_math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_math.h; sourceTree = ""; }; + B3EBA82B287296F500EAEB37 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3EBA82C287296F500EAEB37 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3EBA82D287296F500EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBA82E287296F500EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBA82F287296F500EAEB37 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3EBA830287296F500EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EBA831287296F500EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EBA832287296F500EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBA834287296F500EAEB37 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3EBA835287296F500EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBA836287296F500EAEB37 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B3EBA837287296F500EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EBA839287296F500EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBA83A287296F500EAEB37 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B3EBA83B287296F500EAEB37 /* retro_endianness copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_endianness copy.h"; sourceTree = ""; }; + B3EBA83C287296F600EAEB37 /* boolean copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "boolean copy.h"; sourceTree = ""; }; + B3EBA83D287296F600EAEB37 /* memmap copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "memmap copy.h"; sourceTree = ""; }; + B3EBA83E287296F600EAEB37 /* retro_common copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_common copy.h"; sourceTree = ""; }; + B3EBA83F287296F600EAEB37 /* retro_timers copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_timers copy.h"; sourceTree = ""; }; + B3EBA840287296F600EAEB37 /* retro_dirent copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_dirent copy.h"; sourceTree = ""; }; + B3EBA841287296F600EAEB37 /* retro_miscellaneous copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_miscellaneous copy.h"; sourceTree = ""; }; + B3EBA842287296F600EAEB37 /* memalign copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "memalign copy.h"; sourceTree = ""; }; + B3EBA843287296F600EAEB37 /* retro_math copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_math copy.h"; sourceTree = ""; }; + B3EBA844287296F600EAEB37 /* libretro copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "libretro copy.h"; sourceTree = ""; }; + B3EBA845287296F600EAEB37 /* retro_inline copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_inline copy.h"; sourceTree = ""; }; + B3EBA846287296F700EAEB37 /* retro_assert copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_assert copy.h"; sourceTree = ""; }; + B3EBA847287296F700EAEB37 /* retro_environment copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_environment copy.h"; sourceTree = ""; }; + B3EBA848287296F700EAEB37 /* retro_common_api copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "retro_common_api copy.h"; sourceTree = ""; }; + B3EBA84A287296F700EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EBA84B287296F700EAEB37 /* vfs_implementation_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation_cdrom.c; sourceTree = ""; }; + B3EBA84C287296F700EAEB37 /* vfs_implementation copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "vfs_implementation copy.c"; sourceTree = ""; }; + B3EBA84D287296F700EAEB37 /* vfs_implementation_cdrom copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "vfs_implementation_cdrom copy.c"; sourceTree = ""; }; + B3EBA84F287296F700EAEB37 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3EBA850287296F700EAEB37 /* cdrom copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "cdrom copy.c"; sourceTree = ""; }; + B3EBA852287296F700EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EBA853287296F700EAEB37 /* encoding_utf copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "encoding_utf copy.c"; sourceTree = ""; }; + B3EBA855287296F700EAEB37 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B3EBA856287296F700EAEB37 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B3EBA857287296F700EAEB37 /* memalign copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "memalign copy.c"; sourceTree = ""; }; + B3EBA858287296F700EAEB37 /* memmap copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "memmap copy.c"; sourceTree = ""; }; + B3EBA85A287296F700EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EBA85B287296F700EAEB37 /* stdstring copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "stdstring copy.c"; sourceTree = ""; }; + B3EBA85D287296F700EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EBA85E287296F700EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EBA85F287296F800EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EBA860287296F800EAEB37 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B3EBA861287296F800EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EBA862287296F800EAEB37 /* fopen_utf8 copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "fopen_utf8 copy.c"; sourceTree = ""; }; + B3EBA863287296F800EAEB37 /* compat_strl copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "compat_strl copy.c"; sourceTree = ""; }; + B3EBA864287296F800EAEB37 /* compat_posix_string copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "compat_posix_string copy.c"; sourceTree = ""; }; + B3EBA865287296F800EAEB37 /* compat_snprintf copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "compat_snprintf copy.c"; sourceTree = ""; }; + B3EBA866287296F800EAEB37 /* compat_strcasestr copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "compat_strcasestr copy.c"; sourceTree = ""; }; + B3EBA868287296F800EAEB37 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B3EBA869287296F800EAEB37 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B3EBA86A287296F800EAEB37 /* string_list copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "string_list copy.c"; sourceTree = ""; }; + B3EBA86B287296F800EAEB37 /* dir_list copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "dir_list copy.c"; sourceTree = ""; }; + B3EBA86D287296F800EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EBA86E287296F800EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EBA86F287296F800EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EBA870287296F800EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EBA871287296F800EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EBA872287296F800EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EBA873287296F800EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EBA874287296F800EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EBA875287296F800EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EBA876287296F800EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EBA877287296F800EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EBA878287296F800EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EBA879287296F800EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EBA87A287296F800EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EBA87B287296F900EAEB37 /* LzmaEnc copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LzmaEnc copy.h"; sourceTree = ""; }; + B3EBA87C287296F900EAEB37 /* Precomp copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Precomp copy.h"; sourceTree = ""; }; + B3EBA87D287296F900EAEB37 /* Lzma86 copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Lzma86 copy.h"; sourceTree = ""; }; + B3EBA87E287296F900EAEB37 /* LzFind copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LzFind copy.h"; sourceTree = ""; }; + B3EBA87F287296F900EAEB37 /* Compiler copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Compiler copy.h"; sourceTree = ""; }; + B3EBA880287296F900EAEB37 /* 7zTypes copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "7zTypes copy.h"; sourceTree = ""; }; + B3EBA881287296F900EAEB37 /* Sort copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Sort copy.h"; sourceTree = ""; }; + B3EBA882287296F900EAEB37 /* Alloc copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Alloc copy.h"; sourceTree = ""; }; + B3EBA883287296F900EAEB37 /* Delta copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Delta copy.h"; sourceTree = ""; }; + B3EBA884287296F900EAEB37 /* Bra copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bra copy.h"; sourceTree = ""; }; + B3EBA885287296FA00EAEB37 /* LzmaLib copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LzmaLib copy.h"; sourceTree = ""; }; + B3EBA886287296FA00EAEB37 /* LzmaDec copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LzmaDec copy.h"; sourceTree = ""; }; + B3EBA887287296FA00EAEB37 /* CpuArch copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CpuArch copy.h"; sourceTree = ""; }; + B3EBA888287296FA00EAEB37 /* LzHash copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LzHash copy.h"; sourceTree = ""; }; + B3EBA88A287296FA00EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EBA88B287296FA00EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EBA88C287296FA00EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EBA88D287296FA00EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EBA88E287296FA00EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EBA88F287296FA00EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EBA890287296FA00EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EBA891287296FA00EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EBA892287296FA00EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EBA893287296FA00EAEB37 /* Lzma86Enc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Enc.c; sourceTree = ""; }; + B3EBA894287296FA00EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EBA895287296FA00EAEB37 /* Lzma86Dec copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "Lzma86Dec copy.c"; sourceTree = ""; }; + B3EBA896287296FA00EAEB37 /* Alloc copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "Alloc copy.c"; sourceTree = ""; }; + B3EBA897287296FA00EAEB37 /* Sort copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "Sort copy.c"; sourceTree = ""; }; + B3EBA898287296FB00EAEB37 /* BraIA64 copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "BraIA64 copy.c"; sourceTree = ""; }; + B3EBAB84287296FD00EAEB37 /* Delta copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "Delta copy.c"; sourceTree = ""; }; + B3EBAB85287296FD00EAEB37 /* LzmaDec copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "LzmaDec copy.c"; sourceTree = ""; }; + B3EBAB86287296FD00EAEB37 /* Bra86 copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "Bra86 copy.c"; sourceTree = ""; }; + B3EBAB87287296FE00EAEB37 /* LzmaEnc copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "LzmaEnc copy.c"; sourceTree = ""; }; + B3EBAB88287296FE00EAEB37 /* LzFind copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "LzFind copy.c"; sourceTree = ""; }; + B3EBAB89287296FE00EAEB37 /* CpuArch copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "CpuArch copy.c"; sourceTree = ""; }; + B3EBAB8A287296FE00EAEB37 /* Lzma86Enc copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "Lzma86Enc copy.c"; sourceTree = ""; }; + B3EBAB8C287296FE00EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EBAB8D287296FE00EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EBAB8E287296FE00EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EBAB8F287296FE00EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EBAB90287296FE00EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EBAB91287296FE00EAEB37 /* rfc1950 copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rfc1950 copy.txt"; sourceTree = ""; }; + B3EBAB92287296FE00EAEB37 /* rfc1951 copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rfc1951 copy.txt"; sourceTree = ""; }; + B3EBAB93287296FE00EAEB37 /* rfc1952 copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "rfc1952 copy.txt"; sourceTree = ""; }; + B3EBAB94287296FE00EAEB37 /* txtvsbin copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "txtvsbin copy.txt"; sourceTree = ""; }; + B3EBAB95287296FF00EAEB37 /* algorithm copy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "algorithm copy.txt"; sourceTree = ""; }; + B3EBAB98287296FF00EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBAB99287296FF00EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBAB9A287296FF00EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBAB9B287296FF00EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBAB9C287296FF00EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBAB9D287296FF00EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBAB9E287296FF00EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBABA0287296FF00EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBABA2287296FF00EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EBABA3287296FF00EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EBABA4287296FF00EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EBABA5287296FF00EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EBABA6287296FF00EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBABA7287296FF00EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EBABA8287296FF00EAEB37 /* libchdr_chd copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libchdr_chd copy.c"; sourceTree = ""; }; + B3EBABA9287296FF00EAEB37 /* link copy.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = "link copy.T"; sourceTree = ""; }; + B3EBABAA287296FF00EAEB37 /* libchdr_cdrom copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libchdr_cdrom copy.c"; sourceTree = ""; }; + B3EBABAB287296FF00EAEB37 /* libchdr_bitstream copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libchdr_bitstream copy.c"; sourceTree = ""; }; + B3EBABAC287296FF00EAEB37 /* libchdr_flac copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libchdr_flac copy.c"; sourceTree = ""; }; + B3EBABAD287296FF00EAEB37 /* libchdr_huffman copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libchdr_huffman copy.c"; sourceTree = ""; }; + B3EBABAF287296FF00EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBABB0287296FF00EAEB37 /* file_path copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "file_path copy.h"; sourceTree = ""; }; + B3EBABB22872970000EAEB37 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B3EBABB32872970000EAEB37 /* rthreads copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "rthreads copy.h"; sourceTree = ""; }; + B3EBABB52872970000EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBABB62872970000EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBABB82872970000EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBABB92872970000EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBABBA2872970000EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBABBB2872970000EAEB37 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B3EBABBC2872970000EAEB37 /* fopen_utf8 copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "fopen_utf8 copy.h"; sourceTree = ""; }; + B3EBABBD2872970000EAEB37 /* strcasestr copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "strcasestr copy.h"; sourceTree = ""; }; + B3EBABBE2872970000EAEB37 /* posix_string copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "posix_string copy.h"; sourceTree = ""; }; + B3EBABBF2872970000EAEB37 /* msvc copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "msvc copy.h"; sourceTree = ""; }; + B3EBABC02872970000EAEB37 /* strl copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "strl copy.h"; sourceTree = ""; }; + B3EBABC22872970000EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBABC32872970000EAEB37 /* utf copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "utf copy.h"; sourceTree = ""; }; + B3EBABC52872970100EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBABC62872970100EAEB37 /* cdrom copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "cdrom copy.h"; sourceTree = ""; }; + B3EBABC82872970100EAEB37 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B3EBABC92872970100EAEB37 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B3EBABCA2872970100EAEB37 /* string_list copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "string_list copy.h"; sourceTree = ""; }; + B3EBABCB2872970100EAEB37 /* dir_list copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "dir_list copy.h"; sourceTree = ""; }; + B3EBABCD2872970100EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBABCE2872970100EAEB37 /* stdstring copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "stdstring copy.h"; sourceTree = ""; }; + B3EBABD02872970100EAEB37 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B3EBABD12872970100EAEB37 /* chd_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd_stream.h; sourceTree = ""; }; + B3EBABD22872970100EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBABD32872970100EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBABD42872970100EAEB37 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B3EBABD52872970100EAEB37 /* chd_stream copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "chd_stream copy.h"; sourceTree = ""; }; + B3EBABD62872970100EAEB37 /* interface_stream copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "interface_stream copy.h"; sourceTree = ""; }; + B3EBABD72872970100EAEB37 /* memory_stream copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "memory_stream copy.h"; sourceTree = ""; }; + B3EBABD82872970100EAEB37 /* file_stream_transforms copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "file_stream_transforms copy.h"; sourceTree = ""; }; + B3EBABD92872970100EAEB37 /* file_stream copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "file_stream copy.h"; sourceTree = ""; }; + B3EBABDB2872970200EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBABDC2872970200EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBABDD2872970200EAEB37 /* vfs_implementation_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation_cdrom.h; sourceTree = ""; }; + B3EBABDE2872970200EAEB37 /* vfs_implementation copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "vfs_implementation copy.h"; sourceTree = ""; }; + B3EBABDF2872970200EAEB37 /* vfs_implementation_cdrom copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "vfs_implementation_cdrom copy.h"; sourceTree = ""; }; + B3EBABE02872970200EAEB37 /* vfs copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "vfs copy.h"; sourceTree = ""; }; + B3EBABE22872970200EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBABE32872970200EAEB37 /* dr_flac copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "dr_flac copy.h"; sourceTree = ""; }; + B3EBABE52872970200EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBABE62872970200EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBABE72872970200EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBABE82872970200EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBABE92872970200EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBABEA2872970200EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBABEB2872970200EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBABEC2872970200EAEB37 /* huffman copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "huffman copy.h"; sourceTree = ""; }; + B3EBABED2872970200EAEB37 /* flac copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "flac copy.h"; sourceTree = ""; }; + B3EBABEE2872970200EAEB37 /* coretypes copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "coretypes copy.h"; sourceTree = ""; }; + B3EBABEF2872970300EAEB37 /* chd copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "chd copy.h"; sourceTree = ""; }; + B3EBABF02872970300EAEB37 /* chdconfig copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "chdconfig copy.h"; sourceTree = ""; }; + B3EBABF12872970300EAEB37 /* bitstream copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "bitstream copy.h"; sourceTree = ""; }; + B3EBABF22872970300EAEB37 /* cdrom copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "cdrom copy.h"; sourceTree = ""; }; + B3EBABF42872970300EAEB37 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B3EBABF52872970300EAEB37 /* stdint copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "stdint copy.h"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libopera.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libopera-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVOpera */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVOpera.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVOpera; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVOperaCore */ = { + isa = PBXGroup; + children = ( + B3EBA44C287296AD00EAEB37 /* opera-libretro */, + B37022C5287253B300B3F6DA /* PVOperaCore.h */, + B37022C6287253B300B3F6DA /* PVOperaCore.mm */, + ); + path = PVOperaCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EBA54F287296E400EAEB37 /* opera-libretro */, + B37022BE287253B300B3F6DA /* PVOpera */, + B37022C4287253B300B3F6DA /* PVOperaCore */, + B37022C3287253B300B3F6DA /* PVOpera.h */, + B37022BD287253B300B3F6DA /* PVOpera-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVOpera.framework */, + B30178D3207C901D0051B93D /* libopera.a */, + B3344BC32859E088006E6B3A /* libopera-libretro.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EBA44C287296AD00EAEB37 /* opera-libretro */ = { + isa = PBXGroup; + children = ( + B3EBA44D287296AD00EAEB37 /* Tupfile */, + B3EBA44E287296AD00EAEB37 /* libretro_core_options.c */, + B3EBA44F287296AD00EAEB37 /* libretro.c */, + B3EBA450287296AD00EAEB37 /* cuefile.c */, + B3EBA451287296AD00EAEB37 /* lr_input_crosshair.h */, + B3EBA452287296AD00EAEB37 /* opera_lr_callbacks.h */, + B3EBA453287296AD00EAEB37 /* opera_lr_dsp_regular.ic */, + B3EBA454287296AD00EAEB37 /* opera_lr_opts.h */, + B3EBA455287296AD00EAEB37 /* lr_input_descs.h */, + B3EBA456287296AD00EAEB37 /* retro_cdimage.h */, + B3EBA457287296AD00EAEB37 /* lr_input.h */, + B3EBA45B287296AD00EAEB37 /* Makefile */, + B3EBA45C287296AD00EAEB37 /* opera_lr_dsp_threaded.ic */, + B3EBA45D287296AD00EAEB37 /* opera_lr_dsp.c */, + B3EBA45E287296AD00EAEB37 /* Makefile.common */, + B3EBA45F287296AD00EAEB37 /* opera_lr_nvram.h */, + B3EBA460287296AD00EAEB37 /* README.md */, + B3EBA461287296AD00EAEB37 /* opera_lr_callbacks.c */, + B3EBA462287296AD00EAEB37 /* cuefile.h */, + B3EBA463287296AD00EAEB37 /* lr_input_crosshair.c */, + B3EBA464287296AD00EAEB37 /* .gitignore */, + B3EBA465287296AD00EAEB37 /* libretro_core_options.h */, + B3EBA466287296AD00EAEB37 /* libopera */, + B3EBA499287296AD00EAEB37 /* lr_input_descs.c */, + B3EBA49A287296AD00EAEB37 /* opera_lr_opts.c */, + B3EBA49B287296AD00EAEB37 /* libretro-common */, + B3EBA4EE287296AD00EAEB37 /* deps */, + B3EBA543287296AD00EAEB37 /* .gitlab-ci.yml */, + B3EBA544287296AD00EAEB37 /* link.T */, + B3EBA545287296AD00EAEB37 /* opera_lr_dsp.h */, + B3EBA546287296AD00EAEB37 /* lr_input.c */, + B3EBA547287296AD00EAEB37 /* jni */, + B3EBA54A287296AD00EAEB37 /* retro_cdimage.c */, + B3EBA54B287296AD00EAEB37 /* opera_lr_nvram.c */, + B3EBA54C287296AD00EAEB37 /* .travis.yml */, + B3EBA54D287296AD00EAEB37 /* control */, + ); + path = "opera-libretro"; + sourceTree = SOURCE_ROOT; + }; + B3EBA466287296AD00EAEB37 /* libopera */ = { + isa = PBXGroup; + children = ( + B3EBA467287296AD00EAEB37 /* opera_3do.h */, + B3EBA468287296AD00EAEB37 /* opera_region_i.h */, + B3EBA469287296AD00EAEB37 /* opera_bitop.h */, + B3EBA46A287296AD00EAEB37 /* opera_sport.h */, + B3EBA46B287296AD00EAEB37 /* opera_diag_port.c */, + B3EBA46C287296AD00EAEB37 /* extern_c.h */, + B3EBA46D287296AD00EAEB37 /* opera_dsp.h */, + B3EBA46E287296AD00EAEB37 /* opera_xbus.h */, + B3EBA46F287296AD00EAEB37 /* opera_madam.c */, + B3EBA470287296AD00EAEB37 /* endianness.h */, + B3EBA471287296AD00EAEB37 /* opera_pbus.c */, + B3EBA472287296AD00EAEB37 /* opera_vdlp.c */, + B3EBA473287296AD00EAEB37 /* opera_clio.h */, + B3EBA474287296AD00EAEB37 /* opera_nvram.h */, + B3EBA475287296AD00EAEB37 /* hack_flags.h */, + B3EBA476287296AD00EAEB37 /* opera_cdrom.c */, + B3EBA477287296AD00EAEB37 /* bool.h */, + B3EBA478287296AD00EAEB37 /* opera_swi_hle_0x5XXXX.h */, + B3EBA479287296AD00EAEB37 /* opera_bios.c */, + B3EBA47A287296AD00EAEB37 /* opera_xbus_cdrom_plugin.c */, + B3EBA47B287296AD00EAEB37 /* opera_fixedpoint_math.c */, + B3EBA47C287296AD00EAEB37 /* inline.h */, + B3EBA47D287296AD00EAEB37 /* opera_arm.c */, + B3EBA47E287296AD00EAEB37 /* opera_region.c */, + B3EBA47F287296AD00EAEB37 /* opera_vdl.h */, + B3EBA480287296AD00EAEB37 /* opera_clock.c */, + B3EBA481287296AD00EAEB37 /* opera_dsp.c */, + B3EBA482287296AD00EAEB37 /* static_assert.h */, + B3EBA483287296AD00EAEB37 /* opera_diag_port.h */, + B3EBA484287296AD00EAEB37 /* opera_bitop.c */, + B3EBA485287296AD00EAEB37 /* opera_sport.c */, + B3EBA486287296AD00EAEB37 /* opera_3do.c */, + B3EBA487287296AD00EAEB37 /* pbus.txt */, + B3EBA488287296AD00EAEB37 /* opera_nvram.c */, + B3EBA489287296AD00EAEB37 /* opera_cdrom.h */, + B3EBA48A287296AD00EAEB37 /* opera_pbus.h */, + B3EBA48B287296AD00EAEB37 /* opera_clio.c */, + B3EBA48C287296AD00EAEB37 /* opera_vdlp.h */, + B3EBA48D287296AD00EAEB37 /* opera_dsp2_i.h */, + B3EBA48E287296AD00EAEB37 /* opera_vdlp_i.h */, + B3EBA48F287296AD00EAEB37 /* opera_madam.h */, + B3EBA490287296AD00EAEB37 /* opera_xbus.c */, + B3EBA491287296AD00EAEB37 /* opera_bios.h */, + B3EBA492287296AD00EAEB37 /* opera_xbus_cdrom_plugin.h */, + B3EBA493287296AD00EAEB37 /* opera_core.h */, + B3EBA494287296AD00EAEB37 /* opera_arm_core.h */, + B3EBA495287296AD00EAEB37 /* opera_region.h */, + B3EBA496287296AD00EAEB37 /* opera_arm.h */, + B3EBA497287296AD00EAEB37 /* opera_clock.h */, + B3EBA498287296AD00EAEB37 /* opera_fixedpoint_math.h */, + ); + path = libopera; + sourceTree = ""; + }; + B3EBA49B287296AD00EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBA49C287296AD00EAEB37 /* encodings */, + B3EBA49E287296AD00EAEB37 /* vfs */, + B3EBA4A1287296AD00EAEB37 /* cdrom */, + B3EBA4A3287296AD00EAEB37 /* compat */, + B3EBA4A9287296AD00EAEB37 /* lists */, + B3EBA4AC287296AD00EAEB37 /* file */, + B3EBA4AF287296AD00EAEB37 /* streams */, + B3EBA4B5287296AD00EAEB37 /* include */, + B3EBA4E3287296AD00EAEB37 /* memmap */, + B3EBA4E6287296AD00EAEB37 /* rthreads */, + B3EBA4EC287296AD00EAEB37 /* string */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBA49C287296AD00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA49D287296AD00EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA49E287296AD00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA49F287296AD00EAEB37 /* vfs_implementation.c */, + B3EBA4A0287296AD00EAEB37 /* vfs_implementation_cdrom.c */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA4A1287296AD00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA4A2287296AD00EAEB37 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA4A3287296AD00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA4A4287296AD00EAEB37 /* compat_strl.c */, + B3EBA4A5287296AD00EAEB37 /* compat_posix_string.c */, + B3EBA4A6287296AD00EAEB37 /* compat_strcasestr.c */, + B3EBA4A7287296AD00EAEB37 /* compat_snprintf.c */, + B3EBA4A8287296AD00EAEB37 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA4A9287296AD00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA4AA287296AD00EAEB37 /* dir_list.c */, + B3EBA4AB287296AD00EAEB37 /* string_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA4AC287296AD00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA4AD287296AD00EAEB37 /* file_path.c */, + B3EBA4AE287296AD00EAEB37 /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B3EBA4AF287296AD00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA4B0287296AD00EAEB37 /* file_stream_transforms.c */, + B3EBA4B1287296AD00EAEB37 /* interface_stream.c */, + B3EBA4B2287296AD00EAEB37 /* memory_stream.c */, + B3EBA4B3287296AD00EAEB37 /* chd_stream.c */, + B3EBA4B4287296AD00EAEB37 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA4B5287296AD00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA4B6287296AD00EAEB37 /* encodings */, + B3EBA4B8287296AD00EAEB37 /* memalign.h */, + B3EBA4B9287296AD00EAEB37 /* vfs */, + B3EBA4BD287296AD00EAEB37 /* cdrom */, + B3EBA4BF287296AD00EAEB37 /* compat */, + B3EBA4C7287296AD00EAEB37 /* retro_common_api.h */, + B3EBA4C8287296AD00EAEB37 /* retro_timers.h */, + B3EBA4C9287296AD00EAEB37 /* lists */, + B3EBA4CC287296AD00EAEB37 /* file */, + B3EBA4CE287296AD00EAEB37 /* retro_environment.h */, + B3EBA4CF287296AD00EAEB37 /* retro_dirent.h */, + B3EBA4D0287296AD00EAEB37 /* retro_inline.h */, + B3EBA4D1287296AD00EAEB37 /* retro_math.h */, + B3EBA4D2287296AD00EAEB37 /* streams */, + B3EBA4D8287296AD00EAEB37 /* retro_miscellaneous.h */, + B3EBA4D9287296AD00EAEB37 /* boolean.h */, + B3EBA4DA287296AD00EAEB37 /* memmap.h */, + B3EBA4DB287296AD00EAEB37 /* rthreads */, + B3EBA4DD287296AD00EAEB37 /* libretro.h */, + B3EBA4DE287296AD00EAEB37 /* retro_common.h */, + B3EBA4DF287296AD00EAEB37 /* retro_assert.h */, + B3EBA4E0287296AD00EAEB37 /* string */, + B3EBA4E2287296AD00EAEB37 /* retro_endianness.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA4B6287296AD00EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA4B7287296AD00EAEB37 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA4B9287296AD00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA4BA287296AD00EAEB37 /* vfs.h */, + B3EBA4BB287296AD00EAEB37 /* vfs_implementation.h */, + B3EBA4BC287296AD00EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA4BD287296AD00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA4BE287296AD00EAEB37 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA4BF287296AD00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA4C0287296AD00EAEB37 /* strl.h */, + B3EBA4C1287296AD00EAEB37 /* strcasestr.h */, + B3EBA4C2287296AD00EAEB37 /* msvc */, + B3EBA4C4287296AD00EAEB37 /* fopen_utf8.h */, + B3EBA4C5287296AD00EAEB37 /* posix_string.h */, + B3EBA4C6287296AD00EAEB37 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA4C2287296AD00EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBA4C3287296AD00EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBA4C9287296AD00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA4CA287296AD00EAEB37 /* string_list.h */, + B3EBA4CB287296AD00EAEB37 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA4CC287296AD00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA4CD287296AD00EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBA4D2287296AD00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA4D3287296AD00EAEB37 /* memory_stream.h */, + B3EBA4D4287296AD00EAEB37 /* chd_stream.h */, + B3EBA4D5287296AD00EAEB37 /* file_stream.h */, + B3EBA4D6287296AD00EAEB37 /* file_stream_transforms.h */, + B3EBA4D7287296AD00EAEB37 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA4DB287296AD00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA4DC287296AD00EAEB37 /* rthreads.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA4E0287296AD00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA4E1287296AD00EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBA4E3287296AD00EAEB37 /* memmap */ = { + isa = PBXGroup; + children = ( + B3EBA4E4287296AD00EAEB37 /* memmap.c */, + B3EBA4E5287296AD00EAEB37 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3EBA4E6287296AD00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA4E7287296AD00EAEB37 /* rthreads.c */, + B3EBA4E8287296AD00EAEB37 /* gx_pthread.h */, + B3EBA4E9287296AD00EAEB37 /* psp_pthread.h */, + B3EBA4EA287296AD00EAEB37 /* xenon_sdl_threads.c */, + B3EBA4EB287296AD00EAEB37 /* ctr_pthread.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA4EC287296AD00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA4ED287296AD00EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EBA4EE287296AD00EAEB37 /* deps */ = { + isa = PBXGroup; + children = ( + B3EBA4EF287296AD00EAEB37 /* libchdr */, + B3EBA505287296AD00EAEB37 /* zlib-1.2.11 */, + B3EBA521287296AD00EAEB37 /* lzma-19.00 */, + ); + path = deps; + sourceTree = ""; + }; + B3EBA4EF287296AD00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA4F0287296AD00EAEB37 /* CMakeLists.txt */, + B3EBA4F1287296AD00EAEB37 /* include */, + B3EBA4FC287296AD00EAEB37 /* README.md */, + B3EBA4FD287296AD00EAEB37 /* LICENSE.txt */, + B3EBA4FE287296AD00EAEB37 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA4F1287296AD00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA4F2287296AD00EAEB37 /* libchdr */, + B3EBA4FA287296AD00EAEB37 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3EBA4F2287296AD00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA4F3287296AD00EAEB37 /* flac.h */, + B3EBA4F4287296AD00EAEB37 /* chdconfig.h */, + B3EBA4F5287296AD00EAEB37 /* bitstream.h */, + B3EBA4F6287296AD00EAEB37 /* cdrom.h */, + B3EBA4F7287296AD00EAEB37 /* chd.h */, + B3EBA4F8287296AD00EAEB37 /* huffman.h */, + B3EBA4F9287296AD00EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA4FA287296AD00EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBA4FB287296AD00EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBA4FE287296AD00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA4FF287296AD00EAEB37 /* libchdr_chd.c */, + B3EBA500287296AD00EAEB37 /* libchdr_bitstream.c */, + B3EBA501287296AD00EAEB37 /* libchdr_huffman.c */, + B3EBA502287296AD00EAEB37 /* libchdr_flac.c */, + B3EBA503287296AD00EAEB37 /* link.T */, + B3EBA504287296AD00EAEB37 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA505287296AD00EAEB37 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3EBA506287296AD00EAEB37 /* zutil.h */, + B3EBA507287296AD00EAEB37 /* inftrees.h */, + B3EBA508287296AD00EAEB37 /* inflate.c */, + B3EBA509287296AD00EAEB37 /* configure */, + B3EBA50A287296AD00EAEB37 /* ChangeLog */, + B3EBA50B287296AD00EAEB37 /* inffixed.h */, + B3EBA50C287296AD00EAEB37 /* FAQ */, + B3EBA50D287296AD00EAEB37 /* inffast.h */, + B3EBA50E287296AD00EAEB37 /* crc32.c */, + B3EBA50F287296AD00EAEB37 /* README */, + B3EBA510287296AD00EAEB37 /* infback.c */, + B3EBA511287296AD00EAEB37 /* zutil.c */, + B3EBA512287296AD00EAEB37 /* gzguts.h */, + B3EBA513287296AD00EAEB37 /* zlib.h */, + B3EBA514287296AD00EAEB37 /* inflate.h */, + B3EBA515287296AD00EAEB37 /* inftrees.c */, + B3EBA516287296AD00EAEB37 /* INDEX */, + B3EBA517287296AD00EAEB37 /* doc */, + B3EBA51D287296AD00EAEB37 /* crc32.h */, + B3EBA51E287296AD00EAEB37 /* inffast.c */, + B3EBA51F287296AD00EAEB37 /* adler32.c */, + B3EBA520287296AD00EAEB37 /* zconf.h */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3EBA517287296AD00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA518287296AD00EAEB37 /* rfc1952.txt */, + B3EBA519287296AD00EAEB37 /* rfc1950.txt */, + B3EBA51A287296AD00EAEB37 /* algorithm.txt */, + B3EBA51B287296AD00EAEB37 /* rfc1951.txt */, + B3EBA51C287296AD00EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA521287296AD00EAEB37 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B3EBA522287296AD00EAEB37 /* lzma.vcxproj.filters */, + B3EBA523287296AD00EAEB37 /* CMakeLists.txt */, + B3EBA524287296AD00EAEB37 /* LICENSE */, + B3EBA525287296AD00EAEB37 /* include */, + B3EBA534287296AD00EAEB37 /* lzma.vcxproj */, + B3EBA535287296AD00EAEB37 /* lzma.txt */, + B3EBA536287296AD00EAEB37 /* lzma-history.txt */, + B3EBA537287296AD00EAEB37 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B3EBA525287296AD00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA526287296AD00EAEB37 /* LzHash.h */, + B3EBA527287296AD00EAEB37 /* 7zTypes.h */, + B3EBA528287296AD00EAEB37 /* Compiler.h */, + B3EBA529287296AD00EAEB37 /* Precomp.h */, + B3EBA52A287296AD00EAEB37 /* CpuArch.h */, + B3EBA52B287296AD00EAEB37 /* Delta.h */, + B3EBA52C287296AD00EAEB37 /* LzmaLib.h */, + B3EBA52D287296AD00EAEB37 /* Lzma86.h */, + B3EBA52E287296AD00EAEB37 /* LzmaEnc.h */, + B3EBA52F287296AD00EAEB37 /* LzFind.h */, + B3EBA530287296AD00EAEB37 /* Bra.h */, + B3EBA531287296AD00EAEB37 /* Sort.h */, + B3EBA532287296AD00EAEB37 /* LzmaDec.h */, + B3EBA533287296AD00EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA537287296AD00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA538287296AD00EAEB37 /* LzmaEnc.c */, + B3EBA539287296AD00EAEB37 /* LzFind.c */, + B3EBA53A287296AD00EAEB37 /* Sort.c */, + B3EBA53B287296AD00EAEB37 /* Bra86.c */, + B3EBA53C287296AD00EAEB37 /* Alloc.c */, + B3EBA53D287296AD00EAEB37 /* LzmaDec.c */, + B3EBA53E287296AD00EAEB37 /* BraIA64.c */, + B3EBA53F287296AD00EAEB37 /* Lzma86Dec.c */, + B3EBA540287296AD00EAEB37 /* Delta.c */, + B3EBA541287296AD00EAEB37 /* Lzma86Enc.c */, + B3EBA542287296AD00EAEB37 /* CpuArch.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA547287296AD00EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBA548287296AD00EAEB37 /* Android.mk */, + B3EBA549287296AD00EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3EBA54F287296E400EAEB37 /* opera-libretro */ = { + isa = PBXGroup; + children = ( + B3EBA564287296E400EAEB37 /* .gitignore */, + B3EBA654287296E600EAEB37 /* .gitignore copy */, + B3EBA64D287296E500EAEB37 /* control */, + B3EBA661287296E700EAEB37 /* control copy */, + B3EBA55B287296E400EAEB37 /* Makefile */, + B3EBA668287296E800EAEB37 /* Makefile copy */, + B3EBA550287296E400EAEB37 /* Tupfile */, + B3EBA666287296E800EAEB37 /* Tupfile copy */, + B3EBA64F287296E500EAEB37 /* cuefile copy.c */, + B3EBA553287296E400EAEB37 /* cuefile.c */, + B3EBA65F287296E700EAEB37 /* libretro copy.c */, + B3EBA65A287296E700EAEB37 /* libretro_core_options copy.c */, + B3EBA551287296E400EAEB37 /* libretro_core_options.c */, + B3EBA552287296E400EAEB37 /* libretro.c */, + B3EBA660287296E700EAEB37 /* lr_input copy.c */, + B3EBA662287296E700EAEB37 /* lr_input_crosshair copy.c */, + B3EBA563287296E400EAEB37 /* lr_input_crosshair.c */, + B3EBA66D287296E900EAEB37 /* lr_input_descs copy.c */, + B3EBA599287296E500EAEB37 /* lr_input_descs.c */, + B3EBA646287296E500EAEB37 /* lr_input.c */, + B3EBA663287296E800EAEB37 /* opera_lr_callbacks copy.c */, + B3EBA561287296E400EAEB37 /* opera_lr_callbacks.c */, + B3EBA66C287296E900EAEB37 /* opera_lr_dsp copy.c */, + B3EBA55D287296E400EAEB37 /* opera_lr_dsp.c */, + B3EBA664287296E800EAEB37 /* opera_lr_nvram copy.c */, + B3EBA64B287296E500EAEB37 /* opera_lr_nvram.c */, + B3EBA651287296E600EAEB37 /* opera_lr_opts copy.c */, + B3EBA59A287296E500EAEB37 /* opera_lr_opts.c */, + B3EBA66A287296E800EAEB37 /* retro_cdimage copy.c */, + B3EBA64A287296E500EAEB37 /* retro_cdimage.c */, + B3EBA66B287296E800EAEB37 /* Makefile copy.common */, + B3EBA55E287296E400EAEB37 /* Makefile.common */, + B3EBA65C287296E700EAEB37 /* cuefile copy.h */, + B3EBA562287296E400EAEB37 /* cuefile.h */, + B3EBA650287296E600EAEB37 /* libretro_core_options copy.h */, + B3EBA565287296E400EAEB37 /* libretro_core_options.h */, + B3EBA652287296E600EAEB37 /* lr_input copy.h */, + B3EBA65B287296E700EAEB37 /* lr_input_crosshair copy.h */, + B3EBA554287296E400EAEB37 /* lr_input_crosshair.h */, + B3EBA665287296E800EAEB37 /* lr_input_descs copy.h */, + B3EBA558287296E400EAEB37 /* lr_input_descs.h */, + B3EBA55A287296E400EAEB37 /* lr_input.h */, + B3EBA655287296E600EAEB37 /* opera_lr_callbacks copy.h */, + B3EBA555287296E400EAEB37 /* opera_lr_callbacks.h */, + B3EBA657287296E600EAEB37 /* opera_lr_dsp copy.h */, + B3EBA645287296E500EAEB37 /* opera_lr_dsp.h */, + B3EBA653287296E600EAEB37 /* opera_lr_nvram copy.h */, + B3EBA55F287296E400EAEB37 /* opera_lr_nvram.h */, + B3EBA65E287296E700EAEB37 /* opera_lr_opts copy.h */, + B3EBA557287296E400EAEB37 /* opera_lr_opts.h */, + B3EBA658287296E600EAEB37 /* retro_cdimage copy.h */, + B3EBA559287296E400EAEB37 /* retro_cdimage.h */, + B3EBA64E287296E500EAEB37 /* opera_lr_dsp_regular copy.ic */, + B3EBA556287296E400EAEB37 /* opera_lr_dsp_regular.ic */, + B3EBA65D287296E700EAEB37 /* opera_lr_dsp_threaded copy.ic */, + B3EBA55C287296E400EAEB37 /* opera_lr_dsp_threaded.ic */, + B3EBA669287296E800EAEB37 /* README copy.md */, + B3EBA560287296E400EAEB37 /* README.md */, + B3EBA659287296E600EAEB37 /* link copy.T */, + B3EBA644287296E500EAEB37 /* link.T */, + B3EBA667287296E800EAEB37 /* .gitlab-ci copy.yml */, + B3EBA643287296E500EAEB37 /* .gitlab-ci.yml */, + B3EBA656287296E600EAEB37 /* .travis copy.yml */, + B3EBA64C287296E500EAEB37 /* .travis.yml */, + B3EBA5EE287296E500EAEB37 /* deps */, + B3EBA673287296E900EAEB37 /* deps */, + B3EBA647287296E500EAEB37 /* jni */, + B3EBA66E287296E900EAEB37 /* jni */, + B3EBA566287296E400EAEB37 /* libopera */, + B3EBA71B287296EA00EAEB37 /* libopera */, + B3EBA59B287296E500EAEB37 /* libretro-common */, + B3EBA6C8287296E900EAEB37 /* libretro-common */, + ); + path = "opera-libretro"; + sourceTree = ""; + }; + B3EBA566287296E400EAEB37 /* libopera */ = { + isa = PBXGroup; + children = ( + B3EBA567287296E400EAEB37 /* opera_3do.h */, + B3EBA568287296E400EAEB37 /* opera_region_i.h */, + B3EBA569287296E400EAEB37 /* opera_bitop.h */, + B3EBA56A287296E400EAEB37 /* opera_sport.h */, + B3EBA56B287296E400EAEB37 /* opera_diag_port.c */, + B3EBA56C287296E400EAEB37 /* extern_c.h */, + B3EBA56D287296E400EAEB37 /* opera_dsp.h */, + B3EBA56E287296E400EAEB37 /* opera_xbus.h */, + B3EBA56F287296E400EAEB37 /* opera_madam.c */, + B3EBA570287296E400EAEB37 /* endianness.h */, + B3EBA571287296E400EAEB37 /* opera_pbus.c */, + B3EBA572287296E400EAEB37 /* opera_vdlp.c */, + B3EBA573287296E400EAEB37 /* opera_clio.h */, + B3EBA574287296E400EAEB37 /* opera_nvram.h */, + B3EBA575287296E400EAEB37 /* hack_flags.h */, + B3EBA576287296E400EAEB37 /* opera_cdrom.c */, + B3EBA577287296E400EAEB37 /* bool.h */, + B3EBA578287296E400EAEB37 /* opera_swi_hle_0x5XXXX.h */, + B3EBA579287296E400EAEB37 /* opera_bios.c */, + B3EBA57A287296E400EAEB37 /* opera_xbus_cdrom_plugin.c */, + B3EBA57B287296E400EAEB37 /* opera_fixedpoint_math.c */, + B3EBA57C287296E400EAEB37 /* inline.h */, + B3EBA57D287296E400EAEB37 /* opera_arm.c */, + B3EBA57E287296E400EAEB37 /* opera_region.c */, + B3EBA57F287296E400EAEB37 /* opera_vdl.h */, + B3EBA580287296E400EAEB37 /* opera_clock.c */, + B3EBA581287296E400EAEB37 /* opera_dsp.c */, + B3EBA582287296E400EAEB37 /* static_assert.h */, + B3EBA583287296E400EAEB37 /* opera_diag_port.h */, + B3EBA584287296E400EAEB37 /* opera_bitop.c */, + B3EBA585287296E400EAEB37 /* opera_sport.c */, + B3EBA586287296E400EAEB37 /* opera_3do.c */, + B3EBA587287296E400EAEB37 /* pbus.txt */, + B3EBA588287296E400EAEB37 /* opera_nvram.c */, + B3EBA589287296E400EAEB37 /* opera_cdrom.h */, + B3EBA58A287296E500EAEB37 /* opera_pbus.h */, + B3EBA58B287296E500EAEB37 /* opera_clio.c */, + B3EBA58C287296E500EAEB37 /* opera_vdlp.h */, + B3EBA58D287296E500EAEB37 /* opera_dsp2_i.h */, + B3EBA58E287296E500EAEB37 /* opera_vdlp_i.h */, + B3EBA58F287296E500EAEB37 /* opera_madam.h */, + B3EBA590287296E500EAEB37 /* opera_xbus.c */, + B3EBA591287296E500EAEB37 /* opera_bios.h */, + B3EBA592287296E500EAEB37 /* opera_xbus_cdrom_plugin.h */, + B3EBA593287296E500EAEB37 /* opera_core.h */, + B3EBA594287296E500EAEB37 /* opera_arm_core.h */, + B3EBA595287296E500EAEB37 /* opera_region.h */, + B3EBA596287296E500EAEB37 /* opera_arm.h */, + B3EBA597287296E500EAEB37 /* opera_clock.h */, + B3EBA598287296E500EAEB37 /* opera_fixedpoint_math.h */, + ); + path = libopera; + sourceTree = ""; + }; + B3EBA59B287296E500EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBA59C287296E500EAEB37 /* encodings */, + B3EBA59E287296E500EAEB37 /* vfs */, + B3EBA5A1287296E500EAEB37 /* cdrom */, + B3EBA5A3287296E500EAEB37 /* compat */, + B3EBA5A9287296E500EAEB37 /* lists */, + B3EBA5AC287296E500EAEB37 /* file */, + B3EBA5AF287296E500EAEB37 /* streams */, + B3EBA5B5287296E500EAEB37 /* include */, + B3EBA5E3287296E500EAEB37 /* memmap */, + B3EBA5E6287296E500EAEB37 /* rthreads */, + B3EBA5EC287296E500EAEB37 /* string */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBA59C287296E500EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA59D287296E500EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA59E287296E500EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA59F287296E500EAEB37 /* vfs_implementation.c */, + B3EBA5A0287296E500EAEB37 /* vfs_implementation_cdrom.c */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA5A1287296E500EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA5A2287296E500EAEB37 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA5A3287296E500EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA5A4287296E500EAEB37 /* compat_strl.c */, + B3EBA5A5287296E500EAEB37 /* compat_posix_string.c */, + B3EBA5A6287296E500EAEB37 /* compat_strcasestr.c */, + B3EBA5A7287296E500EAEB37 /* compat_snprintf.c */, + B3EBA5A8287296E500EAEB37 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA5A9287296E500EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA5AA287296E500EAEB37 /* dir_list.c */, + B3EBA5AB287296E500EAEB37 /* string_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA5AC287296E500EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA5AD287296E500EAEB37 /* file_path.c */, + B3EBA5AE287296E500EAEB37 /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B3EBA5AF287296E500EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA5B0287296E500EAEB37 /* file_stream_transforms.c */, + B3EBA5B1287296E500EAEB37 /* interface_stream.c */, + B3EBA5B2287296E500EAEB37 /* memory_stream.c */, + B3EBA5B3287296E500EAEB37 /* chd_stream.c */, + B3EBA5B4287296E500EAEB37 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA5B5287296E500EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA5B6287296E500EAEB37 /* encodings */, + B3EBA5B8287296E500EAEB37 /* memalign.h */, + B3EBA5B9287296E500EAEB37 /* vfs */, + B3EBA5BD287296E500EAEB37 /* cdrom */, + B3EBA5BF287296E500EAEB37 /* compat */, + B3EBA5C7287296E500EAEB37 /* retro_common_api.h */, + B3EBA5C8287296E500EAEB37 /* retro_timers.h */, + B3EBA5C9287296E500EAEB37 /* lists */, + B3EBA5CC287296E500EAEB37 /* file */, + B3EBA5CE287296E500EAEB37 /* retro_environment.h */, + B3EBA5CF287296E500EAEB37 /* retro_dirent.h */, + B3EBA5D0287296E500EAEB37 /* retro_inline.h */, + B3EBA5D1287296E500EAEB37 /* retro_math.h */, + B3EBA5D2287296E500EAEB37 /* streams */, + B3EBA5D8287296E500EAEB37 /* retro_miscellaneous.h */, + B3EBA5D9287296E500EAEB37 /* boolean.h */, + B3EBA5DA287296E500EAEB37 /* memmap.h */, + B3EBA5DB287296E500EAEB37 /* rthreads */, + B3EBA5DD287296E500EAEB37 /* libretro.h */, + B3EBA5DE287296E500EAEB37 /* retro_common.h */, + B3EBA5DF287296E500EAEB37 /* retro_assert.h */, + B3EBA5E0287296E500EAEB37 /* string */, + B3EBA5E2287296E500EAEB37 /* retro_endianness.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA5B6287296E500EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA5B7287296E500EAEB37 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA5B9287296E500EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA5BA287296E500EAEB37 /* vfs.h */, + B3EBA5BB287296E500EAEB37 /* vfs_implementation.h */, + B3EBA5BC287296E500EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA5BD287296E500EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA5BE287296E500EAEB37 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA5BF287296E500EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA5C0287296E500EAEB37 /* strl.h */, + B3EBA5C1287296E500EAEB37 /* strcasestr.h */, + B3EBA5C2287296E500EAEB37 /* msvc */, + B3EBA5C4287296E500EAEB37 /* fopen_utf8.h */, + B3EBA5C5287296E500EAEB37 /* posix_string.h */, + B3EBA5C6287296E500EAEB37 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA5C2287296E500EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBA5C3287296E500EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBA5C9287296E500EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA5CA287296E500EAEB37 /* string_list.h */, + B3EBA5CB287296E500EAEB37 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA5CC287296E500EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA5CD287296E500EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBA5D2287296E500EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA5D3287296E500EAEB37 /* memory_stream.h */, + B3EBA5D4287296E500EAEB37 /* chd_stream.h */, + B3EBA5D5287296E500EAEB37 /* file_stream.h */, + B3EBA5D6287296E500EAEB37 /* file_stream_transforms.h */, + B3EBA5D7287296E500EAEB37 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA5DB287296E500EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA5DC287296E500EAEB37 /* rthreads.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA5E0287296E500EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA5E1287296E500EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBA5E3287296E500EAEB37 /* memmap */ = { + isa = PBXGroup; + children = ( + B3EBA5E4287296E500EAEB37 /* memmap.c */, + B3EBA5E5287296E500EAEB37 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3EBA5E6287296E500EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA5E7287296E500EAEB37 /* rthreads.c */, + B3EBA5E8287296E500EAEB37 /* gx_pthread.h */, + B3EBA5E9287296E500EAEB37 /* psp_pthread.h */, + B3EBA5EA287296E500EAEB37 /* xenon_sdl_threads.c */, + B3EBA5EB287296E500EAEB37 /* ctr_pthread.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA5EC287296E500EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA5ED287296E500EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EBA5EE287296E500EAEB37 /* deps */ = { + isa = PBXGroup; + children = ( + B3EBA5EF287296E500EAEB37 /* libchdr */, + B3EBA605287296E500EAEB37 /* zlib-1.2.11 */, + B3EBA621287296E500EAEB37 /* lzma-19.00 */, + ); + path = deps; + sourceTree = ""; + }; + B3EBA5EF287296E500EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA5F0287296E500EAEB37 /* CMakeLists.txt */, + B3EBA5F1287296E500EAEB37 /* include */, + B3EBA5FC287296E500EAEB37 /* README.md */, + B3EBA5FD287296E500EAEB37 /* LICENSE.txt */, + B3EBA5FE287296E500EAEB37 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA5F1287296E500EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA5F2287296E500EAEB37 /* libchdr */, + B3EBA5FA287296E500EAEB37 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3EBA5F2287296E500EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA5F3287296E500EAEB37 /* flac.h */, + B3EBA5F4287296E500EAEB37 /* chdconfig.h */, + B3EBA5F5287296E500EAEB37 /* bitstream.h */, + B3EBA5F6287296E500EAEB37 /* cdrom.h */, + B3EBA5F7287296E500EAEB37 /* chd.h */, + B3EBA5F8287296E500EAEB37 /* huffman.h */, + B3EBA5F9287296E500EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA5FA287296E500EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBA5FB287296E500EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBA5FE287296E500EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA5FF287296E500EAEB37 /* libchdr_chd.c */, + B3EBA600287296E500EAEB37 /* libchdr_bitstream.c */, + B3EBA601287296E500EAEB37 /* libchdr_huffman.c */, + B3EBA602287296E500EAEB37 /* libchdr_flac.c */, + B3EBA603287296E500EAEB37 /* link.T */, + B3EBA604287296E500EAEB37 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA605287296E500EAEB37 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3EBA606287296E500EAEB37 /* zutil.h */, + B3EBA607287296E500EAEB37 /* inftrees.h */, + B3EBA608287296E500EAEB37 /* inflate.c */, + B3EBA609287296E500EAEB37 /* configure */, + B3EBA60A287296E500EAEB37 /* ChangeLog */, + B3EBA60B287296E500EAEB37 /* inffixed.h */, + B3EBA60C287296E500EAEB37 /* FAQ */, + B3EBA60D287296E500EAEB37 /* inffast.h */, + B3EBA60E287296E500EAEB37 /* crc32.c */, + B3EBA60F287296E500EAEB37 /* README */, + B3EBA610287296E500EAEB37 /* infback.c */, + B3EBA611287296E500EAEB37 /* zutil.c */, + B3EBA612287296E500EAEB37 /* gzguts.h */, + B3EBA613287296E500EAEB37 /* zlib.h */, + B3EBA614287296E500EAEB37 /* inflate.h */, + B3EBA615287296E500EAEB37 /* inftrees.c */, + B3EBA616287296E500EAEB37 /* INDEX */, + B3EBA617287296E500EAEB37 /* doc */, + B3EBA61D287296E500EAEB37 /* crc32.h */, + B3EBA61E287296E500EAEB37 /* inffast.c */, + B3EBA61F287296E500EAEB37 /* adler32.c */, + B3EBA620287296E500EAEB37 /* zconf.h */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3EBA617287296E500EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA618287296E500EAEB37 /* rfc1952.txt */, + B3EBA619287296E500EAEB37 /* rfc1950.txt */, + B3EBA61A287296E500EAEB37 /* algorithm.txt */, + B3EBA61B287296E500EAEB37 /* rfc1951.txt */, + B3EBA61C287296E500EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA621287296E500EAEB37 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B3EBA622287296E500EAEB37 /* lzma.vcxproj.filters */, + B3EBA623287296E500EAEB37 /* CMakeLists.txt */, + B3EBA624287296E500EAEB37 /* LICENSE */, + B3EBA625287296E500EAEB37 /* include */, + B3EBA634287296E500EAEB37 /* lzma.vcxproj */, + B3EBA635287296E500EAEB37 /* lzma.txt */, + B3EBA636287296E500EAEB37 /* lzma-history.txt */, + B3EBA637287296E500EAEB37 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B3EBA625287296E500EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA626287296E500EAEB37 /* LzHash.h */, + B3EBA627287296E500EAEB37 /* 7zTypes.h */, + B3EBA628287296E500EAEB37 /* Compiler.h */, + B3EBA629287296E500EAEB37 /* Precomp.h */, + B3EBA62A287296E500EAEB37 /* CpuArch.h */, + B3EBA62B287296E500EAEB37 /* Delta.h */, + B3EBA62C287296E500EAEB37 /* LzmaLib.h */, + B3EBA62D287296E500EAEB37 /* Lzma86.h */, + B3EBA62E287296E500EAEB37 /* LzmaEnc.h */, + B3EBA62F287296E500EAEB37 /* LzFind.h */, + B3EBA630287296E500EAEB37 /* Bra.h */, + B3EBA631287296E500EAEB37 /* Sort.h */, + B3EBA632287296E500EAEB37 /* LzmaDec.h */, + B3EBA633287296E500EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA637287296E500EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA638287296E500EAEB37 /* LzmaEnc.c */, + B3EBA639287296E500EAEB37 /* LzFind.c */, + B3EBA63A287296E500EAEB37 /* Sort.c */, + B3EBA63B287296E500EAEB37 /* Bra86.c */, + B3EBA63C287296E500EAEB37 /* Alloc.c */, + B3EBA63D287296E500EAEB37 /* LzmaDec.c */, + B3EBA63E287296E500EAEB37 /* BraIA64.c */, + B3EBA63F287296E500EAEB37 /* Lzma86Dec.c */, + B3EBA640287296E500EAEB37 /* Delta.c */, + B3EBA641287296E500EAEB37 /* Lzma86Enc.c */, + B3EBA642287296E500EAEB37 /* CpuArch.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA647287296E500EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBA648287296E500EAEB37 /* Android.mk */, + B3EBA649287296E500EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3EBA66E287296E900EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBA66F287296E900EAEB37 /* Android.mk */, + B3EBA671287296E900EAEB37 /* Application copy.mk */, + B3EBA672287296E900EAEB37 /* Android copy.mk */, + B3EBA670287296E900EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B3EBA673287296E900EAEB37 /* deps */ = { + isa = PBXGroup; + children = ( + B3EBA674287296E900EAEB37 /* libchdr */, + B3EBA7D9287296F300EAEB37 /* libchdr */, + B3EBA68A287296E900EAEB37 /* zlib-1.2.11 */, + B3EBA7A8287296F000EAEB37 /* zlib-1.2.11 */, + B3EBA780287296EF00EAEB37 /* lzma-19.00 */, + B3EBA6A6287296E900EAEB37 /* lzma-19.00 */, + ); + path = deps; + sourceTree = ""; + }; + B3EBA674287296E900EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA675287296E900EAEB37 /* CMakeLists.txt */, + B3EBA676287296E900EAEB37 /* include */, + B3EBA681287296E900EAEB37 /* README.md */, + B3EBA682287296E900EAEB37 /* LICENSE.txt */, + B3EBA683287296E900EAEB37 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA676287296E900EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA677287296E900EAEB37 /* libchdr */, + B3EBA67F287296E900EAEB37 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3EBA677287296E900EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA678287296E900EAEB37 /* flac.h */, + B3EBA679287296E900EAEB37 /* chdconfig.h */, + B3EBA67A287296E900EAEB37 /* bitstream.h */, + B3EBA67B287296E900EAEB37 /* cdrom.h */, + B3EBA67C287296E900EAEB37 /* chd.h */, + B3EBA67D287296E900EAEB37 /* huffman.h */, + B3EBA67E287296E900EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA67F287296E900EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBA680287296E900EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBA683287296E900EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA684287296E900EAEB37 /* libchdr_chd.c */, + B3EBA685287296E900EAEB37 /* libchdr_bitstream.c */, + B3EBA686287296E900EAEB37 /* libchdr_huffman.c */, + B3EBA687287296E900EAEB37 /* libchdr_flac.c */, + B3EBA688287296E900EAEB37 /* link.T */, + B3EBA689287296E900EAEB37 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA68A287296E900EAEB37 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3EBA68B287296E900EAEB37 /* zutil.h */, + B3EBA68C287296E900EAEB37 /* inftrees.h */, + B3EBA68D287296E900EAEB37 /* inflate.c */, + B3EBA68E287296E900EAEB37 /* configure */, + B3EBA68F287296E900EAEB37 /* ChangeLog */, + B3EBA690287296E900EAEB37 /* inffixed.h */, + B3EBA691287296E900EAEB37 /* FAQ */, + B3EBA692287296E900EAEB37 /* inffast.h */, + B3EBA693287296E900EAEB37 /* crc32.c */, + B3EBA694287296E900EAEB37 /* README */, + B3EBA695287296E900EAEB37 /* infback.c */, + B3EBA696287296E900EAEB37 /* zutil.c */, + B3EBA697287296E900EAEB37 /* gzguts.h */, + B3EBA698287296E900EAEB37 /* zlib.h */, + B3EBA699287296E900EAEB37 /* inflate.h */, + B3EBA69A287296E900EAEB37 /* inftrees.c */, + B3EBA69B287296E900EAEB37 /* INDEX */, + B3EBA69C287296E900EAEB37 /* doc */, + B3EBA6A2287296E900EAEB37 /* crc32.h */, + B3EBA6A3287296E900EAEB37 /* inffast.c */, + B3EBA6A4287296E900EAEB37 /* adler32.c */, + B3EBA6A5287296E900EAEB37 /* zconf.h */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3EBA69C287296E900EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA69D287296E900EAEB37 /* rfc1952.txt */, + B3EBA69E287296E900EAEB37 /* rfc1950.txt */, + B3EBA69F287296E900EAEB37 /* algorithm.txt */, + B3EBA6A0287296E900EAEB37 /* rfc1951.txt */, + B3EBA6A1287296E900EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA6A6287296E900EAEB37 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B3EBA6A7287296E900EAEB37 /* lzma.vcxproj.filters */, + B3EBA6A8287296E900EAEB37 /* CMakeLists.txt */, + B3EBA6A9287296E900EAEB37 /* LICENSE */, + B3EBA6AA287296E900EAEB37 /* include */, + B3EBA6B9287296E900EAEB37 /* lzma.vcxproj */, + B3EBA6BA287296E900EAEB37 /* lzma.txt */, + B3EBA6BB287296E900EAEB37 /* lzma-history.txt */, + B3EBA6BC287296E900EAEB37 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B3EBA6AA287296E900EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA6AB287296E900EAEB37 /* LzHash.h */, + B3EBA6AC287296E900EAEB37 /* 7zTypes.h */, + B3EBA6AD287296E900EAEB37 /* Compiler.h */, + B3EBA6AE287296E900EAEB37 /* Precomp.h */, + B3EBA6AF287296E900EAEB37 /* CpuArch.h */, + B3EBA6B0287296E900EAEB37 /* Delta.h */, + B3EBA6B1287296E900EAEB37 /* LzmaLib.h */, + B3EBA6B2287296E900EAEB37 /* Lzma86.h */, + B3EBA6B3287296E900EAEB37 /* LzmaEnc.h */, + B3EBA6B4287296E900EAEB37 /* LzFind.h */, + B3EBA6B5287296E900EAEB37 /* Bra.h */, + B3EBA6B6287296E900EAEB37 /* Sort.h */, + B3EBA6B7287296E900EAEB37 /* LzmaDec.h */, + B3EBA6B8287296E900EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA6BC287296E900EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA6BD287296E900EAEB37 /* LzmaEnc.c */, + B3EBA6BE287296E900EAEB37 /* LzFind.c */, + B3EBA6BF287296E900EAEB37 /* Sort.c */, + B3EBA6C0287296E900EAEB37 /* Bra86.c */, + B3EBA6C1287296E900EAEB37 /* Alloc.c */, + B3EBA6C2287296E900EAEB37 /* LzmaDec.c */, + B3EBA6C3287296E900EAEB37 /* BraIA64.c */, + B3EBA6C4287296E900EAEB37 /* Lzma86Dec.c */, + B3EBA6C5287296E900EAEB37 /* Delta.c */, + B3EBA6C6287296E900EAEB37 /* Lzma86Enc.c */, + B3EBA6C7287296E900EAEB37 /* CpuArch.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA6C8287296E900EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBA6C9287296E900EAEB37 /* encodings */, + B3EBA851287296F700EAEB37 /* encodings */, + B3EBA6CB287296E900EAEB37 /* vfs */, + B3EBA849287296F700EAEB37 /* vfs */, + B3EBA6CE287296E900EAEB37 /* cdrom */, + B3EBA84E287296F700EAEB37 /* cdrom */, + B3EBA6D0287296E900EAEB37 /* compat */, + B3EBA85C287296F700EAEB37 /* compat */, + B3EBA6D6287296E900EAEB37 /* lists */, + B3EBA867287296F800EAEB37 /* lists */, + B3EBA6D9287296E900EAEB37 /* file */, + B3EBA7FD287296F400EAEB37 /* file */, + B3EBA6DC287296E900EAEB37 /* streams */, + B3EBA7F2287296F300EAEB37 /* streams */, + B3EBA6E2287296E900EAEB37 /* include */, + B3EBA80D287296F500EAEB37 /* include */, + B3EBA710287296EA00EAEB37 /* memmap */, + B3EBA854287296F700EAEB37 /* memmap */, + B3EBA713287296EA00EAEB37 /* rthreads */, + B3EBA859287296F700EAEB37 /* string */, + B3EBA802287296F400EAEB37 /* rthreads */, + B3EBA719287296EA00EAEB37 /* string */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBA6C9287296E900EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA6CA287296E900EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA6CB287296E900EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA6CC287296E900EAEB37 /* vfs_implementation.c */, + B3EBA6CD287296E900EAEB37 /* vfs_implementation_cdrom.c */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA6CE287296E900EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA6CF287296E900EAEB37 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA6D0287296E900EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA6D1287296E900EAEB37 /* compat_strl.c */, + B3EBA6D2287296E900EAEB37 /* compat_posix_string.c */, + B3EBA6D3287296E900EAEB37 /* compat_strcasestr.c */, + B3EBA6D4287296E900EAEB37 /* compat_snprintf.c */, + B3EBA6D5287296E900EAEB37 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA6D6287296E900EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA6D7287296E900EAEB37 /* dir_list.c */, + B3EBA6D8287296E900EAEB37 /* string_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA6D9287296E900EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA6DA287296E900EAEB37 /* file_path.c */, + B3EBA6DB287296E900EAEB37 /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B3EBA6DC287296E900EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA6DD287296E900EAEB37 /* file_stream_transforms.c */, + B3EBA6DE287296E900EAEB37 /* interface_stream.c */, + B3EBA6DF287296E900EAEB37 /* memory_stream.c */, + B3EBA6E0287296E900EAEB37 /* chd_stream.c */, + B3EBA6E1287296E900EAEB37 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA6E2287296E900EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA6E3287296E900EAEB37 /* encodings */, + B3EBA6E5287296EA00EAEB37 /* memalign.h */, + B3EBA6E6287296EA00EAEB37 /* vfs */, + B3EBA6EA287296EA00EAEB37 /* cdrom */, + B3EBA6EC287296EA00EAEB37 /* compat */, + B3EBA6F4287296EA00EAEB37 /* retro_common_api.h */, + B3EBA6F5287296EA00EAEB37 /* retro_timers.h */, + B3EBA6F6287296EA00EAEB37 /* lists */, + B3EBA6F9287296EA00EAEB37 /* file */, + B3EBA6FB287296EA00EAEB37 /* retro_environment.h */, + B3EBA6FC287296EA00EAEB37 /* retro_dirent.h */, + B3EBA6FD287296EA00EAEB37 /* retro_inline.h */, + B3EBA6FE287296EA00EAEB37 /* retro_math.h */, + B3EBA6FF287296EA00EAEB37 /* streams */, + B3EBA705287296EA00EAEB37 /* retro_miscellaneous.h */, + B3EBA706287296EA00EAEB37 /* boolean.h */, + B3EBA707287296EA00EAEB37 /* memmap.h */, + B3EBA708287296EA00EAEB37 /* rthreads */, + B3EBA70A287296EA00EAEB37 /* libretro.h */, + B3EBA70B287296EA00EAEB37 /* retro_common.h */, + B3EBA70C287296EA00EAEB37 /* retro_assert.h */, + B3EBA70D287296EA00EAEB37 /* string */, + B3EBA70F287296EA00EAEB37 /* retro_endianness.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA6E3287296E900EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA6E4287296EA00EAEB37 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA6E6287296EA00EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA6E7287296EA00EAEB37 /* vfs.h */, + B3EBA6E8287296EA00EAEB37 /* vfs_implementation.h */, + B3EBA6E9287296EA00EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA6EA287296EA00EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA6EB287296EA00EAEB37 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA6EC287296EA00EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA6ED287296EA00EAEB37 /* strl.h */, + B3EBA6EE287296EA00EAEB37 /* strcasestr.h */, + B3EBA6EF287296EA00EAEB37 /* msvc */, + B3EBA6F1287296EA00EAEB37 /* fopen_utf8.h */, + B3EBA6F2287296EA00EAEB37 /* posix_string.h */, + B3EBA6F3287296EA00EAEB37 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA6EF287296EA00EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBA6F0287296EA00EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBA6F6287296EA00EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA6F7287296EA00EAEB37 /* string_list.h */, + B3EBA6F8287296EA00EAEB37 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA6F9287296EA00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA6FA287296EA00EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBA6FF287296EA00EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA700287296EA00EAEB37 /* memory_stream.h */, + B3EBA701287296EA00EAEB37 /* chd_stream.h */, + B3EBA702287296EA00EAEB37 /* file_stream.h */, + B3EBA703287296EA00EAEB37 /* file_stream_transforms.h */, + B3EBA704287296EA00EAEB37 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA708287296EA00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA709287296EA00EAEB37 /* rthreads.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA70D287296EA00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA70E287296EA00EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBA710287296EA00EAEB37 /* memmap */ = { + isa = PBXGroup; + children = ( + B3EBA711287296EA00EAEB37 /* memmap.c */, + B3EBA712287296EA00EAEB37 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3EBA713287296EA00EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA714287296EA00EAEB37 /* rthreads.c */, + B3EBA715287296EA00EAEB37 /* gx_pthread.h */, + B3EBA716287296EA00EAEB37 /* psp_pthread.h */, + B3EBA717287296EA00EAEB37 /* xenon_sdl_threads.c */, + B3EBA718287296EA00EAEB37 /* ctr_pthread.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA719287296EA00EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA71A287296EA00EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EBA71B287296EA00EAEB37 /* libopera */ = { + isa = PBXGroup; + children = ( + B3EBA71C287296EA00EAEB37 /* opera_3do.h */, + B3EBA779287296EE00EAEB37 /* opera_3do copy.h */, + B3EBA71D287296EA00EAEB37 /* opera_region_i.h */, + B3EBA753287296EB00EAEB37 /* opera_region_i copy.h */, + B3EBA71E287296EA00EAEB37 /* opera_bitop.h */, + B3EBA75F287296EC00EAEB37 /* opera_bitop copy.h */, + B3EBA71F287296EA00EAEB37 /* opera_sport.h */, + B3EBA75A287296EC00EAEB37 /* opera_sport copy.h */, + B3EBA720287296EA00EAEB37 /* opera_diag_port.c */, + B3EBA74F287296EA00EAEB37 /* opera_diag_port copy.c */, + B3EBA721287296EA00EAEB37 /* extern_c.h */, + B3EBA77B287296EE00EAEB37 /* extern_c copy.h */, + B3EBA722287296EA00EAEB37 /* opera_dsp.h */, + B3EBA761287296EC00EAEB37 /* opera_dsp copy.h */, + B3EBA723287296EA00EAEB37 /* opera_xbus.h */, + B3EBA77E287296EF00EAEB37 /* opera_xbus copy.h */, + B3EBA724287296EA00EAEB37 /* opera_madam.c */, + B3EBA764287296ED00EAEB37 /* opera_madam copy.c */, + B3EBA725287296EA00EAEB37 /* endianness.h */, + B3EBA76B287296ED00EAEB37 /* endianness copy.h */, + B3EBA726287296EA00EAEB37 /* opera_pbus.c */, + B3EBA77F287296EF00EAEB37 /* opera_pbus copy.c */, + B3EBA727287296EA00EAEB37 /* opera_vdlp.c */, + B3EBA773287296EE00EAEB37 /* opera_vdlp copy.c */, + B3EBA728287296EA00EAEB37 /* opera_clio.h */, + B3EBA755287296EB00EAEB37 /* opera_clio copy.h */, + B3EBA729287296EA00EAEB37 /* opera_nvram.h */, + B3EBA765287296ED00EAEB37 /* opera_nvram copy.h */, + B3EBA72A287296EA00EAEB37 /* hack_flags.h */, + B3EBA757287296EB00EAEB37 /* hack_flags copy.h */, + B3EBA72B287296EA00EAEB37 /* opera_cdrom.c */, + B3EBA758287296EC00EAEB37 /* opera_cdrom copy.c */, + B3EBA72C287296EA00EAEB37 /* bool.h */, + B3EBA756287296EB00EAEB37 /* bool copy.h */, + B3EBA72D287296EA00EAEB37 /* opera_swi_hle_0x5XXXX.h */, + B3EBA766287296ED00EAEB37 /* opera_swi_hle_0x5XXXX copy.h */, + B3EBA72E287296EA00EAEB37 /* opera_bios.c */, + B3EBA778287296EE00EAEB37 /* opera_bios copy.c */, + B3EBA72F287296EA00EAEB37 /* opera_xbus_cdrom_plugin.c */, + B3EBA76E287296ED00EAEB37 /* opera_xbus_cdrom_plugin copy.c */, + B3EBA730287296EA00EAEB37 /* opera_fixedpoint_math.c */, + B3EBA752287296EB00EAEB37 /* opera_fixedpoint_math copy.c */, + B3EBA731287296EA00EAEB37 /* inline.h */, + B3EBA77D287296EE00EAEB37 /* inline copy.h */, + B3EBA732287296EA00EAEB37 /* opera_arm.c */, + B3EBA77C287296EE00EAEB37 /* opera_arm copy.c */, + B3EBA733287296EA00EAEB37 /* opera_region.c */, + B3EBA774287296EE00EAEB37 /* opera_region copy.c */, + B3EBA734287296EA00EAEB37 /* opera_vdl.h */, + B3EBA75C287296EC00EAEB37 /* opera_vdl copy.h */, + B3EBA735287296EA00EAEB37 /* opera_clock.c */, + B3EBA775287296EE00EAEB37 /* opera_clock copy.c */, + B3EBA736287296EA00EAEB37 /* opera_dsp.c */, + B3EBA76D287296ED00EAEB37 /* opera_dsp copy.c */, + B3EBA737287296EA00EAEB37 /* static_assert.h */, + B3EBA74E287296EA00EAEB37 /* static_assert copy.h */, + B3EBA738287296EA00EAEB37 /* opera_diag_port.h */, + B3EBA768287296ED00EAEB37 /* opera_diag_port copy.h */, + B3EBA739287296EA00EAEB37 /* opera_bitop.c */, + B3EBA77A287296EE00EAEB37 /* opera_bitop copy.c */, + B3EBA73A287296EA00EAEB37 /* opera_sport.c */, + B3EBA751287296EB00EAEB37 /* opera_sport copy.c */, + B3EBA73B287296EA00EAEB37 /* opera_3do.c */, + B3EBA754287296EB00EAEB37 /* opera_3do copy.c */, + B3EBA73C287296EA00EAEB37 /* pbus.txt */, + B3EBA769287296ED00EAEB37 /* pbus copy.txt */, + B3EBA73D287296EA00EAEB37 /* opera_nvram.c */, + B3EBA763287296EC00EAEB37 /* opera_nvram copy.c */, + B3EBA73E287296EA00EAEB37 /* opera_cdrom.h */, + B3EBA76F287296ED00EAEB37 /* opera_cdrom copy.h */, + B3EBA73F287296EA00EAEB37 /* opera_pbus.h */, + B3EBA770287296ED00EAEB37 /* opera_pbus copy.h */, + B3EBA740287296EA00EAEB37 /* opera_clio.c */, + B3EBA75B287296EC00EAEB37 /* opera_clio copy.c */, + B3EBA741287296EA00EAEB37 /* opera_vdlp.h */, + B3EBA75D287296EC00EAEB37 /* opera_vdlp copy.h */, + B3EBA742287296EA00EAEB37 /* opera_dsp2_i.h */, + B3EBA767287296ED00EAEB37 /* opera_dsp2_i copy.h */, + B3EBA743287296EA00EAEB37 /* opera_vdlp_i.h */, + B3EBA75E287296EC00EAEB37 /* opera_vdlp_i copy.h */, + B3EBA744287296EA00EAEB37 /* opera_madam.h */, + B3EBA771287296EE00EAEB37 /* opera_madam copy.h */, + B3EBA745287296EA00EAEB37 /* opera_xbus.c */, + B3EBA759287296EC00EAEB37 /* opera_xbus copy.c */, + B3EBA746287296EA00EAEB37 /* opera_bios.h */, + B3EBA76A287296ED00EAEB37 /* opera_bios copy.h */, + B3EBA747287296EA00EAEB37 /* opera_xbus_cdrom_plugin.h */, + B3EBA772287296EE00EAEB37 /* opera_xbus_cdrom_plugin copy.h */, + B3EBA748287296EA00EAEB37 /* opera_core.h */, + B3EBA750287296EA00EAEB37 /* opera_core copy.h */, + B3EBA749287296EA00EAEB37 /* opera_arm_core.h */, + B3EBA777287296EE00EAEB37 /* opera_arm_core copy.h */, + B3EBA74A287296EA00EAEB37 /* opera_region.h */, + B3EBA776287296EE00EAEB37 /* opera_region copy.h */, + B3EBA74B287296EA00EAEB37 /* opera_arm.h */, + B3EBA76C287296ED00EAEB37 /* opera_arm copy.h */, + B3EBA74C287296EA00EAEB37 /* opera_clock.h */, + B3EBA762287296EC00EAEB37 /* opera_fixedpoint_math copy.h */, + B3EBA760287296EC00EAEB37 /* opera_clock copy.h */, + B3EBA74D287296EA00EAEB37 /* opera_fixedpoint_math.h */, + ); + path = libopera; + sourceTree = ""; + }; + B3EBA780287296EF00EAEB37 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B3EBA781287296EF00EAEB37 /* lzma.vcxproj.filters */, + B3EBA7A6287296F000EAEB37 /* lzma.vcxproj copy.filters */, + B3EBA782287296EF00EAEB37 /* CMakeLists.txt */, + B3EBA7A3287296EF00EAEB37 /* CMakeLists copy.txt */, + B3EBA783287296EF00EAEB37 /* LICENSE */, + B3EBA7A4287296F000EAEB37 /* LICENSE copy */, + B3EBA784287296EF00EAEB37 /* include */, + B3EBA86C287296F800EAEB37 /* include */, + B3EBA793287296EF00EAEB37 /* lzma.vcxproj */, + B3EBA7A5287296F000EAEB37 /* lzma copy.vcxproj */, + B3EBA794287296EF00EAEB37 /* lzma.txt */, + B3EBA7A2287296EF00EAEB37 /* lzma copy.txt */, + B3EBA795287296EF00EAEB37 /* lzma-history.txt */, + B3EBA889287296FA00EAEB37 /* src */, + B3EBA7A7287296F000EAEB37 /* lzma-history copy.txt */, + B3EBA796287296EF00EAEB37 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B3EBA784287296EF00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA785287296EF00EAEB37 /* LzHash.h */, + B3EBA786287296EF00EAEB37 /* 7zTypes.h */, + B3EBA787287296EF00EAEB37 /* Compiler.h */, + B3EBA788287296EF00EAEB37 /* Precomp.h */, + B3EBA789287296EF00EAEB37 /* CpuArch.h */, + B3EBA78A287296EF00EAEB37 /* Delta.h */, + B3EBA78B287296EF00EAEB37 /* LzmaLib.h */, + B3EBA78C287296EF00EAEB37 /* Lzma86.h */, + B3EBA78D287296EF00EAEB37 /* LzmaEnc.h */, + B3EBA78E287296EF00EAEB37 /* LzFind.h */, + B3EBA78F287296EF00EAEB37 /* Bra.h */, + B3EBA790287296EF00EAEB37 /* Sort.h */, + B3EBA791287296EF00EAEB37 /* LzmaDec.h */, + B3EBA792287296EF00EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA796287296EF00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA797287296EF00EAEB37 /* LzmaEnc.c */, + B3EBA798287296EF00EAEB37 /* LzFind.c */, + B3EBA799287296EF00EAEB37 /* Sort.c */, + B3EBA79A287296EF00EAEB37 /* Bra86.c */, + B3EBA79B287296EF00EAEB37 /* Alloc.c */, + B3EBA79C287296EF00EAEB37 /* LzmaDec.c */, + B3EBA79D287296EF00EAEB37 /* BraIA64.c */, + B3EBA79E287296EF00EAEB37 /* Lzma86Dec.c */, + B3EBA79F287296EF00EAEB37 /* Delta.c */, + B3EBA7A0287296EF00EAEB37 /* Lzma86Enc.c */, + B3EBA7A1287296EF00EAEB37 /* CpuArch.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA7A8287296F000EAEB37 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3EBA7A9287296F000EAEB37 /* zutil.h */, + B3EBA7C8287296F000EAEB37 /* zutil copy.h */, + B3EBA7AA287296F000EAEB37 /* inftrees.h */, + B3EBA7CA287296F100EAEB37 /* inftrees copy.h */, + B3EBA7AB287296F000EAEB37 /* inflate.c */, + B3EBA7CF287296F100EAEB37 /* inflate copy.c */, + B3EBA7AC287296F000EAEB37 /* configure */, + B3EBA7CE287296F100EAEB37 /* configure copy */, + B3EBA7AD287296F000EAEB37 /* ChangeLog */, + B3EBA7CD287296F100EAEB37 /* ChangeLog copy */, + B3EBA7AE287296F000EAEB37 /* inffixed.h */, + B3EBA7C7287296F000EAEB37 /* inffixed copy.h */, + B3EBA7AF287296F000EAEB37 /* FAQ */, + B3EBA7C4287296F000EAEB37 /* FAQ copy */, + B3EBA7B0287296F000EAEB37 /* inffast.h */, + B3EBA7D1287296F100EAEB37 /* inffast copy.h */, + B3EBA7B1287296F000EAEB37 /* crc32.c */, + B3EBA7D6287296F300EAEB37 /* crc32 copy.c */, + B3EBA7B2287296F000EAEB37 /* README */, + B3EBA7D2287296F100EAEB37 /* README copy */, + B3EBA7B3287296F000EAEB37 /* infback.c */, + B3EBA7D4287296F100EAEB37 /* infback copy.c */, + B3EBA7B4287296F000EAEB37 /* zutil.c */, + B3EBA7D8287296F300EAEB37 /* zutil copy.c */, + B3EBA7B5287296F000EAEB37 /* gzguts.h */, + B3EBA7CB287296F100EAEB37 /* gzguts copy.h */, + B3EBA7B6287296F000EAEB37 /* zlib.h */, + B3EBA7D3287296F100EAEB37 /* zlib copy.h */, + B3EBA7B7287296F000EAEB37 /* inflate.h */, + B3EBA7C5287296F000EAEB37 /* inflate copy.h */, + B3EBA7B8287296F000EAEB37 /* inftrees.c */, + B3EBA7C6287296F000EAEB37 /* inftrees copy.c */, + B3EBA7B9287296F000EAEB37 /* INDEX */, + B3EBA7D5287296F300EAEB37 /* INDEX copy */, + B3EBA7BA287296F000EAEB37 /* doc */, + B3EBAB8B287296FE00EAEB37 /* doc */, + B3EBA7C0287296F000EAEB37 /* crc32.h */, + B3EBA7D7287296F300EAEB37 /* crc32 copy.h */, + B3EBA7C1287296F000EAEB37 /* inffast.c */, + B3EBA7D0287296F100EAEB37 /* inffast copy.c */, + B3EBA7C2287296F000EAEB37 /* adler32.c */, + B3EBA7CC287296F100EAEB37 /* zconf copy.h */, + B3EBA7C9287296F000EAEB37 /* adler32 copy.c */, + B3EBA7C3287296F000EAEB37 /* zconf.h */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3EBA7BA287296F000EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA7BB287296F000EAEB37 /* rfc1952.txt */, + B3EBA7BC287296F000EAEB37 /* rfc1950.txt */, + B3EBA7BD287296F000EAEB37 /* algorithm.txt */, + B3EBA7BE287296F000EAEB37 /* rfc1951.txt */, + B3EBA7BF287296F000EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA7D9287296F300EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA7DA287296F300EAEB37 /* CMakeLists.txt */, + B3EBA7F0287296F300EAEB37 /* CMakeLists copy.txt */, + B3EBA7DB287296F300EAEB37 /* include */, + B3EBAB96287296FF00EAEB37 /* include */, + B3EBA7E6287296F300EAEB37 /* README.md */, + B3EBA7EF287296F300EAEB37 /* README copy.md */, + B3EBA7E7287296F300EAEB37 /* LICENSE.txt */, + B3EBABA1287296FF00EAEB37 /* src */, + B3EBA7F1287296F300EAEB37 /* LICENSE copy.txt */, + B3EBA7E8287296F300EAEB37 /* src */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA7DB287296F300EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA7DC287296F300EAEB37 /* libchdr */, + B3EBA7E4287296F300EAEB37 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3EBA7DC287296F300EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA7DD287296F300EAEB37 /* flac.h */, + B3EBA7DE287296F300EAEB37 /* chdconfig.h */, + B3EBA7DF287296F300EAEB37 /* bitstream.h */, + B3EBA7E0287296F300EAEB37 /* cdrom.h */, + B3EBA7E1287296F300EAEB37 /* chd.h */, + B3EBA7E2287296F300EAEB37 /* huffman.h */, + B3EBA7E3287296F300EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA7E4287296F300EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBA7E5287296F300EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBA7E8287296F300EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA7E9287296F300EAEB37 /* libchdr_chd.c */, + B3EBA7EA287296F300EAEB37 /* libchdr_bitstream.c */, + B3EBA7EB287296F300EAEB37 /* libchdr_huffman.c */, + B3EBA7EC287296F300EAEB37 /* libchdr_flac.c */, + B3EBA7ED287296F300EAEB37 /* link.T */, + B3EBA7EE287296F300EAEB37 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA7F2287296F300EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA7F3287296F300EAEB37 /* file_stream_transforms.c */, + B3EBA7FB287296F400EAEB37 /* file_stream_transforms copy.c */, + B3EBA7F4287296F300EAEB37 /* interface_stream.c */, + B3EBA7F8287296F300EAEB37 /* interface_stream copy.c */, + B3EBA7F5287296F300EAEB37 /* memory_stream.c */, + B3EBA7FC287296F400EAEB37 /* memory_stream copy.c */, + B3EBA7F6287296F300EAEB37 /* chd_stream.c */, + B3EBA7FA287296F400EAEB37 /* file_stream copy.c */, + B3EBA7F9287296F300EAEB37 /* chd_stream copy.c */, + B3EBA7F7287296F300EAEB37 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA7FD287296F400EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA7FE287296F400EAEB37 /* file_path.c */, + B3EBA801287296F400EAEB37 /* retro_dirent copy.c */, + B3EBA800287296F400EAEB37 /* file_path copy.c */, + B3EBA7FF287296F400EAEB37 /* retro_dirent.c */, + ); + path = file; + sourceTree = ""; + }; + B3EBA802287296F400EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA803287296F400EAEB37 /* rthreads.c */, + B3EBA808287296F400EAEB37 /* rthreads copy.c */, + B3EBA804287296F400EAEB37 /* gx_pthread.h */, + B3EBA80C287296F500EAEB37 /* gx_pthread copy.h */, + B3EBA805287296F400EAEB37 /* psp_pthread.h */, + B3EBA80B287296F400EAEB37 /* psp_pthread copy.h */, + B3EBA806287296F400EAEB37 /* xenon_sdl_threads.c */, + B3EBA80A287296F400EAEB37 /* ctr_pthread copy.h */, + B3EBA809287296F400EAEB37 /* xenon_sdl_threads copy.c */, + B3EBA807287296F400EAEB37 /* ctr_pthread.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA80D287296F500EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA80E287296F500EAEB37 /* encodings */, + B3EBABC12872970000EAEB37 /* encodings */, + B3EBA810287296F500EAEB37 /* memalign.h */, + B3EBA842287296F600EAEB37 /* memalign copy.h */, + B3EBA811287296F500EAEB37 /* vfs */, + B3EBABDA2872970200EAEB37 /* vfs */, + B3EBA815287296F500EAEB37 /* cdrom */, + B3EBABC42872970100EAEB37 /* cdrom */, + B3EBA817287296F500EAEB37 /* compat */, + B3EBABB42872970000EAEB37 /* compat */, + B3EBA81F287296F500EAEB37 /* retro_common_api.h */, + B3EBA848287296F700EAEB37 /* retro_common_api copy.h */, + B3EBA820287296F500EAEB37 /* retro_timers.h */, + B3EBA83F287296F600EAEB37 /* retro_timers copy.h */, + B3EBA821287296F500EAEB37 /* lists */, + B3EBABC72872970100EAEB37 /* lists */, + B3EBA824287296F500EAEB37 /* file */, + B3EBABAE287296FF00EAEB37 /* file */, + B3EBA826287296F500EAEB37 /* retro_environment.h */, + B3EBA847287296F700EAEB37 /* retro_environment copy.h */, + B3EBA827287296F500EAEB37 /* retro_dirent.h */, + B3EBA840287296F600EAEB37 /* retro_dirent copy.h */, + B3EBA828287296F500EAEB37 /* retro_inline.h */, + B3EBA845287296F600EAEB37 /* retro_inline copy.h */, + B3EBA829287296F500EAEB37 /* retro_math.h */, + B3EBA843287296F600EAEB37 /* retro_math copy.h */, + B3EBA82A287296F500EAEB37 /* streams */, + B3EBABCF2872970100EAEB37 /* streams */, + B3EBA830287296F500EAEB37 /* retro_miscellaneous.h */, + B3EBA841287296F600EAEB37 /* retro_miscellaneous copy.h */, + B3EBA831287296F500EAEB37 /* boolean.h */, + B3EBA83C287296F600EAEB37 /* boolean copy.h */, + B3EBA832287296F500EAEB37 /* memmap.h */, + B3EBA83D287296F600EAEB37 /* memmap copy.h */, + B3EBA833287296F500EAEB37 /* rthreads */, + B3EBABB12872970000EAEB37 /* rthreads */, + B3EBA835287296F500EAEB37 /* libretro.h */, + B3EBA844287296F600EAEB37 /* libretro copy.h */, + B3EBA836287296F500EAEB37 /* retro_common.h */, + B3EBA83E287296F600EAEB37 /* retro_common copy.h */, + B3EBA837287296F500EAEB37 /* retro_assert.h */, + B3EBA846287296F700EAEB37 /* retro_assert copy.h */, + B3EBA838287296F500EAEB37 /* string */, + B3EBA83B287296F500EAEB37 /* retro_endianness copy.h */, + B3EBABCC2872970100EAEB37 /* string */, + B3EBA83A287296F500EAEB37 /* retro_endianness.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA80E287296F500EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA80F287296F500EAEB37 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA811287296F500EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA812287296F500EAEB37 /* vfs.h */, + B3EBA813287296F500EAEB37 /* vfs_implementation.h */, + B3EBA814287296F500EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA815287296F500EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA816287296F500EAEB37 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA817287296F500EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA818287296F500EAEB37 /* strl.h */, + B3EBA819287296F500EAEB37 /* strcasestr.h */, + B3EBA81A287296F500EAEB37 /* msvc */, + B3EBA81C287296F500EAEB37 /* fopen_utf8.h */, + B3EBA81D287296F500EAEB37 /* posix_string.h */, + B3EBA81E287296F500EAEB37 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA81A287296F500EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBA81B287296F500EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBA821287296F500EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA822287296F500EAEB37 /* string_list.h */, + B3EBA823287296F500EAEB37 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA824287296F500EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA825287296F500EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBA82A287296F500EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA82B287296F500EAEB37 /* memory_stream.h */, + B3EBA82C287296F500EAEB37 /* chd_stream.h */, + B3EBA82D287296F500EAEB37 /* file_stream.h */, + B3EBA82E287296F500EAEB37 /* file_stream_transforms.h */, + B3EBA82F287296F500EAEB37 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA833287296F500EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBA834287296F500EAEB37 /* rthreads.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBA838287296F500EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA839287296F500EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBA849287296F700EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA84A287296F700EAEB37 /* vfs_implementation.c */, + B3EBA84D287296F700EAEB37 /* vfs_implementation_cdrom copy.c */, + B3EBA84C287296F700EAEB37 /* vfs_implementation copy.c */, + B3EBA84B287296F700EAEB37 /* vfs_implementation_cdrom.c */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA84E287296F700EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBA850287296F700EAEB37 /* cdrom copy.c */, + B3EBA84F287296F700EAEB37 /* cdrom.c */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBA851287296F700EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA853287296F700EAEB37 /* encoding_utf copy.c */, + B3EBA852287296F700EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA854287296F700EAEB37 /* memmap */ = { + isa = PBXGroup; + children = ( + B3EBA855287296F700EAEB37 /* memmap.c */, + B3EBA857287296F700EAEB37 /* memalign copy.c */, + B3EBA858287296F700EAEB37 /* memmap copy.c */, + B3EBA856287296F700EAEB37 /* memalign.c */, + ); + path = memmap; + sourceTree = ""; + }; + B3EBA859287296F700EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA85B287296F700EAEB37 /* stdstring copy.c */, + B3EBA85A287296F700EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EBA85C287296F700EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA85D287296F700EAEB37 /* compat_strl.c */, + B3EBA863287296F800EAEB37 /* compat_strl copy.c */, + B3EBA85E287296F700EAEB37 /* compat_posix_string.c */, + B3EBA864287296F800EAEB37 /* compat_posix_string copy.c */, + B3EBA85F287296F800EAEB37 /* compat_strcasestr.c */, + B3EBA866287296F800EAEB37 /* compat_strcasestr copy.c */, + B3EBA860287296F800EAEB37 /* compat_snprintf.c */, + B3EBA862287296F800EAEB37 /* fopen_utf8 copy.c */, + B3EBA865287296F800EAEB37 /* compat_snprintf copy.c */, + B3EBA861287296F800EAEB37 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA867287296F800EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBA868287296F800EAEB37 /* dir_list.c */, + B3EBA86A287296F800EAEB37 /* string_list copy.c */, + B3EBA86B287296F800EAEB37 /* dir_list copy.c */, + B3EBA869287296F800EAEB37 /* string_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B3EBA86C287296F800EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA86D287296F800EAEB37 /* LzHash.h */, + B3EBA888287296FA00EAEB37 /* LzHash copy.h */, + B3EBA86E287296F800EAEB37 /* 7zTypes.h */, + B3EBA880287296F900EAEB37 /* 7zTypes copy.h */, + B3EBA86F287296F800EAEB37 /* Compiler.h */, + B3EBA87F287296F900EAEB37 /* Compiler copy.h */, + B3EBA870287296F800EAEB37 /* Precomp.h */, + B3EBA87C287296F900EAEB37 /* Precomp copy.h */, + B3EBA871287296F800EAEB37 /* CpuArch.h */, + B3EBA887287296FA00EAEB37 /* CpuArch copy.h */, + B3EBA872287296F800EAEB37 /* Delta.h */, + B3EBA883287296F900EAEB37 /* Delta copy.h */, + B3EBA873287296F800EAEB37 /* LzmaLib.h */, + B3EBA885287296FA00EAEB37 /* LzmaLib copy.h */, + B3EBA874287296F800EAEB37 /* Lzma86.h */, + B3EBA87D287296F900EAEB37 /* Lzma86 copy.h */, + B3EBA875287296F800EAEB37 /* LzmaEnc.h */, + B3EBA87B287296F900EAEB37 /* LzmaEnc copy.h */, + B3EBA876287296F800EAEB37 /* LzFind.h */, + B3EBA87E287296F900EAEB37 /* LzFind copy.h */, + B3EBA877287296F800EAEB37 /* Bra.h */, + B3EBA884287296F900EAEB37 /* Bra copy.h */, + B3EBA878287296F800EAEB37 /* Sort.h */, + B3EBA881287296F900EAEB37 /* Sort copy.h */, + B3EBA879287296F800EAEB37 /* LzmaDec.h */, + B3EBA882287296F900EAEB37 /* Alloc copy.h */, + B3EBA886287296FA00EAEB37 /* LzmaDec copy.h */, + B3EBA87A287296F800EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA889287296FA00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA88A287296FA00EAEB37 /* LzmaEnc.c */, + B3EBAB87287296FE00EAEB37 /* LzmaEnc copy.c */, + B3EBA88B287296FA00EAEB37 /* LzFind.c */, + B3EBAB88287296FE00EAEB37 /* LzFind copy.c */, + B3EBA88C287296FA00EAEB37 /* Sort.c */, + B3EBA897287296FA00EAEB37 /* Sort copy.c */, + B3EBA88D287296FA00EAEB37 /* Bra86.c */, + B3EBAB86287296FD00EAEB37 /* Bra86 copy.c */, + B3EBA88E287296FA00EAEB37 /* Alloc.c */, + B3EBA896287296FA00EAEB37 /* Alloc copy.c */, + B3EBA88F287296FA00EAEB37 /* LzmaDec.c */, + B3EBAB85287296FD00EAEB37 /* LzmaDec copy.c */, + B3EBA890287296FA00EAEB37 /* BraIA64.c */, + B3EBA898287296FB00EAEB37 /* BraIA64 copy.c */, + B3EBA891287296FA00EAEB37 /* Lzma86Dec.c */, + B3EBA895287296FA00EAEB37 /* Lzma86Dec copy.c */, + B3EBA892287296FA00EAEB37 /* Delta.c */, + B3EBAB84287296FD00EAEB37 /* Delta copy.c */, + B3EBA893287296FA00EAEB37 /* Lzma86Enc.c */, + B3EBAB89287296FE00EAEB37 /* CpuArch copy.c */, + B3EBAB8A287296FE00EAEB37 /* Lzma86Enc copy.c */, + B3EBA894287296FA00EAEB37 /* CpuArch.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBAB8B287296FE00EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBAB8C287296FE00EAEB37 /* rfc1952.txt */, + B3EBAB93287296FE00EAEB37 /* rfc1952 copy.txt */, + B3EBAB8D287296FE00EAEB37 /* rfc1950.txt */, + B3EBAB91287296FE00EAEB37 /* rfc1950 copy.txt */, + B3EBAB8E287296FE00EAEB37 /* algorithm.txt */, + B3EBAB95287296FF00EAEB37 /* algorithm copy.txt */, + B3EBAB8F287296FE00EAEB37 /* rfc1951.txt */, + B3EBAB94287296FE00EAEB37 /* txtvsbin copy.txt */, + B3EBAB92287296FE00EAEB37 /* rfc1951 copy.txt */, + B3EBAB90287296FE00EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBAB96287296FF00EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBAB97287296FF00EAEB37 /* libchdr */, + B3EBABE42872970200EAEB37 /* libchdr */, + B3EBABE12872970200EAEB37 /* dr_libs */, + B3EBAB9F287296FF00EAEB37 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3EBAB97287296FF00EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBAB98287296FF00EAEB37 /* flac.h */, + B3EBAB99287296FF00EAEB37 /* chdconfig.h */, + B3EBAB9A287296FF00EAEB37 /* bitstream.h */, + B3EBAB9B287296FF00EAEB37 /* cdrom.h */, + B3EBAB9C287296FF00EAEB37 /* chd.h */, + B3EBAB9D287296FF00EAEB37 /* huffman.h */, + B3EBAB9E287296FF00EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBAB9F287296FF00EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBABA0287296FF00EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBABA1287296FF00EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBABA2287296FF00EAEB37 /* libchdr_chd.c */, + B3EBABA8287296FF00EAEB37 /* libchdr_chd copy.c */, + B3EBABA3287296FF00EAEB37 /* libchdr_bitstream.c */, + B3EBABAB287296FF00EAEB37 /* libchdr_bitstream copy.c */, + B3EBABA4287296FF00EAEB37 /* libchdr_huffman.c */, + B3EBABAD287296FF00EAEB37 /* libchdr_huffman copy.c */, + B3EBABA5287296FF00EAEB37 /* libchdr_flac.c */, + B3EBABAC287296FF00EAEB37 /* libchdr_flac copy.c */, + B3EBABA6287296FF00EAEB37 /* link.T */, + B3EBABAA287296FF00EAEB37 /* libchdr_cdrom copy.c */, + B3EBABA9287296FF00EAEB37 /* link copy.T */, + B3EBABA7287296FF00EAEB37 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBABAE287296FF00EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBABB0287296FF00EAEB37 /* file_path copy.h */, + B3EBABAF287296FF00EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBABB12872970000EAEB37 /* rthreads */ = { + isa = PBXGroup; + children = ( + B3EBABB32872970000EAEB37 /* rthreads copy.h */, + B3EBABB22872970000EAEB37 /* rthreads.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B3EBABB42872970000EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBABB52872970000EAEB37 /* strl.h */, + B3EBABC02872970000EAEB37 /* strl copy.h */, + B3EBABB62872970000EAEB37 /* strcasestr.h */, + B3EBABBD2872970000EAEB37 /* strcasestr copy.h */, + B3EBABB72872970000EAEB37 /* msvc */, + B3EBABF32872970300EAEB37 /* msvc */, + B3EBABB92872970000EAEB37 /* fopen_utf8.h */, + B3EBABBC2872970000EAEB37 /* fopen_utf8 copy.h */, + B3EBABBA2872970000EAEB37 /* posix_string.h */, + B3EBABBF2872970000EAEB37 /* msvc copy.h */, + B3EBABBE2872970000EAEB37 /* posix_string copy.h */, + B3EBABBB2872970000EAEB37 /* msvc.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBABB72872970000EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBABB82872970000EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B3EBABC12872970000EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBABC32872970000EAEB37 /* utf copy.h */, + B3EBABC22872970000EAEB37 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBABC42872970100EAEB37 /* cdrom */ = { + isa = PBXGroup; + children = ( + B3EBABC62872970100EAEB37 /* cdrom copy.h */, + B3EBABC52872970100EAEB37 /* cdrom.h */, + ); + path = cdrom; + sourceTree = ""; + }; + B3EBABC72872970100EAEB37 /* lists */ = { + isa = PBXGroup; + children = ( + B3EBABC82872970100EAEB37 /* string_list.h */, + B3EBABCB2872970100EAEB37 /* dir_list copy.h */, + B3EBABCA2872970100EAEB37 /* string_list copy.h */, + B3EBABC92872970100EAEB37 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B3EBABCC2872970100EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBABCE2872970100EAEB37 /* stdstring copy.h */, + B3EBABCD2872970100EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBABCF2872970100EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBABD02872970100EAEB37 /* memory_stream.h */, + B3EBABD72872970100EAEB37 /* memory_stream copy.h */, + B3EBABD12872970100EAEB37 /* chd_stream.h */, + B3EBABD52872970100EAEB37 /* chd_stream copy.h */, + B3EBABD22872970100EAEB37 /* file_stream.h */, + B3EBABD92872970100EAEB37 /* file_stream copy.h */, + B3EBABD32872970100EAEB37 /* file_stream_transforms.h */, + B3EBABD62872970100EAEB37 /* interface_stream copy.h */, + B3EBABD82872970100EAEB37 /* file_stream_transforms copy.h */, + B3EBABD42872970100EAEB37 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBABDA2872970200EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBABDB2872970200EAEB37 /* vfs.h */, + B3EBABE02872970200EAEB37 /* vfs copy.h */, + B3EBABDC2872970200EAEB37 /* vfs_implementation.h */, + B3EBABDF2872970200EAEB37 /* vfs_implementation_cdrom copy.h */, + B3EBABDE2872970200EAEB37 /* vfs_implementation copy.h */, + B3EBABDD2872970200EAEB37 /* vfs_implementation_cdrom.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBABE12872970200EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBABE32872970200EAEB37 /* dr_flac copy.h */, + B3EBABE22872970200EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBABE42872970200EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBABE52872970200EAEB37 /* flac.h */, + B3EBABED2872970200EAEB37 /* flac copy.h */, + B3EBABE62872970200EAEB37 /* chdconfig.h */, + B3EBABF02872970300EAEB37 /* chdconfig copy.h */, + B3EBABE72872970200EAEB37 /* bitstream.h */, + B3EBABF12872970300EAEB37 /* bitstream copy.h */, + B3EBABE82872970200EAEB37 /* cdrom.h */, + B3EBABF22872970300EAEB37 /* cdrom copy.h */, + B3EBABE92872970200EAEB37 /* chd.h */, + B3EBABEF2872970300EAEB37 /* chd copy.h */, + B3EBABEA2872970200EAEB37 /* huffman.h */, + B3EBABEE2872970200EAEB37 /* coretypes copy.h */, + B3EBABEC2872970200EAEB37 /* huffman copy.h */, + B3EBABEB2872970200EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBABF32872970300EAEB37 /* msvc */ = { + isa = PBXGroup; + children = ( + B3EBABF52872970300EAEB37 /* stdint copy.h */, + B3EBABF42872970300EAEB37 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVOpera.h in Headers */, + B37022C92872554300B3F6DA /* PVOperaCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* opera */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "opera" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = opera; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libopera.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* opera-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "opera-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "opera-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libopera-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVOpera */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVOpera" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVOpera; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVOpera.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVOpera" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVOpera */, + B3344B522859E088006E6B3A /* opera-libretro */, + B30178D2207C901D0051B93D /* opera */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVOperaCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* opera-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = opera; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = opera; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ( + "$(inherited)", + "-mno-thumb", + "-mfpu=neon", + "-fno-operator-names", + "-fno-rtti", + "-ffast-math", + "-ftree-vectorize", + "-fno-strict-aliasing", + "-frename-registers", + "-fno-rtti", + "-fpermissive", + "-fno-operator-names", + "-fsingle-precision-constant", + "-DTARGET_NO_NIXPROF", + ); + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVOpera/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVOpera"; + PRODUCT_NAME = PVOpera; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = opera; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "opera-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "opera-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "opera-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "$(inherited)", + "-mno-thumb", + "-mfpu=neon", + "-fno-operator-names", + "-fno-rtti", + "-ffast-math", + "-ftree-vectorize", + "-fno-strict-aliasing", + "-frename-registers", + "-fno-rtti", + "-fpermissive", + "-fno-operator-names", + "-fsingle-precision-constant", + "-DTARGET_NO_NIXPROF", + ); + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVOpera/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVOpera"; + PRODUCT_NAME = PVOpera; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/Play-/deps/Framework/include\"", + "\"$(SRCROOT)/Play-/Source/ui_ios\"", + "\"$(SRCROOT)/Play-/deps/Dependencies/ghc_filesystem/include\"", + ); + INFOPLIST_FILE = "$(SRCROOT)/PVOpera/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVOpera"; + PRODUCT_NAME = PVOpera; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "opera" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "opera-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVOpera" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVOpera" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/opera/PVOpera.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/opera/PVOpera.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/opera/PVOpera.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/opera/PVOpera.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/opera/PVOpera.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/opera/PVOpera.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/opera/PVOpera.xcodeproj/xcshareddata/xcschemes/PVOpera.xcscheme b/Cores/opera/PVOpera.xcodeproj/xcshareddata/xcschemes/PVOpera.xcscheme new file mode 100644 index 0000000000..1370ce8b0d --- /dev/null +++ b/Cores/opera/PVOpera.xcodeproj/xcshareddata/xcschemes/PVOpera.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/opera/PVOpera/Core.plist b/Cores/opera/PVOpera/Core.plist new file mode 100644 index 0000000000..f38660cb42 --- /dev/null +++ b/Cores/opera/PVOpera/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.core.opera + PVPrincipleClass + PVOperaCore + PVSupportedSystems + + com.provenance.3DO + + PVProjectName + Opera + PVProjectURL + https://github.com/libretro/opera-libretro + PVProjectVersion + 0 + + diff --git a/Cores/opera/PVOpera/Info.plist b/Cores/opera/PVOpera/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/opera/PVOpera/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/opera/PVOpera/PVOpera.h b/Cores/opera/PVOpera/PVOpera.h new file mode 100644 index 0000000000..60d55a4976 --- /dev/null +++ b/Cores/opera/PVOpera/PVOpera.h @@ -0,0 +1,18 @@ +// +// PVOpera.h +// PVOpera +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVOpera. +FOUNDATION_EXPORT double PVOperaVersionNumber; + +//! Project version string for PVOpera. +FOUNDATION_EXPORT const unsigned char PVOperaVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/opera/PVOperaCore/PVOperaCore.h b/Cores/opera/PVOperaCore/PVOperaCore.h new file mode 100644 index 0000000000..e13e83a035 --- /dev/null +++ b/Cores/opera/PVOperaCore/PVOperaCore.h @@ -0,0 +1,43 @@ +// +// PVOperaCore.h +// PVOpera +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +__attribute__((visibility("default"))) +@interface PVOperaCore : PVLibRetroCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/opera/PVOperaCore/PVOperaCore.mm b/Cores/opera/PVOperaCore/PVOperaCore.mm new file mode 100644 index 0000000000..bdfbe00859 --- /dev/null +++ b/Cores/opera/PVOperaCore/PVOperaCore.mm @@ -0,0 +1,152 @@ +// +// PVOperaCore.m +// PVOpera +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVOperaCore.h" +#include +//#import "PVOperaCore+Controls.h" +//#import "PVOperaCore+Audio.h" +//#import "PVOperaCore+Video.h" +// +//#import "PVOperaCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVOperaCore() { + +} + +@end + +#pragma mark - PVOperaCore Begin + +@implementation PVOperaCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +- (NSTimeInterval)frameInterval { + return 13.63; +} + +- (CGSize)aspectSize { + return CGSizeMake(4, 3); +} + +- (CGSize)bufferSize { + return CGSizeMake(1440, 1080); +} + +- (GLenum)pixelFormat { + return GL_BGRA; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_BYTE; +} + +- (GLenum)internalPixelFormat { + return GL_RGBA; +} + +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/opera/opera-libretro b/Cores/opera/opera-libretro new file mode 160000 index 0000000000..63f267901f --- /dev/null +++ b/Cores/opera/opera-libretro @@ -0,0 +1 @@ +Subproject commit 63f267901f4a73937e34757b8b3f1f17d8637845 diff --git a/Cores/pcsx_rearmed/BuildFlags.xcconfig b/Cores/pcsx_rearmed/BuildFlags.xcconfig new file mode 100644 index 0000000000..379d98ec9c --- /dev/null +++ b/Cores/pcsx_rearmed/BuildFlags.xcconfig @@ -0,0 +1,31 @@ +// +// BuildFlags.xcconfig +// PVPCSXRearmed +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 HAVE_LIBRETRO=1 TEXTURE_CACHE_4BPP=1 TEXTURE_CACHE_8BPP=1 HAVE_CHD=1 _7ZIP_ST=1 HAVE_GLES=1 HAVE_CHD=1 USE_LIBRETRO_VFS=1 FRONTEND_SUPPORTS_RGB565=1 NO_FRONTEND=1 DRC_DISABLE=1 THREAD_RENDERING=1 GL_SILENCE_DEPRECATION=1 +OTHER_CFLAGS = $(inherited) -ObjC -ffast-math -DREV="1" -fno-strict-aliasing +// GPU_NEON=1 NEON_BUILD=1 +// -ffast-math -ftree-vectorize -fno-strict-aliasing -fpermissive -fomit-frame-pointer +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load +//LDFLAGS += -lm + + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 HAVE_NEON=0 DYNAREC=ari64 BUILTIN_GPU=peops +//DYNAREC=0 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed-Prefix.pch b/Cores/pcsx_rearmed/PVPCSXRearmed-Prefix.pch new file mode 100644 index 0000000000..37fdbe6793 --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed.h b/Cores/pcsx_rearmed/PVPCSXRearmed.h new file mode 100644 index 0000000000..24bd25d299 --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed.h @@ -0,0 +1,19 @@ +// +// PVPCSXRearmed.h +// PVPCSXRearmed +// +// Created by Joseph Mattiello on 01/28/22. +// Copyright © 2022 Provenance-EMU. All rights reserved. +// + +#import + +//! Project version number for PVPCSXRearmed. +FOUNDATION_EXPORT double PVPCSXRearmedVersionNumber; + +//! Project version string for PVPCSXRearmed. +FOUNDATION_EXPORT const unsigned char PVPCSXRearmedVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.pbxproj b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..49b872a66d --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.pbxproj @@ -0,0 +1,3155 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + B301797F207C909E0051B93D /* libpcsx_rearmed.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B30178D3207C901D0051B93D /* libpcsx_rearmed.a */; }; + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3135BAA26E4CDC50047F338 /* QuartzCore.framework */; }; + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468820783F41008DBAB4 /* libpthread.tbd */; }; + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B339468A20783F48008DBAB4 /* libz.tbd */; }; + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF1207CD2670040709A /* AudioToolbox.framework */; }; + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF4207CD2740040709A /* CoreAudio.framework */; }; + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B35E6BF8207D00D00040709A /* AVFoundation.framework */; }; + B37022C82872553E00B3F6DA /* PVPCSXRearmedCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = B37022C6287253B300B3F6DA /* PVPCSXRearmedCore.mm */; }; + B37022C92872554300B3F6DA /* PVPCSXRearmedCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C5287253B300B3F6DA /* PVPCSXRearmedCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B37022CB2872556600B3F6DA /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B37022BF287253B300B3F6DA /* Core.plist */; }; + B37022CD2872558F00B3F6DA /* PVPCSXRearmed.h in Headers */ = {isa = PBXBuildFile; fileRef = B37022C0287253B300B3F6DA /* PVPCSXRearmed.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B38E0EE928928A1D004720DA /* file_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2582872967600EAEB37 /* file_stream.c */; }; + B38E0EEA28928A1D004720DA /* rtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2762872967600EAEB37 /* rtime.c */; }; + B38E0EEB28928A1D004720DA /* compat_strl.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA24C2872967600EAEB37 /* compat_strl.c */; }; + B38E0EEC28928A1D004720DA /* encoding_utf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA24D2872967600EAEB37 /* encoding_utf.c */; }; + B38E0EED28928A1D004720DA /* vfs_implementation.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA24F2872967600EAEB37 /* vfs_implementation.c */; }; + B38E0EEE28928A1D004720DA /* compat_posix_string.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2512872967600EAEB37 /* compat_posix_string.c */; }; + B38E0EEF28928A1D004720DA /* file_path.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2552872967600EAEB37 /* file_path.c */; }; + B38E0EF028928A1D004720DA /* stdstring.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2782872967600EAEB37 /* stdstring.c */; }; + B38E0EF128928A1D004720DA /* fopen_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2532872967600EAEB37 /* fopen_utf8.c */; }; + B38E0EF228928A1D004720DA /* file_stream_transforms.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2572872967600EAEB37 /* file_stream_transforms.c */; }; + B38E0EFE28928AB3004720DA /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA13E2872967500EAEB37 /* main.c */; }; + B38E0F0328928AD8004720DA /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1522872967500EAEB37 /* plugin.c */; }; + B38E0F1328929345004720DA /* emu_if.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA18E2872967500EAEB37 /* emu_if.c */; }; + B3918FE82873EF6B000838F6 /* gte.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA19E2872967500EAEB37 /* gte.c */; }; + B3918FE92873EF6B000838F6 /* ppf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1AA2872967500EAEB37 /* ppf.c */; }; + B3918FEA2873EF6B000838F6 /* cdriso.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1682872967500EAEB37 /* cdriso.c */; }; + B3918FEB2873EF6B000838F6 /* sio.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA17A2872967500EAEB37 /* sio.c */; }; + B3918FEC2873EF6B000838F6 /* database.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA16C2872967500EAEB37 /* database.c */; }; + B3918FED2873EF6B000838F6 /* gte_divider.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1782872967500EAEB37 /* gte_divider.c */; }; + B3918FEE2873EF6B000838F6 /* gte_nf.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA16B2872967500EAEB37 /* gte_nf.c */; }; + B3918FEF2873EF6B000838F6 /* psxmem.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA19B2872967500EAEB37 /* psxmem.c */; }; + B3918FF02873EF6B000838F6 /* cdrom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA16E2872967500EAEB37 /* cdrom.c */; }; + B3918FF12873EF6B000838F6 /* decode_xa.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1602872967500EAEB37 /* decode_xa.c */; }; + B3918FF22873EF6B000838F6 /* plugins.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1702872967500EAEB37 /* plugins.c */; }; + B3918FF52873EF6B000838F6 /* cheat.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA17E2872967500EAEB37 /* cheat.c */; }; + B3918FF62873EF6B000838F6 /* psxcommon.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1802872967500EAEB37 /* psxcommon.c */; }; + B3918FF72873EF6B000838F6 /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1A82872967500EAEB37 /* misc.c */; }; + B3918FF82873EF6B000838F6 /* psxhle.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1982872967500EAEB37 /* psxhle.c */; }; + B3918FFA2873EF6B000838F6 /* psxinterpreter.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA19F2872967500EAEB37 /* psxinterpreter.c */; }; + B3918FFB2873EF6B000838F6 /* psxbios.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1822872967500EAEB37 /* psxbios.c */; }; + B3918FFC2873EF6B000838F6 /* psxdma.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1752872967500EAEB37 /* psxdma.c */; }; + B3918FFE2873EF6B000838F6 /* psxcounters.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1AD2872967500EAEB37 /* psxcounters.c */; }; + B3918FFF2873EF6B000838F6 /* spu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1642872967500EAEB37 /* spu.c */; }; + B39190002873EF6B000838F6 /* psxhw.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA19D2872967500EAEB37 /* psxhw.c */; }; + B39190012873EF6B000838F6 /* mdec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1792872967500EAEB37 /* mdec.c */; }; + B39190022873EF6B000838F6 /* r3000a.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1732872967500EAEB37 /* r3000a.c */; }; + B39190382873F0AF000838F6 /* adsr.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2032872967600EAEB37 /* adsr.c */; }; + B39190392873F0AF000838F6 /* out.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2002872967600EAEB37 /* out.c */; }; + B391903A2873F0AF000838F6 /* reverb.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA20C2872967600EAEB37 /* reverb.c */; }; + B391903B2873F0AF000838F6 /* dma.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA20B2872967600EAEB37 /* dma.c */; }; + B391903C2873F0AF000838F6 /* registers.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2152872967600EAEB37 /* registers.c */; }; + B391903D2873F0AF000838F6 /* xa.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA20A2872967600EAEB37 /* xa.c */; }; + B391903E2873F0AF000838F6 /* spu.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1FE2872967600EAEB37 /* spu.c */; }; + B39190412873F0AF000838F6 /* nullsnd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2172872967600EAEB37 /* nullsnd.c */; }; + B39190422873F0AF000838F6 /* freeze.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA2162872967600EAEB37 /* freeze.c */; }; + B39190522873F1A7000838F6 /* Lzma86Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3D42872967700EAEB37 /* Lzma86Dec.c */; }; + B39190532873F1A7000838F6 /* Alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3D12872967700EAEB37 /* Alloc.c */; }; + B39190542873F1A7000838F6 /* LzFind.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3CE2872967700EAEB37 /* LzFind.c */; }; + B39190552873F1A7000838F6 /* BraIA64.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3D32872967700EAEB37 /* BraIA64.c */; }; + B39190562873F1A7000838F6 /* CpuArch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3D62872967700EAEB37 /* CpuArch.c */; }; + B39190572873F1A7000838F6 /* Delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3D52872967700EAEB37 /* Delta.c */; }; + B39190582873F1A7000838F6 /* LzmaDec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3D22872967700EAEB37 /* LzmaDec.c */; }; + B39190592873F1A7000838F6 /* LzmaEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3CD2872967700EAEB37 /* LzmaEnc.c */; }; + B391905A2873F1A7000838F6 /* Sort.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3CF2872967700EAEB37 /* Sort.c */; }; + B391905B2873F1A7000838F6 /* Bra86.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3D02872967700EAEB37 /* Bra86.c */; }; + B39190662873F1C0000838F6 /* libchdr_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3DD2872967700EAEB37 /* libchdr_flac.c */; }; + B39190672873F1C0000838F6 /* libchdr_bitstream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3DB2872967700EAEB37 /* libchdr_bitstream.c */; }; + B39190682873F1C0000838F6 /* libchdr_huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3DC2872967700EAEB37 /* libchdr_huffman.c */; }; + B39190692873F1C0000838F6 /* libchdr_chd.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3DA2872967700EAEB37 /* libchdr_chd.c */; }; + B391906A2873F1C0000838F6 /* libchdr_cdrom.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA3DF2872967700EAEB37 /* libchdr_cdrom.c */; }; + B39190742873F219000838F6 /* cspace.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1372872967500EAEB37 /* cspace.c */; }; + B39190782873F292000838F6 /* libretro.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA12B2872967500EAEB37 /* libretro.c */; }; + B39768F82859E23200558958 /* libpcsx_rearmed-libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3344BC32859E088006E6B3A /* libpcsx_rearmed-libretro.a */; }; + B3980D7229238C3500A82429 /* libgpulib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3980D5E29238A2000A82429 /* libgpulib.a */; }; + B3980D7729238D9F00A82429 /* gpuFps.m in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1C22872967500EAEB37 /* gpuFps.m */; }; + B3980D7A2923908900A82429 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3980D792923908700A82429 /* OpenGL.framework */; platformFilter = maccatalyst; }; + B3980D7C2923922200A82429 /* cdrcimg.c in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1E22872967500EAEB37 /* cdrcimg.c */; }; + B3980D7E2923937400A82429 /* gpuPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA1C42872967500EAEB37 /* gpuPlugin.m */; }; + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */; }; + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621C20783243009950E4 /* OpenGLES.framework */; }; + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7621E2078325C009950E4 /* Foundation.framework */; }; + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C7622120783297009950E4 /* PVSupport.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B39768F92859E23200558958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3C7620720783162009950E4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3344B522859E088006E6B3A; + remoteInfo = "dos-box-libretro-iOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B30178D1207C901D0051B93D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBE2859E088006E6B3A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3980D5C29238A2000A82429 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B30178D3207C901D0051B93D /* libpcsx_rearmed.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpcsx_rearmed.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B324C31B2191964F009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B3344BC32859E088006E6B3A /* libpcsx_rearmed-libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libpcsx_rearmed-libretro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B339468820783F41008DBAB4 /* libpthread.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpthread.tbd; path = usr/lib/libpthread.tbd; sourceTree = SDKROOT; }; + B339468A20783F48008DBAB4 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; + B35E6BEF207CD2610040709A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; + B35E6BF1207CD2670040709A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; + B35E6BF4207CD2740040709A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + B35E6BF8207D00D00040709A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + B37022BD287253B300B3F6DA /* PVPCSXRearmed-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVPCSXRearmed-Prefix.pch"; sourceTree = ""; }; + B37022BF287253B300B3F6DA /* Core.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Core.plist; sourceTree = ""; }; + B37022C0287253B300B3F6DA /* PVPCSXRearmed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPCSXRearmed.h; sourceTree = ""; }; + B37022C1287253B300B3F6DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B37022C3287253B300B3F6DA /* PVPCSXRearmed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPCSXRearmed.h; sourceTree = ""; }; + B37022C5287253B300B3F6DA /* PVPCSXRearmedCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPCSXRearmedCore.h; sourceTree = ""; }; + B37022C6287253B300B3F6DA /* PVPCSXRearmedCore.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PVPCSXRearmedCore.mm; sourceTree = ""; }; + B39769132859E3A300558958 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B39769172859E3AD00558958 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B39769182859E3AD00558958 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B3980D5E29238A2000A82429 /* libgpulib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgpulib.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3980D792923908700A82429 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B104B8218F281B00210C39 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621020783162009950E4 /* PVPCSXRearmed.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPCSXRearmed.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3C7621C20783243009950E4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + B3C7621E2078325C009950E4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B3C7622120783297009950E4 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3EBA1262872967500EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1272872967500EAEB37 /* gas-preprocessor.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "gas-preprocessor.pl"; sourceTree = ""; }; + B3EBA1282872967500EAEB37 /* psxcimg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxcimg.c; sourceTree = ""; }; + B3EBA12A2872967500EAEB37 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B3EBA12B2872967500EAEB37 /* libretro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro.c; sourceTree = ""; }; + B3EBA12C2872967500EAEB37 /* Cheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Cheat.h; sourceTree = ""; }; + B3EBA12D2872967500EAEB37 /* blit320.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blit320.h; sourceTree = ""; }; + B3EBA12E2872967500EAEB37 /* blit320.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = blit320.s; sourceTree = ""; }; + B3EBA1302872967500EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBA1322872967500EAEB37 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3EBA1332872967500EAEB37 /* plat_dummy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plat_dummy.c; sourceTree = ""; }; + B3EBA1342872967500EAEB37 /* in_tsbutton.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = in_tsbutton.c; sourceTree = ""; }; + B3EBA1352872967500EAEB37 /* plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugin.h; sourceTree = ""; }; + B3EBA1362872967500EAEB37 /* menu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = ""; }; + B3EBA1372872967500EAEB37 /* cspace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cspace.c; sourceTree = ""; }; + B3EBA1382872967500EAEB37 /* plat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plat.h; sourceTree = ""; }; + B3EBA1392872967500EAEB37 /* plat_omap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plat_omap.c; sourceTree = ""; }; + B3EBA13A2872967500EAEB37 /* cspace_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = cspace_neon.S; sourceTree = ""; }; + B3EBA13B2872967500EAEB37 /* cspace_arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = cspace_arm.S; sourceTree = ""; }; + B3EBA13C2872967500EAEB37 /* pl_gun_ts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pl_gun_ts.c; sourceTree = ""; }; + B3EBA13D2872967500EAEB37 /* plugin_lib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugin_lib.h; sourceTree = ""; }; + B3EBA13E2872967500EAEB37 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3EBA13F2872967500EAEB37 /* libretro_core_options.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options.h; sourceTree = ""; }; + B3EBA1402872967500EAEB37 /* libretro_core_options_intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_core_options_intl.h; sourceTree = ""; }; + B3EBA1412872967500EAEB37 /* menu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = ""; }; + B3EBA1442872967500EAEB37 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3EBA1452872967500EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA1462872967500EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA1472872967500EAEB37 /* nopic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nopic.h; sourceTree = ""; }; + B3EBA1482872967500EAEB37 /* in_tsbutton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = in_tsbutton.h; sourceTree = ""; }; + B3EBA14A2872967500EAEB37 /* semaphore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = semaphore.h; sourceTree = ""; }; + B3EBA14B2872967500EAEB37 /* utils.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = utils.S; sourceTree = ""; }; + B3EBA14D2872967500EAEB37 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3EBA14E2872967500EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA14F2872967500EAEB37 /* pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pthread.h; sourceTree = ""; }; + B3EBA1502872967500EAEB37 /* 3ds_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 3ds_utils.h; sourceTree = ""; }; + B3EBA1512872967500EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA1522872967500EAEB37 /* plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plugin.c; sourceTree = ""; }; + B3EBA1532872967500EAEB37 /* plat_sdl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plat_sdl.c; sourceTree = ""; }; + B3EBA1552872967500EAEB37 /* plat_omap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plat_omap.h; sourceTree = ""; }; + B3EBA1562872967500EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA1572872967500EAEB37 /* cspace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cspace.h; sourceTree = ""; }; + B3EBA1582872967500EAEB37 /* plugin_lib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plugin_lib.c; sourceTree = ""; }; + B3EBA1592872967500EAEB37 /* pl_gun_ts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pl_gun_ts.h; sourceTree = ""; }; + B3EBA15A2872967500EAEB37 /* plat_pollux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plat_pollux.c; sourceTree = ""; }; + B3EBA15B2872967500EAEB37 /* plat_pandora.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plat_pandora.c; sourceTree = ""; }; + B3EBA15D2872967500EAEB37 /* cheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheat.h; sourceTree = ""; }; + B3EBA15E2872967500EAEB37 /* psxbios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxbios.h; sourceTree = ""; }; + B3EBA15F2872967500EAEB37 /* psxcommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxcommon.h; sourceTree = ""; }; + B3EBA1602872967500EAEB37 /* decode_xa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = decode_xa.c; sourceTree = ""; }; + B3EBA1612872967500EAEB37 /* sjisfont.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sjisfont.h; sourceTree = ""; }; + B3EBA1622872967500EAEB37 /* sio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sio.h; sourceTree = ""; }; + B3EBA1632872967500EAEB37 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3EBA1642872967500EAEB37 /* spu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spu.c; sourceTree = ""; }; + B3EBA1652872967500EAEB37 /* psxinterpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxinterpreter.h; sourceTree = ""; }; + B3EBA1662872967500EAEB37 /* gte.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gte.h; sourceTree = ""; }; + B3EBA1672872967500EAEB37 /* psxhw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxhw.h; sourceTree = ""; }; + B3EBA1682872967500EAEB37 /* cdriso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdriso.c; sourceTree = ""; }; + B3EBA1692872967500EAEB37 /* psxmem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxmem.h; sourceTree = ""; }; + B3EBA16A2872967500EAEB37 /* psxhle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxhle.h; sourceTree = ""; }; + B3EBA16B2872967500EAEB37 /* gte_nf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gte_nf.c; sourceTree = ""; }; + B3EBA16C2872967500EAEB37 /* database.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = database.c; sourceTree = ""; }; + B3EBA16D2872967500EAEB37 /* disr3000a.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disr3000a.c; sourceTree = ""; }; + B3EBA16E2872967500EAEB37 /* cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrom.c; sourceTree = ""; }; + B3EBA16F2872967500EAEB37 /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + B3EBA1702872967500EAEB37 /* plugins.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plugins.c; sourceTree = ""; }; + B3EBA1712872967500EAEB37 /* gte_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gte_neon.S; sourceTree = ""; }; + B3EBA1722872967500EAEB37 /* gte_neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gte_neon.h; sourceTree = ""; }; + B3EBA1732872967500EAEB37 /* r3000a.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = r3000a.c; sourceTree = ""; }; + B3EBA1742872967500EAEB37 /* socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = socket.c; sourceTree = ""; }; + B3EBA1752872967500EAEB37 /* psxdma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxdma.c; sourceTree = ""; }; + B3EBA1762872967500EAEB37 /* ppf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ppf.h; sourceTree = ""; }; + B3EBA1772872967500EAEB37 /* psxcounters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxcounters.h; sourceTree = ""; }; + B3EBA1782872967500EAEB37 /* gte_divider.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gte_divider.c; sourceTree = ""; }; + B3EBA1792872967500EAEB37 /* mdec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mdec.c; sourceTree = ""; }; + B3EBA17A2872967500EAEB37 /* sio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sio.c; sourceTree = ""; }; + B3EBA17B2872967500EAEB37 /* spu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spu.h; sourceTree = ""; }; + B3EBA17C2872967500EAEB37 /* debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debug.c; sourceTree = ""; }; + B3EBA17D2872967500EAEB37 /* decode_xa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = decode_xa.h; sourceTree = ""; }; + B3EBA17E2872967500EAEB37 /* cheat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cheat.c; sourceTree = ""; }; + B3EBA17F2872967500EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBA1802872967500EAEB37 /* psxcommon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxcommon.c; sourceTree = ""; }; + B3EBA1812872967500EAEB37 /* gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu.h; sourceTree = ""; }; + B3EBA1822872967500EAEB37 /* psxbios.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxbios.c; sourceTree = ""; }; + B3EBA1832872967500EAEB37 /* database.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = database.h; sourceTree = ""; }; + B3EBA1842872967500EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA1862872967500EAEB37 /* new_dynarec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = new_dynarec.h; sourceTree = ""; }; + B3EBA1872872967500EAEB37 /* assem_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_arm.c; sourceTree = ""; }; + B3EBA1882872967500EAEB37 /* assem_arm64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_arm64.h; sourceTree = ""; }; + B3EBA1892872967500EAEB37 /* linkage_arm64.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_arm64.S; sourceTree = ""; }; + B3EBA18A2872967500EAEB37 /* pcsxmem_inline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pcsxmem_inline.c; sourceTree = ""; }; + B3EBA18C2872967500EAEB37 /* trace_intr */ = {isa = PBXFileReference; lastKnownFileType = text; path = trace_intr; sourceTree = ""; }; + B3EBA18D2872967500EAEB37 /* trace_drc_chk */ = {isa = PBXFileReference; lastKnownFileType = text; path = trace_drc_chk; sourceTree = ""; }; + B3EBA18E2872967500EAEB37 /* emu_if.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emu_if.c; sourceTree = ""; }; + B3EBA18F2872967500EAEB37 /* pcsxmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pcsxmem.c; sourceTree = ""; }; + B3EBA1902872967500EAEB37 /* assem_arm64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = assem_arm64.c; sourceTree = ""; }; + B3EBA1912872967500EAEB37 /* assem_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = assem_arm.h; sourceTree = ""; }; + B3EBA1922872967500EAEB37 /* new_dynarec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = new_dynarec.c; sourceTree = ""; }; + B3EBA1932872967500EAEB37 /* linkage_offsets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linkage_offsets.h; sourceTree = ""; }; + B3EBA1942872967500EAEB37 /* linkage_arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = linkage_arm.S; sourceTree = ""; }; + B3EBA1952872967500EAEB37 /* new_dynarec_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = new_dynarec_config.h; sourceTree = ""; }; + B3EBA1962872967500EAEB37 /* pcsxmem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcsxmem.h; sourceTree = ""; }; + B3EBA1972872967500EAEB37 /* emu_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emu_if.h; sourceTree = ""; }; + B3EBA1982872967500EAEB37 /* psxhle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxhle.c; sourceTree = ""; }; + B3EBA1992872967500EAEB37 /* cdriso.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdriso.h; sourceTree = ""; }; + B3EBA19A2872967500EAEB37 /* gte_arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gte_arm.S; sourceTree = ""; }; + B3EBA19B2872967500EAEB37 /* psxmem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxmem.c; sourceTree = ""; }; + B3EBA19C2872967500EAEB37 /* memmap_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap_win32.c; sourceTree = ""; }; + B3EBA19D2872967500EAEB37 /* psxhw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxhw.c; sourceTree = ""; }; + B3EBA19E2872967500EAEB37 /* gte.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gte.c; sourceTree = ""; }; + B3EBA19F2872967500EAEB37 /* psxinterpreter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxinterpreter.c; sourceTree = ""; }; + B3EBA1A02872967500EAEB37 /* gte_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gte_arm.h; sourceTree = ""; }; + B3EBA1A12872967500EAEB37 /* system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = system.h; sourceTree = ""; }; + B3EBA1A22872967500EAEB37 /* psxmem_map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxmem_map.h; sourceTree = ""; }; + B3EBA1A42872967500EAEB37 /* plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugin.h; sourceTree = ""; }; + B3EBA1A52872967500EAEB37 /* mem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mem.c; sourceTree = ""; }; + B3EBA1A62872967500EAEB37 /* plugin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = plugin.c; sourceTree = ""; }; + B3EBA1A72872967500EAEB37 /* mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = ""; }; + B3EBA1A82872967500EAEB37 /* misc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = misc.c; sourceTree = ""; }; + B3EBA1A92872967500EAEB37 /* coff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coff.h; sourceTree = ""; }; + B3EBA1AA2872967500EAEB37 /* ppf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ppf.c; sourceTree = ""; }; + B3EBA1AB2872967500EAEB37 /* mdec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdec.h; sourceTree = ""; }; + B3EBA1AC2872967500EAEB37 /* gte_divider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gte_divider.h; sourceTree = ""; }; + B3EBA1AD2872967500EAEB37 /* psxcounters.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psxcounters.c; sourceTree = ""; }; + B3EBA1AE2872967500EAEB37 /* socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = socket.h; sourceTree = ""; }; + B3EBA1AF2872967500EAEB37 /* r3000a.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = r3000a.h; sourceTree = ""; }; + B3EBA1B02872967500EAEB37 /* psxdma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psxdma.h; sourceTree = ""; }; + B3EBA1B12872967500EAEB37 /* plugins.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = plugins.h; sourceTree = ""; }; + B3EBA1B22872967500EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA1B32872967500EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA1B42872967500EAEB37 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3EBA1B72872967500EAEB37 /* gpuDraw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpuDraw.c; sourceTree = ""; }; + B3EBA1B82872967500EAEB37 /* gpuTexture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpuTexture.c; sourceTree = ""; }; + B3EBA1B92872967500EAEB37 /* gpuPrim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpuPrim.c; sourceTree = ""; }; + B3EBA1BA2872967500EAEB37 /* gpulib_if.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpulib_if.c; sourceTree = ""; }; + B3EBA1BB2872967500EAEB37 /* gpuFps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpuFps.h; sourceTree = ""; }; + B3EBA1BC2872967500EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1BD2872967500EAEB37 /* gpuPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpuPlugin.h; sourceTree = ""; }; + B3EBA1BE2872967500EAEB37 /* gpuStdafx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpuStdafx.h; sourceTree = ""; }; + B3EBA1BF2872967500EAEB37 /* gpuTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpuTexture.h; sourceTree = ""; }; + B3EBA1C02872967500EAEB37 /* gpuDraw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpuDraw.h; sourceTree = ""; }; + B3EBA1C12872967500EAEB37 /* gpuPrim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpuPrim.h; sourceTree = ""; }; + B3EBA1C22872967500EAEB37 /* gpuFps.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = gpuFps.m; sourceTree = ""; }; + B3EBA1C32872967500EAEB37 /* hud.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hud.c; sourceTree = ""; }; + B3EBA1C42872967500EAEB37 /* gpuPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = gpuPlugin.m; sourceTree = ""; }; + B3EBA1C52872967500EAEB37 /* gpuExternals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpuExternals.h; sourceTree = ""; }; + B3EBA1C72872967500EAEB37 /* gpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpu.c; sourceTree = ""; }; + B3EBA1C82872967500EAEB37 /* gpulib_if.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpulib_if.c; sourceTree = ""; }; + B3EBA1C92872967500EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1CA2872967500EAEB37 /* draw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = draw.c; sourceTree = ""; }; + B3EBA1CB2872967500EAEB37 /* prim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = prim.c; sourceTree = ""; }; + B3EBA1CC2872967500EAEB37 /* fps.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fps.c; sourceTree = ""; }; + B3EBA1CD2872967500EAEB37 /* gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu.h; sourceTree = ""; }; + B3EBA1CE2872967500EAEB37 /* soft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = soft.c; sourceTree = ""; }; + B3EBA1CF2872967500EAEB37 /* draw_pl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = draw_pl.c; sourceTree = ""; }; + B3EBA1D12872967500EAEB37 /* main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; + B3EBA1D22872967500EAEB37 /* guncon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = guncon.c; sourceTree = ""; }; + B3EBA1D32872967500EAEB37 /* externals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = externals.h; sourceTree = ""; }; + B3EBA1D42872967500EAEB37 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B3EBA1D52872967500EAEB37 /* pad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pad.c; sourceTree = ""; }; + B3EBA1D72872967500EAEB37 /* gpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpu.c; sourceTree = ""; }; + B3EBA1D82872967500EAEB37 /* Makefile.test */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.test; sourceTree = ""; }; + B3EBA1D92872967500EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1DA2872967500EAEB37 /* gpulib.mak */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = gpulib.mak; sourceTree = ""; }; + B3EBA1DB2872967500EAEB37 /* gpulib_thread_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpulib_thread_if.h; sourceTree = ""; }; + B3EBA1DC2872967500EAEB37 /* gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu.h; sourceTree = ""; }; + B3EBA1DD2872967500EAEB37 /* test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = ""; }; + B3EBA1DE2872967500EAEB37 /* vout_pl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vout_pl.c; sourceTree = ""; }; + B3EBA1DF2872967500EAEB37 /* gpulib_thread_if.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gpulib_thread_if.c; sourceTree = ""; }; + B3EBA1E02872967500EAEB37 /* vout_sdl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vout_sdl.c; sourceTree = ""; }; + B3EBA1E22872967500EAEB37 /* cdrcimg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cdrcimg.c; sourceTree = ""; }; + B3EBA1E32872967500EAEB37 /* cdrcimg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrcimg.h; sourceTree = ""; }; + B3EBA1E52872967600EAEB37 /* xa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xa.h; sourceTree = ""; }; + B3EBA1E62872967600EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1E72872967600EAEB37 /* spunull.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spunull.c; sourceTree = ""; }; + B3EBA1E82872967600EAEB37 /* register.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = register.h; sourceTree = ""; }; + B3EBA1EA2872967600EAEB37 /* psx_gpu_if.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psx_gpu_if.c; sourceTree = ""; }; + B3EBA1EB2872967600EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1ED2872967600EAEB37 /* psx_gpu_offsets_update.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psx_gpu_offsets_update.c; sourceTree = ""; }; + B3EBA1EE2872967600EAEB37 /* psx_gpu_standard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psx_gpu_standard.c; sourceTree = ""; }; + B3EBA1EF2872967600EAEB37 /* vector_ops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_ops.h; sourceTree = ""; }; + B3EBA1F12872967600EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA1F22872967600EAEB37 /* psx_dump_check.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = psx_dump_check.sh; sourceTree = ""; }; + B3EBA1F32872967600EAEB37 /* psx_gpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psx_gpu.c; sourceTree = ""; }; + B3EBA1F42872967600EAEB37 /* psx_gpu_parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psx_gpu_parse.c; sourceTree = ""; }; + B3EBA1F52872967600EAEB37 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + B3EBA1F62872967600EAEB37 /* psx_gpu_arm_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = psx_gpu_arm_neon.S; sourceTree = ""; }; + B3EBA1F72872967600EAEB37 /* psx_gpu_4x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psx_gpu_4x.c; sourceTree = ""; }; + B3EBA1F82872967600EAEB37 /* psx_gpu_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psx_gpu_main.c; sourceTree = ""; }; + B3EBA1F92872967600EAEB37 /* psx_gpu_offsets.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psx_gpu_offsets.h; sourceTree = ""; }; + B3EBA1FA2872967600EAEB37 /* psx_gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psx_gpu.h; sourceTree = ""; }; + B3EBA1FC2872967600EAEB37 /* dma.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dma.h; sourceTree = ""; }; + B3EBA1FD2872967600EAEB37 /* xa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xa.h; sourceTree = ""; }; + B3EBA1FE2872967600EAEB37 /* spu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spu.c; sourceTree = ""; }; + B3EBA1FF2872967600EAEB37 /* stdafx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdafx.h; sourceTree = ""; }; + B3EBA2002872967600EAEB37 /* out.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = out.c; sourceTree = ""; }; + B3EBA2012872967600EAEB37 /* spu_c64x.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spu_c64x.h; sourceTree = ""; }; + B3EBA2022872967600EAEB37 /* psemuxa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psemuxa.h; sourceTree = ""; }; + B3EBA2032872967600EAEB37 /* adsr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adsr.c; sourceTree = ""; }; + B3EBA2042872967600EAEB37 /* pulseaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pulseaudio.c; sourceTree = ""; }; + B3EBA2052872967600EAEB37 /* alsa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alsa.c; sourceTree = ""; }; + B3EBA2062872967600EAEB37 /* spu_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spu_config.h; sourceTree = ""; }; + B3EBA2072872967600EAEB37 /* registers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = registers.h; sourceTree = ""; }; + B3EBA2082872967600EAEB37 /* sdl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl.c; sourceTree = ""; }; + B3EBA2092872967600EAEB37 /* spu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spu.h; sourceTree = ""; }; + B3EBA20A2872967600EAEB37 /* xa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xa.c; sourceTree = ""; }; + B3EBA20B2872967600EAEB37 /* dma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dma.c; sourceTree = ""; }; + B3EBA20C2872967600EAEB37 /* reverb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reverb.c; sourceTree = ""; }; + B3EBA20D2872967600EAEB37 /* externals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = externals.h; sourceTree = ""; }; + B3EBA20E2872967600EAEB37 /* oss.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = oss.c; sourceTree = ""; }; + B3EBA20F2872967600EAEB37 /* out.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = out.h; sourceTree = ""; }; + B3EBA2102872967600EAEB37 /* adsr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = adsr.h; sourceTree = ""; }; + B3EBA2112872967600EAEB37 /* spu_c64x_dspcode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spu_c64x_dspcode.c; sourceTree = ""; }; + B3EBA2122872967600EAEB37 /* spu_c64x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = spu_c64x.c; sourceTree = ""; }; + B3EBA2132872967600EAEB37 /* arm_utils.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = arm_utils.S; sourceTree = ""; }; + B3EBA2142872967600EAEB37 /* Makefile.c64p */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.c64p; sourceTree = ""; }; + B3EBA2152872967600EAEB37 /* registers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = registers.c; sourceTree = ""; }; + B3EBA2162872967600EAEB37 /* freeze.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = freeze.c; sourceTree = ""; }; + B3EBA2172872967600EAEB37 /* nullsnd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nullsnd.c; sourceTree = ""; }; + B3EBA2182872967600EAEB37 /* gauss_i.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gauss_i.h; sourceTree = ""; }; + B3EBA21A2872967600EAEB37 /* gpu_inner_blend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner_blend.h; sourceTree = ""; }; + B3EBA21B2872967600EAEB37 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3EBA21C2872967600EAEB37 /* port.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = port.h; sourceTree = ""; }; + B3EBA21D2872967600EAEB37 /* gpu_inner_light.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner_light.h; sourceTree = ""; }; + B3EBA21E2872967600EAEB37 /* gpu_inner_blend_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner_blend_arm.h; sourceTree = ""; }; + B3EBA21F2872967600EAEB37 /* gpu_fixedpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_fixedpoint.h; sourceTree = ""; }; + B3EBA2202872967600EAEB37 /* gpu_inner_blend_arm7.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner_blend_arm7.h; sourceTree = ""; }; + B3EBA2212872967600EAEB37 /* gpu_raster_line.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_raster_line.h; sourceTree = ""; }; + B3EBA2222872967600EAEB37 /* gpulib_if.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpulib_if.cpp; sourceTree = ""; }; + B3EBA2232872967600EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA2242872967600EAEB37 /* gpu_inner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner.h; sourceTree = ""; }; + B3EBA2252872967600EAEB37 /* gpu_arm.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gpu_arm.S; sourceTree = ""; }; + B3EBA2262872967600EAEB37 /* gpu_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_arm.h; sourceTree = ""; }; + B3EBA2272872967600EAEB37 /* gpu_blit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_blit.h; sourceTree = ""; }; + B3EBA2282872967600EAEB37 /* gpu_raster_polygon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_raster_polygon.h; sourceTree = ""; }; + B3EBA2292872967600EAEB37 /* gpu_inner_light_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner_light_arm.h; sourceTree = ""; }; + B3EBA22A2872967600EAEB37 /* gpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu.h; sourceTree = ""; }; + B3EBA22B2872967600EAEB37 /* gpu_command.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_command.h; sourceTree = ""; }; + B3EBA22C2872967600EAEB37 /* gpu_inner_blend_arm5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner_blend_arm5.h; sourceTree = ""; }; + B3EBA22D2872967600EAEB37 /* gpu_unai.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_unai.h; sourceTree = ""; }; + B3EBA22E2872967600EAEB37 /* README_senquack.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README_senquack.txt; sourceTree = ""; }; + B3EBA22F2872967600EAEB37 /* gpu_raster_image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_raster_image.h; sourceTree = ""; }; + B3EBA2302872967600EAEB37 /* gpu_raster_sprite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_raster_sprite.h; sourceTree = ""; }; + B3EBA2312872967600EAEB37 /* profiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = ""; }; + B3EBA2322872967600EAEB37 /* gpu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gpu.cpp; sourceTree = ""; }; + B3EBA2332872967600EAEB37 /* gpu_inner_quantization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gpu_inner_quantization.h; sourceTree = ""; }; + B3EBA2342872967600EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA2372872967600EAEB37 /* lightning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lightning.h; sourceTree = ""; }; + B3EBA2382872967600EAEB37 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + B3EBA2392872967600EAEB37 /* arm_features.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = arm_features.h; sourceTree = ""; }; + B3EBA23C2872967600EAEB37 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3EBA23D2872967600EAEB37 /* psemu_plugin_defs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psemu_plugin_defs.h; sourceTree = ""; }; + B3EBA23E2872967600EAEB37 /* pcnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcnt.h; sourceTree = ""; }; + B3EBA2402872967600EAEB37 /* lightrec-config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "lightrec-config.h"; sourceTree = ""; }; + B3EBA2412872967600EAEB37 /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; + B3EBA2422872967600EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA2432872967600EAEB37 /* Makefile.libretro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.libretro; sourceTree = ""; }; + B3EBA2442872967600EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBA2452872967600EAEB37 /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + B3EBA2462872967600EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA2492872967600EAEB37 /* custom-issue-report.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "custom-issue-report.md"; sourceTree = ""; }; + B3EBA24C2872967600EAEB37 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B3EBA24D2872967600EAEB37 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B3EBA24F2872967600EAEB37 /* vfs_implementation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vfs_implementation.c; sourceTree = ""; }; + B3EBA2512872967600EAEB37 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B3EBA2522872967600EAEB37 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B3EBA2532872967600EAEB37 /* fopen_utf8.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fopen_utf8.c; sourceTree = ""; }; + B3EBA2552872967600EAEB37 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B3EBA2572872967600EAEB37 /* file_stream_transforms.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream_transforms.c; sourceTree = ""; }; + B3EBA2582872967600EAEB37 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B3EBA25B2872967600EAEB37 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B3EBA25D2872967600EAEB37 /* vfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs.h; sourceTree = ""; }; + B3EBA25E2872967600EAEB37 /* vfs_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vfs_implementation.h; sourceTree = ""; }; + B3EBA2602872967600EAEB37 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B3EBA2612872967600EAEB37 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B3EBA2622872967600EAEB37 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B3EBA2632872967600EAEB37 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B3EBA2642872967600EAEB37 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B3EBA2662872967600EAEB37 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B3EBA2672872967600EAEB37 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B3EBA2682872967600EAEB37 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B3EBA26A2872967600EAEB37 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B3EBA26B2872967600EAEB37 /* file_stream_transforms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream_transforms.h; sourceTree = ""; }; + B3EBA26C2872967600EAEB37 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B3EBA26E2872967600EAEB37 /* rtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtime.h; sourceTree = ""; }; + B3EBA26F2872967600EAEB37 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B3EBA2702872967600EAEB37 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B3EBA2712872967600EAEB37 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B3EBA2722872967600EAEB37 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B3EBA2742872967600EAEB37 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B3EBA2762872967600EAEB37 /* rtime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtime.c; sourceTree = ""; }; + B3EBA2782872967600EAEB37 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B3EBA2792872967600EAEB37 /* ChangeLog.df */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog.df; sourceTree = ""; }; + B3EBA27C2872967600EAEB37 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = ""; }; + B3EBA27D2872967600EAEB37 /* bootstrap */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = bootstrap; sourceTree = ""; }; + B3EBA27E2872967600EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA27F2872967600EAEB37 /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + B3EBA2822872967600EAEB37 /* jit_aarch64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_aarch64.h; sourceTree = ""; }; + B3EBA2832872967600EAEB37 /* jit_arm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_arm.h; sourceTree = ""; }; + B3EBA2842872967600EAEB37 /* jit_riscv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_riscv.h; sourceTree = ""; }; + B3EBA2852872967600EAEB37 /* jit_s390.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_s390.h; sourceTree = ""; }; + B3EBA2862872967600EAEB37 /* jit_x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_x86.h; sourceTree = ""; }; + B3EBA2872872967600EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBA2882872967600EAEB37 /* jit_alpha.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_alpha.h; sourceTree = ""; }; + B3EBA2892872967600EAEB37 /* jit_ppc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_ppc.h; sourceTree = ""; }; + B3EBA28A2872967600EAEB37 /* jit_hppa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_hppa.h; sourceTree = ""; }; + B3EBA28B2872967600EAEB37 /* jit_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_private.h; sourceTree = ""; }; + B3EBA28C2872967600EAEB37 /* jit_mips.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_mips.h; sourceTree = ""; }; + B3EBA28D2872967600EAEB37 /* jit_ia64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_ia64.h; sourceTree = ""; }; + B3EBA28E2872967600EAEB37 /* jit_sparc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jit_sparc.h; sourceTree = ""; }; + B3EBA28F2872967600EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBA2902872967600EAEB37 /* lightning.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.h.in; sourceTree = ""; }; + B3EBA2912872967600EAEB37 /* .gitmodules */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitmodules; sourceTree = ""; }; + B3EBA2922872967600EAEB37 /* COPYING.LESSER */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.LESSER; sourceTree = ""; }; + B3EBA2932872967600EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA2942872967600EAEB37 /* TODO */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + B3EBA2952872967600EAEB37 /* COPYING.DOC */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING.DOC; sourceTree = ""; }; + B3EBA2962872967600EAEB37 /* bootstrap.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = bootstrap.conf; sourceTree = ""; }; + B3EBA2972872967600EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBA2982872967600EAEB37 /* lightning.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.pc.in; sourceTree = ""; }; + B3EBA2992872967600EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBA29A2872967600EAEB37 /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + B3EBA29B2872967600EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA29C2872967600EAEB37 /* size.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = size.c; sourceTree = ""; }; + B3EBA29D2872967600EAEB37 /* .gitattributes */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitattributes; sourceTree = ""; }; + B3EBA29F2872967600EAEB37 /* jit_riscv-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-sz.c"; sourceTree = ""; }; + B3EBA2A02872967600EAEB37 /* jit_alpha-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-fpu.c"; sourceTree = ""; }; + B3EBA2A12872967600EAEB37 /* jit_sparc-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-fpu.c"; sourceTree = ""; }; + B3EBA2A22872967600EAEB37 /* jit_alpha-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-cpu.c"; sourceTree = ""; }; + B3EBA2A32872967600EAEB37 /* jit_sparc-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-cpu.c"; sourceTree = ""; }; + B3EBA2A42872967600EAEB37 /* jit_ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_ppc.c; sourceTree = ""; }; + B3EBA2A52872967600EAEB37 /* jit_hppa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_hppa.c; sourceTree = ""; }; + B3EBA2A62872967600EAEB37 /* jit_alpha.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_alpha.c; sourceTree = ""; }; + B3EBA2A72872967600EAEB37 /* jit_alpha-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_alpha-sz.c"; sourceTree = ""; }; + B3EBA2A82872967600EAEB37 /* jit_memory.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_memory.c; sourceTree = ""; }; + B3EBA2A92872967600EAEB37 /* jit_hppa-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-fpu.c"; sourceTree = ""; }; + B3EBA2AA2872967600EAEB37 /* jit_arm-swf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-swf.c"; sourceTree = ""; }; + B3EBA2AB2872967600EAEB37 /* jit_ia64-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-fpu.c"; sourceTree = ""; }; + B3EBA2AC2872967600EAEB37 /* jit_size.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_size.c; sourceTree = ""; }; + B3EBA2AD2872967600EAEB37 /* jit_mips.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_mips.c; sourceTree = ""; }; + B3EBA2AE2872967600EAEB37 /* jit_ppc-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-fpu.c"; sourceTree = ""; }; + B3EBA2AF2872967600EAEB37 /* jit_disasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_disasm.c; sourceTree = ""; }; + B3EBA2B02872967600EAEB37 /* jit_s390-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-fpu.c"; sourceTree = ""; }; + B3EBA2B12872967600EAEB37 /* jit_sparc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_sparc.c; sourceTree = ""; }; + B3EBA2B22872967600EAEB37 /* jit_ppc-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-cpu.c"; sourceTree = ""; }; + B3EBA2B32872967600EAEB37 /* jit_hppa-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-sz.c"; sourceTree = ""; }; + B3EBA2B42872967600EAEB37 /* jit_ia64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_ia64.c; sourceTree = ""; }; + B3EBA2B52872967600EAEB37 /* jit_mips-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-sz.c"; sourceTree = ""; }; + B3EBA2B62872967600EAEB37 /* jit_s390-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-cpu.c"; sourceTree = ""; }; + B3EBA2B72872967600EAEB37 /* jit_ia64-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-sz.c"; sourceTree = ""; }; + B3EBA2B82872967600EAEB37 /* jit_arm-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-cpu.c"; sourceTree = ""; }; + B3EBA2B92872967600EAEB37 /* jit_hppa-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_hppa-cpu.c"; sourceTree = ""; }; + B3EBA2BA2872967600EAEB37 /* jit_sparc-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_sparc-sz.c"; sourceTree = ""; }; + B3EBA2BB2872967600EAEB37 /* jit_ia64-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ia64-cpu.c"; sourceTree = ""; }; + B3EBA2BC2872967600EAEB37 /* jit_aarch64-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-sz.c"; sourceTree = ""; }; + B3EBA2BD2872967600EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBA2BE2872967600EAEB37 /* jit_riscv-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-fpu.c"; sourceTree = ""; }; + B3EBA2BF2872967600EAEB37 /* jit_aarch64-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-cpu.c"; sourceTree = ""; }; + B3EBA2C02872967600EAEB37 /* jit_x86-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-sz.c"; sourceTree = ""; }; + B3EBA2C12872967600EAEB37 /* jit_note.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_note.c; sourceTree = ""; }; + B3EBA2C22872967600EAEB37 /* jit_aarch64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_aarch64.c; sourceTree = ""; }; + B3EBA2C32872967600EAEB37 /* jit_x86-x87.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-x87.c"; sourceTree = ""; }; + B3EBA2C42872967600EAEB37 /* jit_rewind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_rewind.c; sourceTree = ""; }; + B3EBA2C52872967600EAEB37 /* jit_riscv-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_riscv-cpu.c"; sourceTree = ""; }; + B3EBA2C62872967600EAEB37 /* jit_aarch64-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_aarch64-fpu.c"; sourceTree = ""; }; + B3EBA2C72872967600EAEB37 /* jit_x86-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-cpu.c"; sourceTree = ""; }; + B3EBA2C82872967600EAEB37 /* jit_s390.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_s390.c; sourceTree = ""; }; + B3EBA2C92872967600EAEB37 /* jit_print.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_print.c; sourceTree = ""; }; + B3EBA2CA2872967600EAEB37 /* jit_riscv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_riscv.c; sourceTree = ""; }; + B3EBA2CB2872967600EAEB37 /* jit_mips-cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-cpu.c"; sourceTree = ""; }; + B3EBA2CC2872967600EAEB37 /* jit_x86-sse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_x86-sse.c"; sourceTree = ""; }; + B3EBA2CD2872967600EAEB37 /* jit_arm-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-sz.c"; sourceTree = ""; }; + B3EBA2CE2872967600EAEB37 /* jit_arm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_arm.c; sourceTree = ""; }; + B3EBA2CF2872967600EAEB37 /* jit_arm-vfp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_arm-vfp.c"; sourceTree = ""; }; + B3EBA2D02872967600EAEB37 /* jit_s390-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_s390-sz.c"; sourceTree = ""; }; + B3EBA2D12872967600EAEB37 /* jit_mips-fpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_mips-fpu.c"; sourceTree = ""; }; + B3EBA2D22872967600EAEB37 /* jit_names.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_names.c; sourceTree = ""; }; + B3EBA2D32872967600EAEB37 /* jit_ppc-sz.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "jit_ppc-sz.c"; sourceTree = ""; }; + B3EBA2D42872967600EAEB37 /* jit_x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jit_x86.c; sourceTree = ""; }; + B3EBA2D52872967600EAEB37 /* lightning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightning.c; sourceTree = ""; }; + B3EBA2D72872967600EAEB37 /* gnulib-cache.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; path = "gnulib-cache.m4"; sourceTree = ""; }; + B3EBA2D82872967600EAEB37 /* .gitkeep */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitkeep; sourceTree = ""; }; + B3EBA2D92872967600EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA2DA2872967600EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBA2DC2872967600EAEB37 /* fact.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fact.c; sourceTree = ""; }; + B3EBA2DD2872967600EAEB37 /* printf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printf.c; sourceTree = ""; }; + B3EBA2DE2872967600EAEB37 /* rfib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rfib.c; sourceTree = ""; }; + B3EBA2DF2872967600EAEB37 /* rpn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpn.c; sourceTree = ""; }; + B3EBA2E02872967600EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBA2E12872967600EAEB37 /* incr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = incr.c; sourceTree = ""; }; + B3EBA2E22872967600EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA2E32872967600EAEB37 /* ifib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ifib.c; sourceTree = ""; }; + B3EBA2E42872967600EAEB37 /* lightning.texi */ = {isa = PBXFileReference; lastKnownFileType = text; path = lightning.texi; sourceTree = ""; }; + B3EBA2E52872967600EAEB37 /* .cvsignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .cvsignore; sourceTree = ""; }; + B3EBA2E62872967600EAEB37 /* body.texi */ = {isa = PBXFileReference; lastKnownFileType = text; path = body.texi; sourceTree = ""; }; + B3EBA2E72872967600EAEB37 /* THANKS */ = {isa = PBXFileReference; lastKnownFileType = text; path = THANKS; sourceTree = ""; }; + B3EBA2E92872967600EAEB37 /* README-hacking */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-hacking"; sourceTree = ""; }; + B3EBA2EB2872967600EAEB37 /* check.arm.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm.sh; sourceTree = ""; }; + B3EBA2EC2872967600EAEB37 /* range.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = range.ok; sourceTree = ""; }; + B3EBA2ED2872967600EAEB37 /* ldsti.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldsti.ok; sourceTree = ""; }; + B3EBA2EE2872967600EAEB37 /* call.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = call.tst; sourceTree = ""; }; + B3EBA2EF2872967600EAEB37 /* alu_rsh.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsh.ok; sourceTree = ""; }; + B3EBA2F02872967600EAEB37 /* carry.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = carry.tst; sourceTree = ""; }; + B3EBA2F12872967600EAEB37 /* cvt.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = cvt.ok; sourceTree = ""; }; + B3EBA2F22872967600EAEB37 /* stack.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = stack.tst; sourceTree = ""; }; + B3EBA2F32872967600EAEB37 /* jmpr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = jmpr.ok; sourceTree = ""; }; + B3EBA2F42872967600EAEB37 /* alu_and.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_and.ok; sourceTree = ""; }; + B3EBA2F52872967600EAEB37 /* float.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = float.ok; sourceTree = ""; }; + B3EBA2F62872967600EAEB37 /* varargs.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = varargs.ok; sourceTree = ""; }; + B3EBA2F72872967600EAEB37 /* alu_neg.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_neg.tst; sourceTree = ""; }; + B3EBA2F82872967600EAEB37 /* tramp.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = tramp.ok; sourceTree = ""; }; + B3EBA2F92872967600EAEB37 /* alu_lsh.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_lsh.tst; sourceTree = ""; }; + B3EBA2FA2872967600EAEB37 /* ldstxr-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxr-c.ok"; sourceTree = ""; }; + B3EBA2FB2872967600EAEB37 /* fib.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fib.ok; sourceTree = ""; }; + B3EBA2FC2872967600EAEB37 /* ldstxr-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxr-c.tst"; sourceTree = ""; }; + B3EBA2FD2872967600EAEB37 /* bp.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = bp.ok; sourceTree = ""; }; + B3EBA2FE2872967600EAEB37 /* check.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.swf.sh; sourceTree = ""; }; + B3EBA2FF2872967600EAEB37 /* alu_com.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_com.tst; sourceTree = ""; }; + B3EBA3002872967600EAEB37 /* alu_mul.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_mul.tst; sourceTree = ""; }; + B3EBA3012872967600EAEB37 /* ldstxi-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxi-c.tst"; sourceTree = ""; }; + B3EBA3022872967600EAEB37 /* branch.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = branch.tst; sourceTree = ""; }; + B3EBA3032872967600EAEB37 /* check.nodata.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.nodata.sh; sourceTree = ""; }; + B3EBA3042872967600EAEB37 /* ldstr-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstr-c.ok"; sourceTree = ""; }; + B3EBA3052872967600EAEB37 /* alux_add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_add.ok; sourceTree = ""; }; + B3EBA3062872967600EAEB37 /* branch.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = branch.ok; sourceTree = ""; }; + B3EBA3072872967600EAEB37 /* allocai.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocai.tst; sourceTree = ""; }; + B3EBA3082872967600EAEB37 /* ldstxi.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxi.ok; sourceTree = ""; }; + B3EBA3092872967600EAEB37 /* alu_rem.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rem.ok; sourceTree = ""; }; + B3EBA30A2872967600EAEB37 /* fop_abs.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_abs.ok; sourceTree = ""; }; + B3EBA30B2872967600EAEB37 /* ccall.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ccall.c; sourceTree = ""; }; + B3EBA30C2872967600EAEB37 /* bp.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = bp.tst; sourceTree = ""; }; + B3EBA30D2872967600EAEB37 /* alu_sub.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_sub.ok; sourceTree = ""; }; + B3EBA30E2872967600EAEB37 /* carry.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = carry.ok; sourceTree = ""; }; + B3EBA30F2872967600EAEB37 /* live.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = live.tst; sourceTree = ""; }; + B3EBA3102872967600EAEB37 /* clobber.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = clobber.tst; sourceTree = ""; }; + B3EBA3112872967600EAEB37 /* check.arm.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm.swf.sh; sourceTree = ""; }; + B3EBA3122872967600EAEB37 /* alu_xor.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_xor.ok; sourceTree = ""; }; + B3EBA3132872967600EAEB37 /* alu_rsb.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsb.ok; sourceTree = ""; }; + B3EBA3142872967600EAEB37 /* run-test */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "run-test"; sourceTree = ""; }; + B3EBA3152872967600EAEB37 /* va_list.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = va_list.tst; sourceTree = ""; }; + B3EBA3162872967600EAEB37 /* put.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = put.ok; sourceTree = ""; }; + B3EBA3172872967600EAEB37 /* alux_sub.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_sub.tst; sourceTree = ""; }; + B3EBA3182872967600EAEB37 /* fop_sqrt.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_sqrt.tst; sourceTree = ""; }; + B3EBA3192872967600EAEB37 /* setcode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = setcode.c; sourceTree = ""; }; + B3EBA31A2872967600EAEB37 /* ret.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ret.tst; sourceTree = ""; }; + B3EBA31B2872967600EAEB37 /* alu_lsh.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_lsh.ok; sourceTree = ""; }; + B3EBA31C2872967600EAEB37 /* qalu.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = qalu.inc; sourceTree = ""; }; + B3EBA31D2872967600EAEB37 /* va_list.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = va_list.ok; sourceTree = ""; }; + B3EBA31E2872967600EAEB37 /* allocar.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocar.ok; sourceTree = ""; }; + B3EBA31F2872967600EAEB37 /* ldstxi.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxi.tst; sourceTree = ""; }; + B3EBA3202872967600EAEB37 /* alu_mul.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_mul.ok; sourceTree = ""; }; + B3EBA3212872967600EAEB37 /* qalu_div.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_div.tst; sourceTree = ""; }; + B3EBA3222872967600EAEB37 /* align.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = align.ok; sourceTree = ""; }; + B3EBA3232872967600EAEB37 /* alu_rsh.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsh.tst; sourceTree = ""; }; + B3EBA3242872967600EAEB37 /* add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = add.ok; sourceTree = ""; }; + B3EBA3252872967600EAEB37 /* fop_sqrt.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_sqrt.ok; sourceTree = ""; }; + B3EBA3262872967600EAEB37 /* ldsti.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldsti.tst; sourceTree = ""; }; + B3EBA3272872967600EAEB37 /* rpn.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = rpn.ok; sourceTree = ""; }; + B3EBA3282872967600EAEB37 /* bswap.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = bswap.ok; sourceTree = ""; }; + B3EBA3292872967600EAEB37 /* qalu_mul.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_mul.ok; sourceTree = ""; }; + B3EBA32A2872967600EAEB37 /* self.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = self.c; sourceTree = ""; }; + B3EBA32B2872967600EAEB37 /* range.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = range.tst; sourceTree = ""; }; + B3EBA32C2872967600EAEB37 /* jmpr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = jmpr.tst; sourceTree = ""; }; + B3EBA32D2872967600EAEB37 /* check.x87.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.x87.sh; sourceTree = ""; }; + B3EBA32E2872967600EAEB37 /* alu_com.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_com.ok; sourceTree = ""; }; + B3EBA32F2872967600EAEB37 /* alux_add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_add.tst; sourceTree = ""; }; + B3EBA3302872967600EAEB37 /* bswap.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = bswap.tst; sourceTree = ""; }; + B3EBA3312872967600EAEB37 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + B3EBA3322872967600EAEB37 /* allocai.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocai.ok; sourceTree = ""; }; + B3EBA3332872967600EAEB37 /* alu_add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_add.tst; sourceTree = ""; }; + B3EBA3342872967600EAEB37 /* ldstr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstr.tst; sourceTree = ""; }; + B3EBA3352872967600EAEB37 /* call.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = call.ok; sourceTree = ""; }; + B3EBA3362872967600EAEB37 /* 3to2.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = 3to2.ok; sourceTree = ""; }; + B3EBA3372872967600EAEB37 /* rpn.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = rpn.tst; sourceTree = ""; }; + B3EBA3382872967600EAEB37 /* ldstxr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxr.tst; sourceTree = ""; }; + B3EBA3392872967600EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA33A2872967700EAEB37 /* alu_rsb.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rsb.tst; sourceTree = ""; }; + B3EBA33B2872967700EAEB37 /* alu_sub.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_sub.tst; sourceTree = ""; }; + B3EBA33C2872967700EAEB37 /* cva_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cva_list.c; sourceTree = ""; }; + B3EBA33D2872967700EAEB37 /* divi.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = divi.ok; sourceTree = ""; }; + B3EBA33E2872967700EAEB37 /* ldstr-c.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstr-c.tst"; sourceTree = ""; }; + B3EBA33F2872967700EAEB37 /* alux_sub.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alux_sub.ok; sourceTree = ""; }; + B3EBA3402872967700EAEB37 /* ldst.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ldst.inc; sourceTree = ""; }; + B3EBA3412872967700EAEB37 /* add.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = add.tst; sourceTree = ""; }; + B3EBA3422872967700EAEB37 /* check.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.sh; sourceTree = ""; }; + B3EBA3432872967700EAEB37 /* ret.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ret.ok; sourceTree = ""; }; + B3EBA3442872967700EAEB37 /* qalu_mul.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_mul.tst; sourceTree = ""; }; + B3EBA3452872967700EAEB37 /* check.x87.nodata.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.x87.nodata.sh; sourceTree = ""; }; + B3EBA3462872967700EAEB37 /* alu_rem.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_rem.tst; sourceTree = ""; }; + B3EBA3472872967700EAEB37 /* movzr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = movzr.ok; sourceTree = ""; }; + B3EBA3482872967700EAEB37 /* alu_or.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_or.tst; sourceTree = ""; }; + B3EBA3492872967700EAEB37 /* movzr.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = movzr.tst; sourceTree = ""; }; + B3EBA34A2872967700EAEB37 /* alu_neg.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_neg.ok; sourceTree = ""; }; + B3EBA34B2872967700EAEB37 /* alu_and.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_and.tst; sourceTree = ""; }; + B3EBA34C2872967700EAEB37 /* hton.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = hton.tst; sourceTree = ""; }; + B3EBA34D2872967700EAEB37 /* allocar.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = allocar.tst; sourceTree = ""; }; + B3EBA34E2872967700EAEB37 /* hton.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = hton.ok; sourceTree = ""; }; + B3EBA34F2872967700EAEB37 /* qalu_div.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = qalu_div.ok; sourceTree = ""; }; + B3EBA3502872967700EAEB37 /* fib.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fib.tst; sourceTree = ""; }; + B3EBA3512872967700EAEB37 /* alu_add.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_add.ok; sourceTree = ""; }; + B3EBA3522872967700EAEB37 /* alu.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = alu.inc; sourceTree = ""; }; + B3EBA3532872967700EAEB37 /* put.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = put.tst; sourceTree = ""; }; + B3EBA3542872967700EAEB37 /* alu_or.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_or.ok; sourceTree = ""; }; + B3EBA3552872967700EAEB37 /* divi.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = divi.tst; sourceTree = ""; }; + B3EBA3562872967700EAEB37 /* ldstxr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstxr.ok; sourceTree = ""; }; + B3EBA3572872967700EAEB37 /* ctramp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctramp.c; sourceTree = ""; }; + B3EBA3582872967700EAEB37 /* alu_div.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_div.ok; sourceTree = ""; }; + B3EBA3592872967700EAEB37 /* check.arm4.swf.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = check.arm4.swf.sh; sourceTree = ""; }; + B3EBA35A2872967700EAEB37 /* clobber.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = clobber.ok; sourceTree = ""; }; + B3EBA35B2872967700EAEB37 /* nodata.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nodata.c; sourceTree = ""; }; + B3EBA35C2872967700EAEB37 /* align.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = align.tst; sourceTree = ""; }; + B3EBA35D2872967700EAEB37 /* cvt.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = cvt.tst; sourceTree = ""; }; + B3EBA35E2872967700EAEB37 /* ranger.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = ranger.tst; sourceTree = ""; }; + B3EBA35F2872967700EAEB37 /* ldstr.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ldstr.ok; sourceTree = ""; }; + B3EBA3602872967700EAEB37 /* carg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = carg.c; sourceTree = ""; }; + B3EBA3612872967700EAEB37 /* alu_xor.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_xor.tst; sourceTree = ""; }; + B3EBA3622872967700EAEB37 /* live.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = live.ok; sourceTree = ""; }; + B3EBA3632872967700EAEB37 /* fop_abs.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = fop_abs.tst; sourceTree = ""; }; + B3EBA3642872967700EAEB37 /* float.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = float.tst; sourceTree = ""; }; + B3EBA3652872967700EAEB37 /* tramp.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = tramp.tst; sourceTree = ""; }; + B3EBA3662872967700EAEB37 /* varargs.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = varargs.tst; sourceTree = ""; }; + B3EBA3672872967700EAEB37 /* ldstxi-c.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = "ldstxi-c.ok"; sourceTree = ""; }; + B3EBA3682872967700EAEB37 /* all.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = all.tst; sourceTree = ""; }; + B3EBA3692872967700EAEB37 /* alu_div.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = alu_div.tst; sourceTree = ""; }; + B3EBA36A2872967700EAEB37 /* lightning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightning.c; sourceTree = ""; }; + B3EBA36B2872967700EAEB37 /* stack.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = stack.ok; sourceTree = ""; }; + B3EBA36C2872967700EAEB37 /* 3to2.tst */ = {isa = PBXFileReference; lastKnownFileType = text; path = 3to2.tst; sourceTree = ""; }; + B3EBA36D2872967700EAEB37 /* ranger.ok */ = {isa = PBXFileReference; lastKnownFileType = text; path = ranger.ok; sourceTree = ""; }; + B3EBA36F2872967700EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA3712872967700EAEB37 /* pkg-config.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = "pkg-config.pc.in"; sourceTree = ""; }; + B3EBA3722872967700EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA3752872967700EAEB37 /* flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = flac.h; sourceTree = ""; }; + B3EBA3762872967700EAEB37 /* chdconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chdconfig.h; sourceTree = ""; }; + B3EBA3772872967700EAEB37 /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + B3EBA3782872967700EAEB37 /* cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cdrom.h; sourceTree = ""; }; + B3EBA3792872967700EAEB37 /* chd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = chd.h; sourceTree = ""; }; + B3EBA37A2872967700EAEB37 /* huffman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = ""; }; + B3EBA37B2872967700EAEB37 /* coretypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = coretypes.h; sourceTree = ""; }; + B3EBA37D2872967700EAEB37 /* dr_flac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dr_flac.h; sourceTree = ""; }; + B3EBA37F2872967700EAEB37 /* benchmark.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = benchmark.c; sourceTree = ""; }; + B3EBA3802872967700EAEB37 /* build_tests.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build_tests.sh; sourceTree = ""; }; + B3EBA3812872967700EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA3842872967700EAEB37 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B3EBA3852872967700EAEB37 /* inftrees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + B3EBA3862872967700EAEB37 /* inflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; + B3EBA3872872967700EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA3882872967700EAEB37 /* zlib.map */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = zlib.map; sourceTree = ""; }; + B3EBA3892872967700EAEB37 /* zlib.pc.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.cmakein; sourceTree = ""; }; + B3EBA38A2872967700EAEB37 /* zlib.3.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = zlib.3.pdf; sourceTree = ""; }; + B3EBA38B2872967700EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA38C2872967700EAEB37 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + B3EBA38D2872967700EAEB37 /* zlib.3 */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.3; sourceTree = ""; }; + B3EBA38E2872967700EAEB37 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + B3EBA38F2872967700EAEB37 /* deflate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; + B3EBA3902872967700EAEB37 /* inffixed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + B3EBA3912872967700EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA3922872967700EAEB37 /* FAQ */ = {isa = PBXFileReference; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; + B3EBA3932872967700EAEB37 /* gzread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = ""; }; + B3EBA3942872967700EAEB37 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B3EBA3952872967700EAEB37 /* trees.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + B3EBA3962872967700EAEB37 /* zconf.h.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.cmakein; sourceTree = ""; }; + B3EBA3972872967700EAEB37 /* inffast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + B3EBA3982872967700EAEB37 /* treebuild.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = treebuild.xml; sourceTree = ""; }; + B3EBA3992872967700EAEB37 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B3EBA39A2872967700EAEB37 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + B3EBA39B2872967700EAEB37 /* infback.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; + B3EBA39C2872967700EAEB37 /* zutil.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; + B3EBA39D2872967700EAEB37 /* deflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + B3EBA39E2872967700EAEB37 /* zlib.pc.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zlib.pc.in; sourceTree = ""; }; + B3EBA39F2872967700EAEB37 /* zlib2ansi */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = zlib2ansi; sourceTree = ""; }; + B3EBA3A02872967700EAEB37 /* gzguts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = ""; }; + B3EBA3A12872967700EAEB37 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B3EBA3A22872967700EAEB37 /* gzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = ""; }; + B3EBA3A32872967700EAEB37 /* make_vms.com */ = {isa = PBXFileReference; lastKnownFileType = text; path = make_vms.com; sourceTree = ""; }; + B3EBA3A42872967700EAEB37 /* inflate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + B3EBA3A52872967700EAEB37 /* inftrees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; + B3EBA3A62872967700EAEB37 /* INDEX */ = {isa = PBXFileReference; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; + B3EBA3A82872967700EAEB37 /* rfc1952.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1952.txt; sourceTree = ""; }; + B3EBA3A92872967700EAEB37 /* rfc1950.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1950.txt; sourceTree = ""; }; + B3EBA3AA2872967700EAEB37 /* algorithm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; + B3EBA3AB2872967700EAEB37 /* rfc1951.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = rfc1951.txt; sourceTree = ""; }; + B3EBA3AC2872967700EAEB37 /* txtvsbin.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = txtvsbin.txt; sourceTree = ""; }; + B3EBA3AD2872967700EAEB37 /* uncompr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; + B3EBA3AE2872967700EAEB37 /* gzwrite.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = ""; }; + B3EBA3AF2872967700EAEB37 /* trees.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; + B3EBA3B02872967700EAEB37 /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = ""; }; + B3EBA3B12872967700EAEB37 /* crc32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + B3EBA3B22872967700EAEB37 /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + B3EBA3B32872967700EAEB37 /* inffast.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; + B3EBA3B42872967700EAEB37 /* adler32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; + B3EBA3B52872967700EAEB37 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B3EBA3B72872967700EAEB37 /* lzma.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj.filters; sourceTree = ""; }; + B3EBA3B82872967700EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA3B92872967700EAEB37 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B3EBA3BB2872967700EAEB37 /* LzHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzHash.h; sourceTree = ""; }; + B3EBA3BC2872967700EAEB37 /* 7zTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 7zTypes.h; sourceTree = ""; }; + B3EBA3BD2872967700EAEB37 /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = ""; }; + B3EBA3BE2872967700EAEB37 /* Precomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Precomp.h; sourceTree = ""; }; + B3EBA3BF2872967700EAEB37 /* CpuArch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CpuArch.h; sourceTree = ""; }; + B3EBA3C02872967700EAEB37 /* Delta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Delta.h; sourceTree = ""; }; + B3EBA3C12872967700EAEB37 /* LzmaLib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaLib.h; sourceTree = ""; }; + B3EBA3C22872967700EAEB37 /* Lzma86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lzma86.h; sourceTree = ""; }; + B3EBA3C32872967700EAEB37 /* LzmaEnc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaEnc.h; sourceTree = ""; }; + B3EBA3C42872967700EAEB37 /* LzFind.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzFind.h; sourceTree = ""; }; + B3EBA3C52872967700EAEB37 /* Bra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bra.h; sourceTree = ""; }; + B3EBA3C62872967700EAEB37 /* Sort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sort.h; sourceTree = ""; }; + B3EBA3C72872967700EAEB37 /* LzmaDec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LzmaDec.h; sourceTree = ""; }; + B3EBA3C82872967700EAEB37 /* Alloc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alloc.h; sourceTree = ""; }; + B3EBA3C92872967700EAEB37 /* lzma.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = lzma.vcxproj; sourceTree = ""; }; + B3EBA3CA2872967700EAEB37 /* lzma.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = lzma.txt; sourceTree = ""; }; + B3EBA3CB2872967700EAEB37 /* lzma-history.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lzma-history.txt"; sourceTree = ""; }; + B3EBA3CD2872967700EAEB37 /* LzmaEnc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaEnc.c; sourceTree = ""; }; + B3EBA3CE2872967700EAEB37 /* LzFind.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzFind.c; sourceTree = ""; }; + B3EBA3CF2872967700EAEB37 /* Sort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Sort.c; sourceTree = ""; }; + B3EBA3D02872967700EAEB37 /* Bra86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Bra86.c; sourceTree = ""; }; + B3EBA3D12872967700EAEB37 /* Alloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Alloc.c; sourceTree = ""; }; + B3EBA3D22872967700EAEB37 /* LzmaDec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = LzmaDec.c; sourceTree = ""; }; + B3EBA3D32872967700EAEB37 /* BraIA64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = BraIA64.c; sourceTree = ""; }; + B3EBA3D42872967700EAEB37 /* Lzma86Dec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Lzma86Dec.c; sourceTree = ""; }; + B3EBA3D52872967700EAEB37 /* Delta.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Delta.c; sourceTree = ""; }; + B3EBA3D62872967700EAEB37 /* CpuArch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CpuArch.c; sourceTree = ""; }; + B3EBA3D72872967700EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBA3D82872967700EAEB37 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + B3EBA3DA2872967700EAEB37 /* libchdr_chd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_chd.c; sourceTree = ""; }; + B3EBA3DB2872967700EAEB37 /* libchdr_bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_bitstream.c; sourceTree = ""; }; + B3EBA3DC2872967700EAEB37 /* libchdr_huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_huffman.c; sourceTree = ""; }; + B3EBA3DD2872967700EAEB37 /* libchdr_flac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_flac.c; sourceTree = ""; }; + B3EBA3DE2872967700EAEB37 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B3EBA3DF2872967700EAEB37 /* libchdr_cdrom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libchdr_cdrom.c; sourceTree = ""; }; + B3EBA3E12872967700EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA3E22872967700EAEB37 /* configure */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + B3EBA3E32872967700EAEB37 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B3EBA3E42872967700EAEB37 /* mman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mman.h; sourceTree = ""; }; + B3EBA3E82872967700EAEB37 /* .suo */ = {isa = PBXFileReference; lastKnownFileType = file; path = .suo; sourceTree = ""; }; + B3EBA3E92872967700EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA3EA2872967700EAEB37 /* mman.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj; sourceTree = ""; }; + B3EBA3EB2872967700EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA3EC2872967700EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBA3ED2872967700EAEB37 /* test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = ""; }; + B3EBA3EE2872967700EAEB37 /* mman.vcxproj.user */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj.user; sourceTree = ""; }; + B3EBA3EF2872967700EAEB37 /* mman.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = mman.vcxproj.filters; sourceTree = ""; }; + B3EBA3F02872967700EAEB37 /* mman.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = mman.sln; sourceTree = ""; }; + B3EBA3F12872967700EAEB37 /* mman-win32.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = "mman-win32.pro"; sourceTree = ""; }; + B3EBA3F22872967700EAEB37 /* UpgradeLog.htm */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = UpgradeLog.htm; sourceTree = ""; }; + B3EBA3F32872967700EAEB37 /* mman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mman.c; sourceTree = ""; }; + B3EBA3F52872967700EAEB37 /* recompiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recompiler.h; sourceTree = ""; }; + B3EBA3F62872967700EAEB37 /* reaper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = reaper.h; sourceTree = ""; }; + B3EBA3F72872967700EAEB37 /* optimizer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = optimizer.c; sourceTree = ""; }; + B3EBA3F82872967700EAEB37 /* debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + B3EBA3F92872967700EAEB37 /* regcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; + B3EBA3FA2872967700EAEB37 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + B3EBA3FB2872967700EAEB37 /* emitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = emitter.h; sourceTree = ""; }; + B3EBA3FC2872967700EAEB37 /* disassembler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disassembler.h; sourceTree = ""; }; + B3EBA3FD2872967700EAEB37 /* lightrec-config.h.cmakein */ = {isa = PBXFileReference; lastKnownFileType = text; path = "lightrec-config.h.cmakein"; sourceTree = ""; }; + B3EBA3FE2872967700EAEB37 /* memmanager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmanager.h; sourceTree = ""; }; + B3EBA3FF2872967700EAEB37 /* interpreter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interpreter.h; sourceTree = ""; }; + B3EBA4002872967700EAEB37 /* blockcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blockcache.h; sourceTree = ""; }; + B3EBA4012872967700EAEB37 /* lightrec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lightrec.h; sourceTree = ""; }; + B3EBA4032872967700EAEB37 /* tlsf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tlsf.c; sourceTree = ""; }; + B3EBA4042872967700EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA4052872967700EAEB37 /* tlsf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tlsf.h; sourceTree = ""; }; + B3EBA4062872967700EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBA4072872967700EAEB37 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B3EBA4082872967700EAEB37 /* optimizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = optimizer.h; sourceTree = ""; }; + B3EBA4092872967700EAEB37 /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + B3EBA40A2872967700EAEB37 /* lightrec-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "lightrec-private.h"; sourceTree = ""; }; + B3EBA40B2872967700EAEB37 /* lightning-wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "lightning-wrapper.h"; sourceTree = ""; }; + B3EBA40C2872967700EAEB37 /* recompiler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = recompiler.c; sourceTree = ""; }; + B3EBA40D2872967700EAEB37 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; + B3EBA40E2872967700EAEB37 /* reaper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reaper.c; sourceTree = ""; }; + B3EBA40F2872967700EAEB37 /* slist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = slist.h; sourceTree = ""; }; + B3EBA4102872967700EAEB37 /* memmanager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmanager.c; sourceTree = ""; }; + B3EBA4112872967700EAEB37 /* disassembler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = disassembler.c; sourceTree = ""; }; + B3EBA4122872967700EAEB37 /* emitter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emitter.c; sourceTree = ""; }; + B3EBA4132872967700EAEB37 /* regcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = regcache.c; sourceTree = ""; }; + B3EBA4142872967700EAEB37 /* .gitrepo */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitrepo; sourceTree = ""; }; + B3EBA4152872967700EAEB37 /* interpreter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interpreter.c; sourceTree = ""; }; + B3EBA4162872967700EAEB37 /* lightrec.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lightrec.c; sourceTree = ""; }; + B3EBA4172872967700EAEB37 /* blockcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blockcache.c; sourceTree = ""; }; + B3EBA4182872967700EAEB37 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = ""; }; + B3EBA4192872967700EAEB37 /* .gitlab-ci.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = ".gitlab-ci.yml"; sourceTree = ""; }; + B3EBA41B2872967700EAEB37 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B3EBA41C2872967700EAEB37 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B3EBA41D2872967700EAEB37 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .travis.yml; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B30178D0207C901D0051B93D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344BBD2859E088006E6B3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3980D5B29238A2000A82429 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620C20783162009950E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B3980D7A2923908900A82429 /* OpenGL.framework in Frameworks */, + B3980D7229238C3500A82429 /* libgpulib.a in Frameworks */, + B35E6BF9207D00D00040709A /* AVFoundation.framework in Frameworks */, + B35E6BF6207CD2740040709A /* CoreAudio.framework in Frameworks */, + B3135BAB26E4CDC50047F338 /* QuartzCore.framework in Frameworks */, + B35E6BF2207CD2680040709A /* AudioToolbox.framework in Frameworks */, + B301797F207C909E0051B93D /* libpcsx_rearmed.a in Frameworks */, + B339468B20783F48008DBAB4 /* libz.tbd in Frameworks */, + B39768F82859E23200558958 /* libpcsx_rearmed-libretro.a in Frameworks */, + B339468920783F41008DBAB4 /* libpthread.tbd in Frameworks */, + B3C7622220783297009950E4 /* PVSupport.framework in Frameworks */, + B3C7621F2078325C009950E4 /* Foundation.framework in Frameworks */, + B3C7621D20783243009950E4 /* OpenGLES.framework in Frameworks */, + B3A41BED286E76330054E9A5 /* PVLibRetro.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37022BE287253B300B3F6DA /* PVPCSXRearmed */ = { + isa = PBXGroup; + children = ( + B37022C0287253B300B3F6DA /* PVPCSXRearmed.h */, + B37022BF287253B300B3F6DA /* Core.plist */, + B37022C1287253B300B3F6DA /* Info.plist */, + ); + path = PVPCSXRearmed; + sourceTree = ""; + }; + B37022C4287253B300B3F6DA /* PVPCSXRearmedCore */ = { + isa = PBXGroup; + children = ( + B37022C5287253B300B3F6DA /* PVPCSXRearmedCore.h */, + B37022C6287253B300B3F6DA /* PVPCSXRearmedCore.mm */, + ); + path = PVPCSXRearmedCore; + sourceTree = ""; + }; + B3C7620620783162009950E4 = { + isa = PBXGroup; + children = ( + B3EBA1242872967500EAEB37 /* pcsx_rearmed */, + B37022BE287253B300B3F6DA /* PVPCSXRearmed */, + B37022C4287253B300B3F6DA /* PVPCSXRearmedCore */, + B37022C3287253B300B3F6DA /* PVPCSXRearmed.h */, + B37022BD287253B300B3F6DA /* PVPCSXRearmed-Prefix.pch */, + B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */, + B3C7621B20783242009950E4 /* Frameworks */, + B3C7621120783162009950E4 /* Products */, + ); + sourceTree = ""; + }; + B3C7621120783162009950E4 /* Products */ = { + isa = PBXGroup; + children = ( + B3C7621020783162009950E4 /* PVPCSXRearmed.framework */, + B30178D3207C901D0051B93D /* libpcsx_rearmed.a */, + B3344BC32859E088006E6B3A /* libpcsx_rearmed-libretro.a */, + B3980D5E29238A2000A82429 /* libgpulib.a */, + ); + name = Products; + sourceTree = ""; + }; + B3C7621B20783242009950E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3980D792923908700A82429 /* OpenGL.framework */, + B3A41BEF286E76490054E9A5 /* PVLibRetro.framework */, + B3A41BEC286E76330054E9A5 /* PVLibRetro.framework */, + B39769172859E3AD00558958 /* CoreFoundation.framework */, + B39769182859E3AD00558958 /* Foundation.framework */, + B39769132859E3A300558958 /* PVLibrary.framework */, + B3135BAA26E4CDC50047F338 /* QuartzCore.framework */, + B35E6BF1207CD2670040709A /* AudioToolbox.framework */, + B35E6BEF207CD2610040709A /* AudioUnit.framework */, + B324C31B2191964F009F4EDC /* AVFoundation.framework */, + B35E6BF8207D00D00040709A /* AVFoundation.framework */, + B35E6BF4207CD2740040709A /* CoreAudio.framework */, + B35E6BF3207CD2730040709A /* CoreAudioKit.framework */, + B3C7621E2078325C009950E4 /* Foundation.framework */, + B339468820783F41008DBAB4 /* libpthread.tbd */, + B339468A20783F48008DBAB4 /* libz.tbd */, + B3C7621C20783243009950E4 /* OpenGLES.framework */, + B3B104B8218F281B00210C39 /* PVSupport.framework */, + B3C7622120783297009950E4 /* PVSupport.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B3EBA1242872967500EAEB37 /* pcsx_rearmed */ = { + isa = PBXGroup; + children = ( + B3EBA2462872967600EAEB37 /* .gitignore */, + B3EBA2412872967600EAEB37 /* .gitmodules */, + B3EBA1B42872967500EAEB37 /* AUTHORS */, + B3EBA1B32872967500EAEB37 /* ChangeLog */, + B3EBA1B22872967500EAEB37 /* configure */, + B3EBA2442872967600EAEB37 /* COPYING */, + B3EBA2342872967600EAEB37 /* Makefile */, + B3EBA2452872967600EAEB37 /* NEWS */, + B3EBA2792872967600EAEB37 /* ChangeLog.df */, + B3EBA2432872967600EAEB37 /* Makefile.libretro */, + B3EBA2422872967600EAEB37 /* README.md */, + B3EBA4182872967700EAEB37 /* readme.txt */, + B3EBA4192872967700EAEB37 /* .gitlab-ci.yml */, + B3EBA41D2872967700EAEB37 /* .travis.yml */, + B3EBA2472872967600EAEB37 /* .github */, + B3EBA27A2872967600EAEB37 /* deps */, + B3EBA1292872967500EAEB37 /* frontend */, + B3EBA2352872967600EAEB37 /* include */, + B3EBA41A2872967700EAEB37 /* jni */, + B3EBA15C2872967500EAEB37 /* libpcsxcore */, + B3EBA24A2872967600EAEB37 /* libretro-common */, + B3EBA1B52872967500EAEB37 /* plugins */, + B3EBA1252872967500EAEB37 /* tools */, + ); + path = pcsx_rearmed; + sourceTree = ""; + }; + B3EBA1252872967500EAEB37 /* tools */ = { + isa = PBXGroup; + children = ( + B3EBA1262872967500EAEB37 /* Makefile */, + B3EBA1272872967500EAEB37 /* gas-preprocessor.pl */, + B3EBA1282872967500EAEB37 /* psxcimg.c */, + ); + path = tools; + sourceTree = ""; + }; + B3EBA1292872967500EAEB37 /* frontend */ = { + isa = PBXGroup; + children = ( + B3EBA1372872967500EAEB37 /* cspace.c */, + B3EBA1342872967500EAEB37 /* in_tsbutton.c */, + B3EBA12B2872967500EAEB37 /* libretro.c */, + B3EBA13E2872967500EAEB37 /* main.c */, + B3EBA1362872967500EAEB37 /* menu.c */, + B3EBA13C2872967500EAEB37 /* pl_gun_ts.c */, + B3EBA1332872967500EAEB37 /* plat_dummy.c */, + B3EBA1392872967500EAEB37 /* plat_omap.c */, + B3EBA15B2872967500EAEB37 /* plat_pandora.c */, + B3EBA15A2872967500EAEB37 /* plat_pollux.c */, + B3EBA1532872967500EAEB37 /* plat_sdl.c */, + B3EBA1582872967500EAEB37 /* plugin_lib.c */, + B3EBA1522872967500EAEB37 /* plugin.c */, + B3EBA12D2872967500EAEB37 /* blit320.h */, + B3EBA12C2872967500EAEB37 /* Cheat.h */, + B3EBA1572872967500EAEB37 /* cspace.h */, + B3EBA1482872967500EAEB37 /* in_tsbutton.h */, + B3EBA1402872967500EAEB37 /* libretro_core_options_intl.h */, + B3EBA13F2872967500EAEB37 /* libretro_core_options.h */, + B3EBA12A2872967500EAEB37 /* main.h */, + B3EBA1412872967500EAEB37 /* menu.h */, + B3EBA1472872967500EAEB37 /* nopic.h */, + B3EBA1592872967500EAEB37 /* pl_gun_ts.h */, + B3EBA1552872967500EAEB37 /* plat_omap.h */, + B3EBA1382872967500EAEB37 /* plat.h */, + B3EBA13D2872967500EAEB37 /* plugin_lib.h */, + B3EBA1352872967500EAEB37 /* plugin.h */, + B3EBA12E2872967500EAEB37 /* blit320.s */, + B3EBA13B2872967500EAEB37 /* cspace_arm.S */, + B3EBA13A2872967500EAEB37 /* cspace_neon.S */, + B3EBA1562872967500EAEB37 /* link.T */, + B3EBA1492872967500EAEB37 /* 3ds */, + B3EBA1542872967500EAEB37 /* libpicofe */, + B3EBA1422872967500EAEB37 /* switch */, + B3EBA12F2872967500EAEB37 /* vita */, + ); + path = frontend; + sourceTree = ""; + }; + B3EBA12F2872967500EAEB37 /* vita */ = { + isa = PBXGroup; + children = ( + B3EBA1302872967500EAEB37 /* retro_inline.h */, + B3EBA1312872967500EAEB37 /* sys */, + ); + path = vita; + sourceTree = ""; + }; + B3EBA1312872967500EAEB37 /* sys */ = { + isa = PBXGroup; + children = ( + B3EBA1322872967500EAEB37 /* mman.h */, + ); + path = sys; + sourceTree = ""; + }; + B3EBA1422872967500EAEB37 /* switch */ = { + isa = PBXGroup; + children = ( + B3EBA1432872967500EAEB37 /* sys */, + B3EBA1452872967500EAEB37 /* zlib.h */, + B3EBA1462872967500EAEB37 /* zconf.h */, + ); + path = switch; + sourceTree = ""; + }; + B3EBA1432872967500EAEB37 /* sys */ = { + isa = PBXGroup; + children = ( + B3EBA1442872967500EAEB37 /* mman.h */, + ); + path = sys; + sourceTree = ""; + }; + B3EBA1492872967500EAEB37 /* 3ds */ = { + isa = PBXGroup; + children = ( + B3EBA14A2872967500EAEB37 /* semaphore.h */, + B3EBA14B2872967500EAEB37 /* utils.S */, + B3EBA14C2872967500EAEB37 /* sys */, + B3EBA14E2872967500EAEB37 /* zlib.h */, + B3EBA14F2872967500EAEB37 /* pthread.h */, + B3EBA1502872967500EAEB37 /* 3ds_utils.h */, + B3EBA1512872967500EAEB37 /* zconf.h */, + ); + path = 3ds; + sourceTree = ""; + }; + B3EBA14C2872967500EAEB37 /* sys */ = { + isa = PBXGroup; + children = ( + B3EBA14D2872967500EAEB37 /* mman.h */, + ); + path = sys; + sourceTree = ""; + }; + B3EBA1542872967500EAEB37 /* libpicofe */ = { + isa = PBXGroup; + children = ( + ); + path = libpicofe; + sourceTree = ""; + }; + B3EBA15C2872967500EAEB37 /* libpcsxcore */ = { + isa = PBXGroup; + children = ( + B3EBA1682872967500EAEB37 /* cdriso.c */, + B3EBA16E2872967500EAEB37 /* cdrom.c */, + B3EBA17E2872967500EAEB37 /* cheat.c */, + B3EBA16C2872967500EAEB37 /* database.c */, + B3EBA17C2872967500EAEB37 /* debug.c */, + B3EBA1602872967500EAEB37 /* decode_xa.c */, + B3EBA16D2872967500EAEB37 /* disr3000a.c */, + B3EBA1782872967500EAEB37 /* gte_divider.c */, + B3EBA16B2872967500EAEB37 /* gte_nf.c */, + B3EBA19E2872967500EAEB37 /* gte.c */, + B3EBA1792872967500EAEB37 /* mdec.c */, + B3EBA19C2872967500EAEB37 /* memmap_win32.c */, + B3EBA1A82872967500EAEB37 /* misc.c */, + B3EBA1702872967500EAEB37 /* plugins.c */, + B3EBA1AA2872967500EAEB37 /* ppf.c */, + B3EBA1822872967500EAEB37 /* psxbios.c */, + B3EBA1802872967500EAEB37 /* psxcommon.c */, + B3EBA1AD2872967500EAEB37 /* psxcounters.c */, + B3EBA1752872967500EAEB37 /* psxdma.c */, + B3EBA1982872967500EAEB37 /* psxhle.c */, + B3EBA19D2872967500EAEB37 /* psxhw.c */, + B3EBA19F2872967500EAEB37 /* psxinterpreter.c */, + B3EBA19B2872967500EAEB37 /* psxmem.c */, + B3EBA1732872967500EAEB37 /* r3000a.c */, + B3EBA17A2872967500EAEB37 /* sio.c */, + B3EBA1742872967500EAEB37 /* socket.c */, + B3EBA1642872967500EAEB37 /* spu.c */, + B3EBA1992872967500EAEB37 /* cdriso.h */, + B3EBA1842872967500EAEB37 /* cdrom.h */, + B3EBA15D2872967500EAEB37 /* cheat.h */, + B3EBA1A92872967500EAEB37 /* coff.h */, + B3EBA1832872967500EAEB37 /* database.h */, + B3EBA1632872967500EAEB37 /* debug.h */, + B3EBA17D2872967500EAEB37 /* decode_xa.h */, + B3EBA1812872967500EAEB37 /* gpu.h */, + B3EBA1A02872967500EAEB37 /* gte_arm.h */, + B3EBA1AC2872967500EAEB37 /* gte_divider.h */, + B3EBA1722872967500EAEB37 /* gte_neon.h */, + B3EBA1662872967500EAEB37 /* gte.h */, + B3EBA1AB2872967500EAEB37 /* mdec.h */, + B3EBA17F2872967500EAEB37 /* memmap.h */, + B3EBA16F2872967500EAEB37 /* misc.h */, + B3EBA1B12872967500EAEB37 /* plugins.h */, + B3EBA1762872967500EAEB37 /* ppf.h */, + B3EBA15E2872967500EAEB37 /* psxbios.h */, + B3EBA15F2872967500EAEB37 /* psxcommon.h */, + B3EBA1772872967500EAEB37 /* psxcounters.h */, + B3EBA1B02872967500EAEB37 /* psxdma.h */, + B3EBA16A2872967500EAEB37 /* psxhle.h */, + B3EBA1672872967500EAEB37 /* psxhw.h */, + B3EBA1652872967500EAEB37 /* psxinterpreter.h */, + B3EBA1A22872967500EAEB37 /* psxmem_map.h */, + B3EBA1692872967500EAEB37 /* psxmem.h */, + B3EBA1AF2872967500EAEB37 /* r3000a.h */, + B3EBA1622872967500EAEB37 /* sio.h */, + B3EBA1612872967500EAEB37 /* sjisfont.h */, + B3EBA1AE2872967500EAEB37 /* socket.h */, + B3EBA17B2872967500EAEB37 /* spu.h */, + B3EBA1A12872967500EAEB37 /* system.h */, + B3EBA19A2872967500EAEB37 /* gte_arm.S */, + B3EBA1712872967500EAEB37 /* gte_neon.S */, + B3EBA1A32872967500EAEB37 /* lightrec */, + B3EBA1852872967500EAEB37 /* new_dynarec */, + ); + path = libpcsxcore; + sourceTree = ""; + }; + B3EBA1852872967500EAEB37 /* new_dynarec */ = { + isa = PBXGroup; + children = ( + B3EBA1872872967500EAEB37 /* assem_arm.c */, + B3EBA1902872967500EAEB37 /* assem_arm64.c */, + B3EBA18E2872967500EAEB37 /* emu_if.c */, + B3EBA1922872967500EAEB37 /* new_dynarec.c */, + B3EBA18A2872967500EAEB37 /* pcsxmem_inline.c */, + B3EBA18F2872967500EAEB37 /* pcsxmem.c */, + B3EBA1912872967500EAEB37 /* assem_arm.h */, + B3EBA1882872967500EAEB37 /* assem_arm64.h */, + B3EBA1972872967500EAEB37 /* emu_if.h */, + B3EBA1932872967500EAEB37 /* linkage_offsets.h */, + B3EBA1952872967500EAEB37 /* new_dynarec_config.h */, + B3EBA1862872967500EAEB37 /* new_dynarec.h */, + B3EBA1962872967500EAEB37 /* pcsxmem.h */, + B3EBA1942872967500EAEB37 /* linkage_arm.S */, + B3EBA1892872967500EAEB37 /* linkage_arm64.S */, + B3EBA18B2872967500EAEB37 /* patches */, + ); + path = new_dynarec; + sourceTree = ""; + }; + B3EBA18B2872967500EAEB37 /* patches */ = { + isa = PBXGroup; + children = ( + B3EBA18C2872967500EAEB37 /* trace_intr */, + B3EBA18D2872967500EAEB37 /* trace_drc_chk */, + ); + path = patches; + sourceTree = ""; + }; + B3EBA1A32872967500EAEB37 /* lightrec */ = { + isa = PBXGroup; + children = ( + B3EBA1A42872967500EAEB37 /* plugin.h */, + B3EBA1A52872967500EAEB37 /* mem.c */, + B3EBA1A62872967500EAEB37 /* plugin.c */, + B3EBA1A72872967500EAEB37 /* mem.h */, + ); + path = lightrec; + sourceTree = ""; + }; + B3EBA1B52872967500EAEB37 /* plugins */ = { + isa = PBXGroup; + children = ( + B3EBA1E12872967500EAEB37 /* cdrcimg */, + B3EBA1D02872967500EAEB37 /* dfinput */, + B3EBA1FB2872967600EAEB37 /* dfsound */, + B3EBA1C62872967500EAEB37 /* dfxvideo */, + B3EBA1E92872967600EAEB37 /* gpu_neon */, + B3EBA2192872967600EAEB37 /* gpu_unai */, + B3EBA1B62872967500EAEB37 /* gpu-gles */, + B3EBA1D62872967500EAEB37 /* gpulib */, + B3EBA1E42872967500EAEB37 /* spunull */, + ); + path = plugins; + sourceTree = ""; + }; + B3EBA1B62872967500EAEB37 /* gpu-gles */ = { + isa = PBXGroup; + children = ( + B3EBA1BC2872967500EAEB37 /* Makefile */, + B3EBA1B72872967500EAEB37 /* gpuDraw.c */, + B3EBA1C22872967500EAEB37 /* gpuFps.m */, + B3EBA1BA2872967500EAEB37 /* gpulib_if.c */, + B3EBA1B92872967500EAEB37 /* gpuPrim.c */, + B3EBA1B82872967500EAEB37 /* gpuTexture.c */, + B3EBA1C32872967500EAEB37 /* hud.c */, + B3EBA1C02872967500EAEB37 /* gpuDraw.h */, + B3EBA1C52872967500EAEB37 /* gpuExternals.h */, + B3EBA1BB2872967500EAEB37 /* gpuFps.h */, + B3EBA1BD2872967500EAEB37 /* gpuPlugin.h */, + B3EBA1C12872967500EAEB37 /* gpuPrim.h */, + B3EBA1BE2872967500EAEB37 /* gpuStdafx.h */, + B3EBA1BF2872967500EAEB37 /* gpuTexture.h */, + B3EBA1C42872967500EAEB37 /* gpuPlugin.m */, + ); + path = "gpu-gles"; + sourceTree = ""; + }; + B3EBA1C62872967500EAEB37 /* dfxvideo */ = { + isa = PBXGroup; + children = ( + B3EBA1C72872967500EAEB37 /* gpu.c */, + B3EBA1C82872967500EAEB37 /* gpulib_if.c */, + B3EBA1C92872967500EAEB37 /* Makefile */, + B3EBA1CA2872967500EAEB37 /* draw.c */, + B3EBA1CB2872967500EAEB37 /* prim.c */, + B3EBA1CC2872967500EAEB37 /* fps.c */, + B3EBA1CD2872967500EAEB37 /* gpu.h */, + B3EBA1CE2872967500EAEB37 /* soft.c */, + B3EBA1CF2872967500EAEB37 /* draw_pl.c */, + ); + path = dfxvideo; + sourceTree = ""; + }; + B3EBA1D02872967500EAEB37 /* dfinput */ = { + isa = PBXGroup; + children = ( + B3EBA1D12872967500EAEB37 /* main.h */, + B3EBA1D22872967500EAEB37 /* guncon.c */, + B3EBA1D32872967500EAEB37 /* externals.h */, + B3EBA1D42872967500EAEB37 /* main.c */, + B3EBA1D52872967500EAEB37 /* pad.c */, + ); + path = dfinput; + sourceTree = ""; + }; + B3EBA1D62872967500EAEB37 /* gpulib */ = { + isa = PBXGroup; + children = ( + B3EBA1D92872967500EAEB37 /* Makefile */, + B3EBA1D72872967500EAEB37 /* gpu.c */, + B3EBA1DF2872967500EAEB37 /* gpulib_thread_if.c */, + B3EBA1DD2872967500EAEB37 /* test.c */, + B3EBA1DE2872967500EAEB37 /* vout_pl.c */, + B3EBA1E02872967500EAEB37 /* vout_sdl.c */, + B3EBA1DC2872967500EAEB37 /* gpu.h */, + B3EBA1DB2872967500EAEB37 /* gpulib_thread_if.h */, + B3EBA1DA2872967500EAEB37 /* gpulib.mak */, + B3EBA1D82872967500EAEB37 /* Makefile.test */, + ); + path = gpulib; + sourceTree = ""; + }; + B3EBA1E12872967500EAEB37 /* cdrcimg */ = { + isa = PBXGroup; + children = ( + B3EBA1E22872967500EAEB37 /* cdrcimg.c */, + B3EBA1E32872967500EAEB37 /* cdrcimg.h */, + ); + path = cdrcimg; + sourceTree = ""; + }; + B3EBA1E42872967500EAEB37 /* spunull */ = { + isa = PBXGroup; + children = ( + B3EBA1E52872967600EAEB37 /* xa.h */, + B3EBA1E62872967600EAEB37 /* Makefile */, + B3EBA1E72872967600EAEB37 /* spunull.c */, + B3EBA1E82872967600EAEB37 /* register.h */, + ); + path = spunull; + sourceTree = ""; + }; + B3EBA1E92872967600EAEB37 /* gpu_neon */ = { + isa = PBXGroup; + children = ( + B3EBA1EA2872967600EAEB37 /* psx_gpu_if.c */, + B3EBA1EB2872967600EAEB37 /* Makefile */, + B3EBA1EC2872967600EAEB37 /* psx_gpu */, + ); + path = gpu_neon; + sourceTree = ""; + }; + B3EBA1EC2872967600EAEB37 /* psx_gpu */ = { + isa = PBXGroup; + children = ( + B3EBA1ED2872967600EAEB37 /* psx_gpu_offsets_update.c */, + B3EBA1EE2872967600EAEB37 /* psx_gpu_standard.c */, + B3EBA1EF2872967600EAEB37 /* vector_ops.h */, + B3EBA1F02872967600EAEB37 /* tests */, + B3EBA1F32872967600EAEB37 /* psx_gpu.c */, + B3EBA1F42872967600EAEB37 /* psx_gpu_parse.c */, + B3EBA1F52872967600EAEB37 /* common.h */, + B3EBA1F62872967600EAEB37 /* psx_gpu_arm_neon.S */, + B3EBA1F72872967600EAEB37 /* psx_gpu_4x.c */, + B3EBA1F82872967600EAEB37 /* psx_gpu_main.c */, + B3EBA1F92872967600EAEB37 /* psx_gpu_offsets.h */, + B3EBA1FA2872967600EAEB37 /* psx_gpu.h */, + ); + path = psx_gpu; + sourceTree = ""; + }; + B3EBA1F02872967600EAEB37 /* tests */ = { + isa = PBXGroup; + children = ( + B3EBA1F12872967600EAEB37 /* Makefile */, + B3EBA1F22872967600EAEB37 /* psx_dump_check.sh */, + ); + path = tests; + sourceTree = ""; + }; + B3EBA1FB2872967600EAEB37 /* dfsound */ = { + isa = PBXGroup; + children = ( + B3EBA2032872967600EAEB37 /* adsr.c */, + B3EBA2052872967600EAEB37 /* alsa.c */, + B3EBA20B2872967600EAEB37 /* dma.c */, + B3EBA2162872967600EAEB37 /* freeze.c */, + B3EBA2172872967600EAEB37 /* nullsnd.c */, + B3EBA20E2872967600EAEB37 /* oss.c */, + B3EBA2002872967600EAEB37 /* out.c */, + B3EBA2042872967600EAEB37 /* pulseaudio.c */, + B3EBA2152872967600EAEB37 /* registers.c */, + B3EBA20C2872967600EAEB37 /* reverb.c */, + B3EBA2082872967600EAEB37 /* sdl.c */, + B3EBA2112872967600EAEB37 /* spu_c64x_dspcode.c */, + B3EBA2122872967600EAEB37 /* spu_c64x.c */, + B3EBA1FE2872967600EAEB37 /* spu.c */, + B3EBA20A2872967600EAEB37 /* xa.c */, + B3EBA2142872967600EAEB37 /* Makefile.c64p */, + B3EBA2102872967600EAEB37 /* adsr.h */, + B3EBA1FC2872967600EAEB37 /* dma.h */, + B3EBA20D2872967600EAEB37 /* externals.h */, + B3EBA2182872967600EAEB37 /* gauss_i.h */, + B3EBA20F2872967600EAEB37 /* out.h */, + B3EBA2022872967600EAEB37 /* psemuxa.h */, + B3EBA2072872967600EAEB37 /* registers.h */, + B3EBA2012872967600EAEB37 /* spu_c64x.h */, + B3EBA2062872967600EAEB37 /* spu_config.h */, + B3EBA2092872967600EAEB37 /* spu.h */, + B3EBA1FF2872967600EAEB37 /* stdafx.h */, + B3EBA1FD2872967600EAEB37 /* xa.h */, + B3EBA2132872967600EAEB37 /* arm_utils.S */, + ); + path = dfsound; + sourceTree = ""; + }; + B3EBA2192872967600EAEB37 /* gpu_unai */ = { + isa = PBXGroup; + children = ( + B3EBA2232872967600EAEB37 /* Makefile */, + B3EBA2322872967600EAEB37 /* gpu.cpp */, + B3EBA2222872967600EAEB37 /* gpulib_if.cpp */, + B3EBA21B2872967600EAEB37 /* debug.h */, + B3EBA2262872967600EAEB37 /* gpu_arm.h */, + B3EBA2272872967600EAEB37 /* gpu_blit.h */, + B3EBA22B2872967600EAEB37 /* gpu_command.h */, + B3EBA21F2872967600EAEB37 /* gpu_fixedpoint.h */, + B3EBA21E2872967600EAEB37 /* gpu_inner_blend_arm.h */, + B3EBA22C2872967600EAEB37 /* gpu_inner_blend_arm5.h */, + B3EBA2202872967600EAEB37 /* gpu_inner_blend_arm7.h */, + B3EBA21A2872967600EAEB37 /* gpu_inner_blend.h */, + B3EBA2292872967600EAEB37 /* gpu_inner_light_arm.h */, + B3EBA21D2872967600EAEB37 /* gpu_inner_light.h */, + B3EBA2332872967600EAEB37 /* gpu_inner_quantization.h */, + B3EBA2242872967600EAEB37 /* gpu_inner.h */, + B3EBA22F2872967600EAEB37 /* gpu_raster_image.h */, + B3EBA2212872967600EAEB37 /* gpu_raster_line.h */, + B3EBA2282872967600EAEB37 /* gpu_raster_polygon.h */, + B3EBA2302872967600EAEB37 /* gpu_raster_sprite.h */, + B3EBA22D2872967600EAEB37 /* gpu_unai.h */, + B3EBA22A2872967600EAEB37 /* gpu.h */, + B3EBA21C2872967600EAEB37 /* port.h */, + B3EBA2312872967600EAEB37 /* profiler.h */, + B3EBA2252872967600EAEB37 /* gpu_arm.S */, + B3EBA22E2872967600EAEB37 /* README_senquack.txt */, + ); + path = gpu_unai; + sourceTree = ""; + }; + B3EBA2352872967600EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA2362872967600EAEB37 /* lightning */, + B3EBA2382872967600EAEB37 /* config.h */, + B3EBA2392872967600EAEB37 /* arm_features.h */, + B3EBA23A2872967600EAEB37 /* mman */, + B3EBA23D2872967600EAEB37 /* psemu_plugin_defs.h */, + B3EBA23E2872967600EAEB37 /* pcnt.h */, + B3EBA23F2872967600EAEB37 /* lightrec */, + ); + path = include; + sourceTree = ""; + }; + B3EBA2362872967600EAEB37 /* lightning */ = { + isa = PBXGroup; + children = ( + B3EBA2372872967600EAEB37 /* lightning.h */, + ); + path = lightning; + sourceTree = ""; + }; + B3EBA23A2872967600EAEB37 /* mman */ = { + isa = PBXGroup; + children = ( + B3EBA23B2872967600EAEB37 /* sys */, + ); + path = mman; + sourceTree = ""; + }; + B3EBA23B2872967600EAEB37 /* sys */ = { + isa = PBXGroup; + children = ( + B3EBA23C2872967600EAEB37 /* mman.h */, + ); + path = sys; + sourceTree = ""; + }; + B3EBA23F2872967600EAEB37 /* lightrec */ = { + isa = PBXGroup; + children = ( + B3EBA2402872967600EAEB37 /* lightrec-config.h */, + ); + path = lightrec; + sourceTree = ""; + }; + B3EBA2472872967600EAEB37 /* .github */ = { + isa = PBXGroup; + children = ( + B3EBA2482872967600EAEB37 /* ISSUE_TEMPLATE */, + ); + path = .github; + sourceTree = ""; + }; + B3EBA2482872967600EAEB37 /* ISSUE_TEMPLATE */ = { + isa = PBXGroup; + children = ( + B3EBA2492872967600EAEB37 /* custom-issue-report.md */, + ); + path = ISSUE_TEMPLATE; + sourceTree = ""; + }; + B3EBA24A2872967600EAEB37 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B3EBA24B2872967600EAEB37 /* encodings */, + B3EBA24E2872967600EAEB37 /* vfs */, + B3EBA2502872967600EAEB37 /* compat */, + B3EBA2542872967600EAEB37 /* file */, + B3EBA2562872967600EAEB37 /* streams */, + B3EBA2592872967600EAEB37 /* include */, + B3EBA2752872967600EAEB37 /* time */, + B3EBA2772872967600EAEB37 /* string */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B3EBA24B2872967600EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA24C2872967600EAEB37 /* compat_strl.c */, + B3EBA24D2872967600EAEB37 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA24E2872967600EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA24F2872967600EAEB37 /* vfs_implementation.c */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA2502872967600EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA2512872967600EAEB37 /* compat_posix_string.c */, + B3EBA2522872967600EAEB37 /* compat_strcasestr.c */, + B3EBA2532872967600EAEB37 /* fopen_utf8.c */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA2542872967600EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA2552872967600EAEB37 /* file_path.c */, + ); + path = file; + sourceTree = ""; + }; + B3EBA2562872967600EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA2572872967600EAEB37 /* file_stream_transforms.c */, + B3EBA2582872967600EAEB37 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA2592872967600EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA25A2872967600EAEB37 /* encodings */, + B3EBA25C2872967600EAEB37 /* vfs */, + B3EBA25F2872967600EAEB37 /* compat */, + B3EBA2642872967600EAEB37 /* retro_common_api.h */, + B3EBA2652872967600EAEB37 /* file */, + B3EBA2672872967600EAEB37 /* retro_environment.h */, + B3EBA2682872967600EAEB37 /* retro_inline.h */, + B3EBA2692872967600EAEB37 /* streams */, + B3EBA26C2872967600EAEB37 /* retro_miscellaneous.h */, + B3EBA26D2872967600EAEB37 /* time */, + B3EBA26F2872967600EAEB37 /* boolean.h */, + B3EBA2702872967600EAEB37 /* memmap.h */, + B3EBA2712872967600EAEB37 /* libretro.h */, + B3EBA2722872967600EAEB37 /* retro_assert.h */, + B3EBA2732872967600EAEB37 /* string */, + ); + path = include; + sourceTree = ""; + }; + B3EBA25A2872967600EAEB37 /* encodings */ = { + isa = PBXGroup; + children = ( + B3EBA25B2872967600EAEB37 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B3EBA25C2872967600EAEB37 /* vfs */ = { + isa = PBXGroup; + children = ( + B3EBA25D2872967600EAEB37 /* vfs.h */, + B3EBA25E2872967600EAEB37 /* vfs_implementation.h */, + ); + path = vfs; + sourceTree = ""; + }; + B3EBA25F2872967600EAEB37 /* compat */ = { + isa = PBXGroup; + children = ( + B3EBA2602872967600EAEB37 /* strl.h */, + B3EBA2612872967600EAEB37 /* strcasestr.h */, + B3EBA2622872967600EAEB37 /* fopen_utf8.h */, + B3EBA2632872967600EAEB37 /* posix_string.h */, + ); + path = compat; + sourceTree = ""; + }; + B3EBA2652872967600EAEB37 /* file */ = { + isa = PBXGroup; + children = ( + B3EBA2662872967600EAEB37 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B3EBA2692872967600EAEB37 /* streams */ = { + isa = PBXGroup; + children = ( + B3EBA26A2872967600EAEB37 /* file_stream.h */, + B3EBA26B2872967600EAEB37 /* file_stream_transforms.h */, + ); + path = streams; + sourceTree = ""; + }; + B3EBA26D2872967600EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EBA26E2872967600EAEB37 /* rtime.h */, + ); + path = time; + sourceTree = ""; + }; + B3EBA2732872967600EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA2742872967600EAEB37 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B3EBA2752872967600EAEB37 /* time */ = { + isa = PBXGroup; + children = ( + B3EBA2762872967600EAEB37 /* rtime.c */, + ); + path = time; + sourceTree = ""; + }; + B3EBA2772872967600EAEB37 /* string */ = { + isa = PBXGroup; + children = ( + B3EBA2782872967600EAEB37 /* stdstring.c */, + ); + path = string; + sourceTree = ""; + }; + B3EBA27A2872967600EAEB37 /* deps */ = { + isa = PBXGroup; + children = ( + B3EBA27B2872967600EAEB37 /* lightning */, + B3EBA3702872967700EAEB37 /* libchdr */, + B3EBA3E02872967700EAEB37 /* mman */, + B3EBA3F42872967700EAEB37 /* lightrec */, + ); + path = deps; + sourceTree = ""; + }; + B3EBA27B2872967600EAEB37 /* lightning */ = { + isa = PBXGroup; + children = ( + B3EBA27C2872967600EAEB37 /* configure.ac */, + B3EBA27D2872967600EAEB37 /* bootstrap */, + B3EBA27E2872967600EAEB37 /* ChangeLog */, + B3EBA27F2872967600EAEB37 /* AUTHORS */, + B3EBA2802872967600EAEB37 /* include */, + B3EBA2912872967600EAEB37 /* .gitmodules */, + B3EBA2922872967600EAEB37 /* COPYING.LESSER */, + B3EBA2932872967600EAEB37 /* README */, + B3EBA2942872967600EAEB37 /* TODO */, + B3EBA2952872967600EAEB37 /* COPYING.DOC */, + B3EBA2962872967600EAEB37 /* bootstrap.conf */, + B3EBA2972872967600EAEB37 /* Makefile.am */, + B3EBA2982872967600EAEB37 /* lightning.pc.in */, + B3EBA2992872967600EAEB37 /* COPYING */, + B3EBA29A2872967600EAEB37 /* NEWS */, + B3EBA29B2872967600EAEB37 /* .gitignore */, + B3EBA29C2872967600EAEB37 /* size.c */, + B3EBA29D2872967600EAEB37 /* .gitattributes */, + B3EBA29E2872967600EAEB37 /* lib */, + B3EBA2D62872967600EAEB37 /* m4 */, + B3EBA2DA2872967600EAEB37 /* .gitrepo */, + B3EBA2DB2872967600EAEB37 /* doc */, + B3EBA2E72872967600EAEB37 /* THANKS */, + B3EBA2E82872967600EAEB37 /* gnulib */, + B3EBA2E92872967600EAEB37 /* README-hacking */, + B3EBA2EA2872967600EAEB37 /* check */, + B3EBA36E2872967700EAEB37 /* gnulib-lib */, + ); + path = lightning; + sourceTree = ""; + }; + B3EBA2802872967600EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA2812872967600EAEB37 /* lightning */, + B3EBA28F2872967600EAEB37 /* Makefile.am */, + B3EBA2902872967600EAEB37 /* lightning.h.in */, + ); + path = include; + sourceTree = ""; + }; + B3EBA2812872967600EAEB37 /* lightning */ = { + isa = PBXGroup; + children = ( + B3EBA2822872967600EAEB37 /* jit_aarch64.h */, + B3EBA2832872967600EAEB37 /* jit_arm.h */, + B3EBA2842872967600EAEB37 /* jit_riscv.h */, + B3EBA2852872967600EAEB37 /* jit_s390.h */, + B3EBA2862872967600EAEB37 /* jit_x86.h */, + B3EBA2872872967600EAEB37 /* Makefile.am */, + B3EBA2882872967600EAEB37 /* jit_alpha.h */, + B3EBA2892872967600EAEB37 /* jit_ppc.h */, + B3EBA28A2872967600EAEB37 /* jit_hppa.h */, + B3EBA28B2872967600EAEB37 /* jit_private.h */, + B3EBA28C2872967600EAEB37 /* jit_mips.h */, + B3EBA28D2872967600EAEB37 /* jit_ia64.h */, + B3EBA28E2872967600EAEB37 /* jit_sparc.h */, + ); + path = lightning; + sourceTree = ""; + }; + B3EBA29E2872967600EAEB37 /* lib */ = { + isa = PBXGroup; + children = ( + B3EBA29F2872967600EAEB37 /* jit_riscv-sz.c */, + B3EBA2A02872967600EAEB37 /* jit_alpha-fpu.c */, + B3EBA2A12872967600EAEB37 /* jit_sparc-fpu.c */, + B3EBA2A22872967600EAEB37 /* jit_alpha-cpu.c */, + B3EBA2A32872967600EAEB37 /* jit_sparc-cpu.c */, + B3EBA2A42872967600EAEB37 /* jit_ppc.c */, + B3EBA2A52872967600EAEB37 /* jit_hppa.c */, + B3EBA2A62872967600EAEB37 /* jit_alpha.c */, + B3EBA2A72872967600EAEB37 /* jit_alpha-sz.c */, + B3EBA2A82872967600EAEB37 /* jit_memory.c */, + B3EBA2A92872967600EAEB37 /* jit_hppa-fpu.c */, + B3EBA2AA2872967600EAEB37 /* jit_arm-swf.c */, + B3EBA2AB2872967600EAEB37 /* jit_ia64-fpu.c */, + B3EBA2AC2872967600EAEB37 /* jit_size.c */, + B3EBA2AD2872967600EAEB37 /* jit_mips.c */, + B3EBA2AE2872967600EAEB37 /* jit_ppc-fpu.c */, + B3EBA2AF2872967600EAEB37 /* jit_disasm.c */, + B3EBA2B02872967600EAEB37 /* jit_s390-fpu.c */, + B3EBA2B12872967600EAEB37 /* jit_sparc.c */, + B3EBA2B22872967600EAEB37 /* jit_ppc-cpu.c */, + B3EBA2B32872967600EAEB37 /* jit_hppa-sz.c */, + B3EBA2B42872967600EAEB37 /* jit_ia64.c */, + B3EBA2B52872967600EAEB37 /* jit_mips-sz.c */, + B3EBA2B62872967600EAEB37 /* jit_s390-cpu.c */, + B3EBA2B72872967600EAEB37 /* jit_ia64-sz.c */, + B3EBA2B82872967600EAEB37 /* jit_arm-cpu.c */, + B3EBA2B92872967600EAEB37 /* jit_hppa-cpu.c */, + B3EBA2BA2872967600EAEB37 /* jit_sparc-sz.c */, + B3EBA2BB2872967600EAEB37 /* jit_ia64-cpu.c */, + B3EBA2BC2872967600EAEB37 /* jit_aarch64-sz.c */, + B3EBA2BD2872967600EAEB37 /* Makefile.am */, + B3EBA2BE2872967600EAEB37 /* jit_riscv-fpu.c */, + B3EBA2BF2872967600EAEB37 /* jit_aarch64-cpu.c */, + B3EBA2C02872967600EAEB37 /* jit_x86-sz.c */, + B3EBA2C12872967600EAEB37 /* jit_note.c */, + B3EBA2C22872967600EAEB37 /* jit_aarch64.c */, + B3EBA2C32872967600EAEB37 /* jit_x86-x87.c */, + B3EBA2C42872967600EAEB37 /* jit_rewind.c */, + B3EBA2C52872967600EAEB37 /* jit_riscv-cpu.c */, + B3EBA2C62872967600EAEB37 /* jit_aarch64-fpu.c */, + B3EBA2C72872967600EAEB37 /* jit_x86-cpu.c */, + B3EBA2C82872967600EAEB37 /* jit_s390.c */, + B3EBA2C92872967600EAEB37 /* jit_print.c */, + B3EBA2CA2872967600EAEB37 /* jit_riscv.c */, + B3EBA2CB2872967600EAEB37 /* jit_mips-cpu.c */, + B3EBA2CC2872967600EAEB37 /* jit_x86-sse.c */, + B3EBA2CD2872967600EAEB37 /* jit_arm-sz.c */, + B3EBA2CE2872967600EAEB37 /* jit_arm.c */, + B3EBA2CF2872967600EAEB37 /* jit_arm-vfp.c */, + B3EBA2D02872967600EAEB37 /* jit_s390-sz.c */, + B3EBA2D12872967600EAEB37 /* jit_mips-fpu.c */, + B3EBA2D22872967600EAEB37 /* jit_names.c */, + B3EBA2D32872967600EAEB37 /* jit_ppc-sz.c */, + B3EBA2D42872967600EAEB37 /* jit_x86.c */, + B3EBA2D52872967600EAEB37 /* lightning.c */, + ); + path = lib; + sourceTree = ""; + }; + B3EBA2D62872967600EAEB37 /* m4 */ = { + isa = PBXGroup; + children = ( + B3EBA2D72872967600EAEB37 /* gnulib-cache.m4 */, + B3EBA2D82872967600EAEB37 /* .gitkeep */, + B3EBA2D92872967600EAEB37 /* .gitignore */, + ); + path = m4; + sourceTree = ""; + }; + B3EBA2DB2872967600EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA2DC2872967600EAEB37 /* fact.c */, + B3EBA2DD2872967600EAEB37 /* printf.c */, + B3EBA2DE2872967600EAEB37 /* rfib.c */, + B3EBA2DF2872967600EAEB37 /* rpn.c */, + B3EBA2E02872967600EAEB37 /* Makefile.am */, + B3EBA2E12872967600EAEB37 /* incr.c */, + B3EBA2E22872967600EAEB37 /* .gitignore */, + B3EBA2E32872967600EAEB37 /* ifib.c */, + B3EBA2E42872967600EAEB37 /* lightning.texi */, + B3EBA2E52872967600EAEB37 /* .cvsignore */, + B3EBA2E62872967600EAEB37 /* body.texi */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA2E82872967600EAEB37 /* gnulib */ = { + isa = PBXGroup; + children = ( + ); + path = gnulib; + sourceTree = ""; + }; + B3EBA2EA2872967600EAEB37 /* check */ = { + isa = PBXGroup; + children = ( + B3EBA2EB2872967600EAEB37 /* check.arm.sh */, + B3EBA2EC2872967600EAEB37 /* range.ok */, + B3EBA2ED2872967600EAEB37 /* ldsti.ok */, + B3EBA2EE2872967600EAEB37 /* call.tst */, + B3EBA2EF2872967600EAEB37 /* alu_rsh.ok */, + B3EBA2F02872967600EAEB37 /* carry.tst */, + B3EBA2F12872967600EAEB37 /* cvt.ok */, + B3EBA2F22872967600EAEB37 /* stack.tst */, + B3EBA2F32872967600EAEB37 /* jmpr.ok */, + B3EBA2F42872967600EAEB37 /* alu_and.ok */, + B3EBA2F52872967600EAEB37 /* float.ok */, + B3EBA2F62872967600EAEB37 /* varargs.ok */, + B3EBA2F72872967600EAEB37 /* alu_neg.tst */, + B3EBA2F82872967600EAEB37 /* tramp.ok */, + B3EBA2F92872967600EAEB37 /* alu_lsh.tst */, + B3EBA2FA2872967600EAEB37 /* ldstxr-c.ok */, + B3EBA2FB2872967600EAEB37 /* fib.ok */, + B3EBA2FC2872967600EAEB37 /* ldstxr-c.tst */, + B3EBA2FD2872967600EAEB37 /* bp.ok */, + B3EBA2FE2872967600EAEB37 /* check.swf.sh */, + B3EBA2FF2872967600EAEB37 /* alu_com.tst */, + B3EBA3002872967600EAEB37 /* alu_mul.tst */, + B3EBA3012872967600EAEB37 /* ldstxi-c.tst */, + B3EBA3022872967600EAEB37 /* branch.tst */, + B3EBA3032872967600EAEB37 /* check.nodata.sh */, + B3EBA3042872967600EAEB37 /* ldstr-c.ok */, + B3EBA3052872967600EAEB37 /* alux_add.ok */, + B3EBA3062872967600EAEB37 /* branch.ok */, + B3EBA3072872967600EAEB37 /* allocai.tst */, + B3EBA3082872967600EAEB37 /* ldstxi.ok */, + B3EBA3092872967600EAEB37 /* alu_rem.ok */, + B3EBA30A2872967600EAEB37 /* fop_abs.ok */, + B3EBA30B2872967600EAEB37 /* ccall.c */, + B3EBA30C2872967600EAEB37 /* bp.tst */, + B3EBA30D2872967600EAEB37 /* alu_sub.ok */, + B3EBA30E2872967600EAEB37 /* carry.ok */, + B3EBA30F2872967600EAEB37 /* live.tst */, + B3EBA3102872967600EAEB37 /* clobber.tst */, + B3EBA3112872967600EAEB37 /* check.arm.swf.sh */, + B3EBA3122872967600EAEB37 /* alu_xor.ok */, + B3EBA3132872967600EAEB37 /* alu_rsb.ok */, + B3EBA3142872967600EAEB37 /* run-test */, + B3EBA3152872967600EAEB37 /* va_list.tst */, + B3EBA3162872967600EAEB37 /* put.ok */, + B3EBA3172872967600EAEB37 /* alux_sub.tst */, + B3EBA3182872967600EAEB37 /* fop_sqrt.tst */, + B3EBA3192872967600EAEB37 /* setcode.c */, + B3EBA31A2872967600EAEB37 /* ret.tst */, + B3EBA31B2872967600EAEB37 /* alu_lsh.ok */, + B3EBA31C2872967600EAEB37 /* qalu.inc */, + B3EBA31D2872967600EAEB37 /* va_list.ok */, + B3EBA31E2872967600EAEB37 /* allocar.ok */, + B3EBA31F2872967600EAEB37 /* ldstxi.tst */, + B3EBA3202872967600EAEB37 /* alu_mul.ok */, + B3EBA3212872967600EAEB37 /* qalu_div.tst */, + B3EBA3222872967600EAEB37 /* align.ok */, + B3EBA3232872967600EAEB37 /* alu_rsh.tst */, + B3EBA3242872967600EAEB37 /* add.ok */, + B3EBA3252872967600EAEB37 /* fop_sqrt.ok */, + B3EBA3262872967600EAEB37 /* ldsti.tst */, + B3EBA3272872967600EAEB37 /* rpn.ok */, + B3EBA3282872967600EAEB37 /* bswap.ok */, + B3EBA3292872967600EAEB37 /* qalu_mul.ok */, + B3EBA32A2872967600EAEB37 /* self.c */, + B3EBA32B2872967600EAEB37 /* range.tst */, + B3EBA32C2872967600EAEB37 /* jmpr.tst */, + B3EBA32D2872967600EAEB37 /* check.x87.sh */, + B3EBA32E2872967600EAEB37 /* alu_com.ok */, + B3EBA32F2872967600EAEB37 /* alux_add.tst */, + B3EBA3302872967600EAEB37 /* bswap.tst */, + B3EBA3312872967600EAEB37 /* Makefile.am */, + B3EBA3322872967600EAEB37 /* allocai.ok */, + B3EBA3332872967600EAEB37 /* alu_add.tst */, + B3EBA3342872967600EAEB37 /* ldstr.tst */, + B3EBA3352872967600EAEB37 /* call.ok */, + B3EBA3362872967600EAEB37 /* 3to2.ok */, + B3EBA3372872967600EAEB37 /* rpn.tst */, + B3EBA3382872967600EAEB37 /* ldstxr.tst */, + B3EBA3392872967600EAEB37 /* .gitignore */, + B3EBA33A2872967700EAEB37 /* alu_rsb.tst */, + B3EBA33B2872967700EAEB37 /* alu_sub.tst */, + B3EBA33C2872967700EAEB37 /* cva_list.c */, + B3EBA33D2872967700EAEB37 /* divi.ok */, + B3EBA33E2872967700EAEB37 /* ldstr-c.tst */, + B3EBA33F2872967700EAEB37 /* alux_sub.ok */, + B3EBA3402872967700EAEB37 /* ldst.inc */, + B3EBA3412872967700EAEB37 /* add.tst */, + B3EBA3422872967700EAEB37 /* check.sh */, + B3EBA3432872967700EAEB37 /* ret.ok */, + B3EBA3442872967700EAEB37 /* qalu_mul.tst */, + B3EBA3452872967700EAEB37 /* check.x87.nodata.sh */, + B3EBA3462872967700EAEB37 /* alu_rem.tst */, + B3EBA3472872967700EAEB37 /* movzr.ok */, + B3EBA3482872967700EAEB37 /* alu_or.tst */, + B3EBA3492872967700EAEB37 /* movzr.tst */, + B3EBA34A2872967700EAEB37 /* alu_neg.ok */, + B3EBA34B2872967700EAEB37 /* alu_and.tst */, + B3EBA34C2872967700EAEB37 /* hton.tst */, + B3EBA34D2872967700EAEB37 /* allocar.tst */, + B3EBA34E2872967700EAEB37 /* hton.ok */, + B3EBA34F2872967700EAEB37 /* qalu_div.ok */, + B3EBA3502872967700EAEB37 /* fib.tst */, + B3EBA3512872967700EAEB37 /* alu_add.ok */, + B3EBA3522872967700EAEB37 /* alu.inc */, + B3EBA3532872967700EAEB37 /* put.tst */, + B3EBA3542872967700EAEB37 /* alu_or.ok */, + B3EBA3552872967700EAEB37 /* divi.tst */, + B3EBA3562872967700EAEB37 /* ldstxr.ok */, + B3EBA3572872967700EAEB37 /* ctramp.c */, + B3EBA3582872967700EAEB37 /* alu_div.ok */, + B3EBA3592872967700EAEB37 /* check.arm4.swf.sh */, + B3EBA35A2872967700EAEB37 /* clobber.ok */, + B3EBA35B2872967700EAEB37 /* nodata.c */, + B3EBA35C2872967700EAEB37 /* align.tst */, + B3EBA35D2872967700EAEB37 /* cvt.tst */, + B3EBA35E2872967700EAEB37 /* ranger.tst */, + B3EBA35F2872967700EAEB37 /* ldstr.ok */, + B3EBA3602872967700EAEB37 /* carg.c */, + B3EBA3612872967700EAEB37 /* alu_xor.tst */, + B3EBA3622872967700EAEB37 /* live.ok */, + B3EBA3632872967700EAEB37 /* fop_abs.tst */, + B3EBA3642872967700EAEB37 /* float.tst */, + B3EBA3652872967700EAEB37 /* tramp.tst */, + B3EBA3662872967700EAEB37 /* varargs.tst */, + B3EBA3672872967700EAEB37 /* ldstxi-c.ok */, + B3EBA3682872967700EAEB37 /* all.tst */, + B3EBA3692872967700EAEB37 /* alu_div.tst */, + B3EBA36A2872967700EAEB37 /* lightning.c */, + B3EBA36B2872967700EAEB37 /* stack.ok */, + B3EBA36C2872967700EAEB37 /* 3to2.tst */, + B3EBA36D2872967700EAEB37 /* ranger.ok */, + ); + path = check; + sourceTree = ""; + }; + B3EBA36E2872967700EAEB37 /* gnulib-lib */ = { + isa = PBXGroup; + children = ( + B3EBA36F2872967700EAEB37 /* .gitignore */, + ); + path = "gnulib-lib"; + sourceTree = ""; + }; + B3EBA3702872967700EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA3D72872967700EAEB37 /* .gitrepo */, + B3EBA3712872967700EAEB37 /* pkg-config.pc.in */, + B3EBA3812872967700EAEB37 /* README.md */, + B3EBA3722872967700EAEB37 /* CMakeLists.txt */, + B3EBA3D82872967700EAEB37 /* LICENSE.txt */, + B3EBA3822872967700EAEB37 /* deps */, + B3EBA3732872967700EAEB37 /* include */, + B3EBA3D92872967700EAEB37 /* src */, + B3EBA37E2872967700EAEB37 /* tests */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA3732872967700EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA3742872967700EAEB37 /* libchdr */, + B3EBA37C2872967700EAEB37 /* dr_libs */, + ); + path = include; + sourceTree = ""; + }; + B3EBA3742872967700EAEB37 /* libchdr */ = { + isa = PBXGroup; + children = ( + B3EBA3752872967700EAEB37 /* flac.h */, + B3EBA3762872967700EAEB37 /* chdconfig.h */, + B3EBA3772872967700EAEB37 /* bitstream.h */, + B3EBA3782872967700EAEB37 /* cdrom.h */, + B3EBA3792872967700EAEB37 /* chd.h */, + B3EBA37A2872967700EAEB37 /* huffman.h */, + B3EBA37B2872967700EAEB37 /* coretypes.h */, + ); + path = libchdr; + sourceTree = ""; + }; + B3EBA37C2872967700EAEB37 /* dr_libs */ = { + isa = PBXGroup; + children = ( + B3EBA37D2872967700EAEB37 /* dr_flac.h */, + ); + path = dr_libs; + sourceTree = ""; + }; + B3EBA37E2872967700EAEB37 /* tests */ = { + isa = PBXGroup; + children = ( + B3EBA37F2872967700EAEB37 /* benchmark.c */, + B3EBA3802872967700EAEB37 /* build_tests.sh */, + ); + path = tests; + sourceTree = ""; + }; + B3EBA3822872967700EAEB37 /* deps */ = { + isa = PBXGroup; + children = ( + B3EBA3832872967700EAEB37 /* zlib-1.2.11 */, + B3EBA3B62872967700EAEB37 /* lzma-19.00 */, + ); + path = deps; + sourceTree = ""; + }; + B3EBA3832872967700EAEB37 /* zlib-1.2.11 */ = { + isa = PBXGroup; + children = ( + B3EBA3842872967700EAEB37 /* zutil.h */, + B3EBA3852872967700EAEB37 /* inftrees.h */, + B3EBA3862872967700EAEB37 /* inflate.c */, + B3EBA3872872967700EAEB37 /* CMakeLists.txt */, + B3EBA3882872967700EAEB37 /* zlib.map */, + B3EBA3892872967700EAEB37 /* zlib.pc.cmakein */, + B3EBA38A2872967700EAEB37 /* zlib.3.pdf */, + B3EBA38B2872967700EAEB37 /* configure */, + B3EBA38C2872967700EAEB37 /* compress.c */, + B3EBA38D2872967700EAEB37 /* zlib.3 */, + B3EBA38E2872967700EAEB37 /* ChangeLog */, + B3EBA38F2872967700EAEB37 /* deflate.c */, + B3EBA3902872967700EAEB37 /* inffixed.h */, + B3EBA3912872967700EAEB37 /* Makefile */, + B3EBA3922872967700EAEB37 /* FAQ */, + B3EBA3932872967700EAEB37 /* gzread.c */, + B3EBA3942872967700EAEB37 /* zconf.h.in */, + B3EBA3952872967700EAEB37 /* trees.h */, + B3EBA3962872967700EAEB37 /* zconf.h.cmakein */, + B3EBA3972872967700EAEB37 /* inffast.h */, + B3EBA3982872967700EAEB37 /* treebuild.xml */, + B3EBA3992872967700EAEB37 /* crc32.c */, + B3EBA39A2872967700EAEB37 /* README */, + B3EBA39B2872967700EAEB37 /* infback.c */, + B3EBA39C2872967700EAEB37 /* zutil.c */, + B3EBA39D2872967700EAEB37 /* deflate.h */, + B3EBA39E2872967700EAEB37 /* zlib.pc.in */, + B3EBA39F2872967700EAEB37 /* zlib2ansi */, + B3EBA3A02872967700EAEB37 /* gzguts.h */, + B3EBA3A12872967700EAEB37 /* zlib.h */, + B3EBA3A22872967700EAEB37 /* gzlib.c */, + B3EBA3A32872967700EAEB37 /* make_vms.com */, + B3EBA3A42872967700EAEB37 /* inflate.h */, + B3EBA3A52872967700EAEB37 /* inftrees.c */, + B3EBA3A62872967700EAEB37 /* INDEX */, + B3EBA3A72872967700EAEB37 /* doc */, + B3EBA3AD2872967700EAEB37 /* uncompr.c */, + B3EBA3AE2872967700EAEB37 /* gzwrite.c */, + B3EBA3AF2872967700EAEB37 /* trees.c */, + B3EBA3B02872967700EAEB37 /* gzclose.c */, + B3EBA3B12872967700EAEB37 /* crc32.h */, + B3EBA3B22872967700EAEB37 /* Makefile.in */, + B3EBA3B32872967700EAEB37 /* inffast.c */, + B3EBA3B42872967700EAEB37 /* adler32.c */, + B3EBA3B52872967700EAEB37 /* zconf.h */, + ); + path = "zlib-1.2.11"; + sourceTree = ""; + }; + B3EBA3A72872967700EAEB37 /* doc */ = { + isa = PBXGroup; + children = ( + B3EBA3A82872967700EAEB37 /* rfc1952.txt */, + B3EBA3A92872967700EAEB37 /* rfc1950.txt */, + B3EBA3AA2872967700EAEB37 /* algorithm.txt */, + B3EBA3AB2872967700EAEB37 /* rfc1951.txt */, + B3EBA3AC2872967700EAEB37 /* txtvsbin.txt */, + ); + path = doc; + sourceTree = ""; + }; + B3EBA3B62872967700EAEB37 /* lzma-19.00 */ = { + isa = PBXGroup; + children = ( + B3EBA3B72872967700EAEB37 /* lzma.vcxproj.filters */, + B3EBA3B82872967700EAEB37 /* CMakeLists.txt */, + B3EBA3B92872967700EAEB37 /* LICENSE */, + B3EBA3BA2872967700EAEB37 /* include */, + B3EBA3C92872967700EAEB37 /* lzma.vcxproj */, + B3EBA3CA2872967700EAEB37 /* lzma.txt */, + B3EBA3CB2872967700EAEB37 /* lzma-history.txt */, + B3EBA3CC2872967700EAEB37 /* src */, + ); + path = "lzma-19.00"; + sourceTree = ""; + }; + B3EBA3BA2872967700EAEB37 /* include */ = { + isa = PBXGroup; + children = ( + B3EBA3BB2872967700EAEB37 /* LzHash.h */, + B3EBA3BC2872967700EAEB37 /* 7zTypes.h */, + B3EBA3BD2872967700EAEB37 /* Compiler.h */, + B3EBA3BE2872967700EAEB37 /* Precomp.h */, + B3EBA3BF2872967700EAEB37 /* CpuArch.h */, + B3EBA3C02872967700EAEB37 /* Delta.h */, + B3EBA3C12872967700EAEB37 /* LzmaLib.h */, + B3EBA3C22872967700EAEB37 /* Lzma86.h */, + B3EBA3C32872967700EAEB37 /* LzmaEnc.h */, + B3EBA3C42872967700EAEB37 /* LzFind.h */, + B3EBA3C52872967700EAEB37 /* Bra.h */, + B3EBA3C62872967700EAEB37 /* Sort.h */, + B3EBA3C72872967700EAEB37 /* LzmaDec.h */, + B3EBA3C82872967700EAEB37 /* Alloc.h */, + ); + path = include; + sourceTree = ""; + }; + B3EBA3CC2872967700EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA3D12872967700EAEB37 /* Alloc.c */, + B3EBA3D02872967700EAEB37 /* Bra86.c */, + B3EBA3D32872967700EAEB37 /* BraIA64.c */, + B3EBA3D62872967700EAEB37 /* CpuArch.c */, + B3EBA3D52872967700EAEB37 /* Delta.c */, + B3EBA3CE2872967700EAEB37 /* LzFind.c */, + B3EBA3D42872967700EAEB37 /* Lzma86Dec.c */, + B3EBA3D22872967700EAEB37 /* LzmaDec.c */, + B3EBA3CD2872967700EAEB37 /* LzmaEnc.c */, + B3EBA3CF2872967700EAEB37 /* Sort.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA3D92872967700EAEB37 /* src */ = { + isa = PBXGroup; + children = ( + B3EBA3DA2872967700EAEB37 /* libchdr_chd.c */, + B3EBA3DB2872967700EAEB37 /* libchdr_bitstream.c */, + B3EBA3DC2872967700EAEB37 /* libchdr_huffman.c */, + B3EBA3DD2872967700EAEB37 /* libchdr_flac.c */, + B3EBA3DE2872967700EAEB37 /* link.T */, + B3EBA3DF2872967700EAEB37 /* libchdr_cdrom.c */, + ); + path = src; + sourceTree = ""; + }; + B3EBA3E02872967700EAEB37 /* mman */ = { + isa = PBXGroup; + children = ( + B3EBA3E12872967700EAEB37 /* CMakeLists.txt */, + B3EBA3E22872967700EAEB37 /* configure */, + B3EBA3E32872967700EAEB37 /* Makefile */, + B3EBA3E42872967700EAEB37 /* mman.h */, + B3EBA3E52872967700EAEB37 /* .vs */, + B3EBA3E92872967700EAEB37 /* README.md */, + B3EBA3EA2872967700EAEB37 /* mman.vcxproj */, + B3EBA3EB2872967700EAEB37 /* .gitignore */, + B3EBA3EC2872967700EAEB37 /* .gitrepo */, + B3EBA3ED2872967700EAEB37 /* test.c */, + B3EBA3EE2872967700EAEB37 /* mman.vcxproj.user */, + B3EBA3EF2872967700EAEB37 /* mman.vcxproj.filters */, + B3EBA3F02872967700EAEB37 /* mman.sln */, + B3EBA3F12872967700EAEB37 /* mman-win32.pro */, + B3EBA3F22872967700EAEB37 /* UpgradeLog.htm */, + B3EBA3F32872967700EAEB37 /* mman.c */, + ); + path = mman; + sourceTree = ""; + }; + B3EBA3E52872967700EAEB37 /* .vs */ = { + isa = PBXGroup; + children = ( + B3EBA3E62872967700EAEB37 /* mman */, + ); + path = .vs; + sourceTree = ""; + }; + B3EBA3E62872967700EAEB37 /* mman */ = { + isa = PBXGroup; + children = ( + B3EBA3E72872967700EAEB37 /* v14 */, + ); + path = mman; + sourceTree = ""; + }; + B3EBA3E72872967700EAEB37 /* v14 */ = { + isa = PBXGroup; + children = ( + B3EBA3E82872967700EAEB37 /* .suo */, + ); + path = v14; + sourceTree = ""; + }; + B3EBA3F42872967700EAEB37 /* lightrec */ = { + isa = PBXGroup; + children = ( + B3EBA3F52872967700EAEB37 /* recompiler.h */, + B3EBA3F62872967700EAEB37 /* reaper.h */, + B3EBA3F72872967700EAEB37 /* optimizer.c */, + B3EBA3F82872967700EAEB37 /* debug.h */, + B3EBA3F92872967700EAEB37 /* regcache.h */, + B3EBA3FA2872967700EAEB37 /* CMakeLists.txt */, + B3EBA3FB2872967700EAEB37 /* emitter.h */, + B3EBA3FC2872967700EAEB37 /* disassembler.h */, + B3EBA3FD2872967700EAEB37 /* lightrec-config.h.cmakein */, + B3EBA3FE2872967700EAEB37 /* memmanager.h */, + B3EBA3FF2872967700EAEB37 /* interpreter.h */, + B3EBA4002872967700EAEB37 /* blockcache.h */, + B3EBA4012872967700EAEB37 /* lightrec.h */, + B3EBA4022872967700EAEB37 /* tlsf */, + B3EBA4072872967700EAEB37 /* README.md */, + B3EBA4082872967700EAEB37 /* optimizer.h */, + B3EBA4092872967700EAEB37 /* COPYING */, + B3EBA40A2872967700EAEB37 /* lightrec-private.h */, + B3EBA40B2872967700EAEB37 /* lightning-wrapper.h */, + B3EBA40C2872967700EAEB37 /* recompiler.c */, + B3EBA40D2872967700EAEB37 /* .gitignore */, + B3EBA40E2872967700EAEB37 /* reaper.c */, + B3EBA40F2872967700EAEB37 /* slist.h */, + B3EBA4102872967700EAEB37 /* memmanager.c */, + B3EBA4112872967700EAEB37 /* disassembler.c */, + B3EBA4122872967700EAEB37 /* emitter.c */, + B3EBA4132872967700EAEB37 /* regcache.c */, + B3EBA4142872967700EAEB37 /* .gitrepo */, + B3EBA4152872967700EAEB37 /* interpreter.c */, + B3EBA4162872967700EAEB37 /* lightrec.c */, + B3EBA4172872967700EAEB37 /* blockcache.c */, + ); + path = lightrec; + sourceTree = ""; + }; + B3EBA4022872967700EAEB37 /* tlsf */ = { + isa = PBXGroup; + children = ( + B3EBA4032872967700EAEB37 /* tlsf.c */, + B3EBA4042872967700EAEB37 /* README.md */, + B3EBA4052872967700EAEB37 /* tlsf.h */, + B3EBA4062872967700EAEB37 /* .gitrepo */, + ); + path = tlsf; + sourceTree = ""; + }; + B3EBA41A2872967700EAEB37 /* jni */ = { + isa = PBXGroup; + children = ( + B3EBA41B2872967700EAEB37 /* Android.mk */, + B3EBA41C2872967700EAEB37 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B3C7620D20783162009950E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CD2872558F00B3F6DA /* PVPCSXRearmed.h in Headers */, + B37022C92872554300B3F6DA /* PVPCSXRearmedCore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + B30178D2207C901D0051B93D /* pcsx_rearmed */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "pcsx_rearmed" */; + buildPhases = ( + B30178CF207C901D0051B93D /* Sources */, + B30178D0207C901D0051B93D /* Frameworks */, + B30178D1207C901D0051B93D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = pcsx_rearmed; + productName = reicast; + productReference = B30178D3207C901D0051B93D /* libpcsx_rearmed.a */; + productType = "com.apple.product-type.library.static"; + }; + B3344B522859E088006E6B3A /* pcsx_rearmed-libretro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "pcsx_rearmed-libretro" */; + buildPhases = ( + B3344B532859E088006E6B3A /* Sources */, + B3344BBD2859E088006E6B3A /* Frameworks */, + B3344BBE2859E088006E6B3A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "pcsx_rearmed-libretro"; + productName = reicast; + productReference = B3344BC32859E088006E6B3A /* libpcsx_rearmed-libretro.a */; + productType = "com.apple.product-type.library.static"; + }; + B3980D5D29238A2000A82429 /* gpulib */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3980D6429238A2000A82429 /* Build configuration list for PBXNativeTarget "gpulib" */; + buildPhases = ( + B3980D5A29238A2000A82429 /* Sources */, + B3980D5B29238A2000A82429 /* Frameworks */, + B3980D5C29238A2000A82429 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = gpulib; + productName = gpulib; + productReference = B3980D5E29238A2000A82429 /* libgpulib.a */; + productType = "com.apple.product-type.library.static"; + }; + B3C7620F20783162009950E4 /* PVPCSXRearmed */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPCSXRearmed" */; + buildPhases = ( + B3C7620B20783162009950E4 /* Sources */, + B3C7620C20783162009950E4 /* Frameworks */, + B3C7620D20783162009950E4 /* Headers */, + B3C7620E20783162009950E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B39768FA2859E23200558958 /* PBXTargetDependency */, + ); + name = PVPCSXRearmed; + productName = PVReicast; + productReference = B3C7621020783162009950E4 /* PVPCSXRearmed.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3C7620720783162009950E4 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + CLASSPREFIX = PV; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = "Provenance Emu"; + TargetAttributes = { + B30178D2207C901D0051B93D = { + CreatedOnToolsVersion = 9.3; + ProvisioningStyle = Automatic; + }; + B3980D5D29238A2000A82429 = { + CreatedOnToolsVersion = 14.1; + }; + B3C7620F20783162009950E4 = { + CreatedOnToolsVersion = 9.3; + }; + }; + }; + buildConfigurationList = B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVPCSXRearmed" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + "zh-Hans", + ja, + es, + it, + sv, + ko, + "pt-BR", + ru, + fr, + nl, + ); + mainGroup = B3C7620620783162009950E4; + productRefGroup = B3C7621120783162009950E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3C7620F20783162009950E4 /* PVPCSXRearmed */, + B3344B522859E088006E6B3A /* pcsx_rearmed-libretro */, + B30178D2207C901D0051B93D /* pcsx_rearmed */, + B3980D5D29238A2000A82429 /* gpulib */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3C7620E20783162009950E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022CB2872556600B3F6DA /* Core.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B30178CF207C901D0051B93D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B38E0F0328928AD8004720DA /* plugin.c in Sources */, + B391903B2873F0AF000838F6 /* dma.c in Sources */, + B39190012873EF6B000838F6 /* mdec.c in Sources */, + B3918FED2873EF6B000838F6 /* gte_divider.c in Sources */, + B39190532873F1A7000838F6 /* Alloc.c in Sources */, + B3918FEA2873EF6B000838F6 /* cdriso.c in Sources */, + B391903A2873F0AF000838F6 /* reverb.c in Sources */, + B3918FF72873EF6B000838F6 /* misc.c in Sources */, + B3918FFF2873EF6B000838F6 /* spu.c in Sources */, + B39190412873F0AF000838F6 /* nullsnd.c in Sources */, + B391905B2873F1A7000838F6 /* Bra86.c in Sources */, + B39190552873F1A7000838F6 /* BraIA64.c in Sources */, + B39190682873F1C0000838F6 /* libchdr_huffman.c in Sources */, + B391903E2873F0AF000838F6 /* spu.c in Sources */, + B38E0EFE28928AB3004720DA /* main.c in Sources */, + B39190672873F1C0000838F6 /* libchdr_bitstream.c in Sources */, + B38E0F1328929345004720DA /* emu_if.c in Sources */, + B3918FFA2873EF6B000838F6 /* psxinterpreter.c in Sources */, + B39190522873F1A7000838F6 /* Lzma86Dec.c in Sources */, + B391903D2873F0AF000838F6 /* xa.c in Sources */, + B3918FF22873EF6B000838F6 /* plugins.c in Sources */, + B3918FF82873EF6B000838F6 /* psxhle.c in Sources */, + B39190422873F0AF000838F6 /* freeze.c in Sources */, + B3918FF62873EF6B000838F6 /* psxcommon.c in Sources */, + B391905A2873F1A7000838F6 /* Sort.c in Sources */, + B39190592873F1A7000838F6 /* LzmaEnc.c in Sources */, + B39190542873F1A7000838F6 /* LzFind.c in Sources */, + B39190742873F219000838F6 /* cspace.c in Sources */, + B3918FEE2873EF6B000838F6 /* gte_nf.c in Sources */, + B3918FEF2873EF6B000838F6 /* psxmem.c in Sources */, + B39190582873F1A7000838F6 /* LzmaDec.c in Sources */, + B3918FEB2873EF6B000838F6 /* sio.c in Sources */, + B3918FF52873EF6B000838F6 /* cheat.c in Sources */, + B39190022873EF6B000838F6 /* r3000a.c in Sources */, + B3918FE92873EF6B000838F6 /* ppf.c in Sources */, + B391906A2873F1C0000838F6 /* libchdr_cdrom.c in Sources */, + B39190572873F1A7000838F6 /* Delta.c in Sources */, + B391903C2873F0AF000838F6 /* registers.c in Sources */, + B3918FFB2873EF6B000838F6 /* psxbios.c in Sources */, + B39190562873F1A7000838F6 /* CpuArch.c in Sources */, + B3918FF02873EF6B000838F6 /* cdrom.c in Sources */, + B39190002873EF6B000838F6 /* psxhw.c in Sources */, + B39190662873F1C0000838F6 /* libchdr_flac.c in Sources */, + B39190382873F0AF000838F6 /* adsr.c in Sources */, + B3918FEC2873EF6B000838F6 /* database.c in Sources */, + B39190692873F1C0000838F6 /* libchdr_chd.c in Sources */, + B39190392873F0AF000838F6 /* out.c in Sources */, + B3918FFC2873EF6B000838F6 /* psxdma.c in Sources */, + B3918FF12873EF6B000838F6 /* decode_xa.c in Sources */, + B3918FE82873EF6B000838F6 /* gte.c in Sources */, + B3918FFE2873EF6B000838F6 /* psxcounters.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3344B532859E088006E6B3A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B38E0EF028928A1D004720DA /* stdstring.c in Sources */, + B38E0EF128928A1D004720DA /* fopen_utf8.c in Sources */, + B38E0EEF28928A1D004720DA /* file_path.c in Sources */, + B38E0EEA28928A1D004720DA /* rtime.c in Sources */, + B38E0EEC28928A1D004720DA /* encoding_utf.c in Sources */, + B39190782873F292000838F6 /* libretro.c in Sources */, + B38E0EED28928A1D004720DA /* vfs_implementation.c in Sources */, + B38E0EEB28928A1D004720DA /* compat_strl.c in Sources */, + B38E0EF228928A1D004720DA /* file_stream_transforms.c in Sources */, + B38E0EE928928A1D004720DA /* file_stream.c in Sources */, + B38E0EEE28928A1D004720DA /* compat_posix_string.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3980D5A29238A2000A82429 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3980D7E2923937400A82429 /* gpuPlugin.m in Sources */, + B3980D7729238D9F00A82429 /* gpuFps.m in Sources */, + B3980D7C2923922200A82429 /* cdrcimg.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B3C7620B20783162009950E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37022C82872553E00B3F6DA /* PVPCSXRearmedCore.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B39768FA2859E23200558958 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3344B522859E088006E6B3A /* pcsx_rearmed-libretro */; + targetProxy = B39768F92859E23200558958 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B30178DA207C901D0051B93D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = pcsx_rearmed; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B30178DB207C901D0051B93D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = pcsx_rearmed; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B324C5012191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/pcsx_rearmed/include\"", + "\"$(SRCROOT)/pcsx_rearmed/libretro-common/include\"", + "\"$(SRCROOT)/pcsx_rearmed/deps/libchdr/include\"", + "\"$(SRCROOT)/pcsx_rearmed/deps/libchdr/include/libchdr\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ( + "$(inherited)", + "-mno-thumb", + "-mfpu=neon", + "-fno-operator-names", + "-fno-rtti", + "-ffast-math", + "-ftree-vectorize", + "-fno-strict-aliasing", + "-frename-registers", + "-fno-rtti", + "-fpermissive", + "-fno-operator-names", + "-fsingle-precision-constant", + "-DTARGET_NO_NIXPROF", + ); + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; + B324C5022191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVPCSXRearmed/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPCSXRearmed"; + PRODUCT_NAME = PVPCSXRearmed; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B324C5042191A2A2009F4EDC /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = pcsx_rearmed; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3344BC02859E088006E6B3A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = "pcsx_rearmed-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3344BC12859E088006E6B3A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = "pcsx_rearmed-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B3344BC22859E088006E6B3A /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/libretro-minivmac/libretro/include\"", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = "pcsx_rearmed-libretro"; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3980D6529238A2000A82429 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3980D6629238A2000A82429 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B3980D6729238A2000A82429 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Archive; + }; + B3C7621620783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/pcsx_rearmed/include\"", + "\"$(SRCROOT)/pcsx_rearmed/libretro-common/include\"", + "\"$(SRCROOT)/pcsx_rearmed/deps/libchdr/include\"", + "\"$(SRCROOT)/pcsx_rearmed/deps/libchdr/include/libchdr\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-DTARGET_NO_NIXPROF"; + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B3C7621720783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3447EBF218BE9DA00557ACE /* BuildFlags.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __LIBRETRO__; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "\"$(SRCROOT)/pcsx_rearmed/include\"", + "\"$(SRCROOT)/pcsx_rearmed/libretro-common/include\"", + "\"$(SRCROOT)/pcsx_rearmed/deps/libchdr/include\"", + "\"$(SRCROOT)/pcsx_rearmed/deps/libchdr/include/libchdr\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "$(inherited)", + "-mno-thumb", + "-mfpu=neon", + "-fno-operator-names", + "-fno-rtti", + "-ffast-math", + "-ftree-vectorize", + "-fno-strict-aliasing", + "-frename-registers", + "-fno-rtti", + "-fpermissive", + "-fno-operator-names", + "-fsingle-precision-constant", + "-DTARGET_NO_NIXPROF", + ); + SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; + VALIDATE_PRODUCT = YES; + VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B3C7621920783162009950E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVPCSXRearmed/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPCSXRearmed"; + PRODUCT_NAME = PVPCSXRearmed; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3C7621A20783162009950E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_WARN_INHIBIT_ALL_WARNINGS = YES; + INFOPLIST_FILE = "$(SRCROOT)/PVPCSXRearmed/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVPCSXRearmed"; + PRODUCT_NAME = PVPCSXRearmed; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B30178D9207C901D0051B93D /* Build configuration list for PBXNativeTarget "pcsx_rearmed" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30178DA207C901D0051B93D /* Debug */, + B30178DB207C901D0051B93D /* Release */, + B324C5042191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3344BBF2859E088006E6B3A /* Build configuration list for PBXNativeTarget "pcsx_rearmed-libretro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3344BC02859E088006E6B3A /* Debug */, + B3344BC12859E088006E6B3A /* Release */, + B3344BC22859E088006E6B3A /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3980D6429238A2000A82429 /* Build configuration list for PBXNativeTarget "gpulib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3980D6529238A2000A82429 /* Debug */, + B3980D6629238A2000A82429 /* Release */, + B3980D6729238A2000A82429 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7620A20783162009950E4 /* Build configuration list for PBXProject "PVPCSXRearmed" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621620783162009950E4 /* Debug */, + B3C7621720783162009950E4 /* Release */, + B324C5012191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3C7621820783162009950E4 /* Build configuration list for PBXNativeTarget "PVPCSXRearmed" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3C7621920783162009950E4 /* Debug */, + B3C7621A20783162009950E4 /* Release */, + B324C5022191A2A2009F4EDC /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3C7620720783162009950E4 /* Project object */; +} diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..919434a625 --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/xcshareddata/xcschemes/PVPCSXRearmed.xcscheme b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/xcshareddata/xcschemes/PVPCSXRearmed.xcscheme new file mode 100644 index 0000000000..1663cf5654 --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed.xcodeproj/xcshareddata/xcschemes/PVPCSXRearmed.xcscheme @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed/Core.plist b/Cores/pcsx_rearmed/PVPCSXRearmed/Core.plist new file mode 100644 index 0000000000..e0c8e9fb41 --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed/Core.plist @@ -0,0 +1,20 @@ + + + + + PVCoreIdentifier + com.provenance.PCSXRearmed + PVPrincipleClass + PVPCSXRearmedCore + PVSupportedSystems + + com.provenance.psx + + PVProjectName + PCSX (Rearmed) + PVProjectURL + https://github.com/notaz/pcsx_rearmed + PVProjectVersion + 1 + + diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed/Info.plist b/Cores/pcsx_rearmed/PVPCSXRearmed/Info.plist new file mode 100644 index 0000000000..1007fd9dd7 --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Cores/pcsx_rearmed/PVPCSXRearmed/PVPCSXRearmed.h b/Cores/pcsx_rearmed/PVPCSXRearmed/PVPCSXRearmed.h new file mode 100644 index 0000000000..c4171238c4 --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmed/PVPCSXRearmed.h @@ -0,0 +1,18 @@ +// +// PVPCSXRearmed.h +// PVPCSXRearmed +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import + +//! Project version number for PVPCSXRearmed. +FOUNDATION_EXPORT double PVPCSXRearmedVersionNumber; + +//! Project version string for PVPCSXRearmed. +FOUNDATION_EXPORT const unsigned char PVPCSXRearmedVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/Cores/pcsx_rearmed/PVPCSXRearmedCore/PVPCSXRearmedCore.h b/Cores/pcsx_rearmed/PVPCSXRearmedCore/PVPCSXRearmedCore.h new file mode 100644 index 0000000000..7cc05781ae --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmedCore/PVPCSXRearmedCore.h @@ -0,0 +1,47 @@ +// +// PVPCSXRearmedCore.h +// PVPCSXRearmed +// +// Created by Joseph Mattiello on 10/20/21. +// Copyright © 2021 Provenance. All rights reserved. +// + +#import +#import +#import +#import +#import + +#define GET_CURRENT_AND_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; +#define GET_CURRENT_OR_RETURN(...) __strong __typeof__(_current) current = _current; if(current == nil) return __VA_ARGS__; + +/*( + TODO: Look into THREAD_RENDERING=1 + */ + +__attribute__((visibility("default"))) +@interface PVPCSXRearmedCore : PVLibRetroGLESCore { +// uint8_t padData[4][PVDOSButtonCount]; +// int8_t xAxis[4]; +// int8_t yAxis[4]; +// // int videoWidth; +// // int videoHeight; +// // int videoBitDepth; +// int videoDepthBitDepth; // eh +// +// float sampleRate; +// +// BOOL isNTSC; +//@public +// dispatch_queue_t _callbackQueue; +} +// +//@property (nonatomic, assign) int videoWidth; +//@property (nonatomic, assign) int videoHeight; +//@property (nonatomic, assign) int videoBitDepth; +// +//- (void) swapBuffers; +//- (const char *) getBundlePath; +//- (void) SetScreenSize:(int)width :(int)height; + +@end diff --git a/Cores/pcsx_rearmed/PVPCSXRearmedCore/PVPCSXRearmedCore.mm b/Cores/pcsx_rearmed/PVPCSXRearmedCore/PVPCSXRearmedCore.mm new file mode 100644 index 0000000000..af0db5a8cf --- /dev/null +++ b/Cores/pcsx_rearmed/PVPCSXRearmedCore/PVPCSXRearmedCore.mm @@ -0,0 +1,153 @@ +// +// PVPCSXRearmedCore.m +// PVPCSXRearmed +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance. All rights reserved. +// + +#import "PVPCSXRearmedCore.h" +#include +//#import "PVPCSXRearmedCore+Controls.h" +//#import "PVPCSXRearmedCore+Audio.h" +//#import "PVPCSXRearmedCore+Video.h" +// +//#import "PVPCSXRearmedCore+Audio.h" + +#import +#import + +#define SAMPLERATE 48000 +#define SIZESOUNDBUFFER 48000 / 60 * 4 +#define OpenEmu 1 + +#pragma mark - Private +@interface PVPCSXRearmedCore() { + +} + +@end + +#pragma mark - PVPCSXRearmedCore Begin + +@implementation PVPCSXRearmedCore +{ +} + +- (instancetype)init { + if (self = [super init]) { + } + + _current = self; + return self; +} + +- (void)dealloc { + _current = nil; +} + +#pragma mark - PVEmulatorCore +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { +// NSBundle *coreBundle = [NSBundle bundleForClass:[self class]]; +// const char *dataPath; +// +// [self initControllBuffers]; +// +// // TODO: Proper path +// NSString *configPath = self.saveStatesPath; +// dataPath = [[coreBundle resourcePath] fileSystemRepresentation]; +// +// [[NSFileManager defaultManager] createDirectoryAtPath:configPath +// withIntermediateDirectories:YES +// attributes:nil +// error:nil]; +// +// NSString *batterySavesDirectory = self.batterySavesPath; +// [[NSFileManager defaultManager] createDirectoryAtPath:batterySavesDirectory +// withIntermediateDirectories:YES +// attributes:nil +// error:NULL]; +// +// return YES; +//} + +#pragma mark - Running +//- (void)startEmulation { +// if (!_isInitialized) +// { +// [self.renderDelegate willRenderFrameOnAlternateThread]; +// _isInitialized = true; +// _frameInterval = dol_host->GetFrameInterval(); +// } +// [super startEmulation]; +// + //Disable the OE framelimiting +// [self.renderDelegate suspendFPSLimiting]; +// if(!self.isRunning) { +// [super startEmulation]; +//// [NSThread detachNewThreadSelector:@selector(runReicastRenderThread) toTarget:self withObject:nil]; +// } +//} + +//- (void)setPauseEmulation:(BOOL)flag { +// [super setPauseEmulation:flag]; +//} +// +//- (void)stopEmulation { +// _isInitialized = false; +// +// self->shouldStop = YES; +//// dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +//// dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +// +// [super stopEmulation]; +//} +// +//- (void)resetEmulation { +// // dispatch_semaphore_signal(mupenWaitToBeginFrameSemaphore); +// [self.frontBufferCondition lock]; +// [self.frontBufferCondition signal]; +// [self.frontBufferCondition unlock]; +//} + +//# pragma mark - Cheats +//- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { +//} +// +//- (BOOL)supportsRumble { return NO; } +//- (BOOL)supportsCheatCode { return NO; } + +//- (NSTimeInterval)frameInterval { +// return 13.63; +//} + +//- (CGSize)aspectSize { +// return CGSizeMake(4, 3); +//} +// +//- (CGSize)bufferSize { +// return CGSizeMake(1440, 1080); +//} + +- (GLenum)pixelFormat { + return GL_BGRA; +} + +- (GLenum)pixelType { + return GL_UNSIGNED_BYTE; +} + +- (GLenum)internalPixelFormat { + return GL_RGBA; +} + +- (BOOL)rendersToOpenGL { return YES; } +# pragma mark - Audio + +- (double)audioSampleRate { + return 22255; +} +@end diff --git a/Cores/pcsx_rearmed/pcsx_rearmed b/Cores/pcsx_rearmed/pcsx_rearmed new file mode 160000 index 0000000000..a9aaebbaff --- /dev/null +++ b/Cores/pcsx_rearmed/pcsx_rearmed @@ -0,0 +1 @@ +Subproject commit a9aaebbaff2f0d8427cdb27d6e1f4f16d577f00d diff --git a/Cores/snes9x/PVSNES.xcodeproj/project.pbxproj b/Cores/snes9x/PVSNES.xcodeproj/project.pbxproj index 1653adeb5f..897f4ffea4 100644 --- a/Cores/snes9x/PVSNES.xcodeproj/project.pbxproj +++ b/Cores/snes9x/PVSNES.xcodeproj/project.pbxproj @@ -9,80 +9,14 @@ /* Begin PBXBuildFile section */ B34AB5842106DEA000C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5832106DEA000C45F09 /* PVSupport.framework */; }; B3547B632058591100CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B622058591000CFF7D8 /* Core.plist */; }; - B3547B642058591100CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B622058591000CFF7D8 /* Core.plist */; }; B365107E21782E95008FDB7B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B365107D21782E95008FDB7B /* libz.tbd */; }; - B365108021782E9E008FDB7B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B365107F21782E9E008FDB7B /* libz.tbd */; }; B3C9D5361DEA83DE0068D057 /* PVSNES.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D5341DEA83DE0068D057 /* PVSNES.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C9D54A1DEA841A0068D057 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA91317F75FAF0031B1C9 /* AudioToolbox.framework */; }; B3C9D54B1DEA84220068D057 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA91117F75FA80031B1C9 /* CoreGraphics.framework */; }; - B3C9D54C1DEA842B0068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA90F17F75FA10031B1C9 /* OpenGLES.framework */; platformFilter = ios; }; - B3C9D54D1DEA84320068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA90D17F75F6E0031B1C9 /* UIKit.framework */; }; B3C9D54E1DEA843E0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA8E717F75F350031B1C9 /* Foundation.framework */; }; - B3C9D54F1DEA846B0068D057 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D2E3871D6E7E4A0058544D /* PVSupport.framework */; }; - B3C9D5511DEA847B0068D057 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5501DEA847B0068D057 /* AudioToolbox.framework */; }; - B3C9D5531DEA84830068D057 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5521DEA84830068D057 /* CoreGraphics.framework */; }; - B3C9D5551DEA848A0068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5541DEA848A0068D057 /* OpenGLES.framework */; }; - B3C9D5571DEA84950068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5561DEA84950068D057 /* UIKit.framework */; }; - B3C9D5591DEA849B0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5581DEA849B0068D057 /* Foundation.framework */; }; B3C9D5941DEA86B80068D057 /* SNESOESupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98F17F760390031B1C9 /* SNESOESupport.mm */; }; B3C9D5951DEA86B80068D057 /* PVSNESEmulatorCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91917F760390031B1C9 /* PVSNESEmulatorCore.mm */; }; - B3C9D5CA1DEA86B80068D057 /* SNESOESupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98F17F760390031B1C9 /* SNESOESupport.mm */; }; - B3C9D5CB1DEA86B80068D057 /* PVSNESEmulatorCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91917F760390031B1C9 /* PVSNESEmulatorCore.mm */; }; B3C9D5CE1DEA87930068D057 /* PVSNESEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA91817F760390031B1C9 /* PVSNESEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D5CF1DEA87A00068D057 /* PVSNESEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA91817F760390031B1C9 /* PVSNESEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D5D01DEA87A00068D057 /* PVSNES.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D5341DEA83DE0068D057 /* PVSNES.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C61A1B5025B3E01400C0A52C /* apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91D17F760390031B1C9 /* apu.cpp */; }; - C61A1B5125B3E01400C0A52C /* sdsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3650FEB21770245008FDB7B /* sdsp.cpp */; }; - C61A1B5225B3E01400C0A52C /* smp_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B36510212177027F008FDB7B /* smp_state.cpp */; }; - C61A1B5325B3E01400C0A52C /* smp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B365101F2177027F008FDB7B /* smp.cpp */; }; - C61A1B5425B3E01400C0A52C /* bsx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93117F760390031B1C9 /* bsx.cpp */; }; - C61A1B5525B3E01400C0A52C /* bml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B36510742177066B008FDB7B /* bml.cpp */; }; - C61A1B5625B3E01400C0A52C /* c4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93317F760390031B1C9 /* c4.cpp */; }; - C61A1B5725B3E01400C0A52C /* c4emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93517F760390031B1C9 /* c4emu.cpp */; }; - C61A1B5825B3E01400C0A52C /* cheats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93617F760390031B1C9 /* cheats.cpp */; }; - C61A1B5925B3E01400C0A52C /* cheats2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93817F760390031B1C9 /* cheats2.cpp */; }; - C61A1B5A25B3E01400C0A52C /* clip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93917F760390031B1C9 /* clip.cpp */; }; - C61A1B5B25B3E01400C0A52C /* conffile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93A17F760390031B1C9 /* conffile.cpp */; }; - C61A1B5C25B3E01400C0A52C /* controls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93C17F760390031B1C9 /* controls.cpp */; }; - C61A1B5D25B3E01400C0A52C /* cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA93E17F760390031B1C9 /* cpu.cpp */; }; - C61A1B5E25B3E01400C0A52C /* cpuexec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94017F760390031B1C9 /* cpuexec.cpp */; }; - C61A1B5F25B3E01400C0A52C /* cpuops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94317F760390031B1C9 /* cpuops.cpp */; }; - C61A1B6025B3E01400C0A52C /* crosshairs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94517F760390031B1C9 /* crosshairs.cpp */; }; - C61A1B6125B3E01400C0A52C /* debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94717F760390031B1C9 /* debug.cpp */; }; - C61A1B6225B3E01400C0A52C /* dma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94A17F760390031B1C9 /* dma.cpp */; }; - C61A1B6325B3E01400C0A52C /* dsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94C17F760390031B1C9 /* dsp.cpp */; }; - C61A1B6425B3E01400C0A52C /* dsp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94E17F760390031B1C9 /* dsp1.cpp */; }; - C61A1B6525B3E01400C0A52C /* dsp2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA94F17F760390031B1C9 /* dsp2.cpp */; }; - C61A1B6625B3E01400C0A52C /* dsp3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95017F760390031B1C9 /* dsp3.cpp */; }; - C61A1B6725B3E01400C0A52C /* dsp4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95117F760390031B1C9 /* dsp4.cpp */; }; - C61A1B6825B3E01400C0A52C /* fxdbg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95317F760390031B1C9 /* fxdbg.cpp */; }; - C61A1B6925B3E01400C0A52C /* fxemu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95417F760390031B1C9 /* fxemu.cpp */; }; - C61A1B6A25B3E01400C0A52C /* fxinst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95617F760390031B1C9 /* fxinst.cpp */; }; - C61A1B6B25B3E01400C0A52C /* gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95917F760390031B1C9 /* gfx.cpp */; }; - C61A1B6C25B3E01400C0A52C /* globals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95B17F760390031B1C9 /* globals.cpp */; }; - C61A1B6D25B3E01400C0A52C /* logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95D17F760390031B1C9 /* logger.cpp */; }; - C61A1B6E25B3E01400C0A52C /* memmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA95F17F760390031B1C9 /* memmap.cpp */; }; - C61A1B6F25B3E01400C0A52C /* msu1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B36510772177069A008FDB7B /* msu1.cpp */; }; - C61A1B7025B3E01400C0A52C /* movie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA96317F760390031B1C9 /* movie.cpp */; }; - C61A1B7125B3E01400C0A52C /* netplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA96517F760390031B1C9 /* netplay.cpp */; }; - C61A1B7225B3E01400C0A52C /* obc1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA96717F760390031B1C9 /* obc1.cpp */; }; - C61A1B7325B3E01400C0A52C /* ppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA96B17F760390031B1C9 /* ppu.cpp */; }; - C61A1B7425B3E01400C0A52C /* sa1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA96F17F760390031B1C9 /* sa1.cpp */; }; - C61A1B7525B3E01400C0A52C /* sa1cpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97117F760390031B1C9 /* sa1cpu.cpp */; }; - C61A1B7625B3E01400C0A52C /* stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED8C0211D71467600742D04 /* stream.cpp */; }; - C61A1B7725B3E01400C0A52C /* sdd1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97517F760390031B1C9 /* sdd1.cpp */; }; - C61A1B7825B3E01400C0A52C /* sdd1emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97717F760390031B1C9 /* sdd1emu.cpp */; }; - C61A1B7925B3E01400C0A52C /* server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97917F760390031B1C9 /* server.cpp */; }; - C61A1B7A25B3E01400C0A52C /* seta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97A17F760390031B1C9 /* seta.cpp */; }; - C61A1B7B25B3E01400C0A52C /* sha256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B365107A217706E4008FDB7B /* sha256.cpp */; }; - C61A1B7C25B3E01400C0A52C /* seta010.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97C17F760390031B1C9 /* seta010.cpp */; }; - C61A1B7D25B3E01400C0A52C /* seta011.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97D17F760390031B1C9 /* seta011.cpp */; }; - C61A1B7E25B3E01400C0A52C /* seta018.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97E17F760390031B1C9 /* seta018.cpp */; }; - C61A1B7F25B3E01400C0A52C /* snapshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97F17F760390031B1C9 /* snapshot.cpp */; }; - C61A1B8025B3E01400C0A52C /* snes9x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98117F760390031B1C9 /* snes9x.cpp */; }; - C61A1B8125B3E01400C0A52C /* spc7110.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98317F760390031B1C9 /* spc7110.cpp */; }; - C61A1B8225B3E01400C0A52C /* srtc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98917F760390031B1C9 /* srtc.cpp */; }; - C61A1B8325B3E01400C0A52C /* tile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98D17F760390031B1C9 /* tile.cpp */; }; C664021025B535B7001A3099 /* apu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91D17F760390031B1C9 /* apu.cpp */; }; C664021125B535B7001A3099 /* sdsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3650FEB21770245008FDB7B /* sdsp.cpp */; }; C664021225B535B7001A3099 /* smp_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B36510212177027F008FDB7B /* smp_state.cpp */; }; @@ -136,7 +70,6 @@ C664024225B535B8001A3099 /* tile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98D17F760390031B1C9 /* tile.cpp */; }; C664024325B537AA001A3099 /* sdd1emu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA97717F760390031B1C9 /* sdd1emu.cpp */; }; CF87D338258AB6CE00838AF8 /* PVSNESEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D337258AB6CE00838AF8 /* PVSNESEmulatorCore.swift */; }; - CF87D339258AB6CE00838AF8 /* PVSNESEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D337258AB6CE00838AF8 /* PVSNESEmulatorCore.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -282,7 +215,6 @@ B3C9D5321DEA83DE0068D057 /* PVSNES.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSNES.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D5341DEA83DE0068D057 /* PVSNES.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVSNES.h; sourceTree = ""; }; B3C9D5351DEA83DE0068D057 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3C9D5401DEA83FD0068D057 /* PVSNES.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSNES.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D5501DEA847B0068D057 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; B3C9D5521DEA84830068D057 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; B3C9D5541DEA848A0068D057 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; @@ -303,27 +235,11 @@ B365107E21782E95008FDB7B /* libz.tbd in Frameworks */, B34AB5842106DEA000C45F09 /* PVSupport.framework in Frameworks */, B3C9D54E1DEA843E0068D057 /* Foundation.framework in Frameworks */, - B3C9D54D1DEA84320068D057 /* UIKit.framework in Frameworks */, - B3C9D54C1DEA842B0068D057 /* OpenGLES.framework in Frameworks */, B3C9D54B1DEA84220068D057 /* CoreGraphics.framework in Frameworks */, B3C9D54A1DEA841A0068D057 /* AudioToolbox.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D53C1DEA83FD0068D057 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B365108021782E9E008FDB7B /* libz.tbd in Frameworks */, - B3C9D5591DEA849B0068D057 /* Foundation.framework in Frameworks */, - B3C9D5571DEA84950068D057 /* UIKit.framework in Frameworks */, - B3C9D5551DEA848A0068D057 /* OpenGLES.framework in Frameworks */, - B3C9D5531DEA84830068D057 /* CoreGraphics.framework in Frameworks */, - B3C9D5511DEA847B0068D057 /* AudioToolbox.framework in Frameworks */, - B3C9D54F1DEA846B0068D057 /* PVSupport.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -341,7 +257,6 @@ isa = PBXGroup; children = ( B3C9D5321DEA83DE0068D057 /* PVSNES.framework */, - B3C9D5401DEA83FD0068D057 /* PVSNES.framework */, ); name = Products; sourceTree = ""; @@ -605,21 +520,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D53D1DEA83FD0068D057 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C9D5CF1DEA87A00068D057 /* PVSNESEmulatorCore.h in Headers */, - B3C9D5D01DEA87A00068D057 /* PVSNES.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B3C9D5311DEA83DE0068D057 /* PVSNES-iOS */ = { + B3C9D5311DEA83DE0068D057 /* PVSNES */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSNES-iOS" */; + buildConfigurationList = B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSNES" */; buildPhases = ( B3C9D52F1DEA83DE0068D057 /* Headers */, B3C9D52D1DEA83DE0068D057 /* Sources */, @@ -630,29 +536,11 @@ ); dependencies = ( ); - name = "PVSNES-iOS"; + name = PVSNES; productName = PVSNES; productReference = B3C9D5321DEA83DE0068D057 /* PVSNES.framework */; productType = "com.apple.product-type.framework"; }; - B3C9D53F1DEA83FD0068D057 /* PVSNES-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C9D5451DEA83FE0068D057 /* Build configuration list for PBXNativeTarget "PVSNES-tvOS" */; - buildPhases = ( - B3C9D53D1DEA83FD0068D057 /* Headers */, - B3C9D53B1DEA83FD0068D057 /* Sources */, - B3C9D53C1DEA83FD0068D057 /* Frameworks */, - B3C9D53E1DEA83FD0068D057 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVSNES-tvOS"; - productName = "PVSNES tvOS"; - productReference = B3C9D5401DEA83FD0068D057 /* PVSNES.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -668,10 +556,6 @@ CreatedOnToolsVersion = 8.1; LastSwiftMigration = 1230; }; - B3C9D53F1DEA83FD0068D057 = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 1230; - }; }; }; buildConfigurationList = 1ACEA8DF17F75F350031B1C9 /* Build configuration list for PBXProject "PVSNES" */; @@ -687,8 +571,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C9D5311DEA83DE0068D057 /* PVSNES-iOS */, - B3C9D53F1DEA83FD0068D057 /* PVSNES-tvOS */, + B3C9D5311DEA83DE0068D057 /* PVSNES */, ); }; /* End PBXProject section */ @@ -702,14 +585,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D53E1DEA83FD0068D057 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B642058591100CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -775,68 +650,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D53B1DEA83FD0068D057 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C61A1B5025B3E01400C0A52C /* apu.cpp in Sources */, - C61A1B5125B3E01400C0A52C /* sdsp.cpp in Sources */, - C61A1B5225B3E01400C0A52C /* smp_state.cpp in Sources */, - C61A1B5325B3E01400C0A52C /* smp.cpp in Sources */, - C61A1B5425B3E01400C0A52C /* bsx.cpp in Sources */, - C61A1B5525B3E01400C0A52C /* bml.cpp in Sources */, - C61A1B5625B3E01400C0A52C /* c4.cpp in Sources */, - C61A1B5725B3E01400C0A52C /* c4emu.cpp in Sources */, - C61A1B5825B3E01400C0A52C /* cheats.cpp in Sources */, - C61A1B5925B3E01400C0A52C /* cheats2.cpp in Sources */, - C61A1B5A25B3E01400C0A52C /* clip.cpp in Sources */, - C61A1B5B25B3E01400C0A52C /* conffile.cpp in Sources */, - C61A1B5C25B3E01400C0A52C /* controls.cpp in Sources */, - C61A1B5D25B3E01400C0A52C /* cpu.cpp in Sources */, - C61A1B5E25B3E01400C0A52C /* cpuexec.cpp in Sources */, - C61A1B5F25B3E01400C0A52C /* cpuops.cpp in Sources */, - C61A1B6025B3E01400C0A52C /* crosshairs.cpp in Sources */, - C61A1B6125B3E01400C0A52C /* debug.cpp in Sources */, - C61A1B6225B3E01400C0A52C /* dma.cpp in Sources */, - C61A1B6325B3E01400C0A52C /* dsp.cpp in Sources */, - C61A1B6425B3E01400C0A52C /* dsp1.cpp in Sources */, - C61A1B6525B3E01400C0A52C /* dsp2.cpp in Sources */, - C61A1B6625B3E01400C0A52C /* dsp3.cpp in Sources */, - C61A1B6725B3E01400C0A52C /* dsp4.cpp in Sources */, - C61A1B6825B3E01400C0A52C /* fxdbg.cpp in Sources */, - C61A1B6925B3E01400C0A52C /* fxemu.cpp in Sources */, - C61A1B6A25B3E01400C0A52C /* fxinst.cpp in Sources */, - C61A1B6B25B3E01400C0A52C /* gfx.cpp in Sources */, - C61A1B6C25B3E01400C0A52C /* globals.cpp in Sources */, - C61A1B6D25B3E01400C0A52C /* logger.cpp in Sources */, - C61A1B6E25B3E01400C0A52C /* memmap.cpp in Sources */, - C61A1B6F25B3E01400C0A52C /* msu1.cpp in Sources */, - C61A1B7025B3E01400C0A52C /* movie.cpp in Sources */, - C61A1B7125B3E01400C0A52C /* netplay.cpp in Sources */, - C61A1B7225B3E01400C0A52C /* obc1.cpp in Sources */, - C61A1B7325B3E01400C0A52C /* ppu.cpp in Sources */, - C61A1B7425B3E01400C0A52C /* sa1.cpp in Sources */, - C61A1B7525B3E01400C0A52C /* sa1cpu.cpp in Sources */, - C61A1B7625B3E01400C0A52C /* stream.cpp in Sources */, - C61A1B7725B3E01400C0A52C /* sdd1.cpp in Sources */, - C61A1B7825B3E01400C0A52C /* sdd1emu.cpp in Sources */, - C61A1B7925B3E01400C0A52C /* server.cpp in Sources */, - C61A1B7A25B3E01400C0A52C /* seta.cpp in Sources */, - C61A1B7B25B3E01400C0A52C /* sha256.cpp in Sources */, - C61A1B7C25B3E01400C0A52C /* seta010.cpp in Sources */, - C61A1B7D25B3E01400C0A52C /* seta011.cpp in Sources */, - C61A1B7E25B3E01400C0A52C /* seta018.cpp in Sources */, - C61A1B7F25B3E01400C0A52C /* snapshot.cpp in Sources */, - C61A1B8025B3E01400C0A52C /* snes9x.cpp in Sources */, - C61A1B8125B3E01400C0A52C /* spc7110.cpp in Sources */, - C61A1B8225B3E01400C0A52C /* srtc.cpp in Sources */, - C61A1B8325B3E01400C0A52C /* tile.cpp in Sources */, - CF87D339258AB6CE00838AF8 /* PVSNESEmulatorCore.swift in Sources */, - B3C9D5CA1DEA86B80068D057 /* SNESOESupport.mm in Sources */, - B3C9D5CB1DEA86B80068D057 /* PVSNESEmulatorCore.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -892,7 +705,7 @@ "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-D__MACOSX__"; SDKROOT = iphoneos; @@ -946,7 +759,7 @@ "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-D__MACOSX__"; SDKROOT = iphoneos; @@ -1002,7 +815,7 @@ "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; OTHER_CFLAGS = "-D__MACOSX__"; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; @@ -1035,7 +848,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSNES/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1047,50 +860,12 @@ PRODUCT_NAME = PVSNES; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B324C5082191A2CB009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "PVSNES/PVSNES-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVSNES/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSNES"; - PRODUCT_NAME = PVSNES; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1119,7 +894,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSNES/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1131,9 +906,13 @@ PRODUCT_NAME = PVSNES; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1163,7 +942,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSNES/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1175,92 +954,12 @@ PRODUCT_NAME = PVSNES; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator driverkit iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - B3C9D5461DEA83FE0068D057 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "PVSNES/PVSNES-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVSNES/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSNES"; - PRODUCT_NAME = PVSNES; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3C9D5471DEA83FE0068D057 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "PVSNES/PVSNES-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVSNES/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSNES"; - PRODUCT_NAME = PVSNES; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + TVOS_DEPLOYMENT_TARGET = 13.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1279,7 +978,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSNES-iOS" */ = { + B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSNES" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C9D5381DEA83DE0068D057 /* Debug */, @@ -1289,16 +988,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D5451DEA83FE0068D057 /* Build configuration list for PBXNativeTarget "PVSNES-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3C9D5461DEA83FE0068D057 /* Debug */, - B3C9D5471DEA83FE0068D057 /* Release */, - B324C5082191A2CB009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 1ACEA8DC17F75F350031B1C9 /* Project object */; diff --git a/Cores/snes9x/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme b/Cores/snes9x/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme index 467eec4bbb..3ea1cd749b 100644 --- a/Cores/snes9x/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme +++ b/Cores/snes9x/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D5311DEA83DE0068D057" BuildableName = "PVSNES.framework" - BlueprintName = "PVSNES-iOS" + BlueprintName = "PVSNES" ReferencedContainer = "container:PVSNES.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D5311DEA83DE0068D057" BuildableName = "PVSNES.framework" - BlueprintName = "PVSNES-iOS" + BlueprintName = "PVSNES" ReferencedContainer = "container:PVSNES.xcodeproj"> @@ -61,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C9D5311DEA83DE0068D057" BuildableName = "PVSNES.framework" - BlueprintName = "PVSNES-iOS" + BlueprintName = "PVSNES" ReferencedContainer = "container:PVSNES.xcodeproj"> diff --git a/Cores/snes9x/PVSNES/PVSNES-Prefix.pch b/Cores/snes9x/PVSNES/PVSNES-Prefix.pch index b5ffd7806e..01021d20d5 100644 --- a/Cores/snes9x/PVSNES/PVSNES-Prefix.pch +++ b/Cores/snes9x/PVSNES/PVSNES-Prefix.pch @@ -5,6 +5,6 @@ // #ifdef __OBJC__ - #import + #import #import #endif diff --git a/Cores/snes9x/PVSNES/PVSNES.h b/Cores/snes9x/PVSNES/PVSNES.h index 2522b741d4..a53396218c 100644 --- a/Cores/snes9x/PVSNES/PVSNES.h +++ b/Cores/snes9x/PVSNES/PVSNES.h @@ -6,7 +6,7 @@ // Copyright © 2016 James Addyman. All rights reserved. // -#import +#import //! Project version number for PVSNES. FOUNDATION_EXPORT double PVSNESVersionNumber; diff --git a/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm b/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm index ed4ba5f727..d5f29a24d5 100644 --- a/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm +++ b/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.mm @@ -32,7 +32,7 @@ //#import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -71,6 +71,8 @@ @interface PVSNESEmulatorCore () { unsigned char *videoBufferA; unsigned char *videoBufferB; NSMutableDictionary *cheatList; + + BOOL isMultitap; } @end @@ -707,6 +709,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { @"3c6a8dc8", // Zero 4 Champ RR-Z (Japan) ]; + isMultitap = NO; // Automatically enable SNES Mouse, Super Scope, Justifier and Multitap where supported if([snesJustifier containsObject:cartCRC32]) { @@ -729,6 +732,7 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { // Controller in Port 1 and Multitap in Port 2 S9xSetController(0, CTL_JOYPAD, 0, 0, 0, 0); S9xSetController(1, CTL_MP5, 1, 2, 3, 4); + isMultitap = YES; } else if([cartCRC32 isEqual:@"be08d788"]) { @@ -856,7 +860,7 @@ - (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab cheatList[code] = @YES; else [cheatList removeObjectForKey:code]; - NSLog(@"Applying Cheat Code %@ %@ %@", code, type, cheatList); + ILOG(@"Applying Cheat Code %@ %@ %@", code, type, cheatList); S9xDeleteCheats(); @@ -872,13 +876,13 @@ - (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab { // Handle multi-line cheats multipleCodes = [key componentsSeparatedByString:@"+"]; - NSLog(@"Multiple Codes %@", multipleCodes); + ILOG(@"Multiple Codes %@", multipleCodes); for (NSString *singleCode in multipleCodes) { // Sanitize for PAR codes that might contain colons const char *cheatCode = [[singleCode stringByReplacingOccurrencesOfString:@":" withString:@""] UTF8String]; if (singleCode != nil && singleCode.length > 0) { if (S9xAddCheatGroup("Provenance", cheatCode) >= 0) { - NSLog(@"Code %@ applied successfully", singleCode); + ILOG(@"Code %@ applied successfully", singleCode); S9xEnableCheatGroup(Cheat.g.size () - 1); } else { cheatListSuccessfull = NO; @@ -903,20 +907,24 @@ - (BOOL)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enab #pragma mark - Input -- (void)didPushSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player { +- (void)didPushSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player +{ S9xReportButton((player+1 << 16) | button, true); } -- (void)didReleaseSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player { +- (void)didReleaseSNESButton:(PVSNESButton)button forPlayer:(NSInteger)player +{ S9xReportButton((player+1 << 16) | button, false); } -- (void)mapButtons { - for(int player = 1; player <= 8; player++) { +- (void)mapButtons +{ + for(int player = 1; player <= 8; player++) + { NSUInteger playerMask = player << 16; - + NSString *playerString = [NSString stringWithFormat:@"Joypad%d ", player]; - + for(NSUInteger idx = 0; idx < PVSNESButtonCount; idx++) { s9xcommand_t cmd = S9xGetCommandT([[playerString stringByAppendingString:SNESEmulatorKeys[idx]] UTF8String]); @@ -925,14 +933,21 @@ - (void)mapButtons { } } -- (void)updateController { + +-(NSUInteger)maxNumberPlayers { + return isMultitap ? 8 : 4; +} + +- (void)updateControllers { GCController *controller = nil; - for (NSInteger player = 1; player <= 2; player++) { + for (NSInteger player = 1; player <= 2; player++) + { NSUInteger playerMask = player << 16; GCController *controller = (player == 1) ? self.controller1 : self.controller2; - if ([controller extendedGamepad]) { + if ([controller extendedGamepad]) + { GCExtendedGamepad *gamepad = [controller extendedGamepad]; GCControllerDirectionPad *dpad = [gamepad dpad]; diff --git a/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.swift b/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.swift index 07ad1c2396..45e882e4cb 100644 --- a/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.swift +++ b/Cores/snes9x/PVSNES/SNES/PVSNESEmulatorCore.swift @@ -4,7 +4,7 @@ // import PVSupport -import UIKit +import Foundation extension PVSNESEmulatorCore: GameWithCheat { public func setCheat( diff --git a/Cores/snesticle/BuildFlags.xcconfig b/Cores/snesticle/BuildFlags.xcconfig new file mode 100644 index 0000000000..886ba29ded --- /dev/null +++ b/Cores/snesticle/BuildFlags.xcconfig @@ -0,0 +1,31 @@ +// +// BuildFlags.xcconfig +// PVDosBox +// +// Created by Joseph Mattiello on 11/1/18. +// +// + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) C_DYNREC=1 _FILE_OFFSET_BITS=64 __LIBRETRO__ LSB_FIRST=1 ALIGN_DWORD=1 CODE_PLATFORM=1 USE_POSIX_MEMALIGN=1 HAVE_THREADS=1 HAVE_SYS_PARAM_H HAVE_INTTYPES_H HAVE_STRINGS HAVE_STDINT_H STATIC_LINKING +GCC_PREPROCESSOR_DEFINITIONS[configuration=Debug] = $(inherited) DEBUG=1 +GCC_PREPROCESSOR_DEFINITIONS[configuration=Release] = $(inherited) NDEBUG=1 + +// DISABLE_DYNAREC=1 +OTHER_CFLAGS = $(inherited) -ObjC -Wno-ignored-optimization-argument -Wno-unknown-warning-option -fomit-frame-pointer -fno-exceptions -fno-non-call-exceptions -Wno-address-of-packed-member -Wno-format -Wno-switch -Wno-psabi -fpic -fvisibility=hidden -ffunction-sections -Iinclude +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-all_load -all_load -lpthread + + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/project.pbxproj b/Cores/snesticle/PVSnesticle.xcodeproj/project.pbxproj index a03155d8b1..e127165143 100644 --- a/Cores/snesticle/PVSnesticle.xcodeproj/project.pbxproj +++ b/Cores/snesticle/PVSnesticle.xcodeproj/project.pbxproj @@ -7,10 +7,8 @@ objects = { /* Begin PBXBuildFile section */ - B33FADA7279BCA9E0013AAD8 /* snesticle_tvOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FADA6279BCA9E0013AAD8 /* snesticle_tvOS.swift */; }; B33FADB3279BCAB40013AAD8 /* snesticle_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FADB2279BCAB40013AAD8 /* snesticle_iOS.swift */; }; - B33FADB8279BCCDC0013AAD8 /* libsnesticle-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */; }; - B33FADBB279BCCF40013AAD8 /* libsnesticle-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */; }; + B33FADB8279BCCDC0013AAD8 /* libsnesticle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33FADB0279BCAB40013AAD8 /* libsnesticle.a */; }; B33FB2D0279BCED80013AAD8 /* snspc_c.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FADEA279BCE900013AAD8 /* snspc_c.c */; }; B33FB2D1279BCED80013AAD8 /* sncpu.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FADE5279BCE900013AAD8 /* sncpu.c */; }; B33FB2D2279BCED80013AAD8 /* snspc.c in Sources */ = {isa = PBXBuildFile; fileRef = B33FADEF279BCE900013AAD8 /* snspc.c */; }; @@ -22,14 +20,12 @@ B33FB2D8279BCEF40013AAD8 /* snspcdsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE16279BCE900013AAD8 /* snspcdsp.cpp */; }; B33FB2D9279BCEF50013AAD8 /* sndma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADF6279BCE900013AAD8 /* sndma.cpp */; }; B33FB2DA279BCEF50013AAD8 /* snspcio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE13279BCE900013AAD8 /* snspcio.cpp */; }; - B33FB2DB279BCEF50013AAD8 /* snspcmix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE01279BCE900013AAD8 /* snspcmix.cpp */; }; B33FB2DC279BCEF50013AAD8 /* snstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE08279BCE900013AAD8 /* snstate.cpp */; }; B33FB2DD279BCEF50013AAD8 /* snppuobj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE12279BCE900013AAD8 /* snppuobj.cpp */; }; B33FB2DE279BCEF50013AAD8 /* snppurender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADE9279BCE900013AAD8 /* snppurender.cpp */; }; B33FB2DF279BCEF50013AAD8 /* snes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE18279BCE900013AAD8 /* snes.cpp */; }; B33FB2E0279BCEF50013AAD8 /* snesreg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADFC279BCE900013AAD8 /* snesreg.cpp */; }; B33FB2E1279BCEF50013AAD8 /* snmemmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADF7279BCE900013AAD8 /* snmemmap.cpp */; }; - B33FB2E2279BCEF50013AAD8 /* sndsp1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE19279BCE900013AAD8 /* sndsp1.cpp */; }; B33FB2E3279BCEF50013AAD8 /* snppu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADED279BCE900013AAD8 /* snppu.cpp */; }; B33FB2E4279BCEF50013AAD8 /* snppublend_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE0F279BCE900013AAD8 /* snppublend_c.cpp */; }; B33FB2E5279BCEF50013AAD8 /* snppucolor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FADF8279BCE900013AAD8 /* snppucolor.cpp */; }; @@ -39,28 +35,19 @@ B33FB2E9279BCEF50013AAD8 /* snppurender8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FAE09279BCE900013AAD8 /* snppurender8.cpp */; }; B34AB5842106DEA000C45F09 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34AB5832106DEA000C45F09 /* PVSupport.framework */; }; B3547B632058591100CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B622058591000CFF7D8 /* Core.plist */; }; - B3547B642058591100CFF7D8 /* Core.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3547B622058591000CFF7D8 /* Core.plist */; }; B365107E21782E95008FDB7B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B365107D21782E95008FDB7B /* libz.tbd */; }; - B365108021782E9E008FDB7B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B365107F21782E9E008FDB7B /* libz.tbd */; }; + B3C39C092895292D00B8DCD5 /* rendersurface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FB290279BCE930013AAD8 /* rendersurface.cpp */; }; + B3C39C0D2895296400B8DCD5 /* surface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B33FB26D279BCE930013AAD8 /* surface.cpp */; }; + B3C39C1028952A7900B8DCD5 /* PVSnesticleCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D337258AB6CE00838AF8 /* PVSnesticleCore.swift */; }; B3C9D5361DEA83DE0068D057 /* PVSnesticle.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D5341DEA83DE0068D057 /* PVSnesticle.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C9D54A1DEA841A0068D057 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA91317F75FAF0031B1C9 /* AudioToolbox.framework */; }; B3C9D54B1DEA84220068D057 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA91117F75FA80031B1C9 /* CoreGraphics.framework */; }; B3C9D54C1DEA842B0068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA90F17F75FA10031B1C9 /* OpenGLES.framework */; platformFilter = ios; }; B3C9D54D1DEA84320068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA90D17F75F6E0031B1C9 /* UIKit.framework */; }; B3C9D54E1DEA843E0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACEA8E717F75F350031B1C9 /* Foundation.framework */; }; - B3C9D54F1DEA846B0068D057 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D2E3871D6E7E4A0058544D /* PVSupport.framework */; }; - B3C9D5511DEA847B0068D057 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5501DEA847B0068D057 /* AudioToolbox.framework */; }; - B3C9D5531DEA84830068D057 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5521DEA84830068D057 /* CoreGraphics.framework */; }; - B3C9D5551DEA848A0068D057 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5541DEA848A0068D057 /* OpenGLES.framework */; }; - B3C9D5571DEA84950068D057 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5561DEA84950068D057 /* UIKit.framework */; }; - B3C9D5591DEA849B0068D057 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C9D5581DEA849B0068D057 /* Foundation.framework */; }; B3C9D5941DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98F17F760390031B1C9 /* PVSnesticleOESupport.mm */; }; B3C9D5951DEA86B80068D057 /* PVSnesticleCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91917F760390031B1C9 /* PVSnesticleCore.mm */; }; - B3C9D5CA1DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA98F17F760390031B1C9 /* PVSnesticleOESupport.mm */; }; - B3C9D5CB1DEA86B80068D057 /* PVSnesticleCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA91917F760390031B1C9 /* PVSnesticleCore.mm */; }; B3C9D5CE1DEA87930068D057 /* PVSnesticleCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA91817F760390031B1C9 /* PVSnesticleCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D5CF1DEA87A00068D057 /* PVSnesticleCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA91817F760390031B1C9 /* PVSnesticleCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C9D5D01DEA87A00068D057 /* PVSnesticle.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C9D5341DEA83DE0068D057 /* PVSnesticle.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -71,25 +58,9 @@ remoteGlobalIDString = B33FADAF279BCAB40013AAD8; remoteInfo = "snesticle-iOS"; }; - B33FADBC279BCCF40013AAD8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1ACEA8DC17F75F350031B1C9 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B33FADA3279BCA9D0013AAD8; - remoteInfo = "snesticle-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - B33FADA2279BCA9D0013AAD8 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B33FADAE279BCAB40013AAD8 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -112,44 +83,16 @@ 1ACEA91817F760390031B1C9 /* PVSnesticleCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVSnesticleCore.h; sourceTree = ""; }; 1ACEA91917F760390031B1C9 /* PVSnesticleCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PVSnesticleCore.mm; sourceTree = ""; }; 1ACEA98F17F760390031B1C9 /* PVSnesticleOESupport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PVSnesticleOESupport.mm; sourceTree = ""; }; + B3339C2E28951EE300F8E917 /* BuildFlags.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildFlags.xcconfig; sourceTree = ""; }; B33FAD9A279BCA840013AAD8 /* snesticle_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = snesticle_iOS.swift; sourceTree = ""; }; - B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnesticle-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B33FADA6279BCA9E0013AAD8 /* snesticle_tvOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = snesticle_tvOS.swift; sourceTree = ""; }; - B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsnesticle-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B33FADB0279BCAB40013AAD8 /* libsnesticle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsnesticle.a; sourceTree = BUILT_PRODUCTS_DIR; }; B33FADB2279BCAB40013AAD8 /* snesticle_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = snesticle_iOS.swift; sourceTree = ""; }; B33FADBF279BCE8F0013AAD8 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; B33FADC0279BCE8F0013AAD8 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; B33FADC2279BCE8F0013AAD8 /* SNESticle.sln */ = {isa = PBXFileReference; lastKnownFileType = text; path = SNESticle.sln; sourceTree = ""; }; B33FADC3279BCE8F0013AAD8 /* todo.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = todo.txt; sourceTree = ""; }; B33FADC6279BCE900013AAD8 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - B33FADC8279BCE900013AAD8 /* uiNetwork.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiNetwork.h; sourceTree = ""; }; - B33FADC9279BCE900013AAD8 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; - B33FADCA279BCE900013AAD8 /* uiMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiMenu.h; sourceTree = ""; }; - B33FADCB279BCE900013AAD8 /* uiBrowser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiBrowser.h; sourceTree = ""; }; - B33FADCC279BCE900013AAD8 /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; - B33FADCD279BCE900013AAD8 /* snppublend_gs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppublend_gs.h; sourceTree = ""; }; - B33FADCE279BCE900013AAD8 /* memcard.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = memcard.cpp; sourceTree = ""; }; - B33FADCF279BCE900013AAD8 /* uiMenu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiMenu.cpp; sourceTree = ""; }; - B33FADD0279BCE900013AAD8 /* snmaskop.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snmaskop.h; sourceTree = ""; }; - B33FADD1279BCE900013AAD8 /* version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = version.cpp; sourceTree = ""; }; - B33FADD2279BCE900013AAD8 /* mainloop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainloop.cpp; sourceTree = ""; }; - B33FADD3279BCE900013AAD8 /* titleman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = titleman.c; sourceTree = ""; }; - B33FADD4279BCE900013AAD8 /* uiLog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiLog.cpp; sourceTree = ""; }; - B33FADD5279BCE900013AAD8 /* convert_vu1.dsm */ = {isa = PBXFileReference; lastKnownFileType = text; path = convert_vu1.dsm; sourceTree = ""; }; - B33FADD6279BCE900013AAD8 /* snppublend_mm.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppublend_mm.cpp; sourceTree = ""; }; - B33FADD7279BCE900013AAD8 /* ps2reg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ps2reg.h; sourceTree = ""; }; - B33FADD8279BCE900013AAD8 /* sn65816.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sn65816.S; sourceTree = ""; }; - B33FADD9279BCE900013AAD8 /* snmask64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snmask64.cpp; sourceTree = ""; }; - B33FADDA279BCE900013AAD8 /* uiScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiScreen.h; sourceTree = ""; }; - B33FADDB279BCE900013AAD8 /* snmask128.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snmask128.cpp; sourceTree = ""; }; - B33FADDC279BCE900013AAD8 /* uiBrowser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiBrowser.cpp; sourceTree = ""; }; - B33FADDD279BCE900013AAD8 /* titleman.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = titleman.h; sourceTree = ""; }; - B33FADDE279BCE900013AAD8 /* snspc700.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = snspc700.S; sourceTree = ""; }; - B33FADDF279BCE900013AAD8 /* uiNetwork.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = uiNetwork.cpp; sourceTree = ""; }; - B33FADE0279BCE900013AAD8 /* snppublend_mm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snppublend_mm.h; sourceTree = ""; }; - B33FADE1279BCE900013AAD8 /* memcard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memcard.h; sourceTree = ""; }; - B33FADE2279BCE900013AAD8 /* uiLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uiLog.h; sourceTree = ""; }; - B33FADE3279BCE900013AAD8 /* snppublend_gs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppublend_gs.cpp; sourceTree = ""; }; B33FADE5279BCE900013AAD8 /* sncpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sncpu.c; sourceTree = ""; }; B33FADE6279BCE900013AAD8 /* sndebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sndebug.h; sourceTree = ""; }; B33FADE7279BCE900013AAD8 /* snio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snio.cpp; sourceTree = ""; }; @@ -212,9 +155,6 @@ B33FAE20279BCE900013AAD8 /* snspcbrr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snspcbrr.c; sourceTree = ""; }; B33FAE21279BCE900013AAD8 /* snqueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snqueue.h; sourceTree = ""; }; B33FAE22279BCE900013AAD8 /* snspcdsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snspcdsp.h; sourceTree = ""; }; - B33FAE24279BCE900013AAD8 /* input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input.h; sourceTree = ""; }; - B33FAE25279BCE900013AAD8 /* input.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = input.cpp; sourceTree = ""; }; - B33FAE26279BCE900013AAD8 /* mainloop.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mainloop.cpp; sourceTree = ""; }; B33FAE28279BCE900013AAD8 /* snppublend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snppublend.cpp; sourceTree = ""; }; B33FAE2A279BCE900013AAD8 /* snesdisasmview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = snesdisasmview.cpp; sourceTree = ""; }; B33FAE2B279BCE900013AAD8 /* disasmview.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = disasmview.cpp; sourceTree = ""; }; @@ -1005,16 +945,6 @@ B33FB145279BCE920013AAD8 /* snspc.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspc.obj; sourceTree = ""; }; B33FB146279BCE920013AAD8 /* snspc_c.obj */ = {isa = PBXFileReference; lastKnownFileType = file; path = snspc_c.obj; sourceTree = ""; }; B33FB147279BCE920013AAD8 /* SNESticle.vssscc */ = {isa = PBXFileReference; lastKnownFileType = text; path = SNESticle.vssscc; sourceTree = ""; }; - B33FB14D279BCE920013AAD8 /* netplay_ee.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netplay_ee.c; sourceTree = ""; }; - B33FB14E279BCE920013AAD8 /* netplay_ee.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netplay_ee.h; sourceTree = ""; }; - B33FB150279BCE920013AAD8 /* netplay_rpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netplay_rpc.h; sourceTree = ""; }; - B33FB152279BCE920013AAD8 /* netprint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netprint.c; sourceTree = ""; }; - B33FB153279BCE920013AAD8 /* netsys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netsys.c; sourceTree = ""; }; - B33FB154279BCE920013AAD8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - B33FB155279BCE920013AAD8 /* netprint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netprint.h; sourceTree = ""; }; - B33FB156279BCE920013AAD8 /* llnetsocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = llnetsocket.h; sourceTree = ""; }; - B33FB157279BCE920013AAD8 /* netsys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netsys.h; sourceTree = ""; }; - B33FB158279BCE920013AAD8 /* netplay_iop.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netplay_iop.c; sourceTree = ""; }; B33FB15A279BCE920013AAD8 /* netsocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netsocket.h; sourceTree = ""; }; B33FB15B279BCE920013AAD8 /* netserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netserver.h; sourceTree = ""; }; B33FB15C279BCE920013AAD8 /* netrelay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netrelay.h; sourceTree = ""; }; @@ -1353,7 +1283,6 @@ B3C9D5321DEA83DE0068D057 /* PVSnesticle.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSnesticle.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D5341DEA83DE0068D057 /* PVSnesticle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVSnesticle.h; sourceTree = ""; }; B3C9D5351DEA83DE0068D057 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3C9D5401DEA83FD0068D057 /* PVSnesticle.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSnesticle.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C9D5501DEA847B0068D057 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; B3C9D5521DEA84830068D057 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; B3C9D5541DEA848A0068D057 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; @@ -1365,13 +1294,6 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B33FADA1279BCA9D0013AAD8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B33FADAD279BCAB40013AAD8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1385,7 +1307,7 @@ files = ( B365107E21782E95008FDB7B /* libz.tbd in Frameworks */, B34AB5842106DEA000C45F09 /* PVSupport.framework in Frameworks */, - B33FADB8279BCCDC0013AAD8 /* libsnesticle-iOS.a in Frameworks */, + B33FADB8279BCCDC0013AAD8 /* libsnesticle.a in Frameworks */, B3C9D54E1DEA843E0068D057 /* Foundation.framework in Frameworks */, B3C9D54D1DEA84320068D057 /* UIKit.framework in Frameworks */, B3C9D54C1DEA842B0068D057 /* OpenGLES.framework in Frameworks */, @@ -1394,27 +1316,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D53C1DEA83FD0068D057 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B365108021782E9E008FDB7B /* libz.tbd in Frameworks */, - B3C9D5591DEA849B0068D057 /* Foundation.framework in Frameworks */, - B3C9D5571DEA84950068D057 /* UIKit.framework in Frameworks */, - B3C9D5551DEA848A0068D057 /* OpenGLES.framework in Frameworks */, - B33FADBB279BCCF40013AAD8 /* libsnesticle-tvOS.a in Frameworks */, - B3C9D5531DEA84830068D057 /* CoreGraphics.framework in Frameworks */, - B3C9D5511DEA847B0068D057 /* AudioToolbox.framework in Frameworks */, - B3C9D54F1DEA846B0068D057 /* PVSupport.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 1ACEA8DB17F75F350031B1C9 = { isa = PBXGroup; children = ( + B3339C2E28951EE300F8E917 /* BuildFlags.xcconfig */, B33FADBE279BCE8F0013AAD8 /* SNESticle */, 1ACEA8E917F75F350031B1C9 /* PVSnesticle */, B3C9D5331DEA83DE0068D057 /* PVSnesticle */, @@ -1430,9 +1338,7 @@ isa = PBXGroup; children = ( B3C9D5321DEA83DE0068D057 /* PVSnesticle.framework */, - B3C9D5401DEA83FD0068D057 /* PVSnesticle.framework */, - B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */, - B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */, + B33FADB0279BCAB40013AAD8 /* libsnesticle.a */, ); name = Products; sourceTree = ""; @@ -1545,8 +1451,6 @@ children = ( B33FADE4279BCE900013AAD8 /* common */, B33FADC5279BCE900013AAD8 /* con32 */, - B33FAE23279BCE900013AAD8 /* dc */, - B33FADC7279BCE900013AAD8 /* ps2 */, B33FAE27279BCE900013AAD8 /* win32 */, ); path = Source; @@ -1560,41 +1464,6 @@ path = con32; sourceTree = ""; }; - B33FADC7279BCE900013AAD8 /* ps2 */ = { - isa = PBXGroup; - children = ( - B33FADC8279BCE900013AAD8 /* uiNetwork.h */, - B33FADC9279BCE900013AAD8 /* input.h */, - B33FADCA279BCE900013AAD8 /* uiMenu.h */, - B33FADCB279BCE900013AAD8 /* uiBrowser.h */, - B33FADCC279BCE900013AAD8 /* input.cpp */, - B33FADCD279BCE900013AAD8 /* snppublend_gs.h */, - B33FADCE279BCE900013AAD8 /* memcard.cpp */, - B33FADCF279BCE900013AAD8 /* uiMenu.cpp */, - B33FADD0279BCE900013AAD8 /* snmaskop.h */, - B33FADD1279BCE900013AAD8 /* version.cpp */, - B33FADD2279BCE900013AAD8 /* mainloop.cpp */, - B33FADD3279BCE900013AAD8 /* titleman.c */, - B33FADD4279BCE900013AAD8 /* uiLog.cpp */, - B33FADD5279BCE900013AAD8 /* convert_vu1.dsm */, - B33FADD6279BCE900013AAD8 /* snppublend_mm.cpp */, - B33FADD7279BCE900013AAD8 /* ps2reg.h */, - B33FADD8279BCE900013AAD8 /* sn65816.S */, - B33FADD9279BCE900013AAD8 /* snmask64.cpp */, - B33FADDA279BCE900013AAD8 /* uiScreen.h */, - B33FADDB279BCE900013AAD8 /* snmask128.cpp */, - B33FADDC279BCE900013AAD8 /* uiBrowser.cpp */, - B33FADDD279BCE900013AAD8 /* titleman.h */, - B33FADDE279BCE900013AAD8 /* snspc700.S */, - B33FADDF279BCE900013AAD8 /* uiNetwork.cpp */, - B33FADE0279BCE900013AAD8 /* snppublend_mm.h */, - B33FADE1279BCE900013AAD8 /* memcard.h */, - B33FADE2279BCE900013AAD8 /* uiLog.h */, - B33FADE3279BCE900013AAD8 /* snppublend_gs.cpp */, - ); - path = ps2; - sourceTree = ""; - }; B33FADE4279BCE900013AAD8 /* common */ = { isa = PBXGroup; children = ( @@ -1664,16 +1533,6 @@ path = common; sourceTree = ""; }; - B33FAE23279BCE900013AAD8 /* dc */ = { - isa = PBXGroup; - children = ( - B33FAE24279BCE900013AAD8 /* input.h */, - B33FAE25279BCE900013AAD8 /* input.cpp */, - B33FAE26279BCE900013AAD8 /* mainloop.cpp */, - ); - path = dc; - sourceTree = ""; - }; B33FAE27279BCE900013AAD8 /* win32 */ = { isa = PBXGroup; children = ( @@ -2571,54 +2430,12 @@ B33FB14A279BCE920013AAD8 /* Source */ = { isa = PBXGroup; children = ( - B33FB14B279BCE920013AAD8 /* ps2 */, B33FB159279BCE920013AAD8 /* common */, B33FB167279BCE920013AAD8 /* win32 */, ); path = Source; sourceTree = ""; }; - B33FB14B279BCE920013AAD8 /* ps2 */ = { - isa = PBXGroup; - children = ( - B33FB14C279BCE920013AAD8 /* ee */, - B33FB14F279BCE920013AAD8 /* common */, - B33FB151279BCE920013AAD8 /* iop */, - ); - path = ps2; - sourceTree = ""; - }; - B33FB14C279BCE920013AAD8 /* ee */ = { - isa = PBXGroup; - children = ( - B33FB14D279BCE920013AAD8 /* netplay_ee.c */, - B33FB14E279BCE920013AAD8 /* netplay_ee.h */, - ); - path = ee; - sourceTree = ""; - }; - B33FB14F279BCE920013AAD8 /* common */ = { - isa = PBXGroup; - children = ( - B33FB150279BCE920013AAD8 /* netplay_rpc.h */, - ); - path = common; - sourceTree = ""; - }; - B33FB151279BCE920013AAD8 /* iop */ = { - isa = PBXGroup; - children = ( - B33FB152279BCE920013AAD8 /* netprint.c */, - B33FB153279BCE920013AAD8 /* netsys.c */, - B33FB154279BCE920013AAD8 /* types.h */, - B33FB155279BCE920013AAD8 /* netprint.h */, - B33FB156279BCE920013AAD8 /* llnetsocket.h */, - B33FB157279BCE920013AAD8 /* netsys.h */, - B33FB158279BCE920013AAD8 /* netplay_iop.c */, - ); - path = iop; - sourceTree = ""; - }; B33FB159279BCE920013AAD8 /* common */ = { isa = PBXGroup; children = ( @@ -3322,38 +3139,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D53D1DEA83FD0068D057 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C9D5CF1DEA87A00068D057 /* PVSnesticleCore.h in Headers */, - B3C9D5D01DEA87A00068D057 /* PVSnesticle.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B33FADA3279BCA9D0013AAD8 /* snesticle-tvOS */ = { + B33FADAF279BCAB40013AAD8 /* snesticle */ = { isa = PBXNativeTarget; - buildConfigurationList = B33FADA8279BCA9E0013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-tvOS" */; - buildPhases = ( - B33FADA0279BCA9D0013AAD8 /* Sources */, - B33FADA1279BCA9D0013AAD8 /* Frameworks */, - B33FADA2279BCA9D0013AAD8 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "snesticle-tvOS"; - productName = "snesticle-tvOS"; - productReference = B33FADA4279BCA9D0013AAD8 /* libsnesticle-tvOS.a */; - productType = "com.apple.product-type.library.static"; - }; - B33FADAF279BCAB40013AAD8 /* snesticle-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B33FADB4279BCAB40013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-iOS" */; + buildConfigurationList = B33FADB4279BCAB40013AAD8 /* Build configuration list for PBXNativeTarget "snesticle" */; buildPhases = ( B33FADAC279BCAB40013AAD8 /* Sources */, B33FADAD279BCAB40013AAD8 /* Frameworks */, @@ -3363,14 +3154,14 @@ ); dependencies = ( ); - name = "snesticle-iOS"; + name = snesticle; productName = "snesticle-iOS"; - productReference = B33FADB0279BCAB40013AAD8 /* libsnesticle-iOS.a */; + productReference = B33FADB0279BCAB40013AAD8 /* libsnesticle.a */; productType = "com.apple.product-type.library.static"; }; - B3C9D5311DEA83DE0068D057 /* PVSnesticle-iOS */ = { + B3C9D5311DEA83DE0068D057 /* PVSnesticle */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-iOS" */; + buildConfigurationList = B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle" */; buildPhases = ( B3C9D52F1DEA83DE0068D057 /* Headers */, B3C9D52D1DEA83DE0068D057 /* Sources */, @@ -3382,30 +3173,11 @@ dependencies = ( B33FADBA279BCCDC0013AAD8 /* PBXTargetDependency */, ); - name = "PVSnesticle-iOS"; + name = PVSnesticle; productName = PVSNES; productReference = B3C9D5321DEA83DE0068D057 /* PVSnesticle.framework */; productType = "com.apple.product-type.framework"; }; - B3C9D53F1DEA83FD0068D057 /* PVSnesticle-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C9D5451DEA83FE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-tvOS" */; - buildPhases = ( - B3C9D53D1DEA83FD0068D057 /* Headers */, - B3C9D53B1DEA83FD0068D057 /* Sources */, - B3C9D53C1DEA83FD0068D057 /* Frameworks */, - B3C9D53E1DEA83FD0068D057 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B33FADBD279BCCF40013AAD8 /* PBXTargetDependency */, - ); - name = "PVSnesticle-tvOS"; - productName = "PVSNES tvOS"; - productReference = B3C9D5401DEA83FD0068D057 /* PVSnesticle.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -3418,9 +3190,6 @@ LastUpgradeCheck = 1300; ORGANIZATIONNAME = "Provenance Emu"; TargetAttributes = { - B33FADA3279BCA9D0013AAD8 = { - CreatedOnToolsVersion = 13.2.1; - }; B33FADAF279BCAB40013AAD8 = { CreatedOnToolsVersion = 13.2.1; }; @@ -3428,10 +3197,6 @@ CreatedOnToolsVersion = 8.1; LastSwiftMigration = 1230; }; - B3C9D53F1DEA83FD0068D057 = { - CreatedOnToolsVersion = 8.1; - LastSwiftMigration = 1230; - }; }; }; buildConfigurationList = 1ACEA8DF17F75F350031B1C9 /* Build configuration list for PBXProject "PVSnesticle" */; @@ -3447,10 +3212,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C9D5311DEA83DE0068D057 /* PVSnesticle-iOS */, - B3C9D53F1DEA83FD0068D057 /* PVSnesticle-tvOS */, - B33FADAF279BCAB40013AAD8 /* snesticle-iOS */, - B33FADA3279BCA9D0013AAD8 /* snesticle-tvOS */, + B3C9D5311DEA83DE0068D057 /* PVSnesticle */, + B33FADAF279BCAB40013AAD8 /* snesticle */, ); }; /* End PBXProject section */ @@ -3464,25 +3227,9 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C9D53E1DEA83FD0068D057 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3547B642058591100CFF7D8 /* Core.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B33FADA0279BCA9D0013AAD8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B33FADA7279BCA9E0013AAD8 /* snesticle_tvOS.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B33FADAC279BCAB40013AAD8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3495,15 +3242,14 @@ B33FB2D1279BCED80013AAD8 /* sncpu.c in Sources */, B33FB2DC279BCEF50013AAD8 /* snstate.cpp in Sources */, B33FB2D8279BCEF40013AAD8 /* snspcdsp.cpp in Sources */, - B33FB2DB279BCEF50013AAD8 /* snspcmix.cpp in Sources */, B33FB2E0279BCEF50013AAD8 /* snesreg.cpp in Sources */, + B3C39C092895292D00B8DCD5 /* rendersurface.cpp in Sources */, B33FB2E3279BCEF50013AAD8 /* snppu.cpp in Sources */, B33FB2D3279BCED80013AAD8 /* snspcrom.c in Sources */, B33FB2DE279BCEF50013AAD8 /* snppurender.cpp in Sources */, B33FADB3279BCAB40013AAD8 /* snesticle_iOS.swift in Sources */, B33FB2DF279BCEF50013AAD8 /* snes.cpp in Sources */, B33FB2DD279BCEF50013AAD8 /* snppuobj.cpp in Sources */, - B33FB2E2279BCEF50013AAD8 /* sndsp1.cpp in Sources */, B33FB2D0279BCED80013AAD8 /* snspc_c.c in Sources */, B33FB2D2279BCED80013AAD8 /* snspc.c in Sources */, B33FB2DA279BCEF50013AAD8 /* snspcio.cpp in Sources */, @@ -3512,6 +3258,7 @@ B33FB2D4279BCED80013AAD8 /* sndisasm.c in Sources */, B33FB2E4279BCEF50013AAD8 /* snppublend_c.cpp in Sources */, B33FB2E7279BCEF50013AAD8 /* snspctimer.cpp in Sources */, + B3C39C0D2895296400B8DCD5 /* surface.cpp in Sources */, B33FB2E8279BCEF50013AAD8 /* snio.cpp in Sources */, B33FB2D7279BCED80013AAD8 /* snspcbrr.c in Sources */, ); @@ -3523,15 +3270,7 @@ files = ( B3C9D5941DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */, B3C9D5951DEA86B80068D057 /* PVSnesticleCore.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C9D53B1DEA83FD0068D057 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3C9D5CA1DEA86B80068D057 /* PVSnesticleOESupport.mm in Sources */, - B3C9D5CB1DEA86B80068D057 /* PVSnesticleCore.mm in Sources */, + B3C39C1028952A7900B8DCD5 /* PVSnesticleCore.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3540,19 +3279,15 @@ /* Begin PBXTargetDependency section */ B33FADBA279BCCDC0013AAD8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B33FADAF279BCAB40013AAD8 /* snesticle-iOS */; + target = B33FADAF279BCAB40013AAD8 /* snesticle */; targetProxy = B33FADB9279BCCDC0013AAD8 /* PBXContainerItemProxy */; }; - B33FADBD279BCCF40013AAD8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B33FADA3279BCA9D0013AAD8 /* snesticle-tvOS */; - targetProxy = B33FADBC279BCCF40013AAD8 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 1ACEA90517F75F350031B1C9 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3339C2E28951EE300F8E917 /* BuildFlags.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -3600,19 +3335,22 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", - "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", + "\"$(SRCROOT)/SNESticle/SNESticle/Source/common\"", + "\"$(SRCROOT)/SNESticle/Gep/Include/win32\"", + "\"$(SRCROOT)/SNESticle/Gep/Include/common\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-D__MACOSX__"; + OTHER_CFLAGS = "$(inherited)"; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; name = Debug; }; 1ACEA90617F75F350031B1C9 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3339C2E28951EE300F8E917 /* BuildFlags.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -3654,14 +3392,16 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", - "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", + "\"$(SRCROOT)/SNESticle/SNESticle/Source/common\"", + "\"$(SRCROOT)/SNESticle/Gep/Include/win32\"", + "\"$(SRCROOT)/SNESticle/Gep/Include/common\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-D__MACOSX__"; + OTHER_CFLAGS = "$(inherited)"; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; @@ -3669,6 +3409,7 @@ }; B324C5062191A2CB009F4EDC /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B3339C2E28951EE300F8E917 /* BuildFlags.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -3710,13 +3451,15 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/PVSNES/SNES/SNESCore/apu/bapu\"", - "\"$(SRCROOT)/PVSNES/SNES/SNESCore\"", + "\"$(SRCROOT)/SNESticle/SNESticle/Source/common\"", + "\"$(SRCROOT)/SNESticle/Gep/Include/win32\"", + "\"$(SRCROOT)/SNESticle/Gep/Include/common\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - OTHER_CFLAGS = "-D__MACOSX__"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + OTHER_CFLAGS = "$(inherited)"; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE_SKIPPED_SDK_FRAMEWORKS = OpenGLES; }; @@ -3725,6 +3468,7 @@ B324C5072191A2CB009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -3746,7 +3490,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSnesticle/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -3758,6 +3502,8 @@ PRODUCT_NAME = PVSnesticle; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; VERSIONING_SYSTEM = "apple-generic"; @@ -3765,135 +3511,10 @@ }; name = Archive; }; - B324C5082191A2CB009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVSnesticle/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; - PRODUCT_NAME = PVSnesticle; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Archive; - }; - B33FADA9279BCA9E0013AAD8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 15.2; - }; - name = Debug; - }; - B33FADAA279BCA9E0013AAD8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 15.2; - }; - name = Release; - }; - B33FADAB279BCA9E0013AAD8 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S32Z3HMYVQ; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 15.2; - }; - name = Archive; - }; B33FADB5279BCAB40013AAD8 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -3905,12 +3526,14 @@ DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.2; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -3921,6 +3544,7 @@ B33FADB6279BCAB40013AAD8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -3933,12 +3557,14 @@ DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.2; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3948,6 +3574,7 @@ B33FADB7279BCAB40013AAD8 /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -3960,12 +3587,14 @@ DEVELOPMENT_TEAM = S32Z3HMYVQ; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.2; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3975,6 +3604,7 @@ B3C9D5381DEA83DE0068D057 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -3995,7 +3625,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSnesticle/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -4007,6 +3637,8 @@ PRODUCT_NAME = PVSnesticle; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; @@ -4018,6 +3650,7 @@ B3C9D5391DEA83DE0068D057 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -4039,7 +3672,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSnesticle/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -4051,6 +3684,8 @@ PRODUCT_NAME = PVSnesticle; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; VERSIONING_SYSTEM = "apple-generic"; @@ -4058,90 +3693,6 @@ }; name = Release; }; - B3C9D5461DEA83FE0068D057 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVSnesticle/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; - PRODUCT_NAME = PVSnesticle; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3C9D5471DEA83FE0068D057 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "PVSnesticle/PVSnesticle-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = PVSnesticle/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVSnesticle"; - PRODUCT_NAME = PVSnesticle; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -4155,17 +3706,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B33FADA8279BCA9E0013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B33FADA9279BCA9E0013AAD8 /* Debug */, - B33FADAA279BCA9E0013AAD8 /* Release */, - B33FADAB279BCA9E0013AAD8 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B33FADB4279BCAB40013AAD8 /* Build configuration list for PBXNativeTarget "snesticle-iOS" */ = { + B33FADB4279BCAB40013AAD8 /* Build configuration list for PBXNativeTarget "snesticle" */ = { isa = XCConfigurationList; buildConfigurations = ( B33FADB5279BCAB40013AAD8 /* Debug */, @@ -4175,7 +3716,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-iOS" */ = { + B3C9D5371DEA83DE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C9D5381DEA83DE0068D057 /* Debug */, @@ -4185,16 +3726,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C9D5451DEA83FE0068D057 /* Build configuration list for PBXNativeTarget "PVSnesticle-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3C9D5461DEA83FE0068D057 /* Debug */, - B3C9D5471DEA83FE0068D057 /* Release */, - B324C5082191A2CB009F4EDC /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 1ACEA8DC17F75F350031B1C9 /* Project object */; diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES tvOS.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES tvOS.xcscheme deleted file mode 100644 index 4959484b85..0000000000 --- a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES tvOS.xcscheme +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme deleted file mode 100644 index 467eec4bbb..0000000000 --- a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-iOS.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-iOS.xcscheme deleted file mode 100644 index 83f81bb9d8..0000000000 --- a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-iOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-tvOS.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-tvOS.xcscheme deleted file mode 100644 index fad929934b..0000000000 --- a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle-tvOS.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle.xcscheme b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle.xcscheme new file mode 100644 index 0000000000..68e7fd46fb --- /dev/null +++ b/Cores/snesticle/PVSnesticle.xcodeproj/xcshareddata/xcschemes/PVSnesticle.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.mm b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.mm index 12139eb76f..5dd6c34d83 100644 --- a/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.mm +++ b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.mm @@ -5,7 +5,7 @@ //#import -#if !TARGET_OS_MACCATALYST +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX #import #import #import @@ -176,7 +176,7 @@ - (NSTimeInterval)frameInterval - (BOOL)isDoubleBuffered { - return YES; + return NO; } #pragma mark Audio @@ -192,6 +192,8 @@ - (NSUInteger)channelCount } #pragma mark Save States +- (BOOL)supportsSaveStates { return NO; } + - (BOOL)saveStateToFileAtPath: (NSString *) fileName error:(NSError**)error { @synchronized(self) { diff --git a/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.swift b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.swift index 48878431bc..01852235f1 100644 --- a/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.swift +++ b/Cores/snesticle/PVSnesticle/Core/PVSnesticleCore.swift @@ -4,7 +4,7 @@ // import PVSupport -import UIKit +import Foundation extension PVSnesticleCore: GameWithCheat { public func setCheat( diff --git a/Cores/snesticle/PVSnesticle/PVSnesticle-Prefix.pch b/Cores/snesticle/PVSnesticle/PVSnesticle-Prefix.pch index b5ffd7806e..01021d20d5 100644 --- a/Cores/snesticle/PVSnesticle/PVSnesticle-Prefix.pch +++ b/Cores/snesticle/PVSnesticle/PVSnesticle-Prefix.pch @@ -5,6 +5,6 @@ // #ifdef __OBJC__ - #import + #import #import #endif diff --git a/Cores/snesticle/PVSnesticle/PVSnesticle.h b/Cores/snesticle/PVSnesticle/PVSnesticle.h index e93b182570..050580789d 100644 --- a/Cores/snesticle/PVSnesticle/PVSnesticle.h +++ b/Cores/snesticle/PVSnesticle/PVSnesticle.h @@ -5,7 +5,7 @@ // Created by Joseph Mattiello on 01/22/22. // -#import +#import //! Project version number for PVSnesticle. FOUNDATION_EXPORT double PVSnesticleVersionNumber; diff --git a/Cores/snesticle/SNESticle b/Cores/snesticle/SNESticle index 9590ebf3bf..29829f9b63 160000 --- a/Cores/snesticle/SNESticle +++ b/Cores/snesticle/SNESticle @@ -1 +1 @@ -Subproject commit 9590ebf3bf768424ebd6cb018f322e724a7aade3 +Subproject commit 29829f9b633150ebc5acd1cf32894b4c8508064a diff --git a/CoresRetro/CoresRetro.h b/CoresRetro/CoresRetro.h new file mode 100644 index 0000000000..ebbd6f485f --- /dev/null +++ b/CoresRetro/CoresRetro.h @@ -0,0 +1,45 @@ +// +// CoresRetro.h +// CoresRetro +// +// Created by Joseph Mattiello on 7/8/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import + +//! Project version number for CoresRetro. +FOUNDATION_EXPORT double CoresRetroVersionNumber; + +//! Project version string for CoresRetro. +FOUNDATION_EXPORT const unsigned char CoresRetroVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#if BROKEN_CORES +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#endif diff --git a/ExperimentalCores/ExperimentalCores.h b/ExperimentalCores/ExperimentalCores.h deleted file mode 100644 index 95fc4cec71..0000000000 --- a/ExperimentalCores/ExperimentalCores.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// ExperimentalCores.h -// ExperimentalCores -// -// Created by Joseph Mattiello on 3/12/22. -// Copyright © 2022 Provenance Emu. All rights reserved. -// - -#import - -//! Project version number for ExperimentalCores. -FOUNDATION_EXPORT double ExperimentalCoresVersionNumber; - -//! Project version string for ExperimentalCores. -FOUNDATION_EXPORT const unsigned char ExperimentalCoresVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/ExportOptions.plist b/ExportOptions.plist new file mode 100644 index 0000000000..6d153cf2e5 --- /dev/null +++ b/ExportOptions.plist @@ -0,0 +1,20 @@ + + + + + destination + export + iCloudContainerEnvironment + Production + manageAppVersionAndBuildNumber + + method + app-store + signingStyle + automatic + teamID + S32Z3HMYVQ + uploadSymbols + + + diff --git a/Extensions/ActivityMonitorExtension/ActivityMonitorExtension.entitlements b/Extensions/ActivityMonitorExtension/ActivityMonitorExtension.entitlements new file mode 100644 index 0000000000..59e0ac3cfe --- /dev/null +++ b/Extensions/ActivityMonitorExtension/ActivityMonitorExtension.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.developer.family-controls + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + + diff --git a/Extensions/ActivityMonitorExtension/DeviceActivityMonitorExtension.swift b/Extensions/ActivityMonitorExtension/DeviceActivityMonitorExtension.swift new file mode 100644 index 0000000000..993b9b4d9b --- /dev/null +++ b/Extensions/ActivityMonitorExtension/DeviceActivityMonitorExtension.swift @@ -0,0 +1,59 @@ +// +// DeviceActivityMonitorExtension.swift +// ActivityMonitorExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +// https://developer.apple.com/documentation/deviceactivity/deviceactivityreport?changes=_3 +// https://developer.apple.com/documentation/deviceactivity/deviceactivitymonitor + +import Foundation +import DeviceActivity +import ManagedSettings + +// Optionally override any of the functions below. +// Make sure that your class name matches the NSExtensionPrincipalClass in your Info.plist. +class DeviceActivityMonitorExtension: DeviceActivityMonitor { + let store = ManagedSettingsStore() + + override func intervalDidStart(for activity: DeviceActivityName) { + super.intervalDidStart(for: activity) + + // Shield selected applications. +// let model = MyModel() +// let applications = model.selectionToShield.applications +// store.shield.applications = applications.isEmpty ? nil : applications + } + + override func intervalDidEnd(for activity: DeviceActivityName) { + super.intervalDidEnd(for: activity) + + // Handle the end of the interval. + } + + override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { + super.eventDidReachThreshold(event, activity: activity) + + // Handle the event reaching its threshold. + } + + override func intervalWillStartWarning(for activity: DeviceActivityName) { + super.intervalWillStartWarning(for: activity) + + // Handle the warning before the interval starts. + } + + override func intervalWillEndWarning(for activity: DeviceActivityName) { + super.intervalWillEndWarning(for: activity) + + // Handle the warning before the interval ends. + } + + override func eventWillReachThresholdWarning(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { + super.eventWillReachThresholdWarning(event, activity: activity) + + // Handle the warning before the event reaches its threshold. + } +} diff --git a/Extensions/ActivityMonitorExtension/Info.plist b/Extensions/ActivityMonitorExtension/Info.plist new file mode 100644 index 0000000000..13f9299bab --- /dev/null +++ b/Extensions/ActivityMonitorExtension/Info.plist @@ -0,0 +1,13 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.deviceactivity.monitor-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).DeviceActivityMonitorExtension + + + diff --git a/Extensions/ActivityReportExtension/ActivityReportExtension.entitlements b/Extensions/ActivityReportExtension/ActivityReportExtension.entitlements new file mode 100644 index 0000000000..59e0ac3cfe --- /dev/null +++ b/Extensions/ActivityReportExtension/ActivityReportExtension.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.developer.family-controls + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + + diff --git a/Extensions/ActivityReportExtension/ActivityReportExtension.swift b/Extensions/ActivityReportExtension/ActivityReportExtension.swift new file mode 100644 index 0000000000..cd98f7235f --- /dev/null +++ b/Extensions/ActivityReportExtension/ActivityReportExtension.swift @@ -0,0 +1,24 @@ +// +// ActivityReportExtension.swift +// ActivityReportExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +// https://developer.apple.com/documentation/deviceactivity/deviceactivitymonitor + +import DeviceActivity +import SwiftUI + +@available(iOSApplicationExtension 16.0, *) +@main +struct ActivityReportExtension: DeviceActivityReportExtension { + var body: some DeviceActivityReportScene { + // Create a report for each DeviceActivityReport.Context that your app supports. + TotalActivityReport { totalActivity in + TotalActivityView(totalActivity: totalActivity) + } + // Add more reports here... + } +} diff --git a/Extensions/ActivityReportExtension/Info.plist b/Extensions/ActivityReportExtension/Info.plist new file mode 100644 index 0000000000..5c599a431e --- /dev/null +++ b/Extensions/ActivityReportExtension/Info.plist @@ -0,0 +1,11 @@ + + + + + EXAppExtensionAttributes + + EXExtensionPointIdentifier + com.apple.deviceactivityui.report-extension + + + diff --git a/Extensions/ActivityReportExtension/TotalActivityReport.swift b/Extensions/ActivityReportExtension/TotalActivityReport.swift new file mode 100644 index 0000000000..d8db9754fc --- /dev/null +++ b/Extensions/ActivityReportExtension/TotalActivityReport.swift @@ -0,0 +1,39 @@ +// +// TotalActivityReport.swift +// ActivityReportExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import DeviceActivity +import SwiftUI + +extension DeviceActivityReport.Context { + // If your app initializes a DeviceActivityReport with this context, then the system will use + // your extension's corresponding DeviceActivityReportScene to render the contents of the + // report. + static let totalActivity = Self("Total Activity") +} + +struct TotalActivityReport: DeviceActivityReportScene { + // Define which context your scene will represent. + let context: DeviceActivityReport.Context = .totalActivity + + // Define the custom configuration and the resulting view for this report. + let content: (String) -> TotalActivityView + + func makeConfiguration(representing data: DeviceActivityResults) async -> String { + // Reformat the data into a configuration that can be used to create + // the report's view. + let formatter = DateComponentsFormatter() + formatter.allowedUnits = [.day, .hour, .minute, .second] + formatter.unitsStyle = .abbreviated + formatter.zeroFormattingBehavior = .dropAll + + let totalActivityDuration = await data.flatMap { $0.activitySegments }.reduce(0, { + $0 + $1.totalActivityDuration + }) + return formatter.string(from: totalActivityDuration) ?? "No activity data" + } +} diff --git a/Extensions/ActivityReportExtension/TotalActivityView.swift b/Extensions/ActivityReportExtension/TotalActivityView.swift new file mode 100644 index 0000000000..9c977a4c95 --- /dev/null +++ b/Extensions/ActivityReportExtension/TotalActivityView.swift @@ -0,0 +1,26 @@ +// +// TotalActivityView.swift +// ActivityReportExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import SwiftUI + +struct TotalActivityView: View { + let totalActivity: String + + var body: some View { + Text(totalActivity) + } +} + +// In order to support previews for your extension's custom views, make sure its source files are +// members of your app's Xcode target as well as members of your extension's target. You can use +// Xcode's File Inspector to modify a file's Target Membership. +struct TotalActivityView_Previews: PreviewProvider { + static var previews: some View { + TotalActivityView(totalActivity: "1h 23m") + } +} diff --git a/Extensions/BackgroundDownloadExtension/BackgroundDownloadExtension.entitlements b/Extensions/BackgroundDownloadExtension/BackgroundDownloadExtension.entitlements new file mode 100644 index 0000000000..181c63a181 --- /dev/null +++ b/Extensions/BackgroundDownloadExtension/BackgroundDownloadExtension.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + com.apple.developer.team-identifier + org.provenance-emu + + diff --git a/Extensions/BackgroundDownloadExtension/BackgroundDownloadHandler.swift b/Extensions/BackgroundDownloadExtension/BackgroundDownloadHandler.swift new file mode 100644 index 0000000000..e77f24f194 --- /dev/null +++ b/Extensions/BackgroundDownloadExtension/BackgroundDownloadHandler.swift @@ -0,0 +1,62 @@ +// +// BackgroundDownloadHandler.swift +// BackgroundDownloadExtension +// +// Created by Joseph Mattiello on 11/13/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import BackgroundAssets + +@main +struct BackgroundDownloadHandler: BADownloaderExtension +{ + func downloads(for request: BAContentRequest, + manifestURL: URL, + extensionInfo: BAAppExtensionInfo) -> Set + { + // Downloads are being requested by the system. + // The BAContextRequest argument will contain the reason downloads are requested. + // The manifestURL will point to a read-only file that was pre-downloaded. You are + // encouraged to use this file to determine what assets need to be downloaded. + // The manifest that is downloaded is determined by `BAManifestURL` defined in the + // application's `Info.plist`. + let appGroupIdentifier = "group.org.provenance-emu.provenance" + var downloadsToSchedule: Set = [] + + // Parse the `manifestURL` to determine what assets are available that might need + // to be scheduled. + // Then add downloads to the set to be returned. + // Note: The identifier should be unique and is what is used to track your download between + // the extension and app. + let url = URL(string: "https://example.com/large-asset.bin")! + let download = BAURLDownload( + identifier: "Unique-Asset-Identifier", + request: URLRequest(url: url), + applicationGroupIdentifier: appGroupIdentifier + ) + + downloadsToSchedule.insert(download) + + // The downloads that are returned will be downloaded automatically by the system. + return downloadsToSchedule + } + + func backgroundDownload(_ failedDownload: BADownload, failedWithError error: Error) { + // Extension was woken because a download failed. + // A download can be rescheduled with BADownloadManager if necessary. + } + + func backgroundDownload(_ finishedDownload: BADownload, finishedWithFileURL fileURL: URL) { + // Extension was woken because a download finished. + // It is strongly advised to keep files in `Library/Caches` so that they may be + // deleted when the device becomes low on storage. + } + + func extensionWillTerminate() + { + // Extension will terminate very shortly, wrap up any remaining work with haste. + // This is advisory only and is not guaranteed to be called before the + // extension exits. + } +} diff --git a/Extensions/BackgroundDownloadExtension/Info.plist b/Extensions/BackgroundDownloadExtension/Info.plist new file mode 100644 index 0000000000..1f5fa17915 --- /dev/null +++ b/Extensions/BackgroundDownloadExtension/Info.plist @@ -0,0 +1,11 @@ + + + + + EXAppExtensionAttributes + + EXExtensionPointIdentifier + com.apple.background-asset-downloader-extension + + + diff --git a/Extensions/ControllerDriver/ControllerDriver.cpp b/Extensions/ControllerDriver/ControllerDriver.cpp new file mode 100644 index 0000000000..4f6842341b --- /dev/null +++ b/Extensions/ControllerDriver/ControllerDriver.cpp @@ -0,0 +1,23 @@ +// +// ControllerDriver.cpp +// ControllerDriver +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#include + +#include +#include + +#include "ControllerDriver.h" + +kern_return_t +IMPL(ControllerDriver, Start) +{ + kern_return_t ret; + ret = Start(provider, SUPERDISPATCH); + os_log(OS_LOG_DEFAULT, "Hello World"); + return ret; +} diff --git a/Extensions/ControllerDriver/ControllerDriver.entitlements b/Extensions/ControllerDriver/ControllerDriver.entitlements new file mode 100644 index 0000000000..ed807a5672 --- /dev/null +++ b/Extensions/ControllerDriver/ControllerDriver.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.developer.driverkit.family.hid.device + + com.apple.developer.driverkit.family.serial + + com.apple.developer.driverkit.transport.usb + + + + + diff --git a/Extensions/ControllerDriver/ControllerDriver.iig b/Extensions/ControllerDriver/ControllerDriver.iig new file mode 100644 index 0000000000..7fe9163838 --- /dev/null +++ b/Extensions/ControllerDriver/ControllerDriver.iig @@ -0,0 +1,22 @@ +// +// ControllerDriver.iig +// ControllerDriver +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#ifndef ControllerDriver_h +#define ControllerDriver_h + +#include +#include + +class ControllerDriver: public IOService +{ +public: + virtual kern_return_t + Start(IOService * provider) override; +}; + +#endif /* ControllerDriver_h */ diff --git a/Extensions/ControllerDriver/Info.plist b/Extensions/ControllerDriver/Info.plist new file mode 100644 index 0000000000..e029952c70 --- /dev/null +++ b/Extensions/ControllerDriver/Info.plist @@ -0,0 +1,28 @@ + + + + + IOKitPersonalities + + ControllerDriver + + CFBundleIdentifierKernel + com.apple.kpi.iokit + IOClass + IOUserService + IOMatchCategory + $(PRODUCT_BUNDLE_IDENTIFIER) + IOProviderClass + IOUserResources + IOResourceMatch + IOKit + IOUserClass + ControllerDriver + IOUserServerName + $(PRODUCT_BUNDLE_IDENTIFIER) + + + OSBundleUsageDescription + + + diff --git a/Extensions/FileProviderExtension/FileProviderEnumerator.swift b/Extensions/FileProviderExtension/FileProviderEnumerator.swift new file mode 100644 index 0000000000..a464681371 --- /dev/null +++ b/Extensions/FileProviderExtension/FileProviderEnumerator.swift @@ -0,0 +1,58 @@ +// +// FileProviderEnumerator.swift +// FileProviderExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import FileProvider + +class FileProviderEnumerator: NSObject, NSFileProviderEnumerator { + + private let enumeratedItemIdentifier: NSFileProviderItemIdentifier + private let anchor = NSFileProviderSyncAnchor("an anchor".data(using: .utf8)!) + + init(enumeratedItemIdentifier: NSFileProviderItemIdentifier) { + self.enumeratedItemIdentifier = enumeratedItemIdentifier + super.init() + } + + func invalidate() { + // TODO: perform invalidation of server connection if necessary + } + + func enumerateItems(for observer: NSFileProviderEnumerationObserver, startingAt page: NSFileProviderPage) { + /* TODO: + - inspect the page to determine whether this is an initial or a follow-up request + + If this is an enumerator for a directory, the root container or all directories: + - perform a server request to fetch directory contents + If this is an enumerator for the active set: + - perform a server request to update your local database + - fetch the active set from your local database + + - inform the observer about the items returned by the server (possibly multiple times) + - inform the observer that you are finished with this page + */ + observer.didEnumerate([FileProviderItem(identifier: NSFileProviderItemIdentifier("a file"))]) + observer.finishEnumerating(upTo: nil) + } + + func enumerateChanges(for observer: NSFileProviderChangeObserver, from anchor: NSFileProviderSyncAnchor) { + /* TODO: + - query the server for updates since the passed-in sync anchor + + If this is an enumerator for the active set: + - note the changes in your local database + + - inform the observer about item deletions and updates (modifications + insertions) + - inform the observer when you have finished enumerating up to a subsequent sync anchor + */ + observer.finishEnumeratingChanges(upTo: anchor, moreComing: false) + } + + func currentSyncAnchor(completionHandler: @escaping (NSFileProviderSyncAnchor?) -> Void) { + completionHandler(anchor) + } +} diff --git a/Extensions/FileProviderExtension/FileProviderExtension.entitlements b/Extensions/FileProviderExtension/FileProviderExtension.entitlements new file mode 100644 index 0000000000..381c9bbd14 --- /dev/null +++ b/Extensions/FileProviderExtension/FileProviderExtension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + + diff --git a/Extensions/FileProviderExtension/FileProviderExtension.swift b/Extensions/FileProviderExtension/FileProviderExtension.swift new file mode 100644 index 0000000000..e0747ec684 --- /dev/null +++ b/Extensions/FileProviderExtension/FileProviderExtension.swift @@ -0,0 +1,69 @@ +// +// FileProviderExtension.swift +// FileProviderExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +// https://developer.apple.com/documentation/fileprovider + +import FileProvider + +class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension { + required init(domain: NSFileProviderDomain) { + // TODO: The containing application must create a domain using `NSFileProviderManager.add(_:, completionHandler:)`. The system will then launch the application extension process, call `FileProviderExtension.init(domain:)` to instantiate the extension for that domain, and call methods on the instance. + super.init() + } + + func invalidate() { + // TODO: cleanup any resources + } + + @available(iOSApplicationExtension 16.0, *) + func item(for identifier: NSFileProviderItemIdentifier, request: NSFileProviderRequest, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) -> Progress { + // resolve the given identifier to a record in the model + + // TODO: implement the actual lookup + + completionHandler(FileProviderItem(identifier: identifier), nil) + return Progress() + } + + @available(iOSApplicationExtension 16.0, *) + func fetchContents(for itemIdentifier: NSFileProviderItemIdentifier, version requestedVersion: NSFileProviderItemVersion?, request: NSFileProviderRequest, completionHandler: @escaping (URL?, NSFileProviderItem?, Error?) -> Void) -> Progress { + // TODO: implement fetching of the contents for the itemIdentifier at the specified version + + completionHandler(nil, nil, NSError(domain: NSCocoaErrorDomain, code: NSFeatureUnsupportedError, userInfo:[:])) + return Progress() + } + + @available(iOSApplicationExtension 16.0, *) + func createItem(basedOn itemTemplate: NSFileProviderItem, fields: NSFileProviderItemFields, contents url: URL?, options: NSFileProviderCreateItemOptions = [], request: NSFileProviderRequest, completionHandler: @escaping (NSFileProviderItem?, NSFileProviderItemFields, Bool, Error?) -> Void) -> Progress { + // TODO: a new item was created on disk, process the item's creation + + completionHandler(itemTemplate, [], false, nil) + return Progress() + } + + @available(iOSApplicationExtension 16.0, *) + func modifyItem(_ item: NSFileProviderItem, baseVersion version: NSFileProviderItemVersion, changedFields: NSFileProviderItemFields, contents newContents: URL?, options: NSFileProviderModifyItemOptions = [], request: NSFileProviderRequest, completionHandler: @escaping (NSFileProviderItem?, NSFileProviderItemFields, Bool, Error?) -> Void) -> Progress { + // TODO: an item was modified on disk, process the item's modification + + completionHandler(nil, [], false, NSError(domain: NSCocoaErrorDomain, code: NSFeatureUnsupportedError, userInfo:[:])) + return Progress() + } + + @available(iOSApplicationExtension 16.0, *) + func deleteItem(identifier: NSFileProviderItemIdentifier, baseVersion version: NSFileProviderItemVersion, options: NSFileProviderDeleteItemOptions = [], request: NSFileProviderRequest, completionHandler: @escaping (Error?) -> Void) -> Progress { + // TODO: an item was deleted on disk, process the item's deletion + + completionHandler(NSError(domain: NSCocoaErrorDomain, code: NSFeatureUnsupportedError, userInfo:[:])) + return Progress() + } + + @available(iOSApplicationExtension 16.0, *) + func enumerator(for containerItemIdentifier: NSFileProviderItemIdentifier, request: NSFileProviderRequest) throws -> NSFileProviderEnumerator { + return FileProviderEnumerator(enumeratedItemIdentifier: containerItemIdentifier) + } +} diff --git a/Extensions/FileProviderExtension/FileProviderItem.swift b/Extensions/FileProviderExtension/FileProviderItem.swift new file mode 100644 index 0000000000..bc3dce6ae1 --- /dev/null +++ b/Extensions/FileProviderExtension/FileProviderItem.swift @@ -0,0 +1,48 @@ +// +// FileProviderItem.swift +// FileProviderExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import FileProvider +import UniformTypeIdentifiers + +class FileProviderItem: NSObject, NSFileProviderItem { + + // TODO: implement an initializer to create an item from your extension's backing model + // TODO: implement the accessors to return the values from your extension's backing model + + private let identifier: NSFileProviderItemIdentifier + + init(identifier: NSFileProviderItemIdentifier) { + self.identifier = identifier + } + + var itemIdentifier: NSFileProviderItemIdentifier { + return identifier + } + + var parentItemIdentifier: NSFileProviderItemIdentifier { + return .rootContainer + } + + var capabilities: NSFileProviderItemCapabilities { + return [.allowsReading, .allowsWriting, .allowsRenaming, .allowsReparenting, .allowsTrashing, .allowsDeleting] + } + + @available(iOSApplicationExtension 16.0, *) + var itemVersion: NSFileProviderItemVersion { + NSFileProviderItemVersion(contentVersion: "a content version".data(using: .utf8)!, metadataVersion: "a metadata version".data(using: .utf8)!) + } + + var filename: String { + return identifier.rawValue + } + + @available(iOSApplicationExtension 14.0, *) + var contentType: UTType { + return identifier == NSFileProviderItemIdentifier.rootContainer ? .folder : .plainText + } +} diff --git a/Extensions/FileProviderExtension/Info.plist b/Extensions/FileProviderExtension/Info.plist new file mode 100644 index 0000000000..701037eca7 --- /dev/null +++ b/Extensions/FileProviderExtension/Info.plist @@ -0,0 +1,17 @@ + + + + + NSExtension + + NSExtensionFileProviderDocumentGroup + group.org.provenance-emu.provenance + NSExtensionFileProviderSupportsEnumeration + + NSExtensionPointIdentifier + com.apple.fileprovider-nonui + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).FileProviderExtension + + + diff --git a/Extensions/Intents.intentdefinition b/Extensions/Intents.intentdefinition new file mode 100644 index 0000000000..fff0f3e83f --- /dev/null +++ b/Extensions/Intents.intentdefinition @@ -0,0 +1,22 @@ + + + + + INEnums + + INIntentDefinitionModelVersion + 1.2 + INIntentDefinitionNamespace + l0NCNF + INIntentDefinitionSystemVersion + 22C5033e + INIntentDefinitionToolsBuildVersion + 14B47b + INIntentDefinitionToolsVersion + 14.1 + INIntents + + INTypes + + + diff --git a/Provenance Clip/Assets.xcassets/AccentColor.colorset/Contents.json b/Extensions/Provenance Clip/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from Provenance Clip/Assets.xcassets/AccentColor.colorset/Contents.json rename to Extensions/Provenance Clip/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Provenance Clip/Assets.xcassets/AppIcon.appiconset/Contents.json b/Extensions/Provenance Clip/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Provenance Clip/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Extensions/Provenance Clip/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Provenance Clip/Assets.xcassets/Contents.json b/Extensions/Provenance Clip/Assets.xcassets/Contents.json similarity index 100% rename from Provenance Clip/Assets.xcassets/Contents.json rename to Extensions/Provenance Clip/Assets.xcassets/Contents.json diff --git a/Provenance Clip/ContentView.swift b/Extensions/Provenance Clip/ContentView.swift similarity index 100% rename from Provenance Clip/ContentView.swift rename to Extensions/Provenance Clip/ContentView.swift diff --git a/Provenance Clip/Info.plist b/Extensions/Provenance Clip/Info.plist similarity index 100% rename from Provenance Clip/Info.plist rename to Extensions/Provenance Clip/Info.plist diff --git a/Provenance Clip/Preview Content/Preview Assets.xcassets/Contents.json b/Extensions/Provenance Clip/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from Provenance Clip/Preview Content/Preview Assets.xcassets/Contents.json rename to Extensions/Provenance Clip/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Provenance Clip/Provenance_Clip.entitlements b/Extensions/Provenance Clip/Provenance_Clip.entitlements similarity index 100% rename from Provenance Clip/Provenance_Clip.entitlements rename to Extensions/Provenance Clip/Provenance_Clip.entitlements diff --git a/Provenance Clip/Provenance_ClipApp.swift b/Extensions/Provenance Clip/Provenance_ClipApp.swift similarity index 100% rename from Provenance Clip/Provenance_ClipApp.swift rename to Extensions/Provenance Clip/Provenance_ClipApp.swift diff --git a/Extensions/QuickLookPreview/Base.lproj/MainInterface.storyboard b/Extensions/QuickLookPreview/Base.lproj/MainInterface.storyboard new file mode 100644 index 0000000000..0486cd4a3f --- /dev/null +++ b/Extensions/QuickLookPreview/Base.lproj/MainInterface.storyboard @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Extensions/QuickLookPreview/Info.plist b/Extensions/QuickLookPreview/Info.plist new file mode 100644 index 0000000000..b29f99812c --- /dev/null +++ b/Extensions/QuickLookPreview/Info.plist @@ -0,0 +1,22 @@ + + + + + NSExtension + + NSExtensionAttributes + + QLIsDataBasedPreview + + QLSupportedContentTypes + + QLSupportsSearchableItems + + + NSExtensionMainStoryboard + MainInterface + NSExtensionPointIdentifier + com.apple.quicklook.preview + + + diff --git a/Extensions/QuickLookPreview/PreviewProvider.swift b/Extensions/QuickLookPreview/PreviewProvider.swift new file mode 100644 index 0000000000..c8552b307b --- /dev/null +++ b/Extensions/QuickLookPreview/PreviewProvider.swift @@ -0,0 +1,58 @@ +// +// PreviewProvider.swift +// QuickLookPreview +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import QuickLook + +class PreviewProvider: QLPreviewProvider, QLPreviewingController { + + + /* + Use a QLPreviewProvider to provide data-based previews. + + To set up your extension as a data-based preview extension: + + - Modify the extension's Info.plist by setting + QLIsDataBasedPreview + + + - Add the supported content types to QLSupportedContentTypes array in the extension's Info.plist. + + - Remove + NSExtensionMainStoryboard + MainInterface + + and replace it by setting the NSExtensionPrincipalClass to this class, e.g. + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).PreviewProvider + + - Implement providePreview(for:) + */ + + func providePreview(for request: QLFilePreviewRequest) async throws -> QLPreviewReply { + + //You can create a QLPreviewReply in several ways, depending on the format of the data you want to return. + //To return Data of a supported content type: + + let contentType = UTType.plainText // replace with your data type + + let reply = QLPreviewReply.init(dataOfContentType: contentType, contentSize: CGSize.init(width: 800, height: 800)) { (replyToUpdate : QLPreviewReply) in + + let data = Data("Hello world".utf8) + + //setting the stringEncoding for text and html data is optional and defaults to String.Encoding.utf8 + replyToUpdate.stringEncoding = .utf8 + + //initialize your data here + + return data + } + + return reply + } + +} diff --git a/Extensions/QuickLookPreview/PreviewViewController.swift b/Extensions/QuickLookPreview/PreviewViewController.swift new file mode 100644 index 0000000000..3ff373c035 --- /dev/null +++ b/Extensions/QuickLookPreview/PreviewViewController.swift @@ -0,0 +1,43 @@ +// +// PreviewViewController.swift +// QuickLookPreview +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import UIKit +import QuickLook + +class PreviewViewController: UIViewController, QLPreviewingController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + /* + * Implement this method and set QLSupportsSearchableItems to YES in the Info.plist of the extension if you support CoreSpotlight. + * + func preparePreviewOfSearchableItem(identifier: String, queryString: String?, completionHandler handler: @escaping (Error?) -> Void) { + // Perform any setup necessary in order to prepare the view. + + // Call the completion handler so Quick Look knows that the preview is fully loaded. + // Quick Look will display a loading spinner while the completion handler is not called. + handler(nil) + } + */ + + + func preparePreviewOfFile(at url: URL, completionHandler handler: @escaping (Error?) -> Void) { + + // Add the supported content types to the QLSupportedContentTypes array in the Info.plist of the extension. + + // Perform any setup necessary in order to prepare the view. + + // Call the completion handler so Quick Look knows that the preview is fully loaded. + // Quick Look will display a loading spinner while the completion handler is not called. + handler(nil) + } + +} diff --git a/Extensions/QuickLookPreview/QuickLookPreview.entitlements b/Extensions/QuickLookPreview/QuickLookPreview.entitlements new file mode 100644 index 0000000000..fbd31bd2c7 --- /dev/null +++ b/Extensions/QuickLookPreview/QuickLookPreview.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + com.apple.security.network.client + + + diff --git a/Spotlight/IndexRequestHandler.swift b/Extensions/Spotlight/IndexRequestHandler.swift similarity index 100% rename from Spotlight/IndexRequestHandler.swift rename to Extensions/Spotlight/IndexRequestHandler.swift diff --git a/Spotlight/Info.plist b/Extensions/Spotlight/Info.plist similarity index 100% rename from Spotlight/Info.plist rename to Extensions/Spotlight/Info.plist diff --git a/Spotlight/Spotlight-Bridging-Header.h b/Extensions/Spotlight/Spotlight-Bridging-Header.h similarity index 100% rename from Spotlight/Spotlight-Bridging-Header.h rename to Extensions/Spotlight/Spotlight-Bridging-Header.h diff --git a/Spotlight/Spotlight.entitlements b/Extensions/Spotlight/Spotlight.entitlements similarity index 100% rename from Spotlight/Spotlight.entitlements rename to Extensions/Spotlight/Spotlight.entitlements diff --git a/Extensions/SpotlightImportExtension/ImportExtension.swift b/Extensions/SpotlightImportExtension/ImportExtension.swift new file mode 100644 index 0000000000..1654dbc4b9 --- /dev/null +++ b/Extensions/SpotlightImportExtension/ImportExtension.swift @@ -0,0 +1,20 @@ +// +// ImportExtension.swift +// SpotlightImportExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import CoreSpotlight + +// https://developer.apple.com/documentation/corespotlight/csimportextension + +class ImportExtension: CSImportExtension { + + override func update(_ attributes: CSSearchableItemAttributeSet, forFileAt: URL) throws { + // Add attributes that describe the file at contentURL. + // Throw an error with details on failure. + } + +} diff --git a/Extensions/SpotlightImportExtension/Info.plist b/Extensions/SpotlightImportExtension/Info.plist new file mode 100644 index 0000000000..0b5904f21d --- /dev/null +++ b/Extensions/SpotlightImportExtension/Info.plist @@ -0,0 +1,22 @@ + + + + + CSExtensionLabel + SpotlightImportExtensionImporter + NSExtension + + NSExtensionAttributes + + CSSupportedContentTypes + + com.example.plain-text + + + NSExtensionPointIdentifier + com.apple.spotlight.import + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).ImportExtension + + + diff --git a/Extensions/SpotlightImportExtension/SpotlightImportExtension.entitlements b/Extensions/SpotlightImportExtension/SpotlightImportExtension.entitlements new file mode 100644 index 0000000000..fbd31bd2c7 --- /dev/null +++ b/Extensions/SpotlightImportExtension/SpotlightImportExtension.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + com.apple.security.network.client + + + diff --git a/Extensions/StickerPack/Info.plist b/Extensions/StickerPack/Info.plist new file mode 100644 index 0000000000..1d690b73a8 --- /dev/null +++ b/Extensions/StickerPack/Info.plist @@ -0,0 +1,15 @@ + + + + + CFBundleDisplayName + StickerPack + NSExtension + + NSExtensionPointIdentifier + com.apple.message-payload-provider + NSExtensionPrincipalClass + StickerBrowserViewController + + + diff --git a/Provenance Watch WatchKit App/Assets.xcassets/Contents.json b/Extensions/StickerPack/Stickers.xcassets/Contents.json similarity index 100% rename from Provenance Watch WatchKit App/Assets.xcassets/Contents.json rename to Extensions/StickerPack/Stickers.xcassets/Contents.json diff --git a/Extensions/StickerPack/Stickers.xcassets/Sticker Pack.stickerpack/Contents.json b/Extensions/StickerPack/Stickers.xcassets/Sticker Pack.stickerpack/Contents.json new file mode 100644 index 0000000000..1b6728eab7 --- /dev/null +++ b/Extensions/StickerPack/Stickers.xcassets/Sticker Pack.stickerpack/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "grid-size" : "regular" + } +} \ No newline at end of file diff --git a/Extensions/StickerPack/Stickers.xcassets/iMessage App Icon.stickersiconset/Contents.json b/Extensions/StickerPack/Stickers.xcassets/iMessage App Icon.stickersiconset/Contents.json new file mode 100644 index 0000000000..bc3c4eea7f --- /dev/null +++ b/Extensions/StickerPack/Stickers.xcassets/iMessage App Icon.stickersiconset/Contents.json @@ -0,0 +1,78 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x45" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x45" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "67x50" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "74x55" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "idiom" : "universal", + "platform" : "ios", + "scale" : "2x", + "size" : "27x20" + }, + { + "idiom" : "universal", + "platform" : "ios", + "scale" : "3x", + "size" : "27x20" + }, + { + "idiom" : "universal", + "platform" : "ios", + "scale" : "2x", + "size" : "32x24" + }, + { + "idiom" : "universal", + "platform" : "ios", + "scale" : "3x", + "size" : "32x24" + }, + { + "idiom" : "ios-marketing", + "platform" : "ios", + "scale" : "1x", + "size" : "1024x768" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/ThumbnailExtension/Info.plist b/Extensions/ThumbnailExtension/Info.plist new file mode 100644 index 0000000000..007766c34d --- /dev/null +++ b/Extensions/ThumbnailExtension/Info.plist @@ -0,0 +1,20 @@ + + + + + NSExtension + + NSExtensionAttributes + + QLSupportedContentTypes + + QLThumbnailMinimumDimension + 0 + + NSExtensionPointIdentifier + com.apple.quicklook.thumbnail + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).ThumbnailProvider + + + diff --git a/Extensions/ThumbnailExtension/ThumbnailExtension.entitlements b/Extensions/ThumbnailExtension/ThumbnailExtension.entitlements new file mode 100644 index 0000000000..fbd31bd2c7 --- /dev/null +++ b/Extensions/ThumbnailExtension/ThumbnailExtension.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + com.apple.security.network.client + + + diff --git a/Extensions/ThumbnailExtension/ThumbnailProvider.swift b/Extensions/ThumbnailExtension/ThumbnailProvider.swift new file mode 100644 index 0000000000..6e9de3f52b --- /dev/null +++ b/Extensions/ThumbnailExtension/ThumbnailProvider.swift @@ -0,0 +1,54 @@ +// +// ThumbnailProvider.swift +// ThumbnailExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import UIKit +import QuickLookThumbnailing + +// https://developer.apple.com/documentation/quicklookthumbnailing/providing_thumbnails_of_your_custom_file_types + +class ThumbnailProvider: QLThumbnailProvider { + + override func provideThumbnail(for request: QLFileThumbnailRequest, _ handler: @escaping (QLThumbnailReply?, Error?) -> Void) { + + // There are three ways to provide a thumbnail through a QLThumbnailReply. Only one of them should be used. + + let fileToThumbnail = request.fileURL + let ext = fileToThumbnail.pathExtension + + switch ext { + case "svs": + handler(QLThumbnailReply(imageFileURL: Bundle.main.url(forResource: "fileThumbnail", withExtension: "jpg")!), nil) + default: + handler(QLThumbnailReply(imageFileURL: Bundle.main.url(forResource: "fileThumbnail", withExtension: "jpg")!), nil) + } + + // First way: Draw the thumbnail into the current context, set up with UIKit's coordinate system. + handler(QLThumbnailReply(contextSize: request.maximumSize, currentContextDrawing: { () -> Bool in + // Draw the thumbnail here. + + // Return true if the thumbnail was successfully drawn inside this block. + return true + }), nil) + + /* + + // Second way: Draw the thumbnail into a context passed to your block, set up with Core Graphics's coordinate system. + handler(QLThumbnailReply(contextSize: request.maximumSize, drawing: { (context) -> Bool in + // Draw the thumbnail here. + + // Return true if the thumbnail was successfully drawn inside this block. + return true + }), nil) + + + // Third way: Set an image file URL. + handler(QLThumbnailReply(imageFileURL: Bundle.main.url(forResource: "fileThumbnail", withExtension: "jpg")!), nil) + + */ + } +} diff --git a/TopShelf/Info.plist b/Extensions/TopShelf/Info.plist similarity index 100% rename from TopShelf/Info.plist rename to Extensions/TopShelf/Info.plist diff --git a/TopShelf/PVGame+TopShelf.swift b/Extensions/TopShelf/PVGame+TopShelf.swift similarity index 100% rename from TopShelf/PVGame+TopShelf.swift rename to Extensions/TopShelf/PVGame+TopShelf.swift diff --git a/TopShelf/PVRecentGame+TopShelf.swift b/Extensions/TopShelf/PVRecentGame+TopShelf.swift similarity index 100% rename from TopShelf/PVRecentGame+TopShelf.swift rename to Extensions/TopShelf/PVRecentGame+TopShelf.swift diff --git a/TopShelf/ServiceProvider.swift b/Extensions/TopShelf/ServiceProvider.swift similarity index 100% rename from TopShelf/ServiceProvider.swift rename to Extensions/TopShelf/ServiceProvider.swift diff --git a/TopShelf/TopShelf-Bridging-Header.h b/Extensions/TopShelf/TopShelf-Bridging-Header.h similarity index 100% rename from TopShelf/TopShelf-Bridging-Header.h rename to Extensions/TopShelf/TopShelf-Bridging-Header.h diff --git a/TopShelf/TopShelf.entitlements b/Extensions/TopShelf/TopShelf.entitlements similarity index 100% rename from TopShelf/TopShelf.entitlements rename to Extensions/TopShelf/TopShelf.entitlements diff --git a/Provenance Watch WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json b/Extensions/WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from Provenance Watch WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json rename to Extensions/WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Provenance Watch WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json b/Extensions/WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Provenance Watch WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Extensions/WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Contents.json b/Extensions/WatchKit App/Assets.xcassets/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Contents.json rename to Extensions/WatchKit App/Assets.xcassets/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json diff --git a/Provenance Watch WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json b/Extensions/WatchKit Extension/Assets.xcassets/Contents.json similarity index 100% rename from Provenance Watch WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json rename to Extensions/WatchKit Extension/Assets.xcassets/Contents.json diff --git a/Provenance Watch WatchKit Extension/ComplicationController.swift b/Extensions/WatchKit Extension/ComplicationController.swift similarity index 100% rename from Provenance Watch WatchKit Extension/ComplicationController.swift rename to Extensions/WatchKit Extension/ComplicationController.swift diff --git a/Provenance Watch WatchKit Extension/ContentView.swift b/Extensions/WatchKit Extension/ContentView.swift similarity index 100% rename from Provenance Watch WatchKit Extension/ContentView.swift rename to Extensions/WatchKit Extension/ContentView.swift diff --git a/Provenance Watch WatchKit Extension/Info.plist b/Extensions/WatchKit Extension/Info.plist similarity index 100% rename from Provenance Watch WatchKit Extension/Info.plist rename to Extensions/WatchKit Extension/Info.plist diff --git a/Extensions/WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json b/Extensions/WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/Extensions/WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Provenance Watch WatchKit Extension/ProvenanceApp.swift b/Extensions/WatchKit Extension/ProvenanceApp.swift similarity index 100% rename from Provenance Watch WatchKit Extension/ProvenanceApp.swift rename to Extensions/WatchKit Extension/ProvenanceApp.swift diff --git a/Extensions/WidgetExtension/Assets.xcassets/AccentColor.colorset/Contents.json b/Extensions/WidgetExtension/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000000..eb87897008 --- /dev/null +++ b/Extensions/WidgetExtension/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/WidgetExtension/Assets.xcassets/AppIcon.appiconset/Contents.json b/Extensions/WidgetExtension/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..13613e3ee1 --- /dev/null +++ b/Extensions/WidgetExtension/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/WidgetExtension/Assets.xcassets/Contents.json b/Extensions/WidgetExtension/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/Extensions/WidgetExtension/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/WidgetExtension/Assets.xcassets/WidgetBackground.colorset/Contents.json b/Extensions/WidgetExtension/Assets.xcassets/WidgetBackground.colorset/Contents.json new file mode 100644 index 0000000000..eb87897008 --- /dev/null +++ b/Extensions/WidgetExtension/Assets.xcassets/WidgetBackground.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/WidgetExtension/Info.plist b/Extensions/WidgetExtension/Info.plist new file mode 100644 index 0000000000..0f118fb75e --- /dev/null +++ b/Extensions/WidgetExtension/Info.plist @@ -0,0 +1,11 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + + diff --git a/Extensions/WidgetExtension/WidgetExtension.entitlements b/Extensions/WidgetExtension/WidgetExtension.entitlements new file mode 100644 index 0000000000..fbd31bd2c7 --- /dev/null +++ b/Extensions/WidgetExtension/WidgetExtension.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.application-groups + + group.org.provenance-emu.provenance + + com.apple.security.network.client + + + diff --git a/Extensions/WidgetExtension/WidgetExtension.intentdefinition b/Extensions/WidgetExtension/WidgetExtension.intentdefinition new file mode 100644 index 0000000000..bdb404554a --- /dev/null +++ b/Extensions/WidgetExtension/WidgetExtension.intentdefinition @@ -0,0 +1,59 @@ + + + + + INEnums + + INIntentDefinitionModelVersion + 1.2 + INIntentDefinitionNamespace + 88xZPY + INIntentDefinitionSystemVersion + 20A294 + INIntentDefinitionToolsBuildVersion + 12A6144 + INIntentDefinitionToolsVersion + 12.0 + INIntents + + + INIntentCategory + information + INIntentDescriptionID + tVvJ9c + INIntentEligibleForWidgets + + INIntentIneligibleForSuggestions + + INIntentName + Configuration + INIntentResponse + + INIntentResponseCodes + + + INIntentResponseCodeName + success + INIntentResponseCodeSuccess + + + + INIntentResponseCodeName + failure + + + + INIntentTitle + Configuration + INIntentTitleID + gpCwrM + INIntentType + Custom + INIntentVerb + View + + + INTypes + + + diff --git a/Extensions/WidgetExtension/WidgetExtension.swift b/Extensions/WidgetExtension/WidgetExtension.swift new file mode 100644 index 0000000000..16a55ad32f --- /dev/null +++ b/Extensions/WidgetExtension/WidgetExtension.swift @@ -0,0 +1,71 @@ +// +// WidgetExtension.swift +// WidgetExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +// https://developer.apple.com/documentation/widgetkit/creating-a-widget-extension + +import WidgetKit +import SwiftUI +import Intents + +struct Provider: IntentTimelineProvider { + func placeholder(in context: Context) -> SimpleEntry { + SimpleEntry(date: Date(), configuration: ConfigurationIntent()) + } + + func getSnapshot(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (SimpleEntry) -> ()) { + let entry = SimpleEntry(date: Date(), configuration: configuration) + completion(entry) + } + + func getTimeline(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (Timeline) -> ()) { + var entries: [SimpleEntry] = [] + + // Generate a timeline consisting of five entries an hour apart, starting from the current date. + let currentDate = Date() + for hourOffset in 0 ..< 5 { + let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)! + let entry = SimpleEntry(date: entryDate, configuration: configuration) + entries.append(entry) + } + + let timeline = Timeline(entries: entries, policy: .atEnd) + completion(timeline) + } +} + +struct SimpleEntry: TimelineEntry { + let date: Date + let configuration: ConfigurationIntent +} + +struct WidgetExtensionEntryView : View { + var entry: Provider.Entry + + var body: some View { + Text(entry.date, style: .time) + } +} + +struct WidgetExtension: Widget { + let kind: String = "WidgetExtension" + + var body: some WidgetConfiguration { + IntentConfiguration(kind: kind, intent: ConfigurationIntent.self, provider: Provider()) { entry in + WidgetExtensionEntryView(entry: entry) + } + .configurationDisplayName("My Widget") + .description("This is an example widget.") + } +} + +struct WidgetExtension_Previews: PreviewProvider { + static var previews: some View { + WidgetExtensionEntryView(entry: SimpleEntry(date: Date(), configuration: ConfigurationIntent())) + .previewContext(WidgetPreviewContext(family: .systemSmall)) + } +} diff --git a/Extensions/WidgetExtension/WidgetExtensionBundle.swift b/Extensions/WidgetExtension/WidgetExtensionBundle.swift new file mode 100644 index 0000000000..e969b3d694 --- /dev/null +++ b/Extensions/WidgetExtension/WidgetExtensionBundle.swift @@ -0,0 +1,22 @@ +// +// WidgetExtensionBundle.swift +// WidgetExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import WidgetKit +import SwiftUI + +@main +struct WidgetExtensionBundle: WidgetBundle { + var body: some Widget { + WidgetExtension() + if #available(iOSApplicationExtension 16.1, *) { + WidgetExtensionLiveActivity() + } else { + // Fallback on earlier versions + } + } +} diff --git a/Extensions/WidgetExtension/WidgetExtensionLiveActivity.swift b/Extensions/WidgetExtension/WidgetExtensionLiveActivity.swift new file mode 100644 index 0000000000..6c93027073 --- /dev/null +++ b/Extensions/WidgetExtension/WidgetExtensionLiveActivity.swift @@ -0,0 +1,59 @@ +// +// WidgetExtensionLiveActivity.swift +// WidgetExtension +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import ActivityKit +import WidgetKit +import SwiftUI + +struct WidgetExtensionAttributes: ActivityAttributes { + public struct ContentState: Codable, Hashable { + // Dynamic stateful properties about your activity go here! + var value: Int + } + + // Fixed non-changing properties about your activity go here! + var name: String +} + +@available(iOSApplicationExtension 16.1, *) +struct WidgetExtensionLiveActivity: Widget { + var body: some WidgetConfiguration { + ActivityConfiguration(for: WidgetExtensionAttributes.self) { context in + // Lock screen/banner UI goes here + VStack { + Text("Hello") + } + .activityBackgroundTint(Color.cyan) + .activitySystemActionForegroundColor(Color.black) + + } dynamicIsland: { context in + DynamicIsland { + // Expanded UI goes here. Compose the expanded UI through + // various regions, like leading/trailing/center/bottom + DynamicIslandExpandedRegion(.leading) { + Text("Leading") + } + DynamicIslandExpandedRegion(.trailing) { + Text("Trailing") + } + DynamicIslandExpandedRegion(.bottom) { + Text("Bottom") + // more content + } + } compactLeading: { + Text("L") + } compactTrailing: { + Text("T") + } minimal: { + Text("Min") + } + .widgetURL(URL(string: "http://www.apple.com")) + .keylineTint(Color.red) + } + } +} diff --git a/Extensions/macOS/QuickLookMacOS/Base.lproj/PreviewViewController.xib b/Extensions/macOS/QuickLookMacOS/Base.lproj/PreviewViewController.xib new file mode 100644 index 0000000000..d8dd0f3f8c --- /dev/null +++ b/Extensions/macOS/QuickLookMacOS/Base.lproj/PreviewViewController.xib @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Extensions/macOS/QuickLookMacOS/Info.plist b/Extensions/macOS/QuickLookMacOS/Info.plist new file mode 100644 index 0000000000..648990fe3e --- /dev/null +++ b/Extensions/macOS/QuickLookMacOS/Info.plist @@ -0,0 +1,22 @@ + + + + + NSExtension + + NSExtensionAttributes + + QLIsDataBasedPreview + + QLSupportedContentTypes + + QLSupportsSearchableItems + + + NSExtensionPointIdentifier + com.apple.quicklook.preview + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).PreviewViewController + + + diff --git a/Extensions/macOS/QuickLookMacOS/PreviewProvider.swift b/Extensions/macOS/QuickLookMacOS/PreviewProvider.swift new file mode 100644 index 0000000000..7b42db8539 --- /dev/null +++ b/Extensions/macOS/QuickLookMacOS/PreviewProvider.swift @@ -0,0 +1,55 @@ +// +// PreviewProvider.swift +// QuickLookMacOS +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Cocoa +import Quartz + +class PreviewProvider: QLPreviewProvider, QLPreviewingController { + + + /* + Use a QLPreviewProvider to provide data-based previews. + + To set up your extension as a data-based preview extension: + + - Modify the extension's Info.plist by setting + QLIsDataBasedPreview + + + - Add the supported content types to QLSupportedContentTypes array in the extension's Info.plist. + + - Change the NSExtensionPrincipalClass to this class. + e.g. + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).PreviewProvider + + - Implement providePreview(for:) + */ + + func providePreview(for request: QLFilePreviewRequest) async throws -> QLPreviewReply { + + //You can create a QLPreviewReply in several ways, depending on the format of the data you want to return. + //To return Data of a supported content type: + + let contentType = UTType.plainText // replace with your data type + + let reply = QLPreviewReply.init(dataOfContentType: contentType, contentSize: CGSize.init(width: 800, height: 800)) { (replyToUpdate : QLPreviewReply) in + + let data = Data("Hello world".utf8) + + //setting the stringEncoding for text and html data is optional and defaults to String.Encoding.utf8 + replyToUpdate.stringEncoding = .utf8 + + //initialize your data here + + return data + } + + return reply + } +} diff --git a/Extensions/macOS/QuickLookMacOS/PreviewViewController.swift b/Extensions/macOS/QuickLookMacOS/PreviewViewController.swift new file mode 100644 index 0000000000..bb9367a822 --- /dev/null +++ b/Extensions/macOS/QuickLookMacOS/PreviewViewController.swift @@ -0,0 +1,46 @@ +// +// PreviewViewController.swift +// QuickLookMacOS +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Cocoa +import Quartz + +class PreviewViewController: NSViewController, QLPreviewingController { + + override var nibName: NSNib.Name? { + return NSNib.Name("PreviewViewController") + } + + override func loadView() { + super.loadView() + // Do any additional setup after loading the view. + } + + /* + * Implement this method and set QLSupportsSearchableItems to YES in the Info.plist of the extension if you support CoreSpotlight. + * + func preparePreviewOfSearchableItem(identifier: String, queryString: String?, completionHandler handler: @escaping (Error?) -> Void) { + // Perform any setup necessary in order to prepare the view. + + // Call the completion handler so Quick Look knows that the preview is fully loaded. + // Quick Look will display a loading spinner while the completion handler is not called. + handler(nil) + } + */ + + func preparePreviewOfFile(at url: URL, completionHandler handler: @escaping (Error?) -> Void) { + + // Add the supported content types to the QLSupportedContentTypes array in the Info.plist of the extension. + + // Perform any setup necessary in order to prepare the view. + + // Call the completion handler so Quick Look knows that the preview is fully loaded. + // Quick Look will display a loading spinner while the completion handler is not called. + + handler(nil) + } +} diff --git a/Extensions/macOS/QuickLookMacOS/QuickLookMacOS.entitlements b/Extensions/macOS/QuickLookMacOS/QuickLookMacOS.entitlements new file mode 100644 index 0000000000..f2ef3ae026 --- /dev/null +++ b/Extensions/macOS/QuickLookMacOS/QuickLookMacOS.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/Extensions/macOS/ThumbnailExtensionMacOS/Info.plist b/Extensions/macOS/ThumbnailExtensionMacOS/Info.plist new file mode 100644 index 0000000000..007766c34d --- /dev/null +++ b/Extensions/macOS/ThumbnailExtensionMacOS/Info.plist @@ -0,0 +1,20 @@ + + + + + NSExtension + + NSExtensionAttributes + + QLSupportedContentTypes + + QLThumbnailMinimumDimension + 0 + + NSExtensionPointIdentifier + com.apple.quicklook.thumbnail + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).ThumbnailProvider + + + diff --git a/Extensions/macOS/ThumbnailExtensionMacOS/ThumbnailExtensionMacOS.entitlements b/Extensions/macOS/ThumbnailExtensionMacOS/ThumbnailExtensionMacOS.entitlements new file mode 100644 index 0000000000..f2ef3ae026 --- /dev/null +++ b/Extensions/macOS/ThumbnailExtensionMacOS/ThumbnailExtensionMacOS.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/Extensions/macOS/ThumbnailExtensionMacOS/ThumbnailProvider.swift b/Extensions/macOS/ThumbnailExtensionMacOS/ThumbnailProvider.swift new file mode 100644 index 0000000000..962498d20b --- /dev/null +++ b/Extensions/macOS/ThumbnailExtensionMacOS/ThumbnailProvider.swift @@ -0,0 +1,40 @@ +// +// ThumbnailProvider.swift +// ThumbnailExtensionMacOS +// +// Created by Joseph Mattiello on 11/12/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import QuickLookThumbnailing + +class ThumbnailProvider: QLThumbnailProvider { + + override func provideThumbnail(for request: QLFileThumbnailRequest, _ handler: @escaping (QLThumbnailReply?, Error?) -> Void) { + + // There are three ways to provide a thumbnail through a QLThumbnailReply. Only one of them should be used. + + // First way: Draw the thumbnail into the current context, set up with UIKit's coordinate system. + handler(QLThumbnailReply(contextSize: request.maximumSize, currentContextDrawing: { () -> Bool in + // Draw the thumbnail here. + + // Return true if the thumbnail was successfully drawn inside this block. + return true + }), nil) + + /* + + // Second way: Draw the thumbnail into a context passed to your block, set up with Core Graphics's coordinate system. + handler(QLThumbnailReply(contextSize: request.maximumSize, drawing: { (context) -> Bool in + // Draw the thumbnail here. + + // Return true if the thumbnail was successfully drawn inside this block. + return true + }), nil) + + // Third way: Set an image file URL. + handler(QLThumbnailReply(imageFileURL: Bundle.main.url(forResource: "fileThumbnail", withExtension: "jpg")!), nil) + + */ + } +} diff --git a/Gemfile b/Gemfile index 061b139347..452f9b3f4c 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,7 @@ gem 'dotenv' # Fastlane gem 'fastlane' +gem 'xcode-install' # gem 'net-ssh' # gem "net-scp" @@ -36,4 +37,4 @@ group :test do end plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') -eval_gemfile(plugins_path) if File.exist?(plugins_path) \ No newline at end of file +eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock index 4828f90d70..7115c44c6c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,35 +1,36 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.3) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + CFPropertyList (3.0.5) + rexml + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) apktools (0.7.4) rubyzip (~> 2.0) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.498.0) - aws-sdk-core (3.121.0) + aws-partitions (1.664.0) + aws-sdk-core (3.168.1) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.239.0) - aws-sigv4 (~> 1.1) - jmespath (~> 1.0) - aws-sdk-kms (1.48.0) - aws-sdk-core (~> 3, >= 3.120.0) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.59.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.102.0) - aws-sdk-core (~> 3, >= 3.120.0) + aws-sdk-s3 (1.117.1) + aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) - aws-sigv4 (1.4.0) + aws-sigv4 (1.5.2) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) badge (0.13.0) fastimage (>= 1.6) fastlane (>= 2.0) mini_magick (>= 4.9.4, < 5.0.0) - claide (1.0.3) + claide (1.1.0) colored (1.2) colored2 (3.1.2) commander (4.6.0) @@ -39,19 +40,20 @@ GEM rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dotenv (2.7.6) - emoji_regex (3.2.2) - excon (0.85.0) - faraday (1.7.1) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.94.0) + faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) + faraday-net_http_persistent (~> 1.0) faraday-patron (~> 1.0) faraday-rack (~> 1.0) - multipart-post (>= 1.2, < 3) + faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) @@ -60,14 +62,17 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) - faraday_middleware (1.1.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.5) - fastlane (2.193.1) + fastimage (2.2.6) + fastlane (2.211.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -106,19 +111,19 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - fastlane-plugin-aws_s3 (2.0.3) + fastlane-plugin-aws_s3 (2.1.0) apktools (~> 0.7) aws-sdk-s3 (~> 1) mime-types (~> 3.3) fastlane-plugin-badge (1.5.0) badge (~> 0.13.0) - fastlane-plugin-rome (0.3.8) - fastlane-plugin-versioning (0.5.0) + fastlane-plugin-rome (0.4.0) + fastlane-plugin-versioning (0.5.1) gh_inspector (1.1.3) - git_diff_parser (3.2.0) - google-apis-androidpublisher_v3 (0.11.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-core (0.4.1) + git_diff_parser (4.0.0) + google-apis-androidpublisher_v3 (0.31.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.9.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -127,56 +132,56 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.7.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-playcustomapp_v1 (0.5.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-storage_v1 (0.6.0) - google-apis-core (>= 0.4, < 2.a) + google-apis-iamcredentials_v1 (0.16.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-playcustomapp_v1 (0.12.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-storage_v1 (0.19.0) + google-apis-core (>= 0.9.0, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) - google-cloud-env (1.5.0) - faraday (>= 0.17.3, < 2.0) - google-cloud-errors (1.1.0) - google-cloud-storage (1.34.1) - addressable (~> 2.5) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.3.0) + google-cloud-storage (1.44.0) + addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.19.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (0.17.1) - faraday (>= 0.17.3, < 2.0) + googleauth (1.3.0) + faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) - signet (~> 0.15) + signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.4) + http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) - jmespath (1.4.0) - json (2.5.1) - jwt (2.2.3) + jmespath (1.6.1) + json (2.6.2) + jwt (2.5.0) memoist (0.16.2) - mime-types (3.3.1) + mime-types (3.4.1) mime-types-data (~> 3.2015) - mime-types-data (3.2021.0901) + mime-types-data (3.2022.0105) mini_magick (4.11.0) - mini_mime (1.1.1) + mini_mime (1.1.2) multi_json (1.15.0) multipart-post (2.0.0) nanaimo (0.3.0) naturally (2.2.1) optparse (0.1.1) - os (1.1.1) + os (1.1.4) plist (3.6.0) - public_suffix (4.0.6) + public_suffix (5.0.0) rake (13.0.6) - representable (3.1.1) + representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) @@ -186,9 +191,9 @@ GEM ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.16.0) + signet (0.17.0) addressable (~> 2.8) - faraday (>= 0.17.3, < 2.0) + faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) simctl (1.6.8) @@ -197,7 +202,7 @@ GEM terminal-notifier (2.0.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - trailblazer-option (0.1.1) + trailblazer-option (0.1.2) tty-cursor (0.7.1) tty-screen (0.8.1) tty-spinner (0.9.3) @@ -205,11 +210,14 @@ GEM uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.7) - unicode-display_width (1.7.0) + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) webrick (1.7.0) word_wrap (1.0.0) - xcodeproj (1.21.0) + xcode-install (2.8.1) + claide (>= 0.9.1) + fastlane (>= 2.1.0, < 3.0.0) + xcodeproj (1.22.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -232,6 +240,7 @@ DEPENDENCIES fastlane-plugin-rome fastlane-plugin-versioning git_diff_parser + xcode-install xcpretty BUNDLED WITH diff --git a/PVLibrary/PVLibrary.xcodeproj/project.pbxproj b/PVLibrary/PVLibrary.xcodeproj/project.pbxproj index 77364c1f3d..9dfab8b968 100644 --- a/PVLibrary/PVLibrary.xcodeproj/project.pbxproj +++ b/PVLibrary/PVLibrary.xcodeproj/project.pbxproj @@ -8,221 +8,9 @@ /* Begin PBXBuildFile section */ 112E7E2F247EF3840050431C /* PVGameLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 112E7E2E247EF3840050431C /* PVGameLibrary.swift */; }; - 112E7E30247EF3840050431C /* PVGameLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 112E7E2E247EF3840050431C /* PVGameLibrary.swift */; }; 1180B31E2492A9BB00636C8A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1180B31D2492A9B400636C8A /* CoreServices.framework */; }; - 1180B3202492A9CB00636C8A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1180B31F2492A9C200636C8A /* CoreServices.framework */; }; 11AFB2B324867482000A3922 /* PVGameLibrary+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */; }; - 11AFB2B424867482000A3922 /* PVGameLibrary+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */; }; - B3014FA427B487F0006AC79B /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B3014FA327B487F0006AC79B /* Differentiator */; }; - B3014FA627B487FD006AC79B /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B3014FA527B487FD006AC79B /* Differentiator */; }; B305EF9F276B50E2003AE510 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF9E276B50DF003AE510 /* SwiftUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - B305EFA1276B5112003AE510 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EFA0276B5112003AE510 /* SwiftUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - B305EFAD276B512D003AE510 /* NSData+Hashing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D362106B4D700DDEBD6 /* NSData+Hashing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFAE276B512D003AE510 /* UIImage+Scaling.h in Headers */ = {isa = PBXBuildFile; fileRef = B3274E672106BAF500857F52 /* UIImage+Scaling.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFAF276B512D003AE510 /* PVLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D122106B11D00DDEBD6 /* PVLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB0276B512D003AE510 /* NSFileManager+Hashing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3274E7D2106BD7500857F52 /* NSFileManager+Hashing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB1276B512D003AE510 /* NSString+Hashing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3274E632106BAA200857F52 /* NSString+Hashing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB2276B512D003AE510 /* LzmaSDKObjCMutableItem.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474121071CA6002211EE /* LzmaSDKObjCMutableItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB3276B512D003AE510 /* LzmaSDKObjCTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474421071CA6002211EE /* LzmaSDKObjCTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB4276B512D003AE510 /* LzmaSDKObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF475221071CA6002211EE /* LzmaSDKObjC.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB5276B512D003AE510 /* LzmaSDKObjCWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF473221071CA6002211EE /* LzmaSDKObjCWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB6276B512D003AE510 /* LzmaSDKObjCExtern.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF473D21071CA6002211EE /* LzmaSDKObjCExtern.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB7276B512D003AE510 /* LzmaSDKObjCReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474721071CA6002211EE /* LzmaSDKObjCReader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB8276B512D003AE510 /* LzmaSDKObjCItem.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF473E21071CA6002211EE /* LzmaSDKObjCItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFB9276B512D003AE510 /* LzmaSDKObjCBufferProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474321071CA6002211EE /* LzmaSDKObjCBufferProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFBA276B512D003AE510 /* OESQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D1E2106B4D600DDEBD6 /* OESQLiteDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EFBC276B512D003AE510 /* MethodProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46BA21071CA6002211EE /* MethodProps.cpp */; }; - B305EFBD276B512D003AE510 /* OESQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = B3579D202106B4D600DDEBD6 /* OESQLiteDatabase.m */; }; - B305EFBE276B512D003AE510 /* CreateCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46D121071CA6002211EE /* CreateCoder.cpp */; }; - B305EFBF276B512D003AE510 /* PVCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D312106B4D700DDEBD6 /* PVCore.swift */; }; - B305EFC0276B512D003AE510 /* ByteSwap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466821071CA6002211EE /* ByteSwap.cpp */; }; - B305EFC1276B512D003AE510 /* Sha256Reg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF461B21071CA5002211EE /* Sha256Reg.cpp */; }; - B305EFC2276B512D003AE510 /* InOutTempBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46C221071CA6002211EE /* InOutTempBuffer.cpp */; }; - B305EFC3276B512D003AE510 /* BcjCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466421071CA6002211EE /* BcjCoder.cpp */; }; - B305EFC4276B512D003AE510 /* PpmdRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466B21071CA6002211EE /* PpmdRegister.cpp */; }; - B305EFC5276B512D003AE510 /* PVCheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF17109C2585F97000258602 /* PVCheats.swift */; }; - B305EFC6276B512D003AE510 /* SavePackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227921D41E1C0077E86F /* SavePackage.swift */; }; - B305EFC7276B512D003AE510 /* LzmaSDKObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473421071CA6002211EE /* LzmaSDKObjC.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFC8276B512D003AE510 /* PVFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D302106B4D700DDEBD6 /* PVFile.swift */; }; - B305EFC9276B512D003AE510 /* UIImage+Scaling.m in Sources */ = {isa = PBXBuildFile; fileRef = B3274E662106BAF500857F52 /* UIImage+Scaling.m */; }; - B305EFCA276B512D003AE510 /* OutBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46AF21071CA6002211EE /* OutBuffer.cpp */; }; - B305EFCB276B512D003AE510 /* LzmaSDKObjCFileDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474021071CA6002211EE /* LzmaSDKObjCFileDecoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFCC276B512D003AE510 /* DirectoryWatcher2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D332106B4D700DDEBD6 /* DirectoryWatcher2.swift */; }; - B305EFCD276B512D003AE510 /* LibrarySerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7CE219A8EAF0041F971 /* LibrarySerializer.swift */; }; - B305EFCE276B512D003AE510 /* Lzma2Register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465E21071CA5002211EE /* Lzma2Register.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFCF276B512D003AE510 /* NSData+Hashing.m in Sources */ = {isa = PBXBuildFile; fileRef = B3579D372106B4D700DDEBD6 /* NSData+Hashing.m */; }; - B305EFD0276B512D003AE510 /* CopyCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466021071CA5002211EE /* CopyCoder.cpp */; }; - B305EFD1276B512D003AE510 /* RandGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464A21071CA5002211EE /* RandGen.cpp */; }; - B305EFD2276B512D003AE510 /* Bcj2Coder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466A21071CA6002211EE /* Bcj2Coder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFD3276B512D003AE510 /* MyAes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464B21071CA5002211EE /* MyAes.cpp */; }; - B305EFD4276B512D003AE510 /* RomDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D1F2106B4D600DDEBD6 /* RomDatabase.swift */; }; - B305EFD5276B512D003AE510 /* RealmRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E79F219A77F20041F971 /* RealmRepresentable.swift */; }; - B305EFD6276B512D003AE510 /* XzCrc64Opt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472621071CA6002211EE /* XzCrc64Opt.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFD7276B512D003AE510 /* Bcj2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46EA21071CA6002211EE /* Bcj2.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFD8276B512D003AE510 /* LzmaHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468721071CA6002211EE /* LzmaHandler.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFD9276B512D003AE510 /* LzmaDec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470321071CA6002211EE /* LzmaDec.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFDA276B512D003AE510 /* FileBackedConformance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7AB219A78700041F971 /* FileBackedConformance.swift */; }; - B305EFDB276B512D003AE510 /* FilterCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46B221071CA6002211EE /* FilterCoder.cpp */; }; - B305EFDC276B512D003AE510 /* Bcj2Register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465721071CA5002211EE /* Bcj2Register.cpp */; }; - B305EFDD276B512D003AE510 /* 7zEncode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469B21071CA6002211EE /* 7zEncode.cpp */; }; - B305EFDE276B512D003AE510 /* UTI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D252106B4D600DDEBD6 /* UTI.swift */; }; - B305EFDF276B512D003AE510 /* Cheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1710A02585FA3F00258602 /* Cheats.swift */; }; - B305EFE0276B512D003AE510 /* Bra86.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46F621071CA6002211EE /* Bra86.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFE1276B512D003AE510 /* Bra.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46F421071CA6002211EE /* Bra.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFE2276B512D003AE510 /* LzmaSDKObjCWriter.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474921071CA6002211EE /* LzmaSDKObjCWriter.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFE3276B512D003AE510 /* PVBIOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D272106B4D700DDEBD6 /* PVBIOS.swift */; }; - B305EFE4276B512D003AE510 /* GameImporter2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEAF21D493AC000C55F7 /* GameImporter2.swift */; }; - B305EFE5276B512D003AE510 /* 7zAes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464F21071CA5002211EE /* 7zAes.cpp */; }; - B305EFE6276B512D003AE510 /* LzmaSDKObjCMutableItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474A21071CA6002211EE /* LzmaSDKObjCMutableItem.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFE7276B512D003AE510 /* LzFind.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46EC21071CA6002211EE /* LzFind.c */; }; - B305EFE8276B512D003AE510 /* LzmaDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466721071CA6002211EE /* LzmaDecoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFE9276B512D003AE510 /* DomainConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7A0219A77F20041F971 /* DomainConvertibleType.swift */; }; - B305EFEA276B512D003AE510 /* ImportCandidateFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E852106BFD000857F52 /* ImportCandidateFile.swift */; }; - B305EFEB276B512D003AE510 /* LzmaSDKObjCOpenCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474C21071CA6002211EE /* LzmaSDKObjCOpenCallback.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFEC276B512D003AE510 /* 7zAesRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464821071CA5002211EE /* 7zAesRegister.cpp */; }; - B305EFED276B512D003AE510 /* PVMediaCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D222106B4D600DDEBD6 /* PVMediaCache.swift */; }; - B305EFEE276B512D003AE510 /* PlistDataModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E787219A76C80041F971 /* PlistDataModels.swift */; }; - B305EFEF276B512D003AE510 /* StringConvert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463921071CA5002211EE /* StringConvert.cpp */; }; - B305EFF0276B512D003AE510 /* BcjRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465B21071CA5002211EE /* BcjRegister.cpp */; }; - B305EFF1276B512D003AE510 /* LockedStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46BB21071CA6002211EE /* LockedStream.cpp */; }; - B305EFF2276B512D003AE510 /* NSString+Hashing.m in Sources */ = {isa = PBXBuildFile; fileRef = B3274E622106BAA200857F52 /* NSString+Hashing.m */; }; - B305EFF3276B512D003AE510 /* StreamObjects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46CC21071CA6002211EE /* StreamObjects.cpp */; }; - B305EFF4276B512D003AE510 /* BraIA64.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470F21071CA6002211EE /* BraIA64.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFF5276B512D003AE510 /* NSFileManager+Hashing.m in Sources */ = {isa = PBXBuildFile; fileRef = B3274E7C2106BD7500857F52 /* NSFileManager+Hashing.m */; }; - B305EFF6276B512D003AE510 /* 7zDecode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46A221071CA6002211EE /* 7zDecode.cpp */; }; - B305EFF7276B512D003AE510 /* XzIn.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46FA21071CA6002211EE /* XzIn.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305EFF8276B512D003AE510 /* 7zUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469C21071CA6002211EE /* 7zUpdate.cpp */; }; - B305EFF9276B512D003AE510 /* PVGame+Spotlight.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2A2106B4D700DDEBD6 /* PVGame+Spotlight.swift */; }; - B305EFFA276B512D003AE510 /* 7zOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469A21071CA6002211EE /* 7zOut.cpp */; }; - B305EFFB276B512D003AE510 /* PVGame+BoxArt.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2E2106B4D700DDEBD6 /* PVGame+BoxArt.swift */; }; - B305EFFC276B512D003AE510 /* 7zHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468F21071CA6002211EE /* 7zHeader.cpp */; }; - B305EFFD276B512D003AE510 /* System.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7C8219A7E470041F971 /* System.swift */; }; - B305EFFE276B512D003AE510 /* Xz.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472721071CA6002211EE /* Xz.c */; }; - B305EFFF276B512D003AE510 /* MyString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462721071CA5002211EE /* MyString.cpp */; }; - B305F000276B512D003AE510 /* PVGameLibrary+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */; }; - B305F001276B512D003AE510 /* ItemNameUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468021071CA6002211EE /* ItemNameUtils.cpp */; }; - B305F002276B512D003AE510 /* LocalFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78D219A76C80041F971 /* LocalFile.swift */; }; - B305F003276B512D003AE510 /* Lzma2DecMt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46FC21071CA6002211EE /* Lzma2DecMt.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F004276B512D003AE510 /* LzmaSDKObjCFileEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475021071CA6002211EE /* LzmaSDKObjCFileEncoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F005276B512D003AE510 /* LzmaSDKObjCExtractCallback.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475421071CA6002211EE /* LzmaSDKObjCExtractCallback.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F006276B512D003AE510 /* DllExports2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467421071CA6002211EE /* DllExports2.cpp */; }; - B305F007276B512D003AE510 /* 7zCrcOpt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472821071CA6002211EE /* 7zCrcOpt.c */; }; - B305F008276B512D003AE510 /* 7zHandlerOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469621071CA6002211EE /* 7zHandlerOut.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F009276B512D003AE510 /* Bcj2Enc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472421071CA6002211EE /* Bcj2Enc.c */; }; - B305F00A276B512D003AE510 /* LzmaSDKObjCReader.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473F21071CA6002211EE /* LzmaSDKObjCReader.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F00B276B512D003AE510 /* BIOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E786219A76C80041F971 /* BIOS.swift */; }; - B305F00C276B512D003AE510 /* Realm+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B3219A796A0041F971 /* Realm+Ext.swift */; }; - B305F00D276B512D003AE510 /* PVRecentGame.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2F2106B4D700DDEBD6 /* PVRecentGame.swift */; }; - B305F00E276B512D003AE510 /* Ppmd7Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E421071CA6002211EE /* Ppmd7Dec.c */; }; - B305F00F276B512D003AE510 /* PVSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D292106B4D700DDEBD6 /* PVSystem.swift */; }; - B305F010276B512D003AE510 /* PpmdEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466F21071CA6002211EE /* PpmdEncoder.cpp */; }; - B305F011276B512D003AE510 /* LzmaSDKObjCUpdateCallback.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473521071CA6002211EE /* LzmaSDKObjCUpdateCallback.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F012276B512D003AE510 /* PVLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D282106B4D700DDEBD6 /* PVLibrary.swift */; }; - B305F013276B512D003AE510 /* LzmaEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E321071CA6002211EE /* LzmaEnc.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F014276B512D003AE510 /* XzDec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E821071CA6002211EE /* XzDec.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F015276B512D003AE510 /* Repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7A7219A78420041F971 /* Repository.swift */; }; - B305F016276B512D003AE510 /* GameImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D342106B4D700DDEBD6 /* GameImporter.swift */; }; - B305F017276B512D003AE510 /* PVEmulatorConfiguration+Frameworks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C04B972107991100E7AF79 /* PVEmulatorConfiguration+Frameworks.swift */; }; - B305F018276B512D003AE510 /* StringToInt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF461C21071CA5002211EE /* StringToInt.cpp */; }; - B305F019276B512D003AE510 /* Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E788219A76C80041F971 /* Core.swift */; }; - B305F01A276B512D003AE510 /* SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E789219A76C80041F971 /* SaveState.swift */; }; - B305F01B276B512D003AE510 /* Cache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7BA219A7ADB0041F971 /* Cache.swift */; }; - B305F01C276B512D003AE510 /* StreamUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46B721071CA6002211EE /* StreamUtils.cpp */; }; - B305F01D276B512D003AE510 /* XzCrc64Reg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463221071CA5002211EE /* XzCrc64Reg.cpp */; }; - B305F01E276B512D003AE510 /* VirtThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46AB21071CA6002211EE /* VirtThread.cpp */; }; - B305F01F276B512D003AE510 /* PVGameLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 112E7E2E247EF3840050431C /* PVGameLibrary.swift */; }; - B305F020276B512D003AE510 /* CWrappers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46C321071CA6002211EE /* CWrappers.cpp */; }; - B305F021276B512D003AE510 /* HandlerOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467B21071CA6002211EE /* HandlerOut.cpp */; }; - B305F022276B512D003AE510 /* CrcReg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463821071CA5002211EE /* CrcReg.cpp */; }; - B305F023276B512D003AE510 /* Ppmd7.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46F221071CA6002211EE /* Ppmd7.c */; }; - B305F024276B512D003AE510 /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78B219A76C80041F971 /* Protocols.swift */; }; - B305F025276B512D003AE510 /* LzmaSDKObjCInFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474D21071CA6002211EE /* LzmaSDKObjCInFile.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F026276B512D003AE510 /* Lzma2Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465621071CA5002211EE /* Lzma2Decoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F027276B512D003AE510 /* LzmaSDKObjCOutFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474E21071CA6002211EE /* LzmaSDKObjCOutFile.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F028276B512D003AE510 /* PVGame.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2B2106B4D700DDEBD6 /* PVGame.swift */; }; - B305F029276B512D003AE510 /* 7zIn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469721071CA6002211EE /* 7zIn.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F02A276B512D003AE510 /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E785219A76C80041F971 /* Game.swift */; }; - B305F02B276B512D003AE510 /* 7zFolderInStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468B21071CA6002211EE /* 7zFolderInStream.cpp */; }; - B305F02C276B512D003AE510 /* DirectoryWatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEECA21D4CF61000C55F7 /* DirectoryWatcher.swift */; }; - B305F02D276B512D003AE510 /* CodecExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465221071CA5002211EE /* CodecExports.cpp */; }; - B305F02E276B512D003AE510 /* LibrarySerializerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378228421D41E9B0077E86F /* LibrarySerializerError.swift */; }; - B305F02F276B512D003AE510 /* LzmaSDKObjCItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475521071CA6002211EE /* LzmaSDKObjCItem.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F030276B512D003AE510 /* AesOpt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471E21071CA6002211EE /* AesOpt.c */; }; - B305F031276B512D003AE510 /* 7zStream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471121071CA6002211EE /* 7zStream.c */; }; - B305F032276B512D003AE510 /* LzmaEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466D21071CA6002211EE /* LzmaEncoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F033276B512D003AE510 /* LzmaSDKObjCBaseCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474F21071CA6002211EE /* LzmaSDKObjCBaseCoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F034276B512D003AE510 /* 7zHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468C21071CA6002211EE /* 7zHandler.cpp */; }; - B305F035276B512D003AE510 /* Aes.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E521071CA6002211EE /* Aes.c */; }; - B305F036276B512D003AE510 /* Lzma2Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E121071CA6002211EE /* Lzma2Dec.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F037276B512D003AE510 /* 7zRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46A421071CA6002211EE /* 7zRegister.cpp */; }; - B305F038276B512D003AE510 /* Wildcard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462B21071CA5002211EE /* Wildcard.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F039276B512D003AE510 /* XzCrc64.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470D21071CA6002211EE /* XzCrc64.c */; }; - B305F03A276B512D003AE510 /* PropVariantConv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46DA21071CA6002211EE /* PropVariantConv.cpp */; }; - B305F03B276B512D003AE510 /* LimitedStreams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46BF21071CA6002211EE /* LimitedStreams.cpp */; }; - B305F03C276B512D003AE510 /* ArchiveExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467321071CA6002211EE /* ArchiveExports.cpp */; }; - B305F03D276B512D003AE510 /* C_FileIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462821071CA5002211EE /* C_FileIO.cpp */; }; - B305F03E276B512D003AE510 /* IntToString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462A21071CA5002211EE /* IntToString.cpp */; }; - B305F03F276B512D003AE510 /* MyWindows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463C21071CA5002211EE /* MyWindows.cpp */; }; - B305F040276B512D003AE510 /* LzmaSDKObjCExtern.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475121071CA6002211EE /* LzmaSDKObjCExtern.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F041276B512D003AE510 /* PVImageFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E832106BF2F00857F52 /* PVImageFile.swift */; }; - B305F042276B512D003AE510 /* Ppmd7Enc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470521071CA6002211EE /* Ppmd7Enc.c */; }; - B305F043276B512D003AE510 /* XzEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46FB21071CA6002211EE /* XzEnc.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F044276B512D003AE510 /* Observable+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B2219A796A0041F971 /* Observable+Ext.swift */; }; - B305F045276B512D003AE510 /* 7zCrc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471C21071CA6002211EE /* 7zCrc.c */; }; - B305F046276B512D003AE510 /* RunLoopThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B0219A796A0041F971 /* RunLoopThreadScheduler.swift */; }; - B305F047276B512D003AE510 /* ProgressUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46AA21071CA6002211EE /* ProgressUtils.cpp */; }; - B305F048276B512D003AE510 /* PropId.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46CF21071CA6002211EE /* PropId.cpp */; }; - B305F049276B512D003AE510 /* PropVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46DF21071CA6002211EE /* PropVariant.cpp */; }; - B305F04A276B512D003AE510 /* BehaviorRelay+RangeReplaceableCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30E7AEA26E480310051DC6A /* BehaviorRelay+RangeReplaceableCollection.swift */; }; - B305F04B276B512D003AE510 /* PVEmulatorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E5D2106BA1200857F52 /* PVEmulatorConfiguration.swift */; }; - B305F04C276B512D003AE510 /* OutStreamWithCRC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467D21071CA6002211EE /* OutStreamWithCRC.cpp */; }; - B305F04D276B512D003AE510 /* LzFindMt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E621071CA6002211EE /* LzFindMt.c */; }; - B305F04E276B512D003AE510 /* LzmaSDKObjCError.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473821071CA6002211EE /* LzmaSDKObjCError.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F04F276B512D003AE510 /* GamePackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227C21D41E310077E86F /* GamePackage.swift */; }; - B305F050276B512D003AE510 /* PackageResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227F21D41E460077E86F /* PackageResult.swift */; }; - B305F051276B512D003AE510 /* Time Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D242106B4D600DDEBD6 /* Time Utilities.swift */; }; - B305F052276B512D003AE510 /* PVAppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E5E2106BA1200857F52 /* PVAppConstants.swift */; }; - B305F053276B512D003AE510 /* Lzma2Enc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470421071CA6002211EE /* Lzma2Enc.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F054276B512D003AE510 /* PpmdDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466621071CA6002211EE /* PpmdDecoder.cpp */; }; - B305F055276B512D003AE510 /* LzmaSDKObjCBufferProcessor.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473321071CA6002211EE /* LzmaSDKObjCBufferProcessor.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F056276B512D003AE510 /* BranchMisc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466521071CA6002211EE /* BranchMisc.cpp */; }; - B305F057276B512D003AE510 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEB221D497CD000C55F7 /* Package.swift */; }; - B305F058276B512D003AE510 /* MtCoder.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E921071CA6002211EE /* MtCoder.c */; }; - B305F059276B512D003AE510 /* Sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471621071CA6002211EE /* Sha256.c */; }; - B305F05A276B512D003AE510 /* Lzma2Encoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466221071CA5002211EE /* Lzma2Encoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F05B276B512D003AE510 /* SystemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7CB219A7E620041F971 /* SystemProtocol.swift */; }; - B305F05C276B512D003AE510 /* iCloudSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383F3BB219BB29600DB6926 /* iCloudSync.swift */; }; - B305F05D276B512D003AE510 /* LzmaRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466321071CA6002211EE /* LzmaRegister.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F05E276B512D003AE510 /* DummyOutStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467921071CA6002211EE /* DummyOutStream.cpp */; }; - B305F05F276B512D003AE510 /* 7zExtract.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468A21071CA6002211EE /* 7zExtract.cpp */; }; - B305F060276B512D003AE510 /* 7zProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469321071CA6002211EE /* 7zProperties.cpp */; }; - B305F061276B512D003AE510 /* Alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470121071CA6002211EE /* Alloc.c */; }; - B305F062276B512D003AE510 /* CpuArch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472221071CA6002211EE /* CpuArch.c */; }; - B305F063276B512D003AE510 /* FileInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78C219A76C80041F971 /* FileInfoProvider.swift */; }; - B305F064276B512D003AE510 /* Delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471821071CA6002211EE /* Delta.c */; }; - B305F065276B512D003AE510 /* LzmaSDKObjCCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473721071CA6002211EE /* LzmaSDKObjCCommon.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B305F066276B512D003AE510 /* Threads.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472A21071CA6002211EE /* Threads.c */; }; - B305F067276B512D003AE510 /* FileStreams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46C621071CA6002211EE /* FileStreams.cpp */; }; - B305F068276B512D003AE510 /* 7zSpecStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46A321071CA6002211EE /* 7zSpecStream.cpp */; }; - B305F069276B512D003AE510 /* MyAesReg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464C21071CA5002211EE /* MyAesReg.cpp */; }; - B305F06A276B512D003AE510 /* CopyRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466121071CA5002211EE /* CopyRegister.cpp */; }; - B305F06B276B512D003AE510 /* CoderMixer2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468221071CA6002211EE /* CoderMixer2.cpp */; }; - B305F06C276B512D003AE510 /* BranchRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465F21071CA5002211EE /* BranchRegister.cpp */; }; - B305F06D276B512D003AE510 /* PVObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E782106BC8800857F52 /* PVObject.swift */; }; - B305F06E276B512D003AE510 /* PVSaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2D2106B4D700DDEBD6 /* PVSaveState.swift */; }; - B305F070276B512D003AE510 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EFA0276B5112003AE510 /* SwiftUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - B305F071276B512D003AE510 /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = B305EFA8276B512D003AE510 /* SQLite */; }; - B305F072276B512D003AE510 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = B305EFA5276B512D003AE510 /* RxCocoa */; }; - B305F074276B512D003AE510 /* RxRealm in Frameworks */ = {isa = PBXBuildFile; productRef = B305EFA6276B512D003AE510 /* RxRealm */; }; - B305F075276B512D003AE510 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FBE219160C4000FA7F9 /* Foundation.framework */; }; - B305F076276B512D003AE510 /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B305EFA3276B512D003AE510 /* RxSwift */; }; - B305F077276B512D003AE510 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1180B31F2492A9C200636C8A /* CoreServices.framework */; }; - B305F078276B512D003AE510 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FBC219160BF000FA7F9 /* CoreGraphics.framework */; }; - B305F079276B512D003AE510 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = B305EFAA276B512D003AE510 /* ZipArchive */; }; - B305F07B276B512D003AE510 /* openvgdb.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47DC21072AD3002211EE /* openvgdb.sqlite */; }; - B305F07C276B512D003AE510 /* systems.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47DD21072AD3002211EE /* systems.plist */; }; - B305F084276B5229003AE510 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305F083276B5229003AE510 /* PVSupport.framework */; }; - B305F085276B5229003AE510 /* PVSupport.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B305F083276B5229003AE510 /* PVSupport.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B3067F4B2106B5A30091437F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3067F4A2106B5A20091437F /* Foundation.framework */; }; B3067F5D2106B8590091437F /* OESQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D1E2106B4D600DDEBD6 /* OESQLiteDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3067F5E2106B8590091437F /* OESQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = B3579D202106B4D600DDEBD6 /* OESQLiteDatabase.m */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; @@ -232,13 +20,8 @@ B3067F662106B8690091437F /* UTI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D252106B4D600DDEBD6 /* UTI.swift */; }; B3067F742106B9130091437F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3067F732106B9130091437F /* CoreGraphics.framework */; }; B30E7AEB26E480310051DC6A /* BehaviorRelay+RangeReplaceableCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30E7AEA26E480310051DC6A /* BehaviorRelay+RangeReplaceableCollection.swift */; }; - B30E7AEC26E480310051DC6A /* BehaviorRelay+RangeReplaceableCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30E7AEA26E480310051DC6A /* BehaviorRelay+RangeReplaceableCollection.swift */; }; B31117AC218EB24300C495A2 /* LzmaSDKObjCReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474721071CA6002211EE /* LzmaSDKObjCReader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B31117AD218EB24400C495A2 /* LzmaSDKObjCReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474721071CA6002211EE /* LzmaSDKObjCReader.h */; settings = {ATTRIBUTES = (Public, ); }; }; B31117AE218EB25F00C495A2 /* LzmaSDKObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF475221071CA6002211EE /* LzmaSDKObjC.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B31117AF218EB26000C495A2 /* LzmaSDKObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF475221071CA6002211EE /* LzmaSDKObjC.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3128066274C658E00550720 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = B3128065274C658E00550720 /* ZipArchive */; }; - B324C2ED219192FF009F4EDC /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C2EC219192FF009F4EDC /* PVSupport.framework */; }; B3274E602106BA1300857F52 /* PVAppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E5E2106BA1200857F52 /* PVAppConstants.swift */; }; B3274E612106BA5B00857F52 /* PVMediaCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D222106B4D600DDEBD6 /* PVMediaCache.swift */; }; B3274E642106BAA200857F52 /* NSString+Hashing.m in Sources */ = {isa = PBXBuildFile; fileRef = B3274E622106BAA200857F52 /* NSString+Hashing.m */; }; @@ -264,60 +47,35 @@ B3274E842106BF2F00857F52 /* PVImageFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E832106BF2F00857F52 /* PVImageFile.swift */; }; B3274E862106BFD000857F52 /* ImportCandidateFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E852106BFD000857F52 /* ImportCandidateFile.swift */; }; B336B90626B39ABA00960A81 /* RxRealm in Frameworks */ = {isa = PBXBuildFile; productRef = B336B90526B39ABA00960A81 /* RxRealm */; }; - B336B90C26B39ACB00960A81 /* RxRealm in Frameworks */ = {isa = PBXBuildFile; productRef = B336B90B26B39ACB00960A81 /* RxRealm */; }; B336B90F26B39BCF00960A81 /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = B336B90E26B39BCF00960A81 /* SQLite */; }; - B336B91126B39BDA00960A81 /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = B336B91026B39BDA00960A81 /* SQLite */; }; B34AB8632106F2E900C45F09 /* PVLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D122106B11D00DDEBD6 /* PVLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; }; B354E78E219A76C80041F971 /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E785219A76C80041F971 /* Game.swift */; }; - B354E78F219A76C80041F971 /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E785219A76C80041F971 /* Game.swift */; }; B354E790219A76C80041F971 /* BIOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E786219A76C80041F971 /* BIOS.swift */; }; - B354E791219A76C80041F971 /* BIOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E786219A76C80041F971 /* BIOS.swift */; }; B354E792219A76C80041F971 /* PlistDataModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E787219A76C80041F971 /* PlistDataModels.swift */; }; - B354E793219A76C80041F971 /* PlistDataModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E787219A76C80041F971 /* PlistDataModels.swift */; }; B354E794219A76C80041F971 /* Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E788219A76C80041F971 /* Core.swift */; }; - B354E795219A76C80041F971 /* Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E788219A76C80041F971 /* Core.swift */; }; B354E796219A76C80041F971 /* SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E789219A76C80041F971 /* SaveState.swift */; }; - B354E797219A76C80041F971 /* SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E789219A76C80041F971 /* SaveState.swift */; }; B354E798219A76C80041F971 /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78B219A76C80041F971 /* Protocols.swift */; }; - B354E799219A76C80041F971 /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78B219A76C80041F971 /* Protocols.swift */; }; B354E79A219A76C80041F971 /* FileInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78C219A76C80041F971 /* FileInfoProvider.swift */; }; - B354E79B219A76C80041F971 /* FileInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78C219A76C80041F971 /* FileInfoProvider.swift */; }; B354E79C219A76C80041F971 /* LocalFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78D219A76C80041F971 /* LocalFile.swift */; }; - B354E79D219A76C80041F971 /* LocalFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E78D219A76C80041F971 /* LocalFile.swift */; }; B354E7A1219A77F20041F971 /* RealmRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E79F219A77F20041F971 /* RealmRepresentable.swift */; }; - B354E7A2219A77F20041F971 /* RealmRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E79F219A77F20041F971 /* RealmRepresentable.swift */; }; B354E7A3219A77F20041F971 /* DomainConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7A0219A77F20041F971 /* DomainConvertibleType.swift */; }; - B354E7A4219A77F20041F971 /* DomainConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7A0219A77F20041F971 /* DomainConvertibleType.swift */; }; B354E7A8219A78420041F971 /* Repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7A7219A78420041F971 /* Repository.swift */; }; - B354E7A9219A78420041F971 /* Repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7A7219A78420041F971 /* Repository.swift */; }; B354E7AC219A78700041F971 /* FileBackedConformance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7AB219A78700041F971 /* FileBackedConformance.swift */; }; - B354E7AD219A78700041F971 /* FileBackedConformance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7AB219A78700041F971 /* FileBackedConformance.swift */; }; B354E7B4219A796A0041F971 /* RunLoopThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B0219A796A0041F971 /* RunLoopThreadScheduler.swift */; }; - B354E7B5219A796A0041F971 /* RunLoopThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B0219A796A0041F971 /* RunLoopThreadScheduler.swift */; }; B354E7B6219A796A0041F971 /* Observable+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B2219A796A0041F971 /* Observable+Ext.swift */; }; - B354E7B7219A796A0041F971 /* Observable+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B2219A796A0041F971 /* Observable+Ext.swift */; }; B354E7B8219A796A0041F971 /* Realm+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B3219A796A0041F971 /* Realm+Ext.swift */; }; - B354E7B9219A796A0041F971 /* Realm+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7B3219A796A0041F971 /* Realm+Ext.swift */; }; B354E7BB219A7ADC0041F971 /* Cache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7BA219A7ADB0041F971 /* Cache.swift */; }; - B354E7BC219A7ADC0041F971 /* Cache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7BA219A7ADB0041F971 /* Cache.swift */; }; B354E7C9219A7E470041F971 /* System.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7C8219A7E470041F971 /* System.swift */; }; - B354E7CA219A7E470041F971 /* System.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7C8219A7E470041F971 /* System.swift */; }; B354E7CC219A7E620041F971 /* SystemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7CB219A7E620041F971 /* SystemProtocol.swift */; }; - B354E7CD219A7E620041F971 /* SystemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7CB219A7E620041F971 /* SystemProtocol.swift */; }; B354E7CF219A8EAF0041F971 /* LibrarySerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7CE219A8EAF0041F971 /* LibrarySerializer.swift */; }; - B354E7D0219A8EAF0041F971 /* LibrarySerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B354E7CE219A8EAF0041F971 /* LibrarySerializer.swift */; }; + B364D4BF2870E80100B93A4B /* PVLibRetro.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364D4BE2870E80100B93A4B /* PVLibRetro.framework */; }; B378227A21D41E1C0077E86F /* SavePackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227921D41E1C0077E86F /* SavePackage.swift */; }; - B378227B21D41E1C0077E86F /* SavePackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227921D41E1C0077E86F /* SavePackage.swift */; }; B378227D21D41E310077E86F /* GamePackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227C21D41E310077E86F /* GamePackage.swift */; }; - B378227E21D41E310077E86F /* GamePackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227C21D41E310077E86F /* GamePackage.swift */; }; B378228021D41E460077E86F /* PackageResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227F21D41E460077E86F /* PackageResult.swift */; }; - B378228121D41E460077E86F /* PackageResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378227F21D41E460077E86F /* PackageResult.swift */; }; B378228521D41E9B0077E86F /* LibrarySerializerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378228421D41E9B0077E86F /* LibrarySerializerError.swift */; }; - B378228621D41E9B0077E86F /* LibrarySerializerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B378228421D41E9B0077E86F /* LibrarySerializerError.swift */; }; B37B4DF027B2292F0068F8D1 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = B37B4DEF27B2292F0068F8D1 /* Differentiator */; }; B37B4DF227B2292F0068F8D1 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = B37B4DF127B2292F0068F8D1 /* RxDataSources */; }; B383F3BC219BB29600DB6926 /* iCloudSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383F3BB219BB29600DB6926 /* iCloudSync.swift */; }; - B383F3BD219BB29600DB6926 /* iCloudSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383F3BB219BB29600DB6926 /* iCloudSync.swift */; }; B3A3204127209B4300F338F6 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = B3A3204027209B4300F338F6 /* ZipArchive */; }; B3AF42F42107145C002211EE /* DirectoryWatcher2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D332106B4D700DDEBD6 /* DirectoryWatcher2.swift */; }; B3AF475721071CDB002211EE /* LzmaSDKObjCBufferProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474321071CA6002211EE /* LzmaSDKObjCBufferProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -448,185 +206,29 @@ B3AF47D721071FCD002211EE /* PropVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46DF21071CA6002211EE /* PropVariant.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; B3AF47DE21072AD4002211EE /* openvgdb.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47DC21072AD3002211EE /* openvgdb.sqlite */; }; B3AF47DF21072AD4002211EE /* systems.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47DD21072AD3002211EE /* systems.plist */; }; - B3AF6FBD219160BF000FA7F9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FBC219160BF000FA7F9 /* CoreGraphics.framework */; }; - B3AF6FBF219160C4000FA7F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FBE219160C4000FA7F9 /* Foundation.framework */; }; B3AF701621916CF3000FA7F9 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF701521916CF3000FA7F9 /* PVSupport.framework */; }; - B3C04A8D21077B3100E7AF79 /* NSData+Hashing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D362106B4D700DDEBD6 /* NSData+Hashing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A8E21077B3100E7AF79 /* UIImage+Scaling.h in Headers */ = {isa = PBXBuildFile; fileRef = B3274E672106BAF500857F52 /* UIImage+Scaling.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A8F21077B3100E7AF79 /* PVLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D122106B11D00DDEBD6 /* PVLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9021077B3100E7AF79 /* NSFileManager+Hashing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3274E7D2106BD7500857F52 /* NSFileManager+Hashing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9121077B3100E7AF79 /* NSString+Hashing.h in Headers */ = {isa = PBXBuildFile; fileRef = B3274E632106BAA200857F52 /* NSString+Hashing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9221077B3100E7AF79 /* LzmaSDKObjCMutableItem.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474121071CA6002211EE /* LzmaSDKObjCMutableItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9321077B3100E7AF79 /* LzmaSDKObjCTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474421071CA6002211EE /* LzmaSDKObjCTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9421077B3100E7AF79 /* LzmaSDKObjCWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF473221071CA6002211EE /* LzmaSDKObjCWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9621077B3100E7AF79 /* LzmaSDKObjCExtern.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF473D21071CA6002211EE /* LzmaSDKObjCExtern.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9721077B3100E7AF79 /* LzmaSDKObjCItem.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF473E21071CA6002211EE /* LzmaSDKObjCItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9921077B3100E7AF79 /* LzmaSDKObjCBufferProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AF474321071CA6002211EE /* LzmaSDKObjCBufferProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9A21077B3100E7AF79 /* OESQLiteDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = B3579D1E2106B4D600DDEBD6 /* OESQLiteDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C04A9C21077B3100E7AF79 /* MethodProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46BA21071CA6002211EE /* MethodProps.cpp */; }; - B3C04A9D21077B3100E7AF79 /* OESQLiteDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = B3579D202106B4D600DDEBD6 /* OESQLiteDatabase.m */; }; - B3C04A9E21077B3100E7AF79 /* CreateCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46D121071CA6002211EE /* CreateCoder.cpp */; }; - B3C04A9F21077B3100E7AF79 /* PVCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D312106B4D700DDEBD6 /* PVCore.swift */; }; - B3C04AA021077B3100E7AF79 /* ByteSwap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466821071CA6002211EE /* ByteSwap.cpp */; }; - B3C04AA121077B3100E7AF79 /* Sha256Reg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF461B21071CA5002211EE /* Sha256Reg.cpp */; }; - B3C04AA221077B3100E7AF79 /* InOutTempBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46C221071CA6002211EE /* InOutTempBuffer.cpp */; }; - B3C04AA321077B3100E7AF79 /* BcjCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466421071CA6002211EE /* BcjCoder.cpp */; }; - B3C04AA421077B3100E7AF79 /* PpmdRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466B21071CA6002211EE /* PpmdRegister.cpp */; }; - B3C04AA521077B3100E7AF79 /* LzmaSDKObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473421071CA6002211EE /* LzmaSDKObjC.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AA621077B3100E7AF79 /* PVFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D302106B4D700DDEBD6 /* PVFile.swift */; }; - B3C04AA721077B3100E7AF79 /* UIImage+Scaling.m in Sources */ = {isa = PBXBuildFile; fileRef = B3274E662106BAF500857F52 /* UIImage+Scaling.m */; }; - B3C04AA821077B3100E7AF79 /* OutBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46AF21071CA6002211EE /* OutBuffer.cpp */; }; - B3C04AA921077B3100E7AF79 /* LzmaSDKObjCFileDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474021071CA6002211EE /* LzmaSDKObjCFileDecoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AAA21077B3100E7AF79 /* DirectoryWatcher2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D332106B4D700DDEBD6 /* DirectoryWatcher2.swift */; }; - B3C04AAB21077B3100E7AF79 /* Lzma2Register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465E21071CA5002211EE /* Lzma2Register.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AAC21077B3100E7AF79 /* NSData+Hashing.m in Sources */ = {isa = PBXBuildFile; fileRef = B3579D372106B4D700DDEBD6 /* NSData+Hashing.m */; }; - B3C04AAD21077B3100E7AF79 /* CopyCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466021071CA5002211EE /* CopyCoder.cpp */; }; - B3C04AAE21077B3100E7AF79 /* RandGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464A21071CA5002211EE /* RandGen.cpp */; }; - B3C04AAF21077B3100E7AF79 /* Bcj2Coder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466A21071CA6002211EE /* Bcj2Coder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AB021077B3100E7AF79 /* MyAes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464B21071CA5002211EE /* MyAes.cpp */; }; - B3C04AB121077B3100E7AF79 /* RomDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D1F2106B4D600DDEBD6 /* RomDatabase.swift */; }; - B3C04AB221077B3100E7AF79 /* XzCrc64Opt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472621071CA6002211EE /* XzCrc64Opt.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AB321077B3100E7AF79 /* Bcj2.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46EA21071CA6002211EE /* Bcj2.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AB421077B3100E7AF79 /* LzmaHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468721071CA6002211EE /* LzmaHandler.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AB521077B3100E7AF79 /* LzmaDec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470321071CA6002211EE /* LzmaDec.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AB621077B3100E7AF79 /* FilterCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46B221071CA6002211EE /* FilterCoder.cpp */; }; - B3C04AB721077B3100E7AF79 /* Bcj2Register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465721071CA5002211EE /* Bcj2Register.cpp */; }; - B3C04AB821077B3100E7AF79 /* 7zEncode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469B21071CA6002211EE /* 7zEncode.cpp */; }; - B3C04AB921077B3100E7AF79 /* UTI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D252106B4D600DDEBD6 /* UTI.swift */; }; - B3C04ABA21077B3100E7AF79 /* Bra86.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46F621071CA6002211EE /* Bra86.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04ABB21077B3100E7AF79 /* Bra.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46F421071CA6002211EE /* Bra.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04ABC21077B3100E7AF79 /* LzmaSDKObjCWriter.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474921071CA6002211EE /* LzmaSDKObjCWriter.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04ABD21077B3100E7AF79 /* PVBIOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D272106B4D700DDEBD6 /* PVBIOS.swift */; }; - B3C04ABE21077B3100E7AF79 /* 7zAes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464F21071CA5002211EE /* 7zAes.cpp */; }; - B3C04ABF21077B3100E7AF79 /* LzmaSDKObjCMutableItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474A21071CA6002211EE /* LzmaSDKObjCMutableItem.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AC021077B3100E7AF79 /* LzFind.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46EC21071CA6002211EE /* LzFind.c */; }; - B3C04AC121077B3100E7AF79 /* LzmaDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466721071CA6002211EE /* LzmaDecoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AC221077B3100E7AF79 /* ImportCandidateFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E852106BFD000857F52 /* ImportCandidateFile.swift */; }; - B3C04AC321077B3100E7AF79 /* LzmaSDKObjCOpenCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474C21071CA6002211EE /* LzmaSDKObjCOpenCallback.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AC421077B3100E7AF79 /* 7zAesRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464821071CA5002211EE /* 7zAesRegister.cpp */; }; - B3C04AC521077B3100E7AF79 /* PVMediaCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D222106B4D600DDEBD6 /* PVMediaCache.swift */; }; - B3C04AC621077B3100E7AF79 /* StringConvert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463921071CA5002211EE /* StringConvert.cpp */; }; - B3C04AC721077B3100E7AF79 /* BcjRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465B21071CA5002211EE /* BcjRegister.cpp */; }; - B3C04AC821077B3100E7AF79 /* LockedStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46BB21071CA6002211EE /* LockedStream.cpp */; }; - B3C04AC921077B3100E7AF79 /* NSString+Hashing.m in Sources */ = {isa = PBXBuildFile; fileRef = B3274E622106BAA200857F52 /* NSString+Hashing.m */; }; - B3C04ACA21077B3100E7AF79 /* StreamObjects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46CC21071CA6002211EE /* StreamObjects.cpp */; }; - B3C04ACC21077B3100E7AF79 /* BraIA64.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470F21071CA6002211EE /* BraIA64.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04ACD21077B3100E7AF79 /* NSFileManager+Hashing.m in Sources */ = {isa = PBXBuildFile; fileRef = B3274E7C2106BD7500857F52 /* NSFileManager+Hashing.m */; }; - B3C04ACE21077B3100E7AF79 /* 7zDecode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46A221071CA6002211EE /* 7zDecode.cpp */; }; - B3C04ACF21077B3100E7AF79 /* XzIn.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46FA21071CA6002211EE /* XzIn.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AD021077B3100E7AF79 /* 7zUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469C21071CA6002211EE /* 7zUpdate.cpp */; }; - B3C04AD121077B3100E7AF79 /* PVGame+Spotlight.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2A2106B4D700DDEBD6 /* PVGame+Spotlight.swift */; }; - B3C04AD221077B3100E7AF79 /* 7zOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469A21071CA6002211EE /* 7zOut.cpp */; }; - B3C04AD321077B3100E7AF79 /* PVGame+BoxArt.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2E2106B4D700DDEBD6 /* PVGame+BoxArt.swift */; }; - B3C04AD421077B3100E7AF79 /* 7zHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468F21071CA6002211EE /* 7zHeader.cpp */; }; - B3C04AD521077B3100E7AF79 /* Xz.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472721071CA6002211EE /* Xz.c */; }; - B3C04AD621077B3100E7AF79 /* MyString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462721071CA5002211EE /* MyString.cpp */; }; - B3C04AD721077B3100E7AF79 /* ItemNameUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468021071CA6002211EE /* ItemNameUtils.cpp */; }; - B3C04AD821077B3100E7AF79 /* Lzma2DecMt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46FC21071CA6002211EE /* Lzma2DecMt.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AD921077B3100E7AF79 /* LzmaSDKObjCFileEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475021071CA6002211EE /* LzmaSDKObjCFileEncoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04ADA21077B3100E7AF79 /* LzmaSDKObjCExtractCallback.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475421071CA6002211EE /* LzmaSDKObjCExtractCallback.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04ADB21077B3100E7AF79 /* DllExports2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467421071CA6002211EE /* DllExports2.cpp */; }; - B3C04ADC21077B3100E7AF79 /* 7zCrcOpt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472821071CA6002211EE /* 7zCrcOpt.c */; }; - B3C04ADD21077B3100E7AF79 /* 7zHandlerOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469621071CA6002211EE /* 7zHandlerOut.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04ADE21077B3100E7AF79 /* Bcj2Enc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472421071CA6002211EE /* Bcj2Enc.c */; }; - B3C04ADF21077B3100E7AF79 /* LzmaSDKObjCReader.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473F21071CA6002211EE /* LzmaSDKObjCReader.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AE021077B3100E7AF79 /* PVRecentGame.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2F2106B4D700DDEBD6 /* PVRecentGame.swift */; }; - B3C04AE121077B3100E7AF79 /* Ppmd7Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E421071CA6002211EE /* Ppmd7Dec.c */; }; - B3C04AE221077B3100E7AF79 /* PVSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D292106B4D700DDEBD6 /* PVSystem.swift */; }; - B3C04AE321077B3100E7AF79 /* PpmdEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466F21071CA6002211EE /* PpmdEncoder.cpp */; }; - B3C04AE421077B3100E7AF79 /* LzmaSDKObjCUpdateCallback.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473521071CA6002211EE /* LzmaSDKObjCUpdateCallback.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AE521077B3100E7AF79 /* PVLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D282106B4D700DDEBD6 /* PVLibrary.swift */; }; - B3C04AE721077B3100E7AF79 /* LzmaEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E321071CA6002211EE /* LzmaEnc.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AE821077B3100E7AF79 /* XzDec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E821071CA6002211EE /* XzDec.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AE921077B3100E7AF79 /* GameImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D342106B4D700DDEBD6 /* GameImporter.swift */; }; - B3C04AEA21077B3100E7AF79 /* StringToInt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF461C21071CA5002211EE /* StringToInt.cpp */; }; - B3C04AEB21077B3100E7AF79 /* StreamUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46B721071CA6002211EE /* StreamUtils.cpp */; }; - B3C04AEC21077B3100E7AF79 /* XzCrc64Reg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463221071CA5002211EE /* XzCrc64Reg.cpp */; }; - B3C04AED21077B3100E7AF79 /* VirtThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46AB21071CA6002211EE /* VirtThread.cpp */; }; - B3C04AEE21077B3100E7AF79 /* CWrappers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46C321071CA6002211EE /* CWrappers.cpp */; }; - B3C04AEF21077B3100E7AF79 /* HandlerOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467B21071CA6002211EE /* HandlerOut.cpp */; }; - B3C04AF021077B3100E7AF79 /* CrcReg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463821071CA5002211EE /* CrcReg.cpp */; }; - B3C04AF121077B3100E7AF79 /* Ppmd7.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46F221071CA6002211EE /* Ppmd7.c */; }; - B3C04AF221077B3100E7AF79 /* LzmaSDKObjCInFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474D21071CA6002211EE /* LzmaSDKObjCInFile.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AF321077B3100E7AF79 /* Lzma2Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465621071CA5002211EE /* Lzma2Decoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AF421077B3100E7AF79 /* LzmaSDKObjCOutFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474E21071CA6002211EE /* LzmaSDKObjCOutFile.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AF521077B3100E7AF79 /* PVGame.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2B2106B4D700DDEBD6 /* PVGame.swift */; }; - B3C04AF621077B3100E7AF79 /* 7zIn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469721071CA6002211EE /* 7zIn.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AF721077B3100E7AF79 /* 7zFolderInStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468B21071CA6002211EE /* 7zFolderInStream.cpp */; }; - B3C04AF821077B3100E7AF79 /* CodecExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465221071CA5002211EE /* CodecExports.cpp */; }; - B3C04AF921077B3100E7AF79 /* LzmaSDKObjCItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475521071CA6002211EE /* LzmaSDKObjCItem.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AFA21077B3100E7AF79 /* AesOpt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471E21071CA6002211EE /* AesOpt.c */; }; - B3C04AFB21077B3100E7AF79 /* 7zStream.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471121071CA6002211EE /* 7zStream.c */; }; - B3C04AFC21077B3100E7AF79 /* LzmaEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466D21071CA6002211EE /* LzmaEncoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AFD21077B3100E7AF79 /* LzmaSDKObjCBaseCoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF474F21071CA6002211EE /* LzmaSDKObjCBaseCoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04AFE21077B3100E7AF79 /* 7zHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468C21071CA6002211EE /* 7zHandler.cpp */; }; - B3C04AFF21077B3100E7AF79 /* Aes.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E521071CA6002211EE /* Aes.c */; }; - B3C04B0021077B3100E7AF79 /* Lzma2Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E121071CA6002211EE /* Lzma2Dec.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B0121077B3100E7AF79 /* 7zRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46A421071CA6002211EE /* 7zRegister.cpp */; }; - B3C04B0221077B3100E7AF79 /* Wildcard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462B21071CA5002211EE /* Wildcard.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B0321077B3100E7AF79 /* XzCrc64.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470D21071CA6002211EE /* XzCrc64.c */; }; - B3C04B0421077B3100E7AF79 /* PropVariantConv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46DA21071CA6002211EE /* PropVariantConv.cpp */; }; - B3C04B0521077B3100E7AF79 /* LimitedStreams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46BF21071CA6002211EE /* LimitedStreams.cpp */; }; - B3C04B0621077B3100E7AF79 /* ArchiveExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467321071CA6002211EE /* ArchiveExports.cpp */; }; - B3C04B0721077B3100E7AF79 /* C_FileIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462821071CA5002211EE /* C_FileIO.cpp */; }; - B3C04B0821077B3100E7AF79 /* IntToString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF462A21071CA5002211EE /* IntToString.cpp */; }; - B3C04B0921077B3100E7AF79 /* MyWindows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF463C21071CA5002211EE /* MyWindows.cpp */; }; - B3C04B0A21077B3100E7AF79 /* LzmaSDKObjCExtern.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF475121071CA6002211EE /* LzmaSDKObjCExtern.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B0B21077B3100E7AF79 /* PVImageFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E832106BF2F00857F52 /* PVImageFile.swift */; }; - B3C04B0C21077B3100E7AF79 /* Ppmd7Enc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470521071CA6002211EE /* Ppmd7Enc.c */; }; - B3C04B0D21077B3100E7AF79 /* XzEnc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46FB21071CA6002211EE /* XzEnc.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B0E21077B3100E7AF79 /* 7zCrc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471C21071CA6002211EE /* 7zCrc.c */; }; - B3C04B0F21077B3100E7AF79 /* ProgressUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46AA21071CA6002211EE /* ProgressUtils.cpp */; }; - B3C04B1021077B3100E7AF79 /* PropId.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46CF21071CA6002211EE /* PropId.cpp */; }; - B3C04B1121077B3100E7AF79 /* PropVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46DF21071CA6002211EE /* PropVariant.cpp */; }; - B3C04B1221077B3100E7AF79 /* PVEmulatorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E5D2106BA1200857F52 /* PVEmulatorConfiguration.swift */; }; - B3C04B1321077B3100E7AF79 /* OutStreamWithCRC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467D21071CA6002211EE /* OutStreamWithCRC.cpp */; }; - B3C04B1421077B3100E7AF79 /* LzFindMt.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E621071CA6002211EE /* LzFindMt.c */; }; - B3C04B1521077B3100E7AF79 /* LzmaSDKObjCError.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473821071CA6002211EE /* LzmaSDKObjCError.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B1621077B3100E7AF79 /* Time Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D242106B4D600DDEBD6 /* Time Utilities.swift */; }; - B3C04B1721077B3100E7AF79 /* PVAppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E5E2106BA1200857F52 /* PVAppConstants.swift */; }; - B3C04B1821077B3100E7AF79 /* Lzma2Enc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470421071CA6002211EE /* Lzma2Enc.c */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B1921077B3100E7AF79 /* PpmdDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466621071CA6002211EE /* PpmdDecoder.cpp */; }; - B3C04B1A21077B3100E7AF79 /* LzmaSDKObjCBufferProcessor.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473321071CA6002211EE /* LzmaSDKObjCBufferProcessor.mm */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B1B21077B3100E7AF79 /* BranchMisc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466521071CA6002211EE /* BranchMisc.cpp */; }; - B3C04B1C21077B3100E7AF79 /* MtCoder.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46E921071CA6002211EE /* MtCoder.c */; }; - B3C04B1D21077B3100E7AF79 /* Sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471621071CA6002211EE /* Sha256.c */; }; - B3C04B1E21077B3100E7AF79 /* Lzma2Encoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466221071CA5002211EE /* Lzma2Encoder.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B1F21077B3100E7AF79 /* LzmaRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466321071CA6002211EE /* LzmaRegister.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B2021077B3100E7AF79 /* DummyOutStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF467921071CA6002211EE /* DummyOutStream.cpp */; }; - B3C04B2121077B3100E7AF79 /* 7zExtract.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468A21071CA6002211EE /* 7zExtract.cpp */; }; - B3C04B2221077B3100E7AF79 /* 7zProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF469321071CA6002211EE /* 7zProperties.cpp */; }; - B3C04B2321077B3100E7AF79 /* Alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF470121071CA6002211EE /* Alloc.c */; }; - B3C04B2521077B3100E7AF79 /* CpuArch.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472221071CA6002211EE /* CpuArch.c */; }; - B3C04B2621077B3100E7AF79 /* Delta.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF471821071CA6002211EE /* Delta.c */; }; - B3C04B2721077B3100E7AF79 /* LzmaSDKObjCCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF473721071CA6002211EE /* LzmaSDKObjCCommon.cpp */; settings = {COMPILER_FLAGS = "-Wno-everything"; }; }; - B3C04B2821077B3100E7AF79 /* Threads.c in Sources */ = {isa = PBXBuildFile; fileRef = B3AF472A21071CA6002211EE /* Threads.c */; }; - B3C04B2921077B3100E7AF79 /* FileStreams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46C621071CA6002211EE /* FileStreams.cpp */; }; - B3C04B2A21077B3100E7AF79 /* 7zSpecStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF46A321071CA6002211EE /* 7zSpecStream.cpp */; }; - B3C04B2B21077B3100E7AF79 /* MyAesReg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF464C21071CA5002211EE /* MyAesReg.cpp */; }; - B3C04B2C21077B3100E7AF79 /* CopyRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF466121071CA5002211EE /* CopyRegister.cpp */; }; - B3C04B2D21077B3100E7AF79 /* CoderMixer2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF468221071CA6002211EE /* CoderMixer2.cpp */; }; - B3C04B2E21077B3100E7AF79 /* BranchRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3AF465F21071CA5002211EE /* BranchRegister.cpp */; }; - B3C04B2F21077B3100E7AF79 /* PVObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3274E782106BC8800857F52 /* PVObject.swift */; }; - B3C04B3021077B3100E7AF79 /* PVSaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3579D2D2106B4D700DDEBD6 /* PVSaveState.swift */; }; - B3C04B3F21077B3100E7AF79 /* openvgdb.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47DC21072AD3002211EE /* openvgdb.sqlite */; }; - B3C04B4021077B3100E7AF79 /* systems.plist in Resources */ = {isa = PBXBuildFile; fileRef = B3AF47DD21072AD3002211EE /* systems.plist */; }; B3C04B642107867200E7AF79 /* PVLibraryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C04B632107867200E7AF79 /* PVLibraryTests.swift */; }; B3C04B662107867200E7AF79 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3579D0F2106B11D00DDEBD6 /* PVLibrary.framework */; }; B3C04B6F21078D2500E7AF79 /* PVLibrary.framework in Copy Framework */ = {isa = PBXBuildFile; fileRef = B3579D0F2106B11D00DDEBD6 /* PVLibrary.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B3C04B982107991200E7AF79 /* PVEmulatorConfiguration+Frameworks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C04B972107991100E7AF79 /* PVEmulatorConfiguration+Frameworks.swift */; }; - B3C04B992107991200E7AF79 /* PVEmulatorConfiguration+Frameworks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C04B972107991100E7AF79 /* PVEmulatorConfiguration+Frameworks.swift */; }; B3CDEEB021D493AC000C55F7 /* GameImporter2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEAF21D493AC000C55F7 /* GameImporter2.swift */; }; - B3CDEEB121D493AC000C55F7 /* GameImporter2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEAF21D493AC000C55F7 /* GameImporter2.swift */; }; B3CDEEB321D497CD000C55F7 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEB221D497CD000C55F7 /* Package.swift */; }; - B3CDEEB421D497CD000C55F7 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEB221D497CD000C55F7 /* Package.swift */; }; B3CDEECB21D4CF61000C55F7 /* DirectoryWatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEECA21D4CF61000C55F7 /* DirectoryWatcher.swift */; }; - B3CDEECC21D4CF61000C55F7 /* DirectoryWatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEECA21D4CF61000C55F7 /* DirectoryWatcher.swift */; }; + B3FAC8DE292B1DDD005E8B11 /* PVPatreon.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FAC8DD292B1DDD005E8B11 /* PVPatreon.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3FAC8E9292B1E1B005E8B11 /* Patron.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8E3292B1E17005E8B11 /* Patron.swift */; }; + B3FAC8EA292B1E1B005E8B11 /* Campaign.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8E4292B1E17005E8B11 /* Campaign.swift */; }; + B3FAC8EB292B1E1B005E8B11 /* Benefit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8E5292B1E18005E8B11 /* Benefit.swift */; }; + B3FAC8EC292B1E1B005E8B11 /* PatreonAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8E6292B1E18005E8B11 /* PatreonAccount.swift */; }; + B3FAC8ED292B1E1B005E8B11 /* PatreonAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8E7292B1E18005E8B11 /* PatreonAPI.swift */; }; + B3FAC8EE292B1E1B005E8B11 /* Tier.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8E8292B1E1A005E8B11 /* Tier.swift */; }; + B3FAC8EF292B1E1C005E8B11 /* PVLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3579D0F2106B11D00DDEBD6 /* PVLibrary.framework */; }; + B3FAC8F0292B1E1C005E8B11 /* PVLibrary.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3579D0F2106B11D00DDEBD6 /* PVLibrary.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + B3FAC8F6292B2551005E8B11 /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8F5292B2551005E8B11 /* Keychain.swift */; }; + B3FAC8F9292B26EA005E8B11 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = B3FAC8F8292B26EA005E8B11 /* KeychainAccess */; }; + B3FAC8FB292B3155005E8B11 /* PVUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8FA292B3155005E8B11 /* PVUser.swift */; }; + B3FAC8FD292B3240005E8B11 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3FAC8FC292B3240005E8B11 /* User.swift */; }; CF17109D2585F97000258602 /* PVCheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF17109C2585F97000258602 /* PVCheats.swift */; }; - CF17109E2585F97000258602 /* PVCheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF17109C2585F97000258602 /* PVCheats.swift */; }; CF1710A12585FA3F00258602 /* Cheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1710A02585FA3F00258602 /* Cheats.swift */; }; - CF1710A22585FA3F00258602 /* Cheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1710A02585FA3F00258602 /* Cheats.swift */; }; - EF7D4AA527B44FA7002528B7 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = EF7D4AA427B44FA7002528B7 /* RxDataSources */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -637,29 +239,36 @@ remoteGlobalIDString = B3579D0E2106B11D00DDEBD6; remoteInfo = PVLibrary; }; + B3FAC8F1292B1E1C005E8B11 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B3579D062106B11D00DDEBD6 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3579D0E2106B11D00DDEBD6; + remoteInfo = PVLibrary; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - B305F086276B5229003AE510 /* Embed Frameworks */ = { + B3C04B6C21078CD900E7AF79 /* Copy Framework */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - B305F085276B5229003AE510 /* PVSupport.framework in Embed Frameworks */, + B3C04B6F21078D2500E7AF79 /* PVLibrary.framework in Copy Framework */, ); - name = "Embed Frameworks"; + name = "Copy Framework"; runOnlyForDeploymentPostprocessing = 0; }; - B3C04B6C21078CD900E7AF79 /* Copy Framework */ = { + B3FAC8F3292B1E1C005E8B11 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - B3C04B6F21078D2500E7AF79 /* PVLibrary.framework in Copy Framework */, + B3FAC8F0292B1E1C005E8B11 /* PVLibrary.framework in Embed Frameworks */, ); - name = "Copy Framework"; + name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ @@ -671,7 +280,6 @@ 11AFB2B224867482000A3922 /* PVGameLibrary+Migration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PVGameLibrary+Migration.swift"; sourceTree = ""; }; B305EF9E276B50DF003AE510 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/iOSSupport/System/Library/Frameworks/SwiftUI.framework; sourceTree = DEVELOPER_DIR; }; B305EFA0276B5112003AE510 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/SwiftUI.framework; sourceTree = DEVELOPER_DIR; }; - B305F081276B512D003AE510 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B305F082276B5152003AE510 /* PVLibrary-tvOS copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PVLibrary-tvOS copy-Info.plist"; path = "/Users/jmattiello/Workspace/Provenance/Provenance/PVLibrary/PVLibrary-tvOS copy-Info.plist"; sourceTree = ""; }; B305F083276B5229003AE510 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3067F4A2106B5A20091437F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -735,6 +343,8 @@ B3579D342106B4D700DDEBD6 /* GameImporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameImporter.swift; sourceTree = ""; }; B3579D362106B4D700DDEBD6 /* NSData+Hashing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSData+Hashing.h"; sourceTree = ""; }; B3579D372106B4D700DDEBD6 /* NSData+Hashing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSData+Hashing.m"; sourceTree = ""; }; + B364D4BE2870E80100B93A4B /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B364D4C22870E81200B93A4B /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B378226D21D409F20077E86F /* Extractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extractor.swift; sourceTree = ""; }; B378227921D41E1C0077E86F /* SavePackage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavePackage.swift; sourceTree = ""; }; B378227C21D41E310077E86F /* GamePackage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePackage.swift; sourceTree = ""; }; @@ -1064,7 +674,6 @@ B3AF6FBC219160BF000FA7F9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; B3AF6FBE219160C4000FA7F9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B3AF701521916CF3000FA7F9 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B3C04B4421077B3100E7AF79 /* PVLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C04B612107867200E7AF79 /* PVLibraryTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PVLibraryTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B3C04B632107867200E7AF79 /* PVLibraryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVLibraryTests.swift; sourceTree = ""; }; B3C04B652107867200E7AF79 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -1072,29 +681,22 @@ B3CDEEAF21D493AC000C55F7 /* GameImporter2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameImporter2.swift; sourceTree = ""; }; B3CDEEB221D497CD000C55F7 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; B3CDEECA21D4CF61000C55F7 /* DirectoryWatcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectoryWatcher.swift; sourceTree = ""; }; + B3FAC8DB292B1DDD005E8B11 /* PVPatreon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVPatreon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FAC8DD292B1DDD005E8B11 /* PVPatreon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVPatreon.h; sourceTree = ""; }; + B3FAC8E3292B1E17005E8B11 /* Patron.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Patron.swift; path = ../../../PVPatreon/Patron.swift; sourceTree = ""; }; + B3FAC8E4292B1E17005E8B11 /* Campaign.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Campaign.swift; path = ../../../PVPatreon/Campaign.swift; sourceTree = ""; }; + B3FAC8E5292B1E18005E8B11 /* Benefit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Benefit.swift; path = ../../../PVPatreon/Benefit.swift; sourceTree = ""; }; + B3FAC8E6292B1E18005E8B11 /* PatreonAccount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PatreonAccount.swift; path = ../../../PVPatreon/PatreonAccount.swift; sourceTree = ""; }; + B3FAC8E7292B1E18005E8B11 /* PatreonAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PatreonAPI.swift; path = ../../../PVPatreon/PatreonAPI.swift; sourceTree = ""; }; + B3FAC8E8292B1E1A005E8B11 /* Tier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Tier.swift; path = ../../../PVPatreon/Tier.swift; sourceTree = ""; }; + B3FAC8F5292B2551005E8B11 /* Keychain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keychain.swift; sourceTree = ""; }; + B3FAC8FA292B3155005E8B11 /* PVUser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PVUser.swift; path = PVLibrary/RealmPlatform/Entities/PVUser.swift; sourceTree = SOURCE_ROOT; }; + B3FAC8FC292B3240005E8B11 /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; CF17109C2585F97000258602 /* PVCheats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVCheats.swift; sourceTree = ""; }; CF1710A02585FA3F00258602 /* Cheats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cheats.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B305F06F276B512D003AE510 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B305F084276B5229003AE510 /* PVSupport.framework in Frameworks */, - B305F070276B512D003AE510 /* SwiftUI.framework in Frameworks */, - B3014FA627B487FD006AC79B /* Differentiator in Frameworks */, - B305F071276B512D003AE510 /* SQLite in Frameworks */, - B305F072276B512D003AE510 /* RxCocoa in Frameworks */, - B305F074276B512D003AE510 /* RxRealm in Frameworks */, - B305F075276B512D003AE510 /* Foundation.framework in Frameworks */, - B305F076276B512D003AE510 /* RxSwift in Frameworks */, - B305F077276B512D003AE510 /* CoreServices.framework in Frameworks */, - B305F078276B512D003AE510 /* CoreGraphics.framework in Frameworks */, - B305F079276B512D003AE510 /* ZipArchive in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3579D0C2106B11D00DDEBD6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1106,34 +708,27 @@ B3067F742106B9130091437F /* CoreGraphics.framework in Frameworks */, 1180B31E2492A9BB00636C8A /* CoreServices.framework in Frameworks */, B3067F4B2106B5A30091437F /* Foundation.framework in Frameworks */, + B364D4BF2870E80100B93A4B /* PVLibRetro.framework in Frameworks */, B37B4DF227B2292F0068F8D1 /* RxDataSources in Frameworks */, B336B90626B39ABA00960A81 /* RxRealm in Frameworks */, B3A3204127209B4300F338F6 /* ZipArchive in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3C04B3121077B3100E7AF79 /* Frameworks */ = { + B3C04B5E2107867200E7AF79 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B305EFA1276B5112003AE510 /* SwiftUI.framework in Frameworks */, - B336B91126B39BDA00960A81 /* SQLite in Frameworks */, - B324C2ED219192FF009F4EDC /* PVSupport.framework in Frameworks */, - B3014FA427B487F0006AC79B /* Differentiator in Frameworks */, - B336B90C26B39ACB00960A81 /* RxRealm in Frameworks */, - EF7D4AA527B44FA7002528B7 /* RxDataSources in Frameworks */, - B3AF6FBF219160C4000FA7F9 /* Foundation.framework in Frameworks */, - 1180B3202492A9CB00636C8A /* CoreServices.framework in Frameworks */, - B3AF6FBD219160BF000FA7F9 /* CoreGraphics.framework in Frameworks */, - B3128066274C658E00550720 /* ZipArchive in Frameworks */, + B3C04B662107867200E7AF79 /* PVLibrary.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3C04B5E2107867200E7AF79 /* Frameworks */ = { + B3FAC8D8292B1DDD005E8B11 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3C04B662107867200E7AF79 /* PVLibrary.framework in Frameworks */, + B3FAC8F9292B26EA005E8B11 /* KeychainAccess in Frameworks */, + B3FAC8EF292B1E1C005E8B11 /* PVLibrary.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1143,6 +738,8 @@ B3067F492106B5A20091437F /* Frameworks */ = { isa = PBXGroup; children = ( + B364D4C22870E81200B93A4B /* PVLibRetro.framework */, + B364D4BE2870E80100B93A4B /* PVLibRetro.framework */, B305F083276B5229003AE510 /* PVSupport.framework */, B305EF9E276B50DF003AE510 /* SwiftUI.framework */, B305EFA0276B5112003AE510 /* SwiftUI.framework */, @@ -1177,6 +774,7 @@ B354E789219A76C80041F971 /* SaveState.swift */, B354E7C8219A7E470041F971 /* System.swift */, CF1710A02585FA3F00258602 /* Cheats.swift */, + B3FAC8FC292B3240005E8B11 /* User.swift */, ); path = Domain; sourceTree = ""; @@ -1206,6 +804,7 @@ B354E7AA219A78600041F971 /* Files */, B3579D272106B4D700DDEBD6 /* PVBIOS.swift */, B3579D282106B4D700DDEBD6 /* PVLibrary.swift */, + B3FAC8FA292B3155005E8B11 /* PVUser.swift */, B3579D292106B4D700DDEBD6 /* PVSystem.swift */, B3579D2B2106B4D700DDEBD6 /* PVGame.swift */, B3579D2A2106B4D700DDEBD6 /* PVGame+Spotlight.swift */, @@ -1268,6 +867,7 @@ B317380127841959002D3ACD /* Build.xcconfig */, B3579D112106B11D00DDEBD6 /* PVLibrary */, B3C04B622107867200E7AF79 /* Tests */, + B3FAC8DC292B1DDD005E8B11 /* PVPatreon */, B3579D102106B11D00DDEBD6 /* Products */, B3067F492106B5A20091437F /* Frameworks */, B305F082276B5152003AE510 /* PVLibrary-tvOS copy-Info.plist */, @@ -1278,9 +878,8 @@ isa = PBXGroup; children = ( B3579D0F2106B11D00DDEBD6 /* PVLibrary.framework */, - B3C04B4421077B3100E7AF79 /* PVLibrary.framework */, B3C04B612107867200E7AF79 /* PVLibraryTests.xctest */, - B305F081276B512D003AE510 /* PVLibrary.framework */, + B3FAC8DB292B1DDD005E8B11 /* PVPatreon.framework */, ); name = Products; sourceTree = ""; @@ -1883,30 +1482,33 @@ path = Tests; sourceTree = ""; }; + B3FAC8DC292B1DDD005E8B11 /* PVPatreon */ = { + isa = PBXGroup; + children = ( + B3FAC8F4292B2551005E8B11 /* Keychain */, + B3FAC8E5292B1E18005E8B11 /* Benefit.swift */, + B3FAC8E4292B1E17005E8B11 /* Campaign.swift */, + B3FAC8E6292B1E18005E8B11 /* PatreonAccount.swift */, + B3FAC8E7292B1E18005E8B11 /* PatreonAPI.swift */, + B3FAC8E3292B1E17005E8B11 /* Patron.swift */, + B3FAC8E8292B1E1A005E8B11 /* Tier.swift */, + B3FAC8DD292B1DDD005E8B11 /* PVPatreon.h */, + ); + path = PVPatreon; + sourceTree = ""; + }; + B3FAC8F4292B2551005E8B11 /* Keychain */ = { + isa = PBXGroup; + children = ( + B3FAC8F5292B2551005E8B11 /* Keychain.swift */, + ); + name = Keychain; + path = ../../../PVPatreon/Keychain; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B305EFAC276B512D003AE510 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B305EFAD276B512D003AE510 /* NSData+Hashing.h in Headers */, - B305EFAE276B512D003AE510 /* UIImage+Scaling.h in Headers */, - B305EFAF276B512D003AE510 /* PVLibrary.h in Headers */, - B305EFB0276B512D003AE510 /* NSFileManager+Hashing.h in Headers */, - B305EFB1276B512D003AE510 /* NSString+Hashing.h in Headers */, - B305EFB2276B512D003AE510 /* LzmaSDKObjCMutableItem.h in Headers */, - B305EFB3276B512D003AE510 /* LzmaSDKObjCTypes.h in Headers */, - B305EFB4276B512D003AE510 /* LzmaSDKObjC.h in Headers */, - B305EFB5276B512D003AE510 /* LzmaSDKObjCWriter.h in Headers */, - B305EFB6276B512D003AE510 /* LzmaSDKObjCExtern.h in Headers */, - B305EFB7276B512D003AE510 /* LzmaSDKObjCReader.h in Headers */, - B305EFB8276B512D003AE510 /* LzmaSDKObjCItem.h in Headers */, - B305EFB9276B512D003AE510 /* LzmaSDKObjCBufferProcessor.h in Headers */, - B305EFBA276B512D003AE510 /* OESQLiteDatabase.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3579D0A2106B11D00DDEBD6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1928,60 +1530,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C04A8C21077B3100E7AF79 /* Headers */ = { + B3FAC8D6292B1DDD005E8B11 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B3C04A8D21077B3100E7AF79 /* NSData+Hashing.h in Headers */, - B3C04A8E21077B3100E7AF79 /* UIImage+Scaling.h in Headers */, - B3C04A8F21077B3100E7AF79 /* PVLibrary.h in Headers */, - B3C04A9021077B3100E7AF79 /* NSFileManager+Hashing.h in Headers */, - B3C04A9121077B3100E7AF79 /* NSString+Hashing.h in Headers */, - B3C04A9221077B3100E7AF79 /* LzmaSDKObjCMutableItem.h in Headers */, - B3C04A9321077B3100E7AF79 /* LzmaSDKObjCTypes.h in Headers */, - B31117AF218EB26000C495A2 /* LzmaSDKObjC.h in Headers */, - B3C04A9421077B3100E7AF79 /* LzmaSDKObjCWriter.h in Headers */, - B3C04A9621077B3100E7AF79 /* LzmaSDKObjCExtern.h in Headers */, - B31117AD218EB24400C495A2 /* LzmaSDKObjCReader.h in Headers */, - B3C04A9721077B3100E7AF79 /* LzmaSDKObjCItem.h in Headers */, - B3C04A9921077B3100E7AF79 /* LzmaSDKObjCBufferProcessor.h in Headers */, - B3C04A9A21077B3100E7AF79 /* OESQLiteDatabase.h in Headers */, + B3FAC8DE292B1DDD005E8B11 /* PVPatreon.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B305EFA2276B512D003AE510 /* PVLibrary-watchOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B305F07D276B512D003AE510 /* Build configuration list for PBXNativeTarget "PVLibrary-watchOS" */; - buildPhases = ( - B305EFAC276B512D003AE510 /* Headers */, - B305EFBB276B512D003AE510 /* Sources */, - B305F06F276B512D003AE510 /* Frameworks */, - B305F07A276B512D003AE510 /* Resources */, - B305F086276B5229003AE510 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVLibrary-watchOS"; - packageProductDependencies = ( - B305EFA3276B512D003AE510 /* RxSwift */, - B305EFA5276B512D003AE510 /* RxCocoa */, - B305EFA6276B512D003AE510 /* RxRealm */, - B305EFA8276B512D003AE510 /* SQLite */, - B305EFAA276B512D003AE510 /* ZipArchive */, - B3014FA527B487FD006AC79B /* Differentiator */, - ); - productName = PVLibrary; - productReference = B305F081276B512D003AE510 /* PVLibrary.framework */; - productType = "com.apple.product-type.framework"; - }; - B3579D0E2106B11D00DDEBD6 /* PVLibrary-iOS */ = { + B3579D0E2106B11D00DDEBD6 /* PVLibrary */ = { isa = PBXNativeTarget; - buildConfigurationList = B3579D172106B11D00DDEBD6 /* Build configuration list for PBXNativeTarget "PVLibrary-iOS" */; + buildConfigurationList = B3579D172106B11D00DDEBD6 /* Build configuration list for PBXNativeTarget "PVLibrary" */; buildPhases = ( B3579D0A2106B11D00DDEBD6 /* Headers */, B3579D0B2106B11D00DDEBD6 /* Sources */, @@ -1992,7 +1554,7 @@ ); dependencies = ( ); - name = "PVLibrary-iOS"; + name = PVLibrary; packageProductDependencies = ( B336B90526B39ABA00960A81 /* RxRealm */, B336B90E26B39BCF00960A81 /* SQLite */, @@ -2004,31 +1566,6 @@ productReference = B3579D0F2106B11D00DDEBD6 /* PVLibrary.framework */; productType = "com.apple.product-type.framework"; }; - B3C04A8B21077B3100E7AF79 /* PVLibrary-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = B3C04B4121077B3100E7AF79 /* Build configuration list for PBXNativeTarget "PVLibrary-tvOS" */; - buildPhases = ( - B3C04A8C21077B3100E7AF79 /* Headers */, - B3C04A9B21077B3100E7AF79 /* Sources */, - B3C04B3121077B3100E7AF79 /* Frameworks */, - B3C04B3E21077B3100E7AF79 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PVLibrary-tvOS"; - packageProductDependencies = ( - B336B90B26B39ACB00960A81 /* RxRealm */, - B336B91026B39BDA00960A81 /* SQLite */, - B3128065274C658E00550720 /* ZipArchive */, - EF7D4AA427B44FA7002528B7 /* RxDataSources */, - B3014FA327B487F0006AC79B /* Differentiator */, - ); - productName = PVLibrary; - productReference = B3C04B4421077B3100E7AF79 /* PVLibrary.framework */; - productType = "com.apple.product-type.framework"; - }; B3C04B602107867200E7AF79 /* PVLibraryTests */ = { isa = PBXNativeTarget; buildConfigurationList = B3C04B692107867200E7AF79 /* Build configuration list for PBXNativeTarget "PVLibraryTests" */; @@ -2048,6 +1585,29 @@ productReference = B3C04B612107867200E7AF79 /* PVLibraryTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + B3FAC8DA292B1DDD005E8B11 /* PVPatreon */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3FAC8E2292B1DDD005E8B11 /* Build configuration list for PBXNativeTarget "PVPatreon" */; + buildPhases = ( + B3FAC8D6292B1DDD005E8B11 /* Headers */, + B3FAC8D7292B1DDD005E8B11 /* Sources */, + B3FAC8D8292B1DDD005E8B11 /* Frameworks */, + B3FAC8D9292B1DDD005E8B11 /* Resources */, + B3FAC8F3292B1E1C005E8B11 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + B3FAC8F2292B1E1C005E8B11 /* PBXTargetDependency */, + ); + name = PVPatreon; + packageProductDependencies = ( + B3FAC8F8292B26EA005E8B11 /* KeychainAccess */, + ); + productName = PVPatreon; + productReference = B3FAC8DB292B1DDD005E8B11 /* PVPatreon.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -2069,6 +1629,10 @@ CreatedOnToolsVersion = 9.4.1; LastSwiftMigration = 1020; }; + B3FAC8DA292B1DDD005E8B11 = { + CreatedOnToolsVersion = 14.1; + LastSwiftMigration = 1410; + }; }; }; buildConfigurationList = B3579D092106B11D00DDEBD6 /* Build configuration list for PBXProject "PVLibrary" */; @@ -2085,29 +1649,20 @@ B336B90D26B39BCF00960A81 /* XCRemoteSwiftPackageReference "SQLite.swift" */, B3A3203F27209B4300F338F6 /* XCRemoteSwiftPackageReference "ZipArchive" */, B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */, + B3FAC8F7292B26EA005E8B11 /* XCRemoteSwiftPackageReference "KeychainAccess" */, ); productRefGroup = B3579D102106B11D00DDEBD6 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - B3579D0E2106B11D00DDEBD6 /* PVLibrary-iOS */, - B3C04A8B21077B3100E7AF79 /* PVLibrary-tvOS */, - B305EFA2276B512D003AE510 /* PVLibrary-watchOS */, + B3579D0E2106B11D00DDEBD6 /* PVLibrary */, B3C04B602107867200E7AF79 /* PVLibraryTests */, + B3FAC8DA292B1DDD005E8B11 /* PVPatreon */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B305F07A276B512D003AE510 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B305F07B276B512D003AE510 /* openvgdb.sqlite in Resources */, - B305F07C276B512D003AE510 /* systems.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3579D0D2106B11D00DDEBD6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2117,16 +1672,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C04B3E21077B3100E7AF79 /* Resources */ = { + B3C04B5F2107867200E7AF79 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3C04B3F21077B3100E7AF79 /* openvgdb.sqlite in Resources */, - B3C04B4021077B3100E7AF79 /* systems.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3C04B5F2107867200E7AF79 /* Resources */ = { + B3FAC8D9292B1DDD005E8B11 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -2136,192 +1689,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B305EFBB276B512D003AE510 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B305EFBC276B512D003AE510 /* MethodProps.cpp in Sources */, - B305EFBD276B512D003AE510 /* OESQLiteDatabase.m in Sources */, - B305EFBE276B512D003AE510 /* CreateCoder.cpp in Sources */, - B305EFBF276B512D003AE510 /* PVCore.swift in Sources */, - B305EFC0276B512D003AE510 /* ByteSwap.cpp in Sources */, - B305EFC1276B512D003AE510 /* Sha256Reg.cpp in Sources */, - B305EFC2276B512D003AE510 /* InOutTempBuffer.cpp in Sources */, - B305EFC3276B512D003AE510 /* BcjCoder.cpp in Sources */, - B305EFC4276B512D003AE510 /* PpmdRegister.cpp in Sources */, - B305EFC5276B512D003AE510 /* PVCheats.swift in Sources */, - B305EFC6276B512D003AE510 /* SavePackage.swift in Sources */, - B305EFC7276B512D003AE510 /* LzmaSDKObjC.mm in Sources */, - B305EFC8276B512D003AE510 /* PVFile.swift in Sources */, - B305EFC9276B512D003AE510 /* UIImage+Scaling.m in Sources */, - B305EFCA276B512D003AE510 /* OutBuffer.cpp in Sources */, - B305EFCB276B512D003AE510 /* LzmaSDKObjCFileDecoder.cpp in Sources */, - B305EFCC276B512D003AE510 /* DirectoryWatcher2.swift in Sources */, - B305EFCD276B512D003AE510 /* LibrarySerializer.swift in Sources */, - B305EFCE276B512D003AE510 /* Lzma2Register.cpp in Sources */, - B305EFCF276B512D003AE510 /* NSData+Hashing.m in Sources */, - B305EFD0276B512D003AE510 /* CopyCoder.cpp in Sources */, - B305EFD1276B512D003AE510 /* RandGen.cpp in Sources */, - B305EFD2276B512D003AE510 /* Bcj2Coder.cpp in Sources */, - B305EFD3276B512D003AE510 /* MyAes.cpp in Sources */, - B305EFD4276B512D003AE510 /* RomDatabase.swift in Sources */, - B305EFD5276B512D003AE510 /* RealmRepresentable.swift in Sources */, - B305EFD6276B512D003AE510 /* XzCrc64Opt.c in Sources */, - B305EFD7276B512D003AE510 /* Bcj2.c in Sources */, - B305EFD8276B512D003AE510 /* LzmaHandler.cpp in Sources */, - B305EFD9276B512D003AE510 /* LzmaDec.c in Sources */, - B305EFDA276B512D003AE510 /* FileBackedConformance.swift in Sources */, - B305EFDB276B512D003AE510 /* FilterCoder.cpp in Sources */, - B305EFDC276B512D003AE510 /* Bcj2Register.cpp in Sources */, - B305EFDD276B512D003AE510 /* 7zEncode.cpp in Sources */, - B305EFDE276B512D003AE510 /* UTI.swift in Sources */, - B305EFDF276B512D003AE510 /* Cheats.swift in Sources */, - B305EFE0276B512D003AE510 /* Bra86.c in Sources */, - B305EFE1276B512D003AE510 /* Bra.c in Sources */, - B305EFE2276B512D003AE510 /* LzmaSDKObjCWriter.mm in Sources */, - B305EFE3276B512D003AE510 /* PVBIOS.swift in Sources */, - B305EFE4276B512D003AE510 /* GameImporter2.swift in Sources */, - B305EFE5276B512D003AE510 /* 7zAes.cpp in Sources */, - B305EFE6276B512D003AE510 /* LzmaSDKObjCMutableItem.mm in Sources */, - B305EFE7276B512D003AE510 /* LzFind.c in Sources */, - B305EFE8276B512D003AE510 /* LzmaDecoder.cpp in Sources */, - B305EFE9276B512D003AE510 /* DomainConvertibleType.swift in Sources */, - B305EFEA276B512D003AE510 /* ImportCandidateFile.swift in Sources */, - B305EFEB276B512D003AE510 /* LzmaSDKObjCOpenCallback.cpp in Sources */, - B305EFEC276B512D003AE510 /* 7zAesRegister.cpp in Sources */, - B305EFED276B512D003AE510 /* PVMediaCache.swift in Sources */, - B305EFEE276B512D003AE510 /* PlistDataModels.swift in Sources */, - B305EFEF276B512D003AE510 /* StringConvert.cpp in Sources */, - B305EFF0276B512D003AE510 /* BcjRegister.cpp in Sources */, - B305EFF1276B512D003AE510 /* LockedStream.cpp in Sources */, - B305EFF2276B512D003AE510 /* NSString+Hashing.m in Sources */, - B305EFF3276B512D003AE510 /* StreamObjects.cpp in Sources */, - B305EFF4276B512D003AE510 /* BraIA64.c in Sources */, - B305EFF5276B512D003AE510 /* NSFileManager+Hashing.m in Sources */, - B305EFF6276B512D003AE510 /* 7zDecode.cpp in Sources */, - B305EFF7276B512D003AE510 /* XzIn.c in Sources */, - B305EFF8276B512D003AE510 /* 7zUpdate.cpp in Sources */, - B305EFF9276B512D003AE510 /* PVGame+Spotlight.swift in Sources */, - B305EFFA276B512D003AE510 /* 7zOut.cpp in Sources */, - B305EFFB276B512D003AE510 /* PVGame+BoxArt.swift in Sources */, - B305EFFC276B512D003AE510 /* 7zHeader.cpp in Sources */, - B305EFFD276B512D003AE510 /* System.swift in Sources */, - B305EFFE276B512D003AE510 /* Xz.c in Sources */, - B305EFFF276B512D003AE510 /* MyString.cpp in Sources */, - B305F000276B512D003AE510 /* PVGameLibrary+Migration.swift in Sources */, - B305F001276B512D003AE510 /* ItemNameUtils.cpp in Sources */, - B305F002276B512D003AE510 /* LocalFile.swift in Sources */, - B305F003276B512D003AE510 /* Lzma2DecMt.c in Sources */, - B305F004276B512D003AE510 /* LzmaSDKObjCFileEncoder.cpp in Sources */, - B305F005276B512D003AE510 /* LzmaSDKObjCExtractCallback.mm in Sources */, - B305F006276B512D003AE510 /* DllExports2.cpp in Sources */, - B305F007276B512D003AE510 /* 7zCrcOpt.c in Sources */, - B305F008276B512D003AE510 /* 7zHandlerOut.cpp in Sources */, - B305F009276B512D003AE510 /* Bcj2Enc.c in Sources */, - B305F00A276B512D003AE510 /* LzmaSDKObjCReader.mm in Sources */, - B305F00B276B512D003AE510 /* BIOS.swift in Sources */, - B305F00C276B512D003AE510 /* Realm+Ext.swift in Sources */, - B305F00D276B512D003AE510 /* PVRecentGame.swift in Sources */, - B305F00E276B512D003AE510 /* Ppmd7Dec.c in Sources */, - B305F00F276B512D003AE510 /* PVSystem.swift in Sources */, - B305F010276B512D003AE510 /* PpmdEncoder.cpp in Sources */, - B305F011276B512D003AE510 /* LzmaSDKObjCUpdateCallback.mm in Sources */, - B305F012276B512D003AE510 /* PVLibrary.swift in Sources */, - B305F013276B512D003AE510 /* LzmaEnc.c in Sources */, - B305F014276B512D003AE510 /* XzDec.c in Sources */, - B305F015276B512D003AE510 /* Repository.swift in Sources */, - B305F016276B512D003AE510 /* GameImporter.swift in Sources */, - B305F017276B512D003AE510 /* PVEmulatorConfiguration+Frameworks.swift in Sources */, - B305F018276B512D003AE510 /* StringToInt.cpp in Sources */, - B305F019276B512D003AE510 /* Core.swift in Sources */, - B305F01A276B512D003AE510 /* SaveState.swift in Sources */, - B305F01B276B512D003AE510 /* Cache.swift in Sources */, - B305F01C276B512D003AE510 /* StreamUtils.cpp in Sources */, - B305F01D276B512D003AE510 /* XzCrc64Reg.cpp in Sources */, - B305F01E276B512D003AE510 /* VirtThread.cpp in Sources */, - B305F01F276B512D003AE510 /* PVGameLibrary.swift in Sources */, - B305F020276B512D003AE510 /* CWrappers.cpp in Sources */, - B305F021276B512D003AE510 /* HandlerOut.cpp in Sources */, - B305F022276B512D003AE510 /* CrcReg.cpp in Sources */, - B305F023276B512D003AE510 /* Ppmd7.c in Sources */, - B305F024276B512D003AE510 /* Protocols.swift in Sources */, - B305F025276B512D003AE510 /* LzmaSDKObjCInFile.cpp in Sources */, - B305F026276B512D003AE510 /* Lzma2Decoder.cpp in Sources */, - B305F027276B512D003AE510 /* LzmaSDKObjCOutFile.cpp in Sources */, - B305F028276B512D003AE510 /* PVGame.swift in Sources */, - B305F029276B512D003AE510 /* 7zIn.cpp in Sources */, - B305F02A276B512D003AE510 /* Game.swift in Sources */, - B305F02B276B512D003AE510 /* 7zFolderInStream.cpp in Sources */, - B305F02C276B512D003AE510 /* DirectoryWatcher.swift in Sources */, - B305F02D276B512D003AE510 /* CodecExports.cpp in Sources */, - B305F02E276B512D003AE510 /* LibrarySerializerError.swift in Sources */, - B305F02F276B512D003AE510 /* LzmaSDKObjCItem.mm in Sources */, - B305F030276B512D003AE510 /* AesOpt.c in Sources */, - B305F031276B512D003AE510 /* 7zStream.c in Sources */, - B305F032276B512D003AE510 /* LzmaEncoder.cpp in Sources */, - B305F033276B512D003AE510 /* LzmaSDKObjCBaseCoder.cpp in Sources */, - B305F034276B512D003AE510 /* 7zHandler.cpp in Sources */, - B305F035276B512D003AE510 /* Aes.c in Sources */, - B305F036276B512D003AE510 /* Lzma2Dec.c in Sources */, - B305F037276B512D003AE510 /* 7zRegister.cpp in Sources */, - B305F038276B512D003AE510 /* Wildcard.cpp in Sources */, - B305F039276B512D003AE510 /* XzCrc64.c in Sources */, - B305F03A276B512D003AE510 /* PropVariantConv.cpp in Sources */, - B305F03B276B512D003AE510 /* LimitedStreams.cpp in Sources */, - B305F03C276B512D003AE510 /* ArchiveExports.cpp in Sources */, - B305F03D276B512D003AE510 /* C_FileIO.cpp in Sources */, - B305F03E276B512D003AE510 /* IntToString.cpp in Sources */, - B305F03F276B512D003AE510 /* MyWindows.cpp in Sources */, - B305F040276B512D003AE510 /* LzmaSDKObjCExtern.mm in Sources */, - B305F041276B512D003AE510 /* PVImageFile.swift in Sources */, - B305F042276B512D003AE510 /* Ppmd7Enc.c in Sources */, - B305F043276B512D003AE510 /* XzEnc.c in Sources */, - B305F044276B512D003AE510 /* Observable+Ext.swift in Sources */, - B305F045276B512D003AE510 /* 7zCrc.c in Sources */, - B305F046276B512D003AE510 /* RunLoopThreadScheduler.swift in Sources */, - B305F047276B512D003AE510 /* ProgressUtils.cpp in Sources */, - B305F048276B512D003AE510 /* PropId.cpp in Sources */, - B305F049276B512D003AE510 /* PropVariant.cpp in Sources */, - B305F04A276B512D003AE510 /* BehaviorRelay+RangeReplaceableCollection.swift in Sources */, - B305F04B276B512D003AE510 /* PVEmulatorConfiguration.swift in Sources */, - B305F04C276B512D003AE510 /* OutStreamWithCRC.cpp in Sources */, - B305F04D276B512D003AE510 /* LzFindMt.c in Sources */, - B305F04E276B512D003AE510 /* LzmaSDKObjCError.mm in Sources */, - B305F04F276B512D003AE510 /* GamePackage.swift in Sources */, - B305F050276B512D003AE510 /* PackageResult.swift in Sources */, - B305F051276B512D003AE510 /* Time Utilities.swift in Sources */, - B305F052276B512D003AE510 /* PVAppConstants.swift in Sources */, - B305F053276B512D003AE510 /* Lzma2Enc.c in Sources */, - B305F054276B512D003AE510 /* PpmdDecoder.cpp in Sources */, - B305F055276B512D003AE510 /* LzmaSDKObjCBufferProcessor.mm in Sources */, - B305F056276B512D003AE510 /* BranchMisc.cpp in Sources */, - B305F057276B512D003AE510 /* Package.swift in Sources */, - B305F058276B512D003AE510 /* MtCoder.c in Sources */, - B305F059276B512D003AE510 /* Sha256.c in Sources */, - B305F05A276B512D003AE510 /* Lzma2Encoder.cpp in Sources */, - B305F05B276B512D003AE510 /* SystemProtocol.swift in Sources */, - B305F05C276B512D003AE510 /* iCloudSync.swift in Sources */, - B305F05D276B512D003AE510 /* LzmaRegister.cpp in Sources */, - B305F05E276B512D003AE510 /* DummyOutStream.cpp in Sources */, - B305F05F276B512D003AE510 /* 7zExtract.cpp in Sources */, - B305F060276B512D003AE510 /* 7zProperties.cpp in Sources */, - B305F061276B512D003AE510 /* Alloc.c in Sources */, - B305F062276B512D003AE510 /* CpuArch.c in Sources */, - B305F063276B512D003AE510 /* FileInfoProvider.swift in Sources */, - B305F064276B512D003AE510 /* Delta.c in Sources */, - B305F065276B512D003AE510 /* LzmaSDKObjCCommon.cpp in Sources */, - B305F066276B512D003AE510 /* Threads.c in Sources */, - B305F067276B512D003AE510 /* FileStreams.cpp in Sources */, - B305F068276B512D003AE510 /* 7zSpecStream.cpp in Sources */, - B305F069276B512D003AE510 /* MyAesReg.cpp in Sources */, - B305F06A276B512D003AE510 /* CopyRegister.cpp in Sources */, - B305F06B276B512D003AE510 /* CoderMixer2.cpp in Sources */, - B305F06C276B512D003AE510 /* BranchRegister.cpp in Sources */, - B305F06D276B512D003AE510 /* PVObject.swift in Sources */, - B305F06E276B512D003AE510 /* PVSaveState.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3579D0B2106B11D00DDEBD6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2477,6 +1844,7 @@ B378228021D41E460077E86F /* PackageResult.swift in Sources */, B3067F652106B8690091437F /* Time Utilities.swift in Sources */, B3274E602106BA1300857F52 /* PVAppConstants.swift in Sources */, + B3FAC8FD292B3240005E8B11 /* User.swift in Sources */, B3AF478221071E85002211EE /* Lzma2Enc.c in Sources */, B3AF47C421071F76002211EE /* PpmdDecoder.cpp in Sources */, B3AF476121071E28002211EE /* LzmaSDKObjCBufferProcessor.mm in Sources */, @@ -2486,6 +1854,7 @@ B3AF478921071E85002211EE /* Sha256.c in Sources */, B3AF47BF21071F76002211EE /* Lzma2Encoder.cpp in Sources */, B354E7CC219A7E620041F971 /* SystemProtocol.swift in Sources */, + B3FAC8FB292B3155005E8B11 /* PVUser.swift in Sources */, B383F3BC219BB29600DB6926 /* iCloudSync.swift in Sources */, B3AF47C321071F76002211EE /* LzmaRegister.cpp in Sources */, B3AF47A021071EE9002211EE /* DummyOutStream.cpp in Sources */, @@ -2508,197 +1877,25 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C04A9B21077B3100E7AF79 /* Sources */ = { + B3C04B5D2107867200E7AF79 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3C04A9C21077B3100E7AF79 /* MethodProps.cpp in Sources */, - B3C04A9D21077B3100E7AF79 /* OESQLiteDatabase.m in Sources */, - B3C04A9E21077B3100E7AF79 /* CreateCoder.cpp in Sources */, - B3C04A9F21077B3100E7AF79 /* PVCore.swift in Sources */, - B3C04AA021077B3100E7AF79 /* ByteSwap.cpp in Sources */, - B3C04AA121077B3100E7AF79 /* Sha256Reg.cpp in Sources */, - B3C04AA221077B3100E7AF79 /* InOutTempBuffer.cpp in Sources */, - B3C04AA321077B3100E7AF79 /* BcjCoder.cpp in Sources */, - B3C04AA421077B3100E7AF79 /* PpmdRegister.cpp in Sources */, - CF17109E2585F97000258602 /* PVCheats.swift in Sources */, - B378227B21D41E1C0077E86F /* SavePackage.swift in Sources */, - B3C04AA521077B3100E7AF79 /* LzmaSDKObjC.mm in Sources */, - B3C04AA621077B3100E7AF79 /* PVFile.swift in Sources */, - B3C04AA721077B3100E7AF79 /* UIImage+Scaling.m in Sources */, - B3C04AA821077B3100E7AF79 /* OutBuffer.cpp in Sources */, - B3C04AA921077B3100E7AF79 /* LzmaSDKObjCFileDecoder.cpp in Sources */, - B3C04AAA21077B3100E7AF79 /* DirectoryWatcher2.swift in Sources */, - B354E7D0219A8EAF0041F971 /* LibrarySerializer.swift in Sources */, - B3C04AAB21077B3100E7AF79 /* Lzma2Register.cpp in Sources */, - B3C04AAC21077B3100E7AF79 /* NSData+Hashing.m in Sources */, - B3C04AAD21077B3100E7AF79 /* CopyCoder.cpp in Sources */, - B3C04AAE21077B3100E7AF79 /* RandGen.cpp in Sources */, - B3C04AAF21077B3100E7AF79 /* Bcj2Coder.cpp in Sources */, - B3C04AB021077B3100E7AF79 /* MyAes.cpp in Sources */, - B3C04AB121077B3100E7AF79 /* RomDatabase.swift in Sources */, - B354E7A2219A77F20041F971 /* RealmRepresentable.swift in Sources */, - B3C04AB221077B3100E7AF79 /* XzCrc64Opt.c in Sources */, - B3C04AB321077B3100E7AF79 /* Bcj2.c in Sources */, - B3C04AB421077B3100E7AF79 /* LzmaHandler.cpp in Sources */, - B3C04AB521077B3100E7AF79 /* LzmaDec.c in Sources */, - B354E7AD219A78700041F971 /* FileBackedConformance.swift in Sources */, - B3C04AB621077B3100E7AF79 /* FilterCoder.cpp in Sources */, - B3C04AB721077B3100E7AF79 /* Bcj2Register.cpp in Sources */, - B3C04AB821077B3100E7AF79 /* 7zEncode.cpp in Sources */, - B3C04AB921077B3100E7AF79 /* UTI.swift in Sources */, - CF1710A22585FA3F00258602 /* Cheats.swift in Sources */, - B3C04ABA21077B3100E7AF79 /* Bra86.c in Sources */, - B3C04ABB21077B3100E7AF79 /* Bra.c in Sources */, - B3C04ABC21077B3100E7AF79 /* LzmaSDKObjCWriter.mm in Sources */, - B3C04ABD21077B3100E7AF79 /* PVBIOS.swift in Sources */, - B3CDEEB121D493AC000C55F7 /* GameImporter2.swift in Sources */, - B3C04ABE21077B3100E7AF79 /* 7zAes.cpp in Sources */, - B3C04ABF21077B3100E7AF79 /* LzmaSDKObjCMutableItem.mm in Sources */, - B3C04AC021077B3100E7AF79 /* LzFind.c in Sources */, - B3C04AC121077B3100E7AF79 /* LzmaDecoder.cpp in Sources */, - B354E7A4219A77F20041F971 /* DomainConvertibleType.swift in Sources */, - B3C04AC221077B3100E7AF79 /* ImportCandidateFile.swift in Sources */, - B3C04AC321077B3100E7AF79 /* LzmaSDKObjCOpenCallback.cpp in Sources */, - B3C04AC421077B3100E7AF79 /* 7zAesRegister.cpp in Sources */, - B3C04AC521077B3100E7AF79 /* PVMediaCache.swift in Sources */, - B354E793219A76C80041F971 /* PlistDataModels.swift in Sources */, - B3C04AC621077B3100E7AF79 /* StringConvert.cpp in Sources */, - B3C04AC721077B3100E7AF79 /* BcjRegister.cpp in Sources */, - B3C04AC821077B3100E7AF79 /* LockedStream.cpp in Sources */, - B3C04AC921077B3100E7AF79 /* NSString+Hashing.m in Sources */, - B3C04ACA21077B3100E7AF79 /* StreamObjects.cpp in Sources */, - B3C04ACC21077B3100E7AF79 /* BraIA64.c in Sources */, - B3C04ACD21077B3100E7AF79 /* NSFileManager+Hashing.m in Sources */, - B3C04ACE21077B3100E7AF79 /* 7zDecode.cpp in Sources */, - B3C04ACF21077B3100E7AF79 /* XzIn.c in Sources */, - B3C04AD021077B3100E7AF79 /* 7zUpdate.cpp in Sources */, - B3C04AD121077B3100E7AF79 /* PVGame+Spotlight.swift in Sources */, - B3C04AD221077B3100E7AF79 /* 7zOut.cpp in Sources */, - B3C04AD321077B3100E7AF79 /* PVGame+BoxArt.swift in Sources */, - B3C04AD421077B3100E7AF79 /* 7zHeader.cpp in Sources */, - B354E7CA219A7E470041F971 /* System.swift in Sources */, - B3C04AD521077B3100E7AF79 /* Xz.c in Sources */, - B3C04AD621077B3100E7AF79 /* MyString.cpp in Sources */, - 11AFB2B424867482000A3922 /* PVGameLibrary+Migration.swift in Sources */, - B3C04AD721077B3100E7AF79 /* ItemNameUtils.cpp in Sources */, - B354E79D219A76C80041F971 /* LocalFile.swift in Sources */, - B3C04AD821077B3100E7AF79 /* Lzma2DecMt.c in Sources */, - B3C04AD921077B3100E7AF79 /* LzmaSDKObjCFileEncoder.cpp in Sources */, - B3C04ADA21077B3100E7AF79 /* LzmaSDKObjCExtractCallback.mm in Sources */, - B3C04ADB21077B3100E7AF79 /* DllExports2.cpp in Sources */, - B3C04ADC21077B3100E7AF79 /* 7zCrcOpt.c in Sources */, - B3C04ADD21077B3100E7AF79 /* 7zHandlerOut.cpp in Sources */, - B3C04ADE21077B3100E7AF79 /* Bcj2Enc.c in Sources */, - B3C04ADF21077B3100E7AF79 /* LzmaSDKObjCReader.mm in Sources */, - B354E791219A76C80041F971 /* BIOS.swift in Sources */, - B354E7B9219A796A0041F971 /* Realm+Ext.swift in Sources */, - B3C04AE021077B3100E7AF79 /* PVRecentGame.swift in Sources */, - B3C04AE121077B3100E7AF79 /* Ppmd7Dec.c in Sources */, - B3C04AE221077B3100E7AF79 /* PVSystem.swift in Sources */, - B3C04AE321077B3100E7AF79 /* PpmdEncoder.cpp in Sources */, - B3C04AE421077B3100E7AF79 /* LzmaSDKObjCUpdateCallback.mm in Sources */, - B3C04AE521077B3100E7AF79 /* PVLibrary.swift in Sources */, - B3C04AE721077B3100E7AF79 /* LzmaEnc.c in Sources */, - B3C04AE821077B3100E7AF79 /* XzDec.c in Sources */, - B354E7A9219A78420041F971 /* Repository.swift in Sources */, - B3C04AE921077B3100E7AF79 /* GameImporter.swift in Sources */, - B3C04B992107991200E7AF79 /* PVEmulatorConfiguration+Frameworks.swift in Sources */, - B3C04AEA21077B3100E7AF79 /* StringToInt.cpp in Sources */, - B354E795219A76C80041F971 /* Core.swift in Sources */, - B354E797219A76C80041F971 /* SaveState.swift in Sources */, - B354E7BC219A7ADC0041F971 /* Cache.swift in Sources */, - B3C04AEB21077B3100E7AF79 /* StreamUtils.cpp in Sources */, - B3C04AEC21077B3100E7AF79 /* XzCrc64Reg.cpp in Sources */, - B3C04AED21077B3100E7AF79 /* VirtThread.cpp in Sources */, - 112E7E30247EF3840050431C /* PVGameLibrary.swift in Sources */, - B3C04AEE21077B3100E7AF79 /* CWrappers.cpp in Sources */, - B3C04AEF21077B3100E7AF79 /* HandlerOut.cpp in Sources */, - B3C04AF021077B3100E7AF79 /* CrcReg.cpp in Sources */, - B3C04AF121077B3100E7AF79 /* Ppmd7.c in Sources */, - B354E799219A76C80041F971 /* Protocols.swift in Sources */, - B3C04AF221077B3100E7AF79 /* LzmaSDKObjCInFile.cpp in Sources */, - B3C04AF321077B3100E7AF79 /* Lzma2Decoder.cpp in Sources */, - B3C04AF421077B3100E7AF79 /* LzmaSDKObjCOutFile.cpp in Sources */, - B3C04AF521077B3100E7AF79 /* PVGame.swift in Sources */, - B3C04AF621077B3100E7AF79 /* 7zIn.cpp in Sources */, - B354E78F219A76C80041F971 /* Game.swift in Sources */, - B3C04AF721077B3100E7AF79 /* 7zFolderInStream.cpp in Sources */, - B3CDEECC21D4CF61000C55F7 /* DirectoryWatcher.swift in Sources */, - B3C04AF821077B3100E7AF79 /* CodecExports.cpp in Sources */, - B378228621D41E9B0077E86F /* LibrarySerializerError.swift in Sources */, - B3C04AF921077B3100E7AF79 /* LzmaSDKObjCItem.mm in Sources */, - B3C04AFA21077B3100E7AF79 /* AesOpt.c in Sources */, - B3C04AFB21077B3100E7AF79 /* 7zStream.c in Sources */, - B3C04AFC21077B3100E7AF79 /* LzmaEncoder.cpp in Sources */, - B3C04AFD21077B3100E7AF79 /* LzmaSDKObjCBaseCoder.cpp in Sources */, - B3C04AFE21077B3100E7AF79 /* 7zHandler.cpp in Sources */, - B3C04AFF21077B3100E7AF79 /* Aes.c in Sources */, - B3C04B0021077B3100E7AF79 /* Lzma2Dec.c in Sources */, - B3C04B0121077B3100E7AF79 /* 7zRegister.cpp in Sources */, - B3C04B0221077B3100E7AF79 /* Wildcard.cpp in Sources */, - B3C04B0321077B3100E7AF79 /* XzCrc64.c in Sources */, - B3C04B0421077B3100E7AF79 /* PropVariantConv.cpp in Sources */, - B3C04B0521077B3100E7AF79 /* LimitedStreams.cpp in Sources */, - B3C04B0621077B3100E7AF79 /* ArchiveExports.cpp in Sources */, - B3C04B0721077B3100E7AF79 /* C_FileIO.cpp in Sources */, - B3C04B0821077B3100E7AF79 /* IntToString.cpp in Sources */, - B3C04B0921077B3100E7AF79 /* MyWindows.cpp in Sources */, - B3C04B0A21077B3100E7AF79 /* LzmaSDKObjCExtern.mm in Sources */, - B3C04B0B21077B3100E7AF79 /* PVImageFile.swift in Sources */, - B3C04B0C21077B3100E7AF79 /* Ppmd7Enc.c in Sources */, - B3C04B0D21077B3100E7AF79 /* XzEnc.c in Sources */, - B354E7B7219A796A0041F971 /* Observable+Ext.swift in Sources */, - B3C04B0E21077B3100E7AF79 /* 7zCrc.c in Sources */, - B354E7B5219A796A0041F971 /* RunLoopThreadScheduler.swift in Sources */, - B3C04B0F21077B3100E7AF79 /* ProgressUtils.cpp in Sources */, - B3C04B1021077B3100E7AF79 /* PropId.cpp in Sources */, - B3C04B1121077B3100E7AF79 /* PropVariant.cpp in Sources */, - B30E7AEC26E480310051DC6A /* BehaviorRelay+RangeReplaceableCollection.swift in Sources */, - B3C04B1221077B3100E7AF79 /* PVEmulatorConfiguration.swift in Sources */, - B3C04B1321077B3100E7AF79 /* OutStreamWithCRC.cpp in Sources */, - B3C04B1421077B3100E7AF79 /* LzFindMt.c in Sources */, - B3C04B1521077B3100E7AF79 /* LzmaSDKObjCError.mm in Sources */, - B378227E21D41E310077E86F /* GamePackage.swift in Sources */, - B378228121D41E460077E86F /* PackageResult.swift in Sources */, - B3C04B1621077B3100E7AF79 /* Time Utilities.swift in Sources */, - B3C04B1721077B3100E7AF79 /* PVAppConstants.swift in Sources */, - B3C04B1821077B3100E7AF79 /* Lzma2Enc.c in Sources */, - B3C04B1921077B3100E7AF79 /* PpmdDecoder.cpp in Sources */, - B3C04B1A21077B3100E7AF79 /* LzmaSDKObjCBufferProcessor.mm in Sources */, - B3C04B1B21077B3100E7AF79 /* BranchMisc.cpp in Sources */, - B3CDEEB421D497CD000C55F7 /* Package.swift in Sources */, - B3C04B1C21077B3100E7AF79 /* MtCoder.c in Sources */, - B3C04B1D21077B3100E7AF79 /* Sha256.c in Sources */, - B3C04B1E21077B3100E7AF79 /* Lzma2Encoder.cpp in Sources */, - B354E7CD219A7E620041F971 /* SystemProtocol.swift in Sources */, - B383F3BD219BB29600DB6926 /* iCloudSync.swift in Sources */, - B3C04B1F21077B3100E7AF79 /* LzmaRegister.cpp in Sources */, - B3C04B2021077B3100E7AF79 /* DummyOutStream.cpp in Sources */, - B3C04B2121077B3100E7AF79 /* 7zExtract.cpp in Sources */, - B3C04B2221077B3100E7AF79 /* 7zProperties.cpp in Sources */, - B3C04B2321077B3100E7AF79 /* Alloc.c in Sources */, - B3C04B2521077B3100E7AF79 /* CpuArch.c in Sources */, - B354E79B219A76C80041F971 /* FileInfoProvider.swift in Sources */, - B3C04B2621077B3100E7AF79 /* Delta.c in Sources */, - B3C04B2721077B3100E7AF79 /* LzmaSDKObjCCommon.cpp in Sources */, - B3C04B2821077B3100E7AF79 /* Threads.c in Sources */, - B3C04B2921077B3100E7AF79 /* FileStreams.cpp in Sources */, - B3C04B2A21077B3100E7AF79 /* 7zSpecStream.cpp in Sources */, - B3C04B2B21077B3100E7AF79 /* MyAesReg.cpp in Sources */, - B3C04B2C21077B3100E7AF79 /* CopyRegister.cpp in Sources */, - B3C04B2D21077B3100E7AF79 /* CoderMixer2.cpp in Sources */, - B3C04B2E21077B3100E7AF79 /* BranchRegister.cpp in Sources */, - B3C04B2F21077B3100E7AF79 /* PVObject.swift in Sources */, - B3C04B3021077B3100E7AF79 /* PVSaveState.swift in Sources */, + B3C04B642107867200E7AF79 /* PVLibraryTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3C04B5D2107867200E7AF79 /* Sources */ = { + B3FAC8D7292B1DDD005E8B11 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3C04B642107867200E7AF79 /* PVLibraryTests.swift in Sources */, + B3FAC8E9292B1E1B005E8B11 /* Patron.swift in Sources */, + B3FAC8ED292B1E1B005E8B11 /* PatreonAPI.swift in Sources */, + B3FAC8EC292B1E1B005E8B11 /* PatreonAccount.swift in Sources */, + B3FAC8EE292B1E1B005E8B11 /* Tier.swift in Sources */, + B3FAC8EA292B1E1B005E8B11 /* Campaign.swift in Sources */, + B3FAC8EB292B1E1B005E8B11 /* Benefit.swift in Sources */, + B3FAC8F6292B2551005E8B11 /* Keychain.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2707,128 +1904,17 @@ /* Begin PBXTargetDependency section */ B3C04B682107867200E7AF79 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3579D0E2106B11D00DDEBD6 /* PVLibrary-iOS */; + target = B3579D0E2106B11D00DDEBD6 /* PVLibrary */; targetProxy = B3C04B672107867200E7AF79 /* PBXContainerItemProxy */; }; + B3FAC8F2292B1E1C005E8B11 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3579D0E2106B11D00DDEBD6 /* PVLibrary */; + targetProxy = B3FAC8F1292B1E1C005E8B11 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - B305F07E276B512D003AE510 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "LZMASDKOBJC=1", - "LZMASDKOBJC_OMIT_UNUSED_CODE=1", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DT_TOOLCHAIN_DIR)/usr/include\"", - /usr/include/libxml2, - ); - INFOPLIST_FILE = "PVLibrary-tvOS copy-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVLibrary; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Debug; - }; - B305F07F276B512D003AE510 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "LZMASDKOBJC=1", - "LZMASDKOBJC_OMIT_UNUSED_CODE=1", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DT_TOOLCHAIN_DIR)/usr/include\"", - /usr/include/libxml2, - ); - INFOPLIST_FILE = "PVLibrary-tvOS copy-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVLibrary; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Release; - }; - B305F080276B512D003AE510 /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "LZMASDKOBJC=1", - "LZMASDKOBJC_OMIT_UNUSED_CODE=1", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DT_TOOLCHAIN_DIR)/usr/include\"", - /usr/include/libxml2, - ); - INFOPLIST_FILE = "PVLibrary-tvOS copy-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVLibrary; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Archive; - }; B324C5352191A78D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; baseConfigurationReference = B317380127841959002D3ACD /* Build.xcconfig */; @@ -2878,12 +1964,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2894,6 +1981,7 @@ B324C5362191A78D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; APPLICATION_EXTENSION_API_ONLY = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = "Apple Development"; @@ -2916,6 +2004,7 @@ ); INFOPLIST_FILE = PVLibrary/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -2928,58 +2017,21 @@ PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_WORKSPACE = YES; }; name = Archive; }; - B324C5372191A78D009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "LZMASDKOBJC=1", - "LZMASDKOBJC_OMIT_UNUSED_CODE=1", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DT_TOOLCHAIN_DIR)/usr/include\"", - /usr/include/libxml2, - ); - INFOPLIST_FILE = PVLibrary/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVLibrary; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; - }; - name = Archive; - }; B324C5382191A78D009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = PVLibraryTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -3050,13 +2102,14 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -3112,13 +2165,14 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -3129,6 +2183,7 @@ B3579D182106B11D00DDEBD6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; APPLICATION_EXTENSION_API_ONLY = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = "Apple Development"; @@ -3151,6 +2206,7 @@ ); INFOPLIST_FILE = PVLibrary/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -3163,9 +2219,11 @@ PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_WORKSPACE = YES; }; name = Debug; @@ -3173,6 +2231,7 @@ B3579D192106B11D00DDEBD6 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; APPLICATION_EXTENSION_API_ONLY = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = "Apple Development"; @@ -3195,6 +2254,7 @@ ); INFOPLIST_FILE = PVLibrary/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -3207,147 +2267,185 @@ PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VALIDATE_WORKSPACE = YES; }; name = Release; }; - B3C04B4221077B3100E7AF79 /* Debug */ = { + B3C04B6A2107867200E7AF79 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "LZMASDKOBJC=1", - "LZMASDKOBJC_OMIT_UNUSED_CODE=1", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DT_TOOLCHAIN_DIR)/usr/include\"", - /usr/include/libxml2, - ); - INFOPLIST_FILE = PVLibrary/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = PVLibraryTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVLibrary; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibraryTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_WORKSPACE = YES; }; name = Debug; }; - B3C04B4321077B3100E7AF79 /* Release */ = { + B3C04B6B2107867200E7AF79 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "LZMASDKOBJC=1", - "LZMASDKOBJC_OMIT_UNUSED_CODE=1", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DT_TOOLCHAIN_DIR)/usr/include\"", - /usr/include/libxml2, - ); - INFOPLIST_FILE = PVLibrary/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = PVLibraryTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVLIBRARY_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVLibrary; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibraryTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_WORKSPACE = YES; }; name = Release; }; - B3C04B6A2107867200E7AF79 /* Debug */ = { + B3FAC8DF292B1DDD005E8B11 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = PVLibraryTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Provenance Emu. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibraryTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 13.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.provenance-emu.PVPatreon"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = auto; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_WORKSPACE = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4"; }; name = Debug; }; - B3C04B6B2107867200E7AF79 /* Release */ = { + B3FAC8E0292B1DDD005E8B11 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = PVLibraryTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Provenance Emu. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibraryTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 13.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.provenance-emu.PVPatreon"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = auto; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_WORKSPACE = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4"; }; name = Release; }; + B3FAC8E1292B1DDD005E8B11 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Provenance Emu. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 13.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.provenance-emu.PVPatreon"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = auto; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4"; + }; + name = Archive; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B305F07D276B512D003AE510 /* Build configuration list for PBXNativeTarget "PVLibrary-watchOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B305F07E276B512D003AE510 /* Debug */, - B305F07F276B512D003AE510 /* Release */, - B305F080276B512D003AE510 /* Archive */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B3579D092106B11D00DDEBD6 /* Build configuration list for PBXProject "PVLibrary" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -3358,7 +2456,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3579D172106B11D00DDEBD6 /* Build configuration list for PBXNativeTarget "PVLibrary-iOS" */ = { + B3579D172106B11D00DDEBD6 /* Build configuration list for PBXNativeTarget "PVLibrary" */ = { isa = XCConfigurationList; buildConfigurations = ( B3579D182106B11D00DDEBD6 /* Debug */, @@ -3368,22 +2466,22 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C04B4121077B3100E7AF79 /* Build configuration list for PBXNativeTarget "PVLibrary-tvOS" */ = { + B3C04B692107867200E7AF79 /* Build configuration list for PBXNativeTarget "PVLibraryTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3C04B4221077B3100E7AF79 /* Debug */, - B3C04B4321077B3100E7AF79 /* Release */, - B324C5372191A78D009F4EDC /* Archive */, + B3C04B6A2107867200E7AF79 /* Debug */, + B3C04B6B2107867200E7AF79 /* Release */, + B324C5382191A78D009F4EDC /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C04B692107867200E7AF79 /* Build configuration list for PBXNativeTarget "PVLibraryTests" */ = { + B3FAC8E2292B1DDD005E8B11 /* Build configuration list for PBXNativeTarget "PVPatreon" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3C04B6A2107867200E7AF79 /* Debug */, - B3C04B6B2107867200E7AF79 /* Release */, - B324C5382191A78D009F4EDC /* Archive */, + B3FAC8DF292B1DDD005E8B11 /* Debug */, + B3FAC8E0292B1DDD005E8B11 /* Release */, + B3FAC8E1292B1DDD005E8B11 /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3391,38 +2489,6 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - B305EFA4276B512D003AE510 /* XCRemoteSwiftPackageReference "RxSwift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/ReactiveX/RxSwift.git"; - requirement = { - kind = exactVersion; - version = 6.2.0; - }; - }; - B305EFA7276B512D003AE510 /* XCRemoteSwiftPackageReference "RxRealm" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/RxSwiftCommunity/RxRealm.git"; - requirement = { - kind = exactVersion; - version = 5.0.3; - }; - }; - B305EFA9276B512D003AE510 /* XCRemoteSwiftPackageReference "SQLite.swift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/stephencelis/SQLite.swift.git"; - requirement = { - kind = exactVersion; - version = 0.12.2; - }; - }; - B305EFAB276B512D003AE510 /* XCRemoteSwiftPackageReference "ZipArchive" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/ZipArchive/ZipArchive"; - requirement = { - kind = exactVersion; - version = 2.3.0; - }; - }; B336B90426B39ABA00960A81 /* XCRemoteSwiftPackageReference "RxRealm" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/RxSwiftCommunity/RxRealm.git"; @@ -3455,69 +2521,27 @@ minimumVersion = 2.3.0; }; }; + B3FAC8F7292B26EA005E8B11 /* XCRemoteSwiftPackageReference "KeychainAccess" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess.git"; + requirement = { + branch = master; + kind = branch; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - B3014FA327B487F0006AC79B /* Differentiator */ = { - isa = XCSwiftPackageProductDependency; - package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = Differentiator; - }; - B3014FA527B487FD006AC79B /* Differentiator */ = { - isa = XCSwiftPackageProductDependency; - package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = Differentiator; - }; - B305EFA3276B512D003AE510 /* RxSwift */ = { - isa = XCSwiftPackageProductDependency; - package = B305EFA4276B512D003AE510 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxSwift; - }; - B305EFA5276B512D003AE510 /* RxCocoa */ = { - isa = XCSwiftPackageProductDependency; - package = B305EFA4276B512D003AE510 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxCocoa; - }; - B305EFA6276B512D003AE510 /* RxRealm */ = { - isa = XCSwiftPackageProductDependency; - package = B305EFA7276B512D003AE510 /* XCRemoteSwiftPackageReference "RxRealm" */; - productName = RxRealm; - }; - B305EFA8276B512D003AE510 /* SQLite */ = { - isa = XCSwiftPackageProductDependency; - package = B305EFA9276B512D003AE510 /* XCRemoteSwiftPackageReference "SQLite.swift" */; - productName = SQLite; - }; - B305EFAA276B512D003AE510 /* ZipArchive */ = { - isa = XCSwiftPackageProductDependency; - package = B305EFAB276B512D003AE510 /* XCRemoteSwiftPackageReference "ZipArchive" */; - productName = ZipArchive; - }; - B3128065274C658E00550720 /* ZipArchive */ = { - isa = XCSwiftPackageProductDependency; - package = B3A3203F27209B4300F338F6 /* XCRemoteSwiftPackageReference "ZipArchive" */; - productName = ZipArchive; - }; B336B90526B39ABA00960A81 /* RxRealm */ = { isa = XCSwiftPackageProductDependency; package = B336B90426B39ABA00960A81 /* XCRemoteSwiftPackageReference "RxRealm" */; productName = RxRealm; }; - B336B90B26B39ACB00960A81 /* RxRealm */ = { - isa = XCSwiftPackageProductDependency; - package = B336B90426B39ABA00960A81 /* XCRemoteSwiftPackageReference "RxRealm" */; - productName = RxRealm; - }; B336B90E26B39BCF00960A81 /* SQLite */ = { isa = XCSwiftPackageProductDependency; package = B336B90D26B39BCF00960A81 /* XCRemoteSwiftPackageReference "SQLite.swift" */; productName = SQLite; }; - B336B91026B39BDA00960A81 /* SQLite */ = { - isa = XCSwiftPackageProductDependency; - package = B336B90D26B39BCF00960A81 /* XCRemoteSwiftPackageReference "SQLite.swift" */; - productName = SQLite; - }; B37B4DEF27B2292F0068F8D1 /* Differentiator */ = { isa = XCSwiftPackageProductDependency; package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; @@ -3533,10 +2557,10 @@ package = B3A3203F27209B4300F338F6 /* XCRemoteSwiftPackageReference "ZipArchive" */; productName = ZipArchive; }; - EF7D4AA427B44FA7002528B7 /* RxDataSources */ = { + B3FAC8F8292B26EA005E8B11 /* KeychainAccess */ = { isa = XCSwiftPackageProductDependency; - package = B37B4DEE27B2292F0068F8D1 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = RxDataSources; + package = B3FAC8F7292B26EA005E8B11 /* XCRemoteSwiftPackageReference "KeychainAccess" */; + productName = KeychainAccess; }; /* End XCSwiftPackageProductDependency section */ }; diff --git a/PVLibrary/PVLibrary.xcodeproj/xcshareddata/xcschemes/PVLibrary.xcscheme b/PVLibrary/PVLibrary.xcodeproj/xcshareddata/xcschemes/PVLibrary.xcscheme index 4590299455..e7662cef32 100644 --- a/PVLibrary/PVLibrary.xcodeproj/xcshareddata/xcschemes/PVLibrary.xcscheme +++ b/PVLibrary/PVLibrary.xcodeproj/xcshareddata/xcschemes/PVLibrary.xcscheme @@ -4,7 +4,7 @@ version = "1.3"> + buildImplicitDependencies = "YES"> @@ -30,7 +30,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3579D0E2106B11D00DDEBD6" BuildableName = "PVLibrary.framework" - BlueprintName = "PVLibrary-iOS" + BlueprintName = "PVLibrary" ReferencedContainer = "container:PVLibrary.xcodeproj"> @@ -46,7 +46,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3579D0E2106B11D00DDEBD6" BuildableName = "PVLibrary.framework" - BlueprintName = "PVLibrary-iOS" + BlueprintName = "PVLibrary" ReferencedContainer = "container:PVLibrary.xcodeproj"> @@ -78,7 +78,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3579D0E2106B11D00DDEBD6" BuildableName = "PVLibrary.framework" - BlueprintName = "PVLibrary-iOS" + BlueprintName = "PVLibrary" ReferencedContainer = "container:PVLibrary.xcodeproj"> @@ -94,7 +94,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3579D0E2106B11D00DDEBD6" BuildableName = "PVLibrary.framework" - BlueprintName = "PVLibrary-iOS" + BlueprintName = "PVLibrary" ReferencedContainer = "container:PVLibrary.xcodeproj"> diff --git a/PVLibrary/PVLibrary.xcodeproj/xcshareddata/xcschemes/PVPatreon.xcscheme b/PVLibrary/PVLibrary.xcodeproj/xcshareddata/xcschemes/PVPatreon.xcscheme new file mode 100644 index 0000000000..841c5c5f87 --- /dev/null +++ b/PVLibrary/PVLibrary.xcodeproj/xcshareddata/xcschemes/PVPatreon.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift index 760434f718..54fab89575 100644 --- a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift +++ b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration+Frameworks.swift @@ -8,13 +8,28 @@ import Foundation import PVSupport import RealmSwift +#if canImport(UIKit) import UIKit +#endif + +extension Sequence where Iterator.Element : Hashable { + + func intersects(with sequence: S) -> Bool + where S.Iterator.Element == Iterator.Element + { + let sequenceSet = Set(sequence) + return self.contains(where: sequenceSet.contains) + } +} // MARK: - System Scanner public extension PVEmulatorConfiguration { static var coreClasses: [ClassInfo] { - let motherClassInfo = ClassInfo(PVEmulatorCore.self) + let libRetroCoreClass: AnyClass? = NSClassFromString("PVLibRetroCore") + let libRetroGLESCoreClass: AnyClass? = NSClassFromString("PVLibRetroGLESCore") + + let motherClassInfo = [ClassInfo(PVEmulatorCore.self), ClassInfo(libRetroCoreClass), ClassInfo(libRetroGLESCoreClass)] var subclassList = [ClassInfo]() var count = UInt32(0) @@ -22,16 +37,24 @@ public extension PVEmulatorConfiguration { let classList = UnsafeBufferPointer(start: classListPointer, count: Int(count)) for i in 0 ..< Int(count) { - if let classInfo = ClassInfo(classList[i], withSuperclass: "PVEmulatorCore"), - let superclassInfo = classInfo.superclassInfo, - superclassInfo == motherClassInfo { + if let classInfo = ClassInfo(classList[i], withSuperclass: ["PVEmulatorCore", "PVLibRetroCore", "PVLibRetroGLESCore"]), let superclassesInfo = classInfo.superclassesInfo, motherClassInfo.intersects(with: motherClassInfo) { subclassList.append(classInfo) } } - return subclassList.filter { $0.className != "PVEmulatorCore" && $0.superclassInfo?.className == "PVEmulatorCore" } + let filteredList = subclassList.filter { + let notMasterClass = $0.className != "PVEmulatorCore" + let className: String = $0.superclassInfo?.className ?? "" + let inheritsClass = ["PVEmulatorCore","PVLibRetroCore", "PVLibRetroGLESCore"].contains(className) + return notMasterClass && inheritsClass + } + + let classes = filteredList.map { $0.className }.joined(separator: ",") + ILOG("\(classes)") + + return filteredList; } - + class func updateCores(fromPlists plists: [URL]) { let database = RomDatabase.sharedInstance let decoder = PropertyListDecoder() @@ -41,13 +64,22 @@ public extension PVEmulatorConfiguration { let data = try Data(contentsOf: plist) let core = try decoder.decode(CorePlistEntry.self, from: data) let supportedSystems = database.all(PVSystem.self, filter: NSPredicate(format: "identifier IN %@", argumentArray: [core.PVSupportedSystems])) - if let disabled = core.PVDisabled, disabled, PVSettingsModel.shared.debugOptions.experimentalCores { + if let disabled = core.PVDisabled, disabled, !PVSettingsModel.shared.debugOptions.unsupportedCores { // Do nothing + ILOG("Skipping disabled core \(core.PVCoreIdentifier)") } else { + DLOG("Importing core \(core.PVCoreIdentifier)") let newCore = PVCore(withIdentifier: core.PVCoreIdentifier, principleClass: core.PVPrincipleClass, supportedSystems: Array(supportedSystems), name: core.PVProjectName, url: core.PVProjectURL, version: core.PVProjectVersion, disabled: core.PVDisabled ?? false) database.refresh() try newCore.add(update: true) } + } catch let error as DecodingError { + switch error { + case let .keyNotFound(key, context): + ELOG("Failed to parse plist \(plist.path), \(key), \(context.codingPath): \(error)") + default: + ELOG("Failed to parse plist \(plist.path), : \(error)") + } } catch { // Handle error ELOG("Failed to parse plist \(plist.path) : \(error)") @@ -89,6 +121,13 @@ public extension PVEmulatorConfiguration { } } } + } catch let error as DecodingError { + switch error { + case let .keyNotFound(key, context): + ELOG("Failed to parse plist \(plist.path)\n, key:\(key),\n codingPath: \(context.codingPath.map { $0.stringValue }.joined(separator: ","))\nError: \(error)") + default: + ELOG("Failed to parse plist \(plist.path), : \(error)") + } } catch { // Handle error ELOG("Failed to parse plist \(plist.path) : \(error)") diff --git a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift index 0236861029..18b376699c 100644 --- a/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift +++ b/PVLibrary/PVLibrary/Configuration/PVEmulatorConfiguration.swift @@ -47,16 +47,22 @@ public struct SystemDictionaryKeys { } } -public enum SystemIdentifier: String, CaseIterable { +public enum SystemIdentifier: String, CaseIterable, Codable { case _3DO = "com.provenance.3DO" + case _3DS = "com.provenance.3ds" case Atari2600 = "com.provenance.2600" case Atari5200 = "com.provenance.5200" case Atari7800 = "com.provenance.7800" - case Atari8bit = "com.provenance.atari8bit" + case Atari8bit = "com.provenance.atari8bit" case AtariJaguar = "com.provenance.jaguar" + case AtariJaguarCD = "com.provenance.jaguarcd" + case AtariST = "com.provenance.atarist" + case C64 = "com.provenance.c64" case ColecoVision = "com.provenance.colecovision" - case DS = "com.provenance.ds" + case DOS = "com.provenance.dos" case Dreamcast = "com.provenance.dreamcast" + case DS = "com.provenance.ds" + case EP128 = "com.provenance.ep128" case FDS = "com.provenance.fds" case GameCube = "com.provenance.gamecube" case GameGear = "com.provenance.gamegear" @@ -66,13 +72,19 @@ public enum SystemIdentifier: String, CaseIterable { case Genesis = "com.provenance.genesis" case Intellivision = "com.provenance.intellivision" case Lynx = "com.provenance.lynx" + case Macintosh = "com.provenance.macintosh" case MasterSystem = "com.provenance.mastersystem" + case MegaDuck = "com.provenance.megaduck" + case MSX = "com.provenance.msx" + case MSX2 = "com.provenance.msx2" + case Music = "com.provenance.music" case N64 = "com.provenance.n64" - case NES = "com.provenance.nes" case NeoGeo = "com.provenance.neogeo" + case NES = "com.provenance.nes" case NGP = "com.provenance.ngp" case NGPC = "com.provenance.ngpc" case Odyssey2 = "com.provenance.odyssey2" + case PalmOS = "com.provenance.palmos" case PCE = "com.provenance.pce" case PCECD = "com.provenance.pcecd" case PCFX = "com.provenance.pcfx" @@ -87,14 +99,48 @@ public enum SystemIdentifier: String, CaseIterable { case SG1000 = "com.provenance.sg1000" case SGFX = "com.provenance.sgfx" case SNES = "com.provenance.snes" + case Supervision = "com.provenance.supervision" + case TIC80 = "com.provenance.tic80" case Vectrex = "com.provenance.vectrex" case VirtualBoy = "com.provenance.vb" + case Wii = "com.provenance.wii" case WonderSwan = "com.provenance.ws" case WonderSwanColor = "com.provenance.wsc" + case ZXSpectrum = "com.provenance.zxspectrum" case Unknown - static public let betas: [SystemIdentifier] = [.ColecoVision, .Dreamcast, .DS, .Atari8bit, .Intellivision, ._3DO, .Vectrex, .PSP, .PS2, .PS3, .GameCube] + static public let betas: [SystemIdentifier] = + [ + ._3DO, + .Atari8bit, + .AtariJaguarCD, + .AtariST, + .C64, + .ColecoVision, + .DOS, + .Dreamcast, + .DS, + .EP128, + .GameCube, + .Intellivision, + .Macintosh, + .MSX, + .MSX2, + .Odyssey2, + + .Supervision, + .Vectrex, + .ZXSpectrum, + ] + + static public let unsupported: [SystemIdentifier] = + [ + .PS2, + .PS3, + .PSP, + .Wii, + ] // MARK: Assistance accessors for properties public var system: PVSystem? { @@ -239,21 +285,29 @@ public final class PVEmulatorConfiguration: NSObject { public static func initICloud() { DispatchQueue.global(qos: .background).async { - ILOG("iCloudContainerDirectory: \(PVEmulatorConfiguration.iCloudContainerDirectory)") + let dir = PVEmulatorConfiguration.iCloudContainerDirectory + DLOG("iCloudContainerDirectory: \(String(describing: dir))") } } + + static var iCloudContainerDirectoryCached: URL? = { + if Thread.isMainThread { + var container: URL? + DispatchQueue.global(qos: .background).sync { + container = FileManager.default.url(forUbiquityContainerIdentifier: Constants.iCloud.containerIdentifier) + } + return container + } else { + let container = FileManager.default.url(forUbiquityContainerIdentifier: Constants.iCloud.containerIdentifier) + return container + } + }() - static var iCloudContainerDirectoryCached: URL? /// This should be called on a background thread static var iCloudContainerDirectory: URL? { - guard iCloudContainerDirectoryCached == nil else { + get { return iCloudContainerDirectoryCached } - if Thread.isMainThread { - WLOG("Warning, this should only be called on background threads.") - } - iCloudContainerDirectoryCached = FileManager.default.url(forUbiquityContainerIdentifier: Constants.iCloud.containerIdentifier) - return iCloudContainerDirectoryCached } /// This should be called on a background thread @@ -393,7 +447,7 @@ public struct ClassInfo: CustomStringConvertible, Equatable { public let className: String public let bundle: Bundle - public init?(_ classObject: AnyClass?, withSuperclass superclass: String? = nil) { + public init?(_ classObject: AnyClass?, withSuperclass superclass: [String]? = nil) { guard let classObject = classObject else { return nil } self.classObject = classObject @@ -402,12 +456,30 @@ public struct ClassInfo: CustomStringConvertible, Equatable { let classString = String(cString: cName) className = classString - if let superclass = superclass, ClassInfo.superClassName(forClass: classObject) != superclass { + if let superclass = superclass, + let superclassName = ClassInfo.superClassName(forClass: classObject), + !superclass.contains(superclassName) { return nil } bundle = Bundle(for: classObject) } + + public var superclassesInfo: [ClassInfo]? { + var classInfos = [ClassInfo]() + var superClass: ClassInfo? = superclassInfo + + while(superClass != nil) { + if let classInfo = ClassInfo(superClass?.classObject) { + classInfos.append(classInfo) + superClass = classInfo.superclassInfo + } else { + superClass = nil + } + } + + return classInfos.isEmpty ? nil : classInfos + } public var superclassInfo: ClassInfo? { if let superclassObject: AnyClass = class_getSuperclass(self.classObject) { @@ -435,6 +507,13 @@ public struct ClassInfo: CustomStringConvertible, Equatable { } } +extension ClassInfo: Hashable { + public func hash(into hasher: inout Hasher) { + hasher.combine(className) + hasher.combine(bundle.bundleIdentifier) + } +} + // MARK: - System queries public extension PVEmulatorConfiguration { @@ -603,7 +682,7 @@ public extension PVEmulatorConfiguration { let gamePath = path(forGame: game) return m3uFile(forURL: gamePath, indentifier: game.system.identifier) } - + @objc class func m3uFile(forURL gamePath: URL, indentifier: String) -> URL? { let gameDirectory = romDirectory(forSystemIdentifier: indentifier) diff --git a/PVLibrary/PVLibrary/Database/PVGameLibrary.swift b/PVLibrary/PVLibrary/Database/PVGameLibrary.swift index 97abcd84a4..00e50f7868 100644 --- a/PVLibrary/PVLibrary/Database/PVGameLibrary.swift +++ b/PVLibrary/PVLibrary/Database/PVGameLibrary.swift @@ -17,7 +17,7 @@ public struct PVGameLibrary { public let favorites: Observable<[PVGame]> public let recents: Observable<[PVRecentGame]> public let mostPlayed: Observable<[PVGame]> - + public let saveStatesResults: Results public let favoritesResults: Results public let recentsResults: Results @@ -28,34 +28,34 @@ public struct PVGameLibrary { public init(database: RomDatabase) { self.database = database - + self.saveStatesResults = database.all(PVSaveState.self).filter("game != nil && game.system != nil").sorted(byKeyPath: #keyPath(PVSaveState.lastOpened), ascending: false).sorted(byKeyPath: #keyPath(PVSaveState.date), ascending: false) self.saveStates = Observable .collection(from: self.saveStatesResults) .mapMany { $0 } - + self.favoritesResults = database.all(PVGame.self, where: #keyPath(PVGame.isFavorite), value: true).sorted(byKeyPath: #keyPath(PVGame.title), ascending: false) self.favorites = Observable .collection(from: self.favoritesResults) .mapMany { $0 } - + self.recentsResults = database.all(PVRecentGame.self).sorted(byKeyPath: #keyPath(PVRecentGame.lastPlayedDate), ascending: false) self.recents = Observable .collection(from: recentsResults) .mapMany { $0 } - + self.mostPlayedResults = database.all(PVGame.self).sorted(byKeyPath: #keyPath(PVGame.playCount), ascending: false) self.mostPlayed = Observable .collection(from: self.mostPlayedResults) .mapMany { $0 } - self.activeSystems = database.all(PVSystem.self, filter: NSPredicate(format: "games.@count > 0")).sorted(byKeyPath: #keyPath(PVSystem.name), ascending: false) + self.activeSystems = database.all(PVSystem.self, filter: NSPredicate(format: "games.@count > 0")).sorted(byKeyPath: #keyPath(PVSystem.name), ascending: true) } public func search(for searchText: String) -> Observable<[PVGame]> { return Observable.collection(from: searchResults(for: searchText)).mapMany { $0 } } - + public func searchResults(for searchText: String) -> Results { // Search first by title, and a broader search if that one's empty let titleResults = self.database.all(PVGame.self, filter: NSPredicate(format: "title CONTAINS[c] %@", argumentArray: [searchText])) @@ -68,6 +68,8 @@ public struct PVGameLibrary { public func systems(sortedBy sortOptions: SortOptions) -> Observable<[System]> { let betaIDs: [SystemIdentifier] = SystemIdentifier.betas + let unsuppotedIDs: [SystemIdentifier] = SystemIdentifier.unsupported + return Observable.collection(from: database.all(PVSystem.self)) .flatMapLatest({ systems -> Observable<[System]> in // Here we actualy observe on the games for each system, since we want to update this when games are added or removed from a system @@ -78,6 +80,7 @@ public struct PVGameLibrary { let manufacturer = pvSystem.manufacturer let shortName = pvSystem.shortName let isBeta = betaIDs.contains(pvSystem.enumValue) + let unsupported = unsuppotedIDs.contains(pvSystem.enumValue) let sortedGames = pvSystem.games.sorted(by: sortOptions) return Observable.collection(from: sortedGames) .mapMany { $0 } @@ -87,6 +90,7 @@ public struct PVGameLibrary { manufacturer: manufacturer, shortName: shortName, isBeta: isBeta, + unsupported: unsupported, sortedGames: games ) }) @@ -114,6 +118,7 @@ public struct PVGameLibrary { public let manufacturer: String public let shortName: String public let isBeta: Bool + public let unsupported: Bool public let sortedGames: [PVGame] } @@ -131,17 +136,47 @@ public struct PVGameLibrary { } } + public func clearROMs() -> Completable { + Completable.create { observer in + do { + try self.database.deleteAllGames() + observer(.completed) + } catch { + ELOG("Failed to delete all objects. \(error.localizedDescription)") + observer(.error(error)) + } + return Disposables.create() + } + } + public func gamesForSystem(systemIdentifier: String) -> Results { return database.all(PVGame.self).filter(NSPredicate(format: "systemIdentifier == %@", argumentArray: [systemIdentifier])) } - + public func system(identifier: String) -> PVSystem? { return database.object(ofType: PVSystem.self, wherePrimaryKeyEquals: identifier) } - + public func game(identifier: String) -> PVGame? { return database.object(ofType: PVGame.self, wherePrimaryKeyEquals: identifier) } + +// public enum SaveType { +// case auto +// case manual +// case any +// } +// public func saves(ofType type: SaveType = .any, game: PVGame? = nil) -> [PVSaveState]? { +// let saves = +// switch type { +// case .auto: +// return database.all(PVSaveState.self).filter("isAutoSave == YES").sorted(byKeyPath: #keyPath(PVSaveState.lastOpened), ascending: false).sorted(byKeyPath: #keyPath(PVSaveState.date), ascending: false) +// case .manual: +// return saveStates.filter("isAutosave == NO") +// case .any: +// +// } +// } } public extension ObservableType where Element: Collection { diff --git a/PVLibrary/PVLibrary/Domain/PlistDataModels.swift b/PVLibrary/PVLibrary/Domain/PlistDataModels.swift index fbdaaf58f5..7883fe3067 100644 --- a/PVLibrary/PVLibrary/Domain/PlistDataModels.swift +++ b/PVLibrary/PVLibrary/Domain/PlistDataModels.swift @@ -25,7 +25,21 @@ public struct ControlGroupButton: Codable, Equatable, Hashable { public let PVControlTint: String? } -public struct ControlLayoutEntry: Codable, Equatable, Hashable { +public struct ControlLayoutEntry: Codable, Equatable, Hashable, Comparable { + public static func < (lhs: ControlLayoutEntry, rhs: ControlLayoutEntry) -> Bool { + if lhs.PVControlType < rhs.PVControlType { + return true + } else if lhs.PVControlType == rhs.PVControlType { + if lhs.PVControlTitle == nil { + return false + } + + return lhs.PVControlTitle! < rhs.PVControlTitle! + } else { + return false + } + } + public let PVControlType: String public let PVControlSize: String public let PVControlTitle: String? diff --git a/PVLibrary/PVLibrary/Domain/Protocols/SystemProtocol.swift b/PVLibrary/PVLibrary/Domain/Protocols/SystemProtocol.swift index 68f0bb78e3..e4cdcbbd98 100644 --- a/PVLibrary/PVLibrary/Domain/Protocols/SystemProtocol.swift +++ b/PVLibrary/PVLibrary/Domain/Protocols/SystemProtocol.swift @@ -38,6 +38,7 @@ public protocol SystemProtocol { var supportsRumble: Bool { get } var screenType: ScreenType { get } + var supported: Bool { get } } // MARK: Default Implimentations diff --git a/PVLibrary/PVLibrary/Domain/System.swift b/PVLibrary/PVLibrary/Domain/System.swift index 18cbf9b613..f7867d20e6 100644 --- a/PVLibrary/PVLibrary/Domain/System.swift +++ b/PVLibrary/PVLibrary/Domain/System.swift @@ -62,10 +62,11 @@ public struct System: Codable, SystemProtocol { public let supportsRumble: Bool public let screenType: ScreenType + public let supported: Bool public init(name: String, identifier: String, shortName: String, shortNameAlt: String? = nil, manufacturer: String, releaseYear: Int, bits: SystemBits, headerByteSize: Int, openvgDatabaseID: Int, requiresBIOS: Bool = false, - options: SystemOptions, bioses: [BIOS]? = nil, extensions: [String], games: [Game], cores: [Core], userPreferredCore: Core? = nil, usesCDs: Bool = false, portableSystem: Bool = false, supportsRumble: Bool = false, screenType: ScreenType) { + options: SystemOptions, bioses: [BIOS]? = nil, extensions: [String], games: [Game], cores: [Core], userPreferredCore: Core? = nil, usesCDs: Bool = false, portableSystem: Bool = false, supportsRumble: Bool = false, screenType: ScreenType, supported: Bool = true) { self.name = name self.identifier = identifier self.shortName = shortName @@ -86,6 +87,7 @@ public struct System: Codable, SystemProtocol { self.portableSystem = portableSystem self.supportsRumble = supportsRumble self.screenType = screenType + self.supported = supported } } @@ -156,8 +158,9 @@ public extension System { let supportsRumble = system.supportsRumble let screenType = system.screenType + let supported = system.supported self.init(name: name, identifier: identifier, shortName: shortName, shortNameAlt: shortNameAlt, manufacturer: manufacturer, releaseYear: releaseYear, bits: bits, headerByteSize: headerByteSize, openvgDatabaseID: openvgDatabaseID, requiresBIOS: requiresBIOS, - options: options, bioses: bioses, extensions: extensions, games: games, cores: cores, userPreferredCore: userPreferredCore, usesCDs: usesCDs, portableSystem: portableSystem, supportsRumble: supportsRumble, screenType: screenType) + options: options, bioses: bioses, extensions: extensions, games: games, cores: cores, userPreferredCore: userPreferredCore, usesCDs: usesCDs, portableSystem: portableSystem, supportsRumble: supportsRumble, screenType: screenType, supported: supported) } } diff --git a/PVLibrary/PVLibrary/Domain/User.swift b/PVLibrary/PVLibrary/Domain/User.swift new file mode 100644 index 0000000000..49d5ff1817 --- /dev/null +++ b/PVLibrary/PVLibrary/Domain/User.swift @@ -0,0 +1,19 @@ +// +// User.swift +// PVLibrary +// +// Created by Joseph Mattiello on 11/20/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +public struct User: Codable { + public let uuid: String + public let name: String + + public let isPatron: Bool + public let savesAccess: Bool + + public let lastSeen: Date +} diff --git a/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift b/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift index f110ce10f5..079b3d638b 100644 --- a/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift +++ b/PVLibrary/PVLibrary/Game Media/PVMediaCache.swift @@ -7,7 +7,41 @@ // import PVSupport +#if canImport(UIKit) import UIKit +#else +import AppKit + +extension NSImage { + func scaled(withMaxResolution maxResolution: Int) -> NSImage? { + if let bitmapRep = NSBitmapImageRep( + bitmapDataPlanes: nil, pixelsWide: Int(maxResolution), pixelsHigh: Int(maxResolution), + bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, + colorSpaceName: .calibratedRGB, bytesPerRow: 0, bitsPerPixel: 0 + ) { + bitmapRep.size = NSSize(width: maxResolution, height: maxResolution) + NSGraphicsContext.saveGraphicsState() + NSGraphicsContext.current = NSGraphicsContext(bitmapImageRep: bitmapRep) + draw(in: NSRect(x: 0, y: 0, width: maxResolution, height: maxResolution), from: .zero, operation: .copy, fraction: 1.0) + NSGraphicsContext.restoreGraphicsState() + + let resizedImage = NSImage(size: NSSize(width: maxResolution, height: maxResolution)) + resizedImage.addRepresentation(bitmapRep) + return resizedImage + } + + return nil + } + + func jpegData(compressionQuality: Double) -> Data { + let cgImage = self.cgImage(forProposedRect: nil, context: nil, hints: nil)! + let bitmapRep = NSBitmapImageRep(cgImage: cgImage) + let jpegData = bitmapRep.representation(using: NSBitmapImageRep.FileType.jpeg, properties: [:])! + return jpegData + } +} + +#endif let kPVCachePath = "PVCache" @@ -27,10 +61,17 @@ public enum MediaCacheError: Error { } public final class PVMediaCache: NSObject { +#if canImport(UIKit) static let memCache: NSCache = { let cache = NSCache() return cache }() + #else + static let memCache: NSCache = { + let cache = NSCache() + return cache + }() + #endif private var operationQueue: OperationQueue = { let queue = OperationQueue() // Was this meant to be a serial queue? @@ -46,9 +87,13 @@ public final class PVMediaCache: NSObject { } static var cachePath: URL = { - let cachesDir = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first! - - let cachePath = URL(fileURLWithPath: cachesDir).appendingPathComponent(kPVCachePath) +// #if os(tvOS) +// let cachesDir = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first! +// #else +// let cachesDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! +// #endif + let cachesDir = PVEmulatorConfiguration.documentsPath + let cachePath = cachesDir.appendingPathComponent(kPVCachePath) do { try FileManager.default.createDirectory(at: cachePath, withIntermediateDirectories: true, attributes: nil) @@ -83,6 +128,7 @@ public final class PVMediaCache: NSObject { return FileManager.default.fileExists(atPath: filePath.path) } + #if canImport(UIKit) @objc @discardableResult public class func writeImage(toDisk image: UIImage, withKey key: String) throws -> URL { @@ -97,6 +143,22 @@ public final class PVMediaCache: NSObject { throw MediaCacheError.failedToScaleImage } } + #else + @objc + @discardableResult + public class func writeImage(toDisk image: NSImage, withKey key: String) throws -> URL { + if key.isEmpty { + throw MediaCacheError.keyWasEmpty + } + + if let newImage = image.scaled(withMaxResolution: Int(PVThumbnailMaxResolution)) { + let imageData = newImage.jpegData(compressionQuality: 0.85) + return try writeData(toDisk: imageData, withKey: key) + } else { + throw MediaCacheError.failedToScaleImage + } + } + #endif @discardableResult public class func writeData(toDisk data: Data, withKey key: String) throws -> URL { @@ -153,6 +215,40 @@ public final class PVMediaCache: NSObject { } } + #if os(macOS) + @discardableResult + public func image(forKey key: String, completion: ((_ key: String, _ image: NSImage?) -> Void)? = nil) -> BlockOperation? { + if key.isEmpty { + completion?(key, nil) + return nil + } + + let operation = BlockOperation(block: { () -> Void in + let cacheDir = PVMediaCache.cachePath + let keyHash = key.md5Hash + + let cachePath = cacheDir.appendingPathComponent(keyHash, isDirectory: false).path + + var image: NSImage? + image = PVMediaCache.memCache.object(forKey: keyHash as NSString) + + if image == nil, FileManager.default.fileExists(atPath: cachePath) { + image = NSImage(contentsOfFile: cachePath) + + if let image = image { + PVMediaCache.memCache.setObject(image, forKey: keyHash as NSString) + } + } + + DispatchQueue.main.async(execute: { () -> Void in + completion?(key, image) + }) + }) + + operationQueue.addOperation(operation) + return operation + } + #else @discardableResult public func image(forKey key: String, completion: ((_ key: String, _ image: UIImage?) -> Void)? = nil) -> BlockOperation? { if key.isEmpty { @@ -185,4 +281,5 @@ public final class PVMediaCache: NSObject { operationQueue.addOperation(operation) return operation } + #endif } diff --git a/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift b/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift index 8191d643a6..1a3dab0333 100644 --- a/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift +++ b/PVLibrary/PVLibrary/Importer/Services/GameImporter.swift @@ -13,6 +13,12 @@ import Foundation @_exported import RealmSwift @_exported import SQLite +#if canImport(UIKit) +import UIKit +#else +import AppKit +#endif + struct Constants { struct iCloud { // static let containerIdentifier = "iCloud.org.provenance-emu.provenance" @@ -61,7 +67,7 @@ extension URLSession { public typealias GameImporterImportStartedHandler = (_ path: String) -> Void public typealias GameImporterCompletionHandler = (_ encounteredConflicts: Bool) -> Void public typealias GameImporterFinishedImportingGameHandler = (_ md5Hash: String, _ modified: Bool) -> Void -public typealias GameImporterFinishedGettingArtworkHandler = (_ artworkURL: String) -> Void +public typealias GameImporterFinishedGettingArtworkHandler = (_ artworkURL: String?) -> Void public final class GameImporter { public var importStartedHandler: GameImporterImportStartedHandler? @@ -269,7 +275,7 @@ public final class GameImporter { @discardableResult private func deleteIfJunk(_ filePath: URL) -> Bool { - if filePath.lastPathComponent != "0", filePath.path.contains(PVEmulatorConfiguration.Paths.romsImportPath.lastPathComponent), !PVEmulatorConfiguration.allKnownExtensions.contains(filePath.pathExtension.lowercased()) { + if filePath.lastPathComponent != "0", filePath.path.contains(PVEmulatorConfiguration.Paths.romsImportPath.lastPathComponent), !PVEmulatorConfiguration.allKnownExtensions.contains(filePath.pathExtension.lowercased()) { ILOG("\(filePath.lastPathComponent) doesn't matching any known possible extensions and is in \(PVEmulatorConfiguration.Paths.romsImportPath.lastPathComponent) directory. Deleting.") do { if FileManager.default.fileExists(atPath: filePath.path) { @@ -606,23 +612,38 @@ public extension GameImporter { } // Create a UIImage from the Data + #if canImport(UIKit) guard let coverArtFullImage = UIImage(data: coverArtFullData) else { ELOG("Failed to create Image from data") return nil } - // Scale the UIImage to our desired max size guard let coverArtScaledImage = coverArtFullImage.scaledImage(withMaxResolution: Int(PVThumbnailMaxResolution)) else { ELOG("Failed to create scale image") return nil } - + #else + guard let coverArtFullImage = NSImage(data: coverArtFullData) else { + ELOG("Failed to create Image from data") + return nil + } + // Scale the UIImage to our desired max size + let coverArtScaledImage = coverArtFullImage +// guard let coverArtScaledImage = coverArtFullImage.scaledImage(withMaxResolution: Int(PVThumbnailMaxResolution)) else { +// ELOG("Failed to create scale image") +// return nil +// } + #endif + +#if canImport(UIKit) // Create new Data from scaled image guard let coverArtScaledData = coverArtScaledImage.jpegData(compressionQuality: 0.85) else { ELOG("Failed to create data respresentation of scaled image") return nil } - + #else + let coverArtScaledData = coverArtScaledImage.jpegData(compressionQuality: 0.85) + #endif // Hash the image and save to cache let hash: String = (coverArtScaledData as NSData).md5Hash @@ -746,6 +767,13 @@ public extension GameImporter { // No system found to match this file guard var systems = systemsMaybe else { ELOG("No system matched extension {\(fileExtensionLower)}") + do { + try FileManager.default.moveItem(at: path, to: conflictPath) + ILOG("It's a new game, so we moved \(filename) to conflicts dir") + self.encounteredConflicts = true + } catch { + ELOG("Failed to move \(urlPath.path) to conflicts dir") + } return } @@ -848,8 +876,12 @@ public extension GameImporter { let romFullPath = PVEmulatorConfiguration.documentsPath.appendingPathComponent(game.romPath).path if let md5Hash = FileManager.default.md5ForFile(atPath: romFullPath, fromOffset: offset) { - try? database.writeTransaction { - game.md5Hash = md5Hash + do { + try database.writeTransaction { + game.md5Hash = md5Hash + } + } catch { + ELOG("`database.writeTransaction` failed. \(error.localizedDescription)") } } } @@ -886,11 +918,19 @@ public extension GameImporter { } guard let results = resultsMaybe, !results.isEmpty else { - DLOG("Unable to find ROM \(game.romPath) in DB") - try? database.writeTransaction { - game.requiresSync = false + // the file maybe exists but was wiped from DB, + // try to re-import and rescan if can + let urls = importFiles(atPaths: [game.url]) + if !urls.isEmpty { + lookupInfo(for: game, overwrite: overwrite) + return + } else { + DLOG("Unable to find ROM \(game.romPath) in DB") + try? database.writeTransaction { + game.requiresSync = false + } + return } - return } var chosenResultMaybe: [String: Any]? = @@ -915,7 +955,7 @@ public extension GameImporter { } guard let chosenResult = chosenResultMaybe else { - DLOG("Unable to find ROM \(game.romPath) in DB") + DLOG("Unable to find ROM \(game.romPath) in OpenVGDB") return } @@ -1041,7 +1081,74 @@ public extension GameImporter { return try searchDatabase(usingKey: key, value: value, systemID: systemIDInt) } + + // TODO: This was a quick copy of the general version for filenames specifically + func searchDatabase(usingFilename filename: String, systemID: String) throws -> [[String: NSObject]]? { + guard let systemIDInt = PVEmulatorConfiguration.databaseID(forSystemID: systemID) else { + throw DatabaseQueryError.invalidSystemID + } + + return try searchDatabase(usingFilename: filename, systemID: systemIDInt) + } + func searchDatabase(usingFilename filename: String, systemIDs: [String]) throws -> [[String: NSObject]]? { + let systemIDsInts: [Int] = systemIDs.compactMap { PVEmulatorConfiguration.databaseID(forSystemID: $0) } + guard !systemIDsInts.isEmpty else { + throw DatabaseQueryError.invalidSystemID + } + + return try searchDatabase(usingFilename: filename, systemIDs: systemIDsInts) + } + func searchDatabase(usingFilename filename: String, systemIDs: [Int]) throws -> [[String: NSObject]]? { + let properties = "releaseTitleName as 'gameTitle', releaseCoverFront as 'boxImageURL', TEMPRomRegion as 'region', releaseDescription as 'gameDescription', releaseCoverBack as 'boxBackURL', releaseDeveloper as 'developer', releasePublisher as 'publisher', romSerial as 'serial', releaseDate as 'releaseDate', releaseGenre as 'genres', releaseReferenceURL as 'referenceURL', releaseID as 'releaseID', romLanguage as 'language', regionLocalizedID as 'regionID'" + + let likeQuery = "SELECT DISTINCT romFileName, " + properties + ", systemShortName FROM ROMs rom LEFT JOIN RELEASES release USING (romID) LEFT JOIN SYSTEMS system USING (systemID) LEFT JOIN REGIONS region on (regionLocalizedID=region.regionID) WHERE 'releaseTitleName' LIKE \"%%%@%%\" AND systemID IN (%@) ORDER BY case when 'releaseTitleName' LIKE \"%@%%\" then 1 else 0 end DESC" + let dbSystemID: String = systemIDs.compactMap { "\($0)" }.joined(separator: ",") + let queryString = String(format: likeQuery, filename, dbSystemID, filename) + + let results: [Any]? + + do { + results = try openVGDB.executeQuery(queryString) + } catch { + ELOG("Failed to execute query: \(error.localizedDescription)") + throw error + } + + if let validResult = results as? [[String: NSObject]], !validResult.isEmpty { + return validResult + } else { + return nil + } + } + func searchDatabase(usingFilename filename: String, systemID: Int? = nil) throws -> [[String: NSObject]]? { + let properties = "releaseTitleName as 'gameTitle', releaseCoverFront as 'boxImageURL', TEMPRomRegion as 'region', releaseDescription as 'gameDescription', releaseCoverBack as 'boxBackURL', releaseDeveloper as 'developer', releasePublisher as 'publisher', romSerial as 'serial', releaseDate as 'releaseDate', releaseGenre as 'genres', releaseReferenceURL as 'referenceURL', releaseID as 'releaseID', romLanguage as 'language', regionLocalizedID as 'regionID'" + + let queryString: String + if let systemID = systemID { + let likeQuery = "SELECT DISTINCT romFileName, " + properties + ", systemShortName FROM ROMs rom LEFT JOIN RELEASES release USING (romID) LEFT JOIN SYSTEMS system USING (systemID) LEFT JOIN REGIONS region on (regionLocalizedID=region.regionID) WHERE 'releaseTitleName' LIKE \"%%%@%%\" AND systemID=\"%@\" ORDER BY case when 'releaseTitleName' LIKE \"%@%%\" then 1 else 0 end DESC" + let dbSystemID: String = String(systemID) + queryString = String(format: likeQuery, filename, dbSystemID, filename) + } else { + let likeQuery = "SELECT DISTINCT romFileName, " + properties + ", systemShortName FROM ROMs rom LEFT JOIN RELEASES release USING (romID) LEFT JOIN SYSTEMS system USING (systemID) LEFT JOIN REGIONS region on (regionLocalizedID=region.regionID) WHERE 'releaseTitleName' LIKE \"%%%@%%\" ORDER BY case when 'releaseTitleName' LIKE \"%@%%\" then 1 else 0 end DESC" + queryString = String(format: likeQuery, filename, filename) + } + + let results: [Any]? + + do { + results = try openVGDB.executeQuery(queryString) + } catch { + ELOG("Failed to execute query: \(error.localizedDescription)") + throw error + } + if let validResult = results as? [[String: NSObject]], !validResult.isEmpty { + return validResult + } else { + return nil + } + } + func searchDatabase(usingKey key: String, value: String, systemID: Int? = nil) throws -> [[String: NSObject]]? { var results: [Any]? @@ -1198,7 +1305,7 @@ extension GameImporter { do { try database.add(game, update: true) - // RomDatabase.sharedInstance.library.games.append(game) // Fuck this why is it crashing + // RomDatabase.sharedInstance.library.games.append(game) // Fuck this why is it crashing } catch { ELOG("Couldn't add new game \(title): \(error.localizedDescription)") return nil @@ -1245,54 +1352,86 @@ extension GameImporter { return nil } + // TODO: Make async? public func getArtwork(forGame game: PVGame) { - let url = game.originalArtworkURL + var url = game.originalArtworkURL if url.isEmpty || PVMediaCache.fileExists(forKey: url) { return } DLOG("Starting Artwork download for \(url)") + #warning("Evil hack for bad domain in DB") + url = url.replacingOccurrences(of: "gamefaqs1.cbsistatic.com/box/", with: "gamefaqs.gamespot.com/a/box/") + guard let artworkURL = URL(string: url) else { + ELOG("url is invalid url <\(url)>") return } let request = URLRequest(url: artworkURL) - let urlResponseMaybe: HTTPURLResponse? - - // TODO: Is a synchronous data task just a bad idea here? - let dataMaybe: Data? - do { - (dataMaybe, urlResponseMaybe) = try URLSession.shared.synchronousDataTask(urlrequest: request) - } catch { - DLOG("error downloading artwork from: \(url) -- \(error.localizedDescription)") - return - } - guard let data = dataMaybe, let urlResponse = urlResponseMaybe else { - ELOG("No response or data") - return - } + // Create thread-safe reference to person + @ThreadSafe var gameRef = game - if urlResponse.statusCode != 200 { - DLOG("HTTP Error: \(urlResponse.statusCode). \nResponse: \(urlResponse)") - } - - if let artwork = UIImage(data: data) { - do { - let localURL = try PVMediaCache.writeImage(toDisk: artwork, withKey: url) - try RomDatabase.sharedInstance.writeTransaction { - let file = PVImageFile(withURL: localURL, relativeRoot: .iCloud) - game.originalArtworkFile = file + // TODO: Is a synchronous data task just a bad idea here? +// let dataMaybe: Data? +// do { +// (dataMaybe, urlResponseMaybe) = try URLSession.shared.synchronousDataTask(urlrequest: request) +// } catch { +// DLOG("error downloading artwork from: \(url) -- \(error.localizedDescription)") +// return +// } + let task = URLSession.shared.dataTask(with: request) { dataMaybe, urlResponseMaybe, error in + func artworkCompletion(artworkURL: String) { + if self.finishedArtworkHandler != nil { + DispatchQueue.main.sync(execute: { () -> Void in + ILOG("Calling finishedArtworkHandler \(artworkURL)") + self.finishedArtworkHandler!(artworkURL) + }) + } else { + ELOG("finishedArtworkHandler == nil") } - } catch { ELOG("\(error.localizedDescription)") } - } + } + + if let error = error { + ELOG("Network error: \(error.localizedDescription)") + return + } + + guard let data = dataMaybe, let urlResponse = urlResponseMaybe as? HTTPURLResponse else { + ELOG("No response or data") + return + } - if finishedArtworkHandler != nil { - DispatchQueue.main.sync(execute: { () -> Void in - self.finishedArtworkHandler?(url) - }) + if urlResponse.statusCode != 200 { + DLOG("HTTP Error: \(urlResponse.statusCode). \nResponse: \(urlResponse)") + } + + #if os(macOS) + if let artwork = NSImage(data: data) { + do { + let localURL = try PVMediaCache.writeImage(toDisk: artwork, withKey: url) + try RomDatabase.sharedInstance.writeTransaction { + let file = PVImageFile(withURL: localURL, relativeRoot: .iCloud) + gameRef?.originalArtworkFile = file + } + } catch { ELOG("\(error.localizedDescription)") } + } + #else + if let artwork = UIImage(data: data) { + do { + let localURL = try PVMediaCache.writeImage(toDisk: artwork, withKey: url) + try RomDatabase.sharedInstance.writeTransaction { + let file = PVImageFile(withURL: localURL, relativeRoot: .iCloud) + gameRef?.originalArtworkFile = file + } + } catch { ELOG("\(error.localizedDescription)") } + } + #endif + artworkCompletion(artworkURL: url) } + task.resume() } public func moveROM(toAppropriateSubfolder candidateFile: ImportCandidateFile) -> URL? { @@ -1306,11 +1445,13 @@ extension GameImporter { // Check if zip if PVEmulatorConfiguration.archiveExtensions.contains(extensionLowercased) { + ILOG("Candidate file is an archive, returning from moveRom()") return nil } // Check first if known BIOS if let biosEntry = biosEntryMatcing(candidateFile: candidateFile) { + ILOG("Candiate file matches as a known BIOS") // We have a BIOS file match let destinationPath = biosEntry.expectedPath let biosDirectory = biosEntry.system.biosDirectory @@ -1400,13 +1541,14 @@ extension GameImporter { let system = RomDatabase.sharedInstance.all(PVSystem.self, where: "openvgDatabaseID", value: sid).first, let subfolderPath = self.path(forSystemID: system.identifier), let subPath = _moveRomFoundSubpath(subfolderPath: subfolderPath, filePath: filePath) { + ILOG("MD5 matched, moved to subPath <\(subPath.path)>") return subPath } // Done dealing with BIOS file matches guard let systemsForExtension = systemIDsForRom(at: filePath), !systemsForExtension.isEmpty else { + ELOG("No system found to match \(filePath.lastPathComponent). Will call `deleteIfJunk()`") deleteIfJunk(filePath) - ELOG("No system found to match \(filePath.lastPathComponent)") return nil } @@ -1416,14 +1558,44 @@ extension GameImporter { // Any results of MD5 match? var results: [[String: NSObject]]? + // TODO: Would be better performance to search EVERY system MD5 in a single query? Need to rewrite searchDatabase for an array of systemIDs + + // Wait, why are we even looking at MD5, shouldn't it be filename? testing that @JoeMatt 11/27/22 + + // New code, 11/22, check by filename being close to release name first + let filename = candidateFile.filePath.deletingPathExtension().lastPathComponent + DLOG("Will search for filename \(filename) in possible systems by extension.") + + // TODO: test if search by name works + #if false + // TODO: test if search by system array works + results = try? self.searchDatabase(usingFilename: filename, systemIDs: [systemsForExtension]) + #else for currentSystem: String in systemsForExtension { - // TODO: Would be better performance to search EVERY system MD5 in a single query? - if let gotit = try? self.searchDatabase(usingKey: "romHashMD5", value: fileMD5, systemID: currentSystem) { + if let gotit = try? self.searchDatabase(usingFilename: filename, systemID: currentSystem){ foundSystemIDMaybe = currentSystem results = gotit + DLOG("Got it by filename: \(gotit.debugDescription)") break } } + #endif + + if results == nil { + #if false + // TODO: test if search by array works + results = try? self.searchDatabase(usingKey: "romHashMD5", value: fileMD5, systemIDs: [systemsForExtension]) + #else + for currentSystem: String in systemsForExtension { + if let gotit = try? self.searchDatabase(usingKey: "romHashMD5", value: fileMD5, systemID: currentSystem) { + foundSystemIDMaybe = currentSystem + results = gotit + DLOG("Got it: \(gotit.debugDescription)") + break + } + } + #endif + } if let results = results, !results.isEmpty { // We have a valid result, use the ID we found @@ -1458,10 +1630,17 @@ extension GameImporter { } guard let subfolderPath = subfolderPathMaybe, !subfolderPath.path.isEmpty else { + ELOG("`subfolderPath` is nil or empty. \(subfolderPathMaybe?.path ?? "nil")") return nil } - return _moveRomFoundSubpath(subfolderPath: subfolderPath, filePath: filePath) + let currentSubPath = filePath.deletingLastPathComponent() + if currentSubPath == subfolderPath { + ILOG("File already is at destination, skipping move. Perhaps this was just missing from DB.") + return nil + } else { + return _moveRomFoundSubpath(subfolderPath: subfolderPath, filePath: filePath) + } } public func _moveRomFoundSubpath(subfolderPath: URL, filePath: URL) -> URL? { @@ -1470,17 +1649,29 @@ extension GameImporter { // Try to create the directory where this ROM goes, // withIntermediateDirectories == true means it won't error if exists - do { - try fm.createDirectory(at: subfolderPath, withIntermediateDirectories: true, attributes: nil) - } catch { - DLOG("Unable to create \(subfolderPath.path) - \(error.localizedDescription)") - return nil + if !fm.fileExists(atPath: subfolderPath.path) { + ILOG("Directory doesn't exist, will attempt to create <\(subfolderPath.path)>") + do { + try fm.createDirectory(at: subfolderPath, withIntermediateDirectories: true, attributes: nil) + } catch { + DLOG("Unable to create \(subfolderPath.path) - \(error.localizedDescription)") + return nil + } } let destination = subfolderPath.appendingPathComponent(filePath.lastPathComponent) - + DLOG("'destination' == <\(destination.path)>") // Try to move the file to it's home do { + guard fm.fileExists(atPath: filePath.path) else { + ELOG("No file exists at source path: <\(filePath)>") + return nil + } + if fm.fileExists(atPath: destination.path) { + #warning("What to do? overwrite? Prompt user?") // Can use a new FileManager with a deleagte to get callbacks for this + try fm.removeItem(at: destination) + } + try fm.moveItem(at: filePath, to: destination) ILOG("Moved file \(filePath.path) to directory \(destination.path)") } catch { diff --git a/PVLibrary/PVLibrary/Importer/iCloudSync.swift b/PVLibrary/PVLibrary/Importer/iCloudSync.swift index 6ae5c07cb4..dfe494817c 100644 --- a/PVLibrary/PVLibrary/Importer/iCloudSync.swift +++ b/PVLibrary/PVLibrary/Importer/iCloudSync.swift @@ -291,10 +291,30 @@ public final class iCloudSync { let jsonDecorder = JSONDecoder() jsonDecorder.dataDecodingStrategy = .deferredToData - let legacySubDirs = try? fm.contentsOfDirectory(at: legacySavesDirectory, includingPropertiesForKeys: nil, options: .skipsHiddenFiles) - + let legacySubDirs: [URL]? + do { + legacySubDirs = try fm.contentsOfDirectory(at: legacySavesDirectory, includingPropertiesForKeys: nil, options: .skipsHiddenFiles) + } catch { + ELOG("\(error.localizedDescription)") + legacySubDirs = nil + } + legacySubDirs?.forEach { - try? fm.setUbiquitous(true, itemAt: $0, destinationURL: PVEmulatorConfiguration.Paths.saveSavesPath.appendingPathComponent($0.lastPathComponent, isDirectory: true)) + do { + let destinationURL = PVEmulatorConfiguration.Paths.saveSavesPath.appendingPathComponent($0.lastPathComponent, isDirectory: true) + if !fm.isUbiquitousItem(at: destinationURL) { + try fm.setUbiquitous(true, + itemAt: $0, + destinationURL: destinationURL) + } else { +// var resultURL: NSURL? +// try fm.replaceItem(at: destinationURL, withItemAt: $0, backupItemName: nil, resultingItemURL: &resultURL) +// try fm.evictUbiquitousItem(at: destinationURL) + try fm.startDownloadingUbiquitousItem(at: destinationURL) + } + } catch { + ELOG("Error: \(error)") + } } // let saves = realm.objects(PVSaveState.self) // saves.forEach { diff --git a/PVLibrary/PVLibrary/NSExtensions/BehaviorRelay+RangeReplaceableCollection.swift b/PVLibrary/PVLibrary/NSExtensions/BehaviorRelay+RangeReplaceableCollection.swift index b3c4785d17..b57f1e5bfc 100644 --- a/PVLibrary/PVLibrary/NSExtensions/BehaviorRelay+RangeReplaceableCollection.swift +++ b/PVLibrary/PVLibrary/NSExtensions/BehaviorRelay+RangeReplaceableCollection.swift @@ -10,7 +10,7 @@ import Foundation import RxCocoa public extension BehaviorRelay where Element: RangeReplaceableCollection { - + func add(element: Element.Element) { var array = self.value array.append(element) diff --git a/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.h b/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.h index 95557bd973..af5f1c91d9 100644 --- a/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.h +++ b/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.h @@ -6,6 +6,8 @@ // Copyright (c) 2013 James Addyman. All rights reserved. // +#import +#if !TARGET_OS_OSX #import @interface UIImage (Scaling) @@ -13,3 +15,4 @@ - (UIImage *)scaledImageWithMaxResolution:(NSInteger)maxResolution; @end +#endif diff --git a/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.m b/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.m index 8fea92ce3e..bfe78b53bb 100644 --- a/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.m +++ b/PVLibrary/PVLibrary/NSExtensions/UIImage+Scaling.m @@ -6,7 +6,10 @@ // Copyright (c) 2013 James Addyman. All rights reserved. // +@import Foundation; +#if !TARGET_OS_OSX #import "UIImage+Scaling.h" +@import CoreGraphics; @implementation UIImage (Scaling) @@ -128,3 +131,4 @@ - (UIImage *)scaledImageWithMaxResolution:(NSInteger)maxResolution } @end +#endif diff --git a/PVLibrary/PVLibrary/PVLibrary.h b/PVLibrary/PVLibrary/PVLibrary.h index 13dbc26217..7850c8bd79 100644 --- a/PVLibrary/PVLibrary/PVLibrary.h +++ b/PVLibrary/PVLibrary/PVLibrary.h @@ -7,7 +7,6 @@ // #import -#import //! Project version number for PVLibrary. FOUNDATION_EXPORT double PVLibraryVersionNumber; diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVFile.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVFile.swift index ebdc85b587..a5da56db54 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVFile.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVFile.swift @@ -9,7 +9,9 @@ import Foundation import PVSupport import RealmSwift +#if canImport(UIKit) import UIKit +#endif public enum RelativeRoot: Int { case documents @@ -43,7 +45,10 @@ public enum RelativeRoot: Int { } func appendingPath(_ path: String) -> URL { - return URL(fileURLWithPath: path, relativeTo: directoryURL) + let directoryURL = self.directoryURL + let url = directoryURL.appendingPathComponent(path) +// let url = URL(fileURLWithPath: path, relativeTo: directoryURL) + return url } } @@ -89,7 +94,8 @@ public extension PVFile { let url = (iCloudBase ?? RelativeRoot.documentsDirectory).appendingPathComponent(path) return url } - let resolvedURL = relativeRoot.appendingPath(partialPath) + let root = relativeRoot + let resolvedURL = root.appendingPath(partialPath) return resolvedURL } set { diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVImageFile.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVImageFile.swift index cbe94dbe96..dc2dda7ac5 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVImageFile.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/Files/PVImageFile.swift @@ -9,6 +9,12 @@ import Foundation import PVSupport import RealmSwift +#if canImport(UIKit) +import UIKit +#else +import AppKit +import CoreGraphics +#endif @objcMembers public final class PVImageFile: PVFile { @@ -28,20 +34,31 @@ public final class PVImageFile: PVFile { public convenience init(withURL url: URL, relativeRoot: RelativeRoot = RelativeRoot.platformDefault) { self.init() self.relativeRoot = relativeRoot - partialPath = relativeRoot.createRelativePath(fromURL: url) + let partialPath = relativeRoot.createRelativePath(fromURL: url) + self.partialPath = partialPath calculateSizeData() } private func calculateSizeData() { + #if canImport(UIKit) guard let image = UIImage(contentsOfFile: url.path) else { ELOG("Failed to create UIImage from path <\(url.path)>") return } + #else + guard let image = NSImage(contentsOfFile: url.path) else { + ELOG("Failed to create UIImage from path <\(url.path)>") + return + } + #endif let size = image.size +#if !os(macOS) cgsize = size +#endif } +#if !os(macOS) public private(set) var cgsize: CGSize { get { return NSCoder.cgSize(for: _cgsize) @@ -54,4 +71,5 @@ public final class PVImageFile: PVFile { _cgsize = NSCoder.string(for: newValue) } } +#endif } diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVCore.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVCore.swift index 585f23e034..f5091fc87e 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVCore.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVCore.swift @@ -65,6 +65,8 @@ internal extension Core { principleClass = core.principleClass disabled = core.disabled // TODO: Supported systems + DLOG("\(core.projectName)") + print("loadcore: \(core.projectName) class: \(core.principleClass)") project = CoreProject(name: core.projectName, url: URL(string: core.projectURL)!, version: core.projectVersion) } } diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift index 4208052fb5..cba35fe84d 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+BoxArt.swift @@ -33,6 +33,7 @@ public enum PVGameBoxArtAspectRatio: CGFloat { public extension PVGame { var boxartAspectRatio: PVGameBoxArtAspectRatio { + guard let system = system else { return .square } switch system.enumValue { case .SGFX: return .sgx @@ -68,10 +69,10 @@ public extension PVGame { default: return .ggUSA } - case .NES, .Sega32X, .Atari2600, .Atari5200, .Atari7800, .AtariJaguar, .WonderSwan, .WonderSwanColor, - .MasterSystem, .SG1000, .FDS, .GameCube, .PS2, .Intellivision, .ColecoVision, ._3DO, .Odyssey2: + case .NES, .Sega32X, .Atari2600, .Atari5200, .Atari7800, .AtariJaguar, .AtariJaguarCD, .WonderSwan, .WonderSwanColor, + .MasterSystem, .SG1000, .FDS, .GameCube, .PS2, .Intellivision, .ColecoVision, ._3DO, .Odyssey2, .DOS, .MSX, .MSX2, .C64, .Wii, .PalmOS, .TIC80: return .tall - case .GBA, .GBC, .Lynx, .NeoGeo, .NeoGeo, .NGP, .NGPC, .PCECD, .PCFX, .PokemonMini, .PSX, .SegaCD, .VirtualBoy, .DS: + case .GBA, .GBC, .Lynx, .NeoGeo, .NGP, .NGPC, .PCECD, .PCFX, .PokemonMini, .PSX, .SegaCD, .VirtualBoy, .DS, .Music, ._3DS, .MegaDuck: return .square case .Saturn: switch regionName { diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+Spotlight.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+Spotlight.swift index 3a2584e56a..2cb480a1d9 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+Spotlight.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame+Spotlight.swift @@ -29,7 +29,7 @@ public extension PVGame { developer, publishDate != nil ? "(\(publishDate!)" : nil, regionName != nil ? "(\(regionName!))" : nil] - + let secondLine = optionalEntries.compactMap { (maybeString) -> String? in maybeString }.joined(separator: " ") diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame.swift index 391f71373c..ac9da47a0b 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVGame.swift @@ -91,7 +91,7 @@ public final class PVGame: Object, Identifiable, PVLibraryEntry { self.system = system systemIdentifier = system.identifier } - + public var validatedGame: PVGame? { return self.isInvalidated ? nil : self } diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSaveState.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSaveState.swift index 813c2cbc3f..76c1a636c2 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSaveState.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSaveState.swift @@ -133,7 +133,7 @@ extension SaveState: RealmRepresentable { let dir = path.deletingLastPathComponent() let imagePath = dir.appendingPathComponent(image.fileName) DLOG("path: \(imagePath)") - object.image = PVImageFile(withURL: imagePath) + object.image = PVImageFile(withURL: imagePath, relativeRoot: .iCloud) } object.isAutosave = isAutosave } diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift index 59e9b4f64a..5867ee781e 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVSystem.swift @@ -13,14 +13,6 @@ import RealmSwift import TVServices #endif -public enum ScreenType: String, Codable { - case unknown = "" - case monochromaticLCD = "MonoLCD" - case colorLCD = "ColorLCD" - case crt = "CRT" - case modern = "Modern" -} - public struct SystemOptions: OptionSet, Codable { public init(rawValue: Int) { self.rawValue = rawValue @@ -54,6 +46,8 @@ public final class PVSystem: Object, Identifiable, SystemProtocol { public dynamic var portableSystem: Bool = false public dynamic var supportsRumble: Bool = false + public dynamic var supported: Bool = true + public dynamic var _screenType: String = ScreenType.unknown.rawValue public var options: SystemOptions { @@ -182,9 +176,9 @@ public extension PVSystem { #if os(tvOS) var imageType: TVContentItemImageShape { switch enumValue { - case .NES, .Dreamcast, .GameCube, .Genesis, .Saturn, .SegaCD, .MasterSystem, .SG1000, .Sega32X, .Atari2600, .Atari5200, .Atari7800, .AtariJaguar, .Lynx, .WonderSwan, .WonderSwanColor, .PS2, .PS3, .PSP, .Intellivision, .ColecoVision, ._3DO, .Odyssey2, .Atari8bit, .Vectrex: + case .NES, .Dreamcast, .GameCube, .Genesis, .Saturn, .SegaCD, .MasterSystem, .SG1000, .Sega32X, .Atari2600, .Atari5200, .Atari7800, .AtariJaguar, .AtariJaguarCD, .Lynx, .WonderSwan, .WonderSwanColor, .PS2, .PS3, .PSP, .Intellivision, .ColecoVision, ._3DO, .Odyssey2, .Atari8bit, .Vectrex, .DOS, .AtariST, .EP128, .Macintosh, .MSX, .MSX2, .Supervision, .ZXSpectrum, .C64, .Wii, .PalmOS, .TIC80: return .poster - case .GameGear, .GB, .GBC, .GBA, .NeoGeo, .NGP, .NGPC, .PSX, .VirtualBoy, .PCE, .PCECD, .PCFX, .SGFX, .FDS, .PokemonMini, .DS, .Unknown: + case .GameGear, .GB, .GBC, .GBA, .NeoGeo, .NGP, .NGPC, .PSX, .VirtualBoy, .PCE, .PCECD, .PCFX, .SGFX, .FDS, .PokemonMini, .DS, .Unknown, .Music, ._3DS, .MegaDuck: return .square case .N64, .SNES: return .HDTV @@ -262,6 +256,7 @@ extension System: RealmRepresentable { object.portableSystem = portableSystem object.usesCDs = usesCDs object.supportsRumble = supportsRumble + object.supported = supported object.headerByteSize = headerByteSize }) } diff --git a/PVLibrary/PVLibrary/RealmPlatform/Entities/PVUser.swift b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVUser.swift new file mode 100644 index 0000000000..0fc56ad6e1 --- /dev/null +++ b/PVLibrary/PVLibrary/RealmPlatform/Entities/PVUser.swift @@ -0,0 +1,30 @@ +// +// PVUser.swift +// Provenance +// +// Created by Joe Mattiello on 11/20/2022. +// Copyright (c) 2022 Provenance EMU. All rights reserved. +// + +import Foundation +import RealmSwift + +@objcMembers +public final class PVUser: Object { + public dynamic var uuid: String = "" + public dynamic var name: String = "" + + // Remote info + public dynamic var isPatron: Bool = false + public dynamic var savesAccess: Bool = false + + + public dynamic var lastSeen: Date = Date() +} + +// PVLibrary - Network +public extension PVUser { +// var isOnline: Bool { +// return isLocal ? true : false +// } +} diff --git a/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift b/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift index 8bb28a8fe9..ae05551468 100644 --- a/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift +++ b/PVLibrary/PVLibrary/RealmPlatform/RomDatabase.swift @@ -9,9 +9,11 @@ import Foundation import PVSupport import RealmSwift +#if canImport(UIKit) import UIKit +#endif -let schemaVersion: UInt64 = 10 +let schemaVersion: UInt64 = 11 public extension Notification.Name { static let DatabaseMigrationStarted = Notification.Name("DatabaseMigrarionStarted") @@ -132,6 +134,11 @@ public final class RealmConfiguration { newObject!["disabled"] = false } } + if oldSchemaVersion < 11 { + migration.enumerateObjects(ofType: PVSystem.className()) { oldObject, newObject in + newObject!["supported"] = true + } + } } #if DEBUG @@ -375,6 +382,15 @@ public extension RomDatabase { } } } + + @objc + func asyncWriteTransaction(_ block: @escaping () -> Void) { + if realm.isPerformingAsynchronousWriteOperations { + block() + } else { + realm.writeAsync(block) + } + } @objc func add(_ object: Object, update: Bool = false) throws { @@ -394,6 +410,15 @@ public extension RomDatabase { realm.deleteAll() } } + + func deleteAllGames() throws { + let realm = try! Realm() + let allUploadingObjects = realm.objects(PVGame.self) + + try! realm.write { + realm.delete(allUploadingObjects) + } + } @objc func delete(_ object: Object) throws { @@ -419,10 +444,10 @@ public extension RomDatabase { } } - func delete(game: PVGame) throws { + func delete(game: PVGame, deleteArtwork: Bool = false, deleteSaves: Bool = false) throws { let romURL = PVEmulatorConfiguration.path(forGame: game) - if !game.customArtworkURL.isEmpty { + if deleteArtwork, !game.customArtworkURL.isEmpty { do { try PVMediaCache.deleteImage(forKey: game.customArtworkURL) } catch { @@ -431,21 +456,23 @@ public extension RomDatabase { } } - let savesPath = PVEmulatorConfiguration.saveStatePath(forGame: game) - if FileManager.default.fileExists(atPath: savesPath.path) { - do { - try FileManager.default.removeItem(at: savesPath) - } catch { - ELOG("Unable to delete save states at path: " + savesPath.path + "because: " + error.localizedDescription) + if deleteSaves { + let savesPath = PVEmulatorConfiguration.saveStatePath(forGame: game) + if FileManager.default.fileExists(atPath: savesPath.path) { + do { + try FileManager.default.removeItem(at: savesPath) + } catch { + ELOG("Unable to delete save states at path: " + savesPath.path + "because: " + error.localizedDescription) + } } - } - let batteryPath = PVEmulatorConfiguration.batterySavesPath(forGame: game) - if FileManager.default.fileExists(atPath: batteryPath.path) { - do { - try FileManager.default.removeItem(at: batteryPath) - } catch { - ELOG("Unable to delete battery states at path: \(batteryPath.path) because: \(error.localizedDescription)") + let batteryPath = PVEmulatorConfiguration.batterySavesPath(forGame: game) + if FileManager.default.fileExists(atPath: batteryPath.path) { + do { + try FileManager.default.removeItem(at: batteryPath) + } catch { + ELOG("Unable to delete battery states at path: \(batteryPath.path) because: \(error.localizedDescription)") + } } } diff --git a/PVLibrary/PVLibrary/Resources/systems.plist b/PVLibrary/PVLibrary/Resources/systems.plist index 636aee1844..b815594493 100644 --- a/PVLibrary/PVLibrary/Resources/systems.plist +++ b/PVLibrary/PVLibrary/Resources/systems.plist @@ -13,12 +13,14 @@ PSP PVReleaseYear 2004 + PVSupported + PVBit 32 PVSystemIdentifier com.provenance.psp PVDatabaseID - 0 + 39 PVSupportsRumble PVUsesCDs @@ -26,7 +28,22 @@ PVPortable PVRequiresBIOS - + + PVScreenType + ColorLCD + PVBIOSNames + + + Description + ppge_atlas.zim (PPSSPP Data ROM) + MD5 + a93fc411c1ce7d001a2a812643c70085 + Name + ppge_atlas.zim + Size + 666530 + + PVSupportedExtensions pbp @@ -165,19 +182,181 @@ GC PVReleaseYear 2001 + PVScreenType + CRT + PVSupported + PVBit 128 PVSystemIdentifier com.provenance.gamecube PVDatabaseID - -1 + 22 PVSupportsRumble PVPortable PVSupportedExtensions + elf + iso + gcm + dol + tgc + wbfs + ciso + gcz + wad + rvz + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {240, 240} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{60,172},{60,60}} + PVControlTint + #0056b1 + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{4,116},{60,60}} + PVControlTint + #008c4e + + + PVControlType + PVButton + PVControlTitle + C▲ + PVControlFrame + {{116,4},{60,60}} + PVControlTint + #ffbe2c + + + PVControlType + PVButton + PVControlTitle + C▼ + PVControlFrame + {{116,116},{60,60}} + PVControlTint + #ffbe2c + + + PVControlType + PVButton + PVControlTitle + C◀ + PVControlFrame + {{60,60},{60,60}} + PVControlTint + #ffbe2c + + + PVControlType + PVButton + PVControlTitle + C▶ + PVControlFrame + {{172,60},{60,60}} + PVControlTint + #ffbe2c + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVStartButton + PVControlTitle + Start + PVControlSize + {60,42} + PVControlTint + #cc0000 + + + PVControlType + PVLeftShoulderButton + PVControlTitle + L + PVControlSize + {60,42} + + + PVControlType + PVRightShoulderButton + PVControlTitle + R + PVControlSize + {60,42} + + + PVControlType + PVZTriggerButton + PVControlTitle + Z + PVControlSize + {60,42} + + + + + PVManufacturer + Nintendo + PVSystemName + Nintendo Wii + PVSystemShortName + Wii + PVScreenType + CRT + PVReleaseYear + 2006 + PVSupported + + PVBit + 64 + PVSystemIdentifier + com.provenance.wii + PVDatabaseID + 28 + PVSupportsRumble + + PVPortable + + PVSupportedExtensions + + elf iso + gcm + dol + tgc + wbfs + ciso + gcz + wad + rvz PVControlLayout @@ -305,6 +484,8 @@ 64 PVSystemIdentifier com.provenance.n64 + PVScreenType + CRT PVDatabaseID 23 PVSupportsRumble @@ -450,6 +631,8 @@ 1994 PVBit 32 + PVScreenType + CRT PVSystemIdentifier com.provenance.psx PVDatabaseID @@ -499,6 +682,10 @@ cue ccd + pbp + chd + m3u + toc PVControlLayout @@ -565,17 +752,17 @@ PVControlType - PVStartButton + PVSelectButton PVControlTitle - Start + Select PVControlSize {60,42} PVControlType - PVSelectButton + PVStartButton PVControlTitle - Select + Start PVControlSize {60,42} @@ -636,8 +823,12 @@ PlayStation 2 PVSystemShortName PS2 + PVScreenType + CRT PVSystemShortNameAlt PS2 + PVSupported + PVReleaseYear 2000 PVBit @@ -652,10 +843,21 @@ PVPortable - PVRequiresBIOS - PVBIOSNames - + + + Description + PS2 Rom + MD5 + acf4730ceb38ac9d8c7d8e21f2614600 + Name + scph10000.bin + Size + 4194304 + + + PVRequiresBIOS + PVSupportedExtensions cue @@ -665,6 +867,14 @@ elf iso isz + m3u + gz + nrg + mdf + ciso + ps2 + bin + img PVControlLayout @@ -796,6 +1006,8 @@ Atari Lynx PVSystemShortName LYNX + PVScreenType + ColorLCD PVReleaseYear 1989 PVBit @@ -891,6 +1103,8 @@ com.provenance.ngp PVDatabaseID 36 + PVScreenType + MonoLCD PVPortable PVRequiresBIOS @@ -955,6 +1169,8 @@ 24 PVSystemIdentifier com.provenance.neogeo + PVScreenType + MonoLCD PVDatabaseID 91 PVPortable @@ -1036,6 +1252,8 @@ com.provenance.ngpc PVDatabaseID 37 + PVScreenType + ColorLCD PVPortable PVRequiresBIOS @@ -1100,6 +1318,8 @@ 1995 PVBit 32 + PVScreenType + MonoLCD PVSystemIdentifier com.provenance.vb PVDatabaseID @@ -1183,11 +1403,13 @@ PVSystemName WonderSwan PVSystemNames - WonderSwan/Wonderswan Color + WonderSwan PVSystemShortName WS PVSystemShortNames - WS/WSC + WS + PVScreenType + DotMatrix PVReleaseYear 1999 PVBit @@ -1201,6 +1423,91 @@ PVSupportedExtensions ws + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180, 180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{116,60},{60,60}} + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{60,116},{60,60}} + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVDPad + PVControlTitle + Y + PVControlSize + {180,180} + + + PVControlType + PVStartButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Sound + PVControlSize + {60,42} + + + + + PVManufacturer + Bandai + PVSystemName + WonderSwan + PVSystemNames + Wonderswan Color + PVSystemShortName + WSC + PVSystemShortNames + WSC + PVReleaseYear + 2000 + PVBit + 16 + PVScreenType + ColorLCD + PVPortable + + PVSystemIdentifier + com.provenance.wsc + PVDatabaseID + 10 + PVSupportedExtensions + wsc PVControlLayout @@ -1275,6 +1582,8 @@ PCE/TG16 PVReleaseYear 1987 + PVScreenType + CRT PVBit 16 PVPortable @@ -1355,6 +1664,8 @@ 16 PVPortable + PVScreenType + CRT PVSystemIdentifier com.provenance.sgfx PVDatabaseID @@ -1431,6 +1742,8 @@ 1988 PVPortable + PVScreenType + CRT PVSystemIdentifier com.provenance.pcecd PVDatabaseID @@ -1523,6 +1836,8 @@ PVSystemIdentifier com.provenance.pcfx + PVScreenType + CRT PVDatabaseID 16 PVUsesCDs @@ -1645,6 +1960,8 @@ 1991 PVBit 16 + PVScreenType + CRT PVPortable PVSystemIdentifier @@ -1782,6 +2099,8 @@ 1988 PVBit 16 + PVScreenType + CRT PVPortable PVSystemIdentifier @@ -1909,6 +2228,8 @@ PVManufacturer Sega + PVScreenType + CRT PVSystemName Saturn PVSystemNames @@ -1933,15 +2254,28 @@ mds cue ccd + m3u PVControlLayout PVControlType - PVButtonGroup + PVDPad PVControlSize - {212,160} - PVGroupedButtons + {180,180} + + + PVControlType + PVJoyPad + PVControlSize + {160,160} + + + PVControlType + PVButtonGroup + PVControlSize + {212,160} + PVGroupedButtons PVControlType @@ -1993,12 +2327,6 @@ - - PVControlType - PVDPad - PVControlSize - {180,180} - PVControlType PVStartButton @@ -2034,6 +2362,8 @@ Game Gear PVReleaseYear 1990 + PVScreenType + ColorLCD PVBit 8 PVPortable @@ -2098,6 +2428,10 @@ Dreamcast PVSystemShortName DC + PVScreenType + CRT + PVSupported + PVReleaseYear 1999 PVBit @@ -2261,6 +2595,8 @@ 1985 PVBit 8 + PVScreenType + CRT PVPortable PVSystemIdentifier @@ -2333,6 +2669,8 @@ com.provenance.snes PVDatabaseID 26 + PVScreenType + CRT PVSupportedExtensions smc @@ -2444,6 +2782,8 @@ 32 PVPortable + PVScreenType + ColorLCD PVSystemIdentifier com.provenance.gba PVDatabaseID @@ -2534,6 +2874,162 @@ + + PVManufacturer + Nintendo + PVSystemName + DS + PVSystemShortName + DS + PVReleaseYear + 2004 + PVBit + 32 + PVScreenType + ColorLCD + PVPortable + + PVSupported + + PVSystemIdentifier + com.provenance.ds + PVDatabaseID + 24 + PVBIOSNames + + + Description + NDS Firmware - Optional + MD5 + 145eaef5bd3037cbc247c213bb3da1b3 + Name + firmware.bin + Size + 262144 + Optional + + + + Description + ARM7 BIOS - Optional + MD5 + df692a80a5b1bc90728bc3dfc76cd948 + Name + bios7.bin + Size + 16384 + Optional + + + + Description + ARM9 BIOS - Optional + MD5 + a392174eb3e572fed6447e956bde4b25 + Name + bios9.bin + Size + 4096 + Optional + + + + PVSupportedExtensions + + nds + ids + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180, 180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{116,60},{60,60}} + PVControlTint + #c82522 + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{60,116},{60,60}} + PVControlTint + #eeb944 + + + PVControlType + PVButton + PVControlTitle + X + PVControlFrame + {{60,4},{60,60}} + PVControlTint + #07236e + + + PVControlType + PVButton + PVControlTitle + Y + PVControlFrame + {{4,60},{60,60}} + PVControlTint + #1d703a + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVStartButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Select + PVControlSize + {60,42} + + + PVControlType + PVLeftShoulderButton + PVControlTitle + L + PVControlSize + {60,42} + + + PVControlType + PVRightShoulderButton + PVControlTitle + R + PVControlSize + {60,42} + + + PVManufacturer Nintendo @@ -2547,6 +3043,8 @@ 8 PVPortable + PVScreenType + DotMatrix PVSystemIdentifier com.provenance.gb PVDatabaseID @@ -2617,6 +3115,8 @@ 1998 PVBit 8 + PVScreenType + ColorLCD PVPortable PVSystemIdentifier @@ -2692,6 +3192,8 @@ Nintendo/Famicom PVSystemShortName NES + PVScreenType + CRT PVReleaseYear 1983 PVBit @@ -2761,6 +3263,96 @@ + + PVManufacturer + Various + PVSystemLongName + Game Music Emulator + PVSystemName + Game Music + PVSystemShortName + GME + PVReleaseYear + 1980 + PVScreenType + CRT + PVBit + 0 + PVPortable + + PVSystemIdentifier + com.provenance.music + PVDatabaseID + -1 + PVSupportedExtensions + + ay + gbs + gym + hes + kss + nsf + nsfe + sap + spc + vgm + vgz + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180, 180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{20,70},{60,70}} + PVControlTint + #cf001d + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{90,70},{60,70}} + PVControlTint + #cf001d + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVStartButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Select + PVControlSize + {60,42} + + + PVManufacturer Nintendo @@ -2774,6 +3366,8 @@ 8 PVPortable + PVScreenType + CRT PVSystemIdentifier com.provenance.fds PVDatabaseID @@ -2857,6 +3451,8 @@ SG-1000 PVReleaseYear 1983 + PVScreenType + CRT PVBit 8 PVPortable @@ -2915,6 +3511,8 @@ 1977 PVBit 8 + PVScreenType + CRT PVPortable PVSystemIdentifier @@ -2979,6 +3577,8 @@ A7800 PVReleaseYear 1986 + PVScreenType + CRT PVBit 8 PVPortable @@ -3070,6 +3670,8 @@ Jaguar PVReleaseYear 1993 + PVScreenType + CRT PVBit 32 PVPortable @@ -3150,16 +3752,137 @@ + PVBIOSNames + + + Description + Jaguar BIOS + MD5 + bcfe348c565d9dedb173822ee6850dea + Name + jagboot.rom + Size + 131072 + Optional + + + + Description + Jaguar CD BIOS + MD5 + 77cd95c7ad06a39f4c59995094aa10f9 + Name + [BIOS] Atari Jaguar CD (World).j64 + Size + 262144 + Optional + + + PVManufacturer - Sega + Atari PVSystemName - 32X + Atari Jaguar CD + PVSystemShortName + Jaguar CD + PVReleaseYear + 1993 + PVSupported + + PVScreenType + CRT + PVBit + 32 + PVPortable + + PVSystemIdentifier + com.provenance.jaguarcd + PVDatabaseID + 8 + PVSupportedExtensions + + iso + cue + m3u + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {200,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + C + PVControlFrame + {{8,24},{60,60}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{76,16},{60,60}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{144,8},{60,60}} + PVControlTint + #f96763 + + + + + PVControlType + PVStartButton + PVControlTitle + Pause + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Option + PVControlSize + {60,42} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVManufacturer + Sega + PVSystemName + 32X PVSystemShortName 32X PVReleaseYear 1994 PVBit 32 + PVScreenType + CRT PVPortable PVSystemIdentifier @@ -3265,6 +3988,8 @@ 1982 PVBit 8 + PVScreenType + CRT PVPortable PVSystemIdentifier @@ -3283,7 +4008,7 @@ Name 5200.rom Size - 2048 + 2048 PVSupportedExtensions @@ -3292,6 +4017,18 @@ PVControlLayout + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVJoyPad + PVControlSize + {160,160} + PVControlType PVButtonGroup @@ -3337,12 +4074,6 @@ PVControlSize {60,42} - - PVControlType - PVDPad - PVControlSize - {180,180} - @@ -3358,6 +4089,8 @@ Atari8bit PVReleaseYear 1982 + PVScreenType + CRT PVBit 8 PVPortable @@ -3471,42 +4204,53 @@ + PVRequiresMouse + + PVRequiresKeyboard + PVManufacturer - Nintendo + Atari + PVSupported + PVSystemName - Pokémon mini + Atari ST PVSystemShortName - Pm + AtariST + PVScreenType + CRT PVReleaseYear - 2001 + 1985 PVBit - 8 + 16 PVPortable - + PVSystemIdentifier - com.provenance.pokemonmini + com.provenance.atarist PVDatabaseID - 0 + -1 PVRequiresBIOS - + PVBIOSNames Description - Pokémon mini BIOS + TOS Boot Image MD5 - 1e4fb124a3a886865acb574f388c803d + c1c57ce48e8ee4135885cee9e63a68a2 Name - bios.min - Optional - + tos.img Size - 4096 + 196608 PVSupportedExtensions - min + st + mas + zip + stx + dim + ipf PVControlLayout @@ -3514,52 +4258,36 @@ PVControlType PVButtonGroup PVControlSize - {212,160} + {180,180} PVGroupedButtons PVControlType PVButton PVControlTitle - A + 1 PVControlFrame - {{8,92},{60,60}} + {{10,70},{60,70}} PVControlTint - #006990 + #f96763 PVControlType PVButton PVControlTitle - B + 2 PVControlFrame - {{76,84},{60,60}} + {{90,70},{60,70}} PVControlTint - #006990 - - - PVControlType - PVButton - PVControlTitle - C - PVControlFrame - {{144,76},{60,60}} + #f96763 - - PVControlType - PVDPad - PVControlSize - {180,180} - PVControlTint - #006990 - PVControlType PVStartButton PVControlTitle - Power + Reset PVControlSize {60,42} @@ -3567,78 +4295,51 @@ PVControlType PVSelectButton PVControlTitle - Shake + Start PVControlSize {60,42} - - - - PVBIOSNames - - - Description - Odyssey2 BIOS - G7000 model BIOS - MD5 - 562d5ebf9e030a40d6fabfc2f33139fd - Name - o2rom.bin - Size - 1024 - - - Description - Videopac+ French BIOS - G7000 model - MD5 - f1071cdb0b6b10dde94d3bc8a6146387 - Name - c52.bin - Size - 1024 - - - Description - Videopac+ European BIOS - G7400 model - MD5 - c500ff71236068e0dc0d0603d265ae76 - Name - g7400.bin - Size - 1024 - - Description - Videopac+ French BIOS - G7400 model - MD5 - 279008e4a0db2dc5f1c048853b033828 - Name - jopac.bin - Size - 1024 + PVControlType + PVDPad + PVControlSize + {180,180} - PVRequiresBIOS + + + PVRequiresMouse + + PVRequiresKeyboard PVManufacturer - Magnavox + IBM PVSystemName - Magnavox Odyssey2 + IBM PC DOS PVSystemShortName - Odyssey2 + DOS PVReleaseYear - 1978 + 1980 + PVScreenType + CRT PVBit - 8 + 32 + PVSupported + PVPortable PVSystemIdentifier - com.provenance.odyssey2 + com.provenance.dos PVDatabaseID -1 + PVRequiresBIOS + PVSupportedExtensions - ody - od2 + exe + com + bat + conf PVControlLayout @@ -3653,9 +4354,19 @@ PVControlType PVButton PVControlTitle - Action + 1 PVControlFrame - {{76,84},{60,60}} + {{10,70},{60,70}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + 2 + PVControlFrame + {{90,70},{60,70}} PVControlTint #f96763 @@ -3663,20 +4374,91 @@ PVControlType - PVDPad + PVStartButton + PVControlTitle + Reset PVControlSize - {180,180} + {60,42} - - - - PVControlLayout - PVControlType - PVButtonGroup + PVSelectButton + PVControlTitle + Start PVControlSize - {180, 180} + {60,42} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVRequiresMouse + + PVRequiresKeyboard + + PVManufacturer + Commodore International + PVSystemName + Commodore 64 + PVSystemShortName + C64 + PVReleaseYear + 1982 + PVScreenType + CRT + PVBit + 8 + PVSupported + + PVPortable + + PVSystemIdentifier + com.provenance.c64 + PVDatabaseID + 41 + PVRequiresBIOS + + PVSupportedExtensions + + d64 + d6z + d71 + d7z + d80 + d81 + d82 + d8z + g64 + g6z + g41 + g4z + x64 + x6z + nib + nbz + d2m + d4m + m3u + cmd + 20 + 40 + 60 + a0 + b0 + rom + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180,180} PVGroupedButtons @@ -3685,9 +4467,9 @@ PVControlTitle 1 PVControlFrame - {{116,60},{60,60}} + {{10,70},{60,70}} PVControlTint - #c82522 + #f96763 PVControlType @@ -3695,32 +4477,113 @@ PVControlTitle 2 PVControlFrame - {{60,116},{60,60}} + {{90,70},{60,70}} PVControlTint - #eeb944 + #f96763 + + + + PVControlType + PVStartButton + PVControlTitle + Reset + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVRequiresMouse + + PVRequiresKeyboard + + PVManufacturer + ZX + PVSystemName + ZX Spectrum + PVSystemShortName + Z80 + PVScreenType + CRT + PVReleaseYear + 1980 + PVBit + 16 + PVPortable + + PVSystemIdentifier + com.provenance.zxspectrum + PVDatabaseID + -1 + PVRequiresBIOS + + PVSupportedExtensions + + z80 + tzx + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180,180} + PVGroupedButtons + PVControlType PVButton PVControlTitle - 3 + 1 PVControlFrame - {{60,4},{60,60}} + {{10,70},{60,70}} PVControlTint - #07236e + #f96763 PVControlType PVButton PVControlTitle - 4 + 2 PVControlFrame - {{4,60},{60,60}} + {{90,70},{60,70}} PVControlTint - #1d703a + #f96763 + + PVControlType + PVStartButton + PVControlTitle + Reset + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Start + PVControlSize + {60,42} + PVControlType PVDPad @@ -3728,68 +4591,120 @@ {180,180} - PVRequiresBIOS + + + PVRequiresMouse + PVRequiresKeyboard + PVManufacturer - Smith Engineering + Microsoft PVSystemName - Smith Engineering Vectrex + MSX PVSystemShortName - Vectrex + MSX + PVScreenType + CRT PVReleaseYear - 1982 + 1983 PVBit - 8 + 16 + PVSupported + PVPortable PVSystemIdentifier - com.provenance.vectrex + com.provenance.msx PVDatabaseID - -1 - PVSupportedExtensions - - vec - - - + 42 PVRequiresBIOS PVBIOSNames + + Optional + + Description + MSX BIOS + MD5 + 364a1a579fe5cb8dba54519bcfcdac0d + Name + MSX.ROM + Size + 0 + Description - ColecoVision BIOS + DiskROM/BDOS MD5 - 2c66f5911e5b42b8ebe113403548eee7 + 80dcd1ad1a4cf65d64b7ba10504e8190 Name - colecovision.rom + DISK.ROM Size - 8192 + 0 Optional - + + + + Description + FMPAC BIOS + MD5 + 6f69cc8b5ed761b03afd78000dfb0e19 + Name + FMPAC.ROM + Size + 0 + Optional + + + + Description + MSX-DOS 2 + MD5 + 6418d091cd6907bbcf940324339e43bb + Name + MSXDOS2.ROM + Size + 0 + Optional + + + + Description + Yamaha Painter + MD5 + 403cdea1cbd2bb24fae506941f8f655e + Name + PAINTER.ROM + Size + 0 + Optional + + + + Description + Kanji Font + MD5 + febe8782b466d7c3b16de6d104826b34 + Name + KANJI.ROM + Size + 0 + Optional + - PVManufacturer - CBS - PVSystemName - CBS ColecoVision - PVSystemShortName - ColecoVision - PVReleaseYear - 1982 - PVBit - 8 - PVPortable - - PVSystemIdentifier - com.provenance.colecovision - PVDatabaseID - -1 PVSupportedExtensions - col - cv + cas + tsx + wav + dsk + msx + mx2 + mx1 rom + m3u PVControlLayout @@ -3797,16 +4712,16 @@ PVControlType PVButtonGroup PVControlSize - {200,180} + {180,180} PVGroupedButtons PVControlType PVButton PVControlTitle - L + 1 PVControlFrame - {{8,24},{60,60}} + {{10,70},{60,70}} PVControlTint #f96763 @@ -3814,9 +4729,9 @@ PVControlType PVButton PVControlTitle - R + 2 PVControlFrame - {{76,16},{60,60}} + {{90,70},{60,70}} PVControlTint #f96763 @@ -3826,17 +4741,17 @@ PVControlType PVStartButton PVControlTitle - Pause + Reset PVControlSize - {62,22} + {60,42} PVControlType PVSelectButton PVControlTitle - Option + Start PVControlSize - {62,22} + {60,42} PVControlType @@ -3846,5 +4761,1115 @@ + + PVRequiresMouse + + PVRequiresKeyboard + + PVManufacturer + Microsoft + PVSystemName + MSX2 + PVScreenType + CRT + PVSystemShortName + MSX2 + PVSupported + + PVReleaseYear + 1983 + PVBit + 16 + PVPortable + + PVSystemIdentifier + com.provenance.msx2 + PVDatabaseID + 43 + PVRequiresBIOS + + PVBIOSNames + + + Optional + + Description + MSX2 BIOS + MD5 + ec3a01c91f24fbddcbcab0ad301bc9ef + Name + MSX2.ROM + Size + 0 + + + Optional + + Description + MSX2 ExtROM + MD5 + 2183c2aff17cf4297bdb496de78c2e8a + Name + MSX2EXT.ROM + Size + 0 + + + Optional + + Description + MSX2+ BIOS + MD5 + 847cc025ffae665487940ff2639540e5 + Name + MSX2P.ROM + Size + 0 + + + Optional + + Description + MSX2+ ExtROM + MD5 + 7c8243c71d8f143b2531f01afa6a05dc + Name + MSX2PEXT.ROM + Size + 0 + + + Description + DiskROM/BDOS + MD5 + 80dcd1ad1a4cf65d64b7ba10504e8190 + Name + DISK.ROM + Size + 0 + Optional + + + + Description + FMPAC BIOS + MD5 + 6f69cc8b5ed761b03afd78000dfb0e19 + Name + FMPAC.ROM + Size + 0 + Optional + + + + Description + MSX-DOS 2 + MD5 + 6418d091cd6907bbcf940324339e43bb + Name + MSXDOS2.ROM + Size + 0 + Optional + + + + Description + Yamaha Painter + MD5 + 403cdea1cbd2bb24fae506941f8f655e + Name + PAINTER.ROM + Size + 0 + Optional + + + + Description + Kanji Font + MD5 + febe8782b466d7c3b16de6d104826b34 + Name + KANJI.ROM + Size + 0 + Optional + + + + PVSupportedExtensions + + cas + tsx + wav + dsk + msx + mx2 + mx1 + rom + m3u + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + 1 + PVControlFrame + {{10,70},{60,70}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + 2 + PVControlFrame + {{90,70},{60,70}} + PVControlTint + #f96763 + + + + + PVControlType + PVStartButton + PVControlTitle + Reset + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVRequiresMouse + + PVRequiresKeyboard + + PVManufacturer + Apple + PVSystemName + Macintosh + PVSystemShortName + Mac + PVSupported + + PVScreenType + CRT + PVReleaseYear + 1984 + PVBit + 16 + PVPortable + + PVSystemIdentifier + com.provenance.macintosh + PVDatabaseID + -1 + PVRequiresBIOS + + PVBIOSNames + + + Description + MacII ROM + MD5 + 66223be14974601f1e60885eeb35e03cc + Name + MacII.rom + Optional + + Size + 0 + + + PVSupportedExtensions + + exe + com + bat + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + 1 + PVControlFrame + {{10,70},{60,70}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + 2 + PVControlFrame + {{90,70},{60,70}} + PVControlTint + #f96763 + + + + + PVControlType + PVStartButton + PVControlTitle + Reset + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVManufacturer + Nintendo + PVSystemName + Pokémon mini + PVSystemShortName + Pm + PVReleaseYear + 2001 + PVBit + 8 + PVPortable + + PVScreenType + DotMatrix + PVSystemIdentifier + com.provenance.pokemonmini + PVDatabaseID + 0 + PVRequiresBIOS + + PVBIOSNames + + + Description + Pokémon mini BIOS + MD5 + 1e4fb124a3a886865acb574f388c803d + Name + bios.min + Optional + + Size + 4096 + + + PVSupportedExtensions + + min + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {212,160} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{8,92},{60,60}} + PVControlTint + #006990 + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{76,84},{60,60}} + PVControlTint + #006990 + + + PVControlType + PVButton + PVControlTitle + C + PVControlFrame + {{144,76},{60,60}} + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + PVControlTint + #006990 + + + PVControlType + PVStartButton + PVControlTitle + Power + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Shake + PVControlSize + {60,42} + + + + + PVBIOSNames + + + Description + Odyssey2 BIOS - G7000 model BIOS + MD5 + 562d5ebf9e030a40d6fabfc2f33139fd + Name + o2rom.bin + Size + 1024 + + + Description + Videopac+ French BIOS - G7000 model + MD5 + f1071cdb0b6b10dde94d3bc8a6146387 + Name + c52.bin + Size + 1024 + + + Description + Videopac+ European BIOS - G7400 model + MD5 + c500ff71236068e0dc0d0603d265ae76 + Name + g7400.bin + Size + 1024 + + + Description + Videopac+ French BIOS - G7400 model + MD5 + 279008e4a0db2dc5f1c048853b033828 + Name + jopac.bin + Size + 1024 + + + PVRequiresBIOS + + PVManufacturer + Magnavox + PVSystemName + Magnavox Odyssey2 + PVSystemShortName + Odyssey2 + PVReleaseYear + 1978 + PVScreenType + CRT + PVBit + 8 + PVPortable + + PVSystemIdentifier + com.provenance.odyssey2 + PVDatabaseID + 40 + PVSupportedExtensions + + ody + od2 + + PVControlLayout + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVJoyPad + PVControlSize + {160,160} + + + PVControlType + PVButtonGroup + PVControlSize + {180,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + Action + PVControlFrame + {{76,84},{60,60}} + PVControlTint + #f96763 + + + + + + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180, 180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + 1 + PVControlFrame + {{116,60},{60,60}} + PVControlTint + #c82522 + + + PVControlType + PVButton + PVControlTitle + 2 + PVControlFrame + {{60,116},{60,60}} + PVControlTint + #eeb944 + + + PVControlType + PVButton + PVControlTitle + 3 + PVControlFrame + {{60,4},{60,60}} + PVControlTint + #07236e + + + PVControlType + PVButton + PVControlTitle + 4 + PVControlFrame + {{4,60},{60,60}} + PVControlTint + #1d703a + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVRequiresBIOS + + PVManufacturer + Smith Engineering + PVSystemName + Smith Engineering Vectrex + PVSystemShortName + Vectrex + PVReleaseYear + 1982 + PVScreenType + CRT + PVBit + 8 + PVPortable + + PVSystemIdentifier + com.provenance.vectrex + PVDatabaseID + 12 + PVSupportedExtensions + + vec + + + + PVRequiresBIOS + + PVManufacturer + Enterprise + PVSystemName + Enterprise 128 + PVSystemShortName + ep128 + PVReleaseYear + 1985 + PVScreenType + CRT + PVBit + 8 + PVPortable + + PVSystemIdentifier + com.provenance.ep128 + PVDatabaseID + -1 + PVSupportedExtensions + + img + dsk + tap + dtf + 128 + trn + bas + cdt + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {200,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + L + PVControlFrame + {{8,24},{60,60}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + R + PVControlFrame + {{76,16},{60,60}} + PVControlTint + #f96763 + + + + + PVControlType + PVStartButton + PVControlTitle + Pause + PVControlSize + {62,22} + + + PVControlType + PVSelectButton + PVControlTitle + Option + PVControlSize + {62,22} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVRequiresBIOS + + PVBIOSNames + + + Description + ColecoVision BIOS + MD5 + 2c66f5911e5b42b8ebe113403548eee7 + Name + colecovision.rom + Size + 8192 + Optional + + + + PVManufacturer + CBS + PVSystemName + CBS ColecoVision + PVSystemShortName + ColecoVision + PVScreenType + CRT + PVReleaseYear + 1982 + PVBit + 8 + PVPortable + + PVSystemIdentifier + com.provenance.colecovision + PVDatabaseID + 11 + PVSupportedExtensions + + col + cv + rom + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {200,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + L + PVControlFrame + {{8,24},{60,60}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + R + PVControlFrame + {{76,16},{60,60}} + PVControlTint + #f96763 + + + + + PVControlType + PVStartButton + PVControlTitle + Pause + PVControlSize + {62,22} + + + PVControlType + PVSelectButton + PVControlTitle + Option + PVControlSize + {62,22} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVRequiresBIOS + + PVBIOSNames + + + Description + Executive ROM + MD5 + 62e761035cb657903761800f4437b8af + Name + exec.bin + Size + 0 + Optional + + + + Description + Graphics ROM + MD5 + 0cd5946c6473e42e8e4c2137785e427f + Name + grom.bin + Size + 0 + Optional + + + + Description + Entertainment Computer System (ECS) ROM + MD5 + 2e72a9a2b897d330a35c8b07a6146c52 + Name + ECS.BIN + Size + 0 + Optional + + + + Description + Intellivoice RESROM + MD5 + d5530f74681ec6e0f282dab42e6b1c5f + Name + IVOICE.BIN + Size + 0 + Optional + + + + PVManufacturer + Mattel + PVSystemName + Mattel Intellivision + PVSystemShortName + Intellivision + PVScreenType + CRT + PVReleaseYear + 1979 + PVBit + 8 + PVPortable + + PVSystemIdentifier + com.provenance.intellivision + PVDatabaseID + 13 + PVSupportedExtensions + + int + rom + bin + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {200,180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + L + PVControlFrame + {{8,24},{60,60}} + PVControlTint + #f96763 + + + PVControlType + PVButton + PVControlTitle + R + PVControlFrame + {{76,16},{60,60}} + PVControlTint + #f96763 + + + + + PVControlType + PVStartButton + PVControlTitle + Pause + PVControlSize + {62,22} + + + PVControlType + PVSelectButton + PVControlTitle + Option + PVControlSize + {62,22} + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + + + PVManufacturer + Watara + PVSystemName + Supervision + PVSystemShortName + Supervision + PVReleaseYear + 1992 + PVScreenType + DotMatrix + PVBit + 8 + PVPortable + + PVSystemIdentifier + com.provenance.supervision + PVDatabaseID + 0 + PVSupportedExtensions + + bin + sv + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180, 180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{116,60},{60,60}} + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{60,116},{60,60}} + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVStartButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Select + PVControlSize + {60,42} + + + + + PVManufacturer + Panasonic + PVSystemName + 3DO + PVScreenType + CRT + PVSystemShortName + 3DO + PVReleaseYear + 1993 + PVBit + 32 + PVPortable + + PVSystemIdentifier + com.provenance.3DO + PVDatabaseID + 1 + PVRequiresBIOS + + PVBIOSNames + + + Description + 3DO BIOS + MD5 + 51f2f43ae2f3508a14d9f56597e2d3ce + Name + panafz10.bin + Size + 1048576 + Optional + + + + Description + 3DO Patches BIOS + MD5 + 1477bda80dc33731a65468c1f5bcbee9 + Name + panafz10-patched.bin + Size + 1048576 + Optional + + + + Description + Japanse Character ROM + MD5 + 428577250f43edc902ea239c50d2240d + Name + rom2.rom + Size + 933636 + Optional + + + + PVSupportedExtensions + + cue + iso + m3u + + PVControlLayout + + + PVControlType + PVButtonGroup + PVControlSize + {180, 180} + PVGroupedButtons + + + PVControlType + PVButton + PVControlTitle + A + PVControlFrame + {{116,60},{60,60}} + + + PVControlType + PVButton + PVControlTitle + B + PVControlFrame + {{60,116},{60,60}} + + + + + PVControlType + PVDPad + PVControlSize + {180,180} + + + PVControlType + PVStartButton + PVControlTitle + Start + PVControlSize + {60,42} + + + PVControlType + PVSelectButton + PVControlTitle + Select + PVControlSize + {60,42} + + + diff --git a/PVLibrary/PVLibrary/Util/Cache.swift b/PVLibrary/PVLibrary/Util/Cache.swift index 13cdd8d39f..0e81d32b75 100644 --- a/PVLibrary/PVLibrary/Util/Cache.swift +++ b/PVLibrary/PVLibrary/Util/Cache.swift @@ -7,6 +7,9 @@ // import Foundation +#if os(macOS) +import AppKit +#endif private class ObjectWrapper { let value: Any @@ -38,6 +41,7 @@ open class Cache { private let cache: NSCache, ObjectWrapper> = NSCache() public init(lowMemoryAware: Bool = true) { + #if !os(macOS) guard lowMemoryAware else { return } NotificationCenter.default.addObserver( self, @@ -45,6 +49,7 @@ open class Cache { name: UIApplication.didReceiveMemoryWarningNotification, object: nil ) + #endif } deinit { diff --git a/PVLibrary/PVLibrary/Util/UTI.swift b/PVLibrary/PVLibrary/Util/UTI.swift index ff9929a19c..2fb7345c74 100644 --- a/PVLibrary/PVLibrary/Util/UTI.swift +++ b/PVLibrary/PVLibrary/Util/UTI.swift @@ -16,6 +16,7 @@ public extension UTI { static let artwork = UTI(rawValue: "com.provenance.artwork") static let savestate = UTI(rawValue: "com.provenance.savestate") static let sevenZipArchive = UTI(rawValue: "org.7-zip.7-zip-archive") + static let rar = UTI(rawValue: "com.rarlab.rar-archive") } /// Instances of the UTI class represent a specific Universal Type Identifier, e.g. kUTTypeMPEG4. @@ -260,7 +261,7 @@ public final class UTI: RawRepresentable, Equatable { guard let identifiers = unmanagedIdentifiers?.takeRetainedValue() as? [CFString] else { return [] } - + return identifiers.compactMap { UTI(rawValue: $0 as String) } } diff --git a/PVLibrary/PVPatreon/PVPatreon.h b/PVLibrary/PVPatreon/PVPatreon.h new file mode 100644 index 0000000000..e6b0b7fd03 --- /dev/null +++ b/PVLibrary/PVPatreon/PVPatreon.h @@ -0,0 +1,19 @@ +// +// PVPatreon.h +// PVPatreon +// +// Created by Joseph Mattiello on 11/20/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import + +//! Project version number for PVPatreon. +FOUNDATION_EXPORT double PVPatreonVersionNumber; + +//! Project version string for PVPatreon. +FOUNDATION_EXPORT const unsigned char PVPatreonVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/PVLibrary/Package.swift b/PVLibrary/Package.swift index 99195de29d..795d97cff5 100644 --- a/PVLibrary/Package.swift +++ b/PVLibrary/Package.swift @@ -61,7 +61,7 @@ let package = Package( "NSExtensions/NSFileManager+Hashing.m", "NSExtensions/UIImage+Scaling.m", "NSExtensions/NSString+Hashing.m", - "NSExtensions/NSData+Hashing.m", + "NSExtensions/NSData+Hashing.m" // "LzmaSDKObjC/src/LzmaSDKObjC.mm", // "LzmaSDKObjC/src/LzmaSDKObjCBufferProcessor.mm", // "LzmaSDKObjC/src/LzmaSDKObjCCrc.mm", @@ -102,7 +102,7 @@ let package = Package( "NSExtensions/UIImage+Scaling.m", "NSExtensions/NSString+Hashing.m", "NSExtensions/NSData+Hashing.m", - "Info.plist", + "Info.plist" // "LzmaSDKObjC/src/LzmaSDKObjC.mm", // "LzmaSDKObjC/src/LzmaSDKObjCBufferProcessor.mm", // "LzmaSDKObjC/src/LzmaSDKObjCCrc.mm", diff --git a/PVSupport/PVLibRetro/PVLibRetro-Build.xcconfig b/PVSupport/PVLibRetro/PVLibRetro-Build.xcconfig new file mode 100644 index 0000000000..1dfa7c484f --- /dev/null +++ b/PVSupport/PVLibRetro/PVLibRetro-Build.xcconfig @@ -0,0 +1,23 @@ +// Codesigning settings defined optionally, see `CodeSigning.xcconfig.example` +#include "../../Build.xcconfig" + + +// All +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) __LIBRETRO__=1 HAVE_THREADS=1 HAVE_OPENGL=1 HAVE_OPENGLES=1 HAVE_OPENGLES2=1 HAVE_OPENGLES3=1 GLES=1 GLES2=1 GLES3=1 GLES31=1 +// HAVE_PLAIN_DRM=1 +OTHER_CFLAGS = $(inherited) -ObjC +OTHER_LDFLAGS = $(inherited) -ObjC -all_load + + // Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=iphoneos*] = $(inherited) + +// Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 + +// tvOS Device +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvos*] = $(inherited) TARGET_IPHONE=1 +OTHER_CFLAGS[sdk=appletvos*] = $(inherited) + +// tvOS Simulator +GCC_PREPROCESSOR_DEFINITIONS[sdk=appletvsimulator*] = $(inherited) TARGET_IPHONE_SIMULATOR=1 diff --git a/PVSupport/PVLibRetro/PVLibRetro.h b/PVSupport/PVLibRetro/PVLibRetro.h new file mode 100644 index 0000000000..ea80fb94e5 --- /dev/null +++ b/PVSupport/PVLibRetro/PVLibRetro.h @@ -0,0 +1,22 @@ +// +// PVLibRetro.h +// PVLibRetro +// +// Created by Joseph Mattiello on 6/25/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import + +//! Project version number for PVLibRetro. +FOUNDATION_EXPORT double PVLibRetroVersionNumber; + +//! Project version string for PVLibRetro. +FOUNDATION_EXPORT const unsigned char PVLibRetroVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +//#import diff --git a/PVSupport/PVSupport.xcodeproj/project.pbxproj b/PVSupport/PVSupport.xcodeproj/project.pbxproj index 4c09d5594c..2f2b63692c 100644 --- a/PVSupport/PVSupport.xcodeproj/project.pbxproj +++ b/PVSupport/PVSupport.xcodeproj/project.pbxproj @@ -3,136 +3,52 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 55; objects = { /* Begin PBXBuildFile section */ - 0592894F1DC194FD0012644D /* RealTimeThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 0592894E1DC194FD0012644D /* RealTimeThread.m */; }; - B302F8A320B73D6500C5E502 /* PVLogEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89920B73D5F00C5E502 /* PVLogEntry.m */; }; + 557DCAB1292A91E100045B02 /* ThemeOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 557DCAB0292A91E000045B02 /* ThemeOption.swift */; }; B302F8A420B73D6500C5E502 /* PVLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89A20B73D6200C5E502 /* PVLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B302F8A520B73D6500C5E502 /* PVLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89A20B73D6200C5E502 /* PVLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; B302F8A620B73D6500C5E502 /* PVLogEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89B20B73D6300C5E502 /* PVLogEntry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B302F8A720B73D6500C5E502 /* PVLogEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89B20B73D6300C5E502 /* PVLogEntry.h */; settings = {ATTRIBUTES = (Public, ); }; }; B302F8A820B73D6500C5E502 /* PVProvenanceLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89C20B73D6300C5E502 /* PVProvenanceLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B302F8A920B73D6500C5E502 /* PVProvenanceLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89C20B73D6300C5E502 /* PVProvenanceLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B302F8AB20B73D6500C5E502 /* PVProvenanceLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89D20B73D6400C5E502 /* PVProvenanceLogging.m */; }; - B302F8AD20B73D6500C5E502 /* PVLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89E20B73D6400C5E502 /* PVLogging.m */; }; - B305EF49276B4E41003AE510 /* PVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C96EBB1D62C54D003F1E93 /* PVSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF4A276B4E41003AE510 /* OEGameAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69117F748F80031B1C9 /* OEGameAudio.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF4B276B4E41003AE510 /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E7F218B7E4B00557ACE /* CABitOperations.h */; }; - B305EF4C276B4E41003AE510 /* DebugUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4E718C1A6C699F005CA80F /* DebugUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF4D276B4E41003AE510 /* PVProvenanceLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89C20B73D6300C5E502 /* PVProvenanceLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF4E276B4E41003AE510 /* OERingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D591D6B908300060D71 /* OERingBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF50276B4E41003AE510 /* NSObject+PVAbstractAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA6A017F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF51276B4E41003AE510 /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E85218B7E4B00557ACE /* CARingBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B305EF52276B4E41003AE510 /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E83218B7E4B00557ACE /* CAAtomic.h */; }; - B305EF53276B4E41003AE510 /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B305EF54276B4E41003AE510 /* NSFileManager+OEHashingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF55276B4E41003AE510 /* PVLogEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89B20B73D6300C5E502 /* PVLogEntry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF56276B4E41003AE510 /* PVEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D5F1D6B90BD00060D71 /* PVEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF57276B4E41003AE510 /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E82218B7E4B00557ACE /* CAAutoDisposer.h */; }; - B305EF58276B4E41003AE510 /* TPCircularBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF59276B4E41003AE510 /* PVLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B302F89A20B73D6200C5E502 /* PVLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B305EF5B276B4E41003AE510 /* PVEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */; }; - B305EF5C276B4E41003AE510 /* PViCadeSteelSeriesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37902187F9A9009D9244 /* PViCadeSteelSeriesController.swift */; }; - B305EF5D276B4E41003AE510 /* ArchiveSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEBB21D4C3E6000C55F7 /* ArchiveSupport.swift */; }; - B305EF60276B4E41003AE510 /* PViCade8BitdoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378C2187F9A9009D9244 /* PViCade8BitdoController.swift */; }; - B305EF61276B4E41003AE510 /* PViCadeInputAxis.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378A2187F9A9009D9244 /* PViCadeInputAxis.swift */; }; - B305EF62276B4E41003AE510 /* DDLogLevel+CustomStringConvertable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E9E26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift */; }; - B305EF63276B4E41003AE510 /* iCadeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378B2187F9A9009D9244 /* iCadeState.swift */; }; - B305EF64276B4E41003AE510 /* CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C36207EE15D0040709A /* CoreOptions.swift */; }; - B305EF65276B4E41003AE510 /* UIDeviceExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E6DADD20B7BF8600454DD4 /* UIDeviceExtension.swift */; }; - B305EF66276B4E41003AE510 /* SaveStateSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC721D4C4E5000C55F7 /* SaveStateSupport.swift */; }; - B305EF67276B4E41003AE510 /* iCadeControllerSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37882187F9A9009D9244 /* iCadeControllerSetting.swift */; }; - B305EF68276B4E41003AE510 /* PViCadeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378E2187F9A9009D9244 /* PViCadeController.swift */; }; - B305EF69276B4E41003AE510 /* CocoaLumberjack+swift-log.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */; }; - B305EF6A276B4E41003AE510 /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */; }; - B305EF6B276B4E41003AE510 /* CocoaLumberjack+NSLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */; }; - B305EF6C276B4E41003AE510 /* Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC121D4C454000C55F7 /* Controls.swift */; }; - B305EF6D276B4E41003AE510 /* PViCadeGamepadDirectionPad.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37872187F9A9009D9244 /* PViCadeGamepadDirectionPad.swift */; }; - B305EF6E276B4E41003AE510 /* NSFileManager+OEHashingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D73D3C1EA15BB20023925B /* NSFileManager+OEHashingAdditions.m */; }; - B305EF6F276B4E41003AE510 /* PViCadeGamepadButtonInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378F2187F9A9009D9244 /* PViCadeGamepadButtonInput.swift */; }; - B305EF70276B4E41003AE510 /* SortOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3532C3521A925C1006CDA0F /* SortOption.swift */; }; - B305EF71276B4E41003AE510 /* GameWithCheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D332258AB6B300838AF8 /* GameWithCheat.swift */; }; - B305EF72276B4E41003AE510 /* CoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC421D4C490000C55F7 /* CoreActions.swift */; }; - B305EF73276B4E41003AE510 /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */; }; - B305EF74276B4E41003AE510 /* PVProvenanceLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89D20B73D6400C5E502 /* PVProvenanceLogging.m */; }; - B305EF75276B4E41003AE510 /* PViCadeReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37892187F9A9009D9244 /* PViCadeReader.swift */; }; - B305EF76276B4E41003AE510 /* RealTimeThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 0592894E1DC194FD0012644D /* RealTimeThread.m */; }; - B305EF77276B4E41003AE510 /* DiscSwappable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEBE21D4C41D000C55F7 /* DiscSwappable.swift */; }; - B305EF78276B4E41003AE510 /* NSObject+PVAbstractAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6A117F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.m */; }; - B305EF79276B4E41003AE510 /* PVEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D601D6B90BD00060D71 /* PVEmulatorCore.m */; }; - B305EF7A276B4E41003AE510 /* PVLogEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89920B73D5F00C5E502 /* PVLogEntry.m */; }; - B305EF7B276B4E41003AE510 /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */; }; - B305EF7D276B4E41003AE510 /* PVLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89E20B73D6400C5E502 /* PVLogging.m */; }; - B305EF7E276B4E41003AE510 /* PViCadeMocuteController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37922187F9A9009D9244 /* PViCadeMocuteController.swift */; }; - B305EF7F276B4E41003AE510 /* CocoaLumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */; }; - B305EF80276B4E41003AE510 /* iCadeReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37B02187FC4B009D9244 /* iCadeReaderView.swift */; }; - B305EF81276B4E41003AE510 /* PViCadeGamepad.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37912187F9A9009D9244 /* PViCadeGamepad.swift */; }; - B305EF82276B4E41003AE510 /* PVCocoaLumberJackLogging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296EA126C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift */; }; - B305EF83276B4E41003AE510 /* PVSettingsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3447F9A218C1CD200557ACE /* PVSettingsModel.swift */; }; - B305EF85276B4E41003AE510 /* CocoaLumberjack in Frameworks */ = {isa = PBXBuildFile; productRef = B305EF47276B4E41003AE510 /* CocoaLumberjack */; }; - B305EF87276B4E41003AE510 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FD92191616C000FA7F9 /* Foundation.framework */; }; - B305EF89276B4E41003AE510 /* CocoaLumberjackSwiftLogBackend in Frameworks */ = {isa = PBXBuildFile; productRef = B305EF46276B4E41003AE510 /* CocoaLumberjackSwiftLogBackend */; }; - B305EF8A276B4E41003AE510 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FFF02C26E9E65800A33143 /* AVFoundation.framework */; }; - B305EF8B276B4E41003AE510 /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B305EF42276B4E41003AE510 /* CocoaLumberjackSwift */; }; - B305EF9A276B4F0A003AE510 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF99276B4F0A003AE510 /* GameKit.framework */; }; - B305EF9C276B4FDD003AE510 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B305EF9B276B4FDC003AE510 /* CoreGraphics.framework */; }; - B324C3162191963B009F4EDC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B324C3152191963B009F4EDC /* AVFoundation.framework */; }; + B30681502895D407003E465F /* PVLibRetroCore+Cheats.m in Sources */ = {isa = PBXBuildFile; fileRef = B306814C2895D405003E465F /* PVLibRetroCore+Cheats.m */; }; + B30681522895D407003E465F /* PVLibRetroCore+Video.m in Sources */ = {isa = PBXBuildFile; fileRef = B306814D2895D406003E465F /* PVLibRetroCore+Video.m */; }; + B30681542895D407003E465F /* PVLibRetroCore+Audio.m in Sources */ = {isa = PBXBuildFile; fileRef = B306814E2895D406003E465F /* PVLibRetroCore+Audio.m */; }; + B30681562895D407003E465F /* PVLibRetroCore+Options.m in Sources */ = {isa = PBXBuildFile; fileRef = B306814F2895D407003E465F /* PVLibRetroCore+Options.m */; }; + B30F8013290516B900F21217 /* ScreenType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30F8012290516B900F21217 /* ScreenType.swift */; }; + B3225132286C4728001FDF42 /* retro.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B322512F286C4728001FDF42 /* retro.h */; }; + B32299422878CB3C00585AD8 /* input_driver.c in Sources */ = {isa = PBXBuildFile; fileRef = B34DC54928671EFF00B60497 /* input_driver.c */; }; + B32299462878CF2C00585AD8 /* rthreads.c in Sources */ = {isa = PBXBuildFile; fileRef = B34DC7072867202D00B60497 /* rthreads.c */; }; + B322994A2878CF6200585AD8 /* input_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = B34DC54A28671EFF00B60497 /* input_keyboard.c */; }; + B32299512878D46F00585AD8 /* performance_counters.c in Sources */ = {isa = PBXBuildFile; fileRef = B34DC3782867180300B60497 /* performance_counters.c */; }; + B32299672878DBE000585AD8 /* dynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = B34DC36B286717AE00B60497 /* dynamic.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B322996C28792B4000585AD8 /* movie.c in Sources */ = {isa = PBXBuildFile; fileRef = B3225169286C6F2A001FDF42 /* movie.c */; }; + B322996E28792BA000585AD8 /* nullinput.c in Sources */ = {isa = PBXBuildFile; fileRef = B34DC4ED28671EFF00B60497 /* nullinput.c */; }; B3296E8126C67EFA0088AC32 /* CocoaLumberjack+NSLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */; }; - B3296E8226C67EFA0088AC32 /* CocoaLumberjack+NSLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */; }; B3296E8726C67F660088AC32 /* CocoaLumberjackSwiftLogBackend in Frameworks */ = {isa = PBXBuildFile; productRef = B3296E8626C67F660088AC32 /* CocoaLumberjackSwiftLogBackend */; }; - B3296E8926C67F6B0088AC32 /* CocoaLumberjackSwiftLogBackend in Frameworks */ = {isa = PBXBuildFile; productRef = B3296E8826C67F6B0088AC32 /* CocoaLumberjackSwiftLogBackend */; }; B3296E9F26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E9E26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift */; }; - B3296EA026C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E9E26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift */; }; B3296EA226C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296EA126C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift */; }; - B3296EA326C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296EA126C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift */; }; B336B8F126B3985B00960A81 /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B336B8F026B3985B00960A81 /* CocoaLumberjackSwift */; }; - B336B8F426B398A900960A81 /* Reachability in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = B336B8F326B398A900960A81 /* Reachability */; }; - B336B8F826B3991500960A81 /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B336B8F726B3991500960A81 /* CocoaLumberjackSwift */; }; + B336B8F426B398A900960A81 /* Reachability in Frameworks */ = {isa = PBXBuildFile; platformFilters = (ios, maccatalyst, tvos, ); productRef = B336B8F326B398A900960A81 /* Reachability */; }; B33FB2EB279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */; }; - B33FB2EC279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */; }; - B33FB2ED279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EA279BE0CC0013AAD8 /* CoreOptions+Serialization.swift */; }; B33FB2EF279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */; }; - B33FB2F0279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */; }; - B33FB2F1279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2EE279BE0F50013AAD8 /* CoreOptionValueDisplay.swift */; }; B33FB2F3279BE1320013AAD8 /* CoreOptions+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */; }; - B33FB2F4279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */; }; - B33FB2F5279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F2279BE1320013AAD8 /* CoreOptions+Protocols.swift */; }; B33FB2F8279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */; }; - B33FB2F9279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */; }; - B33FB2FA279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */; }; B33FB2FC279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */; }; - B33FB2FD279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */; }; - B33FB2FE279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */; }; B33FB300279BE1E40013AAD8 /* OptionDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */; }; - B33FB301279BE1E40013AAD8 /* OptionDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */; }; - B33FB302279BE1E40013AAD8 /* OptionDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */; }; B33FB304279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */; }; - B33FB305279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */; }; - B33FB306279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */; }; B33FB308279BE2460013AAD8 /* CoreOptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */; }; - B33FB309279BE2460013AAD8 /* CoreOptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */; }; - B33FB30A279BE2460013AAD8 /* CoreOptionValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */; }; B33FB30D279BE2710013AAD8 /* CoreOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB30C279BE2710013AAD8 /* CoreOptional.swift */; }; - B33FB30E279BE2710013AAD8 /* CoreOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB30C279BE2710013AAD8 /* CoreOptional.swift */; }; - B33FB30F279BE2710013AAD8 /* CoreOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33FB30C279BE2710013AAD8 /* CoreOptional.swift */; }; + B342325B286EB4060033EFA5 /* dylib.c in Sources */ = {isa = PBXBuildFile; fileRef = B34DC6452867202D00B60497 /* dylib.c */; }; + B3423260286EB5CA0033EFA5 /* dynamic_dummy.c in Sources */ = {isa = PBXBuildFile; fileRef = B34DC59528671EFF00B60497 /* dynamic_dummy.c */; }; B3447E86218B7E4B00557ACE /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E7F218B7E4B00557ACE /* CABitOperations.h */; }; - B3447E87218B7E4B00557ACE /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E7F218B7E4B00557ACE /* CABitOperations.h */; }; B3447E88218B7E4B00557ACE /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B3447E89218B7E4B00557ACE /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */; settings = {ATTRIBUTES = (Private, ); }; }; B3447E8A218B7E4B00557ACE /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */; }; - B3447E8B218B7E4B00557ACE /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */; }; B3447E8C218B7E4B00557ACE /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E82218B7E4B00557ACE /* CAAutoDisposer.h */; }; - B3447E8D218B7E4B00557ACE /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E82218B7E4B00557ACE /* CAAutoDisposer.h */; }; B3447E8E218B7E4B00557ACE /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E83218B7E4B00557ACE /* CAAtomic.h */; }; - B3447E8F218B7E4B00557ACE /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E83218B7E4B00557ACE /* CAAtomic.h */; }; B3447E90218B7E4B00557ACE /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */; }; - B3447E91218B7E4B00557ACE /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */; }; B3447E92218B7E4B00557ACE /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E85218B7E4B00557ACE /* CARingBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B3447E93218B7E4B00557ACE /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3447E85218B7E4B00557ACE /* CARingBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; B3447F9B218C1CD200557ACE /* PVSettingsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3447F9A218C1CD200557ACE /* PVSettingsModel.swift */; }; - B3447F9C218C1CD200557ACE /* PVSettingsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3447F9A218C1CD200557ACE /* PVSettingsModel.swift */; }; B34AB5732106DC3700C45F09 /* PVProvenanceLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89D20B73D6400C5E502 /* PVProvenanceLogging.m */; }; B34AB5742106DC4100C45F09 /* PVLogEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89920B73D5F00C5E502 /* PVLogEntry.m */; }; B34AB5752106DC4100C45F09 /* PVLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B302F89E20B73D6400C5E502 /* PVLogging.m */; }; @@ -145,102 +61,63 @@ B34AB57E2106DC6100C45F09 /* PVEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D601D6B90BD00060D71 /* PVEmulatorCore.m */; }; B34AB57F2106DC6100C45F09 /* PVEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */; }; B34AB8642106F2F200C45F09 /* PVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C96EBB1D62C54D003F1E93 /* PVSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B34AB8652106F2F200C45F09 /* PVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B3C96EBB1D62C54D003F1E93 /* PVSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3532B3721A7B736006CDA0F /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96ED81D62C5E7003F1E93 /* PVSupport.framework */; }; B3532B3F21A7B753006CDA0F /* PVSettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3532B3E21A7B753006CDA0F /* PVSettingsTests.swift */; }; B3532C3621A925C2006CDA0F /* SortOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3532C3521A925C1006CDA0F /* SortOption.swift */; }; - B3532C3721A925C2006CDA0F /* SortOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3532C3521A925C1006CDA0F /* SortOption.swift */; }; - B35E6C38207EE15D0040709A /* CoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35E6C36207EE15D0040709A /* CoreOptions.swift */; }; - B372638426EA015700E95488 /* CocoaLumberjack+swift-log.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */; }; + B364D4B42870E5F600B93A4B /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = B34DC6D92867202D00B60497 /* libretro.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B36C41052898776C00EAEF59 /* retro_netplay.m in Sources */ = {isa = PBXBuildFile; fileRef = B36C41042898776C00EAEF59 /* retro_netplay.m */; }; + B36C41062898776C00EAEF59 /* retro_netplay.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B36C41032898776C00EAEF59 /* retro_netplay.h */; }; + B3702311287256DA00B3F6DA /* retro_inline.h in Headers */ = {isa = PBXBuildFile; fileRef = B34DC6C02867202D00B60497 /* retro_inline.h */; settings = {ATTRIBUTES = (Public, ); }; }; B372638526EA015800E95488 /* CocoaLumberjack+swift-log.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */; }; + B392849128670348003BAC21 /* PVLibRetro.h in Headers */ = {isa = PBXBuildFile; fileRef = B392849028670348003BAC21 /* PVLibRetro.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3928499286703CD003BAC21 /* PVLibRetroCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3928497286703CD003BAC21 /* PVLibRetroCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B392849A286703CD003BAC21 /* PVLibRetroCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3928498286703CD003BAC21 /* PVLibRetroCore.m */; }; + B392849B286703F2003BAC21 /* PVSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C96ED81D62C5E7003F1E93 /* PVSupport.framework */; }; B39C29C727A0FADF0078D028 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; - B39C29C827A0FADF0078D028 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; - B39C29C927A0FAE00078D028 /* OERingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */; }; - B39C29CD27A10EE40078D028 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; B39C29CE27A10EE50078D028 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; - B39C29CF27A10EE50078D028 /* OEGameAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */; }; + B3A41BCF286E5E660054E9A5 /* retro.m in Sources */ = {isa = PBXBuildFile; fileRef = B3225130286C4728001FDF42 /* retro.m */; }; B3A4FB5A278FE45D00A65248 /* OEGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A4FB59278FE45C00A65248 /* OEGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3A4FB5B278FE45D00A65248 /* OEGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A4FB59278FE45C00A65248 /* OEGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3A4FB5C278FE45D00A65248 /* OEGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A4FB59278FE45C00A65248 /* OEGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3A74C8B20522B04001D3D2E /* PVEmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */; }; B3AB37B321880FA5009D9244 /* iCadeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378B2187F9A9009D9244 /* iCadeState.swift */; }; - B3AB37B421880FA6009D9244 /* iCadeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378B2187F9A9009D9244 /* iCadeState.swift */; }; B3AB37BD218812BB009D9244 /* iCadeReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37B02187FC4B009D9244 /* iCadeReaderView.swift */; }; - B3AB37BE218812BC009D9244 /* iCadeReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37B02187FC4B009D9244 /* iCadeReaderView.swift */; }; B3AB37BF218814A7009D9244 /* PViCadeReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37892187F9A9009D9244 /* PViCadeReader.swift */; }; - B3AB37C0218814A8009D9244 /* PViCadeReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37892187F9A9009D9244 /* PViCadeReader.swift */; }; B3AB37DA21881670009D9244 /* PViCadeGamepadButtonInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378F2187F9A9009D9244 /* PViCadeGamepadButtonInput.swift */; }; - B3AB37DB21881671009D9244 /* PViCadeGamepadButtonInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378F2187F9A9009D9244 /* PViCadeGamepadButtonInput.swift */; }; B3AB37DC21881869009D9244 /* PViCadeInputAxis.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378A2187F9A9009D9244 /* PViCadeInputAxis.swift */; }; - B3AB37DD21881869009D9244 /* PViCadeInputAxis.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378A2187F9A9009D9244 /* PViCadeInputAxis.swift */; }; B3AB37DE21881873009D9244 /* PViCadeGamepadDirectionPad.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37872187F9A9009D9244 /* PViCadeGamepadDirectionPad.swift */; }; - B3AB37DF21881874009D9244 /* PViCadeGamepadDirectionPad.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37872187F9A9009D9244 /* PViCadeGamepadDirectionPad.swift */; }; B3AB37E021881955009D9244 /* PViCadeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378E2187F9A9009D9244 /* PViCadeController.swift */; }; - B3AB37E121881956009D9244 /* PViCadeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378E2187F9A9009D9244 /* PViCadeController.swift */; }; B3AB37E321881A82009D9244 /* PViCadeGamepad.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37912187F9A9009D9244 /* PViCadeGamepad.swift */; }; - B3AB37E421881A83009D9244 /* PViCadeGamepad.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37912187F9A9009D9244 /* PViCadeGamepad.swift */; }; B3AB37E721881B6D009D9244 /* iCadeControllerSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37882187F9A9009D9244 /* iCadeControllerSetting.swift */; }; - B3AB37E821881B6E009D9244 /* iCadeControllerSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37882187F9A9009D9244 /* iCadeControllerSetting.swift */; }; B3AB37E921881B7A009D9244 /* PViCade8BitdoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378C2187F9A9009D9244 /* PViCade8BitdoController.swift */; }; B3AB37EA21881B7A009D9244 /* PViCadeMocuteController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37922187F9A9009D9244 /* PViCadeMocuteController.swift */; }; B3AB37EB21881B7A009D9244 /* PViCadeSteelSeriesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37902187F9A9009D9244 /* PViCadeSteelSeriesController.swift */; }; - B3AB37EC21881B7B009D9244 /* PViCade8BitdoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB378C2187F9A9009D9244 /* PViCade8BitdoController.swift */; }; - B3AB37ED21881B7B009D9244 /* PViCadeMocuteController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37922187F9A9009D9244 /* PViCadeMocuteController.swift */; }; - B3AB37EE21881B7B009D9244 /* PViCadeSteelSeriesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3AB37902187F9A9009D9244 /* PViCadeSteelSeriesController.swift */; }; B3AF6FD821916168000FA7F9 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FD721916168000FA7F9 /* GameController.framework */; }; B3AF6FDA2191616C000FA7F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FD92191616C000FA7F9 /* Foundation.framework */; }; - B3AF6FDD219161BC000FA7F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FDC219161BC000FA7F9 /* Foundation.framework */; }; - B3AF6FDF219161C0000FA7F9 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3AF6FDE219161C0000FA7F9 /* GameController.framework */; }; B3B1A740279021C4004D1EF2 /* AHAP in Resources */ = {isa = PBXBuildFile; fileRef = B3B1A73F279021C4004D1EF2 /* AHAP */; }; - B3B1A741279021C4004D1EF2 /* AHAP in Resources */ = {isa = PBXBuildFile; fileRef = B3B1A73F279021C4004D1EF2 /* AHAP */; }; - B3B1A742279021C4004D1EF2 /* AHAP in Resources */ = {isa = PBXBuildFile; fileRef = B3B1A73F279021C4004D1EF2 /* AHAP */; }; - B3B492CB26B3A96B000B426B /* Reachability in Frameworks */ = {isa = PBXBuildFile; productRef = B3B492CA26B3A96B000B426B /* Reachability */; }; - B3C96EA71D62C3BE003F1E93 /* DebugUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4E718C1A6C699F005CA80F /* DebugUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96EA81D62C3C3003F1E93 /* OEGameAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69117F748F80031B1C9 /* OEGameAudio.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96EAC1D62C3C3003F1E93 /* TPCircularBuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */; }; - B3C96EAD1D62C3C3003F1E93 /* TPCircularBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96EAE1D62C3C7003F1E93 /* NSObject+PVAbstractAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA6A017F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3C96EAF1D62C3C7003F1E93 /* NSObject+PVAbstractAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA6A117F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.m */; }; + B3B3D17428712EE1008A0E2F /* msg_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = B322515C286C6F29001FDF42 /* msg_hash.c */; }; B3C96EC91D62C5E7003F1E93 /* OEGameAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69117F748F80031B1C9 /* OEGameAudio.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C96ECA1D62C5E7003F1E93 /* DebugUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4E718C1A6C699F005CA80F /* DebugUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C96ECC1D62C5E7003F1E93 /* NSObject+PVAbstractAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA6A017F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3C96ED01D62C5E7003F1E93 /* TPCircularBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3CA5B5126E9E4D500687B27 /* CocoaLumberjack in Frameworks */ = {isa = PBXBuildFile; productRef = B3CA5B5026E9E4D500687B27 /* CocoaLumberjack */; }; B3CA5B5326E9E4DC00687B27 /* CocoaLumberjack in Frameworks */ = {isa = PBXBuildFile; productRef = B3CA5B5226E9E4DC00687B27 /* CocoaLumberjack */; }; B3CDEEBC21D4C3E6000C55F7 /* ArchiveSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEBB21D4C3E6000C55F7 /* ArchiveSupport.swift */; }; - B3CDEEBD21D4C3E6000C55F7 /* ArchiveSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEBB21D4C3E6000C55F7 /* ArchiveSupport.swift */; }; B3CDEEBF21D4C41D000C55F7 /* DiscSwappable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEBE21D4C41D000C55F7 /* DiscSwappable.swift */; }; - B3CDEEC021D4C41D000C55F7 /* DiscSwappable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEBE21D4C41D000C55F7 /* DiscSwappable.swift */; }; B3CDEEC221D4C454000C55F7 /* Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC121D4C454000C55F7 /* Controls.swift */; }; - B3CDEEC321D4C454000C55F7 /* Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC121D4C454000C55F7 /* Controls.swift */; }; B3CDEEC521D4C490000C55F7 /* CoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC421D4C490000C55F7 /* CoreActions.swift */; }; - B3CDEEC621D4C490000C55F7 /* CoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC421D4C490000C55F7 /* CoreActions.swift */; }; B3CDEEC821D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC721D4C4E5000C55F7 /* SaveStateSupport.swift */; }; - B3CDEEC921D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CDEEC721D4C4E5000C55F7 /* SaveStateSupport.swift */; }; B3CEC5BC2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */; }; - B3CEC5BD2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */; }; - B3CEC5BE2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CEC5BB2794E9FD004A7CC1 /* PVGameControllerUtilities.swift */; }; B3CEC5C127952165004A7CC1 /* NSLogger in Frameworks */ = {isa = PBXBuildFile; productRef = B3CEC5C027952165004A7CC1 /* NSLogger */; }; - B3CEC5C3279521EC004A7CC1 /* NSLogger in Frameworks */ = {isa = PBXBuildFile; productRef = B3CEC5C2279521EC004A7CC1 /* NSLogger */; }; B3D0EE20277FE85F002DC0A5 /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */; }; - B3D0EE21277FE85F002DC0A5 /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */; }; - B3D0EE26277FE880002DC0A5 /* HapticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */; }; - B3D0EE28277FE8C9002DC0A5 /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D0EE27277FE8C9002DC0A5 /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; B3D0EE2A277FE8E1002DC0A5 /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D0EE29277FE8E0002DC0A5 /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + B3D180A328964C40001207AF /* PVLibRetroCore+Controls.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D180A128964C3B001207AF /* PVLibRetroCore+Controls.m */; }; + B3D180A528964C40001207AF /* PVLibRetroCore+Saves.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D180A228964C40001207AF /* PVLibRetroCore+Saves.m */; }; B3D73D3D1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3D73D3E1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3D73D401EA15BB20023925B /* NSFileManager+OEHashingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D73D3C1EA15BB20023925B /* NSFileManager+OEHashingAdditions.m */; }; - B3E6DADF20B7BF8600454DD4 /* UIDeviceExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E6DADD20B7BF8600454DD4 /* UIDeviceExtension.swift */; }; + B3DF963F288D6B5800300A38 /* PVLibRetroGLESCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3DF963D288D6B5800300A38 /* PVLibRetroGLESCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3DF9641288D6B5800300A38 /* PVLibRetroGLESCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3DF963E288D6B5800300A38 /* PVLibRetroGLESCore.m */; }; + B3EA6C91292617F300010224 /* libretro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B322512D286C4728001FDF42 /* libretro.a */; }; B3F0846C2188CA7A00FF39EE /* CocoaLumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */; }; - B3F0846D2188CA7A00FF39EE /* CocoaLumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */; }; B3FA5D5B1D6B908300060D71 /* OERingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D591D6B908300060D71 /* OERingBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3FA5D5C1D6B908300060D71 /* OERingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D591D6B908300060D71 /* OERingBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3FA5D631D6B90BD00060D71 /* PVEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D5F1D6B90BD00060D71 /* PVEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3FA5D641D6B90BD00060D71 /* PVEmulatorCore.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FA5D5F1D6B90BD00060D71 /* PVEmulatorCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3FA5D661D6B90BD00060D71 /* PVEmulatorCore.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FA5D601D6B90BD00060D71 /* PVEmulatorCore.m */; }; B3FFF02D26E9E65800A33143 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3FFF02C26E9E65800A33143 /* AVFoundation.framework */; }; CF87D333258AB6B300838AF8 /* GameWithCheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D332258AB6B300838AF8 /* GameWithCheat.swift */; }; - CF87D334258AB6B300838AF8 /* GameWithCheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF87D332258AB6B300838AF8 /* GameWithCheat.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -251,8 +128,45 @@ remoteGlobalIDString = B3C96EBE1D62C5E7003F1E93; remoteInfo = "PVSupport-iOS"; }; + B392849D286703F2003BAC21 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1ACEA63C17F7467D0031B1C9 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B3C96EBE1D62C5E7003F1E93; + remoteInfo = "PVSupport-iOS"; + }; + B3EA6C92292617F300010224 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1ACEA63C17F7467D0031B1C9 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B322512C286C4728001FDF42; + remoteInfo = retro; + }; /* End PBXContainerItemProxy section */ +/* Begin PBXCopyFilesBuildPhase section */ + B322512B286C4728001FDF42 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + B3225132286C4728001FDF42 /* retro.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B36C40FF2898776C00EAEF59 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + B36C41062898776C00EAEF59 /* retro_netplay.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 0592894D1DC194FD0012644D /* RealTimeThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealTimeThread.h; sourceTree = ""; }; 0592894E1DC194FD0012644D /* RealTimeThread.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RealTimeThread.m; sourceTree = ""; }; @@ -264,16 +178,97 @@ 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPCircularBuffer.h; sourceTree = ""; }; 1ACEA6A017F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+PVAbstractAdditions.h"; sourceTree = ""; }; 1ACEA6A117F74A5A0031B1C9 /* NSObject+PVAbstractAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+PVAbstractAdditions.m"; sourceTree = ""; }; + 557DCAB0292A91E000045B02 /* ThemeOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeOption.swift; sourceTree = ""; }; B302F89920B73D5F00C5E502 /* PVLogEntry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVLogEntry.m; sourceTree = ""; }; B302F89A20B73D6200C5E502 /* PVLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVLogging.h; sourceTree = ""; }; B302F89B20B73D6300C5E502 /* PVLogEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVLogEntry.h; sourceTree = ""; }; B302F89C20B73D6300C5E502 /* PVProvenanceLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVProvenanceLogging.h; sourceTree = ""; }; B302F89D20B73D6400C5E502 /* PVProvenanceLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVProvenanceLogging.m; sourceTree = ""; }; B302F89E20B73D6400C5E502 /* PVLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVLogging.m; sourceTree = ""; }; - B305EF91276B4E41003AE510 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B305EF99276B4F0A003AE510 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/GameKit.framework; sourceTree = DEVELOPER_DIR; }; B305EF9B276B4FDC003AE510 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + B306814C2895D405003E465F /* PVLibRetroCore+Cheats.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVLibRetroCore+Cheats.m"; sourceTree = ""; }; + B306814D2895D406003E465F /* PVLibRetroCore+Video.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVLibRetroCore+Video.m"; sourceTree = ""; }; + B306814E2895D406003E465F /* PVLibRetroCore+Audio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVLibRetroCore+Audio.m"; sourceTree = ""; }; + B306814F2895D407003E465F /* PVLibRetroCore+Options.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVLibRetroCore+Options.m"; sourceTree = ""; }; + B30F8012290516B900F21217 /* ScreenType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScreenType.swift; sourceTree = ""; }; B3173802278419A2002D3ACD /* Build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Build.xcconfig; path = ../Build.xcconfig; sourceTree = ""; }; + B322512D286C4728001FDF42 /* libretro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libretro.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B322512F286C4728001FDF42 /* retro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro.h; sourceTree = ""; }; + B3225130286C4728001FDF42 /* retro.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = retro.m; sourceTree = ""; }; + B322514D286C6F28001FDF42 /* patch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = patch.c; sourceTree = ""; }; + B322514E286C6F28001FDF42 /* content.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = content.h; sourceTree = ""; }; + B322514F286C6F28001FDF42 /* general.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = general.h; sourceTree = ""; }; + B3225150286C6F28001FDF42 /* cheevos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cheevos.h; sourceTree = ""; }; + B3225151286C6F28001FDF42 /* config.features.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.features.h; sourceTree = ""; }; + B3225152286C6F28001FDF42 /* file_path_str.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = file_path_str.c; sourceTree = ""; }; + B3225153286C6F28001FDF42 /* msg_hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msg_hash.h; sourceTree = ""; }; + B3225154286C6F28001FDF42 /* database_info.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = database_info.c; sourceTree = ""; }; + B3225155286C6F28001FDF42 /* command.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = command.c; sourceTree = ""; }; + B3225156286C6F28001FDF42 /* file_path_special.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = file_path_special.c; sourceTree = ""; }; + B3225157286C6F29001FDF42 /* config_file_userdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config_file_userdata.h; sourceTree = ""; }; + B3225158286C6F29001FDF42 /* git_version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = git_version.h; sourceTree = ""; }; + B3225159286C6F29001FDF42 /* command.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = command.h; sourceTree = ""; }; + B322515A286C6F29001FDF42 /* file_path_special.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = file_path_special.h; sourceTree = ""; }; + B322515B286C6F29001FDF42 /* list_special.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = list_special.c; sourceTree = ""; }; + B322515C286C6F29001FDF42 /* msg_hash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msg_hash.c; sourceTree = ""; }; + B322515D286C6F29001FDF42 /* configuration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = configuration.c; sourceTree = ""; }; + B322515E286C6F29001FDF42 /* lakka.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lakka.h; sourceTree = ""; }; + B322515F286C6F29001FDF42 /* config_file_userdata.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = config_file_userdata.c; sourceTree = ""; }; + B3225160286C6F29001FDF42 /* git_version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = git_version.c; sourceTree = ""; }; + B3225161286C6F29001FDF42 /* movie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; + B3225162286C6F29001FDF42 /* configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configuration.h; sourceTree = ""; }; + B3225163286C6F29001FDF42 /* database_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = database_info.h; sourceTree = ""; }; + B3225164286C6F29001FDF42 /* autosave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = autosave.h; sourceTree = ""; }; + B3225165286C6F29001FDF42 /* cheevos.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cheevos.c; sourceTree = ""; }; + B3225166286C6F29001FDF42 /* playlist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = playlist.c; sourceTree = ""; }; + B3225167286C6F29001FDF42 /* list_special.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = list_special.h; sourceTree = ""; }; + B3225168286C6F29001FDF42 /* config.def.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.def.h; sourceTree = ""; }; + B3225169286C6F2A001FDF42 /* movie.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = movie.c; sourceTree = ""; }; + B322516A286C6F2A001FDF42 /* playlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = playlist.h; sourceTree = ""; }; + B322516B286C6F2A001FDF42 /* patch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = patch.h; sourceTree = ""; }; + B3225179286C6F34001FDF42 /* runloop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = runloop.c; sourceTree = ""; }; + B322517A286C6F35001FDF42 /* verbosity.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = verbosity.c; sourceTree = ""; }; + B322517B286C6F35001FDF42 /* system.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = system.h; sourceTree = ""; }; + B322517C286C6F35001FDF42 /* retroarch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = retroarch.c; sourceTree = ""; }; + B322517D286C6F35001FDF42 /* verbosity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = verbosity.h; sourceTree = ""; }; + B322517E286C6F35001FDF42 /* runloop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = runloop.h; sourceTree = ""; }; + B322517F286C6F35001FDF42 /* retroarch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = retroarch.h; sourceTree = ""; }; + B3225183286C6FA1001FDF42 /* core_backup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = core_backup.c; sourceTree = ""; }; + B3225184286C6FA2001FDF42 /* core_backup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core_backup.h; sourceTree = ""; }; + B3225199286C827D001FDF42 /* task_powerstate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = task_powerstate.h; sourceTree = ""; }; + B322519A286C827D001FDF42 /* task_autodetect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_autodetect.c; sourceTree = ""; }; + B322519B286C827D001FDF42 /* task_netplay_find_content.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_netplay_find_content.c; sourceTree = ""; }; + B322519C286C827D001FDF42 /* task_manual_content_scan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_manual_content_scan.c; sourceTree = ""; }; + B322519D286C827D001FDF42 /* task_netplay_nat_traversal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_netplay_nat_traversal.c; sourceTree = ""; }; + B322519E286C827D001FDF42 /* task_core_backup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_core_backup.c; sourceTree = ""; }; + B322519F286C827D001FDF42 /* task_content_disc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_content_disc.c; sourceTree = ""; }; + B32251A0286C827D001FDF42 /* task_screenshot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_screenshot.c; sourceTree = ""; }; + B32251A1286C827D001FDF42 /* task_file_transfer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_file_transfer.c; sourceTree = ""; }; + B32251A2286C827D001FDF42 /* task_audio_mixer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = task_audio_mixer.h; sourceTree = ""; }; + B32251A3286C827E001FDF42 /* task_content.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = task_content.h; sourceTree = ""; }; + B32251A4286C827E001FDF42 /* task_database.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_database.c; sourceTree = ""; }; + B32251A5286C827E001FDF42 /* task_save.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_save.c; sourceTree = ""; }; + B32251A6286C827E001FDF42 /* task_playlist_manager.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_playlist_manager.c; sourceTree = ""; }; + B32251A7286C827E001FDF42 /* task_autodetect_blissbox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_autodetect_blissbox.c; sourceTree = ""; }; + B32251A8286C827E001FDF42 /* task_powerstate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_powerstate.c; sourceTree = ""; }; + B32251A9286C827E001FDF42 /* task_image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_image.c; sourceTree = ""; }; + B32251AA286C827E001FDF42 /* task_bluetooth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_bluetooth.c; sourceTree = ""; }; + B32251AB286C827E001FDF42 /* tasks_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tasks_internal.h; sourceTree = ""; }; + B32251AC286C827E001FDF42 /* task_core_updater.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_core_updater.c; sourceTree = ""; }; + B32251AD286C827E001FDF42 /* task_overlay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_overlay.c; sourceTree = ""; }; + B32251AE286C827E001FDF42 /* task_audio_mixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_audio_mixer.c; sourceTree = ""; }; + B32251AF286C827E001FDF42 /* task_decompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_decompress.c; sourceTree = ""; }; + B32251B0286C827E001FDF42 /* task_file_transfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = task_file_transfer.h; sourceTree = ""; }; + B32251B1286C827E001FDF42 /* task_netplay_lan_scan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_netplay_lan_scan.c; sourceTree = ""; }; + B32251B2286C827E001FDF42 /* task_wifi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_wifi.c; sourceTree = ""; }; + B32251B3286C827E001FDF42 /* task_database_cue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_database_cue.c; sourceTree = ""; }; + B32251B4286C827E001FDF42 /* task_content.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_content.c; sourceTree = ""; }; + B32251B5286C827E001FDF42 /* task_pl_thumbnail_download.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_pl_thumbnail_download.c; sourceTree = ""; }; + B32251B6286C827E001FDF42 /* task_http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_http.c; sourceTree = ""; }; + B32251B7286C827E001FDF42 /* task_patch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_patch.c; sourceTree = ""; }; + B32299412878C5A000585AD8 /* PVLibRetro-Build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "PVLibRetro-Build.xcconfig"; sourceTree = ""; }; + B322994E2878D18D00585AD8 /* PVLibRetro-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PVLibRetro-Prefix.pch"; sourceTree = ""; }; B324C3152191963B009F4EDC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CocoaLumberjack+NSLogger.swift"; sourceTree = ""; }; B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CocoaLumberjack+swift-log.swift"; sourceTree = ""; }; @@ -296,11 +291,724 @@ B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioTimeStamp.cpp; sourceTree = ""; }; B3447E85218B7E4B00557ACE /* CARingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CARingBuffer.h; sourceTree = ""; }; B3447F9A218C1CD200557ACE /* PVSettingsModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PVSettingsModel.swift; sourceTree = ""; }; + B34DC364286717AD00B60497 /* core_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core_info.h; sourceTree = ""; }; + B34DC365286717AD00B60497 /* driver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = driver.c; sourceTree = ""; }; + B34DC366286717AD00B60497 /* defaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defaults.h; sourceTree = ""; }; + B34DC367286717AD00B60497 /* driver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = driver.h; sourceTree = ""; }; + B34DC368286717AD00B60497 /* core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; + B34DC369286717AE00B60497 /* core_impl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = core_impl.c; sourceTree = ""; }; + B34DC36A286717AE00B60497 /* core_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core_type.h; sourceTree = ""; }; + B34DC36B286717AE00B60497 /* dynamic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dynamic.h; sourceTree = ""; }; + B34DC36C286717AE00B60497 /* core_info.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = core_info.c; sourceTree = ""; }; + B34DC36D286717AE00B60497 /* dynamic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dynamic.c; sourceTree = ""; }; + B34DC3782867180300B60497 /* performance_counters.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = performance_counters.c; sourceTree = ""; }; + B34DC3792867180300B60497 /* performance_counters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = performance_counters.h; sourceTree = ""; }; + B34DC37D28671EFD00B60497 /* frontend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = frontend.c; sourceTree = ""; }; + B34DC37F28671EFD00B60497 /* platform_bsd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_bsd.c; sourceTree = ""; }; + B34DC38028671EFD00B60497 /* platform_gx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_gx.c; sourceTree = ""; }; + B34DC38128671EFD00B60497 /* platform_qnx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_qnx.c; sourceTree = ""; }; + B34DC38228671EFD00B60497 /* platform_xdk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = platform_xdk.cpp; sourceTree = ""; }; + B34DC38328671EFD00B60497 /* platform_darwin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = platform_darwin.m; sourceTree = ""; }; + B34DC38428671EFD00B60497 /* platform_emscripten.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_emscripten.c; sourceTree = ""; }; + B34DC38528671EFD00B60497 /* platform_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = platform_linux.h; sourceTree = ""; }; + B34DC38628671EFD00B60497 /* platform_null.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_null.c; sourceTree = ""; }; + B34DC38728671EFD00B60497 /* platform_ps3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_ps3.c; sourceTree = ""; }; + B34DC38828671EFD00B60497 /* platform_xenon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_xenon.c; sourceTree = ""; }; + B34DC38928671EFD00B60497 /* platform_psp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_psp.c; sourceTree = ""; }; + B34DC38A28671EFD00B60497 /* platform_wii.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_wii.c; sourceTree = ""; }; + B34DC38B28671EFD00B60497 /* platform_ctr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_ctr.c; sourceTree = ""; }; + B34DC38C28671EFD00B60497 /* platform_linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_linux.c; sourceTree = ""; }; + B34DC38D28671EFD00B60497 /* platform_win32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = platform_win32.c; sourceTree = ""; }; + B34DC38E28671EFD00B60497 /* frontend_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frontend_driver.h; sourceTree = ""; }; + B34DC38F28671EFD00B60497 /* frontend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = frontend.h; sourceTree = ""; }; + B34DC39028671EFD00B60497 /* frontend_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = frontend_driver.c; sourceTree = ""; }; + B34DC39128671EFD00B60497 /* frontend_salamander.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = frontend_salamander.c; sourceTree = ""; }; + B34DC39328671EFD00B60497 /* cheat_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cheat_manager.h; sourceTree = ""; }; + B34DC39428671EFD00B60497 /* state_manager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = state_manager.c; sourceTree = ""; }; + B34DC39528671EFD00B60497 /* core_option_manager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = core_option_manager.c; sourceTree = ""; }; + B34DC39628671EFD00B60497 /* cheat_manager.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cheat_manager.c; sourceTree = ""; }; + B34DC39728671EFD00B60497 /* core_option_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_option_manager.h; sourceTree = ""; }; + B34DC39828671EFD00B60497 /* state_manager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = state_manager.h; sourceTree = ""; }; + B34DC39A28671EFD00B60497 /* audio_thread_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_thread_wrapper.c; sourceTree = ""; }; + B34DC39C28671EFD00B60497 /* rsound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsound.h; sourceTree = ""; }; + B34DC39D28671EFD00B60497 /* ps3_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps3_audio.c; sourceTree = ""; }; + B34DC39E28671EFD00B60497 /* coreaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = coreaudio.c; sourceTree = ""; }; + B34DC39F28671EFD00B60497 /* xaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xaudio.h; sourceTree = ""; }; + B34DC3A028671EFD00B60497 /* pulse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pulse.c; sourceTree = ""; }; + B34DC3A128671EFD00B60497 /* opensl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opensl.c; sourceTree = ""; }; + B34DC3A228671EFD00B60497 /* nullaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nullaudio.c; sourceTree = ""; }; + B34DC3A328671EFD00B60497 /* jack.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jack.c; sourceTree = ""; }; + B34DC3A428671EFD00B60497 /* rwebaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwebaudio.c; sourceTree = ""; }; + B34DC3A528671EFD00B60497 /* openal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = openal.c; sourceTree = ""; }; + B34DC3A628671EFD00B60497 /* alsa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alsa.c; sourceTree = ""; }; + B34DC3A728671EFD00B60497 /* ctr_csnd_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctr_csnd_audio.c; sourceTree = ""; }; + B34DC3A828671EFE00B60497 /* rsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rsound.c; sourceTree = ""; }; + B34DC3A928671EFE00B60497 /* ctr_dsp_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctr_dsp_audio.c; sourceTree = ""; }; + B34DC3AA28671EFE00B60497 /* roar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = roar.c; sourceTree = ""; }; + B34DC3AB28671EFE00B60497 /* dsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dsound.c; sourceTree = ""; }; + B34DC3AC28671EFE00B60497 /* psp_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp_audio.c; sourceTree = ""; }; + B34DC3AD28671EFE00B60497 /* alsathread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alsathread.c; sourceTree = ""; }; + B34DC3AE28671EFE00B60497 /* alsa_qsa.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alsa_qsa.c; sourceTree = ""; }; + B34DC3AF28671EFE00B60497 /* xenon360_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon360_audio.c; sourceTree = ""; }; + B34DC3B028671EFE00B60497 /* xaudio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = xaudio.cpp; sourceTree = ""; }; + B34DC3B128671EFE00B60497 /* oss.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = oss.c; sourceTree = ""; }; + B34DC3B228671EFE00B60497 /* sdl_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl_audio.c; sourceTree = ""; }; + B34DC3B328671EFE00B60497 /* gx_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_audio.c; sourceTree = ""; }; + B34DC3B428671EFE00B60497 /* audio_dsp_filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_dsp_filter.h; sourceTree = ""; }; + B34DC3B628671EFE00B60497 /* test-rate-control.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "test-rate-control.sh"; sourceTree = ""; }; + B34DC3B728671EFE00B60497 /* sinc_test.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = sinc_test.m; sourceTree = ""; }; + B34DC3B828671EFE00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC3B928671EFE00B60497 /* snr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snr.c; sourceTree = ""; }; + B34DC3BA28671EFE00B60497 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + B34DC3BB28671EFE00B60497 /* modified_bessel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = modified_bessel.m; sourceTree = ""; }; + B34DC3BC28671EFE00B60497 /* kaiser_window.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = kaiser_window.m; sourceTree = ""; }; + B34DC3BD28671EFE00B60497 /* audio_resampler_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_resampler_driver.c; sourceTree = ""; }; + B34DC3BF28671EFE00B60497 /* sinc_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sinc_resampler.c; sourceTree = ""; }; + B34DC3C028671EFE00B60497 /* cc_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cc_resampler.c; sourceTree = ""; }; + B34DC3C128671EFE00B60497 /* null_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_resampler.c; sourceTree = ""; }; + B34DC3C228671EFE00B60497 /* nearest_resampler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nearest_resampler.c; sourceTree = ""; }; + B34DC3C328671EFE00B60497 /* cc_resampler_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = cc_resampler_neon.S; sourceTree = ""; }; + B34DC3C428671EFE00B60497 /* sinc_resampler_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sinc_resampler_neon.S; sourceTree = ""; }; + B34DC3C528671EFE00B60497 /* audio_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_driver.h; sourceTree = ""; }; + B34DC3C628671EFE00B60497 /* audio_thread_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_thread_wrapper.h; sourceTree = ""; }; + B34DC3C728671EFE00B60497 /* audio_dsp_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_dsp_filter.c; sourceTree = ""; }; + B34DC3C828671EFE00B60497 /* audio_resampler_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_resampler_driver.h; sourceTree = ""; }; + B34DC3C928671EFE00B60497 /* audio_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = audio_driver.c; sourceTree = ""; }; + B34DC3CA28671EFE00B60497 /* librsound.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = librsound.c; sourceTree = ""; }; + B34DC3CC28671EFE00B60497 /* eq.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eq.c; sourceTree = ""; }; + B34DC3CD28671EFE00B60497 /* EQ.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EQ.dsp; sourceTree = ""; }; + B34DC3CE28671EFE00B60497 /* dspfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dspfilter.h; sourceTree = ""; }; + B34DC3CF28671EFE00B60497 /* phaser.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = phaser.c; sourceTree = ""; }; + B34DC3D028671EFE00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC3D128671EFE00B60497 /* chorus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chorus.c; sourceTree = ""; }; + B34DC3D228671EFE00B60497 /* Phaser.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Phaser.dsp; sourceTree = ""; }; + B34DC3D328671EFE00B60497 /* wahwah.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wahwah.c; sourceTree = ""; }; + B34DC3D428671EFE00B60497 /* IIR.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = IIR.dsp; sourceTree = ""; }; + B34DC3D528671EFE00B60497 /* HighShelfDampen.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = HighShelfDampen.dsp; sourceTree = ""; }; + B34DC3D628671EFE00B60497 /* EchoReverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = EchoReverb.dsp; sourceTree = ""; }; + B34DC3D728671EFE00B60497 /* iir.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iir.c; sourceTree = ""; }; + B34DC3D828671EFE00B60497 /* reverb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reverb.c; sourceTree = ""; }; + B34DC3D928671EFE00B60497 /* WahWah.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = WahWah.dsp; sourceTree = ""; }; + B34DC3DB28671EFE00B60497 /* fft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = ""; }; + B34DC3DC28671EFE00B60497 /* fft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fft.c; sourceTree = ""; }; + B34DC3DD28671EFE00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC3DE28671EFE00B60497 /* BassBoost.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = BassBoost.dsp; sourceTree = ""; }; + B34DC3DF28671EFE00B60497 /* Echo.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Echo.dsp; sourceTree = ""; }; + B34DC3E028671EFE00B60497 /* LowPassCPS.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = LowPassCPS.dsp; sourceTree = ""; }; + B34DC3E128671EFE00B60497 /* Panning.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Panning.dsp; sourceTree = ""; }; + B34DC3E228671EFE00B60497 /* panning.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = panning.c; sourceTree = ""; }; + B34DC3E328671EFE00B60497 /* Chorus.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Chorus.dsp; sourceTree = ""; }; + B34DC3E428671EFE00B60497 /* Reverb.dsp */ = {isa = PBXFileReference; lastKnownFileType = text; path = Reverb.dsp; sourceTree = ""; }; + B34DC3E528671EFE00B60497 /* echo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = echo.c; sourceTree = ""; }; + B34DC3E728671EFE00B60497 /* record_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = record_driver.h; sourceTree = ""; }; + B34DC3E928671EFE00B60497 /* record_null.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = record_null.c; sourceTree = ""; }; + B34DC3EA28671EFE00B60497 /* record_ffmpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = record_ffmpeg.c; sourceTree = ""; }; + B34DC3EB28671EFE00B60497 /* record_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = record_driver.c; sourceTree = ""; }; + B34DC3ED28671EFE00B60497 /* video_context_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_context_driver.h; sourceTree = ""; }; + B34DC3EF28671EFE00B60497 /* vivante_fbdev_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vivante_fbdev_ctx.c; sourceTree = ""; }; + B34DC3F028671EFE00B60497 /* cgl_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cgl_ctx.c; sourceTree = ""; }; + B34DC3F128671EFE00B60497 /* mali_fbdev_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mali_fbdev_ctx.c; sourceTree = ""; }; + B34DC3F228671EFE00B60497 /* drm_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = drm_ctx.c; sourceTree = ""; }; + B34DC3F328671EFE00B60497 /* xegl_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xegl_ctx.c; sourceTree = ""; }; + B34DC3F428671EFE00B60497 /* wayland_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wayland_ctx.c; sourceTree = ""; }; + B34DC3F528671EFE00B60497 /* gfx_null_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gfx_null_ctx.c; sourceTree = ""; }; + B34DC3F628671EFE00B60497 /* android_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = android_ctx.c; sourceTree = ""; }; + B34DC3F728671EFE00B60497 /* ps3_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps3_ctx.c; sourceTree = ""; }; + B34DC3F828671EFE00B60497 /* x_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x_ctx.c; sourceTree = ""; }; + B34DC3F928671EFE00B60497 /* khr_display_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = khr_display_ctx.c; sourceTree = ""; }; + B34DC3FA28671EFE00B60497 /* d3d_ctx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d_ctx.cpp; sourceTree = ""; }; + B34DC3FB28671EFE00B60497 /* wgl_ctx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wgl_ctx.cpp; sourceTree = ""; }; + B34DC3FC28671EFE00B60497 /* emscriptenegl_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = emscriptenegl_ctx.c; sourceTree = ""; }; + B34DC3FD28671EFE00B60497 /* bbqnx_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bbqnx_ctx.c; sourceTree = ""; }; + B34DC3FE28671EFE00B60497 /* cocoa_gl_ctx.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = cocoa_gl_ctx.m; sourceTree = ""; }; + B34DC3FF28671EFE00B60497 /* sdl_gl_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl_gl_ctx.c; sourceTree = ""; }; + B34DC40028671EFE00B60497 /* vc_egl_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vc_egl_ctx.c; sourceTree = ""; }; + B34DC40128671EFE00B60497 /* opendingux_fbdev_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = opendingux_fbdev_ctx.c; sourceTree = ""; }; + B34DC40228671EFE00B60497 /* osmesa_ctx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = osmesa_ctx.c; sourceTree = ""; }; + B34DC40328671EFE00B60497 /* video_state_python.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_state_python.c; sourceTree = ""; }; + B34DC40628671EFE00B60497 /* render_chain_gl_legacy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = render_chain_gl_legacy.c; sourceTree = ""; }; + B34DC40728671EFE00B60497 /* render_chain_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = render_chain_gl.h; sourceTree = ""; }; + B34DC40828671EFE00B60497 /* sunxi_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sunxi_gfx.c; sourceTree = ""; }; + B34DC40928671EFE00B60497 /* gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl.c; sourceTree = ""; }; + B34DC40A28671EFE00B60497 /* sdl_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl_gfx.c; sourceTree = ""; }; + B34DC40C28671EFE00B60497 /* render_chain_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = render_chain_driver.c; sourceTree = ""; }; + B34DC40D28671EFE00B60497 /* render_chain_null.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = render_chain_null.c; sourceTree = ""; }; + B34DC40E28671EFE00B60497 /* render_chain_cg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = render_chain_cg.cpp; sourceTree = ""; }; + B34DC40F28671EFE00B60497 /* render_chain_xdk.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = render_chain_xdk.cpp; sourceTree = ""; }; + B34DC41028671EFE00B60497 /* render_chain_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = render_chain_driver.h; sourceTree = ""; }; + B34DC41128671EFE00B60497 /* drm_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = drm_gfx.c; sourceTree = ""; }; + B34DC41228671EFE00B60497 /* ctr_gu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ctr_gu.h; sourceTree = ""; }; + B34DC41328671EFE00B60497 /* vg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vg.c; sourceTree = ""; }; + B34DC41428671EFE00B60497 /* gx_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_gfx.c; sourceTree = ""; }; + B34DC41528671EFE00B60497 /* psp1_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp1_gfx.c; sourceTree = ""; }; + B34DC41628671EFE00B60497 /* vita2d_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vita2d_gfx.c; sourceTree = ""; }; + B34DC41728671EFE00B60497 /* nullgfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nullgfx.c; sourceTree = ""; }; + B34DC41828671EFE00B60497 /* exynos_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = exynos_gfx.c; sourceTree = ""; }; + B34DC41928671EFE00B60497 /* d3d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d.h; sourceTree = ""; }; + B34DC41A28671EFE00B60497 /* xvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xvideo.c; sourceTree = ""; }; + B34DC41B28671EFE00B60497 /* vulkan.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan.c; sourceTree = ""; }; + B34DC41D28671EFE00B60497 /* pipeline_xmb_ribbon.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline_xmb_ribbon.glsl.frag.h; sourceTree = ""; }; + B34DC41E28671EFE00B60497 /* shaders_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shaders_common.h; sourceTree = ""; }; + B34DC41F28671EFE00B60497 /* pipeline_xmb_ribbon_simple.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline_xmb_ribbon_simple.glsl.frag.h; sourceTree = ""; }; + B34DC42028671EFE00B60497 /* core_alpha_blend.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_alpha_blend.glsl.vert.h; sourceTree = ""; }; + B34DC42128671EFE00B60497 /* modern_alpha_blend.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modern_alpha_blend.glsl.frag.h; sourceTree = ""; }; + B34DC42228671EFE00B60497 /* pipeline_xmb_ribbon_simple.cg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline_xmb_ribbon_simple.cg.h; sourceTree = ""; }; + B34DC42328671EFE00B60497 /* core_alpha_blend.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_alpha_blend.glsl.frag.h; sourceTree = ""; }; + B34DC42428671EFE00B60497 /* modern_alpha_blend.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modern_alpha_blend.glsl.vert.h; sourceTree = ""; }; + B34DC42528671EFE00B60497 /* opaque.cg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opaque.cg.h; sourceTree = ""; }; + B34DC42628671EFE00B60497 /* pipeline_nuklear.cg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline_nuklear.cg.h; sourceTree = ""; }; + B34DC42728671EFE00B60497 /* pipeline_nuklear.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline_nuklear.glsl.vert.h; sourceTree = ""; }; + B34DC42828671EFE00B60497 /* modern_opaque.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modern_opaque.glsl.vert.h; sourceTree = ""; }; + B34DC42928671EFE00B60497 /* modern_opaque.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modern_opaque.glsl.frag.h; sourceTree = ""; }; + B34DC42A28671EFE00B60497 /* pipeline_nuklear.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pipeline_nuklear.glsl.frag.h; sourceTree = ""; }; + B34DC42B28671EFE00B60497 /* modern_pipeline_xmb_ribbon.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modern_pipeline_xmb_ribbon.glsl.vert.h; sourceTree = ""; }; + B34DC42C28671EFE00B60497 /* core_opaque.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_opaque.glsl.vert.h; sourceTree = ""; }; + B34DC42D28671EFE00B60497 /* legacy_pipeline_xmb_ribbon.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = legacy_pipeline_xmb_ribbon.glsl.vert.h; sourceTree = ""; }; + B34DC42E28671EFE00B60497 /* legacy_opaque.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = legacy_opaque.glsl.vert.h; sourceTree = ""; }; + B34DC42F28671EFE00B60497 /* modern_pipeline_xmb_ribbon_simple.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = modern_pipeline_xmb_ribbon_simple.glsl.vert.h; sourceTree = ""; }; + B34DC43028671EFE00B60497 /* legacy_pipeline_xmb_ribbon_simple.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = legacy_pipeline_xmb_ribbon_simple.glsl.vert.h; sourceTree = ""; }; + B34DC43128671EFE00B60497 /* legacy_opaque.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = legacy_opaque.glsl.frag.h; sourceTree = ""; }; + B34DC43228671EFE00B60497 /* core_opaque.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = core_opaque.glsl.frag.h; sourceTree = ""; }; + B34DC43328671EFE00B60497 /* omap_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = omap_gfx.c; sourceTree = ""; }; + B34DC43428671EFE00B60497 /* drm_pixformats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = drm_pixformats.h; sourceTree = ""; }; + B34DC43628671EFE00B60497 /* opaque.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = opaque.vert; sourceTree = ""; }; + B34DC43728671EFE00B60497 /* alpha_blend.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = alpha_blend.frag; sourceTree = ""; }; + B34DC43828671EFE00B60497 /* ribbon.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = ribbon.vert; sourceTree = ""; }; + B34DC43928671EFE00B60497 /* ribbon_simple.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ribbon_simple.vert.inc; sourceTree = ""; }; + B34DC43A28671EFE00B60497 /* opaque.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = opaque.vert.inc; sourceTree = ""; }; + B34DC43B28671EFE00B60497 /* alpha_blend.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = alpha_blend.frag.inc; sourceTree = ""; }; + B34DC43C28671EFE00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC43D28671EFE00B60497 /* ribbon_simple.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = ribbon_simple.frag; sourceTree = ""; }; + B34DC43E28671EFE00B60497 /* ribbon.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ribbon.vert.inc; sourceTree = ""; }; + B34DC43F28671EFE00B60497 /* font.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = font.frag.inc; sourceTree = ""; }; + B34DC44028671EFE00B60497 /* ribbon.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ribbon.frag.inc; sourceTree = ""; }; + B34DC44128671EFE00B60497 /* ribbon.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = ribbon.frag; sourceTree = ""; }; + B34DC44228671EFE00B60497 /* font.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = font.frag; sourceTree = ""; }; + B34DC44328671EFE00B60497 /* alpha_blend.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = alpha_blend.vert; sourceTree = ""; }; + B34DC44428671EFE00B60497 /* opaque.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = opaque.frag; sourceTree = ""; }; + B34DC44528671EFE00B60497 /* alpha_blend.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = alpha_blend.vert.inc; sourceTree = ""; }; + B34DC44628671EFE00B60497 /* opaque.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = opaque.frag.inc; sourceTree = ""; }; + B34DC44728671EFE00B60497 /* ribbon_simple.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = ribbon_simple.frag.inc; sourceTree = ""; }; + B34DC44828671EFE00B60497 /* ribbon_simple.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = ribbon_simple.vert; sourceTree = ""; }; + B34DC44928671EFE00B60497 /* d3d.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d.cpp; sourceTree = ""; }; + B34DC44A28671EFE00B60497 /* sdl2_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl2_gfx.c; sourceTree = ""; }; + B34DC44C28671EFE00B60497 /* shaders_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shaders_common.h; sourceTree = ""; }; + B34DC44D28671EFE00B60497 /* opaque.hlsl.d3d9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opaque.hlsl.d3d9.h; sourceTree = ""; }; + B34DC44E28671EFE00B60497 /* opaque.cg.d3d9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = opaque.cg.d3d9.h; sourceTree = ""; }; + B34DC44F28671EFE00B60497 /* font.hlsl.d3d9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.hlsl.d3d9.h; sourceTree = ""; }; + B34DC45028671EFE00B60497 /* xenon360_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon360_gfx.c; sourceTree = ""; }; + B34DC45128671EFE00B60497 /* ctr_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctr_gfx.c; sourceTree = ""; }; + B34DC45228671EFE00B60497 /* psp1_gfx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp1_gfx.h; sourceTree = ""; }; + B34DC45328671EFE00B60497 /* dispmanx_gfx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dispmanx_gfx.c; sourceTree = ""; }; + B34DC45528671EFE00B60497 /* ctr_sprite.gsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = ctr_sprite.gsh; sourceTree = ""; }; + B34DC45628671EFE00B60497 /* ctr_sprite.vsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = ctr_sprite.vsh; sourceTree = ""; }; + B34DC45728671EFE00B60497 /* gx_gfx_vi_encoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_gfx_vi_encoder.c; sourceTree = ""; }; + B34DC45828671EFE00B60497 /* video_state_tracker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_state_tracker.h; sourceTree = ""; }; + B34DC45928671EFE00B60497 /* video_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_frame.h; sourceTree = ""; }; + B34DC45A28671EFE00B60497 /* video_thread_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_thread_wrapper.c; sourceTree = ""; }; + B34DC45B28671EFE00B60497 /* video_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_driver.c; sourceTree = ""; }; + B34DC45D28671EFE00B60497 /* d3d9caps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d9caps.h; sourceTree = ""; }; + B34DC45F28671EFE00B60497 /* cgGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cgGL.h; sourceTree = ""; }; + B34DC46028671EFE00B60497 /* cgD3D9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cgD3D9.h; sourceTree = ""; }; + B34DC46128671EFE00B60497 /* cg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cg.h; sourceTree = ""; }; + B34DC46228671EFE00B60497 /* d3d9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d9.h; sourceTree = ""; }; + B34DC46328671EFE00B60497 /* d3d9types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d9types.h; sourceTree = ""; }; + B34DC46528671EFE00B60497 /* vk_layer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_layer.h; sourceTree = ""; }; + B34DC46628671EFE00B60497 /* vk_icd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_icd.h; sourceTree = ""; }; + B34DC46728671EFE00B60497 /* vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = ""; }; + B34DC46828671EFE00B60497 /* vk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = ""; }; + B34DC46928671EFE00B60497 /* vulkan_intel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_intel.h; sourceTree = ""; }; + B34DC46A28671EFE00B60497 /* vk_sdk_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vk_sdk_platform.h; sourceTree = ""; }; + B34DC46C28671EFE00B60497 /* d3dx9tex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9tex.h; sourceTree = ""; }; + B34DC46D28671EFE00B60497 /* d3dx9mesh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9mesh.h; sourceTree = ""; }; + B34DC46E28671EFE00B60497 /* d3dx9xof.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9xof.h; sourceTree = ""; }; + B34DC46F28671EFE00B60497 /* d3dx9math.inl */ = {isa = PBXFileReference; lastKnownFileType = text; path = d3dx9math.inl; sourceTree = ""; }; + B34DC47028671EFE00B60497 /* d3dx9effect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9effect.h; sourceTree = ""; }; + B34DC47128671EFE00B60497 /* d3dx9core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9core.h; sourceTree = ""; }; + B34DC47228671EFE00B60497 /* d3dx9.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9.h; sourceTree = ""; }; + B34DC47328671EFE00B60497 /* d3dx9shader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9shader.h; sourceTree = ""; }; + B34DC47428671EFE00B60497 /* d3dx9anim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9anim.h; sourceTree = ""; }; + B34DC47528671EFE00B60497 /* d3dx9math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9math.h; sourceTree = ""; }; + B34DC47628671EFE00B60497 /* d3dx9shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3dx9shape.h; sourceTree = ""; }; + B34DC47828671EFE00B60497 /* glext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glext.h; sourceTree = ""; }; + B34DC47928671EFE00B60497 /* video_shader_parse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_shader_parse.h; sourceTree = ""; }; + B34DC47A28671EFE00B60497 /* video_filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_filter.h; sourceTree = ""; }; + B34DC47B28671EFE00B60497 /* video_shader_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_shader_driver.c; sourceTree = ""; }; + B34DC47D28671EFE00B60497 /* darken.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = darken.c; sourceTree = ""; }; + B34DC47F28671EFE00B60497 /* snes_ntsc_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snes_ntsc_config.h; sourceTree = ""; }; + B34DC48028671EFE00B60497 /* snes_ntsc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snes_ntsc.c; sourceTree = ""; }; + B34DC48128671EFE00B60497 /* snes_ntsc_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snes_ntsc_impl.h; sourceTree = ""; }; + B34DC48228671EFE00B60497 /* snes_ntsc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = snes_ntsc.h; sourceTree = ""; }; + B34DC48328671EFE00B60497 /* Darken.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Darken.filt; sourceTree = ""; }; + B34DC48428671EFE00B60497 /* Super2xSaI.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Super2xSaI.filt; sourceTree = ""; }; + B34DC48528671EFE00B60497 /* scale2x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scale2x.c; sourceTree = ""; }; + B34DC48628671EFE00B60497 /* super2xsai.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = super2xsai.c; sourceTree = ""; }; + B34DC48728671EFE00B60497 /* softfilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = softfilter.h; sourceTree = ""; }; + B34DC48828671EFE00B60497 /* 2xsai.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 2xsai.c; sourceTree = ""; }; + B34DC48928671EFE00B60497 /* Phosphor2x.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Phosphor2x.filt; sourceTree = ""; }; + B34DC48A28671EFE00B60497 /* lq2x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lq2x.c; sourceTree = ""; }; + B34DC48B28671EFE00B60497 /* Blargg_NTSC_SNES_S-Video.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Blargg_NTSC_SNES_S-Video.filt"; sourceTree = ""; }; + B34DC48C28671EFE00B60497 /* epx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = epx.c; sourceTree = ""; }; + B34DC48D28671EFE00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC48E28671EFE00B60497 /* Blargg_NTSC_SNES_RF.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Blargg_NTSC_SNES_RF.filt; sourceTree = ""; }; + B34DC48F28671EFE00B60497 /* 2xSaI.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = 2xSaI.filt; sourceTree = ""; }; + B34DC49028671EFE00B60497 /* 2xBR.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = 2xBR.filt; sourceTree = ""; }; + B34DC49128671EFE00B60497 /* blargg_ntsc_snes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blargg_ntsc_snes.c; sourceTree = ""; }; + B34DC49228671EFE00B60497 /* phosphor2x.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = phosphor2x.c; sourceTree = ""; }; + B34DC49328671EFE00B60497 /* Blargg_NTSC_SNES_Composite.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Blargg_NTSC_SNES_Composite.filt; sourceTree = ""; }; + B34DC49428671EFE00B60497 /* 2xbr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = 2xbr.c; sourceTree = ""; }; + B34DC49528671EFE00B60497 /* Scale2x.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Scale2x.filt; sourceTree = ""; }; + B34DC49628671EFE00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC49728671EFE00B60497 /* LQ2x.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LQ2x.filt; sourceTree = ""; }; + B34DC49828671EFE00B60497 /* SuperEagle.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = SuperEagle.filt; sourceTree = ""; }; + B34DC49928671EFE00B60497 /* Blargg_NTSC_SNES_RGB.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Blargg_NTSC_SNES_RGB.filt; sourceTree = ""; }; + B34DC49A28671EFE00B60497 /* supereagle.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = supereagle.c; sourceTree = ""; }; + B34DC49B28671EFE00B60497 /* EPX.filt */ = {isa = PBXFileReference; lastKnownFileType = text; path = EPX.filt; sourceTree = ""; }; + B34DC49C28671EFE00B60497 /* video_coord_array.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_coord_array.h; sourceTree = ""; }; + B34DC49D28671EFE00B60497 /* font_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font_driver.c; sourceTree = ""; }; + B34DC49E28671EFE00B60497 /* video_state_python.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_state_python.h; sourceTree = ""; }; + B34DC4A028671EFE00B60497 /* vulkan_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_common.c; sourceTree = ""; }; + B34DC4A128671EFE00B60497 /* x11_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x11_common.h; sourceTree = ""; }; + B34DC4A228671EFE00B60497 /* drm_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = drm_common.c; sourceTree = ""; }; + B34DC4A328671EFE00B60497 /* win32_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = win32_common.cpp; sourceTree = ""; }; + B34DC4A428671EFE00B60497 /* egl_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = egl_common.h; sourceTree = ""; }; + B34DC4A528671EFE00B60497 /* gl_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl_common.c; sourceTree = ""; }; + B34DC4A628671EFE00B60497 /* d3d_common.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d_common.cpp; sourceTree = ""; }; + B34DC4A728671EFE00B60497 /* drm_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = drm_common.h; sourceTree = ""; }; + B34DC4A828671EFE00B60497 /* x11_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x11_common.c; sourceTree = ""; }; + B34DC4A928671EFE00B60497 /* vulkan_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_common.h; sourceTree = ""; }; + B34DC4AA28671EFE00B60497 /* win32_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = win32_common.h; sourceTree = ""; }; + B34DC4AB28671EFE00B60497 /* egl_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = egl_common.c; sourceTree = ""; }; + B34DC4AC28671EFE00B60497 /* gl_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_common.h; sourceTree = ""; }; + B34DC4AD28671EFE00B60497 /* d3d_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = d3d_common.h; sourceTree = ""; }; + B34DC4AE28671EFE00B60497 /* vksym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vksym.h; sourceTree = ""; }; + B34DC4AF28671EFE00B60497 /* video_context_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_context_driver.c; sourceTree = ""; }; + B34DC4B028671EFE00B60497 /* video_state_tracker.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_state_tracker.c; sourceTree = ""; }; + B34DC4B228671EFE00B60497 /* xdk1_xfonts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xdk1_xfonts.c; sourceTree = ""; }; + B34DC4B328671EFE00B60497 /* ps_libdbgfont.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps_libdbgfont.c; sourceTree = ""; }; + B34DC4B428671EFE00B60497 /* xdk360_fonts.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = xdk360_fonts.cpp; sourceTree = ""; }; + B34DC4B528671EFE00B60497 /* gl_raster_font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gl_raster_font.c; sourceTree = ""; }; + B34DC4B628671EFE00B60497 /* vulkan_raster_font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_raster_font.c; sourceTree = ""; }; + B34DC4B728671EFE00B60497 /* vita2d_font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vita2d_font.c; sourceTree = ""; }; + B34DC4B828671EFE00B60497 /* d3d_w32_font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = d3d_w32_font.cpp; sourceTree = ""; }; + B34DC4B928671EFE00B60497 /* video_shader_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_shader_driver.h; sourceTree = ""; }; + B34DC4BA28671EFE00B60497 /* video_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_filter.c; sourceTree = ""; }; + B34DC4BC28671EFE00B60497 /* shader_glsl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shader_glsl.c; sourceTree = ""; }; + B34DC4BD28671EFE00B60497 /* shader_vulkan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = shader_vulkan.cpp; sourceTree = ""; }; + B34DC4BE28671EFE00B60497 /* slang_reflection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = slang_reflection.cpp; sourceTree = ""; }; + B34DC4BF28671EFE00B60497 /* shader_hlsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader_hlsl.h; sourceTree = ""; }; + B34DC4C028671EFE00B60497 /* glslang_util.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = glslang_util.hpp; sourceTree = ""; }; + B34DC4C128671EFE00B60497 /* slang_reflection.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = slang_reflection.hpp; sourceTree = ""; }; + B34DC4C228671EFE00B60497 /* shader_glsl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader_glsl.h; sourceTree = ""; }; + B34DC4C328671EFE00B60497 /* shader_null.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shader_null.c; sourceTree = ""; }; + B34DC4C428671EFE00B60497 /* glslang_util.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_util.cpp; sourceTree = ""; }; + B34DC4C528671EFE00B60497 /* shader_gl_cg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shader_gl_cg.c; sourceTree = ""; }; + B34DC4C628671EFE00B60497 /* shader_hlsl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shader_hlsl.c; sourceTree = ""; }; + B34DC4C728671EFE00B60497 /* shader_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shader_vulkan.h; sourceTree = ""; }; + B34DC4C828671EFE00B60497 /* video_shader_parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_shader_parse.c; sourceTree = ""; }; + B34DC4C928671EFE00B60497 /* video_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_driver.h; sourceTree = ""; }; + B34DC4CA28671EFE00B60497 /* video_thread_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = video_thread_wrapper.h; sourceTree = ""; }; + B34DC4CB28671EFE00B60497 /* font_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font_driver.h; sourceTree = ""; }; + B34DC4CC28671EFE00B60497 /* video_coord_array.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_coord_array.c; sourceTree = ""; }; + B34DC4CE28671EFE00B60497 /* freetype.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = freetype.c; sourceTree = ""; }; + B34DC4CF28671EFE00B60497 /* bitmap.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bitmap.bmp; sourceTree = ""; }; + B34DC4D028671EFE00B60497 /* coretext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = coretext.c; sourceTree = ""; }; + B34DC4D128671EFE00B60497 /* bitmap.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bitmap.bin; sourceTree = ""; }; + B34DC4D228671EFE00B60497 /* bitmapfont.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitmapfont.c; sourceTree = ""; }; + B34DC4D328671EFE00B60497 /* bitmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitmap.h; sourceTree = ""; }; + B34DC4D428671EFE00B60497 /* stb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stb.c; sourceTree = ""; }; + B34DC4D628671EFE00B60497 /* italian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = italian.h; sourceTree = ""; }; + B34DC4D728671EFE00B60497 /* msg_hash_nl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_nl.c; sourceTree = ""; }; + B34DC4D828671EFE00B60497 /* msg_hash_es.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_es.c; sourceTree = ""; }; + B34DC4D928671EFE00B60497 /* msg_hash_de.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_de.c; sourceTree = ""; }; + B34DC4DA28671EFE00B60497 /* msg_hash_eo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_eo.c; sourceTree = ""; }; + B34DC4DB28671EFF00B60497 /* english.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = english.h; sourceTree = ""; }; + B34DC4DC28671EFF00B60497 /* msg_hash_jp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_jp.c; sourceTree = ""; }; + B34DC4DD28671EFF00B60497 /* msg_hash_fr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_fr.c; sourceTree = ""; }; + B34DC4DE28671EFF00B60497 /* spanish.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = spanish.h; sourceTree = ""; }; + B34DC4DF28671EFF00B60497 /* msg_hash_it.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_it.c; sourceTree = ""; }; + B34DC4E028671EFF00B60497 /* russian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = russian.h; sourceTree = ""; }; + B34DC4E128671EFF00B60497 /* msg_hash_pl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_pl.c; sourceTree = ""; }; + B34DC4E228671EFF00B60497 /* msg_hash_ru.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_ru.c; sourceTree = ""; }; + B34DC4E328671EFF00B60497 /* msg_hash_uspseudo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_uspseudo.c; sourceTree = ""; }; + B34DC4E428671EFF00B60497 /* msg_hash_pt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_pt.c; sourceTree = ""; }; + B34DC4E528671EFF00B60497 /* pseudolocalize.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = pseudolocalize.py; sourceTree = ""; }; + B34DC4E628671EFF00B60497 /* msg_hash_us.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = msg_hash_us.c; sourceTree = ""; }; + B34DC4E728671EFF00B60497 /* french.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = french.h; sourceTree = ""; }; + B34DC4E828671EFF00B60497 /* intl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intl.h; sourceTree = ""; }; + B34DC4EA28671EFF00B60497 /* input_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_config.h; sourceTree = ""; }; + B34DC4EB28671EFF00B60497 /* input_remote.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_remote.c; sourceTree = ""; }; + B34DC4ED28671EFF00B60497 /* nullinput.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nullinput.c; sourceTree = ""; }; + B34DC4EE28671EFF00B60497 /* cocoa_input.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cocoa_input.h; sourceTree = ""; }; + B34DC4EF28671EFF00B60497 /* qnx_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = qnx_input.c; sourceTree = ""; }; + B34DC4F028671EFF00B60497 /* rwebinput_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwebinput_input.c; sourceTree = ""; }; + B34DC4F128671EFF00B60497 /* ps3_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps3_input.c; sourceTree = ""; }; + B34DC4F228671EFF00B60497 /* x11_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x11_input.c; sourceTree = ""; }; + B34DC4F328671EFF00B60497 /* android_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = android_input.c; sourceTree = ""; }; + B34DC4F428671EFF00B60497 /* xdk_xinput_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xdk_xinput_input.c; sourceTree = ""; }; + B34DC4F528671EFF00B60497 /* gx_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_input.c; sourceTree = ""; }; + B34DC4F628671EFF00B60497 /* sdl_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl_input.c; sourceTree = ""; }; + B34DC4F728671EFF00B60497 /* cocoa_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cocoa_input.c; sourceTree = ""; }; + B34DC4F828671EFF00B60497 /* udev_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = udev_input.c; sourceTree = ""; }; + B34DC4F928671EFF00B60497 /* linuxraw_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linuxraw_input.c; sourceTree = ""; }; + B34DC4FA28671EFF00B60497 /* dinput.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dinput.c; sourceTree = ""; }; + B34DC4FB28671EFF00B60497 /* xenon360_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon360_input.c; sourceTree = ""; }; + B34DC4FC28671EFF00B60497 /* psp_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp_input.c; sourceTree = ""; }; + B34DC4FD28671EFF00B60497 /* ctr_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctr_input.c; sourceTree = ""; }; + B34DC4FE28671EFF00B60497 /* input_autodetect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_autodetect.c; sourceTree = ""; }; + B34DC4FF28671EFF00B60497 /* input_keymaps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_keymaps.h; sourceTree = ""; }; + B34DC50028671EFF00B60497 /* input_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_keyboard.h; sourceTree = ""; }; + B34DC50328671EFF00B60497 /* GCExtendedGamepadSnapshot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCExtendedGamepadSnapshot.h; sourceTree = ""; }; + B34DC50428671EFF00B60497 /* GCControllerButtonInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCControllerButtonInput.h; sourceTree = ""; }; + B34DC50528671EFF00B60497 /* GCGamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCGamepad.h; sourceTree = ""; }; + B34DC50628671EFF00B60497 /* GCExtendedGamepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCExtendedGamepad.h; sourceTree = ""; }; + B34DC50728671EFF00B60497 /* GCGamepadSnapshot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCGamepadSnapshot.h; sourceTree = ""; }; + B34DC50828671EFF00B60497 /* GCControllerAxisInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCControllerAxisInput.h; sourceTree = ""; }; + B34DC50928671EFF00B60497 /* GCControllerDirectionPad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCControllerDirectionPad.h; sourceTree = ""; }; + B34DC50A28671EFF00B60497 /* GameController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GameController.h; sourceTree = ""; }; + B34DC50B28671EFF00B60497 /* GCController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCController.h; sourceTree = ""; }; + B34DC50C28671EFF00B60497 /* GCControllerElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCControllerElement.h; sourceTree = ""; }; + B34DC50D28671EFF00B60497 /* input_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_driver.h; sourceTree = ""; }; + B34DC50F28671EFF00B60497 /* keyboard_event_x11.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard_event_x11.c; sourceTree = ""; }; + B34DC51028671EFF00B60497 /* keyboard_event_apple.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard_event_apple.c; sourceTree = ""; }; + B34DC51128671EFF00B60497 /* keyboard_event_android.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard_event_android.c; sourceTree = ""; }; + B34DC51228671EFF00B60497 /* keyboard_event_udev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard_event_udev.c; sourceTree = ""; }; + B34DC51328671EFF00B60497 /* keyboard_event_win32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = keyboard_event_win32.cpp; sourceTree = ""; }; + B34DC51428671EFF00B60497 /* keyboard_event_apple.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard_event_apple.h; sourceTree = ""; }; + B34DC51528671EFF00B60497 /* keyboard_event_udev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard_event_udev.h; sourceTree = ""; }; + B34DC51628671EFF00B60497 /* keyboard_event_android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keyboard_event_android.h; sourceTree = ""; }; + B34DC51728671EFF00B60497 /* keyboard_event_xkb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = keyboard_event_xkb.c; sourceTree = ""; }; + B34DC51828671EFF00B60497 /* input_remapping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_remapping.h; sourceTree = ""; }; + B34DC51928671EFF00B60497 /* input_overlay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_overlay.h; sourceTree = ""; }; + B34DC51A28671EFF00B60497 /* input_hid_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_hid_driver.h; sourceTree = ""; }; + B34DC51B28671EFF00B60497 /* input_joypad_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_joypad_driver.c; sourceTree = ""; }; + B34DC51C28671EFF00B60497 /* input_defines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_defines.h; sourceTree = ""; }; + B34DC51E28671EFF00B60497 /* btstack_hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = btstack_hid.c; sourceTree = ""; }; + B34DC51F28671EFF00B60497 /* null_hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_hid.c; sourceTree = ""; }; + B34DC52028671EFF00B60497 /* wiiusb_hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wiiusb_hid.c; sourceTree = ""; }; + B34DC52128671EFF00B60497 /* libusb_hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libusb_hid.c; sourceTree = ""; }; + B34DC52228671EFF00B60497 /* iohidmanager_hid.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = iohidmanager_hid.c; sourceTree = ""; }; + B34DC52428671EFF00B60497 /* input_x11_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_x11_common.c; sourceTree = ""; }; + B34DC52528671EFF00B60497 /* linux_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linux_common.c; sourceTree = ""; }; + B34DC52628671EFF00B60497 /* epoll_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = epoll_common.c; sourceTree = ""; }; + B34DC52728671EFF00B60497 /* linux_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linux_common.h; sourceTree = ""; }; + B34DC52828671EFF00B60497 /* input_x11_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_x11_common.h; sourceTree = ""; }; + B34DC52928671EFF00B60497 /* epoll_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = epoll_common.h; sourceTree = ""; }; + B34DC52A28671EFF00B60497 /* input_config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_config.c; sourceTree = ""; }; + B34DC52B28671EFF00B60497 /* input_keymaps.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_keymaps.c; sourceTree = ""; }; + B34DC52D28671EFF00B60497 /* builtin_ps3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = builtin_ps3.c; sourceTree = ""; }; + B34DC52E28671EFF00B60497 /* builtin_xdk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = builtin_xdk.c; sourceTree = ""; }; + B34DC52F28671EFF00B60497 /* builtin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = builtin.h; sourceTree = ""; }; + B34DC53028671EFF00B60497 /* builtin_gx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = builtin_gx.c; sourceTree = ""; }; + B34DC53128671EFF00B60497 /* builtin_win.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = builtin_win.c; sourceTree = ""; }; + B34DC53228671EFF00B60497 /* builtin_ctr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = builtin_ctr.c; sourceTree = ""; }; + B34DC53328671EFF00B60497 /* builtin_psp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = builtin_psp.c; sourceTree = ""; }; + B34DC53528671EFF00B60497 /* android_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = android_joypad.c; sourceTree = ""; }; + B34DC53628671EFF00B60497 /* qnx_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = qnx_joypad.c; sourceTree = ""; }; + B34DC53728671EFF00B60497 /* sdl_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sdl_joypad.c; sourceTree = ""; }; + B34DC53828671EFF00B60497 /* null_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_joypad.c; sourceTree = ""; }; + B34DC53928671EFF00B60497 /* gx_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = gx_joypad.c; sourceTree = ""; }; + B34DC53A28671EFF00B60497 /* ctr_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ctr_joypad.c; sourceTree = ""; }; + B34DC53B28671EFF00B60497 /* linuxraw_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linuxraw_joypad.c; sourceTree = ""; }; + B34DC53C28671EFF00B60497 /* mfi_joypad.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = mfi_joypad.m; sourceTree = ""; }; + B34DC53D28671EFF00B60497 /* parport_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = parport_joypad.c; sourceTree = ""; }; + B34DC53E28671EFF00B60497 /* ps3_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ps3_joypad.c; sourceTree = ""; }; + B34DC53F28671EFF00B60497 /* hid_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hid_joypad.c; sourceTree = ""; }; + B34DC54028671EFF00B60497 /* xinput_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xinput_joypad.c; sourceTree = ""; }; + B34DC54128671EFF00B60497 /* udev_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = udev_joypad.c; sourceTree = ""; }; + B34DC54228671EFF00B60497 /* xdk_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xdk_joypad.c; sourceTree = ""; }; + B34DC54328671EFF00B60497 /* dinput_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dinput_joypad.c; sourceTree = ""; }; + B34DC54428671EFF00B60497 /* psp_joypad.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp_joypad.c; sourceTree = ""; }; + B34DC54528671EFF00B60497 /* input_autodetect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_autodetect.h; sourceTree = ""; }; + B34DC54628671EFF00B60497 /* input_remote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_remote.h; sourceTree = ""; }; + B34DC54728671EFF00B60497 /* input_overlay.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_overlay.c; sourceTree = ""; }; + B34DC54828671EFF00B60497 /* input_remapping.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_remapping.c; sourceTree = ""; }; + B34DC54928671EFF00B60497 /* input_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_driver.c; sourceTree = ""; }; + B34DC54A28671EFF00B60497 /* input_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_keyboard.c; sourceTree = ""; }; + B34DC54C28671EFF00B60497 /* joypad_connection.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = joypad_connection.c; sourceTree = ""; }; + B34DC54D28671EFF00B60497 /* connect_wiiupro.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_wiiupro.c; sourceTree = ""; }; + B34DC54E28671EFF00B60497 /* connect_ps3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_ps3.c; sourceTree = ""; }; + B34DC54F28671EFF00B60497 /* connect_ps4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_ps4.c; sourceTree = ""; }; + B34DC55028671EFF00B60497 /* connect_nesusb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_nesusb.c; sourceTree = ""; }; + B34DC55128671EFF00B60497 /* connect_wiiugca.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_wiiugca.c; sourceTree = ""; }; + B34DC55228671EFF00B60497 /* joypad_connection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = joypad_connection.h; sourceTree = ""; }; + B34DC55328671EFF00B60497 /* connect_ps2adapter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_ps2adapter.c; sourceTree = ""; }; + B34DC55428671EFF00B60497 /* connect_snesusb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_snesusb.c; sourceTree = ""; }; + B34DC55528671EFF00B60497 /* connect_wii.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = connect_wii.c; sourceTree = ""; }; + B34DC55628671EFF00B60497 /* input_joypad_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = input_joypad_driver.h; sourceTree = ""; }; + B34DC55728671EFF00B60497 /* input_hid_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = input_hid_driver.c; sourceTree = ""; }; + B34DC55928671EFF00B60497 /* camera_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = camera_driver.c; sourceTree = ""; }; + B34DC55B28671EFF00B60497 /* android.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = android.c; sourceTree = ""; }; + B34DC55C28671EFF00B60497 /* rwebcam.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rwebcam.c; sourceTree = ""; }; + B34DC55D28671EFF00B60497 /* nullcamera.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nullcamera.c; sourceTree = ""; }; + B34DC55E28671EFF00B60497 /* video4linux2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video4linux2.c; sourceTree = ""; }; + B34DC55F28671EFF00B60497 /* camera_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = camera_driver.h; sourceTree = ""; }; + B34DC56228671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC56328671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC56528671EFF00B60497 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B34DC56628671EFF00B60497 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B34DC56728671EFF00B60497 /* libretro-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libretro-test.c"; sourceTree = ""; }; + B34DC56928671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC56A28671EFF00B60497 /* ffmpeg_core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ffmpeg_core.c; sourceTree = ""; }; + B34DC56B28671EFF00B60497 /* internal_cores.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internal_cores.h; sourceTree = ""; }; + B34DC56D28671EFF00B60497 /* fft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = ""; }; + B34DC56E28671EFF00B60497 /* fft.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fft.cpp; sourceTree = ""; }; + B34DC57028671EFF00B60497 /* shaders_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = shaders_common.h; sourceTree = ""; }; + B34DC57128671EFF00B60497 /* fft_heightmap.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft_heightmap.glsl.frag.h; sourceTree = ""; }; + B34DC57228671EFF00B60497 /* fft_vertex_program.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft_vertex_program.glsl.vert.h; sourceTree = ""; }; + B34DC57328671EFF00B60497 /* fft_heightmap.glsl.vert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft_heightmap.glsl.vert.h; sourceTree = ""; }; + B34DC57428671EFF00B60497 /* fft_fragment_program_real.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft_fragment_program_real.glsl.frag.h; sourceTree = ""; }; + B34DC57528671EFF00B60497 /* fft_fragment_program_blur.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft_fragment_program_blur.glsl.frag.h; sourceTree = ""; }; + B34DC57628671EFF00B60497 /* fft_fragment_program_resolve.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft_fragment_program_resolve.glsl.frag.h; sourceTree = ""; }; + B34DC57728671EFF00B60497 /* fft_fragment_program_complex.glsl.frag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fft_fragment_program_complex.glsl.frag.h; sourceTree = ""; }; + B34DC57828671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC57A28671EFF00B60497 /* libretro_gl_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro_gl_test.c; sourceTree = ""; }; + B34DC57B28671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC57C28671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC57E28671EFF00B60497 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B34DC57F28671EFF00B60497 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B34DC58128671EFF00B60497 /* internal_cores.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internal_cores.h; sourceTree = ""; }; + B34DC58228671EFF00B60497 /* image_core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_core.c; sourceTree = ""; }; + B34DC58428671EFF00B60497 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + B34DC58528671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC58628671EFF00B60497 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B34DC58728671EFF00B60497 /* internal_cores.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internal_cores.h; sourceTree = ""; }; + B34DC58828671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC58928671EFF00B60497 /* video_processor_v4l2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = video_processor_v4l2.c; sourceTree = ""; }; + B34DC58B28671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC58D28671EFF00B60497 /* raymarch.comp */ = {isa = PBXFileReference; lastKnownFileType = text; path = raymarch.comp; sourceTree = ""; }; + B34DC58E28671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC58F28671EFF00B60497 /* raymarch.comp.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = raymarch.comp.inc; sourceTree = ""; }; + B34DC59028671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC59228671EFF00B60497 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B34DC59328671EFF00B60497 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B34DC59428671EFF00B60497 /* libretro-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libretro-test.c"; sourceTree = ""; }; + B34DC59528671EFF00B60497 /* dynamic_dummy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dynamic_dummy.c; sourceTree = ""; }; + B34DC59628671EFF00B60497 /* internal_cores.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internal_cores.h; sourceTree = ""; }; + B34DC59828671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC59A28671EFF00B60497 /* triangle.frag.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = triangle.frag.inc; sourceTree = ""; }; + B34DC59B28671EFF00B60497 /* triangle.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = triangle.vert; sourceTree = ""; }; + B34DC59C28671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC59D28671EFF00B60497 /* triangle.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = triangle.frag; sourceTree = ""; }; + B34DC59E28671EFF00B60497 /* triangle.vert.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; path = triangle.vert.inc; sourceTree = ""; }; + B34DC59F28671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC5A128671EFF00B60497 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B34DC5A228671EFF00B60497 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B34DC5A328671EFF00B60497 /* libretro-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "libretro-test.c"; sourceTree = ""; }; + B34DC5A528671EFF00B60497 /* remotepad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = remotepad.h; sourceTree = ""; }; + B34DC5A628671EFF00B60497 /* net_retropad_core.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_retropad_core.c; sourceTree = ""; }; + B34DC5A728671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC5A828671EFF00B60497 /* internal_cores.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = internal_cores.h; sourceTree = ""; }; + B34DC5A928671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC5AB28671EFF00B60497 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B34DC5AC28671EFF00B60497 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B34DC5AE28671EFF00B60497 /* libretro_gl_ff_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libretro_gl_ff_test.c; sourceTree = ""; }; + B34DC5AF28671EFF00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC5B028671EFF00B60497 /* link.T */ = {isa = PBXFileReference; lastKnownFileType = text; path = link.T; sourceTree = ""; }; + B34DC5B228671EFF00B60497 /* Android.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Android.mk; sourceTree = ""; }; + B34DC5B328671EFF00B60497 /* Application.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = Application.mk; sourceTree = ""; }; + B34DC5B628671EFF00B60497 /* nulllocation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nulllocation.c; sourceTree = ""; }; + B34DC5B728671EFF00B60497 /* android.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = android.c; sourceTree = ""; }; + B34DC5B828671EFF00B60497 /* location_driver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = location_driver.c; sourceTree = ""; }; + B34DC5B928671EFF00B60497 /* location_driver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = location_driver.h; sourceTree = ""; }; + B34DC63B2867202D00B60497 /* encoding_utf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = encoding_utf.c; sourceTree = ""; }; + B34DC63D2867202D00B60497 /* compat_ifaddrs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_ifaddrs.c; sourceTree = ""; }; + B34DC63E2867202D00B60497 /* compat_strl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strl.c; sourceTree = ""; }; + B34DC63F2867202D00B60497 /* compat_posix_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_posix_string.c; sourceTree = ""; }; + B34DC6402867202D00B60497 /* compat_strcasestr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_strcasestr.c; sourceTree = ""; }; + B34DC6412867202D00B60497 /* compat_snprintf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_snprintf.c; sourceTree = ""; }; + B34DC6422867202D00B60497 /* compat_getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_getopt.c; sourceTree = ""; }; + B34DC6432867202D00B60497 /* compat_fnmatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compat_fnmatch.c; sourceTree = ""; }; + B34DC6452867202D00B60497 /* dylib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dylib.c; sourceTree = ""; }; + B34DC6482867202D00B60497 /* net_ifinfo_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo_test.c; sourceTree = ""; }; + B34DC6492867202D00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC64A2867202D00B60497 /* net_http_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http_test.c; sourceTree = ""; }; + B34DC64B2867202D00B60497 /* net_http.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_http.c; sourceTree = ""; }; + B34DC64C2867202D00B60497 /* net_ifinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_ifinfo.c; sourceTree = ""; }; + B34DC64D2867202D00B60497 /* net_compat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_compat.c; sourceTree = ""; }; + B34DC64E2867202D00B60497 /* net_socket.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = net_socket.c; sourceTree = ""; }; + B34DC6502867202D00B60497 /* image_texture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_texture.c; sourceTree = ""; }; + B34DC6522867202D00B60497 /* rtga.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtga.c; sourceTree = ""; }; + B34DC6552867202D00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC6562867202D00B60497 /* rpng_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_test.c; sourceTree = ""; }; + B34DC6572867202D00B60497 /* rpng.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng.c; sourceTree = ""; }; + B34DC6582867202D00B60497 /* rpng_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng_internal.h; sourceTree = ""; }; + B34DC6592867202D00B60497 /* rpng_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rpng_encode.c; sourceTree = ""; }; + B34DC65C2867202D00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC65D2867202D00B60497 /* rxml_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml_test.c; sourceTree = ""; }; + B34DC65E2867202D00B60497 /* rxml.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rxml.c; sourceTree = ""; }; + B34DC6602867202D00B60497 /* jsonsax.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jsonsax.c; sourceTree = ""; }; + B34DC6622867202D00B60497 /* rjpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rjpeg.c; sourceTree = ""; }; + B34DC6642867202D00B60497 /* rbmp_encode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp_encode.c; sourceTree = ""; }; + B34DC6652867202D00B60497 /* rbmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rbmp.c; sourceTree = ""; }; + B34DC6662867202D00B60497 /* image_transfer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = image_transfer.c; sourceTree = ""; }; + B34DC6682867202D00B60497 /* glsym_es3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es3.c; sourceTree = ""; }; + B34DC6692867202D00B60497 /* glsym_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_gl.c; sourceTree = ""; }; + B34DC66A2867202D00B60497 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B34DC66B2867202D00B60497 /* glsym_es2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsym_es2.c; sourceTree = ""; }; + B34DC66C2867202D00B60497 /* rglgen.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rglgen.c; sourceTree = ""; }; + B34DC66D2867202D00B60497 /* glgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = glgen.py; sourceTree = ""; }; + B34DC66E2867202D00B60497 /* rglgen.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = rglgen.py; sourceTree = ""; }; + B34DC6702867202D00B60497 /* dir_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dir_list.c; sourceTree = ""; }; + B34DC6712867202D00B60497 /* string_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string_list.c; sourceTree = ""; }; + B34DC6722867202D00B60497 /* file_list.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_list.c; sourceTree = ""; }; + B34DC6742867202D00B60497 /* retro_stat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_stat.c; sourceTree = ""; }; + B34DC6752867202D00B60497 /* file_path.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_path.c; sourceTree = ""; }; + B34DC6782867202D00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC6792867202D00B60497 /* nbio_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_test.c; sourceTree = ""; }; + B34DC67A2867202D00B60497 /* nbio_stdio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nbio_stdio.c; sourceTree = ""; }; + B34DC67B2867202D00B60497 /* archive_file_zlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file_zlib.c; sourceTree = ""; }; + B34DC67C2867202D00B60497 /* config_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = config_file.c; sourceTree = ""; }; + B34DC67D2867202D00B60497 /* retro_dirent.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = retro_dirent.c; sourceTree = ""; }; + B34DC67E2867202D00B60497 /* archive_file.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = archive_file.c; sourceTree = ""; }; + B34DC6802867202D00B60497 /* rhash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rhash.c; sourceTree = ""; }; + B34DC6822867202D00B60497 /* interface_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = interface_stream.c; sourceTree = ""; }; + B34DC6832867202D00B60497 /* memory_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memory_stream.c; sourceTree = ""; }; + B34DC6842867202D00B60497 /* file_stream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = file_stream.c; sourceTree = ""; }; + B34DC6872867202D00B60497 /* utf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = ""; }; + B34DC6882867202D00B60497 /* memalign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; + B34DC6892867202D00B60497 /* libco.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; + B34DC68B2867202D00B60497 /* apple_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apple_compat.h; sourceTree = ""; }; + B34DC68C2867202D00B60497 /* zutil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + B34DC68D2867202D00B60497 /* strl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strl.h; sourceTree = ""; }; + B34DC68E2867202D00B60497 /* strcasestr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = strcasestr.h; sourceTree = ""; }; + B34DC6902867202D00B60497 /* stdint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdint.h; sourceTree = ""; }; + B34DC6912867202D00B60497 /* fopen_utf8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fopen_utf8.h; sourceTree = ""; }; + B34DC6922867202D00B60497 /* zconf.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = zconf.h.in; sourceTree = ""; }; + B34DC6932867202D00B60497 /* intrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = intrinsics.h; sourceTree = ""; }; + B34DC6942867202D00B60497 /* posix_string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = posix_string.h; sourceTree = ""; }; + B34DC6952867202D00B60497 /* getopt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + B34DC6962867202D00B60497 /* fnmatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fnmatch.h; sourceTree = ""; }; + B34DC6972867202D00B60497 /* msvc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = msvc.h; sourceTree = ""; }; + B34DC6982867202D00B60497 /* zlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + B34DC6992867202D00B60497 /* ifaddrs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ifaddrs.h; sourceTree = ""; }; + B34DC69A2867202D00B60497 /* zconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + B34DC69B2867202D00B60497 /* retro_common_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + B34DC69D2867202D00B60497 /* dylib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dylib.h; sourceTree = ""; }; + B34DC69F2867202D00B60497 /* net_ifinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_ifinfo.h; sourceTree = ""; }; + B34DC6A02867202D00B60497 /* net_compat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_compat.h; sourceTree = ""; }; + B34DC6A12867202D00B60497 /* net_socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_socket.h; sourceTree = ""; }; + B34DC6A22867202D00B60497 /* net_http.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net_http.h; sourceTree = ""; }; + B34DC6A32867202D00B60497 /* retro_timers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_timers.h; sourceTree = ""; }; + B34DC6A52867202D00B60497 /* jsonsax.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = jsonsax.h; sourceTree = ""; }; + B34DC6A62867202D00B60497 /* rxml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rxml.h; sourceTree = ""; }; + B34DC6A72867202D00B60497 /* rpng.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rpng.h; sourceTree = ""; }; + B34DC6A82867202D00B60497 /* rtga.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtga.h; sourceTree = ""; }; + B34DC6A92867202D00B60497 /* image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = ""; }; + B34DC6AA2867202D00B60497 /* rbmp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rbmp.h; sourceTree = ""; }; + B34DC6AB2867202D00B60497 /* rjpeg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rjpeg.h; sourceTree = ""; }; + B34DC6AD2867202D00B60497 /* rglgen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen.h; sourceTree = ""; }; + B34DC6AE2867202D00B60497 /* glsym_es2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es2.h; sourceTree = ""; }; + B34DC6AF2867202D00B60497 /* glsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym.h; sourceTree = ""; }; + B34DC6B02867202D00B60497 /* rglgen_headers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rglgen_headers.h; sourceTree = ""; }; + B34DC6B12867202D00B60497 /* glsym_es3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_es3.h; sourceTree = ""; }; + B34DC6B22867202D00B60497 /* glsym_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsym_gl.h; sourceTree = ""; }; + B34DC6B42867202D00B60497 /* string_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string_list.h; sourceTree = ""; }; + B34DC6B52867202D00B60497 /* file_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_list.h; sourceTree = ""; }; + B34DC6B62867202D00B60497 /* dir_list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dir_list.h; sourceTree = ""; }; + B34DC6B82867202D00B60497 /* nbio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nbio.h; sourceTree = ""; }; + B34DC6B92867202D00B60497 /* config_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config_file.h; sourceTree = ""; }; + B34DC6BA2867202D00B60497 /* archive_file.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = archive_file.h; sourceTree = ""; }; + B34DC6BB2867202D00B60497 /* file_path.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_path.h; sourceTree = ""; }; + B34DC6BD2867202D00B60497 /* rhash.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rhash.c; sourceTree = ""; }; + B34DC6BE2867202D00B60497 /* retro_environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; + B34DC6BF2867202D00B60497 /* retro_dirent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; + B34DC6C02867202D00B60497 /* retro_inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + B34DC6C22867202D00B60497 /* memory_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memory_stream.h; sourceTree = ""; }; + B34DC6C32867202D00B60497 /* file_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = file_stream.h; sourceTree = ""; }; + B34DC6C42867202D00B60497 /* interface_stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = interface_stream.h; sourceTree = ""; }; + B34DC6C62867202D00B60497 /* features_cpu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = features_cpu.h; sourceTree = ""; }; + B34DC6C82867202D00B60497 /* mismatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mismatch.h; sourceTree = ""; }; + B34DC6CA2867202D00B60497 /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + B34DC6CB2867202D00B60497 /* retro_miscellaneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; + B34DC6CC2867202D00B60497 /* clamping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; + B34DC6CE2867202D00B60497 /* fxp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fxp.h; sourceTree = ""; }; + B34DC6CF2867202D00B60497 /* complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = complex.h; sourceTree = ""; }; + B34DC6D02867202D00B60497 /* boolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; + B34DC6D22867202D00B60497 /* glsm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsm.h; sourceTree = ""; }; + B34DC6D32867202D00B60497 /* glsmsym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glsmsym.h; sourceTree = ""; }; + B34DC6D42867202D00B60497 /* memmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; + B34DC6D52867202D00B60497 /* rhash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rhash.h; sourceTree = ""; }; + B34DC6D72867202D00B60497 /* rsemaphore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rsemaphore.h; sourceTree = ""; }; + B34DC6D82867202D00B60497 /* rthreads.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rthreads.h; sourceTree = ""; }; + B34DC6D92867202D00B60497 /* libretro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; + B34DC6DB2867202D00B60497 /* vulkan_symbol_wrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vulkan_symbol_wrapper.h; sourceTree = ""; }; + B34DC6DC2867202D00B60497 /* retro_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; + B34DC6DE2867202D00B60497 /* s16_to_float.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = s16_to_float.h; sourceTree = ""; }; + B34DC6DF2867202D00B60497 /* float_to_s16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = float_to_s16.h; sourceTree = ""; }; + B34DC6E02867202D00B60497 /* retro_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + B34DC6E22867202D00B60497 /* task_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = task_queue.h; sourceTree = ""; }; + B34DC6E32867202D00B60497 /* fifo_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fifo_queue.h; sourceTree = ""; }; + B34DC6E42867202D00B60497 /* message_queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message_queue.h; sourceTree = ""; }; + B34DC6E52867202D00B60497 /* retro_assert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; + B34DC6E72867202D00B60497 /* stdstring.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stdstring.h; sourceTree = ""; }; + B34DC6E82867202D00B60497 /* libretro_vulkan.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; + B34DC6EB2867202D00B60497 /* vector_3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_3.h; sourceTree = ""; }; + B34DC6EC2867202D00B60497 /* vector_2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_2.h; sourceTree = ""; }; + B34DC6ED2867202D00B60497 /* matrix_3x3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_3x3.h; sourceTree = ""; }; + B34DC6EE2867202D00B60497 /* matrix_4x4.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = matrix_4x4.h; sourceTree = ""; }; + B34DC6F02867202D00B60497 /* scaler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; + B34DC6F12867202D00B60497 /* pixconv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pixconv.h; sourceTree = ""; }; + B34DC6F22867202D00B60497 /* scaler_int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scaler_int.h; sourceTree = ""; }; + B34DC6F32867202D00B60497 /* filter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + B34DC6F42867202D00B60497 /* retro_endianness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; + B34DC6F52867202D00B60497 /* filters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + B34DC6F72867202D00B60497 /* features_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = features_cpu.c; sourceTree = ""; }; + B34DC6F92867202D00B60497 /* mismatch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mismatch.c; sourceTree = ""; }; + B34DC6FB2867202D00B60497 /* djb2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = djb2.c; sourceTree = ""; }; + B34DC6FC2867202D00B60497 /* udp-test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "udp-test.c"; sourceTree = ""; }; + B34DC6FD2867202D00B60497 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + B34DC6FE2867202D00B60497 /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = ""; }; + B34DC6FF2867202D00B60497 /* crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; + B34DC7002867202D00B60497 /* md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + B34DC7022867202D00B60497 /* memmap.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memmap.c; sourceTree = ""; }; + B34DC7032867202D00B60497 /* memalign.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = memalign.c; sourceTree = ""; }; + B34DC7052867202D00B60497 /* glsm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = glsm.c; sourceTree = ""; }; + B34DC7072867202D00B60497 /* rthreads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rthreads.c; sourceTree = ""; }; + B34DC7082867202D00B60497 /* gx_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gx_pthread.h; sourceTree = ""; }; + B34DC7092867202D00B60497 /* psp_pthread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psp_pthread.h; sourceTree = ""; }; + B34DC70A2867202D00B60497 /* xenon_sdl_threads.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xenon_sdl_threads.c; sourceTree = ""; }; + B34DC70B2867202D00B60497 /* rsemaphore.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rsemaphore.c; sourceTree = ""; }; + B34DC70D2867202D00B60497 /* vulkan_symbol_wrapper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vulkan_symbol_wrapper.c; sourceTree = ""; }; + B34DC70F2867202D00B60497 /* s16_to_float.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = s16_to_float.c; sourceTree = ""; }; + B34DC7102867202D00B60497 /* float_to_s16.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = float_to_s16.c; sourceTree = ""; }; + B34DC7112867202D00B60497 /* float_to_s16_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = float_to_s16_neon.S; sourceTree = ""; }; + B34DC7122867202D00B60497 /* s16_to_float_neon.S */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = s16_to_float_neon.S; sourceTree = ""; }; + B34DC7142867202D00B60497 /* fifo_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fifo_queue.c; sourceTree = ""; }; + B34DC7152867202D00B60497 /* message_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = message_queue.c; sourceTree = ""; }; + B34DC7162867202D00B60497 /* task_queue.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_queue.c; sourceTree = ""; }; + B34DC7182867202D00B60497 /* stdstring.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = stdstring.c; sourceTree = ""; }; + B34DC71B2867202D00B60497 /* string.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = string.h; sourceTree = ""; }; + B34DC71C2867202D00B60497 /* string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = ""; }; + B34DC71F2867202D00B60497 /* matrix_3x3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = matrix_3x3.c; sourceTree = ""; }; + B34DC7202867202D00B60497 /* vector_2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vector_2.c; sourceTree = ""; }; + B34DC7212867202D00B60497 /* matrix_4x4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = matrix_4x4.c; sourceTree = ""; }; + B34DC7222867202D00B60497 /* vector_3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vector_3.c; sourceTree = ""; }; + B34DC7242867202D00B60497 /* scaler_int.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_int.c; sourceTree = ""; }; + B34DC7252867202D00B60497 /* pixconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; + B34DC7262867202D00B60497 /* scaler_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler_filter.c; sourceTree = ""; }; + B34DC7272867202D00B60497 /* scaler.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + B34DC7292867202D00B60497 /* sjlj.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sjlj.c; sourceTree = ""; }; + B34DC72A2867202D00B60497 /* ppc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ppc.c; sourceTree = ""; }; + B34DC72B2867202D00B60497 /* ucontext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ucontext.c; sourceTree = ""; }; + B34DC72C2867202D00B60497 /* fiber.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fiber.c; sourceTree = ""; }; + B34DC72D2867202D00B60497 /* libco.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = libco.c; sourceTree = ""; }; + B34DC72E2867202D00B60497 /* armeabi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = armeabi.c; sourceTree = ""; }; + B34DC72F2867202D00B60497 /* amd64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = amd64.c; sourceTree = ""; }; + B34DC7302867202D00B60497 /* psp2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psp2.c; sourceTree = ""; }; + B34DC7312867202D00B60497 /* x86.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = ""; }; B3532B3221A7B736006CDA0F /* PVSupportTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PVSupportTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B3532B3621A7B736006CDA0F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B3532B3E21A7B753006CDA0F /* PVSettingsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVSettingsTests.swift; sourceTree = ""; }; B3532C3521A925C1006CDA0F /* SortOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortOption.swift; sourceTree = ""; }; B35E6C36207EE15D0040709A /* CoreOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreOptions.swift; sourceTree = ""; }; + B36C41012898776C00EAEF59 /* libretro-netplay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libretro-netplay.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B36C41032898776C00EAEF59 /* retro_netplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = retro_netplay.h; sourceTree = ""; }; + B36C41042898776C00EAEF59 /* retro_netplay.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = retro_netplay.m; sourceTree = ""; }; + B392848E28670348003BAC21 /* PVLibRetro.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVLibRetro.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B392849028670348003BAC21 /* PVLibRetro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PVLibRetro.h; sourceTree = ""; }; + B3928497286703CD003BAC21 /* PVLibRetroCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVLibRetroCore.h; sourceTree = ""; }; + B3928498286703CD003BAC21 /* PVLibRetroCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVLibRetroCore.m; sourceTree = ""; }; B3A4FB59278FE45C00A65248 /* OEGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OEGeometry.h; sourceTree = ""; }; B3A74C8920522B04001D3D2E /* PVEmulatorCore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PVEmulatorCore.swift; sourceTree = ""; }; B3AB37872187F9A9009D9244 /* PViCadeGamepadDirectionPad.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PViCadeGamepadDirectionPad.swift; sourceTree = ""; }; @@ -322,7 +1030,6 @@ B3B1A73F279021C4004D1EF2 /* AHAP */ = {isa = PBXFileReference; lastKnownFileType = folder; path = AHAP; sourceTree = ""; }; B3C83E262796211D0020824C /* Performance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Performance.swift; sourceTree = ""; }; B3C83E2A279622EB0020824C /* PerformanceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerformanceView.swift; sourceTree = ""; }; - B3C96E9E1D62C3A3003F1E93 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B3C96EBA1D62C54D003F1E93 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B3C96EBB1D62C54D003F1E93 /* PVSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVSupport.h; sourceTree = ""; }; B3C96ED81D62C5E7003F1E93 /* PVSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PVSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -335,8 +1042,12 @@ B3D0EE1F277FE85F002DC0A5 /* HapticsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HapticsManager.swift; sourceTree = ""; }; B3D0EE27277FE8C9002DC0A5 /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.2.sdk/System/Library/Frameworks/CoreHaptics.framework; sourceTree = DEVELOPER_DIR; }; B3D0EE29277FE8E0002DC0A5 /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/CoreHaptics.framework; sourceTree = DEVELOPER_DIR; }; + B3D180A128964C3B001207AF /* PVLibRetroCore+Controls.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVLibRetroCore+Controls.m"; sourceTree = ""; }; + B3D180A228964C40001207AF /* PVLibRetroCore+Saves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PVLibRetroCore+Saves.m"; sourceTree = ""; }; B3D73D3B1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSFileManager+OEHashingAdditions.h"; sourceTree = ""; }; B3D73D3C1EA15BB20023925B /* NSFileManager+OEHashingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSFileManager+OEHashingAdditions.m"; sourceTree = ""; }; + B3DF963D288D6B5800300A38 /* PVLibRetroGLESCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVLibRetroGLESCore.h; sourceTree = ""; }; + B3DF963E288D6B5800300A38 /* PVLibRetroGLESCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PVLibRetroGLESCore.m; sourceTree = ""; }; B3E6DADD20B7BF8600454DD4 /* UIDeviceExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIDeviceExtension.swift; sourceTree = ""; }; B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CocoaLumberExtensions.swift; sourceTree = ""; }; B3FA5D591D6B908300060D71 /* OERingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OERingBuffer.h; sourceTree = ""; }; @@ -348,17 +1059,10 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B305EF84276B4E41003AE510 /* Frameworks */ = { + B322512A286C4728001FDF42 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B305EF85276B4E41003AE510 /* CocoaLumberjack in Frameworks */, - B305EF87276B4E41003AE510 /* Foundation.framework in Frameworks */, - B305EF89276B4E41003AE510 /* CocoaLumberjackSwiftLogBackend in Frameworks */, - B305EF9C276B4FDD003AE510 /* CoreGraphics.framework in Frameworks */, - B305EF9A276B4F0A003AE510 /* GameKit.framework in Frameworks */, - B305EF8A276B4E41003AE510 /* AVFoundation.framework in Frameworks */, - B305EF8B276B4E41003AE510 /* CocoaLumberjackSwift in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -370,19 +1074,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C96E9A1D62C3A3003F1E93 /* Frameworks */ = { + B36C40FE2898776C00EAEF59 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B392848B28670348003BAC21 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3B492CB26B3A96B000B426B /* Reachability in Frameworks */, - B324C3162191963B009F4EDC /* AVFoundation.framework in Frameworks */, - B3CA5B5126E9E4D500687B27 /* CocoaLumberjack in Frameworks */, - B3296E8926C67F6B0088AC32 /* CocoaLumberjackSwiftLogBackend in Frameworks */, - B3CEC5C3279521EC004A7CC1 /* NSLogger in Frameworks */, - B3AF6FDF219161C0000FA7F9 /* GameController.framework in Frameworks */, - B3AF6FDD219161BC000FA7F9 /* Foundation.framework in Frameworks */, - B3D0EE28277FE8C9002DC0A5 /* CoreHaptics.framework in Frameworks */, - B336B8F826B3991500960A81 /* CocoaLumberjackSwift in Frameworks */, + B3EA6C91292617F300010224 /* libretro.a in Frameworks */, + B392849B286703F2003BAC21 /* PVSupport.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -414,159 +1118,1999 @@ path = Utilities; sourceTree = ""; }; - 1ACEA63B17F7467D0031B1C9 = { + 1ACEA63B17F7467D0031B1C9 = { + isa = PBXGroup; + children = ( + B3173802278419A2002D3ACD /* Build.xcconfig */, + B3A4FB58278FE2F200A65248 /* Sources */, + B3532B3321A7B736006CDA0F /* Tests */, + 1ACEA64A17F7467D0031B1C9 /* Supporting Files */, + B392848F28670348003BAC21 /* PVLibRetro */, + B36C41022898776C00EAEF59 /* retro-netplay */, + 1ACEA64617F7467D0031B1C9 /* Frameworks */, + 1ACEA64517F7467D0031B1C9 /* Products */, + ); + sourceTree = ""; + }; + 1ACEA64517F7467D0031B1C9 /* Products */ = { + isa = PBXGroup; + children = ( + B3C96ED81D62C5E7003F1E93 /* PVSupport.framework */, + B3532B3221A7B736006CDA0F /* PVSupportTests.xctest */, + B392848E28670348003BAC21 /* PVLibRetro.framework */, + B322512D286C4728001FDF42 /* libretro.a */, + B36C41012898776C00EAEF59 /* libretro-netplay.a */, + ); + name = Products; + sourceTree = ""; + }; + 1ACEA64617F7467D0031B1C9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3D0EE27277FE8C9002DC0A5 /* CoreHaptics.framework */, + B3D0EE29277FE8E0002DC0A5 /* CoreHaptics.framework */, + B305EF9B276B4FDC003AE510 /* CoreGraphics.framework */, + B305EF99276B4F0A003AE510 /* GameKit.framework */, + B3FFF02C26E9E65800A33143 /* AVFoundation.framework */, + B3AF6FE0219161C4000FA7F9 /* tvOS */, + B3AF6FDB21916177000FA7F9 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 1ACEA64A17F7467D0031B1C9 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + B322994E2878D18D00585AD8 /* PVLibRetro-Prefix.pch */, + B3C96EBB1D62C54D003F1E93 /* PVSupport.h */, + B3C96EBA1D62C54D003F1E93 /* Info.plist */, + 1ACEA64B17F7467D0031B1C9 /* PVSupport-Prefix.pch */, + ); + path = "Supporting Files"; + sourceTree = ""; + }; + 1ACEA69017F748F80031B1C9 /* Audio */ = { + isa = PBXGroup; + children = ( + 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */, + 1ACEA69117F748F80031B1C9 /* OEGameAudio.h */, + B3FA5D591D6B908300060D71 /* OERingBuffer.h */, + 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */, + 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */, + B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */, + B3447E7E218B7E2C00557ACE /* CARingBuffer */, + ); + path = Audio; + sourceTree = ""; + }; + B302F89420B71C2300C5E502 /* Logging */ = { + isa = PBXGroup; + children = ( + B3296E8D26C680EA0088AC32 /* Protocols */, + B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */, + B3296EA126C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift */, + B302F89C20B73D6300C5E502 /* PVProvenanceLogging.h */, + B302F89D20B73D6400C5E502 /* PVProvenanceLogging.m */, + B302F89B20B73D6300C5E502 /* PVLogEntry.h */, + B302F89920B73D5F00C5E502 /* PVLogEntry.m */, + B302F89A20B73D6200C5E502 /* PVLogging.h */, + B302F89E20B73D6400C5E502 /* PVLogging.m */, + B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */, + B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */, + ); + path = Logging; + sourceTree = ""; + }; + B30E94892793C77700871E57 /* PVSupport */ = { + isa = PBXGroup; + children = ( + B30F80112905169A00F21217 /* System */, + 1ACEA69017F748F80031B1C9 /* Audio */, + B3AB36DC2187F4C4009D9244 /* Controller */, + B3AB37F721882119009D9244 /* CoreOptions */, + B3CDEEB821D4C394000C55F7 /* EmulatorCore */, + B302F89420B71C2300C5E502 /* Logging */, + B3A4FB57278FE2B700A65248 /* NSExtensions */, + B3C83E25279621080020824C /* Performance */, + B3447F99218C1CBE00557ACE /* Settings */, + B3A4FB56278FE2A700A65248 /* Threads */, + 1A4E718B1A6C693A005CA80F /* Utilities */, + ); + path = PVSupport; + sourceTree = ""; + }; + B30E948B2793CBC800871E57 /* PVSupportTests */ = { + isa = PBXGroup; + children = ( + B3532B3E21A7B753006CDA0F /* PVSettingsTests.swift */, + ); + path = PVSupportTests; + sourceTree = ""; + }; + B30F80112905169A00F21217 /* System */ = { + isa = PBXGroup; + children = ( + B30F8012290516B900F21217 /* ScreenType.swift */, + ); + path = System; + sourceTree = ""; + }; + B322512E286C4728001FDF42 /* retro */ = { + isa = PBXGroup; + children = ( + B3225165286C6F29001FDF42 /* cheevos.c */, + B3225155286C6F28001FDF42 /* command.c */, + B322515F286C6F29001FDF42 /* config_file_userdata.c */, + B322515D286C6F29001FDF42 /* configuration.c */, + B3225183286C6FA1001FDF42 /* core_backup.c */, + B34DC369286717AE00B60497 /* core_impl.c */, + B34DC36C286717AE00B60497 /* core_info.c */, + B3225154286C6F28001FDF42 /* database_info.c */, + B34DC365286717AD00B60497 /* driver.c */, + B34DC36D286717AE00B60497 /* dynamic.c */, + B3225156286C6F28001FDF42 /* file_path_special.c */, + B3225152286C6F28001FDF42 /* file_path_str.c */, + B3225160286C6F29001FDF42 /* git_version.c */, + B322515B286C6F29001FDF42 /* list_special.c */, + B3225169286C6F2A001FDF42 /* movie.c */, + B322515C286C6F29001FDF42 /* msg_hash.c */, + B322514D286C6F28001FDF42 /* patch.c */, + B34DC3782867180300B60497 /* performance_counters.c */, + B3225166286C6F29001FDF42 /* playlist.c */, + B322517C286C6F35001FDF42 /* retroarch.c */, + B3225179286C6F34001FDF42 /* runloop.c */, + B322517A286C6F35001FDF42 /* verbosity.c */, + B3225164286C6F29001FDF42 /* autosave.h */, + B3225150286C6F28001FDF42 /* cheevos.h */, + B3225159286C6F29001FDF42 /* command.h */, + B3225157286C6F29001FDF42 /* config_file_userdata.h */, + B3225168286C6F29001FDF42 /* config.def.h */, + B3225151286C6F28001FDF42 /* config.features.h */, + B3225162286C6F29001FDF42 /* configuration.h */, + B322514E286C6F28001FDF42 /* content.h */, + B3225184286C6FA2001FDF42 /* core_backup.h */, + B34DC364286717AD00B60497 /* core_info.h */, + B34DC36A286717AE00B60497 /* core_type.h */, + B34DC368286717AD00B60497 /* core.h */, + B3225163286C6F29001FDF42 /* database_info.h */, + B34DC366286717AD00B60497 /* defaults.h */, + B34DC367286717AD00B60497 /* driver.h */, + B34DC36B286717AE00B60497 /* dynamic.h */, + B322515A286C6F29001FDF42 /* file_path_special.h */, + B322514F286C6F28001FDF42 /* general.h */, + B3225158286C6F29001FDF42 /* git_version.h */, + B322515E286C6F29001FDF42 /* lakka.h */, + B3225167286C6F29001FDF42 /* list_special.h */, + B3225161286C6F29001FDF42 /* movie.h */, + B3225153286C6F28001FDF42 /* msg_hash.h */, + B322516B286C6F2A001FDF42 /* patch.h */, + B34DC3792867180300B60497 /* performance_counters.h */, + B322516A286C6F2A001FDF42 /* playlist.h */, + B322512F286C4728001FDF42 /* retro.h */, + B322517F286C6F35001FDF42 /* retroarch.h */, + B322517E286C6F35001FDF42 /* runloop.h */, + B322517B286C6F35001FDF42 /* system.h */, + B322517D286C6F35001FDF42 /* verbosity.h */, + B3225198286C827D001FDF42 /* tasks */, + B3225130286C4728001FDF42 /* retro.m */, + B34DC39928671EFD00B60497 /* audio */, + B34DC55828671EFF00B60497 /* camera */, + B34DC56028671EFF00B60497 /* cores */, + B34DC37C28671EFD00B60497 /* frontend */, + B34DC3EC28671EFE00B60497 /* gfx */, + B34DC4E928671EFF00B60497 /* input */, + B34DC4D528671EFE00B60497 /* intl */, + B34DC6392867202D00B60497 /* libretro-common */, + B34DC5B428671EFF00B60497 /* location */, + B34DC39228671EFD00B60497 /* managers */, + B34DC3E628671EFE00B60497 /* record */, + ); + path = retro; + sourceTree = ""; + }; + B3225198286C827D001FDF42 /* tasks */ = { + isa = PBXGroup; + children = ( + B32251AE286C827E001FDF42 /* task_audio_mixer.c */, + B32251A7286C827E001FDF42 /* task_autodetect_blissbox.c */, + B322519A286C827D001FDF42 /* task_autodetect.c */, + B32251AA286C827E001FDF42 /* task_bluetooth.c */, + B322519F286C827D001FDF42 /* task_content_disc.c */, + B32251B4286C827E001FDF42 /* task_content.c */, + B322519E286C827D001FDF42 /* task_core_backup.c */, + B32251AC286C827E001FDF42 /* task_core_updater.c */, + B32251B3286C827E001FDF42 /* task_database_cue.c */, + B32251A4286C827E001FDF42 /* task_database.c */, + B32251AF286C827E001FDF42 /* task_decompress.c */, + B32251A1286C827D001FDF42 /* task_file_transfer.c */, + B32251B6286C827E001FDF42 /* task_http.c */, + B32251A9286C827E001FDF42 /* task_image.c */, + B322519C286C827D001FDF42 /* task_manual_content_scan.c */, + B322519B286C827D001FDF42 /* task_netplay_find_content.c */, + B32251B1286C827E001FDF42 /* task_netplay_lan_scan.c */, + B322519D286C827D001FDF42 /* task_netplay_nat_traversal.c */, + B32251AD286C827E001FDF42 /* task_overlay.c */, + B32251B7286C827E001FDF42 /* task_patch.c */, + B32251B5286C827E001FDF42 /* task_pl_thumbnail_download.c */, + B32251A6286C827E001FDF42 /* task_playlist_manager.c */, + B32251A8286C827E001FDF42 /* task_powerstate.c */, + B32251A5286C827E001FDF42 /* task_save.c */, + B32251A0286C827D001FDF42 /* task_screenshot.c */, + B32251B2286C827E001FDF42 /* task_wifi.c */, + B32251A2286C827D001FDF42 /* task_audio_mixer.h */, + B32251A3286C827E001FDF42 /* task_content.h */, + B32251B0286C827E001FDF42 /* task_file_transfer.h */, + B3225199286C827D001FDF42 /* task_powerstate.h */, + B32251AB286C827E001FDF42 /* tasks_internal.h */, + ); + path = tasks; + sourceTree = ""; + }; + B3296E8D26C680EA0088AC32 /* Protocols */ = { + isa = PBXGroup; + children = ( + B3296E9E26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift */, + ); + path = Protocols; + sourceTree = ""; + }; + B33FB2F6279BE1640013AAD8 /* Types */ = { + isa = PBXGroup; + children = ( + B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */, + B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */, + B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */, + B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */, + B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */, + ); + path = Types; + sourceTree = ""; + }; + B33FB30B279BE2650013AAD8 /* Protocols */ = { + isa = PBXGroup; + children = ( + B33FB30C279BE2710013AAD8 /* CoreOptional.swift */, + ); + path = Protocols; + sourceTree = ""; + }; + B3447E7E218B7E2C00557ACE /* CARingBuffer */ = { + isa = PBXGroup; + children = ( + B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */, + B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */, + B3447E83218B7E4B00557ACE /* CAAtomic.h */, + B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */, + B3447E82218B7E4B00557ACE /* CAAutoDisposer.h */, + B3447E7F218B7E4B00557ACE /* CABitOperations.h */, + B3447E85218B7E4B00557ACE /* CARingBuffer.h */, + ); + path = CARingBuffer; + sourceTree = ""; + }; + B3447F99218C1CBE00557ACE /* Settings */ = { + isa = PBXGroup; + children = ( + B3447F9A218C1CD200557ACE /* PVSettingsModel.swift */, + B3532C3521A925C1006CDA0F /* SortOption.swift */, + 557DCAB0292A91E000045B02 /* ThemeOption.swift */, + ); + path = Settings; + sourceTree = ""; + }; + B34DC37C28671EFD00B60497 /* frontend */ = { + isa = PBXGroup; + children = ( + B34DC37D28671EFD00B60497 /* frontend.c */, + B34DC37E28671EFD00B60497 /* drivers */, + B34DC38E28671EFD00B60497 /* frontend_driver.h */, + B34DC38F28671EFD00B60497 /* frontend.h */, + B34DC39028671EFD00B60497 /* frontend_driver.c */, + B34DC39128671EFD00B60497 /* frontend_salamander.c */, + ); + path = frontend; + sourceTree = ""; + }; + B34DC37E28671EFD00B60497 /* drivers */ = { + isa = PBXGroup; + children = ( + B34DC37F28671EFD00B60497 /* platform_bsd.c */, + B34DC38028671EFD00B60497 /* platform_gx.c */, + B34DC38128671EFD00B60497 /* platform_qnx.c */, + B34DC38228671EFD00B60497 /* platform_xdk.cpp */, + B34DC38328671EFD00B60497 /* platform_darwin.m */, + B34DC38428671EFD00B60497 /* platform_emscripten.c */, + B34DC38528671EFD00B60497 /* platform_linux.h */, + B34DC38628671EFD00B60497 /* platform_null.c */, + B34DC38728671EFD00B60497 /* platform_ps3.c */, + B34DC38828671EFD00B60497 /* platform_xenon.c */, + B34DC38928671EFD00B60497 /* platform_psp.c */, + B34DC38A28671EFD00B60497 /* platform_wii.c */, + B34DC38B28671EFD00B60497 /* platform_ctr.c */, + B34DC38C28671EFD00B60497 /* platform_linux.c */, + B34DC38D28671EFD00B60497 /* platform_win32.c */, + ); + path = drivers; + sourceTree = ""; + }; + B34DC39228671EFD00B60497 /* managers */ = { + isa = PBXGroup; + children = ( + B34DC39328671EFD00B60497 /* cheat_manager.h */, + B34DC39428671EFD00B60497 /* state_manager.c */, + B34DC39528671EFD00B60497 /* core_option_manager.c */, + B34DC39628671EFD00B60497 /* cheat_manager.c */, + B34DC39728671EFD00B60497 /* core_option_manager.h */, + B34DC39828671EFD00B60497 /* state_manager.h */, + ); + path = managers; + sourceTree = ""; + }; + B34DC39928671EFD00B60497 /* audio */ = { + isa = PBXGroup; + children = ( + B34DC39A28671EFD00B60497 /* audio_thread_wrapper.c */, + B34DC39B28671EFD00B60497 /* drivers */, + B34DC3B428671EFE00B60497 /* audio_dsp_filter.h */, + B34DC3B528671EFE00B60497 /* test */, + B34DC3BD28671EFE00B60497 /* audio_resampler_driver.c */, + B34DC3BE28671EFE00B60497 /* drivers_resampler */, + B34DC3C528671EFE00B60497 /* audio_driver.h */, + B34DC3C628671EFE00B60497 /* audio_thread_wrapper.h */, + B34DC3C728671EFE00B60497 /* audio_dsp_filter.c */, + B34DC3C828671EFE00B60497 /* audio_resampler_driver.h */, + B34DC3C928671EFE00B60497 /* audio_driver.c */, + B34DC3CA28671EFE00B60497 /* librsound.c */, + B34DC3CB28671EFE00B60497 /* audio_filters */, + ); + path = audio; + sourceTree = ""; + }; + B34DC39B28671EFD00B60497 /* drivers */ = { + isa = PBXGroup; + children = ( + B34DC39C28671EFD00B60497 /* rsound.h */, + B34DC39D28671EFD00B60497 /* ps3_audio.c */, + B34DC39E28671EFD00B60497 /* coreaudio.c */, + B34DC39F28671EFD00B60497 /* xaudio.h */, + B34DC3A028671EFD00B60497 /* pulse.c */, + B34DC3A128671EFD00B60497 /* opensl.c */, + B34DC3A228671EFD00B60497 /* nullaudio.c */, + B34DC3A328671EFD00B60497 /* jack.c */, + B34DC3A428671EFD00B60497 /* rwebaudio.c */, + B34DC3A528671EFD00B60497 /* openal.c */, + B34DC3A628671EFD00B60497 /* alsa.c */, + B34DC3A728671EFD00B60497 /* ctr_csnd_audio.c */, + B34DC3A828671EFE00B60497 /* rsound.c */, + B34DC3A928671EFE00B60497 /* ctr_dsp_audio.c */, + B34DC3AA28671EFE00B60497 /* roar.c */, + B34DC3AB28671EFE00B60497 /* dsound.c */, + B34DC3AC28671EFE00B60497 /* psp_audio.c */, + B34DC3AD28671EFE00B60497 /* alsathread.c */, + B34DC3AE28671EFE00B60497 /* alsa_qsa.c */, + B34DC3AF28671EFE00B60497 /* xenon360_audio.c */, + B34DC3B028671EFE00B60497 /* xaudio.cpp */, + B34DC3B128671EFE00B60497 /* oss.c */, + B34DC3B228671EFE00B60497 /* sdl_audio.c */, + B34DC3B328671EFE00B60497 /* gx_audio.c */, + ); + path = drivers; + sourceTree = ""; + }; + B34DC3B528671EFE00B60497 /* test */ = { + isa = PBXGroup; + children = ( + B34DC3B628671EFE00B60497 /* test-rate-control.sh */, + B34DC3B728671EFE00B60497 /* sinc_test.m */, + B34DC3B828671EFE00B60497 /* Makefile */, + B34DC3B928671EFE00B60497 /* snr.c */, + B34DC3BA28671EFE00B60497 /* main.c */, + B34DC3BB28671EFE00B60497 /* modified_bessel.m */, + B34DC3BC28671EFE00B60497 /* kaiser_window.m */, + ); + path = test; + sourceTree = ""; + }; + B34DC3BE28671EFE00B60497 /* drivers_resampler */ = { + isa = PBXGroup; + children = ( + B34DC3BF28671EFE00B60497 /* sinc_resampler.c */, + B34DC3C028671EFE00B60497 /* cc_resampler.c */, + B34DC3C128671EFE00B60497 /* null_resampler.c */, + B34DC3C228671EFE00B60497 /* nearest_resampler.c */, + B34DC3C328671EFE00B60497 /* cc_resampler_neon.S */, + B34DC3C428671EFE00B60497 /* sinc_resampler_neon.S */, + ); + path = drivers_resampler; + sourceTree = ""; + }; + B34DC3CB28671EFE00B60497 /* audio_filters */ = { + isa = PBXGroup; + children = ( + B34DC3CC28671EFE00B60497 /* eq.c */, + B34DC3CD28671EFE00B60497 /* EQ.dsp */, + B34DC3CE28671EFE00B60497 /* dspfilter.h */, + B34DC3CF28671EFE00B60497 /* phaser.c */, + B34DC3D028671EFE00B60497 /* Makefile */, + B34DC3D128671EFE00B60497 /* chorus.c */, + B34DC3D228671EFE00B60497 /* Phaser.dsp */, + B34DC3D328671EFE00B60497 /* wahwah.c */, + B34DC3D428671EFE00B60497 /* IIR.dsp */, + B34DC3D528671EFE00B60497 /* HighShelfDampen.dsp */, + B34DC3D628671EFE00B60497 /* EchoReverb.dsp */, + B34DC3D728671EFE00B60497 /* iir.c */, + B34DC3D828671EFE00B60497 /* reverb.c */, + B34DC3D928671EFE00B60497 /* WahWah.dsp */, + B34DC3DA28671EFE00B60497 /* fft */, + B34DC3DD28671EFE00B60497 /* link.T */, + B34DC3DE28671EFE00B60497 /* BassBoost.dsp */, + B34DC3DF28671EFE00B60497 /* Echo.dsp */, + B34DC3E028671EFE00B60497 /* LowPassCPS.dsp */, + B34DC3E128671EFE00B60497 /* Panning.dsp */, + B34DC3E228671EFE00B60497 /* panning.c */, + B34DC3E328671EFE00B60497 /* Chorus.dsp */, + B34DC3E428671EFE00B60497 /* Reverb.dsp */, + B34DC3E528671EFE00B60497 /* echo.c */, + ); + path = audio_filters; + sourceTree = ""; + }; + B34DC3DA28671EFE00B60497 /* fft */ = { + isa = PBXGroup; + children = ( + B34DC3DB28671EFE00B60497 /* fft.h */, + B34DC3DC28671EFE00B60497 /* fft.c */, + ); + path = fft; + sourceTree = ""; + }; + B34DC3E628671EFE00B60497 /* record */ = { + isa = PBXGroup; + children = ( + B34DC3E728671EFE00B60497 /* record_driver.h */, + B34DC3E828671EFE00B60497 /* drivers */, + B34DC3EB28671EFE00B60497 /* record_driver.c */, + ); + path = record; + sourceTree = ""; + }; + B34DC3E828671EFE00B60497 /* drivers */ = { + isa = PBXGroup; + children = ( + B34DC3E928671EFE00B60497 /* record_null.c */, + B34DC3EA28671EFE00B60497 /* record_ffmpeg.c */, + ); + path = drivers; + sourceTree = ""; + }; + B34DC3EC28671EFE00B60497 /* gfx */ = { + isa = PBXGroup; + children = ( + B34DC49D28671EFE00B60497 /* font_driver.c */, + B34DC4AF28671EFE00B60497 /* video_context_driver.c */, + B34DC4CC28671EFE00B60497 /* video_coord_array.c */, + B34DC45B28671EFE00B60497 /* video_driver.c */, + B34DC4BA28671EFE00B60497 /* video_filter.c */, + B34DC47B28671EFE00B60497 /* video_shader_driver.c */, + B34DC4C828671EFE00B60497 /* video_shader_parse.c */, + B34DC40328671EFE00B60497 /* video_state_python.c */, + B34DC4B028671EFE00B60497 /* video_state_tracker.c */, + B34DC45A28671EFE00B60497 /* video_thread_wrapper.c */, + B34DC4CB28671EFE00B60497 /* font_driver.h */, + B34DC3ED28671EFE00B60497 /* video_context_driver.h */, + B34DC49C28671EFE00B60497 /* video_coord_array.h */, + B34DC4C928671EFE00B60497 /* video_driver.h */, + B34DC47A28671EFE00B60497 /* video_filter.h */, + B34DC45928671EFE00B60497 /* video_frame.h */, + B34DC4B928671EFE00B60497 /* video_shader_driver.h */, + B34DC47928671EFE00B60497 /* video_shader_parse.h */, + B34DC49E28671EFE00B60497 /* video_state_python.h */, + B34DC45828671EFE00B60497 /* video_state_tracker.h */, + B34DC4CA28671EFE00B60497 /* video_thread_wrapper.h */, + B34DC49F28671EFE00B60497 /* common */, + B34DC40428671EFE00B60497 /* drivers */, + B34DC3EE28671EFE00B60497 /* drivers_context */, + B34DC4B128671EFE00B60497 /* drivers_font */, + B34DC4CD28671EFE00B60497 /* drivers_font_renderer */, + B34DC4BB28671EFE00B60497 /* drivers_shader */, + B34DC45C28671EFE00B60497 /* include */, + B34DC47C28671EFE00B60497 /* video_filters */, + ); + path = gfx; + sourceTree = ""; + }; + B34DC3EE28671EFE00B60497 /* drivers_context */ = { + isa = PBXGroup; + children = ( + B34DC3EF28671EFE00B60497 /* vivante_fbdev_ctx.c */, + B34DC3F028671EFE00B60497 /* cgl_ctx.c */, + B34DC3F128671EFE00B60497 /* mali_fbdev_ctx.c */, + B34DC3F228671EFE00B60497 /* drm_ctx.c */, + B34DC3F328671EFE00B60497 /* xegl_ctx.c */, + B34DC3F428671EFE00B60497 /* wayland_ctx.c */, + B34DC3F528671EFE00B60497 /* gfx_null_ctx.c */, + B34DC3F628671EFE00B60497 /* android_ctx.c */, + B34DC3F728671EFE00B60497 /* ps3_ctx.c */, + B34DC3F828671EFE00B60497 /* x_ctx.c */, + B34DC3F928671EFE00B60497 /* khr_display_ctx.c */, + B34DC3FA28671EFE00B60497 /* d3d_ctx.cpp */, + B34DC3FB28671EFE00B60497 /* wgl_ctx.cpp */, + B34DC3FC28671EFE00B60497 /* emscriptenegl_ctx.c */, + B34DC3FD28671EFE00B60497 /* bbqnx_ctx.c */, + B34DC3FE28671EFE00B60497 /* cocoa_gl_ctx.m */, + B34DC3FF28671EFE00B60497 /* sdl_gl_ctx.c */, + B34DC40028671EFE00B60497 /* vc_egl_ctx.c */, + B34DC40128671EFE00B60497 /* opendingux_fbdev_ctx.c */, + B34DC40228671EFE00B60497 /* osmesa_ctx.c */, + ); + path = drivers_context; + sourceTree = ""; + }; + B34DC40428671EFE00B60497 /* drivers */ = { + isa = PBXGroup; + children = ( + B34DC40528671EFE00B60497 /* gl_renderchains */, + B34DC40828671EFE00B60497 /* sunxi_gfx.c */, + B34DC40928671EFE00B60497 /* gl.c */, + B34DC40A28671EFE00B60497 /* sdl_gfx.c */, + B34DC40B28671EFE00B60497 /* d3d_renderchains */, + B34DC41128671EFE00B60497 /* drm_gfx.c */, + B34DC41228671EFE00B60497 /* ctr_gu.h */, + B34DC41328671EFE00B60497 /* vg.c */, + B34DC41428671EFE00B60497 /* gx_gfx.c */, + B34DC41528671EFE00B60497 /* psp1_gfx.c */, + B34DC41628671EFE00B60497 /* vita2d_gfx.c */, + B34DC41728671EFE00B60497 /* nullgfx.c */, + B34DC41828671EFE00B60497 /* exynos_gfx.c */, + B34DC41928671EFE00B60497 /* d3d.h */, + B34DC41A28671EFE00B60497 /* xvideo.c */, + B34DC41B28671EFE00B60497 /* vulkan.c */, + B34DC41C28671EFE00B60497 /* gl_shaders */, + B34DC43328671EFE00B60497 /* omap_gfx.c */, + B34DC43428671EFE00B60497 /* drm_pixformats.h */, + B34DC43528671EFE00B60497 /* vulkan_shaders */, + B34DC44928671EFE00B60497 /* d3d.cpp */, + B34DC44A28671EFE00B60497 /* sdl2_gfx.c */, + B34DC44B28671EFE00B60497 /* d3d_shaders */, + B34DC45028671EFE00B60497 /* xenon360_gfx.c */, + B34DC45128671EFE00B60497 /* ctr_gfx.c */, + B34DC45228671EFE00B60497 /* psp1_gfx.h */, + B34DC45328671EFE00B60497 /* dispmanx_gfx.c */, + B34DC45428671EFE00B60497 /* ctr_shaders */, + B34DC45728671EFE00B60497 /* gx_gfx_vi_encoder.c */, + ); + path = drivers; + sourceTree = ""; + }; + B34DC40528671EFE00B60497 /* gl_renderchains */ = { + isa = PBXGroup; + children = ( + B34DC40628671EFE00B60497 /* render_chain_gl_legacy.c */, + B34DC40728671EFE00B60497 /* render_chain_gl.h */, + ); + path = gl_renderchains; + sourceTree = ""; + }; + B34DC40B28671EFE00B60497 /* d3d_renderchains */ = { + isa = PBXGroup; + children = ( + B34DC40C28671EFE00B60497 /* render_chain_driver.c */, + B34DC40D28671EFE00B60497 /* render_chain_null.c */, + B34DC40E28671EFE00B60497 /* render_chain_cg.cpp */, + B34DC40F28671EFE00B60497 /* render_chain_xdk.cpp */, + B34DC41028671EFE00B60497 /* render_chain_driver.h */, + ); + path = d3d_renderchains; + sourceTree = ""; + }; + B34DC41C28671EFE00B60497 /* gl_shaders */ = { + isa = PBXGroup; + children = ( + B34DC41D28671EFE00B60497 /* pipeline_xmb_ribbon.glsl.frag.h */, + B34DC41E28671EFE00B60497 /* shaders_common.h */, + B34DC41F28671EFE00B60497 /* pipeline_xmb_ribbon_simple.glsl.frag.h */, + B34DC42028671EFE00B60497 /* core_alpha_blend.glsl.vert.h */, + B34DC42128671EFE00B60497 /* modern_alpha_blend.glsl.frag.h */, + B34DC42228671EFE00B60497 /* pipeline_xmb_ribbon_simple.cg.h */, + B34DC42328671EFE00B60497 /* core_alpha_blend.glsl.frag.h */, + B34DC42428671EFE00B60497 /* modern_alpha_blend.glsl.vert.h */, + B34DC42528671EFE00B60497 /* opaque.cg.h */, + B34DC42628671EFE00B60497 /* pipeline_nuklear.cg.h */, + B34DC42728671EFE00B60497 /* pipeline_nuklear.glsl.vert.h */, + B34DC42828671EFE00B60497 /* modern_opaque.glsl.vert.h */, + B34DC42928671EFE00B60497 /* modern_opaque.glsl.frag.h */, + B34DC42A28671EFE00B60497 /* pipeline_nuklear.glsl.frag.h */, + B34DC42B28671EFE00B60497 /* modern_pipeline_xmb_ribbon.glsl.vert.h */, + B34DC42C28671EFE00B60497 /* core_opaque.glsl.vert.h */, + B34DC42D28671EFE00B60497 /* legacy_pipeline_xmb_ribbon.glsl.vert.h */, + B34DC42E28671EFE00B60497 /* legacy_opaque.glsl.vert.h */, + B34DC42F28671EFE00B60497 /* modern_pipeline_xmb_ribbon_simple.glsl.vert.h */, + B34DC43028671EFE00B60497 /* legacy_pipeline_xmb_ribbon_simple.glsl.vert.h */, + B34DC43128671EFE00B60497 /* legacy_opaque.glsl.frag.h */, + B34DC43228671EFE00B60497 /* core_opaque.glsl.frag.h */, + ); + path = gl_shaders; + sourceTree = ""; + }; + B34DC43528671EFE00B60497 /* vulkan_shaders */ = { + isa = PBXGroup; + children = ( + B34DC43628671EFE00B60497 /* opaque.vert */, + B34DC43728671EFE00B60497 /* alpha_blend.frag */, + B34DC43828671EFE00B60497 /* ribbon.vert */, + B34DC43928671EFE00B60497 /* ribbon_simple.vert.inc */, + B34DC43A28671EFE00B60497 /* opaque.vert.inc */, + B34DC43B28671EFE00B60497 /* alpha_blend.frag.inc */, + B34DC43C28671EFE00B60497 /* Makefile */, + B34DC43D28671EFE00B60497 /* ribbon_simple.frag */, + B34DC43E28671EFE00B60497 /* ribbon.vert.inc */, + B34DC43F28671EFE00B60497 /* font.frag.inc */, + B34DC44028671EFE00B60497 /* ribbon.frag.inc */, + B34DC44128671EFE00B60497 /* ribbon.frag */, + B34DC44228671EFE00B60497 /* font.frag */, + B34DC44328671EFE00B60497 /* alpha_blend.vert */, + B34DC44428671EFE00B60497 /* opaque.frag */, + B34DC44528671EFE00B60497 /* alpha_blend.vert.inc */, + B34DC44628671EFE00B60497 /* opaque.frag.inc */, + B34DC44728671EFE00B60497 /* ribbon_simple.frag.inc */, + B34DC44828671EFE00B60497 /* ribbon_simple.vert */, + ); + path = vulkan_shaders; + sourceTree = ""; + }; + B34DC44B28671EFE00B60497 /* d3d_shaders */ = { + isa = PBXGroup; + children = ( + B34DC44C28671EFE00B60497 /* shaders_common.h */, + B34DC44D28671EFE00B60497 /* opaque.hlsl.d3d9.h */, + B34DC44E28671EFE00B60497 /* opaque.cg.d3d9.h */, + B34DC44F28671EFE00B60497 /* font.hlsl.d3d9.h */, + ); + path = d3d_shaders; + sourceTree = ""; + }; + B34DC45428671EFE00B60497 /* ctr_shaders */ = { + isa = PBXGroup; + children = ( + B34DC45528671EFE00B60497 /* ctr_sprite.gsh */, + B34DC45628671EFE00B60497 /* ctr_sprite.vsh */, + ); + path = ctr_shaders; + sourceTree = ""; + }; + B34DC45C28671EFE00B60497 /* include */ = { + isa = PBXGroup; + children = ( + B34DC45D28671EFE00B60497 /* d3d9caps.h */, + B34DC45E28671EFE00B60497 /* Cg */, + B34DC46228671EFE00B60497 /* d3d9.h */, + B34DC46328671EFE00B60497 /* d3d9types.h */, + B34DC46428671EFE00B60497 /* vulkan */, + B34DC46B28671EFE00B60497 /* d3d9 */, + B34DC47728671EFE00B60497 /* GL */, + ); + path = include; + sourceTree = ""; + }; + B34DC45E28671EFE00B60497 /* Cg */ = { + isa = PBXGroup; + children = ( + B34DC45F28671EFE00B60497 /* cgGL.h */, + B34DC46028671EFE00B60497 /* cgD3D9.h */, + B34DC46128671EFE00B60497 /* cg.h */, + ); + path = Cg; + sourceTree = ""; + }; + B34DC46428671EFE00B60497 /* vulkan */ = { + isa = PBXGroup; + children = ( + B34DC46528671EFE00B60497 /* vk_layer.h */, + B34DC46628671EFE00B60497 /* vk_icd.h */, + B34DC46728671EFE00B60497 /* vulkan.h */, + B34DC46828671EFE00B60497 /* vk_platform.h */, + B34DC46928671EFE00B60497 /* vulkan_intel.h */, + B34DC46A28671EFE00B60497 /* vk_sdk_platform.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B34DC46B28671EFE00B60497 /* d3d9 */ = { + isa = PBXGroup; + children = ( + B34DC46C28671EFE00B60497 /* d3dx9tex.h */, + B34DC46D28671EFE00B60497 /* d3dx9mesh.h */, + B34DC46E28671EFE00B60497 /* d3dx9xof.h */, + B34DC46F28671EFE00B60497 /* d3dx9math.inl */, + B34DC47028671EFE00B60497 /* d3dx9effect.h */, + B34DC47128671EFE00B60497 /* d3dx9core.h */, + B34DC47228671EFE00B60497 /* d3dx9.h */, + B34DC47328671EFE00B60497 /* d3dx9shader.h */, + B34DC47428671EFE00B60497 /* d3dx9anim.h */, + B34DC47528671EFE00B60497 /* d3dx9math.h */, + B34DC47628671EFE00B60497 /* d3dx9shape.h */, + ); + path = d3d9; + sourceTree = ""; + }; + B34DC47728671EFE00B60497 /* GL */ = { + isa = PBXGroup; + children = ( + B34DC47828671EFE00B60497 /* glext.h */, + ); + path = GL; + sourceTree = ""; + }; + B34DC47C28671EFE00B60497 /* video_filters */ = { + isa = PBXGroup; + children = ( + B34DC47D28671EFE00B60497 /* darken.c */, + B34DC47E28671EFE00B60497 /* snes_ntsc */, + B34DC48328671EFE00B60497 /* Darken.filt */, + B34DC48428671EFE00B60497 /* Super2xSaI.filt */, + B34DC48528671EFE00B60497 /* scale2x.c */, + B34DC48628671EFE00B60497 /* super2xsai.c */, + B34DC48728671EFE00B60497 /* softfilter.h */, + B34DC48828671EFE00B60497 /* 2xsai.c */, + B34DC48928671EFE00B60497 /* Phosphor2x.filt */, + B34DC48A28671EFE00B60497 /* lq2x.c */, + B34DC48B28671EFE00B60497 /* Blargg_NTSC_SNES_S-Video.filt */, + B34DC48C28671EFE00B60497 /* epx.c */, + B34DC48D28671EFE00B60497 /* Makefile */, + B34DC48E28671EFE00B60497 /* Blargg_NTSC_SNES_RF.filt */, + B34DC48F28671EFE00B60497 /* 2xSaI.filt */, + B34DC49028671EFE00B60497 /* 2xBR.filt */, + B34DC49128671EFE00B60497 /* blargg_ntsc_snes.c */, + B34DC49228671EFE00B60497 /* phosphor2x.c */, + B34DC49328671EFE00B60497 /* Blargg_NTSC_SNES_Composite.filt */, + B34DC49428671EFE00B60497 /* 2xbr.c */, + B34DC49528671EFE00B60497 /* Scale2x.filt */, + B34DC49628671EFE00B60497 /* link.T */, + B34DC49728671EFE00B60497 /* LQ2x.filt */, + B34DC49828671EFE00B60497 /* SuperEagle.filt */, + B34DC49928671EFE00B60497 /* Blargg_NTSC_SNES_RGB.filt */, + B34DC49A28671EFE00B60497 /* supereagle.c */, + B34DC49B28671EFE00B60497 /* EPX.filt */, + ); + path = video_filters; + sourceTree = ""; + }; + B34DC47E28671EFE00B60497 /* snes_ntsc */ = { + isa = PBXGroup; + children = ( + B34DC47F28671EFE00B60497 /* snes_ntsc_config.h */, + B34DC48028671EFE00B60497 /* snes_ntsc.c */, + B34DC48128671EFE00B60497 /* snes_ntsc_impl.h */, + B34DC48228671EFE00B60497 /* snes_ntsc.h */, + ); + path = snes_ntsc; + sourceTree = ""; + }; + B34DC49F28671EFE00B60497 /* common */ = { + isa = PBXGroup; + children = ( + B34DC4A028671EFE00B60497 /* vulkan_common.c */, + B34DC4A128671EFE00B60497 /* x11_common.h */, + B34DC4A228671EFE00B60497 /* drm_common.c */, + B34DC4A328671EFE00B60497 /* win32_common.cpp */, + B34DC4A428671EFE00B60497 /* egl_common.h */, + B34DC4A528671EFE00B60497 /* gl_common.c */, + B34DC4A628671EFE00B60497 /* d3d_common.cpp */, + B34DC4A728671EFE00B60497 /* drm_common.h */, + B34DC4A828671EFE00B60497 /* x11_common.c */, + B34DC4A928671EFE00B60497 /* vulkan_common.h */, + B34DC4AA28671EFE00B60497 /* win32_common.h */, + B34DC4AB28671EFE00B60497 /* egl_common.c */, + B34DC4AC28671EFE00B60497 /* gl_common.h */, + B34DC4AD28671EFE00B60497 /* d3d_common.h */, + B34DC4AE28671EFE00B60497 /* vksym.h */, + ); + path = common; + sourceTree = ""; + }; + B34DC4B128671EFE00B60497 /* drivers_font */ = { + isa = PBXGroup; + children = ( + B34DC4B228671EFE00B60497 /* xdk1_xfonts.c */, + B34DC4B328671EFE00B60497 /* ps_libdbgfont.c */, + B34DC4B428671EFE00B60497 /* xdk360_fonts.cpp */, + B34DC4B528671EFE00B60497 /* gl_raster_font.c */, + B34DC4B628671EFE00B60497 /* vulkan_raster_font.c */, + B34DC4B728671EFE00B60497 /* vita2d_font.c */, + B34DC4B828671EFE00B60497 /* d3d_w32_font.cpp */, + ); + path = drivers_font; + sourceTree = ""; + }; + B34DC4BB28671EFE00B60497 /* drivers_shader */ = { + isa = PBXGroup; + children = ( + B34DC4BC28671EFE00B60497 /* shader_glsl.c */, + B34DC4BD28671EFE00B60497 /* shader_vulkan.cpp */, + B34DC4BE28671EFE00B60497 /* slang_reflection.cpp */, + B34DC4BF28671EFE00B60497 /* shader_hlsl.h */, + B34DC4C028671EFE00B60497 /* glslang_util.hpp */, + B34DC4C128671EFE00B60497 /* slang_reflection.hpp */, + B34DC4C228671EFE00B60497 /* shader_glsl.h */, + B34DC4C328671EFE00B60497 /* shader_null.c */, + B34DC4C428671EFE00B60497 /* glslang_util.cpp */, + B34DC4C528671EFE00B60497 /* shader_gl_cg.c */, + B34DC4C628671EFE00B60497 /* shader_hlsl.c */, + B34DC4C728671EFE00B60497 /* shader_vulkan.h */, + ); + path = drivers_shader; + sourceTree = ""; + }; + B34DC4CD28671EFE00B60497 /* drivers_font_renderer */ = { + isa = PBXGroup; + children = ( + B34DC4CE28671EFE00B60497 /* freetype.c */, + B34DC4CF28671EFE00B60497 /* bitmap.bmp */, + B34DC4D028671EFE00B60497 /* coretext.c */, + B34DC4D128671EFE00B60497 /* bitmap.bin */, + B34DC4D228671EFE00B60497 /* bitmapfont.c */, + B34DC4D328671EFE00B60497 /* bitmap.h */, + B34DC4D428671EFE00B60497 /* stb.c */, + ); + path = drivers_font_renderer; + sourceTree = ""; + }; + B34DC4D528671EFE00B60497 /* intl */ = { + isa = PBXGroup; + children = ( + B34DC4D628671EFE00B60497 /* italian.h */, + B34DC4D728671EFE00B60497 /* msg_hash_nl.c */, + B34DC4D828671EFE00B60497 /* msg_hash_es.c */, + B34DC4D928671EFE00B60497 /* msg_hash_de.c */, + B34DC4DA28671EFE00B60497 /* msg_hash_eo.c */, + B34DC4DB28671EFF00B60497 /* english.h */, + B34DC4DC28671EFF00B60497 /* msg_hash_jp.c */, + B34DC4DD28671EFF00B60497 /* msg_hash_fr.c */, + B34DC4DE28671EFF00B60497 /* spanish.h */, + B34DC4DF28671EFF00B60497 /* msg_hash_it.c */, + B34DC4E028671EFF00B60497 /* russian.h */, + B34DC4E128671EFF00B60497 /* msg_hash_pl.c */, + B34DC4E228671EFF00B60497 /* msg_hash_ru.c */, + B34DC4E328671EFF00B60497 /* msg_hash_uspseudo.c */, + B34DC4E428671EFF00B60497 /* msg_hash_pt.c */, + B34DC4E528671EFF00B60497 /* pseudolocalize.py */, + B34DC4E628671EFF00B60497 /* msg_hash_us.c */, + B34DC4E728671EFF00B60497 /* french.h */, + B34DC4E828671EFF00B60497 /* intl.h */, + ); + path = intl; + sourceTree = ""; + }; + B34DC4E928671EFF00B60497 /* input */ = { + isa = PBXGroup; + children = ( + B34DC52C28671EFF00B60497 /* autoconf */, + B34DC52328671EFF00B60497 /* common */, + B34DC54B28671EFF00B60497 /* connect */, + B34DC4EC28671EFF00B60497 /* drivers */, + B34DC51D28671EFF00B60497 /* drivers_hid */, + B34DC53428671EFF00B60497 /* drivers_joypad */, + B34DC50E28671EFF00B60497 /* drivers_keyboard */, + B34DC50128671EFF00B60497 /* include */, + B34DC4FE28671EFF00B60497 /* input_autodetect.c */, + B34DC54528671EFF00B60497 /* input_autodetect.h */, + B34DC52A28671EFF00B60497 /* input_config.c */, + B34DC4EA28671EFF00B60497 /* input_config.h */, + B34DC51C28671EFF00B60497 /* input_defines.h */, + B34DC54928671EFF00B60497 /* input_driver.c */, + B34DC50D28671EFF00B60497 /* input_driver.h */, + B34DC55728671EFF00B60497 /* input_hid_driver.c */, + B34DC51A28671EFF00B60497 /* input_hid_driver.h */, + B34DC51B28671EFF00B60497 /* input_joypad_driver.c */, + B34DC55628671EFF00B60497 /* input_joypad_driver.h */, + B34DC54A28671EFF00B60497 /* input_keyboard.c */, + B34DC50028671EFF00B60497 /* input_keyboard.h */, + B34DC52B28671EFF00B60497 /* input_keymaps.c */, + B34DC4FF28671EFF00B60497 /* input_keymaps.h */, + B34DC54728671EFF00B60497 /* input_overlay.c */, + B34DC51928671EFF00B60497 /* input_overlay.h */, + B34DC54828671EFF00B60497 /* input_remapping.c */, + B34DC51828671EFF00B60497 /* input_remapping.h */, + B34DC4EB28671EFF00B60497 /* input_remote.c */, + B34DC54628671EFF00B60497 /* input_remote.h */, + ); + path = input; + sourceTree = ""; + }; + B34DC4EC28671EFF00B60497 /* drivers */ = { + isa = PBXGroup; + children = ( + B34DC4ED28671EFF00B60497 /* nullinput.c */, + B34DC4EE28671EFF00B60497 /* cocoa_input.h */, + B34DC4EF28671EFF00B60497 /* qnx_input.c */, + B34DC4F028671EFF00B60497 /* rwebinput_input.c */, + B34DC4F128671EFF00B60497 /* ps3_input.c */, + B34DC4F228671EFF00B60497 /* x11_input.c */, + B34DC4F328671EFF00B60497 /* android_input.c */, + B34DC4F428671EFF00B60497 /* xdk_xinput_input.c */, + B34DC4F528671EFF00B60497 /* gx_input.c */, + B34DC4F628671EFF00B60497 /* sdl_input.c */, + B34DC4F728671EFF00B60497 /* cocoa_input.c */, + B34DC4F828671EFF00B60497 /* udev_input.c */, + B34DC4F928671EFF00B60497 /* linuxraw_input.c */, + B34DC4FA28671EFF00B60497 /* dinput.c */, + B34DC4FB28671EFF00B60497 /* xenon360_input.c */, + B34DC4FC28671EFF00B60497 /* psp_input.c */, + B34DC4FD28671EFF00B60497 /* ctr_input.c */, + ); + path = drivers; + sourceTree = ""; + }; + B34DC50128671EFF00B60497 /* include */ = { + isa = PBXGroup; + children = ( + B34DC50228671EFF00B60497 /* GameController */, + ); + path = include; + sourceTree = ""; + }; + B34DC50228671EFF00B60497 /* GameController */ = { + isa = PBXGroup; + children = ( + B34DC50328671EFF00B60497 /* GCExtendedGamepadSnapshot.h */, + B34DC50428671EFF00B60497 /* GCControllerButtonInput.h */, + B34DC50528671EFF00B60497 /* GCGamepad.h */, + B34DC50628671EFF00B60497 /* GCExtendedGamepad.h */, + B34DC50728671EFF00B60497 /* GCGamepadSnapshot.h */, + B34DC50828671EFF00B60497 /* GCControllerAxisInput.h */, + B34DC50928671EFF00B60497 /* GCControllerDirectionPad.h */, + B34DC50A28671EFF00B60497 /* GameController.h */, + B34DC50B28671EFF00B60497 /* GCController.h */, + B34DC50C28671EFF00B60497 /* GCControllerElement.h */, + ); + path = GameController; + sourceTree = ""; + }; + B34DC50E28671EFF00B60497 /* drivers_keyboard */ = { + isa = PBXGroup; + children = ( + B34DC50F28671EFF00B60497 /* keyboard_event_x11.c */, + B34DC51028671EFF00B60497 /* keyboard_event_apple.c */, + B34DC51128671EFF00B60497 /* keyboard_event_android.c */, + B34DC51228671EFF00B60497 /* keyboard_event_udev.c */, + B34DC51328671EFF00B60497 /* keyboard_event_win32.cpp */, + B34DC51428671EFF00B60497 /* keyboard_event_apple.h */, + B34DC51528671EFF00B60497 /* keyboard_event_udev.h */, + B34DC51628671EFF00B60497 /* keyboard_event_android.h */, + B34DC51728671EFF00B60497 /* keyboard_event_xkb.c */, + ); + path = drivers_keyboard; + sourceTree = ""; + }; + B34DC51D28671EFF00B60497 /* drivers_hid */ = { + isa = PBXGroup; + children = ( + B34DC51E28671EFF00B60497 /* btstack_hid.c */, + B34DC51F28671EFF00B60497 /* null_hid.c */, + B34DC52028671EFF00B60497 /* wiiusb_hid.c */, + B34DC52128671EFF00B60497 /* libusb_hid.c */, + B34DC52228671EFF00B60497 /* iohidmanager_hid.c */, + ); + path = drivers_hid; + sourceTree = ""; + }; + B34DC52328671EFF00B60497 /* common */ = { + isa = PBXGroup; + children = ( + B34DC52428671EFF00B60497 /* input_x11_common.c */, + B34DC52528671EFF00B60497 /* linux_common.c */, + B34DC52628671EFF00B60497 /* epoll_common.c */, + B34DC52728671EFF00B60497 /* linux_common.h */, + B34DC52828671EFF00B60497 /* input_x11_common.h */, + B34DC52928671EFF00B60497 /* epoll_common.h */, + ); + path = common; + sourceTree = ""; + }; + B34DC52C28671EFF00B60497 /* autoconf */ = { + isa = PBXGroup; + children = ( + B34DC52D28671EFF00B60497 /* builtin_ps3.c */, + B34DC52E28671EFF00B60497 /* builtin_xdk.c */, + B34DC52F28671EFF00B60497 /* builtin.h */, + B34DC53028671EFF00B60497 /* builtin_gx.c */, + B34DC53128671EFF00B60497 /* builtin_win.c */, + B34DC53228671EFF00B60497 /* builtin_ctr.c */, + B34DC53328671EFF00B60497 /* builtin_psp.c */, + ); + path = autoconf; + sourceTree = ""; + }; + B34DC53428671EFF00B60497 /* drivers_joypad */ = { + isa = PBXGroup; + children = ( + B34DC53528671EFF00B60497 /* android_joypad.c */, + B34DC53628671EFF00B60497 /* qnx_joypad.c */, + B34DC53728671EFF00B60497 /* sdl_joypad.c */, + B34DC53828671EFF00B60497 /* null_joypad.c */, + B34DC53928671EFF00B60497 /* gx_joypad.c */, + B34DC53A28671EFF00B60497 /* ctr_joypad.c */, + B34DC53B28671EFF00B60497 /* linuxraw_joypad.c */, + B34DC53C28671EFF00B60497 /* mfi_joypad.m */, + B34DC53D28671EFF00B60497 /* parport_joypad.c */, + B34DC53E28671EFF00B60497 /* ps3_joypad.c */, + B34DC53F28671EFF00B60497 /* hid_joypad.c */, + B34DC54028671EFF00B60497 /* xinput_joypad.c */, + B34DC54128671EFF00B60497 /* udev_joypad.c */, + B34DC54228671EFF00B60497 /* xdk_joypad.c */, + B34DC54328671EFF00B60497 /* dinput_joypad.c */, + B34DC54428671EFF00B60497 /* psp_joypad.c */, + ); + path = drivers_joypad; + sourceTree = ""; + }; + B34DC54B28671EFF00B60497 /* connect */ = { + isa = PBXGroup; + children = ( + B34DC54C28671EFF00B60497 /* joypad_connection.c */, + B34DC54D28671EFF00B60497 /* connect_wiiupro.c */, + B34DC54E28671EFF00B60497 /* connect_ps3.c */, + B34DC54F28671EFF00B60497 /* connect_ps4.c */, + B34DC55028671EFF00B60497 /* connect_nesusb.c */, + B34DC55128671EFF00B60497 /* connect_wiiugca.c */, + B34DC55228671EFF00B60497 /* joypad_connection.h */, + B34DC55328671EFF00B60497 /* connect_ps2adapter.c */, + B34DC55428671EFF00B60497 /* connect_snesusb.c */, + B34DC55528671EFF00B60497 /* connect_wii.c */, + ); + path = connect; + sourceTree = ""; + }; + B34DC55828671EFF00B60497 /* camera */ = { + isa = PBXGroup; + children = ( + B34DC55928671EFF00B60497 /* camera_driver.c */, + B34DC55A28671EFF00B60497 /* drivers */, + B34DC55F28671EFF00B60497 /* camera_driver.h */, + ); + path = camera; + sourceTree = ""; + }; + B34DC55A28671EFF00B60497 /* drivers */ = { + isa = PBXGroup; + children = ( + B34DC55B28671EFF00B60497 /* android.c */, + B34DC55C28671EFF00B60497 /* rwebcam.c */, + B34DC55D28671EFF00B60497 /* nullcamera.c */, + B34DC55E28671EFF00B60497 /* video4linux2.c */, + ); + path = drivers; + sourceTree = ""; + }; + B34DC56028671EFF00B60497 /* cores */ = { + isa = PBXGroup; + children = ( + B34DC56128671EFF00B60497 /* libretro-test */, + B34DC56828671EFF00B60497 /* libretro-ffmpeg */, + B34DC57928671EFF00B60497 /* libretro-test-gl */, + B34DC58028671EFF00B60497 /* libretro-imageviewer */, + B34DC58328671EFF00B60497 /* libretro-video-processor */, + B34DC58A28671EFF00B60497 /* libretro-test-vulkan-async-compute */, + B34DC59528671EFF00B60497 /* dynamic_dummy.c */, + B34DC59628671EFF00B60497 /* internal_cores.h */, + B34DC59728671EFF00B60497 /* libretro-test-vulkan */, + B34DC5A428671EFF00B60497 /* libretro-net-retropad */, + B34DC5AD28671EFF00B60497 /* libretro-test-gl-ff */, + ); + path = cores; + sourceTree = ""; + }; + B34DC56128671EFF00B60497 /* libretro-test */ = { + isa = PBXGroup; + children = ( + B34DC56228671EFF00B60497 /* Makefile */, + B34DC56328671EFF00B60497 /* link.T */, + B34DC56428671EFF00B60497 /* jni */, + B34DC56728671EFF00B60497 /* libretro-test.c */, + ); + path = "libretro-test"; + sourceTree = ""; + }; + B34DC56428671EFF00B60497 /* jni */ = { + isa = PBXGroup; + children = ( + B34DC56528671EFF00B60497 /* Android.mk */, + B34DC56628671EFF00B60497 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B34DC56828671EFF00B60497 /* libretro-ffmpeg */ = { + isa = PBXGroup; + children = ( + B34DC56928671EFF00B60497 /* Makefile */, + B34DC56A28671EFF00B60497 /* ffmpeg_core.c */, + B34DC56B28671EFF00B60497 /* internal_cores.h */, + B34DC56C28671EFF00B60497 /* fft */, + B34DC57828671EFF00B60497 /* link.T */, + ); + path = "libretro-ffmpeg"; + sourceTree = ""; + }; + B34DC56C28671EFF00B60497 /* fft */ = { + isa = PBXGroup; + children = ( + B34DC56D28671EFF00B60497 /* fft.h */, + B34DC56E28671EFF00B60497 /* fft.cpp */, + B34DC56F28671EFF00B60497 /* gl_shaders */, + ); + path = fft; + sourceTree = ""; + }; + B34DC56F28671EFF00B60497 /* gl_shaders */ = { + isa = PBXGroup; + children = ( + B34DC57028671EFF00B60497 /* shaders_common.h */, + B34DC57128671EFF00B60497 /* fft_heightmap.glsl.frag.h */, + B34DC57228671EFF00B60497 /* fft_vertex_program.glsl.vert.h */, + B34DC57328671EFF00B60497 /* fft_heightmap.glsl.vert.h */, + B34DC57428671EFF00B60497 /* fft_fragment_program_real.glsl.frag.h */, + B34DC57528671EFF00B60497 /* fft_fragment_program_blur.glsl.frag.h */, + B34DC57628671EFF00B60497 /* fft_fragment_program_resolve.glsl.frag.h */, + B34DC57728671EFF00B60497 /* fft_fragment_program_complex.glsl.frag.h */, + ); + path = gl_shaders; + sourceTree = ""; + }; + B34DC57928671EFF00B60497 /* libretro-test-gl */ = { + isa = PBXGroup; + children = ( + B34DC57A28671EFF00B60497 /* libretro_gl_test.c */, + B34DC57B28671EFF00B60497 /* Makefile */, + B34DC57C28671EFF00B60497 /* link.T */, + B34DC57D28671EFF00B60497 /* jni */, + ); + path = "libretro-test-gl"; + sourceTree = ""; + }; + B34DC57D28671EFF00B60497 /* jni */ = { + isa = PBXGroup; + children = ( + B34DC57E28671EFF00B60497 /* Android.mk */, + B34DC57F28671EFF00B60497 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B34DC58028671EFF00B60497 /* libretro-imageviewer */ = { + isa = PBXGroup; + children = ( + B34DC58128671EFF00B60497 /* internal_cores.h */, + B34DC58228671EFF00B60497 /* image_core.c */, + ); + path = "libretro-imageviewer"; + sourceTree = ""; + }; + B34DC58328671EFF00B60497 /* libretro-video-processor */ = { + isa = PBXGroup; + children = ( + B34DC58428671EFF00B60497 /* LICENSE */, + B34DC58528671EFF00B60497 /* Makefile */, + B34DC58628671EFF00B60497 /* README.md */, + B34DC58728671EFF00B60497 /* internal_cores.h */, + B34DC58828671EFF00B60497 /* link.T */, + B34DC58928671EFF00B60497 /* video_processor_v4l2.c */, + ); + path = "libretro-video-processor"; + sourceTree = ""; + }; + B34DC58A28671EFF00B60497 /* libretro-test-vulkan-async-compute */ = { + isa = PBXGroup; + children = ( + B34DC58B28671EFF00B60497 /* Makefile */, + B34DC58C28671EFF00B60497 /* shaders */, + B34DC59028671EFF00B60497 /* link.T */, + B34DC59128671EFF00B60497 /* jni */, + B34DC59428671EFF00B60497 /* libretro-test.c */, + ); + path = "libretro-test-vulkan-async-compute"; + sourceTree = ""; + }; + B34DC58C28671EFF00B60497 /* shaders */ = { + isa = PBXGroup; + children = ( + B34DC58D28671EFF00B60497 /* raymarch.comp */, + B34DC58E28671EFF00B60497 /* Makefile */, + B34DC58F28671EFF00B60497 /* raymarch.comp.inc */, + ); + path = shaders; + sourceTree = ""; + }; + B34DC59128671EFF00B60497 /* jni */ = { + isa = PBXGroup; + children = ( + B34DC59228671EFF00B60497 /* Android.mk */, + B34DC59328671EFF00B60497 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B34DC59728671EFF00B60497 /* libretro-test-vulkan */ = { + isa = PBXGroup; + children = ( + B34DC59828671EFF00B60497 /* Makefile */, + B34DC59928671EFF00B60497 /* shaders */, + B34DC59F28671EFF00B60497 /* link.T */, + B34DC5A028671EFF00B60497 /* jni */, + B34DC5A328671EFF00B60497 /* libretro-test.c */, + ); + path = "libretro-test-vulkan"; + sourceTree = ""; + }; + B34DC59928671EFF00B60497 /* shaders */ = { + isa = PBXGroup; + children = ( + B34DC59A28671EFF00B60497 /* triangle.frag.inc */, + B34DC59B28671EFF00B60497 /* triangle.vert */, + B34DC59C28671EFF00B60497 /* Makefile */, + B34DC59D28671EFF00B60497 /* triangle.frag */, + B34DC59E28671EFF00B60497 /* triangle.vert.inc */, + ); + path = shaders; + sourceTree = ""; + }; + B34DC5A028671EFF00B60497 /* jni */ = { + isa = PBXGroup; + children = ( + B34DC5A128671EFF00B60497 /* Android.mk */, + B34DC5A228671EFF00B60497 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B34DC5A428671EFF00B60497 /* libretro-net-retropad */ = { + isa = PBXGroup; + children = ( + B34DC5A528671EFF00B60497 /* remotepad.h */, + B34DC5A628671EFF00B60497 /* net_retropad_core.c */, + B34DC5A728671EFF00B60497 /* Makefile */, + B34DC5A828671EFF00B60497 /* internal_cores.h */, + B34DC5A928671EFF00B60497 /* link.T */, + B34DC5AA28671EFF00B60497 /* jni */, + ); + path = "libretro-net-retropad"; + sourceTree = ""; + }; + B34DC5AA28671EFF00B60497 /* jni */ = { + isa = PBXGroup; + children = ( + B34DC5AB28671EFF00B60497 /* Android.mk */, + B34DC5AC28671EFF00B60497 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B34DC5AD28671EFF00B60497 /* libretro-test-gl-ff */ = { + isa = PBXGroup; + children = ( + B34DC5AE28671EFF00B60497 /* libretro_gl_ff_test.c */, + B34DC5AF28671EFF00B60497 /* Makefile */, + B34DC5B028671EFF00B60497 /* link.T */, + B34DC5B128671EFF00B60497 /* jni */, + ); + path = "libretro-test-gl-ff"; + sourceTree = ""; + }; + B34DC5B128671EFF00B60497 /* jni */ = { + isa = PBXGroup; + children = ( + B34DC5B228671EFF00B60497 /* Android.mk */, + B34DC5B328671EFF00B60497 /* Application.mk */, + ); + path = jni; + sourceTree = ""; + }; + B34DC5B428671EFF00B60497 /* location */ = { + isa = PBXGroup; + children = ( + B34DC5B528671EFF00B60497 /* drivers */, + B34DC5B828671EFF00B60497 /* location_driver.c */, + B34DC5B928671EFF00B60497 /* location_driver.h */, + ); + path = location; + sourceTree = ""; + }; + B34DC5B528671EFF00B60497 /* drivers */ = { + isa = PBXGroup; + children = ( + B34DC5B628671EFF00B60497 /* nulllocation.c */, + B34DC5B728671EFF00B60497 /* android.c */, + ); + path = drivers; + sourceTree = ""; + }; + B34DC6392867202D00B60497 /* libretro-common */ = { + isa = PBXGroup; + children = ( + B34DC63A2867202D00B60497 /* encodings */, + B34DC63C2867202D00B60497 /* compat */, + B34DC6442867202D00B60497 /* dynamic */, + B34DC6462867202D00B60497 /* net */, + B34DC64F2867202D00B60497 /* formats */, + B34DC6672867202D00B60497 /* glsym */, + B34DC66F2867202D00B60497 /* lists */, + B34DC6732867202D00B60497 /* file */, + B34DC67F2867202D00B60497 /* hash */, + B34DC6812867202D00B60497 /* streams */, + B34DC6852867202D00B60497 /* include */, + B34DC6F62867202D00B60497 /* features */, + B34DC6F82867202D00B60497 /* algorithms */, + B34DC6FA2867202D00B60497 /* utils */, + B34DC7012867202D00B60497 /* memmap */, + B34DC7042867202D00B60497 /* glsm */, + B34DC7062867202D00B60497 /* rthreads */, + B34DC70C2867202D00B60497 /* vulkan */, + B34DC70E2867202D00B60497 /* conversion */, + B34DC7132867202D00B60497 /* queues */, + B34DC7172867202D00B60497 /* string */, + B34DC7192867202D00B60497 /* crt */, + B34DC71D2867202D00B60497 /* gfx */, + B34DC7282867202D00B60497 /* libco */, + ); + path = "libretro-common"; + sourceTree = ""; + }; + B34DC63A2867202D00B60497 /* encodings */ = { + isa = PBXGroup; + children = ( + B34DC63B2867202D00B60497 /* encoding_utf.c */, + ); + path = encodings; + sourceTree = ""; + }; + B34DC63C2867202D00B60497 /* compat */ = { + isa = PBXGroup; + children = ( + B34DC63D2867202D00B60497 /* compat_ifaddrs.c */, + B34DC63E2867202D00B60497 /* compat_strl.c */, + B34DC63F2867202D00B60497 /* compat_posix_string.c */, + B34DC6402867202D00B60497 /* compat_strcasestr.c */, + B34DC6412867202D00B60497 /* compat_snprintf.c */, + B34DC6422867202D00B60497 /* compat_getopt.c */, + B34DC6432867202D00B60497 /* compat_fnmatch.c */, + ); + path = compat; + sourceTree = ""; + }; + B34DC6442867202D00B60497 /* dynamic */ = { + isa = PBXGroup; + children = ( + B34DC6452867202D00B60497 /* dylib.c */, + ); + path = dynamic; + sourceTree = ""; + }; + B34DC6462867202D00B60497 /* net */ = { + isa = PBXGroup; + children = ( + B34DC6472867202D00B60497 /* test */, + B34DC64B2867202D00B60497 /* net_http.c */, + B34DC64C2867202D00B60497 /* net_ifinfo.c */, + B34DC64D2867202D00B60497 /* net_compat.c */, + B34DC64E2867202D00B60497 /* net_socket.c */, + ); + path = net; + sourceTree = ""; + }; + B34DC6472867202D00B60497 /* test */ = { + isa = PBXGroup; + children = ( + B34DC6482867202D00B60497 /* net_ifinfo_test.c */, + B34DC6492867202D00B60497 /* Makefile */, + B34DC64A2867202D00B60497 /* net_http_test.c */, + ); + path = test; + sourceTree = ""; + }; + B34DC64F2867202D00B60497 /* formats */ = { + isa = PBXGroup; + children = ( + B34DC6502867202D00B60497 /* image_texture.c */, + B34DC6512867202D00B60497 /* tga */, + B34DC6532867202D00B60497 /* png */, + B34DC65A2867202D00B60497 /* xml */, + B34DC65F2867202D00B60497 /* json */, + B34DC6612867202D00B60497 /* jpeg */, + B34DC6632867202D00B60497 /* bmp */, + B34DC6662867202D00B60497 /* image_transfer.c */, + ); + path = formats; + sourceTree = ""; + }; + B34DC6512867202D00B60497 /* tga */ = { + isa = PBXGroup; + children = ( + B34DC6522867202D00B60497 /* rtga.c */, + ); + path = tga; + sourceTree = ""; + }; + B34DC6532867202D00B60497 /* png */ = { + isa = PBXGroup; + children = ( + B34DC6542867202D00B60497 /* test */, + B34DC6572867202D00B60497 /* rpng.c */, + B34DC6582867202D00B60497 /* rpng_internal.h */, + B34DC6592867202D00B60497 /* rpng_encode.c */, + ); + path = png; + sourceTree = ""; + }; + B34DC6542867202D00B60497 /* test */ = { + isa = PBXGroup; + children = ( + B34DC6552867202D00B60497 /* Makefile */, + B34DC6562867202D00B60497 /* rpng_test.c */, + ); + path = test; + sourceTree = ""; + }; + B34DC65A2867202D00B60497 /* xml */ = { + isa = PBXGroup; + children = ( + B34DC65B2867202D00B60497 /* test */, + B34DC65E2867202D00B60497 /* rxml.c */, + ); + path = xml; + sourceTree = ""; + }; + B34DC65B2867202D00B60497 /* test */ = { + isa = PBXGroup; + children = ( + B34DC65C2867202D00B60497 /* Makefile */, + B34DC65D2867202D00B60497 /* rxml_test.c */, + ); + path = test; + sourceTree = ""; + }; + B34DC65F2867202D00B60497 /* json */ = { + isa = PBXGroup; + children = ( + B34DC6602867202D00B60497 /* jsonsax.c */, + ); + path = json; + sourceTree = ""; + }; + B34DC6612867202D00B60497 /* jpeg */ = { + isa = PBXGroup; + children = ( + B34DC6622867202D00B60497 /* rjpeg.c */, + ); + path = jpeg; + sourceTree = ""; + }; + B34DC6632867202D00B60497 /* bmp */ = { + isa = PBXGroup; + children = ( + B34DC6642867202D00B60497 /* rbmp_encode.c */, + B34DC6652867202D00B60497 /* rbmp.c */, + ); + path = bmp; + sourceTree = ""; + }; + B34DC6672867202D00B60497 /* glsym */ = { + isa = PBXGroup; + children = ( + B34DC6682867202D00B60497 /* glsym_es3.c */, + B34DC6692867202D00B60497 /* glsym_gl.c */, + B34DC66A2867202D00B60497 /* README.md */, + B34DC66B2867202D00B60497 /* glsym_es2.c */, + B34DC66C2867202D00B60497 /* rglgen.c */, + B34DC66D2867202D00B60497 /* glgen.py */, + B34DC66E2867202D00B60497 /* rglgen.py */, + ); + path = glsym; + sourceTree = ""; + }; + B34DC66F2867202D00B60497 /* lists */ = { + isa = PBXGroup; + children = ( + B34DC6702867202D00B60497 /* dir_list.c */, + B34DC6712867202D00B60497 /* string_list.c */, + B34DC6722867202D00B60497 /* file_list.c */, + ); + path = lists; + sourceTree = ""; + }; + B34DC6732867202D00B60497 /* file */ = { + isa = PBXGroup; + children = ( + B34DC6742867202D00B60497 /* retro_stat.c */, + B34DC6752867202D00B60497 /* file_path.c */, + B34DC6762867202D00B60497 /* nbio */, + B34DC67B2867202D00B60497 /* archive_file_zlib.c */, + B34DC67C2867202D00B60497 /* config_file.c */, + B34DC67D2867202D00B60497 /* retro_dirent.c */, + B34DC67E2867202D00B60497 /* archive_file.c */, + ); + path = file; + sourceTree = ""; + }; + B34DC6762867202D00B60497 /* nbio */ = { + isa = PBXGroup; + children = ( + B34DC6772867202D00B60497 /* test */, + B34DC67A2867202D00B60497 /* nbio_stdio.c */, + ); + path = nbio; + sourceTree = ""; + }; + B34DC6772867202D00B60497 /* test */ = { + isa = PBXGroup; + children = ( + B34DC6782867202D00B60497 /* Makefile */, + B34DC6792867202D00B60497 /* nbio_test.c */, + ); + path = test; + sourceTree = ""; + }; + B34DC67F2867202D00B60497 /* hash */ = { + isa = PBXGroup; + children = ( + B34DC6802867202D00B60497 /* rhash.c */, + ); + path = hash; + sourceTree = ""; + }; + B34DC6812867202D00B60497 /* streams */ = { + isa = PBXGroup; + children = ( + B34DC6822867202D00B60497 /* interface_stream.c */, + B34DC6832867202D00B60497 /* memory_stream.c */, + B34DC6842867202D00B60497 /* file_stream.c */, + ); + path = streams; + sourceTree = ""; + }; + B34DC6852867202D00B60497 /* include */ = { + isa = PBXGroup; + children = ( + B34DC6D02867202D00B60497 /* boolean.h */, + B34DC6CC2867202D00B60497 /* clamping.h */, + B34DC6F52867202D00B60497 /* filters.h */, + B34DC6892867202D00B60497 /* libco.h */, + B34DC6E82867202D00B60497 /* libretro_vulkan.h */, + B34DC6D92867202D00B60497 /* libretro.h */, + B34DC6882867202D00B60497 /* memalign.h */, + B34DC6D42867202D00B60497 /* memmap.h */, + B34DC6E52867202D00B60497 /* retro_assert.h */, + B34DC69B2867202D00B60497 /* retro_common_api.h */, + B34DC6E02867202D00B60497 /* retro_common.h */, + B34DC6BF2867202D00B60497 /* retro_dirent.h */, + B34DC6F42867202D00B60497 /* retro_endianness.h */, + B34DC6BE2867202D00B60497 /* retro_environment.h */, + B34DC6C02867202D00B60497 /* retro_inline.h */, + B34DC6CB2867202D00B60497 /* retro_miscellaneous.h */, + B34DC6DC2867202D00B60497 /* retro_stat.h */, + B34DC6A32867202D00B60497 /* retro_timers.h */, + B34DC6D52867202D00B60497 /* rhash.h */, + B34DC6C72867202D00B60497 /* algorithms */, + B34DC68A2867202D00B60497 /* compat */, + B34DC6DD2867202D00B60497 /* conversion */, + B34DC69C2867202D00B60497 /* dynamic */, + B34DC6862867202D00B60497 /* encodings */, + B34DC6C52867202D00B60497 /* features */, + B34DC6B72867202D00B60497 /* file */, + B34DC6A42867202D00B60497 /* formats */, + B34DC6E92867202D00B60497 /* gfx */, + B34DC6D12867202D00B60497 /* glsm */, + B34DC6AC2867202D00B60497 /* glsym */, + B34DC6BC2867202D00B60497 /* hash */, + B34DC6B32867202D00B60497 /* lists */, + B34DC6CD2867202D00B60497 /* math */, + B34DC69E2867202D00B60497 /* net */, + B34DC6E12867202D00B60497 /* queues */, + B34DC6D62867202D00B60497 /* rthreads */, + B34DC6C12867202D00B60497 /* streams */, + B34DC6E62867202D00B60497 /* string */, + B34DC6C92867202D00B60497 /* utils */, + B34DC6DA2867202D00B60497 /* vulkan */, + ); + path = include; + sourceTree = ""; + }; + B34DC6862867202D00B60497 /* encodings */ = { + isa = PBXGroup; + children = ( + B34DC6872867202D00B60497 /* utf.h */, + ); + path = encodings; + sourceTree = ""; + }; + B34DC68A2867202D00B60497 /* compat */ = { + isa = PBXGroup; + children = ( + B34DC68B2867202D00B60497 /* apple_compat.h */, + B34DC68C2867202D00B60497 /* zutil.h */, + B34DC68D2867202D00B60497 /* strl.h */, + B34DC68E2867202D00B60497 /* strcasestr.h */, + B34DC68F2867202D00B60497 /* msvc */, + B34DC6912867202D00B60497 /* fopen_utf8.h */, + B34DC6922867202D00B60497 /* zconf.h.in */, + B34DC6932867202D00B60497 /* intrinsics.h */, + B34DC6942867202D00B60497 /* posix_string.h */, + B34DC6952867202D00B60497 /* getopt.h */, + B34DC6962867202D00B60497 /* fnmatch.h */, + B34DC6972867202D00B60497 /* msvc.h */, + B34DC6982867202D00B60497 /* zlib.h */, + B34DC6992867202D00B60497 /* ifaddrs.h */, + B34DC69A2867202D00B60497 /* zconf.h */, + ); + path = compat; + sourceTree = ""; + }; + B34DC68F2867202D00B60497 /* msvc */ = { + isa = PBXGroup; + children = ( + B34DC6902867202D00B60497 /* stdint.h */, + ); + path = msvc; + sourceTree = ""; + }; + B34DC69C2867202D00B60497 /* dynamic */ = { + isa = PBXGroup; + children = ( + B34DC69D2867202D00B60497 /* dylib.h */, + ); + path = dynamic; + sourceTree = ""; + }; + B34DC69E2867202D00B60497 /* net */ = { + isa = PBXGroup; + children = ( + B34DC69F2867202D00B60497 /* net_ifinfo.h */, + B34DC6A02867202D00B60497 /* net_compat.h */, + B34DC6A12867202D00B60497 /* net_socket.h */, + B34DC6A22867202D00B60497 /* net_http.h */, + ); + path = net; + sourceTree = ""; + }; + B34DC6A42867202D00B60497 /* formats */ = { + isa = PBXGroup; + children = ( + B34DC6A52867202D00B60497 /* jsonsax.h */, + B34DC6A62867202D00B60497 /* rxml.h */, + B34DC6A72867202D00B60497 /* rpng.h */, + B34DC6A82867202D00B60497 /* rtga.h */, + B34DC6A92867202D00B60497 /* image.h */, + B34DC6AA2867202D00B60497 /* rbmp.h */, + B34DC6AB2867202D00B60497 /* rjpeg.h */, + ); + path = formats; + sourceTree = ""; + }; + B34DC6AC2867202D00B60497 /* glsym */ = { + isa = PBXGroup; + children = ( + B34DC6AD2867202D00B60497 /* rglgen.h */, + B34DC6AE2867202D00B60497 /* glsym_es2.h */, + B34DC6AF2867202D00B60497 /* glsym.h */, + B34DC6B02867202D00B60497 /* rglgen_headers.h */, + B34DC6B12867202D00B60497 /* glsym_es3.h */, + B34DC6B22867202D00B60497 /* glsym_gl.h */, + ); + path = glsym; + sourceTree = ""; + }; + B34DC6B32867202D00B60497 /* lists */ = { + isa = PBXGroup; + children = ( + B34DC6B42867202D00B60497 /* string_list.h */, + B34DC6B52867202D00B60497 /* file_list.h */, + B34DC6B62867202D00B60497 /* dir_list.h */, + ); + path = lists; + sourceTree = ""; + }; + B34DC6B72867202D00B60497 /* file */ = { + isa = PBXGroup; + children = ( + B34DC6B82867202D00B60497 /* nbio.h */, + B34DC6B92867202D00B60497 /* config_file.h */, + B34DC6BA2867202D00B60497 /* archive_file.h */, + B34DC6BB2867202D00B60497 /* file_path.h */, + ); + path = file; + sourceTree = ""; + }; + B34DC6BC2867202D00B60497 /* hash */ = { + isa = PBXGroup; + children = ( + B34DC6BD2867202D00B60497 /* rhash.c */, + ); + path = hash; + sourceTree = ""; + }; + B34DC6C12867202D00B60497 /* streams */ = { + isa = PBXGroup; + children = ( + B34DC6C22867202D00B60497 /* memory_stream.h */, + B34DC6C32867202D00B60497 /* file_stream.h */, + B34DC6C42867202D00B60497 /* interface_stream.h */, + ); + path = streams; + sourceTree = ""; + }; + B34DC6C52867202D00B60497 /* features */ = { + isa = PBXGroup; + children = ( + B34DC6C62867202D00B60497 /* features_cpu.h */, + ); + path = features; + sourceTree = ""; + }; + B34DC6C72867202D00B60497 /* algorithms */ = { + isa = PBXGroup; + children = ( + B34DC6C82867202D00B60497 /* mismatch.h */, + ); + path = algorithms; + sourceTree = ""; + }; + B34DC6C92867202D00B60497 /* utils */ = { + isa = PBXGroup; + children = ( + B34DC6CA2867202D00B60497 /* md5.h */, + ); + path = utils; + sourceTree = ""; + }; + B34DC6CD2867202D00B60497 /* math */ = { + isa = PBXGroup; + children = ( + B34DC6CE2867202D00B60497 /* fxp.h */, + B34DC6CF2867202D00B60497 /* complex.h */, + ); + path = math; + sourceTree = ""; + }; + B34DC6D12867202D00B60497 /* glsm */ = { + isa = PBXGroup; + children = ( + B34DC6D22867202D00B60497 /* glsm.h */, + B34DC6D32867202D00B60497 /* glsmsym.h */, + ); + path = glsm; + sourceTree = ""; + }; + B34DC6D62867202D00B60497 /* rthreads */ = { + isa = PBXGroup; + children = ( + B34DC6D72867202D00B60497 /* rsemaphore.h */, + B34DC6D82867202D00B60497 /* rthreads.h */, + ); + path = rthreads; + sourceTree = ""; + }; + B34DC6DA2867202D00B60497 /* vulkan */ = { + isa = PBXGroup; + children = ( + B34DC6DB2867202D00B60497 /* vulkan_symbol_wrapper.h */, + ); + path = vulkan; + sourceTree = ""; + }; + B34DC6DD2867202D00B60497 /* conversion */ = { + isa = PBXGroup; + children = ( + B34DC6DE2867202D00B60497 /* s16_to_float.h */, + B34DC6DF2867202D00B60497 /* float_to_s16.h */, + ); + path = conversion; + sourceTree = ""; + }; + B34DC6E12867202D00B60497 /* queues */ = { + isa = PBXGroup; + children = ( + B34DC6E22867202D00B60497 /* task_queue.h */, + B34DC6E32867202D00B60497 /* fifo_queue.h */, + B34DC6E42867202D00B60497 /* message_queue.h */, + ); + path = queues; + sourceTree = ""; + }; + B34DC6E62867202D00B60497 /* string */ = { + isa = PBXGroup; + children = ( + B34DC6E72867202D00B60497 /* stdstring.h */, + ); + path = string; + sourceTree = ""; + }; + B34DC6E92867202D00B60497 /* gfx */ = { + isa = PBXGroup; + children = ( + B34DC6EA2867202D00B60497 /* math */, + B34DC6EF2867202D00B60497 /* scaler */, + ); + path = gfx; + sourceTree = ""; + }; + B34DC6EA2867202D00B60497 /* math */ = { + isa = PBXGroup; + children = ( + B34DC6EB2867202D00B60497 /* vector_3.h */, + B34DC6EC2867202D00B60497 /* vector_2.h */, + B34DC6ED2867202D00B60497 /* matrix_3x3.h */, + B34DC6EE2867202D00B60497 /* matrix_4x4.h */, + ); + path = math; + sourceTree = ""; + }; + B34DC6EF2867202D00B60497 /* scaler */ = { + isa = PBXGroup; + children = ( + B34DC6F02867202D00B60497 /* scaler.h */, + B34DC6F12867202D00B60497 /* pixconv.h */, + B34DC6F22867202D00B60497 /* scaler_int.h */, + B34DC6F32867202D00B60497 /* filter.h */, + ); + path = scaler; + sourceTree = ""; + }; + B34DC6F62867202D00B60497 /* features */ = { + isa = PBXGroup; + children = ( + B34DC6F72867202D00B60497 /* features_cpu.c */, + ); + path = features; + sourceTree = ""; + }; + B34DC6F82867202D00B60497 /* algorithms */ = { + isa = PBXGroup; + children = ( + B34DC6F92867202D00B60497 /* mismatch.c */, + ); + path = algorithms; + sourceTree = ""; + }; + B34DC6FA2867202D00B60497 /* utils */ = { + isa = PBXGroup; + children = ( + B34DC6FB2867202D00B60497 /* djb2.c */, + B34DC6FC2867202D00B60497 /* udp-test.c */, + B34DC6FD2867202D00B60497 /* Makefile */, + B34DC6FE2867202D00B60497 /* sha1.c */, + B34DC6FF2867202D00B60497 /* crc32.c */, + B34DC7002867202D00B60497 /* md5.c */, + ); + path = utils; + sourceTree = ""; + }; + B34DC7012867202D00B60497 /* memmap */ = { isa = PBXGroup; children = ( - B3173802278419A2002D3ACD /* Build.xcconfig */, - B3A4FB58278FE2F200A65248 /* Sources */, - B3532B3321A7B736006CDA0F /* Tests */, - 1ACEA64A17F7467D0031B1C9 /* Supporting Files */, - 1ACEA64617F7467D0031B1C9 /* Frameworks */, - 1ACEA64517F7467D0031B1C9 /* Products */, + B34DC7022867202D00B60497 /* memmap.c */, + B34DC7032867202D00B60497 /* memalign.c */, ); + path = memmap; sourceTree = ""; }; - 1ACEA64517F7467D0031B1C9 /* Products */ = { + B34DC7042867202D00B60497 /* glsm */ = { isa = PBXGroup; children = ( - B3C96E9E1D62C3A3003F1E93 /* PVSupport.framework */, - B3C96ED81D62C5E7003F1E93 /* PVSupport.framework */, - B3532B3221A7B736006CDA0F /* PVSupportTests.xctest */, - B305EF91276B4E41003AE510 /* PVSupport.framework */, + B34DC7052867202D00B60497 /* glsm.c */, ); - name = Products; + path = glsm; sourceTree = ""; }; - 1ACEA64617F7467D0031B1C9 /* Frameworks */ = { + B34DC7062867202D00B60497 /* rthreads */ = { isa = PBXGroup; children = ( - B3D0EE27277FE8C9002DC0A5 /* CoreHaptics.framework */, - B3D0EE29277FE8E0002DC0A5 /* CoreHaptics.framework */, - B305EF9B276B4FDC003AE510 /* CoreGraphics.framework */, - B305EF99276B4F0A003AE510 /* GameKit.framework */, - B3FFF02C26E9E65800A33143 /* AVFoundation.framework */, - B3AF6FE0219161C4000FA7F9 /* tvOS */, - B3AF6FDB21916177000FA7F9 /* iOS */, + B34DC7072867202D00B60497 /* rthreads.c */, + B34DC7082867202D00B60497 /* gx_pthread.h */, + B34DC7092867202D00B60497 /* psp_pthread.h */, + B34DC70A2867202D00B60497 /* xenon_sdl_threads.c */, + B34DC70B2867202D00B60497 /* rsemaphore.c */, ); - name = Frameworks; + path = rthreads; sourceTree = ""; }; - 1ACEA64A17F7467D0031B1C9 /* Supporting Files */ = { + B34DC70C2867202D00B60497 /* vulkan */ = { isa = PBXGroup; children = ( - B3C96EBB1D62C54D003F1E93 /* PVSupport.h */, - B3C96EBA1D62C54D003F1E93 /* Info.plist */, - 1ACEA64B17F7467D0031B1C9 /* PVSupport-Prefix.pch */, + B34DC70D2867202D00B60497 /* vulkan_symbol_wrapper.c */, ); - path = "Supporting Files"; + path = vulkan; sourceTree = ""; }; - 1ACEA69017F748F80031B1C9 /* Audio */ = { + B34DC70E2867202D00B60497 /* conversion */ = { isa = PBXGroup; children = ( - 1ACEA69517F748F80031B1C9 /* TPCircularBuffer.c */, - 1ACEA69117F748F80031B1C9 /* OEGameAudio.h */, - B3FA5D591D6B908300060D71 /* OERingBuffer.h */, - 1ACEA69617F748F80031B1C9 /* TPCircularBuffer.h */, - 1ACEA69217F748F80031B1C9 /* OEGameAudio.m */, - B3FA5D5A1D6B908300060D71 /* OERingBuffer.m */, - B3447E7E218B7E2C00557ACE /* CARingBuffer */, + B34DC70F2867202D00B60497 /* s16_to_float.c */, + B34DC7102867202D00B60497 /* float_to_s16.c */, + B34DC7112867202D00B60497 /* float_to_s16_neon.S */, + B34DC7122867202D00B60497 /* s16_to_float_neon.S */, ); - path = Audio; + path = conversion; sourceTree = ""; }; - B302F89420B71C2300C5E502 /* Logging */ = { + B34DC7132867202D00B60497 /* queues */ = { isa = PBXGroup; children = ( - B3296E8D26C680EA0088AC32 /* Protocols */, - B3F0846B2188CA7A00FF39EE /* CocoaLumberExtensions.swift */, - B3296EA126C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift */, - B302F89C20B73D6300C5E502 /* PVProvenanceLogging.h */, - B302F89D20B73D6400C5E502 /* PVProvenanceLogging.m */, - B302F89B20B73D6300C5E502 /* PVLogEntry.h */, - B302F89920B73D5F00C5E502 /* PVLogEntry.m */, - B302F89A20B73D6200C5E502 /* PVLogging.h */, - B302F89E20B73D6400C5E502 /* PVLogging.m */, - B3296E8026C67EF90088AC32 /* CocoaLumberjack+NSLogger.swift */, - B3296E8326C67F420088AC32 /* CocoaLumberjack+swift-log.swift */, + B34DC7142867202D00B60497 /* fifo_queue.c */, + B34DC7152867202D00B60497 /* message_queue.c */, + B34DC7162867202D00B60497 /* task_queue.c */, ); - path = Logging; + path = queues; sourceTree = ""; }; - B30E94892793C77700871E57 /* PVSupport */ = { + B34DC7172867202D00B60497 /* string */ = { isa = PBXGroup; children = ( - B3C83E25279621080020824C /* Performance */, - 1ACEA69017F748F80031B1C9 /* Audio */, - B3AB36DC2187F4C4009D9244 /* Controller */, - B3AB37F721882119009D9244 /* CoreOptions */, - 1A4E718B1A6C693A005CA80F /* Utilities */, - B3CDEEB821D4C394000C55F7 /* EmulatorCore */, - B302F89420B71C2300C5E502 /* Logging */, - B3A4FB57278FE2B700A65248 /* NSExtensions */, - B3447F99218C1CBE00557ACE /* Settings */, - B3A4FB56278FE2A700A65248 /* Threads */, + B34DC7182867202D00B60497 /* stdstring.c */, ); - path = PVSupport; + path = string; sourceTree = ""; }; - B30E948B2793CBC800871E57 /* PVSupportTests */ = { + B34DC7192867202D00B60497 /* crt */ = { isa = PBXGroup; children = ( - B3532B3E21A7B753006CDA0F /* PVSettingsTests.swift */, + B34DC71A2867202D00B60497 /* include */, + B34DC71C2867202D00B60497 /* string.c */, ); - path = PVSupportTests; + path = crt; sourceTree = ""; }; - B3296E8D26C680EA0088AC32 /* Protocols */ = { + B34DC71A2867202D00B60497 /* include */ = { isa = PBXGroup; children = ( - B3296E9E26C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift */, + B34DC71B2867202D00B60497 /* string.h */, ); - path = Protocols; + path = include; sourceTree = ""; }; - B33FB2F6279BE1640013AAD8 /* Types */ = { + B34DC71D2867202D00B60497 /* gfx */ = { isa = PBXGroup; children = ( - B33FB2F7279BE1730013AAD8 /* CoreOptionMultiValue.swift */, - B33FB2FF279BE1E40013AAD8 /* OptionDependency.swift */, - B33FB2FB279BE18F0013AAD8 /* CoreOptionEnumValue.swift */, - B33FB303279BE21C0013AAD8 /* CoreOptionRange.swift */, - B33FB307279BE2460013AAD8 /* CoreOptionValue.swift */, + B34DC71E2867202D00B60497 /* math */, + B34DC7232867202D00B60497 /* scaler */, ); - path = Types; + path = gfx; sourceTree = ""; }; - B33FB30B279BE2650013AAD8 /* Protocols */ = { + B34DC71E2867202D00B60497 /* math */ = { isa = PBXGroup; children = ( - B33FB30C279BE2710013AAD8 /* CoreOptional.swift */, + B34DC71F2867202D00B60497 /* matrix_3x3.c */, + B34DC7202867202D00B60497 /* vector_2.c */, + B34DC7212867202D00B60497 /* matrix_4x4.c */, + B34DC7222867202D00B60497 /* vector_3.c */, ); - path = Protocols; + path = math; sourceTree = ""; }; - B3447E7E218B7E2C00557ACE /* CARingBuffer */ = { + B34DC7232867202D00B60497 /* scaler */ = { isa = PBXGroup; children = ( - B3447E84218B7E4B00557ACE /* CAAudioTimeStamp.cpp */, - B3447E81218B7E4B00557ACE /* CARingBuffer.cpp */, - B3447E83218B7E4B00557ACE /* CAAtomic.h */, - B3447E80218B7E4B00557ACE /* CAAudioTimeStamp.h */, - B3447E82218B7E4B00557ACE /* CAAutoDisposer.h */, - B3447E7F218B7E4B00557ACE /* CABitOperations.h */, - B3447E85218B7E4B00557ACE /* CARingBuffer.h */, + B34DC7242867202D00B60497 /* scaler_int.c */, + B34DC7252867202D00B60497 /* pixconv.c */, + B34DC7262867202D00B60497 /* scaler_filter.c */, + B34DC7272867202D00B60497 /* scaler.c */, ); - path = CARingBuffer; + path = scaler; sourceTree = ""; }; - B3447F99218C1CBE00557ACE /* Settings */ = { + B34DC7282867202D00B60497 /* libco */ = { isa = PBXGroup; children = ( - B3447F9A218C1CD200557ACE /* PVSettingsModel.swift */, - B3532C3521A925C1006CDA0F /* SortOption.swift */, + B34DC7292867202D00B60497 /* sjlj.c */, + B34DC72A2867202D00B60497 /* ppc.c */, + B34DC72B2867202D00B60497 /* ucontext.c */, + B34DC72C2867202D00B60497 /* fiber.c */, + B34DC72D2867202D00B60497 /* libco.c */, + B34DC72E2867202D00B60497 /* armeabi.c */, + B34DC72F2867202D00B60497 /* amd64.c */, + B34DC7302867202D00B60497 /* psp2.c */, + B34DC7312867202D00B60497 /* x86.c */, ); - path = Settings; + path = libco; sourceTree = ""; }; B3532B3321A7B736006CDA0F /* Tests */ = { @@ -578,6 +3122,41 @@ path = Tests; sourceTree = ""; }; + B36C41022898776C00EAEF59 /* retro-netplay */ = { + isa = PBXGroup; + children = ( + B36C41032898776C00EAEF59 /* retro_netplay.h */, + B36C41042898776C00EAEF59 /* retro_netplay.m */, + ); + path = "retro-netplay"; + sourceTree = ""; + }; + B392848F28670348003BAC21 /* PVLibRetro */ = { + isa = PBXGroup; + children = ( + B32299412878C5A000585AD8 /* PVLibRetro-Build.xcconfig */, + B392849028670348003BAC21 /* PVLibRetro.h */, + ); + path = PVLibRetro; + sourceTree = ""; + }; + B39284962867037B003BAC21 /* PVLibRetro */ = { + isa = PBXGroup; + children = ( + B3928497286703CD003BAC21 /* PVLibRetroCore.h */, + B3928498286703CD003BAC21 /* PVLibRetroCore.m */, + B306814E2895D406003E465F /* PVLibRetroCore+Audio.m */, + B306814C2895D405003E465F /* PVLibRetroCore+Cheats.m */, + B3D180A128964C3B001207AF /* PVLibRetroCore+Controls.m */, + B306814F2895D407003E465F /* PVLibRetroCore+Options.m */, + B3D180A228964C40001207AF /* PVLibRetroCore+Saves.m */, + B306814D2895D406003E465F /* PVLibRetroCore+Video.m */, + B3DF963D288D6B5800300A38 /* PVLibRetroGLESCore.h */, + B3DF963E288D6B5800300A38 /* PVLibRetroGLESCore.m */, + ); + path = PVLibRetro; + sourceTree = ""; + }; B3A4FB56278FE2A700A65248 /* Threads */ = { isa = PBXGroup; children = ( @@ -602,6 +3181,8 @@ B3A4FB58278FE2F200A65248 /* Sources */ = { isa = PBXGroup; children = ( + B322512E286C4728001FDF42 /* retro */, + B39284962867037B003BAC21 /* PVLibRetro */, B30E94892793C77700871E57 /* PVSupport */, ); path = Sources; @@ -713,51 +3294,16 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B305EF48276B4E41003AE510 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B305EF49276B4E41003AE510 /* PVSupport.h in Headers */, - B305EF4A276B4E41003AE510 /* OEGameAudio.h in Headers */, - B305EF4B276B4E41003AE510 /* CABitOperations.h in Headers */, - B3A4FB5C278FE45D00A65248 /* OEGeometry.h in Headers */, - B305EF4C276B4E41003AE510 /* DebugUtils.h in Headers */, - B305EF4D276B4E41003AE510 /* PVProvenanceLogging.h in Headers */, - B305EF4E276B4E41003AE510 /* OERingBuffer.h in Headers */, - B305EF50276B4E41003AE510 /* NSObject+PVAbstractAdditions.h in Headers */, - B305EF51276B4E41003AE510 /* CARingBuffer.h in Headers */, - B305EF52276B4E41003AE510 /* CAAtomic.h in Headers */, - B305EF53276B4E41003AE510 /* CAAudioTimeStamp.h in Headers */, - B305EF54276B4E41003AE510 /* NSFileManager+OEHashingAdditions.h in Headers */, - B305EF55276B4E41003AE510 /* PVLogEntry.h in Headers */, - B305EF56276B4E41003AE510 /* PVEmulatorCore.h in Headers */, - B305EF57276B4E41003AE510 /* CAAutoDisposer.h in Headers */, - B305EF58276B4E41003AE510 /* TPCircularBuffer.h in Headers */, - B305EF59276B4E41003AE510 /* PVLogging.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B3C96E9B1D62C3A3003F1E93 /* Headers */ = { + B392848928670348003BAC21 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B34AB8652106F2F200C45F09 /* PVSupport.h in Headers */, - B3C96EA81D62C3C3003F1E93 /* OEGameAudio.h in Headers */, - B3447E89218B7E4B00557ACE /* CAAudioTimeStamp.h in Headers */, - B3C96EA71D62C3BE003F1E93 /* DebugUtils.h in Headers */, - B3447E93218B7E4B00557ACE /* CARingBuffer.h in Headers */, - B3FA5D5C1D6B908300060D71 /* OERingBuffer.h in Headers */, - B302F8A920B73D6500C5E502 /* PVProvenanceLogging.h in Headers */, - B3447E8D218B7E4B00557ACE /* CAAutoDisposer.h in Headers */, - B3C96EAE1D62C3C7003F1E93 /* NSObject+PVAbstractAdditions.h in Headers */, - B3447E8F218B7E4B00557ACE /* CAAtomic.h in Headers */, - B3A4FB5B278FE45D00A65248 /* OEGeometry.h in Headers */, - B3D73D3E1EA15BB20023925B /* NSFileManager+OEHashingAdditions.h in Headers */, - B302F8A720B73D6500C5E502 /* PVLogEntry.h in Headers */, - B3FA5D641D6B90BD00060D71 /* PVEmulatorCore.h in Headers */, - B3C96EAD1D62C3C3003F1E93 /* TPCircularBuffer.h in Headers */, - B302F8A520B73D6500C5E502 /* PVLogging.h in Headers */, - B3447E87218B7E4B00557ACE /* CABitOperations.h in Headers */, + B392849128670348003BAC21 /* PVLibRetro.h in Headers */, + B3928499286703CD003BAC21 /* PVLibRetroCore.h in Headers */, + B3702311287256DA00B3F6DA /* retro_inline.h in Headers */, + B3DF963F288D6B5800300A38 /* PVLibRetroGLESCore.h in Headers */, + B32299672878DBE000585AD8 /* dynamic.h in Headers */, + B364D4B42870E5F600B93A4B /* libretro.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -788,31 +3334,22 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B305EF3D276B4E41003AE510 /* PVSupport-watchOS */ = { + B322512C286C4728001FDF42 /* retro */ = { isa = PBXNativeTarget; - buildConfigurationList = B305EF8D276B4E41003AE510 /* Build configuration list for PBXNativeTarget "PVSupport-watchOS" */; + buildConfigurationList = B3225136286C4729001FDF42 /* Build configuration list for PBXNativeTarget "retro" */; buildPhases = ( - B305EF48276B4E41003AE510 /* Headers */, - B305EF5A276B4E41003AE510 /* Sources */, - B305EF84276B4E41003AE510 /* Frameworks */, - B305EF8C276B4E41003AE510 /* Resources */, + B3225129286C4728001FDF42 /* Sources */, + B322512A286C4728001FDF42 /* Frameworks */, + B322512B286C4728001FDF42 /* CopyFiles */, ); buildRules = ( ); dependencies = ( - B305EF3F276B4E41003AE510 /* PBXTargetDependency */, - B305EF40276B4E41003AE510 /* PBXTargetDependency */, - B305EF41276B4E41003AE510 /* PBXTargetDependency */, - ); - name = "PVSupport-watchOS"; - packageProductDependencies = ( - B305EF42276B4E41003AE510 /* CocoaLumberjackSwift */, - B305EF46276B4E41003AE510 /* CocoaLumberjackSwiftLogBackend */, - B305EF47276B4E41003AE510 /* CocoaLumberjack */, ); - productName = "PVSupportTV Framework"; - productReference = B305EF91276B4E41003AE510 /* PVSupport.framework */; - productType = "com.apple.product-type.framework"; + name = retro; + productName = retro; + productReference = B322512D286C4728001FDF42 /* libretro.a */; + productType = "com.apple.product-type.library.static"; }; B3532B3121A7B736006CDA0F /* PVSupportTests */ = { isa = PBXNativeTarget; @@ -832,38 +3369,46 @@ productReference = B3532B3221A7B736006CDA0F /* PVSupportTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - B3C96E9D1D62C3A3003F1E93 /* PVSupport-tvOS */ = { + B36C41002898776C00EAEF59 /* retro-netplay */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C96EA61D62C3A3003F1E93 /* Build configuration list for PBXNativeTarget "PVSupport-tvOS" */; + buildConfigurationList = B36C410A2898776C00EAEF59 /* Build configuration list for PBXNativeTarget "retro-netplay" */; buildPhases = ( - B3C96E9B1D62C3A3003F1E93 /* Headers */, - B3C96E991D62C3A3003F1E93 /* Sources */, - B3C96E9A1D62C3A3003F1E93 /* Frameworks */, - B3C96E9C1D62C3A3003F1E93 /* Resources */, + B36C40FD2898776C00EAEF59 /* Sources */, + B36C40FE2898776C00EAEF59 /* Frameworks */, + B36C40FF2898776C00EAEF59 /* CopyFiles */, ); buildRules = ( ); dependencies = ( - B372637526EA013100E95488 /* PBXTargetDependency */, - B372637726EA013100E95488 /* PBXTargetDependency */, - B372637926EA013100E95488 /* PBXTargetDependency */, - B372637B26EA013100E95488 /* PBXTargetDependency */, ); - name = "PVSupport-tvOS"; - packageProductDependencies = ( - B336B8F726B3991500960A81 /* CocoaLumberjackSwift */, - B3B492CA26B3A96B000B426B /* Reachability */, - B3296E8826C67F6B0088AC32 /* CocoaLumberjackSwiftLogBackend */, - B3CA5B5026E9E4D500687B27 /* CocoaLumberjack */, - B3CEC5C2279521EC004A7CC1 /* NSLogger */, + name = "retro-netplay"; + productName = "retro-netplay"; + productReference = B36C41012898776C00EAEF59 /* libretro-netplay.a */; + productType = "com.apple.product-type.library.static"; + }; + B392848D28670348003BAC21 /* PVLibRetro */ = { + isa = PBXNativeTarget; + buildConfigurationList = B392849528670348003BAC21 /* Build configuration list for PBXNativeTarget "PVLibRetro" */; + buildPhases = ( + B392848928670348003BAC21 /* Headers */, + B392848A28670348003BAC21 /* Sources */, + B392848B28670348003BAC21 /* Frameworks */, + B392848C28670348003BAC21 /* Resources */, ); - productName = "PVSupportTV Framework"; - productReference = B3C96E9E1D62C3A3003F1E93 /* PVSupport.framework */; + buildRules = ( + ); + dependencies = ( + B392849E286703F2003BAC21 /* PBXTargetDependency */, + B3EA6C93292617F300010224 /* PBXTargetDependency */, + ); + name = PVLibRetro; + productName = PVLibRetro; + productReference = B392848E28670348003BAC21 /* PVLibRetro.framework */; productType = "com.apple.product-type.framework"; }; - B3C96EBE1D62C5E7003F1E93 /* PVSupport-iOS */ = { + B3C96EBE1D62C5E7003F1E93 /* PVSupport */ = { isa = PBXNativeTarget; - buildConfigurationList = B3C96ED41D62C5E7003F1E93 /* Build configuration list for PBXNativeTarget "PVSupport-iOS" */; + buildConfigurationList = B3C96ED41D62C5E7003F1E93 /* Build configuration list for PBXNativeTarget "PVSupport" */; buildPhases = ( B3C96EC81D62C5E7003F1E93 /* Headers */, B3C96EBF1D62C5E7003F1E93 /* Sources */, @@ -878,7 +3423,7 @@ B372638126EA013A00E95488 /* PBXTargetDependency */, B372638326EA013A00E95488 /* PBXTargetDependency */, ); - name = "PVSupport-iOS"; + name = PVSupport; packageProductDependencies = ( B336B8F026B3985B00960A81 /* CocoaLumberjackSwift */, B336B8F326B398A900960A81 /* Reachability */, @@ -896,20 +3441,25 @@ 1ACEA63C17F7467D0031B1C9 /* Project object */ = { isa = PBXProject; attributes = { - BuildIndependentTargetsInParallel = YES; + BuildIndependentTargetsInParallel = NO; CLASSPREFIX = PV; DefaultBuildSystemTypeForWorkspace = Latest; LastSwiftUpdateCheck = 1010; LastUpgradeCheck = 1300; ORGANIZATIONNAME = "Provenance Emu"; TargetAttributes = { + B322512C286C4728001FDF42 = { + CreatedOnToolsVersion = 13.4.1; + }; B3532B3121A7B736006CDA0F = { CreatedOnToolsVersion = 10.1; LastSwiftMigration = 1020; }; - B3C96E9D1D62C3A3003F1E93 = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0920; + B36C41002898776C00EAEF59 = { + CreatedOnToolsVersion = 14.0; + }; + B392848D28670348003BAC21 = { + CreatedOnToolsVersion = 13.4.1; }; B3C96EBE1D62C5E7003F1E93 = { LastSwiftMigration = 1020; @@ -934,23 +3484,16 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B3C96EBE1D62C5E7003F1E93 /* PVSupport-iOS */, - B3C96E9D1D62C3A3003F1E93 /* PVSupport-tvOS */, - B305EF3D276B4E41003AE510 /* PVSupport-watchOS */, + B3C96EBE1D62C5E7003F1E93 /* PVSupport */, B3532B3121A7B736006CDA0F /* PVSupportTests */, + B392848D28670348003BAC21 /* PVLibRetro */, + B322512C286C4728001FDF42 /* retro */, + B36C41002898776C00EAEF59 /* retro-netplay */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B305EF8C276B4E41003AE510 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3B1A742279021C4004D1EF2 /* AHAP in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B3532B3021A7B736006CDA0F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -958,11 +3501,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C96E9C1D62C3A3003F1E93 /* Resources */ = { + B392848C28670348003BAC21 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3B1A741279021C4004D1EF2 /* AHAP in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -977,61 +3519,20 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B305EF5A276B4E41003AE510 /* Sources */ = { + B3225129286C4728001FDF42 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B305EF5B276B4E41003AE510 /* PVEmulatorCore.swift in Sources */, - B305EF5C276B4E41003AE510 /* PViCadeSteelSeriesController.swift in Sources */, - B305EF5D276B4E41003AE510 /* ArchiveSupport.swift in Sources */, - B39C29CF27A10EE50078D028 /* OEGameAudio.m in Sources */, - B33FB30F279BE2710013AAD8 /* CoreOptional.swift in Sources */, - B305EF60276B4E41003AE510 /* PViCade8BitdoController.swift in Sources */, - B305EF61276B4E41003AE510 /* PViCadeInputAxis.swift in Sources */, - B305EF62276B4E41003AE510 /* DDLogLevel+CustomStringConvertable.swift in Sources */, - B33FB306279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */, - B305EF63276B4E41003AE510 /* iCadeState.swift in Sources */, - B305EF64276B4E41003AE510 /* CoreOptions.swift in Sources */, - B33FB2F5279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */, - B305EF65276B4E41003AE510 /* UIDeviceExtension.swift in Sources */, - B305EF66276B4E41003AE510 /* SaveStateSupport.swift in Sources */, - B305EF67276B4E41003AE510 /* iCadeControllerSetting.swift in Sources */, - B305EF68276B4E41003AE510 /* PViCadeController.swift in Sources */, - B305EF69276B4E41003AE510 /* CocoaLumberjack+swift-log.swift in Sources */, - B305EF6A276B4E41003AE510 /* CARingBuffer.cpp in Sources */, - B305EF6B276B4E41003AE510 /* CocoaLumberjack+NSLogger.swift in Sources */, - B305EF6C276B4E41003AE510 /* Controls.swift in Sources */, - B305EF6D276B4E41003AE510 /* PViCadeGamepadDirectionPad.swift in Sources */, - B33FB30A279BE2460013AAD8 /* CoreOptionValue.swift in Sources */, - B33FB2F1279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */, - B33FB2FA279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */, - B305EF6E276B4E41003AE510 /* NSFileManager+OEHashingAdditions.m in Sources */, - B305EF6F276B4E41003AE510 /* PViCadeGamepadButtonInput.swift in Sources */, - B305EF70276B4E41003AE510 /* SortOption.swift in Sources */, - B305EF71276B4E41003AE510 /* GameWithCheat.swift in Sources */, - B305EF72276B4E41003AE510 /* CoreActions.swift in Sources */, - B3CEC5BE2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */, - B33FB2ED279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */, - B305EF73276B4E41003AE510 /* CAAudioTimeStamp.cpp in Sources */, - B305EF74276B4E41003AE510 /* PVProvenanceLogging.m in Sources */, - B305EF75276B4E41003AE510 /* PViCadeReader.swift in Sources */, - B305EF76276B4E41003AE510 /* RealTimeThread.m in Sources */, - B305EF77276B4E41003AE510 /* DiscSwappable.swift in Sources */, - B305EF78276B4E41003AE510 /* NSObject+PVAbstractAdditions.m in Sources */, - B3D0EE26277FE880002DC0A5 /* HapticsManager.swift in Sources */, - B305EF79276B4E41003AE510 /* PVEmulatorCore.m in Sources */, - B305EF7A276B4E41003AE510 /* PVLogEntry.m in Sources */, - B305EF7B276B4E41003AE510 /* TPCircularBuffer.c in Sources */, - B305EF7D276B4E41003AE510 /* PVLogging.m in Sources */, - B33FB2FE279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */, - B39C29C927A0FAE00078D028 /* OERingBuffer.m in Sources */, - B33FB302279BE1E40013AAD8 /* OptionDependency.swift in Sources */, - B305EF7E276B4E41003AE510 /* PViCadeMocuteController.swift in Sources */, - B305EF7F276B4E41003AE510 /* CocoaLumberExtensions.swift in Sources */, - B305EF80276B4E41003AE510 /* iCadeReaderView.swift in Sources */, - B305EF81276B4E41003AE510 /* PViCadeGamepad.swift in Sources */, - B305EF82276B4E41003AE510 /* PVCocoaLumberJackLogging.swift in Sources */, - B305EF83276B4E41003AE510 /* PVSettingsModel.swift in Sources */, + B32299462878CF2C00585AD8 /* rthreads.c in Sources */, + B342325B286EB4060033EFA5 /* dylib.c in Sources */, + B3B3D17428712EE1008A0E2F /* msg_hash.c in Sources */, + B322996C28792B4000585AD8 /* movie.c in Sources */, + B3A41BCF286E5E660054E9A5 /* retro.m in Sources */, + B32299422878CB3C00585AD8 /* input_driver.c in Sources */, + B3423260286EB5CA0033EFA5 /* dynamic_dummy.c in Sources */, + B322994A2878CF6200585AD8 /* input_keyboard.c in Sources */, + B322996E28792BA000585AD8 /* nullinput.c in Sources */, + B32299512878D46F00585AD8 /* performance_counters.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1043,61 +3544,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3C96E991D62C3A3003F1E93 /* Sources */ = { + B36C40FD2898776C00EAEF59 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B36C41052898776C00EAEF59 /* retro_netplay.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B392848A28670348003BAC21 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B3AB37EE21881B7B009D9244 /* PViCadeSteelSeriesController.swift in Sources */, - B3CDEEBD21D4C3E6000C55F7 /* ArchiveSupport.swift in Sources */, - B33FB30E279BE2710013AAD8 /* CoreOptional.swift in Sources */, - B39C29CD27A10EE40078D028 /* OEGameAudio.m in Sources */, - B3AB37E421881A83009D9244 /* PViCadeGamepad.swift in Sources */, - B35E6C38207EE15D0040709A /* CoreOptions.swift in Sources */, - B3AB37EC21881B7B009D9244 /* PViCade8BitdoController.swift in Sources */, - B3AB37DD21881869009D9244 /* PViCadeInputAxis.swift in Sources */, - B3296EA026C685450088AC32 /* DDLogLevel+CustomStringConvertable.swift in Sources */, - B33FB305279BE21C0013AAD8 /* CoreOptionRange.swift in Sources */, - B3AB37B421880FA6009D9244 /* iCadeState.swift in Sources */, - B3A74C8B20522B04001D3D2E /* PVEmulatorCore.swift in Sources */, - B33FB2F4279BE1330013AAD8 /* CoreOptions+Protocols.swift in Sources */, - B3CDEEC921D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */, - B3AB37E821881B6E009D9244 /* iCadeControllerSetting.swift in Sources */, - B3AB37E121881956009D9244 /* PViCadeController.swift in Sources */, - B372638426EA015700E95488 /* CocoaLumberjack+swift-log.swift in Sources */, - B3AB37DF21881874009D9244 /* PViCadeGamepadDirectionPad.swift in Sources */, - B3296E8226C67EFA0088AC32 /* CocoaLumberjack+NSLogger.swift in Sources */, - B3CDEEC321D4C454000C55F7 /* Controls.swift in Sources */, - B3C96EAC1D62C3C3003F1E93 /* TPCircularBuffer.c in Sources */, - B3AB37DB21881671009D9244 /* PViCadeGamepadButtonInput.swift in Sources */, - B33FB309279BE2460013AAD8 /* CoreOptionValue.swift in Sources */, - B33FB2F0279BE0F50013AAD8 /* CoreOptionValueDisplay.swift in Sources */, - B33FB2F9279BE1730013AAD8 /* CoreOptionMultiValue.swift in Sources */, - B3C96EAF1D62C3C7003F1E93 /* NSObject+PVAbstractAdditions.m in Sources */, - B3532C3721A925C2006CDA0F /* SortOption.swift in Sources */, - CF87D334258AB6B300838AF8 /* GameWithCheat.swift in Sources */, - B3CDEEC621D4C490000C55F7 /* CoreActions.swift in Sources */, - B3AB37C0218814A8009D9244 /* PViCadeReader.swift in Sources */, - B3CEC5BD2794E9FD004A7CC1 /* PVGameControllerUtilities.swift in Sources */, - B33FB2EC279BE0CC0013AAD8 /* CoreOptions+Serialization.swift in Sources */, - B3FA5D661D6B90BD00060D71 /* PVEmulatorCore.m in Sources */, - B3447E8B218B7E4B00557ACE /* CARingBuffer.cpp in Sources */, - B3D73D401EA15BB20023925B /* NSFileManager+OEHashingAdditions.m in Sources */, - B3CDEEC021D4C41D000C55F7 /* DiscSwappable.swift in Sources */, - B3F0846D2188CA7A00FF39EE /* CocoaLumberExtensions.swift in Sources */, - B3D0EE21277FE85F002DC0A5 /* HapticsManager.swift in Sources */, - B302F8AD20B73D6500C5E502 /* PVLogging.m in Sources */, - B3447E91218B7E4B00557ACE /* CAAudioTimeStamp.cpp in Sources */, - B3447F9C218C1CD200557ACE /* PVSettingsModel.swift in Sources */, - 0592894F1DC194FD0012644D /* RealTimeThread.m in Sources */, - B33FB2FD279BE18F0013AAD8 /* CoreOptionEnumValue.swift in Sources */, - B39C29C827A0FADF0078D028 /* OERingBuffer.m in Sources */, - B33FB301279BE1E40013AAD8 /* OptionDependency.swift in Sources */, - B302F8A320B73D6500C5E502 /* PVLogEntry.m in Sources */, - B3AB37ED21881B7B009D9244 /* PViCadeMocuteController.swift in Sources */, - B3AB37BE218812BC009D9244 /* iCadeReaderView.swift in Sources */, - B3E6DADF20B7BF8600454DD4 /* UIDeviceExtension.swift in Sources */, - B302F8AB20B73D6500C5E502 /* PVProvenanceLogging.m in Sources */, - B3296EA326C68CCE0088AC32 /* PVCocoaLumberJackLogging.swift in Sources */, + B3D180A528964C40001207AF /* PVLibRetroCore+Saves.m in Sources */, + B3D180A328964C40001207AF /* PVLibRetroCore+Controls.m in Sources */, + B30681562895D407003E465F /* PVLibRetroCore+Options.m in Sources */, + B30681502895D407003E465F /* PVLibRetroCore+Cheats.m in Sources */, + B30681542895D407003E465F /* PVLibRetroCore+Audio.m in Sources */, + B30681522895D407003E465F /* PVLibRetroCore+Video.m in Sources */, + B3DF9641288D6B5800300A38 /* PVLibRetroGLESCore.m in Sources */, + B392849A286703CD003BAC21 /* PVLibRetroCore.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1118,6 +3584,8 @@ B34AB57A2106DC6100C45F09 /* CoreOptions.swift in Sources */, B33FB2F3279BE1320013AAD8 /* CoreOptions+Protocols.swift in Sources */, B34AB5762106DC4C00C45F09 /* UIDeviceExtension.swift in Sources */, + B30F8013290516B900F21217 /* ScreenType.swift in Sources */, + 557DCAB1292A91E100045B02 /* ThemeOption.swift in Sources */, B3CDEEC821D4C4E5000C55F7 /* SaveStateSupport.swift in Sources */, B3AB37E721881B6D009D9244 /* iCadeControllerSetting.swift in Sources */, B3AB37E021881955009D9244 /* PViCadeController.swift in Sources */, @@ -1162,40 +3630,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - B305EF3F276B4E41003AE510 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - productRef = B372637E26EA013A00E95488 /* CocoaLumberjackSwift */; - }; - B305EF40276B4E41003AE510 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - productRef = B372638026EA013A00E95488 /* CocoaLumberjackSwiftLogBackend */; - }; - B305EF41276B4E41003AE510 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - platformFilter = ios; - productRef = B372638226EA013A00E95488 /* Reachability */; - }; B3532B3921A7B736006CDA0F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B3C96EBE1D62C5E7003F1E93 /* PVSupport-iOS */; + target = B3C96EBE1D62C5E7003F1E93 /* PVSupport */; targetProxy = B3532B3821A7B736006CDA0F /* PBXContainerItemProxy */; }; - B372637526EA013100E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - productRef = B372637426EA013100E95488 /* CocoaLumberjack */; - }; - B372637726EA013100E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - productRef = B372637626EA013100E95488 /* CocoaLumberjackSwift */; - }; - B372637926EA013100E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - productRef = B372637826EA013100E95488 /* CocoaLumberjackSwiftLogBackend */; - }; - B372637B26EA013100E95488 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - productRef = B372637A26EA013100E95488 /* Reachability */; - }; B372637D26EA013A00E95488 /* PBXTargetDependency */ = { isa = PBXTargetDependency; productRef = B372637C26EA013A00E95488 /* CocoaLumberjack */; @@ -1210,9 +3649,23 @@ }; B372638326EA013A00E95488 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - platformFilter = ios; + platformFilters = ( + ios, + maccatalyst, + tvos, + ); productRef = B372638226EA013A00E95488 /* Reachability */; }; + B392849E286703F2003BAC21 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B3C96EBE1D62C5E7003F1E93 /* PVSupport */; + targetProxy = B392849D286703F2003BAC21 /* PBXContainerItemProxy */; + }; + B3EA6C93292617F300010224 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B322512C286C4728001FDF42 /* retro */; + targetProxy = B3EA6C92292617F300010224 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -1222,7 +3675,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1251,7 +3704,7 @@ ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -1264,12 +3717,13 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_FUNCTION = NO; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_WORKSPACE = YES; }; name = Debug; @@ -1280,7 +3734,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1309,155 +3763,142 @@ ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_FUNCTION = NO; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE = YES; }; name = Release; }; - B305EF8E276B4E41003AE510 /* Debug */ = { + B3225133286C4728001FDF42 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B32299412878C5A000585AD8 /* PVLibRetro-Build.xcconfig */; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - BUILD_LIBRARY_FOR_DISTRIBUTION = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_DYNAMIC, + "$(inherited)", + NEED_DYNAMIC, + ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "Supporting Files/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Sources/retro/libretro-common/include\"", "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; - MTL_ENABLE_DEBUG_INFO = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVSupport; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; + PRODUCT_NAME = retro; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = singlefile; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - VERSIONING_SYSTEM = "apple-generic"; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Debug; }; - B305EF8F276B4E41003AE510 /* Release */ = { + B3225134286C4728001FDF42 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B32299412878C5A000585AD8 /* PVLibRetro-Build.xcconfig */; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - BUILD_LIBRARY_FOR_DISTRIBUTION = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_STYLE = Manual; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_DYNAMIC, + "$(inherited)", + NEED_DYNAMIC, + ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "Supporting Files/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Sources/retro/libretro-common/include\"", "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVSupport; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; + PRODUCT_NAME = retro; SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - VERSIONING_SYSTEM = "apple-generic"; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Release; }; - B305EF90276B4E41003AE510 /* Archive */ = { + B3225135286C4728001FDF42 /* Archive */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B32299412878C5A000585AD8 /* PVLibRetro-Build.xcconfig */; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - BUILD_LIBRARY_FOR_DISTRIBUTION = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_STYLE = Manual; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "Supporting Files/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; - LD_RUNPATH_SEARCH_PATHS = ( + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_DYNAMIC, "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", + NEED_DYNAMIC, ); - MARKETING_VERSION = 2.0.4; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Sources/retro/libretro-common/include\"", + "$(inherited)", + ); + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVSupport; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; + PRODUCT_NAME = retro; SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - VERSIONING_SYSTEM = "apple-generic"; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; }; name = Archive; }; @@ -1467,7 +3908,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1496,19 +3937,20 @@ ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_FUNCTION = NO; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; VALIDATE_WORKSPACE = YES; }; @@ -1517,6 +3959,7 @@ B324C53A2191A7A8009F4EDC /* Archive */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; APPLICATION_EXTENSION_API_ONLY = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CLANG_ANALYZER_NONNULL = YES; @@ -1526,7 +3969,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1539,7 +3982,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1554,48 +3997,11 @@ PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Archive; - }; - B324C53B2191A7A8009F4EDC /* Archive */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "Supporting Files/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 2.0.4; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVSupport; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; }; name = Archive; @@ -1617,7 +4023,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSupportTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1654,7 +4060,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSupportTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1689,7 +4095,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PVSupportTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1706,90 +4112,289 @@ }; name = Archive; }; - B3C96EA31D62C3A3003F1E93 /* Debug */ = { + B36C41072898776C00EAEF59 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Debug; + }; + B36C41082898776C00EAEF59 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Release; + }; + B36C41092898776C00EAEF59 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S32Z3HMYVQ; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + }; + name = Archive; + }; + B392849228670348003BAC21 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREFIX_HEADER = "Supporting Files/PVLibRetro-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_DYNAMIC, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ( + NEED_DYNAMIC, + HAVE_DYNAMIC, + __MACH__, + ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "Supporting Files/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Sources/retro/libretro-common/include\"", + "\"$(SRCROOT)/Sources/retro\"", + "$(inherited)", + ); + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Provenance Emu. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVSupport; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibRetro"; + PRODUCT_NAME = PVLibRetro; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = singlefile; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B3C96EA41D62C3A3003F1E93 /* Release */ = { + B392849328670348003BAC21 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Supporting Files/PVSupport-Prefix.pch"; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREFIX_HEADER = "Supporting Files/PVLibRetro-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_DYNAMIC, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ( + NEED_DYNAMIC, + HAVE_DYNAMIC, + __MACH__, + ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "Supporting Files/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Sources/retro/libretro-common/include\"", + "\"$(SRCROOT)/Sources/retro\"", + "$(inherited)", + ); + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Provenance Emu. All rights reserved."; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 2.0.4; + MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PVSUPPORT_PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = PVSupport; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibRetro"; + PRODUCT_NAME = PVLibRetro; PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 12.1; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; + B392849428670348003BAC21 /* Archive */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_PREFIX_HEADER = "Supporting Files/PVLibRetro-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_DYNAMIC, + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ( + NEED_DYNAMIC, + HAVE_DYNAMIC, + __MACH__, + ); + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/Sources/retro/libretro-common/include\"", + "\"$(SRCROOT)/Sources/retro\"", + "$(inherited)", + ); + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Provenance Emu. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.provenance-emu.PVLibRetro"; + PRODUCT_NAME = PVLibRetro; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Archive; + }; B3C96ED51D62C5E7003F1E93 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; APPLICATION_EXTENSION_API_ONLY = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CLANG_ANALYZER_NONNULL = YES; @@ -1798,7 +4403,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Manual; - DEAD_CODE_STRIPPING = YES; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1811,7 +4416,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1826,10 +4431,13 @@ PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_COMPILATION_MODE = singlefile; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -1837,6 +4445,7 @@ B3C96ED61D62C5E7003F1E93 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; APPLICATION_EXTENSION_API_ONLY = NO; BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CLANG_ANALYZER_NONNULL = YES; @@ -1846,7 +4455,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; + DEAD_CODE_STRIPPING = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1859,7 +4468,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = "Supporting Files/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1874,8 +4483,11 @@ PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2,3,4,6"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -1893,12 +4505,12 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B305EF8D276B4E41003AE510 /* Build configuration list for PBXNativeTarget "PVSupport-watchOS" */ = { + B3225136286C4729001FDF42 /* Build configuration list for PBXNativeTarget "retro" */ = { isa = XCConfigurationList; buildConfigurations = ( - B305EF8E276B4E41003AE510 /* Debug */, - B305EF8F276B4E41003AE510 /* Release */, - B305EF90276B4E41003AE510 /* Archive */, + B3225133286C4728001FDF42 /* Debug */, + B3225134286C4728001FDF42 /* Release */, + B3225135286C4728001FDF42 /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1913,17 +4525,27 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C96EA61D62C3A3003F1E93 /* Build configuration list for PBXNativeTarget "PVSupport-tvOS" */ = { + B36C410A2898776C00EAEF59 /* Build configuration list for PBXNativeTarget "retro-netplay" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B36C41072898776C00EAEF59 /* Debug */, + B36C41082898776C00EAEF59 /* Release */, + B36C41092898776C00EAEF59 /* Archive */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B392849528670348003BAC21 /* Build configuration list for PBXNativeTarget "PVLibRetro" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3C96EA31D62C3A3003F1E93 /* Debug */, - B3C96EA41D62C3A3003F1E93 /* Release */, - B324C53B2191A7A8009F4EDC /* Archive */, + B392849228670348003BAC21 /* Debug */, + B392849328670348003BAC21 /* Release */, + B392849428670348003BAC21 /* Archive */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B3C96ED41D62C5E7003F1E93 /* Build configuration list for PBXNativeTarget "PVSupport-iOS" */ = { + B3C96ED41D62C5E7003F1E93 /* Build configuration list for PBXNativeTarget "PVSupport" */ = { isa = XCConfigurationList; buildConfigurations = ( B3C96ED51D62C5E7003F1E93 /* Debug */, @@ -1936,14 +4558,6 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - B305EF43276B4E41003AE510 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/CocoaLumberjack/CocoaLumberjack.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 3.7.2; - }; - }; B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/CocoaLumberjack/CocoaLumberjack.git"; @@ -1971,31 +4585,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - B305EF42276B4E41003AE510 /* CocoaLumberjackSwift */ = { - isa = XCSwiftPackageProductDependency; - package = B305EF43276B4E41003AE510 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjackSwift; - }; - B305EF46276B4E41003AE510 /* CocoaLumberjackSwiftLogBackend */ = { - isa = XCSwiftPackageProductDependency; - package = B305EF43276B4E41003AE510 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjackSwiftLogBackend; - }; - B305EF47276B4E41003AE510 /* CocoaLumberjack */ = { - isa = XCSwiftPackageProductDependency; - package = B305EF43276B4E41003AE510 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjack; - }; B3296E8626C67F660088AC32 /* CocoaLumberjackSwiftLogBackend */ = { isa = XCSwiftPackageProductDependency; package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; productName = CocoaLumberjackSwiftLogBackend; }; - B3296E8826C67F6B0088AC32 /* CocoaLumberjackSwiftLogBackend */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjackSwiftLogBackend; - }; B336B8F026B3985B00960A81 /* CocoaLumberjackSwift */ = { isa = XCSwiftPackageProductDependency; package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; @@ -2006,31 +4600,6 @@ package = B336B8F226B398A900960A81 /* XCRemoteSwiftPackageReference "Reachability.swift" */; productName = Reachability; }; - B336B8F726B3991500960A81 /* CocoaLumberjackSwift */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjackSwift; - }; - B372637426EA013100E95488 /* CocoaLumberjack */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjack; - }; - B372637626EA013100E95488 /* CocoaLumberjackSwift */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjackSwift; - }; - B372637826EA013100E95488 /* CocoaLumberjackSwiftLogBackend */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjackSwiftLogBackend; - }; - B372637A26EA013100E95488 /* Reachability */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8F226B398A900960A81 /* XCRemoteSwiftPackageReference "Reachability.swift" */; - productName = Reachability; - }; B372637C26EA013A00E95488 /* CocoaLumberjack */ = { isa = XCSwiftPackageProductDependency; package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; @@ -2051,16 +4620,6 @@ package = B336B8F226B398A900960A81 /* XCRemoteSwiftPackageReference "Reachability.swift" */; productName = Reachability; }; - B3B492CA26B3A96B000B426B /* Reachability */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8F226B398A900960A81 /* XCRemoteSwiftPackageReference "Reachability.swift" */; - productName = Reachability; - }; - B3CA5B5026E9E4D500687B27 /* CocoaLumberjack */ = { - isa = XCSwiftPackageProductDependency; - package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjack; - }; B3CA5B5226E9E4DC00687B27 /* CocoaLumberjack */ = { isa = XCSwiftPackageProductDependency; package = B336B8EF26B3985B00960A81 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; @@ -2071,11 +4630,6 @@ package = B3CEC5BF27952163004A7CC1 /* XCRemoteSwiftPackageReference "NSLogger" */; productName = NSLogger; }; - B3CEC5C2279521EC004A7CC1 /* NSLogger */ = { - isa = XCSwiftPackageProductDependency; - package = B3CEC5BF27952163004A7CC1 /* XCRemoteSwiftPackageReference "NSLogger" */; - productName = NSLogger; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 1ACEA63C17F7467D0031B1C9 /* Project object */; diff --git a/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVLibRetro.xcscheme b/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVLibRetro.xcscheme new file mode 100644 index 0000000000..dfd3b287cf --- /dev/null +++ b/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVLibRetro.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport.xcscheme b/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport.xcscheme index 2b69eb01fd..55e13cf1df 100644 --- a/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport.xcscheme +++ b/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport.xcscheme @@ -4,7 +4,7 @@ version = "1.3"> + buildImplicitDependencies = "YES"> @@ -32,7 +32,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:PVSupport.xcodeproj"> @@ -64,7 +64,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:PVSupport.xcodeproj"> @@ -80,7 +80,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "B3C96EBE1D62C5E7003F1E93" BuildableName = "PVSupport.framework" - BlueprintName = "PVSupport-iOS" + BlueprintName = "PVSupport" ReferencedContainer = "container:PVSupport.xcodeproj"> diff --git a/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/retro.xcscheme b/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/retro.xcscheme new file mode 100644 index 0000000000..fb8c5aa321 --- /dev/null +++ b/PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/retro.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PVSupport/Package.swift b/PVSupport/Package.swift index 99ac0880e6..fabda5332a 100644 --- a/PVSupport/Package.swift +++ b/PVSupport/Package.swift @@ -6,7 +6,7 @@ let package = Package( name: "PVSupport", platforms: [ .iOS(.v11), - .tvOS(.v11), + .tvOS(.v11) // .watchOS(.v7), // .macOS(.v11) ], @@ -17,7 +17,7 @@ let package = Package( targets: ["PVSupport"]), .library( name: "PVSupportObjC", - targets: ["PVSupportObjC"]), + targets: ["PVSupportObjC"]) ], dependencies: [ // Dependencies declare other packages that this package depends on. @@ -83,6 +83,6 @@ let package = Package( // MARK: SwiftPM tests .testTarget( name: "PVSupportTests", - dependencies: ["PVSupport"]), + dependencies: ["PVSupport"]) ] ) diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Audio.m b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Audio.m new file mode 100644 index 0000000000..102fbe8d75 --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Audio.m @@ -0,0 +1,71 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibretro.h" + +#import + +#include "libretro.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "dynamic.h" +#include +#include + +#include "command.h" +#include "core_info.h" + +#include "managers/state_manager.h" +//#include "audio/audio_driver.h" +//#include "camera/camera_driver.h" +//#include "location/location_driver.h" +//#include "record/record_driver.h" +#include "core.h" +#include "runloop.h" +#include "performance_counters.h" +#include "system.h" +#include "record/record_driver.h" +//#include "queues/message_queue.h" +#include "gfx/video_driver.h" +#include "gfx/video_context_driver.h" +#include "gfx/scaler/scaler.h" +//#include "gfx/video_frame.h" + +#include + +#include "cores/internal_cores.h" +#include "frontend/frontend_driver.h" +#include "content.h" +#ifdef HAVE_CHEEVOS +#include "cheevos.h" +#endif +#include "retroarch.h" +#include "configuration.h" +#include "general.h" +#include "msg_hash.h" +#include "verbosity.h" + +@implementation PVLibRetroCore (Audio) + +# pragma mark - Audio + +- (double)audioSampleRate { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + double sample_rate = av_info.timing.sample_rate; + return sample_rate ?: 44100; +} + +- (NSUInteger)channelCount { + return 2; +} + +@end diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Cheats.m b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Cheats.m new file mode 100644 index 0000000000..da9d7dd741 --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Cheats.m @@ -0,0 +1,34 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibretro.h" + +#import + +#include "libretro.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "dynamic.h" +#include +#include +#include "core.h" + +@implementation PVLibRetroCore (Cheats) + +- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { + unsigned index = 0; + const char* cCode = [code cStringUsingEncoding:NSUTF8StringEncoding]; + core->retro_cheat_set(index, enabled, cCode); + // void retro_cheat_reset(void) { } + // void retro_cheat_set(unsigned index, bool enabled, const char *code) { (void)index; (void)enabled; (void)code; } +} + +@end diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Controls.m b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Controls.m new file mode 100644 index 0000000000..bc1511707c --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Controls.m @@ -0,0 +1,309 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibretro.h" + +#import + +#include "libretro.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "dynamic.h" +#include +#include + +#include "command.h" +#include "core_info.h" + +#include "managers/state_manager.h" +//#include "audio/audio_driver.h" +//#include "camera/camera_driver.h" +//#include "location/location_driver.h" +//#include "record/record_driver.h" +#include "core.h" +#include "runloop.h" +#include "performance_counters.h" +#include "system.h" +#include "record/record_driver.h" +//#include "queues/message_queue.h" +#include "gfx/video_driver.h" +#include "gfx/video_context_driver.h" +#include "gfx/scaler/scaler.h" +//#include "gfx/video_frame.h" + +#include + +#include "cores/internal_cores.h" +#include "frontend/frontend_driver.h" +#include "content.h" +#ifdef HAVE_CHEEVOS +#include "cheevos.h" +#endif +#include "retroarch.h" +#include "configuration.h" +#include "general.h" +#include "msg_hash.h" +#include "verbosity.h" + +# pragma mark - Controls +@implementation PVLibRetroCore (Controls) +- (void)pollControllers { + // TODO: This should warn or something if not in subclass + for (NSInteger playerIndex = 0; playerIndex < 2; playerIndex++) { + GCController *controller = nil; + + if (self.controller1 && playerIndex == 0) { + controller = self.controller1; + } + else if (self.controller2 && playerIndex == 1) + { + controller = self.controller2; + } + + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + /* TODO: To support paddles we would need to circumvent libRetro's emulation of analog controls or drop libRetro and talk to stella directly like OpenEMU did */ + + // D-Pad + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = (dpad.up.isPressed || gamepad.leftThumbstick.up.isPressed); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = (dpad.down.isPressed || gamepad.leftThumbstick.down.isPressed); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = (dpad.left.isPressed || gamepad.leftThumbstick.left.isPressed); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = (dpad.right.isPressed || gamepad.leftThumbstick.right.isPressed); + + // #688, use second thumb to control second player input if no controller active + // some games used both joysticks for 1 player optionally + if(playerIndex == 0 && self.controller2 == nil) { + _pad[1][RETRO_DEVICE_ID_JOYPAD_UP] = gamepad.rightThumbstick.up.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_DOWN] = gamepad.rightThumbstick.down.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_LEFT] = gamepad.rightThumbstick.left.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_RIGHT] = gamepad.rightThumbstick.right.isPressed; + } + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed || gamepad.rightTrigger.isPressed; + // Booster + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed || gamepad.leftTrigger.isPressed; + + // Reset + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; + + // Select + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; + + /* + #define RETRO_DEVICE_ID_JOYPAD_B 0 == JoystickZeroFire1 + #define RETRO_DEVICE_ID_JOYPAD_Y 1 == Unmapped + #define RETRO_DEVICE_ID_JOYPAD_SELECT 2 == ConsoleSelect + #define RETRO_DEVICE_ID_JOYPAD_START 3 == ConsoleReset + #define RETRO_DEVICE_ID_JOYPAD_UP 4 == Up + #define RETRO_DEVICE_ID_JOYPAD_DOWN 5 == Down + #define RETRO_DEVICE_ID_JOYPAD_LEFT 6 == Left + #define RETRO_DEVICE_ID_JOYPAD_RIGHT 7 == Right + #define RETRO_DEVICE_ID_JOYPAD_A 8 == JoystickZeroFire2 + #define RETRO_DEVICE_ID_JOYPAD_X 9 == JoystickZeroFire3 + #define RETRO_DEVICE_ID_JOYPAD_L 10 == ConsoleLeftDiffA + #define RETRO_DEVICE_ID_JOYPAD_R 11 == ConsoleRightDiffA + #define RETRO_DEVICE_ID_JOYPAD_L2 12 == ConsoleLeftDiffB + #define RETRO_DEVICE_ID_JOYPAD_R2 13 == ConsoleRightDiffB + #define RETRO_DEVICE_ID_JOYPAD_L3 14 == ConsoleColor + #define RETRO_DEVICE_ID_JOYPAD_R3 15 == ConsoleBlackWhite + */ + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + // D-Pad + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.isPressed; + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed; + // Booster + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed; + + // Reset + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; + + // Select + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; + + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.value > 0.5; + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonX.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonA.isPressed; + } +#endif + } +} + +- (NSInteger)controllerValueForButtonID:(unsigned)buttonID forPlayer:(NSInteger)player +{ + // TODO: This should warn or something if not in subclass + + GCController *controller = nil; + + if (player == 0) + { + controller = self.controller1; + } + else + { + controller = self.controller2; + } + + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + if (PVSettingsModel.shared.use8BitdoM30) // Maps the Sega Controls to the 8BitDo M30 if enabled in Settings / Controller + { switch (buttonID) { + case PVSega32XButtonUp: + return [[[gamepad leftThumbstick] up] value] > 0.1; + case PVSega32XButtonDown: + return [[[gamepad leftThumbstick] down] value] > 0.1; + case PVSega32XButtonLeft: + return [[[gamepad leftThumbstick] left] value] > 0.1; + case PVSega32XButtonRight: + return [[[gamepad leftThumbstick] right] value] > 0.1; + case PVSega32XButtonA: + return [[gamepad buttonA] isPressed]; + case PVSega32XButtonB: + return [[gamepad buttonB] isPressed]; + case PVSega32XButtonC: + return [[gamepad rightShoulder] isPressed]; + case PVSega32XButtonX: + return [[gamepad buttonX] isPressed]; + case PVSega32XButtonY: + return [[gamepad buttonY] isPressed]; + case PVSega32XButtonZ: + return [[gamepad leftShoulder] isPressed]; + case PVSega32XButtonMode: + return [[gamepad leftTrigger] isPressed]; + case PVSega32XButtonStart: +#if TARGET_OS_TV + return [[gamepad buttonMenu] isPressed]?:[[gamepad rightTrigger] isPressed]; +#else + return [[gamepad rightTrigger] isPressed]; +#endif + default: + break; + }} + { switch (buttonID) { + case PVSega32XButtonUp: + return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; + case PVSega32XButtonDown: + return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; + case PVSega32XButtonLeft: + return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; + case PVSega32XButtonRight: + return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; + case PVSega32XButtonA: + return [[gamepad buttonX] isPressed]; + case PVSega32XButtonB: + return [[gamepad buttonA] isPressed]; + case PVSega32XButtonC: + return [[gamepad buttonB] isPressed]; + case PVSega32XButtonX: + return [[gamepad buttonY] isPressed]; + case PVSega32XButtonY: + return [[gamepad leftShoulder] isPressed]; + case PVSega32XButtonZ: + return [[gamepad rightShoulder] isPressed]; + case PVSega32XButtonStart: + return [[gamepad rightTrigger] isPressed]; + case PVSega32XButtonMode: + return [[gamepad leftTrigger] isPressed]; + default: + break; + }} + } + else if ([controller gamepad]) + { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSega32XButtonUp: + return [[dpad up] isPressed]; + case PVSega32XButtonDown: + return [[dpad down] isPressed]; + case PVSega32XButtonLeft: + return [[dpad left] isPressed]; + case PVSega32XButtonRight: + return [[dpad right] isPressed]; + case PVSega32XButtonA: + return [[gamepad buttonY] isPressed]; + case PVSega32XButtonB: + return [[gamepad buttonX] isPressed]; + case PVSega32XButtonC: + return [[gamepad buttonA] isPressed]; + case PVSega32XButtonX: + return [[gamepad buttonB] isPressed]; + case PVSega32XButtonY: + return [[gamepad leftShoulder] isPressed]; + case PVSega32XButtonZ: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSega32XButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVSega32XButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVSega32XButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVSega32XButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVSega32XButtonA: + return [[gamepad buttonX] isPressed]; + break; + case PVSega32XButtonB: + return [[gamepad buttonA] isPressed]; + break; + default: + break; + } + } +#endif + + return 0; +} + +@end diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Options.m b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Options.m new file mode 100644 index 0000000000..8df7fcd592 --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Options.m @@ -0,0 +1,62 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibretro.h" + +#import + +#include "libretro.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "dynamic.h" +#include +#include + +#include "command.h" +#include "core_info.h" + +#include "managers/state_manager.h" +//#include "audio/audio_driver.h" +//#include "camera/camera_driver.h" +//#include "location/location_driver.h" +//#include "record/record_driver.h" +#include "core.h" +#include "runloop.h" +#include "performance_counters.h" +#include "system.h" +#include "record/record_driver.h" +//#include "queues/message_queue.h" +#include "gfx/video_driver.h" +#include "gfx/video_context_driver.h" +#include "gfx/scaler/scaler.h" +//#include "gfx/video_frame.h" + +#include + +#include "cores/internal_cores.h" +#include "frontend/frontend_driver.h" +#include "content.h" +#ifdef HAVE_CHEEVOS +#include "cheevos.h" +#endif +#include "retroarch.h" +#include "configuration.h" +#include "general.h" +#include "msg_hash.h" +#include "verbosity.h" + +# pragma mark - Options +@implementation PVLibRetroCore (Options) +- (void *)getVariable:(const char *)variable { + WLOG(@"This should be done in sub class: %s", variable); + return NULL; +} +@end diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Saves.m b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Saves.m new file mode 100644 index 0000000000..349a76aca7 --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Saves.m @@ -0,0 +1,111 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibretro.h" + +#import + +#include "libretro.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "dynamic.h" +#include +#include + +#include "command.h" +#include "core_info.h" + +#include "managers/state_manager.h" +//#include "audio/audio_driver.h" +//#include "camera/camera_driver.h" +//#include "location/location_driver.h" +//#include "record/record_driver.h" +#include "core.h" +#include "runloop.h" +#include "performance_counters.h" +#include "system.h" +#include "record/record_driver.h" +//#include "queues/message_queue.h" +#include "gfx/video_driver.h" +#include "gfx/video_context_driver.h" +#include "gfx/scaler/scaler.h" +//#include "gfx/video_frame.h" + +#include + +#include "cores/internal_cores.h" +#include "frontend/frontend_driver.h" +#include "content.h" +#ifdef HAVE_CHEEVOS +#include "cheevos.h" +#endif +#include "retroarch.h" +#include "configuration.h" +#include "general.h" +#include "msg_hash.h" +#include "verbosity.h" + +# pragma mark - Save States +@implementation PVLibRetroCore (Saves) + +#pragma mark Properties +-(BOOL)supportsSaveStates { + return core->retro_get_memory_size(0) != 0 && core->retro_get_memory_data(0) != NULL; +} + +#pragma mark Methods +- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error { + @synchronized(self) { + // Save + // bool retro_serialize_all(DBPArchive& ar, bool unlock_thread) + return YES; + } +} + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error { + @synchronized(self) { + BOOL success = NO; // bool retro_unserialize(const void *data, size_t size) + if (!success) { + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to save state.", + NSLocalizedFailureReasonErrorKey: @"Core failed to load save state.", + NSLocalizedRecoverySuggestionErrorKey: @"" + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadState + userInfo:userInfo]; + + *error = newError; + } + } + return success; + } +} +// +//- (BOOL)saveStateToFileAtPath:(NSString *)fileName { +// return NO; +//} +// +//- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { +// block(NO, nil); +//} +// +//- (BOOL)loadStateFromFileAtPath:(NSString *)fileName { +// return NO; +//} +// +//- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { +// block(NO, nil); +//} +// +@end diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Video.m b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Video.m new file mode 100644 index 0000000000..bc9587aeca --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore+Video.m @@ -0,0 +1,214 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibretro.h" + +#import + +#include "libretro.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "dynamic.h" +#include +#include + +#include "command.h" +#include "core_info.h" + +#include "managers/state_manager.h" +//#include "audio/audio_driver.h" +//#include "camera/camera_driver.h" +//#include "location/location_driver.h" +//#include "record/record_driver.h" +#include "core.h" +#include "runloop.h" +#include "performance_counters.h" +#include "system.h" +#include "record/record_driver.h" +//#include "queues/message_queue.h" +#include "gfx/video_driver.h" +#include "gfx/video_context_driver.h" +#include "gfx/scaler/scaler.h" +//#include "gfx/video_frame.h" + +#include + +#include "cores/internal_cores.h" +#include "frontend/frontend_driver.h" +#include "content.h" +#ifdef HAVE_CHEEVOS +#include "cheevos.h" +#endif +#include "retroarch.h" +#include "configuration.h" +#include "general.h" +#include "msg_hash.h" +#include "verbosity.h" + +char rotation_lut[4][32] = +{ + "Normal", + "90 deg", + "180 deg", + "270 deg" +}; + +struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { + { "4:3", 1.3333f }, + { "16:9", 1.7778f }, + { "16:10", 1.6f }, + { "16:15", 16.0f / 15.0f }, + { "1:1", 1.0f }, + { "2:1", 2.0f }, + { "3:2", 1.5f }, + { "3:4", 0.75f }, + { "4:1", 4.0f }, + { "4:4", 1.0f }, + { "5:4", 1.25f }, + { "6:5", 1.2f }, + { "7:9", 0.7777f }, + { "8:3", 2.6666f }, + { "8:7", 1.1428f }, + { "19:12", 1.5833f }, + { "19:14", 1.3571f }, + { "30:17", 1.7647f }, + { "32:9", 3.5555f }, + { "Config", 0.0f }, + { "Square pixel", 1.0f }, + { "Core provided", 1.0f }, + { "Custom", 0.0f } +}; + +@implementation PVLibRetroCore (Audio) + +# pragma mark - Video + +- (NSTimeInterval)frameInterval { + NSTimeInterval fps = av_info.timing.fps ?: 60; + VLOG(@"%f", fps); + return fps; +} + +- (void)swapBuffers { + if (videoBuffer == videoBufferA) { + videoBuffer = videoBufferB; + } else { + videoBuffer = videoBufferA; + } +} + +-(BOOL)isDoubleBuffered { + return YES; +} + +- (CGFloat)videoWidth { + return av_info.geometry.base_width; +} + +- (CGFloat)videoHeight { + return av_info.geometry.base_height; +} + +- (const void *)videoBuffer { + return videoBuffer; +} + +- (CGRect)screenRect { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + unsigned height = av_info.geometry.base_height; + unsigned width = av_info.geometry.base_width; + +// unsigned height = _videoHeight; +// unsigned width = _videoWidth; + + return CGRectMake(0, 0, width, height); +} + +- (CGSize)aspectSize { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + float aspect_ratio = av_info.geometry.aspect_ratio; + // unsigned height = av_info.geometry.max_height; + // unsigned width = av_info.geometry.max_width; + if (aspect_ratio == 1.0) { + return CGSizeMake(1, 1); + } else if (aspect_ratio < 1.2 && aspect_ratio > 1.1) { + return CGSizeMake(10, 9); + } else if (aspect_ratio < 1.26 && aspect_ratio > 1.24) { + return CGSizeMake(5, 4); + } else if (aspect_ratio < 1.4 && aspect_ratio > 1.3) { + return CGSizeMake(4, 3); + } else if (aspect_ratio < 1.6 && aspect_ratio > 1.4) { + return CGSizeMake(3, 2); + } else if (aspect_ratio < 1.7 && aspect_ratio > 1.6) { + return CGSizeMake(16, 9); + } else { + return CGSizeMake(4, 3); + } +} + +- (CGSize)bufferSize { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + unsigned height = av_info.geometry.max_height; + unsigned width = av_info.geometry.max_width; + + return CGSizeMake(width, height); +} + +- (GLenum)pixelFormat { + switch (pix_fmt) + { + case RETRO_PIXEL_FORMAT_0RGB1555: + return GL_RGB5_A1; // GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT +#if !TARGET_OS_MAC + case RETRO_PIXEL_FORMAT_RGB565: + return GL_RGB565; +#else + case RETRO_PIXEL_FORMAT_RGB565: + return GL_UNSIGNED_SHORT_5_6_5; +#endif + case RETRO_PIXEL_FORMAT_XRGB8888: + return GL_RGBA8; // GL_RGBA8 + default: + return GL_RGBA; + } +} + +- (GLenum)internalPixelFormat { + switch (pix_fmt) + { + case RETRO_PIXEL_FORMAT_0RGB1555: + return GL_RGB5_A1; +#if !TARGET_OS_MAC + case RETRO_PIXEL_FORMAT_RGB565: + return GL_RGB565; +#else + case RETRO_PIXEL_FORMAT_RGB565: + return GL_UNSIGNED_SHORT_5_6_5; +#endif + case RETRO_PIXEL_FORMAT_XRGB8888: + return GL_RGBA8; + default: + return GL_RGBA; + } + + return GL_RGBA; +} + +- (GLenum)pixelType { + // GL_UNSIGNED_SHORT_5_6_5 + // GL_UNSIGNED_BYTE + return GL_UNSIGNED_SHORT; +} + +@end diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore.h b/PVSupport/Sources/PVLibRetro/PVLibRetroCore.h new file mode 100644 index 0000000000..d4edf50551 --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore.h @@ -0,0 +1,80 @@ +// +// PVLibretro.h +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import + +#import +#import +#import +//#import + +//#pragma clang diagnostic push +//#pragma clang diagnostic error "-Wall" + +#define RETRO_API_VERSION 1 + +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +#import +#import +#import +#import +#else +#import +#import +#endif + +typedef struct retro_core_t retro_core_t; + + +@class PVLibRetroCore; +static __weak PVLibRetroCore *_current; + +__attribute__((weak_import)) +@interface PVLibRetroCore : PVEmulatorCore { + @public + unsigned short pitch_shift; + + uint32_t *videoBuffer; + uint32_t *videoBufferA; + uint32_t *videoBufferB; + + int16_t _pad[2][12]; + + retro_core_t* core; + + // MARK: - Retro Structs + unsigned core_poll_type; + bool core_input_polled; + bool core_has_set_input_descriptors; + struct retro_system_av_info av_info; + enum retro_pixel_format pix_fmt; +} +- (NSInteger)controllerValueForButtonID:(unsigned)buttonID forPlayer:(NSInteger)player; +- (void)pollControllers; + +- (void *)getVariable:(const char *)variable; + +@property (nonatomic, readonly) CGFloat videoWidth; +@property (nonatomic, readonly) CGFloat videoHeight; +@property (nonatomic, retain, nullable) NSString * romPath; + +@end + +#define SYMBOL(x) \ +do { \ + function_t func = dylib_proc(lib_handle, #x); \ + memcpy(¤t_core->x, &func, sizeof(func)); \ + if (current_core->x == NULL) { \ + ELOG(@"Failed to load symbol: \"%s\"\n", #x); \ + retroarch_fail(1, "init_libretro_sym()"); \ + } \ +} while (0) + +#define SYMBOL_DUMMY(x) current_core->x = libretro_dummy_##x + +//#pragma clang diagnostic pop diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroCore.m b/PVSupport/Sources/PVLibRetro/PVLibRetroCore.m new file mode 100644 index 0000000000..655fc527bb --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroCore.m @@ -0,0 +1,2760 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibretro.h" + +#import + +#include "libretro.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "dynamic.h" +#include +#include + +#include "command.h" +#include "core_info.h" + +#include "managers/state_manager.h" +//#include "audio/audio_driver.h" +//#include "camera/camera_driver.h" +//#include "location/location_driver.h" +//#include "record/record_driver.h" +#include "core.h" +#include "runloop.h" +#include "performance_counters.h" +#include "system.h" +#include "record/record_driver.h" +//#include "queues/message_queue.h" +#include "gfx/video_driver.h" +#include "gfx/video_context_driver.h" +#include "gfx/scaler/scaler.h" +//#include "gfx/video_frame.h" + +#include + +#include "cores/internal_cores.h" +#include "frontend/frontend_driver.h" +#include "content.h" +#ifdef HAVE_CHEEVOS +#include "cheevos.h" +#endif +#include "retroarch.h" +#include "configuration.h" +#include "general.h" +#include "msg_hash.h" +#include "verbosity.h" + +#pragma clang diagnostic push +#pragma clang diagnostic error "-Wall" + +@interface PVLibRetroCore () +{ + BOOL loaded; +} +@end + +video_driver_t video_gl; +video_driver_t video_null; + +static struct retro_callbacks retro_ctx; +//static retro_video_refresh_t video_cb; +//static retro_audio_sample_t audio_cb; +//static retro_audio_sample_batch_t audio_batch_cb; +static retro_environment_t environ_cb; +//static retro_input_poll_t input_poll_cb; +//static retro_input_state_t input_state_cb; + +static dylib_t lib_handle; + +// MARK: - Runloop +//static rarch_dir_list_t runloop_shader_dir; +static char runloop_fullpath[PATH_MAX_LENGTH]; +static char runloop_default_shader_preset[PATH_MAX_LENGTH]; +static rarch_system_info_t runloop_system; +static unsigned runloop_pending_windowed_scale; +static struct retro_frame_time_callback runloop_frame_time; +static retro_keyboard_event_t runloop_key_event = NULL; +static retro_keyboard_event_t runloop_frontend_key_event = NULL; +static retro_usec_t runloop_frame_time_last = 0; +static unsigned runloop_max_frames = false; +static bool runloop_force_nonblock = false; +static bool runloop_frame_time_last_enable = false; +static bool runloop_set_frame_limit = false; +static bool runloop_paused = false; +static bool runloop_idle = false; +static bool runloop_exec = false; +static bool runloop_slowmotion = false; +static bool runloop_shutdown_initiated = false; +static bool runloop_core_shutdown_initiated = false; +static bool runloop_perfcnt_enable = false; +static bool runloop_overrides_active = false; +static bool runloop_game_options_active = false; +//static core_option_manager_t *runloop_core_options = NULL; +#ifdef HAVE_THREADS +static slock_t *_runloop_msg_queue_lock = NULL; +#endif +//static msg_queue_t *runloop_msg_queue = NULL; + +// MARK: - Config + +static char path_libretro[PATH_MAX_LENGTH]; + +char *config_get_active_core_path_ptr(void) { + return path_libretro; +} + +//const char *config_get_active_core_path(void) +//{ +// return path_libretro; +//} + +NSString *privateFrameworkPath(void) { + NSBundle *bundle = [NSBundle bundleForClass:[_current class]]; + // const char* path = [bundle.executablePath fileSystemRepresentation]; + NSString *executableName = bundle.infoDictionary[@"CFBundleExecutable"]; + + NSString *frameworkPath = [NSString stringWithFormat:@"%@/%@", bundle.bundlePath, executableName]; + + NSArray *fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:frameworkPath error:nil]; + for (NSString *fileName in fileNames) { + ILOG(@"%@", fileName); + } +// NSString *privateFrameworkPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:frameworkPath]; +// DLOG(@"%@", privateFrameworkPath); + return frameworkPath; +} + +const char *config_get_active_core_path(void) { + + return [privateFrameworkPath() fileSystemRepresentation]; +} + +bool config_active_core_path_is_empty(void) { + return !path_libretro[0]; +} + +size_t config_get_active_core_path_size(void) { + DLOG(@""); + return privateFrameworkPath().length; //sizeof(path_libretro); +} + +void config_set_active_core_path(const char *path) { + DLOG(@"%s", path); + strlcpy(path_libretro, path, sizeof(path_libretro)); +} + +void config_clear_active_core_path(void) { + DLOG(@""); + *path_libretro = '\0'; +} + +const char *config_get_active_path(void) +{ + // global_t *global = global_get_ptr(); + // + // if (!string_is_empty(global->path.config)) + // return global->path.config; + + + return NULL; +} + +void config_free_state(void) +{ +} + + +// MARK: - Retro typedefs +typedef void *dylib_t; +typedef void (*function_t)(void); + +// MARK: - Retro Macros + +void retroarch_fail(int error_code, const char *error) { + ELOG(@"Code: %i, Error: %s", error_code, error); +} + +static void load_symbols(enum rarch_core_type type, struct retro_core_t *current_core); + +/** + * input_poll: + * + * Input polling callback function. + **/ +void input_poll(void); + +/** + * input_state: + * @port : user number. + * @device : device identifier of user. + * @idx : index value of user. + * @id : identifier of key pressed by user. + * + * Input state callback function. + * + * Returns: Non-zero if the given key (identified by @id) was pressed by the user + * (assigned to @port). + **/ +int16_t input_state(unsigned port, unsigned device, + unsigned idx, unsigned id); + +static void core_input_state_poll_maybe(void) +{ + GET_CURRENT_OR_RETURN(); + if (current->core_poll_type == POLL_TYPE_NORMAL) + input_poll(); +} + +static int16_t core_input_state_poll(unsigned port, + unsigned device, unsigned idx, unsigned id) +{ + GET_CURRENT_OR_RETURN(0); + if (current->core_poll_type == POLL_TYPE_LATE) + { + if (!current->core_input_polled) + input_poll(); + + current->core_input_polled = true; + } + return input_state(port, device, idx, id); +} + +void core_set_input_state(retro_ctx_input_state_info_t *info) +{ + GET_CURRENT_OR_RETURN(); + current->core->retro_set_input_state(info->cb); +} + + +/** + * input_state: + * @port : user number. + * @device : device identifier of user. + * @idx : index value of user. + * @id : identifier of key pressed by user. + * + * Input state callback function. + * + * Returns: Non-zero if the given key (identified by @id) was pressed by the user + * (assigned to @port). + **/ +int16_t input_state(unsigned port, unsigned device, + unsigned idx, unsigned id) +{ + int16_t res = 0; + // settings_t *settings = config_get_ptr(); + + // + // device &= RETRO_DEVICE_MASK; + // + // if (bsv_movie_ctl(BSV_MOVIE_CTL_PLAYBACK_ON, NULL)) + // { + // int16_t ret; + // if (bsv_movie_ctl(BSV_MOVIE_CTL_GET_INPUT, &ret)) + // return ret; + // + // bsv_movie_ctl(BSV_MOVIE_CTL_SET_END, NULL); + // } + // + // if (settings->input.remap_binds_enable) + // input_remapping_state(port, &device, &idx, &id); + // + // if (!input_driver_is_flushing_input() + // && !input_driver_is_libretro_input_blocked()) + // { + // if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD))) + // res = current_input->input_state( + // current_input_data, libretro_input_binds, port, device, idx, id); + // + //#ifdef HAVE_OVERLAY + // input_state_overlay(&res, port, device, idx, id); + //#endif + // + //#ifdef HAVE_NETWORKGAMEPAD + // input_remote_state(&res, port, device, idx, id); + //#endif + // } + // + // /* Don't allow turbo for D-pad. */ + // if (device == RETRO_DEVICE_JOYPAD && (id < RETRO_DEVICE_ID_JOYPAD_UP || + // id > RETRO_DEVICE_ID_JOYPAD_RIGHT)) + // { + // /* + // * Apply turbo button if activated. + // * + // * If turbo button is held, all buttons pressed except + // * for D-pad will go into a turbo mode. Until the button is + // * released again, the input state will be modulated by a + // * periodic pulse defined by the configured duty cycle. + // */ + // if (res && input_driver_turbo_btns.frame_enable[port]) + // input_driver_turbo_btns.enable[port] |= (1 << id); + // else if (!res) + // input_driver_turbo_btns.enable[port] &= ~(1 << id); + // + // if (input_driver_turbo_btns.enable[port] & (1 << id)) + // { + // /* if turbo button is enabled for this key ID */ + // res = res && ((input_driver_turbo_btns.count % settings->input.turbo_period) + // < settings->input.turbo_duty_cycle); + // } + // } + // + // if (bsv_movie_ctl(BSV_MOVIE_CTL_PLAYBACK_OFF, NULL)) + // bsv_movie_ctl(BSV_MOVIE_CTL_SET_INPUT, &res); + + return res; +} + + +/** + * core_init_libretro_cbs: + * @data : pointer to retro_callbacks object + * + * Initializes libretro callbacks, and binds the libretro callbacks + * to default callback functions. + **/ +static bool core_init_libretro_cbs(void *data) +{ + GET_CURRENT_OR_RETURN(false); + + struct retro_callbacks *cbs = (struct retro_callbacks*)data; +#ifdef HAVE_NETPLAY + global_t *global = global_get_ptr(); +#endif + + if (!cbs) + return false; + + current->core->retro_set_video_refresh(video_driver_frame); + // core->retro_set_audio_sample(audio_driver_sample); + // core->retro_set_audio_sample_batch(audio_driver_sample_batch); + current->core->retro_set_input_state(core_input_state_poll); + current->core->retro_set_input_poll(core_input_state_poll_maybe); + + core_set_default_callbacks(cbs); + +#ifdef HAVE_NETPLAY + if (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL)) + return true; + + /* Force normal poll type for netplay. */ + core_poll_type = POLL_TYPE_NORMAL; + + if (global->netplay.is_spectate) + { + core->retro_set_input_state( + (global->netplay.is_client ? + input_state_spectate_client : input_state_spectate) + ); + } + else + { + core->retro_set_video_refresh(video_frame_net); + core->retro_set_audio_sample(audio_sample_net); + core->retro_set_audio_sample_batch(audio_sample_batch_net); + core->retro_set_input_state(input_state_net); + } +#endif + + return true; +} + +/** + * core_set_default_callbacks: + * @data : pointer to retro_callbacks object + * + * Binds the libretro callbacks to default callback functions. + **/ +bool core_set_default_callbacks(void *data) +{ + struct retro_callbacks *cbs = (struct retro_callbacks*)data; + + if (!cbs) + return false; + + cbs->frame_cb = video_driver_frame; + // cbs->sample_cb = audio_callback; + // cbs->sample_batch_cb = audio_batch_callback; + cbs->state_cb = core_input_state_poll; + cbs->poll_cb = input_poll; + + return true; +} + +bool core_deinit(void *data) +{ + struct retro_callbacks *cbs = (struct retro_callbacks*)data; + + if (!cbs) + return false; + + cbs->frame_cb = NULL; + cbs->sample_cb = NULL; + cbs->sample_batch_cb = NULL; + cbs->state_cb = NULL; + cbs->poll_cb = NULL; + + return true; +} + +bool core_uninit_libretro_callbacks(void) +{ + return core_deinit(&retro_ctx); +} + +/** + * core_set_rewind_callbacks: + * + * Sets the audio sampling callbacks based on whether or not + * rewinding is currently activated. + **/ +bool core_set_rewind_callbacks(void) +{ + // if (state_manager_frame_is_reversed()) + // { + // core->retro_set_audio_sample(audio_driver_sample_rewind); + // core->retro_set_audio_sample_batch(audio_driver_sample_batch_rewind); + // } + // else + // { + // core->retro_set_audio_sample(audio_driver_sample); + // core->retro_set_audio_sample_batch(audio_driver_sample_batch); + // } + return true; +} + +bool core_set_cheat(retro_ctx_cheat_info_t *info) { + GET_CURRENT_OR_RETURN(false); + current->core->retro_cheat_set(info->index, info->enabled, info->code); + return true; +} + +bool core_reset_cheat(void) { + GET_CURRENT_OR_RETURN(false); + current->core->retro_cheat_reset(); + return true; +} + +bool core_api_version(retro_ctx_api_info_t *api) +{ + GET_CURRENT_OR_RETURN(false); + if (!api) + return false; + api->version = current->core->retro_api_version(); + return true; +} + +bool core_set_poll_type(unsigned *type) +{ + GET_CURRENT_OR_RETURN(false); + current->core_poll_type = *type; + return true; +} + +void core_uninit_symbols(void) +{ + GET_CURRENT_OR_RETURN(); + uninit_libretro_sym(¤t->core); +} + +bool core_init_symbols(enum rarch_core_type *type) +{ + GET_CURRENT_OR_RETURN(false); + if (!type) + return false; + init_libretro_sym(*type, ¤t->core); + return true; +} + +bool core_set_controller_port_device(retro_ctx_controller_info_t *pad) { + GET_CURRENT_OR_RETURN(false); + if (!pad) + return false; + current->core->retro_set_controller_port_device(pad->port, pad->device); + return true; +} + +bool core_get_memory(retro_ctx_memory_info_t *info) { + GET_CURRENT_OR_RETURN(false); + + if (!info) + return false; + info->size = current->core->retro_get_memory_size(info->id); + info->data = current->core->retro_get_memory_data(info->id); + return true; +} + + + +//static void video_configure(const struct retro_game_geometry * geom) { +// __strong PVLibRetroCore *strongCurrent = _current; +// +// strongCurrent->_videoWidth = geom->max_width; +// strongCurrent->_videoHeight = geom->max_height; +//} + +bool core_load_game(retro_ctx_load_content_info_t *load_info) +{ + GET_CURRENT_OR_RETURN(false); + + if (!load_info) + return false; + + BOOL loaded = false; + if (load_info->special != nil) { + loaded = current->core->retro_load_game_special(load_info->special->id, load_info->info, load_info->content->size); + } else { +// if(load_info->content != nil && load_info->content->elems != nil) { +// core->retro_load_game(*load_info->content->elems[0].data); +// } else { + loaded = current->core->retro_load_game(load_info->info); +// } + } + + if (!loaded) { + ELOG(@"Core failed to load game."); + return false; + } + + struct retro_system_timing timing = { + 60.0f, 10000.0f + }; + struct retro_game_geometry geom = { + 100, 100, 100, 100, 1.0f + }; + struct retro_system_av_info av = { + geom, timing + }; + // struct retro_system_info system = { + // 0, 0, 0, false, false + // }; + // + // struct retro_game_info info = { + // filename, + // 0, + // 0, + // NULL + // }; + + + current->core->retro_get_system_av_info(&av); + ILOG(@"Video: %ix%i\n", av.geometry.base_width, av.geometry.base_height); + current->av_info = av; +// video_configure(&av.geometry); + return true; + // audio_init(av.timing.sample_rate); +} + +bool core_get_system_info(struct retro_system_info *system) { + GET_CURRENT_OR_RETURN(false); + if (!system) + return false; + current->core->retro_get_system_info(system); + return true; +} + +bool core_unserialize(retro_ctx_serialize_info_t *info) { + GET_CURRENT_OR_RETURN(false); + if (!info) + return false; + if (!current->core->retro_unserialize(info->data_const, info->size)) + return false; + return true; +} + +bool core_serialize(retro_ctx_serialize_info_t *info) { + GET_CURRENT_OR_RETURN(false); + if (!info) + return false; + if (!current->core->retro_serialize(info->data, info->size)) + return false; + return true; +} + +bool core_serialize_size(retro_ctx_size_info_t *info) { + GET_CURRENT_OR_RETURN(false); + if (!info) + return false; + info->size = current->core->retro_serialize_size(); + return true; +} + +bool core_frame(retro_ctx_frame_info_t *info) { + GET_CURRENT_OR_RETURN(false); + if (!info || !retro_ctx.frame_cb) + return false; + + retro_ctx.frame_cb( + info->data, info->width, info->height, info->pitch); + return true; +} + +bool core_poll(void) { + GET_CURRENT_OR_RETURN(false); + if (!retro_ctx.poll_cb) + return false; + retro_ctx.poll_cb(); + return true; +} + +bool core_set_environment(retro_ctx_environ_info_t *info) { + GET_CURRENT_OR_RETURN(false); + if (!info) + return false; + current->core->retro_set_environment(info->env); + return true; +} + +bool core_get_system_av_info(struct retro_system_av_info *av_info) { + GET_CURRENT_OR_RETURN(false); + if (!av_info) + return false; + current->core->retro_get_system_av_info(av_info); + return true; +} + +bool core_reset(void) { + GET_CURRENT_OR_RETURN(false); + current->core->retro_reset(); + return true; +} + +bool core_init(void) { + GET_CURRENT_OR_RETURN(false); + current->core->retro_init(); + return true; +} + +bool core_unload(void) { + GET_CURRENT_OR_RETURN(false); + current->core->retro_deinit(); + return true; +} + +bool core_has_set_input_descriptor(void) { + GET_CURRENT_OR_RETURN(false); + return current->core_has_set_input_descriptors; +} + +void core_set_input_descriptors(void) { + GET_CURRENT_OR_RETURN(); + current->core_has_set_input_descriptors = true; +} + +void core_unset_input_descriptors(void) { + GET_CURRENT_OR_RETURN(); + current->core_has_set_input_descriptors = false; +} + +static settings_t *configuration_settings = NULL; + +settings_t *config_get_ptr(void) { + return configuration_settings; +} + +bool core_load(void) { + GET_CURRENT_OR_RETURN(false); + + settings_t *settings = config_get_ptr(); + current->core_poll_type = settings->input.poll_type_behavior; + + if (!core_verify_api_version()) + return false; + if (!core_init_libretro_cbs(&retro_ctx)) + return false; + + core_get_system_av_info(video_viewport_get_system_av_info()); + runloop_ctl(RUNLOOP_CTL_SET_FRAME_LIMIT, NULL); + + return true; +} + +struct retro_system_av_info *video_viewport_get_system_av_info(void) +{ + static struct retro_system_av_info av_info; + + return &av_info; +} + + +bool core_verify_api_version(void) { + GET_CURRENT_OR_RETURN(false); + + // unsigned api_version = core->retro_api_version(); + // RARCH_LOG("%s: %u\n", + // msg_hash_to_str(MSG_VERSION_OF_LIBRETRO_API), + // api_version); + // RARCH_LOG("%s: %u\n", + // msg_hash_to_str(MSG_COMPILED_AGAINST_API), + // RETRO_API_VERSION); + // + // if (api_version != RETRO_API_VERSION) + // { + // RARCH_WARN("%s\n", msg_hash_to_str(MSG_LIBRETRO_ABI_BREAK)); + // return false; + // } + return true; +} + +/** + * init_libretro_sym: + * @type : Type of core to be loaded. + * If CORE_TYPE_DUMMY, will + * load dummy symbols. + * + * Initializes libretro symbols and + * setups environment callback functions. + **/ +//void init_libretro_sym(enum rarch_core_type type, struct retro_core_t *current_core) +//{ +/* Guarantee that we can do "dirty" casting. + * Every OS that this program supports should pass this. */ +// retro_assert(sizeof(void*) == sizeof(void (*)(void))); +// +// load_symbols(type, current_core); +//} + +/** + * input_poll: + * + * Input polling callback function. + **/ +void input_poll(void) +{ + // size_t i; + // settings_t *settings = config_get_ptr(); + // + // input_driver_poll(); + // + // for (i = 0; i < MAX_USERS; i++) + // libretro_input_binds[i] = settings->input.binds[i]; + // + //#ifdef HAVE_OVERLAY + // input_poll_overlay(NULL, settings->input.overlay_opacity); + //#endif + // + //#ifdef HAVE_COMMAND + // if (input_driver_command) + // command_poll(input_driver_command); + //#endif + // + //#ifdef HAVE_NETWORKGAMEPAD + // if (input_driver_remote) + // input_remote_poll(input_driver_remote); + //#endif +} + +/** + * uninit_libretro_sym: + * + * Frees libretro core-> + * + * Frees all core options, + * associated state, and + * unbind all libretro callback symbols. + **/ +void uninit_libretro_sym(struct retro_core_t *current_core) +{ +#ifdef HAVE_DYNAMIC + if (lib_handle) + dylib_close(lib_handle); + lib_handle = NULL; +#endif + + memset(current_core, 0, sizeof(struct retro_core_t)); + + runloop_ctl(RUNLOOP_CTL_CORE_OPTIONS_DEINIT, NULL); + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_FREE, NULL); + runloop_ctl(RUNLOOP_CTL_FRAME_TIME_FREE, NULL); + // camera_driver_ctl(RARCH_CAMERA_CTL_UNSET_ACTIVE, NULL); + //// location_driver_ctl(RARCH_LOCATION_CTL_UNSET_ACTIVE, NULL); + // + // /* Performance counters no longer valid. */ + // performance_counters_clear(); +} + +#ifdef HAVE_ZLIB +#define DEFAULT_EXT "zip" +#else +#define DEFAULT_EXT "" +#endif +void audio_driver_unset_callback(void) +{ + // audio_callback.callback = NULL; + // audio_callback.set_state = NULL; +} + +bool runloop_ctl(enum runloop_ctl_state state, void *data) { + VLOG(@"runloop_ctl : %i", state); + switch (state) + { + // case RUNLOOP_CTL_SHADER_DIR_DEINIT: + // shader_dir_free(&runloop_shader_dir); + // break; + // case RUNLOOP_CTL_SHADER_DIR_INIT: + // return shader_dir_init(&runloop_shader_dir); + case RUNLOOP_CTL_SYSTEM_INFO_INIT: + core_get_system_info(&runloop_system.info); + + // if (!runloop_system.info.library_name) + // runloop_system.info.library_name = msg_hash_to_str(MSG_UNKNOWN); + if (!runloop_system.info.library_version) + runloop_system.info.library_version = "v0"; + + // video_driver_set_title_buf(); + + strlcpy(runloop_system.valid_extensions, + runloop_system.info.valid_extensions ? + runloop_system.info.valid_extensions : DEFAULT_EXT, + sizeof(runloop_system.valid_extensions)); + break; + case RUNLOOP_CTL_GET_CORE_OPTION_SIZE: + // { + // unsigned *idx = (unsigned*)data; + // if (!idx) + // return false; + // *idx = core_option_manager_size(runloop_core_options); + // } + break; + case RUNLOOP_CTL_HAS_CORE_OPTIONS: + return false; //runloop_core_options; + case RUNLOOP_CTL_CORE_OPTIONS_LIST_GET: + // { + // core_option_manager_t **coreopts = (core_option_manager_t**)data; + // if (!coreopts) + // return false; + // *coreopts = runloop_core_options; + // } + break; + case RUNLOOP_CTL_SYSTEM_INFO_GET: + { + rarch_system_info_t **system = (rarch_system_info_t**)data; + if (!system) + return false; + *system = &runloop_system; + } + break; + case RUNLOOP_CTL_SYSTEM_INFO_FREE: + + /* No longer valid. */ + if (runloop_system.subsystem.data) + free(runloop_system.subsystem.data); + runloop_system.subsystem.data = NULL; + runloop_system.subsystem.size = 0; + + if (runloop_system.ports.data) + free(runloop_system.ports.data); + runloop_system.ports.data = NULL; + runloop_system.ports.size = 0; + + if (runloop_system.mmaps.descriptors) + free((void *)runloop_system.mmaps.descriptors); + runloop_system.mmaps.descriptors = NULL; + runloop_system.mmaps.num_descriptors = 0; + + runloop_key_event = NULL; + runloop_frontend_key_event = NULL; + + audio_driver_unset_callback(); + memset(&runloop_system, 0, sizeof(rarch_system_info_t)); + break; + case RUNLOOP_CTL_SET_FRAME_TIME_LAST: + runloop_frame_time_last_enable = true; + break; + case RUNLOOP_CTL_UNSET_FRAME_TIME_LAST: + if (!runloop_ctl(RUNLOOP_CTL_IS_FRAME_TIME_LAST, NULL)) + return false; + runloop_frame_time_last = 0; + runloop_frame_time_last_enable = false; + break; + case RUNLOOP_CTL_SET_OVERRIDES_ACTIVE: + runloop_overrides_active = true; + break; + case RUNLOOP_CTL_UNSET_OVERRIDES_ACTIVE: + runloop_overrides_active = false; + break; + case RUNLOOP_CTL_IS_OVERRIDES_ACTIVE: + return runloop_overrides_active; + case RUNLOOP_CTL_SET_GAME_OPTIONS_ACTIVE: + runloop_game_options_active = true; + break; + case RUNLOOP_CTL_UNSET_GAME_OPTIONS_ACTIVE: + runloop_game_options_active = false; + break; + case RUNLOOP_CTL_IS_GAME_OPTIONS_ACTIVE: + return runloop_game_options_active; + case RUNLOOP_CTL_IS_FRAME_TIME_LAST: + return runloop_frame_time_last_enable; + case RUNLOOP_CTL_SET_FRAME_LIMIT: + runloop_set_frame_limit = true; + break; + case RUNLOOP_CTL_UNSET_FRAME_LIMIT: + runloop_set_frame_limit = false; + break; + case RUNLOOP_CTL_SHOULD_SET_FRAME_LIMIT: + return runloop_set_frame_limit; + case RUNLOOP_CTL_GET_PERFCNT: + { + bool **perfcnt = (bool**)data; + if (!perfcnt) + return false; + *perfcnt = &runloop_perfcnt_enable; + } + break; + case RUNLOOP_CTL_SET_PERFCNT_ENABLE: + runloop_perfcnt_enable = true; + break; + case RUNLOOP_CTL_UNSET_PERFCNT_ENABLE: + runloop_perfcnt_enable = false; + break; + case RUNLOOP_CTL_IS_PERFCNT_ENABLE: + return runloop_perfcnt_enable; + case RUNLOOP_CTL_SET_NONBLOCK_FORCED: + runloop_force_nonblock = true; + break; + case RUNLOOP_CTL_UNSET_NONBLOCK_FORCED: + runloop_force_nonblock = false; + break; + case RUNLOOP_CTL_IS_NONBLOCK_FORCED: + return runloop_force_nonblock; + case RUNLOOP_CTL_SET_FRAME_TIME: + { + const struct retro_frame_time_callback *info = + (const struct retro_frame_time_callback*)data; +#ifdef HAVE_NETPLAY + global_t *global = global_get_ptr(); + + /* retro_run() will be called in very strange and + * mysterious ways, have to disable it. */ + if (global->netplay.enable) + return false; +#endif + runloop_frame_time = *info; + } + break; + case RUNLOOP_CTL_GET_WINDOWED_SCALE: + { + unsigned **scale = (unsigned**)data; + if (!scale) + return false; + *scale = (unsigned*)&runloop_pending_windowed_scale; + } + break; + case RUNLOOP_CTL_SET_WINDOWED_SCALE: + { + unsigned *idx = (unsigned*)data; + if (!idx) + return false; + runloop_pending_windowed_scale = *idx; + } + break; + case RUNLOOP_CTL_SET_LIBRETRO_PATH: + { + const char *fullpath = (const char*)data; + if (!fullpath) + return false; + config_set_active_core_path(fullpath); + } + break; + case RUNLOOP_CTL_CLEAR_CONTENT_PATH: + *runloop_fullpath = '\0'; + break; + case RUNLOOP_CTL_GET_CONTENT_PATH: + { + char **fullpath = (char**)data; + if (!fullpath) + return false; + *fullpath = (char*)runloop_fullpath; + } + break; + case RUNLOOP_CTL_SET_CONTENT_PATH: + { + const char *fullpath = (const char*)data; + if (!fullpath) + return false; + strlcpy(runloop_fullpath, fullpath, sizeof(runloop_fullpath)); + } + break; + case RUNLOOP_CTL_CLEAR_DEFAULT_SHADER_PRESET: + *runloop_default_shader_preset = '\0'; + break; + case RUNLOOP_CTL_GET_DEFAULT_SHADER_PRESET: + { + char **preset = (char**)data; + if (!preset) + return false; + *preset = (char*)runloop_default_shader_preset; + } + break; + case RUNLOOP_CTL_SET_DEFAULT_SHADER_PRESET: + { + const char *preset = (const char*)data; + if (!preset) + return false; + strlcpy(runloop_default_shader_preset, preset, + sizeof(runloop_default_shader_preset)); + } + break; + case RUNLOOP_CTL_FRAME_TIME_FREE: + memset(&runloop_frame_time, 0, sizeof(struct retro_frame_time_callback)); + runloop_frame_time_last = 0; + runloop_max_frames = 0; + break; + case RUNLOOP_CTL_STATE_FREE: + runloop_perfcnt_enable = false; + runloop_idle = false; + runloop_paused = false; + runloop_slowmotion = false; + runloop_frame_time_last_enable = false; + runloop_set_frame_limit = false; + runloop_overrides_active = false; + runloop_ctl(RUNLOOP_CTL_FRAME_TIME_FREE, NULL); + break; + case RUNLOOP_CTL_GLOBAL_FREE: + { + global_t *global = NULL; + // command_event(CMD_EVENT_TEMPORARY_CONTENT_DEINIT, NULL); + // command_event(CMD_EVENT_SUBSYSTEM_FULLPATHS_DEINIT, NULL); + // command_event(CMD_EVENT_RECORD_DEINIT, NULL); + // command_event(CMD_EVENT_LOG_FILE_DEINIT, NULL); + + // rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL); + runloop_ctl(RUNLOOP_CTL_CLEAR_CONTENT_PATH, NULL); + runloop_overrides_active = false; + + core_unset_input_descriptors(); + + // global = global_get_ptr(); + memset(global, 0, sizeof(struct global)); + // retroarch_override_setting_free_state(); + // config_free_state(); + } + break; + case RUNLOOP_CTL_CLEAR_STATE: + // driver_ctl(RARCH_DRIVER_CTL_DEINIT, NULL); + runloop_ctl(RUNLOOP_CTL_STATE_FREE, NULL); + runloop_ctl(RUNLOOP_CTL_GLOBAL_FREE, NULL); + break; + case RUNLOOP_CTL_SET_MAX_FRAMES: + { + unsigned *ptr = (unsigned*)data; + if (!ptr) + return false; + runloop_max_frames = *ptr; + } + break; + case RUNLOOP_CTL_IS_IDLE: + return runloop_idle; + case RUNLOOP_CTL_SET_IDLE: + { + bool *ptr = (bool*)data; + if (!ptr) + return false; + runloop_idle = *ptr; + } + break; + case RUNLOOP_CTL_IS_SLOWMOTION: + return runloop_slowmotion; + case RUNLOOP_CTL_SET_SLOWMOTION: + { + bool *ptr = (bool*)data; + if (!ptr) + return false; + runloop_slowmotion = *ptr; + } + break; + case RUNLOOP_CTL_SET_PAUSED: + { + bool *ptr = (bool*)data; + if (!ptr) + return false; + runloop_paused = *ptr; + } + break; + case RUNLOOP_CTL_IS_PAUSED: + return runloop_paused; + case RUNLOOP_CTL_MSG_QUEUE_PULL: + // runloop_msg_queue_lock(); + // { + // const char **ret = (const char**)data; + // if (!ret) + // return false; + // *ret = msg_queue_pull(runloop_msg_queue); + // } + // runloop_msg_queue_unlock(); + break; + case RUNLOOP_CTL_MSG_QUEUE_FREE: +#ifdef HAVE_THREADS + slock_free(_runloop_msg_queue_lock); + _runloop_msg_queue_lock = NULL; +#endif + break; + case RUNLOOP_CTL_MSG_QUEUE_CLEAR: + // msg_queue_clear(runloop_msg_queue); + break; + case RUNLOOP_CTL_MSG_QUEUE_DEINIT: + // if (!runloop_msg_queue) + // return true; + // + // runloop_msg_queue_lock(); + // + // msg_queue_free(runloop_msg_queue); + // + // runloop_msg_queue_unlock(); + // runloop_ctl(RUNLOOP_CTL_MSG_QUEUE_FREE, NULL); + // + // runloop_msg_queue = NULL; + break; + case RUNLOOP_CTL_MSG_QUEUE_INIT: + runloop_ctl(RUNLOOP_CTL_MSG_QUEUE_DEINIT, NULL); + // runloop_msg_queue = msg_queue_new(8); + // retro_assert(runloop_msg_queue); + +#ifdef HAVE_THREADS + _runloop_msg_queue_lock = slock_new(); + retro_assert(_runloop_msg_queue_lock); +#endif + break; + case RUNLOOP_CTL_TASK_INIT: + { + // #ifdef HAVE_THREADS + // settings_t *settings = config_get_ptr(); + // bool threaded_enable = settings->threaded_data_runloop_enable; + // #else + // bool threaded_enable = false; + // #endif + // task_queue_ctl(TASK_QUEUE_CTL_DEINIT, NULL); + // task_queue_ctl(TASK_QUEUE_CTL_INIT, &threaded_enable); + } + break; + case RUNLOOP_CTL_SET_CORE_SHUTDOWN: + runloop_core_shutdown_initiated = true; + break; + case RUNLOOP_CTL_UNSET_CORE_SHUTDOWN: + runloop_core_shutdown_initiated = false; + break; + case RUNLOOP_CTL_IS_CORE_SHUTDOWN: + return runloop_core_shutdown_initiated; + case RUNLOOP_CTL_SET_SHUTDOWN: + runloop_shutdown_initiated = true; + break; + case RUNLOOP_CTL_UNSET_SHUTDOWN: + runloop_shutdown_initiated = false; + break; + case RUNLOOP_CTL_IS_SHUTDOWN: + return runloop_shutdown_initiated; + case RUNLOOP_CTL_SET_EXEC: + runloop_exec = true; + break; + case RUNLOOP_CTL_UNSET_EXEC: + runloop_exec = false; + break; + case RUNLOOP_CTL_IS_EXEC: + return runloop_exec; + case RUNLOOP_CTL_DATA_DEINIT: + // task_queue_ctl(TASK_QUEUE_CTL_DEINIT, NULL); + break; + // case RUNLOOP_CTL_IS_CORE_OPTION_UPDATED: + // if (!runloop_core_options) + // return false; + // return core_option_manager_updated(runloop_core_options); + // case RUNLOOP_CTL_CORE_OPTION_PREV: + // { + // unsigned *idx = (unsigned*)data; + // if (!idx) + // return false; + // core_option_manager_prev(runloop_core_options, *idx); + // if (ui_companion_is_on_foreground()) + // ui_companion_driver_notify_refresh(); + // } + // break; + // case RUNLOOP_CTL_CORE_OPTION_NEXT: + // { + // unsigned *idx = (unsigned*)data; + // if (!idx) + // return false; + // core_option_manager_next(runloop_core_options, *idx); + // if (ui_companion_is_on_foreground()) + // ui_companion_driver_notify_refresh(); + // } + // break; + // case RUNLOOP_CTL_CORE_OPTIONS_GET: + // { + // struct retro_variable *var = (struct retro_variable*)data; + // + // if (!runloop_core_options || !var) + // return false; + // + // RARCH_LOG("Environ GET_VARIABLE %s:\n", var->key); + // core_option_manager_get(runloop_core_options, var); + // RARCH_LOG("\t%s\n", var->value ? var->value : + // msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE)); + // } + // break; + case RUNLOOP_CTL_CORE_OPTIONS_INIT: + { + // char *game_options_path = NULL; + // bool ret = false; + // char buf[PATH_MAX_LENGTH] = {0}; + // global_t *global = global_get_ptr(); + // settings_t *settings = config_get_ptr(); + // const char *options_path = settings->path.core_options; + // const struct retro_variable *vars = + // (const struct retro_variable*)data; + + // if (string_is_empty(options_path) + // && !string_is_empty(global->path.config)) + // { + // fill_pathname_resolve_relative(buf, global->path.config, + // file_path_str(FILE_PATH_CORE_OPTIONS_CONFIG), sizeof(buf)); + // options_path = buf; + // } + // + // + // if (settings->game_specific_options) + // ret = rarch_game_specific_options(&game_options_path); + // + // if(ret) + // { + // runloop_ctl(RUNLOOP_CTL_SET_GAME_OPTIONS_ACTIVE, NULL); + // runloop_core_options = + // core_option_manager_new(game_options_path, vars); + // free(game_options_path); + // } + // else + // { + // runloop_ctl(RUNLOOP_CTL_UNSET_GAME_OPTIONS_ACTIVE, NULL); + // runloop_core_options = + // core_option_manager_new(options_path, vars); + // } + + } + break; + // case RUNLOOP_CTL_CORE_OPTIONS_FREE: + // if (runloop_core_options) + // core_option_manager_free(runloop_core_options); + // runloop_core_options = NULL; + // break; + // case RUNLOOP_CTL_CORE_OPTIONS_DEINIT: + // { + // global_t *global = global_get_ptr(); + // if (!runloop_core_options) + // return false; + // + // /* check if game options file was just created and flush + // to that file instead */ + // if(global && !string_is_empty(global->path.core_options_path)) + // { + // core_option_manager_flush_game_specific(runloop_core_options, + // global->path.core_options_path); + // global->path.core_options_path[0] = '\0'; + // } + // else + // core_option_manager_flush(runloop_core_options); + // + // if (runloop_ctl(RUNLOOP_CTL_IS_GAME_OPTIONS_ACTIVE, NULL)) + // runloop_ctl(RUNLOOP_CTL_UNSET_GAME_OPTIONS_ACTIVE, NULL); + // + // runloop_ctl(RUNLOOP_CTL_CORE_OPTIONS_FREE, NULL); + // } + // break; + case RUNLOOP_CTL_KEY_EVENT_GET: + { + retro_keyboard_event_t **key_event = + (retro_keyboard_event_t**)data; + if (!key_event) + return false; + *key_event = &runloop_key_event; + } + break; + case RUNLOOP_CTL_FRONTEND_KEY_EVENT_GET: + { + retro_keyboard_event_t **key_event = + (retro_keyboard_event_t**)data; + if (!key_event) + return false; + *key_event = &runloop_frontend_key_event; + } + break; + case RUNLOOP_CTL_HTTPSERVER_INIT: +#if defined(HAVE_HTTPSERVER) && defined(HAVE_ZLIB) + httpserver_init(8888); +#endif + break; + case RUNLOOP_CTL_HTTPSERVER_DESTROY: +#if defined(HAVE_HTTPSERVER) && defined(HAVE_ZLIB) + httpserver_destroy(); +#endif + break; + case RUNLOOP_CTL_NONE: + default: + break; + } + + return true; +} + + +/** + * video_driver_frame: + * @data : pointer to data of the video frame. + * @width : width of the video frame. + * @height : height of the video frame. + * @pitch : pitch of the video frame. + * + * Video frame render callback function. + **/ + +extern video_pixel_scaler_t *video_driver_scaler_ptr; +extern bool video_pixel_frame_scale(const void *data, + unsigned width, unsigned height, + size_t pitch); +//extern video_driver_state_t video_driver_state; +void video_driver_frame(const void *data, unsigned width, + unsigned height, size_t pitch) +{ + NAssert(@"Shouldn't be here, or need to impliment"); +// static char video_driver_msg[256]; +// unsigned output_width = 0; +// unsigned output_height = 0; +// unsigned output_pitch = 0; +// const char *msg = NULL; +// settings_t *settings = config_get_ptr(); +// +// runloop_ctl(RUNLOOP_CTL_MSG_QUEUE_PULL, &msg); +// +// if (!video_driver_is_active()) +// return; +// +// if (video_driver_scaler_ptr && +// video_pixel_frame_scale(data, width, height, pitch)) +// { +// data = video_driver_scaler_ptr->scaler_out; +// pitch = video_driver_scaler_ptr->scaler->out_stride; +// } +// +// video_driver_cached_frame_set(data, width, height, pitch); +// +// /* Slightly messy code, +// * but we really need to do processing before blocking on VSync +// * for best possible scheduling. +// */ +// if ( +// ( +// !video_driver_state.filter.filter +// || !settings->video.post_filter_record +// || !data +// || video_driver_has_gpu_record() +// ) +// ) +// recording_dump_frame(data, width, height, pitch); +// +// if (video_driver_frame_filter(data, width, height, pitch, +// &output_width, &output_height, &output_pitch)) +// { +// data = video_driver_state.filter.buffer; +// width = output_width; +// height = output_height; +// pitch = output_pitch; +// } +// +// video_driver_msg[0] = '\0'; +// if (msg) +// strlcpy(video_driver_msg, msg, sizeof(video_driver_msg)); +// +// if (!current_video || !current_video->frame( +// video_driver_data, data, width, height, +// video_driver_frame_count, +// pitch, video_driver_msg)) +// { +// video_driver_unset_active(); +// } +// +// video_driver_frame_count++; +} + +/** + * init_libretro_sym: + * @type : Type of core to be loaded. + * If CORE_TYPE_DUMMY, will + * load dummy symbols. + * + * Initializes libretro symbols and + * setups environment callback functions. + **/ +void init_libretro_sym(enum rarch_core_type type, struct retro_core_t *current_core) +{ + /* Guarantee that we can do "dirty" casting. + * Every OS that this program supports should pass this. */ + retro_assert(sizeof(void*) == sizeof(void (*)(void))); + + load_symbols(type, current_core); +} + +void retro_set_environment(retro_environment_t cb) +{ + GET_CURRENT_OR_RETURN(); + environ_cb = cb; + current->core->retro_set_environment(cb); +} + +static void core_log(enum retro_log_level level, const char * fmt, ...) { + char buffer[4096] = {0}; + static const char * levelstr[] = { + "dbg", + "inf", + "wrn", + "err" + }; + va_list va; + + va_start(va, fmt); + vsnprintf(buffer, sizeof(buffer), fmt, va); + va_end(va); + + if (level == 0) + return; + + switch (level) { + case 0: + DLOG(@"%s", buffer); + break; + case 1: + ILOG(@"%s", buffer); + break; + case 2: + WLOG(@"%s", buffer); + break; + case 3: + ELOG(@"%s", buffer); + break; + default: + break; + } + + fprintf(stderr, "[%s] %s", levelstr[level], buffer); + fflush(stderr); + + if (level == RETRO_LOG_ERROR) { + exit(EXIT_FAILURE); + } +} +/* + TODO: + make an obj-c version this calls + and make sure to call the subclass and super(this) classses + custom core configs are set with keys, search `desmume_advanced_timing`, `desmume_internal_resolution` for example. + will need to make a list for each core and type those into core options + */ +static bool environment_callback(unsigned cmd, void *data) { + __strong PVLibRetroCore *strongCurrent = _current; + + switch(cmd) { + case RETRO_ENVIRONMENT_SET_ROTATION: + /* const unsigned * -- + * Sets screen rotation of graphics. + * Valid values are 0, 1, 2, 3, which rotates screen by 0, 90, 180, + * 270 degrees counter-clockwise respectively. + */ + ILOG(@"%i", *(const unsigned*)data); + return false; + case RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE: + /* const struct retro_disk_control_callback * -- + * Sets an interface which frontend can use to eject and insert + * disk images. + * This is used for games which consist of multiple images and + * must be manually swapped out by the user (e.g. PSX). + */ +// const struct retro_disk_control_callback* cb = (const struct retro_disk_control_callback*)data +// ILOG(@"%i", cb->data); + return false; + case RETRO_ENVIRONMENT_SET_HW_RENDER: + /* struct retro_hw_render_callback * -- + * Sets an interface to let a libretro core render with + * hardware acceleration. + * Should be called in retro_load_game(). + * If successful, libretro cores will be able to render to a + * frontend-provided framebuffer. + * The size of this framebuffer will be at least as large as + * max_width/max_height provided in get_av_info(). + * If HW rendering is used, pass only RETRO_HW_FRAME_BUFFER_VALID or + * NULL to retro_video_refresh_t. + */ +// struct retro_hw_render_callback* cb = (const struct retro_hw_render_callback*)data; +// ILOG(@"%i", cb); + return true; + case RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE: { + /* struct retro_rumble_interface * -- + * Gets an interface which is used by a libretro core to set + * state of rumble motors in controllers. + * A strong and weak motor is supported, and they can be + * controlled indepedently. + * Should be called from either retro_init() or retro_load_game(). + * Should not be called from retro_set_environment(). + * Returns false if rumble functionality is unavailable. + */ + // TODO: Rumble + return false; + } + case RETRO_ENVIRONMENT_GET_INPUT_DEVICE_CAPABILITIES: { + /* uint64_t * -- + * Gets a bitmask telling which device type are expected to be + * handled properly in a call to retro_input_state_t. + * Devices which are not handled or recognized always return + * 0 in retro_input_state_t. + * Example bitmask: caps = (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG). + * Should only be called in retro_run(). + */ + // RETRO_DEVICE_MOUSE RETRO_DEVICE_LIGHTGUN RETRO_DEVICE_POINTER RETRO_DEVICE_KEYBOARD + uint64_t features = (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG); + if ([strongCurrent conformsToProtocol:@protocol(KeyboardResponder)]) { + features |= 1 << RETRO_DEVICE_KEYBOARD; + } + if ([strongCurrent conformsToProtocol:@protocol(MouseResponder)]) { + features |= 1 << RETRO_DEVICE_MOUSE; + } + if ([strongCurrent conformsToProtocol:@protocol(TouchPadResponder)]) { + features |= 1 << RETRO_DEVICE_POINTER; + } + + *(uint64_t *)data = features; + return true; + } + case RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE: + return false; + /* struct retro_sensor_interface * -- + * Gets access to the sensor interface. + * The purpose of this interface is to allow + * setting state related to sensors such as polling rate, + * enabling/disable it entirely, etc. + * Reading sensor state is done via the normal + * input_state_callback API. + */ + case RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE: + return false; + /* struct retro_camera_callback * -- + * Gets an interface to a video camera driver. + * A libretro core can use this interface to get access to a + * video camera. + * New video frames are delivered in a callback in same + * thread as retro_run(). + * + * GET_CAMERA_INTERFACE should be called in retro_load_game(). + * + * Depending on the camera implementation used, camera frames + * will be delivered as a raw framebuffer, + * or as an OpenGL texture directly. + * + * The core has to tell the frontend here which types of + * buffers can be handled properly. + * An OpenGL texture can only be handled when using a + * libretro GL core (SET_HW_RENDER). + * It is recommended to use a libretro GL core when + * using camera interface. + * + * The camera is not started automatically. The retrieved start/stop + * functions must be used to explicitly + * start and stop the camera driver. + */ + case RETRO_ENVIRONMENT_GET_LOCATION_INTERFACE : + /* struct retro_location_callback * -- + * Gets access to the location interface. + * The purpose of this interface is to be able to retrieve + * location-based information from the host device, + * such as current latitude / longitude. + */ + return false; + case RETRO_ENVIRONMENT_GET_CAN_DUPE: + *(bool *)data = true; + return true; + case RETRO_ENVIRONMENT_GET_LOG_INTERFACE: { + struct retro_log_callback* cb = (struct retro_log_callback*)data; + cb->log = core_log; + return true; + } + case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY : { + NSString *BIOSPath = [strongCurrent BIOSPath]; + CFStringRef cfString = (CFStringRef)CFBridgingRetain(BIOSPath); + + *(const char **)data = CFStringGetCStringPtr(cfString, kCFStringEncodingUTF8); //[BIOSPath UTF8String]; + + DLOG(@"Environ SYSTEM_DIRECTORY: \"%@\".\n", BIOSPath); + return true; + } +// case RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER : { +// const struct retro_framebuffer *fb = +// (const struct retro_framebuffer *)data; +// fb->data = (void *)[strongCurrent videoBuffer]; +// return true; +// } +// // TODO: When/if vulkan support add this +//// case RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE : { +//// struct retro_hw_render_interface* rend = (struct retro_hw_render_interface*)data; +//// +//// return true; +//// } + case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY : { + NSString *appSupportPath = [strongCurrent saveStatesPath]; + + *(const char **)data = [appSupportPath UTF8String]; + DLOG(@"Environ SAVE_DIRECTORY: \"%@\".\n", appSupportPath); + return true; + } + case RETRO_ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY : { + NSString *batterySavesPath = [strongCurrent batterySavesPath]; + + *(const char **)data = [batterySavesPath UTF8String]; + DLOG(@"Environ CONTENT_DIRECTORY: \"%@\".\n", batterySavesPath); + return true; + } + case RETRO_ENVIRONMENT_SET_PIXEL_FORMAT: { + enum retro_pixel_format pix_fmt = + *(const enum retro_pixel_format*)data; + + switch (pix_fmt) + { + case RETRO_PIXEL_FORMAT_0RGB1555: + DLOG(@"Environ SET_PIXEL_FORMAT: 0RGB1555.\n"); + break; + + case RETRO_PIXEL_FORMAT_RGB565: + DLOG(@"Environ SET_PIXEL_FORMAT: RGB565.\n"); + break; + case RETRO_PIXEL_FORMAT_XRGB8888: + DLOG(@"Environ SET_PIXEL_FORMAT: XRGB8888.\n"); + break; + default: + ELOG(@"Environ SET_PIXEL_FORMAT: UNKNOWN.\n"); + return false; + } + + strongCurrent->pix_fmt = pix_fmt; + break; + } + case RETRO_ENVIRONMENT_SET_VARIABLES: + { + // We could potentionally ask the user what options they want + const struct retro_variable* envs = (const struct retro_variable*)data; + int i=0; + const struct retro_variable *currentEnv; + do { + currentEnv = &envs[i]; + ILOG(@"Environ SET_VARIABLES: {\"%s\",\"%s\"}.\n", currentEnv->key, currentEnv->value); + i++; + } while(currentEnv->key != NULL && currentEnv->value != NULL); + + break; + + } + case RETRO_ENVIRONMENT_GET_GAME_INFO_EXT: + { + const struct retro_game_info_ext **game_info_ext = + (const struct retro_game_info_ext **)data; + + if (!game_info_ext) { + ELOG(@"`game_info_ext` is nil.") + return false; + } + + //// struct retro_game_info_ext *game_info = (struct retro_game_info_ext*)data; + // // TODO: Is there a way to pass `retro_game_info_ext` before callbacks? + struct retro_game_info_ext *game_info = malloc(sizeof(struct retro_game_info_ext)); + game_info->persistent_data = true; + + // void *buffer = malloc(romData.length); + // [romData getBytes:buffer length:romData.length]; + // + // game_info->data = buffer; + NSData *romData = [NSData dataWithContentsOfFile:strongCurrent.romPath]; + CFDataRef cfData = (CFDataRef)CFBridgingRetain(romData); + game_info->data = CFDataGetBytePtr(cfData); + game_info->size = romData.length; + + const char *c_full_path = [strongCurrent.romPath cStringUsingEncoding:NSUTF8StringEncoding]; + game_info->full_path = c_full_path; + + const char *c_dir = [[strongCurrent.romPath stringByDeletingLastPathComponent] cStringUsingEncoding:NSUTF8StringEncoding]; + game_info->dir = c_dir; + + const char *c_rom_name = [[strongCurrent.romPath.lastPathComponent stringByDeletingPathExtension] cStringUsingEncoding:NSUTF8StringEncoding]; + game_info->name = c_rom_name; + + const char *c_extension = [[strongCurrent.romPath.lastPathComponent pathExtension] cStringUsingEncoding:NSUTF8StringEncoding]; + game_info->ext = c_extension; + + *game_info_ext = game_info; +// *game_info_ext = &game_info; + return true; + break; + } + case RETRO_ENVIRONMENT_GET_VARIABLE: + { + struct retro_variable *var = (struct retro_variable*)data; + + void *value = [strongCurrent getVariable:var->key]; + var->value = value; + return true; + break; + } + case RETRO_ENVIRONMENT_SET_MINIMUM_AUDIO_LATENCY: + return true; + case RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE: + return false; + case RETRO_ENVIRONMENT_GET_MESSAGE_INTERFACE_VERSION: + { + *((unsigned*)data) = 1; + return true; + } + case RETRO_ENVIRONMENT_SET_MESSAGE: + case RETRO_ENVIRONMENT_SET_MESSAGE_EXT: + { + const char* msg = ((struct retro_message*)data)->msg; + ILOG(@"%s", msg); + return true; + } + case RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO: + { + /* const struct retro_system_av_info * -- + * Sets a new av_info structure. This can only be called from + * within retro_run(). + * This should *only* be used if the core is completely altering the + * internal resolutions, aspect ratios, timings, sampling rate, etc. + * Calling this can require a full reinitialization of video/audio + * drivers in the frontend, + * + * so it is important to call it very sparingly, and usually only with + * the users explicit consent. + * An eventual driver reinitialize will happen so that video and + * audio callbacks + * happening after this call within the same retro_run() call will + * target the newly initialized driver. + * + * This callback makes it possible to support configurable resolutions + * in games, which can be useful to + * avoid setting the "worst case" in max_width/max_height. + * + * ***HIGHLY RECOMMENDED*** Do not call this callback every time + * resolution changes in an emulator core if it's + * expected to be a temporary change, for the reasons of possible + * driver reinitialization. + * This call is not a free pass for not trying to provide + * correct values in retro_get_system_av_info(). If you need to change + * things like aspect ratio or nominal width/height, + * use RETRO_ENVIRONMENT_SET_GEOMETRY, which is a softer variant + * of SET_SYSTEM_AV_INFO. + * + * If this returns false, the frontend does not acknowledge a + * changed av_info struct. + */ + struct retro_system_av_info info = *(const struct retro_system_av_info*)data; + strongCurrent->av_info = info; + ILOG(@"%s", info.geometry.max_width, info.geometry.max_height, info.geometry.base_width, info.geometry.base_height, info.geometry.aspect_ratio, info.timing.sample_rate, info.timing.fps); + return true; + } + default : { + DLOG(@"Environ UNSUPPORTED (#%u).\n", cmd); + return false; + } + } + + strongCurrent = nil; + + return true; +} + +@import Darwin.POSIX; + +static void load_dynamic_core(void) +{ + const char* corepath = config_get_active_core_path(); + + ILOG(@"Loading dynamic libretro core from: \"%s\"\n", + corepath); + lib_handle = dylib_load(corepath); + + // function_t sym = dylib_proc(lib_handle, "retro_init"); + + // if (sym) + // { + // /* Try to verify that -lretro was not linked in from other modules + // * since loading it dynamically and with -l will fail hard. */ + // ELOG(@"Serious problem. RetroArch wants to load libretro cores" + // "dyamically, but it is already linked.\n"); + // ELOG(@"This could happen if other modules RetroArch depends on " + // "link against libretro directly.\n"); + // ELOG(@"Proceeding could cause a crash. Aborting ...\n"); + // retroarch_fail(1, "init_libretro_sym()"); + // } + // + // if (string_is_empty(config_get_active_core_path())) + // { + // ELOG(@"RetroArch is built for dynamic libretro cores, but " + // "libretro_path is not set. Cannot continue.\n"); + // retroarch_fail(1, "init_libretro_sym()"); + // } + // + /* Need to use absolute path for this setting. It can be + * saved to content history, and a relative path would + * break in that scenario. */ + // path_resolve_realpath( + // config_get_active_core_path_ptr(), + // config_get_active_core_path_size()); + // + // ILOG(@"Loading dynamic libretro core from: \"%s\"\n", + // config_get_active_core_path()); + // lib_handle = dylib_load(config_get_active_core_path()); + if (!lib_handle) + { + ELOG(@"Failed to open libretro core: \"%s\"\n", + config_get_active_core_path()); + ELOG(@"Error(s): %s\n", dylib_error()); + retroarch_fail(1, "load_dynamic()"); + } +} + +/** + * load_symbols: + * @type : Type of core to be loaded. + * If CORE_TYPE_DUMMY, will + * load dummy symbols. + * + * Setup libretro callback symbols. + **/ +static void load_symbols(enum rarch_core_type type, struct retro_core_t *current_core) +{ + + switch (type) + { + case CORE_TYPE_PLAIN: +#ifdef HAVE_DYNAMIC + load_dynamic_core(); +#endif + ILOG(@"type:%x, current_core: %x, lib_handle: %x", type, current_core, lib_handle); + + SYMBOL(retro_init); + SYMBOL(retro_deinit); + + SYMBOL(retro_api_version); + SYMBOL(retro_get_system_info); + SYMBOL(retro_get_system_av_info); + + SYMBOL(retro_set_environment); + SYMBOL(retro_set_video_refresh); + SYMBOL(retro_set_audio_sample); + SYMBOL(retro_set_audio_sample_batch); + SYMBOL(retro_set_input_poll); + SYMBOL(retro_set_input_state); + + SYMBOL(retro_set_controller_port_device); + + SYMBOL(retro_reset); + SYMBOL(retro_run); + + SYMBOL(retro_serialize_size); + SYMBOL(retro_serialize); + SYMBOL(retro_unserialize); + + SYMBOL(retro_cheat_reset); + SYMBOL(retro_cheat_set); + + SYMBOL(retro_load_game); + SYMBOL(retro_load_game_special); + + SYMBOL(retro_unload_game); + SYMBOL(retro_get_region); + SYMBOL(retro_get_memory_data); + SYMBOL(retro_get_memory_size); + break; + case CORE_TYPE_DUMMY: + SYMBOL_DUMMY(retro_init); + SYMBOL_DUMMY(retro_deinit); + + SYMBOL_DUMMY(retro_api_version); + SYMBOL_DUMMY(retro_get_system_info); + SYMBOL_DUMMY(retro_get_system_av_info); + + SYMBOL_DUMMY(retro_set_environment); + SYMBOL_DUMMY(retro_set_video_refresh); + SYMBOL_DUMMY(retro_set_audio_sample); + SYMBOL_DUMMY(retro_set_audio_sample_batch); + SYMBOL_DUMMY(retro_set_input_poll); + SYMBOL_DUMMY(retro_set_input_state); + + SYMBOL_DUMMY(retro_set_controller_port_device); + + SYMBOL_DUMMY(retro_reset); + SYMBOL_DUMMY(retro_run); + + SYMBOL_DUMMY(retro_serialize_size); + SYMBOL_DUMMY(retro_serialize); + SYMBOL_DUMMY(retro_unserialize); + + SYMBOL_DUMMY(retro_cheat_reset); + SYMBOL_DUMMY(retro_cheat_set); + + SYMBOL_DUMMY(retro_load_game); + SYMBOL_DUMMY(retro_load_game_special); + + SYMBOL_DUMMY(retro_unload_game); + SYMBOL_DUMMY(retro_get_region); + SYMBOL_DUMMY(retro_get_memory_data); + SYMBOL_DUMMY(retro_get_memory_size); + break; + case CORE_TYPE_FFMPEG: +#ifdef HAVE_FFMPEG + SYMBOL_FFMPEG(retro_init); + SYMBOL_FFMPEG(retro_deinit); + + SYMBOL_FFMPEG(retro_api_version); + SYMBOL_FFMPEG(retro_get_system_info); + SYMBOL_FFMPEG(retro_get_system_av_info); + + SYMBOL_FFMPEG(retro_set_environment); + SYMBOL_FFMPEG(retro_set_video_refresh); + SYMBOL_FFMPEG(retro_set_audio_sample); + SYMBOL_FFMPEG(retro_set_audio_sample_batch); + SYMBOL_FFMPEG(retro_set_input_poll); + SYMBOL_FFMPEG(retro_set_input_state); + + SYMBOL_FFMPEG(retro_set_controller_port_device); + + SYMBOL_FFMPEG(retro_reset); + SYMBOL_FFMPEG(retro_run); + + SYMBOL_FFMPEG(retro_serialize_size); + SYMBOL_FFMPEG(retro_serialize); + SYMBOL_FFMPEG(retro_unserialize); + + SYMBOL_FFMPEG(retro_cheat_reset); + SYMBOL_FFMPEG(retro_cheat_set); + + SYMBOL_FFMPEG(retro_load_game); + SYMBOL_FFMPEG(retro_load_game_special); + + SYMBOL_FFMPEG(retro_unload_game); + SYMBOL_FFMPEG(retro_get_region); + SYMBOL_FFMPEG(retro_get_memory_data); + SYMBOL_FFMPEG(retro_get_memory_size); +#endif + break; + case CORE_TYPE_IMAGEVIEWER: +#ifdef HAVE_IMAGEVIEWER + SYMBOL_IMAGEVIEWER(retro_init); + SYMBOL_IMAGEVIEWER(retro_deinit); + + SYMBOL_IMAGEVIEWER(retro_api_version); + SYMBOL_IMAGEVIEWER(retro_get_system_info); + SYMBOL_IMAGEVIEWER(retro_get_system_av_info); + + SYMBOL_IMAGEVIEWER(retro_set_environment); + SYMBOL_IMAGEVIEWER(retro_set_video_refresh); + SYMBOL_IMAGEVIEWER(retro_set_audio_sample); + SYMBOL_IMAGEVIEWER(retro_set_audio_sample_batch); + SYMBOL_IMAGEVIEWER(retro_set_input_poll); + SYMBOL_IMAGEVIEWER(retro_set_input_state); + + SYMBOL_IMAGEVIEWER(retro_set_controller_port_device); + + SYMBOL_IMAGEVIEWER(retro_reset); + SYMBOL_IMAGEVIEWER(retro_run); + + SYMBOL_IMAGEVIEWER(retro_serialize_size); + SYMBOL_IMAGEVIEWER(retro_serialize); + SYMBOL_IMAGEVIEWER(retro_unserialize); + + SYMBOL_IMAGEVIEWER(retro_cheat_reset); + SYMBOL_IMAGEVIEWER(retro_cheat_set); + + SYMBOL_IMAGEVIEWER(retro_load_game); + SYMBOL_IMAGEVIEWER(retro_load_game_special); + + SYMBOL_IMAGEVIEWER(retro_unload_game); + SYMBOL_IMAGEVIEWER(retro_get_region); + SYMBOL_IMAGEVIEWER(retro_get_memory_data); + SYMBOL_IMAGEVIEWER(retro_get_memory_size); +#endif + break; + case CORE_TYPE_NETRETROPAD: +#if defined(HAVE_NETWORKGAMEPAD) && defined(HAVE_NETPLAY) + SYMBOL_NETRETROPAD(retro_init); + SYMBOL_NETRETROPAD(retro_deinit); + + SYMBOL_NETRETROPAD(retro_api_version); + SYMBOL_NETRETROPAD(retro_get_system_info); + SYMBOL_NETRETROPAD(retro_get_system_av_info); + + SYMBOL_NETRETROPAD(retro_set_environment); + SYMBOL_NETRETROPAD(retro_set_video_refresh); + SYMBOL_NETRETROPAD(retro_set_audio_sample); + SYMBOL_NETRETROPAD(retro_set_audio_sample_batch); + SYMBOL_NETRETROPAD(retro_set_input_poll); + SYMBOL_NETRETROPAD(retro_set_input_state); + + SYMBOL_NETRETROPAD(retro_set_controller_port_device); + + SYMBOL_NETRETROPAD(retro_reset); + SYMBOL_NETRETROPAD(retro_run); + + SYMBOL_NETRETROPAD(retro_serialize_size); + SYMBOL_NETRETROPAD(retro_serialize); + SYMBOL_NETRETROPAD(retro_unserialize); + + SYMBOL_NETRETROPAD(retro_cheat_reset); + SYMBOL_NETRETROPAD(retro_cheat_set); + + SYMBOL_NETRETROPAD(retro_load_game); + SYMBOL_NETRETROPAD(retro_load_game_special); + + SYMBOL_NETRETROPAD(retro_unload_game); + SYMBOL_NETRETROPAD(retro_get_region); + SYMBOL_NETRETROPAD(retro_get_memory_data); + SYMBOL_NETRETROPAD(retro_get_memory_size); +#endif + break; + case CORE_TYPE_VIDEO_PROCESSOR: +#if defined(HAVE_VIDEO_PROCESSOR) + SYMBOL_VIDEOPROCESSOR(retro_init); + SYMBOL_VIDEOPROCESSOR(retro_deinit); + + SYMBOL_VIDEOPROCESSOR(retro_api_version); + SYMBOL_VIDEOPROCESSOR(retro_get_system_info); + SYMBOL_VIDEOPROCESSOR(retro_get_system_av_info); + + SYMBOL_VIDEOPROCESSOR(retro_set_environment); + SYMBOL_VIDEOPROCESSOR(retro_set_video_refresh); + SYMBOL_VIDEOPROCESSOR(retro_set_audio_sample); + SYMBOL_VIDEOPROCESSOR(retro_set_audio_sample_batch); + SYMBOL_VIDEOPROCESSOR(retro_set_input_poll); + SYMBOL_VIDEOPROCESSOR(retro_set_input_state); + + SYMBOL_VIDEOPROCESSOR(retro_set_controller_port_device); + + SYMBOL_VIDEOPROCESSOR(retro_reset); + SYMBOL_VIDEOPROCESSOR(retro_run); + + SYMBOL_VIDEOPROCESSOR(retro_serialize_size); + SYMBOL_VIDEOPROCESSOR(retro_serialize); + SYMBOL_VIDEOPROCESSOR(retro_unserialize); + + SYMBOL_VIDEOPROCESSOR(retro_cheat_reset); + SYMBOL_VIDEOPROCESSOR(retro_cheat_set); + + SYMBOL_VIDEOPROCESSOR(retro_load_game); + SYMBOL_VIDEOPROCESSOR(retro_load_game_special); + + SYMBOL_VIDEOPROCESSOR(retro_unload_game); + SYMBOL_VIDEOPROCESSOR(retro_get_region); + SYMBOL_VIDEOPROCESSOR(retro_get_memory_data); + SYMBOL_VIDEOPROCESSOR(retro_get_memory_size); +#endif + break; + } +} +#define PITCH_SHIFT 2 + +@implementation PVLibRetroCore +static void RETRO_CALLCONV audio_callback(int16_t left, int16_t right) +{ + __strong PVLibRetroCore *strongCurrent = _current; + + [[strongCurrent ringBufferAtIndex:0] write:&left maxLength:2]; + [[strongCurrent ringBufferAtIndex:0] write:&right maxLength:2]; + + strongCurrent = nil; +} + +static size_t RETRO_CALLCONV audio_batch_callback(const int16_t *data, size_t frames) +{ + __strong PVLibRetroCore *strongCurrent = _current; + + [[strongCurrent ringBufferAtIndex:0] write:data maxLength:frames << 2]; + + strongCurrent = nil; + + return frames; +} + +static void RETRO_CALLCONV video_callback(const void *data, unsigned width, unsigned height, size_t pitch) +{ +// if (!video_driver_is_active()) +// return; + + __strong PVLibRetroCore *strongCurrent = _current; + + static dispatch_queue_t serialQueue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INTERACTIVE, 0); + serialQueue = dispatch_queue_create("com.provenance.video", queueAttributes); + + DLOG(@"vid: width: %i height: %i, pitch: %zu. _videoWidth: %f, _videoHeight: %f\n", width, height, pitch, strongCurrent.videoWidth, strongCurrent.videoHeight); + }); + // 512 + uint16_t pitch_shift = strongCurrent->pitch_shift; //PITCH_SHIFT; //pitch % 256; // PITCH_SHIFT + dispatch_apply(height, serialQueue, ^(size_t y){ + size_t shifted_pitch = pitch >> pitch_shift; //pitch is in bytes not pixels + size_t offset = y * shifted_pitch; + const uint32_t *src = (uint16_t*)data + offset; + uint32_t *dst = strongCurrent->videoBuffer + y * width; + + memcpy(dst, src, sizeof(uint32_t)*width); + }); + + strongCurrent = nil; +} + +static void RETRO_CALLCONV input_poll_callback(void) +{ + __strong PVLibRetroCore *strongCurrent = _current; + [strongCurrent pollControllers]; + //DLOG(@"poll callback"); +} + +static int16_t RETRO_CALLCONV input_state_callback(unsigned port, unsigned device, unsigned index, unsigned _id) +{ + //DLOG(@"polled input: port: %d device: %d id: %d", port, device, id); + + __strong PVLibRetroCore *strongCurrent = _current; + int16_t value = 0; + + if (port == 0 & device == RETRO_DEVICE_JOYPAD) + { + if (strongCurrent.controller1) + { + value = [strongCurrent controllerValueForButtonID:_id forPlayer:port]; + } + + if (value == 0) + { + value = strongCurrent->_pad[0][_id]; + } + } + else if(port == 1 & device == RETRO_DEVICE_JOYPAD) + { + if (strongCurrent.controller2) + { + value = [strongCurrent controllerValueForButtonID:_id forPlayer:port]; + } + + if (value == 0) + { + value = strongCurrent->_pad[1][_id]; + } + } + + strongCurrent = nil; + + return value; +} + +- (instancetype)init { + if((self = [super init])) { + pitch_shift = PITCH_SHIFT; + _current = self; + const char* path = [[NSBundle bundleForClass:[self class]].bundlePath fileSystemRepresentation]; + config_set_active_core_path(path); + // load_dynamic_core(); + core = malloc(sizeof(retro_core_t)); + init_libretro_sym(CORE_TYPE_PLAIN, core); + retro_set_environment(environment_callback); + + memset(_pad, 0, sizeof(int16_t) * 24); + +// struct retro_system_info info; +// core_get_info(&info); +// std::cout << "Loaded core " << info.library_name << " version " << info.library_version << std::endl; +// std::cout << "Core needs fullpath " << info.need_fullpath << std::endl; +// std::cout << "Running for " << maxframes << " frames with frame timeout of "; +// std::cout << frametimeout << " seconds" << std::endl; + + // libretro_get_system_info(path, + // libretro_get_system_info_lib + + videoBufferA = (uint32_t *)malloc(2560 * 2560 * sizeof(uint32_t)); + videoBufferB = (uint32_t *)malloc(2560 * 2560 * sizeof(uint32_t)); + videoBuffer = videoBufferA; + } + + return self; +} + +- (void)dealloc { + core_unload(); +} + +-(void)coreInit { + core->retro_init(); + + core->retro_set_audio_sample(audio_callback); + core->retro_set_audio_sample_batch(audio_batch_callback); + core->retro_set_video_refresh(video_callback); + core->retro_set_input_poll(input_poll_callback); + core->retro_set_input_state(input_state_callback); +} + +- (BOOL)loadFileAtPath:(NSString *)path error:(NSError**)error { + self.romPath = path; + NSURL *batterySavesDirectory = [NSURL fileURLWithPath:[self batterySavesPath]]; + NSError *localError; + BOOL status = [[NSFileManager defaultManager] createDirectoryAtURL:batterySavesDirectory + withIntermediateDirectories:YES + attributes:nil + error:&localError]; + if(!status) { + *error = localError; + return NO; + } + + [self coreInit]; + + struct retro_game_info info; + info.data = [NSData dataWithContentsOfFile:path].bytes; + info.path = [path fileSystemRepresentation]; + // TODO:: retro_load_game +// BOOL loaded = core->retro_load_game(&info); // retro_load_game(&info); + + struct retro_ctx_load_content_info info2; + info2.info = &info; + info2.content = nil; + info2.special = nil; + BOOL loaded = core_load_game(&info2); + + if(loaded) { + core->retro_reset(); + } + + self->loaded = loaded; + + return loaded; +} + +- (void)executeFrame { + [self executeFrameSkippingFrame:NO]; +} + +- (void)executeFrameSkippingFrame:(BOOL)skip { + switch (core_poll_type) + { + case POLL_TYPE_EARLY: + input_poll(); + break; + case POLL_TYPE_LATE: + core_input_polled = false; + break; + } + if (core->retro_run) + core->retro_run(); + if (core_poll_type == POLL_TYPE_LATE && !core_input_polled) + input_poll(); + // return true; + // retro_run(); + // for (unsigned y = 0; y < HEIGHT; y++) + // for (unsigned x = 0; x < WIDTH; x++, pXBuf++) + // videoBuffer[y * WIDTH + x] = palette[*pXBuf]; + // + // for (int i = 0; i < soundSize; i++) + // soundBuffer[i] = (soundBuffer[i] << 16) | (soundBuffer[i] & 0xffff); + // + // [[self ringBufferAtIndex:0] write:soundBuffer maxLength:soundSize << 2]; + +} + +- (void)resetEmulation { + core->retro_reset(); +} + +- (void)stopEmulation { + [super stopEmulation]; + + core->retro_unload_game(); + +// if (self->loaded) { +// core->retro_reset(); +// } +// core->retro_deinit(); +} + +- (NSTimeInterval)frameInterval { + NSTimeInterval fps = av_info.timing.fps ?: 60; + VLOG(@"%f", fps); + return fps; +} + +# pragma mark - Video +- (void)swapBuffers { + if (videoBuffer == videoBufferA) { + videoBuffer = videoBufferB; + } else { + videoBuffer = videoBufferA; + } +} + +-(BOOL)isDoubleBuffered { + return YES; +} + +- (CGFloat)videoWidth { + return av_info.geometry.base_width; +} + +- (CGFloat)videoHeight { + return av_info.geometry.base_height; +} + +- (const void *)videoBuffer { + return videoBuffer; +} + +- (CGRect)screenRect { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + unsigned height = av_info.geometry.base_height; + unsigned width = av_info.geometry.base_width; + +// unsigned height = _videoHeight; +// unsigned width = _videoWidth; + + return CGRectMake(0, 0, width, height); +} + +- (CGSize)aspectSize { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + float aspect_ratio = av_info.geometry.aspect_ratio; + // unsigned height = av_info.geometry.max_height; + // unsigned width = av_info.geometry.max_width; + if (aspect_ratio == 1.0) { + return CGSizeMake(1, 1); + } else if (aspect_ratio < 1.2 && aspect_ratio > 1.1) { + return CGSizeMake(10, 9); + } else if (aspect_ratio < 1.26 && aspect_ratio > 1.24) { + return CGSizeMake(5, 4); + } else if (aspect_ratio < 1.4 && aspect_ratio > 1.3) { + return CGSizeMake(4, 3); + } else if (aspect_ratio < 1.6 && aspect_ratio > 1.4) { + return CGSizeMake(3, 2); + } else if (aspect_ratio < 1.7 && aspect_ratio > 1.6) { + return CGSizeMake(16, 9); + } else { + return CGSizeMake(4, 3); + } +} + +- (CGSize)bufferSize { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + unsigned height = av_info.geometry.max_height; + unsigned width = av_info.geometry.max_width; + + return CGSizeMake(width, height); +} + +- (GLenum)pixelFormat { + switch (pix_fmt) + { + case RETRO_PIXEL_FORMAT_0RGB1555: + return GL_RGB5_A1; // GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT +#if !TARGET_OS_MAC + case RETRO_PIXEL_FORMAT_RGB565: + return GL_RGB565; +#else + case RETRO_PIXEL_FORMAT_RGB565: + return GL_UNSIGNED_SHORT_5_6_5; +#endif + case RETRO_PIXEL_FORMAT_XRGB8888: + return GL_RGBA8; // GL_RGBA8 + default: + return GL_RGBA; + } +} + +- (GLenum)internalPixelFormat { + switch (pix_fmt) + { + case RETRO_PIXEL_FORMAT_0RGB1555: + return GL_RGB5_A1; +#if !TARGET_OS_MAC + case RETRO_PIXEL_FORMAT_RGB565: + return GL_RGB565; +#else + case RETRO_PIXEL_FORMAT_RGB565: + return GL_UNSIGNED_SHORT_5_6_5; +#endif + case RETRO_PIXEL_FORMAT_XRGB8888: + return GL_RGBA8; + default: + return GL_RGBA; + } + + return GL_RGBA; +} + +- (GLenum)pixelType { + // GL_UNSIGNED_SHORT_5_6_5 + // GL_UNSIGNED_BYTE + return GL_UNSIGNED_SHORT; +} + +# pragma mark - Audio + +- (double)audioSampleRate { + static struct retro_system_av_info av_info; + core->retro_get_system_av_info(&av_info); + double sample_rate = av_info.timing.sample_rate; + return sample_rate ?: 44100; +} + +- (NSUInteger)channelCount { + return 2; +} + +@end + +# pragma mark - Options +@implementation PVLibRetroCore (Options) +- (void *)getVariable:(const char *)variable { + WLOG(@"This should be done in sub class: %s", variable); + return NULL; +} +@end + +# pragma mark - Controls +@implementation PVLibRetroCore (Controls) +- (void)pollControllers { + // TODO: This should warn or something if not in subclass + for (NSInteger playerIndex = 0; playerIndex < 2; playerIndex++) { + GCController *controller = nil; + + if (self.controller1 && playerIndex == 0) { + controller = self.controller1; + } + else if (self.controller2 && playerIndex == 1) + { + controller = self.controller2; + } + + if ([controller extendedGamepad]) { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + /* TODO: To support paddles we would need to circumvent libRetro's emulation of analog controls or drop libRetro and talk to stella directly like OpenEMU did */ + + // D-Pad + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = (dpad.up.isPressed || gamepad.leftThumbstick.up.isPressed); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = (dpad.down.isPressed || gamepad.leftThumbstick.down.isPressed); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = (dpad.left.isPressed || gamepad.leftThumbstick.left.isPressed); + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = (dpad.right.isPressed || gamepad.leftThumbstick.right.isPressed); + + // #688, use second thumb to control second player input if no controller active + // some games used both joysticks for 1 player optionally + if(playerIndex == 0 && self.controller2 == nil) { + _pad[1][RETRO_DEVICE_ID_JOYPAD_UP] = gamepad.rightThumbstick.up.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_DOWN] = gamepad.rightThumbstick.down.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_LEFT] = gamepad.rightThumbstick.left.isPressed; + _pad[1][RETRO_DEVICE_ID_JOYPAD_RIGHT] = gamepad.rightThumbstick.right.isPressed; + } + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed || gamepad.rightTrigger.isPressed; + // Booster + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed || gamepad.leftTrigger.isPressed; + + // Reset + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; + + // Select + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; + + /* + #define RETRO_DEVICE_ID_JOYPAD_B 0 == JoystickZeroFire1 + #define RETRO_DEVICE_ID_JOYPAD_Y 1 == Unmapped + #define RETRO_DEVICE_ID_JOYPAD_SELECT 2 == ConsoleSelect + #define RETRO_DEVICE_ID_JOYPAD_START 3 == ConsoleReset + #define RETRO_DEVICE_ID_JOYPAD_UP 4 == Up + #define RETRO_DEVICE_ID_JOYPAD_DOWN 5 == Down + #define RETRO_DEVICE_ID_JOYPAD_LEFT 6 == Left + #define RETRO_DEVICE_ID_JOYPAD_RIGHT 7 == Right + #define RETRO_DEVICE_ID_JOYPAD_A 8 == JoystickZeroFire2 + #define RETRO_DEVICE_ID_JOYPAD_X 9 == JoystickZeroFire3 + #define RETRO_DEVICE_ID_JOYPAD_L 10 == ConsoleLeftDiffA + #define RETRO_DEVICE_ID_JOYPAD_R 11 == ConsoleRightDiffA + #define RETRO_DEVICE_ID_JOYPAD_L2 12 == ConsoleLeftDiffB + #define RETRO_DEVICE_ID_JOYPAD_R2 13 == ConsoleRightDiffB + #define RETRO_DEVICE_ID_JOYPAD_L3 14 == ConsoleColor + #define RETRO_DEVICE_ID_JOYPAD_R3 15 == ConsoleBlackWhite + */ + } else if ([controller gamepad]) { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + // D-Pad + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.isPressed; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.isPressed; + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonA.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonB.isPressed; + // Booster + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_X] = gamepad.buttonX.isPressed || gamepad.buttonY.isPressed; + + // Reset + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_START] = gamepad.rightShoulder.isPressed; + + // Select + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_SELECT] = gamepad.leftShoulder.isPressed; + + } +#if TARGET_OS_TV + else if ([controller microGamepad]) { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_UP] = dpad.up.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_DOWN] = dpad.down.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_LEFT] = dpad.left.value > 0.5; + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_RIGHT] = dpad.right.value > 0.5; + + // Fire + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_B] = gamepad.buttonX.isPressed; + // Trigger + _pad[playerIndex][RETRO_DEVICE_ID_JOYPAD_A] = gamepad.buttonA.isPressed; + } +#endif + } +} + +- (NSInteger)controllerValueForButtonID:(unsigned)buttonID forPlayer:(NSInteger)player +{ + // TODO: This should warn or something if not in subclass + + GCController *controller = nil; + + if (player == 0) + { + controller = self.controller1; + } + else + { + controller = self.controller2; + } + + if ([controller extendedGamepad]) + { + GCExtendedGamepad *gamepad = [controller extendedGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + if (PVSettingsModel.shared.use8BitdoM30) // Maps the Sega Controls to the 8BitDo M30 if enabled in Settings / Controller + { switch (buttonID) { + case PVSega32XButtonUp: + return [[[gamepad leftThumbstick] up] value] > 0.1; + case PVSega32XButtonDown: + return [[[gamepad leftThumbstick] down] value] > 0.1; + case PVSega32XButtonLeft: + return [[[gamepad leftThumbstick] left] value] > 0.1; + case PVSega32XButtonRight: + return [[[gamepad leftThumbstick] right] value] > 0.1; + case PVSega32XButtonA: + return [[gamepad buttonA] isPressed]; + case PVSega32XButtonB: + return [[gamepad buttonB] isPressed]; + case PVSega32XButtonC: + return [[gamepad rightShoulder] isPressed]; + case PVSega32XButtonX: + return [[gamepad buttonX] isPressed]; + case PVSega32XButtonY: + return [[gamepad buttonY] isPressed]; + case PVSega32XButtonZ: + return [[gamepad leftShoulder] isPressed]; + case PVSega32XButtonMode: + return [[gamepad leftTrigger] isPressed]; + case PVSega32XButtonStart: +#if TARGET_OS_TV + return [[gamepad buttonMenu] isPressed]?:[[gamepad rightTrigger] isPressed]; +#else + return [[gamepad rightTrigger] isPressed]; +#endif + default: + break; + }} + { switch (buttonID) { + case PVSega32XButtonUp: + return [[dpad up] isPressed]?:[[[gamepad leftThumbstick] up] isPressed]; + case PVSega32XButtonDown: + return [[dpad down] isPressed]?:[[[gamepad leftThumbstick] down] isPressed]; + case PVSega32XButtonLeft: + return [[dpad left] isPressed]?:[[[gamepad leftThumbstick] left] isPressed]; + case PVSega32XButtonRight: + return [[dpad right] isPressed]?:[[[gamepad leftThumbstick] right] isPressed]; + case PVSega32XButtonA: + return [[gamepad buttonX] isPressed]; + case PVSega32XButtonB: + return [[gamepad buttonA] isPressed]; + case PVSega32XButtonC: + return [[gamepad buttonB] isPressed]; + case PVSega32XButtonX: + return [[gamepad buttonY] isPressed]; + case PVSega32XButtonY: + return [[gamepad leftShoulder] isPressed]; + case PVSega32XButtonZ: + return [[gamepad rightShoulder] isPressed]; + case PVSega32XButtonStart: + return [[gamepad rightTrigger] isPressed]; + case PVSega32XButtonMode: + return [[gamepad leftTrigger] isPressed]; + default: + break; + }} + } + else if ([controller gamepad]) + { + GCGamepad *gamepad = [controller gamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSega32XButtonUp: + return [[dpad up] isPressed]; + case PVSega32XButtonDown: + return [[dpad down] isPressed]; + case PVSega32XButtonLeft: + return [[dpad left] isPressed]; + case PVSega32XButtonRight: + return [[dpad right] isPressed]; + case PVSega32XButtonA: + return [[gamepad buttonY] isPressed]; + case PVSega32XButtonB: + return [[gamepad buttonX] isPressed]; + case PVSega32XButtonC: + return [[gamepad buttonA] isPressed]; + case PVSega32XButtonX: + return [[gamepad buttonB] isPressed]; + case PVSega32XButtonY: + return [[gamepad leftShoulder] isPressed]; + case PVSega32XButtonZ: + return [[gamepad rightShoulder] isPressed]; + default: + break; + } + } +#if TARGET_OS_TV + else if ([controller microGamepad]) + { + GCMicroGamepad *gamepad = [controller microGamepad]; + GCControllerDirectionPad *dpad = [gamepad dpad]; + switch (buttonID) { + case PVSega32XButtonUp: + return [[dpad up] value] > 0.5; + break; + case PVSega32XButtonDown: + return [[dpad down] value] > 0.5; + break; + case PVSega32XButtonLeft: + return [[dpad left] value] > 0.5; + break; + case PVSega32XButtonRight: + return [[dpad right] value] > 0.5; + break; + case PVSega32XButtonA: + return [[gamepad buttonX] isPressed]; + break; + case PVSega32XButtonB: + return [[gamepad buttonA] isPressed]; + break; + default: + break; + } + } +#endif + + return 0; +} + +@end + +# pragma mark - Save States +@implementation PVLibRetroCore (Saves) + +#pragma mark Properties +-(BOOL)supportsSaveStates { + return core->retro_get_memory_size(0) != 0 && core->retro_get_memory_data(0) != NULL; +} + +#pragma mark Methods +- (BOOL)saveStateToFileAtPath:(NSString *)fileName error:(NSError**)error { + @synchronized(self) { + // Save + // bool retro_serialize_all(DBPArchive& ar, bool unlock_thread) + return YES; + } +} + +- (BOOL)loadStateFromFileAtPath:(NSString *)fileName error:(NSError**)error { + @synchronized(self) { + BOOL success = NO; // bool retro_unserialize(const void *data, size_t size) + if (!success) { + if(error != NULL) { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: @"Failed to save state.", + NSLocalizedFailureReasonErrorKey: @"Core failed to load save state.", + NSLocalizedRecoverySuggestionErrorKey: @"" + }; + + NSError *newError = [NSError errorWithDomain:PVEmulatorCoreErrorDomain + code:PVEmulatorCoreErrorCodeCouldNotLoadState + userInfo:userInfo]; + + *error = newError; + } + } + return success; + } +} +// +//- (BOOL)saveStateToFileAtPath:(NSString *)fileName { +// return NO; +//} +// +//- (void)saveStateToFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { +// block(NO, nil); +//} +// +//- (BOOL)loadStateFromFileAtPath:(NSString *)fileName { +// return NO; +//} +// +//- (void)loadStateFromFileAtPath:(NSString *)fileName completionHandler:(void (^)(BOOL, NSError *))block { +// block(NO, nil); +//} +// +@end + +@implementation PVLibRetroCore (Cheats) + +- (void)setCheat:(NSString *)code setType:(NSString *)type setEnabled:(BOOL)enabled { + unsigned index = 0; + const char* cCode = [code cStringUsingEncoding:NSUTF8StringEncoding]; + core->retro_cheat_set(index, enabled, cCode); + // void retro_cheat_reset(void) { } + // void retro_cheat_set(unsigned index, bool enabled, const char *code) { (void)index; (void)enabled; (void)code; } +} + +@end + +unsigned retro_api_version(void) +{ + return RETRO_API_VERSION; +} + +#pragma clang diagnostic pop diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroGLESCore.h b/PVSupport/Sources/PVLibRetro/PVLibRetroGLESCore.h new file mode 100644 index 0000000000..ac55dcc0a0 --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroGLESCore.h @@ -0,0 +1,34 @@ +// +// PVLibRetroGLESCore.h +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import + +#import +#import +#import +#import + +//#pragma clang diagnostic push +//#pragma clang diagnostic error "-Wall" + +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +#import +#import +#import +#import +#else +#import +#import +#endif + +__attribute__((weak_import)) +@interface PVLibRetroGLESCore : PVLibRetroCore + +@end + +#pragma clang diagnostic pop diff --git a/PVSupport/Sources/PVLibRetro/PVLibRetroGLESCore.m b/PVSupport/Sources/PVLibRetro/PVLibRetroGLESCore.m new file mode 100644 index 0000000000..a4ff1f568d --- /dev/null +++ b/PVSupport/Sources/PVLibRetro/PVLibRetroGLESCore.m @@ -0,0 +1,360 @@ +// +// PVLibretro.m +// PVRetroArch +// +// Created by Joseph Mattiello on 6/15/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +#import +#import "PVLibRetroGLESCore.h" + +#include "dynamic.h" +#include "video_driver.h" + +#import +#include "core.h" +#include "runloop.h" + +#pragma clang diagnostic push +#pragma clang diagnostic error "-Wall" + +bool inside_loop = true; +//static bool first_run = true; +volatile bool has_init = false; + +extern bool core_frame(retro_ctx_frame_info_t *info); +extern bool runloop_ctl(enum runloop_ctl_state state, void *data); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void move_pthread_to_realtime_scheduling_class(pthread_t pthread) +{ + mach_timebase_info_data_t timebase_info; + mach_timebase_info(&timebase_info); + + const uint64_t NANOS_PER_MSEC = 1000000ULL; + double clock2abs = ((double)timebase_info.denom / (double)timebase_info.numer) * NANOS_PER_MSEC; + + thread_time_constraint_policy_data_t policy; + policy.period = 0; + policy.computation = (uint32_t)(5 * clock2abs); // 5 ms of work + policy.constraint = (uint32_t)(10 * clock2abs); + policy.preemptible = FALSE; + + int kr = thread_policy_set(pthread_mach_thread_np(pthread_self()), + THREAD_TIME_CONSTRAINT_POLICY, + (thread_policy_t)&policy, + THREAD_TIME_CONSTRAINT_POLICY_COUNT); + if (kr != KERN_SUCCESS) { + mach_error("thread_policy_set:", kr); + exit(1); + } +} + +void MakeCurrentThreadRealTime() +{ + move_pthread_to_realtime_scheduling_class(pthread_self()); +} + +@interface PVLibRetroGLESCore () +{ + dispatch_semaphore_t glesWaitToBeginFrameSemaphore; + dispatch_semaphore_t coreWaitToEndFrameSemaphore; + dispatch_semaphore_t coreWaitForExitSemaphore; + + dispatch_queue_t _callbackQueue; + NSMutableDictionary *_callbackHandlers; +} +@end + +void input_poll(void); + +void gl_swap() { + GET_CURRENT_OR_RETURN(); + [current swapBuffers]; +} + +@implementation PVLibRetroGLESCore + +- (instancetype)init { + if (self = [super init]) { + glesWaitToBeginFrameSemaphore = dispatch_semaphore_create(0); + coreWaitToEndFrameSemaphore = dispatch_semaphore_create(0); + coreWaitForExitSemaphore = dispatch_semaphore_create(0); + } + return self; +} + +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX +-(EAGLContext*)bestContext { + EAGLContext* context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + self.glesVersion = GLESVersion3; + if (context == nil) + { + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + self.glesVersion = GLESVersion2; + } + + return context; +} +#endif + +//- (BOOL)loadFileAtPath:(NSString *)path error:(NSError * _Nullable __autoreleasing *)error { +//#if !TARGET_OS_MACCATALYST +// EAGLContext* context = [self bestContext]; +// ILOG(@"%i", context.API); +//#endif +// +// return [super loadFileAtPath:path error:error]; +//} + +- (BOOL)rendersToOpenGL { return YES; } +- (BOOL)isDoubleBuffered { return YES; } +- (GLenum)pixelFormat { return GL_UNSIGNED_SHORT_5_6_5; } +- (GLenum)pixelType { return GL_UNSIGNED_BYTE; } +- (GLenum)internalPixelFormat { return GL_RGBA; } +- (GLenum)depthFormat { + // 0, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 + return GL_DEPTH_COMPONENT16; +} +- (const void *)videoBuffer { return NULL; } + +- (dispatch_time_t)frameTime { + float frameTime = 1.0/[self frameInterval]; +// __block BOOL expired = NO; + dispatch_time_t killTime = dispatch_time(DISPATCH_TIME_NOW, frameTime * NSEC_PER_SEC); + return killTime; +} + +- (void)videoInterrupt { +// dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); +// +// dispatch_semaphore_wait(glesWaitToBeginFrameSemaphore, [self frameTime]); +} + +- (void)swapBuffers { + [self.renderDelegate didRenderFrameOnAlternateThread]; +} + +- (void)executeFrameSkippingFrame:(BOOL)skip { +// dispatch_semaphore_signal(glesWaitToBeginFrameSemaphore); +// +// dispatch_semaphore_wait(coreWaitToEndFrameSemaphore, [self frameTime]); +} + +- (void)executeFrame { + [self executeFrameSkippingFrame:NO]; +} + +- (void)setPauseEmulation:(BOOL)flag +{ + [super setPauseEmulation:flag]; + + if (flag) + { + dispatch_semaphore_signal(glesWaitToBeginFrameSemaphore); + [self.frontBufferCondition lock]; + [self.frontBufferCondition signal]; + [self.frontBufferCondition unlock]; + } +} + +- (void)stopEmulation { + has_init = false; + + self->shouldStop = YES; + dispatch_semaphore_signal(glesWaitToBeginFrameSemaphore); + dispatch_semaphore_wait(coreWaitForExitSemaphore, DISPATCH_TIME_FOREVER); + + [self.frontBufferCondition lock]; + [self.frontBufferCondition signal]; + [self.frontBufferCondition unlock]; + + [super stopEmulation]; +} + +- (void)resetEmulation { + [super resetEmulation]; + dispatch_semaphore_signal(glesWaitToBeginFrameSemaphore); + [self.frontBufferCondition lock]; + [self.frontBufferCondition signal]; + [self.frontBufferCondition unlock]; +} + + +- (void)startEmulation { + if(!self.isRunning) { + [super startEmulation]; + [NSThread detachNewThreadSelector:@selector(runGLESRenderThread) toTarget:self withObject:nil]; + } +} + + +void* libPvr_GetRenderTarget() { + return 0; +} + +void* libPvr_GetRenderSurface() { + return 0; + +} + +bool gl_init(void*, void*) { + return true; +} + +bool gles_init() +{ + + if (!gl_init((void*)libPvr_GetRenderTarget(), + (void*)libPvr_GetRenderSurface())) + return false; + +#if defined(GLES) && HOST_OS != OS_DARWIN && !defined(TARGET_NACL32) + #ifdef TARGET_PANDORA + fbdev=open("/dev/fb0", O_RDONLY); + #else + eglSwapInterval(gl.setup.display,1); + #endif +#endif + + //clean up all buffers ... + for (int i=0;i<10;i++) + { + glClearColor(0.f, 0.f, 0.f, 0.f); + glClear(GL_COLOR_BUFFER_BIT); + gl_swap(); + } + + return true; +} + +static bool video_driver_cached_frame(void) +{ + retro_ctx_frame_info_t info; +// void *recording = recording_driver_get_data_ptr(); + + if (runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL)) + return false; /* Maybe return false here for indication of idleness? */ + + /* Cannot allow recording when pushing duped frames. */ +// recording_driver_clear_data_ptr(); + + /* Not 100% safe, since the library might have + * freed the memory, but no known implementations do this. + * It would be really stupid at any rate ... + */ + info.data = NULL; + info.width = video_driver_state.frame_cache.width; + info.height = video_driver_state.frame_cache.height; + info.pitch = video_driver_state.frame_cache.pitch; + + if (video_driver_state.frame_cache.data != RETRO_HW_FRAME_BUFFER_VALID) + info.data = video_driver_state.frame_cache.data; + + core_frame(&info); + +// recording_driver_set_data_ptr(recording); + + return true; +} + +- (void)runGLESRenderThread { + @autoreleasepool + { + [self.renderDelegate startRenderingOnAlternateThread]; +// BOOL success = gles_init(); +// assert(success); +#if !TARGET_OS_MACCATALYST && !TARGET_OS_OSX + EAGLContext* context = [self bestContext]; + ILOG(@"%i", context.API); +#endif + [NSThread detachNewThreadSelector:@selector(runGLESEmuThread) toTarget:self withObject:nil]; + +// CFAbsoluteTime lastTime = CFAbsoluteTimeGetCurrent(); + + while (!has_init) {} + while ( !shouldStop ) + { + [self.frontBufferCondition lock]; + while (!shouldStop && self.isFrontBufferReady) [self.frontBufferCondition wait]; + [self.frontBufferCondition unlock]; + +// CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); +// CFTimeInterval deltaTime = now - lastTime; + while ( !shouldStop + && !video_driver_cached_frame() +// && core_poll() + ) {} + [self swapBuffers]; +// lastTime = now; + } + } +} + + + +- (void)runGLESEmuThread { + @autoreleasepool + { + [self libretroMain]; + // Core returns + + // Unlock rendering thread + dispatch_semaphore_signal(coreWaitToEndFrameSemaphore); + + [super stopEmulation]; + } +} + + +- (void)libretroMain { + + MakeCurrentThreadRealTime(); + +// [self.renderDelegate startRenderingOnAlternateThread]; + has_init = true; + + + do { + switch (self->core_poll_type) + { + case POLL_TYPE_EARLY: + input_poll(); + break; + case POLL_TYPE_LATE: + core_input_polled = false; + break; + } + if (core->retro_run) + core->retro_run(); + if (core_poll_type == POLL_TYPE_LATE && !core_input_polled) + input_poll(); + } while(!shouldStop); + + has_init = false; + + dispatch_semaphore_signal(coreWaitForExitSemaphore); +} + +- (CGSize)bufferSize { + return CGSizeMake(2048, 2048); +} + +@end + +#pragma clang diagnostic pop diff --git a/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp index e0eeb2c1a6..8758cabeb9 100644 --- a/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp +++ b/PVSupport/Sources/PVSupport/Audio/CARingBuffer/CARingBuffer.cpp @@ -49,6 +49,12 @@ #include "CAAutoDisposer.h" //#include "CAAtomic.h" +#if DEBUG +#define CALOG printf +#else +#define CALOG +#endif + #include #include #include @@ -156,24 +162,24 @@ inline void ZeroABL(AudioBufferList *abl, int destOffset, int nbytes) CARingBufferError CARingBuffer::Store(const AudioBufferList *abl, UInt32 framesToWrite, SampleTime startWrite) { if (framesToWrite == 0) { - printf("no frames to write\n"); + CALOG("no frames to write\n"); return kCARingBufferError_OK; } if (framesToWrite > mCapacityFrames) { - printf("no frames to write\n"); + CALOG("no frames to write\n"); return kCARingBufferError_TooMuch; // too big! } SampleTime endWrite = startWrite + framesToWrite; if (startWrite < EndTime()) { - printf("// going backwards, throw everything out\n"); + CALOG("// going backwards, throw everything out\n"); // going backwards, throw everything out SetTimeBounds(startWrite, startWrite); } else if (endWrite - StartTime() <= mCapacityFrames) { - printf("//the buffer has not yet wrapped and will not need to\n"); + CALOG("//the buffer has not yet wrapped and will not need to\n"); // the buffer has not yet wrapped and will not need to } else { @@ -181,7 +187,7 @@ CARingBufferError CARingBuffer::Store(const AudioBufferList *abl, UInt32 framesT SampleTime newStart = endWrite - mCapacityFrames; // one buffer of time behind where we're writing SampleTime newEnd = std::max(newStart, EndTime()); SetTimeBounds(newStart, newEnd); - printf("// advance the start time past the region we are about to overwrite\n"); + CALOG("// advance the start time past the region we are about to overwrite\n"); } @@ -261,11 +267,11 @@ CARingBufferError CARingBuffer::ClipTimeBounds(SampleTime& startRead, SampleTime if (startRead > endTime || endRead < startTime) { if (startRead > endTime) { - printf("!! startRead is too big by %lli\n", startRead - endTime); + CALOG("!! startRead is too big by %lli\n", startRead - endTime); } if(endTime < startTime) { - printf("!! endRead is too small by %lli\n", startTime - endRead); + CALOG("!! endRead is too small by %lli\n", startTime - endRead); } endRead = startRead; return kCARingBufferError_OK; @@ -281,7 +287,7 @@ CARingBufferError CARingBuffer::ClipTimeBounds(SampleTime& startRead, SampleTime CARingBufferError CARingBuffer::Fetch(AudioBufferList *abl, UInt32 nFrames, SampleTime startRead) { if (nFrames == 0) { - printf("Fetch zero frames\n"); + CALOG("Fetch zero frames\n"); return kCARingBufferError_OK; } @@ -294,12 +300,13 @@ CARingBufferError CARingBuffer::Fetch(AudioBufferList *abl, UInt32 nFrames, Samp CARingBufferError err = ClipTimeBounds(startRead, endRead); if (err) { - printf("Fetch ClipTimeBounds erred\n"); + assert("Fetch ClipTimeBounds erred\n"); + CALOG("Fetch ClipTimeBounds erred\n"); return err; } if (startRead == endRead) { - printf("Fetch start == end!\n"); + CALOG("Fetch start == end!\n"); ZeroABL(abl, 0, nFrames * mBytesPerFrame); return kCARingBufferError_OK; @@ -341,7 +348,7 @@ CARingBufferError CARingBuffer::Fetch(AudioBufferList *abl, UInt32 nFrames, Samp dest++; } - printf("Fetch normal return\n"); + CALOG("Fetch normal return\n"); return noErr; } diff --git a/PVSupport/Sources/PVSupport/Audio/OEGameAudio.m b/PVSupport/Sources/PVSupport/Audio/OEGameAudio.m index 07fb3b8b38..f9f5b15f9a 100644 --- a/PVSupport/Sources/PVSupport/Audio/OEGameAudio.m +++ b/PVSupport/Sources/PVSupport/Audio/OEGameAudio.m @@ -127,6 +127,7 @@ - (id)initWithCore:(PVEmulatorCore *)core { self = [super init]; if(self != nil) { +#if !TARGET_OS_OSX NSError *error; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error]; if(error) { @@ -134,12 +135,12 @@ - (id)initWithCore:(PVEmulatorCore *)core { } else { ILOG(@"Successfully set audio session to ambient"); } - +#endif _outputDeviceID = 0; volume = 1; gameCore = core; - [self createGraph]; +// [self createGraph]; } return self; @@ -194,7 +195,11 @@ - (void)createGraph AudioComponentDescription desc; desc.componentType = kAudioUnitType_Output; +#if !TARGET_OS_OSX desc.componentSubType = kAudioUnitSubType_RemoteIO; +#else + desc.componentSubType = kAudioUnitSubType_DefaultOutput; +#endif desc.componentManufacturer = kAudioUnitManufacturer_Apple; desc.componentFlagsMask = 0; desc.componentFlags = 0; diff --git a/PVSupport/Sources/PVSupport/Controller/HapticsManager.swift b/PVSupport/Sources/PVSupport/Controller/HapticsManager.swift index aa304050db..5a11af5829 100644 --- a/PVSupport/Sources/PVSupport/Controller/HapticsManager.swift +++ b/PVSupport/Sources/PVSupport/Controller/HapticsManager.swift @@ -203,7 +203,7 @@ public extension HapticsManager { func triple() { play(.triple) } } -@available(iOS 13.0, tvOS 14.0, *) +@available(tvOS 14.0, *) extension CHHapticEngine.StoppedReason { var message: String { switch self { diff --git a/PVSupport/Sources/PVSupport/Controller/PVGameControllerUtilities.swift b/PVSupport/Sources/PVSupport/Controller/PVGameControllerUtilities.swift index 8b4ab2a7be..2a351d9998 100644 --- a/PVSupport/Sources/PVSupport/Controller/PVGameControllerUtilities.swift +++ b/PVSupport/Sources/PVSupport/Controller/PVGameControllerUtilities.swift @@ -10,7 +10,7 @@ import Foundation @_exported import GameController import simd -fileprivate let thumbstickSensitivty: Float = 0.2; +private let thumbstickSensitivty: Float = 0.2 @objc public enum PVControllerAxisDirection : UInt, CustomDebugStringConvertible { @@ -23,7 +23,7 @@ public enum PVControllerAxisDirection : UInt, CustomDebugStringConvertible { case UpLeft case DownRight case DownLeft - + public var debugDescription: String { let label: String switch self { @@ -39,33 +39,32 @@ public enum PVControllerAxisDirection : UInt, CustomDebugStringConvertible { } return "\(rawValue): \(label)" } - + public init(forThumbstick thumbstick :GCControllerDirectionPad) { let xValue = fabsf(thumbstick.xAxis.value) let yValue = fabsf(thumbstick.yAxis.value) - + if xValue <= thumbstickSensitivty && yValue <= thumbstickSensitivty { self = .None return } - + var angleInRadians: Double = atan2(Double(thumbstick.yAxis.value), Double(thumbstick.xAxis.value)) - //We have 8 sectors, so get the size of each in degrees. + // We have 8 sectors, so get the size of each in degrees. let sectorSize:Double = 360.0 / 8 - //We also need the size of half a sector - let halfSectorSize: Double = sectorSize / 2.0; + // We also need the size of half a sector + let halfSectorSize: Double = sectorSize / 2.0 - //Atan2 gives us a negative value for angles in the 3rd and 4th quadrants. + // Atan2 gives us a negative value for angles in the 3rd and 4th quadrants. // We want a full 360 degrees, so we will add 2 PI to negative values. if angleInRadians < 0.0 { angleInRadians += (.pi * 2.0) } - //Convert the radians to degrees. Degrees are easier to visualize. - let angleInDegrees: Double = (180.0 * angleInRadians / .pi); - + // Convert the radians to degrees. Degrees are easier to visualize. + let angleInDegrees: Double = (180.0 * angleInRadians / .pi) - //Next, rotate our angle to match the offset of our sectors. + // Next, rotate our angle to match the offset of our sectors. let convertedAngle: Double = angleInDegrees + halfSectorSize - //Finally, we get the current direction by dividing the angle + // Finally, we get the current direction by dividing the angle // by the size of the sectors let direction: Int = Int(floor(convertedAngle / sectorSize)) switch direction { diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift index ed82f80c5c..62a4cd2b8f 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCade8BitdoController.swift @@ -7,6 +7,7 @@ // Copyright (c) 2015 Josejulio Martínez. All rights reserved. // +#if canImport(UIKit) import Foundation public final class PViCade8BitdoController: PViCadeController { @@ -95,3 +96,4 @@ public final class PViCade8BitdoZeroController: PViCadeController { return "8Bitdo Zero" } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeController.swift index fc50fbfe26..91da737f7a 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeController.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeController.swift @@ -6,7 +6,7 @@ // Created by Josejulio Martínez on 19/06/15. // Copyright (c) 2015 Josejulio Martínez. All rights reserved. // - +#if canImport(UIKit) import GameController public class PViCadeController: GCController { @@ -119,3 +119,4 @@ public class PViCadeController: GCController { } } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift index 0f2eef81be..ef43f4b348 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeMocuteController.swift @@ -6,7 +6,7 @@ // Created by Edgar Neto on 8/12/17. // Copyright © 2017 James Addyman. All rights reserved. // - +#if canImport(UIKit) import Foundation public final class PViCadeMocuteController: PViCadeController { @@ -37,3 +37,4 @@ public final class PViCadeMocuteController: PViCadeController { return "Mocute" } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift index b0cb01d30d..0b9416234a 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/Controllers/PViCadeSteelSeriesController.swift @@ -7,6 +7,7 @@ // Copyright © 2015 James Addyman. All rights reserved. // +#if canImport(UIKit) public final class PViCadeSteelSeriesController: PViCadeController { override func button(forState button: iCadeControllerState) -> PViCadeGamepadButtonInput? { switch button { @@ -35,3 +36,4 @@ public final class PViCadeSteelSeriesController: PViCadeController { return "Steel Series" } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepad.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepad.swift index ca75094ce7..c8d930c5e4 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepad.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepad.swift @@ -6,7 +6,7 @@ // Created by Josejulio Martínez on 16/06/15. // Copyright (c) 2015 Josejulio Martínez. All rights reserved. // - +#if canImport(UIKit) import GameController internal final class PViCadeGamepad: GCExtendedGamepad { @@ -69,3 +69,4 @@ internal final class PViCadeGamepad: GCExtendedGamepad { return _rightTrigger } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift index 50aca3eaa0..af0fe25a54 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeGamepadDirectionPad.swift @@ -7,6 +7,7 @@ // Copyright (c) 2015 Josejulio Martínez. All rights reserved. // +#if canImport(UIKit) import GameController // TODO: Make a class for gamepad and another for joystick to support dpad and joystick as seperate inputs @@ -70,3 +71,4 @@ public final class PViCadeGamepadDirectionPad: GCControllerDirectionPad { } } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeReader.swift b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeReader.swift index 4d96d0123c..22650fbe67 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeReader.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/PViCadeReader.swift @@ -6,6 +6,7 @@ // Copyright (c) 2018 Joseph Mattiello. All rights reserved. // +#if canImport(UIKit) import UIKit public typealias iCadeButtonEventHandler = (_ button: iCadeControllerState) -> Void @@ -73,3 +74,4 @@ public final class PViCadeReader: NSObject, iCadeEventDelegate { stateChangedHandler?(state) } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/iCadeControllerSetting.swift b/PVSupport/Sources/PVSupport/Controller/iCade/iCadeControllerSetting.swift index 472aa8bd17..eaef64c5ca 100644 --- a/PVSupport/Sources/PVSupport/Controller/iCade/iCadeControllerSetting.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/iCadeControllerSetting.swift @@ -7,6 +7,7 @@ // Copyright (c) 2015 Josejulio Martínez. All rights reserved. // +#if canImport(UIKit) @objc public enum iCadeControllerSetting: Int, CustomStringConvertible, CaseIterable, UserDefaultsRepresentable { case disabled @@ -50,3 +51,4 @@ public enum iCadeControllerSetting: Int, CustomStringConvertible, CaseIterable, } } } +#endif diff --git a/PVSupport/Sources/PVSupport/Controller/iCade/iCadeReaderView.swift b/PVSupport/Sources/PVSupport/Controller/iCade/iCadeReaderView.swift index d8639a1b0c..76b81dcf96 100755 --- a/PVSupport/Sources/PVSupport/Controller/iCade/iCadeReaderView.swift +++ b/PVSupport/Sources/PVSupport/Controller/iCade/iCadeReaderView.swift @@ -1,3 +1,4 @@ +#if canImport(UIKit) import UIKit /* @@ -252,3 +253,4 @@ extension iCadeReaderView: UIKeyInput { VLOG("iCade backspace!") } } +#endif diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Protocols/CoreOptional.swift b/PVSupport/Sources/PVSupport/CoreOptions/Protocols/CoreOptional.swift index bf6fb9aaa3..355d5e447d 100644 --- a/PVSupport/Sources/PVSupport/CoreOptions/Protocols/CoreOptional.swift +++ b/PVSupport/Sources/PVSupport/CoreOptions/Protocols/CoreOptional.swift @@ -11,14 +11,14 @@ import Foundation public protocol CoreOptional where Self: PVEmulatorCore { @nonobjc static var options: [CoreOption] { get } - + // static func bool(forOption option: String) -> Bool // static func int(forOption option: String) -> Int // static func float(forOption option: String) -> Float // static func string(forOption option: String) -> String? } -//public extension CoreOptional { +// public extension CoreOptional { // static func bool(forOption option: String) -> Bool { // return valueForOption(Bool.self, option) ?? false // } @@ -37,4 +37,4 @@ public protocol CoreOptional where Self: PVEmulatorCore { // let value = valueForOption(String.self, option) // return value // } -//} +// } diff --git a/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionValue.swift b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionValue.swift index f726622ee8..3ec8febd04 100644 --- a/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionValue.swift +++ b/PVSupport/Sources/PVSupport/CoreOptions/Types/CoreOptionValue.swift @@ -14,7 +14,7 @@ public enum CoreOptionValue { case int(Int) case float(Float) case notFound - + public var asBool: Bool { switch self { case .bool(let value): return value @@ -24,7 +24,7 @@ public enum CoreOptionValue { case .notFound: return false } } - + public var asString: String { switch self { case .bool(let value): return value ? "true" : "false" @@ -34,7 +34,7 @@ public enum CoreOptionValue { case .notFound: return "not found" } } - + public var asInt: Int? { switch self { case .bool(let value): return value ? 1 : 0 @@ -44,7 +44,7 @@ public enum CoreOptionValue { case .notFound: return nil } } - + public var asFloat: Float? { switch self { case .bool(let value): return value ? 1 : 0 @@ -78,7 +78,7 @@ extension CoreOptionValue: Codable { break } } - + public init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodableKeys.self) let type = try values.decode(String.self, forKey: .type) diff --git a/PVSupport/Sources/PVSupport/EmulatorCore/Features/Controls.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/Controls.swift index 19d5ca56b7..2f5cc3b174 100644 --- a/PVSupport/Sources/PVSupport/EmulatorCore/Features/Controls.swift +++ b/PVSupport/Sources/PVSupport/EmulatorCore/Features/Controls.swift @@ -487,11 +487,14 @@ import Foundation case count } -@objc public protocol PV5200SystemResponderClient: ResponderClient, ButtonResponder { +@objc public protocol PV5200SystemResponderClient: ResponderClient, ButtonResponder, JoystickResponder { @objc(didPush5200Button:forPlayer:) func didPush(_ button: PV5200Button, forPlayer player: Int) @objc(didRelease5200Button:forPlayer:) func didRelease(_ button: PV5200Button, forPlayer player: Int) + + @objc(didMove5200JoystickDirection:withValue:forPlayer:) + func didMoveJoystick(_ button: PV5200Button, withValue value: CGFloat, forPlayer player: Int) } @objc public enum PVA8Button: Int { @@ -1026,8 +1029,11 @@ import Foundation case button9 @objc(PVIntellivisionButton0) case button0 + @objc(PVIntellivisionButtonClear) case clear + @objc(PVIntellivisionButtonEnter) case enter + @objc(PVIntellivisionButtonCount) case count } @@ -1037,3 +1043,129 @@ import Foundation @objc(didReleaseIntellivisionButton:forPlayer:) func didRelease(_ button: PVIntellivisionButton, forPlayer player: Int) } + +// MARK: - Supervision + +@objc public enum PVSupervisionButton: Int { + case up + case down + case left + case right + case topAction + case bottomLeftAction + case bottomRightAction + @objc(PVSupervisionButton1) + case button1 + @objc(PVSupervisionButton2) + case button2 + @objc(PVSupervisionButton3) + case button3 + @objc(PVSupervisionButton4) + case button4 + @objc(PVSupervisionButton5) + case button5 + @objc(PVSupervisionButton6) + case button6 + @objc(PVSupervisionButton7) + case button7 + @objc(PVSupervisionButton8) + case button8 + @objc(PVSupervisionButton9) + case button9 + @objc(PVSupervisionButton0) + case button0 + case clear + case enter + case count +} + +@objc public protocol PVSupervisionSystemResponderClient: ResponderClient, ButtonResponder { + @objc(didPushSupervisionButton:forPlayer:) + func didPush(_ button: PVSupervisionButton, forPlayer player: Int) + @objc(didReleaseSupervisionButton:forPlayer:) + func didRelease(_ button: PVSupervisionButton, forPlayer player: Int) +} + +// MARK: - PC DOS + +@objc public enum PVDOSButton: Int { + case up + case down + case left + case right + case fire1 + case fire2 + case select + case pause + case reset + case leftDiff + case rightDiff + case count +} + +@objc public protocol PVDOSSystemResponderClient: ResponderClient, ButtonResponder, KeyboardResponder, MouseResponder { + @objc(didPushDOSButton:forPlayer:) + func didPush(_ button: PVDOSButton, forPlayer player: Int) + @objc(didReleaseDOSButton:forPlayer:) + func didRelease(_ button: PVDOSButton, forPlayer player: Int) + + func mouseMoved(at point: CGPoint) + func leftMouseDown(at point: CGPoint) + func leftMouseUp() +} + +// MARK: - MSX + +@objc public enum PVMSXButton: Int { + case up + case down + case left + case right + case fire1 + case fire2 + case select + case pause + case reset + case leftDiff + case rightDiff + case count +} + +@objc public protocol PVMSXSystemResponderClient: ResponderClient, ButtonResponder, KeyboardResponder, MouseResponder { + @objc(didPushMSXButton:forPlayer:) + func didPush(_ button: PVMSXButton, forPlayer player: Int) + @objc(didReleaseMSXButton:forPlayer:) + func didRelease(_ button: PVMSXButton, forPlayer player: Int) + + func mouseMoved(at point: CGPoint) + func leftMouseDown(at point: CGPoint) + func leftMouseUp() +} + + +// MARK: - EP128 + @objc public enum PVEP128Button: Int { + case up + case down + case left + case right + case fire1 + case fire2 + case select + case pause + case reset + case leftDiff + case rightDiff + case count + } + + @objc public protocol PVEP128SystemResponderClient: ResponderClient, ButtonResponder, KeyboardResponder, MouseResponder { + @objc(didPushEP128Button:forPlayer:) + func didPush(_ button: PVEP128Button, forPlayer player: Int) + @objc(didReleaseEP128Button:forPlayer:) + func didRelease(_ button: PVEP128Button, forPlayer player: Int) + + func mouseMoved(at point: CGPoint) + func leftMouseDown(at point: CGPoint) + func leftMouseUp() + } diff --git a/PVSupport/Sources/PVSupport/EmulatorCore/Features/GameWithCheat.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/GameWithCheat.swift index 601e0efe33..db6d3a6ccb 100644 --- a/PVSupport/Sources/PVSupport/EmulatorCore/Features/GameWithCheat.swift +++ b/PVSupport/Sources/PVSupport/EmulatorCore/Features/GameWithCheat.swift @@ -11,5 +11,6 @@ import Foundation enabled: Bool ) -> Bool + @objc(supportsCheatCode) func supportsCheatCode() -> Bool } diff --git a/PVSupport/Sources/PVSupport/EmulatorCore/Features/SaveStateSupport.swift b/PVSupport/Sources/PVSupport/EmulatorCore/Features/SaveStateSupport.swift index c9de6bb3a7..d6dcb71a84 100644 --- a/PVSupport/Sources/PVSupport/EmulatorCore/Features/SaveStateSupport.swift +++ b/PVSupport/Sources/PVSupport/EmulatorCore/Features/SaveStateSupport.swift @@ -8,17 +8,17 @@ import Foundation -public enum Result { +public enum SaveResult { case success case error(Error) } public protocol SaveStateSupport { - func loadState(atPath: URL) -> Result - func saveState(toPath: URL) -> Result + func loadState(atPath: URL) -> SaveResult + func saveState(toPath: URL) -> SaveResult } public protocol AsyncSaveStateSupport { - func loadState(atPath: URL, completion: @escaping (Result) -> Void) throws - func saveState(toPath: URL, completion: @escaping (Result) -> Void) throws + func loadState(atPath: URL, completion: @escaping (SaveResult) -> Void) throws + func saveState(toPath: URL, completion: @escaping (SaveResult) -> Void) throws } diff --git a/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.h b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.h index 63809a2b2b..e5362cca6f 100644 --- a/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.h +++ b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.h @@ -22,6 +22,10 @@ #import #endif +#if TARGET_OS_OSX +#import +#endif + #pragma mark - typedef void (^SaveStateCompletion)(BOOL, NSError * _Nullable ); @@ -58,7 +62,8 @@ typedef NS_ENUM(NSInteger, PVEmulatorCoreErrorCode) { @end @interface PVEmulatorCore : NSObject { - + +@public OERingBuffer __strong **ringBuffers; double _sampleRate; @@ -81,8 +86,10 @@ typedef NS_ENUM(NSInteger, PVEmulatorCoreErrorCode) { @property (nonatomic, copy, nullable) NSString *BIOSPath; @property (nonatomic, copy, nullable) NSString *systemIdentifier; @property (nonatomic, copy, nullable) NSString *coreIdentifier; -@property (nonatomic, copy, nullable) NSString* romMD5; -@property (nonatomic, copy, nullable) NSString* romSerial; +@property (nonatomic, copy, nullable) NSString *romMD5; +@property (nonatomic, copy, nullable) NSString *romSerial; +@property (nonatomic, copy, nullable) NSString *screenType; + @property (nonatomic, assign) BOOL supportsSaveStates; @property (nonatomic, readonly) BOOL supportsRumble; diff --git a/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.m b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.m index 758d5b3365..37163d231e 100644 --- a/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.m +++ b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.m @@ -13,7 +13,12 @@ #import "PVLogging.h" #import "DebugUtils.h" @import AVFoundation; + +#if !TARGET_OS_OSX @import UIKit; +#else +@import AppKit; +#endif /* Timing */ #include @@ -105,7 +110,7 @@ - (NSError * _Nonnull)createError:(NSString * _Nonnull)message { - (void)startEmulation { if ([self class] != PVEmulatorCoreClass) { if (!_isRunning) { -#if !TARGET_OS_TV +#if !TARGET_OS_TV && !TARGET_OS_OSX [self startHaptic]; NSError *error; BOOL success = [self setPreferredSampleRate:[self audioSampleRate] error:&error]; @@ -139,16 +144,19 @@ -(BOOL)startHaptic { return started; } +#if !TARGET_OS_OSX if (self.supportsRumble && !(self.controller1 != nil && !self.controller1.isAttachedToDevice)) { self.rumbleGenerator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleHeavy]; [self.rumbleGenerator prepare]; return YES; } +#endif return NO; } -(void)stopHaptic { +#if !TARGET_OS_OSX if (!NSThread.isMainThread) { MAKEWEAK(self); dispatch_async(dispatch_get_main_queue(), ^{ @@ -158,6 +166,7 @@ -(void)stopHaptic { return; } self.rumbleGenerator = nil; +#endif } #else // Unsupported @@ -186,6 +195,7 @@ - (BOOL)isEmulationPaused { return !_isRunning; } + - (void)stopEmulation { [self stopHaptic]; shouldStop = YES; @@ -337,7 +347,7 @@ -(void)setController1:(GCController *)controller1 { } } -#if !TARGET_OS_TV +#if !TARGET_OS_TV && !TARGET_OS_OSX - (Float64) getSampleRate { return [[AVAudioSession sharedInstance] sampleRate]; } @@ -410,8 +420,7 @@ - (GLenum)depthFormat { return 0; } -- (NSTimeInterval)frameInterval -{ +- (NSTimeInterval)frameInterval { return defaultFrameInterval; } @@ -419,27 +428,23 @@ - (BOOL)isDoubleBuffered { return NO; } -- (void)swapBuffers -{ +- (void)swapBuffers { NSAssert(!self.isDoubleBuffered, @"Cores that are double-buffered must implement swapBuffers!"); } #pragma mark - Audio -- (double)audioSampleRate -{ +- (double)audioSampleRate { [self doesNotImplementSelector:_cmd]; return 0; } -- (NSUInteger)channelCount -{ +- (NSUInteger)channelCount { [self doesNotImplementSelector:_cmd]; return 0; } -- (NSUInteger)audioBufferCount -{ +- (NSUInteger)audioBufferCount { return 1; } @@ -469,7 +474,7 @@ - (NSUInteger)audioBufferSizeForBuffer:(NSUInteger)buffer { double frameSampleCount = [self audioSampleRateForBuffer:buffer] / [self frameInterval]; NSUInteger channelCount = [self channelCountForBuffer:buffer]; NSUInteger bytesPerSample = [self audioBitDepth] / 8; - NSAssert(frameSampleCount, @"frameSampleCount is 0"); +// NSAssert(frameSampleCount, @"frameSampleCount is 0"); return channelCount*bytesPerSample * frameSampleCount; } diff --git a/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.swift b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.swift index d6f337d659..81ccbdce08 100644 --- a/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.swift +++ b/PVSupport/Sources/PVSupport/EmulatorCore/PVEmulatorCore.swift @@ -1,60 +1,88 @@ // - // PVEmulatorCore.swift - // PVSupport - // - // Created by Joseph Mattiello on 3/8/18. - // Copyright © 2018 James Addyman. All rights reserved. - // +// PVEmulatorCore.swift +// PVSupport +// +// Created by Joseph Mattiello on 3/8/18. +// Copyright © 2018 James Addyman. All rights reserved. +// import Foundation +import CoreHaptics #if os(iOS) && !targetEnvironment(macCatalyst) -@_silgen_name("AudioServicesStopSystemSound") -func AudioServicesStopSystemSound(_ soundID: SystemSoundID) +//@_silgen_name("AudioServicesStopSystemSound") +//func AudioServicesStopSystemSound(_ soundID: SystemSoundID) // vibrationPattern parameter must be NSDictionary to prevent crash when bridging from Swift.Dictionary. -@_silgen_name("AudioServicesPlaySystemSoundWithVibration") -func AudioServicesPlaySystemSoundWithVibration(_ soundID: SystemSoundID, _ idk: Any?, _ vibrationPattern: NSDictionary) -#endif +//@_silgen_name("AudioServicesPlaySystemSoundWithVibration") +//func AudioServicesPlaySystemSoundWithVibration(_ soundID: SystemSoundID, _ idk: Any?, _ vibrationPattern: NSDictionary) +//#endif + +@available(iOS 14.0, tvOS 14.0, *) +fileprivate var hapticEngines: [CHHapticEngine?] = Array.init(repeating: nil, count: 4) @objc public extension PVEmulatorCore { - var supportsRumble: Bool { false } - + @objc var supportsRumble: Bool { false } + func rumble() { rumble(player: 0) } - - func rumble(player: Int) { - guard self.supportsRumble else { - WLOG("Rumble called on core that doesn't support it") - return - } - - var controller: GCController? - switch player { - case 1: - if let controller1 = self.controller1, controller1.isAttachedToDevice { + + @available(iOS 14.0, tvOS 14.0, *) + func hapticEngine(for player: Int) -> CHHapticEngine? { + if let engine = hapticEngines[player] { + return engine + } else if let controller = controller(for: player), let newEngine = controller.haptics?.createEngine(withLocality: .all) { + hapticEngines[player] = newEngine + newEngine.isAutoShutdownEnabled = true + return newEngine + } else { + return nil + } + } + + func controller(for player: Int) -> GCController? { + var controller: GCController? + switch player { + case 1: + if let controller1 = self.controller1, controller1.isAttachedToDevice { #if os(iOS) && !targetEnvironment(macCatalyst) - rumblePhone() + rumblePhone() #else VLOG("rumblePhone*(") #endif - } else { - controller = self.controller1 - } - case 2: - controller = self.controller2 - case 3: - controller = self.controller3 - case 4: - controller = self.controller4 - default: - WLOG("No player \(player)") + } else { + controller = self.controller1 + } + case 2: + controller = self.controller2 + case 3: + controller = self.controller3 + case 4: + controller = self.controller4 + default: + WLOG("No player \(player)") + controller = nil + } + return controller + } + + func rumble(player: Int) { + guard self.supportsRumble else { + WLOG("Rumble called on core that doesn't support it") return } + if #available(iOS 14.0, tvOS 14.0, *) { + if let haptics = hapticEngine(for: player) { + // TODO: haptic vibrate + } + } else { + // Fallback on earlier versions + } } + #if os(iOS) && !targetEnvironment(macCatalyst) func rumblePhone() { @@ -62,29 +90,32 @@ public extension PVEmulatorCore { DispatchQueue.main.async { if deviceHasHaptic { - AudioServicesStopSystemSound(kSystemSoundID_Vibrate) +// AudioServicesStopSystemSound(kSystemSoundID_Vibrate) var vibrationLength = 30 + #if canImport(UIKit) if UIDevice.current.modelGeneration.hasPrefix("iPhone6") { // iPhone 5S has a weaker vibration motor, so we vibrate for 10ms longer to compensate vibrationLength = 40 } - + #endif // Must use NSArray/NSDictionary to prevent crash. let pattern: [Any] = [false, 0, true, vibrationLength] let dictionary: [String: Any] = ["VibePattern": pattern, "Intensity": 1] - AudioServicesPlaySystemSoundWithVibration(kSystemSoundID_Vibrate, nil, dictionary as NSDictionary) - // self?.rumbleGenerator.impactOccurred() - } else { - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) +// AudioServicesPlaySystemSoundWithVibration(kSystemSoundID_Vibrate, nil, dictionary as NSDictionary) + self.rumble() } +// else { +// AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) +// } } } #endif } +#if canImport(UIKit) private extension UIDevice { var modelGeneration: String { var sysinfo = utsname() @@ -101,3 +132,5 @@ private extension UIDevice { return modelGeneration } } +#endif +#endif diff --git a/PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+NSLogger.swift b/PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+NSLogger.swift index 00f0f8c309..4da62e8aab 100644 --- a/PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+NSLogger.swift +++ b/PVSupport/Sources/PVSupport/Logging/CocoaLumberjack+NSLogger.swift @@ -6,7 +6,7 @@ // Copyright © 2021 Provenance Emu. All rights reserved. // -//#if canImport(NSLogger) +// #if canImport(NSLogger) import Foundation import NSLogger @_exported import CocoaLumberjackSwift @@ -223,4 +223,4 @@ extension JMLumberjackNSLogger { return debugDescription } } -//#endif +// #endif diff --git a/PVSupport/Sources/PVSupport/Logging/PVCocoaLumberJackLogging.swift b/PVSupport/Sources/PVSupport/Logging/PVCocoaLumberJackLogging.swift index 1b2e34dabf..10b48bade4 100644 --- a/PVSupport/Sources/PVSupport/Logging/PVCocoaLumberJackLogging.swift +++ b/PVSupport/Sources/PVSupport/Logging/PVCocoaLumberJackLogging.swift @@ -42,19 +42,23 @@ public class PVCocoaLumberJackLogging: NSObject, PVLoggingEntity { #endif DDLog.add(fileLogger, with: .warning) -//#if canImport(NSLogger) +// #if canImport(NSLogger) #if DEBUG DDLog.add(nsLogger, with: .verbose) #else DDLog.add(nsLogger, with: .debug) #endif -//#endif +// #endif } public func logFilePaths() -> [String]? { return fileLogger.logFileManager.sortedLogFilePaths } + public func logFileInfos() -> [Any]? { + return fileLogger.logFileManager.sortedLogFileInfos + } + public func flushLogs() { DDLog.flushLog() } diff --git a/PVSupport/Sources/PVSupport/Logging/PVLogging.h b/PVSupport/Sources/PVSupport/Logging/PVLogging.h index 4ff8832a66..034470c623 100644 --- a/PVSupport/Sources/PVSupport/Logging/PVLogging.h +++ b/PVSupport/Sources/PVSupport/Logging/PVLogging.h @@ -235,7 +235,6 @@ NS_ASSUME_NONNULL_BEGIN */ - (void)flushLogs; -@optional /** * Array of info for the log files such as zie and modification date * diff --git a/PVSupport/Sources/PVSupport/Logging/PVLogging.m b/PVSupport/Sources/PVSupport/Logging/PVLogging.m index b165c66ff7..e9e9b9921a 100644 --- a/PVSupport/Sources/PVSupport/Logging/PVLogging.m +++ b/PVSupport/Sources/PVSupport/Logging/PVLogging.m @@ -208,7 +208,7 @@ -(NSString*)htmlString { + (NSInteger) systemVersionAsAnInteger{ int index = 0; NSInteger version = 0; - +#if !TARGET_OS_OSX NSArray* digits = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; NSEnumerator* enumer = [digits objectEnumerator]; NSString* number; @@ -220,6 +220,7 @@ + (NSInteger) systemVersionAsAnInteger{ version += [number intValue]*multipler; index++; } +#endif return version; } @@ -244,17 +245,19 @@ - (void)writeLocalInfo { NSString *gitTag = [[NSBundle mainBundle] infoDictionary][@"GitTag"]; NSString *gitDate = [[NSBundle mainBundle] infoDictionary][@"GitDate"]; - +#if !TARGET_OS_OSX NSString *systemName = [[UIDevice currentDevice] systemName]; - +#endif NSMutableString *info = [NSMutableString new]; [info appendString:@"\n---------------- App Load ----------------------\n"]; [info appendFormat:@"Load date: %@\n",[NSDate date]]; [info appendFormat:@"App: %@\n",appName]; [info appendFormat:@"System: %@ %@\n", os, machine]; +#if !TARGET_OS_OSX [info appendFormat:@"Device: %@\n", [UIDevice currentDevice].modelName]; [info appendFormat:@"%@ Version: %@\n",systemName, [UIDevice currentDevice].systemVersion]; +#endif [info appendFormat:@"App Id: %@\n",appId]; [info appendFormat:@"App Version: %@\n",appVersion]; [info appendFormat:@"Build #: %@\n",buildVersion]; diff --git a/PVSupport/Sources/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift b/PVSupport/Sources/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift index 137ee9ec84..d8d03a405a 100644 --- a/PVSupport/Sources/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift +++ b/PVSupport/Sources/PVSupport/Logging/Protocols/DDLogLevel+CustomStringConvertable.swift @@ -6,10 +6,10 @@ // Copyright © 2019 JM. All rights reserved. // +#if canImport(NSLoggerLibObjC) import Foundation @_exported import CocoaLumberjackSwift -//#if canImport(NSLogger) import NSLogger extension DDLogLevel { @@ -30,7 +30,7 @@ extension DDLogFlag { return self.toLogLevel().nsloggerLevel } } -//#endif +// #endif extension DDLogLevel: CustomStringConvertible { public var description: String { @@ -47,4 +47,4 @@ extension DDLogLevel: CustomStringConvertible { } } } - +#endif diff --git a/PVSupport/Sources/PVSupport/NSExtensions/UIDeviceExtension.swift b/PVSupport/Sources/PVSupport/NSExtensions/UIDeviceExtension.swift index 86f6a19023..312a3e6ed9 100644 --- a/PVSupport/Sources/PVSupport/NSExtensions/UIDeviceExtension.swift +++ b/PVSupport/Sources/PVSupport/NSExtensions/UIDeviceExtension.swift @@ -6,8 +6,9 @@ // Copyright © 2018 Provenance. All rights reserved. // -import Foundation +#if canImport(UIKit) +import UIKit public extension UIDevice { /// pares the deveice name as the standard name @objc @@ -63,3 +64,4 @@ public extension UIDevice { } } } +#endif diff --git a/PVSupport/Sources/PVSupport/Performance/Performance.swift b/PVSupport/Sources/PVSupport/Performance/Performance.swift index 7ac3b3a183..d0e80a70e5 100644 --- a/PVSupport/Sources/PVSupport/Performance/Performance.swift +++ b/PVSupport/Sources/PVSupport/Performance/Performance.swift @@ -55,26 +55,26 @@ public protocol StatusBarConfigurator { /// Performance calculator. Uses CADisplayLink to count FPS. Also counts CPU and memory usage. internal class PerformanceCalculator { - + // MARK: Structs - + private struct Constants { static let accumulationTimeInSeconds = 1.0 } - + // MARK: Internal Properties - - internal var onReport: ((_ performanceReport: PerformanceReport) -> ())? - + + internal var onReport: ((_ performanceReport: PerformanceReport) -> Void)? + // MARK: Private Properties - + private var displayLink: CADisplayLink! private let linkedFramesList = LinkedFramesList() private var startTimestamp: TimeInterval? private var accumulatedInformationIsEnough = false - + // MARK: Init Methods & Superclass Overriders - + required internal init() { self.configureDisplayLink() } @@ -88,7 +88,7 @@ internal extension PerformanceCalculator { self.startTimestamp = Date().timeIntervalSince1970 self.displayLink?.isPaused = false } - + /// Pauses performance monitoring. func pause() { self.displayLink?.isPaused = true @@ -119,7 +119,7 @@ private extension PerformanceCalculator { self.accumulatedInformationIsEnough = true } } - + func cpuUsage() -> Double { var totalUsageOfCPU: Double = 0.0 var threadsList: thread_act_array_t? @@ -129,7 +129,7 @@ private extension PerformanceCalculator { task_threads(mach_task_self_, $0, &threadsCount) } } - + if threadsResult == KERN_SUCCESS, let threadsList = threadsList { for index in 0...stride)) return totalUsageOfCPU } - + func memoryUsage() -> MemoryUsage { var taskInfo = task_vm_info_data_t() var count = mach_msg_type_number_t(MemoryLayout.size) / 4 @@ -163,12 +163,12 @@ private extension PerformanceCalculator { task_info(mach_task_self_, task_flavor_t(TASK_VM_INFO), $0, &count) } } - + var used: UInt64 = 0 if result == KERN_SUCCESS { used = UInt64(taskInfo.phys_footprint) } - + let total = ProcessInfo.processInfo.physicalMemory return (used, total) } @@ -194,68 +194,68 @@ private extension PerformanceCalculator { } public final class PerformanceMonitor { - + // MARK: Enums - + public enum Style { case dark case light case custom(backgroundColor: UIColor, borderColor: UIColor, borderWidth: CGFloat, cornerRadius: CGFloat, textColor: UIColor, font: UIFont) } - + public enum UserInfo { case none case custom(string: String) } - + private enum States { case started case paused case pausedBySystem } - + // MARK: Structs - + public struct DisplayOptions: OptionSet { public let rawValue: Int - + /// CPU usage and FPS. public static let performance = DisplayOptions(rawValue: 1 << 0) - + /// Memory usage. public static let memory = DisplayOptions(rawValue: 1 << 1) - + /// Application version with build number. public static let application = DisplayOptions(rawValue: 1 << 2) - + /// Device model. public static let device = DisplayOptions(rawValue: 1 << 3) - + /// System name with version. public static let system = DisplayOptions(rawValue: 1 << 4) - + /// Default dispaly options - CPU usage and FPS, application version with build number and system name with version. public static let `default`: DisplayOptions = [.performance, .application, .system] - + /// All dispaly options. public static let all: DisplayOptions = [.performance, .memory, .application, .device, .system] - + public init(rawValue: Int) { self.rawValue = rawValue } } - + // MARK: Public Properties - + public weak var delegate: PerformanceMonitorDelegate? - + // public var performanceViewConfigurator: PerformanceViewConfigurator { // get { // return self.performanceView // } // set { } // } - + // public var statusBarConfigurator: StatusBarConfigurator { // get { // guard let rootViewController = self.performanceView.rootViewController as? WindowViewController else { @@ -265,17 +265,17 @@ public final class PerformanceMonitor { // } // set { } // } - + // MARK: Private Properties - + private static var sharedPerformanceMonitor: PerformanceMonitor! - + // private let performanceView = PerformanceView() private let performanceCalculator = PerformanceCalculator() private var state = States.paused - + // MARK: Init Methods & Superclass Overriders - + /// Initializes performance monitor with parameters. /// /// - Parameters: @@ -285,17 +285,17 @@ public final class PerformanceMonitor { required public init(options: DisplayOptions = .default, style: Style = .dark, delegate: PerformanceMonitorDelegate? = nil) { // self.performanceView.options = options // self.performanceView.style = style - + self.performanceCalculator.onReport = { [weak self] (performanceReport) in DispatchQueue.main.async { self?.apply(performanceReport: performanceReport) } } - + self.delegate = delegate self.subscribeToNotifications() } - + /// Initializes performance monitor singleton with default properties. /// /// - Returns: Performance monitor singleton. @@ -320,7 +320,7 @@ public extension PerformanceMonitor { // func show() { // self.performanceView.show() // } - + func start() { switch self.state { case .started: @@ -330,7 +330,7 @@ public extension PerformanceMonitor { self.performanceCalculator.start() } } - + func pause() { switch self.state { case .paused: @@ -353,7 +353,7 @@ private extension PerformanceMonitor { self.performanceCalculator.start() } } - + func applicationDidEnterBackgroundNotification(notification: Notification) { switch self.state { case .paused, .pausedBySystem: @@ -371,7 +371,7 @@ private extension PerformanceMonitor { NotificationCenter.default.addObserver(forName: UIApplication.willEnterForegroundNotification, object: nil, queue: .main) { [weak self] (notification) in self?.applicationWillEnterForegroundNotification(notification: notification) } - + NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: nil, queue: .main) { [weak self] (notification) in self?.applicationDidEnterBackgroundNotification(notification: notification) } @@ -389,14 +389,14 @@ private extension PerformanceMonitor { // MARK: Class Definition /// Linked list node. Represents frame timestamp. internal class FrameNode { - + // MARK: Public Properties - + var next: FrameNode? weak var previous: FrameNode? - + private(set) var timestamp: TimeInterval - + /// Initializes linked list node with parameters. /// /// - Parameter timeInterval: Frame timestamp. @@ -410,14 +410,14 @@ internal class FrameNode { /// The only function is append, which will add a new frame and remove all frames older than a second from the last timestamp. /// As a result, the number of items in the list will represent the number of frames for the last second. internal class LinkedFramesList { - + // MARK: Private Properties - + private var head: FrameNode? private var tail: FrameNode? - + // MARK: Public Properties - + private(set) var count = 0 } @@ -436,7 +436,7 @@ internal extension LinkedFramesList { self.head = newNode self.tail = newNode } - + self.count += 1 self.removeFrameNodes(olderThanTimestampMoreThanSecond: timestamp) } @@ -449,12 +449,12 @@ private extension LinkedFramesList { guard timestamp - firstNode.timestamp > 1.0 else { break } - + let nextNode = firstNode.next nextNode?.previous = nil firstNode.next = nil self.head = nextNode - + self.count -= 1 } } diff --git a/PVSupport/Sources/PVSupport/Performance/PerformanceView.swift b/PVSupport/Sources/PVSupport/Performance/PerformanceView.swift index ec91b7a93e..1a9ade030e 100644 --- a/PVSupport/Sources/PVSupport/Performance/PerformanceView.swift +++ b/PVSupport/Sources/PVSupport/Performance/PerformanceView.swift @@ -1,8 +1,8 @@ /// Performance view. Displays performance information above status bar. Appearance and output can be changed via properties. internal class PerformanceView: UIWindow, PerformanceViewConfigurator { - + // MARK: Structs - + private struct Constants { static let prefferedHeight: CGFloat = 20.0 static let borderWidth: CGFloat = 1.0 @@ -11,80 +11,78 @@ internal class PerformanceView: UIWindow, PerformanceViewConfigurator { static let defaultStatusBarHeight: CGFloat = 20.0 static let safeAreaInsetDifference: CGFloat = 11.0 } - + // MARK: Public Properties - + /// Allows to change the format of the displayed information. public var options = PerformanceMonitor.DisplayOptions.default { didSet { self.configureStaticInformation() } } - + public var userInfo = PerformanceMonitor.UserInfo.none { didSet { self.configureUserInformation() } } - + /// Allows to change the appearance of the displayed information. public var style = PerformanceMonitor.Style.dark { didSet { self.configureView(withStyle: self.style) } } - + /// Allows to add gesture recognizers to the view. public var interactors: [UIGestureRecognizer]? { didSet { self.configureView(withInteractors: self.interactors) } } - + // MARK: Private Properties - + private let monitoringTextLabel = MarginLabel() private var staticInformation: String? private var userInformation: String? - + // MARK: Init Methods & Superclass Overriders - + required internal init() { super.init(frame: PerformanceView.windowFrame(withPrefferedHeight: Constants.prefferedHeight)) - if #available(iOS 13, *) { - self.windowScene = PerformanceView.keyWindowScene() - } - + self.windowScene = PerformanceView.keyWindowScene() + self.configureWindow() self.configureMonitoringTextLabel() self.subscribeToNotifications() } - + required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } - + override func layoutSubviews() { super.layoutSubviews() - + self.layoutWindow() } - + override func becomeKey() { self.isHidden = true - + DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) { self.showViewAboveStatusBarIfNeeded() } } - + override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { guard let interactors = self.interactors, interactors.count > 0 else { return false } return super.point(inside: point, with: event) } - + deinit { NotificationCenter.default.removeObserver(self) } @@ -96,12 +94,12 @@ internal extension PerformanceView { func hide() { self.monitoringTextLabel.isHidden = true } - + /// Shows monitoring view. func show() { self.monitoringTextLabel.isHidden = false } - + /// Updates monitoring label with performance report. /// /// - Parameter report: Performance report. @@ -111,7 +109,7 @@ internal extension PerformanceView { let performance = String(format: "CPU: %.1f%%, FPS: %d", report.cpuUsage, report.fps) monitoringTexts.append(performance) } - + if self.options.contains(.memory) { let bytesInMegabyte = 1024.0 * 1024.0 let usedMemory = Double(report.memoryUsage.used) / bytesInMegabyte @@ -119,15 +117,15 @@ internal extension PerformanceView { let memory = String(format: "%.1f of %.0f MB used", usedMemory, totalMemory) monitoringTexts.append(memory) } - + if let staticInformation = self.staticInformation { monitoringTexts.append(staticInformation) } - + if let userInformation = self.userInformation { monitoringTexts.append(userInformation) } - + self.monitoringTextLabel.text = (monitoringTexts.count > 0 ? monitoringTexts.joined(separator: "\n") : nil) self.showViewAboveStatusBarIfNeeded() self.layoutMonitoringLabel() @@ -150,14 +148,14 @@ private extension PerformanceView { self.clipsToBounds = true self.isHidden = true } - + func configureMonitoringTextLabel() { self.monitoringTextLabel.textAlignment = NSTextAlignment.center self.monitoringTextLabel.numberOfLines = 0 self.monitoringTextLabel.clipsToBounds = true self.addSubview(self.monitoringTextLabel) } - + func configureStaticInformation() { var staticInformations: [String] = [] if self.options.contains(.application) { @@ -172,10 +170,10 @@ private extension PerformanceView { let systemVersion = self.systemVersion() staticInformations.append(systemVersion) } - + self.staticInformation = (staticInformations.count > 0 ? staticInformations.joined(separator: ", ") : nil) } - + func configureUserInformation() { var staticInformation: String? switch self.userInfo { @@ -184,16 +182,16 @@ private extension PerformanceView { case .custom(let string): staticInformation = string } - + self.userInformation = staticInformation } - + func subscribeToNotifications() { NotificationCenter.default.addObserver(forName: UIApplication.willChangeStatusBarFrameNotification, object: nil, queue: .main) { [weak self] (notification) in self?.applicationWillChangeStatusBarFrame(notification: notification) } } - + func configureView(withStyle style: PerformanceMonitor.Style) { switch style { case .dark: @@ -219,14 +217,14 @@ private extension PerformanceView { self.monitoringTextLabel.font = font } } - + func configureView(withInteractors interactors: [UIGestureRecognizer]?) { if let recognizers = self.gestureRecognizers { for recognizer in recognizers { self.removeGestureRecognizer(recognizer) } } - + if let recognizers = interactors { for recognizer in recognizers { self.addGestureRecognizer(recognizer) @@ -241,16 +239,16 @@ private extension PerformanceView { self.frame = PerformanceView.windowFrame(withPrefferedHeight: self.monitoringTextLabel.bounds.height) self.layoutMonitoringLabel() } - + func layoutMonitoringLabel() { let windowWidth = self.bounds.width let windowHeight = self.bounds.height let labelSize = self.monitoringTextLabel.sizeThatFits(CGSize(width: windowWidth, height: CGFloat.greatestFiniteMagnitude)) - + if windowHeight != labelSize.height { self.frame = PerformanceView.windowFrame(withPrefferedHeight: self.monitoringTextLabel.bounds.height) } - + self.monitoringTextLabel.frame = CGRect(x: (windowWidth - labelSize.width) / 2.0, y: (windowHeight - labelSize.height) / 2.0, width: labelSize.width, height: labelSize.height) } } @@ -263,7 +261,7 @@ private extension PerformanceView { } self.isHidden = false } - + func applicationVersion() -> String { var applicationVersion = "" var applicationBuildNumber = "" @@ -277,7 +275,7 @@ private extension PerformanceView { } return "app v\(applicationVersion) (\(applicationBuildNumber))" } - + func deviceModel() -> String { var systemInfo = utsname() uname(&systemInfo) @@ -290,13 +288,13 @@ private extension PerformanceView { } return model } - + func systemVersion() -> String { let systemName = UIDevice.current.systemName let systemVersion = UIDevice.current.systemVersion return "\(systemName) v\(systemVersion)" } - + func canBeVisible() -> Bool { if let window = PerformanceView.keyWindow(), window.isKeyWindow, !window.isHidden { return true @@ -311,7 +309,7 @@ private extension PerformanceView { guard let window = PerformanceView.keyWindow() else { return .zero } - + var topInset: CGFloat = 0.0 if #available(iOS 11.0, *), let safeAreaTop = window.rootViewController?.view.safeAreaInsets.top { if safeAreaTop > 0.0 { @@ -328,14 +326,9 @@ private extension PerformanceView { } class func keyWindow() -> UIWindow? { - if #available(iOS 13, *) { - return UIApplication.shared.windows.first(where: { $0.isKeyWindow }) - } else { - return UIApplication.shared.keyWindow - } + return UIApplication.shared.windows.first(where: { $0.isKeyWindow }) } - - @available(iOS 13, *) + class func keyWindowScene() -> UIWindowScene? { return UIApplication.shared.connectedScenes .filter { $0.activationState == .foregroundActive } diff --git a/PVSupport/Sources/PVSupport/Settings/PVSettingsModel.swift b/PVSupport/Sources/PVSupport/Settings/PVSettingsModel.swift index 036733184d..5b99b9fe39 100644 --- a/PVSupport/Sources/PVSupport/Settings/PVSettingsModel.swift +++ b/PVSupport/Sources/PVSupport/Settings/PVSettingsModel.swift @@ -228,8 +228,12 @@ extension MirroredSettings { @objc public class DebugOptions: NSObject { @objc public dynamic var useMetal = false + #if os(macOS) + @objc public dynamic var useSwiftUI = true + #else @objc public dynamic var useSwiftUI = false - @objc public dynamic var experimentalCores = false + #endif +// @objc public dynamic var experimentalCores = false @objc public dynamic var iCloudSync = false @objc public dynamic var unsupportedCores = false // @objc public dynamic var multiThreadedGL = BoolSetting(false, title: "Multi-threaded GL", info: "Use threaded GLES calls.") @@ -238,7 +242,11 @@ extension MirroredSettings { #if os(tvOS) @objc public dynamic var tvOSThemes = false #endif + #if os(iOS) + @objc public dynamic var movableButtons = false @objc public dynamic var onscreenJoypad = true + @objc public dynamic var onscreenJoypadWithKeyboard = true + #endif } public dynamic var debugOptions = DebugOptions() @@ -264,6 +272,8 @@ extension MirroredSettings { #endif public dynamic var imageSmoothing = false public dynamic var crtFilterEnabled = false + public dynamic var lcdFilterEnabled = false + public dynamic var metalFilter:String = "" public dynamic var integerScaleEnabled = false public dynamic var showRecentSaveStates = true @@ -274,10 +284,15 @@ extension MirroredSettings { public dynamic var showGameTitles = true public dynamic var gameLibraryScale = 1.0 - +#if os(tvOS) + public dynamic var webDavAlwaysOn = true +#else public dynamic var webDavAlwaysOn = false +#endif +#if canImport(UIKit) public dynamic var myiCadeControllerSetting = iCadeControllerSetting.disabled - + public dynamic var allRightShoulders = false +#endif public dynamic var controllerOpacity: Double = 0.8 public dynamic var buttonTints = true public dynamic var use8BitdoM30 = false @@ -288,8 +303,6 @@ extension MirroredSettings { public dynamic var missingButtonsAlwaysOn = false #endif - public dynamic var allRightShoulders = false - public dynamic var volume: Float = 1.0 public dynamic var volumeHUD = true @@ -297,4 +310,10 @@ extension MirroredSettings { public dynamic var haveWarnedAboutDebug = false public dynamic var collapsedSystems = Set() + +#if os(tvOS) + public dynamic var largeGameArt = true +#endif + + public dynamic var theme: ThemeOptions = .dark } diff --git a/PVSupport/Sources/PVSupport/Settings/ThemeOption.swift b/PVSupport/Sources/PVSupport/Settings/ThemeOption.swift new file mode 100644 index 0000000000..ced92f1f39 --- /dev/null +++ b/PVSupport/Sources/PVSupport/Settings/ThemeOption.swift @@ -0,0 +1,46 @@ +// +// ThemeOption.swift +// PVSupport +// +// Created by Dave Nicolson on 20.11.22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +@objc +public enum ThemeOptions: UInt, CustomStringConvertible, CaseIterable, UserDefaultsRepresentable { + case light + case dark + case auto + + public var description: String { + switch self { + case .light: return "Light" + case .dark: return "Dark" + case .auto: return "Auto" + } + } + + public var row: UInt { + return rawValue + } + + public static var themes: [ThemeOptions] { + return allCases + } + + public static func optionForRow(_ row: UInt) -> ThemeOptions { + switch row { + case 0: + return .light + case 1: + return .dark + case 2: + return .auto + default: + ELOG("Bad row \(row)") + return .dark + } + } +} diff --git a/PVSupport/Sources/PVSupport/System/ScreenType.swift b/PVSupport/Sources/PVSupport/System/ScreenType.swift new file mode 100644 index 0000000000..acbb855c8a --- /dev/null +++ b/PVSupport/Sources/PVSupport/System/ScreenType.swift @@ -0,0 +1,90 @@ +// +// ScreenType.swift +// PVSupport +// +// Created by Joseph Mattiello on 10/23/22. +// Copyright © 2022 Provenance Emu. All rights reserved. +// + +import Foundation + +@objc +public enum ScreenTypeObjC: UInt, CaseIterable, Codable { + case unknown + case monochromaticLCD + case colorLCD + case crt + case modern + case dotMatrix + + var isLCD: Bool { + switch self { + case .monochromaticLCD, .colorLCD: return true + default: return false + } + } + + var isCRT: Bool { + return self == .crt + } + + var isMonoChromatic: Bool { + switch self { + case .monochromaticLCD, .dotMatrix: return true + default: return false + } + } + + public init(screenType: ScreenType) { + switch screenType { + case .unknown: self = .unknown + case .monochromaticLCD: self = .monochromaticLCD + case .colorLCD: self = .colorLCD + case .crt: self = .crt + case .modern: self = .modern + case .dotMatrix: self = .dotMatrix + } + } +} + +public enum ScreenType: String, CaseIterable, Codable { + case unknown = "" + case monochromaticLCD = "MonoLCD" + case colorLCD = "ColorLCD" + case crt = "CRT" + case modern = "Modern" + case dotMatrix = "DotMatrix" + + var isLCD: Bool { + switch self { + case .monochromaticLCD, .colorLCD: return true + default: return false + } + } + + var isCRT: Bool { + return self == .crt + } + + var isMonoChromatic: Bool { + switch self { + case .monochromaticLCD, .dotMatrix: return true + default: return false + } + } + + var objcType: ScreenTypeObjC { + return .init(screenType: self) + } + + public init(screenType: ScreenTypeObjC) { + switch screenType { + case .unknown: self = .unknown + case .monochromaticLCD: self = .monochromaticLCD + case .colorLCD: self = .colorLCD + case .crt: self = .crt + case .modern: self = .modern + case .dotMatrix: self = .dotMatrix + } + } +} diff --git a/PVSupport/Sources/retro/audio/audio_driver.c b/PVSupport/Sources/retro/audio/audio_driver.c new file mode 100644 index 0000000000..12e858e147 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_driver.c @@ -0,0 +1,1025 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include + +#include +#include +#include + +#include "audio_driver.h" +#include "audio_resampler_driver.h" +#include "../record/record_driver.h" +#include "audio_thread_wrapper.h" + +#include "../command.h" +#include "../configuration.h" +#include "../retroarch.h" +#include "../runloop.h" +#include "../performance_counters.h" +#include "../verbosity.h" +#include "../list_special.h" + +#ifndef AUDIO_BUFFER_FREE_SAMPLES_COUNT +#define AUDIO_BUFFER_FREE_SAMPLES_COUNT (8 * 1024) +#endif + +struct audio_driver_input_data +{ + float *data; + + size_t data_ptr; + struct + { + size_t size; + size_t nonblock_size; + size_t block_size; + } chunk; + + + struct + { + float input; + bool control; + struct + { + double original; + double current; + } source_ratio; + } audio_rate; + + bool use_float; + + struct + { + int16_t *buf; + size_t ptr; + size_t size; + } rewind; + + rarch_dsp_filter_t *dsp; + + size_t driver_buffer_size; + + float volume_gain; + + struct + { + float *buf; + int16_t *conv_buf; + } output_samples; + + struct + { + unsigned buf[AUDIO_BUFFER_FREE_SAMPLES_COUNT]; + uint64_t count; + } free_samples; +}; + +static const audio_driver_t *audio_drivers[] = { +#ifdef HAVE_ALSA + &audio_alsa, +#if !defined(__QNX__) && defined(HAVE_THREADS) + &audio_alsathread, +#endif +#endif +#if defined(HAVE_OSS) || defined(HAVE_OSS_BSD) + &audio_oss, +#endif +#ifdef HAVE_RSOUND + &audio_rsound, +#endif +#ifdef HAVE_COREAUDIO + &audio_coreaudio, +#endif +#ifdef HAVE_AL + &audio_openal, +#endif +#ifdef HAVE_SL + &audio_opensl, +#endif +#ifdef HAVE_ROAR + &audio_roar, +#endif +#ifdef HAVE_JACK + &audio_jack, +#endif +#if defined(HAVE_SDL) || defined(HAVE_SDL2) + &audio_sdl, +#endif +#ifdef HAVE_XAUDIO + &audio_xa, +#endif +#ifdef HAVE_DSOUND + &audio_dsound, +#endif +#ifdef HAVE_PULSE + &audio_pulse, +#endif +#ifdef __CELLOS_LV2__ + &audio_ps3, +#endif +#ifdef XENON + &audio_xenon360, +#endif +#ifdef GEKKO + &audio_gx, +#endif +#ifdef EMSCRIPTEN + &audio_rwebaudio, +#endif +#if defined(PSP) || defined(VITA) + &audio_psp, +#endif +#ifdef _3DS + &audio_ctr_csnd, + &audio_ctr_dsp, +#endif + &audio_null, + NULL, +}; + +static struct audio_driver_input_data audio_driver_data; +static struct retro_audio_callback audio_callback; +static struct string_list *audio_driver_devices_list = NULL; +static struct retro_perf_counter resampler_proc = {0}; +static const rarch_resampler_t *audio_driver_resampler = NULL; +static void *audio_driver_resampler_data = NULL; +static bool audio_driver_active = false; +static bool audio_driver_data_own = false; +static const audio_driver_t *current_audio = NULL; +static void *audio_driver_context_audio_data = NULL; + +/** + * compute_audio_buffer_statistics: + * + * Computes audio buffer statistics. + * + **/ +static void compute_audio_buffer_statistics(void) +{ + unsigned i, low_water_size, high_water_size, avg, stddev; + float avg_filled, deviation; + uint64_t accum = 0; + uint64_t accum_var = 0; + unsigned low_water_count = 0; + unsigned high_water_count = 0; + unsigned samples = MIN( + audio_driver_data.free_samples.count, + AUDIO_BUFFER_FREE_SAMPLES_COUNT); + + if (samples < 3) + return; + + for (i = 1; i < samples; i++) + accum += audio_driver_data.free_samples.buf[i]; + + avg = accum / (samples - 1); + + for (i = 1; i < samples; i++) + { + int diff = avg - audio_driver_data.free_samples.buf[i]; + accum_var += diff * diff; + } + + stddev = (unsigned)sqrt((double)accum_var / (samples - 2)); + avg_filled = 1.0f - (float)avg / audio_driver_data.driver_buffer_size; + deviation = (float)stddev / audio_driver_data.driver_buffer_size; + + low_water_size = audio_driver_data.driver_buffer_size * 3 / 4; + high_water_size = audio_driver_data.driver_buffer_size / 4; + + for (i = 1; i < samples; i++) + { + if (audio_driver_data.free_samples.buf[i] >= low_water_size) + low_water_count++; + else if (audio_driver_data.free_samples.buf[i] <= high_water_size) + high_water_count++; + } + + VLOG(@"Average audio buffer saturation: %.2f %%, standard deviation (percentage points): %.2f %%.\n", + avg_filled * 100.0, deviation * 100.0); + VLOG(@"Amount of time spent close to underrun: %.2f %%. Close to blocking: %.2f %%.\n", + (100.0 * low_water_count) / (samples - 1), + (100.0 * high_water_count) / (samples - 1)); +} + +/** + * audio_driver_find_handle: + * @idx : index of driver to get handle to. + * + * Returns: handle to audio driver at index. Can be NULL + * if nothing found. + **/ +const void *audio_driver_find_handle(int idx) +{ + const void *drv = audio_drivers[idx]; + if (!drv) + return NULL; + return drv; +} + +/** + * audio_driver_find_ident: + * @idx : index of driver to get handle to. + * + * Returns: Human-readable identifier of audio driver at index. Can be NULL + * if nothing found. + **/ +const char *audio_driver_find_ident(int idx) +{ + const audio_driver_t *drv = audio_drivers[idx]; + if (!drv) + return NULL; + return drv->ident; +} + +/** + * config_get_audio_driver_options: + * + * Get an enumerated list of all audio driver names, separated by '|'. + * + * Returns: string listing of all audio driver names, separated by '|'. + **/ +const char *config_get_audio_driver_options(void) +{ + return char_list_new_special(STRING_LIST_AUDIO_DRIVERS, NULL); +} + +static bool uninit_audio(void) +{ + settings_t *settings = config_get_ptr(); + + if (current_audio && current_audio->free) + { + if (audio_driver_context_audio_data) + current_audio->free(audio_driver_context_audio_data); + audio_driver_context_audio_data = NULL; + } + + if (audio_driver_data.output_samples.conv_buf) + free(audio_driver_data.output_samples.conv_buf); + audio_driver_data.output_samples.conv_buf = NULL; + audio_driver_data.data_ptr = 0; + + if (audio_driver_data.rewind.buf) + free(audio_driver_data.rewind.buf); + audio_driver_data.rewind.buf = NULL; + audio_driver_data.rewind.size = 0; + + if (!settings->audio.enable) + { + audio_driver_unset_active(); + return false; + } + + audio_driver_deinit_resampler(); + + if (audio_driver_data.data) + free(audio_driver_data.data); + audio_driver_data.data = NULL; + + if (audio_driver_data.output_samples.buf) + free(audio_driver_data.output_samples.buf); + audio_driver_data.output_samples.buf = NULL; + + command_event(CMD_EVENT_DSP_FILTER_DEINIT, NULL); + + compute_audio_buffer_statistics(); + + return true; +} + +static bool audio_driver_init_internal(bool audio_cb_inited) +{ + size_t outsamples_max, max_bufsamples = AUDIO_CHUNK_SIZE_NONBLOCKING * 2; + settings_t *settings = config_get_ptr(); + + convert_s16_to_float_init_simd(); + convert_float_to_s16_init_simd(); + + /* Accomodate rewind since at some point we might have two full buffers. */ + outsamples_max = max_bufsamples * AUDIO_MAX_RATIO * + settings->slowmotion_ratio; + + audio_driver_data.output_samples.conv_buf = + (int16_t*)malloc(outsamples_max * sizeof(int16_t)); + /* Used for recording even if audio isn't enabled. */ + retro_assert(audio_driver_data.output_samples.conv_buf != NULL); + + if (!audio_driver_data.output_samples.conv_buf) + goto error; + + audio_driver_data.chunk.block_size = AUDIO_CHUNK_SIZE_BLOCKING; + audio_driver_data.chunk.nonblock_size = AUDIO_CHUNK_SIZE_NONBLOCKING; + audio_driver_data.chunk.size = audio_driver_data.chunk.block_size; + + /* Needs to be able to hold full content of a full max_bufsamples + * in addition to its own. */ + audio_driver_data.rewind.buf = (int16_t*)malloc + (max_bufsamples * sizeof(int16_t)); + retro_assert(audio_driver_data.rewind.buf != NULL); + + if (!audio_driver_data.rewind.buf) + goto error; + + audio_driver_data.rewind.size = max_bufsamples; + + if (!settings->audio.enable) + { + audio_driver_unset_active(); + return false; + } + + audio_driver_find_driver(); +#ifdef HAVE_THREADS + if (audio_cb_inited) + { + VLOG(@"Starting threaded audio driver ...\n"); + if (!audio_init_thread( + ¤t_audio, + &audio_driver_context_audio_data, + *settings->audio.device ? settings->audio.device : NULL, + settings->audio.out_rate, settings->audio.latency, + current_audio)) + { + ELOG(@"Cannot open threaded audio driver ... Exiting ...\n"); + retroarch_fail(1, "audio_driver_init_internal()"); + } + } + else +#endif + { + audio_driver_context_audio_data = + current_audio->init(*settings->audio.device ? + settings->audio.device : NULL, + settings->audio.out_rate, settings->audio.latency); + } + + if (!audio_driver_context_audio_data) + { + ELOG(@"Failed to initialize audio driver. Will continue without audio.\n"); + audio_driver_unset_active(); + } + + audio_driver_data.use_float = false; + if ( audio_driver_is_active() + && current_audio->use_float(audio_driver_context_audio_data)) + audio_driver_data.use_float = true; + + if (!settings->audio.sync && audio_driver_is_active()) + { + command_event(CMD_EVENT_AUDIO_SET_NONBLOCKING_STATE, NULL); + audio_driver_data.chunk.size = audio_driver_data.chunk.nonblock_size; + } + + if (audio_driver_data.audio_rate.input <= 0.0f) + { + /* Should never happen. */ + WLOG(@"Input rate is invalid (%.3f Hz). Using output rate (%u Hz).\n", + audio_driver_data.audio_rate.input, settings->audio.out_rate); + audio_driver_data.audio_rate.input = settings->audio.out_rate; + } + + audio_driver_data.audio_rate.source_ratio.original = + audio_driver_data.audio_rate.source_ratio.current = + (double)settings->audio.out_rate / audio_driver_data.audio_rate.input; + + if (!audio_driver_init_resampler()) + { + ELOG(@"Failed to initialize resampler \"%s\".\n", + settings->audio.resampler); + audio_driver_unset_active(); + } + + audio_driver_data.data = (float*) + malloc(max_bufsamples * sizeof(float)); + retro_assert(audio_driver_data.data != NULL); + + if (!audio_driver_data.data) + goto error; + + audio_driver_data.data_ptr = 0; + + retro_assert(settings->audio.out_rate < + audio_driver_data.audio_rate.input * AUDIO_MAX_RATIO); + + audio_driver_data.output_samples.buf = (float*) + malloc(outsamples_max * sizeof(float)); + retro_assert(audio_driver_data.output_samples.buf != NULL); + + if (!audio_driver_data.output_samples.buf) + goto error; + + audio_driver_data.audio_rate.control = false; + if ( + !audio_cb_inited + && audio_driver_is_active() + && settings->audio.rate_control + ) + { + /* Audio rate control requires write_avail + * and buffer_size to be implemented. */ + if (current_audio->buffer_size) + { + audio_driver_data.driver_buffer_size = + current_audio->buffer_size(audio_driver_context_audio_data); + audio_driver_data.audio_rate.control = true; + } + else + WLOG(@"Audio rate control was desired, but driver does not support needed features.\n"); + } + + command_event(CMD_EVENT_DSP_FILTER_INIT, NULL); + + audio_driver_data.free_samples.count = 0; + + /* Threaded driver is initially stopped. */ + if ( + audio_driver_is_active() + && !settings->audio.mute_enable + && audio_cb_inited + ) + audio_driver_start(); + + return true; + +error: + return audio_driver_deinit(); +} + +/* + * audio_driver_readjust_input_rate: + * + * Readjust the audio input rate. + */ +static void audio_driver_readjust_input_rate(void) +{ + settings_t *settings = config_get_ptr(); + unsigned write_idx = audio_driver_data.free_samples.count++ & + (AUDIO_BUFFER_FREE_SAMPLES_COUNT - 1); + int half_size = audio_driver_data.driver_buffer_size / 2; + int avail = + current_audio->write_avail(audio_driver_context_audio_data); + int delta_mid = avail - half_size; + double direction = (double)delta_mid / half_size; + double adjust = 1.0 + settings->audio.rate_control_delta * direction; + +#if 0 + RARCH_LOG_OUTPUT("Audio buffer is %u%% full\n", + (unsigned)(100 - (avail * 100) / audio_driver_data.driver_buffer_size)); +#endif + + audio_driver_data.free_samples.buf[write_idx] = avail; + audio_driver_data.audio_rate.source_ratio.current = + audio_driver_data.audio_rate.source_ratio.original * adjust; + +#if 0 + RARCH_LOG_OUTPUT("New rate: %lf, Orig rate: %lf\n", + audio_driver_data.audio_rate.source_ratio.current, + audio_driver_data.audio_rate.source_ratio.original); +#endif +} + +void audio_driver_set_nonblocking_state(bool enable) +{ + settings_t *settings = config_get_ptr(); + if ( + audio_driver_is_active() + && audio_driver_context_audio_data + ) + current_audio->set_nonblock_state(audio_driver_context_audio_data, + settings->audio.sync ? enable : true); + + audio_driver_data.chunk.size = enable ? + audio_driver_data.chunk.nonblock_size : + audio_driver_data.chunk.block_size; +} + +/** + * audio_driver_flush: + * @data : pointer to audio buffer. + * @right : amount of samples to write. + * + * Writes audio samples to audio driver. Will first + * perform DSP processing (if enabled) and resampling. + * + * Returns: true (1) if audio samples were written to the audio + * driver, false (0) in case of an error. + **/ +static bool audio_driver_flush(const int16_t *data, size_t samples) +{ + static struct retro_perf_counter audio_convert_s16 = {0}; + static struct retro_perf_counter audio_convert_float = {0}; + static struct retro_perf_counter audio_dsp = {0}; + struct resampler_data src_data = {0}; + struct rarch_dsp_data dsp_data = {0}; + const void *output_data = NULL; + unsigned output_frames = 0; + size_t output_size = sizeof(float); + settings_t *settings = config_get_ptr(); + + recording_push_audio(data, samples); + + if (runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL) || settings->audio.mute_enable) + return true; + if (!audio_driver_is_active()) + return false; + if (!audio_driver_data.data) + return false; + + performance_counter_init(&audio_convert_s16, "audio_convert_s16"); + performance_counter_start(&audio_convert_s16); + convert_s16_to_float(audio_driver_data.data, data, samples, + audio_driver_data.volume_gain); + performance_counter_stop(&audio_convert_s16); + + src_data.data_in = audio_driver_data.data; + src_data.input_frames = samples >> 1; + + dsp_data.input = audio_driver_data.data; + dsp_data.input_frames = samples >> 1; + + if (audio_driver_data.dsp) + { + performance_counter_init(&audio_dsp, "audio_dsp"); + performance_counter_start(&audio_dsp); + rarch_dsp_filter_process(audio_driver_data.dsp, &dsp_data); + performance_counter_stop(&audio_dsp); + + if (dsp_data.output) + { + src_data.data_in = dsp_data.output; + src_data.input_frames = dsp_data.output_frames; + } + } + + src_data.data_out = audio_driver_data.output_samples.buf; + + if (audio_driver_data.audio_rate.control) + audio_driver_readjust_input_rate(); + + src_data.ratio = audio_driver_data.audio_rate.source_ratio.current; + + if (runloop_ctl(RUNLOOP_CTL_IS_SLOWMOTION, NULL)) + src_data.ratio *= settings->slowmotion_ratio; + + audio_driver_process_resampler(&src_data); + + output_data = audio_driver_data.output_samples.buf; + output_frames = src_data.output_frames; + + if (!audio_driver_data.use_float) + { + performance_counter_init(&audio_convert_float, "audio_convert_float"); + performance_counter_start(&audio_convert_float); + convert_float_to_s16(audio_driver_data.output_samples.conv_buf, + (const float*)output_data, output_frames * 2); + performance_counter_stop(&audio_convert_float); + + output_data = audio_driver_data.output_samples.conv_buf; + output_size = sizeof(int16_t); + } + + if (current_audio->write(audio_driver_context_audio_data, + output_data, output_frames * output_size * 2) < 0) + { + audio_driver_unset_active(); + return false; + } + + return true; +} + +/** + * audio_driver_sample: + * @left : value of the left audio channel. + * @right : value of the right audio channel. + * + * Audio sample render callback function. + **/ +void audio_driver_sample(int16_t left, int16_t right) +{ + audio_driver_data.output_samples.conv_buf[audio_driver_data.data_ptr++] = left; + audio_driver_data.output_samples.conv_buf[audio_driver_data.data_ptr++] = right; + + if (audio_driver_data.data_ptr < audio_driver_data.chunk.size) + return; + + audio_driver_flush(audio_driver_data.output_samples.conv_buf, + audio_driver_data.data_ptr); + + audio_driver_data.data_ptr = 0; +} + +/** + * audio_driver_sample_batch: + * @data : pointer to audio buffer. + * @frames : amount of audio frames to push. + * + * Batched audio sample render callback function. + * + * Returns: amount of frames sampled. Will be equal to @frames + * unless @frames exceeds (AUDIO_CHUNK_SIZE_NONBLOCKING / 2). + **/ +size_t audio_driver_sample_batch(const int16_t *data, size_t frames) +{ + if (frames > (AUDIO_CHUNK_SIZE_NONBLOCKING >> 1)) + frames = AUDIO_CHUNK_SIZE_NONBLOCKING >> 1; + + audio_driver_flush(data, frames << 1); + + return frames; +} + +/** + * audio_driver_sample_rewind: + * @left : value of the left audio channel. + * @right : value of the right audio channel. + * + * Audio sample render callback function (rewind version). + * This callback function will be used instead of + * audio_driver_sample when rewinding is activated. + **/ +void audio_driver_sample_rewind(int16_t left, int16_t right) +{ + audio_driver_data.rewind.buf[--audio_driver_data.rewind.ptr] = right; + audio_driver_data.rewind.buf[--audio_driver_data.rewind.ptr] = left; +} + +/** + * audio_driver_sample_batch_rewind: + * @data : pointer to audio buffer. + * @frames : amount of audio frames to push. + * + * Batched audio sample render callback function (rewind version). + * + * This callback function will be used instead of + * audio_driver_sample_batch when rewinding is activated. + * + * Returns: amount of frames sampled. Will be equal to @frames + * unless @frames exceeds (AUDIO_CHUNK_SIZE_NONBLOCKING / 2). + **/ +size_t audio_driver_sample_batch_rewind(const int16_t *data, size_t frames) +{ + size_t i; + size_t samples = frames << 1; + + for (i = 0; i < samples; i++) + audio_driver_data.rewind.buf[--audio_driver_data.rewind.ptr] = data[i]; + + return frames; +} + +void audio_driver_set_volume_gain(float gain) +{ + audio_driver_data.volume_gain = gain; +} + +void audio_driver_dsp_filter_free(void) +{ + if (audio_driver_data.dsp) + rarch_dsp_filter_free(audio_driver_data.dsp); + audio_driver_data.dsp = NULL; +} + +void audio_driver_dsp_filter_init(const char *device) +{ + audio_driver_data.dsp = rarch_dsp_filter_new( + device, audio_driver_data.audio_rate.input); + + if (!audio_driver_data.dsp) + ELOG(@"[DSP]: Failed to initialize DSP filter \"%s\".\n", device); +} + +void audio_driver_set_buffer_size(size_t bufsize) +{ + audio_driver_data.driver_buffer_size = bufsize; +} + +void audio_driver_monitor_adjust_system_rates(void) +{ + float timing_skew; + settings_t *settings = config_get_ptr(); + const struct retro_system_timing *info = NULL; + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); + + if (av_info) + info = (const struct retro_system_timing*)&av_info->timing; + + if (!info || info->sample_rate <= 0.0) + return; + + timing_skew = fabs(1.0f - info->fps / settings->video.refresh_rate); + audio_driver_data.audio_rate.input = info->sample_rate; + + if (timing_skew <= settings->audio.max_timing_skew) + audio_driver_data.audio_rate.input *= (settings->video.refresh_rate / info->fps); + + VLOG(@"Set audio input rate to: %.2f Hz.\n", + audio_driver_data.audio_rate.input); +} + +void audio_driver_setup_rewind(void) +{ + unsigned i; + + /* Push audio ready to be played. */ + audio_driver_data.rewind.ptr = audio_driver_data.rewind.size; + + for (i = 0; i < audio_driver_data.data_ptr; i += 2) + { + audio_driver_data.rewind.buf[--audio_driver_data.rewind.ptr] = + audio_driver_data.output_samples.conv_buf[i + 1]; + + audio_driver_data.rewind.buf[--audio_driver_data.rewind.ptr] = + audio_driver_data.output_samples.conv_buf[i + 0]; + } + + audio_driver_data.data_ptr = 0; +} + +bool audio_driver_find_driver(void) +{ + int i; + driver_ctx_info_t drv; + settings_t *settings = config_get_ptr(); + + drv.label = "audio_driver"; + drv.s = settings->audio.driver; + + driver_ctl(RARCH_DRIVER_CTL_FIND_INDEX, &drv); + + i = drv.len; + + if (i >= 0) + current_audio = (const audio_driver_t*)audio_driver_find_handle(i); + else + { + unsigned d; + ELOG(@"Couldn't find any audio driver named \"%s\"\n", + settings->audio.driver); + RARCH_LOG_OUTPUT("Available audio drivers are:\n"); + for (d = 0; audio_driver_find_handle(d); d++) + RARCH_LOG_OUTPUT("\t%s\n", audio_driver_find_ident(d)); + WLOG(@"Going to default to first audio driver...\n"); + + current_audio = (const audio_driver_t*)audio_driver_find_handle(0); + + if (!current_audio) + retroarch_fail(1, "audio_driver_find()"); + } + + return true; +} + +void audio_driver_deinit_resampler(void) +{ + rarch_resampler_freep(&audio_driver_resampler, + &audio_driver_resampler_data); +} + +bool audio_driver_free_devices_list(void) +{ + if (!current_audio || !current_audio->device_list_free + || !audio_driver_context_audio_data) + return false; + current_audio->device_list_free(audio_driver_context_audio_data, + audio_driver_devices_list); + audio_driver_devices_list = NULL; + return true; +} + +bool audio_driver_new_devices_list(void) +{ + if (!current_audio || !current_audio->device_list_new + || !audio_driver_context_audio_data) + return false; + audio_driver_devices_list = (struct string_list*) + current_audio->device_list_new(audio_driver_context_audio_data); + if (!audio_driver_devices_list) + return false; + return true; +} + +bool audio_driver_init(void) +{ + return audio_driver_init_internal(audio_callback.callback != NULL); +} + +bool audio_driver_get_devices_list(void **data) +{ + struct string_list**ptr = (struct string_list**)data; + if (!ptr) + return false; + *ptr = audio_driver_devices_list; + return true; +} + +bool audio_driver_init_resampler(void) +{ + settings_t *settings = config_get_ptr(); + return rarch_resampler_realloc( + &audio_driver_resampler_data, + &audio_driver_resampler, + settings->audio.resampler, + audio_driver_data.audio_rate.source_ratio.original); +} + +void audio_driver_process_resampler(struct resampler_data *data) +{ + performance_counter_init(&resampler_proc, "resampler_proc"); + performance_counter_start(&resampler_proc); + rarch_resampler_process(audio_driver_resampler, + audio_driver_resampler_data, data); + performance_counter_stop(&resampler_proc); +} + +bool audio_driver_deinit(void) +{ + audio_driver_free_devices_list(); + if (!uninit_audio()) + return false; + return true; +} + +bool audio_driver_set_callback(const void *data) +{ + const struct retro_audio_callback *cb = (const struct retro_audio_callback*)data; +#ifdef HAVE_NETPLAY + global_t *global = global_get_ptr(); +#endif + + if (recording_driver_get_data_ptr()) /* A/V sync is a must. */ + return false; + +#ifdef HAVE_NETPLAY + if (global->netplay.enable) + return false; +#endif + if (cb) + audio_callback = *cb; + + return true; +} + +bool audio_driver_enable_callback(void) +{ + if (!audio_driver_has_callback()) + return false; + if (audio_callback.set_state) + audio_callback.set_state(true); + return true; +} + +bool audio_driver_disable_callback(void) +{ + if (!audio_driver_has_callback()) + return false; + + if (audio_callback.set_state) + audio_callback.set_state(false); + return true; +} + +/* Sets audio monitor rate to new value. */ +void audio_driver_monitor_set_rate(void) +{ + settings_t *settings = config_get_ptr(); + double new_src_ratio = (double)settings->audio.out_rate / + audio_driver_data.audio_rate.input; + + audio_driver_data.audio_rate.source_ratio.original = new_src_ratio; + audio_driver_data.audio_rate.source_ratio.current = new_src_ratio; +} + +bool audio_driver_callback(void) +{ + if (!audio_driver_has_callback()) + return false; + + if (audio_callback.callback) + audio_callback.callback(); + + return true; +} + +bool audio_driver_has_callback(void) +{ + return audio_callback.callback; +} + +bool audio_driver_toggle_mute(void) +{ + settings_t *settings = config_get_ptr(); + if (!audio_driver_context_audio_data) + return false; + if (!audio_driver_is_active()) + return false; + + settings->audio.mute_enable = !settings->audio.mute_enable; + + if (settings->audio.mute_enable) + command_event(CMD_EVENT_AUDIO_STOP, NULL); + else if (!command_event(CMD_EVENT_AUDIO_START, NULL)) + { + audio_driver_unset_active(); + return false; + } + return true; +} + +bool audio_driver_start(void) +{ + if (!current_audio || !current_audio->start + || !audio_driver_context_audio_data) + return false; + return current_audio->start(audio_driver_context_audio_data); +} + +bool audio_driver_stop(void) +{ + if (!current_audio || !current_audio->stop + || !audio_driver_context_audio_data) + return false; + return current_audio->stop(audio_driver_context_audio_data); +} + +void audio_driver_unset_callback(void) +{ + audio_callback.callback = NULL; + audio_callback.set_state = NULL; +} + +bool audio_driver_alive(void) +{ + if (!current_audio || !current_audio->alive + || !audio_driver_context_audio_data) + return false; + return current_audio->alive(audio_driver_context_audio_data); +} + +void audio_driver_frame_is_reverse(void) +{ + /* We just rewound. Flush rewind audio buffer. */ + audio_driver_flush( + audio_driver_data.rewind.buf + audio_driver_data.rewind.ptr, + audio_driver_data.rewind.size - audio_driver_data.rewind.ptr); +} + +void audio_driver_destroy_data(void) +{ + audio_driver_context_audio_data = NULL; +} + +void audio_driver_set_own_driver(void) +{ + audio_driver_data_own = true; +} + +void audio_driver_unset_own_driver(void) +{ + audio_driver_data_own = false; +} + +bool audio_driver_owns_driver(void) +{ + return audio_driver_data_own; +} + +void audio_driver_set_active(void) +{ + audio_driver_active = true; +} + +void audio_driver_unset_active(void) +{ + audio_driver_active = false; +} + +bool audio_driver_is_active(void) +{ + return audio_driver_active; +} + +void audio_driver_destroy(void) +{ + audio_driver_active = false; + audio_driver_data_own = false; + current_audio = NULL; +} diff --git a/PVSupport/Sources/retro/audio/audio_driver.h b/PVSupport/Sources/retro/audio/audio_driver.h new file mode 100644 index 0000000000..f3748e40ed --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_driver.h @@ -0,0 +1,222 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __AUDIO_DRIVER__H +#define __AUDIO_DRIVER__H + +#include +#include +#include + +#include +#include + +#include "audio_dsp_filter.h" +#include "audio_resampler_driver.h" + +RETRO_BEGIN_DECLS + +#define AUDIO_CHUNK_SIZE_BLOCKING 512 + +/* So we don't get complete line-noise when fast-forwarding audio. */ +#define AUDIO_CHUNK_SIZE_NONBLOCKING 2048 + +#define AUDIO_MAX_RATIO 16 + +typedef struct audio_driver +{ + /* Creates and initializes handle to audio driver. + * + * Returns: audio driver handle on success, otherwise NULL. + **/ + void *(*init)(const char *device, unsigned rate, unsigned latency); + + /* + * @data : Pointer to audio data handle. + * @buf : Audio buffer data. + * @size : Size of audio buffer. + * + * Write samples to audio driver. + **/ + ssize_t (*write)(void *data, const void *buf, size_t size); + + /* Stops driver. */ + bool (*stop)(void *data); + + /* Starts driver. */ + bool (*start)(void *data); + + /* Is the audio driver currently running? */ + bool (*alive)(void *data); + + /* Should we care about blocking in audio thread? Fast forwarding. */ + void (*set_nonblock_state)(void *data, bool toggle); + + /* Frees driver data. */ + void (*free)(void *data); + + /* Defines if driver will take standard floating point samples, + * or int16_t samples. */ + bool (*use_float)(void *data); + + /* Human-readable identifier. */ + const char *ident; + + /* Optional. Get audio device list (allocates, caller has to free this) */ + void *(*device_list_new)(void *data); + + /* Optional. Frees audio device list */ + void (*device_list_free)(void *data, void *data2); + + /* Optional. */ + size_t (*write_avail)(void *data); + + size_t (*buffer_size)(void *data); +} audio_driver_t; + +void audio_driver_destroy_data(void); + +void audio_driver_set_own_driver(void); + +void audio_driver_unset_own_driver(void); + +void audio_driver_set_active(void); + +void audio_driver_unset_active(void); + +bool audio_driver_is_active(void); + +void audio_driver_destroy(void); + +void audio_driver_deinit_resampler(void); + +bool audio_driver_init_resampler(void); + +void audio_driver_process_resampler(struct resampler_data *data); + +bool audio_driver_free_devices_list(void); + +bool audio_driver_new_devices_list(void); + +bool audio_driver_enable_callback(void); + +bool audio_driver_disable_callback(void); + +/** + * audio_driver_find_handle: + * @index : index of driver to get handle to. + * + * Returns: handle to audio driver at index. Can be NULL + * if nothing found. + **/ +const void *audio_driver_find_handle(int index); + +/** + * audio_driver_find_ident: + * @index : index of driver to get handle to. + * + * Returns: Human-readable identifier of audio driver at index. Can be NULL + * if nothing found. + **/ +const char *audio_driver_find_ident(int index); + +void audio_driver_set_nonblocking_state(bool enable); + +/** + * config_get_audio_driver_options: + * + * Get an enumerated list of all audio driver names, separated by '|'. + * + * Returns: string listing of all audio driver names, separated by '|'. + **/ +const char* config_get_audio_driver_options(void); + +void audio_driver_sample(int16_t left, int16_t right); + +size_t audio_driver_sample_batch(const int16_t *data, size_t frames); + +void audio_driver_sample_rewind(int16_t left, int16_t right); + +size_t audio_driver_sample_batch_rewind(const int16_t *data, size_t frames); + +void audio_driver_set_volume_gain(float gain); + +void audio_driver_dsp_filter_free(void); + +void audio_driver_dsp_filter_init(const char *device); + +void audio_driver_set_buffer_size(size_t bufsize); + +bool audio_driver_get_devices_list(void **ptr); + +void audio_driver_setup_rewind(void); + +void audio_driver_monitor_adjust_system_rates(void); + +bool audio_driver_set_callback(const void *data); + +bool audio_driver_callback(void); + +bool audio_driver_has_callback(void); + +/* Sets audio monitor rate to new value. */ +void audio_driver_monitor_set_rate(void); + +bool audio_driver_find_driver(void); + +bool audio_driver_toggle_mute(void); + +bool audio_driver_start(void); + +bool audio_driver_stop(void); + +bool audio_driver_owns_driver(void); + +void audio_driver_unset_callback(void); + +void audio_driver_frame_is_reverse(void); + +bool audio_driver_alive(void); + +bool audio_driver_deinit(void); + +bool audio_driver_init(void); + +extern audio_driver_t audio_rsound; +extern audio_driver_t audio_oss; +extern audio_driver_t audio_alsa; +extern audio_driver_t audio_alsathread; +extern audio_driver_t audio_roar; +extern audio_driver_t audio_openal; +extern audio_driver_t audio_opensl; +extern audio_driver_t audio_jack; +extern audio_driver_t audio_sdl; +extern audio_driver_t audio_xa; +extern audio_driver_t audio_pulse; +extern audio_driver_t audio_dsound; +extern audio_driver_t audio_coreaudio; +extern audio_driver_t audio_xenon360; +extern audio_driver_t audio_ps3; +extern audio_driver_t audio_gx; +extern audio_driver_t audio_psp; +extern audio_driver_t audio_ctr_csnd; +extern audio_driver_t audio_ctr_dsp; +extern audio_driver_t audio_rwebaudio; +extern audio_driver_t audio_null; + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/audio/audio_dsp_filter.c b/PVSupport/Sources/retro/audio/audio_dsp_filter.c new file mode 100644 index 0000000000..e837b39015 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_dsp_filter.c @@ -0,0 +1,324 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include + +#include +#include + +#include +#include +#include + +#include "audio_dsp_filter.h" +#include "audio_filters/dspfilter.h" + +#include "../config_file_userdata.h" +#include "../frontend/frontend_driver.h" +#include "../performance_counters.h" +#include "../dynamic.h" + +struct rarch_dsp_plug +{ +#ifdef HAVE_DYLIB + dylib_t lib; +#endif + const struct dspfilter_implementation *impl; +}; + +struct rarch_dsp_instance +{ + const struct dspfilter_implementation *impl; + void *impl_data; +}; + +struct rarch_dsp_filter +{ + config_file_t *conf; + + struct rarch_dsp_plug *plugs; + unsigned num_plugs; + + struct rarch_dsp_instance *instances; + unsigned num_instances; +}; + +static const struct dspfilter_implementation *find_implementation( + rarch_dsp_filter_t *dsp, const char *ident) +{ + unsigned i; + for (i = 0; i < dsp->num_plugs; i++) + { + if (!strcmp(dsp->plugs[i].impl->short_ident, ident)) + return dsp->plugs[i].impl; + } + + return NULL; +} + +static const struct dspfilter_config dspfilter_config = { + config_userdata_get_float, + config_userdata_get_int, + config_userdata_get_float_array, + config_userdata_get_int_array, + config_userdata_get_string, + config_userdata_free, +}; + +static bool create_filter_graph(rarch_dsp_filter_t *dsp, float sample_rate) +{ + unsigned i, filters = 0; + + if (!config_get_uint(dsp->conf, "filters", &filters)) + return false; + + dsp->instances = (struct rarch_dsp_instance*) + calloc(filters, sizeof(*dsp->instances)); + if (!dsp->instances) + return false; + + dsp->num_instances = filters; + + for (i = 0; i < filters; i++) + { + struct config_file_userdata userdata; + struct dspfilter_info info; + char key[64] = {0}; + char name[64] = {0}; + + info.input_rate = sample_rate; + + snprintf(key, sizeof(key), "filter%u", i); + + if (!config_get_array(dsp->conf, key, name, sizeof(name))) + return false; + + dsp->instances[i].impl = find_implementation(dsp, name); + if (!dsp->instances[i].impl) + return false; + + userdata.conf = dsp->conf; + /* Index-specific configs take priority over ident-specific. */ + userdata.prefix[0] = key; + userdata.prefix[1] = dsp->instances[i].impl->short_ident; + + dsp->instances[i].impl_data = dsp->instances[i].impl->init(&info, &dspfilter_config, &userdata); + if (!dsp->instances[i].impl_data) + return false; + } + + return true; +} + +#if defined(HAVE_FILTERS_BUILTIN) +extern const struct dspfilter_implementation *panning_dspfilter_get_implementation(dspfilter_simd_mask_t mask); +extern const struct dspfilter_implementation *iir_dspfilter_get_implementation(dspfilter_simd_mask_t mask); +extern const struct dspfilter_implementation *echo_dspfilter_get_implementation(dspfilter_simd_mask_t mask); +extern const struct dspfilter_implementation *phaser_dspfilter_get_implementation(dspfilter_simd_mask_t mask); +extern const struct dspfilter_implementation *wahwah_dspfilter_get_implementation(dspfilter_simd_mask_t mask); +extern const struct dspfilter_implementation *eq_dspfilter_get_implementation(dspfilter_simd_mask_t mask); +extern const struct dspfilter_implementation *chorus_dspfilter_get_implementation(dspfilter_simd_mask_t mask); + +static const dspfilter_get_implementation_t dsp_plugs_builtin[] = { + panning_dspfilter_get_implementation, + iir_dspfilter_get_implementation, + echo_dspfilter_get_implementation, + phaser_dspfilter_get_implementation, + wahwah_dspfilter_get_implementation, + eq_dspfilter_get_implementation, + chorus_dspfilter_get_implementation, +}; + +static bool append_plugs(rarch_dsp_filter_t *dsp, struct string_list *list) +{ + unsigned i; + dspfilter_simd_mask_t mask = cpu_features_get(); + + (void)list; + + dsp->plugs = (struct rarch_dsp_plug*) + calloc(ARRAY_SIZE(dsp_plugs_builtin), sizeof(*dsp->plugs)); + if (!dsp->plugs) + return false; + + dsp->num_plugs = ARRAY_SIZE(dsp_plugs_builtin); + + for (i = 0; i < ARRAY_SIZE(dsp_plugs_builtin); i++) + { + dsp->plugs[i].impl = dsp_plugs_builtin[i](mask); + if (!dsp->plugs[i].impl) + return false; + } + + return true; +} +#elif defined(HAVE_DYLIB) +static bool append_plugs(rarch_dsp_filter_t *dsp, struct string_list *list) +{ + unsigned i; + dspfilter_simd_mask_t mask = cpu_features_get(); + + for (i = 0; i < list->size; i++) + { + const struct dspfilter_implementation *impl = NULL; + struct rarch_dsp_plug *new_plugs = NULL; + dylib_t lib = dylib_load(list->elems[i].data); + dspfilter_get_implementation_t cb; + + if (!lib) + continue; + + cb = (dspfilter_get_implementation_t)dylib_proc(lib, "dspfilter_get_implementation"); + if (!cb) + { + dylib_close(lib); + continue; + } + + impl = cb(mask); + if (!impl) + { + dylib_close(lib); + continue; + } + + if (impl->api_version != DSPFILTER_API_VERSION) + { + dylib_close(lib); + continue; + } + + new_plugs = (struct rarch_dsp_plug*) + realloc(dsp->plugs, sizeof(*dsp->plugs) * (dsp->num_plugs + 1)); + if (!new_plugs) + { + dylib_close(lib); + return false; + } + + /* Found plug. */ + + dsp->plugs = new_plugs; + dsp->plugs[dsp->num_plugs].lib = lib; + dsp->plugs[dsp->num_plugs].impl = impl; + dsp->num_plugs++; + } + + return true; +} +#endif + +rarch_dsp_filter_t *rarch_dsp_filter_new( + const char *filter_config, float sample_rate) +{ +#if !defined(HAVE_FILTERS_BUILTIN) && defined(HAVE_DYLIB) + char basedir[PATH_MAX_LENGTH]; + char ext_name[PATH_MAX_LENGTH]; +#endif + struct string_list *plugs = NULL; + rarch_dsp_filter_t *dsp = NULL; + + dsp = (rarch_dsp_filter_t*)calloc(1, sizeof(*dsp)); + if (!dsp) + return NULL; + + dsp->conf = config_file_new(filter_config); + if (!dsp->conf) /* Did not find config. */ + goto error; + +#if !defined(HAVE_FILTERS_BUILTIN) && defined(HAVE_DYLIB) + fill_pathname_basedir(basedir, filter_config, sizeof(basedir)); + + if (!frontend_driver_get_core_extension(ext_name, sizeof(ext_name))) + goto error; + + plugs = dir_list_new(basedir, ext_name, false, false, false); + if (!plugs) + goto error; +#endif + +#if defined(HAVE_DYLIB) || defined(HAVE_FILTERS_BUILTIN) + if (!append_plugs(dsp, plugs)) + goto error; +#endif + + if (plugs) + string_list_free(plugs); + plugs = NULL; + + if (!create_filter_graph(dsp, sample_rate)) + goto error; + + return dsp; + +error: + if (plugs) + string_list_free(plugs); + rarch_dsp_filter_free(dsp); + return NULL; +} + +void rarch_dsp_filter_free(rarch_dsp_filter_t *dsp) +{ + unsigned i; + if (!dsp) + return; + + for (i = 0; i < dsp->num_instances; i++) + { + if (dsp->instances[i].impl_data && dsp->instances[i].impl) + dsp->instances[i].impl->free(dsp->instances[i].impl_data); + } + free(dsp->instances); + +#ifdef HAVE_DYLIB + for (i = 0; i < dsp->num_plugs; i++) + { + if (dsp->plugs[i].lib) + dylib_close(dsp->plugs[i].lib); + } + free(dsp->plugs); +#endif + + if (dsp->conf) + config_file_free(dsp->conf); + + free(dsp); +} + +void rarch_dsp_filter_process(rarch_dsp_filter_t *dsp, + struct rarch_dsp_data *data) +{ + unsigned i; + struct dspfilter_output output = {0}; + struct dspfilter_input input = {0}; + + output.samples = data->input; + output.frames = data->input_frames; + + for (i = 0; i < dsp->num_instances; i++) + { + input.samples = output.samples; + input.frames = output.frames; + dsp->instances[i].impl->process( + dsp->instances[i].impl_data, &output, &input); + } + + data->output = output.samples; + data->output_frames = output.frames; +} diff --git a/PVSupport/Sources/retro/audio/audio_dsp_filter.h b/PVSupport/Sources/retro/audio/audio_dsp_filter.h new file mode 100644 index 0000000000..8fd1578f87 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_dsp_filter.h @@ -0,0 +1,47 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __AUDIO_DSP_FILTER_H__ +#define __AUDIO_DSP_FILTER_H__ + +#include + +RETRO_BEGIN_DECLS + +typedef struct rarch_dsp_filter rarch_dsp_filter_t; + +rarch_dsp_filter_t *rarch_dsp_filter_new(const char *filter_config, + float sample_rate); + +void rarch_dsp_filter_free(rarch_dsp_filter_t *dsp); + +struct rarch_dsp_data +{ + float *input; + unsigned input_frames; + + /* Set by rarch_dsp_filter_process(). */ + float *output; + unsigned output_frames; +}; + +void rarch_dsp_filter_process(rarch_dsp_filter_t *dsp, + struct rarch_dsp_data *data); + +RETRO_END_DECLS + +#endif + diff --git a/PVSupport/Sources/retro/audio/audio_filters/BassBoost.dsp b/PVSupport/Sources/retro/audio/audio_filters/BassBoost.dsp new file mode 100644 index 0000000000..db9890526d --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/BassBoost.dsp @@ -0,0 +1,12 @@ +filters = 2 +filter0 = iir +filter1 = panning + +iir_gain = 10.0 +iir_type = BBOOST +iir_frequency = 200.0 + +# Avoids clipping. +panning_left_mix = "0.3 0.0" +panning_right_mix = "0.0 0.3" + diff --git a/PVSupport/Sources/retro/audio/audio_filters/Chorus.dsp b/PVSupport/Sources/retro/audio/audio_filters/Chorus.dsp new file mode 100644 index 0000000000..f48b3c3897 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/Chorus.dsp @@ -0,0 +1,14 @@ +filters = 1 +filter0 = chorus + +# Controls the base delay of the chorus (milliseconds). +# chorus_delay_ms = 25.0 +# +# Controls the depth of the delay. The delay will vary between delay_ms +/- depth_ms. +# chorus_depth_ms = 1.0 +# +# Frequency of LFO which controls delay. +# chorus_lfo_freq = 0.5 +# +# Controls dry/wet-ness of effect. 1.0 = full chorus, 0.0 = no chorus. +# chorus_drywet = 0.8 diff --git a/PVSupport/Sources/retro/audio/audio_filters/EQ.dsp b/PVSupport/Sources/retro/audio/audio_filters/EQ.dsp new file mode 100644 index 0000000000..5a69a68de9 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/EQ.dsp @@ -0,0 +1,41 @@ +filters = 1 +filter0 = eq + +# Defaults + +# Beta factor for Kaiser window. +# Lower values will allow better frequency resolution, but more ripple. +# eq_window_beta = 4.0 + +# The block size on which FFT is done. +# Too high value requires more processing as well as longer latency but +# allows finer-grained control over the spectrum. +# eq_block_size_log2 = 8 + +# An array of which frequencies to control. +# You can create an arbitrary amount of these sampling points. +# The EQ will try to create a frequency response which fits well to these points. +# The filter response is linearly interpolated between sampling points here. +# +# It is implied that 0 Hz (DC) and Nyquist have predefined gains of 0 dB which are interpolated against. +# If you want a "peak" in the spectrum or similar, you have to define close points to say, 0 dB. +# +# E.g.: A boost of 3 dB at 1 kHz can be expressed as. +# eq_frequencies = "500 1000 2000" +# eq_gains = "0 3 0" +# Due to frequency domain smearing, you will not get exactly +3 dB at 1 kHz. + +# By default, this filter has a flat frequency response. + +# Dumps the impulse response generated by the EQ as a plain-text file +# with one coefficient per line. +# eq_impulse_response_output = "eq_impulse.txt" +# +# Using GNU Octave or Matlab, you can plot the response with: +# +# f = fopen('/path/to/eq_impulse.txt'); +# l = textscan(f, '%f'); +# res = l{1}; +# freqz(res, 1, 4096, 48000); +# +# It will give the response in Hz; 48000 is the default Output Rate of RetroArch diff --git a/PVSupport/Sources/retro/audio/audio_filters/Echo.dsp b/PVSupport/Sources/retro/audio/audio_filters/Echo.dsp new file mode 100644 index 0000000000..b92bdcc15e --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/Echo.dsp @@ -0,0 +1,19 @@ +filters = 1 +filter0 = echo + +# Somewhat fancy Echo filter. Can take any number of echo channels with varying delays (ms) and feedback factors. +# Echo output from all channels can be fed back into each other to create a somewhat reverb-like effect if desired. + +# Defaults, 200 ms delay echo with feedback: +# Delay in ms. Takes an array with multiple channels. +# echo_delay = "200" +# Feedback factor for echo. +# echo_feedback = "0.5" +# Overall echo amplification. If too high, the echo becomes unstable due to feedback. +# echo_amp = "0.2" + +# Reverby preset. +# echo_delay = " 60 80 120 172 200 320 380" +# echo_feedback = "0.5 0.5 0.4 0.3 0.5 0.3 0.2" + +# echo_amp = "0.12" diff --git a/PVSupport/Sources/retro/audio/audio_filters/EchoReverb.dsp b/PVSupport/Sources/retro/audio/audio_filters/EchoReverb.dsp new file mode 100644 index 0000000000..502effe164 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/EchoReverb.dsp @@ -0,0 +1,12 @@ +filters = 2 +filter0 = echo +filter1 = reverb + +echo_delay = "200" +echo_feedback = "0.6" +echo_amp = "0.25" + +reverb_roomwidth = 0.75 +reverb_roomsize = 0.75 +reverb_damping = 1.0 +reverb_wettime = 0.3 diff --git a/PVSupport/Sources/retro/audio/audio_filters/HighShelfDampen.dsp b/PVSupport/Sources/retro/audio/audio_filters/HighShelfDampen.dsp new file mode 100644 index 0000000000..5768f36d7e --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/HighShelfDampen.dsp @@ -0,0 +1,7 @@ +filters = 1 +filter0 = iir + +iir_gain = -12.0 +iir_type = HSH +iir_frequency = 8000.0 + diff --git a/PVSupport/Sources/retro/audio/audio_filters/IIR.dsp b/PVSupport/Sources/retro/audio/audio_filters/IIR.dsp new file mode 100644 index 0000000000..bfeecb2a0f --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/IIR.dsp @@ -0,0 +1,23 @@ +filters = 1 +filter0 = iir + +# Defaults. +#iir_frequency = 1024.0 +#iir_quality = 0.707 +#iir_gain = 0.0 +#iir_type = LPF + +# Filter types: +# LPF: Low-pass +# HPF: High-pass +# BPCSGF: Band-pass #1 +# BPZPGF: Band-pass #2 +# APF: Allpass +# NOTCH: Notch filter +# RIAA_phono: RIAA record/tape deemphasis +# PEQ: peaking band EQ +# BBOOST: Bassboost +# LSH: Low-shelf +# HSH: High-shelf +# RIAA_CD: CD de-emphasis + diff --git a/PVSupport/Sources/retro/audio/audio_filters/LowPassCPS.dsp b/PVSupport/Sources/retro/audio/audio_filters/LowPassCPS.dsp new file mode 100644 index 0000000000..ae42e15cfd --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/LowPassCPS.dsp @@ -0,0 +1,47 @@ +filters = 1 +filter0 = eq + +eq_frequencies = "8000 10000 12500 16000 20000" +eq_gains = "0 -30 -30 -30 -30" + +# Low pass filter for the QSound chip from CPS-1/2. +# Some games have aliasing due low quality samples, so you can hear some annoying noisy near 11 kHz + +# Defaults + +# Beta factor for Kaiser window. +# Lower values will allow better frequency resolution, but more ripple. +# eq_window_beta = 4.0 + +# The block size on which FFT is done. +# Too high value requires more processing as well as longer latency but +# allows finer-grained control over the spectrum. +# eq_block_size_log2 = 8 + +# An array of which frequencies to control. +# You can create an arbitrary amount of these sampling points. +# The EQ will try to create a frequency response which fits well to these points. +# The filter response is linearly interpolated between sampling points here. +# +# It is implied that 0 Hz (DC) and Nyquist have predefined gains of 0 dB which are interpolated against. +# If you want a "peak" in the spectrum or similar, you have to define close points to say, 0 dB. +# +# E.g.: A boost of 3 dB at 1 kHz can be expressed as. +# eq_frequencies = "500 1000 2000" +# eq_gains = "0 3 0" +# Due to frequency domain smearing, you will not get exactly +3 dB at 1 kHz. + +# By default, this filter has a low pass response with cuttof frequency at ~8600 Hz. + +# Dumps the impulse response generated by the EQ as a plain-text file +# with one coefficient per line. +# eq_impulse_response_output = "eq_impulse.txt" +# +# Using GNU Octave or Matlab, you can plot the response with: +# +# f = fopen('/path/to/eq_impulse.txt'); +# l = textscan(f, '%f'); +# res = l{1}; +# freqz(res, 1, 4096, 48000); +# +# It will give the response in Hz; 48000 is the default Output Rate of RetroArch diff --git a/PVSupport/Sources/retro/audio/audio_filters/Makefile b/PVSupport/Sources/retro/audio/audio_filters/Makefile new file mode 100644 index 0000000000..3efbcc5344 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/Makefile @@ -0,0 +1,91 @@ +compiler := gcc +extra_flags := +use_neon := 0 +build = release +DYLIB := so + +ifeq ($(platform),) + platform = unix + ifeq ($(shell uname -a),) + platform = win + else ifneq ($(findstring MINGW,$(shell uname -a)),) + platform = win + else ifneq ($(findstring Darwin,$(shell uname -a)),) + platform = osx + arch = intel + ifeq ($(shell uname -p),powerpc) + arch = ppc + endif + else ifneq ($(findstring win,$(shell uname -a)),) + platform = win + endif +endif + +ifeq ($(platform),gcc) + extra_rules_gcc := $(shell $(compiler) -dumpmachine) +endif + +ifneq (,$(findstring armv7,$(extra_rules_gcc))) + extra_flags += -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon + use_neon := 1 +endif + +ifneq (,$(findstring hardfloat,$(extra_rules_gcc))) + extra_flags += -mfloat-abi=hard +endif + +ifeq (release,$(build)) + extra_flags += -O2 +endif + +ifeq (debug,$(build)) + extra_flags += -O0 -g +endif + +ldflags := $(LDFLAGS) -shared -lm -Wl,--version-script=link.T + +ifeq ($(platform), unix) + DYLIB = so +else ifeq ($(platform), osx) + compiler := $(CC) + DYLIB = dylib + ldflags := -dynamiclib +else + extra_flags += -static-libgcc -static-libstdc++ + DYLIB = dll +endif + +CC := $(compiler) -Wall +CXX := $(subst CC,++,$(compiler)) -std=gnu++0x -Wall +flags := $(CPPFLAGS) $(CFLAGS) -fPIC $(extra_flags) -I../../libretro-common/include +asflags := $(ASFLAGS) -fPIC $(extra_flags) +objects := + +ifeq (1,$(use_neon)) + ASMFLAGS := -INEON/asm + asflags += -mfpu=neon +endif + +plugs := $(wildcard *.c) +objects := $(plugs:.c=.o) +targets := $(objects:.o=.$(DYLIB)) + +all: build; + +%.o: %.S + $(CC) -c -o $@ $(asflags) $(ASMFLAGS) $< + +%.o: %.c + $(CC) -c -o $@ $(flags) $< + +%.$(DYLIB): %.o + $(CC) -o $@ $(ldflags) $(flags) $^ + +build: $(targets) + +clean: + rm -f *.o + rm -f *.$(DYLIB) + +strip: + strip -s *.$(DYLIB) diff --git a/PVSupport/Sources/retro/audio/audio_filters/Panning.dsp b/PVSupport/Sources/retro/audio/audio_filters/Panning.dsp new file mode 100644 index 0000000000..411345fca9 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/Panning.dsp @@ -0,0 +1,23 @@ +filters = 1 +filter0 = panning + +# Gains are linear. + +# The default. Left and right channels map to each other. +panning_left_mix = "1.0 0.0" +panning_right_mix = "0.0 1.0" + +# Some examples: +# +# Mono: +# panning_left_mix = "0.5 0.5" +# panning_right_mix = "0.5 0.5" + +# Swap left and right channels: +# panning_left_mix = "0.0 1.0" +# panning_right_mix = "1.0 0.0" +# +# Mono on one speaker: +# panning_left_mix = "0.5 0.5" +# panning_right_mix = "0.0 0.0" + diff --git a/PVSupport/Sources/retro/audio/audio_filters/Phaser.dsp b/PVSupport/Sources/retro/audio/audio_filters/Phaser.dsp new file mode 100644 index 0000000000..80b209deaa --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/Phaser.dsp @@ -0,0 +1,11 @@ +filters = 1 +filter0 = phaser + +# Defaults. +# phaser_lfo_freq = 0.4 +# phaser_lfo_start_phase = 0.0 +# phaser_feedback = 0.0 +# phaser_depth = 0.4 +# phaser_dry_wet = 0.5 +# phaser_stages = 2 + diff --git a/PVSupport/Sources/retro/audio/audio_filters/Reverb.dsp b/PVSupport/Sources/retro/audio/audio_filters/Reverb.dsp new file mode 100644 index 0000000000..0f0d53f4a8 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/Reverb.dsp @@ -0,0 +1,10 @@ +filters = 1 +filter0 = reverb + +# Defaults. +# reverb_drytime = 0.43 +# reverb_wettime = 0.4 +# reverb_damping = 0.8 +# reverb_roomwidth = 0.56 +# reverb_roomsize = 0.56 + diff --git a/PVSupport/Sources/retro/audio/audio_filters/WahWah.dsp b/PVSupport/Sources/retro/audio/audio_filters/WahWah.dsp new file mode 100644 index 0000000000..4d5bceb094 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/WahWah.dsp @@ -0,0 +1,10 @@ +filters = 1 +filter0 = wahwah + +# Defaults. +# wahwah_lfo_freq = 1.5 +# wahwah_lfo_start_phase = 0.0 +# wahwah_freq_offset = 0.3 +# wahwah_depth = 0.7 +# wahwah_resonance = 2.5 + diff --git a/PVSupport/Sources/retro/audio/audio_filters/chorus.c b/PVSupport/Sources/retro/audio/audio_filters/chorus.c new file mode 100644 index 0000000000..f6ad25612f --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/chorus.c @@ -0,0 +1,148 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "dspfilter.h" +#include +#include +#include + +#include + +#define CHORUS_MAX_DELAY 4096 +#define CHORUS_DELAY_MASK (CHORUS_MAX_DELAY - 1) + +struct chorus_data +{ + float old[2][CHORUS_MAX_DELAY]; + unsigned old_ptr; + + float delay; + float depth; + float input_rate; + float mix_dry; + float mix_wet; + unsigned lfo_ptr; + unsigned lfo_period; +}; + +static void chorus_free(void *data) +{ + free(data); +} + +static void chorus_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + unsigned i; + struct chorus_data *ch = (struct chorus_data*)data; + + output->samples = input->samples; + output->frames = input->frames; + float *out = output->samples; + + for (i = 0; i < input->frames; i++, out += 2) + { + unsigned delay_int; + float delay_frac, l_a, l_b, r_a, r_b; + float chorus_l, chorus_r; + float in[2] = { out[0], out[1] }; + float delay = ch->delay + ch->depth * sin((2.0 * M_PI * ch->lfo_ptr++) / ch->lfo_period); + + delay *= ch->input_rate; + if (ch->lfo_ptr >= ch->lfo_period) + ch->lfo_ptr = 0; + + delay_int = (unsigned)delay; + if (delay_int >= CHORUS_MAX_DELAY - 1) + delay_int = CHORUS_MAX_DELAY - 2; + delay_frac = delay - delay_int; + + ch->old[0][ch->old_ptr] = in[0]; + ch->old[1][ch->old_ptr] = in[1]; + + l_a = ch->old[0][(ch->old_ptr - delay_int - 0) & CHORUS_DELAY_MASK]; + l_b = ch->old[0][(ch->old_ptr - delay_int - 1) & CHORUS_DELAY_MASK]; + r_a = ch->old[1][(ch->old_ptr - delay_int - 0) & CHORUS_DELAY_MASK]; + r_b = ch->old[1][(ch->old_ptr - delay_int - 1) & CHORUS_DELAY_MASK]; + + /* Lerp introduces aliasing of the chorus component, but doing full polyphase here is probably overkill. */ + chorus_l = l_a * (1.0f - delay_frac) + l_b * delay_frac; + chorus_r = r_a * (1.0f - delay_frac) + r_b * delay_frac; + + out[0] = ch->mix_dry * in[0] + ch->mix_wet * chorus_l; + out[1] = ch->mix_dry * in[1] + ch->mix_wet * chorus_r; + + ch->old_ptr = (ch->old_ptr + 1) & CHORUS_DELAY_MASK; + } +} + +static void *chorus_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + float delay, depth, lfo_freq, drywet; + struct chorus_data *ch = (struct chorus_data*)calloc(1, sizeof(*ch)); + if (!ch) + return NULL; + + config->get_float(userdata, "delay_ms", &delay, 25.0f); + config->get_float(userdata, "depth_ms", &depth, 1.0f); + config->get_float(userdata, "lfo_freq", &lfo_freq, 0.5f); + config->get_float(userdata, "drywet", &drywet, 0.8f); + + delay /= 1000.0f; + depth /= 1000.0f; + + if (depth > delay) + depth = delay; + + if (drywet < 0.0f) + drywet = 0.0f; + else if (drywet > 1.0f) + drywet = 1.0f; + + ch->mix_dry = 1.0f - 0.5f * drywet; + ch->mix_wet = 0.5f * drywet; + + ch->delay = delay; + ch->depth = depth; + ch->lfo_period = (1.0f / lfo_freq) * info->input_rate; + ch->input_rate = info->input_rate; + if (!ch->lfo_period) + ch->lfo_period = 1; + return ch; +} + +static const struct dspfilter_implementation chorus_plug = { + chorus_init, + chorus_process, + chorus_free, + + DSPFILTER_API_VERSION, + "Chorus", + "chorus", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation chorus_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &chorus_plug; +} + +#undef dspfilter_get_implementation + diff --git a/PVSupport/Sources/retro/audio/audio_filters/dspfilter.h b/PVSupport/Sources/retro/audio/audio_filters/dspfilter.h new file mode 100644 index 0000000000..b6f86b2020 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/dspfilter.h @@ -0,0 +1,182 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2015 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + * + */ + +#ifndef DSPFILTER_API_H__ +#define DSPFILTER_API_H__ + +#include + +RETRO_BEGIN_DECLS + +#define DSPFILTER_SIMD_SSE (1 << 0) +#define DSPFILTER_SIMD_SSE2 (1 << 1) +#define DSPFILTER_SIMD_VMX (1 << 2) +#define DSPFILTER_SIMD_VMX128 (1 << 3) +#define DSPFILTER_SIMD_AVX (1 << 4) +#define DSPFILTER_SIMD_NEON (1 << 5) +#define DSPFILTER_SIMD_SSE3 (1 << 6) +#define DSPFILTER_SIMD_SSSE3 (1 << 7) +#define DSPFILTER_SIMD_MMX (1 << 8) +#define DSPFILTER_SIMD_MMXEXT (1 << 9) +#define DSPFILTER_SIMD_SSE4 (1 << 10) +#define DSPFILTER_SIMD_SSE42 (1 << 11) +#define DSPFILTER_SIMD_AVX2 (1 << 12) +#define DSPFILTER_SIMD_VFPU (1 << 13) +#define DSPFILTER_SIMD_PS (1 << 14) + +/* A bit-mask of all supported SIMD instruction sets. + * Allows an implementation to pick different + * dspfilter_implementation structs. + */ +typedef unsigned dspfilter_simd_mask_t; + +/* Dynamic library endpoint. */ +typedef const struct dspfilter_implementation *( + *dspfilter_get_implementation_t)(dspfilter_simd_mask_t mask); + +/* The same SIMD mask argument is forwarded to create() callback + * as well to avoid having to keep lots of state around. */ +const struct dspfilter_implementation *dspfilter_get_implementation( + dspfilter_simd_mask_t mask); + +#define DSPFILTER_API_VERSION 1 + +struct dspfilter_info +{ + /* Input sample rate that the DSP plugin receives. */ + float input_rate; +}; + +struct dspfilter_output +{ + /* The DSP plugin has to provide the buffering for the + * output samples or reuse the input buffer directly. + * + * The samples are laid out in interleaving order: LRLRLRLR + * The range of the samples are [-1.0, 1.0]. + * + * It is not necessary to manually clip values. */ + float *samples; + + /* Frames which the DSP plugin outputted for the current process. + * + * One frame is here defined as a combined sample of + * left and right channels. + * + * (I.e. 44.1kHz, 16bit stereo will have + * 88.2k samples/sec and 44.1k frames/sec.) + */ + unsigned frames; +}; + +struct dspfilter_input +{ + /* Input data for the DSP. The samples are interleaved in order: LRLRLRLR + * + * It is valid for a DSP plug to use this buffer for output as long as + * the output size is less or equal to the input. + * + * This is useful for filters which can output one sample for each + * input sample and do not need to maintain its own buffers. + * + * Block based filters must provide their own buffering scheme. + * + * The input size is not bound, but it can be safely assumed that it + * will not exceed ~100ms worth of audio at a time. */ + float *samples; + + /* Number of frames for input data. + * One frame is here defined as a combined sample of + * left and right channels. + * + * (I.e. 44.1kHz, 16bit stereo will have + * 88.2k samples/sec and 44.1k frames/sec.) + */ + unsigned frames; +}; + +/* Returns true if config key was found. Otherwise, + * returns false, and sets value to default value. + */ +typedef int (*dspfilter_config_get_float_t)(void *userdata, + const char *key, float *value, float default_value); + +typedef int (*dspfilter_config_get_int_t)(void *userdata, + const char *key, int *value, int default_value); + +/* Allocates an array with values. free() with dspfilter_config_free_t. */ +typedef int (*dspfilter_config_get_float_array_t)(void *userdata, + const char *key, float **values, unsigned *out_num_values, + const float *default_values, unsigned num_default_values); + +typedef int (*dspfilter_config_get_int_array_t)(void *userdata, + const char *key, int **values, unsigned *out_num_values, + const int *default_values, unsigned num_default_values); + +typedef int (*dspfilter_config_get_string_t)(void *userdata, + const char *key, char **output, const char *default_output); + +/* Calls free() in host runtime. Sometimes needed on Windows. + * free() on NULL is fine. */ +typedef void (*dspfilter_config_free_t)(void *ptr); + +struct dspfilter_config +{ + dspfilter_config_get_float_t get_float; + dspfilter_config_get_int_t get_int; + + dspfilter_config_get_float_array_t get_float_array; + dspfilter_config_get_int_array_t get_int_array; + + dspfilter_config_get_string_t get_string; + /* Avoid problems where DSP plug and host are + * linked against different C runtimes. */ + dspfilter_config_free_t free; +}; + +/* Creates a handle of the plugin. Returns NULL if failed. */ +typedef void *(*dspfilter_init_t)(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata); + +/* Frees the handle. */ +typedef void (*dspfilter_free_t)(void *data); + +/* Processes input data. + * The plugin is allowed to return variable sizes for output data. */ +typedef void (*dspfilter_process_t)(void *data, + struct dspfilter_output *output, const struct dspfilter_input *input); + +struct dspfilter_implementation +{ + dspfilter_init_t init; + dspfilter_process_t process; + dspfilter_free_t free; + + /* Must be DSPFILTER_API_VERSION */ + unsigned api_version; + + /* Human readable identifier of implementation. */ + const char *ident; + + /* Computer-friendly short version of ident. + * Lower case, no spaces and special characters, etc. */ + const char *short_ident; +}; + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/audio/audio_filters/echo.c b/PVSupport/Sources/retro/audio/audio_filters/echo.c new file mode 100644 index 0000000000..d41b04cd68 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/echo.c @@ -0,0 +1,165 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include + +#include "dspfilter.h" + +struct echo_channel +{ + float *buffer; + unsigned ptr; + unsigned frames; + float feedback; +}; + +struct echo_data +{ + struct echo_channel *channels; + unsigned num_channels; + float amp; +}; + +static void echo_free(void *data) +{ + unsigned i; + struct echo_data *echo = (struct echo_data*)data; + + for (i = 0; i < echo->num_channels; i++) + free(echo->channels[i].buffer); + free(echo->channels); + free(echo); +} + +static void echo_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + unsigned i, c; + struct echo_data *echo = (struct echo_data*)data; + + output->samples = input->samples; + output->frames = input->frames; + + float *out = output->samples; + + for (i = 0; i < input->frames; i++, out += 2) + { + float left, right; + float echo_left = 0.0f; + float echo_right = 0.0f; + + for (c = 0; c < echo->num_channels; c++) + { + echo_left += echo->channels[c].buffer[(echo->channels[c].ptr << 1) + 0]; + echo_right += echo->channels[c].buffer[(echo->channels[c].ptr << 1) + 1]; + } + + echo_left *= echo->amp; + echo_right *= echo->amp; + + left = out[0] + echo_left; + right = out[1] + echo_right; + + for (c = 0; c < echo->num_channels; c++) + { + float feedback_left = out[0] + echo->channels[c].feedback * echo_left; + float feedback_right = out[1] + echo->channels[c].feedback * echo_right; + + echo->channels[c].buffer[(echo->channels[c].ptr << 1) + 0] = feedback_left; + echo->channels[c].buffer[(echo->channels[c].ptr << 1) + 1] = feedback_right; + + echo->channels[c].ptr = (echo->channels[c].ptr + 1) % echo->channels[c].frames; + } + + out[0] = left; + out[1] = right; + } +} + +static void *echo_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + unsigned i, channels; + float *delay = NULL, *feedback = NULL; + unsigned num_delay = 0, num_feedback = 0; + + static const float default_delay[] = { 200.0f }; + static const float default_feedback[] = { 0.5f }; + struct echo_data *echo = (struct echo_data*)calloc(1, sizeof(*echo)); + if (!echo) + return NULL; + + config->get_float_array(userdata, "delay", &delay, &num_delay, default_delay, 1); + config->get_float_array(userdata, "feedback", &feedback, &num_feedback, default_feedback, 1); + config->get_float(userdata, "amp", &echo->amp, 0.2f); + + channels = num_feedback = num_delay = MIN(num_delay, num_feedback); + + echo->channels = (struct echo_channel*)calloc(channels, sizeof(*echo->channels)); + if (!echo->channels) + goto error; + + echo->num_channels = channels; + + for (i = 0; i < channels; i++) + { + unsigned frames = (unsigned)(delay[i] * info->input_rate / 1000.0f + 0.5f); + if (!frames) + goto error; + + echo->channels[i].buffer = (float*)calloc(frames, 2 * sizeof(float)); + if (!echo->channels[i].buffer) + goto error; + + echo->channels[i].frames = frames; + echo->channels[i].feedback = feedback[i]; + } + + config->free(delay); + config->free(feedback); + return echo; + +error: + config->free(delay); + config->free(feedback); + echo_free(echo); + return NULL; +} + + +static const struct dspfilter_implementation echo_plug = { + echo_init, + echo_process, + echo_free, + + DSPFILTER_API_VERSION, + "Multi-Echo", + "echo", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation echo_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &echo_plug; +} + +#undef dspfilter_get_implementation + diff --git a/PVSupport/Sources/retro/audio/audio_filters/eq.c b/PVSupport/Sources/retro/audio/audio_filters/eq.c new file mode 100644 index 0000000000..9fd2812804 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/eq.c @@ -0,0 +1,342 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ +#include +#include +#include + +#include +#include +#include + +#include "dspfilter.h" + +#include "fft/fft.c" + +struct eq_data +{ + fft_t *fft; + float buffer[8 * 1024]; + + float *save; + float *block; + fft_complex_t *filter; + fft_complex_t *fftblock; + unsigned block_size; + unsigned block_ptr; +}; + +struct eq_gain +{ + float freq; + float gain; /* Linear. */ +}; + +static void eq_free(void *data) +{ + struct eq_data *eq = (struct eq_data*)data; + if (!eq) + return; + + fft_free(eq->fft); + free(eq->save); + free(eq->block); + free(eq->fftblock); + free(eq->filter); + free(eq); +} + +static void eq_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + float *out; + const float *in; + unsigned input_frames; + struct eq_data *eq = (struct eq_data*)data; + + output->samples = eq->buffer; + output->frames = 0; + + out = eq->buffer; + in = input->samples; + input_frames = input->frames; + + while (input_frames) + { + unsigned write_avail = eq->block_size - eq->block_ptr; + + if (input_frames < write_avail) + write_avail = input_frames; + + memcpy(eq->block + eq->block_ptr * 2, in, write_avail * 2 * sizeof(float)); + + in += write_avail * 2; + input_frames -= write_avail; + eq->block_ptr += write_avail; + + // Convolve a new block. + if (eq->block_ptr == eq->block_size) + { + unsigned i, c; + + for (c = 0; c < 2; c++) + { + fft_process_forward(eq->fft, eq->fftblock, eq->block + c, 2); + for (i = 0; i < 2 * eq->block_size; i++) + eq->fftblock[i] = fft_complex_mul(eq->fftblock[i], eq->filter[i]); + fft_process_inverse(eq->fft, out + c, eq->fftblock, 2); + } + + // Overlap add method, so add in saved block now. + for (i = 0; i < 2 * eq->block_size; i++) + out[i] += eq->save[i]; + + // Save block for later. + memcpy(eq->save, out + 2 * eq->block_size, 2 * eq->block_size * sizeof(float)); + + out += eq->block_size * 2; + output->frames += eq->block_size; + eq->block_ptr = 0; + } + } +} + +static int gains_cmp(const void *a_, const void *b_) +{ + const struct eq_gain *a = (const struct eq_gain*)a_; + const struct eq_gain *b = (const struct eq_gain*)b_; + if (a->freq < b->freq) + return -1; + if (a->freq > b->freq) + return 1; + return 0; +} + +static void generate_response(fft_complex_t *response, + const struct eq_gain *gains, unsigned num_gains, unsigned samples) +{ + unsigned i; + + float start_freq = 0.0f; + float start_gain = 1.0f; + + float end_freq = 1.0f; + float end_gain = 1.0f; + + if (num_gains) + { + end_freq = gains->freq; + end_gain = gains->gain; + num_gains--; + gains++; + } + + // Create a response by linear interpolation between known frequency sample points. + for (i = 0; i <= samples; i++) + { + float gain; + float lerp = 0.5f; + float freq = (float)i / samples; + + while (freq >= end_freq) + { + if (num_gains) + { + start_freq = end_freq; + start_gain = end_gain; + end_freq = gains->freq; + end_gain = gains->gain; + + gains++; + num_gains--; + } + else + { + start_freq = end_freq; + start_gain = end_gain; + end_freq = 1.0f; + end_gain = 1.0f; + break; + } + } + + /* Edge case where i == samples. */ + if (end_freq > start_freq) + lerp = (freq - start_freq) / (end_freq - start_freq); + gain = (1.0f - lerp) * start_gain + lerp * end_gain; + + response[i].real = gain; + response[i].imag = 0.0f; + response[2 * samples - i].real = gain; + response[2 * samples - i].imag = 0.0f; + } +} + +static void create_filter(struct eq_data *eq, unsigned size_log2, + struct eq_gain *gains, unsigned num_gains, double beta, const char *filter_path) +{ + int i; + int half_block_size = eq->block_size >> 1; + double window_mod = 1.0 / kaiser_window_function(0.0, beta); + + fft_t *fft = fft_new(size_log2); + float *time_filter = (float*)calloc(eq->block_size * 2 + 1, sizeof(*time_filter)); + if (!fft || !time_filter) + goto end; + + /* Make sure bands are in correct order. */ + qsort(gains, num_gains, sizeof(*gains), gains_cmp); + + /* Compute desired filter response. */ + generate_response(eq->filter, gains, num_gains, half_block_size); + + /* Get equivalent time-domain filter. */ + fft_process_inverse(fft, time_filter, eq->filter, 1); + + // ifftshift() to create the correct linear phase filter. + // The filter response was designed with zero phase, which won't work unless we compensate + // for the repeating property of the FFT here by flipping left and right blocks. + for (i = 0; i < half_block_size; i++) + { + float tmp = time_filter[i + half_block_size]; + time_filter[i + half_block_size] = time_filter[i]; + time_filter[i] = tmp; + } + + /* Apply a window to smooth out the frequency repsonse. */ + for (i = 0; i < (int)eq->block_size; i++) + { + /* Kaiser window. */ + double phase = (double)i / eq->block_size; + phase = 2.0 * (phase - 0.5); + time_filter[i] *= window_mod * kaiser_window_function(phase, beta); + } + + /* Debugging. */ + if (filter_path) + { + FILE *file = fopen(filter_path, "w"); + if (file) + { + for (i = 0; i < (int)eq->block_size - 1; i++) + fprintf(file, "%.8f\n", time_filter[i + 1]); + fclose(file); + } + } + + /* Padded FFT to create our FFT filter. + * Make our even-length filter odd by discarding the first coefficient. + * For some interesting reason, this allows us to design an odd-length linear phase filter. + */ + fft_process_forward(eq->fft, eq->filter, time_filter + 1, 1); + +end: + fft_free(fft); + free(time_filter); +} + +static void *eq_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + float *frequencies, *gain; + unsigned num_freq, num_gain, i, size; + int size_log2; + float beta; + struct eq_gain *gains = NULL; + char *filter_path = NULL; + const float default_freq[] = { 0.0f, info->input_rate }; + const float default_gain[] = { 0.0f, 0.0f }; + struct eq_data *eq = (struct eq_data*)calloc(1, sizeof(*eq)); + if (!eq) + return NULL; + + + config->get_float(userdata, "window_beta", &beta, 4.0f); + + config->get_int(userdata, "block_size_log2", &size_log2, 8); + size = 1 << size_log2; + + config->get_float_array(userdata, "frequencies", &frequencies, &num_freq, default_freq, 2); + config->get_float_array(userdata, "gains", &gain, &num_gain, default_gain, 2); + + if (!config->get_string(userdata, "impulse_response_output", &filter_path, "")) + { + config->free(filter_path); + filter_path = NULL; + } + + num_gain = num_freq = MIN(num_gain, num_freq); + + gains = (struct eq_gain*)calloc(num_gain, sizeof(*gains)); + if (!gains) + goto error; + + for (i = 0; i < num_gain; i++) + { + gains[i].freq = frequencies[i] / (0.5f * info->input_rate); + gains[i].gain = pow(10.0, gain[i] / 20.0); + } + config->free(frequencies); + config->free(gain); + + eq->block_size = size; + + eq->save = (float*)calloc( size, 2 * sizeof(*eq->save)); + eq->block = (float*)calloc(2 * size, 2 * sizeof(*eq->block)); + eq->fftblock = (fft_complex_t*)calloc(2 * size, sizeof(*eq->fftblock)); + eq->filter = (fft_complex_t*)calloc(2 * size, sizeof(*eq->filter)); + + /* Use an FFT which is twice the block size with zero-padding + * to make circular convolution => proper convolution. + */ + eq->fft = fft_new(size_log2 + 1); + + if (!eq->fft || !eq->fftblock || !eq->save || !eq->block || !eq->filter) + goto error; + + create_filter(eq, size_log2, gains, num_gain, beta, filter_path); + config->free(filter_path); + filter_path = NULL; + + free(gains); + return eq; + +error: + free(gains); + eq_free(eq); + return NULL; +} + +static const struct dspfilter_implementation eq_plug = { + eq_init, + eq_process, + eq_free, + + DSPFILTER_API_VERSION, + "Linear-Phase FFT Equalizer", + "eq", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation eq_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &eq_plug; +} + +#undef dspfilter_get_implementation + diff --git a/PVSupport/Sources/retro/audio/audio_filters/fft/fft.c b/PVSupport/Sources/retro/audio/audio_filters/fft/fft.c new file mode 100644 index 0000000000..1347955c07 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/fft/fft.c @@ -0,0 +1,194 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "fft.h" +#include +#include + +#include + +struct fft +{ + fft_complex_t *interleave_buffer; + fft_complex_t *phase_lut; + unsigned *bitinverse_buffer; + unsigned size; +}; + +static unsigned bitswap(unsigned x, unsigned size_log2) +{ + unsigned i; + unsigned ret = 0; + for (i = 0; i < size_log2; i++) + ret |= ((x >> i) & 1) << (size_log2 - i - 1); + return ret; +} + +static void build_bitinverse(unsigned *bitinverse, unsigned size_log2) +{ + unsigned i; + unsigned size = 1 << size_log2; + for (i = 0; i < size; i++) + bitinverse[i] = bitswap(i, size_log2); +} + +static fft_complex_t exp_imag(double phase) +{ + fft_complex_t out = { cos(phase), sin(phase) }; + return out; +} + +static void build_phase_lut(fft_complex_t *out, int size) +{ + int i; + out += size; + for (i = -size; i <= size; i++) + out[i] = exp_imag((M_PI * i) / size); +} + +static void interleave_complex(const unsigned *bitinverse, + fft_complex_t *out, const fft_complex_t *in, + unsigned samples, unsigned step) +{ + unsigned i; + for (i = 0; i < samples; i++, in += step) + out[bitinverse[i]] = *in; +} + +static void interleave_float(const unsigned *bitinverse, + fft_complex_t *out, const float *in, + unsigned samples, unsigned step) +{ + unsigned i; + for (i = 0; i < samples; i++, in += step) + { + unsigned inv_i = bitinverse[i]; + out[inv_i].real = *in; + out[inv_i].imag = 0.0f; + } +} + +static void resolve_float(float *out, const fft_complex_t *in, unsigned samples, + float gain, unsigned step) +{ + unsigned i; + for (i = 0; i < samples; i++, in++, out += step) + *out = gain * in->real; +} + +fft_t *fft_new(unsigned block_size_log2) +{ + fft_t *fft = (fft_t*)calloc(1, sizeof(*fft)); + if (!fft) + return NULL; + + unsigned size = 1 << block_size_log2; + + fft->interleave_buffer = (fft_complex_t*)calloc(size, sizeof(*fft->interleave_buffer)); + fft->bitinverse_buffer = (unsigned*)calloc(size, sizeof(*fft->bitinverse_buffer)); + fft->phase_lut = (fft_complex_t*)calloc(2 * size + 1, sizeof(*fft->phase_lut)); + + if (!fft->interleave_buffer || !fft->bitinverse_buffer || !fft->phase_lut) + goto error; + + fft->size = size; + + build_bitinverse(fft->bitinverse_buffer, block_size_log2); + build_phase_lut(fft->phase_lut, size); + return fft; + +error: + fft_free(fft); + return NULL; +} + +void fft_free(fft_t *fft) +{ + if (!fft) + return; + + free(fft->interleave_buffer); + free(fft->bitinverse_buffer); + free(fft->phase_lut); + free(fft); +} + +static void butterfly(fft_complex_t *a, fft_complex_t *b, fft_complex_t mod) +{ + mod = fft_complex_mul(mod, *b); + *b = fft_complex_sub(*a, mod); + *a = fft_complex_add(*a, mod); +} + +static void butterflies(fft_complex_t *butterfly_buf, + const fft_complex_t *phase_lut, + int phase_dir, unsigned step_size, unsigned samples) +{ + unsigned i, j; + for (i = 0; i < samples; i += step_size << 1) + { + int phase_step = (int)samples * phase_dir / (int)step_size; + for (j = i; j < i + step_size; j++) + butterfly(&butterfly_buf[j], &butterfly_buf[j + step_size], phase_lut[phase_step * (int)(j - i)]); + } +} + +void fft_process_forward_complex(fft_t *fft, + fft_complex_t *out, const fft_complex_t *in, unsigned step) +{ + unsigned step_size; + unsigned samples = fft->size; + interleave_complex(fft->bitinverse_buffer, out, in, samples, step); + + for (step_size = 1; step_size < samples; step_size <<= 1) + { + butterflies(out, + fft->phase_lut + samples, + -1, step_size, samples); + } +} + +void fft_process_forward(fft_t *fft, + fft_complex_t *out, const float *in, unsigned step) +{ + unsigned step_size; + unsigned samples = fft->size; + interleave_float(fft->bitinverse_buffer, out, in, samples, step); + + for (step_size = 1; step_size < fft->size; step_size <<= 1) + { + butterflies(out, + fft->phase_lut + samples, + -1, step_size, samples); + } +} + +void fft_process_inverse(fft_t *fft, + float *out, const fft_complex_t *in, unsigned step) +{ + unsigned step_size; + unsigned samples = fft->size; + interleave_complex(fft->bitinverse_buffer, fft->interleave_buffer, in, samples, 1); + + for (step_size = 1; step_size < samples; step_size <<= 1) + { + butterflies(fft->interleave_buffer, + fft->phase_lut + samples, + 1, step_size, samples); + } + + resolve_float(out, fft->interleave_buffer, samples, 1.0f / samples, step); +} + diff --git a/PVSupport/Sources/retro/audio/audio_filters/fft/fft.h b/PVSupport/Sources/retro/audio/audio_filters/fft/fft.h new file mode 100644 index 0000000000..64df4cc042 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/fft/fft.h @@ -0,0 +1,39 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef RARCH_FFT_H__ +#define RARCH_FFT_H__ + +#include +#include + +typedef struct fft fft_t; + +fft_t *fft_new(unsigned block_size_log2); + +void fft_free(fft_t *fft); + +void fft_process_forward_complex(fft_t *fft, + fft_complex_t *out, const fft_complex_t *in, unsigned step); + +void fft_process_forward(fft_t *fft, + fft_complex_t *out, const float *in, unsigned step); + +void fft_process_inverse(fft_t *fft, + float *out, const fft_complex_t *in, unsigned step); + + +#endif + diff --git a/PVSupport/Sources/retro/audio/audio_filters/iir.c b/PVSupport/Sources/retro/audio/audio_filters/iir.c new file mode 100644 index 0000000000..0cf488721e --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/iir.c @@ -0,0 +1,369 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2014 - Brad Miller + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "dspfilter.h" +#include +#include +#include + +#include + +#define sqr(a) ((a) * (a)) + +/* filter types */ +enum IIRFilter +{ + LPF, /* low pass filter */ + HPF, /* High pass filter */ + BPCSGF, /* band pass filter 1 */ + BPZPGF, /* band pass filter 2 */ + APF, /* Allpass filter*/ + NOTCH, /* Notch Filter */ + RIAA_phono, /* RIAA record/tape deemphasis */ + PEQ, /* Peaking band EQ filter */ + BBOOST, /* Bassboost filter */ + LSH, /* Low shelf filter */ + HSH, /* High shelf filter */ + RIAA_CD /* CD de-emphasis */ +}; + +struct iir_data +{ + float b0, b1, b2; + float a0, a1, a2; + + struct + { + float xn1, xn2; + float yn1, yn2; + } l, r; +}; + +static void iir_free(void *data) +{ + free(data); +} + +static void iir_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + float b0, b1, b2, a0, a1, a2; + float xn1_l, xn2_l, yn1_l, yn2_l; + float xn1_r, xn2_r, yn1_r, yn2_r; + unsigned i; + float *out; + struct iir_data *iir = (struct iir_data*)data; + + output->samples = input->samples; + output->frames = input->frames; + + out = output->samples; + + b0 = iir->b0; + b1 = iir->b1; + b2 = iir->b2; + a0 = iir->a0; + a1 = iir->a1; + a2 = iir->a2; + + xn1_l = iir->l.xn1; + xn2_l = iir->l.xn2; + yn1_l = iir->l.yn1; + yn2_l = iir->l.yn2; + + xn1_r = iir->r.xn1; + xn2_r = iir->r.xn2; + yn1_r = iir->r.yn1; + yn2_r = iir->r.yn2; + + for (i = 0; i < input->frames; i++, out += 2) + { + float in_l = out[0]; + float in_r = out[1]; + + float l = (b0 * in_l + b1 * xn1_l + b2 * xn2_l - a1 * yn1_l - a2 * yn2_l) / a0; + float r = (b0 * in_r + b1 * xn1_r + b2 * xn2_r - a1 * yn1_r - a2 * yn2_r) / a0; + + xn2_l = xn1_l; + xn1_l = in_l; + yn2_l = yn1_l; + yn1_l = l; + + xn2_r = xn1_r; + xn1_r = in_r; + yn2_r = yn1_r; + yn1_r = r; + + out[0] = l; + out[1] = r; + } + + iir->l.xn1 = xn1_l; + iir->l.xn2 = xn2_l; + iir->l.yn1 = yn1_l; + iir->l.yn2 = yn2_l; + + iir->r.xn1 = xn1_r; + iir->r.xn2 = xn2_r; + iir->r.yn1 = yn1_r; + iir->r.yn2 = yn2_r; +} + +#define CHECK(x) if (!strcmp(str, #x)) return x +static enum IIRFilter str_to_type(const char *str) +{ + CHECK(LPF); + CHECK(HPF); + CHECK(BPCSGF); + CHECK(BPZPGF); + CHECK(APF); + CHECK(NOTCH); + CHECK(RIAA_phono); + CHECK(PEQ); + CHECK(BBOOST); + CHECK(LSH); + CHECK(HSH); + CHECK(RIAA_CD); + return LPF; // Fallback. +} + +static void make_poly_from_roots( + const double *roots, unsigned num_roots, float *poly) +{ + unsigned i, j; + + poly[0] = 1; + poly[1] = -roots[0]; + memset(poly + 2, 0, (num_roots + 1 - 2) * sizeof(*poly)); + + for (i = 1; i < num_roots; i++) + for (j = num_roots; j > 0; j--) + poly[j] -= poly[j - 1] * roots[i]; +} + +static void iir_filter_init(struct iir_data *iir, + float sample_rate, float freq, float qual, float gain, enum IIRFilter filter_type) +{ + double omega = 2.0 * M_PI * freq / sample_rate; + double cs = cos(omega); + double sn = sin(omega); + double a1pha = sn / (2.0 * qual); + double A = exp(log(10.0) * gain / 40.0); + double beta = sqrt(A + A); + + float b0 = 0.0, b1 = 0.0, b2 = 0.0, a0 = 0.0, a1 = 0.0, a2 = 0.0; + + /* Set up filter coefficients according to type */ + switch (filter_type) + { + case LPF: + b0 = (1.0 - cs) / 2.0; + b1 = 1.0 - cs ; + b2 = (1.0 - cs) / 2.0; + a0 = 1.0 + a1pha; + a1 = -2.0 * cs; + a2 = 1.0 - a1pha; + break; + case HPF: + b0 = (1.0 + cs) / 2.0; + b1 = -(1.0 + cs); + b2 = (1.0 + cs) / 2.0; + a0 = 1.0 + a1pha; + a1 = -2.0 * cs; + a2 = 1.0 - a1pha; + break; + case APF: + b0 = 1.0 - a1pha; + b1 = -2.0 * cs; + b2 = 1.0 + a1pha; + a0 = 1.0 + a1pha; + a1 = -2.0 * cs; + a2 = 1.0 - a1pha; + break; + case BPZPGF: + b0 = a1pha; + b1 = 0.0; + b2 = -a1pha; + a0 = 1.0 + a1pha; + a1 = -2.0 * cs; + a2 = 1.0 - a1pha; + break; + case BPCSGF: + b0 = sn / 2.0; + b1 = 0.0; + b2 = -sn / 2.0; + a0 = 1.0 + a1pha; + a1 = -2.0 * cs; + a2 = 1.0 - a1pha; + break; + case NOTCH: + b0 = 1.0; + b1 = -2.0 * cs; + b2 = 1.0; + a0 = 1.0 + a1pha; + a1 = -2.0 * cs; + a2 = 1.0 - a1pha; + break; + case RIAA_phono: /* http://www.dsprelated.com/showmessage/73300/3.php */ + { + double y, b_re, a_re, b_im, a_im, g; + float b[3], a[3]; + + if ((int)sample_rate == 44100) + { + static const double zeros[] = {-0.2014898, 0.9233820}; + static const double poles[] = {0.7083149, 0.9924091}; + make_poly_from_roots(zeros, 2, b); + make_poly_from_roots(poles, 2, a); + } + else if ((int)sample_rate == 48000) + { + static const double zeros[] = {-0.1766069, 0.9321590}; + static const double poles[] = {0.7396325, 0.9931330}; + make_poly_from_roots(zeros, 2, b); + make_poly_from_roots(poles, 2, a); + } + else if ((int)sample_rate == 88200) + { + static const double zeros[] = {-0.1168735, 0.9648312}; + static const double poles[] = {0.8590646, 0.9964002}; + make_poly_from_roots(zeros, 2, b); + make_poly_from_roots(poles, 2, a); + } + else if ((int)sample_rate == 96000) + { + static const double zeros[] = {-0.1141486, 0.9676817}; + static const double poles[] = {0.8699137, 0.9966946}; + make_poly_from_roots(zeros, 2, b); + make_poly_from_roots(poles, 2, a); + } + + b0 = b[0]; + b1 = b[1]; + b2 = b[2]; + a0 = a[0]; + a1 = a[1]; + a2 = a[2]; + + + /* Normalise to 0dB at 1kHz (Thanks to Glenn Davis) */ + y = 2.0 * M_PI * 1000.0 / sample_rate; + b_re = b0 + b1 * cos(-y) + b2 * cos(-2.0 * y); + a_re = a0 + a1 * cos(-y) + a2 * cos(-2.0 * y); + b_im = b1 * sin(-y) + b2 * sin(-2.0 * y); + a_im = a1 * sin(-y) + a2 * sin(-2.0 * y); + g = 1.0 / sqrt((sqr(b_re) + sqr(b_im)) / (sqr(a_re) + sqr(a_im))); + b0 *= g; b1 *= g; b2 *= g; + break; + } + case PEQ: + b0 = 1.0 + a1pha * A; + b1 = -2.0 * cs; + b2 = 1.0 - a1pha * A; + a0 = 1.0 + a1pha / A; + a1 = -2.0 * cs; + a2 = 1.0 - a1pha / A; + break; + case BBOOST: + beta = sqrt((A * A + 1) / 1.0 - (pow((A - 1), 2))); + b0 = A * ((A + 1) - (A - 1) * cs + beta * sn); + b1 = 2 * A * ((A - 1) - (A + 1) * cs); + b2 = A * ((A + 1) - (A - 1) * cs - beta * sn); + a0 = ((A + 1) + (A - 1) * cs + beta * sn); + a1 = -2 * ((A - 1) + (A + 1) * cs); + a2 = (A + 1) + (A - 1) * cs - beta * sn; + break; + case LSH: + b0 = A * ((A + 1) - (A - 1) * cs + beta * sn); + b1 = 2 * A * ((A - 1) - (A + 1) * cs); + b2 = A * ((A + 1) - (A - 1) * cs - beta * sn); + a0 = (A + 1) + (A - 1) * cs + beta * sn; + a1 = -2 * ((A - 1) + (A + 1) * cs); + a2 = (A + 1) + (A - 1) * cs - beta * sn; + break; + case RIAA_CD: + omega = 2.0 * M_PI * 5283.0 / sample_rate; + cs = cos(omega); + sn = sin(omega); + a1pha = sn / (2.0 * 0.4845); + A = exp(log(10.0) * -9.477 / 40.0); + beta = sqrt(A + A); + (void)a1pha; + case HSH: + b0 = A * ((A + 1.0) + (A - 1.0) * cs + beta * sn); + b1 = -2.0 * A * ((A - 1.0) + (A + 1.0) * cs); + b2 = A * ((A + 1.0) + (A - 1.0) * cs - beta * sn); + a0 = (A + 1.0) - (A - 1.0) * cs + beta * sn; + a1 = 2.0 * ((A - 1.0) - (A + 1.0) * cs); + a2 = (A + 1.0) - (A - 1.0) * cs - beta * sn; + break; + default: + break; + } + + iir->b0 = b0; + iir->b1 = b1; + iir->b2 = b2; + iir->a0 = a0; + iir->a1 = a1; + iir->a2 = a2; +} + +static void *iir_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + float freq, qual, gain; + enum IIRFilter filter; + char *type = NULL; + struct iir_data *iir = (struct iir_data*)calloc(1, sizeof(*iir)); + if (!iir) + return NULL; + + config->get_float(userdata, "frequency", &freq, 1024.0f); + config->get_float(userdata, "quality", &qual, 0.707f); + config->get_float(userdata, "gain", &gain, 0.0f); + + config->get_string(userdata, "type", &type, "LPF"); + + filter = str_to_type(type); + config->free(type); + + iir_filter_init(iir, info->input_rate, freq, qual, gain, filter); + return iir; +} + +static const struct dspfilter_implementation iir_plug = { + iir_init, + iir_process, + iir_free, + + DSPFILTER_API_VERSION, + "IIR", + "iir", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation iir_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &iir_plug; +} + +#undef dspfilter_get_implementation + diff --git a/PVSupport/Sources/retro/audio/audio_filters/link.T b/PVSupport/Sources/retro/audio/audio_filters/link.T new file mode 100644 index 0000000000..bd9ad7918c --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/link.T @@ -0,0 +1,4 @@ +{ + global: dspfilter_get_implementation; + local: *; +}; diff --git a/PVSupport/Sources/retro/audio/audio_filters/panning.c b/PVSupport/Sources/retro/audio/audio_filters/panning.c new file mode 100644 index 0000000000..e1118c7fa5 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/panning.c @@ -0,0 +1,96 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "dspfilter.h" +#include +#include +#include + +struct panning_data +{ + float left[2]; + float right[2]; +}; + +static void panning_free(void *data) +{ + free(data); +} + +static void panning_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + unsigned i; + float *out; + struct panning_data *pan = (struct panning_data*)data; + + output->samples = input->samples; + output->frames = input->frames; + out = output->samples; + + for (i = 0; i < input->frames; i++, out += 2) + { + float left = out[0]; + float right = out[1]; + out[0] = left * pan->left[0] + right * pan->left[1]; + out[1] = left * pan->right[0] + right * pan->right[1]; + } +} + +static void *panning_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + static const float default_left[] = { 1.0f, 0.0f }; + static const float default_right[] = { 0.0f, 1.0f }; + float *left = NULL, *right = NULL; + unsigned num_left = 0, num_right = 0; + struct panning_data *pan = (struct panning_data*)calloc(1, sizeof(*pan)); + if (!pan) + return NULL; + + config->get_float_array(userdata, "left_mix", &left, &num_left, default_left, 2); + config->get_float_array(userdata, "right_mix", &right, &num_right, default_right, 2); + + memcpy(pan->left, (num_left == 2) ? left : default_left, sizeof(pan->left)); + memcpy(pan->right, (num_right == 2) ? right : default_right, sizeof(pan->right)); + + config->free(left); + config->free(right); + + return pan; +} + +static const struct dspfilter_implementation panning = { + panning_init, + panning_process, + panning_free, + + DSPFILTER_API_VERSION, + "Panning", + "panning", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation panning_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &panning; +} + +#undef dspfilter_get_implementation + diff --git a/PVSupport/Sources/retro/audio/audio_filters/phaser.c b/PVSupport/Sources/retro/audio/audio_filters/phaser.c new file mode 100644 index 0000000000..b484298f82 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/phaser.c @@ -0,0 +1,140 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2014 - Brad Miller + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "dspfilter.h" +#include +#include +#include + +#include + +#define phaserlfoshape 4.0 +#define phaserlfoskipsamples 20 + +struct phaser_data +{ + float freq; + float startphase; + float fb; + float depth; + float drywet; + float old[2][24]; + float gain; + float fbout[2]; + float lfoskip; + float phase; + + int stages; + unsigned long skipcount; +}; + +static void phaser_free(void *data) +{ + free(data); +} + +static void phaser_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + unsigned i, c; + int s; + float m[2], tmp[2], *out; + struct phaser_data *ph = (struct phaser_data*)data; + + output->samples = input->samples; + output->frames = input->frames; + out = output->samples; + + for (i = 0; i < input->frames; i++, out += 2) + { + float in[2] = { out[0], out[1] }; + + for (c = 0; c < 2; c++) + m[c] = in[c] + ph->fbout[c] * ph->fb * 0.01f; + + if ((ph->skipcount++ % phaserlfoskipsamples) == 0) + { + ph->gain = 0.5 * (1.0 + cos(ph->skipcount * ph->lfoskip + ph->phase)); + ph->gain = (exp(ph->gain * phaserlfoshape) - 1.0) / (exp(phaserlfoshape) - 1); + ph->gain = 1.0 - ph->gain * ph->depth; + } + + for (s = 0; s < ph->stages; s++) + { + for (c = 0; c < 2; c++) + { + tmp[c] = ph->old[c][s]; + ph->old[c][s] = ph->gain * tmp[c] + m[c]; + m[c] = tmp[c] - ph->gain * ph->old[c][s]; + } + } + + for (c = 0; c < 2; c++) + { + ph->fbout[c] = m[c]; + out[c] = m[c] * ph->drywet + in[c] * (1.0f - ph->drywet); + } + } +} + +static void *phaser_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + float lfo_freq, lfo_start_phase; + struct phaser_data *ph = (struct phaser_data*)calloc(1, sizeof(*ph)); + if (!ph) + return NULL; + + config->get_float(userdata, "lfo_freq", &lfo_freq, 0.4f); + config->get_float(userdata, "lfo_start_phase", &lfo_start_phase, 0.0f); + config->get_float(userdata, "feedback", &ph->fb, 0.0f); + config->get_float(userdata, "depth", &ph->depth, 0.4f); + config->get_float(userdata, "dry_wet", &ph->drywet, 0.5f); + config->get_int(userdata, "stages", &ph->stages, 2); + + if (ph->stages < 1) + ph->stages = 1; + else if (ph->stages > 24) + ph->stages = 24; + + ph->lfoskip = lfo_freq * 2.0 * M_PI / info->input_rate; + ph->phase = lfo_start_phase * M_PI / 180.0; + + return ph; +} + +static const struct dspfilter_implementation phaser_plug = { + phaser_init, + phaser_process, + phaser_free, + + DSPFILTER_API_VERSION, + "Phaser", + "phaser", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation phaser_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &phaser_plug; +} + +#undef dspfilter_get_implementation + diff --git a/PVSupport/Sources/retro/audio/audio_filters/reverb.c b/PVSupport/Sources/retro/audio/audio_filters/reverb.c new file mode 100644 index 0000000000..66bc9e36f2 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/reverb.c @@ -0,0 +1,319 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2014 - Brad Miller + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "dspfilter.h" +#include +#include +#include +#include + +struct comb +{ + float *buffer; + unsigned bufsize; + unsigned bufidx; + + float feedback; + float filterstore; + float damp1, damp2; +}; + +struct allpass +{ + float *buffer; + float feedback; + unsigned bufsize; + unsigned bufidx; +}; + +static INLINE float comb_process(struct comb *c, float input) +{ + float output = c->buffer[c->bufidx]; + c->filterstore = (output * c->damp2) + (c->filterstore * c->damp1); + + c->buffer[c->bufidx] = input + (c->filterstore * c->feedback); + + c->bufidx++; + if (c->bufidx >= c->bufsize) + c->bufidx = 0; + + return output; +} + + +static INLINE float allpass_process(struct allpass *a, float input) +{ + float bufout = a->buffer[a->bufidx]; + float output = -input + bufout; + a->buffer[a->bufidx] = input + bufout * a->feedback; + + a->bufidx++; + if (a->bufidx >= a->bufsize) + a->bufidx = 0; + + return output; +} + +#define numcombs 8 +#define numallpasses 4 +static const float muted = 0; +static const float fixedgain = 0.015f; +static const float scalewet = 3; +static const float scaledry = 2; +static const float scaledamp = 0.4f; +static const float scaleroom = 0.28f; +static const float offsetroom = 0.7f; +static const float initialroom = 0.5f; +static const float initialdamp = 0.5f; +static const float initialwet = 1.0f / 3.0f; +static const float initialdry = 0; +static const float initialwidth = 1; +static const float initialmode = 0; +static const float freezemode = 0.5f; + +#define combtuningL1 1116 +#define combtuningL2 1188 +#define combtuningL3 1277 +#define combtuningL4 1356 +#define combtuningL5 1422 +#define combtuningL6 1491 +#define combtuningL7 1557 +#define combtuningL8 1617 +#define allpasstuningL1 556 +#define allpasstuningL2 441 +#define allpasstuningL3 341 +#define allpasstuningL4 225 + +struct revmodel +{ + struct comb combL[numcombs]; + struct allpass allpassL[numallpasses]; + + float bufcombL1[combtuningL1]; + float bufcombL2[combtuningL2]; + float bufcombL3[combtuningL3]; + float bufcombL4[combtuningL4]; + float bufcombL5[combtuningL5]; + float bufcombL6[combtuningL6]; + float bufcombL7[combtuningL7]; + float bufcombL8[combtuningL8]; + + float bufallpassL1[allpasstuningL1]; + float bufallpassL2[allpasstuningL2]; + float bufallpassL3[allpasstuningL3]; + float bufallpassL4[allpasstuningL4]; + + float gain; + float roomsize, roomsize1; + float damp, damp1; + float wet, wet1, wet2; + float dry; + float width; + float mode; +}; + +static float revmodel_process(struct revmodel *rev, float in) +{ + int i; + float mono_out = 0.0f; + float mono_in = in; + float input = mono_in * rev->gain; + for (i = 0; i < numcombs; i++) + mono_out += comb_process(&rev->combL[i], input); + + for (i = 0; i < numallpasses; i++) + mono_out = allpass_process(&rev->allpassL[i], mono_out); + + return mono_in * rev->dry + mono_out * rev->wet1; +} + +static void revmodel_update(struct revmodel *rev) +{ + int i; + rev->wet1 = rev->wet * (rev->width / 2.0f + 0.5f); + + if (rev->mode >= freezemode) + { + rev->roomsize1 = 1.0f; + rev->damp1 = 0.0f; + rev->gain = muted; + } + else + { + rev->roomsize1 = rev->roomsize; + rev->damp1 = rev->damp; + rev->gain = fixedgain; + } + + for (i = 0; i < numcombs; i++) + { + rev->combL[i].feedback = rev->roomsize1; + rev->combL[i].damp1 = rev->damp1; + rev->combL[i].damp2 = 1.0f - rev->damp1; + } +} + +static void revmodel_setroomsize(struct revmodel *rev, float value) +{ + rev->roomsize = value * scaleroom + offsetroom; + revmodel_update(rev); +} + +static void revmodel_setdamp(struct revmodel *rev, float value) +{ + rev->damp = value * scaledamp; + revmodel_update(rev); +} + +static void revmodel_setwet(struct revmodel *rev, float value) +{ + rev->wet = value * scalewet; + revmodel_update(rev); +} + +static void revmodel_setdry(struct revmodel *rev, float value) +{ + rev->dry = value * scaledry; + revmodel_update(rev); +} + +static void revmodel_setwidth(struct revmodel *rev, float value) +{ + rev->width = value; + revmodel_update(rev); +} + +static void revmodel_setmode(struct revmodel *rev, float value) +{ + rev->mode = value; + revmodel_update(rev); +} + +static void revmodel_init(struct revmodel *rev) +{ + rev->combL[0].buffer = rev->bufcombL1; rev->combL[0].bufsize = combtuningL1; + rev->combL[1].buffer = rev->bufcombL2; rev->combL[1].bufsize = combtuningL2; + rev->combL[2].buffer = rev->bufcombL3; rev->combL[2].bufsize = combtuningL3; + rev->combL[3].buffer = rev->bufcombL4; rev->combL[3].bufsize = combtuningL4; + rev->combL[4].buffer = rev->bufcombL5; rev->combL[4].bufsize = combtuningL5; + rev->combL[5].buffer = rev->bufcombL6; rev->combL[5].bufsize = combtuningL6; + rev->combL[6].buffer = rev->bufcombL7; rev->combL[6].bufsize = combtuningL7; + rev->combL[7].buffer = rev->bufcombL8; rev->combL[7].bufsize = combtuningL8; + + rev->allpassL[0].buffer = rev->bufallpassL1; rev->allpassL[0].bufsize = allpasstuningL1; + rev->allpassL[1].buffer = rev->bufallpassL2; rev->allpassL[1].bufsize = allpasstuningL2; + rev->allpassL[2].buffer = rev->bufallpassL3; rev->allpassL[2].bufsize = allpasstuningL3; + rev->allpassL[3].buffer = rev->bufallpassL4; rev->allpassL[3].bufsize = allpasstuningL4; + + rev->allpassL[0].feedback = 0.5f; + rev->allpassL[1].feedback = 0.5f; + rev->allpassL[2].feedback = 0.5f; + rev->allpassL[3].feedback = 0.5f; + + revmodel_setwet(rev, initialwet); + revmodel_setroomsize(rev, initialroom); + revmodel_setdry(rev, initialdry); + revmodel_setdamp(rev, initialdamp); + revmodel_setwidth(rev, initialwidth); + revmodel_setmode(rev, initialmode); +} + +struct reverb_data +{ + struct revmodel left, right; +}; + +static void reverb_free(void *data) +{ + free(data); +} + +static void reverb_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + unsigned i; + float *out; + struct reverb_data *rev = (struct reverb_data*)data; + + output->samples = input->samples; + output->frames = input->frames; + out = output->samples; + + for (i = 0; i < input->frames; i++, out += 2) + { + float in[2] = { out[0], out[1] }; + + out[0] = revmodel_process(&rev->left, in[0]); + out[1] = revmodel_process(&rev->right, in[1]); + } +} + +static void *reverb_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + float drytime, wettime, damping, roomwidth, roomsize; + struct reverb_data *rev = (struct reverb_data*) + calloc(1, sizeof(*rev)); + if (!rev) + return NULL; + + config->get_float(userdata, "drytime", &drytime, 0.43f); + config->get_float(userdata, "wettime", &wettime, 0.4f); + config->get_float(userdata, "damping", &damping, 0.8f); + config->get_float(userdata, "roomwidth", &roomwidth, 0.56f); + config->get_float(userdata, "roomsize", &roomsize, 0.56f); + + revmodel_init(&rev->left); + revmodel_init(&rev->right); + + revmodel_setdamp(&rev->left, damping); + revmodel_setdry(&rev->left, drytime); + revmodel_setwet(&rev->left, wettime); + revmodel_setwidth(&rev->left, roomwidth); + revmodel_setroomsize(&rev->left, roomsize); + + revmodel_setdamp(&rev->right, damping); + revmodel_setdry(&rev->right, drytime); + revmodel_setwet(&rev->right, wettime); + revmodel_setwidth(&rev->right, roomwidth); + revmodel_setroomsize(&rev->right, roomsize); + + return rev; +} + +static const struct dspfilter_implementation reverb_plug = { + reverb_init, + reverb_process, + reverb_free, + + DSPFILTER_API_VERSION, + "Reverb", + "reverb", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation reverb_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &reverb_plug; +} + +#undef dspfilter_get_implementation + + diff --git a/PVSupport/Sources/retro/audio/audio_filters/wahwah.c b/PVSupport/Sources/retro/audio/audio_filters/wahwah.c new file mode 100644 index 0000000000..7b26596d6a --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_filters/wahwah.c @@ -0,0 +1,142 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2014 - Brad Miller + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "dspfilter.h" +#include +#include +#include + +#include + +#define WAHWAH_LFO_SKIP_SAMPLES 30 + +struct wahwah_data +{ + float phase; + float lfoskip; + float b0, b1, b2, a0, a1, a2; + float freq, startphase; + float depth, freqofs, res; + unsigned long skipcount; + + struct + { + float xn1, xn2, yn1, yn2; + } l, r; +}; + +static void wahwah_free(void *data) +{ + if (data) + free(data); +} + +static void wahwah_process(void *data, struct dspfilter_output *output, + const struct dspfilter_input *input) +{ + unsigned i; + float *out; + struct wahwah_data *wah = (struct wahwah_data*)data; + + output->samples = input->samples; + output->frames = input->frames; + out = output->samples; + + for (i = 0; i < input->frames; i++, out += 2) + { + float out_l, out_r; + float in[2] = { out[0], out[1] }; + + if ((wah->skipcount++ % WAHWAH_LFO_SKIP_SAMPLES) == 0) + { + float omega, sn, cs, alpha; + float frequency = (1.0 + cos(wah->skipcount * wah->lfoskip + wah->phase)) / 2.0; + + frequency = frequency * wah->depth * (1.0 - wah->freqofs) + wah->freqofs; + frequency = exp((frequency - 1.0) * 6.0); + + omega = M_PI * frequency; + sn = sin(omega); + cs = cos(omega); + alpha = sn / (2.0 * wah->res); + + wah->b0 = (1.0 - cs) / 2.0; + wah->b1 = 1.0 - cs; + wah->b2 = (1.0 - cs) / 2.0; + wah->a0 = 1.0 + alpha; + wah->a1 = -2.0 * cs; + wah->a2 = 1.0 - alpha; + } + + out_l = (wah->b0 * in[0] + wah->b1 * wah->l.xn1 + wah->b2 * wah->l.xn2 - wah->a1 * wah->l.yn1 - wah->a2 * wah->l.yn2) / wah->a0; + out_r = (wah->b0 * in[1] + wah->b1 * wah->r.xn1 + wah->b2 * wah->r.xn2 - wah->a1 * wah->r.yn1 - wah->a2 * wah->r.yn2) / wah->a0; + + wah->l.xn2 = wah->l.xn1; + wah->l.xn1 = in[0]; + wah->l.yn2 = wah->l.yn1; + wah->l.yn1 = out_l; + + wah->r.xn2 = wah->r.xn1; + wah->r.xn1 = in[1]; + wah->r.yn2 = wah->r.yn1; + wah->r.yn1 = out_r; + + out[0] = out_l; + out[1] = out_r; + } +} + +static void *wahwah_init(const struct dspfilter_info *info, + const struct dspfilter_config *config, void *userdata) +{ + struct wahwah_data *wah = (struct wahwah_data*)calloc(1, sizeof(*wah)); + if (!wah) + return NULL; + + config->get_float(userdata, "lfo_freq", &wah->freq, 1.5f); + config->get_float(userdata, "lfo_start_phase", &wah->startphase, 0.0f); + config->get_float(userdata, "freq_offset", &wah->freqofs, 0.3f); + config->get_float(userdata, "depth", &wah->depth, 0.7f); + config->get_float(userdata, "resonance", &wah->res, 2.5f); + + wah->lfoskip = wah->freq * 2.0 * M_PI / info->input_rate; + wah->phase = wah->startphase * M_PI / 180.0; + + return wah; +} + +static const struct dspfilter_implementation wahwah_plug = { + wahwah_init, + wahwah_process, + wahwah_free, + + DSPFILTER_API_VERSION, + "Wah-Wah", + "wahwah", +}; + +#ifdef HAVE_FILTERS_BUILTIN +#define dspfilter_get_implementation wahwah_dspfilter_get_implementation +#endif + +const struct dspfilter_implementation *dspfilter_get_implementation(dspfilter_simd_mask_t mask) +{ + (void)mask; + return &wahwah_plug; +} + +#undef dspfilter_get_implementation + diff --git a/PVSupport/Sources/retro/audio/audio_resampler_driver.c b/PVSupport/Sources/retro/audio/audio_resampler_driver.c new file mode 100644 index 0000000000..8987e06800 --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_resampler_driver.c @@ -0,0 +1,184 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include +#include + +#include "audio_resampler_driver.h" +#include "../config_file_userdata.h" +#ifdef RARCH_INTERNAL +#include "../performance_counters.h" +#endif +#include "../list_special.h" + +static const rarch_resampler_t *resampler_drivers[] = { + &sinc_resampler, + &CC_resampler, + &nearest_resampler, + &null_resampler, + NULL, +}; + +static const struct resampler_config resampler_config = { + config_userdata_get_float, + config_userdata_get_int, + config_userdata_get_float_array, + config_userdata_get_int_array, + config_userdata_get_string, + config_userdata_free, +}; + +/** + * find_resampler_driver_index: + * @ident : Identifier of resampler driver to find. + * + * Finds resampler driver index by @ident name. + * + * Returns: resampler driver index if resampler driver was found, otherwise + * -1. + **/ +static int find_resampler_driver_index(const char *ident) +{ + unsigned i; + + for (i = 0; resampler_drivers[i]; i++) + if (string_is_equal_noncase(ident, resampler_drivers[i]->ident)) + return i; + return -1; +} + +/** + * audio_resampler_driver_find_handle: + * @idx : index of driver to get handle to. + * + * Returns: handle to audio resampler driver at index. Can be NULL + * if nothing found. + **/ +const void *audio_resampler_driver_find_handle(int idx) +{ + const void *drv = resampler_drivers[idx]; + if (!drv) + return NULL; + return drv; +} + +/** + * audio_resampler_driver_find_ident: + * @idx : index of driver to get handle to. + * + * Returns: Human-readable identifier of audio resampler driver at index. + * Can be NULL if nothing found. + **/ +const char *audio_resampler_driver_find_ident(int idx) +{ + const rarch_resampler_t *drv = resampler_drivers[idx]; + if (!drv) + return NULL; + return drv->ident; +} + +/** + * config_get_audio_resampler_driver_options: + * + * Get an enumerated list of all resampler driver names, separated by '|'. + * + * Returns: string listing of all resampler driver names, separated by '|'. + **/ +const char* config_get_audio_resampler_driver_options(void) +{ + return char_list_new_special(STRING_LIST_AUDIO_RESAMPLER_DRIVERS, NULL); +} + +/** + * find_resampler_driver: + * @ident : Identifier of resampler driver to find. + * + * Finds resampler by @ident name. + * + * Returns: resampler driver if resampler driver was found, otherwise + * NULL. + **/ +static const rarch_resampler_t *find_resampler_driver(const char *ident) +{ + int i = find_resampler_driver_index(ident); + + if (i >= 0) + return resampler_drivers[i]; + + return resampler_drivers[0]; +} + +static resampler_simd_mask_t resampler_get_cpu_features(void) +{ + return cpu_features_get(); +} + +/** + * resampler_append_plugs: + * @re : Resampler handle + * @backend : Resampler backend that is about to be set. + * @bw_ratio : Bandwidth ratio. + * + * Initializes resampler driver based on queried CPU features. + * + * Returns: true (1) if successfully initialized, otherwise false (0). + **/ +static bool resampler_append_plugs(void **re, + const rarch_resampler_t **backend, + double bw_ratio) +{ + resampler_simd_mask_t mask = resampler_get_cpu_features(); + + *re = (*backend)->init(&resampler_config, bw_ratio, mask); + + if (!*re) + return false; + return true; +} + +/** + * rarch_resampler_realloc: + * @re : Resampler handle + * @backend : Resampler backend that is about to be set. + * @ident : Identifier name for resampler we want. + * @bw_ratio : Bandwidth ratio. + * + * Reallocates resampler. Will free previous handle before + * allocating a new one. If ident is NULL, first resampler will be used. + * + * Returns: true (1) if successful, otherwise false (0). + **/ +bool rarch_resampler_realloc(void **re, const rarch_resampler_t **backend, + const char *ident, double bw_ratio) +{ + if (*re && *backend) + (*backend)->free(*re); + + *re = NULL; + *backend = find_resampler_driver(ident); + + if (!resampler_append_plugs(re, backend, bw_ratio)) + goto error; + + return true; + +error: + if (!*re) + *backend = NULL; + return false; +} diff --git a/PVSupport/Sources/retro/audio/audio_resampler_driver.h b/PVSupport/Sources/retro/audio/audio_resampler_driver.h new file mode 100644 index 0000000000..ebd9ac0fff --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_resampler_driver.h @@ -0,0 +1,205 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + + +#ifndef __AUDIO_RESAMPLER_DRIVER_H +#define __AUDIO_RESAMPLER_DRIVER_H + +#include +#include +#include + +#include +#include +#include +#include + +RETRO_BEGIN_DECLS + +#define RESAMPLER_SIMD_SSE (1 << 0) +#define RESAMPLER_SIMD_SSE2 (1 << 1) +#define RESAMPLER_SIMD_VMX (1 << 2) +#define RESAMPLER_SIMD_VMX128 (1 << 3) +#define RESAMPLER_SIMD_AVX (1 << 4) +#define RESAMPLER_SIMD_NEON (1 << 5) +#define RESAMPLER_SIMD_SSE3 (1 << 6) +#define RESAMPLER_SIMD_SSSE3 (1 << 7) +#define RESAMPLER_SIMD_MMX (1 << 8) +#define RESAMPLER_SIMD_MMXEXT (1 << 9) +#define RESAMPLER_SIMD_SSE4 (1 << 10) +#define RESAMPLER_SIMD_SSE42 (1 << 11) +#define RESAMPLER_SIMD_AVX2 (1 << 12) +#define RESAMPLER_SIMD_VFPU (1 << 13) +#define RESAMPLER_SIMD_PS (1 << 14) + +/* A bit-mask of all supported SIMD instruction sets. + * Allows an implementation to pick different + * resampler_implementation structs. + */ +typedef unsigned resampler_simd_mask_t; + +#define RESAMPLER_API_VERSION 1 + +struct resampler_data +{ + const float *data_in; + float *data_out; + + size_t input_frames; + size_t output_frames; + + double ratio; +}; + +/* Returns true if config key was found. Otherwise, + * returns false, and sets value to default value. + */ +typedef int (*resampler_config_get_float_t)(void *userdata, + const char *key, float *value, float default_value); + +typedef int (*resampler_config_get_int_t)(void *userdata, + const char *key, int *value, int default_value); + +/* Allocates an array with values. free() with resampler_config_free_t. */ +typedef int (*resampler_config_get_float_array_t)(void *userdata, + const char *key, float **values, unsigned *out_num_values, + const float *default_values, unsigned num_default_values); + +typedef int (*resampler_config_get_int_array_t)(void *userdata, + const char *key, int **values, unsigned *out_num_values, + const int *default_values, unsigned num_default_values); + +typedef int (*resampler_config_get_string_t)(void *userdata, + const char *key, char **output, const char *default_output); + +/* Calls free() in host runtime. Sometimes needed on Windows. + * free() on NULL is fine. */ +typedef void (*resampler_config_free_t)(void *ptr); + +struct resampler_config +{ + resampler_config_get_float_t get_float; + resampler_config_get_int_t get_int; + + resampler_config_get_float_array_t get_float_array; + resampler_config_get_int_array_t get_int_array; + + resampler_config_get_string_t get_string; + /* Avoid problems where resampler plug and host are + * linked against different C runtimes. */ + resampler_config_free_t free; +}; + +/* Bandwidth factor. Will be < 1.0 for downsampling, > 1.0 for upsampling. + * Corresponds to expected resampling ratio. */ +typedef void *(*resampler_init_t)(const struct resampler_config *config, + double bandwidth_mod, resampler_simd_mask_t mask); + +/* Frees the handle. */ +typedef void (*resampler_free_t)(void *data); + +/* Processes input data. */ +typedef void (*resampler_process_t)(void *_data, struct resampler_data *data); + +typedef struct rarch_resampler +{ + resampler_init_t init; + resampler_process_t process; + resampler_free_t free; + + /* Must be RESAMPLER_API_VERSION */ + unsigned api_version; + + /* Human readable identifier of implementation. */ + const char *ident; + + /* Computer-friendly short version of ident. + * Lower case, no spaces and special characters, etc. */ + const char *short_ident; +} rarch_resampler_t; + +typedef struct audio_frame_float +{ + float l; + float r; +} audio_frame_float_t; + +extern rarch_resampler_t sinc_resampler; +extern rarch_resampler_t CC_resampler; +extern rarch_resampler_t nearest_resampler; +extern rarch_resampler_t null_resampler; + +#ifndef DONT_HAVE_STRING_LIST +/** + * config_get_audio_resampler_driver_options: + * + * Get an enumerated list of all resampler driver names, separated by '|'. + * + * Returns: string listing of all resampler driver names, separated by '|'. + **/ +const char* config_get_audio_resampler_driver_options(void); +#endif + +/** + * audio_resampler_driver_find_handle: + * @index : index of driver to get handle to. + * + * Returns: handle to audio resampler driver at index. Can be NULL + * if nothing found. + **/ +const void *audio_resampler_driver_find_handle(int index); + +/** + * audio_resampler_driver_find_ident: + * @index : index of driver to get handle to. + * + * Returns: Human-readable identifier of audio resampler driver at index. + * Can be NULL if nothing found. + **/ +const char *audio_resampler_driver_find_ident(int index); + +/** + * rarch_resampler_realloc: + * @re : Resampler handle + * @backend : Resampler backend that is about to be set. + * @ident : Identifier name for resampler we want. + * @bw_ratio : Bandwidth ratio. + * + * Reallocates resampler. Will free previous handle before + * allocating a new one. If ident is NULL, first resampler will be used. + * + * Returns: true (1) if successful, otherwise false (0). + **/ +bool rarch_resampler_realloc(void **re, const rarch_resampler_t **backend, + const char *ident, double bw_ratio); + +/* Convenience macros. + * freep makes sure to set handles to NULL to avoid double-free + * in rarch_resampler_realloc. */ +#define rarch_resampler_freep(backend, handle) do { \ + if (*(backend) && *(handle)) \ + (*backend)->free(*handle); \ + *backend = NULL; \ + *handle = NULL; \ +} while(0) + +#define rarch_resampler_process(backend, handle, data) do { \ + (backend)->process(handle, data); \ +} while(0) + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/audio/audio_thread_wrapper.c b/PVSupport/Sources/retro/audio/audio_thread_wrapper.c new file mode 100644 index 0000000000..02b0cad01f --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_thread_wrapper.c @@ -0,0 +1,320 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#include +#include + +#include "audio_thread_wrapper.h" +#include "../performance_counters.h" +#include "../verbosity.h" + +typedef struct audio_thread +{ + const audio_driver_t *driver; + void *driver_data; + + sthread_t *thread; + slock_t *lock; + scond_t *cond; + bool alive; + bool stopped; + bool stopped_ack; + bool is_paused; + bool use_float; + + int inited; + + /* Initialization options. */ + const char *device; + unsigned out_rate; + unsigned latency; +} audio_thread_t; + +static void audio_thread_loop(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + + if (!thr) + return; + + VLOG(@"[Audio Thread]: Initializing audio driver.\n"); + thr->driver_data = thr->driver->init(thr->device, thr->out_rate, thr->latency); + slock_lock(thr->lock); + thr->inited = thr->driver_data ? 1 : -1; + if (thr->inited > 0 && thr->driver->use_float) + thr->use_float = thr->driver->use_float(thr->driver_data); + scond_signal(thr->cond); + slock_unlock(thr->lock); + + if (thr->inited < 0) + return; + + /* Wait until we start to avoid calling + * stop immediately after initialization. */ + slock_lock(thr->lock); + while (thr->stopped) + scond_wait(thr->cond, thr->lock); + slock_unlock(thr->lock); + + VLOG(@"[Audio Thread]: Starting audio.\n"); + + for (;;) + { + slock_lock(thr->lock); + + if (!thr->alive) + { + scond_signal(thr->cond); + thr->stopped_ack = true; + slock_unlock(thr->lock); + break; + } + + if (thr->stopped) + { + thr->driver->stop(thr->driver_data); + while (thr->stopped) + { + /* If we stop right after start, we might not be able to properly ack. + * Signal in the loop instead. */ + thr->stopped_ack = true; + scond_signal(thr->cond); + + scond_wait(thr->cond, thr->lock); + } + thr->driver->start(thr->driver_data); + } + + slock_unlock(thr->lock); + audio_driver_callback(); + } + + VLOG(@"[Audio Thread]: Tearing down driver.\n"); + thr->driver->free(thr->driver_data); +} + +static void audio_thread_block(audio_thread_t *thr) +{ + if (!thr) + return; + + if (thr->stopped) + return; + + slock_lock(thr->lock); + thr->stopped_ack = false; + thr->stopped = true; + scond_signal(thr->cond); + + /* Wait until audio driver actually goes to sleep. */ + while (!thr->stopped_ack) + scond_wait(thr->cond, thr->lock); + + slock_unlock(thr->lock); +} + +static void audio_thread_unblock(audio_thread_t *thr) +{ + if (!thr) + return; + + slock_lock(thr->lock); + thr->stopped = false; + scond_signal(thr->cond); + slock_unlock(thr->lock); +} + +static void audio_thread_free(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + + if (!thr) + return; + + if (thr->thread) + { + slock_lock(thr->lock); + thr->stopped = false; + thr->alive = false; + scond_signal(thr->cond); + slock_unlock(thr->lock); + + sthread_join(thr->thread); + } + + if (thr->lock) + slock_free(thr->lock); + if (thr->cond) + scond_free(thr->cond); + free(thr); +} + +static bool audio_thread_alive(void *data) +{ + bool alive = false; + audio_thread_t *thr = (audio_thread_t*)data; + + if (!thr) + return false; + + audio_thread_block(thr); + alive = !thr->is_paused; + audio_thread_unblock(thr); + + return alive; +} + +static bool audio_thread_stop(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + + if (!thr) + return false; + + audio_thread_block(thr); + thr->is_paused = true; + + audio_driver_disable_callback(); + + return true; +} + +static bool audio_thread_start(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + + if (!thr) + return false; + + audio_driver_enable_callback(); + + thr->is_paused = false; + audio_thread_unblock(thr); + + return true; +} + +static void audio_thread_set_nonblock_state(void *data, bool state) +{ + (void)data; + (void)state; +} + +static bool audio_thread_use_float(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + if (!thr) + return false; + return thr->use_float; +} + +static ssize_t audio_thread_write(void *data, const void *buf, size_t size) +{ + ssize_t ret; + audio_thread_t *thr = (audio_thread_t*)data; + + if (!thr) + return 0; + + ret = thr->driver->write(thr->driver_data, buf, size); + + if (ret < 0) + { + slock_lock(thr->lock); + thr->alive = false; + scond_signal(thr->cond); + slock_unlock(thr->lock); + } + + return ret; +} + +static const audio_driver_t audio_thread = { + NULL, + audio_thread_write, + audio_thread_stop, + audio_thread_start, + audio_thread_alive, + audio_thread_set_nonblock_state, + audio_thread_free, + audio_thread_use_float, + "audio-thread", + NULL, /* No point in using rate control with threaded audio. */ + NULL, +}; + +/** + * audio_init_thread: + * @out_driver : output driver + * @out_data : output audio data + * @device : audio device (optional) + * @out_rate : output audio rate + * @latency : audio latency + * @driver : audio driver + * + * Starts a audio driver in a new thread. + * Access to audio driver will be mediated through this driver. + * This driver interfaces with audio callback and is + * only used in that case. + * + * Returns: true (1) if successful, otherwise false (0). + **/ +bool audio_init_thread(const audio_driver_t **out_driver, + void **out_data, const char *device, unsigned audio_out_rate, + unsigned latency, const audio_driver_t *drv) +{ + audio_thread_t *thr = (audio_thread_t*)calloc(1, sizeof(*thr)); + if (!thr) + return false; + + thr->driver = (const audio_driver_t*)drv; + thr->device = device; + thr->out_rate = audio_out_rate; + thr->latency = latency; + + if (!(thr->cond = scond_new())) + goto error; + if (!(thr->lock = slock_new())) + goto error; + + thr->alive = true; + thr->stopped = true; + + if (!(thr->thread = sthread_create(audio_thread_loop, thr))) + goto error; + + /* Wait until thread has initialized (or failed) the driver. */ + slock_lock(thr->lock); + while (!thr->inited) + scond_wait(thr->cond, thr->lock); + slock_unlock(thr->lock); + + if (thr->inited < 0) /* Thread failed. */ + goto error; + + *out_driver = &audio_thread; + *out_data = thr; + return true; + +error: + *out_driver = NULL; + *out_data = NULL; + audio_thread_free(thr); + return false; +} diff --git a/PVSupport/Sources/retro/audio/audio_thread_wrapper.h b/PVSupport/Sources/retro/audio/audio_thread_wrapper.h new file mode 100644 index 0000000000..1e7d43b1ad --- /dev/null +++ b/PVSupport/Sources/retro/audio/audio_thread_wrapper.h @@ -0,0 +1,44 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef RARCH_AUDIO_THREAD_H__ +#define RARCH_AUDIO_THREAD_H__ + +#include + +#include "audio_driver.h" + +/** + * audio_init_thread: + * @out_driver : output driver + * @out_data : output audio data + * @device : audio device (optional) + * @out_rate : output audio rate + * @latency : audio latency + * @driver : audio driver + * + * Starts a audio driver in a new thread. + * Access to audio driver will be mediated through this driver. + * This driver interfaces with audio callback and is only used in that case. + * + * Returns: true (1) if successful, otherwise false (0). + **/ +bool audio_init_thread(const audio_driver_t **out_driver, void **out_data, + const char *device, unsigned out_rate, unsigned latency, + const audio_driver_t *driver); + +#endif + diff --git a/PVSupport/Sources/retro/audio/drivers/alsa.c b/PVSupport/Sources/retro/audio/drivers/alsa.c new file mode 100644 index 0000000000..17ea462939 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/alsa.c @@ -0,0 +1,406 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include + +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +typedef struct alsa +{ + snd_pcm_t *pcm; + size_t buffer_size; + bool nonblock; + bool has_float; + bool can_pause; + bool is_paused; +} alsa_t; + +static bool alsa_use_float(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + return alsa->has_float; +} + +static bool find_float_format(snd_pcm_t *pcm, void *data) +{ + snd_pcm_hw_params_t *params = (snd_pcm_hw_params_t*)data; + + if (snd_pcm_hw_params_test_format(pcm, params, SND_PCM_FORMAT_FLOAT) == 0) + { + VLOG(@"ALSA: Using floating point format.\n"); + return true; + } + + VLOG(@"ALSA: Using signed 16-bit format.\n"); + return false; +} + +static void *alsa_init(const char *device, unsigned rate, unsigned latency) +{ + snd_pcm_format_t format; + snd_pcm_uframes_t buffer_size; + snd_pcm_hw_params_t *params = NULL; + snd_pcm_sw_params_t *sw_params = NULL; + + unsigned latency_usec = latency * 1000; + unsigned channels = 2; + unsigned periods = 4; + + const char *alsa_dev = "default"; + alsa_t *alsa = (alsa_t*)calloc(1, sizeof(alsa_t)); + + if (!alsa) + return NULL; + + if (device) + alsa_dev = device; + + if (snd_pcm_open( + &alsa->pcm, alsa_dev, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK) < 0) + goto error; + + if (snd_pcm_hw_params_malloc(¶ms) < 0) + goto error; + + alsa->has_float = find_float_format(alsa->pcm, params); + format = alsa->has_float ? SND_PCM_FORMAT_FLOAT : SND_PCM_FORMAT_S16; + + if (snd_pcm_hw_params_any(alsa->pcm, params) < 0) + goto error; + + if (snd_pcm_hw_params_set_access( + alsa->pcm, params, SND_PCM_ACCESS_RW_INTERLEAVED) < 0) + goto error; + + if (snd_pcm_hw_params_set_format(alsa->pcm, params, format) < 0) + goto error; + + if (snd_pcm_hw_params_set_channels(alsa->pcm, params, channels) < 0) + goto error; + + if (snd_pcm_hw_params_set_rate(alsa->pcm, params, rate, 0) < 0) + goto error; + + if (snd_pcm_hw_params_set_buffer_time_near( + alsa->pcm, params, &latency_usec, NULL) < 0) + goto error; + + if (snd_pcm_hw_params_set_periods_near( + alsa->pcm, params, &periods, NULL) < 0) + goto error; + + if (snd_pcm_hw_params(alsa->pcm, params) < 0) + goto error; + + /* Shouldn't have to bother with this, + * but some drivers are apparently broken. */ + if (snd_pcm_hw_params_get_period_size(params, &buffer_size, NULL)) + snd_pcm_hw_params_get_period_size_min(params, &buffer_size, NULL); + + VLOG(@"ALSA: Period size: %d frames\n", (int)buffer_size); + + if (snd_pcm_hw_params_get_buffer_size(params, &buffer_size)) + snd_pcm_hw_params_get_buffer_size_max(params, &buffer_size); + + VLOG(@"ALSA: Buffer size: %d frames\n", (int)buffer_size); + + alsa->buffer_size = snd_pcm_frames_to_bytes(alsa->pcm, buffer_size); + alsa->can_pause = snd_pcm_hw_params_can_pause(params); + + VLOG(@"ALSA: Can pause: %s.\n", alsa->can_pause ? "yes" : "no"); + + if (snd_pcm_sw_params_malloc(&sw_params) < 0) + goto error; + + if (snd_pcm_sw_params_current(alsa->pcm, sw_params) < 0) + goto error; + + if (snd_pcm_sw_params_set_start_threshold( + alsa->pcm, sw_params, buffer_size / 2) < 0) + goto error; + + if (snd_pcm_sw_params(alsa->pcm, sw_params) < 0) + goto error; + + snd_pcm_hw_params_free(params); + snd_pcm_sw_params_free(sw_params); + + return alsa; + +error: + ELOG(@"ALSA: Failed to initialize...\n"); + if (params) + snd_pcm_hw_params_free(params); + + if (sw_params) + snd_pcm_sw_params_free(sw_params); + + if (alsa) + { + if (alsa->pcm) + { + snd_pcm_close(alsa->pcm); + snd_config_update_free_global(); + } + + free(alsa); + } + return NULL; +} + +static ssize_t alsa_write(void *data, const void *buf_, size_t size_) +{ + alsa_t *alsa = (alsa_t*)data; + const uint8_t *buf = (const uint8_t*)buf_; + bool eagain_retry = true; + snd_pcm_sframes_t written = 0; + snd_pcm_sframes_t size = snd_pcm_bytes_to_frames(alsa->pcm, size_); + + while (size) + { + snd_pcm_sframes_t frames; + + if (!alsa->nonblock) + { + int rc = snd_pcm_wait(alsa->pcm, -1); + + if (rc == -EPIPE || rc == -ESTRPIPE || rc == -EINTR) + { + if (snd_pcm_recover(alsa->pcm, rc, 1) < 0) + { + ELOG(@"[ALSA]: (#1) Failed to recover from error (%s)\n", + snd_strerror(rc)); + return -1; + } + continue; + } + } + + frames = snd_pcm_writei(alsa->pcm, buf, size); + + if (frames == -EPIPE || frames == -EINTR || frames == -ESTRPIPE) + { + if (snd_pcm_recover(alsa->pcm, frames, 1) < 0) + { + ELOG(@"[ALSA]: (#2) Failed to recover from error (%s)\n", + snd_strerror(frames)); + return -1; + } + + break; + } + else if (frames == -EAGAIN && !alsa->nonblock) + { + /* Definitely not supposed to happen. */ + WLOG(@"[ALSA]: poll() was signaled, but EAGAIN returned from write.\n" + "Your ALSA driver might be subtly broken.\n"); + + if (eagain_retry) + { + eagain_retry = false; + continue; + } + return written; + } + else if (frames == -EAGAIN) /* Expected if we're running nonblock. */ + return written; + else if (frames < 0) + { + ELOG(@"[ALSA]: Unknown error occurred (%s).\n", + snd_strerror(frames)); + return -1; + } + + written += frames; + buf += (frames << 1) * + (alsa->has_float ? sizeof(float) : sizeof(int16_t)); + size -= frames; + } + + return written; +} + +static bool alsa_alive(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + if (!alsa) + return false; + return !alsa->is_paused; +} + +static bool alsa_stop(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + + if (alsa->can_pause + && !alsa->is_paused) + { + int ret = snd_pcm_pause(alsa->pcm, 1); + + if (ret < 0) + return false; + + alsa->is_paused = true; + } + + return true; +} + +static void alsa_set_nonblock_state(void *data, bool state) +{ + alsa_t *alsa = (alsa_t*)data; + alsa->nonblock = state; +} + +static bool alsa_start(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + + if (alsa->can_pause + && alsa->is_paused) + { + int ret = snd_pcm_pause(alsa->pcm, 0); + + if (ret < 0) + { + ELOG(@"[ALSA]: Failed to unpause: %s.\n", + snd_strerror(ret)); + return false; + } + + alsa->is_paused = false; + } + return true; +} + +static void alsa_free(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + + if (alsa) + { + if (alsa->pcm) + { + snd_pcm_drop(alsa->pcm); + snd_pcm_close(alsa->pcm); + snd_config_update_free_global(); + } + + free(alsa); + } +} + +static size_t alsa_write_avail(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + snd_pcm_sframes_t avail = snd_pcm_avail(alsa->pcm); + + if (avail < 0) + { +#if 0 + WLOG(@"[ALSA]: snd_pcm_avail() failed: %s\n", + snd_strerror(avail)); +#endif + return alsa->buffer_size; + } + + return snd_pcm_frames_to_bytes(alsa->pcm, avail); +} + +static size_t alsa_buffer_size(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + return alsa->buffer_size; +} + +static void *alsa_device_list_new(void *data) +{ + void **hints, **n; + union string_list_elem_attr attr; + struct string_list *s = string_list_new(); + + if (!s) + return NULL; + + attr.i = 0; + + if (snd_device_name_hint(-1, "pcm", &hints) != 0) + goto error; + + n = hints; + + while (*n != NULL) + { + char *name = snd_device_name_get_hint(*n, "NAME"); + char *io = snd_device_name_get_hint(*n, "IOID"); + char *desc = snd_device_name_get_hint(*n, "DESC"); + + /* description of device IOID - input / output identifcation + * ("Input" or "Output"), NULL means both) */ + + if (!io || !strcmp(io,"Output")) + string_list_append(s, name, attr); + + if (name) + free(name); + if (io) + free(io); + if (desc) + free(desc); + + n++; + } + + /* free hint buffer too */ + snd_device_name_free_hint(hints); + + return s; + +error: + string_list_free(s); + return NULL; +} + +static void alsa_device_list_free(void *data, void *array_list_data) +{ + struct string_list *s = (struct string_list*)array_list_data; + + if (!s) + return; + + string_list_free(s); +} + +audio_driver_t audio_alsa = { + alsa_init, + alsa_write, + alsa_stop, + alsa_start, + alsa_alive, + alsa_set_nonblock_state, + alsa_free, + alsa_use_float, + "alsa", + alsa_device_list_new, + alsa_device_list_free, + alsa_write_avail, + alsa_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/alsa_qsa.c b/PVSupport/Sources/retro/audio/drivers/alsa_qsa.c new file mode 100644 index 0000000000..636dbe1f59 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/alsa_qsa.c @@ -0,0 +1,384 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#define ALSA_PCM_NEW_HW_PARAMS_API +#define ALSA_PCM_NEW_SW_PARAMS_API +#include + +#include "../audio_driver.h" +#include "../../configuration.h" + +#define MAX_FRAG_SIZE 3072 +#define DEFAULT_RATE 48000 + +#define CHANNELS 2 + +typedef struct alsa +{ + uint8_t **buffer; + uint8_t *buffer_chunk; + unsigned buffer_index; + unsigned buffer_ptr; + volatile unsigned buffered_blocks; + + snd_pcm_t *pcm; + bool nonblock; + bool has_float; + bool can_pause; + bool is_paused; + unsigned buf_size; + unsigned buf_count; +} alsa_t; + +typedef long snd_pcm_sframes_t; + +static void *alsa_qsa_init(const char *device, + unsigned rate, unsigned latency) +{ + int err, card, dev, i; + snd_pcm_channel_params_t params = {0}; + snd_pcm_channel_info_t pi; + snd_pcm_channel_setup_t setup = {0}; + settings_t *settings = config_get_ptr(); + alsa_t *alsa = (alsa_t*)calloc(1, sizeof(alsa_t)); + if (!alsa) + return NULL; + + (void)device; + (void)rate; + (void)latency; + + if ((err = snd_pcm_open_preferred(&alsa->pcm, &card, &dev, + SND_PCM_OPEN_PLAYBACK)) < 0) + { + ELOG(@"[ALSA QSA]: Audio open error: %s\n", + snd_strerror(err)); + goto error; + } + + if((err = snd_pcm_nonblock_mode(alsa->pcm, 1)) < 0) + { + ELOG(@"[ALSA QSA]: Can't set blocking mode: %s\n", + snd_strerror(err)); + goto error; + } + + memset(&pi, 0, sizeof(pi)); + pi.channel = SND_PCM_CHANNEL_PLAYBACK; + if ((err = snd_pcm_channel_info(alsa->pcm, &pi)) < 0) + { + ELOG(@"[ALSA QSA]: snd_pcm_channel_info failed: %s\n", + snd_strerror(err)); + goto error; + } + + memset(¶ms, 0, sizeof(params)); + + params.channel = SND_PCM_CHANNEL_PLAYBACK; + params.mode = SND_PCM_MODE_BLOCK; + + params.format.interleave = 1; + params.format.format = SND_PCM_SFMT_S16_LE; + params.format.rate = DEFAULT_RATE; + params.format.voices = 2; + + params.start_mode = SND_PCM_START_FULL; + params.stop_mode = SND_PCM_STOP_STOP; + + params.buf.block.frag_size = pi.max_fragment_size; + params.buf.block.frags_min = 2; + params.buf.block.frags_max = 8; + + VLOG(@"Fragment size: %d\n", params.buf.block.frag_size); + VLOG(@"Min Fragment size: %d\n", params.buf.block.frags_min); + VLOG(@"Max Fragment size: %d\n", params.buf.block.frags_max); + + if ((err = snd_pcm_channel_params(alsa->pcm, ¶ms)) < 0) + { + ELOG(@"[ALSA QSA]: Channel Parameter Error: %s\n", + snd_strerror(err)); + goto error; + } + + setup.channel = SND_PCM_CHANNEL_PLAYBACK; + + if ((err = snd_pcm_channel_setup(alsa->pcm, &setup)) < 0) + { + ELOG(@"[ALSA QSA]: Channel Parameter Read Back Error: %s\n", + snd_strerror(err)); + goto error; + } + + if (settings->audio.block_frames) + alsa->buf_size = settings->audio.block_frames * 4; + else + alsa->buf_size = next_pow2(32 * latency); + + VLOG(@"[ALSA QSA]: buffer size: %u bytes\n", alsa->buf_size); + + alsa->buf_count = (latency * 4 * rate + 500) / 1000; + alsa->buf_count = (alsa->buf_count + alsa->buf_size / 2) / alsa->buf_size; + + if ((err = snd_pcm_channel_prepare(alsa->pcm, + SND_PCM_CHANNEL_PLAYBACK)) < 0) + { + ELOG(@"[ALSA QSA]: Channel Prepare Error: %s\n", + snd_strerror(err)); + goto error; + } + + alsa->buffer = (uint8_t**)calloc(sizeof(uint8_t*), alsa->buf_count); + if (!alsa->buffer) + goto error; + + alsa->buffer_chunk = (uint8_t*)calloc(alsa->buf_count, alsa->buf_size); + if (!alsa->buffer_chunk) + goto error; + + for (i = 0; i < alsa->buf_count; i++) + alsa->buffer[i] = alsa->buffer_chunk + i * alsa->buf_size; + + alsa->has_float = false; + alsa->can_pause = true; + VLOG(@"[ALSA QSA]: Can pause: %s.\n", + alsa->can_pause ? "yes" : "no"); + + return alsa; + +error: + return (void*)-1; +} + +static int check_pcm_status(void *data, int channel_type) +{ + alsa_t *alsa = (alsa_t*)data; + snd_pcm_channel_status_t status; + int ret = EOK; + + memset(&status, 0, sizeof (status)); + status.channel = channel_type; + + if ((ret = snd_pcm_channel_status(alsa->pcm, &status)) == 0) + { + if (status.status == SND_PCM_STATUS_UNSECURE) + { + ELOG(@"check_pcm_status got SND_PCM_STATUS_UNSECURE, aborting playback\n"); + ret = -EPROTO; + } + else if (status.status == SND_PCM_STATUS_UNDERRUN) + { + VLOG(@"check_pcm_status: SNDP_CM_STATUS_UNDERRUN.\n"); + if ((ret = snd_pcm_channel_prepare(alsa->pcm, channel_type)) < 0) + { + ELOG(@"Invalid state detected for underrun on snd_pcm_channel_prepare: %s\n", + snd_strerror(ret)); + ret = -EPROTO; + } + } + else if (status.status == SND_PCM_STATUS_OVERRUN) + { + VLOG(@"check_pcm_status: SNDP_CM_STATUS_OVERRUN.\n"); + if ((ret = snd_pcm_channel_prepare(alsa->pcm, channel_type)) < 0) + { + ELOG(@"Invalid state detected for overrun on snd_pcm_channel_prepare: %s\n", + snd_strerror(ret)); + ret = -EPROTO; + } + } + else if (status.status == SND_PCM_STATUS_CHANGE) + { + VLOG(@"check_pcm_status: SNDP_CM_STATUS_CHANGE.\n"); + if ((ret = snd_pcm_channel_prepare(alsa->pcm, channel_type)) < 0) + { + ELOG(@"Invalid state detected for change on snd_pcm_channel_prepare: %s\n", + snd_strerror(ret)); + ret = -EPROTO; + } + } + } + else + { + ELOG(@"check_pcm_status failed: %s\n", snd_strerror(ret)); + if (ret == -ESRCH) + ret = -EBADF; + } + + return ret; +} + + +static ssize_t alsa_qsa_write(void *data, const void *buf, size_t size) +{ + alsa_t *alsa = (alsa_t*)data; + snd_pcm_sframes_t written = 0; + + while (size) + { + size_t avail_write = MIN(alsa->buf_size - alsa->buffer_ptr, size); + + if (avail_write) + { + memcpy(alsa->buffer[alsa->buffer_index] + + alsa->buffer_ptr, buf, avail_write); + + alsa->buffer_ptr += avail_write; + buf = (void*)((uint8_t*)buf + avail_write); + size -= avail_write; + written += avail_write; + } + + if (alsa->buffer_ptr >= alsa->buf_size) + { + snd_pcm_sframes_t frames = snd_pcm_write(alsa->pcm, + alsa->buffer[alsa->buffer_index], alsa->buf_size); + + alsa->buffer_index = (alsa->buffer_index + 1) % alsa->buf_count; + alsa->buffer_ptr = 0; + + if (frames <= 0) + { + int ret; + + if (frames == -EAGAIN) + continue; + + ret = check_pcm_status(alsa, SND_PCM_CHANNEL_PLAYBACK); + + if (ret == -EPROTO || ret == -EBADF) + return -1; + } + } + + } + + return written; +} + +static bool alsa_qsa_stop(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + + if (alsa->can_pause && !alsa->is_paused) + { + int ret = snd_pcm_playback_pause(alsa->pcm); + if (ret < 0) + return false; + + alsa->is_paused = true; + } + + return true; +} + +static bool alsa_qsa_alive(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + if (alsa) + return !alsa->is_paused; + return false; +} + +static bool alsa_qsa_start(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + + if (alsa->can_pause && alsa->is_paused) + { + int ret = snd_pcm_playback_resume(alsa->pcm); + + if (ret < 0) + { + ELOG(@"[ALSA QSA]: Failed to unpause: %s.\n", + snd_strerror(ret)); + return false; + } + + alsa->is_paused = false; + } + + return true; +} + +static void alsa_qsa_set_nonblock_state(void *data, bool state) +{ + alsa_t *alsa = (alsa_t*)data; + + int err; + + if((err = snd_pcm_nonblock_mode(alsa->pcm, state)) < 0) + { + ELOG(@"Can't set blocking mode to %d: %s\n", state, + snd_strerror(err)); + return; + } + + alsa->nonblock = state; +} + + +static bool alsa_qsa_use_float(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + return alsa->has_float; +} + +static void alsa_qsa_free(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + + if (alsa) + { + if (alsa->pcm) + { + snd_pcm_close(alsa->pcm); + alsa->pcm = NULL; + } + free(alsa->buffer); + free(alsa->buffer_chunk); + free(alsa); + } +} + +static size_t alsa_qsa_write_avail(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + size_t avail = (alsa->buf_count - + (int)alsa->buffered_blocks - 1) * alsa->buf_size + + (alsa->buf_size - (int)alsa->buffer_ptr); + return avail; +} + +static size_t alsa_qsa_buffer_size(void *data) +{ + alsa_t *alsa = (alsa_t*)data; + return alsa->buf_size * alsa->buf_count; +} + +audio_driver_t audio_alsa = { + alsa_qsa_init, + alsa_qsa_write, + alsa_qsa_stop, + alsa_qsa_start, + alsa_qsa_alive, + alsa_qsa_set_nonblock_state, + alsa_qsa_free, + alsa_qsa_use_float, + "alsa", + NULL, + NULL, + alsa_qsa_write_avail, + alsa_qsa_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/alsathread.c b/PVSupport/Sources/retro/audio/drivers/alsathread.c new file mode 100644 index 0000000000..3d8e202a77 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/alsathread.c @@ -0,0 +1,421 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2012-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include + +#include + +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +#define TRY_ALSA(x) if (x < 0) { \ + goto error; \ + } + +typedef struct alsa_thread +{ + snd_pcm_t *pcm; + bool nonblock; + bool is_paused; + bool has_float; + volatile bool thread_dead; + + size_t buffer_size; + size_t period_size; + snd_pcm_uframes_t period_frames; + + fifo_buffer_t *buffer; + sthread_t *worker_thread; + slock_t *fifo_lock; + scond_t *cond; + slock_t *cond_lock; +} alsa_thread_t; + +static void alsa_worker_thread(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + + uint8_t *buf = (uint8_t *)calloc(1, alsa->period_size); + if (!buf) + { + ELOG(@"failed to allocate audio buffer"); + goto end; + } + + while (!alsa->thread_dead) + { + size_t avail; + size_t fifo_size; + snd_pcm_sframes_t frames; + slock_lock(alsa->fifo_lock); + avail = fifo_read_avail(alsa->buffer); + fifo_size = MIN(alsa->period_size, avail); + fifo_read(alsa->buffer, buf, fifo_size); + scond_signal(alsa->cond); + slock_unlock(alsa->fifo_lock); + + /* If underrun, fill rest with silence. */ + memset(buf + fifo_size, 0, alsa->period_size - fifo_size); + + frames = snd_pcm_writei(alsa->pcm, buf, alsa->period_frames); + + if (frames == -EPIPE || frames == -EINTR || + frames == -ESTRPIPE) + { + if (snd_pcm_recover(alsa->pcm, frames, 1) < 0) + { + ELOG(@"[ALSA]: (#2) Failed to recover from error (%s)\n", + snd_strerror(frames)); + break; + } + + continue; + } + else if (frames < 0) + { + ELOG(@"[ALSA]: Unknown error occurred (%s).\n", + snd_strerror(frames)); + break; + } + } + +end: + slock_lock(alsa->cond_lock); + alsa->thread_dead = true; + scond_signal(alsa->cond); + slock_unlock(alsa->cond_lock); + free(buf); +} + +static bool alsa_thread_use_float(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + return alsa->has_float; +} + +static bool alsathread_find_float_format(snd_pcm_t *pcm, + snd_pcm_hw_params_t *params) +{ + if (snd_pcm_hw_params_test_format(pcm, params, SND_PCM_FORMAT_FLOAT) == 0) + { + VLOG(@"ALSA: Using floating point format.\n"); + return true; + } + VLOG(@"ALSA: Using signed 16-bit format.\n"); + return false; +} + +static void alsa_thread_free(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + + if (alsa) + { + if (alsa->worker_thread) + { + slock_lock(alsa->cond_lock); + alsa->thread_dead = true; + slock_unlock(alsa->cond_lock); + sthread_join(alsa->worker_thread); + } + if (alsa->buffer) + fifo_free(alsa->buffer); + if (alsa->cond) + scond_free(alsa->cond); + if (alsa->fifo_lock) + slock_free(alsa->fifo_lock); + if (alsa->cond_lock) + slock_free(alsa->cond_lock); + if (alsa->pcm) + { + snd_pcm_drop(alsa->pcm); + snd_pcm_close(alsa->pcm); + } + free(alsa); + } +} + +static void *alsa_thread_init(const char *device, + unsigned rate, unsigned latency) +{ + alsa_thread_t *alsa = (alsa_thread_t*)calloc(1, sizeof(alsa_thread_t)); + + snd_pcm_hw_params_t *params = NULL; + snd_pcm_sw_params_t *sw_params = NULL; + + const char *alsa_dev = device ? device : "default"; + + unsigned latency_usec = latency * 1000 / 2; + + unsigned channels = 2; + unsigned periods = 4; + snd_pcm_uframes_t buffer_size; + snd_pcm_format_t format; + + if (!alsa) + return NULL; + + TRY_ALSA(snd_pcm_open(&alsa->pcm, alsa_dev, SND_PCM_STREAM_PLAYBACK, 0)); + + TRY_ALSA(snd_pcm_hw_params_malloc(¶ms)); + alsa->has_float = alsathread_find_float_format(alsa->pcm, params); + format = alsa->has_float ? SND_PCM_FORMAT_FLOAT : SND_PCM_FORMAT_S16; + + TRY_ALSA(snd_pcm_hw_params_any(alsa->pcm, params)); + TRY_ALSA(snd_pcm_hw_params_set_access( + alsa->pcm, params, SND_PCM_ACCESS_RW_INTERLEAVED)); + TRY_ALSA(snd_pcm_hw_params_set_format(alsa->pcm, params, format)); + TRY_ALSA(snd_pcm_hw_params_set_channels(alsa->pcm, params, channels)); + TRY_ALSA(snd_pcm_hw_params_set_rate(alsa->pcm, params, rate, 0)); + + TRY_ALSA(snd_pcm_hw_params_set_buffer_time_near( + alsa->pcm, params, &latency_usec, NULL)); + TRY_ALSA(snd_pcm_hw_params_set_periods_near( + alsa->pcm, params, &periods, NULL)); + + TRY_ALSA(snd_pcm_hw_params(alsa->pcm, params)); + + /* Shouldn't have to bother with this, + * but some drivers are apparently broken. */ + if (snd_pcm_hw_params_get_period_size(params, &alsa->period_frames, NULL)) + snd_pcm_hw_params_get_period_size_min( + params, &alsa->period_frames, NULL); + VLOG(@"ALSA: Period size: %d frames\n", (int)alsa->period_frames); + if (snd_pcm_hw_params_get_buffer_size(params, &buffer_size)) + snd_pcm_hw_params_get_buffer_size_max(params, &buffer_size); + VLOG(@"ALSA: Buffer size: %d frames\n", (int)buffer_size); + + alsa->buffer_size = snd_pcm_frames_to_bytes(alsa->pcm, buffer_size); + alsa->period_size = snd_pcm_frames_to_bytes(alsa->pcm, alsa->period_frames); + + TRY_ALSA(snd_pcm_sw_params_malloc(&sw_params)); + TRY_ALSA(snd_pcm_sw_params_current(alsa->pcm, sw_params)); + TRY_ALSA(snd_pcm_sw_params_set_start_threshold( + alsa->pcm, sw_params, buffer_size / 2)); + TRY_ALSA(snd_pcm_sw_params(alsa->pcm, sw_params)); + + snd_pcm_hw_params_free(params); + snd_pcm_sw_params_free(sw_params); + + alsa->fifo_lock = slock_new(); + alsa->cond_lock = slock_new(); + alsa->cond = scond_new(); + alsa->buffer = fifo_new(alsa->buffer_size); + if (!alsa->fifo_lock || !alsa->cond_lock || !alsa->cond || !alsa->buffer) + goto error; + + alsa->worker_thread = sthread_create(alsa_worker_thread, alsa); + if (!alsa->worker_thread) + { + ELOG(@"error initializing worker thread"); + goto error; + } + + return alsa; + +error: + ELOG(@"ALSA: Failed to initialize...\n"); + if (params) + snd_pcm_hw_params_free(params); + + if (sw_params) + snd_pcm_sw_params_free(sw_params); + + alsa_thread_free(alsa); + + return NULL; +} + +static ssize_t alsa_thread_write(void *data, const void *buf, size_t size) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + + if (alsa->thread_dead) + return -1; + + if (alsa->nonblock) + { + size_t avail; + size_t write_amt; + + slock_lock(alsa->fifo_lock); + avail = fifo_write_avail(alsa->buffer); + write_amt = MIN(avail, size); + + fifo_write(alsa->buffer, buf, write_amt); + slock_unlock(alsa->fifo_lock); + + return write_amt; + } + else + { + size_t written = 0; + while (written < size && !alsa->thread_dead) + { + size_t avail; + slock_lock(alsa->fifo_lock); + avail = fifo_write_avail(alsa->buffer); + + if (avail == 0) + { + slock_unlock(alsa->fifo_lock); + slock_lock(alsa->cond_lock); + if (!alsa->thread_dead) + scond_wait(alsa->cond, alsa->cond_lock); + slock_unlock(alsa->cond_lock); + } + else + { + size_t write_amt = MIN(size - written, avail); + fifo_write(alsa->buffer, (const char*)buf + written, write_amt); + slock_unlock(alsa->fifo_lock); + written += write_amt; + } + } + return written; + } +} + +static bool alsa_thread_alive(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + if (!alsa) + return false; + return !alsa->is_paused; +} + +static bool alsa_thread_stop(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + + if (alsa) + alsa->is_paused = true; + return true; +} + +static void alsa_thread_set_nonblock_state(void *data, bool state) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + alsa->nonblock = state; +} + +static bool alsa_thread_start(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + + if (alsa) + alsa->is_paused = false; + return true; +} + +static size_t alsa_thread_write_avail(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + size_t val; + + if (alsa->thread_dead) + return 0; + slock_lock(alsa->fifo_lock); + val = fifo_write_avail(alsa->buffer); + slock_unlock(alsa->fifo_lock); + return val; +} + +static size_t alsa_thread_buffer_size(void *data) +{ + alsa_thread_t *alsa = (alsa_thread_t*)data; + return alsa->buffer_size; +} + +static void *alsa_device_list_new(void *data) +{ + void **hints, **n; + union string_list_elem_attr attr; + struct string_list *s = string_list_new(); + + if (!s) + return NULL; + + attr.i = 0; + + if (snd_device_name_hint(-1, "pcm", &hints) != 0) + goto error; + + n = hints; + + while (*n != NULL) + { + char *name = snd_device_name_get_hint(*n, "NAME"); + char *io = snd_device_name_get_hint(*n, "IOID"); + char *desc = snd_device_name_get_hint(*n, "DESC"); + + /* description of device IOID - input / output identifcation + * ("Input" or "Output"), NULL means both) */ + + if (!io || !strcmp(io,"Output")) + string_list_append(s, name, attr); + + if (name) + free(name); + if (io) + free(io); + if (desc) + free(desc); + + n++; + } + + /* free hint buffer too */ + snd_device_name_free_hint(hints); + + return s; + +error: + string_list_free(s); + return NULL; +} + +static void alsa_device_list_free(void *data, void *array_list_data) +{ + struct string_list *s = (struct string_list*)array_list_data; + + if (!s) + return; + + string_list_free(s); +} + +audio_driver_t audio_alsathread = { + alsa_thread_init, + alsa_thread_write, + alsa_thread_stop, + alsa_thread_start, + alsa_thread_alive, + alsa_thread_set_nonblock_state, + alsa_thread_free, + alsa_thread_use_float, + "alsathread", + alsa_device_list_new, + alsa_device_list_free, + alsa_thread_write_avail, + alsa_thread_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/coreaudio.c b/PVSupport/Sources/retro/audio/drivers/coreaudio.c new file mode 100644 index 0000000000..b6c689e291 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/coreaudio.c @@ -0,0 +1,468 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2014 - Chris Moeller + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ +#include + + +#if TARGET_OS_IPHONE +#include +#else +#include +#endif + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +#if defined(__powerpc__) || defined(__ppc__) || defined(__POWERPC__) + +#ifndef OSX_PPC +#define OSX_PPC +#endif + +#endif + +typedef struct coreaudio +{ + slock_t *lock; + scond_t *cond; + +#ifdef OSX_PPC + ComponentInstance dev; +#else + AudioComponentInstance dev; +#endif + bool dev_alive; + bool is_paused; + + fifo_buffer_t *buffer; + bool nonblock; + size_t buffer_size; +} coreaudio_t; + +static bool g_interrupted; + +static void coreaudio_free(void *data) +{ + coreaudio_t *dev = (coreaudio_t*)data; + + if (!dev) + return; + + if (dev->dev_alive) + { + AudioOutputUnitStop(dev->dev); +#ifdef OSX_PPC + CloseComponent(dev->dev); +#else + AudioComponentInstanceDispose(dev->dev); +#endif + } + + if (dev->buffer) + fifo_free(dev->buffer); + + slock_free(dev->lock); + scond_free(dev->cond); + + free(dev); +} + +static OSStatus audio_write_cb(void *userdata, + AudioUnitRenderActionFlags *action_flags, + const AudioTimeStamp *time_stamp, UInt32 bus_number, + UInt32 number_frames, AudioBufferList *io_data) +{ + void *outbuf; + unsigned write_avail; + coreaudio_t *dev = (coreaudio_t*)userdata; + + (void)time_stamp; + (void)bus_number; + (void)number_frames; + + if (!io_data) + return noErr; + if (io_data->mNumberBuffers != 1) + return noErr; + + write_avail = io_data->mBuffers[0].mDataByteSize; + outbuf = io_data->mBuffers[0].mData; + + slock_lock(dev->lock); + + if (fifo_read_avail(dev->buffer) < write_avail) + { + *action_flags = kAudioUnitRenderAction_OutputIsSilence; + + /* Seems to be needed. */ + memset(outbuf, 0, write_avail); + + slock_unlock(dev->lock); + + /* Technically possible to deadlock without. */ + scond_signal(dev->cond); + return noErr; + } + + fifo_read(dev->buffer, outbuf, write_avail); + slock_unlock(dev->lock); + scond_signal(dev->cond); + return noErr; +} + +#if TARGET_OS_IPHONE +static void coreaudio_interrupt_listener(void *data, UInt32 interrupt_state) +{ + (void)data; + g_interrupted = (interrupt_state == kAudioSessionBeginInterruption); +} +#else +static void choose_output_device(coreaudio_t *dev, const char* device) +{ + unsigned i; + AudioDeviceID *devices; + AudioObjectPropertyAddress propaddr = + { + kAudioHardwarePropertyDevices, + kAudioObjectPropertyScopeGlobal, + kAudioObjectPropertyElementMaster + }; + + UInt32 size = 0, deviceCount; + + if (AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, + &propaddr, 0, 0, &size) != noErr) + return; + + deviceCount = size / sizeof(AudioDeviceID); + devices = (AudioDeviceID*)malloc(size); + + if (!devices || AudioObjectGetPropertyData(kAudioObjectSystemObject, + &propaddr, 0, 0, &size, devices) != noErr) + goto done; + + propaddr.mScope = kAudioDevicePropertyScopeOutput; + propaddr.mSelector = kAudioDevicePropertyDeviceName; + size = 1024; + + for (i = 0; i < deviceCount; i ++) + { + char device_name[1024]; + device_name[0] = 0; + + if (AudioObjectGetPropertyData(devices[i], + &propaddr, 0, 0, &size, device_name) == noErr + && string_is_equal(device_name, device)) + { + AudioUnitSetProperty(dev->dev, kAudioOutputUnitProperty_CurrentDevice, + kAudioUnitScope_Global, 0, &devices[i], sizeof(AudioDeviceID)); + goto done; + } + } + +done: + free(devices); +} +#endif + +static void *coreaudio_init(const char *device, + unsigned rate, unsigned latency) +{ + size_t fifo_size; + UInt32 i_size; + AudioStreamBasicDescription real_desc; +#ifdef OSX_PPC + Component comp; +#else + AudioComponent comp; +#endif +#ifndef TARGET_OS_IPHONE + AudioChannelLayout layout = {0}; +#endif + AURenderCallbackStruct cb = {0}; + AudioStreamBasicDescription stream_desc = {0}; + bool component_unavailable = false; + static bool session_initialized = false; + coreaudio_t *dev = NULL; +#ifdef OSX_PPC + ComponentDescription desc = {0}; +#else + AudioComponentDescription desc = {0}; +#endif + settings_t *settings = config_get_ptr(); + + (void)session_initialized; + (void)device; + + dev = (coreaudio_t*)calloc(1, sizeof(*dev)); + if (!dev) + return NULL; + + dev->lock = slock_new(); + dev->cond = scond_new(); + +#if TARGET_OS_IPHONE + if (!session_initialized) + { + session_initialized = true; + AudioSessionInitialize(0, 0, coreaudio_interrupt_listener, 0); + AudioSessionSetActive(true); + } +#endif + + /* Create AudioComponent */ + desc.componentType = kAudioUnitType_Output; +#if TARGET_OS_IPHONE + desc.componentSubType = kAudioUnitSubType_RemoteIO; +#else + desc.componentSubType = kAudioUnitSubType_HALOutput; +#endif + desc.componentManufacturer = kAudioUnitManufacturer_Apple; + +#ifdef OSX_PPC + comp = FindNextComponent(NULL, &desc); +#else + comp = AudioComponentFindNext(NULL, &desc); +#endif + if (comp == NULL) + goto error; + +#ifdef OSX_PPC + component_unavailable = (OpenAComponent(comp, &dev->dev) != noErr); +#else + component_unavailable = (AudioComponentInstanceNew(comp, &dev->dev) != noErr); +#endif + + if (component_unavailable) + goto error; + +#if !TARGET_OS_IPHONE + if (device) + choose_output_device(dev, device); +#endif + + dev->dev_alive = true; + + /* Set audio format */ + stream_desc.mSampleRate = rate; + stream_desc.mBitsPerChannel = sizeof(float) * CHAR_BIT; + stream_desc.mChannelsPerFrame = 2; + stream_desc.mBytesPerPacket = 2 * sizeof(float); + stream_desc.mBytesPerFrame = 2 * sizeof(float); + stream_desc.mFramesPerPacket = 1; + stream_desc.mFormatID = kAudioFormatLinearPCM; + stream_desc.mFormatFlags = kAudioFormatFlagIsFloat | + kAudioFormatFlagIsPacked | (is_little_endian() ? + 0 : kAudioFormatFlagIsBigEndian); + + if (AudioUnitSetProperty(dev->dev, kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Input, 0, &stream_desc, sizeof(stream_desc)) != noErr) + goto error; + + /* Check returned audio format. */ + i_size = sizeof(real_desc); + if (AudioUnitGetProperty(dev->dev, kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Input, 0, &real_desc, &i_size) != noErr) + goto error; + + if (real_desc.mChannelsPerFrame != stream_desc.mChannelsPerFrame) + goto error; + if (real_desc.mBitsPerChannel != stream_desc.mBitsPerChannel) + goto error; + if (real_desc.mFormatFlags != stream_desc.mFormatFlags) + goto error; + if (real_desc.mFormatID != stream_desc.mFormatID) + goto error; + + VLOG(@"[CoreAudio]: Using output sample rate of %.1f Hz\n", + (float)real_desc.mSampleRate); + settings->audio.out_rate = real_desc.mSampleRate; + + /* Set channel layout (fails on iOS). */ +#ifndef TARGET_OS_IPHONE + layout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo; + if (AudioUnitSetProperty(dev->dev, kAudioUnitProperty_AudioChannelLayout, + kAudioUnitScope_Input, 0, &layout, sizeof(layout)) != noErr) + goto error; +#endif + + /* Set callbacks and finish up. */ + cb.inputProc = audio_write_cb; + cb.inputProcRefCon = dev; + + if (AudioUnitSetProperty(dev->dev, kAudioUnitProperty_SetRenderCallback, + kAudioUnitScope_Input, 0, &cb, sizeof(cb)) != noErr) + goto error; + + if (AudioUnitInitialize(dev->dev) != noErr) + goto error; + + fifo_size = (latency * settings->audio.out_rate) / 1000; + fifo_size *= 2 * sizeof(float); + dev->buffer_size = fifo_size; + + dev->buffer = fifo_new(fifo_size); + if (!dev->buffer) + goto error; + + VLOG(@"[CoreAudio]: Using buffer size of %u bytes: (latency = %u ms)\n", + (unsigned)fifo_size, latency); + + if (AudioOutputUnitStart(dev->dev) != noErr) + goto error; + + return dev; + +error: + ELOG(@"[CoreAudio]: Failed to initialize driver ...\n"); + coreaudio_free(dev); + return NULL; +} + +static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) +{ + coreaudio_t *dev = (coreaudio_t*)data; + const uint8_t *buf = (const uint8_t*)buf_; + size_t written = 0; + + while (!g_interrupted && size > 0) + { + size_t write_avail; + + slock_lock(dev->lock); + + write_avail = fifo_write_avail(dev->buffer); + if (write_avail > size) + write_avail = size; + + fifo_write(dev->buffer, buf, write_avail); + buf += write_avail; + written += write_avail; + size -= write_avail; + + if (dev->nonblock) + { + slock_unlock(dev->lock); + break; + } + +#if TARGET_OS_IPHONE + if (write_avail == 0 && !scond_wait_timeout( + dev->cond, dev->lock, 3000000)) + g_interrupted = true; +#else + if (write_avail == 0) + scond_wait(dev->cond, dev->lock); +#endif + slock_unlock(dev->lock); + } + + return written; +} + +static void coreaudio_set_nonblock_state(void *data, bool state) +{ + coreaudio_t *dev = (coreaudio_t*)data; + if (dev) + dev->nonblock = state; +} + +static bool coreaudio_alive(void *data) +{ + coreaudio_t *dev = (coreaudio_t*)data; + if (!dev) + return false; + return !dev->is_paused; +} + +static bool coreaudio_stop(void *data) +{ + coreaudio_t *dev = (coreaudio_t*)data; + if (!dev) + return false; + dev->is_paused = (AudioOutputUnitStop(dev->dev) == noErr) ? true : false; + return dev->is_paused ? true : false; +} + +static bool coreaudio_start(void *data) +{ + coreaudio_t *dev = (coreaudio_t*)data; + if (!dev) + return false; + dev->is_paused = (AudioOutputUnitStart(dev->dev) == noErr) ? false : true; + return dev->is_paused ? false : true; +} + +static bool coreaudio_use_float(void *data) +{ + (void)data; + return true; +} + +static size_t coreaudio_write_avail(void *data) +{ + size_t avail; + coreaudio_t *dev = (coreaudio_t*)data; + + slock_lock(dev->lock); + avail = fifo_write_avail(dev->buffer); + slock_unlock(dev->lock); + + return avail; +} + +static size_t coreaudio_buffer_size(void *data) +{ + coreaudio_t *dev = (coreaudio_t*)data; + return dev->buffer_size; +} + +static void *coreaudio_device_list_new(void *data) +{ + /* TODO/FIXME */ + return NULL; +} + +static void coreaudio_device_list_free(void *data, void *array_list_data) +{ + /* TODO/FIXME */ +} + +audio_driver_t audio_coreaudio = { + coreaudio_init, + coreaudio_write, + coreaudio_stop, + coreaudio_start, + coreaudio_alive, + coreaudio_set_nonblock_state, + coreaudio_free, + coreaudio_use_float, + "coreaudio", + coreaudio_device_list_new, + coreaudio_device_list_free, + coreaudio_write_avail, + coreaudio_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/ctr_csnd_audio.c b/PVSupport/Sources/retro/audio/drivers/ctr_csnd_audio.c new file mode 100644 index 0000000000..d71a85f7b4 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/ctr_csnd_audio.c @@ -0,0 +1,307 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2014-2016 - Ali Bouhlel + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include <3ds.h> +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../performance_counters.h" +#include "../../runloop.h" + +typedef struct +{ + bool nonblocking; + bool playing; + int16_t* l; + int16_t* r; + + uint32_t l_paddr; + uint32_t r_paddr; + + uint32_t pos; + + uint32_t playpos; + uint64_t cpu_ticks_last; +} ctr_csnd_audio_t; + +#define CTR_CSND_AUDIO_COUNT (1u << 11u) +#define CTR_CSND_AUDIO_COUNT_MASK (CTR_CSND_AUDIO_COUNT - 1u) +#define CTR_CSND_AUDIO_SIZE (CTR_CSND_AUDIO_COUNT * sizeof(int16_t)) +#define CTR_CSND_AUDIO_SIZE_MASK (CTR_CSND_AUDIO_SIZE - 1u) + +#define CTR_CSND_AUDIO_RATE 32730 +#define CTR_CSND_TICKS_PER_SAMPLE 2048 +#define CTR_CSND_CPU_TICKS_PER_SAMPLE (CTR_CSND_TICKS_PER_SAMPLE * 4) + +static void ctr_csnd_audio_update_playpos(ctr_csnd_audio_t* ctr) +{ + uint32_t samples_played; + uint64_t current_tick; + + current_tick = svcGetSystemTick(); + samples_played = (current_tick - ctr->cpu_ticks_last) / CTR_CSND_CPU_TICKS_PER_SAMPLE; + ctr->playpos = (ctr->playpos + samples_played) & CTR_CSND_AUDIO_COUNT_MASK; + ctr->cpu_ticks_last += samples_played * CTR_CSND_CPU_TICKS_PER_SAMPLE; +} + + +Result csndPlaySound_custom(int chn, u32 flags, float vol, float pan, void* data0, void* data1, u32 size) +{ + if (!(csndChannels & BIT(chn))) + return 1; + + u32 paddr0 = 0, paddr1 = 0; + + int encoding = (flags >> 12) & 3; + int loopMode = (flags >> 10) & 3; + + if (!loopMode) flags |= SOUND_ONE_SHOT; + + if (encoding != CSND_ENCODING_PSG) + { + if (data0) paddr0 = osConvertVirtToPhys(data0); + if (data1) paddr1 = osConvertVirtToPhys(data1); + + if (data0 && encoding == CSND_ENCODING_ADPCM) + { + int adpcmSample = ((s16*)data0)[-2]; + int adpcmIndex = ((u8*)data0)[-2]; + CSND_SetAdpcmState(chn, 0, adpcmSample, adpcmIndex); + } + } + + flags &= ~0xFFFF001F; + flags |= SOUND_ENABLE | SOUND_CHANNEL(chn) | (CTR_CSND_TICKS_PER_SAMPLE << 16); + + u32 volumes = CSND_VOL(vol, pan); + CSND_SetChnRegs(flags, paddr0, paddr1, size, volumes, volumes); + + if (loopMode == CSND_LOOPMODE_NORMAL && paddr1 > paddr0) + { + // Now that the first block is playing, configure the size of the subsequent blocks + size -= paddr1 - paddr0; + CSND_SetBlock(chn, 1, paddr1, size); + } + + return 0; +} + +static void *ctr_csnd_audio_init(const char *device, unsigned rate, unsigned latency) +{ + ctr_csnd_audio_t *ctr = (ctr_csnd_audio_t*)calloc(1, sizeof(ctr_csnd_audio_t)); + settings_t *settings = config_get_ptr(); + + if (!ctr) + return NULL; + + (void)device; + (void)rate; + (void)latency; + + settings->audio.out_rate = CTR_CSND_AUDIO_RATE; + + ctr->l = linearAlloc(CTR_CSND_AUDIO_SIZE); + ctr->r = linearAlloc(CTR_CSND_AUDIO_SIZE); + + memset(ctr->l, 0, CTR_CSND_AUDIO_SIZE); + memset(ctr->r, 0, CTR_CSND_AUDIO_SIZE); + + ctr->l_paddr = osConvertVirtToPhys(ctr->l); + ctr->r_paddr = osConvertVirtToPhys(ctr->r); + + ctr->pos = 0; + + GSPGPU_FlushDataCache((void*)ctr->l_paddr, CTR_CSND_AUDIO_SIZE); + GSPGPU_FlushDataCache((void*)ctr->r_paddr, CTR_CSND_AUDIO_SIZE); + csndPlaySound_custom(0x8, SOUND_LOOPMODE(CSND_LOOPMODE_NORMAL)| SOUND_FORMAT(CSND_ENCODING_PCM16), + 1.0, -1.0, ctr->l, ctr->l, CTR_CSND_AUDIO_SIZE); + + csndPlaySound_custom(0x9, SOUND_LOOPMODE(CSND_LOOPMODE_NORMAL)| SOUND_FORMAT(CSND_ENCODING_PCM16), + 1.0, 1.0, ctr->r, ctr->r, CTR_CSND_AUDIO_SIZE); + + csndExecCmds(true); + ctr->playpos = 0; + ctr->cpu_ticks_last = svcGetSystemTick(); + ctr->playing = true; + + return ctr; +} + +static void ctr_csnd_audio_free(void *data) +{ + ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data; + +// csndExit(); + CSND_SetPlayState(0x8, 0); + CSND_SetPlayState(0x9, 0); + csndExecCmds(false); + + linearFree(ctr->l); + linearFree(ctr->r); + + free(ctr); +} + +static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size) +{ + int i; + uint32_t samples_played = 0; + uint64_t current_tick = 0; + static struct retro_perf_counter ctraudio_f = {0}; + const uint16_t *src = buf; + ctr_csnd_audio_t *ctr = (ctr_csnd_audio_t*)data; + + (void)data; + (void)buf; + (void)samples_played; + (void)current_tick; + + performance_counter_init(&ctraudio_f, "ctraudio_f"); + performance_counter_start(&ctraudio_f); + + ctr_csnd_audio_update_playpos(ctr); + + if((((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 2)) || + (((ctr->pos - ctr->playpos ) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4)) || + (((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (size >> 2))) + { + if (ctr->nonblocking) + ctr->pos = (ctr->playpos + (CTR_CSND_AUDIO_COUNT >> 1)) & CTR_CSND_AUDIO_COUNT_MASK; + else + { + do{ + /* todo: compute the correct sleep period */ + retro_sleep(1); + ctr_csnd_audio_update_playpos(ctr); + }while (((ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 1) + || (((ctr->pos - ctr->playpos) & CTR_CSND_AUDIO_COUNT_MASK) < (CTR_CSND_AUDIO_COUNT >> 4))); + } + } + + for (i = 0; i < (size >> 1); i += 2) + { + ctr->l[ctr->pos] = src[i]; + ctr->r[ctr->pos] = src[i + 1]; + ctr->pos++; + ctr->pos &= CTR_CSND_AUDIO_COUNT_MASK; + } + + GSPGPU_FlushDataCache(ctr->l, CTR_CSND_AUDIO_SIZE); + GSPGPU_FlushDataCache(ctr->r, CTR_CSND_AUDIO_SIZE); + + performance_counter_stop(&ctraudio_f); + + return size; +} + +static bool ctr_csnd_audio_stop(void *data) +{ + ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data; + + /* using SetPlayState would make tracking the playback + * position more difficult */ + +#if 0 + CSND_SetPlayState(0x8, 0); + CSND_SetPlayState(0x9, 0); +#endif + + /* setting the channel volume to 0 seems to make it + * impossible to set it back to full volume later */ + + CSND_SetVol(0x8, 0x00000001, 0); + CSND_SetVol(0x9, 0x00010000, 0); + csndExecCmds(false); + + ctr->playing = false; + + return true; +} + +static bool ctr_csnd_audio_alive(void *data) +{ + ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data; + return ctr->playing; +} + +static bool ctr_csnd_audio_start(void *data) +{ + ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data; + + /* Prevents restarting audio when the menu + * is toggled off on shutdown */ + + if (runloop_ctl(RUNLOOP_CTL_IS_SHUTDOWN, NULL)) + return true; + +#if 0 + CSND_SetPlayState(0x8, 1); + CSND_SetPlayState(0x9, 1); +#endif + + CSND_SetVol(0x8, 0x00008000, 0); + CSND_SetVol(0x9, 0x80000000, 0); + + csndExecCmds(false); + + ctr->playing = true; + + return true; +} + +static void ctr_csnd_audio_set_nonblock_state(void *data, bool state) +{ + ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data; + if (ctr) + ctr->nonblocking = state; +} + +static bool ctr_csnd_audio_use_float(void *data) +{ + (void)data; + return false; +} + +static size_t ctr_csnd_audio_write_avail(void *data) +{ + ctr_csnd_audio_t* ctr = (ctr_csnd_audio_t*)data; + + ctr_csnd_audio_update_playpos(ctr); + return (ctr->playpos - ctr->pos) & CTR_CSND_AUDIO_COUNT_MASK; +} + +static size_t ctr_csnd_audio_buffer_size(void *data) +{ + (void)data; + return CTR_CSND_AUDIO_COUNT; +} + + +audio_driver_t audio_ctr_csnd = { + ctr_csnd_audio_init, + ctr_csnd_audio_write, + ctr_csnd_audio_stop, + ctr_csnd_audio_start, + ctr_csnd_audio_alive, + ctr_csnd_audio_set_nonblock_state, + ctr_csnd_audio_free, + ctr_csnd_audio_use_float, + "csnd", + NULL, + NULL, + ctr_csnd_audio_write_avail, + ctr_csnd_audio_buffer_size +}; diff --git a/PVSupport/Sources/retro/audio/drivers/ctr_dsp_audio.c b/PVSupport/Sources/retro/audio/drivers/ctr_dsp_audio.c new file mode 100644 index 0000000000..3b93e23736 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/ctr_dsp_audio.c @@ -0,0 +1,222 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2014-2016 - Ali Bouhlel + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include <3ds.h> +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../performance_counters.h" +#include "../../runloop.h" +#include "../../ctr/ctr_debug.h" + +typedef struct +{ + bool nonblocking; + bool playing; + int channel; + ndspWaveBuf dsp_buf; + + uint32_t pos; +} ctr_dsp_audio_t; + +#define CTR_DSP_AUDIO_COUNT (1u << 11u) +#define CTR_DSP_AUDIO_COUNT_MASK (CTR_DSP_AUDIO_COUNT - 1u) +#define CTR_DSP_AUDIO_SIZE (CTR_DSP_AUDIO_COUNT * sizeof(int16_t) * 2) +#define CTR_DSP_AUDIO_SIZE_MASK (CTR_DSP_AUDIO_SIZE - 1u) + +static void *ctr_dsp_audio_init(const char *device, unsigned rate, unsigned latency) +{ + ctr_dsp_audio_t *ctr; + settings_t *settings = config_get_ptr(); + + (void)device; + (void)rate; + (void)latency; + + if (ndspInit() < 0) + return NULL; + + ctr = (ctr_dsp_audio_t*)calloc(1, sizeof(ctr_dsp_audio_t)); + + if (!ctr) + return NULL; + + settings->audio.out_rate = 32730; + + ctr->channel = 0; + + ndspSetOutputMode(NDSP_OUTPUT_STEREO); + ndspSetClippingMode(NDSP_CLIP_SOFT); //?? + ndspSetOutputCount(1); + ndspChnReset(ctr->channel); + ndspChnSetFormat(ctr->channel, NDSP_FORMAT_STEREO_PCM16); + ndspChnSetInterp(ctr->channel, NDSP_INTERP_NONE); + ndspChnSetRate(ctr->channel, 32728.0f); + ndspChnWaveBufClear(ctr->channel); + + ctr->dsp_buf.data_pcm16 = linearAlloc(CTR_DSP_AUDIO_SIZE); + memset(ctr->dsp_buf.data_pcm16, 0, CTR_DSP_AUDIO_SIZE); + DSP_FlushDataCache(ctr->dsp_buf.data_pcm16, CTR_DSP_AUDIO_SIZE); + + ctr->dsp_buf.looping = true; + ctr->dsp_buf.nsamples = CTR_DSP_AUDIO_COUNT; + + ndspChnWaveBufAdd(ctr->channel, &ctr->dsp_buf); + + ctr->pos = 0; + ctr->playing = true; + + ndspSetMasterVol(1.0); + + return ctr; +} + +static void ctr_dsp_audio_free(void *data) +{ + ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data; + ndspChnWaveBufClear(ctr->channel); + linearFree(ctr->dsp_buf.data_pcm16); + free(ctr); + ndspExit(); +} + +static ssize_t ctr_dsp_audio_write(void *data, const void *buf, size_t size) +{ + static struct retro_perf_counter ctraudio_dsp_f = {0}; + ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data; + u32 pos; + uint32_t sample_pos = ndspChnGetSamplePos(ctr->channel); + + if((((sample_pos - ctr->pos) & CTR_DSP_AUDIO_COUNT_MASK) < (CTR_DSP_AUDIO_COUNT >> 2)) || + (((ctr->pos - sample_pos ) & CTR_DSP_AUDIO_COUNT_MASK) < (CTR_DSP_AUDIO_COUNT >> 4)) || + (((sample_pos - ctr->pos) & CTR_DSP_AUDIO_COUNT_MASK) < (size >> 2))) + { + if (ctr->nonblocking) + ctr->pos = (sample_pos + (CTR_DSP_AUDIO_COUNT >> 1)) & CTR_DSP_AUDIO_COUNT_MASK; + else + { + do{ + svcSleepThread(100000); + sample_pos = ndspChnGetSamplePos(ctr->channel); + }while (((sample_pos - (ctr->pos + (size >>2))) & CTR_DSP_AUDIO_COUNT_MASK) > (CTR_DSP_AUDIO_COUNT >> 1) + || (((ctr->pos - (CTR_DSP_AUDIO_COUNT >> 4) - sample_pos) & CTR_DSP_AUDIO_COUNT_MASK) > (CTR_DSP_AUDIO_COUNT >> 1))); + } + } + + performance_counter_init(&ctraudio_dsp_f, "ctraudio_dsp_f"); + performance_counter_start(&ctraudio_dsp_f); + + pos = ctr->pos << 2; + + if((pos + size) > CTR_DSP_AUDIO_SIZE) + { + memcpy(ctr->dsp_buf.data_pcm8 + pos, buf, + (CTR_DSP_AUDIO_SIZE - pos)); + DSP_FlushDataCache(ctr->dsp_buf.data_pcm8 + pos, (CTR_DSP_AUDIO_SIZE - pos)); + + memcpy(ctr->dsp_buf.data_pcm8, (uint8_t*) buf + (CTR_DSP_AUDIO_SIZE - pos), + (pos + size - CTR_DSP_AUDIO_SIZE)); + DSP_FlushDataCache(ctr->dsp_buf.data_pcm8, (pos + size - CTR_DSP_AUDIO_SIZE)); + } + else + { + memcpy(ctr->dsp_buf.data_pcm8 + pos, buf, size); + DSP_FlushDataCache(ctr->dsp_buf.data_pcm8 + pos, size); + } + + ctr->pos += size >> 2; + ctr->pos &= CTR_DSP_AUDIO_COUNT_MASK; + + performance_counter_stop(&ctraudio_dsp_f); + + return size; +} + +static bool ctr_dsp_audio_stop(void *data) +{ + ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data; + + ndspSetMasterVol(0.0); + ctr->playing = false; + + return true; +} + +static bool ctr_dsp_audio_alive(void *data) +{ + ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data; + return ctr->playing; +} + +static bool ctr_dsp_audio_start(void *data) +{ + ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data; + + /* Prevents restarting audio when the menu + * is toggled off on shutdown */ + + if (runloop_ctl(RUNLOOP_CTL_IS_SHUTDOWN, NULL)) + return true; + + ndspSetMasterVol(1.0); + ctr->playing = true; + + return true; +} + +static void ctr_dsp_audio_set_nonblock_state(void *data, bool state) +{ + ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data; + if (ctr) + ctr->nonblocking = state; +} + +static bool ctr_dsp_audio_use_float(void *data) +{ + (void)data; + return false; +} + +static size_t ctr_dsp_audio_write_avail(void *data) +{ + ctr_dsp_audio_t* ctr = (ctr_dsp_audio_t*)data; + + return (ndspChnGetSamplePos(ctr->channel) - ctr->pos) & CTR_DSP_AUDIO_COUNT_MASK; +} + +static size_t ctr_dsp_audio_buffer_size(void *data) +{ + (void)data; + return CTR_DSP_AUDIO_COUNT; +} + + +audio_driver_t audio_ctr_dsp = { + ctr_dsp_audio_init, + ctr_dsp_audio_write, + ctr_dsp_audio_stop, + ctr_dsp_audio_start, + ctr_dsp_audio_alive, + ctr_dsp_audio_set_nonblock_state, + ctr_dsp_audio_free, + ctr_dsp_audio_use_float, + "dsp", + NULL, + NULL, + ctr_dsp_audio_write_avail, + ctr_dsp_audio_buffer_size +}; + diff --git a/PVSupport/Sources/retro/audio/drivers/dsound.c b/PVSupport/Sources/retro/audio/drivers/dsound.c new file mode 100644 index 0000000000..ed696910b8 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/dsound.c @@ -0,0 +1,496 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include + +#ifndef _XBOX +#include +#include +#include +#endif + +#include + +#include + +#include +#include +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +#ifdef _XBOX +#define DSERR_BUFFERLOST MAKE_DSHRESULT(150) +#define DSERR_INVALIDPARAM E_INVALIDARG +#define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) +#endif + +#if defined(_MSC_VER) && !defined(_XBOX) +#pragma comment(lib, "dsound") +#pragma comment(lib, "dxguid") +#endif + + +typedef struct dsound +{ + LPDIRECTSOUND ds; + LPDIRECTSOUNDBUFFER dsb; + + fifo_buffer_t *buffer; + CRITICAL_SECTION crit; + + HANDLE event; + sthread_t *thread; + + unsigned buffer_size; + + bool nonblock; + bool is_paused; + volatile bool thread_alive; +} dsound_t; + +static INLINE unsigned write_avail(unsigned read_ptr, unsigned write_ptr, unsigned buffer_size) +{ + return (read_ptr + buffer_size - write_ptr) % buffer_size; +} + +static INLINE void get_positions(dsound_t *ds, DWORD *read_ptr, DWORD *write_ptr) +{ + IDirectSoundBuffer_GetCurrentPosition(ds->dsb, read_ptr, write_ptr); +} + +#define CHUNK_SIZE 256 + +struct audio_lock +{ + void *chunk1; + void *chunk2; + DWORD size1; + DWORD size2; +}; + +static INLINE bool grab_region(dsound_t *ds, uint32_t write_ptr, + struct audio_lock *region) +{ + const char *err; + HRESULT res = IDirectSoundBuffer_Lock(ds->dsb, write_ptr, CHUNK_SIZE, + ®ion->chunk1, ®ion->size1, ®ion->chunk2, ®ion->size2, 0); + + if (res == DSERR_BUFFERLOST) + { + res = IDirectSoundBuffer_Restore(ds->dsb); + if (res != DS_OK) + return false; + + res = IDirectSoundBuffer_Lock(ds->dsb, write_ptr, CHUNK_SIZE, + ®ion->chunk1, ®ion->size1, ®ion->chunk2, ®ion->size2, 0); + if (res != DS_OK) + return false; + } + + switch (res) + { + case DSERR_BUFFERLOST: + err = "DSERR_BUFFERLOST"; + break; + case DSERR_INVALIDCALL: + err = "DSERR_INVALIDCALL"; + break; + case DSERR_INVALIDPARAM: + err = "DSERR_INVALIDPARAM"; + break; + case DSERR_PRIOLEVELNEEDED: + err = "DSERR_PRIOLEVELNEEDED"; + break; + + default: + return true; + } + + WLOG(@"[DirectSound error]: %s\n", err); + return false; +} + +static INLINE void release_region(dsound_t *ds, const struct audio_lock *region) +{ + IDirectSoundBuffer_Unlock(ds->dsb, region->chunk1, region->size1, region->chunk2, region->size2); +} + +static void dsound_thread(void *data) +{ + DWORD write_ptr; + dsound_t *ds = (dsound_t*)data; + + SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL); + + get_positions(ds, NULL, &write_ptr); + write_ptr = (write_ptr + ds->buffer_size / 2) % ds->buffer_size; + + while (ds->thread_alive) + { + struct audio_lock region; + DWORD read_ptr, avail, fifo_avail; + get_positions(ds, &read_ptr, NULL); + + avail = write_avail(read_ptr, write_ptr, ds->buffer_size); + + EnterCriticalSection(&ds->crit); + fifo_avail = fifo_read_avail(ds->buffer); + LeaveCriticalSection(&ds->crit); + + if (avail < CHUNK_SIZE || ((fifo_avail < CHUNK_SIZE) && (avail < ds->buffer_size / 2))) + { + /* No space to write, or we don't have data in our fifo, + * but we can wait some time before it underruns ... */ + + + /* We could opt for using the notification interface, + * but it is not guaranteed to work, so use high + * priority sleeping patterns. + */ + retro_sleep(1); + continue; + } + + if (!grab_region(ds, write_ptr, ®ion)) + { + ds->thread_alive = false; + SetEvent(ds->event); + break; + } + + if (fifo_avail < CHUNK_SIZE) + { + /* Got space to write, but nothing in FIFO (underrun), + * fill block with silence. */ + + memset(region.chunk1, 0, region.size1); + memset(region.chunk2, 0, region.size2); + + release_region(ds, ®ion); + write_ptr = (write_ptr + region.size1 + region.size2) % ds->buffer_size; + } + else + { + /* All is good. Pull from it and notify FIFO. */ + + EnterCriticalSection(&ds->crit); + if (region.chunk1) + fifo_read(ds->buffer, region.chunk1, region.size1); + if (region.chunk2) + fifo_read(ds->buffer, region.chunk2, region.size2); + LeaveCriticalSection(&ds->crit); + + release_region(ds, ®ion); + write_ptr = (write_ptr + region.size1 + region.size2) % ds->buffer_size; + + SetEvent(ds->event); + } + } + + ExitThread(0); +} + +static void dsound_stop_thread(dsound_t *ds) +{ + if (!ds->thread) + return; + + ds->thread_alive = false; + + sthread_join(ds->thread); + ds->thread = NULL; +} + +static bool dsound_start_thread(dsound_t *ds) +{ + if (!ds->thread) + { + ds->thread_alive = true; + ds->thread = sthread_create(dsound_thread, ds); + if (!ds->thread) + return false; + } + + return true; +} + +static void dsound_clear_buffer(dsound_t *ds) +{ + void *ptr; + DWORD size; + IDirectSoundBuffer_SetCurrentPosition(ds->dsb, 0); + + if (IDirectSoundBuffer_Lock(ds->dsb, 0, 0, &ptr, &size, + NULL, NULL, DSBLOCK_ENTIREBUFFER) == DS_OK) + { + memset(ptr, 0, size); + IDirectSoundBuffer_Unlock(ds->dsb, ptr, size, NULL, 0); + } +} + +static void dsound_free(void *data) +{ + dsound_t *ds = (dsound_t*)data; + + if (!ds) + return; + + if (ds->thread) + { + ds->thread_alive = false; + sthread_join(ds->thread); + } + + DeleteCriticalSection(&ds->crit); + + if (ds->dsb) + { + IDirectSoundBuffer_Stop(ds->dsb); + IDirectSoundBuffer_Release(ds->dsb); + } + + if (ds->ds) + IDirectSound_Release(ds->ds); + + if (ds->event) + CloseHandle(ds->event); + + if (ds->buffer) + fifo_free(ds->buffer); + + free(ds); +} + +struct dsound_dev +{ + unsigned device; + unsigned total_count; + LPGUID guid; +}; + +static BOOL CALLBACK enumerate_cb(LPGUID guid, LPCSTR desc, LPCSTR module, LPVOID context) +{ + struct dsound_dev *dev = (struct dsound_dev*)context; + + VLOG(@"\t%u: %s\n", dev->total_count, desc); + + if (dev->device == dev->total_count) + dev->guid = guid; + dev->total_count++; + return TRUE; +} + +static void *dsound_init(const char *device, unsigned rate, unsigned latency) +{ + WAVEFORMATEX wfx = {0}; + DSBUFFERDESC bufdesc = {0}; + struct dsound_dev dev = {0}; + dsound_t *ds = (dsound_t*)calloc(1, sizeof(*ds)); + + if (!ds) + goto error; + + InitializeCriticalSection(&ds->crit); + + if (device) + dev.device = strtoul(device, NULL, 0); + + VLOG(@"DirectSound devices:\n"); +#ifndef _XBOX + DirectSoundEnumerate(enumerate_cb, &dev); +#endif + + if (DirectSoundCreate(dev.guid, &ds->ds, NULL) != DS_OK) + goto error; + +#ifndef _XBOX + if (IDirectSound_SetCooperativeLevel(ds->ds, GetDesktopWindow(), DSSCL_PRIORITY) != DS_OK) + goto error; +#endif + + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.nChannels = 2; + wfx.nSamplesPerSec = rate; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = 2 * sizeof(int16_t); + wfx.nAvgBytesPerSec = rate * 2 * sizeof(int16_t); + + ds->buffer_size = (latency * wfx.nAvgBytesPerSec) / 1000; + ds->buffer_size /= CHUNK_SIZE; + ds->buffer_size *= CHUNK_SIZE; + if (ds->buffer_size < 4 * CHUNK_SIZE) + ds->buffer_size = 4 * CHUNK_SIZE; + + VLOG(@"[DirectSound]: Setting buffer size of %u bytes\n", ds->buffer_size); + VLOG(@"[DirectSound]: Latency = %u ms\n", (unsigned)((1000 * ds->buffer_size) / wfx.nAvgBytesPerSec)); + + bufdesc.dwSize = sizeof(DSBUFFERDESC); + bufdesc.dwFlags = 0; +#ifndef _XBOX + bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_GLOBALFOCUS; +#endif + bufdesc.dwBufferBytes = ds->buffer_size; + bufdesc.lpwfxFormat = &wfx; + + ds->event = CreateEvent(NULL, false, false, NULL); + if (!ds->event) + goto error; + + ds->buffer = fifo_new(4 * 1024); + if (!ds->buffer) + goto error; + + if (IDirectSound_CreateSoundBuffer(ds->ds, &bufdesc, &ds->dsb, 0) != DS_OK) + goto error; + + IDirectSoundBuffer_SetVolume(ds->dsb, DSBVOLUME_MAX); + IDirectSoundBuffer_SetCurrentPosition(ds->dsb, 0); + + dsound_clear_buffer(ds); + + if (IDirectSoundBuffer_Play(ds->dsb, 0, 0, DSBPLAY_LOOPING) != DS_OK) + goto error; + + if (!dsound_start_thread(ds)) + goto error; + + return ds; + +error: + ELOG(@"[DirectSound] Error occurred in init.\n"); + dsound_free(ds); + return NULL; +} + +static bool dsound_stop(void *data) +{ + dsound_t *ds = (dsound_t*)data; + + dsound_stop_thread(ds); + ds->is_paused = (IDirectSoundBuffer_Stop(ds->dsb) == DS_OK) ? true : false; + + return (ds->is_paused) ? true : false; +} + +static bool dsound_start(void *data) +{ + dsound_t *ds = (dsound_t*)data; + + dsound_clear_buffer(ds); + + if (!dsound_start_thread(ds)) + return false; + + ds->is_paused = (IDirectSoundBuffer_Play( + ds->dsb, 0, 0, DSBPLAY_LOOPING) == DS_OK) ? false : true; + return (ds->is_paused) ? false : true; +} + +static bool dsound_alive(void *data) +{ + dsound_t *ds = (dsound_t*)data; + + if (!ds) + return false; + return !ds->is_paused; +} + +static void dsound_set_nonblock_state(void *data, bool state) +{ + dsound_t *ds = (dsound_t*)data; + if (ds) + ds->nonblock = state; +} + +static ssize_t dsound_write(void *data, const void *buf_, size_t size) +{ + size_t written = 0; + dsound_t *ds = (dsound_t*)data; + const uint8_t *buf = (const uint8_t*)buf_; + + if (!ds->thread_alive) + return -1; + + while (size > 0) + { + size_t avail; + + EnterCriticalSection(&ds->crit); + avail = fifo_write_avail(ds->buffer); + if (avail > size) + avail = size; + + fifo_write(ds->buffer, buf, avail); + LeaveCriticalSection(&ds->crit); + + buf += avail; + size -= avail; + written += avail; + + if (ds->nonblock || !ds->thread_alive) + break; + + if (avail == 0) + WaitForSingleObject(ds->event, INFINITE); + } + + return written; +} + +static size_t dsound_write_avail(void *data) +{ + size_t avail; + dsound_t *ds = (dsound_t*)data; + + EnterCriticalSection(&ds->crit); + avail = fifo_write_avail(ds->buffer); + LeaveCriticalSection(&ds->crit); + return avail; +} + +static size_t dsound_buffer_size(void *data) +{ + return 4 * 1024; +} + +static bool dsound_use_float(void *data) +{ + (void)data; + return false; +} + +audio_driver_t audio_dsound = { + dsound_init, + dsound_write, + dsound_stop, + dsound_start, + dsound_alive, + dsound_set_nonblock_state, + dsound_free, + dsound_use_float, + "dsound", + NULL, + NULL, + dsound_write_avail, + dsound_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/gx_audio.c b/PVSupport/Sources/retro/audio/drivers/gx_audio.c new file mode 100644 index 0000000000..ac53fb3929 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/gx_audio.c @@ -0,0 +1,248 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#ifdef GEKKO +#include +#include +#else +#include +#endif + +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../defines/gx_defines.h" + +typedef struct +{ + uint32_t data[BLOCKS][CHUNK_FRAMES]; + + volatile unsigned dma_busy; + volatile unsigned dma_next; + volatile unsigned dma_write; + size_t write_ptr; + + OSCond cond; + bool nonblock; + bool is_paused; +} gx_audio_t; + +static volatile gx_audio_t *gx_audio_data; +static volatile bool stop_audio; + +static void dma_callback(void) +{ + gx_audio_t *wa = (gx_audio_t*)gx_audio_data; + + if (stop_audio) + return; + + /* Erase last chunk to avoid repeating audio. */ + memset(wa->data[wa->dma_busy], 0, CHUNK_SIZE); + + wa->dma_busy = wa->dma_next; + wa->dma_next = (wa->dma_next + 1) & (BLOCKS - 1); + + DCFlushRange(wa->data[wa->dma_next], CHUNK_SIZE); + + AIInitDMA((uint32_t)wa->data[wa->dma_next], CHUNK_SIZE); + + OSSignalCond(wa->cond); +} + +static void *gx_audio_init(const char *device, + unsigned rate, unsigned latency) +{ + settings_t *settings = config_get_ptr(); + gx_audio_t *wa = (gx_audio_t*)memalign(32, sizeof(*wa)); + if (!wa) + return NULL; + + gx_audio_data = (gx_audio_t*)wa; + + memset(wa, 0, sizeof(*wa)); + + AIInit(NULL); + AIRegisterDMACallback(dma_callback); + + if (rate < 33000) + { + AISetDSPSampleRate(AI_SAMPLERATE_32KHZ); + settings->audio.out_rate = 32000; + } + else + { + AISetDSPSampleRate(AI_SAMPLERATE_48KHZ); + settings->audio.out_rate = 48000; + } + + OSInitThreadQueue(&wa->cond); + + wa->dma_write = BLOCKS - 1; + DCFlushRange(wa->data, sizeof(wa->data)); + stop_audio = false; + AIInitDMA((uint32_t)wa->data[wa->dma_next], CHUNK_SIZE); + AIStartDMA(); + + return wa; +} + +/* Wii uses silly R, L, R, L interleaving. */ +static INLINE void copy_swapped(uint32_t * restrict dst, + const uint32_t * restrict src, size_t size) +{ + do + { + uint32_t s = *src++; + *dst++ = (s >> 16) | (s << 16); + }while(--size); +} + +static ssize_t gx_audio_write(void *data, const void *buf_, size_t size) +{ + size_t frames = size >> 2; + const uint32_t *buf = buf_; + gx_audio_t *wa = data; + + while (frames) + { + size_t to_write = CHUNK_FRAMES - wa->write_ptr; + + if (frames < to_write) + to_write = frames; + + /* FIXME: Nonblocking audio should break out of loop + * when it has nothing to write. */ + while ((wa->dma_write == wa->dma_next || + wa->dma_write == wa->dma_busy) && !wa->nonblock) + OSSleepThread(wa->cond); + + copy_swapped(wa->data[wa->dma_write] + wa->write_ptr, buf, to_write); + + wa->write_ptr += to_write; + frames -= to_write; + buf += to_write; + + if (wa->write_ptr >= CHUNK_FRAMES) + { + wa->write_ptr -= CHUNK_FRAMES; + wa->dma_write = (wa->dma_write + 1) & (BLOCKS - 1); + } + } + + return size; +} + +static bool gx_audio_stop(void *data) +{ + gx_audio_t *wa = (gx_audio_t*)data; + + if (!wa) + return false; + + AIStopDMA(); + memset(wa->data, 0, sizeof(wa->data)); + DCFlushRange(wa->data, sizeof(wa->data)); + wa->is_paused = true; + return true; +} + +static void gx_audio_set_nonblock_state(void *data, bool state) +{ + gx_audio_t *wa = (gx_audio_t*)data; + + if (wa) + wa->nonblock = state; +} + +static bool gx_audio_start(void *data) +{ + gx_audio_t *wa = (gx_audio_t*)data; + + if (!wa) + return false; + + AIStartDMA(); + wa->is_paused = false; + return true; +} + +static bool gx_audio_alive(void *data) +{ + gx_audio_t *wa = (gx_audio_t*)data; + if (!wa) + return false; + return !wa->is_paused; +} + +static void gx_audio_free(void *data) +{ + gx_audio_t *wa = (gx_audio_t*)data; + + if (!wa) + return; + + stop_audio = true; + AIStopDMA(); + AIRegisterDMACallback(NULL); + + if (wa->cond) + OSCloseThreadQueue(wa->cond); + wa->cond = 0; + + free(data); +} + +static size_t gx_audio_write_avail(void *data) +{ + gx_audio_t *wa = (gx_audio_t*)data; + return ((wa->dma_busy - wa->dma_write + BLOCKS) + & (BLOCKS - 1)) * CHUNK_SIZE; +} + +static size_t gx_audio_buffer_size(void *data) +{ + (void)data; + return BLOCKS * CHUNK_SIZE; +} + +static bool gx_audio_use_float(void *data) +{ + /* TODO/FIXME - verify */ + (void)data; + return false; +} + +audio_driver_t audio_gx = { + gx_audio_init, + gx_audio_write, + gx_audio_stop, + gx_audio_start, + gx_audio_alive, + gx_audio_set_nonblock_state, + gx_audio_free, + gx_audio_use_float, + "gx", + NULL, + NULL, + gx_audio_write_avail, + gx_audio_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/jack.c b/PVSupport/Sources/retro/audio/drivers/jack.c new file mode 100644 index 0000000000..0d9cc62875 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/jack.c @@ -0,0 +1,384 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +#define FRAMES(x) (x / (sizeof(float) * 2)) + +typedef struct jack +{ + jack_client_t *client; + jack_port_t *ports[2]; + jack_ringbuffer_t *buffer[2]; + volatile bool shutdown; + bool nonblock; + bool is_paused; + +#ifdef HAVE_THREADS + scond_t *cond; + slock_t *cond_lock; +#endif + size_t buffer_size; +} jack_t; + +static int process_cb(jack_nframes_t nframes, void *data) +{ + int i; + jack_nframes_t f, avail[2], min_avail; + jack_t *jd = (jack_t*)data; + + if (nframes <= 0) + { +#ifdef HAVE_THREADS + scond_signal(jd->cond); +#endif + return 0; + } + + avail[0] = jack_ringbuffer_read_space(jd->buffer[0]); + avail[1] = jack_ringbuffer_read_space(jd->buffer[1]); + min_avail = ((avail[0] < avail[1]) ? avail[0] : avail[1]) / sizeof(jack_default_audio_sample_t); + + if (min_avail > nframes) + min_avail = nframes; + + for (i = 0; i < 2; i++) + { + jack_default_audio_sample_t *out = (jack_default_audio_sample_t*)jack_port_get_buffer(jd->ports[i], nframes); + assert(out); + jack_ringbuffer_read(jd->buffer[i], (char*)out, min_avail * sizeof(jack_default_audio_sample_t)); + + for (f = min_avail; f < nframes; f++) + out[f] = 0.0f; + } +#ifdef HAVE_THREADS + scond_signal(jd->cond); +#endif + return 0; +} + +static void shutdown_cb(void *data) +{ + jack_t *jd = (jack_t*)data; + + if (!jd) + return; + + jd->shutdown = true; +#ifdef HAVE_THREADS + scond_signal(jd->cond); +#endif +} + +static int parse_ports(char **dest_ports, const char **jports) +{ + int i; + char *save = NULL; + int parsed = 0; + settings_t *settings = config_get_ptr(); + const char *con = strtok_r(settings->audio.device, ",", &save); + + if (con) + dest_ports[parsed++] = strdup(con); + con = strtok_r(NULL, ",", &save); + if (con) + dest_ports[parsed++] = strdup(con); + + for (i = parsed; i < 2; i++) + dest_ports[i] = strdup(jports[i]); + + return 2; +} + +static size_t find_buffersize(jack_t *jd, int latency) +{ + jack_latency_range_t range; + int i, buffer_frames, min_buffer_frames, jack_latency = 0; + settings_t *settings = config_get_ptr(); + int frames = latency * settings->audio.out_rate / 1000; + + for (i = 0; i < 2; i++) + { + jack_port_get_latency_range(jd->ports[i], JackPlaybackLatency, &range); + if ((int)range.max > jack_latency) + jack_latency = range.max; + } + + VLOG(@"JACK: Jack latency is %d frames.\n", jack_latency); + + buffer_frames = frames - jack_latency; + min_buffer_frames = jack_get_buffer_size(jd->client) * 2; + + VLOG(@"JACK: Minimum buffer size is %d frames.\n", min_buffer_frames); + + if (buffer_frames < min_buffer_frames) + buffer_frames = min_buffer_frames; + + return buffer_frames * sizeof(jack_default_audio_sample_t); +} + +static void *ja_init(const char *device, unsigned rate, unsigned latency) +{ + int i; + const char **jports = NULL; + char *dest_ports[2]; + size_t bufsize = 0; + int parsed = 0; + settings_t *settings = config_get_ptr(); + jack_t *jd = (jack_t*)calloc(1, sizeof(jack_t)); + + if (!jd) + return NULL; + +#ifdef HAVE_THREADS + jd->cond = scond_new(); + jd->cond_lock = slock_new(); +#endif + + jd->client = jack_client_open("RetroArch", JackNullOption, NULL); + if (jd->client == NULL) + goto error; + + settings->audio.out_rate = jack_get_sample_rate(jd->client); + + jack_set_process_callback(jd->client, process_cb, jd); + jack_on_shutdown(jd->client, shutdown_cb, jd); + + jd->ports[0] = jack_port_register(jd->client, "left", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); + jd->ports[1] = jack_port_register(jd->client, "right", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); + if (jd->ports[0] == NULL || jd->ports[1] == NULL) + { + ELOG(@"Failed to register ports.\n"); + goto error; + } + + jports = jack_get_ports(jd->client, NULL, NULL, JackPortIsPhysical | JackPortIsInput); + if (jports == NULL) + { + ELOG(@"Failed to get ports.\n"); + goto error; + } + + bufsize = find_buffersize(jd, latency); + jd->buffer_size = bufsize; + + VLOG(@"JACK: Internal buffer size: %d frames.\n", (int)(bufsize / sizeof(jack_default_audio_sample_t))); + for (i = 0; i < 2; i++) + { + jd->buffer[i] = jack_ringbuffer_create(bufsize); + if (jd->buffer[i] == NULL) + { + ELOG(@"Failed to create buffers.\n"); + goto error; + } + } + + parsed = parse_ports(dest_ports, jports); + + if (jack_activate(jd->client) < 0) + { + ELOG(@"Failed to activate Jack...\n"); + goto error; + } + + for (i = 0; i < 2; i++) + { + if (jack_connect(jd->client, jack_port_name(jd->ports[i]), dest_ports[i])) + { + ELOG(@"Failed to connect to Jack port.\n"); + goto error; + } + } + + for (i = 0; i < parsed; i++) + free(dest_ports[i]); + + jack_free(jports); + return jd; + +error: + if (jports != NULL) + jack_free(jports); + free(jd); + return NULL; +} + +static size_t write_buffer(jack_t *jd, const float *buf, size_t size) +{ + int i; + size_t j, frames, written = 0; + jack_default_audio_sample_t out_deinterleaved_buffer[2][AUDIO_CHUNK_SIZE_NONBLOCKING * AUDIO_MAX_RATIO]; + + frames = FRAMES(size); + + /* Avoid buffer overflow if a DSP plugin generated a huge number of frames. */ + if (frames > AUDIO_CHUNK_SIZE_NONBLOCKING * AUDIO_MAX_RATIO) + frames = AUDIO_CHUNK_SIZE_NONBLOCKING * AUDIO_MAX_RATIO; + + for (i = 0; i < 2; i++) + for (j = 0; j < frames; j++) + out_deinterleaved_buffer[i][j] = buf[j * 2 + i]; + + while (written < frames) + { + size_t avail[2], min_avail, write_frames; + if (jd->shutdown) + return 0; + + avail[0] = jack_ringbuffer_write_space(jd->buffer[0]); + avail[1] = jack_ringbuffer_write_space(jd->buffer[1]); + + min_avail = avail[0] < avail[1] ? avail[0] : avail[1]; + min_avail /= sizeof(float); + + write_frames = frames - written > min_avail ? min_avail : frames - written; + + if (write_frames > 0) + { + for (i = 0; i < 2; i++) + { + jack_ringbuffer_write(jd->buffer[i], (const char*)&out_deinterleaved_buffer[i][written], + write_frames * sizeof(jack_default_audio_sample_t)); + } + written += write_frames; + } +#ifdef HAVE_THREADS + else + { + slock_lock(jd->cond_lock); + scond_wait(jd->cond, jd->cond_lock); + slock_unlock(jd->cond_lock); + } +#endif + + if (jd->nonblock) + break; + } + + return written * sizeof(float) * 2; +} + +static ssize_t ja_write(void *data, const void *buf, size_t size) +{ + jack_t *jd = (jack_t*)data; + + return write_buffer(jd, (const float*)buf, size); +} + +static bool ja_stop(void *data) +{ + jack_t *jd = (jack_t*)data; + if (jd) + jd->is_paused = true; + return true; +} + +static bool ja_alive(void *data) +{ + jack_t *jd = (jack_t*)data; + if (!jd) + return false; + return !jd->is_paused; +} + +static void ja_set_nonblock_state(void *data, bool state) +{ + jack_t *jd = (jack_t*)data; + if (jd) + jd->nonblock = state; +} + +static bool ja_start(void *data) +{ + jack_t *jd = (jack_t*)data; + if (jd) + jd->is_paused = false; + return true; +} + +static void ja_free(void *data) +{ + int i; + jack_t *jd = (jack_t*)data; + + jd->shutdown = true; + + if (jd->client != NULL) + { + jack_deactivate(jd->client); + jack_client_close(jd->client); + } + + for (i = 0; i < 2; i++) + if (jd->buffer[i] != NULL) + jack_ringbuffer_free(jd->buffer[i]); + +#ifdef HAVE_THREADS + if (jd->cond_lock) + slock_free(jd->cond_lock); + if (jd->cond) + scond_free(jd->cond); +#endif + free(jd); +} + +static bool ja_use_float(void *data) +{ + (void)data; + return true; +} + +static size_t ja_write_avail(void *data) +{ + jack_t *jd = (jack_t*)data; + return jack_ringbuffer_write_space(jd->buffer[0]); +} + +static size_t ja_buffer_size(void *data) +{ + jack_t *jd = (jack_t*)data; + return jd->buffer_size; +} + +audio_driver_t audio_jack = { + ja_init, + ja_write, + ja_stop, + ja_start, + ja_alive, + ja_set_nonblock_state, + ja_free, + ja_use_float, + "jack", + NULL, + NULL, + ja_write_avail, + ja_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/nullaudio.c b/PVSupport/Sources/retro/audio/drivers/nullaudio.c new file mode 100644 index 0000000000..4a6682b6b3 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/nullaudio.c @@ -0,0 +1,92 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "../audio_driver.h" +#include "../../verbosity.h" + +static void *null_audio_init(const char *device, unsigned rate, unsigned latency) +{ + ELOG(@"Using the null audio driver. RetroArch will be silent."); + + (void)device; + (void)rate; + (void)latency; + return (void*)-1; +} + +static void null_audio_free(void *data) +{ + (void)data; +} + +static ssize_t null_audio_write(void *data, const void *buf, size_t size) +{ + (void)data; + (void)buf; + + return size; +} + +static bool null_audio_stop(void *data) +{ + (void)data; + return true; +} + +static bool null_audio_alive(void *data) +{ + (void)data; + return true; +} + +static bool null_audio_start(void *data) +{ + (void)data; + return true; +} + +static void null_audio_set_nonblock_state(void *data, bool state) +{ + (void)data; + (void)state; +} + +static bool null_audio_use_float(void *data) +{ + (void)data; + return true; +} + +static size_t null_audio_write_avail(void *data) +{ + (void)data; + return 0; +} + +audio_driver_t audio_null = { + null_audio_init, + null_audio_write, + null_audio_stop, + null_audio_start, + null_audio_alive, + null_audio_set_nonblock_state, + null_audio_free, + null_audio_use_float, + "null", + NULL, + NULL, + null_audio_write_avail, + NULL +}; diff --git a/PVSupport/Sources/retro/audio/drivers/openal.c b/PVSupport/Sources/retro/audio/drivers/openal.c new file mode 100644 index 0000000000..7b4d9078f5 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/openal.c @@ -0,0 +1,274 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#ifdef __APPLE__ +#include +#include +#else +#include +#include +#endif + +#ifdef _WIN32 +#include +#endif + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +#define BUFSIZE 1024 + +typedef struct al +{ + ALuint source; + ALuint *buffers; + ALuint *res_buf; + size_t res_ptr; + ALenum format; + size_t num_buffers; + int rate; + + uint8_t tmpbuf[BUFSIZE]; + size_t tmpbuf_ptr; + + ALCdevice *handle; + ALCcontext *ctx; + + bool nonblock; + bool is_paused; +} al_t; + +static void al_free(void *data) +{ + al_t *al = (al_t*)data; + + if (!al) + return; + + alSourceStop(al->source); + alDeleteSources(1, &al->source); + + if (al->buffers) + alDeleteBuffers(al->num_buffers, al->buffers); + + free(al->buffers); + free(al->res_buf); + alcMakeContextCurrent(NULL); + + if (al->ctx) + alcDestroyContext(al->ctx); + if (al->handle) + alcCloseDevice(al->handle); + free(al); +} + +static void *al_init(const char *device, unsigned rate, unsigned latency) +{ + al_t *al; + + (void)device; + + al = (al_t*)calloc(1, sizeof(al_t)); + if (!al) + return NULL; + + al->handle = alcOpenDevice(NULL); + if (!al->handle) + goto error; + + al->ctx = alcCreateContext(al->handle, NULL); + if (!al->ctx) + goto error; + + alcMakeContextCurrent(al->ctx); + + al->rate = rate; + + /* We already use one buffer for tmpbuf. */ + al->num_buffers = (latency * rate * 2 * sizeof(int16_t)) / (1000 * BUFSIZE) - 1; + if (al->num_buffers < 2) + al->num_buffers = 2; + + VLOG(@"[OpenAL]: Using %u buffers of %u bytes.\n", (unsigned)al->num_buffers, BUFSIZE); + + al->buffers = (ALuint*)calloc(al->num_buffers, sizeof(ALuint)); + al->res_buf = (ALuint*)calloc(al->num_buffers, sizeof(ALuint)); + if (al->buffers == NULL || al->res_buf == NULL) + goto error; + + alGenSources(1, &al->source); + alGenBuffers(al->num_buffers, al->buffers); + + memcpy(al->res_buf, al->buffers, al->num_buffers * sizeof(ALuint)); + al->res_ptr = al->num_buffers; + + return al; + +error: + al_free(al); + return NULL; +} + +static bool al_unqueue_buffers(al_t *al) +{ + ALint val; + + alGetSourcei(al->source, AL_BUFFERS_PROCESSED, &val); + + if (val <= 0) + return false; + + alSourceUnqueueBuffers(al->source, val, &al->res_buf[al->res_ptr]); + al->res_ptr += val; + return true; +} + +static bool al_get_buffer(al_t *al, ALuint *buffer) +{ + if (!al->res_ptr) + { + for (;;) + { + if (al_unqueue_buffers(al)) + break; + + if (al->nonblock) + return false; + + /* Must sleep as there is no proper blocking method. */ + retro_sleep(1); + } + } + + *buffer = al->res_buf[--al->res_ptr]; + return true; +} + +static size_t al_fill_internal_buf(al_t *al, const void *buf, size_t size) +{ + size_t read_size = MIN(BUFSIZE - al->tmpbuf_ptr, size); + memcpy(al->tmpbuf + al->tmpbuf_ptr, buf, read_size); + al->tmpbuf_ptr += read_size; + return read_size; +} + +static ssize_t al_write(void *data, const void *buf_, size_t size) +{ + al_t *al = (al_t*)data; + const uint8_t *buf = (const uint8_t*)buf_; + size_t written = 0; + + while (size) + { + ALint val; + ALuint buffer; + size_t rc = al_fill_internal_buf(al, buf, size); + + written += rc; + buf += rc; + size -= rc; + + if (al->tmpbuf_ptr != BUFSIZE) + break; + + if (!al_get_buffer(al, &buffer)) + break; + + alBufferData(buffer, AL_FORMAT_STEREO16, al->tmpbuf, BUFSIZE, al->rate); + al->tmpbuf_ptr = 0; + alSourceQueueBuffers(al->source, 1, &buffer); + if (alGetError() != AL_NO_ERROR) + return -1; + + alGetSourcei(al->source, AL_SOURCE_STATE, &val); + if (val != AL_PLAYING) + alSourcePlay(al->source); + + if (alGetError() != AL_NO_ERROR) + return -1; + } + + return written; +} + +static bool al_stop(void *data) +{ + al_t *al = (al_t*)data; + if (al) + al->is_paused = true; + return true; +} + +static bool al_alive(void *data) +{ + al_t *al = (al_t*)data; + if (!al) + return false; + return !al->is_paused; +} + +static void al_set_nonblock_state(void *data, bool state) +{ + al_t *al = (al_t*)data; + if (al) + al->nonblock = state; +} + +static bool al_start(void *data) +{ + al_t *al = (al_t*)data; + if (al) + al->is_paused = false; + return true; +} + +static size_t al_write_avail(void *data) +{ + al_t *al = (al_t*)data; + al_unqueue_buffers(al); + return al->res_ptr * BUFSIZE + (BUFSIZE - al->tmpbuf_ptr); +} + +static size_t al_buffer_size(void *data) +{ + al_t *al = (al_t*)data; + return (al->num_buffers + 1) * BUFSIZE; /* Also got tmpbuf. */ +} + +static bool al_use_float(void *data) +{ + (void)data; + return false; +} + +audio_driver_t audio_openal = { + al_init, + al_write, + al_stop, + al_start, + al_alive, + al_set_nonblock_state, + al_free, + al_use_float, + "openal", + NULL, + NULL, + al_write_avail, + al_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/opensl.c b/PVSupport/Sources/retro/audio/drivers/opensl.c new file mode 100644 index 0000000000..4286d02650 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/opensl.c @@ -0,0 +1,320 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#ifdef ANDROID +#include +#endif + +#include + +#include "../audio_driver.h" +#include "../../configuration.h" + +/* Helper macros, COM-style. */ +#define SLObjectItf_Realize(a, ...) ((*(a))->Realize(a, __VA_ARGS__)) +#define SLObjectItf_GetInterface(a, ...) ((*(a))->GetInterface(a, __VA_ARGS__)) +#define SLObjectItf_Destroy(a) ((*(a))->Destroy((a))) + +#define SLEngineItf_CreateOutputMix(a, ...) ((*(a))->CreateOutputMix(a, __VA_ARGS__)) +#define SLEngineItf_CreateAudioPlayer(a, ...) ((*(a))->CreateAudioPlayer(a, __VA_ARGS__)) + +#define SLPlayItf_SetPlayState(a, ...) ((*(a))->SetPlayState(a, __VA_ARGS__)) + +typedef struct sl +{ + uint8_t **buffer; + uint8_t *buffer_chunk; + unsigned buffer_index; + unsigned buffer_ptr; + volatile unsigned buffered_blocks; + + SLObjectItf engine_object; + SLEngineItf engine; + + SLObjectItf output_mix; + SLObjectItf buffer_queue_object; + SLAndroidSimpleBufferQueueItf buffer_queue; + SLPlayItf player; + + slock_t *lock; + scond_t *cond; + bool nonblock; + bool is_paused; + unsigned buf_size; + unsigned buf_count; +} sl_t; + +static void opensl_callback(SLAndroidSimpleBufferQueueItf bq, void *ctx) +{ + sl_t *sl = (sl_t*)ctx; + __sync_fetch_and_sub(&sl->buffered_blocks, 1); + scond_signal(sl->cond); +} + +#define GOTO_IF_FAIL(x) do { \ + if ((res = (x)) != SL_RESULT_SUCCESS) \ + goto error; \ +} while(0) + +static void sl_free(void *data) +{ + sl_t *sl = (sl_t*)data; + if (!sl) + return; + + if (sl->player) + SLPlayItf_SetPlayState(sl->player, SL_PLAYSTATE_STOPPED); + + if (sl->buffer_queue_object) + SLObjectItf_Destroy(sl->buffer_queue_object); + + if (sl->output_mix) + SLObjectItf_Destroy(sl->output_mix); + + if (sl->engine_object) + SLObjectItf_Destroy(sl->engine_object); + + if (sl->lock) + slock_free(sl->lock); + if (sl->cond) + scond_free(sl->cond); + + free(sl->buffer); + free(sl->buffer_chunk); + free(sl); +} + +static void *sl_init(const char *device, unsigned rate, unsigned latency) +{ + unsigned i; + SLInterfaceID id; + SLboolean req; + SLresult res; + sl_t *sl; + SLDataFormat_PCM fmt_pcm = {0}; + SLDataSource audio_src = {0}; + SLDataSink audio_sink = {0}; + SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {0}; + SLDataLocator_OutputMix loc_outmix = {0}; + settings_t *settings = config_get_ptr(); + + (void)device; + + id = SL_IID_ANDROIDSIMPLEBUFFERQUEUE; + req = SL_BOOLEAN_TRUE; + + res = 0; + sl = (sl_t*)calloc(1, sizeof(sl_t)); + if (!sl) + goto error; + + VLOG(@"[SLES]: Requested audio latency: %u ms.", latency); + + GOTO_IF_FAIL(slCreateEngine(&sl->engine_object, 0, NULL, 0, NULL, NULL)); + GOTO_IF_FAIL(SLObjectItf_Realize(sl->engine_object, SL_BOOLEAN_FALSE)); + GOTO_IF_FAIL(SLObjectItf_GetInterface(sl->engine_object, SL_IID_ENGINE, &sl->engine)); + + GOTO_IF_FAIL(SLEngineItf_CreateOutputMix(sl->engine, &sl->output_mix, 0, NULL, NULL)); + GOTO_IF_FAIL(SLObjectItf_Realize(sl->output_mix, SL_BOOLEAN_FALSE)); + + if (settings->audio.block_frames) + sl->buf_size = settings->audio.block_frames * 4; + else + sl->buf_size = next_pow2(32 * latency); + + sl->buf_count = (latency * 4 * rate + 500) / 1000; + sl->buf_count = (sl->buf_count + sl->buf_size / 2) / sl->buf_size; + + sl->buffer = (uint8_t**)calloc(sizeof(uint8_t*), sl->buf_count); + if (!sl->buffer) + goto error; + + sl->buffer_chunk = (uint8_t*)calloc(sl->buf_count, sl->buf_size); + if (!sl->buffer_chunk) + goto error; + + for (i = 0; i < sl->buf_count; i++) + sl->buffer[i] = sl->buffer_chunk + i * sl->buf_size; + + VLOG(@"[SLES]: Setting audio latency: Block size = %u, Blocks = %u, Total = %u ...\n", + sl->buf_size, sl->buf_count, sl->buf_size * sl->buf_count); + + fmt_pcm.formatType = SL_DATAFORMAT_PCM; + fmt_pcm.numChannels = 2; + fmt_pcm.samplesPerSec = rate * 1000; // Samplerate is in milli-Hz. + fmt_pcm.bitsPerSample = 16; + fmt_pcm.containerSize = 16; + fmt_pcm.channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT; + fmt_pcm.endianness = SL_BYTEORDER_LITTLEENDIAN; /* Android only. */ + + audio_src.pLocator = &loc_bufq; + audio_src.pFormat = &fmt_pcm; + + loc_bufq.locatorType = SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE; + loc_bufq.numBuffers = sl->buf_count; + + loc_outmix.locatorType = SL_DATALOCATOR_OUTPUTMIX; + loc_outmix.outputMix = sl->output_mix; + + audio_sink.pLocator = &loc_outmix; + + GOTO_IF_FAIL(SLEngineItf_CreateAudioPlayer(sl->engine, &sl->buffer_queue_object, + &audio_src, &audio_sink, + 1, &id, &req)); + GOTO_IF_FAIL(SLObjectItf_Realize(sl->buffer_queue_object, SL_BOOLEAN_FALSE)); + + GOTO_IF_FAIL(SLObjectItf_GetInterface(sl->buffer_queue_object, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, + &sl->buffer_queue)); + + sl->cond = scond_new(); + sl->lock = slock_new(); + + (*sl->buffer_queue)->RegisterCallback(sl->buffer_queue, opensl_callback, sl); + + /* Enqueue a bit to get stuff rolling. */ + sl->buffered_blocks = sl->buf_count; + sl->buffer_index = 0; + for (i = 0; i < sl->buf_count; i++) + (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[i], sl->buf_size); + + GOTO_IF_FAIL(SLObjectItf_GetInterface(sl->buffer_queue_object, SL_IID_PLAY, &sl->player)); + GOTO_IF_FAIL(SLPlayItf_SetPlayState(sl->player, SL_PLAYSTATE_PLAYING)); + + return sl; + +error: + ELOG(@"Couldn't initialize OpenSL ES driver, error code: [%d].\n", (int)res); + sl_free(sl); + return NULL; +} + +static bool sl_stop(void *data) +{ + sl_t *sl = (sl_t*)data; + sl->is_paused = (SLPlayItf_SetPlayState(sl->player, SL_PLAYSTATE_STOPPED) == SL_RESULT_SUCCESS) ? true : false; + return sl->is_paused ? true : false; +} + +static bool sl_alive(void *data) +{ + sl_t *sl = (sl_t*)data; + if (!sl) + return false; + return !sl->is_paused; +} + +static void sl_set_nonblock_state(void *data, bool state) +{ + sl_t *sl = (sl_t*)data; + if (sl) + sl->nonblock = state; +} + +static bool sl_start(void *data) +{ + sl_t *sl = (sl_t*)data; + sl->is_paused = (SLPlayItf_SetPlayState(sl->player, SL_PLAYSTATE_PLAYING) == SL_RESULT_SUCCESS) ? false : true; + return sl->is_paused ? false : true; +} + + +static ssize_t sl_write(void *data, const void *buf_, size_t size) +{ + sl_t *sl = (sl_t*)data; + size_t written = 0; + const uint8_t *buf = (const uint8_t*)buf_; + + while (size) + { + size_t avail_write; + + if (sl->nonblock) + { + if (sl->buffered_blocks == sl->buf_count) + break; + } + else + { + slock_lock(sl->lock); + while (sl->buffered_blocks == sl->buf_count) + scond_wait(sl->cond, sl->lock); + slock_unlock(sl->lock); + } + + avail_write = MIN(sl->buf_size - sl->buffer_ptr, size); + + if (avail_write) + { + memcpy(sl->buffer[sl->buffer_index] + sl->buffer_ptr, buf, avail_write); + sl->buffer_ptr += avail_write; + buf += avail_write; + size -= avail_write; + written += avail_write; + } + + if (sl->buffer_ptr >= sl->buf_size) + { + SLresult res = (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[sl->buffer_index], sl->buf_size); + sl->buffer_index = (sl->buffer_index + 1) % sl->buf_count; + __sync_fetch_and_add(&sl->buffered_blocks, 1); + sl->buffer_ptr = 0; + + if (res != SL_RESULT_SUCCESS) + { + ELOG(@"[OpenSL]: Failed to write! (Error: 0x%x)\n", (unsigned)res); + return -1; + } + } + } + + return written; +} + +static size_t sl_write_avail(void *data) +{ + sl_t *sl = (sl_t*)data; + size_t avail = (sl->buf_count - (int)sl->buffered_blocks - 1) * sl->buf_size + (sl->buf_size - (int)sl->buffer_ptr); + return avail; +} + +static size_t sl_buffer_size(void *data) +{ + sl_t *sl = (sl_t*)data; + return sl->buf_size * sl->buf_count; +} + +static bool sl_use_float(void *data) +{ + (void)data; + return false; +} + +audio_driver_t audio_opensl = { + sl_init, + sl_write, + sl_stop, + sl_start, + sl_alive, + sl_set_nonblock_state, + sl_free, + sl_use_float, + "opensl", + NULL, + NULL, + sl_write_avail, + sl_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/oss.c b/PVSupport/Sources/retro/audio/drivers/oss.c new file mode 100644 index 0000000000..c21607fb11 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/oss.c @@ -0,0 +1,219 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_OSS_BSD +#include +#else +#include +#endif + +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +#ifdef HAVE_OSS_BSD +#define DEFAULT_OSS_DEV "/dev/audio" +#else +#define DEFAULT_OSS_DEV "/dev/dsp" +#endif + +static bool oss_is_paused; + +static void *oss_init(const char *device, unsigned rate, unsigned latency) +{ + int frags, frag, channels, format, new_rate; + int *fd = (int*)calloc(1, sizeof(int)); + settings_t *settings = config_get_ptr(); + + const char *oss_device = device ? device : DEFAULT_OSS_DEV; + + if (fd == NULL) + return NULL; + + if ((*fd = open(oss_device, O_WRONLY)) < 0) + { + free(fd); + perror("open"); + return NULL; + } + + frags = (latency * rate * 4) / (1000 * (1 << 10)); + frag = (frags << 16) | 10; + + if (ioctl(*fd, SNDCTL_DSP_SETFRAGMENT, &frag) < 0) + WLOG(@"Cannot set fragment sizes. Latency might not be as expected ...\n"); + + channels = 2; + format = is_little_endian() ? AFMT_S16_LE : AFMT_S16_BE; + + if (ioctl(*fd, SNDCTL_DSP_CHANNELS, &channels) < 0) + { + close(*fd); + free(fd); + perror("ioctl"); + return NULL; + } + + if (ioctl(*fd, SNDCTL_DSP_SETFMT, &format) < 0) + { + close(*fd); + free(fd); + perror("ioctl"); + return NULL; + } + + new_rate = rate; + + if (ioctl(*fd, SNDCTL_DSP_SPEED, &new_rate) < 0) + { + close(*fd); + free(fd); + perror("ioctl"); + return NULL; + } + + if (new_rate != (int)rate) + { + WLOG(@"Requested sample rate not supported. Adjusting output rate to %d Hz.\n", new_rate); + settings->audio.out_rate = new_rate; + } + + return fd; +} + +static ssize_t oss_write(void *data, const void *buf, size_t size) +{ + ssize_t ret; + int *fd = (int*)data; + + if (size == 0) + return 0; + + if ((ret = write(*fd, buf, size)) < 0) + { + if (errno == EAGAIN && (fcntl(*fd, F_GETFL) & O_NONBLOCK)) + return 0; + + return -1; + } + + return ret; +} + +static bool oss_stop(void *data) +{ + int *fd = (int*)data; + + ioctl(*fd, SNDCTL_DSP_RESET, 0); + oss_is_paused = true; + return true; +} + +static bool oss_start(void *data) +{ + (void)data; + oss_is_paused = false; + return true; +} + +static bool oss_alive(void *data) +{ + (void)data; + return !oss_is_paused; +} + +static void oss_set_nonblock_state(void *data, bool state) +{ + int rc; + int *fd = (int*)data; + + if (state) + rc = fcntl(*fd, F_SETFL, fcntl(*fd, F_GETFL) | O_NONBLOCK); + else + rc = fcntl(*fd, F_SETFL, fcntl(*fd, F_GETFL) & (~O_NONBLOCK)); + if (rc != 0) + WLOG(@"Could not set nonblocking on OSS file descriptor. Will not be able to fast-forward.\n"); +} + +static void oss_free(void *data) +{ + int *fd = (int*)data; + + ioctl(*fd, SNDCTL_DSP_RESET, 0); + close(*fd); + free(fd); +} + +static size_t oss_write_avail(void *data) +{ + audio_buf_info info; + int *fd = (int*)data; + + if (ioctl(*fd, SNDCTL_DSP_GETOSPACE, &info) < 0) + { + ELOG(@"SNDCTL_DSP_GETOSPACE failed ...\n"); + return 0; + } + + return info.bytes; +} + +static size_t oss_buffer_size(void *data) +{ + audio_buf_info info; + int *fd = (int*)data; + + if (ioctl(*fd, SNDCTL_DSP_GETOSPACE, &info) < 0) + { + ELOG(@"SNDCTL_DSP_GETOSPACE failed ...\n"); + return 1; /* Return something non-zero to avoid SIGFPE. */ + } + + return info.fragsize * info.fragstotal; +} + +static bool oss_use_float(void *data) +{ + (void)data; + return false; +} + +audio_driver_t audio_oss = { + oss_init, + oss_write, + oss_stop, + oss_start, + oss_alive, + oss_set_nonblock_state, + oss_free, + oss_use_float, + "oss", + NULL, + NULL, + oss_write_avail, + oss_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/ps3_audio.c b/PVSupport/Sources/retro/audio/drivers/ps3_audio.c new file mode 100644 index 0000000000..46fdefcc7d --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/ps3_audio.c @@ -0,0 +1,254 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#include + +#include "../audio_driver.h" +#include "../../configuration.h" + +#include "../../defines/ps3_defines.h" + +#define AUDIO_BLOCKS 8 +#define AUDIO_CHANNELS 2 + +typedef struct +{ + uint32_t audio_port; + bool nonblocking; + bool started; + volatile bool quit_thread; + fifo_buffer_t *buffer; + + sys_ppu_thread_t thread; + sys_lwmutex_t lock; + sys_lwmutex_t cond_lock; + sys_lwcond_t cond; +} ps3_audio_t; + +#ifdef __PSL1GHT__ +static void event_loop(void *data) +#else +static void event_loop(uint64_t data) +#endif +{ + float out_tmp[CELL_AUDIO_BLOCK_SAMPLES * AUDIO_CHANNELS] + __attribute__((aligned(16))); + sys_event_queue_t id; + sys_ipc_key_t key; + sys_event_t event; + ps3_audio_t *aud = data; + + cellAudioCreateNotifyEventQueue(&id, &key); + cellAudioSetNotifyEventQueue(key); + + while (!aud->quit_thread) + { + sys_event_queue_receive(id, &event, SYS_NO_TIMEOUT); + + sys_lwmutex_lock(&aud->lock, SYS_NO_TIMEOUT); + if (fifo_read_avail(aud->buffer) >= sizeof(out_tmp)) + fifo_read(aud->buffer, out_tmp, sizeof(out_tmp)); + else + memset(out_tmp, 0, sizeof(out_tmp)); + sys_lwmutex_unlock(&aud->lock); + sys_lwcond_signal(&aud->cond); + + cellAudioAddData(aud->audio_port, out_tmp, + CELL_AUDIO_BLOCK_SAMPLES, 1.0); + } + + cellAudioRemoveNotifyEventQueue(key); + sys_ppu_thread_exit(0); +} + +static void *ps3_audio_init(const char *device, + unsigned rate, unsigned latency) +{ + CellAudioPortParam params; + ps3_audio_t *data = NULL; + + (void)latency; + (void)device; + (void)rate; + + data = calloc(1, sizeof(*data)); + if (!data) + return NULL; + + cellAudioInit(); + + params.numChannels = AUDIO_CHANNELS; + params.numBlocks = AUDIO_BLOCKS; +#if 0 +#ifdef HAVE_HEADSET + if(global->console.sound.mode == SOUND_MODE_HEADSET) + params.param_attrib = CELL_AUDIO_PORTATTR_OUT_SECONDARY; + else +#endif +#endif + params.param_attrib = 0; + + if (cellAudioPortOpen(¶ms, &data->audio_port) != CELL_OK) + { + cellAudioQuit(); + free(data); + return NULL; + } + + data->buffer = fifo_new(CELL_AUDIO_BLOCK_SAMPLES * + AUDIO_CHANNELS * AUDIO_BLOCKS * sizeof(float)); + +#ifdef __PSL1GHT__ + sys_lwmutex_attr_t lock_attr = + {SYS_LWMUTEX_ATTR_PROTOCOL, SYS_LWMUTEX_ATTR_RECURSIVE, "\0"}; + sys_lwmutex_attr_t cond_lock_attr = + {SYS_LWMUTEX_ATTR_PROTOCOL, SYS_LWMUTEX_ATTR_RECURSIVE, "\0"}; + sys_lwcond_attribute_t cond_attr = {"\0"}; +#else + sys_lwmutex_attribute_t lock_attr; + sys_lwmutex_attribute_t cond_lock_attr; + sys_lwcond_attribute_t cond_attr; + + sys_lwmutex_attribute_initialize(lock_attr); + sys_lwmutex_attribute_initialize(cond_lock_attr); + sys_lwcond_attribute_initialize(cond_attr); +#endif + + sys_lwmutex_create(&data->lock, &lock_attr); + sys_lwmutex_create(&data->cond_lock, &cond_lock_attr); + sys_lwcond_create(&data->cond, &data->cond_lock, &cond_attr); + + cellAudioPortStart(data->audio_port); + data->started = true; + sys_ppu_thread_create(&data->thread, event_loop, +#ifdef __PSL1GHT__ + data, +#else + (uint64_t)data, +#endif + 1500, 0x1000, SYS_PPU_THREAD_CREATE_JOINABLE, (char*)"sound"); + + return data; +} + +static ssize_t ps3_audio_write(void *data, const void *buf, size_t size) +{ + ps3_audio_t *aud = data; + + if (aud->nonblocking) + { + if (fifo_write_avail(aud->buffer) < size) + return 0; + } + + while (fifo_write_avail(aud->buffer) < size) + sys_lwcond_wait(&aud->cond, 0); + + sys_lwmutex_lock(&aud->lock, SYS_NO_TIMEOUT); + fifo_write(aud->buffer, buf, size); + sys_lwmutex_unlock(&aud->lock); + + return size; +} + +static bool ps3_audio_stop(void *data) +{ + ps3_audio_t *aud = data; + if (aud->started) + { + cellAudioPortStop(aud->audio_port); + aud->started = false; + } + return true; +} + +static bool ps3_audio_start(void *data) +{ + ps3_audio_t *aud = data; + if (!aud->started) + { + cellAudioPortStart(aud->audio_port); + aud->started = true; + } + return true; +} + +static bool ps3_audio_alive(void *data) +{ + ps3_audio_t *aud = data; + if (!aud) + return false; + return aud->started; +} + +static void ps3_audio_set_nonblock_state(void *data, bool toggle) +{ + ps3_audio_t *aud = data; + if (aud) + aud->nonblocking = toggle; +} + +static void ps3_audio_free(void *data) +{ + uint64_t val; + ps3_audio_t *aud = data; + + aud->quit_thread = true; + ps3_audio_start(aud); + sys_ppu_thread_join(aud->thread, &val); + + ps3_audio_stop(aud); + cellAudioPortClose(aud->audio_port); + cellAudioQuit(); + fifo_free(aud->buffer); + + sys_lwmutex_destroy(&aud->lock); + sys_lwmutex_destroy(&aud->cond_lock); + sys_lwcond_destroy(&aud->cond); + + free(data); +} + +static bool ps3_audio_use_float(void *data) +{ + (void)data; + return true; +} + +static size_t ps3_audio_write_avail(void *data) +{ + (void)data; + return 0; +} + +audio_driver_t audio_ps3 = { + ps3_audio_init, + ps3_audio_write, + ps3_audio_stop, + ps3_audio_start, + ps3_audio_alive, + ps3_audio_set_nonblock_state, + ps3_audio_free, + ps3_audio_use_float, + "ps3", + NULL, + NULL, + ps3_audio_write_avail, + NULL +}; diff --git a/PVSupport/Sources/retro/audio/drivers/psp_audio.c b/PVSupport/Sources/retro/audio/drivers/psp_audio.c new file mode 100644 index 0000000000..8cee16e1b1 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/psp_audio.c @@ -0,0 +1,376 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * Copyright (C) 2014-2016 - Ali Bouhlel + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#ifdef VITA +#include +#include +#include +#include +#else +#include +#include +#endif + +#include "../audio_driver.h" +#include "../../configuration.h" + +typedef struct psp_audio +{ + bool nonblocking; + + uint32_t* buffer; + uint32_t* zeroBuffer; + + SceUID thread; + int rate; + + volatile bool running; + volatile uint16_t readPos; + volatile uint16_t writePos; + +#ifdef VITA + char lock[32] __attribute__ ((aligned (8))); + char cond_lock[32] __attribute__ ((aligned (8))); + char cond[32] __attribute__ ((aligned (8))); +#endif +} psp_audio_t; + +#define AUDIO_OUT_COUNT 512u +#define AUDIO_BUFFER_SIZE (1u<<13u) +#define AUDIO_BUFFER_SIZE_MASK (AUDIO_BUFFER_SIZE-1) + +#ifdef VITA +#define PSP_THREAD_STOPPED SCE_THREAD_STOPPED +#else +#define SceKernelThreadInfo SceKernelThreadRunStatus +#define sceKernelGetThreadInfo sceKernelReferThreadRunStatus +#endif + +static int audioMainLoop(SceSize args, void* argp) +{ + psp_audio_t* psp = *((psp_audio_t**)argp); + +#ifdef VITA + int port = sceAudioOutOpenPort(SCE_AUDIO_OUT_PORT_TYPE_MAIN, AUDIO_OUT_COUNT, + psp->rate, SCE_AUDIO_OUT_MODE_STEREO); +#else + sceAudioSRCChReserve(AUDIO_OUT_COUNT, psp->rate, 2); +#endif + + while (psp->running) + { +#ifdef VITA + + //sys_event_queue_receive(id, &event, SYS_NO_TIMEOUT); + + sceKernelLockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1, 0); + uint16_t readPos = psp->readPos; + uint16_t readPos2 = psp->readPos; + bool cond = ((uint16_t)(psp->writePos - readPos) & AUDIO_BUFFER_SIZE_MASK) + < (AUDIO_OUT_COUNT * 2); + if (!cond) + { + readPos += AUDIO_OUT_COUNT; + readPos &= AUDIO_BUFFER_SIZE_MASK; + psp->readPos = readPos; + } + sceKernelUnlockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1); + sceKernelSignalLwCond(&psp->cond); + + sceAudioOutOutput(port, + cond ? (psp->zeroBuffer) + : (psp->buffer + readPos2)); + + +#else + /* Get a non-volatile copy. */ + uint16_t readPos = psp->readPos; + bool cond = ((uint16_t)(psp->writePos - readPos) & AUDIO_BUFFER_SIZE_MASK) + < (AUDIO_OUT_COUNT * 2); + + sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer) + : (psp->buffer + readPos)); + + if (!cond) + { + readPos += AUDIO_OUT_COUNT; + readPos &= AUDIO_BUFFER_SIZE_MASK; + psp->readPos = readPos; + } + +#endif + + } + +#ifdef VITA + sceAudioOutReleasePort(port); +#else + sceAudioSRCChRelease(); + sceKernelExitThread(0); +#endif + return 0; +} + +static void *psp_audio_init(const char *device, + unsigned rate, unsigned latency) +{ + psp_audio_t *psp = (psp_audio_t*)calloc(1, sizeof(psp_audio_t)); + + if (!psp) + return NULL; + + (void)device; + (void)latency; + + + /* Cache aligned, not necessary but helpful. */ + psp->buffer = (uint32_t*) + memalign(64, AUDIO_BUFFER_SIZE * sizeof(uint32_t)); + memset(psp->buffer, 0, AUDIO_BUFFER_SIZE * sizeof(uint32_t)); + psp->zeroBuffer = (uint32_t*) + memalign(64, AUDIO_OUT_COUNT * sizeof(uint32_t)); + memset(psp->zeroBuffer, 0, AUDIO_OUT_COUNT * sizeof(uint32_t)); + + psp->readPos = 0; + psp->writePos = 0; + psp->rate = rate; +#if defined(VITA) + + sceKernelCreateLwMutex((struct SceKernelLwMutexWork*)&psp->lock, "audio_get_lock", 0, 0, 0); + sceKernelCreateLwMutex((struct SceKernelLwMutexWork*)&psp->cond_lock, "audio_get_cond_lock", 0, 0, 0); + sceKernelCreateLwCond(&psp->cond, "audio_get_cond", 0, &psp->cond_lock, 0); + psp->thread = sceKernelCreateThread + ("audioMainLoop", audioMainLoop, 0x10000100, 0x10000, 0, 0, NULL); +#else + psp->thread = sceKernelCreateThread + ("audioMainLoop", audioMainLoop, 0x08, 0x10000, 0, NULL); +#endif + + psp->nonblocking = false; + psp->running = true; + sceKernelStartThread(psp->thread, sizeof(psp_audio_t*), &psp); + + return psp; +} + +static void psp_audio_free(void *data) +{ + SceUInt timeout = 100000; + psp_audio_t* psp = (psp_audio_t*)data; + if(!psp) + return; + + psp->running = false; +#if defined(VITA) + sceKernelWaitThreadEnd(psp->thread, NULL, &timeout); + sceKernelDeleteLwMutex((struct SceKernelLwMutexWork*)&psp->lock); + sceKernelDeleteLwMutex((struct SceKernelLwMutexWork*)&psp->cond_lock); + sceKernelDeleteLwCond(&psp->cond); +#else + sceKernelWaitThreadEnd(psp->thread, &timeout); +#endif + free(psp->buffer); + sceKernelDeleteThread(psp->thread); + free(psp->zeroBuffer); + free(psp); +} + +static ssize_t psp_audio_write(void *data, const void *buf, size_t size) +{ + psp_audio_t* psp = (psp_audio_t*)data; + + uint16_t sampleCount; + uint16_t writePos = psp->writePos; + + sampleCount= size / sizeof(uint32_t); + +#ifdef VITA + if (psp->nonblocking) + { + if (AUDIO_BUFFER_SIZE - ((uint16_t) + (psp->writePos - psp->readPos) & AUDIO_BUFFER_SIZE_MASK) < size) + return 0; + } + + while (AUDIO_BUFFER_SIZE - ((uint16_t) + (psp->writePos - psp->readPos) & AUDIO_BUFFER_SIZE_MASK) < size){ + sceKernelWaitLwCond(&psp->cond, 0); + } + + sceKernelLockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1, 0); + if((writePos + sampleCount) > AUDIO_BUFFER_SIZE) + { + memcpy(psp->buffer + writePos, buf, + (AUDIO_BUFFER_SIZE - writePos) * sizeof(uint32_t)); + memcpy(psp->buffer, (uint32_t*) buf + + (AUDIO_BUFFER_SIZE - writePos), + (writePos + sampleCount - AUDIO_BUFFER_SIZE) * sizeof(uint32_t)); + } + else + memcpy(psp->buffer + writePos, buf, size); + + writePos += sampleCount; + writePos &= AUDIO_BUFFER_SIZE_MASK; + psp->writePos = writePos; + sceKernelUnlockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1); + + return size; +#else + + + +#if 0 + if (psp->nonblocking) + { + /* TODO */ + } +#endif + + if((writePos + sampleCount) > AUDIO_BUFFER_SIZE) + { + memcpy(psp->buffer + writePos, buf, + (AUDIO_BUFFER_SIZE - writePos) * sizeof(uint32_t)); + memcpy(psp->buffer, (uint32_t*) buf + + (AUDIO_BUFFER_SIZE - writePos), + (writePos + sampleCount - AUDIO_BUFFER_SIZE) * sizeof(uint32_t)); + } + else + memcpy(psp->buffer + writePos, buf, size); + + writePos += sampleCount; + writePos &= AUDIO_BUFFER_SIZE_MASK; + psp->writePos = writePos; + + return sampleCount; +#endif +} + +static bool psp_audio_alive(void *data) +{ + psp_audio_t* psp = (psp_audio_t*)data; + if (!psp) + return false; + return psp->running; +} + + +static bool psp_audio_stop(void *data) +{ + SceKernelThreadInfo info; + SceUInt timeout = 100000; + psp_audio_t* psp = (psp_audio_t*)data; + + info.size = sizeof(SceKernelThreadInfo); + + if (sceKernelGetThreadInfo( + psp->thread, &info) < 0) /* Error */ + return false; + + if (info.status == PSP_THREAD_STOPPED) + return false; + + psp->running = false; +#if defined(VITA) + sceKernelWaitThreadEnd(psp->thread, NULL, &timeout); +#else + sceKernelWaitThreadEnd(psp->thread, &timeout); +#endif + return true; +} + +static bool psp_audio_start(void *data) +{ + SceKernelThreadInfo info; + psp_audio_t* psp = (psp_audio_t*)data; + + info.size = sizeof(SceKernelThreadInfo); + + if (sceKernelGetThreadInfo( + psp->thread, &info) < 0) /* Error */ + return false; + + if (info.status != PSP_THREAD_STOPPED) + return false; + + psp->running = true; + + sceKernelStartThread(psp->thread, sizeof(psp_audio_t*), &psp); + + return true; +} + +static void psp_audio_set_nonblock_state(void *data, bool toggle) +{ + psp_audio_t* psp = (psp_audio_t*)data; + if (psp) + psp->nonblocking = toggle; +} + +static bool psp_audio_use_float(void *data) +{ + (void)data; + return false; +} + +static size_t psp_write_avail(void *data) +{ + psp_audio_t* psp = (psp_audio_t*)data; +#ifdef VITA + size_t val; + + sceKernelLockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1, 0); + val = AUDIO_BUFFER_SIZE - ((uint16_t) + (psp->writePos - psp->readPos) & AUDIO_BUFFER_SIZE_MASK); + sceKernelUnlockLwMutex((struct SceKernelLwMutexWork*)&psp->lock, 1); + return val; +#else + /* TODO */ + return AUDIO_BUFFER_SIZE - ((uint16_t) + (psp->writePos - psp->readPos) & AUDIO_BUFFER_SIZE_MASK); +#endif +} + +static size_t psp_buffer_size(void *data) +{ + /* TODO */ + return AUDIO_BUFFER_SIZE /** sizeof(uint32_t)*/; +} + + +audio_driver_t audio_psp = { + psp_audio_init, + psp_audio_write, + psp_audio_stop, + psp_audio_start, + psp_audio_alive, + psp_audio_set_nonblock_state, + psp_audio_free, + psp_audio_use_float, +#ifdef VITA + "vita", +#else + "psp", +#endif + NULL, + NULL, + psp_write_avail, + psp_buffer_size +}; diff --git a/PVSupport/Sources/retro/audio/drivers/pulse.c b/PVSupport/Sources/retro/audio/drivers/pulse.c new file mode 100644 index 0000000000..3b1c3713a8 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/pulse.c @@ -0,0 +1,350 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#include + +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +typedef struct +{ + pa_threaded_mainloop *mainloop; + pa_context *context; + pa_stream *stream; + size_t buffer_size; + bool nonblock; + bool success; + bool is_paused; +} pa_t; + +static void pulse_free(void *data) +{ + pa_t *pa = (pa_t*)data; + + if (!pa) + return; + + if (pa->mainloop) + pa_threaded_mainloop_stop(pa->mainloop); + + if (pa->stream) + { + pa_stream_disconnect(pa->stream); + pa_stream_unref(pa->stream); + } + + if (pa->context) + { + pa_context_disconnect(pa->context); + pa_context_unref(pa->context); + } + + if (pa->mainloop) + pa_threaded_mainloop_free(pa->mainloop); + + free(pa); +} + +static void stream_success_cb(pa_stream *s, int success, void *data) +{ + pa_t *pa = (pa_t*)data; + (void)s; + pa->success = success; + pa_threaded_mainloop_signal(pa->mainloop, 0); +} + +static void context_state_cb(pa_context *c, void *data) +{ + pa_t *pa = (pa_t*)data; + + switch (pa_context_get_state(c)) + { + case PA_CONTEXT_READY: + case PA_CONTEXT_TERMINATED: + case PA_CONTEXT_FAILED: + pa_threaded_mainloop_signal(pa->mainloop, 0); + break; + default: + break; + } +} + +static void stream_state_cb(pa_stream *s, void *data) +{ + pa_t *pa = (pa_t*)data; + + switch (pa_stream_get_state(s)) + { + case PA_STREAM_READY: + case PA_STREAM_FAILED: + case PA_STREAM_TERMINATED: + pa_threaded_mainloop_signal(pa->mainloop, 0); + break; + default: + break; + } +} + +static void stream_request_cb(pa_stream *s, size_t length, void *data) +{ + pa_t *pa = (pa_t*)data; + + (void)length; + (void)s; + + pa_threaded_mainloop_signal(pa->mainloop, 0); +} + +static void stream_latency_update_cb(pa_stream *s, void *data) +{ + pa_t *pa = (pa_t*)data; + + (void)s; + + pa_threaded_mainloop_signal(pa->mainloop, 0); +} + +static void underrun_update_cb(pa_stream *s, void *data) +{ + pa_t *pa = (pa_t*)data; + + (void)s; + + VLOG(@"[PulseAudio]: Underrun (Buffer: %u, Writable size: %u).\n", + (unsigned)pa->buffer_size, + (unsigned)pa_stream_writable_size(pa->stream)); +} + +static void buffer_attr_cb(pa_stream *s, void *data) +{ + pa_t *pa = (pa_t*)data; + const pa_buffer_attr *server_attr = pa_stream_get_buffer_attr(s); + if (server_attr) + pa->buffer_size = server_attr->tlength; + + VLOG(@"[PulseAudio]: Got new buffer size %u.\n", (unsigned)pa->buffer_size); +} + +static void *pulse_init(const char *device, unsigned rate, unsigned latency) +{ + pa_sample_spec spec; + pa_t *pa; + pa_buffer_attr buffer_attr = {0}; + const pa_buffer_attr *server_attr = NULL; + + memset(&spec, 0, sizeof(spec)); + + pa = (pa_t*)calloc(1, sizeof(*pa)); + if (!pa) + goto error; + + pa->mainloop = pa_threaded_mainloop_new(); + if (!pa->mainloop) + goto error; + + pa->context = pa_context_new(pa_threaded_mainloop_get_api(pa->mainloop), "RetroArch"); + if (!pa->context) + goto error; + + pa_context_set_state_callback(pa->context, context_state_cb, pa); + + if (pa_context_connect(pa->context, device, PA_CONTEXT_NOFLAGS, NULL) < 0) + goto error; + + pa_threaded_mainloop_lock(pa->mainloop); + if (pa_threaded_mainloop_start(pa->mainloop) < 0) + goto error; + + pa_threaded_mainloop_wait(pa->mainloop); + + if (pa_context_get_state(pa->context) != PA_CONTEXT_READY) + goto unlock_error; + + spec.format = is_little_endian() ? PA_SAMPLE_FLOAT32LE : PA_SAMPLE_FLOAT32BE; + spec.channels = 2; + spec.rate = rate; + + pa->stream = pa_stream_new(pa->context, "audio", &spec, NULL); + if (!pa->stream) + goto unlock_error; + + pa_stream_set_state_callback(pa->stream, stream_state_cb, pa); + pa_stream_set_write_callback(pa->stream, stream_request_cb, pa); + pa_stream_set_latency_update_callback(pa->stream, stream_latency_update_cb, pa); + pa_stream_set_underflow_callback(pa->stream, underrun_update_cb, pa); + pa_stream_set_buffer_attr_callback(pa->stream, buffer_attr_cb, pa); + + buffer_attr.maxlength = -1; + buffer_attr.tlength = pa_usec_to_bytes(latency * PA_USEC_PER_MSEC, &spec); + buffer_attr.prebuf = -1; + buffer_attr.minreq = -1; + buffer_attr.fragsize = -1; + + if (pa_stream_connect_playback(pa->stream, NULL, &buffer_attr, PA_STREAM_ADJUST_LATENCY, NULL, NULL) < 0) + goto error; + + pa_threaded_mainloop_wait(pa->mainloop); + + if (pa_stream_get_state(pa->stream) != PA_STREAM_READY) + goto unlock_error; + + server_attr = pa_stream_get_buffer_attr(pa->stream); + if (server_attr) + { + pa->buffer_size = server_attr->tlength; + VLOG(@"[PulseAudio]: Requested %u bytes buffer, got %u.\n", + (unsigned)buffer_attr.tlength, + (unsigned)pa->buffer_size); + } + else + pa->buffer_size = buffer_attr.tlength; + + pa_threaded_mainloop_unlock(pa->mainloop); + + return pa; + +unlock_error: + pa_threaded_mainloop_unlock(pa->mainloop); +error: + pulse_free(pa); + return NULL; +} + +static ssize_t pulse_write(void *data, const void *buf_, size_t size) +{ + pa_t *pa = (pa_t*)data; + const uint8_t *buf = (const uint8_t*)buf_; + size_t written = 0; + + pa_threaded_mainloop_lock(pa->mainloop); + while (size) + { + size_t writable = MIN(size, pa_stream_writable_size(pa->stream)); + + if (writable) + { + pa_stream_write(pa->stream, buf, writable, NULL, 0, PA_SEEK_RELATIVE); + buf += writable; + size -= writable; + written += writable; + } + else if (!pa->nonblock) + pa_threaded_mainloop_wait(pa->mainloop); + else + break; + } + + pa_threaded_mainloop_unlock(pa->mainloop); + + return written; +} + +static bool pulse_stop(void *data) +{ + bool ret; + pa_t *pa = (pa_t*)data; + + VLOG(@"[PulseAudio]: Pausing.\n"); + + pa->success = true; /* In case of spurious wakeup. Not critical. */ + pa_threaded_mainloop_lock(pa->mainloop); + pa_stream_cork(pa->stream, true, stream_success_cb, pa); + pa_threaded_mainloop_wait(pa->mainloop); + ret = pa->success; + pa_threaded_mainloop_unlock(pa->mainloop); + pa->is_paused = true; + return ret; +} + +static bool pulse_alive(void *data) +{ + pa_t *pa = (pa_t*)data; + + if (!pa) + return false; + return !pa->is_paused; +} + +static bool pulse_start(void *data) +{ + bool ret; + pa_t *pa = (pa_t*)data; + + VLOG(@"[PulseAudio]: Unpausing.\n"); + + pa->success = true; /* In case of spurious wakeup. Not critical. */ + pa_threaded_mainloop_lock(pa->mainloop); + pa_stream_cork(pa->stream, false, stream_success_cb, pa); + pa_threaded_mainloop_wait(pa->mainloop); + ret = pa->success; + pa_threaded_mainloop_unlock(pa->mainloop); + pa->is_paused = false; + return ret; +} + +static void pulse_set_nonblock_state(void *data, bool state) +{ + pa_t *pa = (pa_t*)data; + if (pa) + pa->nonblock = state; +} + +static bool pulse_use_float(void *data) +{ + (void)data; + return true; +} + +static size_t pulse_write_avail(void *data) +{ + size_t length; + pa_t *pa = (pa_t*)data; + + pa_threaded_mainloop_lock(pa->mainloop); + length = pa_stream_writable_size(pa->stream); + + audio_driver_set_buffer_size(pa->buffer_size); /* Can change spuriously. */ + pa_threaded_mainloop_unlock(pa->mainloop); + return length; +} + +static size_t pulse_buffer_size(void *data) +{ + pa_t *pa = (pa_t*)data; + return pa->buffer_size; +} + +audio_driver_t audio_pulse = { + pulse_init, + pulse_write, + pulse_stop, + pulse_start, + pulse_alive, + pulse_set_nonblock_state, + pulse_free, + pulse_use_float, + "pulse", + NULL, + NULL, + pulse_write_avail, + pulse_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/roar.c b/PVSupport/Sources/retro/audio/drivers/roar.c new file mode 100644 index 0000000000..95a96932c9 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/roar.c @@ -0,0 +1,151 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#include + +#include + +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +typedef struct +{ + roar_vs_t *vss; + bool nonblocking; + bool is_paused; +} roar_t; + +static void *ra_init(const char *device, unsigned rate, unsigned latency) +{ + int err; + roar_vs_t *vss; + roar_t *roar = (roar_t*)calloc(1, sizeof(roar_t)); + + if (!roar) + return NULL; + + (void)latency; + + if ((vss = roar_vs_new_simple(device, "RetroArch", rate, 2, ROAR_CODEC_PCM_S, 16, ROAR_DIR_PLAY, &err)) == NULL) + { + ELOG(@"RoarAudio: \"%s\"\n", roar_vs_strerr(err)); + free(roar); + return NULL; + } + + roar_vs_role(vss, ROAR_ROLE_GAME, NULL); + roar->vss = vss; + + return roar; +} + +static ssize_t ra_write(void *data, const void *buf, size_t size) +{ + int err; + size_t written = 0; + roar_t *roar = (roar_t*)data; + + if (size == 0) + return 0; + + while (written < size) + { + ssize_t rc; + size_t write_amt = size - written; + + if ((rc = roar_vs_write(roar->vss, (const char*)buf + written, write_amt, &err)) < (ssize_t)write_amt) + { + if (roar->nonblocking) + return rc; + else if (rc < 0) + return -1; + } + written += rc; + } + + return size; +} + +static bool ra_stop(void *data) +{ + roar_t *roar = (roar_t*)data; + if (roar) + roar->is_paused = true; + return true; +} + +static bool ra_alive(void *data) +{ + roar_t *roar = (roar_t*)data; + if (!roar) + return false; + return !roar->is_paused; +} + +static void ra_set_nonblock_state(void *data, bool state) +{ + roar_t *roar = (roar_t*)data; + if (roar_vs_blocking(roar->vss, (state) ? ROAR_VS_FALSE : ROAR_VS_TRUE, NULL) < 0) + fprintf(stderr, "RetroArch [ERROR]: Can't set nonblocking. Will not be able to fast-forward.\n"); + roar->nonblocking = state; +} + +static bool ra_start(void *data) +{ + roar_t *roar = (roar_t*)data; + if (roar) + roar->is_paused = false; + return true; +} + +static void ra_free(void *data) +{ + roar_t *roar = (roar_t*)data; + roar_vs_close(roar->vss, ROAR_VS_TRUE, NULL); + free(data); +} + +static bool ra_use_float(void *data) +{ + return false; +} + +static size_t ra_write_avail(void *data) +{ + (void)data; + return 0; +} + +audio_driver_t audio_roar = { + ra_init, + ra_write, + ra_stop, + ra_start, + ra_alive, + ra_set_nonblock_state, + ra_free, + ra_use_float, + "roar", + NULL, + NULL, + ra_write_avail, + NULL +}; diff --git a/PVSupport/Sources/retro/audio/drivers/rsound.c b/PVSupport/Sources/retro/audio/drivers/rsound.c new file mode 100644 index 0000000000..7c7584c4e8 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/rsound.c @@ -0,0 +1,240 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include + +#include +#include + +#include "../audio_driver.h" +#include "rsound.h" + +typedef struct rsd +{ + rsound_t *rd; + bool nonblock; + bool is_paused; + volatile bool has_error; + + fifo_buffer_t *buffer; + + slock_t *cond_lock; + scond_t *cond; +} rsd_t; + +static ssize_t rsound_audio_cb(void *data, size_t bytes, void *userdata) +{ + rsd_t *rsd = (rsd_t*)userdata; + + size_t avail = fifo_read_avail(rsd->buffer); + size_t write_size = bytes > avail ? avail : bytes; + fifo_read(rsd->buffer, data, write_size); + scond_signal(rsd->cond); + + return write_size; +} + +static void err_cb(void *userdata) +{ + rsd_t *rsd = (rsd_t*)userdata; + rsd->has_error = true; + scond_signal(rsd->cond); +} + +static void *rs_init(const char *device, unsigned rate, unsigned latency) +{ + int channels, format; + rsd_t *rsd = (rsd_t*)calloc(1, sizeof(rsd_t)); + if (!rsd) + return NULL; + + rsound_t *rd; + + if (rsd_init(&rd) < 0) + { + free(rsd); + return NULL; + } + + rsd->cond_lock = slock_new(); + rsd->cond = scond_new(); + + rsd->buffer = fifo_new(1024 * 4); + + channels = 2; + format = RSD_S16_NE; + + rsd_set_param(rd, RSD_CHANNELS, &channels); + rsd_set_param(rd, RSD_SAMPLERATE, &rate); + rsd_set_param(rd, RSD_LATENCY, &latency); + + if (device) + rsd_set_param(rd, RSD_HOST, (void*)device); + + rsd_set_param(rd, RSD_FORMAT, &format); + + rsd_set_callback(rd, rsound_audio_cb, err_cb, 256, rsd); + + if (rsd_start(rd) < 0) + { + free(rsd); + rsd_free(rd); + return NULL; + } + + rsd->rd = rd; + return rsd; +} + +static ssize_t rs_write(void *data, const void *buf, size_t size) +{ + rsd_t *rsd = (rsd_t*)data; + + if (rsd->has_error) + return -1; + + if (rsd->nonblock) + { + size_t avail, write_amt; + + rsd_callback_lock(rsd->rd); + + avail = fifo_write_avail(rsd->buffer); + write_amt = avail > size ? size : avail; + + fifo_write(rsd->buffer, buf, write_amt); + rsd_callback_unlock(rsd->rd); + return write_amt; + } + else + { + size_t written = 0; + while (written < size && !rsd->has_error) + { + size_t avail; + rsd_callback_lock(rsd->rd); + + avail = fifo_write_avail(rsd->buffer); + + if (avail == 0) + { + rsd_callback_unlock(rsd->rd); + if (!rsd->has_error) + { + slock_lock(rsd->cond_lock); + scond_wait(rsd->cond, rsd->cond_lock); + slock_unlock(rsd->cond_lock); + } + } + else + { + size_t write_amt = size - written > avail ? avail : size - written; + fifo_write(rsd->buffer, (const char*)buf + written, write_amt); + rsd_callback_unlock(rsd->rd); + written += write_amt; + } + } + return written; + } +} + +static bool rs_stop(void *data) +{ + rsd_t *rsd = (rsd_t*)data; + rsd_stop(rsd->rd); + rsd->is_paused = true; + + return true; +} + +static void rs_set_nonblock_state(void *data, bool state) +{ + rsd_t *rsd = (rsd_t*)data; + rsd->nonblock = state; +} + +static bool rs_alive(void *data) +{ + rsd_t *rsd = (rsd_t*)data; + if (rsd) + return !rsd->is_paused; + return false; +} + +static bool rs_start(void *data) +{ + rsd_t *rsd = (rsd_t*)data; + if (rsd_start(rsd->rd) < 0) + return false; + rsd->is_paused = false; + + return true; +} + +static void rs_free(void *data) +{ + rsd_t *rsd = (rsd_t*)data; + + rsd_stop(rsd->rd); + rsd_free(rsd->rd); + + fifo_free(rsd->buffer); + slock_free(rsd->cond_lock); + scond_free(rsd->cond); + + free(rsd); +} + +static size_t rs_write_avail(void *data) +{ + rsd_t *rsd = (rsd_t*)data; + + if (rsd->has_error) + return 0; + rsd_callback_lock(rsd->rd); + size_t val = fifo_write_avail(rsd->buffer); + rsd_callback_unlock(rsd->rd); + return val; +} + +static size_t rs_buffer_size(void *data) +{ + (void)data; + return 1024 * 4; +} + +static bool rs_use_float(void *data) +{ + (void)data; + return false; +} + +audio_driver_t audio_rsound = { + rs_init, + rs_write, + rs_stop, + rs_start, + rs_alive, + rs_set_nonblock_state, + rs_free, + rs_use_float, + "rsound", + NULL, + NULL, + rs_write_avail, + rs_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/rsound.h b/PVSupport/Sources/retro/audio/drivers/rsound.h new file mode 100644 index 0000000000..645eaa8316 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/rsound.h @@ -0,0 +1,323 @@ +/* RSound - A PCM audio client/server + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RSound is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RSound is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RSound. + * If not, see . + */ + +#ifndef __RSOUND_H +#define __RSOUND_H + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +RETRO_BEGIN_DECLS + +#ifdef _WIN32 +#define RSD_DEFAULT_HOST "127.0.0.1" /* Stupid Windows. */ +#else +#define RSD_DEFAULT_HOST "localhost" +#endif +#define RSD_DEFAULT_PORT "12345" +#define RSD_DEFAULT_UNIX_SOCK "/tmp/rsound" +#define RSD_DEFAULT_OBJECT "rsound" + +#ifndef RSD_VERSION +#define RSD_VERSION "1.1" +#endif + +/* Feature tests */ +#define RSD_SAMPLERATE RSD_SAMPLERATE +#define RSD_CHANNELS RSD_CHANNELS +#define RSD_HOST RSD_HOST +#define RSD_PORT RSD_PORT +#define RSD_BUFSIZE RSD_BUFSIZE +#define RSD_LATENCY RSD_LATENCY +#define RSD_FORMAT RSD_FORMAT +#define RSD_IDENTITY RSD_IDENTITY + +#define RSD_S16_LE RSD_S16_LE +#define RSD_S16_BE RSD_S16_BE +#define RSD_U16_LE RSD_U16_LE +#define RSD_U16_BE RSD_U16_BE +#define RSD_U8 RSD_U8 +#define RSD_S8 RSD_S8 +#define RSD_S16_NE RSD_S16_NE +#define RSD_U16_NE RSD_U16_NE +#define RSD_ALAW RSD_ALAW +#define RSD_MULAW RSD_MULAW + +#define RSD_S32_LE RSD_S32_LE +#define RSD_S32_BE RSD_S32_BE +#define RSD_S32_NE RSD_S32_NE +#define RSD_U32_LE RSD_U32_LE +#define RSD_U32_BE RSD_U32_BE +#define RSD_U32_NE RSD_U32_NE + +#define RSD_DELAY_MS RSD_DELAY_MS +#define RSD_SAMPLESIZE RSD_SAMPLESIZE +#define RSD_EXEC RSD_EXEC +#define RSD_SIMPLE_START RSD_SIMPLE_START + +#define RSD_NO_FMT RSD_NO_FMT +#define RSD_USES_OPAQUE_TYPE RSD_USES_OPAQUE_TYPE +#define RSD_USES_SAMPLESIZE_MEMBER RSD_USES_SAMPLESIZE_MEMBER + +#define RSD_AUDIO_CALLBACK_T RSD_AUDIO_CALLBACK_T +#define RSD_ERROR_CALLBACK_T RSD_ERROR_CALLBACK_T +#define RSD_SET_CALLBACK RSD_SET_CALLBACK +#define RSD_CALLBACK_LOCK RSD_CALLBACK_LOCK +#define RSD_CALLBACK_UNLOCK RSD_CALLBACK_UNLOCK + +/* End feature tests */ + +/* Defines sample formats available. Defaults to S16_LE should it never be set. */ +enum rsd_format +{ + RSD_NO_FMT = 0x0000, + RSD_S16_LE = 0x0001, + RSD_S16_BE = 0x0002, + RSD_U16_LE = 0x0004, + RSD_U16_BE = 0x0008, + RSD_U8 = 0x0010, + RSD_S8 = 0x0020, + RSD_S16_NE = 0x0040, + RSD_U16_NE = 0x0080, + RSD_ALAW = 0x0100, + RSD_MULAW = 0x0200, + RSD_S32_LE = 0x0400, + RSD_S32_BE = 0x0800, + RSD_S32_NE = 0x1000, + RSD_U32_LE = 0x2000, + RSD_U32_BE = 0x4000, + RSD_U32_NE = 0x8000, +}; + +/* Defines operations that can be used with rsd_set_param() */ +enum rsd_settings +{ + RSD_SAMPLERATE = 0, + RSD_CHANNELS, + RSD_HOST, + RSD_PORT, + RSD_BUFSIZE, + RSD_LATENCY, + RSD_FORMAT, + RSD_IDENTITY +}; + +/* Audio callback for rsd_set_callback. Return -1 to trigger an error in the stream. */ +typedef ssize_t (*rsd_audio_callback_t)(void *data, size_t bytes, void *userdata); + +/* Error callback. Signals caller that stream has been stopped, + * either by audio callback returning -1 or stream was hung up. */ +typedef void (*rsd_error_callback_t)(void *userdata); + +/* Defines the main structure for use with the API. */ +typedef struct rsound +{ + struct + { + volatile int socket; + volatile int ctl_socket; + } conn; + + char *host; + char *port; + char *buffer; /* Obsolete, but kept for backwards header compatibility. */ + int conn_type; + + volatile int buffer_pointer; /* Obsolete, but kept for backwards header compatibility. */ + size_t buffer_size; + fifo_buffer_t *fifo_buffer; + + volatile int thread_active; + + int64_t total_written; + int64_t start_time; + volatile int has_written; + int bytes_in_buffer; + int delay_offset; + int max_latency; + + struct + { + uint32_t latency; + uint32_t chunk_size; + } backend_info; + + volatile int ready_for_data; + + uint32_t rate; + uint32_t channels; + uint16_t format; + int samplesize; + + struct + { + sthread_t *thread; + slock_t *mutex; + slock_t *cond_mutex; + scond_t *cond; + } thread; + + char identity[256]; + + rsd_audio_callback_t audio_callback; + rsd_error_callback_t error_callback; + size_t cb_max_size; + void *cb_data; + slock_t *cb_lock; +} rsound_t; + +/* -- API -- + All functions (except for rsd_write() return 0 for success, and -1 for error. errno is currently not set. */ + +/* Initializes an rsound_t structure. To make sure no memory leaks occur, you need to rsd_free() it after use. + A typical use of the API is as follows: + rsound_t *rd; + rsd_init(&rd); + rsd_set_param(rd, RSD_HOST, "foohost"); + *sets more params* + rsd_start(rd); + rsd_write(rd, buf, size); + rsd_stop(rd); + rsd_free(rd); + */ +int rsd_init (rsound_t **rd); + +/* This is a simpler function that initializes an rsound struct, sets params as given, + and starts the stream. Should this function fail, the structure will stay uninitialized. + Should NULL be passed in either host, port or ident, defaults will be used. */ + +int rsd_simple_start (rsound_t **rd, const char* host, const char* port, const char* ident, + int rate, int channels, enum rsd_format format); + +/* Sets params associated with an rsound_t. These options (int options) include: + +RSD_HOST: Server to connect to. Expects (char *) in param. +If not set, will default to environmental variable RSD_SERVER or "localhost". + +RSD_PORT: Set port. Expects (char *) in param. +If not set, will default to environmental variable RSD_PORT or "12345". + +RSD_CHANNELS: Set number of audio channels. Expects (int *) in param. Mandatory. + +RSD_SAMPLERATE: Set samplerate of audio stream. Expects (int *) in param. Mandatory. + +RSD_BUFSIZE: Sets internal buffersize for the stream. +Might be overridden if too small. +Expects (int *) in param. Optional. + +RSD_LATENCY: Sets maximum audio latency in milliseconds, +(must be used with rsd_delay_wait() or this will have no effect). +Most applications do not need this. +Might be overridden if too small. +Expects (int *) in param. Optional. + +RSD_FORMAT: Sets sample format. +It defaults to S16_LE, so you probably will not use this. +Expects (int *) in param, with available values found in the format enum. +If invalid format is given, param might be changed to reflect the sample format the library will use. + +RSD_IDENTITY: Sets an identity string associated with the client. +Takes a (char *) parameter with the stream name. +Will be truncated if longer than 256 bytes. + +*/ + +int rsd_set_param (rsound_t *rd, enum rsd_settings option, void* param); + +/* Enables use of the callback interface. This must be set when stream is not active. + When callback is active, use of the blocking interface is disabled. + Only valid functions to call after rsd_start() is stopping the stream with either rsd_pause() or rsd_stop(). Calling any other function is undefined. + The callback is called at regular intervals and is asynchronous, so thread safety must be ensured by the caller. + If not enough data can be given to the callback, librsound will fill the rest of the callback data with silence. + librsound will attempt to obey latency information given with RSD_LATENCY as given before calling rsd_start(). + max_size signifies the maximum size that will ever be requested by librsound. Set this to 0 to let librsound decide the maximum size. + Should an error occur to the stream, err_callback will be called, and the stream will be stopped. The stream can be started again. + + Callbacks can be disabled by setting callbacks to NULL. */ + +void rsd_set_callback (rsound_t *rd, rsd_audio_callback_t callback, rsd_error_callback_t err_callback, size_t max_size, void *userdata); + +/* Lock and unlock the callback. When the callback lock is aquired, the callback is guaranteed to not be executing. + The lock has to be unlocked afterwards. + Attemping to call several rsd_callback_lock() in succession might cause a deadlock. + The lock should be held for as short period as possible. + Try to avoid calling code that may block when holding the lock. */ +void rsd_callback_lock (rsound_t *rd); + +void rsd_callback_unlock (rsound_t *rd); + +/* Establishes connection to server. Might fail if connection can't be established or that one of + the mandatory options isn't set in rsd_set_param(). This needs to be called after params have been set + with rsd_set_param(), and before rsd_write(). */ +int rsd_start (rsound_t *rd); + +/* Shuts down the rsound data structures, but returns the file descriptor associated with the connection. + The control socket will be shut down. If this function returns a negative number, the exec failed, + but the data structures will not be teared down. + Should a valid file descriptor be returned, it will always be blocking. + This call will block until all internal buffers have been sent to the network. */ +int rsd_exec (rsound_t *rd); + +/* Disconnects from server. All audio data still in network buffer and other buffers will be dropped. + To continue playing, you will need to rsd_start() again. */ +int rsd_stop (rsound_t *rd); + +/* Writes from buf to the internal buffer. Might fail if no connection is established, + or there was an unexpected error. This function will block until all data has + been written to the buffer. This function will return the number of bytes written to the buffer, + or 0 should it fail (disconnection from server). You will have to restart the stream again should this occur. */ +size_t rsd_write (rsound_t *rd, const void* buf, size_t size); + +/* Gets the position of the buffer pointer. + Not really interesting for normal applications. + Might be useful for implementing rsound on top of other blocking APIs. + *NOTE* This function is deprecated, it should not be used in new applications. */ +size_t rsd_pointer (rsound_t *rd); + +/* Aquires how much data can be written to the buffer without blocking */ +size_t rsd_get_avail (rsound_t *rd); + +/* Aquires the latency at the moment for the audio stream. It is measured in bytes. Useful for syncing video and audio. */ +size_t rsd_delay (rsound_t *rd); + +/* Utility for returning latency in milliseconds. */ +size_t rsd_delay_ms (rsound_t *rd); + +/* Returns bytes per sample */ +int rsd_samplesize(rsound_t *rd); + +/* Will sleep until latency of stream reaches maximum allowed latency defined earlier by rsd_set_param - RSD_LATENCY + Useful for hard headed blocking I/O design where user defined latency is needed. If rsd_set_param hasn't been set + with RSD_LATENCY, this function will do nothing. */ +void rsd_delay_wait(rsound_t *rd); + +/* Pauses or unpauses a stream. pause -> enable = 1 + This function essentially calls on start() and stop(). This behavior might be changed later. */ +int rsd_pause (rsound_t *rd, int enable); + +/* Frees an rsound_t struct. Make sure that the stream is properly closed down with rsd_stop() before calling rsd_free(). */ +int rsd_free (rsound_t *rd); + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/audio/drivers/rwebaudio.c b/PVSupport/Sources/retro/audio/drivers/rwebaudio.c new file mode 100644 index 0000000000..6b83356b9f --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/rwebaudio.c @@ -0,0 +1,117 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" + +/* forward declarations */ +unsigned RWebAudioSampleRate(void); +void *RWebAudioInit(unsigned latency); +ssize_t RWebAudioWrite(const void *buf, size_t size); +bool RWebAudioStop(void); +bool RWebAudioStart(void); +void RWebAudioSetNonblockState(bool state); +void RWebAudioFree(void); +size_t RWebAudioWriteAvail(void); +size_t RWebAudioBufferSize(void); +static bool rwebaudio_is_paused; + +static void rwebaudio_free(void *data) +{ + RWebAudioFree(); +} + +static void *rwebaudio_init(const char *device, unsigned rate, unsigned latency) +{ + settings_t *settings = config_get_ptr(); + void *data = RWebAudioInit(latency); + + (void)device; + (void)rate; + + if (data) + settings->audio.out_rate = RWebAudioSampleRate(); + return data; +} + +static ssize_t rwebaudio_write(void *data, const void *buf, size_t size) +{ + (void)data; + return RWebAudioWrite(buf, size); +} + +static bool rwebaudio_stop(void *data) +{ + (void)data; + rwebaudio_is_paused = true; + return RWebAudioStop(); +} + +static void rwebaudio_set_nonblock_state(void *data, bool state) +{ + (void)data; + RWebAudioSetNonblockState(state); +} + +static bool rwebaudio_alive(void *data) +{ + (void)data; + return !rwebaudio_is_paused; +} + +static bool rwebaudio_start(void *data) +{ + (void)data; + rwebaudio_is_paused = false; + return RWebAudioStart(); +} + +static size_t rwebaudio_write_avail(void *data) +{ + (void)data; + return RWebAudioWriteAvail(); +} + +static size_t rwebaudio_buffer_size(void *data) +{ + (void)data; + return RWebAudioBufferSize(); +} + + static bool rwebaudio_use_float(void *data) +{ + (void)data; + return true; +} + +audio_driver_t audio_rwebaudio = { + rwebaudio_init, + rwebaudio_write, + rwebaudio_stop, + rwebaudio_start, + rwebaudio_alive, + rwebaudio_set_nonblock_state, + rwebaudio_free, + rwebaudio_use_float, + "rwebaudio", + NULL, + NULL, + rwebaudio_write_avail, + rwebaudio_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/sdl_audio.c b/PVSupport/Sources/retro/audio/drivers/sdl_audio.c new file mode 100644 index 0000000000..2afa8ef11d --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/sdl_audio.c @@ -0,0 +1,270 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include + +#include "SDL.h" +#include "SDL_audio.h" + +#include +#include +#include +#include + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +typedef struct sdl_audio +{ + bool nonblock; + bool is_paused; + +#ifdef HAVE_THREADS + slock_t *lock; + scond_t *cond; +#endif + fifo_buffer_t *buffer; +} sdl_audio_t; + +static void sdl_audio_cb(void *data, Uint8 *stream, int len) +{ + sdl_audio_t *sdl = (sdl_audio_t*)data; + size_t avail = fifo_read_avail(sdl->buffer); + size_t write_size = len > (int)avail ? avail : len; + + fifo_read(sdl->buffer, stream, write_size); +#ifdef HAVE_THREADS + scond_signal(sdl->cond); +#endif + + /* If underrun, fill rest with silence. */ + memset(stream + write_size, 0, len - write_size); +} + +static INLINE int find_num_frames(int rate, int latency) +{ + int frames = (rate * latency) / 1000; + + /* SDL only likes 2^n sized buffers. */ + + return next_pow2(frames); +} + +static void *sdl_audio_init(const char *device, + unsigned rate, unsigned latency) +{ + int frames; + size_t bufsize; + void *tmp; + SDL_AudioSpec out; + SDL_AudioSpec spec = {0}; + settings_t *settings = config_get_ptr(); + sdl_audio_t *sdl = NULL; + + (void)device; + + if (SDL_WasInit(0) == 0) + { + if (SDL_Init(SDL_INIT_AUDIO) < 0) + return NULL; + } + else if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) + return NULL; + + sdl = (sdl_audio_t*)calloc(1, sizeof(*sdl)); + if (!sdl) + return NULL; + + /* We have to buffer up some data ourselves, so we let SDL + * carry approximately half of the latency. + * + * SDL double buffers audio and we do as well. */ + frames = find_num_frames(rate, latency / 4); + + spec.freq = rate; + spec.format = AUDIO_S16SYS; + spec.channels = 2; + spec.samples = frames; /* This is in audio frames, not samples ... :( */ + spec.callback = sdl_audio_cb; + spec.userdata = sdl; + + if (SDL_OpenAudio(&spec, &out) < 0) + { + ELOG(@"Failed to open SDL audio: %s\n", SDL_GetError()); + free(sdl); + return 0; + } + + settings->audio.out_rate = out.freq; + +#ifdef HAVE_THREADS + sdl->lock = slock_new(); + sdl->cond = scond_new(); +#endif + + VLOG(@"SDL audio: Requested %u ms latency, got %d ms\n", + latency, (int)(out.samples * 4 * 1000 / settings->audio.out_rate)); + + /* Create a buffer twice as big as needed and prefill the buffer. */ + bufsize = out.samples * 4 * sizeof(int16_t); + tmp = calloc(1, bufsize); + sdl->buffer = fifo_new(bufsize); + + if (tmp) + { + fifo_write(sdl->buffer, tmp, bufsize); + free(tmp); + } + + SDL_PauseAudio(0); + return sdl; +} + +static ssize_t sdl_audio_write(void *data, const void *buf, size_t size) +{ + ssize_t ret = 0; + sdl_audio_t *sdl = (sdl_audio_t*)data; + + if (sdl->nonblock) + { + size_t avail, write_amt; + + SDL_LockAudio(); + avail = fifo_write_avail(sdl->buffer); + write_amt = avail > size ? size : avail; + fifo_write(sdl->buffer, buf, write_amt); + SDL_UnlockAudio(); + ret = write_amt; + } + else + { + size_t written = 0; + + while (written < size) + { + size_t avail; + + SDL_LockAudio(); + avail = fifo_write_avail(sdl->buffer); + + if (avail == 0) + { + SDL_UnlockAudio(); +#ifdef HAVE_THREADS + slock_lock(sdl->lock); + scond_wait(sdl->cond, sdl->lock); + slock_unlock(sdl->lock); +#endif + } + else + { + size_t write_amt = size - written > avail ? avail : size - written; + fifo_write(sdl->buffer, (const char*)buf + written, write_amt); + SDL_UnlockAudio(); + written += write_amt; + } + } + ret = written; + } + + return ret; +} + +static bool sdl_audio_stop(void *data) +{ + sdl_audio_t *sdl = (sdl_audio_t*)data; + sdl->is_paused = true; + SDL_PauseAudio(1); + return true; +} + +static bool sdl_audio_alive(void *data) +{ + sdl_audio_t *sdl = (sdl_audio_t*)data; + if (!sdl) + return false; + return !sdl->is_paused; +} + +static bool sdl_audio_start(void *data) +{ + sdl_audio_t *sdl = (sdl_audio_t*)data; + sdl->is_paused = false; + + SDL_PauseAudio(0); + return true; +} + +static void sdl_audio_set_nonblock_state(void *data, bool state) +{ + sdl_audio_t *sdl = (sdl_audio_t*)data; + if (sdl) + sdl->nonblock = state; +} + +static void sdl_audio_free(void *data) +{ + sdl_audio_t *sdl = (sdl_audio_t*)data; + + SDL_CloseAudio(); + SDL_QuitSubSystem(SDL_INIT_AUDIO); + + if (sdl) + { + fifo_free(sdl->buffer); +#ifdef HAVE_THREADS + slock_free(sdl->lock); + scond_free(sdl->cond); +#endif + } + free(sdl); +} + +static bool sdl_audio_use_float(void *data) +{ + (void)data; + return false; +} + +static size_t sdl_audio_write_avail(void *data) +{ + /* stub */ + (void)data; + return 0; +} + +audio_driver_t audio_sdl = { + sdl_audio_init, + sdl_audio_write, + sdl_audio_stop, + sdl_audio_start, + sdl_audio_alive, + sdl_audio_set_nonblock_state, + sdl_audio_free, + sdl_audio_use_float, +#ifdef HAVE_SDL2 + "sdl2", +#else + "sdl", +#endif + NULL, + NULL, + sdl_audio_write_avail, + NULL +}; diff --git a/PVSupport/Sources/retro/audio/drivers/xaudio.cpp b/PVSupport/Sources/retro/audio/drivers/xaudio.cpp new file mode 100644 index 0000000000..fd2b49f70d --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/xaudio.cpp @@ -0,0 +1,364 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#if !defined(_XBOX) && (_MSC_VER == 1310) +#ifndef _WIN32_DCOM +#define _WIN32_DCOM +#endif +#endif + +#include +#include +#include +#include +#include + +#include +#include + +#include "xaudio.h" + +#include "../audio_driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +typedef struct xaudio2 xaudio2_t; + +#define MAX_BUFFERS 16 + +#define MAX_BUFFERS_MASK (MAX_BUFFERS - 1) + +typedef struct +{ + xaudio2_t *xa; + bool nonblock; + bool is_paused; + size_t bufsize; +} xa_t; + +struct xaudio2 : public IXAudio2VoiceCallback +{ + xaudio2() : + buf(0), pXAudio2(0), pMasterVoice(0), + pSourceVoice(0), hEvent(0), buffers(0), bufsize(0), + bufptr(0), write_buffer(0) + {} + + virtual ~xaudio2() {} + + STDMETHOD_(void, OnBufferStart) (void *) {} + STDMETHOD_(void, OnBufferEnd) (void *) + { + InterlockedDecrement((LONG volatile*)&buffers); + SetEvent(hEvent); + } + STDMETHOD_(void, OnLoopEnd) (void *) {} + STDMETHOD_(void, OnStreamEnd) () {} + STDMETHOD_(void, OnVoiceError) (void *, HRESULT) {} + STDMETHOD_(void, OnVoiceProcessingPassEnd) () {} + STDMETHOD_(void, OnVoiceProcessingPassStart) (UINT32) {} + + uint8_t *buf; + IXAudio2 *pXAudio2; + IXAudio2MasteringVoice *pMasterVoice; + IXAudio2SourceVoice *pSourceVoice; + HANDLE hEvent; + + unsigned long volatile buffers; + unsigned bufsize; + unsigned bufptr; + unsigned write_buffer; +}; + +#if 0 +static void xaudio2_enumerate_devices(xaudio2_t *xa) +{ + uint32_t dev_count = 0; + unsigned i = 0; + + (void)xa; + (void)i; + (void)dev_count; +#ifndef _XBOX + xa->pXAudio2->GetDeviceCount(&dev_count); + fprintf(stderr, "XAudio2 devices:\n"); + + for (i = 0; i < dev_count; i++) + { + XAUDIO2_DEVICE_DETAILS dev_detail; + xa->pXAudio2->GetDeviceDetails(i, &dev_detail); + fwprintf(stderr, L"\t%u: %s\n", i, dev_detail.DisplayName); + } +#endif +} +#endif + +static void xaudio2_set_wavefmt(WAVEFORMATEX *wfx, + unsigned channels, unsigned samplerate) +{ + wfx->wFormatTag = WAVE_FORMAT_IEEE_FLOAT; + wfx->nBlockAlign = channels * sizeof(float); + wfx->wBitsPerSample = sizeof(float) * 8; + + wfx->nChannels = channels; + wfx->nSamplesPerSec = samplerate; + wfx->nAvgBytesPerSec = wfx->nSamplesPerSec * wfx->nBlockAlign; + wfx->cbSize = 0; +} + +static void xaudio2_free(xaudio2_t *handle) +{ + if (!handle) + return; + + if (handle->pSourceVoice) + { + handle->pSourceVoice->Stop(0, XAUDIO2_COMMIT_NOW); + handle->pSourceVoice->DestroyVoice(); + } + + if (handle->pMasterVoice) + handle->pMasterVoice->DestroyVoice(); + + if (handle->pXAudio2) + handle->pXAudio2->Release(); + + if (handle->hEvent) + CloseHandle(handle->hEvent); + + free(handle->buf); + delete handle; +} + +#ifndef COINIT_MULTITHREADED +#define COINIT_MULTITHREADED 0x00 +#endif + +static xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels, + size_t size, unsigned device) +{ + xaudio2_t *handle; + WAVEFORMATEX wfx = {0}; + +#ifndef _XBOX + CoInitializeEx(0, COINIT_MULTITHREADED); +#endif + + handle = new xaudio2; + + if (FAILED(XAudio2Create(&handle->pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR))) + goto error; + + if (FAILED(handle->pXAudio2->CreateMasteringVoice(&handle->pMasterVoice, + channels, samplerate, 0, device, NULL))) + goto error; + + xaudio2_set_wavefmt(&wfx, channels, samplerate); + + if (FAILED(handle->pXAudio2->CreateSourceVoice(&handle->pSourceVoice, &wfx, + XAUDIO2_VOICE_NOSRC, XAUDIO2_DEFAULT_FREQ_RATIO, + handle))) + goto error; + + handle->hEvent = CreateEvent(0, FALSE, FALSE, 0); + if (!handle->hEvent) + goto error; + + handle->bufsize = size / MAX_BUFFERS; + handle->buf = (uint8_t*)calloc(1, handle->bufsize * MAX_BUFFERS); + if (!handle->buf) + goto error; + + if (FAILED(handle->pSourceVoice->Start(0))) + goto error; + + return handle; + +error: + xaudio2_free(handle); + return NULL; +} + +static size_t xaudio2_write_avail(xaudio2_t *handle) +{ + return handle->bufsize * (MAX_BUFFERS - handle->buffers - 1); +} + +static size_t xaudio2_write(xaudio2_t *handle, const void *buf, size_t bytes_) +{ + unsigned bytes = bytes_; + const uint8_t *buffer = (const uint8_t*)buf; + + while (bytes) + { + unsigned need = MIN(bytes, handle->bufsize - handle->bufptr); + + memcpy(handle->buf + handle->write_buffer * handle->bufsize + handle->bufptr, + buffer, need); + + handle->bufptr += need; + buffer += need; + bytes -= need; + + if (handle->bufptr == handle->bufsize) + { + XAUDIO2_BUFFER xa2buffer = {0}; + + while (handle->buffers == MAX_BUFFERS - 1) + WaitForSingleObject(handle->hEvent, INFINITE); + + xa2buffer.AudioBytes = handle->bufsize; + xa2buffer.pAudioData = handle->buf + handle->write_buffer * handle->bufsize; + + if (FAILED(handle->pSourceVoice->SubmitSourceBuffer(&xa2buffer, NULL))) + return 0; + + InterlockedIncrement((LONG volatile*)&handle->buffers); + handle->bufptr = 0; + handle->write_buffer = (handle->write_buffer + 1) & MAX_BUFFERS_MASK; + } + } + + return bytes_; +} + +static void *xa_init(const char *device, unsigned rate, unsigned latency) +{ + size_t bufsize; + unsigned device_index = 0; + xa_t *xa = (xa_t*)calloc(1, sizeof(*xa)); + if (!xa) + return NULL; + + if (latency < 8) + latency = 8; /* Do not allow shenanigans. */ + + bufsize = latency * rate / 1000; + + VLOG(@"XAudio2: Requesting %u ms latency, using %d ms latency.\n", + latency, (int)bufsize * 1000 / rate); + + xa->bufsize = bufsize * 2 * sizeof(float); + + if (device) + device_index = strtoul(device, NULL, 0); + + xa->xa = xaudio2_new(rate, 2, xa->bufsize, device_index); + if (!xa->xa) + { + ELOG(@"Failed to init XAudio2.\n"); + free(xa); + return NULL; + } + + return xa; +} + +static ssize_t xa_write(void *data, const void *buf, size_t size) +{ + size_t ret; + xa_t *xa = (xa_t*)data; + + if (xa->nonblock) + { + size_t avail = xaudio2_write_avail(xa->xa); + + if (avail == 0) + return 0; + if (avail < size) + size = avail; + } + + ret = xaudio2_write(xa->xa, buf, size); + if (ret == 0 && size > 0) + return -1; + return ret; +} + +static bool xa_stop(void *data) +{ + xa_t *xa = (xa_t*)data; + xa->is_paused = true; + return true; +} + +static bool xa_alive(void *data) +{ + xa_t *xa = (xa_t*)data; + if (!xa) + return false; + return !xa->is_paused; +} + +static void xa_set_nonblock_state(void *data, bool state) +{ + xa_t *xa = (xa_t*)data; + if (xa) + xa->nonblock = state; +} + +static bool xa_start(void *data) +{ + xa_t *xa = (xa_t*)data; + xa->is_paused = false; + return true; +} + +static bool xa_use_float(void *data) +{ + (void)data; + return true; +} + +static void xa_free(void *data) +{ + xa_t *xa = (xa_t*)data; + + if (!xa) + return; + + if (xa->xa) + xaudio2_free(xa->xa); + free(xa); +} + +static size_t xa_write_avail(void *data) +{ + xa_t *xa = (xa_t*)data; + return xaudio2_write_avail(xa->xa); +} + +static size_t xa_buffer_size(void *data) +{ + xa_t *xa = (xa_t*)data; + return xa->bufsize; +} + +audio_driver_t audio_xa = { + xa_init, + xa_write, + xa_stop, + xa_start, + xa_alive, + xa_set_nonblock_state, + xa_free, + xa_use_float, + "xaudio", + NULL, + NULL, + xa_write_avail, + xa_buffer_size, +}; diff --git a/PVSupport/Sources/retro/audio/drivers/xaudio.h b/PVSupport/Sources/retro/audio/drivers/xaudio.h new file mode 100644 index 0000000000..fe30ac3efb --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/xaudio.h @@ -0,0 +1,284 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * Copyright (C) 2010-2014 - OV2 + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +// Kinda stripped down. Only contains the bare essentials used in RetroArch. + +#ifndef XAUDIO2_STRIPPED_H +#define XAUDIO2_STRIPPED_H + +#include + +// All structures defined in this file use tight field packing +#pragma pack(push, 1) +#define X2DEFAULT(x) = (x) + +#ifdef _XBOX +#include + +#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + DEFINE_GUID(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) +#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) + +DEFINE_CLSID(XAudio2, 3eda9b49, 2085, 498b, 9b, b2, 39, a6, 77, 84, 93, de); +DEFINE_CLSID(XAudio2_Debug, 47199894, 7cc2, 444d, 98, 73, ce, d2, 56, 2c, c6, 0e); +DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb); + +#include // Basic audio data types and constants + +#else + +#define WIN32_LEAN_AND_MEAN +#include +#include +#include +#include + +#define DEFINE_GUID_X(n, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + static const GUID n = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } +#define DEFINE_CLSID_X(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + DEFINE_GUID_X(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) +#define DEFINE_IID_X(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + DEFINE_GUID_X(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) + +DEFINE_CLSID_X(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af); // 2.7 +DEFINE_IID_X(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb); + +#endif + +#ifdef _XBOX +#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f +#else +#define XAUDIO2_DEFAULT_FREQ_RATIO 4.0f +#endif + +#define XAUDIO2_COMMIT_NOW 0 +#define XAUDIO2_DEFAULT_CHANNELS 0 +#define XAUDIO2_DEFAULT_SAMPLERATE 0 + +#define XAUDIO2_DEBUG_ENGINE 0x0001 +#define XAUDIO2_VOICE_NOSRC 0x0004 + +typedef enum XAUDIO2_DEVICE_ROLE +{ + NotDefaultDevice = 0x0, + DefaultConsoleDevice = 0x1, + DefaultMultimediaDevice = 0x2, + DefaultCommunicationsDevice = 0x4, + DefaultGameDevice = 0x8, + GlobalDefaultDevice = 0xf, + InvalidDeviceRole = ~GlobalDefaultDevice +} XAUDIO2_DEVICE_ROLE; + +#ifdef _XBOX +typedef enum XAUDIO2_XBOX_HWTHREAD_SPECIFIER +{ + XboxThread0 = 0x01, + XboxThread1 = 0x02, + XboxThread2 = 0x04, + XboxThread3 = 0x08, + XboxThread4 = 0x10, + XboxThread5 = 0x20, + XAUDIO2_ANY_PROCESSOR = XboxThread4, + XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR +} XAUDIO2_XBOX_HWTHREAD_SPECIFIER, XAUDIO2_PROCESSOR; +#else +typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER +{ + XAUDIO2_ANY_PROCESSOR = 0xffffffff, + XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR +} XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER, XAUDIO2_PROCESSOR; +#endif + +typedef enum XAUDIO2_FILTER_TYPE { + LowPassFilter, + BandPassFilter, + HighPassFilter +} XAUDIO2_FILTER_TYPE; + +typedef struct XAUDIO2_DEVICE_DETAILS +{ + WCHAR DeviceID[256]; + WCHAR DisplayName[256]; + XAUDIO2_DEVICE_ROLE Role; + WAVEFORMATEXTENSIBLE OutputFormat; +} XAUDIO2_DEVICE_DETAILS; + +// Forward declarations. +struct XAUDIO2_VOICE_DETAILS; +struct XAUDIO2_VOICE_SENDS; +struct XAUDIO2_EFFECT_DESCRIPTOR; +struct XAUDIO2_EFFECT_CHAIN; +struct XAUDIO2_FILTER_PARAMETERS; +struct XAUDIO2_BUFFER_WMA; +struct XAUDIO2_VOICE_STATE; +struct XAUDIO2_PERFORMANCE_DATA; +struct XAUDIO2_DEBUG_CONFIGURATION; +struct IXAudio2EngineCallback; +struct IXAudio2SubmixVoice; + +typedef struct XAUDIO2_BUFFER +{ + UINT32 Flags; + UINT32 AudioBytes; + const BYTE* pAudioData; + UINT32 PlayBegin; + UINT32 PlayLength; + UINT32 LoopBegin; + UINT32 LoopLength; + UINT32 LoopCount; + void *pContext; +} XAUDIO2_BUFFER; + +DECLARE_INTERFACE(IXAudio2VoiceCallback) +{ + STDMETHOD_(void, OnVoiceProcessingPassStart) (THIS_ UINT32 BytesRequired) PURE; + STDMETHOD_(void, OnVoiceProcessingPassEnd) (THIS) PURE; + STDMETHOD_(void, OnStreamEnd) (THIS) PURE; + STDMETHOD_(void, OnBufferStart) (THIS_ void *pBufferContext) PURE; + STDMETHOD_(void, OnBufferEnd) (THIS_ void *pBufferContext) PURE; + STDMETHOD_(void, OnLoopEnd) (THIS_ void *pBufferContext) PURE; + STDMETHOD_(void, OnVoiceError) (THIS_ void *pBufferContext, HRESULT Error) PURE; +}; + +DECLARE_INTERFACE(IXAudio2Voice) +{ +#define Declare_IXAudio2Voice_Methods() \ + STDMETHOD_(void, GetVoiceDetails) (THIS_ XAUDIO2_VOICE_DETAILS* pVoiceDetails) PURE; \ + STDMETHOD(SetOutputVoices) (THIS_ const XAUDIO2_VOICE_SENDS* pSendList) PURE; \ + STDMETHOD(SetEffectChain) (THIS_ const XAUDIO2_EFFECT_CHAIN* pEffectChain) PURE; \ + STDMETHOD(EnableEffect) (THIS_ UINT32 EffectIndex, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD(DisableEffect) (THIS_ UINT32 EffectIndex, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD_(void, GetEffectState) (THIS_ UINT32 EffectIndex, BOOL* pEnabled) PURE; \ + STDMETHOD(SetEffectParameters) (THIS_ UINT32 EffectIndex, \ + const void *pParameters, \ + UINT32 ParametersByteSize, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD(GetEffectParameters) (THIS_ UINT32 EffectIndex, void *pParameters, \ + UINT32 ParametersByteSize) PURE; \ + STDMETHOD(SetFilterParameters) (THIS_ const XAUDIO2_FILTER_PARAMETERS* pParameters, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD_(void, GetFilterParameters) (THIS_ XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \ + STDMETHOD_(void, SetOutputFilterParameters) (THIS_ IXAudio2Voice *voice, const XAUDIO2_FILTER_PARAMETERS* param, \ + UINT32 op X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD_(void, GetOutputFilterParameters) (THIS_ IXAudio2Voice *voice, XAUDIO2_FILTER_PARAMETERS* param) PURE; \ + STDMETHOD(SetVolume) (THIS_ float Volume, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD_(void, GetVolume) (THIS_ float* pVolume) PURE; \ + STDMETHOD(SetChannelVolumes) (THIS_ UINT32 Channels, const float* pVolumes, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD_(void, GetChannelVolumes) (THIS_ UINT32 Channels, float* pVolumes) PURE; \ + STDMETHOD(SetOutputMatrix) (THIS_ IXAudio2Voice* pDestinationVoice, \ + UINT32 SourceChannels, UINT32 DestinationChannels, \ + const float* pLevelMatrix, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + STDMETHOD_(void, GetOutputMatrix) (THIS_ IXAudio2Voice* pDestinationVoice, \ + UINT32 SourceChannels, UINT32 DestinationChannels, \ + float* pLevelMatrix) PURE; \ + STDMETHOD_(void, DestroyVoice) (THIS) PURE + + Declare_IXAudio2Voice_Methods(); +}; + +DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice) +{ + Declare_IXAudio2Voice_Methods(); +}; + +DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice) +{ + Declare_IXAudio2Voice_Methods(); + STDMETHOD(Start) (THIS_ UINT32 Flags, UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + STDMETHOD(Stop) (THIS_ UINT32 Flags, UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + STDMETHOD(SubmitSourceBuffer) (THIS_ const XAUDIO2_BUFFER* pBuffer, const XAUDIO2_BUFFER_WMA* pBufferWMA X2DEFAULT(NULL)) PURE; + STDMETHOD(FlushSourceBuffers) (THIS) PURE; + STDMETHOD(Discontinuity) (THIS) PURE; + STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + STDMETHOD_(void, GetState) (THIS_ XAUDIO2_VOICE_STATE* pVoiceState) PURE; + STDMETHOD(SetFrequencyRatio) (THIS_ float Ratio, + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + STDMETHOD_(void, GetFrequencyRatio) (THIS_ float* pRatio) PURE; +}; + + +DECLARE_INTERFACE_(IXAudio2, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvInterface) PURE; + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + STDMETHOD(GetDeviceCount) (THIS_ UINT32* pCount) PURE; + STDMETHOD(GetDeviceDetails) (THIS_ UINT32 Index, XAUDIO2_DEVICE_DETAILS* pDeviceDetails) PURE; + STDMETHOD(Initialize) (THIS_ UINT32 Flags X2DEFAULT(0), + XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR)) PURE; + STDMETHOD(RegisterForCallbacks) (IXAudio2EngineCallback* pCallback) PURE; + STDMETHOD_(void, UnregisterForCallbacks) (IXAudio2EngineCallback* pCallback) PURE; + STDMETHOD(CreateSourceVoice) (THIS_ IXAudio2SourceVoice** ppSourceVoice, + const WAVEFORMATEX* pSourceFormat, + UINT32 Flags X2DEFAULT(0), + float MaxFrequencyRatio X2DEFAULT(XAUDIO2_DEFAULT_FREQ_RATIO), + IXAudio2VoiceCallback* pCallback X2DEFAULT(NULL), + const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL), + const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE; + STDMETHOD(CreateSubmixVoice) (THIS_ IXAudio2SubmixVoice** ppSubmixVoice, + UINT32 InputChannels, UINT32 InputSampleRate, + UINT32 Flags X2DEFAULT(0), UINT32 ProcessingStage X2DEFAULT(0), + const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL), + const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE; + STDMETHOD(CreateMasteringVoice) (THIS_ IXAudio2MasteringVoice** ppMasteringVoice, + UINT32 InputChannels X2DEFAULT(XAUDIO2_DEFAULT_CHANNELS), + UINT32 InputSampleRate X2DEFAULT(XAUDIO2_DEFAULT_SAMPLERATE), + UINT32 Flags X2DEFAULT(0), UINT32 DeviceIndex X2DEFAULT(0), + const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE; + STDMETHOD(StartEngine) (THIS) PURE; + STDMETHOD_(void, StopEngine) (THIS) PURE; + STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE; + STDMETHOD_(void, GetPerformanceData) (THIS_ XAUDIO2_PERFORMANCE_DATA* pPerfData) PURE; + STDMETHOD_(void, SetDebugConfiguration) (THIS_ const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration, + void *pReserved X2DEFAULT(NULL)) PURE; +}; + +#ifdef _XBOX +STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0), + XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR)); +#else +static INLINE HRESULT XAudio2Create(IXAudio2 **ppXAudio2, UINT32, XAUDIO2_PROCESSOR) +{ + IXAudio2 *pXAudio2; + + HRESULT hr = CoCreateInstance(CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, IID_IXAudio2, (void**)&pXAudio2); + + if (SUCCEEDED(hr)) + { + //hr = IXAudio2_Initialize(pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR); + hr = pXAudio2->Initialize(0, XAUDIO2_DEFAULT_PROCESSOR); + if (SUCCEEDED(hr)) + *ppXAudio2 = pXAudio2; + else + //IXAudio2_Release(pXAudio2); + pXAudio2->Release(); + } + return hr; +} +#endif + +// Undo the #pragma pack(push, 1) directive at the top of this file +#pragma pack(pop) + +#endif + diff --git a/PVSupport/Sources/retro/audio/drivers/xenon360_audio.c b/PVSupport/Sources/retro/audio/drivers/xenon360_audio.c new file mode 100644 index 0000000000..5b67b318f4 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers/xenon360_audio.c @@ -0,0 +1,153 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#include + +#include + +#include "../audio_driver.h" +#include "../../configuration.h" + +#define SOUND_FREQUENCY 48000 +#define MAX_BUFFER 2048 + +typedef struct +{ + uint32_t buffer[2048]; + bool nonblock; + bool is_paused; +} xenon_audio_t; + +static void *xenon360_audio_init(const char *device, + unsigned rate, unsigned latency) +{ + static bool inited = false; + settings_t *settings = config_get_ptr(); + + if (!inited) + { + xenon_sound_init(); + inited = true; + } + + settings->audio.out_rate = SOUND_FREQUENCY; + return calloc(1, sizeof(xenon_audio_t)); +} + +static INLINE uint32_t bswap_32(uint32_t val) +{ + return (val >> 24) | (val << 24) | + ((val >> 8) & 0xff00) | ((val << 8) & 0xff0000); +} + +static ssize_t xenon360_audio_write(void *data, const void *buf, size_t size) +{ + size_t written = 0, i; + const uint32_t *in_buf = buf; + xenon_audio_t *xa = data; + + for (i = 0; i < (size >> 2); i++) + xa->buffer[i] = bswap_32(in_buf[i]); + + if (!xa->nonblock) + { + while (xenon_sound_get_unplayed() >= MAX_BUFFER) + { + /* libxenon doesn't have proper + * synchronization primitives for this... */ + udelay(50); + } + + xenon_sound_submit(xa->buffer, size); + written = size; + } + else + { + if (xenon_sound_get_unplayed() < MAX_BUFFER) + { + xenon_sound_submit(xa->buffer, size); + written = size; + } + } + + return written; +} + +static bool xenon360_audio_stop(void *data) +{ + xenon_audio_t *xa = data; + xa->is_paused = true; + return true; +} + +static bool xenon360_audio_alive(void *data) +{ + xenon_audio_t *xa = data; + if (!xa) + return false; + return !xa->is_paused; +} + +static void xenon360_audio_set_nonblock_state(void *data, bool state) +{ + xenon_audio_t *xa = data; + if (xa) + xa->nonblock = state; +} + +static bool xenon360_audio_start(void *data) +{ + xenon_audio_t *xa = data; + xa->is_paused = false; + return true; +} + +static void xenon360_audio_free(void *data) +{ + if (data) + free(data); +} + +static bool xenon360_use_float(void *data) +{ + (void)data; + return false; +} + +static size_t xenon360_write_avail(void *data) +{ + (void)data; + return 0; +} + +audio_driver_t audio_xenon360 = { + xenon360_audio_init, + xenon360_audio_write, + xenon360_audio_stop, + xenon360_audio_start, + xenon360_audio_alive, + xenon360_audio_set_nonblock_state, + xenon360_audio_free, + xenon360_use_float, + "xenon360", + NULL, + NULL, + xenon360_write_avail, + NULL +}; diff --git a/PVSupport/Sources/retro/audio/drivers_resampler/cc_resampler.c b/PVSupport/Sources/retro/audio/drivers_resampler/cc_resampler.c new file mode 100644 index 0000000000..02ee695b8f --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers_resampler/cc_resampler.c @@ -0,0 +1,549 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2014-2016 - Ali Bouhlel ( aliaspider@gmail.com ) + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +/* Convoluted Cosine Resampler */ + +#include +#include + +#ifdef __SSE__ +#include +#endif + +#include +#include +#include + +#include "../audio_resampler_driver.h" + +/* Since SSE and NEON don't provide support for trigonometric functions + * we approximate those with polynoms + * + * CC_RESAMPLER_PRECISION defines how accurate the approximation is + * a setting of 5 or more means full precison. + * setting 0 doesn't use a polynom + * setting 1 uses P(X) = X - (3/4)*X^3 + (1/4)*X^5 + * + * only 0 and 1 are implemented for SSE and NEON currently + * + * the MIPS_ARCH_ALLEGREX target doesnt require this setting since it has + * native support for the required functions so it will always use full precision. + */ + +#ifndef CC_RESAMPLER_PRECISION +#define CC_RESAMPLER_PRECISION 1 +#endif + +typedef struct rarch_CC_resampler +{ + audio_frame_float_t buffer[4]; + + float distance; + void (*process)(void *re, struct resampler_data *data); +} rarch_CC_resampler_t; + + +#ifdef _MIPS_ARCH_ALLEGREX +static void resampler_CC_process(void *re_, struct resampler_data *data) +{ + float ratio, fraction; + audio_frame_float_t *inp = (audio_frame_float_t*)data->data_in; + audio_frame_float_t *inp_max = (audio_frame_float_t*) + (inp + data->input_frames); + audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out; + + (void)re_; + + __asm__ ( + ".set push\n" + ".set noreorder\n" + + "mtv %2, s700 \n" /* 700 = data->ratio = b */ + /* "vsat0.s s700, s700 \n" */ + "vrcp.s s701, s700 \n" /* 701 = 1.0 / b */ + "vadd.s s702, s700, s700 \n" /* 702 = 2 * b */ + "vmul.s s703, s700, s710 \n" /* 703 = b * pi */ + + "mfv %0, s701 \n" + "mfv %1, s730 \n" + + ".set pop\n" + : "=r"(ratio), "=r"(fraction) + : "r"((float)data->ratio) + ); + + for (;;) + { + while (fraction < ratio) + { + if (inp == inp_max) + goto done; + __asm__ ( + ".set push \n" + ".set noreorder \n" + + "lv.s s620, 0(%1) \n" + "lv.s s621, 4(%1) \n" + + "vsub.s s731, s701, s730 \n" + + "vadd.q c600, c730[-X,Y,-X,Y], c730[1/2,1/2,-1/2,-1/2]\n" + + "vmul.q c610, c600, c700[Z,Z,Z,Z] \n" /* *2*b */ + "vmul.q c600, c600, c700[W,W,W,W] \n" /* *b*pi */ + "vsin.q c610, c610 \n" + "vadd.q c600, c600, c610 \n" + + "vmul.q c600[-1:1,-1:1,-1:1,-1:1], c600, c710[Y,Y,Y,Y] \n" + + "vsub.p c600, c600, c602 \n" + + "vmul.q c620, c620[X,Y,X,Y], c600[X,X,Y,Y] \n" + + "vadd.q c720, c720, c620 \n" + + + "vadd.s s730, s730, s730[1] \n" + "mfv %0, s730 \n" + + ".set pop \n" + : "=r"(fraction) + : "r"(inp)); + + inp++; + } + __asm__ ( + ".set push \n" + ".set noreorder \n" + + "vmul.p c720, c720, c720[1/2,1/2] \n" + "sv.s s720, 0(%1) \n" + "sv.s s721, 4(%1) \n" + "vmov.q c720, c720[Z,W,0,0] \n" + "vsub.s s730, s730, s701 \n" + "mfv %0, s730 \n" + + ".set pop \n" + : "=r"(fraction) + : "r"(outp)); + + outp++; + } + + /* The VFPU state is assumed to remain intact + * in-between calls to resampler_CC_process. */ + +done: + data->output_frames = outp - (audio_frame_float_t*)data->data_out; +} + +static void *resampler_CC_init(const struct resampler_config *config, + double bandwidth_mod, resampler_simd_mask_t mask) +{ + (void)mask; + (void)bandwidth_mod; + (void)config; + + __asm__ ( + ".set push\n" + ".set noreorder\n" + + "vcst.s s710, VFPU_PI \n" /* 710 = pi */ + "vcst.s s711, VFPU_1_PI \n" /* 711 = 1.0 / (pi) */ + + "vzero.q c720 \n" + "vzero.q c730 \n" + + ".set pop\n"); + + return (void*)-1; +} +#else + +#if defined(__SSE__) +#define CC_RESAMPLER_IDENT "SSE" + +static void resampler_CC_downsample(void *re_, struct resampler_data *data) +{ + rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)re_; + + audio_frame_float_t *inp = (audio_frame_float_t*)data->data_in; + audio_frame_float_t *inp_max = (audio_frame_float_t*)(inp + data->input_frames); + audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out; + float ratio = 1.0 / data->ratio; + float b = data->ratio; /* cutoff frequency. */ + + __m128 vec_previous = _mm_loadu_ps((float*)&re->buffer[0]); + __m128 vec_current = _mm_loadu_ps((float*)&re->buffer[2]); + + while (inp != inp_max) + { + __m128 vec_ww1, vec_ww2; + __m128 vec_w_previous; + __m128 vec_w_current; + __m128 vec_in; + __m128 vec_ratio = + _mm_mul_ps(_mm_set_ps1(ratio), _mm_set_ps(3.0, 2.0, 1.0, 0.0)); + __m128 vec_w = _mm_sub_ps(_mm_set_ps1(re->distance), vec_ratio); + + __m128 vec_w1 = _mm_add_ps(vec_w , _mm_set_ps1(0.5)); + __m128 vec_w2 = _mm_sub_ps(vec_w , _mm_set_ps1(0.5)); + + __m128 vec_b = _mm_set_ps1(b); + + vec_w1 = _mm_mul_ps(vec_w1, vec_b); + vec_w2 = _mm_mul_ps(vec_w2, vec_b); + + (void)vec_ww1; + (void)vec_ww2; + +#if (CC_RESAMPLER_PRECISION > 0) + vec_ww1 = _mm_mul_ps(vec_w1, vec_w1); + vec_ww2 = _mm_mul_ps(vec_w2, vec_w2); + + + vec_ww1 = _mm_mul_ps(vec_ww1, _mm_sub_ps(_mm_set_ps1(3.0),vec_ww1)); + vec_ww2 = _mm_mul_ps(vec_ww2, _mm_sub_ps(_mm_set_ps1(3.0),vec_ww2)); + + vec_ww1 = _mm_mul_ps(_mm_set_ps1(1.0/4.0), vec_ww1); + vec_ww2 = _mm_mul_ps(_mm_set_ps1(1.0/4.0), vec_ww2); + + vec_w1 = _mm_mul_ps(vec_w1, _mm_sub_ps(_mm_set_ps1(1.0), vec_ww1)); + vec_w2 = _mm_mul_ps(vec_w2, _mm_sub_ps(_mm_set_ps1(1.0), vec_ww2)); +#endif + + vec_w1 = _mm_min_ps(vec_w1, _mm_set_ps1( 0.5)); + vec_w2 = _mm_min_ps(vec_w2, _mm_set_ps1( 0.5)); + vec_w1 = _mm_max_ps(vec_w1, _mm_set_ps1(-0.5)); + vec_w2 = _mm_max_ps(vec_w2, _mm_set_ps1(-0.5)); + vec_w = _mm_sub_ps(vec_w1, vec_w2); + + vec_w_previous = + _mm_shuffle_ps(vec_w,vec_w,_MM_SHUFFLE(1, 1, 0, 0)); + vec_w_current = + _mm_shuffle_ps(vec_w,vec_w,_MM_SHUFFLE(3, 3, 2, 2)); + + vec_in = _mm_loadl_pi(_mm_setzero_ps(),(__m64*)inp); + vec_in = _mm_shuffle_ps(vec_in,vec_in,_MM_SHUFFLE(1, 0, 1, 0)); + + vec_previous = + _mm_add_ps(vec_previous, _mm_mul_ps(vec_in, vec_w_previous)); + vec_current = + _mm_add_ps(vec_current, _mm_mul_ps(vec_in, vec_w_current)); + + re->distance++; + inp++; + + if (re->distance > (ratio + 0.5)) + { + _mm_storel_pi((__m64*)outp, vec_previous); + vec_previous = + _mm_shuffle_ps(vec_previous,vec_current,_MM_SHUFFLE(1, 0, 3, 2)); + vec_current = + _mm_shuffle_ps(vec_current,_mm_setzero_ps(),_MM_SHUFFLE(1, 0, 3, 2)); + + re->distance -= ratio; + outp++; + } + } + + _mm_storeu_ps((float*)&re->buffer[0], vec_previous); + _mm_storeu_ps((float*)&re->buffer[2], vec_current); + + data->output_frames = outp - (audio_frame_float_t*)data->data_out; +} + +static void resampler_CC_upsample(void *re_, struct resampler_data *data) +{ + rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)re_; + audio_frame_float_t *inp = (audio_frame_float_t*)data->data_in; + audio_frame_float_t *inp_max = (audio_frame_float_t*)(inp + data->input_frames); + audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out; + float b = MIN(data->ratio, 1.00); /* cutoff frequency. */ + float ratio = 1.0 / data->ratio; + __m128 vec_previous = _mm_loadu_ps((float*)&re->buffer[0]); + __m128 vec_current = _mm_loadu_ps((float*)&re->buffer[2]); + + while (inp != inp_max) + { + __m128 vec_in = _mm_loadl_pi(_mm_setzero_ps(),(__m64*)inp); + vec_previous = + _mm_shuffle_ps(vec_previous,vec_current,_MM_SHUFFLE(1, 0, 3, 2)); + vec_current = + _mm_shuffle_ps(vec_current,vec_in,_MM_SHUFFLE(1, 0, 3, 2)); + + while (re->distance < 1.0) + { + __m128 vec_w_previous, vec_w_current, vec_out; +#if (CC_RESAMPLER_PRECISION > 0) + __m128 vec_ww1, vec_ww2; +#endif + __m128 vec_w = + _mm_add_ps(_mm_set_ps1(re->distance), _mm_set_ps(-2.0, -1.0, 0.0, 1.0)); + + __m128 vec_w1 = _mm_add_ps(vec_w , _mm_set_ps1(0.5)); + __m128 vec_w2 = _mm_sub_ps(vec_w , _mm_set_ps1(0.5)); + + __m128 vec_b = _mm_set_ps1(b); + vec_w1 = _mm_mul_ps(vec_w1, vec_b); + vec_w2 = _mm_mul_ps(vec_w2, vec_b); + +#if (CC_RESAMPLER_PRECISION > 0) + vec_ww1 = _mm_mul_ps(vec_w1, vec_w1); + vec_ww2 = _mm_mul_ps(vec_w2, vec_w2); + + + vec_ww1 = _mm_mul_ps(vec_ww1,_mm_sub_ps(_mm_set_ps1(3.0),vec_ww1)); + vec_ww2 = _mm_mul_ps(vec_ww2,_mm_sub_ps(_mm_set_ps1(3.0),vec_ww2)); + + vec_ww1 = _mm_mul_ps(_mm_set_ps1(1.0 / 4.0), vec_ww1); + vec_ww2 = _mm_mul_ps(_mm_set_ps1(1.0 / 4.0), vec_ww2); + + vec_w1 = _mm_mul_ps(vec_w1, _mm_sub_ps(_mm_set_ps1(1.0), vec_ww1)); + vec_w2 = _mm_mul_ps(vec_w2, _mm_sub_ps(_mm_set_ps1(1.0), vec_ww2)); +#endif + + vec_w1 = _mm_min_ps(vec_w1, _mm_set_ps1( 0.5)); + vec_w2 = _mm_min_ps(vec_w2, _mm_set_ps1( 0.5)); + vec_w1 = _mm_max_ps(vec_w1, _mm_set_ps1(-0.5)); + vec_w2 = _mm_max_ps(vec_w2, _mm_set_ps1(-0.5)); + + vec_w = _mm_sub_ps(vec_w1, vec_w2); + + vec_w_previous = _mm_shuffle_ps(vec_w,vec_w,_MM_SHUFFLE(1, 1, 0, 0)); + vec_w_current = _mm_shuffle_ps(vec_w,vec_w,_MM_SHUFFLE(3, 3, 2, 2)); + + vec_out = _mm_mul_ps(vec_previous, vec_w_previous); + vec_out = _mm_add_ps(vec_out, _mm_mul_ps(vec_current, vec_w_current)); + vec_out = + _mm_add_ps(vec_out, _mm_shuffle_ps(vec_out,vec_out,_MM_SHUFFLE(3, 2, 3, 2))); + + _mm_storel_pi((__m64*)outp,vec_out); + + re->distance += ratio; + outp++; + } + + re->distance -= 1.0; + inp++; + } + + _mm_storeu_ps((float*)&re->buffer[0], vec_previous); + _mm_storeu_ps((float*)&re->buffer[2], vec_current); + + data->output_frames = outp - (audio_frame_float_t*)data->data_out; +} + + +#elif defined (__ARM_NEON__) + +#define CC_RESAMPLER_IDENT "NEON" + +size_t resampler_CC_downsample_neon(float *outp, const float *inp, + rarch_CC_resampler_t* re_, size_t input_frames, float ratio); +size_t resampler_CC_upsample_neon (float *outp, const float *inp, + rarch_CC_resampler_t* re_, size_t input_frames, float ratio); + +static void resampler_CC_downsample(void *re_, struct resampler_data *data) +{ + data->output_frames = resampler_CC_downsample_neon( + data->data_out, data->data_in, re_, data->input_frames, data->ratio); +} + +static void resampler_CC_upsample(void *re_, struct resampler_data *data) +{ + data->output_frames = resampler_CC_upsample_neon( + data->data_out, data->data_in, re_, data->input_frames, data->ratio); +} + +#else + +/* C reference version. Not optimized. */ + +#define CC_RESAMPLER_IDENT "C" + +#if (CC_RESAMPLER_PRECISION > 4) +static INLINE float cc_int(float x, float b) +{ + float val = x * b * M_PI + sinf(x * b * M_PI); + return (val > M_PI) ? M_PI : (val < -M_PI) ? -M_PI : val; +} + +#define cc_kernel(x, b) ((cc_int((x) + 0.5, (b)) - cc_int((x) - 0.5, (b))) / (2.0 * M_PI)) +#else +static INLINE float cc_int(float x, float b) +{ + float val = x * b; +#if (CC_RESAMPLER_PRECISION > 0) + val = val*(1 - 0.25 * val * val * (3.0 - val * val)); +#endif + return (val > 0.5) ? 0.5 : (val < -0.5) ? -0.5 : val; +} + +#define cc_kernel(x, b) ((cc_int((x) + 0.5, (b)) - cc_int((x) - 0.5, (b)))) +#endif + +static INLINE void add_to(const audio_frame_float_t *source, + audio_frame_float_t *target, float ratio) +{ + target->l += source->l * ratio; + target->r += source->r * ratio; +} + +static void resampler_CC_downsample(void *re_, struct resampler_data *data) +{ + rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)re_; + audio_frame_float_t *inp = (audio_frame_float_t*)data->data_in; + audio_frame_float_t *inp_max = (audio_frame_float_t*) + (inp + data->input_frames); + audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out; + float ratio = 1.0 / data->ratio; + float b = data->ratio; /* cutoff frequency. */ + + while (inp != inp_max) + { + add_to(inp, re->buffer + 0, cc_kernel(re->distance, b)); + add_to(inp, re->buffer + 1, cc_kernel(re->distance - ratio, b)); + add_to(inp, re->buffer + 2, cc_kernel(re->distance - ratio - ratio, b)); + + re->distance++; + inp++; + + if (re->distance > (ratio + 0.5)) + { + *outp = re->buffer[0]; + + re->buffer[0] = re->buffer[1]; + re->buffer[1] = re->buffer[2]; + + re->buffer[2].l = 0.0; + re->buffer[2].r = 0.0; + + re->distance -= ratio; + outp++; + } + } + + data->output_frames = outp - (audio_frame_float_t*)data->data_out; +} + +static void resampler_CC_upsample(void *re_, struct resampler_data *data) +{ + rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)re_; + audio_frame_float_t *inp = (audio_frame_float_t*)data->data_in; + audio_frame_float_t *inp_max = (audio_frame_float_t*) + (inp + data->input_frames); + audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out; + float b = MIN(data->ratio, 1.00); /* cutoff frequency. */ + float ratio = 1.0 / data->ratio; + + while (inp != inp_max) + { + re->buffer[0] = re->buffer[1]; + re->buffer[1] = re->buffer[2]; + re->buffer[2] = re->buffer[3]; + re->buffer[3] = *inp; + + while (re->distance < 1.0) + { + int i; + + outp->l = 0.0; + outp->r = 0.0; + + for (i = 0; i < 4; i++) + { + float temp = cc_kernel(re->distance + 1.0 - i, b); + outp->l += re->buffer[i].l * temp; + outp->r += re->buffer[i].r * temp; + } + + re->distance += ratio; + outp++; + } + + re->distance -= 1.0; + inp++; + } + + data->output_frames = outp - (audio_frame_float_t*)data->data_out; +} +#endif + +static void resampler_CC_process(void *re_, struct resampler_data *data) +{ + rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)re_; + if (re) + re->process(re_, data); +} + + +static void *resampler_CC_init(const struct resampler_config *config, + double bandwidth_mod, resampler_simd_mask_t mask) +{ + int i; + rarch_CC_resampler_t *re = (rarch_CC_resampler_t*) + memalign_alloc(32, sizeof(rarch_CC_resampler_t)); + + /* TODO: lookup if NEON support can be detected at + * runtime and a funcptr set at runtime for either + * C codepath or NEON codepath. This will help out + * Android. */ + (void)mask; + (void)config; + if (!re) + return NULL; + + for (i = 0; i < 4; i++) + { + re->buffer[i].l = 0.0; + re->buffer[i].r = 0.0; + } + + /* Variations of data->ratio around 0.75 are safer + * than around 1.0 for both up/downsampler. */ + if (bandwidth_mod < 0.75) + { + re->process = resampler_CC_downsample; + re->distance = 0.0; + } + else + { + re->process = resampler_CC_upsample; + re->distance = 2.0; + } + + return re; +} +#endif + +static void resampler_CC_free(void *re_) +{ +#ifndef _MIPS_ARCH_ALLEGREX + rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)re_; + if (re) + memalign_free(re); +#endif + (void)re_; +} + +rarch_resampler_t CC_resampler = { + resampler_CC_init, + resampler_CC_process, + resampler_CC_free, + RESAMPLER_API_VERSION, + "CC", + "cc" +}; diff --git a/PVSupport/Sources/retro/audio/drivers_resampler/cc_resampler_neon.S b/PVSupport/Sources/retro/audio/drivers_resampler/cc_resampler_neon.S new file mode 100644 index 0000000000..c0c0ecfa6e --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers_resampler/cc_resampler_neon.S @@ -0,0 +1,371 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2014-2015 - Ali Bouhlel ( aliaspider@gmail.com ) + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#if defined(__ARM_NEON__) + +#ifndef CC_RESAMPLER_PRECISION +#define CC_RESAMPLER_PRECISION 1 +#endif + +#ifndef __MACH__ +.arm +#endif +.align 4 +.globl resampler_CC_downsample_neon +.globl _resampler_CC_downsample_neon + +# size_t resampler_CC_downsample_neon(float *outp, const float *inp, +# rarch_CC_resampler_t* re_, size_t input_frames, float ratio); + +# r0: outp initial (and output_frames return value) +# r1: inp initial/current +# r2: re_ [r2+0] --> {q14,q15}=buffer , [r2+32] --> s5=distance +# r3: input_frames/inp_max +# r4: outp current +# r5: +# r6: +# r7: + +# q0: d0: s0: 0.0 # q4: d8: s16: min(ratio, 1.0) +# s1: 1.0 # s17: min(ratio, 1.0) +# d1: s2: 2.0 # d9: s18: min(ratio, 1.0) +# s3: 3.0 # s19: min(ratio, 1.0) +# q1: d2: s4: ratio # q5: d10: s20: 1.0 +# s5: distance # s21: 1.0 +# d3: s6: (1.0/ratio) # d11: s22: 1.0 +# s7: (1.0/ratio)+0.5 # s23: 1.0 +# q2: d4: s8: 0.5 # q6: d12: s24: 3.0 +# s9: 0.5 # s25: 3.0 +# d5: s10: 0.5 # d13: s26: 3.0 +# s11: 0.5 # s27: 3.0 +# q3: d6: s12: -0.5 # q7: d14: s28: 0.25 +# s13: -0.5 # s29: 0.25 +# d7: s14: -0.5 # d15: s30: 0.25 +# s15: -0.5 # s31: 0.25 + +# q8: d16: (temp) # q12: d24: (temp) +# (temp) # (temp) +# d17: (temp) # d25: (temp) +# (temp) # (temp) +# q9: d18: (temp) # q13: d26: (temp) +# (temp) # (temp) +# d19: (temp) # d27: (temp) +# (temp) # (temp) +# q10: d20: (temp) # q14: d28: buffer[0] +# (temp) # buffer[1] +# d21: (temp) # d29: buffer[2] +# (temp) # buffer[3] +# q11: d22: (temp) # q15: d30: buffer[4] +# (temp) # buffer[5] +# d23: (temp) # d31: buffer[6] +# (temp) # buffer[7] + + +resampler_CC_downsample_neon: +_resampler_CC_downsample_neon: + +vld1.f32 {q14-q15}, [r2, :256] +vldr s4, [sp] +vpush {q4,q5,q6,q7} +push {r4} + +mov r4, r0 + + +veor q0, q0, q0 +vmov.f32 s1, #1.0 +vmov.f32 s2, #2.0 +vmov.f32 s3, #3.0 + +vmov.f32 q2, #0.5 +vmov.f32 q3, #-0.5 + +vmov.f32 q5, #1.0 +vmov.f32 q6, #3.0 +vmov.f32 q7, #0.25 + + +vldr s5, [r2, #32] +vdiv.f32 s6, s20, s4 +vadd.f32 s7, s6, s8 +vdup.f32 q4, d2[0] +vmin.f32 q4, q4, q5 + + +lsl r3, #3 +add r3, r3, r1 + + +cmp r3, r1 +beq 3f +1: + +vdup.f32 q8, d3[0] +vmul.f32 q8, q8, q0 +vdup.f32 q9, d2[1] +vsub.f32 q8, q9, q8 + +vadd.f32 q10, q8, q2 +vsub.f32 q11, q8, q2 + +vmul.f32 q10, q10, q4 +vmul.f32 q11, q11, q4 + +#if (CC_RESAMPLER_PRECISION > 0) +vmul.f32 q8, q10, q10 +vmul.f32 q9, q11, q11 + +vsub.f32 q12, q6, q8 +vsub.f32 q13, q6, q9 + +vmul.f32 q12, q12, q8 +vmul.f32 q13, q13, q9 + +vmul.f32 q12, q12, q7 +vmul.f32 q13, q13, q7 + +vsub.f32 q12, q5, q12 +vsub.f32 q13, q5, q13 + +vmul.f32 q10, q10, q12 +vmul.f32 q11, q11, q13 +#endif + +vmin.f32 q10, q10, q2 +vmin.f32 q11, q11, q2 + +vmax.f32 q10, q10, q3 +vmax.f32 q11, q11, q3 + +vsub.f32 q10, q10, q11 +vmov.f32 q11, q10 + +vzip.f32 q10, q11 + +vld1.f32 d16, [r1, :64]! +vmov.f32 d17, d16 + +vmul.f32 q10, q10, q8 +vmul.f32 q11, q11, q8 + +vadd.f32 q14, q14, q10 +vadd.f32 q15, q15, q11 + +# distance++ +vadd.f32 s5, s5, s20 + +vcmpe.f32 s5, s7 +vmrs APSR_nzcv, fpscr +ble 2f + +vst1.f32 d28, [r4, :64]! +vmov.f32 d28, d29 +vmov.f32 d29, d30 +vmov.f32 d30, d31 +vmov.f32 d31, #0.0 + +vsub.f32 s5, s5, s6 + +2: +cmp r3, r1 +bne 1b + +3: +vst1.f32 {q14-q15}, [r2, :256] +vstr s5, [r2, #32] +sub r0, r4, r0 +lsr r0, r0, #3 + +pop {r4} +vpop {q4,q5,q6,q7} + +bx lr + + +.align 4 +.globl resampler_CC_upsample_neon +.globl _resampler_CC_upsample_neon + +# size_t resampler_CC_upsample_neon(float *outp, const float *inp, +# rarch_CC_resampler_t* re_, size_t input_frames, float ratio); + +# r0: outp initial (and output_frames return value) +# r1: inp initial/current +# r2: re_ [r2+0] --> {q14,q15}=buffer , [r2+32] --> s5=distance +# r3: input_frames/inp_max +# r4: outp current +# r5: +# r6: +# r7: + +# q0: d0: s0: 1.0 # q4: d8: s16: min(ratio, 1.0) +# s1: 0.0 # s17: min(ratio, 1.0) +# d1: s2: -1.0 # d9: s18: min(ratio, 1.0) +# s3: -2.0 # s19: min(ratio, 1.0) +# q1: d2: s4: ratio # q5: d10: s20: 1.0 +# s5: distance # s21: 1.0 +# d3: s6: (1.0/ratio) # d11: s22: 1.0 +# s7: (1.0/ratio)+0.5 # s23: 1.0 +# q2: d4: s8: 0.5 # q6: d12: s24: 3.0 +# s9: 0.5 # s25: 3.0 +# d5: s10: 0.5 # d13: s26: 3.0 +# s11: 0.5 # s27: 3.0 +# q3: d6: s12: -0.5 # q7: d14: s28: 0.25 +# s13: -0.5 # s29: 0.25 +# d7: s14: -0.5 # d15: s30: 0.25 +# s15: -0.5 # s31: 0.25 + +# q8: d16: (temp) # q12: d24: (temp) +# (temp) # (temp) +# d17: (temp) # d25: (temp) +# (temp) # (temp) +# q9: d18: (temp) # q13: d26: (temp) +# (temp) # (temp) +# d19: (temp) # d27: (temp) +# (temp) # (temp) +# q10: d20: (temp) # q14: d28: buffer[0] +# (temp) # buffer[1] +# d21: (temp) # d29: buffer[2] +# (temp) # buffer[3] +# q11: d22: (temp) # q15: d30: buffer[4] +# (temp) # buffer[5] +# d23: (temp) # d31: buffer[6] +# (temp) # buffer[7] + + +resampler_CC_upsample_neon: +_resampler_CC_upsample_neon: + +vld1.f32 {q14-q15}, [r2, :256] +vldr s4, [sp] +vpush {q4,q5,q6,q7} +push {r4} + +mov r4, r0 + + +veor q0, q0, q0 +vmov.f32 s0, #1.0 +vmov.f32 s2, #-1.0 +vmov.f32 s3, #-2.0 + +vmov.f32 q2, #0.5 +vmov.f32 q3, #-0.5 + +vmov.f32 q5, #1.0 +vmov.f32 q6, #3.0 +vmov.f32 q7, #0.25 + + +vldr s5, [r2, #32] +vdiv.f32 s6, s20, s4 +vadd.f32 s7, s6, s8 +vdup.f32 q4, d2[0] +vmin.f32 q4, q4, q5 + + +lsl r3, #3 +add r3, r3, r1 + + +cmp r3, r1 +beq 4f +1: + +vld1.f32 d16, [r1, :64]! +vmov.f32 d28, d29 +vmov.f32 d29, d30 +vmov.f32 d30, d31 +vmov.f32 d31, d16 + +vcmpe.f32 s5, s20 +vmrs APSR_nzcv, fpscr +bge 3f +2: +vdup.f32 q8, d2[1] +vadd.f32 q8, q8, q0 + +vadd.f32 q10, q8, q2 +vsub.f32 q11, q8, q2 + +vmul.f32 q10, q10, q4 +vmul.f32 q11, q11, q4 + +#if (CC_RESAMPLER_PRECISION > 0) +vmul.f32 q8, q10, q10 +vmul.f32 q9, q11, q11 + +vsub.f32 q12, q6, q8 +vsub.f32 q13, q6, q9 + +vmul.f32 q12, q12, q8 +vmul.f32 q13, q13, q9 + +vmul.f32 q12, q12, q7 +vmul.f32 q13, q13, q7 + +vsub.f32 q12, q5, q12 +vsub.f32 q13, q5, q13 + +vmul.f32 q10, q10, q12 +vmul.f32 q11, q11, q13 +#endif + +vmin.f32 q10, q10, q2 +vmin.f32 q11, q11, q2 + +vmax.f32 q10, q10, q3 +vmax.f32 q11, q11, q3 + +vsub.f32 q10, q10, q11 +vmov.f32 q11, q10 + +vzip.f32 q10, q11 + +vmul.f32 q10, q10, q14 +vmul.f32 q11, q11, q15 + +vadd.f32 q10, q10, q11 +vadd.f32 d20, d20, d21 + +vst1.f32 d20, [r4, :64]! + +vadd.f32 s5, s5, s6 + + +vcmpe.f32 s5, s20 +vmrs APSR_nzcv, fpscr +blt 2b + +3: +# distance-- +vsub.f32 s5, s5, s20 + +cmp r3, r1 +bne 1b + + +4: +vst1.f32 {q14-q15}, [r2, :256] +vstr s5, [r2, #32] +sub r0, r4, r0 +lsr r0, r0, #3 + +pop {r4} +vpop {q4,q5,q6,q7} + +bx lr + +#endif diff --git a/PVSupport/Sources/retro/audio/drivers_resampler/nearest_resampler.c b/PVSupport/Sources/retro/audio/drivers_resampler/nearest_resampler.c new file mode 100644 index 0000000000..821224b7ff --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers_resampler/nearest_resampler.c @@ -0,0 +1,80 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2014-2016 - Ali Bouhlel ( aliaspider@gmail.com ) + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#include "../audio_resampler_driver.h" +typedef struct rarch_nearest_resampler +{ + float fraction; +} rarch_nearest_resampler_t; + +static void resampler_nearest_process( + void *re_, struct resampler_data *data) +{ + rarch_nearest_resampler_t *re = (rarch_nearest_resampler_t*)re_; + audio_frame_float_t *inp = (audio_frame_float_t*)data->data_in; + audio_frame_float_t *inp_max = (audio_frame_float_t*)inp + data->input_frames; + audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out; + float ratio = 1.0 / data->ratio; + + while(inp != inp_max) + { + while(re->fraction > 1) + { + *outp++ = *inp; + re->fraction -= ratio; + } + re->fraction++; + inp++; + } + + data->output_frames = (outp - (audio_frame_float_t*)data->data_out); +} + +static void resampler_nearest_free(void *re_) +{ + rarch_nearest_resampler_t *re = (rarch_nearest_resampler_t*)re_; + if (re) + free(re); +} + +static void *resampler_nearest_init(const struct resampler_config *config, + double bandwidth_mod, resampler_simd_mask_t mask) +{ + rarch_nearest_resampler_t *re = (rarch_nearest_resampler_t*) + calloc(1, sizeof(rarch_nearest_resampler_t)); + + (void)config; + (void)mask; + + if (!re) + return NULL; + + re->fraction = 0; + + return re; +} + +rarch_resampler_t nearest_resampler = { + resampler_nearest_init, + resampler_nearest_process, + resampler_nearest_free, + RESAMPLER_API_VERSION, + "nearest", + "nearest" +}; diff --git a/PVSupport/Sources/retro/audio/drivers_resampler/null_resampler.c b/PVSupport/Sources/retro/audio/drivers_resampler/null_resampler.c new file mode 100644 index 0000000000..dc6c0be513 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers_resampler/null_resampler.c @@ -0,0 +1,48 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2014-2016 - Ali Bouhlel ( aliaspider@gmail.com ) + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#include "../audio_resampler_driver.h" +typedef struct rarch_null_resampler +{ + void *empty; +} rarch_null_resampler_t; + +static void resampler_null_process( + void *re_, struct resampler_data *data) +{ +} + +static void resampler_null_free(void *re_) +{ +} + +static void *resampler_null_init(const struct resampler_config *config, + double bandwidth_mod, resampler_simd_mask_t mask) +{ + return (void*)0; +} + +rarch_resampler_t null_resampler = { + resampler_null_init, + resampler_null_process, + resampler_null_free, + RESAMPLER_API_VERSION, + "null", + "null" +}; diff --git a/PVSupport/Sources/retro/audio/drivers_resampler/sinc_resampler.c b/PVSupport/Sources/retro/audio/drivers_resampler/sinc_resampler.c new file mode 100644 index 0000000000..29877cd06b --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers_resampler/sinc_resampler.c @@ -0,0 +1,483 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +/* Bog-standard windowed SINC implementation. */ + +#include +#include +#include +#include + +#ifdef __SSE__ +#include +#endif + +#include +#include +#include + +#include "../audio_resampler_driver.h" + +/* Rough SNR values for upsampling: + * LOWEST: 40 dB + * LOWER: 55 dB + * NORMAL: 70 dB + * HIGHER: 110 dB + * HIGHEST: 140 dB + */ + +/* TODO, make all this more configurable. */ +#if defined(SINC_LOWEST_QUALITY) +#define SINC_WINDOW_LANCZOS +#define CUTOFF 0.98 +#define PHASE_BITS 12 +#define SINC_COEFF_LERP 0 +#define SUBPHASE_BITS 10 +#define SIDELOBES 2 +#define ENABLE_AVX 0 +#elif defined(SINC_LOWER_QUALITY) +#define SINC_WINDOW_LANCZOS +#define CUTOFF 0.98 +#define PHASE_BITS 12 +#define SUBPHASE_BITS 10 +#define SINC_COEFF_LERP 0 +#define SIDELOBES 4 +#define ENABLE_AVX 0 +#elif defined(SINC_HIGHER_QUALITY) +#define SINC_WINDOW_KAISER +#define SINC_WINDOW_KAISER_BETA 10.5 +#define CUTOFF 0.90 +#define PHASE_BITS 10 +#define SUBPHASE_BITS 14 +#define SINC_COEFF_LERP 1 +#define SIDELOBES 32 +#define ENABLE_AVX 1 +#elif defined(SINC_HIGHEST_QUALITY) +#define SINC_WINDOW_KAISER +#define SINC_WINDOW_KAISER_BETA 14.5 +#define CUTOFF 0.962 +#define PHASE_BITS 10 +#define SUBPHASE_BITS 14 +#define SINC_COEFF_LERP 1 +#define SIDELOBES 128 +#define ENABLE_AVX 1 +#else +#define SINC_WINDOW_KAISER +#define SINC_WINDOW_KAISER_BETA 5.5 +#define CUTOFF 0.825 +#define PHASE_BITS 8 +#define SUBPHASE_BITS 16 +#define SINC_COEFF_LERP 1 +#define SIDELOBES 8 +#define ENABLE_AVX 0 +#endif + +/* For the little amount of taps we're using, + * SSE1 is faster than AVX for some reason. + * AVX code is kept here though as by increasing number + * of sinc taps, the AVX code is clearly faster than SSE1. + */ + +#if defined(__AVX__) && ENABLE_AVX +#include +#endif + +#define PHASES (1 << (PHASE_BITS + SUBPHASE_BITS)) + +#define TAPS (SIDELOBES * 2) +#define SUBPHASE_MASK ((1 << SUBPHASE_BITS) - 1) +#define SUBPHASE_MOD (1.0f / (1 << SUBPHASE_BITS)) + +typedef struct rarch_sinc_resampler +{ + float *phase_table; + float *buffer_l; + float *buffer_r; + + unsigned taps; + + unsigned ptr; + uint32_t time; + + /* A buffer for phase_table, buffer_l and buffer_r + * are created in a single calloc(). + * Ensure that we get as good cache locality as we can hope for. */ + float *main_buffer; +} rarch_sinc_resampler_t; + +#if defined(SINC_WINDOW_LANCZOS) +#define window_function(idx) (lanzcos_window_function(idx)) +#elif defined(SINC_WINDOW_KAISER) +#define window_function(idx) (kaiser_window_function(idx, SINC_WINDOW_KAISER_BETA)) +#else +#error "No SINC window function defined." +#endif + +static void init_sinc_table(rarch_sinc_resampler_t *resamp, double cutoff, + float *phase_table, int phases, int taps, bool calculate_delta) +{ + int i, j; + double window_mod = window_function(0.0); /* Need to normalize w(0) to 1.0. */ + int stride = calculate_delta ? 2 : 1; + double sidelobes = taps / 2.0; + + for (i = 0; i < phases; i++) + { + for (j = 0; j < taps; j++) + { + double sinc_phase; + float val; + int n = j * phases + i; + double window_phase = (double)n / (phases * taps); /* [0, 1). */ + window_phase = 2.0 * window_phase - 1.0; /* [-1, 1) */ + sinc_phase = sidelobes * window_phase; + + val = cutoff * sinc(M_PI * sinc_phase * cutoff) * + window_function(window_phase) / window_mod; + phase_table[i * stride * taps + j] = val; + } + } + + if (calculate_delta) + { + int phase; + int p; + + for (p = 0; p < phases - 1; p++) + { + for (j = 0; j < taps; j++) + { + float delta = phase_table[(p + 1) * stride * taps + j] - + phase_table[p * stride * taps + j]; + phase_table[(p * stride + 1) * taps + j] = delta; + } + } + + phase = phases - 1; + for (j = 0; j < taps; j++) + { + float val, delta; + double sinc_phase; + int n = j * phases + (phase + 1); + double window_phase = (double)n / (phases * taps); /* (0, 1]. */ + window_phase = 2.0 * window_phase - 1.0; /* (-1, 1] */ + sinc_phase = sidelobes * window_phase; + + val = cutoff * sinc(M_PI * sinc_phase * cutoff) * + window_function(window_phase) / window_mod; + delta = (val - phase_table[phase * stride * taps + j]); + phase_table[(phase * stride + 1) * taps + j] = delta; + } + } +} + +#if !(defined(__AVX__) && ENABLE_AVX) && !defined(__SSE__) +static INLINE void process_sinc_C(rarch_sinc_resampler_t *resamp, + float *out_buffer) +{ + unsigned i; + float sum_l = 0.0f; + float sum_r = 0.0f; + const float *buffer_l = resamp->buffer_l + resamp->ptr; + const float *buffer_r = resamp->buffer_r + resamp->ptr; + unsigned taps = resamp->taps; + unsigned phase = resamp->time >> SUBPHASE_BITS; +#if SINC_COEFF_LERP + const float *phase_table = resamp->phase_table + phase * taps * 2; + const float *delta_table = phase_table + taps; + float delta = (float) + (resamp->time & SUBPHASE_MASK) * SUBPHASE_MOD; +#else + const float *phase_table = resamp->phase_table + phase * taps; +#endif + + for (i = 0; i < taps; i++) + { +#if SINC_COEFF_LERP + float sinc_val = phase_table[i] + delta_table[i] * delta; +#else + float sinc_val = phase_table[i]; +#endif + sum_l += buffer_l[i] * sinc_val; + sum_r += buffer_r[i] * sinc_val; + } + + out_buffer[0] = sum_l; + out_buffer[1] = sum_r; +} +#endif + +#if defined(__AVX__) && ENABLE_AVX +#define process_sinc_func process_sinc +static void process_sinc(rarch_sinc_resampler_t *resamp, float *out_buffer) +{ + unsigned i; + __m256 sum_l = _mm256_setzero_ps(); + __m256 sum_r = _mm256_setzero_ps(); + + const float *buffer_l = resamp->buffer_l + resamp->ptr; + const float *buffer_r = resamp->buffer_r + resamp->ptr; + + unsigned taps = resamp->taps; + unsigned phase = resamp->time >> SUBPHASE_BITS; +#if SINC_COEFF_LERP + const float *phase_table = resamp->phase_table + phase * taps * 2; + const float *delta_table = phase_table + taps; + __m256 delta = _mm256_set1_ps((float) + (resamp->time & SUBPHASE_MASK) * SUBPHASE_MOD); +#else + const float *phase_table = resamp->phase_table + phase * taps; +#endif + + for (i = 0; i < taps; i += 8) + { + __m256 buf_l = _mm256_loadu_ps(buffer_l + i); + __m256 buf_r = _mm256_loadu_ps(buffer_r + i); + +#if SINC_COEFF_LERP + __m256 deltas = _mm256_load_ps(delta_table + i); + __m256 sinc = _mm256_add_ps(_mm256_load_ps(phase_table + i), + _mm256_mul_ps(deltas, delta)); +#else + __m256 sinc = _mm256_load_ps(phase_table + i); +#endif + sum_l = _mm256_add_ps(sum_l, _mm256_mul_ps(buf_l, sinc)); + sum_r = _mm256_add_ps(sum_r, _mm256_mul_ps(buf_r, sinc)); + } + + /* hadd on AVX is weird, and acts on low-lanes + * and high-lanes separately. */ + __m256 res_l = _mm256_hadd_ps(sum_l, sum_l); + __m256 res_r = _mm256_hadd_ps(sum_r, sum_r); + res_l = _mm256_hadd_ps(res_l, res_l); + res_r = _mm256_hadd_ps(res_r, res_r); + res_l = _mm256_add_ps(_mm256_permute2f128_ps(res_l, res_l, 1), res_l); + res_r = _mm256_add_ps(_mm256_permute2f128_ps(res_r, res_r, 1), res_r); + + /* This is optimized to mov %xmmN, [mem]. + * There doesn't seem to be any _mm256_store_ss intrinsic. */ + _mm_store_ss(out_buffer + 0, _mm256_extractf128_ps(res_l, 0)); + _mm_store_ss(out_buffer + 1, _mm256_extractf128_ps(res_r, 0)); +} +#elif defined(__SSE__) +#define process_sinc_func process_sinc +static void process_sinc(rarch_sinc_resampler_t *resamp, float *out_buffer) +{ + unsigned i; + __m128 sum; + __m128 sum_l = _mm_setzero_ps(); + __m128 sum_r = _mm_setzero_ps(); + + const float *buffer_l = resamp->buffer_l + resamp->ptr; + const float *buffer_r = resamp->buffer_r + resamp->ptr; + + unsigned taps = resamp->taps; + unsigned phase = resamp->time >> SUBPHASE_BITS; +#if SINC_COEFF_LERP + const float *phase_table = resamp->phase_table + phase * taps * 2; + const float *delta_table = phase_table + taps; + __m128 delta = _mm_set1_ps((float) + (resamp->time & SUBPHASE_MASK) * SUBPHASE_MOD); +#else + const float *phase_table = resamp->phase_table + phase * taps; +#endif + + for (i = 0; i < taps; i += 4) + { + __m128 buf_l = _mm_loadu_ps(buffer_l + i); + __m128 buf_r = _mm_loadu_ps(buffer_r + i); + +#if SINC_COEFF_LERP + __m128 deltas = _mm_load_ps(delta_table + i); + __m128 _sinc = _mm_add_ps(_mm_load_ps(phase_table + i), + _mm_mul_ps(deltas, delta)); +#else + __m128 _sinc = _mm_load_ps(phase_table + i); +#endif + sum_l = _mm_add_ps(sum_l, _mm_mul_ps(buf_l, _sinc)); + sum_r = _mm_add_ps(sum_r, _mm_mul_ps(buf_r, _sinc)); + } + + /* Them annoying shuffles. + * sum_l = { l3, l2, l1, l0 } + * sum_r = { r3, r2, r1, r0 } + */ + + sum = _mm_add_ps(_mm_shuffle_ps(sum_l, sum_r, + _MM_SHUFFLE(1, 0, 1, 0)), + _mm_shuffle_ps(sum_l, sum_r, _MM_SHUFFLE(3, 2, 3, 2))); + + /* sum = { r1, r0, l1, l0 } + { r3, r2, l3, l2 } + * sum = { R1, R0, L1, L0 } + */ + + sum = _mm_add_ps(_mm_shuffle_ps(sum, sum, _MM_SHUFFLE(3, 3, 1, 1)), sum); + + /* sum = {R1, R1, L1, L1 } + { R1, R0, L1, L0 } + * sum = { X, R, X, L } + */ + + /* Store L */ + _mm_store_ss(out_buffer + 0, sum); + + /* movehl { X, R, X, L } == { X, R, X, R } */ + _mm_store_ss(out_buffer + 1, _mm_movehl_ps(sum, sum)); +} +#elif defined(__ARM_NEON__) && !defined(VITA) + +#if SINC_COEFF_LERP +#error "NEON asm does not support SINC lerp." +#endif + +/* Need to make this function pointer as Android doesn't + * have built-in targets for NEON and plain ARMv7a. + */ +static void (*process_sinc_func)(rarch_sinc_resampler_t *resamp, + float *out_buffer); + +/* Assumes that taps >= 8, and that taps is a multiple of 8. */ +void process_sinc_neon_asm(float *out, const float *left, + const float *right, const float *coeff, unsigned taps); + +static void process_sinc_neon(rarch_sinc_resampler_t *resamp, + float *out_buffer) +{ + const float *buffer_l = resamp->buffer_l + resamp->ptr; + const float *buffer_r = resamp->buffer_r + resamp->ptr; + + unsigned phase = resamp->time >> SUBPHASE_BITS; + unsigned taps = resamp->taps; + const float *phase_table = resamp->phase_table + phase * taps; + + process_sinc_neon_asm(out_buffer, buffer_l, buffer_r, phase_table, taps); +} +#else /* Plain ol' C99 */ +#define process_sinc_func process_sinc_C +#endif + +static void resampler_sinc_process(void *re_, struct resampler_data *data) +{ + rarch_sinc_resampler_t *re = (rarch_sinc_resampler_t*)re_; + + uint32_t ratio = PHASES / data->ratio; + const float *input = data->data_in; + float *output = data->data_out; + size_t frames = data->input_frames; + size_t out_frames = 0; + + while (frames) + { + while (frames && re->time >= PHASES) + { + /* Push in reverse to make filter more obvious. */ + if (!re->ptr) + re->ptr = re->taps; + re->ptr--; + + re->buffer_l[re->ptr + re->taps] = re->buffer_l[re->ptr] = *input++; + re->buffer_r[re->ptr + re->taps] = re->buffer_r[re->ptr] = *input++; + + re->time -= PHASES; + frames--; + } + + while (re->time < PHASES) + { + process_sinc_func(re, output); + output += 2; + out_frames++; + re->time += ratio; + } + } + + data->output_frames = out_frames; +} + +static void resampler_sinc_free(void *re) +{ + rarch_sinc_resampler_t *resampler = (rarch_sinc_resampler_t*)re; + if (resampler) + memalign_free(resampler->main_buffer); + free(resampler); +} + +static void *resampler_sinc_new(const struct resampler_config *config, + double bandwidth_mod, resampler_simd_mask_t mask) +{ + size_t phase_elems, elems; + double cutoff; + rarch_sinc_resampler_t *re = (rarch_sinc_resampler_t*) + calloc(1, sizeof(*re)); + + if (!re) + return NULL; + + (void)config; + + re->taps = TAPS; + cutoff = CUTOFF; + + /* Downsampling, must lower cutoff, and extend number of + * taps accordingly to keep same stopband attenuation. */ + if (bandwidth_mod < 1.0) + { + cutoff *= bandwidth_mod; + re->taps = (unsigned)ceil(re->taps / bandwidth_mod); + } + + /* Be SIMD-friendly. */ +#if (defined(__AVX__) && ENABLE_AVX) || (defined(__ARM_NEON__)&& !defined(VITA)) + re->taps = (re->taps + 7) & ~7; +#else + re->taps = (re->taps + 3) & ~3; +#endif + + phase_elems = (1 << PHASE_BITS) * re->taps; +#if SINC_COEFF_LERP + phase_elems *= 2; +#endif + elems = phase_elems + 4 * re->taps; + + re->main_buffer = (float*)memalign_alloc(128, sizeof(float) * elems); + if (!re->main_buffer) + goto error; + + re->phase_table = re->main_buffer; + re->buffer_l = re->main_buffer + phase_elems; + re->buffer_r = re->buffer_l + 2 * re->taps; + + init_sinc_table(re, cutoff, re->phase_table, + 1 << PHASE_BITS, re->taps, SINC_COEFF_LERP); + +#if defined(__ARM_NEON__) && !defined(VITA) + process_sinc_func = mask & RESAMPLER_SIMD_NEON + ? process_sinc_neon : process_sinc_C; +#endif + + return re; + +error: + resampler_sinc_free(re); + return NULL; +} + +rarch_resampler_t sinc_resampler = { + resampler_sinc_new, + resampler_sinc_process, + resampler_sinc_free, + RESAMPLER_API_VERSION, + "sinc", + "sinc" +}; diff --git a/PVSupport/Sources/retro/audio/drivers_resampler/sinc_resampler_neon.S b/PVSupport/Sources/retro/audio/drivers_resampler/sinc_resampler_neon.S new file mode 100644 index 0000000000..44e3924597 --- /dev/null +++ b/PVSupport/Sources/retro/audio/drivers_resampler/sinc_resampler_neon.S @@ -0,0 +1,60 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ +#if defined(__ARM_NEON__) + +#ifndef __MACH__ +.arm +#endif +.align 4 +.globl process_sinc_neon_asm +.globl _process_sinc_neon_asm +# void process_sinc_neon(float *out, const float *left, const float *right, const float *coeff, unsigned taps) +# Assumes taps is >= 8, and a multiple of 8. +process_sinc_neon_asm: +_process_sinc_neon_asm: + + push {r4, lr} + vmov.f32 q0, #0.0 + vmov.f32 q8, #0.0 + + # Taps argument (r4) goes on stack in armeabi. + ldr r4, [sp, #8] + +1: + # Left + vld1.f32 {q2-q3}, [r1]! + # Right + vld1.f32 {q10-q11}, [r2]! + # Coeff + vld1.f32 {q12-q13}, [r3, :128]! + + # Left / Right + vmla.f32 q0, q2, q12 + vmla.f32 q8, q10, q12 + vmla.f32 q0, q3, q13 + vmla.f32 q8, q11, q13 + + subs r4, r4, #8 + bne 1b + + # Add everything together + vadd.f32 d0, d0, d1 + vadd.f32 d16, d16, d17 + vpadd.f32 d0, d0, d16 + vst1.f32 d0, [r0] + + pop {r4, pc} + +#endif diff --git a/PVSupport/Sources/retro/audio/librsound.c b/PVSupport/Sources/retro/audio/librsound.c new file mode 100644 index 0000000000..9a12ee15a3 --- /dev/null +++ b/PVSupport/Sources/retro/audio/librsound.c @@ -0,0 +1,1658 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +/* RSound - A PCM audio client/server + * Copyright (C) 2010 - Hans-Kristian Arntzen + * + * RSound is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RSound is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RSound. + * If not, see . + */ + +#include "drivers/rsound.h" + +#if defined(__CELLOS_LV2__) +#include +#include +#include + +/* Network headers */ +#include +#include +#define NETWORK_COMPAT_HEADERS 1 +#elif defined(GEKKO) +#include +#else +#define NETWORK_COMPAT_HEADERS 1 +#endif + + +#ifdef NETWORK_COMPAT_HEADERS +#include +#include +#include +#include +#include +#include +#endif +#include +#ifdef _WIN32 +#include +#else +#include +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/* + **************************************************************************** + Naming convention. Functions for use in API are called rsd_*(), * + internal function are called rsnd_*() * + **************************************************************************** + */ + +// Internal enumerations +enum rsd_logtype +{ + RSD_LOG_DEBUG = 0, + RSD_LOG_WARN, + RSD_LOG_ERR +}; + +enum rsd_conn_type +{ + RSD_CONN_TCP = 0x0000, + RSD_CONN_UNIX = 0x0001, + RSD_CONN_DECNET = 0x0002, + + RSD_CONN_PROTO = 0x100 +}; + +// Some logging macros. +#define RSD_WARN(fmt, args...) +#define RSD_ERR(fmt, args...) +#define RSD_DEBUG(fmt, args...) + +#if defined(__CELLOS_LV2__) +static int init_count = 0; +#define pollfd_fd(x) x.fd +#define net_send(a,b,c,d) send(a,b,c,d) +#define net_socket(a,b,c) socket(a,b,c) +#define net_connect(a,b,c) connect(a,b,c) +#define net_shutdown(a,b) shutdown(a,b) +#define net_socketclose(x) socketclose(x) +#define net_recv(a,b,c,d) recv(a,b,c,d) +#elif defined(GEKKO) +#define SHUT_RD 0 + +#define socketpoll(x, y, z) net_poll(x, y, z) +#define pollfd pollsd +#define pollfd_fd(x) x.socket +#define gethostbyname net_gethostbyname +#define getsockopt net_getsockopt +#define setsockopt net_setsockopt +#define net_send(a,b,c,d) net_send(a,b,c,d) +#define net_socket(a,b,c) net_socket(a,b,c) +#define net_connect(a,b,c) net_connect(a,b,c) +#define net_shutdown(a,b) net_shutdown(a,b) +#define net_socketclose(x) net_close(x) +#define net_recv(a,b,c,d) net_recv(a,b,c,d) +#else +#define pollfd_fd(x) x.fd +#define net_socket(a,b,c) socket(a,b,c) +#define socketpoll(x, y, z) poll(x, y, z) +#define net_send(a,b,c,d) send(a,b,c,d) +#define net_connect(a,b,c) connect(a,b,c) +#define net_shutdown(a,b) shutdown(a,b) +#define net_socketclose(x) close(x) +#define net_recv(a,b,c,d) recv(a,b,c,d) +#endif + +static ssize_t rsnd_send_chunk(int socket, const void *buf, size_t size, int blocking); +static ssize_t rsnd_recv_chunk(int socket, void *buf, size_t size, int blocking); +static int rsnd_start_thread(rsound_t *rd); +static int rsnd_stop_thread(rsound_t *rd); +static size_t rsnd_get_delay(rsound_t *rd); +static size_t rsnd_get_ptr(rsound_t *rd); +static int rsnd_reset(rsound_t *rd); + +// Protocol functions +static int rsnd_send_identity_info(rsound_t *rd); +static int rsnd_close_ctl(rsound_t *rd); +static int rsnd_send_info_query(rsound_t *rd); +static int rsnd_update_server_info(rsound_t *rd); + +static int rsnd_poll(struct pollfd *fd, int numfd, int timeout); + +static void rsnd_cb_thread(void *thread_data); +static void rsnd_thread(void *thread_data); + + +/* Determine whether we're running big- or little endian */ +static INLINE int rsnd_is_little_endian(void) +{ + uint16_t i = 1; + return *((uint8_t*)&i); +} + +/* Simple functions for swapping bytes */ +static INLINE void rsnd_swap_endian_16 ( uint16_t * x ) +{ + *x = (*x>>8) | (*x<<8); +} + +static INLINE void rsnd_swap_endian_32 ( uint32_t * x ) +{ + *x = (*x >> 24 ) | + ((*x<<8) & 0x00FF0000) | + ((*x>>8) & 0x0000FF00) | + (*x << 24); +} + +static INLINE int rsnd_format_to_samplesize ( uint16_t fmt ) +{ + switch(fmt) + { + case RSD_S32_LE: + case RSD_S32_BE: + case RSD_S32_NE: + case RSD_U32_LE: + case RSD_U32_BE: + case RSD_U32_NE: + return 4; + + case RSD_S16_LE: + case RSD_U16_LE: + case RSD_S16_BE: + case RSD_U16_BE: + case RSD_S16_NE: + case RSD_U16_NE: + return 2; + + case RSD_U8: + case RSD_S8: + case RSD_ALAW: + case RSD_MULAW: + return 1; + + default: + return -1; + } +} + +int rsd_samplesize( rsound_t *rd ) +{ + assert(rd != NULL); + return rd->samplesize; +} + +/* Creates sockets and attempts to connect to the server. Returns -1 when failed, and 0 when success. */ +static int rsnd_connect_server( rsound_t *rd ) +{ + struct sockaddr_in addr; + struct pollfd fd; + int i = 1; + (void)i; + + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_port = htons(atoi(rd->port)); + + if (!isdigit(rd->host[0])) + { + struct hostent *host = gethostbyname(rd->host); + if (host == NULL) + return -1; + + addr.sin_addr.s_addr = inet_addr(host->h_addr_list[0]); + } + else + addr.sin_addr.s_addr = inet_addr(rd->host); + + rd->conn_type = RSD_CONN_TCP; + + + rd->conn.socket = net_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if ( rd->conn.socket < 0 ) + goto error; + + rd->conn.ctl_socket = net_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if ( rd->conn.ctl_socket < 0 ) + goto error; + + /* Uses non-blocking IO since it performed more deterministic with poll()/send() */ + +#ifdef __CELLOS_LV2__ + setsockopt(rd->conn.socket, SOL_SOCKET, SO_NBIO, &i, sizeof(int)); + setsockopt(rd->conn.ctl_socket, SOL_SOCKET, SO_NBIO, &i, sizeof(int)); +#else + fcntl(rd->conn.socket, F_SETFL, O_NONBLOCK); + fcntl(rd->conn.ctl_socket, F_SETFL, O_NONBLOCK); +#endif + + /* Nonblocking connect with 3 second timeout */ + net_connect(rd->conn.socket, (struct sockaddr*)&addr, sizeof(addr)); + + pollfd_fd(fd) = rd->conn.socket; + fd.events = POLLOUT; + + rsnd_poll(&fd, 1, 3000); + if (!(fd.revents & POLLOUT)) + goto error; + + net_connect(rd->conn.ctl_socket, (struct sockaddr*)&addr, sizeof(addr)); + + pollfd_fd(fd) = rd->conn.ctl_socket; + rsnd_poll(&fd, 1, 3000); + if (!(fd.revents & POLLOUT)) + goto error; + + return 0; + + /* Cleanup for errors. */ +error: + RSD_ERR("[RSound] Connecting to server failed. \"%s\"", rd->host); + + return -1; +} + +/* Conjures a WAV-header and sends this to server. Returns -1 when failed, and 0 when success. */ +static int rsnd_send_header_info(rsound_t *rd) +{ + + /* Defines the size of a wave header */ +#define HEADER_SIZE 44 + char *header = calloc(1, HEADER_SIZE); + if (header == NULL) + { + RSD_ERR("[RSound] Could not allocate memory."); + return -1; + } + uint16_t temp16; + uint32_t temp32; + + /* These magic numbers represent the position of the elements in the wave header. + We can't simply send a wave struct over the network since the compiler is allowed to + pad our structs as they like, so sizeof(waveheader) might not be similar on two different + systems. */ + +#define RATE 24 +#define CHANNEL 22 +#define FRAMESIZE 34 +#define FORMAT 42 + + + uint32_t temp_rate = rd->rate; + uint16_t temp_channels = rd->channels; + + uint16_t temp_bits = 8 * rsnd_format_to_samplesize(rd->format); + uint16_t temp_format = rd->format; + + // Checks the format for native endian which will need to be set properly. + switch ( temp_format ) + { + case RSD_S16_NE: + if ( rsnd_is_little_endian() ) + temp_format = RSD_S16_LE; + else + temp_format = RSD_S16_BE; + break; + + case RSD_U16_NE: + if ( rsnd_is_little_endian() ) + temp_format = RSD_U16_LE; + else + temp_format = RSD_U16_BE; + break; + case RSD_S32_NE: + if ( rsnd_is_little_endian() ) + temp_format = RSD_S32_LE; + else + temp_format = RSD_S32_BE; + break; + case RSD_U32_NE: + if ( rsnd_is_little_endian() ) + temp_format = RSD_U32_LE; + else + temp_format = RSD_U32_BE; + break; + + default: + break; + } + + /* Since the values in the wave header we are interested in, are little endian (>_<), we need + to determine whether we're running it or not, so we can byte swap accordingly. + Could determine this compile time, but it was simpler to do it this way. */ + + // Fancy macros for embedding little endian values into the header. +#define SET32(buf,offset,x) (*((uint32_t*)(buf+offset)) = x) +#define SET16(buf,offset,x) (*((uint16_t*)(buf+offset)) = x) + +#define LSB16(x) if ( !rsnd_is_little_endian() ) { rsnd_swap_endian_16(&(x)); } +#define LSB32(x) if ( !rsnd_is_little_endian() ) { rsnd_swap_endian_32(&(x)); } + + /* Here we embed in the rest of the WAV header for it to be somewhat valid */ + + strlcpy(header, "RIFF", sizeof(header)); + SET32(header, 4, 0); + strlcpy(header+8, "WAVE", sizeof(header)); + strlcpy(header+12, "fmt ", sizeof(header)); + + temp32 = 16; + LSB32(temp32); + SET32(header, 16, temp32); + + temp16 = 0; // PCM data + + switch( rd->format ) + { + case RSD_S16_LE: + case RSD_U8: + temp16 = 1; + break; + + case RSD_ALAW: + temp16 = 6; + break; + + case RSD_MULAW: + temp16 = 7; + break; + } + + LSB16(temp16); + SET16(header, 20, temp16); + + // Channels here + LSB16(temp_channels); + SET16(header, CHANNEL, temp_channels); + // Samples per sec + LSB32(temp_rate); + SET32(header, RATE, temp_rate); + + temp32 = rd->rate * rd->channels * rsnd_format_to_samplesize(rd->format); + LSB32(temp32); + SET32(header, 28, temp32); + + temp16 = rd->channels * rsnd_format_to_samplesize(rd->format); + LSB16(temp16); + SET16(header, 32, temp16); + + // Bits per sample + LSB16(temp_bits); + SET16(header, FRAMESIZE, temp_bits); + + strlcpy(header+36, "data", sizeof(header)); + + /* Do not care about cksize here (impossible to know beforehand). + * It is used by the server for format. */ + + LSB16(temp_format); + SET16(header, FORMAT, temp_format); + + /* End static header */ + + if ( rsnd_send_chunk(rd->conn.socket, header, HEADER_SIZE, 1) != HEADER_SIZE ) + { + free(header); + return -1; + } + + free(header); + return 0; +} + +/* Recieves backend info from server that is of interest to the client. (This mini-protocol might be extended later on.) */ +static int rsnd_get_backend_info ( rsound_t *rd ) +{ +#define RSND_HEADER_SIZE 8 +#define LATENCY 0 +#define CHUNKSIZE 1 + + // Header is 2 uint32_t's. = 8 bytes. + uint32_t rsnd_header[2] = {0}; + + if ( rsnd_recv_chunk(rd->conn.socket, rsnd_header, RSND_HEADER_SIZE, 1) != RSND_HEADER_SIZE ) + { + RSD_ERR("[RSound] Couldn't receive chunk.\n"); + return -1; + } + + /* Again, we can't be 100% certain that sizeof(backend_info_t) is equal on every system */ + + if ( rsnd_is_little_endian() ) + { + rsnd_swap_endian_32(&rsnd_header[LATENCY]); + rsnd_swap_endian_32(&rsnd_header[CHUNKSIZE]); + } + + rd->backend_info.latency = rsnd_header[LATENCY]; + rd->backend_info.chunk_size = rsnd_header[CHUNKSIZE]; + +#define MAX_CHUNK_SIZE 1024 // We do not want larger chunk sizes than this. + if ( rd->backend_info.chunk_size > MAX_CHUNK_SIZE || rd->backend_info.chunk_size <= 0 ) + rd->backend_info.chunk_size = MAX_CHUNK_SIZE; + + /* Assumes a default buffer size should it cause problems of being too small */ + if ( rd->buffer_size == 0 || rd->buffer_size < rd->backend_info.chunk_size * 2 ) + rd->buffer_size = rd->backend_info.chunk_size * 32; + + if ( rd->fifo_buffer != NULL ) + fifo_free(rd->fifo_buffer); + rd->fifo_buffer = fifo_new (rd->buffer_size); + if ( rd->fifo_buffer == NULL ) + { + RSD_ERR("[RSound] Failed to create FIFO buffer.\n"); + return -1; + } + + // Only bother with setting network buffer size if we're doing TCP. + if ( rd->conn_type & RSD_CONN_TCP ) + { +#define MAX_TCP_BUFSIZE (1 << 14) + int bufsiz = rd->buffer_size; + if (bufsiz > MAX_TCP_BUFSIZE) + bufsiz = MAX_TCP_BUFSIZE; + + setsockopt(rd->conn.socket, SOL_SOCKET, SO_SNDBUF, &bufsiz, sizeof(int)); + bufsiz = rd->buffer_size; + setsockopt(rd->conn.ctl_socket, SOL_SOCKET, SO_SNDBUF, &bufsiz, sizeof(int)); + bufsiz = rd->buffer_size; + setsockopt(rd->conn.ctl_socket, SOL_SOCKET, SO_RCVBUF, &bufsiz, sizeof(int)); + + int flag = 1; + setsockopt(rd->conn.socket, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int)); + flag = 1; + setsockopt(rd->conn.ctl_socket, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int)); + } + + // Can we read the last 8 bytes so we can use the protocol interface? + // This is non-blocking. + if ( rsnd_recv_chunk(rd->conn.socket, rsnd_header, RSND_HEADER_SIZE, 0) == RSND_HEADER_SIZE ) + rd->conn_type |= RSD_CONN_PROTO; + else + { RSD_DEBUG("[RSound] Failed to get new proto.\n"); } + + // We no longer want to read from this socket. +#ifdef _WIN32 + net_shutdown(rd->conn.socket, SD_RECEIVE); +#elif !defined(__APPLE__) // OSX doesn't seem to like shutdown() + net_shutdown(rd->conn.socket, SHUT_RD); +#endif + + return 0; +} + +/* Makes sure that we're connected and done with wave header handshaking. Returns -1 on error, and 0 on success. + This goes for all other functions in use. */ +static int rsnd_create_connection(rsound_t *rd) +{ + int rc; + + /* Are we connected to the server? If not, these values have been set to <0, so we make sure that we connect */ + if ( rd->conn.socket <= 0 && rd->conn.ctl_socket <= 0 ) + { + rc = rsnd_connect_server(rd); + if (rc < 0) + { + RSD_ERR("[RSound] connect server failed.\n"); + rsd_stop(rd); + return -1; + } + + /* After connecting, makes really sure that we have a working connection. */ + struct pollfd fd; + pollfd_fd(fd) = rd->conn.socket; + fd.events = POLLOUT; + + if ( rsnd_poll(&fd, 1, 2000) < 0 ) + { + RSD_ERR("[RSound] rsnd_poll failed.\n"); + rsd_stop(rd); + return -1; + } + + if ( !(fd.revents & POLLOUT) ) + { + RSD_ERR("[RSound] Poll didn't return what we wanted.\n"); + rsd_stop(rd); + return -1; + } + } + /* Is the server ready for data? The first thing it expects is the wave header */ + if ( !rd->ready_for_data ) + { + /* Part of the uber simple protocol. + 1. Send wave header. + 2. Recieve backend info like latency and preferred packet size. + 3. Starts the playback thread. */ + + rc = rsnd_send_header_info(rd); + if (rc < 0) + { + RSD_ERR("[RSound] Send header failed.\n"); + rsd_stop(rd); + return -1; + } + + rc = rsnd_get_backend_info(rd); + if (rc < 0) + { + RSD_ERR("[RSound] Get backend info failed.\n"); + rsd_stop(rd); + return -1; + } + + rc = rsnd_start_thread(rd); + if (rc < 0) + { + RSD_ERR("[RSound] Starting thread failed.\n"); + rsd_stop(rd); + return -1; + } + + if ( (rd->conn_type & RSD_CONN_PROTO) && strlen(rd->identity) > 0 ) + { + rsnd_send_identity_info(rd); + } + + rd->ready_for_data = 1; + } + + return 0; +} + +/* Sends a chunk over the network. Makes sure that everything is sent if blocking. Returns -1 if connection is lost, non-negative if success. + * If blocking, and not enough data is recieved, it will return -1. */ +static ssize_t rsnd_send_chunk(int socket, const void* buf, size_t size, int blocking) +{ + ssize_t rc = 0; + size_t wrote = 0; + ssize_t send_size = 0; + struct pollfd fd; + pollfd_fd(fd) = socket; + fd.events = POLLOUT; + + int sleep_time = (blocking) ? 10000 : 0; + +#define MAX_PACKET_SIZE 1024 + + while ( wrote < size ) + { + if ( rsnd_poll(&fd, 1, sleep_time) < 0 ) + return -1; + + if ( fd.revents & POLLHUP ) + { + RSD_WARN("*** Remote side hung up! ***"); + return -1; + } + + if ( fd.revents & POLLOUT ) + { + /* We try to limit ourselves to 1KiB packet sizes. */ + send_size = (size - wrote) > MAX_PACKET_SIZE ? MAX_PACKET_SIZE : size - wrote; + rc = net_send(socket, (const char*)buf + wrote, send_size, 0); + if ( rc < 0 ) + { + RSD_ERR("[RSound] Error sending chunk, %s.\n", strerror(errno)); + return rc; + } + wrote += rc; + } + else + { + /* If server hasn't stopped blocking after 10 secs, then we should probably shut down the stream. */ + if ( blocking ) + return -1; + else + return wrote; + } + + } + return (ssize_t)wrote; +} + +/* Recieved chunk. Makes sure that everything is recieved if blocking. Returns -1 if connection is lost, non-negative if success. + * If blocking, and not enough data is recieved, it will return -1. */ +static ssize_t rsnd_recv_chunk(int socket, void *buf, size_t size, int blocking) +{ + ssize_t rc = 0; + size_t has_read = 0; + ssize_t read_size = 0; + struct pollfd fd; + pollfd_fd(fd) = socket; + fd.events = POLLIN; + + int sleep_time = (blocking) ? 5000 : 0; + + while ( has_read < size ) + { + if ( rsnd_poll(&fd, 1, sleep_time) < 0 ) + { + RSD_ERR("[RSound] Poll failed.\n"); + return -1; + } + + if ( fd.revents & POLLHUP ) + { + RSD_ERR("[RSound] Server hung up.\n"); + return -1; + } + + if ( fd.revents & POLLIN ) + { + read_size = (size - has_read) > MAX_PACKET_SIZE ? MAX_PACKET_SIZE : size - has_read; + rc = net_recv(socket, (char*)buf + has_read, read_size, 0); + if ( rc <= 0 ) + { + RSD_ERR("[RSound] Error receiving chunk, %s.\n", strerror(errno)); + return rc; + } + has_read += rc; + } + else + { + if ( blocking ) + { + RSD_ERR("[RSound] Block fail.\n"); + return -1; + } + else + return has_read; + } + } + + return (ssize_t)has_read; +} + +static int rsnd_poll(struct pollfd *fd, int numfd, int timeout) +{ + for(;;) + { + if ( socketpoll(fd, numfd, timeout) < 0 ) + { + if ( errno == EINTR ) + continue; + + perror("poll"); + return -1; + } + return 0; + } +} + +static int64_t rsnd_get_time_usec(void) +{ +#if defined(_WIN32) + static LARGE_INTEGER freq; + if (!freq.QuadPart && !QueryPerformanceFrequency(&freq)) // Frequency is guaranteed to not change. + return 0; + + LARGE_INTEGER count; + if (!QueryPerformanceCounter(&count)) + return 0; + return count.QuadPart * 1000000 / freq.QuadPart; +#elif defined(__CELLOS_LV2__) + return sys_time_get_system_time(); +#elif defined(GEKKO) + return ticks_to_microsecs(gettime()); +#elif defined(__MACH__) // OSX doesn't have clock_gettime ... + clock_serv_t cclock; + mach_timespec_t mts; + host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); + clock_get_time(cclock, &mts); + mach_port_deallocate(mach_task_self(), cclock); + return mts.tv_sec * INT64_C(1000000) + (mts.tv_nsec + 500) / 1000; +#elif defined(_POSIX_MONOTONIC_CLOCK) || defined(__QNX__) || defined(ANDROID) + struct timespec tv; + if (clock_gettime(CLOCK_MONOTONIC, &tv) < 0) + return 0; + return tv.tv_sec * INT64_C(1000000) + (tv.tv_nsec + 500) / 1000; +#elif defined(EMSCRIPTEN) + return emscripten_get_now() * 1000; +#else +#error "Your platform does not have a timer function implemented in rsnd_get_time_usec(). Cannot continue." +#endif +} + +/* Calculates how many bytes there are in total in the virtual buffer. This is calculated client side. + It should be accurate enough unless we have big problems with buffer underruns. + This function is called by rsd_delay() to determine the latency. + This function might be changed in the future to correctly determine latency from server. */ +static void rsnd_drain(rsound_t *rd) +{ + /* If the audio playback has started on the server we need to use timers. */ + if ( rd->has_written ) + { + /* Calculates the amount of bytes that the server has consumed. */ + int64_t time = rsnd_get_time_usec(); + + int64_t delta = time - rd->start_time; + delta *= rd->rate * rd->channels * rd->samplesize; + delta /= 1000000; + /* Calculates the amount of data we have in our virtual buffer. Only used to calculate delay. */ + slock_lock(rd->thread.mutex); + rd->bytes_in_buffer = (int)((int64_t)rd->total_written + (int64_t)fifo_read_avail(rd->fifo_buffer) - delta); + slock_unlock(rd->thread.mutex); + } + else + { + slock_lock(rd->thread.mutex); + rd->bytes_in_buffer = fifo_read_avail(rd->fifo_buffer); + slock_unlock(rd->thread.mutex); + } +} + +/* Tries to fill the buffer. Uses signals to determine when the buffer is ready to be filled. Should the thread not be active + it will treat this as an error. Crude implementation of a blocking FIFO. */ +static size_t rsnd_fill_buffer(rsound_t *rd, const char *buf, size_t size) +{ + + /* Wait until we have a ready buffer */ + for (;;) + { + /* Should the thread be shut down while we're running, return with error */ + if ( !rd->thread_active ) + return 0; + + slock_lock(rd->thread.mutex); + if ( fifo_write_avail(rd->fifo_buffer) >= size ) + { + slock_unlock(rd->thread.mutex); + break; + } + slock_unlock(rd->thread.mutex); + + /* Sleeps until we can write to the FIFO. */ + slock_lock(rd->thread.cond_mutex); + scond_signal(rd->thread.cond); + + RSD_DEBUG("[RSound] rsnd_fill_buffer: Going to sleep.\n"); + scond_wait(rd->thread.cond, rd->thread.cond_mutex); + RSD_DEBUG("[RSound] rsnd_fill_buffer: Woke up.\n"); + slock_unlock(rd->thread.cond_mutex); + } + + slock_lock(rd->thread.mutex); + fifo_write(rd->fifo_buffer, buf, size); + slock_unlock(rd->thread.mutex); + //RSD_DEBUG("[RSound] fill_buffer: Wrote to buffer.\n"); + + /* Send signal to thread that buffer has been updated */ + //RSD_DEBUG("[RSound] fill_buffer: Waking up thread.\n"); + scond_signal(rd->thread.cond); + + return size; +} + +static int rsnd_start_thread(rsound_t *rd) +{ + if ( !rd->thread_active ) + { + rd->thread_active = 1; + rd->thread.thread = (sthread_t*)sthread_create(rd->audio_callback ? rsnd_cb_thread : rsnd_thread, rd); + if ( !rd->thread.thread ) + { + rd->thread_active = 0; + RSD_ERR("[RSound] Failed to create thread."); + return -1; + } + return 0; + } + else + return 0; +} + +/* Makes sure that the playback thread has been correctly shut down */ +static int rsnd_stop_thread(rsound_t *rd) +{ + if ( rd->thread_active ) + { + + RSD_DEBUG("[RSound] Shutting down thread.\n"); + + slock_lock(rd->thread.cond_mutex); + rd->thread_active = 0; + scond_signal(rd->thread.cond); + slock_unlock(rd->thread.cond_mutex); + + sthread_join(rd->thread.thread); + RSD_DEBUG("[RSound] Thread joined successfully.\n"); + + return 0; + } + else + { + RSD_DEBUG("Thread is already shut down.\n"); + return 0; + } +} + +/* Calculates audio delay in bytes */ +static size_t rsnd_get_delay(rsound_t *rd) +{ + int ptr; + rsnd_drain(rd); + ptr = rd->bytes_in_buffer; + + /* Adds the backend latency to the calculated latency. */ + ptr += (int)rd->backend_info.latency; + + slock_lock(rd->thread.mutex); + ptr += rd->delay_offset; + RSD_DEBUG("Offset: %d.\n", rd->delay_offset); + slock_unlock(rd->thread.mutex); + + if ( ptr < 0 ) + ptr = 0; + + return (size_t)ptr; +} + +static size_t rsnd_get_ptr(rsound_t *rd) +{ + int ptr; + slock_lock(rd->thread.mutex); + ptr = fifo_read_avail(rd->fifo_buffer); + slock_unlock(rd->thread.mutex); + + return ptr; +} + +static int rsnd_send_identity_info(rsound_t *rd) +{ +#define RSD_PROTO_MAXSIZE 256 +#define RSD_PROTO_CHUNKSIZE 8 + + char tmpbuf[RSD_PROTO_MAXSIZE]; + char sendbuf[RSD_PROTO_MAXSIZE]; + + snprintf(tmpbuf, RSD_PROTO_MAXSIZE - 1, " IDENTITY %s", rd->identity); + tmpbuf[RSD_PROTO_MAXSIZE - 1] = '\0'; + snprintf(sendbuf, RSD_PROTO_MAXSIZE - 1, "RSD%5d%s", (int)strlen(tmpbuf), tmpbuf); + sendbuf[RSD_PROTO_MAXSIZE - 1] = '\0'; + + if ( rsnd_send_chunk(rd->conn.ctl_socket, sendbuf, strlen(sendbuf), 0) != (ssize_t)strlen(sendbuf) ) + return -1; + + return 0; +} + +static int rsnd_close_ctl(rsound_t *rd) +{ + if ( !(rd->conn_type & RSD_CONN_PROTO) ) + return -1; + + struct pollfd fd; + pollfd_fd(fd) = rd->conn.ctl_socket; + fd.events = POLLOUT; + + if ( rsnd_poll(&fd, 1, 0) < 0 ) + return -1; + + if ( fd.revents & POLLOUT ) + { + const char *sendbuf = "RSD 9 CLOSECTL"; + if (net_send(rd->conn.ctl_socket, sendbuf, strlen(sendbuf), 0) < 0 ) + return -1; + } + else if ( fd.revents & POLLHUP ) + return 0; + + // Let's wait for reply (or POLLHUP) + + fd.events = POLLIN; + int index = 0; + char buf[RSD_PROTO_MAXSIZE*2] = {0}; + + for(;;) + { + if ( rsnd_poll(&fd, 1, 2000) < 0 ) + return -1; + + if ( fd.revents & POLLHUP ) + break; + + else if ( fd.revents & POLLIN ) + { + const char *subchar; + + // We just read everything in large chunks until we find what we're looking for + int rc = net_recv(rd->conn.ctl_socket, buf + index, RSD_PROTO_MAXSIZE*2 - 1 - index, 0); + + if (rc <= 0 ) + return -1; + + // Can we find it directly? + if ( strstr(buf, "RSD 12 CLOSECTL OK") != NULL ) + break; + else if ( strstr(buf, "RSD 15 CLOSECTL ERROR") != NULL ) + return -1; + + subchar = strrchr(buf, 'R'); + if ( subchar == NULL ) + index = 0; + else + { + memmove(buf, subchar, strlen(subchar) + 1); + index = strlen(buf); + } + + } + else + return -1; + } + + net_socketclose(rd->conn.ctl_socket); + return 0; +} + + +// Sends delay info request to server on the ctl socket. This code section isn't critical, and will work if it works. +// It will never block. +static int rsnd_send_info_query(rsound_t *rd) +{ + char tmpbuf[RSD_PROTO_MAXSIZE]; + char sendbuf[RSD_PROTO_MAXSIZE]; + + snprintf(tmpbuf, RSD_PROTO_MAXSIZE - 1, " INFO %lld", (long long int)rd->total_written); + tmpbuf[RSD_PROTO_MAXSIZE - 1] = '\0'; + snprintf(sendbuf, RSD_PROTO_MAXSIZE - 1, "RSD%5d%s", (int)strlen(tmpbuf), tmpbuf); + sendbuf[RSD_PROTO_MAXSIZE - 1] = '\0'; + + if ( rsnd_send_chunk(rd->conn.ctl_socket, sendbuf, strlen(sendbuf), 0) != (ssize_t)strlen(sendbuf) ) + return -1; + + return 0; +} + +// We check if there's any pending delay information from the server. +// In that case, we read the packet. +static int rsnd_update_server_info(rsound_t *rd) +{ + long long int client_ptr = -1; + long long int serv_ptr = -1; + char temp[RSD_PROTO_MAXSIZE + 1] = {0}; + + // We read until we have the last (most recent) data in the network buffer. + for (;;) + { + ssize_t rc; + const char *substr; + char *tmpstr; + memset(temp, 0, sizeof(temp)); + + // We first recieve the small header. We just use the larger buffer as it is disposable. + rc = rsnd_recv_chunk(rd->conn.ctl_socket, temp, RSD_PROTO_CHUNKSIZE, 0); + if ( rc == 0 ) + break; + else if ( rc < RSD_PROTO_CHUNKSIZE ) + return -1; + + temp[RSD_PROTO_CHUNKSIZE] = '\0'; + + if ( (substr = strstr(temp, "RSD")) == NULL ) + return -1; + + // Jump over "RSD" in header + substr += 3; + + // The length of the argument message is stored in the small 8 byte header. + long int len = strtol(substr, NULL, 0); + + // Recieve the rest of the data. + if ( rsnd_recv_chunk(rd->conn.ctl_socket, temp, len, 0) < len ) + return -1; + + // We only bother if this is an INFO message. + substr = strstr(temp, "INFO"); + if ( substr == NULL ) + continue; + + // Jump over "INFO" in header + substr += 4; + + client_ptr = strtoull(substr, &tmpstr, 0); + if ( client_ptr == 0 || *tmpstr == '\0' ) + return -1; + + substr = tmpstr; + serv_ptr = strtoull(substr, NULL, 0); + if ( serv_ptr <= 0 ) + return -1; + } + + if ( client_ptr > 0 && serv_ptr > 0 ) + { + + int delay = rsd_delay(rd); + int delta = (int)(client_ptr - serv_ptr); + slock_lock(rd->thread.mutex); + delta += fifo_read_avail(rd->fifo_buffer); + slock_unlock(rd->thread.mutex); + + RSD_DEBUG("[RSound] Delay: %d, Delta: %d.\n", delay, delta); + + // We only update the pointer if the data we got is quite recent. + if ( rd->total_written - client_ptr < 4 * rd->backend_info.chunk_size && rd->total_written > client_ptr ) + { + int offset_delta = delta - delay; + int max_offset = rd->backend_info.chunk_size; + if ( offset_delta < -max_offset ) + offset_delta = -max_offset; + else if ( offset_delta > max_offset ) + offset_delta = max_offset; + + slock_lock(rd->thread.mutex); + rd->delay_offset += offset_delta; + slock_unlock(rd->thread.mutex); + RSD_DEBUG("[RSound] Changed offset-delta: %d.\n", offset_delta); + } + } + + return 0; +} + +// Sort of simulates the behavior of pthread_cancel() +#define _TEST_CANCEL() \ + if ( !rd->thread_active ) \ + break + +/* The blocking thread */ +static void rsnd_thread ( void * thread_data ) +{ + /* We share data between thread and callable functions */ + rsound_t *rd = thread_data; + int rc; + char buffer[rd->backend_info.chunk_size]; + + /* Plays back data as long as there is data in the buffer. Else, sleep until it can. */ + /* Two (;;) for loops! :3 Beware! */ + for (;;) + { + for(;;) + { + _TEST_CANCEL(); + + // We ask the server to send its latest backend data. Do not really care about errors atm. + // We only bother to check after 1 sec of audio has been played, as it might be quite inaccurate in the start of the stream. + if ( (rd->conn_type & RSD_CONN_PROTO) && (rd->total_written > rd->channels * rd->rate * rd->samplesize) ) + { + rsnd_send_info_query(rd); + rsnd_update_server_info(rd); + } + + /* If the buffer is empty or we've stopped the stream, jump out of this for loop */ + slock_lock(rd->thread.mutex); + if ( fifo_read_avail(rd->fifo_buffer) < rd->backend_info.chunk_size || !rd->thread_active ) + { + slock_unlock(rd->thread.mutex); + break; + } + slock_unlock(rd->thread.mutex); + + _TEST_CANCEL(); + slock_lock(rd->thread.mutex); + fifo_read(rd->fifo_buffer, buffer, sizeof(buffer)); + slock_unlock(rd->thread.mutex); + rc = rsnd_send_chunk(rd->conn.socket, buffer, sizeof(buffer), 1); + + /* If this happens, we should make sure that subsequent and current calls to rsd_write() will fail. */ + if ( rc != (int)rd->backend_info.chunk_size ) + { + _TEST_CANCEL(); + rsnd_reset(rd); + + /* Wakes up a potentially sleeping fill_buffer() */ + scond_signal(rd->thread.cond); + + /* This thread will not be joined, so detach. */ + sthread_detach(rd->thread.thread); + return; + } + + /* If this was the first write, set the start point for the timer. */ + if ( !rd->has_written ) + { + slock_lock(rd->thread.mutex); + rd->start_time = rsnd_get_time_usec(); + rd->has_written = 1; + slock_unlock(rd->thread.mutex); + } + + /* Increase the total_written counter. Used in rsnd_drain() */ + slock_lock(rd->thread.mutex); + rd->total_written += rc; + slock_unlock(rd->thread.mutex); + + /* Buffer has decreased, signal fill_buffer() */ + scond_signal(rd->thread.cond); + + } + + /* If we're still good to go, sleep. We are waiting for fill_buffer() to fill up some data. */ + + if ( rd->thread_active ) + { + // There is a very slim change of getting a deadlock using the cond_wait scheme. + // This solution is rather dirty, but avoids complete deadlocks at the very least. + + slock_lock(rd->thread.cond_mutex); + scond_signal(rd->thread.cond); + + if ( rd->thread_active ) + { + RSD_DEBUG("[RSound] Thread going to sleep.\n"); + scond_wait(rd->thread.cond, rd->thread.cond_mutex); + RSD_DEBUG("[RSound] Thread woke up.\n"); + } + + slock_unlock(rd->thread.cond_mutex); + RSD_DEBUG("[RSound] Thread unlocked cond_mutex.\n"); + } + /* Abort request, chap. */ + else + { + scond_signal(rd->thread.cond); + return; + } + + } +} + +/* Callback thread */ +static void rsnd_cb_thread(void *thread_data) +{ + rsound_t *rd = thread_data; + size_t read_size = rd->backend_info.chunk_size; + if (rd->cb_max_size != 0 && rd->cb_max_size < read_size) + read_size = rd->cb_max_size; + + uint8_t buffer[rd->backend_info.chunk_size]; + + while (rd->thread_active) + { + size_t has_read = 0; + + while (has_read < rd->backend_info.chunk_size) + { + size_t will_read = read_size < rd->backend_info.chunk_size - has_read ? read_size : rd->backend_info.chunk_size - has_read; + + rsd_callback_lock(rd); + ssize_t ret = rd->audio_callback(buffer + has_read, will_read, rd->cb_data); + rsd_callback_unlock(rd); + + if (ret < 0) + { + rsnd_reset(rd); + sthread_detach(rd->thread.thread); + rd->error_callback(rd->cb_data); + return; + } + + has_read += ret; + + if (ret < (ssize_t)will_read) + { + if ((int)rsd_delay_ms(rd) < rd->max_latency / 2) + { + RSD_DEBUG("[RSound] Callback thread: Requested %d bytes, got %d.\n", (int)will_read, (int)ret); + memset(buffer + has_read, 0, will_read - ret); + has_read += will_read - ret; + } + else + { + // The network might do things in large chunks, so it may request large amounts of data in short periods of time. + // This breaks when the caller cannot buffer up big buffers beforehand, so do short sleeps inbetween. + // This is somewhat dirty, but I cannot see a better solution + retro_sleep(1); + } + } + } + + ssize_t ret = rsnd_send_chunk(rd->conn.socket, buffer, rd->backend_info.chunk_size, 1); + if (ret != (ssize_t)rd->backend_info.chunk_size) + { + rsnd_reset(rd); + sthread_detach(rd->thread.thread); + rd->error_callback(rd->cb_data); + return; + } + + /* If this was the first write, set the start point for the timer. */ + if (!rd->has_written) + { + rd->start_time = rsnd_get_time_usec(); + rd->has_written = 1; + } + + rd->total_written += rd->backend_info.chunk_size; + + if ( (rd->conn_type & RSD_CONN_PROTO) && (rd->total_written > rd->channels * rd->rate * rd->samplesize) ) + { + rsnd_send_info_query(rd); + rsnd_update_server_info(rd); + } + + if (rd->has_written) + rsd_delay_wait(rd); + } +} + +static int rsnd_reset(rsound_t *rd) +{ + if ( rd->conn.socket != -1 ) + net_socketclose(rd->conn.socket); + + if ( rd->conn.socket != 1 ) + net_socketclose(rd->conn.ctl_socket); + + /* Pristine stuff, baby! */ + slock_lock(rd->thread.mutex); + rd->conn.socket = -1; + rd->conn.ctl_socket = -1; + rd->total_written = 0; + rd->ready_for_data = 0; + rd->has_written = 0; + rd->bytes_in_buffer = 0; + rd->thread_active = 0; + rd->delay_offset = 0; + slock_unlock(rd->thread.mutex); + scond_signal(rd->thread.cond); + + return 0; +} + + +int rsd_stop(rsound_t *rd) +{ + assert(rd != NULL); + rsnd_stop_thread(rd); + + const char buf[] = "RSD 5 STOP"; + + // Do not really care about errors here. + // The socket will be closed down in any case in rsnd_reset(). + rsnd_send_chunk(rd->conn.ctl_socket, buf, strlen(buf), 0); + + rsnd_reset(rd); + return 0; +} + +size_t rsd_write( rsound_t *rsound, const void* buf, size_t size) +{ + size_t max_write, written = 0; + assert(rsound != NULL); + if ( !rsound->ready_for_data ) + return 0; + + max_write = (rsound->buffer_size - rsound->backend_info.chunk_size)/2; + + /* Makes sure that we can handle arbitrary large write sizes */ + + while ( written < size ) + { + size_t write_size = (size - written) > max_write ? max_write : (size - written); + size_t result = rsnd_fill_buffer(rsound, (const char*)buf + written, write_size); + + if (result == 0) + { + rsd_stop(rsound); + return 0; + } + written += result; + } + return written; +} + +int rsd_start(rsound_t *rsound) +{ + assert(rsound != NULL); + assert(rsound->rate > 0); + assert(rsound->channels > 0); + assert(rsound->host != NULL); + assert(rsound->port != NULL); + + if ( rsnd_create_connection(rsound) < 0 ) + return -1; + + return 0; +} + +int rsd_exec(rsound_t *rsound) +{ + assert(rsound != NULL); + RSD_DEBUG("[RSound] rsd_exec().\n"); + + // Makes sure we have a working connection + if ( rsound->conn.socket < 0 ) + { + RSD_DEBUG("[RSound] Calling rsd_start().\n"); + if ( rsd_start(rsound) < 0 ) + { + RSD_ERR("[RSound] rsd_start() failed.\n"); + return -1; + } + } + + RSD_DEBUG("[RSound] Closing ctl.\n"); + if ( rsnd_close_ctl(rsound) < 0 ) + return -1; + + int fd = rsound->conn.socket; + RSD_DEBUG("[RSound] Socket: %d.\n", fd); + + rsnd_stop_thread(rsound); + +#if defined(__CELLOS_LV2__) + int i = 0; + setsockopt(rsound->conn.socket, SOL_SOCKET, SO_NBIO, &i, sizeof(int)); +#else + fcntl(rsound->conn.socket, F_SETFL, O_NONBLOCK); +#endif + + // Flush the buffer + + if ( fifo_read_avail(rsound->fifo_buffer) > 0 ) + { + char buffer[fifo_read_avail(rsound->fifo_buffer)]; + fifo_read(rsound->fifo_buffer, buffer, sizeof(buffer)); + if ( rsnd_send_chunk(fd, buffer, sizeof(buffer), 1) != (ssize_t)sizeof(buffer) ) + { + RSD_DEBUG("[RSound] Failed flushing buffer.\n"); + net_socketclose(fd); + return -1; + } + } + + RSD_DEBUG("[RSound] Returning from rsd_exec().\n"); + rsd_free(rsound); + return fd; +} + + +/* ioctl()-ish param setting :D */ +int rsd_set_param(rsound_t *rd, enum rsd_settings option, void* param) +{ + assert(rd != NULL); + assert(param != NULL); + int retval = 0; + + switch(option) + { + case RSD_SAMPLERATE: + if ( *(int*)param > 0 ) + { + rd->rate = *((int*)param); + break; + } + else + retval = -1; + break; + case RSD_CHANNELS: + if ( *(int*)param > 0 ) + { + rd->channels = *((int*)param); + break; + } + else + retval = -1; + break; + case RSD_HOST: + if ( rd->host != NULL ) + free(rd->host); + rd->host = strdup((char*)param); + break; + case RSD_PORT: + if ( rd->port != NULL ) + free(rd->port); + rd->port = strdup((char*)param); + break; + case RSD_BUFSIZE: + if ( *(int*)param > 0 ) + { + rd->buffer_size = *((int*)param); + break; + } + else + retval = -1; + break; + case RSD_LATENCY: + rd->max_latency = *((int*)param); + break; + + // Checks if format is valid. + case RSD_FORMAT: + rd->format = (uint16_t)(*((int*)param)); + rd->samplesize = rsnd_format_to_samplesize(rd->format); + + if ( rd->samplesize == -1 ) + { + rd->format = RSD_S16_LE; + rd->samplesize = rsnd_format_to_samplesize(RSD_S16_LE); + *((int*)param) = (int)RSD_S16_LE; + } + break; + + case RSD_IDENTITY: + strlcpy(rd->identity, param, sizeof(rd->identity)); + rd->identity[sizeof(rd->identity)-1] = '\0'; + break; + + default: + retval = -1; + } + + return retval; +} + +void rsd_delay_wait(rsound_t *rd) +{ + + /* When called, we make sure that the latency never goes over the time designated in RSD_LATENCY. + Useful for certain blocking I/O designs where the latency still needs to be quite low. + Without this, the latency of the stream will depend on how big the network buffers are. + ( We simulate that we're a low latency sound card ) */ + + /* Should we bother with checking latency at all? */ + if ( rd->max_latency > 0 ) + { + /* Latency of stream in ms */ + int latency_ms = rsd_delay_ms(rd); + + + /* Should we sleep for a while to keep the latency low? */ + if ( rd->max_latency < latency_ms ) + { + int64_t sleep_ms = latency_ms - rd->max_latency; + RSD_DEBUG("[RSound] Delay wait: %d ms.\n", (int)sleep_ms); + retro_sleep((int)sleep_ms); + } + } +} + +size_t rsd_pointer(rsound_t *rsound) +{ + assert(rsound != NULL); + int ptr; + + ptr = rsnd_get_ptr(rsound); + + return ptr; +} + +size_t rsd_get_avail(rsound_t *rd) +{ + assert(rd != NULL); + int ptr; + ptr = rsnd_get_ptr(rd); + return rd->buffer_size - ptr; +} + +size_t rsd_delay(rsound_t *rd) +{ + assert(rd != NULL); + int ptr = rsnd_get_delay(rd); + if ( ptr < 0 ) + ptr = 0; + + return ptr; +} + +size_t rsd_delay_ms(rsound_t* rd) +{ + assert(rd); + assert(rd->rate > 0 && rd->channels > 0); + + return (rsd_delay(rd) * 1000) / ( rd->rate * rd->channels * rd->samplesize ); +} + +int rsd_pause(rsound_t* rsound, int enable) +{ + assert(rsound != NULL); + if ( enable ) + return rsd_stop(rsound); + else + return rsd_start(rsound); +} + +int rsd_init(rsound_t** rsound) +{ + assert(rsound != NULL); + *rsound = calloc(1, sizeof(rsound_t)); + if ( *rsound == NULL ) + return -1; + + (*rsound)->conn.socket = -1; + (*rsound)->conn.ctl_socket = -1; + + (*rsound)->thread.mutex = slock_new(); + (*rsound)->thread.cond_mutex = slock_new(); + (*rsound)->cb_lock = slock_new(); + (*rsound)->thread.cond = scond_new(); + + // Assumes default of S16_LE samples. + int format = RSD_S16_LE; + rsd_set_param(*rsound, RSD_FORMAT, &format); + + rsd_set_param(*rsound, RSD_HOST, RSD_DEFAULT_HOST); + rsd_set_param(*rsound, RSD_PORT, RSD_DEFAULT_PORT); + +#ifdef __CELLOS_LV2__ + if (init_count == 0) + { + cellSysmoduleLoadModule(CELL_SYSMODULE_NET); + sys_net_initialize_network(); + init_count++; + } +#endif + + return 0; +} + +int rsd_simple_start(rsound_t** rsound, const char* host, const char* port, const char* ident, + int rate, int channels, enum rsd_format format) +{ + if ( rsd_init(rsound) < 0 ) + return -1; + + int fmt = format; + + if ( host != NULL ) + rsd_set_param(*rsound, RSD_HOST, (void*)host); + if ( port != NULL ) + rsd_set_param(*rsound, RSD_PORT, (void*)port); + if ( ident != NULL ) + rsd_set_param(*rsound, RSD_IDENTITY, (void*)ident); + + if ( rsd_set_param(*rsound, RSD_SAMPLERATE, &rate) < 0 || + rsd_set_param(*rsound, RSD_CHANNELS, &channels) < 0 || + rsd_set_param(*rsound, RSD_FORMAT, &fmt) < 0 ) + { + rsd_free(*rsound); + return -1; + } + + if ( rsd_start(*rsound) < 0 ) + { + rsd_free(*rsound); + return -1; + } + + return 0; +} + +void rsd_set_callback(rsound_t *rsound, rsd_audio_callback_t audio_cb, rsd_error_callback_t err_cb, size_t max_size, void *userdata) +{ + assert(rsound != NULL); + + rsound->audio_callback = audio_cb; + rsound->error_callback = err_cb; + rsound->cb_max_size = max_size; + rsound->cb_data = userdata; + + if (rsound->audio_callback) + assert(rsound->error_callback); +} + +void rsd_callback_lock(rsound_t *rsound) +{ + slock_lock(rsound->cb_lock); +} + +void rsd_callback_unlock(rsound_t *rsound) +{ + slock_unlock(rsound->cb_lock); +} + +int rsd_free(rsound_t *rsound) +{ + assert(rsound != NULL); + if (rsound->fifo_buffer) + fifo_free(rsound->fifo_buffer); + if (rsound->host) + free(rsound->host); + if (rsound->port) + free(rsound->port); + + slock_free(rsound->thread.mutex); + slock_free(rsound->thread.cond_mutex); + slock_free(rsound->cb_lock); + scond_free(rsound->thread.cond); + + free(rsound); + + return 0; +} diff --git a/PVSupport/Sources/retro/audio/test/Makefile b/PVSupport/Sources/retro/audio/test/Makefile new file mode 100644 index 0000000000..771d0de753 --- /dev/null +++ b/PVSupport/Sources/retro/audio/test/Makefile @@ -0,0 +1,108 @@ +TESTS := test-sinc-lowest \ + test-snr-sinc-lowest \ + test-sinc-lower \ + test-snr-sinc-lower \ + test-sinc \ + test-snr-sinc \ + test-sinc-higher \ + test-snr-sinc-higher \ + test-sinc-highest \ + test-snr-sinc-highest \ + test-cc \ + test-snr-cc + +LIBRETRO_COMM_DIR = ../../libretro-common + +CFLAGS += -O3 -ffast-math -g -Wall -pedantic -march=native -std=gnu99 +CFLAGS += -DRESAMPLER_TEST -DRARCH_DUMMY_LOG -DRARCH_INTERNAL +CFLAGS += -I$(LIBRETRO_COMM_DIR)/include -I../../ + +LDFLAGS += -lm + +SHAREDOBJ += $(LIBRETRO_COMM_DIR)/memmap/memalign.o \ + $(LIBRETRO_COMM_DIR)/lists/string_list.o \ + ../..//config_file_userdata.o \ + ../audio_resampler_driver.o \ + $(LIBRETRO_COMM_DIR)/file/config_file.o \ + $(LIBRETRO_COMM_DIR)/streams/file_stream.o \ + $(LIBRETRO_COMM_DIR)/string/stdstring.o \ + $(LIBRETRO_COMM_DIR)/file/file_path.o \ + $(LIBRETRO_COMM_DIR)/file/retro_stat.o \ + $(LIBRETRO_COMM_DIR)/compat/compat_strl.o \ + $(LIBRETRO_COMM_DIR)/hash/rhash.o \ + +all: $(TESTS) + +main-cc.o: main.c + $(CC) -c -o $@ $< $(CFLAGS) -DRESAMPLER_IDENT='"CC"' + +snr-cc.o: snr.c + $(CC) -c -o $@ $< $(CFLAGS) -DRESAMPLER_IDENT='"CC"' + +cc-resampler.o: ../drivers_resampler/cc_resampler.c + $(CC) -c -o $@ $< $(CFLAGS) + +sinc-lowest.o: ../drivers_resampler/sinc_resampler.c + $(CC) -c -o $@ $< $(CFLAGS) -DSINC_LOWEST_QUALITY + +sinc-lower.o: ../drivers_resampler/sinc_resampler.c + $(CC) -c -o $@ $< $(CFLAGS) -DSINC_LOWER_QUALITY + +sinc.o: ../drivers_resampler/sinc_resampler.c + $(CC) -c -o $@ $< $(CFLAGS) + +nearest_resampler.o: ../drivers_resampler/nearest_resampler.c + $(CC) -c -o $@ $< $(CFLAGS) + +sinc-higher.o: ../drivers_resampler/sinc.c + $(CC) -c -o $@ $< $(CFLAGS) -DSINC_HIGHER_QUALITY + +sinc-highest.o: ../drivers_resampler/sinc.c + $(CC) -c -o $@ $< $(CFLAGS) -DSINC_HIGHEST_QUALITY + +test-sinc-lowest: sinc-lowest.o ../audio_utils.o main.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-snr-sinc-lowest: sinc-lowest.o ../audio_utils.o snr.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-sinc-lower: sinc-lower.o ../audio_utils.o main.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-snr-sinc-lower: sinc-lower.o ../audio_utils.o snr.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-sinc: sinc.o ../audio_utils.o main.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-snr-sinc: sinc.o ../audio_utils.o snr.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-sinc-higher: sinc-higher.o ../audio_utils.o main.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-snr-sinc-higher: sinc-higher.o ../audio_utils.o snr.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-sinc-highest: sinc-highest.o ../audio_utils.o main.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-snr-sinc-highest: sinc-highest.o ../audio_utils.o snr.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-cc: cc-resampler.o ../audio_utils.o main-cc.o resampler-cc.o sinc.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +test-snr-cc: cc-resampler.o ../audio_utils.o snr-cc.o resampler-cc.o sinc.o nearest_resampler.o $(SHAREDOBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +%.o: %.c + $(CC) -c -o $@ $< $(CFLAGS) + +clean: + rm -f $(TESTS) + rm -f *.o + rm -f ../*.o + +.PHONY: clean + diff --git a/PVSupport/Sources/retro/audio/test/kaiser_window.m b/PVSupport/Sources/retro/audio/test/kaiser_window.m new file mode 100644 index 0000000000..a55517f08e --- /dev/null +++ b/PVSupport/Sources/retro/audio/test/kaiser_window.m @@ -0,0 +1,6 @@ +function win = kaiser_window(N, beta) +% Create an N-point kaiser window with given beta. + +indices = 2 * (0 : N - 1) / (N - 1) - 1; +mod = modified_bessel(beta); +win = modified_bessel(beta * sqrt(1 - indices.^2)) / mod; \ No newline at end of file diff --git a/PVSupport/Sources/retro/audio/test/main.c b/PVSupport/Sources/retro/audio/test/main.c new file mode 100644 index 0000000000..047095c62f --- /dev/null +++ b/PVSupport/Sources/retro/audio/test/main.c @@ -0,0 +1,102 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +// Resampler that reads raw S16NE/stereo from stdin and outputs to stdout in S16NE/stereo. +// Used for testing and performance benchmarking. + +#include "../audio_resampler_driver.h" +#include "../audio_utils.h" +#include +#include +#include + +#ifndef RESAMPLER_IDENT +#define RESAMPLER_IDENT "sinc" +#endif + +int main(int argc, char *argv[]) +{ + int16_t input_i[1024]; + int16_t output_i[1024 * 8]; + + float input_f[1024]; + float output_f[1024 * 8]; + + double in_rate, out_rate, ratio; + double ratio_max_deviation = 0.0; + const rarch_resampler_t *resampler = NULL; + void *re = NULL; + + srand(time(NULL)); + + if (argc < 3 || argc > 4) + { + fprintf(stderr, "Usage: %s [ratio deviation] (max ratio: 8.0)\n", argv[0]); + return 1; + } + else if (argc == 4) + { + ratio_max_deviation = fabs(strtod(argv[3], NULL)); + fprintf(stderr, "Ratio deviation: %.4f.\n", ratio_max_deviation); + } + + in_rate = strtod(argv[1], NULL); + out_rate = strtod(argv[2], NULL); + ratio = out_rate / in_rate; + + if (ratio >= 7.99) + { + fprintf(stderr, "Ratio is too high.\n"); + return 1; + } + + if (!rarch_resampler_realloc(&re, &resampler, RESAMPLER_IDENT, out_rate / in_rate)) + { + fprintf(stderr, "Failed to allocate resampler ...\n"); + return 1; + } + + for (;;) + { + size_t output_samples; + struct resampler_data data; + double uniform, rate_mod; + + if (fread(input_i, sizeof(int16_t), 1024, stdin) != 1024) + break; + + uniform = (2.0 * rand()) / RAND_MAX - 1.0; + rate_mod = 1.0 + ratio_max_deviation * uniform; + + convert_s16_to_float(input_f, input_i, 1024, 1.0f); + + data.data_in = input_f; + data.data_out = output_f; + data.input_frames = sizeof(input_f) / (2 * sizeof(float)); + data.ratio = ratio * rate_mod; + + rarch_resampler_process(resampler, re, &data); + + output_samples = data.output_frames * 2; + + convert_float_to_s16(output_i, output_f, output_samples); + + if (fwrite(output_i, sizeof(int16_t), output_samples, stdout) != output_samples) + break; + } + + rarch_resampler_freep(&resampler, &re); +} + diff --git a/PVSupport/Sources/retro/audio/test/modified_bessel.m b/PVSupport/Sources/retro/audio/test/modified_bessel.m new file mode 100644 index 0000000000..3ffa6d7c03 --- /dev/null +++ b/PVSupport/Sources/retro/audio/test/modified_bessel.m @@ -0,0 +1,21 @@ +function val = modified_bessel(x) + +% Mirrors operation as done in RetroArch. Verify accuracy against Matlab's +% implementation. + +sum = zeros(size(x)); +factorial = ones(size(x)); +factorial_mult = zeros(size(x)); +x_pow = ones(size(x)); +two_div_pow = ones(size(x)); +x_sqr = x .* x; + +for i = 0 : 17 + sum = sum + x_pow .* two_div_pow ./ (factorial .* factorial); + factorial_mult = factorial_mult + 1.0; + x_pow = x_pow .* x_sqr; + two_div_pow = two_div_pow * 0.25; + factorial = factorial .* factorial_mult; +end + +val = sum; \ No newline at end of file diff --git a/PVSupport/Sources/retro/audio/test/sinc_test.m b/PVSupport/Sources/retro/audio/test/sinc_test.m new file mode 100644 index 0000000000..1c7401fcb2 --- /dev/null +++ b/PVSupport/Sources/retro/audio/test/sinc_test.m @@ -0,0 +1,51 @@ +% MATLAB test case for RetroArch SINC upsampler. +close all; + +%% +% Test RetroArch's kaiser function. +real_kaiser = kaiser(1024, 10.0)'; +rarch_kaiser = kaiser_window(1024, 10.0); +figure('name', 'Bessel function test'); +subplot(2, 1, 1), plot(rarch_kaiser), title('RetroArch kaiser'); +subplot(2, 1, 2), plot(rarch_kaiser - real_kaiser), title('Error'); + +%% +% 4-tap and 8-tap are Lanczos windowed, but include here for completeness. +phases = 256; +ratio = 2.0; +bw = min(1.0, ratio); +downsample = round(phases / ratio); +cutoffs = bw * [0.65 0.75 0.825 0.90 0.962]; +betas = [2.0 3.0 5.5 10.5 14.5]; + +sidelobes = round([2 4 8 32 128] / bw); +taps = sidelobes * 2; + +freqs = 0.05 : 0.02 : 0.99; + +%filters = length(taps); +%for i = 1 : filters +for i = 5 + filter_length = taps(i) * phases; + + % Generate SINC. + sinc_indices = 2 * ((0 : (filter_length - 1)) / filter_length) - 1; + s = cutoffs(i) * sinc(cutoffs(i) * sinc_indices * sidelobes(i)); + win = kaiser(filter_length, betas(i))'; + filter = s .* win; + + impulse_response_half = upfirdn(1, filter, phases, downsample) / bw; + figure('name', sprintf('Response SINC: %d taps', taps(i))); + freqz(impulse_response_half); + ylim([-200 0]); + + signal = zeros(1, 80001); + for freq = freqs + signal = signal + sin(pi * freq * (0 : 80000)); + end + + resampled = upfirdn(signal, filter, phases, downsample); + figure('name', sprintf('Kaiser SINC: %d taps, w = %.f', taps(i), freq)); + freqz(resampled .* kaiser(length(resampled), 40.0)', 1, 16 * 1024); + ylim([-180 100]); +end \ No newline at end of file diff --git a/PVSupport/Sources/retro/audio/test/snr.c b/PVSupport/Sources/retro/audio/test/snr.c new file mode 100644 index 0000000000..7e76ad990d --- /dev/null +++ b/PVSupport/Sources/retro/audio/test/snr.c @@ -0,0 +1,353 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "../audio_resampler_driver.h" +#include "../audio_utils.h" + +#ifndef RESAMPLER_IDENT +#define RESAMPLER_IDENT "sinc" +#endif + +static void gen_signal(float *out, double omega, double bias_samples, size_t samples) +{ + size_t i; + + for (i = 0; i < samples; i += 2) + { + out[i + 0] = cos(((i >> 1) + bias_samples) * omega); + out[i + 1] = out[i + 0]; + } +} + +struct snr_result +{ + double snr; + double gain; + + unsigned alias_freq[3]; + double alias_power[3]; +}; + +static unsigned bitrange(unsigned len) +{ + unsigned ret = 0; + while ((len >>= 1)) + ret++; + + return ret; +} + +static unsigned bitswap(unsigned i, unsigned range) +{ + unsigned shifts; + unsigned ret = 0; + + for (shifts = 0; shifts < range; shifts++) + ret |= (i & (1 << (range - shifts - 1))) ? (1 << shifts) : 0; + + return ret; +} + +/* When interleaving the butterfly buffer, addressing puts bits in reverse. + * [0, 1, 2, 3, 4, 5, 6, 7] => [0, 4, 2, 6, 1, 5, 3, 7] */ +static void interleave(complex double *butterfly_buf, size_t samples) +{ + unsigned i; + unsigned range = bitrange(samples); + + for (i = 0; i < samples; i++) + { + unsigned target = bitswap(i, range); + + if (target > i) + { + complex double tmp = butterfly_buf[target]; + butterfly_buf[target] = butterfly_buf[i]; + butterfly_buf[i] = tmp; + } + } +} + +static complex double gen_phase(double index) +{ + return cexp(M_PI * I * index); +} + +static void butterfly(complex double *a, complex double *b, complex double mod) +{ + complex double a_; + complex double b_; + + mod *= *b; + a_ = *a + mod; + b_ = *a - mod; + *a = a_; + *b = b_; +} + +static void butterflies(complex double *butterfly_buf, double phase_dir, size_t step_size, size_t samples) +{ + unsigned i, j; + + for (i = 0; i < samples; i += 2 * step_size) + for (j = i; j < i + step_size; j++) + butterfly(&butterfly_buf[j], &butterfly_buf[j + step_size], gen_phase((phase_dir * (j - i)) / step_size)); +} + +static void calculate_fft(const float *data, complex double *butterfly_buf, size_t samples) +{ + unsigned i; + + /* Enforce POT. */ + assert((samples & (samples - 1)) == 0); + + for (i = 0; i < samples; i++) + butterfly_buf[i] = data[2 * i]; + + /* Interleave buffer to work with FFT. */ + interleave(butterfly_buf, samples); + + /* Fly, lovely butterflies! :D */ + for (unsigned step_size = 1; step_size < samples; step_size *= 2) + butterflies(butterfly_buf, -1.0, step_size, samples); +} + +static void calculate_fft_adjust(complex double *butterfly_buf, double gain, bool merge_high, size_t samples) +{ + unsigned i; + if (merge_high) + { + for (i = 1; i < samples / 2; i++) + butterfly_buf[i] *= 2.0; + } + + /* Normalize amplitudes. */ + for (i = 0; i < samples; i++) + butterfly_buf[i] *= gain; +} + +static void calculate_ifft(complex double *butterfly_buf, size_t samples, bool normalize) +{ + unsigned step_size; + + /* Enforce POT. */ + assert((samples & (samples - 1)) == 0); + + interleave(butterfly_buf, samples); + + /* Fly, lovely butterflies! In opposite direction! :D */ + for (step_size = 1; step_size < samples; step_size *= 2) + butterflies(butterfly_buf, 1.0, step_size, samples); + + if (normalize) + calculate_fft_adjust(butterfly_buf, 1.0 / samples, false, samples); +} + +static void test_fft(void) +{ + unsigned i, j; + float signal[32]; + complex double butterfly_buf[16]; + complex double buf_tmp[16]; + const float cos_freqs[] = { + 1.0, 4.0, 6.0, + }; + const float sin_freqs[] = { + -2.0, 5.0, 7.0, + }; + + fprintf(stderr, "Sanity checking FFT ...\n"); + + for (i = 0; i < 16; i++) + { + signal[2 * i] = 0.0; + for (j = 0; j < sizeof(cos_freqs) / sizeof(cos_freqs[0]); j++) + signal[2 * i] += cos(2.0 * M_PI * i * cos_freqs[j] / 16.0); + for ( j = 0; j < sizeof(sin_freqs) / sizeof(sin_freqs[0]); j++) + signal[2 * i] += sin(2.0 * M_PI * i * sin_freqs[j] / 16.0); + } + + calculate_fft(signal, butterfly_buf, 16); + memcpy(buf_tmp, butterfly_buf, sizeof(buf_tmp)); + calculate_fft_adjust(buf_tmp, 1.0 / 16, true, 16); + + fprintf(stderr, "FFT: { "); + for (i = 0; i < 7; i++) + fprintf(stderr, "(%4.2lf, %4.2lf), ", creal(buf_tmp[i]), cimag(buf_tmp[i])); + fprintf(stderr, "(%4.2lf, %4.2lf) }\n", creal(buf_tmp[7]), cimag(buf_tmp[7])); + + calculate_ifft(butterfly_buf, 16, true); + + fprintf(stderr, "Original: { "); + for (i = 0; i < 15; i++) + fprintf(stderr, "%5.2f, ", signal[2 * i]); + fprintf(stderr, "%5.2f }\n", signal[2 * 15]); + + fprintf(stderr, "FFT => IFFT: { "); + for ( i = 0; i < 15; i++) + fprintf(stderr, "%5.2lf, ", creal(butterfly_buf[i])); + fprintf(stderr, "%5.2lf }\n", creal(butterfly_buf[15])); +} + +static void set_alias_power(struct snr_result *res, unsigned freq, double power) +{ + unsigned i; + for (i = 0; i < 3; i++) + { + if (power >= res->alias_power[i]) + { + memmove(res->alias_freq + i + 1, res->alias_freq + i, (2 - i) * sizeof(res->alias_freq[0])); + memmove(res->alias_power + i + 1, res->alias_power + i, (2 - i) * sizeof(res->alias_power[0])); + res->alias_power[i] = power; + res->alias_freq[i] = freq; + break; + } + } +} + +static void calculate_snr(struct snr_result *res, + unsigned in_rate, unsigned max_rate, + const float *resamp, complex double *butterfly_buf, + size_t samples) +{ + unsigned i; + double signal; + double noise = 0.0; + + samples >>= 1; + calculate_fft(resamp, butterfly_buf, samples); + calculate_fft_adjust(butterfly_buf, 1.0 / samples, true, samples); + + memset(res, 0, sizeof(*res)); + + signal = cabs(butterfly_buf[in_rate] * butterfly_buf[in_rate]); + butterfly_buf[in_rate] = 0.0; + + /* Aliased frequencies above half the original sampling rate are not considered. */ + for (i = 0; i <= max_rate; i++) + { + double power = cabs(butterfly_buf[i] * butterfly_buf[i]); + set_alias_power(res, i, power); + noise += power; + } + + res->snr = 10.0 * log10(signal / noise); + res->gain = 10.0 * log10(signal); + + for (i = 0; i < 3; i++) + res->alias_power[i] = 10.0 * log10(res->alias_power[i]); +} + +int main(int argc, char *argv[]) +{ + static const float freq_list[] = { + 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, + 0.010, 0.015, 0.020, 0.025, 0.030, 0.035, 0.040, 0.045, 0.050, + 0.060, 0.070, 0.080, 0.090, + 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, + 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, + 0.46, 0.47, 0.48, 0.49, + 0.495, 0.496, 0.497, 0.498, 0.499, + }; + + unsigned out_rate, in_rate, samples, i; + double ratio; + float *input, *output; + complex double *butterfly_buf; + const rarch_resampler_t *resampler = NULL; + const unsigned fft_samples = 1024 * 128; + void *re = NULL; + + if (argc != 2) + { + fprintf(stderr, "Usage: %s (out-rate is fixed for FFT).\n", argv[0]); + return 1; + } + + ratio = strtod(argv[1], NULL); + out_rate = fft_samples / 2; + in_rate = round(out_rate / ratio); + ratio = (double)out_rate / in_rate; + + samples = in_rate * 4; + input = calloc(sizeof(float), samples); + output = calloc(sizeof(float), (fft_samples + 16) * 2); + butterfly_buf = calloc(sizeof(complex double), fft_samples / 2); + + assert(input); + assert(output); + + if (!rarch_resampler_realloc(&re, &resampler, RESAMPLER_IDENT, ratio)) + { + free(input); + free(output); + free(butterfly_buf); + return 1; + } + + test_fft(); + + for (i = 0; i < sizeof(freq_list) / sizeof(freq_list[0]); i++) + { + struct resampler_data data; + unsigned max_freq; + struct snr_result res = {0}; + unsigned freq = freq_list[i] * in_rate; + double omega = 2.0 * M_PI * freq / in_rate; + + gen_signal(input, omega, 0, samples); + + data.data_in = input; + data.data_out = output; + data.input_frames = in_rate * 2; + data.ratio = ratio; + + rarch_resampler_process(resampler, re, &data); + + /* We generate 2 seconds worth of audio, however, + * only the last second is considered so phase has stabilized. */ + max_freq = min(in_rate, out_rate) / 2; + if (freq > max_freq) + continue; + + calculate_snr(&res, freq, max_freq, output + fft_samples - 2048, butterfly_buf, fft_samples); + + printf("SNR @ w = %5.3f : %6.2lf dB, Gain: %6.1lf dB\n", + freq_list[i], res.snr, res.gain); + + printf("\tAliases: #1 (w = %5.3f, %6.2lf dB), #2 (w = %5.3f, %6.2lf dB), #3 (w = %5.3f, %6.2lf dB)\n", + res.alias_freq[0] / (float)in_rate, res.alias_power[0], + res.alias_freq[1] / (float)in_rate, res.alias_power[1], + res.alias_freq[2] / (float)in_rate, res.alias_power[2]); + } + + rarch_resampler_freep(&resampler, &re); + + free(input); + free(output); + free(butterfly_buf); +} + diff --git a/PVSupport/Sources/retro/audio/test/test-rate-control.sh b/PVSupport/Sources/retro/audio/test/test-rate-control.sh new file mode 100755 index 0000000000..add3f38b59 --- /dev/null +++ b/PVSupport/Sources/retro/audio/test/test-rate-control.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +ffmpeg -i "$1" -f s16le - | ./test-sinc-highest 44100 48000 $3 | ffmpeg -y -ar 48000 -f s16le -ac 2 -i - "$2" diff --git a/PVSupport/Sources/retro/autosave.h b/PVSupport/Sources/retro/autosave.h new file mode 100644 index 0000000000..f0a207ac47 --- /dev/null +++ b/PVSupport/Sources/retro/autosave.h @@ -0,0 +1,48 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __RARCH_AUTOSAVE_H +#define __RARCH_AUTOSAVE_H + +#include + +#include + +RETRO_BEGIN_DECLS + +typedef struct autosave autosave_t; + +/** + * autosave_lock: + * + * Lock autosave. + **/ +void autosave_lock(void); + +/** + * autosave_unlock: + * + * Unlocks autosave. + **/ +void autosave_unlock(void); + +void autosave_init(void); + +void autosave_deinit(void); + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/camera/camera_driver.c b/PVSupport/Sources/retro/camera/camera_driver.c new file mode 100644 index 0000000000..3bb7d56391 --- /dev/null +++ b/PVSupport/Sources/retro/camera/camera_driver.c @@ -0,0 +1,238 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include "camera_driver.h" + +#include "../configuration.h" +#include "../retroarch.h" +#include "../runloop.h" +#include "../list_special.h" +#include "../verbosity.h" + +static const camera_driver_t *camera_drivers[] = { +#ifdef HAVE_V4L2 + &camera_v4l2, +#endif +#ifdef EMSCRIPTEN + &camera_rwebcam, +#endif +#ifdef ANDROID + &camera_android, +#endif +#if defined(HAVE_AVFOUNDATION) +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) + &camera_avfoundation, +#endif +#endif + &camera_null, + NULL, +}; + +/** + * camera_driver_find_handle: + * @idx : index of driver to get handle to. + * + * Returns: handle to camera driver at index. Can be NULL + * if nothing found. + **/ +const void *camera_driver_find_handle(int idx) +{ + const void *drv = camera_drivers[idx]; + if (!drv) + return NULL; + return drv; +} + +/** + * camera_driver_find_ident: + * @idx : index of driver to get handle to. + * + * Returns: Human-readable identifier of camera driver at index. Can be NULL + * if nothing found. + **/ +const char *camera_driver_find_ident(int idx) +{ + const camera_driver_t *drv = camera_drivers[idx]; + if (!drv) + return NULL; + return drv->ident; +} + +/** + * config_get_camera_driver_options: + * + * Get an enumerated list of all camera driver names, + * separated by '|'. + * + * Returns: string listing of all camera driver names, + * separated by '|'. + **/ +const char* config_get_camera_driver_options(void) +{ + return char_list_new_special(STRING_LIST_CAMERA_DRIVERS, NULL); +} + +void driver_camera_stop(void) +{ + camera_driver_ctl(RARCH_CAMERA_CTL_START, NULL); +} + +bool driver_camera_start(void) +{ + return camera_driver_ctl(RARCH_CAMERA_CTL_START, NULL); +} + +bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data) +{ + settings_t *settings = config_get_ptr(); + static struct retro_camera_callback camera_cb; + static const camera_driver_t *camera_driver = NULL; + static void *camera_data = NULL; + static bool camera_driver_active = false; + static bool camera_driver_data_own = false; + + switch (state) + { + case RARCH_CAMERA_CTL_DESTROY: + camera_driver_active = false; + camera_driver_data_own = false; + camera_driver = NULL; + camera_data = NULL; + break; + case RARCH_CAMERA_CTL_SET_OWN_DRIVER: + camera_driver_data_own = true; + break; + case RARCH_CAMERA_CTL_UNSET_OWN_DRIVER: + camera_driver_data_own = false; + break; + case RARCH_CAMERA_CTL_OWNS_DRIVER: + return camera_driver_data_own; + case RARCH_CAMERA_CTL_SET_ACTIVE: + camera_driver_active = true; + break; + case RARCH_CAMERA_CTL_FIND_DRIVER: + { + int i; + driver_ctx_info_t drv; + + drv.label = "camera_driver"; + drv.s = settings->camera.driver; + + driver_ctl(RARCH_DRIVER_CTL_FIND_INDEX, &drv); + + i = drv.len; + + if (i >= 0) + camera_driver = (const camera_driver_t*)camera_driver_find_handle(i); + else + { + unsigned d; + ELOG(@"Couldn't find any camera driver named \"%s\"\n", + settings->camera.driver); + RARCH_LOG_OUTPUT("Available camera drivers are:\n"); + for (d = 0; camera_driver_find_handle(d); d++) + RARCH_LOG_OUTPUT("\t%s\n", camera_driver_find_ident(d)); + + WLOG(@"Going to default to first camera driver...\n"); + + camera_driver = (const camera_driver_t*)camera_driver_find_handle(0); + + if (!camera_driver) + retroarch_fail(1, "find_camera_driver()"); + } + } + break; + case RARCH_CAMERA_CTL_UNSET_ACTIVE: + camera_driver_active = false; + break; + case RARCH_CAMERA_CTL_IS_ACTIVE: + return camera_driver_active; + case RARCH_CAMERA_CTL_DEINIT: + if (camera_data && camera_driver) + { + if (camera_cb.deinitialized) + camera_cb.deinitialized(); + + if (camera_driver->free) + camera_driver->free(camera_data); + } + + camera_data = NULL; + break; + case RARCH_CAMERA_CTL_STOP: + if ( camera_driver + && camera_driver->stop + && camera_data) + camera_driver->stop(camera_data); + break; + case RARCH_CAMERA_CTL_START: + if (camera_driver && camera_data && camera_driver->start) + { + if (settings->camera.allow) + return camera_driver->start(camera_data); + + runloop_msg_queue_push( + "Camera is explicitly disabled.\n", 1, 180, false); + } + return false; + case RARCH_CAMERA_CTL_POLL: + if (!camera_cb.caps) + return false; + if (!camera_driver || !camera_driver->poll || !camera_data) + return false; + camera_driver->poll(camera_data, + camera_cb.frame_raw_framebuffer, + camera_cb.frame_opengl_texture); + break; + case RARCH_CAMERA_CTL_SET_CB: + { + struct retro_camera_callback *cb = + (struct retro_camera_callback*)data; + camera_cb = *cb; + } + break; + case RARCH_CAMERA_CTL_INIT: + /* Resource leaks will follow if camera is initialized twice. */ + if (camera_data) + return false; + + camera_driver_ctl(RARCH_CAMERA_CTL_FIND_DRIVER, NULL); + + camera_data = camera_driver->init( + *settings->camera.device ? settings->camera.device : NULL, + camera_cb.caps, + settings->camera.width ? + settings->camera.width : camera_cb.width, + settings->camera.height ? + settings->camera.height : camera_cb.height); + + if (!camera_data) + { + ELOG(@"Failed to initialize camera driver. Will continue without camera.\n"); + camera_driver_ctl(RARCH_CAMERA_CTL_UNSET_ACTIVE, NULL); + } + + if (camera_cb.initialized) + camera_cb.initialized(); + break; + default: + break; + } + + return false; +} diff --git a/PVSupport/Sources/retro/camera/camera_driver.h b/PVSupport/Sources/retro/camera/camera_driver.h new file mode 100644 index 0000000000..32f763b610 --- /dev/null +++ b/PVSupport/Sources/retro/camera/camera_driver.h @@ -0,0 +1,112 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __CAMERA_DRIVER__H +#define __CAMERA_DRIVER__H + +#include + +#include +#include +#include + +RETRO_BEGIN_DECLS + +enum rarch_camera_ctl_state +{ + RARCH_CAMERA_CTL_NONE = 0, + RARCH_CAMERA_CTL_DESTROY, + RARCH_CAMERA_CTL_DEINIT, + RARCH_CAMERA_CTL_SET_OWN_DRIVER, + RARCH_CAMERA_CTL_UNSET_OWN_DRIVER, + RARCH_CAMERA_CTL_OWNS_DRIVER, + RARCH_CAMERA_CTL_SET_ACTIVE, + RARCH_CAMERA_CTL_UNSET_ACTIVE, + RARCH_CAMERA_CTL_IS_ACTIVE, + RARCH_CAMERA_CTL_FIND_DRIVER, + RARCH_CAMERA_CTL_POLL, + RARCH_CAMERA_CTL_SET_CB, + RARCH_CAMERA_CTL_STOP, + RARCH_CAMERA_CTL_START, + RARCH_CAMERA_CTL_INIT +}; + +typedef struct camera_driver +{ + /* FIXME: params for initialization - queries for resolution, + * framerate, color format which might or might not be honored. */ + void *(*init)(const char *device, uint64_t buffer_types, + unsigned width, unsigned height); + + void (*free)(void *data); + + bool (*start)(void *data); + void (*stop)(void *data); + + /* Polls the camera driver. + * Will call the appropriate callback if a new frame is ready. + * Returns true if a new frame was handled. */ + bool (*poll)(void *data, + retro_camera_frame_raw_framebuffer_t frame_raw_cb, + retro_camera_frame_opengl_texture_t frame_gl_cb); + + const char *ident; +} camera_driver_t; + +extern camera_driver_t camera_v4l2; +extern camera_driver_t camera_android; +extern camera_driver_t camera_rwebcam; +extern camera_driver_t camera_avfoundation; +extern camera_driver_t camera_null; + +/** + * config_get_camera_driver_options: + * + * Get an enumerated list of all camera driver names, + * separated by '|'. + * + * Returns: string listing of all camera driver names, + * separated by '|'. + **/ +const char* config_get_camera_driver_options(void); + +/** + * camera_driver_find_handle: + * @index : index of driver to get handle to. + * + * Returns: handle to camera driver at index. Can be NULL + * if nothing found. + **/ +const void *camera_driver_find_handle(int index); + +/** + * camera_driver_find_ident: + * @index : index of driver to get handle to. + * + * Returns: Human-readable identifier of camera driver at index. Can be NULL + * if nothing found. + **/ +const char *camera_driver_find_ident(int index); + +void driver_camera_stop(void); + +bool driver_camera_start(void); + +bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data); + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/camera/drivers/android.c b/PVSupport/Sources/retro/camera/drivers/android.c new file mode 100644 index 0000000000..2852156fa2 --- /dev/null +++ b/PVSupport/Sources/retro/camera/drivers/android.c @@ -0,0 +1,199 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * Copyright (C) 2012-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include "../camera_driver.h" + +typedef struct android_camera +{ + jmethodID onCameraInit; + jmethodID onCameraFree; + jmethodID onCameraPoll; + jmethodID onCameraStart; + jmethodID onCameraStop; + jmethodID onCameraSetTexture; + GLuint tex; +} androidcamera_t; + +static void *android_camera_init(const char *device, uint64_t caps, + unsigned width, unsigned height) +{ + JNIEnv *env; + jclass class; + (void)device; + (void)width; + (void)height; + + if ((caps & (UINT64_C(1) << RETRO_CAMERA_BUFFER_OPENGL_TEXTURE)) == 0) + { + ELOG(@"androidcamera returns OpenGL texture.\n"); + return NULL; + } + + struct android_app *android_app = (struct android_app*)g_android; + androidcamera_t *androidcamera = (androidcamera_t*) + calloc(1, sizeof(androidcamera_t)); + if (!androidcamera) + return NULL; + + env = jni_thread_getenv(); + if (!env) + goto dealloc; + + GET_OBJECT_CLASS(env, class, android_app->activity->clazz); + if (class == NULL) + goto dealloc; + + GET_METHOD_ID(env, androidcamera->onCameraInit, class, + "onCameraInit", "()V"); + if (!androidcamera->onCameraInit) + goto dealloc; + + GET_METHOD_ID(env, androidcamera->onCameraFree, class, + "onCameraFree", "()V"); + if (!androidcamera->onCameraFree) + goto dealloc; + + GET_METHOD_ID(env, androidcamera->onCameraSetTexture, class, + "onCameraSetTexture", "(I)V"); + if (!androidcamera->onCameraSetTexture) + goto dealloc; + + GET_METHOD_ID(env, androidcamera->onCameraStart, class, + "onCameraStart", "()V"); + if (!androidcamera->onCameraStart) + goto dealloc; + + GET_METHOD_ID(env, androidcamera->onCameraStop, class, + "onCameraStop", "()V"); + if (!androidcamera->onCameraStop) + goto dealloc; + + GET_METHOD_ID(env, androidcamera->onCameraPoll, class, + "onCameraPoll", "()Z"); + if (!androidcamera->onCameraPoll) + goto dealloc; + + CALL_VOID_METHOD(env, android_app->activity->clazz, + androidcamera->onCameraInit); + + return androidcamera; +dealloc: + if (androidcamera) + free(androidcamera); + return NULL; +} + +static void android_camera_free(void *data) +{ + struct android_app *android_app = (struct android_app*)g_android; + androidcamera_t *androidcamera = (androidcamera_t*)data; + JNIEnv *env = jni_thread_getenv(); + if (!env) + return; + + CALL_VOID_METHOD(env, android_app->activity->clazz, + androidcamera->onCameraFree); + + free(androidcamera); +} + +static bool android_camera_start(void *data) +{ + struct android_app *android_app = (struct android_app*)g_android; + androidcamera_t *androidcamera = (androidcamera_t*)data; + JNIEnv *env = jni_thread_getenv(); + if (!env) + return NULL; + + glGenTextures(1, &androidcamera->tex); + glBindTexture(GL_TEXTURE_EXTERNAL_OES, androidcamera->tex); + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, + GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, + GL_CLAMP_TO_EDGE); + + CALL_VOID_METHOD_PARAM(env, android_app->activity->clazz, + androidcamera->onCameraSetTexture, (int) androidcamera->tex); + CALL_VOID_METHOD(env, android_app->activity->clazz, + androidcamera->onCameraStart); + + return true; +} + +static void android_camera_stop(void *data) +{ + struct android_app *android_app = (struct android_app*)g_android; + androidcamera_t *androidcamera = (androidcamera_t*)data; + JNIEnv *env = jni_thread_getenv(); + if (!env) + return; + + CALL_VOID_METHOD(env, android_app->activity->clazz, + androidcamera->onCameraStop); + + if (androidcamera->tex) + video_driver_texture_unload((uintptr_t*)&androidcamera->tex); +} + +static bool android_camera_poll(void *data, + retro_camera_frame_raw_framebuffer_t frame_raw_cb, + retro_camera_frame_opengl_texture_t frame_gl_cb) +{ + struct android_app *android_app = (struct android_app*)g_android; + androidcamera_t *androidcamera = (androidcamera_t*)data; + JNIEnv *env = jni_thread_getenv(); + if (!env) + return NULL; + + (void)frame_raw_cb; + + jboolean newFrame; + CALL_BOOLEAN_METHOD(env, newFrame, android_app->activity->clazz, + androidcamera->onCameraPoll); + + if (newFrame) + { + /* FIXME: Identity for now. Use proper texture matrix as + * returned by Android Camera. */ + static const float affine[] = { + 1.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 1.0f + }; + + if (frame_gl_cb) + frame_gl_cb(androidcamera->tex, + GL_TEXTURE_EXTERNAL_OES, + affine); + return true; + } + + return false; +} + +camera_driver_t camera_android = { + android_camera_init, + android_camera_free, + android_camera_start, + android_camera_stop, + android_camera_poll, + "android", +}; diff --git a/PVSupport/Sources/retro/camera/drivers/nullcamera.c b/PVSupport/Sources/retro/camera/drivers/nullcamera.c new file mode 100644 index 0000000000..f989ed26f3 --- /dev/null +++ b/PVSupport/Sources/retro/camera/drivers/nullcamera.c @@ -0,0 +1,59 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "../camera_driver.h" + +static void *nullcamera_init(const char *device, uint64_t caps, + unsigned width, unsigned height) +{ + (void)device; + return (void*)-1; +} + +static void nullcamera_free(void *data) +{ + (void)data; +} + +static bool nullcamera_start(void *data) +{ + (void)data; + return true; +} + +static void nullcamera_stop(void *data) +{ + (void)data; +} + +static bool nullcamera_poll(void *data, + retro_camera_frame_raw_framebuffer_t frame_raw_cb, + retro_camera_frame_opengl_texture_t frame_gl_cb) +{ + (void)data; + (void)frame_raw_cb; + (void)frame_gl_cb; + + return true; +} + +camera_driver_t camera_null = { + nullcamera_init, + nullcamera_free, + nullcamera_start, + nullcamera_stop, + nullcamera_poll, + "null", +}; diff --git a/PVSupport/Sources/retro/camera/drivers/rwebcam.c b/PVSupport/Sources/retro/camera/drivers/rwebcam.c new file mode 100644 index 0000000000..8e07fda6a4 --- /dev/null +++ b/PVSupport/Sources/retro/camera/drivers/rwebcam.c @@ -0,0 +1,66 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2012-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include + +#include "../camera_driver.h" + +/* forward declarations */ +void *RWebCamInit(uint64_t caps, unsigned width, unsigned height); +void RWebCamFree(void *data); +bool RWebCamStart(void *data); +void RWebCamStop(void *data); +bool RWebCamPoll(void *data, retro_camera_frame_raw_framebuffer_t frame_raw_cb, + retro_camera_frame_opengl_texture_t frame_gl_cb); + +static void *rwebcam_init(const char *device, uint64_t caps, + unsigned width, unsigned height) +{ + (void)device; + return RWebCamInit(caps, width, height); +} + +static void rwebcam_free(void *data) +{ + RWebCamFree(data); +} + +static bool rwebcam_start(void *data) +{ + return RWebCamStart(data); +} + +static void rwebcam_stop(void *data) +{ + RWebCamStop(data); +} + +static bool rwebcam_poll(void *data, + retro_camera_frame_raw_framebuffer_t frame_raw_cb, + retro_camera_frame_opengl_texture_t frame_gl_cb) +{ + return RWebCamPoll(data, frame_raw_cb, frame_gl_cb); +} + +camera_driver_t camera_rwebcam = { + rwebcam_init, + rwebcam_free, + rwebcam_start, + rwebcam_stop, + rwebcam_poll, + "rwebcam", +}; diff --git a/PVSupport/Sources/retro/camera/drivers/video4linux2.c b/PVSupport/Sources/retro/camera/drivers/video4linux2.c new file mode 100644 index 0000000000..cdbd63d3ba --- /dev/null +++ b/PVSupport/Sources/retro/camera/drivers/video4linux2.c @@ -0,0 +1,433 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * Copyright (C) 2012-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include + +#include "../camera_driver.h" +#include "../../performance_counters.h" +#include "../../verbosity.h" + +struct buffer +{ + void *start; + size_t length; +}; + +typedef struct video4linux +{ + int fd; + struct buffer *buffers; + unsigned n_buffers; + unsigned width; + unsigned height; + size_t pitch; + + struct scaler_ctx scaler; + uint32_t *buffer_output; + bool ready; + + char dev_name[PATH_MAX_LENGTH]; +} video4linux_t; + +static void process_image(video4linux_t *v4l, const uint8_t *buffer_yuv) +{ + static struct retro_perf_counter yuv_convert_direct = {0}; + + performance_counter_init(&yuv_convert_direct, "yuv_convert_direct"); + performance_counter_start(&yuv_convert_direct); + scaler_ctx_scale(&v4l->scaler, v4l->buffer_output, buffer_yuv); + performance_counter_stop(&yuv_convert_direct); +} + +static int xioctl(int fd, int request, void *args) +{ + int r; + + do + { + r = ioctl(fd, request, args); + } while (r == -1 && errno == EINTR); + + return r; +} + +static bool init_mmap(void *data) +{ + struct v4l2_requestbuffers req; + video4linux_t *v4l = (video4linux_t*)data; + + memset(&req, 0, sizeof(req)); + + req.count = 4; + req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + req.memory = V4L2_MEMORY_MMAP; + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_REQBUFS, &req) == -1) + { + if (errno == EINVAL) + ELOG(@"%s does not support memory mapping.\n", v4l->dev_name); + else + ELOG(@"xioctl of VIDIOC_REQBUFS failed.\n"); + return false; + } + + if (req.count < 2) + { + ELOG(@"Insufficient buffer memory on %s.\n", v4l->dev_name); + return false; + } + + v4l->buffers = (struct buffer*)calloc(req.count, sizeof(*v4l->buffers)); + + if (!v4l->buffers) + { + ELOG(@"Out of memory allocating V4L2 buffers.\n"); + return false; + } + + for (v4l->n_buffers = 0; v4l->n_buffers < req.count; v4l->n_buffers++) + { + struct v4l2_buffer buf; + + memset(&buf, 0, sizeof(buf)); + + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + buf.index = v4l->n_buffers; + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_QUERYBUF, &buf) == -1) + { + ELOG(@"Error - xioctl VIDIOC_QUERYBUF.\n"); + return false; + } + + v4l->buffers[v4l->n_buffers].length = buf.length; + v4l->buffers[v4l->n_buffers].start = mmap(NULL, + buf.length, PROT_READ | PROT_WRITE, + MAP_SHARED, + v4l->fd, buf.m.offset); + + if (v4l->buffers[v4l->n_buffers].start == MAP_FAILED) + { + ELOG(@"Error - mmap.\n"); + return false; + } + } + + return true; +} + +static bool init_device(void *data) +{ + struct v4l2_capability cap; + struct v4l2_cropcap cropcap; + struct v4l2_crop crop; + struct v4l2_format fmt; + video4linux_t *v4l = (video4linux_t*)data; + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_QUERYCAP, &cap) < 0) + { + if (errno == EINVAL) + ELOG(@"%s is no V4L2 device.\n", v4l->dev_name); + else + ELOG(@"Error - VIDIOC_QUERYCAP.\n"); + return false; + } + + if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) + { + ELOG(@"%s is no video capture device.\n", v4l->dev_name); + return false; + } + + if (!(cap.capabilities & V4L2_CAP_STREAMING)) + { + ELOG(@"%s does not support streaming I/O (V4L2_CAP_STREAMING).\n", + v4l->dev_name); + return false; + } + + memset(&cropcap, 0, sizeof(cropcap)); + cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_CROPCAP, &cropcap) == 0) + { + crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + crop.c = cropcap.defrect; + /* Ignore errors here. */ + xioctl(v4l->fd, VIDIOC_S_CROP, &crop); + } + + memset(&fmt, 0, sizeof(fmt)); + + fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + fmt.fmt.pix.width = v4l->width; + fmt.fmt.pix.height = v4l->height; + fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; + fmt.fmt.pix.field = V4L2_FIELD_NONE; + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_S_FMT, &fmt) < 0) + { + ELOG(@"Error - VIDIOC_S_FMT\n"); + return false; + } + + /* VIDIOC_S_FMT may change width, height and pitch. */ + v4l->width = fmt.fmt.pix.width; + v4l->height = fmt.fmt.pix.height; + v4l->pitch = MAX(fmt.fmt.pix.bytesperline, v4l->width * 2); + + /* Sanity check to see if our assumptions are met. + * It is possible to support whatever the device gives us, + * but this dramatically increases complexity. + */ + if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_YUYV) + { + ELOG(@"The V4L2 device doesn't support YUYV.\n"); + return false; + } + + if (fmt.fmt.pix.field != V4L2_FIELD_NONE + && fmt.fmt.pix.field != V4L2_FIELD_INTERLACED) + { + ELOG(@"The V4L2 device doesn't support progressive nor interlaced video.\n"); + return false; + } + + VLOG(@"V4L2 device: %u x %u.\n", v4l->width, v4l->height); + + return init_mmap(v4l); +} + +static void v4l_stop(void *data) +{ + video4linux_t *v4l = (video4linux_t*)data; + enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + if (xioctl(v4l->fd, VIDIOC_STREAMOFF, &type) == -1) + ELOG(@"Error - VIDIOC_STREAMOFF.\n"); + + v4l->ready = false; +} + +static bool v4l_start(void *data) +{ + unsigned i; + enum v4l2_buf_type type; + video4linux_t *v4l = (video4linux_t*)data; + + for (i = 0; i < v4l->n_buffers; i++) + { + struct v4l2_buffer buf; + + memset(&buf, 0, sizeof(buf)); + + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + buf.index = i; + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_QBUF, &buf) == -1) + { + ELOG(@"Error - VIDIOC_QBUF.\n"); + return false; + } + } + + type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + if (xioctl(v4l->fd, VIDIOC_STREAMON, &type) == -1) + { + ELOG(@"Error - VIDIOC_STREAMON.\n"); + return false; + } + + v4l->ready = true; + + return true; +} + +static void v4l_free(void *data) +{ + video4linux_t *v4l = (video4linux_t*)data; + + unsigned i; + for (i = 0; i < v4l->n_buffers; i++) + if (munmap(v4l->buffers[i].start, v4l->buffers[i].length) == -1) + ELOG(@"munmap failed.\n"); + + if (v4l->fd >= 0) + close(v4l->fd); + + free(v4l->buffer_output); + scaler_ctx_gen_reset(&v4l->scaler); + free(v4l); +} + +static void *v4l_init(const char *device, uint64_t caps, + unsigned width, unsigned height) +{ + video4linux_t *v4l = NULL; + + if ((caps & (UINT64_C(1) << RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER)) == 0) + { + ELOG(@"video4linux2 returns raw framebuffers.\n"); + return NULL; + } + + v4l = (video4linux_t*)calloc(1, sizeof(video4linux_t)); + if (!v4l) + return NULL; + + strlcpy(v4l->dev_name, device ? device : "/dev/video0", + sizeof(v4l->dev_name)); + + v4l->width = width; + v4l->height = height; + v4l->ready = false; + + if (!path_is_character_special(v4l->dev_name)) + { + ELOG(@"%s is no device.\n", v4l->dev_name); + goto error; + } + + v4l->fd = open(v4l->dev_name, O_RDWR | O_NONBLOCK, 0); + + if (v4l->fd == -1) + { + ELOG(@"Cannot open '%s': %d, %s\n", v4l->dev_name, + errno, strerror(errno)); + goto error; + } + + if (!init_device(v4l)) + goto error; + + v4l->buffer_output = (uint32_t*) + malloc(v4l->width * v4l->height * sizeof(uint32_t)); + + if (!v4l->buffer_output) + { + ELOG(@"Failed to allocate output buffer.\n"); + goto error; + } + + v4l->scaler.in_width = v4l->scaler.out_width = v4l->width; + v4l->scaler.in_height = v4l->scaler.out_height = v4l->height; + v4l->scaler.in_fmt = SCALER_FMT_YUYV; + v4l->scaler.out_fmt = SCALER_FMT_ARGB8888; + v4l->scaler.in_stride = v4l->pitch; + v4l->scaler.out_stride = v4l->width * 4; + + if (!scaler_ctx_gen_filter(&v4l->scaler)) + { + ELOG(@"Failed to create scaler.\n"); + goto error; + } + + return v4l; + +error: + ELOG(@"V4L2: Failed to initialize camera.\n"); + v4l_free(v4l); + return NULL; +} + +static bool preprocess_image(void *data) +{ + video4linux_t *v4l = (video4linux_t*)data; + struct v4l2_buffer buf; + + memset(&buf, 0, sizeof(buf)); + + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + buf.memory = V4L2_MEMORY_MMAP; + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_DQBUF, &buf) == -1) + { + switch (errno) + { + case EAGAIN: + return false; + default: + ELOG(@"VIDIOC_DQBUF.\n"); + return false; + } + } + + retro_assert(buf.index < v4l->n_buffers); + + process_image(v4l, (const uint8_t*)v4l->buffers[buf.index].start); + + if (xioctl(v4l->fd, (uint8_t)VIDIOC_QBUF, &buf) == -1) + ELOG(@"VIDIOC_QBUF\n"); + + return true; +} + +static bool v4l_poll(void *data, + retro_camera_frame_raw_framebuffer_t frame_raw_cb, + retro_camera_frame_opengl_texture_t frame_gl_cb) +{ + video4linux_t *v4l = (video4linux_t*)data; + if (!v4l->ready) + return false; + + (void)frame_gl_cb; + + if (preprocess_image(data)) + { + if (frame_raw_cb != NULL) + frame_raw_cb(v4l->buffer_output, v4l->width, + v4l->height, v4l->width * 4); + return true; + } + + return false; +} + +camera_driver_t camera_v4l2 = { + v4l_init, + v4l_free, + v4l_start, + v4l_stop, + v4l_poll, + "video4linux2", +}; diff --git a/PVSupport/Sources/retro/cheevos.c b/PVSupport/Sources/retro/cheevos.c new file mode 100644 index 0000000000..690e98c744 --- /dev/null +++ b/PVSupport/Sources/retro/cheevos.c @@ -0,0 +1,2367 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2015-2016 - Andre Leiradella + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#include +#include +#include +#include + +#include "cheevos.h" +#include "command.h" +#include "dynamic.h" +#include "system.h" +#include "network/net_http_special.h" +#include "tasks/tasks_internal.h" +#include "configuration.h" +#include "performance_counters.h" +#include "msg_hash.h" +#include "runloop.h" +#include "core.h" + +#ifdef HAVE_MENU +#include "menu/menu_driver.h" +#include "menu/menu_entries.h" +#endif + +#include "verbosity.h" + +/* Define this macro to prevent cheevos from being deactivated. */ +#undef CHEEVOS_DONT_DEACTIVATE + +/* Define this macro to log URLs (will log the user token). */ +#undef CHEEVOS_LOG_URLS + +/* Define this macro to dump all cheevos' addresses. */ +#undef CHEEVOS_DUMP_ADDRS + +/* Define this macro to remove HTTP timeouts. */ +#undef CHEEVOS_NO_TIMEOUT + +#define JSON_KEY_GAMEID 0xb4960eecU +#define JSON_KEY_ACHIEVEMENTS 0x69749ae1U +#define JSON_KEY_ID 0x005973f2U +#define JSON_KEY_MEMADDR 0x1e76b53fU +#define JSON_KEY_TITLE 0x0e2a9a07U +#define JSON_KEY_DESCRIPTION 0xe61a1f69U +#define JSON_KEY_POINTS 0xca8fce22U +#define JSON_KEY_AUTHOR 0xa804edb8U +#define JSON_KEY_MODIFIED 0xdcea4fe6U +#define JSON_KEY_CREATED 0x3a84721dU +#define JSON_KEY_BADGENAME 0x887685d9U +#define JSON_KEY_CONSOLE_ID 0x071656e5U +#define JSON_KEY_TOKEN 0x0e2dbd26U +#define JSON_KEY_FLAGS 0x0d2e96b2U + +enum +{ + CHEEVOS_CONSOLE_MEGA_DRIVE = 1, + CHEEVOS_CONSOLE_NINTENDO_64 = 2, + CHEEVOS_CONSOLE_SUPER_NINTENDO = 3, + CHEEVOS_CONSOLE_GAMEBOY = 4, + CHEEVOS_CONSOLE_GAMEBOY_ADVANCE = 5, + CHEEVOS_CONSOLE_GAMEBOY_COLOR = 6, + CHEEVOS_CONSOLE_NINTENDO = 7, + CHEEVOS_CONSOLE_PC_ENGINE = 8, + CHEEVOS_CONSOLE_SEGA_CD = 9, + CHEEVOS_CONSOLE_SEGA_32X = 10, + CHEEVOS_CONSOLE_MASTER_SYSTEM = 11 +}; + +enum +{ + CHEEVOS_VAR_SIZE_BIT_0, + CHEEVOS_VAR_SIZE_BIT_1, + CHEEVOS_VAR_SIZE_BIT_2, + CHEEVOS_VAR_SIZE_BIT_3, + CHEEVOS_VAR_SIZE_BIT_4, + CHEEVOS_VAR_SIZE_BIT_5, + CHEEVOS_VAR_SIZE_BIT_6, + CHEEVOS_VAR_SIZE_BIT_7, + CHEEVOS_VAR_SIZE_NIBBLE_LOWER, + CHEEVOS_VAR_SIZE_NIBBLE_UPPER, + /* Byte, */ + CHEEVOS_VAR_SIZE_EIGHT_BITS, /* =Byte, */ + CHEEVOS_VAR_SIZE_SIXTEEN_BITS, + CHEEVOS_VAR_SIZE_THIRTYTWO_BITS, + + CHEEVOS_VAR_SIZE_LAST +}; /* cheevos_var_t.size */ + +enum +{ + /* compare to the value of a live address in RAM */ + CHEEVOS_VAR_TYPE_ADDRESS, + + /* a number. assume 32 bit */ + CHEEVOS_VAR_TYPE_VALUE_COMP, + + /* the value last known at this address. */ + CHEEVOS_VAR_TYPE_DELTA_MEM, + + /* a custom user-set variable */ + CHEEVOS_VAR_TYPE_DYNAMIC_VAR, + + CHEEVOS_VAR_TYPE_LAST +}; /* cheevos_var_t.type */ + +enum +{ + CHEEVOS_COND_OP_EQUALS, + CHEEVOS_COND_OP_LESS_THAN, + CHEEVOS_COND_OP_LESS_THAN_OR_EQUAL, + CHEEVOS_COND_OP_GREATER_THAN, + CHEEVOS_COND_OP_GREATER_THAN_OR_EQUAL, + CHEEVOS_COND_OP_NOT_EQUAL_TO, + + CHEEVOS_COND_OP_LAST +}; /* cheevos_cond_t.op */ + +enum +{ + CHEEVOS_COND_TYPE_STANDARD, + CHEEVOS_COND_TYPE_PAUSE_IF, + CHEEVOS_COND_TYPE_RESET_IF, + + CHEEVOS_COND_TYPE_LAST +}; /* cheevos_cond_t.type */ + +enum +{ + CHEEVOS_DIRTY_TITLE = 1 << 0, + CHEEVOS_DIRTY_DESC = 1 << 1, + CHEEVOS_DIRTY_POINTS = 1 << 2, + CHEEVOS_DIRTY_AUTHOR = 1 << 3, + CHEEVOS_DIRTY_ID = 1 << 4, + CHEEVOS_DIRTY_BADGE = 1 << 5, + CHEEVOS_DIRTY_CONDITIONS = 1 << 6, + CHEEVOS_DIRTY_VOTES = 1 << 7, + CHEEVOS_DIRTY_DESCRIPTION = 1 << 8, + + CHEEVOS_DIRTY_ALL = (1 << 9) - 1 +}; + +typedef struct +{ + unsigned type; + unsigned req_hits; + unsigned curr_hits; + + cheevos_var_t source; + unsigned op; + cheevos_var_t target; +} cheevos_cond_t; + +typedef struct +{ + cheevos_cond_t *conds; + unsigned count; + + const char* expression; +} cheevos_condset_t; + +typedef struct +{ + unsigned id; + const char *title; + const char *description; + const char *author; + const char *badge; + unsigned points; + unsigned dirty; + int active; + int modified; + + cheevos_condset_t *condsets; + unsigned count; +} cheevo_t; + +typedef struct +{ + cheevo_t *cheevos; + unsigned count; +} cheevoset_t; + +typedef struct +{ + int is_element; +} cheevos_deactivate_t; + +typedef struct +{ + unsigned key_hash; + int is_key; + const char *value; + size_t length; +} cheevos_getvalueud_t; + +typedef struct +{ + int in_cheevos; + uint32_t field_hash; + unsigned core_count; + unsigned unofficial_count; +} cheevos_countud_t; + +typedef struct +{ + const char *string; + size_t length; +} cheevos_field_t; + +typedef struct +{ + int in_cheevos; + int is_console_id; + unsigned core_count; + unsigned unofficial_count; + + cheevos_field_t *field; + cheevos_field_t id, memaddr, title, desc, points, author; + cheevos_field_t modified, created, badge, flags; +} cheevos_readud_t; + +typedef struct +{ + unsigned (*finder)(const struct retro_game_info *, retro_time_t); + const char *name; + const uint32_t *ext_hashes; +} cheevos_finder_t; + +typedef struct +{ + int loaded; + int console_id; + bool core_supports; + + cheevoset_t core; + cheevoset_t unofficial; + + char token[32]; + + retro_ctx_memory_info_t meminfo[4]; +} cheevos_locals_t; + +static cheevos_locals_t cheevos_locals = +{ + 0, + 0, + true, + {NULL, 0}, + {NULL, 0}, + {0}, +}; + +static int cheats_are_enabled = 0; +static int cheats_were_enabled = 0; + +/***************************************************************************** +Supporting functions. +*****************************************************************************/ + +static uint32_t cheevos_djb2(const char* str, size_t length) +{ + const unsigned char *aux = (const unsigned char*)str; + const unsigned char *end = aux + length; + uint32_t hash = 5381; + + while (aux < end) + hash = (hash << 5) + hash + *aux++; + + return hash; +} + +static int cheevos_http_get(const char **result, size_t *size, + const char *url, retro_time_t *timeout) +{ + const char *msg = NULL; + +#ifdef CHEEVOS_NO_TIMEOUT + int ret = net_http_get(result, size, url, NULL); +#else + int ret = net_http_get(result, size, url, timeout); +#endif + + switch (ret) + { + case NET_HTTP_GET_OK: + return ret; + + case NET_HTTP_GET_MALFORMED_URL: + msg = "malformed url"; + break; + + case NET_HTTP_GET_CONNECT_ERROR: + msg = "connect error"; + break; + + case NET_HTTP_GET_TIMEOUT: + msg = "timeout"; + break; + + default: + msg = "?"; + break; + } + + ELOG(@"CHEEVOS error getting %s: %s\n", url, msg); + return ret; +} + +static int cheevos_getvalue__json_key(void *userdata, + const char *name, size_t length) +{ + cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata; + + ud->is_key = cheevos_djb2(name, length) == ud->key_hash; + return 0; +} + +static int cheevos_getvalue__json_string(void *userdata, + const char *string, size_t length) +{ + cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata; + + if (ud->is_key) + { + ud->value = string; + ud->length = length; + ud->is_key = 0; + } + + return 0; +} + +static int cheevos_getvalue__json_boolean(void *userdata, int istrue) +{ + cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata; + + if ( ud->is_key ) + { + ud->value = istrue ? "true" : "false"; + ud->length = istrue ? 4 : 5; + ud->is_key = 0; + } + + return 0; +} + +static int cheevos_getvalue__json_null(void *userdata) +{ + cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata; + + if ( ud->is_key ) + { + ud->value = "null"; + ud->length = 4; + ud->is_key = 0; + } + + return 0; +} + +static int cheevos_get_value(const char *json, unsigned key_hash, + char *value, size_t length) +{ + static const jsonsax_handlers_t handlers = + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + cheevos_getvalue__json_key, + NULL, + cheevos_getvalue__json_string, + cheevos_getvalue__json_string, /* number */ + cheevos_getvalue__json_boolean, + cheevos_getvalue__json_null + }; + + cheevos_getvalueud_t ud; + + ud.key_hash = key_hash; + ud.is_key = 0; + ud.value = NULL; + ud.length = 0; + *value = 0; + + if ((jsonsax_parse(json, &handlers, (void*)&ud) == JSONSAX_OK) + && ud.value && ud.length < length) + { + strncpy(value, ud.value, length); + value[ud.length] = 0; + return 0; + } + + return -1; +} + +/***************************************************************************** +Count number of achievements in a JSON file. +*****************************************************************************/ + +static int cheevos_count__json_end_array(void *userdata) +{ + cheevos_countud_t* ud = (cheevos_countud_t*)userdata; + ud->in_cheevos = 0; + return 0; +} + +static int cheevos_count__json_key(void *userdata, + const char *name, size_t length) +{ + cheevos_countud_t* ud = (cheevos_countud_t*)userdata; + ud->field_hash = cheevos_djb2(name, length); + + if (ud->field_hash == JSON_KEY_ACHIEVEMENTS) + ud->in_cheevos = 1; + + return 0; +} + +static int cheevos_count__json_number(void *userdata, + const char *number, size_t length) +{ + long flags; + cheevos_countud_t* ud = (cheevos_countud_t*)userdata; + + if (ud->in_cheevos && ud->field_hash == JSON_KEY_FLAGS) + { + flags = strtol(number, NULL, 10); + + switch (flags) + { + case 3: /* Core achievements */ + ud->core_count++; + break; + case 5: /* Unofficial achievements */ + ud->unofficial_count++; + break; + default: + break; + } + } + + return 0; +} + +static int cheevos_count_cheevos(const char *json, + unsigned *core_count, unsigned *unofficial_count) +{ + static const jsonsax_handlers_t handlers = + { + NULL, + NULL, + NULL, + NULL, + NULL, + cheevos_count__json_end_array, + cheevos_count__json_key, + NULL, + NULL, + cheevos_count__json_number, + NULL, + NULL + }; + + int res; + cheevos_countud_t ud; + ud.in_cheevos = 0; + ud.core_count = 0; + ud.unofficial_count = 0; + + res = jsonsax_parse(json, &handlers, (void*)&ud); + + *core_count = ud.core_count; + *unofficial_count = ud.unofficial_count; + + return res; +} + +/***************************************************************************** +Parse the MemAddr field. +*****************************************************************************/ + +static unsigned cheevos_prefix_to_comp_size(char prefix) +{ + /* Careful not to use ABCDEF here, this denotes part of an actual variable! */ + + switch( toupper( prefix ) ) + { + case 'M': + return CHEEVOS_VAR_SIZE_BIT_0; + case 'N': + return CHEEVOS_VAR_SIZE_BIT_1; + case 'O': + return CHEEVOS_VAR_SIZE_BIT_2; + case 'P': + return CHEEVOS_VAR_SIZE_BIT_3; + case 'Q': + return CHEEVOS_VAR_SIZE_BIT_4; + case 'R': + return CHEEVOS_VAR_SIZE_BIT_5; + case 'S': + return CHEEVOS_VAR_SIZE_BIT_6; + case 'T': + return CHEEVOS_VAR_SIZE_BIT_7; + case 'L': + return CHEEVOS_VAR_SIZE_NIBBLE_LOWER; + case 'U': + return CHEEVOS_VAR_SIZE_NIBBLE_UPPER; + case 'H': + return CHEEVOS_VAR_SIZE_EIGHT_BITS; + case 'X': + return CHEEVOS_VAR_SIZE_THIRTYTWO_BITS; + default: + case ' ': + break; + } + + return CHEEVOS_VAR_SIZE_SIXTEEN_BITS; +} + +static unsigned cheevos_read_hits(const char **memaddr) +{ + char *end = NULL; + const char *str = *memaddr; + unsigned num_hits = 0; + + if (*str == '(' || *str == '.') + { + num_hits = strtol(str + 1, &end, 10); + str = end + 1; + } + + *memaddr = str; + return num_hits; +} + +static unsigned cheevos_parse_operator(const char **memaddr) +{ + unsigned char op; + const char *str = *memaddr; + + if (*str == '=' && str[1] == '=') + { + op = CHEEVOS_COND_OP_EQUALS; + str += 2; + } + else if (*str == '=') + { + op = CHEEVOS_COND_OP_EQUALS; + str++; + } + else if (*str == '!' && str[1] == '=') + { + op = CHEEVOS_COND_OP_NOT_EQUAL_TO; + str += 2; + } + else if (*str == '<' && str[1] == '=') + { + op = CHEEVOS_COND_OP_LESS_THAN_OR_EQUAL; + str += 2; + } + else if (*str == '<') + { + op = CHEEVOS_COND_OP_LESS_THAN; + str++; + } + else if (*str == '>' && str[1] == '=') + { + op = CHEEVOS_COND_OP_GREATER_THAN_OR_EQUAL; + str += 2; + } + else if (*str == '>') + { + op = CHEEVOS_COND_OP_GREATER_THAN; + str++; + } + else + { + ELOG(@"CHEEVOS Unknown operator %c\n", *str); + op = CHEEVOS_COND_OP_EQUALS; + } + + *memaddr = str; + return op; +} + +void cheevos_parse_guest_addr(cheevos_var_t *var, unsigned value) +{ + rarch_system_info_t *system; + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); + + var->bank_id = -1; + var->value = value; + + if (system->mmaps.num_descriptors != 0) + { + const struct retro_memory_descriptor *desc = NULL; + const struct retro_memory_descriptor *end = NULL; + + switch (cheevos_locals.console_id) + { + case CHEEVOS_CONSOLE_GAMEBOY_ADVANCE: + /* Patch the address to correctly map it to the mmaps */ + + if (var->value < 0x8000) /* Internal RAM */ + var->value += 0x3000000; + else /* Work RAM */ + var->value += 0x2000000 - 0x8000; + break; + case CHEEVOS_CONSOLE_PC_ENGINE: + var->value += 0x1f0000; + break; + default: + break; + } + + desc = system->mmaps.descriptors; + end = desc + system->mmaps.num_descriptors; + + for (; desc < end; desc++) + { + if ((var->value & desc->select) == desc->start) + { + var->bank_id = desc - system->mmaps.descriptors; + var->value = var->value - desc->start + desc->offset; + break; + } + } + } + else + { + unsigned i; + + for (i = 0; i < ARRAY_SIZE(cheevos_locals.meminfo); i++) + { + if (var->value < cheevos_locals.meminfo[i].size) + { + var->bank_id = i; + break; + } + + var->value -= cheevos_locals.meminfo[i].size; + } + } +} + +static void cheevos_parse_var(cheevos_var_t *var, const char **memaddr) +{ + char *end = NULL; + const char *str = *memaddr; + unsigned base = 16; + + if (toupper(*str) == 'D' && str[1] == '0' && toupper(str[2]) == 'X') + { + /* d0x + 4 hex digits */ + str += 3; + var->type = CHEEVOS_VAR_TYPE_DELTA_MEM; + } + else if (*str == '0' && toupper(str[1]) == 'X') + { + /* 0x + 4 hex digits */ + str += 2; + var->type = CHEEVOS_VAR_TYPE_ADDRESS; + } + else + { + var->type = CHEEVOS_VAR_TYPE_VALUE_COMP; + + if (toupper(*str) == 'H') + str++; + else + base = 10; + } + + if (var->type != CHEEVOS_VAR_TYPE_VALUE_COMP) + { + var->size = cheevos_prefix_to_comp_size(*str); + + if (var->size != CHEEVOS_VAR_SIZE_SIXTEEN_BITS) + str++; + } + + var->value = strtol(str, &end, base); + *memaddr = end; + + switch (var->type) + { + case CHEEVOS_VAR_TYPE_ADDRESS: + case CHEEVOS_VAR_TYPE_DELTA_MEM: + cheevos_parse_guest_addr(var, var->value); +#ifdef CHEEVOS_DUMP_ADDRS + VLOG(@"CHEEVOS var %03d:%08X\n", var->bank_id + 1, var->value); +#endif + break; + default: + break; + } +} + +static void cheevos_parse_cond(cheevos_cond_t *cond, const char **memaddr) +{ + const char* str = *memaddr; + + if (*str == 'R' && str[1] == ':') + { + cond->type = CHEEVOS_COND_TYPE_RESET_IF; + str += 2; + } + else if (*str == 'P' && str[1] == ':') + { + cond->type = CHEEVOS_COND_TYPE_PAUSE_IF; + str += 2; + } + else + cond->type = CHEEVOS_COND_TYPE_STANDARD; + + cheevos_parse_var(&cond->source, &str); + cond->op = cheevos_parse_operator(&str); + cheevos_parse_var(&cond->target, &str); + cond->curr_hits = 0; + cond->req_hits = cheevos_read_hits(&str); + + *memaddr = str; +} + +static unsigned cheevos_count_cond_sets(const char *memaddr) +{ + cheevos_cond_t cond; + unsigned count = 0; + + do + { + do + { + /* Skip any characters up until the start of the achievement condition */ + while ( *memaddr == ' ' + || *memaddr == '_' + || *memaddr == '|' + || *memaddr == 'S') + memaddr++; + + cheevos_parse_cond(&cond, &memaddr); + } + while ( *memaddr == '_' + || *memaddr == 'R' + || *memaddr == 'P'); /* AND, ResetIf, PauseIf */ + + count++; + } + while (*memaddr == 'S'); /* Repeat for all subconditions if they exist */ + + return count; +} + +static unsigned cheevos_count_conds_in_set(const char *memaddr, unsigned set) +{ + cheevos_cond_t cond; + unsigned index = 0; + unsigned count = 0; + + do + { + do + { + /* Skip any characters up until the start of the achievement condition */ + while ( *memaddr == ' ' + || *memaddr == '_' + || *memaddr == '|' + || *memaddr == 'S') + memaddr++; + + cheevos_parse_cond(&cond, &memaddr); + + if (index == set) + count++; + } + while (*memaddr == '_' || *memaddr == 'R' || *memaddr == 'P'); /* AND, ResetIf, PauseIf */ + } + while (*memaddr == 'S'); /* Repeat for all subconditions if they exist */ + + return count; +} + +static void cheevos_parse_memaddr(cheevos_cond_t *cond, const char *memaddr) +{ + do + { + do + { + /* Skip any characters up until the start of the achievement condition */ + while ( *memaddr == ' ' + || *memaddr == '_' + || *memaddr == '|' + || *memaddr == 'S') + memaddr++; + + cheevos_parse_cond(cond++, &memaddr); + } + while (*memaddr == '_' || *memaddr == 'R' || *memaddr == 'P'); /* AND, ResetIf, PauseIf */ + } + while (*memaddr == 'S'); /* Repeat for all subconditions if they exist */ +} + +/***************************************************************************** +Load achievements from a JSON string. +*****************************************************************************/ + +static INLINE const char *cheevos_dupstr(const cheevos_field_t *field) +{ + char *string = (char*)malloc(field->length + 1); + + if (!string) + return NULL; + + memcpy ((void*)string, (void*)field->string, field->length); + string[field->length] = 0; + + return string; +} + +static int cheevos_new_cheevo(cheevos_readud_t *ud) +{ + unsigned set; + const cheevos_condset_t *end = NULL; + cheevos_condset_t *condset = NULL; + cheevo_t *cheevo = NULL; + int flags = strtol(ud->flags.string, NULL, 10); + + if (flags == 3) + cheevo = cheevos_locals.core.cheevos + ud->core_count++; + else + cheevo = cheevos_locals.unofficial.cheevos + ud->unofficial_count++; + + cheevo->id = strtol(ud->id.string, NULL, 10); + cheevo->title = cheevos_dupstr(&ud->title); + cheevo->description = cheevos_dupstr(&ud->desc); + cheevo->author = cheevos_dupstr(&ud->author); + cheevo->badge = cheevos_dupstr(&ud->badge); + cheevo->points = strtol(ud->points.string, NULL, 10); + cheevo->dirty = 0; + cheevo->active = 1; /* flags == 3; */ + cheevo->modified = 0; + + if (!cheevo->title || !cheevo->description || !cheevo->author || !cheevo->badge) + { + free((void*)cheevo->title); + free((void*)cheevo->description); + free((void*)cheevo->author); + free((void*)cheevo->badge); + return -1; + } + + cheevo->count = cheevos_count_cond_sets(ud->memaddr.string); + + if (cheevo->count) + { + cheevo->condsets = (cheevos_condset_t*) + malloc(cheevo->count * sizeof(cheevos_condset_t)); + + if (!cheevo->condsets) + return -1; + + memset((void*)cheevo->condsets, 0, + cheevo->count * sizeof(cheevos_condset_t)); + end = cheevo->condsets + cheevo->count; + set = 0; + + for (condset = cheevo->condsets; condset < end; condset++) + { + condset->count = + cheevos_count_conds_in_set(ud->memaddr.string, set++); + + if (condset->count) + { + condset->conds = (cheevos_cond_t*) + malloc(condset->count * sizeof(cheevos_cond_t)); + + if (!condset->conds) + return -1; + + memset((void*)condset->conds, 0, + condset->count * sizeof(cheevos_cond_t)); + + condset->expression = cheevos_dupstr(&ud->memaddr); + cheevos_parse_memaddr(condset->conds, ud->memaddr.string); + } + else + condset->conds = NULL; + } + } + + return 0; +} + +static int cheevos_read__json_key( void *userdata, + const char *name, size_t length) +{ + cheevos_readud_t *ud = (cheevos_readud_t*)userdata; + uint32_t hash = cheevos_djb2(name, length); + + ud->field = NULL; + + if (hash == JSON_KEY_ACHIEVEMENTS) + ud->in_cheevos = 1; + else if (hash == JSON_KEY_CONSOLE_ID) + ud->is_console_id = 1; + else if (ud->in_cheevos) + { + switch ( hash ) + { + case JSON_KEY_ID: + ud->field = &ud->id; + break; + case JSON_KEY_MEMADDR: + ud->field = &ud->memaddr; + break; + case JSON_KEY_TITLE: + ud->field = &ud->title; + break; + case JSON_KEY_DESCRIPTION: + ud->field = &ud->desc; + break; + case JSON_KEY_POINTS: + ud->field = &ud->points; + break; + case JSON_KEY_AUTHOR: + ud->field = &ud->author; + break; + case JSON_KEY_MODIFIED: + ud->field = &ud->modified; + break; + case JSON_KEY_CREATED: + ud->field = &ud->created; + break; + case JSON_KEY_BADGENAME: + ud->field = &ud->badge; + break; + case JSON_KEY_FLAGS: + ud->field = &ud->flags; + break; + } + } + + return 0; +} + +static int cheevos_read__json_string(void *userdata, + const char *string, size_t length) +{ + cheevos_readud_t *ud = (cheevos_readud_t*)userdata; + + if (ud->field) + { + ud->field->string = string; + ud->field->length = length; + } + + return 0; +} + +static int cheevos_read__json_number(void *userdata, + const char *number, size_t length) +{ + cheevos_readud_t *ud = (cheevos_readud_t*)userdata; + + if (ud->field) + { + ud->field->string = number; + ud->field->length = length; + } + else if (ud->is_console_id) + { + cheevos_locals.console_id = strtol(number, NULL, 10); + ud->is_console_id = 0; + } + + return 0; +} + +static int cheevos_read__json_end_object(void *userdata) +{ + cheevos_readud_t *ud = (cheevos_readud_t*)userdata; + + if (ud->in_cheevos) + return cheevos_new_cheevo(ud); + + return 0; +} + +static int cheevos_read__json_end_array(void *userdata) +{ + cheevos_readud_t *ud = (cheevos_readud_t*)userdata; + ud->in_cheevos = 0; + return 0; +} + +static int cheevos_parse(const char *json) +{ + static const jsonsax_handlers_t handlers = + { + NULL, + NULL, + NULL, + cheevos_read__json_end_object, + NULL, + cheevos_read__json_end_array, + cheevos_read__json_key, + NULL, + cheevos_read__json_string, + cheevos_read__json_number, + NULL, + NULL + }; + + unsigned core_count, unofficial_count; + cheevos_readud_t ud; + settings_t *settings = config_get_ptr(); + + /* Just return OK if cheevos are disabled. */ + if (!settings->cheevos.enable) + return 0; + + /* Count the number of achievements in the JSON file. */ + if (cheevos_count_cheevos(json, &core_count, &unofficial_count) != JSONSAX_OK) + return -1; + + /* Allocate the achievements. */ + + cheevos_locals.core.cheevos = (cheevo_t*) + malloc(core_count * sizeof(cheevo_t)); + cheevos_locals.core.count = core_count; + + cheevos_locals.unofficial.cheevos = (cheevo_t*) + malloc(unofficial_count * sizeof(cheevo_t)); + cheevos_locals.unofficial.count = unofficial_count; + + if (!cheevos_locals.core.cheevos || !cheevos_locals.unofficial.cheevos) + { + free((void*)cheevos_locals.core.cheevos); + free((void*)cheevos_locals.unofficial.cheevos); + cheevos_locals.core.count = cheevos_locals.unofficial.count = 0; + + return -1; + } + + memset((void*)cheevos_locals.core.cheevos, + 0, core_count * sizeof(cheevo_t)); + memset((void*)cheevos_locals.unofficial.cheevos, + 0, unofficial_count * sizeof(cheevo_t)); + + /* Load the achievements. */ + ud.in_cheevos = 0; + ud.is_console_id = 0; + ud.field = NULL; + ud.core_count = 0; + ud.unofficial_count = 0; + + if (jsonsax_parse(json, &handlers, (void*)&ud) != JSONSAX_OK) + { + cheevos_unload(); + return -1; + } + + return 0; +} + +/***************************************************************************** +Test all the achievements (call once per frame). +*****************************************************************************/ + +uint8_t *cheevos_get_memory(const cheevos_var_t *var) +{ + if (var->bank_id >= 0) + { + rarch_system_info_t *system; + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); + + if (system->mmaps.num_descriptors != 0) + return (uint8_t *)system->mmaps.descriptors[var->bank_id].ptr + var->value; + + return (uint8_t *)cheevos_locals.meminfo[var->bank_id].data + var->value; + } + + return NULL; +} + +static unsigned cheevos_get_var_value(cheevos_var_t *var) +{ + unsigned previous = var->previous; + unsigned live_val = 0; + const uint8_t *memory = NULL; + + if (var->type == CHEEVOS_VAR_TYPE_VALUE_COMP) + return var->value; + + if ( var->type == CHEEVOS_VAR_TYPE_ADDRESS + || var->type == CHEEVOS_VAR_TYPE_DELTA_MEM) + { + /* TODO Check with Scott if the bank id is needed */ + memory = cheevos_get_memory(var); + + if (memory) + { + live_val = memory[0]; + + if (var->size > CHEEVOS_VAR_SIZE_BIT_0 + && var->size <= CHEEVOS_VAR_SIZE_BIT_7) + live_val = (live_val & + (1 << (var->size - CHEEVOS_VAR_SIZE_BIT_0))) != 0; + else + { + switch (var->size) + { + case CHEEVOS_VAR_SIZE_NIBBLE_LOWER: + live_val &= 0x0f; + break; + case CHEEVOS_VAR_SIZE_NIBBLE_UPPER: + live_val = (live_val >> 4) & 0x0f; + break; + case CHEEVOS_VAR_SIZE_EIGHT_BITS: + break; + case CHEEVOS_VAR_SIZE_SIXTEEN_BITS: + live_val |= memory[1] << 8; + break; + case CHEEVOS_VAR_SIZE_THIRTYTWO_BITS: + live_val |= memory[1] << 8; + live_val |= memory[2] << 16; + live_val |= memory[3] << 24; + break; + } + } + } + else + live_val = 0; + + if (var->type == CHEEVOS_VAR_TYPE_DELTA_MEM) + { + var->previous = live_val; + return previous; + } + + return live_val; + } + + /* We shouldn't get here... */ + return 0; +} + +static int cheevos_test_condition(cheevos_cond_t *cond) +{ + unsigned sval = cheevos_get_var_value(&cond->source); + unsigned tval = cheevos_get_var_value(&cond->target); + + switch (cond->op) + { + case CHEEVOS_COND_OP_EQUALS: + return sval == tval; + case CHEEVOS_COND_OP_LESS_THAN: + return sval < tval; + case CHEEVOS_COND_OP_LESS_THAN_OR_EQUAL: + return sval <= tval; + case CHEEVOS_COND_OP_GREATER_THAN: + return sval > tval; + case CHEEVOS_COND_OP_GREATER_THAN_OR_EQUAL: + return sval >= tval; + case CHEEVOS_COND_OP_NOT_EQUAL_TO: + return sval != tval; + default: + break; + } + + return 1; +} + +static int cheevos_test_cond_set(const cheevos_condset_t *condset, + int *dirty_conds, int *reset_conds, int match_any) +{ + int cond_valid = 0; + int set_valid = 1; + const cheevos_cond_t *end = condset->conds + condset->count; + cheevos_cond_t *cond = NULL; + + /* Now, read all Pause conditions, and if any are true, + * do not process further (retain old state). */ + + for (cond = condset->conds; cond < end; cond++) + { + if (cond->type == CHEEVOS_COND_TYPE_PAUSE_IF) + { + /* Reset by default, set to 1 if hit! */ + cond->curr_hits = 0; + + if (cheevos_test_condition(cond)) + { + cond->curr_hits = 1; + *dirty_conds = 1; + + /* Early out: this achievement is paused, + * do not process any further! */ + return 0; + } + } + } + + /* Read all standard conditions, and process as normal: */ + for (cond = condset->conds; cond < end; cond++) + { + if ( cond->type == CHEEVOS_COND_TYPE_PAUSE_IF + || cond->type == CHEEVOS_COND_TYPE_RESET_IF) + continue; + + if (cond->req_hits != 0 && cond->curr_hits >= cond->req_hits) + continue; + + cond_valid = cheevos_test_condition(cond); + + if (cond_valid) + { + cond->curr_hits++; + *dirty_conds = 1; + + /* Process this logic, if this condition is true: */ + if (cond->req_hits == 0) + ; /* Not a hit-based requirement: ignore any additional logic! */ + else if (cond->curr_hits < cond->req_hits) + cond_valid = 0; /* Not entirely valid yet! */ + + if (match_any) + break; + } + + /* Sequential or non-sequential? */ + set_valid &= cond_valid; + } + + /* Now, ONLY read reset conditions! */ + for (cond = condset->conds; cond < end; cond++) + { + if (cond->type == CHEEVOS_COND_TYPE_RESET_IF) + { + cond_valid = cheevos_test_condition(cond); + + if (cond_valid) + { + *reset_conds = 1; /* Resets all hits found so far */ + set_valid = 0; /* Cannot be valid if we've hit a reset condition. */ + break; /* No point processing any further reset conditions. */ + } + } + } + + return set_valid; +} + +static int cheevos_reset_cond_set(cheevos_condset_t *condset, int deltas) +{ + int dirty = 0; + const cheevos_cond_t *end = condset->conds + condset->count; + cheevos_cond_t *cond = NULL; + + if (deltas) + { + for (cond = condset->conds; cond < end; cond++) + { + dirty |= cond->curr_hits != 0; + cond->curr_hits = 0; + + cond->source.previous = cond->source.value; + cond->target.previous = cond->target.value; + } + } + else + { + for (cond = condset->conds; cond < end; cond++) + { + dirty |= cond->curr_hits != 0; + cond->curr_hits = 0; + } + } + + return dirty; +} + +static int cheevos_test_cheevo(cheevo_t *cheevo) +{ + int dirty; + int dirty_conds = 0; + int reset_conds = 0; + int ret_val = 0; + int ret_val_sub_cond = cheevo->count == 1; + cheevos_condset_t *condset = cheevo->condsets; + const cheevos_condset_t *end = condset + cheevo->count; + + if (condset < end) + { + ret_val = cheevos_test_cond_set(condset, &dirty_conds, &reset_conds, 0); + condset++; + } + + while (condset < end) + { + int res = cheevos_test_cond_set(condset, &dirty_conds, &reset_conds, 0); + ret_val_sub_cond |= res; + condset++; + } + + if (dirty_conds) + cheevo->dirty |= CHEEVOS_DIRTY_CONDITIONS; + + if (reset_conds) + { + dirty = 0; + + for (condset = cheevo->condsets; condset < end; condset++) + dirty |= cheevos_reset_cond_set(condset, 0); + + if (dirty) + cheevo->dirty |= CHEEVOS_DIRTY_CONDITIONS; + } + + return ret_val && ret_val_sub_cond; +} + +static void cheevos_url_encode(const char *str, char *encoded, size_t len) +{ + while (*str) + { + if ( isalnum(*str) || *str == '-' + || *str == '_' || *str == '.' + || *str == '~') + { + if (len >= 2) + { + *encoded++ = *str++; + len--; + } + else + break; + } + else + { + if (len >= 4) + { + sprintf(encoded, "%%%02x", (uint8_t)*str); + encoded += 3; + str++; + len -= 3; + } + else + break; + } + } + + *encoded = 0; +} + +static int cheevos_login(retro_time_t *timeout) +{ + int res; + char urle_user[64] = {0}; + char urle_pwd[64] = {0}; + char request[256] = {0}; + const char *json = NULL; + const char *username = NULL; + const char *password = NULL; + settings_t *settings = config_get_ptr(); + + if (cheevos_locals.token[0]) + return 0; + + username = settings->cheevos.username; + password = settings->cheevos.password; + + if (!username || !*username || !password || !*password) + { + runloop_msg_queue_push("Missing Retro Achievements account information", 0, 5 * 60, false); + runloop_msg_queue_push("Please fill in your account information in Settings", 0, 5 * 60, false); + ELOG(@"CHEEVOS username and/or password not informed\n"); + return -1; + } + + cheevos_url_encode(username, urle_user, sizeof(urle_user)); + cheevos_url_encode(password, urle_pwd, sizeof(urle_pwd)); + + snprintf( + request, sizeof(request), + "http://retroachievements.org/dorequest.php?r=login&u=%s&p=%s", + urle_user, urle_pwd + ); + + request[sizeof(request) - 1] = 0; + +#ifdef CHEEVOS_LOG_URLS + VLOG(@"CHEEVOS url to login: %s\n", request); +#endif + + if (!cheevos_http_get(&json, NULL, request, timeout)) + { + res = cheevos_get_value(json, JSON_KEY_TOKEN, + cheevos_locals.token, sizeof(cheevos_locals.token)); + + free((void*)json); + + if (!res) + return 0; + } + + runloop_msg_queue_push("Retro Achievements login error", + 0, 5 * 60, false); + runloop_msg_queue_push( + "Please make sure your account information is correct", + 0, 5 * 60, false); + ELOG(@"CHEEVOS error getting user token.\n"); + return -1; +} + +static void cheevos_make_unlock_url(const cheevo_t *cheevo, char* url, size_t url_size) +{ + settings_t *settings = config_get_ptr(); + + snprintf( + url, url_size, + "http://retroachievements.org/dorequest.php?r=awardachievement&u=%s&t=%s&a=%u&h=%d", + settings->cheevos.username, cheevos_locals.token, cheevo->id, settings->cheevos.hardcore_mode_enable + ); + + url[url_size - 1] = 0; + +#ifdef CHEEVOS_LOG_URLS + VLOG(@"CHEEVOS url to award the cheevo: %s\n", url); +#endif +} + +static void cheevos_unlocked(void *task_data, void *user_data, const char *error) +{ + cheevo_t *cheevo = (cheevo_t *)user_data; + + if (error == NULL) + { + VLOG(@"CHEEVOS awarded achievement %u\n", cheevo->id); + } + else + { + char url[256] = {0}; + + ELOG(@"CHEEVOS error awarding achievement %u, retrying\n", cheevo->id); + + cheevos_make_unlock_url(cheevo, url, sizeof(url)); + task_push_http_transfer(url, true, NULL, cheevos_unlocked, cheevo); + } +} + +static void cheevos_test_cheevo_set(const cheevoset_t *set) +{ + cheevo_t *cheevo = NULL; + const cheevo_t *end = set->cheevos + set->count; + + for (cheevo = set->cheevos; cheevo < end; cheevo++) + { + if (cheevo->active && cheevos_test_cheevo(cheevo)) + { + char url[256] = {0}; + + cheevo->active = 0; + + VLOG(@"CHEEVOS awarding cheevo %u: %s (%s)\n", + cheevo->id, cheevo->title, cheevo->description); + + runloop_msg_queue_push(cheevo->title, 0, 3 * 60, false); + runloop_msg_queue_push(cheevo->description, 0, 5 * 60, false); + + cheevos_make_unlock_url(cheevo, url, sizeof(url)); + task_push_http_transfer(url, true, NULL, cheevos_unlocked, cheevo); + } + } +} + +/***************************************************************************** +Free the loaded achievements. +*****************************************************************************/ + +static void cheevos_free_condset(const cheevos_condset_t *set) +{ + free((void*)set->conds); +} + +static void cheevos_free_cheevo(const cheevo_t *cheevo) +{ + free((void*)cheevo->title); + free((void*)cheevo->description); + free((void*)cheevo->author); + free((void*)cheevo->badge); + cheevos_free_condset(cheevo->condsets); +} + +static void cheevos_free_cheevo_set(const cheevoset_t *set) +{ + const cheevo_t *cheevo = set->cheevos; + const cheevo_t *end = cheevo + set->count; + + while (cheevo < end) + cheevos_free_cheevo(cheevo++); + + free((void*)set->cheevos); +} + +/***************************************************************************** +Load achievements from retroachievements.org. +*****************************************************************************/ + +static int cheevos_get_by_game_id(const char **json, + unsigned game_id, retro_time_t *timeout) +{ + settings_t *settings = config_get_ptr(); + + /* Just return OK if cheevos are disabled. */ + if (!settings->cheevos.enable) + return 0; + + if (!cheevos_login(timeout)) + { + char request[256] = {0}; + snprintf( + request, sizeof(request), + "http://retroachievements.org/dorequest.php?r=patch&u=%s&g=%u&f=3&l=1&t=%s", + settings->cheevos.username, game_id, cheevos_locals.token + ); + + request[sizeof(request) - 1] = 0; + +#ifdef CHEEVOS_LOG_URLS + VLOG(@"CHEEVOS url to get the list of cheevos: %s\n", request); +#endif + + if (!cheevos_http_get(json, NULL, request, timeout)) + { + VLOG(@"CHEEVOS got achievements for game id %u\n", game_id); + return 0; + } + + ELOG(@"CHEEVOS error getting achievements for game id %u\n", game_id); + } + + return -1; +} + +static unsigned cheevos_get_game_id(unsigned char *hash, retro_time_t *timeout) +{ + int res; + char request[256] = {0}; + char game_id[16] = {0}; + const char* json = NULL; + + RARCH_LOG( + "CHEEVOS getting game id for hash %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", + hash[ 0], hash[ 1], hash[ 2], hash[ 3], + hash[ 4], hash[ 5], hash[ 6], hash[ 7], + hash[ 8], hash[ 9], hash[10], hash[11], + hash[12], hash[13], hash[14], hash[15] + ); + + snprintf( + request, sizeof(request), + "http://retroachievements.org/dorequest.php?r=gameid&m=%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", + hash[ 0], hash[ 1], hash[ 2], hash[ 3], + hash[ 4], hash[ 5], hash[ 6], hash[ 7], + hash[ 8], hash[ 9], hash[10], hash[11], + hash[12], hash[13], hash[14], hash[15] + ); + + request[sizeof(request) - 1] = 0; + +#ifdef CHEEVOS_LOG_URLS + VLOG(@"CHEEVOS url to get the game's id: %s\n", request); +#endif + + if (!cheevos_http_get(&json, NULL, request, timeout)) + { + res = cheevos_get_value(json, JSON_KEY_GAMEID, + game_id, sizeof(game_id)); + + free((void*)json); + + if (!res) + { + VLOG(@"CHEEVOS got game id %s\n", game_id); + return strtoul(game_id, NULL, 10); + } + } + + ELOG(@"CHEEVOS error getting game_id\n"); + return 0; +} + +static void cheevos_make_playing_url(unsigned game_id, char* url, size_t url_size) +{ + settings_t *settings = config_get_ptr(); + + snprintf( + url, url_size, + "http://retroachievements.org/dorequest.php?r=postactivity&u=%s&t=%s&a=3&m=%u", + settings->cheevos.username, cheevos_locals.token, game_id + ); + + url[url_size - 1] = 0; + +#ifdef CHEEVOS_LOG_URLS + VLOG(@"CHEEVOS url to post the 'playing' activity: %s\n", url); +#endif +} + +static void cheevos_playing(void *task_data, void *user_data, const char *error) +{ + unsigned game_id = (unsigned)(uintptr_t)user_data; + + if (error == NULL) + { + VLOG(@"CHEEVOS posted playing game %u activity\n", game_id); + } + else + { + char url[256] = {0}; + + ELOG(@"CHEEVOS error posting playing game %u activity, will retry\n", game_id); + + cheevos_make_playing_url(game_id, url, sizeof(url)); + task_push_http_transfer(url, true, NULL, cheevos_playing, (void*)(uintptr_t)game_id); + } +} + +#ifndef CHEEVOS_DONT_DEACTIVATE +static int cheevos_deactivate__json_index(void *userdata, unsigned int index) +{ + cheevos_deactivate_t *ud = (cheevos_deactivate_t*)userdata; + ud->is_element = 1; + return 0; +} + +static int cheevos_deactivate__json_number(void *userdata, + const char *number, size_t length) +{ + long id; + int found; + cheevo_t* cheevo = NULL; + const cheevo_t* end = NULL; + cheevos_deactivate_t *ud = (cheevos_deactivate_t*)userdata; + + if (ud->is_element) + { + ud->is_element = 0; + id = strtol(number, NULL, 10); + found = 0; + cheevo = cheevos_locals.core.cheevos; + end = cheevo + cheevos_locals.core.count; + + for (; cheevo < end; cheevo++) + { + if (cheevo->id == (unsigned)id) + { + cheevo->active = 0; + found = 1; + break; + } + } + + if (!found) + { + cheevo = cheevos_locals.unofficial.cheevos; + end = cheevo + cheevos_locals.unofficial.count; + + for (; cheevo < end; cheevo++) + { + if (cheevo->id == (unsigned)id) + { + cheevo->active = 0; + break; + } + } + } + if (found) + VLOG(@"CHEEVOS deactivated unlocked cheevo %s\n", cheevo->title); + else + ELOG(@"CHEEVOS unknown cheevo to deactivate: %u\n", id); + } + + return 0; +} +#endif + +static int cheevos_deactivate_unlocks(unsigned game_id, retro_time_t *timeout) +{ + /* Only call this function after the cheevos have been loaded. */ + +#ifndef CHEEVOS_DONT_DEACTIVATE + static const jsonsax_handlers_t handlers = + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + cheevos_deactivate__json_index, + NULL, + cheevos_deactivate__json_number, + NULL, + NULL + }; + + int res; + cheevos_deactivate_t ud; + const char* json = NULL; + + if (!cheevos_login(timeout)) + { + char request[256] = {0}; + settings_t *settings = config_get_ptr(); + + snprintf( + request, sizeof(request), + "http://retroachievements.org/dorequest.php?r=unlocks&u=%s&t=%s&g=%u&h=0", + settings->cheevos.username, cheevos_locals.token, game_id + ); + + request[sizeof(request) - 1] = 0; + +#ifdef CHEEVOS_LOG_URLS + VLOG(@"CHEEVOS url to get the list of unlocked cheevos: %s\n", request); +#endif + + if (!cheevos_http_get(&json, NULL, request, timeout)) + { + ud.is_element = 0; + res = jsonsax_parse(json, &handlers, (void*)&ud); + free((void*)json); + + if (res == JSONSAX_OK) + { + VLOG(@"CHEEVOS deactivated unlocked achievements\n"); + return 0; + } + } + } + + ELOG(@"CHEEVOS error deactivating unlocked achievements\n"); + return -1; +#else + VLOG(@"CHEEVOS cheevo deactivation is disabled\n"); + return 0; +#endif +} + +#define CHEEVOS_SIX_MB (6 * 1024 * 1024) +#define CHEEVOS_EIGHT_MB (8 * 1024 * 1024) + +static INLINE unsigned cheevos_next_power_of_2(unsigned n) +{ + n--; + + n |= n >> 1; + n |= n >> 2; + n |= n >> 4; + n |= n >> 8; + n |= n >> 16; + + return n + 1; +} + +static size_t cheevos_eval_md5( + const struct retro_game_info *info, + MD5_CTX *ctx) +{ + MD5_Init(ctx); + + if (info->data) + { + MD5_Update(ctx, info->data, info->size); + return info->size; + } + else + { + RFILE *file = filestream_open(info->path, RFILE_MODE_READ, 0); + size_t size = 0; + + if (!file) + return 0; + + for (;;) + { + uint8_t buffer[4096]; + ssize_t num_read = filestream_read(file, + (void*)buffer, sizeof(buffer)); + + if (num_read <= 0) + break; + + MD5_Update(ctx, (void*)buffer, num_read); + size += num_read; + } + + filestream_close(file); + return size; + } +} + +static void cheevos_fill_md5(size_t size, size_t total, MD5_CTX *ctx) +{ + char buffer[4096] = {0}; + ssize_t fill = total - size; + + memset((void*)buffer, 0, sizeof(buffer)); + + while (fill > 0) + { + ssize_t len = sizeof(buffer); + + if (len > fill) + len = fill; + + MD5_Update(ctx, (void*)buffer, len); + fill -= len; + } +} + +static unsigned cheevos_find_game_id_generic( + const struct retro_game_info *info, + retro_time_t timeout) +{ + MD5_CTX ctx; + retro_time_t to; + uint8_t hash[16] = {0}; + size_t size = cheevos_eval_md5(info, &ctx); + + MD5_Final(hash, &ctx); + + if (!size) + return 0; + + to = timeout; + return cheevos_get_game_id(hash, &to); +} + +static unsigned cheevos_find_game_id_snes( + const struct retro_game_info *info, + retro_time_t timeout) +{ + MD5_CTX ctx; + retro_time_t to; + uint8_t hash[16] = {0}; + size_t size = cheevos_eval_md5(info, &ctx); + + if (!size) + { + MD5_Final(hash, &ctx); + return 0; + } + + cheevos_fill_md5(size, CHEEVOS_EIGHT_MB, &ctx); + MD5_Final(hash, &ctx); + + to = timeout; + return cheevos_get_game_id(hash, &to); +} + +static unsigned cheevos_find_game_id_genesis( + const struct retro_game_info *info, retro_time_t timeout) +{ + MD5_CTX ctx; + uint8_t hash[16]; + retro_time_t to; + size_t size = cheevos_eval_md5(info, &ctx); + + if (!size) + { + MD5_Final(hash, &ctx); + return 0; + } + + cheevos_fill_md5(size, CHEEVOS_SIX_MB, &ctx); + MD5_Final(hash, &ctx); + + to = timeout; + return cheevos_get_game_id(hash, &to); +} + +static unsigned cheevos_find_game_id_nes( + const struct retro_game_info *info, + retro_time_t timeout) +{ + struct + { + uint8_t id[4]; /* NES^Z */ + uint8_t rom_size; + uint8_t vrom_size; + uint8_t rom_type; + uint8_t rom_type2; + uint8_t reserve[8]; + } header; + + size_t rom_size; + MD5_CTX ctx; + uint8_t hash[16]; + retro_time_t to; + + if (info->data) + { + if (info->size < sizeof(header)) + return 0; + + memcpy((void*)&header, info->data, sizeof(header)); + } + else + { + ssize_t num_read; + RFILE *file = filestream_open(info->path, RFILE_MODE_READ, 0); + + if (!file) + return 0; + + num_read = filestream_read(file, (void*)&header, sizeof(header)); + filestream_close(file); + + if (num_read < (ssize_t)sizeof(header)) + return 0; + } + + if ( header.id[0] != 'N' + || header.id[1] != 'E' + || header.id[2] != 'S' + || header.id[3] != 0x1a) + return 0; + + if (header.rom_size) + rom_size = cheevos_next_power_of_2(header.rom_size); + else + rom_size = 256; + + if (info->data) + { + if (rom_size + sizeof(header) > info->size) + return 0; + + MD5_Init(&ctx); + MD5_Update(&ctx, + (void*)((char*)info->data + sizeof(header)), rom_size); + MD5_Final(hash, &ctx); + } + else + { + unsigned bytes; + ssize_t num_read; + int i, mapper_no; + int not_power2[] = + { + 53, 198, 228 + }; + bool round = true; + RFILE *file = filestream_open(info->path, RFILE_MODE_READ, 0); + uint8_t * data = (uint8_t *) malloc(rom_size << 14); + + if (!file || !data) + { + if (file) + filestream_close(file); + return 0; + } + + /* TODO/FIXME - any way we can move this per-core stuff + * somewhere else? Bound to become really messy in here over time */ + + /* from FCEU core - need it for a correctly md5 sum */ + memset(data, 0xFF, rom_size << 14); + + /* from FCEU core - compute size using the cart mapper */ + mapper_no = (header.rom_type >> 4); + mapper_no |= (header.rom_type2 & 0xF0); + + for (i = 0; i != ARRAY_SIZE(not_power2); ++i) + { + /* for games not to the power of 2, so we just read enough + * PRG rom from it, but we have to keep ROM_size to the power of 2 + * since PRGCartMapping wants ROM_size to be to the power of 2 + * so instead if not to power of 2, we just use head.ROM_size when + * we use FCEU_read. */ + if (not_power2[i] == mapper_no) + { + round = false; + break; + } + } + + MD5_Init(&ctx); + filestream_seek(file, sizeof(header), SEEK_SET); + + /* TODO/FIXME - any way we can move this per-core stuff + * somewhere else? Bound to become really messy in here over time */ + /* from FCEU core - check if Trainer included in ROM data */ + + if (header.rom_type & 4) + filestream_seek(file, sizeof(header), SEEK_CUR); + + bytes = (round) ? rom_size : header.rom_size; + num_read = filestream_read(file, (void*)data, 0x4000 * bytes ); + filestream_close(file); + + if (num_read <= 0) + { + free(data); + return 0; + } + + MD5_Update(&ctx, (void*) data, rom_size << 14); + MD5_Final(hash, &ctx); + free(data); + } + + to = timeout; + return cheevos_get_game_id(hash, &to); +} + +bool cheevos_load(const void *data) +{ + static const uint32_t genesis_exts[] = + { + 0x0b888feeU, /* mdx */ + 0x005978b6U, /* md */ + 0x0b88aa89U, /* smd */ + 0x0b88767fU, /* gen */ + 0x0b8861beU, /* bin */ + 0x0b886782U, /* cue */ + 0x0b8880d0U, /* iso */ + 0x0b88aa98U, /* sms */ + 0x005977f3U, /* gg */ + 0x0059797fU, /* sg */ + 0 + }; + + static const uint32_t snes_exts[] = + { + 0x0b88aa88U, /* smc */ + 0x0b8872bbU, /* fig */ + 0x0b88a9a1U, /* sfc */ + 0x0b887623U, /* gd3 */ + 0x0b887627U, /* gd7 */ + 0x0b886bf3U, /* dx2 */ + 0x0b886312U, /* bsx */ + 0x0b88abd2U, /* swc */ + 0 + }; + + static cheevos_finder_t finders[] = + { + {cheevos_find_game_id_snes, "SNES (8Mb padding)", snes_exts}, + {cheevos_find_game_id_genesis, "Genesis (6Mb padding)", genesis_exts}, + {cheevos_find_game_id_nes, "NES (discards VROM)", NULL}, + {cheevos_find_game_id_generic, "Generic (plain content)", NULL}, + }; + + struct retro_system_info sysinfo; + unsigned i; + const char *json = NULL; + retro_time_t timeout = 5000000; + unsigned game_id = 0; + char url[256] = {0}; + settings_t *settings = config_get_ptr(); + const struct retro_game_info *info = (const struct retro_game_info*)data; + + cheevos_locals.loaded = 0; + + /* Just return OK if the core doesn't support cheevos, or info is NULL. */ + if (!cheevos_locals.core_supports || !info) + return true; + + cheevos_locals.meminfo[0].id = RETRO_MEMORY_SYSTEM_RAM; + core_get_memory(&cheevos_locals.meminfo[0]); + + cheevos_locals.meminfo[1].id = RETRO_MEMORY_SAVE_RAM; + core_get_memory(&cheevos_locals.meminfo[1]); + + cheevos_locals.meminfo[2].id = RETRO_MEMORY_VIDEO_RAM; + core_get_memory(&cheevos_locals.meminfo[2]); + + cheevos_locals.meminfo[3].id = RETRO_MEMORY_RTC; + core_get_memory(&cheevos_locals.meminfo[3]); + + /* Bail out if cheevos are disabled. + * But set the above anyways, command_read_ram needs it. */ + if (!settings->cheevos.enable) + return true; + + /* Use the supported extensions as a hint + * to what method we should use. */ + core_get_system_info(&sysinfo); + + for (i = 0; i < ARRAY_SIZE(finders); i++) + { + if (finders[i].ext_hashes) + { + const char *ext = sysinfo.valid_extensions; + + while (ext) + { + int j; + unsigned hash; + const char *end = strchr(ext, '|'); + + if (end) + { + hash = cheevos_djb2(ext, end - ext); + ext = end + 1; + } + else + { + hash = cheevos_djb2(ext, strlen(ext)); + ext = NULL; + } + + for (j = 0; finders[i].ext_hashes[j]; j++) + { + if (finders[i].ext_hashes[j] == hash) + { + VLOG(@"CHEEVOS testing %s\n", finders[i].name); + + game_id = finders[i].finder(info, 5000000); + + if (game_id) + goto found; + + ext = NULL; /* force next finder */ + break; + } + } + } + } + } + + for (i = 0; i < ARRAY_SIZE(finders); i++) + { + if (finders[i].ext_hashes) + continue; + + VLOG(@"CHEEVOS testing %s\n", finders[i].name); + + game_id = finders[i].finder(info, 5000000); + + if (game_id) + goto found; + } + + VLOG(@"CHEEVOS this game doesn't feature achievements\n"); + return false; + +found: + if (!cheevos_get_by_game_id(&json, game_id, &timeout)) + { + if (!cheevos_parse(json)) + { + cheevos_deactivate_unlocks(game_id, &timeout); + free((void*)json); + cheevos_locals.loaded = 1; + + cheevos_make_playing_url(game_id, url, sizeof(url)); + task_push_http_transfer(url, true, NULL, + cheevos_playing, (void*)(uintptr_t)game_id); + return true; + } + + free((void*)json); + } + + runloop_msg_queue_push("Error loading achievements", 0, 5 * 60, false); + ELOG(@"CHEEVOS error loading achievements\n", 0, 5 * 60, false); + return false; +} + +void cheevos_populate_menu(void *data) +{ +#ifdef HAVE_MENU + unsigned i; + unsigned items_found = 0; + settings_t *settings = config_get_ptr(); + menu_displaylist_info_t *info = (menu_displaylist_info_t*)data; + cheevo_t *cheevo = cheevos_locals.core.cheevos; + const cheevo_t *end = cheevos_locals.core.cheevos + + cheevos_locals.core.count; + + for (i = 0; cheevo < end; i++, cheevo++) + { + if (!cheevo->active) + { + menu_entries_append_enum(info->list, cheevo->title, + cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY, + MENU_SETTINGS_CHEEVOS_START + i, 0, 0); + items_found++; + } + } + + if (settings->cheevos.test_unofficial) + { + cheevo = cheevos_locals.unofficial.cheevos; + end = cheevos_locals.unofficial.cheevos + + cheevos_locals.unofficial.count; + + for (i = cheevos_locals.core.count; cheevo < end; i++, cheevo++) + { + if (!cheevo->active) + menu_entries_append_enum(info->list, cheevo->title, + cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY, + MENU_SETTINGS_CHEEVOS_START + i, 0, 0); + } + } + + cheevo = cheevos_locals.core.cheevos; + end = cheevos_locals.core.cheevos + cheevos_locals.core.count; + + for (i = 0; cheevo < end; i++, cheevo++) + { + if (cheevo->active) + { + menu_entries_append_enum(info->list, cheevo->title, + cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY, + MENU_SETTINGS_CHEEVOS_START + i, 0, 0); + items_found++; + } + } + + if (settings->cheevos.test_unofficial) + { + cheevo = cheevos_locals.unofficial.cheevos; + end = cheevos_locals.unofficial.cheevos + + cheevos_locals.unofficial.count; + + for (i = cheevos_locals.core.count; cheevo < end; i++, cheevo++) + { + if (cheevo->active) + { + menu_entries_append_enum(info->list, cheevo->title, + cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY, + MENU_SETTINGS_CHEEVOS_START + i, 0, 0); + items_found++; + } + } + } + + if (items_found == 0) + { + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_ACHIEVEMENTS_TO_DISPLAY), + msg_hash_to_str(MENU_ENUM_LABEL_NO_ACHIEVEMENTS_TO_DISPLAY), + MENU_ENUM_LABEL_NO_ACHIEVEMENTS_TO_DISPLAY, + FILE_TYPE_NONE, 0, 0); + } +#endif +} + +bool cheevos_get_description(cheevos_ctx_desc_t *desc) +{ + cheevo_t *cheevos = cheevos_locals.core.cheevos; + + if (desc->idx >= cheevos_locals.core.count) + { + cheevos = cheevos_locals.unofficial.cheevos; + desc->idx -= cheevos_locals.unofficial.count; + } + + strncpy(desc->s, cheevos[desc->idx].description, desc->len); + desc->s[desc->len - 1] = 0; + + return true; +} + +bool cheevos_apply_cheats(bool *data_bool) +{ + cheats_are_enabled = *data_bool; + cheats_were_enabled |= cheats_are_enabled; + + return true; +} + +bool cheevos_unload(void) +{ + if (!cheevos_locals.loaded) + return false; + + cheevos_free_cheevo_set(&cheevos_locals.core); + cheevos_free_cheevo_set(&cheevos_locals.unofficial); + + cheevos_locals.loaded = 0; + + return true; +} + +bool cheevos_toggle_hardcore_mode(void) +{ + settings_t *settings = config_get_ptr(); + + /* reset and deinit rewind to avoid cheat the score */ + if (settings->cheevos.hardcore_mode_enable) + { + /* send reset core cmd to avoid any user savestate previusly loaded */ + command_event(CMD_EVENT_RESET, NULL); + if (settings->rewind_enable) + command_event(CMD_EVENT_REWIND_DEINIT, NULL); + + VLOG(@"%s\n", msg_hash_to_str(MSG_CHEEVOS_HARDCORE_MODE_ENABLE)); + runloop_msg_queue_push( + msg_hash_to_str(MSG_CHEEVOS_HARDCORE_MODE_ENABLE), 0, 3 * 60, true); + } + else + { + if (settings->rewind_enable) + command_event(CMD_EVENT_REWIND_INIT, NULL); + } + + return true; +} + +bool cheevos_test(void) +{ + if (!cheevos_locals.loaded) + return false; + + if (!cheats_are_enabled && !cheats_were_enabled) + { + settings_t *settings = config_get_ptr(); + if (!settings->cheevos.enable) + return false; + + cheevos_test_cheevo_set(&cheevos_locals.core); + + if (settings->cheevos.test_unofficial) + cheevos_test_cheevo_set(&cheevos_locals.unofficial); + } + + return true; +} + +bool cheevos_set_cheats(void) +{ + cheats_were_enabled = cheats_are_enabled; + + return true; +} + +void cheevos_set_support_cheevos(bool state) +{ + cheevos_locals.core_supports = state; +} diff --git a/PVSupport/Sources/retro/cheevos.h b/PVSupport/Sources/retro/cheevos.h new file mode 100644 index 0000000000..c5d3f529d3 --- /dev/null +++ b/PVSupport/Sources/retro/cheevos.h @@ -0,0 +1,66 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2015-2016 - Andre Leiradella + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __RARCH_CHEEVOS_H +#define __RARCH_CHEEVOS_H + +#include +#include + +#include + +RETRO_BEGIN_DECLS + +typedef struct cheevos_ctx_desc +{ + unsigned idx; + char *s; + size_t len; +} cheevos_ctx_desc_t; + +bool cheevos_load(const void *data); + +void cheevos_populate_menu(void *data); + +bool cheevos_get_description(cheevos_ctx_desc_t *desc); + +bool cheevos_apply_cheats(bool *data_bool); + +bool cheevos_unload(void); + +bool cheevos_toggle_hardcore_mode(void); + +bool cheevos_test(void); + +bool cheevos_set_cheats(void); + +void cheevos_set_support_cheevos(bool state); + + +typedef struct +{ + unsigned size; + unsigned type; + int bank_id; + unsigned value; + unsigned previous; +} cheevos_var_t; + +void cheevos_parse_guest_addr(cheevos_var_t *var, unsigned value); +uint8_t *cheevos_get_memory(const cheevos_var_t *var); + +RETRO_END_DECLS + +#endif /* __RARCH_CHEEVOS_H */ diff --git a/PVSupport/Sources/retro/command.c b/PVSupport/Sources/retro/command.c new file mode 100644 index 0000000000..c680757413 --- /dev/null +++ b/PVSupport/Sources/retro/command.c @@ -0,0 +1,2608 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#ifdef _WIN32 +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef HAVE_COMMAND +#include +#include +#include +#endif + +#include "command.h" + +#include "defaults.h" +#include "frontend/frontend_driver.h" +#include "audio/audio_driver.h" +#include "record/record_driver.h" +#include "file_path_special.h" +#include "autosave.h" +#include "core_info.h" +#include "core_type.h" +#include "performance_counters.h" +#include "dynamic.h" +#include "content.h" +#include "movie.h" +#include "general.h" +#include "msg_hash.h" +#include "retroarch.h" +#include "managers/cheat_manager.h" +#include "managers/state_manager.h" +#include "system.h" +#include "ui/ui_companion_driver.h" +#include "tasks/tasks_internal.h" +#include "list_special.h" + +#ifdef HAVE_CHEEVOS +#include "cheevos.h" +#endif + +#include "core.h" +#include "verbosity.h" +#include "runloop.h" +#include "configuration.h" +#include "input/input_remapping.h" + +#ifdef HAVE_MENU +#include "menu/menu_driver.h" +#include "menu/menu_content.h" +#include "menu/menu_display.h" +#include "menu/menu_shader.h" +#endif + +#ifdef HAVE_NETPLAY +#include "network/netplay/netplay.h" +#endif + +#ifdef HAVE_NETWORKING +#include +#endif + +#define DEFAULT_NETWORK_CMD_PORT 55355 +#define STDIN_BUF_SIZE 4096 + +struct command +{ + bool local_enable; +#ifdef HAVE_STDIN_CMD + bool stdin_enable; + char stdin_buf[STDIN_BUF_SIZE]; + size_t stdin_buf_ptr; +#endif + +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) + int net_fd; +#endif + + bool state[RARCH_BIND_LIST_END]; +}; + +enum cmd_source_t { cmd_none, cmd_stdin, cmd_network }; +#if defined(HAVE_STDIN_CMD) || defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) +static enum cmd_source_t lastcmd_source; +#endif +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) +static int lastcmd_net_fd; +static struct sockaddr_storage lastcmd_net_source; +static socklen_t lastcmd_net_source_len; +#endif + +#ifdef HAVE_CHEEVOS +#if defined(HAVE_STDIN_CMD) || defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) +static bool command_reply(const char * data, size_t len) +{ +#ifdef HAVE_STDIN_CMD + if (lastcmd_source == cmd_stdin) + { + fwrite(data, 1,len, stdout); + return true; + } +#endif +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) + if (lastcmd_source == cmd_network) + { + sendto(lastcmd_net_fd, data, len, 0, + (struct sockaddr*)&lastcmd_net_source, lastcmd_net_source_len); + return true; + } +#endif + return false; +} +#endif +#endif + +struct cmd_map +{ + const char *str; + unsigned id; +}; + +struct cmd_action_map +{ + const char *str; + bool (*action)(const char *arg); + const char *arg_desc; +}; + +#ifdef HAVE_COMMAND +static bool command_set_shader(const char *arg) +{ + char msg[256]; + enum rarch_shader_type type = RARCH_SHADER_NONE; + + switch (msg_hash_to_file_type(msg_hash_calculate(path_get_extension(arg)))) + { + case FILE_TYPE_SHADER_GLSL: + case FILE_TYPE_SHADER_PRESET_GLSLP: + type = RARCH_SHADER_GLSL; + break; + case FILE_TYPE_SHADER_CG: + case FILE_TYPE_SHADER_PRESET_CGP: + type = RARCH_SHADER_CG; + break; + case FILE_TYPE_SHADER_SLANG: + case FILE_TYPE_SHADER_PRESET_SLANGP: + type = RARCH_SHADER_SLANG; + break; + default: + return false; + } + + snprintf(msg, sizeof(msg), "Shader: \"%s\"", arg); + runloop_msg_queue_push(msg, 1, 120, true); + VLOG(@"%s \"%s\".\n", + msg_hash_to_str(MSG_APPLYING_SHADER), + arg); + + return video_driver_set_shader(type, arg); +} + + +#ifdef HAVE_CHEEVOS +static bool command_read_ram(const char *arg) +{ + cheevos_var_t var; + const uint8_t * data; + unsigned nbytes; + unsigned i; + char reply[256]; + char *reply_at = NULL; + + strlcpy(reply, "READ_CORE_RAM ", sizeof(reply)); + reply_at = reply + strlen("READ_CORE_RAM "); + strlcpy(reply_at, arg, sizeof(reply)-strlen(reply)); + + cheevos_parse_guest_addr(&var, strtoul(reply_at, (char**)&reply_at, 16)); + data = cheevos_get_memory(&var); + + if (data) + { + unsigned nbytes = strtol(reply_at, NULL, 10); + + for (i=0;i" }, +#ifdef HAVE_CHEEVOS + { "READ_CORE_RAM", command_read_ram, "
" }, + { "WRITE_CORE_RAM", command_write_ram, "
..." }, +#endif +}; + +static const struct cmd_map map[] = { + { "FAST_FORWARD", RARCH_FAST_FORWARD_KEY }, + { "FAST_FORWARD_HOLD", RARCH_FAST_FORWARD_HOLD_KEY }, + { "LOAD_STATE", RARCH_LOAD_STATE_KEY }, + { "SAVE_STATE", RARCH_SAVE_STATE_KEY }, + { "FULLSCREEN_TOGGLE", RARCH_FULLSCREEN_TOGGLE_KEY }, + { "QUIT", RARCH_QUIT_KEY }, + { "STATE_SLOT_PLUS", RARCH_STATE_SLOT_PLUS }, + { "STATE_SLOT_MINUS", RARCH_STATE_SLOT_MINUS }, + { "REWIND", RARCH_REWIND }, + { "MOVIE_RECORD_TOGGLE", RARCH_MOVIE_RECORD_TOGGLE }, + { "PAUSE_TOGGLE", RARCH_PAUSE_TOGGLE }, + { "FRAMEADVANCE", RARCH_FRAMEADVANCE }, + { "RESET", RARCH_RESET }, + { "SHADER_NEXT", RARCH_SHADER_NEXT }, + { "SHADER_PREV", RARCH_SHADER_PREV }, + { "CHEAT_INDEX_PLUS", RARCH_CHEAT_INDEX_PLUS }, + { "CHEAT_INDEX_MINUS", RARCH_CHEAT_INDEX_MINUS }, + { "CHEAT_TOGGLE", RARCH_CHEAT_TOGGLE }, + { "SCREENSHOT", RARCH_SCREENSHOT }, + { "MUTE", RARCH_MUTE }, + { "OSK", RARCH_OSK }, + { "NETPLAY_FLIP", RARCH_NETPLAY_FLIP }, + { "SLOWMOTION", RARCH_SLOWMOTION }, + { "VOLUME_UP", RARCH_VOLUME_UP }, + { "VOLUME_DOWN", RARCH_VOLUME_DOWN }, + { "OVERLAY_NEXT", RARCH_OVERLAY_NEXT }, + { "DISK_EJECT_TOGGLE", RARCH_DISK_EJECT_TOGGLE }, + { "DISK_NEXT", RARCH_DISK_NEXT }, + { "DISK_PREV", RARCH_DISK_PREV }, + { "GRAB_MOUSE_TOGGLE", RARCH_GRAB_MOUSE_TOGGLE }, + { "MENU_TOGGLE", RARCH_MENU_TOGGLE }, + { "MENU_UP", RETRO_DEVICE_ID_JOYPAD_UP }, + { "MENU_DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN }, + { "MENU_LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT }, + { "MENU_RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT }, + { "MENU_A", RETRO_DEVICE_ID_JOYPAD_A }, + { "MENU_B", RETRO_DEVICE_ID_JOYPAD_B }, + { "MENU_B", RETRO_DEVICE_ID_JOYPAD_B }, +}; + +static bool command_get_arg(const char *tok, + const char **arg, unsigned *index) +{ + unsigned i; + + for (i = 0; i < ARRAY_SIZE(map); i++) + { + if (string_is_equal(tok, map[i].str)) + { + if (arg) + *arg = NULL; + + if (index) + *index = i; + + return true; + } + } + + for (i = 0; i < ARRAY_SIZE(action_map); i++) + { + const char *str = strstr(tok, action_map[i].str); + if (str == tok) + { + const char *argument = str + strlen(action_map[i].str); + if (*argument != ' ') + return false; + + if (arg) + *arg = argument + 1; + + if (index) + *index = i; + + return true; + } + } + + return false; +} + +static void command_parse_sub_msg(command_t *handle, const char *tok) +{ + const char *arg = NULL; + unsigned index = 0; + + if (command_get_arg(tok, &arg, &index)) + { + if (arg) + { + if (!action_map[index].action(arg)) + ELOG(@"Command \"%s\" failed.\n", arg); + } + else + handle->state[map[index].id] = true; + } + else + WLOG(@"%s \"%s\" %s.\n", + msg_hash_to_str(MSG_UNRECOGNIZED_COMMAND), + tok, + msg_hash_to_str(MSG_RECEIVED)); +} + +static void command_parse_msg(command_t *handle, char *buf, enum cmd_source_t source) +{ + char *save = NULL; + const char *tok = strtok_r(buf, "\n", &save); + + lastcmd_source = source; + + while (tok) + { + command_parse_sub_msg(handle, tok); + tok = strtok_r(NULL, "\n", &save); + } + lastcmd_source = cmd_none; +} + +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) +static bool command_network_init(command_t *handle, uint16_t port) +{ + int fd; + struct addrinfo *res = NULL; + + VLOG(@"%s %hu.\n", + msg_hash_to_str(MSG_VALUE_BRINGING_UP_COMMAND_INTERFACE_ON_PORT), + (unsigned short)port); + + fd = socket_init((void**)&res, port, NULL, SOCKET_TYPE_DATAGRAM); + + if (fd < 0) + goto error; + + handle->net_fd = fd; + + if (!socket_nonblock(handle->net_fd)) + goto error; + + if (!socket_bind(handle->net_fd, (void*)res)) + { + ELOG(@"Failed to bind socket.\n"); + goto error; + } + + freeaddrinfo_retro(res); + return true; + +error: + if (res) + freeaddrinfo_retro(res); + return false; +} + + + +static bool send_udp_packet(const char *host, + uint16_t port, const char *msg) +{ + char port_buf[16] = {0}; + struct addrinfo hints = {0}; + struct addrinfo *res = NULL; + const struct addrinfo *tmp = NULL; + int fd = -1; + bool ret = true; + + hints.ai_socktype = SOCK_DGRAM; + + snprintf(port_buf, sizeof(port_buf), "%hu", (unsigned short)port); + if (getaddrinfo_retro(host, port_buf, &hints, &res) < 0) + return false; + + /* Send to all possible targets. + * "localhost" might resolve to several different IPs. */ + tmp = (const struct addrinfo*)res; + while (tmp) + { + ssize_t len, ret_len; + + fd = socket(tmp->ai_family, tmp->ai_socktype, tmp->ai_protocol); + if (fd < 0) + { + ret = false; + goto end; + } + + len = strlen(msg); + ret_len = sendto(fd, msg, len, 0, tmp->ai_addr, tmp->ai_addrlen); + + if (ret_len < len) + { + ret = false; + goto end; + } + + socket_close(fd); + fd = -1; + tmp = tmp->ai_next; + } + +end: + freeaddrinfo_retro(res); + if (fd >= 0) + socket_close(fd); + return ret; +} + +static bool command_verify(const char *cmd) +{ + unsigned i; + + if (command_get_arg(cmd, NULL, NULL)) + return true; + + ELOG(@"Command \"%s\" is not recognized by the program.\n", cmd); + ELOG(@"\tValid commands:\n"); + for (i = 0; i < sizeof(map) / sizeof(map[0]); i++) + ELOG(@"\t\t%s\n", map[i].str); + + for (i = 0; i < sizeof(action_map) / sizeof(action_map[0]); i++) + ELOG(@"\t\t%s %s\n", action_map[i].str, action_map[i].arg_desc); + + return false; +} + +bool command_network_send(const char *cmd_) +{ + bool ret = false; + char *command = NULL; + char *save = NULL; + const char *cmd = NULL; + const char *host = NULL; + const char *port_ = NULL; + uint16_t port = DEFAULT_NETWORK_CMD_PORT; + + if (!network_init()) + return false; + + if (!(command = strdup(cmd_))) + return false; + + cmd = strtok_r(command, ";", &save); + if (cmd) + host = strtok_r(NULL, ";", &save); + if (host) + port_ = strtok_r(NULL, ";", &save); + + if (!host) + { +#ifdef _WIN32 + host = "127.0.0.1"; +#else + host = "localhost"; +#endif + } + + if (port_) + port = strtoul(port_, NULL, 0); + + if (cmd) + { + VLOG(@"%s: \"%s\" to %s:%hu\n", + msg_hash_to_str(MSG_SENDING_COMMAND), + cmd, host, (unsigned short)port); + + ret = command_verify(cmd) && send_udp_packet(host, port, cmd); + } + free(command); + + return ret; +} + + +static void command_network_poll(command_t *handle) +{ + fd_set fds; + struct timeval tmp_tv = {0}; + + if (handle->net_fd < 0) + return; + + FD_ZERO(&fds); + FD_SET(handle->net_fd, &fds); + + if (socket_select(handle->net_fd + 1, &fds, NULL, NULL, &tmp_tv) <= 0) + return; + + if (!FD_ISSET(handle->net_fd, &fds)) + return; + + for (;;) + { + ssize_t ret; + char buf[1024]; + + lastcmd_net_fd = handle->net_fd; + lastcmd_net_source_len = sizeof(lastcmd_net_source); + ret = recvfrom(handle->net_fd, buf, + sizeof(buf) - 1, 0, (struct sockaddr*)&lastcmd_net_source, &lastcmd_net_source_len); + + if (ret <= 0) + break; + + buf[ret] = '\0'; + + command_parse_msg(handle, buf, cmd_network); + } +} +#endif + +#ifdef HAVE_STDIN_CMD +static bool command_stdin_init(command_t *handle) +{ +#ifndef _WIN32 +#ifdef HAVE_NETPLAY + if (!socket_nonblock(STDIN_FILENO)) + return false; +#endif +#endif + + handle->stdin_enable = true; + return true; +} +#endif + +command_t *command_new(bool local_enable) +{ + command_t *handle = (command_t*)calloc(1, sizeof(*handle)); + if (!handle) + return NULL; + + handle->local_enable = local_enable; + + return handle; +} + +bool command_network_new( + command_t *handle, + bool stdin_enable, + bool network_enable, + uint16_t port) +{ + if (!handle) + return false; + +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) + handle->net_fd = -1; + if (network_enable && !command_network_init(handle, port)) + goto error; +#endif + +#ifdef HAVE_STDIN_CMD + handle->stdin_enable = stdin_enable; + if (stdin_enable && !command_stdin_init(handle)) + goto error; +#endif + + return true; + +#if (defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY)) || defined(HAVE_STDIN_CMD) +error: + command_free(handle); + return false; +#endif +} + +#ifdef HAVE_STDIN_CMD + +#ifdef _WIN32 +static size_t read_stdin(char *buf, size_t size) +{ + DWORD i; + DWORD has_read = 0; + DWORD avail = 0; + bool echo = false; + HANDLE hnd = GetStdHandle(STD_INPUT_HANDLE); + + if (hnd == INVALID_HANDLE_VALUE) + return 0; + + /* Check first if we're a pipe + * (not console). */ + + /* If not a pipe, check if we're running in a console. */ + if (!PeekNamedPipe(hnd, NULL, 0, NULL, &avail, NULL)) + { + INPUT_RECORD recs[256]; + bool has_key = false; + DWORD mode = 0, has_read = 0; + + if (!GetConsoleMode(hnd, &mode)) + return 0; + + if ((mode & (ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT)) + && !SetConsoleMode(hnd, + mode & ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT))) + return 0; + + /* Win32, Y U NO SANE NONBLOCK READ!? */ + if (!PeekConsoleInput(hnd, recs, + sizeof(recs) / sizeof(recs[0]), &has_read)) + return 0; + + for (i = 0; i < has_read; i++) + { + /* Very crude, but should get the job done. */ + if (recs[i].EventType == KEY_EVENT && + recs[i].Event.KeyEvent.bKeyDown && + (isgraph(recs[i].Event.KeyEvent.wVirtualKeyCode) || + recs[i].Event.KeyEvent.wVirtualKeyCode == VK_RETURN)) + { + has_key = true; + echo = true; + avail = size; + break; + } + } + + if (!has_key) + { + FlushConsoleInputBuffer(hnd); + return 0; + } + } + + if (!avail) + return 0; + + if (avail > size) + avail = size; + + if (!ReadFile(hnd, buf, avail, &has_read, NULL)) + return 0; + + for (i = 0; i < has_read; i++) + if (buf[i] == '\r') + buf[i] = '\n'; + + /* Console won't echo for us while in non-line mode, + * so do it manually ... */ + if (echo) + { + HANDLE hnd_out = GetStdHandle(STD_OUTPUT_HANDLE); + if (hnd_out != INVALID_HANDLE_VALUE) + { + DWORD has_written; + WriteConsole(hnd_out, buf, has_read, &has_written, NULL); + } + } + + return has_read; +} +#else + +static size_t read_stdin(char *buf, size_t size) +{ + size_t has_read = 0; + while (size) + { + ssize_t ret = read(STDIN_FILENO, buf, size); + + if (ret <= 0) + break; + + buf += ret; + has_read += ret; + size -= ret; + } + + return has_read; +} +#endif + +static void command_stdin_poll(command_t *handle) +{ + char *last_newline; + ssize_t ret; + ptrdiff_t msg_len; + + if (!handle->stdin_enable) + return; + + ret = read_stdin(handle->stdin_buf + handle->stdin_buf_ptr, + STDIN_BUF_SIZE - handle->stdin_buf_ptr - 1); + if (ret == 0) + return; + + handle->stdin_buf_ptr += ret; + handle->stdin_buf[handle->stdin_buf_ptr] = '\0'; + + last_newline = strrchr(handle->stdin_buf, '\n'); + + if (!last_newline) + { + /* We're receiving bogus data in pipe + * (no terminating newline), flush out the buffer. */ + if (handle->stdin_buf_ptr + 1 >= STDIN_BUF_SIZE) + { + handle->stdin_buf_ptr = 0; + handle->stdin_buf[0] = '\0'; + } + + return; + } + + *last_newline++ = '\0'; + msg_len = last_newline - handle->stdin_buf; + + command_parse_msg(handle, handle->stdin_buf, cmd_stdin); + + memmove(handle->stdin_buf, last_newline, + handle->stdin_buf_ptr - msg_len); + handle->stdin_buf_ptr -= msg_len; +} +#endif +#endif + +static void command_local_poll(command_t *handle) +{ + if (!handle->local_enable) + return; +} + +bool command_poll(command_t *handle) +{ + memset(handle->state, 0, sizeof(handle->state)); + +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) + command_network_poll(handle); +#endif + +#ifdef HAVE_STDIN_CMD + command_stdin_poll(handle); +#endif + + command_local_poll(handle); + + return true; +} + +bool command_get(command_handle_t *handle) +{ + if (!handle || !handle->handle) + return false; + return handle->id < RARCH_BIND_LIST_END + && handle->handle->state[handle->id]; +} + +bool command_set(command_handle_t *handle) +{ + if (!handle || !handle->handle) + return false; + if (handle->id < RARCH_BIND_LIST_END) + handle->handle->state[handle->id] = true; + return true; +} + +bool command_free(command_t *handle) +{ +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) + if (handle && handle->net_fd >= 0) + socket_close(handle->net_fd); +#endif + + free(handle); + + return true; +} + +/** + * command_event_disk_control_set_eject: + * @new_state : Eject or close the virtual drive tray. + * false (0) : Close + * true (1) : Eject + * @print_log : Show message onscreen. + * + * Ejects/closes of the virtual drive tray. + **/ +static void command_event_disk_control_set_eject(bool new_state, bool print_log) +{ + char msg[128] = {0}; + bool error = false; + rarch_system_info_t *info = NULL; + const struct retro_disk_control_callback *control = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info); + + if (info) + control = (const struct retro_disk_control_callback*)&info->disk_control_cb; + + if (!control || !control->get_num_images) + return; + + if (control->set_eject_state(new_state)) + snprintf(msg, sizeof(msg), "%s %s", + new_state ? + msg_hash_to_str(MSG_DISK_EJECTED) : + msg_hash_to_str(MSG_DISK_CLOSED), + msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY)); + else + { + error = true; + snprintf(msg, sizeof(msg), "%s %s %s", + msg_hash_to_str(MSG_FAILED_TO), + new_state ? "eject" : "close", + msg_hash_to_str(MSG_VIRTUAL_DISK_TRAY)); + } + + if (!string_is_empty(msg)) + { + if (error) + ELOG(@"%s\n", msg); + else + VLOG(@"%s\n", msg); + + /* Only noise in menu. */ + if (print_log) + runloop_msg_queue_push(msg, 1, 180, true); + } +} + +/** + * command_event_disk_control_set_index: + * @idx : Index of disk to set as current. + * + * Sets current disk to @index. + **/ +static void command_event_disk_control_set_index(unsigned idx) +{ + unsigned num_disks; + bool error = false; + char msg[128] = {0}; + rarch_system_info_t *info = NULL; + const struct retro_disk_control_callback *control = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info); + + if (info) + control = (const struct retro_disk_control_callback*)&info->disk_control_cb; + + if (!control || !control->get_num_images) + return; + + num_disks = control->get_num_images(); + + if (control->set_image_index(idx)) + { + if (idx < num_disks) + snprintf(msg, sizeof(msg), "Setting disk %u of %u in tray.", + idx + 1, num_disks); + else + strlcpy(msg, + msg_hash_to_str(MSG_REMOVED_DISK_FROM_TRAY), + sizeof(msg)); + } + else + { + if (idx < num_disks) + snprintf(msg, sizeof(msg), "Failed to set disk %u of %u.", + idx + 1, num_disks); + else + strlcpy(msg, + msg_hash_to_str(MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY), + sizeof(msg)); + error = true; + } + + if (!string_is_empty(msg)) + { + if (error) + ELOG(@"%s\n", msg); + else + VLOG(@"%s\n", msg); + runloop_msg_queue_push(msg, 1, 180, true); + } +} + +/** + * command_event_disk_control_append_image: + * @path : Path to disk image. + * + * Appends disk image to disk image list. + **/ +static bool command_event_disk_control_append_image(const char *path) +{ + unsigned new_idx; + char msg[128] = {0}; + struct retro_game_info info = {0}; + global_t *global = global_get_ptr(); + const struct retro_disk_control_callback *control = NULL; + rarch_system_info_t *sysinfo = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &sysinfo); + + if (sysinfo) + control = (const struct retro_disk_control_callback*) + &sysinfo->disk_control_cb; + + if (!control) + return false; + + command_event_disk_control_set_eject(true, false); + + control->add_image_index(); + new_idx = control->get_num_images(); + if (!new_idx) + return false; + new_idx--; + + info.path = path; + control->replace_image_index(new_idx, &info); + + snprintf(msg, sizeof(msg), "%s: ", msg_hash_to_str(MSG_APPENDED_DISK)); + strlcat(msg, path, sizeof(msg)); + VLOG(@"%s\n", msg); + runloop_msg_queue_push(msg, 0, 180, true); + + command_event(CMD_EVENT_AUTOSAVE_DEINIT, NULL); + + /* TODO: Need to figure out what to do with subsystems case. */ + if (string_is_empty(global->subsystem)) + { + /* Update paths for our new image. + * If we actually use append_image, we assume that we + * started out in a single disk case, and that this way + * of doing it makes the most sense. */ + retroarch_set_pathnames(path); + retroarch_fill_pathnames(); + } + + command_event(CMD_EVENT_AUTOSAVE_INIT, NULL); + command_event_disk_control_set_index(new_idx); + command_event_disk_control_set_eject(false, false); + + return true; +} + +/** + * command_event_check_disk_prev: + * @control : Handle to disk control handle. + * + * Perform disk cycle to previous index action (Core Disk Options). + **/ +static void command_event_check_disk_prev( + const struct retro_disk_control_callback *control) +{ + unsigned num_disks = 0; + unsigned current = 0; + bool disk_prev_enable = false; + + if (!control || !control->get_num_images) + return; + if (!control->get_image_index) + return; + + num_disks = control->get_num_images(); + current = control->get_image_index(); + disk_prev_enable = num_disks && num_disks != UINT_MAX; + + if (!disk_prev_enable) + { + ELOG(@"%s.\n", msg_hash_to_str(MSG_GOT_INVALID_DISK_INDEX)); + return; + } + + if (current > 0) + current--; + command_event_disk_control_set_index(current); +} + +/** + * command_event_check_disk_next: + * @control : Handle to disk control handle. + * + * Perform disk cycle to next index action (Core Disk Options). + **/ +static void command_event_check_disk_next( + const struct retro_disk_control_callback *control) +{ + unsigned num_disks = 0; + unsigned current = 0; + bool disk_next_enable = false; + + if (!control || !control->get_num_images) + return; + if (!control->get_image_index) + return; + + num_disks = control->get_num_images(); + current = control->get_image_index(); + disk_next_enable = num_disks && num_disks != UINT_MAX; + + if (!disk_next_enable) + { + ELOG(@"%s.\n", msg_hash_to_str(MSG_GOT_INVALID_DISK_INDEX)); + return; + } + + if (current < num_disks - 1) + current++; + command_event_disk_control_set_index(current); +} + +/** + * event_set_volume: + * @gain : amount of gain to be applied to current volume level. + * + * Adjusts the current audio volume level. + * + **/ +static void command_event_set_volume(float gain) +{ + char msg[128]; + settings_t *settings = config_get_ptr(); + + settings->audio.volume += gain; + settings->audio.volume = MAX(settings->audio.volume, -80.0f); + settings->audio.volume = MIN(settings->audio.volume, 12.0f); + + snprintf(msg, sizeof(msg), "Volume: %.1f dB", settings->audio.volume); + runloop_msg_queue_push(msg, 1, 180, true); + VLOG(@"%s\n", msg); + + audio_driver_set_volume_gain(db_to_gain(settings->audio.volume)); +} + +/** + * command_event_init_controllers: + * + * Initialize libretro controllers. + **/ +static void command_event_init_controllers(void) +{ + unsigned i; + settings_t *settings = config_get_ptr(); + rarch_system_info_t *info = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info); + + for (i = 0; i < MAX_USERS; i++) + { + retro_ctx_controller_info_t pad; + const char *ident = NULL; + bool set_controller = false; + const struct retro_controller_description *desc = NULL; + unsigned device = settings->input.libretro_device[i]; + + if (info) + { + if (i < info->ports.size) + desc = libretro_find_controller_description( + &info->ports.data[i], device); + } + + if (desc) + ident = desc->desc; + + if (!ident) + { + /* If we're trying to connect a completely unknown device, + * revert back to JOYPAD. */ + + if (device != RETRO_DEVICE_JOYPAD && device != RETRO_DEVICE_NONE) + { + /* Do not fix settings->input.libretro_device[i], + * because any use of dummy core will reset this, + * which is not a good idea. */ + WLOG(@"Input device ID %u is unknown to this " + "libretro implementation. Using RETRO_DEVICE_JOYPAD.\n", + device); + device = RETRO_DEVICE_JOYPAD; + } + ident = "Joypad"; + } + + switch (device) + { + case RETRO_DEVICE_NONE: + VLOG(@"%s %u.\n", + msg_hash_to_str(MSG_VALUE_DISCONNECTING_DEVICE_FROM_PORT), + i + 1); + set_controller = true; + break; + case RETRO_DEVICE_JOYPAD: + break; + default: + /* Some cores do not properly range check port argument. + * This is broken behavior of course, but avoid breaking + * cores needlessly. */ + VLOG(@"Connecting %s (ID: %u) to port %u.\n", ident, + device, i + 1); + set_controller = true; + break; + } + + if (set_controller) + { + pad.device = device; + pad.port = i; + core_set_controller_port_device(&pad); + } + } +} + +static void command_event_deinit_core(bool reinit) +{ +#ifdef HAVE_CHEEVOS + cheevos_unload(); +#endif + + core_unload_game(); + core_unload(); + core_uninit_symbols(); + + if (reinit) + { + int flags = DRIVERS_CMD_ALL; + driver_ctl(RARCH_DRIVER_CTL_UNINIT, &flags); + } + + command_event(CMD_EVENT_DISABLE_OVERRIDES, NULL); + command_event(CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET, NULL); +} + +static void command_event_init_cheats(void) +{ + bool allow_cheats = true; +#ifdef HAVE_NETPLAY + allow_cheats &= !netplay_driver_ctl( + RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL); +#endif + allow_cheats &= !bsv_movie_ctl(BSV_MOVIE_CTL_IS_INITED, NULL); + + if (!allow_cheats) + return; + + /* TODO/FIXME - add some stuff here. */ +} + +static bool event_load_save_files(void) +{ + unsigned i; + global_t *global = global_get_ptr(); + + if (!global) + return false; + if (!global->savefiles || global->sram.load_disable) + return false; + + for (i = 0; i < global->savefiles->size; i++) + content_load_ram_file(i); + + return true; +} + +static void command_event_load_auto_state(void) +{ + bool ret; + char msg[128] = {0}; + char savestate_name_auto[PATH_MAX_LENGTH] = {0}; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + +#ifdef HAVE_NETPLAY + if (global->netplay.enable && !global->netplay.is_spectate) + return; +#endif + +#ifdef HAVE_CHEEVOS + if (settings->cheevos.hardcore_mode_enable) + return; +#endif + + if (!settings->savestate_auto_load) + return; + + fill_pathname_noext(savestate_name_auto, global->name.savestate, + file_path_str(FILE_PATH_AUTO_EXTENSION), + sizeof(savestate_name_auto)); + + if (!path_file_exists(savestate_name_auto)) + return; + + ret = content_load_state(savestate_name_auto, false); + + VLOG(@"Found auto savestate in: %s\n", savestate_name_auto); + + snprintf(msg, sizeof(msg), "Auto-loading savestate from \"%s\" %s.", + savestate_name_auto, ret ? "succeeded" : "failed"); + runloop_msg_queue_push(msg, 1, 180, false); + VLOG(@"%s\n", msg); +} + +static void command_event_set_savestate_auto_index(void) +{ + size_t i; + char state_dir[PATH_MAX_LENGTH] = {0}; + char state_base[PATH_MAX_LENGTH] = {0}; + struct string_list *dir_list = NULL; + unsigned max_idx = 0; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + + if (!settings->savestate_auto_index) + return; + + /* Find the file in the same directory as global->savestate_name + * with the largest numeral suffix. + * + * E.g. /foo/path/content.state, will try to find + * /foo/path/content.state%d, where %d is the largest number available. + */ + + fill_pathname_basedir(state_dir, global->name.savestate, + sizeof(state_dir)); + fill_pathname_base(state_base, global->name.savestate, + sizeof(state_base)); + + if (!(dir_list = dir_list_new_special(state_dir, DIR_LIST_PLAIN, NULL))) + return; + + for (i = 0; i < dir_list->size; i++) + { + unsigned idx; + char elem_base[128] = {0}; + const char *end = NULL; + const char *dir_elem = dir_list->elems[i].data; + + fill_pathname_base(elem_base, dir_elem, sizeof(elem_base)); + + if (strstr(elem_base, state_base) != elem_base) + continue; + + end = dir_elem + strlen(dir_elem); + while ((end > dir_elem) && isdigit((int)end[-1])) + end--; + + idx = strtoul(end, NULL, 0); + if (idx > max_idx) + max_idx = idx; + } + + dir_list_free(dir_list); + + settings->state_slot = max_idx; + VLOG(@"Found last state slot: #%d\n", settings->state_slot); +} + +static bool event_init_content(void) +{ + rarch_ctl(RARCH_CTL_SET_SRAM_ENABLE, NULL); + + /* No content to be loaded for dummy core, + * just successfully exit. */ + if (rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) + return true; + + if (!content_does_not_need_content()) + retroarch_fill_pathnames(); + + if (!content_init()) + return false; + + if (content_does_not_need_content()) + return true; + + command_event_set_savestate_auto_index(); + + if (event_load_save_files()) + VLOG(@"%s.\n", + msg_hash_to_str(MSG_SKIPPING_SRAM_LOAD)); + + command_event_load_auto_state(); + command_event(CMD_EVENT_BSV_MOVIE_INIT, NULL); + command_event(CMD_EVENT_NETPLAY_INIT, NULL); + + return true; +} + +static bool command_event_init_core(enum rarch_core_type *data) +{ + retro_ctx_environ_info_t info; + settings_t *settings = config_get_ptr(); + + if (!core_init_symbols(data)) + return false; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_INIT, NULL); + + /* auto overrides: apply overrides */ + if(settings->auto_overrides_enable) + { + if (config_load_override()) + runloop_ctl(RUNLOOP_CTL_SET_OVERRIDES_ACTIVE, NULL); + else + runloop_ctl(RUNLOOP_CTL_UNSET_OVERRIDES_ACTIVE, NULL); + } + + /* Auto-remap: apply shader preset files */ + if(settings->auto_shaders_enable) + config_load_shader_preset(); + + + /* reset video format to libretro's default */ + video_driver_set_pixel_format(RETRO_PIXEL_FORMAT_0RGB1555); + + info.env = rarch_environment_cb; + core_set_environment(&info); + + /* Auto-remap: apply remap files */ + if(settings->auto_remaps_enable) + config_load_remap(); + + /* Per-core saves: reset redirection paths */ + rarch_ctl(RARCH_CTL_SET_PATHS_REDIRECT, NULL); + + if (!core_init()) + return false; + + if (!event_init_content()) + return false; + + if (!core_load()) + return false; + + return true; +} + +static void command_event_disable_overrides(void) +{ + /* auto overrides: reload the original config */ + if (runloop_ctl(RUNLOOP_CTL_IS_OVERRIDES_ACTIVE, NULL)) + { + config_unload_override(); + runloop_ctl(RUNLOOP_CTL_UNSET_OVERRIDES_ACTIVE, NULL); + } +} + +static void command_event_restore_default_shader_preset(void) +{ + /* auto shader preset: reload the original shader */ + + char *preset = NULL; + settings_t *settings = config_get_ptr(); + if (runloop_ctl(RUNLOOP_CTL_GET_DEFAULT_SHADER_PRESET, &preset) && + !string_is_empty(preset)) + { + VLOG(@"Shaders: restoring default shader preset to %s\n", + preset); + strlcpy(settings->path.shader, preset, sizeof(settings->path.shader)); + } + runloop_ctl(RUNLOOP_CTL_CLEAR_DEFAULT_SHADER_PRESET, NULL); +} + +static bool command_event_save_auto_state(void) +{ + bool ret; + char savestate_name_auto[PATH_MAX_LENGTH] = {0}; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + + if (!settings || !settings->savestate_auto_save) + return false; + if (!global) + return false; + if (rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) + return false; + if (content_does_not_need_content()) + return false; + +#ifdef HAVE_CHEEVOS + if (settings->cheevos.hardcore_mode_enable) + return false; +#endif + + fill_pathname_noext(savestate_name_auto, global->name.savestate, + file_path_str(FILE_PATH_AUTO_EXTENSION), + sizeof(savestate_name_auto)); + + ret = content_save_state((const char*)savestate_name_auto, true); + VLOG(@"Auto save state to \"%s\" %s.\n", savestate_name_auto, ret ? + "succeeded" : "failed"); + + return true; +} + +/** + * command_event_save_core_config: + * + * Saves a new (core) configuration to a file. Filename is based + * on heuristics to avoid typing. + * + * Returns: true (1) on success, otherwise false (0). + **/ +static bool command_event_save_core_config(void) +{ + char config_dir[PATH_MAX_LENGTH] = {0}; + char config_name[PATH_MAX_LENGTH] = {0}; + char config_path[PATH_MAX_LENGTH] = {0}; + char msg[128] = {0}; + bool ret = false; + bool found_path = false; + bool overrides_active = false; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + + *config_dir = '\0'; + if (!string_is_empty(settings->directory.menu_config)) + strlcpy(config_dir, settings->directory.menu_config, + sizeof(config_dir)); + else if (!string_is_empty(global->path.config)) /* Fallback */ + fill_pathname_basedir(config_dir, global->path.config, + sizeof(config_dir)); + else + { + runloop_msg_queue_push(msg_hash_to_str(MSG_CONFIG_DIRECTORY_NOT_SET), 1, 180, true); + ELOG(@"%s\n", msg_hash_to_str(MSG_CONFIG_DIRECTORY_NOT_SET)); + return false; + } + + /* Infer file name based on libretro core. */ + if (!string_is_empty(config_get_active_core_path()) + && path_file_exists(config_get_active_core_path())) + { + unsigned i; + VLOG(@"%s\n", msg_hash_to_str(MSG_USING_CORE_NAME_FOR_NEW_CONFIG)); + + /* In case of collision, find an alternative name. */ + for (i = 0; i < 16; i++) + { + char tmp[64] = {0}; + + fill_pathname_base_noext( + config_name, + config_get_active_core_path(), + sizeof(config_name)); + + fill_pathname_join(config_path, config_dir, config_name, + sizeof(config_path)); + + if (i) + snprintf(tmp, sizeof(tmp), "-%u%s", + i, + file_path_str(FILE_PATH_CONFIG_EXTENSION)); + else + strlcpy(tmp, + file_path_str(FILE_PATH_CONFIG_EXTENSION), + sizeof(tmp)); + + strlcat(config_path, tmp, sizeof(config_path)); + if (!path_file_exists(config_path)) + { + found_path = true; + break; + } + } + } + + if (!found_path) + { + /* Fallback to system time... */ + WLOG(@"%s\n", + msg_hash_to_str(MSG_CANNOT_INFER_NEW_CONFIG_PATH)); + fill_dated_filename(config_name, + file_path_str(FILE_PATH_CONFIG_EXTENSION), + sizeof(config_name)); + fill_pathname_join(config_path, config_dir, config_name, + sizeof(config_path)); + } + + if (runloop_ctl(RUNLOOP_CTL_IS_OVERRIDES_ACTIVE, NULL)) + { + /* Overrides block config file saving, + * make it appear as overrides weren't enabled + * for a manual save. */ + runloop_ctl(RUNLOOP_CTL_UNSET_OVERRIDES_ACTIVE, NULL); + overrides_active = true; + } + + if ((ret = config_save_file(config_path))) + { + strlcpy(global->path.config, config_path, + sizeof(global->path.config)); + snprintf(msg, sizeof(msg), "%s \"%s\".", + msg_hash_to_str(MSG_SAVED_NEW_CONFIG_TO), + config_path); + VLOG(@"%s\n", msg); + } + else + { + snprintf(msg, sizeof(msg), + "%s \"%s\".", + msg_hash_to_str(MSG_FAILED_SAVING_CONFIG_TO), + config_path); + ELOG(@"%s\n", msg); + } + + runloop_msg_queue_push(msg, 1, 180, true); + + if (overrides_active) + runloop_ctl(RUNLOOP_CTL_SET_OVERRIDES_ACTIVE, NULL); + else + runloop_ctl(RUNLOOP_CTL_UNSET_OVERRIDES_ACTIVE, NULL); + return ret; +} + +/** + * event_save_current_config: + * + * Saves current configuration file to disk, and (optionally) + * autosave state. + **/ +void command_event_save_current_config(void) +{ + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + + if (settings->config_save_on_exit && !string_is_empty(global->path.config)) + { + bool ret = false; + char msg[128] = {0}; + const char *config_path = config_get_active_path(); + + /* Save last core-specific config to the default config location, + * needed on consoles for core switching and reusing last good + * config for new cores. + */ + + /* Flush out the core specific config. */ + if (config_path) + ret = config_save_file(config_path); + + if (ret) + { + snprintf(msg, sizeof(msg), "%s \"%s\".", + msg_hash_to_str(MSG_SAVED_NEW_CONFIG_TO), + global->path.config); + VLOG(@"%s\n", msg); + } + else + { + snprintf(msg, sizeof(msg), "%s \"%s\".", + msg_hash_to_str(MSG_FAILED_SAVING_CONFIG_TO), + global->path.config); + ELOG(@"%s\n", msg); + } + + runloop_msg_queue_push(msg, 1, 180, true); + } +} + +/** + * event_save_state + * @path : Path to state. + * @s : Message. + * @len : Size of @s. + * + * Saves a state with path being @path. + **/ +static void command_event_save_state(const char *path, + char *s, size_t len) +{ + settings_t *settings = config_get_ptr(); + + if (!content_save_state(path, true)) + { + snprintf(s, len, "%s \"%s\".", + msg_hash_to_str(MSG_FAILED_TO_SAVE_STATE_TO), + path); + return; + } + + if (settings->state_slot < 0) + snprintf(s, len, "%s #-1 (auto).", + msg_hash_to_str(MSG_SAVED_STATE_TO_SLOT)); + else + snprintf(s, len, "%s #%d.", msg_hash_to_str(MSG_SAVED_STATE_TO_SLOT), + settings->state_slot); +} + +static void command_event_undo_save_state(char *s, size_t len) +{ + if (content_undo_save_buf_is_empty()) + { + strlcpy(s, + msg_hash_to_str(MSG_NO_SAVE_STATE_HAS_BEEN_OVERWRITTEN_YET), len); + return; + } + + if (!content_undo_save_state()) + { + snprintf(s, len, "%s \"%s\".", + msg_hash_to_str(MSG_FAILED_TO_UNDO_SAVE_STATE), + "RAM"); + return; + } + + strlcpy(s, msg_hash_to_str(MSG_RESTORED_OLD_SAVE_STATE), len); +} + +/** + * event_load_state + * @path : Path to state. + * @s : Message. + * @len : Size of @s. + * + * Loads a state with path being @path. + **/ +static void command_event_load_state(const char *path, char *s, size_t len) +{ + settings_t *settings = config_get_ptr(); + + if (!content_load_state(path, false)) + { + snprintf(s, len, "%s \"%s\".", + msg_hash_to_str(MSG_FAILED_TO_LOAD_STATE), + path); + return; + } + + if (settings->state_slot < 0) + snprintf(s, len, "%s #-1 (auto).", + msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT)); + else + snprintf(s, len, "%s #%d.", msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT), + settings->state_slot); +} + +static void command_event_undo_load_state(char *s, size_t len) +{ + + if (content_undo_load_buf_is_empty()) + { + strlcpy(s, + msg_hash_to_str(MSG_NO_STATE_HAS_BEEN_LOADED_YET), + len); + return; + } + + if (!content_undo_load_state()) + { + snprintf(s, len, "%s \"%s\".", + msg_hash_to_str(MSG_FAILED_TO_UNDO_LOAD_STATE), + "RAM"); + return; + } + + strlcpy(s, + msg_hash_to_str(MSG_UNDID_LOAD_STATE), len); +} + +static void command_event_main_state(unsigned cmd) +{ + retro_ctx_size_info_t info; + char path[PATH_MAX_LENGTH] = {0}; + char msg[128] = {0}; + global_t *global = global_get_ptr(); + settings_t *settings = config_get_ptr(); + + if (settings->state_slot > 0) + snprintf(path, sizeof(path), "%s%d", + global->name.savestate, settings->state_slot); + else if (settings->state_slot < 0) + fill_pathname_join_delim(path, + global->name.savestate, "auto", '.', sizeof(path)); + else + strlcpy(path, global->name.savestate, sizeof(path)); + + core_serialize_size(&info); + + if (info.size) + { + switch (cmd) + { + case CMD_EVENT_SAVE_STATE: + command_event_save_state(path, msg, sizeof(msg)); + break; + case CMD_EVENT_LOAD_STATE: + command_event_load_state(path, msg, sizeof(msg)); + break; + case CMD_EVENT_UNDO_LOAD_STATE: + command_event_undo_load_state(msg, sizeof(msg)); + break; + case CMD_EVENT_UNDO_SAVE_STATE: + command_event_undo_save_state(msg, sizeof(msg)); + break; + } + } + else + strlcpy(msg, msg_hash_to_str( + MSG_CORE_DOES_NOT_SUPPORT_SAVESTATES), sizeof(msg)); + + runloop_msg_queue_push(msg, 2, 180, true); + VLOG(@"%s\n", msg); +} + +/** + * command_event: + * @cmd : Event command index. + * + * Performs program event command with index @cmd. + * + * Returns: true (1) on success, otherwise false (0). + **/ +bool command_event(enum event_command cmd, void *data) +{ + content_ctx_info_t content_info = {0}; + unsigned i = 0; + bool boolean = false; + settings_t *settings = config_get_ptr(); + rarch_system_info_t *info = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info); + + (void)i; + + switch (cmd) + { + case CMD_EVENT_MENU_REFRESH: +#ifdef HAVE_MENU + menu_driver_ctl(RARCH_MENU_CTL_REFRESH, NULL); +#endif + break; + case CMD_EVENT_SET_PER_GAME_RESOLUTION: +#if defined(GEKKO) + { + unsigned width = 0, height = 0; + + command_event(CMD_EVENT_VIDEO_SET_ASPECT_RATIO, NULL); + + if (video_driver_get_video_output_size(&width, &height)) + { + char msg[128] = {0}; + + video_driver_set_video_mode(width, height, true); + + if (width == 0 || height == 0) + strlcpy(msg, "Resolution: DEFAULT", sizeof(msg)); + else + snprintf(msg, sizeof(msg),"Resolution: %dx%d",width, height); + runloop_msg_queue_push(msg, 1, 100, true); + } + } +#endif + break; + case CMD_EVENT_LOAD_CORE_DEINIT: +#ifdef HAVE_MENU + menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_DEINIT, NULL); +#endif + break; + case CMD_EVENT_LOAD_CORE_PERSIST: + command_event(CMD_EVENT_LOAD_CORE_DEINIT, NULL); + { +#ifdef HAVE_MENU + bool *ptr = NULL; + struct retro_system_info *system = NULL; + + menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET, &system); + + if (menu_driver_ctl(RARCH_MENU_CTL_LOAD_NO_CONTENT_GET, &ptr)) + { + core_info_ctx_find_t info_find; + +#if defined(HAVE_DYNAMIC) + if (string_is_empty(config_get_active_core_path())) + return false; + + libretro_get_system_info( + config_get_active_core_path(), + system, + ptr); +#else + libretro_get_system_info_static(system, ptr); +#endif + info_find.path = config_get_active_core_path(); + + if (!core_info_load(&info_find)) + return false; + } +#endif + } + break; + case CMD_EVENT_LOAD_CORE: + command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL); +#ifndef HAVE_DYNAMIC + command_event(CMD_EVENT_QUIT, NULL); +#endif + break; + case CMD_EVENT_LOAD_STATE: + /* Immutable - disallow savestate load when + * we absolutely cannot change game state. */ + if (bsv_movie_ctl(BSV_MOVIE_CTL_IS_INITED, NULL)) + return false; + +#ifdef HAVE_NETPLAY + if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL)) + return false; +#endif + +#ifdef HAVE_CHEEVOS + if (settings->cheevos.hardcore_mode_enable) + return false; +#endif + + command_event_main_state(cmd); + break; + case CMD_EVENT_UNDO_LOAD_STATE: + command_event_main_state(cmd); + break; + case CMD_EVENT_UNDO_SAVE_STATE: + command_event_main_state(cmd); + break; + case CMD_EVENT_RESIZE_WINDOWED_SCALE: + { + unsigned idx = 0; + unsigned *window_scale = NULL; + + if (runloop_ctl(RUNLOOP_CTL_GET_WINDOWED_SCALE, &window_scale)) + { + if (!window_scale || *window_scale == 0) + return false; + + settings->video.scale = *window_scale; + } + + if (!settings->video.fullscreen) + command_event(CMD_EVENT_REINIT, NULL); + + runloop_ctl(RUNLOOP_CTL_SET_WINDOWED_SCALE, &idx); + } + break; + case CMD_EVENT_MENU_TOGGLE: +#ifdef HAVE_MENU + if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL)) + rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL); + else + rarch_ctl(RARCH_CTL_MENU_RUNNING, NULL); +#endif + break; + case CMD_EVENT_CONTROLLERS_INIT: + command_event_init_controllers(); + break; + case CMD_EVENT_RESET: + VLOG(@"%s.\n", msg_hash_to_str(MSG_RESET)); + runloop_msg_queue_push(msg_hash_to_str(MSG_RESET), 1, 120, true); + +#ifdef HAVE_CHEEVOS + cheevos_set_cheats(); +#endif + core_reset(); + break; + case CMD_EVENT_SAVE_STATE: +#ifdef HAVE_CHEEVOS + if (settings->cheevos.hardcore_mode_enable) + return false; +#endif + + if (settings->savestate_auto_index) + settings->state_slot++; + + command_event_main_state(cmd); + break; + case CMD_EVENT_SAVE_STATE_DECREMENT: + /* Slot -1 is (auto) slot. */ + if (settings->state_slot >= 0) + settings->state_slot--; + break; + case CMD_EVENT_SAVE_STATE_INCREMENT: + settings->state_slot++; + break; + case CMD_EVENT_TAKE_SCREENSHOT: + if (!take_screenshot()) + return false; + break; + case CMD_EVENT_UNLOAD_CORE: + case CMD_EVENT_QUIT: + command_event(CMD_EVENT_AUTOSAVE_STATE, NULL); + command_event(CMD_EVENT_DISABLE_OVERRIDES, NULL); + command_event(CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET, NULL); + + switch (cmd) + { + case CMD_EVENT_UNLOAD_CORE: + if (content_is_inited()) + if (!task_push_content_load_default( + NULL, NULL, + &content_info, + CORE_TYPE_DUMMY, + CONTENT_MODE_LOAD_NOTHING_WITH_DUMMY_CORE, + NULL, NULL)) + return false; +#ifndef HAVE_DYNAMIC + core_unload_game(); + core_unload(); +#endif + break; + default: + break; + } + +#ifdef HAVE_DYNAMIC + command_event(CMD_EVENT_LOAD_CORE_DEINIT, NULL); +#endif + + switch (cmd) + { + case CMD_EVENT_QUIT: + runloop_ctl(RUNLOOP_CTL_SET_SHUTDOWN, NULL); +#ifdef HAVE_MENU + rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL); +#endif + break; + default: + break; + } + break; + case CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE: +#ifdef HAVE_CHEEVOS + cheevos_toggle_hardcore_mode(); +#endif + break; + case CMD_EVENT_REINIT: + { + struct retro_hw_render_callback *hwr = + video_driver_get_hw_context(); + + if (hwr->cache_context) + video_driver_set_video_cache_context(); + else + video_driver_unset_video_cache_context(); + + video_driver_unset_video_cache_context_ack(); + command_event(CMD_EVENT_RESET_CONTEXT, NULL); + video_driver_unset_video_cache_context(); + + /* Poll input to avoid possibly stale data to corrupt things. */ + input_driver_poll(); + +#ifdef HAVE_MENU + menu_display_set_framebuffer_dirty_flag(); + if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL)) + command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL); +#endif + } + break; + case CMD_EVENT_CHEATS_DEINIT: + cheat_manager_state_free(); + break; + case CMD_EVENT_CHEATS_INIT: + command_event(CMD_EVENT_CHEATS_DEINIT, NULL); + command_event_init_cheats(); + break; + case CMD_EVENT_CHEATS_APPLY: + cheat_manager_apply_cheats(); + break; + case CMD_EVENT_REWIND_DEINIT: +#ifdef HAVE_NETPLAY + if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL)) + return false; +#endif +#ifdef HAVE_CHEEVOS + if (settings->cheevos.hardcore_mode_enable) + return false; +#endif + + state_manager_event_deinit(); + break; + case CMD_EVENT_REWIND_INIT: +#ifdef HAVE_CHEEVOS + if (settings->cheevos.hardcore_mode_enable) + return false; +#endif +#ifdef HAVE_NETPLAY + if (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL)) +#endif + state_manager_event_init(); + break; + case CMD_EVENT_REWIND_TOGGLE: + if (settings->rewind_enable) + command_event(CMD_EVENT_REWIND_INIT, NULL); + else + command_event(CMD_EVENT_REWIND_DEINIT, NULL); + break; + case CMD_EVENT_AUTOSAVE_DEINIT: +#ifdef HAVE_THREADS + { + global_t *global = global_get_ptr(); + if (!global->sram.use) + return false; + autosave_deinit(); + } +#endif + break; + case CMD_EVENT_AUTOSAVE_INIT: + command_event(CMD_EVENT_AUTOSAVE_DEINIT, NULL); +#ifdef HAVE_THREADS + autosave_init(); +#endif + break; + case CMD_EVENT_AUTOSAVE_STATE: + command_event_save_auto_state(); + break; + case CMD_EVENT_AUDIO_STOP: + if (!audio_driver_alive()) + return false; + + if (!audio_driver_stop()) + return false; + break; + case CMD_EVENT_AUDIO_START: + if (audio_driver_alive()) + return false; + + if (!settings->audio.mute_enable && !audio_driver_start()) + { + ELOG(@"Failed to start audio driver. " + "Will continue without audio.\n"); + audio_driver_unset_active(); + } + break; + case CMD_EVENT_AUDIO_MUTE_TOGGLE: + { + const char *msg = !settings->audio.mute_enable ? + msg_hash_to_str(MSG_AUDIO_MUTED): + msg_hash_to_str(MSG_AUDIO_UNMUTED); + + if (!audio_driver_toggle_mute()) + { + ELOG(@"%s.\n", + msg_hash_to_str(MSG_FAILED_TO_UNMUTE_AUDIO)); + return false; + } + + runloop_msg_queue_push(msg, 1, 180, true); + VLOG(@"%s\n", msg); + } + break; + case CMD_EVENT_OVERLAY_DEINIT: +#ifdef HAVE_OVERLAY + input_overlay_free(); +#endif + break; + case CMD_EVENT_OVERLAY_INIT: + command_event(CMD_EVENT_OVERLAY_DEINIT, NULL); +#ifdef HAVE_OVERLAY + if (settings->input.overlay_enable) + task_push_overlay_load_default(input_overlay_loaded, NULL); +#endif + break; + case CMD_EVENT_OVERLAY_NEXT: +#ifdef HAVE_OVERLAY + input_overlay_next(settings->input.overlay_opacity); +#endif + break; + case CMD_EVENT_DSP_FILTER_DEINIT: + audio_driver_dsp_filter_free(); + break; + case CMD_EVENT_DSP_FILTER_INIT: + command_event(CMD_EVENT_DSP_FILTER_DEINIT, NULL); + if (!*settings->path.audio_dsp_plugin) + break; + audio_driver_dsp_filter_init(settings->path.audio_dsp_plugin); + break; + case CMD_EVENT_GPU_RECORD_DEINIT: + video_driver_gpu_record_deinit(); + break; + case CMD_EVENT_RECORD_DEINIT: + if (!recording_deinit()) + return false; + break; + case CMD_EVENT_RECORD_INIT: + command_event(CMD_EVENT_HISTORY_DEINIT, NULL); + if (!recording_init()) + return false; + break; + case CMD_EVENT_HISTORY_DEINIT: + if (g_defaults.content_history) + { + playlist_write_file(g_defaults.content_history); + playlist_free(g_defaults.content_history); + } + g_defaults.content_history = NULL; + +#ifdef HAVE_FFMPEG + if (g_defaults.video_history) + { + playlist_write_file(g_defaults.video_history); + playlist_free(g_defaults.video_history); + } + g_defaults.video_history = NULL; + + if (g_defaults.music_history) + { + playlist_write_file(g_defaults.music_history); + playlist_free(g_defaults.music_history); + } + g_defaults.music_history = NULL; +#endif + +#ifdef HAVE_IMAGEVIEWER + if (g_defaults.image_history) + { + playlist_write_file(g_defaults.image_history); + playlist_free(g_defaults.image_history); + } + g_defaults.image_history = NULL; +#endif + break; + case CMD_EVENT_HISTORY_INIT: + command_event(CMD_EVENT_HISTORY_DEINIT, NULL); + if (!settings->history_list_enable) + return false; + + VLOG(@"%s: [%s].\n", + msg_hash_to_str(MSG_LOADING_HISTORY_FILE), + settings->path.content_history); + g_defaults.content_history = playlist_init( + settings->path.content_history, + settings->content_history_size); + +#ifdef HAVE_FFMPEG + VLOG(@"%s: [%s].\n", + msg_hash_to_str(MSG_LOADING_HISTORY_FILE), + settings->path.content_music_history); + g_defaults.music_history = playlist_init( + settings->path.content_music_history, + settings->content_history_size); + + VLOG(@"%s: [%s].\n", + msg_hash_to_str(MSG_LOADING_HISTORY_FILE), + settings->path.content_video_history); + g_defaults.video_history = playlist_init( + settings->path.content_video_history, + settings->content_history_size); +#endif + +#ifdef HAVE_IMAGEVIEWER + VLOG(@"%s: [%s].\n", + msg_hash_to_str(MSG_LOADING_HISTORY_FILE), + settings->path.content_image_history); + g_defaults.image_history = playlist_init( + settings->path.content_image_history, + settings->content_history_size); +#endif + break; + case CMD_EVENT_CORE_INFO_DEINIT: + core_info_deinit_list(); + break; + case CMD_EVENT_CORE_INFO_INIT: + command_event(CMD_EVENT_CORE_INFO_DEINIT, NULL); + + if (!string_is_empty(settings->directory.libretro)) + core_info_init_list(); + break; + case CMD_EVENT_CORE_DEINIT: + { + struct retro_hw_render_callback *hwr = NULL; + content_reset_savestate_backups(); + hwr = video_driver_get_hw_context(); + command_event_deinit_core(true); + + if (hwr) + memset(hwr, 0, sizeof(*hwr)); + + break; + } + case CMD_EVENT_CORE_INIT: + content_reset_savestate_backups(); + if (!command_event_init_core((enum rarch_core_type*)data)) + return false; + break; + case CMD_EVENT_VIDEO_APPLY_STATE_CHANGES: + video_driver_apply_state_changes(); + break; + case CMD_EVENT_VIDEO_SET_NONBLOCKING_STATE: + boolean = true; /* fall-through */ + case CMD_EVENT_VIDEO_SET_BLOCKING_STATE: + video_driver_set_nonblock_state(boolean); + break; + case CMD_EVENT_VIDEO_SET_ASPECT_RATIO: + video_driver_set_aspect_ratio(); + break; + case CMD_EVENT_AUDIO_SET_NONBLOCKING_STATE: + boolean = true; /* fall-through */ + case CMD_EVENT_AUDIO_SET_BLOCKING_STATE: + audio_driver_set_nonblocking_state(boolean); + break; + case CMD_EVENT_OVERLAY_SET_SCALE_FACTOR: +#ifdef HAVE_OVERLAY + input_overlay_set_scale_factor(NULL, settings->input.overlay_scale); +#endif + break; + case CMD_EVENT_OVERLAY_SET_ALPHA_MOD: +#ifdef HAVE_OVERLAY + input_overlay_set_alpha_mod(settings->input.overlay_opacity); +#endif + break; + case CMD_EVENT_AUDIO_REINIT: + { + int flags = DRIVER_AUDIO; + driver_ctl(RARCH_DRIVER_CTL_UNINIT, &flags); + driver_ctl(RARCH_DRIVER_CTL_INIT, &flags); + } + break; + case CMD_EVENT_RESET_CONTEXT: + { + /* RARCH_DRIVER_CTL_UNINIT clears the callback struct so we + * need to make sure to keep a copy */ + struct retro_hw_render_callback *hwr = NULL; + const struct retro_hw_render_context_negotiation_interface *iface = NULL; + struct retro_hw_render_callback hwr_copy; + int flags = DRIVERS_CMD_ALL; + + hwr = video_driver_get_hw_context(); + iface = video_driver_get_context_negotiation_interface(); + memcpy(&hwr_copy, hwr, sizeof(hwr_copy)); + + driver_ctl(RARCH_DRIVER_CTL_UNINIT, &flags); + + memcpy(hwr, &hwr_copy, sizeof(*hwr)); + video_driver_set_context_negotiation_interface(iface); + + driver_ctl(RARCH_DRIVER_CTL_INIT, &flags); + } + break; + case CMD_EVENT_SHUTDOWN: +#if defined(__linux__) && !defined(ANDROID) + runloop_msg_queue_push("Shutting down...", 1, 180, true); + command_event(CMD_EVENT_QUIT, NULL); + system("shutdown -P now"); +#endif + break; + case CMD_EVENT_REBOOT: +#if defined(__linux__) && !defined(ANDROID) + runloop_msg_queue_push("Rebooting...", 1, 180, true); + command_event(CMD_EVENT_QUIT, NULL); + system("shutdown -r now"); +#endif + break; + case CMD_EVENT_RESUME: + rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL); + if (ui_companion_is_on_foreground()) + ui_companion_driver_toggle(); + break; + case CMD_EVENT_RESTART_RETROARCH: + if (!frontend_driver_set_fork(FRONTEND_FORK_RESTART)) + return false; + break; + case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG: + command_event_save_current_config(); + break; + case CMD_EVENT_MENU_SAVE_CONFIG: + if (!command_event_save_core_config()) + return false; + break; + case CMD_EVENT_SHADERS_APPLY_CHANGES: +#ifdef HAVE_MENU + menu_shader_manager_apply_changes(); +#endif + break; + case CMD_EVENT_PAUSE_CHECKS: + if (runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL)) + { + VLOG(@"%s\n", msg_hash_to_str(MSG_PAUSED)); + command_event(CMD_EVENT_AUDIO_STOP, NULL); + + if (settings->video.black_frame_insertion) + video_driver_cached_frame_render(); + } + else + { + VLOG(@"%s\n", msg_hash_to_str(MSG_UNPAUSED)); + command_event(CMD_EVENT_AUDIO_START, NULL); + } + break; + case CMD_EVENT_PAUSE_TOGGLE: + boolean = runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL); + boolean = !boolean; + runloop_ctl(RUNLOOP_CTL_SET_PAUSED, &boolean); + command_event(CMD_EVENT_PAUSE_CHECKS, NULL); + break; + case CMD_EVENT_UNPAUSE: + boolean = false; + + runloop_ctl(RUNLOOP_CTL_SET_PAUSED, &boolean); + command_event(CMD_EVENT_PAUSE_CHECKS, NULL); + break; + case CMD_EVENT_PAUSE: + boolean = true; + + runloop_ctl(RUNLOOP_CTL_SET_PAUSED, &boolean); + command_event(CMD_EVENT_PAUSE_CHECKS, NULL); + break; + case CMD_EVENT_MENU_PAUSE_LIBRETRO: +#ifdef HAVE_MENU + if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL)) + { + if (settings->menu.pause_libretro) + command_event(CMD_EVENT_AUDIO_STOP, NULL); + else + command_event(CMD_EVENT_AUDIO_START, NULL); + } + else + { + if (settings->menu.pause_libretro) + command_event(CMD_EVENT_AUDIO_START, NULL); + } +#endif + break; + case CMD_EVENT_SHADER_DIR_DEINIT: + runloop_ctl(RUNLOOP_CTL_SHADER_DIR_DEINIT, NULL); + break; + case CMD_EVENT_SHADER_DIR_INIT: + command_event(CMD_EVENT_SHADER_DIR_DEINIT, NULL); + + if (!runloop_ctl(RUNLOOP_CTL_SHADER_DIR_INIT, NULL)) + return false; + break; + case CMD_EVENT_SAVEFILES: + { + global_t *global = global_get_ptr(); + if (!global->savefiles || !global->sram.use) + return false; + + for (i = 0; i < global->savefiles->size; i++) + content_save_ram_file(i); + } + return true; + case CMD_EVENT_SAVEFILES_DEINIT: + { + global_t *global = global_get_ptr(); + if (!global) + break; + + if (global->savefiles) + string_list_free(global->savefiles); + global->savefiles = NULL; + } + break; + case CMD_EVENT_SAVEFILES_INIT: + { + global_t *global = global_get_ptr(); + global->sram.use = global->sram.use && !global->sram.save_disable; +#ifdef HAVE_NETPLAY + global->sram.use = global->sram.use && + (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL) + || !global->netplay.is_client); +#endif + + if (!global->sram.use) + VLOG(@"%s\n", + msg_hash_to_str(MSG_SRAM_WILL_NOT_BE_SAVED)); + + if (global->sram.use) + command_event(CMD_EVENT_AUTOSAVE_INIT, NULL); + } + break; + case CMD_EVENT_BSV_MOVIE_DEINIT: + bsv_movie_ctl(BSV_MOVIE_CTL_DEINIT, NULL); + break; + case CMD_EVENT_BSV_MOVIE_INIT: + command_event(CMD_EVENT_BSV_MOVIE_DEINIT, NULL); + bsv_movie_ctl(BSV_MOVIE_CTL_INIT, NULL); + break; + case CMD_EVENT_NETPLAY_DEINIT: +#ifdef HAVE_NETPLAY + deinit_netplay(); +#endif + break; + case CMD_EVENT_NETWORK_DEINIT: +#ifdef HAVE_NETWORKING + network_deinit(); +#endif + break; + case CMD_EVENT_NETWORK_INIT: +#ifdef HAVE_NETWORKING + network_init(); +#endif + break; + case CMD_EVENT_NETPLAY_INIT: + command_event(CMD_EVENT_NETPLAY_DEINIT, NULL); +#ifdef HAVE_NETPLAY + if (!init_netplay()) + return false; +#endif + break; + case CMD_EVENT_NETPLAY_FLIP_PLAYERS: +#ifdef HAVE_NETPLAY + netplay_driver_ctl(RARCH_NETPLAY_CTL_FLIP_PLAYERS, NULL); +#endif + break; + case CMD_EVENT_FULLSCREEN_TOGGLE: + if (!video_driver_has_windowed()) + return false; + + /* If we go fullscreen we drop all drivers and + * reinitialize to be safe. */ + settings->video.fullscreen = !settings->video.fullscreen; + command_event(CMD_EVENT_REINIT, NULL); + break; + case CMD_EVENT_COMMAND_DEINIT: + input_driver_deinit_command(); + break; + case CMD_EVENT_COMMAND_INIT: + command_event(CMD_EVENT_COMMAND_DEINIT, NULL); + input_driver_init_command(); + break; + case CMD_EVENT_REMOTE_DEINIT: + input_driver_deinit_remote(); + break; + case CMD_EVENT_REMOTE_INIT: + command_event(CMD_EVENT_REMOTE_DEINIT, NULL); + input_driver_init_remote(); + break; + case CMD_EVENT_TEMPORARY_CONTENT_DEINIT: + content_deinit(); + break; + case CMD_EVENT_SUBSYSTEM_FULLPATHS_DEINIT: + { + global_t *global = global_get_ptr(); + if (!global) + break; + + if (global->subsystem_fullpaths) + string_list_free(global->subsystem_fullpaths); + global->subsystem_fullpaths = NULL; + } + break; + case CMD_EVENT_LOG_FILE_DEINIT: + retro_main_log_file_deinit(); + break; + case CMD_EVENT_DISK_APPEND_IMAGE: + { + const char *path = (const char*)data; + if (string_is_empty(path)) + return false; + return command_event_disk_control_append_image(path); + } + case CMD_EVENT_DISK_EJECT_TOGGLE: + if (info && info->disk_control_cb.get_num_images) + { + const struct retro_disk_control_callback *control = + (const struct retro_disk_control_callback*) + &info->disk_control_cb; + + if (control) + { + bool new_state = !control->get_eject_state(); + command_event_disk_control_set_eject(new_state, true); + } + } + else + runloop_msg_queue_push( + msg_hash_to_str(MSG_CORE_DOES_NOT_SUPPORT_DISK_OPTIONS), + 1, 120, true); + break; + case CMD_EVENT_DISK_NEXT: + if (info && info->disk_control_cb.get_num_images) + { + const struct retro_disk_control_callback *control = + (const struct retro_disk_control_callback*) + &info->disk_control_cb; + + if (!control) + return false; + + if (!control->get_eject_state()) + return false; + + command_event_check_disk_next(control); + } + else + runloop_msg_queue_push( + msg_hash_to_str(MSG_CORE_DOES_NOT_SUPPORT_DISK_OPTIONS), + 1, 120, true); + break; + case CMD_EVENT_DISK_PREV: + if (info && info->disk_control_cb.get_num_images) + { + const struct retro_disk_control_callback *control = + (const struct retro_disk_control_callback*) + &info->disk_control_cb; + + if (!control) + return false; + + if (!control->get_eject_state()) + return false; + + command_event_check_disk_prev(control); + } + else + runloop_msg_queue_push( + msg_hash_to_str(MSG_CORE_DOES_NOT_SUPPORT_DISK_OPTIONS), + 1, 120, true); + break; + case CMD_EVENT_RUMBLE_STOP: + for (i = 0; i < MAX_USERS; i++) + { + input_driver_set_rumble_state(i, RETRO_RUMBLE_STRONG, 0); + input_driver_set_rumble_state(i, RETRO_RUMBLE_WEAK, 0); + } + break; + case CMD_EVENT_GRAB_MOUSE_TOGGLE: + { + bool ret = false; + static bool grab_mouse_state = false; + + grab_mouse_state = !grab_mouse_state; + + if (grab_mouse_state) + ret = input_driver_grab_mouse(); + else + ret = input_driver_ungrab_mouse(); + + if (!ret) + return false; + + VLOG(@"%s: %s.\n", + msg_hash_to_str(MSG_GRAB_MOUSE_STATE), + grab_mouse_state ? "yes" : "no"); + + if (grab_mouse_state) + video_driver_hide_mouse(); + else + video_driver_show_mouse(); + } + break; + case CMD_EVENT_PERFCNT_REPORT_FRONTEND_LOG: + rarch_perf_log(); + break; + case CMD_EVENT_VOLUME_UP: + command_event_set_volume(0.5f); + break; + case CMD_EVENT_VOLUME_DOWN: + command_event_set_volume(-0.5f); + break; + case CMD_EVENT_SET_FRAME_LIMIT: + runloop_ctl(RUNLOOP_CTL_SET_FRAME_LIMIT, NULL); + break; + case CMD_EVENT_DISABLE_OVERRIDES: + command_event_disable_overrides(); + break; + case CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET: + command_event_restore_default_shader_preset(); + break; + case CMD_EVENT_NONE: + default: + return false; + } + + return true; +} diff --git a/PVSupport/Sources/retro/command.h b/PVSupport/Sources/retro/command.h new file mode 100644 index 0000000000..5e64daa059 --- /dev/null +++ b/PVSupport/Sources/retro/command.h @@ -0,0 +1,253 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef COMMAND_H__ +#define COMMAND_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +RETRO_BEGIN_DECLS + +typedef struct command command_t; + +typedef struct command_handle +{ + command_t *handle; + unsigned id; +} command_handle_t; + +enum event_command +{ + CMD_EVENT_NONE = 0, + /* Resets RetroArch. */ + CMD_EVENT_RESET, + CMD_EVENT_SET_PER_GAME_RESOLUTION, + CMD_EVENT_SET_FRAME_LIMIT, + /* Loads core. */ + CMD_EVENT_LOAD_CORE_DEINIT, + CMD_EVENT_LOAD_CORE, + CMD_EVENT_LOAD_CORE_PERSIST, + CMD_EVENT_UNLOAD_CORE, + CMD_EVENT_LOAD_STATE, + /* Swaps the current state with what's on the undo load buffer */ + CMD_EVENT_UNDO_LOAD_STATE, + /* Rewrites a savestate on disk */ + CMD_EVENT_UNDO_SAVE_STATE, + CMD_EVENT_SAVE_STATE, + CMD_EVENT_SAVE_STATE_DECREMENT, + CMD_EVENT_SAVE_STATE_INCREMENT, + /* Takes screenshot. */ + CMD_EVENT_TAKE_SCREENSHOT, + /* Quits RetroArch. */ + CMD_EVENT_QUIT, + /* Reinitialize all drivers. */ + CMD_EVENT_REINIT, + /* Toggles cheevos hardcore mode. */ + CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE, + /* Deinitialize rewind. */ + CMD_EVENT_REWIND_DEINIT, + /* Initializes rewind. */ + CMD_EVENT_REWIND_INIT, + /* Toggles rewind. */ + CMD_EVENT_REWIND_TOGGLE, + /* Deinitializes autosave. */ + CMD_EVENT_AUTOSAVE_DEINIT, + /* Initializes autosave. */ + CMD_EVENT_AUTOSAVE_INIT, + CMD_EVENT_AUTOSAVE_STATE, + /* Stops audio. */ + CMD_EVENT_AUDIO_STOP, + /* Starts audio. */ + CMD_EVENT_AUDIO_START, + /* Mutes audio. */ + CMD_EVENT_AUDIO_MUTE_TOGGLE, + /* Initializes overlay. */ + CMD_EVENT_OVERLAY_INIT, + /* Deinitializes overlay. */ + CMD_EVENT_OVERLAY_DEINIT, + /* Sets current scale factor for overlay. */ + CMD_EVENT_OVERLAY_SET_SCALE_FACTOR, + /* Sets current alpha modulation for overlay. */ + CMD_EVENT_OVERLAY_SET_ALPHA_MOD, + /* Cycle to next overlay. */ + CMD_EVENT_OVERLAY_NEXT, + /* Deinitializes overlay. */ + CMD_EVENT_DSP_FILTER_INIT, + /* Deinitializes graphics filter. */ + CMD_EVENT_DSP_FILTER_DEINIT, + /* Deinitializes GPU recoring. */ + CMD_EVENT_GPU_RECORD_DEINIT, + /* Initializes recording system. */ + CMD_EVENT_RECORD_INIT, + /* Deinitializes recording system. */ + CMD_EVENT_RECORD_DEINIT, + /* Deinitializes history playlist. */ + CMD_EVENT_HISTORY_DEINIT, + /* Initializes history playlist. */ + CMD_EVENT_HISTORY_INIT, + /* Deinitializes core information. */ + CMD_EVENT_CORE_INFO_DEINIT, + /* Initializes core information. */ + CMD_EVENT_CORE_INFO_INIT, + /* Deinitializes core. */ + CMD_EVENT_CORE_DEINIT, + /* Initializes core. */ + CMD_EVENT_CORE_INIT, + /* Set audio blocking state. */ + CMD_EVENT_AUDIO_SET_BLOCKING_STATE, + /* Set audio nonblocking state. */ + CMD_EVENT_AUDIO_SET_NONBLOCKING_STATE, + /* Apply video state changes. */ + CMD_EVENT_VIDEO_APPLY_STATE_CHANGES, + /* Set video blocking state. */ + CMD_EVENT_VIDEO_SET_BLOCKING_STATE, + /* Set video nonblocking state. */ + CMD_EVENT_VIDEO_SET_NONBLOCKING_STATE, + /* Sets current aspect ratio index. */ + CMD_EVENT_VIDEO_SET_ASPECT_RATIO, + CMD_EVENT_RESET_CONTEXT, + /* Restarts RetroArch. */ + CMD_EVENT_RESTART_RETROARCH, + /* Shutdown the OS */ + CMD_EVENT_SHUTDOWN, + /* Reboot the OS */ + CMD_EVENT_REBOOT, + /* Resume RetroArch when in menu. */ + CMD_EVENT_RESUME, + /* Toggles pause. */ + CMD_EVENT_PAUSE_TOGGLE, + /* Pauses RetroArch. */ + CMD_EVENT_UNPAUSE, + /* Unpauses retroArch. */ + CMD_EVENT_PAUSE, + CMD_EVENT_PAUSE_CHECKS, + CMD_EVENT_MENU_SAVE_CURRENT_CONFIG, + CMD_EVENT_MENU_SAVE_CONFIG, + CMD_EVENT_MENU_PAUSE_LIBRETRO, + /* Toggles menu on/off. */ + CMD_EVENT_MENU_TOGGLE, + CMD_EVENT_MENU_REFRESH, + /* Applies shader changes. */ + CMD_EVENT_SHADERS_APPLY_CHANGES, + /* Initializes shader directory. */ + CMD_EVENT_SHADER_DIR_INIT, + /* Deinitializes shader directory. */ + CMD_EVENT_SHADER_DIR_DEINIT, + /* Initializes controllers. */ + CMD_EVENT_CONTROLLERS_INIT, + CMD_EVENT_SAVEFILES, + /* Initializes savefiles. */ + CMD_EVENT_SAVEFILES_INIT, + /* Deinitializes savefiles. */ + CMD_EVENT_SAVEFILES_DEINIT, + /* Initializes cheats. */ + CMD_EVENT_CHEATS_INIT, + /* Deinitializes cheats. */ + CMD_EVENT_CHEATS_DEINIT, + /* Apply cheats. */ + CMD_EVENT_CHEATS_APPLY, + /* Deinitializes network system. */ + CMD_EVENT_NETWORK_DEINIT, + /* Initializes network system. */ + CMD_EVENT_NETWORK_INIT, + /* Initializes netplay system. */ + CMD_EVENT_NETPLAY_INIT, + /* Deinitializes netplay system. */ + CMD_EVENT_NETPLAY_DEINIT, + /* Flip netplay players. */ + CMD_EVENT_NETPLAY_FLIP_PLAYERS, + /* Initializes BSV movie. */ + CMD_EVENT_BSV_MOVIE_INIT, + /* Deinitializes BSV movie. */ + CMD_EVENT_BSV_MOVIE_DEINIT, + /* Initializes command interface. */ + CMD_EVENT_COMMAND_INIT, + /* Deinitialize command interface. */ + CMD_EVENT_COMMAND_DEINIT, + /* Initializes remote gamepad interface. */ + CMD_EVENT_REMOTE_INIT, + /* Deinitializes remote gamepad interface. */ + CMD_EVENT_REMOTE_DEINIT, + /* Reinitializes audio driver. */ + CMD_EVENT_AUDIO_REINIT, + /* Resizes windowed scale. Will reinitialize video driver. */ + CMD_EVENT_RESIZE_WINDOWED_SCALE, + /* Deinitializes temporary content. */ + CMD_EVENT_TEMPORARY_CONTENT_DEINIT, + CMD_EVENT_SUBSYSTEM_FULLPATHS_DEINIT, + CMD_EVENT_LOG_FILE_DEINIT, + /* Toggles disk eject. */ + CMD_EVENT_DISK_EJECT_TOGGLE, + /* Cycle to next disk. */ + CMD_EVENT_DISK_NEXT, + /* Cycle to previous disk. */ + CMD_EVENT_DISK_PREV, + /* Appends disk image to disk image list. */ + CMD_EVENT_DISK_APPEND_IMAGE, + /* Stops rumbling. */ + CMD_EVENT_RUMBLE_STOP, + /* Toggles mouse grab. */ + CMD_EVENT_GRAB_MOUSE_TOGGLE, + /* Toggles fullscreen mode. */ + CMD_EVENT_FULLSCREEN_TOGGLE, + CMD_EVENT_PERFCNT_REPORT_FRONTEND_LOG, + CMD_EVENT_VOLUME_UP, + CMD_EVENT_VOLUME_DOWN, + CMD_EVENT_DISABLE_OVERRIDES, + CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET +}; + +#ifdef HAVE_COMMAND +#if defined(HAVE_NETWORK_CMD) && defined(HAVE_NETPLAY) +bool command_network_send(const char *cmd_); +#endif +#endif + +bool command_network_new( + command_t *handle, + bool stdin_enable, + bool network_enable, + uint16_t port); + +command_t *command_new(bool local_enable); + +bool command_poll(command_t *handle); + +bool command_get(command_handle_t *handle); + +bool command_set(command_handle_t *handle); + +bool command_free(command_t *handle); + +/** + * command_event: + * @cmd : Command index. + * + * Performs RetroArch command with index @cmd. + * + * Returns: true (1) on success, otherwise false (0). + **/ +bool command_event(enum event_command action, void *data); + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/config.def.h b/PVSupport/Sources/retro/config.def.h new file mode 100644 index 0000000000..2731eef61f --- /dev/null +++ b/PVSupport/Sources/retro/config.def.h @@ -0,0 +1,962 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __CONFIG_DEF_H +#define __CONFIG_DEF_H + +#include +#include "driver.h" +#include "gfx/video_driver.h" + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +enum +{ + VIDEO_GL = 0, + VIDEO_VULKAN, + VIDEO_DRM, + VIDEO_XVIDEO, + VIDEO_SDL, + VIDEO_SDL2, + VIDEO_EXT, + VIDEO_WII, + VIDEO_XENON360, + VIDEO_XDK_D3D, + VIDEO_PSP1, + VIDEO_VITA2D, + VIDEO_CTR, + VIDEO_D3D9, + VIDEO_VG, + VIDEO_NULL, + VIDEO_OMAP, + VIDEO_EXYNOS, + VIDEO_SUNXI, + VIDEO_DISPMANX, + + AUDIO_RSOUND, + AUDIO_OSS, + AUDIO_ALSA, + AUDIO_ALSATHREAD, + AUDIO_ROAR, + AUDIO_AL, + AUDIO_SL, + AUDIO_JACK, + AUDIO_SDL, + AUDIO_SDL2, + AUDIO_XAUDIO, + AUDIO_PULSE, + AUDIO_EXT, + AUDIO_DSOUND, + AUDIO_COREAUDIO, + AUDIO_PS3, + AUDIO_XENON360, + AUDIO_WII, + AUDIO_RWEBAUDIO, + AUDIO_PSP, + AUDIO_CTR, + AUDIO_NULL, + + AUDIO_RESAMPLER_CC, + AUDIO_RESAMPLER_SINC, + AUDIO_RESAMPLER_NEAREST, + + INPUT_ANDROID, + INPUT_SDL, + INPUT_SDL2, + INPUT_X, + INPUT_WAYLAND, + INPUT_DINPUT, + INPUT_PS3, + INPUT_PSP, + INPUT_CTR, + INPUT_XENON360, + INPUT_WII, + INPUT_XINPUT, + INPUT_UDEV, + INPUT_LINUXRAW, + INPUT_COCOA, + INPUT_QNX, + INPUT_RWEBINPUT, + INPUT_NULL, + + JOYPAD_PS3, + JOYPAD_XINPUT, + JOYPAD_GX, + JOYPAD_XDK, + JOYPAD_PSP, + JOYPAD_CTR, + JOYPAD_DINPUT, + JOYPAD_UDEV, + JOYPAD_LINUXRAW, + JOYPAD_ANDROID, + JOYPAD_SDL, + JOYPAD_HID, + JOYPAD_QNX, + JOYPAD_NULL, + + CAMERA_V4L2, + CAMERA_RWEBCAM, + CAMERA_ANDROID, + CAMERA_AVFOUNDATION, + CAMERA_NULL, + + LOCATION_ANDROID, + LOCATION_CORELOCATION, + LOCATION_NULL, + + OSK_PS3, + OSK_NULL, + + MENU_RGUI, + MENU_XUI, + MENU_MATERIALUI, + MENU_XMB, + MENU_NUKLEAR, + + RECORD_FFMPEG, + RECORD_NULL +}; + +#if defined(HW_RVL) +#define MAX_GAMMA_SETTING 30 +#elif defined(GEKKO) +#define MAX_GAMMA_SETTING 2 +#else +#define MAX_GAMMA_SETTING 1 +#endif + +#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__) +#define VIDEO_DEFAULT_DRIVER VIDEO_GL +#elif defined(GEKKO) +#define VIDEO_DEFAULT_DRIVER VIDEO_WII +#elif defined(XENON) +#define VIDEO_DEFAULT_DRIVER VIDEO_XENON360 +#elif (defined(_XBOX1) || defined(_XBOX360)) && (defined(HAVE_D3D8) || defined(HAVE_D3D9)) +#define VIDEO_DEFAULT_DRIVER VIDEO_XDK_D3D +#elif defined(HAVE_D3D9) +#define VIDEO_DEFAULT_DRIVER VIDEO_D3D9 +#elif defined(HAVE_VG) +#define VIDEO_DEFAULT_DRIVER VIDEO_VG +#elif defined(HAVE_VITA2D) +#define VIDEO_DEFAULT_DRIVER VIDEO_VITA2D +#elif defined(PSP) +#define VIDEO_DEFAULT_DRIVER VIDEO_PSP1 +#elif defined(_3DS) +#define VIDEO_DEFAULT_DRIVER VIDEO_CTR +#elif defined(HAVE_XVIDEO) +#define VIDEO_DEFAULT_DRIVER VIDEO_XVIDEO +#elif defined(HAVE_SDL) +#define VIDEO_DEFAULT_DRIVER VIDEO_SDL +#elif defined(HAVE_SDL2) +#define VIDEO_DEFAULT_DRIVER VIDEO_SDL2 +#elif defined(HAVE_DYLIB) && !defined(ANDROID) +#define VIDEO_DEFAULT_DRIVER VIDEO_EXT +#else +#define VIDEO_DEFAULT_DRIVER VIDEO_NULL +#endif + +#if defined(__CELLOS_LV2__) +#define AUDIO_DEFAULT_DRIVER AUDIO_PS3 +#elif defined(XENON) +#define AUDIO_DEFAULT_DRIVER AUDIO_XENON360 +#elif defined(GEKKO) +#define AUDIO_DEFAULT_DRIVER AUDIO_WII +#elif defined(PSP) || defined(VITA) +#define AUDIO_DEFAULT_DRIVER AUDIO_PSP +#elif defined(_3DS) +#define AUDIO_DEFAULT_DRIVER AUDIO_CTR +#elif defined(HAVE_ALSA) && defined(HAVE_VIDEOCORE) +#define AUDIO_DEFAULT_DRIVER AUDIO_ALSATHREAD +#elif defined(HAVE_ALSA) +#define AUDIO_DEFAULT_DRIVER AUDIO_ALSA +#elif defined(HAVE_PULSE) +#define AUDIO_DEFAULT_DRIVER AUDIO_PULSE +#elif defined(HAVE_OSS) +#define AUDIO_DEFAULT_DRIVER AUDIO_OSS +#elif defined(HAVE_JACK) +#define AUDIO_DEFAULT_DRIVER AUDIO_JACK +#elif defined(HAVE_COREAUDIO) +#define AUDIO_DEFAULT_DRIVER AUDIO_COREAUDIO +#elif defined(HAVE_XAUDIO) +#define AUDIO_DEFAULT_DRIVER AUDIO_XAUDIO +#elif defined(HAVE_DSOUND) +#define AUDIO_DEFAULT_DRIVER AUDIO_DSOUND +#elif defined(HAVE_AL) +#define AUDIO_DEFAULT_DRIVER AUDIO_AL +#elif defined(HAVE_SL) +#define AUDIO_DEFAULT_DRIVER AUDIO_SL +#elif defined(EMSCRIPTEN) +#define AUDIO_DEFAULT_DRIVER AUDIO_RWEBAUDIO +#elif defined(HAVE_SDL) +#define AUDIO_DEFAULT_DRIVER AUDIO_SDL +#elif defined(HAVE_SDL2) +#define AUDIO_DEFAULT_DRIVER AUDIO_SDL2 +#elif defined(HAVE_RSOUND) +#define AUDIO_DEFAULT_DRIVER AUDIO_RSOUND +#elif defined(HAVE_ROAR) +#define AUDIO_DEFAULT_DRIVER AUDIO_ROAR +#elif defined(HAVE_DYLIB) && !defined(ANDROID) +#define AUDIO_DEFAULT_DRIVER AUDIO_EXT +#else +#define AUDIO_DEFAULT_DRIVER AUDIO_NULL +#endif + +#ifdef PSP +#define AUDIO_DEFAULT_RESAMPLER_DRIVER AUDIO_RESAMPLER_CC +#else +#define AUDIO_DEFAULT_RESAMPLER_DRIVER AUDIO_RESAMPLER_SINC +#endif + +#if defined(HAVE_FFMPEG) +#define RECORD_DEFAULT_DRIVER RECORD_FFMPEG +#else +#define RECORD_DEFAULT_DRIVER RECORD_NULL +#endif + +#if defined(XENON) +#define INPUT_DEFAULT_DRIVER INPUT_XENON360 +#elif defined(_XBOX360) || defined(_XBOX) || defined(HAVE_XINPUT2) || defined(HAVE_XINPUT_XBOX1) +#define INPUT_DEFAULT_DRIVER INPUT_XINPUT +#elif defined(ANDROID) +#define INPUT_DEFAULT_DRIVER INPUT_ANDROID +#elif defined(EMSCRIPTEN) +#define INPUT_DEFAULT_DRIVER INPUT_RWEBINPUT +#elif defined(_WIN32) +#define INPUT_DEFAULT_DRIVER INPUT_DINPUT +#elif defined(__CELLOS_LV2__) +#define INPUT_DEFAULT_DRIVER INPUT_PS3 +#elif defined(PSP) || defined(VITA) +#define INPUT_DEFAULT_DRIVER INPUT_PSP +#elif defined(_3DS) +#define INPUT_DEFAULT_DRIVER INPUT_CTR +#elif defined(GEKKO) +#define INPUT_DEFAULT_DRIVER INPUT_WII +#elif defined(HAVE_UDEV) +#define INPUT_DEFAULT_DRIVER INPUT_UDEV +#elif defined(__linux__) && !defined(ANDROID) +#define INPUT_DEFAULT_DRIVER INPUT_LINUXRAW +#elif defined(HAVE_X11) +#define INPUT_DEFAULT_DRIVER INPUT_X +#elif defined(HAVE_WAYLAND) +#define INPUT_DEFAULT_DRIVER INPUT_WAYLAND +#elif defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) +#define INPUT_DEFAULT_DRIVER INPUT_COCOA +#elif defined(__QNX__) +#define INPUT_DEFAULT_DRIVER INPUT_QNX +#elif defined(HAVE_SDL) +#define INPUT_DEFAULT_DRIVER INPUT_SDL +#elif defined(HAVE_SDL2) +#define INPUT_DEFAULT_DRIVER INPUT_SDL2 +#else +#define INPUT_DEFAULT_DRIVER INPUT_NULL +#endif + +#if defined(__CELLOS_LV2__) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_PS3 +#elif defined(HAVE_XINPUT) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_XINPUT +#elif defined(GEKKO) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_GX +#elif defined(_XBOX) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_XDK +#elif defined(PSP) || defined(VITA) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_PSP +#elif defined(_3DS) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_CTR +#elif defined(HAVE_DINPUT) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_DINPUT +#elif defined(HAVE_UDEV) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_UDEV +#elif defined(__linux) && !defined(ANDROID) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_LINUXRAW +#elif defined(ANDROID) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_ANDROID +#elif defined(HAVE_SDL) || defined(HAVE_SDL2) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_SDL +#elif defined(HAVE_HID) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_HID +#elif defined(__QNX__) +#define JOYPAD_DEFAULT_DRIVER JOYPAD_QNX +#else +#define JOYPAD_DEFAULT_DRIVER JOYPAD_NULL +#endif + +#if defined(HAVE_V4L2) +#define CAMERA_DEFAULT_DRIVER CAMERA_V4L2 +#elif defined(EMSCRIPTEN) +#define CAMERA_DEFAULT_DRIVER CAMERA_RWEBCAM +#elif defined(ANDROID) +#define CAMERA_DEFAULT_DRIVER CAMERA_ANDROID +#elif defined(HAVE_AVFOUNDATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)) +#define CAMERA_DEFAULT_DRIVER CAMERA_AVFOUNDATION +#else +#define CAMERA_DEFAULT_DRIVER CAMERA_NULL +#endif + +#if defined(ANDROID) +#define LOCATION_DEFAULT_DRIVER LOCATION_ANDROID +#elif defined(HAVE_CORELOCATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)) +#define LOCATION_DEFAULT_DRIVER LOCATION_CORELOCATION +#else +#define LOCATION_DEFAULT_DRIVER LOCATION_NULL +#endif + +#if defined(__CELLOS_LV2__) +#define OSK_DEFAULT_DRIVER OSK_PS3 +#else +#define OSK_DEFAULT_DRIVER OSK_NULL +#endif + +#if defined(HAVE_XUI) +#define MENU_DEFAULT_DRIVER MENU_XUI +#elif defined(IOS) || defined(ANDROID) || defined(__QNX__) +#define MENU_DEFAULT_DRIVER MENU_MATERIALUI +#elif defined(__MACH__) && defined(HAVE_XMB) || defined(__CELLOS_LV2__) +#define MENU_DEFAULT_DRIVER MENU_XMB +#else +#define MENU_DEFAULT_DRIVER MENU_RGUI +#endif + +#if defined(XENON) || defined(_XBOX360) || defined(__CELLOS_LV2__) +#define DEFAULT_ASPECT_RATIO 1.7778f +#elif defined(_XBOX1) || defined(GEKKO) || defined(ANDROID) || defined(__QNX__) +#define DEFAULT_ASPECT_RATIO 1.3333f +#else +#define DEFAULT_ASPECT_RATIO -1.0f +#endif + +#ifdef RARCH_MOBILE +static const bool pointer_enable = true; +#else +static const bool pointer_enable = false; +#endif + + + +/* Certain platforms might have assets stored in the bundle that + * we need to extract to a user-writable directory on first boot. + * + * Examples include: Android, iOS/OSX) */ +#if defined(ANDROID) || defined(IOS) +static bool bundle_assets_extract_enable = true; +#else +static bool bundle_assets_extract_enable = false; +#endif + +static const bool def_history_list_enable = true; + +static const unsigned int def_user_language = 0; + +#if (defined(_WIN32) && !defined(_XBOX)) +static const bool def_mouse_enable = true; +#else +static const bool def_mouse_enable = false; +#endif + +#ifdef HAVE_CHEEVOS +static const bool cheevos_enable = false; +#endif + +/* VIDEO */ + +#if defined(_XBOX360) +#define DEFAULT_GAMMA 1 +#else +#define DEFAULT_GAMMA 0 +#endif + +/* Windowed + * Real x resolution = aspect * base_size * x scale + * Real y resolution = base_size * y scale + */ +static const float scale = 3.0; + +/* Fullscreen */ + +/* To start in Fullscreen, or not. */ +static const bool fullscreen = false; + +/* To use windowed mode or not when going fullscreen. */ +static const bool windowed_fullscreen = true; + +/* Which monitor to prefer. 0 is any monitor, 1 and up selects + * specific monitors, 1 being the first monitor. */ +static const unsigned monitor_index = 0; + +/* Fullscreen resolution. A value of 0 uses the desktop + * resolution. */ +static const unsigned fullscreen_x = 0; +static const unsigned fullscreen_y = 0; + +#if defined(RARCH_CONSOLE) || defined(__APPLE__) +static const bool load_dummy_on_core_shutdown = false; +#else +static const bool load_dummy_on_core_shutdown = true; +#endif + +/* Forcibly disable composition. + * Only valid on Windows Vista/7/8 for now. */ +static const bool disable_composition = false; + +/* Video VSYNC (recommended) */ +static const bool vsync = true; + +static const unsigned max_swapchain_images = 3; + +/* Attempts to hard-synchronize CPU and GPU. + * Can reduce latency at cost of performance. */ +static const bool hard_sync = false; + +/* Configures how many frames the GPU can run ahead of CPU. + * 0: Syncs to GPU immediately. + * 1: Syncs to previous frame. + * 2: Etc ... + */ +static const unsigned hard_sync_frames = 0; + +/* Sets how many milliseconds to delay after VSync before running the core. + * Can reduce latency at cost of higher risk of stuttering. + */ +static const unsigned frame_delay = 0; + +/* Inserts a black frame inbetween frames. + * Useful for 120 Hz monitors who want to play 60 Hz material with eliminated + * ghosting. video_refresh_rate should still be configured as if it + * is a 60 Hz monitor (divide refresh rate by 2). + */ +static bool black_frame_insertion = false; + +/* Uses a custom swap interval for VSync. + * Set this to effectively halve monitor refresh rate. + */ +static unsigned swap_interval = 1; + +/* Threaded video. Will possibly increase performance significantly + * at the cost of worse synchronization and latency. + */ +static const bool video_threaded = false; + +#if defined(HAVE_THREADS) +#if defined(GEKKO) || defined(PSP) || defined(_3DS) || defined(_XBOX1) +/* For single-core consoles right now it's better to have this be disabled. */ +static const bool threaded_data_runloop_enable = false; +#else +static const bool threaded_data_runloop_enable = true; +#endif +#else +static const bool threaded_data_runloop_enable = false; +#endif + +/* Set to true if HW render cores should get their private context. */ +static const bool video_shared_context = false; + +/* Sets GC/Wii screen width. */ +static const unsigned video_viwidth = 640; + +/* Removes 480i flicker, smooths picture a little. */ +static const bool video_vfilter = true; + +/* Smooths picture. */ +static const bool video_smooth = true; + +/* On resize and fullscreen, rendering area will stay 4:3 */ +static const bool force_aspect = true; + +/* Enable use of shaders. */ +#ifdef RARCH_CONSOLE +static const bool shader_enable = true; +#else +static const bool shader_enable = false; +#endif + +/* Only scale in integer steps. + * The base size depends on system-reported geometry and aspect ratio. + * If video_force_aspect is not set, X/Y will be integer scaled independently. + */ +static const bool scale_integer = false; + +/* Controls aspect ratio handling. */ + +/* Automatic */ +static const float aspect_ratio = DEFAULT_ASPECT_RATIO; + +/* 1:1 PAR */ +static const bool aspect_ratio_auto = false; + +#if defined(__CELLOS_LV2) || defined(_XBOX360) +static unsigned aspect_ratio_idx = ASPECT_RATIO_16_9; +#elif defined(PSP) +static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#elif defined(RARCH_CONSOLE) +static unsigned aspect_ratio_idx = ASPECT_RATIO_4_3; +#else +static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#endif + +/* Save configuration file on exit. */ +static bool config_save_on_exit = true; + +static const bool overlay_hide_in_menu = true; + +#ifdef HAVE_MENU +#include "menu/menu_display.h" + +static bool default_block_config_read = true; + +#ifdef HAVE_XMB +static unsigned xmb_scale_factor = 100; +static unsigned xmb_alpha_factor = 75; +static unsigned xmb_icon_theme = XMB_ICON_THEME_MONOCHROME; +static unsigned xmb_theme = XMB_THEME_ELECTRIC_BLUE; +#ifdef HAVE_LAKKA +static bool xmb_shadows_enable = false; +#else +static bool xmb_shadows_enable = true; +#endif +static bool xmb_show_settings = true; +#ifdef HAVE_IMAGEVIEWER +static bool xmb_show_images = true; +#endif +#ifdef HAVE_FFMPEG +static bool xmb_show_music = true; +static bool xmb_show_video = true; +#endif +static bool xmb_show_history = true; +#endif + +static float menu_wallpaper_opacity = 0.300; + +static float menu_footer_opacity = 1.000; + +static float menu_header_opacity = 1.000; + +#if defined(HAVE_MATERIALUI) || defined(HAVE_XMB) +static unsigned menu_background_gradient = 4; +#endif + +#if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) || defined(HAVE_VULKAN) +#if defined(HAVE_OPENGLES2) || defined(OSX_PPC) +static unsigned menu_shader_pipeline = 1; +#else +static unsigned menu_shader_pipeline = 2; +#endif +#endif + +static bool show_advanced_settings = true; +static const uint32_t menu_entry_normal_color = 0xffffffff; +static const uint32_t menu_entry_hover_color = 0xff64ff64; +static const uint32_t menu_title_color = 0xff64ff64; +#else +static bool default_block_config_read = false; +#endif + +static bool default_game_specific_options = false; +static bool default_auto_overrides_enable = true; +static bool default_auto_remaps_enable = true; +static bool default_auto_shaders_enable = true; + +static bool default_sort_savefiles_enable = false; +static bool default_sort_savestates_enable = false; + +static unsigned default_menu_btn_ok = RETRO_DEVICE_ID_JOYPAD_A; +static unsigned default_menu_btn_cancel = RETRO_DEVICE_ID_JOYPAD_B; +static unsigned default_menu_btn_search = RETRO_DEVICE_ID_JOYPAD_X; +static unsigned default_menu_btn_default = RETRO_DEVICE_ID_JOYPAD_START; +static unsigned default_menu_btn_info = RETRO_DEVICE_ID_JOYPAD_SELECT; +static unsigned default_menu_btn_scroll_down = RETRO_DEVICE_ID_JOYPAD_R; +static unsigned default_menu_btn_scroll_up = RETRO_DEVICE_ID_JOYPAD_L; + +#if defined(__CELLOS_LV2__) || defined(_XBOX1) || defined(_XBOX360) +static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3; +#elif defined(VITA) +static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L1_R1_START_SELECT; +#else +static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_NONE; +#endif + +#ifdef ANDROID +static bool back_as_menu_toggle_enable = true; +#endif + +/* Crop overscanned frames. */ +static const bool crop_overscan = true; + +/* Font size for on-screen messages. */ +#if defined(HAVE_LIBDBGFONT) +static const float font_size = 1.0f; +#else +static const float font_size = 32; +#endif + +/* Offset for where messages will be placed on-screen. + * Values are in range [0.0, 1.0]. */ +static const float message_pos_offset_x = 0.05; +#if defined(_XBOX1) +static const float message_pos_offset_y = 0.90; +#else +static const float message_pos_offset_y = 0.05; +#endif + +/* Color of the message. + * RGB hex value. */ +static const uint32_t message_color = 0xffff00; + +/* Record post-filtered (CPU filter) video, + * rather than raw game output. */ +static const bool post_filter_record = false; + +/* Screenshots post-shaded GPU output if available. */ +static const bool gpu_screenshot = true; + +/* Screenshots named automatically. */ +static const bool auto_screenshot_filename = true; + +/* Record post-shaded GPU output instead of raw game footage if available. */ +static const bool gpu_record = false; + +/* OSD-messages. */ +static const bool font_enable = true; + +/* The accurate refresh rate of your monitor (Hz). + * This is used to calculate audio input rate with the formula: + * audio_input_rate = game_input_rate * display_refresh_rate / + * game_refresh_rate. + * + * If the implementation does not report any values, + * NTSC defaults will be assumed for compatibility. + * This value should stay close to 60Hz to avoid large pitch changes. + * If your monitor does not run at 60Hz, or something close to it, + * disable VSync, and leave this at its default. */ +#ifdef _3DS +static const float refresh_rate = (32730.0 * 8192.0) / 4481134.0 ; +#elif defined(RARCH_CONSOLE) +static const float refresh_rate = 60/1.001; +#else +static const float refresh_rate = 59.95; +#endif + +/* Allow games to set rotation. If false, rotation requests are + * honored, but ignored. + * Used for setups where one manually rotates the monitor. */ +static const bool allow_rotate = true; + +/* AUDIO */ + +/* Will enable audio or not. */ +static const bool audio_enable = true; + +/* Output samplerate. */ +#ifdef GEKKO +static const unsigned out_rate = 32000; +#elif defined(_3DS) +static const unsigned out_rate = 32730; +#else +static const unsigned out_rate = 48000; +#endif + +/* Audio device (e.g. hw:0,0 or /dev/audio). If NULL, will use defaults. */ +static const char *audio_device = NULL; + +/* Desired audio latency in milliseconds. Might not be honored + * if driver can't provide given latency. */ +#ifdef ANDROID +/* For most Android devices, 64ms is way too low. */ +static const int out_latency = 128; +#else +static const int out_latency = 64; +#endif + +/* Will sync audio. (recommended) */ +static const bool audio_sync = true; + +/* Audio rate control. */ +#if !defined(RARCH_CONSOLE) +static const bool rate_control = true; +#else +static const bool rate_control = false; +#endif + +/* Rate control delta. Defines how much rate_control + * is allowed to adjust input rate. */ +static const float rate_control_delta = 0.005; + +/* Maximum timing skew. Defines how much adjust_system_rates + * is allowed to adjust input rate. */ +static const float max_timing_skew = 0.05; + +/* Default audio volume in dB. (0.0 dB == unity gain). */ +static const float audio_volume = 0.0; + +/* MISC */ + +/* Enables displaying the current frames per second. */ +static const bool fps_show = false; + +/* Enables use of rewind. This will incur some memory footprint + * depending on the save state buffer. */ +static const bool rewind_enable = false; + +/* The buffer size for the rewind buffer. This needs to be about + * 15-20MB per minute. Very game dependant. */ +static const unsigned rewind_buffer_size = 20 << 20; /* 20MiB */ + +/* How many frames to rewind at a time. */ +static const unsigned rewind_granularity = 1; + +/* Pause gameplay when gameplay loses focus. */ +static const bool pause_nonactive = true; + +/* Saves non-volatile SRAM at a regular interval. + * It is measured in seconds. A value of 0 disables autosave. */ +static const unsigned autosave_interval = 0; + +/* When being client over netplay, use keybinds for + * user 1 rather than user 2. */ +static const bool netplay_client_swap_input = true; + +/* On save state load, block SRAM from being overwritten. + * This could potentially lead to buggy games. */ +static const bool block_sram_overwrite = false; + +/* When saving savestates, state index is automatically + * incremented before saving. + * When the content is loaded, state index will be set + * to the highest existing value. */ +static const bool savestate_auto_index = false; + +/* Automatically saves a savestate at the end of RetroArch's lifetime. + * The path is $SRAM_PATH.auto. + * RetroArch will automatically load any savestate with this path on + * startup if savestate_auto_load is set. */ +static const bool savestate_auto_save = false; +static const bool savestate_auto_load = false; + +/* Slowmotion ratio. */ +static const float slowmotion_ratio = 3.0; + +/* Maximum fast forward ratio. */ +static const float fastforward_ratio = 0.0; + +/* Enable stdin/network command interface. */ +static const bool network_cmd_enable = false; +static const uint16_t network_cmd_port = 55355; +static const bool stdin_cmd_enable = false; + +static const uint16_t network_remote_base_port = 55400; +/* Number of entries that will be kept in content history playlist file. */ +static const unsigned default_content_history_size = 100; + +/* Show Menu start-up screen on boot. */ +static const bool default_menu_show_start_screen = true; + +#ifdef RARCH_MOBILE +static const bool menu_dpi_override_enable = false; +#else +static const bool menu_dpi_override_enable = true; +#endif + +#ifdef RARCH_MOBILE +static const unsigned menu_dpi_override_value = 72; +#elif defined(__CELLOS_LV2__) +static const unsigned menu_dpi_override_value = 500; +#else +static const unsigned menu_dpi_override_value = 200; +#endif + +/* Log level for libretro cores (GET_LOG_INTERFACE). */ +static const unsigned libretro_log_level = 0; + +#ifndef RARCH_DEFAULT_PORT +#define RARCH_DEFAULT_PORT 55435 +#endif + +/* KEYBINDS, JOYPAD */ + +/* Axis threshold (between 0.0 and 1.0) + * How far an axis must be tilted to result in a button press. */ +static const float axis_threshold = 0.5; + +/* Describes speed of which turbo-enabled buttons toggle. */ +static const unsigned turbo_period = 6; +static const unsigned turbo_duty_cycle = 3; + +/* Enable input auto-detection. Will attempt to autoconfigure + * gamepads, plug-and-play style. */ +static const bool input_autodetect_enable = true; + +/* Show the input descriptors set by the core instead + * of the default ones. */ +static const bool input_descriptor_label_show = true; + +static const bool input_descriptor_hide_unbound = false; + +static const unsigned input_max_users = 5; + +static const unsigned input_poll_type_behavior = 2; + +static const unsigned input_bind_timeout = 5; + +static const unsigned menu_thumbnails_default = 3; + +#ifdef IOS +static const bool ui_companion_start_on_boot = false; +#else +static const bool ui_companion_start_on_boot = true; +#endif + +static const bool ui_companion_enable = false; + +#if defined(ANDROID) +#if defined(ANDROID_ARM) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/armeabi-v7a/"; +#elif defined(ANDROID_X86) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/x86/"; +#else +static char buildbot_server_url[] = ""; +#endif +#elif defined(IOS) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/ios/latest/"; +#elif defined(OSX) +#if defined(__x86_64__) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/osx/x86_64/latest/"; +#elif defined(__i386__) || defined(__i486__) || defined(__i686__) +static char buildbot_server_url[] = "http://bot.libretro.com/nightly/apple/osx/x86/latest/"; +#else +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/osx/ppc/latest/"; +#endif +#elif defined(_WIN32) && !defined(_XBOX) +#if defined(__x86_64__) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/win-x86_64/latest/"; +#elif defined(__i386__) || defined(__i486__) || defined(__i686__) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/win-x86/latest/"; +#endif +#elif defined(__linux__) +#if defined(__x86_64__) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/linux/x86_64/latest/"; +#elif defined(__i386__) || defined(__i486__) || defined(__i686__) +static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/linux/x86/latest/"; +#else +static char buildbot_server_url[] = ""; +#endif +#else +static char buildbot_server_url[] = ""; +#endif + +static char buildbot_assets_server_url[] = "http://buildbot.libretro.com/assets/"; + +#ifndef IS_SALAMANDER +#include "intl/intl.h" + +/* User 1 */ +static const struct retro_keybind retro_keybinds_1[] = { + /* | RetroPad button | desc | keyboard key | js btn | js axis | */ + { true, RETRO_DEVICE_ID_JOYPAD_B, RETRO_LBL_JOYPAD_B, RETROK_z, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_Y, RETRO_LBL_JOYPAD_Y, RETROK_a, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_SELECT, RETRO_LBL_JOYPAD_SELECT, RETROK_RSHIFT, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_START, RETRO_LBL_JOYPAD_START, RETROK_RETURN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_UP, RETRO_LBL_JOYPAD_UP, RETROK_UP, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_DOWN, RETRO_LBL_JOYPAD_DOWN, RETROK_DOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_LEFT, RETRO_LBL_JOYPAD_LEFT, RETROK_LEFT, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_RIGHT, RETRO_LBL_JOYPAD_RIGHT, RETROK_RIGHT, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_A, RETRO_LBL_JOYPAD_A, RETROK_x, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_X, RETRO_LBL_JOYPAD_X, RETROK_s, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L, RETRO_LBL_JOYPAD_L, RETROK_q, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R, RETRO_LBL_JOYPAD_R, RETROK_w, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L2, RETRO_LBL_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R2, RETRO_LBL_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L3, RETRO_LBL_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R3, RETRO_LBL_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + + { true, RARCH_ANALOG_LEFT_X_PLUS, RETRO_LBL_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_LEFT_X_MINUS, RETRO_LBL_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_LEFT_Y_PLUS, RETRO_LBL_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_LEFT_Y_MINUS, RETRO_LBL_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_X_PLUS, RETRO_LBL_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_X_MINUS, RETRO_LBL_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_Y_PLUS, RETRO_LBL_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_Y_MINUS, RETRO_LBL_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + + { true, RARCH_TURBO_ENABLE, RETRO_LBL_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_FAST_FORWARD_KEY, RETRO_LBL_FAST_FORWARD_KEY, RETROK_SPACE, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_FAST_FORWARD_HOLD_KEY, RETRO_LBL_FAST_FORWARD_HOLD_KEY,RETROK_l, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_LOAD_STATE_KEY, RETRO_LBL_LOAD_STATE_KEY, RETROK_F4, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_SAVE_STATE_KEY, RETRO_LBL_SAVE_STATE_KEY, RETROK_F2, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_FULLSCREEN_TOGGLE_KEY, RETRO_LBL_FULLSCREEN_TOGGLE_KEY,RETROK_f, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_QUIT_KEY, RETRO_LBL_QUIT_KEY, RETROK_ESCAPE, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_STATE_SLOT_PLUS, RETRO_LBL_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_STATE_SLOT_MINUS, RETRO_LBL_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_REWIND, RETRO_LBL_REWIND, RETROK_r, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_MOVIE_RECORD_TOGGLE, RETRO_LBL_MOVIE_RECORD_TOGGLE, RETROK_o, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_PAUSE_TOGGLE, RETRO_LBL_PAUSE_TOGGLE, RETROK_p, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_FRAMEADVANCE, RETRO_LBL_FRAMEADVANCE, RETROK_k, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_RESET, RETRO_LBL_RESET, RETROK_h, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_SHADER_NEXT, RETRO_LBL_SHADER_NEXT, RETROK_m, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_SHADER_PREV, RETRO_LBL_SHADER_PREV, RETROK_n, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_CHEAT_INDEX_PLUS, RETRO_LBL_CHEAT_INDEX_PLUS, RETROK_y, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_CHEAT_INDEX_MINUS, RETRO_LBL_CHEAT_INDEX_MINUS, RETROK_t, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_CHEAT_TOGGLE, RETRO_LBL_CHEAT_TOGGLE, RETROK_u, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_SCREENSHOT, RETRO_LBL_SCREENSHOT, RETROK_F8, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_MUTE, RETRO_LBL_MUTE, RETROK_F9, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_OSK, RETRO_LBL_OSK, RETROK_F12, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_NETPLAY_FLIP, RETRO_LBL_NETPLAY_FLIP, RETROK_i, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_SLOWMOTION, RETRO_LBL_SLOWMOTION, RETROK_e, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ENABLE_HOTKEY, RETRO_LBL_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_VOLUME_UP, RETRO_LBL_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_VOLUME_DOWN, RETRO_LBL_VOLUME_DOWN, RETROK_KP_MINUS,NO_BTN, 0, AXIS_NONE }, + { true, RARCH_OVERLAY_NEXT, RETRO_LBL_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_DISK_EJECT_TOGGLE, RETRO_LBL_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_DISK_NEXT, RETRO_LBL_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_DISK_PREV, RETRO_LBL_DISK_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_GRAB_MOUSE_TOGGLE, RETRO_LBL_GRAB_MOUSE_TOGGLE, RETROK_F11, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_MENU_TOGGLE, RETRO_LBL_MENU_TOGGLE, RETROK_F1, NO_BTN, 0, AXIS_NONE }, +}; + +/* Users 2 to MAX_USERS */ +static const struct retro_keybind retro_keybinds_rest[] = { + /* | RetroPad button | desc | keyboard key | js btn | js axis | */ + { true, RETRO_DEVICE_ID_JOYPAD_B, RETRO_LBL_JOYPAD_B, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_Y, RETRO_LBL_JOYPAD_Y, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_SELECT, RETRO_LBL_JOYPAD_SELECT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_START, RETRO_LBL_JOYPAD_START, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_UP, RETRO_LBL_JOYPAD_UP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_DOWN, RETRO_LBL_JOYPAD_DOWN, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_LEFT, RETRO_LBL_JOYPAD_LEFT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_RIGHT, RETRO_LBL_JOYPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_A, RETRO_LBL_JOYPAD_A, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_X, RETRO_LBL_JOYPAD_X, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L, RETRO_LBL_JOYPAD_L, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R, RETRO_LBL_JOYPAD_R, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L2, RETRO_LBL_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R2, RETRO_LBL_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L3, RETRO_LBL_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R3, RETRO_LBL_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + + { true, RARCH_ANALOG_LEFT_X_PLUS, RETRO_LBL_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_LEFT_X_MINUS, RETRO_LBL_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_LEFT_Y_PLUS, RETRO_LBL_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_LEFT_Y_MINUS, RETRO_LBL_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_X_PLUS, RETRO_LBL_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_X_MINUS, RETRO_LBL_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_Y_PLUS, RETRO_LBL_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_ANALOG_RIGHT_Y_MINUS, RETRO_LBL_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, + { true, RARCH_TURBO_ENABLE, RETRO_LBL_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE }, +}; + +#endif + +#endif diff --git a/PVSupport/Sources/retro/config.features.h b/PVSupport/Sources/retro/config.features.h new file mode 100644 index 0000000000..cb6f2d9ce5 --- /dev/null +++ b/PVSupport/Sources/retro/config.features.h @@ -0,0 +1,343 @@ +#ifndef __RARCH_FEATURES_H +#define __RARCH_FEATURES_H + +#include +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_OVERLAY +static const bool _overlay_supp = true; +#else +static const bool _overlay_supp = false; +#endif + +#ifdef HAVE_V4L2 +static const bool _v4l2_supp = true; +#else +static const bool _v4l2_supp = false; +#endif + +#ifdef HAVE_COMMAND +static const bool _command_supp = true; +#else +static const bool _command_supp = false; +#endif + +#ifdef HAVE_NETWORK_CMD +static const bool _network_command_supp = true; +#else +static const bool _network_command_supp = false; +#endif + +#ifdef HAVE_NETWORKGAMEPAD +static const bool _network_gamepad_supp = true; +#else +static const bool _network_gamepad_supp = false; +#endif + +#ifdef HAVE_FILTERS_BUILTIN +static const bool _cpu_filters = true; +#else +static const bool _cpu_filters = false; +#endif + +#ifdef HAVE_LIBUSB +static const bool _libusb_supp = true; +#else +static const bool _libusb_supp = false; +#endif + +#ifdef HAVE_SDL +static const bool _sdl_supp = true; +#else +static const bool _sdl_supp = false; +#endif + +#ifdef HAVE_SDL2 +static const bool _sdl2_supp = true; +#else +static const bool _sdl2_supp = false; +#endif + +#ifdef HAVE_THREADS +static const bool _thread_supp = true; +#else +static const bool _thread_supp = false; +#endif + +#ifdef HAVE_OPENGL +static const bool _opengl_supp = true; +#else +static const bool _opengl_supp = false; +#endif + +#ifdef HAVE_VULKAN +static const bool _vulkan_supp = true; +#else +static const bool _vulkan_supp = false; +#endif + +#if defined(HAVE_OPENGLES) || defined(HAVE_OPENGLES2) || defined(HAVE_OPENGLES3) || defined(HAVE_OPENGLES_3_1) || defined(HAVE_OPENGLES_3_2) +static const bool _opengles_supp = true; +#else +static const bool _opengles_supp = false; +#endif + +#ifdef HAVE_KMS +static const bool _kms_supp = true; +#else +static const bool _kms_supp = false; +#endif + +#ifdef HAVE_UDEV +static const bool _udev_supp = true; +#else +static const bool _udev_supp = false; +#endif + +#ifdef HAVE_VG +static const bool _vg_supp = true; +#else +static const bool _vg_supp = false; +#endif + +#ifdef HAVE_EGL +static const bool _egl_supp = true; +#else +static const bool _egl_supp = false; +#endif + +#ifdef HAVE_X11 +static const bool _x11_supp = true; +#else +static const bool _x11_supp = false; +#endif + +#ifdef HAVE_WAYLAND +static const bool _wayland_supp = true; +#else +static const bool _wayland_supp = false; +#endif + +#ifdef HAVE_XVIDEO +static const bool _xvideo_supp = true; +#else +static const bool _xvideo_supp = false; +#endif + +#ifdef HAVE_ALSA +static const bool _alsa_supp = true; +#else +static const bool _alsa_supp = false; +#endif + +#ifdef HAVE_COREAUDIO +static const bool _coreaudio_supp = true; +#else +static const bool _coreaudio_supp = false; +#endif + +#if defined(HAVE_OSS) || defined(HAVE_OSS_BSD) +static const bool _oss_supp = true; +#else +static const bool _oss_supp = false; +#endif + +#ifdef HAVE_AL +static const bool _al_supp = true; +#else +static const bool _al_supp = false; +#endif + +#ifdef HAVE_SL +static const bool _sl_supp = true; +#else +static const bool _sl_supp = false; +#endif + +#ifdef HAVE_LIBRETRODB +static const bool _libretrodb_supp = true; +#else +static const bool _libretrodb_supp = false; +#endif + +#ifdef HAVE_RSOUND +static const bool _rsound_supp = true; +#else +static const bool _rsound_supp = false; +#endif + +#ifdef HAVE_ROAR +static const bool _roar_supp = true; +#else +static const bool _roar_supp = false; +#endif + +#ifdef HAVE_JACK +static const bool _jack_supp = true; +#else +static const bool _jack_supp = false; +#endif + +#ifdef HAVE_PULSE +static const bool _pulse_supp = true; +#else +static const bool _pulse_supp = false; +#endif + +#ifdef HAVE_DSOUND +static const bool _dsound_supp = true; +#else +static const bool _dsound_supp = false; +#endif + +#ifdef HAVE_XAUDIO +static const bool _xaudio_supp = true; +#else +static const bool _xaudio_supp = false; +#endif + +#ifdef HAVE_ZLIB +static const bool _zlib_supp = true; +#else +static const bool _zlib_supp = false; +#endif + +#ifdef HAVE_7ZIP +static const bool _7zip_supp = true; +#else +static const bool _7zip_supp = false; +#endif + +#ifdef HAVE_DYLIB +static const bool _dylib_supp = true; +#else +static const bool _dylib_supp = false; +#endif + +#ifdef HAVE_CG +static const bool _cg_supp = true; +#else +static const bool _cg_supp = false; +#endif + +#ifdef HAVE_GLSL +static const bool _glsl_supp = true; +#else +static const bool _glsl_supp = false; +#endif + +#ifdef HAVE_HLSL +static const bool _hlsl_supp = true; +#else +static const bool _hlsl_supp = false; +#endif + +#ifdef HAVE_LIBXML2 +static const bool _libxml2_supp = true; +#else +static const bool _libxml2_supp = false; +#endif + +#ifdef HAVE_SDL_IMAGE +static const bool _sdl_image_supp = true; +#else +static const bool _sdl_image_supp = false; +#endif + +#ifdef HAVE_FBO +static const bool _fbo_supp = true; +#else +static const bool _fbo_supp = false; +#endif + +#ifdef HAVE_DYNAMIC +static const bool _dynamic_supp = true; +#else +static const bool _dynamic_supp = false; +#endif + +#ifdef HAVE_FFMPEG +static const bool _ffmpeg_supp = true; +#else +static const bool _ffmpeg_supp = false; +#endif + +#ifdef HAVE_FREETYPE +static const bool _freetype_supp = true; +#else +static const bool _freetype_supp = false; +#endif + +#ifdef HAVE_NETPLAY +static const bool _netplay_supp = true; +#else +static const bool _netplay_supp = false; +#endif + +#ifdef HAVE_PYTHON +static const bool _python_supp = true; +#else +static const bool _python_supp = false; +#endif + +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) +static const bool _cocoa_supp = true; +#else +static const bool _cocoa_supp = false; +#endif + +#ifdef HAVE_QT +static const bool _qt_supp = true; +#else +static const bool _qt_supp = false; +#endif + +#ifdef HAVE_RPNG +static const bool _rpng_supp = true; +#else +static const bool _rpng_supp = false; +#endif + +#ifdef HAVE_RJPEG +static const bool _rjpeg_supp = true; +#else +static const bool _rjpeg_supp = false; +#endif + +#ifdef HAVE_RBMP +static const bool _rbmp_supp = true; +#else +static const bool _rbmp_supp = false; +#endif + +#ifdef HAVE_RTGA +static const bool _rtga_supp = true; +#else +static const bool _rtga_supp = false; +#endif + +#ifdef HAVE_CORETEXT +static const bool _coretext_supp = true; +#else +static const bool _coretext_supp = false; +#endif + +#ifdef HAVE_AVFOUNDATION +static const bool _avfoundation_supp = true; +#else +static const bool _avfoundation_supp = false; +#endif + +#if !defined(_WIN32) && !defined(GLOBAL_CONFIG_DIR) +#if defined(__HAIKU__) +#define GLOBAL_CONFIG_DIR "/system/settings" +#else +#define GLOBAL_CONFIG_DIR "/etc" +#endif +#endif + +#endif diff --git a/PVSupport/Sources/retro/config_file_userdata.c b/PVSupport/Sources/retro/config_file_userdata.c new file mode 100644 index 0000000000..f4544c68a2 --- /dev/null +++ b/PVSupport/Sources/retro/config_file_userdata.c @@ -0,0 +1,149 @@ +/* Copyright (C) 2010-2016 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (config_file_userdata.c). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#include +#include + +#include "config_file_userdata.h" + +int config_userdata_get_float(void *userdata, const char *key_str, + float *value, float default_value) +{ + bool got; + char key[2][256]; + struct config_file_userdata *usr = (struct config_file_userdata*)userdata; + + fill_pathname_join_delim(key[0], usr->prefix[0], key_str, '_', sizeof(key[0])); + fill_pathname_join_delim(key[1], usr->prefix[1], key_str, '_', sizeof(key[1])); + + got = config_get_float (usr->conf, key[0], value); + got = got || config_get_float(usr->conf, key[1], value); + + if (!got) + *value = default_value; + return got; +} + +int config_userdata_get_int(void *userdata, const char *key_str, + int *value, int default_value) +{ + bool got; + char key[2][256]; + struct config_file_userdata *usr = (struct config_file_userdata*)userdata; + + fill_pathname_join_delim(key[0], usr->prefix[0], key_str, '_', sizeof(key[0])); + fill_pathname_join_delim(key[1], usr->prefix[1], key_str, '_', sizeof(key[1])); + + got = config_get_int (usr->conf, key[0], value); + got = got || config_get_int(usr->conf, key[1], value); + + if (!got) + *value = default_value; + return got; +} + +int config_userdata_get_float_array(void *userdata, const char *key_str, + float **values, unsigned *out_num_values, + const float *default_values, unsigned num_default_values) +{ + char key[2][256]; + struct config_file_userdata *usr = (struct config_file_userdata*)userdata; + char *str = NULL; + + fill_pathname_join_delim(key[0], usr->prefix[0], key_str, '_', sizeof(key[0])); + fill_pathname_join_delim(key[1], usr->prefix[1], key_str, '_', sizeof(key[1])); + + if ( config_get_string(usr->conf, key[0], &str) || + config_get_string(usr->conf, key[1], &str)) + { + unsigned i; + struct string_list *list = string_split(str, " "); + *values = (float*)calloc(list->size, sizeof(float)); + for (i = 0; i < list->size; i++) + (*values)[i] = (float)strtod(list->elems[i].data, NULL); + *out_num_values = list->size; + string_list_free(list); + free(str); + return true; + } + + *values = (float*)calloc(num_default_values, sizeof(float)); + memcpy(*values, default_values, sizeof(float) * num_default_values); + *out_num_values = num_default_values; + return false; +} + +int config_userdata_get_int_array(void *userdata, const char *key_str, + int **values, unsigned *out_num_values, + const int *default_values, unsigned num_default_values) +{ + char key[2][256]; + struct config_file_userdata *usr = (struct config_file_userdata*)userdata; + char *str = NULL; + fill_pathname_join_delim(key[0], usr->prefix[0], key_str, '_', sizeof(key[0])); + fill_pathname_join_delim(key[1], usr->prefix[1], key_str, '_', sizeof(key[1])); + + if ( config_get_string(usr->conf, key[0], &str) || + config_get_string(usr->conf, key[1], &str)) + { + unsigned i; + struct string_list *list = string_split(str, " "); + *values = (int*)calloc(list->size, sizeof(int)); + for (i = 0; i < list->size; i++) + (*values)[i] = (int)strtod(list->elems[i].data, NULL); + *out_num_values = list->size; + string_list_free(list); + free(str); + return true; + } + + *values = (int*)calloc(num_default_values, sizeof(int)); + memcpy(*values, default_values, sizeof(int) * num_default_values); + *out_num_values = num_default_values; + return false; +} + +int config_userdata_get_string(void *userdata, const char *key_str, + char **output, const char *default_output) +{ + char key[2][256]; + struct config_file_userdata *usr = (struct config_file_userdata*)userdata; + char *str = NULL; + fill_pathname_join_delim(key[0], usr->prefix[0], key_str, '_', sizeof(key[0])); + fill_pathname_join_delim(key[1], usr->prefix[1], key_str, '_', sizeof(key[1])); + + if ( config_get_string(usr->conf, key[0], &str) || + config_get_string(usr->conf, key[1], &str)) + { + *output = str; + return true; + } + + *output = strdup(default_output); + return false; +} + +void config_userdata_free(void *ptr) +{ + if (ptr) + free(ptr); +} diff --git a/PVSupport/Sources/retro/config_file_userdata.h b/PVSupport/Sources/retro/config_file_userdata.h new file mode 100644 index 0000000000..19d2277192 --- /dev/null +++ b/PVSupport/Sources/retro/config_file_userdata.h @@ -0,0 +1,55 @@ +/* Copyright (C) 2010-2016 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (config_file_userdata.h). + * --------------------------------------------------------------------------------------- + * + * 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. + */ + +#ifndef _LIBRETRO_SDK_CONFIG_FILE_USERDATA_H +#define _LIBRETRO_SDK_CONFIG_FILE_USERDATA_H + +#include + +#include + +struct config_file_userdata +{ + config_file_t *conf; + const char *prefix[2]; +}; + +int config_userdata_get_float(void *userdata, const char *key_str, + float *value, float default_value); + +int config_userdata_get_int(void *userdata, const char *key_str, + int *value, int default_value); + +int config_userdata_get_float_array(void *userdata, const char *key_str, + float **values, unsigned *out_num_values, + const float *default_values, unsigned num_default_values); + +int config_userdata_get_int_array(void *userdata, const char *key_str, + int **values, unsigned *out_num_values, + const int *default_values, unsigned num_default_values); + +int config_userdata_get_string(void *userdata, const char *key_str, + char **output, const char *default_output); + +void config_userdata_free(void *ptr); + +#endif diff --git a/PVSupport/Sources/retro/configuration.c b/PVSupport/Sources/retro/configuration.c new file mode 100644 index 0000000000..7c58df916b --- /dev/null +++ b/PVSupport/Sources/retro/configuration.c @@ -0,0 +1,3398 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "file_path_special.h" +#include "audio/audio_driver.h" +#include "configuration.h" +#include "content.h" +#include "config.def.h" +#include "input/input_config.h" +#include "input/input_keymaps.h" +#include "input/input_remapping.h" +#include "defaults.h" +#include "general.h" +#include "core.h" +#include "retroarch.h" +#include "system.h" +#include "verbosity.h" +#include "lakka.h" + +#include "tasks/tasks_internal.h" + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +struct defaults g_defaults; +static settings_t *configuration_settings = NULL; + +settings_t *config_get_ptr(void) +{ + return configuration_settings; +} + +void config_free(void) +{ + free(configuration_settings); + configuration_settings = NULL; +} + +bool config_init(void) +{ + configuration_settings = (settings_t*)calloc(1, sizeof(settings_t)); + + if (!configuration_settings) + return false; + return true; +} + +/** + * config_get_default_audio: + * + * Gets default audio driver. + * + * Returns: Default audio driver. + **/ +const char *config_get_default_audio(void) +{ + switch (AUDIO_DEFAULT_DRIVER) + { + case AUDIO_RSOUND: + return "rsound"; + case AUDIO_OSS: + return "oss"; + case AUDIO_ALSA: + return "alsa"; + case AUDIO_ALSATHREAD: + return "alsathread"; + case AUDIO_ROAR: + return "roar"; + case AUDIO_COREAUDIO: + return "coreaudio"; + case AUDIO_AL: + return "openal"; + case AUDIO_SL: + return "opensl"; + case AUDIO_SDL: + return "sdl"; + case AUDIO_SDL2: + return "sdl2"; + case AUDIO_DSOUND: + return "dsound"; + case AUDIO_XAUDIO: + return "xaudio"; + case AUDIO_PULSE: + return "pulse"; + case AUDIO_EXT: + return "ext"; + case AUDIO_XENON360: + return "xenon360"; + case AUDIO_PS3: + return "ps3"; + case AUDIO_WII: + return "gx"; + case AUDIO_PSP: +#ifdef VITA + return "vita"; +#else + return "psp"; +#endif + case AUDIO_CTR: + return "csnd"; + case AUDIO_RWEBAUDIO: + return "rwebaudio"; + default: + break; + } + + return "null"; +} + +const char *config_get_default_record(void) +{ + switch (RECORD_DEFAULT_DRIVER) + { + case RECORD_FFMPEG: + return "ffmpeg"; + default: + break; + } + + return "null"; +} + +/** + * config_get_default_audio_resampler: + * + * Gets default audio resampler driver. + * + * Returns: Default audio resampler driver. + **/ +const char *config_get_default_audio_resampler(void) +{ + switch (AUDIO_DEFAULT_RESAMPLER_DRIVER) + { + case AUDIO_RESAMPLER_CC: + return "cc"; + case AUDIO_RESAMPLER_SINC: + return "sinc"; + case AUDIO_RESAMPLER_NEAREST: + return "nearest"; + default: + break; + } + + return "null"; +} + +/** + * config_get_default_video: + * + * Gets default video driver. + * + * Returns: Default video driver. + **/ +const char *config_get_default_video(void) +{ + switch (VIDEO_DEFAULT_DRIVER) + { + case VIDEO_GL: + return "gl"; + case VIDEO_VULKAN: + return "vulkan"; + case VIDEO_DRM: + return "drm"; + case VIDEO_WII: + return "gx"; + case VIDEO_XENON360: + return "xenon360"; + case VIDEO_XDK_D3D: + case VIDEO_D3D9: + return "d3d"; + case VIDEO_PSP1: + return "psp1"; + case VIDEO_VITA2D: + return "vita2d"; + case VIDEO_CTR: + return "ctr"; + case VIDEO_XVIDEO: + return "xvideo"; + case VIDEO_SDL: + return "sdl"; + case VIDEO_SDL2: + return "sdl2"; + case VIDEO_EXT: + return "ext"; + case VIDEO_VG: + return "vg"; + case VIDEO_OMAP: + return "omap"; + case VIDEO_EXYNOS: + return "exynos"; + case VIDEO_DISPMANX: + return "dispmanx"; + case VIDEO_SUNXI: + return "sunxi"; + default: + break; + } + + return "null"; +} + +/** + * config_get_default_input: + * + * Gets default input driver. + * + * Returns: Default input driver. + **/ +const char *config_get_default_input(void) +{ + switch (INPUT_DEFAULT_DRIVER) + { + case INPUT_ANDROID: + return "android"; + case INPUT_PS3: + return "ps3"; + case INPUT_PSP: +#ifdef VITA + return "vita"; +#else + return "psp"; +#endif + case INPUT_CTR: + return "ctr"; + case INPUT_SDL: + return "sdl"; + case INPUT_SDL2: + return "sdl2"; + case INPUT_DINPUT: + return "dinput"; + case INPUT_X: + return "x"; + case INPUT_WAYLAND: + return "wayland"; + case INPUT_XENON360: + return "xenon360"; + case INPUT_XINPUT: + return "xinput"; + case INPUT_WII: + return "gx"; + case INPUT_LINUXRAW: + return "linuxraw"; + case INPUT_UDEV: + return "udev"; + case INPUT_COCOA: + return "cocoa"; + case INPUT_QNX: + return "qnx_input"; + case INPUT_RWEBINPUT: + return "rwebinput"; + default: + break; + } + + return "null"; +} + +/** + * config_get_default_joypad: + * + * Gets default input joypad driver. + * + * Returns: Default input joypad driver. + **/ +const char *config_get_default_joypad(void) +{ + switch (JOYPAD_DEFAULT_DRIVER) + { + case JOYPAD_PS3: + return "ps3"; + case JOYPAD_XINPUT: + return "xinput"; + case JOYPAD_GX: + return "gx"; + case JOYPAD_XDK: + return "xdk"; + case JOYPAD_PSP: +#ifdef VITA + return "vita"; +#else + return "psp"; +#endif + case JOYPAD_CTR: + return "ctr"; + case JOYPAD_DINPUT: + return "dinput"; + case JOYPAD_UDEV: + return "udev"; + case JOYPAD_LINUXRAW: + return "linuxraw"; + case JOYPAD_ANDROID: + return "android"; + case JOYPAD_SDL: +#ifdef HAVE_SDL2 + return "sdl2"; +#else + return "sdl"; +#endif + case JOYPAD_HID: + return "hid"; + case JOYPAD_QNX: + return "qnx"; + default: + break; + } + + return "null"; +} + +#ifdef HAVE_MENU +/** + * config_get_default_menu: + * + * Gets default menu driver. + * + * Returns: Default menu driver. + **/ +const char *config_get_default_menu(void) +{ + if (!string_is_empty(g_defaults.settings.menu)) + return g_defaults.settings.menu; + + switch (MENU_DEFAULT_DRIVER) + { + case MENU_RGUI: + return "rgui"; + case MENU_XUI: + return "xui"; + case MENU_MATERIALUI: + return "glui"; + case MENU_XMB: + return "xmb"; + case MENU_NUKLEAR: + return "nuklear"; + default: + break; + } + + return "null"; +} +#endif + +/** + * config_get_default_camera: + * + * Gets default camera driver. + * + * Returns: Default camera driver. + **/ +const char *config_get_default_camera(void) +{ + switch (CAMERA_DEFAULT_DRIVER) + { + case CAMERA_V4L2: + return "video4linux2"; + case CAMERA_RWEBCAM: + return "rwebcam"; + case CAMERA_ANDROID: + return "android"; + case CAMERA_AVFOUNDATION: + return "avfoundation"; + default: + break; + } + + return "null"; +} + +/** + * config_get_default_location: + * + * Gets default location driver. + * + * Returns: Default location driver. + **/ +const char *config_get_default_location(void) +{ + switch (LOCATION_DEFAULT_DRIVER) + { + case LOCATION_ANDROID: + return "android"; + case LOCATION_CORELOCATION: + return "corelocation"; + default: + break; + } + + return "null"; +} + +bool config_overlay_enable_default(void) +{ + if (g_defaults.overlay.set) + return g_defaults.overlay.enable; + return true; +} + +#ifdef HAVE_MENU +static unsigned config_menu_btn_ok_default(void) +{ + if (g_defaults.menu.controls.set) + return g_defaults.menu.controls.menu_btn_ok; + return default_menu_btn_ok; +} + +static unsigned config_menu_btn_cancel_default(void) +{ + if (g_defaults.menu.controls.set) + return g_defaults.menu.controls.menu_btn_cancel; + return default_menu_btn_cancel; +} +#endif + +/** + * config_set_defaults: + * + * Set 'default' configuration values. + **/ +static void config_set_defaults(void) +{ + unsigned i, j; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + const char *def_video = config_get_default_video(); + const char *def_audio = config_get_default_audio(); + const char *def_audio_resampler = config_get_default_audio_resampler(); + const char *def_input = config_get_default_input(); + const char *def_joypad = config_get_default_joypad(); +#ifdef HAVE_MENU + const char *def_menu = config_get_default_menu(); +#endif + const char *def_camera = config_get_default_camera(); + const char *def_location = config_get_default_location(); + const char *def_record = config_get_default_record(); +#ifdef HAVE_MENU + static bool first_initialized = true; +#endif + + if (def_camera) + strlcpy(settings->camera.driver, + def_camera, sizeof(settings->camera.driver)); + if (def_location) + strlcpy(settings->location.driver, + def_location, sizeof(settings->location.driver)); + if (def_video) + strlcpy(settings->video.driver, + def_video, sizeof(settings->video.driver)); + if (def_audio) + strlcpy(settings->audio.driver, + def_audio, sizeof(settings->audio.driver)); + if (def_audio_resampler) + strlcpy(settings->audio.resampler, + def_audio_resampler, sizeof(settings->audio.resampler)); + if (def_input) + strlcpy(settings->input.driver, + def_input, sizeof(settings->input.driver)); + if (def_joypad) + strlcpy(settings->input.joypad_driver, + def_joypad, sizeof(settings->input.joypad_driver)); + if (def_record) + strlcpy(settings->record.driver, + def_record, sizeof(settings->record.driver)); +#ifdef HAVE_MENU + if (def_menu) + strlcpy(settings->menu.driver, + def_menu, sizeof(settings->menu.driver)); +#ifdef HAVE_XMB + settings->menu.xmb.scale_factor = xmb_scale_factor; + settings->menu.xmb.alpha_factor = xmb_alpha_factor; + settings->menu.xmb.theme = xmb_icon_theme; + settings->menu.xmb.menu_color_theme = menu_background_gradient; + settings->menu.xmb.shadows_enable = xmb_shadows_enable; +#ifdef HAVE_SHADERPIPELINE + settings->menu.xmb.shader_pipeline = menu_shader_pipeline; +#endif + settings->menu.xmb.show_settings = xmb_show_settings; +#ifdef HAVE_IMAGEVIEWER + settings->menu.xmb.show_images = xmb_show_images; +#endif +#ifdef HAVE_FFMPEG + settings->menu.xmb.show_music = xmb_show_music; + settings->menu.xmb.show_video = xmb_show_video; +#endif + settings->menu.xmb.show_history = xmb_show_history; + settings->menu.xmb.font[0] = '\0'; +#endif +#ifdef HAVE_MATERIALUI + settings->menu.materialui.menu_color_theme = MATERIALUI_THEME_BLUE; + + if (g_defaults.menu.materialui.menu_color_theme_enable) + settings->menu.materialui.menu_color_theme = g_defaults.menu.materialui.menu_color_theme; +#endif + + settings->menu.throttle_framerate = true; + settings->menu.linear_filter = true; +#endif + + settings->history_list_enable = def_history_list_enable; + settings->load_dummy_on_core_shutdown = load_dummy_on_core_shutdown; + +#if TARGET_OS_IPHONE + settings->input.small_keyboard_enable = false; +#endif + settings->input.keyboard_gamepad_enable = true; + settings->input.keyboard_gamepad_mapping_type = 1; + settings->input.poll_type_behavior = 2; +#ifdef HAVE_FFMPEG + settings->multimedia.builtin_mediaplayer_enable = true; +#else + settings->multimedia.builtin_mediaplayer_enable = false; +#endif + settings->multimedia.builtin_imageviewer_enable = true; + settings->video.scale = scale; + settings->video.fullscreen = rarch_ctl(RARCH_CTL_IS_FORCE_FULLSCREEN, NULL) ? true : fullscreen; + settings->video.windowed_fullscreen = windowed_fullscreen; + settings->video.monitor_index = monitor_index; + settings->video.fullscreen_x = fullscreen_x; + settings->video.fullscreen_y = fullscreen_y; + settings->video.disable_composition = disable_composition; + settings->video.vsync = vsync; + settings->video.max_swapchain_images = max_swapchain_images; + settings->video.hard_sync = hard_sync; + settings->video.hard_sync_frames = hard_sync_frames; + settings->video.frame_delay = frame_delay; + settings->video.black_frame_insertion = black_frame_insertion; + settings->video.swap_interval = swap_interval; + settings->video.threaded = video_threaded; + settings->bundle_assets_extract_enable = bundle_assets_extract_enable; + + if (g_defaults.settings.video_threaded_enable != video_threaded) + settings->video.threaded = g_defaults.settings.video_threaded_enable; + +#ifdef HAVE_THREADS + settings->threaded_data_runloop_enable = threaded_data_runloop_enable; +#endif + settings->video.shared_context = video_shared_context; + settings->video.force_srgb_disable = false; +#ifdef GEKKO + settings->video.viwidth = video_viwidth; + settings->video.vfilter = video_vfilter; +#endif + settings->video.smooth = video_smooth; + settings->video.force_aspect = force_aspect; + settings->video.scale_integer = scale_integer; + settings->video.crop_overscan = crop_overscan; + settings->video.aspect_ratio = aspect_ratio; + settings->video.aspect_ratio_auto = aspect_ratio_auto; /* Let implementation decide if automatic, or 1:1 PAR. */ + settings->video.aspect_ratio_idx = aspect_ratio_idx; + settings->video.shader_enable = shader_enable; + settings->video.allow_rotate = allow_rotate; + + settings->video.font_enable = font_enable; + settings->video.font_size = font_size; + settings->video.msg_pos_x = message_pos_offset_x; + settings->video.msg_pos_y = message_pos_offset_y; + + settings->video.msg_color_r = ((message_color >> 16) & 0xff) / 255.0f; + settings->video.msg_color_g = ((message_color >> 8) & 0xff) / 255.0f; + settings->video.msg_color_b = ((message_color >> 0) & 0xff) / 255.0f; + + settings->video.refresh_rate = refresh_rate; + + if (g_defaults.settings.video_refresh_rate > 0.0 && + g_defaults.settings.video_refresh_rate != refresh_rate) + settings->video.refresh_rate = g_defaults.settings.video_refresh_rate; + + settings->video.post_filter_record = post_filter_record; + settings->video.gpu_record = gpu_record; + settings->video.gpu_screenshot = gpu_screenshot; + settings->auto_screenshot_filename = auto_screenshot_filename; + settings->video.rotation = ORIENTATION_NORMAL; + + settings->audio.enable = audio_enable; + settings->audio.mute_enable = false; + settings->audio.out_rate = out_rate; + settings->audio.block_frames = 0; + if (audio_device) + strlcpy(settings->audio.device, + audio_device, sizeof(settings->audio.device)); + + if (!g_defaults.settings.out_latency) + g_defaults.settings.out_latency = out_latency; + + settings->audio.latency = g_defaults.settings.out_latency; + settings->audio.sync = audio_sync; + settings->audio.rate_control = rate_control; + settings->audio.rate_control_delta = rate_control_delta; + settings->audio.max_timing_skew = max_timing_skew; + settings->audio.volume = audio_volume; + + audio_driver_set_volume_gain(db_to_gain(settings->audio.volume)); + + settings->rewind_enable = rewind_enable; + settings->rewind_buffer_size = rewind_buffer_size; + settings->rewind_granularity = rewind_granularity; + settings->slowmotion_ratio = slowmotion_ratio; + settings->fastforward_ratio = fastforward_ratio; + settings->pause_nonactive = pause_nonactive; + settings->autosave_interval = autosave_interval; + + settings->block_sram_overwrite = block_sram_overwrite; + settings->savestate_auto_index = savestate_auto_index; + settings->savestate_auto_save = savestate_auto_save; + settings->savestate_auto_load = savestate_auto_load; + settings->network_cmd_enable = network_cmd_enable; + settings->network_cmd_port = network_cmd_port; + settings->network_remote_base_port = network_remote_base_port; + settings->stdin_cmd_enable = stdin_cmd_enable; + settings->content_history_size = default_content_history_size; + settings->libretro_log_level = libretro_log_level; + +#ifdef HAVE_LAKKA + settings->ssh_enable = path_file_exists(LAKKA_SSH_PATH); + settings->samba_enable = path_file_exists(LAKKA_SAMBA_PATH); + settings->bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH); +#endif + +#ifdef HAVE_MENU + if (first_initialized) + settings->menu_show_start_screen = default_menu_show_start_screen; + settings->menu.pause_libretro = true; + settings->menu.mouse.enable = def_mouse_enable; + settings->menu.pointer.enable = pointer_enable; + settings->menu.timedate_enable = true; + settings->menu.core_enable = true; + settings->menu.dynamic_wallpaper_enable = false; + settings->menu.wallpaper.opacity = menu_wallpaper_opacity; + settings->menu.footer.opacity = menu_footer_opacity; + settings->menu.header.opacity = menu_header_opacity; + settings->menu.thumbnails = menu_thumbnails_default; + settings->menu.show_advanced_settings = show_advanced_settings; + settings->menu.entry_normal_color = menu_entry_normal_color; + settings->menu.entry_hover_color = menu_entry_hover_color; + settings->menu.title_color = menu_title_color; + + settings->menu.dpi.override_enable = menu_dpi_override_enable; + settings->menu.dpi.override_value = menu_dpi_override_value; + + settings->menu.navigation.wraparound.setting_enable = true; + settings->menu.navigation.wraparound.enable = true; + settings->menu.navigation.browser.filter.supported_extensions_enable = true; +#endif + + settings->ui.companion_start_on_boot = ui_companion_start_on_boot; + settings->ui.companion_enable = ui_companion_enable; + settings->ui.menubar_enable = true; + settings->ui.suspend_screensaver_enable = true; + + settings->location.allow = false; + settings->camera.allow = false; + +#ifdef HAVE_CHEEVOS + settings->cheevos.enable = cheevos_enable; + settings->cheevos.test_unofficial = false; + settings->cheevos.hardcore_mode_enable = false; + *settings->cheevos.username = '\0'; + *settings->cheevos.password = '\0'; +#endif + + settings->input.back_as_menu_toggle_enable = true; + settings->input.bind_timeout = input_bind_timeout; + settings->input.input_descriptor_label_show = input_descriptor_label_show; + settings->input.input_descriptor_hide_unbound = input_descriptor_hide_unbound; + settings->input.remap_binds_enable = true; + settings->input.max_users = input_max_users; + settings->input.menu_toggle_gamepad_combo = menu_toggle_gamepad_combo; + + retro_assert(sizeof(settings->input.binds[0]) >= sizeof(retro_keybinds_1)); + retro_assert(sizeof(settings->input.binds[1]) >= sizeof(retro_keybinds_rest)); + + memcpy(settings->input.binds[0], retro_keybinds_1, sizeof(retro_keybinds_1)); + + for (i = 1; i < MAX_USERS; i++) + memcpy(settings->input.binds[i], retro_keybinds_rest, + sizeof(retro_keybinds_rest)); + + input_remapping_set_defaults(); + + for (i = 0; i < MAX_USERS; i++) + { + for (j = 0; j < RARCH_BIND_LIST_END; j++) + { + settings->input.autoconf_binds[i][j].joykey = NO_BTN; + settings->input.autoconf_binds[i][j].joyaxis = AXIS_NONE; + } + } + memset(settings->input.autoconfigured, 0, + sizeof(settings->input.autoconfigured)); + + /* Verify that binds are in proper order. */ + for (i = 0; i < MAX_USERS; i++) + for (j = 0; j < RARCH_BIND_LIST_END; j++) + { + if (settings->input.binds[i][j].valid) + retro_assert(j == settings->input.binds[i][j].id); + } + + settings->input.axis_threshold = axis_threshold; + settings->input.netplay_client_swap_input = netplay_client_swap_input; + settings->input.turbo_period = turbo_period; + settings->input.turbo_duty_cycle = turbo_duty_cycle; + + strlcpy(settings->network.buildbot_url, buildbot_server_url, + sizeof(settings->network.buildbot_url)); + strlcpy(settings->network.buildbot_assets_url, buildbot_assets_server_url, + sizeof(settings->network.buildbot_assets_url)); + settings->network.buildbot_auto_extract_archive = true; + + settings->input.overlay_enable = config_overlay_enable_default(); + + settings->input.overlay_enable_autopreferred = true; + settings->input.overlay_hide_in_menu = overlay_hide_in_menu; + settings->input.overlay_opacity = 0.7f; + settings->input.overlay_scale = 1.0f; + settings->input.autodetect_enable = input_autodetect_enable; + *settings->input.keyboard_layout = '\0'; + + settings->osk.enable = true; + + for (i = 0; i < MAX_USERS; i++) + { + settings->input.joypad_map[i] = i; + settings->input.analog_dpad_mode[i] = ANALOG_DPAD_NONE; + if (!global->has_set.libretro_device[i]) + settings->input.libretro_device[i] = RETRO_DEVICE_JOYPAD; + } + + settings->set_supports_no_game_enable = true; + + video_driver_reset_custom_viewport(); + + /* Make sure settings from other configs carry over into defaults + * for another config. */ + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH)) + *global->dir.savefile = '\0'; + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH)) + *global->dir.savestate = '\0'; + + *settings->path.libretro_info = '\0'; + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY)) + *settings->directory.libretro = '\0'; + *settings->directory.cursor = '\0'; + *settings->directory.resampler = '\0'; + *settings->directory.screenshot = '\0'; + *settings->directory.system = '\0'; + *settings->directory.cache = '\0'; + *settings->directory.input_remapping = '\0'; + *settings->directory.core_assets = '\0'; + *settings->directory.assets = '\0'; + *settings->directory.dynamic_wallpapers = '\0'; + *settings->directory.thumbnails = '\0'; + *settings->directory.playlist = '\0'; + *settings->directory.autoconfig = '\0'; +#ifdef HAVE_MENU + *settings->directory.menu_content = '\0'; + *settings->directory.menu_config = '\0'; +#endif + *settings->directory.video_shader = '\0'; + *settings->directory.video_filter = '\0'; + *settings->directory.audio_filter = '\0'; + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_UPS_PREF)) + global->patch.ups_pref = false; + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_BPS_PREF)) + global->patch.bps_pref = false; + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_IPS_PREF)) + global->patch.ips_pref = false; + + *global->record.output_dir = '\0'; + *global->record.config_dir = '\0'; + + *settings->path.core_options = '\0'; + *settings->path.content_history = '\0'; + *settings->path.content_music_history = '\0'; + *settings->path.content_image_history = '\0'; + *settings->path.content_video_history = '\0'; + *settings->path.cheat_settings = '\0'; + *settings->path.shader = '\0'; +#ifndef IOS + *settings->path.bundle_assets_src = '\0'; + *settings->path.bundle_assets_dst = '\0'; + *settings->path.bundle_assets_dst_subdir = '\0'; +#endif + *settings->path.cheat_database = '\0'; + *settings->path.menu_wallpaper = '\0'; + *settings->path.content_database = '\0'; + *settings->path.overlay = '\0'; + *settings->path.softfilter_plugin = '\0'; + + settings->bundle_assets_extract_version_current = 0; + settings->bundle_assets_extract_last_version = 0; + *settings->playlist_names = '\0'; + *settings->playlist_cores = '\0'; + *settings->directory.content_history = '\0'; + *settings->path.audio_dsp_plugin = '\0'; + settings->game_specific_options = default_game_specific_options; + settings->auto_overrides_enable = default_auto_overrides_enable; + settings->auto_remaps_enable = default_auto_remaps_enable; + settings->auto_shaders_enable = default_auto_shaders_enable; + + settings->sort_savefiles_enable = default_sort_savefiles_enable; + settings->sort_savestates_enable = default_sort_savestates_enable; + +#ifdef HAVE_MENU + settings->menu_ok_btn = config_menu_btn_ok_default(); + settings->menu_cancel_btn = config_menu_btn_cancel_default(); + settings->menu_search_btn = default_menu_btn_search; + settings->menu_default_btn = default_menu_btn_default; + settings->menu_info_btn = default_menu_btn_info; + settings->menu_scroll_down_btn = default_menu_btn_scroll_down; + settings->menu_scroll_up_btn = default_menu_btn_scroll_up; +#endif + +#ifdef HAVE_LANGEXTRA + settings->user_language = 0; +#endif + + global->console.sound.system_bgm_enable = false; + + video_driver_default_settings(); + + if (!string_is_empty(g_defaults.dir.wallpapers)) + strlcpy(settings->directory.dynamic_wallpapers, + g_defaults.dir.wallpapers, sizeof(settings->directory.dynamic_wallpapers)); + if (!string_is_empty(g_defaults.dir.thumbnails)) + strlcpy(settings->directory.thumbnails, + g_defaults.dir.thumbnails, sizeof(settings->directory.thumbnails)); + if (!string_is_empty(g_defaults.dir.remap)) + strlcpy(settings->directory.input_remapping, + g_defaults.dir.remap, sizeof(settings->directory.input_remapping)); + if (!string_is_empty(g_defaults.dir.cache)) + strlcpy(settings->directory.cache, + g_defaults.dir.cache, sizeof(settings->directory.cache)); + if (!string_is_empty(g_defaults.dir.assets)) + strlcpy(settings->directory.assets, + g_defaults.dir.assets, sizeof(settings->directory.assets)); + if (!string_is_empty(g_defaults.dir.core_assets)) + strlcpy(settings->directory.core_assets, + g_defaults.dir.core_assets, sizeof(settings->directory.core_assets)); + if (!string_is_empty(g_defaults.dir.playlist)) + strlcpy(settings->directory.playlist, + g_defaults.dir.playlist, sizeof(settings->directory.playlist)); + if (!string_is_empty(g_defaults.dir.core)) + fill_pathname_expand_special(settings->directory.libretro, + g_defaults.dir.core, sizeof(settings->directory.libretro)); + if (!string_is_empty(g_defaults.dir.audio_filter)) + strlcpy(settings->directory.audio_filter, + g_defaults.dir.audio_filter, sizeof(settings->directory.audio_filter)); + if (!string_is_empty(g_defaults.dir.video_filter)) + strlcpy(settings->directory.video_filter, + g_defaults.dir.video_filter, sizeof(settings->directory.video_filter)); + if (!string_is_empty(g_defaults.dir.shader)) + fill_pathname_expand_special(settings->directory.video_shader, + g_defaults.dir.shader, sizeof(settings->directory.video_shader)); + + if (!string_is_empty(g_defaults.path.buildbot_server_url)) + strlcpy(settings->network.buildbot_url, + g_defaults.path.buildbot_server_url, sizeof(settings->network.buildbot_url)); + if (!string_is_empty(g_defaults.path.core)) + runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, g_defaults.path.core); + if (!string_is_empty(g_defaults.dir.database)) + strlcpy(settings->path.content_database, g_defaults.dir.database, + sizeof(settings->path.content_database)); + if (!string_is_empty(g_defaults.dir.cursor)) + strlcpy(settings->directory.cursor, g_defaults.dir.cursor, + sizeof(settings->directory.cursor)); + if (!string_is_empty(g_defaults.dir.cheats)) + strlcpy(settings->path.cheat_database, g_defaults.dir.cheats, + sizeof(settings->path.cheat_database)); + if (!string_is_empty(g_defaults.dir.core_info)) + fill_pathname_expand_special(settings->path.libretro_info, + g_defaults.dir.core_info, sizeof(settings->path.libretro_info)); +#ifdef HAVE_OVERLAY + if (!string_is_empty(g_defaults.dir.overlay)) + { + fill_pathname_expand_special(settings->directory.overlay, + g_defaults.dir.overlay, sizeof(settings->directory.overlay)); +#ifdef RARCH_MOBILE + if (string_is_empty(settings->path.overlay)) + fill_pathname_join(settings->path.overlay, + settings->directory.overlay, + "gamepads/retropad/retropad.cfg", + sizeof(settings->path.overlay)); +#endif + } + + if (!string_is_empty(g_defaults.dir.osk_overlay)) + { + fill_pathname_expand_special(global->dir.osk_overlay, + g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay)); +#ifdef RARCH_MOBILE + if (string_is_empty(settings->path.osk_overlay)) + fill_pathname_join(settings->path.osk_overlay, + global->dir.osk_overlay, + "keyboards/modular-keyboard/opaque/big.cfg", + sizeof(settings->path.osk_overlay)); +#endif + } + else + strlcpy(global->dir.osk_overlay, + settings->directory.overlay, + sizeof(global->dir.osk_overlay)); +#endif +#ifdef HAVE_MENU + if (!string_is_empty(g_defaults.dir.menu_config)) + strlcpy(settings->directory.menu_config, + g_defaults.dir.menu_config, + sizeof(settings->directory.menu_config)); +#endif + if (!string_is_empty(g_defaults.dir.autoconfig)) + strlcpy(settings->directory.autoconfig, + g_defaults.dir.autoconfig, + sizeof(settings->directory.autoconfig)); + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH) && + !string_is_empty(g_defaults.dir.savestate)) + strlcpy(global->dir.savestate, + g_defaults.dir.savestate, sizeof(global->dir.savestate)); + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH) && + !string_is_empty(g_defaults.dir.sram)) + strlcpy(global->dir.savefile, + g_defaults.dir.sram, sizeof(global->dir.savefile)); + if (!string_is_empty(g_defaults.dir.system)) + strlcpy(settings->directory.system, + g_defaults.dir.system, sizeof(settings->directory.system)); + if (!string_is_empty(g_defaults.dir.screenshot)) + strlcpy(settings->directory.screenshot, + g_defaults.dir.screenshot, + sizeof(settings->directory.screenshot)); + if (!string_is_empty(g_defaults.dir.resampler)) + strlcpy(settings->directory.resampler, + g_defaults.dir.resampler, + sizeof(settings->directory.resampler)); + if (!string_is_empty(g_defaults.dir.content_history)) + strlcpy(settings->directory.content_history, + g_defaults.dir.content_history, + sizeof(settings->directory.content_history)); + + if (!string_is_empty(g_defaults.path.config)) + fill_pathname_expand_special(global->path.config, + g_defaults.path.config, sizeof(global->path.config)); + + settings->config_save_on_exit = config_save_on_exit; + + /* Avoid reloading config on every content load */ + if (default_block_config_read) + rarch_ctl(RARCH_CTL_SET_BLOCK_CONFIG_READ, NULL); + else + rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL); + +#ifdef HAVE_MENU + first_initialized = false; +#endif +} + +/** + * open_default_config_file + * + * Open a default config file. Platform-specific. + * + * Returns: handle to config file if found, otherwise NULL. + **/ +static config_file_t *open_default_config_file(void) +{ + char application_data[PATH_MAX_LENGTH] = {0}; + char conf_path[PATH_MAX_LENGTH] = {0}; + char app_path[PATH_MAX_LENGTH] = {0}; + config_file_t *conf = NULL; + global_t *global = global_get_ptr(); + +#if defined(_WIN32) && !defined(_XBOX) + fill_pathname_application_path(app_path, sizeof(app_path)); + fill_pathname_resolve_relative(conf_path, app_path, + file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(conf_path)); + + conf = config_file_new(conf_path); + + if (!conf) + { + if (fill_pathname_application_data(application_data, + sizeof(application_data))) + { + fill_pathname_join(conf_path, application_data, + file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(conf_path)); + conf = config_file_new(conf_path); + } + } + + if (!conf) + { + bool saved = false; + + /* Try to create a new config file. */ + conf = config_file_new(NULL); + + + if (conf) + { + /* Since this is a clean config file, we can + * safely use config_save_on_exit. */ + fill_pathname_resolve_relative(conf_path, app_path, + file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(conf_path)); + config_set_bool(conf, "config_save_on_exit", true); + saved = config_file_write(conf, conf_path); + } + + if (!saved) + { + /* WARN here to make sure user has a good chance of seeing it. */ + ELOG(@"Failed to create new config file in: \"%s\".\n", + conf_path); + config_file_free(conf); + return NULL; + } + + WLOG(@"Created new config file in: \"%s\".\n", conf_path); + } +#elif defined(OSX) + if (!fill_pathname_application_data(application_data, + sizeof(application_data))) + return NULL; + + path_mkdir(application_data); + + fill_pathname_join(conf_path, application_data, + file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(conf_path)); + conf = config_file_new(conf_path); + + if (!conf) + { + bool saved = false; + + conf = config_file_new(NULL); + + if (conf) + { + config_set_bool(conf, "config_save_on_exit", true); + saved = config_file_write(conf, conf_path); + } + + if (!saved) + { + /* WARN here to make sure user has a good chance of seeing it. */ + ELOG(@"Failed to create new config file in: \"%s\".\n", + conf_path); + config_file_free(conf); + + return NULL; + } + + WLOG(@"Created new config file in: \"%s\".\n", conf_path); + } +#elif !defined(RARCH_CONSOLE) + bool has_application_data = fill_pathname_application_data(application_data, + sizeof(application_data)); + + if (has_application_data) + { + fill_pathname_join(conf_path, application_data, + file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(conf_path)); + VLOG(@"Looking for config in: \"%s\".\n", conf_path); + conf = config_file_new(conf_path); + } + + /* Fallback to $HOME/.retroarch.cfg. */ + if (!conf && getenv("HOME")) + { + fill_pathname_join(conf_path, getenv("HOME"), + ".retroarch.cfg", sizeof(conf_path)); + VLOG(@"Looking for config in: \"%s\".\n", conf_path); + conf = config_file_new(conf_path); + } + + if (!conf && has_application_data) + { + char basedir[PATH_MAX_LENGTH] = {0}; + + /* Try to create a new config file. */ + + strlcpy(conf_path, application_data, sizeof(conf_path)); + + fill_pathname_basedir(basedir, conf_path, sizeof(basedir)); + + fill_pathname_join(conf_path, conf_path, file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(conf_path)); + + if (path_mkdir(basedir)) + { + bool saved = false; + char skeleton_conf[PATH_MAX_LENGTH] = {0}; + +#if defined(__HAIKU__) + fill_pathname_join(skeleton_conf, "/system/settings", + file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(skeleton_conf)); +#else + fill_pathname_join(skeleton_conf, "/etc", + file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(skeleton_conf)); +#endif + conf = config_file_new(skeleton_conf); + if (conf) + WLOG(@"Config: using skeleton config \"%s\" as base for a new config file.\n", skeleton_conf); + else + conf = config_file_new(NULL); + + if (conf) + { + /* Since this is a clean config file, we can safely use config_save_on_exit. */ + config_set_bool(conf, "config_save_on_exit", true); + saved = config_file_write(conf, conf_path); + } + + if (!saved) + { + /* WARN here to make sure user has a good chance of seeing it. */ + ELOG(@"Failed to create new config file in: \"%s\".\n", conf_path); + config_file_free(conf); + + return NULL; + } + + WLOG(@"Config: Created new config file in: \"%s\".\n", conf_path); + } + } +#endif + + (void)application_data; + (void)conf_path; + (void)app_path; + + if (!conf) + return NULL; + + if (global) + strlcpy(global->path.config, conf_path, sizeof(global->path.config)); + return conf; +} + +static void read_keybinds_keyboard(config_file_t *conf, unsigned user, + unsigned idx, struct retro_keybind *bind) +{ + const char *prefix = NULL; + + if (!input_config_bind_map_get_valid(idx)) + return; + + if (!input_config_bind_map_get_base(idx)) + return; + + prefix = input_config_get_prefix(user, input_config_bind_map_get_meta(idx)); + + if (prefix) + input_config_parse_key(conf, prefix, + input_config_bind_map_get_base(idx), bind); +} + +static void read_keybinds_button(config_file_t *conf, unsigned user, + unsigned idx, struct retro_keybind *bind) +{ + const char *prefix = NULL; + + if (!input_config_bind_map_get_valid(idx)) + return; + if (!input_config_bind_map_get_base(idx)) + return; + + prefix = input_config_get_prefix(user, + input_config_bind_map_get_meta(idx)); + + if (prefix) + input_config_parse_joy_button(conf, prefix, + input_config_bind_map_get_base(idx), bind); +} + +static void read_keybinds_axis(config_file_t *conf, unsigned user, + unsigned idx, struct retro_keybind *bind) +{ + const char *prefix = NULL; + + if (!input_config_bind_map_get_valid(idx)) + return; + if (!input_config_bind_map_get_base(idx)) + return; + + prefix = input_config_get_prefix(user, + input_config_bind_map_get_meta(idx)); + + if (prefix) + input_config_parse_joy_axis(conf, prefix, + input_config_bind_map_get_base(idx), bind); +} + +static void read_keybinds_user(config_file_t *conf, unsigned user) +{ + unsigned i; + settings_t *settings = config_get_ptr(); + + for (i = 0; input_config_bind_map_get_valid(i); i++) + { + struct retro_keybind *bind = (struct retro_keybind*) + &settings->input.binds[user][i]; + + if (!bind->valid) + continue; + + read_keybinds_keyboard(conf, user, i, bind); + read_keybinds_button(conf, user, i, bind); + read_keybinds_axis(conf, user, i, bind); + } +} + +static void config_read_keybinds_conf(config_file_t *conf) +{ + unsigned i; + + for (i = 0; i < MAX_USERS; i++) + read_keybinds_user(conf, i); +} + +/* Also dumps inherited values, useful for logging. */ +#if 0 +static void config_file_dump_all(config_file_t *conf) +{ + struct config_entry_list *list = NULL; + struct config_include_list *includes = conf->includes; + + while (includes) + { + VLOG(@"#include \"%s\"\n", includes->path); + includes = includes->next; + } + + list = conf->entries; + + while (list) + { + VLOG(@"%s = \"%s\"%s\n", list->key, + list->value, list->readonly ? " (included)" : ""); + list = list->next; + } +} +#endif + +#ifdef HAVE_MENU +static void config_get_hex_base(config_file_t *conf, const char *key, unsigned *base) +{ + unsigned tmp = 0; + if (!base) + return; + if (config_get_hex(conf, key, &tmp)) + *base = tmp; +} +#endif + +/** + * config_load: + * @path : path to be read from. + * @set_defaults : set default values first before + * reading the values from the config file + * + * Loads a config file and reads all the values into memory. + * + */ +static bool config_load_file(const char *path, bool set_defaults) +{ + unsigned i; + bool tmp_bool = false; + char *save = NULL; + const char *extra_path = NULL; + char tmp_str[PATH_MAX_LENGTH] = {0}; + char tmp_append_path[PATH_MAX_LENGTH] = {0}; /* Don't destroy append_config_path. */ + unsigned msg_color = 0; + config_file_t *conf = NULL; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + + struct config_bool_setting_ptr bool_settings[] = { + { "video_windowed_fullscreen", &settings->video.windowed_fullscreen}, + { "video_disable_composition", &settings->video.disable_composition}, + { "video_vsync", &settings->video.vsync}, + { "video_hard_sync", &settings->video.hard_sync}, + { "history_list_enable", &settings->history_list_enable }, + { "fps_show", &settings->fps_show}, + { "video_black_frame_insertion", &settings->video.black_frame_insertion}, + { "game_specific_options", &settings->game_specific_options}, + { "auto_overrides_enable", &settings->auto_overrides_enable}, + { "auto_remaps_enable", &settings->auto_remaps_enable}, + { "auto_shaders_enable", &settings->auto_shaders_enable}, + { "sort_savefiles_enable", &settings->sort_savefiles_enable}, + { "sort_savestates_enable", &settings->sort_savestates_enable}, + { "config_save_on_exit", &settings->config_save_on_exit}, +#ifdef HAVE_MENU + { "dpi_override_enable", &settings->menu.dpi.override_enable}, +#endif + { "ui_menubar_enable", &settings->ui.menubar_enable}, + { "suspend_screensaver_enable", &settings->ui.suspend_screensaver_enable}, + { "load_dummy_on_core_shutdown", &settings->load_dummy_on_core_shutdown}, + { "builtin_mediaplayer_enable", &settings->multimedia.builtin_mediaplayer_enable}, + { "builtin_imageviewer_enable", &settings->multimedia.builtin_imageviewer_enable}, + { "input_autodetect_enable", &settings->input.autodetect_enable}, +#ifdef HAVE_NETWORKGAMEPAD + { "network_remote_enable", &settings->network_remote_enable}, +#endif +#ifdef HAVE_MENU +#ifdef HAVE_THREADS + { "threaded_data_runloop_enable",&settings->threaded_data_runloop_enable}, +#endif + { "rgui_show_start_screen", &settings->menu_show_start_screen}, + { "xmb_shadows_enable", &settings->menu.xmb.shadows_enable}, + { "xmb_show_settings", &settings->menu.xmb.show_settings}, +#ifdef HAVE_IMAGEVIEWER + { "xmb_show_images", &settings->menu.xmb.show_images}, +#endif +#ifdef HAVE_FFMPEG + { "xmb_show_music", &settings->menu.xmb.show_music}, + { "xmb_show_video", &settings->menu.xmb.show_video}, +#endif + { "xmb_show_history", &settings->menu.xmb.show_history}, + { "menu_throttle_framerate", &settings->menu.throttle_framerate}, + { "menu_linear_filter", &settings->menu.linear_filter}, + { "menu_pause_libretro", &settings->menu.pause_libretro}, + { "menu_mouse_enable", &settings->menu.mouse.enable}, + { "menu_pointer_enable", &settings->menu.pointer.enable}, + { "menu_timedate_enable", &settings->menu.timedate_enable}, + { "menu_core_enable", &settings->menu.core_enable}, + { "menu_dynamic_wallpaper_enable", &settings->menu.dynamic_wallpaper_enable}, + { "menu_navigation_wraparound_enable", &settings->menu.navigation.wraparound.enable}, + { "menu_navigation_browser_filter_supported_extensions_enable", + &settings->menu.navigation.browser.filter.supported_extensions_enable }, + { "menu_show_advanced_settings", &settings->menu.show_advanced_settings }, +#endif +#ifdef GEKKO + { "video_vfilter", &settings->video.vfilter}, +#endif + { "video_shader_enable", &settings->video.shader_enable}, + { "video_allow_rotate", &settings->video.allow_rotate}, + { "video_smooth", &settings->video.smooth}, + { "video_force_aspect", &settings->video.force_aspect}, + { "video_scale_integer", &settings->video.scale_integer}, + { "video_crop_overscan", &settings->video.crop_overscan}, + { "video_aspect_ratio_auto", &settings->video.aspect_ratio_auto}, + { "camera_allow", &settings->camera.allow}, + { "audio_enable", &settings->audio.enable}, + { "audio_mute_enable", &settings->audio.mute_enable}, + { "audio_sync", &settings->audio.sync}, + { "audio_rate_control", &settings->audio.rate_control}, + { "rewind_enable", &settings->rewind_enable}, + { "location_allow", &settings->location.allow}, + { "video_threaded", &settings->video.threaded}, + { "video_font_enable", &settings->video.font_enable}, + { "video_force_srgb_enable", &settings->video.force_srgb_disable}, + { "core_set_supports_no_game_enable", &settings->set_supports_no_game_enable}, + { "video_shared_context", &settings->video.shared_context}, +#ifdef HAVE_CHEEVOS + { "cheevos_enable", &settings->cheevos.enable}, + { "cheevos_test_unofficial", &settings->cheevos.test_unofficial}, + { "cheevos_hardcore_mode_enable", &settings->cheevos.hardcore_mode_enable}, +#endif +#if TARGET_OS_IPHONE + { "small_keyboard_enable", &settings->input.small_keyboard_enable}, +#endif + { "input_overlay_enable", &settings->input.overlay_enable}, + { "input_overlay_enable_autopreferred", &settings->input.overlay_enable_autopreferred}, + { "input_overlay_hide_in_menu", &settings->input.overlay_hide_in_menu}, + { "keyboard_gamepad_enable", &settings->input.keyboard_gamepad_enable}, + { "video_post_filter_record", &settings->video.post_filter_record}, + { "video_gpu_record", &settings->video.gpu_record}, + { "video_gpu_screenshot", &settings->video.gpu_screenshot}, + { "debug_panel_enable", &settings->debug_panel_enable}, + { "back_as_menu_toggle_enable", &settings->input.back_as_menu_toggle_enable}, + { "input_remap_binds_enable", &settings->input.remap_binds_enable}, + { "netplay_client_swap_input", &settings->input.netplay_client_swap_input}, + { "input_descriptor_label_show", &settings->input.input_descriptor_label_show}, + { "input_descriptor_hide_unbound",&settings->input.input_descriptor_hide_unbound}, + { "ui_companion_start_on_boot", &settings->ui.companion_start_on_boot}, + { "ui_companion_enable", &settings->ui.companion_enable}, + { "bundle_assets_extract_enable", &settings->bundle_assets_extract_enable}, + { "pause_nonactive", &settings->pause_nonactive}, + { "block_sram_overwrite", &settings->block_sram_overwrite}, + { "savestate_auto_index", &settings->savestate_auto_index}, + { "savestate_auto_save", &settings->savestate_auto_save}, + { "savestate_auto_load", &settings->savestate_auto_load}, +#ifdef HAVE_COMMAND + { "network_cmd_enable", &settings->network_cmd_enable}, + { "stdin_cmd_enable", &settings->stdin_cmd_enable}, +#endif +#ifdef HAVE_OVERLAY + { "input_osk_overlay_enable", &settings->osk.enable}, +#endif + { "core_updater_auto_extract_archive", &settings->network.buildbot_auto_extract_archive}, + { "auto_screenshot_filename", &settings->auto_screenshot_filename} + }; + + struct config_int_setting_ptr int_settings[] = { + { "video_fullscreen_x", &settings->video.fullscreen_x}, + { "video_fullscreen_y", &settings->video.fullscreen_y}, + { "video_monitor_index", &settings->video.monitor_index}, + { "video_max_swapchain_images", &settings->video.max_swapchain_images}, +#ifdef HAVE_MENU + { "dpi_override_value", &settings->menu.dpi.override_value }, + { "menu_thumbnails", &settings->menu.thumbnails }, +#endif +#ifdef GEKKO + { "video_viwidth", &settings->video.viwidth}, +#endif + { "custom_viewport_width", &settings->video_viewport_custom.width}, + { "custom_viewport_height", &settings->video_viewport_custom.height}, + { "aspect_ratio_index", &settings->video.aspect_ratio_idx}, + { "video_rotation", &settings->video.rotation}, + { "video_hard_sync_frames", &settings->video.hard_sync_frames }, + { "video_frame_delay", &settings->video.frame_delay }, + { "video_swap_interval", &settings->video.swap_interval}, + { "input_poll_type_behavior", &settings->input.poll_type_behavior}, + { "input_max_users", &settings->input.max_users}, + { "input_menu_toggle_gamepad_combo", &settings->input.menu_toggle_gamepad_combo}, + { "libretro_log_level", &settings->libretro_log_level}, + { "rewind_granularity", &settings->rewind_granularity}, + { "autosave_interval", &settings->autosave_interval}, + { "keyboard_gamepad_mapping_type", &settings->input.keyboard_gamepad_mapping_type}, + { "bundle_assets_extract_version_current", &settings->bundle_assets_extract_version_current}, + { "bundle_assets_extract_last_version", &settings->bundle_assets_extract_last_version}, + { "content_history_size", &settings->content_history_size }, + { "input_bind_timeout", &settings->input.bind_timeout}, + { "input_turbo_period", &settings->input.turbo_period}, + { "input_duty_cycle", &settings->input.turbo_duty_cycle}, +#ifdef HAVE_NETWORKGAMEPAD + { "network_remote_base_port", &settings->network_remote_base_port}, +#endif +#ifdef HAVE_COMMAND + { "network_cmd_port", &settings->network_cmd_port}, +#endif +#ifdef HAVE_LANGEXTRA + { "user_language", &settings->user_language}, +#endif +#ifdef HAVE_MENU + { "xmb_scale_factor", &settings->menu.xmb.scale_factor}, + { "xmb_alpha_factor", &settings->menu.xmb.alpha_factor}, +#ifdef HAVE_XMB + { "xmb_theme", &settings->menu.xmb.theme}, + { "xmb_menu_color_theme", &settings->menu.xmb.menu_color_theme}, +#endif + { "materialui_menu_color_theme", &settings->menu.materialui.menu_color_theme}, +#ifdef HAVE_SHADERPIPELINE + { "menu_shader_pipeline", &settings->menu.xmb.shader_pipeline}, +#endif +#endif + { "audio_out_rate", &settings->audio.out_rate}, + { "audio_block_frames", &settings->audio.block_frames}, +#ifdef HAVE_MENU + { "menu_ok_btn", &settings->menu_ok_btn}, + { "menu_cancel_btn", &settings->menu_cancel_btn}, + { "menu_search_btn", &settings->menu_search_btn}, + { "menu_info_btn", &settings->menu_info_btn}, + { "menu_default_btn", &settings->menu_default_btn}, + { "menu_cancel_btn", &settings->menu_cancel_btn}, + { "menu_scroll_down_btn", &settings->menu_scroll_down_btn}, + { "menu_scroll_up_btn", &settings->menu_scroll_up_btn}, +#endif + { "audio_latency", &settings->audio.latency} + }; + + struct config_float_setting_ptr float_settings[] = { + { "input_overlay_opacity", &settings->input.overlay_opacity}, + { "input_overlay_scale", &settings->input.overlay_scale}, + { "slowmotion_ratio", &settings->slowmotion_ratio}, + { "fastforward_ratio", &settings->fastforward_ratio}, +#ifdef HAVE_MENU + { "menu_wallpaper_opacity", &settings->menu.wallpaper.opacity}, + { "menu_footer_opacity", &settings->menu.footer.opacity}, + { "menu_header_opacity", &settings->menu.header.opacity}, +#endif + { "video_aspect_ratio", &settings->video.aspect_ratio}, + { "video_refresh_rate", &settings->video.refresh_rate}, + { "video_font_size", &settings->video.font_size}, + { "video_message_pos_x", &settings->video.msg_pos_x}, + { "video_message_pos_y", &settings->video.msg_pos_y}, + { "input_axis_threshold", &settings->input.axis_threshold}, + { "audio_rate_control_delta", &settings->audio.rate_control_delta}, + { "audio_max_timing_skew", &settings->audio.max_timing_skew}, + { "audio_volume", &settings->audio.volume}, + { "video_scale", &settings->video.scale} + }; + + + if (path) + { + conf = config_file_new(path); + if (!conf) + return false; + } + else + conf = open_default_config_file(); + + if (!conf) + return true; + + if (set_defaults) + config_set_defaults(); + + strlcpy(tmp_append_path, global->path.append_config, + sizeof(tmp_append_path)); + extra_path = strtok_r(tmp_append_path, "|", &save); + + while (extra_path) + { + bool ret = config_append_file(conf, extra_path); + + VLOG(@"Config: appending config \"%s\"\n", extra_path); + + if (!ret) + ELOG(@"Config: failed to append config \"%s\"\n", extra_path); + extra_path = strtok_r(NULL, "|", &save); + } +#if 0 + if (verbosity_is_enabled()) + { + RARCH_LOG_OUTPUT("=== Config ===\n"); + config_file_dump_all(conf); + RARCH_LOG_OUTPUT("=== Config end ===\n"); + } +#endif + + /* + * Boolean settings + * + */ + + for (i = 0; i < ARRAY_SIZE(bool_settings); i++) + { + bool tmp = false; + if (config_get_bool(conf, bool_settings[i].ident, &tmp)) + *bool_settings[i].ptr = tmp; + } + if (!rarch_ctl(RARCH_CTL_IS_FORCE_FULLSCREEN, NULL)) + CONFIG_GET_BOOL_BASE(conf, settings, video.fullscreen, "video_fullscreen"); + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_UPS_PREF)) + { + CONFIG_GET_BOOL_BASE(conf, global, patch.ups_pref, "ups_pref"); + } + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_BPS_PREF)) + { + CONFIG_GET_BOOL_BASE(conf, global, patch.bps_pref, "bps_pref"); + } + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_IPS_PREF)) + { + CONFIG_GET_BOOL_BASE(conf, global, patch.ips_pref, "ips_pref"); + } + +#ifdef HAVE_NETPLAY + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_MODE)) + CONFIG_GET_BOOL_BASE(conf, global, netplay.is_spectate, + "netplay_spectator_mode_enable"); + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_MODE)) + CONFIG_GET_BOOL_BASE(conf, global, netplay.is_client, "netplay_mode"); +#endif +#ifdef HAVE_NETWORKGAMEPAD + for (i = 0; i < MAX_USERS; i++) + { + char tmp[64] = {0}; + + snprintf(tmp, sizeof(tmp), "network_remote_enable_user_p%u", i + 1); + + if (config_get_bool(conf, tmp, &tmp_bool)) + settings->network_remote_enable_user[i] = tmp_bool; + } +#endif +#ifdef RARCH_CONSOLE + /* TODO - will be refactored later to make it more clean - it's more + * important that it works for consoles right now */ + if (config_get_bool(conf, "custom_bgm_enable", &tmp_bool)) + global->console.sound.system_bgm_enable = tmp_bool; +#endif + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_VERBOSITY)) + { + if (config_get_bool(conf, "log_verbosity", &tmp_bool)) + { + if (tmp_bool) + verbosity_enable(); + else + verbosity_disable(); + } + } + { + char tmp[64] = {0}; + + strlcpy(tmp, "perfcnt_enable", sizeof(tmp)); + if (config_get_bool(conf, tmp, &tmp_bool)) + { + if (tmp_bool) + runloop_ctl(RUNLOOP_CTL_SET_PERFCNT_ENABLE, NULL); + else + runloop_ctl(RUNLOOP_CTL_UNSET_PERFCNT_ENABLE, NULL); + } + } + + /* + * Integer settings + * + */ + + for (i = 0; i < ARRAY_SIZE(int_settings); i++) + { + int tmp = 0; + if (config_get_int(conf, int_settings[i].ident, &tmp)) + *int_settings[i].ptr = tmp; + } + + CONFIG_GET_INT_BASE(conf, settings, video_viewport_custom.x, "custom_viewport_x"); + CONFIG_GET_INT_BASE(conf, settings, video_viewport_custom.y, "custom_viewport_y"); + CONFIG_GET_INT_BASE(conf, settings, state_slot, "state_slot"); + +#ifdef HAVE_NETPLAY + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES)) + CONFIG_GET_INT_BASE(conf, global, netplay.sync_frames, "netplay_delay_frames"); + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT)) + CONFIG_GET_INT_BASE(conf, global, netplay.port, "netplay_ip_port"); +#endif + for (i = 0; i < MAX_USERS; i++) + { + char buf[64] = {0}; + snprintf(buf, sizeof(buf), "input_player%u_joypad_index", i + 1); + CONFIG_GET_INT_BASE(conf, settings, input.joypad_map[i], buf); + + snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1); + CONFIG_GET_INT_BASE(conf, settings, input.analog_dpad_mode[i], buf); + + if (!global->has_set.libretro_device[i]) + { + snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1); + CONFIG_GET_INT_BASE(conf, settings, input.libretro_device[i], buf); + } + } + { + /* ugly hack around C89 not allowing mixing declarations and code */ + int buffer_size = 0; + if (config_get_int(conf, "rewind_buffer_size", &buffer_size)) + settings->rewind_buffer_size = buffer_size * UINT64_C(1000000); + } + + + /* + * Hexadecimal settings + * + */ + + if (config_get_hex(conf, "video_message_color", &msg_color)) + { + settings->video.msg_color_r = ((msg_color >> 16) & 0xff) / 255.0f; + settings->video.msg_color_g = ((msg_color >> 8) & 0xff) / 255.0f; + settings->video.msg_color_b = ((msg_color >> 0) & 0xff) / 255.0f; + } +#ifdef HAVE_MENU + config_get_hex_base(conf, "menu_entry_normal_color", + &settings->menu.entry_normal_color); + config_get_hex_base(conf, "menu_entry_hover_color", + &settings->menu.entry_hover_color); + config_get_hex_base(conf, "menu_title_color", + &settings->menu.title_color); +#endif + + /* + * Float settings + * + */ + + for (i = 0; i < ARRAY_SIZE(float_settings); i++) + { + float tmp = 0.0f; + if (config_get_float(conf, float_settings[i].ident, &tmp)) + *float_settings[i].ptr = tmp; + } + + /* + * Array settings + * + */ + + config_get_array(conf, "playlist_names", settings->playlist_names, sizeof(settings->playlist_names)); + config_get_array(conf, "playlist_cores", settings->playlist_cores, sizeof(settings->playlist_cores)); + config_get_array(conf, "audio_device", settings->audio.device, sizeof(settings->audio.device)); + config_get_array(conf, "audio_resampler", settings->audio.resampler, sizeof(settings->audio.resampler)); + config_get_array(conf, "camera_device", settings->camera.device, sizeof(settings->camera.device)); +#ifdef HAVE_CHEEVOS + config_get_array(conf, "cheevos_username", settings->cheevos.username, sizeof(settings->cheevos.username)); + config_get_array(conf, "cheevos_password", settings->cheevos.password, sizeof(settings->cheevos.password)); +#endif + + config_get_array(conf, "video_driver", settings->video.driver, sizeof(settings->video.driver)); + config_get_array(conf, "record_driver", settings->record.driver, sizeof(settings->video.driver)); + config_get_array(conf, "camera_driver", settings->camera.driver, sizeof(settings->camera.driver)); + config_get_array(conf, "location_driver", settings->location.driver, sizeof(settings->location.driver)); +#ifdef HAVE_MENU + config_get_array(conf, "menu_driver", settings->menu.driver, sizeof(settings->menu.driver)); +#endif + config_get_array(conf, "video_context_driver", + settings->video.context_driver, + sizeof(settings->video.context_driver)); + config_get_array(conf, "audio_driver", + settings->audio.driver, + sizeof(settings->audio.driver)); + config_get_array(conf, "input_driver", + settings->input.driver, + sizeof(settings->input.driver)); + config_get_array(conf, "input_joypad_driver", + settings->input.joypad_driver, + sizeof(settings->input.joypad_driver)); + config_get_array(conf, "input_keyboard_layout", + settings->input.keyboard_layout, + sizeof(settings->input.keyboard_layout)); + config_get_array(conf, "bundle_assets_src_path", + settings->path.bundle_assets_src, + sizeof(settings->path.bundle_assets_src)); + config_get_array(conf, "bundle_assets_dst_path", + settings->path.bundle_assets_dst, + sizeof(settings->path.bundle_assets_dst)); + config_get_array(conf, "bundle_assets_dst_path_subdir", + settings->path.bundle_assets_dst_subdir, + sizeof(settings->path.bundle_assets_dst_subdir)); + + /* + * Path settings + * + */ + +#ifdef HAVE_MENU + if (config_get_path(conf, "xmb_font", tmp_str, sizeof(tmp_str))) + strlcpy(settings->menu.xmb.font, tmp_str, sizeof(settings->menu.xmb.font)); +#endif + if (config_get_path(conf, "menu_wallpaper", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.menu_wallpaper, tmp_str, + sizeof(settings->path.menu_wallpaper)); + if (config_get_path(conf, "video_shader", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.shader, tmp_str, sizeof(settings->path.shader)); + if (config_get_path(conf, "video_font_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.font, tmp_str, sizeof(settings->path.font)); + if (config_get_path(conf, "video_filter_dir", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.video_filter, tmp_str, sizeof(settings->directory.video_filter)); + if (config_get_path(conf, "audio_filter_dir", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.audio_filter, tmp_str, sizeof(settings->directory.audio_filter)); + if (config_get_path(conf, "core_updater_buildbot_url", tmp_str, sizeof(tmp_str))) + strlcpy(settings->network.buildbot_url, tmp_str, sizeof(settings->network.buildbot_url)); + if (config_get_path(conf, "core_updater_buildbot_assets_url", tmp_str, sizeof(tmp_str))) + strlcpy(settings->network.buildbot_assets_url, tmp_str, sizeof(settings->network.buildbot_assets_url)); +#ifdef HAVE_OVERLAY + if (config_get_path(conf, "input_overlay", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.overlay, tmp_str, sizeof(settings->path.overlay)); + if (config_get_path(conf, "input_osk_overlay", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.osk_overlay, tmp_str, sizeof(settings->path.osk_overlay)); +#endif + if (config_get_path(conf, "video_filter", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.softfilter_plugin, tmp_str, sizeof(settings->path.softfilter_plugin)); + if (config_get_path(conf, "audio_dsp_plugin", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.audio_dsp_plugin, tmp_str, sizeof(settings->path.audio_dsp_plugin)); + + if (config_get_path(conf, "libretro_info_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.libretro_info, tmp_str, sizeof(settings->path.libretro_info)); + + if (config_get_path(conf, "core_options_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.core_options, tmp_str, sizeof(settings->path.core_options)); + + if (config_get_path(conf, "system_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.system, tmp_str, + sizeof(settings->directory.system)); + + if (config_get_path(conf, "content_database_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.content_database, tmp_str, sizeof(settings->path.content_database)); + + if (config_get_path(conf, "cheat_database_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.cheat_database, tmp_str, sizeof(settings->path.cheat_database)); + + if (config_get_path(conf, "cursor_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.cursor, tmp_str, sizeof(settings->directory.cursor)); + + if (config_get_path(conf, "cheat_settings_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.cheat_settings, tmp_str, sizeof(settings->path.cheat_settings)); + + if (config_get_path(conf, "content_history_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.content_history, tmp_str, sizeof(settings->path.content_history)); + + if (config_get_path(conf, "content_music_history_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.content_music_history, tmp_str, sizeof(settings->path.content_music_history)); + + if (config_get_path(conf, "content_image_history_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.content_image_history, tmp_str, sizeof(settings->path.content_image_history)); + + if (config_get_path(conf, "content_video_history_path", tmp_str, sizeof(tmp_str))) + strlcpy(settings->path.content_video_history, tmp_str, sizeof(settings->path.content_video_history)); + + if (config_get_path(conf, "resampler_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.resampler, tmp_str, sizeof(settings->directory.resampler)); + + if (config_get_path(conf, "cache_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.cache, tmp_str, sizeof(settings->directory.cache)); + + if (config_get_path(conf, "input_remapping_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.input_remapping, tmp_str, sizeof(settings->directory.input_remapping)); + + if (config_get_path(conf, "core_assets_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.core_assets, tmp_str, sizeof(settings->directory.core_assets)); + + if (config_get_path(conf, "assets_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.assets, tmp_str, sizeof(settings->directory.assets)); + + if (config_get_path(conf, "dynamic_wallpapers_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.dynamic_wallpapers, tmp_str, sizeof(settings->directory.dynamic_wallpapers)); + + if (config_get_path(conf, "thumbnails_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.thumbnails, tmp_str, sizeof(settings->directory.thumbnails)); + + if (config_get_path(conf, "playlist_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.playlist, tmp_str, sizeof(settings->directory.playlist)); + + if (config_get_path(conf, "recording_output_directory", tmp_str, sizeof(tmp_str))) + strlcpy(global->record.output_dir, tmp_str, sizeof(global->record.output_dir)); + if (config_get_path(conf, "recording_config_directory", tmp_str, sizeof(tmp_str))) + strlcpy(global->record.config_dir, tmp_str, sizeof(global->record.config_dir)); +#ifdef HAVE_OVERLAY + if (config_get_path(conf, "overlay_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.overlay, tmp_str, sizeof(settings->directory.overlay)); + if (config_get_path(conf, "osk_overlay_directory", tmp_str, sizeof(tmp_str))) + strlcpy(global->dir.osk_overlay, tmp_str, sizeof(global->dir.osk_overlay)); +#endif + if (config_get_path(conf, "content_history_dir", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.content_history, tmp_str, sizeof(settings->directory.content_history)); + if (config_get_path(conf, "joypad_autoconfig_dir", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.autoconfig, tmp_str, sizeof(settings->directory.autoconfig)); + if (config_get_path(conf, "screenshot_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.screenshot, tmp_str, sizeof(settings->directory.screenshot)); + if (config_get_path(conf, "video_shader_dir", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.video_shader, tmp_str, sizeof(settings->directory.video_shader)); + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY)) + { + if (config_get_path(conf, "libretro_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.libretro, tmp_str, sizeof(settings->directory.libretro)); + } + +#ifndef HAVE_DYNAMIC + if (config_get_path(conf, "libretro_path", tmp_str, sizeof(tmp_str))) + config_set_active_core_path(tmp_str); +#endif +#ifdef HAVE_MENU + if (config_get_path(conf, "rgui_browser_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.menu_content, tmp_str, sizeof(settings->directory.menu_content)); + if (config_get_path(conf, "rgui_config_directory", tmp_str, sizeof(tmp_str))) + strlcpy(settings->directory.menu_config, tmp_str, sizeof(settings->directory.menu_config)); +#endif + if (!rarch_ctl(RARCH_CTL_HAS_SET_USERNAME, NULL)) + { + if (config_get_path(conf, "netplay_nickname", tmp_str, sizeof(tmp_str))) + strlcpy(settings->username, tmp_str, sizeof(settings->username)); + } +#ifdef HAVE_NETPLAY + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS)) + { + if (config_get_path(conf, "netplay_ip_address", tmp_str, sizeof(tmp_str))) + strlcpy(global->netplay.server, tmp_str, sizeof(global->netplay.server)); + } +#endif + +#ifdef RARCH_CONSOLE + video_driver_load_settings(conf); +#endif + + /* Post-settings load */ + + if (settings->video.hard_sync_frames > 3) + settings->video.hard_sync_frames = 3; + + if (settings->video.frame_delay > 15) + settings->video.frame_delay = 15; + + settings->video.swap_interval = MAX(settings->video.swap_interval, 1); + settings->video.swap_interval = MIN(settings->video.swap_interval, 4); + + + audio_driver_set_volume_gain(db_to_gain(settings->audio.volume)); + + if (string_is_empty(settings->path.content_history)) + { + if (string_is_empty(settings->directory.content_history)) + { + fill_pathname_resolve_relative( + settings->path.content_history, + global->path.config, + file_path_str(FILE_PATH_CONTENT_HISTORY), + sizeof(settings->path.content_history)); + } + else + { + fill_pathname_join(settings->path.content_history, + settings->directory.content_history, + file_path_str(FILE_PATH_CONTENT_HISTORY), + sizeof(settings->path.content_history)); + } + } + + if (string_is_empty(settings->path.content_music_history)) + { + if (string_is_empty(settings->directory.content_history)) + { + fill_pathname_resolve_relative( + settings->path.content_music_history, + global->path.config, + file_path_str(FILE_PATH_CONTENT_MUSIC_HISTORY), + sizeof(settings->path.content_music_history)); + } + else + { + fill_pathname_join(settings->path.content_music_history, + settings->directory.content_history, + file_path_str(FILE_PATH_CONTENT_MUSIC_HISTORY), + sizeof(settings->path.content_music_history)); + } + } + + if (string_is_empty(settings->path.content_video_history)) + { + if (string_is_empty(settings->directory.content_history)) + { + fill_pathname_resolve_relative( + settings->path.content_video_history, + global->path.config, + file_path_str(FILE_PATH_CONTENT_VIDEO_HISTORY), + sizeof(settings->path.content_video_history)); + } + else + { + fill_pathname_join(settings->path.content_video_history, + settings->directory.content_history, + file_path_str(FILE_PATH_CONTENT_VIDEO_HISTORY), + sizeof(settings->path.content_video_history)); + } + } + + if (string_is_empty(settings->path.content_image_history)) + { + if (string_is_empty(settings->directory.content_history)) + { + fill_pathname_resolve_relative( + settings->path.content_image_history, + global->path.config, + file_path_str(FILE_PATH_CONTENT_IMAGE_HISTORY), + sizeof(settings->path.content_image_history)); + } + else + { + fill_pathname_join(settings->path.content_image_history, + settings->directory.content_history, + file_path_str(FILE_PATH_CONTENT_IMAGE_HISTORY), + sizeof(settings->path.content_image_history)); + } + } + + + if (!string_is_empty(settings->directory.screenshot)) + { + if (string_is_equal(settings->directory.screenshot, "default")) + *settings->directory.screenshot = '\0'; + else if (!path_is_directory(settings->directory.screenshot)) + { + WLOG(@"screenshot_directory is not an existing directory, ignoring ...\n"); + *settings->directory.screenshot = '\0'; + } + } + + /* Safe-guard against older behavior. */ + if (path_is_directory(config_get_active_core_path())) + { + WLOG(@"\"libretro_path\" is a directory, using this for \"libretro_directory\" instead.\n"); + strlcpy(settings->directory.libretro, config_get_active_core_path(), + sizeof(settings->directory.libretro)); + config_clear_active_core_path(); + } + + if (string_is_equal(settings->path.menu_wallpaper, "default")) + *settings->path.menu_wallpaper = '\0'; + if (string_is_equal(settings->directory.video_shader, "default")) + *settings->directory.video_shader = '\0'; + if (string_is_equal(settings->directory.video_filter, "default")) + *settings->directory.video_filter = '\0'; + if (string_is_equal(settings->directory.audio_filter, "default")) + *settings->directory.audio_filter = '\0'; + if (string_is_equal(settings->directory.core_assets, "default")) + *settings->directory.core_assets = '\0'; + if (string_is_equal(settings->directory.assets, "default")) + *settings->directory.assets = '\0'; + if (string_is_equal(settings->directory.dynamic_wallpapers, "default")) + *settings->directory.dynamic_wallpapers = '\0'; + if (string_is_equal(settings->directory.thumbnails, "default")) + *settings->directory.thumbnails = '\0'; + if (string_is_equal(settings->directory.playlist, "default")) + *settings->directory.playlist = '\0'; +#ifdef HAVE_MENU + + if (string_is_equal(settings->directory.menu_content, "default")) + *settings->directory.menu_content = '\0'; + if (string_is_equal(settings->directory.menu_config, "default")) + *settings->directory.menu_config = '\0'; +#endif +#ifdef HAVE_OVERLAY + if (string_is_equal(settings->directory.overlay, "default")) + *settings->directory.overlay = '\0'; + if (string_is_equal(global->dir.osk_overlay, "default")) + *global->dir.osk_overlay = '\0'; +#endif + if (string_is_equal(settings->directory.system, "default")) + *settings->directory.system = '\0'; + + if (settings->slowmotion_ratio < 1.0f) + settings->slowmotion_ratio = 1.0f; + + /* Sanitize fastforward_ratio value - previously range was -1 + * and up (with 0 being skipped) */ + if (settings->fastforward_ratio < 0.0f) + settings->fastforward_ratio = 0.0f; + +#ifdef HAVE_LAKKA + settings->ssh_enable = path_file_exists(LAKKA_SSH_PATH); + settings->samba_enable = path_file_exists(LAKKA_SAMBA_PATH); + settings->bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH); +#endif + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH) && + config_get_path(conf, "savefile_directory", tmp_str, sizeof(tmp_str))) + { + if (string_is_equal(tmp_str, "default")) + strlcpy(global->dir.savefile, g_defaults.dir.sram, + sizeof(global->dir.savefile)); + else if (path_is_directory(tmp_str)) + { + strlcpy(global->dir.savefile, tmp_str, + sizeof(global->dir.savefile)); + strlcpy(global->name.savefile, tmp_str, + sizeof(global->name.savefile)); + fill_pathname_dir(global->name.savefile, + global->name.base, + file_path_str(FILE_PATH_SRM_EXTENSION), + sizeof(global->name.savefile)); + } + else + WLOG(@"savefile_directory is not a directory, ignoring ...\n"); + } + + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH) && + config_get_path(conf, "savestate_directory", tmp_str, sizeof(tmp_str))) + { + if (string_is_equal(tmp_str, "default")) + strlcpy(global->dir.savestate, g_defaults.dir.savestate, + sizeof(global->dir.savestate)); + else if (path_is_directory(tmp_str)) + { + strlcpy(global->dir.savestate, tmp_str, + sizeof(global->dir.savestate)); + strlcpy(global->name.savestate, tmp_str, + sizeof(global->name.savestate)); + fill_pathname_dir(global->name.savestate, + global->name.base, + file_path_str(FILE_PATH_STATE_EXTENSION), + sizeof(global->name.savestate)); + } + else + WLOG(@"savestate_directory is not a directory, ignoring ...\n"); + } + + config_read_keybinds_conf(conf); + + + config_file_free(conf); + return true; +} + +/** + * config_load_override: + * + * Tries to append game-specific and core-specific configuration. + * These settings will always have precedence, thus this feature + * can be used to enforce overrides. + * + * This function only has an effect if a game-specific or core-specific + * configuration file exists at respective locations. + * + * core-specific: $CONFIG_DIR/$CORE_NAME/$CORE_NAME.cfg fallback: $CURRENT_CFG_LOCATION/$CORE_NAME/$CORE_NAME.cfg + * game-specific: $CONFIG_DIR/$CORE_NAME/$ROM_NAME.cfg fallback: $CURRENT_CFG_LOCATION/$CORE_NAME/$GAME_NAME.cfg + * + * Returns: false if there was an error or no action was performed. + * + */ +bool config_load_override(void) +{ + char buf[PATH_MAX_LENGTH] = {0}; + char config_directory[PATH_MAX_LENGTH] = {0}; + char core_path[PATH_MAX_LENGTH] = {0}; + char game_path[PATH_MAX_LENGTH] = {0}; + config_file_t *new_conf = NULL; + const char *core_name = NULL; + const char *game_name = NULL; + bool should_append = false; + global_t *global = global_get_ptr(); + rarch_system_info_t *system = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); + + if (system) + core_name = system->info.library_name; + if (global) + game_name = path_basename(global->name.base); + + if (string_is_empty(core_name) || string_is_empty(game_name)) + return false; + + fill_pathname_application_special(config_directory, sizeof(config_directory), + APPLICATION_SPECIAL_DIRECTORY_CONFIG); + + /* Concatenate strings into full paths for core_path, game_path */ + fill_pathname_join_special_ext(game_path, + config_directory, core_name, + game_name, + file_path_str(FILE_PATH_CONFIG_EXTENSION), + sizeof(game_path)); + + fill_pathname_join_special_ext(core_path, + config_directory, core_name, + core_name, + file_path_str(FILE_PATH_CONFIG_EXTENSION), + sizeof(core_path)); + + /* Create a new config file from core_path */ + new_conf = config_file_new(core_path); + + /* If a core override exists, add its location to append_config_path */ + if (new_conf) + { + config_file_free(new_conf); + + VLOG(@"Overrides: core-specific overrides found at %s.\n", core_path); + strlcpy(global->path.append_config, core_path, sizeof(global->path.append_config)); + + should_append = true; + } + else + VLOG(@"Overrides: no core-specific overrides found at %s.\n", core_path); + + /* Create a new config file from game_path */ + new_conf = config_file_new(game_path); + + /* If a game override exists, add it's location to append_config_path */ + if (new_conf) + { + config_file_free(new_conf); + + VLOG(@"Overrides: game-specific overrides found at %s.\n", game_path); + if (should_append) + { + strlcat(global->path.append_config, "|", sizeof(global->path.append_config)); + strlcat(global->path.append_config, game_path, sizeof(global->path.append_config)); + } + else + strlcpy(global->path.append_config, game_path, sizeof(global->path.append_config)); + + should_append = true; + } + else + VLOG(@"Overrides: no game-specific overrides found at %s.\n", game_path); + + if (!should_append) + return false; + + /* Re-load the configuration with any overrides that might have been found */ +#ifdef HAVE_NETPLAY + if (global->netplay.enable) + { + WLOG(@"Overrides: can't use overrides in conjunction with netplay, disabling overrides.\n"); + return false; + } +#endif + + /* Store the libretro_path we're using since it will be + * overwritten by the override when reloading. */ + strlcpy(buf, config_get_active_core_path(), sizeof(buf)); + + /* Toggle has_save_path to false so it resets */ + retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_STATE_PATH); + retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_SAVE_PATH); + + if (!config_load_file(global->path.config, false)) + return false; + + /* Restore the libretro_path we're using + * since it will be overwritten by the override when reloading. */ + config_set_active_core_path(buf); + runloop_msg_queue_push("Configuration override loaded.", 1, 100, true); + + /* Reset save paths. */ + retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH); + retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH); + + return true; +} + +/** + * config_unload_override: + * + * Unloads configuration overrides if overrides are active. + * + * + * Returns: false if there was an error. + */ +bool config_unload_override(void) +{ + global_t *global = global_get_ptr(); + + if (!global) + return false; + + *global->path.append_config = '\0'; + + /* Toggle has_save_path to false so it resets */ + retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_STATE_PATH); + retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_SAVE_PATH); + + if (config_load_file(global->path.config, false)) + { + VLOG(@"Overrides: configuration overrides unloaded, original configuration restored.\n"); + + /* Reset save paths */ + retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH); + retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH); + + return true; + } + + return false; +} + +/** + * config_load_remap: + * + * Tries to append game-specific and core-specific remap files. + * + * This function only has an effect if a game-specific or core-specific + * configuration file exists at respective locations. + * + * core-specific: $REMAP_DIR/$CORE_NAME/$CORE_NAME.cfg + * game-specific: $REMAP_DIR/$CORE_NAME/$GAME_NAME.cfg + * + * Returns: false if there was an error or no action was performed. + */ +bool config_load_remap(void) +{ + char remap_directory[PATH_MAX_LENGTH] = {0}; /* path to the directory containing retroarch.cfg (prefix) */ + char core_path[PATH_MAX_LENGTH] = {0}; /* final path for core-specific configuration (prefix+suffix) */ + char game_path[PATH_MAX_LENGTH] = {0}; /* final path for game-specific configuration (prefix+suffix) */ + config_file_t *new_conf = NULL; + const char *core_name = NULL; + const char *game_name = NULL; + global_t *global = global_get_ptr(); + settings_t *settings = config_get_ptr(); + rarch_system_info_t *system = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); + + if (system) + core_name = system->info.library_name; + if (global) + game_name = path_basename(global->name.base); + + if (string_is_empty(core_name) || string_is_empty(game_name)) + return false; + + /* Remap directory: remap_directory. + * Try remap directory setting, no fallbacks defined */ + if (string_is_empty(settings->directory.input_remapping)) + return false; + + strlcpy(remap_directory, + settings->directory.input_remapping, + sizeof(remap_directory)); + VLOG(@"Remaps: remap directory: %s\n", remap_directory); + + /* Concatenate strings into full paths for core_path, game_path */ + fill_pathname_join_special_ext(core_path, + remap_directory, core_name, + core_name, + file_path_str(FILE_PATH_REMAP_EXTENSION), + sizeof(core_path)); + + fill_pathname_join_special_ext(game_path, + remap_directory, core_name, + game_name, + file_path_str(FILE_PATH_REMAP_EXTENSION), + sizeof(game_path)); + + /* Create a new config file from game_path */ + new_conf = config_file_new(game_path); + + /* If a game remap file exists, load it. */ + if (new_conf) + { + VLOG(@"Remaps: game-specific remap found at %s.\n", game_path); + if (input_remapping_load_file(new_conf, game_path)) + { + runloop_msg_queue_push("Game remap file loaded.", 1, 100, true); + return true; + } + } + else + { + VLOG(@"Remaps: no game-specific remap found at %s.\n", game_path); + input_remapping_set_defaults(); + } + + /* Create a new config file from core_path */ + new_conf = config_file_new(core_path); + + /* If a core remap file exists, load it. */ + if (new_conf) + { + VLOG(@"Remaps: core-specific remap found at %s.\n", core_path); + if (input_remapping_load_file(new_conf, core_path)) + { + runloop_msg_queue_push("Core remap file loaded.", 1, 100, true); + return true; + } + } + else + { + VLOG(@"Remaps: no core-specific remap found at %s.\n", core_path); + input_remapping_set_defaults(); + } + + new_conf = NULL; + + return false; +} + +static bool check_shader_compatibility(enum file_path_enum enum_idx) +{ + settings_t *settings = config_get_ptr(); + if (!strcmp("vulkan", settings->video.driver)) + { + if (enum_idx != FILE_PATH_SLANGP_EXTENSION) + return false; + else + return true; + } + if (!strcmp("gl", settings->video.driver) || + !strcmp("d3d9", settings->video.driver)) + { + if (enum_idx == FILE_PATH_SLANGP_EXTENSION) + return false; + else + return true; + } + else + return false; +} + +/** + * config_load_shader_preset: + * + * Tries to append game-specific and core-specific shader presets. + * + * This function only has an effect if a game-specific or core-specific + * configuration file exists at respective locations. + * + * core-specific: $SHADER_DIR/presets/$CORE_NAME/$CORE_NAME.cfg + * game-specific: $SHADER_DIR/presets/$CORE_NAME/$GAME_NAME.cfg + * + * Returns: false if there was an error or no action was performed. + */ +bool config_load_shader_preset(void) +{ + unsigned idx; + char shader_directory[PATH_MAX_LENGTH] = {0}; /* path to the directory containing retroarch.cfg (prefix) */ + char core_path[PATH_MAX_LENGTH] = {0}; /* final path for core-specific configuration (prefix+suffix) */ + char game_path[PATH_MAX_LENGTH] = {0}; /* final path for game-specific configuration (prefix+suffix) */ + const char *core_name = NULL; + const char *game_name = NULL; + global_t *global = global_get_ptr(); + settings_t *settings = config_get_ptr(); + rarch_system_info_t *system = NULL; + + runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); + + if (system) + core_name = system->info.library_name; + if (global) + game_name = path_basename(global->name.base); + + if (string_is_empty(core_name) || string_is_empty(game_name)) + return false; + + /* Shader directory: shader_directory. + * Try shader directory setting, no fallbacks defined */ + if (string_is_empty(settings->directory.video_shader)) + return false; + + fill_pathname_join (shader_directory, settings->directory.video_shader, + "presets", sizeof(shader_directory)); + + VLOG(@"Shaders: preset directory: %s\n", shader_directory); + + for(idx = FILE_PATH_CGP_EXTENSION; idx < FILE_PATH_SLANGP_EXTENSION; idx++) + { + config_file_t *new_conf = NULL; + + if (!check_shader_compatibility((enum file_path_enum)(idx))) + continue; + /* Concatenate strings into full paths for core_path, game_path */ + fill_pathname_join_special_ext(core_path, + shader_directory, core_name, + core_name, + file_path_str((enum file_path_enum)(idx)), + sizeof(core_path)); + + fill_pathname_join_special_ext(game_path, + shader_directory, core_name, + game_name, + file_path_str((enum file_path_enum)(idx)), + sizeof(game_path)); + + /* Create a new config file from game_path */ + new_conf = config_file_new(game_path); + + if (!new_conf) + { + VLOG(@"Shaders: no game-specific preset found at %s.\n", game_path); + continue; + } + + /* Game shader preset exists, load it. */ + VLOG(@"Shaders: game-specific shader preset found at %s.\n", game_path); + runloop_ctl(RUNLOOP_CTL_SET_DEFAULT_SHADER_PRESET, settings->path.shader); + strlcpy(settings->path.shader, game_path, sizeof(settings->path.shader)); + config_file_free(new_conf); + return true; + } + + for(idx = FILE_PATH_CGP_EXTENSION; idx < FILE_PATH_SLANGP_EXTENSION; idx++) + { + config_file_t *new_conf = NULL; + + if (!check_shader_compatibility((enum file_path_enum)(idx))) + continue; + /* Concatenate strings into full paths for core_path, game_path */ + fill_pathname_join_special_ext(core_path, + shader_directory, core_name, + core_name, + file_path_str((enum file_path_enum)(idx)), + sizeof(core_path)); + + /* Create a new config file from core_path */ + new_conf = config_file_new(core_path); + + if (!new_conf) + { + VLOG(@"Shaders: no core-specific preset found at %s.\n", core_path); + continue; + } + + /* Core shader preset exists, load it. */ + VLOG(@"Shaders: core-specific shader preset found at %s.\n", core_path); + runloop_ctl(RUNLOOP_CTL_SET_DEFAULT_SHADER_PRESET, settings->path.shader); + strlcpy(settings->path.shader, core_path, sizeof(settings->path.shader)); + config_file_free(new_conf); + return true; + } + return false; +} + +static void parse_config_file(void) +{ + global_t *global = global_get_ptr(); + bool ret = config_load_file((*global->path.config) + ? global->path.config : NULL, false); + + if (!string_is_empty(global->path.config)) + { + VLOG(@"Config: loading config from: %s.\n", global->path.config); + } + else + { + VLOG(@"Loading default config.\n"); + if (!string_is_empty(global->path.config)) + VLOG(@"Config: found default config: %s.\n", global->path.config); + } + + if (ret) + return; + + ELOG(@"Config: couldn't find config at path: \"%s\"\n", + global->path.config); +} + + +#if 0 +static bool config_read_keybinds(const char *path) +{ + config_file_t *conf = (config_file_t*)config_file_new(path); + + if (!conf) + return false; + + config_read_keybinds_conf(conf); + config_file_free(conf); + + return true; +} +#endif + +static void save_keybind_key(config_file_t *conf, const char *prefix, + const char *base, const struct retro_keybind *bind) +{ + char key[64] = {0}; + char btn[64] = {0}; + + fill_pathname_join_delim(key, prefix, base, '_', sizeof(key)); + + input_keymaps_translate_rk_to_str(bind->key, btn, sizeof(btn)); + config_set_string(conf, key, btn); +} + +static void save_keybind_hat(config_file_t *conf, const char *key, + const struct retro_keybind *bind) +{ + char config[16] = {0}; + unsigned hat = GET_HAT(bind->joykey); + const char *dir = NULL; + + switch (GET_HAT_DIR(bind->joykey)) + { + case HAT_UP_MASK: + dir = "up"; + break; + + case HAT_DOWN_MASK: + dir = "down"; + break; + + case HAT_LEFT_MASK: + dir = "left"; + break; + + case HAT_RIGHT_MASK: + dir = "right"; + break; + + default: + retro_assert(0); + break; + } + + snprintf(config, sizeof(config), "h%u%s", hat, dir); + config_set_string(conf, key, config); +} + +static void save_keybind_joykey(config_file_t *conf, const char *prefix, + const char *base, const struct retro_keybind *bind, bool save_empty) +{ + char key[64] = {0}; + + fill_pathname_join_delim_concat(key, prefix, + base, '_', "_btn", sizeof(key)); + + if (bind->joykey == NO_BTN) + { + if (save_empty) + config_set_string(conf, key, file_path_str(FILE_PATH_NUL)); + } + else if (GET_HAT_DIR(bind->joykey)) + save_keybind_hat(conf, key, bind); + else + config_set_uint64(conf, key, bind->joykey); +} + +static void save_keybind_axis(config_file_t *conf, const char *prefix, + const char *base, const struct retro_keybind *bind, bool save_empty) +{ + char key[64] = {0}; + unsigned axis = 0; + char dir = '\0'; + + fill_pathname_join_delim_concat(key, + prefix, base, '_', + "_axis", + sizeof(key)); + + if (bind->joyaxis == AXIS_NONE) + { + if (save_empty) + config_set_string(conf, key, file_path_str(FILE_PATH_NUL)); + } + else if (AXIS_NEG_GET(bind->joyaxis) != AXIS_DIR_NONE) + { + dir = '-'; + axis = AXIS_NEG_GET(bind->joyaxis); + } + else if (AXIS_POS_GET(bind->joyaxis) != AXIS_DIR_NONE) + { + dir = '+'; + axis = AXIS_POS_GET(bind->joyaxis); + } + + if (dir) + { + char config[16] = {0}; + snprintf(config, sizeof(config), "%c%u", dir, axis); + config_set_string(conf, key, config); + } +} + +/** + * save_keybind: + * @conf : pointer to config file object + * @prefix : prefix name of keybind + * @base : base name of keybind + * @bind : pointer to key binding object + * @kb : save keyboard binds + * + * Save a key binding to the config file. + */ +static void save_keybind(config_file_t *conf, const char *prefix, + const char *base, const struct retro_keybind *bind, + bool save_kb, bool save_empty) +{ + if (!bind->valid) + return; + if (save_kb) + save_keybind_key(conf, prefix, base, bind); + save_keybind_joykey(conf, prefix, base, bind, save_empty); + save_keybind_axis(conf, prefix, base, bind, save_empty); +} + +/** + * save_keybinds_user: + * @conf : pointer to config file object + * @user : user number + * + * Save the current keybinds of a user (@user) to the config file (@conf). + */ +static void save_keybinds_user(config_file_t *conf, unsigned user) +{ + unsigned i = 0; + settings_t *settings = config_get_ptr(); + + for (i = 0; input_config_bind_map_get_valid(i); i++) + { + const char *prefix = input_config_get_prefix(user, + input_config_bind_map_get_meta(i)); + + if (prefix) + save_keybind(conf, prefix, input_config_bind_map_get_base(i), + &settings->input.binds[user][i], true, true); + } +} + +/** + * config_load: + * + * Loads a config file and reads all the values into memory. + * + */ +void config_load(void) +{ + /* Flush out some states that could have been + * set by core environment variables */ + core_unset_input_descriptors(); + + if (!rarch_ctl(RARCH_CTL_IS_BLOCK_CONFIG_READ, NULL)) + { + config_set_defaults(); + parse_config_file(); + } +} + +#if 0 +/** + * config_save_keybinds_file: + * @path : Path that shall be written to. + * + * Writes a keybinds config file to disk. + * + * Returns: true (1) on success, otherwise returns false (0). + **/ +static bool config_save_keybinds_file(const char *path) +{ + unsigned i = 0; + bool ret = false; + config_file_t *conf = config_file_new(path); + + if (!conf) + conf = config_file_new(NULL); + + if (!conf) + return false; + + VLOG(@"Saving keybinds config at path: \"%s\"\n", path); + + for (i = 0; i < MAX_USERS; i++) + save_keybinds_user(conf, i); + + ret = config_file_write(conf, path); + config_file_free(conf); + return ret; +} +#endif + + +/** + * config_save_autoconf_profile: + * @path : Path that shall be written to. + * @user : Controller number to save + * Writes a controller autoconf file to disk. + **/ +bool config_save_autoconf_profile(const char *path, unsigned user) +{ + unsigned i; + bool ret = false; + char buf[PATH_MAX_LENGTH] = {0}; + char autoconf_file[PATH_MAX_LENGTH] = {0}; + config_file_t *conf = NULL; + settings_t *settings = config_get_ptr(); + + fill_pathname_join(buf, settings->directory.autoconfig, + settings->input.joypad_driver, sizeof(buf)); + + if(path_is_directory(buf)) + { + fill_pathname_join(buf, buf, + path, sizeof(buf)); + fill_pathname_noext(autoconf_file, buf, + file_path_str(FILE_PATH_CONFIG_EXTENSION), + sizeof(autoconf_file)); + } + else + { + fill_pathname_join(buf, settings->directory.autoconfig, + path, sizeof(buf)); + fill_pathname_noext(autoconf_file, buf, + file_path_str(FILE_PATH_CONFIG_EXTENSION), + sizeof(autoconf_file)); + } + + conf = config_file_new(autoconf_file); + + if (!conf) + { + conf = config_file_new(NULL); + if (!conf) + return false; + } + + config_set_string(conf, "input_driver", + settings->input.joypad_driver); + config_set_string(conf, "input_device", + settings->input.device_names[user]); + + if(settings->input.vid[user] && settings->input.pid[user]) + { + config_set_int(conf, "input_vendor_id", + settings->input.vid[user]); + config_set_int(conf, "input_product_id", + settings->input.pid[user]); + } + + for (i = 0; i < RARCH_FIRST_META_KEY; i++) + { + save_keybind(conf, "input", input_config_bind_map_get_base(i), + &settings->input.binds[user][i], false, false); + } + + ret = config_file_write(conf, autoconf_file); + + config_file_free(conf); + + return ret; +} + + +/** + * config_save_file: + * @path : Path that shall be written to. + * + * Writes a config file to disk. + * + * Returns: true (1) on success, otherwise returns false (0). + **/ +bool config_save_file(const char *path) +{ + float msg_color; + unsigned i = 0; + bool ret = false; + config_file_t *conf = config_file_new(path); + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + struct config_bool_setting bool_settings[] = { + { "ui_companion_start_on_boot", settings->ui.companion_start_on_boot}, + { "ui_companion_enable", settings->ui.companion_enable}, + { "video_gpu_record", settings->video.gpu_record}, + { "input_remap_binds_enable", settings->input.remap_binds_enable}, + { "back_as_menu_toggle_enable", settings->input.back_as_menu_toggle_enable}, + { "netplay_client_swap_input", settings->input.netplay_client_swap_input}, + { "input_descriptor_label_show", settings->input.input_descriptor_label_show}, + { "input_descriptor_hide_unbound",settings->input.input_descriptor_hide_unbound}, + { "load_dummy_on_core_shutdown", settings->load_dummy_on_core_shutdown}, + { "builtin_mediaplayer_enable", settings->multimedia.builtin_mediaplayer_enable}, + { "builtin_imageviewer_enable", settings->multimedia.builtin_imageviewer_enable}, + { "fps_show", settings->fps_show}, + { "ui_menubar_enable", settings->ui.menubar_enable}, + { "suspend_screensaver_enable", settings->ui.suspend_screensaver_enable}, + { "rewind_enable", settings->rewind_enable}, + { "audio_sync", settings->audio.sync}, + { "video_shader_enable", settings->video.shader_enable}, + { "video_aspect_ratio_auto", settings->video.aspect_ratio_auto}, + { "video_windowed_fullscreen", settings->video.windowed_fullscreen}, + { "video_crop_overscan", settings->video.crop_overscan}, + { "video_scale_integer", settings->video.scale_integer}, + { "video_smooth", settings->video.smooth}, + { "video_threaded", settings->video.threaded}, + { "video_shared_context", settings->video.shared_context}, + { "custom_bgm_enable", global->console.sound.system_bgm_enable}, + { "auto_screenshot_filename", settings->auto_screenshot_filename}, + { "video_force_srgb_disable", settings->video.force_srgb_disable}, + { "video_fullscreen", settings->video.fullscreen}, + { "bundle_assets_extract_enable", settings->bundle_assets_extract_enable}, + { "video_vsync", settings->video.vsync}, + { "video_hard_sync", settings->video.hard_sync}, + { "video_black_frame_insertion", settings->video.black_frame_insertion}, + { "video_disable_composition", settings->video.disable_composition}, + { "pause_nonactive", settings->pause_nonactive}, + { "video_gpu_screenshot", settings->video.gpu_screenshot}, + { "keyboard_gamepad_enable", settings->input.keyboard_gamepad_enable}, + { "core_set_supports_no_game_enable", settings->set_supports_no_game_enable}, + { "audio_enable", settings->audio.enable}, + { "audio_mute_enable", settings->audio.mute_enable}, + { "location_allow", settings->location.allow}, + { "video_font_enable", settings->video.font_enable}, + { "core_updater_auto_extract_archive", settings->network.buildbot_auto_extract_archive}, + { "camera_allow", settings->camera.allow}, +#if TARGET_OS_IPHONE + { "small_keyboard_enable", settings->input.small_keyboard_enable}, +#endif +#ifdef GEKKO + { "video_vfilter", settings->video.vfilter}, +#endif +#ifdef HAVE_MENU +#ifdef HAVE_THREADS + { "threaded_data_runloop_enable", settings->threaded_data_runloop_enable}, +#endif + { "menu_throttle_framerate", settings->menu.throttle_framerate}, + { "menu_linear_filter", settings->menu.linear_filter}, + { "dpi_override_enable", settings->menu.dpi.override_enable}, + { "menu_pause_libretro", settings->menu.pause_libretro}, + { "menu_mouse_enable", settings->menu.mouse.enable}, + { "menu_pointer_enable", settings->menu.pointer.enable}, + { "menu_timedate_enable", settings->menu.timedate_enable}, + { "menu_core_enable", settings->menu.core_enable}, + { "menu_dynamic_wallpaper_enable",settings->menu.dynamic_wallpaper_enable}, + { "xmb_shadows_enable", settings->menu.xmb.shadows_enable}, + { "xmb_show_settings", settings->menu.xmb.show_settings}, +#ifdef HAVE_IMAGEVIEWER + { "xmb_show_images", settings->menu.xmb.show_images}, +#endif +#ifdef HAVE_FFMPEG + { "xmb_show_music", settings->menu.xmb.show_music}, + { "xmb_show_video", settings->menu.xmb.show_video}, +#endif + { "xmb_show_history", settings->menu.xmb.show_history}, + { "rgui_show_start_screen", settings->menu_show_start_screen}, + { "menu_navigation_wraparound_enable", settings->menu.navigation.wraparound.enable}, + { "menu_navigation_browser_filter_supported_extensions_enable", + settings->menu.navigation.browser.filter.supported_extensions_enable}, + { "menu_show_advanced_settings", settings->menu.show_advanced_settings}, +#endif +#ifdef HAVE_CHEEVOS + { "cheevos_enable", settings->cheevos.enable}, + { "cheevos_test_unofficial", settings->cheevos.test_unofficial}, + { "cheevos_hardcore_mode_enable", settings->cheevos.hardcore_mode_enable}, +#endif +#ifdef HAVE_OVERLAY + { "input_overlay_enable", settings->input.overlay_enable}, + { "input_overlay_enable_autopreferred", settings->input.overlay_enable_autopreferred}, + { "input_overlay_hide_in_menu", settings->input.overlay_hide_in_menu}, + { "input_osk_overlay_enable", settings->osk.enable}, +#endif +#ifdef HAVE_COMMAND + { "network_cmd_enable", settings->network_cmd_enable}, + { "stdin_cmd_enable", settings->stdin_cmd_enable}, +#endif +#ifdef HAVE_NETWORKGAMEPAD + { "network_remote_enable", settings->network_remote_enable}, +#endif +#ifdef HAVE_NETPLAY + { "netplay_spectator_mode_enable",global->netplay.is_spectate}, + { "netplay_mode", global->netplay.is_client}, +#endif + { "block_sram_overwrite", settings->block_sram_overwrite}, + { "savestate_auto_index", settings->savestate_auto_index}, + { "savestate_auto_save", settings->savestate_auto_save}, + { "savestate_auto_load", settings->savestate_auto_load}, + { "history_list_enable", settings->history_list_enable}, + { "game_specific_options", settings->game_specific_options}, + { "auto_overrides_enable", settings->auto_overrides_enable}, + { "auto_remaps_enable", settings->auto_remaps_enable}, + { "auto_shaders_enable", settings->auto_shaders_enable}, + { "sort_savefiles_enable", settings->sort_savefiles_enable}, + { "sort_savestates_enable", settings->sort_savestates_enable}, + { "config_save_on_exit", settings->config_save_on_exit}, + { "input_autodetect_enable", settings->input.autodetect_enable}, + { "audio_rate_control", settings->audio.rate_control}, + }; + struct config_int_setting int_settings[] = { + { "input_bind_timeout", settings->input.bind_timeout}, + { "input_turbo_period", settings->input.turbo_period}, + { "input_duty_cycle", settings->input.turbo_duty_cycle}, + { "input_max_users", settings->input.max_users}, + { "input_menu_toggle_gamepad_combo", settings->input.menu_toggle_gamepad_combo}, + { "audio_latency", settings->audio.latency}, + { "audio_block_frames", settings->audio.block_frames}, + { "rewind_granularity", settings->rewind_granularity}, + { "autosave_interval", settings->autosave_interval}, + { "libretro_log_level", settings->libretro_log_level}, + { "keyboard_gamepad_mapping_type",settings->input.keyboard_gamepad_mapping_type}, + { "input_poll_type_behavior", settings->input.poll_type_behavior}, +#ifdef HAVE_MENU + { "menu_ok_btn", settings->menu_ok_btn}, + { "menu_cancel_btn", settings->menu_cancel_btn}, + { "menu_search_btn", settings->menu_search_btn}, + { "menu_info_btn", settings->menu_info_btn}, + { "menu_default_btn", settings->menu_default_btn}, + { "menu_scroll_down_btn", settings->menu_scroll_down_btn}, +#endif + { "video_monitor_index", settings->video.monitor_index}, + { "video_fullscreen_x", settings->video.fullscreen_x}, + { "video_fullscreen_y", settings->video.fullscreen_y}, +#ifdef HAVE_COMMAND + { "network_cmd_port", settings->network_cmd_port}, +#endif +#ifdef HAVE_NETWORKGAMEPAD + { "network_remote_base_port", settings->network_remote_base_port}, +#endif + { "menu_scroll_up_btn", settings->menu_scroll_up_btn}, +#ifdef HAVE_GEKKO + { "video_viwidth", settings->video.viwidth}, +#endif +#ifdef HAVE_MENU + { "dpi_override_value", settings->menu.dpi.override_value}, + { "menu_thumbnails", settings->menu.thumbnails}, + { "xmb_scale_factor", settings->menu.xmb.scale_factor}, + { "xmb_alpha_factor", settings->menu.xmb.alpha_factor}, +#ifdef HAVE_XMB + { "xmb_theme", settings->menu.xmb.theme}, + { "xmb_menu_color_theme", settings->menu.xmb.menu_color_theme}, +#endif + { "materialui_menu_color_theme", settings->menu.materialui.menu_color_theme}, +#ifdef HAVE_SHADERPIPELINE + { "menu_shader_pipeline", settings->menu.xmb.shader_pipeline}, +#endif +#endif + { "audio_out_rate", settings->audio.out_rate}, + { "custom_viewport_width", settings->video_viewport_custom.width}, + { "custom_viewport_height", settings->video_viewport_custom.height}, + { "custom_viewport_x", (unsigned)settings->video_viewport_custom.x}, + { "custom_viewport_y", (unsigned)settings->video_viewport_custom.y}, + { "content_history_size", settings->content_history_size}, + { "video_hard_sync_frames", settings->video.hard_sync_frames}, + { "video_frame_delay", settings->video.frame_delay}, + { "video_max_swapchain_images", settings->video.max_swapchain_images}, + { "video_swap_interval", settings->video.swap_interval}, + { "video_rotation", settings->video.rotation}, + { "aspect_ratio_index", settings->video.aspect_ratio_idx}, + { "state_slot", (unsigned)settings->state_slot}, +#ifdef HAVE_NETPLAY + { "netplay_ip_port", global->netplay.port}, + { "netplay_delay_frames", global->netplay.sync_frames}, +#endif +#ifdef HAVE_LANGEXTRA + { "user_language", settings->user_language}, +#endif + { "bundle_assets_extract_version_current", settings->bundle_assets_extract_version_current}, + { "bundle_assets_extract_last_version", settings->bundle_assets_extract_last_version} + }; + struct config_float_setting float_settings[] = { + { "video_aspect_ratio", settings->video.aspect_ratio}, + { "video_scale", settings->video.scale}, + { "video_refresh_rate", settings->video.refresh_rate}, + { "audio_rate_control_delta", settings->audio.rate_control_delta}, + { "audio_max_timing_skew", settings->audio.max_timing_skew}, + { "audio_volume", settings->audio.volume}, + { "video_font_size", settings->video.font_size}, +#ifdef HAVE_OVERLAY + { "input_overlay_opacity", settings->input.overlay_opacity}, + { "input_overlay_scale", settings->input.overlay_scale}, +#endif +#ifdef HAVE_MENU + { "menu_wallpaper_opacity", settings->menu.wallpaper.opacity}, + { "menu_footer_opacity", settings->menu.footer.opacity}, + { "menu_header_opacity", settings->menu.header.opacity}, +#endif + { "video_message_pos_x", settings->video.msg_pos_x}, + { "video_message_pos_y", settings->video.msg_pos_y}, + { "video_font_size", settings->video.font_size}, + { "fastforward_ratio", settings->fastforward_ratio}, + { "slowmotion_ratio", settings->slowmotion_ratio}, + { "input_axis_threshold", settings->input.axis_threshold}, + }; + + struct config_string_setting string_settings[] = { + { "bundle_assets_dst_path_subdir", settings->path.bundle_assets_dst_subdir}, + { "video_filter", settings->path.softfilter_plugin}, + { "audio_dsp_plugin", settings->path.audio_dsp_plugin}, + { "playlist_names", settings->playlist_names}, + { "playlist_cores", settings->playlist_cores}, + { "video_driver", settings->video.driver}, + { "record_driver", settings->record.driver}, + { "camera_driver", settings->camera.driver}, + { "location_driver", settings->location.driver}, +#ifdef HAVE_MENU + { "menu_driver", settings->menu.driver}, +#endif + { "audio_device", settings->audio.device}, + { "core_updater_buildbot_url",settings->network.buildbot_url}, + { "core_updater_buildbot_assets_url",settings->network.buildbot_assets_url}, + { "camera_device", settings->camera.device}, +#ifdef HAVE_CHEEVOS + { "cheevos_username", settings->cheevos.username}, + { "cheevos_password", settings->cheevos.password}, +#endif + { "video_context_driver", settings->video.context_driver}, + { "audio_driver", settings->audio.driver}, + { "audio_resampler", settings->audio.resampler}, +#ifdef HAVE_NETPLAY + { "netplay_ip_address", global->netplay.server}, +#endif + { "netplay_nickname", settings->username}, + { "input_driver", settings->input.driver}, + { "input_joypad_driver", settings->input.joypad_driver}, + { "input_keyboard_layout", settings->input.keyboard_layout}, + { "bundle_assets_src_path", settings->path.bundle_assets_src}, + { "bundle_assets_dst_path", settings->path.bundle_assets_dst} + }; + + struct config_path_setting path_settings[] = { + { "recording_output_directory", false, + global->record.output_dir}, + { "recording_config_directory", false, + global->record.config_dir}, + { "libretro_directory", false, + settings->directory.libretro}, + { "core_options_path", false, + settings->path.core_options}, + { "libretro_info_path", false, + settings->path.libretro_info}, + { "video_shader", false, + settings->path.shader}, + { "content_database_path", false, + settings->path.content_database}, + { "cheat_database_path", false, + settings->path.cheat_database}, +#ifdef HAVE_MENU + { "menu_wallpaper", false, + settings->path.menu_wallpaper}, +#endif + { "content_history_path", false, + settings->path.content_history}, + { "content_music_history_path", false, + settings->path.content_music_history}, + { "content_video_history_path", false, + settings->path.content_video_history}, + { "content_image_history_path", false, + settings->path.content_image_history}, +#ifdef HAVE_OVERLAY + { "input_overlay", false, + settings->path.overlay}, + { "input_osk_overlay", false, + settings->path.osk_overlay}, +#endif + { "video_font_path", false, + settings->path.font}, + { "cursor_directory", false, + settings->directory.cursor}, + { "content_history_dir", false, + settings->directory.content_history}, + { "screenshot_directory", true, + settings->directory.screenshot}, + { "system_directory", true, + settings->directory.system}, + { "cache_directory", false, + settings->directory.cache}, + { "input_remapping_directory", false, + settings->directory.input_remapping}, + { "resampler_directory", false, + settings->directory.resampler}, + { "video_shader_dir", true, + settings->directory.video_shader}, + { "video_filter_dir", true, + settings->directory.video_filter}, + { "core_assets_directory", true, + settings->directory.core_assets}, + { "assets_directory", true, + settings->directory.assets}, + { "dynamic_wallpapers_directory", true, + settings->directory.dynamic_wallpapers}, + { "thumbnails_directory", true, + settings->directory.thumbnails}, + { "playlist_directory", true, + settings->directory.playlist}, + { "joypad_autoconfig_dir", false, + settings->directory.autoconfig}, + { "audio_filter_dir", true, + settings->directory.audio_filter}, + { "savefile_directory", true, + global->dir.savefile}, + { "savestate_directory", true, + global->dir.savestate}, +#ifdef HAVE_MENU + { "rgui_browser_directory", true, + settings->directory.menu_content}, + { "rgui_config_directory", true, + settings->directory.menu_config}, +#endif +#ifdef HAVE_OVERLAY + { "overlay_directory", true, + settings->directory.overlay}, +#endif +#ifdef HAVE_OVERLAY + { "osk_overlay_directory", true, + global->dir.osk_overlay}, +#endif +#ifndef HAVE_DYNAMIC + { "libretro_path", false, + config_get_active_core_path()}, +#endif + { "screenshot_directory", true, + settings->directory.screenshot} + }; + + if (!conf) + conf = config_file_new(NULL); + + if (!conf || runloop_ctl(RUNLOOP_CTL_IS_OVERRIDES_ACTIVE, NULL)) + { + if (conf) + config_file_free(conf); + return false; + } + + /* + * Path settings + * + */ + + for (i = 0; i < ARRAY_SIZE(path_settings); i++) + { + if (path_settings[i].defaults) + config_set_path(conf, path_settings[i].ident, + string_is_empty(path_settings[i].value) ? "default" : + path_settings[i].value); + else + config_set_path(conf, path_settings[i].ident, + path_settings[i].value); + } + +#ifdef HAVE_MENU + config_set_path(conf, "xmb_font", + !string_is_empty(settings->menu.xmb.font) ? settings->menu.xmb.font : ""); +#endif + + /* + * String settings + * + */ + + for (i = 0; i < ARRAY_SIZE(string_settings); i++) + { + config_set_string(conf, string_settings[i].ident, + string_settings[i].value); + } + + /* + * Float settings + * + */ + + for (i = 0; i < ARRAY_SIZE(float_settings); i++) + { + config_set_float(conf, float_settings[i].ident, + float_settings[i].value); + } + + /* + * Integer settings + * + */ + + for (i = 0; i < ARRAY_SIZE(int_settings); i++) + { + config_set_int(conf, int_settings[i].ident, + int_settings[i].value); + } + + for (i = 0; i < MAX_USERS; i++) + { + char cfg[64] = {0}; + + snprintf(cfg, sizeof(cfg), "input_device_p%u", i + 1); + config_set_int(conf, cfg, settings->input.device[i]); + snprintf(cfg, sizeof(cfg), "input_player%u_joypad_index", i + 1); + config_set_int(conf, cfg, settings->input.joypad_map[i]); + snprintf(cfg, sizeof(cfg), "input_libretro_device_p%u", i + 1); + config_set_int(conf, cfg, settings->input.libretro_device[i]); + snprintf(cfg, sizeof(cfg), "input_player%u_analog_dpad_mode", i + 1); + config_set_int(conf, cfg, settings->input.analog_dpad_mode[i]); + } + + /* + * Boolean settings + * + */ + + for (i = 0; i < ARRAY_SIZE(bool_settings); i++) + { + config_set_bool(conf, bool_settings[i].ident, + bool_settings[i].value); + } +#ifdef HAVE_NETWORKGAMEPAD + for (i = 0; i < MAX_USERS; i++) + { + char tmp[64] = {0}; + snprintf(tmp, sizeof(tmp), "network_remote_enable_user_p%u", i + 1); + config_set_bool(conf, tmp, settings->network_remote_enable_user[i]); + } +#endif + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_UPS_PREF)) + config_set_bool(conf, "ups_pref", global->patch.ups_pref); + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_BPS_PREF)) + config_set_bool(conf, "bps_pref", global->patch.bps_pref); + if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_IPS_PREF)) + config_set_bool(conf, "ips_pref", global->patch.ips_pref); + config_set_bool(conf, "log_verbosity", + verbosity_is_enabled()); + config_set_bool(conf, "perfcnt_enable", + runloop_ctl(RUNLOOP_CTL_IS_PERFCNT_ENABLE, NULL)); + + msg_color = (((int)(settings->video.msg_color_r * 255.0f) & 0xff) << 16) + + (((int)(settings->video.msg_color_g * 255.0f) & 0xff) << 8) + + (((int)(settings->video.msg_color_b * 255.0f) & 0xff)); + + /* + * Hexadecimal settings + * + */ + + config_set_hex(conf, "video_message_color", msg_color); +#ifdef HAVE_MENU + config_set_hex(conf, "menu_entry_normal_color", + settings->menu.entry_normal_color); + config_set_hex(conf, "menu_entry_hover_color", + settings->menu.entry_hover_color); + config_set_hex(conf, "menu_title_color", + settings->menu.title_color); +#endif + + + video_driver_save_settings(conf); + +#ifdef HAVE_LAKKA + if (settings->ssh_enable) + fclose(fopen(LAKKA_SSH_PATH, "w")); + else + remove(LAKKA_SSH_PATH); + if (settings->samba_enable) + fclose(fopen(LAKKA_SAMBA_PATH, "w")); + else + remove(LAKKA_SAMBA_PATH); + if (settings->bluetooth_enable) + fclose(fopen(LAKKA_BLUETOOTH_PATH, "w")); + else + remove(LAKKA_BLUETOOTH_PATH); +#endif + + for (i = 0; i < MAX_USERS; i++) + save_keybinds_user(conf, i); + + ret = config_file_write(conf, path); + config_file_free(conf); + return ret; +} + +/* Replaces currently loaded configuration file with + * another one. Will load a dummy core to flush state + * properly. */ +bool config_replace(char *path) +{ + content_ctx_info_t content_info = {0}; + settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); + + if (!path || !global) + return false; + + /* If config file to be replaced is the same as the + * current config file, exit. */ + if (string_is_equal(path, global->path.config)) + return false; + + if (settings->config_save_on_exit && !string_is_empty(global->path.config)) + config_save_file(global->path.config); + + strlcpy(global->path.config, path, sizeof(global->path.config)); + + rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL); + + /* Load core in new config. */ + config_clear_active_core_path(); + + if (!task_push_content_load_default( + NULL, NULL, + &content_info, + CORE_TYPE_DUMMY, + CONTENT_MODE_LOAD_NOTHING_WITH_DUMMY_CORE, + NULL, NULL)) + return false; + + return true; +} + +static char path_libretro[PATH_MAX_LENGTH]; + +char *config_get_active_core_path_ptr(void) +{ + return path_libretro; +} + +const char *config_get_active_core_path(void) +{ + return path_libretro; +} + +bool config_active_core_path_is_empty(void) +{ + return !path_libretro[0]; +} + +size_t config_get_active_core_path_size(void) +{ + return sizeof(path_libretro); +} + +void config_set_active_core_path(const char *path) +{ + strlcpy(path_libretro, path, sizeof(path_libretro)); +} + +void config_clear_active_core_path(void) +{ + *path_libretro = '\0'; +} + +const char *config_get_active_path(void) +{ + global_t *global = global_get_ptr(); + + if (!string_is_empty(global->path.config)) + return global->path.config; + + return NULL; +} + +void config_free_state(void) +{ +} diff --git a/PVSupport/Sources/retro/configuration.h b/PVSupport/Sources/retro/configuration.h new file mode 100644 index 0000000000..b75c773f6e --- /dev/null +++ b/PVSupport/Sources/retro/configuration.h @@ -0,0 +1,687 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __RARCH_CONFIGURATION_H__ +#define __RARCH_CONFIGURATION_H__ + +#include + +#include +#include + +#include "gfx/video_driver.h" +#include "driver.h" + +#ifndef MAX_USERS +#define MAX_USERS 16 +#endif + +RETRO_BEGIN_DECLS + +/* All config related settings go here. */ + +struct config_bool_setting +{ + const char *ident; + bool value; +}; + +struct config_bool_setting_ptr +{ + const char *ident; + bool *ptr; +}; + +struct config_int_setting_ptr +{ + const char *ident; + unsigned *ptr; +}; + +struct config_int_setting +{ + const char *ident; + unsigned value; +}; + +struct config_float_setting_ptr +{ + const char *ident; + float *ptr; +}; + +struct config_float_setting +{ + const char *ident; + float value; +}; + +struct config_string_setting +{ + const char *ident; + const char *value; +}; + +struct config_path_setting +{ + const char *ident; + bool defaults; + const char *value; +}; + +typedef struct settings +{ + video_viewport_t video_viewport_custom; + + char playlist_names[PATH_MAX_LENGTH]; + char playlist_cores[PATH_MAX_LENGTH]; + + bool bundle_finished; + + struct + { + char driver[32]; + char context_driver[32]; + float scale; + bool fullscreen; + bool windowed_fullscreen; + unsigned monitor_index; + unsigned fullscreen_x; + unsigned fullscreen_y; + bool vsync; + bool hard_sync; + bool black_frame_insertion; + unsigned max_swapchain_images; + unsigned swap_interval; + unsigned hard_sync_frames; + unsigned frame_delay; +#ifdef GEKKO + unsigned viwidth; + bool vfilter; +#endif + bool smooth; + bool force_aspect; + bool crop_overscan; + float aspect_ratio; + bool aspect_ratio_auto; + bool scale_integer; + unsigned aspect_ratio_idx; + unsigned rotation; + + bool shader_enable; + + float refresh_rate; + bool threaded; + + + float font_size; + bool font_enable; + float msg_pos_x; + float msg_pos_y; + float msg_color_r; + float msg_color_g; + float msg_color_b; + + bool disable_composition; + + bool post_filter_record; + bool gpu_record; + bool gpu_screenshot; + + bool allow_rotate; + bool shared_context; + bool force_srgb_disable; + } video; + + struct + { + char driver[32]; + } record; + + struct + { + bool menubar_enable; + bool suspend_screensaver_enable; + bool companion_start_on_boot; + bool companion_enable; + } ui; + +#ifdef HAVE_MENU + struct + { + char driver[32]; + bool pause_libretro; + bool timedate_enable; + bool core_enable; + bool dynamic_wallpaper_enable; + unsigned thumbnails; + bool throttle; + + struct + { + float opacity; + } wallpaper; + + struct + { + float opacity; + } footer; + + struct + { + float opacity; + } header; + + struct + { + bool enable; + } mouse; + + struct + { + bool enable; + } pointer; + + struct + { + struct + { + bool enable; + bool setting_enable; + } wraparound; + struct + { + struct + { + bool supported_extensions_enable; + } filter; + } browser; + } navigation; + + struct + { + bool override_enable; + unsigned override_value; + } dpi; + + bool show_advanced_settings; + + unsigned entry_normal_color; + unsigned entry_hover_color; + unsigned title_color; + bool throttle_framerate; + bool linear_filter; + + struct + { + unsigned shader_pipeline; + char font[PATH_MAX_LENGTH]; + unsigned scale_factor; + unsigned alpha_factor; + unsigned theme; + unsigned menu_color_theme; + bool shadows_enable; + bool show_settings; + bool show_images; + bool show_music; + bool show_video; + bool show_history; + } xmb; + + struct + { + unsigned menu_color_theme; + } materialui; + } menu; +#endif + +#ifdef HAVE_THREADS + bool threaded_data_runloop_enable; +#endif + + struct + { + char driver[32]; + char device[PATH_MAX_LENGTH]; + bool allow; + unsigned width; + unsigned height; + } camera; + + struct + { + char driver[32]; + bool allow; + int update_interval_ms; + int update_interval_distance; + } location; + + struct + { + char driver[32]; + char resampler[32]; + char device[PATH_MAX_LENGTH]; + bool enable; + bool mute_enable; + unsigned out_rate; + unsigned block_frames; + unsigned latency; + bool sync; + + + bool rate_control; + float rate_control_delta; + float max_timing_skew; + float volume; /* dB scale. */ + } audio; + + struct + { + char driver[32]; + char joypad_driver[32]; + char keyboard_layout[64]; + char device_names[MAX_USERS][64]; + + unsigned remap_ids[MAX_USERS][RARCH_BIND_LIST_END]; + struct retro_keybind binds[MAX_USERS][RARCH_BIND_LIST_END]; + struct retro_keybind autoconf_binds[MAX_USERS][RARCH_BIND_LIST_END]; + + unsigned max_users; + + /* Set by autoconfiguration in joypad_autoconfig_dir. + * Does not override main binds. */ + bool autoconfigured[MAX_USERS]; + int vid[MAX_USERS]; + int pid[MAX_USERS]; + + unsigned libretro_device[MAX_USERS]; + unsigned analog_dpad_mode[MAX_USERS]; + + bool remap_binds_enable; + float axis_threshold; + unsigned joypad_map[MAX_USERS]; + unsigned device[MAX_USERS]; + unsigned device_name_index[MAX_USERS]; + bool autodetect_enable; + bool netplay_client_swap_input; + + unsigned turbo_period; + unsigned turbo_duty_cycle; + + bool overlay_enable; + bool overlay_enable_autopreferred; + bool overlay_hide_in_menu; + float overlay_opacity; + float overlay_scale; + + unsigned bind_timeout; + bool input_descriptor_label_show; + bool input_descriptor_hide_unbound; + + unsigned menu_toggle_gamepad_combo; + bool back_as_menu_toggle_enable; + +#if TARGET_OS_IPHONE + bool small_keyboard_enable; +#endif + bool keyboard_gamepad_enable; + unsigned keyboard_gamepad_mapping_type; + unsigned poll_type_behavior; + } input; + + struct + { + bool enable; + float opacity; + float scale; + } osk; + + struct + { + unsigned mode; + } archive; + + struct + { + char buildbot_url[PATH_MAX_LENGTH]; + char buildbot_assets_url[PATH_MAX_LENGTH]; + bool buildbot_auto_extract_archive; + } network; + + bool set_supports_no_game_enable; + + struct + { + bool builtin_mediaplayer_enable; + bool builtin_imageviewer_enable; + } multimedia; + +#ifdef HAVE_CHEEVOS + struct + { + bool enable; + bool test_unofficial; + bool hardcore_mode_enable; + char username[32]; + char password[32]; + } cheevos; +#endif + + int state_slot; + + bool bundle_assets_extract_enable; + unsigned bundle_assets_extract_version_current; + unsigned bundle_assets_extract_last_version; + + struct + { + char cheat_database[PATH_MAX_LENGTH]; + char content_database[PATH_MAX_LENGTH]; + char osk_overlay[PATH_MAX_LENGTH]; + char overlay[PATH_MAX_LENGTH]; + char menu_wallpaper[PATH_MAX_LENGTH]; + char audio_dsp_plugin[PATH_MAX_LENGTH]; + char softfilter_plugin[PATH_MAX_LENGTH]; + char core_options[PATH_MAX_LENGTH]; + char content_history[PATH_MAX_LENGTH]; + char content_music_history[PATH_MAX_LENGTH]; + char content_image_history[PATH_MAX_LENGTH]; + char content_video_history[PATH_MAX_LENGTH]; + char libretro_info[PATH_MAX_LENGTH]; + char cheat_settings[PATH_MAX_LENGTH]; + char bundle_assets_src[PATH_MAX_LENGTH]; + char bundle_assets_dst[PATH_MAX_LENGTH]; + char bundle_assets_dst_subdir[PATH_MAX_LENGTH]; + char shader[PATH_MAX_LENGTH]; + char font[PATH_MAX_LENGTH]; + } path; + + struct + { + char audio_filter[PATH_MAX_LENGTH]; + char autoconfig[PATH_MAX_LENGTH]; + char video_filter[PATH_MAX_LENGTH]; + char video_shader[PATH_MAX_LENGTH]; + char content_history[PATH_MAX_LENGTH]; + char libretro[PATH_MAX_LENGTH]; + char cursor[PATH_MAX_LENGTH]; + char input_remapping[PATH_MAX_LENGTH]; + char overlay[PATH_MAX_LENGTH]; + char resampler[PATH_MAX_LENGTH]; + char screenshot[PATH_MAX_LENGTH]; + char system[PATH_MAX_LENGTH]; + char cache[PATH_MAX_LENGTH]; + char playlist[PATH_MAX_LENGTH]; + char core_assets[PATH_MAX_LENGTH]; + char assets[PATH_MAX_LENGTH]; + char dynamic_wallpapers[PATH_MAX_LENGTH]; + char thumbnails[PATH_MAX_LENGTH]; + char menu_config[PATH_MAX_LENGTH]; + char menu_content[PATH_MAX_LENGTH]; + } directory; + + unsigned content_history_size; + + unsigned libretro_log_level; + + bool auto_screenshot_filename; + + bool history_list_enable; + bool rewind_enable; + size_t rewind_buffer_size; + unsigned rewind_granularity; + + float slowmotion_ratio; + float fastforward_ratio; + + bool pause_nonactive; + unsigned autosave_interval; + + bool block_sram_overwrite; + bool savestate_auto_index; + bool savestate_auto_save; + bool savestate_auto_load; + + bool network_cmd_enable; + unsigned network_cmd_port; + bool stdin_cmd_enable; + bool network_remote_enable; + bool network_remote_enable_user[MAX_USERS]; + unsigned network_remote_base_port; + bool debug_panel_enable; + +#if defined(HAVE_MENU) + bool menu_show_start_screen; +#endif + bool fps_show; + bool load_dummy_on_core_shutdown; + + bool game_specific_options; + bool auto_overrides_enable; + bool auto_remaps_enable; + bool auto_shaders_enable; + + bool sort_savefiles_enable; + bool sort_savestates_enable; + + unsigned menu_ok_btn; + unsigned menu_cancel_btn; + unsigned menu_search_btn; + unsigned menu_default_btn; + unsigned menu_info_btn; + unsigned menu_scroll_down_btn; + unsigned menu_scroll_up_btn; + + char username[32]; +#ifdef HAVE_LANGEXTRA + unsigned int user_language; +#endif + + bool config_save_on_exit; + +#ifdef HAVE_LAKKA + bool ssh_enable; + bool samba_enable; + bool bluetooth_enable; +#endif + +} settings_t; + +/** + * config_get_default_camera: + * + * Gets default camera driver. + * + * Returns: Default camera driver. + **/ +const char *config_get_default_camera(void); + +/** + * config_get_default_location: + * + * Gets default location driver. + * + * Returns: Default location driver. + **/ +const char *config_get_default_location(void); + +/** + * config_get_default_osk: + * + * Gets default OSK driver. + * + * Returns: Default OSK driver. + **/ +const char *config_get_default_osk(void); + +/** + * config_get_default_video: + * + * Gets default video driver. + * + * Returns: Default video driver. + **/ +const char *config_get_default_video(void); + +/** + * config_get_default_audio: + * + * Gets default audio driver. + * + * Returns: Default audio driver. + **/ +const char *config_get_default_audio(void); + +/** + * config_get_default_audio_resampler: + * + * Gets default audio resampler driver. + * + * Returns: Default audio resampler driver. + **/ +const char *config_get_default_audio_resampler(void); + +/** + * config_get_default_input: + * + * Gets default input driver. + * + * Returns: Default input driver. + **/ +const char *config_get_default_input(void); + +/** + * config_get_default_joypad: + * + * Gets default input joypad driver. + * + * Returns: Default input joypad driver. + **/ +const char *config_get_default_joypad(void); + +#ifdef HAVE_MENU +/** + * config_get_default_menu: + * + * Gets default menu driver. + * + * Returns: Default menu driver. + **/ +const char *config_get_default_menu(void); +#endif + +const char *config_get_default_record(void); + +/** + * config_load: + * + * Loads a config file and reads all the values into memory. + * + */ +void config_load(void); + +/** + * config_load_override: + * + * Tries to append game-specific and core-specific configuration. + * These settings will always have precedence, thus this feature + * can be used to enforce overrides. + * + * Returns: false if there was an error or no action was performed. + * + */ +bool config_load_override(void); + +/** + * config_unload_override: + * + * Unloads configuration overrides if overrides are active. + * + * + * Returns: false if there was an error. + */ +bool config_unload_override(void); + +/** + * config_load_remap: + * + * Tries to append game-specific and core-specific remap files. + * + * Returns: false if there was an error or no action was performed. + * + */ +bool config_load_remap(void); + +/** + * config_load_shader_preset: + * + * Tries to append game-specific and core-specific shader presets. + * + * Returns: false if there was an error or no action was performed. + * + */ +bool config_load_shader_preset(void); + +/** + * config_save_autoconf_profile: + * @path : Path that shall be written to. + * @user : Controller number to save + * Writes a controller autoconf file to disk. + **/ +bool config_save_autoconf_profile(const char *path, unsigned user); + +/** + * config_save_file: + * @path : Path that shall be written to. + * + * Writes a config file to disk. + * + * Returns: true (1) on success, otherwise returns false (0). + **/ +bool config_save_file(const char *path); + +/* Replaces currently loaded configuration file with + * another one. Will load a dummy core to flush state + * properly. */ +bool config_replace(char *path); + +bool config_init(void); + +bool config_overlay_enable_default(void); + +void config_free(void); + +const char *config_get_active_path(void); + +const char *config_get_active_core_path(void); + +char *config_get_active_core_path_ptr(void); + +void config_set_active_core_path(const char *path); + +void config_clear_active_core_path(void); + +bool config_active_core_path_is_empty(void); + +size_t config_get_active_core_path_size(void); + +void config_free_state(void); + +settings_t *config_get_ptr(void); + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/content.h b/PVSupport/Sources/retro/content.h new file mode 100644 index 0000000000..042f51d022 --- /dev/null +++ b/PVSupport/Sources/retro/content.h @@ -0,0 +1,88 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef __RARCH_FILE_H +#define __RARCH_FILE_H + +#include +#include +#include +#include + +#include +#include + +#include "frontend/frontend_driver.h" + +RETRO_BEGIN_DECLS + +typedef struct ram_type ram_type_t; + +typedef struct content_ctx_info +{ + int argc; /* Argument count. */ + char **argv; /* Argument variable list. */ + void *args; /* Arguments passed from callee */ + environment_get_t environ_get; /* Function passed for environment_get function */ +} content_ctx_info_t; + +/* Load a RAM state from disk to memory. */ +bool content_load_ram_file(unsigned slot); + +/* Save a RAM state from memory to disk. */ +bool content_save_ram_file(unsigned slot); + +/* Load a state from disk to memory. */ +bool content_load_state(const char* path, bool load_to_backup_buffer); + +/* Save a state from memory to disk. */ +bool content_save_state(const char *path, bool save_to_disk); + +/* Copy a save state. */ +bool content_rename_state(const char *origin, const char *dest); + +/* Undoes the last load state operation that was done */ +bool content_undo_load_state(void); + +/* Restores the last savestate file which was overwritten */ +bool content_undo_save_state(void); + +bool content_does_not_need_content(void); + +void content_set_does_not_need_content(void); + +void content_unset_does_not_need_content(void); + +bool content_get_crc(uint32_t **content_crc_ptr); + +bool content_is_inited(void); + +void content_deinit(void); + +/* Initializes and loads a content file for the currently + * selected libretro core. */ +bool content_init(void); + +/* Resets the state and savefile backup buffers */ +bool content_reset_savestate_backups(void); + +/* Checks if the buffers are empty */ +bool content_undo_load_buf_is_empty(void); +bool content_undo_save_buf_is_empty(void); + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/core.h b/PVSupport/Sources/retro/core.h new file mode 100644 index 0000000000..1ea430aa8c --- /dev/null +++ b/PVSupport/Sources/retro/core.h @@ -0,0 +1,189 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2016 - Daniel De Matteis + * Copyright (C) 2012-2015 - Michael Lelli + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef _LIBRETRO_CORE_IMPL_H +#define _LIBRETRO_CORE_IMPL_H + +#include +#include +#include + +#include "core_type.h" + +RETRO_BEGIN_DECLS + +enum +{ + /* Polling is performed before + * call to retro_run. */ + POLL_TYPE_EARLY = 0, + + /* Polling is performed when requested. */ + POLL_TYPE_NORMAL, + + /* Polling is performed on first call to + * retro_input_state per frame. */ + POLL_TYPE_LATE +}; + +typedef struct retro_ctx_input_state_info +{ + retro_input_state_t cb; +} retro_ctx_input_state_info_t; + +typedef struct retro_ctx_cheat_info +{ + unsigned index; + bool enabled; + const char *code; +} retro_ctx_cheat_info_t; + +typedef struct retro_ctx_api_info +{ + unsigned version; +} retro_ctx_api_info_t; + +typedef struct retro_ctx_controller_info +{ + unsigned port; + unsigned device; +} retro_ctx_controller_info_t; + +typedef struct retro_ctx_memory_info +{ + void *data; + size_t size; + unsigned id; +} retro_ctx_memory_info_t; + +typedef struct retro_ctx_load_content_info +{ + struct retro_game_info *info; + const struct string_list *content; + const struct retro_subsystem_info *special; +} retro_ctx_load_content_info_t; + +typedef struct retro_ctx_serialize_info +{ + const void *data_const; + void *data; + size_t size; +} retro_ctx_serialize_info_t; + +typedef struct retro_ctx_size_info +{ + size_t size; +} retro_ctx_size_info_t; + +typedef struct retro_ctx_environ_info +{ + retro_environment_t env; +} retro_ctx_environ_info_t; + +typedef struct retro_ctx_frame_info +{ + const void *data; + unsigned width; + unsigned height; + size_t pitch; +} retro_ctx_frame_info_t; + +typedef struct retro_callbacks +{ + retro_video_refresh_t frame_cb; + retro_audio_sample_t sample_cb; + retro_audio_sample_batch_t sample_batch_cb; + retro_input_state_t state_cb; + retro_input_poll_t poll_cb; +} retro_callbacks_t; + +bool core_load(void); + +bool core_unload(void); + +bool core_set_default_callbacks(void *data); + +bool core_set_rewind_callbacks(void); + +bool core_set_poll_type(unsigned *type); + +/* Runs the core for one frame. */ +bool core_run(void); + +bool core_init(void); + +bool core_deinit(void *data); + +bool core_unload_game(void); + +bool core_reset(void); + +bool core_frame(retro_ctx_frame_info_t *info); + +bool core_poll(void); + +bool core_set_environment(retro_ctx_environ_info_t *info); + +bool core_serialize_size(retro_ctx_size_info_t *info); + +bool core_serialize(retro_ctx_serialize_info_t *info); + +bool core_unserialize(retro_ctx_serialize_info_t *info); + +bool core_init_symbols(enum rarch_core_type *type); + +bool core_set_cheat(retro_ctx_cheat_info_t *info); + +bool core_reset_cheat(void); + +bool core_api_version(retro_ctx_api_info_t *api); + +/* Compare libretro core API version against API version + * used by RetroArch. + * + * TODO - when libretro v2 gets added, allow for switching + * between libretro version backend dynamically. + */ +bool core_verify_api_version(void); + +bool core_get_memory(retro_ctx_memory_info_t *info); + +/* Initialize system A/V information. */ +bool core_get_system_av_info(struct retro_system_av_info *av_info); + +/* Get system A/V information. */ +bool core_get_system_info(struct retro_system_info *system); + +bool core_load_game(retro_ctx_load_content_info_t *load_info); + +bool core_set_controller_port_device(retro_ctx_controller_info_t *pad); + +bool core_has_set_input_descriptor(void); + +void core_set_input_descriptors(void); + +void core_unset_input_descriptors(void); + +bool core_uninit_libretro_callbacks(void); + +void core_uninit_symbols(void); + +void core_set_input_state(retro_ctx_input_state_info_t *info); + +RETRO_END_DECLS + +#endif diff --git a/PVSupport/Sources/retro/core_backup.c b/PVSupport/Sources/retro/core_backup.c new file mode 100644 index 0000000000..c8cb4733f8 --- /dev/null +++ b/PVSupport/Sources/retro/core_backup.c @@ -0,0 +1,755 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2014-2017 - Jean-André Santoni + * Copyright (C) 2016-2019 - Brad Parker + * Copyright (C) 2019-2020 - James Leaver + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include +#include +#include +#include